<?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>170941</bug_id>
          
          <creation_ts>2017-04-18 04:17:39 -0700</creation_ts>
          <short_desc>Update ANGLE</short_desc>
          <delta_ts>2017-04-19 00:56:08 -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>
          
          <blocked>170980</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>achristensen</cc>
    
    <cc>fujii</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1298248</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-04-18 04:17:39 -0700</bug_when>
    <thetext>Update ANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298249</commentid>
    <comment_count>1</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-04-18 04:18:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/31633999&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298253</commentid>
    <comment_count>2</comment_count>
      <attachid>307371</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-04-18 04:26:16 -0700</bug_when>
    <thetext>Created attachment 307371
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298255</commentid>
    <comment_count>3</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-04-18 04:28:06 -0700</bug_when>
    <thetext>This first patch won&apos;t build. The CMake files are wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298259</commentid>
    <comment_count>4</comment_count>
      <attachid>307372</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-04-18 04:46:07 -0700</bug_when>
    <thetext>Created attachment 307372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298312</commentid>
    <comment_count>5</comment_count>
      <attachid>307372</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-04-18 09:29:32 -0700</bug_when>
    <thetext>Comment on attachment 307372
Patch

r=me
WebCore changes are just changing ShSomething to sh::Something.  Straightforward.
The EGL and GLESv2 soft linking was only helping people distributing WinCairo and not wanting to distribute libGLESv2.dll and libEGL.dll, which I think is nobody.  If somebody wants to do that, they can bring the soft linking back.
It looks like ANGLE now includes an Xcode build in the file you included as Source/ThirdParty/ANGLE/src/angle.xcodeproj/project.pbxproj and maybe we could adopt that sometime.  Let&apos;s assume no until we find a benefit of doing so.
The Apple-added comments in ExpressionParser.cpp, glslang_tab.cpp, and glslang_tab.h remain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1298536</commentid>
    <comment_count>6</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-04-18 18:13:41 -0700</bug_when>
    <thetext>Committed r215490: &lt;http://trac.webkit.org/changeset/215490&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307371</attachid>
            <date>2017-04-18 04:26:16 -0700</date>
            <delta_ts>2017-04-18 04:46:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170941-20170418202610.patch</filename>
            <type>text/plain</type>
            <size>9963980</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE1NDQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggY2E0MDUzOTA3MDYwYjVmYTA3YjQ4MWNlNDNiMmI0YThiNjg2MGQ5Yi4uNjFhZjI3NmUxMTVm
NWRkYWEwOWNmZWM0Mzg3YzE0NGVjYzc0N2Y0YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTA0LTE4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxl
LmNvbT4KKworICAgICAgICBVcGRhdGUgQU5HTEUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDk0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzE2
MzM5OTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
SHVnZSBsaXN0IG9mIGNoYW5nZWQgZmlsZXMgb21pdHRlZC4KKwogMjAxNy0wNC0xMiAgRGFuIEJl
cm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIEZ1dHVyZS1wcm9vZiAu
eGNjb25maWcgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjODQ1ODI1MzFiMWRiODlhOTgxZmI2Mjg4YzA0
NTE1MmYyMTc1ZDdhLi4yYjQ2NWFjZTlhZTYxYmU0MmU3OGJkNzJmMTkzNzdmMjg3MDlmNDBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTctMDQtMTggIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgorCisgICAgICAgIFVwZGF0ZSBBTkdMRQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwOTQxCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zMTYzMzk5OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFN5bWJvbEluZm8pOgorICAgICAgICAoV2ViQ29yZTo6QU5HTEVXZWJL
aXRCcmlkZ2U6OkFOR0xFV2ViS2l0QnJpZGdlKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFV2Vi
S2l0QnJpZGdlOjpjbGVhbnVwQ29tcGlsZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkFOR0xFV2Vi
S2l0QnJpZGdlOjpjb21waWxlU2hhZGVyU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQzRDo6R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tWYXJ5aW5nc1BhY2tpbmcpOgorCiAy
MDE3LTA0LTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgRml4IENNYWtlIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvQU5HTEUucGxpc3QgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS5wbGlzdApp
bmRleCA1MTVjOGI5YmUyNTI5ODAxMDNkMGQzMjUwYzQzZDQ0MTA2Njg3NDUxLi43YzA5MjcwZWFh
YWQwMzlmNDg1MGNiZWM1YzI3ZTNjYTE3ZDAxYWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9BTkdMRS5wbGlzdAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdM
RS5wbGlzdApAQCAtNiwxMSArNiwxMSBAQAogICAgICAgICA8a2V5Pk9wZW5Tb3VyY2VQcm9qZWN0
PC9rZXk+CiAgICAgICAgIDxzdHJpbmc+QU5HTEU8L3N0cmluZz4KICAgICAgICAgPGtleT5PcGVu
U291cmNlVmVyc2lvbjwva2V5PgotICAgICAgICA8c3RyaW5nPmU3YTQ1M2E1YmQ3NjcwNWNjYjE1
MTExN2ZhODQ0ODQ2ZDRhYTkwYWY8L3N0cmluZz4KKyAgICAgICAgPHN0cmluZz5kMWJlZDE3NWYx
MDcxNDNhN2M1MjQ4NWE5ZDE5N2I0ODZjZDU0MzNlPC9zdHJpbmc+CiAgICAgICAgIDxrZXk+T3Bl
blNvdXJjZVdlYnNpdGVVUkw8L2tleT4KICAgICAgICAgPHN0cmluZz5odHRwOi8vY29kZS5nb29n
bGUuY29tL3AvYW5nbGVwcm9qZWN0Lzwvc3RyaW5nPgogICAgICAgICA8a2V5Pk9wZW5Tb3VyY2VT
Q008L2tleT4KLSAgICAgICAgPHN0cmluZz5naXQgY2xvbmUgaHR0cHM6Ly9jaHJvbWl1bS5nb29n
bGVzb3VyY2UuY29tL2FuZ2xlL2FuZ2xlICZhbXA7JmFtcDsgY2QgYW5nbGUgJmFtcDsmYW1wOyBn
aXQgY2hlY2tvdXQgZjAxNzMxNTMwZTdmNzU0ZTVlYmFmMzJkMDBmM2UyM2I2MjM3NjQyNDwvc3Ry
aW5nPgorICAgICAgICA8c3RyaW5nPmdpdCBjbG9uZSBodHRwczovL2Nocm9taXVtLmdvb2dsZXNv
dXJjZS5jb20vYW5nbGUvYW5nbGUgJmFtcDsmYW1wOyBjZCBhbmdsZSAmYW1wOyZhbXA7IGdpdCBj
aGVja291dCBkMWJlZDE3NWYxMDcxNDNhN2M1MjQ4NWE5ZDE5N2I0ODZjZDU0MzNlPC9zdHJpbmc+
CiAgICAgICAgIDxrZXk+T3BlblNvdXJjZUltcG9ydERhdGU8L2tleT4KICAgICAgICAgPHN0cmlu
Zz4yMDE0LTA0LTI5PC9zdHJpbmc+CiAgICAgICAgIDxrZXk+T3BlblNvdXJjZUxpY2Vuc2U8L2tl
eT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDNmMmVjZGRlYzcxN2Q1OTVmYWVkNDVlZTRlZjljOTBhNTdh
ZDk4Y2UuLmEwNzE3NGQ2YzY5ZTFlNDMyNmZhNjk3NjkwMDBhMzQxMTI4OGQ0ZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTksOCArMTksNiBAQAogCQkzMTAxMkUyODE4Qjk3QjlCMDAzOTA2MkYgLyog
RGlyZWN0aXZlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTAxMkRCNzE4Qjk3QjlCMDAzOTA2MkYgLyogRGlyZWN0aXZlSGFuZGxlci5j
cHAgKi87IH07CiAJCTMxMDEyRTI5MThCOTdCOUIwMDM5MDYyRiAvKiBEaXJlY3RpdmVIYW5kbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRC
ODE4Qjk3QjlCMDAzOTA2MkYgLyogRGlyZWN0aXZlSGFuZGxlci5oICovOyB9OwogCQkzMTAxMkUy
QTE4Qjk3QjlCMDAzOTA2MkYgLyogRXh0ZW5zaW9uQmVoYXZpb3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREI5MThCOTdCOUIwMDM5MDYyRiAv
KiBFeHRlbnNpb25CZWhhdmlvci5oICovOyB9OwotCQkzMTAxMkUyQjE4Qjk3QjlCMDAzOTA2MkYg
LyogRm9yTG9vcFVucm9sbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTAxMkRCQTE4Qjk3QjlCMDAzOTA2MkYgLyogRm9yTG9vcFVucm9sbC5jcHAg
Ki87IH07Ci0JCTMxMDEyRTJDMThCOTdCOUIwMDM5MDYyRiAvKiBGb3JMb29wVW5yb2xsLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRCQjE4Qjk3
QjlCMDAzOTA2MkYgLyogRm9yTG9vcFVucm9sbC5oICovOyB9OwogCQkzMTAxMkUyRDE4Qjk3QjlC
MDAzOTA2MkYgLyogZ2xzbGFuZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzEwMTJEQkQxOEI5N0I5QjAwMzkwNjJGIC8qIGdsc2xhbmcuaCAqLzsgfTsK
IAkJMzEwMTJFMzAxOEI5N0I5QjAwMzkwNjJGIC8qIGdsc2xhbmdfbGV4LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREMwMThCOTdCOUIwMDM5
MDYyRiAvKiBnbHNsYW5nX2xleC5jcHAgKi87IH07CiAJCTMxMDEyRTMxMThCOTdCOUIwMDM5MDYy
RiAvKiBnbHNsYW5nX3RhYi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTAxMkRDMTE4Qjk3QjlCMDAzOTA2MkYgLyogZ2xzbGFuZ190YWIuY3BwICov
OyB9OwpAQCAtMzMsMTQgKzMxLDExIEBACiAJCTMxMDEyRTM4MThCOTdCOUIwMDM5MDYyRiAvKiBJ
bml0aWFsaXplRGxsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMDEyREM4MThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplRGxsLmNwcCAqLzsg
fTsKIAkJMzEwMTJFMzkxOEI5N0I5QjAwMzkwNjJGIC8qIEluaXRpYWxpemVEbGwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREM5MThCOTdCOUIw
MDM5MDYyRiAvKiBJbml0aWFsaXplRGxsLmggKi87IH07CiAJCTMxMDEyRTNBMThCOTdCOUIwMDM5
MDYyRiAvKiBJbml0aWFsaXplR2xvYmFscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzEwMTJEQ0ExOEI5N0I5QjAwMzkwNjJGIC8qIEluaXRpYWxpemVH
bG9iYWxzLmggKi87IH07Ci0JCTMxMDEyRTNCMThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXpl
UGFyc2VDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMDEyRENCMThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplUGFyc2VDb250ZXh0
LmNwcCAqLzsgfTsKLQkJMzEwMTJFM0MxOEI5N0I5QjAwMzkwNjJGIC8qIEluaXRpYWxpemVQYXJz
ZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxMDEyRENDMThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplUGFyc2VDb250ZXh0LmggKi87
IH07CiAJCTMxMDEyRTNEMThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplVmFyaWFibGVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyRENE
MThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplVmFyaWFibGVzLmNwcCAqLzsgfTsKIAkJMzEw
MTJFM0UxOEI5N0I5QjAwMzkwNjJGIC8qIEluaXRpYWxpemVWYXJpYWJsZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyRENFMThCOTdCOUIwMDM5
MDYyRiAvKiBJbml0aWFsaXplVmFyaWFibGVzLmggKi87IH07CiAJCTMxMDEyRTNGMThCOTdCOUIw
MDM5MDYyRiAvKiBJbnRlcm1lZGlhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzEwMTJEQ0YxOEI5N0I5QjAwMzkwNjJGIC8qIEludGVybWVkaWF0
ZS5jcHAgKi87IH07CiAJCTMxMDEyRTQxMThCOTdCOUIwMDM5MDYyRiAvKiBpbnRlcm1PdXQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJERDEx
OEI5N0I5QjAwMzkwNjJGIC8qIGludGVybU91dC5jcHAgKi87IH07CiAJCTMxMDEyRTQyMThCOTdC
OUIwMDM5MDYyRiAvKiBJbnRlcm1UcmF2ZXJzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkREMjE4Qjk3QjlCMDAzOTA2MkYgLyogSW50ZXJt
VHJhdmVyc2UuY3BwICovOyB9OwotCQkzMTAxMkU0NjE4Qjk3QjlCMDAzOTA2MkYgLyogTU1hcC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJERDYx
OEI5N0I5QjAwMzkwNjJGIC8qIE1NYXAuaCAqLzsgfTsKIAkJMzEwMTJFNDcxOEI5N0I5QjAwMzkw
NjJGIC8qIE5vZGVTZWFyY2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxMDEyREQ3MThCOTdCOUIwMDM5MDYyRiAvKiBOb2RlU2VhcmNoLmggKi87IH07
CiAJCTMxMDEyRTRCMThCOTdCOUIwMDM5MDYyRiAvKiBPdXRwdXRFU1NMLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyRERCMThCOTdCOUIwMDM5
MDYyRiAvKiBPdXRwdXRFU1NMLmNwcCAqLzsgfTsKIAkJMzEwMTJFNEMxOEI5N0I5QjAwMzkwNjJG
IC8qIE91dHB1dEVTU0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDMxMDEyRERDMThCOTdCOUIwMDM5MDYyRiAvKiBPdXRwdXRFU1NMLmggKi87IH07CkBA
IC04Myw2ICs3OCwyMiBAQAogCQkzMTAxMkU4MDE4Qjk3QjlCMDAzOTA2MkYgLyogVmVyc2lvbkdM
U0wuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEy
RTExMThCOTdCOUIwMDM5MDYyRiAvKiBWZXJzaW9uR0xTTC5oICovOyB9OwogCQkzMTJCREIwQzE1
RkVDQUM5MDA5N0VCQzcgLyogQU5HTEUucGxpc3QgaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkJEQjA5MTVGRUM5MUUwMDk3RUJDNyAvKiBBTkdMRS5w
bGlzdCAqLzsgfTsKIAkJMzEyQkRCMEUxNUZFQ0FFNTAwOTdFQkM3IC8qIEFOR0xFLnR4dCBpbiBD
b3B5RmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyQkRCMEExNUZF
Q0EzQTAwOTdFQkM3IC8qIEFOR0xFLnR4dCAqLzsgfTsKKwkJMzFBMzMxQzIxRUE1RUQyNTAwRkQy
MjAzIC8qIGJpdHNldF91dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzFBMzMxQzAxRUE1RUQyNTAwRkQyMjAzIC8qIGJpdHNldF91dGlscy5oICov
OyB9OworCQkzMUEzMzFDNjFFQTVFRDVGMDBGRDIyMDMgLyogc3lzdGVtX3V0aWxzX21hYy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEzMzFDMzFF
QTVFRDVGMDBGRDIyMDMgLyogc3lzdGVtX3V0aWxzX21hYy5jcHAgKi87IH07CisJCTMxQTMzMUM3
MUVBNUVENUYwMEZEMjIwMyAvKiBzeXN0ZW1fdXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTMzMUM0MUVBNUVENUYwMEZEMjIwMyAvKiBzeXN0
ZW1fdXRpbHMuaCAqLzsgfTsKKwkJMzFBMzMxQzgxRUE1RUQ1RjAwRkQyMjAzIC8qIHZlY3Rvcl91
dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFB
MzMxQzUxRUE1RUQ1RjAwRkQyMjAzIC8qIHZlY3Rvcl91dGlscy5oICovOyB9OworCQkzMUEzMzFE
NDFFQTVFRERBMDBGRDIyMDMgLyogRmluZFN5bWJvbE5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMzMxQzkxRUE1RUREQTAwRkQyMjAzIC8q
IEZpbmRTeW1ib2xOb2RlLmNwcCAqLzsgfTsKKwkJMzFBMzMxRDUxRUE1RUREQTAwRkQyMjAzIC8q
IEZpbmRTeW1ib2xOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMUEzMzFDQTFFQTVFRERBMDBGRDIyMDMgLyogRmluZFN5bWJvbE5vZGUuaCAqLzsg
fTsKKwkJMzFBMzMxRDYxRUE1RUREQTAwRkQyMjAzIC8qIFBydW5lUHVyZUxpdGVyYWxTdGF0ZW1l
bnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMx
QTMzMUNCMUVBNUVEREEwMEZEMjIwMyAvKiBQcnVuZVB1cmVMaXRlcmFsU3RhdGVtZW50cy5jcHAg
Ki87IH07CisJCTMxQTMzMUQ3MUVBNUVEREEwMEZEMjIwMyAvKiBQcnVuZVB1cmVMaXRlcmFsU3Rh
dGVtZW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzFBMzMxQ0MxRUE1RUREQTAwRkQyMjAzIC8qIFBydW5lUHVyZUxpdGVyYWxTdGF0ZW1lbnRzLmgg
Ki87IH07CisJCTMxQTMzMUQ4MUVBNUVEREEwMEZEMjIwMyAvKiBSZW1vdmVJbnZhcmlhbnREZWNs
YXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMUEzMzFDRDFFQTVFRERBMDBGRDIyMDMgLyogUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24u
Y3BwICovOyB9OworCQkzMUEzMzFEOTFFQTVFRERBMDBGRDIyMDMgLyogUmVtb3ZlSW52YXJpYW50
RGVjbGFyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxQTMzMUNFMUVBNUVEREEwMEZEMjIwMyAvKiBSZW1vdmVJbnZhcmlhbnREZWNsYXJhdGlv
bi5oICovOyB9OworCQkzMUEzMzFEQTFFQTVFRERBMDBGRDIyMDMgLyogUmV3cml0ZVVuYXJ5TWlu
dXNPcGVyYXRvckZsb2F0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDMxQTMzMUNGMUVBNUVEREEwMEZEMjIwMyAvKiBSZXdyaXRlVW5hcnlNaW51c09w
ZXJhdG9yRmxvYXQuY3BwICovOyB9OworCQkzMUEzMzFEQjFFQTVFRERBMDBGRDIyMDMgLyogUmV3
cml0ZVVuYXJ5TWludXNPcGVyYXRvckZsb2F0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEzMzFEMDFFQTVFRERBMDBGRDIyMDMgLyogUmV3cml0ZVVu
YXJ5TWludXNPcGVyYXRvckZsb2F0LmggKi87IH07CisJCTMxQTMzMURDMUVBNUVEREEwMEZEMjIw
MyAvKiBTZXZlcml0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMzFBMzMxRDExRUE1RUREQTAwRkQyMjAzIC8qIFNldmVyaXR5LmggKi87IH07CisJCTMx
QTMzMUREMUVBNUVEREEwMEZEMjIwMyAvKiBWYWxpZGF0ZU11bHRpdmlld1dlYkdMLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTMzMUQyMUVBNUVE
REEwMEZEMjIwMyAvKiBWYWxpZGF0ZU11bHRpdmlld1dlYkdMLmNwcCAqLzsgfTsKKwkJMzFBMzMx
REUxRUE1RUREQTAwRkQyMjAzIC8qIFZhbGlkYXRlTXVsdGl2aWV3V2ViR0wuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTMzMUQzMUVBNUVEREEwMEZE
MjIwMyAvKiBWYWxpZGF0ZU11bHRpdmlld1dlYkdMLmggKi87IH07CisJCTMxQTMzMUUyMUVBNUVG
QjgwMEZEMjIwMyAvKiB0cmFjZV9ldmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFBMzMxRTExRUE1RUZCODAwRkQyMjAzIC8qIHRyYWNlX2V2ZW50
LmggKi87IH07CiAJCTVDMUJBQTlBMURGQjYwRkYwMDI5MDZCQiAvKiBnbDMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMUJBQTk2MURGQjYwRkYwMDI5
MDZCQiAvKiBnbDMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CiAJCTVDMUJBQTlCMURGQjYwRkYwMDI5MDZCQiAvKiBnbDNwbGF0Zm9ybS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxQkFBOTcxREZCNjBGRjAw
MjkwNkJCIC8qIGdsM3BsYXRmb3JtLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVi
bGljLCApOyB9OyB9OwogCQk1QzFCQUE5QzFERkI2MEZGMDAyOTA2QkIgLyogZ2wzMS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxQkFBOTgxREZCNjBG
RjAwMjkwNkJCIC8qIGdsMzEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMs
ICk7IH07IH07CkBAIC0zMjAsOCArMzMxLDYgQEAKIAkJNUNCMzA0RTMxREU0MTY0ODAwRDJDNDA1
IC8qIEVHTEltcGxGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Q0IzMDRCMzFERTQxNjQ4MDBEMkM0MDUgLyogRUdMSW1wbEZhY3RvcnkuaCAq
LzsgfTsKIAkJNUNCMzA0RTQxREU0MTY0ODAwRDJDNDA1IC8qIEZlbmNlTlZJbXBsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzMDRCNDFERTQxNjQ4
MDBEMkM0MDUgLyogRmVuY2VOVkltcGwuaCAqLzsgfTsKIAkJNUNCMzA0RTUxREU0MTY0ODAwRDJD
NDA1IC8qIEZlbmNlU3luY0ltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDQjMwNEI1MURFNDE2NDgwMEQyQzQwNSAvKiBGZW5jZVN5bmNJbXBsLmgg
Ki87IH07Ci0JCTVDQjMwNEU2MURFNDE2NDgwMEQyQzQwNSAvKiBGb3JtYXRfYXV0b2dlbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzMDRCNjFE
RTQxNjQ4MDBEMkM0MDUgLyogRm9ybWF0X2F1dG9nZW4uY3BwICovOyB9OwotCQk1Q0IzMDRFNzFE
RTQxNjQ4MDBEMkM0MDUgLyogRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjMwNEI4MURFNDE2NDgwMEQyQzQwNSAvKiBGb3JtYXQuY3Bw
ICovOyB9OwogCQk1Q0IzMDRFODFERTQxNjQ4MDBEMkM0MDUgLyogRm9ybWF0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzMDRCOTFERTQxNjQ4MDBE
MkM0MDUgLyogRm9ybWF0LmggKi87IH07CiAJCTVDQjMwNEU5MURFNDE2NDgwMEQyQzQwNSAvKiBG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzMDRCQTFERTQxNjQ4MDBEMkM0MDUgLyogRnJhbWVi
dWZmZXJBdHRhY2htZW50T2JqZWN0SW1wbC5oICovOyB9OwogCQk1Q0IzMDRFQTFERTQxNjQ4MDBE
MkM0MDUgLyogRnJhbWVidWZmZXJJbXBsX21vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjMwNEJCMURFNDE2NDgwMEQyQzQwNSAvKiBGcmFtZWJ1
ZmZlckltcGxfbW9jay5oICovOyB9OwpAQCAtMzUxLDggKzM2MCw2IEBACiAJCTVDQjMwNTAyMURF
NDE2NDgwMEQyQzQwNSAvKiBUcmFuc2Zvcm1GZWVkYmFja0ltcGwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjMwNEQ4MURFNDE2NDgwMEQyQzQwNSAv
KiBUcmFuc2Zvcm1GZWVkYmFja0ltcGwuaCAqLzsgfTsKIAkJNUNCMzA1MDMxREU0MTY0ODAwRDJD
NDA1IC8qIFZlcnRleEFycmF5SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNCMzA0RDkxREU0MTY0ODAwRDJDNDA1IC8qIFZlcnRleEFycmF5SW1w
bC5oICovOyB9OwogCQk1Q0I1RTFBNzFERkI4QUY2MDBGOTBGQzkgLyogbGliRUdMLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjMwMEI1MURFMzlF
NjMwMEQyQzQwNSAvKiBsaWJFR0wuY3BwICovOyB9OwotCQk1Q0M3RDQ1MjE5MTAyNEU0MDAwQjhD
MUYgLyogTG9vcEluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNDN0Q0NEIxOTEwMjRFMzAwMEI4QzFGIC8qIExvb3BJbmZvLmNwcCAqLzsgfTsK
LQkJNUNDN0Q0NTMxOTEwMjRFNDAwMEI4QzFGIC8qIExvb3BJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0M3RDQ0QzE5MTAyNEU0MDAwQjhDMUYg
LyogTG9vcEluZm8uaCAqLzsgfTsKIAkJNUNDN0Q0NTcxOTEwMjRFNDAwMEI4QzFGIC8qIFZhbGlk
YXRlT3V0cHV0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0M3RDQ1MDE5MTAyNEU0MDAwQjhDMUYgLyogVmFsaWRhdGVPdXRwdXRzLmNwcCAqLzsg
fTsKIAkJNUNDN0Q0NTgxOTEwMjRFNDAwMEI4QzFGIC8qIFZhbGlkYXRlT3V0cHV0cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDN0Q0NTExOTEwMjRF
NDAwMEI4QzFGIC8qIFZhbGlkYXRlT3V0cHV0cy5oICovOyB9OwogCQk1Q0M3RDQ2QjE5MTAyNjIw
MDAwQjhDMUYgLyogYW5nbGV1dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNDN0Q0NUExOTEwMjYyMDAwMEI4QzFGIC8qIGFuZ2xldXRpbHMuaCAq
LzsgfTsKQEAgLTM3OSw3ICszODYsNiBAQAogCQk1Q0NEODE3QjFEQkZFOTk5MDA2MDY2QjggLyog
UGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUND
RDgxNjMxREJGRTk5OTAwNjA2NkI4IC8qIFBhdGguaCAqLzsgfTsKIAkJNUNDRDgxN0MxREJGRTk5
OTAwNjA2NkI4IC8qIHF1ZXJ5dXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxNjQxREJGRTk5OTAwNjA2NkI4IC8qIHF1ZXJ5dXRpbHMu
Y3BwICovOyB9OwogCQk1Q0NEODE3RDFEQkZFOTk5MDA2MDY2QjggLyogcXVlcnl1dGlscy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxNjUxREJG
RTk5OTAwNjA2NkI4IC8qIHF1ZXJ5dXRpbHMuaCAqLzsgfTsKLQkJNUNDRDgxN0UxREJGRTk5OTAw
NjA2NkI4IC8qIHNpZ25hbF91dGlscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE2NjFEQkZFOTk5MDA2MDY2QjggLyogc2lnbmFsX3V0aWxz
LmNwcCAqLzsgfTsKIAkJNUNDRDgxN0YxREJGRTk5OTAwNjA2NkI4IC8qIHNpZ25hbF91dGlscy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxNjcx
REJGRTk5OTAwNjA2NkI4IC8qIHNpZ25hbF91dGlscy5oICovOyB9OwogCQk1Q0NEODE4MDFEQkZF
OTk5MDA2MDY2QjggLyogU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTY4MURCRkU5OTkwMDYwNjZCOCAvKiBTdHJlYW0uY3BwICov
OyB9OwogCQk1Q0NEODE4MTFEQkZFOTk5MDA2MDY2QjggLyogU3RyZWFtLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE2OTFEQkZFOTk5MDA2MDY2
QjggLyogU3RyZWFtLmggKi87IH07CkBAIC0zODcsNyArMzkzLDYgQEAKIAkJNUNDRDgxODMxREJG
RTk5OTAwNjA2NkI4IC8qIHZhbGlkYXRpb25FUzMxLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE2QjFEQkZFOTk5MDA2MDY2QjggLyogdmFsaWRh
dGlvbkVTMzEuaCAqLzsgfTsKIAkJNUNDRDgxODQxREJGRTk5OTAwNjA2NkI4IC8qIFZlcnNpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTZD
MURCRkU5OTkwMDYwNjZCOCAvKiBWZXJzaW9uLmggKi87IH07CiAJCTVDQ0Q4MTg1MURCRkU5OTkw
MDYwNjZCOCAvKiBXb3JrYXJvdW5kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNUNDRDgxNkYxREJGRTk5OTAwNjA2NkI4IC8qIFdvcmthcm91bmRzLmgg
Ki87IH07Ci0JCTVDQ0Q4MThEMURCRkVBMTAwMDYwNjZCOCAvKiBCaXRTZXRJdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxODYxREJG
RUExMDAwNjA2NkI4IC8qIEJpdFNldEl0ZXJhdG9yLmggKi87IH07CiAJCTVDQ0Q4MThFMURCRkVB
MTAwMDYwNjZCOCAvKiBDb2xvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUNDRDgxODcxREJGRUExMDAwNjA2NkI4IC8qIENvbG9yLmggKi87IH07CiAJ
CTVDQ0Q4MThGMURCRkVBMTAwMDYwNjZCOCAvKiBGbG9hdDE2VG9GbG9hdDMyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTg5MURCRkVBMTAw
MDYwNjZCOCAvKiBGbG9hdDE2VG9GbG9hdDMyLmNwcCAqLzsgfTsKIAkJNUNDRDgxOTAxREJGRUEx
MDAwNjA2NkI4IC8qIG1hdHJpeF91dGlscy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxOEExREJGRUExMDAwNjA2NkI4IC8qIG1hdHJpeF91dGls
cy5oICovOyB9OwpAQCAtNDg0LDggKzQ4OSw2IEBACiAJCTMxMDEyREI3MThCOTdCOUIwMDM5MDYy
RiAvKiBEaXJlY3RpdmVIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERpcmVjdGl2ZUhhbmRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMTAxMkRCODE4Qjk3QjlCMDAzOTA2MkYgLyogRGlyZWN0aXZlSGFuZGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXJlY3RpdmVIYW5kbGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMxMDEyREI5MThCOTdCOUIwMDM5MDYyRiAvKiBFeHRlbnNpb25C
ZWhhdmlvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlbnNpb25CZWhh
dmlvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkzMTAxMkRCQTE4Qjk3QjlCMDAz
OTA2MkYgLyogRm9yTG9vcFVucm9sbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGb3JMb29wVW5yb2xsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
MzEwMTJEQkIxOEI5N0I5QjAwMzkwNjJGIC8qIEZvckxvb3BVbnJvbGwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRm9yTG9vcFVucm9sbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkzMTAxMkRCRDE4Qjk3QjlCMDAzOTA2MkYgLyogZ2xzbGFuZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBnbHNsYW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTMxMDEyREMwMThCOTdCOUIwMDM5MDYyRiAvKiBnbHNsYW5nX2xleC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBnbHNsYW5nX2xleC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDEyREMxMThCOTdCOUIwMDM5MDYyRiAvKiBnbHNs
YW5nX3RhYi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBnbHNsYW5n
X3RhYi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00OTgsMTQgKzUwMSwxMSBA
QAogCQkzMTAxMkRDODE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZURsbC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbml0aWFsaXplRGxsLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJEQzkxOEI5N0I5QjAwMzkwNjJGIC8qIEluaXRp
YWxpemVEbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5pdGlhbGl6ZURs
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTAxMkRDQTE4Qjk3QjlCMDAzOTA2
MkYgLyogSW5pdGlhbGl6ZUdsb2JhbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5pdGlhbGl6ZUdsb2JhbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzEw
MTJEQ0IxOEI5N0I5QjAwMzkwNjJGIC8qIEluaXRpYWxpemVQYXJzZUNvbnRleHQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMDEyRENDMThCOTdCOUIwMDM5MDYy
RiAvKiBJbml0aWFsaXplUGFyc2VDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluaXRpYWxpemVQYXJzZUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzEwMTJEQ0QxOEI5N0I5QjAwMzkwNjJGIC8qIEluaXRpYWxpemVWYXJpYWJsZXMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5pdGlhbGl6ZVZhcmlhYmxl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDEyRENFMThCOTdCOUIwMDM5
MDYyRiAvKiBJbml0aWFsaXplVmFyaWFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEluaXRpYWxpemVWYXJpYWJsZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzEwMTJEQ0YxOEI5N0I5QjAwMzkwNjJGIC8qIEludGVybWVkaWF0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRlcm1lZGlhdGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkzMTAxMkREMTE4Qjk3QjlCMDAzOTA2MkYgLyogaW50ZXJtT3V0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGludGVybU91dC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDEyREQyMThCOTdCOUIwMDM5MDYyRiAv
KiBJbnRlcm1UcmF2ZXJzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbnRlcm1UcmF2ZXJzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMDEy
REQ2MThCOTdCOUIwMDM5MDYyRiAvKiBNTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IE1NYXAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJERDcxOEI5
N0I5QjAwMzkwNjJGIC8qIE5vZGVTZWFyY2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTm9kZVNlYXJjaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTAxMkRE
QjE4Qjk3QjlCMDAzOTA2MkYgLyogT3V0cHV0RVNTTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBPdXRwdXRFU1NMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzEwMTJEREMxOEI5N0I5QjAwMzkwNjJGIC8qIE91dHB1dEVTU0wuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3V0cHV0RVNTTC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNTQ4LDYgKzU0OCwyMiBAQAogCQkzMTAxMkUxMTE4Qjk3QjlCMDAzOTA2MkYg
LyogVmVyc2lvbkdMU0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmVyc2lv
bkdMU0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyQkRCMDkxNUZFQzkxRTAw
OTdFQkM3IC8qIEFOR0xFLnBsaXN0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IHBhdGggPSBB
TkdMRS5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEyQkRCMEExNUZFQ0Ez
QTAwOTdFQkM3IC8qIEFOR0xFLnR4dCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBTkdMRS50eHQ7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTMzMUMwMUVBNUVEMjUwMEZEMjIwMyAv
KiBiaXRzZXRfdXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gYml0c2V0
X3V0aWxzLmg7IHBhdGggPSBzcmMvY29tbW9uL2JpdHNldF91dGlscy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMUEzMzFDMzFFQTVFRDVGMDBGRDIyMDMgLyogc3lzdGVtX3V0aWxz
X21hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBzeXN0ZW1fdXRp
bHNfbWFjLmNwcDsgcGF0aCA9IHNyYy9jb21tb24vc3lzdGVtX3V0aWxzX21hYy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTMzMUM0MUVBNUVENUYwMEZEMjIwMyAvKiBzeXN0
ZW1fdXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gc3lzdGVtX3V0aWxz
Lmg7IHBhdGggPSBzcmMvY29tbW9uL3N5c3RlbV91dGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzMUEzMzFDNTFFQTVFRDVGMDBGRDIyMDMgLyogdmVjdG9yX3V0aWxzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHZlY3Rvcl91dGlscy5oOyBwYXRoID0gc3Jj
L2NvbW1vbi92ZWN0b3JfdXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFB
MzMxQzkxRUE1RUREQTAwRkQyMjAzIC8qIEZpbmRTeW1ib2xOb2RlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbmRTeW1ib2xOb2RlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMzMxQ0ExRUE1RUREQTAwRkQyMjAzIC8qIEZpbmRTeW1ib2xO
b2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbmRTeW1ib2xOb2RlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTMzMUNCMUVBNUVEREEwMEZEMjIwMyAv
KiBQcnVuZVB1cmVMaXRlcmFsU3RhdGVtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQcnVuZVB1cmVMaXRlcmFsU3RhdGVtZW50cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxQTMzMUNDMUVBNUVEREEwMEZEMjIwMyAvKiBQcnVuZVB1cmVM
aXRlcmFsU3RhdGVtZW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcnVu
ZVB1cmVMaXRlcmFsU3RhdGVtZW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MUEzMzFDRDFFQTVFRERBMDBGRDIyMDMgLyogUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3ZlSW52YXJpYW50RGVj
bGFyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEzMzFDRTFFQTVF
RERBMDBGRDIyMDMgLyogUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMzMxQ0YxRUE1RUREQTAwRkQyMjAzIC8qIFJld3Jp
dGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9yRmxvYXQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMUEzMzFEMDFFQTVFRERBMDBGRDIyMDMgLyogUmV3cml0ZVVu
YXJ5TWludXNPcGVyYXRvckZsb2F0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMUEzMzFEMTFFQTVFRERBMDBGRDIyMDMgLyogU2V2ZXJpdHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2V2ZXJpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzFBMzMxRDIxRUE1RUREQTAwRkQyMjAzIC8qIFZhbGlkYXRlTXVsdGl2aWV3V2Vi
R0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmFsaWRhdGVNdWx0
aXZpZXdXZWJHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTMzMUQzMUVB
NUVEREEwMEZEMjIwMyAvKiBWYWxpZGF0ZU11bHRpdmlld1dlYkdMLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFZhbGlkYXRlTXVsdGl2aWV3V2ViR0wuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMzMxRTExRUE1RUZCODAwRkQyMjAzIC8qIHRyYWNlX2V2ZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHRyYWNlX2V2ZW50Lmg7IHBhdGgg
PSBzcmMvdGhpcmRfcGFydHkvdHJhY2VfZXZlbnQvdHJhY2VfZXZlbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUMxQkFBOTYxREZCNjBGRjAwMjkwNkJCIC8qIGdsMy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBnbDMuaDsgcGF0aCA9IGluY2x1ZGUvR0xFUzMv
Z2wzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMUJBQTk3MURGQjYwRkYwMDI5
MDZCQiAvKiBnbDNwbGF0Zm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBn
bDNwbGF0Zm9ybS5oOyBwYXRoID0gaW5jbHVkZS9HTEVTMy9nbDNwbGF0Zm9ybS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1QzFCQUE5ODFERkI2MEZGMDAyOTA2QkIgLyogZ2wzMS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBnbDMxLmg7IHBhdGggPSBpbmNsdWRl
L0dMRVMzL2dsMzEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5Miw4ICs4MDgs
NiBAQAogCQk1Q0IzMDRCMzFERTQxNjQ4MDBEMkM0MDUgLyogRUdMSW1wbEZhY3RvcnkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRUdMSW1wbEZhY3RvcnkuaDsgcGF0aCA9IHNy
Yy9saWJBTkdMRS9yZW5kZXJlci9FR0xJbXBsRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1Q0IzMDRCNDFERTQxNjQ4MDBEMkM0MDUgLyogRmVuY2VOVkltcGwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmVuY2VOVkltcGwuaDsgcGF0aCA9IHNyYy9s
aWJBTkdMRS9yZW5kZXJlci9GZW5jZU5WSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1Q0IzMDRCNTFERTQxNjQ4MDBEMkM0MDUgLyogRmVuY2VTeW5jSW1wbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGZW5jZVN5bmNJbXBsLmg7IHBhdGggPSBzcmMvbGli
QU5HTEUvcmVuZGVyZXIvRmVuY2VTeW5jSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk1Q0IzMDRCNjFERTQxNjQ4MDBEMkM0MDUgLyogRm9ybWF0X2F1dG9nZW4uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gRm9ybWF0X2F1dG9nZW4uY3BwOyBwYXRo
ID0gc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdF9hdXRvZ2VuLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNUNCMzA0QjgxREU0MTY0ODAwRDJDNDA1IC8qIEZvcm1hdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGb3JtYXQuY3BwOyBwYXRoID0g
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDQjMwNEI5MURFNDE2NDgwMEQyQzQwNSAvKiBGb3JtYXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gRm9ybWF0Lmg7IHBhdGggPSBzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvRm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjMwNEJBMURFNDE2
NDgwMEQyQzQwNSAvKiBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdEltcGwu
aDsgcGF0aCA9IHNyYy9saWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmpl
Y3RJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjMwNEJCMURFNDE2NDgw
MEQyQzQwNSAvKiBGcmFtZWJ1ZmZlckltcGxfbW9jay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBGcmFtZWJ1ZmZlckltcGxfbW9jay5oOyBwYXRoID0gc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL0ZyYW1lYnVmZmVySW1wbF9tb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC04MjIsOCArODM2LDYgQEAKIAkJNUNCMzA0RDcxREU0MTY0ODAwRDJDNDA1IC8qIFRyYW5z
Zm9ybUZlZWRiYWNrSW1wbF9tb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFRyYW5zZm9ybUZlZWRiYWNrSW1wbF9tb2NrLmg7IHBhdGggPSBzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvVHJhbnNmb3JtRmVlZGJhY2tJbXBsX21vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUNCMzA0RDgxREU0MTY0ODAwRDJDNDA1IC8qIFRyYW5zZm9ybUZlZWRiYWNrSW1wbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUcmFuc2Zvcm1GZWVkYmFja0ltcGwu
aDsgcGF0aCA9IHNyYy9saWJBTkdMRS9yZW5kZXJlci9UcmFuc2Zvcm1GZWVkYmFja0ltcGwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMzA0RDkxREU0MTY0ODAwRDJDNDA1IC8q
IFZlcnRleEFycmF5SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBWZXJ0
ZXhBcnJheUltcGwuaDsgcGF0aCA9IHNyYy9saWJBTkdMRS9yZW5kZXJlci9WZXJ0ZXhBcnJheUlt
cGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNDN0Q0NEIxOTEwMjRFMzAwMEI4
QzFGIC8qIExvb3BJbmZvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExvb3BJbmZvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNDN0Q0NEMxOTEw
MjRFNDAwMEI4QzFGIC8qIExvb3BJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IExvb3BJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQzdENDUwMTkx
MDI0RTQwMDBCOEMxRiAvKiBWYWxpZGF0ZU91dHB1dHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVmFsaWRhdGVPdXRwdXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUNDN0Q0NTExOTEwMjRFNDAwMEI4QzFGIC8qIFZhbGlkYXRlT3V0cHV0cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWxpZGF0ZU91dHB1dHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDN0Q0NUExOTEwMjYyMDAwMEI4QzFGIC8qIGFu
Z2xldXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gYW5nbGV1dGlscy5o
OyBwYXRoID0gc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04NTEsNyArODYzLDYgQEAKIAkJNUNDRDgxNjMxREJGRTk5OTAwNjA2NkI4IC8qIFBh
dGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGF0aC5oOyBwYXRoID0gc3Jj
L2xpYkFOR0xFL1BhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDgxNjQx
REJGRTk5OTAwNjA2NkI4IC8qIHF1ZXJ5dXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gcXVlcnl1dGlscy5jcHA7IHBhdGggPSBzcmMvbGliQU5HTEUvcXVlcnl1
dGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0Q4MTY1MURCRkU5OTkw
MDYwNjZCOCAvKiBxdWVyeXV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IHF1ZXJ5dXRpbHMuaDsgcGF0aCA9IHNyYy9saWJBTkdMRS9xdWVyeXV0aWxzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDQ0Q4MTY2MURCRkU5OTkwMDYwNjZCOCAvKiBzaWduYWxf
dXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gc2lnbmFsX3V0
aWxzLmNwcDsgcGF0aCA9IHNyYy9saWJBTkdMRS9zaWduYWxfdXRpbHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1Q0NEODE2NzFEQkZFOTk5MDA2MDY2QjggLyogc2lnbmFsX3V0
aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IHNpZ25hbF91dGlscy5oOyBw
YXRoID0gc3JjL2xpYkFOR0xFL3NpZ25hbF91dGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1Q0NEODE2ODFEQkZFOTk5MDA2MDY2QjggLyogU3RyZWFtLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN0cmVhbS5jcHA7IHBhdGggPSBzcmMvbGliQU5H
TEUvU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDgxNjkxREJG
RTk5OTAwNjA2NkI4IC8qIFN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBTdHJlYW0uaDsgcGF0aCA9IHNyYy9saWJBTkdMRS9TdHJlYW0uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTg2MSw3ICs4NzIsNiBAQAogCQk1Q0NEODE2RDFEQkZFOTk5MDA2MDY2
QjggLyogVmVyc2lvbi5pbmwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBuYW1lID0gVmVyc2lvbi5pbmw7IHBh
dGggPSBzcmMvbGliQU5HTEUvVmVyc2lvbi5pbmw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVDQ0Q4MTZFMURCRkU5OTkwMDYwNjZCOCAvKiBWZXJ0ZXhBdHRyaWJ1dGUuaW5sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgbmFtZSA9IFZlcnRleEF0dHJpYnV0ZS5pbmw7IHBhdGggPSBzcmMvbGliQU5H
TEUvVmVydGV4QXR0cmlidXRlLmlubDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUND
RDgxNkYxREJGRTk5OTAwNjA2NkI4IC8qIFdvcmthcm91bmRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFdvcmthcm91bmRzLmg7IHBhdGggPSBzcmMvbGliQU5HTEUvV29ya2Fy
b3VuZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNDRDgxODYxREJGRUExMDAw
NjA2NkI4IC8qIEJpdFNldEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IEJpdFNldEl0ZXJhdG9yLmg7IHBhdGggPSBzcmMvY29tbW9uL0JpdFNldEl0ZXJhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0Q4MTg3MURCRkVBMTAwMDYwNjZCOCAv
KiBDb2xvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDb2xvci5oOyBwYXRo
ID0gc3JjL2NvbW1vbi9Db2xvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0NE
ODE4ODFEQkZFQTEwMDA2MDY2QjggLyogQ29sb3IuaW5sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9
IENvbG9yLmlubDsgcGF0aCA9IHNyYy9jb21tb24vQ29sb3IuaW5sOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1Q0NEODE4OTFEQkZFQTEwMDA2MDY2QjggLyogRmxvYXQxNlRvRmxvYXQz
Mi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGbG9hdDE2VG9GbG9h
dDMyLmNwcDsgcGF0aCA9IHNyYy9jb21tb24vRmxvYXQxNlRvRmxvYXQzMi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05NDQsNiArOTU0LDE3IEBACiAJCTMxMDEyRDlGMThCOTdC
OUIwMDM5MDYyRiAvKiB0cmFuc2xhdG9yICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQkzMUEzMzFDOTFFQTVFRERBMDBGRDIyMDMgLyogRmluZFN5bWJvbE5v
ZGUuY3BwICovLAorCQkJCTMxQTMzMUNBMUVBNUVEREEwMEZEMjIwMyAvKiBGaW5kU3ltYm9sTm9k
ZS5oICovLAorCQkJCTMxQTMzMUNCMUVBNUVEREEwMEZEMjIwMyAvKiBQcnVuZVB1cmVMaXRlcmFs
U3RhdGVtZW50cy5jcHAgKi8sCisJCQkJMzFBMzMxQ0MxRUE1RUREQTAwRkQyMjAzIC8qIFBydW5l
UHVyZUxpdGVyYWxTdGF0ZW1lbnRzLmggKi8sCisJCQkJMzFBMzMxQ0QxRUE1RUREQTAwRkQyMjAz
IC8qIFJlbW92ZUludmFyaWFudERlY2xhcmF0aW9uLmNwcCAqLywKKwkJCQkzMUEzMzFDRTFFQTVF
RERBMDBGRDIyMDMgLyogUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24uaCAqLywKKwkJCQkzMUEz
MzFDRjFFQTVFRERBMDBGRDIyMDMgLyogUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckZsb2F0LmNw
cCAqLywKKwkJCQkzMUEzMzFEMDFFQTVFRERBMDBGRDIyMDMgLyogUmV3cml0ZVVuYXJ5TWludXNP
cGVyYXRvckZsb2F0LmggKi8sCisJCQkJMzFBMzMxRDExRUE1RUREQTAwRkQyMjAzIC8qIFNldmVy
aXR5LmggKi8sCisJCQkJMzFBMzMxRDIxRUE1RUREQTAwRkQyMjAzIC8qIFZhbGlkYXRlTXVsdGl2
aWV3V2ViR0wuY3BwICovLAorCQkJCTMxQTMzMUQzMUVBNUVEREEwMEZEMjIwMyAvKiBWYWxpZGF0
ZU11bHRpdmlld1dlYkdMLmggKi8sCiAJCQkJNUNDRDgxOTMxREJGRUE1QzAwNjA2NkI4IC8qIEFk
ZEFuZFRydWVUb0xvb3BDb25kaXRpb24uY3BwICovLAogCQkJCTVDQ0Q4MTk0MURCRkVBNUMwMDYw
NjZCOCAvKiBBZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uLmggKi8sCiAJCQkJNUNDRDgxOTUxREJG
RUE1QzAwNjA2NkI4IC8qIEFkZERlZmF1bHRSZXR1cm5TdGF0ZW1lbnRzLmNwcCAqLywKQEAgLTk5
MCw4ICsxMDExLDYgQEAKIAkJCQk1QzMxNUNFRDFDQzVCNkRBMDA3NzY2OTcgLyogRXh0ZW5zaW9u
R0xTTC5oICovLAogCQkJCTVDOUZGRjRDMTkxMDJBMDAwMDI1QjhGQSAvKiBGbGFnU3RkMTQwU3Ry
dWN0cy5jcHAgKi8sCiAJCQkJNUM5RkZGNEQxOTEwMkEwMDAwMjVCOEZBIC8qIEZsYWdTdGQxNDBT
dHJ1Y3RzLmggKi8sCi0JCQkJMzEwMTJEQkExOEI5N0I5QjAwMzkwNjJGIC8qIEZvckxvb3BVbnJv
bGwuY3BwICovLAotCQkJCTMxMDEyREJCMThCOTdCOUIwMDM5MDYyRiAvKiBGb3JMb29wVW5yb2xs
LmggKi8sCiAJCQkJMzEwMTJEQkQxOEI5N0I5QjAwMzkwNjJGIC8qIGdsc2xhbmcuaCAqLywKIAkJ
CQkzMTAxMkRDMDE4Qjk3QjlCMDAzOTA2MkYgLyogZ2xzbGFuZ19sZXguY3BwICovLAogCQkJCTMx
MDEyREMxMThCOTdCOUIwMDM5MDYyRiAvKiBnbHNsYW5nX3RhYi5jcHAgKi8sCkBAIC0xMDA0LDgg
KzEwMjMsNiBAQAogCQkJCTMxMDEyREM4MThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplRGxs
LmNwcCAqLywKIAkJCQkzMTAxMkRDOTE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZURsbC5o
ICovLAogCQkJCTMxMDEyRENBMThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplR2xvYmFscy5o
ICovLAotCQkJCTMxMDEyRENCMThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplUGFyc2VDb250
ZXh0LmNwcCAqLywKLQkJCQkzMTAxMkRDQzE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZVBh
cnNlQ29udGV4dC5oICovLAogCQkJCTMxMDEyRENEMThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFs
aXplVmFyaWFibGVzLmNwcCAqLywKIAkJCQkzMTAxMkRDRTE4Qjk3QjlCMDAzOTA2MkYgLyogSW5p
dGlhbGl6ZVZhcmlhYmxlcy5oICovLAogCQkJCTMxMDEyRENGMThCOTdCOUIwMDM5MDYyRiAvKiBJ
bnRlcm1lZGlhdGUuY3BwICovLApAQCAtMTAxNyw5ICsxMDM0LDYgQEAKIAkJCQkzMTAxMkREMTE4
Qjk3QjlCMDAzOTA2MkYgLyogaW50ZXJtT3V0LmNwcCAqLywKIAkJCQkzMTAxMkREMjE4Qjk3QjlC
MDAzOTA2MkYgLyogSW50ZXJtVHJhdmVyc2UuY3BwICovLAogCQkJCTVDMURCQzBCMUIwNDM3NUYw
MDIzNTU1MiAvKiBsZW5ndGhfbGltaXRzLmggKi8sCi0JCQkJNUNDN0Q0NEIxOTEwMjRFMzAwMEI4
QzFGIC8qIExvb3BJbmZvLmNwcCAqLywKLQkJCQk1Q0M3RDQ0QzE5MTAyNEU0MDAwQjhDMUYgLyog
TG9vcEluZm8uaCAqLywKLQkJCQkzMTAxMkRENjE4Qjk3QjlCMDAzOTA2MkYgLyogTU1hcC5oICov
LAogCQkJCTMxMDEyREQ3MThCOTdCOUIwMDM5MDYyRiAvKiBOb2RlU2VhcmNoLmggKi8sCiAJCQkJ
NUMxREJDMEMxQjA0Mzc1RjAwMjM1NTUyIC8qIE9wZXJhdG9yLmNwcCAqLywKIAkJCQk1QzFEQkMw
RDFCMDQzNzVGMDAyMzU1NTIgLyogT3BlcmF0b3IuaCAqLywKQEAgLTExMjEsNiArMTEzNSwxNCBA
QAogCQkJbmFtZSA9IG1pc2M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQkz
MUEzMzFFMDFFQTVFRkE1MDBGRDIyMDMgLyogdHJhY2VfZXZlbnQgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTMxQTMzMUUxMUVBNUVGQjgwMEZEMjIwMyAv
KiB0cmFjZV9ldmVudC5oICovLAorCQkJKTsKKwkJCW5hbWUgPSB0cmFjZV9ldmVudDsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTVDMUJBQTkzMURGQjYwRTIwMDI5MDZCQiAv
KiBFR0wgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTIy
NSw3ICsxMjQ3LDYgQEAKIAkJCQk1QzFEQkRCODFCMDQzOEQyMDAyMzU1NTIgLyogU2FtcGxlci5o
ICovLAogCQkJCTVDMURCREI5MUIwNDM4RDIwMDIzNTU1MiAvKiBTaGFkZXIuY3BwICovLAogCQkJ
CTVDMURCREJBMUIwNDM4RDIwMDIzNTU1MiAvKiBTaGFkZXIuaCAqLywKLQkJCQk1Q0NEODE2NjFE
QkZFOTk5MDA2MDY2QjggLyogc2lnbmFsX3V0aWxzLmNwcCAqLywKIAkJCQk1Q0NEODE2NzFEQkZF
OTk5MDA2MDY2QjggLyogc2lnbmFsX3V0aWxzLmggKi8sCiAJCQkJNUMxREJEQkIxQjA0MzhEMzAw
MjM1NTUyIC8qIFN0YXRlLmNwcCAqLywKIAkJCQk1QzFEQkRCQzFCMDQzOEQzMDAyMzU1NTIgLyog
U3RhdGUuaCAqLywKQEAgLTEzMDgsOSArMTMyOSw3IEBACiAJCQkJNUNCMzA0QjMxREU0MTY0ODAw
RDJDNDA1IC8qIEVHTEltcGxGYWN0b3J5LmggKi8sCiAJCQkJNUNCMzA0QjQxREU0MTY0ODAwRDJD
NDA1IC8qIEZlbmNlTlZJbXBsLmggKi8sCiAJCQkJNUNCMzA0QjUxREU0MTY0ODAwRDJDNDA1IC8q
IEZlbmNlU3luY0ltcGwuaCAqLywKLQkJCQk1Q0IzMDRCODFERTQxNjQ4MDBEMkM0MDUgLyogRm9y
bWF0LmNwcCAqLywKIAkJCQk1Q0IzMDRCOTFERTQxNjQ4MDBEMkM0MDUgLyogRm9ybWF0LmggKi8s
Ci0JCQkJNUNCMzA0QjYxREU0MTY0ODAwRDJDNDA1IC8qIEZvcm1hdF9hdXRvZ2VuLmNwcCAqLywK
IAkJCQk1Q0IzMDRCQTFERTQxNjQ4MDBEMkM0MDUgLyogRnJhbWVidWZmZXJBdHRhY2htZW50T2Jq
ZWN0SW1wbC5oICovLAogCQkJCTVDQjMwNEJDMURFNDE2NDgwMEQyQzQwNSAvKiBGcmFtZWJ1ZmZl
ckltcGwuaCAqLywKIAkJCQk1Q0IzMDRCQjFERTQxNjQ4MDBEMkM0MDUgLyogRnJhbWVidWZmZXJJ
bXBsX21vY2suaCAqLywKQEAgLTE0MjYsOSArMTQ0NSwxMiBAQAogCQk1Q0M3RDQ1OTE5MTAyNjA4
MDAwQjhDMUYgLyogY29tbW9uICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQkzMUEzMzFDMzFFQTVFRDVGMDBGRDIyMDMgLyogc3lzdGVtX3V0aWxzX21hYy5j
cHAgKi8sCisJCQkJMzFBMzMxQzQxRUE1RUQ1RjAwRkQyMjAzIC8qIHN5c3RlbV91dGlscy5oICov
LAorCQkJCTMxQTMzMUM1MUVBNUVENUYwMEZEMjIwMyAvKiB2ZWN0b3JfdXRpbHMuaCAqLywKKwkJ
CQkzMUEzMzFDMDFFQTVFRDI1MDBGRDIyMDMgLyogYml0c2V0X3V0aWxzLmggKi8sCiAJCQkJNUMx
REJCRTcxQjA0MzZFQzAwMjM1NTUyIC8qIGFuZ2xldXRpbHMuY3BwICovLAogCQkJCTVDQzdENDVB
MTkxMDI2MjAwMDBCOEMxRiAvKiBhbmdsZXV0aWxzLmggKi8sCi0JCQkJNUNDRDgxODYxREJGRUEx
MDAwNjA2NkI4IC8qIEJpdFNldEl0ZXJhdG9yLmggKi8sCiAJCQkJNUNDRDgxODcxREJGRUExMDAw
NjA2NkI4IC8qIENvbG9yLmggKi8sCiAJCQkJNUNDRDgxODgxREJGRUExMDAwNjA2NkI4IC8qIENv
bG9yLmlubCAqLywKIAkJCQk1Q0M3RDQ1RDE5MTAyNjIwMDAwQjhDMUYgLyogZGVidWcuY3BwICov
LApAQCAtMTQ2Nyw2ICsxNDg5LDcgQEAKIAkJQTA4QzNDRDgxNkQ2Q0IzNTAwM0YwQjgzIC8qIHRo
aXJkX3BhcnR5ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQkzMUEzMzFFMDFFQTVFRkE1MDBGRDIyMDMgLyogdHJhY2VfZXZlbnQgKi8sCiAJCQkJQTA4QzND
RDkxNkQ2Q0I0MzAwM0YwQjgzIC8qIGNvbXBpbGVyICovLAogCQkJKTsKIAkJCW5hbWUgPSB0aGly
ZF9wYXJ0eTsKQEAgLTE2MDMsOCArMTYyNiw4IEBACiAJCQkJNUMxREJDMjMxQjA0Mzc1RjAwMjM1
NTUyIC8qIEFTVE1ldGFkYXRhSExTTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJERDYxQjA0
MzhEMzAwMjM1NTUyIC8qIEF0dHJpYnV0ZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJF
MTIxOEI5N0I5QjAwMzkwNjJGIC8qIEJhc2VUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFB
MzMxQzcxRUE1RUQ1RjAwRkQyMjAzIC8qIHN5c3RlbV91dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUMxREJERDcxQjA0MzhEMzAwMjM1NTUyIC8qIEJpbmFyeVN0cmVhbS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJNUNDRDgxOEQxREJGRUExMDAwNjA2NkI4IC8qIEJpdFNldEl0ZXJhdG9yLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0IzMDExNzFERTM5RjFBMDBEMkM0MDUgLyogQmxpdEdMLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1QzFEQkMyNTFCMDQzNzVGMDAyMzU1NTIgLyogYmxvY2tsYXlvdXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCQzI3MUIwNDM3NUYwMDIzNTU1MiAvKiBibG9ja2xh
eW91dEhMU0wuaCBpbiBIZWFkZXJzICovLApAQCAtMTY0OSw4ICsxNjcyLDExIEBACiAJCQkJNUNC
MzA0RTMxREU0MTY0ODAwRDJDNDA1IC8qIEVHTEltcGxGYWN0b3J5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1QzFCQUFBQzFERkI2MTI0MDAyOTA2QkIgLyogZWdscGxhdGZvcm0uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDQ0Q4MUM0MURCRkVBRDkwMDYwNjZCOCAvKiBFbXVsYXRlR0xGcmFnQ29sb3JC
cm9hZGNhc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTMzMUUyMUVBNUVGQjgwMEZEMjIwMyAv
KiB0cmFjZV9ldmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJDMkUxQjA0Mzc1RjAwMjM1
NTUyIC8qIEVtdWxhdGVQcmVjaXNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMwNDk4MURF
NDE1N0IwMEQyQzQwNSAvKiBlbnRyeV9wb2ludHNfZWdsLmggaW4gSGVhZGVycyAqLywKKwkJCQkz
MUEzMzFERTFFQTVFRERBMDBGRDIyMDMgLyogVmFsaWRhdGVNdWx0aXZpZXdXZWJHTC5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMzFBMzMxRDUxRUE1RUREQTAwRkQyMjAzIC8qIEZpbmRTeW1ib2xOb2Rl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDQ5NjFERTQxNTdCMDBEMkM0MDUgLyogZW50cnlf
cG9pbnRzX2VnbF9leHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMwNDlDMURFNDE1N0IwMEQy
QzQwNSAvKiBlbnRyeV9wb2ludHNfZ2xlc18yXzAuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMw
NDlBMURFNDE1N0IwMEQyQzQwNSAvKiBlbnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0LmggaW4gSGVh
ZGVycyAqLywKQEAgLTE2NzAsNyArMTY5Niw2IEBACiAJCQkJNUNCMzAxMjQxREUzOUYxQTAwRDJD
NDA1IC8qIEZlbmNlU3luY0dMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDRFNTFERTQxNjQ4
MDBEMkM0MDUgLyogRmVuY2VTeW5jSW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM5RkZGNEYx
OTEwMkEwMDAwMjVCOEZBIC8qIEZsYWdTdGQxNDBTdHJ1Y3RzLmggaW4gSGVhZGVycyAqLywKLQkJ
CQkzMTAxMkUyQzE4Qjk3QjlCMDAzOTA2MkYgLyogRm9yTG9vcFVucm9sbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNCMzA0RTgxREU0MTY0ODAwRDJDNDA1IC8qIEZvcm1hdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUMxREJERjIxQjA0MzhEMzAwMjM1NTUyIC8qIGZvcm1hdHV0aWxzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1Q0IzMDEyNjFERTM5RjFBMDBEMkM0MDUgLyogZm9ybWF0dXRpbHNnbC5o
IGluIEhlYWRlcnMgKi8sCkBAIC0xNzA3LDcgKzE3MzIsNiBAQAogCQkJCTMxMDEyRTM3MThCOTdC
OUIwMDM5MDYyRiAvKiBJbml0aWFsaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTAxMkUzOTE4
Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZURsbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEw
MTJFM0ExOEI5N0I5QjAwMzkwNjJGIC8qIEluaXRpYWxpemVHbG9iYWxzLmggaW4gSGVhZGVycyAq
LywKLQkJCQkzMTAxMkUzQzE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZVBhcnNlQ29udGV4
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFM0UxOEI5N0I5QjAwMzkwNjJGIC8qIEluaXRp
YWxpemVWYXJpYWJsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEI1MTY5NzRERUQwMDZG
QUE1QSAvKiBJbnB1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJDMkYxQjA0Mzc1RjAwMjM1
NTUyIC8qIEludGVybWVkaWF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNzE3LDEzICsxNzQxLDEy
IEBACiAJCQkJNUMxREJDMzIxQjA0Mzc1RjAwMjM1NTUyIC8qIGxlbmd0aF9saW1pdHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUEyNjRGOEI3MTY5NzRERUQwMDZGQUE1QSAvKiBMZXhlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNUNCMzA0RjAxREU0MTY0ODAwRDJDNDA1IC8qIGxvYWRfZnVuY3Rpb25z
X3RhYmxlLmggaW4gSGVhZGVycyAqLywKLQkJCQk1Q0M3RDQ1MzE5MTAyNEU0MDAwQjhDMUYgLyog
TG9vcEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEI5MTY5NzRERUQwMDZGQUE1QSAv
KiBNYWNyby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4QkIxNjk3NERFRDAwNkZBQTVBIC8q
IE1hY3JvRXhwYW5kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQzdENDczMTkxMDI2MjEwMDBC
OEMxRiAvKiBtYXRodXRpbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNDRDgxOTAxREJGRUExMDAw
NjA2NkI4IC8qIG1hdHJpeF91dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJCRjIxQjA0
MzZFQzAwMjM1NTUyIC8qIE1lbW9yeUJ1ZmZlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEwMTJF
NDYxOEI5N0I5QjAwMzkwNjJGIC8qIE1NYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTMzMURD
MUVBNUVEREEwMEZEMjIwMyAvKiBTZXZlcml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJF
NDcxOEI5N0I5QjAwMzkwNjJGIC8qIE5vZGVTZWFyY2guaCBpbiBIZWFkZXJzICovLAogCQkJCUEy
NjRGOEJDMTY5NzRERUQwMDZGQUE1QSAvKiBudW1lcmljX2xleC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUMxREJDMzQxQjA0Mzc1RjAwMjM1NTUyIC8qIE9wZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
QEAgLTE3MzUsNiArMTc1OCw3IEBACiAJCQkJMzEwMTJFNTUxOEI5N0I5QjAwMzkwNjJGIC8qIFBh
cnNlQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNDRDgxN0IxREJGRTk5OTAwNjA2NkI4
IC8qIFBhdGguaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMwMTJFMURFMzlGMUEwMEQyQzQwNSAv
KiBQYXRoR0wuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTMzMUQ5MUVBNUVEREEwMEZEMjIwMyAv
KiBSZW1vdmVJbnZhcmlhbnREZWNsYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNCMzA0
RjExREU0MTY0ODAwRDJDNDA1IC8qIFBhdGhJbXBsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0Iz
MDE1MTFERTM5RjQ3MDBEMkM0MDUgLyogUGJ1ZmZlclN1cmZhY2VDR0wuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDMURCQkY1MUIwNDM2RUMwMDIzNTU1MiAvKiBwbGF0Zm9ybS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xNzg0LDYgKzE4MDgsNyBAQAogCQkJCTVDQjMwMTNDMURFMzlGMUEwMEQyQzQwNSAv
KiBTaGFkZXJHTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNCMzA0RkExREU0MTY0ODAwRDJDNDA1
IC8qIFNoYWRlckltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCUZCMzlENzZFMTIwMTEwRkMwMDA4
OEU2OSAvKiBTaGFkZXJMYW5nLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMUEzMzFEQjFFQTVFRERB
MDBGRDIyMDMgLyogUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckZsb2F0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1QzFEQkJFNjFCMDQwNzVCMDAyMzU1NTIgLyogU2hhZGVyVmFycy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUNDRDgxN0YxREJGRTk5OTAwNjA2NkI4IC8qIHNpZ25hbF91dGlscy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNUNDRDgxQkMxREJGRUE1QzAwNjA2NkI4IC8qIFNpbXBsaWZ5TG9v
cENvbmRpdGlvbnMuaCBpbiBIZWFkZXJzICovLApAQCAtMTc5MSw2ICsxODE2LDcgQEAKIAkJCQk1
Q0NEODFCRTFEQkZFQTVDMDA2MDY2QjggLyogU3BsaXRTZXF1ZW5jZU9wZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1QzFEQkYyQzFCMDQzOEQzMDAyMzU1NTIgLyogU3RhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDQjMwMTNFMURFMzlGMUEwMEQyQzQwNSAvKiBTdGF0ZU1hbmFnZXJHTC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMzMxQzgxRUE1RUQ1RjAwRkQyMjAzIC8qIHZlY3Rvcl91
dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNDRDgxODExREJGRTk5OTAwNjA2NkI4IC8qIFN0
cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNCMzA0RkIxREU0MTY0ODAwRDJDNDA1IC8qIFN0
cmVhbVByb2R1Y2VySW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNDRDgxOTIxREJGRUExMDAw
NjA2NkI4IC8qIHN0cmluZ191dGlscy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xODAxLDEwICsxODI3
LDEyIEBACiAJCQkJNUMxREJGMzExQjA0MzhEMzAwMjM1NTUyIC8qIFRleHR1cmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDQjMwMTQyMURFMzlGMUEwMEQyQzQwNSAvKiBUZXh0dXJlR0wuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDQjMwNTAwMURFNDE2NDgwMEQyQzQwNSAvKiBUZXh0dXJlSW1wbC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMzMxQzIxRUE1RUQyNTAwRkQyMjAzIC8qIGJpdHNldF91
dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNCMzA0RkUxREU0MTY0ODAwRDJDNDA1IC8qIFRl
eHR1cmVJbXBsX21vY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCQkY3MUIwNDM2RUMwMDIz
NTU1MiAvKiB0bHMuaCBpbiBIZWFkZXJzICovLAogCQkJCUEyNjRGOEMyMTY5NzRERUQwMDZGQUE1
QSAvKiBUb2tlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTI2NEY4QzQxNjk3NERFRDAwNkZBQTVB
IC8qIFRva2VuaXplci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMzMxRDcxRUE1RUREQTAwRkQy
MjAzIC8qIFBydW5lUHVyZUxpdGVyYWxTdGF0ZW1lbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
QzFEQkYzNDFCMDQzOEQzMDAyMzU1NTIgLyogVHJhbnNmb3JtRmVlZGJhY2suaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDQjMwMTQ0MURFMzlGMUEwMEQyQzQwNSAvKiBUcmFuc2Zvcm1GZWVkYmFja0dM
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDUwMjFERTQxNjQ4MDBEMkM0MDUgLyogVHJhbnNm
b3JtRmVlZGJhY2tJbXBsLmggaW4gSGVhZGVycyAqLywKQEAgLTE5MTEsNiArMTkzOSw3IEBACiAJ
CQkJNUMxREJDMjQxQjA0Mzc1RjAwMjM1NTUyIC8qIGJsb2NrbGF5b3V0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTVDMURCQzI2MUIwNDM3NUYwMDIzNTU1MiAvKiBibG9ja2xheW91dEhMU0wuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDRDgxQUUxREJGRUE1QzAwNjA2NkI4IC8qIEJyZWFrVmFy
aWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEzMzFE
NjFFQTVFRERBMDBGRDIyMDMgLyogUHJ1bmVQdXJlTGl0ZXJhbFN0YXRlbWVudHMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUMxREJERDgxQjA0MzhEMzAwMjM1NTUyIC8qIEJ1ZmZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0IzMDExODFERTM5RjFBMDBEMkM0MDUgLyogQnVmZmVyR0wuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFMTMxOEI5N0I5QjAwMzkwNjJGIC8qIEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTk1NCwxNCArMTk4MywxMiBA
QAogCQkJCTVDQ0Q4MUIxMURCRkVBNUMwMDYwNjZCOCAvKiBFeHBhbmRJbnRlZ2VyUG93RXhwcmVz
c2lvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzIzMDlBNTgxODNDMjdGMzAwMzcwQjkzIC8q
IEV4cHJlc3Npb25QYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMzMTVEMDIxQ0M1QjZE
QTAwNzc2Njk3IC8qIEV4dGVuc2lvbkdMU0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMzMx
REQxRUE1RUREQTAwRkQyMjAzIC8qIFZhbGlkYXRlTXVsdGl2aWV3V2ViR0wuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNUMxREJERUUxQjA0MzhEMzAwMjM1NTUyIC8qIEZlbmNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDQjMwMTIxMURFMzlGMUEwMEQyQzQwNSAvKiBGZW5jZU5WR0wuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUNCMzAxMjMxREUzOUYxQTAwRDJDNDA1IC8qIEZlbmNlU3luY0dM
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDOUZGRjRFMTkxMDJBMDAwMDI1QjhGQSAvKiBGbGFn
U3RkMTQwU3RydWN0cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0NEODE4RjFEQkZFQTEwMDA2
MDY2QjggLyogRmxvYXQxNlRvRmxvYXQzMi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkzMTAxMkUy
QjE4Qjk3QjlCMDAzOTA2MkYgLyogRm9yTG9vcFVucm9sbC5jcHAgaW4gU291cmNlcyAqLywKLQkJ
CQk1Q0IzMDRFNzFERTQxNjQ4MDBEMkM0MDUgLyogRm9ybWF0LmNwcCBpbiBTb3VyY2VzICovLAot
CQkJCTVDQjMwNEU2MURFNDE2NDgwMEQyQzQwNSAvKiBGb3JtYXRfYXV0b2dlbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1Q0IzMDRBODFERTQxNUZBMDBEMkM0MDUgLyogZm9ybWF0X21hcF9hdXRv
Z2VuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCREYxMUIwNDM4RDMwMDIzNTU1MiAvKiBm
b3JtYXR1dGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0IzMDEyNTFERTM5RjFBMDBEMkM0
MDUgLyogZm9ybWF0dXRpbHNnbC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE5NzYsMTEgKzIwMDMs
MTEgQEAKIAkJCQk1Q0NEODE3NDFEQkZFOTk5MDA2MDY2QjggLyogSGFuZGxlUmFuZ2VBbGxvY2F0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDRDgxNzYxREJGRTk5OTAwNjA2NkI4IC8qIElt
YWdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCREZCMUIwNDM4RDMwMDIzNTU1MiAvKiBJ
bWFnZUluZGV4LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTMzMUM2MUVBNUVENUYwMEZEMjIw
MyAvKiBzeXN0ZW1fdXRpbHNfbWFjLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQ0Q4MTc4MURC
RkU5OTkwMDYwNjZCOCAvKiBJbmRleFJhbmdlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzEwMTJFMzQxOEI5N0I5QjAwMzkwNjJGIC8qIEluZm9TaW5rLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTMxMDEyRTM2MThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTMxMDEyRTM4MThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplRGxsLmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTMxMDEyRTNCMThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXpl
UGFyc2VDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMDEyRTNEMThCOTdCOUIwMDM5
MDYyRiAvKiBJbml0aWFsaXplVmFyaWFibGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjRG
OEI0MTY5NzRERUQwMDZGQUE1QSAvKiBJbnB1dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAx
MkUzRjE4Qjk3QjlCMDAzOTA2MkYgLyogSW50ZXJtZWRpYXRlLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtMTk5MSw4ICsyMDE4LDggQEAKIAkJCQlBMjY0RjhCNjE2OTc0REVEMDA2RkFBNUEgLyogTGV4
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNCNUUxQTcxREZCOEFGNjAwRjkwRkM5IC8qIGxp
YkVHTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0IzMDRFRjFERTQxNjQ4MDBEMkM0MDUgLyog
bG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1Q0M3
RDQ1MjE5MTAyNEU0MDAwQjhDMUYgLyogTG9vcEluZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QTI2NEY4QjgxNjk3NERFRDAwNkZBQTVBIC8qIE1hY3JvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTMxQTMzMURBMUVBNUVEREEwMEZEMjIwMyAvKiBSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9yRmxv
YXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTI2NEY4QkExNjk3NERFRDAwNkZBQTVBIC8qIE1h
Y3JvRXhwYW5kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDN0Q0NzIxOTEwMjYyMTAwMEI4
QzFGIC8qIG1hdGh1dGlsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCQkYxMUIwNDM2RUMw
MDIzNTU1MiAvKiBNZW1vcnlCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yMDM5LDkgKzIw
NjYsMTAgQEAKIAkJCQk1QzMxNUQwQzFDQzVCNkRBMDA3NzY2OTcgLyogU2VwYXJhdGVFeHByZXNz
aW9uc1JldHVybmluZ0FycmF5cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkYyOTFCMDQz
OEQzMDAyMzU1NTIgLyogU2hhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQjMwMTNCMURF
MzlGMUEwMEQyQzQwNSAvKiBTaGFkZXJHTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEzMzFE
ODFFQTVFRERBMDBGRDIyMDMgLyogUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzEwMTJFNjIxOEI5N0I5QjAwMzkwNjJGIC8qIFNoYWRlckxhbmcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJDNDExQjA0Mzc1RjAwMjM1NTUyIC8qIFNoYWRlclZh
cnMuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNUNDRDgxN0UxREJGRTk5OTAwNjA2NkI4IC8qIHNp
Z25hbF91dGlscy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEzMzFENDFFQTVFRERBMDBGRDIy
MDMgLyogRmluZFN5bWJvbE5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNDRDgxQkIxREJG
RUE1QzAwNjA2NkI4IC8qIFNpbXBsaWZ5TG9vcENvbmRpdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNDRDgxQkQxREJGRUE1QzAwNjA2NkI4IC8qIFNwbGl0U2VxdWVuY2VPcGVyYXRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkYyQjFCMDQzOEQzMDAyMzU1NTIgLyogU3RhdGUu
Y3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9D
b25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQ29u
ZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwppbmRleCBhYjkzYmQ4NDY3NzAyMDJmNTYzYWI3MTYw
ZmU4MWMzNmIwNGIxMWUwLi40NTQ5NmZhMjkxZDljNjE4NjcwYzJmZDBlZTdkMjdkZDg3ZDhlNTIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9Db25maWd1cmF0aW9ucy9CYXNl
LnhjY29uZmlnCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NvbmZpZ3VyYXRpb25zL0Jh
c2UueGNjb25maWcKQEAgLTQyLDcgKzQyLDcgQEAgR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0g
WUVTOwogR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOwogUFJFQklORElORyA9IE5POwog
U1RSSVBfSU5TVEFMTEVEX1BST0RVQ1QgPSBOTzsKLVdBUk5JTkdfQ0ZMQUdTID0gLVdleGl0LXRp
bWUtZGVzdHJ1Y3RvcnMgLVdnbG9iYWwtY29uc3RydWN0b3JzOworV0FSTklOR19DRkxBR1MgPSAt
V2dsb2JhbC1jb25zdHJ1Y3RvcnMgLVduby1uZXdsaW5lLWVvZiAtV25vLWluY29uc2lzdGVudC1t
aXNzaW5nLW92ZXJyaWRlOwogCiBTVVBQT1JURURfUExBVEZPUk1TID0gaXBob25lb3MgaXBob25l
c2ltdWxhdG9yIG1hY29zeCBhcHBsZXR2b3MgYXBwbGV0dnNpbXVsYXRvciB3YXRjaG9zIHdhdGNo
c2ltdWxhdG9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRl
L0VHTC9lZ2wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbC5oCmlu
ZGV4IGI3NjQzNzJjZjRhNmU5YjU4NGU4NGM3MzI0OWYxYWI4MWJmMjY1ZjMuLjI5ZjMwZDk0ZGUx
ZDE1Y2NkYzA5ZjcxOTAxN2FhMmU4NzcyOWRkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L2luY2x1ZGUvRUdML2VnbC5oCkBAIC02LDcgKzYsNyBAQCBleHRlcm4gIkMiIHsKICNlbmRpZgog
CiAvKgotKiogQ29weXJpZ2h0IChjKSAyMDEzLTIwMTUgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgor
KiogQ29weXJpZ2h0IChjKSAyMDEzLTIwMTcgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgogKioKICoq
IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy
c29uIG9idGFpbmluZyBhCiAqKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kL29yIGFzc29jaWF0
ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCkBAIC0zMSwyMCArMzEsMTQgQEAgZXh0ZXJuICJD
IiB7CiAqKiBUaGlzIGhlYWRlciBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgS2hyb25vcyBPcGVuR0wg
LyBPcGVuR0wgRVMgWE1MCiAqKiBBUEkgUmVnaXN0cnkuIFRoZSBjdXJyZW50IHZlcnNpb24gb2Yg
dGhlIFJlZ2lzdHJ5LCBnZW5lcmF0b3Igc2NyaXB0cwogKiogdXNlZCB0byBtYWtlIHRoZSBoZWFk
ZXIsIGFuZCB0aGUgaGVhZGVyIGNhbiBiZSBmb3VuZCBhdAotKiogICBodHRwOi8vd3d3Lm9wZW5n
bC5vcmcvcmVnaXN0cnkvCisqKiAgIGh0dHA6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9lZ2wK
ICoqCi0qKiBLaHJvbm9zICRSZXZpc2lvbjogMzE1NjYgJCBvbiAkRGF0ZTogMjAxNS0wNi0yMyAw
ODo0ODo0OCAtMDcwMCAoVHVlLCAyMyBKdW4gMjAxNSkgJAorKiogS2hyb25vcyAkUmV2aXNpb24k
IG9uICREYXRlJAogKi8KIAogI2luY2x1ZGUgPEVHTC9lZ2xwbGF0Zm9ybS5oPgogCi0jaWYgZGVm
aW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoQU5HTEVfV0VCS0lUX1dJTikKLSNkZWZpbmUgRUdM
X1NPRlRfTElOS0lORyAxCi0jZWxzZQotI2RlZmluZSBFR0xfU09GVF9MSU5LSU5HIDAKLSNlbmRp
ZgotCi0vKiBHZW5lcmF0ZWQgb24gZGF0ZSAyMDE1MDYyMyAqLworLyogR2VuZXJhdGVkIG9uIGRh
dGUgMjAxNjEyMzAgKi8KIAogLyogR2VuZXJhdGVkIEMgaGVhZGVyIGZvcjoKICAqIEFQSTogZWds
CkBAIC01OSw4ICs1Myw4IEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBFR0xfVkVSU0lPTl8xXzAg
MQogdHlwZWRlZiB1bnNpZ25lZCBpbnQgRUdMQm9vbGVhbjsKIHR5cGVkZWYgdm9pZCAqRUdMRGlz
cGxheTsKLSNpbmNsdWRlIDxBTkdMRS9raHJwbGF0Zm9ybS5oPgotI2luY2x1ZGUgPEFOR0xFL2Vn
bHBsYXRmb3JtLmg+CisjaW5jbHVkZSA8S0hSL2tocnBsYXRmb3JtLmg+CisjaW5jbHVkZSA8RUdM
L2VnbHBsYXRmb3JtLmg+CiB0eXBlZGVmIHZvaWQgKkVHTENvbmZpZzsKIHR5cGVkZWYgdm9pZCAq
RUdMU3VyZmFjZTsKIHR5cGVkZWYgdm9pZCAqRUdMQ29udGV4dDsKQEAgLTg0LDcgKzc4LDcgQEAg
dHlwZWRlZiB2b2lkICgqX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSko
dm9pZCk7CiAjZGVmaW5lIEVHTF9DT05GSUdfSUQgICAgICAgICAgICAgICAgICAgICAweDMwMjgK
ICNkZWZpbmUgRUdMX0NPUkVfTkFUSVZFX0VOR0lORSAgICAgICAgICAgIDB4MzA1QgogI2RlZmlu
ZSBFR0xfREVQVEhfU0laRSAgICAgICAgICAgICAgICAgICAgMHgzMDI1Ci0jZGVmaW5lIEVHTF9E
T05UX0NBUkUgICAgICAgICAgICAgICAgICAgICAoKEVHTGludCktMSkKKyNkZWZpbmUgRUdMX0RP
TlRfQ0FSRSAgICAgICAgICAgICAgICAgICAgIEVHTF9DQVNUKEVHTGludCwtMSkKICNkZWZpbmUg
RUdMX0RSQVcgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzA1OQogI2RlZmluZSBFR0xfRVhU
RU5TSU9OUyAgICAgICAgICAgICAgICAgICAgMHgzMDU1CiAjZGVmaW5lIEVHTF9GQUxTRSAgICAg
ICAgICAgICAgICAgICAgICAgICAwCkBAIC0xMDEsOSArOTUsOSBAQCB0eXBlZGVmIHZvaWQgKCpf
X2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKSh2b2lkKTsKICNkZWZpbmUg
RUdMX05PTkUgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAzOAogI2RlZmluZSBFR0xfTk9O
X0NPTkZPUk1BTlRfQ09ORklHICAgICAgICAgMHgzMDUxCiAjZGVmaW5lIEVHTF9OT1RfSU5JVElB
TElaRUQgICAgICAgICAgICAgICAweDMwMDEKLSNkZWZpbmUgRUdMX05PX0NPTlRFWFQgICAgICAg
ICAgICAgICAgICAgICgoRUdMQ29udGV4dCkwKQotI2RlZmluZSBFR0xfTk9fRElTUExBWSAgICAg
ICAgICAgICAgICAgICAgKChFR0xEaXNwbGF5KTApCi0jZGVmaW5lIEVHTF9OT19TVVJGQUNFICAg
ICAgICAgICAgICAgICAgICAoKEVHTFN1cmZhY2UpMCkKKyNkZWZpbmUgRUdMX05PX0NPTlRFWFQg
ICAgICAgICAgICAgICAgICAgIEVHTF9DQVNUKEVHTENvbnRleHQsMCkKKyNkZWZpbmUgRUdMX05P
X0RJU1BMQVkgICAgICAgICAgICAgICAgICAgIEVHTF9DQVNUKEVHTERpc3BsYXksMCkKKyNkZWZp
bmUgRUdMX05PX1NVUkZBQ0UgICAgICAgICAgICAgICAgICAgIEVHTF9DQVNUKEVHTFN1cmZhY2Us
MCkKICNkZWZpbmUgRUdMX1BCVUZGRVJfQklUICAgICAgICAgICAgICAgICAgIDB4MDAwMQogI2Rl
ZmluZSBFR0xfUElYTUFQX0JJVCAgICAgICAgICAgICAgICAgICAgMHgwMDAyCiAjZGVmaW5lIEVH
TF9SRUFEICAgICAgICAgICAgICAgICAgICAgICAgICAweDMwNUEKQEAgLTEyNCw3ICsxMTgsNiBA
QCB0eXBlZGVmIHZvaWQgKCpfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBl
KSh2b2lkKTsKICNkZWZpbmUgRUdMX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgICAgIDB4MzA1
NAogI2RlZmluZSBFR0xfV0lEVEggICAgICAgICAgICAgICAgICAgICAgICAgMHgzMDU3CiAjZGVm
aW5lIEVHTF9XSU5ET1dfQklUICAgICAgICAgICAgICAgICAgICAweDAwMDQKLSNpZiAhRUdMX1NP
RlRfTElOS0lORwogRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsQ2hvb3NlQ29uZmln
IChFR0xEaXNwbGF5IGRweSwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCwgRUdMQ29uZmlnICpj
b25maWdzLCBFR0xpbnQgY29uZmlnX3NpemUsIEVHTGludCAqbnVtX2NvbmZpZyk7CiBFR0xBUEkg
RUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xDb3B5QnVmZmVycyAoRUdMRGlzcGxheSBkcHksIEVH
TFN1cmZhY2Ugc3VyZmFjZSwgRUdMTmF0aXZlUGl4bWFwVHlwZSB0YXJnZXQpOwogRUdMQVBJIEVH
TENvbnRleHQgRUdMQVBJRU5UUlkgZWdsQ3JlYXRlQ29udGV4dCAoRUdMRGlzcGxheSBkcHksIEVH
TENvbmZpZyBjb25maWcsIEVHTENvbnRleHQgc2hhcmVfY29udGV4dCwgY29uc3QgRUdMaW50ICph
dHRyaWJfbGlzdCk7CkBAIC0xNDksNyArMTQyLDYgQEAgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJ
RU5UUlkgZWdsU3dhcEJ1ZmZlcnMgKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UK
IEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFRlcm1pbmF0ZSAoRUdMRGlzcGxheSBk
cHkpOwogRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsV2FpdEdMICh2b2lkKTsKIEVH
TEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFdhaXROYXRpdmUgKEVHTGludCBlbmdpbmUp
OwotI2VuZGlmCiAjZW5kaWYgLyogRUdMX1ZFUlNJT05fMV8wICovCiAKICNpZm5kZWYgRUdMX1ZF
UlNJT05fMV8xCkBAIC0xNjgsMTIgKzE2MCwxMCBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElF
TlRSWSBlZ2xXYWl0TmF0aXZlIChFR0xpbnQgZW5naW5lKTsKICNkZWZpbmUgRUdMX1RFWFRVUkVf
UkdCICAgICAgICAgICAgICAgICAgIDB4MzA1RAogI2RlZmluZSBFR0xfVEVYVFVSRV9SR0JBICAg
ICAgICAgICAgICAgICAgMHgzMDVFCiAjZGVmaW5lIEVHTF9URVhUVVJFX1RBUkdFVCAgICAgICAg
ICAgICAgICAweDMwODEKLSNpZiAhRUdMX1NPRlRfTElOS0lORwogRUdMQVBJIEVHTEJvb2xlYW4g
RUdMQVBJRU5UUlkgZWdsQmluZFRleEltYWdlIChFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBz
dXJmYWNlLCBFR0xpbnQgYnVmZmVyKTsKIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVn
bFJlbGVhc2VUZXhJbWFnZSAoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdM
aW50IGJ1ZmZlcik7CiBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTdXJmYWNlQXR0
cmliIChFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYXR0cmlidXRl
LCBFR0xpbnQgdmFsdWUpOwogRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU3dhcElu
dGVydmFsIChFR0xEaXNwbGF5IGRweSwgRUdMaW50IGludGVydmFsKTsKLSNlbmRpZgogI2VuZGlm
IC8qIEVHTF9WRVJTSU9OXzFfMSAqLwogCiAjaWZuZGVmIEVHTF9WRVJTSU9OXzFfMgpAQCAtMjA3
LDE1ICsxOTcsMTMgQEAgdHlwZWRlZiB2b2lkICpFR0xDbGllbnRCdWZmZXI7CiAjZGVmaW5lIEVH
TF9SR0JfQlVGRkVSICAgICAgICAgICAgICAgICAgICAweDMwOEUKICNkZWZpbmUgRUdMX1NJTkdM
RV9CVUZGRVIgICAgICAgICAgICAgICAgIDB4MzA4NQogI2RlZmluZSBFR0xfU1dBUF9CRUhBVklP
UiAgICAgICAgICAgICAgICAgMHgzMDkzCi0jZGVmaW5lIEVHTF9VTktOT1dOICAgICAgICAgICAg
ICAgICAgICAgICAoKEVHTGludCktMSkKKyNkZWZpbmUgRUdMX1VOS05PV04gICAgICAgICAgICAg
ICAgICAgICAgIEVHTF9DQVNUKEVHTGludCwtMSkKICNkZWZpbmUgRUdMX1ZFUlRJQ0FMX1JFU09M
VVRJT04gICAgICAgICAgIDB4MzA5MQotI2lmICFFR0xfU09GVF9MSU5LSU5HCiBFR0xBUEkgRUdM
Qm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xCaW5kQVBJIChFR0xlbnVtIGFwaSk7CiBFR0xBUEkgRUdM
ZW51bSBFR0xBUElFTlRSWSBlZ2xRdWVyeUFQSSAodm9pZCk7CiBFR0xBUEkgRUdMU3VyZmFjZSBF
R0xBUElFTlRSWSBlZ2xDcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlciAoRUdMRGlzcGxheSBk
cHksIEVHTGVudW0gYnVmdHlwZSwgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwgRUdMQ29uZmlnIGNv
bmZpZywgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCk7CiBFR0xBUEkgRUdMQm9vbGVhbiBFR0xB
UElFTlRSWSBlZ2xSZWxlYXNlVGhyZWFkICh2b2lkKTsKIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQ
SUVOVFJZIGVnbFdhaXRDbGllbnQgKHZvaWQpOwotI2VuZGlmCiAjZW5kaWYgLyogRUdMX1ZFUlNJ
T05fMV8yICovCiAKICNpZm5kZWYgRUdMX1ZFUlNJT05fMV8zCkBAIC0yMzYsNyArMjI0LDcgQEAg
RUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsV2FpdENsaWVudCAodm9pZCk7CiAKICNp
Zm5kZWYgRUdMX1ZFUlNJT05fMV80CiAjZGVmaW5lIEVHTF9WRVJTSU9OXzFfNCAxCi0jZGVmaW5l
IEVHTF9ERUZBVUxUX0RJU1BMQVkgICAgICAgICAgICAgICAoKEVHTE5hdGl2ZURpc3BsYXlUeXBl
KTApCisjZGVmaW5lIEVHTF9ERUZBVUxUX0RJU1BMQVkgICAgICAgICAgICAgICBFR0xfQ0FTVChF
R0xOYXRpdmVEaXNwbGF5VHlwZSwwKQogI2RlZmluZSBFR0xfTVVMVElTQU1QTEVfUkVTT0xWRV9C
T1hfQklUICAgMHgwMjAwCiAjZGVmaW5lIEVHTF9NVUxUSVNBTVBMRV9SRVNPTFZFICAgICAgICAg
ICAweDMwOTkKICNkZWZpbmUgRUdMX01VTFRJU0FNUExFX1JFU09MVkVfREVGQVVMVCAgIDB4MzA5
QQpAQCAtMjQ0LDkgKzIzMiw3IEBAIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFdh
aXRDbGllbnQgKHZvaWQpOwogI2RlZmluZSBFR0xfT1BFTkdMX0FQSSAgICAgICAgICAgICAgICAg
ICAgMHgzMEEyCiAjZGVmaW5lIEVHTF9PUEVOR0xfQklUICAgICAgICAgICAgICAgICAgICAweDAw
MDgKICNkZWZpbmUgRUdMX1NXQVBfQkVIQVZJT1JfUFJFU0VSVkVEX0JJVCAgIDB4MDQwMAotI2lm
ICFFR0xfU09GVF9MSU5LSU5HCiBFR0xBUEkgRUdMQ29udGV4dCBFR0xBUElFTlRSWSBlZ2xHZXRD
dXJyZW50Q29udGV4dCAodm9pZCk7Ci0jZW5kaWYKICNlbmRpZiAvKiBFR0xfVkVSU0lPTl8xXzQg
Ki8KIAogI2lmbmRlZiBFR0xfVkVSU0lPTl8xXzUKQEAgLTI4MCw3ICsyNjYsNyBAQCB0eXBlZGVm
IHZvaWQgKkVHTEltYWdlOwogI2RlZmluZSBFR0xfRk9SRVZFUiAgICAgICAgICAgICAgICAgICAg
ICAgMHhGRkZGRkZGRkZGRkZGRkZGdWxsCiAjZGVmaW5lIEVHTF9USU1FT1VUX0VYUElSRUQgICAg
ICAgICAgICAgICAweDMwRjUKICNkZWZpbmUgRUdMX0NPTkRJVElPTl9TQVRJU0ZJRUQgICAgICAg
ICAgIDB4MzBGNgotI2RlZmluZSBFR0xfTk9fU1lOQyAgICAgICAgICAgICAgICAgICAgICAgKChF
R0xTeW5jKTApCisjZGVmaW5lIEVHTF9OT19TWU5DICAgICAgICAgICAgICAgICAgICAgICBFR0xf
Q0FTVChFR0xTeW5jLDApCiAjZGVmaW5lIEVHTF9TWU5DX0ZFTkNFICAgICAgICAgICAgICAgICAg
ICAweDMwRjkKICNkZWZpbmUgRUdMX0dMX0NPTE9SU1BBQ0UgICAgICAgICAgICAgICAgIDB4MzA5
RAogI2RlZmluZSBFR0xfR0xfQ09MT1JTUEFDRV9TUkdCICAgICAgICAgICAgMHgzMDg5CkBAIC0y
OTcsOCArMjgzLDcgQEAgdHlwZWRlZiB2b2lkICpFR0xJbWFnZTsKICNkZWZpbmUgRUdMX0dMX1RF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiAweDMwQjcKICNkZWZpbmUgRUdMX0dMX1RFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWiAweDMwQjgKICNkZWZpbmUgRUdMX0lNQUdFX1BSRVNFUlZFRCAg
ICAgICAgICAgICAgIDB4MzBEMgotI2RlZmluZSBFR0xfTk9fSU1BR0UgICAgICAgICAgICAgICAg
ICAgICAgKChFR0xJbWFnZSkwKQotI2lmICFFR0xfU09GVF9MSU5LSU5HCisjZGVmaW5lIEVHTF9O
T19JTUFHRSAgICAgICAgICAgICAgICAgICAgICBFR0xfQ0FTVChFR0xJbWFnZSwwKQogRUdMQVBJ
IEVHTFN5bmMgRUdMQVBJRU5UUlkgZWdsQ3JlYXRlU3luYyAoRUdMRGlzcGxheSBkcHksIEVHTGVu
dW0gdHlwZSwgY29uc3QgRUdMQXR0cmliICphdHRyaWJfbGlzdCk7CiBFR0xBUEkgRUdMQm9vbGVh
biBFR0xBUElFTlRSWSBlZ2xEZXN0cm95U3luYyAoRUdMRGlzcGxheSBkcHksIEVHTFN5bmMgc3lu
Yyk7CiBFR0xBUEkgRUdMaW50IEVHTEFQSUVOVFJZIGVnbENsaWVudFdhaXRTeW5jIChFR0xEaXNw
bGF5IGRweSwgRUdMU3luYyBzeW5jLCBFR0xpbnQgZmxhZ3MsIEVHTFRpbWUgdGltZW91dCk7CkBA
IC0zMDksMTMgKzI5NCw4IEBAIEVHTEFQSSBFR0xEaXNwbGF5IEVHTEFQSUVOVFJZIGVnbEdldFBs
YXRmb3JtRGlzcGxheSAoRUdMZW51bSBwbGF0Zm9ybSwgdm9pZCAqbmF0CiBFR0xBUEkgRUdMU3Vy
ZmFjZSBFR0xBUElFTlRSWSBlZ2xDcmVhdGVQbGF0Zm9ybVdpbmRvd1N1cmZhY2UgKEVHTERpc3Bs
YXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCB2b2lkICpuYXRpdmVfd2luZG93LCBjb25zdCBFR0xB
dHRyaWIgKmF0dHJpYl9saXN0KTsKIEVHTEFQSSBFR0xTdXJmYWNlIEVHTEFQSUVOVFJZIGVnbENy
ZWF0ZVBsYXRmb3JtUGl4bWFwU3VyZmFjZSAoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25m
aWcsIHZvaWQgKm5hdGl2ZV9waXhtYXAsIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpOwog
RUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsV2FpdFN5bmMgKEVHTERpc3BsYXkgZHB5
LCBFR0xTeW5jIHN5bmMsIEVHTGludCBmbGFncyk7Ci0jZW5kaWYKICNlbmRpZiAvKiBFR0xfVkVS
U0lPTl8xXzUgKi8KIAotI2lmIEVHTF9TT0ZUX0xJTktJTkcKLSNpbmNsdWRlIDxFR0wvZWdsc29m
dGxpbmtpbmcuaD4KLSNlbmRpZgotCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsZXh0LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2xleHQuaAppbmRleCAwNjZiZjU4
NzQxMjZjMzgzYTJlODc3ODhkMTlkMWIyMTc3YmRmOTZhLi5iZmQ0MjEzNzM1NmFiY2VjNGRmMmJm
OWU4NzIwMWZmNzI0YTJmMTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9p
bmNsdWRlL0VHTC9lZ2xleHQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRl
L0VHTC9lZ2xleHQuaApAQCAtNiw3ICs2LDcgQEAgZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAogLyoK
LSoqIENvcHlyaWdodCAoYykgMjAxMy0yMDE2IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KKyoqIENv
cHlyaWdodCAoYykgMjAxMy0yMDE3IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KICoqCiAqKiBQZXJt
aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv
YnRhaW5pbmcgYQogKiogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZC9vciBhc3NvY2lhdGVkIGRv
Y3VtZW50YXRpb24gZmlsZXMgKHRoZQpAQCAtMzEsMTQgKzMxLDE0IEBAIGV4dGVybiAiQyIgewog
KiogVGhpcyBoZWFkZXIgaXMgZ2VuZXJhdGVkIGZyb20gdGhlIEtocm9ub3MgT3BlbkdMIC8gT3Bl
bkdMIEVTIFhNTAogKiogQVBJIFJlZ2lzdHJ5LiBUaGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBS
ZWdpc3RyeSwgZ2VuZXJhdG9yIHNjcmlwdHMKICoqIHVzZWQgdG8gbWFrZSB0aGUgaGVhZGVyLCBh
bmQgdGhlIGhlYWRlciBjYW4gYmUgZm91bmQgYXQKLSoqICAgaHR0cDovL3d3dy5vcGVuZ2wub3Jn
L3JlZ2lzdHJ5LworKiogICBodHRwOi8vd3d3Lm9wZW5nbC5vcmcvcmVnaXN0cnkvZWdsCiAqKgot
KiogS2hyb25vcyAkUmV2aXNpb246IDMyNDMyICQgb24gJERhdGU6IDIwMTYtMDItMDkgMjM6MDE6
MDcgLTA4MDAgKFR1ZSwgMDkgRmViIDIwMTYpICQKKyoqIEtocm9ub3MgJFJldmlzaW9uJCBvbiAk
RGF0ZSQKICovCiAKICNpbmNsdWRlIDxFR0wvZWdscGxhdGZvcm0uaD4KIAotI2RlZmluZSBFR0xf
RUdMRVhUX1ZFUlNJT04gMjAxNjAyMDkKKyNkZWZpbmUgRUdMX0VHTEVYVF9WRVJTSU9OIDIwMTYx
MjMwCiAKIC8qIEdlbmVyYXRlZCBDIGhlYWRlciBmb3I6CiAgKiBBUEk6IGVnbApAQCAtNzcsNiAr
NzcsMTMgQEAgRUdMQVBJIEVHTFN5bmNLSFIgRUdMQVBJRU5UUlkgZWdsQ3JlYXRlU3luYzY0S0hS
IChFR0xEaXNwbGF5IGRweSwgRUdMZW51bSB0eXBlLAogI2RlZmluZSBFR0xfVkdfQUxQSEFfRk9S
TUFUX1BSRV9CSVRfS0hSICAgMHgwMDQwCiAjZW5kaWYgLyogRUdMX0tIUl9jb25maWdfYXR0cmli
cyAqLwogCisjaWZuZGVmIEVHTF9LSFJfY29udGV4dF9mbHVzaF9jb250cm9sCisjZGVmaW5lIEVH
TF9LSFJfY29udGV4dF9mbHVzaF9jb250cm9sIDEKKyNkZWZpbmUgRUdMX0NPTlRFWFRfUkVMRUFT
RV9CRUhBVklPUl9OT05FX0tIUiAwCisjZGVmaW5lIEVHTF9DT05URVhUX1JFTEVBU0VfQkVIQVZJ
T1JfS0hSICAweDIwOTcKKyNkZWZpbmUgRUdMX0NPTlRFWFRfUkVMRUFTRV9CRUhBVklPUl9GTFVT
SF9LSFIgMHgyMDk4CisjZW5kaWYgLyogRUdMX0tIUl9jb250ZXh0X2ZsdXNoX2NvbnRyb2wgKi8K
KwogI2lmbmRlZiBFR0xfS0hSX2NyZWF0ZV9jb250ZXh0CiAjZGVmaW5lIEVHTF9LSFJfY3JlYXRl
X2NvbnRleHQgMQogI2RlZmluZSBFR0xfQ09OVEVYVF9NQUpPUl9WRVJTSU9OX0tIUiAgICAgMHgz
MDk4CkBAIC0xODgsNyArMTk1LDcgQEAgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWds
R2V0U3luY0F0dHJpYktIUiAoRUdMRGlzcGxheSBkcHksIEVHTFN5bmNLSFIgc3kKICNkZWZpbmUg
RUdMX0tIUl9pbWFnZSAxCiB0eXBlZGVmIHZvaWQgKkVHTEltYWdlS0hSOwogI2RlZmluZSBFR0xf
TkFUSVZFX1BJWE1BUF9LSFIgICAgICAgICAgICAgMHgzMEIwCi0jZGVmaW5lIEVHTF9OT19JTUFH
RV9LSFIgICAgICAgICAgICAgICAgICAoKEVHTEltYWdlS0hSKTApCisjZGVmaW5lIEVHTF9OT19J
TUFHRV9LSFIgICAgICAgICAgICAgICAgICBFR0xfQ0FTVChFR0xJbWFnZUtIUiwwKQogdHlwZWRl
ZiBFR0xJbWFnZUtIUiAoRUdMQVBJRU5UUllQIFBGTkVHTENSRUFURUlNQUdFS0hSUFJPQykgKEVH
TERpc3BsYXkgZHB5LCBFR0xDb250ZXh0IGN0eCwgRUdMZW51bSB0YXJnZXQsIEVHTENsaWVudEJ1
ZmZlciBidWZmZXIsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpOwogdHlwZWRlZiBFR0xCb29s
ZWFuIChFR0xBUElFTlRSWVAgUEZORUdMREVTVFJPWUlNQUdFS0hSUFJPQykgKEVHTERpc3BsYXkg
ZHB5LCBFR0xJbWFnZUtIUiBpbWFnZSk7CiAjaWZkZWYgRUdMX0VHTEVYVF9QUk9UT1RZUEVTCkBA
IC0yNTAsNiArMjU3LDE2IEBAIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFF1ZXJ5
U3VyZmFjZTY0S0hSIChFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzCiAjZW5kaWYKICNlbmRp
ZiAvKiBFR0xfS0hSX2xvY2tfc3VyZmFjZTMgKi8KIAorI2lmbmRlZiBFR0xfS0hSX211dGFibGVf
cmVuZGVyX2J1ZmZlcgorI2RlZmluZSBFR0xfS0hSX211dGFibGVfcmVuZGVyX2J1ZmZlciAxCisj
ZGVmaW5lIEVHTF9NVVRBQkxFX1JFTkRFUl9CVUZGRVJfQklUX0tIUiAweDEwMDAKKyNlbmRpZiAv
KiBFR0xfS0hSX211dGFibGVfcmVuZGVyX2J1ZmZlciAqLworCisjaWZuZGVmIEVHTF9LSFJfbm9f
Y29uZmlnX2NvbnRleHQKKyNkZWZpbmUgRUdMX0tIUl9ub19jb25maWdfY29udGV4dCAxCisjZGVm
aW5lIEVHTF9OT19DT05GSUdfS0hSICAgICAgICAgICAgICAgICBFR0xfQ0FTVChFR0xDb25maWcs
MCkKKyNlbmRpZiAvKiBFR0xfS0hSX25vX2NvbmZpZ19jb250ZXh0ICovCisKICNpZm5kZWYgRUdM
X0tIUl9wYXJ0aWFsX3VwZGF0ZQogI2RlZmluZSBFR0xfS0hSX3BhcnRpYWxfdXBkYXRlIDEKICNk
ZWZpbmUgRUdMX0JVRkZFUl9BR0VfS0hSICAgICAgICAgICAgICAgIDB4MzEzRApAQCAtMjkyLDcg
KzMwOSw3IEBAIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFNldERhbWFnZVJlZ2lv
bktIUiAoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2UKICNkZWZpbmUgRUdMX1NZTkNfUkVVU0FC
TEVfS0hSICAgICAgICAgICAgIDB4MzBGQQogI2RlZmluZSBFR0xfU1lOQ19GTFVTSF9DT01NQU5E
U19CSVRfS0hSICAgMHgwMDAxCiAjZGVmaW5lIEVHTF9GT1JFVkVSX0tIUiAgICAgICAgICAgICAg
ICAgICAweEZGRkZGRkZGRkZGRkZGRkZ1bGwKLSNkZWZpbmUgRUdMX05PX1NZTkNfS0hSICAgICAg
ICAgICAgICAgICAgICgoRUdMU3luY0tIUikwKQorI2RlZmluZSBFR0xfTk9fU1lOQ19LSFIgICAg
ICAgICAgICAgICAgICAgRUdMX0NBU1QoRUdMU3luY0tIUiwwKQogdHlwZWRlZiBFR0xCb29sZWFu
IChFR0xBUElFTlRSWVAgUEZORUdMU0lHTkFMU1lOQ0tIUlBST0MpIChFR0xEaXNwbGF5IGRweSwg
RUdMU3luY0tIUiBzeW5jLCBFR0xlbnVtIG1vZGUpOwogI2lmZGVmIEVHTF9FR0xFWFRfUFJPVE9U
WVBFUwogRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU2lnbmFsU3luY0tIUiAoRUdM
RGlzcGxheSBkcHksIEVHTFN5bmNLSFIgc3luYywgRUdMZW51bSBtb2RlKTsKQEAgLTMwNSw3ICsz
MjIsNyBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTaWduYWxTeW5jS0hSIChF
R0xEaXNwbGF5IGRweSwgRUdMU3luY0tIUiBzeW5jLAogdHlwZWRlZiB2b2lkICpFR0xTdHJlYW1L
SFI7CiB0eXBlZGVmIGtocm9ub3NfdWludDY0X3QgRUdMdWludDY0S0hSOwogI2lmZGVmIEtIUk9O
T1NfU1VQUE9SVF9JTlQ2NAotI2RlZmluZSBFR0xfTk9fU1RSRUFNX0tIUiAgICAgICAgICAgICAg
ICAgKChFR0xTdHJlYW1LSFIpMCkKKyNkZWZpbmUgRUdMX05PX1NUUkVBTV9LSFIgICAgICAgICAg
ICAgICAgIEVHTF9DQVNUKEVHTFN0cmVhbUtIUiwwKQogI2RlZmluZSBFR0xfQ09OU1VNRVJfTEFU
RU5DWV9VU0VDX0tIUiAgICAgMHgzMjEwCiAjZGVmaW5lIEVHTF9QUk9EVUNFUl9GUkFNRV9LSFIg
ICAgICAgICAgICAweDMyMTIKICNkZWZpbmUgRUdMX0NPTlNVTUVSX0ZSQU1FX0tIUiAgICAgICAg
ICAgIDB4MzIxMwpAQCAtMzMzLDYgKzM1MCwyNCBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElF
TlRSWSBlZ2xRdWVyeVN0cmVhbXU2NEtIUiAoRUdMRGlzcGxheSBkcHksIEVHTFN0cmVhbUtIUgog
I2VuZGlmIC8qIEtIUk9OT1NfU1VQUE9SVF9JTlQ2NCAqLwogI2VuZGlmIC8qIEVHTF9LSFJfc3Ry
ZWFtICovCiAKKyNpZm5kZWYgRUdMX0tIUl9zdHJlYW1fYXR0cmliCisjZGVmaW5lIEVHTF9LSFJf
c3RyZWFtX2F0dHJpYiAxCisjaWZkZWYgS0hST05PU19TVVBQT1JUX0lOVDY0Cit0eXBlZGVmIEVH
TFN0cmVhbUtIUiAoRUdMQVBJRU5UUllQIFBGTkVHTENSRUFURVNUUkVBTUFUVFJJQktIUlBST0Mp
IChFR0xEaXNwbGF5IGRweSwgY29uc3QgRUdMQXR0cmliICphdHRyaWJfbGlzdCk7Cit0eXBlZGVm
IEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xTRVRTVFJFQU1BVFRSSUJLSFJQUk9DKSAo
RUdMRGlzcGxheSBkcHksIEVHTFN0cmVhbUtIUiBzdHJlYW0sIEVHTGVudW0gYXR0cmlidXRlLCBF
R0xBdHRyaWIgdmFsdWUpOwordHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdM
UVVFUllTVFJFQU1BVFRSSUJLSFJQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTFN0cmVhbUtIUiBz
dHJlYW0sIEVHTGVudW0gYXR0cmlidXRlLCBFR0xBdHRyaWIgKnZhbHVlKTsKK3R5cGVkZWYgRUdM
Qm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTFNUUkVBTUNPTlNVTUVSQUNRVUlSRUFUVFJJQktI
UlBST0MpIChFR0xEaXNwbGF5IGRweSwgRUdMU3RyZWFtS0hSIHN0cmVhbSwgY29uc3QgRUdMQXR0
cmliICphdHRyaWJfbGlzdCk7Cit0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5F
R0xTVFJFQU1DT05TVU1FUlJFTEVBU0VBVFRSSUJLSFJQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVH
TFN0cmVhbUtIUiBzdHJlYW0sIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpOworI2lmZGVm
IEVHTF9FR0xFWFRfUFJPVE9UWVBFUworRUdMQVBJIEVHTFN0cmVhbUtIUiBFR0xBUElFTlRSWSBl
Z2xDcmVhdGVTdHJlYW1BdHRyaWJLSFIgKEVHTERpc3BsYXkgZHB5LCBjb25zdCBFR0xBdHRyaWIg
KmF0dHJpYl9saXN0KTsKK0VHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFNldFN0cmVh
bUF0dHJpYktIUiAoRUdMRGlzcGxheSBkcHksIEVHTFN0cmVhbUtIUiBzdHJlYW0sIEVHTGVudW0g
YXR0cmlidXRlLCBFR0xBdHRyaWIgdmFsdWUpOworRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5U
UlkgZWdsUXVlcnlTdHJlYW1BdHRyaWJLSFIgKEVHTERpc3BsYXkgZHB5LCBFR0xTdHJlYW1LSFIg
c3RyZWFtLCBFR0xlbnVtIGF0dHJpYnV0ZSwgRUdMQXR0cmliICp2YWx1ZSk7CitFR0xBUEkgRUdM
Qm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTdHJlYW1Db25zdW1lckFjcXVpcmVBdHRyaWJLSFIgKEVH
TERpc3BsYXkgZHB5LCBFR0xTdHJlYW1LSFIgc3RyZWFtLCBjb25zdCBFR0xBdHRyaWIgKmF0dHJp
Yl9saXN0KTsKK0VHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFN0cmVhbUNvbnN1bWVy
UmVsZWFzZUF0dHJpYktIUiAoRUdMRGlzcGxheSBkcHksIEVHTFN0cmVhbUtIUiBzdHJlYW0sIGNv
bnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpOworI2VuZGlmCisjZW5kaWYgLyogS0hST05PU19T
VVBQT1JUX0lOVDY0ICovCisjZW5kaWYgLyogRUdMX0tIUl9zdHJlYW1fYXR0cmliICovCisKICNp
Zm5kZWYgRUdMX0tIUl9zdHJlYW1fY29uc3VtZXJfZ2x0ZXh0dXJlCiAjZGVmaW5lIEVHTF9LSFJf
c3RyZWFtX2NvbnN1bWVyX2dsdGV4dHVyZSAxCiAjaWZkZWYgRUdMX0tIUl9zdHJlYW0KQEAgLTM1
Miw3ICszODcsNyBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTdHJlYW1Db25z
dW1lclJlbGVhc2VLSFIgKEVHTERpc3BsYXkgZHB5LCBFR0xTdAogI2RlZmluZSBFR0xfS0hSX3N0
cmVhbV9jcm9zc19wcm9jZXNzX2ZkIDEKIHR5cGVkZWYgaW50IEVHTE5hdGl2ZUZpbGVEZXNjcmlw
dG9yS0hSOwogI2lmZGVmIEVHTF9LSFJfc3RyZWFtCi0jZGVmaW5lIEVHTF9OT19GSUxFX0RFU0NS
SVBUT1JfS0hSICAgICAgICAoKEVHTE5hdGl2ZUZpbGVEZXNjcmlwdG9yS0hSKSgtMSkpCisjZGVm
aW5lIEVHTF9OT19GSUxFX0RFU0NSSVBUT1JfS0hSICAgICAgICBFR0xfQ0FTVChFR0xOYXRpdmVG
aWxlRGVzY3JpcHRvcktIUiwtMSkKIHR5cGVkZWYgRUdMTmF0aXZlRmlsZURlc2NyaXB0b3JLSFIg
KEVHTEFQSUVOVFJZUCBQRk5FR0xHRVRTVFJFQU1GSUxFREVTQ1JJUFRPUktIUlBST0MpIChFR0xE
aXNwbGF5IGRweSwgRUdMU3RyZWFtS0hSIHN0cmVhbSk7CiB0eXBlZGVmIEVHTFN0cmVhbUtIUiAo
RUdMQVBJRU5UUllQIFBGTkVHTENSRUFURVNUUkVBTUZST01GSUxFREVTQ1JJUFRPUktIUlBST0Mp
IChFR0xEaXNwbGF5IGRweSwgRUdMTmF0aXZlRmlsZURlc2NyaXB0b3JLSFIgZmlsZV9kZXNjcmlw
dG9yKTsKICNpZmRlZiBFR0xfRUdMRVhUX1BST1RPVFlQRVMKQEAgLTQyOSwxMSArNDY0LDI4IEBA
IEVHTEFQSSB2b2lkIEVHTEFQSUVOVFJZIGVnbFNldEJsb2JDYWNoZUZ1bmNzQU5EUk9JRCAoRUdM
RGlzcGxheSBkcHksIEVHTFNldEJsb2JGCiAjZW5kaWYKICNlbmRpZiAvKiBFR0xfQU5EUk9JRF9i
bG9iX2NhY2hlICovCiAKKyNpZm5kZWYgRUdMX0FORFJPSURfY3JlYXRlX25hdGl2ZV9jbGllbnRf
YnVmZmVyCisjZGVmaW5lIEVHTF9BTkRST0lEX2NyZWF0ZV9uYXRpdmVfY2xpZW50X2J1ZmZlciAx
CisjZGVmaW5lIEVHTF9OQVRJVkVfQlVGRkVSX1VTQUdFX0FORFJPSUQgICAweDMxNDMKKyNkZWZp
bmUgRUdMX05BVElWRV9CVUZGRVJfVVNBR0VfUFJPVEVDVEVEX0JJVF9BTkRST0lEIDB4MDAwMDAw
MDEKKyNkZWZpbmUgRUdMX05BVElWRV9CVUZGRVJfVVNBR0VfUkVOREVSQlVGRkVSX0JJVF9BTkRS
T0lEIDB4MDAwMDAwMDIKKyNkZWZpbmUgRUdMX05BVElWRV9CVUZGRVJfVVNBR0VfVEVYVFVSRV9C
SVRfQU5EUk9JRCAweDAwMDAwMDA0Cit0eXBlZGVmIEVHTENsaWVudEJ1ZmZlciAoRUdMQVBJRU5U
UllQIFBGTkVHTENSRUFURU5BVElWRUNMSUVOVEJVRkZFUkFORFJPSURQUk9DKSAoY29uc3QgRUdM
aW50ICphdHRyaWJfbGlzdCk7CisjaWZkZWYgRUdMX0VHTEVYVF9QUk9UT1RZUEVTCitFR0xBUEkg
RUdMQ2xpZW50QnVmZmVyIEVHTEFQSUVOVFJZIGVnbENyZWF0ZU5hdGl2ZUNsaWVudEJ1ZmZlckFO
RFJPSUQgKGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpOworI2VuZGlmCisjZW5kaWYgLyogRUdM
X0FORFJPSURfY3JlYXRlX25hdGl2ZV9jbGllbnRfYnVmZmVyICovCisKICNpZm5kZWYgRUdMX0FO
RFJPSURfZnJhbWVidWZmZXJfdGFyZ2V0CiAjZGVmaW5lIEVHTF9BTkRST0lEX2ZyYW1lYnVmZmVy
X3RhcmdldCAxCiAjZGVmaW5lIEVHTF9GUkFNRUJVRkZFUl9UQVJHRVRfQU5EUk9JRCAgICAweDMx
NDcKICNlbmRpZiAvKiBFR0xfQU5EUk9JRF9mcmFtZWJ1ZmZlcl90YXJnZXQgKi8KIAorI2lmbmRl
ZiBFR0xfQU5EUk9JRF9mcm9udF9idWZmZXJfYXV0b19yZWZyZXNoCisjZGVmaW5lIEVHTF9BTkRS
T0lEX2Zyb250X2J1ZmZlcl9hdXRvX3JlZnJlc2ggMQorI2RlZmluZSBFR0xfRlJPTlRfQlVGRkVS
X0FVVE9fUkVGUkVTSF9BTkRST0lEIDB4MzE0QworI2VuZGlmIC8qIEVHTF9BTkRST0lEX2Zyb250
X2J1ZmZlcl9hdXRvX3JlZnJlc2ggKi8KKwogI2lmbmRlZiBFR0xfQU5EUk9JRF9pbWFnZV9uYXRp
dmVfYnVmZmVyCiAjZGVmaW5lIEVHTF9BTkRST0lEX2ltYWdlX25hdGl2ZV9idWZmZXIgMQogI2Rl
ZmluZSBFR0xfTkFUSVZFX0JVRkZFUl9BTkRST0lEICAgICAgICAgMHgzMTQwCkBAIC00NTEsMTEg
KzUwMywyNSBAQCBFR0xBUEkgRUdMaW50IEVHTEFQSUVOVFJZIGVnbER1cE5hdGl2ZUZlbmNlRkRB
TkRST0lEIChFR0xEaXNwbGF5IGRweSwgRUdMU3luY0tIUgogI2VuZGlmCiAjZW5kaWYgLyogRUdM
X0FORFJPSURfbmF0aXZlX2ZlbmNlX3N5bmMgKi8KIAorI2lmbmRlZiBFR0xfQU5EUk9JRF9wcmVz
ZW50YXRpb25fdGltZQorI2RlZmluZSBFR0xfQU5EUk9JRF9wcmVzZW50YXRpb25fdGltZSAxCit0
eXBlZGVmIGtocm9ub3Nfc3RpbWVfbmFub3NlY29uZHNfdCBFR0xuc2Vjc0FORFJPSUQ7Cit0eXBl
ZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xQUkVTRU5UQVRJT05USU1FQU5EUk9J
RFBST0MpIChFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xuc2Vjc0FORFJP
SUQgdGltZSk7CisjaWZkZWYgRUdMX0VHTEVYVF9QUk9UT1RZUEVTCitFR0xBUEkgRUdMQm9vbGVh
biBFR0xBUElFTlRSWSBlZ2xQcmVzZW50YXRpb25UaW1lQU5EUk9JRCAoRUdMRGlzcGxheSBkcHks
IEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMbnNlY3NBTkRST0lEIHRpbWUpOworI2VuZGlmCisjZW5k
aWYgLyogRUdMX0FORFJPSURfcHJlc2VudGF0aW9uX3RpbWUgKi8KKwogI2lmbmRlZiBFR0xfQU5E
Uk9JRF9yZWNvcmRhYmxlCiAjZGVmaW5lIEVHTF9BTkRST0lEX3JlY29yZGFibGUgMQogI2RlZmlu
ZSBFR0xfUkVDT1JEQUJMRV9BTkRST0lEICAgICAgICAgICAgMHgzMTQyCiAjZW5kaWYgLyogRUdM
X0FORFJPSURfcmVjb3JkYWJsZSAqLwogCisjaWZuZGVmIEVHTF9BTkdMRV9jcmVhdGVfY29udGV4
dF9yb2J1c3RfcmVzb3VyY2VfaW5pdGlhbGl6YXRpb24KKyNkZWZpbmUgRUdMX0FOR0xFX2NyZWF0
ZV9jb250ZXh0X3JvYnVzdF9yZXNvdXJjZV9pbml0aWFsaXphdGlvbiAxCisjZGVmaW5lIEVHTF9D
T05URVhUX1JPQlVTVF9SRVNPVVJDRV9JTklUSUFMSVpBVElPTl9BTkdMRSAweDMyMEYKKyNlbmRp
ZiAvKiBFR0xfQU5HTEVfY3JlYXRlX2NvbnRleHRfcm9idXN0X3Jlc291cmNlX2luaXRpYWxpemF0
aW9uICovCisKICNpZm5kZWYgRUdMX0FOR0xFX2QzZF9zaGFyZV9oYW5kbGVfY2xpZW50X2J1ZmZl
cgogI2RlZmluZSBFR0xfQU5HTEVfZDNkX3NoYXJlX2hhbmRsZV9jbGllbnRfYnVmZmVyIDEKICNk
ZWZpbmUgRUdMX0QzRF9URVhUVVJFXzJEX1NIQVJFX0hBTkRMRV9BTkdMRSAweDMyMDAKQEAgLTQ3
Miw2ICs1MzgsMTEgQEAgRUdMQVBJIEVHTGludCBFR0xBUElFTlRSWSBlZ2xEdXBOYXRpdmVGZW5j
ZUZEQU5EUk9JRCAoRUdMRGlzcGxheSBkcHksIEVHTFN5bmNLSFIKICNkZWZpbmUgRUdMX0RYR0lf
S0VZRURfTVVURVhfQU5HTEUgICAgICAgIDB4MzNBMgogI2VuZGlmIC8qIEVHTF9BTkdMRV9rZXll
ZF9tdXRleCAqLwogCisjaWZuZGVmIEVHTF9BTkdMRV9kM2RfdGV4dHVyZV9jbGllbnRfYnVmZmVy
CisjZGVmaW5lIEVHTF9BTkdMRV9kM2RfdGV4dHVyZV9jbGllbnRfYnVmZmVyIDEKKyNkZWZpbmUg
RUdMX0QzRF9URVhUVVJFX0FOR0xFICAgICAgICAgICAgIDB4MzNBMworI2VuZGlmIC8qIEVHTF9B
TkdMRV9kM2RfdGV4dHVyZV9jbGllbnRfYnVmZmVyICovCisKICNpZm5kZWYgRUdMX0FOR0xFX3F1
ZXJ5X3N1cmZhY2VfcG9pbnRlcgogI2RlZmluZSBFR0xfQU5HTEVfcXVlcnlfc3VyZmFjZV9wb2lu
dGVyIDEKIHR5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTFFVRVJZU1VSRkFD
RVBPSU5URVJBTkdMRVBST0MpIChFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBF
R0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpOwpAQCAtNTMxLDYgKzYwMiwxMiBAQCBFR0xB
UEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xRdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUgKEVH
TERpc3BsYXkgZHB5LCBFR0xTdQogI2RlZmluZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9OVUxM
X0FOR0xFIDB4MzNBRQogI2VuZGlmIC8qIEVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9udWxsICov
CiAKKyNpZm5kZWYgRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX3Z1bGthbgorI2RlZmluZSBFR0xf
QU5HTEVfcGxhdGZvcm1fYW5nbGVfdnVsa2FuIDEKKyNkZWZpbmUgRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfVlVMS0FOX0FOR0xFIDB4MzQ1MAorI2RlZmluZSBFR0xfUExBVEZPUk1fQU5HTEVfRU5B
QkxFX1ZBTElEQVRJT05fTEFZRVJfQU5HTEUgMHgzNDUxCisjZW5kaWYgLyogRUdMX0FOR0xFX3Bs
YXRmb3JtX2FuZ2xlX3Z1bGthbiAqLworCiAjaWZuZGVmIEVHTF9BTkdMRV93aW5kb3dfZml4ZWRf
c2l6ZQogI2RlZmluZSBFR0xfQU5HTEVfd2luZG93X2ZpeGVkX3NpemUgMQogI2RlZmluZSBFR0xf
RklYRURfU0laRV9BTkdMRSAgICAgICAgICAgICAgMHgzMjAxCkBAIC01NjMsNyArNjQwLDcgQEAg
RUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsUXVlcnlTdXJmYWNlUG9pbnRlckFOR0xF
IChFR0xEaXNwbGF5IGRweSwgRUdMU3UKIAogI2lmbmRlZiBFR0xfQU5HTEVfc3RyZWFtX3Byb2R1
Y2VyX2QzZF90ZXh0dXJlX252MTIKICNkZWZpbmUgRUdMX0FOR0xFX3N0cmVhbV9wcm9kdWNlcl9k
M2RfdGV4dHVyZV9udjEyCi0jZGVmaW5lIEVHTF9EM0RfVEVYVFVSRV9TVUJSRVNPVVJDRV9JRF9B
TkdMRSAweDNBQUIKKyNkZWZpbmUgRUdMX0QzRF9URVhUVVJFX1NVQlJFU09VUkNFX0lEX0FOR0xF
IDB4MzNBQgogdHlwZWRlZiBFR0xCb29sZWFuKEVHTEFQSUVOVFJZUCBQRk5FR0xDUkVBVEVTVFJF
QU1QUk9EVUNFUkQzRFRFWFRVUkVOVjEyQU5HTEVQUk9DKShFR0xEaXNwbGF5IGRweSwgRUdMU3Ry
ZWFtS0hSIHN0cmVhbSwgY29uc3QgRUdMQXR0cmliICphdHRyaWJfbGlzdCk7CiB0eXBlZGVmIEVH
TEJvb2xlYW4oRUdMQVBJRU5UUllQIFBGTkVHTFNUUkVBTVBPU1REM0RURVhUVVJFTlYxMkFOR0xF
UFJPQykoRUdMRGlzcGxheSBkcHksIEVHTFN0cmVhbUtIUiBzdHJlYW0sIHZvaWQgKnRleHR1cmUs
IGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpOwogI2lmZGVmIEVHTF9FR0xFWFRfUFJPVE9U
WVBFUwpAQCAtNTc3LDExICs2NTQsMjYgQEAgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkg
ZWdsU3RyZWFtUG9zdEQzRFRleHR1cmVOVjEyQU5HTEUoRUdMRGlzcGxheSBkcHksIEUKICNkZWZp
bmUgRUdMX0NPTlRFWFRfV0VCR0xfQ09NUEFUSUJJTElUWV9BTkdMRSAweDNBQUMKICNlbmRpZiAv
KiBFR0xfQU5HTEVfY3JlYXRlX2NvbnRleHRfd2ViZ2xfY29tcGF0aWJpbGl0eSAqLwogCisjaWZu
ZGVmIEVHTF9BTkdMRV9kaXNwbGF5X3RleHR1cmVfc2hhcmVfZ3JvdXAKKyNkZWZpbmUgRUdMX0FO
R0xFX2Rpc3BsYXlfdGV4dHVyZV9zaGFyZV9ncm91cCAxCisjZGVmaW5lIEVHTF9ESVNQTEFZX1RF
WFRVUkVfU0hBUkVfR1JPVVBfQU5HTEUgMHgzQUFGCisjZW5kaWYgLyogRUdMX0FOR0xFX2Rpc3Bs
YXlfdGV4dHVyZV9zaGFyZV9ncm91cCAqLworCiAjaWZuZGVmIEVHTF9DSFJPTUlVTV9jcmVhdGVf
Y29udGV4dF9iaW5kX2dlbmVyYXRlc19yZXNvdXJjZQogI2RlZmluZSBFR0xfQ0hST01JVU1fY3Jl
YXRlX2NvbnRleHRfYmluZF9nZW5lcmF0ZXNfcmVzb3VyY2UgMQogI2RlZmluZSBFR0xfQ09OVEVY
VF9CSU5EX0dFTkVSQVRFU19SRVNPVVJDRV9DSFJPTUlVTSAweDNBQUQKICNlbmRpZiAvKiBFR0xf
Q0hST01JVU1fY3JlYXRlX2NvbnRleHRfYmluZF9nZW5lcmF0ZXNfcmVzb3VyY2UgKi8KIAorI2lm
bmRlZiBFR0xfQU5HTEVfY3JlYXRlX2NvbnRleHRfY2xpZW50X2FycmF5cworI2RlZmluZSBFR0xf
QU5HTEVfY3JlYXRlX2NvbnRleHRfY2xpZW50X2FycmF5cyAxCisjZGVmaW5lIEVHTF9DT05URVhU
X0NMSUVOVF9BUlJBWVNfRU5BQkxFRF9BTkdMRSAweDM0NTIKKyNlbmRpZiAvKiBFR0xfQU5HTEVf
Y3JlYXRlX2NvbnRleHRfY2xpZW50X2FycmF5cyAqLworCisjaWZuZGVmIEVHTF9BUk1faW1wbGlj
aXRfZXh0ZXJuYWxfc3luYworI2RlZmluZSBFR0xfQVJNX2ltcGxpY2l0X2V4dGVybmFsX3N5bmMg
MQorI2RlZmluZSBFR0xfU1lOQ19QUklPUl9DT01NQU5EU19JTVBMSUNJVF9FWFRFUk5BTF9BUk0g
MHgzMjhBCisjZW5kaWYgLyogRUdMX0FSTV9pbXBsaWNpdF9leHRlcm5hbF9zeW5jICovCisKICNp
Zm5kZWYgRUdMX0FSTV9waXhtYXBfbXVsdGlzYW1wbGVfZGlzY2FyZAogI2RlZmluZSBFR0xfQVJN
X3BpeG1hcF9tdWx0aXNhbXBsZV9kaXNjYXJkIDEKICNkZWZpbmUgRUdMX0RJU0NBUkRfU0FNUExF
U19BUk0gICAgICAgICAgIDB4MzI4NgpAQCAtNjA3LDcgKzY5OSw3IEBAIEVHTEFQSSBFR0xCb29s
ZWFuIEVHTEFQSUVOVFJZIGVnbFN0cmVhbVBvc3REM0RUZXh0dXJlTlYxMkFOR0xFKEVHTERpc3Bs
YXkgZHB5LCBFCiAjaWZuZGVmIEVHTF9FWFRfZGV2aWNlX2Jhc2UKICNkZWZpbmUgRUdMX0VYVF9k
ZXZpY2VfYmFzZSAxCiB0eXBlZGVmIHZvaWQgKkVHTERldmljZUVYVDsKLSNkZWZpbmUgRUdMX05P
X0RFVklDRV9FWFQgICAgICAgICAgICAgICAgICgoRUdMRGV2aWNlRVhUKSgwKSkKKyNkZWZpbmUg
RUdMX05PX0RFVklDRV9FWFQgICAgICAgICAgICAgICAgIEVHTF9DQVNUKEVHTERldmljZUVYVCww
KQogI2RlZmluZSBFR0xfQkFEX0RFVklDRV9FWFQgICAgICAgICAgICAgICAgMHgzMjJCCiAjZGVm
aW5lIEVHTF9ERVZJQ0VfRVhUICAgICAgICAgICAgICAgICAgICAweDMyMkMKIHR5cGVkZWYgRUdM
Qm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTFFVRVJZREVWSUNFQVRUUklCRVhUUFJPQykgKEVH
TERldmljZUVYVCBkZXZpY2UsIEVHTGludCBhdHRyaWJ1dGUsIEVHTEF0dHJpYiAqdmFsdWUpOwpA
QCAtNjI0LDExICs3MTYsMTEgQEAgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsUXVl
cnlEaXNwbGF5QXR0cmliRVhUIChFR0xEaXNwbGF5IGRweSwgRUdMaW50IGEKIAogI2lmbmRlZiBF
R0xfQU5HTEVfZGV2aWNlX2NyZWF0aW9uCiAjZGVmaW5lIEVHTF9BTkdMRV9kZXZpY2VfY3JlYXRp
b24gMQotdHlwZWRlZiBFR0xEZXZpY2VFWFQgKEVHTEFQSUVOVFJZUCBQRk5FR0xDUkVBVEVERVZJ
Q0VBTkdMRVBST0MpIChFR0xpbnQgZGV2aWNlX3R5cGUsIHZvaWQgKm5hdGl2ZV9kZXZpY2UsIGNv
bnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpOwotdHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElF
TlRSWVAgUEZORUdMUkVMRUFTRURFVklDRUFOR0xFUFJPQykgKEVHTERldmljZUVYVCBkZXZpY2Up
OwordHlwZWRlZiBFR0xEZXZpY2VFWFQoRUdMQVBJRU5UUllQIFBGTkVHTENSRUFURURFVklDRUFO
R0xFUFJPQykgKEVHTGludCBkZXZpY2VfdHlwZSwgdm9pZCAqbmF0aXZlX2RldmljZSwgY29uc3Qg
RUdMQXR0cmliICphdHRyaWJfbGlzdCk7Cit0eXBlZGVmIEVHTEJvb2xlYW4oRUdMQVBJRU5UUllQ
IFBGTkVHTFJFTEVBU0VERVZJQ0VBTkdMRVBST0MpIChFR0xEZXZpY2VFWFQgZGV2aWNlKTsKICNp
ZmRlZiBFR0xfRUdMRVhUX1BST1RPVFlQRVMKLUVHTEFQSSBFR0xEZXZpY2VFWFQgRUdMQVBJRU5U
UlkgZWdsQ3JlYXRlRGV2aWNlQU5HTEUgKEVHTGludCBkZXZpY2VfdHlwZSwgdm9pZCAqbmF0aXZl
X2RldmljZSwgY29uc3QgRUdMQXR0cmliICphdHRyaWJfbGlzdCk7Ci1FR0xBUEkgRUdMQm9vbGVh
biBFR0xBUElFTlRSWSBlZ2xSZWxlYXNlRGV2aWNlQU5HTEUgKEVHTERldmljZUVYVCBkZXZpY2Up
OworRUdMQVBJIEVHTERldmljZUVYVCBFR0xBUElFTlRSWSBlZ2xDcmVhdGVEZXZpY2VBTkdMRShF
R0xpbnQgZGV2aWNlX3R5cGUsIHZvaWQgKm5hdGl2ZV9kZXZpY2UsIGNvbnN0IEVHTEF0dHJpYiAq
YXR0cmliX2xpc3QpOworRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsUmVsZWFzZURl
dmljZUFOR0xFKEVHTERldmljZUVYVCBkZXZpY2UpOwogI2VuZGlmCiAjZW5kaWYgLyogRUdMX0FO
R0xFX2RldmljZV9jcmVhdGlvbiAqLwogCkBAIC02NTAsNiArNzQyLDIxIEBAIEVHTEFQSSBFR0xC
b29sZWFuIEVHTEFQSUVOVFJZIGVnbFJlbGVhc2VEZXZpY2VBTkdMRSAoRUdMRGV2aWNlRVhUIGRl
dmljZSk7CiAjZGVmaW5lIEVHTF9FWFRfZGV2aWNlX3F1ZXJ5IDEKICNlbmRpZiAvKiBFR0xfRVhU
X2RldmljZV9xdWVyeSAqLwogCisjaWZuZGVmIEVHTF9FWFRfZ2xfY29sb3JzcGFjZV9idDIwMjBf
bGluZWFyCisjZGVmaW5lIEVHTF9FWFRfZ2xfY29sb3JzcGFjZV9idDIwMjBfbGluZWFyIDEKKyNk
ZWZpbmUgRUdMX0dMX0NPTE9SU1BBQ0VfQlQyMDIwX0xJTkVBUl9FWFQgMHgzMzNGCisjZW5kaWYg
LyogRUdMX0VYVF9nbF9jb2xvcnNwYWNlX2J0MjAyMF9saW5lYXIgKi8KKworI2lmbmRlZiBFR0xf
RVhUX2dsX2NvbG9yc3BhY2VfYnQyMDIwX3BxCisjZGVmaW5lIEVHTF9FWFRfZ2xfY29sb3JzcGFj
ZV9idDIwMjBfcHEgMQorI2RlZmluZSBFR0xfR0xfQ09MT1JTUEFDRV9CVDIwMjBfUFFfRVhUICAg
MHgzMzQwCisjZW5kaWYgLyogRUdMX0VYVF9nbF9jb2xvcnNwYWNlX2J0MjAyMF9wcSAqLworCisj
aWZuZGVmIEVHTF9FWFRfZ2xfY29sb3JzcGFjZV9zY3JnYl9saW5lYXIKKyNkZWZpbmUgRUdMX0VY
VF9nbF9jb2xvcnNwYWNlX3NjcmdiX2xpbmVhciAxCisjZGVmaW5lIEVHTF9HTF9DT0xPUlNQQUNF
X1NDUkdCX0xJTkVBUl9FWFQgMHgzMzUwCisjZW5kaWYgLyogRUdMX0VYVF9nbF9jb2xvcnNwYWNl
X3NjcmdiX2xpbmVhciAqLworCiAjaWZuZGVmIEVHTF9FWFRfaW1hZ2VfZG1hX2J1Zl9pbXBvcnQK
ICNkZWZpbmUgRUdMX0VYVF9pbWFnZV9kbWFfYnVmX2ltcG9ydCAxCiAjZGVmaW5lIEVHTF9MSU5V
WF9ETUFfQlVGX0VYVCAgICAgICAgICAgICAweDMyNzAKQEAgLTY3Niw2ICs3ODMsMjcgQEAgRUdM
QVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsUmVsZWFzZURldmljZUFOR0xFIChFR0xEZXZp
Y2VFWFQgZGV2aWNlKTsKICNkZWZpbmUgRUdMX1lVVl9DSFJPTUFfU0lUSU5HXzBfNV9FWFQgICAg
IDB4MzI4NQogI2VuZGlmIC8qIEVHTF9FWFRfaW1hZ2VfZG1hX2J1Zl9pbXBvcnQgKi8KIAorI2lm
bmRlZiBFR0xfRVhUX2ltYWdlX2RtYV9idWZfaW1wb3J0X21vZGlmaWVycworI2RlZmluZSBFR0xf
RVhUX2ltYWdlX2RtYV9idWZfaW1wb3J0X21vZGlmaWVycyAxCisjZGVmaW5lIEVHTF9ETUFfQlVG
X1BMQU5FM19GRF9FWFQgICAgICAgICAweDM0NDAKKyNkZWZpbmUgRUdMX0RNQV9CVUZfUExBTkUz
X09GRlNFVF9FWFQgICAgIDB4MzQ0MQorI2RlZmluZSBFR0xfRE1BX0JVRl9QTEFORTNfUElUQ0hf
RVhUICAgICAgMHgzNDQyCisjZGVmaW5lIEVHTF9ETUFfQlVGX1BMQU5FMF9NT0RJRklFUl9MT19F
WFQgMHgzNDQzCisjZGVmaW5lIEVHTF9ETUFfQlVGX1BMQU5FMF9NT0RJRklFUl9ISV9FWFQgMHgz
NDQ0CisjZGVmaW5lIEVHTF9ETUFfQlVGX1BMQU5FMV9NT0RJRklFUl9MT19FWFQgMHgzNDQ1Cisj
ZGVmaW5lIEVHTF9ETUFfQlVGX1BMQU5FMV9NT0RJRklFUl9ISV9FWFQgMHgzNDQ2CisjZGVmaW5l
IEVHTF9ETUFfQlVGX1BMQU5FMl9NT0RJRklFUl9MT19FWFQgMHgzNDQ3CisjZGVmaW5lIEVHTF9E
TUFfQlVGX1BMQU5FMl9NT0RJRklFUl9ISV9FWFQgMHgzNDQ4CisjZGVmaW5lIEVHTF9ETUFfQlVG
X1BMQU5FM19NT0RJRklFUl9MT19FWFQgMHgzNDQ5CisjZGVmaW5lIEVHTF9ETUFfQlVGX1BMQU5F
M19NT0RJRklFUl9ISV9FWFQgMHgzNDRBCit0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZ
UCBQRk5FR0xRVUVSWURNQUJVRkZPUk1BVFNFWFRQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTGlu
dCBtYXhfZm9ybWF0cywgRUdMaW50ICpmb3JtYXRzLCBFR0xpbnQgKm51bV9mb3JtYXRzKTsKK3R5
cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTFFVRVJZRE1BQlVGTU9ESUZJRVJT
RVhUUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0xpbnQgZm9ybWF0LCBFR0xpbnQgbWF4X21vZGlm
aWVycywgRUdMdWludDY0S0hSICptb2RpZmllcnMsIEVHTEJvb2xlYW4gKmV4dGVybmFsX29ubHks
IEVHTGludCAqbnVtX21vZGlmaWVycyk7CisjaWZkZWYgRUdMX0VHTEVYVF9QUk9UT1RZUEVTCitF
R0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xRdWVyeURtYUJ1ZkZvcm1hdHNFWFQgKEVH
TERpc3BsYXkgZHB5LCBFR0xpbnQgbWF4X2Zvcm1hdHMsIEVHTGludCAqZm9ybWF0cywgRUdMaW50
ICpudW1fZm9ybWF0cyk7CitFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xRdWVyeURt
YUJ1Zk1vZGlmaWVyc0VYVCAoRUdMRGlzcGxheSBkcHksIEVHTGludCBmb3JtYXQsIEVHTGludCBt
YXhfbW9kaWZpZXJzLCBFR0x1aW50NjRLSFIgKm1vZGlmaWVycywgRUdMQm9vbGVhbiAqZXh0ZXJu
YWxfb25seSwgRUdMaW50ICpudW1fbW9kaWZpZXJzKTsKKyNlbmRpZgorI2VuZGlmIC8qIEVHTF9F
WFRfaW1hZ2VfZG1hX2J1Zl9pbXBvcnRfbW9kaWZpZXJzICovCisKICNpZm5kZWYgRUdMX0VYVF9t
dWx0aXZpZXdfd2luZG93CiAjZGVmaW5lIEVHTF9FWFRfbXVsdGl2aWV3X3dpbmRvdyAxCiAjZGVm
aW5lIEVHTF9NVUxUSVZJRVdfVklFV19DT1VOVF9FWFQgICAgICAweDMxMzQKQEAgLTY4NSw4ICs4
MTMsOCBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xSZWxlYXNlRGV2aWNlQU5H
TEUgKEVHTERldmljZUVYVCBkZXZpY2UpOwogI2RlZmluZSBFR0xfRVhUX291dHB1dF9iYXNlIDEK
IHR5cGVkZWYgdm9pZCAqRUdMT3V0cHV0TGF5ZXJFWFQ7CiB0eXBlZGVmIHZvaWQgKkVHTE91dHB1
dFBvcnRFWFQ7Ci0jZGVmaW5lIEVHTF9OT19PVVRQVVRfTEFZRVJfRVhUICAgICAgICAgICAoKEVH
TE91dHB1dExheWVyRVhUKTApCi0jZGVmaW5lIEVHTF9OT19PVVRQVVRfUE9SVF9FWFQgICAgICAg
ICAgICAoKEVHTE91dHB1dFBvcnRFWFQpMCkKKyNkZWZpbmUgRUdMX05PX09VVFBVVF9MQVlFUl9F
WFQgICAgICAgICAgIEVHTF9DQVNUKEVHTE91dHB1dExheWVyRVhULDApCisjZGVmaW5lIEVHTF9O
T19PVVRQVVRfUE9SVF9FWFQgICAgICAgICAgICBFR0xfQ0FTVChFR0xPdXRwdXRQb3J0RVhULDAp
CiAjZGVmaW5lIEVHTF9CQURfT1VUUFVUX0xBWUVSX0VYVCAgICAgICAgICAweDMyMkQKICNkZWZp
bmUgRUdMX0JBRF9PVVRQVVRfUE9SVF9FWFQgICAgICAgICAgIDB4MzIyRQogI2RlZmluZSBFR0xf
U1dBUF9JTlRFUlZBTF9FWFQgICAgICAgICAgICAgMHgzMjJGCkBAIC03MjMsNiArODUxLDEzIEBA
IEVHTEFQSSBjb25zdCBjaGFyICpFR0xBUElFTlRSWSBlZ2xRdWVyeU91dHB1dFBvcnRTdHJpbmdF
WFQgKEVHTERpc3BsYXkgZHB5LCBFR0xPCiAjZGVmaW5lIEVHTF9PUEVOV0ZfUE9SVF9JRF9FWFQg
ICAgICAgICAgICAweDMyMzkKICNlbmRpZiAvKiBFR0xfRVhUX291dHB1dF9vcGVud2YgKi8KIAor
I2lmbmRlZiBFR0xfRVhUX3BpeGVsX2Zvcm1hdF9mbG9hdAorI2RlZmluZSBFR0xfRVhUX3BpeGVs
X2Zvcm1hdF9mbG9hdCAxCisjZGVmaW5lIEVHTF9DT0xPUl9DT01QT05FTlRfVFlQRV9FWFQgICAg
ICAweDMzMzkKKyNkZWZpbmUgRUdMX0NPTE9SX0NPTVBPTkVOVF9UWVBFX0ZJWEVEX0VYVCAweDMz
M0EKKyNkZWZpbmUgRUdMX0NPTE9SX0NPTVBPTkVOVF9UWVBFX0ZMT0FUX0VYVCAweDMzM0IKKyNl
bmRpZiAvKiBFR0xfRVhUX3BpeGVsX2Zvcm1hdF9mbG9hdCAqLworCiAjaWZuZGVmIEVHTF9FWFRf
cGxhdGZvcm1fYmFzZQogI2RlZmluZSBFR0xfRVhUX3BsYXRmb3JtX2Jhc2UgMQogdHlwZWRlZiBF
R0xEaXNwbGF5IChFR0xBUElFTlRSWVAgUEZORUdMR0VUUExBVEZPUk1ESVNQTEFZRVhUUFJPQykg
KEVHTGVudW0gcGxhdGZvcm0sIHZvaWQgKm5hdGl2ZV9kaXNwbGF5LCBjb25zdCBFR0xpbnQgKmF0
dHJpYl9saXN0KTsKQEAgLTc1MSw5ICs4ODYsMTMgQEAgRUdMQVBJIEVHTFN1cmZhY2UgRUdMQVBJ
RU5UUlkgZWdsQ3JlYXRlUGxhdGZvcm1QaXhtYXBTdXJmYWNlRVhUIChFR0xEaXNwbGF5IGRweSwK
ICNkZWZpbmUgRUdMX1BMQVRGT1JNX1gxMV9TQ1JFRU5fRVhUICAgICAgIDB4MzFENgogI2VuZGlm
IC8qIEVHTF9FWFRfcGxhdGZvcm1feDExICovCiAKKyNpZm5kZWYgRUdMX0VYVF9wcm90ZWN0ZWRf
Y29udGVudAorI2RlZmluZSBFR0xfRVhUX3Byb3RlY3RlZF9jb250ZW50IDEKKyNkZWZpbmUgRUdM
X1BST1RFQ1RFRF9DT05URU5UX0VYVCAgICAgICAgIDB4MzJDMAorI2VuZGlmIC8qIEVHTF9FWFRf
cHJvdGVjdGVkX2NvbnRlbnQgKi8KKwogI2lmbmRlZiBFR0xfRVhUX3Byb3RlY3RlZF9zdXJmYWNl
CiAjZGVmaW5lIEVHTF9FWFRfcHJvdGVjdGVkX3N1cmZhY2UgMQotI2RlZmluZSBFR0xfUFJPVEVD
VEVEX0NPTlRFTlRfRVhUICAgICAgICAgMHgzMkMwCiAjZW5kaWYgLyogRUdMX0VYVF9wcm90ZWN0
ZWRfc3VyZmFjZSAqLwogCiAjaWZuZGVmIEVHTF9FWFRfc3RyZWFtX2NvbnN1bWVyX2VnbG91dHB1
dApAQCAtNzY0LDYgKzkwMywyMCBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xT
dHJlYW1Db25zdW1lck91dHB1dEVYVCAoRUdMRGlzcGxheSBkcHksIEVHTFN0cgogI2VuZGlmCiAj
ZW5kaWYgLyogRUdMX0VYVF9zdHJlYW1fY29uc3VtZXJfZWdsb3V0cHV0ICovCiAKKyNpZm5kZWYg
RUdMX0VYVF9zdXJmYWNlX1NNUFRFMjA4Nl9tZXRhZGF0YQorI2RlZmluZSBFR0xfRVhUX3N1cmZh
Y2VfU01QVEUyMDg2X21ldGFkYXRhIDEKKyNkZWZpbmUgRUdMX1NNUFRFMjA4Nl9ESVNQTEFZX1BS
SU1BUllfUlhfRVhUIDB4MzM0MQorI2RlZmluZSBFR0xfU01QVEUyMDg2X0RJU1BMQVlfUFJJTUFS
WV9SWV9FWFQgMHgzMzQyCisjZGVmaW5lIEVHTF9TTVBURTIwODZfRElTUExBWV9QUklNQVJZX0dY
X0VYVCAweDMzNDMKKyNkZWZpbmUgRUdMX1NNUFRFMjA4Nl9ESVNQTEFZX1BSSU1BUllfR1lfRVhU
IDB4MzM0NAorI2RlZmluZSBFR0xfU01QVEUyMDg2X0RJU1BMQVlfUFJJTUFSWV9CWF9FWFQgMHgz
MzQ1CisjZGVmaW5lIEVHTF9TTVBURTIwODZfRElTUExBWV9QUklNQVJZX0JZX0VYVCAweDMzNDYK
KyNkZWZpbmUgRUdMX1NNUFRFMjA4Nl9XSElURV9QT0lOVF9YX0VYVCAgIDB4MzM0NworI2RlZmlu
ZSBFR0xfU01QVEUyMDg2X1dISVRFX1BPSU5UX1lfRVhUICAgMHgzMzQ4CisjZGVmaW5lIEVHTF9T
TVBURTIwODZfTUFYX0xVTUlOQU5DRV9FWFQgICAweDMzNDkKKyNkZWZpbmUgRUdMX1NNUFRFMjA4
Nl9NSU5fTFVNSU5BTkNFX0VYVCAgIDB4MzM0QQorI2VuZGlmIC8qIEVHTF9FWFRfc3VyZmFjZV9T
TVBURTIwODZfbWV0YWRhdGEgKi8KKwogI2lmbmRlZiBFR0xfRVhUX3N3YXBfYnVmZmVyc193aXRo
X2RhbWFnZQogI2RlZmluZSBFR0xfRVhUX3N3YXBfYnVmZmVyc193aXRoX2RhbWFnZSAxCiB0eXBl
ZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xTV0FQQlVGRkVSU1dJVEhEQU1BR0VF
WFRQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50ICpyZWN0
cywgRUdMaW50IG5fcmVjdHMpOwpAQCAtODcwLDYgKzEwMjMsMTEgQEAgRUdMQVBJIEVHTEJvb2xl
YW4gRUdMQVBJRU5UUlkgZWdsRXhwb3J0RE1BQlVGSW1hZ2VNRVNBIChFR0xEaXNwbGF5IGRweSwg
RUdMSW1hZ2UKICNkZWZpbmUgRUdMX1BMQVRGT1JNX0dCTV9NRVNBICAgICAgICAgICAgIDB4MzFE
NwogI2VuZGlmIC8qIEVHTF9NRVNBX3BsYXRmb3JtX2dibSAqLwogCisjaWZuZGVmIEVHTF9NRVNB
X3BsYXRmb3JtX3N1cmZhY2VsZXNzCisjZGVmaW5lIEVHTF9NRVNBX3BsYXRmb3JtX3N1cmZhY2Vs
ZXNzIDEKKyNkZWZpbmUgRUdMX1BMQVRGT1JNX1NVUkZBQ0VMRVNTX01FU0EgICAgIDB4MzFERAor
I2VuZGlmIC8qIEVHTF9NRVNBX3BsYXRmb3JtX3N1cmZhY2VsZXNzICovCisKICNpZm5kZWYgRUdM
X05PS19zd2FwX3JlZ2lvbgogI2RlZmluZSBFR0xfTk9LX3N3YXBfcmVnaW9uIDEKIHR5cGVkZWYg
RUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTFNXQVBCVUZGRVJTUkVHSU9OTk9LUFJPQykg
KEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBudW1SZWN0cywgY29u
c3QgRUdMaW50ICpyZWN0cyk7CkBAIC05NTMsNiArMTExMSwxMSBAQCBFR0xBUEkgRUdMQm9vbGVh
biBFR0xBUElFTlRSWSBlZ2xQb3N0U3ViQnVmZmVyTlYgKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJm
YWNlIHN1cgogI2VuZGlmCiAjZW5kaWYgLyogRUdMX05WX3Bvc3Rfc3ViX2J1ZmZlciAqLwogCisj
aWZuZGVmIEVHTF9OVl9yb2J1c3RuZXNzX3ZpZGVvX21lbW9yeV9wdXJnZQorI2RlZmluZSBFR0xf
TlZfcm9idXN0bmVzc192aWRlb19tZW1vcnlfcHVyZ2UgMQorI2RlZmluZSBFR0xfR0VORVJBVEVf
UkVTRVRfT05fVklERU9fTUVNT1JZX1BVUkdFX05WIDB4MzM0QworI2VuZGlmIC8qIEVHTF9OVl9y
b2J1c3RuZXNzX3ZpZGVvX21lbW9yeV9wdXJnZSAqLworCiAjaWZuZGVmIEVHTF9OVl9zdHJlYW1f
Y29uc3VtZXJfZ2x0ZXh0dXJlX3l1dgogI2RlZmluZSBFR0xfTlZfc3RyZWFtX2NvbnN1bWVyX2ds
dGV4dHVyZV95dXYgMQogI2RlZmluZSBFR0xfWVVWX1BMQU5FMF9URVhUVVJFX1VOSVRfTlYgICAg
MHgzMzJDCkBAIC05NjQsNiArMTEyNyw0OCBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRS
WSBlZ2xTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dGVybmFsQXR0cmlic05WIChFR0xEaQogI2Vu
ZGlmCiAjZW5kaWYgLyogRUdMX05WX3N0cmVhbV9jb25zdW1lcl9nbHRleHR1cmVfeXV2ICovCiAK
KyNpZm5kZWYgRUdMX05WX3N0cmVhbV9jcm9zc19kaXNwbGF5CisjZGVmaW5lIEVHTF9OVl9zdHJl
YW1fY3Jvc3NfZGlzcGxheSAxCisjZGVmaW5lIEVHTF9TVFJFQU1fQ1JPU1NfRElTUExBWV9OViAg
ICAgICAweDMzNEUKKyNlbmRpZiAvKiBFR0xfTlZfc3RyZWFtX2Nyb3NzX2Rpc3BsYXkgKi8KKwor
I2lmbmRlZiBFR0xfTlZfc3RyZWFtX2Nyb3NzX29iamVjdAorI2RlZmluZSBFR0xfTlZfc3RyZWFt
X2Nyb3NzX29iamVjdCAxCisjZGVmaW5lIEVHTF9TVFJFQU1fQ1JPU1NfT0JKRUNUX05WICAgICAg
ICAweDMzNEQKKyNlbmRpZiAvKiBFR0xfTlZfc3RyZWFtX2Nyb3NzX29iamVjdCAqLworCisjaWZu
ZGVmIEVHTF9OVl9zdHJlYW1fY3Jvc3NfcGFydGl0aW9uCisjZGVmaW5lIEVHTF9OVl9zdHJlYW1f
Y3Jvc3NfcGFydGl0aW9uIDEKKyNkZWZpbmUgRUdMX1NUUkVBTV9DUk9TU19QQVJUSVRJT05fTlYg
ICAgIDB4MzIzRgorI2VuZGlmIC8qIEVHTF9OVl9zdHJlYW1fY3Jvc3NfcGFydGl0aW9uICovCisK
KyNpZm5kZWYgRUdMX05WX3N0cmVhbV9jcm9zc19wcm9jZXNzCisjZGVmaW5lIEVHTF9OVl9zdHJl
YW1fY3Jvc3NfcHJvY2VzcyAxCisjZGVmaW5lIEVHTF9TVFJFQU1fQ1JPU1NfUFJPQ0VTU19OViAg
ICAgICAweDMyNDUKKyNlbmRpZiAvKiBFR0xfTlZfc3RyZWFtX2Nyb3NzX3Byb2Nlc3MgKi8KKwor
I2lmbmRlZiBFR0xfTlZfc3RyZWFtX2Nyb3NzX3N5c3RlbQorI2RlZmluZSBFR0xfTlZfc3RyZWFt
X2Nyb3NzX3N5c3RlbSAxCisjZGVmaW5lIEVHTF9TVFJFQU1fQ1JPU1NfU1lTVEVNX05WICAgICAg
ICAweDMzNEYKKyNlbmRpZiAvKiBFR0xfTlZfc3RyZWFtX2Nyb3NzX3N5c3RlbSAqLworCisjaWZu
ZGVmIEVHTF9OVl9zdHJlYW1fZmlmb19uZXh0CisjZGVmaW5lIEVHTF9OVl9zdHJlYW1fZmlmb19u
ZXh0IDEKKyNkZWZpbmUgRUdMX1BFTkRJTkdfRlJBTUVfTlYgICAgICAgICAgICAgIDB4MzMyOQor
I2RlZmluZSBFR0xfU1RSRUFNX1RJTUVfUEVORElOR19OViAgICAgICAgMHgzMzJBCisjZW5kaWYg
LyogRUdMX05WX3N0cmVhbV9maWZvX25leHQgKi8KKworI2lmbmRlZiBFR0xfTlZfc3RyZWFtX2Zp
Zm9fc3luY2hyb25vdXMKKyNkZWZpbmUgRUdMX05WX3N0cmVhbV9maWZvX3N5bmNocm9ub3VzIDEK
KyNkZWZpbmUgRUdMX1NUUkVBTV9GSUZPX1NZTkNIUk9OT1VTX05WICAgIDB4MzMzNgorI2VuZGlm
IC8qIEVHTF9OVl9zdHJlYW1fZmlmb19zeW5jaHJvbm91cyAqLworCisjaWZuZGVmIEVHTF9OVl9z
dHJlYW1fZnJhbWVfbGltaXRzCisjZGVmaW5lIEVHTF9OVl9zdHJlYW1fZnJhbWVfbGltaXRzIDEK
KyNkZWZpbmUgRUdMX1BST0RVQ0VSX01BWF9GUkFNRV9ISU5UX05WICAgIDB4MzMzNworI2RlZmlu
ZSBFR0xfQ09OU1VNRVJfTUFYX0ZSQU1FX0hJTlRfTlYgICAgMHgzMzM4CisjZW5kaWYgLyogRUdM
X05WX3N0cmVhbV9mcmFtZV9saW1pdHMgKi8KKwogI2lmbmRlZiBFR0xfTlZfc3RyZWFtX21ldGFk
YXRhCiAjZGVmaW5lIEVHTF9OVl9zdHJlYW1fbWV0YWRhdGEgMQogI2RlZmluZSBFR0xfTUFYX1NU
UkVBTV9NRVRBREFUQV9CTE9DS1NfTlYgMHgzMjUwCkBAIC05OTAsNiArMTE5NSw0NSBAQCBFR0xB
UEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xRdWVyeVN0cmVhbU1ldGFkYXRhTlYgKEVHTERp
c3BsYXkgZHB5LCBFR0xTdHJlYQogI2VuZGlmCiAjZW5kaWYgLyogRUdMX05WX3N0cmVhbV9tZXRh
ZGF0YSAqLwogCisjaWZuZGVmIEVHTF9OVl9zdHJlYW1fcmVtb3RlCisjZGVmaW5lIEVHTF9OVl9z
dHJlYW1fcmVtb3RlIDEKKyNkZWZpbmUgRUdMX1NUUkVBTV9TVEFURV9JTklUSUFMSVpJTkdfTlYg
IDB4MzI0MAorI2RlZmluZSBFR0xfU1RSRUFNX1RZUEVfTlYgICAgICAgICAgICAgICAgMHgzMjQx
CisjZGVmaW5lIEVHTF9TVFJFQU1fUFJPVE9DT0xfTlYgICAgICAgICAgICAweDMyNDIKKyNkZWZp
bmUgRUdMX1NUUkVBTV9FTkRQT0lOVF9OViAgICAgICAgICAgIDB4MzI0MworI2RlZmluZSBFR0xf
U1RSRUFNX0xPQ0FMX05WICAgICAgICAgICAgICAgMHgzMjQ0CisjZGVmaW5lIEVHTF9TVFJFQU1f
UFJPRFVDRVJfTlYgICAgICAgICAgICAweDMyNDcKKyNkZWZpbmUgRUdMX1NUUkVBTV9DT05TVU1F
Ul9OViAgICAgICAgICAgIDB4MzI0OAorI2RlZmluZSBFR0xfU1RSRUFNX1BST1RPQ09MX0ZEX05W
ICAgICAgICAgMHgzMjQ2CisjZW5kaWYgLyogRUdMX05WX3N0cmVhbV9yZW1vdGUgKi8KKworI2lm
bmRlZiBFR0xfTlZfc3RyZWFtX3Jlc2V0CisjZGVmaW5lIEVHTF9OVl9zdHJlYW1fcmVzZXQgMQor
I2RlZmluZSBFR0xfU1VQUE9SVF9SRVNFVF9OViAgICAgICAgICAgICAgMHgzMzM0CisjZGVmaW5l
IEVHTF9TVVBQT1JUX1JFVVNFX05WICAgICAgICAgICAgICAweDMzMzUKK3R5cGVkZWYgRUdMQm9v
bGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTFJFU0VUU1RSRUFNTlZQUk9DKSAoRUdMRGlzcGxheSBk
cHksIEVHTFN0cmVhbUtIUiBzdHJlYW0pOworI2lmZGVmIEVHTF9FR0xFWFRfUFJPVE9UWVBFUwor
RUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsUmVzZXRTdHJlYW1OViAoRUdMRGlzcGxh
eSBkcHksIEVHTFN0cmVhbUtIUiBzdHJlYW0pOworI2VuZGlmCisjZW5kaWYgLyogRUdMX05WX3N0
cmVhbV9yZXNldCAqLworCisjaWZuZGVmIEVHTF9OVl9zdHJlYW1fc29ja2V0CisjZGVmaW5lIEVH
TF9OVl9zdHJlYW1fc29ja2V0IDEKKyNkZWZpbmUgRUdMX1NUUkVBTV9QUk9UT0NPTF9TT0NLRVRf
TlYgICAgIDB4MzI0QgorI2RlZmluZSBFR0xfU09DS0VUX0hBTkRMRV9OViAgICAgICAgICAgICAg
MHgzMjRDCisjZGVmaW5lIEVHTF9TT0NLRVRfVFlQRV9OViAgICAgICAgICAgICAgICAweDMyNEQK
KyNlbmRpZiAvKiBFR0xfTlZfc3RyZWFtX3NvY2tldCAqLworCisjaWZuZGVmIEVHTF9OVl9zdHJl
YW1fc29ja2V0X2luZXQKKyNkZWZpbmUgRUdMX05WX3N0cmVhbV9zb2NrZXRfaW5ldCAxCisjZGVm
aW5lIEVHTF9TT0NLRVRfVFlQRV9JTkVUX05WICAgICAgICAgICAweDMyNEYKKyNlbmRpZiAvKiBF
R0xfTlZfc3RyZWFtX3NvY2tldF9pbmV0ICovCisKKyNpZm5kZWYgRUdMX05WX3N0cmVhbV9zb2Nr
ZXRfdW5peAorI2RlZmluZSBFR0xfTlZfc3RyZWFtX3NvY2tldF91bml4IDEKKyNkZWZpbmUgRUdM
X1NPQ0tFVF9UWVBFX1VOSVhfTlYgICAgICAgICAgIDB4MzI0RQorI2VuZGlmIC8qIEVHTF9OVl9z
dHJlYW1fc29ja2V0X3VuaXggKi8KKwogI2lmbmRlZiBFR0xfTlZfc3RyZWFtX3N5bmMKICNkZWZp
bmUgRUdMX05WX3N0cmVhbV9zeW5jIDEKICNkZWZpbmUgRUdMX1NZTkNfTkVXX0ZSQU1FX05WICAg
ICAgICAgICAgIDB4MzIxRgpAQCAtMTAxNiw3ICsxMjYwLDcgQEAgdHlwZWRlZiBraHJvbm9zX3V0
aW1lX25hbm9zZWNvbmRzX3QgRUdMVGltZU5WOwogI2RlZmluZSBFR0xfU1lOQ19UWVBFX05WICAg
ICAgICAgICAgICAgICAgMHgzMEVECiAjZGVmaW5lIEVHTF9TWU5DX0NPTkRJVElPTl9OViAgICAg
ICAgICAgICAweDMwRUUKICNkZWZpbmUgRUdMX1NZTkNfRkVOQ0VfTlYgICAgICAgICAgICAgICAg
IDB4MzBFRgotI2RlZmluZSBFR0xfTk9fU1lOQ19OViAgICAgICAgICAgICAgICAgICAgKChFR0xT
eW5jTlYpMCkKKyNkZWZpbmUgRUdMX05PX1NZTkNfTlYgICAgICAgICAgICAgICAgICAgIEVHTF9D
QVNUKEVHTFN5bmNOViwwKQogdHlwZWRlZiBFR0xTeW5jTlYgKEVHTEFQSUVOVFJZUCBQRk5FR0xD
UkVBVEVGRU5DRVNZTkNOVlBST0MpIChFR0xEaXNwbGF5IGRweSwgRUdMZW51bSBjb25kaXRpb24s
IGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpOwogdHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElF
TlRSWVAgUEZORUdMREVTVFJPWVNZTkNOVlBST0MpIChFR0xTeW5jTlYgc3luYyk7CiB0eXBlZGVm
IEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xGRU5DRU5WUFJPQykgKEVHTFN5bmNOViBz
eW5jKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2Vn
bHBsYXRmb3JtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2xwbGF0
Zm9ybS5oCmluZGV4IGIwYTZlYzk2MjNhZTJlZGZiMDc2NmQ3ZThkODYyNmY1ZGEwNWYyNDIuLjk5
OWY2ZTI4YjJjZDhjZjIxMWNkZTNhOTU1YjkzZWI1NjkyM2IyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbHBsYXRmb3JtLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdscGxhdGZvcm0uaApAQCAtMiw3ICsyLDcg
QEAKICNkZWZpbmUgX19lZ2xwbGF0Zm9ybV9oXwogCiAvKgotKiogQ29weXJpZ2h0IChjKSAyMDA3
LTIwMTMgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorKiogQ29weXJpZ2h0IChjKSAyMDA3LTIwMTYg
VGhlIEtocm9ub3MgR3JvdXAgSW5jLgogKioKICoqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50
ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAqKiBjb3B5IG9m
IHRoaXMgc29mdHdhcmUgYW5kL29yIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl
CkBAIC0zNCw3ICszNCw3IEBACiAgKiBieSBmaWxpbmcgYSBidWcgYWdhaW5zdCBwcm9kdWN0ICJF
R0wiIGNvbXBvbmVudCAiUmVnaXN0cnkiLgogICovCiAKLSNpbmNsdWRlIDxBTkdMRS9raHJwbGF0
Zm9ybS5oPgorI2luY2x1ZGUgPEtIUi9raHJwbGF0Zm9ybS5oPgogCiAvKiBNYWNyb3MgdXNlZCBp
biBFR0wgZnVuY3Rpb24gcHJvdG90eXBlIGRlY2xhcmF0aW9ucy4KICAqCkBAIC04Myw3ICs4Myw3
IEBAIHR5cGVkZWYgSFdORCAgICBFR0xOYXRpdmVXaW5kb3dUeXBlOwogdHlwZWRlZiBJSW5zcGVj
dGFibGUqIEVHTE5hdGl2ZVdpbmRvd1R5cGU7CiAjZW5kaWYKIAotI2VsaWYgZGVmaW5lZChfX1dJ
TlNDV19fKSB8fCBkZWZpbmVkKF9fU1lNQklBTjMyX18pICAvKiBTeW1iaWFuICovCisjZWxpZiBk
ZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChfX1dJTlNDV19fKSB8fCBkZWZpbmVkKF9fU1lN
QklBTjMyX18pICAvKiBTeW1iaWFuICovCiAKIHR5cGVkZWYgaW50ICAgRUdMTmF0aXZlRGlzcGxh
eVR5cGU7CiB0eXBlZGVmIHZvaWQgKkVHTE5hdGl2ZVdpbmRvd1R5cGU7CkBAIC0xMTUsMTggKzEx
NSw2IEBAIHR5cGVkZWYgRGlzcGxheSAqRUdMTmF0aXZlRGlzcGxheVR5cGU7CiB0eXBlZGVmIFBp
eG1hcCAgIEVHTE5hdGl2ZVBpeG1hcFR5cGU7CiB0eXBlZGVmIFdpbmRvdyAgIEVHTE5hdGl2ZVdp
bmRvd1R5cGU7CiAKLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmICggZGVmaW5lZChfX0FQUExF
X0NQUF9fKSB8fCBkZWZpbmVkKF9fQVBQTEVfQ0NfXykgfHwgZGVmaW5lZChfX01BQ09TX0NMQVNT
SUNfXykgKQotCi0jaWYgZGVmaW5lZChfX09CSkNfXykKLUBjbGFzcyBDQUxheWVyOwotI2Vsc2UK
LWNsYXNzIENBTGF5ZXI7Ci0jZW5kaWYKLQotdHlwZWRlZiB2b2lkICpFR0xOYXRpdmVEaXNwbGF5
VHlwZTsKLXR5cGVkZWYgdm9pZCAqRUdMTmF0aXZlUGl4bWFwVHlwZTsKLXR5cGVkZWYgQ0FMYXll
ciAqRUdMTmF0aXZlV2luZG93VHlwZTsKLQogI2Vsc2UKICNlcnJvciAiUGxhdGZvcm0gbm90IHJl
Y29nbml6ZWQiCiAjZW5kaWYKQEAgLTE0Niw0ICsxMzQsMTIgQEAgdHlwZWRlZiBFR0xOYXRpdmVX
aW5kb3dUeXBlICBOYXRpdmVXaW5kb3dUeXBlOwogICovCiB0eXBlZGVmIGtocm9ub3NfaW50MzJf
dCBFR0xpbnQ7CiAKKworLyogQysrIC8gQyB0eXBlY2FzdCBtYWNyb3MgZm9yIHNwZWNpYWwgRUdM
IGhhbmRsZSB2YWx1ZXMgKi8KKyNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQorI2RlZmluZSBFR0xf
Q0FTVCh0eXBlLCB2YWx1ZSkgKHN0YXRpY19jYXN0PHR5cGU+KHZhbHVlKSkKKyNlbHNlCisjZGVm
aW5lIEVHTF9DQVNUKHR5cGUsIHZhbHVlKSAoKHR5cGUpICh2YWx1ZSkpCisjZW5kaWYKKwogI2Vu
ZGlmIC8qIF9fZWdscGxhdGZvcm1faCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvaW5jbHVkZS9FR0wvZWdsc29mdGxpbmtpbmcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL2luY2x1ZGUvRUdML2VnbHNvZnRsaW5raW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDRmYTE0ZjQ3MDkzMmU4YWUxYTNiZmFkZGFiYzE0MTgwMDZlZGY4NDMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvaW5jbHVkZS9FR0wvZWdsc29mdGxpbmtpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDYz
ICswLDAgQEAKLS8qIAotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqIAotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCi0KLVNP
RlRfTElOS19MSUJSQVJZKGxpYkVHTCkKLQotU09GVF9MSU5LKGxpYkVHTCwgZWdsR2V0RXJyb3Is
IEVHTGludCwgRUdMQVBJRU5UUlksICh2b2lkKSwgKCkpOwotU09GVF9MSU5LX09QVElPTkFMKGxp
YkVHTCwgZWdsR2V0RGlzcGxheSwgRUdMRGlzcGxheSwgRUdMQVBJRU5UUlksIChFR0xOYXRpdmVE
aXNwbGF5VHlwZSBkaXNwbGF5X2lkKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xJbml0aWFsaXpl
LCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xpbnQgKm1ham9y
LCBFR0xpbnQgKm1pbm9yKSwgKGRweSwgbWFqb3IsIG1pbm9yKSk7Ci1TT0ZUX0xJTksobGliRUdM
LCBlZ2xUZXJtaW5hdGUsIEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHkp
LCAoZHB5KSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xRdWVyeVN0cmluZywgY29uc3QgY2hhciAq
LCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xpbnQgbmFtZSksIChkcHksIG5hbWUp
KTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbEdldENvbmZpZ3MsIEVHTEJvb2xlYW4sIEVHTEFQSUVO
VFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyAqY29uZmlncywgRUdMaW50IGNvbmZpZ19z
aXplLCBFR0xpbnQgKm51bV9jb25maWcpLCAoZHB5LCBjb25maWdzLCBjb25maWdfc2l6ZSwgbnVt
X2NvbmZpZykpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsQ2hvb3NlQ29uZmlnLCBFR0xCb29sZWFu
LCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0
LCBFR0xDb25maWcgKmNvbmZpZ3MsIEVHTGludCBjb25maWdfc2l6ZSwgRUdMaW50ICpudW1fY29u
ZmlnKSwgKGRweSwgYXR0cmliX2xpc3QsIGNvbmZpZ3MsIGNvbmZpZ19zaXplLCBudW1fY29uZmln
KSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xHZXRDb25maWdBdHRyaWIsIEVHTGludCwgRUdMQVBJ
RU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgRUdMaW50IGF0dHJpYnV0
ZSwgRUdMaW50ICp2YWx1ZSksIChkcHksIGNvbmZpZywgYXR0cmlidXRlLCB2YWx1ZSkpOwotU09G
VF9MSU5LKGxpYkVHTCwgZWdsQ3JlYXRlV2luZG93U3VyZmFjZSwgRUdMU3VyZmFjZSwgRUdMQVBJ
RU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgRUdMTmF0aXZlV2luZG93
VHlwZSB3aW4sIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpLCAoZHB5LCBjb25maWcsIHdpbiwg
YXR0cmliX2xpc3QpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbENyZWF0ZVBidWZmZXJTdXJmYWNl
LCBFR0xTdXJmYWNlLCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29u
ZmlnLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KSwgKGRweSwgY29uZmlnLCBhdHRyaWJfbGlz
dCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsQ3JlYXRlUGl4bWFwU3VyZmFjZSwgRUdMU3VyZmFj
ZSwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgRUdMTmF0
aXZlUGl4bWFwVHlwZSBwaXhtYXAsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpLCAoZHB5LCBj
b25maWcsIHBpeG1hcCwgYXR0cmliX2xpc3QpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbERlc3Ry
b3lTdXJmYWNlLCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xT
dXJmYWNlIHN1cmZhY2UpLCAoZHB5LCBzdXJmYWNlKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xR
dWVyeVN1cmZhY2UsIEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVH
TFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50ICp2YWx1ZSksIChkcHks
IHN1cmZhY2UsIGF0dHJpYnV0ZSwgdmFsdWUpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbEJpbmRB
UEksIEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMZW51bSBhcGkpLCAoYXBpKSk7Ci1TT0ZU
X0xJTksobGliRUdMLCBlZ2xRdWVyeUFQSSwgRUdMZW51bSwgRUdMQVBJRU5UUlksICh2b2lkKSwg
KCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsV2FpdENsaWVudCwgRUdMQm9vbGVhbiwgRUdMQVBJ
RU5UUlksICh2b2lkKSwgKCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsUmVsZWFzZVRocmVhZCwg
RUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksICh2b2lkKSwgKCkpOwotU09GVF9MSU5LKGxpYkVHTCwg
ZWdsQ3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIsIEVHTFN1cmZhY2UsIEVHTEFQSUVOVFJZ
LCAoRUdMRGlzcGxheSBkcHksIEVHTGVudW0gYnVmdHlwZSwgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZl
ciwgRUdMQ29uZmlnIGNvbmZpZywgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCksIChkcHksIGJ1
ZnR5cGUsIGJ1ZmZlciwgY29uZmlnLCBhdHRyaWJfbGlzdCkpOwotU09GVF9MSU5LKGxpYkVHTCwg
ZWdsU3VyZmFjZUF0dHJpYiwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRw
eSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgdmFsdWUpLCAo
ZHB5LCBzdXJmYWNlLCBhdHRyaWJ1dGUsIHZhbHVlKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xC
aW5kVGV4SW1hZ2UsIEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVH
TFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1ZmZlciksIChkcHksIHN1cmZhY2UsIGJ1ZmZlcikp
OwotU09GVF9MSU5LKGxpYkVHTCwgZWdsUmVsZWFzZVRleEltYWdlLCBFR0xCb29sZWFuLCBFR0xB
UElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBidWZm
ZXIpLCAoZHB5LCBzdXJmYWNlLCBidWZmZXIpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbFN3YXBJ
bnRlcnZhbCwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdMaW50
IGludGVydmFsKSwgKGRweSwgaW50ZXJ2YWwpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbENyZWF0
ZUNvbnRleHQsIEVHTENvbnRleHQsIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTENv
bmZpZyBjb25maWcsIEVHTENvbnRleHQgc2hhcmVfY29udGV4dCwgY29uc3QgRUdMaW50ICphdHRy
aWJfbGlzdCksIChkcHksIGNvbmZpZywgc2hhcmVfY29udGV4dCwgYXR0cmliX2xpc3QpKTsKLVNP
RlRfTElOSyhsaWJFR0wsIGVnbERlc3Ryb3lDb250ZXh0LCBFR0xCb29sZWFuLCBFR0xBUElFTlRS
WSwgKEVHTERpc3BsYXkgZHB5LCBFR0xDb250ZXh0IGN0eCksIChkcHksIGN0eCkpOwotU09GVF9M
SU5LKGxpYkVHTCwgZWdsTWFrZUN1cnJlbnQsIEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdM
RGlzcGxheSBkcHksIEVHTFN1cmZhY2UgZHJhdywgRUdMU3VyZmFjZSByZWFkLCBFR0xDb250ZXh0
IGN0eCksIChkcHksIGRyYXcsIHJlYWQsIGN0eCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsR2V0
Q3VycmVudENvbnRleHQsIEVHTENvbnRleHQsIEVHTEFQSUVOVFJZLCAodm9pZCksICgpKTsKLVNP
RlRfTElOSyhsaWJFR0wsIGVnbEdldEN1cnJlbnRTdXJmYWNlLCBFR0xTdXJmYWNlLCBFR0xBUElF
TlRSWSwgKEVHTGludCByZWFkZHJhdyksIChyZWFkZHJhdykpOwotU09GVF9MSU5LKGxpYkVHTCwg
ZWdsR2V0Q3VycmVudERpc3BsYXksIEVHTERpc3BsYXksIEVHTEFQSUVOVFJZLCAodm9pZCksICgp
KTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbFF1ZXJ5Q29udGV4dCwgRUdMQm9vbGVhbiwgRUdMQVBJ
RU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdMQ29udGV4dCBjdHgsIEVHTGludCBhdHRyaWJ1dGUs
IEVHTGludCAqdmFsdWUpLCAoZHB5LCBjdHgsIGF0dHJpYnV0ZSwgdmFsdWUpKTsKLVNPRlRfTElO
SyhsaWJFR0wsIGVnbFdhaXRHTCwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksICh2b2lkKSwgKCkp
OwotU09GVF9MSU5LKGxpYkVHTCwgZWdsV2FpdE5hdGl2ZSwgRUdMQm9vbGVhbiwgRUdMQVBJRU5U
UlksIChFR0xpbnQgZW5naW5lKSwgKGVuZ2luZSkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsU3dh
cEJ1ZmZlcnMsIEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTFN1
cmZhY2Ugc3VyZmFjZSksIChkcHksIHN1cmZhY2UpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbENv
cHlCdWZmZXJzLCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xT
dXJmYWNlIHN1cmZhY2UsIEVHTE5hdGl2ZVBpeG1hcFR5cGUgdGFyZ2V0KSwgKGRweSwgc3VyZmFj
ZSwgdGFyZ2V0KSk7Ci10eXBlZGVmIHZvaWQgKCpfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlv
blBvaW50ZXJUeXBlKSh2b2lkKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbEdldFByb2NBZGRyZXNz
LCBfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlLCBFR0xBUElFTlRSWSwg
KGNvbnN0IGNoYXIgKnByb2NuYW1lKSwgKHByb2NuYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2dsMi5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvaW5jbHVkZS9HTEVTMi9nbDIuaAppbmRleCA0NTE5NzY1M2RmNDQxMzZmZGYxMjA1YTFh
MGNmZWY2YWIzYTBkZWFmLi4wMjdlMWY3MTM2NmQyNjhlOGU3ZjlkYzdlMzlmODY1M2ZjZWJlMDJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2dsMi5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyLmgKQEAgLTU2
LDcgKzU2LDcgQEAgZXh0ZXJuICJDIiB7CiAKICNpZm5kZWYgR0xfRVNfVkVSU0lPTl8yXzAKICNk
ZWZpbmUgR0xfRVNfVkVSU0lPTl8yXzAgMQotI2luY2x1ZGUgPEFOR0xFL2tocnBsYXRmb3JtLmg+
CisjaW5jbHVkZSA8S0hSL2tocnBsYXRmb3JtLmg+CiB0eXBlZGVmIGtocm9ub3NfaW50OF90IEdM
Ynl0ZTsKIHR5cGVkZWYga2hyb25vc19mbG9hdF90IEdMY2xhbXBmOwogdHlwZWRlZiBraHJvbm9z
X2ludDMyX3QgR0xmaXhlZDsKQEAgLTUyMCwxMSArNTIwLDYgQEAgdHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xWRVJURVhBVFRSSUI0RlBST0MpIChHTHVpbnQgaW5kZXgsIEdMZmxvYXQg
eCwgR0wKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVkVSVEVYQVRUUklCNEZWUFJP
QykgKEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdik7CiB0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFZFUlRFWEFUVFJJQlBPSU5URVJQUk9DKSAoR0x1aW50IGluZGV4LCBHTGlu
dCBzaXplLCBHTGVudW0gdHlwZSwgR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdMc2l6ZWkgc3RyaWRl
LCBjb25zdCB2b2lkICpwb2ludGVyKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
VklFV1BPUlRQUk9DKSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQpOwotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoQU5HTEVfV0VCS0lU
X1dJTikKLSNpbmNsdWRlIDxHTEVTMi9nbDJzb2Z0bGlua2luZy5oPgotI2Vsc2UKLQogI2lmZGVm
IEdMX0dMRVhUX1BST1RPVFlQRVMKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEFjdGl2
ZVRleHR1cmUgKEdMZW51bSB0ZXh0dXJlKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEF0dGFjaFNoYWRlciAoR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIpOwpAQCAtNjY5LDcg
KzY2NCw2IEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYjRmdiAo
R0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbFZlcnRleEF0dHJpYlBvaW50ZXIgKEdMdWludCBpbmRleCwgR0xpbnQgc2l6ZSwgR0xl
bnVtIHR5cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwgY29uc3Qgdm9p
ZCAqcG9pbnRlcik7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWaWV3cG9ydCAoR0xp
bnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwogI2VuZGlmCi0j
ZW5kaWYKICNlbmRpZiAvKiBHTF9FU19WRVJTSU9OXzJfMCAqLwogCiAjaWZkZWYgX19jcGx1c3Bs
dXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wy
ZXh0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2dsMmV4dC5oCmlu
ZGV4IGViYTZkY2M3N2U2NTFmODZjMTljM2ZiZjlmOGMzMjBlZmNmOTE5MWMuLmYzM2VjMTlhZjJi
ZmU3ZmY1MDgxMzEwZWM0OTcwOTczYzFiYWFlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJleHQuaApAQCAtNiw3ICs2LDcgQEAgZXh0ZXJuICJDIiB7
CiAjZW5kaWYKIAogLyoKLSoqIENvcHlyaWdodCAoYykgMjAxMy0yMDE1IFRoZSBLaHJvbm9zIEdy
b3VwIEluYy4KKyoqIENvcHlyaWdodCAoYykgMjAxMy0yMDE2IFRoZSBLaHJvbm9zIEdyb3VwIElu
Yy4KICoqCiAqKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg
dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogKiogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZC9v
ciBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQpAQCAtMzMsMTQgKzMzLDE0IEBA
IGV4dGVybiAiQyIgewogKiogdXNlZCB0byBtYWtlIHRoZSBoZWFkZXIsIGFuZCB0aGUgaGVhZGVy
IGNhbiBiZSBmb3VuZCBhdAogKiogICBodHRwOi8vd3d3Lm9wZW5nbC5vcmcvcmVnaXN0cnkvCiAq
KgotKiogS2hyb25vcyAkUmV2aXNpb246IDMxOTAyICQgb24gJERhdGU6IDIwMTUtMDktMDMgMTU6
NDQ6NTMgLTA3MDAgKFRodSwgMDMgU2VwIDIwMTUpICQKKyoqIEtocm9ub3MgJFJldmlzaW9uOiAz
MzI2MCAkIG9uICREYXRlOiAyMDE2LTEwLTI3IDAzOjM4OjQ0IC0wNzAwIChUaHUsIDI3IE9jdCAy
MDE2KSAkCiAqLwogCiAjaWZuZGVmIEdMX0FQSUVOVFJZUAogI2RlZmluZSBHTF9BUElFTlRSWVAg
R0xfQVBJRU5UUlkqCiAjZW5kaWYKIAotLyogR2VuZXJhdGVkIG9uIGRhdGUgMjAxNTA5MDMgKi8K
Ky8qIEdlbmVyYXRlZCBvbiBkYXRlIDIwMTYxMDI3ICovCiAKIC8qIEdlbmVyYXRlZCBDIGhlYWRl
ciBmb3I6CiAgKiBBUEk6IGdsZXMyCkBAIC01Miw2ICs1MiwxMCBAQCBleHRlcm4gIkMiIHsKICAq
IEV4dGVuc2lvbnMgcmVtb3ZlZDogX25vbWF0Y2hfXgogICovCiAKKyNpZm5kZWYgR0xfQVJCX3Nw
YXJzZV90ZXh0dXJlMgorI2RlZmluZSBHTF9BUkJfc3BhcnNlX3RleHR1cmUyIDEKKyNlbmRpZiAv
KiBHTF9BUkJfc3BhcnNlX3RleHR1cmUyICovCisKICNpZm5kZWYgR0xfS0hSX2JsZW5kX2VxdWF0
aW9uX2FkdmFuY2VkCiAjZGVmaW5lIEdMX0tIUl9ibGVuZF9lcXVhdGlvbl9hZHZhbmNlZCAxCiAj
ZGVmaW5lIEdMX01VTFRJUExZX0tIUiAgICAgICAgICAgICAgICAgICAweDkyOTQKQEAgLTIyNSw2
ICsyMjksMTAgQEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0blVuaWZvcm11aXZL
SFIgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwKICNkZWZpbmUgR0xfS0hSX3RleHR1
cmVfY29tcHJlc3Npb25fYXN0Y19sZHIgMQogI2VuZGlmIC8qIEdMX0tIUl90ZXh0dXJlX2NvbXBy
ZXNzaW9uX2FzdGNfbGRyICovCiAKKyNpZm5kZWYgR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25f
YXN0Y19zbGljZWRfM2QKKyNkZWZpbmUgR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19z
bGljZWRfM2QgMQorI2VuZGlmIC8qIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfc2xp
Y2VkXzNkICovCisKICNpZm5kZWYgR0xfT0VTX0VHTF9pbWFnZQogI2RlZmluZSBHTF9PRVNfRUdM
X2ltYWdlIDEKIHR5cGVkZWYgdm9pZCAqR0xlZ2xJbWFnZU9FUzsKQEAgLTc0OCw2ICs3NTYsMzQg
QEAgR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1ZlcnRleEFycmF5T0VTIChH
THVpbnQgYXJyYXkpOwogI2RlZmluZSBHTF9JTlRfMTBfMTBfMTBfMl9PRVMgICAgICAgICAgICAg
MHg4REY3CiAjZW5kaWYgLyogR0xfT0VTX3ZlcnRleF90eXBlXzEwXzEwXzEwXzIgKi8KIAorI2lm
bmRlZiBHTF9PRVNfdmlld3BvcnRfYXJyYXkKKyNkZWZpbmUgR0xfT0VTX3ZpZXdwb3J0X2FycmF5
IDEKKyNkZWZpbmUgR0xfTUFYX1ZJRVdQT1JUU19PRVMgICAgICAgICAgICAgIDB4ODI1QgorI2Rl
ZmluZSBHTF9WSUVXUE9SVF9TVUJQSVhFTF9CSVRTX09FUyAgICAgMHg4MjVDCisjZGVmaW5lIEdM
X1ZJRVdQT1JUX0JPVU5EU19SQU5HRV9PRVMgICAgICAweDgyNUQKKyNkZWZpbmUgR0xfVklFV1BP
UlRfSU5ERVhfUFJPVk9LSU5HX1ZFUlRFWF9PRVMgMHg4MjVGCit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFZJRVdQT1JUQVJSQVlWT0VTUFJPQykgKEdMdWludCBmaXJzdCwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTFZJRVdQT1JUSU5ERVhFREZPRVNQUk9DKSAoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdM
ZmxvYXQgeSwgR0xmbG9hdCB3LCBHTGZsb2F0IGgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xWSUVXUE9SVElOREVYRURGVk9FU1BST0MpIChHTHVpbnQgaW5kZXgsIGNvbnN0IEdM
ZmxvYXQgKnYpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTQ0lTU09SQVJSQVlW
T0VTUFJPQykgKEdMdWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTQ0lTU09SSU5ERVhFRE9FU1BST0MpIChH
THVpbnQgaW5kZXgsIEdMaW50IGxlZnQsIEdMaW50IGJvdHRvbSwgR0xzaXplaSB3aWR0aCwgR0xz
aXplaSBoZWlnaHQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xTQ0lTU09SSU5E
RVhFRFZPRVNQUk9DKSAoR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdik7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFUFRIUkFOR0VBUlJBWUZWT0VTUFJPQykgKEdMdWludCBm
aXJzdCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTERFUFRIUkFOR0VJTkRFWEVERk9FU1BST0MpIChHTHVpbnQgaW5kZXgs
IEdMZmxvYXQgbiwgR0xmbG9hdCBmKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
R0VURkxPQVRJX1ZPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGZsb2F0
ICpkYXRhKTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xWaWV3cG9ydEFycmF5dk9FUyAoR0x1aW50IGZpcnN0LCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGZsb2F0ICp2KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZpZXdw
b3J0SW5kZXhlZGZPRVMgKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxv
YXQgdywgR0xmbG9hdCBoKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZpZXdwb3J0
SW5kZXhlZGZ2T0VTIChHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnYpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsU2Npc3NvckFycmF5dk9FUyAoR0x1aW50IGZpcnN0LCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGludCAqdik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xTY2lzc29ySW5kZXhlZE9FUyAoR0x1aW50IGluZGV4LCBHTGludCBsZWZ0LCBHTGludCBib3R0
b20sIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFNjaXNzb3JJbmRleGVkdk9FUyAoR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAq
dik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZXB0aFJhbmdlQXJyYXlmdk9FUyAo
R0x1aW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbERlcHRoUmFuZ2VJbmRleGVkZk9FUyAoR0x1aW50IGluZGV4
LCBHTGZsb2F0IG4sIEdMZmxvYXQgZik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xH
ZXRGbG9hdGlfdk9FUyAoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGZsb2F0ICpkYXRh
KTsKKyNlbmRpZgorI2VuZGlmIC8qIEdMX09FU192aWV3cG9ydF9hcnJheSAqLworCiAjaWZuZGVm
IEdMX0FNRF9jb21wcmVzc2VkXzNEQ190ZXh0dXJlCiAjZGVmaW5lIEdMX0FNRF9jb21wcmVzc2Vk
XzNEQ190ZXh0dXJlIDEKICNkZWZpbmUgR0xfM0RDX1hfQU1EICAgICAgICAgICAgICAgICAgICAg
IDB4ODdGOQpAQCAtODA1LDYgKzg0MSwxMSBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xHZXRQZXJmTW9uaXRvckNvdW50ZXJEYXRhQU1EIChHTHVpbnQgbW9uaXRvciwgR0xlbgogI2Rl
ZmluZSBHTF9BTkRST0lEX2V4dGVuc2lvbl9wYWNrX2VzMzFhIDEKICNlbmRpZiAvKiBHTF9BTkRS
T0lEX2V4dGVuc2lvbl9wYWNrX2VzMzFhICovCiAKKyNpZm5kZWYgR0xfQU5HTEVfY2xpZW50X2Fy
cmF5cworI2RlZmluZSBHTF9BTkdMRV9jbGllbnRfYXJyYXlzIDEKKyNkZWZpbmUgR0xfQ0xJRU5U
X0FSUkFZU19BTkdMRSAweDkzQUEKKyNlbmRpZiAvKiBHTF9BTkdMRV9jbGllbnRfYXJyYXlzICov
CisKICNpZm5kZWYgR0xfQU5HTEVfZGVwdGhfdGV4dHVyZQogI2RlZmluZSBHTF9BTkdMRV9kZXB0
aF90ZXh0dXJlIDEKICNlbmRpZiAvKiBHTF9BTkdMRV9kZXB0aF90ZXh0dXJlICovCkBAIC04MjEs
MTQgKzg2MiwyMSBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCbGl0RnJhbWVidWZm
ZXJBTkdMRSAoR0xpbnQgc3JjWDAsIEdMaW50IHNyY1kwLCBHTAogI2VuZGlmCiAjZW5kaWYgLyog
R0xfQU5HTEVfZnJhbWVidWZmZXJfYmxpdCAqLwogCi0jaWZuZGVmIEdMX0FOR0xFX3dlYmdsX2Nv
bXBhdGliaWxpdHkKLSNkZWZpbmUgR0xfQU5HTEVfd2ViZ2xfY29tcGF0aWJpbGl0eSAxCi10eXBl
ZGVmIEdMYm9vbGVhbihHTF9BUElFTlRSWVAgUEZOR0xFTkFCTEVFWFRFTlNJT05BTkdMRVBST0Mp
IChjb25zdCBHTGNoYXIgKm5hbWUpOworI2lmbmRlZiBHTF9BTkdMRV9yZXF1ZXN0X2V4dGVuc2lv
bgorI2RlZmluZSBHTF9BTkdMRV9yZXF1ZXN0X2V4dGVuc2lvbiAxCisjZGVmaW5lIEdMX1JFUVVF
U1RBQkxFX0VYVEVOU0lPTlNfQU5HTEUgICAweDkzQTgKKyNkZWZpbmUgR0xfTlVNX1JFUVVFU1RB
QkxFX0VYVEVOU0lPTlNfQU5HTEUgMHg5M0E4Cit0eXBlZGVmIEdMYm9vbGVhbihHTF9BUElFTlRS
WVAgUEZOR0xSRVFVRVNURVhURU5TSU9OQU5HTEVQUk9DKSAoY29uc3QgR0xjaGFyICpuYW1lKTsK
ICNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCi1HTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElF
TlRSWSBnbEVuYWJsZUV4dGVuc2lvbkFOR0xFIChjb25zdCBHTGNoYXIgKm5hbWUpOworR0xfQVBJ
Q0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xSZXF1ZXN0RXh0ZW5zaW9uQU5HTEUgKGNvbnN0
IEdMY2hhciAqbmFtZSk7CiAjZW5kaWYKICNlbmRpZiAvKiBHTF9BTkdMRV93ZWJnbF9jb21wYXRp
YmlsaXR5ICovCiAKKyNpZm5kZWYgR0xfQU5HTEVfcm9idXN0X3Jlc291cmNlX2luaXRpYWxpemF0
aW9uCisjZGVmaW5lIEdMX0FOR0xFX3JvYnVzdF9yZXNvdXJjZV9pbml0aWFsaXphdGlvbiAxCisj
ZGVmaW5lIEdMX0NPTlRFWFRfUk9CVVNUX1JFU09VUkNFX0lOSVRJQUxJWkFUSU9OX0FOR0xFIDB4
OTNBNworI2VuZGlmIC8qIEdMX0FOR0xFX3JvYnVzdF9yZXNvdXJjZV9pbml0aWFsaXphdGlvbiAq
LworCiAjaWZuZGVmIEdMX0NIUk9NSVVNX2ZyYW1lYnVmZmVyX21peGVkX3NhbXBsZXMKICNkZWZp
bmUgR0xfQ0hST01JVU1fZnJhbWJ1ZmZlcl9taXhlZF9zYW1wbGVzIDEKICNkZWZpbmUgR0xfQ09W
RVJBR0VfTU9EVUxBVElPTl9DSFJPTUlVTSAweDkzMzIKQEAgLTEyNzcsMTQgKzEzMjUsMjAgQEAg
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0U3luY2l2QVBQTEUgKEdMc3luYyBzeW5j
LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkKICNpZm5kZWYgR0xfQ0hST01JVU1fY29weV90ZXh0dXJl
CiAjZGVmaW5lIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVyZSAxCiB0eXBlZGVmIHZvaWQoR0xfQVBJ
RU5UUllQIFBGTkdMQ09QWVRFWFRVUkVDSFJPTUlVTVBST0MpKEdMdWludCBzb3VyY2VJZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgc291cmNlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0VGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZGVzdElkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBk
ZXN0TGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB1bnBhY2tGbGlwWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB1bnBhY2tVbm11bHRpcGx5QWxwaGEpOwogdHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5H
TENPUFlTVUJURVhUVVJFQ0hST01JVU1QUk9DKShHTHVpbnQgc291cmNlSWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNv
dXJjZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZGVzdFRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRlc3RJZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgZGVzdExldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB4LApAQCAtMTI5NiwxNCArMTM1MCwyMCBAQCB0eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBG
TkdMQ09QWVNVQlRFWFRVUkVDSFJPTUlVTVBST0MpKEdMdWludCBzb3VyY2VJZCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHVucGFja1VubXVsdGlwbHlBbHBoYSk7CiAjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwog
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29weVRleHR1cmVDSFJPTUlVTShHTHVpbnQg
c291cmNlSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHNvdXJjZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRlc3RJZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZGVzdExldmVsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBp
bnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGRlc3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrRmxpcFksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tQcmVt
dWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gdW5wYWNrVW5tdWx0aXBseUFscGhhKTsKIEdMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbENvcHlTdWJUZXh0dXJlQ0hST01JVU0oR0x1aW50IHNvdXJjZUlkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBzb3VyY2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGRlc3RUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBkZXN0SWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRlc3RMZXZlbCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgeG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKQEAgLTE0MDIsNiArMTQ2MiwzMSBAQCBHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCdWZmZXJTdG9yYWdlRVhUIChHTGVudW0gdGFyZ2V0
LCBHTHNpemVpcHRyIHNpemUsCiAjZW5kaWYKICNlbmRpZiAvKiBHTF9FWFRfYnVmZmVyX3N0b3Jh
Z2UgKi8KIAorI2lmbmRlZiBHTF9FWFRfY2xlYXJfdGV4dHVyZQorI2RlZmluZSBHTF9FWFRfY2xl
YXJfdGV4dHVyZSAxCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENMRUFSVEVYSU1B
R0VFWFRQUk9DKSAoR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTGVudW0gZm9ybWF0LCBH
TGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqZGF0YSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTENMRUFSVEVYU1VCSU1BR0VFWFRQUk9DKSAoR0x1aW50IHRleHR1cmUsIEdMaW50IGxl
dmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xl
bnVtIHR5cGUsIGNvbnN0IHZvaWQgKmRhdGEpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENsZWFyVGV4SW1hZ2VFWFQgKEdMdWludCB0
ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZv
aWQgKmRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ2xlYXJUZXhTdWJJbWFn
ZUVYVCAoR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5
b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xz
aXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmRhdGEp
OworI2VuZGlmCisjZW5kaWYgLyogR0xfRVhUX2NsZWFyX3RleHR1cmUgKi8KKworI2lmbmRlZiBH
TF9FWFRfY2xpcF9jdWxsX2Rpc3RhbmNlCisjZGVmaW5lIEdMX0VYVF9jbGlwX2N1bGxfZGlzdGFu
Y2UgMQorI2RlZmluZSBHTF9NQVhfQ0xJUF9ESVNUQU5DRVNfRVhUICAgICAgICAgMHgwRDMyCisj
ZGVmaW5lIEdMX01BWF9DVUxMX0RJU1RBTkNFU19FWFQgICAgICAgICAweDgyRjkKKyNkZWZpbmUg
R0xfTUFYX0NPTUJJTkVEX0NMSVBfQU5EX0NVTExfRElTVEFOQ0VTX0VYVCAweDgyRkEKKyNkZWZp
bmUgR0xfQ0xJUF9ESVNUQU5DRTBfRVhUICAgICAgICAgICAgIDB4MzAwMAorI2RlZmluZSBHTF9D
TElQX0RJU1RBTkNFMV9FWFQgICAgICAgICAgICAgMHgzMDAxCisjZGVmaW5lIEdMX0NMSVBfRElT
VEFOQ0UyX0VYVCAgICAgICAgICAgICAweDMwMDIKKyNkZWZpbmUgR0xfQ0xJUF9ESVNUQU5DRTNf
RVhUICAgICAgICAgICAgIDB4MzAwMworI2RlZmluZSBHTF9DTElQX0RJU1RBTkNFNF9FWFQgICAg
ICAgICAgICAgMHgzMDA0CisjZGVmaW5lIEdMX0NMSVBfRElTVEFOQ0U1X0VYVCAgICAgICAgICAg
ICAweDMwMDUKKyNkZWZpbmUgR0xfQ0xJUF9ESVNUQU5DRTZfRVhUICAgICAgICAgICAgIDB4MzAw
NgorI2RlZmluZSBHTF9DTElQX0RJU1RBTkNFN19FWFQgICAgICAgICAgICAgMHgzMDA3CisjZW5k
aWYgLyogR0xfRVhUX2NsaXBfY3VsbF9kaXN0YW5jZSAqLworCiAjaWZuZGVmIEdMX0VYVF9jb2xv
cl9idWZmZXJfZmxvYXQKICNkZWZpbmUgR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCAxCiAjZW5k
aWYgLyogR0xfRVhUX2NvbG9yX2J1ZmZlcl9mbG9hdCAqLwpAQCAtMTQxNiw2ICsxNTAxLDEwIEBA
IEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJ1ZmZlclN0b3JhZ2VFWFQgKEdMZW51bSB0
YXJnZXQsIEdMc2l6ZWlwdHIgc2l6ZSwKICNkZWZpbmUgR0xfVU5TSUdORURfTk9STUFMSVpFRF9F
WFQgICAgICAgIDB4OEMxNwogI2VuZGlmIC8qIEdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9h
dCAqLwogCisjaWZuZGVmIEdMX0VYVF9jb25zZXJ2YXRpdmVfZGVwdGgKKyNkZWZpbmUgR0xfRVhU
X2NvbnNlcnZhdGl2ZV9kZXB0aCAxCisjZW5kaWYgLyogR0xfRVhUX2NvbnNlcnZhdGl2ZV9kZXB0
aCAqLworCiAjaWZuZGVmIEdMX0VYVF9jb3B5X2ltYWdlCiAjZGVmaW5lIEdMX0VYVF9jb3B5X2lt
YWdlIDEKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09QWUlNQUdFU1VCREFUQUVY
VFBST0MpIChHTHVpbnQgc3JjTmFtZSwgR0xlbnVtIHNyY1RhcmdldCwgR0xpbnQgc3JjTGV2ZWws
IEdMaW50IHNyY1gsIEdMaW50IHNyY1ksIEdMaW50IHNyY1osIEdMdWludCBkc3ROYW1lLCBHTGVu
dW0gZHN0VGFyZ2V0LCBHTGludCBkc3RMZXZlbCwgR0xpbnQgZHN0WCwgR0xpbnQgZHN0WSwgR0xp
bnQgZHN0WiwgR0xzaXplaSBzcmNXaWR0aCwgR0xzaXplaSBzcmNIZWlnaHQsIEdMc2l6ZWkgc3Jj
RGVwdGgpOwpAQCAtMTU4Nyw2ICsxNjc2LDE2IEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbERyYXdFbGVtZW50c0luc3RhbmNlZEVYVCAoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291CiAj
ZW5kaWYKICNlbmRpZiAvKiBHTF9FWFRfZHJhd19pbnN0YW5jZWQgKi8KIAorI2lmbmRlZiBHTF9F
WFRfZHJhd190cmFuc2Zvcm1fZmVlZGJhY2sKKyNkZWZpbmUgR0xfRVhUX2RyYXdfdHJhbnNmb3Jt
X2ZlZWRiYWNrIDEKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRFJBV1RSQU5TRk9S
TUZFRURCQUNLRVhUUFJPQykgKEdMZW51bSBtb2RlLCBHTHVpbnQgaWQpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xEUkFXVFJBTlNGT1JNRkVFREJBQ0tJTlNUQU5DRURFWFRQUk9D
KSAoR0xlbnVtIG1vZGUsIEdMdWludCBpZCwgR0xzaXplaSBpbnN0YW5jZWNvdW50KTsKKyNpZmRl
ZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3
VHJhbnNmb3JtRmVlZGJhY2tFWFQgKEdMZW51bSBtb2RlLCBHTHVpbnQgaWQpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsRHJhd1RyYW5zZm9ybUZlZWRiYWNrSW5zdGFuY2VkRVhUIChH
TGVudW0gbW9kZSwgR0x1aW50IGlkLCBHTHNpemVpIGluc3RhbmNlY291bnQpOworI2VuZGlmCisj
ZW5kaWYgLyogR0xfRVhUX2RyYXdfdHJhbnNmb3JtX2ZlZWRiYWNrICovCisKICNpZm5kZWYgR0xf
RVhUX2Zsb2F0X2JsZW5kCiAjZGVmaW5lIEdMX0VYVF9mbG9hdF9ibGVuZCAxCiAjZW5kaWYgLyog
R0xfRVhUX2Zsb2F0X2JsZW5kICovCkBAIC0xNzI4LDYgKzE4MjcsMTUgQEAgR0xfQVBJQ0FMTCB2
b2lkIEdMX0FQSUVOVFJZIGdsR2V0SW50ZWdlcmlfdkVYVCAoR0xlbnVtIHRhcmdldCwgR0x1aW50
IGluZGV4LCBHTGkKICNkZWZpbmUgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9F
WFQgMHg4RDZBCiAjZW5kaWYgLyogR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuICovCiAK
KyNpZm5kZWYgR0xfRVhUX3BvbHlnb25fb2Zmc2V0X2NsYW1wCisjZGVmaW5lIEdMX0VYVF9wb2x5
Z29uX29mZnNldF9jbGFtcCAxCisjZGVmaW5lIEdMX1BPTFlHT05fT0ZGU0VUX0NMQU1QX0VYVCAg
ICAgICAweDhFMUIKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUE9MWUdPTk9GRlNF
VENMQU1QRVhUUFJPQykgKEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0IHVuaXRzLCBHTGZsb2F0IGNs
YW1wKTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xQb2x5Z29uT2Zmc2V0Q2xhbXBFWFQgKEdMZmxvYXQgZmFjdG9yLCBHTGZsb2F0IHVu
aXRzLCBHTGZsb2F0IGNsYW1wKTsKKyNlbmRpZgorI2VuZGlmIC8qIEdMX0VYVF9wb2x5Z29uX29m
ZnNldF9jbGFtcCAqLworCiAjaWZuZGVmIEdMX0VYVF9wb3N0X2RlcHRoX2NvdmVyYWdlCiAjZGVm
aW5lIEdMX0VYVF9wb3N0X2RlcHRoX2NvdmVyYWdlIDEKICNlbmRpZiAvKiBHTF9FWFRfcG9zdF9k
ZXB0aF9jb3ZlcmFnZSAqLwpAQCAtMTc0MSw2ICsxODQ5LDEyIEBAIEdMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbFByaW1pdGl2ZUJvdW5kaW5nQm94RVhUIChHTGZsb2F0IG1pblgsIEdMZmxv
YXQgbWluCiAjZW5kaWYKICNlbmRpZiAvKiBHTF9FWFRfcHJpbWl0aXZlX2JvdW5kaW5nX2JveCAq
LwogCisjaWZuZGVmIEdMX0VYVF9wcm90ZWN0ZWRfdGV4dHVyZXMKKyNkZWZpbmUgR0xfRVhUX3By
b3RlY3RlZF90ZXh0dXJlcyAxCisjZGVmaW5lIEdMX0NPTlRFWFRfRkxBR19QUk9URUNURURfQ09O
VEVOVF9CSVRfRVhUIDB4MDAwMDAwMTAKKyNkZWZpbmUgR0xfVEVYVFVSRV9QUk9URUNURURfRVhU
ICAgICAgICAgIDB4OEJGQQorI2VuZGlmIC8qIEdMX0VYVF9wcm90ZWN0ZWRfdGV4dHVyZXMgKi8K
KwogI2lmbmRlZiBHTF9FWFRfcHZydGNfc1JHQgogI2RlZmluZSBHTF9FWFRfcHZydGNfc1JHQiAx
CiAjZGVmaW5lIEdMX0NPTVBSRVNTRURfU1JHQl9QVlJUQ18yQlBQVjFfRVhUIDB4OEE1NApAQCAt
MTkyMCw2ICsyMDM0LDEwIEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1V
bmlmb3JtTWF0cml4NHgzZnZFWFQgKEdMdWludCBwcm9ncmFtLCBHTGluCiAjZGVmaW5lIEdMX0ZS
QUdNRU5UX1NIQURFUl9ESVNDQVJEU19TQU1QTEVTX0VYVCAweDhBNTIKICNlbmRpZiAvKiBHTF9F
WFRfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoICovCiAKKyNpZm5kZWYgR0xfRVhUX3NoYWRlcl9n
cm91cF92b3RlCisjZGVmaW5lIEdMX0VYVF9zaGFkZXJfZ3JvdXBfdm90ZSAxCisjZW5kaWYgLyog
R0xfRVhUX3NoYWRlcl9ncm91cF92b3RlICovCisKICNpZm5kZWYgR0xfRVhUX3NoYWRlcl9pbXBs
aWNpdF9jb252ZXJzaW9ucwogI2RlZmluZSBHTF9FWFRfc2hhZGVyX2ltcGxpY2l0X2NvbnZlcnNp
b25zIDEKICNlbmRpZiAvKiBHTF9FWFRfc2hhZGVyX2ltcGxpY2l0X2NvbnZlcnNpb25zICovCkBA
IC0xOTMyLDYgKzIwNTAsMTAgQEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3Jh
bVVuaWZvcm1NYXRyaXg0eDNmdkVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW4KICNkZWZpbmUgR0xf
RVhUX3NoYWRlcl9pb19ibG9ja3MgMQogI2VuZGlmIC8qIEdMX0VYVF9zaGFkZXJfaW9fYmxvY2tz
ICovCiAKKyNpZm5kZWYgR0xfRVhUX3NoYWRlcl9ub25fY29uc3RhbnRfZ2xvYmFsX2luaXRpYWxp
emVycworI2RlZmluZSBHTF9FWFRfc2hhZGVyX25vbl9jb25zdGFudF9nbG9iYWxfaW5pdGlhbGl6
ZXJzIDEKKyNlbmRpZiAvKiBHTF9FWFRfc2hhZGVyX25vbl9jb25zdGFudF9nbG9iYWxfaW5pdGlh
bGl6ZXJzICovCisKICNpZm5kZWYgR0xfRVhUX3NoYWRlcl9waXhlbF9sb2NhbF9zdG9yYWdlCiAj
ZGVmaW5lIEdMX0VYVF9zaGFkZXJfcGl4ZWxfbG9jYWxfc3RvcmFnZSAxCiAjZGVmaW5lIEdMX01B
WF9TSEFERVJfUElYRUxfTE9DQUxfU1RPUkFHRV9GQVNUX1NJWkVfRVhUIDB4OEY2MwpAQCAtMTkz
OSw2ICsyMDYxLDIxIEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlm
b3JtTWF0cml4NHgzZnZFWFQgKEdMdWludCBwcm9ncmFtLCBHTGluCiAjZGVmaW5lIEdMX1NIQURF
Ul9QSVhFTF9MT0NBTF9TVE9SQUdFX0VYVCAweDhGNjQKICNlbmRpZiAvKiBHTF9FWFRfc2hhZGVy
X3BpeGVsX2xvY2FsX3N0b3JhZ2UgKi8KIAorI2lmbmRlZiBHTF9FWFRfc2hhZGVyX3BpeGVsX2xv
Y2FsX3N0b3JhZ2UyCisjZGVmaW5lIEdMX0VYVF9zaGFkZXJfcGl4ZWxfbG9jYWxfc3RvcmFnZTIg
MQorI2RlZmluZSBHTF9NQVhfU0hBREVSX0NPTUJJTkVEX0xPQ0FMX1NUT1JBR0VfRkFTVF9TSVpF
X0VYVCAweDk2NTAKKyNkZWZpbmUgR0xfTUFYX1NIQURFUl9DT01CSU5FRF9MT0NBTF9TVE9SQUdF
X1NJWkVfRVhUIDB4OTY1MQorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0lOU1VG
RklDSUVOVF9TSEFERVJfQ09NQklORURfTE9DQUxfU1RPUkFHRV9FWFQgMHg5NjUyCit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEZSQU1FQlVGRkVSUElYRUxMT0NBTFNUT1JBR0VTSVpF
RVhUUFJPQykgKEdMdWludCB0YXJnZXQsIEdMc2l6ZWkgc2l6ZSk7Cit0eXBlZGVmIEdMc2l6ZWkg
KEdMX0FQSUVOVFJZUCBQRk5HTEdFVEZSQU1FQlVGRkVSUElYRUxMT0NBTFNUT1JBR0VTSVpFRVhU
UFJPQykgKEdMdWludCB0YXJnZXQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xD
TEVBUlBJWEVMTE9DQUxTVE9SQUdFVUlFWFRQUk9DKSAoR0xzaXplaSBvZmZzZXQsIEdMc2l6ZWkg
biwgY29uc3QgR0x1aW50ICp2YWx1ZXMpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZyYW1lYnVmZmVyUGl4ZWxMb2NhbFN0b3JhZ2VT
aXplRVhUIChHTHVpbnQgdGFyZ2V0LCBHTHNpemVpIHNpemUpOworR0xfQVBJQ0FMTCBHTHNpemVp
IEdMX0FQSUVOVFJZIGdsR2V0RnJhbWVidWZmZXJQaXhlbExvY2FsU3RvcmFnZVNpemVFWFQgKEdM
dWludCB0YXJnZXQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ2xlYXJQaXhlbExv
Y2FsU3RvcmFnZXVpRVhUIChHTHNpemVpIG9mZnNldCwgR0xzaXplaSBuLCBjb25zdCBHTHVpbnQg
KnZhbHVlcyk7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9FWFRfc2hhZGVyX3BpeGVsX2xvY2FsX3N0
b3JhZ2UyICovCisKICNpZm5kZWYgR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZAogI2RlZmluZSBH
TF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIDEKICNlbmRpZiAvKiBHTF9FWFRfc2hhZGVyX3RleHR1
cmVfbG9kICovCkBAIC0yMDg3LDYgKzIyMjQsMTQgQEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVO
VFJZIGdsVGV4QnVmZmVyUmFuZ2VFWFQgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBpbnRlcm5hbGYK
ICNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9FWFQgIDB4ODNGMwogI2VuZGlm
IC8qIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMgKi8KIAorI2lmbmRlZiBHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IKKyNkZWZpbmUgR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fczN0Y19zcmdiIDEKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TUkdCX1MzVENfRFhU
MV9FWFQgIDB4OEM0QworI2RlZmluZSBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQx
X0VYVCAweDhDNEQKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19F
WFQgMHg4QzRFCisjZGVmaW5lIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhU
IDB4OEM0RgorI2VuZGlmIC8qIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNfc3JnYiAq
LworCiAjaWZuZGVmIEdMX0VYVF90ZXh0dXJlX2N1YmVfbWFwX2FycmF5CiAjZGVmaW5lIEdMX0VY
VF90ZXh0dXJlX2N1YmVfbWFwX2FycmF5IDEKICNkZWZpbmUgR0xfVEVYVFVSRV9DVUJFX01BUF9B
UlJBWV9FWFQgICAgIDB4OTAwOQpAQCAtMjIwNCwxMSArMjM0OSw1NyBAQCBHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xUZXh0dXJlVmlld0VYVCAoR0x1aW50IHRleHR1cmUsIEdMZW51bSB0
YXJnZXQsIEdMdQogI2RlZmluZSBHTF9VTlBBQ0tfU0tJUF9QSVhFTFNfRVhUICAgICAgICAgMHgw
Q0Y0CiAjZW5kaWYgLyogR0xfRVhUX3VucGFja19zdWJpbWFnZSAqLwogCisjaWZuZGVmIEdMX0VY
VF93aW5kb3dfcmVjdGFuZ2xlcworI2RlZmluZSBHTF9FWFRfd2luZG93X3JlY3RhbmdsZXMgMQor
I2RlZmluZSBHTF9JTkNMVVNJVkVfRVhUICAgICAgICAgICAgICAgICAgMHg4RjEwCisjZGVmaW5l
IEdMX0VYQ0xVU0lWRV9FWFQgICAgICAgICAgICAgICAgICAweDhGMTEKKyNkZWZpbmUgR0xfV0lO
RE9XX1JFQ1RBTkdMRV9FWFQgICAgICAgICAgIDB4OEYxMgorI2RlZmluZSBHTF9XSU5ET1dfUkVD
VEFOR0xFX01PREVfRVhUICAgICAgMHg4RjEzCisjZGVmaW5lIEdMX01BWF9XSU5ET1dfUkVDVEFO
R0xFU19FWFQgICAgICAweDhGMTQKKyNkZWZpbmUgR0xfTlVNX1dJTkRPV19SRUNUQU5HTEVTX0VY
VCAgICAgIDB4OEYxNQordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xXSU5ET1dSRUNU
QU5HTEVTRVhUUFJPQykgKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAq
Ym94KTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xXaW5kb3dSZWN0YW5nbGVzRVhUIChHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0xpbnQgKmJveCk7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9FWFRfd2luZG93X3JlY3Rh
bmdsZXMgKi8KKwogI2lmbmRlZiBHTF9GSl9zaGFkZXJfYmluYXJ5X0dDQ1NPCiAjZGVmaW5lIEdM
X0ZKX3NoYWRlcl9iaW5hcnlfR0NDU08gMQogI2RlZmluZSBHTF9HQ0NTT19TSEFERVJfQklOQVJZ
X0ZKICAgICAgICAgMHg5MjYwCiAjZW5kaWYgLyogR0xfRkpfc2hhZGVyX2JpbmFyeV9HQ0NTTyAq
LwogCisjaWZuZGVmIEdMX0lNR19iaW5kbGVzc190ZXh0dXJlCisjZGVmaW5lIEdMX0lNR19iaW5k
bGVzc190ZXh0dXJlIDEKK3R5cGVkZWYgR0x1aW50NjQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFRF
WFRVUkVIQU5ETEVJTUdQUk9DKSAoR0x1aW50IHRleHR1cmUpOwordHlwZWRlZiBHTHVpbnQ2NCAo
R0xfQVBJRU5UUllQIFBGTkdMR0VUVEVYVFVSRVNBTVBMRVJIQU5ETEVJTUdQUk9DKSAoR0x1aW50
IHRleHR1cmUsIEdMdWludCBzYW1wbGVyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMVU5JRk9STUhBTkRMRVVJNjRJTUdQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMdWludDY0IHZh
bHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STUhBTkRMRVVJNjRW
SU1HUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQ2NCAq
dmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STUhB
TkRMRVVJNjRJTUdQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQ2
NCB2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JN
SEFORExFVUk2NFZJTUdQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTHVpbnQ2NCAqdmFsdWVzKTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9U
T1RZUEVTCitHTF9BUElDQUxMIEdMdWludDY0IEdMX0FQSUVOVFJZIGdsR2V0VGV4dHVyZUhhbmRs
ZUlNRyAoR0x1aW50IHRleHR1cmUpOworR0xfQVBJQ0FMTCBHTHVpbnQ2NCBHTF9BUElFTlRSWSBn
bEdldFRleHR1cmVTYW1wbGVySGFuZGxlSU1HIChHTHVpbnQgdGV4dHVyZSwgR0x1aW50IHNhbXBs
ZXIpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybUhhbmRsZXVpNjRJTUcg
KEdMaW50IGxvY2F0aW9uLCBHTHVpbnQ2NCB2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xVbmlmb3JtSGFuZGxldWk2NHZJTUcgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTHVpbnQ2NCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsUHJvZ3JhbVVuaWZvcm1IYW5kbGV1aTY0SU1HIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9j
YXRpb24sIEdMdWludDY0IHZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBy
b2dyYW1Vbmlmb3JtSGFuZGxldWk2NHZJTUcgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50NjQgKnZhbHVlcyk7CisjZW5kaWYKKyNlbmRp
ZiAvKiBHTF9JTUdfYmluZGxlc3NfdGV4dHVyZSAqLworCisjaWZuZGVmIEdMX0lNR19mcmFtZWJ1
ZmZlcl9kb3duc2FtcGxlCisjZGVmaW5lIEdMX0lNR19mcmFtZWJ1ZmZlcl9kb3duc2FtcGxlIDEK
KyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNBTVBMRV9BTkRfRE9XTlNB
TVBMRV9JTUcgMHg5MTNDCisjZGVmaW5lIEdMX05VTV9ET1dOU0FNUExFX1NDQUxFU19JTUcgICAg
ICAweDkxM0QKKyNkZWZpbmUgR0xfRE9XTlNBTVBMRV9TQ0FMRVNfSU1HICAgICAgICAgIDB4OTEz
RQorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfU0NBTEVfSU1HIDB4
OTEzRgordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xGUkFNRUJVRkZFUlRFWFRVUkUy
RERPV05TQU1QTEVJTUdQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdM
ZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xpbnQgeHNjYWxl
LCBHTGludCB5c2NhbGUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xGUkFNRUJV
RkZFUlRFWFRVUkVMQVlFUkRPV05TQU1QTEVJTUdQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IGF0dGFjaG1lbnQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xpbnQgbGF5ZXIsIEdM
aW50IHhzY2FsZSwgR0xpbnQgeXNjYWxlKTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRERvd25zYW1w
bGVJTUcgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0
LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwsIEdMaW50IHhzY2FsZSwgR0xpbnQgeXNjYWxl
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVy
RG93bnNhbXBsZUlNRyAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMdWludCB0
ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xpbnQgbGF5ZXIsIEdMaW50IHhzY2FsZSwgR0xpbnQgeXNj
YWxlKTsKKyNlbmRpZgorI2VuZGlmIC8qIEdMX0lNR19mcmFtZWJ1ZmZlcl9kb3duc2FtcGxlICov
CisKICNpZm5kZWYgR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZQogI2RlZmlu
ZSBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIDEKICNkZWZpbmUgR0xfUkVO
REVSQlVGRkVSX1NBTVBMRVNfSU1HICAgICAgIDB4OTEzMwpAQCAtMjI1Myw2ICsyNDQ0LDE4IEBA
IEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlz
YW1wbGVJTUcgKEdMZW51bSB0YXJnZXQsCiAjZGVmaW5lIEdMX0NPTVBSRVNTRURfUkdCQV9QVlJU
Q180QlBQVjJfSU1HIDB4OTEzOAogI2VuZGlmIC8qIEdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9u
X3B2cnRjMiAqLwogCisjaWZuZGVmIEdMX0lNR190ZXh0dXJlX2ZpbHRlcl9jdWJpYworI2RlZmlu
ZSBHTF9JTUdfdGV4dHVyZV9maWx0ZXJfY3ViaWMgMQorI2RlZmluZSBHTF9DVUJJQ19JTUcgICAg
ICAgICAgICAgICAgICAgICAgMHg5MTM5CisjZGVmaW5lIEdMX0NVQklDX01JUE1BUF9ORUFSRVNU
X0lNRyAgICAgICAweDkxM0EKKyNkZWZpbmUgR0xfQ1VCSUNfTUlQTUFQX0xJTkVBUl9JTUcgICAg
ICAgIDB4OTEzQgorI2VuZGlmIC8qIEdMX0lNR190ZXh0dXJlX2ZpbHRlcl9jdWJpYyAqLworCisj
aWZuZGVmIEdMX0lOVEVMX2NvbnNlcnZhdGl2ZV9yYXN0ZXJpemF0aW9uCisjZGVmaW5lIEdMX0lO
VEVMX2NvbnNlcnZhdGl2ZV9yYXN0ZXJpemF0aW9uIDEKKyNkZWZpbmUgR0xfQ09OU0VSVkFUSVZF
X1JBU1RFUklaQVRJT05fSU5URUwgMHg4M0ZFCisjZW5kaWYgLyogR0xfSU5URUxfY29uc2VydmF0
aXZlX3Jhc3Rlcml6YXRpb24gKi8KKwogI2lmbmRlZiBHTF9JTlRFTF9mcmFtZWJ1ZmZlcl9DTUFB
CiAjZGVmaW5lIEdMX0lOVEVMX2ZyYW1lYnVmZmVyX0NNQUEgMQogdHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xBUFBMWUZSQU1FQlVGRkVSQVRUQUNITUVOVENNQUFJTlRFTFBST0MpICh2
b2lkKTsKQEAgLTI0MjksNiArMjYzMiwxNyBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xTdWJwaXhlbFByZWNpc2lvbkJpYXNOViAoR0x1aW50IHhiaXRzLCBHTHVpbnQgeWJpdAogI2Vu
ZGlmCiAjZW5kaWYgLyogR0xfTlZfY29uc2VydmF0aXZlX3Jhc3RlciAqLwogCisjaWZuZGVmIEdM
X05WX2NvbnNlcnZhdGl2ZV9yYXN0ZXJfcHJlX3NuYXBfdHJpYW5nbGVzCisjZGVmaW5lIEdMX05W
X2NvbnNlcnZhdGl2ZV9yYXN0ZXJfcHJlX3NuYXBfdHJpYW5nbGVzIDEKKyNkZWZpbmUgR0xfQ09O
U0VSVkFUSVZFX1JBU1RFUl9NT0RFX05WICAgIDB4OTU0RAorI2RlZmluZSBHTF9DT05TRVJWQVRJ
VkVfUkFTVEVSX01PREVfUE9TVF9TTkFQX05WIDB4OTU0RQorI2RlZmluZSBHTF9DT05TRVJWQVRJ
VkVfUkFTVEVSX01PREVfUFJFX1NOQVBfVFJJQU5HTEVTX05WIDB4OTU0RgordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xDT05TRVJWQVRJVkVSQVNURVJQQVJBTUVURVJJTlZQUk9DKSAo
R0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29uc2VydmF0aXZlUmFzdGVyUGFyYW1ldGVy
aU5WIChHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKKyNlbmRpZgorI2VuZGlmIC8qIEdMX05W
X2NvbnNlcnZhdGl2ZV9yYXN0ZXJfcHJlX3NuYXBfdHJpYW5nbGVzICovCisKICNpZm5kZWYgR0xf
TlZfY29weV9idWZmZXIKICNkZWZpbmUgR0xfTlZfY29weV9idWZmZXIgMQogI2RlZmluZSBHTF9D
T1BZX1JFQURfQlVGRkVSX05WICAgICAgICAgICAgMHg4RjM2CkBAIC0yNjE2LDYgKzI4MzAsMTA5
IEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZU5WIChHTGVudW0gdGFyZ2V0LCBHCiAjZGVmaW5lIEdMX05WX2dlb21ldHJ5X3NoYWRl
cl9wYXNzdGhyb3VnaCAxCiAjZW5kaWYgLyogR0xfTlZfZ2VvbWV0cnlfc2hhZGVyX3Bhc3N0aHJv
dWdoICovCiAKKyNpZm5kZWYgR0xfTlZfZ3B1X3NoYWRlcjUKKyNkZWZpbmUgR0xfTlZfZ3B1X3No
YWRlcjUgMQordHlwZWRlZiBraHJvbm9zX2ludDY0X3QgR0xpbnQ2NEVYVDsKK3R5cGVkZWYga2hy
b25vc191aW50NjRfdCBHTHVpbnQ2NEVYVDsKKyNkZWZpbmUgR0xfSU5UNjRfTlYgICAgICAgICAg
ICAgICAgICAgICAgIDB4MTQwRQorI2RlZmluZSBHTF9VTlNJR05FRF9JTlQ2NF9OViAgICAgICAg
ICAgICAgMHgxNDBGCisjZGVmaW5lIEdMX0lOVDhfTlYgICAgICAgICAgICAgICAgICAgICAgICAw
eDhGRTAKKyNkZWZpbmUgR0xfSU5UOF9WRUMyX05WICAgICAgICAgICAgICAgICAgIDB4OEZFMQor
I2RlZmluZSBHTF9JTlQ4X1ZFQzNfTlYgICAgICAgICAgICAgICAgICAgMHg4RkUyCisjZGVmaW5l
IEdMX0lOVDhfVkVDNF9OViAgICAgICAgICAgICAgICAgICAweDhGRTMKKyNkZWZpbmUgR0xfSU5U
MTZfTlYgICAgICAgICAgICAgICAgICAgICAgIDB4OEZFNAorI2RlZmluZSBHTF9JTlQxNl9WRUMy
X05WICAgICAgICAgICAgICAgICAgMHg4RkU1CisjZGVmaW5lIEdMX0lOVDE2X1ZFQzNfTlYgICAg
ICAgICAgICAgICAgICAweDhGRTYKKyNkZWZpbmUgR0xfSU5UMTZfVkVDNF9OViAgICAgICAgICAg
ICAgICAgIDB4OEZFNworI2RlZmluZSBHTF9JTlQ2NF9WRUMyX05WICAgICAgICAgICAgICAgICAg
MHg4RkU5CisjZGVmaW5lIEdMX0lOVDY0X1ZFQzNfTlYgICAgICAgICAgICAgICAgICAweDhGRUEK
KyNkZWZpbmUgR0xfSU5UNjRfVkVDNF9OViAgICAgICAgICAgICAgICAgIDB4OEZFQgorI2RlZmlu
ZSBHTF9VTlNJR05FRF9JTlQ4X05WICAgICAgICAgICAgICAgMHg4RkVDCisjZGVmaW5lIEdMX1VO
U0lHTkVEX0lOVDhfVkVDMl9OViAgICAgICAgICAweDhGRUQKKyNkZWZpbmUgR0xfVU5TSUdORURf
SU5UOF9WRUMzX05WICAgICAgICAgIDB4OEZFRQorI2RlZmluZSBHTF9VTlNJR05FRF9JTlQ4X1ZF
QzRfTlYgICAgICAgICAgMHg4RkVGCisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVDE2X05WICAgICAg
ICAgICAgICAweDhGRjAKKyNkZWZpbmUgR0xfVU5TSUdORURfSU5UMTZfVkVDMl9OViAgICAgICAg
IDB4OEZGMQorI2RlZmluZSBHTF9VTlNJR05FRF9JTlQxNl9WRUMzX05WICAgICAgICAgMHg4RkYy
CisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVDE2X1ZFQzRfTlYgICAgICAgICAweDhGRjMKKyNkZWZp
bmUgR0xfVU5TSUdORURfSU5UNjRfVkVDMl9OViAgICAgICAgIDB4OEZGNQorI2RlZmluZSBHTF9V
TlNJR05FRF9JTlQ2NF9WRUMzX05WICAgICAgICAgMHg4RkY2CisjZGVmaW5lIEdMX1VOU0lHTkVE
X0lOVDY0X1ZFQzRfTlYgICAgICAgICAweDhGRjcKKyNkZWZpbmUgR0xfRkxPQVQxNl9OViAgICAg
ICAgICAgICAgICAgICAgIDB4OEZGOAorI2RlZmluZSBHTF9GTE9BVDE2X1ZFQzJfTlYgICAgICAg
ICAgICAgICAgMHg4RkY5CisjZGVmaW5lIEdMX0ZMT0FUMTZfVkVDM19OViAgICAgICAgICAgICAg
ICAweDhGRkEKKyNkZWZpbmUgR0xfRkxPQVQxNl9WRUM0X05WICAgICAgICAgICAgICAgIDB4OEZG
QgorI2RlZmluZSBHTF9QQVRDSEVTICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDBFCit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk0xSTY0TlZQUk9DKSAoR0xpbnQgbG9j
YXRpb24sIEdMaW50NjRFWFQgeCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVO
SUZPUk0ySTY0TlZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMaW50NjRFWFQgeCwgR0xpbnQ2NEVY
VCB5KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTNJNjROVlBST0Mp
IChHTGludCBsb2NhdGlvbiwgR0xpbnQ2NEVYVCB4LCBHTGludDY0RVhUIHksIEdMaW50NjRFWFQg
eik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk00STY0TlZQUk9DKSAo
R0xpbnQgbG9jYXRpb24sIEdMaW50NjRFWFQgeCwgR0xpbnQ2NEVYVCB5LCBHTGludDY0RVhUIHos
IEdMaW50NjRFWFQgdyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk0x
STY0Vk5WUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludDY0
RVhUICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk0ySTY0
Vk5WUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludDY0RVhU
ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk0zSTY0Vk5W
UFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludDY0RVhUICp2
YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk00STY0Vk5WUFJP
QykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludDY0RVhUICp2YWx1
ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk0xVUk2NE5WUFJPQykg
KEdMaW50IGxvY2F0aW9uLCBHTHVpbnQ2NEVYVCB4KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMVU5JRk9STTJVSTY0TlZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMdWludDY0RVhU
IHgsIEdMdWludDY0RVhUIHkpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklG
T1JNM1VJNjROVlBST0MpIChHTGludCBsb2NhdGlvbiwgR0x1aW50NjRFWFQgeCwgR0x1aW50NjRF
WFQgeSwgR0x1aW50NjRFWFQgeik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVO
SUZPUk00VUk2NE5WUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQ2NEVYVCB4LCBHTHVpbnQ2
NEVYVCB5LCBHTHVpbnQ2NEVYVCB6LCBHTHVpbnQ2NEVYVCB3KTsKK3R5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMVU5JRk9STTFVSTY0Vk5WUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTHVpbnQ2NEVYVCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xVTklGT1JNMlVJNjRWTlZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMdWludDY0RVhUICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFVOSUZPUk0zVUk2NFZOVlBST0MpIChHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0x1aW50NjRFWFQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMVU5JRk9STTRVSTY0Vk5WUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTHVpbnQ2NEVYVCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xHRVRVTklGT1JNSTY0Vk5WUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBs
b2NhdGlvbiwgR0xpbnQ2NEVYVCAqcGFyYW1zKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMUFJPR1JBTVVOSUZPUk0xSTY0TlZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxv
Y2F0aW9uLCBHTGludDY0RVhUIHgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQ
Uk9HUkFNVU5JRk9STTJJNjROVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24s
IEdMaW50NjRFWFQgeCwgR0xpbnQ2NEVYVCB5KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMUFJPR1JBTVVOSUZPUk0zSTY0TlZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxv
Y2F0aW9uLCBHTGludDY0RVhUIHgsIEdMaW50NjRFWFQgeSwgR0xpbnQ2NEVYVCB6KTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk00STY0TlZQUk9DKSAoR0x1
aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludDY0RVhUIHgsIEdMaW50NjRFWFQgeSwg
R0xpbnQ2NEVYVCB6LCBHTGludDY0RVhUIHcpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xQUk9HUkFNVU5JRk9STTFJNjRWTlZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludDY0RVhUICp2YWx1ZSk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNMkk2NFZOVlBST0MpIChHTHVp
bnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50NjRF
WFQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZP
Uk0zSTY0Vk5WUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xpbnQ2NEVYVCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xQUk9HUkFNVU5JRk9STTRJNjRWTlZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludDY0RVhUICp2YWx1ZSk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNMVVJNjROVlBST0MpIChH
THVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludDY0RVhUIHgpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTJVSTY0TlZQUk9DKSAoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQ2NEVYVCB4LCBHTHVpbnQ2NEVYVCB5KTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk0zVUk2NE5WUFJP
QykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50NjRFWFQgeCwgR0x1aW50
NjRFWFQgeSwgR0x1aW50NjRFWFQgeik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TFBST0dSQU1VTklGT1JNNFVJNjROVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRp
b24sIEdMdWludDY0RVhUIHgsIEdMdWludDY0RVhUIHksIEdMdWludDY0RVhUIHosIEdMdWludDY0
RVhUIHcpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTFV
STY0Vk5WUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0x1aW50NjRFWFQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMUFJPR1JBTVVOSUZPUk0yVUk2NFZOVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludDY0RVhUICp2YWx1ZSk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNM1VJNjRWTlZQUk9DKSAo
R0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVp
bnQ2NEVYVCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFN
VU5JRk9STTRVSTY0Vk5WUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0x1aW50NjRFWFQgKnZhbHVlKTsKKyNpZmRlZiBHTF9HTEVYVF9Q
Uk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtMWk2NE5WIChH
TGludCBsb2NhdGlvbiwgR0xpbnQ2NEVYVCB4KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbFVuaWZvcm0yaTY0TlYgKEdMaW50IGxvY2F0aW9uLCBHTGludDY0RVhUIHgsIEdMaW50NjRF
WFQgeSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtM2k2NE5WIChHTGlu
dCBsb2NhdGlvbiwgR0xpbnQ2NEVYVCB4LCBHTGludDY0RVhUIHksIEdMaW50NjRFWFQgeik7CitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtNGk2NE5WIChHTGludCBsb2NhdGlv
biwgR0xpbnQ2NEVYVCB4LCBHTGludDY0RVhUIHksIEdMaW50NjRFWFQgeiwgR0xpbnQ2NEVYVCB3
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm0xaTY0dk5WIChHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQ2NEVYVCAqdmFsdWUpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTJpNjR2TlYgKEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGludDY0RVhUICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xVbmlmb3JtM2k2NHZOViAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIGNvbnN0IEdMaW50NjRFWFQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbFVuaWZvcm00aTY0dk5WIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0xpbnQ2NEVYVCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9y
bTF1aTY0TlYgKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQ2NEVYVCB4KTsKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbFVuaWZvcm0ydWk2NE5WIChHTGludCBsb2NhdGlvbiwgR0x1aW50NjRF
WFQgeCwgR0x1aW50NjRFWFQgeSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlm
b3JtM3VpNjROViAoR0xpbnQgbG9jYXRpb24sIEdMdWludDY0RVhUIHgsIEdMdWludDY0RVhUIHks
IEdMdWludDY0RVhUIHopOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTR1
aTY0TlYgKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQ2NEVYVCB4LCBHTHVpbnQ2NEVYVCB5LCBHTHVp
bnQ2NEVYVCB6LCBHTHVpbnQ2NEVYVCB3KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bFVuaWZvcm0xdWk2NHZOViAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
dWludDY0RVhUICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3Jt
MnVpNjR2TlYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQ2NEVY
VCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTN1aTY0dk5W
IChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50NjRFWFQgKnZhbHVl
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm00dWk2NHZOViAoR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludDY0RVhUICp2YWx1ZSk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRVbmlmb3JtaTY0dk5WIChHTHVpbnQgcHJvZ3Jh
bSwgR0xpbnQgbG9jYXRpb24sIEdMaW50NjRFWFQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTFpNjROViAoR0x1aW50IHByb2dyYW0sIEdMaW50
IGxvY2F0aW9uLCBHTGludDY0RVhUIHgpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
UHJvZ3JhbVVuaWZvcm0yaTY0TlYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xp
bnQ2NEVYVCB4LCBHTGludDY0RVhUIHkpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
UHJvZ3JhbVVuaWZvcm0zaTY0TlYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xp
bnQ2NEVYVCB4LCBHTGludDY0RVhUIHksIEdMaW50NjRFWFQgeik7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTRpNjROViAoR0x1aW50IHByb2dyYW0sIEdMaW50
IGxvY2F0aW9uLCBHTGludDY0RVhUIHgsIEdMaW50NjRFWFQgeSwgR0xpbnQ2NEVYVCB6LCBHTGlu
dDY0RVhUIHcpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0x
aTY0dk5WIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMaW50NjRFWFQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFBy
b2dyYW1Vbmlmb3JtMmk2NHZOViAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGludDY0RVhUICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTNpNjR2TlYgKEdMdWludCBwcm9ncmFtLCBHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQ2NEVYVCAqdmFsdWUpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm00aTY0dk5WIChHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50NjRFWFQgKnZh
bHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMXVpNjRO
ViAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQ2NEVYVCB4KTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMnVpNjROViAoR0x1aW50IHBy
b2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQ2NEVYVCB4LCBHTHVpbnQ2NEVYVCB5KTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtM3VpNjROViAoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQ2NEVYVCB4LCBHTHVpbnQ2NEVYVCB5LCBH
THVpbnQ2NEVYVCB6KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlm
b3JtNHVpNjROViAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQ2NEVYVCB4
LCBHTHVpbnQ2NEVYVCB5LCBHTHVpbnQ2NEVYVCB6LCBHTHVpbnQ2NEVYVCB3KTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMXVpNjR2TlYgKEdMdWludCBwcm9n
cmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50NjRFWFQgKnZh
bHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMnVpNjR2
TlYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0x1aW50NjRFWFQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dy
YW1Vbmlmb3JtM3VpNjR2TlYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0x1aW50NjRFWFQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtNHVpNjR2TlYgKEdMdWludCBwcm9ncmFtLCBHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50NjRFWFQgKnZhbHVlKTsKKyNlbmRp
ZgorI2VuZGlmIC8qIEdMX05WX2dwdV9zaGFkZXI1ICovCisKICNpZm5kZWYgR0xfTlZfaW1hZ2Vf
Zm9ybWF0cwogI2RlZmluZSBHTF9OVl9pbWFnZV9mb3JtYXRzIDEKICNlbmRpZiAvKiBHTF9OVl9p
bWFnZV9mb3JtYXRzICovCkBAIC0zMDIyLDYgKzMzMzksMTAgQEAgR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsUmVzb2x2ZURlcHRoVmFsdWVzTlYgKHZvaWQpOwogI2RlZmluZSBHTF9OVl9z
YW1wbGVfbWFza19vdmVycmlkZV9jb3ZlcmFnZSAxCiAjZW5kaWYgLyogR0xfTlZfc2FtcGxlX21h
c2tfb3ZlcnJpZGVfY292ZXJhZ2UgKi8KIAorI2lmbmRlZiBHTF9OVl9zaGFkZXJfYXRvbWljX2Zw
MTZfdmVjdG9yCisjZGVmaW5lIEdMX05WX3NoYWRlcl9hdG9taWNfZnAxNl92ZWN0b3IgMQorI2Vu
ZGlmIC8qIEdMX05WX3NoYWRlcl9hdG9taWNfZnAxNl92ZWN0b3IgKi8KKwogI2lmbmRlZiBHTF9O
Vl9zaGFkZXJfbm9wZXJzcGVjdGl2ZV9pbnRlcnBvbGF0aW9uCiAjZGVmaW5lIEdMX05WX3NoYWRl
cl9ub3BlcnNwZWN0aXZlX2ludGVycG9sYXRpb24gMQogI2VuZGlmIC8qIEdMX05WX3NoYWRlcl9u
b3BlcnNwZWN0aXZlX2ludGVycG9sYXRpb24gKi8KQEAgLTMwODgsMTEgKzM0MDksMzIgQEAgR0xf
QVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc0VuYWJsZWRpTlYgKEdMZW51bSB0YXJn
ZXQsIEdMdWludCBpbmRleCk7CiAjZGVmaW5lIEdMX05WX3ZpZXdwb3J0X2FycmF5MiAxCiAjZW5k
aWYgLyogR0xfTlZfdmlld3BvcnRfYXJyYXkyICovCiAKKyNpZm5kZWYgR0xfTlZfdmlld3BvcnRf
c3dpenpsZQorI2RlZmluZSBHTF9OVl92aWV3cG9ydF9zd2l6emxlIDEKKyNkZWZpbmUgR0xfVklF
V1BPUlRfU1dJWlpMRV9QT1NJVElWRV9YX05WIDB4OTM1MAorI2RlZmluZSBHTF9WSUVXUE9SVF9T
V0laWkxFX05FR0FUSVZFX1hfTlYgMHg5MzUxCisjZGVmaW5lIEdMX1ZJRVdQT1JUX1NXSVpaTEVf
UE9TSVRJVkVfWV9OViAweDkzNTIKKyNkZWZpbmUgR0xfVklFV1BPUlRfU1dJWlpMRV9ORUdBVElW
RV9ZX05WIDB4OTM1MworI2RlZmluZSBHTF9WSUVXUE9SVF9TV0laWkxFX1BPU0lUSVZFX1pfTlYg
MHg5MzU0CisjZGVmaW5lIEdMX1ZJRVdQT1JUX1NXSVpaTEVfTkVHQVRJVkVfWl9OViAweDkzNTUK
KyNkZWZpbmUgR0xfVklFV1BPUlRfU1dJWlpMRV9QT1NJVElWRV9XX05WIDB4OTM1NgorI2RlZmlu
ZSBHTF9WSUVXUE9SVF9TV0laWkxFX05FR0FUSVZFX1dfTlYgMHg5MzU3CisjZGVmaW5lIEdMX1ZJ
RVdQT1JUX1NXSVpaTEVfWF9OViAgICAgICAgICAweDkzNTgKKyNkZWZpbmUgR0xfVklFV1BPUlRf
U1dJWlpMRV9ZX05WICAgICAgICAgIDB4OTM1OQorI2RlZmluZSBHTF9WSUVXUE9SVF9TV0laWkxF
X1pfTlYgICAgICAgICAgMHg5MzVBCisjZGVmaW5lIEdMX1ZJRVdQT1JUX1NXSVpaTEVfV19OViAg
ICAgICAgICAweDkzNUIKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVklFV1BPUlRT
V0laWkxFTlZQUk9DKSAoR0x1aW50IGluZGV4LCBHTGVudW0gc3dpenpsZXgsIEdMZW51bSBzd2l6
emxleSwgR0xlbnVtIHN3aXp6bGV6LCBHTGVudW0gc3dpenpsZXcpOworI2lmZGVmIEdMX0dMRVhU
X1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZpZXdwb3J0U3dpenps
ZU5WIChHTHVpbnQgaW5kZXgsIEdMZW51bSBzd2l6emxleCwgR0xlbnVtIHN3aXp6bGV5LCBHTGVu
dW0gc3dpenpsZXosIEdMZW51bSBzd2l6emxldyk7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9OVl92
aWV3cG9ydF9zd2l6emxlICovCisKICNpZm5kZWYgR0xfT1ZSX211bHRpdmlldwogI2RlZmluZSBH
TF9PVlJfbXVsdGl2aWV3IDEKICNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhU
VVJFX05VTV9WSUVXU19PVlIgMHg5NjMwCiAjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1F
TlRfVEVYVFVSRV9CQVNFX1ZJRVdfSU5ERVhfT1ZSIDB4OTYzMgogI2RlZmluZSBHTF9NQVhfVklF
V1NfT1ZSICAgICAgICAgICAgICAgICAgMHg5NjMxCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0lO
Q09NUExFVEVfVklFV19UQVJHRVRTX09WUiAweDk2MzMKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMRlJBTUVCVUZGRVJURVhUVVJFTVVMVElWSUVXT1ZSUFJPQykgKEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwsIEdMaW50
IGJhc2VWaWV3SW5kZXgsIEdMc2l6ZWkgbnVtVmlld3MpOwogI2lmZGVmIEdMX0dMRVhUX1BST1RP
VFlQRVMKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZyYW1lYnVmZmVyVGV4dHVyZU11
bHRpdmlld09WUiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMdWludCB0ZXh0
dXJlLCBHTGludCBsZXZlbCwgR0xpbnQgYmFzZVZpZXdJbmRleCwgR0xzaXplaSBudW1WaWV3cyk7
CkBAIC0zMTAzLDYgKzM0NDUsMTQgQEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRnJh
bWVidWZmZXJUZXh0dXJlTXVsdGl2aWV3T1ZSIChHTGVudW0gdGFyZ2V0LCBHTGUKICNkZWZpbmUg
R0xfT1ZSX211bHRpdmlldzIgMQogI2VuZGlmIC8qIEdMX09WUl9tdWx0aXZpZXcyICovCiAKKyNp
Zm5kZWYgR0xfT1ZSX211bHRpdmlld19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUKKyNk
ZWZpbmUgR0xfT1ZSX211bHRpdmlld19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUgMQor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xGUkFNRUJVRkZFUlRFWFRVUkVNVUxUSVNB
TVBMRU1VTFRJVklFV09WUlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwg
R0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTHNpemVpIHNhbXBsZXMsIEdMaW50IGJhc2VW
aWV3SW5kZXgsIEdMc2l6ZWkgbnVtVmlld3MpOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZyYW1lYnVmZmVyVGV4dHVyZU11bHRpc2Ft
cGxlTXVsdGl2aWV3T1ZSIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0x1aW50
IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTHNpemVpIHNhbXBsZXMsIEdMaW50IGJhc2VWaWV3SW5k
ZXgsIEdMc2l6ZWkgbnVtVmlld3MpOworI2VuZGlmCisjZW5kaWYgLyogR0xfT1ZSX211bHRpdmll
d19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUgKi8KKwogI2lmbmRlZiBHTF9RQ09NX2Fs
cGhhX3Rlc3QKICNkZWZpbmUgR0xfUUNPTV9hbHBoYV90ZXN0IDEKICNkZWZpbmUgR0xfQUxQSEFf
VEVTVF9RQ09NICAgICAgICAgICAgICAgIDB4MEJDMApAQCAtMzI3Miw3ICszNjIyLDcgQEAgdHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRVTklGT1JNSVZST0JVU1RBTkdMRSkgKEdM
dWludCBwcm9ncmFtLCBHTGludAogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRW
RVJURVhBVFRSSUJGVlJPQlVTVEFOR0xFKSAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdM
c2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGZsb2F0ICpwYXJhbXMpOwogdHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRWRVJURVhBVFRSSUJJVlJPQlVTVEFOR0xFKSAo
R0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVu
Z3RoLCBHTGludCAqcGFyYW1zKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VU
VkVSVEVYQVRUUklCUE9JTlRFUlZST0JVU1RBTkdMRSkgKEdMdWludCBpbmRleCwgR0xlbnVtIHBu
YW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBvaW50ZXIpOwot
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xSRUFEUElYRUxTUk9CVVNUQU5HTEUpIChH
TGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZv
cm1hdCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCB2b2lk
ICpwaXhlbHMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xSRUFEUElYRUxTUk9C
VVNUQU5HTEUpIChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAq
bGVuZ3RoLCBHTHNpemVpICpjb2x1bW5zLCBHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpOwog
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xURVhJTUFHRTJEUk9CVVNUQU5HTEUpIChH
TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkg
d2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLCBHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscyk7CiB0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFBBUkFNRVRFUkZWUk9CVVNUQU5HTEUpIChHTGVudW0g
dGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0xmbG9hdCAqcGFy
YW1zKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYUEFSQU1FVEVSSVZST0JV
U1RBTkdMRSkgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBj
b25zdCBHTGludCAqcGFyYW1zKTsKQEAgLTMzMDIsNyArMzY1Miw3IEBAIHR5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMR0VUTVVMVElTQU1QTEVGVlJPQlVTVEFOR0xFKSAoR0xlbnVtIHBu
YW1lLCBHTHVpCiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFRFWExFVkVMUEFS
QU1FVEVSSVZST0JVU1RBTkdMRSkgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0g
cG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsK
IHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVEVYTEVWRUxQQVJBTUVURVJGVlJP
QlVTVEFOR0xFKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBwbmFtZSwgR0xz
aXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMZmxvYXQgKnBhcmFtcyk7CiB0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBPSU5URVJWUk9CVVNUQU5HTEVST0JVU1RBTkdM
RSkgKEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIHZvaWQg
KipwYXJhbXMpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xSRUFETlBJWEVMU1JP
QlVTVEFOR0xFKSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgdm9pZCAqZGF0YSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFJF
QUROUElYRUxTUk9CVVNUQU5HTEUpIChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6
ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTHNpemVpICpjb2x1bW5zLCBHTHNpemVpICpyb3dzLCB2b2lk
ICpkYXRhKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUTlVOSUZPUk1GVlJP
QlVTVEFOR0xFKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNp
emUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xmbG9hdCAqcGFyYW1zKTsKIHR5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMR0VUTlVOSUZPUk1JVlJPQlVTVEFOR0xFKSAoR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQg
KnBhcmFtcyk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVE5VTklGT1JNVUlW
Uk9CVVNUQU5HTEUpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVm
U2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTHVpbnQgKnBhcmFtcyk7CkBAIC0zMzMzLDcgKzM2ODMs
NyBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRVbmlmb3JtaXZSb2J1c3RBTkdM
RSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvYwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsR2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRSAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5h
bWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGZsb2F0ICpwYXJhbXMpOwog
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdM
RSAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAq
bGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdl
dFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUgKEdMdWludCBpbmRleCwgR0xlbnVtIHBu
YW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBvaW50ZXIpOwot
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUmVhZFBpeGVsc1JvYnVzdEFOR0xFIChHTGlu
dCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCB2b2lkICpw
aXhlbHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUmVhZFBpeGVsc1JvYnVzdEFO
R0xFIChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3Ro
LCBHTHNpemVpICpjb2x1bW5zLCBHTHNpemVpICpyb3dzLCB2b2lkICpwaXhlbHMpOwogR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4SW1hZ2UyRFJvYnVzdEFOR0xFIChHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBH
THNpemVpIGJ1ZlNpemUsIGNvbnN0IHZvaWQgKnBpeGVscyk7CiBHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFIChHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKIEdMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUgKEdMZW51
bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBjb25zdCBHTGludCAqcGFy
YW1zKTsKQEAgLTMzNjMsNyArMzcxMyw3IEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSAoR0xlbnVtIHBuYW1lLCBHTHVpbnQKIEdMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZT
aXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOwogR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFIChHTGVudW0gdGFy
Z2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgR0xmbG9hdCAqcGFyYW1zKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRSAoR0xlbnVtIHBuYW1lLCBHTHNpemVp
IGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqKnBhcmFtcyk7Ci1HTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xSZWFkblBpeGVsc1JvYnVzdEFOR0xFIChHTGludCB4LCBHTGludCB5
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCB2b2lkICpkYXRhKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlYWRuUGl4ZWxzUm9idXN0QU5HTEUgKEdMaW50IHgs
IEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBH
TGVudW0gdHlwZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMc2l6ZWkgKmNv
bHVtbnMsIEdMc2l6ZWkgKnJvd3MsIHZvaWQgKmRhdGEpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQ
SUVOVFJZIGdsR2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGZsb2F0ICpwYXJh
bXMpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0blVuaWZvcm1pdlJvYnVzdEFO
R0xFIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xz
aXplaSAqbGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbEdldG5Vbmlmb3JtdWl2Um9idXN0QU5HTEUgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMdWludCAqcGFyYW1zKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wycGxh
dGZvcm0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wycGxhdGZv
cm0uaAppbmRleCA2NjYzY2Q0ZTcyYWM1ZDFjZmRiZDNmYzUwMjM2MDY5NWUxMTI3YmNjLi44OWQ0
ZDQ0ZGMxYmJmZDFmMTllZDI3ODk5MDEyNzY1NjEzNDZmN2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2dsMnBsYXRmb3JtLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJwbGF0Zm9ybS5oCkBAIC0xNyw3ICsx
Nyw3IEBACiAgKiBieSBmaWxpbmcgYSBidWcgYWdhaW5zdCBwcm9kdWN0ICJPcGVuR0wtRVMiIGNv
bXBvbmVudCAiUmVnaXN0cnkiLgogICovCiAKLSNpbmNsdWRlIDxBTkdMRS9raHJwbGF0Zm9ybS5o
PgorI2luY2x1ZGUgPEtIUi9raHJwbGF0Zm9ybS5oPgogCiAjaWZuZGVmIEdMX0FQSUNBTEwKICNk
ZWZpbmUgR0xfQVBJQ0FMTCAgS0hST05PU19BUElDQUxMCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2dsMnNvZnRsaW5raW5nLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2dsMnNvZnRsaW5raW5nLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDE3YjExNWM0MDhmMTAzZDZiMjY5MjVlNzhmOWY3MmI1YjJhYWQ4
NzYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJzb2Z0bGlua2luZy5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTcwICswLDAgQEAKLS8qIAotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIAotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgIlNvZnRM
aW5raW5nLmgiCi0KLVNPRlRfTElOS19MSUJSQVJZKGxpYkdMRVN2MikKLQotU09GVF9MSU5LKGxp
YkdMRVN2MiwgZ2xBY3RpdmVUZXh0dXJlLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0ZXh0
dXJlKSwgKHRleHR1cmUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQXR0YWNoU2hhZGVyLCB2
b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKSwgKHByb2dy
YW0sIHNoYWRlcikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xCaW5kQXR0cmliTG9jYXRpb24s
IHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgY29uc3Qg
R0xjaGFyKiBuYW1lKSwgKHByb2dyYW0sIGluZGV4LCBuYW1lKSk7Ci1TT0ZUX0xJTksobGliR0xF
U3YyLCBnbEJpbmRCdWZmZXIsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0x1
aW50IGJ1ZmZlciksICh0YXJnZXQsIGJ1ZmZlcikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xC
aW5kRnJhbWVidWZmZXIsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0x1aW50
IGZyYW1lYnVmZmVyKSwgKHRhcmdldCwgZnJhbWVidWZmZXIpKTsKLVNPRlRfTElOSyhsaWJHTEVT
djIsIGdsQmluZFJlbmRlcmJ1ZmZlciwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0
LCBHTHVpbnQgcmVuZGVyYnVmZmVyKSwgKHRhcmdldCwgcmVuZGVyYnVmZmVyKSk7Ci1TT0ZUX0xJ
TksobGliR0xFU3YyLCBnbEJpbmRUZXh0dXJlLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0
YXJnZXQsIEdMdWludCB0ZXh0dXJlKSwgKHRhcmdldCwgdGV4dHVyZSkpOwotU09GVF9MSU5LKGxp
YkdMRVN2MiwgZ2xCbGVuZENvbG9yLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMY2xhbXBmIHJlZCwg
R0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBmIGFscGhhKSwgKHJlZCwgZ3Jl
ZW4sIGJsdWUsIGFscGhhKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEJsZW5kRXF1YXRpb24s
IHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIG1vZGUpLCAobW9kZSkpOwotU09GVF9MSU5LKGxp
YkdMRVN2MiwgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xl
bnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpLCAobW9kZVJHQiwgbW9kZUFscGhhKSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbEJsZW5kRnVuYywgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVu
dW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpLCAoc2ZhY3RvciwgZGZhY3RvcikpOwotU09GVF9M
SU5LKGxpYkdMRVN2MiwgZ2xCbGVuZEZ1bmNTZXBhcmF0ZSwgdm9pZCwgR0xfQVBJRU5UUlksIChH
TGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RB
bHBoYSksIChzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKSk7Ci1TT0ZUX0xJTkso
bGliR0xFU3YyLCBnbEJ1ZmZlckRhdGEsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdl
dCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCBHTHZvaWQqIGRhdGEsIEdMZW51bSB1c2FnZSksICh0
YXJnZXQsIHNpemUsIGRhdGEsIHVzYWdlKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEJ1ZmZl
clN1YkRhdGEsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zm
c2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSksICh0YXJnZXQsIG9mZnNl
dCwgc2l6ZSwgZGF0YSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xDaGVja0ZyYW1lYnVmZmVy
U3RhdHVzLCBHTGVudW0sIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCksICh0YXJnZXQpKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQ2xlYXIsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xiaXRm
aWVsZCBtYXNrKSwgKG1hc2spKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQ2xlYXJDb2xvciwg
dm9pZCwgR0xfQVBJRU5UUlksIChHTGNsYW1wZiByZWQsIEdMY2xhbXBmIGdyZWVuLCBHTGNsYW1w
ZiBibHVlLCBHTGNsYW1wZiBhbHBoYSksIChyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpOwotU09G
VF9MSU5LKGxpYkdMRVN2MiwgZ2xDbGVhckRlcHRoZiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGNs
YW1wZiBkZXB0aCksIChkZXB0aCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xDbGVhclN0ZW5j
aWwsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgcyksIChzKSk7Ci1TT0ZUX0xJTksobGliR0xF
U3YyLCBnbENvbG9yTWFzaywgdm9pZCwgR0xfQVBJRU5UUlksIChHTGJvb2xlYW4gcmVkLCBHTGJv
b2xlYW4gZ3JlZW4sIEdMYm9vbGVhbiBibHVlLCBHTGJvb2xlYW4gYWxwaGEpLCAocmVkLCBncmVl
biwgYmx1ZSwgYWxwaGEpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQ29tcGlsZVNoYWRlciwg
dm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgc2hhZGVyKSwgKHNoYWRlcikpOwotU09GVF9MSU5L
KGxpYkdMRVN2MiwgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRCwgdm9pZCwgR0xfQVBJRU5UUlksIChH
TGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwg
Y29uc3QgR0x2b2lkKiBkYXRhKSwgKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBib3JkZXIsIGltYWdlU2l6ZSwgZGF0YSkpOwotU09GVF9MSU5LKGxpYkdMRVN2
MiwgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0g
dGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXpl
LCBjb25zdCBHTHZvaWQqIGRhdGEpLCAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCBpbWFnZVNpemUsIGRhdGEpKTsKLVNPRlRfTElOSyhsaWJH
TEVTdjIsIGdsQ29weVRleEltYWdlMkQsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdl
dCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xpbnQgeCwgR0xpbnQgeSwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciksICh0YXJnZXQsIGxl
dmVsLCBpbnRlcm5hbGZvcm1hdCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgYm9yZGVyKSk7Ci1TT0ZU
X0xJTksobGliR0xFU3YyLCBnbENvcHlUZXhTdWJJbWFnZTJELCB2b2lkLCBHTF9BUElFTlRSWSwg
KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0
LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCksICh0YXJn
ZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7Ci1TT0ZU
X0xJTksobGliR0xFU3YyLCBnbENyZWF0ZVByb2dyYW0sIEdMdWludCwgR0xfQVBJRU5UUlksICh2
b2lkKSwgKCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xDcmVhdGVTaGFkZXIsIEdMdWludCwg
R0xfQVBJRU5UUlksIChHTGVudW0gdHlwZSksICh0eXBlKSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbEN1bGxGYWNlLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSBtb2RlKSwgKG1vZGUpKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRGVsZXRlQnVmZmVycywgdm9pZCwgR0xfQVBJRU5UUlks
IChHTHNpemVpIG4sIGNvbnN0IEdMdWludCogYnVmZmVycyksIChuLCBidWZmZXJzKSk7Ci1TT0ZU
X0xJTksobGliR0xFU3YyLCBnbERlbGV0ZUZyYW1lYnVmZmVycywgdm9pZCwgR0xfQVBJRU5UUlks
IChHTHNpemVpIG4sIGNvbnN0IEdMdWludCogZnJhbWVidWZmZXJzKSwgKG4sIGZyYW1lYnVmZmVy
cykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xEZWxldGVQcm9ncmFtLCB2b2lkLCBHTF9BUElF
TlRSWSwgKEdMdWludCBwcm9ncmFtKSwgKHByb2dyYW0pKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsRGVsZXRlUmVuZGVyYnVmZmVycywgdm9pZCwgR0xfQVBJRU5UUlksIChHTHNpemVpIG4sIGNv
bnN0IEdMdWludCogcmVuZGVyYnVmZmVycyksIChuLCByZW5kZXJidWZmZXJzKSk7Ci1TT0ZUX0xJ
TksobGliR0xFU3YyLCBnbERlbGV0ZVNoYWRlciwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQg
c2hhZGVyKSwgKHNoYWRlcikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xEZWxldGVUZXh0dXJl
cywgdm9pZCwgR0xfQVBJRU5UUlksIChHTHNpemVpIG4sIGNvbnN0IEdMdWludCogdGV4dHVyZXMp
LCAobiwgdGV4dHVyZXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRGVwdGhGdW5jLCB2b2lk
LCBHTF9BUElFTlRSWSwgKEdMZW51bSBmdW5jKSwgKGZ1bmMpKTsKLVNPRlRfTElOSyhsaWJHTEVT
djIsIGdsRGVwdGhNYXNrLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMYm9vbGVhbiBmbGFnKSwgKGZs
YWcpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRGVwdGhSYW5nZWYsIHZvaWQsIEdMX0FQSUVO
VFJZLCAoR0xjbGFtcGYgek5lYXIsIEdMY2xhbXBmIHpGYXIpLCAoek5lYXIsIHpGYXIpKTsKLVNP
RlRfTElOSyhsaWJHTEVTdjIsIGdsRGV0YWNoU2hhZGVyLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdM
dWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKSwgKHByb2dyYW0sIHNoYWRlcikpOwotU09GVF9M
SU5LKGxpYkdMRVN2MiwgZ2xEaXNhYmxlLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSBjYXAp
LCAoY2FwKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJh
eSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgaW5kZXgpLCAoaW5kZXgpKTsKLVNPRlRfTElO
SyhsaWJHTEVTdjIsIGdsRHJhd0FycmF5cywgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gbW9k
ZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpLCAobW9kZSwgZmlyc3QsIGNvdW50KSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbERyYXdFbGVtZW50cywgdm9pZCwgR0xfQVBJRU5UUlksIChH
TGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogaW5k
aWNlcyksIChtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcykpOwotU09GVF9MSU5LKGxpYkdMRVN2
MiwgZ2xFbmFibGUsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIGNhcCksIChjYXApKTsKLVNP
RlRfTElOSyhsaWJHTEVTdjIsIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXksIHZvaWQsIEdMX0FQ
SUVOVFJZLCAoR0x1aW50IGluZGV4KSwgKGluZGV4KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBn
bEZpbmlzaCwgdm9pZCwgR0xfQVBJRU5UUlksICh2b2lkKSwgKCkpOwotU09GVF9MSU5LKGxpYkdM
RVN2MiwgZ2xGbHVzaCwgdm9pZCwgR0xfQVBJRU5UUlksICh2b2lkKSwgKCkpOwotU09GVF9MSU5L
KGxpYkdMRVN2MiwgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciwgdm9pZCwgR0xfQVBJRU5UUlks
IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRh
cmdldCwgR0x1aW50IHJlbmRlcmJ1ZmZlciksICh0YXJnZXQsIGF0dGFjaG1lbnQsIHJlbmRlcmJ1
ZmZlcnRhcmdldCwgcmVuZGVyYnVmZmVyKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEZyYW1l
YnVmZmVyVGV4dHVyZTJELCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMZW51
bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2
ZWwpLCAodGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsKSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbEZyb250RmFjZSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVu
dW0gbW9kZSksIChtb2RlKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdlbkJ1ZmZlcnMsIHZv
aWQsIEdMX0FQSUVOVFJZLCAoR0xzaXplaSBuLCBHTHVpbnQqIGJ1ZmZlcnMpLCAobiwgYnVmZmVy
cykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZW5lcmF0ZU1pcG1hcCwgdm9pZCwgR0xfQVBJ
RU5UUlksIChHTGVudW0gdGFyZ2V0KSwgKHRhcmdldCkpOwotU09GVF9MSU5LKGxpYkdMRVN2Miwg
Z2xHZW5GcmFtZWJ1ZmZlcnMsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xzaXplaSBuLCBHTHVpbnQq
IGZyYW1lYnVmZmVycyksIChuLCBmcmFtZWJ1ZmZlcnMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsR2VuUmVuZGVyYnVmZmVycywgaW50LCBHTF9BUElFTlRSWSwgKEdMc2l6ZWkgbiwgR0x1aW50
KiByZW5kZXJidWZmZXJzKSwgKG4sIHJlbmRlcmJ1ZmZlcnMpKTsKLVNPRlRfTElOSyhsaWJHTEVT
djIsIGdsR2VuVGV4dHVyZXMsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xzaXplaSBuLCBHTHVpbnQq
IHRleHR1cmVzKSwgKG4sIHRleHR1cmVzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldEFj
dGl2ZUF0dHJpYiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGlu
ZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xpbnQqIHNpemUsIEdMZW51
bSogdHlwZSwgR0xjaGFyKiBuYW1lKSwgKHByb2dyYW0sIGluZGV4LCBidWZzaXplLCBsZW5ndGgs
IHNpemUsIHR5cGUsIG5hbWUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0QWN0aXZlVW5p
Zm9ybSwgR0xlbnVtLCBHTF9BUElFTlRSWSwgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgs
IEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGludCogc2l6ZSwgR0xlbnVtKiB0
eXBlLCBHTGNoYXIqIG5hbWUpLCAocHJvZ3JhbSwgaW5kZXgsIGJ1ZnNpemUsIGxlbmd0aCwgc2l6
ZSwgdHlwZSwgbmFtZSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRBdHRhY2hlZFNoYWRl
cnMsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgbWF4Y291bnQs
IEdMc2l6ZWkqIGNvdW50LCBHTHVpbnQqIHNoYWRlcnMpLCAocHJvZ3JhbSwgbWF4Y291bnQsIGNv
dW50LCBzaGFkZXJzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldEF0dHJpYkxvY2F0aW9u
LCBpbnQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciogbmFtZSks
IChwcm9ncmFtLCBuYW1lKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldEJvb2xlYW52LCB2
b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSBwbmFtZSwgR0xib29sZWFuKiBwYXJhbXMpLCAocG5h
bWUsIHBhcmFtcykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJp
diwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50
KiBwYXJhbXMpLCAodGFyZ2V0LCBwbmFtZSwgcGFyYW1zKSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbEdldEVycm9yLCBHTGVudW0sIEdMX0FQSUVOVFJZLCAodm9pZCksICgpKTsKLVNPRlRfTElO
SyhsaWJHTEVTdjIsIGdsR2V0RmxvYXR2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCogcGFyYW1zKSwgKHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJHTEVT
djIsIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYsIHZvaWQsIEdMX0FQSUVO
VFJZLCAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSBwbmFtZSwgR0xp
bnQqIHBhcmFtcyksICh0YXJnZXQsIGF0dGFjaG1lbnQsIHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRf
TElOSyhsaWJHTEVTdjIsIGdsR2V0SW50ZWdlcnYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVt
IHBuYW1lLCBHTGludCogcGFyYW1zKSwgKHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJH
TEVTdjIsIGdsR2V0UHJvZ3JhbWl2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBwcm9ncmFt
LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpLCAocHJvZ3JhbSwgcG5hbWUsIHBhcmFtcykp
OwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRQcm9ncmFtSW5mb0xvZywgdm9pZCwgR0xfQVBJ
RU5UUlksIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgs
IEdMY2hhciogaW5mb2xvZyksIChwcm9ncmFtLCBidWZzaXplLCBsZW5ndGgsIGluZm9sb2cpKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYsIHZvaWQs
IEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1z
KSwgKHRhcmdldCwgcG5hbWUsIHBhcmFtcykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRT
aGFkZXJpdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgc2hhZGVyLCBHTGVudW0gcG5hbWUs
IEdMaW50KiBwYXJhbXMpLCAoc2hhZGVyLCBwbmFtZSwgcGFyYW1zKSk7Ci1TT0ZUX0xJTksobGli
R0xFU3YyLCBnbEdldFNoYWRlckluZm9Mb2csIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHNo
YWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIEdMY2hhciogaW5mb2xvZyks
IChzaGFkZXIsIGJ1ZnNpemUsIGxlbmd0aCwgaW5mb2xvZykpOwotU09GVF9MSU5LKGxpYkdMRVN2
MiwgZ2xHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVt
IHNoYWRlcnR5cGUsIEdMZW51bSBwcmVjaXNpb250eXBlLCBHTGludCogcmFuZ2UsIEdMaW50KiBw
cmVjaXNpb24pLCAoc2hhZGVydHlwZSwgcHJlY2lzaW9udHlwZSwgcmFuZ2UsIHByZWNpc2lvbikp
OwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRTaGFkZXJTb3VyY2UsIHZvaWQsIEdMX0FQSUVO
VFJZLCAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIEdM
Y2hhciogc291cmNlKSwgKHNoYWRlciwgYnVmc2l6ZSwgbGVuZ3RoLCBzb3VyY2UpKTsKLVNPRlRf
TElOSyhsaWJHTEVTdjIsIGdsR2V0U3RyaW5nLCBjb25zdCBHTHVieXRlKiwgR0xfQVBJRU5UUlks
IChHTGVudW0gbmFtZSksIChuYW1lKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldFRleFBh
cmFtZXRlcmZ2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCogcGFyYW1zKSwgKHRhcmdldCwgcG5hbWUsIHBhcmFtcykpOwotU09GVF9MSU5L
KGxpYkdMRVN2MiwgZ2xHZXRUZXhQYXJhbWV0ZXJpdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpLCAodGFyZ2V0LCBwbmFtZSwg
cGFyYW1zKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldFVuaWZvcm1mdiwgdm9pZCwgR0xf
QVBJRU5UUlksIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQqIHBhcmFt
cyksIChwcm9ncmFtLCBsb2NhdGlvbiwgcGFyYW1zKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBn
bEdldFVuaWZvcm1pdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQg
bG9jYXRpb24sIEdMaW50KiBwYXJhbXMpLCAocHJvZ3JhbSwgbG9jYXRpb24sIHBhcmFtcykpOwot
U09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRVbmlmb3JtTG9jYXRpb24sIGludCwgR0xfQVBJRU5U
UlksIChHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyKiBuYW1lKSwgKHByb2dyYW0sIG5hbWUp
KTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0VmVydGV4QXR0cmliZnYsIHZvaWQsIEdMX0FQ
SUVOVFJZLCAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQqIHBhcmFtcyksIChp
bmRleCwgcG5hbWUsIHBhcmFtcykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRWZXJ0ZXhB
dHRyaWJpdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs
IEdMaW50KiBwYXJhbXMpLCAodGFyZ2V0LCBwbmFtZSwgcGFyYW1zKSk7Ci1TT0ZUX0xJTksobGli
R0xFU3YyLCBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdM
dWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHZvaWQqKiBwb2ludGVyKSwgKGluZGV4LCBwbmFt
ZSwgcG9pbnRlcikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xIaW50LCB2b2lkLCBHTF9BUElF
TlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKSwgKHRhcmdldCwgbW9kZSkpOwotU09G
VF9MSU5LKGxpYkdMRVN2MiwgZ2xJc0J1ZmZlciwgR0xib29sZWFuLCBHTF9BUElFTlRSWSwgKEdM
dWludCBidWZmZXIpLCAoYnVmZmVyKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbElzRW5hYmxl
ZCwgR0xib29sZWFuLCBHTF9BUElFTlRSWSwgKEdMZW51bSBjYXApLCAoY2FwKSk7Ci1TT0ZUX0xJ
TksobGliR0xFU3YyLCBnbElzRnJhbWVidWZmZXIsIEdMYm9vbGVhbiwgR0xfQVBJRU5UUlksIChH
THVpbnQgZnJhbWVidWZmZXIpLCAoZnJhbWVidWZmZXIpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsSXNQcm9ncmFtLCBHTGJvb2xlYW4sIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0pLCAo
cHJvZ3JhbSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xJc1JlbmRlcmJ1ZmZlciwgR0xib29s
ZWFuLCBHTF9BUElFTlRSWSwgKEdMdWludCByZW5kZXJidWZmZXIpLCAocmVuZGVyYnVmZmVyKSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbElzU2hhZGVyLCBHTGJvb2xlYW4sIEdMX0FQSUVOVFJZ
LCAoR0x1aW50IHNoYWRlciksIChzaGFkZXIpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsSXNU
ZXh0dXJlLCBHTGJvb2xlYW4sIEdMX0FQSUVOVFJZLCAoR0x1aW50IHRleHR1cmUpLCAodGV4dHVy
ZSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xMaW5lV2lkdGgsIHZvaWQsIEdMX0FQSUVOVFJZ
LCAoR0xmbG9hdCB3aWR0aCksICh3aWR0aCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xMaW5r
UHJvZ3JhbSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJvZ3JhbSksIChwcm9ncmFtKSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFBpeGVsU3RvcmVpLCB2b2lkLCBHTF9BUElFTlRSWSwg
KEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pLCAocG5hbWUsIHBhcmFtKSk7Ci1TT0ZUX0xJTkso
bGliR0xFU3YyLCBnbFBvbHlnb25PZmZzZXQsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xmbG9hdCBm
YWN0b3IsIEdMZmxvYXQgdW5pdHMpLCAoZmFjdG9yLCB1bml0cykpOwotU09GVF9MSU5LKGxpYkdM
RVN2MiwgZ2xSZWFkUGl4ZWxzLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IHgsIEdMaW50IHks
IEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlw
ZSwgR0x2b2lkKiBwaXhlbHMpLCAoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBw
aXhlbHMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsUmVsZWFzZVNoYWRlckNvbXBpbGVyLCB2
b2lkLCBHTF9BUElFTlRSWSwgKHZvaWQpLCAoKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFJl
bmRlcmJ1ZmZlclN0b3JhZ2UsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCksICh0YXJn
ZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbFNhbXBsZUNvdmVyYWdlLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMY2xhbXBmIHZhbHVlLCBH
TGJvb2xlYW4gaW52ZXJ0KSwgKHZhbHVlLCBpbnZlcnQpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsU2Npc3Nvciwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGludCB4LCBHTGludCB5LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCksICh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7Ci1TT0ZUX0xJ
TksobGliR0xFU3YyLCBnbFNoYWRlckJpbmFyeSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHNpemVp
IG4sIGNvbnN0IEdMdWludCogc2hhZGVycywgR0xlbnVtIGJpbmFyeWZvcm1hdCwgY29uc3QgR0x2
b2lkKiBiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKSwgKG4sIHNoYWRlcnMsIGJpbmFyeWZvcm1hdCwg
YmluYXJ5LCBsZW5ndGgpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsU2hhZGVyU291cmNlLCB2
b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
Y2hhcioqIHN0cmluZywgY29uc3QgR0xpbnQqIGxlbmd0aCksIChzaGFkZXIsIGNvdW50LCBzdHJp
bmcsIGxlbmd0aCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xTdGVuY2lsRnVuYywgdm9pZCwg
R0xfQVBJRU5UUlksIChHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzayksIChmdW5j
LCByZWYsIG1hc2spKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsU3RlbmNpbEZ1bmNTZXBhcmF0
ZSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gZmFjZSwgR0xlbnVtIGZ1bmMsIEdMaW50IHJl
ZiwgR0x1aW50IG1hc2spLCAoZmFjZSwgZnVuYywgcmVmLCBtYXNrKSk7Ci1TT0ZUX0xJTksobGli
R0xFU3YyLCBnbFN0ZW5jaWxNYXNrLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBtYXNrKSwg
KG1hc2spKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsU3RlbmNpbE1hc2tTZXBhcmF0ZSwgdm9p
ZCwgR0xfQVBJRU5UUlksIChHTGVudW0gZmFjZSwgR0x1aW50IG1hc2spLCAoZmFjZSwgbWFzaykp
OwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xTdGVuY2lsT3AsIHZvaWQsIEdMX0FQSUVOVFJZLCAo
R0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKSwgKGZhaWwsIHpmYWlsLCB6
cGFzcykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xTdGVuY2lsT3BTZXBhcmF0ZSwgdm9pZCwg
R0xfQVBJRU5UUlksIChHTGVudW0gZmFjZSwgR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xl
bnVtIHpwYXNzKSwgKGZhY2UsIGZhaWwsIHpmYWlsLCB6cGFzcykpOwotU09GVF9MSU5LKGxpYkdM
RVN2MiwgZ2xUZXhJbWFnZTJELCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdM
aW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBo
ZWlnaHQsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdM
dm9pZCogcGl4ZWxzKSwgKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVp
Z2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbFRleFBhcmFtZXRlcmYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKSwgKHRhcmdldCwgcG5hbWUsIHBhcmFtKSk7Ci1TT0ZU
X0xJTksobGliR0xFU3YyLCBnbFRleFBhcmFtZXRlcmZ2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCogcGFyYW1zKSwgKHRhcmdl
dCwgcG5hbWUsIHBhcmFtcykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xUZXhQYXJhbWV0ZXJp
LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQg
cGFyYW0pLCAodGFyZ2V0LCBwbmFtZSwgcGFyYW0pKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGds
VGV4UGFyYW1ldGVyaXYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IHBuYW1lLCBjb25zdCBHTGludCogcGFyYW1zKSwgKHRhcmdldCwgcG5hbWUsIHBhcmFtcykpOwot
U09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xUZXhTdWJJbWFnZTJELCB2b2lkLCBHTF9BUElFTlRSWSwg
KEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIGNvbnN0IEdMdm9pZCogcGl4ZWxzKSwgKHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZz
ZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKSk7Ci1TT0ZUX0xJTksobGli
R0xFU3YyLCBnbFVuaWZvcm0xZiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGludCBsb2NhdGlvbiwg
R0xmbG9hdCB4KSwgKGxvY2F0aW9uLCB4KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZv
cm0xZnYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMZmxvYXQqIHYpLCAobG9jYXRpb24sIGNvdW50LCB2KSk7Ci1TT0ZUX0xJTksobGli
R0xFU3YyLCBnbFVuaWZvcm0xaSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGludCBsb2NhdGlvbiwg
R0xpbnQgeCksIChsb2NhdGlvbiwgeCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3Jt
MWl2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGludCogdiksIChsb2NhdGlvbiwgY291bnQsIHYpKTsKLVNPRlRfTElOSyhsaWJHTEVT
djIsIGdsVW5pZm9ybTJmLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBHTGZs
b2F0IHgsIEdMZmxvYXQgeSksIChsb2NhdGlvbiwgeCwgeSkpOwotU09GVF9MSU5LKGxpYkdMRVN2
MiwgZ2xVbmlmb3JtMmZ2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KSwgKGxvY2F0aW9uLCBjb3VudCwgdikpOwotU09G
VF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtMmksIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQg
bG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHkpLCAobG9jYXRpb24sIHgsIHkpKTsKLVNPRlRfTElO
SyhsaWJHTEVTdjIsIGdsVW5pZm9ybTJpdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYpLCAobG9jYXRpb24sIGNvdW50LCB2
KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm0zZiwgdm9pZCwgR0xfQVBJRU5UUlks
IChHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiksIChsb2Nh
dGlvbiwgeCwgeSwgeikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtM2Z2LCB2b2lk
LCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZs
b2F0KiB2KSwgKGxvY2F0aW9uLCBjb3VudCwgdikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xV
bmlmb3JtM2ksIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdMaW50IHgsIEdM
aW50IHksIEdMaW50IHopLCAobG9jYXRpb24sIHgsIHksIHopKTsKLVNPRlRfTElOSyhsaWJHTEVT
djIsIGdsVW5pZm9ybTNpdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYpLCAobG9jYXRpb24sIGNvdW50LCB2KSk7Ci1TT0ZU
X0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm00Ziwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGludCBs
b2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KSwgKGxv
Y2F0aW9uLCB4LCB5LCB6LCB3KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm00ZnYs
IHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMZmxvYXQqIHYpLCAobG9jYXRpb24sIGNvdW50LCB2KSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbFVuaWZvcm00aSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGludCBsb2NhdGlvbiwgR0xpbnQg
eCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyksIChsb2NhdGlvbiwgeCwgeSwgeiwgdykpOwot
U09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtNGl2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCogdiksIChsb2NhdGlvbiwg
Y291bnQsIHYpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVW5pZm9ybU1hdHJpeDJmdiwgdm9p
ZCwgR0xfQVBJRU5UUlksIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCogdmFsdWUpLCAobG9jYXRpb24sIGNvdW50LCB0cmFu
c3Bvc2UsIHZhbHVlKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm1NYXRyaXgzZnYs
IHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQqIHZhbHVlKSwgKGxvY2F0aW9uLCBjb3VudCwg
dHJhbnNwb3NlLCB2YWx1ZSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtTWF0cml4
NGZ2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBH
TGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0KiB2YWx1ZSksIChsb2NhdGlvbiwgY291
bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVXNlUHJvZ3Jh
bSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJvZ3JhbSksIChwcm9ncmFtKSk7Ci1TT0ZU
X0xJTksobGliR0xFU3YyLCBnbFZhbGlkYXRlUHJvZ3JhbSwgdm9pZCwgR0xfQVBJRU5UUlksIChH
THVpbnQgcHJvZ3JhbSksIChwcm9ncmFtKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFZlcnRl
eEF0dHJpYjFmLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBpbmR4LCBHTGZsb2F0IHgpLCAo
aW5keCwgeCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xWZXJ0ZXhBdHRyaWIxZnYsIHZvaWQs
IEdMX0FQSUVOVFJZLCAoR0x1aW50IGluZHgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcyksIChpbmR4
LCB2YWx1ZXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVmVydGV4QXR0cmliMmYsIHZvaWQs
IEdMX0FQSUVOVFJZLCAoR0x1aW50IGluZHgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5KSwgKGluZHgs
IHgsIHkpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVmVydGV4QXR0cmliMmZ2LCB2b2lkLCBH
TF9BUElFTlRSWSwgKEdMdWludCBpbmR4LCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMpLCAoaW5keCwg
dmFsdWVzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFZlcnRleEF0dHJpYjNmLCB2b2lkLCBH
TF9BUElFTlRSWSwgKEdMdWludCBpbmR4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6
KSwgKGluZHgsIHgsIHksIHopKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVmVydGV4QXR0cmli
M2Z2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBpbmR4LCBjb25zdCBHTGZsb2F0KiB2YWx1
ZXMpLCAoaW5keCwgdmFsdWVzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFZlcnRleEF0dHJp
YjRmLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBpbmR4LCBHTGZsb2F0IHgsIEdMZmxvYXQg
eSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpLCAoaW5keCwgeCwgeSwgeiwgdykpOwotU09GVF9MSU5L
KGxpYkdMRVN2MiwgZ2xWZXJ0ZXhBdHRyaWI0ZnYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50
IGluZHgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcyksIChpbmR4LCB2YWx1ZXMpKTsKLVNPRlRfTElO
SyhsaWJHTEVTdjIsIGdsVmVydGV4QXR0cmliUG9pbnRlciwgdm9pZCwgR0xfQVBJRU5UUlksIChH
THVpbnQgaW5keCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMYm9vbGVhbiBub3JtYWxpemVk
LCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkKiBwdHIpLCAoaW5keCwgc2l6ZSwgdHlwZSwg
bm9ybWFsaXplZCwgc3RyaWRlLCBwdHIpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVmlld3Bv
cnQsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQpLCAoeCwgeSwgd2lkdGgsIGhlaWdodCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMy9nbDMuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL2luY2x1ZGUvR0xFUzMvZ2wzLmgKaW5kZXggNmIwNzA0YWQ2ZmU4NzE2NGY1YmRl
NzUzN2EyZTQ5MGUyZmRhYjZlMi4uNTNjNTliODVmZWQ3OTcwMWNhYTI2NzY1NmE2OTk0NWJiMTcz
ZTkzYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMy9n
bDMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMzL2dsMy5oCkBA
IC0zNiw3ICszNiw3IEBAIGV4dGVybiAiQyIgewogKiogS2hyb25vcyAkUmV2aXNpb246IDMxODEx
ICQgb24gJERhdGU6IDIwMTUtMDgtMTAgMDA6MDE6MTEgLTA3MDAgKE1vbiwgMTAgQXVnIDIwMTUp
ICQKICovCiAKLSNpbmNsdWRlIDxBTkdMRS9nbDNwbGF0Zm9ybS5oPgorI2luY2x1ZGUgPEdMRVMz
L2dsM3BsYXRmb3JtLmg+CiAKICNpZm5kZWYgR0xfQVBJRU5UUllQCiAjZGVmaW5lIEdMX0FQSUVO
VFJZUCBHTF9BUElFTlRSWSoKQEAgLTU2LDcgKzU2LDcgQEAgZXh0ZXJuICJDIiB7CiAKICNpZm5k
ZWYgR0xfRVNfVkVSU0lPTl8yXzAKICNkZWZpbmUgR0xfRVNfVkVSU0lPTl8yXzAgMQotI2luY2x1
ZGUgPEFOR0xFL2tocnBsYXRmb3JtLmg+CisjaW5jbHVkZSA8S0hSL2tocnBsYXRmb3JtLmg+CiB0
eXBlZGVmIGtocm9ub3NfaW50OF90IEdMYnl0ZTsKIHR5cGVkZWYga2hyb25vc19mbG9hdF90IEdM
Y2xhbXBmOwogdHlwZWRlZiBraHJvbm9zX2ludDMyX3QgR0xmaXhlZDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzMvZ2wzMS5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMy9nbDMxLmgKaW5kZXggZjU0MTAyYTkyM2M0ZTM5YzYx
NmNlNTQyYjViNmI5OTM0ODI2YWU1NS4uMjZmODY5Yjc4MWQzMzc4ZjA5ZGUxZTM1MGQyM2M4MmNm
OTViYTFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVT
My9nbDMxLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMy9nbDMx
LmgKQEAgLTM2LDcgKzM2LDcgQEAgZXh0ZXJuICJDIiB7CiAqKiBLaHJvbm9zICRSZXZpc2lvbiQg
b24gJERhdGUkCiAqLwogCi0jaW5jbHVkZSA8QU5HTEUvZ2wzcGxhdGZvcm0uaD4KKyNpbmNsdWRl
IDxHTEVTMy9nbDNwbGF0Zm9ybS5oPgogCiAjaWZuZGVmIEdMX0FQSUVOVFJZUAogI2RlZmluZSBH
TF9BUElFTlRSWVAgR0xfQVBJRU5UUlkqCkBAIC01Niw3ICs1Niw3IEBAIGV4dGVybiAiQyIgewog
CiAjaWZuZGVmIEdMX0VTX1ZFUlNJT05fMl8wCiAjZGVmaW5lIEdMX0VTX1ZFUlNJT05fMl8wIDEK
LSNpbmNsdWRlIDxBTkdMRS9raHJwbGF0Zm9ybS5oPgorI2luY2x1ZGUgPEtIUi9raHJwbGF0Zm9y
bS5oPgogdHlwZWRlZiBraHJvbm9zX2ludDhfdCBHTGJ5dGU7CiB0eXBlZGVmIGtocm9ub3NfZmxv
YXRfdCBHTGNsYW1wZjsKIHR5cGVkZWYga2hyb25vc19pbnQzMl90IEdMZml4ZWQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMzL2dsMzIuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzMvZ2wzMi5oCmluZGV4IGM0MGMwNjE3MGFl
ZDYzYzczNDYyYjdjY2NhODVkYzEwMjhkYWM2MmQuLjI5NzVhNmY0ZTc0NDQzZmQwZmFlNjY3OGEy
ZmJiOTJiMjE0OGUzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1
ZGUvR0xFUzMvZ2wzMi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xF
UzMvZ2wzMi5oCkBAIC0zNiw3ICszNiw3IEBAIGV4dGVybiAiQyIgewogKiogS2hyb25vcyAkUmV2
aXNpb24kIG9uICREYXRlJAogKi8KIAotI2luY2x1ZGUgPEFOR0xFL2dsM3BsYXRmb3JtLmg+Cisj
aW5jbHVkZSA8R0xFUzMvZ2wzcGxhdGZvcm0uaD4KIAogI2lmbmRlZiBHTF9BUElFTlRSWVAKICNk
ZWZpbmUgR0xfQVBJRU5UUllQIEdMX0FQSUVOVFJZKgpAQCAtNTYsNyArNTYsNyBAQCBleHRlcm4g
IkMiIHsKIAogI2lmbmRlZiBHTF9FU19WRVJTSU9OXzJfMAogI2RlZmluZSBHTF9FU19WRVJTSU9O
XzJfMCAxCi0jaW5jbHVkZSA8QU5HTEUva2hycGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxLSFIva2hy
cGxhdGZvcm0uaD4KIHR5cGVkZWYga2hyb25vc19pbnQ4X3QgR0xieXRlOwogdHlwZWRlZiBraHJv
bm9zX2Zsb2F0X3QgR0xjbGFtcGY7CiB0eXBlZGVmIGtocm9ub3NfaW50MzJfdCBHTGZpeGVkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMy9nbDNwbGF0
Zm9ybS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMy9nbDNwbGF0Zm9y
bS5oCmluZGV4IDhiYTVkMzgwYWIxOTdjYTVkYzQyNGUwZjE3MGJhMzBjMDMwNGYxYzQuLmIxZTg2
OWRkMTExYTg5NzhlMmNlNmFkMWFhMDEzMGI1NjM1YjZjMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzMvZ2wzcGxhdGZvcm0uaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMzL2dsM3BsYXRmb3JtLmgKQEAgLTE3LDcgKzE3
LDcgQEAKICAqIGJ5IGZpbGluZyBhIGJ1ZyBhZ2FpbnN0IHByb2R1Y3QgIk9wZW5HTC1FUyIgY29t
cG9uZW50ICJSZWdpc3RyeSIuCiAgKi8KIAotI2luY2x1ZGUgPEFOR0xFL2tocnBsYXRmb3JtLmg+
CisjaW5jbHVkZSA8S0hSL2tocnBsYXRmb3JtLmg+CiAKICNpZm5kZWYgR0xfQVBJQ0FMTAogI2Rl
ZmluZSBHTF9BUElDQUxMICBLSFJPTk9TX0FQSUNBTEwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oCmluZGV4IGY3YjBlZjcwMmVk
Y2JjYjc0MjIzYTY1OGRiZTI4ZGFiMGY4NTAyZGQuLmJkNzgyYjNkMGM4YWM0NjZjMDA1NWUxNWIy
NjFhYWJiODZjZjQ5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1
ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5j
bHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaApAQCAtNiwyMyArNiw2IEBACiAjaWZuZGVmIEdMU0xB
TkdfU0hBREVSTEFOR19IXwogI2RlZmluZSBHTFNMQU5HX1NIQURFUkxBTkdfSF8KIAotI2lmIGRl
ZmluZWQoQ09NUE9ORU5UX0JVSUxEKSAmJiAhZGVmaW5lZChBTkdMRV9UUkFOU0xBVE9SX1NUQVRJ
QykKLSNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpCi0KLSNpZiBkZWZpbmVk
KEFOR0xFX1RSQU5TTEFUT1JfSU1QTEVNRU5UQVRJT04pCi0jZGVmaW5lIENPTVBJTEVSX0VYUE9S
VCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLSNlbHNlCi0jZGVmaW5lIENPTVBJTEVSX0VYUE9SVCBf
X2RlY2xzcGVjKGRsbGltcG9ydCkKLSNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9UUkFOU0xBVE9S
X0lNUExFTUVOVEFUSU9OKQotCi0jZWxzZSAgLy8gZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQo
X1dJTjY0KQotI2RlZmluZSBDT01QSUxFUl9FWFBPUlQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0
eSgiZGVmYXVsdCIpKSkKLSNlbmRpZgotCi0jZWxzZSAgLy8gZGVmaW5lZChDT01QT05FTlRfQlVJ
TEQpICYmICFkZWZpbmVkKEFOR0xFX1RSQU5TTEFUT1JfU1RBVElDKQotI2RlZmluZSBDT01QSUxF
Ul9FWFBPUlQKLSNlbmRpZgotCiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAKICNpbmNsdWRlICJraHJw
bGF0Zm9ybS5oIgpAQCAtMzcsMjEgKzIwLDE1IEBACiAvLyBhbmQgdGhlIHNoYWRpbmcgbGFuZ3Vh
Z2UgY29tcGlsZXIuCiAvLwogCi1uYW1lc3BhY2Ugc2gKLXsKLS8vIEdMZW51bSBhbGlhcwotdHlw
ZWRlZiB1bnNpZ25lZCBpbnQgR0xlbnVtOwotfQotCi0vLyBNdXN0IGJlIGluY2x1ZGVkIGFmdGVy
IEdMZW51bSBwcm94eSB0eXBlZGVmCiAvLyBOb3RlOiBtYWtlIHN1cmUgdG8gaW5jcmVtZW50IEFO
R0xFX1NIX1ZFUlNJT04gd2hlbiBjaGFuZ2luZyBTaGFkZXJWYXJzLmgKICNpbmNsdWRlICJTaGFk
ZXJWYXJzLmgiCiAKIC8vIFZlcnNpb24gbnVtYmVyIGZvciBzaGFkZXIgdHJhbnNsYXRpb24gQVBJ
LgogLy8gSXQgaXMgaW5jcmVtZW50ZWQgZXZlcnkgdGltZSB0aGUgQVBJIGNoYW5nZXMuCi0jZGVm
aW5lIEFOR0xFX1NIX1ZFUlNJT04gMTYzCisjZGVmaW5lIEFOR0xFX1NIX1ZFUlNJT04gMTc0CiAK
LXR5cGVkZWYgZW51bSB7CitlbnVtIFNoU2hhZGVyU3BlYworewogICAgIFNIX0dMRVMyX1NQRUMs
CiAgICAgU0hfV0VCR0xfU1BFQywKIApAQCAtNjAsMTAgKzM3LDkgQEAgdHlwZWRlZiBlbnVtIHsK
IAogICAgIFNIX0dMRVMzXzFfU1BFQywKICAgICBTSF9XRUJHTDNfU1BFQywKK307CiAKLX0gU2hT
aGFkZXJTcGVjOwotCi10eXBlZGVmIGVudW0KK2VudW0gU2hTaGFkZXJPdXRwdXQKIHsKICAgICAv
LyBFU1NMIG91dHB1dCBvbmx5IHN1cHBvcnRlZCBpbiBzb21lIGNvbmZpZ3VyYXRpb25zLgogICAg
IFNIX0VTU0xfT1VUUFVUID0gMHg4QjQ1LApAQCAtODIsMjEgKzU4LDE4IEBAIHR5cGVkZWYgZW51
bQogICAgIFNIX0dMU0xfNDQwX0NPUkVfT1VUUFVUID0gMHg4Qjg3LAogICAgIFNIX0dMU0xfNDUw
X0NPUkVfT1VUUFVUID0gMHg4Qjg4LAogCi0gICAgLy8gSExTTCBvdXRwdXQgb25seSBzdXBwb3J0
ZWQgaW4gc29tZSBjb25maWd1cmF0aW9ucy4KLSAgICAvLyBEZXByZWNhdGVkOgotICAgIFNIX0hM
U0xfT1VUUFVUICAgPSAweDhCNDgsCi0gICAgU0hfSExTTDlfT1VUUFVUICA9IDB4OEI0OCwKLSAg
ICBTSF9ITFNMMTFfT1VUUFVUID0gMHg4QjQ5LAotCiAgICAgLy8gUHJlZmVyIHVzaW5nIHRoZXNl
IHRvIHNwZWNpZnkgSExTTCBvdXRwdXQgdHlwZToKICAgICBTSF9ITFNMXzNfMF9PVVRQVVQgICAg
ICAgPSAweDhCNDgsICAvLyBEM0QgOQogICAgIFNIX0hMU0xfNF8xX09VVFBVVCAgICAgICA9IDB4
OEI0OSwgIC8vIEQzRCAxMQotICAgIFNIX0hMU0xfNF8wX0ZMOV8zX09VVFBVVCA9IDB4OEI0QSAg
IC8vIEQzRCAxMSBmZWF0dXJlIGxldmVsIDlfMwotfSBTaFNoYWRlck91dHB1dDsKKyAgICBTSF9I
TFNMXzRfMF9GTDlfM19PVVRQVVQgPSAweDhCNEEsICAvLyBEM0QgMTEgZmVhdHVyZSBsZXZlbCA5
XzMKIAotLy8gQ29tcGlsZSBvcHRpb25zLgorICAgIC8vIE91dHB1dCBzcGVjaWFsaXplZCBHTFNM
IHRvIGJlIGZlZCB0byBnbHNsYW5nIGZvciBWdWxrYW4gU1BJUi4KKyAgICBTSF9HTFNMX1ZVTEtB
Tl9PVVRQVVQgPSAweDhCNEIsCit9OwogCi10eXBlZGVmIHVpbnQ2NF90IFNoQ29tcGlsZU9wdGlv
bnM7CisvLyBDb21waWxlIG9wdGlvbnMuCisvLyBUaGUgQ29tcGlsZSBvcHRpb25zIHR5cGUgaXMg
ZGVmaW5lZCBpbiBTaGFkZXJWYXJzLmgsIHRvIGFsbG93IEFOR0xFIHRvIGltcG9ydCB0aGUgU2hh
ZGVyVmFycworLy8gaGVhZGVyIHdpdGhvdXQgbmVlZGluZyB0aGUgU2hhZGVyTGFuZyBoZWFkZXIu
IFRoaXMgYXZvaWRzIHNvbWUgY29uZmxpY3RzIHdpdGggZ2xzbGFuZy4KIAogY29uc3QgU2hDb21w
aWxlT3B0aW9ucyBTSF9WQUxJREFURSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKIGNv
bnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfVkFMSURBVEVfTE9PUF9JTkRFWElORyAgICAgICAgICAg
ICA9IFVJTlQ2NF9DKDEpIDw8IDA7CkBAIC0xMDUsMTIgKzc4LDI5IEBAIGNvbnN0IFNoQ29tcGls
ZU9wdGlvbnMgU0hfT0JKRUNUX0NPREUgICAgICAgICAgICAgICAgICAgICAgICA9IFVJTlQ2NF9D
KDEpIDw8IDI7CiBjb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX1ZBUklBQkxFUyAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSBVSU5UNjRfQygxKSA8PCAzOwogY29uc3QgU2hDb21waWxlT3B0aW9u
cyBTSF9MSU5FX0RJUkVDVElWRVMgICAgICAgICAgICAgICAgICAgID0gVUlOVDY0X0MoMSkgPDwg
NDsKIGNvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfU09VUkNFX1BBVEggICAgICAgICAgICAgICAg
ICAgICAgICA9IFVJTlQ2NF9DKDEpIDw8IDU7Ci1jb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX1VO
Uk9MTF9GT1JfTE9PUF9XSVRIX0lOVEVHRVJfSU5ERVggPSBVSU5UNjRfQygxKSA8PCA2OwotLy8g
SWYgYSBzYW1wbGVyIGFycmF5IGluZGV4IGhhcHBlbnMgdG8gYmUgYSBsb29wIGluZGV4LAotLy8g
ICAxKSBpZiBpdHMgdHlwZSBpcyBpbnRlZ2VyLCB1bnJvbGwgdGhlIGxvb3AuCi0vLyAgIDIpIGlm
IGl0cyB0eXBlIGlzIGZsb2F0LCBmYWlsIHRoZSBzaGFkZXIgY29tcGlsZS4KLS8vIFRoaXMgaXMg
dG8gd29yayBhcm91bmQgYSBtYWMgZHJpdmVyIGJ1Zy4KLWNvbnN0IFNoQ29tcGlsZU9wdGlvbnMg
U0hfVU5ST0xMX0ZPUl9MT09QX1dJVEhfU0FNUExFUl9BUlJBWV9JTkRFWCA9IFVJTlQ2NF9DKDEp
IDw8IDc7CisKKy8vIFRoaXMgZmxhZyB3aWxsIGtlZXAgaW52YXJpYW50IGRlY2xhcmF0aW9uIGZv
ciBpbnB1dCBpbiBmcmFnbWVudCBzaGFkZXIgZm9yIEdMU0wgPj00LjIwIG9uIEFNRC4KKy8vIEZy
b20gR0xTTCA+PSA0LjIwLCBpdCdzIG9wdGlvbmFsIHRvIGFkZCBpbnZhcmlhbnQgZm9yIGZyYWdt
ZW50IGlucHV0LCBidXQgR1BVIHZlbmRvcnMgaGF2ZQorLy8gZGlmZmVyZW50IGltcGxlbWVudGF0
aW9ucyBhYm91dCB0aGlzLiBTb21lIGRyaXZlcnMgZm9yYmlkIGludmFyaWFudCBpbiBmcmFnbWVu
dCBmb3IgR0xTTD49IDQuMjAsCisvLyBlLmcuIExpbnV4IE1lc2EsIHNvbWUgZHJpdmVycyB0cmVh
dCB0aGF0IGFzIG9wdGlvbmFsLCBlLmcuIE5WSURJQSwgc29tZSBkcml2ZXJzIHJlcXVpcmUgaW52
YXJpYW50CisvLyBtdXN0IG1hdGNoIGJldHdlZW4gdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXIs
IGUuZy4gQU1ELiBUaGUgYmVoYXZpb3Igb24gQU1EIGlzIG9idmlvdXNseSB3cm9uZy4KKy8vIFJl
bW92ZSBpbnZhcmlhbnQgZm9yIGlucHV0IGluIGZyYWdtZW50IHNoYWRlciB0byB3b3JrYXJvdW5k
IHRoZSByZXN0cmljdGlvbiBvbiBJbnRlbCBNZXNhLgorLy8gQnV0IGRvbid0IHJlbW92ZSBvbiBB
TUQgTGludXggdG8gYXZvaWQgdHJpZ2dlcmluZyB0aGUgYnVnIG9uIEFNRC4KK2NvbnN0IFNoQ29t
cGlsZU9wdGlvbnMgU0hfRE9OVF9SRU1PVkVfSU5WQVJJQU5UX0ZPUl9GUkFHTUVOVF9JTlBVVCA9
IFVJTlQ2NF9DKDEpIDw8IDY7CisKKy8vIER1ZSB0byBzcGVjIGRpZmZlcmVuY2UgYmV0d2VlbiBH
TFNMIDQuMSBvciBsb3dlciBhbmQgRVNTTDMsIHNvbWUgcGxhdGZvcm1zIChmb3IgZXhhbXBsZSwg
TWFjIE9TWAorLy8gY29yZSBwcm9maWxlKSByZXF1aXJlIGEgdmFyaWFibGUncyAiaW52YXJpYW50
Ii8iY2VudHJvaWQiIHF1YWxpZmllcnMgdG8gbWF0Y2ggYmV0d2VlbiB2ZXJ0ZXggYW5kCisvLyBm
cmFnbWVudCBzaGFkZXIuIEEgc2ltcGxlIHNvbHV0aW9uIHRvIGFsbG93IHN1Y2ggc2hhZGVycyB0
byBsaW5rIGlzIHRvIG9taXQgdGhlIHR3byBxdWFsaWZpZXJzLgorLy8gQU1EIGRyaXZlciBpbiBM
aW51eCByZXF1aXJlcyBpbnZhcmlhbnQgcXVhbGlmaWVyIHRvIG1hdGNoIGJldHdlZW4gdmVydGV4
IGFuZCBmcmFnbWVudCBzaGFkZXJzLAorLy8gd2hpbGUgRVNTTDMgZGlzYWxsb3dzIGludmFyaWFu
dCBxdWFsaWZpZXIgaW4gZnJhZ21lbnQgc2hhZGVyIGFuZCBHTFNMID49IDQuMiBkb2Vzbid0IHJl
cXVpcmUKKy8vIGludmFyaWFudCBxdWFsaWZpZXIgdG8gbWF0Y2ggYmV0d2VlbiBzaGFkZXJzLiBS
ZW1vdmUgaW52YXJpYW50IHF1YWxpZmllciBmcm9tIHZlcnRleCBzaGFkZXIgdG8KKy8vIHdvcmth
cm91bmQgQU1EIGRyaXZlciBidWcuCisvLyBOb3RlIHRoYXQgdGhlIHR3byBmbGFncyB0YWtlIGVm
ZmVjdCBvbiBFU1NMMyBpbnB1dCBzaGFkZXJzIHRyYW5zbGF0ZWQgdG8gR0xTTCA0LjEgb3IgbG93
ZXIgYW5kIHRvCisvLyBHTFNMIDQuMiBvciBuZXdlciBvbiBMaW51eCBBTUQuCisvLyBUT0RPKHpt
byk6IFRoaXMgaXMgbm90IGEgZ29vZCBsb25nLXRlcm0gc29sdXRpb24uIFNpbXBseSBkcm9wcGlu
ZyB0aGVzZSBxdWFsaWZpZXJzIG1heSBicmVhayBzb21lCisvLyBkZXZlbG9wZXJzJyBjb250ZW50
LiBBIG1vcmUgY29tcGxleCB3b3JrYXJvdW5kIG9mIGR5bmFtaWNhbGx5IGdlbmVyYXRpbmcsIGNv
bXBpbGluZywgYW5kCisvLyByZS1saW5raW5nIHNoYWRlcnMgdGhhdCB1c2UgdGhlc2UgcXVhbGlm
aWVycyBzaG91bGQgYmUgaW1wbGVtZW50ZWQuCitjb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX1JF
TU9WRV9JTlZBUklBTlRfQU5EX0NFTlRST0lEX0ZPUl9FU1NMMyA9IFVJTlQ2NF9DKDEpIDw8IDc7
CiAKIC8vIFRoaXMgZmxhZyB3b3JrcyBhcm91bmQgYnVnIGluIEludGVsIE1hYyBkcml2ZXJzIHJl
bGF0ZWQgdG8gYWJzKGkpIHdoZXJlCiAvLyBpIGlzIGFuIGludGVnZXIuCkBAIC0yMTYsMzYgKzIw
NiwzNyBAQCBjb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX0VNVUxBVEVfSVNOQU5fRkxPQVRfRlVO
Q1RJT04gPSBVSU5UNjRfQygxKSA8PCAyNzsKIC8vIGxheW91dCBxdWFsaWZpZXIgdG8gYmUgY29u
c2lkZXJlZCBhY3RpdmUuIFRoZSB1bmlmb3JtIGJsb2NrIGl0c2VsZiBpcyBhbHNvIGNvbnNpZGVy
ZWQgYWN0aXZlLgogY29uc3QgU2hDb21waWxlT3B0aW9ucyBTSF9VU0VfVU5VU0VEX1NUQU5EQVJE
X1NIQVJFRF9CTE9DS1MgPSBVSU5UNjRfQygxKSA8PCAyODsKIAotLy8gRGVmaW5lcyBhbHRlcm5h
dGUgc3RyYXRlZ2llcyBmb3IgaW1wbGVtZW50aW5nIGFycmF5IGluZGV4IGNsYW1waW5nLgotdHlw
ZWRlZiBlbnVtIHsKLSAgLy8gVXNlIHRoZSBjbGFtcCBpbnRyaW5zaWMgZm9yIGFycmF5IGluZGV4
IGNsYW1waW5nLgotICBTSF9DTEFNUF9XSVRIX0NMQU1QX0lOVFJJTlNJQyA9IDEsCisvLyBUaGlz
IGZsYWcgd29ya3MgYXJvdW5kIGEgYnVnIGluIHVuYXJ5IG1pbnVzIG9wZXJhdG9yIG9uIGZsb2F0
IG51bWJlcnMgb24gSW50ZWwKKy8vIE1hYyBPU1ggMTAuMTEgZHJpdmVycy4gSXQgd29ya3MgYnkg
dHJhbnNsYXRpbmcgLWZsb2F0IGludG8gMC4wIC0gZmxvYXQuCitjb25zdCBTaENvbXBpbGVPcHRp
b25zIFNIX1JFV1JJVEVfRkxPQVRfVU5BUllfTUlOVVNfT1BFUkFUT1IgPSBVSU5UNjRfQygxKSA8
PCAyOTsKIAotICAvLyBVc2UgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gZm9yIGFycmF5IGluZGV4
IGNsYW1waW5nLgotICBTSF9DTEFNUF9XSVRIX1VTRVJfREVGSU5FRF9JTlRfQ0xBTVBfRlVOQ1RJ
T04KLX0gU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneTsKKy8vIFRoaXMgZmxhZyB3b3JrcyBh
cm91bmQgYSBidWcgaW4gZXZhbHVhdGluZyBhdGFuKHksIHgpIG9uIHNvbWUgTlZJRElBIE9wZW5H
TCBkcml2ZXJzLgorLy8gSXQgd29ya3MgYnkgdXNpbmcgYW4gZXhwcmVzc2lvbiB0byBlbXVsYXRl
IHRoaXMgZnVuY3Rpb24uCitjb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX0VNVUxBVEVfQVRBTjJf
RkxPQVRfRlVOQ1RJT04gPSBVSU5UNjRfQygxKSA8PCAzMDsKIAotLy8KLS8vIERyaXZlciBtdXN0
IGNhbGwgdGhpcyBmaXJzdCwgb25jZSwgYmVmb3JlIGRvaW5nIGFueSBvdGhlcgotLy8gY29tcGls
ZXIgb3BlcmF0aW9ucy4KLS8vIElmIHRoZSBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIHJldHVybiB2
YWx1ZSBpcyB0cnVlLCBlbHNlIGZhbHNlLgotLy8KLUNPTVBJTEVSX0VYUE9SVCBib29sIFNoSW5p
dGlhbGl6ZSgpOwotLy8KLS8vIERyaXZlciBzaG91bGQgY2FsbCB0aGlzIGF0IHNodXRkb3duLgot
Ly8gSWYgdGhlIGZ1bmN0aW9uIHN1Y2NlZWRzLCB0aGUgcmV0dXJuIHZhbHVlIGlzIHRydWUsIGVs
c2UgZmFsc2UuCi0vLwotQ09NUElMRVJfRVhQT1JUIGJvb2wgU2hGaW5hbGl6ZSgpOworLy8gU2V0
IHRvIDEgdG8gdHJhbnNsYXRlIGdsX1ZpZXdJRF9PVlIgdG8gYW4gdW5pZm9ybSBzbyB0aGF0IHRo
ZSBleHRlbnNpb24gY2FuIGJlIGVtdWxhdGVkLgorLy8gInVuaWZvcm0gaGlnaHAgdWludCB3ZWJn
bF9hbmdsZV9WaWV3SURfT1ZSIi4KK2NvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfVFJBTlNMQVRF
X1ZJRVdJRF9PVlJfVE9fVU5JRk9STSA9IFVJTlQ2NF9DKDEpIDw8IDMxOworCisvLyBEZWZpbmVz
IGFsdGVybmF0ZSBzdHJhdGVnaWVzIGZvciBpbXBsZW1lbnRpbmcgYXJyYXkgaW5kZXggY2xhbXBp
bmcuCitlbnVtIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kKK3sKKyAgICAvLyBVc2UgdGhl
IGNsYW1wIGludHJpbnNpYyBmb3IgYXJyYXkgaW5kZXggY2xhbXBpbmcuCisgICAgU0hfQ0xBTVBf
V0lUSF9DTEFNUF9JTlRSSU5TSUMgPSAxLAorCisgICAgLy8gVXNlIGEgdXNlci1kZWZpbmVkIGZ1
bmN0aW9uIGZvciBhcnJheSBpbmRleCBjbGFtcGluZy4KKyAgICBTSF9DTEFNUF9XSVRIX1VTRVJf
REVGSU5FRF9JTlRfQ0xBTVBfRlVOQ1RJT04KK307CiAKIC8vIFRoZSA2NCBiaXRzIGhhc2ggZnVu
Y3Rpb24uIFRoZSBmaXJzdCBwYXJhbWV0ZXIgaXMgdGhlIGlucHV0IHN0cmluZzsgdGhlCiAvLyBz
ZWNvbmQgcGFyYW1ldGVyIGlzIHRoZSBzdHJpbmcgbGVuZ3RoLgotdHlwZWRlZiBraHJvbm9zX3Vp
bnQ2NF90ICgqU2hIYXNoRnVuY3Rpb242NCkoY29uc3QgY2hhciosIHNpemVfdCk7Cit1c2luZyBT
aEhhc2hGdW5jdGlvbjY0ID0ga2hyb25vc191aW50NjRfdCAoKikoY29uc3QgY2hhciAqLCBzaXpl
X3QpOwogCiAvLwogLy8gSW1wbGVtZW50YXRpb24gZGVwZW5kZW50IGJ1aWx0LWluIHJlc291cmNl
cyAoY29uc3RhbnRzIGFuZCBleHRlbnNpb25zKS4KIC8vIFRoZSBuYW1lcyBmb3IgdGhlc2UgcmVz
b3VyY2VzIGhhcyBiZWVuIG9idGFpbmVkIGJ5IHN0cmlwcGluZyBnbF8vR0xfLgogLy8KLXR5cGVk
ZWYgc3RydWN0CitzdHJ1Y3QgU2hCdWlsdEluUmVzb3VyY2VzCiB7CiAgICAgLy8gQ29uc3RhbnRz
LgogICAgIGludCBNYXhWZXJ0ZXhBdHRyaWJzOwpAQCAtMjcyLDYgKzI2Myw4IEBAIHR5cGVkZWYg
c3RydWN0CiAgICAgaW50IEVYVF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2g7CiAgICAgaW50IE5W
X3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaDsKICAgICBpbnQgQVJNX3NoYWRlcl9mcmFtZWJ1ZmZl
cl9mZXRjaDsKKyAgICBpbnQgT1ZSX211bHRpdmlldzsKKyAgICBpbnQgRVhUX1lVVl90YXJnZXQ7
CiAKICAgICAvLyBTZXQgdG8gMSB0byBlbmFibGUgcmVwbGFjaW5nIEdMX0VYVF9kcmF3X2J1ZmZl
cnMgI2V4dGVuc2lvbiBkaXJlY3RpdmVzCiAgICAgLy8gd2l0aCBHTF9OVl9kcmF3X2J1ZmZlcnMg
aW4gRVNTTCBvdXRwdXQuIFRoaXMgZmxhZyBjYW4gYmUgdXNlZCB0byBlbXVsYXRlCkBAIC0yOTgs
NiArMjkxLDkgQEAgdHlwZWRlZiBzdHJ1Y3QKICAgICAvLyBHTEVTIFNMIHZlcnNpb24gMTAwIGds
X01heER1YWxTb3VyY2VEcmF3QnVmZmVyc0VYVCB2YWx1ZSBmb3IgRVhUX2JsZW5kX2Z1bmNfZXh0
ZW5kZWQuCiAgICAgaW50IE1heER1YWxTb3VyY2VEcmF3QnVmZmVyczsKIAorICAgIC8vIFZhbHVl
IG9mIEdMX01BWF9WSUVXU19PVlIuCisgICAgaW50IE1heFZpZXdzT1ZSOworCiAgICAgLy8gTmFt
ZSBIYXNoaW5nLgogICAgIC8vIFNldCBhIDY0IGJpdCBoYXNoIGZ1bmN0aW9uIHRvIGVuYWJsZSB1
c2VyLWRlZmluZWQgbmFtZSBoYXNoaW5nLgogICAgIC8vIERlZmF1bHQgaXMgTlVMTC4KQEAgLTMz
NCw2ICszMzAsOSBAQCB0eXBlZGVmIHN0cnVjdAogICAgIC8vIG1heGltdW0gdG90YWwgbnVtYmVy
IG9mIGltYWdlIHVuaWZvcm1zIGluIGEgcHJvZ3JhbQogICAgIGludCBNYXhDb21iaW5lZEltYWdl
VW5pZm9ybXM7CiAKKyAgICAvLyBtYXhpbXVtIG51bWJlciBvZiB1bmlmb3JtIGxvY2F0aW9ucwor
ICAgIGludCBNYXhVbmlmb3JtTG9jYXRpb25zOworCiAgICAgLy8gbWF4aW11bSBudW1iZXIgb2Yg
c3Nib3MgYW5kIGltYWdlcyBpbiBhIHNoYWRlcgogICAgIGludCBNYXhDb21iaW5lZFNoYWRlck91
dHB1dFJlc291cmNlczsKIApAQCAtMzc3LDE1ICszNzYsNyBAQCB0eXBlZGVmIHN0cnVjdAogCiAg
ICAgLy8gbWF4aW11bSBudW1iZXIgb2YgYnVmZmVyIG9iamVjdCBzdG9yYWdlIGluIG1hY2hpbmUg
dW5pdHMKICAgICBpbnQgTWF4QXRvbWljQ291bnRlckJ1ZmZlclNpemU7Ci0KLX0gU2hCdWlsdElu
UmVzb3VyY2VzOwotCi0vLwotLy8gSW5pdGlhbGl6ZSBidWlsdC1pbiByZXNvdXJjZXMgd2l0aCBt
aW5pbXVtIGV4cGVjdGVkIHZhbHVlcy4KLS8vIFBhcmFtZXRlcnM6Ci0vLyByZXNvdXJjZXM6IFRo
ZSBvYmplY3QgdG8gaW5pdGlhbGl6ZS4gV2lsbCBiZSBjb21wYXJhYmxlIHdpdGggbWVtY21wLgot
Ly8KLUNPTVBJTEVSX0VYUE9SVCB2b2lkIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoU2hCdWlsdElu
UmVzb3VyY2VzICpyZXNvdXJjZXMpOworfTsKIAogLy8KIC8vIFNoSGFuZGxlIGhlbGQgYnkgYnV0
IG9wYXF1ZSB0byB0aGUgZHJpdmVyLiAgSXQgaXMgYWxsb2NhdGVkLApAQCAtMzk0LDQzICszODUs
NjAgQEAgQ09NUElMRVJfRVhQT1JUIHZvaWQgU2hJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0
SW5SZXNvdXJjZXMgKnJlc291cmNlcyk7CiAvLwogLy8gSWYgaGFuZGxlIGNyZWF0aW9uIGZhaWxz
LCAwIHdpbGwgYmUgcmV0dXJuZWQuCiAvLwotdHlwZWRlZiB2b2lkICpTaEhhbmRsZTsKK3VzaW5n
IFNoSGFuZGxlID0gdm9pZCAqOworCituYW1lc3BhY2Ugc2gKK3sKKworLy8KKy8vIERyaXZlciBt
dXN0IGNhbGwgdGhpcyBmaXJzdCwgb25jZSwgYmVmb3JlIGRvaW5nIGFueSBvdGhlciBjb21waWxl
ciBvcGVyYXRpb25zLgorLy8gSWYgdGhlIGZ1bmN0aW9uIHN1Y2NlZWRzLCB0aGUgcmV0dXJuIHZh
bHVlIGlzIHRydWUsIGVsc2UgZmFsc2UuCisvLworYm9vbCBJbml0aWFsaXplKCk7CisvLworLy8g
RHJpdmVyIHNob3VsZCBjYWxsIHRoaXMgYXQgc2h1dGRvd24uCisvLyBJZiB0aGUgZnVuY3Rpb24g
c3VjY2VlZHMsIHRoZSByZXR1cm4gdmFsdWUgaXMgdHJ1ZSwgZWxzZSBmYWxzZS4KKy8vCitib29s
IEZpbmFsaXplKCk7CisKKy8vCisvLyBJbml0aWFsaXplIGJ1aWx0LWluIHJlc291cmNlcyB3aXRo
IG1pbmltdW0gZXhwZWN0ZWQgdmFsdWVzLgorLy8gUGFyYW1ldGVyczoKKy8vIHJlc291cmNlczog
VGhlIG9iamVjdCB0byBpbml0aWFsaXplLiBXaWxsIGJlIGNvbXBhcmFibGUgd2l0aCBtZW1jbXAu
CisvLwordm9pZCBJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0SW5SZXNvdXJjZXMgKnJlc291
cmNlcyk7CiAKIC8vCi0vLyBSZXR1cm5zIHRoZSBhIGNvbmNhdGVuYXRlZCBsaXN0IG9mIHRoZSBp
dGVtcyBpbiBTaEJ1aWx0SW5SZXNvdXJjZXMgYXMgYQotLy8gbnVsbC10ZXJtaW5hdGVkIHN0cmlu
Zy4KKy8vIFJldHVybnMgdGhlIGEgY29uY2F0ZW5hdGVkIGxpc3Qgb2YgdGhlIGl0ZW1zIGluIFNo
QnVpbHRJblJlc291cmNlcyBhcyBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcuCiAvLyBUaGlzIGZ1
bmN0aW9uIG11c3QgYmUgdXBkYXRlZCB3aGVuZXZlciBTaEJ1aWx0SW5SZXNvdXJjZXMgaXMgY2hh
bmdlZC4KIC8vIFBhcmFtZXRlcnM6CiAvLyBoYW5kbGU6IFNwZWNpZmllcyB0aGUgaGFuZGxlIG9m
IHRoZSBjb21waWxlciB0byBiZSB1c2VkLgotQ09NUElMRVJfRVhQT1JUIGNvbnN0IHN0ZDo6c3Ry
aW5nICZTaEdldEJ1aWx0SW5SZXNvdXJjZXNTdHJpbmcoY29uc3QgU2hIYW5kbGUgaGFuZGxlKTsK
K2NvbnN0IHN0ZDo6c3RyaW5nICZHZXRCdWlsdEluUmVzb3VyY2VzU3RyaW5nKGNvbnN0IFNoSGFu
ZGxlIGhhbmRsZSk7CiAKIC8vCiAvLyBEcml2ZXIgY2FsbHMgdGhlc2UgdG8gY3JlYXRlIGFuZCBk
ZXN0cm95IGNvbXBpbGVyIG9iamVjdHMuCiAvLwotLy8gUmV0dXJucyB0aGUgaGFuZGxlIG9mIGNv
bnN0cnVjdGVkIGNvbXBpbGVyLCBudWxsIGlmIHRoZSByZXF1ZXN0ZWQgY29tcGlsZXIgaXMKLS8v
IG5vdCBzdXBwb3J0ZWQuCisvLyBSZXR1cm5zIHRoZSBoYW5kbGUgb2YgY29uc3RydWN0ZWQgY29t
cGlsZXIsIG51bGwgaWYgdGhlIHJlcXVlc3RlZCBjb21waWxlciBpcyBub3Qgc3VwcG9ydGVkLgog
Ly8gUGFyYW1ldGVyczoKIC8vIHR5cGU6IFNwZWNpZmllcyB0aGUgdHlwZSBvZiBzaGFkZXIgLSBH
TF9GUkFHTUVOVF9TSEFERVIgb3IgR0xfVkVSVEVYX1NIQURFUi4KLS8vIHNwZWM6IFNwZWNpZmll
cyB0aGUgbGFuZ3VhZ2Ugc3BlYyB0aGUgY29tcGlsZXIgbXVzdCBjb25mb3JtIHRvIC0KLS8vICAg
ICAgIFNIX0dMRVMyX1NQRUMgb3IgU0hfV0VCR0xfU1BFQy4KKy8vIHNwZWM6IFNwZWNpZmllcyB0
aGUgbGFuZ3VhZ2Ugc3BlYyB0aGUgY29tcGlsZXIgbXVzdCBjb25mb3JtIHRvIC0gU0hfR0xFUzJf
U1BFQyBvciBTSF9XRUJHTF9TUEVDLgogLy8gb3V0cHV0OiBTcGVjaWZpZXMgdGhlIG91dHB1dCBj
b2RlIHR5cGUgLSBmb3IgZXhhbXBsZSBTSF9FU1NMX09VVFBVVCwgU0hfR0xTTF9PVVRQVVQsCiAv
LyAgICAgICAgIFNIX0hMU0xfM18wX09VVFBVVCBvciBTSF9ITFNMXzRfMV9PVVRQVVQuIE5vdGU6
IEVhY2ggb3V0cHV0IHR5cGUgbWF5IG9ubHkKIC8vICAgICAgICAgYmUgc3VwcG9ydGVkIGluIHNv
bWUgY29uZmlndXJhdGlvbnMuCiAvLyByZXNvdXJjZXM6IFNwZWNpZmllcyB0aGUgYnVpbHQtaW4g
cmVzb3VyY2VzLgotQ09NUElMRVJfRVhQT1JUIFNoSGFuZGxlIFNoQ29uc3RydWN0Q29tcGlsZXIo
Ci0gICAgc2g6OkdMZW51bSB0eXBlLAotICAgIFNoU2hhZGVyU3BlYyBzcGVjLAotICAgIFNoU2hh
ZGVyT3V0cHV0IG91dHB1dCwKLSAgICBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMgKnJlc291cmNl
cyk7Ci1DT01QSUxFUl9FWFBPUlQgdm9pZCBTaERlc3RydWN0KFNoSGFuZGxlIGhhbmRsZSk7CitT
aEhhbmRsZSBDb25zdHJ1Y3RDb21waWxlcihzaDo6R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaFNoYWRlclNwZWMgc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFNoQnVpbHRJblJlc291cmNlcyAqcmVzb3VyY2VzKTsKK3ZvaWQgRGVzdHJ1Y3QoU2hIYW5k
bGUgaGFuZGxlKTsKIAogLy8KIC8vIENvbXBpbGVzIHRoZSBnaXZlbiBzaGFkZXIgc291cmNlLgog
Ly8gSWYgdGhlIGZ1bmN0aW9uIHN1Y2NlZWRzLCB0aGUgcmV0dXJuIHZhbHVlIGlzIHRydWUsIGVs
c2UgZmFsc2UuCiAvLyBQYXJhbWV0ZXJzOgogLy8gaGFuZGxlOiBTcGVjaWZpZXMgdGhlIGhhbmRs
ZSBvZiBjb21waWxlciB0byBiZSB1c2VkLgotLy8gc2hhZGVyU3RyaW5nczogU3BlY2lmaWVzIGFu
IGFycmF5IG9mIHBvaW50ZXJzIHRvIG51bGwtdGVybWluYXRlZCBzdHJpbmdzCi0vLyAgICAgICAg
ICAgICAgICBjb250YWluaW5nIHRoZSBzaGFkZXIgc291cmNlIGNvZGUuCisvLyBzaGFkZXJTdHJp
bmdzOiBTcGVjaWZpZXMgYW4gYXJyYXkgb2YgcG9pbnRlcnMgdG8gbnVsbC10ZXJtaW5hdGVkIHN0
cmluZ3MgY29udGFpbmluZyB0aGUgc2hhZGVyCisvLyBzb3VyY2UgY29kZS4KIC8vIG51bVN0cmlu
Z3M6IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHNoYWRlclN0cmluZ3MgYXJy
YXkuCiAvLyBjb21waWxlT3B0aW9uczogQSBtYXNrIGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBw
YXJhbWV0ZXJzOgogLy8gU0hfVkFMSURBVEU6IFZhbGlkYXRlcyBzaGFkZXIgdG8gZW5zdXJlIHRo
YXQgaXQgY29uZm9ybXMgdG8gdGhlIHNwZWMKQEAgLTQ0Miw0NCArNDUwLDQxIEBAIENPTVBJTEVS
X0VYUE9SVCB2b2lkIFNoRGVzdHJ1Y3QoU2hIYW5kbGUgaGFuZGxlKTsKIC8vICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRoZXJlIGlzIG5vIG5lZWQgdG8gc3BlY2lmeSB0aGlzIHBhcmFtZXRl
ciB3aGVuCiAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxpbmcgZm9yIFdlYkdM
IC0gaXQgaXMgaW1wbGllZC4KIC8vIFNIX0lOVEVSTUVESUFURV9UUkVFOiBXcml0ZXMgaW50ZXJt
ZWRpYXRlIHRyZWUgdG8gaW5mbyBsb2cuCi0vLyAgICAgICAgICAgICAgICAgICAgICAgQ2FuIGJl
IHF1ZXJpZWQgYnkgY2FsbGluZyBTaEdldEluZm9Mb2coKS4KKy8vICAgICAgICAgICAgICAgICAg
ICAgICBDYW4gYmUgcXVlcmllZCBieSBjYWxsaW5nIHNoOjpHZXRJbmZvTG9nKCkuCiAvLyBTSF9P
QkpFQ1RfQ09ERTogVHJhbnNsYXRlcyBpbnRlcm1lZGlhdGUgdHJlZSB0byBnbHNsIG9yIGhsc2wg
c2hhZGVyLgotLy8gICAgICAgICAgICAgICAgIENhbiBiZSBxdWVyaWVkIGJ5IGNhbGxpbmcgU2hH
ZXRPYmplY3RDb2RlKCkuCisvLyAgICAgICAgICAgICAgICAgQ2FuIGJlIHF1ZXJpZWQgYnkgY2Fs
bGluZyBzaDo6R2V0T2JqZWN0Q29kZSgpLgogLy8gU0hfVkFSSUFCTEVTOiBFeHRyYWN0cyBhdHRy
aWJ1dGVzLCB1bmlmb3JtcywgYW5kIHZhcnlpbmdzLgogLy8gICAgICAgICAgICAgICBDYW4gYmUg
cXVlcmllZCBieSBjYWxsaW5nIFNoR2V0VmFyaWFibGVJbmZvKCkuCiAvLwotQ09NUElMRVJfRVhQ
T1JUIGJvb2wgU2hDb21waWxlKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb25zdCBzaGFkZXJTdHJpbmdzW10sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bVN0cmluZ3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucyk7Citi
b29sIENvbXBpbGUoY29uc3QgU2hIYW5kbGUgaGFuZGxlLAorICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKmNvbnN0IHNoYWRlclN0cmluZ3NbXSwKKyAgICAgICAgICAgICBzaXplX3QgbnVtU3RyaW5n
cywKKyAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zKTsKIAogLy8g
Q2xlYXJzIHRoZSByZXN1bHRzIGZyb20gdGhlIHByZXZpb3VzIGNvbXBpbGF0aW9uLgotQ09NUElM
RVJfRVhQT1JUIHZvaWQgU2hDbGVhclJlc3VsdHMoY29uc3QgU2hIYW5kbGUgaGFuZGxlKTsKK3Zv
aWQgQ2xlYXJSZXN1bHRzKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7CiAKIC8vIFJldHVybiB0aGUg
dmVyc2lvbiBvZiB0aGUgc2hhZGVyIGxhbmd1YWdlLgotQ09NUElMRVJfRVhQT1JUIGludCBTaEdl
dFNoYWRlclZlcnNpb24oY29uc3QgU2hIYW5kbGUgaGFuZGxlKTsKK2ludCBHZXRTaGFkZXJWZXJz
aW9uKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7CiAKIC8vIFJldHVybiB0aGUgY3VycmVudGx5IHNl
dCBsYW5ndWFnZSBvdXRwdXQgdHlwZS4KLUNPTVBJTEVSX0VYUE9SVCBTaFNoYWRlck91dHB1dCBT
aEdldFNoYWRlck91dHB1dFR5cGUoCi0gICAgY29uc3QgU2hIYW5kbGUgaGFuZGxlKTsKK1NoU2hh
ZGVyT3V0cHV0IEdldFNoYWRlck91dHB1dFR5cGUoY29uc3QgU2hIYW5kbGUgaGFuZGxlKTsKIAog
Ly8gUmV0dXJucyBudWxsLXRlcm1pbmF0ZWQgaW5mb3JtYXRpb24gbG9nIGZvciBhIGNvbXBpbGVk
IHNoYWRlci4KIC8vIFBhcmFtZXRlcnM6CiAvLyBoYW5kbGU6IFNwZWNpZmllcyB0aGUgY29tcGls
ZXIKLUNPTVBJTEVSX0VYUE9SVCBjb25zdCBzdGQ6OnN0cmluZyAmU2hHZXRJbmZvTG9nKGNvbnN0
IFNoSGFuZGxlIGhhbmRsZSk7Citjb25zdCBzdGQ6OnN0cmluZyAmR2V0SW5mb0xvZyhjb25zdCBT
aEhhbmRsZSBoYW5kbGUpOwogCiAvLyBSZXR1cm5zIG51bGwtdGVybWluYXRlZCBvYmplY3QgY29k
ZSBmb3IgYSBjb21waWxlZCBzaGFkZXIuCiAvLyBQYXJhbWV0ZXJzOgogLy8gaGFuZGxlOiBTcGVj
aWZpZXMgdGhlIGNvbXBpbGVyCi1DT01QSUxFUl9FWFBPUlQgY29uc3Qgc3RkOjpzdHJpbmcgJlNo
R2V0T2JqZWN0Q29kZShjb25zdCBTaEhhbmRsZSBoYW5kbGUpOworY29uc3Qgc3RkOjpzdHJpbmcg
JkdldE9iamVjdENvZGUoY29uc3QgU2hIYW5kbGUgaGFuZGxlKTsKIAotLy8gUmV0dXJucyBhIChv
cmlnaW5hbF9uYW1lLCBoYXNoKSBtYXAgY29udGFpbmluZyBhbGwgdGhlIHVzZXIgZGVmaW5lZAot
Ly8gbmFtZXMgaW4gdGhlIHNoYWRlciwgaW5jbHVkaW5nIHZhcmlhYmxlIG5hbWVzLCBmdW5jdGlv
biBuYW1lcywgc3RydWN0Ci0vLyBuYW1lcywgYW5kIHN0cnVjdCBmaWVsZCBuYW1lcy4KKy8vIFJl
dHVybnMgYSAob3JpZ2luYWxfbmFtZSwgaGFzaCkgbWFwIGNvbnRhaW5pbmcgYWxsIHRoZSB1c2Vy
IGRlZmluZWQgbmFtZXMgaW4gdGhlIHNoYWRlciwKKy8vIGluY2x1ZGluZyB2YXJpYWJsZSBuYW1l
cywgZnVuY3Rpb24gbmFtZXMsIHN0cnVjdCBuYW1lcywgYW5kIHN0cnVjdCBmaWVsZCBuYW1lcy4K
IC8vIFBhcmFtZXRlcnM6CiAvLyBoYW5kbGU6IFNwZWNpZmllcyB0aGUgY29tcGlsZXIKLUNPTVBJ
TEVSX0VYUE9SVCBjb25zdCBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+ICpTaEdl
dE5hbWVIYXNoaW5nTWFwKAotICAgIGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7Citjb25zdCBzdGQ6
Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+ICpHZXROYW1lSGFzaGluZ01hcChjb25zdCBT
aEhhbmRsZSBoYW5kbGUpOwogCiAvLyBTaGFkZXIgdmFyaWFibGUgaW5zcGVjdGlvbi4KIC8vIFJl
dHVybnMgYSBwb2ludGVyIHRvIGEgbGlzdCBvZiB2YXJpYWJsZXMgb2YgdGhlIGRlc2lnbmF0ZWQg
dHlwZS4KQEAgLTQ4NywyOSArNDkyLDIzIEBAIENPTVBJTEVSX0VYUE9SVCBjb25zdCBzdGQ6Om1h
cDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+ICpTaEdldE5hbWVIYXNoaW5nTWFwKAogLy8gUmV0
dXJucyBOVUxMIG9uIGZhaWx1cmUuCiAvLyBQYXJhbWV0ZXJzOgogLy8gaGFuZGxlOiBTcGVjaWZp
ZXMgdGhlIGNvbXBpbGVyCi1DT01QSUxFUl9FWFBPUlQgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlVu
aWZvcm0+ICpTaEdldFVuaWZvcm1zKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7Ci1DT01QSUxFUl9F
WFBPUlQgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+ICpTaEdldFZhcnlpbmdzKGNvbnN0
IFNoSGFuZGxlIGhhbmRsZSk7Ci1DT01QSUxFUl9FWFBPUlQgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6
OkF0dHJpYnV0ZT4gKlNoR2V0QXR0cmlidXRlcyhjb25zdCBTaEhhbmRsZSBoYW5kbGUpOwotQ09N
UElMRVJfRVhQT1JUIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpPdXRwdXRWYXJpYWJsZT4gKlNoR2V0
T3V0cHV0VmFyaWFibGVzKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7Ci1DT01QSUxFUl9FWFBPUlQg
Y29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPiAqU2hHZXRJbnRlcmZhY2VCbG9j
a3MoY29uc3QgU2hIYW5kbGUgaGFuZGxlKTsKLUNPTVBJTEVSX0VYUE9SVCBzaDo6V29ya0dyb3Vw
U2l6ZSBTaEdldENvbXB1dGVTaGFkZXJMb2NhbEdyb3VwU2l6ZShjb25zdCBTaEhhbmRsZSBoYW5k
bGUpOwotCi10eXBlZGVmIHN0cnVjdAotewotICAgIHNoOjpHTGVudW0gdHlwZTsKLSAgICBpbnQg
c2l6ZTsKLX0gU2hWYXJpYWJsZUluZm87Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFzc2Vk
IGluIHZhcmlhYmxlcyBwYWNrIGluIG1heFZlY3RvcnMgZm9sbG93aW5nCi0vLyB0aGUgcGFja2lu
ZyBydWxlcyBmcm9tIHRoZSBHTFNMIDEuMDE3IHNwZWMsIEFwcGVuZGl4IEEsIHNlY3Rpb24gNy4K
K2NvbnN0IHN0ZDo6dmVjdG9yPHNoOjpVbmlmb3JtPiAqR2V0VW5pZm9ybXMoY29uc3QgU2hIYW5k
bGUgaGFuZGxlKTsKK2NvbnN0IHN0ZDo6dmVjdG9yPHNoOjpWYXJ5aW5nPiAqR2V0VmFyeWluZ3Mo
Y29uc3QgU2hIYW5kbGUgaGFuZGxlKTsKK2NvbnN0IHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGU+
ICpHZXRBdHRyaWJ1dGVzKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7Citjb25zdCBzdGQ6OnZlY3Rv
cjxzaDo6T3V0cHV0VmFyaWFibGU+ICpHZXRPdXRwdXRWYXJpYWJsZXMoY29uc3QgU2hIYW5kbGUg
aGFuZGxlKTsKK2NvbnN0IHN0ZDo6dmVjdG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4gKkdldEludGVy
ZmFjZUJsb2Nrcyhjb25zdCBTaEhhbmRsZSBoYW5kbGUpOworc2g6OldvcmtHcm91cFNpemUgR2V0
Q29tcHV0ZVNoYWRlckxvY2FsR3JvdXBTaXplKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7CitpbnQg
R2V0VmVydGV4U2hhZGVyTnVtVmlld3MoY29uc3QgU2hIYW5kbGUgaGFuZGxlKTsKKworLy8gUmV0
dXJucyB0cnVlIGlmIHRoZSBwYXNzZWQgaW4gdmFyaWFibGVzIHBhY2sgaW4gbWF4VmVjdG9ycyBm
b2xsb3dpbmd0aGUgcGFja2luZyBydWxlcyBmcm9tIHRoZQorLy8gR0xTTCAxLjAxNyBzcGVjLCBB
cHBlbmRpeCBBLCBzZWN0aW9uIDcuCiAvLyBSZXR1cm5zIGZhbHNlIG90aGVyd2lzZS4gQWxzbyBs
b29rIGF0IHRoZSBTSF9FTkZPUkNFX1BBQ0tJTkdfUkVTVFJJQ1RJT05TCiAvLyBmbGFnIGFib3Zl
LgogLy8gUGFyYW1ldGVyczoKIC8vIG1heFZlY3RvcnM6IHRoZSBhdmFpbGFibGUgcm93cyBvZiBy
ZWdpc3RlcnMuCiAvLyB2YXJpYWJsZXM6IGFuIGFycmF5IG9mIHZhcmlhYmxlcy4KLUNPTVBJTEVS
X0VYUE9SVCBib29sIFNoQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKAotICAgIGlu
dCBtYXhWZWN0b3JzLAotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4g
JnZhcmlhYmxlcyk7Citib29sIENoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyhpbnQg
bWF4VmVjdG9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4gJnZhcmlhYmxlcyk7CiAKIC8vIEdpdmVz
IHRoZSBjb21waWxlci1hc3NpZ25lZCByZWdpc3RlciBmb3IgYW4gaW50ZXJmYWNlIGJsb2NrLgog
Ly8gVGhlIG1ldGhvZCB3cml0ZXMgdGhlIHZhbHVlIHRvIHRoZSBvdXRwdXQgdmFyaWFibGUgImlu
ZGV4T3V0Ii4KQEAgLTUxOCwxNCArNTE3LDE0IEBAIENPTVBJTEVSX0VYUE9SVCBib29sIFNoQ2hl
Y2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKAogLy8gaGFuZGxlOiBTcGVjaWZpZXMgdGhl
IGNvbXBpbGVyCiAvLyBpbnRlcmZhY2VCbG9ja05hbWU6IFNwZWNpZmllcyB0aGUgaW50ZXJmYWNl
IGJsb2NrCiAvLyBpbmRleE91dDogb3V0cHV0IHZhcmlhYmxlIHRoYXQgc3RvcmVzIHRoZSBhc3Np
Z25lZCByZWdpc3RlcgotQ09NUElMRVJfRVhQT1JUIGJvb2wgU2hHZXRJbnRlcmZhY2VCbG9ja1Jl
Z2lzdGVyKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmaW50ZXJmYWNlQmxvY2tO
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCAqaW5kZXhPdXQpOwotCi0vLyBHaXZlcyBhIG1hcCBmcm9tIHVuaWZvcm0gbmFt
ZXMgdG8gY29tcGlsZXItYXNzaWduZWQgcmVnaXN0ZXJzIGluIHRoZSBkZWZhdWx0Ci0vLyBpbnRl
cmZhY2UgYmxvY2suIE5vdGUgdGhhdCB0aGUgbWFwIGNvbnRhaW5zIGFsc28gcmVnaXN0ZXJzIG9m
IHNhbXBsZXJzIHRoYXQKLS8vIGhhdmUgYmVlbiBleHRyYWN0ZWQgZnJvbSBzdHJ1Y3RzLgotQ09N
UElMRVJfRVhQT1JUIGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1bnNpZ25lZCBpbnQ+ICpT
aEdldFVuaWZvcm1SZWdpc3Rlck1hcCgKLSAgICBjb25zdCBTaEhhbmRsZSBoYW5kbGUpOworYm9v
bCBHZXRJbnRlcmZhY2VCbG9ja1JlZ2lzdGVyKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmaW50ZXJmYWNlQmxv
Y2tOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqaW5k
ZXhPdXQpOworCisvLyBHaXZlcyBhIG1hcCBmcm9tIHVuaWZvcm0gbmFtZXMgdG8gY29tcGlsZXIt
YXNzaWduZWQgcmVnaXN0ZXJzIGluIHRoZSBkZWZhdWx0IGludGVyZmFjZSBibG9jay4KKy8vIE5v
dGUgdGhhdCB0aGUgbWFwIGNvbnRhaW5zIGFsc28gcmVnaXN0ZXJzIG9mIHNhbXBsZXJzIHRoYXQg
aGF2ZSBiZWVuIGV4dHJhY3RlZCBmcm9tIHN0cnVjdHMuCitjb25zdCBzdGQ6Om1hcDxzdGQ6OnN0
cmluZywgdW5zaWduZWQgaW50PiAqR2V0VW5pZm9ybVJlZ2lzdGVyTWFwKGNvbnN0IFNoSGFuZGxl
IGhhbmRsZSk7CisKK30gIC8vIG5hbWVzcGFjZSBzaAogCiAjZW5kaWYgLy8gR0xTTEFOR19TSEFE
RVJMQU5HX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dM
U0xBTkcvU2hhZGVyVmFycy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNM
QU5HL1NoYWRlclZhcnMuaAppbmRleCBlMWMxNDBmOTI2MDQ2ZDBkNzQyYmZhZDllYmVjZjJiNjhh
MTE0YmU1Li5mNzJiOGM2ZmFiYTg5NzUwNGFiYWYzZjUwZjRkM2E2MzhlY2ZlYzEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyVmFycy5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJWYXJz
LmgKQEAgLTE0LDExICsxNCwxMyBAQAogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0
b3I+CiAKLS8vIEFzc3VtZSBTaGFkZXJMYW5nLmggaXMgaW5jbHVkZWQgYmVmb3JlIFNoYWRlclZh
cnMuaCwgZm9yIHNoOjpHTGVudW0KLS8vIE5vdGU6IG1ha2Ugc3VyZSB0byBpbmNyZW1lbnQgQU5H
TEVfU0hfVkVSU0lPTiB3aGVuIGNoYW5naW5nIFNoYWRlclZhcnMuaAorLy8gVGhpcyB0eXBlIGlz
IGRlZmluZWQgaGVyZSB0byBzaW1wbGlmeSBBTkdMRSdzIGludGVncmF0aW9uIHdpdGggZ2xzbGFu
ZyBmb3IgU1BJUnYuCit1c2luZyBTaENvbXBpbGVPcHRpb25zID0gdWludDY0X3Q7CiAKIG5hbWVz
cGFjZSBzaAogeworLy8gR0xlbnVtIGFsaWFzCit0eXBlZGVmIHVuc2lnbmVkIGludCBHTGVudW07
CiAKIC8vIFZhcnlpbmcgaW50ZXJwb2xhdGlvbiBxdWFsaWZpZXIsIHNlZSBzZWN0aW9uIDQuMy45
IG9mIHRoZSBFU1NMIDMuMDAuNCBzcGVjCiBlbnVtIEludGVycG9sYXRpb25UeXBlCkBAIC0yOSw3
ICszMSw3IEBAIGVudW0gSW50ZXJwb2xhdGlvblR5cGUKIH07CiAKIC8vIFZhbGlkYXRlIGxpbmsg
JiBTU08gY29uc2lzdGVuY3kgb2YgaW50ZXJwb2xhdGlvbiBxdWFsaWZpZXJzCi1DT01QSUxFUl9F
WFBPUlQgYm9vbCBJbnRlcnBvbGF0aW9uVHlwZXNNYXRjaChJbnRlcnBvbGF0aW9uVHlwZSBhLCBJ
bnRlcnBvbGF0aW9uVHlwZSBiKTsKK2Jvb2wgSW50ZXJwb2xhdGlvblR5cGVzTWF0Y2goSW50ZXJw
b2xhdGlvblR5cGUgYSwgSW50ZXJwb2xhdGlvblR5cGUgYik7CiAKIC8vIFVuaWZvcm0gYmxvY2sg
bGF5b3V0IHF1YWxpZmllciwgc2VlIHNlY3Rpb24gNC4zLjguMyBvZiB0aGUgRVNTTCAzLjAwLjQg
c3BlYwogZW51bSBCbG9ja0xheW91dFR5cGUKQEAgLTQzLDcgKzQ1LDcgQEAgZW51bSBCbG9ja0xh
eW91dFR5cGUKIC8vIE5vdGU6IHdlIG11c3Qgb3ZlcnJpZGUgdGhlIGNvcHkgY29uc3RydWN0b3Ig
YW5kIGFzc2lnbm1lbnQgb3BlcmF0b3Igc28gd2UgY2FuCiAvLyB3b3JrIGFyb3VuZCBleGNlc3Np
dmUgR0NDIGJpbmFyeSBibG9hdGluZzoKIC8vIFNlZSBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9w
L2FuZ2xlcHJvamVjdC9pc3N1ZXMvZGV0YWlsP2lkPTY5Nwotc3RydWN0IENPTVBJTEVSX0VYUE9S
VCBTaGFkZXJWYXJpYWJsZQorc3RydWN0IFNoYWRlclZhcmlhYmxlCiB7CiAgICAgU2hhZGVyVmFy
aWFibGUoKTsKICAgICBTaGFkZXJWYXJpYWJsZShHTGVudW0gdHlwZUluLCB1bnNpZ25lZCBpbnQg
YXJyYXlTaXplSW4pOwpAQCAtOTIsNyArOTQsMjEgQEAgc3RydWN0IENPTVBJTEVSX0VYUE9SVCBT
aGFkZXJWYXJpYWJsZQogICAgIH0KIH07CiAKLXN0cnVjdCBDT01QSUxFUl9FWFBPUlQgVW5pZm9y
bSA6IHB1YmxpYyBTaGFkZXJWYXJpYWJsZQorLy8gQSB2YXJpYWJsZSB3aXRoIGFuIGludGVnZXIg
bG9jYXRpb24gdG8gcGFzcyBiYWNrIHRvIHRoZSBHTCBBUEk6IGVpdGhlciB1bmlmb3JtIChjYW4g
aGF2ZSBsb2NhdGlvbgorLy8gaW4gR0xFUzMuMSspLCB2ZXJ0ZXggc2hhZGVyIGlucHV0IG9yIGZy
YWdtZW50IHNoYWRlciBvdXRwdXQuCitzdHJ1Y3QgVmFyaWFibGVXaXRoTG9jYXRpb24gOiBwdWJs
aWMgU2hhZGVyVmFyaWFibGUKK3sKKyAgICBWYXJpYWJsZVdpdGhMb2NhdGlvbigpOworICAgIH5W
YXJpYWJsZVdpdGhMb2NhdGlvbigpOworICAgIFZhcmlhYmxlV2l0aExvY2F0aW9uKGNvbnN0IFZh
cmlhYmxlV2l0aExvY2F0aW9uICZvdGhlcik7CisgICAgVmFyaWFibGVXaXRoTG9jYXRpb24gJm9w
ZXJhdG9yPShjb25zdCBWYXJpYWJsZVdpdGhMb2NhdGlvbiAmb3RoZXIpOworICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBWYXJpYWJsZVdpdGhMb2NhdGlvbiAmb3RoZXIpIGNvbnN0OworICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBWYXJpYWJsZVdpdGhMb2NhdGlvbiAmb3RoZXIpIGNvbnN0IHsg
cmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQorCisgICAgaW50IGxvY2F0aW9uOworfTsKKwor
c3RydWN0IFVuaWZvcm0gOiBwdWJsaWMgVmFyaWFibGVXaXRoTG9jYXRpb24KIHsKICAgICBVbmlm
b3JtKCk7CiAgICAgflVuaWZvcm0oKTsKQEAgLTEwNCwyOCArMTIwLDE2IEBAIHN0cnVjdCBDT01Q
SUxFUl9FWFBPUlQgVW5pZm9ybSA6IHB1YmxpYyBTaGFkZXJWYXJpYWJsZQogICAgICAgICByZXR1
cm4gIW9wZXJhdG9yPT0ob3RoZXIpOwogICAgIH0KIAorICAgIGludCBiaW5kaW5nOworCiAgICAg
Ly8gRGVjaWRlIHdoZXRoZXIgdHdvIHVuaWZvcm1zIGFyZSB0aGUgc2FtZSBhdCBzaGFkZXIgbGlu
ayB0aW1lLAogICAgIC8vIGFzc3VtaW5nIG9uZSBmcm9tIHZlcnRleCBzaGFkZXIgYW5kIHRoZSBv
dGhlciBmcm9tIGZyYWdtZW50IHNoYWRlci4KLSAgICAvLyBTZWUgR0xTTCBFUyBTcGVjIDMuMDAu
Mywgc2VjIDQuMy41LgorICAgIC8vIEdMU0wgRVMgU3BlYyAzLjAwLjMsIHNlY3Rpb24gNC4zLjUu
CisgICAgLy8gR0xTTCBFUyBTcGVjIDMuMTAuNCwgc2VjdGlvbiA0LjQuNQogICAgIGJvb2wgaXNT
YW1lVW5pZm9ybUF0TGlua1RpbWUoY29uc3QgVW5pZm9ybSAmb3RoZXIpIGNvbnN0OwogfTsKIAot
Ly8gQW4gaW50ZXJmYWNlIHZhcmlhYmxlIGlzIGEgdmFyaWFibGUgd2hpY2ggcGFzc2VzIGRhdGEg
YmV0d2VlbiB0aGUgR0wgZGF0YSBzdHJ1Y3R1cmVzIGFuZCB0aGUKLS8vIHNoYWRlciBleGVjdXRp
b246IGVpdGhlciB2ZXJ0ZXggc2hhZGVyIGlucHV0cyBvciBmcmFnbWVudCBzaGFkZXIgb3V0cHV0
cy4gVGhlc2UgdmFyaWFibGVzIGNhbgotLy8gaGF2ZSBpbnRlZ2VyIGxvY2F0aW9ucyB0byBwYXNz
IGJhY2sgdG8gdGhlIEdMIEFQSS4KLXN0cnVjdCBDT01QSUxFUl9FWFBPUlQgSW50ZXJmYWNlVmFy
aWFibGUgOiBwdWJsaWMgU2hhZGVyVmFyaWFibGUKLXsKLSAgICBJbnRlcmZhY2VWYXJpYWJsZSgp
OwotICAgIH5JbnRlcmZhY2VWYXJpYWJsZSgpOwotICAgIEludGVyZmFjZVZhcmlhYmxlKGNvbnN0
IEludGVyZmFjZVZhcmlhYmxlICZvdGhlcik7Ci0gICAgSW50ZXJmYWNlVmFyaWFibGUgJm9wZXJh
dG9yPShjb25zdCBJbnRlcmZhY2VWYXJpYWJsZSAmb3RoZXIpOwotICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBJbnRlcmZhY2VWYXJpYWJsZSAmb3RoZXIpIGNvbnN0OwotICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBJbnRlcmZhY2VWYXJpYWJsZSAmb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVy
YXRvcj09KG90aGVyKTsgfQotCi0gICAgaW50IGxvY2F0aW9uOwotfTsKLQotc3RydWN0IENPTVBJ
TEVSX0VYUE9SVCBBdHRyaWJ1dGUgOiBwdWJsaWMgSW50ZXJmYWNlVmFyaWFibGUKK3N0cnVjdCBB
dHRyaWJ1dGUgOiBwdWJsaWMgVmFyaWFibGVXaXRoTG9jYXRpb24KIHsKICAgICBBdHRyaWJ1dGUo
KTsKICAgICB+QXR0cmlidXRlKCk7CkBAIC0xMzUsNyArMTM5LDcgQEAgc3RydWN0IENPTVBJTEVS
X0VYUE9SVCBBdHRyaWJ1dGUgOiBwdWJsaWMgSW50ZXJmYWNlVmFyaWFibGUKICAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgQXR0cmlidXRlICZvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9y
PT0ob3RoZXIpOyB9CiB9OwogCi1zdHJ1Y3QgQ09NUElMRVJfRVhQT1JUIE91dHB1dFZhcmlhYmxl
IDogcHVibGljIEludGVyZmFjZVZhcmlhYmxlCitzdHJ1Y3QgT3V0cHV0VmFyaWFibGUgOiBwdWJs
aWMgVmFyaWFibGVXaXRoTG9jYXRpb24KIHsKICAgICBPdXRwdXRWYXJpYWJsZSgpOwogICAgIH5P
dXRwdXRWYXJpYWJsZSgpOwpAQCAtMTQ1LDcgKzE0OSw3IEBAIHN0cnVjdCBDT01QSUxFUl9FWFBP
UlQgT3V0cHV0VmFyaWFibGUgOiBwdWJsaWMgSW50ZXJmYWNlVmFyaWFibGUKICAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgT3V0cHV0VmFyaWFibGUgJm90aGVyKSBjb25zdCB7IHJldHVybiAhb3Bl
cmF0b3I9PShvdGhlcik7IH0KIH07CiAKLXN0cnVjdCBDT01QSUxFUl9FWFBPUlQgSW50ZXJmYWNl
QmxvY2tGaWVsZCA6IHB1YmxpYyBTaGFkZXJWYXJpYWJsZQorc3RydWN0IEludGVyZmFjZUJsb2Nr
RmllbGQgOiBwdWJsaWMgU2hhZGVyVmFyaWFibGUKIHsKICAgICBJbnRlcmZhY2VCbG9ja0ZpZWxk
KCk7CiAgICAgfkludGVyZmFjZUJsb2NrRmllbGQoKTsKQEAgLTE2Nyw3ICsxNzEsNyBAQCBzdHJ1
Y3QgQ09NUElMRVJfRVhQT1JUIEludGVyZmFjZUJsb2NrRmllbGQgOiBwdWJsaWMgU2hhZGVyVmFy
aWFibGUKICAgICBib29sIGlzUm93TWFqb3JMYXlvdXQ7CiB9OwogCi1zdHJ1Y3QgQ09NUElMRVJf
RVhQT1JUIFZhcnlpbmcgOiBwdWJsaWMgU2hhZGVyVmFyaWFibGUKK3N0cnVjdCBWYXJ5aW5nIDog
cHVibGljIFNoYWRlclZhcmlhYmxlCiB7CiAgICAgVmFyeWluZygpOwogICAgIH5WYXJ5aW5nKCk7
CkBAIC0xOTMsNyArMTk3LDcgQEAgc3RydWN0IENPTVBJTEVSX0VYUE9SVCBWYXJ5aW5nIDogcHVi
bGljIFNoYWRlclZhcmlhYmxlCiAgICAgYm9vbCBpc0ludmFyaWFudDsKIH07CiAKLXN0cnVjdCBD
T01QSUxFUl9FWFBPUlQgSW50ZXJmYWNlQmxvY2sKK3N0cnVjdCBJbnRlcmZhY2VCbG9jawogewog
ICAgIEludGVyZmFjZUJsb2NrKCk7CiAgICAgfkludGVyZmFjZUJsb2NrKCk7CkBAIC0yMTYsNyAr
MjIwLDcgQEAgc3RydWN0IENPTVBJTEVSX0VYUE9SVCBJbnRlcmZhY2VCbG9jawogICAgIHN0ZDo6
dmVjdG9yPEludGVyZmFjZUJsb2NrRmllbGQ+IGZpZWxkczsKIH07CiAKLXN0cnVjdCBDT01QSUxF
Ul9FWFBPUlQgV29ya0dyb3VwU2l6ZQorc3RydWN0IFdvcmtHcm91cFNpemUKIHsKICAgICB2b2lk
IGZpbGwoaW50IGZpbGxWYWx1ZSk7CiAgICAgdm9pZCBzZXRMb2NhbFNpemUoaW50IGxvY2FsU2l6
ZVgsIGludCBsb2NhbFNpemVZLCBpbnQgbG9jYWxTaXplWik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0tIUi9raHJwbGF0Zm9ybS5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvaW5jbHVkZS9LSFIva2hycGxhdGZvcm0uaApvbGQgbW9kZSAxMDA2NDQKbmV3
IG1vZGUgMTAwNzU1CmluZGV4IGM5ZTZmMTdkMzQzNDE3NzQ1OTE0MmYwNWU4MTI4NWJkNjgxMDM1
MzUuLjA3YjYxYjliZDYwMGUxNTZkOGI3ZTU2NjA4Mjg1YTZkMDliYzg0ZWQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9LSFIva2hycGxhdGZvcm0uaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0tIUi9raHJwbGF0Zm9ybS5oCkBAIC0yNiw3ICsyNiw3
IEBACiAKIC8qIEtocm9ub3MgcGxhdGZvcm0tc3BlY2lmaWMgdHlwZXMgYW5kIGRlZmluaXRpb25z
LgogICoKLSAqICRSZXZpc2lvbjogMjMyOTggJCBvbiAkRGF0ZTogMjAxMy0wOS0zMCAxNzowNzox
MyAtMDcwMCAoTW9uLCAzMCBTZXAgMjAxMykgJAorICogJFJldmlzaW9uOiAzMjUxNyAkIG9uICRE
YXRlOiAyMDE2LTAzLTExIDAyOjQxOjE5IC0wODAwIChGcmksIDExIE1hciAyMDE2KSAkCiAgKgog
ICogQWRvcHRlcnMgbWF5IG1vZGlmeSB0aGlzIGZpbGUgdG8gc3VpdCB0aGVpciBwbGF0Zm9ybS4g
QWRvcHRlcnMgYXJlCiAgKiBlbmNvdXJhZ2VkIHRvIHN1Ym1pdCBwbGF0Zm9ybSBzcGVjaWZpYyBt
b2RpZmljYXRpb25zIHRvIHRoZSBLaHJvbm9zCkBAIC0xMDEsNiArMTAxLDkgQEAKICMgICBkZWZp
bmUgS0hST05PU19BUElDQUxMIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQogI2VsaWYgZGVmaW5lZCAo
X19TWU1CSUFOMzJfXykKICMgICBkZWZpbmUgS0hST05PU19BUElDQUxMIElNUE9SVF9DCisjZWxp
ZiBkZWZpbmVkKF9fQU5EUk9JRF9fKQorIyAgIGluY2x1ZGUgPHN5cy9jZGVmcy5oPgorIyAgIGRl
ZmluZSBLSFJPTk9TX0FQSUNBTEwgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIp
KSkgX19OREtfRlBBQklfXwogI2Vsc2UKICMgICBkZWZpbmUgS0hST05PU19BUElDQUxMCiAjZW5k
aWYKQEAgLTIyMyw3ICsyMjYsNyBAQCB0eXBlZGVmIHNpZ25lZCAgIHNob3J0IGludCAgICAga2hy
b25vc19pbnQxNl90OwogdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgICAgIGtocm9ub3NfdWlu
dDE2X3Q7CiAKIC8qCi0gKiBUeXBlcyB0aGF0IGRpZmZlciBiZXR3ZWVuIExMUDY0IGFuZCBMUDY0
IGFyY2hpdGVjdHVyZXMgLSBpbiBMTFA2NCwgCisgKiBUeXBlcyB0aGF0IGRpZmZlciBiZXR3ZWVu
IExMUDY0IGFuZCBMUDY0IGFyY2hpdGVjdHVyZXMgLSBpbiBMTFA2NCwKICAqIHBvaW50ZXJzIGFy
ZSA2NCBiaXRzLCBidXQgJ2xvbmcnIGlzIHN0aWxsIDMyIGJpdHMuIFdpbjY0IGFwcGVhcnMKICAq
IHRvIGJlIHRoZSBvbmx5IExMUDY0IGFyY2hpdGVjdHVyZSBpbiBjdXJyZW50IHVzZS4KICAqLwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9leHBvcnQuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvZXhwb3J0LmgKaW5kZXggODA5MjY1YzFhMTBi
NjJlMjNiZDY0MzAwMTBmZmU2NDVkOTJkZGJhNC4uY2YxNDRmOTJhNTQ0MzI3MmFhODIzNjQ4MGVi
YTRhMzJkZjgzMzQ2NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVk
ZS9leHBvcnQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL2V4cG9ydC5o
CkBAIC05LDYgKzksNyBAQAogI2lmbmRlZiBMSUJHTEVTVjJfRVhQT1JUX0hfCiAjZGVmaW5lIExJ
QkdMRVNWMl9FWFBPUlRfSF8KIAorI2lmICFkZWZpbmVkKEFOR0xFX0VYUE9SVCkKICNpZiBkZWZp
bmVkKF9XSU4zMikKICNpZiBkZWZpbmVkKExJQkdMRVNWMl9JTVBMRU1FTlRBVElPTikgfHwgZGVm
aW5lZChMSUJBTkdMRV9JTVBMRU1FTlRBVElPTikgfHwgXAogICAgIGRlZmluZWQoTElCQU5HTEVf
VVRJTF9JTVBMRU1FTlRBVElPTikKQEAgLTI2LDUgKzI3LDYgQEAKICNlbHNlCiAjICAgZGVmaW5l
IEFOR0xFX0VYUE9SVAogI2VuZGlmCisjZW5kaWYgIC8vICFkZWZpbmVkKEFOR0xFX0VYUE9SVCkK
IAogI2VuZGlmIC8vIExJQkdMRVNWMl9FWFBPUlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL2luY2x1ZGUvcGxhdGZvcm0vUGxhdGZvcm0uaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL2luY2x1ZGUvcGxhdGZvcm0vUGxhdGZvcm0uaAppbmRleCAwZThjZGY0NzdmZmUw
NjVkNjcxMmU0ZWQwYWJmZGU5ZDU2MWM4MWY0Li4zZGNiOTVhYWJiNjM4OWQ5YTk2OTNiM2MwMDRm
OGYxZjdjNGMxZWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRl
L3BsYXRmb3JtL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVk
ZS9wbGF0Zm9ybS9QbGF0Zm9ybS5oCkBAIC0zMiwxMzcgKzMyLDI0MyBAQAogCiBuYW1lc3BhY2Ug
YW5nbGUKIHsKK3N0cnVjdCBXb3JrYXJvdW5kc0QzRDsKK3VzaW5nIFRyYWNlRXZlbnRIYW5kbGUg
PSB1aW50NjRfdDsKK3VzaW5nIEVHTERpc3BsYXlUeXBlICAgPSB2b2lkICo7CitzdHJ1Y3QgUGxh
dGZvcm1NZXRob2RzOwogCi1jbGFzcyBQbGF0Zm9ybQotewotICBwdWJsaWM6Ci0KLSAgICAvLyBT
eXN0ZW0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLQotICAgIC8vIFdhbGwgY2xvY2sgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHRo
ZSBlcG9jaC4KLSAgICAvLyBUT0RPKGptYWRpbGwpOiBpbnZlc3RpZ2F0ZSB1c2luZyBhbiBBTkdM
RSBpbnRlcm5hbCB0aW1lIGxpYnJhcnkKLSAgICB2aXJ0dWFsIGRvdWJsZSBjdXJyZW50VGltZSgp
IHsgcmV0dXJuIDA7IH0KLQotICAgIC8vIE1vbm90b25pY2FsbHkgaW5jcmVhc2luZyB0aW1lIGlu
IHNlY29uZHMgZnJvbSBhbiBhcmJpdHJhcnkgZml4ZWQgcG9pbnQgaW4gdGhlIHBhc3QuCi0gICAg
Ly8gVGhpcyBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byByZXR1cm4gYXQgbGVhc3QgbWlsbGlzZWNv
bmQtcHJlY2lzaW9uIHZhbHVlcy4gRm9yIHRoaXMgcmVhc29uLAotICAgIC8vIGl0IGlzIHJlY29t
bWVuZGVkIHRoYXQgdGhlIGZpeGVkIHBvaW50IGJlIG5vIGZ1cnRoZXIgaW4gdGhlIHBhc3QgdGhh
biB0aGUgZXBvY2guCi0gICAgdmlydHVhbCBkb3VibGUgbW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCkgeyByZXR1cm4gMDsgfQotCi0gICAgLy8gTG9nZ2luZyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIC8vIExvZyBh
biBlcnJvciBtZXNzYWdlIHdpdGhpbiB0aGUgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24uCi0gICAg
dmlydHVhbCB2b2lkIGxvZ0Vycm9yKGNvbnN0IGNoYXIgKmVycm9yTWVzc2FnZSkge30KLQotICAg
IC8vIExvZyBhIHdhcm5pbmcgbWVzc2FnZSB3aXRoaW4gdGhlIHBsYXRmb3JtIGltcGxlbWVudGF0
aW9uLgotICAgIHZpcnR1YWwgdm9pZCBsb2dXYXJuaW5nKGNvbnN0IGNoYXIgKndhcm5pbmdNZXNz
YWdlKSB7fQotCi0gICAgLy8gTG9nIGFuIGluZm8gbWVzc2FnZSB3aXRoaW4gdGhlIHBsYXRmb3Jt
IGltcGxlbWVudGF0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBsb2dJbmZvKGNvbnN0IGNoYXIgKmlu
Zm9NZXNzYWdlKSB7fQotCi0gICAgLy8gVHJhY2luZyAtLS0tLS0tLQotCi0gICAgLy8gR2V0IGEg
cG9pbnRlciB0byB0aGUgZW5hYmxlZCBzdGF0ZSBvZiB0aGUgZ2l2ZW4gdHJhY2UgY2F0ZWdvcnku
IFRoZQotICAgIC8vIGVtYmVkZGVyIGNhbiBkeW5hbWljYWxseSBjaGFuZ2UgdGhlIGVuYWJsZWQg
c3RhdGUgYXMgdHJhY2UgZXZlbnQKLSAgICAvLyByZWNvcmRpbmcgaXMgc3RhcnRlZCBhbmQgc3Rv
cHBlZCBieSB0aGUgYXBwbGljYXRpb24uIE9ubHkgbG9uZy1saXZlZAotICAgIC8vIGxpdGVyYWwg
c3RyaW5ncyBzaG91bGQgYmUgZ2l2ZW4gYXMgdGhlIGNhdGVnb3J5IG5hbWUuIFRoZSBpbXBsZW1l
bnRhdGlvbgotICAgIC8vIGV4cGVjdHMgdGhlIHJldHVybmVkIHBvaW50ZXIgdG8gYmUgaGVsZCBw
ZXJtYW5lbnRseSBpbiBhIGxvY2FsIHN0YXRpYy4gSWYKLSAgICAvLyB0aGUgdW5zaWduZWQgY2hh
ciBpcyBub24temVybywgdHJhY2luZyBpcyBlbmFibGVkLiBJZiB0cmFjaW5nIGlzIGVuYWJsZWQs
Ci0gICAgLy8gYWRkVHJhY2VFdmVudCBpcyBleHBlY3RlZCB0byBiZSBjYWxsZWQgYnkgdGhlIHRy
YWNlIGV2ZW50IG1hY3Jvcy4KLSAgICB2aXJ0dWFsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmdldFRy
YWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyhjb25zdCBjaGFyICpjYXRlZ29yeU5hbWUpIHsgcmV0dXJu
IDA7IH0KLQotICAgIHR5cGVkZWYgdWludDY0X3QgVHJhY2VFdmVudEhhbmRsZTsKLQotICAgIC8v
IEFkZCBhIHRyYWNlIGV2ZW50IHRvIHRoZSBwbGF0Zm9ybSB0cmFjaW5nIHN5c3RlbS4gRGVwZW5k
aW5nIG9uIHRoZSBhY3R1YWwKLSAgICAvLyBlbmFibGVkIHN0YXRlLCB0aGlzIGV2ZW50IG1heSBi
ZSByZWNvcmRlZCBvciBkcm9wcGVkLgotICAgIC8vIC0gcGhhc2Ugc3BlY2lmaWVzIHRoZSB0eXBl
IG9mIGV2ZW50OgotICAgIC8vICAgLSBCRUdJTiAoJ0InKTogTWFya3MgdGhlIGJlZ2lubmluZyBv
ZiBhIHNjb3BlZCBldmVudC4KLSAgICAvLyAgIC0gRU5EICgnRScpOiBNYXJrcyB0aGUgZW5kIG9m
IGEgc2NvcGVkIGV2ZW50LgotICAgIC8vICAgLSBDT01QTEVURSAoJ1gnKTogTWFya3MgdGhlIGJl
Z2lubmluZyBvZiBhIHNjb3BlZCBldmVudCwgYnV0IGRvZXNuJ3QKLSAgICAvLyAgICAgbmVlZCBh
IG1hdGNoaW5nIEVORCBldmVudC4gSW5zdGVhZCwgYXQgdGhlIGVuZCBvZiB0aGUgc2NvcGUsCi0g
ICAgLy8gICAgIHVwZGF0ZVRyYWNlRXZlbnREdXJhdGlvbigpIG11c3QgYmUgY2FsbGVkIHdpdGgg
dGhlIFRyYWNlRXZlbnRIYW5kbGUKLSAgICAvLyAgICAgcmV0dXJuZWQgZnJvbSBhZGRUcmFjZUV2
ZW50KCkuCi0gICAgLy8gICAtIElOU1RBTlQgKCdJJyk6IFN0YW5kYWxvbmUsIGluc3RhbnRhbmVv
dXMgZXZlbnQuCi0gICAgLy8gICAtIFNUQVJUICgnUycpOiBNYXJrcyB0aGUgYmVnaW5uaW5nIG9m
IGFuIGFzeW5jaHJvbm91cyBldmVudCAodGhlIGVuZAotICAgIC8vICAgICBldmVudCBjYW4gb2Nj
dXIgaW4gYSBkaWZmZXJlbnQgc2NvcGUgb3IgdGhyZWFkKS4gVGhlIGlkIHBhcmFtZXRlciBpcwot
ICAgIC8vICAgICB1c2VkIHRvIG1hdGNoIFNUQVJUL0ZJTklTSCBwYWlycy4KLSAgICAvLyAgIC0g
RklOSVNIICgnRicpOiBNYXJrcyB0aGUgZW5kIG9mIGFuIGFzeW5jaHJvbm91cyBldmVudC4KLSAg
ICAvLyAgIC0gQ09VTlRFUiAoJ0MnKTogVXNlZCB0byB0cmFjZSBpbnRlZ2VyIHF1YW50aXRpZXMg
dGhhdCBjaGFuZ2Ugb3ZlcgotICAgIC8vICAgICB0aW1lLiBUaGUgYXJndW1lbnQgdmFsdWVzIGFy
ZSBleHBlY3RlZCB0byBiZSBvZiB0eXBlIGludC4KLSAgICAvLyAgIC0gTUVUQURBVEEgKCdNJyk6
IFJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2UuCi0gICAgLy8gLSBjYXRlZ29yeUVuYWJsZWQgaXMg
dGhlIHBvaW50ZXIgcmV0dXJuZWQgYnkgZ2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnLgotICAg
IC8vIC0gbmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgZXZlbnQuIEFsc28gdXNlZCB0byBtYXRjaCBC
RUdJTi9FTkQgYW5kCi0gICAgLy8gICBTVEFSVC9GSU5JU0ggcGFpcnMuCi0gICAgLy8gLSBpZCBv
cHRpb25hbGx5IGFsbG93cyBldmVudHMgb2YgdGhlIHNhbWUgbmFtZSB0byBiZSBkaXN0aW5ndWlz
aGVkIGZyb20KLSAgICAvLyAgIGVhY2ggb3RoZXIuIEZvciBleGFtcGxlLCB0byB0cmFjZSB0aGUg
Y29uc3V0cnVjdGlvbiBhbmQgZGVzdHJ1Y3Rpb24gb2YKLSAgICAvLyAgIG9iamVjdHMsIHNwZWNp
ZnkgdGhlIHBvaW50ZXIgYXMgdGhlIGlkIHBhcmFtZXRlci4KLSAgICAvLyAtIHRpbWVzdGFtcCBz
aG91bGQgYmUgYSB0aW1lIHZhbHVlIHJldHVybmVkIGZyb20gbW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lLgotICAgIC8vIC0gbnVtQXJncyBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBlbGVtZW50
cyBpbiBhcmdOYW1lcywgYXJnVHlwZXMsIGFuZAotICAgIC8vICAgYXJnVmFsdWVzLgotICAgIC8v
IC0gYXJnTmFtZXMgaXMgdGhlIGFycmF5IG9mIGFyZ3VtZW50IG5hbWVzLiBVc2UgbG9uZy1saXZl
ZCBsaXRlcmFsIHN0cmluZ3MKLSAgICAvLyAgIG9yIHNwZWNpZnkgdGhlIENPUFkgZmxhZy4KLSAg
ICAvLyAtIGFyZ1R5cGVzIGlzIHRoZSBhcnJheSBvZiBhcmd1bWVudCB0eXBlczoKLSAgICAvLyAg
IC0gQk9PTCAoMSk6IGJvb2wKLSAgICAvLyAgIC0gVUlOVCAoMik6IHVuc2lnbmVkIGxvbmcgbG9u
ZwotICAgIC8vICAgLSBJTlQgKDMpOiBsb25nIGxvbmcKLSAgICAvLyAgIC0gRE9VQkxFICg0KTog
ZG91YmxlCi0gICAgLy8gICAtIFBPSU5URVIgKDUpOiB2b2lkKgotICAgIC8vICAgLSBTVFJJTkcg
KDYpOiBjaGFyKiAobG9uZy1saXZlZCBudWxsLXRlcm1pbmF0ZWQgY2hhciogc3RyaW5nKQotICAg
IC8vICAgLSBDT1BZX1NUUklORyAoNyk6IGNoYXIqICh0ZW1wb3JhcnkgbnVsbC10ZXJtaW5hdGVk
IGNoYXIqIHN0cmluZykKLSAgICAvLyAgIC0gQ09OVkVSVEFCTEUgKDgpOiBXZWJDb252ZXJ0YWJs
ZVRvVHJhY2VGb3JtYXQKLSAgICAvLyAtIGFyZ1ZhbHVlcyBpcyB0aGUgYXJyYXkgb2YgYXJndW1l
bnQgdmFsdWVzLiBFYWNoIHZhbHVlIGlzIHRoZSB1bnNpZ25lZAotICAgIC8vICAgbG9uZyBsb25n
IG1lbWJlciBvZiBhIHVuaW9uIG9mIGFsbCBzdXBwb3J0ZWQgdHlwZXMuCi0gICAgLy8gLSBmbGFn
cyBjYW4gYmUgMCBvciBvbmUgb3IgbW9yZSBvZiB0aGUgZm9sbG93aW5nLCBPUmVkIHRvZ2V0aGVy
OgotICAgIC8vICAgLSBDT1BZICgweDEpOiB0cmVhdCBhbGwgc3RyaW5ncyAobmFtZSwgYXJnTmFt
ZXMgYW5kIGFyZ1ZhbHVlcyBvZiB0eXBlCi0gICAgLy8gICAgIHN0cmluZykgYXMgdGVtcG9yYXJ5
IHNvIHRoYXQgdGhleSB3aWxsIGJlIGNvcGllZCBieSBhZGRUcmFjZUV2ZW50LgotICAgIC8vICAg
LSBIQVNfSUQgKDB4Mik6IHVzZSB0aGUgaWQgYXJndW1lbnQgdG8gdW5pcXVlbHkgaWRlbnRpZnkg
dGhlIGV2ZW50IGZvcgotICAgIC8vICAgICBtYXRjaGluZyB3aXRoIG90aGVyIGV2ZW50cyBvZiB0
aGUgc2FtZSBuYW1lLgotICAgIC8vICAgLSBNQU5HTEVfSUQgKDB4NCk6IHNwZWNpZnkgdGhpcyBm
bGFnIGlmIHRoZSBpZCBwYXJhbWV0ZXIgaXMgdGhlIHZhbHVlCi0gICAgLy8gICAgIG9mIGEgcG9p
bnRlci4KLSAgICB2aXJ0dWFsIFRyYWNlRXZlbnRIYW5kbGUgYWRkVHJhY2VFdmVudChjaGFyIHBo
YXNlLAorLy8gVXNlIGEgQy1saWtlIEFQSSB0byBub3QgdHJpZ2dlciB1bmRlZmluZWQgY2FsbGlu
ZyBiZWhhdmlvdXIuCisKKy8vIFN5c3RlbSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBXYWxsIGNsb2NrIHRpbWUgaW4g
c2Vjb25kcyBzaW5jZSB0aGUgZXBvY2guCisvLyBUT0RPKGptYWRpbGwpOiBpbnZlc3RpZ2F0ZSB1
c2luZyBhbiBBTkdMRSBpbnRlcm5hbCB0aW1lIGxpYnJhcnkKK2lubGluZSBkb3VibGUgQU5HTEVf
Y3VycmVudFRpbWUoUGxhdGZvcm1NZXRob2RzICpwbGF0Zm9ybSkKK3sKKyAgICByZXR1cm4gMC4w
OworfQorCisvLyBNb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgdGltZSBpbiBzZWNvbmRzIGZyb20g
YW4gYXJiaXRyYXJ5IGZpeGVkIHBvaW50IGluIHRoZSBwYXN0LgorLy8gVGhpcyBmdW5jdGlvbiBp
cyBleHBlY3RlZCB0byByZXR1cm4gYXQgbGVhc3QgbWlsbGlzZWNvbmQtcHJlY2lzaW9uIHZhbHVl
cy4gRm9yIHRoaXMgcmVhc29uLAorLy8gaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGUgZml4ZWQg
cG9pbnQgYmUgbm8gZnVydGhlciBpbiB0aGUgcGFzdCB0aGFuIHRoZSBlcG9jaC4KK2lubGluZSBk
b3VibGUgQU5HTEVfbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKFBsYXRmb3JtTWV0aG9kcyAq
cGxhdGZvcm0pCit7CisgICAgcmV0dXJuIDAuMDsKK30KKworLy8gTG9nZ2luZyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8g
TG9nIGFuIGVycm9yIG1lc3NhZ2Ugd2l0aGluIHRoZSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4K
K2lubGluZSB2b2lkIEFOR0xFX2xvZ0Vycm9yKFBsYXRmb3JtTWV0aG9kcyAqcGxhdGZvcm0sIGNv
bnN0IGNoYXIgKmVycm9yTWVzc2FnZSkKK3sKK30KKworLy8gTG9nIGEgd2FybmluZyBtZXNzYWdl
IHdpdGhpbiB0aGUgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24uCitpbmxpbmUgdm9pZCBBTkdMRV9s
b2dXYXJuaW5nKFBsYXRmb3JtTWV0aG9kcyAqcGxhdGZvcm0sIGNvbnN0IGNoYXIgKndhcm5pbmdN
ZXNzYWdlKQoreworfQorCisvLyBMb2cgYW4gaW5mbyBtZXNzYWdlIHdpdGhpbiB0aGUgcGxhdGZv
cm0gaW1wbGVtZW50YXRpb24uCitpbmxpbmUgdm9pZCBBTkdMRV9sb2dJbmZvKFBsYXRmb3JtTWV0
aG9kcyAqcGxhdGZvcm0sIGNvbnN0IGNoYXIgKmluZm9NZXNzYWdlKQoreworfQorCisvLyBUcmFj
aW5nIC0tLS0tLS0tCisKKy8vIEdldCBhIHBvaW50ZXIgdG8gdGhlIGVuYWJsZWQgc3RhdGUgb2Yg
dGhlIGdpdmVuIHRyYWNlIGNhdGVnb3J5LiBUaGUKKy8vIGVtYmVkZGVyIGNhbiBkeW5hbWljYWxs
eSBjaGFuZ2UgdGhlIGVuYWJsZWQgc3RhdGUgYXMgdHJhY2UgZXZlbnQKKy8vIHJlY29yZGluZyBp
cyBzdGFydGVkIGFuZCBzdG9wcGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4gT25seSBsb25nLWxpdmVk
CisvLyBsaXRlcmFsIHN0cmluZ3Mgc2hvdWxkIGJlIGdpdmVuIGFzIHRoZSBjYXRlZ29yeSBuYW1l
LiBUaGUgaW1wbGVtZW50YXRpb24KKy8vIGV4cGVjdHMgdGhlIHJldHVybmVkIHBvaW50ZXIgdG8g
YmUgaGVsZCBwZXJtYW5lbnRseSBpbiBhIGxvY2FsIHN0YXRpYy4gSWYKKy8vIHRoZSB1bnNpZ25l
ZCBjaGFyIGlzIG5vbi16ZXJvLCB0cmFjaW5nIGlzIGVuYWJsZWQuIElmIHRyYWNpbmcgaXMgZW5h
YmxlZCwKKy8vIGFkZFRyYWNlRXZlbnQgaXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGJ5IHRoZSB0
cmFjZSBldmVudCBtYWNyb3MuCitpbmxpbmUgY29uc3QgdW5zaWduZWQgY2hhciAqQU5HTEVfZ2V0
VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKFBsYXRmb3JtTWV0aG9kcyAqcGxhdGZvcm0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIgKmNhdGVnb3J5TmFtZSkKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwor
Ly8KKy8vIEFkZCBhIHRyYWNlIGV2ZW50IHRvIHRoZSBwbGF0Zm9ybSB0cmFjaW5nIHN5c3RlbS4g
RGVwZW5kaW5nIG9uIHRoZSBhY3R1YWwKKy8vIGVuYWJsZWQgc3RhdGUsIHRoaXMgZXZlbnQgbWF5
IGJlIHJlY29yZGVkIG9yIGRyb3BwZWQuCisvLyAtIHBoYXNlIHNwZWNpZmllcyB0aGUgdHlwZSBv
ZiBldmVudDoKKy8vICAgLSBCRUdJTiAoJ0InKTogTWFya3MgdGhlIGJlZ2lubmluZyBvZiBhIHNj
b3BlZCBldmVudC4KKy8vICAgLSBFTkQgKCdFJyk6IE1hcmtzIHRoZSBlbmQgb2YgYSBzY29wZWQg
ZXZlbnQuCisvLyAgIC0gQ09NUExFVEUgKCdYJyk6IE1hcmtzIHRoZSBiZWdpbm5pbmcgb2YgYSBz
Y29wZWQgZXZlbnQsIGJ1dCBkb2Vzbid0CisvLyAgICAgbmVlZCBhIG1hdGNoaW5nIEVORCBldmVu
dC4gSW5zdGVhZCwgYXQgdGhlIGVuZCBvZiB0aGUgc2NvcGUsCisvLyAgICAgdXBkYXRlVHJhY2VF
dmVudER1cmF0aW9uKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgVHJhY2VFdmVudEhhbmRsZQor
Ly8gICAgIHJldHVybmVkIGZyb20gYWRkVHJhY2VFdmVudCgpLgorLy8gICAtIElOU1RBTlQgKCdJ
Jyk6IFN0YW5kYWxvbmUsIGluc3RhbnRhbmVvdXMgZXZlbnQuCisvLyAgIC0gU1RBUlQgKCdTJyk6
IE1hcmtzIHRoZSBiZWdpbm5pbmcgb2YgYW4gYXN5bmNocm9ub3VzIGV2ZW50ICh0aGUgZW5kCisv
LyAgICAgZXZlbnQgY2FuIG9jY3VyIGluIGEgZGlmZmVyZW50IHNjb3BlIG9yIHRocmVhZCkuIFRo
ZSBpZCBwYXJhbWV0ZXIgaXMKKy8vICAgICB1c2VkIHRvIG1hdGNoIFNUQVJUL0ZJTklTSCBwYWly
cy4KKy8vICAgLSBGSU5JU0ggKCdGJyk6IE1hcmtzIHRoZSBlbmQgb2YgYW4gYXN5bmNocm9ub3Vz
IGV2ZW50LgorLy8gICAtIENPVU5URVIgKCdDJyk6IFVzZWQgdG8gdHJhY2UgaW50ZWdlciBxdWFu
dGl0aWVzIHRoYXQgY2hhbmdlIG92ZXIKKy8vICAgICB0aW1lLiBUaGUgYXJndW1lbnQgdmFsdWVz
IGFyZSBleHBlY3RlZCB0byBiZSBvZiB0eXBlIGludC4KKy8vICAgLSBNRVRBREFUQSAoJ00nKTog
UmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzZS4KKy8vIC0gY2F0ZWdvcnlFbmFibGVkIGlzIHRoZSBw
b2ludGVyIHJldHVybmVkIGJ5IGdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZy4KKy8vIC0gbmFt
ZSBpcyB0aGUgbmFtZSBvZiB0aGUgZXZlbnQuIEFsc28gdXNlZCB0byBtYXRjaCBCRUdJTi9FTkQg
YW5kCisvLyAgIFNUQVJUL0ZJTklTSCBwYWlycy4KKy8vIC0gaWQgb3B0aW9uYWxseSBhbGxvd3Mg
ZXZlbnRzIG9mIHRoZSBzYW1lIG5hbWUgdG8gYmUgZGlzdGluZ3Vpc2hlZCBmcm9tCisvLyAgIGVh
Y2ggb3RoZXIuIEZvciBleGFtcGxlLCB0byB0cmFjZSB0aGUgY29uc3V0cnVjdGlvbiBhbmQgZGVz
dHJ1Y3Rpb24gb2YKKy8vICAgb2JqZWN0cywgc3BlY2lmeSB0aGUgcG9pbnRlciBhcyB0aGUgaWQg
cGFyYW1ldGVyLgorLy8gLSB0aW1lc3RhbXAgc2hvdWxkIGJlIGEgdGltZSB2YWx1ZSByZXR1cm5l
ZCBmcm9tIG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZS4KKy8vIC0gbnVtQXJncyBzcGVjaWZp
ZXMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhcmdOYW1lcywgYXJnVHlwZXMsIGFuZAorLy8g
ICBhcmdWYWx1ZXMuCisvLyAtIGFyZ05hbWVzIGlzIHRoZSBhcnJheSBvZiBhcmd1bWVudCBuYW1l
cy4gVXNlIGxvbmctbGl2ZWQgbGl0ZXJhbCBzdHJpbmdzCisvLyAgIG9yIHNwZWNpZnkgdGhlIENP
UFkgZmxhZy4KKy8vIC0gYXJnVHlwZXMgaXMgdGhlIGFycmF5IG9mIGFyZ3VtZW50IHR5cGVzOgor
Ly8gICAtIEJPT0wgKDEpOiBib29sCisvLyAgIC0gVUlOVCAoMik6IHVuc2lnbmVkIGxvbmcgbG9u
ZworLy8gICAtIElOVCAoMyk6IGxvbmcgbG9uZworLy8gICAtIERPVUJMRSAoNCk6IGRvdWJsZQor
Ly8gICAtIFBPSU5URVIgKDUpOiB2b2lkKgorLy8gICAtIFNUUklORyAoNik6IGNoYXIqIChsb25n
LWxpdmVkIG51bGwtdGVybWluYXRlZCBjaGFyKiBzdHJpbmcpCisvLyAgIC0gQ09QWV9TVFJJTkcg
KDcpOiBjaGFyKiAodGVtcG9yYXJ5IG51bGwtdGVybWluYXRlZCBjaGFyKiBzdHJpbmcpCisvLyAg
IC0gQ09OVkVSVEFCTEUgKDgpOiBXZWJDb252ZXJ0YWJsZVRvVHJhY2VGb3JtYXQKKy8vIC0gYXJn
VmFsdWVzIGlzIHRoZSBhcnJheSBvZiBhcmd1bWVudCB2YWx1ZXMuIEVhY2ggdmFsdWUgaXMgdGhl
IHVuc2lnbmVkCisvLyAgIGxvbmcgbG9uZyBtZW1iZXIgb2YgYSB1bmlvbiBvZiBhbGwgc3VwcG9y
dGVkIHR5cGVzLgorLy8gLSBmbGFncyBjYW4gYmUgMCBvciBvbmUgb3IgbW9yZSBvZiB0aGUgZm9s
bG93aW5nLCBPUmVkIHRvZ2V0aGVyOgorLy8gICAtIENPUFkgKDB4MSk6IHRyZWF0IGFsbCBzdHJp
bmdzIChuYW1lLCBhcmdOYW1lcyBhbmQgYXJnVmFsdWVzIG9mIHR5cGUKKy8vICAgICBzdHJpbmcp
IGFzIHRlbXBvcmFyeSBzbyB0aGF0IHRoZXkgd2lsbCBiZSBjb3BpZWQgYnkgYWRkVHJhY2VFdmVu
dC4KKy8vICAgLSBIQVNfSUQgKDB4Mik6IHVzZSB0aGUgaWQgYXJndW1lbnQgdG8gdW5pcXVlbHkg
aWRlbnRpZnkgdGhlIGV2ZW50IGZvcgorLy8gICAgIG1hdGNoaW5nIHdpdGggb3RoZXIgZXZlbnRz
IG9mIHRoZSBzYW1lIG5hbWUuCisvLyAgIC0gTUFOR0xFX0lEICgweDQpOiBzcGVjaWZ5IHRoaXMg
ZmxhZyBpZiB0aGUgaWQgcGFyYW1ldGVyIGlzIHRoZSB2YWx1ZQorLy8gICAgIG9mIGEgcG9pbnRl
ci4KK2lubGluZSBhbmdsZTo6VHJhY2VFdmVudEhhbmRsZSBBTkdMRV9hZGRUcmFjZUV2ZW50KFBs
YXRmb3JtTWV0aG9kcyAqcGxhdGZvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY2F0ZWdvcnlF
bmFibGVkRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdGltZXN0YW1wLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51
bUFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyICoqYXJnTmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphcmdUeXBlcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIGxvbmcgbG9uZyAqYXJnVmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncykKK3sKKyAgICByZXR1cm4g
MDsKK30KKworLy8gU2V0IHRoZSBkdXJhdGlvbiBmaWVsZCBvZiBhIENPTVBMRVRFIHRyYWNlIGV2
ZW50LgoraW5saW5lIHZvaWQgQU5HTEVfdXBkYXRlVHJhY2VFdmVudER1cmF0aW9uKFBsYXRmb3Jt
TWV0aG9kcyAqcGxhdGZvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY2F0ZWdvcnlFbmFibGVkRmxhZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUg
dGltZXN0YW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBudW1BcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgKiphcmdOYW1lcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphcmdUeXBlcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgKmFyZ1Zh
bHVlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIGZsYWdzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgLy8g
U2V0IHRoZSBkdXJhdGlvbiBmaWVsZCBvZiBhIENPTVBMRVRFIHRyYWNlIGV2ZW50LgotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVUcmFjZUV2ZW50RHVyYXRpb24oY29uc3QgdW5zaWduZWQgY2hhciAq
Y2F0ZWdvcnlFbmFibGVkRmxhZywgY29uc3QgY2hhciAqbmFtZSwgVHJhY2VFdmVudEhhbmRsZSBl
dmVudEhhbmRsZSkgeyB9Ci0KLSAgICAvLyBDYWxsYmFja3MgZm9yIHJlcG9ydGluZyBoaXN0b2dy
YW0gZGF0YS4KLSAgICAvLyBDdXN0b21Db3VudHMgaGlzdG9ncmFtIGhhcyBleHBvbmVudGlhbCBi
dWNrZXQgc2l6ZXMsIHNvIHRoYXQgbWluPTEsIG1heD0xMDAwMDAwLCBidWNrZXRDb3VudD01MCB3
b3VsZCBkby4KLSAgICB2aXJ0dWFsIHZvaWQgaGlzdG9ncmFtQ3VzdG9tQ291bnRzKGNvbnN0IGNo
YXIgKm5hbWUsIGludCBzYW1wbGUsIGludCBtaW4sIGludCBtYXgsIGludCBidWNrZXRDb3VudCkg
eyB9Ci0gICAgLy8gRW51bWVyYXRpb24gaGlzdG9ncmFtIGJ1Y2tldHMgYXJlIGxpbmVhciwgYm91
bmRhcnlWYWx1ZSBzaG91bGQgYmUgbGFyZ2VyIHRoYW4gYW55IHBvc3NpYmxlIHNhbXBsZSB2YWx1
ZS4KLSAgICB2aXJ0dWFsIHZvaWQgaGlzdG9ncmFtRW51bWVyYXRpb24oY29uc3QgY2hhciAqbmFt
ZSwgaW50IHNhbXBsZSwgaW50IGJvdW5kYXJ5VmFsdWUpIHsgfQotICAgIC8vIFVubGlrZSBlbnVt
ZXJhdGlvbiBoaXN0b2dyYW1zLCBzcGFyc2UgaGlzdG9ncmFtcyBvbmx5IGFsbG9jYXRlIG1lbW9y
eSBmb3Igbm9uLWVtcHR5IGJ1Y2tldHMuCi0gICAgdmlydHVhbCB2b2lkIGhpc3RvZ3JhbVNwYXJz
ZShjb25zdCBjaGFyICpuYW1lLCBpbnQgc2FtcGxlKSB7IH0KLSAgICAvLyBCb29sZWFuIGhpc3Rv
Z3JhbXMgdHJhY2sgdHdvLXN0YXRlIHZhcmlhYmxlcy4KLSAgICB2aXJ0dWFsIHZvaWQgaGlzdG9n
cmFtQm9vbGVhbihjb25zdCBjaGFyICpuYW1lLCBib29sIHNhbXBsZSkgeyB9Ci0KLSAgcHJvdGVj
dGVkOgotICAgIHZpcnR1YWwgflBsYXRmb3JtKCkgeyB9Ci19OworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpUcmFjZUV2ZW50SGFuZGxlIGV2ZW50SGFu
ZGxlKQoreworfQogCisvLyBDYWxsYmFja3MgZm9yIHJlcG9ydGluZyBoaXN0b2dyYW0gZGF0YS4K
Ky8vIEN1c3RvbUNvdW50cyBoaXN0b2dyYW0gaGFzIGV4cG9uZW50aWFsIGJ1Y2tldCBzaXplcywg
c28gdGhhdCBtaW49MSwgbWF4PTEwMDAwMDAsIGJ1Y2tldENvdW50PTUwCisvLyB3b3VsZCBkby4K
K2lubGluZSB2b2lkIEFOR0xFX2hpc3RvZ3JhbUN1c3RvbUNvdW50cyhQbGF0Zm9ybU1ldGhvZHMg
KnBsYXRmb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHNhbXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWlu
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1Y2tldENvdW50KQorewor
fQorLy8gRW51bWVyYXRpb24gaGlzdG9ncmFtIGJ1Y2tldHMgYXJlIGxpbmVhciwgYm91bmRhcnlW
YWx1ZSBzaG91bGQgYmUgbGFyZ2VyIHRoYW4gYW55IHBvc3NpYmxlIHNhbXBsZQorLy8gdmFsdWUu
CitpbmxpbmUgdm9pZCBBTkdMRV9oaXN0b2dyYW1FbnVtZXJhdGlvbihQbGF0Zm9ybU1ldGhvZHMg
KnBsYXRmb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBz
YW1wbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYm91bmRh
cnlWYWx1ZSkKK3sKK30KKy8vIFVubGlrZSBlbnVtZXJhdGlvbiBoaXN0b2dyYW1zLCBzcGFyc2Ug
aGlzdG9ncmFtcyBvbmx5IGFsbG9jYXRlIG1lbW9yeSBmb3Igbm9uLWVtcHR5IGJ1Y2tldHMuCitp
bmxpbmUgdm9pZCBBTkdMRV9oaXN0b2dyYW1TcGFyc2UoUGxhdGZvcm1NZXRob2RzICpwbGF0Zm9y
bSwgY29uc3QgY2hhciAqbmFtZSwgaW50IHNhbXBsZSkKK3sKK30KKy8vIEJvb2xlYW4gaGlzdG9n
cmFtcyB0cmFjayB0d28tc3RhdGUgdmFyaWFibGVzLgoraW5saW5lIHZvaWQgQU5HTEVfaGlzdG9n
cmFtQm9vbGVhbihQbGF0Zm9ybU1ldGhvZHMgKnBsYXRmb3JtLCBjb25zdCBjaGFyICpuYW1lLCBi
b29sIHNhbXBsZSkKK3sKIH0KIAotZXh0ZXJuICJDIgorLy8gQWxsb3dzIHVzIHRvIHByb2dyYW1h
dGljYWxseSBvdmVycmlkZSBBTkdMRSdzIGRlZmF1bHQgd29ya2Fyb3VuZHMgZm9yIHRlc3Rpbmcg
cHVycG9zZXMuCitpbmxpbmUgdm9pZCBBTkdMRV9vdmVycmlkZVdvcmthcm91bmRzRDNEKFBsYXRm
b3JtTWV0aG9kcyAqcGxhdGZvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpXb3JrYXJvdW5kc0QzRCAqd29ya2Fyb3VuZHNEM0QpCiB7Cit9CiAKLXR5
cGVkZWYgdm9pZCAoQU5HTEVfQVBJRU5UUlkgKkFOR0xFUGxhdGZvcm1Jbml0aWFsaXplRnVuYyko
YW5nbGU6OlBsYXRmb3JtKik7Ci1BTkdMRV9QTEFURk9STV9FWFBPUlQgdm9pZCBBTkdMRV9BUElF
TlRSWSBBTkdMRVBsYXRmb3JtSW5pdGlhbGl6ZShhbmdsZTo6UGxhdGZvcm0qKTsKKy8vIFBsYXRm
b3JtIG1ldGhvZHMgYXJlIGVudW1lcmF0ZWQgaGVyZSBvbmNlLgorI2RlZmluZSBBTkdMRV9QTEFU
Rk9STV9PUChPUCkgICAgICAgXAorICAgIE9QKGN1cnJlbnRUaW1lKSAgICAgICAgICAgICAgICAg
XAorICAgIE9QKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSkgXAorICAgIE9QKGxvZ0Vycm9y
KSAgICAgICAgICAgICAgICAgICAgXAorICAgIE9QKGxvZ1dhcm5pbmcpICAgICAgICAgICAgICAg
ICAgXAorICAgIE9QKGxvZ0luZm8pICAgICAgICAgICAgICAgICAgICAgXAorICAgIE9QKGdldFRy
YWNlQ2F0ZWdvcnlFbmFibGVkRmxhZykgXAorICAgIE9QKGFkZFRyYWNlRXZlbnQpICAgICAgICAg
ICAgICAgXAorICAgIE9QKHVwZGF0ZVRyYWNlRXZlbnREdXJhdGlvbikgICAgXAorICAgIE9QKGhp
c3RvZ3JhbUN1c3RvbUNvdW50cykgICAgICAgXAorICAgIE9QKGhpc3RvZ3JhbUVudW1lcmF0aW9u
KSAgICAgICAgXAorICAgIE9QKGhpc3RvZ3JhbVNwYXJzZSkgICAgICAgICAgICAgXAorICAgIE9Q
KGhpc3RvZ3JhbUJvb2xlYW4pICAgICAgICAgICAgXAorICAgIE9QKG92ZXJyaWRlV29ya2Fyb3Vu
ZHNEM0QpCiAKLXR5cGVkZWYgdm9pZCAoQU5HTEVfQVBJRU5UUlkgKkFOR0xFUGxhdGZvcm1TaHV0
ZG93bkZ1bmMpKCk7Ci1BTkdMRV9QTEFURk9STV9FWFBPUlQgdm9pZCBBTkdMRV9BUElFTlRSWSBB
TkdMRVBsYXRmb3JtU2h1dGRvd24oKTsKKyNkZWZpbmUgQU5HTEVfUExBVEZPUk1fTUVUSE9EX0RF
RihOYW1lKSBkZWNsdHlwZSgmQU5HTEVfIyNOYW1lKSBOYW1lID0gQU5HTEVfIyNOYW1lOwogCi10
eXBlZGVmIGFuZ2xlOjpQbGF0Zm9ybSAqKEFOR0xFX0FQSUVOVFJZICpBTkdMRVBsYXRmb3JtQ3Vy
cmVudEZ1bmMpKCk7Ci1BTkdMRV9QTEFURk9STV9FWFBPUlQgYW5nbGU6OlBsYXRmb3JtICpBTkdM
RV9BUElFTlRSWSBBTkdMRVBsYXRmb3JtQ3VycmVudCgpOworc3RydWN0IFBsYXRmb3JtTWV0aG9k
cworeworICAgIEFOR0xFX1BMQVRGT1JNX09QKEFOR0xFX1BMQVRGT1JNX01FVEhPRF9ERUYpOwog
Ci19CisgICAgLy8gVXNlciBkYXRhIHBvaW50ZXIgZm9yIGFueSBpbXBsZW1lbnRhdGlvbiBzcGVj
aWZpYyBtZW1iZXJzLgorICAgIHZvaWQgKmNvbnRleHQgPSAwOworfTsKKworI3VuZGVmIEFOR0xF
X1BMQVRGT1JNX01FVEhPRF9ERUYKKworLy8gU3VidHJhY3Qgb25lIHRvIGFjY291bnQgZm9yIHRo
ZSBjb250ZXh0IHBvaW50ZXIuCitjb25zdGV4cHIgdW5zaWduZWQgaW50IGdfTnVtUGxhdGZvcm1N
ZXRob2RzID0gKHNpemVvZihQbGF0Zm9ybU1ldGhvZHMpIC8gc2l6ZW9mKHVpbnRwdHJfdCkpIC0g
MTsKKworI2RlZmluZSBBTkdMRV9QTEFURk9STV9NRVRIT0RfU1RSSU5HKE5hbWUpICNOYW1lCisj
ZGVmaW5lIEFOR0xFX1BMQVRGT1JNX01FVEhPRF9TVFJJTkcyKE5hbWUpIEFOR0xFX1BMQVRGT1JN
X01FVEhPRF9TVFJJTkcoTmFtZSksCisKK2NvbnN0ZXhwciBjb25zdCBjaGFyICpjb25zdCBnX1Bs
YXRmb3JtTWV0aG9kTmFtZXNbZ19OdW1QbGF0Zm9ybU1ldGhvZHNdID0geworICAgIEFOR0xFX1BM
QVRGT1JNX09QKEFOR0xFX1BMQVRGT1JNX01FVEhPRF9TVFJJTkcyKX07CisKKyN1bmRlZiBBTkdM
RV9QTEFURk9STV9NRVRIT0RfU1RSSU5HMgorI3VuZGVmIEFOR0xFX1BMQVRGT1JNX01FVEhPRF9T
VFJJTkcKKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCisKK2V4dGVybiAiQyIgeworCisvLyBHZXRz
IHRoZSBwbGF0Zm9ybSBtZXRob2RzIG9uIHRoZSBwYXNzZWQtaW4gRUdMIGRpc3BsYXkuIElmIHRo
ZSBtZXRob2QgbmFtZSBzaWduYXR1cmUgZG9lcyBub3QKKy8vIG1hdGNoIHRoZSBjb21waWxlZCBz
aWduYXR1cmUgZm9yIHRoaXMgQU5HTEUsIGZhbHNlIGlzIHJldHVybmVkLiBPbiBzdWNjZXNzIHRy
dWUgaXMgcmV0dXJuZWQuCisvLyBUaGUgYXBwbGljYXRpb24gc2hvdWxkIHNldCBhbnkgcGxhdGZv
cm0gbWV0aG9kcyBpdCBjYXJlcyBhYm91dCBvbiB0aGUgcmV0dXJuZWQgcG9pbnRlci4KKy8vIElm
IGRpc3BsYXkgaXMgbm90IHZhbGlkLCBiZWhhdmlvdXIgaXMgdW5kZWZpbmVkLgorLy8KKy8vIFVz
ZSBhIHZvaWQgKiBoZXJlIHRvIHNpbGVuY2UgYSBzYW5pdGl6ZXIgbGltaXRhdGlvbiB3aXRoIGRl
Y2x0eXBlLgorLy8gVE9ETyhqbWFkaWxsKTogVXNlIGFuZ2xlOjpQbGF0Zm9ybU1ldGhvZHMgKiog
aWYgVUJTQU4gaXMgZml4ZWQgdG8gaGFuZGxlIGRlY2x0eXBlLgorCitBTkdMRV9QTEFURk9STV9F
WFBPUlQgYm9vbCBBTkdMRV9BUElFTlRSWSBBTkdMRUdldERpc3BsYXlQbGF0Zm9ybShhbmdsZTo6
RUdMRGlzcGxheVR5cGUgZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0IG1ldGhv
ZE5hbWVzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWV0aG9kTmFtZUNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBsYXRmb3JtTWV0aG9kc091dCk7CisK
Ky8vIFNldHMgdGhlIHBsYXRmb3JtIG1ldGhvZHMgYmFjayB0byB0aGVpciBkZWZhdWx0cy4KKy8v
IElmIGRpc3BsYXkgaXMgbm90IHZhbGlkLCBiZWhhdmlvdXIgaXMgdW5kZWZpbmVkLgorQU5HTEVf
UExBVEZPUk1fRVhQT1JUIHZvaWQgQU5HTEVfQVBJRU5UUlkgQU5HTEVSZXNldERpc3BsYXlQbGF0
Zm9ybShhbmdsZTo6RUdMRGlzcGxheVR5cGUgZGlzcGxheSk7CisKK30gIC8vIGV4dGVybiAiQyIK
KworbmFtZXNwYWNlIGFuZ2xlCit7CisvLyBVc2UgdHlwZWRlZnMgaGVyZSBpbnN0ZWFkIG9mIGRl
Y2x0eXBlIHRvIHdvcmsgYXJvdW5kIHNhbml0aXplciBsaW1pdGF0aW9ucy4KKy8vIFRPRE8oam1h
ZGlsbCk6IFVzZSBkZWNsdHlwZSBoZXJlIGlmIFVCU0FOIGlzIGZpeGVkLgordHlwZWRlZiBib29s
KEFOR0xFX0FQSUVOVFJZICpHZXREaXNwbGF5UGxhdGZvcm1GdW5jKShhbmdsZTo6RUdMRGlzcGxh
eVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKmNvbnN0ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICopOwordHlwZWRlZiB2
b2lkKEFOR0xFX0FQSUVOVFJZICpSZXNldERpc3BsYXlQbGF0Zm9ybUZ1bmMpKGFuZ2xlOjpFR0xE
aXNwbGF5VHlwZSk7Cit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKKworLy8gVGhpcyBmdW5jdGlvbiBp
cyBub3QgZXhwb3J0ZWQKK2FuZ2xlOjpQbGF0Zm9ybU1ldGhvZHMgKkFOR0xFUGxhdGZvcm1DdXJy
ZW50KCk7CiAKICNlbmRpZiAvLyBBTkdMRV9QTEFURk9STV9ICmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL3BsYXRmb3JtL1dvcmthcm91bmRzRDNELmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL3BsYXRmb3JtL1dvcmthcm91bmRzRDNELmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTYyOWYzMjJhZWQ4NzE2MjgzYjM1OWI5ZDhjMWM0ZDg3OTQ2YWExYgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvcGxhdGZvcm0vV29y
a2Fyb3VuZHNEM0QuaApAQCAtMCwwICsxLDExMyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAx
NSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFdvcmth
cm91bmRzRDNELmg6IFdvcmthcm91bmRzIGZvciBEM0QgZHJpdmVyIGJ1Z3MgYW5kIG90aGVyIGlz
c3Vlcy4KKworI2lmbmRlZiBBTkdMRV9QTEFURk9STV9XT1JLQVJPVU5EU0QzRF9IXworI2RlZmlu
ZSBBTkdMRV9QTEFURk9STV9XT1JLQVJPVU5EU0QzRF9IXworCisvLyBUT0RPKGptYWRpbGwsem1v
LGdlb2ZmbGFuZyk6IG1ha2UgYSB3b3JrYXJvdW5kcyBsaWJyYXJ5IHRoYXQgY2FuIG9wZXJhdGUK
Ky8vIGluZGVwZW5kZW50IG9mIEFOR0xFJ3MgcmVuZGVyZXIuIFdvcmthcm91bmRzIHNob3VsZCBh
bHNvIGJlIGFjY2Vzc2libGUKKy8vIG91dHNpZGUgb2YgdGhlIFJlbmRlcmVyLgorCituYW1lc3Bh
Y2UgYW5nbGUKK3sKK3N0cnVjdCBDb21waWxlcldvcmthcm91bmRzRDNECit7CisgICAgYm9vbCBz
a2lwT3B0aW1pemF0aW9uICAgPSBmYWxzZTsKKyAgICBib29sIHVzZU1heE9wdGltaXphdGlvbiA9
IGZhbHNlOworCisgICAgLy8gSUVFRSBzdHJpY3RuZXNzIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9y
IE5BTnMgdG8gd29yay4KKyAgICBib29sIGVuYWJsZUlFRUVTdHJpY3RuZXNzID0gZmFsc2U7Cit9
OworCitzdHJ1Y3QgV29ya2Fyb3VuZHNEM0QKK3sKKyAgICAvLyBPbiBzb21lIHN5c3RlbXMsIGhh
dmluZyBleHRyYSByZW5kZXJ0YXJnZXRzIHRoYW4gbmVjZXNzYXJ5IHNsb3dzIGRvd24gdGhlIHNo
YWRlci4KKyAgICAvLyBXZSBjYW4gZml4IHRoaXMgYnkgb3B0aW1pemluZyB0aG9zZSBvdXQgb2Yg
dGhlIHNoYWRlci4gQXQgdGhlIHNhbWUgdGltZSwgd2UgY2FuCisgICAgLy8gd29yayBhcm91bmQg
YSBidWcgb24gc29tZSBuVmlkaWEgZHJpdmVycyB0aGF0IHRoZXkgaWdub3JlICJudWxsIiByZW5k
ZXIgdGFyZ2V0cworICAgIC8vIGluIEQzRDExLCBieSBjb21wYWN0aW5nIHRoZSBhY3RpdmUgY29s
b3IgYXR0YWNobWVudHMgbGlzdCB0byBvbWl0IG51bGwgZW50cmllcy4KKyAgICBib29sIG1ydFBl
cmZXb3JrYXJvdW5kID0gZmFsc2U7CisKKyAgICBib29sIHNldERhdGFGYXN0ZXJUaGFuSW1hZ2VV
cGxvYWQgPSBmYWxzZTsKKworICAgIC8vIFNvbWUgcmVuZGVyZXJzIGNhbid0IGRpc2FibGUgbWlw
bWFwcyBvbiBhIG1pcG1hcHBlZCB0ZXh0dXJlIChpLmUuIHNvbGVseSBzYW1wbGUgZnJvbSBsZXZl
bAorICAgIC8vIHplcm8sIGFuZCBpZ25vcmUgdGhlIG90aGVyIGxldmVscykuIEQzRDExIEZlYXR1
cmUgTGV2ZWwgMTArIGRvZXMgdGhpcyBieSBzZXR0aW5nIE1heExPRCB0bworICAgIC8vIDAuMGYg
aW4gdGhlIFNhbXBsZXIgc3RhdGUuIEQzRDkgc2V0cyBEM0RTQU1QX01JUEZJTFRFUiB0byBEM0RU
RVhGX05PTkUuIFRoZXJlIGlzIG5vCisgICAgLy8gZXF1aXZhbGVudCB0byB0aGlzIGluIEQzRDEx
IEZlYXR1cmUgTGV2ZWwgOV8zLiBUaGlzIGNhdXNlcyBwcm9ibGVtcyB3aGVuIChmb3IgZXhhbXBs
ZSkgYW4KKyAgICAvLyBhcHBsaWNhdGlvbiBjcmVhdGVzIGEgbWlwbWFwcGVkIHRleHR1cmUyRCwg
YnV0IHNldHMgR0xfVEVYVFVSRV9NSU5fRklMVEVSIHRvIEdMX05FQVJFU1QKKyAgICAvLyAoaS5l
IGRpc2FibGVzIG1pcG1hcHMpLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCBEM0QxMSBGTDlfMyBoYXMg
dG8gY3JlYXRlIHR3byBjb3BpZXMgb2YgdGhlCisgICAgLy8gdGV4dHVyZS4gVGhlIHRleHR1cmVz
JyBsZXZlbCB6ZXJvcyBhcmUgaWRlbnRpY2FsLCBidXQgb25seSBvbmUgdGV4dHVyZSBoYXMgbWlw
cy4KKyAgICBib29sIHplcm9NYXhMb2RXb3JrYXJvdW5kID0gZmFsc2U7CisKKyAgICAvLyBTb21l
IHJlbmRlcmVycyBkbyBub3Qgc3VwcG9ydCBHZW9tZXRyeSBTaGFkZXJzIHNvIHRoZSBHZW9tZXRy
eSBTaGFkZXItYmFzZWQgUG9pbnRTcHJpdGUKKyAgICAvLyBlbXVsYXRpb24gd2lsbCBub3Qgd29y
ay4gVG8gd29yayBhcm91bmQgdGhpcywgRDNEMTEgRkw5XzMgaGFzIHRvIHVzZSBhIGRpZmZlcmVu
dCBwb2ludHNwcml0ZQorICAgIC8vIGVtdWxhdGlvbiB0aGF0IGlzIGltcGxlbWVudGVkIHVzaW5n
IGluc3RhbmNlZCBxdWFkcy4KKyAgICBib29sIHVzZUluc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0
aW9uID0gZmFsc2U7CisKKyAgICAvLyBBIGJ1ZyBmaXhlZCBpbiBOVklESUEgZHJpdmVyIHZlcnNp
b24gMzQ3Ljg4IDwgeCA8PSAzNjguODEgdHJpZ2dlcnMgYSBURFIgd2hlbiB1c2luZworICAgIC8v
IENvcHlTdWJyZXNvdXJjZVJlZ2lvbiBmcm9tIGEgc3RhZ2luZyB0ZXh0dXJlIHRvIGEgZGVwdGgv
c3RlbmNpbCBpbiBEM0QxMS4gVGhlIHdvcmthcm91bmQKKyAgICAvLyBpcyB0byB1c2UgVXBkYXRl
U3VicmVzb3VyY2UgdG8gdHJpZ2dlciBhbiBleHRyYSBjb3B5LiBXZSBkaXNhYmxlIHRoaXMgd29y
a2Fyb3VuZCBvbiBuZXdlcgorICAgIC8vIE5WSURJQSBkcml2ZXIgdmVyc2lvbnMgYmVjYXVzZSBv
ZiBhIHNlY29uZCBkcml2ZXIgYnVnIHByZXNlbnQgd2l0aCB0aGUgd29ya2Fyb3VuZCBlbmFibGVk
LgorICAgIC8vIChTZWU6IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTQ1MikKKyAgICBib29sIGRlcHRo
U3RlbmNpbEJsaXRFeHRyYUNvcHkgPSBmYWxzZTsKKworICAgIC8vIFRoZSBITFNMIG9wdGltaXpl
ciBoYXMgYSBidWcgd2l0aCBvcHRpbWl6aW5nICJwb3ciIGluIGNlcnRhaW4gaW50ZWdlci12YWx1
ZWQgZXhwcmVzc2lvbnMuCisgICAgLy8gV2UgY2FuIHdvcmsgYXJvdW5kIHRoaXMgYnkgZXhwYW5k
aW5nIHRoZSBwb3cgaW50byBhIHNlcmllcyBvZiBtdWx0aXBsaWVzIGlmIHdlJ3JlIHJ1bm5pbmcK
KyAgICAvLyB1bmRlciB0aGUgYWZmZWN0ZWQgY29tcGlsZXIuCisgICAgYm9vbCBleHBhbmRJbnRl
Z2VyUG93RXhwcmVzc2lvbnMgPSBmYWxzZTsKKworICAgIC8vIE5WSURJQSBkcml2ZXJzIHNvbWV0
aW1lcyB3cml0ZSBvdXQtb2Ytb3JkZXIgcmVzdWx0cyB0byBTdHJlYW1PdXQgYnVmZmVycyB3aGVu
IHRyYW5zZm9ybQorICAgIC8vIGZlZWRiYWNrIGlzIHVzZWQgdG8gcmVwZWF0ZWRseSB3cml0ZSB0
byB0aGUgc2FtZSBidWZmZXIgcG9zaXRpb25zLgorICAgIGJvb2wgZmx1c2hBZnRlckVuZGluZ1Ry
YW5zZm9ybUZlZWRiYWNrID0gZmFsc2U7CisKKyAgICAvLyBTb21lIGRyaXZlcnMgKE5WSURJQSkg
ZG8gbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBiYXNlIGxldmVsIG9mIHRoZSB0ZXh0dXJlIGlu
IHRoZSByZXN1bHRzCisgICAgLy8gb2YgdGhlIEhMU0wgR2V0RGltZW5zaW9ucyBidWlsdGluLgor
ICAgIGJvb2wgZ2V0RGltZW5zaW9uc0lnbm9yZXNCYXNlTGV2ZWwgPSBmYWxzZTsKKworICAgIC8v
IE9uIHNvbWUgSW50ZWwgZHJpdmVycywgSExTTCdzIGZ1bmN0aW9uIHRleHR1cmUuTG9hZCByZXR1
cm5zIDAgd2hlbiB0aGUgcGFyYW1ldGVyIExvY2F0aW9uCisgICAgLy8gaXMgbmVnYXRpdmUsIGV2
ZW4gaWYgdGhlIHN1bSBvZiBPZmZzZXQgYW5kIExvY2F0aW9uIGlzIGluIHJhbmdlLiBUaGlzIG1h
eSBjYXVzZSBlcnJvcnMgd2hlbgorICAgIC8vIHRyYW5zbGF0aW5nIEdMU0wncyBmdW5jdGlvbiB0
ZXhlbEZldGNoT2Zmc2V0IGludG8gdGV4dHVyZS5Mb2FkLCBhcyBpdCBpcyB2YWxpZCBmb3IKKyAg
ICAvLyB0ZXhlbEZldGNoT2Zmc2V0IHRvIHVzZSBuZWdhdGl2ZSB0ZXh0dXJlIGNvb3JkaW5hdGVz
IGFzIGl0cyBwYXJhbWV0ZXIgUCB3aGVuIHRoZSBzdW0gb2YgUAorICAgIC8vIGFuZCBPZmZzZXQg
aXMgaW4gcmFuZ2UuIFRvIHdvcmsgYXJvdW5kIHRoaXMsIHdlIHRyYW5zbGF0ZSB0ZXhlbEZldGNo
T2Zmc2V0IGludG8gdGV4ZWxGZXRjaAorICAgIC8vIGJ5IGFkZGluZyBPZmZzZXQgZGlyZWN0bHkg
dG8gTG9jYXRpb24gYmVmb3JlIHJlYWRpbmcgdGhlIHRleHR1cmUuCisgICAgYm9vbCBwcmVBZGRU
ZXhlbEZldGNoT2Zmc2V0cyA9IGZhbHNlOworCisgICAgLy8gT24gc29tZSBBTUQgZHJpdmVycywg
MXgxIGFuZCAyeDIgbWlwcyBvZiBkZXB0aC9zdGVuY2lsIHRleHR1cmVzIGFyZW4ndCBzYW1wbGVk
IGNvcnJlY3RseS4KKyAgICAvLyBXZSBjYW4gd29yayBhcm91bmQgdGhpcyBidWcgYnkgZG9pbmcg
YW4gaW50ZXJuYWwgYmxpdCB0byBhIHRlbXBvcmFyeSBzaW5nbGUtY2hhbm5lbCB0ZXh0dXJlCisg
ICAgLy8gYmVmb3JlIHdlIHNhbXBsZS4KKyAgICBib29sIGVtdWxhdGVUaW55U3RlbmNpbFRleHR1
cmVzID0gZmFsc2U7CisKKyAgICAvLyBJbiBJbnRlbCBkcml2ZXIsIHRoZSBkYXRhIHdpdGggZm9y
bWF0IERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSB3aWxsIGJlIHBhcnNlZCBpbmNvcnJlY3RseS4K
KyAgICAvLyBUaGlzIHdvcmthcm91ZCB3aWxsIGRpc2FibGUgQjVHNlI1IHN1cHBvcnQgd2hlbiBp
dCdzIEludGVsIGRyaXZlci4gQnkgZGVmYXVsdCwgaXQgd2lsbCB1c2UKKyAgICAvLyBSOEc4QjhB
OCBmb3JtYXQuIFRoaXMgYnVnIGlzIGZpeGVkIGluIHZlcnNpb24gNDUzOSBvbiBJbnRlbCBkcml2
ZXJzLgorICAgIGJvb2wgZGlzYWJsZUI1RzZSNVN1cHBvcnQgPSBmYWxzZTsKKworICAgIC8vIE9u
IHNvbWUgSW50ZWwgZHJpdmVycywgZXZhbHVhdGluZyB1bmFyeSBtaW51cyBvcGVyYXRvciBvbiBp
bnRlZ2VyIG1heSBnZXQgd3JvbmcgYW5zd2VyIGluCisgICAgLy8gdmVydGV4IHNoYWRlcnMuIFRv
IHdvcmsgYXJvdW5kIHRoaXMgYnVnLCB3ZSB0cmFuc2xhdGUgLShpbnQpIGludG8gfihpbnQpKzEu
CisgICAgYm9vbCByZXdyaXRlVW5hcnlNaW51c09wZXJhdG9yID0gZmFsc2U7CisKKyAgICAvLyBP
biBzb21lIEludGVsIGRyaXZlcnMsIHVzaW5nIGlzbmFuKCkgb24gaGlnaHAgZmxvYXQgd2lsbCBn
ZXQgd3JvbmcgYW5zd2VyLiBUbyB3b3JrIGFyb3VuZAorICAgIC8vIHRoaXMgYnVnLCB3ZSB1c2Ug
YW4gZXhwcmVzc2lvbiB0byBlbXVsYXRlIGZ1bmN0aW9uIGlzbmFuKCkuCisgICAgLy8gVHJhY2tp
bmcgYnVnOiBodHRwczovL2NyYnVnLmNvbS82NTA1NDcKKyAgICAvLyBUaGlzIGRyaXZlciBidWcg
aXMgZml4ZWQgaW4gMjEuMjAuMTYuNDU0Mi4KKyAgICBib29sIGVtdWxhdGVJc25hbkZsb2F0ID0g
ZmFsc2U7CisKKyAgICAvLyBPbiBzb21lIEludGVsIGRyaXZlcnMsIHVzaW5nIGNsZWFyKCkgbWF5
IG5vdCB0YWtlIGVmZmVjdC4gT25lIG9mIHN1Y2ggc2l0dWF0aW9uIGlzIHRvIGNsZWFyCisgICAg
Ly8gYSB0YXJnZXQgd2l0aCB3aWR0aCBvciBoZWlnaHQgPCAxNi4gVG8gd29yayBhcm91bmQgdGhp
cyBidWcsIHdlIGNhbGwgY2xlYXIoKSB0d2ljZSBvbiB0aGVzZQorICAgIC8vIHBsYXRmb3Jtcy4g
VHJhY2tpbmcgYnVnOiBodHRwczovL2NyYnVnLmNvbS82NTU1MzQKKyAgICBib29sIGNhbGxDbGVh
clR3aWNlT25TbWFsbFRhcmdldCA9IGZhbHNlOworCisgICAgLy8gT24gc29tZSBJbnRlbCBkcml2
ZXJzLCBjb3B5aW5nIGZyb20gc3RhZ2luZyBzdG9yYWdlIHRvIGNvbnN0YW50IGJ1ZmZlciBzdG9y
YWdlIGRvZXMgbm90CisgICAgLy8gc2VlbSB0byB3b3JrLiBXb3JrIGFyb3VuZCB0aGlzIGJ5IGtl
ZXBpbmcgc3lzdGVtIG1lbW9yeSBzdG9yYWdlIGFzIGEgY2Fub25pY2FsIHJlZmVyZW5jZQorICAg
IC8vIGZvciBidWZmZXIgZGF0YS4KKyAgICAvLyBEM0QxMS1vbmx5IHdvcmthcm91bmQuIFNlZSBo
dHRwOi8vY3JidWcuY29tLzU5MzAyNC4KKyAgICBib29sIHVzZVN5c3RlbU1lbW9yeUZvckNvbnN0
YW50QnVmZmVycyA9IGZhbHNlOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCisKKyNlbmRp
ZiAgLy8gQU5HTEVfUExBVEZPUk1fV09SS0FST1VORFNEM0RfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmdsZS5neXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvYW5nbGUuZ3lwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzhmMGYzNTI2
ZjBjMDVlY2MyNmI0YzA3MzUzNTY1Yzk2ZDc5NjY5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmdsZS5n
eXAKKysrIC9kZXYvbnVsbApAQCAtMSwzMTAgKzAsMCBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMTIg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotCi17Ci0gICAgJ3ZhcmlhYmxl
cyc6Ci0gICAgewotICAgICAgICAnYW5nbGVfY29kZSc6IDEsCi0gICAgICAgICdhbmdsZV9nZW5f
cGF0aCc6ICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS9hbmdsZScsCi0gICAgICAgICdhbmds
ZV9pZF9zY3JpcHRfYmFzZSc6ICdjb21taXRfaWQucHknLAotICAgICAgICAnYW5nbGVfaWRfc2Ny
aXB0JzogJzwoYW5nbGVfZ2VuX3BhdGgpLzwoYW5nbGVfaWRfc2NyaXB0X2Jhc2UpJywKLSAgICAg
ICAgJ2FuZ2xlX2lkX2hlYWRlcl9iYXNlJzogJ2NvbW1pdC5oJywKLSAgICAgICAgJ2FuZ2xlX2lk
X2hlYWRlcic6ICc8KGFuZ2xlX2dlbl9wYXRoKS9pZC88KGFuZ2xlX2lkX2hlYWRlcl9iYXNlKScs
Ci0gICAgICAgICdhbmdsZV91c2VfY29tbWl0X2lkJSc6ICc8IShweXRob24gPChhbmdsZV9pZF9z
Y3JpcHRfYmFzZSkgY2hlY2sgLi4pJywKLSAgICAgICAgJ2FuZ2xlX2VuYWJsZV9kM2Q5JSc6IDAs
Ci0gICAgICAgICdhbmdsZV9lbmFibGVfZDNkMTElJzogMCwKLSAgICAgICAgJ2FuZ2xlX2VuYWJs
ZV9nbCUnOiAwLAotICAgICAgICAnYW5nbGVfZW5hYmxlX3Z1bGthbiUnOiAwLAotICAgICAgICAn
YW5nbGVfZW5hYmxlX2Vzc2wlJzogMSwgIyBFbmFibGUgdGhpcyBmb3IgYWxsIGNvbmZpZ3MgYnkg
ZGVmYXVsdAotICAgICAgICAnYW5nbGVfZW5hYmxlX2dsc2wlJzogMSwgIyBFbmFibGUgdGhpcyBm
b3IgYWxsIGNvbmZpZ3MgYnkgZGVmYXVsdAotICAgICAgICAnYW5nbGVfZW5hYmxlX2hsc2wlJzog
MCwKLSAgICAgICAgJ2FuZ2xlX2xpbmtfZ2x4JSc6IDAsCi0gICAgICAgICdhbmdsZV9nbF9saWJy
YXJ5X3R5cGUlJzogJ3NoYXJlZF9saWJyYXJ5JywKLSAgICAgICAgJ2RjaGVja19hbHdheXNfb24l
JzogMCwKLSAgICAgICAgJ2NvbmRpdGlvbnMnOgotICAgICAgICBbCi0gICAgICAgICAgICBbJ09T
PT0id2luIicsCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2FuZ2xlX2VuYWJsZV9n
bCUnOiAxLAotICAgICAgICAgICAgICAgICdhbmdsZV9lbmFibGVfZDNkOSUnOiAxLAotICAgICAg
ICAgICAgICAgICdhbmdsZV9lbmFibGVfZDNkMTElJzogMSwKLSAgICAgICAgICAgICAgICAnYW5n
bGVfZW5hYmxlX2hsc2wlJzogMSwKLSAgICAgICAgICAgICAgICAnYW5nbGVfZW5hYmxlX3Z1bGth
biUnOiAxLAotICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICBbJ09TPT0ibGludXgiIGFuZCB1
c2VfeDExPT0xIGFuZCBjaHJvbWVvcz09MCcsCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgJ2FuZ2xlX2VuYWJsZV9nbCUnOiAxLAotICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICBb
J09TPT0ibWFjIicsCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2FuZ2xlX2VuYWJs
ZV9nbCUnOiAxLAotICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICBbJ3VzZV9vem9uZT09MScs
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2FuZ2xlX2VuYWJsZV9nbCUnOiAxLAot
ICAgICAgICAgICAgfV0sCi0gICAgICAgIF0sCi0gICAgICAgICdhbmdsZV9lbmFibGVfbnVsbCUn
OiAxLCAjIEF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zCi0gICAgfSwKLSAgICAnaW5jbHVkZXMn
OgotICAgIFsKLSAgICAgICAgJ2NvbXBpbGVyLmd5cGknLAotICAgICAgICAnbGliR0xFU3YyLmd5
cGknLAotICAgICAgICAnbGliRUdMLmd5cGknCi0gICAgXSwKLQotICAgICd0YXJnZXRzJzoKLSAg
ICBbCi0gICAgICAgIHsKLSAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9jb21tb24n
LAotICAgICAgICAgICAgJ3R5cGUnOiAnc3RhdGljX2xpYnJhcnknLAotICAgICAgICAgICAgJ2lu
Y2x1ZGVzJzogWyAnLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScsIF0sCi0gICAgICAgICAg
ICAnc291cmNlcyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgJzxAKGxpYmFuZ2xl
X2NvbW1vbl9zb3VyY2VzKScsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2luY2x1ZGVf
ZGlycyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgJy4nLAotICAgICAgICAgICAg
ICAgICcuLi9pbmNsdWRlJywKLSAgICAgICAgICAgICAgICAnY29tbW9uL3RoaXJkX3BhcnR5L251
bWVyaWNzJywKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzoKLSAg
ICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAnY29tbWl0X2lkJywKLSAgICAgICAgICAgIF0s
Ci0gICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6Ci0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6Ci0gICAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9pbmNsdWRlJywKLSAgICAgICAgICAgICAg
ICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjJywKLSAgICAgICAgICAgICAgICAgICAgJzwoYW5nbGVf
cGF0aCkvc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcycsCi0gICAgICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6Ci0gICAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICAgICBbJ2RjaGVja19hbHdheXNfb249PTEnLAotICAgICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnY29uZmlndXJhdGlvbnMnOgotICAgICAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSZWxlYXNl
X0Jhc2UnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVfRU5BQkxFX1JF
TEVBU0VfQVNTRVJUUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgICAgICBbJ09TPT0id2luIics
Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdjb25maWd1
cmF0aW9ucyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0RlYnVnX0Jhc2UnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
QU5HTEVfRU5BQkxFX0RFQlVHX0FOTk9UQVRJT05TJwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICBd
LAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdjb25kaXRpb25zJzoKLSAgICAgICAgICAg
IFsKLSAgICAgICAgICAgICAgICBbJ2RjaGVja19hbHdheXNfb249PTEnLAotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2NvbmZpZ3VyYXRpb25zJzoKLSAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ1JlbGVhc2VfQmFzZSc6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmlu
ZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0FOR0xFX0VOQUJMRV9SRUxFQVNFX0FTU0VSVFMnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgIFsnT1M9
PSJ3aW4iJywKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdjb25maWd1
cmF0aW9ucyc6Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICdEZWJ1Z19CYXNlJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVfRU5BQkxFX0RFQlVHX0FOTk9U
QVRJT05TJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH1dLAot
ICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLQotICAgICAgICB7Ci0gICAgICAgICAgICAndGFy
Z2V0X25hbWUnOiAnYW5nbGVfaW1hZ2VfdXRpbCcsCi0gICAgICAgICAgICAndHlwZSc6ICdzdGF0
aWNfbGlicmFyeScsCi0gICAgICAgICAgICAnaW5jbHVkZXMnOiBbICcuLi9idWlsZC9jb21tb25f
ZGVmaW5lcy5neXBpJywgXSwKLSAgICAgICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAgICAgIFsK
LSAgICAgICAgICAgICAgICAnPEAobGliYW5nbGVfaW1hZ2VfdXRpbF9zb3VyY2VzKScsCi0gICAg
ICAgICAgICBdLAotICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6Ci0gICAgICAgICAgICBbCi0g
ICAgICAgICAgICAgICAgJy4nLAotICAgICAgICAgICAgICAgICcuLi9pbmNsdWRlJywKLSAgICAg
ICAgICAgIF0sCi0gICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAgIFsKLSAg
ICAgICAgICAgICAgICAnYW5nbGVfY29tbW9uJywKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAg
ICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgJ2luY2x1ZGVfZGlycyc6Ci0gICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAg
ICAgICAnPChhbmdsZV9wYXRoKS9pbmNsdWRlJywKLSAgICAgICAgICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjJywKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgfSwKLSAgICAg
ICAgfSwKLQotICAgICAgICB7Ci0gICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnY29weV9zY3Jp
cHRzJywKLSAgICAgICAgICAgICd0eXBlJzogJ25vbmUnLAotICAgICAgICAgICAgJ2luY2x1ZGVz
JzogWyAnLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScsIF0sCi0gICAgICAgICAgICAnaGFy
ZF9kZXBlbmRlbmN5JzogMSwKLSAgICAgICAgICAgICdjb3BpZXMnOgotICAgICAgICAgICAgWwot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ2Rlc3RpbmF0aW9uJzogJzwo
YW5nbGVfZ2VuX3BhdGgpJywKLSAgICAgICAgICAgICAgICAgICAgJ2ZpbGVzJzogWyAnY29weV9j
b21waWxlcl9kbGwuYmF0JywgJzwoYW5nbGVfaWRfc2NyaXB0X2Jhc2UpJyBdLAotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgotICAg
ICAgICAgICAgWwotICAgICAgICAgICAgICAgIFsnYW5nbGVfYnVpbGRfd2lucnQ9PTEnLAotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnIDogJ3NoYXJlZF9saWJy
YXJ5JywKLSAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0g
ICAgXSwKLSAgICAnY29uZGl0aW9ucyc6Ci0gICAgWwotICAgICAgICBbJ2FuZ2xlX3VzZV9jb21t
aXRfaWQhPTAnLAotICAgICAgICB7Ci0gICAgICAgICAgICAndGFyZ2V0cyc6Ci0gICAgICAgICAg
ICBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUn
OiAnY29tbWl0X2lkJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnbm9uZScsCi0gICAg
ICAgICAgICAgICAgICAgICdpbmNsdWRlcyc6IFsgJy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5
cGknLCBdLAotICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogWyAnY29weV9zY3Jp
cHRzJywgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2hhcmRfZGVwZW5kZW5jeSc6IDEsCi0gICAg
ICAgICAgICAgICAgICAgICdhY3Rpb25zJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb25f
bmFtZSc6ICdHZW5lcmF0ZSBBTkdMRSBDb21taXQgSUQgSGVhZGVyJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnbWVzc2FnZSc6ICdHZW5lcmF0aW5nIEFOR0xFIENvbW1pdCBJRCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyByZWZlcmVuY2UgdGhlIGdpdCBpbmRleCBhcyBh
biBpbnB1dCwgc28gd2UgcmVidWlsZCBvbiBjaGFuZ2VzIHRvIHRoZSBpbmRleAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdpbnB1dHMnOiBbICc8KGFuZ2xlX2lkX3NjcmlwdCknLCAnPChh
bmdsZV9wYXRoKS8uZ2l0L2luZGV4JyBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdv
dXRwdXRzJzogWyAnPChhbmdsZV9pZF9oZWFkZXIpJyBdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdtc3ZzX2N5Z3dpbl9zaGVsbCc6IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2FjdGlvbic6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAncHl0aG9uJywgJzwoYW5nbGVfaWRfc2NyaXB0KScsICdnZW4n
LCAnPChhbmdsZV9wYXRoKScsICc8KGFuZ2xlX2lkX2hlYWRlciknCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdhbGxfZGVwZW5kZW50X3NldHRpbmdzJzoK
LSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVf
ZGlycyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJzwoYW5nbGVfZ2VuX3BhdGgpJywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0g
ICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzoK
LSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgWydhbmdsZV9i
dWlsZF93aW5ydD09MScsCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3R5cGUnIDogJ3NoYXJlZF9saWJyYXJ5JywKLSAgICAgICAgICAgICAg
ICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIF0KLSAgICAgICAgfSwKLSAgICAgICAgeyAjIGFuZ2xlX3VzZV9jb21taXRf
aWQ9PTAKLSAgICAgICAgICAgICd0YXJnZXRzJzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdjb21taXRfaWQnLAot
ICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdub25lJywKLSAgICAgICAgICAgICAgICAgICAg
J2hhcmRfZGVwZW5kZW5jeSc6IDEsCi0gICAgICAgICAgICAgICAgICAgICdpbmNsdWRlcyc6IFsg
Jy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLCBdLAotICAgICAgICAgICAgICAgICAgICAn
Y29waWVzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXN0aW5hdGlvbic6ICc8KGFuZ2xlX2dl
bl9wYXRoKS9pZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGVzJzogWyAnPChh
bmdsZV9pZF9oZWFkZXJfYmFzZSknIF0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2FsbF9kZXBlbmRlbnRfc2V0
dGluZ3MnOgotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAn
aW5jbHVkZV9kaXJzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnPChhbmdsZV9nZW5fcGF0aCknLAotICAgICAgICAgICAgICAgICAgICAg
ICAgXSwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgJ2NvbmRp
dGlvbnMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICBb
J2FuZ2xlX2J1aWxkX3dpbnJ0PT0xJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgOiAnc2hhcmVkX2xpYnJhcnknLAotICAgICAg
ICAgICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgXQotICAgICAgICB9XSwKLSAgICAgICAgWydPUz09IndpbiIn
LAotICAgICAgICB7Ci0gICAgICAgICAgICAndGFyZ2V0cyc6Ci0gICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnY29weV9j
b21waWxlcl9kbGwnLAotICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdub25lJywKLSAgICAg
ICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IFsgJ2NvcHlfc2NyaXB0cycsIF0sCi0gICAg
ICAgICAgICAgICAgICAgICdpbmNsdWRlcyc6IFsgJy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5
cGknLCBdLAotICAgICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6Ci0gICAgICAgICAgICAg
ICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgIFsnYW5nbGVfYnVpbGRfd2lucnQ9PTAn
LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdhY3Rpb25zJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdhY3Rpb25fbmFtZSc6ICdjb3B5X2RsbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnbWVzc2FnZSc6ICdDb3B5aW5nIEQzRCBDb21waWxlciBETEwuLi4nLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNfY3lnd2luX3NoZWxsJzogMCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnB1dHMnOiBbICdjb3B5X2NvbXBp
bGVyX2RsbC5iYXQnIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3V0
cHV0cyc6IFsgJzwoUFJPRFVDVF9ESVIpL2QzZGNvbXBpbGVyXzQ3LmRsbCcgXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICI8KGFuZ2xlX2dlbl9wYXRoKS9jb3B5X2NvbXBpbGVyX2RsbC5iYXQiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkKFBsYXRmb3JtTmFtZSkiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8KHdpbmRvd3Nfc2RrX3BhdGgpIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPChQUk9EVUNUX0RJUiki
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sICNhY3Rp
b25zCi0gICAgICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IFsnYW5nbGVfYnVpbGRfd2lucnQ9PTEnLAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyA6ICdzaGFyZWRfbGlicmFyeScsCi0gICAg
ICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICBdLCAjIHRhcmdldHMKLSAgICAgICAgfV0sCi0gICAgXSAj
IGNvbmRpdGlvbnMKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9h
bmdsZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2FuZ2xlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGZkOTNkZDdl
ZjEyOGJiMjkxNjUzNzAxZTE0ZmE1YWM2OTQ2NmM3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmdsZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0wLDAgKzEsMzg2OCBAQAorLy8gISQqVVRGOCokIQoreworCWFyY2hpdmVWZXJzaW9uID0gMTsK
KwljbGFzc2VzID0geworCX07CisJb2JqZWN0VmVyc2lvbiA9IDQ2OworCW9iamVjdHMgPSB7CisK
Ky8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCisJCTA1MUQ5MDMyNjQyRjdF
MkM3NDEwQzQzQiAvKiBBbGwgKi8gPSB7CisJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJ
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gRDFEODM4NTcxNDAzMDVEOEYxM0UyRDg5IC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJBbGwiICovOwor
CQkJYnVpbGRQaGFzZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTRENzc4
M0M5NkY5OTE3RkNFNDk3OTNDRSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCUJFQjY0
RjU0QzM5RjFFNjdBNTQ5RTQyQiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTM3QjI4
RENENzEwRTBGMEJCMjE5RDlEMCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTUzNDEz
RDBDMTk0MTNEMkM1Nzg1NjYxNCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCUJBRUQ4
QzIyQUJFOTE4OTlEQThBRTFERiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCUQyMjhB
NzNCNEEwNzU2MkJEMjJGMUU5MSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCUIzNzY5
RjkyMkMyMDZBQTM4QjVDNDAxNCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTEwMUEz
MDM1QTMyMjUwODREQjgyN0U0QiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCUJENTJG
MTJBRERCMEFGNTFEQUQyQTk5NiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCUE2MTNG
OEFDRDdENzE0RDU0NUNEOTIxOSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTVGRjc4
NzhBNzI4MEJBOUFFOUU1MTY1NCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTM5Qjkz
QzBFNkE4QkVGMjZDNjhGODg4MSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTUwQTJF
QTM2OUQ0NjZBN0NGNTAxNjc2MyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTY3NUY5
Nzc1REQ5MDc2OEE5MzdBN0U2NiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJ
CW5hbWUgPSBBbGw7CisJCQlwcm9kdWN0TmFtZSA9IEFsbDsKKwkJfTsKKwkJNTVFNzAxRDQ4RDZG
NzVGREUwRkI1Qjg5IC8qIGNvcHlfc2NyaXB0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0
ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBFRTEyNzEzRjA0OTJGNDIxMTBE
QjBBNTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQg
ImNvcHlfc2NyaXB0cyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQk1QkUwREZBQkY4QTFE
OEI1MUY1NjRGMjEgLyogQ29weSB0byAkKFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS9hbmdsZSAq
LywKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IGNvcHlfc2Ny
aXB0czsKKwkJCXByb2R1Y3ROYW1lID0gY29weV9zY3JpcHRzOworCQl9OworCQk1RDRDOUJGMTFB
MjJEQjBDRTFBNDQxMjEgLyogbGliQU5HTEVfZDNkMTFfY29uZmlnICovID0geworCQkJaXNhID0g
UEJYQWdncmVnYXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IEZFQjJFMzJG
MUIwREYyNjFENDlGMEQ4NCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3Jl
Z2F0ZVRhcmdldCAibGliQU5HTEVfZDNkMTFfY29uZmlnIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0g
KAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gbGliQU5HTEVf
ZDNkMTFfY29uZmlnOworCQkJcHJvZHVjdE5hbWUgPSBsaWJBTkdMRV9kM2QxMV9jb25maWc7CisJ
CX07CisJCTgwNTUxQ0Q3RUIyNDBGMDlGNzU1REFDMCAvKiBjb21taXRfaWQgKi8gPSB7CisJCQlp
c2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNTAw
MEJDQUY4Nzc1NkI1MzIxMEM3RDE3IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
QWdncmVnYXRlVGFyZ2V0ICJjb21taXRfaWQiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJ
MDk2RkY0OTAxNTlFNEE4NDIzNTM4REVCIC8qIEFjdGlvbiAiR2VuZXJhdGUgQU5HTEUgQ29tbWl0
IElEIEhlYWRlciIgKi8sCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTQ3QjU5NTAy
QzAwNEFGMDk3RDIyODQzMSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5h
bWUgPSBjb21taXRfaWQ7CisJCQlwcm9kdWN0TmFtZSA9IGNvbW1pdF9pZDsKKwkJfTsKKwkJODA5
NUZGNjU0MzBGMzY2NkQ2NTg3RjdGIC8qIGxpYkFOR0xFX3JlbmRlcmVyX2NvbmZpZyAqLyA9IHsK
KwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3Qg
PSA3MjAxNzA1OTAxM0NERTRFRTBBMTNCNEYgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhBZ2dyZWdhdGVUYXJnZXQgImxpYkFOR0xFX3JlbmRlcmVyX2NvbmZpZyIgKi87CisJCQli
dWlsZFBoYXNlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFt
ZSA9IGxpYkFOR0xFX3JlbmRlcmVyX2NvbmZpZzsKKwkJCXByb2R1Y3ROYW1lID0gbGliQU5HTEVf
cmVuZGVyZXJfY29uZmlnOworCQl9OworLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9u
ICovCisKKy8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTAwRDA1MTBCRUZGMzVF
RDk0NzNCQTVBMyAvKiBNZW1vcnlCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzBFNDI5QTQzNUNGRURFMTk1NzAyRkU3IC8qIE1lbW9yeUJ1
ZmZlci5jcHAgKi87IH07CisJCTAxQTMxRjc5NTYyMDNDNUEzOTA4QUMzOSAvKiBsaWJHTEVTdjIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTY2NTA3
ODg2MDUxMEZGRTc5NTlCNEFEIC8qIGxpYkdMRVN2Mi5jcHAgKi87IH07CisJCTAxRkI4ODM3RTM5
QjUzMUIzOUE4RjQyQyAvKiBEaXNwbGF5R0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzhGRTYyRjY5NkQzRjJFNUQ0QzgzMTlCIC8qIERpc3BsYXlH
TC5jcHAgKi87IH07CisJCTAyRDkxNEQ2RjlDQTQ4MjJDQjIyQTVDRiAvKiBGcmFtZWJ1ZmZlck5V
TEwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjlF
QUNCQjg3RURFNUQ2QzAzOEE3RjFBIC8qIEZyYW1lYnVmZmVyTlVMTC5jcHAgKi87IH07CisJCTAz
QkFDMDc1NDk2OUNDRTJEMENDMUYxMyAvKiBEZXZpY2VOVUxMLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQjZEN0I1Qjc0NzlFMDQzMUU5QTNEQSAv
KiBEZXZpY2VOVUxMLmNwcCAqLzsgfTsKKwkJMDRCNDNGQTJBQjI3NkIyQkIzRTkyNDQ3IC8qIFZl
cnRleEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDAwNTk0RjU4MDIwRDgyQzg4MUVCOUJCNiAvKiBWZXJ0ZXhBcnJheS5jcHAgKi87IH07CisJ
CTA2RTAyNzU4NjdBQUZBMDVFQzJDOUNDMCAvKiBUcmFuc2Zvcm1GZWVkYmFjay5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQjJCMkM4ODlGNzNFRkMx
MkZDNDY4OTQgLyogVHJhbnNmb3JtRmVlZGJhY2suY3BwICovOyB9OworCQkwNzQzNzUyODQ2NkU5
NEJGRjJEQTEzQ0IgLyogRnJhbWVidWZmZXJBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RTIzNDZFQjBGRUZFNkM2N0JBQzdFNyAv
KiBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQuY3BwICovOyB9OworCQkwN0ZCOTEyQ0I0RkYyRTJGN0Iz
QjNFMzcgLyogVHJhbnNmb3JtRmVlZGJhY2tHTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RDJENjRDODA1RjEzQTA0OTJGNjI3REYgLyogVHJhbnNm
b3JtRmVlZGJhY2tHTC5jcHAgKi87IH07CisJCTA5QjA5NkFDQzk3QzQ5QTFBRTU4QUM2RCAvKiBl
bnRyeV9wb2ludHNfZ2xlc18zXzAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjRCNjkyRjM2NUEwQkRDODUxNUVFRTYzIC8qIGVudHJ5X3BvaW50c19n
bGVzXzNfMC5jcHAgKi87IH07CisJCTBDMTQ2NUJDNkUyNkM0MzI3Q0Q0RUQyRCAvKiBlbnRyeV9w
b2ludHNfZ2xlc18zXzEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTVCNkE1RkU4REIwOUU0OEZBMjYwNEUwIC8qIGVudHJ5X3BvaW50c19nbGVzXzNf
MS5jcHAgKi87IH07CisJCTBEODMyRjdDQjk1QkUwNTU5NzZDQzAwQSAvKiBJbml0aWFsaXplLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI3OTFGMDY1
NjI0MTkzRTg3NkFDMUQyRCAvKiBJbml0aWFsaXplLmNwcCAqLzsgfTsKKwkJMEU1OTFEMjFGQTcy
Q0RBOTg4MDlFOTIwIC8qIFZlcnRleEFycmF5TlVMTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMUNCNTc4MjVGREYyOUNDNTkwNTJBRDEgLyogVmVy
dGV4QXJyYXlOVUxMLmNwcCAqLzsgfTsKKwkJMEYzRTA0MTUxRkEwMjY4MTE1Q0IwOUIxIC8qIGVz
M19jb3B5X2NvbnZlcnNpb25fdGFibGVfYXV0b2dlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQkNCOUIzODk1OTQ0RUIyODQzMjQ0MDMgLyogZXMz
X2NvcHlfY29udmVyc2lvbl90YWJsZV9hdXRvZ2VuLmNwcCAqLzsgfTsKKwkJMTQ1NTI4MEExMDEy
ODUyQjIyODU4RUNFIC8qIEltYWdlTlVMTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFQjA5QUE2RjQ2RjNDMkNGNjg2NDg1NDkgLyogSW1hZ2VOVUxM
LmNwcCAqLzsgfTsKKwkJMTU1REMwMzVBREQyM0E1QUIyRDMwNEU3IC8qIFBhdGguY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjFCQjc3QzdDQ0NGOUEw
NjVGQjNDQUEzIC8qIFBhdGguY3BwICovOyB9OworCQkxNUI4MDBERTM3MTkzOEIyMEI3QzlDMkQg
LyogUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTk5MjNDQ0RGODQ5OUJGQ0E0OUQ4ODA4IC8qIFJlY29yZENv
bnN0YW50UHJlY2lzaW9uLmNwcCAqLzsgfTsKKwkJMTdFRDFERDlDMEVEQzJBRjU4OTEyMjFGIC8q
IFVuaWZvcm1MaW5rZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0IxQzM5NEI1NEI3REMxQTJDMDRGNzdCIC8qIFVuaWZvcm1MaW5rZXIuY3BwICov
OyB9OworCQkxQTIzMEE1ODI3QjU5RTYyQUVDN0Y4RkYgLyogRXhwcmVzc2lvblBhcnNlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0NBNERDMzI0
ODUwMUYzNTQxNjkyREMgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgKi87IH07CisJCTFCNTdBN0E5
MzdERjFCMzkxNjA3OTVDNyAvKiBTdXJmYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMwNDc2QzVCQjMwRTU2REY1REJCRjZBQiAvKiBTdXJmYWNl
LmNwcCAqLzsgfTsKKwkJMUJERTI5REVBNTNGQ0UyNkIwOEU1ODEwIC8qIFRleHR1cmVHTC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxODBGQUQ4OENC
QkZCMjc5NDU3RTA0NzIgLyogVGV4dHVyZUdMLmNwcCAqLzsgfTsKKwkJMUQ3RUExOTFDQzBDNEJB
RjIyNzVDOUZFIC8qIE91dHB1dEdMU0xCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBNzVBMEVCQkQyMzE0OEU2M0VEQzUzQSAvKiBPdXRwdXRH
TFNMQmFzZS5jcHAgKi87IH07CisJCTFFMTI2NEJERTlBOUM0RkUxRjIwNTZDRiAvKiBWYXJ5aW5n
UGFja2luZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxNzNCNkQ3Qzg4QzQxREZDNDg5MUUxNkQgLyogVmFyeWluZ1BhY2tpbmcuY3BwICovOyB9Owor
CQkyMEIxNDUzMjEzMTk3MjFENjJCOTE3REEgLyogYmxvY2tsYXlvdXQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTlEQ0EzNDYwNzFCOEJGNDg4REVC
M0Q2IC8qIGJsb2NrbGF5b3V0LmNwcCAqLzsgfTsKKwkJMjBENThDNEYwNkM5QUZCMjc1QURERDk0
IC8qIFRyYW5zZm9ybUZlZWRiYWNrTlVMTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0OENEREE4REJDNUM1NTYyNjY4RDhEM0IgLyogVHJhbnNmb3Jt
RmVlZGJhY2tOVUxMLmNwcCAqLzsgfTsKKwkJMjE3OTQyMzFCODVFODBGOEE2QjU2RUMwIC8qIEJ1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDRTExMjU0MjFCQTg4MzdERDJDMjJGNiAvKiBCdWlsdEluRnVuY3Rp
b25FbXVsYXRvci5jcHAgKi87IH07CisJCTIyOEIwMTIxOEZBMTZDMUZDOTJBNjE4MCAvKiBlbnRy
eV9wb2ludHNfZWdsX2V4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyNzQwRkMwOUIwRjFDQTk5Qjk1MkIwMzIgLyogZW50cnlfcG9pbnRzX2VnbF9l
eHQuY3BwICovOyB9OworCQkyMzE4QTRBOURFQ0QxNDY4MzI0MEJDMjYgLyogU3RhdGVNYW5hZ2Vy
R0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjAw
RDcyN0FGQTgxNEM2QzhGNTFGMERDIC8qIFN0YXRlTWFuYWdlckdMLmNwcCAqLzsgfTsKKwkJMjUy
REZGRkI1ODk3RTRDMTk5MTQzOEUwIC8qIENhbGxEQUcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTgzQUM2RThGRjQ2MjQ1QzlGMTA1QUFCIC8qIENh
bGxEQUcuY3BwICovOyB9OworCQkyNjM5RDE3RUNGNUNCMTcxQUNCRkU0QUEgLyogSW1hZ2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTZCMzhCMkY3
N0JDMkVBMTRFQjlGNzkzIC8qIEltYWdlLmNwcCAqLzsgfTsKKwkJMjZEM0FDRjI1RDk5ODZBOTlG
RTBCRjUxIC8qIERpc3BsYXlOVUxMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI0QTc3OTE5MEFCQjlDMTIwRUI2NDUxMCAvKiBEaXNwbGF5TlVMTC5j
cHAgKi87IH07CisJCTI3NkQ0NEI4OTI4RTVGMTA2MUIyNkRCRiAvKiBJbmRleFJhbmdlQ2FjaGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc1MDJE
QTc1NTZEQjZGQTQyNTU1RDg1IC8qIEluZGV4UmFuZ2VDYWNoZS5jcHAgKi87IH07CisJCTI4NEE4
MDc4NDlDREE4QkZFRTRGQjY0RCAvKiBIYW5kbGVSYW5nZUFsbG9jYXRvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMTBGQ0Q3OTc2RTc5QjAyOUJE
M0U1NkUgLyogSGFuZGxlUmFuZ2VBbGxvY2F0b3IuY3BwICovOyB9OworCQkyODgzNDUwNzZCMUMw
MkRDMkExRDMzNTAgLyogUXVlcnlOVUxMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVEQjM2NDcwQjAzMTMyMUQzRjExQjJFNyAvKiBRdWVyeU5VTEwu
Y3BwICovOyB9OworCQkyOTc4QTg1NDJDMjRGOEU2MzZDNUZFODkgLyogRGlzcGxheUltcGwuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FBM0FGNzc5
QTM5REVGODM0MUJCMkFDIC8qIERpc3BsYXlJbXBsLmNwcCAqLzsgfTsKKwkJMjlCNUIyQTQ3QTc5
MDNBOTI5QTAwNTNDIC8qIGxpYmFuZ2xlX2NvbW1vbi5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEQwQjU4NjhENzM2NzgxQjQxMkY2NUFEIC8qIGxp
YmFuZ2xlX2NvbW1vbi5hICovOyB9OworCQkyRDA5QUE2NjRGMzhFQTE5NzY1MjRGQUMgLyogUGxh
dGZvcm0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MzAzMDczNjkyMkJBMUM5NUQ4M0VCNjJDIC8qIFBsYXRmb3JtLmNwcCAqLzsgfTsKKwkJMkQ4NEI4
MkQ5NjlCMjcyRUY5MDU4QzlGIC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUU2RDZFNDM1MTg5
RUY4MTQyMEVCRDQ4IC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQuY3BwICovOyB9Owor
CQkzMUIwRDhGODAzNUUxMDY2MkZFREZBODIgLyogVW5mb2xkU2hvcnRDaXJjdWl0QVNULmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU4MjIyOUY4NkVE
RUUwMjE2OTM4RDNBOSAvKiBVbmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwICovOyB9OworCQkzMUI1
MDI3Q0UwODk4MTc1NTE0NzJCNjEgLyogc3RyaW5nX3V0aWxzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhGQ0VGRTQ3REI5OTc3QzlEQUU2OUI2QSAv
KiBzdHJpbmdfdXRpbHMuY3BwICovOyB9OworCQkzMkI2RkMzQjA0NTZGQkM2QzQ0NDA3RjEgLyog
U3lzdGVtSW5mb19tYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzNDk3RUY2MkUwQzQwNEZDQUVFNUVCOEEgLyogU3lzdGVtSW5mb19tYWMubW0gKi87
IH07CisJCTMzMzVCQjZGMjE2RDgxNTM1NTIyNTE0MCAvKiBXaW5kb3dTdXJmYWNlQ0dMLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY4RkNERDc4RTkx
NjgxRTEzQjE3QkVGIC8qIFdpbmRvd1N1cmZhY2VDR0wubW0gKi87IH07CisJCTMzM0Q0RTU4ODEz
NjJDODJFRjA1QjQ3QiAvKiBPcGVuR0wuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUY5RTYwOTBENzU3RUY5NDlBRjA0MjYzIC8qIE9w
ZW5HTC5mcmFtZXdvcmsgKi87IH07CisJCTM1OEM3MTgwRUY0N0VGMjA4QzgwREUxQyAvKiBWYWxp
ZGF0ZU91dHB1dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzBCNzE1RDY4QjFFNTE1QTU2NUM1MUJGIC8qIFZhbGlkYXRlT3V0cHV0cy5jcHAgKi87
IH07CisJCTM1RjU1Q0Q0MEJBNzIxNTIzOTQ1QUEzNCAvKiBJbnB1dC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Rjk1Qzc4NTQ1QUQ1MEE1QzQ2RDc2
MTYgLyogSW5wdXQuY3BwICovOyB9OworCQkzNzlCRTM0QjQ2MjJGNTdCQjRBMkJGNjkgLyogdmFs
aWRhdGlvbkVTMzEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEI1QTBENkUxQzY2ODJFMzhCNzg4MjhDIC8qIHZhbGlkYXRpb25FUzMxLmNwcCAqLzsg
fTsKKwkJMzlCQTExOTVFMjlCNjZCNjNBNkFCMTc4IC8qIERpcmVjdGl2ZUhhbmRsZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFDQTE1QkJFMDQ4
RUM3QjA1ODExNkRBIC8qIERpcmVjdGl2ZUhhbmRsZXIuY3BwICovOyB9OworCQkzQTgwNDdBNUNC
MzM5MEE4MTNBMzY4MDQgLyogUmVnZW5lcmF0ZVN0cnVjdE5hbWVzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY2QzgyQkY0RURFNkQ4M0Y2QkVBREZC
MCAvKiBSZWdlbmVyYXRlU3RydWN0TmFtZXMuY3BwICovOyB9OworCQkzQjZFRjMyRTFBRjU2OUJE
Q0MyQTkyQUUgLyogUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEExQzE1MkE4RDU1RjdDMkJCQjk5RDVGIC8q
IFJld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmNwcCAqLzsgfTsKKwkJM0MxRTc4OEI3QzREMEE5RDY3
NzY0NkM1IC8qIEVtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjYxMkRFMkUzRDkxMzFDOTAzQzgzNjEg
LyogRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmNwcCAqLzsgfTsKKwkJM0NENjkyNTNFMDE0
QTgyNzM1NzE4RUVDIC8qIGdsb2JhbF9zdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQzkzMUM1RjRGQUFBRDNGMkJBOTU3N0YgLyogZ2xvYmFs
X3N0YXRlLmNwcCAqLzsgfTsKKwkJM0Q0REVDNjgwMEU4NDQ1MzZDQjg4NkU2IC8qIGxpYkdMRVN2
Mi5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE2QkY5NUZDRENBNDUzMTFEMTE4NDQ4MSAvKiBsaWJHTEVTdjIuZHlsaWIgKi87IH07CisJCTNE
NzlEOTNEQzEyRjNCRUFGN0FFNTIzOSAvKiB1dGlsaXRpZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTAwMUZFQUIzNzdGMzY1MTZGOTM4NDc1IC8q
IHV0aWxpdGllcy5jcHAgKi87IH07CisJCTNFMzkzMjg4NDYyNjU1MUU3QThBNTI4MiAvKiBnbHNs
YW5nX2xleC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyMDk1QzFDQ0VCMEVEQ0Y4NzIyM0FDNjggLyogZ2xzbGFuZ19sZXguY3BwICovOyB9OworCQkz
RUZCMTU3NTc4NzQ0ODA4RTUyQUIyNzkgLyogbG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjlFNzZG
MDkxOUIyQkVBNEFDOENBQkIgLyogbG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAgKi87
IH07CisJCTQwMzc1RTFDRDk5OUQ0QUJGRDQ1MUI3QyAvKiBsb2FkaW1hZ2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzA2MEVDMDhBQkJBMTk2NEM3
ODZBNDRDIC8qIGxvYWRpbWFnZS5jcHAgKi87IH07CisJCTQwRjlFQTMyNzVCN0E5NTI3QzRGOEJE
MiAvKiBDb25maWcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDE4M0E1NjM2MEJGOEFEODVGNDk1MDA1IC8qIENvbmZpZy5jcHAgKi87IH07CisJCTQy
MUEwMUEyNTQzMkQ1MjVFODRBRjdGMiAvKiBSZW5kZXJidWZmZXJHTC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkYyNjBFOEYxOTMwN0Q4M0NBRUJD
RkEgLyogUmVuZGVyYnVmZmVyR0wuY3BwICovOyB9OworCQk0MkExODIzM0YwNUVEMjNEQkQ4NUND
OTIgLyogZXZlbnRfdHJhY2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQwNjI1QTI0QUVFRkYzNkFEMzUyNENEMCAvKiBldmVudF90cmFjZXIuY3Bw
ICovOyB9OworCQk0NUQ3NjFGRUZBN0FEQTMxMzFDMEZDQjMgLyogRW11bGF0ZVByZWNpc2lvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEOERFNENB
MDhEMjhDQTE1NzM5MzY1ODMgLyogRW11bGF0ZVByZWNpc2lvbi5jcHAgKi87IH07CisJCTQ2MzRB
NzE1NDRBNDk1Mjk4QjAwMjI4QSAvKiB2YWxpZGF0aW9uRVMyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxMDI2NEU5QTBDNzYxQTlCOEY2MzRGRSAv
KiB2YWxpZGF0aW9uRVMyLmNwcCAqLzsgfTsKKwkJNDZFRjREN0Q5QTlDNUI0NEMzMUY0QjhBIC8q
IElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDAyQUU1OEE0NDVDRjU4RDUzNDcxODRBRCAvKiBJT0tpdC5mcmFtZXdvcmsgKi87
IH07CisJCTQ3Qjg4M0U5MEQ0QUI4MjQ0NjVDMDk0MiAvKiBUZXh0dXJlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENDOEI5QTg0OEVDMzEwRjZFNTdF
QTVEOCAvKiBUZXh0dXJlLmNwcCAqLzsgfTsKKwkJNDkxNEY4MUUxMThGMENEMjlENUYxQTY2IC8q
IFdvcmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBQzM2RjlBRDNCMDk2RTE5N0M2ODk0OUUgLyogV29ya2VyVGhyZWFkLmNwcCAqLzsg
fTsKKwkJNERDOTc1OTBBRUNEQThDOTNENTdBREVBIC8qIERpcmVjdGl2ZUhhbmRsZXJCYXNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzMzhCMzdE
NUMyNEE3RjU1ODIzRTA3OSAvKiBEaXJlY3RpdmVIYW5kbGVyQmFzZS5jcHAgKi87IH07CisJCTRF
RjVDMjE0MDYyQjMxNUUwRUZEMjlDRiAvKiBDYXBzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJCRTUxRTVFMzdEQzkwRDIyRjIzRUNCRiAvKiBDYXBz
LmNwcCAqLzsgfTsKKwkJNTJEQ0U0NzNCREFERERBMkJEQjNDNDAyIC8qIFBhdGhHTC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMkIwNURGOEJGRjBC
QUU0MDYxMzBBNjUgLyogUGF0aEdMLmNwcCAqLzsgfTsKKwkJNTM0NTRCNUE2MTVBQ0JFMDI2OTNG
NUI4IC8qIFF1ZXJ5R0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTkxMDBEQjNEM0Y4OUQwQ0U0NEM0QkFDIC8qIFF1ZXJ5R0wuY3BwICovOyB9Owor
CQk1NDI3OTIxQUYyNkU3Q0Y4NzVFNEE5MUQgLyogUHJvZ3JhbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMUJEQTFFOURDNjE3RUZGNjA2NkFDODAg
LyogUHJvZ3JhbS5jcHAgKi87IH07CisJCTU3MjU3NDIzQzAxOUZEQjhFMTM0MkJEOSAvKiBTdHJl
YW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODkw
NUJGNzRBQzRCNjVGRkI4ODM1RTlDIC8qIFN0cmVhbS5jcHAgKi87IH07CisJCTU3M0Q3MkYwNjJF
NjNCRDc0RDMxODU0MyAvKiBTeW1ib2xUYWJsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTA4OEYwODVGQzg0NzdCQ0VCOEM3NTEgLyogU3ltYm9s
VGFibGUuY3BwICovOyB9OworCQk1Nzc3RTcyQTcyQzEzNUI5N0M3RDMyQUQgLyogZW50cnlfcG9p
bnRzX2dsZXNfM18xLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk1QjZBNUZFOERCMDlFNDhGQTI2MDRFMCAvKiBlbnRyeV9wb2ludHNfZ2xlc18zXzEu
Y3BwICovOyB9OworCQk1N0E0NzQ2RENGNUE4QkFBM0ZDOUZDQ0YgLyogRGV2aWNlSW1wbC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMjhCMkE5QjBD
MUU5RjkwRjY3RjAxRTIgLyogRGV2aWNlSW1wbC5jcHAgKi87IH07CisJCTU4RDM0MDY5MDE1RUI3
QzU1NDQzMkVENCAvKiBBdHRyaWJ1dGVNYXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTYzOTYyQjlENTRFREU2RDI3NTY5QTE5IC8qIEF0dHJpYnV0
ZU1hcC5jcHAgKi87IH07CisJCTU5Qjk4NzMyM0NCMzgwMzU1MEE4RDgzNyAvKiBFcnJvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1REFGNTM3Mjg0
NTg1MzRDRDAwODU5MjggLyogRXJyb3IuY3BwICovOyB9OworCQk1QTYwNDQwMUI3Q0JGNTBERDYy
NEU2ODUgLyogQ29tcGlsZXJHTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNTE2MTdCMzEzNTYxQzY1QkM5QTBEMjEgLyogQ29tcGlsZXJHTC5jcHAg
Ki87IH07CisJCTVBNkM0OUNCRkJGMTk2NTYxQjg2MUMzNSAvKiBSZXNvdXJjZU1hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODlFNjlCOTI5
MEU5ODhGRjVBM0NBOTcyIC8qIFJlc291cmNlTWFuYWdlci5jcHAgKi87IH07CisJCTVBRjlEOEI4
NTUxMjA4MzZFOTFCMEVDNiAvKiBhbmdsZXR5cGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTJCRDAyQzY3MTY2NDVCNkRCMjRDMiAvKiBhbmds
ZXR5cGVzLmNwcCAqLzsgfTsKKwkJNUJENDBBMDhEQUFCNzE4QkQwOUJGQjlBIC8qIEZpbmRTeW1i
b2xOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU0NkQ2Q0M2Q0U2QjFCMkExNzcyRkVCRSAvKiBGaW5kU3ltYm9sTm9kZS5jcHAgKi87IH07CisJ
CTVCRjQ3NDgxNUM1QjFDMzZCNEY1RUM3QSAvKiBmb3JtYXR1dGlscy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRDhCODNDQ0ExMkRFODY3QUJFODI2
QzUgLyogZm9ybWF0dXRpbHMuY3BwICovOyB9OworCQk1Q0RFMzM1QjdCOTIyNzVCNDY5RjUzOUIg
LyogSGFuZGxlQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMjUyREY0MDRBOEY0MjgxRjUyNkUwRiAvKiBIYW5kbGVBbGxvY2F0b3Iu
Y3BwICovOyB9OworCQk1RDc4NkM1MUZDMTQ5NjJDNTUyRDQ4NTMgLyogU2NhbGFyaXplVmVjQW5k
TWF0Q29uc3RydWN0b3JBcmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENEQjQ3MDVFOEI0NjI5Mjg5RjRGOTdDNCAvKiBTY2FsYXJpemVWZWNBbmRN
YXRDb25zdHJ1Y3RvckFyZ3MuY3BwICovOyB9OworCQk1RkE5NTg0QThDREI3NUQzQ0MwRTRFODIg
LyogdXRpbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzNkJEMzFDNDg4NzVFM0Y4OTQ0M0FBMkYgLyogdXRpbC5jcHAgKi87IH07CisJCTVGREVCREMw
MENBNjQyQkIwODY5Rjg5NiAvKiBUb2tlbml6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMERDQ0JERjREMUEzODk1NzBFM0JFQ0EzIC8qIFRva2Vu
aXplci5jcHAgKi87IH07CisJCTYxOTZGRkVENThEOTI1Mzg3N0U0MjI5MSAvKiBUZXh0dXJlSW1w
bC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0FF
RDNDOTEyQzhFRTg3MjJGMUYxNjcgLyogVGV4dHVyZUltcGwuY3BwICovOyB9OworCQk2MjVDOTBB
QTU1Qjc3RkRGNjA0RTFBOEEgLyogbGlidHJhbnNsYXRvci5hIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjg2MzFFRjBGNzkwNDBEQjYzRTg0NjQ3IC8q
IGxpYnRyYW5zbGF0b3IuYSAqLzsgfTsKKwkJNjMxN0I3MDI1Rjk1NEQ3MDU3MDYwNENBIC8qIFN5
c3RlbUluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTdCNzVCMTI4MTgyQTMxQzdFRkU3RDcxIC8qIFN5c3RlbUluZm8uY3BwICovOyB9OworCQk2
M0NENEE2NzFENDkwMkUxM0Y4MzkzMTggLyogZHJpdmVyX3V0aWxzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1RTNCRDY5RkFERDU3Qzk3MzdDOTkx
NiAvKiBkcml2ZXJfdXRpbHMuY3BwICovOyB9OworCQk2NjlENDg4MDFBRDA0QzE2M0U5QjgzNzUg
LyogQ29tcGlsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzMxNjRFNDJCOEQ4OEM1QjkxNDg5MkYxIC8qIENvbXBpbGVyLmNwcCAqLzsgfTsKKwkJ
Njc0NkJBQ0E1MTE3QzRDRjgxOTYzOUU1IC8qIFNhbXBsZXJOVUxMLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNFMDdDMjMzRjUyMUUxMzE0RDYyQjk1
QiAvKiBTYW1wbGVyTlVMTC5jcHAgKi87IH07CisJCTY5NzUxMjg1MDJFMkRDMDVEQTVFNjVBQyAv
KiBPcGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA2N0E2QjM5NDc0NzFEOTk4MjBCMjU2NTUgLyogT3BlcmF0b3IuY3BwICovOyB9OworCQk2
QkNFQjEzMEFBRURGNzYyNTNEMjM1QzcgLyogUmVuZGVyYnVmZmVyTlVMTC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNjFEOTgyQ0NCQkIzOTcwNjQ0
MUE3RjggLyogUmVuZGVyYnVmZmVyTlVMTC5jcHAgKi87IH07CisJCTZENDE5Q0Y5OEI2RTYxRkM4
OTBDOEQ5MSAvKiBGZW5jZVN5bmNHTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMkU4RUFBQUQzQzFERTcyMTIzNTJBMUQgLyogRmVuY2VTeW5jR0wu
Y3BwICovOyB9OworCQk2RTI2ODk3RjI1NUY0MUQyNjY3Q0I3NjUgLyogU2hhZGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNEYzOTIyREI0QzMw
MjU2NDQ1MkE4OSAvKiBTaGFkZXIuY3BwICovOyB9OworCQk3MEM2RUQ5NDhGQUEyQTZDN0U3N0Iy
MTEgLyogYW5nbGV1dGlscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMEI5NTA1NjU2REI4M0M4RTBCQUNDNDkgLyogYW5nbGV1dGlscy5jcHAgKi87
IH07CisJCTcwRjRBRTEwN0U1REMxODQwQTExQkM2MyAvKiBTaGFkZXJOVUxMLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlENTkwREIxMzA0NDMwOTJC
QUZBMDFFNSAvKiBTaGFkZXJOVUxMLmNwcCAqLzsgfTsKKwkJNzE1ODA0QkJBMjk1RTI2MjIyMzAy
Q0Y2IC8qIG1hdGh1dGlsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDgwOTU1ODE4QkVDQ0I2NzRGQUM0QjMxNyAvKiBtYXRodXRpbC5jcHAgKi87IH07
CisJCTcyMjQ2NkVCRDBERTIwOUE5RkE2MkY3MyAvKiBlbnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MzA4
NkZGN0E3MTEzNDk0OTg2QjJCRiAvKiBlbnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0LmNwcCAqLzsg
fTsKKwkJNzM2NjM4RTAxRDM4OURCQjBEQUIzNjA4IC8qIFVzZUludGVyZmFjZUJsb2NrRmllbGRz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQTU1
QkUwNDhEODhEQTg5Njg3ODk4OCAvKiBVc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcy5jcHAgKi87IH07
CisJCTc0NDk0MEE5QTA0QkYxQUNBMDRFMUU5RiAvKiBDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDMwNzc5MjlDRDYzMTk0OTk2RTMxQ0Ug
LyogQ2FjaGUuY3BwICovOyB9OworCQk3NDY4NERFN0MyNTREMDI2N0EwQzNEQTcgLyogUHJ1bmVQ
dXJlTGl0ZXJhbFN0YXRlbWVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTM1NzlCNzIwNDVFRUFBMzk2RjU4MzY1IC8qIFBydW5lUHVyZUxpdGVy
YWxTdGF0ZW1lbnRzLmNwcCAqLzsgfTsKKwkJNzYzNkU1NkFFOERGMjZEQTgzQUVDNUIzIC8qIE11
cm11ckhhc2gzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBBRTQ5NzU4NkU0NDYwNjIwRDE2MjYyQyAvKiBNdXJtdXJIYXNoMy5jcHAgKi87IH07CisJ
CTc2OERCNUVCQTk5NEU5NDBGMEY2QjM4QSAvKiByZW5kZXJlcl91dGlscy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3ODMwOTVCOEI0MERGNzgzRUVC
QjNBQTQgLyogcmVuZGVyZXJfdXRpbHMuY3BwICovOyB9OworCQk3Njk5N0RDMTU5NDQ2OUY0NkEw
MDRBQTQgLyogVmVydGV4QXJyYXlHTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBEN0JEQjQzMDVBQUJBMTEzQTk2MTE3QTcgLyogVmVydGV4QXJyYXlH
TC5jcHAgKi87IH07CisJCTc2Q0M2RjZGQkVGQkZCQ0FGNDUzODM5RSAvKiBSZXdyaXRlVW5hcnlN
aW51c09wZXJhdG9yRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMDhFRTY4NURDODcwMjAwNkYwQzc1RUM5IC8qIFJld3JpdGVVbmFyeU1pbnVz
T3BlcmF0b3JGbG9hdC5jcHAgKi87IH07CisJCTc3ODM2OTRBNjA5RDlERTE2RUY1QjRGRiAvKiBC
dWlsdEluRnVuY3Rpb25FbXVsYXRvckdMU0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMTBGQzNCMjBGNjM4MDFFN0NCRkZFQTc1IC8qIEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yR0xTTC5jcHAgKi87IH07CisJCTc4QzI2RjAzNDVFNEEyREJBRDkzODc4
OCAvKiBDb250ZXh0R0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTFDRDY5NTZFNEFCQzA3ODVGNjlENzFBIC8qIENvbnRleHRHTC5jcHAgKi87IH07
CisJCTc5NDk5QzExMjNBMTE0QjVENEI0RTJGRSAvKiBxdWVyeXV0aWxzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYyMDcwQUNBNjk5MDY5ODM4MzFE
RjQ0QyAvKiBxdWVyeXV0aWxzLmNwcCAqLzsgfTsKKwkJNzlCOTYzRUFEQkM3NTdGQjVDNTU0QzIw
IC8qIFN1cmZhY2VHTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBEQzg0OTQyOTU4OEYxQjEyRTc1NjFFMjYgLyogU3VyZmFjZUdMLmNwcCAqLzsgfTsK
KwkJN0FCOTQ2OTg4N0Y0MTU1MkMzMTcxNjcxIC8qIEJsaXRHTC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzBGOTM5NjMzMTU0NjhEQzZDNzUwNDMg
LyogQmxpdEdMLmNwcCAqLzsgfTsKKwkJN0FCQTVGMUI1QkExQjQ0NTA0OUE0RjRBIC8qIHF1ZXJ5
Y29udmVyc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gM0NBMEZCRjA3NzBERDg5MDRGNzQ5QTY3IC8qIHF1ZXJ5Y29udmVyc2lvbnMuY3BwICov
OyB9OworCQk3Q0VCOEZERjk0OTI1QTkwMjg5QzI3NDQgLyogU2hhZGVyTGFuZy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2OTVERTc4RUUyRDVCMzBG
MjYyODBGODMgLyogU2hhZGVyTGFuZy5jcHAgKi87IH07CisJCTdENTBERTRBNjlBMzJDRUJCMDZC
QTQ0OCAvKiBQYnVmZmVyU3VyZmFjZUNHTC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEI3MUQ5MDIxNDBBNkEzMTAyN0VEOTg3RiAvKiBQYnVmZmVyU3Vy
ZmFjZUNHTC5tbSAqLzsgfTsKKwkJN0U1MUZFNDNBRThDRjVFRTY3RDk3ODNGIC8qIFZlcnNpb25H
TFNMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFC
MDQ3NEY3Q0M2MEUzNDdDRkNEQTdBMSAvKiBWZXJzaW9uR0xTTC5jcHAgKi87IH07CisJCTdFODQ4
M0U1NDc3RkQxNjE3M0NGMDM5RiAvKiBWYWxpZGF0ZU11bHRpdmlld1dlYkdMLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2NDYzNUE1NkY3RjFERDJG
ODA5RDdCNSAvKiBWYWxpZGF0ZU11bHRpdmlld1dlYkdMLmNwcCAqLzsgfTsKKwkJN0VFQzk5MEQ4
RDU1QUM5MTA5N0EzRUQxIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjIzNjM3ODBGMDRBM0ZEOTM0RkEzQzBF
IC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovOyB9OworCQk4MEY4MUU4MDdEQjMwQjIwMDVGMTlB
NjQgLyogQ29tcGlsZXJOVUxMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE1MkIzRTBBQjUyNzU3MTAxODM3OTU3MCAvKiBDb21waWxlck5VTEwuY3Bw
ICovOyB9OworCQk4Mzk2NkRGMTY3REY3MUZGMDUzQTAzRjYgLyogU2FtcGxlckdMLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRDNzA1QzZBMDAwRTYx
NTIyNkY1QzJDNiAvKiBTYW1wbGVyR0wuY3BwICovOyB9OworCQk4NDk3RDJGODJFQURERDZGMzBG
ODMwMzQgLyogcmVuZGVyZXJnbF91dGlscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxMjg5MTcwRjgzMDYxOEIxMkY1ODczQTkgLyogcmVuZGVyZXJn
bF91dGlscy5jcHAgKi87IH07CisJCTg1NzBDQkVGRjNDNTJCRjRCRjEwMEUxQSAvKiBsaWJBTkdM
RS5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTE3
MTkyQ0ZFRURDOThFQzVGRERDOEE0IC8qIGxpYkFOR0xFLmEgKi87IH07CisJCTg2MTU4NEYxRjM1
REQ0NjI1RjVFMzJBRiAvKiBjb3B5X2NvbXBpbGVyX2RsbC5iYXQgaW4gQ29weSB0byAkKFNIQVJF
RF9JTlRFUk1FRElBVEVfRElSKS9hbmdsZSAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5QjlCRDgyMUQ3Qzg4MTA3RjA5REIyNzIgLyogY29weV9jb21waWxlcl9kbGwuYmF0ICov
OyB9OworCQk4N0NGNDRCNUI3OTg1RUU0MTdBRTUzRTIgLyogQnVmZmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNUNFNUUwQTBEMDg1QThEQzE2
NUIwQyAvKiBCdWZmZXIuY3BwICovOyB9OworCQk4OEU2NzhGMTZFRjQ2RjZEQTg5RDU4RjggLyog
bGliYW5nbGVfZ3B1X2luZm9fdXRpbC5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gREJENzVBOUI3RDhFNUYzQUE4NkZERUREIC8qIGxpYmFuZ2xlX2dw
dV9pbmZvX3V0aWwuYSAqLzsgfTsKKwkJODlDN0Q0NkM3N0ZEMkRCMzBGNzk2NzY4IC8qIEluZm9T
aW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVC
MkJDNzcyODEzM0I5Q0FDMjNEMDQ3RSAvKiBJbmZvU2luay5jcHAgKi87IH07CisJCTg5Q0Y5RjQ1
NjYzMjA3OTZGRUYzM0VBRSAvKiBJbnRlcm1Ob2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGOThFRDU5OTk0RDVBQzQ3ODFEREUyNCAvKiBJbnRl
cm1Ob2RlLmNwcCAqLzsgfTsKKwkJODlGQ0UyRjkzQ0E4NzYyMDRENzc3NTU2IC8qIEFycmF5Qm91
bmRzQ2xhbXBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNjEyMkYwNUNENDZDODIxRDI2M0VGRDcgLyogQXJyYXlCb3VuZHNDbGFtcGVyLmNwcCAq
LzsgfTsKKwkJOEE1QkU5NjQ0QTlBOENGMkYxQjUzMjc2IC8qIEluaXRpYWxpemVEbGwuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUFFOEM3MjQ1Q0RC
NTA4ODM1OEUyRkU1IC8qIEluaXRpYWxpemVEbGwuY3BwICovOyB9OworCQk4QjVDQjcxMUEyQ0Ey
NDFEMjA5NzAzRTkgLyogSW5pdGlhbGl6ZVZhcmlhYmxlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QTZGMEUxNTVEM0RERTQ1MTVDQUQ1NzggLyog
SW5pdGlhbGl6ZVZhcmlhYmxlcy5jcHAgKi87IH07CisJCThDMUQ0NDIxNzg3NTZFN0M1ODJFN0Y1
MiAvKiBTdXJmYWNlSW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Qzk2Q0RBNThDQzg1OTZEQzUyMDdFQzggLyogU3VyZmFjZUltcGwuY3BwICov
OyB9OworCQk4QzQ0OTU1ODZENUVEQUVERTc2RUNCRkYgLyogbGliR0xFU3YyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE2NjUwNzg4NjA1MTBGRkU3
OTU5QjRBRCAvKiBsaWJHTEVTdjIuY3BwICovOyB9OworCQk4RUZDQURBREZGQTU1N0MxNEQwMjI4
NDQgLyogVHJhbnNsYXRvckVTU0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQzM3MEExREI0RTEyRkM3MEZDQkU3MEI2IC8qIFRyYW5zbGF0b3JFU1NM
LmNwcCAqLzsgfTsKKwkJOTIyMTlFRDA5NDAyMzc1NjU0RTU5QTM5IC8qIGVudHJ5X3BvaW50c19n
bGVzXzJfMC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwODM0MjBGNTQ4QUUzNzIwMUY1QTk0MUIgLyogZW50cnlfcG9pbnRzX2dsZXNfMl8wLmNwcCAq
LzsgfTsKKwkJOTI5QjAxRDI5OTZEMjBDRDQxRDBCNzQ2IC8qIE91dHB1dEdMU0wuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRThGRjAzQUVFQjRBQkZD
MEUyQ0QxNDc3IC8qIE91dHB1dEdMU0wuY3BwICovOyB9OworCQk5MkY4M0YxMEM0MEJFMUYwODMz
RTBBRjggLyogdmFsaWRhdGlvbkVTMy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjRFMTlFMTI2RjM1NzQ5MDNDMThDMjMgLyogdmFsaWRhdGlvbkVT
My5jcHAgKi87IH07CisJCTk2MkI2MTdEM0YwRTUwQTlBRDY1RDhGOSAvKiBDb250ZXh0U3RhdGUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEM0RTIx
RTkzOTgyREVDQjUwRDlBMjkwIC8qIENvbnRleHRTdGF0ZS5jcHAgKi87IH07CisJCTk2MkYyNjI5
NjQ3QTUyNzIwMjhGRkE0RSAvKiBpbWFnZWZvcm1hdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlBMzA1OTA3OTRGNzk1ODUyOUJCN0RGIC8qIGlt
YWdlZm9ybWF0cy5jcHAgKi87IH07CisJCTk3OTU2RkM3NDJCOEQxQjI3OUQ4REM0QSAvKiBCcmVh
a1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxNTg4QTE3QjYzN0ZFQzlBNjk1OUIwIC8qIEJyZWFr
VmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5jcHAgKi87IH07CisJCTk4MEYwOTBDNTc5RTYx
OTJDODdBQzM4OSAvKiBlbnRyeV9wb2ludHNfZWdsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVFNTRCRjUxMUUyQTVCRUQ5RDc4OTMxOSAvKiBlbnRy
eV9wb2ludHNfZWdsLmNwcCAqLzsgfTsKKwkJOThBNzBFRUY1MTRDQ0I4MTM1QkIzNzMwIC8qIEZv
cm1hdF90YWJsZV9hdXRvZ2VuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IERENDk4QzNCQzUzRDhEQzYyQkM5NEU3QyAvKiBGb3JtYXRfdGFibGVfYXV0
b2dlbi5jcHAgKi87IH07CisJCTk5MzI2NjlGMDZFNTg2MzU2QjZGNTk3NyAvKiBEaXNwbGF5LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ4QTZGNDg2
OURGMUQxNjcxRkJFMzZGMyAvKiBEaXNwbGF5LmNwcCAqLzsgfTsKKwkJOUE3RjIwNEI5NjYzNUUx
QkQxNDlEQUUyIC8qIEV4dGVuc2lvbkdMU0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDVEREI5QUU3N0Q3M0E0MjUxOEVENzA1IC8qIEV4dGVuc2lv
bkdMU0wuY3BwICovOyB9OworCQk5QjBDNjExMUNCMjk5RDM1RTU4RDdENTggLyogVG9rZW4uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREQ0QjA1OUNG
QzY3OURCQUQyQ0Q2NDgxIC8qIFRva2VuLmNwcCAqLzsgfTsKKwkJOUJCRTEyQjFGMzlDRkYyQzQ1
QTU3RDhGIC8qIGVudHJ5X3BvaW50c19nbGVzXzJfMC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODM0MjBGNTQ4QUUzNzIwMUY1QTk0MUIgLyogZW50
cnlfcG9pbnRzX2dsZXNfMl8wLmNwcCAqLzsgfTsKKwkJQTEyNkE3NjI1QURFQzkxNThDMDg4QzI3
IC8qIEZsYWdTdGQxNDBTdHJ1Y3RzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDgwOURBOUY4QkM5MTA2RDUwNzNCMjQyNyAvKiBGbGFnU3RkMTQwU3Ry
dWN0cy5jcHAgKi87IH07CisJCUEyMTEzRUNGNUIxRTVGNTE4OUJEMEU0MCAvKiBGcmFtZWJ1ZmZl
ckdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERG
NkI4NzUzNkMzODBERjE5MUZCMkYzOCAvKiBGcmFtZWJ1ZmZlckdMLmNwcCAqLzsgfTsKKwkJQTI1
NzlCRjM2Q0NCQzc5NUFFNEYzQzYzIC8qIFBvb2xBbGxvYy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFODQ3OTIwMzdGNEE2MTVENjYyM0NDM0IgLyog
UG9vbEFsbG9jLmNwcCAqLzsgfTsKKwkJQTVDRjYyODFBMTAyMEI1RTIzMEY3MkQ3IC8qIFRocmVh
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NUVG
RjlFNkVDNzYwMzJDNjRDRkQwMEMgLyogVGhyZWFkLmNwcCAqLzsgfTsKKwkJQTZERURGNzY4NzYw
NkUwODcyQkRBMTczIC8qIFVuaWZvcm0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDA1OTFDMzM2ODFEQTVBQkE0RjFGQkVDIC8qIFVuaWZvcm0uY3Bw
ICovOyB9OworCQlBOEFFOTM4Qjk1MEVERENCRTE0NTM2MEMgLyogU2FtcGxlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RDBFOTU2NEVGRDAwNTRF
RTEzRTQxNEMgLyogU2FtcGxlci5jcHAgKi87IH07CisJCUFCRDYzQkYxMkQxNDUzQ0NBQjYxNEI2
QyAvKiBFeHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE0NTA0OEVGNzE3MTE1QTZDQjZFNTBDIC8qIEV4
cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucy5jcHAgKi87IH07CisJCUFFMDkwMjY0ODZBRjY4RTgx
RTRGOEM2MCAvKiBnbHNsYW5nX3RhYi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3RThENjNBNjY5NjA0RjRBNjc1NkM2OTkgLyogZ2xzbGFuZ190YWIu
Y3BwICovOyB9OworCQlBRTEzNjI1OTU5RTQzMDI3MjI1NTQwMjAgLyogRGlhZ25vc3RpY3NCYXNl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5QUQ5
NUVCNkI3MTc5MjVENjQxQzRBRSAvKiBEaWFnbm9zdGljc0Jhc2UuY3BwICovOyB9OworCQlBRTM1
RkQzQUMyNzExMzA1RDJGQzk2NzQgLyogZm9ybWF0dXRpbHNnbC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QTVCQ0NDMUVGQTFDOUEzMUE2QzQwMTYg
LyogZm9ybWF0dXRpbHNnbC5jcHAgKi87IH07CisJCUIxNkYzQkVGQzBGRDAyNDEzOTQ4MjBFMiAv
KiBpbnRlcm1PdXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY0NTE3QUZDOTQyQzU0QkIwMzhBOUI1IC8qIGludGVybU91dC5jcHAgKi87IH07CisJ
CUIxODFDNDQyQTMyNzYxNEQxQzg0NEYxQiAvKiBlbnRyeV9wb2ludHNfZWdsLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVFNTRCRjUxMUUyQTVCRUQ5
RDc4OTMxOSAvKiBlbnRyeV9wb2ludHNfZWdsLmNwcCAqLzsgfTsKKwkJQjFBRTkzQzU1QjMxNDk2
NTlCN0RFOThCIC8qIGxpYnByZXByb2Nlc3Nvci5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EzNTE2Qzg4REE2RjE4QThENzM3RTBCIC8qIGxpYnBy
ZXByb2Nlc3Nvci5hICovOyB9OworCQlCMzMyOUExRkNDRDE1OUQ4NDdGQ0ZBNzcgLyogSU9TdXJm
YWNlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0MUIyREUwMDMyQTI5RTQ3MzMzRDAxMCAvKiBJT1N1cmZhY2UuZnJhbWV3b3JrICov
OyB9OworCQlCM0Q5NTc4OTBCQzU2RUNDRUEyNjhCQUMgLyogVHlwZXMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjMwNTFERTAwQTM0MUQzMjRGQTE3
MTQ0IC8qIFR5cGVzLmNwcCAqLzsgfTsKKwkJQjYwOUU0MDFENEE4MjAyODdBNkU4QkYxIC8qIERp
c3BsYXlDR0wubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFNkRFRjAxQThCNTFCRDYwQkFBNjY2NTggLyogRGlzcGxheUNHTC5tbSAqLzsgfTsKKwkJQjdC
MkQzMTY1MUQyMkUzQTM5QTUyQzBGIC8qIFJlbW92ZUludmFyaWFudERlY2xhcmF0aW9uLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyM0RCNUMwQTJD
Q0Q0QjYyRUUyNjg5RCAvKiBSZW1vdmVJbnZhcmlhbnREZWNsYXJhdGlvbi5jcHAgKi87IH07CisJ
CUI5RjBCRDU4MUZEQUFEMjRDRjlBQzdDQiAvKiBmb3JtYXRfbWFwX2F1dG9nZW4uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzg5NEZCOEEyMjA4NUU5
RjA0QzZGMTEyIC8qIGZvcm1hdF9tYXBfYXV0b2dlbi5jcHAgKi87IH07CisJCUJBMDU2MENBRkQ4
OEE4MjY0RkE4REMwOCAvKiBSZW1vdmVQb3cuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRUI2RTEzMzgzMDQ2NDc0MjE4QkQxODk0IC8qIFJlbW92ZVBv
dy5jcHAgKi87IH07CisJCUJBMTgyRDMzQTc3M0UzMTA5MDBCQTU1MCAvKiBGZW5jZU5WTlVMTC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNDA1QTlB
RTE5MEFGNjQwRERCRUU1RjQgLyogRmVuY2VOVk5VTEwuY3BwICovOyB9OworCQlCQTc1NUVBODU1
MDZCQjMxNjAzM0ZBQUYgLyogRmVuY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRUNCREVDRTc0QzNDNDhDMDJCNjZEQjY4IC8qIEZlbmNlLmNwcCAq
LzsgfTsKKwkJQkFDMDQ4OTkzODc1RDU3MUM3NkVFMkU2IC8qIFNoYWRlckdMLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFEMkZCMTJEQjYxNDQzRjY1
NDg4QTAwMSAvKiBTaGFkZXJHTC5jcHAgKi87IH07CisJCUJCOEY4QkY5OEI4RTc3Qzk0NUQwQjA0
RCAvKiBWYWxpZGF0ZUxpbWl0YXRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEVDNTZDMTE3NjlDOTUwMzZFNEVENDczQiAvKiBWYWxpZGF0ZUxp
bWl0YXRpb25zLmNwcCAqLzsgfTsKKwkJQkJGNDkxNUI0NTVDRkNCN0JFQjI4MkMxIC8qIEJ1ZmZl
ckdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
OUIwMkQ5MEJFMTA5OUY3MzdDNDcwQSAvKiBCdWZmZXJHTC5jcHAgKi87IH07CisJCUJDNEExRDk0
QTkzMDg1N0QwQTU3ODU2MyAvKiBDb2RlR2VuLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCMTRGNkY1RDlDQjVBQkE0NjM4OTMzQSAvKiBDb2RlR2Vu
LmNwcCAqLzsgfTsKKwkJQkNGMTREN0U2ODkwM0RBMEIzNTdDM0FBIC8qIGNvbW1pdF9pZC5weSBp
biBDb3B5IHRvICQoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL2FuZ2xlICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0RjdCMzBFQzFCRkFBQzYzREM0MzhBRCAvKiBjb21taXRf
aWQucHkgKi87IH07CisJCUJEOENCQ0FDREY4RjRBMTlCMDIxMDU5QiAvKiBJbWFnZUluZGV4LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZGMDg3NDEw
OTlCMkU1NUJFNEM5QkRCRSAvKiBJbWFnZUluZGV4LmNwcCAqLzsgfTsKKwkJQzE5NDQyMTI5NTA3
QjBGOURBM0UzREQ1IC8qIEJ1ZmZlck5VTEwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODgzMDdDQjJGREM1QkQ2NjhBQTFGMzhEIC8qIEJ1ZmZlck5V
TEwuY3BwICovOyB9OworCQlDMkZDNEIwQjMxMTI3QkJBQTdFMTVERkUgLyogVmFyaWFibGVJbmZv
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxMTIz
OTI3MzMxOEMzNkE2QkRDQUFDMiAvKiBWYXJpYWJsZUluZm8uY3BwICovOyB9OworCQlDNDEzRUQx
QzdCQ0E5NTU3ODI0NTI3NDMgLyogSW50ZXJtZWRpYXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIzODE1NzdGNzlEQzgzNzc5NzFCQzM5MCAvKiBJ
bnRlcm1lZGlhdGUuY3BwICovOyB9OworCQlDNEM5NUFGNjZFNzEzMzEyRTlENkRGOUYgLyogVHJh
bnNsYXRvckdMU0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTgyMzlGQTBFQUVEMTc5NkYzRjRGRkZFIC8qIFRyYW5zbGF0b3JHTFNMLmNwcCAqLzsg
fTsKKwkJQzY5ODc0RkQzNTZENjVCMkQ1OEI4QjUyIC8qIEZsb2F0MTZUb0Zsb2F0MzIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk2NjQyRTRGNzNE
QzVDNkNEMTdBOTQ2IC8qIEZsb2F0MTZUb0Zsb2F0MzIuY3BwICovOyB9OworCQlDNzA4MTI5NDI4
MDgzREI5MTZERDdDMzEgLyogUHJvZ3JhbU5VTEwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjc5MDlGNkU5MUM2M0FFMDEyOEU5MDcyIC8qIFByb2dy
YW1OVUxMLmNwcCAqLzsgfTsKKwkJQzdFQTY4OEI2MjYxN0Q0OTY2NERENDc4IC8qIGxpYmFuZ2xl
X2ltYWdlX3V0aWwuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMzFGOTk3MUNFQzc3QkFDNjMzREY2OCAvKiBsaWJhbmdsZV9pbWFnZV91dGlsLmEg
Ki87IH07CisJCUM4MjIwNzE2MTNGMDg4RTEwNkNFRUMwRCAvKiBQcmVwcm9jZXNzb3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjM1MEQ0MkU3MjU2
OEY4NkE0NjFFNDlCIC8qIFByZXByb2Nlc3Nvci5jcHAgKi87IH07CisJCUM5NjU5QjFFM0Y4NkUy
OEM1ODJFQjQwNyAvKiBSZXdyaXRlRG9XaGlsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMDg0NUNERTY0NDUyRDVCN0I3MjE5NzcgLyogUmV3cml0
ZURvV2hpbGUuY3BwICovOyB9OworCQlDOTdBQTFEMDc4QUZEOUMwRTE3NDgzMkYgLyogdGxzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZDRDg0OTlD
N0NBRUNENzE3NzM4QkEwQyAvKiB0bHMuY3BwICovOyB9OworCQlDQUEzOTkzMTUyQzNBQzg0ODdG
Mjk3OTUgLyogbGliRUdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZEMzEyNkZGOTNBNDIwNEYzRUFGQTk5NSAvKiBsaWJFR0wuY3BwICovOyB9Owor
CQlDQUU4ODAzMkQwRDgzNTNCRDk1RkIxMjcgLyogQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDMzMjRDQjVB
NEM5OUVGMUM4MzBCNTFFIC8qIENvcmVGb3VuZGF0aW9uLmZyYW1ld29yayAqLzsgfTsKKwkJQ0My
M0Q4RjM4Q0E1NzVDMzkwMkZBNkNBIC8qIExleGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4NzNFQThCRUE4QzNCNDY0QUY4QjRDMSAvKiBMZXhl
ci5jcHAgKi87IH07CisJCUNFM0YyNTlGRDQ3N0Y0QTQ4MzIxNkI0RSAvKiBEZWZlckdsb2JhbElu
aXRpYWxpemVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxRkUxMzU2REExNkNCM0M1OTg1RkM4QTMgLyogRGVmZXJHbG9iYWxJbml0aWFsaXplcnMu
Y3BwICovOyB9OworCQlDRTg0M0QyMDlBMjJEMzU3ODU5QjQ3NzUgLyogZW50cnlfcG9pbnRzX2ds
ZXNfMl8wX2V4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NjMwODZGRjdBNzExMzQ5NDk4NkIyQkYgLyogZW50cnlfcG9pbnRzX2dsZXNfMl8wX2V4
dC5jcHAgKi87IH07CisJCUQwOTc4MUU2N0FFRUJGNjIwNjZDNzU4NiAvKiBWYWxpZGF0ZVN3aXRj
aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzREUz
MTA1OTlGRTBENTk0QzI3NEQyRTEgLyogVmFsaWRhdGVTd2l0Y2guY3BwICovOyB9OworCQlEMTFE
RUZFQjQ2RkUzMDUwMzgyRDM4MDUgLyogZW50cnlfcG9pbnRzX2VnbF9leHQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjc0MEZDMDlCMEYxQ0E5OUI5
NTJCMDMyIC8qIGVudHJ5X3BvaW50c19lZ2xfZXh0LmNwcCAqLzsgfTsKKwkJRDE2OTNBMTc1NEFE
ODZBMDVCNzZGQTVFIC8qIFBydW5lRW1wdHlEZWNsYXJhdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkNCMUFCMzUyNERBOEJCOENGMjcxRTY4
IC8qIFBydW5lRW1wdHlEZWNsYXJhdGlvbnMuY3BwICovOyB9OworCQlEMThFRTkzRjlDOTc1RkVB
MDdCQjkwNUYgLyogTG9nZ2luZ0Fubm90YXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUY0MzdCODE3ODM3RjFBRUEyMjRFMDAgLyogTG9nZ2lu
Z0Fubm90YXRvci5jcHAgKi87IH07CisJCUQxQThEMzkyNjhBQzQxNTNDMzA0RjY4RCAvKiBDb25z
dGFudFVuaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDZFQjI2NTQzMTgyQzUwM0EzNkNFNzBENyAvKiBDb25zdGFudFVuaW9uLmNwcCAqLzsgfTsK
KwkJRDFDRkRCMkI4QzYwODAzRUE1QjVDQUI4IC8qIENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjZFRDY2Q0MwMzc0QzkzRDI1QTdBOUM2
IC8qIENvbnRleHQuY3BwICovOyB9OworCQlEMUUwOEY3RkFEOURCRDdFQTJFQjZBQzAgLyogUHJv
Z3JhbUdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDI0QzIwNTJCOUMwRUQyMkNBMTY1OTUyMCAvKiBQcm9ncmFtR0wuY3BwICovOyB9OworCQlEM0Yz
RDE2MDJCMEVDMDBCMDQ4QTcwNjUgLyogU2VhcmNoU3ltYm9sLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRFNzQ0QzM1MTI3QjgxREE1MTZFQ0M1OSAv
KiBTZWFyY2hTeW1ib2wuY3BwICovOyB9OworCQlENEFBOTMwOTUxMUFBQzMxRUQwM0U1OTcgLyog
Q29jb2EuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE1N0YzN0JGRkY4NzhBQUZDQTNBODMyIC8qIENvY29hLmZyYW1ld29yayAqLzsg
fTsKKwkJRDUxMTEyMkY0QjJCNDIzMDU2OTI2NjVEIC8qIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDU1
REYyQjYxQTNCODYxNDc2QTQ2NURFIC8qIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIuY3BwICov
OyB9OworCQlENzkwRDgzMERGQUJFMEM4QkVBRTMxMkEgLyogUGF0aE5VTEwuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjgwOUI2N0EwQTg0QzQ3RDYw
NzU3RjlFIC8qIFBhdGhOVUxMLmNwcCAqLzsgfTsKKwkJRDc5RUM0MjI4RjlFODA4MTI3QzhGMTI0
IC8qIFF1YWxpZmllclR5cGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMxM0E5RjhGQjFEQTkxMDdFQkMzRTIwNiAvKiBRdWFsaWZpZXJUeXBlcy5j
cHAgKi87IH07CisJCUQ5QURCNDZBN0MzOUFDMDkzNDkwMDg5QSAvKiBUZXh0dXJlTlVMTC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1M0FBNzc3MkUw
REE3MDlDMjY1Njg5QUQgLyogVGV4dHVyZU5VTEwuY3BwICovOyB9OworCQlEOUY5NzJCQUJBODM4
RjFBODJEN0Y1OUUgLyogTWFjcm9FeHBhbmRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyN0YxNTA1QThENjJFN0Q0ODg4MjNERjcgLyogTWFjcm9F
eHBhbmRlci5jcHAgKi87IH07CisJCURBQjcwOUUxQUJGRjU1RjdFMjQ3NjlCNCAvKiBTaGFkZXJW
YXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYz
RjY5QjA5MzQzODZDQUFFMzIwODFEOCAvKiBTaGFkZXJWYXJzLmNwcCAqLzsgfTsKKwkJRENFN0Y3
NDNBMDQ1RTI5RUM0QjhFQjVCIC8qIERlYnVnLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMUFFNkQ0QkY0MEY0RTE0OUU5QzE1OCAvKiBEZWJ1Zy5j
cHAgKi87IH07CisJCURGRjM3NEM3RUI2NzNDMkZENTE5NDQzOSAvKiBnbG9iYWxfc3RhdGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkM5MzFDNUY0
RkFBQUQzRjJCQTk1NzdGIC8qIGdsb2JhbF9zdGF0ZS5jcHAgKi87IH07CisJCUUwOUM0Q0VBRjRF
QkQxOEM3QjI5MzAwNiAvKiBlbnRyeV9wb2ludHNfZ2xlc18zXzAuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjRCNjkyRjM2NUEwQkRDODUxNUVFRTYz
IC8qIGVudHJ5X3BvaW50c19nbGVzXzNfMC5jcHAgKi87IH07CisJCUUyMzEyODM0MjI0Q0E1ODhG
RkM2M0MwRiAvKiBEZXZpY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjJFQ0RDMDA5NDI5Q0M5Q0U3RkZBRjJGIC8qIERldmljZS5jcHAgKi87IH07
CisJCUUzQUYxNzAwMTE3NDZDNUJFMDhGQ0I1MSAvKiBDb250ZXh0TlVMTC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODBDREM5RjE2QUVBQkI2M0U4
NjIxMDAgLyogQ29udGV4dE5VTEwuY3BwICovOyB9OworCQlFNDk1RTJBQjE4MTk0RkM1MzA4ODM1
MzIgLyogc3lzdGVtX3V0aWxzX21hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwNjMzNkJEQzlBMDVGQzZBMDI3MTcxQjUgLyogc3lzdGVtX3V0aWxz
X21hYy5jcHAgKi87IH07CisJCUU1MDZBRDBGQkQ0QzUxMkIwRUU4QzAzQyAvKiBGdW5jdGlvbnNH
TC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Rjkw
OEUxNDIwQjYxRjNGMjBCQjYzMzcgLyogRnVuY3Rpb25zR0wuY3BwICovOyB9OworCQlFNTMzNDlD
MTZFRTBBRTg0MEMzOEM2QkMgLyogTWFjcm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTgzQkE1RDE4NjQ0MEI3RDQ5MUE4RTU4IC8qIE1hY3JvLmNw
cCAqLzsgfTsKKwkJRTYxODRFOEM4OENDNzA3RUY0QTVDMTEwIC8qIGxvYWRpbWFnZV9ldGMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDU3OEM4QkM1
ODdBNjFEQzVFNTNCQzM1IC8qIGxvYWRpbWFnZV9ldGMuY3BwICovOyB9OworCQlFNkNFN0E5MDk0
RDlBRjlDOTc1RTYwQjcgLyogdmFsaWRhdGlvbkVTLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwMzg4QTc2QkQ0MkUxNTVCMTRDMjIyMiAvKiB2YWxp
ZGF0aW9uRVMuY3BwICovOyB9OworCQlFNkUwMDg3Qzg5QjdEMzA2NDQ3RDcyQTggLyogRGlhZ25v
c3RpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RUJERDdFRDZEQUVEN0I3MkQzRjk3MzE4IC8qIERpYWdub3N0aWNzLmNwcCAqLzsgfTsKKwkJRTgz
Qjc1MDY2RDMyNEYzQjlGMUZBOEZFIC8qIEFkZEFuZFRydWVUb0xvb3BDb25kaXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RDNjlBRjNGOUM1
ODI2NzIzQ0U4MkY3IC8qIEFkZEFuZFRydWVUb0xvb3BDb25kaXRpb24uY3BwICovOyB9OworCQlF
Q0REQzA2MTkzNDEzMDQ5QjA0MDNCMjEgLyogUmVuZGVyZXJHTC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdCQzM4N0E0ODBDRkU3OTdBRUY2NUEg
LyogUmVuZGVyZXJHTC5jcHAgKi87IH07CisJCUVENzI5Nzc2MkY5QTQzMUNFRjIxRTU2OCAvKiBP
dXRwdXRFU1NMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU3NTA1ODhDRDM4NkUzMzVEQUVDMkU3MyAvKiBPdXRwdXRFU1NMLmNwcCAqLzsgfTsKKwkJ
RUUwNEUzMDAzNEQyMjA2RTI3QkVDNDU0IC8qIFJlbmRlcmJ1ZmZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNkVFNUNENUExRjIzMEI3MUE3RTFB
NTEgLyogUmVuZGVyYnVmZmVyLmNwcCAqLzsgfTsKKwkJRUVGODNBREZCMzRCNTI5MUVCRUVGOEJB
IC8qIFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEOTYzNUNDN0RDQzU2OTlCQjE4ODRGRCAvKiBTdGF0ZS5jcHAgKi87IH07CisJCUYwNEZE
MTA2QkE3RkNFNTc1M0E2QkQ2MiAvKiBDb21waWxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTk2NUY1MkIxNEExNDkzOTQ0RUY0QzMgLyogQ29t
cGlsZXIuY3BwICovOyB9OworCQlGMUZCNkUyOTlEMTMxNkJBMkMyMjBGNDEgLyogRmVuY2VTeW5j
TlVMTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MzJCODgyRTcwREJBRDI1MkMwMkVGMjYgLyogRmVuY2VTeW5jTlVMTC5jcHAgKi87IH07CisJCUYz
NzY2REI5NTBFRDUyNUE5QTMyNThCNyAvKiBjb3B5aW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUJCMEUxQzFFQURDRTFGOTQzODM1OEEzIC8q
IGNvcHlpbWFnZS5jcHAgKi87IH07CisJCUY0MEQyOTRFRUEzRUFDNzc0MEIxMUY0MyAvKiBGZW5j
ZU5WR0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUQwQTc4OTQ3NkI5QzZCNzQwMzgwNEExIC8qIEZlbmNlTlZHTC5jcHAgKi87IH07CisJCUY1MDYw
QjZGRUE4OTE3MDAwQ0I5RjUwRCAvKiBTdXJmYWNlTlVMTC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MDAwNzY0NzIzMUQwQkU4NThDMzhDODAgLyog
U3VyZmFjZU5VTEwuY3BwICovOyB9OworCQlGNTE0MEM1RUU5NUYzQUIyOEEzNTVGMUIgLyogUXVl
cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1
MUYwRTM4MUVERDQ2NDg0OTk0OUJGIC8qIFF1ZXJ5LmNwcCAqLzsgfTsKKwkJRjU3Njk4NTc3RjQz
OTZGMDBFQTVDMEExIC8qIHZhbGlkYXRpb25FR0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0Y0NDA1NTg0RjY2OUJBQTJFMkIxODE5IC8qIHZhbGlk
YXRpb25FR0wuY3BwICovOyB9OworCQlGNUExRDI2RDJEQjRCREY3NjJFMjBENjcgLyogRGlyZWN0
aXZlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDAyM0VGNUU0QjEwQzM4NjBEOTU1NkE3OCAvKiBEaXJlY3RpdmVQYXJzZXIuY3BwICovOyB9
OworCQlGNjU0NTVBMEQ0OTBFQkJGMDk4QzAyQzUgLyogSW50ZXJtVHJhdmVyc2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI3MjA2OUJGNUEzMTA4
Mzc5OTBGNTU2IC8qIEludGVybVRyYXZlcnNlLmNwcCAqLzsgfTsKKwkJRjZDOTJENzRGMTVBRThG
MDAwODNEQkZDIC8qIFZhbGlkYXRlTWF4UGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNjZGOUZFQjA0NDFFREYzMzE2NEYwMDggLyog
VmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmNwcCAqLzsgfTsKKwkJRjdBOTE3NTQ3MDU5MEExNTA5RUMx
NzJFIC8qIEZyYW1lYnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJGRjQzQzI2N0Y0MkU0REZFMjcyODdENCAvKiBGcmFtZWJ1ZmZlci5jcHAg
Ki87IH07CisJCUY3QjZGRUM2NjgwNzZCN0ZCQkY4REUyOCAvKiBWZXJ0ZXhBdHRyaWJ1dGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDExRDE0OTMz
NTg4ODc0NjI2MzQyREVEIC8qIFZlcnRleEF0dHJpYnV0ZS5jcHAgKi87IH07CisJCUY3RUEyODEz
ODg1RkY4OEFDQTk5Mjg1RiAvKiBWYXJpYWJsZVBhY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MkUwRTcwOTc3RkM3NDUwMEI3MjZEMDUgLyog
VmFyaWFibGVQYWNrZXIuY3BwICovOyB9OworCQlGOTY5REQ3NTZBNkZERkU0ODQ0NjQzMkIgLyog
ZGVidWcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkM2RTcwNEYzMkQ0ODhENUExOTU5RTJFIC8qIGRlYnVnLmNwcCAqLzsgfTsKKwkJRkI2MjU4Q0Q2
QjNFOTg0MTk5RTJCNTAyIC8qIFBhcnNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MEFGNEY3NUFGNzZCODA0M0EyOUU0MkYgLyogUGFy
c2VDb250ZXh0LmNwcCAqLzsgfTsKKwkJRkU3NjY4MTA3MjhCQzU4NzI5NkRGQzQzIC8qIENvbnRl
eHRJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA5MzJCNzg4QkVDNTFERjZDQTZFM0JENSAvKiBDb250ZXh0SW1wbC5jcHAgKi87IH07CisJCUZG
OEY2M0Q5QUY3MzFBNjY2RDI4RkZEMSAvKiBsaWJFR0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTI2RkY5M0E0MjA0RjNFQUZBOTk1IC8qIGxp
YkVHTC5jcHAgKi87IH07CisvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKworLyogQmVn
aW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KKwkJMENDMTA1QzM0QTUyRDQ1NjAw
NDU4RUZBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRh
aW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDk2ODYwMDhBQjBCQTI4RkMyMzk1
RDlGMCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVH
bG9iYWxJRFN0cmluZyA9IDgwNTUxQ0Q3RUIyNDBGMDlGNzU1REFDMDsKKwkJCXJlbW90ZUluZm8g
PSBjb21taXRfaWQ7CisJCX07CisJCTBFMTA2NDlDMjkwRkVBN0RGQjQ3QzcyOCAvKiBQQlhDb250
YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJ
CQljb250YWluZXJQb3J0YWwgPSA5Njg2MDA4QUIwQkEyOEZDMjM5NUQ5RjAgLyogUHJvamVjdCBv
YmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAy
N0I0MzZDN0NFRjkzNzg4OTQ2NDExREU7CisJCQlyZW1vdGVJbmZvID0gbGliRUdMX3N0YXRpYzsK
KwkJfTsKKwkJMEVEQkQ5MkVDNkE2QTFEM0QxODlCNDU2IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBv
cnRhbCA9IDk2ODYwMDhBQjBCQTI4RkMyMzk1RDlGMCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJ
CXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDZEN0U2MzMyOEY4NzM4
NEZGMzkzQUEwQjsKKwkJCXJlbW90ZUluZm8gPSBsaWJBTkdMRTsKKwkJfTsKKwkJMTE3RUJBM0NF
NDkzRDdDNzdDN0YyMjdBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9
IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDk2ODYwMDhBQjBC
QTI4RkMyMzk1RDlGMCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJ
CQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDgwOTVGRjY1NDMwRjM2NjZENjU4N0Y3RjsKKwkJCXJl
bW90ZUluZm8gPSBsaWJBTkdMRV9yZW5kZXJlcl9jb25maWc7CisJCX07CisJCTI2ODg2Q0NENDVC
RDMyRUI2MDQzMjZBQSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQ
QlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSA5Njg2MDA4QUIwQkEy
OEZDMjM5NUQ5RjAgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJ
cmVtb3RlR2xvYmFsSURTdHJpbmcgPSAxN0Y4M0U5NjQ5OEI1MDBCNzdEMzcxMTg7CisJCQlyZW1v
dGVJbmZvID0gYW5nbGVfaW1hZ2VfdXRpbDsKKwkJfTsKKwkJM0I3NTQ0RUNDNTlBNzg1MTNDQzRG
NDM5IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5l
ckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDk2ODYwMDhBQjBCQTI4RkMyMzk1RDlG
MCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9i
YWxJRFN0cmluZyA9IDc5MkFCRjQ4ODRBOEZEQUU4MTY5MERERTsKKwkJCXJlbW90ZUluZm8gPSBh
bmdsZV9jb21tb247CisJCX07CisJCTQ3RTFFRjNFRENFMERERTM0OTk1MTg3QiAvKiBQQlhDb250
YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJ
CQljb250YWluZXJQb3J0YWwgPSA5Njg2MDA4QUIwQkEyOEZDMjM5NUQ5RjAgLyogUHJvamVjdCBv
YmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA4
MDU1MUNEN0VCMjQwRjA5Rjc1NURBQzA7CisJCQlyZW1vdGVJbmZvID0gY29tbWl0X2lkOworCQl9
OworCQk2OTJGNTIyOTU3RTRGMDIyNDE2RjAyNkIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICov
ID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFs
ID0gOTY4NjAwOEFCMEJBMjhGQzIzOTVEOUYwIC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJv
eHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNTVFNzAxRDQ4RDZGNzVGREUw
RkI1Qjg5OworCQkJcmVtb3RlSW5mbyA9IGNvcHlfc2NyaXB0czsKKwkJfTsKKwkJNzUxQzlDRUY4
NDA2RkZEMjY5REQyNTVCIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9
IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDk2ODYwMDhBQjBC
QTI4RkMyMzk1RDlGMCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJ
CQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDgwNTUxQ0Q3RUIyNDBGMDlGNzU1REFDMDsKKwkJCXJl
bW90ZUluZm8gPSBjb21taXRfaWQ7CisJCX07CisJCTc1NUEyOUYxQjIxM0RBQTExMzc3Mzc5NyAv
KiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVt
UHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSA5Njg2MDA4QUIwQkEyOEZDMjM5NUQ5RjAgLyog
UHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURT
dHJpbmcgPSAxRjg4Q0RFQjQ0RTdDNzFDMjgyRkE5NzU7CisJCQlyZW1vdGVJbmZvID0gdHJhbnNs
YXRvcjsKKwkJfTsKKwkJN0EzMUM4MDE0RUIxOEUxOTJBRUUwMUEwIC8qIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRh
aW5lclBvcnRhbCA9IDk2ODYwMDhBQjBCQTI4RkMyMzk1RDlGMCAvKiBQcm9qZWN0IG9iamVjdCAq
LzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDU1RTcwMUQ0
OEQ2Rjc1RkRFMEZCNUI4OTsKKwkJCXJlbW90ZUluZm8gPSBjb3B5X3NjcmlwdHM7CisJCX07CisJ
CTdBNEFCODgxMjdEOEMxRjkwQkVBREY2RSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7
CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSA5
Njg2MDA4QUIwQkEyOEZDMjM5NUQ5RjAgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5
cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA4MDk1RkY2NTQzMEYzNjY2RDY1ODdG
N0Y7CisJCQlyZW1vdGVJbmZvID0gbGliQU5HTEVfcmVuZGVyZXJfY29uZmlnOworCQl9OworCQk4
NDM3QkE3ODhDMEU5MjI4NzY1NTZDQzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewor
CQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gOTY4
NjAwOEFCMEJBMjhGQzIzOTVEOUYwIC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBl
ID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gQzcwMTI4NDVDNUZFMzlBQjA4NEEzMkQ4
OworCQkJcmVtb3RlSW5mbyA9IGFuZ2xlX2dwdV9pbmZvX3V0aWw7CisJCX07CisJCThGMUVBOEVG
OTMwRjk0QjBEOUIxOEQ4QiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2Eg
PSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSA5Njg2MDA4QUIw
QkEyOEZDMjM5NUQ5RjAgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOwor
CQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA3NDk4MTk0NEUxRkI2REQ3NjJBMDdEM0Y7CisJCQly
ZW1vdGVJbmZvID0gbGliRUdMOworCQl9OworCQk5MkJDNTJEMUExREQ0NDk2OERGQzY4MEUgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVBy
b3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gOTY4NjAwOEFCMEJBMjhGQzIzOTVEOUYwIC8qIFBy
b2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3Ry
aW5nID0gNUQ0QzlCRjExQTIyREIwQ0UxQTQ0MTIxOworCQkJcmVtb3RlSW5mbyA9IGxpYkFOR0xF
X2QzZDExX2NvbmZpZzsKKwkJfTsKKwkJOTREMkVGODI0MDI5OTEyMUY2OEE5QzU4IC8qIFBCWENv
bnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsK
KwkJCWNvbnRhaW5lclBvcnRhbCA9IDk2ODYwMDhBQjBCQTI4RkMyMzk1RDlGMCAvKiBQcm9qZWN0
IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9
IEI4QzdDMTQyNzUxRjFFMTQ5OEE2NTJENDsKKwkJCXJlbW90ZUluZm8gPSBsaWJHTEVTdjJfc3Rh
dGljOworCQl9OworCQlBQzkyNzlDNjg4OTYwREU1RkQ4NUI5RDcgLyogUEJYQ29udGFpbmVySXRl
bVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFp
bmVyUG9ydGFsID0gOTY4NjAwOEFCMEJBMjhGQzIzOTVEOUYwIC8qIFByb2plY3Qgb2JqZWN0ICov
OworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gODA5NUZGNjU0
MzBGMzY2NkQ2NTg3RjdGOworCQkJcmVtb3RlSW5mbyA9IGxpYkFOR0xFX3JlbmRlcmVyX2NvbmZp
ZzsKKwkJfTsKKwkJQjM1MEVGMkE5RTY2MDcyNTk0RjVEMkFFIC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5l
clBvcnRhbCA9IDk2ODYwMDhBQjBCQTI4RkMyMzk1RDlGMCAvKiBQcm9qZWN0IG9iamVjdCAqLzsK
KwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDZEN0U2MzMyOEY4
NzM4NEZGMzkzQUEwQjsKKwkJCXJlbW90ZUluZm8gPSBsaWJBTkdMRTsKKwkJfTsKKwkJQjU5RjE2
QjcwRjIyOERBNUVCRkJEOEI2IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlz
YSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDk2ODYwMDhB
QjBCQTI4RkMyMzk1RDlGMCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7
CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDk1OTQ1N0I1N0FFQjQwOTU4NEU0ODg3MDsKKwkJ
CXJlbW90ZUluZm8gPSBsaWJHTEVTdjI7CisJCX07CisJCUI1RjYxM0E4RUYxOUYyMkQ5RDNBQ0I5
RCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJ
dGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSA5Njg2MDA4QUIwQkEyOEZDMjM5NUQ5RjAg
LyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFs
SURTdHJpbmcgPSA1NUU3MDFENDhENkY3NUZERTBGQjVCODk7CisJCQlyZW1vdGVJbmZvID0gY29w
eV9zY3JpcHRzOworCQl9OworCQlCRkQwQURGNENBMzBFMUI4NEU4MjU1NjQgLyogUEJYQ29udGFp
bmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJ
Y29udGFpbmVyUG9ydGFsID0gOTY4NjAwOEFCMEJBMjhGQzIzOTVEOUYwIC8qIFByb2plY3Qgb2Jq
ZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gODA1
NTFDRDdFQjI0MEYwOUY3NTVEQUMwOworCQkJcmVtb3RlSW5mbyA9IGNvbW1pdF9pZDsKKwkJfTsK
KwkJQzRCN0UzNTA2RDQ1NDY1MDI1NjFGNjZDIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9
IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9
IDk2ODYwMDhBQjBCQTI4RkMyMzk1RDlGMCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5
VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDVENEM5QkYxMUEyMkRCMENFMUE0
NDEyMTsKKwkJCXJlbW90ZUluZm8gPSBsaWJBTkdMRV9kM2QxMV9jb25maWc7CisJCX07CisJCUNE
MjQ4NkY4MEU1RjkwMjE3RUQ3M0NBRiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJ
CQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSA5Njg2
MDA4QUIwQkEyOEZDMjM5NUQ5RjAgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUg
PSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSBDNjk4OTZCNEREMkMwNkNGMTYxNkJEQzY7
CisJCQlyZW1vdGVJbmZvID0gcHJlcHJvY2Vzc29yOworCQl9OworCQlDRkMwOUQ4QjUyOUI1RkE2
NDRFOTBGQTQgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29u
dGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gOTY4NjAwOEFCMEJBMjhGQzIz
OTVEOUYwIC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90
ZUdsb2JhbElEU3RyaW5nID0gNUQ0QzlCRjExQTIyREIwQ0UxQTQ0MTIxOworCQkJcmVtb3RlSW5m
byA9IGxpYkFOR0xFX2QzZDExX2NvbmZpZzsKKwkJfTsKKwkJRDhGOUM2QUEyQTJERUQ1QzZBMTkz
QjVEIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5l
ckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDk2ODYwMDhBQjBCQTI4RkMyMzk1RDlG
MCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9i
YWxJRFN0cmluZyA9IDFGODhDREVCNDRFN0M3MUMyODJGQTk3NTsKKwkJCXJlbW90ZUluZm8gPSB0
cmFuc2xhdG9yOworCQl9OworCQlEQjkwM0QxN0RFRTlGRDNBNjI4Mzg0NDYgLyogUEJYQ29udGFp
bmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJ
Y29udGFpbmVyUG9ydGFsID0gOTY4NjAwOEFCMEJBMjhGQzIzOTVEOUYwIC8qIFByb2plY3Qgb2Jq
ZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMTdG
ODNFOTY0OThCNTAwQjc3RDM3MTE4OworCQkJcmVtb3RlSW5mbyA9IGFuZ2xlX2ltYWdlX3V0aWw7
CisJCX07CisJCURFNUI1OUYzNDFFQjMxRTA2Mjg3QkYxQyAvKiBQQlhDb250YWluZXJJdGVtUHJv
eHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQ
b3J0YWwgPSA5Njg2MDA4QUIwQkEyOEZDMjM5NUQ5RjAgLyogUHJvamVjdCBvYmplY3QgKi87CisJ
CQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSBDNjk4OTZCNEREMkMw
NkNGMTYxNkJEQzY7CisJCQlyZW1vdGVJbmZvID0gcHJlcHJvY2Vzc29yOworCQl9OworCQlFOTJC
ODFENzE4QkVBRjFBOTI2N0IzN0MgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJ
aXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gOTY4NjAw
OEFCMEJBMjhGQzIzOTVEOUYwIC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0g
MTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gOTU5NDU3QjU3QUVCNDA5NTg0RTQ4ODcwOwor
CQkJcmVtb3RlSW5mbyA9IGxpYkdMRVN2MjsKKwkJfTsKKwkJRUJERUM0Qjk5QjJBMjE1MjQxNTVC
RjE4IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5l
ckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDk2ODYwMDhBQjBCQTI4RkMyMzk1RDlG
MCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9i
YWxJRFN0cmluZyA9IDc5MkFCRjQ4ODRBOEZEQUU4MTY5MERERTsKKwkJCXJlbW90ZUluZm8gPSBh
bmdsZV9jb21tb247CisJCX07CisJCUYyQzU3ODkyM0IzQ0E1OTkxQkFCODRFMSAvKiBQQlhDb250
YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJ
CQljb250YWluZXJQb3J0YWwgPSA5Njg2MDA4QUIwQkEyOEZDMjM5NUQ5RjAgLyogUHJvamVjdCBv
YmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSBD
NzAxMjg0NUM1RkUzOUFCMDg0QTMyRDg7CisJCQlyZW1vdGVJbmZvID0gYW5nbGVfZ3B1X2luZm9f
dXRpbDsKKwkJfTsKKy8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLworCisv
KiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJNUJFMERGQUJGOEEx
RDhCNTFGNTY0RjIxIC8qIENvcHkgdG8gJChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvYW5nbGUg
Ki8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAiJChTSEFSRURfSU5URVJNRURJQVRFX0RJ
UikvYW5nbGUiOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCQk4
NjE1ODRGMUYzNURENDYyNUY1RTMyQUYgLyogY29weV9jb21waWxlcl9kbGwuYmF0IGluIENvcHkg
dG8gJChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvYW5nbGUgKi8sCisJCQkJQkNGMTREN0U2ODkw
M0RBMEIzNTdDM0FBIC8qIGNvbW1pdF9pZC5weSBpbiBDb3B5IHRvICQoU0hBUkVEX0lOVEVSTUVE
SUFURV9ESVIpL2FuZ2xlICovLAorCQkJKTsKKwkJCW5hbWUgPSAiQ29weSB0byAkKFNIQVJFRF9J
TlRFUk1FRElBVEVfRElSKS9hbmdsZSI7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24g
Ki8KKworLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisJCTAwNTk0RjU4MDIw
RDgyQzg4MUVCOUJCNiAvKiBWZXJ0ZXhBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWZXJ0
ZXhBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTAxMUQxNDkzMzU4ODg3
NDYyNjM0MkRFRCAvKiBWZXJ0ZXhBdHRyaWJ1dGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmVy
dGV4QXR0cmlidXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDE3MzEzRjM2
NDgzNUQyNzcxMkUxQ0U1IC8qIFN5c3RlbUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3lzdGVtSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwMTgzQTU2MzYwQkY4QUQ4NUY0OTUw
MDUgLyogQ29uZmlnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbmZpZy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTAxQkRBMUU5REM2MTdFRkY2MDY2QUM4MCAvKiBQcm9ncmFt
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2dyYW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwMjNFRjVFNEIxMEMzODYwRDk1NTZBNzggLyogRGlyZWN0aXZlUGFyc2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpcmVjdGl2ZVBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTAyOEE0NDNDRDZEQzI1QkIyNTNEMTg5MyAvKiBTY2FsYXJpemVWZWNB
bmRNYXRDb25zdHJ1Y3RvckFyZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NhbGFyaXplVmVjQW5kTWF0
Q29uc3RydWN0b3JBcmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTAyQUU1OEE0
NDVDRjU4RDUzNDcxODRBRCAvKiBJT0tpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IElP
S2l0LmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSU9LaXQuZnJh
bWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKKwkJMDJDN0NCNjREOTEyOTgwMjYxMTYy
RTYxIC8qIEluZm9TaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZm9TaW5rLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTAzMDYyNTNCNkM4QkZCN0YzRUMzOTIwRCAvKiBNdXJtdXJIYXNo
My5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNdXJtdXJIYXNoMy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwMzJCMDMyQTc2QzRCNTExNDU0MDc3MjIgLyogY29tbWl0X2lkLnB5ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0
aG9uOyBwYXRoID0gY29tbWl0X2lkLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
MzMyNDY0NzRFMEZDNUMxNERDQjcwQzAgLyogbG9hZGltYWdlLmlubCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBsb2FkaW1hZ2Uu
aW5sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwMzM4RUUwQTBEQTQzNzJCNzZCM0M5
QjQgLyogYmxvY2tsYXlvdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gYmxvY2tsYXlvdXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDQ2NkNCQzAwREQ2QkRERUYwNzA1Q0M5IC8qIE5vZGVT
ZWFyY2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9kZVNlYXJjaC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwNTE2MTdCMzEzNTYxQzY1QkM5QTBEMjEgLyogQ29tcGlsZXJHTC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb21waWxlckdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDU2QzVDNUFFNzY3OUFFQURDNUY2MzNBIC8qIHZhbGlkYXRpb25FUzMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gdmFsaWRhdGlvbkVTMy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
NjMzNkJEQzlBMDVGQzZBMDI3MTcxQjUgLyogc3lzdGVtX3V0aWxzX21hYy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBzeXN0ZW1fdXRpbHNfbWFjLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDY2RDY4RDBDMTY0QUQ2MUExNUE0Mjg1IC8qIFNhbXBsZXJOVUxMLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNhbXBsZXJOVUxMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA2QTg2
RjUwN0IyRkQ5NTU1NzY0RjZENSAvKiBDYXBzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhcHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcxNzJEMTY2ODU2OEQ3NDE5RUZEOUE2IC8qIGFu
Z2xldXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gYW5nbGV1dGlscy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzUwMDdBNjc0NTBGOEI1N0Q0RjQwQ0MgLyogY29tbWl0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IGNvbW1pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwN0Q3NkQ4
NTJEQjE0MzQwMDU5QTNGMzEgLyogT3B0aW9uYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3B0aW9uYWwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDgzNDIwRjU0OEFFMzcyMDFGNUE5NDFC
IC8qIGVudHJ5X3BvaW50c19nbGVzXzJfMC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBlbnRyeV9w
b2ludHNfZ2xlc18yXzAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwOEVFNjg1
REM4NzAyMDA2RjBDNzVFQzkgLyogUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckZsb2F0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA5MzJCNzg4QkVDNTFERjZDQTZFM0JENSAvKiBD
b250ZXh0SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZXh0SW1wbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA5RjNCNzZDQzA5QTU5MEE1NUIzQjBGRCAvKiBRdWVy
eUdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1ZXJ5R0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEEwNUQxMzEwRDk3RTc4OTgxRTM2RTFGIC8qIGxpYkVHTC5yYyAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBsaWJFR0wu
cmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBBMUMxNTJBOEQ1NUY3QzJCQkI5OUQ1
RiAvKiBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXdy
aXRlVGV4ZWxGZXRjaE9mZnNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBB
MUNGRjg3MEQ4MEVBQTkzREFCMDA5QSAvKiBTeW1ib2xUYWJsZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
eW1ib2xUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwQUU0OTc1ODZFNDQ2
MDYyMEQxNjI2MkMgLyogTXVybXVySGFzaDMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTXVybXVy
SGFzaDMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwQjc5ODJDNzBFQTA3QjU2
MzYyNkQwNzQgLyogUHJvZ3JhbUdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByb2dyYW1HTC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwQkE1NUJFMDQ4RDg4REE4OTY4Nzg5ODggLyogVXNl
SW50ZXJmYWNlQmxvY2tGaWVsZHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVXNlSW50ZXJmYWNl
QmxvY2tGaWVsZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRENDQkRGNEQx
QTM4OTU3MEUzQkVDQTMgLyogVG9rZW5pemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRva2Vu
aXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBERjRBOTVDQzQxNTU4MDk1
OUMwRTRFNiAvKiBGbGFnU3RkMTQwU3RydWN0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGbGFnU3RkMTQw
U3RydWN0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRTZDRDA1ODVBQjI0NUM5
N0U4QTlEMzMgLyogR0xJbXBsRmFjdG9yeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHTEltcGxGYWN0b3J5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNEUxOUUxMjZGMzU3NDkwM0MxOEMy
MyAvKiB2YWxpZGF0aW9uRVMzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHZhbGlkYXRpb25FUzMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMEZDM0IyMEY2MzgwMUU3Q0JGRkVB
NzUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yR0xTTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTExNzE5MkNGRUVEQzk4RUM1RkREQzhBNCAvKiBsaWJBTkdMRS5hICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRl
SW5JbmRleCA9IDA7IHBhdGggPSBsaWJBTkdMRS5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQkxMUQzQzc0NkNBMzI1QjMzQjcxRTMyQjIgLyogQ29uc3RhbnRVbmlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb25zdGFudFVuaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTEyODkxNzBGODMwNjE4QjEyRjU4NzNBOSAvKiByZW5kZXJlcmdsX3V0aWxzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IHJlbmRlcmVyZ2xfdXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxMkIwNURGOEJGRjBCQUU0MDYxMzBBNjUgLyogUGF0aEdMLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBhdGhHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTEzMzU4QjREODA1QzRCQTEzNkI2NjU1MiAvKiBUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhy
ZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTEzNTc5QjcyMDQ1RUVBQTM5NkY1
ODM2NSAvKiBQcnVuZVB1cmVMaXRlcmFsU3RhdGVtZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQcnVuZVB1cmVMaXRlcmFsU3RhdGVtZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTEzQkE0MDNDNDM0Q0Q1QjcyODg4RTA1OCAvKiBCdWZmZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0MzAyMEQ1MUZGRkYy
QTE4MzQzNTVCQiAvKiBJbWFnZUluZGV4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlSW5kZXguaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ2QjE0MzlCMzBCQkUzRTkyRENEQkQ3IC8q
IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1aWx0SW5GdW5jdGlv
bkVtdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE0QkRENERCRjdCQUJD
Mjk3Q0I1Q0VCRCAvKiBQb29sQWxsb2MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9vbEFsbG9jLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE1MkIzRTBBQjUyNzU3MTAxODM3OTU3MCAvKiBD
b21waWxlck5VTEwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tcGlsZXJOVUxMLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTVBNThGMkRFODg5MUVGNzcyQTc3QTExIC8qIFRy
YW5zbGF0b3JHTFNMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zbGF0b3JHTFNMLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTE2MTIyRjA1Q0Q0NkM4MjFEMjYzRUZENyAvKiBBcnJheUJv
dW5kc0NsYW1wZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlCb3VuZHNDbGFtcGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTYxRDk4MkNDQkJCMzk3MDY0NDFBN0Y4
IC8qIFJlbmRlcmJ1ZmZlck5VTEwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyYnVmZmVy
TlVMTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE2NjUwNzg4NjA1MTBGRkU3
OTU5QjRBRCAvKiBsaWJHTEVTdjIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gbGliR0xFU3YyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTY2RjlGRUIwNDQxRURGMzMxNjRGMDA4
IC8qIFZhbGlkYXRlTWF4UGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYWxpZGF0
ZU1heFBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNjhFQ0FG
NzhDMDQyOUFEQkUxRTYyRDYgLyogU3RyZWFtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNjk2MTYyNTg4RDVCQzczMTdFNDk0NEEgLyog
Q29sb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMTZCMzhCMkY3N0JDMkVBMTRFQjlGNzkzIC8qIEltYWdlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTczQjZEN0M4
OEM0MURGQzQ4OTFFMTZEIC8qIFZhcnlpbmdQYWNraW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFZhcnlpbmdQYWNraW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTgwRkFE
ODhDQkJGQjI3OTQ1N0UwNDcyIC8qIFRleHR1cmVHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBU
ZXh0dXJlR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxODNBQzZFOEZGNDYy
NDVDOUYxMDVBQUIgLyogQ2FsbERBRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsREFHLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTg1Q0IyQ0RDQzJFNUVFRUVFMzNCQzE4
IC8qIERpc3BsYXlDR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUNHTC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxODZCODE0MzQyMTkyNUY4OEQ2Njk1NDQgLyogRGlhZ25vc3Rp
Y3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRGlhZ25vc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUI3NTY2N0VGNEI3M0Q4NjM1Q0YzNTZGIC8qIFJlbmRlcmVyR0wuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVuZGVyZXJHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQkIw
RTFDMUVBRENFMUY5NDM4MzU4QTMgLyogY29weWltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IGNvcHlpbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFCQ0I5QjM4OTU5
NDRFQjI4NDMyNDQwMyAvKiBlczNfY29weV9jb252ZXJzaW9uX3RhYmxlX2F1dG9nZW4uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gZXMzX2NvcHlfY29udmVyc2lvbl90YWJsZV9hdXRvZ2VuLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUQwRkQ1MDcxQkFFOUVCMDJFQ0Y5ODIxIC8q
IFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXdyaXRl
VW5hcnlNaW51c09wZXJhdG9yRmxvYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MURFODM2OEY5NUFBOEU4ODA5M0YwRjhEIC8qIENvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25m
aWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMURGNjg4Q0U0NUEyRDc4RDdEQjFD
ODZGIC8qIExvZ2dpbmdBbm5vdGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTG9nZ2luZ0Fubm90YXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRTZENkU0MzUxODlFRjgxNDIwRUJE
NDggLyogUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUVFREEwRUIzRDBDMDlFNkQzQTI2MDgzIC8qIHZhbGlkYXRpb25FUzMxLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IHZhbGlkYXRpb25FUzMxLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFGMjAzMjU1RDQ4MTE1QTc1NTBCMDMyNyAvKiBGaW5kU3ltYm9sTm9kZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGaW5kU3ltYm9sTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkx
RjUzRUUyODVDQjE1NzJFQjQwMzlBMDcgLyogc2FmZV9jb252ZXJzaW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBzYWZlX2NvbnZlcnNpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFG
NjEyREUyRTNEOTEzMUM5MDNDODM2MSAvKiBFbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUZEMjkyNUVBOUI0QzQ5MkI3OURDRDk3IC8qIGds
MzIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gZ2wzMi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxRkUxMzU2REExNkNCM0M1OTg1RkM4QTMgLyogRGVmZXJHbG9iYWxJbml0aWFsaXplcnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJHbG9iYWxJbml0aWFsaXplcnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyMDBENzI3QUZBODE0QzZDOEY1MUYwREMgLyogU3RhdGVN
YW5hZ2VyR0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGVNYW5hZ2VyR0wuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyMDY4NTU5NTg2ODQzQkMyMkQ4RkI3NEMgLyogV2lu
ZG93U3VyZmFjZUNHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kb3dTdXJmYWNlQ0dMLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTIwOTVDMUNDRUIwRURDRjg3MjIzQUM2OCAvKiBnbHNs
YW5nX2xleC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBnbHNsYW5nX2xleC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTIxNzcyMjBDMzZFNUY3RjY2N0I5MjM1OSAvKiBWYWxpZGF0
ZUdsb2JhbEluaXRpYWxpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbGlkYXRlR2xvYmFsSW5pdGlh
bGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjFCQjc3QzdDQ0NGOUEwNjVG
QjNDQUEzIC8qIFBhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGF0aC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTIxQ0I1NzgyNUZERjI5Q0M1OTA1MkFEMSAvKiBWZXJ0ZXhB
cnJheU5VTEwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmVydGV4QXJyYXlOVUxMLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjIwNUYxRjdBMTQ0RjZBQjA0RUI0MEM3IC8qIEFy
cmF5Qm91bmRzQ2xhbXBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJvdW5kc0NsYW1wZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjIzNjM3ODBGMDRBM0ZEOTM0RkEzQzBFIC8q
IFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBRdWFydHpDb3JlLmZyYW1l
d29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFtZXdv
cms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworCQkyMjNEQjVDMEEyQ0NENEI2MkVFMjY4OUQg
LyogUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVt
b3ZlSW52YXJpYW50RGVjbGFyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyMjhCMkE5QjBDMUU5RjkwRjY3RjAxRTIgLyogRGV2aWNlSW1wbC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEZXZpY2VJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjMx
QjQ5QTZCOTdCRkIzMDdDRjMyMDIxIC8qIGFuZ2xldHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gYW5n
bGV0eXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyMzMzOUQ5MDFGMkY3NDdC
NjhDN0VENUEgLyogVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNl
SW50ZXJmYWNlQmxvY2tGaWVsZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjM1
MEQ0MkU3MjU2OEY4NkE0NjFFNDlCIC8qIFByZXByb2Nlc3Nvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQcmVwcm9jZXNzb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNDM4
QUI4NkQ2RDRGRTA5NUNEQjUyNDEgLyogaW1hZ2Vmb3JtYXRzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGlt
YWdlZm9ybWF0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNDNFNTY4QTY2NUNB
QTc4Q0M5RUJDOUIgLyogVmFyeWluZ1BhY2tpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFyeWluZ1Bh
Y2tpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjQ4QTM3NTk3NEFENEVGRDAx
NkQxREMzIC8qIHF1ZXJ5dXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcXVlcnl1dGlscy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNEE3NzkxOTBBQkI5QzEyMEVCNjQ1MTAgLyogRGlz
cGxheU5VTEwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheU5VTEwuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyNEI2OTJGMzY1QTBCREM4NTE1RUVFNjMgLyogZW50cnlf
cG9pbnRzX2dsZXNfM18wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGVudHJ5X3BvaW50c19nbGVz
XzNfMC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI0QzIwNTJCOUMwRUQyMkNB
MTY1OTUyMCAvKiBQcm9ncmFtR0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJvZ3JhbUdMLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjVBQUQ1QjkyNjAyQzlFMjdDRjc2QUYz
IC8qIEJ1ZmZlck5VTEwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVmZmVyTlVMTC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkyNjQ2MzVBNTZGN0YxREQyRjgwOUQ3QjUgLyogVmFsaWRhdGVN
dWx0aXZpZXdXZWJHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYWxpZGF0ZU11bHRpdmlld1dl
YkdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjZBOTQ2MzU2NjY2NDJENjZD
NjRENjc5IC8qIGNvbXBpbGVyLmd5cGkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhw
bGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGU7IHBhdGggPSBjb21waWxlci5neXBpOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkyNzQwRkMwOUIwRjFDQTk5Qjk1MkIwMzIgLyogZW50cnlf
cG9pbnRzX2VnbF9leHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZW50cnlfcG9pbnRzX2VnbF9l
eHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNzkxRjA2NTYyNDE5M0U4NzZB
QzFEMkQgLyogSW5pdGlhbGl6ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbml0aWFsaXplLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjdGMTUwNUE4RDYyRTdENDg4ODIzREY3
IC8qIE1hY3JvRXhwYW5kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFjcm9FeHBhbmRlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI4MDlCNjdBMEE4NEM0N0Q2MDc1N0Y5
RSAvKiBQYXRoTlVMTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXRoTlVMTC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI4N0ZFNjdCRTM5MzhGNEJBN0RGQTVERSAvKiBWZXJ0
ZXhBcnJheUdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlcnRleEFycmF5R0wuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMjk5NjVGNTJCMTRBMTQ5Mzk0NEVGNEMzIC8qIENvbXBpbGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkFCM0Q0NDQ0RDNBN0JBNDk0MDg3MkIwIC8qIFJlc291cmNlTWFuYWdlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZXNvdXJjZU1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMkJFNTFFNUUzN0RDOTBEMjJGMjNFQ0JGIC8qIENhcHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ2Fwcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJDNzdBMjM5Qjc0
RDgzMjlGQTlDQTc3QyAvKiBTb3VyY2VMb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VM
b2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyQ0IxQUIzNTI0REE4QkI4
Q0YyNzFFNjggLyogUHJ1bmVFbXB0eURlY2xhcmF0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQcnVuZUVtcHR5RGVjbGFyYXRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMkQxNDQzQ0I3OTRCOTMyQjc0NzVBMEI4IC8qIFByYWdtYS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cmFnbWEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQxNUI0OTlEQjEwRjUwMzA1
MDA2MUIxIC8qIGFuZ2xlLmd5cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNp
dEZpbGVUeXBlID0gc291cmNlY29kZTsgcGF0aCA9IGFuZ2xlLmd5cDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMkQ2RjI1MjUwRTJFQzVGMTk5QUZBMTU4IC8qIE91dHB1dEVTU0wuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gT3V0cHV0RVNTTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyRDhFNzdGQTBFQTY0N0FERDdGNTIzMDggLyogU2V2ZXJpdHkuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2V2ZXJpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRBRTgyREIwMzUzNUE0
ODdFODk1Qzc0IC8qIHZlY3Rvcl91dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSB2ZWN0b3JfdXRpbHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRFQzBBOEJFQTgwQ0U0QkMyQzZBNzA4
IC8qIHNpZ25hbF91dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBzaWduYWxfdXRpbHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkVEQTIwOTAzRTMxRDY3N0FBN0E2MTFGIC8qIEZyYW1l
YnVmZmVySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZWJ1ZmZlckltcGwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkZCRUJCOTA0MDc4RENBRjI0QjM4MjYxIC8qIEVycm9yLmlu
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBFcnJvci5pbmw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJGRjk0MzY2
Mjc5MzIxNTRDNjU2NkFCOCAvKiBTYW1wbGVyR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2FtcGxlckdM
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMwMzA3MzY5MjJCQTFDOTVEODNFQjYy
QyAvKiBQbGF0Zm9ybS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0Zm9ybS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMwNDc2QzVCQjMwRTU2REY1REJCRjZBQiAvKiBTdXJm
YWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1cmZhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMDg2MTcxMkI2QzlCNjY3ODU5QTUzMzggLyogdmFsaWRhdGlvbkVHTC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSB2YWxpZGF0aW9uRUdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMwQjk1MDU2NTZEQjgzQzhFMEJBQ0M0OSAvKiBhbmdsZXV0aWxzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IGFuZ2xldXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMEU0MjlBNDM1Q0ZFREUxOTU3MDJGRTcgLyogTWVtb3J5QnVmZmVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1lbW9yeUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMxNUNFNUUwQTBEMDg1QThEQzE2NUIwQyAvKiBCdWZmZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFCQUM4QTA2N0Q1
OUZCNDJDMDg2QzY1IC8qIGdsMnBsYXRmb3JtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdsMnBsYXRmb3Jt
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQ0ExNUJCRTA0OEVDN0IwNTgxMTZE
QSAvKiBEaXJlY3RpdmVIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpcmVjdGl2ZUhh
bmRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMjM0MTAwQTlGNUVEMjhE
ODM0MDI2MzEgLyogZ2xzbGFuZy55ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS55YWNjOyBwYXRoID0gZ2xzbGFuZy55OyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkzMzBGMDQ3RDgyRDdGNTUyRjMwQjg0NDEgLyogbWF0cml4
X3V0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG1hdHJpeF91dGlscy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkzMzkyMTZBQjVFRDRGOUU5RERFRjJCNjAgLyogT3V0cHV0R0xTTC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBPdXRwdXRHTFNMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMzOUZGRjM3RkVGMzZCMDlCMUEyNkUwQyAvKiBSZW1vdmVQb3cuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVtb3ZlUG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMzRTg5REI2OTgyMjZB
OTI0NDQzQkIyMiAvKiBEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTM0OTdFRjYyRTBDNDA0RkNBRUU1RUI4QSAvKiBTeXN0ZW1J
bmZvX21hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5c3RlbUluZm9fbWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNTI0RTQwMDY4MjgwRTFBOUFCNDc0OUQgLyogSGFz
aE5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhc2hOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkzNkJEMzFDNDg4NzVFM0Y4OTQ0M0FBMkYgLyogdXRpbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSB1dGlsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzZFMUQ0
QjJGNEZFMUUzQzdDMTUxMDM0IC8qIEhhbmRsZVJhbmdlQWxsb2NhdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEhhbmRsZVJhbmdlQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTM3QUVEM0M5MTJDOEVFODcyMkYxRjE2NyAvKiBUZXh0dXJlSW1wbC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUZXh0dXJlSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM4
OTRGQjhBMjIwODVFOUYwNEM2RjExMiAvKiBmb3JtYXRfbWFwX2F1dG9nZW4uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gZm9ybWF0X21hcF9hdXRvZ2VuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzk1QjA3QUE0RTEzRUEwN0M3OUU5NDRBIC8qIEVHTEltcGxGYWN0b3J5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEVHTEltcGxGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTNBNDkyQjNDRDA0MTA4QzczRjQ2MjBEQyAvKiB1dGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gdXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNBRUMzNzJEODA3
MzMyRkMyODZCRUQ5NSAvKiBWZXJzaW9uR0xTTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWZXJzaW9uR0xT
TC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzQjU4REMzODNGMDgxMjg1QjM3OUY0
QjggLyogVmVydGV4QXJyYXlOVUxMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlcnRleEFycmF5TlVMTC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzQkY0REQxRUEzNTlGNDhFRkFDNThDOEUg
LyogbGliRUdMLmRlZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBsaWJFR0wuZGVmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzQzc2RDE3QjQzREY1ODlBRUIyNUM1MEIgLyogRmVuY2VOVk5VTEwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gRmVuY2VOVk5VTEwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJM0M5Qzgx
MDREREU5NEQwNkM2OUZCRTY4IC8qIGdlbmVyYXRlbWlwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdlbmVy
YXRlbWlwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNDQTBGQkYwNzcwREQ4OTA0
Rjc0OUE2NyAvKiBxdWVyeWNvbnZlcnNpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHF1ZXJ5
Y29udmVyc2lvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzQ0MzM0JFQ0JB
QUU4MzRGNkNGQkJGRUIgLyogdmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSB2ZXJzaW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNEOEI4M0NDQTEyREU4NjdBQkU4MjZDNSAvKiBm
b3JtYXR1dGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBmb3JtYXR1dGlscy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNERTMxMDU5OUZFMEQ1OTRDMjc0RDJFMSAvKiBWYWxp
ZGF0ZVN3aXRjaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYWxpZGF0ZVN3aXRjaC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNFMDdDMjMzRjUyMUUxMzE0RDYyQjk1QiAvKiBT
YW1wbGVyTlVMTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGVyTlVMTC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNGNDQwNTU4NEY2NjlCQUEyRTJCMTgxOSAvKiB2YWxp
ZGF0aW9uRUdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHZhbGlkYXRpb25FR0wuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzRjc1Q0YzOUM2OURCNzUzOEJFNTRENkIgLyogbGli
RUdMX3N0YXRpYy5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJFR0xfc3RhdGlj
LmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTQwNTkxQzMzNjgxREE1
QUJBNEYxRkJFQyAvKiBVbmlmb3JtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuaWZvcm0uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MDYyNUEyNEFFRUZGMzZBRDM1MjRDRDAg
LyogZXZlbnRfdHJhY2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGV2ZW50X3RyYWNlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQwRTlCM0U2ODRBODM3NjdBQUIwMENENiAv
KiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvckdMU0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3JHTFNMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQxOUYx
MzhBM0IyNTc3QTBDNDk3RDk0MyAvKiBGZW5jZVN5bmNHTC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGZW5j
ZVN5bmNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MUUyQkQwMkM2NzE2NjQ1
QjZEQjI0QzIgLyogYW5nbGV0eXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBhbmdsZXR5cGVz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDMzMjRDQjVBNEM5OUVGMUM4MzBC
NTFFIC8qIENvcmVGb3VuZGF0aW9uLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gQ29yZUZv
dW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9Db3Jl
Rm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworCQk0M0I3NjA0
QzY5REQ5QzUyRTcyODMzMzYgLyogZW50cnlfcG9pbnRzX2dsZXNfMl8wX2V4dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBlbnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ0QTA3OTU2QjVCQzE2QTdDNjcwQjlBOCAvKiBDb21waWxlckdMLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvbXBpbGVyR0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDU3
OEM4QkM1ODdBNjFEQzVFNTNCQzM1IC8qIGxvYWRpbWFnZV9ldGMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gbG9hZGltYWdlX2V0Yy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ1
RERCOUFFNzdENzNBNDI1MThFRDcwNSAvKiBFeHRlbnNpb25HTFNMLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEV4dGVuc2lvbkdMU0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
NUZDNzZGOTdFQTE4RkQ4Q0I4OTVCRTQgLyogU2FtcGxlckltcGwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2FtcGxlckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDYzMDg2RkY3QTcx
MTM0OTQ5ODZCMkJGIC8qIGVudHJ5X3BvaW50c19nbGVzXzJfMF9leHQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gZW50cnlfcG9pbnRzX2dsZXNfMl8wX2V4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ2NDUxN0FGQzk0MkM1NEJCMDM4QTlCNSAvKiBpbnRlcm1PdXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gaW50ZXJtT3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNDY3QkMzODdBNDgwQ0ZFNzk3QUVGNjVBIC8qIFJlbmRlcmVyR0wuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVuZGVyZXJHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQ4QTZGNDg2OURGMUQxNjcxRkJFMzZGMyAvKiBEaXNwbGF5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERpc3BsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0OENEREE4REJD
NUM1NTYyNjY4RDhEM0IgLyogVHJhbnNmb3JtRmVlZGJhY2tOVUxMLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRyYW5zZm9ybUZlZWRiYWNrTlVMTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ4RjcwMkMyQzM2MDhFMzQwNDZFQjlDNyAvKiBUb2tlbml6ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVG9rZW5pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ5QTMwNTkw
Nzk0Rjc5NTg1MjlCQjdERiAvKiBpbWFnZWZvcm1hdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
aW1hZ2Vmb3JtYXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEE2QURDQzUz
Q0E5REYyNThFN0RDRUU1IC8qIFZlcnRleEFycmF5SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWZXJ0
ZXhBcnJheUltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEIxQUU2RDRCRjQw
RjRFMTQ5RTlDMTU4IC8qIERlYnVnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlYnVnLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEIzNzM3RTA2OTRDODg5RTQ3NzYwNUE5IC8q
IEluZGV4UmFuZ2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRleFJhbmdlQ2FjaGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEIzQ0NEMUJEQjAzNjlCMzU1NUExMzA1IC8qIElu
aXRpYWxpemVEbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5pdGlhbGl6ZURsbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0QjVBMEQ2RTFDNjY4MkUzOEI3ODgyOEMgLyogdmFsaWRhdGlv
bkVTMzEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdmFsaWRhdGlvbkVTMzEuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0QkYyNEM0NjIxMDAzNzVGOTg3QkE0RUQgLyogUmVuZGVy
YnVmZmVyTlVMTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJidWZmZXJOVUxMLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTRDNEUyMUU5Mzk4MkRFQ0I1MEQ5QTI5MCAvKiBDb250ZXh0
U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGV4dFN0YXRlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEM3MDVDNkEwMDBFNjE1MjI2RjVDMkM2IC8qIFNhbXBsZXJH
TC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGVyR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0RDBBQzE2OURCNkNBMjU4REI3MjMzQzMgLyogRnJhbWVidWZmZXJHTC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBGcmFtZWJ1ZmZlckdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTREMEI1ODY4RDczNjc4MUI0MTJGNjVBRCAvKiBsaWJhbmdsZV9jb21tb24uYSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsg
aW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliYW5nbGVfY29tbW9uLmE7IHNvdXJjZVRyZWUg
PSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTREMEU5NTY0RUZEMDA1NEVFMTNFNDE0QyAvKiBT
YW1wbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhbXBsZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0RDJENEE1NEM1MUIyNzQ0RjIwRTQ3MDMgLyogSGFuZGxlQWxsb2Nh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRsZUFsbG9jYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0RDQ1MEUzNUUwMDA2RTkwRTlBNzRCM0EgLyogRGV2aWNlTlVMTC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEZXZpY2VOVUxMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTREOUY3NEQ1RjhFODgwMUM2REE3MUQyRiAvKiBnbDNwbGF0Zm9ybS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBnbDNwbGF0Zm9ybS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0RTc0MDQ4OEFF
MjJFQTgyN0RCM0NBNUEgLyogZ2xvYmFsX3N0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdsb2JhbF9z
dGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0RTc0NEMzNTEyN0I4MURBNTE2
RUNDNTkgLyogU2VhcmNoU3ltYm9sLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlYXJjaFN5bWJv
bC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRGMTU4OEExN0I2MzdGRUM5QTY5
NTlCMCAvKiBCcmVha1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQnJlYWtWYXJpYWJsZUFsaWFzaW5nSW5Jbm5lckxvb3BzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEY0MDhFNTc3MzRCMTYwOURGNUE3M0ZCIC8qIE1lbW9yeUJ1
ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNEY5OEVENTk5OTRENUFDNDc4MURERTI0IC8qIEludGVybU5vZGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW50ZXJtTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTRGREIxNzZGM0JBNjQ4RkM4QkMxNzhDQiAvKiBFeHRlbnNpb25CZWhhdmlvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFeHRlbnNpb25CZWhhdmlvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MDM3MzgyOTczNTFBMEI4MTc0QTgxODAgLyogbGliR0xFU3YyLmRlZiAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBs
aWJHTEVTdjIuZGVmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTU3RjM3QkZGRjg3
OEFBRkNBM0E4MzIgLyogQ29jb2EuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBDb2NvYS5m
cmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvY29hLmZyYW1ld29y
azsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CisJCTUxODU3NTIyRTQ4NjdBMjA5MDU1MjFCMyAv
KiBJbnRlcm1Ob2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVybU5vZGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTIzNEE5MzhBODAyNUU2RkE1MjEyMTVDIC8qIERldmljZUltcGwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1MkYyNjBFOEYxOTMwN0Q4M0NBRUJDRkEgLyogUmVuZGVyYnVmZmVyR0wuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVuZGVyYnVmZmVyR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1M0FBNzc3MkUwREE3MDlDMjY1Njg5QUQgLyogVGV4dHVyZU5VTEwuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVGV4dHVyZU5VTEwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1M0NBQkQ3NTA4RTc1NDQ3NkE1OEMyQTAgLyogU2hhZGVySW1wbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTaGFkZXJJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU0NkQ2Q0M2
Q0U2QjFCMkExNzcyRkVCRSAvKiBGaW5kU3ltYm9sTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBGaW5kU3ltYm9sTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU0NzVE
Nzk1MzhDNzc4QTI2OUE0Qzc2NSAvKiBQYnVmZmVyU3VyZmFjZUNHTC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQYnVmZmVyU3VyZmFjZUNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NEUy
MjNERTQ4MkEwODMxRjgwRTIwMUEgLyogVmFsaWRhdGVNdWx0aXZpZXdXZWJHTC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBWYWxpZGF0ZU11bHRpdmlld1dlYkdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTU1NTFGMEUzODFFREQ0NjQ4NDk5NDlCRiAvKiBRdWVyeS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBRdWVyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1RDRFODkx
NkNDN0RFQTYyNjNGOUY2MCAvKiBnbDMxLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdsMzEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVFRkY5RTZFQzc2MDMyQzY0Q0ZEMDBDIC8qIFRocmVh
ZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1NjM5NjJCOUQ1NEVERTZEMjc1NjlBMTkgLyogQXR0cmlidXRlTWFwLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEF0dHJpYnV0ZU1hcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTU2NTYzOUVEMEU4ODMxMzI5QjU2ODNFRCAvKiBVbmlmb3JtLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFVuaWZvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTZFRUU5RTJD
QTJGOUZBODg2MDNDNjY0IC8qIFN5c3RlbUluZm9faW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3lzdGVtSW5mb19pbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzUw
NTg4Q0QzODZFMzM1REFFQzJFNzMgLyogT3V0cHV0RVNTTC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBPdXRwdXRFU1NMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTc1RENGOTlF
RDlFOTcxRjMxRjNCRURDIC8qIEZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtYXQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdDQTREQzMyNDg1MDFGMzU0MTY5MkRDIC8qIEV4
cHJlc3Npb25QYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhwcmVzc2lvblBhcnNlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3RTIzNDZFQjBGRUZFNkM2N0JBQzdF
NyAvKiBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVi
dWZmZXJBdHRhY2htZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTgwQ0RD
OUYxNkFFQUJCNjNFODYyMTAwIC8qIENvbnRleHROVUxMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbnRleHROVUxMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTgzQkE1RDE4
NjQ0MEI3RDQ5MUE4RTU4IC8qIE1hY3JvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hY3JvLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTg0REFENDU1RjA3N0FBQzJEQTQ5OENE
IC8qIFJld3JpdGVEb1doaWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJld3JpdGVEb1doaWxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU4NTk2OTFGODEzN0E3M0MwQ0I0QUI1OSAvKiBD
b25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RhbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTU4NkVFMEQyRkJGQ0QzREM2NzhBREYwRCAvKiBoaXN0b2dyYW1fbWFjcm9z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IGhpc3RvZ3JhbV9tYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTg3M0VBOEJFQThDM0I0NjRBRjhCNEMxIC8qIExleGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IExleGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTg3
N0MyNDYwMjBCNzdFNkRBNjFBNDUwIC8qIHJlc291cmNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHJlc291
cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCMkJDNzcyODEzM0I5Q0FDMjNE
MDQ3RSAvKiBJbmZvU2luay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmZvU2luay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCQzY5QTY3NUQ2RTM5QkU3RUEwNDY1NyAvKiBn
bHNsYW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdsc2xhbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUJFMEFEODhDOTgyRTg3MjI4QjMwNDQxIC8qIE91dHB1dEdMU0xCYXNlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE91dHB1dEdMU0xCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDOTZDREE1OENDODU5NkRDNTIwN0VDOCAvKiBTdXJmYWNlSW1wbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdXJmYWNlSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDOUIwMkQ5MEJFMTA5OUY3MzdDNDcwQSAvKiBCdWZmZXJHTC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBCdWZmZXJHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVEQUY1Mzcy
ODQ1ODUzNENEMDA4NTkyOCAvKiBFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcnJvci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVEQjM2NDcwQjAzMTMyMUQzRjExQjJF
NyAvKiBRdWVyeU5VTEwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVlcnlOVUxMLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUUxQzEwOEU3RUY3Q0QyNzhCMDgyQTlBIC8qIFZl
cnRleEF0dHJpYnV0ZS5pbmwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmVydGV4QXR0cmlidXRlLmlubDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNUU1NEJGNTExRTJBNUJFRDlENzg5MzE5IC8qIGVudHJ5X3BvaW50
c19lZ2wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZW50cnlfcG9pbnRzX2VnbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVFNzhEQzUzQjc1QTJCRTkzNjlFNTg0OCAvKiBCdWZm
ZXJHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBCdWZmZXJHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1RThENTE2QTcwNkQ5N0E1QTBBNjdDNjAgLyogRGlyZWN0aXZlSGFuZGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBEaXJlY3RpdmVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVGNkExMDdFNDQyOUY4MDFFRENCQTdFOCAvKiBzYWZlX21hdGguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gc2FmZV9tYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVGOTVDNzg1
NDVBRDUwQTVDNDZENzYxNiAvKiBJbnB1dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnB1dC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVGOUU2MDkwRDc1N0VGOTQ5QUYwNDI2
MyAvKiBPcGVuR0wuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBPcGVuR0wuZnJhbWV3b3Jr
OyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wuZnJhbWV3b3JrOyBzb3Vy
Y2VUcmVlID0gU0RLUk9PVDsgfTsKKwkJNUZFNTFFMjQ3M0Y1N0IyODFFQzVCRkI3IC8qIFdvcmth
cm91bmRzR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2Fyb3VuZHNHTC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk2MDAwNzY0NzIzMUQwQkU4NThDMzhDODAgLyogU3VyZmFjZU5VTEwu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3VyZmFjZU5VTEwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk2MEFGNEY3NUFGNzZCODA0M0EyOUU0MkYgLyogUGFyc2VDb250ZXh0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcnNlQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTYwRENBMTYzNUI1MDQ4NEQxQ0I2MUJGQyAvKiBsaWJFR0wuZHlsaWIgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5t
YWNoLW8uZHlsaWIiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJFR0wuZHlsaWI7IHNv
dXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTYxMEU3RDREQkM3N0UxNzJBQzkx
MjdENiAvKiBnZW5lcmF0ZW1pcC5pbmwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gZ2VuZXJhdGVtaXAuaW5sOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk2MUM4ODI1NTJGRTIwNzc4RUExMkZFRjQgLyogcXVlcnljb252
ZXJzaW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBxdWVyeWNvbnZlcnNpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTYyMDcwQUNBNjk5MDY5ODM4MzFERjQ0QyAvKiBxdWVyeXV0aWxz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHF1ZXJ5dXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk2MkUwRTcwOTc3RkM3NDUwMEI3MjZEMDUgLyogVmFyaWFibGVQYWNrZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmFyaWFibGVQYWNrZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk2Mzc0MzU3NzY4RTZBQjFBNDhCRTQwOTIgLyogRnJhbWVidWZmZXJB
dHRhY2htZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lYnVmZmVyQXR0YWNobWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NDRBQjlGQjc3NDIyRkNBMDMwNzBDMTIgLyogQ2Fj
aGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNjQ4RjY2QUE3OEFCRTRBRjM1MjZDQTExIC8qIEluaXRpYWxpemUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5pdGlhbGl6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NEU2QkEwQUEy
NjA1NTgwQzJBODM2RjYgLyogbnVtZXJpY19sZXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbnVtZXJpY19s
ZXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVEN0E4NTdFRkU1NjA0QjM5Qjk0
NEE2IC8qIFN0YXRlTWFuYWdlckdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRlTWFuYWdlckdMLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY2QzgyQkY0RURFNkQ4M0Y2QkVBREZCMCAv
KiBSZWdlbmVyYXRlU3RydWN0TmFtZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnZW5lcmF0
ZVN0cnVjdE5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjZFRDY2Q0Mw
Mzc0QzkzRDI1QTdBOUM2IC8qIENvbnRleHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGV4
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY2RjhENjUyREYzRDM0REY4NjVB
RDYxNCAvKiBCaW5hcnlTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmluYXJ5U3RyZWFtLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY3MzJDNkJDMzNBODBGQTJBNkNGODUxRSAvKiBR
dWFsaWZpZXJUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZXJUeXBlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk2NzY3M0JCQzY2Q0UwQUFCRTQ0ODM2QzggLyogbG9hZGlt
YWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGxvYWRpbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk2N0E2QjM5NDc0NzFEOTk4MjBCMjU2NTUgLyogT3BlcmF0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gT3BlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2
OTVERTc4RUUyRDVCMzBGMjYyODBGODMgLyogU2hhZGVyTGFuZy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaGFkZXJMYW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkE1QkND
QzFFRkExQzlBMzFBNkM0MDE2IC8qIGZvcm1hdHV0aWxzZ2wuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gZm9ybWF0dXRpbHNnbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZBNkYw
RTE1NUQzRERFNDUxNUNBRDU3OCAvKiBJbml0aWFsaXplVmFyaWFibGVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluaXRpYWxpemVWYXJpYWJsZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk2QUI1QjgxRDdFQzI5RURENUIzRUQwODkgLyogUmVuZGVyYnVmZmVyR0wuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmVuZGVyYnVmZmVyR0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNkNEODQ5OUM3Q0FFQ0Q3MTc3MzhCQTBDIC8qIHRscy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSB0bHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2Q0RBNjRDRUQ3Q0I2RkZG
OTZFOUU3QzAgLyogRm9ybWF0X0lEX2F1dG9nZW4uaW5sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZvcm1hdF9JRF9hdXRvZ2Vu
LmlubDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVCMjY1NDMxODJDNTAzQTM2Q0U3
MEQ3IC8qIENvbnN0YW50VW5pb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29uc3RhbnRVbmlv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGNjJCMzQzOTI2MzZEN0JDOEJC
MTM4QiAvKiBCdWZmZXJJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1ZmZlckltcGwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkZGQzBFQTRFRTc5QTgwQ0Y2RDczQTA0IC8qIFZlcnRl
eEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlcnRleEFycmF5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcwNkU2MTkwQzk1MENCRThEM0Y5NDI5OSAvKiBJbml0aWFsaXplR2xvYmFs
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbml0aWFsaXplR2xvYmFscy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3MEQyQzYyRDMxRjMyQjAwRDUyODBGRDAgLyogU3RyZWFtUHJvZHVjZXJJ
bXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbVByb2R1Y2VySW1wbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk3MTVGOUVBOERBMDkwMEYyOEIxOEM0NjEgLyogZnVuY3Rpb25zZ2xf
dHlwZWRlZnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZnVuY3Rpb25zZ2xfdHlwZWRlZnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI0RjM5MjJEQjRDMzAyNTY0NDUyQTg5IC8qIFNoYWRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3MjVEMDZDRTU4QTg3MTc4RUIzMkEzQTYgLyogUHJ1bmVQdXJlTGl0ZXJhbFN0
YXRlbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJ1bmVQdXJlTGl0ZXJhbFN0YXRlbWVudHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJBODc0MThDNkIzQ0M3NzA2MTQ5NTMyIC8q
IGVudHJ5X3BvaW50c19nbGVzXzNfMS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBlbnRyeV9wb2ludHNfZ2xl
c18zXzEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzMxNjRFNDJCOEQ4OEM1Qjkx
NDg5MkYxIC8qIENvbXBpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBpbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzQzRDA1RkNDODgwMDJBQjMzODZDMEVBIC8q
IGxpYkdMRVN2Mi5yYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBsaWJHTEVTdjIucmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTc0NkU2RjhGQkE2RDlDM0E3MTA0NThBQSAvKiBJbWFnZUltcGwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW1hZ2VJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc0RTY1RDc1
ODA2RkMzOUFENDA5NjAwMCAvKiBWYXJpYWJsZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmFyaWFi
bGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1MDg4RjA4NUZDODQ3N0JD
RUI4Qzc1MSAvKiBTeW1ib2xUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTeW1ib2xUYWJs
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1QTIyNzY4NjRDNThGMjRBMjQz
Nzk0QyAvKiBSZW5kZXJidWZmZXJJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcmJ1ZmZlcklt
cGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzdBRjg1NjM3RTNFNTAzOERFMzhE
MEVFIC8qIGxpYkdMRVN2Mi5neXBpICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlOyBwYXRoID0gbGliR0xFU3YyLmd5cGk7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTc4MDQ3Mjk4ODFEMTY1QTEwOTI5NDgwQiAvKiBlbnRyeV9w
b2ludHNfZ2xlc18zXzAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZW50cnlfcG9pbnRzX2dsZXNfM18wLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc4MzA5NUI4QjQwREY3ODNFRUJCM0FBNCAv
KiByZW5kZXJlcl91dGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSByZW5kZXJlcl91dGlscy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBMzUxNkM4OERBNkYxOEE4RDczN0Uw
QiAvKiBsaWJwcmVwcm9jZXNzb3IuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGli
cHJlcHJvY2Vzc29yLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTdB
OEJBQ0M0ODc2QUU5MEM4NDRFQzRGNCAvKiBQcnVuZUVtcHR5RGVjbGFyYXRpb25zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBydW5lRW1wdHlEZWNsYXJhdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0FBM0FGNzc5QTM5REVGODM0MUJCMkFDIC8qIERpc3BsYXlJbXBsLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERpc3BsYXlJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0IwOUM5NThFQjE4RDY0MDU3QTg1REQ0IC8qIFNoYWRlckdMLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNoYWRlckdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDRTExMjU0MjFC
QTg4MzdERDJDMjJGNiAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdEMzA4RDBBODRBMzhDQ0U4MzAxRENGOCAvKiByZW5kZXJlcmdsX3V0aWxzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IHJlbmRlcmVyZ2xfdXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0RDMzRBOTgyNEU2MkRFQTY5OTQ4NDMyIC8qIHN0YW5kYWxvbmUuZ3lwaSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZTsg
bmFtZSA9IHN0YW5kYWxvbmUuZ3lwaTsgcGF0aCA9IC4uL2d5cC9zdGFuZGFsb25lLmd5cGk7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdEREM3NTAwNUM0QzFFMUYxRTJEQTc0OCAvKiBm
dW5jdGlvbnNnbF9lbnVtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmdW5jdGlvbnNnbF9lbnVtcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RThENjNBNjY5NjA0RjRBNjc1NkM2OTkgLyog
Z2xzbGFuZ190YWIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZ2xzbGFuZ190YWIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RUY5NEU5MTkwMkY0RUIyMkNGRkUyMDAgLyogUGF0
aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdGMjhCODgyMTdCNkMyODQ1RThDMjdBOSAvKiBWZXJ0ZXhBdHRyaWJ1dGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVmVydGV4QXR0cmlidXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdG
NzQzQjQ0RkRGRTNDRjc5RkM2OEVGRiAvKiBTdXJmYWNlTlVMTC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dXJmYWNlTlVMTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RjkwOEUxNDIwQjYx
RjNGMjBCQjYzMzcgLyogRnVuY3Rpb25zR0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnVuY3Rp
b25zR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MDAzNjA4QkY4MjY2NDBE
OTk4QTZFMjEgLyogRnJhbWVidWZmZXJOVUxMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lYnVmZmVy
TlVMTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MDA2OTRCNUREMzExOUNBMkQx
QkUxQjYgLyogbWF0aHV0aWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbWF0aHV0aWwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODA5NTU4MThCRUNDQjY3NEZBQzRCMzE3IC8qIG1hdGh1dGls
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IG1hdGh1dGlsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODA5REE5RjhCQzkxMDZENTA3M0IyNDI3IC8qIEZsYWdTdGQxNDBTdHJ1Y3Rz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZsYWdTdGQxNDBTdHJ1Y3RzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODEwNjdDQ0I3OUE4RTFCQjJDRjJGMjg1IC8qIEV4dGVuc2lv
bkdMU0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5zaW9uR0xTTC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk4NDE4RDI0Rjk2OUU0RjFERjU2MENDOUQgLyogRnVuY3Rpb25zR0wuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25zR0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODRDOEEzNzQwRUQ3MzU3M0IzNDExRDcwIC8qIEVtdWxhdGVQcmVjaXNpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRW11bGF0ZVByZWNpc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4NUI4ODRFQ0M4N0ZCNEIwNjFGOTQyNjggLyogVGV4dHVyZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
ZXh0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg3OUQ5MTQ5RDg0M0YyODBB
Q0Y1QTlFMyAvKiBGZW5jZVN5bmNOVUxMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZlbmNlU3luY05VTEwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODgwMjhDQjkxMDUyQ0Y0NUY0MzhGMDY4
IC8qIGNvcHlpbWFnZS5pbmwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29weWltYWdlLmlubDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJODgzMDdDQjJGREM1QkQ2NjhBQTFGMzhEIC8qIEJ1ZmZlck5VTEwuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQnVmZmVyTlVMTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTg5MDVCRjc0QUM0QjY1RkZCODgzNUU5QyAvKiBTdHJlYW0uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODk2NjQy
RTRGNzNEQzVDNkNEMTdBOTQ2IC8qIEZsb2F0MTZUb0Zsb2F0MzIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRmxvYXQxNlRvRmxvYXQzMi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTg5QUQ5NUVCNkI3MTc5MjVENjQxQzRBRSAvKiBEaWFnbm9zdGljc0Jhc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGlhZ25vc3RpY3NCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJODlFNjlCOTI5MEU5ODhGRjVBM0NBOTcyIC8qIFJlc291cmNlTWFuYWdlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZU1hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4QjVCQUI2NDlGN0MyNUExRTYwOTJDNkUgLyogU3VyZmFjZUltcGwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3VyZmFjZUltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OENBRTdDRDBBMDA3RkI3OEY5MTE1QTk1IC8qIGdsMy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBnbDMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOENFRUJERjJBRUM4OUM5NTA0QTBDNjhEIC8q
IERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlZmVyR2xvYmFsSW5p
dGlhbGl6ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCThEOEJEQTFFNEMzNkYw
RUEwNjc1QkY4QiAvKiBUZXh0dXJlSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0dXJlSW1wbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4RTYzMzFENTc3OUIxOUM0RkI5QTRFMzAg
LyogQmxpdEdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsaXRHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk4RTY5ODA0NUJDMjJBODNDRTA1NEY0QkUgLyogUmVtb3ZlSW52YXJpYW50RGVj
bGFyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEZDRUZFNDdEQjk5NzdDOURBRTY5QjZBIC8q
IHN0cmluZ191dGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBzdHJpbmdfdXRpbHMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MDM4OEE3NkJENDJFMTU1QjE0QzIyMjIgLyog
dmFsaWRhdGlvbkVTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHZhbGlkYXRpb25FUy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkwQ0IzMjJGQzg5MUVFREZDMTZBMjZDQSAvKiBs
aWJHTEVTdjJfc3RhdGljLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRG
aWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYkdMRVN2
Ml9zdGF0aWMuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJOTExMjM5
MjczMzE4QzM2QTZCRENBQUMyIC8qIFZhcmlhYmxlSW5mby5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBWYXJpYWJsZUluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MTM0NEVD
NjU1ODk4RDEzMDgzNTQwQ0QgLyogVHJhbnNmb3JtRmVlZGJhY2tOVUxMLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRyYW5zZm9ybUZlZWRiYWNrTlVMTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5MUNENjk1NkU0QUJDMDc4NUY2OUQ3MUEgLyogQ29udGV4dEdMLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENvbnRleHRHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkyQTIy
NEJCQTQ0RDE2N0FBM0I3MzJDMyAvKiBWYXJpYWJsZVBhY2tlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBW
YXJpYWJsZVBhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0VBOUI1QkY0
N0FEMTNCQjNBNDE5NjcgLyogZW50cnlfcG9pbnRzX2VnbF9leHQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
ZW50cnlfcG9pbnRzX2VnbF9leHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTRG
NUZDMjQxM0RDMDYzODY0RTE3MEU3IC8qIE9wZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9wZXJh
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0RjdCMzBFQzFCRkFBQzYzREM0
MzhBRCAvKiBjb21taXRfaWQucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBjb21taXRfaWQucHk7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1OEVFNDEzNEU0QzU3MEQ1M0U4MjcwRSAvKiBV
bmlmb3JtTGlua2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaWZvcm1MaW5rZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTVCNkE1RkU4REIwOUU0OEZBMjYwNEUwIC8qIGVudHJ5X3Bv
aW50c19nbGVzXzNfMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBlbnRyeV9wb2ludHNfZ2xlc18z
XzEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NjczMjVFQUQyOTUyRURCNTAw
MzFCOEMgLyoga2hycGxhdGZvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0ga2hycGxhdGZvcm0uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTZBMjVCQjY5MDhERUM5MUQ1QkU1OUNBIC8qIFBy
ZXByb2Nlc3Nvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmVwcm9jZXNzb3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOTdCNzVCMTI4MTgyQTMxQzdFRkU3RDcxIC8qIFN5c3RlbUluZm8u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3lzdGVtSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTk4QjlDOTEzMzNCQjYzMjUyNkVCNUUxMiAvKiBQbGF0Zm9ybS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQbGF0Zm9ybS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OEU1
NUQ4N0EyNkNGREIwMDQwQzAxMUQgLyogZW50cnlfcG9pbnRzX2VnbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBlbnRyeV9wb2ludHNfZWdsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5MTAw
REIzRDNGODlEMENFNDRDNEJBQyAvKiBRdWVyeUdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFF1
ZXJ5R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QTkwNzYyMkI4MTcyMUE2
QUFFMDAwMDMgLyogVmVyc2lvbi5pbmwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmVyc2lvbi5pbmw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTlCMjA5RUNCRDJGNUJEMTEzQzA2MUEwMCAvKiBlZ2xwbGF0Zm9ybS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBlZ2xwbGF0Zm9ybS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5QjcyMDY5QkY1QTMxMDgzNzk5MEY1NTYgLyogSW50ZXJtVHJhdmVyc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSW50ZXJtVHJhdmVyc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5QjlCRDgyMUQ3Qzg4MTA3RjA5REIyNzIgLyogY29weV9jb21waWxlcl9kbGwuYmF0
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IGNvcHlfY29tcGlsZXJfZGxsLmJhdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOUM4QjNGQkJDMzFDRDJFMDQxQzMzN0RBIC8qIFRva2VuaXplci5sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFRva2VuaXpl
ci5sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QzkwNUEzNzE0OTgzQjVEODVDODkw
MjIgLyogdmFsaWRhdGlvbkVTLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHZhbGlkYXRpb25FUy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Q0YxN0UyNDJGMUE5ODFGNTU2MTUxQjcgLyogU3Rh
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOUQwQTc4OTQ3NkI5QzZCNzQwMzgwNEExIC8qIEZlbmNlTlZHTC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGZW5jZU5WR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RDJE
NjRDODA1RjEzQTA0OTJGNjI3REYgLyogVHJhbnNmb3JtRmVlZGJhY2tHTC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUcmFuc2Zvcm1GZWVkYmFja0dMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOUQ0Mzg3OEI0Qzk4OEI1NkE4QjIzNzY4IC8qIEZyYW1lYnVmZmVyQXR0YWNobWVu
dE9iamVjdEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0
SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RDU5MERCMTMwNDQzMDkyQkFG
QTAxRTUgLyogU2hhZGVyTlVMTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFkZXJOVUxMLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUU1MzUwNzU1OEUwMjVFQTAzOUVEOTAy
IC8qIENvbXBpbGVySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21waWxlckltcGwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUU2MDE1QzdEQUM0MDhFQjU0Q0ExQjMxIC8qIGVudHJ5
X3BvaW50c19nbGVzXzJfMC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBlbnRyeV9wb2ludHNfZ2xlc18yXzAu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUU4MDcyODE0RTc5QzE5NUY2ODA3Qzg2
IC8qIERpc3BsYXlJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlJbXBsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGOEZDREQ3OEU5MTY4MUUxM0IxN0JFRiAvKiBXaW5kb3dT
dXJmYWNlQ0dMLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2luZG93U3VyZmFjZUNHTC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTA1MUUxRDQ2RjMxRkIwM0JDMTI3MjA0IC8q
IFF1ZXJ5SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWVyeUltcGwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTFDQjRDNTA4OTAyM0Q2ODA4MjY1N0JBIC8qIFBhcnNlQ29udGV4dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQYXJzZUNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTFDRjg5REJGMTJERUZCRkI4MjBBNjI0IC8qIEVtdWxhdGVHTEZyYWdDb2xvckJyb2Fk
Y2FzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBFbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFFMjhBNzY4MTUwNDIyOTlEN0IyRTRFIC8qIFRy
YW5zZm9ybUZlZWRiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zZm9ybUZlZWRiYWNrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEyMjk5N0UxMDgxRUNEQTUwNzcwMzA4MyAvKiBW
YWxpZGF0ZVN3aXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWxpZGF0ZVN3aXRjaC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBMzJCODgyRTcwREJBRDI1MkMwMkVGMjYgLyogRmVuY2VT
eW5jTlVMTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGZW5jZVN5bmNOVUxMLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTQwNUE5QUUxOTBBRjY0MEREQkVFNUY0IC8qIEZlbmNl
TlZOVUxMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZlbmNlTlZOVUxMLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU2QjE3RDVCODE3NkFBM0MwRkU0QkFBIC8qIEZlbmNlTlZJ
bXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZlbmNlTlZJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUE2QkY5NUZDRENBNDUzMTFEMTE4NDQ4MSAvKiBsaWJHTEVTdjIuZHlsaWIgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5t
YWNoLW8uZHlsaWIiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJHTEVTdjIuZHlsaWI7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUE2QzJGMTUyRTY3REQxMjJD
N0M2RTkxNSAvKiBmb3JtYXR1dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmb3JtYXR1dGlscy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNkQ5NjQ5OUI3MDk5REVFNDc0QjY2NjEgLyog
ZXhwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGV4cG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNzUwMkRBNzU1NkRCNkZBNDI1NTVEODUgLyogSW5kZXhSYW5nZUNhY2hlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluZGV4UmFuZ2VDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE3NTdDRjI2MjU5N0YwRTY2OUJDM0NFOSAvKiBlZ2wuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gZWdsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3QTFDRDU5RDRFQTc0
QTZBOEIyQ0ZENiAvKiBGZW5jZU5WR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmVuY2VOVkdMLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4NURCNTM1MDBBRkUzQjQyQ0EyQjA5RCAvKiBj
b3B5aW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29weWltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUE4OTIwM0IyMDk3REZCNUNCMjg3MDAzMyAvKiBTYW1wbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNhbXBsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTk0NkE0
RDE5NEYwQkI2NzM1QUM5OTJBIC8qIHRscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSB0bHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTk5MjNDQ0RGODQ5OUJGQ0E0OUQ4ODA4IC8qIFJlY29y
ZENvbnN0YW50UHJlY2lzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlY29yZENvbnN0YW50
UHJlY2lzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTlBQTA5OEMxOTAz
NUYzQzQ5OTlDMUJDIC8qIGFuZ2xlX2dsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGFuZ2xlX2dsLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBNDUwNDhFRjcxNzExNUE2Q0I2RTUwQyAvKiBF
eHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhwYW5k
SW50ZWdlclBvd0V4cHJlc3Npb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QUE3NUEwRUJCRDIzMTQ4RTYzRURDNTNBIC8qIE91dHB1dEdMU0xCYXNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE91dHB1dEdMU0xCYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQUIwNDc0RjdDQzYwRTM0N0NGQ0RBN0ExIC8qIFZlcnNpb25HTFNMLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFZlcnNpb25HTFNMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QUJBQ0Y3RkQxNjlBREJBOUU5QUY3NDcwIC8qIERpc3BsYXlOVUxMLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERpc3BsYXlOVUxMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFDMzZGOUFEM0Iw
OTZFMTk3QzY4OTQ5RSAvKiBXb3JrZXJUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29y
a2VyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUQyRkIxMkRCNjE0
NDNGNjU0ODhBMDAxIC8qIFNoYWRlckdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNoYWRlckdM
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUZBRUQ3MTkwQzkzNUVFQTg3NzY3
RDU2IC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmV3
cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCMDY5NTU1OTc4RTRDRjAyMDUzOERCRjggLyogUHJvZ3JhbS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
cm9ncmFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIwODQ1Q0RFNjQ0NTJENUI3
QjcyMTk3NyAvKiBSZXdyaXRlRG9XaGlsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXdyaXRl
RG9XaGlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIwOTA5MUY3MTZFRDZG
NkMxREZBNUI5MyAvKiBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
MTAyNjRFOUEwQzc2MUE5QjhGNjM0RkUgLyogdmFsaWRhdGlvbkVTMi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSB2YWxpZGF0aW9uRVMyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QjEwRkNENzk3NkU3OUIwMjlCRDNFNTZFIC8qIEhhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEhhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQjJCNkQ3QjVCNzQ3OUUwNDMxRTlBM0RBIC8qIERldmljZU5VTEwuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRGV2aWNlTlVMTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUIyQkMyRjgwMzVBQzlEOTY4QkNDNTU4MSAvKiBJbml0aWFsaXplVmFyaWFibGVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluaXRpYWxpemVWYXJpYWJsZXMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQjJFOEVBQUFEM0MxREU3MjEyMzUyQTFEIC8qIEZlbmNlU3luY0dMLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZlbmNlU3luY0dMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQjJFQ0RDMDA5NDI5Q0M5Q0U3RkZBRjJGIC8qIERldmljZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
MzgxNTc3Rjc5REM4Mzc3OTcxQkMzOTAgLyogSW50ZXJtZWRpYXRlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEludGVybWVkaWF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUI1
RTNCRDY5RkFERDU3Qzk3MzdDOTkxNiAvKiBkcml2ZXJfdXRpbHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gZHJpdmVyX3V0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjZC
ODAwQ0M3MDQ2QjdENjAxREU0N0NGIC8qIEV4cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFeHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQjZFRTVDRDVBMUYyMzBCNzFBN0UxQTUxIC8qIFJlbmRlcmJ1ZmZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJidWZmZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCNzFEOTAyMTQwQTZBMzEwMjdFRDk4N0YgLyogUGJ1ZmZlclN1cmZh
Y2VDR0wubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYnVmZmVyU3VyZmFjZUNHTC5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjc5MDlGNkU5MUM2M0FFMDEyOEU5MDcyIC8qIFBy
b2dyYW1OVUxMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2dyYW1OVUxMLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjg2MzFFRjBGNzkwNDBEQjYzRTg0NjQ3IC8qIGxpYnRy
YW5zbGF0b3IuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBl
ID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGlidHJhbnNsYXRvci5h
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQlCODY0ODQ3NThCRjVEMjUx
NEMyMjdDODkgLyogV29ya2VyVGhyZWFkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclRocmVhZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCODgyOTlGQThGQ0M4RDdDMzJDNURBMjcg
LyogVW5mb2xkU2hvcnRDaXJjdWl0QVNULmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZm9sZFNob3J0Q2ly
Y3VpdEFTVC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCOEI2REU5QzFFREFDNEI5
QTNBQzY2REYgLyogQWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
ZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUI5RTdBNzAyRDAzMkZCOThCRDU4NzdGMCAvKiByZW5kZXJlcl91dGlscy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSByZW5kZXJlcl91dGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCOUVB
Q0JCODdFREU1RDZDMDM4QTdGMUEgLyogRnJhbWVidWZmZXJOVUxMLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEZyYW1lYnVmZmVyTlVMTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJBRTJFNzg0QzAyNzJBMjhGMTQyRTQ4MSAvKiBGZW5jZVN5bmNJbXBsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZlbmNlU3luY0ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkIyQjJD
ODg5RjczRUZDMTJGQzQ2ODk0IC8qIFRyYW5zZm9ybUZlZWRiYWNrLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFRyYW5zZm9ybUZlZWRiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkI1OEM3MzlCMkI1Q0EyMTBFN0ZDNDMwIC8qIEltYWdlTlVMTC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbWFnZU5VTEwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkMyNTJERjQwNEE4
RjQyODFGNTI2RTBGIC8qIEhhbmRsZUFsbG9jYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBI
YW5kbGVBbGxvY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzI1NTA4
RDk1NUI0OThFOTdBOTcwNjggLyogVmFsaWRhdGVMaW1pdGF0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBWYWxpZGF0ZUxpbWl0YXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJD
MzFGOTk3MUNFQzc3QkFDNjMzREY2OCAvKiBsaWJhbmdsZV9pbWFnZV91dGlsLmEgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1
ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYmFuZ2xlX2ltYWdlX3V0aWwuYTsgc291cmNlVHJlZSA9
IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJQkM0MkUwMkExNEYwMkIzM0QzMTY4MTkzIC8qIHRy
YWNlX2V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHRyYWNlX2V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDRTUzMzNBMEE2NUZDMEE3RjY4QUU4MSAvKiBnbHNsYW5nX3RhYi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBnbHNsYW5nX3RhYi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlCRDJGODlDNkQxRDMwQzY5NENCMDk1RkEgLyogY29tbW9uLmd5cGkgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGU7IG5hbWUgPSBj
b21tb24uZ3lwaTsgcGF0aCA9IC4uL2d5cC9jb21tb24uZ3lwaTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkRBODIyMzNDQjQyMjlBMkNDREExNEEzIC8qIFBhdGhHTC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQYXRoR0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkRBRkNEOTRF
N0JGODMxRTIwODc0REMzIC8qIGRyaXZlcl91dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBkcml2ZXJf
dXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkUzNEJCN0VENzZFRkQxOTQ4
MzU4MDJFIC8qIERlYnVnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJFNjlBMEFFMkNEQTIxODNBOUZBQzEyRSAvKiBTdXJmYWNlR0wuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3VyZmFjZUdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUJFRTg1NkQ2NjBDNTA3NzE4QTVFNkFCMSAvKiBsaWJFR0wuZ3lwaSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZTsgcGF0aCA9IGxpYkVH
TC5neXBpOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRjQzOEYxOTUzNDIwMEUwMjA4
RDQwMzMgLyogUXVlcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVlcnkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkZCOTc2QTRBOERBOEEwRjk1RDQ5NTEzIC8qIFZhbGlkYXRlT3V0cHV0
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBWYWxpZGF0ZU91dHB1dHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkZGNDNDMjY3RjQyRTRERkUyNzI4N0Q0IC8qIEZyYW1lYnVmZmVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lYnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzA2MEVDMDhBQkJBMTk2NEM3ODZBNDRDIC8qIGxvYWRpbWFnZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBsb2FkaW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMDc0MzlERDRDN0EzMkI4RUE2REExMzkgLyogRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXJy
b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzBCNzE1RDY4QjFFNTE1QTU2NUM1
MUJGIC8qIFZhbGlkYXRlT3V0cHV0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYWxpZGF0ZU91
dHB1dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMTNBOUY4RkIxREE5MTA3
RUJDM0UyMDYgLyogUXVhbGlmaWVyVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlm
aWVyVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMzMyQzM5N0NEMUZD
OTRFNUY1NUFCNDkgLyogQnJlYWtWYXJpYWJsZUFsaWFzaW5nSW5Jbm5lckxvb3BzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMzcwQTFEQjRFMTJGQzcwRkNCRTcwQjYgLyogVHJhbnNsYXRv
ckVTU0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNsYXRvckVTU0wuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDM0RGQUQ1OUU5QTQ4Q0UzQjkyNjM2NDYgLyogU2VhcmNo
U3ltYm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlYXJjaFN5bWJvbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDNUU4QjNFRjc5N0Y1RUY0MDBGQzZGODIgLyogTGV4ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTGV4ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzY0Qzg4RDAw
MDQyM0MzQ0E0OURBODBCIC8qIERpcmVjdGl2ZUhhbmRsZXJCYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERpcmVjdGl2ZUhhbmRsZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM4
RDY0NDkzQ0Q5ODZDRDNDRDFBRERCRCAvKiBUb2tlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUb2tlbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDOEZFNjJGNjk2RDNGMkU1RDRDODMxOUIg
LyogRGlzcGxheUdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlHTC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM5NUJGRTY2Q0JENzVEMDIyNTRENkM2NSAvKiBQYXRo
TlVMTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQYXRoTlVMTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDOTlBREU3QTNGNTQzQjhFQjNGRkMzMEYgLyogZGVidWcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gZGVidWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzlCQUZBM0M0QUVFRjQw
MUNDRjQ2NTRGIC8qIE1hY3JvRXhwYW5kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFjcm9FeHBhbmRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQjFDMzk0QjU0QjdEQzFBMkMwNEY3
N0IgLyogVW5pZm9ybUxpbmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmlmb3JtTGlua2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0MxNEJCQkM0RkM2RDA2RkM4REU5
NUI0IC8qIGdsMi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBnbDIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0M1NTVCMDJDRDYwRDM1MjFGOEJFQ0ZEIC8qIHNhZmVfY29udmVyc2lvbnNfaW1w
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBzYWZlX2NvbnZlcnNpb25zX2ltcGwuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0M4QjlBODQ4RUMzMTBGNkU1N0VBNUQ4IC8qIFRleHR1cmUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dHVyZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNENzY4MkMxRkQxNDQ5NDREM0U3QzcyNSAvKiBJbWFnZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDk2MzVDQzdEQ0M1Njk5
QkIxODg0RkQgLyogU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREI0NzA1RThCNDYyOTI4OUY0Rjk3QzQgLyogU2Nh
bGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNj
YWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQzY5QUYzRjlDNTgyNjcyM0NFODJGNyAvKiBBZGRBbmRUcnVlVG9Mb29wQ29u
ZGl0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFkZEFuZFRydWVUb0xvb3BDb25kaXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTE4MUM1NDgzM0QyRjZGQjFBN0Y4
QkQgLyogQmFzZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VUeXBlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDRUY2OEFEQ0U4REM2RTJENTk3QkU4MkIgLyogVHJhbnNmb3Jt
RmVlZGJhY2tHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2Zvcm1GZWVkYmFja0dMLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNGOTlGQURGNTNBMzE0NTREMEE3REM1RSAvKiBFeHBy
ZXNzaW9uUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25QYXJzZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDAzMTVGMkYyRTRGMDM0RDdCRDNBMTg5IC8qIFNoYWRl
clZhcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZGVyVmFycy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlEMUUwOUQ1OUVBNzE2QjIxQTlGQUE2NTIgLyogZXZlbnRfdHJhY2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IGV2ZW50X3RyYWNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlEMjQzM0JCMEY1MDI4MDk3MEMwNTdFNTkgLyogQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
b250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQzMTZDMERGMjUzQTcwMTky
RThBQTZEQiAvKiB2dWxrYW4uZ3lwaSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gc291cmNlY29kZTsgbmFtZSA9IHZ1bGthbi5neXBpOyBwYXRoID0gdnVs
a2FuX3N1cHBvcnQvdnVsa2FuLmd5cGk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQz
OUZERkQyOUVBN0FCMDJERjcwOTlGMyAvKiB2YWxpZGF0aW9uRVMyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IHZhbGlkYXRpb25FUzIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDNENDkzNDcy
MjdFM0NCMzhGRjU1RThDIC8qIGNvbW1vbl9kZWZpbmVzLmd5cGkgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGU7IG5hbWUgPSBjb21tb25f
ZGVmaW5lcy5neXBpOyBwYXRoID0gLi4vZ3lwL2NvbW1vbl9kZWZpbmVzLmd5cGk7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUQ0MDQ0MjcyQ0IwRDA5QTFGODM2RjlBOSAvKiBsZW5ndGhf
bGltaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGxlbmd0aF9saW1pdHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRDU1REYyQjYxQTNCODYxNDc2QTQ2NURFIC8qIFZhbGlkYXRlR2xvYmFs
SW5pdGlhbGl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmFsaWRhdGVHbG9iYWxJbml0aWFs
aXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQ2ODVCRTIzNEUwOTBCRDE3
OEQ4OTE0RSAvKiBlZ2xleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZWdsZXh0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUQ2OUQ2NDhDQjQzM0UxQTZCNjIxOThBMyAvKiBDb21waWxlck5V
TEwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGlsZXJOVUxMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUQ2QkVGMjg2QzM0RDNDMTNGN0IxQzlBNCAvKiB1dGlsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IHV0aWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDZEQzBEM0M0MTA1MTJG
NzREOUM0MkFEIC8qIFNoYWRlck5VTEwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZGVyTlVMTC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlENzMzRDI5M0ZDOTMzMUYwMjUxOEI5QTUgLyog
Z2wyZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdsMmV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlENzU1MDZDNTRBREU1QTY5MzJBQTFCRjMgLyogRmVuY2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDdCMzg5QkUzMkFCQjU1
QTgwMkRFREVCIC8qIFRleHR1cmVOVUxMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHR1cmVOVUxMLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQ3QkRCNDMwNUFBQkExMTNBOTYxMTdBNyAv
KiBWZXJ0ZXhBcnJheUdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZlcnRleEFycmF5R0wuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEODk2ODJBRUM1MjU3RkY5Qjg0MjAwNTIg
LyogU2hhZGVyTGFuZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkZXJMYW5nLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUQ4REU0Q0EwOEQyOENBMTU3MzkzNjU4MyAvKiBFbXVsYXRlUHJl
Y2lzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVtdWxhdGVQcmVjaXNpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQTQ1RDYxRUU5QTFBMDA0RDM1MDBCODAgLyogQ29u
dGV4dEdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRleHRHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlEQThBNkJDMzAxOTlBQjc0MzBBQTcxQzIgLyogbG9hZF9mdW5jdGlvbnNfdGFi
bGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gbG9hZF9mdW5jdGlvbnNfdGFibGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJREE5MTRDQkZGNTQ3NDk5MEU5MEVBNzhBIC8qIGluZGV4ICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IGluZGV4OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQjc0QjhGQkZDRTFENjMxNzFG
Mjg5OTMgLyogQ29udGV4dEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGV4dEltcGwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREJBRjFBMjhGM0IwRDVGNzBEM0E5MDU5IC8qIFJl
ZkNvdW50T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZkNvdW50T2JqZWN0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCURCRDc1QTlCN0Q4RTVGM0FBODZGREVERCAvKiBsaWJhbmds
ZV9ncHVfaW5mb191dGlsLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRG
aWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYmFuZ2xl
X2dwdV9pbmZvX3V0aWwuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJ
REMwRjkzOTYzMzE1NDY4REM2Qzc1MDQzIC8qIEJsaXRHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBCbGl0R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQzg0OTQyOTU4OEYx
QjEyRTc1NjFFMjYgLyogU3VyZmFjZUdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1cmZhY2VH
TC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUREMUU2N0U5RDVCNzJDRkJENkJB
N0IxQSAvKiBEaXJlY3RpdmVQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlyZWN0aXZlUGFyc2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURENDk4QzNCQzUzRDhEQzYyQkM5NEU3
QyAvKiBGb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtYXRf
dGFibGVfYXV0b2dlbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURENEIwNTlD
RkM2NzlEQkFEMkNENjQ4MSAvKiBUb2tlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUb2tlbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURFMTNGNDBCRjI5REZFRDM0NEJFRDhD
RCAvKiBUcmFuc2xhdG9yRVNTTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2xhdG9yRVNTTC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjZCODc1MzZDMzgwREYxOTFGQjJGMzggLyog
RnJhbWVidWZmZXJHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFtZWJ1ZmZlckdMLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREY4QjJFOTUyMDYwMEM3NDNCMEQ3QTMwIC8q
IFRyYW5zZm9ybUZlZWRiYWNrSW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2Zvcm1GZWVkYmFj
a0ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTAwMUZFQUIzNzdGMzY1MTZG
OTM4NDc1IC8qIHV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB1dGlsaXRpZXMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTRBQzJDQkMyQjBGNzQzNjZFODMzREYg
LyogQ2FsbERBRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsREFHLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUxNEIyQUYwOTc4Q0ZGNjQ2MjhCOEQ4MiAvKiBBdHRyaWJ1dGVNYXAuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXR0cmlidXRlTWFwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUUxRUQwQjEzQjg5NTc1QTU4QTA1REU2NCAvKiBzYWZlX21hdGhfaW1wbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBzYWZlX21hdGhfaW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlF
MUY0MzdCODE3ODM3RjFBRUEyMjRFMDAgLyogTG9nZ2luZ0Fubm90YXRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBMb2dnaW5nQW5ub3RhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRTMzOEIzN0Q1QzI0QTdGNTU4MjNFMDc5IC8qIERpcmVjdGl2ZUhhbmRsZXJCYXNlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpcmVjdGl2ZUhhbmRsZXJCYXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2NzhBMTdENTY1Nzk0NEFCOURFODU3IC8qIEludGVybWVk
aWF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcm1lZGlhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRTM3REVFMDVFNUFBREQ3MTgyQTM3NUFBIC8qIGxvZ2dpbmcuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gbG9nZ2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDE4QTdC
RUVEMTlDRjVEQjVBNEZGNkEgLyogQ29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDMwNzc5MjlDRDYzMTk0OTk2RTMxQ0UgLyog
Q2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFNkFCQjdCODkwMDhGQkUwNzU5QTQ3NTUgLyogZm9ybWF0dXRpbHNnbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBmb3JtYXR1dGlsc2dsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUU2REVGMDFBOEI1MUJENjBCQUE2NjY1OCAvKiBEaXNwbGF5Q0dMLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRGlzcGxheUNHTC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRTczQ0E2OTg3NzNGQzA1Q0UxMERCMTk4IC8qIFByb2dyYW1JbXBsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFByb2dyYW1JbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU3OUM2MDY3
QTZEM0Q1Qjk2MDVCQzcwMyAvKiBnbHNsYW5nLmwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gZ2xzbGFuZy5sOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFODIyMjlGODZFREVFMDIxNjkzOEQzQTkgLyogVW5mb2xkU2hv
cnRDaXJjdWl0QVNULmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuZm9sZFNob3J0Q2lyY3VpdEFT
VC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU4MjM5RkEwRUFFRDE3OTZGM0Y0
RkZGRSAvKiBUcmFuc2xhdG9yR0xTTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFuc2xhdG9y
R0xTTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU4NDc5MjAzN0Y0QTYxNUQ2
NjIzQ0MzQiAvKiBQb29sQWxsb2MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9vbEFsbG9jLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRThGRjAzQUVFQjRBQkZDMEUyQ0QxNDc3
IC8qIE91dHB1dEdMU0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3V0cHV0R0xTTC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU5OTYwOEI5NjkwM0RDNzRFN0YxMTQzNSAvKiBW
ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlcnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTlEQ0EzNDYwNzFCOEJGNDg4REVCM0Q2IC8qIGJsb2NrbGF5b3V0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IGJsb2NrbGF5b3V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRUE5QUVFQTRCQ0E4Mzk0NEJFODMyREU0IC8qIGZlYXR1cmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IGZlYXR1cmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVBRThDNzI0NUNE
QjUwODgzNThFMkZFNSAvKiBJbml0aWFsaXplRGxsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
aXRpYWxpemVEbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQUZDMjhGRTRG
QTg2NkNGM0E4MTI1OTAgLyogV29ya2Fyb3VuZHNEM0QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2Fy
b3VuZHNEM0QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUIwOUFBNkY0NkYzQzJD
RjY4NjQ4NTQ5IC8qIEltYWdlTlVMTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZU5VTEwu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQjEzM0I0ODRGMjcwQzIzQUNFQURF
MDMgLyogYW5nbGV0eXBlcy5pbmwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gYW5nbGV0eXBlcy5pbmw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUVCMTRGNkY1RDlDQjVBQkE0NjM4OTMzQSAvKiBDb2RlR2VuLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVHZW4uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFQjZFMTMzODMwNDY0NzQyMThCRDE4OTQgLyogUmVtb3ZlUG93LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW92ZVBvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVC
QzI3MThGQjcwN0JFMkVERjlBNTcyMCAvKiBSZWNvcmRDb25zdGFudFByZWNpc2lvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWNvcmRDb25zdGFudFByZWNpc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlFQkREN0VENkRBRUQ3QjcyRDNGOTczMTggLyogRGlhZ25vc3RpY3MuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRGlhZ25vc3RpY3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFQzU2QzExNzY5Qzk1MDM2RTRFRDQ3M0IgLyogVmFsaWRhdGVMaW1pdGF0aW9ucy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYWxpZGF0ZUxpbWl0YXRpb25zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUNBMkNCMTIwMEY2MDFEMDhEMDI5MTdGIC8qIElucHV0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IElucHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVD
QkRFQ0U3NEMzQzQ4QzAyQjY2REI2OCAvKiBGZW5jZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBG
ZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVENThFQUQ4QzM4NzhFQTU0
N0EwREJBRSAvKiBSZW5kZXJidWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyYnVmZmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVFNzUwNTM5NkNGRTYxMDY2MEI3ODFBNyAv
KiBUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFRURBNEZGQ0RDMDg4REMyQjk3MERERkEgLyogQ29tcGlsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29tcGlsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUVGN0NDNEU3
RTAwMjg0NEI5RTUwN0Q2IC8qIERpc3BsYXlHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5R0wu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUY4Q0JCQ0MzMDQ5RDRGQTUyMEVCRThE
IC8qIERpc3BsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGMEU4REZEMDdBMjAyRjE5MDQ5NTczNkMgLyogVGV4dHVyZUdMLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRleHR1cmVHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
MjZERDZFM0QwN0QzNkQyNTM5Q0JFOUUgLyogQ29udGV4dFN0YXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbnRleHRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGMjlDRkIwRjVB
OUZDMUU4Q0JGNEY5MUQgLyogQ29sb3IuaW5sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENvbG9yLmlubDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjMwNTFERTAwQTM0MUQzMjRGQTE3MTQ0IC8qIFR5cGVzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRjM3MEU2QkRFQTFGMDNCNkJFQkRCM0ZFIC8qIFN1cmZhY2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U3VyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGM0NBQUExMjMxRDEwRDRC
RERCQzQ3NUMgLyogc3RyaW5nX3V0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHN0cmluZ191dGlscy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGM0Y2OUIwOTM0Mzg2Q0FBRTMyMDgxRDgg
LyogU2hhZGVyVmFycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFkZXJWYXJzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQxQjJERTAwMzJBMjlFNDczMzNEMDEwIC8qIElP
U3VyZmFjZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IElPU3VyZmFjZS5mcmFtZXdvcms7
IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPU3VyZmFjZS5mcmFtZXdvcms7IHNv
dXJjZVRyZWUgPSBTREtST09UOyB9OworCQlGNDI5MTQ5RENCQzIyRTU4Q0I5MTRGNEIgLyogUXVl
cnlOVUxMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1ZXJ5TlVMTC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGNDhFRjlCN0QzMDlDRDE1OEJCNDVEQkMgLyogRGlhZ25vc3RpY3NCYXNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERpYWdub3N0aWNzQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGNTk2QzU1M0IzODNEOTAwMDk1NjlBMEQgLyogUmVnZW5lcmF0ZVN0cnVjdE5hbWVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2VuZXJhdGVTdHJ1Y3ROYW1lcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGNjM4OEE3NTQ1RTlDQkE0ODBGQzhENjYgLyogQ29udGV4dE5VTEwu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29udGV4dE5VTEwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRjZGRjg3RkE0QzJFQzBDOTMxQjE2OEQwIC8qIEV4cHJlc3Npb25QYXJzZXIueSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
eWFjYzsgcGF0aCA9IEV4cHJlc3Npb25QYXJzZXIueTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRjgyMkZCQzVGODVFRkM0MkVGOTlBNDk1IC8qIE1hY3JvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1hY3JvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY4MkE2QTM1Qjg3NTU4QjA5
REI1Q0MyOSAvKiBwbGF0Zm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBwbGF0Zm9ybS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGOEQ2QUE4NjZCOUU3RTkwOUI3RUJBNDUgLyogcmVzb3Vy
Y2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gcmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRkExMERGQTBFODY0M0Q0MDcyNjQ0MEVDIC8qIENvbXBpbGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvbXBpbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZBNTM4NEQ0MzEy
NUY2NDJEOUVDRjE1OSAvKiBQcm9ncmFtTlVMTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcm9ncmFtTlVM
TC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQUY2QzAxOTMwQzQxQjg0QjJFMjU2
RTIgLyogU2hhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGQjlFNzZGMDkxOUIyQkVBNEFDOENBQkIgLyogbG9hZF9mdW5jdGlvbnNf
dGFibGVfYXV0b2dlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBsb2FkX2Z1bmN0aW9uc190YWJs
ZV9hdXRvZ2VuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkJDQ0RDM0RDMTg4
M0RBM0Q3MzcwQUY3IC8qIEZyYW1lYnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lYnVmZmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZDNjk2QjBCQzBEQzgwMjlBMTgzQzNG
RSAvKiBiaXRzZXRfdXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gYml0c2V0X3V0aWxzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZDNkU3MDRGMzJENDg4RDVBMTk1OUUyRSAvKiBkZWJ1
Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBkZWJ1Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUZDOTMxQzVGNEZBQUFEM0YyQkE5NTc3RiAvKiBnbG9iYWxfc3RhdGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gZ2xvYmFsX3N0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkNDQzRFMjYxODVDMzdGN0NGREJFODZFIC8qIFZhbGlkYXRlTWF4UGFyYW1ldGVy
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBWYWxpZGF0ZU1heFBhcmFtZXRlcnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkQzMTI2RkY5M0E0MjA0RjNFQUZBOTk1IC8qIGxpYkVHTC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBsaWJFR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGRjA4NzQxMDk5QjJFNTVCRTRDOUJEQkUgLyogSW1hZ2VJbmRleC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbWFnZUluZGV4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKy8q
IEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRnJhbWV3b3Jr
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwN0MyQkY5RThGQUIwNEYwQ0U3MzI0QzcgLyogRnJh
bWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQkxMDJDQ0Q1RTYxMDUy
RkFBODE1RDlFNTQgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NC
dWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0g
KAorCQkJCTNENERFQzY4MDBFODQ0NTM2Q0I4ODZFNiAvKiBsaWJHTEVTdjIuZHlsaWIgaW4gRnJh
bWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKKwkJfTsKKwkJNDM0QThGMjE5MUE5RkI3REE2Q0E3RDg5IC8qIEZyYW1ld29ya3MgKi8g
PSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJNjM1NjdCNjNFRTBDNkVFM0YwNDBCNjc3
IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJNkJDMzAx
MzVGREJGNUY5M0Y0Q0Y4RkI5IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFt
ZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlm
aWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKKwkJfTsKKwkJQjExMzMxRTJGQkM5QUM1MjRGOTk1ODlBIC8qIEZyYW1ld29ya3MgKi8gPSB7
CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJQjI2NzJGQzMyOUUwOTA1MTJBN0YwMDM2IC8q
IEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk4NTcwQ0JF
RkYzQzUyQkY0QkYxMDBFMUEgLyogbGliQU5HTEUuYSBpbiBGcmFtZXdvcmtzICovLAorCQkJCTI5
QjVCMkE0N0E3OTAzQTkyOUEwMDUzQyAvKiBsaWJhbmdsZV9jb21tb24uYSBpbiBGcmFtZXdvcmtz
ICovLAorCQkJCTYyNUM5MEFBNTVCNzdGREY2MDRFMUE4QSAvKiBsaWJ0cmFuc2xhdG9yLmEgaW4g
RnJhbWV3b3JrcyAqLywKKwkJCQlCMUFFOTNDNTVCMzE0OTY1OUI3REU5OEIgLyogbGlicHJlcHJv
Y2Vzc29yLmEgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlDN0VBNjg4QjYyNjE3RDQ5NjY0REQ0Nzgg
LyogbGliYW5nbGVfaW1hZ2VfdXRpbC5hIGluIEZyYW1ld29ya3MgKi8sCisJCQkJODhFNjc4RjE2
RUY0NkY2REE4OUQ1OEY4IC8qIGxpYmFuZ2xlX2dwdV9pbmZvX3V0aWwuYSBpbiBGcmFtZXdvcmtz
ICovLAorCQkJCUQ0QUE5MzA5NTExQUFDMzFFRDAzRTU5NyAvKiBDb2NvYS5mcmFtZXdvcmsgaW4g
RnJhbWV3b3JrcyAqLywKKwkJCQlCMzMyOUExRkNDRDE1OUQ4NDdGQ0ZBNzcgLyogSU9TdXJmYWNl
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCTMzM0Q0RTU4ODEzNjJDODJFRjA1QjQ3
QiAvKiBPcGVuR0wuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkJN0VFQzk5MEQ4RDU1
QUM5MTA5N0EzRUQxIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJ
CQkJNDZFRjREN0Q5QTlDNUI0NEMzMUY0QjhBIC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovLAorCQkJCUNBRTg4MDMyRDBEODM1M0JEOTVGQjEyNyAvKiBDb3JlRm91bmRhdGlvbi5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJQ0JCQUY2MTlERjc4M0RBMkZGOTU4NzhCIC8q
IEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJRDhDMUZCNkQ2
QzA0OUFDQjFFNDY0MUNEIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxl
cyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
KwkJfTsKKwkJREJDRURFNDg3N0RBMUY0NkFCNEM2RkI5IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJ
CQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBz
ZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwkJMDhDMzBBRTZENDQx
NkZBNDU4QUY3NzkyIC8qIHRyYW5zbGF0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCUNEQzY5QUYzRjlDNTgyNjcyM0NFODJGNyAvKiBBZGRBbmRUcnVl
VG9Mb29wQ29uZGl0aW9uLmNwcCAqLywKKwkJCQlCOEI2REU5QzFFREFDNEI5QTNBQzY2REYgLyog
QWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvbi5oICovLAorCQkJCUNFMTgxQzU0ODMzRDJGNkZCMUE3
RjhCRCAvKiBCYXNlVHlwZXMuaCAqLywKKwkJCQk0RjE1ODhBMTdCNjM3RkVDOUE2OTU5QjAgLyog
QnJlYWtWYXJpYWJsZUFsaWFzaW5nSW5Jbm5lckxvb3BzLmNwcCAqLywKKwkJCQlDMzMyQzM5N0NE
MUZDOTRFNUY1NUFCNDkgLyogQnJlYWtWYXJpYWJsZUFsaWFzaW5nSW5Jbm5lckxvb3BzLmggKi8s
CisJCQkJN0NFMTEyNTQyMUJBODgzN0REMkMyMkY2IC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9y
LmNwcCAqLywKKwkJCQkxNDZCMTQzOUIzMEJCRTNFOTJEQ0RCRDcgLyogQnVpbHRJbkZ1bmN0aW9u
RW11bGF0b3IuaCAqLywKKwkJCQkxMEZDM0IyMEY2MzgwMUU3Q0JGRkVBNzUgLyogQnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3JHTFNMLmNwcCAqLywKKwkJCQk0MEU5QjNFNjg0QTgzNzY3QUFCMDBDRDYg
LyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmggKi8sCisJCQkJRTQzMDc3OTI5Q0Q2MzE5
NDk5NkUzMUNFIC8qIENhY2hlLmNwcCAqLywKKwkJCQk2NDRBQjlGQjc3NDIyRkNBMDMwNzBDMTIg
LyogQ2FjaGUuaCAqLywKKwkJCQkxODNBQzZFOEZGNDYyNDVDOUYxMDVBQUIgLyogQ2FsbERBRy5j
cHAgKi8sCisJCQkJRTE0QUMyQ0JDMkIwRjc0MzY2RTgzM0RGIC8qIENhbGxEQUcuaCAqLywKKwkJ
CQlFQjE0RjZGNUQ5Q0I1QUJBNDYzODkzM0EgLyogQ29kZUdlbi5jcHAgKi8sCisJCQkJRTQxOEE3
QkVFRDE5Q0Y1REI1QTRGRjZBIC8qIENvbW1vbi5oICovLAorCQkJCTI5OTY1RjUyQjE0QTE0OTM5
NDRFRjRDMyAvKiBDb21waWxlci5jcHAgKi8sCisJCQkJRUVEQTRGRkNEQzA4OERDMkI5NzBEREZB
IC8qIENvbXBpbGVyLmggKi8sCisJCQkJNkVCMjY1NDMxODJDNTAzQTM2Q0U3MEQ3IC8qIENvbnN0
YW50VW5pb24uY3BwICovLAorCQkJCTExRDNDNzQ2Q0EzMjVCMzNCNzFFMzJCMiAvKiBDb25zdGFu
dFVuaW9uLmggKi8sCisJCQkJMUZFMTM1NkRBMTZDQjNDNTk4NUZDOEEzIC8qIERlZmVyR2xvYmFs
SW5pdGlhbGl6ZXJzLmNwcCAqLywKKwkJCQk4Q0VFQkRGMkFFQzg5Qzk1MDRBMEM2OEQgLyogRGVm
ZXJHbG9iYWxJbml0aWFsaXplcnMuaCAqLywKKwkJCQlFQkREN0VENkRBRUQ3QjcyRDNGOTczMTgg
LyogRGlhZ25vc3RpY3MuY3BwICovLAorCQkJCTE4NkI4MTQzNDIxOTI1Rjg4RDY2OTU0NCAvKiBE
aWFnbm9zdGljcy5oICovLAorCQkJCTMxQ0ExNUJCRTA0OEVDN0IwNTgxMTZEQSAvKiBEaXJlY3Rp
dmVIYW5kbGVyLmNwcCAqLywKKwkJCQk1RThENTE2QTcwNkQ5N0E1QTBBNjdDNjAgLyogRGlyZWN0
aXZlSGFuZGxlci5oICovLAorCQkJCTFGNjEyREUyRTNEOTEzMUM5MDNDODM2MSAvKiBFbXVsYXRl
R0xGcmFnQ29sb3JCcm9hZGNhc3QuY3BwICovLAorCQkJCUExQ0Y4OURCRjEyREVGQkZCODIwQTYy
NCAvKiBFbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3QuaCAqLywKKwkJCQlEOERFNENBMDhEMjhD
QTE1NzM5MzY1ODMgLyogRW11bGF0ZVByZWNpc2lvbi5jcHAgKi8sCisJCQkJODRDOEEzNzQwRUQ3
MzU3M0IzNDExRDcwIC8qIEVtdWxhdGVQcmVjaXNpb24uaCAqLywKKwkJCQlBQTQ1MDQ4RUY3MTcx
MTVBNkNCNkU1MEMgLyogRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmNwcCAqLywKKwkJCQlC
NkI4MDBDQzcwNDZCN0Q2MDFERTQ3Q0YgLyogRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmgg
Ki8sCisJCQkJNEZEQjE3NkYzQkE2NDhGQzhCQzE3OENCIC8qIEV4dGVuc2lvbkJlaGF2aW9yLmgg
Ki8sCisJCQkJNDVEREI5QUU3N0Q3M0E0MjUxOEVENzA1IC8qIEV4dGVuc2lvbkdMU0wuY3BwICov
LAorCQkJCTgxMDY3Q0NCNzlBOEUxQkIyQ0YyRjI4NSAvKiBFeHRlbnNpb25HTFNMLmggKi8sCisJ
CQkJNTQ2RDZDQzZDRTZCMUIyQTE3NzJGRUJFIC8qIEZpbmRTeW1ib2xOb2RlLmNwcCAqLywKKwkJ
CQkxRjIwMzI1NUQ0ODExNUE3NTUwQjAzMjcgLyogRmluZFN5bWJvbE5vZGUuaCAqLywKKwkJCQk4
MDlEQTlGOEJDOTEwNkQ1MDczQjI0MjcgLyogRmxhZ1N0ZDE0MFN0cnVjdHMuY3BwICovLAorCQkJ
CTBERjRBOTVDQzQxNTU4MDk1OUMwRTRFNiAvKiBGbGFnU3RkMTQwU3RydWN0cy5oICovLAorCQkJ
CTM1MjRFNDAwNjgyODBFMUE5QUI0NzQ5RCAvKiBIYXNoTmFtZXMuaCAqLywKKwkJCQk1QjJCQzc3
MjgxMzNCOUNBQzIzRDA0N0UgLyogSW5mb1NpbmsuY3BwICovLAorCQkJCTAyQzdDQjY0RDkxMjk4
MDI2MTE2MkU2MSAvKiBJbmZvU2luay5oICovLAorCQkJCTI3OTFGMDY1NjI0MTkzRTg3NkFDMUQy
RCAvKiBJbml0aWFsaXplLmNwcCAqLywKKwkJCQk2NDhGNjZBQTc4QUJFNEFGMzUyNkNBMTEgLyog
SW5pdGlhbGl6ZS5oICovLAorCQkJCUVBRThDNzI0NUNEQjUwODgzNThFMkZFNSAvKiBJbml0aWFs
aXplRGxsLmNwcCAqLywKKwkJCQk0QjNDQ0QxQkRCMDM2OUIzNTU1QTEzMDUgLyogSW5pdGlhbGl6
ZURsbC5oICovLAorCQkJCTcwNkU2MTkwQzk1MENCRThEM0Y5NDI5OSAvKiBJbml0aWFsaXplR2xv
YmFscy5oICovLAorCQkJCTZBNkYwRTE1NUQzRERFNDUxNUNBRDU3OCAvKiBJbml0aWFsaXplVmFy
aWFibGVzLmNwcCAqLywKKwkJCQlCMkJDMkY4MDM1QUM5RDk2OEJDQzU1ODEgLyogSW5pdGlhbGl6
ZVZhcmlhYmxlcy5oICovLAorCQkJCTRGOThFRDU5OTk0RDVBQzQ3ODFEREUyNCAvKiBJbnRlcm1O
b2RlLmNwcCAqLywKKwkJCQk1MTg1NzUyMkU0ODY3QTIwOTA1NTIxQjMgLyogSW50ZXJtTm9kZS5o
ICovLAorCQkJCTlCNzIwNjlCRjVBMzEwODM3OTkwRjU1NiAvKiBJbnRlcm1UcmF2ZXJzZS5jcHAg
Ki8sCisJCQkJQjM4MTU3N0Y3OURDODM3Nzk3MUJDMzkwIC8qIEludGVybWVkaWF0ZS5jcHAgKi8s
CisJCQkJRTM2NzhBMTdENTY1Nzk0NEFCOURFODU3IC8qIEludGVybWVkaWF0ZS5oICovLAorCQkJ
CTA0NjZDQkMwMERENkJEREVGMDcwNUNDOSAvKiBOb2RlU2VhcmNoLmggKi8sCisJCQkJNjdBNkIz
OTQ3NDcxRDk5ODIwQjI1NjU1IC8qIE9wZXJhdG9yLmNwcCAqLywKKwkJCQk5NEY1RkMyNDEzREMw
NjM4NjRFMTcwRTcgLyogT3BlcmF0b3IuaCAqLywKKwkJCQk1NzUwNTg4Q0QzODZFMzM1REFFQzJF
NzMgLyogT3V0cHV0RVNTTC5jcHAgKi8sCisJCQkJMkQ2RjI1MjUwRTJFQzVGMTk5QUZBMTU4IC8q
IE91dHB1dEVTU0wuaCAqLywKKwkJCQlFOEZGMDNBRUVCNEFCRkMwRTJDRDE0NzcgLyogT3V0cHV0
R0xTTC5jcHAgKi8sCisJCQkJMzM5MjE2QUI1RUQ0RjlFOURERUYyQjYwIC8qIE91dHB1dEdMU0wu
aCAqLywKKwkJCQlBQTc1QTBFQkJEMjMxNDhFNjNFREM1M0EgLyogT3V0cHV0R0xTTEJhc2UuY3Bw
ICovLAorCQkJCTVCRTBBRDg4Qzk4MkU4NzIyOEIzMDQ0MSAvKiBPdXRwdXRHTFNMQmFzZS5oICov
LAorCQkJCTYwQUY0Rjc1QUY3NkI4MDQzQTI5RTQyRiAvKiBQYXJzZUNvbnRleHQuY3BwICovLAor
CQkJCUExQ0I0QzUwODkwMjNENjgwODI2NTdCQSAvKiBQYXJzZUNvbnRleHQuaCAqLywKKwkJCQlF
ODQ3OTIwMzdGNEE2MTVENjYyM0NDM0IgLyogUG9vbEFsbG9jLmNwcCAqLywKKwkJCQkxNEJERDRE
QkY3QkFCQzI5N0NCNUNFQkQgLyogUG9vbEFsbG9jLmggKi8sCisJCQkJMkQxNDQzQ0I3OTRCOTMy
Qjc0NzVBMEI4IC8qIFByYWdtYS5oICovLAorCQkJCTJDQjFBQjM1MjREQThCQjhDRjI3MUU2OCAv
KiBQcnVuZUVtcHR5RGVjbGFyYXRpb25zLmNwcCAqLywKKwkJCQk3QThCQUNDNDg3NkFFOTBDODQ0
RUM0RjQgLyogUHJ1bmVFbXB0eURlY2xhcmF0aW9ucy5oICovLAorCQkJCTEzNTc5QjcyMDQ1RUVB
QTM5NkY1ODM2NSAvKiBQcnVuZVB1cmVMaXRlcmFsU3RhdGVtZW50cy5jcHAgKi8sCisJCQkJNzI1
RDA2Q0U1OEE4NzE3OEVCMzJBM0E2IC8qIFBydW5lUHVyZUxpdGVyYWxTdGF0ZW1lbnRzLmggKi8s
CisJCQkJQzEzQTlGOEZCMURBOTEwN0VCQzNFMjA2IC8qIFF1YWxpZmllclR5cGVzLmNwcCAqLywK
KwkJCQk2NzMyQzZCQzMzQTgwRkEyQTZDRjg1MUUgLyogUXVhbGlmaWVyVHlwZXMuaCAqLywKKwkJ
CQlBOTkyM0NDREY4NDk5QkZDQTQ5RDg4MDggLyogUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24uY3Bw
ICovLAorCQkJCUVCQzI3MThGQjcwN0JFMkVERjlBNTcyMCAvKiBSZWNvcmRDb25zdGFudFByZWNp
c2lvbi5oICovLAorCQkJCTY2QzgyQkY0RURFNkQ4M0Y2QkVBREZCMCAvKiBSZWdlbmVyYXRlU3Ry
dWN0TmFtZXMuY3BwICovLAorCQkJCUY1OTZDNTUzQjM4M0Q5MDAwOTU2OUEwRCAvKiBSZWdlbmVy
YXRlU3RydWN0TmFtZXMuaCAqLywKKwkJCQkyMjNEQjVDMEEyQ0NENEI2MkVFMjY4OUQgLyogUmVt
b3ZlSW52YXJpYW50RGVjbGFyYXRpb24uY3BwICovLAorCQkJCThFNjk4MDQ1QkMyMkE4M0NFMDU0
RjRCRSAvKiBSZW1vdmVJbnZhcmlhbnREZWNsYXJhdGlvbi5oICovLAorCQkJCUVCNkUxMzM4MzA0
NjQ3NDIxOEJEMTg5NCAvKiBSZW1vdmVQb3cuY3BwICovLAorCQkJCTMzOUZGRjM3RkVGMzZCMDlC
MUEyNkUwQyAvKiBSZW1vdmVQb3cuaCAqLywKKwkJCQlCMDg0NUNERTY0NDUyRDVCN0I3MjE5Nzcg
LyogUmV3cml0ZURvV2hpbGUuY3BwICovLAorCQkJCTU4NERBRDQ1NUYwNzdBQUMyREE0OThDRCAv
KiBSZXdyaXRlRG9XaGlsZS5oICovLAorCQkJCTBBMUMxNTJBOEQ1NUY3QzJCQkI5OUQ1RiAvKiBS
ZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5jcHAgKi8sCisJCQkJQjA5MDkxRjcxNkVENkY2QzFERkE1
QjkzIC8qIFJld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmggKi8sCisJCQkJMDhFRTY4NURDODcwMjAw
NkYwQzc1RUM5IC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5jcHAgKi8sCisJCQkJ
MUQwRkQ1MDcxQkFFOUVCMDJFQ0Y5ODIxIC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9h
dC5oICovLAorCQkJCTFFNkQ2RTQzNTE4OUVGODE0MjBFQkQ0OCAvKiBSZXdyaXRlVW5hcnlNaW51
c09wZXJhdG9ySW50LmNwcCAqLywKKwkJCQlBRkFFRDcxOTBDOTM1RUVBODc3NjdENTYgLyogUmV3
cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5oICovLAorCQkJCUNEQjQ3MDVFOEI0NjI5Mjg5RjRG
OTdDNCAvKiBTY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3MuY3BwICovLAorCQkJCTAy
OEE0NDNDRDZEQzI1QkIyNTNEMTg5MyAvKiBTY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFy
Z3MuaCAqLywKKwkJCQk0RTc0NEMzNTEyN0I4MURBNTE2RUNDNTkgLyogU2VhcmNoU3ltYm9sLmNw
cCAqLywKKwkJCQlDM0RGQUQ1OUU5QTQ4Q0UzQjkyNjM2NDYgLyogU2VhcmNoU3ltYm9sLmggKi8s
CisJCQkJMkQ4RTc3RkEwRUE2NDdBREQ3RjUyMzA4IC8qIFNldmVyaXR5LmggKi8sCisJCQkJNjk1
REU3OEVFMkQ1QjMwRjI2MjgwRjgzIC8qIFNoYWRlckxhbmcuY3BwICovLAorCQkJCUYzRjY5QjA5
MzQzODZDQUFFMzIwODFEOCAvKiBTaGFkZXJWYXJzLmNwcCAqLywKKwkJCQk3NTA4OEYwODVGQzg0
NzdCQ0VCOEM3NTEgLyogU3ltYm9sVGFibGUuY3BwICovLAorCQkJCTBBMUNGRjg3MEQ4MEVBQTkz
REFCMDA5QSAvKiBTeW1ib2xUYWJsZS5oICovLAorCQkJCUMzNzBBMURCNEUxMkZDNzBGQ0JFNzBC
NiAvKiBUcmFuc2xhdG9yRVNTTC5jcHAgKi8sCisJCQkJREUxM0Y0MEJGMjlERkVEMzQ0QkVEOENE
IC8qIFRyYW5zbGF0b3JFU1NMLmggKi8sCisJCQkJRTgyMzlGQTBFQUVEMTc5NkYzRjRGRkZFIC8q
IFRyYW5zbGF0b3JHTFNMLmNwcCAqLywKKwkJCQkxNUE1OEYyREU4ODkxRUY3NzJBNzdBMTEgLyog
VHJhbnNsYXRvckdMU0wuaCAqLywKKwkJCQlGMzA1MURFMDBBMzQxRDMyNEZBMTcxNDQgLyogVHlw
ZXMuY3BwICovLAorCQkJCUVFNzUwNTM5NkNGRTYxMDY2MEI3ODFBNyAvKiBUeXBlcy5oICovLAor
CQkJCUU4MjIyOUY4NkVERUUwMjE2OTM4RDNBOSAvKiBVbmZvbGRTaG9ydENpcmN1aXRBU1QuY3Bw
ICovLAorCQkJCUI4ODI5OUZBOEZDQzhEN0MzMkM1REEyNyAvKiBVbmZvbGRTaG9ydENpcmN1aXRB
U1QuaCAqLywKKwkJCQkwQkE1NUJFMDQ4RDg4REE4OTY4Nzg5ODggLyogVXNlSW50ZXJmYWNlQmxv
Y2tGaWVsZHMuY3BwICovLAorCQkJCTIzMzM5RDkwMUYyRjc0N0I2OEM3RUQ1QSAvKiBVc2VJbnRl
cmZhY2VCbG9ja0ZpZWxkcy5oICovLAorCQkJCUQ1NURGMkI2MUEzQjg2MTQ3NkE0NjVERSAvKiBW
YWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmNwcCAqLywKKwkJCQkyMTc3MjIwQzM2RTVGN0Y2NjdC
OTIzNTkgLyogVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplci5oICovLAorCQkJCUVDNTZDMTE3NjlD
OTUwMzZFNEVENDczQiAvKiBWYWxpZGF0ZUxpbWl0YXRpb25zLmNwcCAqLywKKwkJCQlCQzI1NTA4
RDk1NUI0OThFOTdBOTcwNjggLyogVmFsaWRhdGVMaW1pdGF0aW9ucy5oICovLAorCQkJCTE2NkY5
RkVCMDQ0MUVERjMzMTY0RjAwOCAvKiBWYWxpZGF0ZU1heFBhcmFtZXRlcnMuY3BwICovLAorCQkJ
CUZDQ0M0RTI2MTg1QzM3RjdDRkRCRTg2RSAvKiBWYWxpZGF0ZU1heFBhcmFtZXRlcnMuaCAqLywK
KwkJCQkyNjQ2MzVBNTZGN0YxREQyRjgwOUQ3QjUgLyogVmFsaWRhdGVNdWx0aXZpZXdXZWJHTC5j
cHAgKi8sCisJCQkJNTRFMjIzREU0ODJBMDgzMUY4MEUyMDFBIC8qIFZhbGlkYXRlTXVsdGl2aWV3
V2ViR0wuaCAqLywKKwkJCQlDMEI3MTVENjhCMUU1MTVBNTY1QzUxQkYgLyogVmFsaWRhdGVPdXRw
dXRzLmNwcCAqLywKKwkJCQlCRkI5NzZBNEE4REE4QTBGOTVENDk1MTMgLyogVmFsaWRhdGVPdXRw
dXRzLmggKi8sCisJCQkJM0RFMzEwNTk5RkUwRDU5NEMyNzREMkUxIC8qIFZhbGlkYXRlU3dpdGNo
LmNwcCAqLywKKwkJCQlBMjI5OTdFMTA4MUVDREE1MDc3MDMwODMgLyogVmFsaWRhdGVTd2l0Y2gu
aCAqLywKKwkJCQk5MTEyMzkyNzMzMThDMzZBNkJEQ0FBQzIgLyogVmFyaWFibGVJbmZvLmNwcCAq
LywKKwkJCQk3NEU2NUQ3NTgwNkZDMzlBRDQwOTYwMDAgLyogVmFyaWFibGVJbmZvLmggKi8sCisJ
CQkJNjJFMEU3MDk3N0ZDNzQ1MDBCNzI2RDA1IC8qIFZhcmlhYmxlUGFja2VyLmNwcCAqLywKKwkJ
CQk5MkEyMjRCQkE0NEQxNjdBQTNCNzMyQzMgLyogVmFyaWFibGVQYWNrZXIuaCAqLywKKwkJCQlB
QjA0NzRGN0NDNjBFMzQ3Q0ZDREE3QTEgLyogVmVyc2lvbkdMU0wuY3BwICovLAorCQkJCTNBRUMz
NzJEODA3MzMyRkMyODZCRUQ5NSAvKiBWZXJzaW9uR0xTTC5oICovLAorCQkJCUU5RENBMzQ2MDcx
QjhCRjQ4OERFQjNENiAvKiBibG9ja2xheW91dC5jcHAgKi8sCisJCQkJMDMzOEVFMEEwREE0Mzcy
Qjc2QjNDOUI0IC8qIGJsb2NrbGF5b3V0LmggKi8sCisJCQkJNUJDNjlBNjc1RDZFMzlCRTdFQTA0
NjU3IC8qIGdsc2xhbmcuaCAqLywKKwkJCQlFNzlDNjA2N0E2RDNENUI5NjA1QkM3MDMgLyogZ2xz
bGFuZy5sICovLAorCQkJCTMyMzQxMDBBOUY1RUQyOEQ4MzQwMjYzMSAvKiBnbHNsYW5nLnkgKi8s
CisJCQkJMjA5NUMxQ0NFQjBFRENGODcyMjNBQzY4IC8qIGdsc2xhbmdfbGV4LmNwcCAqLywKKwkJ
CQk3RThENjNBNjY5NjA0RjRBNjc1NkM2OTkgLyogZ2xzbGFuZ190YWIuY3BwICovLAorCQkJCUJD
RTUzMzNBMEE2NUZDMEE3RjY4QUU4MSAvKiBnbHNsYW5nX3RhYi5oICovLAorCQkJCTQ2NDUxN0FG
Qzk0MkM1NEJCMDM4QTlCNSAvKiBpbnRlcm1PdXQuY3BwICovLAorCQkJCUQ0MDQ0MjcyQ0IwRDA5
QTFGODM2RjlBOSAvKiBsZW5ndGhfbGltaXRzLmggKi8sCisJCQkJMzZCRDMxQzQ4ODc1RTNGODk0
NDNBQTJGIC8qIHV0aWwuY3BwICovLAorCQkJCUQ2QkVGMjg2QzM0RDNDMTNGN0IxQzlBNCAvKiB1
dGlsLmggKi8sCisJCQkpOworCQkJcGF0aCA9IHRyYW5zbGF0b3I7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OworCQkwQUU0RDdBM0MxREMwNDVCNjhCRkM5MzggLyogR0xFUzMgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCThDQUU3Q0QwQTAw
N0ZCNzhGOTExNUE5NSAvKiBnbDMuaCAqLywKKwkJCQk1NUQ0RTg5MTZDQzdERUE2MjYzRjlGNjAg
LyogZ2wzMS5oICovLAorCQkJCTFGRDI5MjVFQTlCNEM0OTJCNzlEQ0Q5NyAvKiBnbDMyLmggKi8s
CisJCQkJNEQ5Rjc0RDVGOEU4ODAxQzZEQTcxRDJGIC8qIGdsM3BsYXRmb3JtLmggKi8sCisJCQkp
OworCQkJcGF0aCA9IEdMRVMzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJ
MEQ1MkZCNzk3RDhDRUExMDNGREIzRjRDIC8qIHRyYWNlX2V2ZW50ICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlCQzQyRTAyQTE0RjAyQjMzRDMxNjgxOTMg
LyogdHJhY2VfZXZlbnQuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gdHJhY2VfZXZlbnQ7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkwREUzNDk2QzUxOUI3MUZBQkMwOTREMTAg
LyogY2dsICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkx
ODVDQjJDRENDMkU1RUVFRUUzM0JDMTggLyogRGlzcGxheUNHTC5oICovLAorCQkJCUU2REVGMDFB
OEI1MUJENjBCQUE2NjY1OCAvKiBEaXNwbGF5Q0dMLm1tICovLAorCQkJCTU0NzVENzk1MzhDNzc4
QTI2OUE0Qzc2NSAvKiBQYnVmZmVyU3VyZmFjZUNHTC5oICovLAorCQkJCUI3MUQ5MDIxNDBBNkEz
MTAyN0VEOTg3RiAvKiBQYnVmZmVyU3VyZmFjZUNHTC5tbSAqLywKKwkJCQkyMDY4NTU5NTg2ODQz
QkMyMkQ4RkI3NEMgLyogV2luZG93U3VyZmFjZUNHTC5oICovLAorCQkJCTlGOEZDREQ3OEU5MTY4
MUUxM0IxN0JFRiAvKiBXaW5kb3dTdXJmYWNlQ0dMLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBj
Z2w7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkxQUY0RTRFNzgxRTU1MDMx
OUJBNDZCRkMgLyogdGhpcmRfcGFydHkvbnVtZXJpY3MvYmFzZSAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkVDOUM2QTIyM0IzOTEzRkM4QkM2MzlGIC8q
IG51bWVyaWNzICovLAorCQkJCUUzN0RFRTA1RTVBQURENzE4MkEzNzVBQSAvKiBsb2dnaW5nLmgg
Ki8sCisJCQkpOworCQkJcGF0aCA9IHRoaXJkX3BhcnR5L251bWVyaWNzL2Jhc2U7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkyRUQ1MUIyNEY0QkQ2RTJBNEU1MTcxNkEgLyog
cmVuZGVyZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CUVGNzNCMDQ3MUMzNzFCQUJCMjM3REIwMCAvKiBnbCAqLywKKwkJCQk0MDU0NzAyQTAzMEMxQ0U3
NEFERjEyODIgLyogbnVsbCAqLywKKwkJCQk2RjYyQjM0MzkyNjM2RDdCQzhCQjEzOEIgLyogQnVm
ZmVySW1wbC5oICovLAorCQkJCTlFNTM1MDc1NThFMDI1RUEwMzlFRDkwMiAvKiBDb21waWxlcklt
cGwuaCAqLywKKwkJCQkwOTMyQjc4OEJFQzUxREY2Q0E2RTNCRDUgLyogQ29udGV4dEltcGwuY3Bw
ICovLAorCQkJCURCNzRCOEZCRkNFMUQ2MzE3MUYyODk5MyAvKiBDb250ZXh0SW1wbC5oICovLAor
CQkJCTIyOEIyQTlCMEMxRTlGOTBGNjdGMDFFMiAvKiBEZXZpY2VJbXBsLmNwcCAqLywKKwkJCQk1
MjM0QTkzOEE4MDI1RTZGQTUyMTIxNUMgLyogRGV2aWNlSW1wbC5oICovLAorCQkJCTdBQTNBRjc3
OUEzOURFRjgzNDFCQjJBQyAvKiBEaXNwbGF5SW1wbC5jcHAgKi8sCisJCQkJOUU4MDcyODE0RTc5
QzE5NUY2ODA3Qzg2IC8qIERpc3BsYXlJbXBsLmggKi8sCisJCQkJMzk1QjA3QUE0RTEzRUEwN0M3
OUU5NDRBIC8qIEVHTEltcGxGYWN0b3J5LmggKi8sCisJCQkJQTU2QjE3RDVCODE3NkFBM0MwRkU0
QkFBIC8qIEZlbmNlTlZJbXBsLmggKi8sCisJCQkJQkFFMkU3ODRDMDI3MkEyOEYxNDJFNDgxIC8q
IEZlbmNlU3luY0ltcGwuaCAqLywKKwkJCQk1NzVEQ0Y5OUVEOUU5NzFGMzFGM0JFREMgLyogRm9y
bWF0LmggKi8sCisJCQkJNkNEQTY0Q0VEN0NCNkZGRjk2RTlFN0MwIC8qIEZvcm1hdF9JRF9hdXRv
Z2VuLmlubCAqLywKKwkJCQlERDQ5OEMzQkM1M0Q4REM2MkJDOTRFN0MgLyogRm9ybWF0X3RhYmxl
X2F1dG9nZW4uY3BwICovLAorCQkJCTlENDM4NzhCNEM5ODhCNTZBOEIyMzc2OCAvKiBGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBsLmggKi8sCisJCQkJMkVEQTIwOTAzRTMxRDY3N0FBN0E2
MTFGIC8qIEZyYW1lYnVmZmVySW1wbC5oICovLAorCQkJCTBFNkNEMDU4NUFCMjQ1Qzk3RThBOUQz
MyAvKiBHTEltcGxGYWN0b3J5LmggKi8sCisJCQkJNzQ2RTZGOEZCQTZEOUMzQTcxMDQ1OEFBIC8q
IEltYWdlSW1wbC5oICovLAorCQkJCUU3M0NBNjk4NzczRkMwNUNFMTBEQjE5OCAvKiBQcm9ncmFt
SW1wbC5oICovLAorCQkJCUEwNTFFMUQ0NkYzMUZCMDNCQzEyNzIwNCAvKiBRdWVyeUltcGwuaCAq
LywKKwkJCQk3NUEyMjc2ODY0QzU4RjI0QTI0Mzc5NEMgLyogUmVuZGVyYnVmZmVySW1wbC5oICov
LAorCQkJCTQ1RkM3NkY5N0VBMThGRDhDQjg5NUJFNCAvKiBTYW1wbGVySW1wbC5oICovLAorCQkJ
CTUzQ0FCRDc1MDhFNzU0NDc2QTU4QzJBMCAvKiBTaGFkZXJJbXBsLmggKi8sCisJCQkJNzBEMkM2
MkQzMUYzMkIwMEQ1MjgwRkQwIC8qIFN0cmVhbVByb2R1Y2VySW1wbC5oICovLAorCQkJCTVDOTZD
REE1OENDODU5NkRDNTIwN0VDOCAvKiBTdXJmYWNlSW1wbC5jcHAgKi8sCisJCQkJOEI1QkFCNjQ5
RjdDMjVBMUU2MDkyQzZFIC8qIFN1cmZhY2VJbXBsLmggKi8sCisJCQkJMzdBRUQzQzkxMkM4RUU4
NzIyRjFGMTY3IC8qIFRleHR1cmVJbXBsLmNwcCAqLywKKwkJCQk4RDhCREExRTRDMzZGMEVBMDY3
NUJGOEIgLyogVGV4dHVyZUltcGwuaCAqLywKKwkJCQlERjhCMkU5NTIwNjAwQzc0M0IwRDdBMzAg
LyogVHJhbnNmb3JtRmVlZGJhY2tJbXBsLmggKi8sCisJCQkJNEE2QURDQzUzQ0E5REYyNThFN0RD
RUU1IC8qIFZlcnRleEFycmF5SW1wbC5oICovLAorCQkJCUI1RTNCRDY5RkFERDU3Qzk3MzdDOTkx
NiAvKiBkcml2ZXJfdXRpbHMuY3BwICovLAorCQkJCUJEQUZDRDk0RTdCRjgzMUUyMDg3NERDMyAv
KiBkcml2ZXJfdXRpbHMuaCAqLywKKwkJCQlEQThBNkJDMzAxOTlBQjc0MzBBQTcxQzIgLyogbG9h
ZF9mdW5jdGlvbnNfdGFibGUuaCAqLywKKwkJCQlGQjlFNzZGMDkxOUIyQkVBNEFDOENBQkIgLyog
bG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAgKi8sCisJCQkJNzgzMDk1QjhCNDBERjc4
M0VFQkIzQUE0IC8qIHJlbmRlcmVyX3V0aWxzLmNwcCAqLywKKwkJCQlCOUU3QTcwMkQwMzJGQjk4
QkQ1ODc3RjAgLyogcmVuZGVyZXJfdXRpbHMuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gcmVuZGVy
ZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkzNTA2QkRGOTQ1MEYxRUY5
MzA4RkY3NzkgLyogZ3B1X2luZm9fdXRpbCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJOTdCNzVCMTI4MTgyQTMxQzdFRkU3RDcxIC8qIFN5c3RlbUluZm8u
Y3BwICovLAorCQkJCTAxNzMxM0YzNjQ4MzVEMjc3MTJFMUNFNSAvKiBTeXN0ZW1JbmZvLmggKi8s
CisJCQkJNTZFRUU5RTJDQTJGOUZBODg2MDNDNjY0IC8qIFN5c3RlbUluZm9faW50ZXJuYWwuaCAq
LywKKwkJCQkzNDk3RUY2MkUwQzQwNEZDQUVFNUVCOEEgLyogU3lzdGVtSW5mb19tYWMubW0gKi8s
CisJCQkpOworCQkJcGF0aCA9IGdwdV9pbmZvX3V0aWw7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OworCQk0MDU0NzAyQTAzMEMxQ0U3NEFERjEyODIgLyogbnVsbCAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJODgzMDdDQjJGREM1QkQ2NjhB
QTFGMzhEIC8qIEJ1ZmZlck5VTEwuY3BwICovLAorCQkJCTI1QUFENUI5MjYwMkM5RTI3Q0Y3NkFG
MyAvKiBCdWZmZXJOVUxMLmggKi8sCisJCQkJMTUyQjNFMEFCNTI3NTcxMDE4Mzc5NTcwIC8qIENv
bXBpbGVyTlVMTC5jcHAgKi8sCisJCQkJRDY5RDY0OENCNDMzRTFBNkI2MjE5OEEzIC8qIENvbXBp
bGVyTlVMTC5oICovLAorCQkJCTU4MENEQzlGMTZBRUFCQjYzRTg2MjEwMCAvKiBDb250ZXh0TlVM
TC5jcHAgKi8sCisJCQkJRjYzODhBNzU0NUU5Q0JBNDgwRkM4RDY2IC8qIENvbnRleHROVUxMLmgg
Ki8sCisJCQkJQjJCNkQ3QjVCNzQ3OUUwNDMxRTlBM0RBIC8qIERldmljZU5VTEwuY3BwICovLAor
CQkJCTRENDUwRTM1RTAwMDZFOTBFOUE3NEIzQSAvKiBEZXZpY2VOVUxMLmggKi8sCisJCQkJMjRB
Nzc5MTkwQUJCOUMxMjBFQjY0NTEwIC8qIERpc3BsYXlOVUxMLmNwcCAqLywKKwkJCQlBQkFDRjdG
RDE2OUFEQkE5RTlBRjc0NzAgLyogRGlzcGxheU5VTEwuaCAqLywKKwkJCQlBNDA1QTlBRTE5MEFG
NjQwRERCRUU1RjQgLyogRmVuY2VOVk5VTEwuY3BwICovLAorCQkJCTNDNzZEMTdCNDNERjU4OUFF
QjI1QzUwQiAvKiBGZW5jZU5WTlVMTC5oICovLAorCQkJCUEzMkI4ODJFNzBEQkFEMjUyQzAyRUYy
NiAvKiBGZW5jZVN5bmNOVUxMLmNwcCAqLywKKwkJCQk4NzlEOTE0OUQ4NDNGMjgwQUNGNUE5RTMg
LyogRmVuY2VTeW5jTlVMTC5oICovLAorCQkJCUI5RUFDQkI4N0VERTVENkMwMzhBN0YxQSAvKiBG
cmFtZWJ1ZmZlck5VTEwuY3BwICovLAorCQkJCTgwMDM2MDhCRjgyNjY0MEQ5OThBNkUyMSAvKiBG
cmFtZWJ1ZmZlck5VTEwuaCAqLywKKwkJCQlFQjA5QUE2RjQ2RjNDMkNGNjg2NDg1NDkgLyogSW1h
Z2VOVUxMLmNwcCAqLywKKwkJCQlCQjU4QzczOUIyQjVDQTIxMEU3RkM0MzAgLyogSW1hZ2VOVUxM
LmggKi8sCisJCQkJMjgwOUI2N0EwQTg0QzQ3RDYwNzU3RjlFIC8qIFBhdGhOVUxMLmNwcCAqLywK
KwkJCQlDOTVCRkU2NkNCRDc1RDAyMjU0RDZDNjUgLyogUGF0aE5VTEwuaCAqLywKKwkJCQlCNzkw
OUY2RTkxQzYzQUUwMTI4RTkwNzIgLyogUHJvZ3JhbU5VTEwuY3BwICovLAorCQkJCUZBNTM4NEQ0
MzEyNUY2NDJEOUVDRjE1OSAvKiBQcm9ncmFtTlVMTC5oICovLAorCQkJCTVEQjM2NDcwQjAzMTMy
MUQzRjExQjJFNyAvKiBRdWVyeU5VTEwuY3BwICovLAorCQkJCUY0MjkxNDlEQ0JDMjJFNThDQjkx
NEY0QiAvKiBRdWVyeU5VTEwuaCAqLywKKwkJCQkxNjFEOTgyQ0NCQkIzOTcwNjQ0MUE3RjggLyog
UmVuZGVyYnVmZmVyTlVMTC5jcHAgKi8sCisJCQkJNEJGMjRDNDYyMTAwMzc1Rjk4N0JBNEVEIC8q
IFJlbmRlcmJ1ZmZlck5VTEwuaCAqLywKKwkJCQkzRTA3QzIzM0Y1MjFFMTMxNEQ2MkI5NUIgLyog
U2FtcGxlck5VTEwuY3BwICovLAorCQkJCTA2NkQ2OEQwQzE2NEFENjFBMTVBNDI4NSAvKiBTYW1w
bGVyTlVMTC5oICovLAorCQkJCTlENTkwREIxMzA0NDMwOTJCQUZBMDFFNSAvKiBTaGFkZXJOVUxM
LmNwcCAqLywKKwkJCQlENkRDMEQzQzQxMDUxMkY3NEQ5QzQyQUQgLyogU2hhZGVyTlVMTC5oICov
LAorCQkJCTYwMDA3NjQ3MjMxRDBCRTg1OEMzOEM4MCAvKiBTdXJmYWNlTlVMTC5jcHAgKi8sCisJ
CQkJN0Y3NDNCNDRGREZFM0NGNzlGQzY4RUZGIC8qIFN1cmZhY2VOVUxMLmggKi8sCisJCQkJNTNB
QTc3NzJFMERBNzA5QzI2NTY4OUFEIC8qIFRleHR1cmVOVUxMLmNwcCAqLywKKwkJCQlEN0IzODlC
RTMyQUJCNTVBODAyREVERUIgLyogVGV4dHVyZU5VTEwuaCAqLywKKwkJCQk0OENEREE4REJDNUM1
NTYyNjY4RDhEM0IgLyogVHJhbnNmb3JtRmVlZGJhY2tOVUxMLmNwcCAqLywKKwkJCQk5MTM0NEVD
NjU1ODk4RDEzMDgzNTQwQ0QgLyogVHJhbnNmb3JtRmVlZGJhY2tOVUxMLmggKi8sCisJCQkJMjFD
QjU3ODI1RkRGMjlDQzU5MDUyQUQxIC8qIFZlcnRleEFycmF5TlVMTC5jcHAgKi8sCisJCQkJM0I1
OERDMzgzRjA4MTI4NUIzNzlGNEI4IC8qIFZlcnRleEFycmF5TlVMTC5oICovLAorCQkJKTsKKwkJ
CXBhdGggPSBudWxsOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNDhDNjk3
Q0RFNDBDNjc0MkFFMUIxQzAyIC8qIFNvdXJjZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJNENBNzkyRDkwRDI2MDdDM0UxMUU2RTJEIC8qIC4uICovLAor
CQkJCTcwODk5OEI1OEQ2MUE3QUUwNjNFNUE2MyAvKiBjb21tb24gKi8sCisJCQkJQ0ZDNDlCMzA0
RjNGRDU3NUFGMjNDNjdEIC8qIGNvbXBpbGVyICovLAorCQkJCTM1MDZCREY5NDUwRjFFRjkzMDhG
Rjc3OSAvKiBncHVfaW5mb191dGlsICovLAorCQkJCUJERUJCM0Y5QUNBMDJCQ0RGRDFGNkZEMSAv
KiBpbWFnZV91dGlsICovLAorCQkJCTcxNjNDRDI5NTAyOEUxMEVDODQ1QjI0QiAvKiBsaWJBTkdM
RSAqLywKKwkJCQk2RjAzMURBMDU3MjA5NDYyQzQxM0I2NjIgLyogbGliRUdMICovLAorCQkJCUUz
RDJBODAxQkU4MDQ0MDdFREE1OEI2QSAvKiBsaWJHTEVTdjIgKi8sCisJCQkJNkM4MkIxOUY2NTY4
MDAzNERFMkE1MzdCIC8qIHRoaXJkX3BhcnR5ICovLAorCQkJCTk0RjdCMzBFQzFCRkFBQzYzREM0
MzhBRCAvKiBjb21taXRfaWQucHkgKi8sCisJCQkJOUI5QkQ4MjFEN0M4ODEwN0YwOURCMjcyIC8q
IGNvcHlfY29tcGlsZXJfZGxsLmJhdCAqLywKKwkJCSk7CisJCQluYW1lID0gU291cmNlOworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNENBNzkyRDkwRDI2MDdDM0UxMUU2RTJE
IC8qIC4uICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlD
RDFENEY2RDYwQzcyREU4OEZENTkzNUIgLyogLmdpdCAqLywKKwkJCQk5OUEyQjdCQTQ2M0NDMjQ4
QjE4Nzk3RDkgLyogaW5jbHVkZSAqLywKKwkJCSk7CisJCQlwYXRoID0gLi47CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OworCQk1RDUwOUMyREI0NzFFOTlENTAwRDI3MjYgPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTQ4QzY5N0NERTQwQzY3NDJB
RTFCMUMwMiAvKiBTb3VyY2UgKi8sCisJCQkJN0U2NjdCMTU4RTZFNDYwRjI5NUYzRTA3IC8qIElu
dGVybWVkaWF0ZXMgKi8sCisJCQkJOEYwRENDOENGMzk2QkZBNUY5MUJEMjIzIC8qIEZyYW1ld29y
a3MgKi8sCisJCQkJQUQ1NTVDOEU5M0UxNjAwOEZFOTY1MDMwIC8qIFByb2R1Y3RzICovLAorCQkJ
CTk0QjE2M0M5NEY5MzU5N0ZDMDcwQjFENSAvKiBCdWlsZCAqLywKKwkJCSk7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OworCQk1RUIyRjAwNTI4MUIwMzdGNUY2OEJDNzIgLyogaWQg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTA3NTAwN0E2
NzQ1MEY4QjU3RDRGNDBDQyAvKiBjb21taXQuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gaWQ7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2NzQ3NTYxRDdEMzIyNDA3MzFFOUQ3
NUEgLyogcGxhdGZvcm0gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTk4QjlDOTEzMzNCQjYzMjUyNkVCNUUxMiAvKiBQbGF0Zm9ybS5oICovLAorCQkJCUVB
RkMyOEZFNEZBODY2Q0YzQTgxMjU5MCAvKiBXb3JrYXJvdW5kc0QzRC5oICovLAorCQkJKTsKKwkJ
CXBhdGggPSBwbGF0Zm9ybTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTZD
ODJCMTlGNjU2ODAwMzRERTJBNTM3QiAvKiB0aGlyZF9wYXJ0eSAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRjk4Njk4OTREMzk1QUFFODdDOUI4MjBCIC8q
IGNvbXBpbGVyICovLAorCQkJCUE2Qjg0QTdEOTUyMTVBRDEyMzUwNzdGOSAvKiBtdXJtdXJoYXNo
ICovLAorCQkJCTBENTJGQjc5N0Q4Q0VBMTAzRkRCM0Y0QyAvKiB0cmFjZV9ldmVudCAqLywKKwkJ
CSk7CisJCQlwYXRoID0gdGhpcmRfcGFydHk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OworCQk2RUM5QzZBMjIzQjM5MTNGQzhCQzYzOUYgLyogbnVtZXJpY3MgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFGNTNFRTI4NUNCMTU3MkVCNDAz
OUEwNyAvKiBzYWZlX2NvbnZlcnNpb25zLmggKi8sCisJCQkJQ0M1NTVCMDJDRDYwRDM1MjFGOEJF
Q0ZEIC8qIHNhZmVfY29udmVyc2lvbnNfaW1wbC5oICovLAorCQkJCTVGNkExMDdFNDQyOUY4MDFF
RENCQTdFOCAvKiBzYWZlX21hdGguaCAqLywKKwkJCQlFMUVEMEIxM0I4OTU3NUE1OEEwNURFNjQg
Lyogc2FmZV9tYXRoX2ltcGwuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gbnVtZXJpY3M7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2RjAzMURBMDU3MjA5NDYyQzQxM0I2NjIg
LyogbGliRUdMICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQlGRDMxMjZGRjkzQTQyMDRGM0VBRkE5OTUgLyogbGliRUdMLmNwcCAqLywKKwkJCQkzQkY0REQx
RUEzNTlGNDhFRkFDNThDOEUgLyogbGliRUdMLmRlZiAqLywKKwkJCQkwQTA1RDEzMTBEOTdFNzg5
ODFFMzZFMUYgLyogbGliRUdMLnJjICovLAorCQkJCTU4NzdDMjQ2MDIwQjc3RTZEQTYxQTQ1MCAv
KiByZXNvdXJjZS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBsaWJFR0w7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OworCQk3MDg5OThCNThENjFBN0FFMDYzRTVBNjMgLyogY29tbW9u
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQUY0RTRF
NzgxRTU1MDMxOUJBNDZCRkMgLyogdGhpcmRfcGFydHkvbnVtZXJpY3MvYmFzZSAqLywKKwkJCQkx
Njk2MTYyNTg4RDVCQzczMTdFNDk0NEEgLyogQ29sb3IuaCAqLywKKwkJCQlGMjlDRkIwRjVBOUZD
MUU4Q0JGNEY5MUQgLyogQ29sb3IuaW5sICovLAorCQkJCTg5NjY0MkU0RjczREM1QzZDRDE3QTk0
NiAvKiBGbG9hdDE2VG9GbG9hdDMyLmNwcCAqLywKKwkJCQkzMEU0MjlBNDM1Q0ZFREUxOTU3MDJG
RTcgLyogTWVtb3J5QnVmZmVyLmNwcCAqLywKKwkJCQk0RjQwOEU1NzczNEIxNjA5REY1QTczRkIg
LyogTWVtb3J5QnVmZmVyLmggKi8sCisJCQkJMDdENzZEODUyREIxNDM0MDA1OUEzRjMxIC8qIE9w
dGlvbmFsLmggKi8sCisJCQkJMzBCOTUwNTY1NkRCODNDOEUwQkFDQzQ5IC8qIGFuZ2xldXRpbHMu
Y3BwICovLAorCQkJCTA3MTcyRDE2Njg1NjhENzQxOUVGRDlBNiAvKiBhbmdsZXV0aWxzLmggKi8s
CisJCQkJRkM2OTZCMEJDMERDODAyOUExODNDM0ZFIC8qIGJpdHNldF91dGlscy5oICovLAorCQkJ
CUZDNkU3MDRGMzJENDg4RDVBMTk1OUUyRSAvKiBkZWJ1Zy5jcHAgKi8sCisJCQkJQzk5QURFN0Ez
RjU0M0I4RUIzRkZDMzBGIC8qIGRlYnVnLmggKi8sCisJCQkJNDA2MjVBMjRBRUVGRjM2QUQzNTI0
Q0QwIC8qIGV2ZW50X3RyYWNlci5jcHAgKi8sCisJCQkJRDFFMDlENTlFQTcxNkIyMUE5RkFBNjUy
IC8qIGV2ZW50X3RyYWNlci5oICovLAorCQkJCTgwOTU1ODE4QkVDQ0I2NzRGQUM0QjMxNyAvKiBt
YXRodXRpbC5jcHAgKi8sCisJCQkJODAwNjk0QjVERDMxMTlDQTJEMUJFMUI2IC8qIG1hdGh1dGls
LmggKi8sCisJCQkJMzMwRjA0N0Q4MkQ3RjU1MkYzMEI4NDQxIC8qIG1hdHJpeF91dGlscy5oICov
LAorCQkJCUY4MkE2QTM1Qjg3NTU4QjA5REI1Q0MyOSAvKiBwbGF0Zm9ybS5oICovLAorCQkJCThG
Q0VGRTQ3REI5OTc3QzlEQUU2OUI2QSAvKiBzdHJpbmdfdXRpbHMuY3BwICovLAorCQkJCUYzQ0FB
QTEyMzFEMTBENEJEREJDNDc1QyAvKiBzdHJpbmdfdXRpbHMuaCAqLywKKwkJCQkwNjMzNkJEQzlB
MDVGQzZBMDI3MTcxQjUgLyogc3lzdGVtX3V0aWxzX21hYy5jcHAgKi8sCisJCQkJNkNEODQ5OUM3
Q0FFQ0Q3MTc3MzhCQTBDIC8qIHRscy5jcHAgKi8sCisJCQkJQTk0NkE0RDE5NEYwQkI2NzM1QUM5
OTJBIC8qIHRscy5oICovLAorCQkJCUUwMDFGRUFCMzc3RjM2NTE2RjkzODQ3NSAvKiB1dGlsaXRp
ZXMuY3BwICovLAorCQkJCTNBNDkyQjNDRDA0MTA4QzczRjQ2MjBEQyAvKiB1dGlsaXRpZXMuaCAq
LywKKwkJCQkyREFFODJEQjAzNTM1QTQ4N0U4OTVDNzQgLyogdmVjdG9yX3V0aWxzLmggKi8sCisJ
CQkJM0NDMzNCRUNCQUFFODM0RjZDRkJCRkVCIC8qIHZlcnNpb24uaCAqLywKKwkJCSk7CisJCQlw
YXRoID0gY29tbW9uOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNzE2M0NE
Mjk1MDI4RTEwRUM4NDVCMjRCIC8qIGxpYkFOR0xFICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQkyRUQ1MUIyNEY0QkQ2RTJBNEU1MTcxNkEgLyogcmVuZGVy
ZXIgKi8sCisJCQkJNTYzOTYyQjlENTRFREU2RDI3NTY5QTE5IC8qIEF0dHJpYnV0ZU1hcC5jcHAg
Ki8sCisJCQkJRTE0QjJBRjA5NzhDRkY2NDYyOEI4RDgyIC8qIEF0dHJpYnV0ZU1hcC5oICovLAor
CQkJCTY2RjhENjUyREYzRDM0REY4NjVBRDYxNCAvKiBCaW5hcnlTdHJlYW0uaCAqLywKKwkJCQkz
MTVDRTVFMEEwRDA4NUE4REMxNjVCMEMgLyogQnVmZmVyLmNwcCAqLywKKwkJCQkxM0JBNDAzQzQz
NENENUI3Mjg4OEUwNTggLyogQnVmZmVyLmggKi8sCisJCQkJMkJFNTFFNUUzN0RDOTBEMjJGMjNF
Q0JGIC8qIENhcHMuY3BwICovLAorCQkJCTA2QTg2RjUwN0IyRkQ5NTU1NzY0RjZENSAvKiBDYXBz
LmggKi8sCisJCQkJNzMxNjRFNDJCOEQ4OEM1QjkxNDg5MkYxIC8qIENvbXBpbGVyLmNwcCAqLywK
KwkJCQlGQTEwREZBMEU4NjQzRDQwNzI2NDQwRUMgLyogQ29tcGlsZXIuaCAqLywKKwkJCQkwMTgz
QTU2MzYwQkY4QUQ4NUY0OTUwMDUgLyogQ29uZmlnLmNwcCAqLywKKwkJCQkxREU4MzY4Rjk1QUE4
RTg4MDkzRjBGOEQgLyogQ29uZmlnLmggKi8sCisJCQkJNTg1OTY5MUY4MTM3QTczQzBDQjRBQjU5
IC8qIENvbnN0YW50cy5oICovLAorCQkJCTY2RUQ2NkNDMDM3NEM5M0QyNUE3QTlDNiAvKiBDb250
ZXh0LmNwcCAqLywKKwkJCQlEMjQzM0JCMEY1MDI4MDk3MEMwNTdFNTkgLyogQ29udGV4dC5oICov
LAorCQkJCTRDNEUyMUU5Mzk4MkRFQ0I1MEQ5QTI5MCAvKiBDb250ZXh0U3RhdGUuY3BwICovLAor
CQkJCUYyNkRENkUzRDA3RDM2RDI1MzlDQkU5RSAvKiBDb250ZXh0U3RhdGUuaCAqLywKKwkJCQk0
QjFBRTZENEJGNDBGNEUxNDlFOUMxNTggLyogRGVidWcuY3BwICovLAorCQkJCUJFMzRCQjdFRDc2
RUZEMTk0ODM1ODAyRSAvKiBEZWJ1Zy5oICovLAorCQkJCUIyRUNEQzAwOTQyOUNDOUNFN0ZGQUYy
RiAvKiBEZXZpY2UuY3BwICovLAorCQkJCTMzRTg5REI2OTgyMjZBOTI0NDQzQkIyMiAvKiBEZXZp
Y2UuaCAqLywKKwkJCQk0OEE2RjQ4NjlERjFEMTY3MUZCRTM2RjMgLyogRGlzcGxheS5jcHAgKi8s
CisJCQkJRUY4Q0JCQ0MzMDQ5RDRGQTUyMEVCRThEIC8qIERpc3BsYXkuaCAqLywKKwkJCQk1REFG
NTM3Mjg0NTg1MzRDRDAwODU5MjggLyogRXJyb3IuY3BwICovLAorCQkJCUMwNzQzOURENEM3QTMy
QjhFQTZEQTEzOSAvKiBFcnJvci5oICovLAorCQkJCTJGQkVCQjkwNDA3OERDQUYyNEIzODI2MSAv
KiBFcnJvci5pbmwgKi8sCisJCQkJRUNCREVDRTc0QzNDNDhDMDJCNjZEQjY4IC8qIEZlbmNlLmNw
cCAqLywKKwkJCQlENzU1MDZDNTRBREU1QTY5MzJBQTFCRjMgLyogRmVuY2UuaCAqLywKKwkJCQlC
RkY0M0MyNjdGNDJFNERGRTI3Mjg3RDQgLyogRnJhbWVidWZmZXIuY3BwICovLAorCQkJCUZCQ0NE
QzNEQzE4ODNEQTNENzM3MEFGNyAvKiBGcmFtZWJ1ZmZlci5oICovLAorCQkJCTU3RTIzNDZFQjBG
RUZFNkM2N0JBQzdFNyAvKiBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQuY3BwICovLAorCQkJCTYzNzQz
NTc3NjhFNkFCMUE0OEJFNDA5MiAvKiBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCAqLywKKwkJCQlC
QzI1MkRGNDA0QThGNDI4MUY1MjZFMEYgLyogSGFuZGxlQWxsb2NhdG9yLmNwcCAqLywKKwkJCQk0
RDJENEE1NEM1MUIyNzQ0RjIwRTQ3MDMgLyogSGFuZGxlQWxsb2NhdG9yLmggKi8sCisJCQkJQjEw
RkNENzk3NkU3OUIwMjlCRDNFNTZFIC8qIEhhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcCAqLywKKwkJ
CQkzNkUxRDRCMkY0RkUxRTNDN0MxNTEwMzQgLyogSGFuZGxlUmFuZ2VBbGxvY2F0b3IuaCAqLywK
KwkJCQkxNkIzOEIyRjc3QkMyRUExNEVCOUY3OTMgLyogSW1hZ2UuY3BwICovLAorCQkJCUNENzY4
MkMxRkQxNDQ5NDREM0U3QzcyNSAvKiBJbWFnZS5oICovLAorCQkJCUZGMDg3NDEwOTlCMkU1NUJF
NEM5QkRCRSAvKiBJbWFnZUluZGV4LmNwcCAqLywKKwkJCQkxNDMwMjBENTFGRkZGMkExODM0MzU1
QkIgLyogSW1hZ2VJbmRleC5oICovLAorCQkJCUE3NTAyREE3NTU2REI2RkE0MjU1NUQ4NSAvKiBJ
bmRleFJhbmdlQ2FjaGUuY3BwICovLAorCQkJCTRCMzczN0UwNjk0Qzg4OUU0Nzc2MDVBOSAvKiBJ
bmRleFJhbmdlQ2FjaGUuaCAqLywKKwkJCQlFMUY0MzdCODE3ODM3RjFBRUEyMjRFMDAgLyogTG9n
Z2luZ0Fubm90YXRvci5jcHAgKi8sCisJCQkJMURGNjg4Q0U0NUEyRDc4RDdEQjFDODZGIC8qIExv
Z2dpbmdBbm5vdGF0b3IuaCAqLywKKwkJCQkyMUJCNzdDN0NDQ0Y5QTA2NUZCM0NBQTMgLyogUGF0
aC5jcHAgKi8sCisJCQkJN0VGOTRFOTE5MDJGNEVCMjJDRkZFMjAwIC8qIFBhdGguaCAqLywKKwkJ
CQkzMDMwNzM2OTIyQkExQzk1RDgzRUI2MkMgLyogUGxhdGZvcm0uY3BwICovLAorCQkJCTAxQkRB
MUU5REM2MTdFRkY2MDY2QUM4MCAvKiBQcm9ncmFtLmNwcCAqLywKKwkJCQlCMDY5NTU1OTc4RTRD
RjAyMDUzOERCRjggLyogUHJvZ3JhbS5oICovLAorCQkJCTU1NTFGMEUzODFFREQ0NjQ4NDk5NDlC
RiAvKiBRdWVyeS5jcHAgKi8sCisJCQkJQkY0MzhGMTk1MzQyMDBFMDIwOEQ0MDMzIC8qIFF1ZXJ5
LmggKi8sCisJCQkJREJBRjFBMjhGM0IwRDVGNzBEM0E5MDU5IC8qIFJlZkNvdW50T2JqZWN0Lmgg
Ki8sCisJCQkJQjZFRTVDRDVBMUYyMzBCNzFBN0UxQTUxIC8qIFJlbmRlcmJ1ZmZlci5jcHAgKi8s
CisJCQkJRUQ1OEVBRDhDMzg3OEVBNTQ3QTBEQkFFIC8qIFJlbmRlcmJ1ZmZlci5oICovLAorCQkJ
CTg5RTY5QjkyOTBFOTg4RkY1QTNDQTk3MiAvKiBSZXNvdXJjZU1hbmFnZXIuY3BwICovLAorCQkJ
CTJBQjNENDQ0NEQzQTdCQTQ5NDA4NzJCMCAvKiBSZXNvdXJjZU1hbmFnZXIuaCAqLywKKwkJCQk0
RDBFOTU2NEVGRDAwNTRFRTEzRTQxNEMgLyogU2FtcGxlci5jcHAgKi8sCisJCQkJQTg5MjAzQjIw
OTdERkI1Q0IyODcwMDMzIC8qIFNhbXBsZXIuaCAqLywKKwkJCQk3MjRGMzkyMkRCNEMzMDI1NjQ0
NTJBODkgLyogU2hhZGVyLmNwcCAqLywKKwkJCQlGQUY2QzAxOTMwQzQxQjg0QjJFMjU2RTIgLyog
U2hhZGVyLmggKi8sCisJCQkJQ0Q5NjM1Q0M3RENDNTY5OUJCMTg4NEZEIC8qIFN0YXRlLmNwcCAq
LywKKwkJCQk5Q0YxN0UyNDJGMUE5ODFGNTU2MTUxQjcgLyogU3RhdGUuaCAqLywKKwkJCQk4OTA1
QkY3NEFDNEI2NUZGQjg4MzVFOUMgLyogU3RyZWFtLmNwcCAqLywKKwkJCQkxNjhFQ0FGNzhDMDQy
OUFEQkUxRTYyRDYgLyogU3RyZWFtLmggKi8sCisJCQkJMzA0NzZDNUJCMzBFNTZERjVEQkJGNkFC
IC8qIFN1cmZhY2UuY3BwICovLAorCQkJCUYzNzBFNkJERUExRjAzQjZCRUJEQjNGRSAvKiBTdXJm
YWNlLmggKi8sCisJCQkJQ0M4QjlBODQ4RUMzMTBGNkU1N0VBNUQ4IC8qIFRleHR1cmUuY3BwICov
LAorCQkJCTg1Qjg4NEVDQzg3RkI0QjA2MUY5NDI2OCAvKiBUZXh0dXJlLmggKi8sCisJCQkJNTVF
RkY5RTZFQzc2MDMyQzY0Q0ZEMDBDIC8qIFRocmVhZC5jcHAgKi8sCisJCQkJMTMzNThCNEQ4MDVD
NEJBMTM2QjY2NTUyIC8qIFRocmVhZC5oICovLAorCQkJCUJCMkIyQzg4OUY3M0VGQzEyRkM0Njg5
NCAvKiBUcmFuc2Zvcm1GZWVkYmFjay5jcHAgKi8sCisJCQkJQTFFMjhBNzY4MTUwNDIyOTlEN0Iy
RTRFIC8qIFRyYW5zZm9ybUZlZWRiYWNrLmggKi8sCisJCQkJNDA1OTFDMzM2ODFEQTVBQkE0RjFG
QkVDIC8qIFVuaWZvcm0uY3BwICovLAorCQkJCTU2NTYzOUVEMEU4ODMxMzI5QjU2ODNFRCAvKiBV
bmlmb3JtLmggKi8sCisJCQkJQ0IxQzM5NEI1NEI3REMxQTJDMDRGNzdCIC8qIFVuaWZvcm1MaW5r
ZXIuY3BwICovLAorCQkJCTk1OEVFNDEzNEU0QzU3MEQ1M0U4MjcwRSAvKiBVbmlmb3JtTGlua2Vy
LmggKi8sCisJCQkJMTczQjZEN0M4OEM0MURGQzQ4OTFFMTZEIC8qIFZhcnlpbmdQYWNraW5nLmNw
cCAqLywKKwkJCQkyNDNFNTY4QTY2NUNBQTc4Q0M5RUJDOUIgLyogVmFyeWluZ1BhY2tpbmcuaCAq
LywKKwkJCQlFOTk2MDhCOTY5MDNEQzc0RTdGMTE0MzUgLyogVmVyc2lvbi5oICovLAorCQkJCTlB
OTA3NjIyQjgxNzIxQTZBQUUwMDAwMyAvKiBWZXJzaW9uLmlubCAqLywKKwkJCQkwMDU5NEY1ODAy
MEQ4MkM4ODFFQjlCQjYgLyogVmVydGV4QXJyYXkuY3BwICovLAorCQkJCTZGRkMwRUE0RUU3OUE4
MENGNkQ3M0EwNCAvKiBWZXJ0ZXhBcnJheS5oICovLAorCQkJCTAxMUQxNDkzMzU4ODg3NDYyNjM0
MkRFRCAvKiBWZXJ0ZXhBdHRyaWJ1dGUuY3BwICovLAorCQkJCTdGMjhCODgyMTdCNkMyODQ1RThD
MjdBOSAvKiBWZXJ0ZXhBdHRyaWJ1dGUuaCAqLywKKwkJCQk1RTFDMTA4RTdFRjdDRDI3OEIwODJB
OUEgLyogVmVydGV4QXR0cmlidXRlLmlubCAqLywKKwkJCQlBQzM2RjlBRDNCMDk2RTE5N0M2ODk0
OUUgLyogV29ya2VyVGhyZWFkLmNwcCAqLywKKwkJCQlCODY0ODQ3NThCRjVEMjUxNEMyMjdDODkg
LyogV29ya2VyVGhyZWFkLmggKi8sCisJCQkJNDFFMkJEMDJDNjcxNjY0NUI2REIyNEMyIC8qIGFu
Z2xldHlwZXMuY3BwICovLAorCQkJCTIzMUI0OUE2Qjk3QkZCMzA3Q0YzMjAyMSAvKiBhbmdsZXR5
cGVzLmggKi8sCisJCQkJRUIxMzNCNDg0RjI3MEMyM0FDRUFERTAzIC8qIGFuZ2xldHlwZXMuaW5s
ICovLAorCQkJCTFCQ0I5QjM4OTU5NDRFQjI4NDMyNDQwMyAvKiBlczNfY29weV9jb252ZXJzaW9u
X3RhYmxlX2F1dG9nZW4uY3BwICovLAorCQkJCUVBOUFFRUE0QkNBODM5NDRCRTgzMkRFNCAvKiBm
ZWF0dXJlcy5oICovLAorCQkJCTM4OTRGQjhBMjIwODVFOUYwNEM2RjExMiAvKiBmb3JtYXRfbWFw
X2F1dG9nZW4uY3BwICovLAorCQkJCTNEOEI4M0NDQTEyREU4NjdBQkU4MjZDNSAvKiBmb3JtYXR1
dGlscy5jcHAgKi8sCisJCQkJQTZDMkYxNTJFNjdERDEyMkM3QzZFOTE1IC8qIGZvcm1hdHV0aWxz
LmggKi8sCisJCQkJNTg2RUUwRDJGQkZDRDNEQzY3OEFERjBEIC8qIGhpc3RvZ3JhbV9tYWNyb3Mu
aCAqLywKKwkJCQkzQ0EwRkJGMDc3MEREODkwNEY3NDlBNjcgLyogcXVlcnljb252ZXJzaW9ucy5j
cHAgKi8sCisJCQkJNjFDODgyNTUyRkUyMDc3OEVBMTJGRUY0IC8qIHF1ZXJ5Y29udmVyc2lvbnMu
aCAqLywKKwkJCQk2MjA3MEFDQTY5OTA2OTgzODMxREY0NEMgLyogcXVlcnl1dGlscy5jcHAgKi8s
CisJCQkJMjQ4QTM3NTk3NEFENEVGRDAxNkQxREMzIC8qIHF1ZXJ5dXRpbHMuaCAqLywKKwkJCQky
REVDMEE4QkVBODBDRTRCQzJDNkE3MDggLyogc2lnbmFsX3V0aWxzLmggKi8sCisJCQkJM0Y0NDA1
NTg0RjY2OUJBQTJFMkIxODE5IC8qIHZhbGlkYXRpb25FR0wuY3BwICovLAorCQkJCTMwODYxNzEy
QjZDOUI2Njc4NTlBNTMzOCAvKiB2YWxpZGF0aW9uRUdMLmggKi8sCisJCQkJOTAzODhBNzZCRDQy
RTE1NUIxNEMyMjIyIC8qIHZhbGlkYXRpb25FUy5jcHAgKi8sCisJCQkJOUM5MDVBMzcxNDk4M0I1
RDg1Qzg5MDIyIC8qIHZhbGlkYXRpb25FUy5oICovLAorCQkJCUIxMDI2NEU5QTBDNzYxQTlCOEY2
MzRGRSAvKiB2YWxpZGF0aW9uRVMyLmNwcCAqLywKKwkJCQlEMzlGREZEMjlFQTdBQjAyREY3MDk5
RjMgLyogdmFsaWRhdGlvbkVTMi5oICovLAorCQkJCTBGNEUxOUUxMjZGMzU3NDkwM0MxOEMyMyAv
KiB2YWxpZGF0aW9uRVMzLmNwcCAqLywKKwkJCQkwNTZDNUM1QUU3Njc5QUVBREM1RjYzM0EgLyog
dmFsaWRhdGlvbkVTMy5oICovLAorCQkJCTRCNUEwRDZFMUM2NjgyRTM4Qjc4ODI4QyAvKiB2YWxp
ZGF0aW9uRVMzMS5jcHAgKi8sCisJCQkJMUVFREEwRUIzRDBDMDlFNkQzQTI2MDgzIC8qIHZhbGlk
YXRpb25FUzMxLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGxpYkFOR0xFOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJN0U2NjdCMTU4RTZFNDYwRjI5NUYzRTA3IC8qIEludGVy
bWVkaWF0ZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTVFQjJGMDA1MjgxQjAzN0Y1RjY4QkM3MiAvKiBpZCAqLywKKwkJCQkwMzJCMDMyQTc2QzRCNTEx
NDU0MDc3MjIgLyogY29tbWl0X2lkLnB5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBJbnRlcm1lZGlh
dGVzOworCQkJcGF0aCA9IGFuZ2xlOworCQkJc291cmNlVHJlZSA9IFNIQVJFRF9JTlRFUk1FRElB
VEVfRElSOworCQl9OworCQk4RjBEQ0M4Q0YzOTZCRkE1RjkxQkQyMjMgLyogRnJhbWV3b3JrcyAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNTE1N0YzN0JG
RkY4NzhBQUZDQTNBODMyIC8qIENvY29hLmZyYW1ld29yayAqLywKKwkJCQk0MzMyNENCNUE0Qzk5
RUYxQzgzMEI1MUUgLyogQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrICovLAorCQkJCTAyQUU1OEE0
NDVDRjU4RDUzNDcxODRBRCAvKiBJT0tpdC5mcmFtZXdvcmsgKi8sCisJCQkJRjQxQjJERTAwMzJB
MjlFNDczMzNEMDEwIC8qIElPU3VyZmFjZS5mcmFtZXdvcmsgKi8sCisJCQkJNUY5RTYwOTBENzU3
RUY5NDlBRjA0MjYzIC8qIE9wZW5HTC5mcmFtZXdvcmsgKi8sCisJCQkJMjIzNjM3ODBGMDRBM0ZE
OTM0RkEzQzBFIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovLAorCQkJKTsKKwkJCW5hbWUgPSBG
cmFtZXdvcmtzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJOTRCMTYzQzk0
RjkzNTk3RkMwNzBCMUQ1IC8qIEJ1aWxkICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQlj
aGlsZHJlbiA9ICgKKwkJCQkyRDE1QjQ5OURCMTBGNTAzMDUwMDYxQjEgLyogYW5nbGUuZ3lwICov
LAorCQkJCUJEMkY4OUM2RDFEMzBDNjk0Q0IwOTVGQSAvKiBjb21tb24uZ3lwaSAqLywKKwkJCQlE
M0Q0OTM0NzIyN0UzQ0IzOEZGNTVFOEMgLyogY29tbW9uX2RlZmluZXMuZ3lwaSAqLywKKwkJCQky
NkE5NDYzNTY2NjY0MkQ2NkM2NEQ2NzkgLyogY29tcGlsZXIuZ3lwaSAqLywKKwkJCQlCRUU4NTZE
NjYwQzUwNzcxOEE1RTZBQjEgLyogbGliRUdMLmd5cGkgKi8sCisJCQkJNzdBRjg1NjM3RTNFNTAz
OERFMzhEMEVFIC8qIGxpYkdMRVN2Mi5neXBpICovLAorCQkJCTdEQzM0QTk4MjRFNjJERUE2OTk0
ODQzMiAvKiBzdGFuZGFsb25lLmd5cGkgKi8sCisJCQkJRDMxNkMwREYyNTNBNzAxOTJFOEFBNkRC
IC8qIHZ1bGthbi5neXBpICovLAorCQkJKTsKKwkJCW5hbWUgPSBCdWlsZDsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTk5OEEwN0M3QzE0MTNFMTZBODhDNkQ2OSAvKiBHTFNM
QU5HICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlEODk2
ODJBRUM1MjU3RkY5Qjg0MjAwNTIgLyogU2hhZGVyTGFuZy5oICovLAorCQkJCUQwMzE1RjJGMkU0
RjAzNEQ3QkQzQTE4OSAvKiBTaGFkZXJWYXJzLmggKi8sCisJCQkpOworCQkJcGF0aCA9IEdMU0xB
Tkc7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk5OUEyQjdCQTQ2M0NDMjQ4
QjE4Nzk3RDkgLyogaW5jbHVkZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJRUM3ODhBNTNBMUM5OUE5QTQzRjQzRkMxIC8qIEVHTCAqLywKKwkJCQlBNTk0
QjQzMTM2QjlFMjJERjZFMkY5NjEgLyogR0xFUzIgKi8sCisJCQkJMEFFNEQ3QTNDMURDMDQ1QjY4
QkZDOTM4IC8qIEdMRVMzICovLAorCQkJCTk5OEEwN0M3QzE0MTNFMTZBODhDNkQ2OSAvKiBHTFNM
QU5HICovLAorCQkJCUQ2RUQzNTJBREE2QzREMjAyQTQ0QjAwMCAvKiBLSFIgKi8sCisJCQkJNjc0
NzU2MUQ3RDMyMjQwNzMxRTlENzVBIC8qIHBsYXRmb3JtICovLAorCQkJCUE5QUEwOThDMTkwMzVG
M0M0OTk5QzFCQyAvKiBhbmdsZV9nbC5oICovLAorCQkJCUE2RDk2NDk5QjcwOTlERUU0NzRCNjY2
MSAvKiBleHBvcnQuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gaW5jbHVkZTsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUE1OTRCNDMxMzZCOUUyMkRGNkUyRjk2MSAvKiBHTEVT
MiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0MxNEJC
QkM0RkM2RDA2RkM4REU5NUI0IC8qIGdsMi5oICovLAorCQkJCUQ3MzNEMjkzRkM5MzMxRjAyNTE4
QjlBNSAvKiBnbDJleHQuaCAqLywKKwkJCQkzMUJBQzhBMDY3RDU5RkI0MkMwODZDNjUgLyogZ2wy
cGxhdGZvcm0uaCAqLywKKwkJCSk7CisJCQlwYXRoID0gR0xFUzI7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OworCQlBNkI4NEE3RDk1MjE1QUQxMjM1MDc3RjkgLyogbXVybXVyaGFz
aCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMEFFNDk3
NTg2RTQ0NjA2MjBEMTYyNjJDIC8qIE11cm11ckhhc2gzLmNwcCAqLywKKwkJCQkwMzA2MjUzQjZD
OEJGQjdGM0VDMzkyMEQgLyogTXVybXVySGFzaDMuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gbXVy
bXVyaGFzaDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUFENTU1QzhFOTNF
MTYwMDhGRTk2NTAzMCAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJNEQwQjU4NjhENzM2NzgxQjQxMkY2NUFEIC8qIGxpYmFuZ2xlX2Nv
bW1vbi5hICovLAorCQkJCUJDMzFGOTk3MUNFQzc3QkFDNjMzREY2OCAvKiBsaWJhbmdsZV9pbWFn
ZV91dGlsLmEgKi8sCisJCQkJREJENzVBOUI3RDhFNUYzQUE4NkZERUREIC8qIGxpYmFuZ2xlX2dw
dV9pbmZvX3V0aWwuYSAqLywKKwkJCQk3QTM1MTZDODhEQTZGMThBOEQ3MzdFMEIgLyogbGlicHJl
cHJvY2Vzc29yLmEgKi8sCisJCQkJQjg2MzFFRjBGNzkwNDBEQjYzRTg0NjQ3IC8qIGxpYnRyYW5z
bGF0b3IuYSAqLywKKwkJCQkxMTcxOTJDRkVFREM5OEVDNUZEREM4QTQgLyogbGliQU5HTEUuYSAq
LywKKwkJCQlBNkJGOTVGQ0RDQTQ1MzExRDExODQ0ODEgLyogbGliR0xFU3YyLmR5bGliICovLAor
CQkJCTkwQ0IzMjJGQzg5MUVFREZDMTZBMjZDQSAvKiBsaWJHTEVTdjJfc3RhdGljLmEgKi8sCisJ
CQkJNjBEQ0ExNjM1QjUwNDg0RDFDQjYxQkZDIC8qIGxpYkVHTC5keWxpYiAqLywKKwkJCQkzRjc1
Q0YzOUM2OURCNzUzOEJFNTRENkIgLyogbGliRUdMX3N0YXRpYy5hICovLAorCQkJKTsKKwkJCW5h
bWUgPSBQcm9kdWN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUFENjFG
MUUzMjQzQjI1NEQ3NUNBRUJENCAvKiBwcmVwcm9jZXNzb3IgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTg5QUQ5NUVCNkI3MTc5MjVENjQxQzRBRSAvKiBE
aWFnbm9zdGljc0Jhc2UuY3BwICovLAorCQkJCUY0OEVGOUI3RDMwOUNEMTU4QkI0NURCQyAvKiBE
aWFnbm9zdGljc0Jhc2UuaCAqLywKKwkJCQlFMzM4QjM3RDVDMjRBN0Y1NTgyM0UwNzkgLyogRGly
ZWN0aXZlSGFuZGxlckJhc2UuY3BwICovLAorCQkJCUM2NEM4OEQwMDA0MjNDM0NBNDlEQTgwQiAv
KiBEaXJlY3RpdmVIYW5kbGVyQmFzZS5oICovLAorCQkJCTAyM0VGNUU0QjEwQzM4NjBEOTU1NkE3
OCAvKiBEaXJlY3RpdmVQYXJzZXIuY3BwICovLAorCQkJCUREMUU2N0U5RDVCNzJDRkJENkJBN0Ix
QSAvKiBEaXJlY3RpdmVQYXJzZXIuaCAqLywKKwkJCQk1N0NBNERDMzI0ODUwMUYzNTQxNjkyREMg
LyogRXhwcmVzc2lvblBhcnNlci5jcHAgKi8sCisJCQkJQ0Y5OUZBREY1M0EzMTQ1NEQwQTdEQzVF
IC8qIEV4cHJlc3Npb25QYXJzZXIuaCAqLywKKwkJCQlGNkZGODdGQTRDMkVDMEM5MzFCMTY4RDAg
LyogRXhwcmVzc2lvblBhcnNlci55ICovLAorCQkJCTVGOTVDNzg1NDVBRDUwQTVDNDZENzYxNiAv
KiBJbnB1dC5jcHAgKi8sCisJCQkJRUNBMkNCMTIwMEY2MDFEMDhEMDI5MTdGIC8qIElucHV0Lmgg
Ki8sCisJCQkJNTg3M0VBOEJFQThDM0I0NjRBRjhCNEMxIC8qIExleGVyLmNwcCAqLywKKwkJCQlD
NUU4QjNFRjc5N0Y1RUY0MDBGQzZGODIgLyogTGV4ZXIuaCAqLywKKwkJCQk1ODNCQTVEMTg2NDQw
QjdENDkxQThFNTggLyogTWFjcm8uY3BwICovLAorCQkJCUY4MjJGQkM1Rjg1RUZDNDJFRjk5QTQ5
NSAvKiBNYWNyby5oICovLAorCQkJCTI3RjE1MDVBOEQ2MkU3RDQ4ODgyM0RGNyAvKiBNYWNyb0V4
cGFuZGVyLmNwcCAqLywKKwkJCQlDOUJBRkEzQzRBRUVGNDAxQ0NGNDY1NEYgLyogTWFjcm9FeHBh
bmRlci5oICovLAorCQkJCTIzNTBENDJFNzI1NjhGODZBNDYxRTQ5QiAvKiBQcmVwcm9jZXNzb3Iu
Y3BwICovLAorCQkJCTk2QTI1QkI2OTA4REVDOTFENUJFNTlDQSAvKiBQcmVwcm9jZXNzb3IuaCAq
LywKKwkJCQkyQzc3QTIzOUI3NEQ4MzI5RkE5Q0E3N0MgLyogU291cmNlTG9jYXRpb24uaCAqLywK
KwkJCQlERDRCMDU5Q0ZDNjc5REJBRDJDRDY0ODEgLyogVG9rZW4uY3BwICovLAorCQkJCUM4RDY0
NDkzQ0Q5ODZDRDNDRDFBRERCRCAvKiBUb2tlbi5oICovLAorCQkJCTBEQ0NCREY0RDFBMzg5NTcw
RTNCRUNBMyAvKiBUb2tlbml6ZXIuY3BwICovLAorCQkJCTQ4RjcwMkMyQzM2MDhFMzQwNDZFQjlD
NyAvKiBUb2tlbml6ZXIuaCAqLywKKwkJCQk5QzhCM0ZCQkMzMUNEMkUwNDFDMzM3REEgLyogVG9r
ZW5pemVyLmwgKi8sCisJCQkJNjRFNkJBMEFBMjYwNTU4MEMyQTgzNkY2IC8qIG51bWVyaWNfbGV4
LmggKi8sCisJCQkpOworCQkJcGF0aCA9IHByZXByb2Nlc3NvcjsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CisJCUJERUJCM0Y5QUNBMDJCQ0RGRDFGNkZEMSAvKiBpbWFnZV91dGls
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkxQkIwRTFD
MUVBRENFMUY5NDM4MzU4QTMgLyogY29weWltYWdlLmNwcCAqLywKKwkJCQlBODVEQjUzNTAwQUZF
M0I0MkNBMkIwOUQgLyogY29weWltYWdlLmggKi8sCisJCQkJODgwMjhDQjkxMDUyQ0Y0NUY0MzhG
MDY4IC8qIGNvcHlpbWFnZS5pbmwgKi8sCisJCQkJM0M5QzgxMDREREU5NEQwNkM2OUZCRTY4IC8q
IGdlbmVyYXRlbWlwLmggKi8sCisJCQkJNjEwRTdENERCQzc3RTE3MkFDOTEyN0Q2IC8qIGdlbmVy
YXRlbWlwLmlubCAqLywKKwkJCQk0OUEzMDU5MDc5NEY3OTU4NTI5QkI3REYgLyogaW1hZ2Vmb3Jt
YXRzLmNwcCAqLywKKwkJCQkyNDM4QUI4NkQ2RDRGRTA5NUNEQjUyNDEgLyogaW1hZ2Vmb3JtYXRz
LmggKi8sCisJCQkJQzA2MEVDMDhBQkJBMTk2NEM3ODZBNDRDIC8qIGxvYWRpbWFnZS5jcHAgKi8s
CisJCQkJNjc2NzNCQkM2NkNFMEFBQkU0NDgzNkM4IC8qIGxvYWRpbWFnZS5oICovLAorCQkJCTAz
MzI0NjQ3NEUwRkM1QzE0RENCNzBDMCAvKiBsb2FkaW1hZ2UuaW5sICovLAorCQkJCTQ1NzhDOEJD
NTg3QTYxREM1RTUzQkMzNSAvKiBsb2FkaW1hZ2VfZXRjLmNwcCAqLywKKwkJCSk7CisJCQlwYXRo
ID0gaW1hZ2VfdXRpbDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUNEMUQ0
RjZENjBDNzJERTg4RkQ1OTM1QiAvKiAuZ2l0ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQlEQTkxNENCRkY1NDc0OTkwRTkwRUE3OEEgLyogaW5kZXggKi8s
CisJCQkpOworCQkJcGF0aCA9IC5naXQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQlDRkM0OUIzMDRGM0ZENTc1QUYyM0M2N0QgLyogY29tcGlsZXIgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUFENjFGMUUzMjQzQjI1NEQ3NUNBRUJE
NCAvKiBwcmVwcm9jZXNzb3IgKi8sCisJCQkJMDhDMzBBRTZENDQxNkZBNDU4QUY3NzkyIC8qIHRy
YW5zbGF0b3IgKi8sCisJCQkpOworCQkJcGF0aCA9IGNvbXBpbGVyOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKKwkJRDZFRDM1MkFEQTZDNEQyMDJBNDRCMDAwIC8qIEtIUiAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJOTY3MzI1RUFEMjk1
MkVEQjUwMDMxQjhDIC8qIGtocnBsYXRmb3JtLmggKi8sCisJCQkpOworCQkJcGF0aCA9IEtIUjsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUUzRDJBODAxQkU4MDQ0MDdFREE1
OEI2QSAvKiBsaWJHTEVTdjIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCTVFNTRCRjUxMUUyQTVCRUQ5RDc4OTMxOSAvKiBlbnRyeV9wb2ludHNfZWdsLmNw
cCAqLywKKwkJCQk5OEU1NUQ4N0EyNkNGREIwMDQwQzAxMUQgLyogZW50cnlfcG9pbnRzX2VnbC5o
ICovLAorCQkJCTI3NDBGQzA5QjBGMUNBOTlCOTUyQjAzMiAvKiBlbnRyeV9wb2ludHNfZWdsX2V4
dC5jcHAgKi8sCisJCQkJOTNFQTlCNUJGNDdBRDEzQkIzQTQxOTY3IC8qIGVudHJ5X3BvaW50c19l
Z2xfZXh0LmggKi8sCisJCQkJMDgzNDIwRjU0OEFFMzcyMDFGNUE5NDFCIC8qIGVudHJ5X3BvaW50
c19nbGVzXzJfMC5jcHAgKi8sCisJCQkJOUU2MDE1QzdEQUM0MDhFQjU0Q0ExQjMxIC8qIGVudHJ5
X3BvaW50c19nbGVzXzJfMC5oICovLAorCQkJCTQ2MzA4NkZGN0E3MTEzNDk0OTg2QjJCRiAvKiBl
bnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0LmNwcCAqLywKKwkJCQk0M0I3NjA0QzY5REQ5QzUyRTcy
ODMzMzYgLyogZW50cnlfcG9pbnRzX2dsZXNfMl8wX2V4dC5oICovLAorCQkJCTI0QjY5MkYzNjVB
MEJEQzg1MTVFRUU2MyAvKiBlbnRyeV9wb2ludHNfZ2xlc18zXzAuY3BwICovLAorCQkJCTc4MDQ3
Mjk4ODFEMTY1QTEwOTI5NDgwQiAvKiBlbnRyeV9wb2ludHNfZ2xlc18zXzAuaCAqLywKKwkJCQk5
NUI2QTVGRThEQjA5RTQ4RkEyNjA0RTAgLyogZW50cnlfcG9pbnRzX2dsZXNfM18xLmNwcCAqLywK
KwkJCQk3MkE4NzQxOEM2QjNDQzc3MDYxNDk1MzIgLyogZW50cnlfcG9pbnRzX2dsZXNfM18xLmgg
Ki8sCisJCQkJRkM5MzFDNUY0RkFBQUQzRjJCQTk1NzdGIC8qIGdsb2JhbF9zdGF0ZS5jcHAgKi8s
CisJCQkJNEU3NDA0ODhBRTIyRUE4MjdEQjNDQTVBIC8qIGdsb2JhbF9zdGF0ZS5oICovLAorCQkJ
CTE2NjUwNzg4NjA1MTBGRkU3OTU5QjRBRCAvKiBsaWJHTEVTdjIuY3BwICovLAorCQkJCTUwMzcz
ODI5NzM1MUEwQjgxNzRBODE4MCAvKiBsaWJHTEVTdjIuZGVmICovLAorCQkJCTc0M0QwNUZDQzg4
MDAyQUIzMzg2QzBFQSAvKiBsaWJHTEVTdjIucmMgKi8sCisJCQkJRjhENkFBODY2QjlFN0U5MDlC
N0VCQTQ1IC8qIHJlc291cmNlLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGxpYkdMRVN2MjsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUVDNzg4QTUzQTFDOTlBOUE0M0Y0M0ZD
MSAvKiBFR0wgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CUE3NTdDRjI2MjU5N0YwRTY2OUJDM0NFOSAvKiBlZ2wuaCAqLywKKwkJCQlENjg1QkUyMzRFMDkw
QkQxNzhEODkxNEUgLyogZWdsZXh0LmggKi8sCisJCQkJOUIyMDlFQ0JEMkY1QkQxMTNDMDYxQTAw
IC8qIGVnbHBsYXRmb3JtLmggKi8sCisJCQkpOworCQkJcGF0aCA9IEVHTDsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUVGNzNCMDQ3MUMzNzFCQUJCMjM3REIwMCAvKiBnbCAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMERFMzQ5NkM1
MTlCNzFGQUJDMDk0RDEwIC8qIGNnbCAqLywKKwkJCQlEQzBGOTM5NjMzMTU0NjhEQzZDNzUwNDMg
LyogQmxpdEdMLmNwcCAqLywKKwkJCQk4RTYzMzFENTc3OUIxOUM0RkI5QTRFMzAgLyogQmxpdEdM
LmggKi8sCisJCQkJNUM5QjAyRDkwQkUxMDk5RjczN0M0NzBBIC8qIEJ1ZmZlckdMLmNwcCAqLywK
KwkJCQk1RTc4REM1M0I3NUEyQkU5MzY5RTU4NDggLyogQnVmZmVyR0wuaCAqLywKKwkJCQkwNTE2
MTdCMzEzNTYxQzY1QkM5QTBEMjEgLyogQ29tcGlsZXJHTC5jcHAgKi8sCisJCQkJNDRBMDc5NTZC
NUJDMTZBN0M2NzBCOUE4IC8qIENvbXBpbGVyR0wuaCAqLywKKwkJCQk5MUNENjk1NkU0QUJDMDc4
NUY2OUQ3MUEgLyogQ29udGV4dEdMLmNwcCAqLywKKwkJCQlEQTQ1RDYxRUU5QTFBMDA0RDM1MDBC
ODAgLyogQ29udGV4dEdMLmggKi8sCisJCQkJQzhGRTYyRjY5NkQzRjJFNUQ0QzgzMTlCIC8qIERp
c3BsYXlHTC5jcHAgKi8sCisJCQkJRUVGN0NDNEU3RTAwMjg0NEI5RTUwN0Q2IC8qIERpc3BsYXlH
TC5oICovLAorCQkJCTlEMEE3ODk0NzZCOUM2Qjc0MDM4MDRBMSAvKiBGZW5jZU5WR0wuY3BwICov
LAorCQkJCUE3QTFDRDU5RDRFQTc0QTZBOEIyQ0ZENiAvKiBGZW5jZU5WR0wuaCAqLywKKwkJCQlC
MkU4RUFBQUQzQzFERTcyMTIzNTJBMUQgLyogRmVuY2VTeW5jR0wuY3BwICovLAorCQkJCTQxOUYx
MzhBM0IyNTc3QTBDNDk3RDk0MyAvKiBGZW5jZVN5bmNHTC5oICovLAorCQkJCURGNkI4NzUzNkMz
ODBERjE5MUZCMkYzOCAvKiBGcmFtZWJ1ZmZlckdMLmNwcCAqLywKKwkJCQk0RDBBQzE2OURCNkNB
MjU4REI3MjMzQzMgLyogRnJhbWVidWZmZXJHTC5oICovLAorCQkJCTdGOTA4RTE0MjBCNjFGM0Yy
MEJCNjMzNyAvKiBGdW5jdGlvbnNHTC5jcHAgKi8sCisJCQkJODQxOEQyNEY5NjlFNEYxREY1NjBD
QzlEIC8qIEZ1bmN0aW9uc0dMLmggKi8sCisJCQkJMTJCMDVERjhCRkYwQkFFNDA2MTMwQTY1IC8q
IFBhdGhHTC5jcHAgKi8sCisJCQkJQkRBODIyMzNDQjQyMjlBMkNDREExNEEzIC8qIFBhdGhHTC5o
ICovLAorCQkJCTI0QzIwNTJCOUMwRUQyMkNBMTY1OTUyMCAvKiBQcm9ncmFtR0wuY3BwICovLAor
CQkJCTBCNzk4MkM3MEVBMDdCNTYzNjI2RDA3NCAvKiBQcm9ncmFtR0wuaCAqLywKKwkJCQk5OTEw
MERCM0QzRjg5RDBDRTQ0QzRCQUMgLyogUXVlcnlHTC5jcHAgKi8sCisJCQkJMDlGM0I3NkNDMDlB
NTkwQTU1QjNCMEZEIC8qIFF1ZXJ5R0wuaCAqLywKKwkJCQk1MkYyNjBFOEYxOTMwN0Q4M0NBRUJD
RkEgLyogUmVuZGVyYnVmZmVyR0wuY3BwICovLAorCQkJCTZBQjVCODFEN0VDMjlFREQ1QjNFRDA4
OSAvKiBSZW5kZXJidWZmZXJHTC5oICovLAorCQkJCTQ2N0JDMzg3QTQ4MENGRTc5N0FFRjY1QSAv
KiBSZW5kZXJlckdMLmNwcCAqLywKKwkJCQkxQjc1NjY3RUY0QjczRDg2MzVDRjM1NkYgLyogUmVu
ZGVyZXJHTC5oICovLAorCQkJCTRDNzA1QzZBMDAwRTYxNTIyNkY1QzJDNiAvKiBTYW1wbGVyR0wu
Y3BwICovLAorCQkJCTJGRjk0MzY2Mjc5MzIxNTRDNjU2NkFCOCAvKiBTYW1wbGVyR0wuaCAqLywK
KwkJCQlBRDJGQjEyREI2MTQ0M0Y2NTQ4OEEwMDEgLyogU2hhZGVyR0wuY3BwICovLAorCQkJCTdC
MDlDOTU4RUIxOEQ2NDA1N0E4NURENCAvKiBTaGFkZXJHTC5oICovLAorCQkJCTIwMEQ3MjdBRkE4
MTRDNkM4RjUxRjBEQyAvKiBTdGF0ZU1hbmFnZXJHTC5jcHAgKi8sCisJCQkJNjVEN0E4NTdFRkU1
NjA0QjM5Qjk0NEE2IC8qIFN0YXRlTWFuYWdlckdMLmggKi8sCisJCQkJREM4NDk0Mjk1ODhGMUIx
MkU3NTYxRTI2IC8qIFN1cmZhY2VHTC5jcHAgKi8sCisJCQkJQkU2OUEwQUUyQ0RBMjE4M0E5RkFD
MTJFIC8qIFN1cmZhY2VHTC5oICovLAorCQkJCTE4MEZBRDg4Q0JCRkIyNzk0NTdFMDQ3MiAvKiBU
ZXh0dXJlR0wuY3BwICovLAorCQkJCUYwRThERkQwN0EyMDJGMTkwNDk1NzM2QyAvKiBUZXh0dXJl
R0wuaCAqLywKKwkJCQk5RDJENjRDODA1RjEzQTA0OTJGNjI3REYgLyogVHJhbnNmb3JtRmVlZGJh
Y2tHTC5jcHAgKi8sCisJCQkJQ0VGNjhBRENFOERDNkUyRDU5N0JFODJCIC8qIFRyYW5zZm9ybUZl
ZWRiYWNrR0wuaCAqLywKKwkJCQlEN0JEQjQzMDVBQUJBMTEzQTk2MTE3QTcgLyogVmVydGV4QXJy
YXlHTC5jcHAgKi8sCisJCQkJMjg3RkU2N0JFMzkzOEY0QkE3REZBNURFIC8qIFZlcnRleEFycmF5
R0wuaCAqLywKKwkJCQk1RkU1MUUyNDczRjU3QjI4MUVDNUJGQjcgLyogV29ya2Fyb3VuZHNHTC5o
ICovLAorCQkJCTZBNUJDQ0MxRUZBMUM5QTMxQTZDNDAxNiAvKiBmb3JtYXR1dGlsc2dsLmNwcCAq
LywKKwkJCQlFNkFCQjdCODkwMDhGQkUwNzU5QTQ3NTUgLyogZm9ybWF0dXRpbHNnbC5oICovLAor
CQkJCTdEREM3NTAwNUM0QzFFMUYxRTJEQTc0OCAvKiBmdW5jdGlvbnNnbF9lbnVtcy5oICovLAor
CQkJCTcxNUY5RUE4REEwOTAwRjI4QjE4QzQ2MSAvKiBmdW5jdGlvbnNnbF90eXBlZGVmcy5oICov
LAorCQkJCTEyODkxNzBGODMwNjE4QjEyRjU4NzNBOSAvKiByZW5kZXJlcmdsX3V0aWxzLmNwcCAq
LywKKwkJCQk3RDMwOEQwQTg0QTM4Q0NFODMwMURDRjggLyogcmVuZGVyZXJnbF91dGlscy5oICov
LAorCQkJKTsKKwkJCXBhdGggPSBnbDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CisJCUY5ODY5ODk0RDM5NUFBRTg3QzlCODIwQiAvKiBjb21waWxlciAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTYxMjJGMDVDRDQ2QzgyMUQyNjNFRkQ3
IC8qIEFycmF5Qm91bmRzQ2xhbXBlci5jcHAgKi8sCisJCQkJMjIwNUYxRjdBMTQ0RjZBQjA0RUI0
MEM3IC8qIEFycmF5Qm91bmRzQ2xhbXBlci5oICovLAorCQkJKTsKKwkJCXBhdGggPSBjb21waWxl
cjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisvKiBFbmQgUEJYR3JvdXAgc2Vj
dGlvbiAqLworCisvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkxN0Y4M0U5
NjQ5OEI1MDBCNzdEMzcxMTggLyogYW5nbGVfaW1hZ2VfdXRpbCAqLyA9IHsKKwkJCWlzYSA9IFBC
WE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2MDg0M0VERkVBQzBE
RTc2RTQwMTA5MEEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgImFuZ2xlX2ltYWdlX3V0aWwiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJNDlCODQ4
RTlEQTcyQjBFNzVDNEUyOEFGIC8qIFNvdXJjZXMgKi8sCisJCQkJQ0JCQUY2MTlERjc4M0RBMkZG
OTU4NzhCIC8qIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7
CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IGFuZ2xlX2ltYWdlX3V0aWw7
CisJCQlwcm9kdWN0TmFtZSA9IGFuZ2xlX2ltYWdlX3V0aWw7CisJCQlwcm9kdWN0UmVmZXJlbmNl
ID0gQkMzMUY5OTcxQ0VDNzdCQUM2MzNERjY4IC8qIGxpYmFuZ2xlX2ltYWdlX3V0aWwuYSAqLzsK
KwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMi
OworCQl9OworCQkxRjg4Q0RFQjQ0RTdDNzFDMjgyRkE5NzUgLyogdHJhbnNsYXRvciAqLyA9IHsK
KwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBG
OUNFNjlFNDU1NUQzQkY1M0ZDQ0U1QzQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhOYXRpdmVUYXJnZXQgInRyYW5zbGF0b3IiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJ
QzM4RUYxRkFCMzNERDE5Mzk4RTFEQUFCIC8qIFNvdXJjZXMgKi8sCisJCQkJNkJDMzAxMzVGREJG
NUY5M0Y0Q0Y4RkI5IC8qIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgK
KwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IHRyYW5zbGF0b3I7
CisJCQlwcm9kdWN0TmFtZSA9IHRyYW5zbGF0b3I7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gQjg2
MzFFRjBGNzkwNDBEQjYzRTg0NjQ3IC8qIGxpYnRyYW5zbGF0b3IuYSAqLzsKKwkJCXByb2R1Y3RU
eXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMiOworCQl9OworCQky
N0I0MzZDN0NFRjkzNzg4OTQ2NDExREUgLyogbGliRUdMX3N0YXRpYyAqLyA9IHsKKwkJCWlzYSA9
IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA3QTI1QzA2MDVC
MzgyMjRGNjhCNjhGMEEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVU
YXJnZXQgImxpYkVHTF9zdGF0aWMiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMDFBNjZE
QjUzODgwRUMyODdCQzk2QjA0IC8qIFNvdXJjZXMgKi8sCisJCQkJNDM0QThGMjE5MUE5RkI3REE2
Q0E3RDg5IC8qIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7
CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IGxpYkVHTF9zdGF0aWM7CisJ
CQlwcm9kdWN0TmFtZSA9IEVHTF9zdGF0aWM7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gM0Y3NUNG
MzlDNjlEQjc1MzhCRTU0RDZCIC8qIGxpYkVHTF9zdGF0aWMuYSAqLzsKKwkJCXByb2R1Y3RUeXBl
ID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMiOworCQl9OworCQk2RDdF
NjMzMjhGODczODRGRjM5M0FBMEIgLyogbGliQU5HTEUgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRp
dmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gOTYyQ0MzRDNEQkE3Nzc1QzY0
N0JBRTkyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJs
aWJBTkdMRSIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkxQjk1M0FCQjdCRTQxRjVBMjUz
MzA5NzkgLyogU291cmNlcyAqLywKKwkJCQlCMTEzMzFFMkZCQzlBQzUyNEY5OTU4OUEgLyogRnJh
bWV3b3JrcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVu
Y2llcyA9ICgKKwkJCQk1Qzk1RjZFOEFEQzdENzcxMzRBRTBFNTAgLyogUEJYVGFyZ2V0RGVwZW5k
ZW5jeSAqLywKKwkJCQk0NTAwRjU3RTRGNTU2MjlCMzQzRThDMjQgLyogUEJYVGFyZ2V0RGVwZW5k
ZW5jeSAqLywKKwkJCQlGQjcwNEM5NUU4MEZERDIyNTU3MTRFREIgLyogUEJYVGFyZ2V0RGVwZW5k
ZW5jeSAqLywKKwkJCSk7CisJCQluYW1lID0gbGliQU5HTEU7CisJCQlwcm9kdWN0TmFtZSA9IEFO
R0xFOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDExNzE5MkNGRUVEQzk4RUM1RkREQzhBNCAvKiBs
aWJBTkdMRS5hICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS5s
aWJyYXJ5LnN0YXRpYyI7CisJCX07CisJCTc0OTgxOTQ0RTFGQjZERDc2MkEwN0QzRiAvKiBsaWJF
R0wgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRp
b25MaXN0ID0gNzNEMTVCMUI5MDk2M0U2MzEzQTMwQjMxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24g
bGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsaWJFR0wiICovOworCQkJYnVpbGRQaGFzZXMgPSAo
CisJCQkJMkFDRTZEQkQ2NUY1MThFMjYzQUI3ODY1IC8qIFNvdXJjZXMgKi8sCisJCQkJMTAyQ0NE
NUU2MTA1MkZBQTgxNUQ5RTU0IC8qIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJYnVpbGRSdWxl
cyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJNUJBNTI4N0ZGRTlFMzhDMzE4
ODNCNTM2IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9IGxpYkVH
TDsKKwkJCXByb2R1Y3ROYW1lID0gRUdMOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDYwRENBMTYz
NUI1MDQ4NEQxQ0I2MUJGQyAvKiBsaWJFR0wuZHlsaWIgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJj
b20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuZHluYW1pYyI7CisJCX07CisJCTc5MkFCRjQ4
ODRBOEZEQUU4MTY5MERERSAvKiBhbmdsZV9jb21tb24gKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRp
dmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gREIzQ0U2ODI2NTVGNENEQjkw
NzYyQzhDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJh
bmdsZV9jb21tb24iICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJRUNDMkI2ODIxNTA4REJG
NzA4MTk5MjgxIC8qIFNvdXJjZXMgKi8sCisJCQkJMDdDMkJGOUU4RkFCMDRGMENFNzMyNEM3IC8q
IEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBl
bmRlbmNpZXMgPSAoCisJCQkJNUM5MzgxOUE5RDg0OUE3QTI0N0E2MzQ3IC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9IGFuZ2xlX2NvbW1vbjsKKwkJCXByb2R1Y3RO
YW1lID0gYW5nbGVfY29tbW9uOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDREMEI1ODY4RDczNjc4
MUI0MTJGNjVBRCAvKiBsaWJhbmdsZV9jb21tb24uYSAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNv
bS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMiOworCQl9OworCQk5NTk0NTdCNTdB
RUI0MDk1ODRFNDg4NzAgLyogbGliR0xFU3YyICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFy
Z2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE3MjIwREUxRDk5QjRDODYyNkUwQzM2
RCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibGliR0xF
U3YyIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCUVENjk2MzMyOTE4QTA1NzBFNDg1RENC
MSAvKiBTb3VyY2VzICovLAorCQkJCUIyNjcyRkMzMjlFMDkwNTEyQTdGMDAzNiAvKiBGcmFtZXdv
cmtzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVz
ID0gKAorCQkJCUY2N0E3NkQ4MDIwNDdFQjNFRjk3QzMyOSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCTJBODc5RTZCNUEzRkFBODVDREFCMUQzMiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCThEOUVEOTNFQUEwOEJBOTJGNDQ2NTQ1NCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCTBFQ0RERjI2MzNCNDAxNzg3MjdGM0I4NSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCTlEQzZGOTZBQUFCNkNBRjkxOUIzNEE0NSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCTNGQkQ2QkQyOEQwODVBQzBDODMwRTUwOSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCUFEOTZCNzEwMkVFNEFGNDRFNkMwREUxMSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCTYxOUM1QzgxQTU0Mjk3RkZEOTc3Q0Q5MyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCTY5NTE4RjQxQkQyRkEwQzQ5MzMyMEE0QSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCTI1RjRDOTU1NjZFQTE3QkU5OUUwMUM5MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJKTsKKwkJCW5hbWUgPSBsaWJHTEVTdjI7CisJCQlwcm9kdWN0TmFtZSA9IEdMRVN2
MjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSBBNkJGOTVGQ0RDQTQ1MzExRDExODQ0ODEgLyogbGli
R0xFU3YyLmR5bGliICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlw
ZS5saWJyYXJ5LmR5bmFtaWMiOworCQl9OworCQlCOEM3QzE0Mjc1MUYxRTE0OThBNjUyRDQgLyog
bGliR0xFU3YyX3N0YXRpYyAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1
aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAyNUQxQ0JBOTdCMjdENTdFNzY0REZDQUEgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImxpYkdMRVN2Ml9zdGF0aWMi
ICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJREI1MzM4QjAxNDc4RkRFMzZBRDRCRDc3IC8q
IFNvdXJjZXMgKi8sCisJCQkJRDhDMUZCNkQ2QzA0OUFDQjFFNDY0MUNEIC8qIEZyYW1ld29ya3Mg
Ki8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAo
CisJCQkpOworCQkJbmFtZSA9IGxpYkdMRVN2Ml9zdGF0aWM7CisJCQlwcm9kdWN0TmFtZSA9IEdM
RVN2Ml9zdGF0aWM7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gOTBDQjMyMkZDODkxRUVERkMxNkEy
NkNBIC8qIGxpYkdMRVN2Ml9zdGF0aWMuYSAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBs
ZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMiOworCQl9OworCQlDNjk4OTZCNEREMkMwNkNG
MTYxNkJEQzYgLyogcHJlcHJvY2Vzc29yICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0
OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IEVEMTIyNUM5OTVEOTgyN0MzRjA1QjM2OSAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAicHJlcHJvY2Vz
c29yIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCUNGQzg5MUNEN0E2QUM3NDQ0MTZBOUJB
RSAvKiBTb3VyY2VzICovLAorCQkJCURCQ0VERTQ4NzdEQTFGNDZBQjRDNkZCOSAvKiBGcmFtZXdv
cmtzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVz
ID0gKAorCQkJKTsKKwkJCW5hbWUgPSBwcmVwcm9jZXNzb3I7CisJCQlwcm9kdWN0TmFtZSA9IHBy
ZXByb2Nlc3NvcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSA3QTM1MTZDODhEQTZGMThBOEQ3MzdF
MEIgLyogbGlicHJlcHJvY2Vzc29yLmEgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUu
cHJvZHVjdC10eXBlLmxpYnJhcnkuc3RhdGljIjsKKwkJfTsKKwkJQzcwMTI4NDVDNUZFMzlBQjA4
NEEzMkQ4IC8qIGFuZ2xlX2dwdV9pbmZvX3V0aWwgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVU
YXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gQTFEODFGNDFDNTMwRjY3RDY3OUY0
MzYyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJhbmds
ZV9ncHVfaW5mb191dGlsIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTY3Nzc2OEIzRTk0
NEVBODU1NzUzMEY0QSAvKiBTb3VyY2VzICovLAorCQkJCTYzNTY3QjYzRUUwQzZFRTNGMDQwQjY3
NyAvKiBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJ
ZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBhbmdsZV9ncHVfaW5mb191dGlsOwor
CQkJcHJvZHVjdE5hbWUgPSBhbmdsZV9ncHVfaW5mb191dGlsOworCQkJcHJvZHVjdFJlZmVyZW5j
ZSA9IERCRDc1QTlCN0Q4RTVGM0FBODZGREVERCAvKiBsaWJhbmdsZV9ncHVfaW5mb191dGlsLmEg
Ki87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3Rh
dGljIjsKKwkJfTsKKy8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdp
biBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKwkJOTY4NjAwOEFCMEJBMjhGQzIzOTVEOUYwIC8qIFBy
b2plY3Qgb2JqZWN0ICovID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMg
PSB7CisJCQkJQnVpbGRJbmRlcGVuZGVudFRhcmdldHNJblBhcmFsbGVsID0gWUVTOworCQkJfTsK
KwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA1Qjg3NzM3OTEyRDA1OTcyMDhFNkNGRkIgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJhbmdsZSIgKi87CisJCQlj
b21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAzLjIiOworCQkJaGFzU2Nhbm5lZEZvckVuY29k
aW5ncyA9IDE7CisJCQltYWluR3JvdXAgPSA1RDUwOUMyREI0NzFFOTlENTAwRDI3MjY7CisJCQlw
cm9qZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVjdFJvb3QgPSAiIjsKKwkJCXRhcmdldHMgPSAo
CisJCQkJMDUxRDkwMzI2NDJGN0UyQzc0MTBDNDNCIC8qIEFsbCAqLywKKwkJCQk3OTJBQkY0ODg0
QThGREFFODE2OTBEREUgLyogYW5nbGVfY29tbW9uICovLAorCQkJCTE3RjgzRTk2NDk4QjUwMEI3
N0QzNzExOCAvKiBhbmdsZV9pbWFnZV91dGlsICovLAorCQkJCUM3MDEyODQ1QzVGRTM5QUIwODRB
MzJEOCAvKiBhbmdsZV9ncHVfaW5mb191dGlsICovLAorCQkJCTU1RTcwMUQ0OEQ2Rjc1RkRFMEZC
NUI4OSAvKiBjb3B5X3NjcmlwdHMgKi8sCisJCQkJQzY5ODk2QjRERDJDMDZDRjE2MTZCREM2IC8q
IHByZXByb2Nlc3NvciAqLywKKwkJCQkxRjg4Q0RFQjQ0RTdDNzFDMjgyRkE5NzUgLyogdHJhbnNs
YXRvciAqLywKKwkJCQk1RDRDOUJGMTFBMjJEQjBDRTFBNDQxMjEgLyogbGliQU5HTEVfZDNkMTFf
Y29uZmlnICovLAorCQkJCTgwOTVGRjY1NDMwRjM2NjZENjU4N0Y3RiAvKiBsaWJBTkdMRV9yZW5k
ZXJlcl9jb25maWcgKi8sCisJCQkJNkQ3RTYzMzI4Rjg3Mzg0RkYzOTNBQTBCIC8qIGxpYkFOR0xF
ICovLAorCQkJCTk1OTQ1N0I1N0FFQjQwOTU4NEU0ODg3MCAvKiBsaWJHTEVTdjIgKi8sCisJCQkJ
QjhDN0MxNDI3NTFGMUUxNDk4QTY1MkQ0IC8qIGxpYkdMRVN2Ml9zdGF0aWMgKi8sCisJCQkJNzQ5
ODE5NDRFMUZCNkRENzYyQTA3RDNGIC8qIGxpYkVHTCAqLywKKwkJCQkyN0I0MzZDN0NFRjkzNzg4
OTQ2NDExREUgLyogbGliRUdMX3N0YXRpYyAqLywKKwkJCQk4MDU1MUNEN0VCMjQwRjA5Rjc1NURB
QzAgLyogY29tbWl0X2lkICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rp
b24gKi8KKworLyogQmVnaW4gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJ
MDk2RkY0OTAxNTlFNEE4NDIzNTM4REVCIC8qIEFjdGlvbiAiR2VuZXJhdGUgQU5HTEUgQ29tbWl0
IElEIEhlYWRlciIgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJ
aW5wdXRQYXRocyA9ICgKKwkJCQkiJChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvYW5nbGUvY29t
bWl0X2lkLnB5IiwKKwkJCQkuLi8uZ2l0L2luZGV4LAorCQkJKTsKKwkJCW5hbWUgPSAiQWN0aW9u
IFwiR2VuZXJhdGUgQU5HTEUgQ29tbWl0IElEIEhlYWRlclwiIjsKKwkJCW91dHB1dFBhdGhzID0g
KAorCQkJCSIkKFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS9hbmdsZS9pZC9jb21taXQuaCIsCisJ
CQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVs
bFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAiZWNobyBub3RlOiBcIkdlbmVyYXRp
bmcgQU5HTEUgQ29tbWl0IElEXCJcbmV4ZWMgcHl0aG9uIFwiJHtTSEFSRURfSU5URVJNRURJQVRF
X0RJUn0vYW5nbGUvY29tbWl0X2lkLnB5XCIgZ2VuIC4uIFwiJHtTSEFSRURfSU5URVJNRURJQVRF
X0RJUn0vYW5nbGUvaWQvY29tbWl0LmhcIlxuZXhpdCAxXG4iOworCQkJc2hvd0VudlZhcnNJbkxv
ZyA9IDA7CisJCX07CisvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8K
KworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwMUE2NkRCNTM4
ODBFQzI4N0JDOTZCMDQgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWls
ZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAor
CQkJCUZGOEY2M0Q5QUY3MzFBNjY2RDI4RkZEMSAvKiBsaWJFR0wuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07
CisJCTFCOTUzQUJCN0JFNDFGNUEyNTMzMDk3OSAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0g
UEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owor
CQkJZmlsZXMgPSAoCisJCQkJNDJBMTgyMzNGMDVFRDIzREJEODVDQzkyIC8qIGV2ZW50X3RyYWNl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1OEQzNDA2OTAxNUVCN0M1NTQ0MzJFRDQgLyogQXR0
cmlidXRlTWFwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg3Q0Y0NEI1Qjc5ODVFRTQxN0FFNTNF
MiAvKiBCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNEVGNUMyMTQwNjJCMzE1RTBFRkQy
OUNGIC8qIENhcHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjY5RDQ4ODAxQUQwNEMxNjNFOUI4
Mzc1IC8qIENvbXBpbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQwRjlFQTMyNzVCN0E5NTI3
QzRGOEJEMiAvKiBDb25maWcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRDFDRkRCMkI4QzYwODAz
RUE1QjVDQUI4IC8qIENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTYyQjYxN0QzRjBF
NTBBOUFENjVEOEY5IC8qIENvbnRleHRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlEQ0U3
Rjc0M0EwNDVFMjlFQzRCOEVCNUIgLyogRGVidWcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTIz
MTI4MzQyMjRDQTU4OEZGQzYzQzBGIC8qIERldmljZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5
OTMyNjY5RjA2RTU4NjM1NkI2RjU5NzcgLyogRGlzcGxheS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1OUI5ODczMjNDQjM4MDM1NTBBOEQ4MzcgLyogRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQkE3NTVFQTg1NTA2QkIzMTYwMzNGQUFGIC8qIEZlbmNlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUY3QTkxNzU0NzA1OTBBMTUwOUVDMTcyRSAvKiBGcmFtZWJ1ZmZlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwNzQzNzUyODQ2NkU5NEJGRjJEQTEzQ0IgLyogRnJhbWVidWZmZXJBdHRhY2ht
ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDREUzMzVCN0I5MjI3NUI0NjlGNTM5QiAvKiBI
YW5kbGVBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjg0QTgwNzg0OUNEQThCRkVF
NEZCNjREIC8qIEhhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTI2
MzlEMTdFQ0Y1Q0IxNzFBQ0JGRTRBQSAvKiBJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlC
RDhDQkNBQ0RGOEY0QTE5QjAyMTA1OUIgLyogSW1hZ2VJbmRleC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkyNzZENDRCODkyOEU1RjEwNjFCMjZEQkYgLyogSW5kZXhSYW5nZUNhY2hlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUQxOEVFOTNGOUM5NzVGRUEwN0JCOTA1RiAvKiBMb2dnaW5nQW5ub3Rh
dG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE1NURDMDM1QUREMjNBNUFCMkQzMDRFNyAvKiBQ
YXRoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJEMDlBQTY2NEYzOEVBMTk3NjUyNEZBQyAvKiBQ
bGF0Zm9ybS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1NDI3OTIxQUYyNkU3Q0Y4NzVFNEE5MUQg
LyogUHJvZ3JhbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNTE0MEM1RUU5NUYzQUIyOEEzNTVG
MUIgLyogUXVlcnkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRUUwNEUzMDAzNEQyMjA2RTI3QkVD
NDU0IC8qIFJlbmRlcmJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QTZDNDlDQkZCRjE5
NjU2MUI4NjFDMzUgLyogUmVzb3VyY2VNYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE4
QUU5MzhCOTUwRUREQ0JFMTQ1MzYwQyAvKiBTYW1wbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTZFMjY4OTdGMjU1RjQxRDI2NjdDQjc2NSAvKiBTaGFkZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRUVGODNBREZCMzRCNTI5MUVCRUVGOEJBIC8qIFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTU3MjU3NDIzQzAxOUZEQjhFMTM0MkJEOSAvKiBTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMUI1N0E3QTkzN0RGMUIzOTE2MDc5NUM3IC8qIFN1cmZhY2UuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNDdCODgzRTkwRDRBQjgyNDQ2NUMwOTQyIC8qIFRleHR1cmUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTVDRjYyODFBMTAyMEI1RTIzMEY3MkQ3IC8qIFRocmVhZC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwNkUwMjc1ODY3QUFGQTA1RUMyQzlDQzAgLyogVHJhbnNmb3JtRmVlZGJh
Y2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTZERURGNzY4NzYwNkUwODcyQkRBMTczIC8qIFVu
aWZvcm0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTdFRDFERDlDMEVEQzJBRjU4OTEyMjFGIC8q
IFVuaWZvcm1MaW5rZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUUxMjY0QkRFOUE5QzRGRTFG
MjA1NkNGIC8qIFZhcnlpbmdQYWNraW5nLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTA0QjQzRkEy
QUIyNzZCMkJCM0U5MjQ0NyAvKiBWZXJ0ZXhBcnJheS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlG
N0I2RkVDNjY4MDc2QjdGQkJGOERFMjggLyogVmVydGV4QXR0cmlidXRlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTQ5MTRGODFFMTE4RjBDRDI5RDVGMUE2NiAvKiBXb3JrZXJUaHJlYWQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNUFGOUQ4Qjg1NTEyMDgzNkU5MUIwRUM2IC8qIGFuZ2xldHlwZXMu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYzRTA0MTUxRkEwMjY4MTE1Q0IwOUIxIC8qIGVzM19j
b3B5X2NvbnZlcnNpb25fdGFibGVfYXV0b2dlbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCOUYw
QkQ1ODFGREFBRDI0Q0Y5QUM3Q0IgLyogZm9ybWF0X21hcF9hdXRvZ2VuLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTVCRjQ3NDgxNUM1QjFDMzZCNEY1RUM3QSAvKiBmb3JtYXR1dGlscy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3QUJBNUYxQjVCQTFCNDQ1MDQ5QTRGNEEgLyogcXVlcnljb252ZXJz
aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3OTQ5OUMxMTIzQTExNEI1RDRCNEUyRkUgLyog
cXVlcnl1dGlscy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTc2NjgxMDcyOEJDNTg3Mjk2REZD
NDMgLyogQ29udGV4dEltcGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjNDRDRBNjcxRDQ5MDJF
MTNGODM5MzE4IC8qIGRyaXZlcl91dGlscy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1N0E0NzQ2
RENGNUE4QkFBM0ZDOUZDQ0YgLyogRGV2aWNlSW1wbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQky
OTc4QTg1NDJDMjRGOEU2MzZDNUZFODkgLyogRGlzcGxheUltcGwuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJOThBNzBFRUY1MTRDQ0I4MTM1QkIzNzMwIC8qIEZvcm1hdF90YWJsZV9hdXRvZ2VuLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCThDMUQ0NDIxNzg3NTZFN0M1ODJFN0Y1MiAvKiBTdXJmYWNl
SW1wbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2MTk2RkZFRDU4RDkyNTM4NzdFNDIyOTEgLyog
VGV4dHVyZUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJM0VGQjE1NzU3ODc0NDgwOEU1MkFC
Mjc5IC8qIGxvYWRfZnVuY3Rpb25zX3RhYmxlX2F1dG9nZW4uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNzY4REI1RUJBOTk0RTk0MEYwRjZCMzhBIC8qIHJlbmRlcmVyX3V0aWxzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUY1NzY5ODU3N0Y0Mzk2RjAwRUE1QzBBMSAvKiB2YWxpZGF0aW9uRUdMLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUU2Q0U3QTkwOTREOUFGOUM5NzVFNjBCNyAvKiB2YWxpZGF0
aW9uRVMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDYzNEE3MTU0NEE0OTUyOThCMDAyMjhBIC8q
IHZhbGlkYXRpb25FUzIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTJGODNGMTBDNDBCRTFGMDgz
M0UwQUY4IC8qIHZhbGlkYXRpb25FUzMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzc5QkUzNEI0
NjIyRjU3QkI0QTJCRjY5IC8qIHZhbGlkYXRpb25FUzMxLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTc2MzZFNTZBRThERjI2REE4M0FFQzVCMyAvKiBNdXJtdXJIYXNoMy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk3QUI5NDY5ODg3RjQxNTUyQzMxNzE2NzEgLyogQmxpdEdMLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUJCRjQ5MTVCNDU1Q0ZDQjdCRUIyODJDMSAvKiBCdWZmZXJHTC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk1QTYwNDQwMUI3Q0JGNTBERDYyNEU2ODUgLyogQ29tcGlsZXJHTC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk3OEMyNkYwMzQ1RTRBMkRCQUQ5Mzg3ODggLyogQ29udGV4dEdM
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTAxRkI4ODM3RTM5QjUzMUIzOUE4RjQyQyAvKiBEaXNw
bGF5R0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjQwRDI5NEVFQTNFQUM3NzQwQjExRjQzIC8q
IEZlbmNlTlZHTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RDQxOUNGOThCNkU2MUZDODkwQzhE
OTEgLyogRmVuY2VTeW5jR0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTIxMTNFQ0Y1QjFFNUY1
MTg5QkQwRTQwIC8qIEZyYW1lYnVmZmVyR0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTUwNkFE
MEZCRDRDNTEyQjBFRThDMDNDIC8qIEZ1bmN0aW9uc0dMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUyRENFNDczQkRBREREQTJCREIzQzQwMiAvKiBQYXRoR0wuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRDFFMDhGN0ZBRDlEQkQ3RUEyRUI2QUMwIC8qIFByb2dyYW1HTC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1MzQ1NEI1QTYxNUFDQkUwMjY5M0Y1QjggLyogUXVlcnlHTC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk0MjFBMDFBMjU0MzJENTI1RTg0QUY3RjIgLyogUmVuZGVyYnVmZmVyR0wuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRUNEREMwNjE5MzQxMzA0OUIwNDAzQjIxIC8qIFJlbmRlcmVy
R0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODM5NjZERjE2N0RGNzFGRjA1M0EwM0Y2IC8qIFNh
bXBsZXJHTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQUMwNDg5OTM4NzVENTcxQzc2RUUyRTYg
LyogU2hhZGVyR0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjMxOEE0QTlERUNEMTQ2ODMyNDBC
QzI2IC8qIFN0YXRlTWFuYWdlckdMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTc5Qjk2M0VBREJD
NzU3RkI1QzU1NEMyMCAvKiBTdXJmYWNlR0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUJERTI5
REVBNTNGQ0UyNkIwOEU1ODEwIC8qIFRleHR1cmVHTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
N0ZCOTEyQ0I0RkYyRTJGN0IzQjNFMzcgLyogVHJhbnNmb3JtRmVlZGJhY2tHTC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk3Njk5N0RDMTU5NDQ2OUY0NkEwMDRBQTQgLyogVmVydGV4QXJyYXlHTC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlBRTM1RkQzQUMyNzExMzA1RDJGQzk2NzQgLyogZm9ybWF0
dXRpbHNnbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4NDk3RDJGODJFQURERDZGMzBGODMwMzQg
LyogcmVuZGVyZXJnbF91dGlscy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCNjA5RTQwMUQ0QTgy
MDI4N0E2RThCRjEgLyogRGlzcGxheUNHTC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdENTBERTRB
NjlBMzJDRUJCMDZCQTQ0OCAvKiBQYnVmZmVyU3VyZmFjZUNHTC5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTMzMzVCQjZGMjE2RDgxNTM1NTIyNTE0MCAvKiBXaW5kb3dTdXJmYWNlQ0dMLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJQzE5NDQyMTI5NTA3QjBGOURBM0UzREQ1IC8qIEJ1ZmZlck5VTEwuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJODBGODFFODA3REIzMEIyMDA1RjE5QTY0IC8qIENvbXBpbGVy
TlVMTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFM0FGMTcwMDExNzQ2QzVCRTA4RkNCNTEgLyog
Q29udGV4dE5VTEwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDNCQUMwNzU0OTY5Q0NFMkQwQ0Mx
RjEzIC8qIERldmljZU5VTEwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjZEM0FDRjI1RDk5ODZB
OTlGRTBCRjUxIC8qIERpc3BsYXlOVUxMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJBMTgyRDMz
QTc3M0UzMTA5MDBCQTU1MCAvKiBGZW5jZU5WTlVMTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlG
MUZCNkUyOTlEMTMxNkJBMkMyMjBGNDEgLyogRmVuY2VTeW5jTlVMTC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwMkQ5MTRENkY5Q0E0ODIyQ0IyMkE1Q0YgLyogRnJhbWVidWZmZXJOVUxMLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTE0NTUyODBBMTAxMjg1MkIyMjg1OEVDRSAvKiBJbWFnZU5VTEwu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRDc5MEQ4MzBERkFCRTBDOEJFQUUzMTJBIC8qIFBhdGhO
VUxMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM3MDgxMjk0MjgwODNEQjkxNkREN0MzMSAvKiBQ
cm9ncmFtTlVMTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyODgzNDUwNzZCMUMwMkRDMkExRDMz
NTAgLyogUXVlcnlOVUxMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTZCQ0VCMTMwQUFFREY3NjI1
M0QyMzVDNyAvKiBSZW5kZXJidWZmZXJOVUxMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTY3NDZC
QUNBNTExN0M0Q0Y4MTk2MzlFNSAvKiBTYW1wbGVyTlVMTC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk3MEY0QUUxMDdFNURDMTg0MEExMUJDNjMgLyogU2hhZGVyTlVMTC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlGNTA2MEI2RkVBODkxNzAwMENCOUY1MEQgLyogU3VyZmFjZU5VTEwuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRDlBREI0NkE3QzM5QUMwOTM0OTAwODlBIC8qIFRleHR1cmVOVUxMLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTIwRDU4QzRGMDZDOUFGQjI3NUFEREQ5NCAvKiBUcmFuc2Zv
cm1GZWVkYmFja05VTEwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEU1OTFEMjFGQTcyQ0RBOTg4
MDlFOTIwIC8qIFZlcnRleEFycmF5TlVMTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJMkFDRTZEQkQ2
NUY1MThFMjYzQUI3ODY1IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVp
bGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgK
KwkJCQlDQUEzOTkzMTUyQzNBQzg0ODdGMjk3OTUgLyogbGliRUdMLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9
OworCQk0OUI4NDhFOURBNzJCMEU3NUM0RTI4QUYgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9
IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
KwkJCWZpbGVzID0gKAorCQkJCUYzNzY2REI5NTBFRDUyNUE5QTMyNThCNyAvKiBjb3B5aW1hZ2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTYyRjI2Mjk2NDdBNTI3MjAyOEZGQTRFIC8qIGltYWdl
Zm9ybWF0cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MDM3NUUxQ0Q5OTlENEFCRkQ0NTFCN0Mg
LyogbG9hZGltYWdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUU2MTg0RThDODhDQzcwN0VGNEE1
QzExMCAvKiBsb2FkaW1hZ2VfZXRjLmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQk2Nzc3NjhCM0U5NDRF
QTg1NTc1MzBGNEEgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBo
YXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJ
CTYzMTdCNzAyNUY5NTRENzA1NzA2MDRDQSAvKiBTeXN0ZW1JbmZvLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTMyQjZGQzNCMDQ1NkZCQzZDNDQ0MDdGMSAvKiBTeXN0ZW1JbmZvX21hYy5tbSBpbiBT
b3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOworCQl9OworCQlDMzhFRjFGQUIzM0REMTkzOThFMURBQUIgLyogU291cmNlcyAqLyA9IHsK
KwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCUU4M0I3NTA2NkQzMjRGM0I5RjFGQThGRSAvKiBB
ZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTIxNzk0MjMx
Qjg1RTgwRjhBNkI1NkVDMCAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk5Nzk1NkZDNzQyQjhEMUIyNzlEOERDNEEgLyogQnJlYWtWYXJpYWJsZUFsaWFz
aW5nSW5Jbm5lckxvb3BzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTc0NDk0MEE5QTA0QkYxQUNB
MDRFMUU5RiAvKiBDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyNTJERkZGQjU4OTdFNEMx
OTkxNDM4RTAgLyogQ2FsbERBRy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzRBMUQ5NEE5MzA4
NTdEMEE1Nzg1NjMgLyogQ29kZUdlbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGMDRGRDEwNkJB
N0ZDRTU3NTNBNkJENjIgLyogQ29tcGlsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRDFBOEQz
OTI2OEFDNDE1M0MzMDRGNjhEIC8qIENvbnN0YW50VW5pb24uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJQ0UzRjI1OUZENDc3RjRBNDgzMjE2QjRFIC8qIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUU2RTAwODdDODlCN0QzMDY0NDdENzJBOCAvKiBEaWFnbm9z
dGljcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzOUJBMTE5NUUyOUI2NkI2M0E2QUIxNzggLyog
RGlyZWN0aXZlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzQzFFNzg4QjdDNEQwQTlE
Njc3NjQ2QzUgLyogRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTQ1RDc2MUZFRkE3QURBMzEzMUMwRkNCMyAvKiBFbXVsYXRlUHJlY2lzaW9uLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUFCRDYzQkYxMkQxNDUzQ0NBQjYxNEI2QyAvKiBFeHBhbmRJbnRl
Z2VyUG93RXhwcmVzc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUJENDBBMDhEQUFCNzE4
QkQwOUJGQjlBIC8qIEZpbmRTeW1ib2xOb2RlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExMjZB
NzYyNUFERUM5MTU4QzA4OEMyNyAvKiBGbGFnU3RkMTQwU3RydWN0cy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk4OUM3RDQ2Qzc3RkQyREIzMEY3OTY3NjggLyogSW5mb1NpbmsuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEQ4MzJGN0NCOTVCRTA1NTk3NkNDMDBBIC8qIEluaXRpYWxpemUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJOEE1QkU5NjQ0QTlBOENGMkYxQjUzMjc2IC8qIEluaXRpYWxpemVE
bGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOEI1Q0I3MTFBMkNBMjQxRDIwOTcwM0U5IC8qIElu
aXRpYWxpemVWYXJpYWJsZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODlDRjlGNDU2NjMyMDc5
NkZFRjMzRUFFIC8qIEludGVybU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjY1NDU1QTBE
NDkwRUJCRjA5OEMwMkM1IC8qIEludGVybVRyYXZlcnNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUM0MTNFRDFDN0JDQTk1NTc4MjQ1Mjc0MyAvKiBJbnRlcm1lZGlhdGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNjk3NTEyODUwMkUyREMwNURBNUU2NUFDIC8qIE9wZXJhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUZCNjI1OENENkIzRTk4NDE5OUUyQjUwMiAvKiBQYXJzZUNvbnRleHQuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQTI1NzlCRjM2Q0NCQzc5NUFFNEYzQzYzIC8qIFBvb2xBbGxv
Yy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlEMTY5M0ExNzU0QUQ4NkEwNUI3NkZBNUUgLyogUHJ1
bmVFbXB0eURlY2xhcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3NDY4NERFN0MyNTRE
MDI2N0EwQzNEQTcgLyogUHJ1bmVQdXJlTGl0ZXJhbFN0YXRlbWVudHMuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJRDc5RUM0MjI4RjlFODA4MTI3QzhGMTI0IC8qIFF1YWxpZmllclR5cGVzLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTE1QjgwMERFMzcxOTM4QjIwQjdDOUMyRCAvKiBSZWNvcmRDb25z
dGFudFByZWNpc2lvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzQTgwNDdBNUNCMzM5MEE4MTNB
MzY4MDQgLyogUmVnZW5lcmF0ZVN0cnVjdE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUI3
QjJEMzE2NTFEMjJFM0EzOUE1MkMwRiAvKiBSZW1vdmVJbnZhcmlhbnREZWNsYXJhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlCQTA1NjBDQUZEODhBODI2NEZBOERDMDggLyogUmVtb3ZlUG93
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM5NjU5QjFFM0Y4NkUyOEM1ODJFQjQwNyAvKiBSZXdy
aXRlRG9XaGlsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzQjZFRjMyRTFBRjU2OUJEQ0MyQTky
QUUgLyogUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzZD
QzZGNkZCRUZCRkJDQUY0NTM4MzlFIC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkyRDg0QjgyRDk2OUIyNzJFRjkwNThDOUYgLyogUmV3cml0
ZVVuYXJ5TWludXNPcGVyYXRvckludC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1RDc4NkM1MUZD
MTQ5NjJDNTUyRDQ4NTMgLyogU2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUQzRjNEMTYwMkIwRUMwMEIwNDhBNzA2NSAvKiBTZWFyY2hTeW1i
b2wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0NFQjhGREY5NDkyNUE5MDI4OUMyNzQ0IC8qIFNo
YWRlckxhbmcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREFCNzA5RTFBQkZGNTVGN0UyNDc2OUI0
IC8qIFNoYWRlclZhcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTczRDcyRjA2MkU2M0JENzRE
MzE4NTQzIC8qIFN5bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUIzRDk1Nzg5MEJD
NTZFQ0NFQTI2OEJBQyAvKiBUeXBlcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUIwRDhGODAz
NUUxMDY2MkZFREZBODIgLyogVW5mb2xkU2hvcnRDaXJjdWl0QVNULmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTczNjYzOEUwMUQzODlEQkIwREFCMzYwOCAvKiBVc2VJbnRlcmZhY2VCbG9ja0ZpZWxk
cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlENTExMTIyRjRCMkI0MjMwNTY5MjY2NUQgLyogVmFs
aWRhdGVHbG9iYWxJbml0aWFsaXplci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQjhGOEJGOThC
OEU3N0M5NDVEMEIwNEQgLyogVmFsaWRhdGVMaW1pdGF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlGNkM5MkQ3NEYxNUFFOEYwMDA4M0RCRkMgLyogVmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTdFODQ4M0U1NDc3RkQxNjE3M0NGMDM5RiAvKiBWYWxpZGF0
ZU11bHRpdmlld1dlYkdMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM1OEM3MTgwRUY0N0VGMjA4
QzgwREUxQyAvKiBWYWxpZGF0ZU91dHB1dHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRDA5Nzgx
RTY3QUVFQkY2MjA2NkM3NTg2IC8qIFZhbGlkYXRlU3dpdGNoLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUMyRkM0QjBCMzExMjdCQkFBN0UxNURGRSAvKiBWYXJpYWJsZUluZm8uY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRjdFQTI4MTM4ODVGRjg4QUNBOTkyODVGIC8qIFZhcmlhYmxlUGFja2VyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTIwQjE0NTMyMTMxOTcyMUQ2MkI5MTdEQSAvKiBibG9ja2xh
eW91dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzRTM5MzI4ODQ2MjY1NTFFN0E4QTUyODIgLyog
Z2xzbGFuZ19sZXguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUUwOTAyNjQ4NkFGNjhFODFFNEY4
QzYwIC8qIGdsc2xhbmdfdGFiLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUIxNkYzQkVGQzBGRDAy
NDEzOTQ4MjBFMiAvKiBpbnRlcm1PdXQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUZBOTU4NEE4
Q0RCNzVEM0NDMEU0RTgyIC8qIHV0aWwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODlGQ0UyRjkz
Q0E4NzYyMDRENzc3NTU2IC8qIEFycmF5Qm91bmRzQ2xhbXBlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlFRDcyOTc3NjJGOUE0MzFDRUYyMUU1NjggLyogT3V0cHV0RVNTTC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk4RUZDQURBREZGQTU1N0MxNEQwMjI4NDQgLyogVHJhbnNsYXRvckVTU0wuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNzc4MzY5NEE2MDlEOURFMTZFRjVCNEZGIC8qIEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yR0xTTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5QTdGMjA0Qjk2NjM1
RTFCRDE0OURBRTIgLyogRXh0ZW5zaW9uR0xTTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5MjlC
MDFEMjk5NkQyMENENDFEMEI3NDYgLyogT3V0cHV0R0xTTC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkxRDdFQTE5MUNDMEM0QkFGMjI3NUM5RkUgLyogT3V0cHV0R0xTTEJhc2UuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQzRDOTVBRjY2RTcxMzMxMkU5RDZERjlGIC8qIFRyYW5zbGF0b3JHTFNMLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTdFNTFGRTQzQUU4Q0Y1RUU2N0Q5NzgzRiAvKiBWZXJzaW9u
R0xTTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJQ0ZDODkxQ0Q3QTZBQzc0NDQxNkE5QkFFIC8qIFNv
dXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlBRTEzNjI1OTU5RTQzMDI3
MjI1NTQwMjAgLyogRGlhZ25vc3RpY3NCYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTREQzk3
NTkwQUVDREE4QzkzRDU3QURFQSAvKiBEaXJlY3RpdmVIYW5kbGVyQmFzZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlGNUExRDI2RDJEQjRCREY3NjJFMjBENjcgLyogRGlyZWN0aXZlUGFyc2VyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTFBMjMwQTU4MjdCNTlFNjJBRUM3RjhGRiAvKiBFeHByZXNz
aW9uUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM1RjU1Q0Q0MEJBNzIxNTIzOTQ1QUEz
NCAvKiBJbnB1dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDQzIzRDhGMzhDQTU3NUMzOTAyRkE2
Q0EgLyogTGV4ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTUzMzQ5QzE2RUUwQUU4NDBDMzhD
NkJDIC8qIE1hY3JvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUQ5Rjk3MkJBQkE4MzhGMUE4MkQ3
RjU5RSAvKiBNYWNyb0V4cGFuZGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM4MjIwNzE2MTNG
MDg4RTEwNkNFRUMwRCAvKiBQcmVwcm9jZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOUIw
QzYxMTFDQjI5OUQzNUU1OEQ3RDU4IC8qIFRva2VuLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVG
REVCREMwMENBNjQyQkIwODY5Rjg5NiAvKiBUb2tlbml6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisJ
CURCNTMzOEIwMTQ3OEZERTM2QUQ0QkQ3NyAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJY
U291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJ
ZmlsZXMgPSAoCisJCQkJQjE4MUM0NDJBMzI3NjE0RDFDODQ0RjFCIC8qIGVudHJ5X3BvaW50c19l
Z2wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjI4QjAxMjE4RkExNkMxRkM5MkE2MTgwIC8qIGVu
dHJ5X3BvaW50c19lZ2xfZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTlCQkUxMkIxRjM5Q0ZG
MkM0NUE1N0Q4RiAvKiBlbnRyeV9wb2ludHNfZ2xlc18yXzAuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNzIyNDY2RUJEMERFMjA5QTlGQTYyRjczIC8qIGVudHJ5X3BvaW50c19nbGVzXzJfMF9leHQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDlCMDk2QUNDOTdDNDlBMUFFNThBQzZEIC8qIGVudHJ5
X3BvaW50c19nbGVzXzNfMC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwQzE0NjVCQzZFMjZDNDMy
N0NENEVEMkQgLyogZW50cnlfcG9pbnRzX2dsZXNfM18xLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CURGRjM3NEM3RUI2NzNDMkZENTE5NDQzOSAvKiBnbG9iYWxfc3RhdGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJOEM0NDk1NTg2RDVFREFFREU3NkVDQkZGIC8qIGxpYkdMRVN2Mi5jcHAgaW4gU291
cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKKwkJfTsKKwkJRUNDMkI2ODIxNTA4REJGNzA4MTk5MjgxIC8qIFNvdXJjZXMgKi8gPSB7CisJ
CQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlDNjk4NzRGRDM1NkQ2NUIyRDU4QjhCNTIgLyogRmxv
YXQxNlRvRmxvYXQzMi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwMEQwNTEwQkVGRjM1RUQ5NDcz
QkE1QTMgLyogTWVtb3J5QnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcwQzZFRDk0OEZB
QTJBNkM3RTc3QjIxMSAvKiBhbmdsZXV0aWxzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY5NjlE
RDc1NkE2RkRGRTQ4NDQ2NDMyQiAvKiBkZWJ1Zy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MTU4
MDRCQkEyOTVFMjYyMjIzMDJDRjYgLyogbWF0aHV0aWwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MzFCNTAyN0NFMDg5ODE3NTUxNDcyQjYxIC8qIHN0cmluZ191dGlscy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlDOTdBQTFEMDc4QUZEOUMwRTE3NDgzMkYgLyogdGxzLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTNENzlEOTNEQzEyRjNCRUFGN0FFNTIzOSAvKiB1dGlsaXRpZXMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRTQ5NUUyQUIxODE5NEZDNTMwODgzNTMyIC8qIHN5c3RlbV91dGlsc19tYWMu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCX07CisJCUVENjk2MzMyOTE4QTA1NzBFNDg1RENCMSAvKiBTb3VyY2Vz
ICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJOTgwRjA5MEM1NzlFNjE5MkM4N0FD
Mzg5IC8qIGVudHJ5X3BvaW50c19lZ2wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRDExREVGRUI0
NkZFMzA1MDM4MkQzODA1IC8qIGVudHJ5X3BvaW50c19lZ2xfZXh0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTkyMjE5RUQwOTQwMjM3NTY1NEU1OUEzOSAvKiBlbnRyeV9wb2ludHNfZ2xlc18yXzAu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0U4NDNEMjA5QTIyRDM1Nzg1OUI0Nzc1IC8qIGVudHJ5
X3BvaW50c19nbGVzXzJfMF9leHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTA5QzRDRUFGNEVC
RDE4QzdCMjkzMDA2IC8qIGVudHJ5X3BvaW50c19nbGVzXzNfMC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1Nzc3RTcyQTcyQzEzNUI5N0M3RDMyQUQgLyogZW50cnlfcG9pbnRzX2dsZXNfM18xLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTNDRDY5MjUzRTAxNEE4MjczNTcxOEVFQyAvKiBnbG9iYWxf
c3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDFBMzFGNzk1NjIwM0M1QTM5MDhBQzM5IC8q
IGxpYkdMRVN2Mi5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwor
CQkwRUNEREYyNjMzQjQwMTc4NzI3RjNCODUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsK
KwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSBDNjk4OTZCNEREMkMw
NkNGMTYxNkJEQzYgLyogcHJlcHJvY2Vzc29yICovOworCQkJdGFyZ2V0UHJveHkgPSBERTVCNTlG
MzQxRUIzMUUwNjI4N0JGMUMgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkx
MDFBMzAzNUEzMjI1MDg0REI4MjdFNEIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJ
CWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSA4MDk1RkY2NTQzMEYzNjY2
RDY1ODdGN0YgLyogbGliQU5HTEVfcmVuZGVyZXJfY29uZmlnICovOworCQkJdGFyZ2V0UHJveHkg
PSAxMTdFQkEzQ0U0OTNEN0M3N0M3RjIyN0EgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwor
CQl9OworCQkyNUY0Qzk1NTY2RUExN0JFOTlFMDFDOTIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSA4MDk1RkY2
NTQzMEYzNjY2RDY1ODdGN0YgLyogbGliQU5HTEVfcmVuZGVyZXJfY29uZmlnICovOworCQkJdGFy
Z2V0UHJveHkgPSBBQzkyNzlDNjg4OTYwREU1RkQ4NUI5RDcgLyogUEJYQ29udGFpbmVySXRlbVBy
b3h5ICovOworCQl9OworCQkyQTg3OUU2QjVBM0ZBQTg1Q0RBQjFEMzIgLyogUEJYVGFyZ2V0RGVw
ZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQg
PSA3OTJBQkY0ODg0QThGREFFODE2OTBEREUgLyogYW5nbGVfY29tbW9uICovOworCQkJdGFyZ2V0
UHJveHkgPSBFQkRFQzRCOTlCMkEyMTUyNDE1NUJGMTggLyogUEJYQ29udGFpbmVySXRlbVByb3h5
ICovOworCQl9OworCQkzN0IyOERDRDcxMEUwRjBCQjIxOUQ5RDAgLyogUEJYVGFyZ2V0RGVwZW5k
ZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSBD
NzAxMjg0NUM1RkUzOUFCMDg0QTMyRDggLyogYW5nbGVfZ3B1X2luZm9fdXRpbCAqLzsKKwkJCXRh
cmdldFByb3h5ID0gRjJDNTc4OTIzQjNDQTU5OTFCQUI4NEUxIC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLzsKKwkJfTsKKwkJMzlCOTNDMEU2QThCRUYyNkM2OEY4ODgxIC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0
ID0gNzQ5ODE5NDRFMUZCNkRENzYyQTA3RDNGIC8qIGxpYkVHTCAqLzsKKwkJCXRhcmdldFByb3h5
ID0gOEYxRUE4RUY5MzBGOTRCMEQ5QjE4RDhCIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsK
KwkJfTsKKwkJM0ZCRDZCRDI4RDA4NUFDMEM4MzBFNTA5IC8qIFBCWFRhcmdldERlcGVuZGVuY3kg
Ki8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gNTVFNzAx
RDQ4RDZGNzVGREUwRkI1Qjg5IC8qIGNvcHlfc2NyaXB0cyAqLzsKKwkJCXRhcmdldFByb3h5ID0g
NjkyRjUyMjk1N0U0RjAyMjQxNkYwMjZCIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJ
fTsKKwkJNDUwMEY1N0U0RjU1NjI5QjM0M0U4QzI0IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8g
PSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gNUQ0QzlCRjEx
QTIyREIwQ0UxQTQ0MTIxIC8qIGxpYkFOR0xFX2QzZDExX2NvbmZpZyAqLzsKKwkJCXRhcmdldFBy
b3h5ID0gQzRCN0UzNTA2RDQ1NDY1MDI1NjFGNjZDIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LzsKKwkJfTsKKwkJNDdCNTk1MDJDMDA0QUYwOTdEMjI4NDMxIC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gNTVF
NzAxRDQ4RDZGNzVGREUwRkI1Qjg5IC8qIGNvcHlfc2NyaXB0cyAqLzsKKwkJCXRhcmdldFByb3h5
ID0gN0EzMUM4MDE0RUIxOEUxOTJBRUUwMUEwIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsK
KwkJfTsKKwkJNEQ3NzgzQzk2Rjk5MTdGQ0U0OTc5M0NFIC8qIFBCWFRhcmdldERlcGVuZGVuY3kg
Ki8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gNzkyQUJG
NDg4NEE4RkRBRTgxNjkwRERFIC8qIGFuZ2xlX2NvbW1vbiAqLzsKKwkJCXRhcmdldFByb3h5ID0g
M0I3NTQ0RUNDNTlBNzg1MTNDQzRGNDM5IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJ
fTsKKwkJNTBBMkVBMzY5RDQ2NkE3Q0Y1MDE2NzYzIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8g
PSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMjdCNDM2QzdD
RUY5Mzc4ODk0NjQxMURFIC8qIGxpYkVHTF9zdGF0aWMgKi87CisJCQl0YXJnZXRQcm94eSA9IDBF
MTA2NDlDMjkwRkVBN0RGQjQ3QzcyOCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07
CisJCTUzNDEzRDBDMTk0MTNEMkM1Nzg1NjYxNCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0g
eworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDU1RTcwMUQ0OEQ2
Rjc1RkRFMEZCNUI4OSAvKiBjb3B5X3NjcmlwdHMgKi87CisJCQl0YXJnZXRQcm94eSA9IEI1RjYx
M0E4RUYxOUYyMkQ5RDNBQ0I5RCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJ
CTVCQTUyODdGRkU5RTM4QzMxODgzQjUzNiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewor
CQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDk1OTQ1N0I1N0FFQjQw
OTU4NEU0ODg3MCAvKiBsaWJHTEVTdjIgKi87CisJCQl0YXJnZXRQcm94eSA9IEI1OUYxNkI3MEYy
MjhEQTVFQkZCRDhCNiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTVDOTM4
MTlBOUQ4NDlBN0EyNDdBNjM0NyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNh
ID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDgwNTUxQ0Q3RUIyNDBGMDlGNzU1
REFDMCAvKiBjb21taXRfaWQgKi87CisJCQl0YXJnZXRQcm94eSA9IEJGRDBBREY0Q0EzMEUxQjg0
RTgyNTU2NCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTVDOTVGNkU4QURD
N0Q3NzEzNEFFMEU1MCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJY
VGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDgwNTUxQ0Q3RUIyNDBGMDlGNzU1REFDMCAv
KiBjb21taXRfaWQgKi87CisJCQl0YXJnZXRQcm94eSA9IDc1MUM5Q0VGODQwNkZGRDI2OUREMjU1
QiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTVGRjc4NzhBNzI4MEJBOUFF
OUU1MTY1NCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0
RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IEI4QzdDMTQyNzUxRjFFMTQ5OEE2NTJENCAvKiBsaWJH
TEVTdjJfc3RhdGljICovOworCQkJdGFyZ2V0UHJveHkgPSA5NEQyRUY4MjQwMjk5MTIxRjY4QTlD
NTggLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQk2MTlDNUM4MUE1NDI5N0ZG
RDk3N0NEOTMgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSBDNzAxMjg0NUM1RkUzOUFCMDg0QTMyRDggLyogYW5n
bGVfZ3B1X2luZm9fdXRpbCAqLzsKKwkJCXRhcmdldFByb3h5ID0gODQzN0JBNzg4QzBFOTIyODc2
NTU2Q0MyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJNjc1Rjk3NzVERDkw
NzY4QTkzN0E3RTY2IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhU
YXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gODA1NTFDRDdFQjI0MEYwOUY3NTVEQUMwIC8q
IGNvbW1pdF9pZCAqLzsKKwkJCXRhcmdldFByb3h5ID0gNDdFMUVGM0VEQ0UwRERFMzQ5OTUxODdC
IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJNjk1MThGNDFCRDJGQTBDNDkz
MzIwQTRBIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXRE
ZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gNUQ0QzlCRjExQTIyREIwQ0UxQTQ0MTIxIC8qIGxpYkFO
R0xFX2QzZDExX2NvbmZpZyAqLzsKKwkJCXRhcmdldFByb3h5ID0gOTJCQzUyRDFBMURENDQ5NjhE
RkM2ODBFIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJOEQ5RUQ5M0VBQTA4
QkE5MkY0NDY1NDU0IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhU
YXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMUY4OENERUI0NEU3QzcxQzI4MkZBOTc1IC8q
IHRyYW5zbGF0b3IgKi87CisJCQl0YXJnZXRQcm94eSA9IDc1NUEyOUYxQjIxM0RBQTExMzc3Mzc5
NyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTlEQzZGOTZBQUFCNkNBRjkx
OUIzNEE0NSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0
RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDgwNTUxQ0Q3RUIyNDBGMDlGNzU1REFDMCAvKiBjb21t
aXRfaWQgKi87CisJCQl0YXJnZXRQcm94eSA9IDBDQzEwNUMzNEE1MkQ0NTYwMDQ1OEVGQSAvKiBQ
QlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCUE2MTNGOEFDRDdENzE0RDU0NUNEOTIx
OSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5k
ZW5jeTsKKwkJCXRhcmdldCA9IDk1OTQ1N0I1N0FFQjQwOTU4NEU0ODg3MCAvKiBsaWJHTEVTdjIg
Ki87CisJCQl0YXJnZXRQcm94eSA9IEU5MkI4MUQ3MThCRUFGMUE5MjY3QjM3QyAvKiBQQlhDb250
YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCUFEOTZCNzEwMkVFNEFGNDRFNkMwREUxMSAvKiBQ
QlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsK
KwkJCXRhcmdldCA9IDE3RjgzRTk2NDk4QjUwMEI3N0QzNzExOCAvKiBhbmdsZV9pbWFnZV91dGls
ICovOworCQkJdGFyZ2V0UHJveHkgPSBEQjkwM0QxN0RFRTlGRDNBNjI4Mzg0NDYgLyogUEJYQ29u
dGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQlCMzc2OUY5MjJDMjA2QUEzOEI1QzQwMTQgLyog
UEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7
CisJCQl0YXJnZXQgPSA1RDRDOUJGMTFBMjJEQjBDRTFBNDQxMjEgLyogbGliQU5HTEVfZDNkMTFf
Y29uZmlnICovOworCQkJdGFyZ2V0UHJveHkgPSBDRkMwOUQ4QjUyOUI1RkE2NDRFOTBGQTQgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQlCQUVEOEMyMkFCRTkxODk5REE4QUUx
REYgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVu
ZGVuY3k7CisJCQl0YXJnZXQgPSBDNjk4OTZCNEREMkMwNkNGMTYxNkJEQzYgLyogcHJlcHJvY2Vz
c29yICovOworCQkJdGFyZ2V0UHJveHkgPSBDRDI0ODZGODBFNUY5MDIxN0VENzNDQUYgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQlCRDUyRjEyQUREQjBBRjUxREFEMkE5OTYg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSA2RDdFNjMzMjhGODczODRGRjM5M0FBMEIgLyogbGliQU5HTEUgKi87
CisJCQl0YXJnZXRQcm94eSA9IDBFREJEOTJFQzZBNkExRDNEMTg5QjQ1NiAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi87CisJCX07CisJCUJFQjY0RjU0QzM5RjFFNjdBNTQ5RTQyQiAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJ
CXRhcmdldCA9IDE3RjgzRTk2NDk4QjUwMEI3N0QzNzExOCAvKiBhbmdsZV9pbWFnZV91dGlsICov
OworCQkJdGFyZ2V0UHJveHkgPSAyNjg4NkNDRDQ1QkQzMkVCNjA0MzI2QUEgLyogUEJYQ29udGFp
bmVySXRlbVByb3h5ICovOworCQl9OworCQlEMjI4QTczQjRBMDc1NjJCRDIyRjFFOTEgLyogUEJY
VGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJ
CQl0YXJnZXQgPSAxRjg4Q0RFQjQ0RTdDNzFDMjgyRkE5NzUgLyogdHJhbnNsYXRvciAqLzsKKwkJ
CXRhcmdldFByb3h5ID0gRDhGOUM2QUEyQTJERUQ1QzZBMTkzQjVEIC8qIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSAqLzsKKwkJfTsKKwkJRjY3QTc2RDgwMjA0N0VCM0VGOTdDMzI5IC8qIFBCWFRhcmdl
dERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFy
Z2V0ID0gNkQ3RTYzMzI4Rjg3Mzg0RkYzOTNBQTBCIC8qIGxpYkFOR0xFICovOworCQkJdGFyZ2V0
UHJveHkgPSBCMzUwRUYyQTlFNjYwNzI1OTRGNUQyQUUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5
ICovOworCQl9OworCQlGQjcwNEM5NUU4MEZERDIyNTU3MTRFREIgLyogUEJYVGFyZ2V0RGVwZW5k
ZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSA4
MDk1RkY2NTQzMEYzNjY2RDY1ODdGN0YgLyogbGliQU5HTEVfcmVuZGVyZXJfY29uZmlnICovOwor
CQkJdGFyZ2V0UHJveHkgPSA3QTRBQjg4MTI3RDhDMUY5MEJFQURGNkUgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovOworCQl9OworLyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAq
LworCisvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTA4Q0IyQUUw
MkJFQUZEQzgxNTk1OTZCRCAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9T
VEFOREFSRCA9ICJjKysxMSI7CisJCQkJRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CisJCQkJR0ND
X1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJTElCQU5HTEVfSU1QTEVNRU5UQVRJ
T04sCisJCQkJCUFOR0xFX1NUQU5EQUxPTkVfQlVJTEQsCisJCQkJCUFOR0xFX0VOQUJMRV9FU1NM
LAorCQkJCQlBTkdMRV9FTkFCTEVfR0xTTCwKKwkJCQkJQU5HTEVfRU5BQkxFX09QRU5HTCwKKwkJ
CQkJQU5HTEVfRU5BQkxFX05VTEwsCisJCQkJCU5ERUJVRywKKwkJCQkpOworCQkJCUhFQURFUl9T
RUFSQ0hfUEFUSFMgPSAoCisJCQkJCS4sCisJCQkJCS4uL2luY2x1ZGUsCisJCQkJCXRoaXJkX3Bh
cnR5L2tocm9ub3MsCisJCQkJCSIkKFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS9hbmdsZSIsCisJ
CQkJCS4uL3NyYywKKwkJCQkJLi4vc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcywKKwkJ
CQkpOworCQkJCVBST0RVQ1RfTkFNRSA9IEFOR0xFOworCQkJCVdBUk5JTkdfQ0ZMQUdTID0gKAor
CQkJCQkiLVdhbGwiLAorCQkJCQkiLVdjaGFyLXN1YnNjcmlwdHMiLAorCQkJCQkiLVdlcnJvciIs
CisJCQkJCSItV2V4dHJhIiwKKwkJCQkJIi1XZm9ybWF0PTIiLAorCQkJCQkiLVdpbml0LXNlbGYi
LAorCQkJCQkiLVdub24tdmlydHVhbC1kdG9yIiwKKwkJCQkJIi1Xbm8tZm9ybWF0LW5vbmxpdGVy
YWwiLAorCQkJCQkiLVduby11bmtub3duLXByYWdtYXMiLAorCQkJCQkiLVduby11bnVzZWQtZnVu
Y3Rpb24iLAorCQkJCQkiLVduby11bnVzZWQtcGFyYW1ldGVyIiwKKwkJCQkJIi1XcGFja2VkIiwK
KwkJCQkJIi1XcG9pbnRlci1hcml0aCIsCisJCQkJCSItV3VuZGVmIiwKKwkJCQkJIi1Xd3JpdGUt
c3RyaW5ncyIsCisJCQkJKTsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMUE5
M0Y5MDQxMjQ3MzJDQ0REMzUwMEI4IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNMQU5HX0NYWF9MQU5HVUFH
RV9TVEFOREFSRCA9ICJjKysxMSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCUVY
RUNVVEFCTEVfUFJFRklYID0gbGliOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOwor
CQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCUFOR0xFX1NUQU5EQUxP
TkVfQlVJTEQsCisJCQkJCV9ERUJVRywKKwkJCQkpOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMg
PSAoCisJCQkJCSIkKFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS9hbmdsZSIsCisJCQkJCS4uL2lu
Y2x1ZGUsCisJCQkJCS4uL3NyYywKKwkJCQkJLi4vc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1l
cmljcywKKwkJCQkpOworCQkJCVBST0RVQ1RfTkFNRSA9IHByZXByb2Nlc3NvcjsKKwkJCQlXQVJO
SU5HX0NGTEFHUyA9ICgKKwkJCQkJIi1XYWxsIiwKKwkJCQkJIi1XY2hhci1zdWJzY3JpcHRzIiwK
KwkJCQkJIi1XZXJyb3IiLAorCQkJCQkiLVdleHRyYSIsCisJCQkJCSItV2Zvcm1hdD0yIiwKKwkJ
CQkJIi1XaW5pdC1zZWxmIiwKKwkJCQkJIi1Xbm9uLXZpcnR1YWwtZHRvciIsCisJCQkJCSItV25v
LWZvcm1hdC1ub25saXRlcmFsIiwKKwkJCQkJIi1Xbm8tdW5rbm93bi1wcmFnbWFzIiwKKwkJCQkJ
Ii1Xbm8tdW51c2VkLWZ1bmN0aW9uIiwKKwkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCisJ
CQkJCSItV3BhY2tlZCIsCisJCQkJCSItV3BvaW50ZXItYXJpdGgiLAorCQkJCQkiLVd1bmRlZiIs
CisJCQkJCSItV3dyaXRlLXN0cmluZ3MiLAorCQkJCSk7CisJCQl9OworCQkJbmFtZSA9IERlYnVn
OworCQl9OworCQkyMkQ5NEI4NDU4NDE2RTMyOTM5MjYzMTUgLyogRGVidWcgKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xB
TkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImMrKzExIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQ
ID0gTk87CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NF
U1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJQU5HTEVfU1RBTkRBTE9ORV9CVUlMRCwKKwkJCQkJ
X0RFQlVHLAorCQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0gY29weV9zY3JpcHRzOworCQkJCVdB
Uk5JTkdfQ0ZMQUdTID0gKAorCQkJCQkiLVdhbGwiLAorCQkJCQkiLVdjaGFyLXN1YnNjcmlwdHMi
LAorCQkJCQkiLVdlcnJvciIsCisJCQkJCSItV2V4dHJhIiwKKwkJCQkJIi1XZm9ybWF0PTIiLAor
CQkJCQkiLVdpbml0LXNlbGYiLAorCQkJCQkiLVdub24tdmlydHVhbC1kdG9yIiwKKwkJCQkJIi1X
bm8tZm9ybWF0LW5vbmxpdGVyYWwiLAorCQkJCQkiLVduby11bmtub3duLXByYWdtYXMiLAorCQkJ
CQkiLVduby11bnVzZWQtZnVuY3Rpb24iLAorCQkJCQkiLVduby11bnVzZWQtcGFyYW1ldGVyIiwK
KwkJCQkJIi1XcGFja2VkIiwKKwkJCQkJIi1XcG9pbnRlci1hcml0aCIsCisJCQkJCSItV3VuZGVm
IiwKKwkJCQkJIi1Xd3JpdGUtc3RyaW5ncyIsCisJCQkJKTsKKwkJCX07CisJCQluYW1lID0gRGVi
dWc7CisJCX07CisJCTJCNDE0OURGNUUxMzBBODBCNDg2NTYzNiAvKiBSZWxlYXNlICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJjKysxMSI7CisJCQkJRVhFQ1VUQUJMRV9Q
UkVGSVggPSBsaWI7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJ
QU5HTEVfU1RBTkRBTE9ORV9CVUlMRCwKKwkJCQkJTkRFQlVHLAorCQkJCSk7CisJCQkJSEVBREVS
X1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL2FuZ2xl
IiwKKwkJCQkJLi4vaW5jbHVkZSwKKwkJCQkJLi4vc3JjLAorCQkJCQkuLi9zcmMvY29tbW9uL3Ro
aXJkX3BhcnR5L251bWVyaWNzLAorCQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0gcHJlcHJvY2Vz
c29yOworCQkJCVdBUk5JTkdfQ0ZMQUdTID0gKAorCQkJCQkiLVdhbGwiLAorCQkJCQkiLVdjaGFy
LXN1YnNjcmlwdHMiLAorCQkJCQkiLVdlcnJvciIsCisJCQkJCSItV2V4dHJhIiwKKwkJCQkJIi1X
Zm9ybWF0PTIiLAorCQkJCQkiLVdpbml0LXNlbGYiLAorCQkJCQkiLVdub24tdmlydHVhbC1kdG9y
IiwKKwkJCQkJIi1Xbm8tZm9ybWF0LW5vbmxpdGVyYWwiLAorCQkJCQkiLVduby11bmtub3duLXBy
YWdtYXMiLAorCQkJCQkiLVduby11bnVzZWQtZnVuY3Rpb24iLAorCQkJCQkiLVduby11bnVzZWQt
cGFyYW1ldGVyIiwKKwkJCQkJIi1XcGFja2VkIiwKKwkJCQkJIi1XcG9pbnRlci1hcml0aCIsCisJ
CQkJCSItV3VuZGVmIiwKKwkJCQkJIi1Xd3JpdGUtc3RyaW5ncyIsCisJCQkJKTsKKwkJCX07CisJ
CQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMkI2NUUwOUFGNTcxMzdGMzUzOEI2NTJEIC8qIFJl
bGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImMrKzExIjsKKwkJ
CQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gTkRFQlVHOworCQkJCVBST0RVQ1RfTkFN
RSA9IGxpYkFOR0xFX3JlbmRlcmVyX2NvbmZpZzsKKwkJCQlXQVJOSU5HX0NGTEFHUyA9ICgKKwkJ
CQkJIi1XYWxsIiwKKwkJCQkJIi1XY2hhci1zdWJzY3JpcHRzIiwKKwkJCQkJIi1XZXJyb3IiLAor
CQkJCQkiLVdleHRyYSIsCisJCQkJCSItV2Zvcm1hdD0yIiwKKwkJCQkJIi1XaW5pdC1zZWxmIiwK
KwkJCQkJIi1Xbm9uLXZpcnR1YWwtZHRvciIsCisJCQkJCSItV25vLWZvcm1hdC1ub25saXRlcmFs
IiwKKwkJCQkJIi1Xbm8tdW5rbm93bi1wcmFnbWFzIiwKKwkJCQkJIi1Xbm8tdW51c2VkLWZ1bmN0
aW9uIiwKKwkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCisJCQkJCSItV3BhY2tlZCIsCisJ
CQkJCSItV3BvaW50ZXItYXJpdGgiLAorCQkJCQkiLVd1bmRlZiIsCisJCQkJCSItV3dyaXRlLXN0
cmluZ3MiLAorCQkJCSk7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTJDRjM1
M0UyRkQwMkRGMTM5NTFCQ0EwNyAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0Vf
U1RBTkRBUkQgPSAiYysrMTEiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlFWEVD
VVRBQkxFX1BSRUZJWCA9IGxpYjsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJ
CQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQlBTkdMRV9TVEFOREFMT05F
X0JVSUxELAorCQkJCQlHUFVfSU5GT19VU0VfRFhHSSwKKwkJCQkJX0RFQlVHLAorCQkJCSk7CisJ
CQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJLiwKKwkJCQkJLi4vaW5jbHVkZSwKKwkJ
CQkJIiQoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL2FuZ2xlIiwKKwkJCQkJLi4vc3JjLAorCQkJ
CQkuLi9zcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzLAorCQkJCSk7CisJCQkJUFJPRFVD
VF9OQU1FID0gYW5nbGVfZ3B1X2luZm9fdXRpbDsKKwkJCQlXQVJOSU5HX0NGTEFHUyA9ICgKKwkJ
CQkJIi1XYWxsIiwKKwkJCQkJIi1XY2hhci1zdWJzY3JpcHRzIiwKKwkJCQkJIi1XZXJyb3IiLAor
CQkJCQkiLVdleHRyYSIsCisJCQkJCSItV2Zvcm1hdD0yIiwKKwkJCQkJIi1XaW5pdC1zZWxmIiwK
KwkJCQkJIi1Xbm9uLXZpcnR1YWwtZHRvciIsCisJCQkJCSItV25vLWZvcm1hdC1ub25saXRlcmFs
IiwKKwkJCQkJIi1Xbm8tdW5rbm93bi1wcmFnbWFzIiwKKwkJCQkJIi1Xbm8tdW51c2VkLWZ1bmN0
aW9uIiwKKwkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCisJCQkJCSItV3BhY2tlZCIsCisJ
CQkJCSItV3BvaW50ZXItYXJpdGgiLAorCQkJCQkiLVd1bmRlZiIsCisJCQkJCSItV3dyaXRlLXN0
cmluZ3MiLAorCQkJCSk7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkzNjc1RERG
MTBCQ0ZCQkNBMzdEOENDRDAgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0Vf
U1RBTkRBUkQgPSAiYysrMTEiOworCQkJCURZTElCX0lOU1RBTExfTkFNRV9CQVNFID0gIkBycGF0
aCI7CisJCQkJRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9E
RUZJTklUSU9OUyA9ICgKKwkJCQkJQU5HTEVfU1RBTkRBTE9ORV9CVUlMRCwKKwkJCQkJTElCQU5H
TEVfSU1QTEVNRU5UQVRJT04sCisJCQkJCUdMX0dMRVhUX1BST1RPVFlQRVMsCisJCQkJCSJBTkdM
RV9QUkVMT0FERURfRDNEQ09NUElMRVJfTU9EVUxFX05BTUVTPXtcXCBcXFwiZDNkY29tcGlsZXJf
NDcuZGxsXFxcIixcXCBcXFwiZDNkY29tcGlsZXJfNDYuZGxsXFxcIixcXCBcXFwiZDNkY29tcGls
ZXJfNDMuZGxsXFxcIlxcIH0iLAorCQkJCQkiR0xfQVBJQ0FMTD1fX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5KFxcXCJkZWZhdWx0XFxcIikpKSIsCisJCQkJCUFOR0xFX0VOQUJMRV9PUEVOR0wsCisJ
CQkJCUFOR0xFX0VOQUJMRV9OVUxMLAorCQkJCQlOREVCVUcsCisJCQkJKTsKKwkJCQlIRUFERVJf
U0VBUkNIX1BBVEhTID0gKAorCQkJCQkiJChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvYW5nbGUi
LAorCQkJCQkuLi9zcmMsCisJCQkJCS4uL2luY2x1ZGUsCisJCQkJCS4uL3NyYy9jb21tb24vdGhp
cmRfcGFydHkvbnVtZXJpY3MsCisJCQkJKTsKKwkJCQlMRF9SVU5QQVRIX1NFQVJDSF9QQVRIUyA9
ICJAZXhlY3V0YWJsZV9wYXRoLy4iOworCQkJCVBST0RVQ1RfTkFNRSA9IEdMRVN2Ml9zdGF0aWM7
CisJCQkJV0FSTklOR19DRkxBR1MgPSAoCisJCQkJCSItV2FsbCIsCisJCQkJCSItV2NoYXItc3Vi
c2NyaXB0cyIsCisJCQkJCSItV2Vycm9yIiwKKwkJCQkJIi1XZXh0cmEiLAorCQkJCQkiLVdmb3Jt
YXQ9MiIsCisJCQkJCSItV2luaXQtc2VsZiIsCisJCQkJCSItV25vbi12aXJ0dWFsLWR0b3IiLAor
CQkJCQkiLVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCisJCQkJCSItV25vLXVua25vd24tcHJhZ21h
cyIsCisJCQkJCSItV25vLXVudXNlZC1mdW5jdGlvbiIsCisJCQkJCSItV25vLXVudXNlZC1wYXJh
bWV0ZXIiLAorCQkJCQkiLVdwYWNrZWQiLAorCQkJCQkiLVdwb2ludGVyLWFyaXRoIiwKKwkJCQkJ
Ii1XdW5kZWYiLAorCQkJCQkiLVd3cml0ZS1zdHJpbmdzIiwKKwkJCQkpOworCQkJfTsKKwkJCW5h
bWUgPSBSZWxlYXNlOworCQl9OworCQkzREI1QkZDNTgwMkU5RDM2NTBEMzVGNEQgLyogRGVidWcg
Ki8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJSU5URVJNRURJQVRFX0RJUiA9ICIkKFBST0pFQ1RfREVSSVZFRF9GSUxFX0RJUikv
JChDT05GSUdVUkFUSU9OKSI7CisJCQkJU0hBUkVEX0lOVEVSTUVESUFURV9ESVIgPSAiJChTWU1S
T09UKS9EZXJpdmVkU291cmNlcy8kKENPTkZJR1VSQVRJT04pIjsKKwkJCX07CisJCQluYW1lID0g
RGVidWc7CisJCX07CisJCTQ1QzdBQjQwRTkyQjJENkU5RURBOEY4RSAvKiBEZWJ1ZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlQUk9EVUNUX05BTUUgPSBBbGw7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQk0
RTRBOTIyQjVDQUQzMzkyNTMyMjQxOTggLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhfTEFO
R1VBR0VfU1RBTkRBUkQgPSAiYysrMTEiOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElP
TlMgPSBOREVCVUc7CisJCQkJUFJPRFVDVF9OQU1FID0gbGliQU5HTEVfZDNkMTFfY29uZmlnOwor
CQkJCVdBUk5JTkdfQ0ZMQUdTID0gKAorCQkJCQkiLVdhbGwiLAorCQkJCQkiLVdjaGFyLXN1YnNj
cmlwdHMiLAorCQkJCQkiLVdlcnJvciIsCisJCQkJCSItV2V4dHJhIiwKKwkJCQkJIi1XZm9ybWF0
PTIiLAorCQkJCQkiLVdpbml0LXNlbGYiLAorCQkJCQkiLVdub24tdmlydHVhbC1kdG9yIiwKKwkJ
CQkJIi1Xbm8tZm9ybWF0LW5vbmxpdGVyYWwiLAorCQkJCQkiLVduby11bmtub3duLXByYWdtYXMi
LAorCQkJCQkiLVduby11bnVzZWQtZnVuY3Rpb24iLAorCQkJCQkiLVduby11bnVzZWQtcGFyYW1l
dGVyIiwKKwkJCQkJIi1XcGFja2VkIiwKKwkJCQkJIi1XcG9pbnRlci1hcml0aCIsCisJCQkJCSIt
V3VuZGVmIiwKKwkJCQkJIi1Xd3JpdGUtc3RyaW5ncyIsCisJCQkJKTsKKwkJCX07CisJCQluYW1l
ID0gUmVsZWFzZTsKKwkJfTsKKwkJNTRCMTQwQzEzNTA3RjlEODQ5NEYxNEYwIC8qIERlYnVnICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJjKysxMSI7CisJCQkJQ09QWV9Q
SEFTRV9TVFJJUCA9IE5POworCQkJCURZTElCX0lOU1RBTExfTkFNRV9CQVNFID0gIkBycGF0aCI7
CisJCQkJRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZF
TCA9IDA7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJTElCR0xF
U1YyX0lNUExFTUVOVEFUSU9OLAorCQkJCQlBTkdMRV9TVEFOREFMT05FX0JVSUxELAorCQkJCQlM
SUJBTkdMRV9JTVBMRU1FTlRBVElPTiwKKwkJCQkJR0xfR0xFWFRfUFJPVE9UWVBFUywKKwkJCQkJ
IkFOR0xFX1BSRUxPQURFRF9EM0RDT01QSUxFUl9NT0RVTEVfTkFNRVM9e1xcIFxcXCJkM2Rjb21w
aWxlcl80Ny5kbGxcXFwiLFxcIFxcXCJkM2Rjb21waWxlcl80Ni5kbGxcXFwiLFxcIFxcXCJkM2Rj
b21waWxlcl80My5kbGxcXFwiXFwgfSIsCisJCQkJCSJHTF9BUElDQUxMPV9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkoXFxcImRlZmF1bHRcXFwiKSkpIiwKKwkJCQkJQU5HTEVfRU5BQkxFX09QRU5H
TCwKKwkJCQkJQU5HTEVfRU5BQkxFX05VTEwsCisJCQkJCV9ERUJVRywKKwkJCQkpOworCQkJCUhF
QURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS9h
bmdsZSIsCisJCQkJCS4uL3NyYywKKwkJCQkJLi4vaW5jbHVkZSwKKwkJCQkJLi4vc3JjL2NvbW1v
bi90aGlyZF9wYXJ0eS9udW1lcmljcywKKwkJCQkpOworCQkJCUxEX1JVTlBBVEhfU0VBUkNIX1BB
VEhTID0gIkBleGVjdXRhYmxlX3BhdGgvLiI7CisJCQkJTElCUkFSWV9TRUFSQ0hfUEFUSFMgPSAi
JChTREtST09UKS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzIjsKKwkJCQlQUk9EVUNUX05BTUUg
PSBHTEVTdjI7CisJCQkJV0FSTklOR19DRkxBR1MgPSAoCisJCQkJCSItV2FsbCIsCisJCQkJCSIt
V2NoYXItc3Vic2NyaXB0cyIsCisJCQkJCSItV2Vycm9yIiwKKwkJCQkJIi1XZXh0cmEiLAorCQkJ
CQkiLVdmb3JtYXQ9MiIsCisJCQkJCSItV2luaXQtc2VsZiIsCisJCQkJCSItV25vbi12aXJ0dWFs
LWR0b3IiLAorCQkJCQkiLVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCisJCQkJCSItV25vLXVua25v
d24tcHJhZ21hcyIsCisJCQkJCSItV25vLXVudXNlZC1mdW5jdGlvbiIsCisJCQkJCSItV25vLXVu
dXNlZC1wYXJhbWV0ZXIiLAorCQkJCQkiLVdwYWNrZWQiLAorCQkJCQkiLVdwb2ludGVyLWFyaXRo
IiwKKwkJCQkJIi1XdW5kZWYiLAorCQkJCQkiLVd3cml0ZS1zdHJpbmdzIiwKKwkJCQkpOworCQkJ
fTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJNjEwNTQxQTNDNEIwRDRENUNBN0ZEQ0RDIC8q
IFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImMrKzExIjsK
KwkJCQlEWUxJQl9JTlNUQUxMX05BTUVfQkFTRSA9ICJAcnBhdGgiOworCQkJCUVYRUNVVEFCTEVf
UFJFRklYID0gbGliOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJ
CUFOR0xFX1NUQU5EQUxPTkVfQlVJTEQsCisJCQkJCSJFR0xBUEk9X19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eShcXFwiZGVmYXVsdFxcXCIpKSkiLAorCQkJCQlOREVCVUcsCisJCQkJKTsKKwkJCQlI
RUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLAorCQkJCQkuLi9pbmNsdWRlLAorCQkJCQki
JChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvYW5nbGUiLAorCQkJCSk7CisJCQkJTERfUlVOUEFU
SF9TRUFSQ0hfUEFUSFMgPSAiQGV4ZWN1dGFibGVfcGF0aC8uIjsKKwkJCQlQUk9EVUNUX05BTUUg
PSBFR0w7CisJCQkJV0FSTklOR19DRkxBR1MgPSAoCisJCQkJCSItV2FsbCIsCisJCQkJCSItV2No
YXItc3Vic2NyaXB0cyIsCisJCQkJCSItV2Vycm9yIiwKKwkJCQkJIi1XZXh0cmEiLAorCQkJCQki
LVdmb3JtYXQ9MiIsCisJCQkJCSItV2luaXQtc2VsZiIsCisJCQkJCSItV25vbi12aXJ0dWFsLWR0
b3IiLAorCQkJCQkiLVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCisJCQkJCSItV25vLXVua25vd24t
cHJhZ21hcyIsCisJCQkJCSItV25vLXVudXNlZC1mdW5jdGlvbiIsCisJCQkJCSItV25vLXVudXNl
ZC1wYXJhbWV0ZXIiLAorCQkJCQkiLVdwYWNrZWQiLAorCQkJCQkiLVdwb2ludGVyLWFyaXRoIiwK
KwkJCQkJIi1XdW5kZWYiLAorCQkJCQkiLVd3cml0ZS1zdHJpbmdzIiwKKwkJCQkpOworCQkJfTsK
KwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQk2MjEzQUJFQjc4RTQ1MEQ2OTEzNjZCOEYgLyog
UmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlJTlRFUk1FRElBVEVfRElSID0gIiQoUFJPSkVDVF9ERVJJVkVEX0ZJ
TEVfRElSKS8kKENPTkZJR1VSQVRJT04pIjsKKwkJCQlTSEFSRURfSU5URVJNRURJQVRFX0RJUiA9
ICIkKFNZTVJPT1QpL0Rlcml2ZWRTb3VyY2VzLyQoQ09ORklHVVJBVElPTikiOworCQkJfTsKKwkJ
CW5hbWUgPSBSZWxlYXNlOworCQl9OworCQk2QjkwNTIwMDE5MUU3RkM3MkJDQzlBQjggLyogRGVi
dWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImMrKzExIjsKKwkJCQlD
T1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJ
CQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9IF9ERUJVRzsKKwkJCQlQUk9EVUNUX05B
TUUgPSBsaWJBTkdMRV9yZW5kZXJlcl9jb25maWc7CisJCQkJV0FSTklOR19DRkxBR1MgPSAoCisJ
CQkJCSItV2FsbCIsCisJCQkJCSItV2NoYXItc3Vic2NyaXB0cyIsCisJCQkJCSItV2Vycm9yIiwK
KwkJCQkJIi1XZXh0cmEiLAorCQkJCQkiLVdmb3JtYXQ9MiIsCisJCQkJCSItV2luaXQtc2VsZiIs
CisJCQkJCSItV25vbi12aXJ0dWFsLWR0b3IiLAorCQkJCQkiLVduby1mb3JtYXQtbm9ubGl0ZXJh
bCIsCisJCQkJCSItV25vLXVua25vd24tcHJhZ21hcyIsCisJCQkJCSItV25vLXVudXNlZC1mdW5j
dGlvbiIsCisJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAorCQkJCQkiLVdwYWNrZWQiLAor
CQkJCQkiLVdwb2ludGVyLWFyaXRoIiwKKwkJCQkJIi1XdW5kZWYiLAorCQkJCQkiLVd3cml0ZS1z
dHJpbmdzIiwKKwkJCQkpOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJNzZGMzJD
RjAwNEY1NEE5MUI5MEZCNkFDIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9T
VEFOREFSRCA9ICJjKysxMSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCUdDQ19P
UFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMg
PSBfREVCVUc7CisJCQkJUFJPRFVDVF9OQU1FID0gbGliQU5HTEVfZDNkMTFfY29uZmlnOworCQkJ
CVdBUk5JTkdfQ0ZMQUdTID0gKAorCQkJCQkiLVdhbGwiLAorCQkJCQkiLVdjaGFyLXN1YnNjcmlw
dHMiLAorCQkJCQkiLVdlcnJvciIsCisJCQkJCSItV2V4dHJhIiwKKwkJCQkJIi1XZm9ybWF0PTIi
LAorCQkJCQkiLVdpbml0LXNlbGYiLAorCQkJCQkiLVdub24tdmlydHVhbC1kdG9yIiwKKwkJCQkJ
Ii1Xbm8tZm9ybWF0LW5vbmxpdGVyYWwiLAorCQkJCQkiLVduby11bmtub3duLXByYWdtYXMiLAor
CQkJCQkiLVduby11bnVzZWQtZnVuY3Rpb24iLAorCQkJCQkiLVduby11bnVzZWQtcGFyYW1ldGVy
IiwKKwkJCQkJIi1XcGFja2VkIiwKKwkJCQkJIi1XcG9pbnRlci1hcml0aCIsCisJCQkJCSItV3Vu
ZGVmIiwKKwkJCQkJIi1Xd3JpdGUtc3RyaW5ncyIsCisJCQkJKTsKKwkJCX07CisJCQluYW1lID0g
RGVidWc7CisJCX07CisJCTg0NjQyMThDN0ZDRTc4MkZBQzUzOEYyMiAvKiBEZWJ1ZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiYysrMTEiOworCQkJCUNPUFlfUEhBU0Vf
U1RSSVAgPSBOTzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJF
UFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQlBTkdMRV9TVEFOREFMT05FX0JVSUxELAor
CQkJCQlfREVCVUcsCisJCQkJKTsKKwkJCQlQUk9EVUNUX05BTUUgPSBjb21taXRfaWQ7CisJCQkJ
V0FSTklOR19DRkxBR1MgPSAoCisJCQkJCSItV2FsbCIsCisJCQkJCSItV2NoYXItc3Vic2NyaXB0
cyIsCisJCQkJCSItV2Vycm9yIiwKKwkJCQkJIi1XZXh0cmEiLAorCQkJCQkiLVdmb3JtYXQ9MiIs
CisJCQkJCSItV2luaXQtc2VsZiIsCisJCQkJCSItV25vbi12aXJ0dWFsLWR0b3IiLAorCQkJCQki
LVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCisJCQkJCSItV25vLXVua25vd24tcHJhZ21hcyIsCisJ
CQkJCSItV25vLXVudXNlZC1mdW5jdGlvbiIsCisJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIi
LAorCQkJCQkiLVdwYWNrZWQiLAorCQkJCQkiLVdwb2ludGVyLWFyaXRoIiwKKwkJCQkJIi1XdW5k
ZWYiLAorCQkJCQkiLVd3cml0ZS1zdHJpbmdzIiwKKwkJCQkpOworCQkJfTsKKwkJCW5hbWUgPSBE
ZWJ1ZzsKKwkJfTsKKwkJODYxRkFEQkRBQzcxMTdDRkExNzkyNUJEIC8qIERlYnVnICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJjKysxMSI7CisJCQkJQ09QWV9QSEFTRV9T
VFJJUCA9IE5POworCQkJCURZTElCX0lOU1RBTExfTkFNRV9CQVNFID0gIkBycGF0aCI7CisJCQkJ
RVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7
CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJQU5HTEVfU1RBTkRB
TE9ORV9CVUlMRCwKKwkJCQkJTElCQU5HTEVfSU1QTEVNRU5UQVRJT04sCisJCQkJCUdMX0dMRVhU
X1BST1RPVFlQRVMsCisJCQkJCSJBTkdMRV9QUkVMT0FERURfRDNEQ09NUElMRVJfTU9EVUxFX05B
TUVTPXtcXCBcXFwiZDNkY29tcGlsZXJfNDcuZGxsXFxcIixcXCBcXFwiZDNkY29tcGlsZXJfNDYu
ZGxsXFxcIixcXCBcXFwiZDNkY29tcGlsZXJfNDMuZGxsXFxcIlxcIH0iLAorCQkJCQkiR0xfQVBJ
Q0FMTD1fX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KFxcXCJkZWZhdWx0XFxcIikpKSIsCisJCQkJ
CUFOR0xFX0VOQUJMRV9PUEVOR0wsCisJCQkJCUFOR0xFX0VOQUJMRV9OVUxMLAorCQkJCQlfREVC
VUcsCisJCQkJKTsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiJChTSEFSRURf
SU5URVJNRURJQVRFX0RJUikvYW5nbGUiLAorCQkJCQkuLi9zcmMsCisJCQkJCS4uL2luY2x1ZGUs
CisJCQkJCS4uL3NyYy9jb21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3MsCisJCQkJKTsKKwkJCQlM
RF9SVU5QQVRIX1NFQVJDSF9QQVRIUyA9ICJAZXhlY3V0YWJsZV9wYXRoLy4iOworCQkJCVBST0RV
Q1RfTkFNRSA9IEdMRVN2Ml9zdGF0aWM7CisJCQkJV0FSTklOR19DRkxBR1MgPSAoCisJCQkJCSIt
V2FsbCIsCisJCQkJCSItV2NoYXItc3Vic2NyaXB0cyIsCisJCQkJCSItV2Vycm9yIiwKKwkJCQkJ
Ii1XZXh0cmEiLAorCQkJCQkiLVdmb3JtYXQ9MiIsCisJCQkJCSItV2luaXQtc2VsZiIsCisJCQkJ
CSItV25vbi12aXJ0dWFsLWR0b3IiLAorCQkJCQkiLVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCisJ
CQkJCSItV25vLXVua25vd24tcHJhZ21hcyIsCisJCQkJCSItV25vLXVudXNlZC1mdW5jdGlvbiIs
CisJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAorCQkJCQkiLVdwYWNrZWQiLAorCQkJCQki
LVdwb2ludGVyLWFyaXRoIiwKKwkJCQkJIi1XdW5kZWYiLAorCQkJCQkiLVd3cml0ZS1zdHJpbmdz
IiwKKwkJCQkpOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJOUE2REJFQkY5ODYw
MDkyQUVBNjc3NUIyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5E
QVJEID0gImMrKzExIjsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJ
CQlBTkdMRV9TVEFOREFMT05FX0JVSUxELAorCQkJCQlOREVCVUcsCisJCQkJKTsKKwkJCQlQUk9E
VUNUX05BTUUgPSBjb21taXRfaWQ7CisJCQkJV0FSTklOR19DRkxBR1MgPSAoCisJCQkJCSItV2Fs
bCIsCisJCQkJCSItV2NoYXItc3Vic2NyaXB0cyIsCisJCQkJCSItV2Vycm9yIiwKKwkJCQkJIi1X
ZXh0cmEiLAorCQkJCQkiLVdmb3JtYXQ9MiIsCisJCQkJCSItV2luaXQtc2VsZiIsCisJCQkJCSIt
V25vbi12aXJ0dWFsLWR0b3IiLAorCQkJCQkiLVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCisJCQkJ
CSItV25vLXVua25vd24tcHJhZ21hcyIsCisJCQkJCSItV25vLXVudXNlZC1mdW5jdGlvbiIsCisJ
CQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAorCQkJCQkiLVdwYWNrZWQiLAorCQkJCQkiLVdw
b2ludGVyLWFyaXRoIiwKKwkJCQkJIi1XdW5kZWYiLAorCQkJCQkiLVd3cml0ZS1zdHJpbmdzIiwK
KwkJCQkpOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQk5Q0QxMjA4M0Q2QzI4
NDAzQzExNkRENzQgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRB
UkQgPSAiYysrMTEiOworCQkJCUVYRUNVVEFCTEVfUFJFRklYID0gbGliOworCQkJCUdDQ19QUkVQ
Uk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCUFOR0xFX1NUQU5EQUxPTkVfQlVJTEQsCisJ
CQkJCU5ERUJVRywKKwkJCQkpOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCS4s
CisJCQkJCS4uL2luY2x1ZGUsCisJCQkJCWNvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcywKKwkJ
CQkJIiQoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL2FuZ2xlIiwKKwkJCQkpOworCQkJCVBST0RV
Q1RfTkFNRSA9IGFuZ2xlX2NvbW1vbjsKKwkJCQlXQVJOSU5HX0NGTEFHUyA9ICgKKwkJCQkJIi1X
YWxsIiwKKwkJCQkJIi1XY2hhci1zdWJzY3JpcHRzIiwKKwkJCQkJIi1XZXJyb3IiLAorCQkJCQki
LVdleHRyYSIsCisJCQkJCSItV2Zvcm1hdD0yIiwKKwkJCQkJIi1XaW5pdC1zZWxmIiwKKwkJCQkJ
Ii1Xbm9uLXZpcnR1YWwtZHRvciIsCisJCQkJCSItV25vLWZvcm1hdC1ub25saXRlcmFsIiwKKwkJ
CQkJIi1Xbm8tdW5rbm93bi1wcmFnbWFzIiwKKwkJCQkJIi1Xbm8tdW51c2VkLWZ1bmN0aW9uIiwK
KwkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCisJCQkJCSItV3BhY2tlZCIsCisJCQkJCSIt
V3BvaW50ZXItYXJpdGgiLAorCQkJCQkiLVd1bmRlZiIsCisJCQkJCSItV3dyaXRlLXN0cmluZ3Mi
LAorCQkJCSk7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCUIzMjQ3RTRBODM5
RDlBNkI1OTlDMzUwNiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFO
REFSRCA9ICJjKysxMSI7CisJCQkJRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CisJCQkJR0NDX1BS
RVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJQU5HTEVfU1RBTkRBTE9ORV9CVUlMRCwK
KwkJCQkJTkRFQlVHLAorCQkJCSk7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJ
LiwKKwkJCQkJLi4vaW5jbHVkZSwKKwkJCQkJIiQoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL2Fu
Z2xlIiwKKwkJCQkJLi4vc3JjLAorCQkJCQkuLi9zcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVy
aWNzLAorCQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0gYW5nbGVfaW1hZ2VfdXRpbDsKKwkJCQlX
QVJOSU5HX0NGTEFHUyA9ICgKKwkJCQkJIi1XYWxsIiwKKwkJCQkJIi1XY2hhci1zdWJzY3JpcHRz
IiwKKwkJCQkJIi1XZXJyb3IiLAorCQkJCQkiLVdleHRyYSIsCisJCQkJCSItV2Zvcm1hdD0yIiwK
KwkJCQkJIi1XaW5pdC1zZWxmIiwKKwkJCQkJIi1Xbm9uLXZpcnR1YWwtZHRvciIsCisJCQkJCSIt
V25vLWZvcm1hdC1ub25saXRlcmFsIiwKKwkJCQkJIi1Xbm8tdW5rbm93bi1wcmFnbWFzIiwKKwkJ
CQkJIi1Xbm8tdW51c2VkLWZ1bmN0aW9uIiwKKwkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIs
CisJCQkJCSItV3BhY2tlZCIsCisJCQkJCSItV3BvaW50ZXItYXJpdGgiLAorCQkJCQkiLVd1bmRl
ZiIsCisJCQkJCSItV3dyaXRlLXN0cmluZ3MiLAorCQkJCSk7CisJCQl9OworCQkJbmFtZSA9IFJl
bGVhc2U7CisJCX07CisJCUJGM0FBOUJEQkEyQkE0NTdBOEQ0MTQ2NSAvKiBSZWxlYXNlICovID0g
eworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0gewor
CQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJjKysxMSI7CisJCQkJRVhFQ1VUQUJM
RV9QUkVGSVggPSBsaWI7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJ
CQkJQU5HTEVfU1RBTkRBTE9ORV9CVUlMRCwKKwkJCQkJR1BVX0lORk9fVVNFX0RYR0ksCisJCQkJ
CU5ERUJVRywKKwkJCQkpOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCS4sCisJ
CQkJCS4uL2luY2x1ZGUsCisJCQkJCSIkKFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS9hbmdsZSIs
CisJCQkJCS4uL3NyYywKKwkJCQkJLi4vc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcywK
KwkJCQkpOworCQkJCVBST0RVQ1RfTkFNRSA9IGFuZ2xlX2dwdV9pbmZvX3V0aWw7CisJCQkJV0FS
TklOR19DRkxBR1MgPSAoCisJCQkJCSItV2FsbCIsCisJCQkJCSItV2NoYXItc3Vic2NyaXB0cyIs
CisJCQkJCSItV2Vycm9yIiwKKwkJCQkJIi1XZXh0cmEiLAorCQkJCQkiLVdmb3JtYXQ9MiIsCisJ
CQkJCSItV2luaXQtc2VsZiIsCisJCQkJCSItV25vbi12aXJ0dWFsLWR0b3IiLAorCQkJCQkiLVdu
by1mb3JtYXQtbm9ubGl0ZXJhbCIsCisJCQkJCSItV25vLXVua25vd24tcHJhZ21hcyIsCisJCQkJ
CSItV25vLXVudXNlZC1mdW5jdGlvbiIsCisJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAor
CQkJCQkiLVdwYWNrZWQiLAorCQkJCQkiLVdwb2ludGVyLWFyaXRoIiwKKwkJCQkJIi1XdW5kZWYi
LAorCQkJCQkiLVd3cml0ZS1zdHJpbmdzIiwKKwkJCQkpOworCQkJfTsKKwkJCW5hbWUgPSBSZWxl
YXNlOworCQl9OworCQlDRDkyNDYzMTYyNDAyNDI1RTI2QkI3QTUgLyogUmVsZWFzZSAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiYysrMTEiOworCQkJCURZTElCX0lOU1RB
TExfTkFNRV9CQVNFID0gIkBycGF0aCI7CisJCQkJRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CisJ
CQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJIkVHTEFQST0iLAorCQkJ
CQlBTkdMRV9TVEFOREFMT05FX0JVSUxELAorCQkJCQlMSUJBTkdMRV9JTVBMRU1FTlRBVElPTiwK
KwkJCQkJR0xfR0xFWFRfUFJPVE9UWVBFUywKKwkJCQkJIkFOR0xFX1BSRUxPQURFRF9EM0RDT01Q
SUxFUl9NT0RVTEVfTkFNRVM9e1xcIFxcXCJkM2Rjb21waWxlcl80Ny5kbGxcXFwiLFxcIFxcXCJk
M2Rjb21waWxlcl80Ni5kbGxcXFwiLFxcIFxcXCJkM2Rjb21waWxlcl80My5kbGxcXFwiXFwgfSIs
CisJCQkJCSJHTF9BUElDQUxMPV9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoXFxcImRlZmF1bHRc
XFwiKSkpIiwKKwkJCQkJQU5HTEVfRU5BQkxFX09QRU5HTCwKKwkJCQkJQU5HTEVfRU5BQkxFX05V
TEwsCisJCQkJCU5ERUJVRywKKwkJCQkpOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJ
CQkJCS4sCisJCQkJCS4uL2luY2x1ZGUsCisJCQkJCSIkKFNIQVJFRF9JTlRFUk1FRElBVEVfRElS
KS9hbmdsZSIsCisJCQkJCS4uL3NyYywKKwkJCQkJLi4vc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9u
dW1lcmljcywKKwkJCQkpOworCQkJCUxEX1JVTlBBVEhfU0VBUkNIX1BBVEhTID0gIkBleGVjdXRh
YmxlX3BhdGgvLiI7CisJCQkJUFJPRFVDVF9OQU1FID0gRUdMX3N0YXRpYzsKKwkJCQlXQVJOSU5H
X0NGTEFHUyA9ICgKKwkJCQkJIi1XYWxsIiwKKwkJCQkJIi1XY2hhci1zdWJzY3JpcHRzIiwKKwkJ
CQkJIi1XZXJyb3IiLAorCQkJCQkiLVdleHRyYSIsCisJCQkJCSItV2Zvcm1hdD0yIiwKKwkJCQkJ
Ii1XaW5pdC1zZWxmIiwKKwkJCQkJIi1Xbm9uLXZpcnR1YWwtZHRvciIsCisJCQkJCSItV25vLWZv
cm1hdC1ub25saXRlcmFsIiwKKwkJCQkJIi1Xbm8tdW5rbm93bi1wcmFnbWFzIiwKKwkJCQkJIi1X
bm8tdW51c2VkLWZ1bmN0aW9uIiwKKwkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCisJCQkJ
CSItV3BhY2tlZCIsCisJCQkJCSItV3BvaW50ZXItYXJpdGgiLAorCQkJCQkiLVd1bmRlZiIsCisJ
CQkJCSItV3dyaXRlLXN0cmluZ3MiLAorCQkJCSk7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7
CisJCX07CisJCUNGM0UzNzAxRDc4OTY3MTc0MzJGRjk1MiAvKiBSZWxlYXNlICovID0geworCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBS
T0RVQ1RfTkFNRSA9IEFsbDsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJRDAy
RjgxNUZCQjcwODM2N0RBNkM1NkVGIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNMQU5HX0NYWF9MQU5HVUFH
RV9TVEFOREFSRCA9ICJjKysxMSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCUVY
RUNVVEFCTEVfUFJFRklYID0gbGliOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOwor
CQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCUFOR0xFX1NUQU5EQUxP
TkVfQlVJTEQsCisJCQkJCV9ERUJVRywKKwkJCQkpOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMg
PSAoCisJCQkJCS4sCisJCQkJCS4uL2luY2x1ZGUsCisJCQkJCWNvbW1vbi90aGlyZF9wYXJ0eS9u
dW1lcmljcywKKwkJCQkJIiQoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL2FuZ2xlIiwKKwkJCQkp
OworCQkJCVBST0RVQ1RfTkFNRSA9IGFuZ2xlX2NvbW1vbjsKKwkJCQlXQVJOSU5HX0NGTEFHUyA9
ICgKKwkJCQkJIi1XYWxsIiwKKwkJCQkJIi1XY2hhci1zdWJzY3JpcHRzIiwKKwkJCQkJIi1XZXJy
b3IiLAorCQkJCQkiLVdleHRyYSIsCisJCQkJCSItV2Zvcm1hdD0yIiwKKwkJCQkJIi1XaW5pdC1z
ZWxmIiwKKwkJCQkJIi1Xbm9uLXZpcnR1YWwtZHRvciIsCisJCQkJCSItV25vLWZvcm1hdC1ub25s
aXRlcmFsIiwKKwkJCQkJIi1Xbm8tdW5rbm93bi1wcmFnbWFzIiwKKwkJCQkJIi1Xbm8tdW51c2Vk
LWZ1bmN0aW9uIiwKKwkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCisJCQkJCSItV3BhY2tl
ZCIsCisJCQkJCSItV3BvaW50ZXItYXJpdGgiLAorCQkJCQkiLVd1bmRlZiIsCisJCQkJCSItV3dy
aXRlLXN0cmluZ3MiLAorCQkJCSk7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQlF
MDA1MTYxRjI5NURBNjI5MEZDNjAxMEEgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdV
QUdFX1NUQU5EQVJEID0gImMrKzExIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJ
RFlMSUJfSU5TVEFMTF9OQU1FX0JBU0UgPSAiQHJwYXRoIjsKKwkJCQlFWEVDVVRBQkxFX1BSRUZJ
WCA9IGxpYjsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJP
Q0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQlBTkdMRV9TVEFOREFMT05FX0JVSUxELAorCQkJ
CQkiRUdMQVBJPV9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoXFxcImRlZmF1bHRcXFwiKSkpIiwK
KwkJCQkJX0RFQlVHLAorCQkJCSk7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJ
LiwKKwkJCQkJLi4vaW5jbHVkZSwKKwkJCQkJIiQoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL2Fu
Z2xlIiwKKwkJCQkpOworCQkJCUxEX1JVTlBBVEhfU0VBUkNIX1BBVEhTID0gIkBleGVjdXRhYmxl
X3BhdGgvLiI7CisJCQkJUFJPRFVDVF9OQU1FID0gRUdMOworCQkJCVdBUk5JTkdfQ0ZMQUdTID0g
KAorCQkJCQkiLVdhbGwiLAorCQkJCQkiLVdjaGFyLXN1YnNjcmlwdHMiLAorCQkJCQkiLVdlcnJv
ciIsCisJCQkJCSItV2V4dHJhIiwKKwkJCQkJIi1XZm9ybWF0PTIiLAorCQkJCQkiLVdpbml0LXNl
bGYiLAorCQkJCQkiLVdub24tdmlydHVhbC1kdG9yIiwKKwkJCQkJIi1Xbm8tZm9ybWF0LW5vbmxp
dGVyYWwiLAorCQkJCQkiLVduby11bmtub3duLXByYWdtYXMiLAorCQkJCQkiLVduby11bnVzZWQt
ZnVuY3Rpb24iLAorCQkJCQkiLVduby11bnVzZWQtcGFyYW1ldGVyIiwKKwkJCQkJIi1XcGFja2Vk
IiwKKwkJCQkJIi1XcG9pbnRlci1hcml0aCIsCisJCQkJCSItV3VuZGVmIiwKKwkJCQkJIi1Xd3Jp
dGUtc3RyaW5ncyIsCisJCQkJKTsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCUUw
OEM3Q0NERENCRDM5QkQ0Njk0OTVCNCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VB
R0VfU1RBTkRBUkQgPSAiYysrMTEiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlF
WEVDVVRBQkxFX1BSRUZJWCA9IGxpYjsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsK
KwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQlMSUJBTkdMRV9JTVBM
RU1FTlRBVElPTiwKKwkJCQkJQU5HTEVfU1RBTkRBTE9ORV9CVUlMRCwKKwkJCQkJQU5HTEVfRU5B
QkxFX0VTU0wsCisJCQkJCUFOR0xFX0VOQUJMRV9HTFNMLAorCQkJCQlBTkdMRV9FTkFCTEVfT1BF
TkdMLAorCQkJCQlBTkdMRV9FTkFCTEVfTlVMTCwKKwkJCQkJX0RFQlVHLAorCQkJCSk7CisJCQkJ
SEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJLiwKKwkJCQkJLi4vaW5jbHVkZSwKKwkJCQkJ
dGhpcmRfcGFydHkva2hyb25vcywKKwkJCQkJIiQoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL2Fu
Z2xlIiwKKwkJCQkJLi4vc3JjLAorCQkJCQkuLi9zcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVy
aWNzLAorCQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0gQU5HTEU7CisJCQkJV0FSTklOR19DRkxB
R1MgPSAoCisJCQkJCSItV2FsbCIsCisJCQkJCSItV2NoYXItc3Vic2NyaXB0cyIsCisJCQkJCSIt
V2Vycm9yIiwKKwkJCQkJIi1XZXh0cmEiLAorCQkJCQkiLVdmb3JtYXQ9MiIsCisJCQkJCSItV2lu
aXQtc2VsZiIsCisJCQkJCSItV25vbi12aXJ0dWFsLWR0b3IiLAorCQkJCQkiLVduby1mb3JtYXQt
bm9ubGl0ZXJhbCIsCisJCQkJCSItV25vLXVua25vd24tcHJhZ21hcyIsCisJCQkJCSItV25vLXVu
dXNlZC1mdW5jdGlvbiIsCisJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAorCQkJCQkiLVdw
YWNrZWQiLAorCQkJCQkiLVdwb2ludGVyLWFyaXRoIiwKKwkJCQkJIi1XdW5kZWYiLAorCQkJCQki
LVd3cml0ZS1zdHJpbmdzIiwKKwkJCQkpOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsK
KwkJRTNDNzdENUI1RTAxMkE4NUZEREM5QTE1IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hY
X0xBTkdVQUdFX1NUQU5EQVJEID0gImMrKzExIjsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklO
SVRJT05TID0gKAorCQkJCQlBTkdMRV9TVEFOREFMT05FX0JVSUxELAorCQkJCQlOREVCVUcsCisJ
CQkJKTsKKwkJCQlQUk9EVUNUX05BTUUgPSBjb3B5X3NjcmlwdHM7CisJCQkJV0FSTklOR19DRkxB
R1MgPSAoCisJCQkJCSItV2FsbCIsCisJCQkJCSItV2NoYXItc3Vic2NyaXB0cyIsCisJCQkJCSIt
V2Vycm9yIiwKKwkJCQkJIi1XZXh0cmEiLAorCQkJCQkiLVdmb3JtYXQ9MiIsCisJCQkJCSItV2lu
aXQtc2VsZiIsCisJCQkJCSItV25vbi12aXJ0dWFsLWR0b3IiLAorCQkJCQkiLVduby1mb3JtYXQt
bm9ubGl0ZXJhbCIsCisJCQkJCSItV25vLXVua25vd24tcHJhZ21hcyIsCisJCQkJCSItV25vLXVu
dXNlZC1mdW5jdGlvbiIsCisJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAorCQkJCQkiLVdw
YWNrZWQiLAorCQkJCQkiLVdwb2ludGVyLWFyaXRoIiwKKwkJCQkJIi1XdW5kZWYiLAorCQkJCQki
LVd3cml0ZS1zdHJpbmdzIiwKKwkJCQkpOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9
OworCQlFOEU4REZEODU4NDI1MkUzRjVGMDkzQ0UgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19D
WFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiYysrMTEiOworCQkJCUVYRUNVVEFCTEVfUFJFRklYID0g
bGliOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCUFOR0xFX1NU
QU5EQUxPTkVfQlVJTEQsCisJCQkJCUFOR0xFX0VOQUJMRV9FU1NMLAorCQkJCQlBTkdMRV9FTkFC
TEVfR0xTTCwKKwkJCQkJTkRFQlVHLAorCQkJCSk7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9
ICgKKwkJCQkJLiwKKwkJCQkJLi4vaW5jbHVkZSwKKwkJCQkJIiQoU0hBUkVEX0lOVEVSTUVESUFU
RV9ESVIpL2FuZ2xlIiwKKwkJCQkJLi4vc3JjLAorCQkJCQkuLi9zcmMvY29tbW9uL3RoaXJkX3Bh
cnR5L251bWVyaWNzLAorCQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0gdHJhbnNsYXRvcjsKKwkJ
CQlXQVJOSU5HX0NGTEFHUyA9ICgKKwkJCQkJIi1XYWxsIiwKKwkJCQkJIi1XY2hhci1zdWJzY3Jp
cHRzIiwKKwkJCQkJIi1XZXJyb3IiLAorCQkJCQkiLVdleHRyYSIsCisJCQkJCSItV2Zvcm1hdD0y
IiwKKwkJCQkJIi1XaW5pdC1zZWxmIiwKKwkJCQkJIi1Xbm9uLXZpcnR1YWwtZHRvciIsCisJCQkJ
CSItV25vLWZvcm1hdC1ub25saXRlcmFsIiwKKwkJCQkJIi1Xbm8tdW5rbm93bi1wcmFnbWFzIiwK
KwkJCQkJIi1Xbm8tdW51c2VkLWZ1bmN0aW9uIiwKKwkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRl
ciIsCisJCQkJCSItV3BhY2tlZCIsCisJCQkJCSItV3BvaW50ZXItYXJpdGgiLAorCQkJCQkiLVd1
bmRlZiIsCisJCQkJCSItV3dyaXRlLXN0cmluZ3MiLAorCQkJCSk7CisJCQl9OworCQkJbmFtZSA9
IFJlbGVhc2U7CisJCX07CisJCUYxQkM4OEQ0MkE2MzUxRjQ4N0QzQjJGNCAvKiBEZWJ1ZyAqLyA9
IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiYysrMTEiOworCQkJCUNPUFlfUEhB
U0VfU1RSSVAgPSBOTzsKKwkJCQlEWUxJQl9JTlNUQUxMX05BTUVfQkFTRSA9ICJAcnBhdGgiOwor
CQkJCUVYRUNVVEFCTEVfUFJFRklYID0gbGliOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwg
PSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJFR0xBUEk9
IiwKKwkJCQkJQU5HTEVfU1RBTkRBTE9ORV9CVUlMRCwKKwkJCQkJTElCQU5HTEVfSU1QTEVNRU5U
QVRJT04sCisJCQkJCUdMX0dMRVhUX1BST1RPVFlQRVMsCisJCQkJCSJBTkdMRV9QUkVMT0FERURf
RDNEQ09NUElMRVJfTU9EVUxFX05BTUVTPXtcXCBcXFwiZDNkY29tcGlsZXJfNDcuZGxsXFxcIixc
XCBcXFwiZDNkY29tcGlsZXJfNDYuZGxsXFxcIixcXCBcXFwiZDNkY29tcGlsZXJfNDMuZGxsXFxc
IlxcIH0iLAorCQkJCQkiR0xfQVBJQ0FMTD1fX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KFxcXCJk
ZWZhdWx0XFxcIikpKSIsCisJCQkJCUFOR0xFX0VOQUJMRV9PUEVOR0wsCisJCQkJCUFOR0xFX0VO
QUJMRV9OVUxMLAorCQkJCQlfREVCVUcsCisJCQkJKTsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhT
ID0gKAorCQkJCQkuLAorCQkJCQkuLi9pbmNsdWRlLAorCQkJCQkiJChTSEFSRURfSU5URVJNRURJ
QVRFX0RJUikvYW5nbGUiLAorCQkJCQkuLi9zcmMsCisJCQkJCS4uL3NyYy9jb21tb24vdGhpcmRf
cGFydHkvbnVtZXJpY3MsCisJCQkJKTsKKwkJCQlMRF9SVU5QQVRIX1NFQVJDSF9QQVRIUyA9ICJA
ZXhlY3V0YWJsZV9wYXRoLy4iOworCQkJCVBST0RVQ1RfTkFNRSA9IEVHTF9zdGF0aWM7CisJCQkJ
V0FSTklOR19DRkxBR1MgPSAoCisJCQkJCSItV2FsbCIsCisJCQkJCSItV2NoYXItc3Vic2NyaXB0
cyIsCisJCQkJCSItV2Vycm9yIiwKKwkJCQkJIi1XZXh0cmEiLAorCQkJCQkiLVdmb3JtYXQ9MiIs
CisJCQkJCSItV2luaXQtc2VsZiIsCisJCQkJCSItV25vbi12aXJ0dWFsLWR0b3IiLAorCQkJCQki
LVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCisJCQkJCSItV25vLXVua25vd24tcHJhZ21hcyIsCisJ
CQkJCSItV25vLXVudXNlZC1mdW5jdGlvbiIsCisJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIi
LAorCQkJCQkiLVdwYWNrZWQiLAorCQkJCQkiLVdwb2ludGVyLWFyaXRoIiwKKwkJCQkJIi1XdW5k
ZWYiLAorCQkJCQkiLVd3cml0ZS1zdHJpbmdzIiwKKwkJCQkpOworCQkJfTsKKwkJCW5hbWUgPSBE
ZWJ1ZzsKKwkJfTsKKwkJRjZDRTQ2MjcyRTNEQkQxQTUxRjc5MTRGIC8qIERlYnVnICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJjKysxMSI7CisJCQkJQ09QWV9QSEFTRV9T
VFJJUCA9IE5POworCQkJCUVYRUNVVEFCTEVfUFJFRklYID0gbGliOworCQkJCUdDQ19PUFRJTUla
QVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJ
CQkJCUFOR0xFX1NUQU5EQUxPTkVfQlVJTEQsCisJCQkJCUFOR0xFX0VOQUJMRV9FU1NMLAorCQkJ
CQlBTkdMRV9FTkFCTEVfR0xTTCwKKwkJCQkJX0RFQlVHLAorCQkJCSk7CisJCQkJSEVBREVSX1NF
QVJDSF9QQVRIUyA9ICgKKwkJCQkJLiwKKwkJCQkJLi4vaW5jbHVkZSwKKwkJCQkJIiQoU0hBUkVE
X0lOVEVSTUVESUFURV9ESVIpL2FuZ2xlIiwKKwkJCQkJLi4vc3JjLAorCQkJCQkuLi9zcmMvY29t
bW9uL3RoaXJkX3BhcnR5L251bWVyaWNzLAorCQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0gdHJh
bnNsYXRvcjsKKwkJCQlXQVJOSU5HX0NGTEFHUyA9ICgKKwkJCQkJIi1XYWxsIiwKKwkJCQkJIi1X
Y2hhci1zdWJzY3JpcHRzIiwKKwkJCQkJIi1XZXJyb3IiLAorCQkJCQkiLVdleHRyYSIsCisJCQkJ
CSItV2Zvcm1hdD0yIiwKKwkJCQkJIi1XaW5pdC1zZWxmIiwKKwkJCQkJIi1Xbm9uLXZpcnR1YWwt
ZHRvciIsCisJCQkJCSItV25vLWZvcm1hdC1ub25saXRlcmFsIiwKKwkJCQkJIi1Xbm8tdW5rbm93
bi1wcmFnbWFzIiwKKwkJCQkJIi1Xbm8tdW51c2VkLWZ1bmN0aW9uIiwKKwkJCQkJIi1Xbm8tdW51
c2VkLXBhcmFtZXRlciIsCisJCQkJCSItV3BhY2tlZCIsCisJCQkJCSItV3BvaW50ZXItYXJpdGgi
LAorCQkJCQkiLVd1bmRlZiIsCisJCQkJCSItV3dyaXRlLXN0cmluZ3MiLAorCQkJCSk7CisJCQl9
OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQlGOTM2RkUzREJEMjNGM0EyMjg4NENGRjUgLyog
UmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiYysrMTEiOwor
CQkJCURZTElCX0lOU1RBTExfTkFNRV9CQVNFID0gIkBycGF0aCI7CisJCQkJRVhFQ1VUQUJMRV9Q
UkVGSVggPSBsaWI7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJ
TElCR0xFU1YyX0lNUExFTUVOVEFUSU9OLAorCQkJCQlBTkdMRV9TVEFOREFMT05FX0JVSUxELAor
CQkJCQlMSUJBTkdMRV9JTVBMRU1FTlRBVElPTiwKKwkJCQkJR0xfR0xFWFRfUFJPVE9UWVBFUywK
KwkJCQkJIkFOR0xFX1BSRUxPQURFRF9EM0RDT01QSUxFUl9NT0RVTEVfTkFNRVM9e1xcIFxcXCJk
M2Rjb21waWxlcl80Ny5kbGxcXFwiLFxcIFxcXCJkM2Rjb21waWxlcl80Ni5kbGxcXFwiLFxcIFxc
XCJkM2Rjb21waWxlcl80My5kbGxcXFwiXFwgfSIsCisJCQkJCSJHTF9BUElDQUxMPV9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkoXFxcImRlZmF1bHRcXFwiKSkpIiwKKwkJCQkJQU5HTEVfRU5BQkxF
X09QRU5HTCwKKwkJCQkJQU5HTEVfRU5BQkxFX05VTEwsCisJCQkJCU5ERUJVRywKKwkJCQkpOwor
CQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKFNIQVJFRF9JTlRFUk1FRElBVEVf
RElSKS9hbmdsZSIsCisJCQkJCS4uL3NyYywKKwkJCQkJLi4vaW5jbHVkZSwKKwkJCQkJLi4vc3Jj
L2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcywKKwkJCQkpOworCQkJCUxEX1JVTlBBVEhfU0VB
UkNIX1BBVEhTID0gIkBleGVjdXRhYmxlX3BhdGgvLiI7CisJCQkJTElCUkFSWV9TRUFSQ0hfUEFU
SFMgPSAiJChTREtST09UKS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzIjsKKwkJCQlQUk9EVUNU
X05BTUUgPSBHTEVTdjI7CisJCQkJV0FSTklOR19DRkxBR1MgPSAoCisJCQkJCSItV2FsbCIsCisJ
CQkJCSItV2NoYXItc3Vic2NyaXB0cyIsCisJCQkJCSItV2Vycm9yIiwKKwkJCQkJIi1XZXh0cmEi
LAorCQkJCQkiLVdmb3JtYXQ9MiIsCisJCQkJCSItV2luaXQtc2VsZiIsCisJCQkJCSItV25vbi12
aXJ0dWFsLWR0b3IiLAorCQkJCQkiLVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCisJCQkJCSItV25v
LXVua25vd24tcHJhZ21hcyIsCisJCQkJCSItV25vLXVudXNlZC1mdW5jdGlvbiIsCisJCQkJCSIt
V25vLXVudXNlZC1wYXJhbWV0ZXIiLAorCQkJCQkiLVdwYWNrZWQiLAorCQkJCQkiLVdwb2ludGVy
LWFyaXRoIiwKKwkJCQkJIi1XdW5kZWYiLAorCQkJCQkiLVd3cml0ZS1zdHJpbmdzIiwKKwkJCQkp
OworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQlGRkYxQjE2RDU3RTA4RjU3MEIw
Qjc5QUIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImMr
KzExIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJRVhFQ1VUQUJMRV9QUkVGSVgg
PSBsaWI7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NF
U1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJQU5HTEVfU1RBTkRBTE9ORV9CVUlMRCwKKwkJCQkJ
X0RFQlVHLAorCQkJCSk7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJLiwKKwkJ
CQkJLi4vaW5jbHVkZSwKKwkJCQkJIiQoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL2FuZ2xlIiwK
KwkJCQkJLi4vc3JjLAorCQkJCQkuLi9zcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzLAor
CQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0gYW5nbGVfaW1hZ2VfdXRpbDsKKwkJCQlXQVJOSU5H
X0NGTEFHUyA9ICgKKwkJCQkJIi1XYWxsIiwKKwkJCQkJIi1XY2hhci1zdWJzY3JpcHRzIiwKKwkJ
CQkJIi1XZXJyb3IiLAorCQkJCQkiLVdleHRyYSIsCisJCQkJCSItV2Zvcm1hdD0yIiwKKwkJCQkJ
Ii1XaW5pdC1zZWxmIiwKKwkJCQkJIi1Xbm9uLXZpcnR1YWwtZHRvciIsCisJCQkJCSItV25vLWZv
cm1hdC1ub25saXRlcmFsIiwKKwkJCQkJIi1Xbm8tdW5rbm93bi1wcmFnbWFzIiwKKwkJCQkJIi1X
bm8tdW51c2VkLWZ1bmN0aW9uIiwKKwkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCisJCQkJ
CSItV3BhY2tlZCIsCisJCQkJCSItV3BvaW50ZXItYXJpdGgiLAorCQkJCQkiLVd1bmRlZiIsCisJ
CQkJCSItV3dyaXRlLXN0cmluZ3MiLAorCQkJCSk7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOwor
CQl9OworLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKworLyogQmVnaW4g
WENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTE3MjIwREUxRDk5QjRDODYyNkUwQzM2
RCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibGliR0xF
U3YyIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZp
Z3VyYXRpb25zID0gKAorCQkJCTU0QjE0MEMxMzUwN0Y5RDg0OTRGMTRGMCAvKiBEZWJ1ZyAqLywK
KwkJCQlGOTM2RkUzREJEMjNGM0EyMjg4NENGRjUgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDE7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bk5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMjVEMUNCQTk3QjI3RDU3RTc2NERGQ0FBIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsaWJHTEVTdjJfc3RhdGlj
IiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3Vy
YXRpb25zID0gKAorCQkJCTg2MUZBREJEQUM3MTE3Q0ZBMTc5MjVCRCAvKiBEZWJ1ZyAqLywKKwkJ
CQkzNjc1RERGMTBCQ0ZCQkNBMzdEOENDRDAgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZh
dWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDE7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5h
bWUgPSBEZWJ1ZzsKKwkJfTsKKwkJNTAwMEJDQUY4Nzc1NkI1MzIxMEM3RDE3IC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJjb21taXRfaWQiICovID0g
eworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCisJCQkJODQ2NDIxOEM3RkNFNzgyRkFDNTM4RjIyIC8qIERlYnVnICovLAorCQkJCTlBNkRC
RUJGOTg2MDA5MkFFQTY3NzVCMiAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IERl
YnVnOworCQl9OworCQk1Qjg3NzM3OTEyRDA1OTcyMDhFNkNGRkIgLyogQnVpbGQgY29uZmlndXJh
dGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJhbmdsZSIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZp
Z3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkzREI1QkZDNTgw
MkU5RDM2NTBEMzVGNEQgLyogRGVidWcgKi8sCisJCQkJNjIxM0FCRUI3OEU0NTBENjkxMzY2QjhG
IC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUg
PSAxOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gRGVidWc7CisJCX07CisJCTYwODQz
RURGRUFDMERFNzZFNDAxMDkwQSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5h
dGl2ZVRhcmdldCAiYW5nbGVfaW1hZ2VfdXRpbCIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3Vy
YXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQlGRkYxQjE2RDU3RTA4
RjU3MEIwQjc5QUIgLyogRGVidWcgKi8sCisJCQkJQjMyNDdFNEE4MzlEOUE2QjU5OUMzNTA2IC8q
IFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAx
OworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gRGVidWc7CisJCX07CisJCTcyMDE3MDU5
MDEzQ0RFNEVFMEExM0I0RiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3Jl
Z2F0ZVRhcmdldCAibGliQU5HTEVfcmVuZGVyZXJfY29uZmlnIiAqLyA9IHsKKwkJCWlzYSA9IFhD
Q29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTZCOTA1
MjAwMTkxRTdGQzcyQkNDOUFCOCAvKiBEZWJ1ZyAqLywKKwkJCQkyQjY1RTA5QUY1NzEzN0YzNTM4
QjY1MkQgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlz
aWJsZSA9IDE7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJ
NzNEMTVCMUI5MDk2M0U2MzEzQTMwQjMxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYTmF0aXZlVGFyZ2V0ICJsaWJFR0wiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9u
TGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJRTAwNTE2MUYyOTVEQTYyOTBG
QzYwMTBBIC8qIERlYnVnICovLAorCQkJCTYxMDU0MUEzQzRCMEQ0RDVDQTdGRENEQyAvKiBSZWxl
YXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMTsKKwkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IERlYnVnOworCQl9OworCQk3QTI1QzA2MDVCMzgy
MjRGNjhCNjhGMEEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgImxpYkVHTF9zdGF0aWMiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsK
KwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJRjFCQzg4RDQyQTYzNTFGNDg3RDNCMkY0
IC8qIERlYnVnICovLAorCQkJCUNEOTI0NjMxNjI0MDI0MjVFMjZCQjdBNSAvKiBSZWxlYXNlICov
LAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMTsKKwkJCWRlZmF1
bHRDb25maWd1cmF0aW9uTmFtZSA9IERlYnVnOworCQl9OworCQk5NjJDQzNEM0RCQTc3NzVDNjQ3
QkFFOTIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImxp
YkFOR0xFIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENv
bmZpZ3VyYXRpb25zID0gKAorCQkJCUUwOEM3Q0NERENCRDM5QkQ0Njk0OTVCNCAvKiBEZWJ1ZyAq
LywKKwkJCQkwOENCMkFFMDJCRUFGREM4MTU5NTk2QkQgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJ
CQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDE7CisJCQlkZWZhdWx0Q29uZmlndXJh
dGlvbk5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJQTFEODFGNDFDNTMwRjY3RDY3OUY0MzYyIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJhbmdsZV9ncHVfaW5m
b191dGlsIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENv
bmZpZ3VyYXRpb25zID0gKAorCQkJCTJDRjM1M0UyRkQwMkRGMTM5NTFCQ0EwNyAvKiBEZWJ1ZyAq
LywKKwkJCQlCRjNBQTlCREJBMkJBNDU3QThENDE0NjUgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJ
CQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDE7CisJCQlkZWZhdWx0Q29uZmlndXJh
dGlvbk5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJRDFEODM4NTcxNDAzMDVEOEYxM0UyRDg5IC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJBbGwiICovID0g
eworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCisJCQkJNDVDN0FCNDBFOTJCMkQ2RTlFREE4RjhFIC8qIERlYnVnICovLAorCQkJCUNGM0Uz
NzAxRDc4OTY3MTc0MzJGRjk1MiAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IERl
YnVnOworCQl9OworCQlEQjNDRTY4MjY1NUY0Q0RCOTA3NjJDOEMgLyogQnVpbGQgY29uZmlndXJh
dGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImFuZ2xlX2NvbW1vbiIgKi8gPSB7CisJCQlp
c2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJ
CQlEMDJGODE1RkJCNzA4MzY3REE2QzU2RUYgLyogRGVidWcgKi8sCisJCQkJOUNEMTIwODNENkMy
ODQwM0MxMTZERDc0IC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25Jc1Zpc2libGUgPSAxOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gRGVidWc7CisJ
CX07CisJCUVEMTIyNUM5OTVEOTgyN0MzRjA1QjM2OSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAicHJlcHJvY2Vzc29yIiAqLyA9IHsKKwkJCWlzYSA9IFhD
Q29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTFBOTNG
OTA0MTI0NzMyQ0NERDM1MDBCOCAvKiBEZWJ1ZyAqLywKKwkJCQkyQjQxNDlERjVFMTMwQTgwQjQ4
NjU2MzYgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlz
aWJsZSA9IDE7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJ
RUUxMjcxM0YwNDkyRjQyMTEwREIwQTU0IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYQWdncmVnYXRlVGFyZ2V0ICJjb3B5X3NjcmlwdHMiICovID0geworCQkJaXNhID0gWENDb25m
aWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMjJEOTRCODQ1
ODQxNkUzMjkzOTI2MzE1IC8qIERlYnVnICovLAorCQkJCUUzQzc3RDVCNUUwMTJBODVGRERDOUEx
NSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxl
ID0gMTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IERlYnVnOworCQl9OworCQlGOUNF
NjlFNDU1NUQzQkY1M0ZDQ0U1QzQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhO
YXRpdmVUYXJnZXQgInRyYW5zbGF0b3IiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9u
TGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJRjZDRTQ2MjcyRTNEQkQxQTUx
Rjc5MTRGIC8qIERlYnVnICovLAorCQkJCUU4RThERkQ4NTg0MjUyRTNGNUYwOTNDRSAvKiBSZWxl
YXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMTsKKwkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IERlYnVnOworCQl9OworCQlGRUIyRTMyRjFCMERG
MjYxRDQ5RjBEODQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVU
YXJnZXQgImxpYkFOR0xFX2QzZDExX2NvbmZpZyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3Vy
YXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk3NkYzMkNGMDA0RjU0
QTkxQjkwRkI2QUMgLyogRGVidWcgKi8sCisJCQkJNEU0QTkyMkI1Q0FEMzM5MjUzMjI0MTk4IC8q
IFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAx
OworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gRGVidWc7CisJCX07CisvKiBFbmQgWEND
b25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJfTsKKwlyb290T2JqZWN0ID0gOTY4NjAwOEFC
MEJBMjhGQzIzOTVEOUYwIC8qIFByb2plY3Qgb2JqZWN0ICovOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9CaXRTZXRJdGVyYXRvci5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9CaXRTZXRJdGVyYXRvci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzMjQ4Y2U0NGM5ZjkwNGNjYzJkM2FhNzk0ZTdiYWM5MzI2NTEx
NTYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vQml0U2V0SXRlcmF0b3IuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDE1NiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gQml0U2V0SXRlcmF0b3I6Ci0vLyAg
IEEgaGVscGVyIGNsYXNzIHRvIHF1aWNrbHkgYml0c2NhbiBiaXRzZXRzIGZvciBzZXQgYml0cy4K
LS8vCi0KLSNpZm5kZWYgQ09NTU9OX0JJVFNFVElURVJBVE9SX0hfCi0jZGVmaW5lIENPTU1PTl9C
SVRTRVRJVEVSQVRPUl9IXwotCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0KLSNpbmNsdWRlIDxiaXRz
ZXQ+Ci0KLSNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgotI2luY2x1ZGUgImNvbW1vbi9k
ZWJ1Zy5oIgotI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgotI2luY2x1ZGUgImNvbW1vbi9w
bGF0Zm9ybS5oIgotCi1uYW1lc3BhY2UgYW5nbGUKLXsKLXRlbXBsYXRlIDxzaXplX3QgTj4KLWNs
YXNzIEJpdFNldEl0ZXJhdG9yIGZpbmFsCi17Ci0gIHB1YmxpYzoKLSAgICBCaXRTZXRJdGVyYXRv
cihjb25zdCBzdGQ6OmJpdHNldDxOPiAmYml0c2V0KTsKLSAgICBCaXRTZXRJdGVyYXRvcihjb25z
dCBCaXRTZXRJdGVyYXRvciAmb3RoZXIpOwotICAgIEJpdFNldEl0ZXJhdG9yICZvcGVyYXRvcj0o
Y29uc3QgQml0U2V0SXRlcmF0b3IgJm90aGVyKTsKLQotICAgIGNsYXNzIEl0ZXJhdG9yIGZpbmFs
Ci0gICAgewotICAgICAgcHVibGljOgotICAgICAgICBJdGVyYXRvcihjb25zdCBzdGQ6OmJpdHNl
dDxOPiAmYml0cyk7Ci0gICAgICAgIEl0ZXJhdG9yICZvcGVyYXRvcisrKCk7Ci0KLSAgICAgICAg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEl0ZXJhdG9yICZvdGhlcikgY29uc3Q7Ci0gICAgICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBJdGVyYXRvciAmb3RoZXIpIGNvbnN0OwotICAgICAgICB1bnNp
Z25lZCBsb25nIG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1DdXJyZW50Qml0OyB9Ci0KLSAg
ICAgIHByaXZhdGU6Ci0gICAgICAgIHVuc2lnbmVkIGxvbmcgZ2V0TmV4dEJpdCgpOwotCi0gICAg
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgQml0c1BlcldvcmQgPSBzaXplb2YodW5zaWduZWQgbG9u
ZykgKiA4OwotICAgICAgICBzdGQ6OmJpdHNldDxOPiBtQml0czsKLSAgICAgICAgdW5zaWduZWQg
bG9uZyBtQ3VycmVudEJpdDsKLSAgICAgICAgdW5zaWduZWQgbG9uZyBtT2Zmc2V0OwotICAgIH07
Ci0KLSAgICBJdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIEl0ZXJhdG9yKG1CaXRzKTsg
fQotICAgIEl0ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIEl0ZXJhdG9yKHN0ZDo6Yml0c2V0
PE4+KDApKTsgfQotCi0gIHByaXZhdGU6Ci0gICAgY29uc3Qgc3RkOjpiaXRzZXQ8Tj4gbUJpdHM7
Ci19OwotCi10ZW1wbGF0ZSA8c2l6ZV90IE4+Ci1CaXRTZXRJdGVyYXRvcjxOPjo6Qml0U2V0SXRl
cmF0b3IoY29uc3Qgc3RkOjpiaXRzZXQ8Tj4gJmJpdHNldCkKLSAgICA6IG1CaXRzKGJpdHNldCkK
LXsKLX0KLQotdGVtcGxhdGUgPHNpemVfdCBOPgotQml0U2V0SXRlcmF0b3I8Tj46OkJpdFNldEl0
ZXJhdG9yKGNvbnN0IEJpdFNldEl0ZXJhdG9yICZvdGhlcikKLSAgICA6IG1CaXRzKG90aGVyLm1C
aXRzKQotewotfQotCi10ZW1wbGF0ZSA8c2l6ZV90IE4+Ci1CaXRTZXRJdGVyYXRvcjxOPiAmQml0
U2V0SXRlcmF0b3I8Tj46Om9wZXJhdG9yPShjb25zdCBCaXRTZXRJdGVyYXRvciAmb3RoZXIpCi17
Ci0gICAgbUJpdHMgPSBvdGhlci5tQml0czsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLXRlbXBs
YXRlIDxzaXplX3QgTj4KLUJpdFNldEl0ZXJhdG9yPE4+OjpJdGVyYXRvcjo6SXRlcmF0b3IoY29u
c3Qgc3RkOjpiaXRzZXQ8Tj4gJmJpdHMpCi0gICAgOiBtQml0cyhiaXRzKSwgbUN1cnJlbnRCaXQo
MCksIG1PZmZzZXQoMCkKLXsKLSAgICBpZiAoYml0cy5hbnkoKSkKLSAgICB7Ci0gICAgICAgIG1D
dXJyZW50Qml0ID0gZ2V0TmV4dEJpdCgpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAg
ICBtT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4ocng6OnJvdW5kVXAoTiwgQml0
c1BlcldvcmQpKTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlIDxzaXplX3QgTj4KLXR5cGVuYW1lIEJp
dFNldEl0ZXJhdG9yPE4+OjpJdGVyYXRvciAmQml0U2V0SXRlcmF0b3I8Tj46Okl0ZXJhdG9yOjpv
cGVyYXRvcisrKCkKLXsKLSAgICBBU1NFUlQobUJpdHMuYW55KCkpOwotICAgIG1CaXRzLnNldCht
Q3VycmVudEJpdCAtIG1PZmZzZXQsIDApOwotICAgIG1DdXJyZW50Qml0ID0gZ2V0TmV4dEJpdCgp
OwotICAgIHJldHVybiAqdGhpczsKLX0KLQotaW5saW5lIHVuc2lnbmVkIGxvbmcgU2NhbkZvcndh
cmQodW5zaWduZWQgbG9uZyBiaXRzKQotewotICAgIEFTU0VSVChiaXRzICE9IDApOwotI2lmIGRl
ZmluZWQoQU5HTEVfUExBVEZPUk1fV0lORE9XUykKLSAgICB1bnNpZ25lZCBsb25nIGZpcnN0Qml0
SW5kZXggPSAwdWw7Ci0gICAgdW5zaWduZWQgY2hhciByZXQgPSBfQml0U2NhbkZvcndhcmQoJmZp
cnN0Qml0SW5kZXgsIGJpdHMpOwotICAgIEFTU0VSVChyZXQgIT0gMCk7Ci0gICAgVU5VU0VEX0FT
U0VSVElPTl9WQVJJQUJMRShyZXQpOwotICAgIHJldHVybiBmaXJzdEJpdEluZGV4OwotI2VsaWYg
ZGVmaW5lZChBTkdMRV9QTEFURk9STV9QT1NJWCkKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZz4oX19idWlsdGluX2N0emwoYml0cykpOwotI2Vsc2UKLSNlcnJvciBQbGVhc2Ug
aW1wbGVtZW50IGJpdC1zY2FuLWZvcndhcmQgZm9yIHlvdXIgcGxhdGZvcm0hCi0jZW5kaWYKLX0K
LQotdGVtcGxhdGUgPHNpemVfdCBOPgotYm9vbCBCaXRTZXRJdGVyYXRvcjxOPjo6SXRlcmF0b3I6
Om9wZXJhdG9yPT0oY29uc3QgSXRlcmF0b3IgJm90aGVyKSBjb25zdAotewotICAgIHJldHVybiBt
T2Zmc2V0ID09IG90aGVyLm1PZmZzZXQgJiYgbUJpdHMgPT0gb3RoZXIubUJpdHM7Ci19Ci0KLXRl
bXBsYXRlIDxzaXplX3QgTj4KLWJvb2wgQml0U2V0SXRlcmF0b3I8Tj46Okl0ZXJhdG9yOjpvcGVy
YXRvciE9KGNvbnN0IEl0ZXJhdG9yICZvdGhlcikgY29uc3QKLXsKLSAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7Ci19Ci0KLXRlbXBsYXRlIDxzaXplX3QgTj4KLXVuc2lnbmVkIGxvbmcgQml0
U2V0SXRlcmF0b3I8Tj46Okl0ZXJhdG9yOjpnZXROZXh0Qml0KCkKLXsKLSAgICBzdGF0aWMgc3Rk
OjpiaXRzZXQ8Tj4gd29yZE1hc2soc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBsb25nPjo6
bWF4KCkpOwotCi0gICAgd2hpbGUgKG1PZmZzZXQgPCBOKQotICAgIHsKLSAgICAgICAgdW5zaWdu
ZWQgbG9uZyB3b3JkQml0cyA9IChtQml0cyAmIHdvcmRNYXNrKS50b191bG9uZygpOwotICAgICAg
ICBpZiAod29yZEJpdHMgIT0gMHVsKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU2Nh
bkZvcndhcmQod29yZEJpdHMpICsgbU9mZnNldDsKLSAgICAgICAgfQotCi0gICAgICAgIG1CaXRz
ID4+PSBCaXRzUGVyV29yZDsKLSAgICAgICAgbU9mZnNldCArPSBCaXRzUGVyV29yZDsKLSAgICB9
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLS8vIEhlbHBlciB0byBhdm9pZCBuZWVkaW5nIHRvIHNwZWNp
ZnkgdGhlIHRlbXBsYXRlIHBhcmFtZXRlciBzaXplCi10ZW1wbGF0ZSA8c2l6ZV90IE4+Ci1CaXRT
ZXRJdGVyYXRvcjxOPiBJdGVyYXRlQml0U2V0KGNvbnN0IHN0ZDo6Yml0c2V0PE4+ICZiaXRzZXQp
Ci17Ci0gICAgcmV0dXJuIEJpdFNldEl0ZXJhdG9yPE4+KGJpdHNldCk7Ci19Ci0KLX0gIC8vIGFu
Z2xlCi0KLSNlbmRpZiAgLy8gQ09NTU9OX0JJVFNFVElURVJBVE9SX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL0JpdFNldEl0ZXJhdG9yX3VuaXR0ZXN0
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vQml0U2V0SXRlcmF0b3Jf
dW5pdHRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTY1ZjJjNTY3ZTVk
ZjYxOWQyMjVlNTI5MDMxYTk2ODY3ZGY3YmNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vQml0
U2V0SXRlcmF0b3JfdW5pdHRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAot
Ly8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgotLy8KLS8vIEJpdFNldEl0ZXJhdG9yVGVzdDoKLS8vICAgVGVzdCB0aGUgSXRlcmFibGVC
aXRTZXQgY2xhc3MuCi0vLwotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2luY2x1ZGUg
ImNvbW1vbi9CaXRTZXRJdGVyYXRvci5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5h
bWVzcGFjZQotewotY2xhc3MgQml0U2V0SXRlcmF0b3JUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIHN0ZDo6Yml0c2V0PDQwPiBtU3RhdGVCaXRzOwotfTsK
LQotLy8gU2ltcGxlIGl0ZXJhdG9yIHRlc3QuCi1URVNUX0YoQml0U2V0SXRlcmF0b3JUZXN0LCBJ
dGVyYXRvcikKLXsKLSAgICBzdGQ6OnNldDx1bnNpZ25lZCBsb25nPiBvcmlnaW5hbFZhbHVlczsK
LSAgICBvcmlnaW5hbFZhbHVlcy5pbnNlcnQoMik7Ci0gICAgb3JpZ2luYWxWYWx1ZXMuaW5zZXJ0
KDYpOwotICAgIG9yaWdpbmFsVmFsdWVzLmluc2VydCg4KTsKLSAgICBvcmlnaW5hbFZhbHVlcy5p
bnNlcnQoMzUpOwotCi0gICAgZm9yICh1bnNpZ25lZCBsb25nIHZhbHVlIDogb3JpZ2luYWxWYWx1
ZXMpCi0gICAgewotICAgICAgICBtU3RhdGVCaXRzLnNldCh2YWx1ZSk7Ci0gICAgfQotCi0gICAg
c3RkOjpzZXQ8dW5zaWduZWQgbG9uZz4gcmVhZFZhbHVlczsKLSAgICBmb3IgKHVuc2lnbmVkIGxv
bmcgYml0IDogSXRlcmF0ZUJpdFNldChtU3RhdGVCaXRzKSkKLSAgICB7Ci0gICAgICAgIEVYUEVD
VF9FUSgxdSwgb3JpZ2luYWxWYWx1ZXMuY291bnQoYml0KSk7Ci0gICAgICAgIEVYUEVDVF9FUSgw
dSwgcmVhZFZhbHVlcy5jb3VudChiaXQpKTsKLSAgICAgICAgcmVhZFZhbHVlcy5pbnNlcnQoYml0
KTsKLSAgICB9Ci0KLSAgICBFWFBFQ1RfRVEob3JpZ2luYWxWYWx1ZXMuc2l6ZSgpLCByZWFkVmFs
dWVzLnNpemUoKSk7Ci19Ci0KLS8vIFRlc3QgYW4gZW1wdHkgaXRlcmF0b3IuCi1URVNUX0YoQml0
U2V0SXRlcmF0b3JUZXN0LCBFbXB0eVNldCkKLXsKLSAgICAvLyBXZSBkb24ndCB1c2UgdGhlIEZB
SUwgZ3Rlc3QgbWFjcm8gaGVyZSBzaW5jZSBpdCByZXR1cm5zIGltbWVkaWF0ZWx5LAotICAgIC8v
IGNhdXNpbmcgYW4gdW5yZWFjaGFibGUgY29kZSB3YXJuaW5nIGluIE1TVlMKLSAgICBib29sIHNh
d0JpdCA9IGZhbHNlOwotICAgIGZvciAodW5zaWduZWQgbG9uZyBiaXQgOiBJdGVyYXRlQml0U2V0
KG1TdGF0ZUJpdHMpKQotICAgIHsKLSAgICAgICAgc2F3Qml0ID0gdHJ1ZTsKLSAgICAgICAgVU5V
U0VEX1ZBUklBQkxFKGJpdCk7Ci0gICAgfQotICAgIEVYUEVDVF9GQUxTRShzYXdCaXQpOwotfQot
Ci0vLyBUZXN0IGl0ZXJhdGluZyBhIHJlc3VsdCBvZiBjb21iaW5pbmcgdHdvIGJpdHNldHMuCi1U
RVNUX0YoQml0U2V0SXRlcmF0b3JUZXN0LCBOb25MVmFsdWVCaXRzZXQpCi17Ci0gICAgc3RkOjpi
aXRzZXQ8NDA+IG90aGVyQml0czsKLQotICAgIG1TdGF0ZUJpdHMuc2V0KDEpOwotICAgIG1TdGF0
ZUJpdHMuc2V0KDIpOwotICAgIG1TdGF0ZUJpdHMuc2V0KDMpOwotICAgIG1TdGF0ZUJpdHMuc2V0
KDQpOwotCi0gICAgb3RoZXJCaXRzLnNldCgwKTsKLSAgICBvdGhlckJpdHMuc2V0KDEpOwotICAg
IG90aGVyQml0cy5zZXQoMyk7Ci0gICAgb3RoZXJCaXRzLnNldCg1KTsKLQotICAgIHN0ZDo6c2V0
PHVuc2lnbmVkIGxvbmc+IHNlZW5CaXRzOwotCi0gICAgZm9yICh1bnNpZ25lZCBsb25nIGJpdCA6
IEl0ZXJhdGVCaXRTZXQobVN0YXRlQml0cyAmIG90aGVyQml0cykpCi0gICAgewotICAgICAgICBF
WFBFQ1RfRVEoMHUsIHNlZW5CaXRzLmNvdW50KGJpdCkpOwotICAgICAgICBzZWVuQml0cy5pbnNl
cnQoYml0KTsKLSAgICAgICAgRVhQRUNUX1RSVUUobVN0YXRlQml0c1tiaXRdKTsKLSAgICAgICAg
RVhQRUNUX1RSVUUob3RoZXJCaXRzW2JpdF0pOwotICAgIH0KLQotICAgIEVYUEVDVF9FUSgobVN0
YXRlQml0cyAmIG90aGVyQml0cykuY291bnQoKSwgc2VlbkJpdHMuc2l6ZSgpKTsKLX0KLQotfSAg
Ly8gYW5vbnltb3VzIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbW1vbi9NZW1vcnlCdWZmZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbW1vbi9NZW1vcnlCdWZmZXIuY3BwCmluZGV4IGU3YTNmYjRhMmI3MDczZWVlNjhhZTIz
MGIwOThiOGE4MzQwOWUxNDcuLmU3MjBlZGNhYmU4MjFjMWQ5Y2IwNWMyNWEwYjE4MjA4ZDE4Nzg0
YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vTWVtb3J5
QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL01lbW9y
eUJ1ZmZlci5jcHAKQEAgLTExLDE5ICsxMSwxOCBAQAogCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVn
LmgiCiAKLW5hbWVzcGFjZSByeAorbmFtZXNwYWNlIGFuZ2xlCiB7CiAKLU1lbW9yeUJ1ZmZlcjo6
TWVtb3J5QnVmZmVyKCkKLSAgICA6IG1TaXplKDApLAotICAgICAgbURhdGEoTlVMTCkKKy8vIE1l
bW9yeUJ1ZmZlciBpbXBsZW1lbnRhdGlvbi4KK01lbW9yeUJ1ZmZlcjo6TWVtb3J5QnVmZmVyKCkg
OiBtU2l6ZSgwKSwgbURhdGEobnVsbHB0cikKIHsKIH0KIAogTWVtb3J5QnVmZmVyOjp+TWVtb3J5
QnVmZmVyKCkKIHsKICAgICBmcmVlKG1EYXRhKTsKLSAgICBtRGF0YSA9IE5VTEw7CisgICAgbURh
dGEgPSBudWxscHRyOwogfQogCiBib29sIE1lbW9yeUJ1ZmZlcjo6cmVzaXplKHNpemVfdCBzaXpl
KQpAQCAtMzEsNyArMzAsNyBAQCBib29sIE1lbW9yeUJ1ZmZlcjo6cmVzaXplKHNpemVfdCBzaXpl
KQogICAgIGlmIChzaXplID09IDApCiAgICAgewogICAgICAgICBmcmVlKG1EYXRhKTsKLSAgICAg
ICAgbURhdGEgPSBOVUxMOworICAgICAgICBtRGF0YSA9IG51bGxwdHI7CiAgICAgICAgIG1TaXpl
ID0gMDsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNDMsNyArNDIsNyBAQCBib29s
IE1lbW9yeUJ1ZmZlcjo6cmVzaXplKHNpemVfdCBzaXplKQogCiAgICAgLy8gT25seSByZWFsbG9j
YXRlIGlmIHRoZSBzaXplIGhhcyBjaGFuZ2VkLgogICAgIHVpbnQ4X3QgKm5ld01lbW9yeSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG1hbGxvYyhzaXplb2YodWludDhfdCkgKiBzaXplKSk7
Ci0gICAgaWYgKG5ld01lbW9yeSA9PSBOVUxMKQorICAgIGlmIChuZXdNZW1vcnkgPT0gbnVsbHB0
cikKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC03Nyw0ICs3Niw1OCBA
QCB1aW50OF90ICpNZW1vcnlCdWZmZXI6OmRhdGEoKQogICAgIHJldHVybiBtRGF0YTsKIH0KIAor
Ly8gU2NyYXRjaEJ1ZmZlciBpbXBsZW1lbnRhdGlvbi4KKworU2NyYXRjaEJ1ZmZlcjo6U2NyYXRj
aEJ1ZmZlcih1aW50MzJfdCBsaWZldGltZSkgOiBtTGlmZXRpbWUobGlmZXRpbWUpLCBtUmVzZXRD
b3VudGVyKGxpZmV0aW1lKQoreworfQorCitTY3JhdGNoQnVmZmVyOjp+U2NyYXRjaEJ1ZmZlcigp
Cit7CiB9CisKK2Jvb2wgU2NyYXRjaEJ1ZmZlcjo6Z2V0KHNpemVfdCByZXF1ZXN0ZWRTaXplLCBN
ZW1vcnlCdWZmZXIgKiptZW1vcnlCdWZmZXJPdXQpCit7CisgICAgaWYgKG1TY3JhdGNoTWVtb3J5
LnNpemUoKSA9PSByZXF1ZXN0ZWRTaXplKQorICAgIHsKKyAgICAgICAgbVJlc2V0Q291bnRlciAg
ICA9IG1MaWZldGltZTsKKyAgICAgICAgKm1lbW9yeUJ1ZmZlck91dCA9ICZtU2NyYXRjaE1lbW9y
eTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKG1TY3JhdGNoTWVtb3J5
LnNpemUoKSA+IHJlcXVlc3RlZFNpemUpCisgICAgeworICAgICAgICB0aWNrKCk7CisgICAgfQor
CisgICAgaWYgKG1SZXNldENvdW50ZXIgPT0gMCB8fCBtU2NyYXRjaE1lbW9yeS5zaXplKCkgPCBy
ZXF1ZXN0ZWRTaXplKQorICAgIHsKKyAgICAgICAgbVNjcmF0Y2hNZW1vcnkucmVzaXplKDApOwor
ICAgICAgICBpZiAoIW1TY3JhdGNoTWVtb3J5LnJlc2l6ZShyZXF1ZXN0ZWRTaXplKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIG1SZXNl
dENvdW50ZXIgPSBtTGlmZXRpbWU7CisgICAgfQorCisgICAgQVNTRVJUKG1TY3JhdGNoTWVtb3J5
LnNpemUoKSA+PSByZXF1ZXN0ZWRTaXplKTsKKworICAgICptZW1vcnlCdWZmZXJPdXQgPSAmbVNj
cmF0Y2hNZW1vcnk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgU2NyYXRjaEJ1ZmZlcjo6
dGljaygpCit7CisgICAgaWYgKG1SZXNldENvdW50ZXIgPiAwKQorICAgIHsKKyAgICAgICAgLS1t
UmVzZXRDb3VudGVyOworICAgIH0KK30KKwordm9pZCBTY3JhdGNoQnVmZmVyOjpjbGVhcigpCit7
CisgICAgbVJlc2V0Q291bnRlciA9IG1MaWZldGltZTsKKyAgICBtU2NyYXRjaE1lbW9yeS5yZXNp
emUoMCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9NZW1vcnlCdWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vTWVtb3J5QnVmZmVyLmgKaW5kZXggZWM2MjFjYmNhN2U1NWJm
YjkyZGJjMzIzNDliYjQwMWJiNGJlMjM1Zi4uYjMwZjczN2IxMDcxZWRkOTZjMjFlN2RlYWI5YmUz
NDRlNjVlOGM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1v
bi9NZW1vcnlCdWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9u
L01lbW9yeUJ1ZmZlci5oCkBAIC0xMiwxMCArMTIsMTAgQEAKICNpbmNsdWRlIDxjc3RkZGVmPgog
I2luY2x1ZGUgPHN0ZGludC5oPgogCi1uYW1lc3BhY2UgcngKK25hbWVzcGFjZSBhbmdsZQogewog
Ci1jbGFzcyBNZW1vcnlCdWZmZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUKK2NsYXNzIE1lbW9yeUJ1
ZmZlciBmaW5hbCA6IE5vbkNvcHlhYmxlCiB7CiAgIHB1YmxpYzoKICAgICBNZW1vcnlCdWZmZXIo
KTsKQEAgLTMzLDYgKzMzLDI5IEBAIGNsYXNzIE1lbW9yeUJ1ZmZlciA6IGFuZ2xlOjpOb25Db3B5
YWJsZQogICAgIHVpbnQ4X3QgKm1EYXRhOwogfTsKIAotfQorY2xhc3MgU2NyYXRjaEJ1ZmZlciBm
aW5hbCA6IE5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICAvLyBJZiB3ZSByZXF1ZXN0IGEg
c2NyYXRjaCBidWZmZXIgcmVxdWVzdGluZyBhIHNtYWxsZXIgc2l6ZSB0aGlzIG1hbnkgdGltZXMs
IHJlbGVhc2UgYW5kCisgICAgLy8gcmVjcmVhdGUgdGhlIHNjcmF0Y2ggYnVmZmVyLiBUaGlzIGVu
c3VyZXMgd2UgZG9uJ3QgaGF2ZSBhIGRlZ2VuZXJhdGUgY2FzZSB3aGVyZSB3ZSBhcmUgc3R1Y2sK
KyAgICAvLyBob2dnaW5nIG1lbW9yeS4KKyAgICBTY3JhdGNoQnVmZmVyKHVpbnQzMl90IGxpZmV0
aW1lKTsKKyAgICB+U2NyYXRjaEJ1ZmZlcigpOworCisgICAgLy8gUmV0dXJucyB0cnVlIHdpdGgg
YSBtZW1vcnkgYnVmZmVyIG9mIHRoZSByZXF1ZXN0ZWQgc2l6ZSwgb3IgZmFsc2Ugb24gZmFpbHVy
ZS4KKyAgICBib29sIGdldChzaXplX3QgcmVxdWVzdGVkU2l6ZSwgTWVtb3J5QnVmZmVyICoqbWVt
b3J5QnVmZmVyT3V0KTsKKworICAgIC8vIFRpY2tzIHRoZSByZWxlYXNlIGNvdW50ZXIgZm9yIHRo
ZSBzY3JhdGNoIGJ1ZmZlci4gQWxzbyBkb25lIGltcGxpY2l0bHkgaW4gZ2V0KCkuCisgICAgdm9p
ZCB0aWNrKCk7CisKKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgcHJpdmF0ZToKKyAgICBjb25zdCB1
aW50MzJfdCBtTGlmZXRpbWU7CisgICAgdWludDMyX3QgbVJlc2V0Q291bnRlcjsKKyAgICBNZW1v
cnlCdWZmZXIgbVNjcmF0Y2hNZW1vcnk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKIAog
I2VuZGlmIC8vIENPTU1PTl9NRU1PUllCVUZGRVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vYW5nbGV1dGlscy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tbW9uL2FuZ2xldXRpbHMuY3BwCmluZGV4IDAwNjc4NTg1OGJmZDRlZDZk
ZmVjZDc5OTExZTVjMmNhODgzYWNkMTAuLjA1MzQ4YTQ5MTUzYzFiMTVjNDYxMGFlYjQ5MzhlZjI2
YzAwY2UyNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24v
YW5nbGV1dGlscy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9h
bmdsZXV0aWxzLmNwcApAQCAtMTksOCArMTksMTUgQEAgY29uc3QgdWludHB0cl90IERpcnR5UG9p
bnRlciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludHB0cl90Pjo6bWF4KCk7CiAKIHNpemVfdCBG
b3JtYXRTdHJpbmdJbnRvVmVjdG9yKGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCB2YXJhcmcsIHN0
ZDo6dmVjdG9yPGNoYXI+JiBvdXRCdWZmZXIpCiB7CisgICAgLy8gVGhlIHN0YXRlIG9mIHRoZSB2
YV9saXN0IHBhc3NlZCB0byB2c25wcmludGYgaXMgdW5kZWZpbmVkIGFmdGVyIHRoZSBjYWxsLCBk
byBhIGNvcHkgaW4gY2FzZQorICAgIC8vIHdlIG5lZWQgdG8gZ3JvdyB0aGUgYnVmZmVyLgorICAg
IHZhX2xpc3QgdmFyYXJnQ29weTsKKyAgICB2YV9jb3B5KHZhcmFyZ0NvcHksIHZhcmFyZyk7CisK
ICAgICAvLyBBdHRlbXB0IHRvIGp1c3QgcHJpbnQgdG8gdGhlIGN1cnJlbnQgYnVmZmVyCi0gICAg
aW50IGxlbiA9IHZzbnByaW50ZigmKG91dEJ1ZmZlci5mcm9udCgpKSwgb3V0QnVmZmVyLnNpemUo
KSwgZm10LCB2YXJhcmcpOworICAgIGludCBsZW4gPSB2c25wcmludGYoJihvdXRCdWZmZXIuZnJv
bnQoKSksIG91dEJ1ZmZlci5zaXplKCksIGZtdCwgdmFyYXJnQ29weSk7CisgICAgdmFfZW5kKHZh
cmFyZ0NvcHkpOworCiAgICAgaWYgKGxlbiA8IDAgfHwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW4p
ID49IG91dEJ1ZmZlci5zaXplKCkpCiAgICAgewogICAgICAgICAvLyBCdWZmZXIgd2FzIG5vdCBs
YXJnZSBlbm91Z2gsIGNhbGN1bGF0ZSB0aGUgcmVxdWlyZWQgc2l6ZSBhbmQgcmVzaXplIHRoZSBi
dWZmZXIKQEAgLTI4LDcgKzM1LDkgQEAgc2l6ZV90IEZvcm1hdFN0cmluZ0ludG9WZWN0b3IoY29u
c3QgY2hhciAqZm10LCB2YV9saXN0IHZhcmFyZywgc3RkOjp2ZWN0b3I8Y2hhcj4KICAgICAgICAg
b3V0QnVmZmVyLnJlc2l6ZShsZW4gKyAxKTsKIAogICAgICAgICAvLyBQcmludCBhZ2FpbgotICAg
ICAgICBsZW4gPSB2c25wcmludGYoJihvdXRCdWZmZXIuZnJvbnQoKSksIG91dEJ1ZmZlci5zaXpl
KCksIGZtdCwgdmFyYXJnKTsKKyAgICAgICAgdmFfY29weSh2YXJhcmdDb3B5LCB2YXJhcmcpOwor
ICAgICAgICBsZW4gPSB2c25wcmludGYoJihvdXRCdWZmZXIuZnJvbnQoKSksIG91dEJ1ZmZlci5z
aXplKCksIGZtdCwgdmFyYXJnQ29weSk7CisgICAgICAgIHZhX2VuZCh2YXJhcmdDb3B5KTsKICAg
ICB9CiAgICAgQVNTRVJUKGxlbiA+PSAwKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90
PihsZW4pOwpAQCAtMzYsMTAgKzQ1LDcgQEAgc2l6ZV90IEZvcm1hdFN0cmluZ0ludG9WZWN0b3Io
Y29uc3QgY2hhciAqZm10LCB2YV9saXN0IHZhcmFyZywgc3RkOjp2ZWN0b3I8Y2hhcj4KIAogc3Rk
OjpzdHJpbmcgRm9ybWF0U3RyaW5nKGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCB2YXJhcmcpCiB7
Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IGlnbm9yZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgogICAgIHN0YXRpYyBzdGQ6OnZlY3Rv
cjxjaGFyPiBidWZmZXIoNTEyKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIAogICAg
IHNpemVfdCBsZW4gPSBGb3JtYXRTdHJpbmdJbnRvVmVjdG9yKGZtdCwgdmFyYXJnLCBidWZmZXIp
OwogICAgIHJldHVybiBzdGQ6OnN0cmluZygmYnVmZmVyWzBdLCBsZW4pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2FuZ2xldXRpbHMuaAppbmRleCBlYWI4Yzc5M2I3
MGFmZjFmNmE1MzNjMTA3YWFmOGM3MWMyNmJiYTAzLi43ODQ5ZDlhZmQ3NjQ3MDllODA0MDI1ZmI2
YmNhNTgyNTFlYWMyMDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tbW9uL2FuZ2xldXRpbHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
bW9uL2FuZ2xldXRpbHMuaApAQCAtMjMsNiArMjMsMTAgQEAKIG5hbWVzcGFjZSBhbmdsZQogewog
CisjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNEOSkgfHwgZGVmaW5lZChBTkdMRV9FTkFCTEVf
RDNEMTEpCit1c2luZyBNaWNyb3NvZnQ6OldSTDo6Q29tUHRyOworI2VuZGlmICAvLyBkZWZpbmVk
KEFOR0xFX0VOQUJMRV9EM0Q5KSB8fCBkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0QxMSkKKwogY2xh
c3MgTm9uQ29weWFibGUKIHsKICAgcHVibGljOgpAQCAtMTE2LDEwICsxMjAsOCBAQCBpbmxpbmUg
Ym9vbCBJc01hc2tGbGFnU2V0KFQgbWFzaywgVCBmbGFnKQogCiBpbmxpbmUgY29uc3QgY2hhciog
TWFrZVN0YXRpY1N0cmluZyhjb25zdCBzdGQ6OnN0cmluZyAmc3RyKQogewotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4
aXQtdGltZS1kZXN0cnVjdG9ycyIKICAgICBzdGF0aWMgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHN0
cmluZ3M7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisKICAgICBzdGQ6OnNldDxzdGQ6
OnN0cmluZz46Oml0ZXJhdG9yIGl0ID0gc3RyaW5ncy5maW5kKHN0cik7CiAgICAgaWYgKGl0ICE9
IHN0cmluZ3MuZW5kKCkpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbW1vbi9iaXRzZXRfdXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21tb24vYml0c2V0X3V0aWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmJkZGVkZDU1MTkxY2ViM2E3YzU4
NDBkYTM0OWM0OTY5NTIyZDkyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21tb24vYml0c2V0X3V0aWxzLmgKQEAgLTAsMCArMSwxMzggQEAKKy8vCisv
LyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisvLyBiaXRzZXRfdXRpbHM6CisvLyAgIEJpdHNldC1yZWxhdGVkIGhlbHBlciBjbGFzc2Vz
LCBzdWNoIGFzIGEgZmFzdCBpdGVyYXRvciB0byBzY2FuIGZvciBzZXQgYml0cy4KKy8vCisKKyNp
Zm5kZWYgQ09NTU9OX0JJVFNFVElURVJBVE9SX0hfCisjZGVmaW5lIENPTU1PTl9CSVRTRVRJVEVS
QVRPUl9IXworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlIDxiaXRzZXQ+CisKKyNp
bmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgor
I2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgorI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5o
IgorCituYW1lc3BhY2UgYW5nbGUKK3sKK3RlbXBsYXRlIDxzaXplX3QgTj4KK2NsYXNzIEJpdFNl
dEl0ZXJhdG9yIGZpbmFsCit7CisgIHB1YmxpYzoKKyAgICBCaXRTZXRJdGVyYXRvcihjb25zdCBz
dGQ6OmJpdHNldDxOPiAmYml0c2V0KTsKKyAgICBCaXRTZXRJdGVyYXRvcihjb25zdCBCaXRTZXRJ
dGVyYXRvciAmb3RoZXIpOworICAgIEJpdFNldEl0ZXJhdG9yICZvcGVyYXRvcj0oY29uc3QgQml0
U2V0SXRlcmF0b3IgJm90aGVyKTsKKworICAgIGNsYXNzIEl0ZXJhdG9yIGZpbmFsCisgICAgewor
ICAgICAgcHVibGljOgorICAgICAgICBJdGVyYXRvcihjb25zdCBzdGQ6OmJpdHNldDxOPiAmYml0
cyk7CisgICAgICAgIEl0ZXJhdG9yICZvcGVyYXRvcisrKCk7CisKKyAgICAgICAgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEl0ZXJhdG9yICZvdGhlcikgY29uc3Q7CisgICAgICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBJdGVyYXRvciAmb3RoZXIpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBsb25n
IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuIG1DdXJyZW50Qml0OyB9CisKKyAgICAgIHByaXZh
dGU6CisgICAgICAgIHVuc2lnbmVkIGxvbmcgZ2V0TmV4dEJpdCgpOworCisgICAgICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgQml0c1BlcldvcmQgPSBzaXplb2YodW5zaWduZWQgbG9uZykgKiA4Owor
ICAgICAgICBzdGQ6OmJpdHNldDxOPiBtQml0czsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtQ3Vy
cmVudEJpdDsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBtT2Zmc2V0OworICAgIH07CisKKyAgICBJ
dGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIEl0ZXJhdG9yKG1CaXRzKTsgfQorICAgIEl0
ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIEl0ZXJhdG9yKHN0ZDo6Yml0c2V0PE4+KDApKTsg
fQorCisgIHByaXZhdGU6CisgICAgY29uc3Qgc3RkOjpiaXRzZXQ8Tj4gbUJpdHM7Cit9OworCit0
ZW1wbGF0ZSA8c2l6ZV90IE4+CitCaXRTZXRJdGVyYXRvcjxOPjo6Qml0U2V0SXRlcmF0b3IoY29u
c3Qgc3RkOjpiaXRzZXQ8Tj4gJmJpdHNldCkgOiBtQml0cyhiaXRzZXQpCit7Cit9CisKK3RlbXBs
YXRlIDxzaXplX3QgTj4KK0JpdFNldEl0ZXJhdG9yPE4+OjpCaXRTZXRJdGVyYXRvcihjb25zdCBC
aXRTZXRJdGVyYXRvciAmb3RoZXIpIDogbUJpdHMob3RoZXIubUJpdHMpCit7Cit9CisKK3RlbXBs
YXRlIDxzaXplX3QgTj4KK0JpdFNldEl0ZXJhdG9yPE4+ICZCaXRTZXRJdGVyYXRvcjxOPjo6b3Bl
cmF0b3I9KGNvbnN0IEJpdFNldEl0ZXJhdG9yICZvdGhlcikKK3sKKyAgICBtQml0cyA9IG90aGVy
Lm1CaXRzOworICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGUgPHNpemVfdCBOPgorQml0
U2V0SXRlcmF0b3I8Tj46Okl0ZXJhdG9yOjpJdGVyYXRvcihjb25zdCBzdGQ6OmJpdHNldDxOPiAm
Yml0cykKKyAgICA6IG1CaXRzKGJpdHMpLCBtQ3VycmVudEJpdCgwKSwgbU9mZnNldCgwKQorewor
ICAgIGlmIChiaXRzLmFueSgpKQorICAgIHsKKyAgICAgICAgbUN1cnJlbnRCaXQgPSBnZXROZXh0
Qml0KCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1PZmZzZXQgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nPihyeDo6cm91bmRVcChOLCBCaXRzUGVyV29yZCkpOworICAgIH0K
K30KKwordGVtcGxhdGUgPHNpemVfdCBOPgordHlwZW5hbWUgQml0U2V0SXRlcmF0b3I8Tj46Okl0
ZXJhdG9yICZCaXRTZXRJdGVyYXRvcjxOPjo6SXRlcmF0b3I6Om9wZXJhdG9yKysoKQoreworICAg
IEFTU0VSVChtQml0cy5hbnkoKSk7CisgICAgbUJpdHMuc2V0KG1DdXJyZW50Qml0IC0gbU9mZnNl
dCwgMCk7CisgICAgbUN1cnJlbnRCaXQgPSBnZXROZXh0Qml0KCk7CisgICAgcmV0dXJuICp0aGlz
OworfQorCit0ZW1wbGF0ZSA8c2l6ZV90IE4+Citib29sIEJpdFNldEl0ZXJhdG9yPE4+OjpJdGVy
YXRvcjo6b3BlcmF0b3I9PShjb25zdCBJdGVyYXRvciAmb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1PZmZzZXQgPT0gb3RoZXIubU9mZnNldCAmJiBtQml0cyA9PSBvdGhlci5tQml0czsKK30K
KwordGVtcGxhdGUgPHNpemVfdCBOPgorYm9vbCBCaXRTZXRJdGVyYXRvcjxOPjo6SXRlcmF0b3I6
Om9wZXJhdG9yIT0oY29uc3QgSXRlcmF0b3IgJm90aGVyKSBjb25zdAoreworICAgIHJldHVybiAh
KCp0aGlzID09IG90aGVyKTsKK30KKwordGVtcGxhdGUgPHNpemVfdCBOPgordW5zaWduZWQgbG9u
ZyBCaXRTZXRJdGVyYXRvcjxOPjo6SXRlcmF0b3I6OmdldE5leHRCaXQoKQoreworICAgIHN0YXRp
YyBzdGQ6OmJpdHNldDxOPiB3b3JkTWFzayhzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxv
bmc+OjptYXgoKSk7CisKKyAgICB3aGlsZSAobU9mZnNldCA8IE4pCisgICAgeworICAgICAgICB1
bnNpZ25lZCBsb25nIHdvcmRCaXRzID0gKG1CaXRzICYgd29yZE1hc2spLnRvX3Vsb25nKCk7Cisg
ICAgICAgIGlmICh3b3JkQml0cyAhPSAwdWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBnbDo6U2NhbkZvcndhcmQod29yZEJpdHMpICsgbU9mZnNldDsKKyAgICAgICAgfQorCisgICAg
ICAgIG1CaXRzID4+PSBCaXRzUGVyV29yZDsKKyAgICAgICAgbU9mZnNldCArPSBCaXRzUGVyV29y
ZDsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIEhlbHBlciB0byBhdm9pZCBuZWVkaW5n
IHRvIHNwZWNpZnkgdGhlIHRlbXBsYXRlIHBhcmFtZXRlciBzaXplCit0ZW1wbGF0ZSA8c2l6ZV90
IE4+CitCaXRTZXRJdGVyYXRvcjxOPiBJdGVyYXRlQml0U2V0KGNvbnN0IHN0ZDo6Yml0c2V0PE4+
ICZiaXRzZXQpCit7CisgICAgcmV0dXJuIEJpdFNldEl0ZXJhdG9yPE4+KGJpdHNldCk7Cit9CisK
K30gIC8vIGFuZ2xlCisKKyNlbmRpZiAgLy8gQ09NTU9OX0JJVFNFVElURVJBVE9SX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2JpdHNldF91dGlsc191
bml0dGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2JpdHNldF91
dGlsc191bml0dGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFlZmY1NmIzM2MzZTU5YjI1NDExN2IwNDE2
ZTY4NzM4YTkwNjdmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21tb24vYml0c2V0X3V0aWxzX3VuaXR0ZXN0LmNwcApAQCAtMCwwICsxLDkxIEBACisv
LworLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworLy8gYml0c2V0X3V0aWxzX3VuaXR0ZXN0OgorLy8gICBUZXN0cyBiaXRzZXQgaGVs
cGVycyBhbmQgY3VzdG9tIGNsYXNzZXMuCisvLworCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4K
KworI2luY2x1ZGUgImNvbW1vbi9iaXRzZXRfdXRpbHMuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFu
Z2xlOworCituYW1lc3BhY2UKK3sKK2NsYXNzIEJpdFNldEl0ZXJhdG9yVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0Cit7CisgIHByb3RlY3RlZDoKKyAgICBzdGQ6OmJpdHNldDw0MD4gbVN0YXRl
Qml0czsKK307CisKKy8vIFNpbXBsZSBpdGVyYXRvciB0ZXN0LgorVEVTVF9GKEJpdFNldEl0ZXJh
dG9yVGVzdCwgSXRlcmF0b3IpCit7CisgICAgc3RkOjpzZXQ8dW5zaWduZWQgbG9uZz4gb3JpZ2lu
YWxWYWx1ZXM7CisgICAgb3JpZ2luYWxWYWx1ZXMuaW5zZXJ0KDIpOworICAgIG9yaWdpbmFsVmFs
dWVzLmluc2VydCg2KTsKKyAgICBvcmlnaW5hbFZhbHVlcy5pbnNlcnQoOCk7CisgICAgb3JpZ2lu
YWxWYWx1ZXMuaW5zZXJ0KDM1KTsKKworICAgIGZvciAodW5zaWduZWQgbG9uZyB2YWx1ZSA6IG9y
aWdpbmFsVmFsdWVzKQorICAgIHsKKyAgICAgICAgbVN0YXRlQml0cy5zZXQodmFsdWUpOworICAg
IH0KKworICAgIHN0ZDo6c2V0PHVuc2lnbmVkIGxvbmc+IHJlYWRWYWx1ZXM7CisgICAgZm9yICh1
bnNpZ25lZCBsb25nIGJpdCA6IEl0ZXJhdGVCaXRTZXQobVN0YXRlQml0cykpCisgICAgeworICAg
ICAgICBFWFBFQ1RfRVEoMXUsIG9yaWdpbmFsVmFsdWVzLmNvdW50KGJpdCkpOworICAgICAgICBF
WFBFQ1RfRVEoMHUsIHJlYWRWYWx1ZXMuY291bnQoYml0KSk7CisgICAgICAgIHJlYWRWYWx1ZXMu
aW5zZXJ0KGJpdCk7CisgICAgfQorCisgICAgRVhQRUNUX0VRKG9yaWdpbmFsVmFsdWVzLnNpemUo
KSwgcmVhZFZhbHVlcy5zaXplKCkpOworfQorCisvLyBUZXN0IGFuIGVtcHR5IGl0ZXJhdG9yLgor
VEVTVF9GKEJpdFNldEl0ZXJhdG9yVGVzdCwgRW1wdHlTZXQpCit7CisgICAgLy8gV2UgZG9uJ3Qg
dXNlIHRoZSBGQUlMIGd0ZXN0IG1hY3JvIGhlcmUgc2luY2UgaXQgcmV0dXJucyBpbW1lZGlhdGVs
eSwKKyAgICAvLyBjYXVzaW5nIGFuIHVucmVhY2hhYmxlIGNvZGUgd2FybmluZyBpbiBNU1ZTCisg
ICAgYm9vbCBzYXdCaXQgPSBmYWxzZTsKKyAgICBmb3IgKHVuc2lnbmVkIGxvbmcgYml0IDogSXRl
cmF0ZUJpdFNldChtU3RhdGVCaXRzKSkKKyAgICB7CisgICAgICAgIHNhd0JpdCA9IHRydWU7Cisg
ICAgICAgIFVOVVNFRF9WQVJJQUJMRShiaXQpOworICAgIH0KKyAgICBFWFBFQ1RfRkFMU0Uoc2F3
Qml0KTsKK30KKworLy8gVGVzdCBpdGVyYXRpbmcgYSByZXN1bHQgb2YgY29tYmluaW5nIHR3byBi
aXRzZXRzLgorVEVTVF9GKEJpdFNldEl0ZXJhdG9yVGVzdCwgTm9uTFZhbHVlQml0c2V0KQorewor
ICAgIHN0ZDo6Yml0c2V0PDQwPiBvdGhlckJpdHM7CisKKyAgICBtU3RhdGVCaXRzLnNldCgxKTsK
KyAgICBtU3RhdGVCaXRzLnNldCgyKTsKKyAgICBtU3RhdGVCaXRzLnNldCgzKTsKKyAgICBtU3Rh
dGVCaXRzLnNldCg0KTsKKworICAgIG90aGVyQml0cy5zZXQoMCk7CisgICAgb3RoZXJCaXRzLnNl
dCgxKTsKKyAgICBvdGhlckJpdHMuc2V0KDMpOworICAgIG90aGVyQml0cy5zZXQoNSk7CisKKyAg
ICBzdGQ6OnNldDx1bnNpZ25lZCBsb25nPiBzZWVuQml0czsKKworICAgIGZvciAodW5zaWduZWQg
bG9uZyBiaXQgOiBJdGVyYXRlQml0U2V0KG1TdGF0ZUJpdHMgJiBvdGhlckJpdHMpKQorICAgIHsK
KyAgICAgICAgRVhQRUNUX0VRKDB1LCBzZWVuQml0cy5jb3VudChiaXQpKTsKKyAgICAgICAgc2Vl
bkJpdHMuaW5zZXJ0KGJpdCk7CisgICAgICAgIEVYUEVDVF9UUlVFKG1TdGF0ZUJpdHNbYml0XSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKG90aGVyQml0c1tiaXRdKTsKKyAgICB9CisKKyAgICBFWFBF
Q1RfRVEoKG1TdGF0ZUJpdHMgJiBvdGhlckJpdHMpLmNvdW50KCksIHNlZW5CaXRzLnNpemUoKSk7
Cit9CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVidWcuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbW1vbi9kZWJ1Zy5jcHAKaW5kZXggZGM0OWQyNGM1OGJjNTcwZWMyNzg1MzkyYTE1
NGYwZmRkYjJiZDhkZS4uOTFlMTUyNGY2YmVjZTkxOWY3NWJhYTMyNmQyYjNiZWQ5NjE3MjFhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5jcHAKQEAgLTEw
LDEzICsxMCwxMyBAQAogCiAjaW5jbHVkZSA8c3RkYXJnLmg+CiAKKyNpbmNsdWRlIDxhcnJheT4K
ICNpbmNsdWRlIDxjc3RkaW8+CiAjaW5jbHVkZSA8ZnN0cmVhbT4KICNpbmNsdWRlIDxpb3N0cmVh
bT4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKICNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgot
I2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgogI2luY2x1ZGUgImNvbW1vbi9PcHRpb25hbC5o
IgogCiBuYW1lc3BhY2UgZ2wKQEAgLTI1LDEwMyArMjUsNDMgQEAgbmFtZXNwYWNlIGdsCiBuYW1l
c3BhY2UKIHsKIAotY2xhc3MgRm9ybWF0dGVkU3RyaW5nIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlh
YmxlCi17Ci0gIHB1YmxpYzoKLSAgICBGb3JtYXR0ZWRTdHJpbmcoY29uc3QgY2hhciAqZm9ybWF0
LCB2YV9saXN0IHZhcmFyZykgOiBtRm9ybWF0KGZvcm1hdCkKLSAgICB7Ci0gICAgICAgIHZhX2Nv
cHkobVZhckFyZywgdmFyYXJnKTsKLSAgICB9Ci0KLSAgICBjb25zdCBjaGFyICpjX3N0cigpIHsg
cmV0dXJuIHN0cigpLmNfc3RyKCk7IH0KLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzdHIoKQot
ICAgIHsKLSAgICAgICAgaWYgKCFtTWVzc2FnZS52YWxpZCgpKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBtTWVzc2FnZSA9IEZvcm1hdFN0cmluZyhtRm9ybWF0LCBtVmFyQXJnKTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gbU1lc3NhZ2UudmFsdWUoKTsKLSAgICB9CitEZWJ1Z0Fubm90YXRv
ciAqZ19kZWJ1Z0Fubm90YXRvciA9IG51bGxwdHI7CiAKLSAgICBzaXplX3QgbGVuZ3RoKCkKLSAg
ICB7Ci0gICAgICAgIGNfc3RyKCk7Ci0gICAgICAgIHJldHVybiBtTWVzc2FnZS52YWx1ZSgpLmxl
bmd0aCgpOwotICAgIH0KK2NvbnN0ZXhwciBzdGQ6OmFycmF5PGNvbnN0IGNoYXIgKiwgTE9HX05V
TV9TRVZFUklUSUVTPiBnX2xvZ1NldmVyaXR5TmFtZXMgPSB7CisgICAgeyJFVkVOVCIsICJXQVJO
IiwgIkVSUiJ9fTsKIAotICBwcml2YXRlOgotICAgIGNvbnN0IGNoYXIgKm1Gb3JtYXQ7Ci0gICAg
dmFfbGlzdCBtVmFyQXJnOwotICAgIE9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBtTWVzc2FnZTsKLX07
Ci1lbnVtIERlYnVnVHJhY2VPdXRwdXRUeXBlCitjb25zdGV4cHIgY29uc3QgY2hhciAqTG9nU2V2
ZXJpdHlOYW1lKGludCBzZXZlcml0eSkKIHsKLSAgIERlYnVnVHJhY2VPdXRwdXRUeXBlTm9uZSwK
LSAgIERlYnVnVHJhY2VPdXRwdXRUeXBlU2V0TWFya2VyLAotICAgRGVidWdUcmFjZU91dHB1dFR5
cGVCZWdpbkV2ZW50Ci19OwotCi1EZWJ1Z0Fubm90YXRvciAqZ19kZWJ1Z0Fubm90YXRvciA9IG51
bGxwdHI7CisgICAgcmV0dXJuIChzZXZlcml0eSA+PSAwICYmIHNldmVyaXR5IDwgTE9HX05VTV9T
RVZFUklUSUVTKSA/IGdfbG9nU2V2ZXJpdHlOYW1lc1tzZXZlcml0eV0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIlVOS05PV04i
OworfQogCi12b2lkIG91dHB1dChib29sIHRyYWNlSW5EZWJ1Z09ubHksIE1lc3NhZ2VUeXBlIG1l
c3NhZ2VUeXBlLCBEZWJ1Z1RyYWNlT3V0cHV0VHlwZSBvdXRwdXRUeXBlLAotICAgICAgICAgICAg
Y29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhcmFyZykKK2Jvb2wgU2hvdWxkQ3JlYXRlTG9n
TWVzc2FnZShMb2dTZXZlcml0eSBzZXZlcml0eSkKIHsKLSAgICBpZiAoRGVidWdBbm5vdGF0aW9u
c0FjdGl2ZSgpKQotICAgIHsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCi0gICAg
ICAgIHN0YXRpYyBzdGQ6OnZlY3RvcjxjaGFyPiBidWZmZXIoNTEyKTsKLSNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwb3AKLSAgICAgICAgc2l6ZV90IGxlbiA9IEZvcm1hdFN0cmluZ0ludG9WZWN0
b3IoZm9ybWF0LCB2YXJhcmcsIGJ1ZmZlcik7Ci0gICAgICAgIHN0ZDo6d3N0cmluZyBmb3JtYXR0
ZWRXaWRlTWVzc2FnZShidWZmZXIuYmVnaW4oKSwgYnVmZmVyLmJlZ2luKCkgKyBsZW4pOwotCi0g
ICAgICAgIEFTU0VSVChnX2RlYnVnQW5ub3RhdG9yICE9IG51bGxwdHIpOwotICAgICAgICBzd2l0
Y2ggKG91dHB1dFR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIERlYnVnVHJhY2VPdXRw
dXRUeXBlTm9uZToKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgRGVidWdUcmFj
ZU91dHB1dFR5cGVCZWdpbkV2ZW50OgotICAgICAgICAgICAgZ19kZWJ1Z0Fubm90YXRvci0+YmVn
aW5FdmVudChmb3JtYXR0ZWRXaWRlTWVzc2FnZS5jX3N0cigpKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgIGNhc2UgRGVidWdUcmFjZU91dHB1dFR5cGVTZXRNYXJrZXI6Ci0gICAgICAg
ICAgICBnX2RlYnVnQW5ub3RhdG9yLT5zZXRNYXJrZXIoZm9ybWF0dGVkV2lkZU1lc3NhZ2UuY19z
dHIoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEZvcm1h
dHRlZFN0cmluZyBmb3JtYXR0ZWRNZXNzYWdlKGZvcm1hdCwgdmFyYXJnKTsKLQotICAgIGlmICht
ZXNzYWdlVHlwZSA9PSBNRVNTQUdFX0VSUikKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y2VyciA8PCBm
b3JtYXR0ZWRNZXNzYWdlLmNfc3RyKCk7Ci0jaWYgIWRlZmluZWQoTkRFQlVHKSAmJiBkZWZpbmVk
KF9NU0NfVkVSKQotICAgICAgICBPdXRwdXREZWJ1Z1N0cmluZ0EoZm9ybWF0dGVkTWVzc2FnZS5j
X3N0cigpKTsKLSNlbmRpZiAgLy8gIWRlZmluZWQoTkRFQlVHKSAmJiBkZWZpbmVkKF9NU0NfVkVS
KQotICAgIH0KKyNpZiBkZWZpbmVkKEFOR0xFX1RSQUNFX0VOQUJMRUQpCisgICAgcmV0dXJuIHRy
dWU7CisjZWxpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9BU1NFUlRTKQorICAgIHJldHVybiBzZXZl
cml0eSA9PSBMT0dfRVJSOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KIAot
I2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX0RFQlVHX1RSQUNFKQotI2lmIGRlZmluZWQoTkRFQlVH
KQotICAgIGlmICh0cmFjZUluRGVidWdPbmx5KQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSNlbmRpZiAgLy8gTkRFQlVHCi0gICAgc3RhdGljIHN0ZDo6b2ZzdHJlYW0gZmlsZShUUkFD
RV9PVVRQVVRfRklMRSwgc3RkOjpvZnN0cmVhbTo6YXBwKTsKLSAgICBpZiAoZmlsZSkKLSAgICB7
Ci0gICAgICAgIGZpbGUud3JpdGUoZm9ybWF0dGVkTWVzc2FnZS5jX3N0cigpLCBmb3JtYXR0ZWRN
ZXNzYWdlLmxlbmd0aCgpKTsKLSAgICAgICAgZmlsZS5mbHVzaCgpOwotICAgIH0KK30gIC8vIG5h
bWVzcGFjZQogCi0jaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfREVCVUdfVFJBQ0VfVE9fREVCVUdH
RVIpCi0gICAgT3V0cHV0RGVidWdTdHJpbmdBKGZvcm1hdHRlZE1lc3NhZ2UuY19zdHIoKSk7Ci0j
ZW5kaWYgIC8vIEFOR0xFX0VOQUJMRV9ERUJVR19UUkFDRV9UT19ERUJVR0dFUgorbmFtZXNwYWNl
IHByaXYKK3sKIAotI2VuZGlmICAvLyBBTkdMRV9FTkFCTEVfREVCVUdfVFJBQ0UKK2Jvb2wgU2hv
dWxkQ3JlYXRlUGxhdGZvcm1Mb2dNZXNzYWdlKExvZ1NldmVyaXR5IHNldmVyaXR5KQoreworI2lm
IGRlZmluZWQoQU5HTEVfVFJBQ0VfRU5BQkxFRCkKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisg
ICAgcmV0dXJuIHNldmVyaXR5ICE9IExPR19FVkVOVDsKKyNlbmRpZgogfQogCi19IC8vIG5hbWVz
cGFjZQorfSAgLy8gbmFtZXNwYWNlIHByaXYKIAogYm9vbCBEZWJ1Z0Fubm90YXRpb25zQWN0aXZl
KCkKIHsKQEAgLTEzMiw2ICs3MiwxMSBAQCBib29sIERlYnVnQW5ub3RhdGlvbnNBY3RpdmUoKQog
I2VuZGlmCiB9CiAKK2Jvb2wgRGVidWdBbm5vdGF0aW9uc0luaXRpYWxpemVkKCkKK3sKKyAgICBy
ZXR1cm4gZ19kZWJ1Z0Fubm90YXRvciAhPSBudWxscHRyOworfQorCiB2b2lkIEluaXRpYWxpemVE
ZWJ1Z0Fubm90YXRpb25zKERlYnVnQW5ub3RhdG9yICpkZWJ1Z0Fubm90YXRvcikKIHsKICAgICBV
bmluaXRpYWxpemVEZWJ1Z0Fubm90YXRpb25zKCk7CkBAIC0xNDQsMjUgKzg5LDIwIEBAIHZvaWQg
VW5pbml0aWFsaXplRGVidWdBbm5vdGF0aW9ucygpCiAgICAgZ19kZWJ1Z0Fubm90YXRvciA9IG51
bGxwdHI7CiB9CiAKLXZvaWQgdHJhY2UoYm9vbCB0cmFjZUluRGVidWdPbmx5LCBNZXNzYWdlVHlw
ZSBtZXNzYWdlVHlwZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi17Ci0gICAgdmFfbGlzdCB2
YXJhcmc7Ci0gICAgdmFfc3RhcnQodmFyYXJnLCBmb3JtYXQpOwotICAgIG91dHB1dCh0cmFjZUlu
RGVidWdPbmx5LCBtZXNzYWdlVHlwZSwgRGVidWdUcmFjZU91dHB1dFR5cGVTZXRNYXJrZXIsIGZv
cm1hdCwgdmFyYXJnKTsKLSAgICB2YV9lbmQodmFyYXJnKTsKLX0KLQotU2NvcGVkUGVyZkV2ZW50
SGVscGVyOjpTY29wZWRQZXJmRXZlbnRIZWxwZXIoY29uc3QgY2hhciogZm9ybWF0LCAuLi4pCitT
Y29wZWRQZXJmRXZlbnRIZWxwZXI6OlNjb3BlZFBlcmZFdmVudEhlbHBlcihjb25zdCBjaGFyICpm
b3JtYXQsIC4uLikKIHsKICNpZiAhZGVmaW5lZChBTkdMRV9FTkFCTEVfREVCVUdfVFJBQ0UpCiAg
ICAgaWYgKCFEZWJ1Z0Fubm90YXRpb25zQWN0aXZlKCkpCiAgICAgewogICAgICAgICByZXR1cm47
CiAgICAgfQotI2VuZGlmIC8vICFBTkdMRV9FTkFCTEVfREVCVUdfVFJBQ0UKKyNlbmRpZiAgLy8g
IUFOR0xFX0VOQUJMRV9ERUJVR19UUkFDRQorCiAgICAgdmFfbGlzdCB2YXJhcmc7CiAgICAgdmFf
c3RhcnQodmFyYXJnLCBmb3JtYXQpOwotICAgIG91dHB1dCh0cnVlLCBNRVNTQUdFX0VWRU5ULCBE
ZWJ1Z1RyYWNlT3V0cHV0VHlwZUJlZ2luRXZlbnQsIGZvcm1hdCwgdmFyYXJnKTsKKyAgICBzdGQ6
OnZlY3RvcjxjaGFyPiBidWZmZXIoNTEyKTsKKyAgICBzaXplX3QgbGVuID0gRm9ybWF0U3RyaW5n
SW50b1ZlY3Rvcihmb3JtYXQsIHZhcmFyZywgYnVmZmVyKTsKKyAgICBBTkdMRV9MT0coRVZFTlQp
IDw8IHN0ZDo6c3RyaW5nKCZidWZmZXJbMF0sIGxlbik7CiAgICAgdmFfZW5kKHZhcmFyZyk7CiB9
CiAKQEAgLTE3NCw0ICsxMTQsOTkgQEAgU2NvcGVkUGVyZkV2ZW50SGVscGVyOjp+U2NvcGVkUGVy
ZkV2ZW50SGVscGVyKCkKICAgICB9CiB9CiAKK0xvZ01lc3NhZ2U6OkxvZ01lc3NhZ2UoY29uc3Qg
Y2hhciAqZnVuY3Rpb24sIGludCBsaW5lLCBMb2dTZXZlcml0eSBzZXZlcml0eSkKKyAgICA6IG1G
dW5jdGlvbihmdW5jdGlvbiksIG1MaW5lKGxpbmUpLCBtU2V2ZXJpdHkoc2V2ZXJpdHkpCit7Cisg
ICAgLy8gRVZFTlQoKSBkb2VzIG5vdCByZXF1aXJlIGFkZGl0aW9uYWwgZnVuY3Rpb24obGluZSkg
aW5mby4KKyAgICBpZiAobVNldmVyaXR5ICE9IExPR19FVkVOVCkKKyAgICB7CisgICAgICAgIG1T
dHJlYW0gPDwgbUZ1bmN0aW9uIDw8ICIoIiA8PCBtTGluZSA8PCAiKTogIjsKKyAgICB9Cit9CisK
K0xvZ01lc3NhZ2U6On5Mb2dNZXNzYWdlKCkKK3sKKyAgICBpZiAoRGVidWdBbm5vdGF0aW9uc0lu
aXRpYWxpemVkKCkgJiYgKG1TZXZlcml0eSA9PSBMT0dfRVJSIHx8IG1TZXZlcml0eSA9PSBMT0df
V0FSTikpCisgICAgeworICAgICAgICBnX2RlYnVnQW5ub3RhdG9yLT5sb2dNZXNzYWdlKCp0aGlz
KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgVHJhY2UoZ2V0U2V2ZXJpdHkoKSwg
Z2V0TWVzc2FnZSgpLmNfc3RyKCkpOworICAgIH0KK30KKwordm9pZCBUcmFjZShMb2dTZXZlcml0
eSBzZXZlcml0eSwgY29uc3QgY2hhciAqbWVzc2FnZSkKK3sKKyAgICBpZiAoIVNob3VsZENyZWF0
ZUxvZ01lc3NhZ2Uoc2V2ZXJpdHkpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHN0ZDo6c3RyaW5nIHN0cihtZXNzYWdlKTsKKworICAgIGlmIChEZWJ1Z0Fubm90YXRpb25z
QWN0aXZlKCkpCisgICAgeworICAgICAgICBzdGQ6OndzdHJpbmcgZm9ybWF0dGVkV2lkZU1lc3Nh
Z2Uoc3RyLmJlZ2luKCksIHN0ci5lbmQoKSk7CisKKyAgICAgICAgc3dpdGNoIChzZXZlcml0eSkK
KyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBMT0dfRVZFTlQ6CisgICAgICAgICAgICAgICAg
Z19kZWJ1Z0Fubm90YXRvci0+YmVnaW5FdmVudChmb3JtYXR0ZWRXaWRlTWVzc2FnZS5jX3N0cigp
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgZ19kZWJ1Z0Fubm90YXRvci0+c2V0TWFya2VyKGZvcm1hdHRlZFdpZGVNZXNzYWdl
LmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKHNldmVyaXR5ID09IExPR19FUlIpCisgICAgeworICAgICAgICBzdGQ6OmNlcnIgPDwg
TG9nU2V2ZXJpdHlOYW1lKHNldmVyaXR5KSA8PCAiOiAiIDw8IHN0ciA8PCBzdGQ6OmVuZGw7Cisg
ICAgfQorCisjaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9XSU5ET1dTKSAmJiBcCisgICAgKGRl
ZmluZWQoQU5HTEVfRU5BQkxFX0RFQlVHX1RSQUNFX1RPX0RFQlVHR0VSKSB8fCAhZGVmaW5lZChO
REVCVUcpKQorI2lmICFkZWZpbmVkKEFOR0xFX0VOQUJMRV9ERUJVR19UUkFDRV9UT19ERUJVR0dF
UikKKyAgICBpZiAoc2V2ZXJpdHkgPT0gTE9HX0VSUikKKyNlbmRpZiAgLy8gIWRlZmluZWQoQU5H
TEVfRU5BQkxFX0RFQlVHX1RSQUNFX1RPX0RFQlVHR0VSKQorICAgIHsKKyAgICAgICAgT3V0cHV0
RGVidWdTdHJpbmdBKHN0ci5jX3N0cigpKTsKKyAgICB9CisjZW5kaWYKKworI2lmIGRlZmluZWQo
QU5HTEVfRU5BQkxFX0RFQlVHX1RSQUNFKQorI2lmIGRlZmluZWQoTkRFQlVHKQorICAgIGlmIChz
ZXZlcml0eSA9PSBMT0dfRVZFTlQgfHwgc2V2ZXJpdHkgPT0gTE9HX1dBUk4pCisgICAgeworICAg
ICAgICByZXR1cm47CisgICAgfQorI2VuZGlmICAvLyBkZWZpbmVkKE5ERUJVRykKKyAgICBzdGF0
aWMgc3RkOjpvZnN0cmVhbSBmaWxlKFRSQUNFX09VVFBVVF9GSUxFLCBzdGQ6Om9mc3RyZWFtOjph
cHApOworICAgIGlmIChmaWxlKQorICAgIHsKKyAgICAgICAgZmlsZSA8PCBMb2dTZXZlcml0eU5h
bWUoc2V2ZXJpdHkpIDw8ICI6ICIgPDwgc3RyIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgZmlsZS5m
bHVzaCgpOworICAgIH0KKyNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9FTkFCTEVfREVCVUdfVFJB
Q0UpCiB9CisKK0xvZ1NldmVyaXR5IExvZ01lc3NhZ2U6OmdldFNldmVyaXR5KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbVNldmVyaXR5OworfQorCitzdGQ6OnN0cmluZyBMb2dNZXNzYWdlOjpnZXRN
ZXNzYWdlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0cmVhbS5zdHIoKTsKK30KKworI2lmIGRl
ZmluZWQoQU5HTEVfUExBVEZPUk1fV0lORE9XUykKK3N0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChz
dGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBGbXRIUiAmZm10KQoreworICAgIG9zIDw8ICJIUkVTVUxU
OiAiOworICAgIHJldHVybiBGbXRIZXhJbnQob3MsIGZtdC5tSFIpOworfQorI2VuZGlmICAvLyBk
ZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1dJTkRPV1MpCisKK30gIC8vIG5hbWVzcGFjZSBnbApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5oCmluZGV4IDMyOWM3NWM1NTRk
OTAxZjNhOGIyZmQ1MWI5N2MyZGZhZmMzZTViMDEuLjAxMDhmZjY1NWRiNmFlY2M4NDgzM2NmZDhh
ODJlM2JhOGQ0Mjg2OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21tb24vZGVidWcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2Rl
YnVnLmgKQEAgLTExLDYgKzExLDEwIEBACiAKICNpbmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRl
IDxzdGRpby5oPgorCisjaW5jbHVkZSA8aW9zPgorI2luY2x1ZGUgPGlvbWFuaXA+CisjaW5jbHVk
ZSA8c3N0cmVhbT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKICNpbmNsdWRlICJjb21tb24vYW5nbGV1
dGlscy5oIgpAQCAtMjIsMTcgKzI2LDYgQEAKIG5hbWVzcGFjZSBnbAogewogCi1lbnVtIE1lc3Nh
Z2VUeXBlCi17Ci0gICAgTUVTU0FHRV9UUkFDRSwKLSAgICBNRVNTQUdFX0ZJWE1FLAotICAgIE1F
U1NBR0VfRVJSLAotICAgIE1FU1NBR0VfRVZFTlQsCi19OwotCi0vLyBPdXRwdXRzIHRleHQgdG8g
dGhlIGRlYnVnZ2luZyBsb2csIG9yIHRoZSBkZWJ1Z2dpbmcgd2luZG93Ci12b2lkIHRyYWNlKGJv
b2wgdHJhY2VJbkRlYnVnT25seSwgTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0IGNoYXIg
KmZvcm1hdCwgLi4uKTsKLQogLy8gUGFpcnMgYSBEM0QgYmVnaW4gZXZlbnQgd2l0aCBhbiBlbmQg
ZXZlbnQuCiBjbGFzcyBTY29wZWRQZXJmRXZlbnRIZWxwZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUK
IHsKQEAgLTQxLDIxICszNCwxNTMgQEAgY2xhc3MgU2NvcGVkUGVyZkV2ZW50SGVscGVyIDogYW5n
bGU6Ok5vbkNvcHlhYmxlCiAgICAgflNjb3BlZFBlcmZFdmVudEhlbHBlcigpOwogfTsKIAordXNp
bmcgTG9nU2V2ZXJpdHkgPSBpbnQ7CisvLyBOb3RlOiB0aGUgbG9nIHNldmVyaXRpZXMgYXJlIHVz
ZWQgdG8gaW5kZXggaW50byB0aGUgYXJyYXkgb2YgbmFtZXMsCisvLyBzZWUgZ19sb2dTZXZlcml0
eU5hbWVzLgorY29uc3RleHByIExvZ1NldmVyaXR5IExPR19FVkVOVCAgICAgICAgICA9IDA7Citj
b25zdGV4cHIgTG9nU2V2ZXJpdHkgTE9HX1dBUk4gICAgICAgICAgID0gMTsKK2NvbnN0ZXhwciBM
b2dTZXZlcml0eSBMT0dfRVJSICAgICAgICAgICAgPSAyOworY29uc3RleHByIExvZ1NldmVyaXR5
IExPR19OVU1fU0VWRVJJVElFUyA9IDM7CisKK3ZvaWQgVHJhY2UoTG9nU2V2ZXJpdHkgc2V2ZXJp
dHksIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworCisvLyBUaGlzIGNsYXNzIG1vcmUgb3IgbGVzcyBy
ZXByZXNlbnRzIGEgcGFydGljdWxhciBsb2cgbWVzc2FnZS4gIFlvdQorLy8gY3JlYXRlIGFuIGlu
c3RhbmNlIG9mIExvZ01lc3NhZ2UgYW5kIHRoZW4gc3RyZWFtIHN0dWZmIHRvIGl0LgorLy8gV2hl
biB5b3UgZmluaXNoIHN0cmVhbWluZyB0byBpdCwgfkxvZ01lc3NhZ2UgaXMgY2FsbGVkIGFuZCB0
aGUKKy8vIGZ1bGwgbWVzc2FnZSBnZXRzIHN0cmVhbWVkIHRvIHRoZSBhcHByb3ByaWF0ZSBkZXN0
aW5hdGlvbi4KKy8vCisvLyBZb3Ugc2hvdWxkbid0IGFjdHVhbGx5IHVzZSBMb2dNZXNzYWdlJ3Mg
Y29uc3RydWN0b3IgdG8gbG9nIHRoaW5ncywKKy8vIHRob3VnaC4gIFlvdSBzaG91bGQgdXNlIHRo
ZSBFUlIoKSBhbmQgV0FSTigpIG1hY3Jvcy4KK2NsYXNzIExvZ01lc3NhZ2UgOiBhbmdsZTo6Tm9u
Q29weWFibGUKK3sKKyAgcHVibGljOgorICAgIC8vIFVzZWQgZm9yIEFOR0xFX0xPRyhzZXZlcml0
eSkuCisgICAgTG9nTWVzc2FnZShjb25zdCBjaGFyICpmdW5jdGlvbiwgaW50IGxpbmUsIExvZ1Nl
dmVyaXR5IHNldmVyaXR5KTsKKyAgICB+TG9nTWVzc2FnZSgpOworICAgIHN0ZDo6b3N0cmVhbSAm
c3RyZWFtKCkgeyByZXR1cm4gbVN0cmVhbTsgfQorCisgICAgTG9nU2V2ZXJpdHkgZ2V0U2V2ZXJp
dHkoKSBjb25zdDsKKyAgICBzdGQ6OnN0cmluZyBnZXRNZXNzYWdlKCkgY29uc3Q7CisKKyAgcHJp
dmF0ZToKKyAgICBjb25zdCBjaGFyICptRnVuY3Rpb247CisgICAgY29uc3QgaW50IG1MaW5lOwor
ICAgIGNvbnN0IExvZ1NldmVyaXR5IG1TZXZlcml0eTsKKworICAgIHN0ZDo6b3N0cmluZ3N0cmVh
bSBtU3RyZWFtOworfTsKKwogLy8gV3JhcHMgdGhlIEQzRDkvRDNEMTEgZGVidWcgYW5ub3RhdGlv
biBmdW5jdGlvbnMuCisvLyBBbHNvIGhhbmRsZXMgcmVkaXJlY3RpbmcgbG9nZ2luZyBkZXN0aW5h
dGlvbi4KIGNsYXNzIERlYnVnQW5ub3RhdG9yIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7CiAgIHB1
YmxpYzoKLSAgICBEZWJ1Z0Fubm90YXRvcigpIHsgfTsKKyAgICBEZWJ1Z0Fubm90YXRvcigpe307
CiAgICAgdmlydHVhbCB+RGVidWdBbm5vdGF0b3IoKSB7IH07CiAgICAgdmlydHVhbCB2b2lkIGJl
Z2luRXZlbnQoY29uc3Qgd2NoYXJfdCAqZXZlbnROYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGVuZEV2ZW50KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNYXJrZXIoY29uc3Qgd2NoYXJf
dCAqbWFya2VyTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBnZXRTdGF0dXMoKSA9IDA7Cisg
ICAgLy8gTG9nIE1lc3NhZ2UgSGFuZGxlciB0aGF0IGdldHMgcGFzc2VkIGV2ZXJ5IGxvZyBtZXNz
YWdlLAorICAgIC8vIHdoZW4gZGVidWcgYW5ub3RhdGlvbnMgYXJlIGluaXRpYWxpemVkLAorICAg
IC8vIHJlcGxhY2luZyBkZWZhdWx0IGhhbmRsaW5nIGJ5IExvZ01lc3NhZ2UuCisgICAgdmlydHVh
bCB2b2lkIGxvZ01lc3NhZ2UoY29uc3QgTG9nTWVzc2FnZSAmbXNnKSBjb25zdCA9IDA7CiB9Owog
CiB2b2lkIEluaXRpYWxpemVEZWJ1Z0Fubm90YXRpb25zKERlYnVnQW5ub3RhdG9yICpkZWJ1Z0Fu
bm90YXRvcik7CiB2b2lkIFVuaW5pdGlhbGl6ZURlYnVnQW5ub3RhdGlvbnMoKTsKIGJvb2wgRGVi
dWdBbm5vdGF0aW9uc0FjdGl2ZSgpOworYm9vbCBEZWJ1Z0Fubm90YXRpb25zSW5pdGlhbGl6ZWQo
KTsKKworbmFtZXNwYWNlIHByaXYKK3sKKy8vIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBleHBsaWNp
dGx5IGlnbm9yZSB2YWx1ZXMgaW4gdGhlIGNvbmRpdGlvbmFsIGxvZ2dpbmcgbWFjcm9zLiBUaGlz
IGF2b2lkcworLy8gY29tcGlsZXIgd2FybmluZ3MgbGlrZSAidmFsdWUgY29tcHV0ZWQgaXMgbm90
IHVzZWQiIGFuZCAic3RhdGVtZW50IGhhcyBubyBlZmZlY3QiLgorY2xhc3MgTG9nTWVzc2FnZVZv
aWRpZnkKK3sKKyAgcHVibGljOgorICAgIExvZ01lc3NhZ2VWb2lkaWZ5KCkge30KKyAgICAvLyBU
aGlzIGhhcyB0byBiZSBhbiBvcGVyYXRvciB3aXRoIGEgcHJlY2VkZW5jZSBsb3dlciB0aGFuIDw8
IGJ1dCBoaWdoZXIgdGhhbiA/OgorICAgIHZvaWQgb3BlcmF0b3ImKHN0ZDo6b3N0cmVhbSAmKSB7
fQorfTsKKworLy8gVXNlZCBieSBBTkdMRV9MT0dfSVNfT04gdG8gbGF6eS1ldmFsdWF0ZSBzdHJl
YW0gYXJndW1lbnRzLgorYm9vbCBTaG91bGRDcmVhdGVQbGF0Zm9ybUxvZ01lc3NhZ2UoTG9nU2V2
ZXJpdHkgc2V2ZXJpdHkpOworCit0ZW1wbGF0ZSA8aW50IE4sIHR5cGVuYW1lIFQ+CitzdGQ6Om9z
dHJlYW0gJkZtdEhleChzdGQ6Om9zdHJlYW0gJm9zLCBUIHZhbHVlKQoreworICAgIG9zIDw8ICIw
eCI7CisKKyAgICBzdGQ6Omlvc19iYXNlOjpmbXRmbGFncyBvbGRGbGFncyA9IG9zLmZsYWdzKCk7
CisgICAgc3RkOjpzdHJlYW1zaXplIG9sZFdpZHRoICAgICAgICAgPSBvcy53aWR0aCgpOworICAg
IHN0ZDo6b3N0cmVhbTo6Y2hhcl90eXBlIG9sZEZpbGwgID0gb3MuZmlsbCgpOworCisgICAgb3Mg
PDwgc3RkOjpoZXggPDwgc3RkOjp1cHBlcmNhc2UgPDwgc3RkOjpzZXR3KE4pIDw8IHN0ZDo6c2V0
ZmlsbCgnMCcpIDw8IHZhbHVlOworCisgICAgb3MuZmxhZ3Mob2xkRmxhZ3MpOworICAgIG9zLndp
ZHRoKG9sZFdpZHRoKTsKKyAgICBvcy5maWxsKG9sZEZpbGwpOworCisgICAgcmV0dXJuIG9zOwor
fQorfSAgLy8gbmFtZXNwYWNlIHByaXYKKworI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fV0lO
RE9XUykKK2NsYXNzIEZtdEhSCit7CisgIHB1YmxpYzoKKyAgICBleHBsaWNpdCBGbXRIUihIUkVT
VUxUIGhyZXN1bHQpIDogbUhSKGhyZXN1bHQpIHt9CisgIHByaXZhdGU6CisgICAgSFJFU1VMVCBt
SFI7CisgICAgZnJpZW5kIHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9z
LCBjb25zdCBGbXRIUiAmZm10KTsKK307CisjZW5kaWYgIC8vIGRlZmluZWQoQU5HTEVfUExBVEZP
Uk1fV0lORE9XUykKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGQ6Om9zdHJlYW0gJkZtdEhl
eFNob3J0KHN0ZDo6b3N0cmVhbSAmb3MsIFQgdmFsdWUpCit7CisgICAgcmV0dXJuIHByaXY6OkZt
dEhleDw0PihvcywgdmFsdWUpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3N0ZDo6b3N0
cmVhbSAmRm10SGV4SW50KHN0ZDo6b3N0cmVhbSAmb3MsIFQgdmFsdWUpCit7CisgICAgcmV0dXJu
IHByaXY6OkZtdEhleDw4PihvcywgdmFsdWUpOworfQorCisvLyBBIGZldyBkZWZpbml0aW9ucyBv
ZiBtYWNyb3MgdGhhdCBkb24ndCBnZW5lcmF0ZSBtdWNoIGNvZGUuIFRoZXNlIGFyZSB1c2VkCisv
LyBieSBBTkdMRV9MT0coKS4gU2luY2UgdGhlc2UgYXJlIHVzZWQgYWxsIG92ZXIgb3VyIGNvZGUs
IGl0J3MKKy8vIGJldHRlciB0byBoYXZlIGNvbXBhY3QgY29kZSBmb3IgdGhlc2Ugb3BlcmF0aW9u
cy4KKyNkZWZpbmUgQ09NUEFDVF9BTkdMRV9MT0dfRVhfRVZFTlQoQ2xhc3NOYW1lLCAuLi4pIFwK
KyAgICA6OmdsOjpDbGFzc05hbWUoX19GVU5DVElPTl9fLCBfX0xJTkVfXywgOjpnbDo6TE9HX0VW
RU5ULCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBDT01QQUNUX0FOR0xFX0xPR19FWF9XQVJOKENs
YXNzTmFtZSwgLi4uKSBcCisgICAgOjpnbDo6Q2xhc3NOYW1lKF9fRlVOQ1RJT05fXywgX19MSU5F
X18sIDo6Z2w6OkxPR19XQVJOLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBDT01QQUNUX0FOR0xF
X0xPR19FWF9FUlIoQ2xhc3NOYW1lLCAuLi4pIFwKKyAgICA6OmdsOjpDbGFzc05hbWUoX19GVU5D
VElPTl9fLCBfX0xJTkVfXywgOjpnbDo6TE9HX0VSUiwgIyNfX1ZBX0FSR1NfXykKKworI2RlZmlu
ZSBDT01QQUNUX0FOR0xFX0xPR19FVkVOVCBDT01QQUNUX0FOR0xFX0xPR19FWF9FVkVOVChMb2dN
ZXNzYWdlKQorI2RlZmluZSBDT01QQUNUX0FOR0xFX0xPR19XQVJOIENPTVBBQ1RfQU5HTEVfTE9H
X0VYX1dBUk4oTG9nTWVzc2FnZSkKKyNkZWZpbmUgQ09NUEFDVF9BTkdMRV9MT0dfRVJSIENPTVBB
Q1RfQU5HTEVfTE9HX0VYX0VSUihMb2dNZXNzYWdlKQorCisjZGVmaW5lIEFOR0xFX0xPR19JU19P
TihzZXZlcml0eSkgKDo6Z2w6OnByaXY6OlNob3VsZENyZWF0ZVBsYXRmb3JtTG9nTWVzc2FnZSg6
OmdsOjpMT0dfIyNzZXZlcml0eSkpCisKKy8vIEhlbHBlciBtYWNybyB3aGljaCBhdm9pZHMgZXZh
bHVhdGluZyB0aGUgYXJndW1lbnRzIHRvIGEgc3RyZWFtIGlmIHRoZSBjb25kaXRpb24gZG9lc24n
dCBob2xkLgorLy8gQ29uZGl0aW9uIGlzIGV2YWx1YXRlZCBvbmNlIGFuZCBvbmx5IG9uY2UuCisj
ZGVmaW5lIEFOR0xFX0xBWllfU1RSRUFNKHN0cmVhbSwgY29uZGl0aW9uKSBcCisgICAgIShjb25k
aXRpb24pID8gc3RhdGljX2Nhc3Q8dm9pZD4oMCkgOiA6OmdsOjpwcml2OjpMb2dNZXNzYWdlVm9p
ZGlmeSgpICYgKHN0cmVhbSkKKworLy8gV2UgdXNlIHRoZSBwcmVwcm9jZXNzb3IncyBtZXJnaW5n
IG9wZXJhdG9yLCAiIyMiLCBzbyB0aGF0LCBlLmcuLAorLy8gQU5HTEVfTE9HKEVWRU5UKSBiZWNv
bWVzIHRoZSB0b2tlbiBDT01QQUNUX0FOR0xFX0xPR19FVkVOVC4gIFRoZXJlJ3Mgc29tZSBmdW5u
eQorLy8gc3VidGxlIGRpZmZlcmVuY2UgYmV0d2VlbiBvc3RyZWFtIG1lbWJlciBzdHJlYW1pbmcg
ZnVuY3Rpb25zIChlLmcuLAorLy8gb3N0cmVhbTo6b3BlcmF0b3I8PChpbnQpIGFuZCBvc3RyZWFt
IG5vbi1tZW1iZXIgc3RyZWFtaW5nIGZ1bmN0aW9ucworLy8gKGUuZy4sIDo6b3BlcmF0b3I8PChv
c3RyZWFtJiwgc3RyaW5nJik6IGl0IHR1cm5zIG91dCB0aGF0IGl0J3MKKy8vIGltcG9zc2libGUg
dG8gc3RyZWFtIHNvbWV0aGluZyBsaWtlIGEgc3RyaW5nIGRpcmVjdGx5IHRvIGFuIHVubmFtZWQK
Ky8vIG9zdHJlYW0uIFdlIGVtcGxveSBhIG5lYXQgaGFjayBieSBjYWxsaW5nIHRoZSBzdHJlYW0o
KSBtZW1iZXIKKy8vIGZ1bmN0aW9uIG9mIExvZ01lc3NhZ2Ugd2hpY2ggc2VlbXMgdG8gYXZvaWQg
dGhlIHByb2JsZW0uCisjZGVmaW5lIEFOR0xFX0xPR19TVFJFQU0oc2V2ZXJpdHkpIENPTVBBQ1Rf
QU5HTEVfTE9HXyMjc2V2ZXJpdHkuc3RyZWFtKCkKKworI2RlZmluZSBBTkdMRV9MT0coc2V2ZXJp
dHkpIEFOR0xFX0xBWllfU1RSRUFNKEFOR0xFX0xPR19TVFJFQU0oc2V2ZXJpdHkpLCBBTkdMRV9M
T0dfSVNfT04oc2V2ZXJpdHkpKQogCiB9ICAvLyBuYW1lc3BhY2UgZ2wKIApAQCAtNjgsMjYgKzE5
Myw4IEBAIGJvb2wgRGVidWdBbm5vdGF0aW9uc0FjdGl2ZSgpOwogI2RlZmluZSBBTkdMRV9FTkFC
TEVfQVNTRVJUUwogI2VuZGlmCiAKLS8vIEEgbWFjcm8gdG8gb3V0cHV0IGEgdHJhY2Ugb2YgYSBm
dW5jdGlvbiBjYWxsIGFuZCBpdHMgYXJndW1lbnRzIHRvIHRoZSBkZWJ1Z2dpbmcgbG9nCi0jaWYg
ZGVmaW5lZChBTkdMRV9UUkFDRV9FTkFCTEVEKQotI2RlZmluZSBUUkFDRShtZXNzYWdlLCAuLi4p
IGdsOjp0cmFjZSh0cnVlLCBnbDo6TUVTU0FHRV9UUkFDRSwgInRyYWNlOiAlcyglZCk6ICIgbWVz
c2FnZSAiXG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fLCAjI19fVkFfQVJHU19fKQotI2Vsc2UK
LSNkZWZpbmUgVFJBQ0UobWVzc2FnZSwgLi4uKSAodm9pZCgwKSkKLSNlbmRpZgotCi0vLyBBIG1h
Y3JvIHRvIG91dHB1dCBhIGZ1bmN0aW9uIGNhbGwgYW5kIGl0cyBhcmd1bWVudHMgdG8gdGhlIGRl
YnVnZ2luZyBsb2csIHRvIGRlbm90ZSBhbiBpdGVtIGluIG5lZWQgb2YgZml4aW5nLgotI2lmIGRl
ZmluZWQoQU5HTEVfVFJBQ0VfRU5BQkxFRCkKLSNkZWZpbmUgRklYTUUobWVzc2FnZSwgLi4uKSBn
bDo6dHJhY2UoZmFsc2UsIGdsOjpNRVNTQUdFX0ZJWE1FLCAiZml4bWU6ICVzKCVkKTogIiBtZXNz
YWdlICJcbiIsIF9fRlVOQ1RJT05fXywgX19MSU5FX18sICMjX19WQV9BUkdTX18pCi0jZWxzZQot
I2RlZmluZSBGSVhNRShtZXNzYWdlLCAuLi4pICh2b2lkKDApKQotI2VuZGlmCi0KLS8vIEEgbWFj
cm8gdG8gb3V0cHV0IGEgZnVuY3Rpb24gY2FsbCBhbmQgaXRzIGFyZ3VtZW50cyB0byB0aGUgZGVi
dWdnaW5nIGxvZywgaW4gY2FzZSBvZiBlcnJvci4KLSNpZiBkZWZpbmVkKEFOR0xFX1RSQUNFX0VO
QUJMRUQpIHx8IGRlZmluZWQoQU5HTEVfRU5BQkxFX0FTU0VSVFMpCi0jZGVmaW5lIEVSUihtZXNz
YWdlLCAuLi4pIGdsOjp0cmFjZShmYWxzZSwgZ2w6Ok1FU1NBR0VfRVJSLCAiZXJyOiAlcyglZCk6
ICIgbWVzc2FnZSAiXG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fLCAjI19fVkFfQVJHU19fKQot
I2Vsc2UKLSNkZWZpbmUgRVJSKG1lc3NhZ2UsIC4uLikgKHZvaWQoMCkpCi0jZW5kaWYKKyNkZWZp
bmUgV0FSTigpIEFOR0xFX0xPRyhXQVJOKQorI2RlZmluZSBFUlIoKSBBTkdMRV9MT0coRVJSKQog
CiAvLyBBIG1hY3JvIHRvIGxvZyBhIHBlcmZvcm1hbmNlIGV2ZW50IGFyb3VuZCBhIHNjb3BlLgog
I2lmIGRlZmluZWQoQU5HTEVfVFJBQ0VfRU5BQkxFRCkKQEAgLTEwMCwxMCArMjA3LDYgQEAgYm9v
bCBEZWJ1Z0Fubm90YXRpb25zQWN0aXZlKCk7CiAjZGVmaW5lIEVWRU5UKG1lc3NhZ2UsIC4uLikg
KHZvaWQoMCkpCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoQU5HTEVfVFJBQ0VfRU5BQkxFRCkKLSN1
bmRlZiBBTkdMRV9UUkFDRV9FTkFCTEVECi0jZW5kaWYKLQogI2lmIGRlZmluZWQoQ09NUElMRVJf
R0NDKSB8fCBkZWZpbmVkKF9fY2xhbmdfXykKICNkZWZpbmUgQU5HTEVfQ1JBU0goKSBfX2J1aWx0
aW5fdHJhcCgpCiAjZWxzZQpAQCAtMTE5LDM4ICsyMjIsNTMgQEAgYm9vbCBEZWJ1Z0Fubm90YXRp
b25zQWN0aXZlKCk7CiAKIC8vIEEgbWFjcm8gYXNzZXJ0aW5nIGEgY29uZGl0aW9uIGFuZCBvdXRw
dXR0aW5nIGZhaWx1cmVzIHRvIHRoZSBkZWJ1ZyBsb2cKICNpZiBkZWZpbmVkKEFOR0xFX0VOQUJM
RV9BU1NFUlRTKQotI2RlZmluZSBBU1NFUlQoZXhwcmVzc2lvbikgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgKGV4cHJlc3Npb24gPyBzdGF0aWNfY2FzdDx2b2lkPigwKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAg
ICA6IChFUlIoIlx0ISBBc3NlcnQgZmFpbGVkIGluICVzKCVkKTogJXNcbiIsIF9fRlVOQ1RJT05f
XywgX19MSU5FX18sICNleHByZXNzaW9uKSwgXAotICAgICAgICAgICAgICAgICAgIEFOR0xFX0FT
U0VSVF9JTVBMKGV4cHJlc3Npb24pKSkKLSNkZWZpbmUgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJM
RSh2YXJpYWJsZSkKKyNkZWZpbmUgQVNTRVJUKGV4cHJlc3Npb24pICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAoZXhwcmVzc2lvbiA/IHN0YXRpY19jYXN0PHZvaWQ+KDApIDogKChFUlIoKSA8PCAiXHQh
IEFzc2VydCBmYWlsZWQgaW4gIiA8PCBfX0ZVTkNUSU9OX18gPDwgIigiIFwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBfX0xJTkVfXyA8PCAiKTog
IiA8PCAjZXhwcmVzc2lvbiksICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFOR0xFX0FTU0VSVF9JTVBMKGV4cHJlc3Npb24pKSkKICNlbHNl
Ci0jZGVmaW5lIEFTU0VSVChleHByZXNzaW9uKSAodm9pZCgwKSkKLSNkZWZpbmUgVU5VU0VEX0FT
U0VSVElPTl9WQVJJQUJMRSh2YXJpYWJsZSkgKCh2b2lkKXZhcmlhYmxlKQotI2VuZGlmCisvLyBU
aGVzZSBhcmUganVzdCBkdW1teSB2YWx1ZXMuCisjZGVmaW5lIENPTVBBQ1RfQU5HTEVfTE9HX0VY
X0FTU0VSVChDbGFzc05hbWUsIC4uLikgXAorICAgIENPTVBBQ1RfQU5HTEVfTE9HX0VYX0VWRU5U
KENsYXNzTmFtZSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgQ09NUEFDVF9BTkdMRV9MT0dfQVNT
RVJUIENPTVBBQ1RfQU5HTEVfTE9HX0VWRU5UCituYW1lc3BhY2UgZ2wKK3sKK2NvbnN0ZXhwciBM
b2dTZXZlcml0eSBMT0dfQVNTRVJUID0gTE9HX0VWRU5UOworfSAgLy8gbmFtZXNwYWNlIGdsCisK
KyNkZWZpbmUgQVNTRVJUKGNvbmRpdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBBTkdMRV9MQVpZX1NUUkVBTShBTkdMRV9MT0df
U1RSRUFNKEFTU0VSVCksIGZhbHNlID8gIShjb25kaXRpb24pIDogZmFsc2UpIFwKKyAgICAgICAg
PDwgIkNoZWNrIGZhaWxlZDogIiAjY29uZGl0aW9uICIuICIKKyNlbmRpZiAgLy8gZGVmaW5lZChB
TkdMRV9FTkFCTEVfQVNTRVJUUykKIAogI2RlZmluZSBVTlVTRURfVkFSSUFCTEUodmFyaWFibGUp
ICgodm9pZCl2YXJpYWJsZSkKIAogLy8gQSBtYWNybyB0byBpbmRpY2F0ZSB1bmltcGxlbWVudGVk
IGZ1bmN0aW9uYWxpdHkKLQotI2lmIGRlZmluZWQgKEFOR0xFX1RFU1RfQ09ORklHKQorI2lmbmRl
ZiBOT0FTU0VSVF9VTklNUExFTUVOVEVECiAjZGVmaW5lIE5PQVNTRVJUX1VOSU1QTEVNRU5URUQg
MQogI2VuZGlmCiAKLS8vIFRoaXMgd2lsbCBhbGxvdyB1cyB0byB0ZXN0IHdpdGggc29tZSBhdXRv
bWF0ZWQgdGVzdCBzdWl0ZXMgKGVnIGRFUVApIHdpdGhvdXQgY3Jhc2hpbmcKLSNpZm5kZWYgTk9B
U1NFUlRfVU5JTVBMRU1FTlRFRAotI2RlZmluZSBOT0FTU0VSVF9VTklNUExFTUVOVEVEIDAKLSNl
bmRpZgorI2lmIGRlZmluZWQoQU5HTEVfVFJBQ0VfRU5BQkxFRCkgfHwgZGVmaW5lZChBTkdMRV9F
TkFCTEVfQVNTRVJUUykKKyNkZWZpbmUgVU5JTVBMRU1FTlRFRCgpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBFUlIoKSA8PCAiXHQhIFVuaW1wbGVtZW50ZWQ6ICIgPDwg
X19GVU5DVElPTl9fIDw8ICIoIiA8PCBfX0xJTkVfXyA8PCAiKSI7IFwKKyAgICAgICAgQVNTRVJU
KE5PQVNTRVJUX1VOSU1QTEVNRU5URUQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEFOR0xFX0VNUFRZ
X1NUQVRFTUVOVAogCi0jZGVmaW5lIFVOSU1QTEVNRU5URUQoKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgRklY
TUUoIlx0ISBVbmltcGxlbWVudGVkOiAlcyglZClcbiIsIF9fRlVOQ1RJT05fXywgX19MSU5FX18p
OyBcCi0gICAgICAgIEFTU0VSVChOT0FTU0VSVF9VTklNUExFTUVOVEVEKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKy8vIEEgbWFjcm8gZm9yIGNvZGUg
d2hpY2ggaXMgbm90IGV4cGVjdGVkIHRvIGJlIHJlYWNoZWQgdW5kZXIgdmFsaWQgYXNzdW1wdGlv
bnMKKyNkZWZpbmUgVU5SRUFDSEFCTEUoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKEVSUigpIDw8ICJcdCEg
VW5yZWFjaGFibGUgcmVhY2hlZDogIiA8PCBfX0ZVTkNUSU9OX18gPDwgIigiIDw8IF9fTElORV9f
IDw8ICIpIiksIFwKKyAgICAgQVNTRVJUKGZhbHNlKSkKKyNlbHNlCisjZGVmaW5lIFVOSU1QTEVN
RU5URUQoKSAgICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgQVNTRVJUKE5PQVNTRVJUX1VOSU1QTEVNRU5URUQpOyBcCisg
ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIEFOR0xFX0VNUFRZ
X1NUQVRFTUVOVAogCiAvLyBBIG1hY3JvIGZvciBjb2RlIHdoaWNoIGlzIG5vdCBleHBlY3RlZCB0
byBiZSByZWFjaGVkIHVuZGVyIHZhbGlkIGFzc3VtcHRpb25zCi0jZGVmaW5lIFVOUkVBQ0hBQkxF
KCkgXAotICAgIChFUlIoIlx0ISBVbnJlYWNoYWJsZSByZWFjaGVkOiAlcyglZClcbiIsIF9fRlVO
Q1RJT05fXywgX19MSU5FX18pLCBBU1NFUlQoZmFsc2UpKQorI2RlZmluZSBVTlJFQUNIQUJMRSgp
IEFTU0VSVChmYWxzZSkKKyNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9UUkFDRV9FTkFCTEVEKSB8
fCBkZWZpbmVkKEFOR0xFX0VOQUJMRV9BU1NFUlRTKQogCiAjZW5kaWYgICAvLyBDT01NT05fREVC
VUdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZXZl
bnRfdHJhY2VyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZXZlbnRf
dHJhY2VyLmNwcAppbmRleCBjOWViNWUzMDczNzNkNWJmNWY1MjNkMzNlZDk5OThhNTY3MmQ0YTZk
Li42ZGM4NDU4YWNjZmY3ZmZmZmMyZjY2ZDVkOGUxMjVkNDk0MGVhZGFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2V2ZW50X3RyYWNlci5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9ldmVudF90cmFjZXIuY3BwCkBAIC0x
MSwxMCArMTEsMTEgQEAgbmFtZXNwYWNlIGFuZ2xlCiAKIGNvbnN0IHVuc2lnbmVkIGNoYXIgKkdl
dFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyhjb25zdCBjaGFyICpuYW1lKQogewotICAgIGFuZ2xl
OjpQbGF0Zm9ybSAqcGxhdGZvcm0gPSBBTkdMRVBsYXRmb3JtQ3VycmVudCgpOworICAgIGF1dG8g
KnBsYXRmb3JtID0gQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKTsKICAgICBBU1NFUlQocGxhdGZvcm0p
OwogCi0gICAgY29uc3QgdW5zaWduZWQgY2hhciAqY2F0ZWdvcnlFbmFibGVkRmxhZyA9IHBsYXRm
b3JtLT5nZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcobmFtZSk7CisgICAgY29uc3QgdW5zaWdu
ZWQgY2hhciAqY2F0ZWdvcnlFbmFibGVkRmxhZyA9CisgICAgICAgIHBsYXRmb3JtLT5nZXRUcmFj
ZUNhdGVnb3J5RW5hYmxlZEZsYWcocGxhdGZvcm0sIG5hbWUpOwogICAgIGlmIChjYXRlZ29yeUVu
YWJsZWRGbGFnICE9IG51bGxwdHIpCiAgICAgewogICAgICAgICByZXR1cm4gY2F0ZWdvcnlFbmFi
bGVkRmxhZzsKQEAgLTI0LDMzICsyNSwzMSBAQCBjb25zdCB1bnNpZ25lZCBjaGFyICpHZXRUcmFj
ZUNhdGVnb3J5RW5hYmxlZEZsYWcoY29uc3QgY2hhciAqbmFtZSkKICAgICByZXR1cm4gJmRpc2Fi
bGVkOwogfQogCi1QbGF0Zm9ybTo6VHJhY2VFdmVudEhhbmRsZSBBZGRUcmFjZUV2ZW50KGNoYXIg
cGhhc2UsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5R3JvdXBFbmFibGVkLCBjb25zdCBj
aGFyKiBuYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBudW1BcmdzLCBjb25zdCBjaGFyKiogYXJnTmFtZXMsIGNv
bnN0IHVuc2lnbmVkIGNoYXIqIGFyZ1R5cGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcqIGFyZ1ZhbHVlcywgdW5zaWdu
ZWQgY2hhciBmbGFncykKK2FuZ2xlOjpUcmFjZUV2ZW50SGFuZGxlIEFkZFRyYWNlRXZlbnQoY2hh
ciBwaGFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5z
aWduZWQgY2hhciAqY2F0ZWdvcnlHcm91cEVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiphcmdOYW1lcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYXJnVHlwZXMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9u
ZyAqYXJnVmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIGZsYWdzKQogewotICAgIGFuZ2xlOjpQbGF0Zm9ybSAqcGxhdGZvcm0gPSBBTkdM
RVBsYXRmb3JtQ3VycmVudCgpOworICAgIGF1dG8gKnBsYXRmb3JtID0gQU5HTEVQbGF0Zm9ybUN1
cnJlbnQoKTsKICAgICBBU1NFUlQocGxhdGZvcm0pOwogCi0gICAgZG91YmxlIHRpbWVzdGFtcCA9
IHBsYXRmb3JtLT5tb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBkb3VibGUgdGlt
ZXN0YW1wID0gcGxhdGZvcm0tPm1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZShwbGF0Zm9ybSk7
CiAKICAgICBpZiAodGltZXN0YW1wICE9IDApCiAgICAgewotICAgICAgICBhbmdsZTo6UGxhdGZv
cm06OlRyYWNlRXZlbnRIYW5kbGUgaGFuZGxlID0KLSAgICAgICAgICAgIHBsYXRmb3JtLT5hZGRU
cmFjZUV2ZW50KHBoYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0
ZWdvcnlHcm91cEVuYWJsZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXAsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudW1BcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJnTmFtZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdU
eXBlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ1ZhbHVlcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKTsKKyAgICAgICAgYW5nbGU6
OlRyYWNlRXZlbnRIYW5kbGUgaGFuZGxlID0KKyAgICAgICAgICAgIHBsYXRmb3JtLT5hZGRUcmFj
ZUV2ZW50KHBsYXRmb3JtLCBwaGFzZSwgY2F0ZWdvcnlHcm91cEVuYWJsZWQsIG5hbWUsIGlkLCB0
aW1lc3RhbXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1BcmdzLCBh
cmdOYW1lcywgYXJnVHlwZXMsIGFyZ1ZhbHVlcywgZmxhZ3MpOwogICAgICAgICBBU1NFUlQoaGFu
ZGxlICE9IDApOwogICAgICAgICByZXR1cm4gaGFuZGxlOwogICAgIH0KIAotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxQbGF0Zm9ybTo6VHJhY2VFdmVudEhhbmRsZT4oMCk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PGFuZ2xlOjpUcmFjZUV2ZW50SGFuZGxlPigwKTsKIH0KIAogfSAgLy8gbmFtZXNw
YWNlIGFuZ2xlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9u
L2V2ZW50X3RyYWNlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9ldmVu
dF90cmFjZXIuaAppbmRleCBlZDcwZjI0OWQyOWJkN2JhM2M3ODM4NWM3YjBhNjNmMjUyNzE3ZGUy
Li45YjMwYzc1MGMxZjg2NGU4NDZkOTM4MzA3OTU4MjNhOTg5MzBiNzQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2V2ZW50X3RyYWNlci5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZXZlbnRfdHJhY2VyLmgKQEAgLTEyLDEx
ICsxMiwxNSBAQCBuYW1lc3BhY2UgYW5nbGUKIHsKIAogY29uc3QgdW5zaWduZWQgY2hhciAqR2V0
VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKGNvbnN0IGNoYXIqIG5hbWUpOwotUGxhdGZvcm06OlRy
YWNlRXZlbnRIYW5kbGUgQWRkVHJhY2VFdmVudChjaGFyIHBoYXNlLCBjb25zdCB1bnNpZ25lZCBj
aGFyKiBjYXRlZ29yeUdyb3VwRW5hYmxlZCwgY29uc3QgY2hhciogbmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLCBpbnQg
bnVtQXJncywgY29uc3QgY2hhcioqIGFyZ05hbWVzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBhcmdUeXBlcywgY29uc3QgdW5z
aWduZWQgbG9uZyBsb25nKiBhcmdWYWx1ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MpOwotCithbmdsZTo6VHJhY2VFdmVudEhh
bmRsZSBBZGRUcmFjZUV2ZW50KGNoYXIgcGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNhdGVnb3J5R3JvdXBFbmFibGVkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcg
aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1BcmdzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqYXJnTmFt
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVk
IGNoYXIgKmFyZ1R5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1bnNpZ25lZCBsb25nIGxvbmcgKmFyZ1ZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncyk7CiB9CiAKICNlbmRpZiAgLy8g
Q09NTU9OX0VWRU5UX1RSQUNFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbW1vbi9tYXRodXRpbC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tbW9uL21hdGh1dGlsLmNwcAppbmRleCAzMjg3OWQ0MjlkNzQ3YTFmMTVhNGMwMGVkMzY3MjQ1
MGExNzIxNDRhLi41ZGI5OTdjNjY0MWRhYTNiOWY3YTdjNDNjOTYxZGZkNzU4NTM4Y2E4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdGh1dGlsLmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdGh1dGlsLmNwcApAQCAt
MTQsNiArMTQsOSBAQAogbmFtZXNwYWNlIGdsCiB7CiAKK25hbWVzcGFjZQoreworCiBzdHJ1Y3Qg
UkdCOUU1RGF0YQogewogICAgIHVuc2lnbmVkIGludCBSIDogOTsKQEAgLTIzLDIwICsyNiwyMCBA
QCBzdHJ1Y3QgUkdCOUU1RGF0YQogfTsKIAogLy8gQiBpcyB0aGUgZXhwb25lbnQgYmlhcyAoMTUp
Ci1zdGF0aWMgY29uc3QgaW50IGdfc2hhcmVkZXhwX2JpYXMgPSAxNTsKK2NvbnN0ZXhwciBpbnQg
Z19zaGFyZWRleHBfYmlhcyA9IDE1OwogCiAvLyBOIGlzIHRoZSBudW1iZXIgb2YgbWFudGlzc2Eg
Yml0cyBwZXIgY29tcG9uZW50ICg5KQotc3RhdGljIGNvbnN0IGludCBnX3NoYXJlZGV4cF9tYW50
aXNzYWJpdHMgPSA5OworY29uc3RleHByIGludCBnX3NoYXJlZGV4cF9tYW50aXNzYWJpdHMgPSA5
OwogCiAvLyBFbWF4IGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQgYmlhc2VkIGV4cG9uZW50IHZhbHVl
ICgzMSkKLXN0YXRpYyBjb25zdCBpbnQgZ19zaGFyZWRleHBfbWF4ZXhwb25lbnQgPSAzMTsKLQot
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkICItV2dsb2JhbC1jb25zdHJ1Y3RvcnMiCi1zdGF0aWMgY29uc3QgZmxvYXQgZ19zaGFy
ZWRleHBfbWF4ID0gKChwb3coMi4wZiwgZ19zaGFyZWRleHBfbWFudGlzc2FiaXRzKSAtIDEpIC8K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvdygyLjBmLCBnX3NoYXJl
ZGV4cF9tYW50aXNzYWJpdHMpKSAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcG93KDIuMGYsIGdfc2hhcmVkZXhwX21heGV4cG9uZW50IC0gZ19zaGFyZWRleHBfYmlhcyk7
Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCitjb25zdGV4cHIgaW50IGdfc2hhcmVkZXhw
X21heGV4cG9uZW50ID0gMzE7CisKK2NvbnN0ZXhwciBmbG9hdCBnX3NoYXJlZGV4cF9tYXggPQor
ICAgICgoc3RhdGljX2Nhc3Q8ZmxvYXQ+KDEgPDwgZ19zaGFyZWRleHBfbWFudGlzc2FiaXRzKSAt
IDEpIC8KKyAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KDEgPDwgZ19zaGFyZWRleHBfbWFudGlzc2Fi
aXRzKSkgKgorICAgIHN0YXRpY19jYXN0PGZsb2F0PigxIDw8IChnX3NoYXJlZGV4cF9tYXhleHBv
bmVudCAtIGdfc2hhcmVkZXhwX2JpYXMpKTsKKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQog
CiB1bnNpZ25lZCBpbnQgY29udmVydFJHQkZsb2F0c1RvOTk5RTUoZmxvYXQgcmVkLCBmbG9hdCBn
cmVlbiwgZmxvYXQgYmx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21tb24vbWF0aHV0aWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21t
b24vbWF0aHV0aWwuaAppbmRleCA2MzBiNmMwODg3OGJjNWQzODg0ZjgyNmRlMjg4YmIyYjdlZTYz
ZGQ5Li4wZTQwZTMzMDMzNGNlOGRkYThlODI2OTAxNDUzMmI1M2JiZTcxNGFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdGh1dGlsLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRodXRpbC5oCkBAIC0zMywyOCArMzMs
MTAgQEAgbmFtZXNwYWNlIGdsCiBjb25zdCB1bnNpZ25lZCBpbnQgRmxvYXQzMk9uZSA9IDB4M0Y4
MDAwMDA7CiBjb25zdCB1bnNpZ25lZCBzaG9ydCBGbG9hdDE2T25lID0gMHgzQzAwOwogCi1zdHJ1
Y3QgVmVjdG9yNAotewotICAgIFZlY3RvcjQoKSB7fQotICAgIFZlY3RvcjQoZmxvYXQgeCwgZmxv
YXQgeSwgZmxvYXQgeiwgZmxvYXQgdykgOiB4KHgpLCB5KHkpLCB6KHopLCB3KHcpIHt9Ci0KLSAg
ICBmbG9hdCB4OwotICAgIGZsb2F0IHk7Ci0gICAgZmxvYXQgejsKLSAgICBmbG9hdCB3OwotfTsK
LQotc3RydWN0IFZlY3RvcjIKLXsKLSAgICBWZWN0b3IyKCkge30KLSAgICBWZWN0b3IyKGZsb2F0
IHgsIGZsb2F0IHkpIDogeCh4KSwgeSh5KSB7fQotCi0gICAgZmxvYXQgeDsKLSAgICBmbG9hdCB5
OwotfTsKLQotaW5saW5lIGJvb2wgaXNQb3cyKGludCB4KQordGVtcGxhdGU8dHlwZW5hbWUgVD4K
K2lubGluZSBib29sIGlzUG93MihUIHgpCiB7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2lu
dGVncmFsPFQ+Ojp2YWx1ZSwgImlzUG93MiBtdXN0IGJlIGNhbGxlZCBvbiBhbiBpbnRlZ2VyIHR5
cGUuIik7CiAgICAgcmV0dXJuICh4ICYgKHggLSAxKSkgPT0gMCAmJiAoeCAhPSAwKTsKIH0KIApA
QCAtNjMyLDYgKzYxNCwyMiBAQCBzdHJ1Y3QgSW5kZXhSYW5nZQogICAgIHNpemVfdCB2ZXJ0ZXhJ
bmRleENvdW50OwogfTsKIAorLy8gQ29tYmluZSBhIGZsb2F0aW5nLXBvaW50IHZhbHVlIHJlcHJl
c2VudGluZyBhIG1hbnRpc3NhICh4KSBhbmQgYW4gaW50ZWdlciBleHBvbmVudCAoZXhwKSBpbnRv
IGEKKy8vIGZsb2F0aW5nLXBvaW50IHZhbHVlLiBBcyBpbiBHTFNMIGxkZXhwKCkgYnVpbHQtaW4u
CitpbmxpbmUgZmxvYXQgTGRleHAoZmxvYXQgeCwgaW50IGV4cCkKK3sKKyAgICBpZiAoZXhwID4g
MTI4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+Ojpp
bmZpbml0eSgpOworICAgIH0KKyAgICBpZiAoZXhwIDwgLTEyNikKKyAgICB7CisgICAgICAgIHJl
dHVybiAwLjBmOworICAgIH0KKyAgICBkb3VibGUgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8ZG91Ymxl
Pih4KSAqIHN0ZDo6cG93KDIuMCwgc3RhdGljX2Nhc3Q8ZG91YmxlPihleHApKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlc3VsdCk7Cit9CisKIC8vIEZpcnN0LCBib3RoIG5vcm1h
bGl6ZWQgZmxvYXRpbmctcG9pbnQgdmFsdWVzIGFyZSBjb252ZXJ0ZWQgaW50byAxNi1iaXQgaW50
ZWdlciB2YWx1ZXMuCiAvLyBUaGVuLCB0aGUgcmVzdWx0cyBhcmUgcGFja2VkIGludG8gdGhlIHJl
dHVybmVkIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLgogLy8gVGhlIGZpcnN0IGZsb2F0IHZhbHVl
IHdpbGwgYmUgd3JpdHRlbiB0byB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB0aGUgb3V0
cHV0OwpAQCAtNjg3LDYgKzY4NSw4NiBAQCBpbmxpbmUgdm9pZCB1bnBhY2tVbm9ybTJ4MTYodWlu
dDMyX3QgdSwgZmxvYXQgKmYxLCBmbG9hdCAqZjIpCiAgICAgKmYyID0gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KG1vc3RTaWduaWZpY2FudEJpdHMpIC8gNjU1MzUuMGY7CiB9CiAKKy8vIEhlbHBlciBmdW5j
dGlvbnMgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbmx5IGhlcmUuCituYW1lc3BhY2UgcHJpdgorewor
CitpbmxpbmUgdWludDhfdCBUb1BhY2tlZFVub3JtOChmbG9hdCBmKQoreworICAgIHJldHVybiBz
dGF0aWNfY2FzdDx1aW50OF90Pihyb3VuZGYoY2xhbXAoZiwgMC4wZiwgMS4wZikgKiAyNTUuMGYp
KTsKK30KKworaW5saW5lIGludDhfdCBUb1BhY2tlZFNub3JtOChmbG9hdCBmKQoreworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ4X3Q+KHJvdW5kZihjbGFtcChmLCAtMS4wZiwgMS4wZikgKiAx
MjcuMGYpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHByaXYKKworLy8gUGFja3MgNCBub3JtYWxp
emVkIHVuc2lnbmVkIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB0byBhIHNpbmdsZSAzMi1iaXQgdW5z
aWduZWQgaW50ZWdlci4gV29ya3MKKy8vIHNpbWlsYXJseSB0byBwYWNrVW5vcm0yeDE2LiBUaGUg
ZmxvYXRzIGFyZSBjbGFtcGVkIHRvIHRoZSByYW5nZSAwLjAgdG8gMS4wLCBhbmQgd3JpdHRlbiB0
byB0aGUKKy8vIHVuc2lnbmVkIGludGVnZXIgc3RhcnRpbmcgZnJvbSB0aGUgbGVhc3Qgc2lnbmlm
aWNhbnQgYml0cy4KK2lubGluZSB1aW50MzJfdCBQYWNrVW5vcm00eDgoZmxvYXQgZjEsIGZsb2F0
IGYyLCBmbG9hdCBmMywgZmxvYXQgZjQpCit7CisgICAgdWludDhfdCBiaXRzWzRdOworICAgIGJp
dHNbMF0gICAgICAgICA9IHByaXY6OlRvUGFja2VkVW5vcm04KGYxKTsKKyAgICBiaXRzWzFdICAg
ICAgICAgPSBwcml2OjpUb1BhY2tlZFVub3JtOChmMik7CisgICAgYml0c1syXSAgICAgICAgID0g
cHJpdjo6VG9QYWNrZWRVbm9ybTgoZjMpOworICAgIGJpdHNbM10gICAgICAgICA9IHByaXY6OlRv
UGFja2VkVW5vcm04KGY0KTsKKyAgICB1aW50MzJfdCByZXN1bHQgPSAwdTsKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDQ7ICsraSkKKyAgICB7CisgICAgICAgIGludCBzaGlmdCA9IGkgKiA4Owor
ICAgICAgICByZXN1bHQgfD0gKHN0YXRpY19jYXN0PHVpbnQzMl90PihiaXRzW2ldKSA8PCBzaGlm
dCk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIFVucGFja3MgNCBub3JtYWxp
emVkIHVuc2lnbmVkIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBmcm9tIGEgc2luZ2xlIDMyLWJpdCB1
bnNpZ25lZCBpbnRlZ2VyIGludG8gZi4KKy8vIFdvcmtzIHNpbWlsYXJseSB0byB1bnBhY2tVbm9y
bTJ4MTYuIFRoZSBmbG9hdHMgYXJlIHVucGFja2VkIHN0YXJ0aW5nIGZyb20gdGhlIGxlYXN0IHNp
Z25pZmljYW50CisvLyBiaXRzLgoraW5saW5lIHZvaWQgVW5wYWNrVW5vcm00eDgodWludDMyX3Qg
dSwgZmxvYXQgKmYpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgewor
ICAgICAgICBpbnQgc2hpZnQgICAgPSBpICogODsKKyAgICAgICAgdWludDhfdCBiaXRzID0gc3Rh
dGljX2Nhc3Q8dWludDhfdD4oKHUgPj4gc2hpZnQpICYgMHhGRik7CisgICAgICAgIGZbaV0gICAg
ICAgICA9IHN0YXRpY19jYXN0PGZsb2F0PihiaXRzKSAvIDI1NS4wZjsKKyAgICB9Cit9CisKKy8v
IFBhY2tzIDQgbm9ybWFsaXplZCBzaWduZWQgZmxvYXRpbmctcG9pbnQgdmFsdWVzIHRvIGEgc2lu
Z2xlIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiBUaGUgZmxvYXRzCisvLyBhcmUgY2xhbXBlZCB0
byB0aGUgcmFuZ2UgLTEuMCB0byAxLjAsIGFuZCB3cml0dGVuIHRvIHRoZSB1bnNpZ25lZCBpbnRl
Z2VyIHN0YXJ0aW5nIGZyb20gdGhlIGxlYXN0CisvLyBzaWduaWZpY2FudCBiaXRzLgoraW5saW5l
IHVpbnQzMl90IFBhY2tTbm9ybTR4OChmbG9hdCBmMSwgZmxvYXQgZjIsIGZsb2F0IGYzLCBmbG9h
dCBmNCkKK3sKKyAgICBpbnQ4X3QgYml0c1s0XTsKKyAgICBiaXRzWzBdICAgICAgICAgPSBwcml2
OjpUb1BhY2tlZFNub3JtOChmMSk7CisgICAgYml0c1sxXSAgICAgICAgID0gcHJpdjo6VG9QYWNr
ZWRTbm9ybTgoZjIpOworICAgIGJpdHNbMl0gICAgICAgICA9IHByaXY6OlRvUGFja2VkU25vcm04
KGYzKTsKKyAgICBiaXRzWzNdICAgICAgICAgPSBwcml2OjpUb1BhY2tlZFNub3JtOChmNCk7Cisg
ICAgdWludDMyX3QgcmVzdWx0ID0gMHU7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kp
CisgICAgeworICAgICAgICBpbnQgc2hpZnQgPSBpICogODsKKyAgICAgICAgcmVzdWx0IHw9ICgo
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJpdHNbaV0pICYgMHhGRikgPDwgc2hpZnQpOworICAgIH0K
KyAgICByZXR1cm4gcmVzdWx0OworfQorCisvLyBVbnBhY2tzIDQgbm9ybWFsaXplZCBzaWduZWQg
ZmxvYXRpbmctcG9pbnQgdmFsdWVzIGZyb20gYSBzaW5nbGUgMzItYml0IHVuc2lnbmVkIGludGVn
ZXIgaW50byBmLgorLy8gV29ya3Mgc2ltaWxhcmx5IHRvIHVucGFja1Nub3JtMngxNi4gVGhlIGZs
b2F0cyBhcmUgdW5wYWNrZWQgc3RhcnRpbmcgZnJvbSB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQKKy8v
IGJpdHMsIGFuZCBjbGFtcGVkIHRvIHRoZSByYW5nZSAtMS4wIHRvIDEuMC4KK2lubGluZSB2b2lk
IFVucGFja1Nub3JtNHg4KHVpbnQzMl90IHUsIGZsb2F0ICpmKQoreworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgNDsgKytpKQorICAgIHsKKyAgICAgICAgaW50IHNoaWZ0ICAgPSBpICogODsKKyAg
ICAgICAgaW50OF90IGJpdHMgPSBzdGF0aWNfY2FzdDxpbnQ4X3Q+KCh1ID4+IHNoaWZ0KSAmIDB4
RkYpOworICAgICAgICBmW2ldICAgICAgICA9IGNsYW1wKHN0YXRpY19jYXN0PGZsb2F0PihiaXRz
KSAvIDEyNy4wZiwgLTEuMGYsIDEuMGYpOworICAgIH0KK30KKwogLy8gUmV0dXJucyBhbiB1bnNp
Z25lZCBpbnRlZ2VyIG9idGFpbmVkIGJ5IGNvbnZlcnRpbmcgdGhlIHR3byBmbG9hdGluZy1wb2lu
dCB2YWx1ZXMgdG8gdGhlIDE2LWJpdAogLy8gZmxvYXRpbmctcG9pbnQgcmVwcmVzZW50YXRpb24g
Zm91bmQgaW4gdGhlIE9wZW5HTCBFUyBTcGVjaWZpY2F0aW9uLCBhbmQgdGhlbiBwYWNraW5nIHRo
ZXNlCiAvLyB0d28gMTYtYml0IGludGVnZXJzIGludG8gYSAzMi1iaXQgdW5zaWduZWQgaW50ZWdl
ci4KQEAgLTcxMyw2ICs3OTEsOTEgQEAgaW5saW5lIHZvaWQgdW5wYWNrSGFsZjJ4MTYodWludDMy
X3QgdSwgZmxvYXQgKmYxLCBmbG9hdCAqZjIpCiAgICAgKmYyID0gZmxvYXQxNlRvRmxvYXQzMiht
b3N0U2lnbmlmaWNhbnRCaXRzKTsKIH0KIAorLy8gUmV2ZXJzZSB0aGUgb3JkZXIgb2YgdGhlIGJp
dHMuCitpbmxpbmUgdWludDMyX3QgQml0ZmllbGRSZXZlcnNlKHVpbnQzMl90IHZhbHVlKQorewor
ICAgIC8vIFRPRE8ob2V0dWFob0BudmlkaWEuY29tKTogT3B0aW1pemUgdGhpcyBpZiBuZWVkZWQu
IFRoZXJlIGRvbid0IHNlZW0gdG8gYmUgY29tcGlsZXIgaW50cmluc2ljcworICAgIC8vIGZvciB0
aGlzLCBhbmQgcmlnaHQgbm93IGl0J3Mgbm90IHVzZWQgaW4gcGVyZm9ybWFuY2UtY3JpdGljYWwg
cGF0aHMuCisgICAgdWludDMyX3QgcmVzdWx0ID0gMHU7CisgICAgZm9yIChzaXplX3QgaiA9IDB1
OyBqIDwgMzJ1OyArK2opCisgICAgeworICAgICAgICByZXN1bHQgfD0gKCgodmFsdWUgPj4gaikg
JiAxdSkgPDwgKDMxdSAtIGopKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8g
Q291bnQgdGhlIDEgYml0cy4KK2lubGluZSBpbnQgQml0Q291bnQodW5zaWduZWQgaW50IGJpdHMp
Cit7CisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihf
X3BvcGNudChiaXRzKSk7CisjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorICAgIHJldHVybiBfX2J1
aWx0aW5fcG9wY291bnQoYml0cyk7CisjZWxzZQorI2Vycm9yIFBsZWFzZSBpbXBsZW1lbnQgYml0
IGNvdW50IGZvciB5b3VyIHBsYXRmb3JtIQorI2VuZGlmCit9CisKKy8vIFJldHVybiB0aGUgaW5k
ZXggb2YgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBzZXQuIEluZGV4aW5nIGlzIHN1Y2ggdGhh
dCBiaXQgMCBpcyB0aGUgbGVhc3QKKy8vIHNpZ25pZmljYW50IGJpdC4KK2lubGluZSB1bnNpZ25l
ZCBsb25nIFNjYW5Gb3J3YXJkKHVuc2lnbmVkIGxvbmcgYml0cykKK3sKKyAgICBBU1NFUlQoYml0
cyAhPSAwdSk7CisjaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9XSU5ET1dTKQorICAgIHVuc2ln
bmVkIGxvbmcgZmlyc3RCaXRJbmRleCA9IDB1bDsKKyAgICB1bnNpZ25lZCBjaGFyIHJldCAgICAg
ICAgICAgPSBfQml0U2NhbkZvcndhcmQoJmZpcnN0Qml0SW5kZXgsIGJpdHMpOworICAgIEFTU0VS
VChyZXQgIT0gMHUpOworICAgIHJldHVybiBmaXJzdEJpdEluZGV4OworI2VsaWYgZGVmaW5lZChB
TkdMRV9QTEFURk9STV9QT1NJWCkKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
Zz4oX19idWlsdGluX2N0emwoYml0cykpOworI2Vsc2UKKyNlcnJvciBQbGVhc2UgaW1wbGVtZW50
IGJpdC1zY2FuLWZvcndhcmQgZm9yIHlvdXIgcGxhdGZvcm0hCisjZW5kaWYKK30KKworLy8gUmV0
dXJuIHRoZSBpbmRleCBvZiB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgc2V0LiBJbmRleGluZyBp
cyBzdWNoIHRoYXQgYml0IDAgaXMgdGhlIGxlYXN0CisvLyBzaWduaWZpY2FudCBiaXQuCitpbmxp
bmUgdW5zaWduZWQgbG9uZyBTY2FuUmV2ZXJzZSh1bnNpZ25lZCBsb25nIGJpdHMpCit7CisgICAg
QVNTRVJUKGJpdHMgIT0gMHUpOworI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fV0lORE9XUykK
KyAgICB1bnNpZ25lZCBsb25nIGxhc3RCaXRJbmRleCA9IDB1bDsKKyAgICB1bnNpZ25lZCBjaGFy
IHJldCAgICAgICAgICA9IF9CaXRTY2FuUmV2ZXJzZSgmbGFzdEJpdEluZGV4LCBiaXRzKTsKKyAg
ICBBU1NFUlQocmV0ICE9IDB1KTsKKyAgICByZXR1cm4gbGFzdEJpdEluZGV4OworI2VsaWYgZGVm
aW5lZChBTkdMRV9QTEFURk9STV9QT1NJWCkKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZz4oc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogQ0hBUl9CSVQgLSAxIC0gX19idWlsdGlu
X2NsemwoYml0cykpOworI2Vsc2UKKyNlcnJvciBQbGVhc2UgaW1wbGVtZW50IGJpdC1zY2FuLXJl
dmVyc2UgZm9yIHlvdXIgcGxhdGZvcm0hCisjZW5kaWYKK30KKworLy8gUmV0dXJucyAtMSBvbiAw
LCBvdGhlcndpc2UgdGhlIGluZGV4IG9mIHRoZSBsZWFzdCBzaWduaWZpY2FudCAxIGJpdCBhcyBp
biBHTFNMLgoraW5saW5lIGludCBGaW5kTFNCKHVpbnQzMl90IGJpdHMpCit7CisgICAgaWYgKGJp
dHMgPT0gMHUpCisgICAgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KFNjYW5Gb3J3YXJkKGJpdHMpKTsK
KyAgICB9Cit9CisKKy8vIFJldHVybnMgLTEgb24gMCwgb3RoZXJ3aXNlIHRoZSBpbmRleCBvZiB0
aGUgbW9zdCBzaWduaWZpY2FudCAxIGJpdCBhcyBpbiBHTFNMLgoraW5saW5lIGludCBGaW5kTVNC
KHVpbnQzMl90IGJpdHMpCit7CisgICAgaWYgKGJpdHMgPT0gMHUpCisgICAgeworICAgICAgICBy
ZXR1cm4gLTE7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxpbnQ+KFNjYW5SZXZlcnNlKGJpdHMpKTsKKyAgICB9Cit9CisKIC8vIFJldHVybnMgd2hl
dGhlciB0aGUgYXJndW1lbnQgaXMgTm90IGEgTnVtYmVyLgogLy8gSUVFRSA3NTQgc2luZ2xlIHBy
ZWNpc2lvbiBOYU4gcmVwcmVzZW50YXRpb246IEV4cG9uZW50KDggYml0cykgLSAyNTUsIE1hbnRp
c3NhKDIzIGJpdHMpIC0gbm9uLXplcm8uCiBpbmxpbmUgYm9vbCBpc05hTihmbG9hdCBmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRodXRpbF91bml0
dGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdGh1dGlsX3Vu
aXR0ZXN0LmNwcAppbmRleCBiZjQ0M2I3MmI1Zjc0NTJlYTc2NmJiNTk5ZjYxMjU4YjY2Y2YwZmMy
Li5lZDg2OGE5MTQ5MGUzMWFlYjcyNGE4MWNlZDAzNDEyMDFlNjUwYTViIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdGh1dGlsX3VuaXR0ZXN0LmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdGh1dGlsX3VuaXR0ZXN0
LmNwcApAQCAtMTQyLDYgKzE0Miw1NiBAQCBURVNUKE1hdGhVdGlsVGVzdCwgcGFja0FuZFVucGFj
a0hhbGYyeDE2KQogICAgIH0KIH0KIAorLy8gVGVzdCB0aGUgY29ycmVjdG5lc3Mgb2YgcGFja1Vu
b3JtNHg4IGFuZCB1bnBhY2tVbm9ybTR4OCBmdW5jdGlvbnMuCisvLyBGb3IgZmxvYXRzIGYxIHRv
IGY0LCB1bnBhY2tVbm9ybTR4OChwYWNrVW5vcm00eDgoZjEsIGYyLCBmMywgZjQpKSBzaG91bGQg
YmUgc2FtZSBhcyBmMSB0byBmNC4KK1RFU1QoTWF0aFV0aWxUZXN0LCBwYWNrQW5kVW5wYWNrVW5v
cm00eDgpCit7CisgICAgY29uc3QgZmxvYXQgaW5wdXRbNV1bNF0gPSB7ezAuMGYsIDAuMGYsIDAu
MGYsIDAuMGZ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsxLjBmLCAxLjBmLCAx
LjBmLCAxLjBmfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LTEuMGYsIDEuMGYs
IC0xLjBmLCAxLjBmfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LTEuMGYsIC0x
LjBmLCAtMS4wZiwgLTEuMGZ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHs2NC4w
ZiAvIDI1NS4wZiwgMTI4LjBmIC8gMjU1LjBmLCAzMi4wZiAvIDI1NS4wZiwgMTYuMGYgLyAyNTUu
MGZ9fTsKKworICAgIGNvbnN0IGZsb2F0IGZsb2F0RmF1bHRUb2xlcmFuY2UgPSAwLjAwNWY7Cisg
ICAgZmxvYXQgb3V0cHV0VmFsc1s0XTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNTsg
aSsrKQorICAgIHsKKyAgICAgICAgVW5wYWNrVW5vcm00eDgoUGFja1Vub3JtNHg4KGlucHV0W2ld
WzBdLCBpbnB1dFtpXVsxXSwgaW5wdXRbaV1bMl0sIGlucHV0W2ldWzNdKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgb3V0cHV0VmFscyk7CisgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwg
NDsgaisrKQorICAgICAgICB7CisgICAgICAgICAgICBmbG9hdCBleHBlY3RlZCA9IGlucHV0W2ld
W2pdIDwgMC4wZiA/IDAuMGYgOiBpbnB1dFtpXVtqXTsKKyAgICAgICAgICAgIEVYUEVDVF9ORUFS
KGV4cGVjdGVkLCBvdXRwdXRWYWxzW2pdLCBmbG9hdEZhdWx0VG9sZXJhbmNlKTsKKyAgICAgICAg
fQorICAgIH0KK30KKworLy8gVGVzdCB0aGUgY29ycmVjdG5lc3Mgb2YgcGFja1Nub3JtNHg4IGFu
ZCB1bnBhY2tTbm9ybTR4OCBmdW5jdGlvbnMuCisvLyBGb3IgZmxvYXRzIGYxIHRvIGY0LCB1bnBh
Y2tTbm9ybTR4OChwYWNrU25vcm00eDgoZjEsIGYyLCBmMywgZjQpKSBzaG91bGQgYmUgc2FtZSBh
cyBmMSB0byBmNC4KK1RFU1QoTWF0aFV0aWxUZXN0LCBwYWNrQW5kVW5wYWNrU25vcm00eDgpCit7
CisgICAgY29uc3QgZmxvYXQgaW5wdXRbNV1bNF0gPSB7ezAuMGYsIDAuMGYsIDAuMGYsIDAuMGZ9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsxLjBmLCAxLjBmLCAxLjBmLCAxLjBm
fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LTEuMGYsIDEuMGYsIC0xLjBmLCAx
LjBmfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LTEuMGYsIC0xLjBmLCAtMS4w
ZiwgLTEuMGZ9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHs2NC4wZiAvIDEyNy4w
ZiwgLTguMGYgLyAxMjcuMGYsIDMyLjBmIC8gMTI3LjBmLCAxNi4wZiAvIDEyNy4wZn19OworCisg
ICAgY29uc3QgZmxvYXQgZmxvYXRGYXVsdFRvbGVyYW5jZSA9IDAuMDFmOworICAgIGZsb2F0IG91
dHB1dFZhbHNbNF07CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDU7IGkrKykKKyAgICB7
CisgICAgICAgIFVucGFja1Nub3JtNHg4KFBhY2tTbm9ybTR4OChpbnB1dFtpXVswXSwgaW5wdXRb
aV1bMV0sIGlucHV0W2ldWzJdLCBpbnB1dFtpXVszXSksCisgICAgICAgICAgICAgICAgICAgICAg
IG91dHB1dFZhbHMpOworICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IDQ7IGorKykKKyAg
ICAgICAgeworICAgICAgICAgICAgZmxvYXQgZXhwZWN0ZWQgPSBpbnB1dFtpXVtqXTsKKyAgICAg
ICAgICAgIEVYUEVDVF9ORUFSKGV4cGVjdGVkLCBvdXRwdXRWYWxzW2pdLCBmbG9hdEZhdWx0VG9s
ZXJhbmNlKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogLy8gVGVzdCB0aGUgY29ycmVjdG5lc3Mg
b2YgZ2w6OmlzTmFOIGZ1bmN0aW9uLgogVEVTVChNYXRoVXRpbFRlc3QsIGlzTmFOKQogewpAQCAt
MjA3LDQgKzI1Nyw2NiBAQCBURVNUKE1hdGhVdGlsVGVzdCwgQ2hlY2tlZFJvdW5kVXBJbnZhbGlk
KQogICAgIEFTU0VSVF9GQUxTRShjaGVja2VkTGltaXQuSXNWYWxpZCgpKTsKIH0KIAorLy8gVGVz
dCBCaXRmaWVsZFJldmVyc2Ugd2hpY2ggcmV2ZXJzZXMgdGhlIG9yZGVyIG9mIHRoZSBiaXRzIGlu
IGFuIGludGVnZXIuCitURVNUKE1hdGhVdGlsVGVzdCwgQml0ZmllbGRSZXZlcnNlKQoreworICAg
IEVYUEVDVF9FUSgwdSwgZ2w6OkJpdGZpZWxkUmV2ZXJzZSgwdSkpOworICAgIEVYUEVDVF9FUSgw
eDgwMDAwMDAwdSwgZ2w6OkJpdGZpZWxkUmV2ZXJzZSgxdSkpOworICAgIEVYUEVDVF9FUSgweDF1
LCBnbDo6Qml0ZmllbGRSZXZlcnNlKDB4ODAwMDAwMDB1KSk7CisgICAgdWludDMyX3QgYml0cyAg
ICAgPSAoMXUgPDwgNHUpIHwgKDF1IDw8IDd1KTsKKyAgICB1aW50MzJfdCByZXZlcnNlZCA9ICgx
dSA8PCAoMzF1IC0gNHUpKSB8ICgxdSA8PCAoMzF1IC0gN3UpKTsKKyAgICBFWFBFQ1RfRVEocmV2
ZXJzZWQsIGdsOjpCaXRmaWVsZFJldmVyc2UoYml0cykpOworfQorCisvLyBUZXN0IEJpdENvdW50
LCB3aGljaCBjb3VudHMgMSBiaXRzIGluIGFuIGludGVnZXIuCitURVNUKE1hdGhVdGlsVGVzdCwg
Qml0Q291bnQpCit7CisgICAgRVhQRUNUX0VRKDAsIGdsOjpCaXRDb3VudCgwdSkpOworICAgIEVY
UEVDVF9FUSgzMiwgZ2w6OkJpdENvdW50KDB4RkZGRkZGRkZ1KSk7CisgICAgRVhQRUNUX0VRKDEw
LCBnbDo6Qml0Q291bnQoMHgxNzEwMzEyMXUpKTsKK30KKworLy8gVGVzdCBTY2FuRm9yd2FyZCwg
d2hpY2ggc2NhbnMgZm9yIHRoZSBsZWFzdCBzaWduaWZpY2FudCAxIGJpdCBmcm9tIGEgbm9uLXpl
cm8gaW50ZWdlci4KK1RFU1QoTWF0aFV0aWxUZXN0LCBTY2FuRm9yd2FyZCkKK3sKKyAgICBFWFBF
Q1RfRVEoMHVsLCBnbDo6U2NhbkZvcndhcmQoMXVsKSk7CisgICAgRVhQRUNUX0VRKDE2dWwsIGds
OjpTY2FuRm9yd2FyZCgweDgwMDEwMDAwdWwpKTsKKyAgICBFWFBFQ1RfRVEoMzF1bCwgZ2w6OlNj
YW5Gb3J3YXJkKDB4ODAwMDAwMDB1bCkpOworfQorCisvLyBUZXN0IFNjYW5SZXZlcnNlLCB3aGlj
aCBzY2FucyBmb3IgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgMSBiaXQgZnJvbSBhIG5vbi16ZXJvIGlu
dGVnZXIuCitURVNUKE1hdGhVdGlsVGVzdCwgU2NhblJldmVyc2UpCit7CisgICAgRVhQRUNUX0VR
KDB1bCwgZ2w6OlNjYW5SZXZlcnNlKDF1bCkpOworICAgIEVYUEVDVF9FUSgxNnVsLCBnbDo6U2Nh
blJldmVyc2UoMHgwMDAxMDAzMHVsKSk7CisgICAgRVhQRUNUX0VRKDMxdWwsIGdsOjpTY2FuUmV2
ZXJzZSgweDgwMDAwMDAwdWwpKTsKK30KKworLy8gVGVzdCBGaW5kTFNCLCB3aGljaCBmaW5kcyB0
aGUgbGVhc3Qgc2lnbmlmaWNhbnQgMSBiaXQuCitURVNUKE1hdGhVdGlsVGVzdCwgRmluZExTQikK
K3sKKyAgICBFWFBFQ1RfRVEoLTEsIGdsOjpGaW5kTFNCKDB1KSk7CisgICAgRVhQRUNUX0VRKDAs
IGdsOjpGaW5kTFNCKDF1KSk7CisgICAgRVhQRUNUX0VRKDE2LCBnbDo6RmluZExTQigweDgwMDEw
MDAwdSkpOworICAgIEVYUEVDVF9FUSgzMSwgZ2w6OkZpbmRMU0IoMHg4MDAwMDAwMHUpKTsKK30K
KworLy8gVGVzdCBGaW5kTVNCLCB3aGljaCBmaW5kcyB0aGUgbW9zdCBzaWduaWZpY2FudCAxIGJp
dC4KK1RFU1QoTWF0aFV0aWxUZXN0LCBGaW5kTVNCKQoreworICAgIEVYUEVDVF9FUSgtMSwgZ2w6
OkZpbmRNU0IoMHUpKTsKKyAgICBFWFBFQ1RfRVEoMCwgZ2w6OkZpbmRNU0IoMXUpKTsKKyAgICBF
WFBFQ1RfRVEoMTYsIGdsOjpGaW5kTVNCKDB4MDAwMTAwMzB1KSk7CisgICAgRVhQRUNUX0VRKDMx
LCBnbDo6RmluZE1TQigweDgwMDAwMDAwdSkpOworfQorCisvLyBUZXN0IExkZXhwLCB3aGljaCBj
b21iaW5lcyBtYW50aXNzYSBhbmQgZXhwb25lbnQgaW50byBhIGZsb2F0aW5nLXBvaW50IG51bWJl
ci4KK1RFU1QoTWF0aFV0aWxUZXN0LCBMZGV4cCkKK3sKKyAgICBFWFBFQ1RfRVEoMi41ZiwgTGRl
eHAoMC42MjVmLCAyKSk7CisgICAgRVhQRUNUX0VRKC01LjBmLCBMZGV4cCgtMC42MjVmLCAzKSk7
CisgICAgRVhQRUNUX0VRKHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpLCBM
ZGV4cCgwLjYyNWYsIDEyOSkpOworICAgIEVYUEVDVF9FUSgwLjBmLCBMZGV4cCgxLjBmLCAtMTI5
KSk7Cit9CisKIH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vcGxhdGZvcm0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21tb24vcGxhdGZvcm0uaAppbmRleCAxNWRhYzQ1NmMwMWY1NjUwY2EyNmVh
NWNkYjk0OWMxYzI4YjQyN2Q0Li4yZmU1NWU4ODBkYTg1MDhiYTcxMWE4OGZhMGViMTg1YjdiODRh
MDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3BsYXRm
b3JtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9wbGF0Zm9ybS5o
CkBAIC02NSw2ICs2NSwxMCBAQAogIyAgICAgICBpbmNsdWRlIDxkM2Rjb21waWxlci5oPgogIyAg
IGVuZGlmCiAKKyNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0Q5KSB8fCBkZWZpbmVkKEFOR0xF
X0VOQUJMRV9EM0QxMSkKKyNpbmNsdWRlIDx3cmwuaD4KKyNlbmRpZgorCiAjICAgaWYgZGVmaW5l
ZChBTkdMRV9FTkFCTEVfV0lORE9XU19TVE9SRSkKICMgICAgICAgaW5jbHVkZSA8ZHhnaTFfMy5o
PgogIyAgICAgICBpZiBkZWZpbmVkKF9ERUJVRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtX3V0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tbW9uL3N5c3RlbV91dGlscy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhYzI0ZjcwODExMWIx
YTY4MWYwZjdkMmVjOGIxMDFlNmViNDIwZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N5c3RlbV91dGlscy5oCkBAIC0wLDAgKzEsMjYgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCisvLyBzeXN0ZW1fdXRpbHMuaDogZGVjbGFyYXRpb24gb2YgT1Mtc3Bl
Y2lmaWMgdXRpbGl0eSBmdW5jdGlvbnMKKworI2lmbmRlZiBDT01NT05fU1lTVEVNX1VUSUxTX0hf
CisjZGVmaW5lIENPTU1PTl9TWVNURU1fVVRJTFNfSF8KKworI2luY2x1ZGUgImNvbW1vbi9hbmds
ZXV0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL09wdGlvbmFsLmgiCisKK25hbWVzcGFjZSBhbmds
ZQoreworCitjb25zdCBjaGFyICpHZXRFeGVjdXRhYmxlUGF0aCgpOworY29uc3QgY2hhciAqR2V0
RXhlY3V0YWJsZURpcmVjdG9yeSgpOworY29uc3QgY2hhciAqR2V0U2hhcmVkTGlicmFyeUV4dGVu
c2lvbigpOworT3B0aW9uYWw8c3RkOjpzdHJpbmc+IEdldENXRCgpOworYm9vbCBTZXRDV0QoY29u
c3QgY2hhciAqZGlyTmFtZSk7CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQorCisjZW5kaWYgIC8v
IENPTU1PTl9TWVNURU1fVVRJTFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21tb24vc3lzdGVtX3V0aWxzX2xpbnV4LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtX3V0aWxzX2xpbnV4LmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NTA0
YzZhNGMyODViNGUzNzZmMzFjOTkzNzIxNTIyMjA3NWQ1ZmM1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zeXN0ZW1fdXRpbHNfbGludXguY3Bw
CkBAIC0wLDAgKzEsODQgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBzeXN0ZW1fdXRpbHNfbGludXgu
Y3BwOiBJbXBsZW1lbnRhdGlvbiBvZiBPUy1zcGVjaWZpYyBmdW5jdGlvbnMgZm9yIExpbnV4CisK
KyNpbmNsdWRlICJzeXN0ZW1fdXRpbHMuaCIKKworI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5j
bHVkZSA8c3lzL3RpbWUuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDx1bmlz
dGQuaD4KKworI2luY2x1ZGUgPGFycmF5PgorCituYW1lc3BhY2UgYW5nbGUKK3sKKworbmFtZXNw
YWNlCit7CisKK3N0ZDo6c3RyaW5nIEdldEV4ZWN1dGFibGVQYXRoSW1wbCgpCit7CisgICAgLy8g
V2UgY2Fubm90IHVzZSBsc3RhdCB0byBnZXQgdGhlIHNpemUgb2YgL3Byb2Mvc2VsZi9leGUgYXMg
aXQgYWx3YXlzIHJldHVybnMgMAorICAgIC8vIHNvIHdlIGp1c3QgdXNlIGEgYmlnIGJ1ZmZlciBh
bmQgaG9wZSB0aGUgcGF0aCBmaXRzIGluIGl0LgorICAgIGNoYXIgcGF0aFs0MDk2XTsKKworICAg
IHNzaXplX3QgcmVzdWx0ID0gcmVhZGxpbmsoIi9wcm9jL3NlbGYvZXhlIiwgcGF0aCwgc2l6ZW9m
KHBhdGgpIC0gMSk7CisgICAgaWYgKHJlc3VsdCA8IDAgfHwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihy
ZXN1bHQpID49IHNpemVvZihwYXRoKSAtIDEpCisgICAgeworICAgICAgICByZXR1cm4gIiI7Cisg
ICAgfQorCisgICAgcGF0aFtyZXN1bHRdID0gJ1wwJzsKKyAgICByZXR1cm4gcGF0aDsKK30KKwor
c3RkOjpzdHJpbmcgR2V0RXhlY3V0YWJsZURpcmVjdG9yeUltcGwoKQoreworICAgIHN0ZDo6c3Ry
aW5nIGV4ZWN1dGFibGVQYXRoID0gR2V0RXhlY3V0YWJsZVBhdGgoKTsKKyAgICBzaXplX3QgbGFz
dFBhdGhTZXBMb2MgICAgICA9IGV4ZWN1dGFibGVQYXRoLmZpbmRfbGFzdF9vZigiLyIpOworICAg
IHJldHVybiAobGFzdFBhdGhTZXBMb2MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpID8gZXhlY3V0YWJs
ZVBhdGguc3Vic3RyKDAsIGxhc3RQYXRoU2VwTG9jKSA6ICIiOworfQorCit9ICAvLyBhbm9ueW1v
dXMgbmFtZXNwYWNlCisKK2NvbnN0IGNoYXIgKkdldEV4ZWN1dGFibGVQYXRoKCkKK3sKKyAgICAv
LyBUT0RPKGptYWRpbGwpOiBNYWtlIGdsb2JhbCBzdGF0aWMgc3RyaW5nIHRocmVhZC1zYWZlLgor
ICAgIGNvbnN0IHN0YXRpYyBzdGQ6OnN0cmluZyAmZXhlUGF0aCA9IEdldEV4ZWN1dGFibGVQYXRo
SW1wbCgpOworICAgIHJldHVybiBleGVQYXRoLmNfc3RyKCk7Cit9CisKK2NvbnN0IGNoYXIgKkdl
dEV4ZWN1dGFibGVEaXJlY3RvcnkoKQoreworICAgIC8vIFRPRE8oam1hZGlsbCk6IE1ha2UgZ2xv
YmFsIHN0YXRpYyBzdHJpbmcgdGhyZWFkLXNhZmUuCisgICAgY29uc3Qgc3RhdGljIHN0ZDo6c3Ry
aW5nICZleGVEaXIgPSBHZXRFeGVjdXRhYmxlRGlyZWN0b3J5SW1wbCgpOworICAgIHJldHVybiBl
eGVEaXIuY19zdHIoKTsKK30KKworY29uc3QgY2hhciAqR2V0U2hhcmVkTGlicmFyeUV4dGVuc2lv
bigpCit7CisgICAgcmV0dXJuICJzbyI7Cit9CisKK09wdGlvbmFsPHN0ZDo6c3RyaW5nPiBHZXRD
V0QoKQoreworICAgIHN0ZDo6YXJyYXk8Y2hhciwgNDA5Nj4gcGF0aEJ1ZjsKKyAgICBjaGFyICpy
ZXN1bHQgPSBnZXRjd2QocGF0aEJ1Zi5kYXRhKCksIHBhdGhCdWYuc2l6ZSgpKTsKKyAgICBpZiAo
cmVzdWx0ID09IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gT3B0aW9uYWw8c3RkOjpz
dHJpbmc+OjpJbnZhbGlkKCk7CisgICAgfQorICAgIHJldHVybiBzdGQ6OnN0cmluZyhwYXRoQnVm
LmRhdGEoKSk7Cit9CisKK2Jvb2wgU2V0Q1dEKGNvbnN0IGNoYXIgKmRpck5hbWUpCit7CisgICAg
cmV0dXJuIChjaGRpcihkaXJOYW1lKSA9PSAwKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N5c3RlbV91
dGlsc19tYWMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zeXN0ZW1f
dXRpbHNfbWFjLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNzNmMWFhMjU5MWQwZTQ2M2VhNjJiOWFhYTVlZmEw
MDA4MTRkNmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi9zeXN0ZW1fdXRpbHNfbWFjLmNwcApAQCAtMCwwICsxLDg5IEBACisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor
Ly8KKworLy8gc3lzdGVtX3V0aWxzX29zeC5jcHA6IEltcGxlbWVudGF0aW9uIG9mIE9TLXNwZWNp
ZmljIGZ1bmN0aW9ucyBmb3IgT1NYCisKKyNpbmNsdWRlICJzeXN0ZW1fdXRpbHMuaCIKKworI2lu
Y2x1ZGUgPHVuaXN0ZC5oPgorCisjaW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNsdWRlIDxtYWNoLW8v
ZHlsZC5oPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgPGFycmF5PgorCituYW1lc3Bh
Y2UgYW5nbGUKK3sKKworbmFtZXNwYWNlCit7CisKK3N0ZDo6c3RyaW5nIEdldEV4ZWN1dGFibGVQ
YXRoSW1wbCgpCit7CisgICAgc3RkOjpzdHJpbmcgcmVzdWx0OworCisgICAgdWludDMyX3Qgc2l6
ZSA9IDA7CisgICAgX05TR2V0RXhlY3V0YWJsZVBhdGgobnVsbHB0ciwgJnNpemUpOworCisgICAg
c3RkOjp2ZWN0b3I8Y2hhcj4gYnVmZmVyOworICAgIGJ1ZmZlci5yZXNpemUoc2l6ZSArIDEpOwor
CisgICAgX05TR2V0RXhlY3V0YWJsZVBhdGgoYnVmZmVyLmRhdGEoKSwgJnNpemUpOworICAgIGJ1
ZmZlcltzaXplXSA9ICdcMCc7CisKKyAgICBpZiAoIXN0cnJjaHIoYnVmZmVyLmRhdGEoKSwgJy8n
KSkKKyAgICB7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisgICAgcmV0dXJuIGJ1ZmZlci5k
YXRhKCk7Cit9CisKK3N0ZDo6c3RyaW5nIEdldEV4ZWN1dGFibGVEaXJlY3RvcnlJbXBsKCkKK3sK
KyAgICBzdGQ6OnN0cmluZyBleGVjdXRhYmxlUGF0aCA9IEdldEV4ZWN1dGFibGVQYXRoKCk7Cisg
ICAgc2l6ZV90IGxhc3RQYXRoU2VwTG9jICAgICAgPSBleGVjdXRhYmxlUGF0aC5maW5kX2xhc3Rf
b2YoIi8iKTsKKyAgICByZXR1cm4gKGxhc3RQYXRoU2VwTG9jICE9IHN0ZDo6c3RyaW5nOjpucG9z
KSA/IGV4ZWN1dGFibGVQYXRoLnN1YnN0cigwLCBsYXN0UGF0aFNlcExvYykgOiAiIjsKK30KKwor
fSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitjb25zdCBjaGFyICpHZXRFeGVjdXRhYmxlUGF0
aCgpCit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogTWFrZSBnbG9iYWwgc3RhdGljIHN0cmluZyB0
aHJlYWQtc2FmZS4KKyAgICBjb25zdCBzdGF0aWMgc3RkOjpzdHJpbmcgJmV4ZVBhdGggPSBHZXRF
eGVjdXRhYmxlUGF0aEltcGwoKTsKKyAgICByZXR1cm4gZXhlUGF0aC5jX3N0cigpOworfQorCitj
b25zdCBjaGFyICpHZXRFeGVjdXRhYmxlRGlyZWN0b3J5KCkKK3sKKyAgICAvLyBUT0RPKGptYWRp
bGwpOiBNYWtlIGdsb2JhbCBzdGF0aWMgc3RyaW5nIHRocmVhZC1zYWZlLgorICAgIGNvbnN0IHN0
YXRpYyBzdGQ6OnN0cmluZyAmZXhlRGlyID0gR2V0RXhlY3V0YWJsZURpcmVjdG9yeUltcGwoKTsK
KyAgICByZXR1cm4gZXhlRGlyLmNfc3RyKCk7Cit9CisKK2NvbnN0IGNoYXIgKkdldFNoYXJlZExp
YnJhcnlFeHRlbnNpb24oKQoreworICAgIHJldHVybiAiZHlsaWIiOworfQorCitPcHRpb25hbDxz
dGQ6OnN0cmluZz4gR2V0Q1dEKCkKK3sKKyAgICBzdGQ6OmFycmF5PGNoYXIsIDQwOTY+IHBhdGhC
dWY7CisgICAgY2hhciAqcmVzdWx0ID0gZ2V0Y3dkKHBhdGhCdWYuZGF0YSgpLCBwYXRoQnVmLnNp
emUoKSk7CisgICAgaWYgKHJlc3VsdCA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IE9wdGlvbmFsPHN0ZDo6c3RyaW5nPjo6SW52YWxpZCgpOworICAgIH0KKyAgICByZXR1cm4gc3Rk
OjpzdHJpbmcocGF0aEJ1Zi5kYXRhKCkpOworfQorCitib29sIFNldENXRChjb25zdCBjaGFyICpk
aXJOYW1lKQoreworICAgIHJldHVybiAoY2hkaXIoZGlyTmFtZSkgPT0gMCk7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSBhbmdsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi9zeXN0ZW1fdXRpbHNfd2luLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21tb24vc3lzdGVtX3V0aWxzX3dpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDgyOWExYzlmODdjNThi
YThmMTM1YThmMTQzNmRjMTlhYzJmODJjYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtX3V0aWxzX3dpbi5jcHAKQEAgLTAsMCArMSw3
NCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIHN5c3RlbV91dGlsc193aW4uY3BwOiBJbXBsZW1lbnRh
dGlvbiBvZiBPUy1zcGVjaWZpYyBmdW5jdGlvbnMgZm9yIFdpbmRvd3MKKworI2luY2x1ZGUgInN5
c3RlbV91dGlscy5oIgorCisjaW5jbHVkZSA8c3RkYXJnLmg+CisjaW5jbHVkZSA8d2luZG93cy5o
PgorI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHZlY3Rvcj4KKworbmFtZXNwYWNlIGFuZ2xl
Cit7CisKK25hbWVzcGFjZQoreworCitzdGQ6OnN0cmluZyBHZXRFeGVjdXRhYmxlUGF0aEltcGwo
KQoreworICAgIHN0ZDo6YXJyYXk8Y2hhciwgTUFYX1BBVEg+IGV4ZWN1dGFibGVGaWxlQnVmOwor
ICAgIERXT1JEIGV4ZWN1dGFibGVQYXRoTGVuID0gR2V0TW9kdWxlRmlsZU5hbWVBKE5VTEwsIGV4
ZWN1dGFibGVGaWxlQnVmLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxEV09SRD4oZXhlY3V0YWJsZUZpbGVCdWYuc2l6
ZSgpKSk7CisgICAgcmV0dXJuIChleGVjdXRhYmxlUGF0aExlbiA+IDAgPyBzdGQ6OnN0cmluZyhl
eGVjdXRhYmxlRmlsZUJ1Zi5kYXRhKCkpIDogIiIpOworfQorCitzdGQ6OnN0cmluZyBHZXRFeGVj
dXRhYmxlRGlyZWN0b3J5SW1wbCgpCit7CisgICAgc3RkOjpzdHJpbmcgZXhlY3V0YWJsZVBhdGgg
PSBHZXRFeGVjdXRhYmxlUGF0aCgpOworICAgIHNpemVfdCBsYXN0UGF0aFNlcExvYyAgICAgID0g
ZXhlY3V0YWJsZVBhdGguZmluZF9sYXN0X29mKCJcXC8iKTsKKyAgICByZXR1cm4gKGxhc3RQYXRo
U2VwTG9jICE9IHN0ZDo6c3RyaW5nOjpucG9zKSA/IGV4ZWN1dGFibGVQYXRoLnN1YnN0cigwLCBs
YXN0UGF0aFNlcExvYykgOiAiIjsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitj
b25zdCBjaGFyICpHZXRFeGVjdXRhYmxlUGF0aCgpCit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTog
TWFrZSBnbG9iYWwgc3RhdGljIHN0cmluZyB0aHJlYWQtc2FmZS4KKyAgICBjb25zdCBzdGF0aWMg
c3RkOjpzdHJpbmcgJmV4ZVBhdGggPSBHZXRFeGVjdXRhYmxlUGF0aEltcGwoKTsKKyAgICByZXR1
cm4gZXhlUGF0aC5jX3N0cigpOworfQorCitjb25zdCBjaGFyICpHZXRFeGVjdXRhYmxlRGlyZWN0
b3J5KCkKK3sKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBNYWtlIGdsb2JhbCBzdGF0aWMgc3RyaW5n
IHRocmVhZC1zYWZlLgorICAgIGNvbnN0IHN0YXRpYyBzdGQ6OnN0cmluZyAmZXhlRGlyID0gR2V0
RXhlY3V0YWJsZURpcmVjdG9yeUltcGwoKTsKKyAgICByZXR1cm4gZXhlRGlyLmNfc3RyKCk7Cit9
CisKK2NvbnN0IGNoYXIgKkdldFNoYXJlZExpYnJhcnlFeHRlbnNpb24oKQoreworICAgIHJldHVy
biAiZGxsIjsKK30KKworT3B0aW9uYWw8c3RkOjpzdHJpbmc+IEdldENXRCgpCit7CisgICAgc3Rk
OjphcnJheTxjaGFyLCBNQVhfUEFUSD4gcGF0aEJ1ZjsKKyAgICBEV09SRCByZXN1bHQgPSBHZXRD
dXJyZW50RGlyZWN0b3J5QShzdGF0aWNfY2FzdDxEV09SRD4ocGF0aEJ1Zi5zaXplKCkpLCBwYXRo
QnVmLmRhdGEoKSk7CisgICAgaWYgKHJlc3VsdCA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IE9wdGlvbmFsPHN0ZDo6c3RyaW5nPjo6SW52YWxpZCgpOworICAgIH0KKyAgICByZXR1cm4gc3Rk
OjpzdHJpbmcocGF0aEJ1Zi5kYXRhKCkpOworfQorCitib29sIFNldENXRChjb25zdCBjaGFyICpk
aXJOYW1lKQoreworICAgIHJldHVybiAoU2V0Q3VycmVudERpcmVjdG9yeUEoZGlyTmFtZSkgPT0g
VFJVRSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi91dGlsaXRpZXMuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbW1vbi91dGlsaXRpZXMuY3BwCmluZGV4IGFmMjBmNGI3ODJiYzBkZDg1
ZTk0MjFhNTgwOWVkZTM4YmE2ZTUyNGIuLmIwM2FhZGE0OTVlMTIxOTlkYTIzNDc3M2RlMmU0YzY3
N2JmOGZkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24v
dXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3V0
aWxpdGllcy5jcHAKQEAgLTEyOCwyMSArMTI4LDM2IEBAIEdMZW51bSBWYXJpYWJsZUNvbXBvbmVu
dFR5cGUoR0xlbnVtIHR5cGUpCiAgICAgICBjYXNlIEdMX1NBTVBMRVJfQ1VCRToKICAgICAgIGNh
c2UgR0xfU0FNUExFUl8yRF9BUlJBWToKICAgICAgIGNhc2UgR0xfU0FNUExFUl9FWFRFUk5BTF9P
RVM6CisgICAgICBjYXNlIEdMX1NBTVBMRVJfMkRfTVVMVElTQU1QTEU6CiAgICAgICBjYXNlIEdM
X0lOVF9TQU1QTEVSXzJEOgogICAgICAgY2FzZSBHTF9JTlRfU0FNUExFUl8zRDoKICAgICAgIGNh
c2UgR0xfSU5UX1NBTVBMRVJfQ1VCRToKICAgICAgIGNhc2UgR0xfSU5UX1NBTVBMRVJfMkRfQVJS
QVk6CisgICAgICBjYXNlIEdMX0lOVF9TQU1QTEVSXzJEX01VTFRJU0FNUExFOgogICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8yRDoKICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5U
X1NBTVBMRVJfM0Q6CiAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkU6CiAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzJEX0FSUkFZOgorICAgICAgY2FzZSBH
TF9VTlNJR05FRF9JTlRfU0FNUExFUl8yRF9NVUxUSVNBTVBMRToKICAgICAgIGNhc2UgR0xfU0FN
UExFUl8yRF9TSEFET1c6CiAgICAgICBjYXNlIEdMX1NBTVBMRVJfQ1VCRV9TSEFET1c6CiAgICAg
ICBjYXNlIEdMX1NBTVBMRVJfMkRfQVJSQVlfU0hBRE9XOgogICAgICAgY2FzZSBHTF9JTlRfVkVD
MjoKICAgICAgIGNhc2UgR0xfSU5UX1ZFQzM6CiAgICAgICBjYXNlIEdMX0lOVF9WRUM0OgotICAg
ICAgICByZXR1cm4gR0xfSU5UOworICAgICAgY2FzZSBHTF9JTUFHRV8yRDoKKyAgICAgIGNhc2Ug
R0xfSU5UX0lNQUdFXzJEOgorICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfSU1BR0VfMkQ6Cisg
ICAgICBjYXNlIEdMX0lNQUdFXzNEOgorICAgICAgY2FzZSBHTF9JTlRfSU1BR0VfM0Q6CisgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9JTUFHRV8zRDoKKyAgICAgIGNhc2UgR0xfSU1BR0VfMkRf
QVJSQVk6CisgICAgICBjYXNlIEdMX0lOVF9JTUFHRV8yRF9BUlJBWToKKyAgICAgIGNhc2UgR0xf
VU5TSUdORURfSU5UX0lNQUdFXzJEX0FSUkFZOgorICAgICAgY2FzZSBHTF9JTUFHRV9DVUJFOgor
ICAgICAgY2FzZSBHTF9JTlRfSU1BR0VfQ1VCRToKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5U
X0lNQUdFX0NVQkU6CisgICAgICAgICAgcmV0dXJuIEdMX0lOVDsKICAgICAgIGNhc2UgR0xfVU5T
SUdORURfSU5UOgogICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfVkVDMjoKICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfSU5UX1ZFQzM6CkBAIC0yMzYsMTggKzI1MSwzMyBAQCBpbnQgVmFyaWFibGVS
b3dDb3VudChHTGVudW0gdHlwZSkKICAgICAgIGNhc2UgR0xfU0FNUExFUl8yRF9BUlJBWToKICAg
ICAgIGNhc2UgR0xfU0FNUExFUl9FWFRFUk5BTF9PRVM6CiAgICAgICBjYXNlIEdMX1NBTVBMRVJf
MkRfUkVDVF9BUkI6CisgICAgICBjYXNlIEdMX1NBTVBMRVJfMkRfTVVMVElTQU1QTEU6CiAgICAg
ICBjYXNlIEdMX0lOVF9TQU1QTEVSXzJEOgogICAgICAgY2FzZSBHTF9JTlRfU0FNUExFUl8zRDoK
ICAgICAgIGNhc2UgR0xfSU5UX1NBTVBMRVJfQ1VCRToKICAgICAgIGNhc2UgR0xfSU5UX1NBTVBM
RVJfMkRfQVJSQVk6CisgICAgICBjYXNlIEdMX0lOVF9TQU1QTEVSXzJEX01VTFRJU0FNUExFOgog
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8yRDoKICAgICAgIGNhc2UgR0xfVU5T
SUdORURfSU5UX1NBTVBMRVJfM0Q6CiAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVS
X0NVQkU6CiAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzJEX0FSUkFZOgorICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8yRF9NVUxUSVNBTVBMRToKICAgICAgIGNh
c2UgR0xfU0FNUExFUl8yRF9TSEFET1c6CiAgICAgICBjYXNlIEdMX1NBTVBMRVJfQ1VCRV9TSEFE
T1c6CiAgICAgICBjYXNlIEdMX1NBTVBMRVJfMkRfQVJSQVlfU0hBRE9XOgotICAgICAgICByZXR1
cm4gMTsKKyAgICAgIGNhc2UgR0xfSU1BR0VfMkQ6CisgICAgICBjYXNlIEdMX0lOVF9JTUFHRV8y
RDoKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX0lNQUdFXzJEOgorICAgICAgY2FzZSBHTF9J
TUFHRV8yRF9BUlJBWToKKyAgICAgIGNhc2UgR0xfSU5UX0lNQUdFXzJEX0FSUkFZOgorICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9JTlRfSU1BR0VfMkRfQVJSQVk6CisgICAgICBjYXNlIEdMX0lNQUdF
XzNEOgorICAgICAgY2FzZSBHTF9JTlRfSU1BR0VfM0Q6CisgICAgICBjYXNlIEdMX1VOU0lHTkVE
X0lOVF9JTUFHRV8zRDoKKyAgICAgIGNhc2UgR0xfSU1BR0VfQ1VCRToKKyAgICAgIGNhc2UgR0xf
SU5UX0lNQUdFX0NVQkU6CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9JTUFHRV9DVUJFOgor
ICAgICAgICAgIHJldHVybiAxOwogICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyOgogICAgICAgY2Fz
ZSBHTF9GTE9BVF9NQVQzeDI6CiAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDR4MjoKQEAgLTI4Miwy
MCArMzEyLDM1IEBAIGludCBWYXJpYWJsZUNvbHVtbkNvdW50KEdMZW51bSB0eXBlKQogICAgICAg
Y2FzZSBHTF9TQU1QTEVSXzNEOgogICAgICAgY2FzZSBHTF9TQU1QTEVSX0NVQkU6CiAgICAgICBj
YXNlIEdMX1NBTVBMRVJfMkRfQVJSQVk6CisgICAgICBjYXNlIEdMX1NBTVBMRVJfMkRfTVVMVElT
QU1QTEU6CiAgICAgICBjYXNlIEdMX0lOVF9TQU1QTEVSXzJEOgogICAgICAgY2FzZSBHTF9JTlRf
U0FNUExFUl8zRDoKICAgICAgIGNhc2UgR0xfSU5UX1NBTVBMRVJfQ1VCRToKICAgICAgIGNhc2Ug
R0xfSU5UX1NBTVBMRVJfMkRfQVJSQVk6CisgICAgICBjYXNlIEdMX0lOVF9TQU1QTEVSXzJEX01V
TFRJU0FNUExFOgogICAgICAgY2FzZSBHTF9TQU1QTEVSX0VYVEVSTkFMX09FUzoKICAgICAgIGNh
c2UgR0xfU0FNUExFUl8yRF9SRUNUX0FSQjoKICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX1NB
TVBMRVJfMkQ6CiAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzNEOgogICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl9DVUJFOgogICAgICAgY2FzZSBHTF9VTlNJR05F
RF9JTlRfU0FNUExFUl8yRF9BUlJBWToKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX1NBTVBM
RVJfMkRfTVVMVElTQU1QTEU6CiAgICAgICBjYXNlIEdMX1NBTVBMRVJfMkRfU0hBRE9XOgogICAg
ICAgY2FzZSBHTF9TQU1QTEVSX0NVQkVfU0hBRE9XOgogICAgICAgY2FzZSBHTF9TQU1QTEVSXzJE
X0FSUkFZX1NIQURPVzoKLSAgICAgICAgcmV0dXJuIDE7CisgICAgICBjYXNlIEdMX0lNQUdFXzJE
OgorICAgICAgY2FzZSBHTF9JTlRfSU1BR0VfMkQ6CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lO
VF9JTUFHRV8yRDoKKyAgICAgIGNhc2UgR0xfSU1BR0VfM0Q6CisgICAgICBjYXNlIEdMX0lOVF9J
TUFHRV8zRDoKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX0lNQUdFXzNEOgorICAgICAgY2Fz
ZSBHTF9JTUFHRV8yRF9BUlJBWToKKyAgICAgIGNhc2UgR0xfSU5UX0lNQUdFXzJEX0FSUkFZOgor
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfSU1BR0VfMkRfQVJSQVk6CisgICAgICBjYXNlIEdM
X0lNQUdFX0NVQkU6CisgICAgICBjYXNlIEdMX0lOVF9JTUFHRV9DVUJFOgorICAgICAgY2FzZSBH
TF9VTlNJR05FRF9JTlRfSU1BR0VfQ1VCRToKKyAgICAgICAgICByZXR1cm4gMTsKICAgICAgIGNh
c2UgR0xfQk9PTF9WRUMyOgogICAgICAgY2FzZSBHTF9GTE9BVF9WRUMyOgogICAgICAgY2FzZSBH
TF9JTlRfVkVDMjoKQEAgLTMzNiwxNCArMzgxLDE3IEBAIGJvb2wgSXNTYW1wbGVyVHlwZShHTGVu
dW0gdHlwZSkKICAgICAgIGNhc2UgR0xfU0FNUExFUl9DVUJFOgogICAgICAgY2FzZSBHTF9TQU1Q
TEVSXzJEX0FSUkFZOgogICAgICAgY2FzZSBHTF9TQU1QTEVSX0VYVEVSTkFMX09FUzoKKyAgICAg
IGNhc2UgR0xfU0FNUExFUl8yRF9NVUxUSVNBTVBMRToKICAgICAgIGNhc2UgR0xfSU5UX1NBTVBM
RVJfMkQ6CiAgICAgICBjYXNlIEdMX0lOVF9TQU1QTEVSXzNEOgogICAgICAgY2FzZSBHTF9JTlRf
U0FNUExFUl9DVUJFOgogICAgICAgY2FzZSBHTF9JTlRfU0FNUExFUl8yRF9BUlJBWToKKyAgICAg
IGNhc2UgR0xfSU5UX1NBTVBMRVJfMkRfTVVMVElTQU1QTEU6CiAgICAgICBjYXNlIEdMX1VOU0lH
TkVEX0lOVF9TQU1QTEVSXzJEOgogICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8z
RDoKICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfQ1VCRToKICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfSU5UX1NBTVBMRVJfMkRfQVJSQVk6CisgICAgICBjYXNlIEdMX1VOU0lHTkVE
X0lOVF9TQU1QTEVSXzJEX01VTFRJU0FNUExFOgogICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEX1NI
QURPVzoKICAgICAgIGNhc2UgR0xfU0FNUExFUl9DVUJFX1NIQURPVzoKICAgICAgIGNhc2UgR0xf
U0FNUExFUl8yRF9BUlJBWV9TSEFET1c6CkBAIC0zNTMsNiArNDAxLDM0IEBAIGJvb2wgSXNTYW1w
bGVyVHlwZShHTGVudW0gdHlwZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgSXNJbWFn
ZVR5cGUoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAg
Y2FzZSBHTF9JTUFHRV8yRDoKKyAgICAgICAgY2FzZSBHTF9JTlRfSU1BR0VfMkQ6CisgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfSU5UX0lNQUdFXzJEOgorICAgICAgICBjYXNlIEdMX0lNQUdFXzNE
OgorICAgICAgICBjYXNlIEdMX0lOVF9JTUFHRV8zRDoKKyAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9JTlRfSU1BR0VfM0Q6CisgICAgICAgIGNhc2UgR0xfSU1BR0VfMkRfQVJSQVk6CisgICAgICAg
IGNhc2UgR0xfSU5UX0lNQUdFXzJEX0FSUkFZOgorICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lO
VF9JTUFHRV8yRF9BUlJBWToKKyAgICAgICAgY2FzZSBHTF9JTUFHRV9DVUJFOgorICAgICAgICBj
YXNlIEdMX0lOVF9JTUFHRV9DVUJFOgorICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9JTUFH
RV9DVUJFOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKworYm9vbCBJc09wYXF1ZVR5cGUoR0xlbnVtIHR5cGUpCit7CisgICAgLy8gRVNTTCAz
LjEwIHNlY3Rpb24gNC4xLjcgZGVmaW5lcyBvcGFxdWUgdHlwZXMgYXM6IHNhbXBsZXJzLCBpbWFn
ZXMgYW5kIGF0b21pYyBjb3VudGVycy4KKyAgICAvLyBUT0RPKG9ldHVhaG8pOiBhZGQgYXRvbWlj
IHR5cGVzCisgICAgcmV0dXJuIElzSW1hZ2VUeXBlKHR5cGUpIHx8IElzU2FtcGxlclR5cGUodHlw
ZSk7Cit9CisKIEdMZW51bSBTYW1wbGVyVHlwZVRvVGV4dHVyZVR5cGUoR0xlbnVtIHNhbXBsZXJU
eXBlKQogewogICAgIHN3aXRjaCAoc2FtcGxlclR5cGUpCkBAIC0zODMsNiArNDU5LDExIEBAIEdM
ZW51bSBTYW1wbGVyVHlwZVRvVGV4dHVyZVR5cGUoR0xlbnVtIHNhbXBsZXJUeXBlKQogICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8zRDoKICAgICAgICAgcmV0dXJuIEdMX1RFWFRV
UkVfM0Q7CiAKKyAgICAgIGNhc2UgR0xfU0FNUExFUl8yRF9NVUxUSVNBTVBMRToKKyAgICAgIGNh
c2UgR0xfSU5UX1NBTVBMRVJfMkRfTVVMVElTQU1QTEU6CisgICAgICBjYXNlIEdMX1VOU0lHTkVE
X0lOVF9TQU1QTEVSXzJEX01VTFRJU0FNUExFOgorICAgICAgICAgIHJldHVybiBHTF9URVhUVVJF
XzJEX01VTFRJU0FNUExFOworCiAgICAgICBkZWZhdWx0OgogICAgICAgICBVTlJFQUNIQUJMRSgp
OwogICAgICAgICByZXR1cm4gMDsKQEAgLTU5MywxNSArNjc0LDE4IEBAIGludCBWYXJpYWJsZVNv
cnRPcmRlcihHTGVudW0gdHlwZSkKICAgICAgIGNhc2UgR0xfU0FNUExFUl9FWFRFUk5BTF9PRVM6
CiAgICAgICBjYXNlIEdMX1NBTVBMRVJfMkRfUkVDVF9BUkI6CiAgICAgICBjYXNlIEdMX1NBTVBM
RVJfMkRfQVJSQVk6CisgICAgICBjYXNlIEdMX1NBTVBMRVJfMkRfTVVMVElTQU1QTEU6CiAgICAg
ICBjYXNlIEdMX1NBTVBMRVJfM0Q6CiAgICAgICBjYXNlIEdMX0lOVF9TQU1QTEVSXzJEOgogICAg
ICAgY2FzZSBHTF9JTlRfU0FNUExFUl8zRDoKICAgICAgIGNhc2UgR0xfSU5UX1NBTVBMRVJfQ1VC
RToKICAgICAgIGNhc2UgR0xfSU5UX1NBTVBMRVJfMkRfQVJSQVk6CisgICAgICBjYXNlIEdMX0lO
VF9TQU1QTEVSXzJEX01VTFRJU0FNUExFOgogICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfU0FN
UExFUl8yRDoKICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfM0Q6CiAgICAgICBj
YXNlIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkU6CiAgICAgICBjYXNlIEdMX1VOU0lHTkVE
X0lOVF9TQU1QTEVSXzJEX0FSUkFZOgorICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfU0FNUExF
Ul8yRF9NVUxUSVNBTVBMRToKICAgICAgIGNhc2UgR0xfU0FNUExFUl8yRF9TSEFET1c6CiAgICAg
ICBjYXNlIEdMX1NBTVBMRVJfMkRfQVJSQVlfU0hBRE9XOgogICAgICAgY2FzZSBHTF9TQU1QTEVS
X0NVQkVfU0hBRE9XOgpAQCAtNjEzLDcgKzY5Nyw3IEBAIGludCBWYXJpYWJsZVNvcnRPcmRlcihH
TGVudW0gdHlwZSkKICAgICB9CiB9CiAKLXN0ZDo6c3RyaW5nIFBhcnNlVW5pZm9ybU5hbWUoY29u
c3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHNpemVfdCAqb3V0U3Vic2NyaXB0KQorc3RkOjpzdHJpbmcg
UGFyc2VSZXNvdXJjZU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHNpemVfdCAqb3V0U3Vi
c2NyaXB0KQogewogICAgIC8vIFN0cmlwIGFueSB0cmFpbGluZyBhcnJheSBvcGVyYXRvciBhbmQg
cmV0cmlldmUgdGhlIHN1YnNjcmlwdAogICAgIHNpemVfdCBvcGVuID0gbmFtZS5maW5kX2xhc3Rf
b2YoJ1snKTsKQEAgLTc3OCw2ICs4NjIsMjUgQEAgR0x1aW50IEVHTENsaWVudEJ1ZmZlclRvR0xP
YmplY3RIYW5kbGUoRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlcikKIH0KIH0gIC8vIG5hbWVzcGFjZSBl
Z2xfZ2wKIAorbmFtZXNwYWNlIGdsX2VnbAoreworRUdMZW51bSBHTENvbXBvbmVudFR5cGVUb0VH
TENvbG9yQ29tcG9uZW50VHlwZShHTGVudW0gZ2xDb21wb25lbnRUeXBlKQoreworICAgIHN3aXRj
aCAoZ2xDb21wb25lbnRUeXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9GTE9BVDoKKyAgICAg
ICAgICAgIHJldHVybiBFR0xfQ09MT1JfQ09NUE9ORU5UX1RZUEVfRkxPQVRfRVhUOworCisgICAg
ICAgIGNhc2UgR0xfVU5TSUdORURfTk9STUFMSVpFRDoKKyAgICAgICAgICAgIHJldHVybiBFR0xf
Q09MT1JfQ09NUE9ORU5UX1RZUEVfRklYRURfRVhUOworCisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIEVHTF9OT05FOworICAg
IH0KK30KK30gIC8vIG5hbWVzcGFjZSBnbF9lZ2wKKwogI2lmICFkZWZpbmVkKEFOR0xFX0VOQUJM
RV9XSU5ET1dTX1NUT1JFKQogc3RkOjpzdHJpbmcgZ2V0VGVtcFBhdGgoKQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi91dGlsaXRpZXMuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdXRpbGl0aWVzLmgKaW5kZXggMTZkNjU2MGE3
Y2U0OGJiMmJkNjU4NmM4MGVhMDIxNDAxOWNkZGFhNS4uNjhjYzllY2UxNjY3NzUzMjVlNjg4MmRj
MmEwYTk1OGY3MmNmNmFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi91dGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
bW9uL3V0aWxpdGllcy5oCkBAIC0zMCw2ICszMCw4IEBAIEdMZW51bSBWYXJpYWJsZUJvb2xWZWN0
b3JUeXBlKEdMZW51bSB0eXBlKTsKIGludCBWYXJpYWJsZVJvd0NvdW50KEdMZW51bSB0eXBlKTsK
IGludCBWYXJpYWJsZUNvbHVtbkNvdW50KEdMZW51bSB0eXBlKTsKIGJvb2wgSXNTYW1wbGVyVHlw
ZShHTGVudW0gdHlwZSk7Citib29sIElzSW1hZ2VUeXBlKEdMZW51bSB0eXBlKTsKK2Jvb2wgSXNP
cGFxdWVUeXBlKEdMZW51bSB0eXBlKTsKIEdMZW51bSBTYW1wbGVyVHlwZVRvVGV4dHVyZVR5cGUo
R0xlbnVtIHNhbXBsZXJUeXBlKTsKIGJvb2wgSXNNYXRyaXhUeXBlKEdMZW51bSB0eXBlKTsKIEdM
ZW51bSBUcmFuc3Bvc2VNYXRyaXhUeXBlKEdMZW51bSB0eXBlKTsKQEAgLTQ2LDkgKzQ4LDEwIEBA
IGJvb2wgSXNDdWJlTWFwVGV4dHVyZVRhcmdldChHTGVudW0gdGFyZ2V0KTsKIHNpemVfdCBDdWJl
TWFwVGV4dHVyZVRhcmdldFRvTGF5ZXJJbmRleChHTGVudW0gdGFyZ2V0KTsKIEdMZW51bSBMYXll
ckluZGV4VG9DdWJlTWFwVGV4dHVyZVRhcmdldChzaXplX3QgaW5kZXgpOwogCi0vLyBQYXJzZSB0
aGUgYmFzZSB1bmlmb3JtIG5hbWUgYW5kIGFycmF5IGluZGV4LiAgUmV0dXJucyB0aGUgYmFzZSBu
YW1lIG9mIHRoZSB1bmlmb3JtLiBvdXRTdWJzY3JpcHQgaXMKLS8vIHNldCB0byBHTF9JTlZBTElE
X0lOREVYIGlmIHRoZSBwcm92aWRlZCBuYW1lIGlzIG5vdCBhbiBhcnJheSBvciB0aGUgYXJyYXkg
aW5kZXggaXMgaW52YWxpZC4KLXN0ZDo6c3RyaW5nIFBhcnNlVW5pZm9ybU5hbWUoY29uc3Qgc3Rk
OjpzdHJpbmcgJm5hbWUsIHNpemVfdCAqb3V0U3Vic2NyaXB0KTsKKy8vIFBhcnNlIHRoZSBiYXNl
IHJlc291cmNlIG5hbWUgYW5kIGFycmF5IGluZGV4LiAgUmV0dXJucyB0aGUgYmFzZSBuYW1lIG9m
IHRoZSByZXNvdXJjZS4KKy8vIG91dFN1YnNjcmlwdCBpcyBzZXQgdG8gR0xfSU5WQUxJRF9JTkRF
WCBpZiB0aGUgcHJvdmlkZWQgbmFtZSBpcyBub3QgYW4gYXJyYXkgb3IgdGhlIGFycmF5IGluZGV4
CisvLyBpcyBpbnZhbGlkLgorc3RkOjpzdHJpbmcgUGFyc2VSZXNvdXJjZU5hbWUoY29uc3Qgc3Rk
OjpzdHJpbmcgJm5hbWUsIHNpemVfdCAqb3V0U3Vic2NyaXB0KTsKIAogLy8gRmluZCB0aGUgcmFu
Z2Ugb2YgaW5kZXggdmFsdWVzIGluIHRoZSBwcm92aWRlZCBpbmRpY2VzIHBvaW50ZXIuICBQcmlt
aXRpdmUgcmVzdGFydCBpbmRpY2VzIGFyZQogLy8gb25seSBjb3VudGVkIGluIHRoZSByYW5nZSBp
ZiBwcmltaXRpdmUgcmVzdGFydCBpcyBkaXNhYmxlZC4KQEAgLTE2MCw2ICsxNjMsMTEgQEAgR0xl
bnVtIEVHTEltYWdlVGFyZ2V0VG9HTFRleHR1cmVUYXJnZXQoRUdMZW51bSBlZ2xUYXJnZXQpOwog
R0x1aW50IEVHTENsaWVudEJ1ZmZlclRvR0xPYmplY3RIYW5kbGUoRUdMQ2xpZW50QnVmZmVyIGJ1
ZmZlcik7CiB9CiAKK25hbWVzcGFjZSBnbF9lZ2wKK3sKK0VHTGVudW0gR0xDb21wb25lbnRUeXBl
VG9FR0xDb2xvckNvbXBvbmVudFR5cGUoR0xlbnVtIGdsQ29tcG9uZW50VHlwZSk7Cit9ICAvLyBu
YW1lc3BhY2UgZ2xfZWdsCisKICNpZiAhZGVmaW5lZChBTkdMRV9FTkFCTEVfV0lORE9XU19TVE9S
RSkKIHN0ZDo6c3RyaW5nIGdldFRlbXBQYXRoKCk7CiB2b2lkIHdyaXRlRmlsZShjb25zdCBjaGFy
KiBwYXRoLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGllc191bml0dGVzdC5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGllc191bml0dGVzdC5jcHAK
aW5kZXggNDQ3YmZjNmViYWUzMWExM2U4NTExOTVjNTc2OWRmNTY5NDYyMmRhOS4uOTJiOGQyZDM2
M2FjNWE1MmZhOWMzOTRhNDQ4ZTI1YTRlOGZmZmI4YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbW1vbi91dGlsaXRpZXNfdW5pdHRlc3QuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdXRpbGl0aWVzX3VuaXR0ZXN0LmNwcApAQCAt
MTMsNDIgKzEzLDQyIEBACiBuYW1lc3BhY2UKIHsKIAotVEVTVChQYXJzZVVuaWZvcm1OYW1lLCBB
cnJheUluZGV4KQorVEVTVChQYXJzZVJlc291cmNlTmFtZSwgQXJyYXlJbmRleCkKIHsKICAgICBz
aXplX3QgaW5kZXg7Ci0gICAgRVhQRUNUX0VRKCJmb28iLCBnbDo6UGFyc2VVbmlmb3JtTmFtZSgi
Zm9vWzEyM10iLCAmaW5kZXgpKTsKKyAgICBFWFBFQ1RfRVEoImZvbyIsIGdsOjpQYXJzZVJlc291
cmNlTmFtZSgiZm9vWzEyM10iLCAmaW5kZXgpKTsKICAgICBFWFBFQ1RfRVEoMTIzdSwgaW5kZXgp
OwogCi0gICAgRVhQRUNUX0VRKCJiYXIiLCBnbDo6UGFyc2VVbmlmb3JtTmFtZSgiYmFyWzBdIiwg
JmluZGV4KSk7CisgICAgRVhQRUNUX0VRKCJiYXIiLCBnbDo6UGFyc2VSZXNvdXJjZU5hbWUoImJh
clswXSIsICZpbmRleCkpOwogICAgIEVYUEVDVF9FUSgwdSwgaW5kZXgpOwogfQogCi1URVNUKFBh
cnNlVW5pZm9ybU5hbWUsIE5lZ2F0aXZlQXJyYXlJbmRleCkKK1RFU1QoUGFyc2VSZXNvdXJjZU5h
bWUsIE5lZ2F0aXZlQXJyYXlJbmRleCkKIHsKICAgICBzaXplX3QgaW5kZXg7Ci0gICAgRVhQRUNU
X0VRKCJmb28iLCBnbDo6UGFyc2VVbmlmb3JtTmFtZSgiZm9vWy0xXSIsICZpbmRleCkpOworICAg
IEVYUEVDVF9FUSgiZm9vIiwgZ2w6OlBhcnNlUmVzb3VyY2VOYW1lKCJmb29bLTFdIiwgJmluZGV4
KSk7CiAgICAgRVhQRUNUX0VRKEdMX0lOVkFMSURfSU5ERVgsIGluZGV4KTsKIH0KIAotVEVTVChQ
YXJzZVVuaWZvcm1OYW1lLCBOb0FycmF5SW5kZXgpCitURVNUKFBhcnNlUmVzb3VyY2VOYW1lLCBO
b0FycmF5SW5kZXgpCiB7CiAgICAgc2l6ZV90IGluZGV4OwotICAgIEVYUEVDVF9FUSgiZm9vIiwg
Z2w6OlBhcnNlVW5pZm9ybU5hbWUoImZvbyIsICZpbmRleCkpOworICAgIEVYUEVDVF9FUSgiZm9v
IiwgZ2w6OlBhcnNlUmVzb3VyY2VOYW1lKCJmb28iLCAmaW5kZXgpKTsKICAgICBFWFBFQ1RfRVEo
R0xfSU5WQUxJRF9JTkRFWCwgaW5kZXgpOwogfQogCi1URVNUKFBhcnNlVW5pZm9ybU5hbWUsIE5V
TExBcnJheUluZGV4KQorVEVTVChQYXJzZVJlc291cmNlTmFtZSwgTlVMTEFycmF5SW5kZXgpCiB7
Ci0gICAgRVhQRUNUX0VRKCJmb28iLCBnbDo6UGFyc2VVbmlmb3JtTmFtZSgiZm9vWzEwXSIsIG51
bGxwdHIpKTsKKyAgICBFWFBFQ1RfRVEoImZvbyIsIGdsOjpQYXJzZVJlc291cmNlTmFtZSgiZm9v
WzEwXSIsIG51bGxwdHIpKTsKIH0KIAotVEVTVChQYXJzZVVuaWZvcm1OYW1lLCBUcmFpbGluZ1do
aXRlc3BhY2UpCitURVNUKFBhcnNlUmVzb3VyY2VOYW1lLCBUcmFpbGluZ1doaXRlc3BhY2UpCiB7
CiAgICAgc2l6ZV90IGluZGV4OwotICAgIEVYUEVDVF9FUSgiZm9vICIsIGdsOjpQYXJzZVVuaWZv
cm1OYW1lKCJmb28gIiwgJmluZGV4KSk7CisgICAgRVhQRUNUX0VRKCJmb28gIiwgZ2w6OlBhcnNl
UmVzb3VyY2VOYW1lKCJmb28gIiwgJmluZGV4KSk7CiAgICAgRVhQRUNUX0VRKEdMX0lOVkFMSURf
SU5ERVgsIGluZGV4KTsKIAotICAgIEVYUEVDVF9FUSgiZm9vWzEwXSAiLCBnbDo6UGFyc2VVbmlm
b3JtTmFtZSgiZm9vWzEwXSAiLCAmaW5kZXgpKTsKKyAgICBFWFBFQ1RfRVEoImZvb1sxMF0gIiwg
Z2w6OlBhcnNlUmVzb3VyY2VOYW1lKCJmb29bMTBdICIsICZpbmRleCkpOwogICAgIEVYUEVDVF9F
UShHTF9JTlZBTElEX0lOREVYLCBpbmRleCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdmVjdG9yX3V0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tbW9uL3ZlY3Rvcl91dGlscy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlYjcxMjBjNTgz
N2E4ZjkxZjc1M2YxMTk1NDkxYzJmYjNiMzk1NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3ZlY3Rvcl91dGlscy5oCkBAIC0wLDAgKzEsNDc2
IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworLy8gdmVjdG9yX3V0aWxzLmg6IFV0aWxpdHkgY2xhc3NlcyBpbXBsZW1l
bnRpbmcgdmFyaW91cyB2ZWN0b3Igb3BlcmF0aW9ucworCisjaWZuZGVmIENPTU1PTl9WRUNUT1Jf
VVRJTFNfSF8KKyNkZWZpbmUgQ09NTU9OX1ZFQ1RPUl9VVElMU19IXworCisjaW5jbHVkZSA8Y3N0
ZGRlZj4KKyNpbmNsdWRlIDxjbWF0aD4KKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KKworbmFtZXNw
YWNlIGFuZ2xlCit7CisKK3RlbXBsYXRlIDxzaXplX3QgRGltZW5zaW9uLCB0eXBlbmFtZSBUeXBl
PgorY2xhc3MgVmVjdG9yOworCit1c2luZyBWZWN0b3IyID0gVmVjdG9yPDIsIGZsb2F0PjsKK3Vz
aW5nIFZlY3RvcjMgPSBWZWN0b3I8MywgZmxvYXQ+OwordXNpbmcgVmVjdG9yNCA9IFZlY3Rvcjw0
LCBmbG9hdD47CisKK3VzaW5nIFZlY3RvcjJJID0gVmVjdG9yPDIsIGludD47Cit1c2luZyBWZWN0
b3IzSSA9IFZlY3RvcjwzLCBpbnQ+OwordXNpbmcgVmVjdG9yNEkgPSBWZWN0b3I8NCwgaW50PjsK
KwordXNpbmcgVmVjdG9yMlUgPSBWZWN0b3I8MiwgdW5zaWduZWQgaW50PjsKK3VzaW5nIFZlY3Rv
cjNVID0gVmVjdG9yPDMsIHVuc2lnbmVkIGludD47Cit1c2luZyBWZWN0b3I0VSA9IFZlY3Rvcjw0
LCB1bnNpZ25lZCBpbnQ+OworCit0ZW1wbGF0ZSA8c2l6ZV90IERpbWVuc2lvbiwgdHlwZW5hbWUg
VHlwZT4KK2NsYXNzIFZlY3RvckJhc2UKK3sKKyAgcHVibGljOgorICAgIHVzaW5nIFZlY3Rvck4g
PSBWZWN0b3I8RGltZW5zaW9uLCBUeXBlPjsKKworICAgIC8vIENvbnN0cnVjdG9ycworICAgIFZl
Y3RvckJhc2UoKSA9IGRlZmF1bHQ7CisgICAgZXhwbGljaXQgVmVjdG9yQmFzZShUeXBlIGVsZW1l
bnQpOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGUyPgorICAgIFZlY3RvckJhc2UoY29u
c3QgVmVjdG9yQmFzZTxEaW1lbnNpb24sIFR5cGUyPiAmb3RoZXIpOworCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgVmVj
dG9yQmFzZShjb25zdCBBcmcxICZhcmcxLCBjb25zdCBBcmcyICZhcmcyLCBjb25zdCBBcmdzICYu
Li4gYXJncyk7CisKKyAgICAvLyBBY2Nlc3MgdGhlIHZlY3RvciBiYWNraW5nIHN0b3JhZ2UgZGly
ZWN0bHkKKyAgICBjb25zdCBUeXBlICpkYXRhKCkgY29uc3QgeyByZXR1cm4gbURhdGE7IH0KKyAg
ICBUeXBlICpkYXRhKCkgeyByZXR1cm4gbURhdGE7IH0KKyAgICBjb25zdGV4cHIgc2l6ZV90IHNp
emUoKSBjb25zdCB7IHJldHVybiBEaW1lbnNpb247IH0KKworICAgIC8vIExvYWQgb3Igc3RvcmUg
dGhlIHBvaW50ZXIgZnJvbSAvIHRvIHJhdyBkYXRhCisgICAgc3RhdGljIFZlY3Rvck4gTG9hZChj
b25zdCBUeXBlICpzb3VyY2UpOworICAgIHN0YXRpYyB2b2lkIFN0b3JlKGNvbnN0IFZlY3Rvck4g
JnNvdXJjZSwgVHlwZSAqZGVzdGluYXRpb24pOworCisgICAgLy8gSW5kZXggdGhlIHZlY3Rvcgor
ICAgIFR5cGUgJm9wZXJhdG9yW10oc2l6ZV90IGkpIHsgcmV0dXJuIG1EYXRhW2ldOyB9CisgICAg
Y29uc3QgVHlwZSAmb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gbURhdGFbaV07
IH0KKworICAgIC8vIEJhc2ljIGFyaXRobWV0aWMgb3BlcmF0aW9ucworICAgIFZlY3Rvck4gb3Bl
cmF0b3IrKCkgY29uc3Q7CisgICAgVmVjdG9yTiBvcGVyYXRvci0oKSBjb25zdDsKKyAgICBWZWN0
b3JOIG9wZXJhdG9yKyhjb25zdCBWZWN0b3JOICZvdGhlcikgY29uc3Q7CisgICAgVmVjdG9yTiBv
cGVyYXRvci0oY29uc3QgVmVjdG9yTiAmb3RoZXIpIGNvbnN0OworICAgIFZlY3Rvck4gb3BlcmF0
b3IqKGNvbnN0IFZlY3Rvck4gJm90aGVyKSBjb25zdDsKKyAgICBWZWN0b3JOIG9wZXJhdG9yLyhj
b25zdCBWZWN0b3JOICZvdGhlcikgY29uc3Q7CisgICAgVmVjdG9yTiBvcGVyYXRvciooVHlwZSBv
dGhlcikgY29uc3Q7CisgICAgVmVjdG9yTiBvcGVyYXRvci8oVHlwZSBvdGhlcikgY29uc3Q7Cisg
ICAgZnJpZW5kIFZlY3Rvck4gb3BlcmF0b3IqKFR5cGUgYSwgY29uc3QgVmVjdG9yTiAmYikgeyBy
ZXR1cm4gYiAqIGE7IH0KKworICAgIC8vIENvbXBvdW5kIGFyaXRobWV0aWMgb3BlcmF0aW9ucwor
ICAgIFZlY3Rvck4gJm9wZXJhdG9yKz0oY29uc3QgVmVjdG9yTiAmb3RoZXIpOworICAgIFZlY3Rv
ck4gJm9wZXJhdG9yLT0oY29uc3QgVmVjdG9yTiAmb3RoZXIpOworICAgIFZlY3Rvck4gJm9wZXJh
dG9yKj0oY29uc3QgVmVjdG9yTiAmb3RoZXIpOworICAgIFZlY3Rvck4gJm9wZXJhdG9yLz0oY29u
c3QgVmVjdG9yTiAmb3RoZXIpOworICAgIFZlY3Rvck4gJm9wZXJhdG9yKj0oVHlwZSBvdGhlcik7
CisgICAgVmVjdG9yTiAmb3BlcmF0b3IvPShUeXBlIG90aGVyKTsKKworICAgIC8vIENvbXBhcmlz
b24gb3BlcmF0b3JzCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZlY3Rvck4gJm90aGVyKSBj
b25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVmVjdG9yTiAmb3RoZXIpIGNvbnN0Owor
CisgICAgLy8gT3RoZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zCisgICAgVHlwZSBsZW5ndGgoKSBj
b25zdDsKKyAgICBUeXBlIGxlbmd0aFNxdWFyZWQoKSBjb25zdDsKKyAgICBUeXBlIGRvdChjb25z
dCBWZWN0b3JCYXNlPERpbWVuc2lvbiwgVHlwZT4gJm90aGVyKSBjb25zdDsKKyAgICBWZWN0b3JO
IG5vcm1hbGl6ZWQoKSBjb25zdDsKKworICBwcm90ZWN0ZWQ6CisgICAgdGVtcGxhdGUgPHNpemVf
dCBDdXJyZW50SW5kZXgsIHNpemVfdCBPdGhlckRpbWVuc2lvbiwgdHlwZW5hbWUgT3RoZXJUeXBl
LCB0eXBlbmFtZS4uLiBBcmdzPgorICAgIHZvaWQgaW5pdFdpdGhMaXN0KGNvbnN0IFZlY3RvcjxP
dGhlckRpbWVuc2lvbiwgT3RoZXJUeXBlPiAmYXJnMSwgY29uc3QgQXJncyAmLi4uIGFyZ3MpOwor
CisgICAgLy8gU29tZSBvbGQgY29tcGlsZXJzIGNvbnNpZGVyIHRoaXMgZnVuY3Rpb24gYW4gYWx0
ZXJuYXRpdmUgZm9yIGluaXRXaXRoTGlzdChWZWN0b3IpCisgICAgLy8gd2hlbiB0aGUgdmFyaWFu
dCBhYm92ZSBpcyBtb3JlIHByZWNpc2UuIFVzZSBTRklOQUUgb24gdGhlIHJldHVybiB2YWx1ZSB0
byBoaWRlCisgICAgLy8gdGhpcyB2YXJpYW50IGZvciBub24tYXJpdGhtZXRpYyB0eXBlcy4gVGhl
IHJldHVybiB2YWx1ZSBpcyBzdGlsbCB2b2lkLgorICAgIHRlbXBsYXRlIDxzaXplX3QgQ3VycmVu
dEluZGV4LCB0eXBlbmFtZSBPdGhlclR5cGUsIHR5cGVuYW1lLi4uIEFyZ3M+CisgICAgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19hcml0aG1ldGljPE90aGVyVHlwZT46OnZhbHVlPjo6
dHlwZSBpbml0V2l0aExpc3QoCisgICAgICAgIE90aGVyVHlwZSBhcmcxLAorICAgICAgICBjb25z
dCBBcmdzICYuLi4gYXJncyk7CisKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IEN1cnJlbnRJbmRleD4K
KyAgICB2b2lkIGluaXRXaXRoTGlzdCgpIGNvbnN0OworCisgICAgdGVtcGxhdGUgPHNpemVfdCBE
aW1lbnNpb24yLCB0eXBlbmFtZSBUeXBlMj4KKyAgICBmcmllbmQgY2xhc3MgVmVjdG9yQmFzZTsK
KworICAgIFR5cGUgbURhdGFbRGltZW5zaW9uXTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
eXBlPgorY2xhc3MgVmVjdG9yPDIsIFR5cGU+IDogcHVibGljIFZlY3RvckJhc2U8MiwgVHlwZT4K
K3sKKyAgcHVibGljOgorICAgIC8vIEltcG9ydCB0aGUgY29uc3RydWN0b3JzIGRlZmluZWQgaW4g
VmVjdG9yQmFzZQorICAgIHVzaW5nIFZlY3RvckJhc2U8MiwgVHlwZT46OlZlY3RvckJhc2U7CisK
KyAgICAvLyBFbGVtZW50IHNob3J0aGFuZHMKKyAgICBUeXBlICZ4KCkgeyByZXR1cm4gdGhpcy0+
bURhdGFbMF07IH0KKyAgICBUeXBlICZ5KCkgeyByZXR1cm4gdGhpcy0+bURhdGFbMV07IH0KKwor
ICAgIGNvbnN0IFR5cGUgJngoKSBjb25zdCB7IHJldHVybiB0aGlzLT5tRGF0YVswXTsgfQorICAg
IGNvbnN0IFR5cGUgJnkoKSBjb25zdCB7IHJldHVybiB0aGlzLT5tRGF0YVsxXTsgfQorfTsKKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFR5cGU+CitjbGFzcyBWZWN0b3I8MywgVHlwZT4gOiBwdWJsaWMg
VmVjdG9yQmFzZTwzLCBUeXBlPgoreworICBwdWJsaWM6CisgICAgLy8gSW1wb3J0IHRoZSBjb25z
dHJ1Y3RvcnMgZGVmaW5lZCBpbiBWZWN0b3JCYXNlCisgICAgdXNpbmcgVmVjdG9yQmFzZTwzLCBU
eXBlPjo6VmVjdG9yQmFzZTsKKworICAgIC8vIEFkZGl0aW9uYWwgb3BlcmF0aW9ucworICAgIFZl
Y3RvcjwzLCBUeXBlPiBjcm9zcyhjb25zdCBWZWN0b3I8MywgVHlwZT4gJm90aGVyKSBjb25zdDsK
KworICAgIC8vIEVsZW1lbnQgc2hvcnRoYW5kcworICAgIFR5cGUgJngoKSB7IHJldHVybiB0aGlz
LT5tRGF0YVswXTsgfQorICAgIFR5cGUgJnkoKSB7IHJldHVybiB0aGlzLT5tRGF0YVsxXTsgfQor
ICAgIFR5cGUgJnooKSB7IHJldHVybiB0aGlzLT5tRGF0YVsyXTsgfQorCisgICAgY29uc3QgVHlw
ZSAmeCgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPm1EYXRhWzBdOyB9CisgICAgY29uc3QgVHlwZSAm
eSgpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPm1EYXRhWzFdOyB9CisgICAgY29uc3QgVHlwZSAmeigp
IGNvbnN0IHsgcmV0dXJuIHRoaXMtPm1EYXRhWzJdOyB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgVHlwZT4KK2NsYXNzIFZlY3Rvcjw0LCBUeXBlPiA6IHB1YmxpYyBWZWN0b3JCYXNlPDQsIFR5
cGU+Cit7CisgIHB1YmxpYzoKKyAgICAvLyBJbXBvcnQgdGhlIGNvbnN0cnVjdG9ycyBkZWZpbmVk
IGluIFZlY3RvckJhc2UKKyAgICB1c2luZyBWZWN0b3JCYXNlPDQsIFR5cGU+OjpWZWN0b3JCYXNl
OworCisgICAgLy8gRWxlbWVudCBzaG9ydGhhbmRzCisgICAgVHlwZSAmeCgpIHsgcmV0dXJuIHRo
aXMtPm1EYXRhWzBdOyB9CisgICAgVHlwZSAmeSgpIHsgcmV0dXJuIHRoaXMtPm1EYXRhWzFdOyB9
CisgICAgVHlwZSAmeigpIHsgcmV0dXJuIHRoaXMtPm1EYXRhWzJdOyB9CisgICAgVHlwZSAmdygp
IHsgcmV0dXJuIHRoaXMtPm1EYXRhWzNdOyB9CisKKyAgICBjb25zdCBUeXBlICZ4KCkgY29uc3Qg
eyByZXR1cm4gdGhpcy0+bURhdGFbMF07IH0KKyAgICBjb25zdCBUeXBlICZ5KCkgY29uc3QgeyBy
ZXR1cm4gdGhpcy0+bURhdGFbMV07IH0KKyAgICBjb25zdCBUeXBlICZ6KCkgY29uc3QgeyByZXR1
cm4gdGhpcy0+bURhdGFbMl07IH0KKyAgICBjb25zdCBUeXBlICZ3KCkgY29uc3QgeyByZXR1cm4g
dGhpcy0+bURhdGFbM107IH0KK307CisKKy8vIEltcGxlbWVudGF0aW9uIG9mIGNvbnN0cnVjdG9y
cyBhbmQgbWlzYyBvcGVyYXRpb25zCisKK3RlbXBsYXRlIDxzaXplX3QgRGltZW5zaW9uLCB0eXBl
bmFtZSBUeXBlPgorVmVjdG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+OjpWZWN0b3JCYXNlKFR5cGUg
ZWxlbWVudCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IERpbWVuc2lvbjsgKytpKQor
ICAgIHsKKyAgICAgICAgbURhdGFbaV0gPSBlbGVtZW50OworICAgIH0KK30KKwordGVtcGxhdGUg
PHNpemVfdCBEaW1lbnNpb24sIHR5cGVuYW1lIFR5cGU+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlw
ZTI+CitWZWN0b3JCYXNlPERpbWVuc2lvbiwgVHlwZT46OlZlY3RvckJhc2UoY29uc3QgVmVjdG9y
QmFzZTxEaW1lbnNpb24sIFR5cGUyPiAmb3RoZXIpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBEaW1lbnNpb247ICsraSkKKyAgICB7CisgICAgICAgIG1EYXRhW2ldID0gc3RhdGljX2Nh
c3Q8VHlwZT4ob3RoZXIubURhdGFbaV0pOworICAgIH0KK30KKworLy8gSWRlYWxseSB3ZSB3b3Vs
ZCBsaWtlIHRvIGhhdmUgb25seSB0d28gY29uc3RydWN0b3JzOgorLy8gIC0gYSBzY2FsYXIgY29u
c3RydWN0b3IgdGhhdCB0YWtlcyBUeXBlIGFzIGEgcGFyYW1ldGVyCisvLyAgLSBhIGNvbXBvdW5k
IGNvbnN0cnVjdG9yCisvLyBIb3dldmVyIGlmIHdlIGRlZmluZSB0aGUgY29tcG91bmQgY29uc3Ry
dWN0b3IgZm9yIHdoZW4gaXQgaGFzIGEgc2luZ2xlIGFyZ3VtZW50cywgdGhlbiBjYWxsaW5nCisv
LyBWZWN0b3IyKDAuMCkgd2lsbCBiZSBhbWJpZ3VvdXMuIFRvIHNvbHZlIHRoaXMgd2UgdGFrZSBh
ZHZhbnRhZ2Ugb2YgdGhlcmUgYmVpbmcgYSBzaW5nbGUgY29tcG91bmQKKy8vIGNvbnN0cnVjdG9y
IHdpdGggYSBzaW5nbGUgYXJndW1lbnQsIHdoaWNoIGlzIHRoZSBjb3B5IGNvbnN0cnVjdG9yLiBX
ZSBlbmQgdXAgd2l0aCB0aHJlZQorLy8gY29uc3RydWN0b3JzOgorLy8gIC0gdGhlIHNjYWxhciBj
b25zdHJ1Y3RvcgorLy8gIC0gdGhlIGNvcHkgY29uc3RydWN0b3IKKy8vICAtIHRoZSBjb21wb3Vu
ZCBjb25zdHJ1Y3RvciBmb3IgdHdvIG9yIG1vcmUgYXJndW1lbnRzLCBoZW5jZSB0aGUgYXJnMSwg
YW5kIGFyZzIgaGVyZS4KK3RlbXBsYXRlIDxzaXplX3QgRGltZW5zaW9uLCB0eXBlbmFtZSBUeXBl
PgordGVtcGxhdGUgPHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHR5cGVuYW1lLi4uIEFy
Z3M+CitWZWN0b3JCYXNlPERpbWVuc2lvbiwgVHlwZT46OlZlY3RvckJhc2UoY29uc3QgQXJnMSAm
YXJnMSwgY29uc3QgQXJnMiAmYXJnMiwgY29uc3QgQXJncyAmLi4uIGFyZ3MpCit7CisgICAgaW5p
dFdpdGhMaXN0PDA+KGFyZzEsIGFyZzIsIGFyZ3MuLi4pOworfQorCit0ZW1wbGF0ZSA8c2l6ZV90
IERpbWVuc2lvbiwgdHlwZW5hbWUgVHlwZT4KK3RlbXBsYXRlIDxzaXplX3QgQ3VycmVudEluZGV4
LCBzaXplX3QgT3RoZXJEaW1lbnNpb24sIHR5cGVuYW1lIE90aGVyVHlwZSwgdHlwZW5hbWUuLi4g
QXJncz4KK3ZvaWQgVmVjdG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+Ojppbml0V2l0aExpc3QoY29u
c3QgVmVjdG9yPE90aGVyRGltZW5zaW9uLCBPdGhlclR5cGU+ICZhcmcxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBcmdzICYuLi4gYXJncykK
K3sKKyAgICBzdGF0aWNfYXNzZXJ0KEN1cnJlbnRJbmRleCArIE90aGVyRGltZW5zaW9uIDw9IERp
bWVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICJUb28gbXVjaCBkYXRhIGluIHRoZSB2ZWN0b3Ig
Y29uc3RydWN0b3IuIik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBPdGhlckRpbWVuc2lv
bjsgKytpKQorICAgIHsKKyAgICAgICAgbURhdGFbQ3VycmVudEluZGV4ICsgaV0gPSBzdGF0aWNf
Y2FzdDxUeXBlPihhcmcxLm1EYXRhW2ldKTsKKyAgICB9CisgICAgaW5pdFdpdGhMaXN0PEN1cnJl
bnRJbmRleCArIE90aGVyRGltZW5zaW9uPihhcmdzLi4uKTsKK30KKwordGVtcGxhdGUgPHNpemVf
dCBEaW1lbnNpb24sIHR5cGVuYW1lIFR5cGU+Cit0ZW1wbGF0ZSA8c2l6ZV90IEN1cnJlbnRJbmRl
eCwgdHlwZW5hbWUgT3RoZXJUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgordHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19hcml0aG1ldGljPE90aGVyVHlwZT46OnZhbHVlPjo6dHlwZQorVmVj
dG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+Ojppbml0V2l0aExpc3QoT3RoZXJUeXBlIGFyZzEsIGNv
bnN0IEFyZ3MgJi4uLiBhcmdzKQoreworICAgIHN0YXRpY19hc3NlcnQoQ3VycmVudEluZGV4ICsg
MSA8PSBEaW1lbnNpb24sICJUb28gbXVjaCBkYXRhIGluIHRoZSB2ZWN0b3IgY29uc3RydWN0b3Iu
Iik7CisgICAgbURhdGFbQ3VycmVudEluZGV4XSA9IHN0YXRpY19jYXN0PFR5cGU+KGFyZzEpOwor
ICAgIGluaXRXaXRoTGlzdDxDdXJyZW50SW5kZXggKyAxPihhcmdzLi4uKTsKK30KKwordGVtcGxh
dGUgPHNpemVfdCBEaW1lbnNpb24sIHR5cGVuYW1lIFR5cGU+Cit0ZW1wbGF0ZSA8c2l6ZV90IEN1
cnJlbnRJbmRleD4KK3ZvaWQgVmVjdG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+Ojppbml0V2l0aExp
c3QoKSBjb25zdAoreworICAgIHN0YXRpY19hc3NlcnQoQ3VycmVudEluZGV4ID09IERpbWVuc2lv
biwgIk5vdCBlbm91Z2ggZGF0YSBpbiB0aGUgdmVjdG9yIGNvbnN0cnVjdG9yLiIpOworfQorCit0
ZW1wbGF0ZSA8c2l6ZV90IERpbWVuc2lvbiwgdHlwZW5hbWUgVHlwZT4KK1ZlY3RvcjxEaW1lbnNp
b24sIFR5cGU+IFZlY3RvckJhc2U8RGltZW5zaW9uLCBUeXBlPjo6TG9hZChjb25zdCBUeXBlICpz
b3VyY2UpCit7CisgICAgVmVjdG9yPERpbWVuc2lvbiwgVHlwZT4gcmVzdWx0OworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgRGltZW5zaW9uOyArK2kpCisgICAgeworICAgICAgICByZXN1bHQu
bURhdGFbaV0gPSBzb3VyY2VbaV07CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3Rl
bXBsYXRlIDxzaXplX3QgRGltZW5zaW9uLCB0eXBlbmFtZSBUeXBlPgordm9pZCBWZWN0b3JCYXNl
PERpbWVuc2lvbiwgVHlwZT46OlN0b3JlKGNvbnN0IFZlY3RvcjxEaW1lbnNpb24sIFR5cGU+ICZz
b3VyY2UsIFR5cGUgKmRlc3RpbmF0aW9uKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
RGltZW5zaW9uOyArK2kpCisgICAgeworICAgICAgICBkZXN0aW5hdGlvbltpXSA9IHNvdXJjZS5t
RGF0YVtpXTsKKyAgICB9Cit9CisKKy8vIEltcGxlbWVudGF0aW9uIG9mIGJhc2ljIGFyaXRobWV0
aWMgb3BlcmF0aW9ucwordGVtcGxhdGUgPHNpemVfdCBEaW1lbnNpb24sIHR5cGVuYW1lIFR5cGU+
CitWZWN0b3I8RGltZW5zaW9uLCBUeXBlPiBWZWN0b3JCYXNlPERpbWVuc2lvbiwgVHlwZT46Om9w
ZXJhdG9yKygpIGNvbnN0Cit7CisgICAgVmVjdG9yPERpbWVuc2lvbiwgVHlwZT4gcmVzdWx0Owor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgRGltZW5zaW9uOyArK2kpCisgICAgeworICAgICAg
ICByZXN1bHQubURhdGFbaV0gPSArbURhdGFbaV07CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK3RlbXBsYXRlIDxzaXplX3QgRGltZW5zaW9uLCB0eXBlbmFtZSBUeXBlPgorVmVjdG9y
PERpbWVuc2lvbiwgVHlwZT4gVmVjdG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+OjpvcGVyYXRvci0o
KSBjb25zdAoreworICAgIFZlY3RvcjxEaW1lbnNpb24sIFR5cGU+IHJlc3VsdDsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IERpbWVuc2lvbjsgKytpKQorICAgIHsKKyAgICAgICAgcmVzdWx0
Lm1EYXRhW2ldID0gLW1EYXRhW2ldOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0
ZW1wbGF0ZSA8c2l6ZV90IERpbWVuc2lvbiwgdHlwZW5hbWUgVHlwZT4KK1ZlY3RvcjxEaW1lbnNp
b24sIFR5cGU+IFZlY3RvckJhc2U8RGltZW5zaW9uLCBUeXBlPjo6b3BlcmF0b3IrKAorICAgIGNv
bnN0IFZlY3RvcjxEaW1lbnNpb24sIFR5cGU+ICZvdGhlcikgY29uc3QKK3sKKyAgICBWZWN0b3I8
RGltZW5zaW9uLCBUeXBlPiByZXN1bHQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBEaW1l
bnNpb247ICsraSkKKyAgICB7CisgICAgICAgIHJlc3VsdC5tRGF0YVtpXSA9IG1EYXRhW2ldICsg
b3RoZXIubURhdGFbaV07CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRl
IDxzaXplX3QgRGltZW5zaW9uLCB0eXBlbmFtZSBUeXBlPgorVmVjdG9yPERpbWVuc2lvbiwgVHlw
ZT4gVmVjdG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+OjpvcGVyYXRvci0oCisgICAgY29uc3QgVmVj
dG9yPERpbWVuc2lvbiwgVHlwZT4gJm90aGVyKSBjb25zdAoreworICAgIFZlY3RvcjxEaW1lbnNp
b24sIFR5cGU+IHJlc3VsdDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IERpbWVuc2lvbjsg
KytpKQorICAgIHsKKyAgICAgICAgcmVzdWx0Lm1EYXRhW2ldID0gbURhdGFbaV0gLSBvdGhlci5t
RGF0YVtpXTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVtcGxhdGUgPHNpemVf
dCBEaW1lbnNpb24sIHR5cGVuYW1lIFR5cGU+CitWZWN0b3I8RGltZW5zaW9uLCBUeXBlPiBWZWN0
b3JCYXNlPERpbWVuc2lvbiwgVHlwZT46Om9wZXJhdG9yKigKKyAgICBjb25zdCBWZWN0b3I8RGlt
ZW5zaW9uLCBUeXBlPiAmb3RoZXIpIGNvbnN0Cit7CisgICAgVmVjdG9yPERpbWVuc2lvbiwgVHlw
ZT4gcmVzdWx0OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgRGltZW5zaW9uOyArK2kpCisg
ICAgeworICAgICAgICByZXN1bHQubURhdGFbaV0gPSBtRGF0YVtpXSAqIG90aGVyLm1EYXRhW2ld
OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZSA8c2l6ZV90IERpbWVu
c2lvbiwgdHlwZW5hbWUgVHlwZT4KK1ZlY3RvcjxEaW1lbnNpb24sIFR5cGU+IFZlY3RvckJhc2U8
RGltZW5zaW9uLCBUeXBlPjo6b3BlcmF0b3IvKAorICAgIGNvbnN0IFZlY3RvcjxEaW1lbnNpb24s
IFR5cGU+ICZvdGhlcikgY29uc3QKK3sKKyAgICBWZWN0b3I8RGltZW5zaW9uLCBUeXBlPiByZXN1
bHQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBEaW1lbnNpb247ICsraSkKKyAgICB7Cisg
ICAgICAgIHJlc3VsdC5tRGF0YVtpXSA9IG1EYXRhW2ldIC8gb3RoZXIubURhdGFbaV07CisgICAg
fQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlIDxzaXplX3QgRGltZW5zaW9uLCB0
eXBlbmFtZSBUeXBlPgorVmVjdG9yPERpbWVuc2lvbiwgVHlwZT4gVmVjdG9yQmFzZTxEaW1lbnNp
b24sIFR5cGU+OjpvcGVyYXRvciooVHlwZSBvdGhlcikgY29uc3QKK3sKKyAgICBWZWN0b3I8RGlt
ZW5zaW9uLCBUeXBlPiByZXN1bHQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBEaW1lbnNp
b247ICsraSkKKyAgICB7CisgICAgICAgIHJlc3VsdC5tRGF0YVtpXSA9IG1EYXRhW2ldICogb3Ro
ZXI7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRlIDxzaXplX3QgRGlt
ZW5zaW9uLCB0eXBlbmFtZSBUeXBlPgorVmVjdG9yPERpbWVuc2lvbiwgVHlwZT4gVmVjdG9yQmFz
ZTxEaW1lbnNpb24sIFR5cGU+OjpvcGVyYXRvci8oVHlwZSBvdGhlcikgY29uc3QKK3sKKyAgICBW
ZWN0b3I8RGltZW5zaW9uLCBUeXBlPiByZXN1bHQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBEaW1lbnNpb247ICsraSkKKyAgICB7CisgICAgICAgIHJlc3VsdC5tRGF0YVtpXSA9IG1EYXRh
W2ldIC8gb3RoZXI7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIEltcGxlbWVu
dGF0aW9uIG9mIGNvbXBvdW5kIGFyaXRobWV0aWMgb3BlcmF0aW9ucwordGVtcGxhdGUgPHNpemVf
dCBEaW1lbnNpb24sIHR5cGVuYW1lIFR5cGU+CitWZWN0b3I8RGltZW5zaW9uLCBUeXBlPiAmVmVj
dG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+OjpvcGVyYXRvcis9KAorICAgIGNvbnN0IFZlY3RvcjxE
aW1lbnNpb24sIFR5cGU+ICZvdGhlcikKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IERp
bWVuc2lvbjsgKytpKQorICAgIHsKKyAgICAgICAgbURhdGFbaV0gKz0gb3RoZXIubURhdGFbaV07
CisgICAgfQorICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxWZWN0b3I8RGltZW5zaW9uLCBU
eXBlPiAqPih0aGlzKTsKK30KKwordGVtcGxhdGUgPHNpemVfdCBEaW1lbnNpb24sIHR5cGVuYW1l
IFR5cGU+CitWZWN0b3I8RGltZW5zaW9uLCBUeXBlPiAmVmVjdG9yQmFzZTxEaW1lbnNpb24sIFR5
cGU+OjpvcGVyYXRvci09KAorICAgIGNvbnN0IFZlY3RvcjxEaW1lbnNpb24sIFR5cGU+ICZvdGhl
cikKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IERpbWVuc2lvbjsgKytpKQorICAgIHsK
KyAgICAgICAgbURhdGFbaV0gLT0gb3RoZXIubURhdGFbaV07CisgICAgfQorICAgIHJldHVybiAq
cmVpbnRlcnByZXRfY2FzdDxWZWN0b3I8RGltZW5zaW9uLCBUeXBlPiAqPih0aGlzKTsKK30KKwor
dGVtcGxhdGUgPHNpemVfdCBEaW1lbnNpb24sIHR5cGVuYW1lIFR5cGU+CitWZWN0b3I8RGltZW5z
aW9uLCBUeXBlPiAmVmVjdG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+OjpvcGVyYXRvcio9KAorICAg
IGNvbnN0IFZlY3RvcjxEaW1lbnNpb24sIFR5cGU+ICZvdGhlcikKK3sKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IERpbWVuc2lvbjsgKytpKQorICAgIHsKKyAgICAgICAgbURhdGFbaV0gKj0g
b3RoZXIubURhdGFbaV07CisgICAgfQorICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxWZWN0
b3I8RGltZW5zaW9uLCBUeXBlPiAqPih0aGlzKTsKK30KKwordGVtcGxhdGUgPHNpemVfdCBEaW1l
bnNpb24sIHR5cGVuYW1lIFR5cGU+CitWZWN0b3I8RGltZW5zaW9uLCBUeXBlPiAmVmVjdG9yQmFz
ZTxEaW1lbnNpb24sIFR5cGU+OjpvcGVyYXRvci89KAorICAgIGNvbnN0IFZlY3RvcjxEaW1lbnNp
b24sIFR5cGU+ICZvdGhlcikKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IERpbWVuc2lv
bjsgKytpKQorICAgIHsKKyAgICAgICAgbURhdGFbaV0gLz0gb3RoZXIubURhdGFbaV07CisgICAg
fQorICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxWZWN0b3I8RGltZW5zaW9uLCBUeXBlPiAq
Pih0aGlzKTsKK30KKwordGVtcGxhdGUgPHNpemVfdCBEaW1lbnNpb24sIHR5cGVuYW1lIFR5cGU+
CitWZWN0b3I8RGltZW5zaW9uLCBUeXBlPiAmVmVjdG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+Ojpv
cGVyYXRvcio9KFR5cGUgb3RoZXIpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBEaW1l
bnNpb247ICsraSkKKyAgICB7CisgICAgICAgIG1EYXRhW2ldICo9IG90aGVyOworICAgIH0KKyAg
ICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8VmVjdG9yPERpbWVuc2lvbiwgVHlwZT4gKj4odGhp
cyk7Cit9CisKK3RlbXBsYXRlIDxzaXplX3QgRGltZW5zaW9uLCB0eXBlbmFtZSBUeXBlPgorVmVj
dG9yPERpbWVuc2lvbiwgVHlwZT4gJlZlY3RvckJhc2U8RGltZW5zaW9uLCBUeXBlPjo6b3BlcmF0
b3IvPShUeXBlIG90aGVyKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgRGltZW5zaW9u
OyArK2kpCisgICAgeworICAgICAgICBtRGF0YVtpXSAvPSBvdGhlcjsKKyAgICB9CisgICAgcmV0
dXJuICpyZWludGVycHJldF9jYXN0PFZlY3RvcjxEaW1lbnNpb24sIFR5cGU+ICo+KHRoaXMpOwor
fQorCisvLyBJbXBsZW1lbnRhdGlvbiBvZiBjb21wYXJpc29uIG9wZXJhdG9ycwordGVtcGxhdGUg
PHNpemVfdCBEaW1lbnNpb24sIHR5cGVuYW1lIFR5cGU+Citib29sIFZlY3RvckJhc2U8RGltZW5z
aW9uLCBUeXBlPjo6b3BlcmF0b3I9PShjb25zdCBWZWN0b3I8RGltZW5zaW9uLCBUeXBlPiAmb3Ro
ZXIpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBEaW1lbnNpb247ICsraSkK
KyAgICB7CisgICAgICAgIGlmIChtRGF0YVtpXSAhPSBvdGhlci5tRGF0YVtpXSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorCit0ZW1wbGF0ZSA8c2l6ZV90IERpbWVuc2lvbiwgdHlwZW5hbWUgVHlwZT4K
K2Jvb2wgVmVjdG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+OjpvcGVyYXRvciE9KGNvbnN0IFZlY3Rv
cjxEaW1lbnNpb24sIFR5cGU+ICZvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7Cit9CisKKy8vIEltcGxlbWVudGF0aW9uIG9mIG90aGVyIGFyaXRobWV0aWMgb3Bl
cmF0aW9ucwordGVtcGxhdGUgPHNpemVfdCBEaW1lbnNpb24sIHR5cGVuYW1lIFR5cGU+CitUeXBl
IFZlY3RvckJhc2U8RGltZW5zaW9uLCBUeXBlPjo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICBzdGF0
aWNfYXNzZXJ0KHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VHlwZT46OnZhbHVlLAorICAgICAgICAg
ICAgICAgICAgIlZlY3Rvck46Omxlbmd0aCBpcyBvbmx5IGRlZmluZWQgZm9yIGZsb2F0aW5nIHBv
aW50IHZlY3RvcnMiKTsKKyAgICByZXR1cm4gc3RkOjpzcXJ0KGxlbmd0aFNxdWFyZWQoKSk7Cit9
CisKK3RlbXBsYXRlIDxzaXplX3QgRGltZW5zaW9uLCB0eXBlbmFtZSBUeXBlPgorVHlwZSBWZWN0
b3JCYXNlPERpbWVuc2lvbiwgVHlwZT46Omxlbmd0aFNxdWFyZWQoKSBjb25zdAoreworICAgIHJl
dHVybiBkb3QoKnRoaXMpOworfQorCit0ZW1wbGF0ZSA8c2l6ZV90IERpbWVuc2lvbiwgdHlwZW5h
bWUgVHlwZT4KK1R5cGUgVmVjdG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+Ojpkb3QoY29uc3QgVmVj
dG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+ICZvdGhlcikgY29uc3QKK3sKKyAgICBUeXBlIHN1bSA9
IFR5cGUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IERpbWVuc2lvbjsgKytpKQorICAg
IHsKKyAgICAgICAgc3VtICs9IG1EYXRhW2ldICogb3RoZXIubURhdGFbaV07CisgICAgfQorICAg
IHJldHVybiBzdW07Cit9CisKK3RlbXBsYXRlIDxzaXplX3QgRGltZW5zaW9uLCB0eXBlbmFtZSBU
eXBlPgorVmVjdG9yPERpbWVuc2lvbiwgVHlwZT4gVmVjdG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+
Ojpub3JtYWxpemVkKCkgY29uc3QKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfZmxvYXRp
bmdfcG9pbnQ8VHlwZT46OnZhbHVlLAorICAgICAgICAgICAgICAgICAgIlZlY3Rvck46Om5vcm1h
bGl6ZWQgaXMgb25seSBkZWZpbmVkIGZvciBmbG9hdGluZyBwb2ludCB2ZWN0b3JzIik7CisgICAg
cmV0dXJuICp0aGlzIC8gbGVuZ3RoKCk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPgor
VmVjdG9yPDMsIFR5cGU+IFZlY3RvcjwzLCBUeXBlPjo6Y3Jvc3MoY29uc3QgVmVjdG9yPDMsIFR5
cGU+ICZvdGhlcikgY29uc3QKK3sKKyAgICByZXR1cm4gVmVjdG9yPDMsIFR5cGU+KHkoKSAqIG90
aGVyLnooKSAtIHooKSAqIG90aGVyLnkoKSwgeigpICogb3RoZXIueCgpIC0geCgpICogb3RoZXIu
eigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgeCgpICogb3RoZXIueSgpIC0geSgpICog
b3RoZXIueCgpKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCisKKyNlbmRpZiAgLy8gQ09N
TU9OX1ZFQ1RPUl9VVElMU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbW1vbi92ZWN0b3JfdXRpbHNfdW5pdHRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbW1vbi92ZWN0b3JfdXRpbHNfdW5pdHRlc3QuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlj
MTE4NGRhZjQ5OTM0NmEzYWYwNjAxMjBmZWM2MmRmMzg4M2UwMTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3ZlY3Rvcl91dGlsc191bml0dGVz
dC5jcHAKQEAgLTAsMCArMSwyMjUgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyB2ZWN0b3JfdXRpbHNfdW5pdHRl
c3RzLmNwcDogVW5pdCB0ZXN0cyBmb3IgdGhlIHZlY3RvciB1dGlscy4KKy8vCisKKyNpbmNsdWRl
ICJ2ZWN0b3JfdXRpbHMuaCIKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKKy8vIEZpcnN0IHRlc3QgdGhhdCBjb21w
YXJpbmcgdmVjdG9ycyB3b3JrCitURVNUKFZlY3RvclV0aWxzVGVzdCwgQ29tcGFyaXNvbikKK3sK
KyAgICAvLyBEb24ndCB1c2UgQVNTRVJUX0VRIGF0IGZpcnN0IGJlY2F1c2UgdGhlID09IGlzIG1v
cmUgaGlkZGVuCisgICAgQVNTRVJUX1RSVUUoVmVjdG9yMigyLjAsIDMuMCkgPT0gVmVjdG9yMigy
LjAsIDMuMCkpOworICAgIEFTU0VSVF9UUlVFKFZlY3RvcjIoMi4wLCAzLjApICE9IFZlY3RvcjIo
Mi4wLCA0LjApKTsKKworICAgIC8vIENoZWNrIEFTU0VSVF9FUSBhbmQgQVNTRVJUX05FIHdvcmsg
Y29ycmVjdGx5CisgICAgQVNTRVJUX0VRKFZlY3RvcjIoMi4wLCAzLjApLCBWZWN0b3IyKDIuMCwg
My4wKSk7CisgICAgQVNTRVJUX05FKFZlY3RvcjIoMi4wLCAzLjApLCBWZWN0b3IyKDIuMCwgNC4w
KSk7CisKKyAgICAvLyBDaGVjayBjb21wYXJpc29uIHdvcmtzIG9uIGFsbCBlbGVtZW50cworICAg
IEFTU0VSVF9FUShWZWN0b3I0KDAuMCksIFZlY3RvcjQoMC4wKSk7CisgICAgQVNTRVJUX05FKFZl
Y3RvcjQoMS4wLCAwLjAsIDAuMCwgMC4wKSwgVmVjdG9yNCgwLjApKTsKKyAgICBBU1NFUlRfTkUo
VmVjdG9yNCgwLjAsIDEuMCwgMC4wLCAwLjApLCBWZWN0b3I0KDAuMCkpOworICAgIEFTU0VSVF9O
RShWZWN0b3I0KDAuMCwgMC4wLCAxLjAsIDAuMCksIFZlY3RvcjQoMC4wKSk7CisgICAgQVNTRVJU
X05FKFZlY3RvcjQoMC4wLCAwLjAsIDAuMCwgMS4wKSwgVmVjdG9yNCgwLjApKTsKK30KKworLy8g
VGVzdCBpbmRleGluZworVEVTVChWZWN0b3JVdGlsc1Rlc3QsIEluZGV4aW5nKQoreworICAgIFZl
Y3RvcjIgdmVjKDEuMCwgMi4wKTsKKyAgICBBU1NFUlRfRVEoMS4wLCB2ZWNbMF0pOworICAgIEFT
U0VSVF9FUSgyLjAsIHZlY1sxXSk7CisKKyAgICB2ZWNbMF0gPSAzLjA7CisgICAgdmVjWzFdID0g
NC4wOworICAgIEFTU0VSVF9FUShWZWN0b3IyKDMuMCwgNC4wKSwgdmVjKTsKK30KKworLy8gVGVz
dCBmb3IgdGhlIHZhcmlvdXMgY29uc3RydWN0b3JzCitURVNUKFZlY3RvclV0aWxzVGVzdCwgQ29u
c3RydWN0b3JzKQoreworICAgIC8vIENvbnN0cnVjdG9yIGluaXRpYWxpemluZyBhbGwgdG8gYSBz
aW5nbGUgZWxlbWVudAorICAgIHsKKyAgICAgICAgVmVjdG9yMiB2ZWMoMy4wKTsKKyAgICAgICAg
QVNTRVJUX0VRKDMuMCwgdmVjWzBdKTsKKyAgICAgICAgQVNTRVJUX0VRKDMuMCwgdmVjWzFdKTsK
KyAgICB9CisKKyAgICAvLyBDb25zdHJ1Y3RvciBpbml0aWFsaXppbmcgZnJvbSBhbm90aGVyIFZl
Y3RvcgorICAgIHsKKyAgICAgICAgVmVjdG9yMiB2ZWMoVmVjdG9yMigxLjAsIDIuMCkpOworICAg
ICAgICBBU1NFUlRfRVEoMS4wLCB2ZWNbMF0pOworICAgICAgICBBU1NFUlRfRVEoMi4wLCB2ZWNb
MV0pOworICAgIH0KKworICAgIC8vIE1peGVkIGNvbnN0cnVjdG9yCisgICAgeworICAgICAgICBW
ZWN0b3I0IHZlYygxLjAsIFZlY3RvcjIoMi4wLCAzLjApLCA0LjApOworICAgICAgICBBU1NFUlRf
RVEoMS4wLCB2ZWNbMF0pOworICAgICAgICBBU1NFUlRfRVEoMi4wLCB2ZWNbMV0pOworICAgICAg
ICBBU1NFUlRfRVEoMy4wLCB2ZWNbMl0pOworICAgICAgICBBU1NFUlRfRVEoNC4wLCB2ZWNbM10p
OworICAgIH0KK30KKworLy8gVGVzdCBhY2Nlc3NpbmcgdGhlIGRhdGEgZGlyZWN0bHkKK1RFU1Qo
VmVjdG9yVXRpbHNUZXN0LCBEYXRhQWNjZXNzKQoreworICAgIFZlY3RvcjIgdmVjKDEuMCwgMi4w
KTsKKyAgICBBU1NFUlRfRVEoMnUsIHZlYy5zaXplKCkpOworCisgICAgQVNTRVJUX0VRKDEuMCwg
dmVjLmRhdGEoKVswXSk7CisgICAgQVNTRVJUX0VRKDIuMCwgdmVjLmRhdGEoKVsxXSk7CisKKyAg
ICB2ZWMuZGF0YSgpWzBdID0gMy4wOworICAgIHZlYy5kYXRhKClbMV0gPSA0LjA7CisKKyAgICBB
U1NFUlRfRVEoVmVjdG9yMigzLjAsIDQuMCksIHZlYyk7Cit9CisKKy8vIFRlc3QgYWNjZXNzaW5n
IHRoZSBkYXRhIGRpcmVjdGx5CitURVNUKFZlY3RvclV0aWxzVGVzdCwgTG9hZFN0b3JlKQorewor
ICAgIGZsb2F0IGRhdGFbXSA9IHsxLjAsIDIuMH07CisKKyAgICBWZWN0b3IyIHZlYyA9IFZlY3Rv
cjI6OkxvYWQoZGF0YSk7CisKKyAgICBBU1NFUlRfRVEoMS4wLCB2ZWMuZGF0YSgpWzBdKTsKKyAg
ICBBU1NFUlRfRVEoMi4wLCB2ZWMuZGF0YSgpWzFdKTsKKworICAgIHZlYyA9IFZlY3RvcjIoMy4w
LCA0LjApOworICAgIFZlY3RvcjI6OlN0b3JlKHZlYywgZGF0YSk7CisKKyAgICBBU1NFUlRfRVEo
My4wLCBkYXRhWzBdKTsKKyAgICBBU1NFUlRfRVEoNC4wLCBkYXRhWzFdKTsKK30KKworLy8gVGVz
dCBiYXNpYyBhcml0aG1ldGljIG9wZXJhdGlvbnMKK1RFU1QoVmVjdG9yVXRpbHNUZXN0LCBCYXNp
Y0FyaXRobWV0aWMpCit7CisgICAgQVNTRVJUX0VRKFZlY3RvcjIoMi4wLCAzLjApLCArVmVjdG9y
MigyLjAsIDMuMCkpOworICAgIEFTU0VSVF9FUShWZWN0b3IyKC0yLjAsIC0zLjApLCAtVmVjdG9y
MigyLjAsIDMuMCkpOworICAgIEFTU0VSVF9FUShWZWN0b3IyKDQuMCwgNi4wKSwgVmVjdG9yMigx
LjAsIDIuMCkgKyBWZWN0b3IyKDMuMCwgNC4wKSk7CisgICAgQVNTRVJUX0VRKFZlY3RvcjIoLTIu
MCwgLTIuMCksIFZlY3RvcjIoMS4wLCAyLjApIC0gVmVjdG9yMigzLjAsIDQuMCkpOworICAgIEFT
U0VSVF9FUShWZWN0b3IyKDMuMCwgOC4wKSwgVmVjdG9yMigxLjAsIDIuMCkgKiBWZWN0b3IyKDMu
MCwgNC4wKSk7CisgICAgQVNTRVJUX0VRKFZlY3RvcjIoMy4wLCAyLjApLCBWZWN0b3IyKDMuMCwg
NC4wKSAvIFZlY3RvcjIoMS4wLCAyLjApKTsKKworICAgIEFTU0VSVF9FUShWZWN0b3IyKDIuMCwg
NC4wKSwgVmVjdG9yMigxLjAsIDIuMCkgKiAyKTsKKyAgICBBU1NFUlRfRVEoVmVjdG9yMigyLjAs
IDQuMCksIDIgKiBWZWN0b3IyKDEuMCwgMi4wKSk7CisgICAgQVNTRVJUX0VRKFZlY3RvcjIoMC41
LCAxLjApLCBWZWN0b3IyKDEuMCwgMi4wKSAvIDIpOworfQorCisvLyBUZXN0IGNvbXBvdW5kIGFy
aXRobWV0aWMgb3BlcmF0aW9ucworVEVTVChWZWN0b3JVdGlsc1Rlc3QsIENvbXBvdW5kQXJpdGht
ZXRpYykKK3sKKyAgICB7CisgICAgICAgIFZlY3RvcjIgdmVjKDEuMCwgMi4wKTsKKyAgICAgICAg
dmVjICs9IFZlY3RvcjIoMy4wLCA0LjApOworICAgICAgICBBU1NFUlRfRVEoVmVjdG9yMig0LjAs
IDYuMCksIHZlYyk7CisgICAgfQorICAgIHsKKyAgICAgICAgVmVjdG9yMiB2ZWMoMS4wLCAyLjAp
OworICAgICAgICB2ZWMgLT0gVmVjdG9yMigzLjAsIDQuMCk7CisgICAgICAgIEFTU0VSVF9FUShW
ZWN0b3IyKC0yLjAsIC0yLjApLCB2ZWMpOworICAgIH0KKyAgICB7CisgICAgICAgIFZlY3RvcjIg
dmVjKDEuMCwgMi4wKTsKKyAgICAgICAgdmVjICo9IFZlY3RvcjIoMy4wLCA0LjApOworICAgICAg
ICBBU1NFUlRfRVEoVmVjdG9yMigzLjAsIDguMCksIHZlYyk7CisgICAgfQorICAgIHsKKyAgICAg
ICAgVmVjdG9yMiB2ZWMoMy4wLCA0LjApOworICAgICAgICB2ZWMgLz0gVmVjdG9yMigxLjAsIDIu
MCk7CisgICAgICAgIEFTU0VSVF9FUShWZWN0b3IyKDMuMCwgMi4wKSwgdmVjKTsKKyAgICB9Cisg
ICAgeworICAgICAgICBWZWN0b3IyIHZlYygxLjAsIDIuMCk7CisgICAgICAgIHZlYyAqPSAyLjA7
CisgICAgICAgIEFTU0VSVF9FUShWZWN0b3IyKDIuMCwgNC4wKSwgdmVjKTsKKyAgICB9CisgICAg
eworICAgICAgICBWZWN0b3IyIHZlYygxLjAsIDIuMCk7CisgICAgICAgIHZlYyAvPSAyLjA7Cisg
ICAgICAgIEFTU0VSVF9FUShWZWN0b3IyKDAuNSwgMS4wKSwgdmVjKTsKKyAgICB9Cit9CisKKy8v
IFRlc3Qgb3RoZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zCitURVNUKFZlY3RvclV0aWxzVGVzdCwg
T3RoZXJBcml0aG1ldGljT3BlcmF0aW9ucykKK3sKKyAgICBWZWN0b3IyIHZlYygzLjAsIDQuMCk7
CisKKyAgICBBU1NFUlRfRVEoMjUuMCwgdmVjLmxlbmd0aFNxdWFyZWQoKSk7CisgICAgQVNTRVJU
X0VRKDUuMCwgdmVjLmxlbmd0aCgpKTsKKyAgICBBU1NFUlRfRVEoVmVjdG9yMigwLjYsIDAuOCks
IHZlYy5ub3JtYWxpemVkKCkpOworCisgICAgQVNTRVJUX0VRKDExLjAsIHZlYy5kb3QoVmVjdG9y
MigxLjAsIDIuMCkpKTsKK30KKworLy8gVGVzdCBlbGVtZW50IHNob3J0Y3V0cworVEVTVChWZWN0
b3JVdGlsc1Rlc3QsIEVsZW1lbnRTaG9ydGN1dHMpCit7CisgICAgVmVjdG9yMiB2ZWMyKDEuMCwg
Mi4wKTsKKyAgICBWZWN0b3IzIHZlYzMoMS4wLCAyLjAsIDMuMCk7CisgICAgVmVjdG9yNCB2ZWM0
KDEuMCwgMi4wLCAzLjAsIDQuMCk7CisKKyAgICBBU1NFUlRfRVEoMS4wLCB2ZWMyLngoKSk7Cisg
ICAgQVNTRVJUX0VRKDEuMCwgdmVjMy54KCkpOworICAgIEFTU0VSVF9FUSgxLjAsIHZlYzQueCgp
KTsKKworICAgIEFTU0VSVF9FUSgyLjAsIHZlYzIueSgpKTsKKyAgICBBU1NFUlRfRVEoMi4wLCB2
ZWMzLnkoKSk7CisgICAgQVNTRVJUX0VRKDIuMCwgdmVjNC55KCkpOworCisgICAgQVNTRVJUX0VR
KDMuMCwgdmVjMy56KCkpOworICAgIEFTU0VSVF9FUSgzLjAsIHZlYzQueigpKTsKKworICAgIEFT
U0VSVF9FUSg0LjAsIHZlYzQudygpKTsKKworICAgIHZlYzIueCgpID0gMC4wOworICAgIEFTU0VS
VF9FUShWZWN0b3IyKDAuMCwgMi4wKSwgdmVjMik7Cit9CisKKy8vIFRlc3QgdGhlIGNyb3NzIHBy
b2R1Y3QKK1RFU1QoVmVjdG9yVXRpbHNUZXN0LCBDcm9zc1Byb2R1Y3QpCit7CisgICAgQVNTRVJU
X0VRKFZlY3RvcjMoMC4wLCAwLjAsIDEuMCksIFZlY3RvcjMoMS4wLCAwLjAsIDAuMCkuY3Jvc3Mo
VmVjdG9yMygwLjAsIDEuMCwgMC4wKSkpOworICAgIEFTU0VSVF9FUShWZWN0b3IzKC0zLjAsIDYu
MCwgLTMuMCksIFZlY3RvcjMoMS4wLCAyLjAsIDMuMCkuY3Jvc3MoVmVjdG9yMyg0LjAsIDUuMCwg
Ni4wKSkpOworfQorCisvLyBUZXN0IGJhc2ljIGZ1bmN0aW9uYWxpdHkgb2YgaW50IHZlY3RvcnMK
K1RFU1QoVmVjdG9yVXRpbHNUZXN0LCBJbnRWZWN0b3IpCit7CisgICAgVmVjdG9yMkkgdmVjKDAp
OworCisgICAgaW50ICpkYXRhID0gdmVjLmRhdGEoKTsKKyAgICBkYXRhWzFdICAgPSAxOworCisg
ICAgQVNTRVJUX0VRKDAsIHZlY1swXSk7CisgICAgQVNTRVJUX0VRKDEsIHZlY1sxXSk7Cit9CisK
Ky8vIFRlc3QgYmFzaWMgZnVuY3Rpb25hbGl0eSBvZiBpbnQgdmVjdG9ycworVEVTVChWZWN0b3JV
dGlsc1Rlc3QsIFVJbnRWZWN0b3IpCit7CisgICAgVmVjdG9yMlUgdmVjKDApOworCisgICAgdW5z
aWduZWQgaW50ICpkYXRhID0gdmVjLmRhdGEoKTsKKyAgICBkYXRhWzFdICAgICAgICAgICAgPSAx
OworCisgICAgQVNTRVJUX0VRKDB1LCB2ZWNbMF0pOworICAgIEFTU0VSVF9FUSgxdSwgdmVjWzFd
KTsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyLmd5cGkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIuZ3lwaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc1ZWU3
YmVlOWJhNWU0MWMyYzIwMzQzZGE5YjQ4ZjAwODIzZDliNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIuZ3lwaQorKysgL2Rldi9udWxsCkBAIC0xLDM4NyArMCwwIEBACi0jIENvcHlyaWdodCAo
YykgMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
IyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCi0jIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLXsKLSAgICAn
dmFyaWFibGVzJzoKLSAgICB7Ci0gICAgICAgICMgVGhlc2UgZmlsZSBsaXN0cyBhcmUgc2hhcmVk
IHdpdGggdGhlIEdOIGJ1aWxkLgotICAgICAgICAnYW5nbGVfdHJhbnNsYXRvcl9saWJfc291cmNl
cyc6Ci0gICAgICAgIFsKLSAgICAgICAgICAgICcuLi9pbmNsdWRlL0VHTC9lZ2wuaCcsCi0gICAg
ICAgICAgICAnLi4vaW5jbHVkZS9FR0wvZWdsZXh0LmgnLAotICAgICAgICAgICAgJy4uL2luY2x1
ZGUvRUdML2VnbHBsYXRmb3JtLmgnLAotICAgICAgICAgICAgJy4uL2luY2x1ZGUvR0xFUzIvZ2wy
LmgnLAotICAgICAgICAgICAgJy4uL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgnLAotICAgICAgICAg
ICAgJy4uL2luY2x1ZGUvR0xFUzIvZ2wycGxhdGZvcm0uaCcsCi0gICAgICAgICAgICAnLi4vaW5j
bHVkZS9HTEVTMy9nbDMuaCcsCi0gICAgICAgICAgICAnLi4vaW5jbHVkZS9HTEVTMy9nbDNwbGF0
Zm9ybS5oJywKLSAgICAgICAgICAgICcuLi9pbmNsdWRlL0dMRVMzL2dsMzEuaCcsCi0gICAgICAg
ICAgICAnLi4vaW5jbHVkZS9HTEVTMy9nbDMyLmgnLAotICAgICAgICAgICAgJy4uL2luY2x1ZGUv
R0xTTEFORy9TaGFkZXJMYW5nLmgnLAotICAgICAgICAgICAgJy4uL2luY2x1ZGUvR0xTTEFORy9T
aGFkZXJWYXJzLmgnLAotICAgICAgICAgICAgJy4uL2luY2x1ZGUvS0hSL2tocnBsYXRmb3JtLmgn
LAotICAgICAgICAgICAgJy4uL2luY2x1ZGUvYW5nbGVfZ2wuaCcsCi0gICAgICAgICAgICAnY29t
cGlsZXIvdHJhbnNsYXRvci9BZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uLmNwcCcsCi0gICAgICAg
ICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9BZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uLmgnLAot
ICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQmFzZVR5cGVzLmgnLAotICAgICAgICAg
ICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwJywKLSAg
ICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmgn
LAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQnJlYWtWYXJpYWJsZUFsaWFzaW5n
SW5Jbm5lckxvb3BzLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9CcmVh
a1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIv
dHJhbnNsYXRvci9DYWNoZS5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3Iv
Q2FjaGUuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9DYWxsREFHLmNwcCcs
Ci0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9DYWxsREFHLmgnLAotICAgICAgICAg
ICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29kZUdlbi5jcHAnLAotICAgICAgICAgICAgJ2NvbXBp
bGVyL3RyYW5zbGF0b3IvQ29tbW9uLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0
b3IvQ29tcGlsZXIuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0NvbXBp
bGVyLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29uc3RhbnRVbmlvbi5j
cHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29uc3RhbnRVbmlvbi5oJywK
LSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0RlZmVyR2xvYmFsSW5pdGlhbGl6ZXJz
LmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9EZWZlckdsb2JhbEluaXRp
YWxpemVycy5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0aWNz
LmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9EaWFnbm9zdGljcy5oJywK
LSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0RpcmVjdGl2ZUhhbmRsZXIuY3BwJywK
LSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0RpcmVjdGl2ZUhhbmRsZXIuaCcsCi0g
ICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNh
c3QuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVHTEZyYWdD
b2xvckJyb2FkY2FzdC5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0VtdWxh
dGVQcmVjaXNpb24uY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0VtdWxh
dGVQcmVjaXNpb24uaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9FeHBhbmRJ
bnRlZ2VyUG93RXhwcmVzc2lvbnMuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xh
dG9yL0V4cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucy5oJywKLSAgICAgICAgICAgICdjb21waWxl
ci90cmFuc2xhdG9yL0V4dGVuc2lvbkJlaGF2aW9yLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVy
L3RyYW5zbGF0b3IvRmxhZ1N0ZDE0MFN0cnVjdHMuY3BwJywKLSAgICAgICAgICAgICdjb21waWxl
ci90cmFuc2xhdG9yL0ZsYWdTdGQxNDBTdHJ1Y3RzLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVy
L3RyYW5zbGF0b3IvRm9yTG9vcFVucm9sbC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3Ry
YW5zbGF0b3IvRm9yTG9vcFVucm9sbC5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xh
dG9yL0hhc2hOYW1lcy5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0luZm9T
aW5rLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9JbmZvU2luay5oJywK
LSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemUuY3BwJywKLSAgICAg
ICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemUuaCcsCi0gICAgICAgICAgICAn
Y29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplRGxsLmNwcCcsCi0gICAgICAgICAgICAnY29t
cGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplRGxsLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVy
L3RyYW5zbGF0b3IvSW5pdGlhbGl6ZUdsb2JhbHMuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIv
dHJhbnNsYXRvci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmNwcCcsCi0gICAgICAgICAgICAnY29t
cGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmgnLAotICAgICAgICAgICAg
J2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZVZhcmlhYmxlcy5jcHAnLAotICAgICAgICAg
ICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZVZhcmlhYmxlcy5oJywKLSAgICAgICAg
ICAgICdjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCcsCi0gICAgICAgICAgICAnY29t
cGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIv
dHJhbnNsYXRvci9JbnRlcm1UcmF2ZXJzZS5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3Ry
YW5zbGF0b3IvSW50ZXJtZWRpYXRlLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0
b3IvSW50ZXJtZWRpYXRlLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9M
b29wSW5mby5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvTG9vcEluZm8u
aCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9NTWFwLmgnLAotICAgICAgICAg
ICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvTm9kZVNlYXJjaC5oJywKLSAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL09wZXJhdG9yLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJh
bnNsYXRvci9PcGVyYXRvci5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1Bh
cnNlQ29udGV4dC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUGFyc2VD
b250ZXh0LmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUG9vbEFsbG9jLmNw
cCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9Qb29sQWxsb2MuaCcsCi0gICAg
ICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9QcmFnbWEuaCcsCi0gICAgICAgICAgICAnY29t
cGlsZXIvdHJhbnNsYXRvci9QcnVuZUVtcHR5RGVjbGFyYXRpb25zLmNwcCcsCi0gICAgICAgICAg
ICAnY29tcGlsZXIvdHJhbnNsYXRvci9QcnVuZUVtcHR5RGVjbGFyYXRpb25zLmgnLAotICAgICAg
ICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUXVhbGlmaWVyVHlwZXMuaCcsCi0gICAgICAgICAg
ICAnY29tcGlsZXIvdHJhbnNsYXRvci9RdWFsaWZpZXJUeXBlcy5jcHAnLAotICAgICAgICAgICAg
J2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24uY3BwJywKLSAgICAg
ICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1JlY29yZENvbnN0YW50UHJlY2lzaW9uLmgnLAot
ICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVnZW5lcmF0ZVN0cnVjdE5hbWVzLmNw
cCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9SZWdlbmVyYXRlU3RydWN0TmFt
ZXMuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVQb3cuY3BwJywK
LSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1JlbW92ZVBvdy5oJywKLSAgICAgICAg
ICAgICdjb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVEb1doaWxlLmNwcCcsCi0gICAgICAgICAg
ICAnY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlRG9XaGlsZS5oJywKLSAgICAgICAgICAgICdj
b21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmNwcCcsCi0gICAgICAg
ICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5oJywKLSAg
ICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJ
bnQuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVVbmFyeU1p
bnVzT3BlcmF0b3JJbnQuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9TY2Fs
YXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3MuY3BwJywKLSAgICAgICAgICAgICdjb21waWxl
ci90cmFuc2xhdG9yL1NjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5oJywKLSAgICAg
ICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1NlYXJjaFN5bWJvbC5jcHAnLAotICAgICAgICAg
ICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VhcmNoU3ltYm9sLmgnLAotICAgICAgICAgICAgJ2Nv
bXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFibGUuY3BwJywKLSAgICAgICAgICAgICdjb21waWxl
ci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5z
bGF0b3IvVHlwZXMuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1R5cGVz
LmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0
QVNULmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENp
cmN1aXRBU1QuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9Vc2VJbnRlcmZh
Y2VCbG9ja0ZpZWxkcy5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVXNl
SW50ZXJmYWNlQmxvY2tGaWVsZHMuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRv
ci9WYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIv
dHJhbnNsYXRvci9WYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmgnLAotICAgICAgICAgICAgJ2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVMaW1pdGF0aW9ucy5jcHAnLAotICAgICAgICAgICAg
J2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVMaW1pdGF0aW9ucy5oJywKLSAgICAgICAgICAg
ICdjb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTWF4UGFyYW1ldGVycy5oJywKLSAgICAgICAg
ICAgICdjb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTWF4UGFyYW1ldGVycy5jcHAnLAotICAg
ICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVPdXRwdXRzLmNwcCcsCi0gICAg
ICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU91dHB1dHMuaCcsCi0gICAgICAg
ICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZVN3aXRjaC5jcHAnLAotICAgICAgICAg
ICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVTd2l0Y2guaCcsCi0gICAgICAgICAgICAn
Y29tcGlsZXIvdHJhbnNsYXRvci9WYXJpYWJsZUluZm8uY3BwJywKLSAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL1ZhcmlhYmxlSW5mby5oJywKLSAgICAgICAgICAgICdjb21waWxlci90
cmFuc2xhdG9yL1ZhcmlhYmxlUGFja2VyLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJh
bnNsYXRvci9WYXJpYWJsZVBhY2tlci5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xh
dG9yL2Jsb2NrbGF5b3V0LmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9i
bG9ja2xheW91dC5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmcu
aCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nLmwnLAotICAgICAg
ICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZy55JywKLSAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL2dsc2xhbmdfbGV4LmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIv
dHJhbnNsYXRvci9nbHNsYW5nX3RhYi5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5z
bGF0b3IvZ2xzbGFuZ190YWIuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9p
bnRlcm1PdXQuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL2xlbmd0aF9s
aW1pdHMuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmNwcCcsCi0g
ICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmgnLAotICAgICAgICAgICAgJ3Ro
aXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5jcHAnLAotICAgICAgICAgICAg
J3RoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oJywKLSAgICAgICAgXSwK
LSAgICAgICAgJ2FuZ2xlX3RyYW5zbGF0b3JfbGliX2Vzc2xfc291cmNlcyc6Ci0gICAgICAgIFsK
LSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL091dHB1dEVTU0wuY3BwJywKLSAgICAg
ICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL091dHB1dEVTU0wuaCcsCi0gICAgICAgICAgICAn
Y29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5jcHAnLAotICAgICAgICAgICAgJ2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuaCcsCi0gICAgICAgIF0sCi0gICAgICAg
ICdhbmdsZV90cmFuc2xhdG9yX2xpYl9nbHNsX3NvdXJjZXMnOgotICAgICAgICBbCi0gICAgICAg
ICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckdMU0wuY3Bw
JywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yR0xTTC5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0V4dGVuc2lvbkdM
U0wuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0V4dGVuc2lvbkdMU0wu
aCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMLmNwcCcsCi0g
ICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMLmgnLAotICAgICAgICAg
ICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0R0xTTEJhc2UuY3BwJywKLSAgICAgICAgICAg
ICdjb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0xCYXNlLmgnLAotICAgICAgICAgICAgJ2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckdMU0wuY3BwJywKLSAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JHTFNMLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVy
L3RyYW5zbGF0b3IvVmVyc2lvbkdMU0wuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFu
c2xhdG9yL1ZlcnNpb25HTFNMLmgnLAotICAgICAgICBdLAotICAgICAgICAnYW5nbGVfdHJhbnNs
YXRvcl9saWJfaGxzbF9zb3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJ2NvbXBpbGVy
L3RyYW5zbGF0b3IvQWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMuY3BwJywKLSAgICAgICAgICAg
ICdjb21waWxlci90cmFuc2xhdG9yL0FkZERlZmF1bHRSZXR1cm5TdGF0ZW1lbnRzLmgnLAotICAg
ICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1l
dGVyLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9BcnJheVJldHVyblZh
bHVlVG9PdXRQYXJhbWV0ZXIuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9B
U1RNZXRhZGF0YUhMU0wuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0FT
VE1ldGFkYXRhSExTTC5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL2Jsb2Nr
bGF5b3V0SExTTC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvYmxvY2ts
YXlvdXRITFNMLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3JITFNMLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRv
ci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckhMU0wuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIv
dHJhbnNsYXRvci9JbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuY3BwJywKLSAgICAgICAgICAgICdj
b21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5oJywKLSAgICAgICAg
ICAgICdjb21waWxlci90cmFuc2xhdG9yL091dHB1dEhMU0wuY3BwJywKLSAgICAgICAgICAgICdj
b21waWxlci90cmFuc2xhdG9yL091dHB1dEhMU0wuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIv
dHJhbnNsYXRvci9SZW1vdmVEeW5hbWljSW5kZXhpbmcuY3BwJywKLSAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL1JlbW92ZUR5bmFtaWNJbmRleGluZy5oJywKLSAgICAgICAgICAgICdj
b21waWxlci90cmFuc2xhdG9yL1JlbW92ZVN3aXRjaEZhbGxUaHJvdWdoLmNwcCcsCi0gICAgICAg
ICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaC5oJywKLSAg
ICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVFbHNlQmxvY2tzLmNwcCcsCi0g
ICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlRWxzZUJsb2Nrcy5oJywKLSAg
ICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlQXJyYXlJbml0aWFsaXphdGlv
bi5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVBcnJheUlu
aXRpYWxpemF0aW9uLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJh
dGVEZWNsYXJhdGlvbnMuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1Nl
cGFyYXRlRGVjbGFyYXRpb25zLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3Iv
U2VwYXJhdGVFeHByZXNzaW9uc1JldHVybmluZ0FycmF5cy5jcHAnLAotICAgICAgICAgICAgJ2Nv
bXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVFeHByZXNzaW9uc1JldHVybmluZ0FycmF5cy5oJywK
LSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1NpbXBsaWZ5TG9vcENvbmRpdGlvbnMu
Y3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1NpbXBsaWZ5TG9vcENvbmRp
dGlvbnMuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9TcGxpdFNlcXVlbmNl
T3BlcmF0b3IuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1NwbGl0U2Vx
dWVuY2VPcGVyYXRvci5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1N0cnVj
dHVyZUhMU0wuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1N0cnVjdHVy
ZUhMU0wuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9UZXh0dXJlRnVuY3Rp
b25ITFNMLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9UZXh0dXJlRnVu
Y3Rpb25ITFNMLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRv
ckhMU0wuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JI
TFNMLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJj
dWl0VG9JZi5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5mb2xkU2hv
cnRDaXJjdWl0VG9JZi5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1VuaWZv
cm1ITFNMLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9Vbmlmb3JtSExT
TC5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1V0aWxzSExTTC5jcHAnLAot
ICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVXRpbHNITFNMLmgnLAotICAgICAgICBd
LAotICAgICAgICAnYW5nbGVfcHJlcHJvY2Vzc29yX3NvdXJjZXMnOgotICAgICAgICBbCi0gICAg
ICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpYWdub3N0aWNzQmFzZS5jcHAnLAotICAg
ICAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaWFnbm9zdGljc0Jhc2UuaCcsCi0gICAg
ICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZUhhbmRsZXJCYXNlLmNwcCcs
Ci0gICAgICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZUhhbmRsZXJCYXNl
LmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVQYXJzZXIu
Y3BwJywKLSAgICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlUGFyc2Vy
LmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2Vy
LmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJz
ZXIuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJz
ZXIueScsCi0gICAgICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0lucHV0LmNwcCcsCi0g
ICAgICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0lucHV0LmgnLAotICAgICAgICAgICAg
J2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9MZXhlci5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9MZXhlci5oJywKLSAgICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNz
b3IvTWFjcm8uY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm8u
aCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvRXhwYW5kZXIuY3Bw
JywKLSAgICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm9FeHBhbmRlci5oJywK
LSAgICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmNwcCcsCi0g
ICAgICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5oJywKLSAgICAg
ICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvU291cmNlTG9jYXRpb24uaCcsCi0gICAgICAg
ICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmNwcCcsCi0gICAgICAgICAgICAnY29t
cGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9Ub2tlbml6ZXIuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNz
b3IvVG9rZW5pemVyLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tl
bml6ZXIubCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL251bWVyaWNfbGV4
LmgnLAotICAgICAgICBdLAotICAgIH0sCi0gICAgIyBFdmVyeXRoaW5nIGJlbG93IHRoaXMgaXMg
ZHVwbGljYXRlZCBpbiB0aGUgR04gYnVpbGQuIElmIHlvdSBjaGFuZ2UKLSAgICAjIGFueXRoaW5n
IGFsc28gY2hhbmdlIGFuZ2xlL0JVSUxELmduCi0gICAgJ3RhcmdldHMnOgotICAgIFsKLSAgICAg
ICAgewotICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ3ByZXByb2Nlc3NvcicsCi0gICAgICAg
ICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCi0gICAgICAgICAgICAnZGVwZW5kZW5jaWVz
JzogWyAnYW5nbGVfY29tbW9uJyBdLAotICAgICAgICAgICAgJ2luY2x1ZGVzJzogWyAnLi4vYnVp
bGQvY29tbW9uX2RlZmluZXMuZ3lwaScsIF0sCi0gICAgICAgICAgICAnc291cmNlcyc6IFsgJzxA
KGFuZ2xlX3ByZXByb2Nlc3Nvcl9zb3VyY2VzKScsIF0sCi0gICAgICAgIH0sCi0gICAgICAgIHsK
LSAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICd0cmFuc2xhdG9yX2xpYicsCi0gICAgICAgICAg
ICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCi0gICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzog
WyAncHJlcHJvY2Vzc29yJywgJ2FuZ2xlX2NvbW1vbicgXSwKLSAgICAgICAgICAgICdpbmNsdWRl
cyc6IFsgJy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLCBdLAotICAgICAgICAgICAgJ2lu
Y2x1ZGVfZGlycyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgJy4nLAotICAgICAg
ICAgICAgICAgICcuLi9pbmNsdWRlJywKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnZGVm
aW5lcyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgIyBkZWZpbmUgdGhlIHN0YXRp
YyB0cmFuc2xhdG9yIHRvIGluZGljYXRlIGV4cG9ydGVkCi0gICAgICAgICAgICAgICAgIyBjbGFz
c2VzIGFyZSAoaW4gZmFjdCkgbG9jYWxseSBkZWZpbmVkCi0gICAgICAgICAgICAgICAgJ0FOR0xF
X1RSQU5TTEFUT1JfU1RBVElDJywKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnc291cmNl
cyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgJzxAKGFuZ2xlX3RyYW5zbGF0b3Jf
bGliX3NvdXJjZXMpJywKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnbXN2c19zZXR0aW5n
cyc6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICdWQ0xpYnJhcmlhblRvb2wnOgotICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ0FkZGl0aW9uYWxPcHRpb25zJzogWycvaWdu
b3JlOjQyMjEnXQotICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICdjb25kaXRpb25zJzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICBbJ2FuZ2xlX2Vu
YWJsZV9lc3NsPT0xJywKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdk
ZWZpbmVzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAg
J0FOR0xFX0VOQUJMRV9FU1NMJywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAg
ICAgICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnOgotICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FOR0xFX0VOQUJMRV9FU1NM
JywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICAgICAgICAgJzxAKGFuZ2xlX3RyYW5zbGF0b3JfbGliX2Vzc2xfc291cmNl
cyknLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH1dLAotICAgICAg
ICAgICAgICAgIFsnYW5nbGVfZW5hYmxlX2dsc2w9PTEnLAotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnQU5HTEVfRU5BQkxFX0dMU0wnLAotICAgICAgICAgICAgICAg
ICAgICBdLAotICAgICAgICAgICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6
Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVz
JzoKLSAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnQU5HTEVfRU5BQkxFX0dMU0wnLAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAg
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAg
ICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnPEAoYW5nbGVfdHJhbnNs
YXRvcl9saWJfZ2xzbF9zb3VyY2VzKScsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgWydhbmdsZV9lbmFibGVfaGxzbD09MScsCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAg
ICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9FTkFCTEVfSExT
TCcsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdkaXJlY3Rf
ZGVwZW5kZW50X3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9FTkFCTEVfSExTTCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAg
ICAnc291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICc8QChhbmdsZV90cmFuc2xhdG9yX2xpYl9obHNsX3NvdXJjZXMpJywKLSAgICAgICAgICAg
ICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgIF0sCi0gICAgICAg
IH0sCi0KLSAgICAgICAgewotICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ3RyYW5zbGF0b3In
LAotICAgICAgICAgICAgJ3R5cGUnOiAnPChjb21wb25lbnQpJywKLSAgICAgICAgICAgICdkZXBl
bmRlbmNpZXMnOiBbICd0cmFuc2xhdG9yX2xpYicsICdhbmdsZV9jb21tb24nIF0sCi0gICAgICAg
ICAgICAnaW5jbHVkZXMnOiBbICcuLi9idWlsZC9jb21tb25fZGVmaW5lcy5neXBpJywgXSwKLSAg
ICAgICAgICAgICdpbmNsdWRlX2RpcnMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAg
ICcuJywKLSAgICAgICAgICAgICAgICAnLi4vaW5jbHVkZScsCi0gICAgICAgICAgICBdLAotICAg
ICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICdBTkdM
RV9UUkFOU0xBVE9SX0lNUExFTUVOVEFUSU9OJywKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAg
ICAnc291cmNlcyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgJ2NvbXBpbGVyL3Ry
YW5zbGF0b3IvU2hhZGVyTGFuZy5jcHAnLAotICAgICAgICAgICAgICAgICdjb21waWxlci90cmFu
c2xhdG9yL1NoYWRlclZhcnMuY3BwJwotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLQotICAg
ICAgICB7Ci0gICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAndHJhbnNsYXRvcl9zdGF0aWMnLAot
ICAgICAgICAgICAgJ3R5cGUnOiAnc3RhdGljX2xpYnJhcnknLAotICAgICAgICAgICAgJ2RlcGVu
ZGVuY2llcyc6IFsgJ3RyYW5zbGF0b3JfbGliJyBdLAotICAgICAgICAgICAgJ2luY2x1ZGVzJzog
WyAnLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScsIF0sCi0gICAgICAgICAgICAnaW5jbHVk
ZV9kaXJzJzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAnLicsCi0gICAgICAgICAg
ICAgICAgJy4uL2luY2x1ZGUnLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdkZWZpbmVz
JzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAnQU5HTEVfVFJBTlNMQVRPUl9TVEFU
SUMnLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdkaXJlY3RfZGVwZW5kZW50X3NldHRp
bmdzJzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAg
ICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAnQU5HTEVfVFJBTlNMQVRPUl9TVEFUSUMn
LAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgJ3NvdXJj
ZXMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9y
L1NoYWRlckxhbmcuY3BwJywKLSAgICAgICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9T
aGFkZXJWYXJzLmNwcCcKLSAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0gICAgXSwKLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9mdXp6L3RyYW5z
bGF0b3JfZnV6emVyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9m
dXp6L3RyYW5zbGF0b3JfZnV6emVyLmNwcAppbmRleCA1MTg1NTIyNTUwZTQ3MzkzMDNjODMxODRl
M2U3NmYyNGNlNDE1YjI2Li5kY2MwNTYyMzVjOTVlYThmYzlhNTk0ZTIzMjA0NDIxYmQ0NzA3ZDZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvZnV6ei90
cmFuc2xhdG9yX2Z1enplci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL2Z1enovdHJhbnNsYXRvcl9mdXp6ZXIuY3BwCkBAIC02LDEzICs2LDE2IEBACiAKIC8v
IHRyYW5zbGF0b3JfZnV6emVyLmNwcDogQSBsaWJmdXp6ZXIgZnV6emVyIGZvciB0aGUgc2hhZGVy
IHRyYW5zbGF0b3IuCiAKLSNpbmNsdWRlIDxzdGRkZWYuaD4KLSNpbmNsdWRlIDxzdGRpbnQuaD4K
LSNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgorI2luY2x1ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8
Y3N0ZGludD4KICNpbmNsdWRlIDxpb3N0cmVhbT4KKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVk
ZSA8dW5vcmRlcmVkX21hcD4KIAotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGls
ZXIuaCIKICNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvQ29tcGlsZXIuaCIKKwordXNpbmcgbmFtZXNwYWNlIHNoOwogCiBzdHJ1Y3QgVHJhbnNsYXRv
ckNhY2hlS2V5CiB7CkBAIC00MCw3ICs0MywxNCBAQCBzdHJ1Y3QgaGFzaDxUcmFuc2xhdG9yQ2Fj
aGVLZXk+CiB9OwogfSAgLy8gbmFtZXNwYWNlIHN0ZAogCi1zdGF0aWMgc3RkOjp1bm9yZGVyZWRf
bWFwPFRyYW5zbGF0b3JDYWNoZUtleSwgVENvbXBpbGVyICo+IHRyYW5zbGF0b3JzOworc3RydWN0
IFRDb21waWxlckRlbGV0ZXIKK3sKKyAgICB2b2lkIG9wZXJhdG9yKCkoVENvbXBpbGVyICpjb21w
aWxlcikgY29uc3QgeyBEZWxldGVDb21waWxlcihjb21waWxlcik7IH0KK307CisKK3VzaW5nIFVu
aXF1ZVRDb21waWxlciA9IHN0ZDo6dW5pcXVlX3B0cjxUQ29tcGlsZXIsIFRDb21waWxlckRlbGV0
ZXI+OworCitzdGF0aWMgc3RkOjp1bm9yZGVyZWRfbWFwPFRyYW5zbGF0b3JDYWNoZUtleSwgVW5p
cXVlVENvbXBpbGVyPiB0cmFuc2xhdG9yczsKIAogZXh0ZXJuICJDIiBpbnQgTExWTUZ1enplclRl
c3RPbmVJbnB1dChjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKQEAgLTg3LDkg
Kzk3LDYgQEAgZXh0ZXJuICJDIiBpbnQgTExWTUZ1enplclRlc3RPbmVJbnB1dChjb25zdCB1aW50
OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICB2YWxpZE91dHB1dHMucHVzaF9iYWNrKFNIX0dM
U0xfNDMwX0NPUkVfT1VUUFVUKTsKICAgICB2YWxpZE91dHB1dHMucHVzaF9iYWNrKFNIX0dMU0xf
NDQwX0NPUkVfT1VUUFVUKTsKICAgICB2YWxpZE91dHB1dHMucHVzaF9iYWNrKFNIX0dMU0xfNDUw
X0NPUkVfT1VUUFVUKTsKLSAgICB2YWxpZE91dHB1dHMucHVzaF9iYWNrKFNIX0hMU0xfT1VUUFVU
KTsKLSAgICB2YWxpZE91dHB1dHMucHVzaF9iYWNrKFNIX0hMU0w5X09VVFBVVCk7Ci0gICAgdmFs
aWRPdXRwdXRzLnB1c2hfYmFjayhTSF9ITFNMMTFfT1VUUFVUKTsKICAgICB2YWxpZE91dHB1dHMu
cHVzaF9iYWNrKFNIX0hMU0xfM18wX09VVFBVVCk7CiAgICAgdmFsaWRPdXRwdXRzLnB1c2hfYmFj
ayhTSF9ITFNMXzRfMV9PVVRQVVQpOwogICAgIHZhbGlkT3V0cHV0cy5wdXNoX2JhY2soU0hfSExT
TF80XzBfRkw5XzNfT1VUUFVUKTsKQEAgLTEwNiw3ICsxMTMsNyBAQCBleHRlcm4gIkMiIGludCBM
TFZNRnV6emVyVGVzdE9uZUlucHV0KGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKQog
ICAgIHNpemUgLT0ga0hlYWRlclNpemU7CiAgICAgZGF0YSArPSBrSGVhZGVyU2l6ZTsKIAotICAg
IGlmICghU2hJbml0aWFsaXplKCkpCisgICAgaWYgKCFzaDo6SW5pdGlhbGl6ZSgpKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMTE4LDE2ICsxMjUsMTYgQEAgZXh0ZXJuICJD
IiBpbnQgTExWTUZ1enplclRlc3RPbmVJbnB1dChjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qg
c2l6ZSkKIAogICAgIGlmICh0cmFuc2xhdG9ycy5maW5kKGtleSkgPT0gdHJhbnNsYXRvcnMuZW5k
KCkpCiAgICAgewotICAgICAgICBUQ29tcGlsZXIgKnRyYW5zbGF0b3IgPSBDb25zdHJ1Y3RDb21w
aWxlcih0eXBlLCBzdGF0aWNfY2FzdDxTaFNoYWRlclNwZWM+KHNwZWMpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxTaFNoYWRl
ck91dHB1dD4ob3V0cHV0KSk7CisgICAgICAgIFVuaXF1ZVRDb21waWxlciB0cmFuc2xhdG9yKENv
bnN0cnVjdENvbXBpbGVyKHR5cGUsIHN0YXRpY19jYXN0PFNoU2hhZGVyU3BlYz4oc3BlYyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PFNoU2hhZGVyT3V0cHV0PihvdXRwdXQpKSk7CiAKLSAgICAgICAgaWYgKCF0cmFuc2xh
dG9yKQorICAgICAgICBpZiAodHJhbnNsYXRvciA9PSBudWxscHRyKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCiAgICAgICAgIFNoQnVpbHRJblJlc291cmNl
cyByZXNvdXJjZXM7Ci0gICAgICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7
CisgICAgICAgIHNoOjpJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2VzKTsKIAogICAgICAg
ICAvLyBFbmFibGUgYWxsIHRoZSBleHRlbnNpb25zIHRvIGhhdmUgbW9yZSBjb3ZlcmFnZQogICAg
ICAgICByZXNvdXJjZXMuT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzICAgICAgICA9IDE7CkBAIC0x
NDMsMTcgKzE1MCwxOCBAQCBleHRlcm4gIkMiIGludCBMTFZNRnV6emVyVGVzdE9uZUlucHV0KGNv
bnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKQogICAgICAgICByZXNvdXJjZXMuRVhUX3No
YWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCAgICA9IDE7CiAgICAgICAgIHJlc291cmNlcy5OVl9zaGFk
ZXJfZnJhbWVidWZmZXJfZmV0Y2ggICAgID0gMTsKICAgICAgICAgcmVzb3VyY2VzLkFSTV9zaGFk
ZXJfZnJhbWVidWZmZXJfZmV0Y2ggICAgPSAxOworICAgICAgICByZXNvdXJjZXMuRVhUX1lVVl90
YXJnZXQgICAgICAgICAgICAgICAgICA9IDE7CisgICAgICAgIHJlc291cmNlcy5NYXhEdWFsU291
cmNlRHJhd0J1ZmZlcnMgICAgICAgID0gMTsKIAogICAgICAgICBpZiAoIXRyYW5zbGF0b3ItPklu
aXQocmVzb3VyY2VzKSkKICAgICAgICAgewotICAgICAgICAgICAgRGVsZXRlQ29tcGlsZXIodHJh
bnNsYXRvcik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCi0gICAgICAgIHRy
YW5zbGF0b3JzW2tleV0gPSB0cmFuc2xhdG9yOworICAgICAgICB0cmFuc2xhdG9yc1trZXldID0g
c3RkOjptb3ZlKHRyYW5zbGF0b3IpOwogICAgIH0KIAotICAgIFRDb21waWxlciAqdHJhbnNsYXRv
ciA9IHRyYW5zbGF0b3JzW2tleV07CisgICAgYXV0byAmdHJhbnNsYXRvciA9IHRyYW5zbGF0b3Jz
W2tleV07CiAKICAgICBjb25zdCBjaGFyICpzaGFkZXJTdHJpbmdzW10gPSB7cmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyICo+KGRhdGEpfTsKICAgICB0cmFuc2xhdG9yLT5jb21waWxlKHNoYWRl
clN0cmluZ3MsIDEsIG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaWFnbm9zdGljc0Jhc2UuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaWFnbm9zdGljc0Jh
c2UuY3BwCmluZGV4IGZjYjI0ZTRlOGQ4NzU2MjljMDllY2FiMDczOGJlNDE5ODU4ZjMxYTkuLjFi
OTU3NWJiMzZhYzAxZWRkYTFmYTE0YTBjYmQwY2UyMzU0NWY2NGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NC
YXNlLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJv
Y2Vzc29yL0RpYWdub3N0aWNzQmFzZS5jcHAKQEAgLTE1LDEyNiArMTUsMTI2IEBAIERpYWdub3N0
aWNzOjp+RGlhZ25vc3RpY3MoKQogewogfQogCi12b2lkIERpYWdub3N0aWNzOjpyZXBvcnQoSUQg
aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlTG9jYXRpb24gJmxvYywK
LSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdGV4dCkKK3ZvaWQg
RGlhZ25vc3RpY3M6OnJlcG9ydChJRCBpZCwgY29uc3QgU291cmNlTG9jYXRpb24gJmxvYywgY29u
c3Qgc3RkOjpzdHJpbmcgJnRleHQpCiB7Ci0gICAgLy8gVE9ETyhhbG9rcCk6IEtlZXAgYSBjb3Vu
dCBvZiBlcnJvcnMgYW5kIHdhcm5pbmdzLgogICAgIHByaW50KGlkLCBsb2MsIHRleHQpOwogfQog
Ci1EaWFnbm9zdGljczo6U2V2ZXJpdHkgRGlhZ25vc3RpY3M6OnNldmVyaXR5KElEIGlkKQorYm9v
bCBEaWFnbm9zdGljczo6aXNFcnJvcihJRCBpZCkKIHsKICAgICBpZiAoKGlkID4gUFBfRVJST1Jf
QkVHSU4pICYmIChpZCA8IFBQX0VSUk9SX0VORCkpCi0gICAgICAgIHJldHVybiBQUF9FUlJPUjsK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoKGlkID4gUFBfV0FSTklOR19CRUdJTikg
JiYgKGlkIDwgUFBfV0FSTklOR19FTkQpKQotICAgICAgICByZXR1cm4gUFBfV0FSTklORzsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICByZXR1cm4gUFBf
RVJST1I7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6c3RyaW5nIERpYWdub3N0aWNzOjpt
ZXNzYWdlKElEIGlkKQorY29uc3QgY2hhciAqRGlhZ25vc3RpY3M6Om1lc3NhZ2UoSUQgaWQpCiB7
CiAgICAgc3dpdGNoIChpZCkKICAgICB7Ci0gICAgICAvLyBFcnJvcnMgYmVnaW4uCi0gICAgICBj
YXNlIFBQX0lOVEVSTkFMX0VSUk9SOgotICAgICAgICByZXR1cm4gImludGVybmFsIGVycm9yIjsK
LSAgICAgIGNhc2UgUFBfT1VUX09GX01FTU9SWToKLSAgICAgICAgcmV0dXJuICJvdXQgb2YgbWVt
b3J5IjsKLSAgICAgIGNhc2UgUFBfSU5WQUxJRF9DSEFSQUNURVI6Ci0gICAgICAgIHJldHVybiAi
aW52YWxpZCBjaGFyYWN0ZXIiOwotICAgICAgY2FzZSBQUF9JTlZBTElEX05VTUJFUjoKLSAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIG51bWJlciI7Ci0gICAgICBjYXNlIFBQX0lOVEVHRVJfT1ZFUkZM
T1c6Ci0gICAgICAgIHJldHVybiAiaW50ZWdlciBvdmVyZmxvdyI7Ci0gICAgICBjYXNlIFBQX0ZM
T0FUX09WRVJGTE9XOgotICAgICAgICByZXR1cm4gImZsb2F0IG92ZXJmbG93IjsKLSAgICAgIGNh
c2UgUFBfVE9LRU5fVE9PX0xPTkc6Ci0gICAgICAgIHJldHVybiAidG9rZW4gdG9vIGxvbmciOwot
ICAgICAgY2FzZSBQUF9JTlZBTElEX0VYUFJFU1NJT046Ci0gICAgICAgIHJldHVybiAiaW52YWxp
ZCBleHByZXNzaW9uIjsKLSAgICAgIGNhc2UgUFBfRElWSVNJT05fQllfWkVSTzoKLSAgICAgICAg
cmV0dXJuICJkaXZpc2lvbiBieSB6ZXJvIjsKLSAgICAgIGNhc2UgUFBfRU9GX0lOX0NPTU1FTlQ6
Ci0gICAgICAgIHJldHVybiAidW5leHBlY3RlZCBlbmQgb2YgZmlsZSBmb3VuZCBpbiBjb21tZW50
IjsKLSAgICAgIGNhc2UgUFBfVU5FWFBFQ1RFRF9UT0tFTjoKLSAgICAgICAgcmV0dXJuICJ1bmV4
cGVjdGVkIHRva2VuIjsKLSAgICAgIGNhc2UgUFBfRElSRUNUSVZFX0lOVkFMSURfTkFNRToKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIGRpcmVjdGl2ZSBuYW1lIjsKLSAgICAgIGNhc2UgUFBfTUFD
Uk9fTkFNRV9SRVNFUlZFRDoKLSAgICAgICAgcmV0dXJuICJtYWNybyBuYW1lIGlzIHJlc2VydmVk
IjsKLSAgICAgIGNhc2UgUFBfTUFDUk9fUkVERUZJTkVEOgotICAgICAgICByZXR1cm4gIm1hY3Jv
IHJlZGVmaW5lZCI7Ci0gICAgICBjYXNlIFBQX01BQ1JPX1BSRURFRklORURfUkVERUZJTkVEOgot
ICAgICAgICByZXR1cm4gInByZWRlZmluZWQgbWFjcm8gcmVkZWZpbmVkIjsKLSAgICAgIGNhc2Ug
UFBfTUFDUk9fUFJFREVGSU5FRF9VTkRFRklORUQ6Ci0gICAgICAgIHJldHVybiAicHJlZGVmaW5l
ZCBtYWNybyB1bmRlZmluZWQiOwotICAgICAgY2FzZSBQUF9NQUNST19VTlRFUk1JTkFURURfSU5W
T0NBVElPTjoKLSAgICAgICAgcmV0dXJuICJ1bnRlcm1pbmF0ZWQgbWFjcm8gaW52b2NhdGlvbiI7
Ci0gICAgICBjYXNlIFBQX01BQ1JPX1VOREVGSU5FRF9XSElMRV9JTlZPS0VEOgotICAgICAgICAg
IHJldHVybiAibWFjcm8gdW5kZWZpbmVkIHdoaWxlIGJlaW5nIGludm9rZWQiOwotICAgICAgY2Fz
ZSBQUF9NQUNST19UT09fRkVXX0FSR1M6Ci0gICAgICAgIHJldHVybiAiTm90IGVub3VnaCBhcmd1
bWVudHMgZm9yIG1hY3JvIjsKLSAgICAgIGNhc2UgUFBfTUFDUk9fVE9PX01BTllfQVJHUzoKLSAg
ICAgICAgcmV0dXJuICJUb28gbWFueSBhcmd1bWVudHMgZm9yIG1hY3JvIjsKLSAgICAgIGNhc2Ug
UFBfTUFDUk9fRFVQTElDQVRFX1BBUkFNRVRFUl9OQU1FUzoKLSAgICAgICAgcmV0dXJuICJkdXBs
aWNhdGUgbWFjcm8gcGFyYW1ldGVyIG5hbWUiOwotICAgICAgY2FzZSBQUF9DT05ESVRJT05BTF9F
TkRJRl9XSVRIT1VUX0lGOgotICAgICAgICByZXR1cm4gInVuZXhwZWN0ZWQgI2VuZGlmIGZvdW5k
IHdpdGhvdXQgYSBtYXRjaGluZyAjaWYiOwotICAgICAgY2FzZSBQUF9DT05ESVRJT05BTF9FTFNF
X1dJVEhPVVRfSUY6Ci0gICAgICAgIHJldHVybiAidW5leHBlY3RlZCAjZWxzZSBmb3VuZCB3aXRo
b3V0IGEgbWF0Y2hpbmcgI2lmIjsKLSAgICAgIGNhc2UgUFBfQ09ORElUSU9OQUxfRUxTRV9BRlRF
Ul9FTFNFOgotICAgICAgICByZXR1cm4gInVuZXhwZWN0ZWQgI2Vsc2UgZm91bmQgYWZ0ZXIgYW5v
dGhlciAjZWxzZSI7Ci0gICAgICBjYXNlIFBQX0NPTkRJVElPTkFMX0VMSUZfV0lUSE9VVF9JRjoK
LSAgICAgICAgcmV0dXJuICJ1bmV4cGVjdGVkICNlbGlmIGZvdW5kIHdpdGhvdXQgYSBtYXRjaGlu
ZyAjaWYiOwotICAgICAgY2FzZSBQUF9DT05ESVRJT05BTF9FTElGX0FGVEVSX0VMU0U6Ci0gICAg
ICAgIHJldHVybiAidW5leHBlY3RlZCAjZWxpZiBmb3VuZCBhZnRlciAjZWxzZSI7Ci0gICAgICBj
YXNlIFBQX0NPTkRJVElPTkFMX1VOVEVSTUlOQVRFRDoKLSAgICAgICAgcmV0dXJuICJ1bmV4cGVj
dGVkIGVuZCBvZiBmaWxlIGZvdW5kIGluIGNvbmRpdGlvbmFsIGJsb2NrIjsKLSAgICAgIGNhc2Ug
UFBfSU5WQUxJRF9FWFRFTlNJT05fTkFNRToKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIGV4dGVu
c2lvbiBuYW1lIjsKLSAgICAgIGNhc2UgUFBfSU5WQUxJRF9FWFRFTlNJT05fQkVIQVZJT1I6Ci0g
ICAgICAgIHJldHVybiAiaW52YWxpZCBleHRlbnNpb24gYmVoYXZpb3IiOwotICAgICAgY2FzZSBQ
UF9JTlZBTElEX0VYVEVOU0lPTl9ESVJFQ1RJVkU6Ci0gICAgICAgIHJldHVybiAiaW52YWxpZCBl
eHRlbnNpb24gZGlyZWN0aXZlIjsKLSAgICAgIGNhc2UgUFBfSU5WQUxJRF9WRVJTSU9OX05VTUJF
UjoKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIHZlcnNpb24gbnVtYmVyIjsKLSAgICAgIGNhc2Ug
UFBfSU5WQUxJRF9WRVJTSU9OX0RJUkVDVElWRToKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIHZl
cnNpb24gZGlyZWN0aXZlIjsKLSAgICAgIGNhc2UgUFBfVkVSU0lPTl9OT1RfRklSU1RfU1RBVEVN
RU5UOgotICAgICAgICByZXR1cm4gIiN2ZXJzaW9uIGRpcmVjdGl2ZSBtdXN0IG9jY3VyIGJlZm9y
ZSBhbnl0aGluZyBlbHNlLCAiCi0gICAgICAgICAgICAgICAiZXhjZXB0IGZvciBjb21tZW50cyBh
bmQgd2hpdGUgc3BhY2UiOwotICAgICAgY2FzZSBQUF9WRVJTSU9OX05PVF9GSVJTVF9MSU5FX0VT
U0wzOgotICAgICAgICByZXR1cm4gIiN2ZXJzaW9uIGRpcmVjdGl2ZSBtdXN0IG9jY3VyIG9uIHRo
ZSBmaXJzdCBsaW5lIG9mIHRoZSBzaGFkZXIiOwotICAgICAgY2FzZSBQUF9JTlZBTElEX0xJTkVf
TlVNQkVSOgotICAgICAgICByZXR1cm4gImludmFsaWQgbGluZSBudW1iZXIiOwotICAgICAgY2Fz
ZSBQUF9JTlZBTElEX0ZJTEVfTlVNQkVSOgotICAgICAgICByZXR1cm4gImludmFsaWQgZmlsZSBu
dW1iZXIiOwotICAgICAgY2FzZSBQUF9JTlZBTElEX0xJTkVfRElSRUNUSVZFOgotICAgICAgICBy
ZXR1cm4gImludmFsaWQgbGluZSBkaXJlY3RpdmUiOwotICAgICAgY2FzZSBQUF9OT05fUFBfVE9L
RU5fQkVGT1JFX0VYVEVOU0lPTl9FU1NMMzoKLSAgICAgICAgcmV0dXJuICJleHRlbnNpb24gZGly
ZWN0aXZlIG11c3Qgb2NjdXIgYmVmb3JlIGFueSBub24tcHJlcHJvY2Vzc29yIHRva2VucyBpbiBF
U1NMMyI7Ci0gICAgICBjYXNlIFBQX1VOREVGSU5FRF9TSElGVDoKLSAgICAgICAgICByZXR1cm4g
InNoaWZ0IGV4cG9uZW50IGlzIG5lZ2F0aXZlIG9yIHVuZGVmaW5lZCI7Ci0gICAgICAvLyBFcnJv
cnMgZW5kLgotICAgICAgLy8gV2FybmluZ3MgYmVnaW4uCi0gICAgICBjYXNlIFBQX0VPRl9JTl9E
SVJFQ1RJVkU6Ci0gICAgICAgIHJldHVybiAidW5leHBlY3RlZCBlbmQgb2YgZmlsZSBmb3VuZCBp
biBkaXJlY3RpdmUiOwotICAgICAgY2FzZSBQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RPS0VO
OgotICAgICAgICByZXR1cm4gInVuZXhwZWN0ZWQgdG9rZW4gYWZ0ZXIgY29uZGl0aW9uYWwgZXhw
cmVzc2lvbiI7Ci0gICAgICBjYXNlIFBQX1VOUkVDT0dOSVpFRF9QUkFHTUE6Ci0gICAgICAgIHJl
dHVybiAidW5yZWNvZ25pemVkIHByYWdtYSI7Ci0gICAgICBjYXNlIFBQX05PTl9QUF9UT0tFTl9C
RUZPUkVfRVhURU5TSU9OX0VTU0wxOgotICAgICAgICByZXR1cm4gImV4dGVuc2lvbiBkaXJlY3Rp
dmUgc2hvdWxkIG9jY3VyIGJlZm9yZSBhbnkgbm9uLXByZXByb2Nlc3NvciB0b2tlbnMiOwotICAg
ICAgY2FzZSBQUF9XQVJOSU5HX01BQ1JPX05BTUVfUkVTRVJWRUQ6Ci0gICAgICAgIHJldHVybiAi
bWFjcm8gbmFtZSB3aXRoIGEgZG91YmxlIHVuZGVyc2NvcmUgaXMgcmVzZXJ2ZWQgLSB1bmludGVu
dGVkIGJlaGF2aW9yIGlzIHBvc3NpYmxlIjsKLSAgICAgIC8vIFdhcm5pbmdzIGVuZC4KLSAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICByZXR1cm4gIiI7
CisgICAgICAgIC8vIEVycm9ycyBiZWdpbi4KKyAgICAgICAgY2FzZSBQUF9JTlRFUk5BTF9FUlJP
UjoKKyAgICAgICAgICAgIHJldHVybiAiaW50ZXJuYWwgZXJyb3IiOworICAgICAgICBjYXNlIFBQ
X09VVF9PRl9NRU1PUlk6CisgICAgICAgICAgICByZXR1cm4gIm91dCBvZiBtZW1vcnkiOworICAg
ICAgICBjYXNlIFBQX0lOVkFMSURfQ0hBUkFDVEVSOgorICAgICAgICAgICAgcmV0dXJuICJpbnZh
bGlkIGNoYXJhY3RlciI7CisgICAgICAgIGNhc2UgUFBfSU5WQUxJRF9OVU1CRVI6CisgICAgICAg
ICAgICByZXR1cm4gImludmFsaWQgbnVtYmVyIjsKKyAgICAgICAgY2FzZSBQUF9JTlRFR0VSX09W
RVJGTE9XOgorICAgICAgICAgICAgcmV0dXJuICJpbnRlZ2VyIG92ZXJmbG93IjsKKyAgICAgICAg
Y2FzZSBQUF9GTE9BVF9PVkVSRkxPVzoKKyAgICAgICAgICAgIHJldHVybiAiZmxvYXQgb3ZlcmZs
b3ciOworICAgICAgICBjYXNlIFBQX1RPS0VOX1RPT19MT05HOgorICAgICAgICAgICAgcmV0dXJu
ICJ0b2tlbiB0b28gbG9uZyI7CisgICAgICAgIGNhc2UgUFBfSU5WQUxJRF9FWFBSRVNTSU9OOgor
ICAgICAgICAgICAgcmV0dXJuICJpbnZhbGlkIGV4cHJlc3Npb24iOworICAgICAgICBjYXNlIFBQ
X0RJVklTSU9OX0JZX1pFUk86CisgICAgICAgICAgICByZXR1cm4gImRpdmlzaW9uIGJ5IHplcm8i
OworICAgICAgICBjYXNlIFBQX0VPRl9JTl9DT01NRU5UOgorICAgICAgICAgICAgcmV0dXJuICJ1
bmV4cGVjdGVkIGVuZCBvZiBmaWxlIGZvdW5kIGluIGNvbW1lbnQiOworICAgICAgICBjYXNlIFBQ
X1VORVhQRUNURURfVE9LRU46CisgICAgICAgICAgICByZXR1cm4gInVuZXhwZWN0ZWQgdG9rZW4i
OworICAgICAgICBjYXNlIFBQX0RJUkVDVElWRV9JTlZBTElEX05BTUU6CisgICAgICAgICAgICBy
ZXR1cm4gImludmFsaWQgZGlyZWN0aXZlIG5hbWUiOworICAgICAgICBjYXNlIFBQX01BQ1JPX05B
TUVfUkVTRVJWRUQ6CisgICAgICAgICAgICByZXR1cm4gIm1hY3JvIG5hbWUgaXMgcmVzZXJ2ZWQi
OworICAgICAgICBjYXNlIFBQX01BQ1JPX1JFREVGSU5FRDoKKyAgICAgICAgICAgIHJldHVybiAi
bWFjcm8gcmVkZWZpbmVkIjsKKyAgICAgICAgY2FzZSBQUF9NQUNST19QUkVERUZJTkVEX1JFREVG
SU5FRDoKKyAgICAgICAgICAgIHJldHVybiAicHJlZGVmaW5lZCBtYWNybyByZWRlZmluZWQiOwor
ICAgICAgICBjYXNlIFBQX01BQ1JPX1BSRURFRklORURfVU5ERUZJTkVEOgorICAgICAgICAgICAg
cmV0dXJuICJwcmVkZWZpbmVkIG1hY3JvIHVuZGVmaW5lZCI7CisgICAgICAgIGNhc2UgUFBfTUFD
Uk9fVU5URVJNSU5BVEVEX0lOVk9DQVRJT046CisgICAgICAgICAgICByZXR1cm4gInVudGVybWlu
YXRlZCBtYWNybyBpbnZvY2F0aW9uIjsKKyAgICAgICAgY2FzZSBQUF9NQUNST19VTkRFRklORURf
V0hJTEVfSU5WT0tFRDoKKyAgICAgICAgICAgIHJldHVybiAibWFjcm8gdW5kZWZpbmVkIHdoaWxl
IGJlaW5nIGludm9rZWQiOworICAgICAgICBjYXNlIFBQX01BQ1JPX1RPT19GRVdfQVJHUzoKKyAg
ICAgICAgICAgIHJldHVybiAiTm90IGVub3VnaCBhcmd1bWVudHMgZm9yIG1hY3JvIjsKKyAgICAg
ICAgY2FzZSBQUF9NQUNST19UT09fTUFOWV9BUkdTOgorICAgICAgICAgICAgcmV0dXJuICJUb28g
bWFueSBhcmd1bWVudHMgZm9yIG1hY3JvIjsKKyAgICAgICAgY2FzZSBQUF9NQUNST19EVVBMSUNB
VEVfUEFSQU1FVEVSX05BTUVTOgorICAgICAgICAgICAgcmV0dXJuICJkdXBsaWNhdGUgbWFjcm8g
cGFyYW1ldGVyIG5hbWUiOworICAgICAgICBjYXNlIFBQX01BQ1JPX0lOVk9DQVRJT05fQ0hBSU5f
VE9PX0RFRVA6CisgICAgICAgICAgICByZXR1cm4gIm1hY3JvIGludm9jYXRpb24gY2hhaW4gdG9v
IGRlZXAiOworICAgICAgICBjYXNlIFBQX0NPTkRJVElPTkFMX0VORElGX1dJVEhPVVRfSUY6Cisg
ICAgICAgICAgICByZXR1cm4gInVuZXhwZWN0ZWQgI2VuZGlmIGZvdW5kIHdpdGhvdXQgYSBtYXRj
aGluZyAjaWYiOworICAgICAgICBjYXNlIFBQX0NPTkRJVElPTkFMX0VMU0VfV0lUSE9VVF9JRjoK
KyAgICAgICAgICAgIHJldHVybiAidW5leHBlY3RlZCAjZWxzZSBmb3VuZCB3aXRob3V0IGEgbWF0
Y2hpbmcgI2lmIjsKKyAgICAgICAgY2FzZSBQUF9DT05ESVRJT05BTF9FTFNFX0FGVEVSX0VMU0U6
CisgICAgICAgICAgICByZXR1cm4gInVuZXhwZWN0ZWQgI2Vsc2UgZm91bmQgYWZ0ZXIgYW5vdGhl
ciAjZWxzZSI7CisgICAgICAgIGNhc2UgUFBfQ09ORElUSU9OQUxfRUxJRl9XSVRIT1VUX0lGOgor
ICAgICAgICAgICAgcmV0dXJuICJ1bmV4cGVjdGVkICNlbGlmIGZvdW5kIHdpdGhvdXQgYSBtYXRj
aGluZyAjaWYiOworICAgICAgICBjYXNlIFBQX0NPTkRJVElPTkFMX0VMSUZfQUZURVJfRUxTRToK
KyAgICAgICAgICAgIHJldHVybiAidW5leHBlY3RlZCAjZWxpZiBmb3VuZCBhZnRlciAjZWxzZSI7
CisgICAgICAgIGNhc2UgUFBfQ09ORElUSU9OQUxfVU5URVJNSU5BVEVEOgorICAgICAgICAgICAg
cmV0dXJuICJ1bmV4cGVjdGVkIGVuZCBvZiBmaWxlIGZvdW5kIGluIGNvbmRpdGlvbmFsIGJsb2Nr
IjsKKyAgICAgICAgY2FzZSBQUF9JTlZBTElEX0VYVEVOU0lPTl9OQU1FOgorICAgICAgICAgICAg
cmV0dXJuICJpbnZhbGlkIGV4dGVuc2lvbiBuYW1lIjsKKyAgICAgICAgY2FzZSBQUF9JTlZBTElE
X0VYVEVOU0lPTl9CRUhBVklPUjoKKyAgICAgICAgICAgIHJldHVybiAiaW52YWxpZCBleHRlbnNp
b24gYmVoYXZpb3IiOworICAgICAgICBjYXNlIFBQX0lOVkFMSURfRVhURU5TSU9OX0RJUkVDVElW
RToKKyAgICAgICAgICAgIHJldHVybiAiaW52YWxpZCBleHRlbnNpb24gZGlyZWN0aXZlIjsKKyAg
ICAgICAgY2FzZSBQUF9JTlZBTElEX1ZFUlNJT05fTlVNQkVSOgorICAgICAgICAgICAgcmV0dXJu
ICJpbnZhbGlkIHZlcnNpb24gbnVtYmVyIjsKKyAgICAgICAgY2FzZSBQUF9JTlZBTElEX1ZFUlNJ
T05fRElSRUNUSVZFOgorICAgICAgICAgICAgcmV0dXJuICJpbnZhbGlkIHZlcnNpb24gZGlyZWN0
aXZlIjsKKyAgICAgICAgY2FzZSBQUF9WRVJTSU9OX05PVF9GSVJTVF9TVEFURU1FTlQ6CisgICAg
ICAgICAgICByZXR1cm4gIiN2ZXJzaW9uIGRpcmVjdGl2ZSBtdXN0IG9jY3VyIGJlZm9yZSBhbnl0
aGluZyBlbHNlLCAiCisgICAgICAgICAgICAgICAgICAgImV4Y2VwdCBmb3IgY29tbWVudHMgYW5k
IHdoaXRlIHNwYWNlIjsKKyAgICAgICAgY2FzZSBQUF9WRVJTSU9OX05PVF9GSVJTVF9MSU5FX0VT
U0wzOgorICAgICAgICAgICAgcmV0dXJuICIjdmVyc2lvbiBkaXJlY3RpdmUgbXVzdCBvY2N1ciBv
biB0aGUgZmlyc3QgbGluZSBvZiB0aGUgc2hhZGVyIjsKKyAgICAgICAgY2FzZSBQUF9JTlZBTElE
X0xJTkVfTlVNQkVSOgorICAgICAgICAgICAgcmV0dXJuICJpbnZhbGlkIGxpbmUgbnVtYmVyIjsK
KyAgICAgICAgY2FzZSBQUF9JTlZBTElEX0ZJTEVfTlVNQkVSOgorICAgICAgICAgICAgcmV0dXJu
ICJpbnZhbGlkIGZpbGUgbnVtYmVyIjsKKyAgICAgICAgY2FzZSBQUF9JTlZBTElEX0xJTkVfRElS
RUNUSVZFOgorICAgICAgICAgICAgcmV0dXJuICJpbnZhbGlkIGxpbmUgZGlyZWN0aXZlIjsKKyAg
ICAgICAgY2FzZSBQUF9OT05fUFBfVE9LRU5fQkVGT1JFX0VYVEVOU0lPTl9FU1NMMzoKKyAgICAg
ICAgICAgIHJldHVybiAiZXh0ZW5zaW9uIGRpcmVjdGl2ZSBtdXN0IG9jY3VyIGJlZm9yZSBhbnkg
bm9uLXByZXByb2Nlc3NvciB0b2tlbnMgaW4gRVNTTDMiOworICAgICAgICBjYXNlIFBQX1VOREVG
SU5FRF9TSElGVDoKKyAgICAgICAgICAgIHJldHVybiAic2hpZnQgZXhwb25lbnQgaXMgbmVnYXRp
dmUgb3IgdW5kZWZpbmVkIjsKKyAgICAgICAgLy8gRXJyb3JzIGVuZC4KKyAgICAgICAgLy8gV2Fy
bmluZ3MgYmVnaW4uCisgICAgICAgIGNhc2UgUFBfRU9GX0lOX0RJUkVDVElWRToKKyAgICAgICAg
ICAgIHJldHVybiAidW5leHBlY3RlZCBlbmQgb2YgZmlsZSBmb3VuZCBpbiBkaXJlY3RpdmUiOwor
ICAgICAgICBjYXNlIFBQX0NPTkRJVElPTkFMX1VORVhQRUNURURfVE9LRU46CisgICAgICAgICAg
ICByZXR1cm4gInVuZXhwZWN0ZWQgdG9rZW4gYWZ0ZXIgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiI7
CisgICAgICAgIGNhc2UgUFBfVU5SRUNPR05JWkVEX1BSQUdNQToKKyAgICAgICAgICAgIHJldHVy
biAidW5yZWNvZ25pemVkIHByYWdtYSI7CisgICAgICAgIGNhc2UgUFBfTk9OX1BQX1RPS0VOX0JF
Rk9SRV9FWFRFTlNJT05fRVNTTDE6CisgICAgICAgICAgICByZXR1cm4gImV4dGVuc2lvbiBkaXJl
Y3RpdmUgc2hvdWxkIG9jY3VyIGJlZm9yZSBhbnkgbm9uLXByZXByb2Nlc3NvciB0b2tlbnMiOwor
ICAgICAgICBjYXNlIFBQX1dBUk5JTkdfTUFDUk9fTkFNRV9SRVNFUlZFRDoKKyAgICAgICAgICAg
IHJldHVybiAibWFjcm8gbmFtZSB3aXRoIGEgZG91YmxlIHVuZGVyc2NvcmUgaXMgcmVzZXJ2ZWQg
LSB1bmludGVudGVkIGJlaGF2aW9yIGlzICIKKyAgICAgICAgICAgICAgICAgICAicG9zc2libGUi
OworICAgICAgICAvLyBXYXJuaW5ncyBlbmQuCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuICIiOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9EaWFnbm9zdGljc0Jhc2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmgKaW5kZXggNmMzZmU5ZWU5MmY5ZmRmYjQ4
ZmIyY2RkZDI4ZjlkZTcxMDFmMGEzOC4uMGMyZGExYjlmMDM1ZDE3YTMwNjY4MmQwNzQzMDdlMmUx
M2Q2NGM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9EaWFnbm9zdGljc0Jhc2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpYWdub3N0aWNzQmFzZS5oCkBAIC0xOSwx
MSArMTksNiBAQCBzdHJ1Y3QgU291cmNlTG9jYXRpb247CiBjbGFzcyBEaWFnbm9zdGljcwogewog
ICBwdWJsaWM6Ci0gICAgZW51bSBTZXZlcml0eQotICAgIHsKLSAgICAgICAgUFBfRVJST1IsCi0g
ICAgICAgIFBQX1dBUk5JTkcKLSAgICB9OwogICAgIGVudW0gSUQKICAgICB7CiAgICAgICAgIFBQ
X0VSUk9SX0JFR0lOLApAQCAtNDgsNiArNDMsNyBAQCBjbGFzcyBEaWFnbm9zdGljcwogICAgICAg
ICBQUF9NQUNST19UT09fRkVXX0FSR1MsCiAgICAgICAgIFBQX01BQ1JPX1RPT19NQU5ZX0FSR1Ms
CiAgICAgICAgIFBQX01BQ1JPX0RVUExJQ0FURV9QQVJBTUVURVJfTkFNRVMsCisgICAgICAgIFBQ
X01BQ1JPX0lOVk9DQVRJT05fQ0hBSU5fVE9PX0RFRVAsCiAgICAgICAgIFBQX0NPTkRJVElPTkFM
X0VORElGX1dJVEhPVVRfSUYsCiAgICAgICAgIFBQX0NPTkRJVElPTkFMX0VMU0VfV0lUSE9VVF9J
RiwKICAgICAgICAgUFBfQ09ORElUSU9OQUxfRUxTRV9BRlRFUl9FTFNFLApAQCAtODIsMTIgKzc4
LDEwIEBAIGNsYXNzIERpYWdub3N0aWNzCiAgICAgdm9pZCByZXBvcnQoSUQgaWQsIGNvbnN0IFNv
dXJjZUxvY2F0aW9uICZsb2MsIGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXh0KTsKIAogICBwcm90ZWN0
ZWQ6Ci0gICAgU2V2ZXJpdHkgc2V2ZXJpdHkoSUQgaWQpOwotICAgIHN0ZDo6c3RyaW5nIG1lc3Nh
Z2UoSUQgaWQpOworICAgIGJvb2wgaXNFcnJvcihJRCBpZCk7CisgICAgY29uc3QgY2hhciAqbWVz
c2FnZShJRCBpZCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcHJpbnQoSUQgaWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFNvdXJjZUxvY2F0aW9uICZsb2MsCi0gICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXh0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBy
aW50KElEIGlkLCBjb25zdCBTb3VyY2VMb2NhdGlvbiAmbG9jLCBjb25zdCBzdGQ6OnN0cmluZyAm
dGV4dCkgPSAwOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHBwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZUhhbmRs
ZXJCYXNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vz
c29yL0RpcmVjdGl2ZUhhbmRsZXJCYXNlLmgKaW5kZXggY2Y2Nzg5NTc2NDY5NTBmM2NhZGU5NjAz
MDE2MjQyNzA2ZGI1NWMyMC4uNmM4MWQwMTVmNTY3OWY2YzhjZjI1ZmJmY2EwOWU5MGE2YzllYzBk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9EaXJlY3RpdmVIYW5kbGVyQmFzZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlSGFuZGxlckJhc2UuaApAQCAt
MjMsOCArMjMsNyBAQCBjbGFzcyBEaXJlY3RpdmVIYW5kbGVyCiAgIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5EaXJlY3RpdmVIYW5kbGVyKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXJyb3Io
Y29uc3QgU291cmNlTG9jYXRpb24gJmxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJm1zZykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFcnJv
cihjb25zdCBTb3VyY2VMb2NhdGlvbiAmbG9jLCBjb25zdCBzdGQ6OnN0cmluZyAmbXNnKSA9IDA7
CiAKICAgICAvLyBIYW5kbGUgcHJhZ21hIG9mIGZvcm06ICNwcmFnbWEgbmFtZVsodmFsdWUpXQog
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQcmFnbWEoY29uc3QgU291cmNlTG9jYXRpb24gJmxvYywK
QEAgLTM2LDggKzM1LDcgQEAgY2xhc3MgRGlyZWN0aXZlSGFuZGxlcgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmYmVoYXZpb3IpID0gMDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVWZXJzaW9uKGNvbnN0IFNvdXJjZUxvY2F0aW9uICZsb2Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlcnNpb24pID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlVmVyc2lvbihjb25zdCBTb3VyY2VMb2NhdGlvbiAmbG9jLCBpbnQg
dmVyc2lvbikgPSAwOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHBwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZVBh
cnNlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vz
c29yL0RpcmVjdGl2ZVBhcnNlci5jcHAKaW5kZXggNjQzZjczYmQ5N2E4OTVkYmNkZDJiN2EyZmJm
NDE3Mzk1MWYxNjZjOS4uOWNkYTcyMDI3OTU3ZjgxOWJlZWIwNjc2MWFhYjVmNjhhNzY3ZWI5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9EaXJlY3RpdmVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlUGFyc2VyLmNwcApAQCAtMTgsNyArMTgs
OCBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgogI2luY2x1ZGUg
ImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIuaCIKIAotbmFtZXNwYWNlIHsKK25hbWVz
cGFjZQorewogZW51bSBEaXJlY3RpdmVUeXBlCiB7CiAgICAgRElSRUNUSVZFX05PTkUsCkBAIC0z
OSwxOSArNDAsMTkgQEAgZW51bSBEaXJlY3RpdmVUeXBlCiAKIERpcmVjdGl2ZVR5cGUgZ2V0RGly
ZWN0aXZlKGNvbnN0IHBwOjpUb2tlbiAqdG9rZW4pCiB7Ci0gICAgY29uc3QgY2hhciBrRGlyZWN0
aXZlRGVmaW5lW10gPSAiZGVmaW5lIjsKLSAgICBjb25zdCBjaGFyIGtEaXJlY3RpdmVVbmRlZltd
ID0gInVuZGVmIjsKLSAgICBjb25zdCBjaGFyIGtEaXJlY3RpdmVJZltdID0gImlmIjsKLSAgICBj
b25zdCBjaGFyIGtEaXJlY3RpdmVJZmRlZltdID0gImlmZGVmIjsKLSAgICBjb25zdCBjaGFyIGtE
aXJlY3RpdmVJZm5kZWZbXSA9ICJpZm5kZWYiOwotICAgIGNvbnN0IGNoYXIga0RpcmVjdGl2ZUVs
c2VbXSA9ICJlbHNlIjsKLSAgICBjb25zdCBjaGFyIGtEaXJlY3RpdmVFbGlmW10gPSAiZWxpZiI7
Ci0gICAgY29uc3QgY2hhciBrRGlyZWN0aXZlRW5kaWZbXSA9ICJlbmRpZiI7Ci0gICAgY29uc3Qg
Y2hhciBrRGlyZWN0aXZlRXJyb3JbXSA9ICJlcnJvciI7Ci0gICAgY29uc3QgY2hhciBrRGlyZWN0
aXZlUHJhZ21hW10gPSAicHJhZ21hIjsKKyAgICBjb25zdCBjaGFyIGtEaXJlY3RpdmVEZWZpbmVb
XSAgICA9ICJkZWZpbmUiOworICAgIGNvbnN0IGNoYXIga0RpcmVjdGl2ZVVuZGVmW10gICAgID0g
InVuZGVmIjsKKyAgICBjb25zdCBjaGFyIGtEaXJlY3RpdmVJZltdICAgICAgICA9ICJpZiI7Cisg
ICAgY29uc3QgY2hhciBrRGlyZWN0aXZlSWZkZWZbXSAgICAgPSAiaWZkZWYiOworICAgIGNvbnN0
IGNoYXIga0RpcmVjdGl2ZUlmbmRlZltdICAgID0gImlmbmRlZiI7CisgICAgY29uc3QgY2hhciBr
RGlyZWN0aXZlRWxzZVtdICAgICAgPSAiZWxzZSI7CisgICAgY29uc3QgY2hhciBrRGlyZWN0aXZl
RWxpZltdICAgICAgPSAiZWxpZiI7CisgICAgY29uc3QgY2hhciBrRGlyZWN0aXZlRW5kaWZbXSAg
ICAgPSAiZW5kaWYiOworICAgIGNvbnN0IGNoYXIga0RpcmVjdGl2ZUVycm9yW10gICAgID0gImVy
cm9yIjsKKyAgICBjb25zdCBjaGFyIGtEaXJlY3RpdmVQcmFnbWFbXSAgICA9ICJwcmFnbWEiOwog
ICAgIGNvbnN0IGNoYXIga0RpcmVjdGl2ZUV4dGVuc2lvbltdID0gImV4dGVuc2lvbiI7Ci0gICAg
Y29uc3QgY2hhciBrRGlyZWN0aXZlVmVyc2lvbltdID0gInZlcnNpb24iOwotICAgIGNvbnN0IGNo
YXIga0RpcmVjdGl2ZUxpbmVbXSA9ICJsaW5lIjsKKyAgICBjb25zdCBjaGFyIGtEaXJlY3RpdmVW
ZXJzaW9uW10gICA9ICJ2ZXJzaW9uIjsKKyAgICBjb25zdCBjaGFyIGtEaXJlY3RpdmVMaW5lW10g
ICAgICA9ICJsaW5lIjsKIAogICAgIGlmICh0b2tlbi0+dHlwZSAhPSBwcDo6VG9rZW46OklERU5U
SUZJRVIpCiAgICAgICAgIHJldHVybiBESVJFQ1RJVkVfTk9ORTsKQEAgLTkwLDE1ICs5MSwxNSBA
QCBib29sIGlzQ29uZGl0aW9uYWxEaXJlY3RpdmUoRGlyZWN0aXZlVHlwZSBkaXJlY3RpdmUpCiB7
CiAgICAgc3dpdGNoIChkaXJlY3RpdmUpCiAgICAgewotICAgICAgY2FzZSBESVJFQ1RJVkVfSUY6
Ci0gICAgICBjYXNlIERJUkVDVElWRV9JRkRFRjoKLSAgICAgIGNhc2UgRElSRUNUSVZFX0lGTkRF
RjoKLSAgICAgIGNhc2UgRElSRUNUSVZFX0VMU0U6Ci0gICAgICBjYXNlIERJUkVDVElWRV9FTElG
OgotICAgICAgY2FzZSBESVJFQ1RJVkVfRU5ESUY6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjYXNlIERJUkVDVElW
RV9JRjoKKyAgICAgICAgY2FzZSBESVJFQ1RJVkVfSUZERUY6CisgICAgICAgIGNhc2UgRElSRUNU
SVZFX0lGTkRFRjoKKyAgICAgICAgY2FzZSBESVJFQ1RJVkVfRUxTRToKKyAgICAgICAgY2FzZSBE
SVJFQ1RJVkVfRUxJRjoKKyAgICAgICAgY2FzZSBESVJFQ1RJVkVfRU5ESUY6CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiB9CiAKQEAgLTExMCw3ICsxMTEsNyBAQCBib29sIGlzRU9EKGNvbnN0IHBwOjpU
b2tlbiAqdG9rZW4pCiAKIHZvaWQgc2tpcFVudGlsRU9EKHBwOjpMZXhlciAqbGV4ZXIsIHBwOjpU
b2tlbiAqdG9rZW4pCiB7Ci0gICAgd2hpbGUoIWlzRU9EKHRva2VuKSkKKyAgICB3aGlsZSAoIWlz
RU9EKHRva2VuKSkKICAgICB7CiAgICAgICAgIGxleGVyLT5sZXgodG9rZW4pOwogICAgIH0KQEAg
LTEyNywxMSArMTI4LDEwIEBAIGJvb2wgaGFzRG91YmxlVW5kZXJzY29yZXMoY29uc3Qgc3RkOjpz
dHJpbmcgJm5hbWUpCiAgICAgcmV0dXJuIChuYW1lLmZpbmQoIl9fIikgIT0gc3RkOjpzdHJpbmc6
Om5wb3MpOwogfQogCi1ib29sIGlzTWFjcm9QcmVkZWZpbmVkKGNvbnN0IHN0ZDo6c3RyaW5nICZu
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcDo6TWFjcm9TZXQgJm1hY3JvU2V0
KQorYm9vbCBpc01hY3JvUHJlZGVmaW5lZChjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgY29uc3Qg
cHA6Ok1hY3JvU2V0ICZtYWNyb1NldCkKIHsKICAgICBwcDo6TWFjcm9TZXQ6OmNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPSBtYWNyb1NldC5maW5kKG5hbWUpOwotICAgIHJldHVybiBpdGVyICE9IG1hY3Jv
U2V0LmVuZCgpID8gaXRlci0+c2Vjb25kLnByZWRlZmluZWQgOiBmYWxzZTsKKyAgICByZXR1cm4g
aXRlciAhPSBtYWNyb1NldC5lbmQoKSA/IGl0ZXItPnNlY29uZC0+cHJlZGVmaW5lZCA6IGZhbHNl
OwogfQogCiB9ICAvLyBuYW1lc3BhY2UgYW5vbnltb3VzCkBAIC0yMDIsMTQgKzIwMiwxNiBAQCBj
bGFzcyBEZWZpbmVkUGFyc2VyIDogcHVibGljIExleGVyCiBEaXJlY3RpdmVQYXJzZXI6OkRpcmVj
dGl2ZVBhcnNlcihUb2tlbml6ZXIgKnRva2VuaXplciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE1hY3JvU2V0ICptYWNyb1NldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERpYWdub3N0aWNzICpkaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERpcmVjdGl2ZUhhbmRsZXIgKmRpcmVjdGl2ZUhhbmRsZXIpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3RpdmVIYW5kbGVyICpkaXJlY3RpdmVIYW5kbGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heE1hY3JvRXhwYW5zaW9u
RGVwdGgpCiAgICAgOiBtUGFzdEZpcnN0U3RhdGVtZW50KGZhbHNlKSwKICAgICAgIG1TZWVuTm9u
UHJlcHJvY2Vzc29yVG9rZW4oZmFsc2UpLAogICAgICAgbVRva2VuaXplcih0b2tlbml6ZXIpLAog
ICAgICAgbU1hY3JvU2V0KG1hY3JvU2V0KSwKICAgICAgIG1EaWFnbm9zdGljcyhkaWFnbm9zdGlj
cyksCiAgICAgICBtRGlyZWN0aXZlSGFuZGxlcihkaXJlY3RpdmVIYW5kbGVyKSwKLSAgICAgIG1T
aGFkZXJWZXJzaW9uKDEwMCkKKyAgICAgIG1TaGFkZXJWZXJzaW9uKDEwMCksCisgICAgICBtTWF4
TWFjcm9FeHBhbnNpb25EZXB0aChtYXhNYWNyb0V4cGFuc2lvbkRlcHRoKQogewogfQogCkBAIC0y
MzQsMTQgKzIzNiwxMyBAQCB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6bGV4KFRva2VuICp0b2tlbikK
ICAgICAgICAgICAgIGlmICghbUNvbmRpdGlvbmFsU3RhY2suZW1wdHkoKSkKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICBjb25zdCBDb25kaXRpb25hbEJsb2NrICZibG9jayA9IG1Db25k
aXRpb25hbFN0YWNrLmJhY2soKTsKLSAgICAgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9y
dChEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfVU5URVJNSU5BVEVELAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmxvY2F0aW9uLCBibG9jay50eXBlKTsKKyAg
ICAgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfQ09ORElU
SU9OQUxfVU5URVJNSU5BVEVELCBibG9jay5sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBibG9jay50eXBlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKLSAgICB9Ci0gICAgd2hpbGUgKHNraXBwaW5nKCkgfHwgKHRv
a2VuLT50eXBlID09ICdcbicpKTsKKyAgICB9IHdoaWxlIChza2lwcGluZygpIHx8ICh0b2tlbi0+
dHlwZSA9PSAnXG4nKSk7CiAKICAgICBtUGFzdEZpcnN0U3RhdGVtZW50ID0gdHJ1ZTsKIH0KQEAg
LTI2Nyw2MiArMjY4LDYxIEBAIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZURpcmVjdGl2ZShU
b2tlbiAqdG9rZW4pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzd2l0Y2goZGlyZWN0
aXZlKQorICAgIHN3aXRjaCAoZGlyZWN0aXZlKQogICAgIHsKLSAgICAgIGNhc2UgRElSRUNUSVZF
X05PTkU6Ci0gICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9ESVJF
Q1RJVkVfSU5WQUxJRF9OQU1FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+
bG9jYXRpb24sIHRva2VuLT50ZXh0KTsKLSAgICAgICAgc2tpcFVudGlsRU9EKG1Ub2tlbml6ZXIs
IHRva2VuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIERJUkVDVElWRV9ERUZJTkU6Ci0g
ICAgICAgIHBhcnNlRGVmaW5lKHRva2VuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIERJ
UkVDVElWRV9VTkRFRjoKLSAgICAgICAgcGFyc2VVbmRlZih0b2tlbik7Ci0gICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBESVJFQ1RJVkVfSUY6Ci0gICAgICAgIHBhcnNlSWYodG9rZW4pOwotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRElSRUNUSVZFX0lGREVGOgotICAgICAgICBwYXJzZUlm
ZGVmKHRva2VuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIERJUkVDVElWRV9JRk5ERUY6
Ci0gICAgICAgIHBhcnNlSWZuZGVmKHRva2VuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IERJUkVDVElWRV9FTFNFOgotICAgICAgICBwYXJzZUVsc2UodG9rZW4pOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRElSRUNUSVZFX0VMSUY6Ci0gICAgICAgIHBhcnNlRWxpZih0b2tlbik7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBESVJFQ1RJVkVfRU5ESUY6Ci0gICAgICAgIHBh
cnNlRW5kaWYodG9rZW4pOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRElSRUNUSVZFX0VS
Uk9SOgotICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIERJUkVDVElWRV9QUkFHTUE6Ci0gICAgICAgIHBhcnNlUHJhZ21hKHRva2VuKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIERJUkVDVElWRV9FWFRFTlNJT046Ci0gICAgICAgIHBhcnNl
RXh0ZW5zaW9uKHRva2VuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIERJUkVDVElWRV9W
RVJTSU9OOgotICAgICAgICBwYXJzZVZlcnNpb24odG9rZW4pOwotICAgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgRElSRUNUSVZFX0xJTkU6Ci0gICAgICAgIHBhcnNlTGluZSh0b2tlbik7Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERJUkVDVElWRV9OT05FOgorICAgICAgICAgICAg
bURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX0RJUkVDVElWRV9JTlZBTElEX05B
TUUsIHRva2VuLT5sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRv
a2VuLT50ZXh0KTsKKyAgICAgICAgICAgIHNraXBVbnRpbEVPRChtVG9rZW5pemVyLCB0b2tlbik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBESVJFQ1RJVkVfREVGSU5FOgorICAg
ICAgICAgICAgcGFyc2VEZWZpbmUodG9rZW4pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRElSRUNUSVZFX1VOREVGOgorICAgICAgICAgICAgcGFyc2VVbmRlZih0b2tlbik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBESVJFQ1RJVkVfSUY6CisgICAgICAgICAg
ICBwYXJzZUlmKHRva2VuKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERJUkVD
VElWRV9JRkRFRjoKKyAgICAgICAgICAgIHBhcnNlSWZkZWYodG9rZW4pOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRElSRUNUSVZFX0lGTkRFRjoKKyAgICAgICAgICAgIHBhcnNl
SWZuZGVmKHRva2VuKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERJUkVDVElW
RV9FTFNFOgorICAgICAgICAgICAgcGFyc2VFbHNlKHRva2VuKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIERJUkVDVElWRV9FTElGOgorICAgICAgICAgICAgcGFyc2VFbGlmKHRv
a2VuKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERJUkVDVElWRV9FTkRJRjoK
KyAgICAgICAgICAgIHBhcnNlRW5kaWYodG9rZW4pOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRElSRUNUSVZFX0VSUk9SOgorICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBESVJFQ1RJVkVfUFJBR01BOgorICAg
ICAgICAgICAgcGFyc2VQcmFnbWEodG9rZW4pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRElSRUNUSVZFX0VYVEVOU0lPTjoKKyAgICAgICAgICAgIHBhcnNlRXh0ZW5zaW9uKHRv
a2VuKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERJUkVDVElWRV9WRVJTSU9O
OgorICAgICAgICAgICAgcGFyc2VWZXJzaW9uKHRva2VuKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIERJUkVDVElWRV9MSU5FOgorICAgICAgICAgICAgcGFyc2VMaW5lKHRva2Vu
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHNraXBVbnRpbEVP
RChtVG9rZW5pemVyLCB0b2tlbik7CiAgICAgaWYgKHRva2VuLT50eXBlID09IFRva2VuOjpMQVNU
KQogICAgIHsKLSAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX0VP
Rl9JTl9ESVJFQ1RJVkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2Nh
dGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9z
dGljczo6UFBfRU9GX0lOX0RJUkVDVElWRSwgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7
CiAgICAgfQogfQogCkBAIC0zMzMsMjAgKzMzMywxOCBAQCB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6
cGFyc2VEZWZpbmUoVG9rZW4gKnRva2VuKQogICAgIG1Ub2tlbml6ZXItPmxleCh0b2tlbik7CiAg
ICAgaWYgKHRva2VuLT50eXBlICE9IFRva2VuOjpJREVOVElGSUVSKQogICAgIHsKLSAgICAgICAg
bURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU4sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQp
OworICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfVU5FWFBFQ1RF
RF9UT0tFTiwgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgaWYgKGlzTWFjcm9QcmVkZWZpbmVkKHRva2VuLT50ZXh0LCAqbU1hY3JvU2V0
KSkKICAgICB7Ci0gICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9N
QUNST19QUkVERUZJTkVEX1JFREVGSU5FRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7CisgICAgICAgIG1EaWFnbm9zdGljcy0+cmVw
b3J0KERpYWdub3N0aWNzOjpQUF9NQUNST19QUkVERUZJTkVEX1JFREVGSU5FRCwgdG9rZW4tPmxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+dGV4dCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGlzTWFjcm9OYW1lUmVzZXJ2ZWQodG9rZW4tPnRl
eHQpKQogICAgIHsKLSAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQ
X01BQ1JPX05BTUVfUkVTRVJWRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vu
LT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChE
aWFnbm9zdGljczo6UFBfTUFDUk9fTkFNRV9SRVNFUlZFRCwgdG9rZW4tPmxvY2F0aW9uLCB0b2tl
bi0+dGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gVXNpbmcgZG91YmxlIHVu
ZGVyc2NvcmVzIGlzIGFsbG93ZWQsIGJ1dCBtYXkgcmVzdWx0IGluIHVuaW50ZW5kZWQKQEAgLTM2
MCwzOSArMzU4LDM3IEBAIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZURlZmluZShUb2tlbiAq
dG9rZW4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0KTsKICAgICB9
CiAKLSAgICBNYWNybyBtYWNybzsKLSAgICBtYWNyby50eXBlID0gTWFjcm86OmtUeXBlT2JqOwot
ICAgIG1hY3JvLm5hbWUgPSB0b2tlbi0+dGV4dDsKKyAgICBzdGQ6OnNoYXJlZF9wdHI8TWFjcm8+
IG1hY3JvID0gc3RkOjptYWtlX3NoYXJlZDxNYWNybz4oKTsKKyAgICBtYWNyby0+dHlwZSAgICAg
ICAgICAgICAgICAgID0gTWFjcm86OmtUeXBlT2JqOworICAgIG1hY3JvLT5uYW1lICAgICAgICAg
ICAgICAgICAgPSB0b2tlbi0+dGV4dDsKIAogICAgIG1Ub2tlbml6ZXItPmxleCh0b2tlbik7CiAg
ICAgaWYgKHRva2VuLT50eXBlID09ICcoJyAmJiAhdG9rZW4tPmhhc0xlYWRpbmdTcGFjZSgpKQog
ICAgIHsKICAgICAgICAgLy8gRnVuY3Rpb24tbGlrZSBtYWNyby4gQ29sbGVjdCBhcmd1bWVudHMu
Ci0gICAgICAgIG1hY3JvLnR5cGUgPSBNYWNybzo6a1R5cGVGdW5jOworICAgICAgICBtYWNyby0+
dHlwZSA9IE1hY3JvOjprVHlwZUZ1bmM7CiAgICAgICAgIGRvCiAgICAgICAgIHsKICAgICAgICAg
ICAgIG1Ub2tlbml6ZXItPmxleCh0b2tlbik7CiAgICAgICAgICAgICBpZiAodG9rZW4tPnR5cGUg
IT0gVG9rZW46OklERU5USUZJRVIpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
ICAgIGlmIChzdGQ6OmZpbmQobWFjcm8ucGFyYW1ldGVycy5iZWdpbigpLCBtYWNyby5wYXJhbWV0
ZXJzLmVuZCgpLCB0b2tlbi0+dGV4dCkgIT0gbWFjcm8ucGFyYW1ldGVycy5lbmQoKSkKKyAgICAg
ICAgICAgIGlmIChzdGQ6OmZpbmQobWFjcm8tPnBhcmFtZXRlcnMuYmVnaW4oKSwgbWFjcm8tPnBh
cmFtZXRlcnMuZW5kKCksIHRva2VuLT50ZXh0KSAhPQorICAgICAgICAgICAgICAgIG1hY3JvLT5w
YXJhbWV0ZXJzLmVuZCgpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG1EaWFnbm9z
dGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9NQUNST19EVVBMSUNBVEVfUEFSQU1FVEVSX05B
TUVTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlv
biwgdG9rZW4tPnRleHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgbWFjcm8ucGFyYW1ldGVycy5wdXNoX2JhY2sodG9rZW4tPnRleHQpOwor
ICAgICAgICAgICAgbWFjcm8tPnBhcmFtZXRlcnMucHVzaF9iYWNrKHRva2VuLT50ZXh0KTsKIAog
ICAgICAgICAgICAgbVRva2VuaXplci0+bGV4KHRva2VuKTsgIC8vIEdldCAnLCcuCi0gICAgICAg
IH0KLSAgICAgICAgd2hpbGUgKHRva2VuLT50eXBlID09ICcsJyk7CisgICAgICAgIH0gd2hpbGUg
KHRva2VuLT50eXBlID09ICcsJyk7CiAKICAgICAgICAgaWYgKHRva2VuLT50eXBlICE9ICcpJykK
ICAgICAgICAgewotICAgICAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6
OlBQX1VORVhQRUNURURfVE9LRU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
b2tlbi0+bG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+
dGV4dCk7CisgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBf
VU5FWFBFQ1RFRF9UT0tFTiwgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbVRva2VuaXplci0+bGV4KHRva2VuKTsg
IC8vIEdldCAnKScuCkBAIC00MDQsMjYgKzQwMCwyNCBAQCB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6
cGFyc2VEZWZpbmUoVG9rZW4gKnRva2VuKQogICAgICAgICAvLyBsaXN0LiBSZXNldHRpbmcgaXQg
YWxzbyBhbGxvd3MgdXMgdG8gcmV1c2UgVG9rZW46OmVxdWFscygpIHRvCiAgICAgICAgIC8vIGNv
bXBhcmUgbWFjcm9zLgogICAgICAgICB0b2tlbi0+bG9jYXRpb24gPSBTb3VyY2VMb2NhdGlvbigp
OwotICAgICAgICBtYWNyby5yZXBsYWNlbWVudHMucHVzaF9iYWNrKCp0b2tlbik7CisgICAgICAg
IG1hY3JvLT5yZXBsYWNlbWVudHMucHVzaF9iYWNrKCp0b2tlbik7CiAgICAgICAgIG1Ub2tlbml6
ZXItPmxleCh0b2tlbik7CiAgICAgfQotICAgIGlmICghbWFjcm8ucmVwbGFjZW1lbnRzLmVtcHR5
KCkpCisgICAgaWYgKCFtYWNyby0+cmVwbGFjZW1lbnRzLmVtcHR5KCkpCiAgICAgewogICAgICAg
ICAvLyBXaGl0ZXNwYWNlIHByZWNlZGluZyB0aGUgcmVwbGFjZW1lbnQgbGlzdCBpcyBub3QgY29u
c2lkZXJlZCBwYXJ0IG9mCiAgICAgICAgIC8vIHRoZSByZXBsYWNlbWVudCBsaXN0IGZvciBlaXRo
ZXIgZm9ybSBvZiBtYWNyby4KLSAgICAgICAgbWFjcm8ucmVwbGFjZW1lbnRzLmZyb250KCkuc2V0
SGFzTGVhZGluZ1NwYWNlKGZhbHNlKTsKKyAgICAgICAgbWFjcm8tPnJlcGxhY2VtZW50cy5mcm9u
dCgpLnNldEhhc0xlYWRpbmdTcGFjZShmYWxzZSk7CiAgICAgfQogCiAgICAgLy8gQ2hlY2sgZm9y
IG1hY3JvIHJlZGVmaW5pdGlvbi4KLSAgICBNYWNyb1NldDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9
IG1NYWNyb1NldC0+ZmluZChtYWNyby5uYW1lKTsKLSAgICBpZiAoaXRlciAhPSBtTWFjcm9TZXQt
PmVuZCgpICYmICFtYWNyby5lcXVhbHMoaXRlci0+c2Vjb25kKSkKKyAgICBNYWNyb1NldDo6Y29u
c3RfaXRlcmF0b3IgaXRlciA9IG1NYWNyb1NldC0+ZmluZChtYWNyby0+bmFtZSk7CisgICAgaWYg
KGl0ZXIgIT0gbU1hY3JvU2V0LT5lbmQoKSAmJiAhbWFjcm8tPmVxdWFscygqaXRlci0+c2Vjb25k
KSkKICAgICB7Ci0gICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9N
QUNST19SRURFRklORUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2Nh
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjcm8ubmFtZSk7CisgICAgICAg
IG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9NQUNST19SRURFRklORUQsIHRv
a2VuLT5sb2NhdGlvbiwgbWFjcm8tPm5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IG1NYWNyb1NldC0+aW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKG1hY3JvLm5hbWUsIG1hY3JvKSk7Cisg
ICAgbU1hY3JvU2V0LT5pbnNlcnQoc3RkOjptYWtlX3BhaXIobWFjcm8tPm5hbWUsIG1hY3JvKSk7
CiB9CiAKIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZVVuZGVmKFRva2VuICp0b2tlbikKQEAg
LTQzMywyMSArNDI3LDIwIEBAIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZVVuZGVmKFRva2Vu
ICp0b2tlbikKICAgICBtVG9rZW5pemVyLT5sZXgodG9rZW4pOwogICAgIGlmICh0b2tlbi0+dHlw
ZSAhPSBUb2tlbjo6SURFTlRJRklFUikKICAgICB7Ci0gICAgICAgIG1EaWFnbm9zdGljcy0+cmVw
b3J0KERpYWdub3N0aWNzOjpQUF9VTkVYUEVDVEVEX1RPS0VOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0b2tlbi0+bG9jYXRpb24sIHRva2VuLT50ZXh0KTsKKyAgICAgICAgbURpYWdu
b3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU4sIHRva2VuLT5s
b2NhdGlvbiwgdG9rZW4tPnRleHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgTWFj
cm9TZXQ6Oml0ZXJhdG9yIGl0ZXIgPSBtTWFjcm9TZXQtPmZpbmQodG9rZW4tPnRleHQpOwogICAg
IGlmIChpdGVyICE9IG1NYWNyb1NldC0+ZW5kKCkpCiAgICAgewotICAgICAgICBpZiAoaXRlci0+
c2Vjb25kLnByZWRlZmluZWQpCisgICAgICAgIGlmIChpdGVyLT5zZWNvbmQtPnByZWRlZmluZWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNz
OjpQUF9NQUNST19QUkVERUZJTkVEX1VOREVGSU5FRCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICAgICAgbURp
YWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX01BQ1JPX1BSRURFRklORURfVU5ERUZJ
TkVELCB0b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
b2tlbi0+dGV4dCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgZWxz
ZSBpZiAoaXRlci0+c2Vjb25kLmV4cGFuc2lvbkNvdW50ID4gMCkKKyAgICAgICAgZWxzZSBpZiAo
aXRlci0+c2Vjb25kLT5leHBhbnNpb25Db3VudCA+IDApCiAgICAgICAgIHsKICAgICAgICAgICAg
IG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9NQUNST19VTkRFRklORURfV0hJ
TEVfSU5WT0tFRCwgdG9rZW4tPmxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdG9rZW4tPnRleHQpOwpAQCAtNDYyLDggKzQ1NSw3IEBAIHZvaWQgRGlyZWN0aXZlUGFy
c2VyOjpwYXJzZVVuZGVmKFRva2VuICp0b2tlbikKICAgICBtVG9rZW5pemVyLT5sZXgodG9rZW4p
OwogICAgIGlmICghaXNFT0QodG9rZW4pKQogICAgIHsKLSAgICAgICAgbURpYWdub3N0aWNzLT5y
ZXBvcnQoRGlhZ25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICBtRGlh
Z25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfVU5FWFBFQ1RFRF9UT0tFTiwgdG9rZW4t
PmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7CiAgICAgICAgIHNraXBVbnRpbEVPRChtVG9rZW5pemVy
LCB0b2tlbik7CiAgICAgfQogfQpAQCAtNDkyLDggKzQ4NCw4IEBAIHZvaWQgRGlyZWN0aXZlUGFy
c2VyOjpwYXJzZUVsc2UoVG9rZW4gKnRva2VuKQogCiAgICAgaWYgKG1Db25kaXRpb25hbFN0YWNr
LmVtcHR5KCkpCiAgICAgewotICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGlj
czo6UFBfQ09ORElUSU9OQUxfRUxTRV9XSVRIT1VUX0lGLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0b2tlbi0+bG9jYXRpb24sIHRva2VuLT50ZXh0KTsKKyAgICAgICAgbURpYWdub3N0
aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFMX0VMU0VfV0lUSE9VVF9JRiwg
dG9rZW4tPmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+dGV4
dCk7CiAgICAgICAgIHNraXBVbnRpbEVPRChtVG9rZW5pemVyLCB0b2tlbik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC01MDcsMjIgKzQ5OSwyMiBAQCB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6
cGFyc2VFbHNlKFRva2VuICp0b2tlbikKICAgICB9CiAgICAgaWYgKGJsb2NrLmZvdW5kRWxzZUdy
b3VwKQogICAgIHsKLSAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQ
X0NPTkRJVElPTkFMX0VMU0VfQUZURVJfRUxTRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7CisgICAgICAgIG1EaWFnbm9zdGljcy0+
cmVwb3J0KERpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9FTFNFX0FGVEVSX0VMU0UsIHRva2Vu
LT5sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4tPnRleHQpOwog
ICAgICAgICBza2lwVW50aWxFT0QobVRva2VuaXplciwgdG9rZW4pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYmxvY2suZm91bmRFbHNlR3JvdXAgPSB0cnVlOwotICAgIGJsb2NrLnNr
aXBHcm91cCA9IGJsb2NrLmZvdW5kVmFsaWRHcm91cDsKKyAgICBibG9jay5mb3VuZEVsc2VHcm91
cCAgPSB0cnVlOworICAgIGJsb2NrLnNraXBHcm91cCAgICAgICA9IGJsb2NrLmZvdW5kVmFsaWRH
cm91cDsKICAgICBibG9jay5mb3VuZFZhbGlkR3JvdXAgPSB0cnVlOwogCiAgICAgLy8gQ2hlY2sg
aWYgdGhlcmUgYXJlIGV4dHJhIHRva2VucyBhZnRlciAjZWxzZS4KICAgICBtVG9rZW5pemVyLT5s
ZXgodG9rZW4pOwogICAgIGlmICghaXNFT0QodG9rZW4pKQogICAgIHsKLSAgICAgICAgbURpYWdu
b3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFMX1VORVhQRUNURURfVE9L
RU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4t
PnRleHQpOworICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfQ09O
RElUSU9OQUxfVU5FWFBFQ1RFRF9UT0tFTiwgdG9rZW4tPmxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0b2tlbi0+dGV4dCk7CiAgICAgICAgIHNraXBVbnRpbEVPRChtVG9r
ZW5pemVyLCB0b2tlbik7CiAgICAgfQogfQpAQCAtNTMzLDggKzUyNSw4IEBAIHZvaWQgRGlyZWN0
aXZlUGFyc2VyOjpwYXJzZUVsaWYoVG9rZW4gKnRva2VuKQogCiAgICAgaWYgKG1Db25kaXRpb25h
bFN0YWNrLmVtcHR5KCkpCiAgICAgewotICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFn
bm9zdGljczo6UFBfQ09ORElUSU9OQUxfRUxJRl9XSVRIT1VUX0lGLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0b2tlbi0+bG9jYXRpb24sIHRva2VuLT50ZXh0KTsKKyAgICAgICAgbURp
YWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFMX0VMSUZfV0lUSE9V
VF9JRiwgdG9rZW4tPmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tl
bi0+dGV4dCk7CiAgICAgICAgIHNraXBVbnRpbEVPRChtVG9rZW5pemVyLCB0b2tlbik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC01NDgsOCArNTQwLDggQEAgdm9pZCBEaXJlY3RpdmVQYXJz
ZXI6OnBhcnNlRWxpZihUb2tlbiAqdG9rZW4pCiAgICAgfQogICAgIGlmIChibG9jay5mb3VuZEVs
c2VHcm91cCkKICAgICB7Ci0gICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNz
OjpQUF9DT05ESVRJT05BTF9FTElGX0FGVEVSX0VMU0UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICBtRGlhZ25vc3Rp
Y3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfRUxJRl9BRlRFUl9FTFNFLCB0
b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0
KTsKICAgICAgICAgc2tpcFVudGlsRU9EKG1Ub2tlbml6ZXIsIHRva2VuKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTU2Miw4ICs1NTQsOCBAQCB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6cGFy
c2VFbGlmKFRva2VuICp0b2tlbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGludCBl
eHByZXNzaW9uID0gcGFyc2VFeHByZXNzaW9uSWYodG9rZW4pOwotICAgIGJsb2NrLnNraXBHcm91
cCA9IGV4cHJlc3Npb24gPT0gMDsKKyAgICBpbnQgZXhwcmVzc2lvbiAgICAgICAgPSBwYXJzZUV4
cHJlc3Npb25JZih0b2tlbik7CisgICAgYmxvY2suc2tpcEdyb3VwICAgICAgID0gZXhwcmVzc2lv
biA9PSAwOwogICAgIGJsb2NrLmZvdW5kVmFsaWRHcm91cCA9IGV4cHJlc3Npb24gIT0gMDsKIH0K
IApAQCAtNTczLDggKzU2NSw4IEBAIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZUVuZGlmKFRv
a2VuICp0b2tlbikKIAogICAgIGlmIChtQ29uZGl0aW9uYWxTdGFjay5lbXB0eSgpKQogICAgIHsK
LSAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFM
X0VORElGX1dJVEhPVVRfSUYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5s
b2NhdGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFn
bm9zdGljczo6UFBfQ09ORElUSU9OQUxfRU5ESUZfV0lUSE9VVF9JRiwgdG9rZW4tPmxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+dGV4dCk7CiAgICAgICAgIHNr
aXBVbnRpbEVPRChtVG9rZW5pemVyLCB0b2tlbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC01ODUsOCArNTc3LDggQEAgdm9pZCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlRW5kaWYoVG9rZW4g
KnRva2VuKQogICAgIG1Ub2tlbml6ZXItPmxleCh0b2tlbik7CiAgICAgaWYgKCFpc0VPRCh0b2tl
bikpCiAgICAgewotICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBf
Q09ORElUSU9OQUxfVU5FWFBFQ1RFRF9UT0tFTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7CisgICAgICAgIG1EaWFnbm9zdGljcy0+
cmVwb3J0KERpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RPS0VOLCB0b2tl
bi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0KTsK
ICAgICAgICAgc2tpcFVudGlsRU9EKG1Ub2tlbml6ZXIsIHRva2VuKTsKICAgICB9CiB9CkBAIC02
MzAsMjUgKzYyMiwyNSBAQCB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VQcmFnbWEoVG9rZW4g
KnRva2VuKQogICAgIH0KICAgICB3aGlsZSAoKHRva2VuLT50eXBlICE9ICdcbicpICYmICh0b2tl
bi0+dHlwZSAhPSBUb2tlbjo6TEFTVCkpCiAgICAgewotICAgICAgICBzd2l0Y2goc3RhdGUrKykK
KyAgICAgICAgc3dpdGNoIChzdGF0ZSsrKQogICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBQUkFH
TUFfTkFNRToKLSAgICAgICAgICAgIG5hbWUgPSB0b2tlbi0+dGV4dDsKLSAgICAgICAgICAgIHZh
bGlkID0gdmFsaWQgJiYgKHRva2VuLT50eXBlID09IFRva2VuOjpJREVOVElGSUVSKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgTEVGVF9QQVJFTjoKLSAgICAgICAgICAgIHZh
bGlkID0gdmFsaWQgJiYgKHRva2VuLT50eXBlID09ICcoJyk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICBjYXNlIFBSQUdNQV9WQUxVRToKLSAgICAgICAgICAgIHZhbHVlID0gdG9rZW4t
PnRleHQ7Ci0gICAgICAgICAgICB2YWxpZCA9IHZhbGlkICYmICh0b2tlbi0+dHlwZSA9PSBUb2tl
bjo6SURFTlRJRklFUik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIFJJR0hU
X1BBUkVOOgotICAgICAgICAgICAgdmFsaWQgPSB2YWxpZCAmJiAodG9rZW4tPnR5cGUgPT0gJykn
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICB2
YWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFBSQUdN
QV9OQU1FOgorICAgICAgICAgICAgICAgIG5hbWUgID0gdG9rZW4tPnRleHQ7CisgICAgICAgICAg
ICAgICAgdmFsaWQgPSB2YWxpZCAmJiAodG9rZW4tPnR5cGUgPT0gVG9rZW46OklERU5USUZJRVIp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBMRUZUX1BBUkVOOgor
ICAgICAgICAgICAgICAgIHZhbGlkID0gdmFsaWQgJiYgKHRva2VuLT50eXBlID09ICcoJyk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFBSQUdNQV9WQUxVRToKKyAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHRva2VuLT50ZXh0OworICAgICAgICAgICAgICAgIHZhbGlk
ID0gdmFsaWQgJiYgKHRva2VuLT50eXBlID09IFRva2VuOjpJREVOVElGSUVSKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUklHSFRfUEFSRU46CisgICAgICAgICAg
ICAgICAgdmFsaWQgPSB2YWxpZCAmJiAodG9rZW4tPnR5cGUgPT0gJyknKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdmFsaWQg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBtVG9r
ZW5pemVyLT5sZXgodG9rZW4pOwogICAgIH0KQEAgLTY1OCw4ICs2NTAsNyBAQCB2b2lkIERpcmVj
dGl2ZVBhcnNlcjo6cGFyc2VQcmFnbWEoVG9rZW4gKnRva2VuKQogICAgICAgICAgICAgICAgICAg
ICAgIChzdGF0ZSA9PSBSSUdIVF9QQVJFTiArIDEpKTsgIC8vIFdpdGggdmFsdWUuCiAgICAgaWYg
KCF2YWxpZCkKICAgICB7Ci0gICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNz
OjpQUF9VTlJFQ09HTklaRURfUFJBR01BLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
b2tlbi0+bG9jYXRpb24sIG5hbWUpOworICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFn
bm9zdGljczo6UFBfVU5SRUNPR05JWkVEX1BSQUdNQSwgdG9rZW4tPmxvY2F0aW9uLCBuYW1lKTsK
ICAgICB9CiAgICAgZWxzZSBpZiAoc3RhdGUgPiBQUkFHTUFfTkFNRSkgIC8vIERvIG5vdCBub3Rp
ZnkgZm9yIGVtcHR5IHByYWdtYS4KICAgICB7CkBAIC02ODcsNDcgKzY3OCw0OSBAQCB2b2lkIERp
cmVjdGl2ZVBhcnNlcjo6cGFyc2VFeHRlbnNpb24oVG9rZW4gKnRva2VuKQogICAgIHsKICAgICAg
ICAgc3dpdGNoIChzdGF0ZSsrKQogICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBFWFRfTkFNRToK
LSAgICAgICAgICAgIGlmICh2YWxpZCAmJiAodG9rZW4tPnR5cGUgIT0gVG9rZW46OklERU5USUZJ
RVIpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0
KERpYWdub3N0aWNzOjpQUF9JTlZBTElEX0VYVEVOU0lPTl9OQU1FLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOwotICAg
ICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAodmFsaWQpIG5hbWUgPSB0b2tlbi0+dGV4dDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgIGNhc2UgQ09MT046Ci0gICAgICAgICAgICBpZiAodmFsaWQgJiYgKHRva2VuLT50eXBlICE9
ICc6JykpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbURpYWdub3N0aWNzLT5yZXBv
cnQoRGlhZ25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7Ci0gICAgICAg
ICAgICAgICAgdmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgIGNhc2UgRVhUX0JFSEFWSU9SOgotICAgICAgICAgICAgaWYgKHZhbGlkICYm
ICh0b2tlbi0+dHlwZSAhPSBUb2tlbjo6SURFTlRJRklFUikpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX0lOVkFMSURf
RVhURU5TSU9OX0JFSEFWSU9SLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOwotICAgICAgICAgICAgICAgIHZhbGlkID0g
ZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmFsaWQpIGJlaGF2aW9yID0g
dG9rZW4tPnRleHQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgaWYgKHZhbGlkKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1EaWFn
bm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9VTkVYUEVDVEVEX1RPS0VOLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRl
eHQpOwotICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRVhUX05BTUU6CisgICAgICAgICAgICAg
ICAgaWYgKHZhbGlkICYmICh0b2tlbi0+dHlwZSAhPSBUb2tlbjo6SURFTlRJRklFUikpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChE
aWFnbm9zdGljczo6UFBfSU5WQUxJRF9FWFRFTlNJT05fTkFNRSwgdG9rZW4tPmxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+dGV4dCk7Cisg
ICAgICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGlmICh2YWxpZCkKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHRva2Vu
LT50ZXh0OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xPTjoK
KyAgICAgICAgICAgICAgICBpZiAodmFsaWQgJiYgKHRva2VuLT50eXBlICE9ICc6JykpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChE
aWFnbm9zdGljczo6UFBfVU5FWFBFQ1RFRF9UT0tFTiwgdG9rZW4tPmxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+dGV4dCk7CisgICAgICAg
ICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFWFRfQkVIQVZJT1I6CisgICAgICAgICAg
ICAgICAgaWYgKHZhbGlkICYmICh0b2tlbi0+dHlwZSAhPSBUb2tlbjo6SURFTlRJRklFUikpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9y
dChEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9FWFRFTlNJT05fQkVIQVZJT1IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRl
eHQpOworICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBpZiAodmFsaWQpCisgICAgICAgICAgICAgICAgICAgIGJlaGF2
aW9yID0gdG9rZW4tPnRleHQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIGlmICh2YWxpZCkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9V
TkVYUEVDVEVEX1RPS0VOLCB0b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgdmFs
aWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgbVRva2VuaXplci0+bGV4KHRva2VuKTsKICAgICB9CiAgICAgaWYg
KHZhbGlkICYmIChzdGF0ZSAhPSBFWFRfQkVIQVZJT1IgKyAxKSkKICAgICB7Ci0gICAgICAgIG1E
aWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9JTlZBTElEX0VYVEVOU0lPTl9ESVJF
Q1RJVkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9r
ZW4tPnRleHQpOworICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBf
SU5WQUxJRF9FWFRFTlNJT05fRElSRUNUSVZFLCB0b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0KTsKICAgICAgICAgdmFsaWQgPSBmYWxzZTsK
ICAgICB9CiAgICAgaWYgKHZhbGlkICYmIG1TZWVuTm9uUHJlcHJvY2Vzc29yVG9rZW4pCkBAIC03
NTQsOCArNzQ3LDggQEAgdm9pZCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlVmVyc2lvbihUb2tlbiAq
dG9rZW4pCiAKICAgICBpZiAobVBhc3RGaXJzdFN0YXRlbWVudCkKICAgICB7Ci0gICAgICAgIG1E
aWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9WRVJTSU9OX05PVF9GSVJTVF9TVEFU
RU1FTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9r
ZW4tPnRleHQpOworICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBf
VkVSU0lPTl9OT1RfRklSU1RfU1RBVEVNRU5ULCB0b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0KTsKICAgICAgICAgc2tpcFVudGlsRU9EKG1U
b2tlbml6ZXIsIHRva2VuKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc2Nyw0NyArNzYw
LDQ3IEBAIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZVZlcnNpb24oVG9rZW4gKnRva2VuKQog
ICAgICAgICBWRVJTSU9OX0VORExJTkUKICAgICB9OwogCi0gICAgYm9vbCB2YWxpZCA9IHRydWU7
CisgICAgYm9vbCB2YWxpZCAgPSB0cnVlOwogICAgIGludCB2ZXJzaW9uID0gMDsKLSAgICBpbnQg
c3RhdGUgPSBWRVJTSU9OX05VTUJFUjsKKyAgICBpbnQgc3RhdGUgICA9IFZFUlNJT05fTlVNQkVS
OwogCiAgICAgbVRva2VuaXplci0+bGV4KHRva2VuKTsKICAgICB3aGlsZSAodmFsaWQgJiYgKHRv
a2VuLT50eXBlICE9ICdcbicpICYmICh0b2tlbi0+dHlwZSAhPSBUb2tlbjo6TEFTVCkpCiAgICAg
ewogICAgICAgICBzd2l0Y2ggKHN0YXRlKQogICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBWRVJT
SU9OX05VTUJFUjoKLSAgICAgICAgICAgIGlmICh0b2tlbi0+dHlwZSAhPSBUb2tlbjo6Q09OU1Rf
SU5UKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0
KERpYWdub3N0aWNzOjpQUF9JTlZBTElEX1ZFUlNJT05fTlVNQkVSLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOwotICAg
ICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAodmFsaWQgJiYgIXRva2VuLT5pVmFsdWUoJnZlcnNpb24pKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9JTlRFR0VS
X09WRVJGTE9XLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5s
b2NhdGlvbiwgdG9rZW4tPnRleHQpOwotICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmFsaWQpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgc3RhdGUgPSAodmVyc2lvbiA8IDMwMCkgPyBWRVJTSU9OX0VORExJTkUgOiBW
RVJTSU9OX1BST0ZJTEU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICBjYXNlIFZFUlNJT05fUFJPRklMRToKLSAgICAgICAgICAgIGlmICh0b2tlbi0+dHlwZSAh
PSBUb2tlbjo6SURFTlRJRklFUiB8fCB0b2tlbi0+dGV4dCAhPSAiZXMiKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9J
TlZBTElEX1ZFUlNJT05fRElSRUNUSVZFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICAgICAgY2FzZSBW
RVJTSU9OX05VTUJFUjoKKyAgICAgICAgICAgICAgICBpZiAodG9rZW4tPnR5cGUgIT0gVG9rZW46
OkNPTlNUX0lOVCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1EaWFn
bm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9JTlZBTElEX1ZFUlNJT05fTlVNQkVSLCB0
b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRva2VuLT50ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHZhbGlkICYmICF0b2tlbi0+aVZhbHVl
KCZ2ZXJzaW9uKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1EaWFn
bm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9JTlRFR0VSX09WRVJGTE9XLCB0b2tlbi0+
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vu
LT50ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHZhbGlkKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSAodmVyc2lvbiA8IDMwMCkgPyBWRVJTSU9OX0VORExJ
TkUgOiBWRVJTSU9OX1BST0ZJTEU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBWRVJTSU9OX1BST0ZJTEU6CisgICAgICAgICAgICAg
ICAgaWYgKHRva2VuLT50eXBlICE9IFRva2VuOjpJREVOVElGSUVSIHx8IHRva2VuLT50ZXh0ICE9
ICJlcyIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRGlhZ25vc3Rp
Y3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9WRVJTSU9OX0RJUkVDVElWRSwgdG9r
ZW4tPmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
b2tlbi0+dGV4dCk7CisgICAgICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXRlID0gVkVSU0lPTl9FTkRMSU5FOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfVU5FWFBFQ1RFRF9UT0tFTiwg
dG9rZW4tPmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRv
a2VuLT50ZXh0KTsKICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgc3RhdGUgPSBWRVJTSU9OX0VORExJTkU7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQo
RGlhZ25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0b2tlbi0+bG9jYXRpb24sIHRva2VuLT50ZXh0KTsKLSAgICAgICAgICAgIHZh
bGlkID0gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCiAgICAgICAgIG1Ub2tlbml6ZXItPmxleCh0b2tlbik7CkBAIC04MTUsMTUg
KzgwOCwxNSBAQCB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VWZXJzaW9uKFRva2VuICp0b2tl
bikKIAogICAgIGlmICh2YWxpZCAmJiAoc3RhdGUgIT0gVkVSU0lPTl9FTkRMSU5FKSkKICAgICB7
Ci0gICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9JTlZBTElEX1ZF
UlNJT05fRElSRUNUSVZFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+bG9j
YXRpb24sIHRva2VuLT50ZXh0KTsKKyAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25v
c3RpY3M6OlBQX0lOVkFMSURfVkVSU0lPTl9ESVJFQ1RJVkUsIHRva2VuLT5sb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4tPnRleHQpOwogICAgICAgICB2YWxpZCA9
IGZhbHNlOwogICAgIH0KIAogICAgIGlmICh2YWxpZCAmJiB2ZXJzaW9uID49IDMwMCAmJiB0b2tl
bi0+bG9jYXRpb24ubGluZSA+IDEpCiAgICAgewotICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9y
dChEaWFnbm9zdGljczo6UFBfVkVSU0lPTl9OT1RfRklSU1RfTElORV9FU1NMMywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7CisgICAg
ICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9WRVJTSU9OX05PVF9GSVJT
VF9MSU5FX0VTU0wzLCB0b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRva2VuLT50ZXh0KTsKICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICB9CiAKQEAgLTgz
OSwxMSArODMyLDExIEBAIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZUxpbmUoVG9rZW4gKnRv
a2VuKQogewogICAgIEFTU0VSVChnZXREaXJlY3RpdmUodG9rZW4pID09IERJUkVDVElWRV9MSU5F
KTsKIAotICAgIGJvb2wgdmFsaWQgPSB0cnVlOworICAgIGJvb2wgdmFsaWQgICAgICAgICAgICA9
IHRydWU7CiAgICAgYm9vbCBwYXJzZWRGaWxlTnVtYmVyID0gZmFsc2U7CiAgICAgaW50IGxpbmUg
PSAwLCBmaWxlID0gMDsKIAotICAgIE1hY3JvRXhwYW5kZXIgbWFjcm9FeHBhbmRlcihtVG9rZW5p
emVyLCBtTWFjcm9TZXQsIG1EaWFnbm9zdGljcyk7CisgICAgTWFjcm9FeHBhbmRlciBtYWNyb0V4
cGFuZGVyKG1Ub2tlbml6ZXIsIG1NYWNyb1NldCwgbURpYWdub3N0aWNzLCBtTWF4TWFjcm9FeHBh
bnNpb25EZXB0aCk7CiAKICAgICAvLyBMZXggdGhlIGZpcnN0IHRva2VuIGFmdGVyICIjbGluZSIg
c28gd2UgY2FuIGNoZWNrIGl0IGZvciBFT0QuCiAgICAgbWFjcm9FeHBhbmRlci5sZXgodG9rZW4p
OwpAQCAtODgxLDggKzg3NCw4IEBAIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZUxpbmUoVG9r
ZW4gKnRva2VuKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodmFsaWQpCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQ
X1VORVhQRUNURURfVE9LRU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7CisgICAgICAgICAgICAgICAgbURpYWdub3N0
aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU4sIHRva2VuLT5sb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+dGV4dCk7
CiAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHNraXBVbnRpbEVPRChtVG9rZW5pemVyLCB0b2tlbik7CkBAIC05MDIsMTQgKzg5NSwxNCBA
QCBib29sIERpcmVjdGl2ZVBhcnNlcjo6c2tpcHBpbmcoKSBjb25zdAogICAgIGlmIChtQ29uZGl0
aW9uYWxTdGFjay5lbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb25zdCBD
b25kaXRpb25hbEJsb2NrJiBibG9jayA9IG1Db25kaXRpb25hbFN0YWNrLmJhY2soKTsKKyAgICBj
b25zdCBDb25kaXRpb25hbEJsb2NrICZibG9jayA9IG1Db25kaXRpb25hbFN0YWNrLmJhY2soKTsK
ICAgICByZXR1cm4gYmxvY2suc2tpcEJsb2NrIHx8IGJsb2NrLnNraXBHcm91cDsKIH0KIAogdm9p
ZCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlQ29uZGl0aW9uYWxJZihUb2tlbiAqdG9rZW4pCiB7CiAg
ICAgQ29uZGl0aW9uYWxCbG9jayBibG9jazsKLSAgICBibG9jay50eXBlID0gdG9rZW4tPnRleHQ7
CisgICAgYmxvY2sudHlwZSAgICAgPSB0b2tlbi0+dGV4dDsKICAgICBibG9jay5sb2NhdGlvbiA9
IHRva2VuLT5sb2NhdGlvbjsKIAogICAgIGlmIChza2lwcGluZygpKQpAQCAtOTI4LDIwICs5MjEs
MjAgQEAgdm9pZCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlQ29uZGl0aW9uYWxJZihUb2tlbiAqdG9r
ZW4pCiAgICAgICAgIGludCBleHByZXNzaW9uID0gMDsKICAgICAgICAgc3dpdGNoIChkaXJlY3Rp
dmUpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIERJUkVDVElWRV9JRjoKLSAgICAgICAgICAg
IGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb25JZih0b2tlbik7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICBjYXNlIERJUkVDVElWRV9JRkRFRjoKLSAgICAgICAgICAgIGV4cHJlc3Np
b24gPSBwYXJzZUV4cHJlc3Npb25JZmRlZih0b2tlbik7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICBjYXNlIERJUkVDVElWRV9JRk5ERUY6Ci0gICAgICAgICAgICBleHByZXNzaW9uID0g
cGFyc2VFeHByZXNzaW9uSWZkZWYodG9rZW4pID09IDAgPyAxIDogMDsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0g
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBESVJFQ1RJVkVfSUY6CisgICAg
ICAgICAgICAgICAgZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbklmKHRva2VuKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRElSRUNUSVZFX0lGREVGOgorICAg
ICAgICAgICAgICAgIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb25JZmRlZih0b2tlbik7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIERJUkVDVElWRV9JRk5ERUY6
CisgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbklmZGVmKHRva2Vu
KSA9PSAwID8gMSA6IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICAgICAgYmxvY2suc2tpcEdyb3VwID0gZXhwcmVzc2lvbiA9PSAw
OworICAgICAgICBibG9jay5za2lwR3JvdXAgICAgICAgPSBleHByZXNzaW9uID09IDA7CiAgICAg
ICAgIGJsb2NrLmZvdW5kVmFsaWRHcm91cCA9IGV4cHJlc3Npb24gIT0gMDsKICAgICB9CiAgICAg
bUNvbmRpdGlvbmFsU3RhY2sucHVzaF9iYWNrKGJsb2NrKTsKQEAgLTk1MiwxMyArOTQ1LDEzIEBA
IGludCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlRXhwcmVzc2lvbklmKFRva2VuICp0b2tlbikKICAg
ICBBU1NFUlQoKGdldERpcmVjdGl2ZSh0b2tlbikgPT0gRElSRUNUSVZFX0lGKSB8fCAoZ2V0RGly
ZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfRUxJRikpOwogCiAgICAgRGVmaW5lZFBhcnNlciBk
ZWZpbmVkUGFyc2VyKG1Ub2tlbml6ZXIsIG1NYWNyb1NldCwgbURpYWdub3N0aWNzKTsKLSAgICBN
YWNyb0V4cGFuZGVyIG1hY3JvRXhwYW5kZXIoJmRlZmluZWRQYXJzZXIsIG1NYWNyb1NldCwgbURp
YWdub3N0aWNzKTsKKyAgICBNYWNyb0V4cGFuZGVyIG1hY3JvRXhwYW5kZXIoJmRlZmluZWRQYXJz
ZXIsIG1NYWNyb1NldCwgbURpYWdub3N0aWNzLCBtTWF4TWFjcm9FeHBhbnNpb25EZXB0aCk7CiAg
ICAgRXhwcmVzc2lvblBhcnNlciBleHByZXNzaW9uUGFyc2VyKCZtYWNyb0V4cGFuZGVyLCBtRGlh
Z25vc3RpY3MpOwogCiAgICAgaW50IGV4cHJlc3Npb24gPSAwOwogICAgIEV4cHJlc3Npb25QYXJz
ZXI6OkVycm9yU2V0dGluZ3MgZXJyb3JTZXR0aW5nczsKICAgICBlcnJvclNldHRpbmdzLmludGVn
ZXJMaXRlcmFsc011c3RGaXQzMkJpdFNpZ25lZFJhbmdlID0gZmFsc2U7Ci0gICAgZXJyb3JTZXR0
aW5ncy51bmV4cGVjdGVkSWRlbnRpZmllciAgICAgICAgICAgICAgICAgICA9IERpYWdub3N0aWNz
OjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RPS0VOOworICAgIGVycm9yU2V0dGluZ3MudW5l
eHBlY3RlZElkZW50aWZpZXIgPSBEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfVU5FWFBFQ1RF
RF9UT0tFTjsKIAogICAgIGJvb2wgdmFsaWQgPSB0cnVlOwogICAgIGV4cHJlc3Npb25QYXJzZXIu
cGFyc2UodG9rZW4sICZleHByZXNzaW9uLCBmYWxzZSwgZXJyb3JTZXR0aW5ncywgJnZhbGlkKTsK
QEAgLTk2Niw4ICs5NTksOCBAQCBpbnQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZUV4cHJlc3Npb25J
ZihUb2tlbiAqdG9rZW4pCiAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIHRva2VucyBhZnRlciAj
aWYgZXhwcmVzc2lvbi4KICAgICBpZiAoIWlzRU9EKHRva2VuKSkKICAgICB7Ci0gICAgICAgIG1E
aWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVE
X1RPS0VOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+bG9jYXRpb24sIHRv
a2VuLT50ZXh0KTsKKyAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQ
X0NPTkRJVElPTkFMX1VORVhQRUNURURfVE9LRU4sIHRva2VuLT5sb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdG9rZW4tPnRleHQpOwogICAgICAgICBza2lwVW50aWxFT0Qo
bVRva2VuaXplciwgdG9rZW4pOwogICAgIH0KIApAQCAtOTgxLDIxICs5NzQsMjAgQEAgaW50IERp
cmVjdGl2ZVBhcnNlcjo6cGFyc2VFeHByZXNzaW9uSWZkZWYoVG9rZW4gKnRva2VuKQogICAgIG1U
b2tlbml6ZXItPmxleCh0b2tlbik7CiAgICAgaWYgKHRva2VuLT50eXBlICE9IFRva2VuOjpJREVO
VElGSUVSKQogICAgIHsKLSAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6
OlBQX1VORVhQRUNURURfVE9LRU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vu
LT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChE
aWFnbm9zdGljczo6UFBfVU5FWFBFQ1RFRF9UT0tFTiwgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+
dGV4dCk7CiAgICAgICAgIHNraXBVbnRpbEVPRChtVG9rZW5pemVyLCB0b2tlbik7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAogICAgIE1hY3JvU2V0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0g
bU1hY3JvU2V0LT5maW5kKHRva2VuLT50ZXh0KTsKLSAgICBpbnQgZXhwcmVzc2lvbiA9IGl0ZXIg
IT0gbU1hY3JvU2V0LT5lbmQoKSA/IDEgOiAwOworICAgIGludCBleHByZXNzaW9uICAgICAgICAg
ICAgICAgID0gaXRlciAhPSBtTWFjcm9TZXQtPmVuZCgpID8gMSA6IDA7CiAKICAgICAvLyBDaGVj
ayBpZiB0aGVyZSBhcmUgdG9rZW5zIGFmdGVyICNpZmRlZiBleHByZXNzaW9uLgogICAgIG1Ub2tl
bml6ZXItPmxleCh0b2tlbik7CiAgICAgaWYgKCFpc0VPRCh0b2tlbikpCiAgICAgewotICAgICAg
ICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfVU5FWFBF
Q1RFRF9UT0tFTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4tPmxvY2F0aW9u
LCB0b2tlbi0+dGV4dCk7CisgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNz
OjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RPS0VOLCB0b2tlbi0+bG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0KTsKICAgICAgICAgc2tpcFVudGls
RU9EKG1Ub2tlbml6ZXIsIHRva2VuKTsKICAgICB9CiAgICAgcmV0dXJuIGV4cHJlc3Npb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vz
c29yL0RpcmVjdGl2ZVBhcnNlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVQYXJzZXIuaAppbmRleCBmMGU4ODljOGEwODE2MDNm
ZjM5OWQ5ODM3OWE1YzU4ZjBhOWI2YTc1Li40MjI5Y2JhNWE2MDVmYWY5MDkzMTY5MzQ3ODBjYWUz
NjVjY2NkM2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZVBhcnNlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlUGFyc2VyLmgKQEAgLTI0
LDEyICsyNCwxMiBAQCBjbGFzcyBEaXJlY3RpdmVQYXJzZXIgOiBwdWJsaWMgTGV4ZXIKICAgICBE
aXJlY3RpdmVQYXJzZXIoVG9rZW5pemVyICp0b2tlbml6ZXIsCiAgICAgICAgICAgICAgICAgICAg
IE1hY3JvU2V0ICptYWNyb1NldCwKICAgICAgICAgICAgICAgICAgICAgRGlhZ25vc3RpY3MgKmRp
YWdub3N0aWNzLAotICAgICAgICAgICAgICAgICAgICBEaXJlY3RpdmVIYW5kbGVyICpkaXJlY3Rp
dmVIYW5kbGVyKTsKKyAgICAgICAgICAgICAgICAgICAgRGlyZWN0aXZlSGFuZGxlciAqZGlyZWN0
aXZlSGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgaW50IG1heE1hY3JvRXhwYW5zaW9uRGVw
dGgpOwogCiAgICAgdm9pZCBsZXgoVG9rZW4gKnRva2VuKSBvdmVycmlkZTsKIAogICBwcml2YXRl
OgotCiAgICAgdm9pZCBwYXJzZURpcmVjdGl2ZShUb2tlbiAqdG9rZW4pOwogICAgIHZvaWQgcGFy
c2VEZWZpbmUoVG9rZW4gKnRva2VuKTsKICAgICB2b2lkIHBhcnNlVW5kZWYoVG9rZW4gKnRva2Vu
KTsKQEAgLTYwLDIyICs2MCwyMSBAQCBjbGFzcyBEaXJlY3RpdmVQYXJzZXIgOiBwdWJsaWMgTGV4
ZXIKICAgICAgICAgYm9vbCBmb3VuZEVsc2VHcm91cDsKIAogICAgICAgICBDb25kaXRpb25hbEJs
b2NrKCkKLSAgICAgICAgICAgIDogc2tpcEJsb2NrKGZhbHNlKSwKLSAgICAgICAgICAgICAgc2tp
cEdyb3VwKGZhbHNlKSwKLSAgICAgICAgICAgICAgZm91bmRWYWxpZEdyb3VwKGZhbHNlKSwKLSAg
ICAgICAgICAgICAgZm91bmRFbHNlR3JvdXAoZmFsc2UpCisgICAgICAgICAgICA6IHNraXBCbG9j
ayhmYWxzZSksIHNraXBHcm91cChmYWxzZSksIGZvdW5kVmFsaWRHcm91cChmYWxzZSksIGZvdW5k
RWxzZUdyb3VwKGZhbHNlKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICB9OwogICAgIGJvb2wg
bVBhc3RGaXJzdFN0YXRlbWVudDsKLSAgICBib29sIG1TZWVuTm9uUHJlcHJvY2Vzc29yVG9rZW47
IC8vIFRyYWNrcyBpZiBhIG5vbi1wcmVwcm9jZXNzb3IgdG9rZW4gaGFzIGJlZW4gc2VlbiB5ZXQu
ICBTb21lIG1hY3Jvcywgc3VjaCBhcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gI2V4dGVuc2lvbiBtdXN0IGJlIGRlY2xhcmVkIGJlZm9yZSBhbGwgc2hhZGVyIGNvZGUu
CisgICAgYm9vbCBtU2Vlbk5vblByZXByb2Nlc3NvclRva2VuOyAgLy8gVHJhY2tzIGlmIGEgbm9u
LXByZXByb2Nlc3NvciB0b2tlbiBoYXMgYmVlbiBzZWVuIHlldC4gIFNvbWUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWNyb3MsIHN1Y2ggYXMKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAjZXh0ZW5zaW9uIG11c3QgYmUgZGVjbGFyZWQg
YmVmb3JlIGFsbCBzaGFkZXIgY29kZS4KICAgICBzdGQ6OnZlY3RvcjxDb25kaXRpb25hbEJsb2Nr
PiBtQ29uZGl0aW9uYWxTdGFjazsKICAgICBUb2tlbml6ZXIgKm1Ub2tlbml6ZXI7CiAgICAgTWFj
cm9TZXQgKm1NYWNyb1NldDsKICAgICBEaWFnbm9zdGljcyAqbURpYWdub3N0aWNzOwogICAgIERp
cmVjdGl2ZUhhbmRsZXIgKm1EaXJlY3RpdmVIYW5kbGVyOwogICAgIGludCBtU2hhZGVyVmVyc2lv
bjsKKyAgICBpbnQgbU1heE1hY3JvRXhwYW5zaW9uRGVwdGg7CiB9OwogCiB9ICAvLyBuYW1lc3Bh
Y2UgcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9w
cmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3BwCmluZGV4IGE4
ZGYyMzUxZWE4NWZmOTYyNzQ2ZTYyYWE4YjBmMDBlNTI1NGVlMjQuLjY5NzcwNDkwZTFiZjY1ZjUz
Yjk3YjQ3N2ZhMGIyNjQ4ZTU2NDljZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNz
aW9uUGFyc2VyLmNwcApAQCAtNTAyLDcgKzUwMiw3IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWlu
dDE2IHl5cmxpbmVbXSA9CiB7CiAgICAgICAgMCwgICAxMDgsICAgMTA4LCAgIDExNSwgICAxMTYs
ICAgMTI3LCAgIDEyNywgICAxNDgsICAgMTQ4LCAgIDE2OSwKICAgICAgMTcyLCAgIDE3NSwgICAx
NzgsICAgMTgxLCAgIDE4NCwgICAxODcsICAgMTkwLCAgIDE5MywgICAxOTYsICAgMjIxLAotICAg
ICAyNDYsICAgMjQ5LCAgIDI1MiwgICAyNzIsICAgMjk5LCAgIDMwMiwgICAzMDUsICAgMzA4LCAg
IDMyMCwgICAzMjMKKyAgICAgMjQ2LCAgIDI0OSwgICAyNTIsICAgMjc4LCAgIDMwNSwgICAzMDgs
ICAgMzExLCAgIDMxNCwgICAzMjYsICAgMzI5CiB9OwogI2VuZGlmCiAKQEAgLTE1ODUsNiArMTU4
NSwxMiBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIH0KICAgICAgICAgICAgICh5eXZhbCkgPSBz
dGF0aWNfY2FzdDxZWVNUWVBFPigwKTsKICAgICAgICAgfQorICAgICAgICBlbHNlIGlmICgoKHl5
dnNwWy0yXSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxZWVNUWVBFPjo6bWluKCkpICYmICgoeXl2
c3BbMF0pID09IC0xKSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIHRoZSBz
cGVjaWFsIGNhc2Ugd2hlcmUgdGhlIG1pbmltdW0gcmVwcmVzZW50YWJsZSBudW1iZXIgaXMKKyAg
ICAgICAgICAgIC8vIGRpdmlkZWQgYnkgLTEuIElmIGxlZnQgYWxvbmUgdGhpcyBoYXMgdW5kZWZp
bmVkIHJlc3VsdHMuCisgICAgICAgICAgICAoeXl2YWwpID0gMDsKKyAgICAgICAgfQogICAgICAg
ICBlbHNlCiAgICAgICAgIHsKICAgICAgICAgICAgICh5eXZhbCkgPSAoeXl2c3BbLTJdKSAlICh5
eXZzcFswXSk7CkBAIC0xNjEwLDcgKzE2MTYsNyBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICh5eXZhbCkgPSBzdGF0aWNfY2FzdDxZWVNUWVBFPigwKTsKICAgICAgICAg
fQotICAgICAgICBlbHNlIGlmICgoeXl2c3BbLTJdKSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFlZ
U1RZUEU+OjptaW4oKSAmJiAoeXl2c3BbMF0pID09IC0xKQorICAgICAgICBlbHNlIGlmICgoKHl5
dnNwWy0yXSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxZWVNUWVBFPjo6bWluKCkpICYmICgoeXl2
c3BbMF0pID09IC0xKSkKICAgICAgICAgewogICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIHRoZSBz
cGVjaWFsIGNhc2Ugd2hlcmUgdGhlIG1pbmltdW0gcmVwcmVzZW50YWJsZSBudW1iZXIgaXMKICAg
ICAgICAgICAgIC8vIGRpdmlkZWQgYnkgLTEuIElmIGxlZnQgYWxvbmUgdGhpcyBsZWFkcyB0byBp
bnRlZ2VyIG92ZXJmbG93IGluIEMrKywgd2hpY2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci55IGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNz
aW9uUGFyc2VyLnkKaW5kZXggYTk4NjM4YThkZjhjOWEzZTBlM2YzZTZjMjgxZWQ2MjMxODI2ZjFl
MS4uNGRiYzllODI4MzhkMDRhZmM1YTdkMzJjOWE3MjU2Y2NiMWE2NmQyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNz
aW9uUGFyc2VyLnkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLnkKQEAgLTI2NCw2ICsyNjQsMTIgQEAgZXhwcmVz
c2lvbgogICAgICAgICAgICAgfQogICAgICAgICAgICAgJCQgPSBzdGF0aWNfY2FzdDxZWVNUWVBF
PigwKTsKICAgICAgICAgfQorICAgICAgICBlbHNlIGlmICgoJDEgPT0gc3RkOjpudW1lcmljX2xp
bWl0czxZWVNUWVBFPjo6bWluKCkpICYmICgkMyA9PSAtMSkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIC8vIENoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSBtaW5pbXVtIHJlcHJl
c2VudGFibGUgbnVtYmVyIGlzCisgICAgICAgICAgICAvLyBkaXZpZGVkIGJ5IC0xLiBJZiBsZWZ0
IGFsb25lIHRoaXMgaGFzIHVuZGVmaW5lZCByZXN1bHRzLgorICAgICAgICAgICAgJCQgPSAwOwor
ICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAgJCQgPSAkMSAl
ICQzOwpAQCAtMjg0LDcgKzI5MCw3IEBAIGV4cHJlc3Npb24KICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICQkID0gc3RhdGljX2Nhc3Q8WVlTVFlQRT4oMCk7CiAgICAgICAgIH0KLSAgICAgICAg
ZWxzZSBpZiAoJDEgPT0gc3RkOjpudW1lcmljX2xpbWl0czxZWVNUWVBFPjo6bWluKCkgJiYgJDMg
PT0gLTEpCisgICAgICAgIGVsc2UgaWYgKCgkMSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFlZU1RZ
UEU+OjptaW4oKSkgJiYgKCQzID09IC0xKSkKICAgICAgICAgewogICAgICAgICAgICAgLy8gQ2hl
Y2sgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIG1pbmltdW0gcmVwcmVzZW50YWJsZSBu
dW1iZXIgaXMKICAgICAgICAgICAgIC8vIGRpdmlkZWQgYnkgLTEuIElmIGxlZnQgYWxvbmUgdGhp
cyBsZWFkcyB0byBpbnRlZ2VyIG92ZXJmbG93IGluIEMrKywgd2hpY2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1
dC5jcHAKaW5kZXggOGJjZTU2ZmYyOWFiMjkwZjkzNmMxOGU5MjhjOGY3MTAwNDg0ZGNkOC4uZTVi
Y2Q4ZTRmM2Y5NzA0OTc1ZjJkYzMyY2U3NWIzNTI2ZjM0NDY0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5jcHAKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1
dC5jcHAKQEAgLTE4LDkgKzE4LDggQEAgSW5wdXQ6OklucHV0KCkgOiBtQ291bnQoMCksIG1TdHJp
bmcoMCkKIHsKIH0KIAotSW5wdXQ6OklucHV0KHNpemVfdCBjb3VudCwgY29uc3QgY2hhciAqY29u
c3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSkgOgotICAgIG1Db3VudChjb3VudCksCi0g
ICAgbVN0cmluZyhzdHJpbmcpCitJbnB1dDo6SW5wdXQoc2l6ZV90IGNvdW50LCBjb25zdCBjaGFy
ICpjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdKQorICAgIDogbUNvdW50KGNvdW50
KSwgbVN0cmluZyhzdHJpbmcpCiB7CiAgICAgbUxlbmd0aC5yZXNlcnZlKG1Db3VudCk7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtQ291bnQ7ICsraSkKQEAgLTg3LDcgKzg2LDcgQEAgc2l6
ZV90IElucHV0OjpyZWFkKGNoYXIgKmJ1Ziwgc2l6ZV90IG1heFNpemUsIGludCAqbGluZU5vKQog
ICAgIHdoaWxlICgoblJlYWQgPCBtYXhSZWFkKSAmJiAobVJlYWRMb2Muc0luZGV4IDwgbUNvdW50
KSkKICAgICB7CiAgICAgICAgIHNpemVfdCBzaXplID0gbUxlbmd0aFttUmVhZExvYy5zSW5kZXhd
IC0gbVJlYWRMb2MuY0luZGV4OwotICAgICAgICBzaXplID0gc3RkOjptaW4oc2l6ZSwgbWF4U2l6
ZSk7CisgICAgICAgIHNpemUgICAgICAgID0gc3RkOjptaW4oc2l6ZSwgbWF4U2l6ZSk7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICB7CiAgICAgICAg
ICAgICAvLyBTdG9wIGlmIGEgcG9zc2libGUgbGluZSBjb250aW51YXRpb24gaXMgZW5jb3VudGVy
ZWQuCkBAIC05NSw3ICs5NCw3IEBAIHNpemVfdCBJbnB1dDo6cmVhZChjaGFyICpidWYsIHNpemVf
dCBtYXhTaXplLCBpbnQgKmxpbmVObykKICAgICAgICAgICAgIC8vIGFuZCBpbmNyZW1lbnRzIGxp
bmUgbnVtYmVyIGlmIG5lY2Vzc2FyeS4KICAgICAgICAgICAgIGlmICgqKG1TdHJpbmdbbVJlYWRM
b2Muc0luZGV4XSArIG1SZWFkTG9jLmNJbmRleCArIGkpID09ICdcXCcpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgc2l6ZSA9IGk7CisgICAgICAgICAgICAgICAgc2l6ZSAgICA9IGk7
CiAgICAgICAgICAgICAgICAgbWF4UmVhZCA9IG5SZWFkICsgc2l6ZTsgIC8vIFN0b3AgcmVhZGlu
ZyByaWdodCBiZWZvcmUgdGhlIGJhY2tzbGFzaC4KICAgICAgICAgICAgIH0KICAgICAgICAgfQpA
QCAtMTE0LDQgKzExMywzIEBAIHNpemVfdCBJbnB1dDo6cmVhZChjaGFyICpidWYsIHNpemVfdCBt
YXhTaXplLCBpbnQgKmxpbmVObykKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHBwCi0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvSW5w
dXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Iv
SW5wdXQuaAppbmRleCBlY2JiMDQ5NjJkZmU5YzU4N2FjNzI4YzFmMzhkZGI0MjI2NGY5ZTM3Li5k
NWYzODU4MzJiZTE0NDRmMmJiNjBiNGJiZmNkYjA3YTQxNTVlYzg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0lucHV0LmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1
dC5oCkBAIC0yMCwxOCArMjAsOSBAQCBjbGFzcyBJbnB1dAogICAgIElucHV0KCk7CiAgICAgSW5w
dXQoc2l6ZV90IGNvdW50LCBjb25zdCBjaGFyICpjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxl
bmd0aFtdKTsKIAotICAgIHNpemVfdCBjb3VudCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gbUNvdW50OwotICAgIH0KLSAgICBjb25zdCBjaGFyICpzdHJpbmcoc2l6ZV90IGluZGV4KSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1TdHJpbmdbaW5kZXhdOwotICAgIH0KLSAgICBz
aXplX3QgbGVuZ3RoKHNpemVfdCBpbmRleCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
TGVuZ3RoW2luZGV4XTsKLSAgICB9CisgICAgc2l6ZV90IGNvdW50KCkgY29uc3QgeyByZXR1cm4g
bUNvdW50OyB9CisgICAgY29uc3QgY2hhciAqc3RyaW5nKHNpemVfdCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gbVN0cmluZ1tpbmRleF07IH0KKyAgICBzaXplX3QgbGVuZ3RoKHNpemVfdCBpbmRleCkg
Y29uc3QgeyByZXR1cm4gbUxlbmd0aFtpbmRleF07IH0KIAogICAgIHNpemVfdCByZWFkKGNoYXIg
KmJ1Ziwgc2l6ZV90IG1heFNpemUsIGludCAqbGluZU5vKTsKIApAQCAtNDAsMTEgKzMxLDcgQEAg
Y2xhc3MgSW5wdXQKICAgICAgICAgc2l6ZV90IHNJbmRleDsgIC8vIFN0cmluZyBpbmRleDsKICAg
ICAgICAgc2l6ZV90IGNJbmRleDsgIC8vIENoYXIgaW5kZXguCiAKLSAgICAgICAgTG9jYXRpb24o
KQotICAgICAgICAgICAgOiBzSW5kZXgoMCksCi0gICAgICAgICAgICAgIGNJbmRleCgwKQotICAg
ICAgICB7Ci0gICAgICAgIH0KKyAgICAgICAgTG9jYXRpb24oKSA6IHNJbmRleCgwKSwgY0luZGV4
KDApIHt9CiAgICAgfTsKICAgICBjb25zdCBMb2NhdGlvbiAmcmVhZExvYygpIGNvbnN0IHsgcmV0
dXJuIG1SZWFkTG9jOyB9CiAKQEAgLTU1LDcgKzQyLDcgQEAgY2xhc3MgSW5wdXQKIAogICAgIC8v
IElucHV0LgogICAgIHNpemVfdCBtQ291bnQ7Ci0gICAgY29uc3QgY2hhciAqIGNvbnN0ICptU3Ry
aW5nOworICAgIGNvbnN0IGNoYXIgKmNvbnN0ICptU3RyaW5nOwogICAgIHN0ZDo6dmVjdG9yPHNp
emVfdD4gbUxlbmd0aDsKIAogICAgIExvY2F0aW9uIG1SZWFkTG9jOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyby5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3Jv
LmNwcAppbmRleCBmNWM5NDM5OWRiNzdkOTBiNWVhZDA0MjE2MGM1MTAxNWI3MmZjZTUzLi42MTYy
NzY3ZGFkMWM5MDJlNjdhNGM0MDMyN2RiNjFkNWUwM2FiYTI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3Jv
LmNwcApAQCAtMTQsOSArMTQsNyBAQCBuYW1lc3BhY2UgcHAKIAogYm9vbCBNYWNybzo6ZXF1YWxz
KGNvbnN0IE1hY3JvICZvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gKHR5cGUgPT0gb3RoZXIu
dHlwZSkgJiYKLSAgICAgICAgICAgKG5hbWUgPT0gb3RoZXIubmFtZSkgJiYKLSAgICAgICAgICAg
KHBhcmFtZXRlcnMgPT0gb3RoZXIucGFyYW1ldGVycykgJiYKKyAgICByZXR1cm4gKHR5cGUgPT0g
b3RoZXIudHlwZSkgJiYgKG5hbWUgPT0gb3RoZXIubmFtZSkgJiYgKHBhcmFtZXRlcnMgPT0gb3Ro
ZXIucGFyYW1ldGVycykgJiYKICAgICAgICAgICAgKHJlcGxhY2VtZW50cyA9PSBvdGhlci5yZXBs
YWNlbWVudHMpOwogfQogCkBAIC0yNiwxNCArMjQsMTMgQEAgdm9pZCBQcmVkZWZpbmVNYWNybyhN
YWNyb1NldCAqbWFjcm9TZXQsIGNvbnN0IGNoYXIgKm5hbWUsIGludCB2YWx1ZSkKICAgICB0b2tl
bi50eXBlID0gVG9rZW46OkNPTlNUX0lOVDsKICAgICB0b2tlbi50ZXh0ID0gVG9TdHJpbmcodmFs
dWUpOwogCi0gICAgTWFjcm8gbWFjcm87Ci0gICAgbWFjcm8ucHJlZGVmaW5lZCA9IHRydWU7Ci0g
ICAgbWFjcm8udHlwZSAgICAgICA9IE1hY3JvOjprVHlwZU9iajsKLSAgICBtYWNyby5uYW1lID0g
bmFtZTsKLSAgICBtYWNyby5yZXBsYWNlbWVudHMucHVzaF9iYWNrKHRva2VuKTsKKyAgICBzdGQ6
OnNoYXJlZF9wdHI8TWFjcm8+IG1hY3JvID0gc3RkOjptYWtlX3NoYXJlZDxNYWNybz4oKTsKKyAg
ICBtYWNyby0+cHJlZGVmaW5lZCAgICAgICAgICAgID0gdHJ1ZTsKKyAgICBtYWNyby0+dHlwZSAg
ICAgICAgICAgICAgICAgID0gTWFjcm86OmtUeXBlT2JqOworICAgIG1hY3JvLT5uYW1lICAgICAg
ICAgICAgICAgICAgPSBuYW1lOworICAgIG1hY3JvLT5yZXBsYWNlbWVudHMucHVzaF9iYWNrKHRv
a2VuKTsKIAogICAgICgqbWFjcm9TZXQpW25hbWVdID0gbWFjcm87CiB9CiAKIH0gIC8vIG5hbWVz
cGFjZSBwcAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvcHJlcHJvY2Vzc29yL01hY3JvLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvLmgKaW5kZXggNTU3ZGYxNjNjMjA4MDY2MTM5ODA4NWEw
MTEyNDk5NDI4NGJjYTdhZC4uZjgzNWM0MmU2MmY0Y2NmN2YzMzQ3OTRkOWQ5ZmVlZjUyMzU0ZWQy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9NYWNyby5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvTWFjcm8uaApAQCAtOCw2ICs4LDcgQEAKICNkZWZpbmUgQ09NUElMRVJf
UFJFUFJPQ0VTU09SX01BQ1JPX0hfCiAKICNpbmNsdWRlIDxtYXA+CisjaW5jbHVkZSA8bWVtb3J5
PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKQEAgLTM5LDcgKzQwLDcg
QEAgc3RydWN0IE1hY3JvCiAgICAgUmVwbGFjZW1lbnRzIHJlcGxhY2VtZW50czsKIH07CiAKLXR5
cGVkZWYgc3RkOjptYXA8c3RkOjpzdHJpbmcsIE1hY3JvPiBNYWNyb1NldDsKK3R5cGVkZWYgc3Rk
OjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c2hhcmVkX3B0cjxNYWNybz4+IE1hY3JvU2V0OwogCiB2
b2lkIFByZWRlZmluZU1hY3JvKE1hY3JvU2V0ICptYWNyb1NldCwgY29uc3QgY2hhciAqbmFtZSwg
aW50IHZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm9FeHBhbmRlci5jcHAKaW5kZXgg
ZjM4YjM5NjM1MTU0ZDU2NTBhM2M2ZGMwYThhZDI3ZGJjYjFlYzJjNi4uY2MxMTVmOTExM2Q4N2Fk
YTBhZTU2OGFiMTFmZTUyNjI2NTZlN2NkMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVyLmNwcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvRXhw
YW5kZXIuY3BwCkBAIC0yMiw3ICsyMiw3IEBAIGNvbnN0IHNpemVfdCBrTWF4Q29udGV4dFRva2Vu
cyA9IDEwMDAwOwogCiBjbGFzcyBUb2tlbkxleGVyIDogcHVibGljIExleGVyCiB7Ci0gcHVibGlj
OgorICBwdWJsaWM6CiAgICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxUb2tlbj4gVG9rZW5WZWN0b3I7
CiAKICAgICBUb2tlbkxleGVyKFRva2VuVmVjdG9yICp0b2tlbnMpCkBAIC00NCwyMCArNDQsNTgg
QEAgY2xhc3MgVG9rZW5MZXhlciA6IHB1YmxpYyBMZXhlcgogICAgICAgICB9CiAgICAgfQogCi0g
cHJpdmF0ZToKKyAgcHJpdmF0ZToKICAgICBUb2tlblZlY3RvciBtVG9rZW5zOwogICAgIFRva2Vu
VmVjdG9yOjpjb25zdF9pdGVyYXRvciBtSXRlcjsKIH07CiAKIH0gIC8vIGFub255bW91cyBuYW1l
c3BhY2UKIAotTWFjcm9FeHBhbmRlcjo6TWFjcm9FeHBhbmRlcihMZXhlciAqbGV4ZXIsIE1hY3Jv
U2V0ICptYWNyb1NldCwgRGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKQotICAgIDogbUxleGVyKGxl
eGVyKSwgbU1hY3JvU2V0KG1hY3JvU2V0KSwgbURpYWdub3N0aWNzKGRpYWdub3N0aWNzKSwgbVRv
dGFsVG9rZW5zSW5Db250ZXh0cygwKQorY2xhc3MgTWFjcm9FeHBhbmRlcjo6U2NvcGVkTWFjcm9S
ZWVuYWJsZXIgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAgIFNj
b3BlZE1hY3JvUmVlbmFibGVyKE1hY3JvRXhwYW5kZXIgKmV4cGFuZGVyKTsKKyAgICB+U2NvcGVk
TWFjcm9SZWVuYWJsZXIoKTsKKworICBwcml2YXRlOgorICAgIE1hY3JvRXhwYW5kZXIgKm1FeHBh
bmRlcjsKK307CisKK01hY3JvRXhwYW5kZXI6OlNjb3BlZE1hY3JvUmVlbmFibGVyOjpTY29wZWRN
YWNyb1JlZW5hYmxlcihNYWNyb0V4cGFuZGVyICpleHBhbmRlcikKKyAgICA6IG1FeHBhbmRlcihl
eHBhbmRlcikKK3sKKyAgICBtRXhwYW5kZXItPm1EZWZlclJlZW5hYmxpbmdNYWNyb3MgPSB0cnVl
OworfQorCitNYWNyb0V4cGFuZGVyOjpTY29wZWRNYWNyb1JlZW5hYmxlcjo6flNjb3BlZE1hY3Jv
UmVlbmFibGVyKCkKK3sKKyAgICBtRXhwYW5kZXItPm1EZWZlclJlZW5hYmxpbmdNYWNyb3MgPSBm
YWxzZTsKKyAgICBmb3IgKGF1dG8gbWFjcm8gOiBtRXhwYW5kZXItPm1NYWNyb3NUb1JlZW5hYmxl
KQorICAgIHsKKyAgICAgICAgLy8gQ29weWluZyB0aGUgc3RyaW5nIGhlcmUgYnkgdXNpbmcgc3Vi
c3RyIGlzIGEgY2hlY2sgZm9yIHVzZS1hZnRlci1mcmVlLiBJdCBkZXRlY3RzCisgICAgICAgIC8v
IHVzZS1hZnRlci1mcmVlIG1vcmUgcmVsaWFibHkgdGhhbiBqdXN0IHRvZ2dsaW5nIHRoZSBkaXNh
YmxlZCBmbGFnLgorICAgICAgICBBU1NFUlQobWFjcm8tPm5hbWUuc3Vic3RyKCkgIT0gIiIpOwor
ICAgICAgICBtYWNyby0+ZGlzYWJsZWQgPSBmYWxzZTsKKyAgICB9CisgICAgbUV4cGFuZGVyLT5t
TWFjcm9zVG9SZWVuYWJsZS5jbGVhcigpOworfQorCitNYWNyb0V4cGFuZGVyOjpNYWNyb0V4cGFu
ZGVyKExleGVyICpsZXhlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9TZXQg
Km1hY3JvU2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaWFnbm9zdGljcyAqZGlh
Z25vc3RpY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbGxvd2VkTWFjcm9F
eHBhbnNpb25EZXB0aCkKKyAgICA6IG1MZXhlcihsZXhlciksCisgICAgICBtTWFjcm9TZXQobWFj
cm9TZXQpLAorICAgICAgbURpYWdub3N0aWNzKGRpYWdub3N0aWNzKSwKKyAgICAgIG1Ub3RhbFRv
a2Vuc0luQ29udGV4dHMoMCksCisgICAgICBtQWxsb3dlZE1hY3JvRXhwYW5zaW9uRGVwdGgoYWxs
b3dlZE1hY3JvRXhwYW5zaW9uRGVwdGgpLAorICAgICAgbURlZmVyUmVlbmFibGluZ01hY3Jvcyhm
YWxzZSkKIHsKIH0KIAogTWFjcm9FeHBhbmRlcjo6fk1hY3JvRXhwYW5kZXIoKQogeworICAgIEFT
U0VSVChtTWFjcm9zVG9SZWVuYWJsZS5lbXB0eSgpKTsKICAgICBmb3IgKE1hY3JvQ29udGV4dCAq
Y29udGV4dCA6IG1Db250ZXh0U3RhY2spCiAgICAgewogICAgICAgICBkZWxldGUgY29udGV4dDsK
QEAgLTgwLDE3ICsxMTgsMjIgQEAgdm9pZCBNYWNyb0V4cGFuZGVyOjpsZXgoVG9rZW4gKnRva2Vu
KQogICAgICAgICBpZiAoaXRlciA9PSBtTWFjcm9TZXQtPmVuZCgpKQogICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICAgICAgY29uc3QgTWFjcm8mIG1hY3JvID0gaXRlci0+c2Vjb25kOwotICAgICAg
ICBpZiAobWFjcm8uZGlzYWJsZWQpCisgICAgICAgIHN0ZDo6c2hhcmVkX3B0cjxNYWNybz4gbWFj
cm8gPSBpdGVyLT5zZWNvbmQ7CisgICAgICAgIGlmIChtYWNyby0+ZGlzYWJsZWQpCiAgICAgICAg
IHsKICAgICAgICAgICAgIC8vIElmIGEgcGFydGljdWxhciB0b2tlbiBpcyBub3QgZXhwYW5kZWQs
IGl0IGlzIG5ldmVyIGV4cGFuZGVkLgogICAgICAgICAgICAgdG9rZW4tPnNldEV4cGFuc2lvbkRp
c2FibGVkKHRydWUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYg
KChtYWNyby50eXBlID09IE1hY3JvOjprVHlwZUZ1bmMpICYmICFpc05leHRUb2tlbkxlZnRQYXJl
bigpKQorCisgICAgICAgIC8vIEJ1bXAgdGhlIGV4cGFuc2lvbiBjb3VudCBiZWZvcmUgcGVla2lu
ZyBpZiB0aGUgbmV4dCB0b2tlbiBpcyBhICcoJworICAgICAgICAvLyBvdGhlcndpc2UgdGhlcmUg
Y291bGQgYmUgYSAjdW5kZWYgb2YgdGhlIG1hY3JvIGJlZm9yZSB0aGUgbmV4dCB0b2tlbi4KKyAg
ICAgICAgbWFjcm8tPmV4cGFuc2lvbkNvdW50Kys7CisgICAgICAgIGlmICgobWFjcm8tPnR5cGUg
PT0gTWFjcm86OmtUeXBlRnVuYykgJiYgIWlzTmV4dFRva2VuTGVmdFBhcmVuKCkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIC8vIElmIHRoZSB0b2tlbiBpbW1lZGlhdGVseSBhZnRlciB0aGUgbWFj
cm8gbmFtZSBpcyBub3QgYSAnKCcsCiAgICAgICAgICAgICAvLyB0aGlzIG1hY3JvIHNob3VsZCBu
b3QgYmUgZXhwYW5kZWQuCisgICAgICAgICAgICBtYWNyby0+ZXhwYW5zaW9uQ291bnQtLTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTE1MCwyNCArMTkzLDIyIEBAIGJvb2wg
TWFjcm9FeHBhbmRlcjo6aXNOZXh0VG9rZW5MZWZ0UGFyZW4oKQogICAgIHJldHVybiBscGFyZW47
CiB9CiAKLWJvb2wgTWFjcm9FeHBhbmRlcjo6cHVzaE1hY3JvKGNvbnN0IE1hY3JvICZtYWNybywg
Y29uc3QgVG9rZW4gJmlkZW50aWZpZXIpCitib29sIE1hY3JvRXhwYW5kZXI6OnB1c2hNYWNybyhz
dGQ6OnNoYXJlZF9wdHI8TWFjcm8+IG1hY3JvLCBjb25zdCBUb2tlbiAmaWRlbnRpZmllcikKIHsK
LSAgICBBU1NFUlQoIW1hY3JvLmRpc2FibGVkKTsKKyAgICBBU1NFUlQoIW1hY3JvLT5kaXNhYmxl
ZCk7CiAgICAgQVNTRVJUKCFpZGVudGlmaWVyLmV4cGFuc2lvbkRpc2FibGVkKCkpOwogICAgIEFT
U0VSVChpZGVudGlmaWVyLnR5cGUgPT0gVG9rZW46OklERU5USUZJRVIpOwotICAgIEFTU0VSVChp
ZGVudGlmaWVyLnRleHQgPT0gbWFjcm8ubmFtZSk7Ci0KLSAgICBtYWNyby5leHBhbnNpb25Db3Vu
dCsrOworICAgIEFTU0VSVChpZGVudGlmaWVyLnRleHQgPT0gbWFjcm8tPm5hbWUpOwogCiAgICAg
c3RkOjp2ZWN0b3I8VG9rZW4+IHJlcGxhY2VtZW50czsKLSAgICBpZiAoIWV4cGFuZE1hY3JvKG1h
Y3JvLCBpZGVudGlmaWVyLCAmcmVwbGFjZW1lbnRzKSkKKyAgICBpZiAoIWV4cGFuZE1hY3JvKCpt
YWNybywgaWRlbnRpZmllciwgJnJlcGxhY2VtZW50cykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIC8vIE1hY3JvIGlzIGRpc2FibGVkIGZvciBleHBhbnNpb24gdW50aWwgaXQgaXMgcG9w
cGVkIG9mZiB0aGUgc3RhY2suCi0gICAgbWFjcm8uZGlzYWJsZWQgPSB0cnVlOworICAgIG1hY3Jv
LT5kaXNhYmxlZCA9IHRydWU7CiAKICAgICBNYWNyb0NvbnRleHQgKmNvbnRleHQgPSBuZXcgTWFj
cm9Db250ZXh0OwotICAgIGNvbnRleHQtPm1hY3JvID0gJm1hY3JvOworICAgIGNvbnRleHQtPm1h
Y3JvICAgICAgICA9IG1hY3JvOwogICAgIGNvbnRleHQtPnJlcGxhY2VtZW50cy5zd2FwKHJlcGxh
Y2VtZW50cyk7CiAgICAgbUNvbnRleHRTdGFjay5wdXNoX2JhY2soY29udGV4dCk7CiAgICAgbVRv
dGFsVG9rZW5zSW5Db250ZXh0cyArPSBjb250ZXh0LT5yZXBsYWNlbWVudHMuc2l6ZSgpOwpAQCAt
MTg0LDcgKzIyNSwxNCBAQCB2b2lkIE1hY3JvRXhwYW5kZXI6OnBvcE1hY3JvKCkKICAgICBBU1NF
UlQoY29udGV4dC0+ZW1wdHkoKSk7CiAgICAgQVNTRVJUKGNvbnRleHQtPm1hY3JvLT5kaXNhYmxl
ZCk7CiAgICAgQVNTRVJUKGNvbnRleHQtPm1hY3JvLT5leHBhbnNpb25Db3VudCA+IDApOwotICAg
IGNvbnRleHQtPm1hY3JvLT5kaXNhYmxlZCA9IGZhbHNlOworICAgIGlmIChtRGVmZXJSZWVuYWJs
aW5nTWFjcm9zKQorICAgIHsKKyAgICAgICAgbU1hY3Jvc1RvUmVlbmFibGUucHVzaF9iYWNrKGNv
bnRleHQtPm1hY3JvKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
bWFjcm8tPmRpc2FibGVkID0gZmFsc2U7CisgICAgfQogICAgIGNvbnRleHQtPm1hY3JvLT5leHBh
bnNpb25Db3VudC0tOwogICAgIG1Ub3RhbFRva2Vuc0luQ29udGV4dHMgLT0gY29udGV4dC0+cmVw
bGFjZW1lbnRzLnNpemUoKTsKICAgICBkZWxldGUgY29udGV4dDsKQEAgLTIwMyw4ICsyNTEsNyBA
QCBib29sIE1hY3JvRXhwYW5kZXI6OmV4cGFuZE1hY3JvKGNvbnN0IE1hY3JvICZtYWNybywKICAg
ICBTb3VyY2VMb2NhdGlvbiByZXBsYWNlbWVudExvY2F0aW9uID0gaWRlbnRpZmllci5sb2NhdGlv
bjsKICAgICBpZiAobWFjcm8udHlwZSA9PSBNYWNybzo6a1R5cGVPYmopCiAgICAgewotICAgICAg
ICByZXBsYWNlbWVudHMtPmFzc2lnbihtYWNyby5yZXBsYWNlbWVudHMuYmVnaW4oKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWFjcm8ucmVwbGFjZW1lbnRzLmVuZCgpKTsKKyAgICAg
ICAgcmVwbGFjZW1lbnRzLT5hc3NpZ24obWFjcm8ucmVwbGFjZW1lbnRzLmJlZ2luKCksIG1hY3Jv
LnJlcGxhY2VtZW50cy5lbmQoKSk7CiAKICAgICAgICAgaWYgKG1hY3JvLnByZWRlZmluZWQpCiAg
ICAgICAgIHsKQEAgLTIxMiw3ICsyNTksNyBAQCBib29sIE1hY3JvRXhwYW5kZXI6OmV4cGFuZE1h
Y3JvKGNvbnN0IE1hY3JvICZtYWNybywKICAgICAgICAgICAgIGNvbnN0IGNoYXIga0ZpbGVbXSA9
ICJfX0ZJTEVfXyI7CiAKICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudHMtPnNpemUoKSA9
PSAxKTsKLSAgICAgICAgICAgIFRva2VuJiByZXBsID0gcmVwbGFjZW1lbnRzLT5mcm9udCgpOwor
ICAgICAgICAgICAgVG9rZW4gJnJlcGwgPSByZXBsYWNlbWVudHMtPmZyb250KCk7CiAgICAgICAg
ICAgICBpZiAobWFjcm8ubmFtZSA9PSBrTGluZSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICByZXBsLnRleHQgPSBUb1N0cmluZyhpZGVudGlmaWVyLmxvY2F0aW9uLmxpbmUpOwpAQCAt
MjM2LDcgKzI4Myw3IEBAIGJvb2wgTWFjcm9FeHBhbmRlcjo6ZXhwYW5kTWFjcm8oY29uc3QgTWFj
cm8gJm1hY3JvLAogCiAgICAgZm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8IHJlcGxhY2VtZW50
cy0+c2l6ZSgpOyArK2kpCiAgICAgewotICAgICAgICBUb2tlbiYgcmVwbCA9IHJlcGxhY2VtZW50
cy0+YXQoaSk7CisgICAgICAgIFRva2VuICZyZXBsID0gcmVwbGFjZW1lbnRzLT5hdChpKTsKICAg
ICAgICAgaWYgKGkgPT0gMCkKICAgICAgICAgewogICAgICAgICAgICAgLy8gVGhlIGZpcnN0IHRv
a2VuIGluIHRoZSByZXBsYWNlbWVudCBsaXN0IGluaGVyaXRzIHRoZSBwYWRkaW5nCkBAIC0yNjAs
NiArMzA3LDExIEBAIGJvb2wgTWFjcm9FeHBhbmRlcjo6Y29sbGVjdE1hY3JvQXJncyhjb25zdCBN
YWNybyAmbWFjcm8sCiAKICAgICBhcmdzLT5wdXNoX2JhY2soTWFjcm9BcmcoKSk7CiAKKyAgICAv
LyBEZWZlciByZWVuYWJsaW5nIG1hY3JvcyB1bnRpbCBhcmdzIGNvbGxlY3Rpb24gaXMgZmluaXNo
ZWQgdG8gYXZvaWQgdGhlIHBvc3NpYmlsaXR5IG9mCisgICAgLy8gaW5maW5pdGUgcmVjdXJzaW9u
LiBPdGhlcndpc2UgaW5maW5pdGUgcmVjdXJzaW9uIG1pZ2h0IGhhcHBlbiB3aGVuIGV4cGFuZGlu
ZyB0aGUgYXJncyBhZnRlcgorICAgIC8vIG1hY3JvcyBoYXZlIGJlZW4gcG9wcGVkIGZyb20gdGhl
IGNvbnRleHQgc3RhY2sgd2hlbiBwYXJzaW5nIHRoZSBhcmdzLgorICAgIFNjb3BlZE1hY3JvUmVl
bmFibGVyIGRlZmVyUmVlbmFibGluZ01hY3Jvcyh0aGlzKTsKKwogICAgIGludCBvcGVuUGFyZW5z
ID0gMTsKICAgICB3aGlsZSAob3BlblBhcmVucyAhPSAwKQogICAgIHsKQEAgLTI2NywzNiArMzE5
LDM2IEBAIGJvb2wgTWFjcm9FeHBhbmRlcjo6Y29sbGVjdE1hY3JvQXJncyhjb25zdCBNYWNybyAm
bWFjcm8sCiAKICAgICAgICAgaWYgKHRva2VuLnR5cGUgPT0gVG9rZW46OkxBU1QpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9NQUNS
T19VTlRFUk1JTkFURURfSU5WT0NBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlkZW50aWZpZXIubG9jYXRpb24sIGlkZW50aWZpZXIudGV4dCk7CisgICAgICAgICAgICBt
RGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfTUFDUk9fVU5URVJNSU5BVEVEX0lO
Vk9DQVRJT04sIGlkZW50aWZpZXIubG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZGVudGlmaWVyLnRleHQpOwogICAgICAgICAgICAgLy8gRG8gbm90IGxvc2UgRU9G
IHRva2VuLgogICAgICAgICAgICAgdW5nZXRUb2tlbih0b2tlbik7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBib29sIGlzQXJnID0gZmFsc2U7IC8vIFRy
dWUgaWYgdG9rZW4gaXMgcGFydCBvZiB0aGUgY3VycmVudCBhcmd1bWVudC4KKyAgICAgICAgYm9v
bCBpc0FyZyA9IGZhbHNlOyAgLy8gVHJ1ZSBpZiB0b2tlbiBpcyBwYXJ0IG9mIHRoZSBjdXJyZW50
IGFyZ3VtZW50LgogICAgICAgICBzd2l0Y2ggKHRva2VuLnR5cGUpCiAgICAgICAgIHsKLSAgICAg
ICAgICBjYXNlICcoJzoKLSAgICAgICAgICAgICsrb3BlblBhcmVuczsKLSAgICAgICAgICAgIGlz
QXJnID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgJyknOgotICAg
ICAgICAgICAgLS1vcGVuUGFyZW5zOwotICAgICAgICAgICAgaXNBcmcgPSBvcGVuUGFyZW5zICE9
IDA7Ci0gICAgICAgICAgICAqY2xvc2luZ1BhcmVudGhlc2lzTG9jYXRpb24gPSB0b2tlbi5sb2Nh
dGlvbjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgJywnOgotICAgICAgICAg
ICAgLy8gVGhlIGluZGl2aWR1YWwgYXJndW1lbnRzIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWEgdG9r
ZW5zLCBidXQKLSAgICAgICAgICAgIC8vIHRoZSBjb21tYSB0b2tlbnMgYmV0d2VlbiBtYXRjaGlu
ZyBpbm5lciBwYXJlbnRoZXNlcyBkbyBub3QKLSAgICAgICAgICAgIC8vIHNlcGVyYXRlIGFyZ3Vt
ZW50cy4KLSAgICAgICAgICAgIGlmIChvcGVuUGFyZW5zID09IDEpCi0gICAgICAgICAgICAgICAg
YXJncy0+cHVzaF9iYWNrKE1hY3JvQXJnKCkpOwotICAgICAgICAgICAgaXNBcmcgPSBvcGVuUGFy
ZW5zICE9IDE7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgaXNBcmcgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
ICcoJzoKKyAgICAgICAgICAgICAgICArK29wZW5QYXJlbnM7CisgICAgICAgICAgICAgICAgaXNB
cmcgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnKSc6
CisgICAgICAgICAgICAgICAgLS1vcGVuUGFyZW5zOworICAgICAgICAgICAgICAgIGlzQXJnICAg
ICAgICAgICAgICAgICAgICAgICA9IG9wZW5QYXJlbnMgIT0gMDsKKyAgICAgICAgICAgICAgICAq
Y2xvc2luZ1BhcmVudGhlc2lzTG9jYXRpb24gPSB0b2tlbi5sb2NhdGlvbjsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJywnOgorICAgICAgICAgICAgICAgIC8vIFRo
ZSBpbmRpdmlkdWFsIGFyZ3VtZW50cyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hIHRva2VucywgYnV0
CisgICAgICAgICAgICAgICAgLy8gdGhlIGNvbW1hIHRva2VucyBiZXR3ZWVuIG1hdGNoaW5nIGlu
bmVyIHBhcmVudGhlc2VzIGRvIG5vdAorICAgICAgICAgICAgICAgIC8vIHNlcGVyYXRlIGFyZ3Vt
ZW50cy4KKyAgICAgICAgICAgICAgICBpZiAob3BlblBhcmVucyA9PSAxKQorICAgICAgICAgICAg
ICAgICAgICBhcmdzLT5wdXNoX2JhY2soTWFjcm9BcmcoKSk7CisgICAgICAgICAgICAgICAgaXNB
cmcgPSBvcGVuUGFyZW5zICE9IDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGlzQXJnID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoaXNBcmcpCiAgICAgICAgIHsKQEAgLTMx
Nyw5ICszNjksOSBAQCBib29sIE1hY3JvRXhwYW5kZXI6OmNvbGxlY3RNYWNyb0FyZ3MoY29uc3Qg
TWFjcm8gJm1hY3JvLAogICAgIC8vIFZhbGlkYXRlIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzLgog
ICAgIGlmIChhcmdzLT5zaXplKCkgIT0gcGFyYW1zLnNpemUoKSkKICAgICB7Ci0gICAgICAgIERp
YWdub3N0aWNzOjpJRCBpZCA9IGFyZ3MtPnNpemUoKSA8IG1hY3JvLnBhcmFtZXRlcnMuc2l6ZSgp
ID8KLSAgICAgICAgICAgIERpYWdub3N0aWNzOjpQUF9NQUNST19UT09fRkVXX0FSR1MgOgotICAg
ICAgICAgICAgRGlhZ25vc3RpY3M6OlBQX01BQ1JPX1RPT19NQU5ZX0FSR1M7CisgICAgICAgIERp
YWdub3N0aWNzOjpJRCBpZCA9IGFyZ3MtPnNpemUoKSA8IG1hY3JvLnBhcmFtZXRlcnMuc2l6ZSgp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IERpYWdub3N0aWNzOjpQUF9NQUNS
T19UT09fRkVXX0FSR1MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRGlhZ25v
c3RpY3M6OlBQX01BQ1JPX1RPT19NQU5ZX0FSR1M7CiAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVw
b3J0KGlkLCBpZGVudGlmaWVyLmxvY2F0aW9uLCBpZGVudGlmaWVyLnRleHQpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMzMxLDcgKzM4MywxMyBAQCBib29sIE1hY3JvRXhwYW5k
ZXI6OmNvbGxlY3RNYWNyb0FyZ3MoY29uc3QgTWFjcm8gJm1hY3JvLAogICAgIGZvciAoYXV0byAm
YXJnIDogKmFyZ3MpCiAgICAgewogICAgICAgICBUb2tlbkxleGVyIGxleGVyKCZhcmcpOwotICAg
ICAgICBNYWNyb0V4cGFuZGVyIGV4cGFuZGVyKCZsZXhlciwgbU1hY3JvU2V0LCBtRGlhZ25vc3Rp
Y3MpOworICAgICAgICBpZiAobUFsbG93ZWRNYWNyb0V4cGFuc2lvbkRlcHRoIDwgMSkKKyAgICAg
ICAgeworICAgICAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX01B
Q1JPX0lOVk9DQVRJT05fQ0hBSU5fVE9PX0RFRVAsIHRva2VuLmxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4udGV4dCk7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgTWFjcm9FeHBhbmRlciBleHBhbmRlcigmbGV4ZXIs
IG1NYWNyb1NldCwgbURpYWdub3N0aWNzLCBtQWxsb3dlZE1hY3JvRXhwYW5zaW9uRGVwdGggLSAx
KTsKIAogICAgICAgICBhcmcuY2xlYXIoKTsKICAgICAgICAgZXhwYW5kZXIubGV4KCZ0b2tlbik7
CkBAIC0zNzQsMTUgKzQzMiwxNSBAQCB2b2lkIE1hY3JvRXhwYW5kZXI6OnJlcGxhY2VNYWNyb1Bh
cmFtcyhjb25zdCBNYWNybyAmbWFjcm8sCiAgICAgICAgIC8vIFRPRE8oYWxva3ApOiBPcHRpbWl6
ZSB0aGlzLgogICAgICAgICAvLyBUaGVyZSBpcyBubyBuZWVkIHRvIHNlYXJjaCBmb3IgbWFjcm8g
cGFyYW1zIGV2ZXJ5IHRpbWUuCiAgICAgICAgIC8vIFRoZSBwYXJhbSBpbmRleCBjYW4gYmUgY2Fj
aGVkIHdpdGggdGhlIHJlcGxhY2VtZW50IHRva2VuLgotICAgICAgICBNYWNybzo6UGFyYW1ldGVy
czo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHN0ZDo6ZmluZCgKLSAgICAgICAgICAgIG1hY3JvLnBh
cmFtZXRlcnMuYmVnaW4oKSwgbWFjcm8ucGFyYW1ldGVycy5lbmQoKSwgcmVwbC50ZXh0KTsKKyAg
ICAgICAgTWFjcm86OlBhcmFtZXRlcnM6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPQorICAgICAgICAg
ICAgc3RkOjpmaW5kKG1hY3JvLnBhcmFtZXRlcnMuYmVnaW4oKSwgbWFjcm8ucGFyYW1ldGVycy5l
bmQoKSwgcmVwbC50ZXh0KTsKICAgICAgICAgaWYgKGl0ZXIgPT0gbWFjcm8ucGFyYW1ldGVycy5l
bmQoKSkKICAgICAgICAgewogICAgICAgICAgICAgcmVwbGFjZW1lbnRzLT5wdXNoX2JhY2socmVw
bCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIHN0ZDo6c2l6
ZV90IGlBcmcgPSBzdGQ6OmRpc3RhbmNlKG1hY3JvLnBhcmFtZXRlcnMuYmVnaW4oKSwgaXRlcik7
CisgICAgICAgIHN0ZDo6c2l6ZV90IGlBcmcgICAgPSBzdGQ6OmRpc3RhbmNlKG1hY3JvLnBhcmFt
ZXRlcnMuYmVnaW4oKSwgaXRlcik7CiAgICAgICAgIGNvbnN0IE1hY3JvQXJnICZhcmcgPSBhcmdz
W2lBcmddOwogICAgICAgICBpZiAoYXJnLmVtcHR5KCkpCiAgICAgICAgIHsKQEAgLTQxNyw0ICs0
NzUsMyBAQCB2b2lkIE1hY3JvRXhwYW5kZXI6Ok1hY3JvQ29udGV4dDo6dW5nZXQoKQogfQogCiB9
ICAvLyBuYW1lc3BhY2UgcHAKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVyLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvRXhwYW5kZXIuaAppbmRl
eCA3N2M3NjdjMzRhMDdlNDk5Y2JmMmZmMGUwYzNkM2Q1ODgzNmUwZGI5Li43YTRmNWE5YzI4Y2E5
OWMxMWFmN2EwY2NhZDExY2M3NWUxMjQ1Mjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvRXhwYW5kZXIuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvRXhw
YW5kZXIuaApAQCAtMjIsNyArMjIsMTAgQEAgc3RydWN0IFNvdXJjZUxvY2F0aW9uOwogY2xhc3Mg
TWFjcm9FeHBhbmRlciA6IHB1YmxpYyBMZXhlcgogewogICBwdWJsaWM6Ci0gICAgTWFjcm9FeHBh
bmRlcihMZXhlciAqbGV4ZXIsIE1hY3JvU2V0ICptYWNyb1NldCwgRGlhZ25vc3RpY3MgKmRpYWdu
b3N0aWNzKTsKKyAgICBNYWNyb0V4cGFuZGVyKExleGVyICpsZXhlciwKKyAgICAgICAgICAgICAg
ICAgIE1hY3JvU2V0ICptYWNyb1NldCwKKyAgICAgICAgICAgICAgICAgIERpYWdub3N0aWNzICpk
aWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICAgIGludCBhbGxvd2VkTWFjcm9FeHBhbnNpb25E
ZXB0aCk7CiAgICAgfk1hY3JvRXhwYW5kZXIoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgbGV4KFRv
a2VuICp0b2tlbikgb3ZlcnJpZGU7CkBAIC0zMiwxMiArMzUsMTAgQEAgY2xhc3MgTWFjcm9FeHBh
bmRlciA6IHB1YmxpYyBMZXhlcgogICAgIHZvaWQgdW5nZXRUb2tlbihjb25zdCBUb2tlbiAmdG9r
ZW4pOwogICAgIGJvb2wgaXNOZXh0VG9rZW5MZWZ0UGFyZW4oKTsKIAotICAgIGJvb2wgcHVzaE1h
Y3JvKGNvbnN0IE1hY3JvICZtYWNybywgY29uc3QgVG9rZW4gJmlkZW50aWZpZXIpOworICAgIGJv
b2wgcHVzaE1hY3JvKHN0ZDo6c2hhcmVkX3B0cjxNYWNybz4gbWFjcm8sIGNvbnN0IFRva2VuICZp
ZGVudGlmaWVyKTsKICAgICB2b2lkIHBvcE1hY3JvKCk7CiAKLSAgICBib29sIGV4cGFuZE1hY3Jv
KGNvbnN0IE1hY3JvICZtYWNybywKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRva2VuICZp
ZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8VG9rZW4+ICpyZXBs
YWNlbWVudHMpOworICAgIGJvb2wgZXhwYW5kTWFjcm8oY29uc3QgTWFjcm8gJm1hY3JvLCBjb25z
dCBUb2tlbiAmaWRlbnRpZmllciwgc3RkOjp2ZWN0b3I8VG9rZW4+ICpyZXBsYWNlbWVudHMpOwog
CiAgICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxUb2tlbj4gTWFjcm9Bcmc7CiAgICAgYm9vbCBjb2xs
ZWN0TWFjcm9BcmdzKGNvbnN0IE1hY3JvICZtYWNybywKQEAgLTU1LDcgKzU2LDcgQEAgY2xhc3Mg
TWFjcm9FeHBhbmRlciA6IHB1YmxpYyBMZXhlcgogICAgICAgICBjb25zdCBUb2tlbiAmZ2V0KCk7
CiAgICAgICAgIHZvaWQgdW5nZXQoKTsKIAotICAgICAgICBjb25zdCBNYWNybyAqbWFjcm87Cisg
ICAgICAgIHN0ZDo6c2hhcmVkX3B0cjxNYWNybz4gbWFjcm87CiAgICAgICAgIHN0ZDo6c2l6ZV90
IGluZGV4OwogICAgICAgICBzdGQ6OnZlY3RvcjxUb2tlbj4gcmVwbGFjZW1lbnRzOwogICAgIH07
CkBAIC02Nyw2ICs2OCwxMyBAQCBjbGFzcyBNYWNyb0V4cGFuZGVyIDogcHVibGljIExleGVyCiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFRva2VuPiBtUmVzZXJ2ZVRva2VuOwogICAgIHN0ZDo6dmVjdG9y
PE1hY3JvQ29udGV4dCAqPiBtQ29udGV4dFN0YWNrOwogICAgIHNpemVfdCBtVG90YWxUb2tlbnNJ
bkNvbnRleHRzOworCisgICAgaW50IG1BbGxvd2VkTWFjcm9FeHBhbnNpb25EZXB0aDsKKworICAg
IGJvb2wgbURlZmVyUmVlbmFibGluZ01hY3JvczsKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnNoYXJl
ZF9wdHI8TWFjcm8+PiBtTWFjcm9zVG9SZWVuYWJsZTsKKworICAgIGNsYXNzIFNjb3BlZE1hY3Jv
UmVlbmFibGVyOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHBwCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1By
ZXByb2Nlc3Nvci5jcHAKaW5kZXggMTcwOWQ2NjczZDczYWMwZDVhZGI1ZTZhMTIyYzMyNTkzMjk3
MGZlMC4uMzQ5YzdiMDZjNzExNGI1NGEzMmE2ZjVjOTk1MzU5MTk5YjVkNGRhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVw
cm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9w
cmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmNwcApAQCAtMjUsMTkgKzI1LDI2IEBAIHN0cnVjdCBQ
cmVwcm9jZXNzb3JJbXBsCiAgICAgRGlyZWN0aXZlUGFyc2VyIGRpcmVjdGl2ZVBhcnNlcjsKICAg
ICBNYWNyb0V4cGFuZGVyIG1hY3JvRXhwYW5kZXI7CiAKLSAgICBQcmVwcm9jZXNzb3JJbXBsKERp
YWdub3N0aWNzICpkaWFnLCBEaXJlY3RpdmVIYW5kbGVyICpkaXJlY3RpdmVIYW5kbGVyKQorICAg
IFByZXByb2Nlc3NvckltcGwoRGlhZ25vc3RpY3MgKmRpYWcsCisgICAgICAgICAgICAgICAgICAg
ICBEaXJlY3RpdmVIYW5kbGVyICpkaXJlY3RpdmVIYW5kbGVyLAorICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgUHJlcHJvY2Vzc29yU2V0dGluZ3MgJnNldHRpbmdzKQogICAgICAgICA6IGRpYWdu
b3N0aWNzKGRpYWcpLAogICAgICAgICAgIHRva2VuaXplcihkaWFnKSwKLSAgICAgICAgICBkaXJl
Y3RpdmVQYXJzZXIoJnRva2VuaXplciwgJm1hY3JvU2V0LCBkaWFnLCBkaXJlY3RpdmVIYW5kbGVy
KSwKLSAgICAgICAgICBtYWNyb0V4cGFuZGVyKCZkaXJlY3RpdmVQYXJzZXIsICZtYWNyb1NldCwg
ZGlhZykKKyAgICAgICAgICBkaXJlY3RpdmVQYXJzZXIoJnRva2VuaXplciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgJm1hY3JvU2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVIYW5kbGVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZXR0aW5ncy5tYXhNYWNyb0V4cGFuc2lvbkRlcHRoKSwKKyAgICAg
ICAgICBtYWNyb0V4cGFuZGVyKCZkaXJlY3RpdmVQYXJzZXIsICZtYWNyb1NldCwgZGlhZywgc2V0
dGluZ3MubWF4TWFjcm9FeHBhbnNpb25EZXB0aCkKICAgICB7CiAgICAgfQogfTsKIAogUHJlcHJv
Y2Vzc29yOjpQcmVwcm9jZXNzb3IoRGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRGlyZWN0aXZlSGFuZGxlciAqZGlyZWN0aXZlSGFuZGxlcikKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERpcmVjdGl2ZUhhbmRsZXIgKmRpcmVjdGl2ZUhhbmRs
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQcmVwcm9jZXNzb3JTZXR0aW5n
cyAmc2V0dGluZ3MpCiB7Ci0gICAgbUltcGwgPSBuZXcgUHJlcHJvY2Vzc29ySW1wbChkaWFnbm9z
dGljcywgZGlyZWN0aXZlSGFuZGxlcik7CisgICAgbUltcGwgPSBuZXcgUHJlcHJvY2Vzc29ySW1w
bChkaWFnbm9zdGljcywgZGlyZWN0aXZlSGFuZGxlciwgc2V0dGluZ3MpOwogfQogCiBQcmVwcm9j
ZXNzb3I6On5QcmVwcm9jZXNzb3IoKQpAQCAtNDUsOSArNTIsNyBAQCBQcmVwcm9jZXNzb3I6On5Q
cmVwcm9jZXNzb3IoKQogICAgIGRlbGV0ZSBtSW1wbDsKIH0KIAotYm9vbCBQcmVwcm9jZXNzb3I6
OmluaXQoc2l6ZV90IGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
IGNvbnN0IHN0cmluZ1tdLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGxlbmd0
aFtdKQorYm9vbCBQcmVwcm9jZXNzb3I6OmluaXQoc2l6ZV90IGNvdW50LCBjb25zdCBjaGFyICpj
b25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdKQogewogICAgIHN0YXRpYyBjb25zdCBp
bnQga0RlZmF1bHRHTFNMVmVyc2lvbiA9IDEwMDsKIApAQCAtNzMsMjMgKzc4LDIzIEBAIHZvaWQg
UHJlcHJvY2Vzc29yOjpsZXgoVG9rZW4gKnRva2VuKQogICAgICAgICBtSW1wbC0+bWFjcm9FeHBh
bmRlci5sZXgodG9rZW4pOwogICAgICAgICBzd2l0Y2ggKHRva2VuLT50eXBlKQogICAgICAgICB7
Ci0gICAgICAgICAgLy8gV2Ugc2hvdWxkIG5vdCBiZSByZXR1cm5pbmcgaW50ZXJuYWwgcHJlcHJv
Y2Vzc2luZyB0b2tlbnMuCi0gICAgICAgICAgLy8gQ29udmVydCBwcmVwcm9jZXNzaW5nIHRva2Vu
cyB0byBjb21waWxlciB0b2tlbnMgb3IgcmVwb3J0Ci0gICAgICAgICAgLy8gZGlhZ25vc3RpY3Mu
Ci0gICAgICAgICAgY2FzZSBUb2tlbjo6UFBfSEFTSDoKLSAgICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBUb2tlbjo6UFBfTlVN
QkVSOgotICAgICAgICAgICAgbUltcGwtPmRpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6
OlBQX0lOVkFMSURfTlVNQkVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICBjYXNlIFRva2VuOjpQUF9PVEhFUjoKLSAgICAgICAgICAgIG1JbXBsLT5kaWFnbm9z
dGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9JTlZBTElEX0NIQVJBQ1RFUiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRl
eHQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IHZhbGlkVG9rZW4gPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvLyBX
ZSBzaG91bGQgbm90IGJlIHJldHVybmluZyBpbnRlcm5hbCBwcmVwcm9jZXNzaW5nIHRva2Vucy4K
KyAgICAgICAgICAgIC8vIENvbnZlcnQgcHJlcHJvY2Vzc2luZyB0b2tlbnMgdG8gY29tcGlsZXIg
dG9rZW5zIG9yIHJlcG9ydAorICAgICAgICAgICAgLy8gZGlhZ25vc3RpY3MuCisgICAgICAgICAg
ICBjYXNlIFRva2VuOjpQUF9IQVNIOgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRva2VuOjpQUF9OVU1CRVI6
CisgICAgICAgICAgICAgICAgbUltcGwtPmRpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6
OlBQX0lOVkFMSURfTlVNQkVSLCB0b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4tPnRleHQpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBUb2tlbjo6UFBfT1RIRVI6CisgICAgICAgICAgICAgICAg
bUltcGwtPmRpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfQ0hBUkFD
VEVSLCB0b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdG9rZW4tPnRleHQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB2YWxpZFRva2VuID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXBy
b2Nlc3Nvci5oCmluZGV4IGNkNjk5Nzg2ZmNlZDhmMDFlOTViYzk2NGUyNGQxZTlhYzRiZGEwOGQu
LjZhYjQ0ZmY0OTM0YTNmNWY5OWMyZjc5ZjM0MDFhNmI5ZDFkZWZjNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vz
c29yLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9QcmVwcm9jZXNzb3IuaApAQCAtMTksMTAgKzE5LDE4IEBAIGNsYXNzIERpcmVjdGl2ZUhh
bmRsZXI7CiBzdHJ1Y3QgUHJlcHJvY2Vzc29ySW1wbDsKIHN0cnVjdCBUb2tlbjsKIAorc3RydWN0
IFByZXByb2Nlc3NvclNldHRpbmdzIDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgICAgUHJlcHJv
Y2Vzc29yU2V0dGluZ3MoKSA6IG1heE1hY3JvRXhwYW5zaW9uRGVwdGgoMTAwMCkge30KKyAgICBp
bnQgbWF4TWFjcm9FeHBhbnNpb25EZXB0aDsKK307CisKIGNsYXNzIFByZXByb2Nlc3NvciA6IGFu
Z2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6Ci0gICAgUHJlcHJvY2Vzc29yKERpYWdub3N0
aWNzICpkaWFnbm9zdGljcywgRGlyZWN0aXZlSGFuZGxlciAqZGlyZWN0aXZlSGFuZGxlcik7Cisg
ICAgUHJlcHJvY2Vzc29yKERpYWdub3N0aWNzICpkaWFnbm9zdGljcywKKyAgICAgICAgICAgICAg
ICAgRGlyZWN0aXZlSGFuZGxlciAqZGlyZWN0aXZlSGFuZGxlciwKKyAgICAgICAgICAgICAgICAg
Y29uc3QgUHJlcHJvY2Vzc29yU2V0dGluZ3MgJnNldHRpbmdzKTsKICAgICB+UHJlcHJvY2Vzc29y
KCk7CiAKICAgICAvLyBjb3VudDogc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4g
dGhlIHN0cmluZyBhbmQgbGVuZ3RoIGFycmF5cy4KQEAgLTM0LDcgKzQyLDcgQEAgY2xhc3MgUHJl
cHJvY2Vzc29yIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgLy8gRWFjaCBlbGVtZW50IGluIHRo
ZSBsZW5ndGggYXJyYXkgbWF5IGNvbnRhaW4gdGhlIGxlbmd0aCBvZiB0aGUKICAgICAvLyBjb3Jy
ZXNwb25kaW5nIHN0cmluZyBvciBhIHZhbHVlIGxlc3MgdGhhbiAwIHRvIGluZGljYXRlIHRoYXQg
dGhlIHN0cmluZwogICAgIC8vIGlzIG51bGwgdGVybWluYXRlZC4KLSAgICBib29sIGluaXQoc2l6
ZV90IGNvdW50LCBjb25zdCBjaGFyICogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhb
XSk7CisgICAgYm9vbCBpbml0KHNpemVfdCBjb3VudCwgY29uc3QgY2hhciAqY29uc3Qgc3RyaW5n
W10sIGNvbnN0IGludCBsZW5ndGhbXSk7CiAgICAgLy8gQWRkcyBhIHByZS1kZWZpbmVkIG1hY3Jv
LgogICAgIHZvaWQgcHJlZGVmaW5lTWFjcm8oY29uc3QgY2hhciAqbmFtZSwgaW50IHZhbHVlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9Tb3VyY2VMb2NhdGlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9Tb3VyY2VMb2NhdGlvbi5oCmluZGV4IGFmOGE4ZDVkMTljYWIy
NTI3YTJkYjk3N2M2ZGZmMjg0OWNjYjQyNTUuLjUxOTA4YTNiNGJkM2FiNTA1N2Y2ZWQ1MWFmNjcy
ZmZhNjRmZWVkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3IvU291cmNlTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1NvdXJjZUxvY2F0aW9uLmgKQEAgLTEy
LDE2ICsxMiw4IEBAIG5hbWVzcGFjZSBwcAogCiBzdHJ1Y3QgU291cmNlTG9jYXRpb24KIHsKLSAg
ICBTb3VyY2VMb2NhdGlvbigpCi0gICAgICAgIDogZmlsZSgwKSwKLSAgICAgICAgICBsaW5lKDAp
Ci0gICAgewotICAgIH0KLSAgICBTb3VyY2VMb2NhdGlvbihpbnQgZiwgaW50IGwpCi0gICAgICAg
IDogZmlsZShmKSwKLSAgICAgICAgICBsaW5lKGwpCi0gICAgewotICAgIH0KKyAgICBTb3VyY2VM
b2NhdGlvbigpIDogZmlsZSgwKSwgbGluZSgwKSB7fQorICAgIFNvdXJjZUxvY2F0aW9uKGludCBm
LCBpbnQgbCkgOiBmaWxlKGYpLCBsaW5lKGwpIHt9CiAKICAgICBib29sIGVxdWFscyhjb25zdCBT
b3VyY2VMb2NhdGlvbiAmb3RoZXIpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmNwcApp
bmRleCA0MTYxMGE0MDIzZmE4ODcwNjc1ZTJhMmYzZThkNmZkYTQ3OTljMWZiLi5jZTBjZTk0ZjQ5
YThhMTMzMTg0Mjk3ZjdkMmI0ZGU3OGRjY2I3NjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmNwcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmNwcApA
QCAtMTQsMTcgKzE0LDE1IEBAIG5hbWVzcGFjZSBwcAogCiB2b2lkIFRva2VuOjpyZXNldCgpCiB7
Ci0gICAgdHlwZSA9IDA7Ci0gICAgZmxhZ3MgPSAwOworICAgIHR5cGUgICAgID0gMDsKKyAgICBm
bGFncyAgICA9IDA7CiAgICAgbG9jYXRpb24gPSBTb3VyY2VMb2NhdGlvbigpOwogICAgIHRleHQu
Y2xlYXIoKTsKIH0KIAogYm9vbCBUb2tlbjo6ZXF1YWxzKGNvbnN0IFRva2VuICZvdGhlcikgY29u
c3QKIHsKLSAgICByZXR1cm4gKHR5cGUgPT0gb3RoZXIudHlwZSkgJiYKLSAgICAgICAgICAgKGZs
YWdzID09IG90aGVyLmZsYWdzKSAmJgotICAgICAgICAgICAobG9jYXRpb24gPT0gb3RoZXIubG9j
YXRpb24pICYmCisgICAgcmV0dXJuICh0eXBlID09IG90aGVyLnR5cGUpICYmIChmbGFncyA9PSBv
dGhlci5mbGFncykgJiYgKGxvY2F0aW9uID09IG90aGVyLmxvY2F0aW9uKSAmJgogICAgICAgICAg
ICAodGV4dCA9PSBvdGhlci50ZXh0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oCmluZGV4IDcxNjUw
M2IzMjk3YjUyMWE5NTE5NDFiMGJjODAxY2VmMjM5ZjRiYzIuLjVlOTcyY2E4MWIwZDExNmIyZTdk
Y2VmMzBmZTVhMjcxYzg3ZDU1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgKQEAgLTYyLDMzICs2Miwy
MCBAQCBzdHJ1Y3QgVG9rZW4KICAgICAgICAgRVhQQU5TSU9OX0RJU0FCTEVEID0gMSA8PCAyCiAg
ICAgfTsKIAotICAgIFRva2VuKCkKLSAgICAgICAgOiB0eXBlKDApLAotICAgICAgICAgIGZsYWdz
KDApCi0gICAgewotICAgIH0KKyAgICBUb2tlbigpIDogdHlwZSgwKSwgZmxhZ3MoMCkge30KIAog
ICAgIHZvaWQgcmVzZXQoKTsKICAgICBib29sIGVxdWFscyhjb25zdCBUb2tlbiAmb3RoZXIpIGNv
bnN0OwogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHRva2VuIG9u
IGxpbmUuCiAgICAgLy8gSXQgZGlzcmVnYXJkcyBhbnkgbGVhZGluZyB3aGl0ZXNwYWNlLgotICAg
IGJvb2wgYXRTdGFydE9mTGluZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKGZsYWdz
ICYgQVRfU1RBUlRfT0ZfTElORSkgIT0gMDsKLSAgICB9CisgICAgYm9vbCBhdFN0YXJ0T2ZMaW5l
KCkgY29uc3QgeyByZXR1cm4gKGZsYWdzICYgQVRfU1RBUlRfT0ZfTElORSkgIT0gMDsgfQogICAg
IHZvaWQgc2V0QXRTdGFydE9mTGluZShib29sIHN0YXJ0KTsKIAotICAgIGJvb2wgaGFzTGVhZGlu
Z1NwYWNlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAoZmxhZ3MgJiBIQVNfTEVBRElO
R19TUEFDRSkgIT0gMDsKLSAgICB9CisgICAgYm9vbCBoYXNMZWFkaW5nU3BhY2UoKSBjb25zdCB7
IHJldHVybiAoZmxhZ3MgJiBIQVNfTEVBRElOR19TUEFDRSkgIT0gMDsgfQogICAgIHZvaWQgc2V0
SGFzTGVhZGluZ1NwYWNlKGJvb2wgc3BhY2UpOwogCi0gICAgYm9vbCBleHBhbnNpb25EaXNhYmxl
ZCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKGZsYWdzICYgRVhQQU5TSU9OX0RJU0FC
TEVEKSAhPSAwOwotICAgIH0KKyAgICBib29sIGV4cGFuc2lvbkRpc2FibGVkKCkgY29uc3QgeyBy
ZXR1cm4gKGZsYWdzICYgRVhQQU5TSU9OX0RJU0FCTEVEKSAhPSAwOyB9CiAgICAgdm9pZCBzZXRF
eHBhbnNpb25EaXNhYmxlZChib29sIGRpc2FibGUpOwogCiAgICAgLy8gQ29udmVydHMgdGV4dCBp
bnRvIG51bWVyaWMgdmFsdWUgZm9yIENPTlNUX0lOVCBhbmQgQ09OU1RfRkxPQVQgdG9rZW4uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vz
c29yL1Rva2VuaXplci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9Ub2tlbml6ZXIuaAppbmRleCA2ZGZiMTljNjY5MjFlMzM2MGM1OGRjODk5YjZh
ZmE1YWRlYTVmMGJlLi5jZTAzMGExNWMyNDM5ODcyYWI5YzQ5NGNkYWYyOTE2YmQ4NDU5NGRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vz
c29yL1Rva2VuaXplci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvVG9rZW5pemVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgVG9rZW5p
emVyIDogcHVibGljIExleGVyCiAgICAgVG9rZW5pemVyKERpYWdub3N0aWNzICpkaWFnbm9zdGlj
cyk7CiAgICAgflRva2VuaXplcigpOwogCi0gICAgYm9vbCBpbml0KHNpemVfdCBjb3VudCwgY29u
c3QgY2hhciAqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10pOworICAgIGJvb2wg
aW5pdChzaXplX3QgY291bnQsIGNvbnN0IGNoYXIgKmNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQg
bGVuZ3RoW10pOwogCiAgICAgdm9pZCBzZXRGaWxlTnVtYmVyKGludCBmaWxlKTsKICAgICB2b2lk
IHNldExpbmVOdW1iZXIoaW50IGxpbmUpOwpAQCAtNDgsOSArNDgsOSBAQCBjbGFzcyBUb2tlbml6
ZXIgOiBwdWJsaWMgTGV4ZXIKICAgICBib29sIGluaXRTY2FubmVyKCk7CiAgICAgdm9pZCBkZXN0
cm95U2Nhbm5lcigpOwogCi0gICAgdm9pZCAqbUhhbmRsZTsgIC8vIFNjYW5uZXIgaGFuZGxlLgot
ICAgIENvbnRleHQgbUNvbnRleHQ7ICAvLyBTY2FubmVyIGV4dHJhLgotICAgIHNpemVfdCBtTWF4
VG9rZW5TaXplOyAvLyBNYXhpbXVtIHRva2VuIHNpemUKKyAgICB2b2lkICptSGFuZGxlOyAgICAg
ICAgIC8vIFNjYW5uZXIgaGFuZGxlLgorICAgIENvbnRleHQgbUNvbnRleHQ7ICAgICAgLy8gU2Nh
bm5lciBleHRyYS4KKyAgICBzaXplX3QgbU1heFRva2VuU2l6ZTsgIC8vIE1heGltdW0gdG9rZW4g
c2l6ZQogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHBwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL251bWVyaWNfbGV4LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL251bWVyaWNfbGV4
LmgKaW5kZXggYjMyZTQyMjUzZjJkMmM0ZDJmMThmNWJjZDg1ZTlkYWEyYWVkZTY0NS4uNmVhNzc5
YWI4ZjZiNzkwODQ4YTQxZjFhZWY3YzNhMGNmNDNhZWYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9udW1lcmljX2xleC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvbnVt
ZXJpY19sZXguaApAQCAtOSwxNSArOSwxNSBAQAogI2lmbmRlZiBDT01QSUxFUl9QUkVQUk9DRVNT
T1JfTlVNRVJJQ0xFWF9IXwogI2RlZmluZSBDT01QSUxFUl9QUkVQUk9DRVNTT1JfTlVNRVJJQ0xF
WF9IXwogCisjaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8c3N0cmVhbT4KIAotbmFtZXNwYWNl
IHBwIHsKK25hbWVzcGFjZSBwcAorewogCiBpbmxpbmUgc3RkOjppb3M6OmZtdGZsYWdzIG51bWVy
aWNfYmFzZV9pbnQoY29uc3Qgc3RkOjpzdHJpbmcgJnN0cikKIHsKLSAgICBpZiAoKHN0ci5zaXpl
KCkgPj0gMikgJiYKLSAgICAgICAgKHN0clswXSA9PSAnMCcpICYmCi0gICAgICAgIChzdHJbMV0g
PT0gJ3gnIHx8IHN0clsxXSA9PSAnWCcpKQorICAgIGlmICgoc3RyLnNpemUoKSA+PSAyKSAmJiAo
c3RyWzBdID09ICcwJykgJiYgKHN0clsxXSA9PSAneCcgfHwgc3RyWzFdID09ICdYJykpCiAgICAg
ewogICAgICAgICByZXR1cm4gc3RkOjppb3M6OmhleDsKICAgICB9CkBAIC0zMyw3ICszMyw3IEBA
IGlubGluZSBzdGQ6Omlvczo6Zm10ZmxhZ3MgbnVtZXJpY19iYXNlX2ludChjb25zdCBzdGQ6OnN0
cmluZyAmc3RyKQogLy8gb2YgdGhlIGNvcnJlY3QgZm9ybS4gVGhleSBjYW4gb25seSBmYWlsIGlm
IHRoZSBwYXJzZWQgdmFsdWUgaXMgdG9vIGJpZywKIC8vIGluIHdoaWNoIGNhc2UgZmFsc2UgaXMg
cmV0dXJuZWQuCiAKLXRlbXBsYXRlPHR5cGVuYW1lIEludFR5cGU+Cit0ZW1wbGF0ZSA8dHlwZW5h
bWUgSW50VHlwZT4KIGJvb2wgbnVtZXJpY19sZXhfaW50KGNvbnN0IHN0ZDo6c3RyaW5nICZzdHIs
IEludFR5cGUgKnZhbHVlKQogewogICAgIHN0ZDo6aXN0cmluZ3N0cmVhbSBzdHJlYW0oc3RyKTsK
QEAgLTQ1LDcgKzQ1LDcgQEAgYm9vbCBudW1lcmljX2xleF9pbnQoY29uc3Qgc3RkOjpzdHJpbmcg
JnN0ciwgSW50VHlwZSAqdmFsdWUpCiAgICAgcmV0dXJuICFzdHJlYW0uZmFpbCgpOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBGbG9hdFR5cGU+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgRmxvYXRUeXBl
PgogYm9vbCBudW1lcmljX2xleF9mbG9hdChjb25zdCBzdGQ6OnN0cmluZyAmc3RyLCBGbG9hdFR5
cGUgKnZhbHVlKQogewogLy8gT24gNjQtYml0IEludGVsIEFuZHJvaWQsIGlzdHJpbmdzdHJlYW0g
aXMgYnJva2VuLiAgVW50aWwgdGhpcyBpcyBmaXhlZCBpbgpAQCAtNjMsMTAgKzYzLDEwIEBAIGJv
b2wgbnVtZXJpY19sZXhfZmxvYXQoY29uc3Qgc3RkOjpzdHJpbmcgJnN0ciwgRmxvYXRUeXBlICp2
YWx1ZSkKICAgICBzdHJlYW0uaW1idWUoc3RkOjpsb2NhbGU6OmNsYXNzaWMoKSk7CiAKICAgICBz
dHJlYW0gPj4gKCp2YWx1ZSk7Ci0gICAgcmV0dXJuICFzdHJlYW0uZmFpbCgpOworICAgIHJldHVy
biAhc3RyZWFtLmZhaWwoKSAmJiBzdGQ6OmlzZmluaXRlKCp2YWx1ZSk7CiAjZW5kaWYKIH0KIAot
fSAvLyBuYW1lc3BhY2UgcHAuCit9ICAvLyBuYW1lc3BhY2UgcHAuCiAKLSNlbmRpZiAvLyBDT01Q
SUxFUl9QUkVQUk9DRVNTT1JfTlVNRVJJQ0xFWF9IXworI2VuZGlmICAvLyBDT01QSUxFUl9QUkVQ
Uk9DRVNTT1JfTlVNRVJJQ0xFWF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvNjRiaXQtbGV4ZXItc2FmZXR5LnBhdGNoIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvNjRiaXQtbGV4ZXIt
c2FmZXR5LnBhdGNoCmluZGV4IGRiM2IyZmFiNTYwZGUzMzljODk0MjU2ZTY2ZTM1OGUzNzAyMmE2
YzMuLmU3ZTQwMzc3MWE5OTZmODc1MDMyYTc0ZWM5NTcyOGU0NDcwYzE2YTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yLzY0Yml0LWxl
eGVyLXNhZmV0eS5wYXRjaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci82NGJpdC1sZXhlci1zYWZldHkucGF0Y2gKQEAgLTEsNiArMSwxMyBAQAot
LS0tIGEvc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcAotKysrIGIvc3JjL2NvbXBpbGVyL2ds
c2xhbmdfbGV4LmNwcAotQEAgLTY4LDYgKzY4LDcgQEAgdHlwZWRlZiBpbnQxNl90IGZsZXhfaW50
MTZfdDsKK2RpZmYgLS1naXQgYS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX2xleC5j
cHAgYi9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX2xleC5jcHAKK2luZGV4IDFiYTYz
ZGYuLjJhMjA2YWIgMTAwNjQ0CistLS0gYS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5n
X2xleC5jcHAKKysrKyBiL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdfbGV4LmNwcAor
QEAgLTEsNCArMSwzIEBACistI2xpbmUgMTcgIi4vZ2xzbGFuZy5sIgorIC8vCisgLy8gQ29weXJp
Z2h0IChjKSAyMDEyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCitAQCAtMTQ5LDYgKzE0OCw3IEBAIHR5cGVkZWYg
aW50MTZfdCBmbGV4X2ludDE2X3Q7CiAgdHlwZWRlZiB1aW50MTZfdCBmbGV4X3VpbnQxNl90Owog
IHR5cGVkZWYgaW50MzJfdCBmbGV4X2ludDMyX3Q7CiAgdHlwZWRlZiB1aW50MzJfdCBmbGV4X3Vp
bnQzMl90OwpAQCAtOCwxMCArMTUsMTAgQEAKICAjZWxzZQogIHR5cGVkZWYgc2lnbmVkIGNoYXIg
ZmxleF9pbnQ4X3Q7CiAgdHlwZWRlZiBzaG9ydCBpbnQgZmxleF9pbnQxNl90OwotQEAgLTE5MSw2
ICsxOTIsMTEgQEAgdHlwZWRlZiB2b2lkKiB5eXNjYW5fdDsKLSB0eXBlZGVmIHN0cnVjdCB5eV9i
dWZmZXJfc3RhdGUgKllZX0JVRkZFUl9TVEFURTsKLSAjZW5kaWYKLQorQEAgLTMzNSw2ICszMzUs
MTEgQEAgdHlwZWRlZiBzaXplX3QgeXlfc2l6ZV90OworIAorIAorIAogKyNpZm5kZWYgWVlfVFlQ
RURFRl9ZWV9TSVpFX1QKICsjZGVmaW5lIFlZX1RZUEVERUZfWVlfU0laRV9UCiArdHlwZWRlZiBz
aXplX3QgeXlfc2l6ZV90OwpAQCAtMjAsMjEgKzI3LDk2IEBACiAgI2RlZmluZSBFT0JfQUNUX0NP
TlRJTlVFX1NDQU4gMAogICNkZWZpbmUgRU9CX0FDVF9FTkRfT0ZfRklMRSAxCiAgI2RlZmluZSBF
T0JfQUNUX0xBU1RfTUFUQ0ggMgotQEAgLTIwNCw3ICsyMTAsNyBAQCB0eXBlZGVmIHN0cnVjdCB5
eV9idWZmZXJfc3RhdGUgKllZX0JVRkZFUl9TVEFURTsKK0BAIC0zNTEsOCArMzU2LDggQEAgdHlw
ZWRlZiBzaXplX3QgeXlfc2l6ZV90OwogICAgICAgKi8KICAgICAgI2RlZmluZSAgWVlfTEVTU19M
SU5FTk8obikgXAogICAgICAgICAgICAgIGRvIHsgXAogLSAgICAgICAgICAgICAgICBpbnQgeXls
O1wKKy0gICAgICAgICAgICAgICAgZm9yICggeXlsID0gbjsgeXlsIDwgeXlsZW5nOyArK3l5bCAp
XAogKyAgICAgICAgICAgICAgICB5eV9zaXplX3QgeXlsO1wKLSAgICAgICAgICAgICAgICAgZm9y
ICggeXlsID0gbjsgeXlsIDwgeXlsZW5nOyArK3l5bCApXAorKyAgICAgICAgICAgICAgICBmb3Ig
KCB5eWwgPSBuOyB5eWwgPCBzdGF0aWNfY2FzdDx5eV9zaXRlX3Q+KHl5bGVuZyk7ICsreXlsIClc
CiAgICAgICAgICAgICAgICAgICAgICBpZiAoIHl5dGV4dFt5eWxdID09ICdcbicgKVwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAtLXl5bGluZW5vO1wKLUBAIC0zNzgsNyArMzc5LDcgQEAgc3Rh
dGljIHZvaWQgeXlfZmF0YWxfZXJyb3IgKHl5Y29uc3QgY2hhciBtc2dbXSAseXlzY2FuX3QgeXlz
Y2FubmVyICk7Ci0gICovCi0gI2RlZmluZSBZWV9ET19CRUZPUkVfQUNUSU9OIFwKLSAJeXlnLT55
eXRleHRfcHRyID0geXlfYnA7IFwKLS0JeXlsZW5nID0gKHNpemVfdCkgKHl5X2NwIC0geXlfYnAp
OyBcCi0rCXl5bGVuZyA9ICh5eV9zaXplX3QpICh5eV9jcCAtIHl5X2JwKTsgXAotIAl5eWctPnl5
X2hvbGRfY2hhciA9ICp5eV9jcDsgXAotIAkqeXlfY3AgPSAnXDAnOyBcCi0gCXl5Zy0+eXlfY19i
dWZfcCA9IHl5X2NwOworICAgICAgICAgICAgIH13aGlsZSgwKQorQEAgLTE2OTIsNyArMTY5Nyw3
IEBAIHl5X2ZpbmRfYWN0aW9uOgorIAkJaWYgKCB5eV9hY3QgIT0gWVlfRU5EX09GX0JVRkZFUiAm
JiB5eV9ydWxlX2Nhbl9tYXRjaF9lb2xbeXlfYWN0XSApCisgCQkJeworIAkJCXl5X3NpemVfdCB5
eWw7CistCQkJZm9yICggeXlsID0gMDsgeXlsIDwgeXlsZW5nOyArK3l5bCApCisrCQkJZm9yICgg
eXlsID0gMDsgeXlsIDwgc3RhdGljX2Nhc3Q8eXlfc2l6ZV90Pih5eWxlbmcpOyArK3l5bCApCisg
CQkJCWlmICggeXl0ZXh0W3l5bF0gPT0gJ1xuJyApCisgCQkJCQkgICAKKyAgICAgZG97IHl5bGlu
ZW5vKys7CitAQCAtMjY1NSw3ICsyNjYwLDcgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZm
ZXIgKHl5c2Nhbl90IHl5c2Nhbm5lcikKKyAJZWxzZQorIAkJeworIAkJCWludCBudW1fdG9fcmVh
ZCA9CistCQkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtIG51bWJlcl90
b19tb3ZlIC0gMTsKKysJCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2J1Zl9zaXplIC0g
c3RhdGljX2Nhc3Q8aW50PihudW1iZXJfdG9fbW92ZSkgLSAxOworIAorIAkJd2hpbGUgKCBudW1f
dG9fcmVhZCA8PSAwICkKKyAJCQl7IC8qIE5vdCBlbm91Z2ggcm9vbSBpbiB0aGUgYnVmZmVyIC0g
Z3JvdyBpdC4gKi8KK0BAIC0yNjkwLDcgKzI2OTUsNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0
X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2FubmVyKQorIAkJCXl5Zy0+eXlfY19idWZfcCA9ICZiLT55
eV9jaF9idWZbeXlfY19idWZfcF9vZmZzZXRdOworIAorIAkJCW51bV90b19yZWFkID0gWVlfQ1VS
UkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtCistCQkJCQkJbnVtYmVyX3RvX21vdmUg
LSAxOworKwkJCQkJCXN0YXRpY19jYXN0PGludD4obnVtYmVyX3RvX21vdmUpIC0gMTsKKyAKKyAJ
CQl9CisgCitAQCAtMjY5OCw4ICsyNzAzLDEwIEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVm
ZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCisgCQkJbnVtX3RvX3JlYWQgPSBZWV9SRUFEX0JVRl9T
SVpFOworIAorIAkJLyogUmVhZCBpbiBtb3JlIGRhdGEuICovCisrICAgICAgICBzaXplX3QgcmVz
dWx0ID0gMDsKKyAJCVlZX0lOUFVUKCAoJllZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfY2hf
YnVmW251bWJlcl90b19tb3ZlXSksCistCQkJeXlnLT55eV9uX2NoYXJzLCBudW1fdG9fcmVhZCAp
OworKyAgICAgICAgICAgIHJlc3VsdCwgbnVtX3RvX3JlYWQgKTsKKysgICAgICAgIHl5Zy0+eXlf
bl9jaGFycyA9IHN0YXRpY19jYXN0PGludD4ocmVzdWx0KTsKKyAKKyAJCVlZX0NVUlJFTlRfQlVG
RkVSX0xWQUxVRS0+eXlfbl9jaGFycyA9IHl5Zy0+eXlfbl9jaGFyczsKKyAJCX0KK0BAIC0yNzI1
LDEzICsyNzMyLDEzIEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5
eXNjYW5uZXIpCisgCisgCWlmICgoaW50KSAoeXlnLT55eV9uX2NoYXJzICsgbnVtYmVyX3RvX21v
dmUpID4gWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSkgeworIAkJLyogRXh0
ZW5kIHRoZSBhcnJheSBieSA1MCUsIHBsdXMgdGhlIG51bWJlciB3ZSByZWFsbHkgbmVlZC4gKi8K
Ky0JCWludCBuZXdfc2l6ZSA9IHl5Zy0+eXlfbl9jaGFycyArIG51bWJlcl90b19tb3ZlICsgKHl5
Zy0+eXlfbl9jaGFycyA+PiAxKTsKKysJCWludCBuZXdfc2l6ZSA9IHl5Zy0+eXlfbl9jaGFycyAr
IHN0YXRpY19jYXN0PGludD4obnVtYmVyX3RvX21vdmUpICsgKHl5Zy0+eXlfbl9jaGFycyA+PiAx
KTsKKyAJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfY2hfYnVmID0gKGNoYXIgKikgeXly
ZWFsbG9jKCh2b2lkICopIFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfY2hfYnVmLG5ld19z
aXplICx5eXNjYW5uZXIgKTsKKyAJCWlmICggISBZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5
X2NoX2J1ZiApCisgCQkJWVlfRkFUQUxfRVJST1IoICJvdXQgb2YgZHluYW1pYyBtZW1vcnkgaW4g
eXlfZ2V0X25leHRfYnVmZmVyKCkiICk7CisgCX0KKyAKKy0JeXlnLT55eV9uX2NoYXJzICs9IG51
bWJlcl90b19tb3ZlOworKwl5eWctPnl5X25fY2hhcnMgKz0gc3RhdGljX2Nhc3Q8aW50PihudW1i
ZXJfdG9fbW92ZSk7CisgCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfY2hfYnVmW3l5Zy0+
eXlfbl9jaGFyc10gPSBZWV9FTkRfT0ZfQlVGRkVSX0NIQVI7CisgCVlZX0NVUlJFTlRfQlVGRkVS
X0xWQUxVRS0+eXlfY2hfYnVmW3l5Zy0+eXlfbl9jaGFycyArIDFdID0gWVlfRU5EX09GX0JVRkZF
Ul9DSEFSOworIAorQEAgLTMxNTgsNyArMzE2NSw3IEBAIHN0YXRpYyB2b2lkIHl5ZW5zdXJlX2J1
ZmZlcl9zdGFjayAoeXlzY2FuX3QgeXlzY2FubmVyKQorIAkJLyogSW5jcmVhc2UgdGhlIGJ1ZmZl
ciB0byBwcmVwYXJlIGZvciBhIHBvc3NpYmxlIHB1c2guICovCisgCQl5eV9zaXplX3QgZ3Jvd19z
aXplID0gOCAvKiBhcmJpdHJhcnkgZ3JvdyBzaXplICovOworIAorLQkJbnVtX3RvX2FsbG9jID0g
eXlnLT55eV9idWZmZXJfc3RhY2tfbWF4ICsgZ3Jvd19zaXplOworKwkJbnVtX3RvX2FsbG9jID0g
c3RhdGljX2Nhc3Q8aW50Pih5eWctPnl5X2J1ZmZlcl9zdGFja19tYXggKyBncm93X3NpemUpOwor
IAkJeXlnLT55eV9idWZmZXJfc3RhY2sgPSAoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSoqKXl5cmVh
bGxvYworIAkJCQkJCQkJKHl5Zy0+eXlfYnVmZmVyX3N0YWNrLAorIAkJCQkJCQkJbnVtX3RvX2Fs
bG9jICogc2l6ZW9mKHN0cnVjdCB5eV9idWZmZXJfc3RhdGUqKQorQEAgLTMxOTYsNyArMzIwMyw3
IEBAIFlZX0JVRkZFUl9TVEFURSB5eV9zY2FuX2J1ZmZlciAgKGNoYXIgKiBiYXNlLCB5eV9zaXpl
X3QgIHNpemUgLCB5eXNjYW5fdCB5eXNjYW5uCisgCWlmICggISBiICkKKyAJCVlZX0ZBVEFMX0VS
Uk9SKCAib3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIHl5X3NjYW5fYnVmZmVyKCkiICk7CisgCist
CWItPnl5X2J1Zl9zaXplID0gc2l6ZSAtIDI7CS8qICItIDIiIHRvIHRha2UgY2FyZSBvZiBFT0In
cyAqLworKwliLT55eV9idWZfc2l6ZSA9IHN0YXRpY19jYXN0PGludD4oc2l6ZSkgLSAyOwkvKiAi
LSAyIiB0byB0YWtlIGNhcmUgb2YgRU9CJ3MgKi8KKyAJYi0+eXlfYnVmX3BvcyA9IGItPnl5X2No
X2J1ZiA9IGJhc2U7CisgCWItPnl5X2lzX291cl9idWZmZXIgPSAwOworIAliLT55eV9pbnB1dF9m
aWxlID0gTlVMTDsKK0BAIC0zMjUxLDcgKzMyNTgsNyBAQCBZWV9CVUZGRVJfU1RBVEUgeXlfc2Nh
bl9ieXRlcyAgKHl5Y29uc3QgY2hhciAqIHl5Ynl0ZXMsIGludCAgX3l5Ynl0ZXNfbGVuICwgeXlz
YworIAlpZiAoICEgYnVmICkKKyAJCVlZX0ZBVEFMX0VSUk9SKCAib3V0IG9mIGR5bmFtaWMgbWVt
b3J5IGluIHl5X3NjYW5fYnl0ZXMoKSIgKTsKKyAKKy0JZm9yICggaSA9IDA7IGkgPCBfeXlieXRl
c19sZW47ICsraSApCisrCWZvciAoIGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8eXlfc2l6ZV90Pihf
eXlieXRlc19sZW4pOyArK2kgKQorIAkJYnVmW2ldID0geXlieXRlc1tpXTsKKyAKKyAJYnVmW195
eWJ5dGVzX2xlbl0gPSBidWZbX3l5Ynl0ZXNfbGVuKzFdID0gWVlfRU5EX09GX0JVRkZFUl9DSEFS
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvQVNUTWV0YWRhdGFITFNMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0FTVE1ldGFkYXRhSExTTC5jcHAKaW5kZXggY2JlYWZmNWFlZDc0
MjlmMjA5Nzc5NTk4NDc2MTJjMjgyYmFiZTVhYS4uODBhOGFiNjEyYWFlMDM4ODVhNTRmOWQwNWNk
M2VhZTNkZTQ4ZDU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvQVNUTWV0YWRhdGFITFNMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BU1RNZXRhZGF0YUhMU0wuY3BwCkBA
IC0xMSw2ICsxMSw5IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9DYWxsREFHLmgi
CiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgogCituYW1lc3Bh
Y2Ugc2gKK3sKKwogbmFtZXNwYWNlCiB7CiAKQEAgLTI5LDYgKzMyLDE5IEBAIGNsYXNzIFB1bGxH
cmFkaWVudCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgICAgICAgbURhZyhkYWcpCiAg
ICAgewogICAgICAgICBBU1NFUlQoaW5kZXggPCBtZXRhZGF0YUxpc3QtPnNpemUoKSk7CisKKyAg
ICAgICAgLy8gRVNTTCAxMDAgYnVpbHRpbiBncmFkaWVudCBmdW5jdGlvbnMKKyAgICAgICAgbUdy
YWRpZW50QnVpbHRpbkZ1bmN0aW9ucy5pbnNlcnQoInRleHR1cmUyRCIpOworICAgICAgICBtR3Jh
ZGllbnRCdWlsdGluRnVuY3Rpb25zLmluc2VydCgidGV4dHVyZTJEUHJvaiIpOworICAgICAgICBt
R3JhZGllbnRCdWlsdGluRnVuY3Rpb25zLmluc2VydCgidGV4dHVyZUN1YmUiKTsKKworICAgICAg
ICAvLyBFU1NMIDMwMCBidWlsdGluIGdyYWRpZW50IGZ1bmN0aW9ucworICAgICAgICBtR3JhZGll
bnRCdWlsdGluRnVuY3Rpb25zLmluc2VydCgidGV4dHVyZSIpOworICAgICAgICBtR3JhZGllbnRC
dWlsdGluRnVuY3Rpb25zLmluc2VydCgidGV4dHVyZVByb2oiKTsKKyAgICAgICAgbUdyYWRpZW50
QnVpbHRpbkZ1bmN0aW9ucy5pbnNlcnQoInRleHR1cmVPZmZzZXQiKTsKKyAgICAgICAgbUdyYWRp
ZW50QnVpbHRpbkZ1bmN0aW9ucy5pbnNlcnQoInRleHR1cmVQcm9qT2Zmc2V0Iik7CisKKyAgICAg
ICAgLy8gRVNTTCAzMTAgZG9lc24ndCBhZGQgYnVpbHRpbiBncmFkaWVudCBmdW5jdGlvbnMKICAg
ICB9CiAKICAgICB2b2lkIHRyYXZlcnNlKFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUp
CkBAIC01OSw3ICs3NSw3IEBAIGNsYXNzIFB1bGxHcmFkaWVudCA6IHB1YmxpYyBUSW50ZXJtVHJh
dmVyc2VyCiAgICAgICAgICAgICBBU1NFUlQobVBhcmVudHMuYmFjaygpID09IG5vZGUpOwogICAg
ICAgICAgICAgbVBhcmVudHMucG9wX2JhY2soKTsKICAgICAgICAgICAgIC8vIEEgY29udHJvbCBm
bG93J3MgdXNpbmcgYSBncmFkaWVudCBtZWFucyBpdHMgcGFyZW50cyBhcmUgdG9vLgotICAgICAg
ICAgICAgaWYgKG1NZXRhZGF0YS0+bUNvbnRyb2xGbG93c0NvbnRhaW5pbmdHcmFkaWVudC5jb3Vu
dChub2RlKT4gMCAmJiAhbVBhcmVudHMuZW1wdHkoKSkKKyAgICAgICAgICAgIGlmIChtTWV0YWRh
dGEtPm1Db250cm9sRmxvd3NDb250YWluaW5nR3JhZGllbnQuY291bnQobm9kZSkgPiAwICYmICFt
UGFyZW50cy5lbXB0eSgpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG1NZXRhZGF0
YS0+bUNvbnRyb2xGbG93c0NvbnRhaW5pbmdHcmFkaWVudC5pbnNlcnQobVBhcmVudHMuYmFjaygp
KTsKICAgICAgICAgICAgIH0KQEAgLTg0LDExICsxMDAsMTIgQEAgY2xhc3MgUHVsbEdyYWRpZW50
IDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNo
IChub2RlLT5nZXRPcCgpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEVPcERG
ZHg6Ci0gICAgICAgICAgICAgIGNhc2UgRU9wREZkeToKLSAgICAgICAgICAgICAgICBvbkdyYWRp
ZW50KCk7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBFT3BERmR4OgorICAgICAgICAgICAgICAgIGNhc2UgRU9wREZk
eToKKyAgICAgICAgICAgICAgICBjYXNlIEVPcEZ3aWR0aDoKKyAgICAgICAgICAgICAgICAgICAg
b25HcmFkaWVudCgpOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTk5LDI5ICsxMTYsMjIg
QEAgY2xhc3MgUHVsbEdyYWRpZW50IDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICB7CiAg
ICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKICAgICAgICAgewotICAgICAgICAgICAgaWYg
KG5vZGUtPmdldE9wKCkgPT0gRU9wRnVuY3Rpb25DYWxsKQorICAgICAgICAgICAgaWYgKG5vZGUt
PmdldE9wKCkgPT0gRU9wQ2FsbEZ1bmN0aW9uSW5BU1QpCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmlzVXNlckRlZmluZWQoKSkKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBjYWxsZWVJbmRleCA9IG1EYWcuZmluZEluZGV4KG5v
ZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KGNhbGxlZUluZGV4ICE9IENhbGxEQUc6OkludmFsaWRJbmRleCAmJiBjYWxsZWVJbmRleCA8IG1J
bmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUobUlu
ZGV4KTsKKyAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGVlSW5kZXggPSBtRGFnLmZpbmRJbmRl
eChub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKSk7CisgICAgICAgICAgICAgICAgQVNTRVJU
KGNhbGxlZUluZGV4ICE9IENhbGxEQUc6OkludmFsaWRJbmRleCAmJiBjYWxsZWVJbmRleCA8IG1J
bmRleCk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKCgqbU1ldGFkYXRhTGlzdClbY2FsbGVl
SW5kZXhdLm1Vc2VzR3JhZGllbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9uR3JhZGll
bnQoKTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICgoKm1NZXRh
ZGF0YUxpc3QpW2NhbGxlZUluZGV4XS5tVXNlc0dyYWRpZW50KQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgb25HcmFkaWVudCgpOwogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChu
b2RlLT5nZXRPcCgpID09IEVPcENhbGxCdWlsdEluRnVuY3Rpb24pCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgaWYgKG1HcmFkaWVudEJ1aWx0aW5GdW5jdGlvbnMuZmluZChub2RlLT5n
ZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZSgpKSAhPQorICAgICAgICAgICAgICAgICAg
ICBtR3JhZGllbnRCdWlsdGluRnVuY3Rpb25zLmVuZCgpKQogICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgVFN0cmluZyBuYW1lID0KLSAgICAgICAgICAgICAgICAgICAgICAg
IFRGdW5jdGlvbjo6dW5tYW5nbGVOYW1lKG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5n
ZXROYW1lKCkpOwotCi0gICAgICAgICAgICAgICAgICAgIGlmIChuYW1lID09ICJ0ZXh0dXJlMkQi
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID09ICJ0ZXh0dXJlMkRQcm9qIiB8fAot
ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9PSAidGV4dHVyZUN1YmUiKQotICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvbkdyYWRpZW50KCk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgb25HcmFkaWVudCgpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTM3LDcgKzE0Nywx
MCBAQCBjbGFzcyBQdWxsR3JhZGllbnQgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogCiAgICAg
Ly8gQ29udGFpbnMgYSBzdGFjayBvZiB0aGUgY29udHJvbCBmbG93IG5vZGVzIHRoYXQgYXJlIHBh
cmVudHMgb2YgdGhlIG5vZGUgYmVpbmcKICAgICAvLyBjdXJyZW50bHkgdmlzaXRlZC4gSXQgaXMg
dXNlZCB0byBtYXJrIGNvbnRyb2wgZmxvd3MgdXNpbmcgYSBncmFkaWVudC4KLSAgICBzdGQ6OnZl
Y3RvcjxUSW50ZXJtTm9kZSo+IG1QYXJlbnRzOworICAgIHN0ZDo6dmVjdG9yPFRJbnRlcm1Ob2Rl
ICo+IG1QYXJlbnRzOworCisgICAgLy8gQSBsaXN0IG9mIGJ1aWx0aW4gZnVuY3Rpb25zIHRoYXQg
dXNlIGdyYWRpZW50cworICAgIHN0ZDo6c2V0PFRTdHJpbmc+IG1HcmFkaWVudEJ1aWx0aW5GdW5j
dGlvbnM7CiB9OwogCiAvLyBUcmF2ZXJzZXMgdGhlIEFTVCBvZiBhIGZ1bmN0aW9uIGRlZmluaXRp
b24gdG8gY29tcHV0ZSB0aGUgdGhlIGRpc2NvbnRpbnVvdXMgbG9vcHMKQEAgLTIyMyw3ICsyMzYs
NyBAQCBjbGFzcyBQdWxsQ29tcHV0ZURpc2NvbnRpbnVvdXNBbmRHcmFkaWVudExvb3BzIDogcHVi
bGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoIChub2Rl
LT5nZXRGbG93T3AoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBFT3BCcmVh
azoKKyAgICAgICAgICAgICAgICBjYXNlIEVPcEJyZWFrOgogICAgICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKCFtTG9vcHNBbmRTd2l0Y2hlcy5lbXB0eSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgVEludGVybUxvb3AgKmxvb3AgPSBtTG9vcHNBbmRTd2l0Y2hlcy5i
YWNrKCktPmdldEFzTG9vcE5vZGUoKTsKQEAgLTIzMywxMSArMjQ2LDExIEBAIGNsYXNzIFB1bGxD
b21wdXRlRGlzY29udGludW91c0FuZEdyYWRpZW50TG9vcHMgOiBwdWJsaWMgVEludGVybVRyYXZl
cnNlcgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVPcENvbnRpbnVlOgorICAgICAgICAg
ICAgICAgIGNhc2UgRU9wQ29udGludWU6CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoIW1Mb29wc0FuZFN3aXRjaGVzLmVtcHR5KCkpOwogICAgICAgICAgICAg
ICAgICAgICBUSW50ZXJtTG9vcCAqbG9vcCA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAg
IHNpemVfdCBpID0gbUxvb3BzQW5kU3dpdGNoZXMuc2l6ZSgpOworICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaSAgICAgICAgICA9IG1Mb29wc0FuZFN3aXRjaGVzLnNpemUoKTsKICAgICAgICAg
ICAgICAgICAgICAgd2hpbGUgKGxvb3AgPT0gbnVsbHB0ciAmJiBpID4gMCkKICAgICAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgLS1pOwpAQCAtMjQ3LDIzICsyNjAs
MjMgQEAgY2xhc3MgUHVsbENvbXB1dGVEaXNjb250aW51b3VzQW5kR3JhZGllbnRMb29wcyA6IHB1
YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgICAgICAgICAgICAgICAgIG1NZXRhZGF0YS0+bURp
c2NvbnRpbnVvdXNMb29wcy5pbnNlcnQobG9vcCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVPcEtpbGw6Ci0gICAgICAgICAg
ICAgIGNhc2UgRU9wUmV0dXJuOgotICAgICAgICAgICAgICAgIC8vIEEgcmV0dXJuIG9yIGRpc2Nh
cmQganVtcHMgb3V0IG9mIGFsbCB0aGUgZW5jbG9zaW5nIGxvb3BzCi0gICAgICAgICAgICAgICAg
aWYgKCFtTG9vcHNBbmRTd2l0Y2hlcy5lbXB0eSgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgZm9yIChUSW50ZXJtTm9kZSAqaW50ZXJtTm9kZSA6IG1Mb29wc0FuZFN3
aXRjaGVzKQorICAgICAgICAgICAgICAgIGNhc2UgRU9wS2lsbDoKKyAgICAgICAgICAgICAgICBj
YXNlIEVPcFJldHVybjoKKyAgICAgICAgICAgICAgICAgICAgLy8gQSByZXR1cm4gb3IgZGlzY2Fy
ZCBqdW1wcyBvdXQgb2YgYWxsIHRoZSBlbmNsb3NpbmcgbG9vcHMKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFtTG9vcHNBbmRTd2l0Y2hlcy5lbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTG9vcCAqbG9vcCA9IGludGVybU5vZGUt
PmdldEFzTG9vcE5vZGUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb29wKQorICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yIChUSW50ZXJtTm9kZSAqaW50ZXJtTm9kZSA6IG1Mb29w
c0FuZFN3aXRjaGVzKQogICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1NZXRhZGF0YS0+bURpc2NvbnRpbnVvdXNMb29wcy5pbnNlcnQobG9vcCk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUxvb3AgKmxvb3AgPSBpbnRlcm1O
b2RlLT5nZXRBc0xvb3BOb2RlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxv
b3ApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtTWV0YWRhdGEtPm1EaXNjb250aW51b3VzTG9vcHMuaW5zZXJ0KGxvb3ApOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKQEAgLTI3MiwxOCArMjg1LDE0IEBAIGNsYXNzIFB1bGxDb21wdXRlRGlzY29u
dGludW91c0FuZEdyYWRpZW50TG9vcHMgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogCiAgICAg
Ym9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkg
b3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCAmJiBub2RlLT5n
ZXRPcCgpID09IEVPcEZ1bmN0aW9uQ2FsbCkKKyAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0
ICYmIG5vZGUtPmdldE9wKCkgPT0gRU9wQ2FsbEZ1bmN0aW9uSW5BU1QpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGlmIChub2RlLT5pc1VzZXJEZWZpbmVkKCkpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgc2l6ZV90IGNhbGxlZUluZGV4ID0gbURhZy5maW5kSW5kZXgobm9kZS0+Z2V0
RnVuY3Rpb25TeW1ib2xJbmZvKCkpOwotICAgICAgICAgICAgICAgIEFTU0VSVChjYWxsZWVJbmRl
eCAhPSBDYWxsREFHOjpJbnZhbGlkSW5kZXggJiYgY2FsbGVlSW5kZXggPCBtSW5kZXgpOwotICAg
ICAgICAgICAgICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUobUluZGV4KTsKKyAgICAgICAg
ICAgIHNpemVfdCBjYWxsZWVJbmRleCA9IG1EYWcuZmluZEluZGV4KG5vZGUtPmdldEZ1bmN0aW9u
U3ltYm9sSW5mbygpKTsKKyAgICAgICAgICAgIEFTU0VSVChjYWxsZWVJbmRleCAhPSBDYWxsREFH
OjpJbnZhbGlkSW5kZXggJiYgY2FsbGVlSW5kZXggPCBtSW5kZXgpOwogCi0gICAgICAgICAgICAg
ICAgaWYgKCgqbU1ldGFkYXRhTGlzdClbY2FsbGVlSW5kZXhdLm1IYXNHcmFkaWVudExvb3BJbkNh
bGxHcmFwaCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG9uR3JhZGll
bnRMb29wKCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCgqbU1ldGFkYXRh
TGlzdClbY2FsbGVlSW5kZXhdLm1IYXNHcmFkaWVudExvb3BJbkNhbGxHcmFwaCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBvbkdyYWRpZW50TG9vcCgpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKQEAgLTMxMCw3ICszMTksNyBAQCBjbGFzcyBQdWxsQ29tcHV0ZURpc2NvbnRp
bnVvdXNBbmRHcmFkaWVudExvb3BzIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICBzaXpl
X3QgbUluZGV4OwogICAgIGNvbnN0IENhbGxEQUcgJm1EYWc7CiAKLSAgICBzdGQ6OnZlY3RvcjxU
SW50ZXJtTm9kZSo+IG1Mb29wc0FuZFN3aXRjaGVzOworICAgIHN0ZDo6dmVjdG9yPFRJbnRlcm1O
b2RlICo+IG1Mb29wc0FuZFN3aXRjaGVzOwogICAgIHN0ZDo6dmVjdG9yPFRJbnRlcm1JZkVsc2Ug
Kj4gbUlmczsKIH07CiAKQEAgLTM1NCwxOCArMzYzLDE3IEBAIGNsYXNzIFB1c2hEaXNjb250aW51
b3VzTG9vcHMgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgIHsKICAgICAgICAgc3dpdGNo
IChub2RlLT5nZXRPcCgpKQogICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBFT3BGdW5jdGlvbkNh
bGw6Ci0gICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQgJiYgbm9kZS0+aXNVc2VyRGVm
aW5lZCgpICYmIG1OZXN0ZWREaXNjb250ID4gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBzaXplX3QgY2FsbGVlSW5kZXggPSBtRGFnLmZpbmRJbmRleChub2RlLT5nZXRGdW5jdGlv
blN5bWJvbEluZm8oKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGNhbGxlZUluZGV4ICE9IENh
bGxEQUc6OkludmFsaWRJbmRleCAmJiBjYWxsZWVJbmRleCA8IG1JbmRleCk7Ci0gICAgICAgICAg
ICAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShtSW5kZXgpOworICAgICAgICAgICAgY2Fz
ZSBFT3BDYWxsRnVuY3Rpb25JbkFTVDoKKyAgICAgICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJl
VmlzaXQgJiYgbU5lc3RlZERpc2NvbnQgPiAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGNhbGxlZUluZGV4ID0gbURhZy5maW5kSW5kZXgobm9kZS0+Z2V0
RnVuY3Rpb25TeW1ib2xJbmZvKCkpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2FsbGVl
SW5kZXggIT0gQ2FsbERBRzo6SW52YWxpZEluZGV4ICYmIGNhbGxlZUluZGV4IDwgbUluZGV4KTsK
IAotICAgICAgICAgICAgICAgICgqbU1ldGFkYXRhTGlzdClbY2FsbGVlSW5kZXhdLm1DYWxsZWRJ
bkRpc2NvbnRpbnVvdXNMb29wID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICAgICAgKCptTWV0YWRhdGFMaXN0KVtjYWxsZWVJbmRleF0ubUNhbGxlZEluRGlzY29udGlu
dW91c0xvb3AgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzc4LDcgKzM4Niw2IEBAIGNsYXNz
IFB1c2hEaXNjb250aW51b3VzTG9vcHMgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogCiAgICAg
aW50IG1OZXN0ZWREaXNjb250OwogfTsKLQogfQogCiBib29sIEFTVE1ldGFkYXRhSExTTDo6aGFz
R3JhZGllbnRJbkNhbGxHcmFwaChUSW50ZXJtTG9vcCAqbm9kZSkKQEAgLTQ1MCwzICs0NTcsNSBA
QCBNZXRhZGF0YUxpc3QgQ3JlYXRlQVNUTWV0YWRhdGFITFNMKFRJbnRlcm1Ob2RlICpyb290LCBj
b25zdCBDYWxsREFHICZjYWxsRGFnKQogCiAgICAgcmV0dXJuIG1ldGFkYXRhTGlzdDsKIH0KKwor
fSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9BU1RNZXRhZGF0YUhMU0wuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0FTVE1ldGFkYXRhSExTTC5oCmluZGV4
IDQ3OTViYzM4Nzc5MGIxYTMxODkzNzQxMjhhYWVmODFkMzE5MWI2YzYuLjU1MGE1MjJiODY0NzFl
NjM4NTJiYmNiYjhiYzBiZGQ0ODc1NjViODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0FTVE1ldGFkYXRhSExTTC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0FTVE1ldGFkYXRh
SExTTC5oCkBAIC0xMiw2ICsxMiw5IEBACiAjaW5jbHVkZSA8c2V0PgogI2luY2x1ZGUgPHZlY3Rv
cj4KIAorbmFtZXNwYWNlIHNoCit7CisKIGNsYXNzIENhbGxEQUc7CiBjbGFzcyBUSW50ZXJtTm9k
ZTsKIGNsYXNzIFRJbnRlcm1JZkVsc2U7CkBAIC0zNywxMyArNDAsMTMgQEAgc3RydWN0IEFTVE1l
dGFkYXRhSExTTAogCiAgICAgLy8gRXZlbiBpZiB1c2VzR3JhZGllbnQgaXMgdHJ1ZSwgc29tZSBj
b250cm9sIGZsb3cgbWlnaHQgbm90IHVzZSBhIGdyYWRpZW50CiAgICAgLy8gc28gd2Ugc3RvcmUg
dGhlIHNldCBvZiBhbGwgZ3JhZGllbnQtdXNpbmcgY29udHJvbCBmbG93cy4KLSAgICBzdGQ6OnNl
dDxUSW50ZXJtTm9kZSo+IG1Db250cm9sRmxvd3NDb250YWluaW5nR3JhZGllbnQ7CisgICAgc3Rk
OjpzZXQ8VEludGVybU5vZGUgKj4gbUNvbnRyb2xGbG93c0NvbnRhaW5pbmdHcmFkaWVudDsKIAog
ICAgIC8vIFJlbWVtYmVyIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkaXNjb250aW51b3VzIGxvb3Bz
IGFuZCB3aGljaCBmdW5jdGlvbnMKICAgICAvLyBhcmUgY2FsbGVkIGluIHN1Y2ggbG9vcHMuCiAg
ICAgYm9vbCBtQ2FsbGVkSW5EaXNjb250aW51b3VzTG9vcDsKICAgICBib29sIG1IYXNHcmFkaWVu
dExvb3BJbkNhbGxHcmFwaDsKLSAgICBzdGQ6OnNldDxUSW50ZXJtTG9vcCo+IG1EaXNjb250aW51
b3VzTG9vcHM7CisgICAgc3RkOjpzZXQ8VEludGVybUxvb3AgKj4gbURpc2NvbnRpbnVvdXNMb29w
czsKICAgICBzdGQ6OnNldDxUSW50ZXJtSWZFbHNlICo+IG1JZnNDb250YWluaW5nR3JhZGllbnRM
b29wOwogCiAgICAgLy8gV2lsbCB3ZSBuZWVkIHRvIGdlbmVyYXRlIGEgTG9kMCB2ZXJzaW9uIG9m
IHRoZSBmdW5jdGlvbi4KQEAgLTU1LDQgKzU4LDYgQEAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxBU1RN
ZXRhZGF0YUhMU0w+IE1ldGFkYXRhTGlzdDsKIC8vIFJldHVybiB0aGUgQVNUIGFuYWx5c2lzIHJl
c3VsdCwgaW4gdGhlIG9yZGVyIGRlZmluZWQgYnkgdGhlIGNhbGwgREFHCiBNZXRhZGF0YUxpc3Qg
Q3JlYXRlQVNUTWV0YWRhdGFITFNMKFRJbnRlcm1Ob2RlICpyb290LCBjb25zdCBDYWxsREFHICZj
YWxsRGFnKTsKIAotI2VuZGlmIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfQVNUTUVUQURBVEFITFNM
X0hfCit9ICAvLyBuYW1lc3BhY2Ugc2gKKworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9S
X0FTVE1FVEFEQVRBSExTTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQWRkRGVmYXVs
dFJldHVyblN0YXRlbWVudHMuY3BwCmluZGV4IDU3NjdhZWEyYmRjMDg0YjQ0MjZkN2YzYTViNjdm
ODk2NWU4NjAyNTIuLmI0OTQ0MTQ4MWEyZjBmY2UzZTEwYzk1MWY1MGEwNzkzYTUzNmZiM2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L0FkZERlZmF1bHRSZXR1cm5TdGF0ZW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BZGREZWZhdWx0UmV0dXJuU3RhdGVtZW50cy5j
cHAKQEAgLTMzLDggKzMzLDggQEAgY2xhc3MgQWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHNUcmF2
ZXJzZXIgOiBwcml2YXRlIFRJbnRlcm1UcmF2ZXJzZXIKIAogICAgIHN0YXRpYyBib29sIElzRnVu
Y3Rpb25XaXRob3V0UmV0dXJuU3RhdGVtZW50KFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5v
ZGUsIFRUeXBlICpyZXR1cm5UeXBlKQogICAgIHsKLSAgICAgICAgKnJldHVyblR5cGUgPSBub2Rl
LT5nZXRUeXBlKCk7Ci0gICAgICAgIGlmIChub2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkg
PT0gRWJ0Vm9pZCkKKyAgICAgICAgKnJldHVyblR5cGUgPSBub2RlLT5nZXRGdW5jdGlvblByb3Rv
dHlwZSgpLT5nZXRUeXBlKCk7CisgICAgICAgIGlmIChyZXR1cm5UeXBlLT5nZXRCYXNpY1R5cGUo
KSA9PSBFYnRWb2lkKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0FycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlci5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BcnJheVJldHVyblZhbHVlVG9P
dXRQYXJhbWV0ZXIuY3BwCmluZGV4IGYyODkxY2ZjYTJmMDFiN2FiMzFlNTcyZmM1ZGViZGYyMThj
NzQ3MDIuLjU1MmFiYzU2NGFkZTUwZGJlNGI5Y2UwYzc2YzU1YWU2YmU3MDgwMWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0FycmF5
UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVy
LmNwcApAQCAtMywxNyArMywyMSBAQAogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KIC8vCi0vLyBUaGUgQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVy
IGZ1bmN0aW9uIGNoYW5nZXMgcmV0dXJuIHZhbHVlcyBvZiBhbiBhcnJheSB0eXBlIHRvIG91dCBw
YXJhbWV0ZXJzIGluCisvLyBUaGUgQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyIGZ1bmN0
aW9uIGNoYW5nZXMgcmV0dXJuIHZhbHVlcyBvZiBhbiBhcnJheSB0eXBlIHRvIG91dAorLy8gcGFy
YW1ldGVycyBpbgogLy8gZnVuY3Rpb24gZGVmaW5pdGlvbnMsIHByb3RvdHlwZXMsIGFuZCBjYWxs
IHNpdGVzLgogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9BcnJheVJldHVyblZhbHVl
VG9PdXRQYXJhbWV0ZXIuaCIKIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJt
Tm9kZS5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogbmFtZXNwYWNlCiB7CiAKLXZvaWQgQ29weUFn
Z3JlZ2F0ZUNoaWxkcmVuKFRJbnRlcm1BZ2dyZWdhdGUgKmZyb20sIFRJbnRlcm1BZ2dyZWdhdGUg
KnRvKQordm9pZCBDb3B5QWdncmVnYXRlQ2hpbGRyZW4oVEludGVybUFnZ3JlZ2F0ZUJhc2UgKmZy
b20sIFRJbnRlcm1BZ2dyZWdhdGVCYXNlICp0bykKIHsKICAgICBjb25zdCBUSW50ZXJtU2VxdWVu
Y2UgKmZyb21TZXF1ZW5jZSA9IGZyb20tPmdldFNlcXVlbmNlKCk7CiAgICAgZm9yIChzaXplX3Qg
aWkgPSAwOyBpaSA8IGZyb21TZXF1ZW5jZS0+c2l6ZSgpOyArK2lpKQpAQCAtMzYsMjAgKzQwLDIw
IEBAIFRJbnRlcm1TeW1ib2wgKkNyZWF0ZVJldHVyblZhbHVlT3V0U3ltYm9sKGNvbnN0IFRUeXBl
ICZ0eXBlKQogICAgIHJldHVybiBDcmVhdGVSZXR1cm5WYWx1ZVN5bWJvbChvdXRUeXBlKTsKIH0K
IAotVEludGVybUFnZ3JlZ2F0ZSAqQ3JlYXRlUmVwbGFjZW1lbnRDYWxsKFRJbnRlcm1BZ2dyZWdh
dGUgKm9yaWdpbmFsQ2FsbCwgVEludGVybVR5cGVkICpyZXR1cm5WYWx1ZVRhcmdldCkKK1RJbnRl
cm1BZ2dyZWdhdGUgKkNyZWF0ZVJlcGxhY2VtZW50Q2FsbChUSW50ZXJtQWdncmVnYXRlICpvcmln
aW5hbENhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVy
bVR5cGVkICpyZXR1cm5WYWx1ZVRhcmdldCkKIHsKLSAgICBUSW50ZXJtQWdncmVnYXRlICpyZXBs
YWNlbWVudENhbGwgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BGdW5jdGlvbkNhbGwpOwotICAg
IHJlcGxhY2VtZW50Q2FsbC0+c2V0VHlwZShUVHlwZShFYnRWb2lkKSk7Ci0gICAgcmVwbGFjZW1l
bnRDYWxsLT5zZXRVc2VyRGVmaW5lZCgpOwotICAgICpyZXBsYWNlbWVudENhbGwtPmdldEZ1bmN0
aW9uU3ltYm9sSW5mbygpID0gKm9yaWdpbmFsQ2FsbC0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCk7
Ci0gICAgcmVwbGFjZW1lbnRDYWxsLT5zZXRMaW5lKG9yaWdpbmFsQ2FsbC0+Z2V0TGluZSgpKTsK
LSAgICBUSW50ZXJtU2VxdWVuY2UgKnJlcGxhY2VtZW50UGFyYW1ldGVycyA9IHJlcGxhY2VtZW50
Q2FsbC0+Z2V0U2VxdWVuY2UoKTsKLSAgICBUSW50ZXJtU2VxdWVuY2UgKm9yaWdpbmFsUGFyYW1l
dGVycyA9IG9yaWdpbmFsQ2FsbC0+Z2V0U2VxdWVuY2UoKTsKLSAgICBmb3IgKGF1dG8gJnBhcmFt
IDogKm9yaWdpbmFsUGFyYW1ldGVycykKKyAgICBUSW50ZXJtU2VxdWVuY2UgKnJlcGxhY2VtZW50
QXJndW1lbnRzID0gbmV3IFRJbnRlcm1TZXF1ZW5jZSgpOworICAgIFRJbnRlcm1TZXF1ZW5jZSAq
b3JpZ2luYWxBcmd1bWVudHMgICAgPSBvcmlnaW5hbENhbGwtPmdldFNlcXVlbmNlKCk7CisgICAg
Zm9yIChhdXRvICZhcmcgOiAqb3JpZ2luYWxBcmd1bWVudHMpCiAgICAgewotICAgICAgICByZXBs
YWNlbWVudFBhcmFtZXRlcnMtPnB1c2hfYmFjayhwYXJhbSk7CisgICAgICAgIHJlcGxhY2VtZW50
QXJndW1lbnRzLT5wdXNoX2JhY2soYXJnKTsKICAgICB9Ci0gICAgcmVwbGFjZW1lbnRQYXJhbWV0
ZXJzLT5wdXNoX2JhY2socmV0dXJuVmFsdWVUYXJnZXQpOworICAgIHJlcGxhY2VtZW50QXJndW1l
bnRzLT5wdXNoX2JhY2socmV0dXJuVmFsdWVUYXJnZXQpOworICAgIFRJbnRlcm1BZ2dyZWdhdGUg
KnJlcGxhY2VtZW50Q2FsbCA9IFRJbnRlcm1BZ2dyZWdhdGU6OkNyZWF0ZUZ1bmN0aW9uQ2FsbCgK
KyAgICAgICAgVFR5cGUoRWJ0Vm9pZCksIG9yaWdpbmFsQ2FsbC0+Z2V0RnVuY3Rpb25TeW1ib2xJ
bmZvKCktPmdldElkKCksCisgICAgICAgIG9yaWdpbmFsQ2FsbC0+Z2V0RnVuY3Rpb25TeW1ib2xJ
bmZvKCktPmdldE5hbWVPYmooKSwgcmVwbGFjZW1lbnRBcmd1bWVudHMpOworICAgIHJlcGxhY2Vt
ZW50Q2FsbC0+c2V0TGluZShvcmlnaW5hbENhbGwtPmdldExpbmUoKSk7CiAgICAgcmV0dXJuIHJl
cGxhY2VtZW50Q2FsbDsKIH0KIApAQCAtNTcsOSArNjEsMTEgQEAgY2xhc3MgQXJyYXlSZXR1cm5W
YWx1ZVRvT3V0UGFyYW1ldGVyVHJhdmVyc2VyIDogcHJpdmF0ZSBUSW50ZXJtVHJhdmVyc2VyCiB7
CiAgIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhcHBseShUSW50ZXJtTm9kZSAqcm9vdCwgdW5z
aWduZWQgaW50ICp0ZW1wb3JhcnlJbmRleCk7CisKICAgcHJpdmF0ZToKICAgICBBcnJheVJldHVy
blZhbHVlVG9PdXRQYXJhbWV0ZXJUcmF2ZXJzZXIoKTsKIAorICAgIGJvb2wgdmlzaXRGdW5jdGlv
blByb3RvdHlwZShWaXNpdCB2aXNpdCwgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlICpub2RlKSBv
dmVycmlkZTsKICAgICBib29sIHZpc2l0RnVuY3Rpb25EZWZpbml0aW9uKFZpc2l0IHZpc2l0LCBU
SW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2RlKSBvdmVycmlkZTsKICAgICBib29sIHZpc2l0
QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKSBvdmVycmlkZTsK
ICAgICBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoICpub2RlKSBv
dmVycmlkZTsKQEAgLTc3LDggKzgzLDcgQEAgdm9pZCBBcnJheVJldHVyblZhbHVlVG9PdXRQYXJh
bWV0ZXJUcmF2ZXJzZXI6OmFwcGx5KFRJbnRlcm1Ob2RlICpyb290LCB1bnNpZ25lZAogfQogCiBB
cnJheVJldHVyblZhbHVlVG9PdXRQYXJhbWV0ZXJUcmF2ZXJzZXI6OkFycmF5UmV0dXJuVmFsdWVU
b091dFBhcmFtZXRlclRyYXZlcnNlcigpCi0gICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZh
bHNlLCB0cnVlKSwKLSAgICAgIG1JbkZ1bmN0aW9uV2l0aEFycmF5UmV0dXJuVmFsdWUoZmFsc2Up
CisgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCB0cnVlKSwgbUluRnVuY3Rpb25X
aXRoQXJyYXlSZXR1cm5WYWx1ZShmYWxzZSkKIHsKIH0KIApAQCAtODYsODEgKzkxLDYzIEBAIGJv
b2wgQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyVHJhdmVyc2VyOjp2aXNpdEZ1bmN0aW9u
RGVmaW5pdGlvbigKICAgICBWaXNpdCB2aXNpdCwKICAgICBUSW50ZXJtRnVuY3Rpb25EZWZpbml0
aW9uICpub2RlKQogewotICAgIGlmIChub2RlLT5pc0FycmF5KCkgJiYgdmlzaXQgPT0gUHJlVmlz
aXQpCisgICAgaWYgKG5vZGUtPmdldEZ1bmN0aW9uUHJvdG90eXBlKCktPmlzQXJyYXkoKSAmJiB2
aXNpdCA9PSBQcmVWaXNpdCkKICAgICB7Ci0gICAgICAgIC8vIFJlcGxhY2UgdGhlIHBhcmFtZXRl
cnMgY2hpbGQgbm9kZSBvZiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiB3aXRoIGFub3RoZXIgbm9k
ZQotICAgICAgICAvLyB0aGF0IGhhcyB0aGUgb3V0IHBhcmFtZXRlciBhZGRlZC4KLSAgICAgICAg
Ly8gQWxzbyBzZXQgdGhlIGZ1bmN0aW9uIHRvIHJldHVybiB2b2lkLgotCi0gICAgICAgIFRJbnRl
cm1BZ2dyZWdhdGUgKnBhcmFtcyA9IG5vZGUtPmdldEZ1bmN0aW9uUGFyYW1ldGVycygpOwotICAg
ICAgICBBU1NFUlQocGFyYW1zICE9IG51bGxwdHIgJiYgcGFyYW1zLT5nZXRPcCgpID09IEVPcFBh
cmFtZXRlcnMpOwotCi0gICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnJlcGxhY2VtZW50UGFyYW1z
ID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGU7Ci0gICAgICAgIHJlcGxhY2VtZW50UGFyYW1zLT5zZXRP
cChFT3BQYXJhbWV0ZXJzKTsKLSAgICAgICAgQ29weUFnZ3JlZ2F0ZUNoaWxkcmVuKHBhcmFtcywg
cmVwbGFjZW1lbnRQYXJhbXMpOwotICAgICAgICByZXBsYWNlbWVudFBhcmFtcy0+Z2V0U2VxdWVu
Y2UoKS0+cHVzaF9iYWNrKENyZWF0ZVJldHVyblZhbHVlT3V0U3ltYm9sKG5vZGUtPmdldFR5cGUo
KSkpOwotICAgICAgICByZXBsYWNlbWVudFBhcmFtcy0+c2V0TGluZShwYXJhbXMtPmdldExpbmUo
KSk7Ci0KLSAgICAgICAgcXVldWVSZXBsYWNlbWVudFdpdGhQYXJlbnQobm9kZSwgcGFyYW1zLCBy
ZXBsYWNlbWVudFBhcmFtcywgT3JpZ2luYWxOb2RlOjpJU19EUk9QUEVEKTsKLQotICAgICAgICBu
b2RlLT5zZXRUeXBlKFRUeXBlKEVidFZvaWQpKTsKLQorICAgICAgICAvLyBSZXBsYWNpbmcgdGhl
IGZ1bmN0aW9uIGhlYWRlciBpcyBkb25lIG9uIHZpc2l0RnVuY3Rpb25Qcm90b3R5cGUoKS4KICAg
ICAgICAgbUluRnVuY3Rpb25XaXRoQXJyYXlSZXR1cm5WYWx1ZSA9IHRydWU7CiAgICAgfQogICAg
IGlmICh2aXNpdCA9PSBQb3N0VmlzaXQpCiAgICAgewotICAgICAgICAvLyBUaGlzIGlzbid0IGNv
bmRpdGlvbmFsIG9uIG5vZGUtPmlzQXJyYXkoKSBzaW5jZSB0aGUgdHlwZSBoYXMgYWxyZWFkeSBi
ZWVuIGNoYW5nZWQgb24KLSAgICAgICAgLy8gUHJlVmlzaXQuCiAgICAgICAgIG1JbkZ1bmN0aW9u
V2l0aEFycmF5UmV0dXJuVmFsdWUgPSBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKK2Jvb2wgQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyVHJhdmVyc2VyOjp2aXNpdEZ1
bmN0aW9uUHJvdG90eXBlKFZpc2l0IHZpc2l0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUZ1bmN0aW9u
UHJvdG90eXBlICpub2RlKQoreworICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCAmJiBub2RlLT5p
c0FycmF5KCkpCisgICAgeworICAgICAgICAvLyBSZXBsYWNlIHRoZSB3aG9sZSBwcm90b3R5cGUg
bm9kZSB3aXRoIGFub3RoZXIgbm9kZSB0aGF0IGhhcyB0aGUgb3V0IHBhcmFtZXRlcgorICAgICAg
ICAvLyBhZGRlZC4gQWxzbyBzZXQgdGhlIGZ1bmN0aW9uIHRvIHJldHVybiB2b2lkLgorICAgICAg
ICBUSW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKnJlcGxhY2VtZW50ID0KKyAgICAgICAgICAgIG5l
dyBUSW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUoVFR5cGUoRWJ0Vm9pZCksIG5vZGUtPmdldEZ1bmN0
aW9uU3ltYm9sSW5mbygpLT5nZXRJZCgpKTsKKyAgICAgICAgQ29weUFnZ3JlZ2F0ZUNoaWxkcmVu
KG5vZGUsIHJlcGxhY2VtZW50KTsKKyAgICAgICAgcmVwbGFjZW1lbnQtPmdldFNlcXVlbmNlKCkt
PnB1c2hfYmFjayhDcmVhdGVSZXR1cm5WYWx1ZU91dFN5bWJvbChub2RlLT5nZXRUeXBlKCkpKTsK
KyAgICAgICAgKnJlcGxhY2VtZW50LT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKSA9ICpub2RlLT5n
ZXRGdW5jdGlvblN5bWJvbEluZm8oKTsKKyAgICAgICAgcmVwbGFjZW1lbnQtPnNldExpbmUobm9k
ZS0+Z2V0TGluZSgpKTsKKworICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIHJlcGxhY2Vt
ZW50LCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKIGJvb2wgQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyVHJhdmVyc2VyOjp2aXNp
dEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKIHsKLSAgICBp
ZiAodmlzaXQgPT0gUHJlVmlzaXQpCisgICAgQVNTRVJUKCFub2RlLT5pc0FycmF5KCkgfHwgbm9k
ZS0+Z2V0T3AoKSAhPSBFT3BDYWxsSW50ZXJuYWxSYXdGdW5jdGlvbik7CisgICAgaWYgKHZpc2l0
ID09IFByZVZpc2l0ICYmIG5vZGUtPmlzQXJyYXkoKSAmJiBub2RlLT5nZXRPcCgpID09IEVPcENh
bGxGdW5jdGlvbkluQVNUKQogICAgIHsKLSAgICAgICAgaWYgKG5vZGUtPmlzQXJyYXkoKSkKKyAg
ICAgICAgLy8gSGFuZGxlIGNhbGwgc2l0ZXMgd2hlcmUgdGhlIHJldHVybmVkIGFycmF5IGlzIG5v
dCBhc3NpZ25lZC4KKyAgICAgICAgLy8gRXhhbXBsZXMgd2hlcmUgZigpIGlzIGEgZnVuY3Rpb24g
cmV0dXJuaW5nIGFuIGFycmF5OgorICAgICAgICAvLyAxLiBmKCk7CisgICAgICAgIC8vIDIuIGFu
b3RoZXJfYXJyYXkgPT0gZigpOworICAgICAgICAvLyAzLiBhbm90aGVyX2Z1bmN0aW9uKGYoKSk7
CisgICAgICAgIC8vIDQuIHJldHVybiBmKCk7CisgICAgICAgIC8vIENhc2VzIDIgdG8gNCBhcmUg
YWxyZWFkeSBjb252ZXJ0ZWQgdG8gc2ltcGxlciBjYXNlcyBieQorICAgICAgICAvLyBTZXBhcmF0
ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzLCBzbyB3ZSBvbmx5IG5lZWQgdG8gd29ycnkgYWJv
dXQgdGhlIGNhc2Ugd2hlcmUgYQorICAgICAgICAvLyBmdW5jdGlvbiBjYWxsIHJldHVybmluZyBh
biBhcnJheSBmb3JtcyBhbiBleHByZXNzaW9uIGJ5IGl0c2VsZi4KKyAgICAgICAgVEludGVybUJs
b2NrICpwYXJlbnRCbG9jayA9IGdldFBhcmVudE5vZGUoKS0+Z2V0QXNCbG9jaygpOworICAgICAg
ICBpZiAocGFyZW50QmxvY2spCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5nZXRP
cCgpID09IEVPcFByb3RvdHlwZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBS
ZXBsYWNlIHRoZSB3aG9sZSBwcm90b3R5cGUgbm9kZSB3aXRoIGFub3RoZXIgbm9kZSB0aGF0IGhh
cyB0aGUgb3V0IHBhcmFtZXRlciBhZGRlZC4KLSAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVn
YXRlICpyZXBsYWNlbWVudCA9IG5ldyBUSW50ZXJtQWdncmVnYXRlOwotICAgICAgICAgICAgICAg
IHJlcGxhY2VtZW50LT5zZXRPcChFT3BQcm90b3R5cGUpOwotICAgICAgICAgICAgICAgIENvcHlB
Z2dyZWdhdGVDaGlsZHJlbihub2RlLCByZXBsYWNlbWVudCk7Ci0gICAgICAgICAgICAgICAgcmVw
bGFjZW1lbnQtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhDcmVhdGVSZXR1cm5WYWx1ZU91dFN5
bWJvbChub2RlLT5nZXRUeXBlKCkpKTsKLSAgICAgICAgICAgICAgICByZXBsYWNlbWVudC0+c2V0
VXNlckRlZmluZWQoKTsKLSAgICAgICAgICAgICAgICAqcmVwbGFjZW1lbnQtPmdldEZ1bmN0aW9u
U3ltYm9sSW5mbygpID0gKm5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpOwotICAgICAgICAg
ICAgICAgIHJlcGxhY2VtZW50LT5zZXRMaW5lKG5vZGUtPmdldExpbmUoKSk7Ci0gICAgICAgICAg
ICAgICAgcmVwbGFjZW1lbnQtPnNldFR5cGUoVFR5cGUoRWJ0Vm9pZCkpOwotCi0gICAgICAgICAg
ICAgICAgcXVldWVSZXBsYWNlbWVudChub2RlLCByZXBsYWNlbWVudCwgT3JpZ2luYWxOb2RlOjpJ
U19EUk9QUEVEKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmdl
dE9wKCkgPT0gRU9wRnVuY3Rpb25DYWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IC8vIEhhbmRsZSBjYWxsIHNpdGVzIHdoZXJlIHRoZSByZXR1cm5lZCBhcnJheSBpcyBub3QgYXNz
aWduZWQuCi0gICAgICAgICAgICAgICAgLy8gRXhhbXBsZXMgd2hlcmUgZigpIGlzIGEgZnVuY3Rp
b24gcmV0dXJuaW5nIGFuIGFycmF5OgotICAgICAgICAgICAgICAgIC8vIDEuIGYoKTsKLSAgICAg
ICAgICAgICAgICAvLyAyLiBhbm90aGVyX2FycmF5ID09IGYoKTsKLSAgICAgICAgICAgICAgICAv
LyAzLiBhbm90aGVyX2Z1bmN0aW9uKGYoKSk7Ci0gICAgICAgICAgICAgICAgLy8gNC4gcmV0dXJu
IGYoKTsKLSAgICAgICAgICAgICAgICAvLyBDYXNlcyAyIHRvIDQgYXJlIGFscmVhZHkgY29udmVy
dGVkIHRvIHNpbXBsZXIgY2FzZXMgYnkgU2VwYXJhdGVFeHByZXNzaW9uc1JldHVybmluZ0FycmF5
cywgc28gd2UKLSAgICAgICAgICAgICAgICAvLyBvbmx5IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhl
IGNhc2Ugd2hlcmUgYSBmdW5jdGlvbiBjYWxsIHJldHVybmluZyBhbiBhcnJheSBmb3JtcyBhbiBl
eHByZXNzaW9uIGJ5Ci0gICAgICAgICAgICAgICAgLy8gaXRzZWxmLgotICAgICAgICAgICAgICAg
IFRJbnRlcm1CbG9jayAqcGFyZW50QmxvY2sgPSBnZXRQYXJlbnROb2RlKCktPmdldEFzQmxvY2so
KTsKLSAgICAgICAgICAgICAgICBpZiAocGFyZW50QmxvY2spCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBuZXh0VGVtcG9yYXJ5SW5kZXgoKTsKLSAgICAgICAgICAgICAg
ICAgICAgVEludGVybVNlcXVlbmNlIHJlcGxhY2VtZW50czsKLSAgICAgICAgICAgICAgICAgICAg
cmVwbGFjZW1lbnRzLnB1c2hfYmFjayhjcmVhdGVUZW1wRGVjbGFyYXRpb24obm9kZS0+Z2V0VHlw
ZSgpKSk7Ci0gICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnJldHVyblN5bWJvbCA9
IGNyZWF0ZVRlbXBTeW1ib2wobm9kZS0+Z2V0VHlwZSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
cmVwbGFjZW1lbnRzLnB1c2hfYmFjayhDcmVhdGVSZXBsYWNlbWVudENhbGwobm9kZSwgcmV0dXJu
U3ltYm9sKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1NdWx0aVJlcGxhY2VtZW50cy5wdXNoX2Jh
Y2soCi0gICAgICAgICAgICAgICAgICAgICAgICBOb2RlUmVwbGFjZVdpdGhNdWx0aXBsZUVudHJ5
KHBhcmVudEJsb2NrLCBub2RlLCByZXBsYWNlbWVudHMpKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQorICAgICAgICAgICAg
bmV4dFRlbXBvcmFyeUluZGV4KCk7CisgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgcmVwbGFj
ZW1lbnRzOworICAgICAgICAgICAgcmVwbGFjZW1lbnRzLnB1c2hfYmFjayhjcmVhdGVUZW1wRGVj
bGFyYXRpb24obm9kZS0+Z2V0VHlwZSgpKSk7CisgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpy
ZXR1cm5TeW1ib2wgPSBjcmVhdGVUZW1wU3ltYm9sKG5vZGUtPmdldFR5cGUoKSk7CisgICAgICAg
ICAgICByZXBsYWNlbWVudHMucHVzaF9iYWNrKENyZWF0ZVJlcGxhY2VtZW50Q2FsbChub2RlLCBy
ZXR1cm5TeW1ib2wpKTsKKyAgICAgICAgICAgIG1NdWx0aVJlcGxhY2VtZW50cy5wdXNoX2JhY2so
CisgICAgICAgICAgICAgICAgTm9kZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRyeShwYXJlbnRCbG9j
aywgbm9kZSwgcmVwbGFjZW1lbnRzKSk7CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE5NSw3ICsxODIsOCBAQCBib29sIEFy
cmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlclRyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQg
dmlzaXQsIFRJbnRlcm1CaQogICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcEFzc2lnbiAmJiBu
b2RlLT5nZXRMZWZ0KCktPmlzQXJyYXkoKSkKICAgICB7CiAgICAgICAgIFRJbnRlcm1BZ2dyZWdh
dGUgKnJpZ2h0QWdnID0gbm9kZS0+Z2V0UmlnaHQoKS0+Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICAg
ICAgaWYgKHJpZ2h0QWdnICE9IG51bGxwdHIgJiYgcmlnaHRBZ2ctPmdldE9wKCkgPT0gRU9wRnVu
Y3Rpb25DYWxsICYmIHJpZ2h0QWdnLT5pc1VzZXJEZWZpbmVkKCkpCisgICAgICAgIEFTU0VSVChy
aWdodEFnZyA9PSBudWxscHRyIHx8IHJpZ2h0QWdnLT5nZXRPcCgpICE9IEVPcENhbGxJbnRlcm5h
bFJhd0Z1bmN0aW9uKTsKKyAgICAgICAgaWYgKHJpZ2h0QWdnICE9IG51bGxwdHIgJiYgcmlnaHRB
Z2ctPmdldE9wKCkgPT0gRU9wQ2FsbEZ1bmN0aW9uSW5BU1QpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnJlcGxhY2VtZW50Q2FsbCA9IENyZWF0ZVJlcGxhY2VtZW50
Q2FsbChyaWdodEFnZywgbm9kZS0+Z2V0TGVmdCgpKTsKICAgICAgICAgICAgIHF1ZXVlUmVwbGFj
ZW1lbnQobm9kZSwgcmVwbGFjZW1lbnRDYWxsLCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOwpA
QCAtMjA0LDkgKzE5MiwxMSBAQCBib29sIEFycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlclRy
YXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotfSAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZQogCiB2b2lkIEFycmF5
UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlcihUSW50ZXJtTm9kZSAqcm9vdCwgdW5zaWduZWQgaW50
ICp0ZW1wb3JhcnlJbmRleCkKIHsKICAgICBBcnJheVJldHVyblZhbHVlVG9PdXRQYXJhbWV0ZXJU
cmF2ZXJzZXI6OmFwcGx5KHJvb3QsIHRlbXBvcmFyeUluZGV4KTsKIH0KKworfSAgLy8gbmFtZXNw
YWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9BcnJheVJldHVyblZhbHVlVG9PdXRQYXJhbWV0ZXIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0FycmF5UmV0dXJuVmFsdWVUb091
dFBhcmFtZXRlci5oCmluZGV4IDk4M2UyMDNlNjI4MWFjYjg5MWNmMjc0OWY4NjhjZTBhZWM5MGU1
ZDEuLjE4ZjUyNjVkZWNjODIyMDRmNDhlYjFhNTViZTMxYTIwZTA3OGMwNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0FycmF5UmV0
dXJuVmFsdWVUb091dFBhcmFtZXRlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL0FycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlci5oCkBA
IC0zLDE0ICszLDE4IEBACiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgogLy8KLS8vIFRoZSBBcnJheVJldHVyblZhbHVlVG9PdXRQYXJhbWV0ZXIgZnVuY3Rp
b24gY2hhbmdlcyByZXR1cm4gdmFsdWVzIG9mIGFuIGFycmF5IHR5cGUgdG8gb3V0IHBhcmFtZXRl
cnMgaW4KKy8vIFRoZSBBcnJheVJldHVyblZhbHVlVG9PdXRQYXJhbWV0ZXIgZnVuY3Rpb24gY2hh
bmdlcyByZXR1cm4gdmFsdWVzIG9mIGFuIGFycmF5IHR5cGUgdG8gb3V0CisvLyBwYXJhbWV0ZXJz
IGluCiAvLyBmdW5jdGlvbiBkZWZpbml0aW9ucywgcHJvdG90eXBlcyBhbmQgY2FsbCBzaXRlcy4K
IAogI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX0FSUkFZUkVUVVJOVkFMVUVUT09VVFBBUkFN
RVRFUl9IXwogI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX0FSUkFZUkVUVVJOVkFMVUVUT09V
VFBBUkFNRVRFUl9IXwogCituYW1lc3BhY2Ugc2gKK3sKIGNsYXNzIFRJbnRlcm1Ob2RlOwogCiB2
b2lkIEFycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlcihUSW50ZXJtTm9kZSAqcm9vdCwgdW5z
aWduZWQgaW50ICp0ZW1wb3JhcnlJbmRleCk7Cit9ICAvLyBuYW1lc3BhY2Ugc2gKIAogI2VuZGlm
ICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0FSUkFZUkVUVVJOVkFMVUVUT09VVFBBUkFNRVRFUl9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvQmFzZVR5cGVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9CYXNlVHlwZXMuaAppbmRleCBhM2Q5YTYwODMwZGExNjBiODQ1NTRiZWI0ODA4
YzAwZWU0ZTUwN2RlLi45MDViNTlmMDJiMTg3NzlmMGRmZTlhYzk1MGY5ZDNmZTA0MzdhYjBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9CYXNlVHlwZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9CYXNlVHlwZXMuaApAQCAtMTMsNiArMTMsOSBAQAogI2luY2x1ZGUgImNvbW1v
bi9kZWJ1Zy5oIgogI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgogCituYW1lc3BhY2Ug
c2gKK3sKKwogLy8KIC8vIFByZWNpc2lvbiBxdWFsaWZpZXJzCiAvLwpAQCAtMjgsMTQgKzMxLDE4
IEBAIGVudW0gVFByZWNpc2lvbgogICAgIEVicExhc3QKIH07CiAKLWlubGluZSBjb25zdCBjaGFy
KiBnZXRQcmVjaXNpb25TdHJpbmcoVFByZWNpc2lvbiBwKQoraW5saW5lIGNvbnN0IGNoYXIgKmdl
dFByZWNpc2lvblN0cmluZyhUUHJlY2lzaW9uIHApCiB7Ci0gICAgc3dpdGNoKHApCisgICAgc3dp
dGNoIChwKQogICAgIHsKLSAgICAgICAgY2FzZSBFYnBIaWdoOiAgIHJldHVybiAiaGlnaHAiOwot
ICAgICAgICBjYXNlIEVicE1lZGl1bTogcmV0dXJuICJtZWRpdW1wIjsKLSAgICAgICAgY2FzZSBF
YnBMb3c6ICAgIHJldHVybiAibG93cCI7Ci0gICAgICAgIGRlZmF1bHQ6ICAgICAgICByZXR1cm4g
Im1lZGl1bXAiOyAgLy8gU2FmZXN0IGZhbGxiYWNrCisgICAgICAgIGNhc2UgRWJwSGlnaDoKKyAg
ICAgICAgICAgIHJldHVybiAiaGlnaHAiOworICAgICAgICBjYXNlIEVicE1lZGl1bToKKyAgICAg
ICAgICAgIHJldHVybiAibWVkaXVtcCI7CisgICAgICAgIGNhc2UgRWJwTG93OgorICAgICAgICAg
ICAgcmV0dXJuICJsb3dwIjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAi
bWVkaXVtcCI7ICAvLyBTYWZlc3QgZmFsbGJhY2sKICAgICB9CiB9CiAKQEAgLTU4LDY5ICs2NSwy
MzcgQEAgZW51bSBUQmFzaWNUeXBlCiAgICAgRWJ0SVZlYywgICAgICAgICAgICAgICAvLyBub24g
dHlwZTogcmVwcmVzZW50cyBpdmVjMiwgaXZlYzMsIGFuZCBpdmVjNAogICAgIEVidFVWZWMsICAg
ICAgICAgICAgICAgLy8gbm9uIHR5cGU6IHJlcHJlc2VudHMgdXZlYzIsIHV2ZWMzLCBhbmQgdXZl
YzQKICAgICBFYnRCVmVjLCAgICAgICAgICAgICAgIC8vIG5vbiB0eXBlOiByZXByZXNlbnRzIGJ2
ZWMyLCBidmVjMywgYW5kIGJ2ZWM0CisgICAgRWJ0WXV2Q3NjU3RhbmRhcmRFWFQsICAvLyBPbmx5
IHZhbGlkIGlmIEVYVF9ZVVZfdGFyZ2V0IGV4aXN0cy4KICAgICBFYnRHdWFyZFNhbXBsZXJCZWdp
biwgIC8vIG5vbiB0eXBlOiBzZWUgaW1wbGVtZW50YXRpb24gb2YgSXNTYW1wbGVyKCkKICAgICBF
YnRTYW1wbGVyMkQsCiAgICAgRWJ0U2FtcGxlcjNELAogICAgIEVidFNhbXBsZXJDdWJlLAogICAg
IEVidFNhbXBsZXIyREFycmF5LAotICAgIEVidFNhbXBsZXJFeHRlcm5hbE9FUywgIC8vIE9ubHkg
dmFsaWQgaWYgT0VTX0VHTF9pbWFnZV9leHRlcm5hbCBleGlzdHMuCi0gICAgRWJ0U2FtcGxlcjJE
UmVjdCwgICAgICAgLy8gT25seSB2YWxpZCBpZiBHTF9BUkJfdGV4dHVyZV9yZWN0YW5nbGUgZXhp
c3RzLgorICAgIEVidFNhbXBsZXJFeHRlcm5hbE9FUywgICAgICAgLy8gT25seSB2YWxpZCBpZiBP
RVNfRUdMX2ltYWdlX2V4dGVybmFsIGV4aXN0cy4KKyAgICBFYnRTYW1wbGVyRXh0ZXJuYWwyRFky
WUVYVCwgIC8vIE9ubHkgdmFsaWQgaWYgR0xfRVhUX1lVVl90YXJnZXQgZXhpc3RzLgorICAgIEVi
dFNhbXBsZXIyRFJlY3QsICAgICAgICAgICAgLy8gT25seSB2YWxpZCBpZiBHTF9BUkJfdGV4dHVy
ZV9yZWN0YW5nbGUgZXhpc3RzLgorICAgIEVidFNhbXBsZXIyRE1TLAogICAgIEVidElTYW1wbGVy
MkQsCiAgICAgRWJ0SVNhbXBsZXIzRCwKICAgICBFYnRJU2FtcGxlckN1YmUsCiAgICAgRWJ0SVNh
bXBsZXIyREFycmF5LAorICAgIEVidElTYW1wbGVyMkRNUywKICAgICBFYnRVU2FtcGxlcjJELAog
ICAgIEVidFVTYW1wbGVyM0QsCiAgICAgRWJ0VVNhbXBsZXJDdWJlLAogICAgIEVidFVTYW1wbGVy
MkRBcnJheSwKKyAgICBFYnRVU2FtcGxlcjJETVMsCiAgICAgRWJ0U2FtcGxlcjJEU2hhZG93LAog
ICAgIEVidFNhbXBsZXJDdWJlU2hhZG93LAogICAgIEVidFNhbXBsZXIyREFycmF5U2hhZG93LAot
ICAgIEVidEd1YXJkU2FtcGxlckVuZCwgICAgLy8gbm9uIHR5cGU6IHNlZSBpbXBsZW1lbnRhdGlv
biBvZiBJc1NhbXBsZXIoKQotICAgIEVidEdTYW1wbGVyMkQsICAgICAgICAgLy8gbm9uIHR5cGU6
IHJlcHJlc2VudHMgc2FtcGxlcjJELCBpc2FtcGxlcjJELCBhbmQgdXNhbXBsZXIyRAotICAgIEVi
dEdTYW1wbGVyM0QsICAgICAgICAgLy8gbm9uIHR5cGU6IHJlcHJlc2VudHMgc2FtcGxlcjNELCBp
c2FtcGxlcjNELCBhbmQgdXNhbXBsZXIzRAotICAgIEVidEdTYW1wbGVyQ3ViZSwgICAgICAgLy8g
bm9uIHR5cGU6IHJlcHJlc2VudHMgc2FtcGxlckN1YmUsIGlzYW1wbGVyQ3ViZSwgYW5kIHVzYW1w
bGVyQ3ViZQotICAgIEVidEdTYW1wbGVyMkRBcnJheSwgICAgLy8gbm9uIHR5cGU6IHJlcHJlc2Vu
dHMgc2FtcGxlcjJEQXJyYXksIGlzYW1wbGVyMkRBcnJheSwgYW5kIHVzYW1wbGVyMkRBcnJheQor
ICAgIEVidEd1YXJkU2FtcGxlckVuZCwgIC8vIG5vbiB0eXBlOiBzZWUgaW1wbGVtZW50YXRpb24g
b2YgSXNTYW1wbGVyKCkKKyAgICBFYnRHU2FtcGxlcjJELCAgICAgICAvLyBub24gdHlwZTogcmVw
cmVzZW50cyBzYW1wbGVyMkQsIGlzYW1wbGVyMkQsIGFuZCB1c2FtcGxlcjJECisgICAgRWJ0R1Nh
bXBsZXIzRCwgICAgICAgLy8gbm9uIHR5cGU6IHJlcHJlc2VudHMgc2FtcGxlcjNELCBpc2FtcGxl
cjNELCBhbmQgdXNhbXBsZXIzRAorICAgIEVidEdTYW1wbGVyQ3ViZSwgICAgIC8vIG5vbiB0eXBl
OiByZXByZXNlbnRzIHNhbXBsZXJDdWJlLCBpc2FtcGxlckN1YmUsIGFuZCB1c2FtcGxlckN1YmUK
KyAgICBFYnRHU2FtcGxlcjJEQXJyYXksICAvLyBub24gdHlwZTogcmVwcmVzZW50cyBzYW1wbGVy
MkRBcnJheSwgaXNhbXBsZXIyREFycmF5LCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAv
LyB1c2FtcGxlcjJEQXJyYXkKKyAgICBFYnRHU2FtcGxlcjJETVMsICAgICAvLyBub24gdHlwZTog
cmVwcmVzZW50cyBzYW1wbGVyMkRNUywgaXNhbXBsZXIyRE1TLCBhbmQgdXNhbXBsZXIyRE1TCisK
KyAgICAvLyBpbWFnZXMKKyAgICBFYnRHdWFyZEltYWdlQmVnaW4sCisgICAgRWJ0SW1hZ2UyRCwK
KyAgICBFYnRJSW1hZ2UyRCwKKyAgICBFYnRVSW1hZ2UyRCwKKyAgICBFYnRJbWFnZTNELAorICAg
IEVidElJbWFnZTNELAorICAgIEVidFVJbWFnZTNELAorICAgIEVidEltYWdlMkRBcnJheSwKKyAg
ICBFYnRJSW1hZ2UyREFycmF5LAorICAgIEVidFVJbWFnZTJEQXJyYXksCisgICAgRWJ0SW1hZ2VD
dWJlLAorICAgIEVidElJbWFnZUN1YmUsCisgICAgRWJ0VUltYWdlQ3ViZSwKKyAgICBFYnRHdWFy
ZEltYWdlRW5kLAorCisgICAgRWJ0R3VhcmRHSW1hZ2VCZWdpbiwKKyAgICBFYnRHSW1hZ2UyRCwg
ICAgICAgLy8gbm9uIHR5cGU6IHJlcHJlc2VudHMgaW1hZ2UyRCwgdWltYWdlMkQsIGlpbWFnZTJE
CisgICAgRWJ0R0ltYWdlM0QsICAgICAgIC8vIG5vbiB0eXBlOiByZXByZXNlbnRzIGltYWdlM0Qs
IHVpbWFnZTNELCBpaW1hZ2UzRAorICAgIEVidEdJbWFnZTJEQXJyYXksICAvLyBub24gdHlwZTog
cmVwcmVzZW50cyBpbWFnZTJEQXJyYXksIHVpbWFnZTJEQXJyYXksIGlpbWFnZTJEQXJyYXkKKyAg
ICBFYnRHSW1hZ2VDdWJlLCAgICAgLy8gbm9uIHR5cGU6IHJlcHJlc2VudHMgaW1hZ2VDdWJlLCB1
aW1hZ2VDdWJlLCBpaW1hZ2VDdWJlCisgICAgRWJ0R3VhcmRHSW1hZ2VFbmQsCisKICAgICBFYnRT
dHJ1Y3QsCiAgICAgRWJ0SW50ZXJmYWNlQmxvY2ssCi0gICAgRWJ0QWRkcmVzcywgICAgICAgICAg
ICAvLyBzaG91bGQgYmUgZGVwcmVjYXRlZD8/CisgICAgRWJ0QWRkcmVzcywgIC8vIHNob3VsZCBi
ZSBkZXByZWNhdGVkPz8KIAogICAgIC8vIGVuZCBvZiBsaXN0CiAgICAgRWJ0TGFzdAogfTsKIAot
Y29uc3QgY2hhciogZ2V0QmFzaWNTdHJpbmcoVEJhc2ljVHlwZSB0KTsKK2lubGluZSBUQmFzaWNU
eXBlIGNvbnZlcnRHSW1hZ2VUb0Zsb2F0SW1hZ2UoVEJhc2ljVHlwZSB0eXBlKQoreworICAgIHN3
aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgRWJ0R0ltYWdlMkQ6CisgICAgICAgICAg
ICByZXR1cm4gRWJ0SW1hZ2UyRDsKKyAgICAgICAgY2FzZSBFYnRHSW1hZ2UzRDoKKyAgICAgICAg
ICAgIHJldHVybiBFYnRJbWFnZTNEOworICAgICAgICBjYXNlIEVidEdJbWFnZTJEQXJyYXk6Cisg
ICAgICAgICAgICByZXR1cm4gRWJ0SW1hZ2UyREFycmF5OworICAgICAgICBjYXNlIEVidEdJbWFn
ZUN1YmU6CisgICAgICAgICAgICByZXR1cm4gRWJ0SW1hZ2VDdWJlOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisgICAgcmV0dXJuIEVidExhc3Q7
Cit9CisKK2lubGluZSBUQmFzaWNUeXBlIGNvbnZlcnRHSW1hZ2VUb0ludEltYWdlKFRCYXNpY1R5
cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEVidEdJ
bWFnZTJEOgorICAgICAgICAgICAgcmV0dXJuIEVidElJbWFnZTJEOworICAgICAgICBjYXNlIEVi
dEdJbWFnZTNEOgorICAgICAgICAgICAgcmV0dXJuIEVidElJbWFnZTNEOworICAgICAgICBjYXNl
IEVidEdJbWFnZTJEQXJyYXk6CisgICAgICAgICAgICByZXR1cm4gRWJ0SUltYWdlMkRBcnJheTsK
KyAgICAgICAgY2FzZSBFYnRHSW1hZ2VDdWJlOgorICAgICAgICAgICAgcmV0dXJuIEVidElJbWFn
ZUN1YmU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAg
IH0KKyAgICByZXR1cm4gRWJ0TGFzdDsKK30KKworaW5saW5lIFRCYXNpY1R5cGUgY29udmVydEdJ
bWFnZVRvVW5zaWduZWRJbWFnZShUQmFzaWNUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBl
KQorICAgIHsKKyAgICAgICAgY2FzZSBFYnRHSW1hZ2UyRDoKKyAgICAgICAgICAgIHJldHVybiBF
YnRVSW1hZ2UyRDsKKyAgICAgICAgY2FzZSBFYnRHSW1hZ2UzRDoKKyAgICAgICAgICAgIHJldHVy
biBFYnRVSW1hZ2UzRDsKKyAgICAgICAgY2FzZSBFYnRHSW1hZ2UyREFycmF5OgorICAgICAgICAg
ICAgcmV0dXJuIEVidFVJbWFnZTJEQXJyYXk7CisgICAgICAgIGNhc2UgRWJ0R0ltYWdlQ3ViZToK
KyAgICAgICAgICAgIHJldHVybiBFYnRVSW1hZ2VDdWJlOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisgICAgcmV0dXJuIEVidExhc3Q7Cit9CisK
K2NvbnN0IGNoYXIgKmdldEJhc2ljU3RyaW5nKFRCYXNpY1R5cGUgdCk7CiAKIGlubGluZSBib29s
IElzU2FtcGxlcihUQmFzaWNUeXBlIHR5cGUpCiB7CiAgICAgcmV0dXJuIHR5cGUgPiBFYnRHdWFy
ZFNhbXBsZXJCZWdpbiAmJiB0eXBlIDwgRWJ0R3VhcmRTYW1wbGVyRW5kOwogfQogCitpbmxpbmUg
Ym9vbCBJc0ltYWdlKFRCYXNpY1R5cGUgdHlwZSkKK3sKKyAgICByZXR1cm4gdHlwZSA+IEVidEd1
YXJkSW1hZ2VCZWdpbiAmJiB0eXBlIDwgRWJ0R3VhcmRJbWFnZUVuZDsKK30KKworaW5saW5lIGJv
b2wgSXNHSW1hZ2UoVEJhc2ljVHlwZSB0eXBlKQoreworICAgIHJldHVybiB0eXBlID4gRWJ0R3Vh
cmRHSW1hZ2VCZWdpbiAmJiB0eXBlIDwgRWJ0R3VhcmRHSW1hZ2VFbmQ7Cit9CisKK2lubGluZSBi
b29sIElzT3BhcXVlVHlwZShUQmFzaWNUeXBlIHR5cGUpCit7CisgICAgLy8gVE9ETyAobXJhZGV2
KTogYWRkIGF0b21pYyB0eXBlcyBhcyBvcGFxdWUuCisgICAgcmV0dXJuIElzU2FtcGxlcih0eXBl
KSB8fCBJc0ltYWdlKHR5cGUpOworfQorCiBpbmxpbmUgYm9vbCBJc0ludGVnZXJTYW1wbGVyKFRC
YXNpY1R5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgewotICAgICAgY2FzZSBF
YnRJU2FtcGxlcjJEOgotICAgICAgY2FzZSBFYnRJU2FtcGxlcjNEOgotICAgICAgY2FzZSBFYnRJ
U2FtcGxlckN1YmU6Ci0gICAgICBjYXNlIEVidElTYW1wbGVyMkRBcnJheToKLSAgICAgIGNhc2Ug
RWJ0VVNhbXBsZXIyRDoKLSAgICAgIGNhc2UgRWJ0VVNhbXBsZXIzRDoKLSAgICAgIGNhc2UgRWJ0
VVNhbXBsZXJDdWJlOgotICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEQXJyYXk6Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6Ci0gICAgICBjYXNlIEVidFNhbXBs
ZXIzRDoKLSAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6Ci0gICAgICBjYXNlIEVidFNhbXBsZXJF
eHRlcm5hbE9FUzoKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEUmVjdDoKLSAgICAgIGNhc2UgRWJ0
U2FtcGxlcjJEQXJyYXk6Ci0gICAgICBjYXNlIEVidFNhbXBsZXIyRFNoYWRvdzoKLSAgICAgIGNh
c2UgRWJ0U2FtcGxlckN1YmVTaGFkb3c6Ci0gICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5U2hh
ZG93OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBhc3Nl
cnQoIUlzU2FtcGxlcih0eXBlKSk7CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyRDoKKyAgICAg
ICAgY2FzZSBFYnRJU2FtcGxlcjNEOgorICAgICAgICBjYXNlIEVidElTYW1wbGVyQ3ViZToKKyAg
ICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEQXJyYXk6CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIy
RE1TOgorICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkQ6CisgICAgICAgIGNhc2UgRWJ0VVNhbXBs
ZXIzRDoKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxlckN1YmU6CisgICAgICAgIGNhc2UgRWJ0VVNh
bXBsZXIyREFycmF5OgorICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkRNUzoKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBjYXNlIEVidFNhbXBsZXIyRDoKKyAgICAgICAgY2FzZSBF
YnRTYW1wbGVyM0Q6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6CisgICAgICAgIGNhc2Ug
RWJ0U2FtcGxlckV4dGVybmFsT0VTOgorICAgICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbDJE
WTJZRVhUOgorICAgICAgICBjYXNlIEVidFNhbXBsZXIyRFJlY3Q6CisgICAgICAgIGNhc2UgRWJ0
U2FtcGxlcjJEQXJyYXk6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEU2hhZG93OgorICAgICAg
ICBjYXNlIEVidFNhbXBsZXJDdWJlU2hhZG93OgorICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFy
cmF5U2hhZG93OgorICAgICAgICBjYXNlIEVidFNhbXBsZXIyRE1TOgorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNzZXJ0KCFJc1NhbXBs
ZXIodHlwZSkpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworaW5saW5lIGJvb2wg
SXNTYW1wbGVyMkRNUyhUQmFzaWNUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAg
IHsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRNUzoKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxl
cjJETVM6CisgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyRE1TOgorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCitpbmxpbmUgYm9vbCBJc0Zsb2F0SW1hZ2UoVEJhc2ljVHlwZSB0eXBlKQoreworICAg
IHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgRWJ0SW1hZ2UyRDoKKyAgICAgICAg
Y2FzZSBFYnRJbWFnZTNEOgorICAgICAgICBjYXNlIEVidEltYWdlMkRBcnJheToKKyAgICAgICAg
Y2FzZSBFYnRJbWFnZUN1YmU6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30K
KworaW5saW5lIGJvb2wgSXNJbnRlZ2VySW1hZ2UoVEJhc2ljVHlwZSB0eXBlKQoreworCisgICAg
c3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBFYnRJSW1hZ2UyRDoKKyAgICAgICAg
Y2FzZSBFYnRJSW1hZ2UzRDoKKyAgICAgICAgY2FzZSBFYnRJSW1hZ2UyREFycmF5OgorICAgICAg
ICBjYXNlIEVidElJbWFnZUN1YmU6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsK
K30KKworaW5saW5lIGJvb2wgSXNVbnNpZ25lZEltYWdlKFRCYXNpY1R5cGUgdHlwZSkKK3sKKwor
ICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgRWJ0VUltYWdlMkQ6CisgICAg
ICAgIGNhc2UgRWJ0VUltYWdlM0Q6CisgICAgICAgIGNhc2UgRWJ0VUltYWdlMkRBcnJheToKKyAg
ICAgICAgY2FzZSBFYnRVSW1hZ2VDdWJlOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKICAgICB9CiAKICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMzAsMjcgKzMwNSwzMSBAQCBpbmxpbmUgYm9vbCBJc1NhbXBsZXIyRChUQmFzaWNU
eXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKQogICAgIHsKLSAgICAgIGNhc2UgRWJ0U2Ft
cGxlcjJEOgotICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEOgotICAgICAgY2FzZSBFYnRVU2FtcGxl
cjJEOgotICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheToKLSAgICAgIGNhc2UgRWJ0SVNhbXBs
ZXIyREFycmF5OgotICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEQXJyYXk6Ci0gICAgICBjYXNlIEVi
dFNhbXBsZXIyRFJlY3Q6Ci0gICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbE9FUzoKLSAgICAg
IGNhc2UgRWJ0U2FtcGxlcjJEU2hhZG93OgotICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheVNo
YWRvdzoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBjYXNlIEVidFNhbXBsZXIzRDoKLSAg
ICAgIGNhc2UgRWJ0SVNhbXBsZXIzRDoKLSAgICAgIGNhc2UgRWJ0VVNhbXBsZXIzRDoKLSAgICAg
IGNhc2UgRWJ0SVNhbXBsZXJDdWJlOgotICAgICAgY2FzZSBFYnRVU2FtcGxlckN1YmU6Ci0gICAg
ICBjYXNlIEVidFNhbXBsZXJDdWJlOgotICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzoK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgYXNzZXJ0KCFJ
c1NhbXBsZXIodHlwZSkpOworICAgICAgICBjYXNlIEVidFNhbXBsZXIyRDoKKyAgICAgICAgY2Fz
ZSBFYnRJU2FtcGxlcjJEOgorICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkQ6CisgICAgICAgIGNh
c2UgRWJ0U2FtcGxlcjJEQXJyYXk6CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyREFycmF5Ogor
ICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkRBcnJheToKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVy
MkRSZWN0OgorICAgICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbE9FUzoKKyAgICAgICAgY2Fz
ZSBFYnRTYW1wbGVyRXh0ZXJuYWwyRFkyWUVYVDoKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRT
aGFkb3c6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXlTaGFkb3c6CisgICAgICAgIGNh
c2UgRWJ0U2FtcGxlcjJETVM6CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyRE1TOgorICAgICAg
ICBjYXNlIEVidFVTYW1wbGVyMkRNUzoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBjYXNlIEVidFNhbXBsZXIzRDoKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjNEOgorICAgICAg
ICBjYXNlIEVidFVTYW1wbGVyM0Q6CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXJDdWJlOgorICAg
ICAgICBjYXNlIEVidFVTYW1wbGVyQ3ViZToKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZToK
KyAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzoKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydCghSXNTYW1wbGVyKHR5
cGUpKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjAsMjcgKzMzOSwzMSBAQCBp
bmxpbmUgYm9vbCBJc1NhbXBsZXJDdWJlKFRCYXNpY1R5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2gg
KHR5cGUpCiAgICAgewotICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZToKLSAgICAgIGNhc2UgRWJ0
SVNhbXBsZXJDdWJlOgotICAgICAgY2FzZSBFYnRVU2FtcGxlckN1YmU6Ci0gICAgICBjYXNlIEVi
dFNhbXBsZXJDdWJlU2hhZG93OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGNhc2UgRWJ0
U2FtcGxlcjJEOgotICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6Ci0gICAgICBjYXNlIEVidFNhbXBs
ZXJFeHRlcm5hbE9FUzoKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEUmVjdDoKLSAgICAgIGNhc2Ug
RWJ0U2FtcGxlcjJEQXJyYXk6Ci0gICAgICBjYXNlIEVidElTYW1wbGVyMkQ6Ci0gICAgICBjYXNl
IEVidElTYW1wbGVyM0Q6Ci0gICAgICBjYXNlIEVidElTYW1wbGVyMkRBcnJheToKLSAgICAgIGNh
c2UgRWJ0VVNhbXBsZXIyRDoKLSAgICAgIGNhc2UgRWJ0VVNhbXBsZXIzRDoKLSAgICAgIGNhc2Ug
RWJ0VVNhbXBsZXIyREFycmF5OgotICAgICAgY2FzZSBFYnRTYW1wbGVyMkRTaGFkb3c6Ci0gICAg
ICBjYXNlIEVidFNhbXBsZXIyREFycmF5U2hhZG93OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICBkZWZhdWx0OgotICAgICAgICBhc3NlcnQoIUlzU2FtcGxlcih0eXBlKSk7CisgICAgICAg
IGNhc2UgRWJ0U2FtcGxlckN1YmU6CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXJDdWJlOgorICAg
ICAgICBjYXNlIEVidFVTYW1wbGVyQ3ViZToKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNo
YWRvdzoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBjYXNlIEVidFNhbXBsZXIy
RDoKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlckV4
dGVybmFsT0VTOgorICAgICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbDJEWTJZRVhUOgorICAg
ICAgICBjYXNlIEVidFNhbXBsZXIyRFJlY3Q6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJy
YXk6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJETVM6CisgICAgICAgIGNhc2UgRWJ0SVNhbXBs
ZXIyRDoKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjNEOgorICAgICAgICBjYXNlIEVidElTYW1w
bGVyMkRBcnJheToKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJETVM6CisgICAgICAgIGNhc2Ug
RWJ0VVNhbXBsZXIyRDoKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjNEOgorICAgICAgICBjYXNl
IEVidFVTYW1wbGVyMkRBcnJheToKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJETVM6CisgICAg
ICAgIGNhc2UgRWJ0U2FtcGxlcjJEU2hhZG93OgorICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFy
cmF5U2hhZG93OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgYXNzZXJ0KCFJc1NhbXBsZXIodHlwZSkpOwogICAgIH0KIAogICAgIHJldHVy
biBmYWxzZTsKQEAgLTE5MCwyNyArMzczLDMxIEBAIGlubGluZSBib29sIElzU2FtcGxlcjNEKFRC
YXNpY1R5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgewotICAgICAgY2FzZSBF
YnRTYW1wbGVyM0Q6Ci0gICAgICBjYXNlIEVidElTYW1wbGVyM0Q6Ci0gICAgICBjYXNlIEVidFVT
YW1wbGVyM0Q6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6
Ci0gICAgICBjYXNlIEVidFNhbXBsZXJDdWJlOgotICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJu
YWxPRVM6Ci0gICAgICBjYXNlIEVidFNhbXBsZXIyRFJlY3Q6Ci0gICAgICBjYXNlIEVidFNhbXBs
ZXIyREFycmF5OgotICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEOgotICAgICAgY2FzZSBFYnRJU2Ft
cGxlckN1YmU6Ci0gICAgICBjYXNlIEVidElTYW1wbGVyMkRBcnJheToKLSAgICAgIGNhc2UgRWJ0
VVNhbXBsZXIyRDoKLSAgICAgIGNhc2UgRWJ0VVNhbXBsZXJDdWJlOgotICAgICAgY2FzZSBFYnRV
U2FtcGxlcjJEQXJyYXk6Ci0gICAgICBjYXNlIEVidFNhbXBsZXIyRFNoYWRvdzoKLSAgICAgIGNh
c2UgRWJ0U2FtcGxlckN1YmVTaGFkb3c6Ci0gICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5U2hh
ZG93OgotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBhc3Nl
cnQoIUlzU2FtcGxlcih0eXBlKSk7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjNEOgorICAgICAg
ICBjYXNlIEVidElTYW1wbGVyM0Q6CisgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIzRDoKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBjYXNlIEVidFNhbXBsZXIyRDoKKyAgICAgICAg
Y2FzZSBFYnRTYW1wbGVyQ3ViZToKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6
CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlckV4dGVybmFsMkRZMllFWFQ6CisgICAgICAgIGNhc2Ug
RWJ0U2FtcGxlcjJEUmVjdDoKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheToKKyAgICAg
ICAgY2FzZSBFYnRTYW1wbGVyMkRNUzoKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEOgorICAg
ICAgICBjYXNlIEVidElTYW1wbGVyQ3ViZToKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEQXJy
YXk6CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyRE1TOgorICAgICAgICBjYXNlIEVidFVTYW1w
bGVyMkQ6CisgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXJDdWJlOgorICAgICAgICBjYXNlIEVidFVT
YW1wbGVyMkRBcnJheToKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJETVM6CisgICAgICAgIGNh
c2UgRWJ0U2FtcGxlcjJEU2hhZG93OgorICAgICAgICBjYXNlIEVidFNhbXBsZXJDdWJlU2hhZG93
OgorICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5U2hhZG93OgorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNzZXJ0KCFJc1NhbXBs
ZXIodHlwZSkpOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTIyMCwyNyArNDA3LDMx
IEBAIGlubGluZSBib29sIElzU2FtcGxlckFycmF5KFRCYXNpY1R5cGUgdHlwZSkKIHsKICAgICBz
d2l0Y2ggKHR5cGUpCiAgICAgewotICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheToKLSAgICAg
IGNhc2UgRWJ0SVNhbXBsZXIyREFycmF5OgotICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEQXJyYXk6
Ci0gICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5U2hhZG93OgotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEOgotICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEOgot
ICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEOgotICAgICAgY2FzZSBFYnRTYW1wbGVyMkRSZWN0Ogot
ICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6Ci0gICAgICBjYXNlIEVidFNhbXBsZXIz
RDoKLSAgICAgIGNhc2UgRWJ0SVNhbXBsZXIzRDoKLSAgICAgIGNhc2UgRWJ0VVNhbXBsZXIzRDoK
LSAgICAgIGNhc2UgRWJ0SVNhbXBsZXJDdWJlOgotICAgICAgY2FzZSBFYnRVU2FtcGxlckN1YmU6
Ci0gICAgICBjYXNlIEVidFNhbXBsZXJDdWJlOgotICAgICAgY2FzZSBFYnRTYW1wbGVyMkRTaGFk
b3c6Ci0gICAgICBjYXNlIEVidFNhbXBsZXJDdWJlU2hhZG93OgotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBhc3NlcnQoIUlzU2FtcGxlcih0eXBlKSk7Cisg
ICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIy
REFycmF5OgorICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkRBcnJheToKKyAgICAgICAgY2FzZSBF
YnRTYW1wbGVyMkRBcnJheVNoYWRvdzoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBjYXNlIEVidFNhbXBsZXIyRDoKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEOgorICAgICAg
ICBjYXNlIEVidFVTYW1wbGVyMkQ6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEUmVjdDoKKyAg
ICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxl
ckV4dGVybmFsMkRZMllFWFQ6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjNEOgorICAgICAgICBj
YXNlIEVidElTYW1wbGVyM0Q6CisgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIzRDoKKyAgICAgICAg
Y2FzZSBFYnRJU2FtcGxlckN1YmU6CisgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXJDdWJlOgorICAg
ICAgICBjYXNlIEVidFNhbXBsZXJDdWJlOgorICAgICAgICBjYXNlIEVidFNhbXBsZXIyRFNoYWRv
dzoKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzoKKyAgICAgICAgY2FzZSBFYnRT
YW1wbGVyMkRNUzoKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJETVM6CisgICAgICAgIGNhc2Ug
RWJ0VVNhbXBsZXIyRE1TOgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgYXNzZXJ0KCFJc1NhbXBsZXIodHlwZSkpOwogICAgIH0KIAogICAg
IHJldHVybiBmYWxzZTsKQEAgLTI1MCwyNyArNDQxLDMxIEBAIGlubGluZSBib29sIElzU2hhZG93
U2FtcGxlcihUQmFzaWNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKQogICAgIHsKLSAg
ICAgIGNhc2UgRWJ0U2FtcGxlcjJEU2hhZG93OgotICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNo
YWRvdzoKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXlTaGFkb3c6Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEOgotICAgICAgY2FzZSBFYnRJU2FtcGxl
cjNEOgotICAgICAgY2FzZSBFYnRJU2FtcGxlckN1YmU6Ci0gICAgICBjYXNlIEVidElTYW1wbGVy
MkRBcnJheToKLSAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyRDoKLSAgICAgIGNhc2UgRWJ0VVNhbXBs
ZXIzRDoKLSAgICAgIGNhc2UgRWJ0VVNhbXBsZXJDdWJlOgotICAgICAgY2FzZSBFYnRVU2FtcGxl
cjJEQXJyYXk6Ci0gICAgICBjYXNlIEVidFNhbXBsZXIyRDoKLSAgICAgIGNhc2UgRWJ0U2FtcGxl
cjNEOgotICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZToKLSAgICAgIGNhc2UgRWJ0U2FtcGxlckV4
dGVybmFsT0VTOgotICAgICAgY2FzZSBFYnRTYW1wbGVyMkRSZWN0OgotICAgICAgY2FzZSBFYnRT
YW1wbGVyMkRBcnJheToKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgYXNzZXJ0KCFJc1NhbXBsZXIodHlwZSkpOworICAgICAgICBjYXNlIEVidFNhbXBsZXIy
RFNoYWRvdzoKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzoKKyAgICAgICAgY2Fz
ZSBFYnRTYW1wbGVyMkRBcnJheVNoYWRvdzoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBjYXNlIEVidElTYW1wbGVyMkQ6CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIzRDoKKyAg
ICAgICAgY2FzZSBFYnRJU2FtcGxlckN1YmU6CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyREFy
cmF5OgorICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRNUzoKKyAgICAgICAgY2FzZSBFYnRVU2Ft
cGxlcjJEOgorICAgICAgICBjYXNlIEVidFVTYW1wbGVyM0Q6CisgICAgICAgIGNhc2UgRWJ0VVNh
bXBsZXJDdWJlOgorICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkRBcnJheToKKyAgICAgICAgY2Fz
ZSBFYnRVU2FtcGxlcjJETVM6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEOgorICAgICAgICBj
YXNlIEVidFNhbXBsZXIzRDoKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZToKKyAgICAgICAg
Y2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlckV4dGVy
bmFsMkRZMllFWFQ6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEUmVjdDoKKyAgICAgICAgY2Fz
ZSBFYnRTYW1wbGVyMkRBcnJheToKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRNUzoKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2Vy
dCghSXNTYW1wbGVyKHR5cGUpKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yODMs
NyArNDc4LDcgQEAgaW5saW5lIGJvb2wgSXNJbnRlZ2VyKFRCYXNpY1R5cGUgdHlwZSkKIAogaW5s
aW5lIGJvb2wgU3VwcG9ydHNQcmVjaXNpb24oVEJhc2ljVHlwZSB0eXBlKQogewotICAgIHJldHVy
biB0eXBlID09IEVidEZsb2F0IHx8IHR5cGUgPT0gRWJ0SW50IHx8IHR5cGUgPT0gRWJ0VUludCB8
fCBJc1NhbXBsZXIodHlwZSk7CisgICAgcmV0dXJuIHR5cGUgPT0gRWJ0RmxvYXQgfHwgdHlwZSA9
PSBFYnRJbnQgfHwgdHlwZSA9PSBFYnRVSW50IHx8IElzT3BhcXVlVHlwZSh0eXBlKTsKIH0KIAog
Ly8KQEAgLTMzNiw2ICs1MzEsOCBAQCBlbnVtIFRRdWFsaWZpZXIKICAgICBFdnFTZWNvbmRhcnlG
cmFnQ29sb3JFWFQsICAvLyBFWFRfYmxlbmRfZnVuY19leHRlbmRlZAogICAgIEV2cVNlY29uZGFy
eUZyYWdEYXRhRVhULCAgIC8vIEVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkCiAKKyAgICBFdnFWaWV3
SURPVlIsICAvLyBPVlJfbXVsdGl2aWV3CisKICAgICAvLyBidWlsdC1pbnMgd3JpdHRlbiBieSB0
aGUgc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoIGV4dGVuc2lvbihzKQogICAgIEV2cUxhc3RGcmFn
Q29sb3IsCiAgICAgRXZxTGFzdEZyYWdEYXRhLApAQCAtMzUyLDYgKzU0OSw3IEBAIGVudW0gVFF1
YWxpZmllcgogICAgIEV2cUNlbnRyb2lkSW4sICAvLyBJbXBsaWVzIHNtb290aAogCiAgICAgLy8g
R0xTTCBFUyAzLjEgY29tcHV0ZSBzaGFkZXIgc3BlY2lhbCB2YXJpYWJsZXMKKyAgICBFdnFTaGFy
ZWQsCiAgICAgRXZxQ29tcHV0ZUluLAogICAgIEV2cU51bVdvcmtHcm91cHMsCiAgICAgRXZxV29y
a0dyb3VwU2l6ZSwKQEAgLTM2MCw2ICs1NTgsMTMgQEAgZW51bSBUUXVhbGlmaWVyCiAgICAgRXZx
R2xvYmFsSW52b2NhdGlvbklELAogICAgIEV2cUxvY2FsSW52b2NhdGlvbkluZGV4LAogCisgICAg
Ly8gR0xTTCBFUyAzLjEgbWVtb3J5IHF1YWxpZmllcnMKKyAgICBFdnFSZWFkT25seSwKKyAgICBF
dnFXcml0ZU9ubHksCisgICAgRXZxQ29oZXJlbnQsCisgICAgRXZxUmVzdHJpY3QsCisgICAgRXZx
Vm9sYXRpbGUsCisKICAgICAvLyBlbmQgb2YgbGlzdAogICAgIEV2cUxhc3QKIH07CkBAIC0zNjks
NiArNTc0LDI0IEBAIGlubGluZSBib29sIElzUXVhbGlmaWVyVW5zcGVjaWZpZWQoVFF1YWxpZmll
ciBxdWFsaWZpZXIpCiAgICAgcmV0dXJuIChxdWFsaWZpZXIgPT0gRXZxVGVtcG9yYXJ5IHx8IHF1
YWxpZmllciA9PSBFdnFHbG9iYWwpOwogfQogCitlbnVtIFRMYXlvdXRJbWFnZUludGVybmFsRm9y
bWF0Cit7CisgICAgRWlpZlVuc3BlY2lmaWVkLAorICAgIEVpaWZSR0JBMzJGLAorICAgIEVpaWZS
R0JBMTZGLAorICAgIEVpaWZSMzJGLAorICAgIEVpaWZSR0JBMzJVSSwKKyAgICBFaWlmUkdCQTE2
VUksCisgICAgRWlpZlJHQkE4VUksCisgICAgRWlpZlIzMlVJLAorICAgIEVpaWZSR0JBMzJJLAor
ICAgIEVpaWZSR0JBMTZJLAorICAgIEVpaWZSR0JBOEksCisgICAgRWlpZlIzMkksCisgICAgRWlp
ZlJHQkE4LAorICAgIEVpaWZSR0JBOF9TTk9STQorfTsKKwogZW51bSBUTGF5b3V0TWF0cml4UGFj
a2luZwogewogICAgIEVtcFVuc3BlY2lmaWVkLApAQCAtMzg0LDYgKzYwNywxNCBAQCBlbnVtIFRM
YXlvdXRCbG9ja1N0b3JhZ2UKICAgICBFYnNTdGQxNDAKIH07CiAKK2VudW0gVFl1dkNzY1N0YW5k
YXJkRVhUCit7CisgICAgRXljc1VuZGVmaW5lZCwKKyAgICBFeWNzSXR1NjAxLAorICAgIEV5Y3NJ
dHU2MDFGdWxsUmFuZ2UsCisgICAgRXljc0l0dTcwOQorfTsKKwogc3RydWN0IFRMYXlvdXRRdWFs
aWZpZXIKIHsKICAgICBpbnQgbG9jYXRpb247CkBAIC0zOTQsMzQgKzYyNSw1NSBAQCBzdHJ1Y3Qg
VExheW91dFF1YWxpZmllcgogICAgIC8vIENvbXB1dGUgc2hhZGVyIGxheW91dCBxdWFsaWZpZXJz
LgogICAgIHNoOjpXb3JrR3JvdXBTaXplIGxvY2FsU2l6ZTsKIAorICAgIGludCBiaW5kaW5nOwor
CisgICAgLy8gSW1hZ2UgZm9ybWF0IGxheW91dCBxdWFsaWZpZXIKKyAgICBUTGF5b3V0SW1hZ2VJ
bnRlcm5hbEZvcm1hdCBpbWFnZUludGVybmFsRm9ybWF0OworCisgICAgLy8gT1ZSX211bHRpdmll
dyBudW1fdmlld3MuCisgICAgaW50IG51bVZpZXdzOworCisgICAgLy8gRVhUX1lVVl90YXJnZXQg
eXV2IGxheW91dCBxdWFsaWZpZXIuCisgICAgYm9vbCB5dXY7CisKICAgICBzdGF0aWMgVExheW91
dFF1YWxpZmllciBjcmVhdGUoKQogICAgIHsKICAgICAgICAgVExheW91dFF1YWxpZmllciBsYXlv
dXRRdWFsaWZpZXI7CiAKLSAgICAgICAgbGF5b3V0UXVhbGlmaWVyLmxvY2F0aW9uID0gLTE7Cisg
ICAgICAgIGxheW91dFF1YWxpZmllci5sb2NhdGlvbiAgICAgICAgICAgPSAtMTsKICAgICAgICAg
bGF5b3V0UXVhbGlmaWVyLmxvY2F0aW9uc1NwZWNpZmllZCA9IDA7Ci0gICAgICAgIGxheW91dFF1
YWxpZmllci5tYXRyaXhQYWNraW5nID0gRW1wVW5zcGVjaWZpZWQ7Ci0gICAgICAgIGxheW91dFF1
YWxpZmllci5ibG9ja1N0b3JhZ2UgPSBFYnNVbnNwZWNpZmllZDsKKyAgICAgICAgbGF5b3V0UXVh
bGlmaWVyLm1hdHJpeFBhY2tpbmcgICAgICA9IEVtcFVuc3BlY2lmaWVkOworICAgICAgICBsYXlv
dXRRdWFsaWZpZXIuYmxvY2tTdG9yYWdlICAgICAgID0gRWJzVW5zcGVjaWZpZWQ7CiAKICAgICAg
ICAgbGF5b3V0UXVhbGlmaWVyLmxvY2FsU2l6ZS5maWxsKC0xKTsKKyAgICAgICAgbGF5b3V0UXVh
bGlmaWVyLmJpbmRpbmcgID0gLTE7CisgICAgICAgIGxheW91dFF1YWxpZmllci5udW1WaWV3cyA9
IC0xOworICAgICAgICBsYXlvdXRRdWFsaWZpZXIueXV2ICAgICAgPSBmYWxzZTsKIAorICAgICAg
ICBsYXlvdXRRdWFsaWZpZXIuaW1hZ2VJbnRlcm5hbEZvcm1hdCA9IEVpaWZVbnNwZWNpZmllZDsK
ICAgICAgICAgcmV0dXJuIGxheW91dFF1YWxpZmllcjsKICAgICB9CiAKICAgICBib29sIGlzRW1w
dHkoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGxvY2F0aW9uID09IC0xICYmIG1hdHJp
eFBhY2tpbmcgPT0gRW1wVW5zcGVjaWZpZWQgJiYKLSAgICAgICAgICAgICAgIGJsb2NrU3RvcmFn
ZSA9PSBFYnNVbnNwZWNpZmllZCAmJiAhbG9jYWxTaXplLmlzQW55VmFsdWVTZXQoKTsKKyAgICAg
ICAgcmV0dXJuIGxvY2F0aW9uID09IC0xICYmIGJpbmRpbmcgPT0gLTEgJiYgbnVtVmlld3MgPT0g
LTEgJiYgeXV2ID09IGZhbHNlICYmCisgICAgICAgICAgICAgICBtYXRyaXhQYWNraW5nID09IEVt
cFVuc3BlY2lmaWVkICYmIGJsb2NrU3RvcmFnZSA9PSBFYnNVbnNwZWNpZmllZCAmJgorICAgICAg
ICAgICAgICAgIWxvY2FsU2l6ZS5pc0FueVZhbHVlU2V0KCkgJiYgaW1hZ2VJbnRlcm5hbEZvcm1h
dCA9PSBFaWlmVW5zcGVjaWZpZWQ7CiAgICAgfQogCiAgICAgYm9vbCBpc0NvbWJpbmF0aW9uVmFs
aWQoKSBjb25zdAogICAgIHsKICAgICAgICAgYm9vbCB3b3JrU2l6ZVNwZWNpZmllZCA9IGxvY2Fs
U2l6ZS5pc0FueVZhbHVlU2V0KCk7CisgICAgICAgIGJvb2wgbnVtVmlld3NTZXQgICAgICAgPSAo
bnVtVmlld3MgIT0gLTEpOwogICAgICAgICBib29sIG90aGVyTGF5b3V0UXVhbGlmaWVyc1NwZWNp
ZmllZCA9Ci0gICAgICAgICAgICAobG9jYXRpb24gIT0gLTEgfHwgbWF0cml4UGFja2luZyAhPSBF
bXBVbnNwZWNpZmllZCB8fCBibG9ja1N0b3JhZ2UgIT0gRWJzVW5zcGVjaWZpZWQpOwotCi0gICAg
ICAgIC8vIHdlIGNhbiBoYXZlIGVpdGhlciB0aGUgd29yayBncm91cCBzaXplIHNwZWNpZmllZCwg
b3IgdGhlIG90aGVyIGxheW91dCBxdWFsaWZpZXJzCi0gICAgICAgIHJldHVybiAhKHdvcmtTaXpl
U3BlY2lmaWVkICYmIG90aGVyTGF5b3V0UXVhbGlmaWVyc1NwZWNpZmllZCk7CisgICAgICAgICAg
ICAobG9jYXRpb24gIT0gLTEgfHwgYmluZGluZyAhPSAtMSB8fCBtYXRyaXhQYWNraW5nICE9IEVt
cFVuc3BlY2lmaWVkIHx8CisgICAgICAgICAgICAgYmxvY2tTdG9yYWdlICE9IEVic1Vuc3BlY2lm
aWVkIHx8IGltYWdlSW50ZXJuYWxGb3JtYXQgIT0gRWlpZlVuc3BlY2lmaWVkKTsKKworICAgICAg
ICAvLyB3ZSBjYW4gaGF2ZSBlaXRoZXIgdGhlIHdvcmsgZ3JvdXAgc2l6ZSBzcGVjaWZpZWQsIG9y
IG51bWJlciBvZiB2aWV3cywKKyAgICAgICAgLy8gb3IgeXV2IGxheW91dCBxdWFsaWZpZXIsIG9y
IHRoZSBvdGhlciBsYXlvdXQgcXVhbGlmaWVycy4KKyAgICAgICAgcmV0dXJuICh3b3JrU2l6ZVNw
ZWNpZmllZCA/IDEgOiAwKSArIChudW1WaWV3c1NldCA/IDEgOiAwKSArICh5dXYgPyAxIDogMCkg
KworICAgICAgICAgICAgICAgICAgIChvdGhlckxheW91dFF1YWxpZmllcnNTcGVjaWZpZWQgPyAx
IDogMCkgPD0KKyAgICAgICAgICAgICAgIDE7CiAgICAgfQogCiAgICAgYm9vbCBpc0xvY2FsU2l6
ZUVxdWFsKGNvbnN0IHNoOjpXb3JrR3JvdXBTaXplICZsb2NhbFNpemVJbikgY29uc3QKQEAgLTQz
MCw2ICs2ODIsMzcgQEAgc3RydWN0IFRMYXlvdXRRdWFsaWZpZXIKICAgICB9CiB9OwogCitzdHJ1
Y3QgVE1lbW9yeVF1YWxpZmllcgoreworICAgIC8vIEdMU0wgRVMgMy4xMCBSZXZpc2lvbiA0LCA0
LjkgTWVtb3J5IEFjY2VzcyBRdWFsaWZpZXJzCisgICAgLy8gQW4gaW1hZ2UgY2FuIGJlIHF1YWxp
ZmllZCBhcyBib3RoIHJlYWRvbmx5IGFuZCB3cml0ZW9ubHkuIEl0IHN0aWxsIGNhbiBiZSBjYW4g
YmUgdXNlZCB3aXRoCisgICAgLy8gaW1hZ2VTaXplKCkuCisgICAgYm9vbCByZWFkb25seTsKKyAg
ICBib29sIHdyaXRlb25seTsKKyAgICBib29sIGNvaGVyZW50OworCisgICAgLy8gcmVzdHJpY3Qg
YW5kIHZvbGF0aWxlIGFyZSByZXNlcnZlZCBrZXl3b3JkcyBpbiBDL0MrKworICAgIGJvb2wgcmVz
dHJpY3RRdWFsaWZpZXI7CisgICAgYm9vbCB2b2xhdGlsZVF1YWxpZmllcjsKKyAgICBzdGF0aWMg
VE1lbW9yeVF1YWxpZmllciBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgVE1lbW9yeVF1YWxpZmll
ciBtZW1vcnlRdWFsaWZpZXI7CisKKyAgICAgICAgbWVtb3J5UXVhbGlmaWVyLnJlYWRvbmx5ICAg
ICAgICAgID0gZmFsc2U7CisgICAgICAgIG1lbW9yeVF1YWxpZmllci53cml0ZW9ubHkgICAgICAg
ICA9IGZhbHNlOworICAgICAgICBtZW1vcnlRdWFsaWZpZXIuY29oZXJlbnQgICAgICAgICAgPSBm
YWxzZTsKKyAgICAgICAgbWVtb3J5UXVhbGlmaWVyLnJlc3RyaWN0UXVhbGlmaWVyID0gZmFsc2U7
CisgICAgICAgIG1lbW9yeVF1YWxpZmllci52b2xhdGlsZVF1YWxpZmllciA9IGZhbHNlOworCisg
ICAgICAgIHJldHVybiBtZW1vcnlRdWFsaWZpZXI7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5
KCkKKyAgICB7CisgICAgICAgIHJldHVybiAhcmVhZG9ubHkgJiYgIXdyaXRlb25seSAmJiAhY29o
ZXJlbnQgJiYgIXJlc3RyaWN0UXVhbGlmaWVyICYmICF2b2xhdGlsZVF1YWxpZmllcjsKKyAgICB9
Cit9OworCiBpbmxpbmUgY29uc3QgY2hhciAqZ2V0V29ya0dyb3VwU2l6ZVN0cmluZyhzaXplX3Qg
ZGltZW5zaW9uKQogewogICAgIHN3aXRjaCAoZGltZW5zaW9uKQpAQCAtNDQ5LDcgKzczMiw3IEBA
IGlubGluZSBjb25zdCBjaGFyICpnZXRXb3JrR3JvdXBTaXplU3RyaW5nKHNpemVfdCBkaW1lbnNp
b24pCiAvLwogLy8gVGhpcyBpcyBqdXN0IGZvciBkZWJ1ZyBwcmludCBvdXQsIGNhcnJpZWQgYWxv
bmcgd2l0aCB0aGUgZGVmaW5pdGlvbnMgYWJvdmUuCiAvLwotaW5saW5lIGNvbnN0IGNoYXIqIGdl
dFF1YWxpZmllclN0cmluZyhUUXVhbGlmaWVyIHEpCitpbmxpbmUgY29uc3QgY2hhciAqZ2V0UXVh
bGlmaWVyU3RyaW5nKFRRdWFsaWZpZXIgcSkKIHsKICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAg
ICAgc3dpdGNoKHEpCkBAIC00ODIsNiArNzY1LDcgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGdldFF1
YWxpZmllclN0cmluZyhUUXVhbGlmaWVyIHEpCiAgICAgY2FzZSBFdnFGcmFnRGVwdGg6ICAgICAg
ICAgICAgICByZXR1cm4gIkZyYWdEZXB0aCI7CiAgICAgY2FzZSBFdnFTZWNvbmRhcnlGcmFnQ29s
b3JFWFQ6ICByZXR1cm4gIlNlY29uZGFyeUZyYWdDb2xvckVYVCI7CiAgICAgY2FzZSBFdnFTZWNv
bmRhcnlGcmFnRGF0YUVYVDogICByZXR1cm4gIlNlY29uZGFyeUZyYWdEYXRhRVhUIjsKKyAgICBj
YXNlIEV2cVZpZXdJRE9WUjogICAgICAgICAgICAgIHJldHVybiAiVmlld0lET1ZSIjsKICAgICBj
YXNlIEV2cUxhc3RGcmFnQ29sb3I6ICAgICAgICAgIHJldHVybiAiTGFzdEZyYWdDb2xvciI7CiAg
ICAgY2FzZSBFdnFMYXN0RnJhZ0RhdGE6ICAgICAgICAgICByZXR1cm4gIkxhc3RGcmFnRGF0YSI7
CiAgICAgY2FzZSBFdnFTbW9vdGhPdXQ6ICAgICAgICAgICAgICByZXR1cm4gInNtb290aCBvdXQi
OwpAQCAtNDkzLDYgKzc3Nyw3IEBAIGlubGluZSBjb25zdCBjaGFyKiBnZXRRdWFsaWZpZXJTdHJp
bmcoVFF1YWxpZmllciBxKQogICAgIGNhc2UgRXZxQ2VudHJvaWQ6ICAgICAgICAgICAgICAgcmV0
dXJuICJjZW50cm9pZCI7CiAgICAgY2FzZSBFdnFGbGF0OiAgICAgICAgICAgICAgICAgICByZXR1
cm4gImZsYXQiOwogICAgIGNhc2UgRXZxU21vb3RoOiAgICAgICAgICAgICAgICAgcmV0dXJuICJz
bW9vdGgiOworICAgIGNhc2UgRXZxU2hhcmVkOiAgICAgICAgICAgICAgICAgcmV0dXJuICJzaGFy
ZWQiOwogICAgIGNhc2UgRXZxQ29tcHV0ZUluOiAgICAgICAgICAgICAgcmV0dXJuICJpbiI7CiAg
ICAgY2FzZSBFdnFOdW1Xb3JrR3JvdXBzOiAgICAgICAgICByZXR1cm4gIk51bVdvcmtHcm91cHMi
OwogICAgIGNhc2UgRXZxV29ya0dyb3VwU2l6ZTogICAgICAgICAgcmV0dXJuICJXb3JrR3JvdXBT
aXplIjsKQEAgLTUwMCwzMiArNzg1LDExMCBAQCBpbmxpbmUgY29uc3QgY2hhciogZ2V0UXVhbGlm
aWVyU3RyaW5nKFRRdWFsaWZpZXIgcSkKICAgICBjYXNlIEV2cUxvY2FsSW52b2NhdGlvbklEOiAg
ICAgIHJldHVybiAiTG9jYWxJbnZvY2F0aW9uSUQiOwogICAgIGNhc2UgRXZxR2xvYmFsSW52b2Nh
dGlvbklEOiAgICAgcmV0dXJuICJHbG9iYWxJbnZvY2F0aW9uSUQiOwogICAgIGNhc2UgRXZxTG9j
YWxJbnZvY2F0aW9uSW5kZXg6ICAgcmV0dXJuICJMb2NhbEludm9jYXRpb25JbmRleCI7CisgICAg
Y2FzZSBFdnFSZWFkT25seTogICAgICAgICAgICAgICByZXR1cm4gInJlYWRvbmx5IjsKKyAgICBj
YXNlIEV2cVdyaXRlT25seTogICAgICAgICAgICAgIHJldHVybiAid3JpdGVvbmx5IjsKICAgICBk
ZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgICAgIHJldHVybiAidW5rbm93biBxdWFsaWZpZXIi
OwogICAgIH0KICAgICAvLyBjbGFuZy1mb3JtYXQgb24KIH0KIAotaW5saW5lIGNvbnN0IGNoYXIq
IGdldE1hdHJpeFBhY2tpbmdTdHJpbmcoVExheW91dE1hdHJpeFBhY2tpbmcgbXBxKQoraW5saW5l
IGNvbnN0IGNoYXIgKmdldE1hdHJpeFBhY2tpbmdTdHJpbmcoVExheW91dE1hdHJpeFBhY2tpbmcg
bXBxKQogewogICAgIHN3aXRjaCAobXBxKQogICAgIHsKLSAgICBjYXNlIEVtcFVuc3BlY2lmaWVk
OiAgICByZXR1cm4gIm1wX3Vuc3BlY2lmaWVkIjsKLSAgICBjYXNlIEVtcFJvd01ham9yOiAgICAg
ICByZXR1cm4gInJvd19tYWpvciI7Ci0gICAgY2FzZSBFbXBDb2x1bW5NYWpvcjogICAgcmV0dXJu
ICJjb2x1bW5fbWFqb3IiOwotICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7IHJldHVybiAidW5r
bm93biBtYXRyaXggcGFja2luZyI7CisgICAgICAgIGNhc2UgRW1wVW5zcGVjaWZpZWQ6CisgICAg
ICAgICAgICByZXR1cm4gIm1wX3Vuc3BlY2lmaWVkIjsKKyAgICAgICAgY2FzZSBFbXBSb3dNYWpv
cjoKKyAgICAgICAgICAgIHJldHVybiAicm93X21ham9yIjsKKyAgICAgICAgY2FzZSBFbXBDb2x1
bW5NYWpvcjoKKyAgICAgICAgICAgIHJldHVybiAiY29sdW1uX21ham9yIjsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gInVu
a25vd24gbWF0cml4IHBhY2tpbmciOwogICAgIH0KIH0KIAotaW5saW5lIGNvbnN0IGNoYXIqIGdl
dEJsb2NrU3RvcmFnZVN0cmluZyhUTGF5b3V0QmxvY2tTdG9yYWdlIGJzcSkKK2lubGluZSBjb25z
dCBjaGFyICpnZXRCbG9ja1N0b3JhZ2VTdHJpbmcoVExheW91dEJsb2NrU3RvcmFnZSBic3EpCiB7
CiAgICAgc3dpdGNoIChic3EpCiAgICAgewotICAgIGNhc2UgRWJzVW5zcGVjaWZpZWQ6ICAgIHJl
dHVybiAiYnNfdW5zcGVjaWZpZWQiOwotICAgIGNhc2UgRWJzU2hhcmVkOiAgICAgICAgIHJldHVy
biAic2hhcmVkIjsKLSAgICBjYXNlIEVic1BhY2tlZDogICAgICAgICByZXR1cm4gInBhY2tlZCI7
Ci0gICAgY2FzZSBFYnNTdGQxNDA6ICAgICAgICAgcmV0dXJuICJzdGQxNDAiOwotICAgIGRlZmF1
bHQ6IFVOUkVBQ0hBQkxFKCk7IHJldHVybiAidW5rbm93biBibG9jayBzdG9yYWdlIjsKKyAgICAg
ICAgY2FzZSBFYnNVbnNwZWNpZmllZDoKKyAgICAgICAgICAgIHJldHVybiAiYnNfdW5zcGVjaWZp
ZWQiOworICAgICAgICBjYXNlIEVic1NoYXJlZDoKKyAgICAgICAgICAgIHJldHVybiAic2hhcmVk
IjsKKyAgICAgICAgY2FzZSBFYnNQYWNrZWQ6CisgICAgICAgICAgICByZXR1cm4gInBhY2tlZCI7
CisgICAgICAgIGNhc2UgRWJzU3RkMTQwOgorICAgICAgICAgICAgcmV0dXJuICJzdGQxNDAiOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAg
IHJldHVybiAidW5rbm93biBibG9jayBzdG9yYWdlIjsKICAgICB9CiB9CiAKLSNlbmRpZiAvLyBD
T01QSUxFUl9UUkFOU0xBVE9SX0JBU0VUWVBFU19IXworaW5saW5lIGNvbnN0IGNoYXIgKmdldElt
YWdlSW50ZXJuYWxGb3JtYXRTdHJpbmcoVExheW91dEltYWdlSW50ZXJuYWxGb3JtYXQgaWlmcSkK
K3sKKyAgICBzd2l0Y2ggKGlpZnEpCisgICAgeworICAgICAgICBjYXNlIEVpaWZSR0JBMzJGOgor
ICAgICAgICAgICAgcmV0dXJuICJyZ2JhMzJmIjsKKyAgICAgICAgY2FzZSBFaWlmUkdCQTE2RjoK
KyAgICAgICAgICAgIHJldHVybiAicmdiYTE2ZiI7CisgICAgICAgIGNhc2UgRWlpZlIzMkY6Cisg
ICAgICAgICAgICByZXR1cm4gInIzMmYiOworICAgICAgICBjYXNlIEVpaWZSR0JBMzJVSToKKyAg
ICAgICAgICAgIHJldHVybiAicmdiYTMydWkiOworICAgICAgICBjYXNlIEVpaWZSR0JBMTZVSToK
KyAgICAgICAgICAgIHJldHVybiAicmdiYTE2dWkiOworICAgICAgICBjYXNlIEVpaWZSR0JBOFVJ
OgorICAgICAgICAgICAgcmV0dXJuICJyZ2JhOHVpIjsKKyAgICAgICAgY2FzZSBFaWlmUjMyVUk6
CisgICAgICAgICAgICByZXR1cm4gInIzMnVpIjsKKyAgICAgICAgY2FzZSBFaWlmUkdCQTMySToK
KyAgICAgICAgICAgIHJldHVybiAicmdiYTMyaSI7CisgICAgICAgIGNhc2UgRWlpZlJHQkExNkk6
CisgICAgICAgICAgICByZXR1cm4gInJnYmExNmkiOworICAgICAgICBjYXNlIEVpaWZSR0JBOEk6
CisgICAgICAgICAgICByZXR1cm4gInJnYmE4aSI7CisgICAgICAgIGNhc2UgRWlpZlIzMkk6Cisg
ICAgICAgICAgICByZXR1cm4gInIzMmkiOworICAgICAgICBjYXNlIEVpaWZSR0JBODoKKyAgICAg
ICAgICAgIHJldHVybiAicmdiYTgiOworICAgICAgICBjYXNlIEVpaWZSR0JBOF9TTk9STToKKyAg
ICAgICAgICAgIHJldHVybiAicmdiYThfc25vcm0iOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiAidW5rbm93biBpbnRlcm5h
bCBpbWFnZSBmb3JtYXQiOworICAgIH0KK30KKworaW5saW5lIFRZdXZDc2NTdGFuZGFyZEVYVCBn
ZXRZdXZDc2NTdGFuZGFyZEVYVChjb25zdCBzdGQ6OnN0cmluZyAmc3RyKQoreworICAgIGlmIChz
dHIgPT0gIml0dV82MDEiKQorICAgICAgICByZXR1cm4gRXljc0l0dTYwMTsKKyAgICBlbHNlIGlm
IChzdHIgPT0gIml0dV82MDFfZnVsbF9yYW5nZSIpCisgICAgICAgIHJldHVybiBFeWNzSXR1NjAx
RnVsbFJhbmdlOworICAgIGVsc2UgaWYgKHN0ciA9PSAiaXR1XzcwOSIpCisgICAgICAgIHJldHVy
biBFeWNzSXR1NzA5OworICAgIHJldHVybiBFeWNzVW5kZWZpbmVkOworfQorCitpbmxpbmUgY29u
c3QgY2hhciAqZ2V0WXV2Q3NjU3RhbmRhcmRFWFRTdHJpbmcoVFl1dkNzY1N0YW5kYXJkRVhUIHlj
c3EpCit7CisgICAgc3dpdGNoICh5Y3NxKQorICAgIHsKKyAgICAgICAgY2FzZSBFeWNzSXR1NjAx
OgorICAgICAgICAgICAgcmV0dXJuICJpdHVfNjAxIjsKKyAgICAgICAgY2FzZSBFeWNzSXR1NjAx
RnVsbFJhbmdlOgorICAgICAgICAgICAgcmV0dXJuICJpdHVfNjAxX2Z1bGxfcmFuZ2UiOworICAg
ICAgICBjYXNlIEV5Y3NJdHU3MDk6CisgICAgICAgICAgICByZXR1cm4gIml0dV83MDkiOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJl
dHVybiAidW5rbm93biBjb2xvciBzcGFjZSBjb252ZXJzaW9uIHN0YW5kYXJkIjsKKyAgICB9Cit9
CisKK30gIC8vIG5hbWVzcGFjZSBzaAorCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1Jf
QkFTRVRZUEVTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9CcmVha1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnJlYWtWYXJp
YWJsZUFsaWFzaW5nSW5Jbm5lckxvb3BzLmNwcAppbmRleCBhYWRhMGZhYzdkZmI2YjM4N2Q1N2Yw
ZWM0OGJjNmQ4ZDdmNTUzNTU4Li4wMThlNzJjZDFkNWJhODA5NGY5NzYwMWNiZGQ2ODNmZTNmMzg3
ZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9CcmVha1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0JyZWFrVmFyaWFibGVB
bGlhc2luZ0luSW5uZXJMb29wcy5jcHAKQEAgLTI1LDYgKzI1LDkgQEAKIC8vIHRoZSBidWcgb25s
eSBzaG93cyB1cCB3aXRoIHN3aXp6bGVzLCBhbmQgdGVybmFyeSBhc3NpZ25tZW50LCB3aG9sZSBh
cnJheSBvciB3aG9sZSBzdHJ1Y3R1cmUKIC8vIGFzc2lnbm1lbnQgZG9uJ3QgbmVlZCBhIHdvcmth
cm91bmQuCiAKK25hbWVzcGFjZSBzaAoreworCiBuYW1lc3BhY2UKIHsKIApAQCAtOTQsOSArOTcs
NiBAQCBjbGFzcyBBbGlhc2luZ0JyZWFrZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogCiB9
ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKLW5hbWVzcGFjZSBzaAotewotCiB2b2lkIEJyZWFr
VmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcyhUSW50ZXJtTm9kZSAqcm9vdCkKIHsKICAgICBB
bGlhc2luZ0JyZWFrZXIgYnJlYWtlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yLmNwcAppbmRleCA0ODNmYjQ0Njc1ZjQ5NDFlOWM3MzA3YTg1NGJjYmEy
MDFmMjI5MTdkLi44YjdkOWY4ZGQ1MjRhOGM3YmM1NjNhNTI3N2UzYWI2MWE4M2M4M2E1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9C
dWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY3BwCkBAIC05
LDEyICs5LDE0IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5o
IgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQ2FjaGUuaCIKIAorbmFtZXNwYWNlIHNo
Cit7CisKIGNsYXNzIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpCdWlsdEluRnVuY3Rpb25FbXVs
YXRpb25NYXJrZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogewogICBwdWJsaWM6CiAgICAg
QnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uTWFya2VyKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICZl
bXVsYXRvcikKLSAgICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSks
Ci0gICAgICAgICAgbUVtdWxhdG9yKGVtdWxhdG9yKQorICAgICAgICA6IFRJbnRlcm1UcmF2ZXJz
ZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwgbUVtdWxhdG9yKGVtdWxhdG9yKQogICAgIHsKICAgICB9
CiAKQEAgLTIyLDcgKzI0LDggQEAgY2xhc3MgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkJ1aWx0
SW5GdW5jdGlvbkVtdWxhdGlvbk1hcmtlciA6IHB1YmxpYyBUSW50ZXJtVHIKICAgICB7CiAgICAg
ICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKICAgICAgICAgewotICAgICAgICAgICAgYm9vbCBu
ZWVkVG9FbXVsYXRlID0gbUVtdWxhdG9yLlNldEZ1bmN0aW9uQ2FsbGVkKG5vZGUtPmdldE9wKCks
IG5vZGUtPmdldE9wZXJhbmQoKS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgICAgIGJvb2wgbmVlZFRv
RW11bGF0ZSA9CisgICAgICAgICAgICAgICAgbUVtdWxhdG9yLnNldEZ1bmN0aW9uQ2FsbGVkKG5v
ZGUtPmdldE9wKCksIG5vZGUtPmdldE9wZXJhbmQoKS0+Z2V0VHlwZSgpKTsKICAgICAgICAgICAg
IGlmIChuZWVkVG9FbXVsYXRlKQogICAgICAgICAgICAgICAgIG5vZGUtPnNldFVzZUVtdWxhdGVk
RnVuY3Rpb24oKTsKICAgICAgICAgfQpAQCAtMzMsMzkgKzM2LDE0IEBAIGNsYXNzIEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yOjpCdWlsdEluRnVuY3Rpb25FbXVsYXRpb25NYXJrZXIgOiBwdWJsaWMg
VEludGVybVRyCiAgICAgewogICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIC8vIEhlcmUgd2UgaGFuZGxlIGFsbCB0aGUgYnVpbHQtaW4gZnVuY3Rp
b25zIGluc3RlYWQgb2YgdGhlIG9uZXMgd2UKKyAgICAgICAgICAgIC8vIEhlcmUgd2UgaGFuZGxl
IGFsbCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zIG1hcHBlZCB0byBvcHMsIG5vdCBqdXN0IHRoZSBv
bmVzIHRoYXQgYXJlCiAgICAgICAgICAgICAvLyBjdXJyZW50bHkgaWRlbnRpZmllZCBhcyBwcm9i
bGVtYXRpYy4KLSAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKKyAgICAgICAgICAg
IGlmIChub2RlLT5pc0NvbnN0cnVjdG9yKCkgfHwgbm9kZS0+aXNGdW5jdGlvbkNhbGwoKSkKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIEVPcExlc3NUaGFuOgotICAgICAgICAg
ICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW46Ci0gICAgICAgICAgICAgICAgY2FzZSBFT3BMZXNz
VGhhbkVxdWFsOgotICAgICAgICAgICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW5FcXVhbDoKLSAg
ICAgICAgICAgICAgICBjYXNlIEVPcFZlY3RvckVxdWFsOgotICAgICAgICAgICAgICAgIGNhc2Ug
RU9wVmVjdG9yTm90RXF1YWw6Ci0gICAgICAgICAgICAgICAgY2FzZSBFT3BNb2Q6Ci0gICAgICAg
ICAgICAgICAgY2FzZSBFT3BQb3c6Ci0gICAgICAgICAgICAgICAgY2FzZSBFT3BBdGFuOgotICAg
ICAgICAgICAgICAgIGNhc2UgRU9wTWluOgotICAgICAgICAgICAgICAgIGNhc2UgRU9wTWF4Ogot
ICAgICAgICAgICAgICAgIGNhc2UgRU9wQ2xhbXA6Ci0gICAgICAgICAgICAgICAgY2FzZSBFT3BN
aXg6Ci0gICAgICAgICAgICAgICAgY2FzZSBFT3BTdGVwOgotICAgICAgICAgICAgICAgIGNhc2Ug
RU9wU21vb3RoU3RlcDoKLSAgICAgICAgICAgICAgICBjYXNlIEVPcERpc3RhbmNlOgotICAgICAg
ICAgICAgICAgIGNhc2UgRU9wRG90OgotICAgICAgICAgICAgICAgIGNhc2UgRU9wQ3Jvc3M6Ci0g
ICAgICAgICAgICAgICAgY2FzZSBFT3BGYWNlRm9yd2FyZDoKLSAgICAgICAgICAgICAgICBjYXNl
IEVPcFJlZmxlY3Q6Ci0gICAgICAgICAgICAgICAgY2FzZSBFT3BSZWZyYWN0OgotICAgICAgICAg
ICAgICAgIGNhc2UgRU9wT3V0ZXJQcm9kdWN0OgotICAgICAgICAgICAgICAgIGNhc2UgRU9wTXVs
OgotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAm
c2VxdWVuY2UgPSAqKG5vZGUtPmdldFNlcXVlbmNlKCkpOwotICAgICAgICAgICAgYm9vbCBuZWVk
VG9FbXVsYXRlID0gZmFsc2U7CisgICAgICAgICAgICBib29sIG5lZWRUb0VtdWxhdGUgICAgICAg
ICAgICAgID0gZmFsc2U7CiAgICAgICAgICAgICAvLyBSaWdodCBub3cgd2Ugb25seSBoYW5kbGUg
YnVpbHQtaW4gZnVuY3Rpb25zIHdpdGggdHdvIG9yIHRocmVlIHBhcmFtZXRlcnMuCiAgICAgICAg
ICAgICBpZiAoc2VxdWVuY2Uuc2l6ZSgpID09IDIpCiAgICAgICAgICAgICB7CkBAIC03Myw4ICs1
MSw4IEBAIGNsYXNzIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpCdWlsdEluRnVuY3Rpb25FbXVs
YXRpb25NYXJrZXIgOiBwdWJsaWMgVEludGVybVRyCiAgICAgICAgICAgICAgICAgVEludGVybVR5
cGVkICpwYXJhbTIgPSBzZXF1ZW5jZVsxXS0+Z2V0QXNUeXBlZCgpOwogICAgICAgICAgICAgICAg
IGlmICghcGFyYW0xIHx8ICFwYXJhbTIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAgICAgICAgIG5lZWRUb0VtdWxhdGUgPSBtRW11bGF0b3IuU2V0RnVuY3Rpb25D
YWxsZWQoCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPmdldE9wKCksIHBhcmFtMS0+Z2V0VHlw
ZSgpLCBwYXJhbTItPmdldFR5cGUoKSk7CisgICAgICAgICAgICAgICAgbmVlZFRvRW11bGF0ZSA9
IG1FbXVsYXRvci5zZXRGdW5jdGlvbkNhbGxlZChub2RlLT5nZXRPcCgpLCBwYXJhbTEtPmdldFR5
cGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtMi0+Z2V0VHlwZSgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGVsc2UgaWYgKHNlcXVlbmNlLnNpemUoKSA9PSAzKQogICAgICAgICAgICAgewpAQCAtODMsOCAr
NjEsMjAgQEAgY2xhc3MgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkJ1aWx0SW5GdW5jdGlvbkVt
dWxhdGlvbk1hcmtlciA6IHB1YmxpYyBUSW50ZXJtVHIKICAgICAgICAgICAgICAgICBUSW50ZXJt
VHlwZWQgKnBhcmFtMyA9IHNlcXVlbmNlWzJdLT5nZXRBc1R5cGVkKCk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFwYXJhbTEgfHwgIXBhcmFtMiB8fCAhcGFyYW0zKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBuZWVkVG9FbXVsYXRlID0gbUVtdWxhdG9y
LlNldEZ1bmN0aW9uQ2FsbGVkKAotICAgICAgICAgICAgICAgICAgICBub2RlLT5nZXRPcCgpLCBw
YXJhbTEtPmdldFR5cGUoKSwgcGFyYW0yLT5nZXRUeXBlKCksIHBhcmFtMy0+Z2V0VHlwZSgpKTsK
KyAgICAgICAgICAgICAgICBuZWVkVG9FbXVsYXRlID0gbUVtdWxhdG9yLnNldEZ1bmN0aW9uQ2Fs
bGVkKG5vZGUtPmdldE9wKCksIHBhcmFtMS0+Z2V0VHlwZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0yLT5nZXRUeXBl
KCksIHBhcmFtMy0+Z2V0VHlwZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2Ug
aWYgKHNlcXVlbmNlLnNpemUoKSA9PSA0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IFRJbnRlcm1UeXBlZCAqcGFyYW0xID0gc2VxdWVuY2VbMF0tPmdldEFzVHlwZWQoKTsKKyAgICAg
ICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnBhcmFtMiA9IHNlcXVlbmNlWzFdLT5nZXRBc1R5cGVk
KCk7CisgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpwYXJhbTMgPSBzZXF1ZW5jZVsyXS0+
Z2V0QXNUeXBlZCgpOworICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqcGFyYW00ID0gc2Vx
dWVuY2VbM10tPmdldEFzVHlwZWQoKTsKKyAgICAgICAgICAgICAgICBpZiAoIXBhcmFtMSB8fCAh
cGFyYW0yIHx8ICFwYXJhbTMgfHwgIXBhcmFtNCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICAgICAgbmVlZFRvRW11bGF0ZSA9CisgICAgICAgICAgICAgICAg
ICAgIG1FbXVsYXRvci5zZXRGdW5jdGlvbkNhbGxlZChub2RlLT5nZXRPcCgpLCBwYXJhbTEtPmdl
dFR5cGUoKSwgcGFyYW0yLT5nZXRUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwYXJhbTMtPmdldFR5cGUoKSwgcGFyYW00LT5nZXRUeXBlKCkp
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewpAQCAtMTAy
LDMyICs5Miw4OSBAQCBjbGFzcyBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6QnVpbHRJbkZ1bmN0
aW9uRW11bGF0aW9uTWFya2VyIDogcHVibGljIFRJbnRlcm1UcgogfTsKIAogQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3I6OkJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKCkKLXt9Cit7Cit9CisKK0J1aWx0
SW5GdW5jdGlvbkVtdWxhdG9yOjpGdW5jdGlvbklkIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjph
ZGRFbXVsYXRlZEZ1bmN0aW9uKAorICAgIFRPcGVyYXRvciBvcCwKKyAgICBjb25zdCBUVHlwZSAq
cGFyYW0sCisgICAgY29uc3QgY2hhciAqZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRpb24pCit7Cisg
ICAgRnVuY3Rpb25JZCBpZChvcCwgcGFyYW0pOworICAgIG1FbXVsYXRlZEZ1bmN0aW9uc1tpZF0g
PSBzdGQ6OnN0cmluZyhlbXVsYXRlZEZ1bmN0aW9uRGVmaW5pdGlvbik7CisgICAgcmV0dXJuIGlk
OworfQogCi12b2lkIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjphZGRFbXVsYXRlZEZ1bmN0aW9u
KFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUgKnBhcmFtLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbXVsYXRlZEZ1bmN0aW9u
RGVmaW5pdGlvbikKK0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpGdW5jdGlvbklkIEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yOjphZGRFbXVsYXRlZEZ1bmN0aW9uKAorICAgIFRPcGVyYXRvciBvcCwK
KyAgICBjb25zdCBUVHlwZSAqcGFyYW0xLAorICAgIGNvbnN0IFRUeXBlICpwYXJhbTIsCisgICAg
Y29uc3QgY2hhciAqZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRpb24pCiB7Ci0gICAgbUVtdWxhdGVk
RnVuY3Rpb25zW0Z1bmN0aW9uSWQob3AsIHBhcmFtKV0gPSBzdGQ6OnN0cmluZyhlbXVsYXRlZEZ1
bmN0aW9uRGVmaW5pdGlvbik7CisgICAgRnVuY3Rpb25JZCBpZChvcCwgcGFyYW0xLCBwYXJhbTIp
OworICAgIG1FbXVsYXRlZEZ1bmN0aW9uc1tpZF0gPSBzdGQ6OnN0cmluZyhlbXVsYXRlZEZ1bmN0
aW9uRGVmaW5pdGlvbik7CisgICAgcmV0dXJuIGlkOwogfQogCi12b2lkIEJ1aWx0SW5GdW5jdGlv
bkVtdWxhdG9yOjphZGRFbXVsYXRlZEZ1bmN0aW9uKFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUg
KnBhcmFtMSwgY29uc3QgVFR5cGUgKnBhcmFtMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW11bGF0ZWRGdW5jdGlvbkRlZmlu
aXRpb24pCitCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6RnVuY3Rpb25JZCBCdWlsdEluRnVuY3Rp
b25FbXVsYXRvcjo6YWRkRW11bGF0ZWRGdW5jdGlvbldpdGhEZXBlbmRlbmN5KAorICAgIEZ1bmN0
aW9uSWQgZGVwZW5kZW5jeSwKKyAgICBUT3BlcmF0b3Igb3AsCisgICAgY29uc3QgVFR5cGUgKnBh
cmFtMSwKKyAgICBjb25zdCBUVHlwZSAqcGFyYW0yLAorICAgIGNvbnN0IGNoYXIgKmVtdWxhdGVk
RnVuY3Rpb25EZWZpbml0aW9uKQogewotICAgIG1FbXVsYXRlZEZ1bmN0aW9uc1tGdW5jdGlvbklk
KG9wLCBwYXJhbTEsIHBhcmFtMildID0gc3RkOjpzdHJpbmcoZW11bGF0ZWRGdW5jdGlvbkRlZmlu
aXRpb24pOworICAgIEZ1bmN0aW9uSWQgaWQob3AsIHBhcmFtMSwgcGFyYW0yKTsKKyAgICBtRW11
bGF0ZWRGdW5jdGlvbnNbaWRdICAgID0gc3RkOjpzdHJpbmcoZW11bGF0ZWRGdW5jdGlvbkRlZmlu
aXRpb24pOworICAgIG1GdW5jdGlvbkRlcGVuZGVuY2llc1tpZF0gPSBkZXBlbmRlbmN5OworICAg
IHJldHVybiBpZDsKIH0KIAotdm9pZCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6YWRkRW11bGF0
ZWRGdW5jdGlvbihUT3BlcmF0b3Igb3AsIGNvbnN0IFRUeXBlICpwYXJhbTEsIGNvbnN0IFRUeXBl
ICpwYXJhbTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRUeXBlICpwYXJhbTMsIGNvbnN0IGNoYXIgKmVtdWxhdGVkRnVuY3Rpb25EZWZp
bml0aW9uKQorQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkZ1bmN0aW9uSWQgQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3I6OmFkZEVtdWxhdGVkRnVuY3Rpb24oCisgICAgVE9wZXJhdG9yIG9wLAorICAg
IGNvbnN0IFRUeXBlICpwYXJhbTEsCisgICAgY29uc3QgVFR5cGUgKnBhcmFtMiwKKyAgICBjb25z
dCBUVHlwZSAqcGFyYW0zLAorICAgIGNvbnN0IGNoYXIgKmVtdWxhdGVkRnVuY3Rpb25EZWZpbml0
aW9uKQogewotICAgIG1FbXVsYXRlZEZ1bmN0aW9uc1tGdW5jdGlvbklkKG9wLCBwYXJhbTEsIHBh
cmFtMiwgcGFyYW0zKV0gPSBzdGQ6OnN0cmluZyhlbXVsYXRlZEZ1bmN0aW9uRGVmaW5pdGlvbik7
CisgICAgRnVuY3Rpb25JZCBpZChvcCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMyk7CisgICAgbUVt
dWxhdGVkRnVuY3Rpb25zW2lkXSA9IHN0ZDo6c3RyaW5nKGVtdWxhdGVkRnVuY3Rpb25EZWZpbml0
aW9uKTsKKyAgICByZXR1cm4gaWQ7CiB9CiAKLWJvb2wgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6
OklzT3V0cHV0RW1wdHkoKSBjb25zdAorQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkZ1bmN0aW9u
SWQgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OmFkZEVtdWxhdGVkRnVuY3Rpb24oCisgICAgVE9w
ZXJhdG9yIG9wLAorICAgIGNvbnN0IFRUeXBlICpwYXJhbTEsCisgICAgY29uc3QgVFR5cGUgKnBh
cmFtMiwKKyAgICBjb25zdCBUVHlwZSAqcGFyYW0zLAorICAgIGNvbnN0IFRUeXBlICpwYXJhbTQs
CisgICAgY29uc3QgY2hhciAqZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRpb24pCit7CisgICAgRnVu
Y3Rpb25JZCBpZChvcCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMywgcGFyYW00KTsKKyAgICBtRW11
bGF0ZWRGdW5jdGlvbnNbaWRdID0gc3RkOjpzdHJpbmcoZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRp
b24pOworICAgIHJldHVybiBpZDsKK30KKworQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkZ1bmN0
aW9uSWQgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OmFkZEVtdWxhdGVkRnVuY3Rpb25XaXRoRGVw
ZW5kZW5jeSgKKyAgICBGdW5jdGlvbklkIGRlcGVuZGVuY3ksCisgICAgVE9wZXJhdG9yIG9wLAor
ICAgIGNvbnN0IFRUeXBlICpwYXJhbTEsCisgICAgY29uc3QgVFR5cGUgKnBhcmFtMiwKKyAgICBj
b25zdCBUVHlwZSAqcGFyYW0zLAorICAgIGNvbnN0IFRUeXBlICpwYXJhbTQsCisgICAgY29uc3Qg
Y2hhciAqZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRpb24pCit7CisgICAgRnVuY3Rpb25JZCBpZChv
cCwgcGFyYW0xLCBwYXJhbTIsIHBhcmFtMywgcGFyYW00KTsKKyAgICBtRW11bGF0ZWRGdW5jdGlv
bnNbaWRdICAgID0gc3RkOjpzdHJpbmcoZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRpb24pOworICAg
IG1GdW5jdGlvbkRlcGVuZGVuY2llc1tpZF0gPSBkZXBlbmRlbmN5OworICAgIHJldHVybiBpZDsK
K30KKworYm9vbCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6aXNPdXRwdXRFbXB0eSgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIChtRnVuY3Rpb25zLnNpemUoKSA9PSAwKTsKIH0KIAotdm9pZCBCdWls
dEluRnVuY3Rpb25FbXVsYXRvcjo6T3V0cHV0RW11bGF0ZWRGdW5jdGlvbnMoVEluZm9TaW5rQmFz
ZSAmb3V0KSBjb25zdAordm9pZCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6b3V0cHV0RW11bGF0
ZWRGdW5jdGlvbnMoVEluZm9TaW5rQmFzZSAmb3V0KSBjb25zdAogewogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbUZ1bmN0aW9ucy5zaXplKCk7ICsraSkKICAgICB7CkBAIC0xMzUsMjMgKzE4
MiwzNiBAQCB2b2lkIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpPdXRwdXRFbXVsYXRlZEZ1bmN0
aW9ucyhUSW5mb1NpbmtCYXNlICZvdXQpIGNvbnN0CiAgICAgfQogfQogCi1ib29sIEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yOjpTZXRGdW5jdGlvbkNhbGxlZChUT3BlcmF0b3Igb3AsIGNvbnN0IFRU
eXBlICZwYXJhbSkKK2Jvb2wgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OnNldEZ1bmN0aW9uQ2Fs
bGVkKFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUgJnBhcmFtKQogewotICAgIHJldHVybiBTZXRG
dW5jdGlvbkNhbGxlZChGdW5jdGlvbklkKG9wLCAmcGFyYW0pKTsKKyAgICByZXR1cm4gc2V0RnVu
Y3Rpb25DYWxsZWQoRnVuY3Rpb25JZChvcCwgJnBhcmFtKSk7CiB9CiAKLWJvb2wgQnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3I6OlNldEZ1bmN0aW9uQ2FsbGVkKFRPcGVyYXRvciBvcCwgY29uc3QgVFR5
cGUgJnBhcmFtMSwgY29uc3QgVFR5cGUgJnBhcmFtMikKK2Jvb2wgQnVpbHRJbkZ1bmN0aW9uRW11
bGF0b3I6OnNldEZ1bmN0aW9uQ2FsbGVkKFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZwYXJhbTEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAm
cGFyYW0yKQogewotICAgIHJldHVybiBTZXRGdW5jdGlvbkNhbGxlZChGdW5jdGlvbklkKG9wLCAm
cGFyYW0xLCAmcGFyYW0yKSk7CisgICAgcmV0dXJuIHNldEZ1bmN0aW9uQ2FsbGVkKEZ1bmN0aW9u
SWQob3AsICZwYXJhbTEsICZwYXJhbTIpKTsKIH0KIAotYm9vbCBCdWlsdEluRnVuY3Rpb25FbXVs
YXRvcjo6U2V0RnVuY3Rpb25DYWxsZWQoVE9wZXJhdG9yIG9wLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJnBhcmFtMSwgY29uc3Qg
VFR5cGUgJnBhcmFtMiwgY29uc3QgVFR5cGUgJnBhcmFtMykKK2Jvb2wgQnVpbHRJbkZ1bmN0aW9u
RW11bGF0b3I6OnNldEZ1bmN0aW9uQ2FsbGVkKFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZwYXJhbTEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlw
ZSAmcGFyYW0yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFR5cGUgJnBhcmFtMykKIHsKLSAgICByZXR1cm4gU2V0RnVuY3Rpb25DYWxsZWQo
RnVuY3Rpb25JZChvcCwgJnBhcmFtMSwgJnBhcmFtMiwgJnBhcmFtMykpOworICAgIHJldHVybiBz
ZXRGdW5jdGlvbkNhbGxlZChGdW5jdGlvbklkKG9wLCAmcGFyYW0xLCAmcGFyYW0yLCAmcGFyYW0z
KSk7CiB9CiAKLWJvb2wgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OlNldEZ1bmN0aW9uQ2FsbGVk
KGNvbnN0IEZ1bmN0aW9uSWQgJmZ1bmN0aW9uSWQpCitib29sIEJ1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yOjpzZXRGdW5jdGlvbkNhbGxlZChUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmcGFyYW0xLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJnBh
cmFtMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRUeXBlICZwYXJhbTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUVHlwZSAmcGFyYW00KQoreworICAgIHJldHVybiBzZXRGdW5jdGlv
bkNhbGxlZChGdW5jdGlvbklkKG9wLCAmcGFyYW0xLCAmcGFyYW0yLCAmcGFyYW0zLCAmcGFyYW00
KSk7Cit9CisKK2Jvb2wgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OnNldEZ1bmN0aW9uQ2FsbGVk
KGNvbnN0IEZ1bmN0aW9uSWQgJmZ1bmN0aW9uSWQpCiB7CiAgICAgaWYgKG1FbXVsYXRlZEZ1bmN0
aW9ucy5maW5kKGZ1bmN0aW9uSWQpICE9IG1FbXVsYXRlZEZ1bmN0aW9ucy5lbmQoKSkKICAgICB7
CkBAIC0xNjAsNiArMjIwLDEyIEBAIGJvb2wgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OlNldEZ1
bmN0aW9uQ2FsbGVkKGNvbnN0IEZ1bmN0aW9uSWQgJmZ1bmN0aW9uSWQpCiAgICAgICAgICAgICBp
ZiAobUZ1bmN0aW9uc1tpXSA9PSBmdW5jdGlvbklkKQogICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CisgICAgICAgIC8vIElmIHRoZSBmdW5jdGlvbiBkZXBlbmRzIG9uIGFu
b3RoZXIsIG1hcmsgdGhlIGRlcGVuZGVuY3kgYXMgY2FsbGVkLgorICAgICAgICBhdXRvIGRlcGVu
ZGVuY3kgPSBtRnVuY3Rpb25EZXBlbmRlbmNpZXMuZmluZChmdW5jdGlvbklkKTsKKyAgICAgICAg
aWYgKGRlcGVuZGVuY3kgIT0gbUZ1bmN0aW9uRGVwZW5kZW5jaWVzLmVuZCgpKQorICAgICAgICB7
CisgICAgICAgICAgICBzZXRGdW5jdGlvbkNhbGxlZCgoKmRlcGVuZGVuY3kpLnNlY29uZCk7Cisg
ICAgICAgIH0KICAgICAgICAgLy8gQ29weSB0aGUgZnVuY3Rpb25JZCBpZiBpdCBuZWVkcyB0byBi
ZSBzdG9yZWQsIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBUVHlwZSBwb2ludGVycyBpbnNpZGUKICAg
ICAgICAgLy8gcmVtYWluIHZhbGlkIGFuZCBjb25zdGFudC4KICAgICAgICAgbUZ1bmN0aW9ucy5w
dXNoX2JhY2soZnVuY3Rpb25JZC5nZXRDb3B5KCkpOwpAQCAtMTY4LDcgKzIzNCw3IEBAIGJvb2wg
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OlNldEZ1bmN0aW9uQ2FsbGVkKGNvbnN0IEZ1bmN0aW9u
SWQgJmZ1bmN0aW9uSWQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEJ1aWx0SW5GdW5j
dGlvbkVtdWxhdG9yOjpNYXJrQnVpbHRJbkZ1bmN0aW9uc0ZvckVtdWxhdGlvbihUSW50ZXJtTm9k
ZSAqcm9vdCkKK3ZvaWQgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6Om1hcmtCdWlsdEluRnVuY3Rp
b25zRm9yRW11bGF0aW9uKFRJbnRlcm1Ob2RlICpyb290KQogewogICAgIEFTU0VSVChyb290KTsK
IApAQCAtMTc5LDUzICsyNDUsNzQgQEAgdm9pZCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6TWFy
a0J1aWx0SW5GdW5jdGlvbnNGb3JFbXVsYXRpb24oVEludGVybU5vZGUgKnJvb3QKICAgICByb290
LT50cmF2ZXJzZSgmbWFya2VyKTsKIH0KIAotdm9pZCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6
Q2xlYW51cCgpCit2b2lkIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpjbGVhbnVwKCkKIHsKICAg
ICBtRnVuY3Rpb25zLmNsZWFyKCk7CisgICAgbUZ1bmN0aW9uRGVwZW5kZW5jaWVzLmNsZWFyKCk7
CiB9CiAKLS8vc3RhdGljCi1UU3RyaW5nIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpHZXRFbXVs
YXRlZEZ1bmN0aW9uTmFtZSgKLSAgICBjb25zdCBUU3RyaW5nICZuYW1lKQorLy8gc3RhdGljCit2
b2lkIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpXcml0ZUVtdWxhdGVkRnVuY3Rpb25OYW1lKFRJ
bmZvU2lua0Jhc2UgJm91dCwgY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBBU1NFUlQobmFtZVtz
dHJsZW4obmFtZSkgLSAxXSAhPSAnKCcpOworICAgIG91dCA8PCAid2ViZ2xfIiA8PCBuYW1lIDw8
ICJfZW11IjsKK30KKworQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkZ1bmN0aW9uSWQ6OkZ1bmN0
aW9uSWQoKQorICAgIDogbU9wKEVPcE51bGwpLAorICAgICAgbVBhcmFtMShUQ2FjaGU6OmdldFR5
cGUoRWJ0Vm9pZCkpLAorICAgICAgbVBhcmFtMihUQ2FjaGU6OmdldFR5cGUoRWJ0Vm9pZCkpLAor
ICAgICAgbVBhcmFtMyhUQ2FjaGU6OmdldFR5cGUoRWJ0Vm9pZCkpLAorICAgICAgbVBhcmFtNChU
Q2FjaGU6OmdldFR5cGUoRWJ0Vm9pZCkpCiB7Ci0gICAgQVNTRVJUKG5hbWVbbmFtZS5sZW5ndGgo
KSAtIDFdID09ICcoJyk7Ci0gICAgcmV0dXJuICJ3ZWJnbF8iICsgbmFtZS5zdWJzdHIoMCwgbmFt
ZS5sZW5ndGgoKSAtIDEpICsgIl9lbXUoIjsKIH0KIAogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6
OkZ1bmN0aW9uSWQ6OkZ1bmN0aW9uSWQoVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSAqcGFyYW0p
CiAgICAgOiBtT3Aob3ApLAogICAgICAgbVBhcmFtMShwYXJhbSksCiAgICAgICBtUGFyYW0yKFRD
YWNoZTo6Z2V0VHlwZShFYnRWb2lkKSksCi0gICAgICBtUGFyYW0zKFRDYWNoZTo6Z2V0VHlwZShF
YnRWb2lkKSkKKyAgICAgIG1QYXJhbTMoVENhY2hlOjpnZXRUeXBlKEVidFZvaWQpKSwKKyAgICAg
IG1QYXJhbTQoVENhY2hlOjpnZXRUeXBlKEVidFZvaWQpKQogewogfQogCi1CdWlsdEluRnVuY3Rp
b25FbXVsYXRvcjo6RnVuY3Rpb25JZDo6RnVuY3Rpb25JZChUT3BlcmF0b3Igb3AsIGNvbnN0IFRU
eXBlICpwYXJhbTEsIGNvbnN0IFRUeXBlICpwYXJhbTIpCitCdWlsdEluRnVuY3Rpb25FbXVsYXRv
cjo6RnVuY3Rpb25JZDo6RnVuY3Rpb25JZChUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcGFyYW0xLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUg
KnBhcmFtMikKICAgICA6IG1PcChvcCksCiAgICAgICBtUGFyYW0xKHBhcmFtMSksCiAgICAgICBt
UGFyYW0yKHBhcmFtMiksCi0gICAgICBtUGFyYW0zKFRDYWNoZTo6Z2V0VHlwZShFYnRWb2lkKSkK
KyAgICAgIG1QYXJhbTMoVENhY2hlOjpnZXRUeXBlKEVidFZvaWQpKSwKKyAgICAgIG1QYXJhbTQo
VENhY2hlOjpnZXRUeXBlKEVidFZvaWQpKQogewogfQogCiBCdWlsdEluRnVuY3Rpb25FbXVsYXRv
cjo6RnVuY3Rpb25JZDo6RnVuY3Rpb25JZChUT3BlcmF0b3Igb3AsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcGFyYW0xLCBjb25z
dCBUVHlwZSAqcGFyYW0yLCBjb25zdCBUVHlwZSAqcGFyYW0zKQotICAgIDogbU9wKG9wKSwKLSAg
ICAgIG1QYXJhbTEocGFyYW0xKSwKLSAgICAgIG1QYXJhbTIocGFyYW0yKSwKLSAgICAgIG1QYXJh
bTMocGFyYW0zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFR5cGUgKnBhcmFtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwYXJhbTIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcGFyYW0zKQorICAgIDog
bU9wKG9wKSwgbVBhcmFtMShwYXJhbTEpLCBtUGFyYW0yKHBhcmFtMiksIG1QYXJhbTMocGFyYW0z
KSwgbVBhcmFtNChUQ2FjaGU6OmdldFR5cGUoRWJ0Vm9pZCkpCiB7CiB9CiAKLWJvb2wgQnVpbHRJ
bkZ1bmN0aW9uRW11bGF0b3I6OkZ1bmN0aW9uSWQ6Om9wZXJhdG9yPT0oY29uc3QgQnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3I6OkZ1bmN0aW9uSWQgJm90aGVyKSBjb25zdAorQnVpbHRJbkZ1bmN0aW9u
RW11bGF0b3I6OkZ1bmN0aW9uSWQ6OkZ1bmN0aW9uSWQoVE9wZXJhdG9yIG9wLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnBhcmFt
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRUeXBlICpwYXJhbTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUVHlwZSAqcGFyYW0zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnBhcmFtNCkKKyAgICA6IG1PcChvcCks
IG1QYXJhbTEocGFyYW0xKSwgbVBhcmFtMihwYXJhbTIpLCBtUGFyYW0zKHBhcmFtMyksIG1QYXJh
bTQocGFyYW00KQogewotICAgIHJldHVybiAobU9wID09IG90aGVyLm1PcCAmJgotICAgICAgICAg
ICAgKm1QYXJhbTEgPT0gKm90aGVyLm1QYXJhbTEgJiYKLSAgICAgICAgICAgICptUGFyYW0yID09
ICpvdGhlci5tUGFyYW0yICYmCi0gICAgICAgICAgICAqbVBhcmFtMyA9PSAqb3RoZXIubVBhcmFt
Myk7CiB9CiAKLWJvb2wgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkZ1bmN0aW9uSWQ6Om9wZXJh
dG9yPChjb25zdCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6RnVuY3Rpb25JZCAmb3RoZXIpIGNv
bnN0Citib29sIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpGdW5jdGlvbklkOjpvcGVyYXRvcj09
KAorICAgIGNvbnN0IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpGdW5jdGlvbklkICZvdGhlcikg
Y29uc3QKK3sKKyAgICByZXR1cm4gKG1PcCA9PSBvdGhlci5tT3AgJiYgKm1QYXJhbTEgPT0gKm90
aGVyLm1QYXJhbTEgJiYgKm1QYXJhbTIgPT0gKm90aGVyLm1QYXJhbTIgJiYKKyAgICAgICAgICAg
ICptUGFyYW0zID09ICpvdGhlci5tUGFyYW0zICYmICptUGFyYW00ID09ICpvdGhlci5tUGFyYW00
KTsKK30KKworYm9vbCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6RnVuY3Rpb25JZDo6b3BlcmF0
b3I8KAorICAgIGNvbnN0IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpGdW5jdGlvbklkICZvdGhl
cikgY29uc3QKIHsKICAgICBpZiAobU9wICE9IG90aGVyLm1PcCkKICAgICAgICAgcmV0dXJuIG1P
cCA8IG90aGVyLm1PcDsKQEAgLTIzNCwxMSArMzIxLDE2IEBAIGJvb2wgQnVpbHRJbkZ1bmN0aW9u
RW11bGF0b3I6OkZ1bmN0aW9uSWQ6Om9wZXJhdG9yPChjb25zdCBCdWlsdEluRnVuY3Rpb25FbXVs
YXRvCiAgICAgaWYgKCptUGFyYW0yICE9ICpvdGhlci5tUGFyYW0yKQogICAgICAgICByZXR1cm4g
Km1QYXJhbTIgPCAqb3RoZXIubVBhcmFtMjsKICAgICBpZiAoKm1QYXJhbTMgIT0gKm90aGVyLm1Q
YXJhbTMpCi0gICAgICAgcmV0dXJuICptUGFyYW0zIDwgKm90aGVyLm1QYXJhbTM7Ci0gICAgcmV0
dXJuIGZhbHNlOyAvLyBhbGwgZmllbGRzIGFyZSBlcXVhbAorICAgICAgICByZXR1cm4gKm1QYXJh
bTMgPCAqb3RoZXIubVBhcmFtMzsKKyAgICBpZiAoKm1QYXJhbTQgIT0gKm90aGVyLm1QYXJhbTQp
CisgICAgICAgIHJldHVybiAqbVBhcmFtNCA8ICpvdGhlci5tUGFyYW00OworICAgIHJldHVybiBm
YWxzZTsgIC8vIGFsbCBmaWVsZHMgYXJlIGVxdWFsCiB9CiAKIEJ1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yOjpGdW5jdGlvbklkIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpGdW5jdGlvbklkOjpnZXRD
b3B5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gRnVuY3Rpb25JZChtT3AsIG5ldyBUVHlwZSgqbVBh
cmFtMSksIG5ldyBUVHlwZSgqbVBhcmFtMiksIG5ldyBUVHlwZSgqbVBhcmFtMykpOworICAgIHJl
dHVybiBGdW5jdGlvbklkKG1PcCwgbmV3IFRUeXBlKCptUGFyYW0xKSwgbmV3IFRUeXBlKCptUGFy
YW0yKSwgbmV3IFRUeXBlKCptUGFyYW0zKSwKKyAgICAgICAgICAgICAgICAgICAgICBuZXcgVFR5
cGUoKm1QYXJhbTQpKTsKIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rp
b25FbXVsYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaAppbmRleCA2OTc2ZWRmZDU3MGFmY2QyYTdh
NGIxNzUxZGZiNDkwODM3ZGY4NDUwLi5jYmIxYjI1ZWFkOWVmOWYyZGY1MzZlZDdiMGMwZjE4YWQ5
NmJiMjNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9y
LmgKQEAgLTEwLDc2ICsxMCwxMjggQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0lu
Zm9TaW5rLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCiAK
K25hbWVzcGFjZSBzaAoreworCiAvLwotLy8gVGhpcyBjbGFzcyBkZWNpZGVzIHdoaWNoIGJ1aWx0
LWluIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIHJlcGxhY2VkIHdpdGggdGhlCi0vLyBlbXVsYXRlZCBv
bmVzLgotLy8gSXQgY2FuIGJlIHVzZWQgdG8gd29yayBhcm91bmQgZHJpdmVyIGJ1Z3Mgb3IgaW1w
bGVtZW50IGZ1bmN0aW9ucyB0aGF0IGFyZQotLy8gbm90IG5hdGl2ZWx5IGltcGxlbWVudGVkIG9u
IGEgc3BlY2lmaWMgcGxhdGZvcm0uCisvLyBUaGlzIGNsYXNzIGRlY2lkZXMgd2hpY2ggYnVpbHQt
aW4gZnVuY3Rpb25zIG5lZWQgdG8gYmUgcmVwbGFjZWQgd2l0aCB0aGUgZW11bGF0ZWQgb25lcy4g
SXQgY2FuIGJlCisvLyB1c2VkIHRvIHdvcmsgYXJvdW5kIGRyaXZlciBidWdzIG9yIGltcGxlbWVu
dCBmdW5jdGlvbnMgdGhhdCBhcmUgbm90IG5hdGl2ZWx5IGltcGxlbWVudGVkIG9uIGEKKy8vIHNw
ZWNpZmljIHBsYXRmb3JtLgogLy8KIGNsYXNzIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yCiB7CiAg
IHB1YmxpYzoKICAgICBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcigpOwogCi0gICAgdm9pZCBNYXJr
QnVpbHRJbkZ1bmN0aW9uc0ZvckVtdWxhdGlvbihUSW50ZXJtTm9kZSAqcm9vdCk7CisgICAgdm9p
ZCBtYXJrQnVpbHRJbkZ1bmN0aW9uc0ZvckVtdWxhdGlvbihUSW50ZXJtTm9kZSAqcm9vdCk7CiAK
LSAgICB2b2lkIENsZWFudXAoKTsKKyAgICB2b2lkIGNsZWFudXAoKTsKIAotICAgIC8vICJuYW1l
KCIgYmVjb21lcyAid2ViZ2xfbmFtZV9lbXUoIi4KLSAgICBzdGF0aWMgVFN0cmluZyBHZXRFbXVs
YXRlZEZ1bmN0aW9uTmFtZShjb25zdCBUU3RyaW5nICZuYW1lKTsKKyAgICAvLyAibmFtZSIgZ2V0
cyB3cml0dGVuIGFzICJ3ZWJnbF9uYW1lX2VtdSIuCisgICAgc3RhdGljIHZvaWQgV3JpdGVFbXVs
YXRlZEZ1bmN0aW9uTmFtZShUSW5mb1NpbmtCYXNlICZvdXQsIGNvbnN0IGNoYXIgKm5hbWUpOwog
Ci0gICAgYm9vbCBJc091dHB1dEVtcHR5KCkgY29uc3Q7CisgICAgYm9vbCBpc091dHB1dEVtcHR5
KCkgY29uc3Q7CiAKLSAgICAvLyBPdXRwdXQgZnVuY3Rpb24gZW11bGF0aW9uIGRlZmluaXRpb24u
IFRoaXMgc2hvdWxkIGJlIGJlZm9yZSBhbnkgb3RoZXIKLSAgICAvLyBzaGFkZXIgc291cmNlLgot
ICAgIHZvaWQgT3V0cHV0RW11bGF0ZWRGdW5jdGlvbnMoVEluZm9TaW5rQmFzZSAmb3V0KSBjb25z
dDsKKyAgICAvLyBPdXRwdXQgZnVuY3Rpb24gZW11bGF0aW9uIGRlZmluaXRpb24uIFRoaXMgc2hv
dWxkIGJlIGJlZm9yZSBhbnkgb3RoZXIgc2hhZGVyIHNvdXJjZS4KKyAgICB2b2lkIG91dHB1dEVt
dWxhdGVkRnVuY3Rpb25zKFRJbmZvU2lua0Jhc2UgJm91dCkgY29uc3Q7CiAKLSAgICAvLyBBZGQg
ZnVuY3Rpb25zIHRoYXQgbmVlZCB0byBiZSBlbXVsYXRlZC4KLSAgICB2b2lkIGFkZEVtdWxhdGVk
RnVuY3Rpb24oVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSAqcGFyYW0sIGNvbnN0IGNoYXIgKmVt
dWxhdGVkRnVuY3Rpb25EZWZpbml0aW9uKTsKLSAgICB2b2lkIGFkZEVtdWxhdGVkRnVuY3Rpb24o
VE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSAqcGFyYW0xLCBjb25zdCBUVHlwZSAqcGFyYW0yLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbXVsYXRlZEZ1bmN0aW9u
RGVmaW5pdGlvbik7Ci0gICAgdm9pZCBhZGRFbXVsYXRlZEZ1bmN0aW9uKFRPcGVyYXRvciBvcCwg
Y29uc3QgVFR5cGUgKnBhcmFtMSwgY29uc3QgVFR5cGUgKnBhcmFtMiwgY29uc3QgVFR5cGUgKnBh
cmFtMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW11bGF0ZWRG
dW5jdGlvbkRlZmluaXRpb24pOwotCi0gIHByaXZhdGU6Ci0gICAgY2xhc3MgQnVpbHRJbkZ1bmN0
aW9uRW11bGF0aW9uTWFya2VyOwotCi0gICAgLy8gUmVjb3JkcyB0aGF0IGEgZnVuY3Rpb24gaXMg
Y2FsbGVkIGJ5IHRoZSBzaGFkZXIgYW5kIG1pZ2h0IG5lZWQgdG8gYmUKLSAgICAvLyBlbXVsYXRl
ZC4gSWYgdGhlIGZ1bmN0aW9uIGlzIG5vdCBpbiBtRW11bGF0ZWRGdW5jdGlvbnMsIHRoaXMgYmVj
b21lcyBhCi0gICAgLy8gbm8tb3AuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZnVuY3Rpb24gY2FsbCBu
ZWVkcyB0byBiZSByZXBsYWNlZCB3aXRoIGFuCi0gICAgLy8gZW11bGF0ZWQgb25lLgotICAgIGJv
b2wgU2V0RnVuY3Rpb25DYWxsZWQoVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSAmcGFyYW0pOwot
ICAgIGJvb2wgU2V0RnVuY3Rpb25DYWxsZWQoVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSAmcGFy
YW0xLCBjb25zdCBUVHlwZSAmcGFyYW0yKTsKLSAgICBib29sIFNldEZ1bmN0aW9uQ2FsbGVkKFRP
cGVyYXRvciBvcCwgY29uc3QgVFR5cGUgJnBhcmFtMSwgY29uc3QgVFR5cGUgJnBhcmFtMiwgY29u
c3QgVFR5cGUgJnBhcmFtMyk7Ci0KLSAgICBjbGFzcyBGdW5jdGlvbklkIHsKKyAgICBjbGFzcyBG
dW5jdGlvbklkCisgICAgewogICAgICAgcHVibGljOgorICAgICAgICBGdW5jdGlvbklkKCk7CiAg
ICAgICAgIEZ1bmN0aW9uSWQoVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSAqcGFyYW0pOwogICAg
ICAgICBGdW5jdGlvbklkKFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUgKnBhcmFtMSwgY29uc3Qg
VFR5cGUgKnBhcmFtMik7CiAgICAgICAgIEZ1bmN0aW9uSWQoVE9wZXJhdG9yIG9wLCBjb25zdCBU
VHlwZSAqcGFyYW0xLCBjb25zdCBUVHlwZSAqcGFyYW0yLCBjb25zdCBUVHlwZSAqcGFyYW0zKTsK
KyAgICAgICAgRnVuY3Rpb25JZChUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAgY29u
c3QgVFR5cGUgKnBhcmFtMSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcGFyYW0y
LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwYXJhbTMsCisgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFR5cGUgKnBhcmFtNCk7CisKKyAgICAgICAgRnVuY3Rpb25JZChjb25zdCBG
dW5jdGlvbklkICYpID0gZGVmYXVsdDsKKyAgICAgICAgRnVuY3Rpb25JZCAmb3BlcmF0b3I9KGNv
bnN0IEZ1bmN0aW9uSWQgJikgPSBkZWZhdWx0OwogCiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBGdW5jdGlvbklkICZvdGhlcikgY29uc3Q7CiAgICAgICAgIGJvb2wgb3BlcmF0b3I8KGNv
bnN0IEZ1bmN0aW9uSWQgJm90aGVyKSBjb25zdDsKIAogICAgICAgICBGdW5jdGlvbklkIGdldENv
cHkoKSBjb25zdDsKKwogICAgICAgcHJpdmF0ZToKICAgICAgICAgVE9wZXJhdG9yIG1PcDsKIAot
ICAgICAgICAvLyBUaGUgbWVtb3J5IHRoYXQgdGhlc2UgVFR5cGUgb2JqZWN0cyB1c2UgaXMgZnJl
ZWQgYnkgUG9vbEFsbG9jYXRvci4gVGhlIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yJ3MgbGlmZXRp
bWUKLSAgICAgICAgLy8gY2FuIGV4dGVuZCB1bnRpbCBhZnRlciB0aGUgbWVtb3J5IHBvb2wgaXMg
ZnJlZWQsIGJ1dCB0aGF0J3Mgbm90IGFuIGlzc3VlIHNpbmNlIHRoaXMgY2xhc3MgbmV2ZXIgZGVz
dHJ1Y3RzCi0gICAgICAgIC8vIHRoZXNlIG9iamVjdHMuCisgICAgICAgIC8vIFRoZSBtZW1vcnkg
dGhhdCB0aGVzZSBUVHlwZSBvYmplY3RzIHVzZSBpcyBmcmVlZCBieSBQb29sQWxsb2NhdG9yLiBU
aGUKKyAgICAgICAgLy8gQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IncyBsaWZldGltZSBjYW4gZXh0
ZW5kIHVudGlsIGFmdGVyIHRoZSBtZW1vcnkgcG9vbCBpcyBmcmVlZCwgYnV0CisgICAgICAgIC8v
IHRoYXQncyBub3QgYW4gaXNzdWUgc2luY2UgdGhpcyBjbGFzcyBuZXZlciBkZXN0cnVjdHMgdGhl
c2Ugb2JqZWN0cy4KICAgICAgICAgY29uc3QgVFR5cGUgKm1QYXJhbTE7CiAgICAgICAgIGNvbnN0
IFRUeXBlICptUGFyYW0yOwogICAgICAgICBjb25zdCBUVHlwZSAqbVBhcmFtMzsKKyAgICAgICAg
Y29uc3QgVFR5cGUgKm1QYXJhbTQ7CiAgICAgfTsKIAotICAgIGJvb2wgU2V0RnVuY3Rpb25DYWxs
ZWQoY29uc3QgRnVuY3Rpb25JZCAmZnVuY3Rpb25JZCk7CisgICAgLy8gQWRkIGZ1bmN0aW9ucyB0
aGF0IG5lZWQgdG8gYmUgZW11bGF0ZWQuCisgICAgRnVuY3Rpb25JZCBhZGRFbXVsYXRlZEZ1bmN0
aW9uKFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVFR5cGUgKnBhcmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICplbXVsYXRlZEZ1bmN0aW9uRGVmaW5pdGlvbik7CisgICAgRnVuY3Rpb25JZCBhZGRF
bXVsYXRlZEZ1bmN0aW9uKFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFR5cGUgKnBhcmFtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFR5cGUgKnBhcmFtMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRpb24pOworICAgIEZ1
bmN0aW9uSWQgYWRkRW11bGF0ZWRGdW5jdGlvbihUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwYXJhbTEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwYXJhbTIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwYXJhbTMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVtdWxhdGVkRnVuY3Rpb25EZWZpbml0
aW9uKTsKKyAgICBGdW5jdGlvbklkIGFkZEVtdWxhdGVkRnVuY3Rpb24oVE9wZXJhdG9yIG9wLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcGFyYW0xLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcGFyYW0yLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcGFyYW0zLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcGFyYW00LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbXVsYXRlZEZ1
bmN0aW9uRGVmaW5pdGlvbik7CisKKyAgICBGdW5jdGlvbklkIGFkZEVtdWxhdGVkRnVuY3Rpb25X
aXRoRGVwZW5kZW5jeShGdW5jdGlvbklkIGRlcGVuZGVuY3ksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE9wZXJhdG9yIG9wLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwYXJhbTEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFR5cGUgKnBhcmFtMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyICplbXVsYXRlZEZ1bmN0aW9uRGVmaW5pdGlvbik7CisgICAgRnVu
Y3Rpb25JZCBhZGRFbXVsYXRlZEZ1bmN0aW9uV2l0aERlcGVuZGVuY3koRnVuY3Rpb25JZCBkZXBl
bmRlbmN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUVHlwZSAqcGFyYW0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwYXJhbTIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnBhcmFtMywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
VHlwZSAqcGFyYW00LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIgKmVtdWxhdGVkRnVuY3Rpb25EZWZpbml0aW9uKTsKKworICBwcml2
YXRlOgorICAgIGNsYXNzIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbk1hcmtlcjsKKworICAgIC8v
IFJlY29yZHMgdGhhdCBhIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgc2hhZGVyIGFuZCBtaWdo
dCBuZWVkIHRvIGJlIGVtdWxhdGVkLiBJZiB0aGUKKyAgICAvLyBmdW5jdGlvbiBpcyBub3QgaW4g
bUVtdWxhdGVkRnVuY3Rpb25zLCB0aGlzIGJlY29tZXMgYSBuby1vcC4gUmV0dXJucyB0cnVlIGlm
IHRoZSBmdW5jdGlvbgorICAgIC8vIGNhbGwgbmVlZHMgdG8gYmUgcmVwbGFjZWQgd2l0aCBhbiBl
bXVsYXRlZCBvbmUuCisgICAgYm9vbCBzZXRGdW5jdGlvbkNhbGxlZChUT3BlcmF0b3Igb3AsIGNv
bnN0IFRUeXBlICZwYXJhbSk7CisgICAgYm9vbCBzZXRGdW5jdGlvbkNhbGxlZChUT3BlcmF0b3Ig
b3AsIGNvbnN0IFRUeXBlICZwYXJhbTEsIGNvbnN0IFRUeXBlICZwYXJhbTIpOworICAgIGJvb2wg
c2V0RnVuY3Rpb25DYWxsZWQoVE9wZXJhdG9yIG9wLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFR5cGUgJnBhcmFtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRUeXBlICZwYXJhbTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAm
cGFyYW0zKTsKKyAgICBib29sIHNldEZ1bmN0aW9uQ2FsbGVkKFRPcGVyYXRvciBvcCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZwYXJhbTEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmcGFyYW0yLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFR5cGUgJnBhcmFtMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRUeXBlICZwYXJhbTQpOworCisgICAgYm9vbCBzZXRGdW5jdGlvbkNhbGxlZChjb25zdCBG
dW5jdGlvbklkICZmdW5jdGlvbklkKTsKIAogICAgIC8vIE1hcCBmcm9tIGZ1bmN0aW9uIGlkIHRv
IGVtdWxhdGVkIGZ1bmN0aW9uIGRlZmluaXRpb24KICAgICBzdGQ6Om1hcDxGdW5jdGlvbklkLCBz
dGQ6OnN0cmluZz4gbUVtdWxhdGVkRnVuY3Rpb25zOwogCisgICAgLy8gTWFwIGZyb20gZGVwZW5k
ZW50IGZ1bmN0aW9ucyB0byB0aGVpciBkZXBlbmRlbmNpZXMuIFRoaXMgc3RydWN0dXJlIGFsbG93
cyBlYWNoIGZ1bmN0aW9uIHRvCisgICAgLy8gaGF2ZSBhdCBtb3N0IG9uZSBkZXBlbmRlbmN5Lgor
ICAgIHN0ZDo6bWFwPEZ1bmN0aW9uSWQsIEZ1bmN0aW9uSWQ+IG1GdW5jdGlvbkRlcGVuZGVuY2ll
czsKKwogICAgIC8vIENhbGxlZCBmdW5jdGlvbiBpZHMKICAgICBzdGQ6OnZlY3RvcjxGdW5jdGlv
bklkPiBtRnVuY3Rpb25zOwogfTsKIAorfSAgLy8gbmFtZXNwYWNlIHNoCisKICNlbmRpZiAgLy8g
Q09NUElMRVJfVFJBTlNMQVRPUl9CVUlMVElORlVOQ1RJT05FTVVMQVRPUl9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJ
bkZ1bmN0aW9uRW11bGF0b3JHTFNMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yR0xTTC5jcHAKaW5kZXgg
MGM4ZTJkOWNmYzEwNmZlNDMxZmMxZmY2ZmU0YTE0OTA0M2JkNWQxZS4uZGFkYTUzYjkxNTM2NzI1
MjcyNTA5ZjMzNDYzMTIwZDMzNDUzYjY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNM
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckdMU0wuY3BwCkBAIC0xMSw2ICsxMSw5IEBACiAjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgogI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvVmVyc2lvbkdMU0wuaCIKIAorbmFtZXNwYWNlIHNoCit7CisKIHZvaWQg
SW5pdEJ1aWx0SW5BYnNGdW5jdGlvbkVtdWxhdG9yRm9yR0xTTFdvcmthcm91bmRzKEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yICplbXUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaDo6R0xlbnVtIHNoYWRlclR5cGUpCiB7CkBAIC03Miw4ICs3
NSw0NiBAQCB2b2lkIEluaXRCdWlsdEluSXNuYW5GdW5jdGlvbkVtdWxhdG9yRm9yR0xTTFdvcmth
cm91bmRzKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yCiAgICAgICAgICJ9XG4iKTsKIH0KIAordm9p
ZCBJbml0QnVpbHRJbkF0YW5GdW5jdGlvbkVtdWxhdG9yRm9yR0xTTFdvcmthcm91bmRzKEJ1aWx0
SW5GdW5jdGlvbkVtdWxhdG9yICplbXUpCit7CisgICAgY29uc3QgVFR5cGUgKmZsb2F0MSA9IFRD
YWNoZTo6Z2V0VHlwZShFYnRGbG9hdCk7CisgICAgYXV0byBmbG9hdEZ1bmNJZCAgICA9IGVtdS0+
YWRkRW11bGF0ZWRGdW5jdGlvbigKKyAgICAgICAgRU9wQXRhbiwgZmxvYXQxLCBmbG9hdDEsCisg
ICAgICAgICJ3ZWJnbF9lbXVfcHJlY2lzaW9uIGZsb2F0IHdlYmdsX2F0YW5fZW11KHdlYmdsX2Vt
dV9wcmVjaXNpb24gZmxvYXQgeSwgd2ViZ2xfZW11X3ByZWNpc2lvbiAiCisgICAgICAgICJmbG9h
dCB4KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGlmICh4ID4gMC4wKSByZXR1cm4g
YXRhbih5IC8geCk7XG4iCisgICAgICAgICIgICAgZWxzZSBpZiAoeCA8IDAuMCAmJiB5ID49IDAu
MCkgcmV0dXJuIGF0YW4oeSAvIHgpICsgMy4xNDE1OTI2NTtcbiIKKyAgICAgICAgIiAgICBlbHNl
IGlmICh4IDwgMC4wICYmIHkgPCAwLjApIHJldHVybiBhdGFuKHkgLyB4KSAtIDMuMTQxNTkyNjU7
XG4iCisgICAgICAgICIgICAgZWxzZSByZXR1cm4gMS41NzA3OTYzMiAqIHNpZ24oeSk7XG4iCisg
ICAgICAgICJ9XG4iKTsKKyAgICBmb3IgKGludCBkaW0gPSAyOyBkaW0gPD0gNDsgKytkaW0pCisg
ICAgeworICAgICAgICBjb25zdCBUVHlwZSAqZmxvYXRWZWMgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0
RmxvYXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGRpbSkpOworICAgICAgICBzdGQ6OnN0
cmluZ3N0cmVhbSBzczsKKyAgICAgICAgc3MgPDwgIndlYmdsX2VtdV9wcmVjaXNpb24gdmVjIiA8
PCBkaW0gPDwgIiB3ZWJnbF9hdGFuX2VtdSh3ZWJnbF9lbXVfcHJlY2lzaW9uIHZlYyIgPDwgZGlt
CisgICAgICAgICAgIDw8ICIgeSwgd2ViZ2xfZW11X3ByZWNpc2lvbiB2ZWMiIDw8IGRpbSA8PCAi
IHgpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICByZXR1cm4gdmVjIgorICAgICAgICAgICA8PCBkaW0gPDwgIigiOworICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRpbTsgKytpKQorICAgICAgICB7CisgICAgICAgICAg
ICBzcyA8PCAid2ViZ2xfYXRhbl9lbXUoeVsiIDw8IGkgPDwgIl0sIHhbIiA8PCBpIDw8ICJdKSI7
CisgICAgICAgICAgICBpZiAoaSA8IGRpbSAtIDEpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgc3MgPDwgIiwgIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzcyA8
PCAiKTtcbiIKKyAgICAgICAgICAgICAgIn1cbiI7CisgICAgICAgIGVtdS0+YWRkRW11bGF0ZWRG
dW5jdGlvbldpdGhEZXBlbmRlbmN5KGZsb2F0RnVuY0lkLCBFT3BBdGFuLCBmbG9hdFZlYywgZmxv
YXRWZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNz
LnN0cigpLmNfc3RyKCkpOworICAgIH0KK30KKwogLy8gRW11bGF0ZSBidWlsdC1pbiBmdW5jdGlv
bnMgbWlzc2luZyBmcm9tIEdMU0wgMS4zMCBhbmQgaGlnaGVyCi12b2lkIEluaXRCdWlsdEluRnVu
Y3Rpb25FbXVsYXRvckZvckdMU0xNaXNzaW5nRnVuY3Rpb25zKEJ1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yICplbXUsIHNoOjpHTGVudW0gc2hhZGVyVHlwZSwKK3ZvaWQgSW5pdEJ1aWx0SW5GdW5jdGlv
bkVtdWxhdG9yRm9yR0xTTE1pc3NpbmdGdW5jdGlvbnMoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3Ig
KmVtdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2g6OkdMZW51bSBzaGFkZXJUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0R0xTTFZlcnNpb24pCiB7CiAg
ICAgLy8gRW11bGF0ZSBwYWNrVW5vcm0yeDE2IGFuZCB1bnBhY2tVbm9ybTJ4MTYgKEdMU0wgNC4x
MCkKQEAgLTEwNiw3ICsxNDcsNyBAQCB2b2lkIEluaXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvckZv
ckdMU0xNaXNzaW5nRnVuY3Rpb25zKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yCiAgICAgaWYgKHRh
cmdldEdMU0xWZXJzaW9uID49IEdMU0xfVkVSU0lPTl8zMzAgJiYgdGFyZ2V0R0xTTFZlcnNpb24g
PCBHTFNMX1ZFUlNJT05fNDIwKQogICAgIHsKICAgICAgICAgY29uc3QgVFR5cGUgKmZsb2F0MiA9
IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgMik7Ci0gICAgICAgIGNvbnN0IFRUeXBlICp1aW50
MSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRVSW50KTsKKyAgICAgICAgY29uc3QgVFR5cGUgKnVpbnQx
ICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRVSW50KTsKIAogICAgICAgICAvLyBjbGFuZy1mb3JtYXQg
b2ZmCiAgICAgICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BQYWNrU25vcm0yeDE2LCBm
bG9hdDIsCkBAIC0yNDgsMyArMjg5LDUgQEAgdm9pZCBJbml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3JGb3JHTFNMTWlzc2luZ0Z1bmN0aW9ucyhCdWlsdEluRnVuY3Rpb25FbXVsYXRvcgogICAgICAg
ICAvLyBjbGFuZy1mb3JtYXQgb24KICAgICB9CiB9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckdMU0wuaAppbmRl
eCAyYmM1ZjJjODgwMWU4MmUyMjVkM2M0ZjFkYzFiNGIxNGNlNjRhZTE1Li5lMWI0Nzc5YmQ1NDM4
MDRmMGMzMDVmMTU1ZGE4Yjg0M2MxOWFmOGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckdM
U0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckdMU0wuaApAQCAtOSw2ICs5LDggQEAKIAogI2luY2x1
ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgogCituYW1lc3BhY2Ugc2gKK3sKIGNsYXNzIEJ1aWx0
SW5GdW5jdGlvbkVtdWxhdG9yOwogCiAvLwpAQCAtMjIsMTEgKzI0LDE3IEBAIHZvaWQgSW5pdEJ1
aWx0SW5BYnNGdW5jdGlvbkVtdWxhdG9yRm9yR0xTTFdvcmthcm91bmRzKEJ1aWx0SW5GdW5jdGlv
bkVtdWxhdG9yICplCiAvLwogdm9pZCBJbml0QnVpbHRJbklzbmFuRnVuY3Rpb25FbXVsYXRvckZv
ckdMU0xXb3JrYXJvdW5kcyhCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqZW11LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0
R0xTTFZlcnNpb24pOworLy8KKy8vIFRoaXMgd29ya3MgYXJvdW5kIGF0YW4oeSwgeCkgYnVnIGlu
IE5WSURJQSBkcml2ZXJzLgorLy8KK3ZvaWQgSW5pdEJ1aWx0SW5BdGFuRnVuY3Rpb25FbXVsYXRv
ckZvckdMU0xXb3JrYXJvdW5kcyhCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqZW11KTsKIAogLy8K
IC8vIFRoaXMgZnVuY3Rpb24gaXMgZW11bGF0aW5nIGJ1aWx0LWluIGZ1bmN0aW9ucyBtaXNzaW5n
IGZyb20gR0xTTCAxLjMwIGFuZCBoaWdoZXIuCiAvLwotdm9pZCBJbml0QnVpbHRJbkZ1bmN0aW9u
RW11bGF0b3JGb3JHTFNMTWlzc2luZ0Z1bmN0aW9ucyhCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAq
ZW11LCBzaDo6R0xlbnVtIHNoYWRlclR5cGUsCit2b2lkIEluaXRCdWlsdEluRnVuY3Rpb25FbXVs
YXRvckZvckdMU0xNaXNzaW5nRnVuY3Rpb25zKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNoOjpHTGVudW0gc2hhZGVyVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldEdMU0xWZXJzaW9uKTsKK30gIC8vIG5h
bWVzcGFjZSBzaAogCiAjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfQlVJTFRJTkZVTkNU
SU9ORU1VTEFUT1JHTFNMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckhMU0wuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3JITFNMLmNwcAppbmRleCA5ODhmMWUyYmY1ZWM1ZGRkNWJkNGJhNTlhYjEx
Y2E0NmNmZWI0OWU4Li42ZDRhY2UzZGQ2ZTYxMTdhN2VkNzU5YzFjYTRkNDI4MDBmOTMyNDIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckhMU0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9ySExT
TC5jcHAKQEAgLTEwLDYgKzEwLDkgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1N5
bWJvbFRhYmxlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9WZXJzaW9uR0xTTC5o
IgogCituYW1lc3BhY2Ugc2gKK3sKKwogdm9pZCBJbml0QnVpbHRJbklzbmFuRnVuY3Rpb25FbXVs
YXRvckZvckhMU0xXb3JrYXJvdW5kcyhCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqZW11LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
dGFyZ2V0R0xTTFZlcnNpb24pCiB7CkBAIC0yMiwxMyArMjUsMTQgQEAgdm9pZCBJbml0QnVpbHRJ
bklzbmFuRnVuY3Rpb25FbXVsYXRvckZvckhMU0xXb3JrYXJvdW5kcyhCdWlsdEluRnVuY3Rpb25F
bXVsYXRvcgogICAgIFRUeXBlICpmbG9hdDQgPSBuZXcgVFR5cGUoRWJ0RmxvYXQsIDQpOwogCiAg
ICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcElzTmFuLCBmbG9hdDEsCi0gICAgICAgICJi
b29sIHdlYmdsX2lzbmFuX2VtdShmbG9hdCB4KVxuIgotICAgICAgICAie1xuIgotICAgICAgICAi
ICAgIHJldHVybiAoeCA+IDAuMCB8fCB4IDwgMC4wKSA/IGZhbHNlIDogeCAhPSAwLjA7XG4iCi0g
ICAgICAgICJ9XG4iCi0gICAgICAgICJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiYm9vbCB3ZWJnbF9pc25hbl9lbXUoZmxvYXQgeClcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4g
KHggPiAwLjAgfHwgeCA8IDAuMCkgPyBmYWxzZSA6IHggIT0gMC4wO1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
KTsKIAotICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BJc05hbiwgZmxvYXQyLAorICAg
IGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbigKKyAgICAgICAgRU9wSXNOYW4sIGZsb2F0MiwKICAg
ICAgICAgImJvb2wyIHdlYmdsX2lzbmFuX2VtdShmbG9hdDIgeClcbiIKICAgICAgICAgIntcbiIK
ICAgICAgICAgIiAgICBib29sMiBpc25hbjtcbiIKQEAgLTM5LDcgKzQzLDggQEAgdm9pZCBJbml0
QnVpbHRJbklzbmFuRnVuY3Rpb25FbXVsYXRvckZvckhMU0xXb3JrYXJvdW5kcyhCdWlsdEluRnVu
Y3Rpb25FbXVsYXRvcgogICAgICAgICAiICAgIHJldHVybiBpc25hbjtcbiIKICAgICAgICAgIn1c
biIpOwogCi0gICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcElzTmFuLCBmbG9hdDMsCisg
ICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKAorICAgICAgICBFT3BJc05hbiwgZmxvYXQzLAog
ICAgICAgICAiYm9vbDMgd2ViZ2xfaXNuYW5fZW11KGZsb2F0MyB4KVxuIgogICAgICAgICAie1xu
IgogICAgICAgICAiICAgIGJvb2wzIGlzbmFuO1xuIgpAQCAtNTAsNyArNTUsOCBAQCB2b2lkIElu
aXRCdWlsdEluSXNuYW5GdW5jdGlvbkVtdWxhdG9yRm9ySExTTFdvcmthcm91bmRzKEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yCiAgICAgICAgICIgICAgcmV0dXJuIGlzbmFuO1xuIgogICAgICAgICAi
fVxuIik7CiAKLSAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wSXNOYW4sIGZsb2F0NCwK
KyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oCisgICAgICAgIEVPcElzTmFuLCBmbG9hdDQs
CiAgICAgICAgICJib29sNCB3ZWJnbF9pc25hbl9lbXUoZmxvYXQ0IHgpXG4iCiAgICAgICAgICJ7
XG4iCiAgICAgICAgICIgICAgYm9vbDQgaXNuYW47XG4iCkBAIC02OCwxMTcgKzc0LDE4OCBAQCB2
b2lkIEluaXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvckZvckhMU0woQnVpbHRJbkZ1bmN0aW9uRW11
bGF0b3IgKmVtdSkKICAgICBUVHlwZSAqZmxvYXQyID0gbmV3IFRUeXBlKEVidEZsb2F0LCAyKTsK
ICAgICBUVHlwZSAqZmxvYXQzID0gbmV3IFRUeXBlKEVidEZsb2F0LCAzKTsKICAgICBUVHlwZSAq
ZmxvYXQ0ID0gbmV3IFRUeXBlKEVidEZsb2F0LCA0KTsKKyAgICBUVHlwZSAqaW50MSAgID0gbmV3
IFRUeXBlKEVidEludCk7CisgICAgVFR5cGUgKmludDIgICA9IG5ldyBUVHlwZShFYnRJbnQsIDIp
OworICAgIFRUeXBlICppbnQzICAgPSBuZXcgVFR5cGUoRWJ0SW50LCAzKTsKKyAgICBUVHlwZSAq
aW50NCAgID0gbmV3IFRUeXBlKEVidEludCwgNCk7CisgICAgVFR5cGUgKnVpbnQxICA9IG5ldyBU
VHlwZShFYnRVSW50KTsKKyAgICBUVHlwZSAqdWludDIgID0gbmV3IFRUeXBlKEVidFVJbnQsIDIp
OworICAgIFRUeXBlICp1aW50MyAgPSBuZXcgVFR5cGUoRWJ0VUludCwgMyk7CisgICAgVFR5cGUg
KnVpbnQ0ICA9IG5ldyBUVHlwZShFYnRVSW50LCA0KTsKIAogICAgIGVtdS0+YWRkRW11bGF0ZWRG
dW5jdGlvbihFT3BNb2QsIGZsb2F0MSwgZmxvYXQxLAotICAgICAgICAiZmxvYXQgd2ViZ2xfbW9k
X2VtdShmbG9hdCB4LCBmbG9hdCB5KVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIHJl
dHVybiB4IC0geSAqIGZsb29yKHggLyB5KTtcbiIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgIlxu
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdCB3ZWJnbF9tb2RfZW11KGZs
b2F0IHgsIGZsb2F0IHkpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHggLSB5ICogZmxvb3IoeCAv
IHkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiXG4iKTsKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9w
TW9kLCBmbG9hdDIsIGZsb2F0MiwKLSAgICAgICAgImZsb2F0MiB3ZWJnbF9tb2RfZW11KGZsb2F0
MiB4LCBmbG9hdDIgeSlcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICByZXR1cm4geCAt
IHkgKiBmbG9vcih4IC8geSk7XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJcbiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQyIHdlYmdsX21vZF9lbXUoZmxvYXQyIHgs
IGZsb2F0MiB5KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB4IC0geSAqIGZsb29yKHggLyB5KTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIik7CiAgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcE1vZCwg
ZmxvYXQyLCBmbG9hdDEsCi0gICAgICAgICJmbG9hdDIgd2ViZ2xfbW9kX2VtdShmbG9hdDIgeCwg
ZmxvYXQgeSlcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICByZXR1cm4geCAtIHkgKiBm
bG9vcih4IC8geSk7XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJcbiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZmxvYXQyIHdlYmdsX21vZF9lbXUoZmxvYXQyIHgsIGZsb2F0
IHkpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHggLSB5ICogZmxvb3IoeCAvIHkpO1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iKTsKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wTW9kLCBmbG9hdDMs
IGZsb2F0MywKLSAgICAgICAgImZsb2F0MyB3ZWJnbF9tb2RfZW11KGZsb2F0MyB4LCBmbG9hdDMg
eSlcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICByZXR1cm4geCAtIHkgKiBmbG9vcih4
IC8geSk7XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJcbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZmxvYXQzIHdlYmdsX21vZF9lbXUoZmxvYXQzIHgsIGZsb2F0MyB5KVxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIHJldHVybiB4IC0geSAqIGZsb29yKHggLyB5KTtcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIik7CiAgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcE1vZCwgZmxvYXQzLCBmbG9h
dDEsCi0gICAgICAgICJmbG9hdDMgd2ViZ2xfbW9kX2VtdShmbG9hdDMgeCwgZmxvYXQgeSlcbiIK
LSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICByZXR1cm4geCAtIHkgKiBmbG9vcih4IC8geSk7
XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJcbiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZmxvYXQzIHdlYmdsX21vZF9lbXUoZmxvYXQzIHgsIGZsb2F0IHkpXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgICAgcmV0dXJuIHggLSB5ICogZmxvb3IoeCAvIHkpO1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iKTsK
ICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wTW9kLCBmbG9hdDQsIGZsb2F0NCwKLSAg
ICAgICAgImZsb2F0NCB3ZWJnbF9tb2RfZW11KGZsb2F0NCB4LCBmbG9hdDQgeSlcbiIKLSAgICAg
ICAgIntcbiIKLSAgICAgICAgIiAgICByZXR1cm4geCAtIHkgKiBmbG9vcih4IC8geSk7XG4iCi0g
ICAgICAgICJ9XG4iCi0gICAgICAgICJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZmxvYXQ0IHdlYmdsX21vZF9lbXUoZmxvYXQ0IHgsIGZsb2F0NCB5KVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ICAgIHJldHVybiB4IC0geSAqIGZsb29yKHggLyB5KTtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIik7CiAgICAg
ZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcE1vZCwgZmxvYXQ0LCBmbG9hdDEsCi0gICAgICAg
ICJmbG9hdDQgd2ViZ2xfbW9kX2VtdShmbG9hdDQgeCwgZmxvYXQgeSlcbiIKLSAgICAgICAgIntc
biIKLSAgICAgICAgIiAgICByZXR1cm4geCAtIHkgKiBmbG9vcih4IC8geSk7XG4iCi0gICAgICAg
ICJ9XG4iCi0gICAgICAgICJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxv
YXQ0IHdlYmdsX21vZF9lbXUoZmxvYXQ0IHgsIGZsb2F0IHkpXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0
dXJuIHggLSB5ICogZmxvb3IoeCAvIHkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iKTsKKworICAgIGVtdS0+
YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BGcmV4cCwgZmxvYXQxLCBpbnQxLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZmxvYXQgd2ViZ2xfZnJleHBfZW11KGZsb2F0IHgsIG91dCBpbnQg
ZXhwKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IGZleHA7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgICAgZmxvYXQgbWFudGlzc2EgPSBmcmV4cChhYnMoeCksIGZleHApICogc2ln
bih4KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBleHAgPSBpbnQoZmV4
cCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIG1hbnRpc3Nh
O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iKTsKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wRnJl
eHAsIGZsb2F0MiwgaW50MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0MiB3
ZWJnbF9mcmV4cF9lbXUoZmxvYXQyIHgsIG91dCBpbnQyIGV4cClcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBm
bG9hdDIgZmV4cDtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDIg
bWFudGlzc2EgPSBmcmV4cChhYnMoeCksIGZleHApICogc2lnbih4KTtcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiAgICBleHAgPSBpbnQyKGZleHApO1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIHJldHVybiBtYW50aXNzYTtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIik7
CisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcEZyZXhwLCBmbG9hdDMsIGludDMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDMgd2ViZ2xfZnJleHBfZW11KGZsb2F0
MyB4LCBvdXQgaW50MyBleHApXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQzIGZleHA7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQzIG1hbnRpc3NhID0gZnJleHAoYWJz
KHgpLCBmZXhwKSAqIHNpZ24oeCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
ICAgZXhwID0gaW50MyhmZXhwKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICByZXR1cm4gbWFudGlzc2E7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIpOworICAgIGVtdS0+YWRkRW11bGF0
ZWRGdW5jdGlvbihFT3BGcmV4cCwgZmxvYXQ0LCBpbnQ0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZmxvYXQ0IHdlYmdsX2ZyZXhwX2VtdShmbG9hdDQgeCwgb3V0IGludDQgZXhwKVxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIGZsb2F0NCBmZXhwO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIGZsb2F0NCBtYW50aXNzYSA9IGZyZXhwKGFicyh4KSwgZmV4cCkgKiBzaWduKHgp
O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGV4cCA9IGludDQoZmV4cCk7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIG1hbnRpc3NhO1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiXG4iKTsKKworICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BMZGV4
cCwgZmxvYXQxLCBpbnQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQgd2Vi
Z2xfbGRleHBfZW11KGZsb2F0IHgsIGludCBleHApXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIGxk
ZXhwKHgsIGZsb2F0KGV4cCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iKTsKKyAgICBlbXUtPmFkZEVtdWxh
dGVkRnVuY3Rpb24oRU9wTGRleHAsIGZsb2F0MiwgaW50MiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImZsb2F0MiB3ZWJnbF9sZGV4cF9lbXUoZmxvYXQyIHgsIGludDIgZXhwKVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICAgIHJldHVybiBsZGV4cCh4LCBmbG9hdDIoZXhwKSk7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJc
biIpOworICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BMZGV4cCwgZmxvYXQzLCBpbnQz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQzIHdlYmdsX2xkZXhwX2VtdShm
bG9hdDMgeCwgaW50MyBleHApXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIGxkZXhwKHgsIGZsb2F0
MyhleHApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIik7CisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9u
KEVPcExkZXhwLCBmbG9hdDQsIGludDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJm
bG9hdDQgd2ViZ2xfbGRleHBfZW11KGZsb2F0NCB4LCBpbnQ0IGV4cClcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICByZXR1cm4gbGRleHAoeCwgZmxvYXQ0KGV4cCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iKTsKIAogICAg
IGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BGYWNlRm9yd2FyZCwgZmxvYXQxLCBmbG9hdDEs
IGZsb2F0MSwKLSAgICAgICAgImZsb2F0IHdlYmdsX2ZhY2Vmb3J3YXJkX2VtdShmbG9hdCBOLCBm
bG9hdCBJLCBmbG9hdCBOcmVmKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIGlmKGRv
dChOcmVmLCBJKSA+PSAwKVxuIgotICAgICAgICAiICAgIHtcbiIKLSAgICAgICAgIiAgICAgICAg
cmV0dXJuIC1OO1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgIiAgICBlbHNlXG4iCi0g
ICAgICAgICIgICAge1xuIgotICAgICAgICAiICAgICAgICByZXR1cm4gTjtcbiIKLSAgICAgICAg
IiAgICB9XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJcbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZmxvYXQgd2ViZ2xfZmFjZWZvcndhcmRfZW11KGZsb2F0IE4sIGZsb2F0
IEksIGZsb2F0IE5yZWYpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgaWYoZG90KE5yZWYsIEkpID49IDApXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAge1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiICAgICAgICByZXR1cm4gLU47XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgICAgfVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGVs
c2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIgICAgICAgIHJldHVybiBOO1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1c
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIik7CiAgICAgZW11LT5hZGRFbXVs
YXRlZEZ1bmN0aW9uKEVPcEZhY2VGb3J3YXJkLCBmbG9hdDIsIGZsb2F0MiwgZmxvYXQyLAotICAg
ICAgICAiZmxvYXQyIHdlYmdsX2ZhY2Vmb3J3YXJkX2VtdShmbG9hdDIgTiwgZmxvYXQyIEksIGZs
b2F0MiBOcmVmKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIGlmKGRvdChOcmVmLCBJ
KSA+PSAwKVxuIgotICAgICAgICAiICAgIHtcbiIKLSAgICAgICAgIiAgICAgICAgcmV0dXJuIC1O
O1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgIiAgICBlbHNlXG4iCi0gICAgICAgICIg
ICAge1xuIgotICAgICAgICAiICAgICAgICByZXR1cm4gTjtcbiIKLSAgICAgICAgIiAgICB9XG4i
Ci0gICAgICAgICJ9XG4iCi0gICAgICAgICJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZmxvYXQyIHdlYmdsX2ZhY2Vmb3J3YXJkX2VtdShmbG9hdDIgTiwgZmxvYXQyIEksIGZs
b2F0MiBOcmVmKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICAgIGlmKGRvdChOcmVmLCBJKSA+PSAwKVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICAgICAgcmV0dXJuIC1OO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIH1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBlbHNlXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAge1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiICAgICAgICByZXR1cm4gTjtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICB9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIpOwogICAgIGVtdS0+YWRkRW11bGF0ZWRG
dW5jdGlvbihFT3BGYWNlRm9yd2FyZCwgZmxvYXQzLCBmbG9hdDMsIGZsb2F0MywKLSAgICAgICAg
ImZsb2F0MyB3ZWJnbF9mYWNlZm9yd2FyZF9lbXUoZmxvYXQzIE4sIGZsb2F0MyBJLCBmbG9hdDMg
TnJlZilcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBpZihkb3QoTnJlZiwgSSkgPj0g
MClcbiIKLSAgICAgICAgIiAgICB7XG4iCi0gICAgICAgICIgICAgICAgIHJldHVybiAtTjtcbiIK
LSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICIgICAgZWxzZVxuIgotICAgICAgICAiICAgIHtc
biIKLSAgICAgICAgIiAgICAgICAgcmV0dXJuIE47XG4iCi0gICAgICAgICIgICAgfVxuIgotICAg
ICAgICAifVxuIgotICAgICAgICAiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImZsb2F0MyB3ZWJnbF9mYWNlZm9yd2FyZF9lbXUoZmxvYXQzIE4sIGZsb2F0MyBJLCBmbG9hdDMg
TnJlZilcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiAgICBpZihkb3QoTnJlZiwgSSkgPj0gMClcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgICAgICAgIHJldHVybiAtTjtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiAgICB9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZWxzZVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICAgICAgcmV0dXJuIE47XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgICAgfVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iKTsKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rp
b24oRU9wRmFjZUZvcndhcmQsIGZsb2F0NCwgZmxvYXQ0LCBmbG9hdDQsCi0gICAgICAgICJmbG9h
dDQgd2ViZ2xfZmFjZWZvcndhcmRfZW11KGZsb2F0NCBOLCBmbG9hdDQgSSwgZmxvYXQ0IE5yZWYp
XG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgaWYoZG90KE5yZWYsIEkpID49IDApXG4i
Ci0gICAgICAgICIgICAge1xuIgotICAgICAgICAiICAgICAgICByZXR1cm4gLU47XG4iCi0gICAg
ICAgICIgICAgfVxuIgotICAgICAgICAiICAgIGVsc2VcbiIKLSAgICAgICAgIiAgICB7XG4iCi0g
ICAgICAgICIgICAgICAgIHJldHVybiBOO1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAg
In1cbiIKLSAgICAgICAgIlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9h
dDQgd2ViZ2xfZmFjZWZvcndhcmRfZW11KGZsb2F0NCBOLCBmbG9hdDQgSSwgZmxvYXQ0IE5yZWYp
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIgICAgaWYoZG90KE5yZWYsIEkpID49IDApXG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICAge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ICAgICAgICByZXR1cm4gLU47XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAg
fVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGVsc2VcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgICAgICAgIHJldHVybiBOO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ICAgIH1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIik7CiAKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24o
RU9wQXRhbiwgZmxvYXQxLCBmbG9hdDEsCi0gICAgICAgICJmbG9hdCB3ZWJnbF9hdGFuX2VtdShm
bG9hdCB5LCBmbG9hdCB4KVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIGlmKHggPT0g
MCAmJiB5ID09IDApIHggPSAxO1xuIiAgIC8vIEF2b2lkIHByb2R1Y2luZyBhIE5hTgotICAgICAg
ICAiICAgIHJldHVybiBhdGFuMih5LCB4KTtcbiIKLSAgICAgICAgIn1cbiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZmxvYXQgd2ViZ2xfYXRhbl9lbXUoZmxvYXQgeSwgZmxvYXQg
eClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiAgICBpZih4ID09IDAgJiYgeSA9PSAwKSB4ID0gMTtcbiIgIC8vIEF2
b2lkIHByb2R1Y2luZyBhIE5hTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJl
dHVybiBhdGFuMih5LCB4KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIp
OwogICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BBdGFuLCBmbG9hdDIsIGZsb2F0MiwK
LSAgICAgICAgImZsb2F0MiB3ZWJnbF9hdGFuX2VtdShmbG9hdDIgeSwgZmxvYXQyIHgpXG4iCi0g
ICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgaWYoeFswXSA9PSAwICYmIHlbMF0gPT0gMCkgeFsw
XSA9IDE7XG4iCi0gICAgICAgICIgICAgaWYoeFsxXSA9PSAwICYmIHlbMV0gPT0gMCkgeFsxXSA9
IDE7XG4iCi0gICAgICAgICIgICAgcmV0dXJuIGZsb2F0MihhdGFuMih5WzBdLCB4WzBdKSwgYXRh
bjIoeVsxXSwgeFsxXSkpO1xuIgotICAgICAgICAifVxuIik7Ci0gICAgZW11LT5hZGRFbXVsYXRl
ZEZ1bmN0aW9uKEVPcEF0YW4sIGZsb2F0MywgZmxvYXQzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZmxvYXQyIHdlYmdsX2F0YW5fZW11KGZsb2F0MiB5LCBmbG9hdDIgeClcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICBpZih4WzBdID09IDAgJiYgeVswXSA9PSAwKSB4WzBdID0gMTtcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBpZih4WzFdID09IDAgJiYgeVsxXSA9PSAwKSB4
WzFdID0gMTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gZmxv
YXQyKGF0YW4yKHlbMF0sIHhbMF0pLCBhdGFuMih5WzFdLCB4WzFdKSk7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24o
CisgICAgICAgIEVPcEF0YW4sIGZsb2F0MywgZmxvYXQzLAogICAgICAgICAiZmxvYXQzIHdlYmds
X2F0YW5fZW11KGZsb2F0MyB5LCBmbG9hdDMgeClcbiIKICAgICAgICAgIntcbiIKICAgICAgICAg
IiAgICBpZih4WzBdID09IDAgJiYgeVswXSA9PSAwKSB4WzBdID0gMTtcbiIKQEAgLTE4Nyw3OCAr
MjY0LDgyIEBAIHZvaWQgSW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yRm9ySExTTChCdWlsdElu
RnVuY3Rpb25FbXVsYXRvciAqZW11KQogICAgICAgICAiICAgIHJldHVybiBmbG9hdDMoYXRhbjIo
eVswXSwgeFswXSksIGF0YW4yKHlbMV0sIHhbMV0pLCBhdGFuMih5WzJdLCB4WzJdKSk7XG4iCiAg
ICAgICAgICJ9XG4iKTsKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wQXRhbiwgZmxv
YXQ0LCBmbG9hdDQsCi0gICAgICAgICJmbG9hdDQgd2ViZ2xfYXRhbl9lbXUoZmxvYXQ0IHksIGZs
b2F0NCB4KVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIGlmKHhbMF0gPT0gMCAmJiB5
WzBdID09IDApIHhbMF0gPSAxO1xuIgotICAgICAgICAiICAgIGlmKHhbMV0gPT0gMCAmJiB5WzFd
ID09IDApIHhbMV0gPSAxO1xuIgotICAgICAgICAiICAgIGlmKHhbMl0gPT0gMCAmJiB5WzJdID09
IDApIHhbMl0gPSAxO1xuIgotICAgICAgICAiICAgIGlmKHhbM10gPT0gMCAmJiB5WzNdID09IDAp
IHhbM10gPSAxO1xuIgotICAgICAgICAiICAgIHJldHVybiBmbG9hdDQoYXRhbjIoeVswXSwgeFsw
XSksIGF0YW4yKHlbMV0sIHhbMV0pLCBhdGFuMih5WzJdLCB4WzJdKSwgYXRhbjIoeVszXSwgeFsz
XSkpO1xuIgotICAgICAgICAifVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJm
bG9hdDQgd2ViZ2xfYXRhbl9lbXUoZmxvYXQ0IHksIGZsb2F0NCB4KVxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAg
IGlmKHhbMF0gPT0gMCAmJiB5WzBdID09IDApIHhbMF0gPSAxO1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiICAgIGlmKHhbMV0gPT0gMCAmJiB5WzFdID09IDApIHhbMV0gPSAxO1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGlmKHhbMl0gPT0gMCAmJiB5WzJd
ID09IDApIHhbMl0gPSAxO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGlm
KHhbM10gPT0gMCAmJiB5WzNdID09IDApIHhbM10gPSAxO1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIHJldHVybiBmbG9hdDQoYXRhbjIoeVswXSwgeFswXSksIGF0YW4yKHlb
MV0sIHhbMV0pLCBhdGFuMih5WzJdLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ4
WzJdKSwgYXRhbjIoeVszXSwgeFszXSkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAifVxuIik7CiAKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wQXNpbmgsIGZsb2F0
MSwKLSAgICAgICAgImZsb2F0IHdlYmdsX2FzaW5oX2VtdShpbiBmbG9hdCB4KSB7XG4iCi0gICAg
ICAgICIgICAgcmV0dXJuIGxvZyh4ICsgc3FydChwb3coeCwgMi4wKSArIDEuMCkpO1xuIgotICAg
ICAgICAifVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdCB3ZWJnbF9h
c2luaF9lbXUoaW4gZmxvYXQgeCkge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ICAgIHJldHVybiBsb2coeCArIHNxcnQocG93KHgsIDIuMCkgKyAxLjApKTtcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIn1cbiIpOwogICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlv
bihFT3BBc2luaCwgZmxvYXQyLAotICAgICAgICAiZmxvYXQyIHdlYmdsX2FzaW5oX2VtdShpbiBm
bG9hdDIgeCkge1xuIgotICAgICAgICAiICAgIHJldHVybiBsb2coeCArIHNxcnQocG93KHgsIDIu
MCkgKyAxLjApKTtcbiIKLSAgICAgICAgIn1cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZmxvYXQyIHdlYmdsX2FzaW5oX2VtdShpbiBmbG9hdDIgeCkge1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiBsb2coeCArIHNxcnQocG93KHgsIDIuMCkg
KyAxLjApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIpOwogICAgIGVt
dS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BBc2luaCwgZmxvYXQzLAotICAgICAgICAiZmxvYXQz
IHdlYmdsX2FzaW5oX2VtdShpbiBmbG9hdDMgeCkge1xuIgotICAgICAgICAiICAgIHJldHVybiBs
b2coeCArIHNxcnQocG93KHgsIDIuMCkgKyAxLjApKTtcbiIKLSAgICAgICAgIn1cbiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQzIHdlYmdsX2FzaW5oX2VtdShpbiBmbG9h
dDMgeCkge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiBsb2co
eCArIHNxcnQocG93KHgsIDIuMCkgKyAxLjApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIn1cbiIpOwogICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BBc2luaCwgZmxv
YXQ0LAotICAgICAgICAiZmxvYXQ0IHdlYmdsX2FzaW5oX2VtdShpbiBmbG9hdDQgeCkge1xuIgot
ICAgICAgICAiICAgIHJldHVybiBsb2coeCArIHNxcnQocG93KHgsIDIuMCkgKyAxLjApKTtcbiIK
LSAgICAgICAgIn1cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IHdl
YmdsX2FzaW5oX2VtdShpbiBmbG9hdDQgeCkge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIHJldHVybiBsb2coeCArIHNxcnQocG93KHgsIDIuMCkgKyAxLjApKTtcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIpOwogCiAgICAgZW11LT5hZGRFbXVsYXRl
ZEZ1bmN0aW9uKEVPcEFjb3NoLCBmbG9hdDEsCi0gICAgICAgICJmbG9hdCB3ZWJnbF9hY29zaF9l
bXUoaW4gZmxvYXQgeCkge1xuIgotICAgICAgICAiICAgIHJldHVybiBsb2coeCArIHNxcnQoeCAr
IDEuMCkgKiBzcXJ0KHggLSAxLjApKTtcbiIKLSAgICAgICAgIn1cbiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZmxvYXQgd2ViZ2xfYWNvc2hfZW11KGluIGZsb2F0IHgpIHtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gbG9nKHggKyBzcXJ0KHgg
KyAxLjApICogc3FydCh4IC0gMS4wKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ9XG4iKTsKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wQWNvc2gsIGZsb2F0MiwK
LSAgICAgICAgImZsb2F0MiB3ZWJnbF9hY29zaF9lbXUoaW4gZmxvYXQyIHgpIHtcbiIKLSAgICAg
ICAgIiAgICByZXR1cm4gbG9nKHggKyBzcXJ0KHggKyAxLjApICogc3FydCh4IC0gMS4wKSk7XG4i
Ci0gICAgICAgICJ9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0MiB3
ZWJnbF9hY29zaF9lbXUoaW4gZmxvYXQyIHgpIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICByZXR1cm4gbG9nKHggKyBzcXJ0KHggKyAxLjApICogc3FydCh4IC0gMS4wKSk7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKICAgICBlbXUtPmFkZEVt
dWxhdGVkRnVuY3Rpb24oRU9wQWNvc2gsIGZsb2F0MywKLSAgICAgICAgImZsb2F0MyB3ZWJnbF9h
Y29zaF9lbXUoaW4gZmxvYXQzIHgpIHtcbiIKLSAgICAgICAgIiAgICByZXR1cm4gbG9nKHggKyBz
cXJ0KHggKyAxLjApICogc3FydCh4IC0gMS4wKSk7XG4iCi0gICAgICAgICJ9XG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0MyB3ZWJnbF9hY29zaF9lbXUoaW4gZmxvYXQz
IHgpIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gbG9nKHgg
KyBzcXJ0KHggKyAxLjApICogc3FydCh4IC0gMS4wKSk7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJ9XG4iKTsKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wQWNvc2gs
IGZsb2F0NCwKLSAgICAgICAgImZsb2F0NCB3ZWJnbF9hY29zaF9lbXUoaW4gZmxvYXQ0IHgpIHtc
biIKLSAgICAgICAgIiAgICByZXR1cm4gbG9nKHggKyBzcXJ0KHggKyAxLjApICogc3FydCh4IC0g
MS4wKSk7XG4iCi0gICAgICAgICJ9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImZsb2F0NCB3ZWJnbF9hY29zaF9lbXUoaW4gZmxvYXQ0IHgpIHtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiAgICByZXR1cm4gbG9nKHggKyBzcXJ0KHggKyAxLjApICogc3FydCh4
IC0gMS4wKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKIAogICAg
IGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BBdGFuaCwgZmxvYXQxLAotICAgICAgICAiZmxv
YXQgd2ViZ2xfYXRhbmhfZW11KGluIGZsb2F0IHgpIHtcbiIKLSAgICAgICAgIiAgICByZXR1cm4g
MC41ICogbG9nKCgxLjAgKyB4KSAvICgxLjAgLSB4KSk7XG4iCi0gICAgICAgICJ9XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0IHdlYmdsX2F0YW5oX2VtdShpbiBmbG9h
dCB4KSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIDAuNSAq
IGxvZygoMS4wICsgeCkgLyAoMS4wIC0geCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAifVxuIik7CiAgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcEF0YW5oLCBmbG9h
dDIsCi0gICAgICAgICJmbG9hdDIgd2ViZ2xfYXRhbmhfZW11KGluIGZsb2F0MiB4KSB7XG4iCi0g
ICAgICAgICIgICAgcmV0dXJuIDAuNSAqIGxvZygoMS4wICsgeCkgLyAoMS4wIC0geCkpO1xuIgot
ICAgICAgICAifVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDIgd2Vi
Z2xfYXRhbmhfZW11KGluIGZsb2F0MiB4KSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgICAgcmV0dXJuIDAuNSAqIGxvZygoMS4wICsgeCkgLyAoMS4wIC0geCkpO1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIik7CiAgICAgZW11LT5hZGRFbXVsYXRlZEZ1
bmN0aW9uKEVPcEF0YW5oLCBmbG9hdDMsCi0gICAgICAgICJmbG9hdDMgd2ViZ2xfYXRhbmhfZW11
KGluIGZsb2F0MyB4KSB7XG4iCi0gICAgICAgICIgICAgcmV0dXJuIDAuNSAqIGxvZygoMS4wICsg
eCkgLyAoMS4wIC0geCkpO1xuIgotICAgICAgICAifVxuIik7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJmbG9hdDMgd2ViZ2xfYXRhbmhfZW11KGluIGZsb2F0MyB4KSB7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIDAuNSAqIGxvZygoMS4wICsgeCkg
LyAoMS4wIC0geCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIik7CiAg
ICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcEF0YW5oLCBmbG9hdDQsCi0gICAgICAgICJm
bG9hdDQgd2ViZ2xfYXRhbmhfZW11KGluIGZsb2F0NCB4KSB7XG4iCi0gICAgICAgICIgICAgcmV0
dXJuIDAuNSAqIGxvZygoMS4wICsgeCkgLyAoMS4wIC0geCkpO1xuIgotICAgICAgICAifVxuIik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDQgd2ViZ2xfYXRhbmhfZW11KGlu
IGZsb2F0NCB4KSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJu
IDAuNSAqIGxvZygoMS4wICsgeCkgLyAoMS4wIC0geCkpO1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAifVxuIik7CiAKLSAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wUm91
bmRFdmVuLCBmbG9hdDEsCisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKAorICAgICAgICBF
T3BSb3VuZEV2ZW4sIGZsb2F0MSwKICAgICAgICAgImZsb2F0IHdlYmdsX3JvdW5kRXZlbl9lbXUo
aW4gZmxvYXQgeCkge1xuIgogICAgICAgICAiICAgIHJldHVybiAoZnJhYyh4KSA9PSAwLjUgJiYg
dHJ1bmMoeCkgJSAyLjAgPT0gMC4wKSA/IHRydW5jKHgpIDogcm91bmQoeCk7XG4iCiAgICAgICAg
ICJ9XG4iKTsKLSAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wUm91bmRFdmVuLCBmbG9h
dDIsCisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKAorICAgICAgICBFT3BSb3VuZEV2ZW4s
IGZsb2F0MiwKICAgICAgICAgImZsb2F0MiB3ZWJnbF9yb3VuZEV2ZW5fZW11KGluIGZsb2F0MiB4
KSB7XG4iCiAgICAgICAgICIgICAgZmxvYXQyIHY7XG4iCiAgICAgICAgICIgICAgdlswXSA9IChm
cmFjKHhbMF0pID09IDAuNSAmJiB0cnVuYyh4WzBdKSAlIDIuMCA9PSAwLjApID8gdHJ1bmMoeFsw
XSkgOiByb3VuZCh4WzBdKTtcbiIKICAgICAgICAgIiAgICB2WzFdID0gKGZyYWMoeFsxXSkgPT0g
MC41ICYmIHRydW5jKHhbMV0pICUgMi4wID09IDAuMCkgPyB0cnVuYyh4WzFdKSA6IHJvdW5kKHhb
MV0pO1xuIgogICAgICAgICAiICAgIHJldHVybiB2O1xuIgogICAgICAgICAifVxuIik7Ci0gICAg
ZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcFJvdW5kRXZlbiwgZmxvYXQzLAorICAgIGVtdS0+
YWRkRW11bGF0ZWRGdW5jdGlvbigKKyAgICAgICAgRU9wUm91bmRFdmVuLCBmbG9hdDMsCiAgICAg
ICAgICJmbG9hdDMgd2ViZ2xfcm91bmRFdmVuX2VtdShpbiBmbG9hdDMgeCkge1xuIgogICAgICAg
ICAiICAgIGZsb2F0MyB2O1xuIgogICAgICAgICAiICAgIHZbMF0gPSAoZnJhYyh4WzBdKSA9PSAw
LjUgJiYgdHJ1bmMoeFswXSkgJSAyLjAgPT0gMC4wKSA/IHRydW5jKHhbMF0pIDogcm91bmQoeFsw
XSk7XG4iCkBAIC0yNjYsNyArMzQ3LDggQEAgdm9pZCBJbml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3JGb3JITFNMKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUpCiAgICAgICAgICIgICAgdlsy
XSA9IChmcmFjKHhbMl0pID09IDAuNSAmJiB0cnVuYyh4WzJdKSAlIDIuMCA9PSAwLjApID8gdHJ1
bmMoeFsyXSkgOiByb3VuZCh4WzJdKTtcbiIKICAgICAgICAgIiAgICByZXR1cm4gdjtcbiIKICAg
ICAgICAgIn1cbiIpOwotICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BSb3VuZEV2ZW4s
IGZsb2F0NCwKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oCisgICAgICAgIEVPcFJvdW5k
RXZlbiwgZmxvYXQ0LAogICAgICAgICAiZmxvYXQ0IHdlYmdsX3JvdW5kRXZlbl9lbXUoaW4gZmxv
YXQ0IHgpIHtcbiIKICAgICAgICAgIiAgICBmbG9hdDQgdjtcbiIKICAgICAgICAgIiAgICB2WzBd
ID0gKGZyYWMoeFswXSkgPT0gMC41ICYmIHRydW5jKHhbMF0pICUgMi4wID09IDAuMCkgPyB0cnVu
Yyh4WzBdKSA6IHJvdW5kKHhbMF0pO1xuIgpAQCAtMjc3LDYxICszNTksMTEzIEBAIHZvaWQgSW5p
dEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yRm9ySExTTChCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAq
ZW11KQogICAgICAgICAifVxuIik7CiAKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9w
UGFja1Nub3JtMngxNiwgZmxvYXQyLAotICAgICAgICAiaW50IHdlYmdsX3RvU25vcm0oaW4gZmxv
YXQgeCkge1xuIgotICAgICAgICAiICAgIHJldHVybiBpbnQocm91bmQoY2xhbXAoeCwgLTEuMCwg
MS4wKSAqIDMyNzY3LjApKTtcbiIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgIlxuIgotICAgICAg
ICAidWludCB3ZWJnbF9wYWNrU25vcm0yeDE2X2VtdShpbiBmbG9hdDIgdikge1xuIgotICAgICAg
ICAiICAgIGludCB4ID0gd2ViZ2xfdG9Tbm9ybSh2LngpO1xuIgotICAgICAgICAiICAgIGludCB5
ID0gd2ViZ2xfdG9Tbm9ybSh2LnkpO1xuIgotICAgICAgICAiICAgIHJldHVybiAoYXN1aW50KHkp
IDw8IDE2KSB8IChhc3VpbnQoeCkgJiAweGZmZmZ1KTtcbiIKLSAgICAgICAgIn1cbiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50IHdlYmdsX3RvU25vcm0xNihpbiBmbG9hdCB4
KSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIGludChyb3Vu
ZChjbGFtcCh4LCAtMS4wLCAxLjApICogMzI3NjcuMCkpO1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ1aW50IHdlYmdsX3BhY2tTbm9ybTJ4MTZfZW11KGlu
IGZsb2F0MiB2KSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgaW50IHgg
PSB3ZWJnbF90b1Nub3JtMTYodi54KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiAgICBpbnQgeSA9IHdlYmdsX3RvU25vcm0xNih2LnkpO1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIHJldHVybiAoYXN1aW50KHkpIDw8IDE2KSB8IChhc3VpbnQoeCkgJiAw
eGZmZmZ1KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIpOwogICAgIGVt
dS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BQYWNrVW5vcm0yeDE2LCBmbG9hdDIsCi0gICAgICAg
ICJ1aW50IHdlYmdsX3RvVW5vcm0oaW4gZmxvYXQgeCkge1xuIgotICAgICAgICAiICAgIHJldHVy
biB1aW50KHJvdW5kKGNsYW1wKHgsIDAuMCwgMS4wKSAqIDY1NTM1LjApKTtcbiIKLSAgICAgICAg
In1cbiIKLSAgICAgICAgIlxuIgotICAgICAgICAidWludCB3ZWJnbF9wYWNrVW5vcm0yeDE2X2Vt
dShpbiBmbG9hdDIgdikge1xuIgotICAgICAgICAiICAgIHVpbnQgeCA9IHdlYmdsX3RvVW5vcm0o
di54KTtcbiIKLSAgICAgICAgIiAgICB1aW50IHkgPSB3ZWJnbF90b1Vub3JtKHYueSk7XG4iCi0g
ICAgICAgICIgICAgcmV0dXJuICh5IDw8IDE2KSB8IHg7XG4iCi0gICAgICAgICJ9XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInVpbnQgd2ViZ2xfdG9Vbm9ybTE2KGluIGZsb2F0
IHgpIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdWludChy
b3VuZChjbGFtcCh4LCAwLjAsIDEuMCkgKiA2NTUzNS4wKSk7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInVpbnQgd2ViZ2xfcGFja1Vub3JtMngxNl9lbXUo
aW4gZmxvYXQyIHYpIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB1aW50
IHggPSB3ZWJnbF90b1Vub3JtMTYodi54KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiAgICB1aW50IHkgPSB3ZWJnbF90b1Vub3JtMTYodi55KTtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiAgICByZXR1cm4gKHkgPDwgMTYpIHwgeDtcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIn1cbiIpOwogICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihF
T3BQYWNrSGFsZjJ4MTYsIGZsb2F0MiwKLSAgICAgICAgInVpbnQgd2ViZ2xfcGFja0hhbGYyeDE2
X2VtdShpbiBmbG9hdDIgdikge1xuIgotICAgICAgICAiICAgIHVpbnQgeCA9IGYzMnRvZjE2KHYu
eCk7XG4iCi0gICAgICAgICIgICAgdWludCB5ID0gZjMydG9mMTYodi55KTtcbiIKLSAgICAgICAg
IiAgICByZXR1cm4gKHkgPDwgMTYpIHwgeDtcbiIKLSAgICAgICAgIn1cbiIpOwotCi0gICAgVFR5
cGUgKnVpbnQxID0gbmV3IFRUeXBlKEVidFVJbnQpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAidWludCB3ZWJnbF9wYWNrSGFsZjJ4MTZfZW11KGluIGZsb2F0MiB2KSB7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgdWludCB4ID0gZjMydG9mMTYodi54KTtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB1aW50IHkgPSBmMzJ0b2YxNih2Lnkp
O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiAoeSA8PCAxNikg
fCB4O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIik7CiAKICAgICBlbXUt
PmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wVW5wYWNrU25vcm0yeDE2LCB1aW50MSwKLSAgICAgICAg
ImZsb2F0IHdlYmdsX2Zyb21Tbm9ybShpbiB1aW50IHgpIHtcbiIKLSAgICAgICAgIiAgICBpbnQg
eGkgPSBhc2ludCh4ICYgMHg3ZmZmdSkgLSBhc2ludCh4ICYgMHg4MDAwdSk7XG4iCi0gICAgICAg
ICIgICAgcmV0dXJuIGNsYW1wKGZsb2F0KHhpKSAvIDMyNzY3LjAsIC0xLjAsIDEuMCk7XG4iCi0g
ICAgICAgICJ9XG4iCi0gICAgICAgICJcbiIKLSAgICAgICAgImZsb2F0MiB3ZWJnbF91bnBhY2tT
bm9ybTJ4MTZfZW11KGluIHVpbnQgdSkge1xuIgotICAgICAgICAiICAgIHVpbnQgeSA9ICh1ID4+
IDE2KTtcbiIKLSAgICAgICAgIiAgICB1aW50IHggPSB1O1xuIgotICAgICAgICAiICAgIHJldHVy
biBmbG9hdDIod2ViZ2xfZnJvbVNub3JtKHgpLCB3ZWJnbF9mcm9tU25vcm0oeSkpO1xuIgotICAg
ICAgICAifVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdCB3ZWJnbF9m
cm9tU25vcm0xNihpbiB1aW50IHgpIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiAgICBpbnQgeGkgPSBhc2ludCh4ICYgMHg3ZmZmdSkgLSBhc2ludCh4ICYgMHg4MDAwdSk7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIGNsYW1wKGZsb2F0KHhp
KSAvIDMyNzY3LjAsIC0xLjAsIDEuMCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImZsb2F0MiB3ZWJnbF91bnBhY2tTbm9ybTJ4MTZfZW11KGluIHVpbnQg
dSkge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHVpbnQgeSA9ICh1ID4+
IDE2KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB1aW50IHggPSB1O1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiBmbG9hdDIod2ViZ2xf
ZnJvbVNub3JtMTYoeCksIHdlYmdsX2Zyb21Tbm9ybTE2KHkpKTtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIn1cbiIpOwogICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BV
bnBhY2tVbm9ybTJ4MTYsIHVpbnQxLAotICAgICAgICAiZmxvYXQgd2ViZ2xfZnJvbVVub3JtKGlu
IHVpbnQgeCkge1xuIgotICAgICAgICAiICAgIHJldHVybiBmbG9hdCh4KSAvIDY1NTM1LjA7XG4i
Ci0gICAgICAgICJ9XG4iCi0gICAgICAgICJcbiIKLSAgICAgICAgImZsb2F0MiB3ZWJnbF91bnBh
Y2tVbm9ybTJ4MTZfZW11KGluIHVpbnQgdSkge1xuIgotICAgICAgICAiICAgIHVpbnQgeSA9ICh1
ID4+IDE2KTtcbiIKLSAgICAgICAgIiAgICB1aW50IHggPSB1ICYgMHhmZmZmdTtcbiIKLSAgICAg
ICAgIiAgICByZXR1cm4gZmxvYXQyKHdlYmdsX2Zyb21Vbm9ybSh4KSwgd2ViZ2xfZnJvbVVub3Jt
KHkpKTtcbiIKLSAgICAgICAgIn1cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZmxvYXQgd2ViZ2xfZnJvbVVub3JtMTYoaW4gdWludCB4KSB7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIgICAgcmV0dXJuIGZsb2F0KHgpIC8gNjU1MzUuMDtcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQyIHdlYmdsX3VucGFja1Vu
b3JtMngxNl9lbXUoaW4gdWludCB1KSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIgICAgdWludCB5ID0gKHUgPj4gMTYpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgIHVpbnQgeCA9IHUgJiAweGZmZmZ1O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIHJldHVybiBmbG9hdDIod2ViZ2xfZnJvbVVub3JtMTYoeCksIHdlYmdsX2Zyb21V
bm9ybTE2KHkpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIpOwogICAg
IGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BVbnBhY2tIYWxmMngxNiwgdWludDEsCi0gICAg
ICAgICJmbG9hdDIgd2ViZ2xfdW5wYWNrSGFsZjJ4MTZfZW11KGluIHVpbnQgdSkge1xuIgotICAg
ICAgICAiICAgIHVpbnQgeSA9ICh1ID4+IDE2KTtcbiIKLSAgICAgICAgIiAgICB1aW50IHggPSB1
ICYgMHhmZmZmdTtcbiIKLSAgICAgICAgIiAgICByZXR1cm4gZmxvYXQyKGYxNnRvZjMyKHgpLCBm
MTZ0b2YzMih5KSk7XG4iCi0gICAgICAgICJ9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImZsb2F0MiB3ZWJnbF91bnBhY2tIYWxmMngxNl9lbXUoaW4gdWludCB1KSB7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgdWludCB5ID0gKHUgPj4gMTYpO1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHVpbnQgeCA9IHUgJiAweGZmZmZ1O1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiBmbG9hdDIoZjE2dG9m
MzIoeCksIGYxNnRvZjMyKHkpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1c
biIpOworCisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcFBhY2tTbm9ybTR4OCwgZmxv
YXQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50IHdlYmdsX3RvU25vcm04KGlu
IGZsb2F0IHgpIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4g
aW50KHJvdW5kKGNsYW1wKHgsIC0xLjAsIDEuMCkgKiAxMjcuMCkpO1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1aW50IHdlYmdsX3BhY2tTbm9ybTR4OF9l
bXUoaW4gZmxvYXQ0IHYpIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBp
bnQgeCA9IHdlYmdsX3RvU25vcm04KHYueCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgICAgaW50IHkgPSB3ZWJnbF90b1Nub3JtOCh2LnkpO1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiICAgIGludCB6ID0gd2ViZ2xfdG9Tbm9ybTgodi56KTtcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBpbnQgdyA9IHdlYmdsX3RvU25vcm04KHYudyk7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuICgoYXN1aW50KHcp
ICYgMHhmZnUpIDw8IDI0KSB8ICgoYXN1aW50KHopICYgMHhmZnUpIDw8IDE2KSAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ8ICgoYXN1aW50KHkpICYgMHhmZnUpIDw8IDgpIHwgKGFz
dWludCh4KSAmIDB4ZmZ1KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIp
OworICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BQYWNrVW5vcm00eDgsIGZsb2F0NCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVpbnQgd2ViZ2xfdG9Vbm9ybTgoaW4gZmxv
YXQgeCkge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB1aW50
KHJvdW5kKGNsYW1wKHgsIDAuMCwgMS4wKSAqIDI1NS4wKSk7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInVpbnQgd2ViZ2xfcGFja1Vub3JtNHg4X2VtdShp
biBmbG9hdDQgdikge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHVpbnQg
eCA9IHdlYmdsX3RvVW5vcm04KHYueCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIgICAgdWludCB5ID0gd2ViZ2xfdG9Vbm9ybTgodi55KTtcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiAgICB1aW50IHogPSB3ZWJnbF90b1Vub3JtOCh2LnopO1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICAgIHVpbnQgdyA9IHdlYmdsX3RvVW5vcm04KHYudyk7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuICh3IDw8IDI0KSB8
ICh6IDw8IDE2KSB8ICh5IDw8IDgpIHwgeDtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIn1cbiIpOworCisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcFVucGFja1Nub3Jt
NHg4LCB1aW50MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0IHdlYmdsX2Zy
b21Tbm9ybTgoaW4gdWludCB4KSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
ICAgaW50IHhpID0gYXNpbnQoeCAmIDB4N2Z1KSAtIGFzaW50KHggJiAweDgwdSk7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIGNsYW1wKGZsb2F0KHhpKSAvIDEy
Ny4wLCAtMS4wLCAxLjApO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJmbG9hdDQgd2ViZ2xfdW5wYWNrU25vcm00eDhfZW11KGluIHVpbnQgdSkge1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHVpbnQgdyA9ICh1ID4+IDI0KTtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB1aW50IHogPSAodSA+PiAxNik7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgdWludCB5ID0gKHUgPj4gOCk7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgdWludCB4ID0gdTtcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gZmxvYXQ0KHdlYmdsX2Zyb21Tbm9y
bTgoeCksIHdlYmdsX2Zyb21Tbm9ybTgoeSksICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIndlYmdsX2Zyb21Tbm9ybTgoeiksIHdlYmdsX2Zyb21Tbm9ybTgodykpO1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAifVxuIik7CisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0
aW9uKEVPcFVucGFja1Vub3JtNHg4LCB1aW50MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImZsb2F0IHdlYmdsX2Zyb21Vbm9ybTgoaW4gdWludCB4KSB7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIGZsb2F0KHgpIC8gMjU1LjA7XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0NCB3ZWJnbF91bnBhY2tV
bm9ybTR4OF9lbXUoaW4gdWludCB1KSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIgICAgdWludCB3ID0gKHUgPj4gMjQpICYgMHhmZnU7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgICAgdWludCB6ID0gKHUgPj4gMTYpICYgMHhmZnU7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIgICAgdWludCB5ID0gKHUgPj4gOCkgJiAweGZmdTtcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB1aW50IHggPSB1ICYgMHhmZnU7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIGZsb2F0NCh3ZWJnbF9mcm9t
VW5vcm04KHgpLCB3ZWJnbF9mcm9tVW5vcm04KHkpLCAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ3ZWJnbF9mcm9tVW5vcm04KHopLCB3ZWJnbF9mcm9tVW5vcm04KHcpKTtcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIpOwogCiAgICAgLy8gVGhlIG1hdHJpeCBy
ZXN1bHRpbmcgZnJvbSBvdXRlciBwcm9kdWN0IG5lZWRzIHRvIGJlIHRyYW5zcG9zZWQKICAgICAv
LyAobWF0cmljZXMgYXJlIHN0b3JlZCBhcyB0cmFuc3Bvc2VkIHRvIHNpbXBsaWZ5IGVsZW1lbnQg
YWNjZXNzIGluIEhMU0wpLgpAQCAtMzQzLDQyICs0NzcsNDIgQEAgdm9pZCBJbml0QnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3JGb3JITFNMKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUpCiAgICAg
Ly8gdHJhbnNwb3NlIG9mIHIsIHdlIHNpbXBseSBjYW4gYnVpbGQgYSBjb2x1bW4gbWF0cml4IG91
dCBvZiB0aGUgb3JpZ2luYWwKICAgICAvLyB2ZWN0b3IgaW5zdGVhZCBvZiBhIHJvdyBtYXRyaXgu
CiAgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcE91dGVyUHJvZHVjdCwgZmxvYXQyLCBm
bG9hdDIsCi0gICAgICAgICJmbG9hdDJ4MiB3ZWJnbF9vdXRlclByb2R1Y3RfZW11KGluIGZsb2F0
MiBjLCBpbiBmbG9hdDIgcikge1xuIgotICAgICAgICAiICAgIHJldHVybiBtdWwoZmxvYXQyeDEo
ciksIGZsb2F0MXgyKGMpKTtcbiIKLSAgICAgICAgIn1cbiIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZmxvYXQyeDIgd2ViZ2xfb3V0ZXJQcm9kdWN0X2VtdShpbiBmbG9hdDIgYywg
aW4gZmxvYXQyIHIpIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1
cm4gbXVsKGZsb2F0MngxKHIpLCBmbG9hdDF4MihjKSk7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJ9XG4iKTsKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wT3V0ZXJQ
cm9kdWN0LCBmbG9hdDMsIGZsb2F0MywKLSAgICAgICAgImZsb2F0M3gzIHdlYmdsX291dGVyUHJv
ZHVjdF9lbXUoaW4gZmxvYXQzIGMsIGluIGZsb2F0MyByKSB7XG4iCi0gICAgICAgICIgICAgcmV0
dXJuIG11bChmbG9hdDN4MShyKSwgZmxvYXQxeDMoYykpO1xuIgotICAgICAgICAifVxuIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDN4MyB3ZWJnbF9vdXRlclByb2R1Y3Rf
ZW11KGluIGZsb2F0MyBjLCBpbiBmbG9hdDMgcikge1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICAgIHJldHVybiBtdWwoZmxvYXQzeDEociksIGZsb2F0MXgzKGMpKTtcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIpOwogICAgIGVtdS0+YWRkRW11bGF0ZWRG
dW5jdGlvbihFT3BPdXRlclByb2R1Y3QsIGZsb2F0NCwgZmxvYXQ0LAotICAgICAgICAiZmxvYXQ0
eDQgd2ViZ2xfb3V0ZXJQcm9kdWN0X2VtdShpbiBmbG9hdDQgYywgaW4gZmxvYXQ0IHIpIHtcbiIK
LSAgICAgICAgIiAgICByZXR1cm4gbXVsKGZsb2F0NHgxKHIpLCBmbG9hdDF4NChjKSk7XG4iCi0g
ICAgICAgICJ9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0NHg0IHdl
YmdsX291dGVyUHJvZHVjdF9lbXUoaW4gZmxvYXQ0IGMsIGluIGZsb2F0NCByKSB7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIG11bChmbG9hdDR4MShyKSwgZmxv
YXQxeDQoYykpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIik7CiAKICAg
ICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wT3V0ZXJQcm9kdWN0LCBmbG9hdDMsIGZsb2F0
MiwKLSAgICAgICAgImZsb2F0MngzIHdlYmdsX291dGVyUHJvZHVjdF9lbXUoaW4gZmxvYXQzIGMs
IGluIGZsb2F0MiByKSB7XG4iCi0gICAgICAgICIgICAgcmV0dXJuIG11bChmbG9hdDJ4MShyKSwg
ZmxvYXQxeDMoYykpO1xuIgotICAgICAgICAifVxuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJmbG9hdDJ4MyB3ZWJnbF9vdXRlclByb2R1Y3RfZW11KGluIGZsb2F0MyBjLCBpbiBm
bG9hdDIgcikge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiBt
dWwoZmxvYXQyeDEociksIGZsb2F0MXgzKGMpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIn1cbiIpOwogICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BPdXRlclByb2R1
Y3QsIGZsb2F0MiwgZmxvYXQzLAotICAgICAgICAiZmxvYXQzeDIgd2ViZ2xfb3V0ZXJQcm9kdWN0
X2VtdShpbiBmbG9hdDIgYywgaW4gZmxvYXQzIHIpIHtcbiIKLSAgICAgICAgIiAgICByZXR1cm4g
bXVsKGZsb2F0M3gxKHIpLCBmbG9hdDF4MihjKSk7XG4iCi0gICAgICAgICJ9XG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0M3gyIHdlYmdsX291dGVyUHJvZHVjdF9lbXUo
aW4gZmxvYXQyIGMsIGluIGZsb2F0MyByKSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgICAgcmV0dXJuIG11bChmbG9hdDN4MShyKSwgZmxvYXQxeDIoYykpO1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAifVxuIik7CiAgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0
aW9uKEVPcE91dGVyUHJvZHVjdCwgZmxvYXQ0LCBmbG9hdDIsCi0gICAgICAgICJmbG9hdDJ4NCB3
ZWJnbF9vdXRlclByb2R1Y3RfZW11KGluIGZsb2F0NCBjLCBpbiBmbG9hdDIgcikge1xuIgotICAg
ICAgICAiICAgIHJldHVybiBtdWwoZmxvYXQyeDEociksIGZsb2F0MXg0KGMpKTtcbiIKLSAgICAg
ICAgIn1cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQyeDQgd2ViZ2xf
b3V0ZXJQcm9kdWN0X2VtdShpbiBmbG9hdDQgYywgaW4gZmxvYXQyIHIpIHtcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gbXVsKGZsb2F0MngxKHIpLCBmbG9hdDF4
NChjKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKICAgICBlbXUt
PmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wT3V0ZXJQcm9kdWN0LCBmbG9hdDIsIGZsb2F0NCwKLSAg
ICAgICAgImZsb2F0NHgyIHdlYmdsX291dGVyUHJvZHVjdF9lbXUoaW4gZmxvYXQyIGMsIGluIGZs
b2F0NCByKSB7XG4iCi0gICAgICAgICIgICAgcmV0dXJuIG11bChmbG9hdDR4MShyKSwgZmxvYXQx
eDIoYykpO1xuIgotICAgICAgICAifVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJmbG9hdDR4MiB3ZWJnbF9vdXRlclByb2R1Y3RfZW11KGluIGZsb2F0MiBjLCBpbiBmbG9hdDQg
cikge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiBtdWwoZmxv
YXQ0eDEociksIGZsb2F0MXgyKGMpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
In1cbiIpOwogICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BPdXRlclByb2R1Y3QsIGZs
b2F0NCwgZmxvYXQzLAotICAgICAgICAiZmxvYXQzeDQgd2ViZ2xfb3V0ZXJQcm9kdWN0X2VtdShp
biBmbG9hdDQgYywgaW4gZmxvYXQzIHIpIHtcbiIKLSAgICAgICAgIiAgICByZXR1cm4gbXVsKGZs
b2F0M3gxKHIpLCBmbG9hdDF4NChjKSk7XG4iCi0gICAgICAgICJ9XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImZsb2F0M3g0IHdlYmdsX291dGVyUHJvZHVjdF9lbXUoaW4gZmxv
YXQ0IGMsIGluIGZsb2F0MyByKSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
ICAgcmV0dXJuIG11bChmbG9hdDN4MShyKSwgZmxvYXQxeDQoYykpO1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAifVxuIik7CiAgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVP
cE91dGVyUHJvZHVjdCwgZmxvYXQzLCBmbG9hdDQsCi0gICAgICAgICJmbG9hdDR4MyB3ZWJnbF9v
dXRlclByb2R1Y3RfZW11KGluIGZsb2F0MyBjLCBpbiBmbG9hdDQgcikge1xuIgotICAgICAgICAi
ICAgIHJldHVybiBtdWwoZmxvYXQ0eDEociksIGZsb2F0MXgzKGMpKTtcbiIKLSAgICAgICAgIn1c
biIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQ0eDMgd2ViZ2xfb3V0ZXJQ
cm9kdWN0X2VtdShpbiBmbG9hdDMgYywgaW4gZmxvYXQ0IHIpIHtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiAgICByZXR1cm4gbXVsKGZsb2F0NHgxKHIpLCBmbG9hdDF4MyhjKSk7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKIAogICAgIFRUeXBlICpt
YXQyID0gbmV3IFRUeXBlKEVidEZsb2F0LCAyLCAyKTsKICAgICBUVHlwZSAqbWF0MyA9IG5ldyBU
VHlwZShFYnRGbG9hdCwgMywgMyk7CkBAIC00MDAsMTQgKzUzNCwxNSBAQCB2b2lkIEluaXRCdWls
dEluRnVuY3Rpb25FbXVsYXRvckZvckhMU0woQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSkK
ICAgICAvLyBmb3Igc2luZ3VsYXIgb3IgcG9vcmx5LWNvbmRpdGlvbmVkIG1hdHJpY2VzLgogCiAg
ICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcEludmVyc2UsIG1hdDIsCi0gICAgICAgICJm
bG9hdDJ4MiB3ZWJnbF9pbnZlcnNlX2VtdShpbiBmbG9hdDJ4MiBtKSB7XG4iCi0gICAgICAgICIg
ICAgZmxvYXQyeDIgY29mID0geyBtWzFdWzFdLCAtbVswXVsxXSwgLW1bMV1bMF0sIG1bMF1bMF0g
fTtcbiIKLSAgICAgICAgIiAgICByZXR1cm4gY29mIC8gZGV0ZXJtaW5hbnQodHJhbnNwb3NlKG0p
KTtcbiIKLSAgICAgICAgIn1cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxv
YXQyeDIgd2ViZ2xfaW52ZXJzZV9lbXUoaW4gZmxvYXQyeDIgbSkge1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIGZsb2F0MngyIGNvZiA9IHsgbVsxXVsxXSwgLW1bMF1bMV0s
IC1tWzFdWzBdLCBtWzBdWzBdIH07XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
ICAgcmV0dXJuIGNvZiAvIGRldGVybWluYW50KHRyYW5zcG9zZShtKSk7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKIAogICAgIC8vIGNvZkFCIGlzIHRoZSBjb2ZhY3Rv
ciBmb3IgY29sdW1uIEEgYW5kIHJvdyBCLgogCi0gICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9u
KEVPcEludmVyc2UsIG1hdDMsCisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKAorICAgICAg
ICBFT3BJbnZlcnNlLCBtYXQzLAogICAgICAgICAiZmxvYXQzeDMgd2ViZ2xfaW52ZXJzZV9lbXUo
aW4gZmxvYXQzeDMgbSkge1xuIgogICAgICAgICAiICAgIGZsb2F0IGNvZjAwID0gbVsxXVsxXSAq
IG1bMl1bMl0gLSBtWzJdWzFdICogbVsxXVsyXTtcbiIKICAgICAgICAgIiAgICBmbG9hdCBjb2Yw
MSA9IC0obVsxXVswXSAqIG1bMl1bMl0gLSBtWzJdWzBdICogbVsxXVsyXSk7XG4iCkBAIC00MjIs
NDIgKzU1Nyw3NSBAQCB2b2lkIEluaXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvckZvckhMU0woQnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSkKICAgICAgICAgIiAgICByZXR1cm4gY29mIC8gZGV0
ZXJtaW5hbnQodHJhbnNwb3NlKG0pKTtcbiIKICAgICAgICAgIn1cbiIpOwogCi0gICAgZW11LT5h
ZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcEludmVyc2UsIG1hdDQsCisgICAgZW11LT5hZGRFbXVsYXRl
ZEZ1bmN0aW9uKAorICAgICAgICBFT3BJbnZlcnNlLCBtYXQ0LAogICAgICAgICAiZmxvYXQ0eDQg
d2ViZ2xfaW52ZXJzZV9lbXUoaW4gZmxvYXQ0eDQgbSkge1xuIgotICAgICAgICAiICAgIGZsb2F0
IGNvZjAwID0gbVsxXVsxXSAqIG1bMl1bMl0gKiBtWzNdWzNdICsgbVsyXVsxXSAqIG1bM11bMl0g
KiBtWzFdWzNdICsgbVszXVsxXSAqIG1bMV1bMl0gKiBtWzJdWzNdIgotICAgICAgICAgICAgICAg
ICAgICAgICAiIC0gbVsxXVsxXSAqIG1bM11bMl0gKiBtWzJdWzNdIC0gbVsyXVsxXSAqIG1bMV1b
Ml0gKiBtWzNdWzNdIC0gbVszXVsxXSAqIG1bMl1bMl0gKiBtWzFdWzNdO1xuIgotICAgICAgICAi
ICAgIGZsb2F0IGNvZjAxID0gLShtWzFdWzBdICogbVsyXVsyXSAqIG1bM11bM10gKyBtWzJdWzBd
ICogbVszXVsyXSAqIG1bMV1bM10gKyBtWzNdWzBdICogbVsxXVsyXSAqIG1bMl1bM10iCi0gICAg
ICAgICAgICAgICAgICAgICAgICIgLSBtWzFdWzBdICogbVszXVsyXSAqIG1bMl1bM10gLSBtWzJd
WzBdICogbVsxXVsyXSAqIG1bM11bM10gLSBtWzNdWzBdICogbVsyXVsyXSAqIG1bMV1bM10pO1xu
IgotICAgICAgICAiICAgIGZsb2F0IGNvZjAyID0gbVsxXVswXSAqIG1bMl1bMV0gKiBtWzNdWzNd
ICsgbVsyXVswXSAqIG1bM11bMV0gKiBtWzFdWzNdICsgbVszXVswXSAqIG1bMV1bMV0gKiBtWzJd
WzNdIgotICAgICAgICAgICAgICAgICAgICAgICAiIC0gbVsxXVswXSAqIG1bM11bMV0gKiBtWzJd
WzNdIC0gbVsyXVswXSAqIG1bMV1bMV0gKiBtWzNdWzNdIC0gbVszXVswXSAqIG1bMl1bMV0gKiBt
WzFdWzNdO1xuIgotICAgICAgICAiICAgIGZsb2F0IGNvZjAzID0gLShtWzFdWzBdICogbVsyXVsx
XSAqIG1bM11bMl0gKyBtWzJdWzBdICogbVszXVsxXSAqIG1bMV1bMl0gKyBtWzNdWzBdICogbVsx
XVsxXSAqIG1bMl1bMl0iCi0gICAgICAgICAgICAgICAgICAgICAgICIgLSBtWzFdWzBdICogbVsz
XVsxXSAqIG1bMl1bMl0gLSBtWzJdWzBdICogbVsxXVsxXSAqIG1bM11bMl0gLSBtWzNdWzBdICog
bVsyXVsxXSAqIG1bMV1bMl0pO1xuIgotICAgICAgICAiICAgIGZsb2F0IGNvZjEwID0gLShtWzBd
WzFdICogbVsyXVsyXSAqIG1bM11bM10gKyBtWzJdWzFdICogbVszXVsyXSAqIG1bMF1bM10gKyBt
WzNdWzFdICogbVswXVsyXSAqIG1bMl1bM10iCi0gICAgICAgICAgICAgICAgICAgICAgICIgLSBt
WzBdWzFdICogbVszXVsyXSAqIG1bMl1bM10gLSBtWzJdWzFdICogbVswXVsyXSAqIG1bM11bM10g
LSBtWzNdWzFdICogbVsyXVsyXSAqIG1bMF1bM10pO1xuIgotICAgICAgICAiICAgIGZsb2F0IGNv
ZjExID0gbVswXVswXSAqIG1bMl1bMl0gKiBtWzNdWzNdICsgbVsyXVswXSAqIG1bM11bMl0gKiBt
WzBdWzNdICsgbVszXVswXSAqIG1bMF1bMl0gKiBtWzJdWzNdIgotICAgICAgICAgICAgICAgICAg
ICAgICAiIC0gbVswXVswXSAqIG1bM11bMl0gKiBtWzJdWzNdIC0gbVsyXVswXSAqIG1bMF1bMl0g
KiBtWzNdWzNdIC0gbVszXVswXSAqIG1bMl1bMl0gKiBtWzBdWzNdO1xuIgotICAgICAgICAiICAg
IGZsb2F0IGNvZjEyID0gLShtWzBdWzBdICogbVsyXVsxXSAqIG1bM11bM10gKyBtWzJdWzBdICog
bVszXVsxXSAqIG1bMF1bM10gKyBtWzNdWzBdICogbVswXVsxXSAqIG1bMl1bM10iCi0gICAgICAg
ICAgICAgICAgICAgICAgICIgLSBtWzBdWzBdICogbVszXVsxXSAqIG1bMl1bM10gLSBtWzJdWzBd
ICogbVswXVsxXSAqIG1bM11bM10gLSBtWzNdWzBdICogbVsyXVsxXSAqIG1bMF1bM10pO1xuIgot
ICAgICAgICAiICAgIGZsb2F0IGNvZjEzID0gbVswXVswXSAqIG1bMl1bMV0gKiBtWzNdWzJdICsg
bVsyXVswXSAqIG1bM11bMV0gKiBtWzBdWzJdICsgbVszXVswXSAqIG1bMF1bMV0gKiBtWzJdWzJd
IgotICAgICAgICAgICAgICAgICAgICAgICAiIC0gbVswXVswXSAqIG1bM11bMV0gKiBtWzJdWzJd
IC0gbVsyXVswXSAqIG1bMF1bMV0gKiBtWzNdWzJdIC0gbVszXVswXSAqIG1bMl1bMV0gKiBtWzBd
WzJdO1xuIgotICAgICAgICAiICAgIGZsb2F0IGNvZjIwID0gbVswXVsxXSAqIG1bMV1bMl0gKiBt
WzNdWzNdICsgbVsxXVsxXSAqIG1bM11bMl0gKiBtWzBdWzNdICsgbVszXVsxXSAqIG1bMF1bMl0g
KiBtWzFdWzNdIgotICAgICAgICAgICAgICAgICAgICAgICAiIC0gbVswXVsxXSAqIG1bM11bMl0g
KiBtWzFdWzNdIC0gbVsxXVsxXSAqIG1bMF1bMl0gKiBtWzNdWzNdIC0gbVszXVsxXSAqIG1bMV1b
Ml0gKiBtWzBdWzNdO1xuIgotICAgICAgICAiICAgIGZsb2F0IGNvZjIxID0gLShtWzBdWzBdICog
bVsxXVsyXSAqIG1bM11bM10gKyBtWzFdWzBdICogbVszXVsyXSAqIG1bMF1bM10gKyBtWzNdWzBd
ICogbVswXVsyXSAqIG1bMV1bM10iCi0gICAgICAgICAgICAgICAgICAgICAgICIgLSBtWzBdWzBd
ICogbVszXVsyXSAqIG1bMV1bM10gLSBtWzFdWzBdICogbVswXVsyXSAqIG1bM11bM10gLSBtWzNd
WzBdICogbVsxXVsyXSAqIG1bMF1bM10pO1xuIgotICAgICAgICAiICAgIGZsb2F0IGNvZjIyID0g
bVswXVswXSAqIG1bMV1bMV0gKiBtWzNdWzNdICsgbVsxXVswXSAqIG1bM11bMV0gKiBtWzBdWzNd
ICsgbVszXVswXSAqIG1bMF1bMV0gKiBtWzFdWzNdIgotICAgICAgICAgICAgICAgICAgICAgICAi
IC0gbVswXVswXSAqIG1bM11bMV0gKiBtWzFdWzNdIC0gbVsxXVswXSAqIG1bMF1bMV0gKiBtWzNd
WzNdIC0gbVszXVswXSAqIG1bMV1bMV0gKiBtWzBdWzNdO1xuIgotICAgICAgICAiICAgIGZsb2F0
IGNvZjIzID0gLShtWzBdWzBdICogbVsxXVsxXSAqIG1bM11bMl0gKyBtWzFdWzBdICogbVszXVsx
XSAqIG1bMF1bMl0gKyBtWzNdWzBdICogbVswXVsxXSAqIG1bMV1bMl0iCi0gICAgICAgICAgICAg
ICAgICAgICAgICIgLSBtWzBdWzBdICogbVszXVsxXSAqIG1bMV1bMl0gLSBtWzFdWzBdICogbVsw
XVsxXSAqIG1bM11bMl0gLSBtWzNdWzBdICogbVsxXVsxXSAqIG1bMF1bMl0pO1xuIgotICAgICAg
ICAiICAgIGZsb2F0IGNvZjMwID0gLShtWzBdWzFdICogbVsxXVsyXSAqIG1bMl1bM10gKyBtWzFd
WzFdICogbVsyXVsyXSAqIG1bMF1bM10gKyBtWzJdWzFdICogbVswXVsyXSAqIG1bMV1bM10iCi0g
ICAgICAgICAgICAgICAgICAgICAgICIgLSBtWzBdWzFdICogbVsyXVsyXSAqIG1bMV1bM10gLSBt
WzFdWzFdICogbVswXVsyXSAqIG1bMl1bM10gLSBtWzJdWzFdICogbVsxXVsyXSAqIG1bMF1bM10p
O1xuIgotICAgICAgICAiICAgIGZsb2F0IGNvZjMxID0gbVswXVswXSAqIG1bMV1bMl0gKiBtWzJd
WzNdICsgbVsxXVswXSAqIG1bMl1bMl0gKiBtWzBdWzNdICsgbVsyXVswXSAqIG1bMF1bMl0gKiBt
WzFdWzNdIgotICAgICAgICAgICAgICAgICAgICAgICAiIC0gbVswXVswXSAqIG1bMl1bMl0gKiBt
WzFdWzNdIC0gbVsxXVswXSAqIG1bMF1bMl0gKiBtWzJdWzNdIC0gbVsyXVswXSAqIG1bMV1bMl0g
KiBtWzBdWzNdO1xuIgotICAgICAgICAiICAgIGZsb2F0IGNvZjMyID0gLShtWzBdWzBdICogbVsx
XVsxXSAqIG1bMl1bM10gKyBtWzFdWzBdICogbVsyXVsxXSAqIG1bMF1bM10gKyBtWzJdWzBdICog
bVswXVsxXSAqIG1bMV1bM10iCi0gICAgICAgICAgICAgICAgICAgICAgICIgLSBtWzBdWzBdICog
bVsyXVsxXSAqIG1bMV1bM10gLSBtWzFdWzBdICogbVswXVsxXSAqIG1bMl1bM10gLSBtWzJdWzBd
ICogbVsxXVsxXSAqIG1bMF1bM10pO1xuIgotICAgICAgICAiICAgIGZsb2F0IGNvZjMzID0gbVsw
XVswXSAqIG1bMV1bMV0gKiBtWzJdWzJdICsgbVsxXVswXSAqIG1bMl1bMV0gKiBtWzBdWzJdICsg
bVsyXVswXSAqIG1bMF1bMV0gKiBtWzFdWzJdIgotICAgICAgICAgICAgICAgICAgICAgICAiIC0g
bVswXVswXSAqIG1bMl1bMV0gKiBtWzFdWzJdIC0gbVsxXVswXSAqIG1bMF1bMV0gKiBtWzJdWzJd
IC0gbVsyXVswXSAqIG1bMV1bMV0gKiBtWzBdWzJdO1xuIgorICAgICAgICAiICAgIGZsb2F0IGNv
ZjAwID0gbVsxXVsxXSAqIG1bMl1bMl0gKiBtWzNdWzNdICsgbVsyXVsxXSAqIG1bM11bMl0gKiBt
WzFdWzNdICsgbVszXVsxXSAqICIKKyAgICAgICAgIm1bMV1bMl0gKiBtWzJdWzNdIgorICAgICAg
ICAiIC0gbVsxXVsxXSAqIG1bM11bMl0gKiBtWzJdWzNdIC0gbVsyXVsxXSAqIG1bMV1bMl0gKiBt
WzNdWzNdIC0gbVszXVsxXSAqIG1bMl1bMl0gKiAiCisgICAgICAgICJtWzFdWzNdO1xuIgorICAg
ICAgICAiICAgIGZsb2F0IGNvZjAxID0gLShtWzFdWzBdICogbVsyXVsyXSAqIG1bM11bM10gKyBt
WzJdWzBdICogbVszXVsyXSAqIG1bMV1bM10gKyBtWzNdWzBdICogIgorICAgICAgICAibVsxXVsy
XSAqIG1bMl1bM10iCisgICAgICAgICIgLSBtWzFdWzBdICogbVszXVsyXSAqIG1bMl1bM10gLSBt
WzJdWzBdICogbVsxXVsyXSAqIG1bM11bM10gLSBtWzNdWzBdICogbVsyXVsyXSAqICIKKyAgICAg
ICAgIm1bMV1bM10pO1xuIgorICAgICAgICAiICAgIGZsb2F0IGNvZjAyID0gbVsxXVswXSAqIG1b
Ml1bMV0gKiBtWzNdWzNdICsgbVsyXVswXSAqIG1bM11bMV0gKiBtWzFdWzNdICsgbVszXVswXSAq
ICIKKyAgICAgICAgIm1bMV1bMV0gKiBtWzJdWzNdIgorICAgICAgICAiIC0gbVsxXVswXSAqIG1b
M11bMV0gKiBtWzJdWzNdIC0gbVsyXVswXSAqIG1bMV1bMV0gKiBtWzNdWzNdIC0gbVszXVswXSAq
IG1bMl1bMV0gKiAiCisgICAgICAgICJtWzFdWzNdO1xuIgorICAgICAgICAiICAgIGZsb2F0IGNv
ZjAzID0gLShtWzFdWzBdICogbVsyXVsxXSAqIG1bM11bMl0gKyBtWzJdWzBdICogbVszXVsxXSAq
IG1bMV1bMl0gKyBtWzNdWzBdICogIgorICAgICAgICAibVsxXVsxXSAqIG1bMl1bMl0iCisgICAg
ICAgICIgLSBtWzFdWzBdICogbVszXVsxXSAqIG1bMl1bMl0gLSBtWzJdWzBdICogbVsxXVsxXSAq
IG1bM11bMl0gLSBtWzNdWzBdICogbVsyXVsxXSAqICIKKyAgICAgICAgIm1bMV1bMl0pO1xuIgor
ICAgICAgICAiICAgIGZsb2F0IGNvZjEwID0gLShtWzBdWzFdICogbVsyXVsyXSAqIG1bM11bM10g
KyBtWzJdWzFdICogbVszXVsyXSAqIG1bMF1bM10gKyBtWzNdWzFdICogIgorICAgICAgICAibVsw
XVsyXSAqIG1bMl1bM10iCisgICAgICAgICIgLSBtWzBdWzFdICogbVszXVsyXSAqIG1bMl1bM10g
LSBtWzJdWzFdICogbVswXVsyXSAqIG1bM11bM10gLSBtWzNdWzFdICogbVsyXVsyXSAqICIKKyAg
ICAgICAgIm1bMF1bM10pO1xuIgorICAgICAgICAiICAgIGZsb2F0IGNvZjExID0gbVswXVswXSAq
IG1bMl1bMl0gKiBtWzNdWzNdICsgbVsyXVswXSAqIG1bM11bMl0gKiBtWzBdWzNdICsgbVszXVsw
XSAqICIKKyAgICAgICAgIm1bMF1bMl0gKiBtWzJdWzNdIgorICAgICAgICAiIC0gbVswXVswXSAq
IG1bM11bMl0gKiBtWzJdWzNdIC0gbVsyXVswXSAqIG1bMF1bMl0gKiBtWzNdWzNdIC0gbVszXVsw
XSAqIG1bMl1bMl0gKiAiCisgICAgICAgICJtWzBdWzNdO1xuIgorICAgICAgICAiICAgIGZsb2F0
IGNvZjEyID0gLShtWzBdWzBdICogbVsyXVsxXSAqIG1bM11bM10gKyBtWzJdWzBdICogbVszXVsx
XSAqIG1bMF1bM10gKyBtWzNdWzBdICogIgorICAgICAgICAibVswXVsxXSAqIG1bMl1bM10iCisg
ICAgICAgICIgLSBtWzBdWzBdICogbVszXVsxXSAqIG1bMl1bM10gLSBtWzJdWzBdICogbVswXVsx
XSAqIG1bM11bM10gLSBtWzNdWzBdICogbVsyXVsxXSAqICIKKyAgICAgICAgIm1bMF1bM10pO1xu
IgorICAgICAgICAiICAgIGZsb2F0IGNvZjEzID0gbVswXVswXSAqIG1bMl1bMV0gKiBtWzNdWzJd
ICsgbVsyXVswXSAqIG1bM11bMV0gKiBtWzBdWzJdICsgbVszXVswXSAqICIKKyAgICAgICAgIm1b
MF1bMV0gKiBtWzJdWzJdIgorICAgICAgICAiIC0gbVswXVswXSAqIG1bM11bMV0gKiBtWzJdWzJd
IC0gbVsyXVswXSAqIG1bMF1bMV0gKiBtWzNdWzJdIC0gbVszXVswXSAqIG1bMl1bMV0gKiAiCisg
ICAgICAgICJtWzBdWzJdO1xuIgorICAgICAgICAiICAgIGZsb2F0IGNvZjIwID0gbVswXVsxXSAq
IG1bMV1bMl0gKiBtWzNdWzNdICsgbVsxXVsxXSAqIG1bM11bMl0gKiBtWzBdWzNdICsgbVszXVsx
XSAqICIKKyAgICAgICAgIm1bMF1bMl0gKiBtWzFdWzNdIgorICAgICAgICAiIC0gbVswXVsxXSAq
IG1bM11bMl0gKiBtWzFdWzNdIC0gbVsxXVsxXSAqIG1bMF1bMl0gKiBtWzNdWzNdIC0gbVszXVsx
XSAqIG1bMV1bMl0gKiAiCisgICAgICAgICJtWzBdWzNdO1xuIgorICAgICAgICAiICAgIGZsb2F0
IGNvZjIxID0gLShtWzBdWzBdICogbVsxXVsyXSAqIG1bM11bM10gKyBtWzFdWzBdICogbVszXVsy
XSAqIG1bMF1bM10gKyBtWzNdWzBdICogIgorICAgICAgICAibVswXVsyXSAqIG1bMV1bM10iCisg
ICAgICAgICIgLSBtWzBdWzBdICogbVszXVsyXSAqIG1bMV1bM10gLSBtWzFdWzBdICogbVswXVsy
XSAqIG1bM11bM10gLSBtWzNdWzBdICogbVsxXVsyXSAqICIKKyAgICAgICAgIm1bMF1bM10pO1xu
IgorICAgICAgICAiICAgIGZsb2F0IGNvZjIyID0gbVswXVswXSAqIG1bMV1bMV0gKiBtWzNdWzNd
ICsgbVsxXVswXSAqIG1bM11bMV0gKiBtWzBdWzNdICsgbVszXVswXSAqICIKKyAgICAgICAgIm1b
MF1bMV0gKiBtWzFdWzNdIgorICAgICAgICAiIC0gbVswXVswXSAqIG1bM11bMV0gKiBtWzFdWzNd
IC0gbVsxXVswXSAqIG1bMF1bMV0gKiBtWzNdWzNdIC0gbVszXVswXSAqIG1bMV1bMV0gKiAiCisg
ICAgICAgICJtWzBdWzNdO1xuIgorICAgICAgICAiICAgIGZsb2F0IGNvZjIzID0gLShtWzBdWzBd
ICogbVsxXVsxXSAqIG1bM11bMl0gKyBtWzFdWzBdICogbVszXVsxXSAqIG1bMF1bMl0gKyBtWzNd
WzBdICogIgorICAgICAgICAibVswXVsxXSAqIG1bMV1bMl0iCisgICAgICAgICIgLSBtWzBdWzBd
ICogbVszXVsxXSAqIG1bMV1bMl0gLSBtWzFdWzBdICogbVswXVsxXSAqIG1bM11bMl0gLSBtWzNd
WzBdICogbVsxXVsxXSAqICIKKyAgICAgICAgIm1bMF1bMl0pO1xuIgorICAgICAgICAiICAgIGZs
b2F0IGNvZjMwID0gLShtWzBdWzFdICogbVsxXVsyXSAqIG1bMl1bM10gKyBtWzFdWzFdICogbVsy
XVsyXSAqIG1bMF1bM10gKyBtWzJdWzFdICogIgorICAgICAgICAibVswXVsyXSAqIG1bMV1bM10i
CisgICAgICAgICIgLSBtWzBdWzFdICogbVsyXVsyXSAqIG1bMV1bM10gLSBtWzFdWzFdICogbVsw
XVsyXSAqIG1bMl1bM10gLSBtWzJdWzFdICogbVsxXVsyXSAqICIKKyAgICAgICAgIm1bMF1bM10p
O1xuIgorICAgICAgICAiICAgIGZsb2F0IGNvZjMxID0gbVswXVswXSAqIG1bMV1bMl0gKiBtWzJd
WzNdICsgbVsxXVswXSAqIG1bMl1bMl0gKiBtWzBdWzNdICsgbVsyXVswXSAqICIKKyAgICAgICAg
Im1bMF1bMl0gKiBtWzFdWzNdIgorICAgICAgICAiIC0gbVswXVswXSAqIG1bMl1bMl0gKiBtWzFd
WzNdIC0gbVsxXVswXSAqIG1bMF1bMl0gKiBtWzJdWzNdIC0gbVsyXVswXSAqIG1bMV1bMl0gKiAi
CisgICAgICAgICJtWzBdWzNdO1xuIgorICAgICAgICAiICAgIGZsb2F0IGNvZjMyID0gLShtWzBd
WzBdICogbVsxXVsxXSAqIG1bMl1bM10gKyBtWzFdWzBdICogbVsyXVsxXSAqIG1bMF1bM10gKyBt
WzJdWzBdICogIgorICAgICAgICAibVswXVsxXSAqIG1bMV1bM10iCisgICAgICAgICIgLSBtWzBd
WzBdICogbVsyXVsxXSAqIG1bMV1bM10gLSBtWzFdWzBdICogbVswXVsxXSAqIG1bMl1bM10gLSBt
WzJdWzBdICogbVsxXVsxXSAqICIKKyAgICAgICAgIm1bMF1bM10pO1xuIgorICAgICAgICAiICAg
IGZsb2F0IGNvZjMzID0gbVswXVswXSAqIG1bMV1bMV0gKiBtWzJdWzJdICsgbVsxXVswXSAqIG1b
Ml1bMV0gKiBtWzBdWzJdICsgbVsyXVswXSAqICIKKyAgICAgICAgIm1bMF1bMV0gKiBtWzFdWzJd
IgorICAgICAgICAiIC0gbVswXVswXSAqIG1bMl1bMV0gKiBtWzFdWzJdIC0gbVsxXVswXSAqIG1b
MF1bMV0gKiBtWzJdWzJdIC0gbVsyXVswXSAqIG1bMV1bMV0gKiAiCisgICAgICAgICJtWzBdWzJd
O1xuIgogICAgICAgICAiICAgIGZsb2F0NHg0IGNvZiA9IHsgY29mMDAsIGNvZjEwLCBjb2YyMCwg
Y29mMzAsIGNvZjAxLCBjb2YxMSwgY29mMjEsIGNvZjMxLCIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiIGNvZjAyLCBjb2YxMiwgY29mMjIsIGNvZjMyLCBjb2YwMywgY29mMTMsIGNvZjIz
LCBjb2YzMyB9O1xuIgorICAgICAgICAiIGNvZjAyLCBjb2YxMiwgY29mMjIsIGNvZjMyLCBjb2Yw
MywgY29mMTMsIGNvZjIzLCBjb2YzMyB9O1xuIgogICAgICAgICAiICAgIHJldHVybiBjb2YgLyBk
ZXRlcm1pbmFudCh0cmFuc3Bvc2UobSkpO1xuIgogICAgICAgICAifVxuIik7CiAKQEAgLTQ2Nywy
OCArNjM1LDQxMyBAQCB2b2lkIEluaXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvckZvckhMU0woQnVp
bHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSkKICAgICBUVHlwZSAqYm9vbDQgPSBuZXcgVFR5cGUo
RWJ0Qm9vbCwgNCk7CiAKICAgICAvLyBFbXVsYXRlIEVTU0wzIHZhcmlhbnQgb2YgbWl4IHRoYXQg
dGFrZXMgbGFzdCBhcmd1bWVudCBhcyBib29sZWFuIHZlY3Rvci4KLSAgICAvLyBnZW5UeXBlIG1p
eCAoZ2VuVHlwZSB4LCBnZW5UeXBlIHksIGdlbkJUeXBlIGEpOiBTZWxlY3RzIHdoaWNoIHZlY3Rv
ciBlYWNoIHJldHVybmVkIGNvbXBvbmVudCBjb21lcyBmcm9tLgotICAgIC8vIEZvciBhIGNvbXBv
bmVudCBvZiAnYScgdGhhdCBpcyBmYWxzZSwgdGhlIGNvcnJlc3BvbmRpbmcgY29tcG9uZW50IG9m
ICd4JyBpcyByZXR1cm5lZC5Gb3IgYSBjb21wb25lbnQgb2YgJ2EnIHRoYXQgaXMgdHJ1ZSwKKyAg
ICAvLyBnZW5UeXBlIG1peCAoZ2VuVHlwZSB4LCBnZW5UeXBlIHksIGdlbkJUeXBlIGEpOiBTZWxl
Y3RzIHdoaWNoIHZlY3RvciBlYWNoIHJldHVybmVkIGNvbXBvbmVudAorICAgIC8vIGNvbWVzIGZy
b20uCisgICAgLy8gRm9yIGEgY29tcG9uZW50IG9mICdhJyB0aGF0IGlzIGZhbHNlLCB0aGUgY29y
cmVzcG9uZGluZyBjb21wb25lbnQgb2YgJ3gnIGlzIHJldHVybmVkLkZvciBhCisgICAgLy8gY29t
cG9uZW50IG9mICdhJyB0aGF0IGlzIHRydWUsCiAgICAgLy8gdGhlIGNvcnJlc3BvbmRpbmcgY29t
cG9uZW50IG9mICd5JyBpcyByZXR1cm5lZC4KICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24o
RU9wTWl4LCBmbG9hdDEsIGZsb2F0MSwgYm9vbDEsCi0gICAgICAgICJmbG9hdCB3ZWJnbF9taXhf
ZW11KGZsb2F0IHgsIGZsb2F0IHksIGJvb2wgYSlcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImZsb2F0IHdlYmdsX21peF9lbXUoZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBhKVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICAgIHJldHVybiBhID8geSA6IHg7XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ9XG4iKTsKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wTWl4LCBmbG9h
dDIsIGZsb2F0MiwgYm9vbDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDIg
d2ViZ2xfbWl4X2VtdShmbG9hdDIgeCwgZmxvYXQyIHksIGJvb2wyIGEpXG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
ICAgcmV0dXJuIGEgPyB5IDogeDtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1c
biIpOworICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BNaXgsIGZsb2F0MywgZmxvYXQz
LCBib29sMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0MyB3ZWJnbF9taXhf
ZW11KGZsb2F0MyB4LCBmbG9hdDMgeSwgYm9vbDMgYSlcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4g
YSA/IHkgOiB4O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIik7CisgICAg
ZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcE1peCwgZmxvYXQ0LCBmbG9hdDQsIGJvb2w0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IHdlYmdsX21peF9lbXUoZmxvYXQ0
IHgsIGZsb2F0NCB5LCBib29sNCBhKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
e1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiBhID8geSA6IHg7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKKworICAgIGVtdS0+YWRk
RW11bGF0ZWRGdW5jdGlvbigKKyAgICAgICAgRU9wQml0ZmllbGRFeHRyYWN0LCB1aW50MSwgaW50
MSwgaW50MSwKKyAgICAgICAgInVpbnQgd2ViZ2xfYml0ZmllbGRFeHRyYWN0X2VtdSh1aW50IHZh
bHVlLCBpbnQgb2Zmc2V0LCBpbnQgYml0cylcbiIKICAgICAgICAgIntcbiIKLSAgICAgICAgIiAg
ICByZXR1cm4gYSA/IHkgOiB4O1xuIgorICAgICAgICAiICAgIGlmIChvZmZzZXQgPCAwIHx8IGJp
dHMgPD0gMCB8fCBvZmZzZXQgPj0gMzIgfHwgYml0cyA+IDMyIHx8IG9mZnNldCArIGJpdHMgPiAz
MilcbiIKKyAgICAgICAgIiAgICB7XG4iCisgICAgICAgICIgICAgICAgIHJldHVybiAwdTtcbiIK
KyAgICAgICAgIiAgICB9XG4iCisgICAgICAgICIgICAgdWludCBtYXNrTXNiID0gKDF1IDw8IChi
aXRzIC0gMSkpO1xuIgorICAgICAgICAiICAgIHVpbnQgbWFzayA9ICgobWFza01zYiAtIDF1KSB8
IG1hc2tNc2IpIDw8IG9mZnNldDtcbiIKKyAgICAgICAgIiAgICByZXR1cm4gKHZhbHVlICYgbWFz
aykgPj4gb2Zmc2V0O1xuIgogICAgICAgICAifVxuIik7Ci0gICAgZW11LT5hZGRFbXVsYXRlZEZ1
bmN0aW9uKEVPcE1peCwgZmxvYXQyLCBmbG9hdDIsIGJvb2wyLAotICAgICAgICAiZmxvYXQyIHdl
YmdsX21peF9lbXUoZmxvYXQyIHgsIGZsb2F0MiB5LCBib29sMiBhKVxuIgorICAgIGVtdS0+YWRk
RW11bGF0ZWRGdW5jdGlvbigKKyAgICAgICAgRU9wQml0ZmllbGRFeHRyYWN0LCB1aW50MiwgaW50
MSwgaW50MSwKKyAgICAgICAgInVpbnQyIHdlYmdsX2JpdGZpZWxkRXh0cmFjdF9lbXUodWludDIg
dmFsdWUsIGludCBvZmZzZXQsIGludCBiaXRzKVxuIgogICAgICAgICAie1xuIgotICAgICAgICAi
ICAgIHJldHVybiBhID8geSA6IHg7XG4iCisgICAgICAgICIgICAgaWYgKG9mZnNldCA8IDAgfHwg
Yml0cyA8PSAwIHx8IG9mZnNldCA+PSAzMiB8fCBiaXRzID4gMzIgfHwgb2Zmc2V0ICsgYml0cyA+
IDMyKVxuIgorICAgICAgICAiICAgIHtcbiIKKyAgICAgICAgIiAgICAgICAgcmV0dXJuIHVpbnQy
KDB1LCAwdSk7XG4iCisgICAgICAgICIgICAgfVxuIgorICAgICAgICAiICAgIHVpbnQgbWFza01z
YiA9ICgxdSA8PCAoYml0cyAtIDEpKTtcbiIKKyAgICAgICAgIiAgICB1aW50IG1hc2sgPSAoKG1h
c2tNc2IgLSAxdSkgfCBtYXNrTXNiKSA8PCBvZmZzZXQ7XG4iCisgICAgICAgICIgICAgcmV0dXJu
ICh2YWx1ZSAmIG1hc2spID4+IG9mZnNldDtcbiIKICAgICAgICAgIn1cbiIpOwotICAgIGVtdS0+
YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BNaXgsIGZsb2F0MywgZmxvYXQzLCBib29sMywKLSAgICAg
ICAgImZsb2F0MyB3ZWJnbF9taXhfZW11KGZsb2F0MyB4LCBmbG9hdDMgeSwgYm9vbDMgYSlcbiIK
KyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oCisgICAgICAgIEVPcEJpdGZpZWxkRXh0cmFj
dCwgdWludDMsIGludDEsIGludDEsCisgICAgICAgICJ1aW50MyB3ZWJnbF9iaXRmaWVsZEV4dHJh
Y3RfZW11KHVpbnQzIHZhbHVlLCBpbnQgb2Zmc2V0LCBpbnQgYml0cylcbiIKICAgICAgICAgIntc
biIKLSAgICAgICAgIiAgICByZXR1cm4gYSA/IHkgOiB4O1xuIgorICAgICAgICAiICAgIGlmIChv
ZmZzZXQgPCAwIHx8IGJpdHMgPD0gMCB8fCBvZmZzZXQgPj0gMzIgfHwgYml0cyA+IDMyIHx8IG9m
ZnNldCArIGJpdHMgPiAzMilcbiIKKyAgICAgICAgIiAgICB7XG4iCisgICAgICAgICIgICAgICAg
IHJldHVybiB1aW50MygwdSwgMHUsIDB1KTtcbiIKKyAgICAgICAgIiAgICB9XG4iCisgICAgICAg
ICIgICAgdWludCBtYXNrTXNiID0gKDF1IDw8IChiaXRzIC0gMSkpO1xuIgorICAgICAgICAiICAg
IHVpbnQgbWFzayA9ICgobWFza01zYiAtIDF1KSB8IG1hc2tNc2IpIDw8IG9mZnNldDtcbiIKKyAg
ICAgICAgIiAgICByZXR1cm4gKHZhbHVlICYgbWFzaykgPj4gb2Zmc2V0O1xuIgogICAgICAgICAi
fVxuIik7Ci0gICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcE1peCwgZmxvYXQ0LCBmbG9h
dDQsIGJvb2w0LAotICAgICAgICAiZmxvYXQ0IHdlYmdsX21peF9lbXUoZmxvYXQ0IHgsIGZsb2F0
NCB5LCBib29sNCBhKVxuIgorICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbigKKyAgICAgICAg
RU9wQml0ZmllbGRFeHRyYWN0LCB1aW50NCwgaW50MSwgaW50MSwKKyAgICAgICAgInVpbnQ0IHdl
YmdsX2JpdGZpZWxkRXh0cmFjdF9lbXUodWludDQgdmFsdWUsIGludCBvZmZzZXQsIGludCBiaXRz
KVxuIgogICAgICAgICAie1xuIgotICAgICAgICAiICAgIHJldHVybiBhID8geSA6IHg7XG4iCisg
ICAgICAgICIgICAgaWYgKG9mZnNldCA8IDAgfHwgYml0cyA8PSAwIHx8IG9mZnNldCA+PSAzMiB8
fCBiaXRzID4gMzIgfHwgb2Zmc2V0ICsgYml0cyA+IDMyKVxuIgorICAgICAgICAiICAgIHtcbiIK
KyAgICAgICAgIiAgICAgICAgcmV0dXJuIHVpbnQ0KDB1LCAwdSwgMHUsIDB1KTtcbiIKKyAgICAg
ICAgIiAgICB9XG4iCisgICAgICAgICIgICAgdWludCBtYXNrTXNiID0gKDF1IDw8IChiaXRzIC0g
MSkpO1xuIgorICAgICAgICAiICAgIHVpbnQgbWFzayA9ICgobWFza01zYiAtIDF1KSB8IG1hc2tN
c2IpIDw8IG9mZnNldDtcbiIKKyAgICAgICAgIiAgICByZXR1cm4gKHZhbHVlICYgbWFzaykgPj4g
b2Zmc2V0O1xuIgogICAgICAgICAifVxuIik7CiAKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rp
b24oCisgICAgICAgIEVPcEJpdGZpZWxkRXh0cmFjdCwgaW50MSwgaW50MSwgaW50MSwKKyAgICAg
ICAgImludCB3ZWJnbF9iaXRmaWVsZEV4dHJhY3RfZW11KGludCB2YWx1ZSwgaW50IG9mZnNldCwg
aW50IGJpdHMpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgaWYgKG9mZnNldCA8IDAg
fHwgYml0cyA8PSAwIHx8IG9mZnNldCA+PSAzMiB8fCBiaXRzID4gMzIgfHwgb2Zmc2V0ICsgYml0
cyA+IDMyKVxuIgorICAgICAgICAiICAgIHtcbiIKKyAgICAgICAgIiAgICAgICAgcmV0dXJuIDA7
XG4iCisgICAgICAgICIgICAgfVxuIgorICAgICAgICAiICAgIHVpbnQgbWFza01zYiA9ICgxdSA8
PCAoYml0cyAtIDEpKTtcbiIKKyAgICAgICAgIiAgICB1aW50IG1hc2sgPSAoKG1hc2tNc2IgLSAx
dSkgfCBtYXNrTXNiKSA8PCBvZmZzZXQ7XG4iCisgICAgICAgICIgICAgdWludCByZXN1bHRVbnNp
Z25lZCA9IChhc3VpbnQodmFsdWUpICYgbWFzaykgPj4gb2Zmc2V0O1xuIgorICAgICAgICAiICAg
IGlmIChiaXRzICE9IDMyICYmIChyZXN1bHRVbnNpZ25lZCAmIG1hc2tNc2IpICE9IDApXG4iCisg
ICAgICAgICIgICAge1xuIgorICAgICAgICAiICAgICAgICB1aW50IGhpZ2hlckJpdHNNYXNrID0g
KCgxdSA8PCAoMzIgLSBiaXRzKSkgLSAxdSkgPDwgYml0cztcbiIKKyAgICAgICAgIiAgICAgICAg
cmVzdWx0VW5zaWduZWQgfD0gaGlnaGVyQml0c01hc2s7XG4iCisgICAgICAgICIgICAgfVxuIgor
ICAgICAgICAiICAgIHJldHVybiBhc2ludChyZXN1bHRVbnNpZ25lZCk7XG4iCisgICAgICAgICJ9
XG4iKTsKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oCisgICAgICAgIEVPcEJpdGZpZWxk
RXh0cmFjdCwgaW50MiwgaW50MSwgaW50MSwKKyAgICAgICAgImludDIgd2ViZ2xfYml0ZmllbGRF
eHRyYWN0X2VtdShpbnQyIHZhbHVlLCBpbnQgb2Zmc2V0LCBpbnQgYml0cylcbiIKKyAgICAgICAg
IntcbiIKKyAgICAgICAgIiAgICBpZiAob2Zmc2V0IDwgMCB8fCBiaXRzIDw9IDAgfHwgb2Zmc2V0
ID49IDMyIHx8IGJpdHMgPiAzMiB8fCBvZmZzZXQgKyBiaXRzID4gMzIpXG4iCisgICAgICAgICIg
ICAge1xuIgorICAgICAgICAiICAgICAgICByZXR1cm4gaW50MigwLCAwKTtcbiIKKyAgICAgICAg
IiAgICB9XG4iCisgICAgICAgICIgICAgdWludCBtYXNrTXNiID0gKDF1IDw8IChiaXRzIC0gMSkp
O1xuIgorICAgICAgICAiICAgIHVpbnQgbWFzayA9ICgobWFza01zYiAtIDF1KSB8IG1hc2tNc2Ip
IDw8IG9mZnNldDtcbiIKKyAgICAgICAgIiAgICB1aW50MiByZXN1bHRVbnNpZ25lZCA9IChhc3Vp
bnQodmFsdWUpICYgbWFzaykgPj4gb2Zmc2V0O1xuIgorICAgICAgICAiICAgIGlmIChiaXRzICE9
IDMyKVxuIgorICAgICAgICAiICAgIHtcbiIKKyAgICAgICAgIiAgICAgICAgdWludCBoaWdoZXJC
aXRzTWFzayA9ICgoMXUgPDwgKDMyIC0gYml0cykpIC0gMXUpIDw8IGJpdHM7XG4iCisgICAgICAg
ICIgICAgICAgIHJlc3VsdFVuc2lnbmVkIHw9ICgocmVzdWx0VW5zaWduZWQgJiBtYXNrTXNiKSA+
PiAoYml0cyAtIDEpKSAqIGhpZ2hlckJpdHNNYXNrO1xuIgorICAgICAgICAiICAgIH1cbiIKKyAg
ICAgICAgIiAgICByZXR1cm4gYXNpbnQocmVzdWx0VW5zaWduZWQpO1xuIgorICAgICAgICAifVxu
Iik7CisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKAorICAgICAgICBFT3BCaXRmaWVsZEV4
dHJhY3QsIGludDMsIGludDEsIGludDEsCisgICAgICAgICJpbnQzIHdlYmdsX2JpdGZpZWxkRXh0
cmFjdF9lbXUoaW50MyB2YWx1ZSwgaW50IG9mZnNldCwgaW50IGJpdHMpXG4iCisgICAgICAgICJ7
XG4iCisgICAgICAgICIgICAgaWYgKG9mZnNldCA8IDAgfHwgYml0cyA8PSAwIHx8IG9mZnNldCA+
PSAzMiB8fCBiaXRzID4gMzIgfHwgb2Zmc2V0ICsgYml0cyA+IDMyKVxuIgorICAgICAgICAiICAg
IHtcbiIKKyAgICAgICAgIiAgICAgICAgcmV0dXJuIGludDMoMCwgMCwgMCk7XG4iCisgICAgICAg
ICIgICAgfVxuIgorICAgICAgICAiICAgIHVpbnQgbWFza01zYiA9ICgxdSA8PCAoYml0cyAtIDEp
KTtcbiIKKyAgICAgICAgIiAgICB1aW50IG1hc2sgPSAoKG1hc2tNc2IgLSAxdSkgfCBtYXNrTXNi
KSA8PCBvZmZzZXQ7XG4iCisgICAgICAgICIgICAgdWludDMgcmVzdWx0VW5zaWduZWQgPSAoYXN1
aW50KHZhbHVlKSAmIG1hc2spID4+IG9mZnNldDtcbiIKKyAgICAgICAgIiAgICBpZiAoYml0cyAh
PSAzMilcbiIKKyAgICAgICAgIiAgICB7XG4iCisgICAgICAgICIgICAgICAgIHVpbnQgaGlnaGVy
Qml0c01hc2sgPSAoKDF1IDw8ICgzMiAtIGJpdHMpKSAtIDF1KSA8PCBiaXRzO1xuIgorICAgICAg
ICAiICAgICAgICByZXN1bHRVbnNpZ25lZCB8PSAoKHJlc3VsdFVuc2lnbmVkICYgbWFza01zYikg
Pj4gKGJpdHMgLSAxKSkgKiBoaWdoZXJCaXRzTWFzaztcbiIKKyAgICAgICAgIiAgICB9XG4iCisg
ICAgICAgICIgICAgcmV0dXJuIGFzaW50KHJlc3VsdFVuc2lnbmVkKTtcbiIKKyAgICAgICAgIn1c
biIpOworICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbigKKyAgICAgICAgRU9wQml0ZmllbGRF
eHRyYWN0LCBpbnQ0LCBpbnQxLCBpbnQxLAorICAgICAgICAiaW50NCB3ZWJnbF9iaXRmaWVsZEV4
dHJhY3RfZW11KGludDQgdmFsdWUsIGludCBvZmZzZXQsIGludCBiaXRzKVxuIgorICAgICAgICAi
e1xuIgorICAgICAgICAiICAgIGlmIChvZmZzZXQgPCAwIHx8IGJpdHMgPD0gMCB8fCBvZmZzZXQg
Pj0gMzIgfHwgYml0cyA+IDMyIHx8IG9mZnNldCArIGJpdHMgPiAzMilcbiIKKyAgICAgICAgIiAg
ICB7XG4iCisgICAgICAgICIgICAgICAgIHJldHVybiBpbnQ0KDAsIDAsIDAsIDApO1xuIgorICAg
ICAgICAiICAgIH1cbiIKKyAgICAgICAgIiAgICB1aW50IG1hc2tNc2IgPSAoMXUgPDwgKGJpdHMg
LSAxKSk7XG4iCisgICAgICAgICIgICAgdWludCBtYXNrID0gKChtYXNrTXNiIC0gMXUpIHwgbWFz
a01zYikgPDwgb2Zmc2V0O1xuIgorICAgICAgICAiICAgIHVpbnQ0IHJlc3VsdFVuc2lnbmVkID0g
KGFzdWludCh2YWx1ZSkgJiBtYXNrKSA+PiBvZmZzZXQ7XG4iCisgICAgICAgICIgICAgaWYgKGJp
dHMgIT0gMzIpXG4iCisgICAgICAgICIgICAge1xuIgorICAgICAgICAiICAgICAgICB1aW50IGhp
Z2hlckJpdHNNYXNrID0gKCgxdSA8PCAoMzIgLSBiaXRzKSkgLSAxdSkgPDwgYml0cztcbiIKKyAg
ICAgICAgIiAgICAgICAgcmVzdWx0VW5zaWduZWQgfD0gKChyZXN1bHRVbnNpZ25lZCAmIG1hc2tN
c2IpID4+IChiaXRzIC0gMSkpICogaGlnaGVyQml0c01hc2s7XG4iCisgICAgICAgICIgICAgfVxu
IgorICAgICAgICAiICAgIHJldHVybiBhc2ludChyZXN1bHRVbnNpZ25lZCk7XG4iCisgICAgICAg
ICJ9XG4iKTsKKworICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbigKKyAgICAgICAgRU9wQml0
ZmllbGRJbnNlcnQsIHVpbnQxLCB1aW50MSwgaW50MSwgaW50MSwKKyAgICAgICAgInVpbnQgd2Vi
Z2xfYml0ZmllbGRJbnNlcnRfZW11KHVpbnQgYmFzZSwgdWludCBpbnNlcnQsIGludCBvZmZzZXQs
IGludCBiaXRzKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGlmIChvZmZzZXQgPCAw
IHx8IGJpdHMgPD0gMCB8fCBvZmZzZXQgPj0gMzIgfHwgYml0cyA+IDMyIHx8IG9mZnNldCArIGJp
dHMgPiAzMilcbiIKKyAgICAgICAgIiAgICB7XG4iCisgICAgICAgICIgICAgICAgIHJldHVybiBi
YXNlO1xuIgorICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIiAgICB1aW50IG1hc2tNc2IgPSAo
MXUgPDwgKGJpdHMgLSAxKSk7XG4iCisgICAgICAgICIgICAgdWludCBpbnNlcnRNYXNrID0gKCht
YXNrTXNiIC0gMXUpIHwgbWFza01zYikgPDwgb2Zmc2V0O1xuIgorICAgICAgICAiICAgIHVpbnQg
YmFzZU1hc2sgPSB+aW5zZXJ0TWFzaztcbiIKKyAgICAgICAgIiAgICByZXR1cm4gKGJhc2UgJiBi
YXNlTWFzaykgfCAoKGluc2VydCA8PCBvZmZzZXQpICYgaW5zZXJ0TWFzayk7XG4iCisgICAgICAg
ICJ9XG4iKTsKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oCisgICAgICAgIEVPcEJpdGZp
ZWxkSW5zZXJ0LCB1aW50MiwgdWludDIsIGludDEsIGludDEsCisgICAgICAgICJ1aW50MiB3ZWJn
bF9iaXRmaWVsZEluc2VydF9lbXUodWludDIgYmFzZSwgdWludDIgaW5zZXJ0LCBpbnQgb2Zmc2V0
LCBpbnQgYml0cylcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBpZiAob2Zmc2V0IDwg
MCB8fCBiaXRzIDw9IDAgfHwgb2Zmc2V0ID49IDMyIHx8IGJpdHMgPiAzMiB8fCBvZmZzZXQgKyBi
aXRzID4gMzIpXG4iCisgICAgICAgICIgICAge1xuIgorICAgICAgICAiICAgICAgICByZXR1cm4g
YmFzZTtcbiIKKyAgICAgICAgIiAgICB9XG4iCisgICAgICAgICIgICAgdWludCBtYXNrTXNiID0g
KDF1IDw8IChiaXRzIC0gMSkpO1xuIgorICAgICAgICAiICAgIHVpbnQgaW5zZXJ0TWFzayA9ICgo
bWFza01zYiAtIDF1KSB8IG1hc2tNc2IpIDw8IG9mZnNldDtcbiIKKyAgICAgICAgIiAgICB1aW50
IGJhc2VNYXNrID0gfmluc2VydE1hc2s7XG4iCisgICAgICAgICIgICAgcmV0dXJuIChiYXNlICYg
YmFzZU1hc2spIHwgKChpbnNlcnQgPDwgb2Zmc2V0KSAmIGluc2VydE1hc2spO1xuIgorICAgICAg
ICAifVxuIik7CisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKAorICAgICAgICBFT3BCaXRm
aWVsZEluc2VydCwgdWludDMsIHVpbnQzLCBpbnQxLCBpbnQxLAorICAgICAgICAidWludDMgd2Vi
Z2xfYml0ZmllbGRJbnNlcnRfZW11KHVpbnQzIGJhc2UsIHVpbnQzIGluc2VydCwgaW50IG9mZnNl
dCwgaW50IGJpdHMpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgaWYgKG9mZnNldCA8
IDAgfHwgYml0cyA8PSAwIHx8IG9mZnNldCA+PSAzMiB8fCBiaXRzID4gMzIgfHwgb2Zmc2V0ICsg
Yml0cyA+IDMyKVxuIgorICAgICAgICAiICAgIHtcbiIKKyAgICAgICAgIiAgICAgICAgcmV0dXJu
IGJhc2U7XG4iCisgICAgICAgICIgICAgfVxuIgorICAgICAgICAiICAgIHVpbnQgbWFza01zYiA9
ICgxdSA8PCAoYml0cyAtIDEpKTtcbiIKKyAgICAgICAgIiAgICB1aW50IGluc2VydE1hc2sgPSAo
KG1hc2tNc2IgLSAxdSkgfCBtYXNrTXNiKSA8PCBvZmZzZXQ7XG4iCisgICAgICAgICIgICAgdWlu
dCBiYXNlTWFzayA9IH5pbnNlcnRNYXNrO1xuIgorICAgICAgICAiICAgIHJldHVybiAoYmFzZSAm
IGJhc2VNYXNrKSB8ICgoaW5zZXJ0IDw8IG9mZnNldCkgJiBpbnNlcnRNYXNrKTtcbiIKKyAgICAg
ICAgIn1cbiIpOworICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbigKKyAgICAgICAgRU9wQml0
ZmllbGRJbnNlcnQsIHVpbnQ0LCB1aW50NCwgaW50MSwgaW50MSwKKyAgICAgICAgInVpbnQ0IHdl
YmdsX2JpdGZpZWxkSW5zZXJ0X2VtdSh1aW50NCBiYXNlLCB1aW50NCBpbnNlcnQsIGludCBvZmZz
ZXQsIGludCBiaXRzKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGlmIChvZmZzZXQg
PCAwIHx8IGJpdHMgPD0gMCB8fCBvZmZzZXQgPj0gMzIgfHwgYml0cyA+IDMyIHx8IG9mZnNldCAr
IGJpdHMgPiAzMilcbiIKKyAgICAgICAgIiAgICB7XG4iCisgICAgICAgICIgICAgICAgIHJldHVy
biBiYXNlO1xuIgorICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIiAgICB1aW50IG1hc2tNc2Ig
PSAoMXUgPDwgKGJpdHMgLSAxKSk7XG4iCisgICAgICAgICIgICAgdWludCBpbnNlcnRNYXNrID0g
KChtYXNrTXNiIC0gMXUpIHwgbWFza01zYikgPDwgb2Zmc2V0O1xuIgorICAgICAgICAiICAgIHVp
bnQgYmFzZU1hc2sgPSB+aW5zZXJ0TWFzaztcbiIKKyAgICAgICAgIiAgICByZXR1cm4gKGJhc2Ug
JiBiYXNlTWFzaykgfCAoKGluc2VydCA8PCBvZmZzZXQpICYgaW5zZXJ0TWFzayk7XG4iCisgICAg
ICAgICJ9XG4iKTsKKworICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbigKKyAgICAgICAgRU9w
Qml0ZmllbGRJbnNlcnQsIGludDEsIGludDEsIGludDEsIGludDEsCisgICAgICAgICJpbnQgd2Vi
Z2xfYml0ZmllbGRJbnNlcnRfZW11KGludCBiYXNlLCBpbnQgaW5zZXJ0LCBpbnQgb2Zmc2V0LCBp
bnQgYml0cylcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBpZiAob2Zmc2V0IDwgMCB8
fCBiaXRzIDw9IDAgfHwgb2Zmc2V0ID49IDMyIHx8IGJpdHMgPiAzMiB8fCBvZmZzZXQgKyBiaXRz
ID4gMzIpXG4iCisgICAgICAgICIgICAge1xuIgorICAgICAgICAiICAgICAgICByZXR1cm4gYmFz
ZTtcbiIKKyAgICAgICAgIiAgICB9XG4iCisgICAgICAgICIgICAgdWludCBtYXNrTXNiID0gKDF1
IDw8IChiaXRzIC0gMSkpO1xuIgorICAgICAgICAiICAgIHVpbnQgaW5zZXJ0TWFzayA9ICgobWFz
a01zYiAtIDF1KSB8IG1hc2tNc2IpIDw8IG9mZnNldDtcbiIKKyAgICAgICAgIiAgICB1aW50IGJh
c2VNYXNrID0gfmluc2VydE1hc2s7XG4iCisgICAgICAgICIgICAgdWludCByZXN1bHRVbnNpZ25l
ZCA9IChhc3VpbnQoYmFzZSkgJiBiYXNlTWFzaykgfCAoKGFzdWludChpbnNlcnQpIDw8IG9mZnNl
dCkgJiAiCisgICAgICAgICJpbnNlcnRNYXNrKTtcbiIKKyAgICAgICAgIiAgICByZXR1cm4gYXNp
bnQocmVzdWx0VW5zaWduZWQpO1xuIgorICAgICAgICAifVxuIik7CisgICAgZW11LT5hZGRFbXVs
YXRlZEZ1bmN0aW9uKAorICAgICAgICBFT3BCaXRmaWVsZEluc2VydCwgaW50MiwgaW50MiwgaW50
MSwgaW50MSwKKyAgICAgICAgImludDIgd2ViZ2xfYml0ZmllbGRJbnNlcnRfZW11KGludDIgYmFz
ZSwgaW50MiBpbnNlcnQsIGludCBvZmZzZXQsIGludCBiaXRzKVxuIgorICAgICAgICAie1xuIgor
ICAgICAgICAiICAgIGlmIChvZmZzZXQgPCAwIHx8IGJpdHMgPD0gMCB8fCBvZmZzZXQgPj0gMzIg
fHwgYml0cyA+IDMyIHx8IG9mZnNldCArIGJpdHMgPiAzMilcbiIKKyAgICAgICAgIiAgICB7XG4i
CisgICAgICAgICIgICAgICAgIHJldHVybiBiYXNlO1xuIgorICAgICAgICAiICAgIH1cbiIKKyAg
ICAgICAgIiAgICB1aW50IG1hc2tNc2IgPSAoMXUgPDwgKGJpdHMgLSAxKSk7XG4iCisgICAgICAg
ICIgICAgdWludCBpbnNlcnRNYXNrID0gKChtYXNrTXNiIC0gMXUpIHwgbWFza01zYikgPDwgb2Zm
c2V0O1xuIgorICAgICAgICAiICAgIHVpbnQgYmFzZU1hc2sgPSB+aW5zZXJ0TWFzaztcbiIKKyAg
ICAgICAgIiAgICB1aW50MiByZXN1bHRVbnNpZ25lZCA9IChhc3VpbnQoYmFzZSkgJiBiYXNlTWFz
aykgfCAoKGFzdWludChpbnNlcnQpIDw8IG9mZnNldCkgJiAiCisgICAgICAgICJpbnNlcnRNYXNr
KTtcbiIKKyAgICAgICAgIiAgICByZXR1cm4gYXNpbnQocmVzdWx0VW5zaWduZWQpO1xuIgorICAg
ICAgICAifVxuIik7CisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKAorICAgICAgICBFT3BC
aXRmaWVsZEluc2VydCwgaW50MywgaW50MywgaW50MSwgaW50MSwKKyAgICAgICAgImludDMgd2Vi
Z2xfYml0ZmllbGRJbnNlcnRfZW11KGludDMgYmFzZSwgaW50MyBpbnNlcnQsIGludCBvZmZzZXQs
IGludCBiaXRzKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGlmIChvZmZzZXQgPCAw
IHx8IGJpdHMgPD0gMCB8fCBvZmZzZXQgPj0gMzIgfHwgYml0cyA+IDMyIHx8IG9mZnNldCArIGJp
dHMgPiAzMilcbiIKKyAgICAgICAgIiAgICB7XG4iCisgICAgICAgICIgICAgICAgIHJldHVybiBi
YXNlO1xuIgorICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIiAgICB1aW50IG1hc2tNc2IgPSAo
MXUgPDwgKGJpdHMgLSAxKSk7XG4iCisgICAgICAgICIgICAgdWludCBpbnNlcnRNYXNrID0gKCht
YXNrTXNiIC0gMXUpIHwgbWFza01zYikgPDwgb2Zmc2V0O1xuIgorICAgICAgICAiICAgIHVpbnQg
YmFzZU1hc2sgPSB+aW5zZXJ0TWFzaztcbiIKKyAgICAgICAgIiAgICB1aW50MyByZXN1bHRVbnNp
Z25lZCA9IChhc3VpbnQoYmFzZSkgJiBiYXNlTWFzaykgfCAoKGFzdWludChpbnNlcnQpIDw8IG9m
ZnNldCkgJiAiCisgICAgICAgICJpbnNlcnRNYXNrKTtcbiIKKyAgICAgICAgIiAgICByZXR1cm4g
YXNpbnQocmVzdWx0VW5zaWduZWQpO1xuIgorICAgICAgICAifVxuIik7CisgICAgZW11LT5hZGRF
bXVsYXRlZEZ1bmN0aW9uKAorICAgICAgICBFT3BCaXRmaWVsZEluc2VydCwgaW50NCwgaW50NCwg
aW50MSwgaW50MSwKKyAgICAgICAgImludDQgd2ViZ2xfYml0ZmllbGRJbnNlcnRfZW11KGludDQg
YmFzZSwgaW50NCBpbnNlcnQsIGludCBvZmZzZXQsIGludCBiaXRzKVxuIgorICAgICAgICAie1xu
IgorICAgICAgICAiICAgIGlmIChvZmZzZXQgPCAwIHx8IGJpdHMgPD0gMCB8fCBvZmZzZXQgPj0g
MzIgfHwgYml0cyA+IDMyIHx8IG9mZnNldCArIGJpdHMgPiAzMilcbiIKKyAgICAgICAgIiAgICB7
XG4iCisgICAgICAgICIgICAgICAgIHJldHVybiBiYXNlO1xuIgorICAgICAgICAiICAgIH1cbiIK
KyAgICAgICAgIiAgICB1aW50IG1hc2tNc2IgPSAoMXUgPDwgKGJpdHMgLSAxKSk7XG4iCisgICAg
ICAgICIgICAgdWludCBpbnNlcnRNYXNrID0gKChtYXNrTXNiIC0gMXUpIHwgbWFza01zYikgPDwg
b2Zmc2V0O1xuIgorICAgICAgICAiICAgIHVpbnQgYmFzZU1hc2sgPSB+aW5zZXJ0TWFzaztcbiIK
KyAgICAgICAgIiAgICB1aW50NCByZXN1bHRVbnNpZ25lZCA9IChhc3VpbnQoYmFzZSkgJiBiYXNl
TWFzaykgfCAoKGFzdWludChpbnNlcnQpIDw8IG9mZnNldCkgJiAiCisgICAgICAgICJpbnNlcnRN
YXNrKTtcbiIKKyAgICAgICAgIiAgICByZXR1cm4gYXNpbnQocmVzdWx0VW5zaWduZWQpO1xuIgor
ICAgICAgICAifVxuIik7CisKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wVWFkZENh
cnJ5LCB1aW50MSwgdWludDEsIHVpbnQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
dWludCB3ZWJnbF91YWRkQ2FycnlfZW11KHVpbnQgeCwgdWludCB5LCBvdXQgdWludCBjYXJyeSlc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiAgICBjYXJyeSA9IHVpbnQoeCA+ICgweGZmZmZmZmZmdSAtIHkpKTtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4geCArIHk7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVu
Y3Rpb24oRU9wVWFkZENhcnJ5LCB1aW50MiwgdWludDIsIHVpbnQyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAidWludDIgd2ViZ2xfdWFkZENhcnJ5X2VtdSh1aW50MiB4LCB1aW50MiB5
LCBvdXQgdWludDIgY2FycnkpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgY2FycnkgPSB1aW50Mih4ID4gKDB4
ZmZmZmZmZmZ1IC0geSkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJl
dHVybiB4ICsgeTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIpOworICAg
IGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BVYWRkQ2FycnksIHVpbnQzLCB1aW50MywgdWlu
dDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1aW50MyB3ZWJnbF91YWRkQ2Fycnlf
ZW11KHVpbnQzIHgsIHVpbnQzIHksIG91dCB1aW50MyBjYXJyeSlcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBj
YXJyeSA9IHVpbnQzKHggPiAoMHhmZmZmZmZmZnUgLSB5KSk7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIgICAgcmV0dXJuIHggKyB5O1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAifVxuIik7CisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcFVhZGRDYXJy
eSwgdWludDQsIHVpbnQ0LCB1aW50NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVp
bnQ0IHdlYmdsX3VhZGRDYXJyeV9lbXUodWludDQgeCwgdWludDQgeSwgb3V0IHVpbnQ0IGNhcnJ5
KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiICAgIGNhcnJ5ID0gdWludDQoeCA+ICgweGZmZmZmZmZmdSAtIHkpKTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4geCArIHk7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKKworICAgIGVtdS0+YWRkRW11bGF0
ZWRGdW5jdGlvbihFT3BVc3ViQm9ycm93LCB1aW50MSwgdWludDEsIHVpbnQxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAidWludCB3ZWJnbF91c3ViQm9ycm93X2VtdSh1aW50IHgsIHVp
bnQgeSwgb3V0IHVpbnQgYm9ycm93KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
e1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGJvcnJvdyA9IHVpbnQoeCA8
IHkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB4IC0geTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIpOworICAgIGVtdS0+YWRkRW11
bGF0ZWRGdW5jdGlvbihFT3BVc3ViQm9ycm93LCB1aW50MiwgdWludDIsIHVpbnQyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAidWludDIgd2ViZ2xfdXN1YkJvcnJvd19lbXUodWludDIg
eCwgdWludDIgeSwgb3V0IHVpbnQyIGJvcnJvdylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBib3Jyb3cgPSB1
aW50Mih4IDwgeSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJu
IHggLSB5O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIik7CisgICAgZW11
LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcFVzdWJCb3Jyb3csIHVpbnQzLCB1aW50MywgdWludDMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1aW50MyB3ZWJnbF91c3ViQm9ycm93X2Vt
dSh1aW50MyB4LCB1aW50MyB5LCBvdXQgdWludDMgYm9ycm93KVxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGJv
cnJvdyA9IHVpbnQzKHggPCB5KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICByZXR1cm4geCAtIHk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsK
KyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wVXN1YkJvcnJvdywgdWludDQsIHVpbnQ0
LCB1aW50NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVpbnQ0IHdlYmdsX3VzdWJC
b3Jyb3dfZW11KHVpbnQ0IHgsIHVpbnQ0IHksIG91dCB1aW50NCBib3Jyb3cpXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIgICAgYm9ycm93ID0gdWludDQoeCA8IHkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIHJldHVybiB4IC0geTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
In1cbiIpOworCisgICAgLy8gKGEgKyBiMl4xNikgKiAoYyArIGQyXjE2KSA9IGFjICsgKGFkICsg
YmMpICogMl4xNiArIGJkICogMl4zMgorICAgIC8vIEFsc28gbm90ZSB0aGF0IGJlbG93LCBhICog
ZCArICgoYSAqIGMpID4+IDE2KSBpcyBndWFyYW50ZWVkIG5vdCB0byBvdmVyZmxvdywgYmVjYXVz
ZToKKyAgICAvLyBhIDw9IDB4ZmZmZiwgZCA8PSAweGZmZmYsICgoYSAqIGMpID4+IDE2KSA8PSAw
eGZmZmYgYW5kIDB4ZmZmZiAqIDB4ZmZmZiArIDB4ZmZmZiA9IDB4ZmZmZjAwMDAKKyAgICBCdWls
dEluRnVuY3Rpb25FbXVsYXRvcjo6RnVuY3Rpb25JZCB1bXVsRXh0ZW5kZWRVaW50MSA9IGVtdS0+
YWRkRW11bGF0ZWRGdW5jdGlvbigKKyAgICAgICAgRU9wVW11bEV4dGVuZGVkLCB1aW50MSwgdWlu
dDEsIHVpbnQxLCB1aW50MSwKKyAgICAgICAgInZvaWQgd2ViZ2xfdW11bEV4dGVuZGVkX2VtdSh1
aW50IHgsIHVpbnQgeSwgb3V0IHVpbnQgbXNiLCBvdXQgdWludCBsc2IpXG4iCisgICAgICAgICJ7
XG4iCisgICAgICAgICIgICAgbHNiID0geCAqIHk7XG4iCisgICAgICAgICIgICAgdWludCBhID0g
KHggJiAweGZmZmZ1KTtcbiIKKyAgICAgICAgIiAgICB1aW50IGIgPSAoeCA+PiAxNik7XG4iCisg
ICAgICAgICIgICAgdWludCBjID0gKHkgJiAweGZmZmZ1KTtcbiIKKyAgICAgICAgIiAgICB1aW50
IGQgPSAoeSA+PiAxNik7XG4iCisgICAgICAgICIgICAgdWludCBhZCA9IGEgKiBkICsgKChhICog
YykgPj4gMTYpO1xuIgorICAgICAgICAiICAgIHVpbnQgYmMgPSBiICogYztcbiIKKyAgICAgICAg
IiAgICB1aW50IGNhcnJ5ID0gdWludChhZCA+ICgweGZmZmZmZmZmdSAtIGJjKSk7XG4iCisgICAg
ICAgICIgICAgbXNiID0gKChhZCArIGJjKSA+PiAxNikgKyAoY2FycnkgPDwgMTYpICsgYiAqIGQ7
XG4iCisgICAgICAgICJ9XG4iKTsKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb25XaXRoRGVw
ZW5kZW5jeSgKKyAgICAgICAgdW11bEV4dGVuZGVkVWludDEsIEVPcFVtdWxFeHRlbmRlZCwgdWlu
dDIsIHVpbnQyLCB1aW50MiwgdWludDIsCisgICAgICAgICJ2b2lkIHdlYmdsX3VtdWxFeHRlbmRl
ZF9lbXUodWludDIgeCwgdWludDIgeSwgb3V0IHVpbnQyIG1zYiwgb3V0IHVpbnQyIGxzYilcbiIK
KyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICB3ZWJnbF91bXVsRXh0ZW5kZWRfZW11KHgueCwg
eS54LCBtc2IueCwgbHNiLngpO1xuIgorICAgICAgICAiICAgIHdlYmdsX3VtdWxFeHRlbmRlZF9l
bXUoeC55LCB5LnksIG1zYi55LCBsc2IueSk7XG4iCisgICAgICAgICJ9XG4iKTsKKyAgICBlbXUt
PmFkZEVtdWxhdGVkRnVuY3Rpb25XaXRoRGVwZW5kZW5jeSgKKyAgICAgICAgdW11bEV4dGVuZGVk
VWludDEsIEVPcFVtdWxFeHRlbmRlZCwgdWludDMsIHVpbnQzLCB1aW50MywgdWludDMsCisgICAg
ICAgICJ2b2lkIHdlYmdsX3VtdWxFeHRlbmRlZF9lbXUodWludDMgeCwgdWludDMgeSwgb3V0IHVp
bnQzIG1zYiwgb3V0IHVpbnQzIGxzYilcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICB3
ZWJnbF91bXVsRXh0ZW5kZWRfZW11KHgueCwgeS54LCBtc2IueCwgbHNiLngpO1xuIgorICAgICAg
ICAiICAgIHdlYmdsX3VtdWxFeHRlbmRlZF9lbXUoeC55LCB5LnksIG1zYi55LCBsc2IueSk7XG4i
CisgICAgICAgICIgICAgd2ViZ2xfdW11bEV4dGVuZGVkX2VtdSh4LnosIHkueiwgbXNiLnosIGxz
Yi56KTtcbiIKKyAgICAgICAgIn1cbiIpOworICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbldp
dGhEZXBlbmRlbmN5KAorICAgICAgICB1bXVsRXh0ZW5kZWRVaW50MSwgRU9wVW11bEV4dGVuZGVk
LCB1aW50NCwgdWludDQsIHVpbnQ0LCB1aW50NCwKKyAgICAgICAgInZvaWQgd2ViZ2xfdW11bEV4
dGVuZGVkX2VtdSh1aW50NCB4LCB1aW50NCB5LCBvdXQgdWludDQgbXNiLCBvdXQgdWludDQgbHNi
KVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIHdlYmdsX3VtdWxFeHRlbmRlZF9lbXUo
eC54LCB5LngsIG1zYi54LCBsc2IueCk7XG4iCisgICAgICAgICIgICAgd2ViZ2xfdW11bEV4dGVu
ZGVkX2VtdSh4LnksIHkueSwgbXNiLnksIGxzYi55KTtcbiIKKyAgICAgICAgIiAgICB3ZWJnbF91
bXVsRXh0ZW5kZWRfZW11KHgueiwgeS56LCBtc2IueiwgbHNiLnopO1xuIgorICAgICAgICAiICAg
IHdlYmdsX3VtdWxFeHRlbmRlZF9lbXUoeC53LCB5LncsIG1zYi53LCBsc2Iudyk7XG4iCisgICAg
ICAgICJ9XG4iKTsKKworICAgIC8vIFRoZSBpbXVsIGVtdWxhdGlvbiBkb2VzIHR3bydzIGNvbXBs
ZW1lbnQgbmVnYXRpb24gb24gdGhlIGxzYiBhbmQgbXNiIG1hbnVhbGx5IGluIGNhc2UgdGhlCisg
ICAgLy8gcmVzdWx0IG5lZWRzIHRvIGJlIG5lZ2F0aXZlLgorICAgIC8vIFRPRE8ob2V0dWFobyk6
IE5vdGUgdGhhdCB0aGlzIGNvZGUgZG9lc24ndCB0YWtlIG9uZSBlZGdlIGNhc2UgaW50byBhY2Nv
dW50LCB3aGVyZSB4IG9yIHkgaXMKKyAgICAvLyAtMl4zMS4gYWJzKC0yXjMxKSBpcyB1bmRlZmlu
ZWQuCisgICAgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkZ1bmN0aW9uSWQgaW11bEV4dGVuZGVk
SW50MSA9IGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbldpdGhEZXBlbmRlbmN5KAorICAgICAgICB1
bXVsRXh0ZW5kZWRVaW50MSwgRU9wSW11bEV4dGVuZGVkLCBpbnQxLCBpbnQxLCBpbnQxLCBpbnQx
LAorICAgICAgICAidm9pZCB3ZWJnbF9pbXVsRXh0ZW5kZWRfZW11KGludCB4LCBpbnQgeSwgb3V0
IGludCBtc2IsIG91dCBpbnQgbHNiKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIHVp
bnQgdW5zaWduZWRNc2I7XG4iCisgICAgICAgICIgICAgdWludCB1bnNpZ25lZExzYjtcbiIKKyAg
ICAgICAgIiAgICBib29sIG5lZ2F0aXZlID0gKHggPCAwKSAhPSAoeSA8IDApO1xuIgorICAgICAg
ICAiICAgIHdlYmdsX3VtdWxFeHRlbmRlZF9lbXUodWludChhYnMoeCkpLCB1aW50KGFicyh5KSks
IHVuc2lnbmVkTXNiLCB1bnNpZ25lZExzYik7XG4iCisgICAgICAgICIgICAgbHNiID0gYXNpbnQo
dW5zaWduZWRMc2IpO1xuIgorICAgICAgICAiICAgIG1zYiA9IGFzaW50KHVuc2lnbmVkTXNiKTtc
biIKKyAgICAgICAgIiAgICBpZiAobmVnYXRpdmUpXG4iCisgICAgICAgICIgICAge1xuIgorICAg
ICAgICAiICAgICAgICBsc2IgPSB+bHNiO1xuIgorICAgICAgICAiICAgICAgICBtc2IgPSB+bXNi
O1xuIgorICAgICAgICAiICAgICAgICBpZiAobHNiID09IDB4ZmZmZmZmZmYpXG4iCisgICAgICAg
ICIgICAgICAgIHtcbiIKKyAgICAgICAgIiAgICAgICAgICAgIGxzYiA9IDA7XG4iCisgICAgICAg
ICIgICAgICAgICAgICBtc2IgKz0gMTtcbiIKKyAgICAgICAgIiAgICAgICAgfVxuIgorICAgICAg
ICAiICAgICAgICBlbHNlXG4iCisgICAgICAgICIgICAgICAgIHtcbiIKKyAgICAgICAgIiAgICAg
ICAgICAgIGxzYiArPSAxO1xuIgorICAgICAgICAiICAgICAgICB9XG4iCisgICAgICAgICIgICAg
fVxuIgorICAgICAgICAifVxuIik7CisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uV2l0aERl
cGVuZGVuY3koCisgICAgICAgIGltdWxFeHRlbmRlZEludDEsIEVPcEltdWxFeHRlbmRlZCwgaW50
MiwgaW50MiwgaW50MiwgaW50MiwKKyAgICAgICAgInZvaWQgd2ViZ2xfaW11bEV4dGVuZGVkX2Vt
dShpbnQyIHgsIGludDIgeSwgb3V0IGludDIgbXNiLCBvdXQgaW50MiBsc2IpXG4iCisgICAgICAg
ICJ7XG4iCisgICAgICAgICIgICAgd2ViZ2xfaW11bEV4dGVuZGVkX2VtdSh4LngsIHkueCwgbXNi
LngsIGxzYi54KTtcbiIKKyAgICAgICAgIiAgICB3ZWJnbF9pbXVsRXh0ZW5kZWRfZW11KHgueSwg
eS55LCBtc2IueSwgbHNiLnkpO1xuIgorICAgICAgICAifVxuIik7CisgICAgZW11LT5hZGRFbXVs
YXRlZEZ1bmN0aW9uV2l0aERlcGVuZGVuY3koCisgICAgICAgIGltdWxFeHRlbmRlZEludDEsIEVP
cEltdWxFeHRlbmRlZCwgaW50MywgaW50MywgaW50MywgaW50MywKKyAgICAgICAgInZvaWQgd2Vi
Z2xfaW11bEV4dGVuZGVkX2VtdShpbnQzIHgsIGludDMgeSwgb3V0IGludDMgbXNiLCBvdXQgaW50
MyBsc2IpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgd2ViZ2xfaW11bEV4dGVuZGVk
X2VtdSh4LngsIHkueCwgbXNiLngsIGxzYi54KTtcbiIKKyAgICAgICAgIiAgICB3ZWJnbF9pbXVs
RXh0ZW5kZWRfZW11KHgueSwgeS55LCBtc2IueSwgbHNiLnkpO1xuIgorICAgICAgICAiICAgIHdl
YmdsX2ltdWxFeHRlbmRlZF9lbXUoeC56LCB5LnosIG1zYi56LCBsc2Iueik7XG4iCisgICAgICAg
ICJ9XG4iKTsKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb25XaXRoRGVwZW5kZW5jeSgKKyAg
ICAgICAgaW11bEV4dGVuZGVkSW50MSwgRU9wSW11bEV4dGVuZGVkLCBpbnQ0LCBpbnQ0LCBpbnQ0
LCBpbnQ0LAorICAgICAgICAidm9pZCB3ZWJnbF9pbXVsRXh0ZW5kZWRfZW11KGludDQgeCwgaW50
NCB5LCBvdXQgaW50NCBtc2IsIG91dCBpbnQ0IGxzYilcbiIKKyAgICAgICAgIntcbiIKKyAgICAg
ICAgIiAgICB3ZWJnbF9pbXVsRXh0ZW5kZWRfZW11KHgueCwgeS54LCBtc2IueCwgbHNiLngpO1xu
IgorICAgICAgICAiICAgIHdlYmdsX2ltdWxFeHRlbmRlZF9lbXUoeC55LCB5LnksIG1zYi55LCBs
c2IueSk7XG4iCisgICAgICAgICIgICAgd2ViZ2xfaW11bEV4dGVuZGVkX2VtdSh4LnosIHkueiwg
bXNiLnosIGxzYi56KTtcbiIKKyAgICAgICAgIiAgICB3ZWJnbF9pbXVsRXh0ZW5kZWRfZW11KHgu
dywgeS53LCBtc2IudywgbHNiLncpO1xuIgorICAgICAgICAifVxuIik7CiB9CisKK30gIC8vIG5h
bWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JITFNMLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVs
YXRvckhMU0wuaAppbmRleCBmNDc0NDlkZmIyNjZiYmVhMDgxNDcxMjIwZjk0ZjZkNjBiNTYxZjZk
Li40OGRhNzNmNThlZjhmZTEzOWJlZWU2YjNiZTIwMzc4YjIzZWMzMjQzIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVu
Y3Rpb25FbXVsYXRvckhMU0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckhMU0wuaApAQCAtOSw2ICs5
LDkgQEAKIAogI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgogCituYW1lc3BhY2Ugc2gK
K3sKKwogY2xhc3MgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I7CiAKIHZvaWQgSW5pdEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yRm9ySExTTChCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqZW11KTsKQEAg
LTE5LDQgKzIyLDYgQEAgdm9pZCBJbml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JGb3JITFNMKEJ1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUpOwogdm9pZCBJbml0QnVpbHRJbklzbmFuRnVuY3Rp
b25FbXVsYXRvckZvckhMU0xXb3JrYXJvdW5kcyhCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqZW11
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgdGFyZ2V0R0xTTFZlcnNpb24pOwogCit9ICAvLyBuYW1lc3BhY2Ugc2gKKwogI2VuZGlm
ICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0JVSUxUSU5GVU5DVElPTkVNVUxBVE9SSExTTF9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvQ2FjaGUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvQ2FjaGUuY3BwCmluZGV4IDU3YTQzNzAwY2FjMGNkMDRmYjA4YTA0NWIzYjRlZjc0YjA5
MDMzOTIuLjA3Y2M1YjI0NGIyMzAzNGNkMjcyZjM4NDU3NzMxMGI5NzEwMTRiYjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NhY2hl
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9DYWNoZS5jcHAKQEAgLTEyLDIxICsxMiwyMCBAQAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5o
IgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQ2FjaGUuaCIKIAorbmFtZXNwYWNlIHNo
Cit7CisKIG5hbWVzcGFjZQogewogCiBjbGFzcyBUU2NvcGVkQWxsb2NhdG9yIDogYW5nbGU6Ok5v
bkNvcHlhYmxlCiB7CiAgIHB1YmxpYzoKLSAgICBUU2NvcGVkQWxsb2NhdG9yKFRQb29sQWxsb2Nh
dG9yICphbGxvY2F0b3IpCi0gICAgICAgIDogbVByZXZpb3VzQWxsb2NhdG9yKEdldEdsb2JhbFBv
b2xBbGxvY2F0b3IoKSkKKyAgICBUU2NvcGVkQWxsb2NhdG9yKFRQb29sQWxsb2NhdG9yICphbGxv
Y2F0b3IpIDogbVByZXZpb3VzQWxsb2NhdG9yKEdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKSkKICAg
ICB7CiAgICAgICAgIFNldEdsb2JhbFBvb2xBbGxvY2F0b3IoYWxsb2NhdG9yKTsKICAgICB9Ci0g
ICAgflRTY29wZWRBbGxvY2F0b3IoKQotICAgIHsKLSAgICAgICAgU2V0R2xvYmFsUG9vbEFsbG9j
YXRvcihtUHJldmlvdXNBbGxvY2F0b3IpOwotICAgIH0KKyAgICB+VFNjb3BlZEFsbG9jYXRvcigp
IHsgU2V0R2xvYmFsUG9vbEFsbG9jYXRvcihtUHJldmlvdXNBbGxvY2F0b3IpOyB9CiAKICAgcHJp
dmF0ZToKICAgICBUUG9vbEFsbG9jYXRvciAqbVByZXZpb3VzQWxsb2NhdG9yOwpAQCAtNDAsMjMg
KzM5LDE5IEBAIFRDYWNoZTo6VHlwZUtleTo6VHlwZUtleShUQmFzaWNUeXBlIGJhc2ljVHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHByaW1hcnlTaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgc2Vjb25kYXJ5U2l6ZSkKIHsKLSAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZihjb21wb25lbnRzKSA8PSBzaXplb2YodmFsdWUpLAotICAg
ICAgICAgICAgICAgICAgIlR5cGVLZXk6OnZhbHVlIGlzIHRvbyBzbWFsbCIpOworICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKGNvbXBvbmVudHMpIDw9IHNpemVvZih2YWx1ZSksICJUeXBlS2V5Ojp2
YWx1ZSBpcyB0b28gc21hbGwiKTsKIAogICAgIGNvbnN0IHNpemVfdCBNYXhFbnVtVmFsdWUgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPEVudW1Db21wb25lbnRUeXBlPjo6bWF4KCk7Ci0gICAgVU5VU0VE
X0FTU0VSVElPTl9WQVJJQUJMRShNYXhFbnVtVmFsdWUpOwogCiAgICAgLy8gVE9ETzogY2hhbmdl
IHRvIHN0YXRpY19hc3NlcnQoKSBvbmNlIHdlIGRlcHJlY2F0ZSBNU1ZDIDIwMTMgc3VwcG9ydAot
ICAgIEFTU0VSVChNYXhFbnVtVmFsdWUgPj0gRWJ0TGFzdCAmJgotICAgICAgICAgICBNYXhFbnVt
VmFsdWUgPj0gRWJwTGFzdCAmJgotICAgICAgICAgICBNYXhFbnVtVmFsdWUgPj0gRXZxTGFzdCAm
JgorICAgIEFTU0VSVChNYXhFbnVtVmFsdWUgPj0gRWJ0TGFzdCAmJiBNYXhFbnVtVmFsdWUgPj0g
RWJwTGFzdCAmJiBNYXhFbnVtVmFsdWUgPj0gRXZxTGFzdCAmJgogICAgICAgICAgICAiVHlwZUtl
eTo6RW51bUNvbXBvbmVudFR5cGUgaXMgdG9vIHNtYWxsIik7CiAKLSAgICB2YWx1ZSA9IDA7Ci0g
ICAgY29tcG9uZW50cy5iYXNpY1R5cGUgPSBzdGF0aWNfY2FzdDxFbnVtQ29tcG9uZW50VHlwZT4o
YmFzaWNUeXBlKTsKLSAgICBjb21wb25lbnRzLnByZWNpc2lvbiA9IHN0YXRpY19jYXN0PEVudW1D
b21wb25lbnRUeXBlPihwcmVjaXNpb24pOwotICAgIGNvbXBvbmVudHMucXVhbGlmaWVyID0gc3Rh
dGljX2Nhc3Q8RW51bUNvbXBvbmVudFR5cGU+KHF1YWxpZmllcik7Ci0gICAgY29tcG9uZW50cy5w
cmltYXJ5U2l6ZSA9IHByaW1hcnlTaXplOworICAgIHZhbHVlICAgICAgICAgICAgICAgICAgICA9
IDA7CisgICAgY29tcG9uZW50cy5iYXNpY1R5cGUgICAgID0gc3RhdGljX2Nhc3Q8RW51bUNvbXBv
bmVudFR5cGU+KGJhc2ljVHlwZSk7CisgICAgY29tcG9uZW50cy5wcmVjaXNpb24gICAgID0gc3Rh
dGljX2Nhc3Q8RW51bUNvbXBvbmVudFR5cGU+KHByZWNpc2lvbik7CisgICAgY29tcG9uZW50cy5x
dWFsaWZpZXIgICAgID0gc3RhdGljX2Nhc3Q8RW51bUNvbXBvbmVudFR5cGU+KHF1YWxpZmllcik7
CisgICAgY29tcG9uZW50cy5wcmltYXJ5U2l6ZSAgID0gcHJpbWFyeVNpemU7CiAgICAgY29tcG9u
ZW50cy5zZWNvbmRhcnlTaXplID0gc2Vjb25kYXJ5U2l6ZTsKIH0KIApAQCAtODEsOCArNzYsNyBA
QCBjb25zdCBUVHlwZSAqVENhY2hlOjpnZXRUeXBlKFRCYXNpY1R5cGUgYmFzaWNUeXBlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHByaW1hcnlTaXplLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHNlY29uZGFyeVNpemUpCiB7
Ci0gICAgVHlwZUtleSBrZXkoYmFzaWNUeXBlLCBwcmVjaXNpb24sIHF1YWxpZmllciwKLSAgICAg
ICAgICAgICAgICBwcmltYXJ5U2l6ZSwgc2Vjb25kYXJ5U2l6ZSk7CisgICAgVHlwZUtleSBrZXko
YmFzaWNUeXBlLCBwcmVjaXNpb24sIHF1YWxpZmllciwgcHJpbWFyeVNpemUsIHNlY29uZGFyeVNp
emUpOwogICAgIGF1dG8gaXQgPSBzQ2FjaGUtPm1UeXBlcy5maW5kKGtleSk7CiAgICAgaWYgKGl0
ICE9IHNDYWNoZS0+bVR5cGVzLmVuZCgpKQogICAgIHsKQEAgLTkxLDEwICs4NSwxMSBAQCBjb25z
dCBUVHlwZSAqVENhY2hlOjpnZXRUeXBlKFRCYXNpY1R5cGUgYmFzaWNUeXBlLAogCiAgICAgVFNj
b3BlZEFsbG9jYXRvciBzY29wZWRBbGxvY2F0b3IoJnNDYWNoZS0+bUFsbG9jYXRvcik7CiAKLSAg
ICBUVHlwZSAqdHlwZSA9IG5ldyBUVHlwZShiYXNpY1R5cGUsIHByZWNpc2lvbiwgcXVhbGlmaWVy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlTaXplLCBzZWNvbmRhcnlTaXpl
KTsKKyAgICBUVHlwZSAqdHlwZSA9IG5ldyBUVHlwZShiYXNpY1R5cGUsIHByZWNpc2lvbiwgcXVh
bGlmaWVyLCBwcmltYXJ5U2l6ZSwgc2Vjb25kYXJ5U2l6ZSk7CiAgICAgdHlwZS0+cmVhbGl6ZSgp
OwogICAgIHNDYWNoZS0+bVR5cGVzLmluc2VydChzdGQ6Om1ha2VfcGFpcihrZXksIHR5cGUpKTsK
IAogICAgIHJldHVybiB0eXBlOwogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NhY2hlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9DYWNoZS5o
CmluZGV4IDFkMmFiYjc3ZTFjZjQ1ZjZmMmNlZTlhNmZhYzUyZDk3ODFiOGZlZmYuLmE0NWFkYTQ4
NzhkNmYxMTY5YTYwM2IzNjU3NDEzMDQzZjIwYjRjNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NhY2hlLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ2FjaGUuaApAQCAtMTYs
MzMgKzE2LDMxIEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UeXBlcy5oIgogI2lu
Y2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUG9vbEFsbG9jLmgiCiAKK25hbWVzcGFjZSBzaAor
eworCiBjbGFzcyBUQ2FjaGUKIHsKICAgcHVibGljOgotCiAgICAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZSgpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koKTsKIAotICAgIHN0YXRpYyBjb25zdCBU
VHlwZSAqZ2V0VHlwZShUQmFzaWNUeXBlIGJhc2ljVHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVFByZWNpc2lvbiBwcmVjaXNpb24pCisgICAgc3RhdGljIGNvbnN0IFRUeXBl
ICpnZXRUeXBlKFRCYXNpY1R5cGUgYmFzaWNUeXBlLCBUUHJlY2lzaW9uIHByZWNpc2lvbikKICAg
ICB7Ci0gICAgICAgIHJldHVybiBnZXRUeXBlKGJhc2ljVHlwZSwgcHJlY2lzaW9uLCBFdnFUZW1w
b3JhcnksCi0gICAgICAgICAgICAgICAgICAgICAgIDEsIDEpOworICAgICAgICByZXR1cm4gZ2V0
VHlwZShiYXNpY1R5cGUsIHByZWNpc2lvbiwgRXZxVGVtcG9yYXJ5LCAxLCAxKTsKICAgICB9CiAg
ICAgc3RhdGljIGNvbnN0IFRUeXBlICpnZXRUeXBlKFRCYXNpY1R5cGUgYmFzaWNUeXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHByaW1hcnlTaXplID0g
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBwcmltYXJ5
U2l6ZSAgID0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBzZWNvbmRhcnlTaXplID0gMSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnZXRUeXBlKGJhc2lj
VHlwZSwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsCi0gICAgICAgICAgICAgICAgICAgICAgIHBy
aW1hcnlTaXplLCBzZWNvbmRhcnlTaXplKTsKKyAgICAgICAgcmV0dXJuIGdldFR5cGUoYmFzaWNU
eXBlLCBFYnBVbmRlZmluZWQsIEV2cUdsb2JhbCwgcHJpbWFyeVNpemUsIHNlY29uZGFyeVNpemUp
OwogICAgIH0KICAgICBzdGF0aWMgY29uc3QgVFR5cGUgKmdldFR5cGUoVEJhc2ljVHlwZSBiYXNp
Y1R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlm
aWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHByaW1h
cnlTaXplID0gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hh
ciBwcmltYXJ5U2l6ZSAgID0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciBzZWNvbmRhcnlTaXplID0gMSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnZXRU
eXBlKGJhc2ljVHlwZSwgRWJwVW5kZWZpbmVkLCBxdWFsaWZpZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgIHByaW1hcnlTaXplLCBzZWNvbmRhcnlTaXplKTsKKyAgICAgICAgcmV0dXJuIGdldFR5
cGUoYmFzaWNUeXBlLCBFYnBVbmRlZmluZWQsIHF1YWxpZmllciwgcHJpbWFyeVNpemUsIHNlY29u
ZGFyeVNpemUpOwogICAgIH0KICAgICBzdGF0aWMgY29uc3QgVFR5cGUgKmdldFR5cGUoVEJhc2lj
VHlwZSBiYXNpY1R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQcmVjaXNp
b24gcHJlY2lzaW9uLApAQCAtNTEsMTIgKzQ5LDkgQEAgY2xhc3MgVENhY2hlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgc2Vjb25kYXJ5U2l6ZSk7CiAKICAg
cHJpdmF0ZToKLSAgICBUQ2FjaGUoKQotICAgIHsKLSAgICB9CisgICAgVENhY2hlKCkge30KIAot
ICAgIHVuaW9uIFR5cGVLZXkKLSAgICB7CisgICAgdW5pb24gVHlwZUtleSB7CiAgICAgICAgIFR5
cGVLZXkoVEJhc2ljVHlwZSBiYXNpY1R5cGUsCiAgICAgICAgICAgICAgICAgVFByZWNpc2lvbiBw
cmVjaXNpb24sCiAgICAgICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIsCkBAIC03NCwx
MiArNjksOSBAQCBjbGFzcyBUQ2FjaGUKICAgICAgICAgfSBjb21wb25lbnRzOwogICAgICAgICB1
aW50NjRfdCB2YWx1ZTsKIAotICAgICAgICBib29sIG9wZXJhdG9yIDwgKGNvbnN0IFR5cGVLZXkg
Jm90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdmFsdWUgPCBvdGhl
ci52YWx1ZTsKLSAgICAgICAgfQorICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBUeXBlS2V5
ICZvdGhlcikgY29uc3QgeyByZXR1cm4gdmFsdWUgPCBvdGhlci52YWx1ZTsgfQogICAgIH07Ci0g
ICAgdHlwZWRlZiBzdGQ6Om1hcDxUeXBlS2V5LCBjb25zdCBUVHlwZSo+IFR5cGVNYXA7CisgICAg
dHlwZWRlZiBzdGQ6Om1hcDxUeXBlS2V5LCBjb25zdCBUVHlwZSAqPiBUeXBlTWFwOwogCiAgICAg
VHlwZU1hcCBtVHlwZXM7CiAgICAgVFBvb2xBbGxvY2F0b3IgbUFsbG9jYXRvcjsKQEAgLTg3LDQg
Kzc5LDYgQEAgY2xhc3MgVENhY2hlCiAgICAgc3RhdGljIFRDYWNoZSAqc0NhY2hlOwogfTsKIAor
fSAgLy8gbmFtZXNwYWNlIHNoCisKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9DQUNI
RV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvQ2FsbERBRy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9DYWxsREFHLmNwcAppbmRleCA5ODEwZmE5MzViODJkYWNkYmM2MzA2ZmEz
NzQwNzA2OWU5NjkyMDk2Li44NTU3ZmRmNmM4ZTk2NWZjZDQ3NzBhOTc0MDQ2NjIxOWE3MDc2NzM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9DYWxsREFHLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9DYWxsREFHLmNwcApAQCAtOSwxNiArOSwyMSBAQAogLy8gb3JkZXIuCiAK
ICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0NhbGxEQUcuaCIKLSNpbmNsdWRlICJjb21w
aWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmgiCisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL0RpYWdub3N0aWNzLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xU
YWJsZS5oIgorCituYW1lc3BhY2Ugc2gKK3sKIAogLy8gVGhlIENhbGxEQUdDcmVhdG9yIGRvZXMg
YWxsIHRoZSBwcm9jZXNzaW5nIHJlcXVpcmVkIHRvIGNyZWF0ZSB0aGUgQ2FsbERBRwogLy8gc3Ry
dWN0dXJlIHNvIHRoYXQgdGhlIGxhdHRlciBjb250YWlucyBvbmx5IHRoZSBuZWNlc3NhcnkgdmFy
aWFibGVzLgogY2xhc3MgQ2FsbERBRzo6Q2FsbERBR0NyZWF0b3IgOiBwdWJsaWMgVEludGVybVRy
YXZlcnNlcgogewogICBwdWJsaWM6Ci0gICAgQ2FsbERBR0NyZWF0b3IoVEluZm9TaW5rQmFzZSAq
aW5mbykKKyAgICBDYWxsREFHQ3JlYXRvcihURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKQogICAg
ICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIHRydWUpLAotICAgICAgICAgIG1D
cmVhdGlvbkluZm8oaW5mbyksCisgICAgICAgICAgbURpYWdub3N0aWNzKGRpYWdub3N0aWNzKSwK
ICAgICAgICAgICBtQ3VycmVudEZ1bmN0aW9uKG51bGxwdHIpLAogICAgICAgICAgIG1DdXJyZW50
SW5kZXgoMCkKICAgICB7CkBAIC0zNSw3ICs0MCw2IEBAIGNsYXNzIENhbGxEQUc6OkNhbGxEQUdD
cmVhdG9yIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICAgICAgICAgICAgICBJbml0UmVz
dWx0IHJlc3VsdCA9IGFzc2lnbkluZGljZXNJbnRlcm5hbCgmaXQuc2Vjb25kKTsKICAgICAgICAg
ICAgICAgICBpZiAocmVzdWx0ICE9IElOSVREQUdfU1VDQ0VTUykKICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICptQ3JlYXRpb25JbmZvIDw8ICJcbiI7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQpAQCAtNzYsMjQgKzgwLDE3IEBAIGNsYXNzIENhbGxEQUc6OkNhbGxEQUdDcmVhdG9yIDogcHVi
bGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICAgICAgICAgICAgICByZWNvcmQuY2FsbGVlcy5wdXNo
X2JhY2soc3RhdGljX2Nhc3Q8aW50PihjYWxsZWUtPmluZGV4KSk7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgICgqaWRUb0luZGV4KVtkYXRhLm5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5m
bygpLT5nZXRJZCgpXSA9CisgICAgICAgICAgICAoKmlkVG9JbmRleClbZGF0YS5ub2RlLT5nZXRG
dW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0SWQoKS5nZXQoKV0gPQogICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PGludD4oZGF0YS5pbmRleCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgcHJpdmF0
ZToKLQogICAgIHN0cnVjdCBDcmVhdG9yRnVuY3Rpb25EYXRhCiAgICAgewotICAgICAgICBDcmVh
dG9yRnVuY3Rpb25EYXRhKCkKLSAgICAgICAgICAgIDogbm9kZShudWxscHRyKSwKLSAgICAgICAg
ICAgICAgaW5kZXgoMCksCi0gICAgICAgICAgICAgIGluZGV4QXNzaWduZWQoZmFsc2UpLAotICAg
ICAgICAgICAgICB2aXNpdGluZyhmYWxzZSkKLSAgICAgICAgewotICAgICAgICB9CisgICAgICAg
IENyZWF0b3JGdW5jdGlvbkRhdGEoKSA6IG5vZGUobnVsbHB0ciksIGluZGV4KDApLCBpbmRleEFz
c2lnbmVkKGZhbHNlKSwgdmlzaXRpbmcoZmFsc2UpIHt9CiAKLSAgICAgICAgc3RkOjpzZXQ8Q3Jl
YXRvckZ1bmN0aW9uRGF0YSo+IGNhbGxlZXM7CisgICAgICAgIHN0ZDo6c2V0PENyZWF0b3JGdW5j
dGlvbkRhdGEgKj4gY2FsbGVlczsKICAgICAgICAgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAq
bm9kZTsKICAgICAgICAgVFN0cmluZyBuYW1lOwogICAgICAgICBzaXplX3QgaW5kZXg7CkBAIC0x
MDYsMTkgKzEwMywyMCBAQCBjbGFzcyBDYWxsREFHOjpDYWxsREFHQ3JlYXRvciA6IHB1YmxpYyBU
SW50ZXJtVHJhdmVyc2VyCiAgICAgICAgIC8vIENyZWF0ZSB0aGUgcmVjb3JkIGlmIG5lZWQgYmUg
YW5kIHJlbWVtYmVyIHRoZSBub2RlLgogICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gaXQgPSBtRnVuY3Rpb25zLmZpbmQobm9kZS0+Z2V0
RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWUoKSk7CisgICAgICAgICAgICBhdXRvIGl0ID0g
bUZ1bmN0aW9ucy5maW5kKG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXRJZCgpLmdl
dCgpKTsKIAogICAgICAgICAgICAgaWYgKGl0ID09IG1GdW5jdGlvbnMuZW5kKCkpCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgbUN1cnJlbnRGdW5jdGlvbiA9ICZtRnVuY3Rpb25zW25v
ZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lKCldOworICAgICAgICAgICAgICAg
IG1DdXJyZW50RnVuY3Rpb24gICAgICAgPSAmbUZ1bmN0aW9uc1tub2RlLT5nZXRGdW5jdGlvblN5
bWJvbEluZm8oKS0+Z2V0SWQoKS5nZXQoKV07CisgICAgICAgICAgICAgICAgbUN1cnJlbnRGdW5j
dGlvbi0+bmFtZSA9IG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgbUN1cnJlbnRGdW5jdGlvbiA9ICZpdC0+c2Vjb25kOworICAgICAgICAgICAgICAgIEFT
U0VSVChtQ3VycmVudEZ1bmN0aW9uLT5uYW1lID09IG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5m
bygpLT5nZXROYW1lKCkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBtQ3VycmVudEZ1
bmN0aW9uLT5ub2RlID0gbm9kZTsKLSAgICAgICAgICAgIG1DdXJyZW50RnVuY3Rpb24tPm5hbWUg
PSBub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZSgpOwogICAgICAgICB9CiAg
ICAgICAgIGVsc2UgaWYgKHZpc2l0ID09IFBvc3RWaXNpdCkKICAgICAgICAgewpAQCAtMTI3LDQx
ICsxMjUsMzggQEAgY2xhc3MgQ2FsbERBRzo6Q2FsbERBR0NyZWF0b3IgOiBwdWJsaWMgVEludGVy
bVRyYXZlcnNlcgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICBib29sIHZpc2l0
RnVuY3Rpb25Qcm90b3R5cGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAq
bm9kZSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFTU0VSVCh2aXNpdCA9PSBQcmVWaXNpdCk7
CisgICAgICAgIGlmIChtQ3VycmVudEZ1bmN0aW9uICE9IG51bGxwdHIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZ1bmN0aW9u
IGRlY2xhcmF0aW9uLCBjcmVhdGUgYW4gZW1wdHkgcmVjb3JkLgorICAgICAgICBhdXRvICZyZWNv
cmQgPSBtRnVuY3Rpb25zW25vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXRJZCgpLmdl
dCgpXTsKKyAgICAgICAgcmVjb3JkLm5hbWUgID0gbm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZv
KCktPmdldE5hbWUoKTsKKworICAgICAgICAvLyBObyBuZWVkIHRvIHRyYXZlcnNlIHRoZSBwYXJh
bWV0ZXJzLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgLy8gQWdncmVnYXRl
cyB0aGUgQVNUIG5vZGUgZm9yIGVhY2ggZnVuY3Rpb24gYXMgd2VsbCBhcyB0aGUgbmFtZSBvZiB0
aGUgZnVuY3Rpb25zIGNhbGxlZCBieSBpdAogICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQg
dmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBz
d2l0Y2ggKG5vZGUtPmdldE9wKCkpCisgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCAmJiBu
b2RlLT5nZXRPcCgpID09IEVPcENhbGxGdW5jdGlvbkluQVNUKQogICAgICAgICB7Ci0gICAgICAg
ICAgY2FzZSBFT3BQcm90b3R5cGU6Ci0gICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQp
CisgICAgICAgICAgICAvLyBGdW5jdGlvbiBjYWxsLCBhZGQgdGhlIGNhbGxlZXMKKyAgICAgICAg
ICAgIGF1dG8gaXQgPSBtRnVuY3Rpb25zLmZpbmQobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZv
KCktPmdldElkKCkuZ2V0KCkpOworICAgICAgICAgICAgQVNTRVJUKGl0ICE9IG1GdW5jdGlvbnMu
ZW5kKCkpOworCisgICAgICAgICAgICAvLyBXZSBtaWdodCBiZSB0cmF2ZXJzaW5nIHRoZSBpbml0
aWFsaXplciBvZiBhIGdsb2JhbCB2YXJpYWJsZS4gRXZlbiB0aG91Z2ggZnVuY3Rpb24KKyAgICAg
ICAgICAgIC8vIGNhbGxzIGluIGdsb2JhbCBzY29wZSBhcmUgZm9yYmlkZGVuIGJ5IHRoZSBwYXJz
ZXIsIHNvbWUgc3Vic2VxdWVudCBBU1QKKyAgICAgICAgICAgIC8vIHRyYW5zZm9ybWF0aW9ucyBj
YW4gYWRkIHRoZW0gdG8gZW11bGF0ZSBwYXJ0aWN1bGFyIGZlYXR1cmVzLgorICAgICAgICAgICAg
aWYgKG1DdXJyZW50RnVuY3Rpb24pCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8g
RnVuY3Rpb24gZGVjbGFyYXRpb24sIGNyZWF0ZSBhbiBlbXB0eSByZWNvcmQuCi0gICAgICAgICAg
ICAgICAgYXV0byAmcmVjb3JkID0gbUZ1bmN0aW9uc1tub2RlLT5nZXRGdW5jdGlvblN5bWJvbElu
Zm8oKS0+Z2V0TmFtZSgpXTsKLSAgICAgICAgICAgICAgICByZWNvcmQubmFtZSAgPSBub2RlLT5n
ZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZSgpOworICAgICAgICAgICAgICAgIG1DdXJy
ZW50RnVuY3Rpb24tPmNhbGxlZXMuaW5zZXJ0KCZpdC0+c2Vjb25kKTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgRU9wRnVuY3Rpb25DYWxsOgotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIEZ1bmN0aW9uIGNhbGwsIGFkZCB0aGUgY2Fs
bGVlcwotICAgICAgICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCBoYW5kbGUgY2FsbHMgdG8gYnVp
bHRpbiBmdW5jdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmlzVXNlckRlZmlu
ZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byBpdCA9IG1GdW5jdGlvbnMuZmluZChub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0
TmFtZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChpdCAhPSBtRnVuY3Rpb25z
LmVuZCgpKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgbWlnaHQgYmUgaW4gYSB0
b3AtbGV2ZWwgZnVuY3Rpb24gY2FsbCB0byBzZXQgYSBnbG9iYWwgdmFyaWFibGUKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChtQ3VycmVudEZ1bmN0aW9uKQotICAgICAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1DdXJyZW50RnVuY3Rpb24tPmNh
bGxlZXMuaW5zZXJ0KCZpdC0+c2Vjb25kKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMTk0LDYgKzE4
OSw4IEBAIGNsYXNzIENhbGxEQUc6OkNhbGxEQUdDcmVhdG9yIDogcHVibGljIFRJbnRlcm1UcmF2
ZXJzZXIKIAogICAgICAgICBJbml0UmVzdWx0IHJlc3VsdCA9IElOSVREQUdfU1VDQ0VTUzsKIAor
ICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBlcnJvclN0cmVhbTsKKwogICAgICAgICB3aGlsZSAo
IWZ1bmN0aW9uc1RvUHJvY2Vzcy5lbXB0eSgpKQogICAgICAgICB7CiAgICAgICAgICAgICBDcmVh
dG9yRnVuY3Rpb25EYXRhICpmdW5jdGlvbiA9IGZ1bmN0aW9uc1RvUHJvY2Vzcy5iYWNrKCk7CkBA
IC0yMTAsOCArMjA3LDggQEAgY2xhc3MgQ2FsbERBRzo6Q2FsbERBR0NyZWF0b3IgOiBwdWJsaWMg
VEludGVybVRyYXZlcnNlcgogCiAgICAgICAgICAgICBpZiAoIWZ1bmN0aW9uLT5ub2RlKQogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICptQ3JlYXRpb25JbmZvIDw8ICJVbmRlZmluZWQg
ZnVuY3Rpb24gJyIgPDwgZnVuY3Rpb24tPm5hbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA8PCAiKScgdXNlZCBpbiB0aGUgZm9sbG93aW5nIGNhbGwgY2hhaW46IjsKKyAgICAgICAg
ICAgICAgICBlcnJvclN0cmVhbSA8PCAiVW5kZWZpbmVkIGZ1bmN0aW9uICciIDw8IGZ1bmN0aW9u
LT5uYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiknIHVzZWQgaW4gdGhlIGZv
bGxvd2luZyBjYWxsIGNoYWluOiI7CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gSU5JVERBR19V
TkRFRklORUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0yMzIs
NyArMjI5LDcgQEAgY2xhc3MgQ2FsbERBRzo6Q2FsbERBR0NyZWF0b3IgOiBwdWJsaWMgVEludGVy
bVRyYXZlcnNlcgogICAgICAgICAgICAgICAgIC8vIGluIHRoZSBjaGFpbiBwcmludGVkIGluIHRo
ZSBpbmZvIGxvZy4KICAgICAgICAgICAgICAgICBpZiAoY2FsbGVlLT52aXNpdGluZykKICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICptQ3JlYXRpb25JbmZvIDw8ICJSZWN1
cnNpdmUgZnVuY3Rpb24gY2FsbCBpbiB0aGUgZm9sbG93aW5nIGNhbGwgY2hhaW46IjsKKyAgICAg
ICAgICAgICAgICAgICAgZXJyb3JTdHJlYW0gPDwgIlJlY3Vyc2l2ZSBmdW5jdGlvbiBjYWxsIGlu
IHRoZSBmb2xsb3dpbmcgY2FsbCBjaGFpbjoiOwogICAgICAgICAgICAgICAgICAgICByZXN1bHQg
PSBJTklUREFHX1JFQ1VSU0lPTjsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgfQpAQCAtMjU0LDIwICsyNTEsMjUgQEAgY2xhc3MgQ2FsbERBRzo6Q2FsbERBR0Ny
ZWF0b3IgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFmaXJzdCkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgKm1DcmVhdGlvbkluZm8gPDwgIiAtPiAiOworICAgICAgICAgICAg
ICAgICAgICAgICAgZXJyb3JTdHJlYW0gPDwgIiAtPiAiOwogICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgICptQ3JlYXRpb25JbmZvIDw8IGZ1bmN0aW9uLT5uYW1lIDw8
ICIpIjsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JTdHJlYW0gPDwgZnVuY3Rpb24tPm5hbWUg
PDwgIikiOwogICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNlOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtRGlhZ25vc3RpY3MpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXJyb3JTdHIgPSBlcnJvclN0
cmVhbS5zdHIoKTsKKyAgICAgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPmdsb2JhbEVycm9yKGVy
cm9yU3RyLmNfc3RyKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBUSW5mb1NpbmtCYXNlICptQ3JlYXRpb25JbmZvOwor
ICAgIFREaWFnbm9zdGljcyAqbURpYWdub3N0aWNzOwogCi0gICAgc3RkOjptYXA8VFN0cmluZywg
Q3JlYXRvckZ1bmN0aW9uRGF0YT4gbUZ1bmN0aW9uczsKKyAgICBzdGQ6Om1hcDxpbnQsIENyZWF0
b3JGdW5jdGlvbkRhdGE+IG1GdW5jdGlvbnM7CiAgICAgQ3JlYXRvckZ1bmN0aW9uRGF0YSAqbUN1
cnJlbnRGdW5jdGlvbjsKICAgICBzaXplX3QgbUN1cnJlbnRJbmRleDsKIH07CkBAIC0yODYsNyAr
Mjg4LDcgQEAgY29uc3Qgc2l6ZV90IENhbGxEQUc6OkludmFsaWRJbmRleCA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CiAKIHNpemVfdCBDYWxsREFHOjpmaW5kSW5kZXgoY29u
c3QgVEZ1bmN0aW9uU3ltYm9sSW5mbyAqZnVuY3Rpb25JbmZvKSBjb25zdAogewotICAgIGF1dG8g
aXQgPSBtRnVuY3Rpb25JZFRvSW5kZXguZmluZChmdW5jdGlvbkluZm8tPmdldElkKCkpOworICAg
IGF1dG8gaXQgPSBtRnVuY3Rpb25JZFRvSW5kZXguZmluZChmdW5jdGlvbkluZm8tPmdldElkKCku
Z2V0KCkpOwogCiAgICAgaWYgKGl0ID09IG1GdW5jdGlvbklkVG9JbmRleC5lbmQoKSkKICAgICB7
CkBAIC0zMjIsMTEgKzMyNCw5IEBAIHZvaWQgQ2FsbERBRzo6Y2xlYXIoKQogICAgIG1GdW5jdGlv
bklkVG9JbmRleC5jbGVhcigpOwogfQogCi1DYWxsREFHOjpJbml0UmVzdWx0IENhbGxEQUc6Omlu
aXQoVEludGVybU5vZGUgKnJvb3QsIFRJbmZvU2lua0Jhc2UgKmluZm8pCitDYWxsREFHOjpJbml0
UmVzdWx0IENhbGxEQUc6OmluaXQoVEludGVybU5vZGUgKnJvb3QsIFREaWFnbm9zdGljcyAqZGlh
Z25vc3RpY3MpCiB7Ci0gICAgQVNTRVJUKGluZm8pOwotCi0gICAgQ2FsbERBR0NyZWF0b3IgY3Jl
YXRvcihpbmZvKTsKKyAgICBDYWxsREFHQ3JlYXRvciBjcmVhdG9yKGRpYWdub3N0aWNzKTsKIAog
ICAgIC8vIENyZWF0ZXMgdGhlIG1hcHBpbmcgb2YgZnVuY3Rpb25zIHRvIGNhbGxlZXMKICAgICBy
b290LT50cmF2ZXJzZSgmY3JlYXRvcik7CkBAIC0zNDEsMyArMzQxLDUgQEAgQ2FsbERBRzo6SW5p
dFJlc3VsdCBDYWxsREFHOjppbml0KFRJbnRlcm1Ob2RlICpyb290LCBUSW5mb1NpbmtCYXNlICpp
bmZvKQogICAgIGNyZWF0b3IuZmlsbERhdGFTdHJ1Y3R1cmVzKCZtUmVjb3JkcywgJm1GdW5jdGlv
bklkVG9JbmRleCk7CiAgICAgcmV0dXJuIElOSVREQUdfU1VDQ0VTUzsKIH0KKworfSAgLy8gbmFt
ZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9DYWxsREFHLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9DYWxsREFHLmgKaW5kZXggOWJjZGEwNzBjMmY4M2VjNmVmYWI4ZjRi
MjFhZWFmNDUwNjA2MzVlYy4uZDI5ZjkzMjZlNGVjNTYxNTNhMGMyNTA4YTUxZDlmZDkyOTQ4YTg0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvQ2FsbERBRy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0NhbGxEQUcuaApAQCAtMTYsNiArMTYsOCBAQAogI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvVmFyaWFibGVJbmZvLmgiCiAKK25hbWVzcGFjZSBzaAorewogCiAvLyBUaGUgdHJhbnNsYXRv
ciBuZWVkcyB0byBhbmFseXplIHRoZSB0aGUgZ3JhcGggb2YgdGhlIGZ1bmN0aW9uIGNhbGxzCiAv
LyB0byBydW4gY2hlY2tzIGFuZCBhbmFseXNlczsgc2luY2UgaW4gR0xTTCByZWN1cnNpb24gaXMg
bm90IGFsbG93ZWQKQEAgLTI0LDcgKzI2LDcgQEAKIC8vIGNhbiBiZSByZXVzZWQgYnkgbXVsdGlw
bGUgYW5hbHlzZXMuCiAvLwogLy8gSXQgc3RvcmVzIGEgdmVjdG9yIG9mIGZ1bmN0aW9uIHJlY29y
ZHMsIHdpdGggb25lIHJlY29yZCBwZXIgZnVuY3Rpb24uCi0vLyBSZWNvcmRzIGFyZSBhY2Nlc3Nl
ZCBieSBpbmRleCBidXQgYSBtYW5nbGVkIGZ1bmN0aW9uIG5hbWUgY2FuIGJlIGNvbnZlcnRlZAor
Ly8gUmVjb3JkcyBhcmUgYWNjZXNzZWQgYnkgaW5kZXggYnV0IGEgZnVuY3Rpb24gc3ltYm9sIGlk
IGNhbiBiZSBjb252ZXJ0ZWQKIC8vIHRvIHRoZSBpbmRleCBvZiB0aGUgY29ycmVzcG9uZGluZyBy
ZWNvcmQuIFRoZSByZWNvcmRzIG1vc3RseSBjb250YWluIHRoZQogLy8gQVNUIG5vZGUgb2YgdGhl
IGZ1bmN0aW9uIGFuZCB0aGUgaW5kaWNlcyBvZiB0aGUgZnVuY3Rpb24ncyBjYWxsZWVzLgogLy8K
QEAgLTUzLDggKzU1LDggQEAgY2xhc3MgQ2FsbERBRyA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAg
IH07CiAKICAgICAvLyBSZXR1cm5zIElOSVREQUdfU1VDQ0VTUyBpZiBpdCB3YXMgYWJsZSB0byBj
cmVhdGUgdGhlIERBRywgb3RoZXJ3aXNlIHByaW50cwotICAgIC8vIHRoZSBpbml0aWFsaXphdGlv
biBlcnJvciBpbiBpbmZvLCBpZiBwcmVzZW50LgotICAgIEluaXRSZXN1bHQgaW5pdChUSW50ZXJt
Tm9kZSAqcm9vdCwgVEluZm9TaW5rQmFzZSAqaW5mbyk7CisgICAgLy8gdGhlIGluaXRpYWxpemF0
aW9uIGVycm9yIGluIGRpYWdub3N0aWNzLCBpZiBwcmVzZW50LgorICAgIEluaXRSZXN1bHQgaW5p
dChUSW50ZXJtTm9kZSAqcm9vdCwgVERpYWdub3N0aWNzICpkaWFnbm9zdGljcyk7CiAKICAgICAv
LyBSZXR1cm5zIEludmFsaWRJbmRleCBpZiB0aGUgZnVuY3Rpb24gd2Fzbid0IGZvdW5kCiAgICAg
c2l6ZV90IGZpbmRJbmRleChjb25zdCBURnVuY3Rpb25TeW1ib2xJbmZvICpmdW5jdGlvbkluZm8p
IGNvbnN0OwpAQCAtNjUsNiArNjcsNyBAQCBjbGFzcyBDYWxsREFHIDogYW5nbGU6Ok5vbkNvcHlh
YmxlCiAgICAgdm9pZCBjbGVhcigpOwogCiAgICAgY29uc3Qgc3RhdGljIHNpemVfdCBJbnZhbGlk
SW5kZXg7CisKICAgcHJpdmF0ZToKICAgICBzdGQ6OnZlY3RvcjxSZWNvcmQ+IG1SZWNvcmRzOwog
ICAgIHN0ZDo6bWFwPGludCwgaW50PiBtRnVuY3Rpb25JZFRvSW5kZXg7CkBAIC03Miw0ICs3NSw2
IEBAIGNsYXNzIENhbGxEQUcgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBjbGFzcyBDYWxsREFH
Q3JlYXRvcjsKIH07CiAKK30gIC8vIG5hbWVzcGFjZSBzaAorCiAjZW5kaWYgIC8vIENPTVBJTEVS
X1RSQU5TTEFUT1JfQ0FMTERBR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29kZUdlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db2RlR2VuLmNwcAppbmRleCBmMDk5YmNj
ZjE1ZGY3NDU4ODZiMWIzMmMwOTgyMmEzYTBlOThkZWJiLi43NWYwZDM2MjQwMmUzNGEwMzQ1Y2Yx
YWZjMzg5ZDM5NGUzOTQ4YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db2RlR2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db2RlR2VuLmNwcApAQCAtNiw3MSArNiw5
MiBAQAogCiAjaWZkZWYgQU5HTEVfRU5BQkxFX0VTU0wKICNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL1RyYW5zbGF0b3JFU1NMLmgiCi0jZW5kaWYKKyNlbmRpZiAgLy8gQU5HTEVfRU5BQkxF
X0VTU0wKIAogI2lmZGVmIEFOR0xFX0VOQUJMRV9HTFNMCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJh
bnNsYXRvci9UcmFuc2xhdG9yR0xTTC5oIgotI2VuZGlmCisjZW5kaWYgIC8vIEFOR0xFX0VOQUJM
RV9HTFNMCiAKICNpZmRlZiBBTkdMRV9FTkFCTEVfSExTTAogI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuaCIKLSNlbmRpZiAvLyBBTkdMRV9FTkFCTEVfSExTTAor
I2VuZGlmICAvLyBBTkdMRV9FTkFCTEVfSExTTAorCisjaWZkZWYgQU5HTEVfRU5BQkxFX1ZVTEtB
TgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvclZ1bGthbi5oIgorI2Vu
ZGlmICAvLyBBTkdMRV9FTkFCTEVfVlVMS0FOCisKK25hbWVzcGFjZSBzaAorewogCiAvLwogLy8g
VGhpcyBmdW5jdGlvbiBtdXN0IGJlIHByb3ZpZGVkIHRvIGNyZWF0ZSB0aGUgYWN0dWFsCiAvLyBj
b21waWxlIG9iamVjdCB1c2VkIGJ5IGhpZ2hlciBsZXZlbCBjb2RlLiAgSXQgcmV0dXJucwogLy8g
YSBzdWJjbGFzcyBvZiBUQ29tcGlsZXIuCiAvLwotVENvbXBpbGVyKiBDb25zdHJ1Y3RDb21waWxl
cigKLSAgICBzaDo6R0xlbnVtIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBTaFNoYWRlck91dHB1
dCBvdXRwdXQpCitUQ29tcGlsZXIgKkNvbnN0cnVjdENvbXBpbGVyKHNoOjpHTGVudW0gdHlwZSwg
U2hTaGFkZXJTcGVjIHNwZWMsIFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKIHsKLSAgICBzd2l0Y2gg
KG91dHB1dCkgewotICAgICAgY2FzZSBTSF9FU1NMX09VVFBVVDoKKyAgICBzd2l0Y2ggKG91dHB1
dCkKKyAgICB7CisgICAgICAgIGNhc2UgU0hfRVNTTF9PVVRQVVQ6CiAjaWZkZWYgQU5HTEVfRU5B
QkxFX0VTU0wKLSAgICAgICAgcmV0dXJuIG5ldyBUcmFuc2xhdG9yRVNTTCh0eXBlLCBzcGVjKTsK
KyAgICAgICAgICAgIHJldHVybiBuZXcgVHJhbnNsYXRvckVTU0wodHlwZSwgc3BlYyk7CiAjZWxz
ZQotICAgICAgICAvLyBUaGlzIGNvbXBpbGVyIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcwotICAg
ICAgICAvLyBjb25maWd1cmF0aW9uLiBSZXR1cm4gTlVMTCBwZXIgdGhlIFNoQ29uc3RydWN0Q29t
cGlsZXIgQVBJLgotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZiAvLyBBTkdMRV9FTkFC
TEVfRVNTTAotICAgICAgY2FzZSBTSF9HTFNMXzEzMF9PVVRQVVQ6Ci0gICAgICBjYXNlIFNIX0dM
U0xfMTQwX09VVFBVVDoKLSAgICAgIGNhc2UgU0hfR0xTTF8xNTBfQ09SRV9PVVRQVVQ6Ci0gICAg
ICBjYXNlIFNIX0dMU0xfMzMwX0NPUkVfT1VUUFVUOgotICAgICAgY2FzZSBTSF9HTFNMXzQwMF9D
T1JFX09VVFBVVDoKLSAgICAgIGNhc2UgU0hfR0xTTF80MTBfQ09SRV9PVVRQVVQ6Ci0gICAgICBj
YXNlIFNIX0dMU0xfNDIwX0NPUkVfT1VUUFVUOgotICAgICAgY2FzZSBTSF9HTFNMXzQzMF9DT1JF
X09VVFBVVDoKLSAgICAgIGNhc2UgU0hfR0xTTF80NDBfQ09SRV9PVVRQVVQ6Ci0gICAgICBjYXNl
IFNIX0dMU0xfNDUwX0NPUkVfT1VUUFVUOgotICAgICAgY2FzZSBTSF9HTFNMX0NPTVBBVElCSUxJ
VFlfT1VUUFVUOgorICAgICAgICAgICAgLy8gVGhpcyBjb21waWxlciBpcyBub3Qgc3VwcG9ydGVk
IGluIHRoaXMgY29uZmlndXJhdGlvbi4gUmV0dXJuIE5VTEwgcGVyIHRoZQorICAgICAgICAgICAg
Ly8gc2g6OkNvbnN0cnVjdENvbXBpbGVyIEFQSS4KKyAgICAgICAgICAgIHJldHVybiBudWxscHRy
OworI2VuZGlmICAvLyBBTkdMRV9FTkFCTEVfRVNTTAorCisgICAgICAgIGNhc2UgU0hfR0xTTF8x
MzBfT1VUUFVUOgorICAgICAgICBjYXNlIFNIX0dMU0xfMTQwX09VVFBVVDoKKyAgICAgICAgY2Fz
ZSBTSF9HTFNMXzE1MF9DT1JFX09VVFBVVDoKKyAgICAgICAgY2FzZSBTSF9HTFNMXzMzMF9DT1JF
X09VVFBVVDoKKyAgICAgICAgY2FzZSBTSF9HTFNMXzQwMF9DT1JFX09VVFBVVDoKKyAgICAgICAg
Y2FzZSBTSF9HTFNMXzQxMF9DT1JFX09VVFBVVDoKKyAgICAgICAgY2FzZSBTSF9HTFNMXzQyMF9D
T1JFX09VVFBVVDoKKyAgICAgICAgY2FzZSBTSF9HTFNMXzQzMF9DT1JFX09VVFBVVDoKKyAgICAg
ICAgY2FzZSBTSF9HTFNMXzQ0MF9DT1JFX09VVFBVVDoKKyAgICAgICAgY2FzZSBTSF9HTFNMXzQ1
MF9DT1JFX09VVFBVVDoKKyAgICAgICAgY2FzZSBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVU
OgogI2lmZGVmIEFOR0xFX0VOQUJMRV9HTFNMCi0gICAgICAgIHJldHVybiBuZXcgVHJhbnNsYXRv
ckdMU0wodHlwZSwgc3BlYywgb3V0cHV0KTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgVHJhbnNs
YXRvckdMU0wodHlwZSwgc3BlYywgb3V0cHV0KTsKICNlbHNlCi0gICAgICAgIC8vIFRoaXMgY29t
cGlsZXIgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzCi0gICAgICAgIC8vIGNvbmZpZ3VyYXRpb24u
IFJldHVybiBOVUxMIHBlciB0aGUgU2hDb25zdHJ1Y3RDb21waWxlciBBUEkuCi0gICAgICAgIHJl
dHVybiBudWxscHRyOwotI2VuZGlmIC8vIEFOR0xFX0VOQUJMRV9HTFNMCi0gICAgICBjYXNlIFNI
X0hMU0xfM18wX09VVFBVVDoKLSAgICAgIGNhc2UgU0hfSExTTF80XzFfT1VUUFVUOgotICAgICAg
Y2FzZSBTSF9ITFNMXzRfMF9GTDlfM19PVVRQVVQ6CisgICAgICAgICAgICAvLyBUaGlzIGNvbXBp
bGVyIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBjb25maWd1cmF0aW9uLiBSZXR1cm4gTlVMTCBw
ZXIgdGhlCisgICAgICAgICAgICAvLyBzaDo6Q29uc3RydWN0Q29tcGlsZXIgQVBJLgorICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYgIC8vIEFOR0xFX0VOQUJMRV9HTFNMCisKKyAg
ICAgICAgY2FzZSBTSF9ITFNMXzNfMF9PVVRQVVQ6CisgICAgICAgIGNhc2UgU0hfSExTTF80XzFf
T1VUUFVUOgorICAgICAgICBjYXNlIFNIX0hMU0xfNF8wX0ZMOV8zX09VVFBVVDoKICNpZmRlZiBB
TkdMRV9FTkFCTEVfSExTTAotICAgICAgICByZXR1cm4gbmV3IFRyYW5zbGF0b3JITFNMKHR5cGUs
IHNwZWMsIG91dHB1dCk7CisgICAgICAgICAgICByZXR1cm4gbmV3IFRyYW5zbGF0b3JITFNMKHR5
cGUsIHNwZWMsIG91dHB1dCk7CiAjZWxzZQotICAgICAgICAvLyBUaGlzIGNvbXBpbGVyIGlzIG5v
dCBzdXBwb3J0ZWQgaW4gdGhpcwotICAgICAgICAvLyBjb25maWd1cmF0aW9uLiBSZXR1cm4gTlVM
TCBwZXIgdGhlIFNoQ29uc3RydWN0Q29tcGlsZXIgQVBJLgotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSNlbmRpZiAvLyBBTkdMRV9FTkFCTEVfSExTTAotICAgICAgZGVmYXVsdDoKLSAgICAgICAg
Ly8gVW5rbm93biBmb3JtYXQuIFJldHVybiBOVUxMIHBlciB0aGUgU2hDb25zdHJ1Y3RDb21waWxl
ciBBUEkuCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgLy8gVGhpcyBjb21w
aWxlciBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgY29uZmlndXJhdGlvbi4gUmV0dXJuIE5VTEwg
cGVyIHRoZQorICAgICAgICAgICAgLy8gc2g6OkNvbnN0cnVjdENvbXBpbGVyIEFQSS4KKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworI2VuZGlmICAvLyBBTkdMRV9FTkFCTEVfSExTTAorCisg
ICAgICAgIGNhc2UgU0hfR0xTTF9WVUxLQU5fT1VUUFVUOgorI2lmZGVmIEFOR0xFX0VOQUJMRV9W
VUxLQU4KKyAgICAgICAgICAgIHJldHVybiBuZXcgVHJhbnNsYXRvclZ1bGthbih0eXBlLCBzcGVj
KTsKKyNlbHNlCisgICAgICAgICAgICAvLyBUaGlzIGNvbXBpbGVyIGlzIG5vdCBzdXBwb3J0ZWQg
aW4gdGhpcyBjb25maWd1cmF0aW9uLiBSZXR1cm4gTlVMTCBwZXIgdGhlCisgICAgICAgICAgICAv
LyBTaENvbnN0cnVjdENvbXBpbGVyIEFQSS4KKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
I2VuZGlmICAvLyBBTkdMRV9FTkFCTEVfVlVMS0FOCisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIC8vIFVua25vd24gZm9ybWF0LiBSZXR1cm4gTlVMTCBwZXIgdGhlIHNoOjpDb25zdHJ1
Y3RDb21waWxlciBBUEkuCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiB9CiAK
IC8vCiAvLyBEZWxldGUgdGhlIGNvbXBpbGVyIG1hZGUgYnkgQ29uc3RydWN0Q29tcGlsZXIKIC8v
Ci12b2lkIERlbGV0ZUNvbXBpbGVyKFRDb21waWxlciogY29tcGlsZXIpCit2b2lkIERlbGV0ZUNv
bXBpbGVyKFRDb21waWxlciAqY29tcGlsZXIpCiB7Ci0gICAgZGVsZXRlIGNvbXBpbGVyOworICAg
IFNhZmVEZWxldGUoY29tcGlsZXIpOwogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NvbW1v
bi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29t
bW9uLmgKaW5kZXggNjAyMjMyMzJhZmMxNWE3OWM0NTM0MjkzYzdiZWY3OWQ2MzRkYmQwYi4uM2Ux
MmQyYWRkMTA2NzhiZTkwZDE0MDdhZTgyMjlhZTJkNGVmMTM3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29tbW9uLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29tbW9uLmgK
QEAgLTE4LDcgKzE4LDExIEBACiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCiAjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9Qb29sQWxsb2MuaCIKIAotc3RydWN0IFRTb3VyY2VMb2Mgewor
bmFtZXNwYWNlIHNoCit7CisKK3N0cnVjdCBUU291cmNlTG9jCit7CiAgICAgaW50IGZpcnN0X2Zp
bGU7CiAgICAgaW50IGZpcnN0X2xpbmU7CiAgICAgaW50IGxhc3RfZmlsZTsKQEAgLTI5LDI1ICsz
MywyNSBAQCBzdHJ1Y3QgVFNvdXJjZUxvYyB7CiAvLyBQdXQgUE9PTF9BTExPQ0FUT1JfTkVXX0RF
TEVURSBpbiBiYXNlIGNsYXNzZXMgdG8gbWFrZSB0aGVtIHVzZSB0aGlzIHNjaGVtZS4KIC8vCiAj
ZGVmaW5lIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXpl
X3QgcykgeyByZXR1cm4gR2V0R2xvYmFsUG9vbEFsbG9jYXRvcigpLT5hbGxvY2F0ZShzKTsgfSAg
IFwKLSAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2b2lkICpfV2hlcmUpIHsgcmV0dXJu
IChfV2hlcmUpOyB9ICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBvcGVyYXRvciBkZWxl
dGUodm9pZCopIHsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQgKiwgdm9pZCAqKSB7IH0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkKiBvcGVyYXRv
ciBuZXdbXShzaXplX3QgcykgeyByZXR1cm4gR2V0R2xvYmFsUG9vbEFsbG9jYXRvcigpLT5hbGxv
Y2F0ZShzKTsgfSBcCi0gICAgdm9pZCogb3BlcmF0b3IgbmV3W10oc2l6ZV90LCB2b2lkICpfV2hl
cmUpIHsgcmV0dXJuIChfV2hlcmUpOyB9ICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgb3Bl
cmF0b3IgZGVsZXRlW10odm9pZCopIHsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQgKiwgdm9p
ZCAqKSB7IH0KKyAgICB2b2lkICpvcGVyYXRvciBuZXcoc2l6ZV90IHMpIHsgcmV0dXJuIEdldEds
b2JhbFBvb2xBbGxvY2F0b3IoKS0+YWxsb2NhdGUocyk7IH0gICBcCisgICAgdm9pZCAqb3BlcmF0
b3IgbmV3KHNpemVfdCwgdm9pZCAqX1doZXJlKSB7IHJldHVybiAoX1doZXJlKTsgfSAgICAgICAg
ICAgICAgICAgICAgXAorICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQgKikge30gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIG9w
ZXJhdG9yIGRlbGV0ZSh2b2lkICosIHZvaWQgKikge30gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCAqb3BlcmF0b3IgbmV3W10oc2l6ZV90IHMpIHsg
cmV0dXJuIEdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKS0+YWxsb2NhdGUocyk7IH0gXAorICAgIHZv
aWQgKm9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCAqX1doZXJlKSB7IHJldHVybiAoX1doZXJl
KTsgfSAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQg
Kikge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkICosIHZvaWQgKikge30KIAogLy8KIC8vIFBv
b2wgdmVyc2lvbiBvZiBzdHJpbmcuCiAvLwogdHlwZWRlZiBwb29sX2FsbG9jYXRvcjxjaGFyPiBU
U3RyaW5nQWxsb2NhdG9yOwotdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZyA8Y2hhciwgc3RkOjpj
aGFyX3RyYWl0czxjaGFyPiwgVFN0cmluZ0FsbG9jYXRvcj4gVFN0cmluZzsKK3R5cGVkZWYgc3Rk
OjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgVFN0cmluZ0FsbG9j
YXRvcj4gVFN0cmluZzsKIHR5cGVkZWYgc3RkOjpiYXNpY19vc3RyaW5nc3RyZWFtPGNoYXIsIHN0
ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIFRTdHJpbmdBbGxvY2F0b3I+IFRTdHJpbmdTdHJlYW07Ci1p
bmxpbmUgVFN0cmluZyogTmV3UG9vbFRTdHJpbmcoY29uc3QgY2hhciogcykKK2lubGluZSBUU3Ry
aW5nICpOZXdQb29sVFN0cmluZyhjb25zdCBjaGFyICpzKQogewotCXZvaWQqIG1lbW9yeSA9IEdl
dEdsb2JhbFBvb2xBbGxvY2F0b3IoKS0+YWxsb2NhdGUoc2l6ZW9mKFRTdHJpbmcpKTsKLQlyZXR1
cm4gbmV3KG1lbW9yeSkgVFN0cmluZyhzKTsKKyAgICB2b2lkICptZW1vcnkgPSBHZXRHbG9iYWxQ
b29sQWxsb2NhdG9yKCktPmFsbG9jYXRlKHNpemVvZihUU3RyaW5nKSk7CisgICAgcmV0dXJuIG5l
dyAobWVtb3J5KSBUU3RyaW5nKHMpOwogfQogCiAvLwpAQCAtNjQsNiArNjgsOCBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVD4KIGNsYXNzIFRWZWN0b3IgOiBwdWJsaWMgc3RkOjp2ZWN0b3I8VCwgcG9vbF9h
bGxvY2F0b3I8VD4+CiB7CiAgIHB1YmxpYzoKKyAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRF
KCk7CisKICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6dmVjdG9yPFQsIHBvb2xfYWxsb2NhdG9y
PFQ+Pjo6c2l6ZV90eXBlIHNpemVfdHlwZTsKICAgICBUVmVjdG9yKCkgOiBzdGQ6OnZlY3RvcjxU
LCBwb29sX2FsbG9jYXRvcjxUPj4oKSB7fQogICAgIFRWZWN0b3IoY29uc3QgcG9vbF9hbGxvY2F0
b3I8VD4gJmEpIDogc3RkOjp2ZWN0b3I8VCwgcG9vbF9hbGxvY2F0b3I8VD4+KGEpIHt9CkBAIC03
NCwxMSArODAsMTUgQEAgdGVtcGxhdGUgPGNsYXNzIEssIGNsYXNzIEQsIGNsYXNzIENNUCA9IHN0
ZDo6bGVzczxLPj4KIGNsYXNzIFRNYXAgOiBwdWJsaWMgc3RkOjptYXA8SywgRCwgQ01QLCBwb29s
X2FsbG9jYXRvcjxzdGQ6OnBhaXI8Y29uc3QgSywgRD4+PgogewogICBwdWJsaWM6CisgICAgUE9P
TF9BTExPQ0FUT1JfTkVXX0RFTEVURSgpOwogICAgIHR5cGVkZWYgcG9vbF9hbGxvY2F0b3I8c3Rk
OjpwYWlyPGNvbnN0IEssIEQ+PiB0QWxsb2NhdG9yOwogCiAgICAgVE1hcCgpIDogc3RkOjptYXA8
SywgRCwgQ01QLCB0QWxsb2NhdG9yPigpIHt9CiAgICAgLy8gdXNlIGNvcnJlY3QgdHdvLXN0YWdl
IG5hbWUgbG9va3VwIHN1cHBvcnRlZCBpbiBnY2MgMy40IGFuZCBhYm92ZQotICAgIFRNYXAoY29u
c3QgdEFsbG9jYXRvciYgYSkgOiBzdGQ6Om1hcDxLLCBELCBDTVAsIHRBbGxvY2F0b3I+KHN0ZDo6
bWFwPEssIEQsIENNUCwgdEFsbG9jYXRvcj46OmtleV9jb21wYXJlKCksIGEpIHt9CisgICAgVE1h
cChjb25zdCB0QWxsb2NhdG9yICZhKQorICAgICAgICA6IHN0ZDo6bWFwPEssIEQsIENNUCwgdEFs
bG9jYXRvcj4oc3RkOjptYXA8SywgRCwgQ01QLCB0QWxsb2NhdG9yPjo6a2V5X2NvbXBhcmUoKSwg
YSkKKyAgICB7CisgICAgfQogfTsKIAogLy8gSW50ZWdlciB0byBUU3RyaW5nIGNvbnZlcnNpb24K
QEAgLTkyLDQgKzEwMiw2IEBAIGlubGluZSBUU3RyaW5nIHN0cihUIGkpCiAgICAgcmV0dXJuIGJ1
ZmZlcjsKIH0KIAotI2VuZGlmIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfQ09NTU9OX0hfCit9ICAv
LyBuYW1lc3BhY2Ugc2gKKworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0NPTU1PTl9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvQ29tcGlsZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvQ29tcGlsZXIuY3BwCmluZGV4IGViNWRkNTg1YzFjZDhjM2ZlYmU2OWNhNTQx
OTVkNjZlOGIwOTU1MWIuLmEwOWM1MDU4ZmUxODQzYzQzY2JkODZlZWU4ODQ5MDNjZDAzMzU4NDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL0NvbXBpbGVyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9Db21waWxlci5jcHAKQEAgLTE2LDEzICsxNiwxMiBAQAogI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvRGVmZXJHbG9iYWxJbml0aWFsaXplcnMuaCIKICNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdC5oIgogI2lu
Y2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0ZVByZWNpc2lvbi5oIgotI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvRm9yTG9vcFVucm9sbC5oIgogI2luY2x1ZGUgImNvbXBpbGVy
L3RyYW5zbGF0b3IvSW5pdGlhbGl6ZS5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3Iv
SW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3Iv
SW5pdGlhbGl6ZVZhcmlhYmxlcy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUGFy
c2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9QcnVuZUVtcHR5RGVj
bGFyYXRpb25zLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9SZWdlbmVyYXRlU3Ry
dWN0TmFtZXMuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1JlbW92ZUludmFyaWFu
dERlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVQb3cu
aCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVEb1doaWxlLmgiCiAjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFy
Z3MuaCIKQEAgLTMwLDEwICsyOSwxNCBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3Iv
VXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L1ZhbGlkYXRlTGltaXRhdGlvbnMuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Zh
bGlkYXRlTWF4UGFyYW1ldGVycy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVmFs
aWRhdGVNdWx0aXZpZXdXZWJHTC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVmFs
aWRhdGVPdXRwdXRzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9WYXJpYWJsZVBh
Y2tlci5oIgogI2luY2x1ZGUgInRoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBl
ci5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogbmFtZXNwYWNlCiB7CiAKQEAgLTc5LDM3ICs4Miw2
MiBAQCBib29sIElzV2ViR0xCYXNlZFNwZWMoU2hTaGFkZXJTcGVjIHNwZWMpCiAKIGJvb2wgSXNH
TFNMMTMwT3JOZXdlcihTaFNoYWRlck91dHB1dCBvdXRwdXQpCiB7Ci0gICAgcmV0dXJuIChvdXRw
dXQgPT0gU0hfR0xTTF8xMzBfT1VUUFVUIHx8Ci0gICAgICAgICAgICBvdXRwdXQgPT0gU0hfR0xT
TF8xNDBfT1VUUFVUIHx8Ci0gICAgICAgICAgICBvdXRwdXQgPT0gU0hfR0xTTF8xNTBfQ09SRV9P
VVRQVVQgfHwKLSAgICAgICAgICAgIG91dHB1dCA9PSBTSF9HTFNMXzMzMF9DT1JFX09VVFBVVCB8
fAotICAgICAgICAgICAgb3V0cHV0ID09IFNIX0dMU0xfNDAwX0NPUkVfT1VUUFVUIHx8Ci0gICAg
ICAgICAgICBvdXRwdXQgPT0gU0hfR0xTTF80MTBfQ09SRV9PVVRQVVQgfHwKLSAgICAgICAgICAg
IG91dHB1dCA9PSBTSF9HTFNMXzQyMF9DT1JFX09VVFBVVCB8fAotICAgICAgICAgICAgb3V0cHV0
ID09IFNIX0dMU0xfNDMwX0NPUkVfT1VUUFVUIHx8Ci0gICAgICAgICAgICBvdXRwdXQgPT0gU0hf
R0xTTF80NDBfQ09SRV9PVVRQVVQgfHwKLSAgICAgICAgICAgIG91dHB1dCA9PSBTSF9HTFNMXzQ1
MF9DT1JFX09VVFBVVCk7CisgICAgcmV0dXJuIChvdXRwdXQgPT0gU0hfR0xTTF8xMzBfT1VUUFVU
IHx8IG91dHB1dCA9PSBTSF9HTFNMXzE0MF9PVVRQVVQgfHwKKyAgICAgICAgICAgIG91dHB1dCA9
PSBTSF9HTFNMXzE1MF9DT1JFX09VVFBVVCB8fCBvdXRwdXQgPT0gU0hfR0xTTF8zMzBfQ09SRV9P
VVRQVVQgfHwKKyAgICAgICAgICAgIG91dHB1dCA9PSBTSF9HTFNMXzQwMF9DT1JFX09VVFBVVCB8
fCBvdXRwdXQgPT0gU0hfR0xTTF80MTBfQ09SRV9PVVRQVVQgfHwKKyAgICAgICAgICAgIG91dHB1
dCA9PSBTSF9HTFNMXzQyMF9DT1JFX09VVFBVVCB8fCBvdXRwdXQgPT0gU0hfR0xTTF80MzBfQ09S
RV9PVVRQVVQgfHwKKyAgICAgICAgICAgIG91dHB1dCA9PSBTSF9HTFNMXzQ0MF9DT1JFX09VVFBV
VCB8fCBvdXRwdXQgPT0gU0hfR0xTTF80NTBfQ09SRV9PVVRQVVQpOworfQorCitib29sIElzR0xT
TDQyME9yTmV3ZXIoU2hTaGFkZXJPdXRwdXQgb3V0cHV0KQoreworICAgIHJldHVybiAob3V0cHV0
ID09IFNIX0dMU0xfNDIwX0NPUkVfT1VUUFVUIHx8IG91dHB1dCA9PSBTSF9HTFNMXzQzMF9DT1JF
X09VVFBVVCB8fAorICAgICAgICAgICAgb3V0cHV0ID09IFNIX0dMU0xfNDQwX0NPUkVfT1VUUFVU
IHx8IG91dHB1dCA9PSBTSF9HTFNMXzQ1MF9DT1JFX09VVFBVVCk7Cit9CisKK2Jvb2wgSXNHTFNM
NDEwT3JPbGRlcihTaFNoYWRlck91dHB1dCBvdXRwdXQpCit7CisgICAgcmV0dXJuIChvdXRwdXQg
PT0gU0hfR0xTTF8xMzBfT1VUUFVUIHx8IG91dHB1dCA9PSBTSF9HTFNMXzE0MF9PVVRQVVQgfHwK
KyAgICAgICAgICAgIG91dHB1dCA9PSBTSF9HTFNMXzE1MF9DT1JFX09VVFBVVCB8fCBvdXRwdXQg
PT0gU0hfR0xTTF8zMzBfQ09SRV9PVVRQVVQgfHwKKyAgICAgICAgICAgIG91dHB1dCA9PSBTSF9H
TFNMXzQwMF9DT1JFX09VVFBVVCB8fCBvdXRwdXQgPT0gU0hfR0xTTF80MTBfQ09SRV9PVVRQVVQp
OworfQorCitib29sIFJlbW92ZUludmFyaWFudChzaDo6R0xlbnVtIHNoYWRlclR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
IFNoU2hhZGVyT3V0cHV0IG91dHB1dFR5cGUsCisgICAgICAgICAgICAgICAgICAgICBTaENvbXBp
bGVPcHRpb25zIGNvbXBpbGVPcHRpb25zKQoreworICAgIGlmICgoY29tcGlsZU9wdGlvbnMgJiBT
SF9ET05UX1JFTU9WRV9JTlZBUklBTlRfRk9SX0ZSQUdNRU5UX0lOUFVUKSA9PSAwICYmCisgICAg
ICAgIHNoYWRlclR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSICYmIElzR0xTTDQyME9yTmV3ZXIo
b3V0cHV0VHlwZSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKChjb21waWxlT3B0
aW9ucyAmIFNIX1JFTU9WRV9JTlZBUklBTlRfQU5EX0NFTlRST0lEX0ZPUl9FU1NMMykgIT0gMCAm
JgorICAgICAgICBzaGFkZXJWZXJzaW9uID49IDMwMCAmJiBzaGFkZXJUeXBlID09IEdMX1ZFUlRF
WF9TSEFERVIpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOwogfQog
CiBzaXplX3QgR2V0R2xvYmFsTWF4VG9rZW5TaXplKFNoU2hhZGVyU3BlYyBzcGVjKQogewotICAg
IC8vIFdlYkdMIGRlZmluZXMgYSBtYXggdG9rZW4gbGVnbnRoIG9mIDI1Niwgd2hpbGUgRVMyIGxl
YXZlcyBtYXggdG9rZW4KKyAgICAvLyBXZWJHTCBkZWZpbmVzIGEgbWF4IHRva2VuIGxlbmd0aCBv
ZiAyNTYsIHdoaWxlIEVTMiBsZWF2ZXMgbWF4IHRva2VuCiAgICAgLy8gc2l6ZSB1bmRlZmluZWQu
IEVTMyBkZWZpbmVzIGEgbWF4IHNpemUgb2YgMTAyNCBjaGFyYWN0ZXJzLgogICAgIHN3aXRjaCAo
c3BlYykKICAgICB7Ci0gICAgICBjYXNlIFNIX1dFQkdMX1NQRUM6Ci0gICAgICAgIHJldHVybiAy
NTY7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gMTAyNDsKKyAgICAgICAgY2FzZSBT
SF9XRUJHTF9TUEVDOgorICAgICAgICAgICAgcmV0dXJuIDI1NjsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHJldHVybiAxMDI0OwogICAgIH0KIH0KIAotbmFtZXNwYWNlIHsKK25hbWVz
cGFjZQorewogCiBjbGFzcyBUU2NvcGVkUG9vbEFsbG9jYXRvcgogewogICBwdWJsaWM6Ci0gICAg
VFNjb3BlZFBvb2xBbGxvY2F0b3IoVFBvb2xBbGxvY2F0b3IqIGFsbG9jYXRvcikgOiBtQWxsb2Nh
dG9yKGFsbG9jYXRvcikKKyAgICBUU2NvcGVkUG9vbEFsbG9jYXRvcihUUG9vbEFsbG9jYXRvciAq
YWxsb2NhdG9yKSA6IG1BbGxvY2F0b3IoYWxsb2NhdG9yKQogICAgIHsKICAgICAgICAgbUFsbG9j
YXRvci0+cHVzaCgpOwogICAgICAgICBTZXRHbG9iYWxQb29sQWxsb2NhdG9yKG1BbGxvY2F0b3Ip
OwpAQCAtMTIxLDEzICsxNDksMTMgQEAgY2xhc3MgVFNjb3BlZFBvb2xBbGxvY2F0b3IKICAgICB9
CiAKICAgcHJpdmF0ZToKLSAgICBUUG9vbEFsbG9jYXRvciogbUFsbG9jYXRvcjsKKyAgICBUUG9v
bEFsbG9jYXRvciAqbUFsbG9jYXRvcjsKIH07CiAKIGNsYXNzIFRTY29wZWRTeW1ib2xUYWJsZUxl
dmVsCiB7CiAgIHB1YmxpYzoKLSAgICBUU2NvcGVkU3ltYm9sVGFibGVMZXZlbChUU3ltYm9sVGFi
bGUqIHRhYmxlKSA6IG1UYWJsZSh0YWJsZSkKKyAgICBUU2NvcGVkU3ltYm9sVGFibGVMZXZlbChU
U3ltYm9sVGFibGUgKnRhYmxlKSA6IG1UYWJsZSh0YWJsZSkKICAgICB7CiAgICAgICAgIEFTU0VS
VChtVGFibGUtPmF0QnVpbHRJbkxldmVsKCkpOwogICAgICAgICBtVGFibGUtPnB1c2goKTsKQEAg
LTEzOSwyNSArMTY3LDI1IEBAIGNsYXNzIFRTY29wZWRTeW1ib2xUYWJsZUxldmVsCiAgICAgfQog
CiAgIHByaXZhdGU6Ci0gICAgVFN5bWJvbFRhYmxlKiBtVGFibGU7CisgICAgVFN5bWJvbFRhYmxl
ICptVGFibGU7CiB9OwogCiBpbnQgTWFwU3BlY1RvU2hhZGVyVmVyc2lvbihTaFNoYWRlclNwZWMg
c3BlYykKIHsKICAgICBzd2l0Y2ggKHNwZWMpCiAgICAgewotICAgICAgY2FzZSBTSF9HTEVTMl9T
UEVDOgotICAgICAgY2FzZSBTSF9XRUJHTF9TUEVDOgotICAgICAgICByZXR1cm4gMTAwOwotICAg
ICAgY2FzZSBTSF9HTEVTM19TUEVDOgotICAgICAgY2FzZSBTSF9XRUJHTDJfU1BFQzoKLSAgICAg
ICAgcmV0dXJuIDMwMDsKLSAgICAgIGNhc2UgU0hfR0xFUzNfMV9TUEVDOgotICAgICAgY2FzZSBT
SF9XRUJHTDNfU1BFQzoKLSAgICAgICAgICByZXR1cm4gMzEwOwotICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgU0hf
R0xFUzJfU1BFQzoKKyAgICAgICAgY2FzZSBTSF9XRUJHTF9TUEVDOgorICAgICAgICAgICAgcmV0
dXJuIDEwMDsKKyAgICAgICAgY2FzZSBTSF9HTEVTM19TUEVDOgorICAgICAgICBjYXNlIFNIX1dF
QkdMMl9TUEVDOgorICAgICAgICAgICAgcmV0dXJuIDMwMDsKKyAgICAgICAgY2FzZSBTSF9HTEVT
M18xX1NQRUM6CisgICAgICAgIGNhc2UgU0hfV0VCR0wzX1NQRUM6CisgICAgICAgICAgICByZXR1
cm4gMzEwOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KIApAQCAtMTg3LDYgKzIxNSw3IEBAIFRDb21w
aWxlcjo6VENvbXBpbGVyKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIFNoU2hh
ZGVyT3V0cHV0IG91dHB1dCkKICAgICAgIGZyYWdtZW50UHJlY2lzaW9uSGlnaChmYWxzZSksCiAg
ICAgICBjbGFtcGluZ1N0cmF0ZWd5KFNIX0NMQU1QX1dJVEhfQ0xBTVBfSU5UUklOU0lDKSwKICAg
ICAgIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKCksCisgICAgICBtRGlhZ25vc3RpY3MoaW5mb1Np
bmsuaW5mbyksCiAgICAgICBtU291cmNlUGF0aChOVUxMKSwKICAgICAgIG1Db21wdXRlU2hhZGVy
TG9jYWxTaXplRGVjbGFyZWQoZmFsc2UpLAogICAgICAgbVRlbXBvcmFyeUluZGV4KDApCkBAIC0y
MDcsMTIgKzIzNiwxMSBAQCBib29sIFRDb21waWxlcjo6c2hvdWxkUnVuTG9vcEFuZEluZGV4aW5n
VmFsaWRhdGlvbihTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpbwogICAgICAgICAgICAoY29t
cGlsZU9wdGlvbnMgJiBTSF9WQUxJREFURV9MT09QX0lOREVYSU5HKTsKIH0KIAotYm9vbCBUQ29t
cGlsZXI6OkluaXQoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMpCitib29sIFRD
b21waWxlcjo6SW5pdChjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMgJnJlc291cmNlcykKIHsKLSAg
ICBzaGFkZXJWZXJzaW9uID0gMTAwOwotICAgIG1heFVuaWZvcm1WZWN0b3JzID0gKHNoYWRlclR5
cGUgPT0gR0xfVkVSVEVYX1NIQURFUikgPwotICAgICAgICByZXNvdXJjZXMuTWF4VmVydGV4VW5p
Zm9ybVZlY3RvcnMgOgotICAgICAgICByZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9y
czsKKyAgICBzaGFkZXJWZXJzaW9uICAgICA9IDEwMDsKKyAgICBtYXhVbmlmb3JtVmVjdG9ycyA9
IChzaGFkZXJUeXBlID09IEdMX1ZFUlRFWF9TSEFERVIpID8gcmVzb3VyY2VzLk1heFZlcnRleFVu
aWZvcm1WZWN0b3JzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6IHJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzOwogICAg
IG1heEV4cHJlc3Npb25Db21wbGV4aXR5ID0gcmVzb3VyY2VzLk1heEV4cHJlc3Npb25Db21wbGV4
aXR5OwogICAgIG1heENhbGxTdGFja0RlcHRoICAgICAgID0gcmVzb3VyY2VzLk1heENhbGxTdGFj
a0RlcHRoOwogICAgIG1heEZ1bmN0aW9uUGFyYW1ldGVycyAgID0gcmVzb3VyY2VzLk1heEZ1bmN0
aW9uUGFyYW1ldGVyczsKQEAgLTI2MSwyNSArMjg5LDIzIEBAIFRJbnRlcm1CbG9jayAqVENvbXBp
bGVyOjpjb21waWxlVHJlZUltcGwoY29uc3QgY2hhciAqY29uc3Qgc2hhZGVyU3RyaW5nc1tdLAog
ICAgIH0KIAogICAgIFRQYXJzZUNvbnRleHQgcGFyc2VDb250ZXh0KHN5bWJvbFRhYmxlLCBleHRl
bnNpb25CZWhhdmlvciwgc2hhZGVyVHlwZSwgc2hhZGVyU3BlYywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb21waWxlT3B0aW9ucywgdHJ1ZSwgaW5mb1NpbmssIGdldFJlc291cmNl
cygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlT3B0aW9ucywgdHJ1
ZSwgJm1EaWFnbm9zdGljcywgZ2V0UmVzb3VyY2VzKCkpOwogCiAgICAgcGFyc2VDb250ZXh0LnNl
dEZyYWdtZW50UHJlY2lzaW9uSGlnaE9uRVNTTDEoZnJhZ21lbnRQcmVjaXNpb25IaWdoKTsKLSAg
ICBTZXRHbG9iYWxQYXJzZUNvbnRleHQoJnBhcnNlQ29udGV4dCk7CiAKICAgICAvLyBXZSBwcmVz
ZXJ2ZSBzeW1ib2xzIGF0IHRoZSBidWlsdC1pbiBsZXZlbCBmcm9tIGNvbXBpbGUtdG8tY29tcGls
ZS4KICAgICAvLyBTdGFydCBwdXNoaW5nIHRoZSB1c2VyLWRlZmluZWQgc3ltYm9scyBhdCBnbG9i
YWwgbGV2ZWwuCiAgICAgVFNjb3BlZFN5bWJvbFRhYmxlTGV2ZWwgc2NvcGVkU3ltYm9sTGV2ZWwo
JnN5bWJvbFRhYmxlKTsKIAogICAgIC8vIFBhcnNlIHNoYWRlci4KLSAgICBib29sIHN1Y2Nlc3Mg
PQotICAgICAgICAoUGFQYXJzZVN0cmluZ3MobnVtU3RyaW5ncyAtIGZpcnN0U291cmNlLCAmc2hh
ZGVyU3RyaW5nc1tmaXJzdFNvdXJjZV0sIG51bGxwdHIsICZwYXJzZUNvbnRleHQpID09IDApICYm
Ci0gICAgICAgIChwYXJzZUNvbnRleHQuZ2V0VHJlZVJvb3QoKSAhPSBudWxscHRyKTsKKyAgICBi
b29sIHN1Y2Nlc3MgPSAoUGFQYXJzZVN0cmluZ3MobnVtU3RyaW5ncyAtIGZpcnN0U291cmNlLCAm
c2hhZGVyU3RyaW5nc1tmaXJzdFNvdXJjZV0sIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZwYXJzZUNvbnRleHQpID09IDApICYmCisgICAgICAgICAgICAgICAg
ICAgKHBhcnNlQ29udGV4dC5nZXRUcmVlUm9vdCgpICE9IG51bGxwdHIpOwogCiAgICAgc2hhZGVy
VmVyc2lvbiA9IHBhcnNlQ29udGV4dC5nZXRTaGFkZXJWZXJzaW9uKCk7CiAgICAgaWYgKHN1Y2Nl
c3MgJiYgTWFwU3BlY1RvU2hhZGVyVmVyc2lvbihzaGFkZXJTcGVjKSA8IHNoYWRlclZlcnNpb24p
CiAgICAgewotICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOwotICAg
ICAgICBpbmZvU2luay5pbmZvIDw8ICJ1bnN1cHBvcnRlZCBzaGFkZXIgdmVyc2lvbiI7CisgICAg
ICAgIG1EaWFnbm9zdGljcy5nbG9iYWxFcnJvcigidW5zdXBwb3J0ZWQgc2hhZGVyIHZlcnNpb24i
KTsKICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwogICAgIH0KIApAQCAtMjkzLDExICszMTksMjIg
QEAgVEludGVybUJsb2NrICpUQ29tcGlsZXI6OmNvbXBpbGVUcmVlSW1wbChjb25zdCBjaGFyICpj
b25zdCBzaGFkZXJTdHJpbmdzW10sCiAgICAgICAgIG1Db21wdXRlU2hhZGVyTG9jYWxTaXplRGVj
bGFyZWQgPSBwYXJzZUNvbnRleHQuaXNDb21wdXRlU2hhZGVyTG9jYWxTaXplRGVjbGFyZWQoKTsK
ICAgICAgICAgbUNvbXB1dGVTaGFkZXJMb2NhbFNpemUgICAgICAgICA9IHBhcnNlQ29udGV4dC5n
ZXRDb21wdXRlU2hhZGVyTG9jYWxTaXplKCk7CiAKKyAgICAgICAgbU51bVZpZXdzID0gcGFyc2VD
b250ZXh0LmdldE51bVZpZXdzKCk7CisKICAgICAgICAgcm9vdCA9IHBhcnNlQ29udGV4dC5nZXRU
cmVlUm9vdCgpOwogCiAgICAgICAgIC8vIEhpZ2hwIG1pZ2h0IGhhdmUgYmVlbiBhdXRvLWVuYWJs
ZWQgYmFzZWQgb24gc2hhZGVyIHZlcnNpb24KICAgICAgICAgZnJhZ21lbnRQcmVjaXNpb25IaWdo
ID0gcGFyc2VDb250ZXh0LmdldEZyYWdtZW50UHJlY2lzaW9uSGlnaCgpOwogCisgICAgICAgIGlm
IChzdWNjZXNzICYmIChJc1dlYkdMQmFzZWRTcGVjKHNoYWRlclNwZWMpICYmCisgICAgICAgICAg
ICAgICAgICAgICAgICBJc0V4dGVuc2lvbkVuYWJsZWQoZXh0ZW5zaW9uQmVoYXZpb3IsICJHTF9P
VlJfbXVsdGl2aWV3IikgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIElzRXh0ZW5zaW9uRW5h
YmxlZChleHRlbnNpb25CZWhhdmlvciwgIkdMX09WUl9tdWx0aXZpZXcyIikpKQorICAgICAgICB7
CisgICAgICAgICAgICAvLyBDYW4ndCBlbmFibGUgYm90aCBleHRlbnNpb25zIGF0IHRoZSBzYW1l
IHRpbWUuCisgICAgICAgICAgICBtRGlhZ25vc3RpY3MuZ2xvYmFsRXJyb3IoIkNhbid0IGVuYWJs
ZSBib3RoIE9WUl9tdWx0aXZpZXcgYW5kIE9WUl9tdWx0aXZpZXcyIik7CisgICAgICAgICAgICBz
dWNjZXNzID0gZmFsc2U7CisgICAgICAgIH0KKwogICAgICAgICAvLyBEaXNhbGxvdyBleHByZXNz
aW9ucyBkZWVtZWQgdG9vIGNvbXBsZXguCiAgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxl
T3B0aW9ucyAmIFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWSkpCiAgICAgICAgICAgICBz
dWNjZXNzID0gbGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShyb290KTsKQEAgLTMyMCw3ICszNTcs
OCBAQCBUSW50ZXJtQmxvY2sgKlRDb21waWxlcjo6Y29tcGlsZVRyZWVJbXBsKGNvbnN0IGNoYXIg
KmNvbnN0IHNoYWRlclN0cmluZ3NbXSwKICAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgIShjb21waWxl
T3B0aW9ucyAmIFNIX0RPTlRfUFJVTkVfVU5VU0VEX0ZVTkNUSU9OUykpCiAgICAgICAgICAgICBz
dWNjZXNzID0gcHJ1bmVVbnVzZWRGdW5jdGlvbnMocm9vdCk7CiAKLSAgICAgICAgLy8gUHJ1bmUg
ZW1wdHkgZGVjbGFyYXRpb25zIHRvIHdvcmsgYXJvdW5kIGRyaXZlciBidWdzIGFuZCB0byBrZWVw
IGRlY2xhcmF0aW9uIG91dHB1dCBzaW1wbGUuCisgICAgICAgIC8vIFBydW5lIGVtcHR5IGRlY2xh
cmF0aW9ucyB0byB3b3JrIGFyb3VuZCBkcml2ZXIgYnVncyBhbmQgdG8ga2VlcCBkZWNsYXJhdGlv
biBvdXRwdXQKKyAgICAgICAgLy8gc2ltcGxlLgogICAgICAgICBpZiAoc3VjY2VzcykKICAgICAg
ICAgICAgIFBydW5lRW1wdHlEZWNsYXJhdGlvbnMocm9vdCk7CiAKQEAgLTMyOCw3ICszNjYsMTQg
QEAgVEludGVybUJsb2NrICpUQ29tcGlsZXI6OmNvbXBpbGVUcmVlSW1wbChjb25zdCBjaGFyICpj
b25zdCBzaGFkZXJTdHJpbmdzW10sCiAgICAgICAgICAgICBzdWNjZXNzID0gdmFsaWRhdGVPdXRw
dXRzKHJvb3QpOwogCiAgICAgICAgIGlmIChzdWNjZXNzICYmIHNob3VsZFJ1bkxvb3BBbmRJbmRl
eGluZ1ZhbGlkYXRpb24oY29tcGlsZU9wdGlvbnMpKQotICAgICAgICAgICAgc3VjY2VzcyA9IHZh
bGlkYXRlTGltaXRhdGlvbnMocm9vdCk7CisgICAgICAgICAgICBzdWNjZXNzID0KKyAgICAgICAg
ICAgICAgICBWYWxpZGF0ZUxpbWl0YXRpb25zKHJvb3QsIHNoYWRlclR5cGUsIHN5bWJvbFRhYmxl
LCBzaGFkZXJWZXJzaW9uLCAmbURpYWdub3N0aWNzKTsKKworICAgICAgICBib29sIG11bHRpdmll
dzIgPSBJc0V4dGVuc2lvbkVuYWJsZWQoZXh0ZW5zaW9uQmVoYXZpb3IsICJHTF9PVlJfbXVsdGl2
aWV3MiIpOworICAgICAgICBpZiAoc3VjY2VzcyAmJiBjb21waWxlUmVzb3VyY2VzLk9WUl9tdWx0
aXZpZXcgJiYgSXNXZWJHTEJhc2VkU3BlYyhzaGFkZXJTcGVjKSAmJgorICAgICAgICAgICAgKElz
RXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb25CZWhhdmlvciwgIkdMX09WUl9tdWx0aXZpZXciKSB8
fCBtdWx0aXZpZXcyKSkKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBWYWxpZGF0ZU11bHRpdmlld1dl
YkdMKHJvb3QsIHNoYWRlclR5cGUsIHN5bWJvbFRhYmxlLCBzaGFkZXJWZXJzaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGl2aWV3MiwgJm1EaWFn
bm9zdGljcyk7CiAKICAgICAgICAgLy8gRmFpbCBjb21waWxhdGlvbiBpZiBwcmVjaXNpb24gZW11
bGF0aW9uIG5vdCBzdXBwb3J0ZWQuCiAgICAgICAgIGlmIChzdWNjZXNzICYmIGdldFJlc291cmNl
cygpLldFQkdMX2RlYnVnX3NoYWRlcl9wcmVjaXNpb24gJiYKQEAgLTMzNiwyOCArMzgxLDcgQEAg
VEludGVybUJsb2NrICpUQ29tcGlsZXI6OmNvbXBpbGVUcmVlSW1wbChjb25zdCBjaGFyICpjb25z
dCBzaGFkZXJTdHJpbmdzW10sCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghRW11bGF0ZVBy
ZWNpc2lvbjo6U3VwcG9ydGVkSW5MYW5ndWFnZShvdXRwdXRUeXBlKSkKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOwotICAg
ICAgICAgICAgICAgIGluZm9TaW5rLmluZm8gPDwgIlByZWNpc2lvbiBlbXVsYXRpb24gbm90IHN1
cHBvcnRlZCBmb3IgdGhpcyBvdXRwdXQgdHlwZS4iOwotICAgICAgICAgICAgICAgIHN1Y2Nlc3Mg
PSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFVucm9sbCBm
b3ItbG9vcCBtYXJrdXAgbmVlZHMgdG8gaGFwcGVuIGFmdGVyIHZhbGlkYXRlTGltaXRhdGlvbnMg
cGFzcy4KLSAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfVU5ST0xM
X0ZPUl9MT09QX1dJVEhfSU5URUdFUl9JTkRFWCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEZv
ckxvb3BVbnJvbGxNYXJrZXIgbWFya2VyKEZvckxvb3BVbnJvbGxNYXJrZXI6OmtJbnRlZ2VySW5k
ZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRSdW5Mb29w
QW5kSW5kZXhpbmdWYWxpZGF0aW9uKGNvbXBpbGVPcHRpb25zKSk7Ci0gICAgICAgICAgICByb290
LT50cmF2ZXJzZSgmbWFya2VyKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3VjY2VzcyAmJiAo
Y29tcGlsZU9wdGlvbnMgJiBTSF9VTlJPTExfRk9SX0xPT1BfV0lUSF9TQU1QTEVSX0FSUkFZX0lO
REVYKSkKLSAgICAgICAgewotICAgICAgICAgICAgRm9yTG9vcFVucm9sbE1hcmtlciBtYXJrZXIo
Rm9yTG9vcFVucm9sbE1hcmtlcjo6a1NhbXBsZXJBcnJheUluZGV4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkUnVuTG9vcEFuZEluZGV4aW5nVmFsaWRhdGlv
bihjb21waWxlT3B0aW9ucykpOwotICAgICAgICAgICAgcm9vdC0+dHJhdmVyc2UoJm1hcmtlcik7
Ci0gICAgICAgICAgICBpZiAobWFya2VyLnNhbXBsZXJBcnJheUluZGV4SXNGbG9hdExvb3BJbmRl
eCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ucHJlZml4
KEVQcmVmaXhFcnJvcik7Ci0gICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAic2FtcGxl
ciBhcnJheSBpbmRleCBpcyBmbG9hdCBsb29wIGluZGV4IjsKKyAgICAgICAgICAgICAgICBtRGlh
Z25vc3RpY3MuZ2xvYmFsRXJyb3IoIlByZWNpc2lvbiBlbXVsYXRpb24gbm90IHN1cHBvcnRlZCBm
b3IgdGhpcyBvdXRwdXQgdHlwZS4iKTsKICAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTM2OSw3ICszOTMsNyBAQCBUSW50ZXJtQmxv
Y2sgKlRDb21waWxlcjo6Y29tcGlsZVRyZWVJbXBsKGNvbnN0IGNoYXIgKmNvbnN0IHNoYWRlclN0
cmluZ3NbXSwKICAgICAgICAgICAgIEdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKS0+bG9jaygpOwog
ICAgICAgICAgICAgaW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKCZidWlsdEluRnVuY3Rpb25F
bXVsYXRvciwgY29tcGlsZU9wdGlvbnMpOwogICAgICAgICAgICAgR2V0R2xvYmFsUG9vbEFsbG9j
YXRvcigpLT51bmxvY2soKTsKLSAgICAgICAgICAgIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLk1h
cmtCdWlsdEluRnVuY3Rpb25zRm9yRW11bGF0aW9uKHJvb3QpOworICAgICAgICAgICAgYnVpbHRJ
bkZ1bmN0aW9uRW11bGF0b3IubWFya0J1aWx0SW5GdW5jdGlvbnNGb3JFbXVsYXRpb24ocm9vdCk7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBDbGFtcGluZyB1bmlmb3JtIGFycmF5IGJvdW5kcyBu
ZWVkcyB0byBoYXBwZW4gYWZ0ZXIgdmFsaWRhdGVMaW1pdGF0aW9ucyBwYXNzLgpAQCAtNDEzLDgg
KzQzNyw3IEBAIFRJbnRlcm1CbG9jayAqVENvbXBpbGVyOjpjb21waWxlVHJlZUltcGwoY29uc3Qg
Y2hhciAqY29uc3Qgc2hhZGVyU3RyaW5nc1tdLAogICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBl
bmZvcmNlUGFja2luZ1Jlc3RyaWN0aW9ucygpOwogICAgICAgICAgICAgICAgIGlmICghc3VjY2Vz
cykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8u
cHJlZml4KEVQcmVmaXhFcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8g
PDwgInRvbyBtYW55IHVuaWZvcm1zIjsKKyAgICAgICAgICAgICAgICAgICAgbURpYWdub3N0aWNz
Lmdsb2JhbEVycm9yKCJ0b28gbWFueSB1bmlmb3JtcyIpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAm
IFNIX0lOSVRfT1VUUFVUX1ZBUklBQkxFUykpCkBAIC00MjMsMTEgKzQ0NiwxNSBAQCBUSW50ZXJt
QmxvY2sgKlRDb21waWxlcjo6Y29tcGlsZVRyZWVJbXBsKGNvbnN0IGNoYXIgKmNvbnN0IHNoYWRl
clN0cmluZ3NbXSwKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAgICAgIC8vIFJlbW92
aW5nIGludmFyaWFudCBkZWNsYXJhdGlvbnMgbXVzdCBiZSBkb25lIGFmdGVyIGNvbGxlY3Rpbmcg
dmFyaWFibGVzLgorICAgICAgICAvLyBPdGhlcndpc2UsIGJ1aWx0LWluIGludmFyaWFudCBkZWNs
YXJhdGlvbnMgZG9uJ3QgYXBwbHkuCisgICAgICAgIGlmIChzdWNjZXNzICYmIFJlbW92ZUludmFy
aWFudChzaGFkZXJUeXBlLCBzaGFkZXJWZXJzaW9uLCBvdXRwdXRUeXBlLCBjb21waWxlT3B0aW9u
cykpCisgICAgICAgICAgICBzaDo6UmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24ocm9vdCk7CisK
ICAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfU0NBTEFSSVpFX1ZF
Q19BTkRfTUFUX0NPTlNUUlVDVE9SX0FSR1MpKQogICAgICAgICB7Ci0gICAgICAgICAgICBTY2Fs
YXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3Mgc2NhbGFyaXplcigKLSAgICAgICAgICAgICAg
ICBzaGFkZXJUeXBlLCBmcmFnbWVudFByZWNpc2lvbkhpZ2gpOwotICAgICAgICAgICAgcm9vdC0+
dHJhdmVyc2UoJnNjYWxhcml6ZXIpOworICAgICAgICAgICAgU2NhbGFyaXplVmVjQW5kTWF0Q29u
c3RydWN0b3JBcmdzKHJvb3QsIHNoYWRlclR5cGUsIGZyYWdtZW50UHJlY2lzaW9uSGlnaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbVRlbXBvcmFyeUlu
ZGV4KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0aW9u
cyAmIFNIX1JFR0VORVJBVEVfU1RSVUNUX05BTUVTKSkKQEAgLTQ0OSw3ICs0NzYsNiBAQCBUSW50
ZXJtQmxvY2sgKlRDb21waWxlcjo6Y29tcGlsZVRyZWVJbXBsKGNvbnN0IGNoYXIgKmNvbnN0IHNo
YWRlclN0cmluZ3NbXSwKICAgICAgICAgfQogICAgIH0KIAotICAgIFNldEdsb2JhbFBhcnNlQ29u
dGV4dChOVUxMKTsKICAgICBpZiAoc3VjY2VzcykKICAgICAgICAgcmV0dXJuIHJvb3Q7CiAKQEAg
LTQ3NiwxNyArNTAyLDYgQEAgYm9vbCBUQ29tcGlsZXI6OmNvbXBpbGUoY29uc3QgY2hhciAqY29u
c3Qgc2hhZGVyU3RyaW5nc1tdLAogICAgICAgICBjb21waWxlT3B0aW9ucyB8PSBTSF9GTEFUVEVO
X1BSQUdNQV9TVERHTF9JTlZBUklBTlRfQUxMOwogICAgIH0KIAotICAgIFNoQ29tcGlsZU9wdGlv
bnMgdW5yb2xsRmxhZ3MgPQotICAgICAgICBTSF9VTlJPTExfRk9SX0xPT1BfV0lUSF9JTlRFR0VS
X0lOREVYIHwgU0hfVU5ST0xMX0ZPUl9MT09QX1dJVEhfU0FNUExFUl9BUlJBWV9JTkRFWDsKLSAg
ICBpZiAoKGNvbXBpbGVPcHRpb25zICYgU0hfQUREX0FORF9UUlVFX1RPX0xPT1BfQ09ORElUSU9O
KSAhPSAwICYmCi0gICAgICAgIChjb21waWxlT3B0aW9ucyAmIHVucm9sbEZsYWdzKSAhPSAwKQot
ICAgIHsKLSAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEVycm9yKTsKLSAgICAg
ICAgaW5mb1NpbmsuaW5mbwotICAgICAgICAgICAgPDwgIlVuc3VwcG9ydGVkIGNvbXBpbGUgZmxh
ZyBjb21iaW5hdGlvbjogdW5yb2xsICYgQUREX1RSVUVfVE9fTE9PUF9DT05ESVRJT04iOwotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgVFNjb3BlZFBvb2xBbGxvY2F0b3Igc2Nv
cGVkQWxsb2MoJmFsbG9jYXRvcik7CiAgICAgVEludGVybUJsb2NrICpyb290ID0gY29tcGlsZVRy
ZWVJbXBsKHNoYWRlclN0cmluZ3MsIG51bVN0cmluZ3MsIGNvbXBpbGVPcHRpb25zKTsKIApAQCAt
NTA3LDQwICs1MjIsNDUgQEAgYm9vbCBUQ29tcGlsZXI6OmNvbXBpbGUoY29uc3QgY2hhciAqY29u
c3Qgc2hhZGVyU3RyaW5nc1tdLAogCiBib29sIFRDb21waWxlcjo6SW5pdEJ1aWx0SW5TeW1ib2xU
YWJsZShjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMgJnJlc291cmNlcykKIHsKKyAgICBpZiAocmVz
b3VyY2VzLk1heERyYXdCdWZmZXJzIDwgMSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgaWYgKHJlc291cmNlcy5FWFRfYmxlbmRfZnVuY19leHRlbmRlZCAmJiByZXNv
dXJjZXMuTWF4RHVhbFNvdXJjZURyYXdCdWZmZXJzIDwgMSkKKyAgICB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKICAgICBjb21waWxlUmVzb3VyY2VzID0gcmVzb3VyY2VzOwogICAg
IHNldFJlc291cmNlU3RyaW5nKCk7CiAKICAgICBhc3NlcnQoc3ltYm9sVGFibGUuaXNFbXB0eSgp
KTsKLSAgICBzeW1ib2xUYWJsZS5wdXNoKCk7ICAgLy8gQ09NTU9OX0JVSUxUSU5TCi0gICAgc3lt
Ym9sVGFibGUucHVzaCgpOyAgIC8vIEVTU0wxX0JVSUxUSU5TCi0gICAgc3ltYm9sVGFibGUucHVz
aCgpOyAgIC8vIEVTU0wzX0JVSUxUSU5TCi0gICAgc3ltYm9sVGFibGUucHVzaCgpOyAgIC8vIEVT
U0wzXzFfQlVJTFRJTlMKKyAgICBzeW1ib2xUYWJsZS5wdXNoKCk7ICAvLyBDT01NT05fQlVJTFRJ
TlMKKyAgICBzeW1ib2xUYWJsZS5wdXNoKCk7ICAvLyBFU1NMMV9CVUlMVElOUworICAgIHN5bWJv
bFRhYmxlLnB1c2goKTsgIC8vIEVTU0wzX0JVSUxUSU5TCisgICAgc3ltYm9sVGFibGUucHVzaCgp
OyAgLy8gRVNTTDNfMV9CVUlMVElOUwogCiAgICAgVFB1YmxpY1R5cGUgaW50ZWdlcjsKLSAgICBp
bnRlZ2VyLnNldEJhc2ljVHlwZShFYnRJbnQpOwotICAgIGludGVnZXIuaW5pdGlhbGl6ZVNpemVG
b3JTY2FsYXJUeXBlcygpOwotICAgIGludGVnZXIuYXJyYXkgPSBmYWxzZTsKKyAgICBpbnRlZ2Vy
LmluaXRpYWxpemVCYXNpY1R5cGUoRWJ0SW50KTsKIAogICAgIFRQdWJsaWNUeXBlIGZsb2F0aW5n
UG9pbnQ7Ci0gICAgZmxvYXRpbmdQb2ludC5zZXRCYXNpY1R5cGUoRWJ0RmxvYXQpOwotICAgIGZs
b2F0aW5nUG9pbnQuaW5pdGlhbGl6ZVNpemVGb3JTY2FsYXJUeXBlcygpOwotICAgIGZsb2F0aW5n
UG9pbnQuYXJyYXkgPSBmYWxzZTsKKyAgICBmbG9hdGluZ1BvaW50LmluaXRpYWxpemVCYXNpY1R5
cGUoRWJ0RmxvYXQpOwogCi0gICAgc3dpdGNoKHNoYWRlclR5cGUpCisgICAgc3dpdGNoIChzaGFk
ZXJUeXBlKQogICAgIHsKLSAgICAgIGNhc2UgR0xfRlJBR01FTlRfU0hBREVSOgotICAgICAgICBz
eW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKGludGVnZXIsIEVicE1lZGl1bSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9WRVJURVhfU0hBREVSOgotICAgICAgICBzeW1ib2xU
YWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKGludGVnZXIsIEVicEhpZ2gpOwotICAgICAgICBzeW1i
b2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKGZsb2F0aW5nUG9pbnQsIEVicEhpZ2gpOwotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfQ09NUFVURV9TSEFERVI6Ci0gICAgICAgICAgc3lt
Ym9sVGFibGUuc2V0RGVmYXVsdFByZWNpc2lvbihpbnRlZ2VyLCBFYnBIaWdoKTsKLSAgICAgICAg
ICBzeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKGZsb2F0aW5nUG9pbnQsIEVicEhpZ2gp
OwotICAgICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgYXNzZXJ0KGZhbHNl
ICYmICJMYW5ndWFnZSBub3Qgc3VwcG9ydGVkIik7CisgICAgICAgIGNhc2UgR0xfRlJBR01FTlRf
U0hBREVSOgorICAgICAgICAgICAgc3ltYm9sVGFibGUuc2V0RGVmYXVsdFByZWNpc2lvbihpbnRl
Z2VyLCBFYnBNZWRpdW0pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVkVS
VEVYX1NIQURFUjoKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24o
aW50ZWdlciwgRWJwSGlnaCk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJl
Y2lzaW9uKGZsb2F0aW5nUG9pbnQsIEVicEhpZ2gpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgR0xfQ09NUFVURV9TSEFERVI6CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5zZXRE
ZWZhdWx0UHJlY2lzaW9uKGludGVnZXIsIEVicEhpZ2gpOworICAgICAgICAgICAgc3ltYm9sVGFi
bGUuc2V0RGVmYXVsdFByZWNpc2lvbihmbG9hdGluZ1BvaW50LCBFYnBIaWdoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYXNzZXJ0KGZhbHNlICYm
ICJMYW5ndWFnZSBub3Qgc3VwcG9ydGVkIik7CiAgICAgfQogICAgIC8vIFNldCBkZWZhdWx0cyBm
b3Igc2FtcGxlciB0eXBlcyB0aGF0IGhhdmUgZGVmYXVsdCBwcmVjaXNpb24sIGV2ZW4gdGhvc2Ug
dGhhdCBhcmUKICAgICAvLyBvbmx5IGF2YWlsYWJsZSBpZiBhbiBleHRlbnNpb24gZXhpc3RzLgpA
QCAtNTQ5LDYgKzU2OSw4IEBAIGJvb2wgVENvbXBpbGVyOjpJbml0QnVpbHRJblN5bWJvbFRhYmxl
KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVzb3VyY2VzKQogICAgIGluaXRTYW1wbGVyRGVm
YXVsdFByZWNpc2lvbihFYnRTYW1wbGVyQ3ViZSk7CiAgICAgLy8gU2FtcGxlckV4dGVybmFsT0VT
IGlzIHNwZWNpZmllZCBpbiB0aGUgZXh0ZW5zaW9uIHRvIGhhdmUgZGVmYXVsdCBwcmVjaXNpb24u
CiAgICAgaW5pdFNhbXBsZXJEZWZhdWx0UHJlY2lzaW9uKEVidFNhbXBsZXJFeHRlcm5hbE9FUyk7
CisgICAgLy8gU2FtcGxlckV4dGVybmFsMkRZMllFWFQgaXMgc3BlY2lmaWVkIGluIHRoZSBleHRl
bnNpb24gdG8gaGF2ZSBkZWZhdWx0IHByZWNpc2lvbi4KKyAgICBpbml0U2FtcGxlckRlZmF1bHRQ
cmVjaXNpb24oRWJ0U2FtcGxlckV4dGVybmFsMkRZMllFWFQpOwogICAgIC8vIEl0IGlzbid0IHNw
ZWNpZmllZCB3aGV0aGVyIFNhbXBsZXIyRFJlY3QgaGFzIGRlZmF1bHQgcHJlY2lzaW9uLgogICAg
IGluaXRTYW1wbGVyRGVmYXVsdFByZWNpc2lvbihFYnRTYW1wbGVyMkRSZWN0KTsKIApAQCAtNTYz
LDkgKzU4NSw3IEBAIHZvaWQgVENvbXBpbGVyOjppbml0U2FtcGxlckRlZmF1bHRQcmVjaXNpb24o
VEJhc2ljVHlwZSBzYW1wbGVyVHlwZSkKIHsKICAgICBBU1NFUlQoc2FtcGxlclR5cGUgPiBFYnRH
dWFyZFNhbXBsZXJCZWdpbiAmJiBzYW1wbGVyVHlwZSA8IEVidEd1YXJkU2FtcGxlckVuZCk7CiAg
ICAgVFB1YmxpY1R5cGUgc2FtcGxlcjsKLSAgICBzYW1wbGVyLmluaXRpYWxpemVTaXplRm9yU2Nh
bGFyVHlwZXMoKTsKLSAgICBzYW1wbGVyLnNldEJhc2ljVHlwZShzYW1wbGVyVHlwZSk7Ci0gICAg
c2FtcGxlci5hcnJheSAgICAgICAgID0gZmFsc2U7CisgICAgc2FtcGxlci5pbml0aWFsaXplQmFz
aWNUeXBlKHNhbXBsZXJUeXBlKTsKICAgICBzeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9u
KHNhbXBsZXIsIEVicExvdyk7CiB9CiAKQEAgLTU3NSw2MCArNTk1LDYxIEBAIHZvaWQgVENvbXBp
bGVyOjpzZXRSZXNvdXJjZVN0cmluZygpCiAKICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAgICAg
c3Ryc3RyZWFtIDw8ICI6TWF4VmVydGV4QXR0cmliczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4
VmVydGV4QXR0cmlicwotICAgICAgICAgICAgICA8PCAiOk1heFZlcnRleFVuaWZvcm1WZWN0b3Jz
OiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycwotICAgICAgICAg
ICAgICA8PCAiOk1heFZhcnlpbmdWZWN0b3JzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhWYXJ5
aW5nVmVjdG9ycwotICAgICAgICAgICAgICA8PCAiOk1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRz
OiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cwotICAgICAg
ICAgICAgICA8PCAiOk1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHM6IiA8PCBjb21waWxlUmVz
b3VyY2VzLk1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMKLSAgICAgICAgICAgICAgPDwgIjpN
YXhUZXh0dXJlSW1hZ2VVbml0czoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4VGV4dHVyZUltYWdl
VW5pdHMKLSAgICAgICAgICAgICAgPDwgIjpNYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzOiIgPDwg
Y29tcGlsZVJlc291cmNlcy5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzCi0gICAgICAgICAgICAg
IDw8ICI6TWF4RHJhd0J1ZmZlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heERyYXdCdWZmZXJz
Ci0gICAgICAgICAgICAgIDw8ICI6T0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzOiIgPDwgY29tcGls
ZVJlc291cmNlcy5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMKLSAgICAgICAgICAgICAgPDwgIjpP
RVNfRUdMX2ltYWdlX2V4dGVybmFsOiIgPDwgY29tcGlsZVJlc291cmNlcy5PRVNfRUdMX2ltYWdl
X2V4dGVybmFsCi0gICAgICAgICAgICAgIDw8ICI6T0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3Ns
MzoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMwotICAg
ICAgICAgICAgICA8PCAiOk5WX0VHTF9zdHJlYW1fY29uc3VtZXJfZXh0ZXJuYWw6IiA8PCBjb21w
aWxlUmVzb3VyY2VzLk5WX0VHTF9zdHJlYW1fY29uc3VtZXJfZXh0ZXJuYWwKLSAgICAgICAgICAg
ICAgPDwgIjpBUkJfdGV4dHVyZV9yZWN0YW5nbGU6IiA8PCBjb21waWxlUmVzb3VyY2VzLkFSQl90
ZXh0dXJlX3JlY3RhbmdsZQotICAgICAgICAgICAgICA8PCAiOkVYVF9kcmF3X2J1ZmZlcnM6IiA8
PCBjb21waWxlUmVzb3VyY2VzLkVYVF9kcmF3X2J1ZmZlcnMKLSAgICAgICAgICAgICAgPDwgIjpG
cmFnbWVudFByZWNpc2lvbkhpZ2g6IiA8PCBjb21waWxlUmVzb3VyY2VzLkZyYWdtZW50UHJlY2lz
aW9uSGlnaAotICAgICAgICAgICAgICA8PCAiOk1heEV4cHJlc3Npb25Db21wbGV4aXR5OiIgPDwg
Y29tcGlsZVJlc291cmNlcy5NYXhFeHByZXNzaW9uQ29tcGxleGl0eQotICAgICAgICAgICAgICA8
PCAiOk1heENhbGxTdGFja0RlcHRoOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDYWxsU3RhY2tE
ZXB0aAotICAgICAgICAgICAgICA8PCAiOk1heEZ1bmN0aW9uUGFyYW1ldGVyczoiIDw8IGNvbXBp
bGVSZXNvdXJjZXMuTWF4RnVuY3Rpb25QYXJhbWV0ZXJzCi0gICAgICAgICAgICAgIDw8ICI6RVhU
X2JsZW5kX2Z1bmNfZXh0ZW5kZWQ6IiA8PCBjb21waWxlUmVzb3VyY2VzLkVYVF9ibGVuZF9mdW5j
X2V4dGVuZGVkCi0gICAgICAgICAgICAgIDw8ICI6RVhUX2ZyYWdfZGVwdGg6IiA8PCBjb21waWxl
UmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoCi0gICAgICAgICAgICAgIDw8ICI6RVhUX3NoYWRlcl90
ZXh0dXJlX2xvZDoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuRVhUX3NoYWRlcl90ZXh0dXJlX2xvZAot
ICAgICAgICAgICAgICA8PCAiOkVYVF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2g6IiA8PCBjb21w
aWxlUmVzb3VyY2VzLkVYVF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2gKLSAgICAgICAgICAgICAg
PDwgIjpOVl9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2g6IiA8PCBjb21waWxlUmVzb3VyY2VzLk5W
X3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaAotICAgICAgICAgICAgICA8PCAiOkFSTV9zaGFkZXJf
ZnJhbWVidWZmZXJfZmV0Y2g6IiA8PCBjb21waWxlUmVzb3VyY2VzLkFSTV9zaGFkZXJfZnJhbWVi
dWZmZXJfZmV0Y2gKLSAgICAgICAgICAgICAgPDwgIjpNYXhWZXJ0ZXhPdXRwdXRWZWN0b3JzOiIg
PDwgY29tcGlsZVJlc291cmNlcy5NYXhWZXJ0ZXhPdXRwdXRWZWN0b3JzCi0gICAgICAgICAgICAg
IDw8ICI6TWF4RnJhZ21lbnRJbnB1dFZlY3RvcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heEZy
YWdtZW50SW5wdXRWZWN0b3JzCi0gICAgICAgICAgICAgIDw8ICI6TWluUHJvZ3JhbVRleGVsT2Zm
c2V0OiIgPDwgY29tcGlsZVJlc291cmNlcy5NaW5Qcm9ncmFtVGV4ZWxPZmZzZXQKLSAgICAgICAg
ICAgICAgPDwgIjpNYXhQcm9ncmFtVGV4ZWxPZmZzZXQ6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1h
eFByb2dyYW1UZXhlbE9mZnNldAotICAgICAgICAgICAgICA8PCAiOk1heER1YWxTb3VyY2VEcmF3
QnVmZmVyczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4RHVhbFNvdXJjZURyYXdCdWZmZXJzCi0g
ICAgICAgICAgICAgIDw8ICI6TlZfZHJhd19idWZmZXJzOiIgPDwgY29tcGlsZVJlc291cmNlcy5O
Vl9kcmF3X2J1ZmZlcnMKLSAgICAgICAgICAgICAgPDwgIjpXRUJHTF9kZWJ1Z19zaGFkZXJfcHJl
Y2lzaW9uOiIgPDwgY29tcGlsZVJlc291cmNlcy5XRUJHTF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9u
Ci0gICAgICAgICAgICAgIDw8ICI6TWF4SW1hZ2VVbml0czoiIDw8IGNvbXBpbGVSZXNvdXJjZXMu
TWF4SW1hZ2VVbml0cwotICAgICAgICAgICAgICA8PCAiOk1heFZlcnRleEltYWdlVW5pZm9ybXM6
IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heFZlcnRleEltYWdlVW5pZm9ybXMKLSAgICAgICAgICAg
ICAgPDwgIjpNYXhGcmFnbWVudEltYWdlVW5pZm9ybXM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1h
eEZyYWdtZW50SW1hZ2VVbmlmb3JtcwotICAgICAgICAgICAgICA8PCAiOk1heENvbXB1dGVJbWFn
ZVVuaWZvcm1zOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21wdXRlSW1hZ2VVbmlmb3Jtcwot
ICAgICAgICAgICAgICA8PCAiOk1heENvbWJpbmVkSW1hZ2VVbmlmb3JtczoiIDw8IGNvbXBpbGVS
ZXNvdXJjZXMuTWF4Q29tYmluZWRJbWFnZVVuaWZvcm1zCi0gICAgICAgICAgICAgIDw8ICI6TWF4
Q29tYmluZWRTaGFkZXJPdXRwdXRSZXNvdXJjZXM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heENv
bWJpbmVkU2hhZGVyT3V0cHV0UmVzb3VyY2VzCi0gICAgICAgICAgICAgIDw8ICI6TWF4Q29tcHV0
ZVdvcmtHcm91cENvdW50WDoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0ZVdvcmtHcm91
cENvdW50WzBdCi0gICAgICAgICAgICAgIDw8ICI6TWF4Q29tcHV0ZVdvcmtHcm91cENvdW50WToi
IDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0ZVdvcmtHcm91cENvdW50WzFdCi0gICAgICAg
ICAgICAgIDw8ICI6TWF4Q29tcHV0ZVdvcmtHcm91cENvdW50WjoiIDw8IGNvbXBpbGVSZXNvdXJj
ZXMuTWF4Q29tcHV0ZVdvcmtHcm91cENvdW50WzJdCi0gICAgICAgICAgICAgIDw8ICI6TWF4Q29t
cHV0ZVdvcmtHcm91cFNpemVYOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21wdXRlV29ya0dy
b3VwU2l6ZVswXQotICAgICAgICAgICAgICA8PCAiOk1heENvbXB1dGVXb3JrR3JvdXBTaXplWToi
IDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0ZVdvcmtHcm91cFNpemVbMV0KLSAgICAgICAg
ICAgICAgPDwgIjpNYXhDb21wdXRlV29ya0dyb3VwU2l6ZVo6IiA8PCBjb21waWxlUmVzb3VyY2Vz
Lk1heENvbXB1dGVXb3JrR3JvdXBTaXplWzJdCi0gICAgICAgICAgICAgIDw8ICI6TWF4Q29tcHV0
ZVVuaWZvcm1Db21wb25lbnRzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21wdXRlVW5pZm9y
bUNvbXBvbmVudHMKLSAgICAgICAgICAgICAgPDwgIjpNYXhDb21wdXRlVGV4dHVyZUltYWdlVW5p
dHM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heENvbXB1dGVUZXh0dXJlSW1hZ2VVbml0cwotICAg
ICAgICAgICAgICA8PCAiOk1heENvbXB1dGVBdG9taWNDb3VudGVyczoiIDw8IGNvbXBpbGVSZXNv
dXJjZXMuTWF4Q29tcHV0ZUF0b21pY0NvdW50ZXJzCi0gICAgICAgICAgICAgIDw8ICI6TWF4Q29t
cHV0ZUF0b21pY0NvdW50ZXJCdWZmZXJzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21wdXRl
QXRvbWljQ291bnRlckJ1ZmZlcnMKLSAgICAgICAgICAgICAgPDwgIjpNYXhWZXJ0ZXhBdG9taWND
b3VudGVyczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4VmVydGV4QXRvbWljQ291bnRlcnMKLSAg
ICAgICAgICAgICAgPDwgIjpNYXhGcmFnbWVudEF0b21pY0NvdW50ZXJzOiIgPDwgY29tcGlsZVJl
c291cmNlcy5NYXhGcmFnbWVudEF0b21pY0NvdW50ZXJzCi0gICAgICAgICAgICAgIDw8ICI6TWF4
Q29tYmluZWRBdG9taWNDb3VudGVyczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tYmluZWRB
dG9taWNDb3VudGVycwotICAgICAgICAgICAgICA8PCAiOk1heEF0b21pY0NvdW50ZXJCaW5kaW5n
czoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4QXRvbWljQ291bnRlckJpbmRpbmdzCi0gICAgICAg
ICAgICAgIDw8ICI6TWF4VmVydGV4QXRvbWljQ291bnRlckJ1ZmZlcnM6IiA8PCBjb21waWxlUmVz
b3VyY2VzLk1heFZlcnRleEF0b21pY0NvdW50ZXJCdWZmZXJzCi0gICAgICAgICAgICAgIDw8ICI6
TWF4RnJhZ21lbnRBdG9taWNDb3VudGVyQnVmZmVyczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4
RnJhZ21lbnRBdG9taWNDb3VudGVyQnVmZmVycwotICAgICAgICAgICAgICA8PCAiOk1heENvbWJp
bmVkQXRvbWljQ291bnRlckJ1ZmZlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heENvbWJpbmVk
QXRvbWljQ291bnRlckJ1ZmZlcnMKLSAgICAgICAgICAgICAgPDwgIjpNYXhBdG9taWNDb3VudGVy
QnVmZmVyU2l6ZToiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4QXRvbWljQ291bnRlckJ1ZmZlclNp
emU7CisgICAgICAgIDw8ICI6TWF4VmVydGV4VW5pZm9ybVZlY3RvcnM6IiA8PCBjb21waWxlUmVz
b3VyY2VzLk1heFZlcnRleFVuaWZvcm1WZWN0b3JzCisgICAgICAgIDw8ICI6TWF4VmFyeWluZ1Zl
Y3RvcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heFZhcnlpbmdWZWN0b3JzCisgICAgICAgIDw8
ICI6TWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heFZl
cnRleFRleHR1cmVJbWFnZVVuaXRzCisgICAgICAgIDw8ICI6TWF4Q29tYmluZWRUZXh0dXJlSW1h
Z2VVbml0czoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0
cworICAgICAgICA8PCAiOk1heFRleHR1cmVJbWFnZVVuaXRzOiIgPDwgY29tcGlsZVJlc291cmNl
cy5NYXhUZXh0dXJlSW1hZ2VVbml0cworICAgICAgICA8PCAiOk1heEZyYWdtZW50VW5pZm9ybVZl
Y3RvcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMKKyAg
ICAgICAgPDwgIjpNYXhEcmF3QnVmZmVyczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4RHJhd0J1
ZmZlcnMKKyAgICAgICAgPDwgIjpPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXM6IiA8PCBjb21waWxl
UmVzb3VyY2VzLk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcworICAgICAgICA8PCAiOk9FU19FR0xf
aW1hZ2VfZXh0ZXJuYWw6IiA8PCBjb21waWxlUmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJu
YWwKKyAgICAgICAgPDwgIjpPRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzOiIgPDwgY29tcGls
ZVJlc291cmNlcy5PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzCisgICAgICAgIDw8ICI6TlZf
RUdMX3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbDoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTlZfRUdM
X3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbAorICAgICAgICA8PCAiOkFSQl90ZXh0dXJlX3JlY3Rh
bmdsZToiIDw8IGNvbXBpbGVSZXNvdXJjZXMuQVJCX3RleHR1cmVfcmVjdGFuZ2xlCisgICAgICAg
IDw8ICI6RVhUX2RyYXdfYnVmZmVyczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuRVhUX2RyYXdfYnVm
ZmVycworICAgICAgICA8PCAiOkZyYWdtZW50UHJlY2lzaW9uSGlnaDoiIDw8IGNvbXBpbGVSZXNv
dXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoCisgICAgICAgIDw8ICI6TWF4RXhwcmVzc2lvbkNv
bXBsZXhpdHk6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heEV4cHJlc3Npb25Db21wbGV4aXR5Cisg
ICAgICAgIDw8ICI6TWF4Q2FsbFN0YWNrRGVwdGg6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heENh
bGxTdGFja0RlcHRoCisgICAgICAgIDw8ICI6TWF4RnVuY3Rpb25QYXJhbWV0ZXJzOiIgPDwgY29t
cGlsZVJlc291cmNlcy5NYXhGdW5jdGlvblBhcmFtZXRlcnMKKyAgICAgICAgPDwgIjpFWFRfYmxl
bmRfZnVuY19leHRlbmRlZDoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuRVhUX2JsZW5kX2Z1bmNfZXh0
ZW5kZWQKKyAgICAgICAgPDwgIjpFWFRfZnJhZ19kZXB0aDoiIDw8IGNvbXBpbGVSZXNvdXJjZXMu
RVhUX2ZyYWdfZGVwdGgKKyAgICAgICAgPDwgIjpFWFRfc2hhZGVyX3RleHR1cmVfbG9kOiIgPDwg
Y29tcGlsZVJlc291cmNlcy5FWFRfc2hhZGVyX3RleHR1cmVfbG9kCisgICAgICAgIDw8ICI6RVhU
X3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaDoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuRVhUX3NoYWRl
cl9mcmFtZWJ1ZmZlcl9mZXRjaAorICAgICAgICA8PCAiOk5WX3NoYWRlcl9mcmFtZWJ1ZmZlcl9m
ZXRjaDoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTlZfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoCisg
ICAgICAgIDw8ICI6QVJNX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaDoiIDw8IGNvbXBpbGVSZXNv
dXJjZXMuQVJNX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaAorICAgICAgICA8PCAiOkVYVF9ZVVZf
dGFyZ2V0OiIgPDwgY29tcGlsZVJlc291cmNlcy5FWFRfWVVWX3RhcmdldAorICAgICAgICA8PCAi
Ok1heFZlcnRleE91dHB1dFZlY3RvcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heFZlcnRleE91
dHB1dFZlY3RvcnMKKyAgICAgICAgPDwgIjpNYXhGcmFnbWVudElucHV0VmVjdG9yczoiIDw8IGNv
bXBpbGVSZXNvdXJjZXMuTWF4RnJhZ21lbnRJbnB1dFZlY3RvcnMKKyAgICAgICAgPDwgIjpNaW5Q
cm9ncmFtVGV4ZWxPZmZzZXQ6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1pblByb2dyYW1UZXhlbE9m
ZnNldAorICAgICAgICA8PCAiOk1heFByb2dyYW1UZXhlbE9mZnNldDoiIDw8IGNvbXBpbGVSZXNv
dXJjZXMuTWF4UHJvZ3JhbVRleGVsT2Zmc2V0CisgICAgICAgIDw8ICI6TWF4RHVhbFNvdXJjZURy
YXdCdWZmZXJzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnMK
KyAgICAgICAgPDwgIjpOVl9kcmF3X2J1ZmZlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk5WX2Ry
YXdfYnVmZmVycworICAgICAgICA8PCAiOldFQkdMX2RlYnVnX3NoYWRlcl9wcmVjaXNpb246IiA8
PCBjb21waWxlUmVzb3VyY2VzLldFQkdMX2RlYnVnX3NoYWRlcl9wcmVjaXNpb24KKyAgICAgICAg
PDwgIjpNYXhJbWFnZVVuaXRzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhJbWFnZVVuaXRzCisg
ICAgICAgIDw8ICI6TWF4VmVydGV4SW1hZ2VVbmlmb3JtczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMu
TWF4VmVydGV4SW1hZ2VVbmlmb3JtcworICAgICAgICA8PCAiOk1heEZyYWdtZW50SW1hZ2VVbmlm
b3JtczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4RnJhZ21lbnRJbWFnZVVuaWZvcm1zCisgICAg
ICAgIDw8ICI6TWF4Q29tcHV0ZUltYWdlVW5pZm9ybXM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1h
eENvbXB1dGVJbWFnZVVuaWZvcm1zCisgICAgICAgIDw8ICI6TWF4Q29tYmluZWRJbWFnZVVuaWZv
cm1zOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21iaW5lZEltYWdlVW5pZm9ybXMKKyAgICAg
ICAgPDwgIjpNYXhDb21iaW5lZFNoYWRlck91dHB1dFJlc291cmNlczoiIDw8IGNvbXBpbGVSZXNv
dXJjZXMuTWF4Q29tYmluZWRTaGFkZXJPdXRwdXRSZXNvdXJjZXMKKyAgICAgICAgPDwgIjpNYXhD
b21wdXRlV29ya0dyb3VwQ291bnRYOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21wdXRlV29y
a0dyb3VwQ291bnRbMF0KKyAgICAgICAgPDwgIjpNYXhDb21wdXRlV29ya0dyb3VwQ291bnRZOiIg
PDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21wdXRlV29ya0dyb3VwQ291bnRbMV0KKyAgICAgICAg
PDwgIjpNYXhDb21wdXRlV29ya0dyb3VwQ291bnRaOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhD
b21wdXRlV29ya0dyb3VwQ291bnRbMl0KKyAgICAgICAgPDwgIjpNYXhDb21wdXRlV29ya0dyb3Vw
U2l6ZVg6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heENvbXB1dGVXb3JrR3JvdXBTaXplWzBdCisg
ICAgICAgIDw8ICI6TWF4Q29tcHV0ZVdvcmtHcm91cFNpemVZOiIgPDwgY29tcGlsZVJlc291cmNl
cy5NYXhDb21wdXRlV29ya0dyb3VwU2l6ZVsxXQorICAgICAgICA8PCAiOk1heENvbXB1dGVXb3Jr
R3JvdXBTaXplWjoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0ZVdvcmtHcm91cFNpemVb
Ml0KKyAgICAgICAgPDwgIjpNYXhDb21wdXRlVW5pZm9ybUNvbXBvbmVudHM6IiA8PCBjb21waWxl
UmVzb3VyY2VzLk1heENvbXB1dGVVbmlmb3JtQ29tcG9uZW50cworICAgICAgICA8PCAiOk1heENv
bXB1dGVUZXh0dXJlSW1hZ2VVbml0czoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0ZVRl
eHR1cmVJbWFnZVVuaXRzCisgICAgICAgIDw8ICI6TWF4Q29tcHV0ZUF0b21pY0NvdW50ZXJzOiIg
PDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21wdXRlQXRvbWljQ291bnRlcnMKKyAgICAgICAgPDwg
IjpNYXhDb21wdXRlQXRvbWljQ291bnRlckJ1ZmZlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1h
eENvbXB1dGVBdG9taWNDb3VudGVyQnVmZmVycworICAgICAgICA8PCAiOk1heFZlcnRleEF0b21p
Y0NvdW50ZXJzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhWZXJ0ZXhBdG9taWNDb3VudGVycwor
ICAgICAgICA8PCAiOk1heEZyYWdtZW50QXRvbWljQ291bnRlcnM6IiA8PCBjb21waWxlUmVzb3Vy
Y2VzLk1heEZyYWdtZW50QXRvbWljQ291bnRlcnMKKyAgICAgICAgPDwgIjpNYXhDb21iaW5lZEF0
b21pY0NvdW50ZXJzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21iaW5lZEF0b21pY0NvdW50
ZXJzCisgICAgICAgIDw8ICI6TWF4QXRvbWljQ291bnRlckJpbmRpbmdzOiIgPDwgY29tcGlsZVJl
c291cmNlcy5NYXhBdG9taWNDb3VudGVyQmluZGluZ3MKKyAgICAgICAgPDwgIjpNYXhWZXJ0ZXhB
dG9taWNDb3VudGVyQnVmZmVyczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4VmVydGV4QXRvbWlj
Q291bnRlckJ1ZmZlcnMKKyAgICAgICAgPDwgIjpNYXhGcmFnbWVudEF0b21pY0NvdW50ZXJCdWZm
ZXJzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhGcmFnbWVudEF0b21pY0NvdW50ZXJCdWZmZXJz
CisgICAgICAgIDw8ICI6TWF4Q29tYmluZWRBdG9taWNDb3VudGVyQnVmZmVyczoiIDw8IGNvbXBp
bGVSZXNvdXJjZXMuTWF4Q29tYmluZWRBdG9taWNDb3VudGVyQnVmZmVycworICAgICAgICA8PCAi
Ok1heEF0b21pY0NvdW50ZXJCdWZmZXJTaXplOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhBdG9t
aWNDb3VudGVyQnVmZmVyU2l6ZTsKICAgICAvLyBjbGFuZy1mb3JtYXQgb24KIAogICAgIGJ1aWx0
SW5SZXNvdXJjZXNTdHJpbmcgPSBzdHJzdHJlYW0uc3RyKCk7CkBAIC02NDAsNiArNjYxLDcgQEAg
dm9pZCBUQ29tcGlsZXI6OmNsZWFyUmVzdWx0cygpCiAgICAgaW5mb1NpbmsuaW5mby5lcmFzZSgp
OwogICAgIGluZm9TaW5rLm9iai5lcmFzZSgpOwogICAgIGluZm9TaW5rLmRlYnVnLmVyYXNlKCk7
CisgICAgbURpYWdub3N0aWNzLnJlc2V0RXJyb3JDb3VudCgpOwogCiAgICAgYXR0cmlidXRlcy5j
bGVhcigpOwogICAgIG91dHB1dFZhcmlhYmxlcy5jbGVhcigpOwpAQCAtNjQ5LDExICs2NzEsMTMg
QEAgdm9pZCBUQ29tcGlsZXI6OmNsZWFyUmVzdWx0cygpCiAgICAgaW50ZXJmYWNlQmxvY2tzLmNs
ZWFyKCk7CiAgICAgdmFyaWFibGVzQ29sbGVjdGVkID0gZmFsc2U7CiAKLSAgICBidWlsdEluRnVu
Y3Rpb25FbXVsYXRvci5DbGVhbnVwKCk7CisgICAgbU51bVZpZXdzID0gLTE7CisKKyAgICBidWls
dEluRnVuY3Rpb25FbXVsYXRvci5jbGVhbnVwKCk7CiAKICAgICBuYW1lTWFwLmNsZWFyKCk7CiAK
LSAgICBtU291cmNlUGF0aCA9IE5VTEw7CisgICAgbVNvdXJjZVBhdGggICAgID0gTlVMTDsKICAg
ICBtVGVtcG9yYXJ5SW5kZXggPSAwOwogfQogCkBAIC02NjEsMTggKzY4NSwxNSBAQCBib29sIFRD
b21waWxlcjo6aW5pdENhbGxEYWcoVEludGVybU5vZGUgKnJvb3QpCiB7CiAgICAgbUNhbGxEYWcu
Y2xlYXIoKTsKIAotICAgIHN3aXRjaCAobUNhbGxEYWcuaW5pdChyb290LCAmaW5mb1NpbmsuaW5m
bykpCisgICAgc3dpdGNoIChtQ2FsbERhZy5pbml0KHJvb3QsICZtRGlhZ25vc3RpY3MpKQogICAg
IHsKLSAgICAgIGNhc2UgQ2FsbERBRzo6SU5JVERBR19TVUNDRVNTOgotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgIGNhc2UgQ2FsbERBRzo6SU5JVERBR19SRUNVUlNJT046Ci0gICAgICAgIGlu
Zm9TaW5rLmluZm8ucHJlZml4KEVQcmVmaXhFcnJvcik7Ci0gICAgICAgIGluZm9TaW5rLmluZm8g
PDwgIkZ1bmN0aW9uIHJlY3Vyc2lvbiBkZXRlY3RlZCI7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgIGNhc2UgQ2FsbERBRzo6SU5JVERBR19VTkRFRklORUQ6Ci0gICAgICAgIGluZm9TaW5r
LmluZm8ucHJlZml4KEVQcmVmaXhFcnJvcik7Ci0gICAgICAgIGluZm9TaW5rLmluZm8gPDwgIlVu
aW1wbGVtZW50ZWQgZnVuY3Rpb24gZGV0ZWN0ZWQiOwotICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGNhc2UgQ2FsbERBRzo6SU5JVERBR19TVUNDRVNTOgorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGNhc2UgQ2FsbERBRzo6SU5JVERBR19SRUNVUlNJT046CisgICAgICAg
IGNhc2UgQ2FsbERBRzo6SU5JVERBR19VTkRFRklORUQ6CisgICAgICAgICAgICAvLyBFcnJvciBt
ZXNzYWdlIGhhcyBhbHJlYWR5IGJlZW4gd3JpdHRlbiBvdXQuCisgICAgICAgICAgICBBU1NFUlQo
bURpYWdub3N0aWNzLm51bUVycm9ycygpID4gMCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCiAgICAgVU5SRUFDSEFCTEUoKTsKQEAgLTY4NSw3ICs3MDYsNyBAQCBib29sIFRD
b21waWxlcjo6Y2hlY2tDYWxsRGVwdGgoKQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
Q2FsbERhZy5zaXplKCk7IGkrKykKICAgICB7Ci0gICAgICAgIGludCBkZXB0aCA9IDA7CisgICAg
ICAgIGludCBkZXB0aCAgICA9IDA7CiAgICAgICAgIGF1dG8gJnJlY29yZCA9IG1DYWxsRGFnLmdl
dFJlY29yZEZyb21JbmRleChpKTsKIAogICAgICAgICBmb3IgKGF1dG8gJmNhbGxlZUluZGV4IDog
cmVjb3JkLmNhbGxlZXMpCkBAIC02OTgsMTkgKzcxOSwxOSBAQCBib29sIFRDb21waWxlcjo6Y2hl
Y2tDYWxsRGVwdGgoKQogICAgICAgICBpZiAoZGVwdGggPj0gbWF4Q2FsbFN0YWNrRGVwdGgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIC8vIFRyYWNlIGJhY2sgdGhlIGZ1bmN0aW9uIGNoYWluIHRv
IGhhdmUgYSBtZWFuaW5nZnVsIGluZm8gbG9nLgotICAgICAgICAgICAgaW5mb1NpbmsuaW5mby5w
cmVmaXgoRVByZWZpeEVycm9yKTsKLSAgICAgICAgICAgIGluZm9TaW5rLmluZm8gPDwgIkNhbGwg
c3RhY2sgdG9vIGRlZXAgKGxhcmdlciB0aGFuICIgPDwgbWF4Q2FsbFN0YWNrRGVwdGgKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgIikgd2l0aCB0aGUgZm9sbG93aW5nIGNhbGwgY2hhaW46
ICIgPDwgcmVjb3JkLm5hbWU7CisgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBlcnJvclN0
cmVhbTsKKyAgICAgICAgICAgIGVycm9yU3RyZWFtIDw8ICJDYWxsIHN0YWNrIHRvbyBkZWVwIChs
YXJnZXIgdGhhbiAiIDw8IG1heENhbGxTdGFja0RlcHRoCisgICAgICAgICAgICAgICAgICAgICAg
ICA8PCAiKSB3aXRoIHRoZSBmb2xsb3dpbmcgY2FsbCBjaGFpbjogIiA8PCByZWNvcmQubmFtZTsK
IAogICAgICAgICAgICAgaW50IGN1cnJlbnRGdW5jdGlvbiA9IHN0YXRpY19jYXN0PGludD4oaSk7
Ci0gICAgICAgICAgICBpbnQgY3VycmVudERlcHRoID0gZGVwdGg7CisgICAgICAgICAgICBpbnQg
Y3VycmVudERlcHRoICAgID0gZGVwdGg7CiAKICAgICAgICAgICAgIHdoaWxlIChjdXJyZW50RnVu
Y3Rpb24gIT0gLTEpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5m
byA8PCAiIC0+ICIgPDwgbUNhbGxEYWcuZ2V0UmVjb3JkRnJvbUluZGV4KGN1cnJlbnRGdW5jdGlv
bikubmFtZTsKKyAgICAgICAgICAgICAgICBlcnJvclN0cmVhbSA8PCAiIC0+ICIgPDwgbUNhbGxE
YWcuZ2V0UmVjb3JkRnJvbUluZGV4KGN1cnJlbnRGdW5jdGlvbikubmFtZTsKIAogICAgICAgICAg
ICAgICAgIGludCBuZXh0RnVuY3Rpb24gPSAtMTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8m
IGNhbGxlZUluZGV4IDogbUNhbGxEYWcuZ2V0UmVjb3JkRnJvbUluZGV4KGN1cnJlbnRGdW5jdGlv
bikuY2FsbGVlcykKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8gJmNhbGxlZUluZGV4IDogbUNh
bGxEYWcuZ2V0UmVjb3JkRnJvbUluZGV4KGN1cnJlbnRGdW5jdGlvbikuY2FsbGVlcykKICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChkZXB0aHNbY2FsbGVlSW5kZXhd
ID09IGN1cnJlbnREZXB0aCAtIDEpCiAgICAgICAgICAgICAgICAgICAgIHsKQEAgLTcyMiw2ICs3
NDMsOSBAQCBib29sIFRDb21waWxlcjo6Y2hlY2tDYWxsRGVwdGgoKQogICAgICAgICAgICAgICAg
IGN1cnJlbnRGdW5jdGlvbiA9IG5leHRGdW5jdGlvbjsKICAgICAgICAgICAgIH0KIAorICAgICAg
ICAgICAgc3RkOjpzdHJpbmcgZXJyb3JTdHIgPSBlcnJvclN0cmVhbS5zdHIoKTsKKyAgICAgICAg
ICAgIG1EaWFnbm9zdGljcy5nbG9iYWxFcnJvcihlcnJvclN0ci5jX3N0cigpKTsKKwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtNzM0LDE1ICs3NTgsMTQg
QEAgYm9vbCBUQ29tcGlsZXI6OnRhZ1VzZWRGdW5jdGlvbnMoKQogICAgIC8vIFNlYXJjaCBmcm9t
IG1haW4sIHN0YXJ0aW5nIGZyb20gdGhlIGVuZCBvZiB0aGUgREFHIGFzIGl0IHVzdWFsbHkgaXMg
dGhlIHJvb3QuCiAgICAgZm9yIChzaXplX3QgaSA9IG1DYWxsRGFnLnNpemUoKTsgaS0tID4gMDsp
CiAgICAgewotICAgICAgICBpZiAobUNhbGxEYWcuZ2V0UmVjb3JkRnJvbUluZGV4KGkpLm5hbWUg
PT0gIm1haW4oIikKKyAgICAgICAgaWYgKG1DYWxsRGFnLmdldFJlY29yZEZyb21JbmRleChpKS5u
YW1lID09ICJtYWluIikKICAgICAgICAgewogICAgICAgICAgICAgaW50ZXJuYWxUYWdVc2VkRnVu
Y3Rpb24oaSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGluZm9TaW5rLmluZm8ucHJlZml4KEVQcmVmaXhFcnJvcik7Ci0gICAgaW5mb1NpbmsuaW5m
byA8PCAiTWlzc2luZyBtYWluKClcbiI7CisgICAgbURpYWdub3N0aWNzLmdsb2JhbEVycm9yKCJN
aXNzaW5nIG1haW4oKSIpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtNzY2LDI4ICs3ODks
MjQgQEAgY2xhc3MgVENvbXBpbGVyOjpVbnVzZWRQcmVkaWNhdGUKIHsKICAgcHVibGljOgogICAg
IFVudXNlZFByZWRpY2F0ZShjb25zdCBDYWxsREFHICpjYWxsRGFnLCBjb25zdCBzdGQ6OnZlY3Rv
cjxGdW5jdGlvbk1ldGFkYXRhPiAqbWV0YWRhdGFzKQotICAgICAgICA6IG1DYWxsRGFnKGNhbGxE
YWcpLAotICAgICAgICAgIG1NZXRhZGF0YXMobWV0YWRhdGFzKQorICAgICAgICA6IG1DYWxsRGFn
KGNhbGxEYWcpLCBtTWV0YWRhdGFzKG1ldGFkYXRhcykKICAgICB7CiAgICAgfQogCi0gICAgYm9v
bCBvcGVyYXRvciAoKShUSW50ZXJtTm9kZSAqbm9kZSkKKyAgICBib29sIG9wZXJhdG9yKCkoVElu
dGVybU5vZGUgKm5vZGUpCiAgICAgewotICAgICAgICBjb25zdCBUSW50ZXJtQWdncmVnYXRlICph
c0FnZ3JlZ2F0ZSA9IG5vZGUtPmdldEFzQWdncmVnYXRlKCk7Ci0gICAgICAgIGNvbnN0IFRJbnRl
cm1GdW5jdGlvbkRlZmluaXRpb24gKmFzRnVuY3Rpb24gPSBub2RlLT5nZXRBc0Z1bmN0aW9uRGVm
aW5pdGlvbigpOworICAgICAgICBjb25zdCBUSW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKmFzRnVu
Y3Rpb25Qcm90b3R5cGUgICA9IG5vZGUtPmdldEFzRnVuY3Rpb25Qcm90b3R5cGVOb2RlKCk7Cisg
ICAgICAgIGNvbnN0IFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKmFzRnVuY3Rpb25EZWZpbml0
aW9uID0gbm9kZS0+Z2V0QXNGdW5jdGlvbkRlZmluaXRpb24oKTsKIAogICAgICAgICBjb25zdCBU
RnVuY3Rpb25TeW1ib2xJbmZvICpmdW5jdGlvbkluZm8gPSBudWxscHRyOwogCi0gICAgICAgIGlm
IChhc0Z1bmN0aW9uKQorICAgICAgICBpZiAoYXNGdW5jdGlvbkRlZmluaXRpb24pCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGZ1bmN0aW9uSW5mbyA9IGFzRnVuY3Rpb24tPmdldEZ1bmN0aW9uU3lt
Ym9sSW5mbygpOworICAgICAgICAgICAgZnVuY3Rpb25JbmZvID0gYXNGdW5jdGlvbkRlZmluaXRp
b24tPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYg
KGFzQWdncmVnYXRlKQorICAgICAgICBlbHNlIGlmIChhc0Z1bmN0aW9uUHJvdG90eXBlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoYXNBZ2dyZWdhdGUtPmdldE9wKCkgPT0gRU9wUHJvdG90
eXBlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZ1bmN0aW9uSW5mbyA9IGFzQWdn
cmVnYXRlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGZ1bmN0aW9uSW5mbyA9IGFzRnVuY3Rpb25Qcm90b3R5cGUtPmdldEZ1bmN0aW9uU3ltYm9s
SW5mbygpOwogICAgICAgICB9CiAgICAgICAgIGlmIChmdW5jdGlvbkluZm8gPT0gbnVsbHB0cikK
ICAgICAgICAgewpAQCAtNzk4LDcgKzgxNyw3IEBAIGNsYXNzIFRDb21waWxlcjo6VW51c2VkUHJl
ZGljYXRlCiAgICAgICAgIGlmIChjYWxsRGFnSW5kZXggPT0gQ2FsbERBRzo6SW52YWxpZEluZGV4
KQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBUaGlzIGhhcHBlbnMgb25seSBmb3IgdW5pbXBs
ZW1lbnRlZCBwcm90b3R5cGVzIHdoaWNoIGFyZSB0aHVzIHVudXNlZAotICAgICAgICAgICAgQVNT
RVJUKGFzQWdncmVnYXRlICYmIGFzQWdncmVnYXRlLT5nZXRPcCgpID09IEVPcFByb3RvdHlwZSk7
CisgICAgICAgICAgICBBU1NFUlQoYXNGdW5jdGlvblByb3RvdHlwZSk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC04MTgsNTIgKzgzNyw0OCBAQCBib29sIFRDb21w
aWxlcjo6cHJ1bmVVbnVzZWRGdW5jdGlvbnMoVEludGVybUJsb2NrICpyb290KQogCiAgICAgaWYg
KCFzZXF1ZW5jZS0+ZW1wdHkoKSkKICAgICB7Ci0gICAgICAgIHNlcXVlbmNlLT5lcmFzZShzdGQ6
OnJlbW92ZV9pZihzZXF1ZW5jZS0+YmVnaW4oKSwgc2VxdWVuY2UtPmVuZCgpLCBpc1VudXNlZCks
IHNlcXVlbmNlLT5lbmQoKSk7CisgICAgICAgIHNlcXVlbmNlLT5lcmFzZShzdGQ6OnJlbW92ZV9p
ZihzZXF1ZW5jZS0+YmVnaW4oKSwgc2VxdWVuY2UtPmVuZCgpLCBpc1VudXNlZCksCisgICAgICAg
ICAgICAgICAgICAgICAgICBzZXF1ZW5jZS0+ZW5kKCkpOwogICAgIH0KIAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIFRDb21waWxlcjo6dmFsaWRhdGVPdXRwdXRzKFRJbnRlcm1Ob2RlKiBy
b290KQorYm9vbCBUQ29tcGlsZXI6OnZhbGlkYXRlT3V0cHV0cyhUSW50ZXJtTm9kZSAqcm9vdCkK
IHsKICAgICBWYWxpZGF0ZU91dHB1dHMgdmFsaWRhdGVPdXRwdXRzKGdldEV4dGVuc2lvbkJlaGF2
aW9yKCksIGNvbXBpbGVSZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMpOwogICAgIHJvb3QtPnRyYXZl
cnNlKCZ2YWxpZGF0ZU91dHB1dHMpOwotICAgIHJldHVybiAodmFsaWRhdGVPdXRwdXRzLnZhbGlk
YXRlQW5kQ291bnRFcnJvcnMoaW5mb1NpbmsuaW5mbykgPT0gMCk7Ci19Ci0KLWJvb2wgVENvbXBp
bGVyOjp2YWxpZGF0ZUxpbWl0YXRpb25zKFRJbnRlcm1Ob2RlKiByb290KQotewotICAgIFZhbGlk
YXRlTGltaXRhdGlvbnMgdmFsaWRhdGUoc2hhZGVyVHlwZSwgJmluZm9TaW5rLmluZm8pOwotICAg
IHJvb3QtPnRyYXZlcnNlKCZ2YWxpZGF0ZSk7Ci0gICAgcmV0dXJuIHZhbGlkYXRlLm51bUVycm9y
cygpID09IDA7CisgICAgdmFsaWRhdGVPdXRwdXRzLnZhbGlkYXRlKCZtRGlhZ25vc3RpY3MpOwor
ICAgIHJldHVybiAobURpYWdub3N0aWNzLm51bUVycm9ycygpID09IDApOwogfQogCi1ib29sIFRD
b21waWxlcjo6bGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSogcm9vdCkKK2Jv
b2wgVENvbXBpbGVyOjpsaW1pdEV4cHJlc3Npb25Db21wbGV4aXR5KFRJbnRlcm1Ob2RlICpyb290
KQogewotICAgIFRNYXhEZXB0aFRyYXZlcnNlciB0cmF2ZXJzZXIobWF4RXhwcmVzc2lvbkNvbXBs
ZXhpdHkrMSk7CisgICAgVE1heERlcHRoVHJhdmVyc2VyIHRyYXZlcnNlcihtYXhFeHByZXNzaW9u
Q29tcGxleGl0eSArIDEpOwogICAgIHJvb3QtPnRyYXZlcnNlKCZ0cmF2ZXJzZXIpOwogCiAgICAg
aWYgKHRyYXZlcnNlci5nZXRNYXhEZXB0aCgpID4gbWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkpCiAg
ICAgewotICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJFeHByZXNzaW9uIHRvbyBjb21wbGV4LiI7
CisgICAgICAgIG1EaWFnbm9zdGljcy5nbG9iYWxFcnJvcigiRXhwcmVzc2lvbiB0b28gY29tcGxl
eC4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmICghVmFsaWRhdGVN
YXhQYXJhbWV0ZXJzOjp2YWxpZGF0ZShyb290LCBtYXhGdW5jdGlvblBhcmFtZXRlcnMpKQogICAg
IHsKLSAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiRnVuY3Rpb24gaGFzIHRvbyBtYW55IHBhcmFt
ZXRlcnMuIjsKKyAgICAgICAgbURpYWdub3N0aWNzLmdsb2JhbEVycm9yKCJGdW5jdGlvbiBoYXMg
dG9vIG1hbnkgcGFyYW1ldGVycy4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFRDb21waWxlcjo6Y29sbGVjdFZhcmlhYmxlcyhU
SW50ZXJtTm9kZSogcm9vdCkKK3ZvaWQgVENvbXBpbGVyOjpjb2xsZWN0VmFyaWFibGVzKFRJbnRl
cm1Ob2RlICpyb290KQogewogICAgIGlmICghdmFyaWFibGVzQ29sbGVjdGVkKQogICAgIHsKICAg
ICAgICAgc2g6OkNvbGxlY3RWYXJpYWJsZXMgY29sbGVjdCgmYXR0cmlidXRlcywgJm91dHB1dFZh
cmlhYmxlcywgJnVuaWZvcm1zLCAmdmFyeWluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJmludGVyZmFjZUJsb2NrcywgaGFzaEZ1bmN0aW9uLCBzeW1ib2xUYWJsZSwg
ZXh0ZW5zaW9uQmVoYXZpb3IpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZpbnRlcmZhY2VCbG9ja3MsIGhhc2hGdW5jdGlvbiwgc3ltYm9sVGFibGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uQmVoYXZpb3IpOwogICAgICAgICBy
b290LT50cmF2ZXJzZSgmY29sbGVjdCk7CiAKICAgICAgICAgLy8gVGhpcyBpcyBmb3IgZW5mb3Jj
ZVBhY2tpbmdSZXN0cmljdGlvbigpLgpAQCAtODcyLDE5ICs4ODcsMjkgQEAgdm9pZCBUQ29tcGls
ZXI6OmNvbGxlY3RWYXJpYWJsZXMoVEludGVybU5vZGUqIHJvb3QpCiAgICAgfQogfQogCitib29s
IFRDb21waWxlcjo6c2hvdWxkQ29sbGVjdFZhcmlhYmxlcyhTaENvbXBpbGVPcHRpb25zIGNvbXBp
bGVPcHRpb25zKQoreworICAgIHJldHVybiAoY29tcGlsZU9wdGlvbnMgJiBTSF9WQVJJQUJMRVMp
ICE9IDA7Cit9CisKK2Jvb2wgVENvbXBpbGVyOjp3ZXJlVmFyaWFibGVzQ29sbGVjdGVkKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gdmFyaWFibGVzQ29sbGVjdGVkOworfQorCiBib29sIFRDb21waWxl
cjo6ZW5mb3JjZVBhY2tpbmdSZXN0cmljdGlvbnMoKQogewogICAgIFZhcmlhYmxlUGFja2VyIHBh
Y2tlcjsKICAgICByZXR1cm4gcGFja2VyLkNoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0
cyhtYXhVbmlmb3JtVmVjdG9ycywgZXhwYW5kZWRVbmlmb3Jtcyk7CiB9CiAKLXZvaWQgVENvbXBp
bGVyOjppbml0aWFsaXplR0xQb3NpdGlvbihUSW50ZXJtTm9kZSogcm9vdCkKK3ZvaWQgVENvbXBp
bGVyOjppbml0aWFsaXplR0xQb3NpdGlvbihUSW50ZXJtTm9kZSAqcm9vdCkKIHsKICAgICBJbml0
VmFyaWFibGVMaXN0IGxpc3Q7CiAgICAgc2g6OlNoYWRlclZhcmlhYmxlIHZhcihHTF9GTE9BVF9W
RUM0LCAwKTsKICAgICB2YXIubmFtZSA9ICJnbF9Qb3NpdGlvbiI7CiAgICAgbGlzdC5wdXNoX2Jh
Y2sodmFyKTsKLSAgICBJbml0aWFsaXplVmFyaWFibGVzKHJvb3QsIGxpc3QpOworICAgIEluaXRp
YWxpemVWYXJpYWJsZXMocm9vdCwgbGlzdCwgc3ltYm9sVGFibGUpOwogfQogCiB2b2lkIFRDb21w
aWxlcjo6dXNlQWxsTWVtYmVyc0luVW51c2VkU3RhbmRhcmRBbmRTaGFyZWRCbG9ja3MoVEludGVy
bU5vZGUgKnJvb3QpCkBAIC05MDAsNyArOTI1LDcgQEAgdm9pZCBUQ29tcGlsZXI6OnVzZUFsbE1l
bWJlcnNJblVudXNlZFN0YW5kYXJkQW5kU2hhcmVkQmxvY2tzKFRJbnRlcm1Ob2RlICpyb290KQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgc2g6OlVzZUludGVyZmFjZUJsb2NrRmllbGRzKHJvb3Qs
IGxpc3QpOworICAgIHNoOjpVc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcyhyb290LCBsaXN0LCBzeW1i
b2xUYWJsZSk7CiB9CiAKIHZvaWQgVENvbXBpbGVyOjppbml0aWFsaXplT3V0cHV0VmFyaWFibGVz
KFRJbnRlcm1Ob2RlICpyb290KQpAQCAtOTIxLDEwICs5NDYsMTAgQEAgdm9pZCBUQ29tcGlsZXI6
OmluaXRpYWxpemVPdXRwdXRWYXJpYWJsZXMoVEludGVybU5vZGUgKnJvb3QpCiAgICAgICAgICAg
ICBsaXN0LnB1c2hfYmFjayh2YXIpOwogICAgICAgICB9CiAgICAgfQotICAgIEluaXRpYWxpemVW
YXJpYWJsZXMocm9vdCwgbGlzdCk7CisgICAgSW5pdGlhbGl6ZVZhcmlhYmxlcyhyb290LCBsaXN0
LCBzeW1ib2xUYWJsZSk7CiB9CiAKLWNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciYgVENvbXBpbGVy
OjpnZXRFeHRlbnNpb25CZWhhdmlvcigpIGNvbnN0Citjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3Ig
JlRDb21waWxlcjo6Z2V0RXh0ZW5zaW9uQmVoYXZpb3IoKSBjb25zdAogewogICAgIHJldHVybiBl
eHRlbnNpb25CZWhhdmlvcjsKIH0KQEAgLTkzNCwxMiArOTU5LDEyIEBAIGNvbnN0IGNoYXIgKlRD
b21waWxlcjo6Z2V0U291cmNlUGF0aCgpIGNvbnN0CiAgICAgcmV0dXJuIG1Tb3VyY2VQYXRoOwog
fQogCi1jb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIFRDb21waWxlcjo6Z2V0UmVzb3VyY2VzKCkg
Y29uc3QKK2NvbnN0IFNoQnVpbHRJblJlc291cmNlcyAmVENvbXBpbGVyOjpnZXRSZXNvdXJjZXMo
KSBjb25zdAogewogICAgIHJldHVybiBjb21waWxlUmVzb3VyY2VzOwogfQogCi1jb25zdCBBcnJh
eUJvdW5kc0NsYW1wZXImIFRDb21waWxlcjo6Z2V0QXJyYXlCb3VuZHNDbGFtcGVyKCkgY29uc3QK
K2NvbnN0IEFycmF5Qm91bmRzQ2xhbXBlciAmVENvbXBpbGVyOjpnZXRBcnJheUJvdW5kc0NsYW1w
ZXIoKSBjb25zdAogewogICAgIHJldHVybiBhcnJheUJvdW5kc0NsYW1wZXI7CiB9CkBAIC05NDks
NyArOTc0LDcgQEAgU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBUQ29tcGlsZXI6OmdldEFy
cmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5KCkgY29uc3QKICAgICByZXR1cm4gY2xhbXBpbmdTdHJh
dGVneTsKIH0KIAotY29uc3QgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3ImIFRDb21waWxlcjo6Z2V0
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IoKSBjb25zdAorY29uc3QgQnVpbHRJbkZ1bmN0aW9uRW11
bGF0b3IgJlRDb21waWxlcjo6Z2V0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IoKSBjb25zdAogewog
ICAgIHJldHVybiBidWlsdEluRnVuY3Rpb25FbXVsYXRvcjsKIH0KQEAgLTk3NywzICsxMDAyLDUg
QEAgYm9vbCBUQ29tcGlsZXI6OmlzVmFyeWluZ0RlZmluZWQoY29uc3QgY2hhciAqdmFyeWluZ05h
bWUpCiAKICAgICByZXR1cm4gZmFsc2U7CiB9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29t
cGlsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L0NvbXBpbGVyLmgKaW5kZXggODIzODMyYmNiM2U1MmQ1ZDJkNmZlY2E3OGFjNjI4YjRlY2Q2YjNh
NS4uZmZjMDYzZjdhYWEyZmRjMTNkYjM2YTg1OGZjZGZkN2Q2ZGQxZWUzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9D
b21waWxlci5oCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci9DYWxsREFHLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9EaWFnbm9zdGlj
cy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvRXh0ZW5zaW9uQmVoYXZpb3IuaCIK
ICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0hhc2hOYW1lcy5oIgogI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvSW5mb1NpbmsuaCIKQEAgLTI0LDEwICsyNSwxMyBAQAogI2luY2x1
ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVJbmZvLmgiCiAjaW5jbHVkZSAidGhpcmRf
cGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmgiCiAKK25hbWVzcGFjZSBzaAorewor
CiBjbGFzcyBUQ29tcGlsZXI7CiAjaWZkZWYgQU5HTEVfRU5BQkxFX0hMU0wKIGNsYXNzIFRyYW5z
bGF0b3JITFNMOwotI2VuZGlmIC8vIEFOR0xFX0VOQUJMRV9ITFNMCisjZW5kaWYgIC8vIEFOR0xF
X0VOQUJMRV9ITFNMCiAKIC8vCiAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gaWRlbnRpZnkgc3BlY3Mg
dGhhdCBhcmUgYmFzZWQgb24gdGhlIFdlYkdMIHNwZWMuCkBAIC0zOCwyMCArNDIsMzEgQEAgYm9v
bCBJc1dlYkdMQmFzZWRTcGVjKFNoU2hhZGVyU3BlYyBzcGVjKTsKIC8vIEhlbHBlciBmdW5jdGlv
biB0byBjaGVjayBpZiB0aGUgc2hhZGVyIHR5cGUgaXMgR0xTTC4KIC8vCiBib29sIElzR0xTTDEz
ME9yTmV3ZXIoU2hTaGFkZXJPdXRwdXQgb3V0cHV0KTsKK2Jvb2wgSXNHTFNMNDIwT3JOZXdlcihT
aFNoYWRlck91dHB1dCBvdXRwdXQpOworYm9vbCBJc0dMU0w0MTBPck9sZGVyKFNoU2hhZGVyT3V0
cHV0IG91dHB1dCk7CisKKy8vCisvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgaWYgdGhlIGlu
dmFyaWFudCBxdWFsaWZpZXIgY2FuIGJlIHJlbW92ZWQuCisvLworYm9vbCBSZW1vdmVJbnZhcmlh
bnQoc2g6OkdMZW51bSBzaGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRl
clZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICBTaFNoYWRlck91dHB1dCBvdXRwdXRUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucyk7
CiAKIC8vCiAvLyBUaGUgYmFzZSBjbGFzcyB1c2VkIHRvIGJhY2sgaGFuZGxlcyByZXR1cm5lZCB0
byB0aGUgZHJpdmVyLgogLy8KLWNsYXNzIFRTaEhhbmRsZUJhc2UgewotcHVibGljOgorY2xhc3Mg
VFNoSGFuZGxlQmFzZQoreworICBwdWJsaWM6CiAgICAgVFNoSGFuZGxlQmFzZSgpOwogICAgIHZp
cnR1YWwgflRTaEhhbmRsZUJhc2UoKTsKLSAgICB2aXJ0dWFsIFRDb21waWxlciogZ2V0QXNDb21w
aWxlcigpIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFRDb21waWxlciAqZ2V0QXNDb21waWxl
cigpIHsgcmV0dXJuIDA7IH0KICNpZmRlZiBBTkdMRV9FTkFCTEVfSExTTAotICAgIHZpcnR1YWwg
VHJhbnNsYXRvckhMU0wqIGdldEFzVHJhbnNsYXRvckhMU0woKSB7IHJldHVybiAwOyB9Ci0jZW5k
aWYgLy8gQU5HTEVfRU5BQkxFX0hMU0wKKyAgICB2aXJ0dWFsIFRyYW5zbGF0b3JITFNMICpnZXRB
c1RyYW5zbGF0b3JITFNMKCkgeyByZXR1cm4gMDsgfQorI2VuZGlmICAvLyBBTkdMRV9FTkFCTEVf
SExTTAogCi1wcm90ZWN0ZWQ6CisgIHByb3RlY3RlZDoKICAgICAvLyBNZW1vcnkgYWxsb2NhdG9y
LiBBbGxvY2F0ZXMgYW5kIHRyYWNrcyBtZW1vcnkgcmVxdWlyZWQgYnkgdGhlIGNvbXBpbGVyLgog
ICAgIC8vIERlYWxsb2NhdGVzIGFsbCBtZW1vcnkgd2hlbiBjb21waWxlciBpcyBkZXN0cnVjdGVk
LgogICAgIFRQb29sQWxsb2NhdG9yIGFsbG9jYXRvcjsKQEAgLTY4LDcgKzgzLDcgQEAgY2xhc3Mg
VENvbXBpbGVyIDogcHVibGljIFRTaEhhbmRsZUJhc2UKICAgICB+VENvbXBpbGVyKCkgb3ZlcnJp
ZGU7CiAgICAgVENvbXBpbGVyICpnZXRBc0NvbXBpbGVyKCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhp
czsgfQogCi0gICAgYm9vbCBJbml0KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2Vz
KTsKKyAgICBib29sIEluaXQoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzICZyZXNvdXJjZXMpOwog
CiAgICAgLy8gY29tcGlsZVRyZWVGb3JUZXN0aW5nIHNob3VsZCBiZSB1c2VkIG9ubHkgd2hlbiB0
ZXN0cyByZXF1aXJlIGFjY2VzcyB0bwogICAgIC8vIHRoZSBBU1QuIFVzZXJzIG9mIHRoaXMgZnVu
Y3Rpb24gbmVlZCB0byBtYW51YWxseSBtYW5hZ2UgdGhlIGdsb2JhbCBwb29sCkBAIC04MywxMCAr
OTgsMTEgQEAgY2xhc3MgVENvbXBpbGVyIDogcHVibGljIFRTaEhhbmRsZUJhc2UKIAogICAgIC8v
IEdldCByZXN1bHRzIG9mIHRoZSBsYXN0IGNvbXBpbGF0aW9uLgogICAgIGludCBnZXRTaGFkZXJW
ZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gc2hhZGVyVmVyc2lvbjsgfQotICAgIFRJbmZvU2luayYg
Z2V0SW5mb1NpbmsoKSB7IHJldHVybiBpbmZvU2luazsgfQorICAgIFRJbmZvU2luayAmZ2V0SW5m
b1NpbmsoKSB7IHJldHVybiBpbmZvU2luazsgfQogCiAgICAgYm9vbCBpc0NvbXB1dGVTaGFkZXJM
b2NhbFNpemVEZWNsYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1Db21wdXRlU2hhZGVyTG9jYWxTaXpl
RGVjbGFyZWQ7IH0KLSAgICBjb25zdCBzaDo6V29ya0dyb3VwU2l6ZSAmZ2V0Q29tcHV0ZVNoYWRl
ckxvY2FsU2l6ZSgpIHsgcmV0dXJuIG1Db21wdXRlU2hhZGVyTG9jYWxTaXplOyB9CisgICAgY29u
c3Qgc2g6OldvcmtHcm91cFNpemUgJmdldENvbXB1dGVTaGFkZXJMb2NhbFNpemUoKSBjb25zdCB7
IHJldHVybiBtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZTsgfQorICAgIGludCBnZXROdW1WaWV3cygp
IGNvbnN0IHsgcmV0dXJuIG1OdW1WaWV3czsgfQogCiAgICAgLy8gQ2xlYXJzIHRoZSByZXN1bHRz
IGZyb20gdGhlIHByZXZpb3VzIGNvbXBpbGF0aW9uLgogICAgIHZvaWQgY2xlYXJSZXN1bHRzKCk7
CkBAIC05OCw4ICsxMTQsOCBAQCBjbGFzcyBUQ29tcGlsZXIgOiBwdWJsaWMgVFNoSGFuZGxlQmFz
ZQogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4gJmdldEludGVyZmFj
ZUJsb2NrcygpIGNvbnN0IHsgcmV0dXJuIGludGVyZmFjZUJsb2NrczsgfQogCiAgICAgU2hIYXNo
RnVuY3Rpb242NCBnZXRIYXNoRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBoYXNoRnVuY3Rpb247
IH0KLSAgICBOYW1lTWFwJiBnZXROYW1lTWFwKCkgeyByZXR1cm4gbmFtZU1hcDsgfQotICAgIFRT
eW1ib2xUYWJsZSYgZ2V0U3ltYm9sVGFibGUoKSB7IHJldHVybiBzeW1ib2xUYWJsZTsgfQorICAg
IE5hbWVNYXAgJmdldE5hbWVNYXAoKSB7IHJldHVybiBuYW1lTWFwOyB9CisgICAgVFN5bWJvbFRh
YmxlICZnZXRTeW1ib2xUYWJsZSgpIHsgcmV0dXJuIHN5bWJvbFRhYmxlOyB9CiAgICAgU2hTaGFk
ZXJTcGVjIGdldFNoYWRlclNwZWMoKSBjb25zdCB7IHJldHVybiBzaGFkZXJTcGVjOyB9CiAgICAg
U2hTaGFkZXJPdXRwdXQgZ2V0T3V0cHV0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG91dHB1dFR5cGU7
IH0KICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZ2V0QnVpbHRJblJlc291cmNlc1N0cmluZygpIGNv
bnN0IHsgcmV0dXJuIGJ1aWx0SW5SZXNvdXJjZXNTdHJpbmc7IH0KQEAgLTEwNywyMyArMTIzLDE4
IEBAIGNsYXNzIFRDb21waWxlciA6IHB1YmxpYyBUU2hIYW5kbGVCYXNlCiAgICAgYm9vbCBzaG91
bGRSdW5Mb29wQW5kSW5kZXhpbmdWYWxpZGF0aW9uKFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9w
dGlvbnMpIGNvbnN0OwogCiAgICAgLy8gR2V0IHRoZSByZXNvdXJjZXMgc2V0IGJ5IEluaXRCdWls
dEluU3ltYm9sVGFibGUKLSAgICBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIGdldFJlc291cmNl
cygpIGNvbnN0OworICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAmZ2V0UmVzb3VyY2VzKCkg
Y29uc3Q7CiAKICAgcHJvdGVjdGVkOgogICAgIHNoOjpHTGVudW0gZ2V0U2hhZGVyVHlwZSgpIGNv
bnN0IHsgcmV0dXJuIHNoYWRlclR5cGU7IH0KICAgICAvLyBJbml0aWFsaXplIHN5bWJvbC10YWJs
ZSB3aXRoIGJ1aWx0LWluIHN5bWJvbHMuCi0gICAgYm9vbCBJbml0QnVpbHRJblN5bWJvbFRhYmxl
KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKTsKKyAgICBib29sIEluaXRCdWls
dEluU3ltYm9sVGFibGUoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzICZyZXNvdXJjZXMpOwogICAg
IC8vIENvbXB1dGUgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4gcmVz
b3VyY2VzCiAgICAgdm9pZCBzZXRSZXNvdXJjZVN0cmluZygpOwogICAgIC8vIFJldHVybiBmYWxz
ZSBpZiB0aGUgY2FsbCBkZXB0aCBpcyBleGNlZWRlZC4KICAgICBib29sIGNoZWNrQ2FsbERlcHRo
KCk7CiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGEgcHJvZ3JhbSBoYXMgbm8gY29uZmxpY3Rpbmcg
b3IgbWlzc2luZyBmcmFnbWVudCBvdXRwdXRzCi0gICAgYm9vbCB2YWxpZGF0ZU91dHB1dHMoVElu
dGVybU5vZGUqIHJvb3QpOwotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gc2hhZGVy
IGRvZXMgbm90IGV4Y2VlZCB0aGUgbWluaW11bQotICAgIC8vIGZ1bmN0aW9uYWxpdHkgbWFuZGF0
ZWQgaW4gR0xTTCAxLjAgc3BlYyBBcHBlbmRpeCBBLgotICAgIGJvb2wgdmFsaWRhdGVMaW1pdGF0
aW9ucyhUSW50ZXJtTm9kZSogcm9vdCk7Ci0gICAgLy8gQ29sbGVjdCBpbmZvIGZvciBhbGwgYXR0
cmlicywgdW5pZm9ybXMsIHZhcnlpbmdzLgotICAgIHZvaWQgY29sbGVjdFZhcmlhYmxlcyhUSW50
ZXJtTm9kZSogcm9vdCk7CisgICAgYm9vbCB2YWxpZGF0ZU91dHB1dHMoVEludGVybU5vZGUgKnJv
b3QpOwogICAgIC8vIEFkZCBlbXVsYXRlZCBmdW5jdGlvbnMgdG8gdGhlIGJ1aWx0LWluIGZ1bmN0
aW9uIGVtdWxhdG9yLgogICAgIHZpcnR1YWwgdm9pZCBpbml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3IoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpe307
CkBAIC0xNDMsMzYgKzE1NCwzMiBAQCBjbGFzcyBUQ29tcGlsZXIgOiBwdWJsaWMgVFNoSGFuZGxl
QmFzZQogICAgIC8vIEl0IGlzIHRvIHdvcmsgYXJvdW5kIGEgTGludXggZHJpdmVyIGJ1ZyB3aGVy
ZSBtaXNzaW5nIHRoaXMgY2F1c2VzIGNvbXBpbGUgZmFpbHVyZQogICAgIC8vIHdoaWxlIHNwZWMg
c2F5cyBpdCBpcyBhbGxvd2VkLgogICAgIC8vIFRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUg
YXBwbGllZCB0byB2ZXJ0ZXggc2hhZGVycy4KLSAgICB2b2lkIGluaXRpYWxpemVHTFBvc2l0aW9u
KFRJbnRlcm1Ob2RlKiByb290KTsKKyAgICB2b2lkIGluaXRpYWxpemVHTFBvc2l0aW9uKFRJbnRl
cm1Ob2RlICpyb290KTsKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgbWF4aW11bSBleHByZXNz
aW9uIGNvbXBsZXhpdHkgaXMgYmVsb3cgdGhlIGxpbWl0LgotICAgIGJvb2wgbGltaXRFeHByZXNz
aW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSogcm9vdCk7CisgICAgYm9vbCBsaW1pdEV4cHJlc3Np
b25Db21wbGV4aXR5KFRJbnRlcm1Ob2RlICpyb290KTsKICAgICAvLyBHZXQgYnVpbHQtaW4gZXh0
ZW5zaW9ucyB3aXRoIGRlZmF1bHQgYmVoYXZpb3IuCi0gICAgY29uc3QgVEV4dGVuc2lvbkJlaGF2
aW9yJiBnZXRFeHRlbnNpb25CZWhhdmlvcigpIGNvbnN0OworICAgIGNvbnN0IFRFeHRlbnNpb25C
ZWhhdmlvciAmZ2V0RXh0ZW5zaW9uQmVoYXZpb3IoKSBjb25zdDsKICAgICBjb25zdCBjaGFyICpn
ZXRTb3VyY2VQYXRoKCkgY29uc3Q7Ci0gICAgY29uc3QgVFByYWdtYSYgZ2V0UHJhZ21hKCkgY29u
c3QgeyByZXR1cm4gbVByYWdtYTsgfQorICAgIGNvbnN0IFRQcmFnbWEgJmdldFByYWdtYSgpIGNv
bnN0IHsgcmV0dXJuIG1QcmFnbWE7IH0KICAgICB2b2lkIHdyaXRlUHJhZ21hKFNoQ29tcGlsZU9w
dGlvbnMgY29tcGlsZU9wdGlvbnMpOwogICAgIHVuc2lnbmVkIGludCAqZ2V0VGVtcG9yYXJ5SW5k
ZXgoKSB7IHJldHVybiAmbVRlbXBvcmFyeUluZGV4OyB9CiAgICAgLy8gUmVsaWVzIG9uIGNvbGxl
Y3RWYXJpYWJsZXMgaGF2aW5nIGJlZW4gY2FsbGVkLgogICAgIGJvb2wgaXNWYXJ5aW5nRGVmaW5l
ZChjb25zdCBjaGFyICp2YXJ5aW5nTmFtZSk7CiAKLSAgICBjb25zdCBBcnJheUJvdW5kc0NsYW1w
ZXImIGdldEFycmF5Qm91bmRzQ2xhbXBlcigpIGNvbnN0OworICAgIGNvbnN0IEFycmF5Qm91bmRz
Q2xhbXBlciAmZ2V0QXJyYXlCb3VuZHNDbGFtcGVyKCkgY29uc3Q7CiAgICAgU2hBcnJheUluZGV4
Q2xhbXBpbmdTdHJhdGVneSBnZXRBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSgpIGNvbnN0Owot
ICAgIGNvbnN0IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yJiBnZXRCdWlsdEluRnVuY3Rpb25FbXVs
YXRvcigpIGNvbnN0OwotCi0gICAgdmlydHVhbCBib29sIHNob3VsZENvbGxlY3RWYXJpYWJsZXMo
U2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykKLSAgICB7Ci0gICAgICAgIHJldHVybiAo
Y29tcGlsZU9wdGlvbnMgJiBTSF9WQVJJQUJMRVMpICE9IDA7Ci0gICAgfQorICAgIGNvbnN0IEJ1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yICZnZXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvcigpIGNvbnN0
OwogCiAgICAgdmlydHVhbCBib29sIHNob3VsZEZsYXR0ZW5QcmFnbWFTdGRnbEludmFyaWFudEFs
bCgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ29sbGVjdFZhcmlhYmxlcyhTaENvbXBp
bGVPcHRpb25zIGNvbXBpbGVPcHRpb25zKTsKIAorICAgIGJvb2wgd2VyZVZhcmlhYmxlc0NvbGxl
Y3RlZCgpIGNvbnN0OwogICAgIHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGU+IGF0dHJpYnV0ZXM7
CiAgICAgc3RkOjp2ZWN0b3I8c2g6Ok91dHB1dFZhcmlhYmxlPiBvdXRwdXRWYXJpYWJsZXM7CiAg
ICAgc3RkOjp2ZWN0b3I8c2g6OlVuaWZvcm0+IHVuaWZvcm1zOwogICAgIHN0ZDo6dmVjdG9yPHNo
OjpTaGFkZXJWYXJpYWJsZT4gZXhwYW5kZWRVbmlmb3JtczsKICAgICBzdGQ6OnZlY3RvcjxzaDo6
VmFyeWluZz4gdmFyeWluZ3M7CiAgICAgc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPiBp
bnRlcmZhY2VCbG9ja3M7Ci0gICAgYm9vbCB2YXJpYWJsZXNDb2xsZWN0ZWQ7CiAKICAgcHJpdmF0
ZToKICAgICAvLyBDcmVhdGVzIHRoZSBmdW5jdGlvbiBjYWxsIERBRyBmb3IgZnVydGhlciBhbmFs
eXNpcywgcmV0dXJuaW5nIGZhbHNlIGlmIHRoZXJlIGlzIGEgcmVjdXJzaW9uCkBAIC0xODMsNiAr
MTkwLDExIEBAIGNsYXNzIFRDb21waWxlciA6IHB1YmxpYyBUU2hIYW5kbGVCYXNlCiAKICAgICB2
b2lkIGluaXRTYW1wbGVyRGVmYXVsdFByZWNpc2lvbihUQmFzaWNUeXBlIHNhbXBsZXJUeXBlKTsK
IAorICAgIC8vIENvbGxlY3QgaW5mbyBmb3IgYWxsIGF0dHJpYnMsIHVuaWZvcm1zLCB2YXJ5aW5n
cy4KKyAgICB2b2lkIGNvbGxlY3RWYXJpYWJsZXMoVEludGVybU5vZGUgKnJvb3QpOworCisgICAg
Ym9vbCB2YXJpYWJsZXNDb2xsZWN0ZWQ7CisKICAgICAvLyBSZW1vdmVzIHVudXNlZCBmdW5jdGlv
biBkZWNsYXJhdGlvbnMgYW5kIHByb3RvdHlwZXMgZnJvbSB0aGUgQVNUCiAgICAgY2xhc3MgVW51
c2VkUHJlZGljYXRlOwogICAgIGJvb2wgcHJ1bmVVbnVzZWRGdW5jdGlvbnMoVEludGVybUJsb2Nr
ICpyb290KTsKQEAgLTE5NywxMCArMjA5LDcgQEAgY2xhc3MgVENvbXBpbGVyIDogcHVibGljIFRT
aEhhbmRsZUJhc2UKIAogICAgIHN0cnVjdCBGdW5jdGlvbk1ldGFkYXRhCiAgICAgewotICAgICAg
ICBGdW5jdGlvbk1ldGFkYXRhKCkKLSAgICAgICAgICAgIDogdXNlZChmYWxzZSkKLSAgICAgICAg
ewotICAgICAgICB9CisgICAgICAgIEZ1bmN0aW9uTWV0YWRhdGEoKSA6IHVzZWQoZmFsc2UpIHt9
CiAgICAgICAgIGJvb2wgdXNlZDsKICAgICB9OwogCkBAIC0yMjgsMTMgKzIzNywxNyBAQCBjbGFz
cyBUQ29tcGlsZXIgOiBwdWJsaWMgVFNoSGFuZGxlQmFzZQogCiAgICAgLy8gUmVzdWx0cyBvZiBj
b21waWxhdGlvbi4KICAgICBpbnQgc2hhZGVyVmVyc2lvbjsKLSAgICBUSW5mb1NpbmsgaW5mb1Np
bms7ICAvLyBPdXRwdXQgc2luay4KLSAgICBjb25zdCBjaGFyICptU291cmNlUGF0aDsgLy8gUGF0
aCBvZiBzb3VyY2UgZmlsZSBvciBOVUxMCisgICAgVEluZm9TaW5rIGluZm9TaW5rOyAgICAgICAv
LyBPdXRwdXQgc2luay4KKyAgICBURGlhZ25vc3RpY3MgbURpYWdub3N0aWNzOworICAgIGNvbnN0
IGNoYXIgKm1Tb3VyY2VQYXRoOyAgLy8gUGF0aCBvZiBzb3VyY2UgZmlsZSBvciBOVUxMCiAKICAg
ICAvLyBjb21wdXRlIHNoYWRlciBsb2NhbCBncm91cCBzaXplCiAgICAgYm9vbCBtQ29tcHV0ZVNo
YWRlckxvY2FsU2l6ZURlY2xhcmVkOwogICAgIHNoOjpXb3JrR3JvdXBTaXplIG1Db21wdXRlU2hh
ZGVyTG9jYWxTaXplOwogCisgICAgLy8gR0xfT1ZSX211bHRpdmlldyBudW1fdmlld3MuCisgICAg
aW50IG1OdW1WaWV3czsKKwogICAgIC8vIG5hbWUgaGFzaGluZy4KICAgICBTaEhhc2hGdW5jdGlv
bjY0IGhhc2hGdW5jdGlvbjsKICAgICBOYW1lTWFwIG5hbWVNYXA7CkBAIC0yNTMsOCArMjY2LDkg
QEAgY2xhc3MgVENvbXBpbGVyIDogcHVibGljIFRTaEhhbmRsZUJhc2UKIC8vIGRlc3Ryb3kgdGhl
IG1hY2hpbmUgZGVwZW5kZW50IG9iamVjdHMsIHdoaWNoIGNvbnRhaW4gdGhlCiAvLyBhYm92ZSBt
YWNoaW5lIGluZGVwZW5kZW50IGluZm9ybWF0aW9uLgogLy8KLVRDb21waWxlciogQ29uc3RydWN0
Q29tcGlsZXIoCi0gICAgc2g6OkdMZW51bSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgU2hTaGFk
ZXJPdXRwdXQgb3V0cHV0KTsKLXZvaWQgRGVsZXRlQ29tcGlsZXIoVENvbXBpbGVyKik7CitUQ29t
cGlsZXIgKkNvbnN0cnVjdENvbXBpbGVyKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNw
ZWMsIFNoU2hhZGVyT3V0cHV0IG91dHB1dCk7Cit2b2lkIERlbGV0ZUNvbXBpbGVyKFRDb21waWxl
ciAqKTsKKworfSAgLy8gbmFtZXNwYWNlIHNoCiAKLSNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xB
VE9SX0NPTVBJTEVSX0hfCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfQ09NUElMRVJf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL0NvbnN0YW50VW5pb24uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvQ29uc3RhbnRVbmlvbi5jcHAKaW5kZXggYjQwNzRiZjc3ZDBjNTI5
ZmQyMWZlZmU3NTAxM2NiY2ZhYzVlMzRkOC4uYjk2MGU0MjhmMjQxMzc3NDg3ODNjNWY1ZmQ4Yzg2
ZDUwN2RkYTg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvQ29uc3RhbnRVbmlvbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29uc3RhbnRVbmlvbi5jcHAKQEAgLTcsNTkg
KzcsNjEgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQ29uc3RhbnRVbmlvbi5o
IgogCi0jaW5jbHVkZSAiYmFzZS9udW1lcmljcy9zYWZlX21hdGguaCIKICNpbmNsdWRlICJjb21t
b24vbWF0aHV0aWwuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0aWNz
LmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBuYW1lc3BhY2UKIHsKIAotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1UIENoZWNrZWRTdW0oYmFzZTo6Q2hlY2tlZE51bWVyaWM8VD4gbGhzLAotICAgICAg
ICAgICAgIGJhc2U6OkNoZWNrZWROdW1lcmljPFQ+IHJocywKLSAgICAgICAgICAgICBURGlhZ25v
c3RpY3MgKmRpYWcsCi0gICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkKK2Zsb2F0
IENoZWNrZWRTdW0oZmxvYXQgbGhzLCBmbG9hdCByaHMsIFREaWFnbm9zdGljcyAqZGlhZywgY29u
c3QgVFNvdXJjZUxvYyAmbGluZSkKIHsKLSAgICBBU1NFUlQobGhzLklzVmFsaWQoKSAmJiByaHMu
SXNWYWxpZCgpKTsKLSAgICBhdXRvIHJlc3VsdCA9IGxocyArIHJoczsKLSAgICBpZiAoIXJlc3Vs
dC5Jc1ZhbGlkKCkpCisgICAgZmxvYXQgcmVzdWx0ID0gbGhzICsgcmhzOworICAgIGlmIChnbDo6
aXNOYU4ocmVzdWx0KSAmJiAhZ2w6OmlzTmFOKGxocykgJiYgIWdsOjppc05hTihyaHMpKQorICAg
IHsKKyAgICAgICAgZGlhZy0+d2FybmluZyhsaW5lLCAiQ29uc3RhbnQgZm9sZGVkIHVuZGVmaW5l
ZCBhZGRpdGlvbiBnZW5lcmF0ZWQgTmFOIiwgIisiKTsKKyAgICB9CisgICAgZWxzZSBpZiAoZ2w6
OmlzSW5mKHJlc3VsdCkgJiYgIWdsOjppc0luZihsaHMpICYmICFnbDo6aXNJbmYocmhzKSkKICAg
ICB7Ci0gICAgICAgIGRpYWctPmVycm9yKGxpbmUsICJBZGRpdGlvbiBvdXQgb2YgcmFuZ2UiLCAi
KiIsICIiKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRpYWctPndhcm5pbmcobGluZSwg
IkNvbnN0YW50IGZvbGRlZCBhZGRpdGlvbiBvdmVyZmxvd2VkIHRvIGluZmluaXR5IiwgIisiKTsK
ICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdC5WYWx1ZU9yRGVmYXVsdCgwKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVQgQ2hlY2tlZERpZmYoYmFzZTo6
Q2hlY2tlZE51bWVyaWM8VD4gbGhzLAotICAgICAgICAgICAgICBiYXNlOjpDaGVja2VkTnVtZXJp
YzxUPiByaHMsCi0gICAgICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZywKLSAgICAgICAgICAg
ICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkKK2Zsb2F0IENoZWNrZWREaWZmKGZsb2F0IGxocywg
ZmxvYXQgcmhzLCBURGlhZ25vc3RpY3MgKmRpYWcsIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCiB7
Ci0gICAgQVNTRVJUKGxocy5Jc1ZhbGlkKCkgJiYgcmhzLklzVmFsaWQoKSk7Ci0gICAgYXV0byBy
ZXN1bHQgPSBsaHMgLSByaHM7Ci0gICAgaWYgKCFyZXN1bHQuSXNWYWxpZCgpKQorICAgIGZsb2F0
IHJlc3VsdCA9IGxocyAtIHJoczsKKyAgICBpZiAoZ2w6OmlzTmFOKHJlc3VsdCkgJiYgIWdsOjpp
c05hTihsaHMpICYmICFnbDo6aXNOYU4ocmhzKSkKKyAgICB7CisgICAgICAgIGRpYWctPndhcm5p
bmcobGluZSwgIkNvbnN0YW50IGZvbGRlZCB1bmRlZmluZWQgc3VidHJhY3Rpb24gZ2VuZXJhdGVk
IE5hTiIsICItIik7CisgICAgfQorICAgIGVsc2UgaWYgKGdsOjppc0luZihyZXN1bHQpICYmICFn
bDo6aXNJbmYobGhzKSAmJiAhZ2w6OmlzSW5mKHJocykpCiAgICAgewotICAgICAgICBkaWFnLT5l
cnJvcihsaW5lLCAiRGlmZmVyZW5jZSBvdXQgb2YgcmFuZ2UiLCAiKiIsICIiKTsKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIGRpYWctPndhcm5pbmcobGluZSwgIkNvbnN0YW50IGZvbGRlZCBz
dWJ0cmFjdGlvbiBvdmVyZmxvd2VkIHRvIGluZmluaXR5IiwgIi0iKTsKICAgICB9Ci0gICAgcmV0
dXJuIHJlc3VsdC5WYWx1ZU9yRGVmYXVsdCgwKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi10
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVQgQ2hlY2tlZE11bChiYXNlOjpDaGVja2VkTnVtZXJpYzxU
PiBsaHMsCi0gICAgICAgICAgICAgYmFzZTo6Q2hlY2tlZE51bWVyaWM8VD4gcmhzLAotICAgICAg
ICAgICAgIFREaWFnbm9zdGljcyAqZGlhZywKLSAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9j
ICZsaW5lKQorZmxvYXQgQ2hlY2tlZE11bChmbG9hdCBsaHMsIGZsb2F0IHJocywgVERpYWdub3N0
aWNzICpkaWFnLCBjb25zdCBUU291cmNlTG9jICZsaW5lKQogewotICAgIEFTU0VSVChsaHMuSXNW
YWxpZCgpICYmIHJocy5Jc1ZhbGlkKCkpOwotICAgIGF1dG8gcmVzdWx0ID0gbGhzICogcmhzOwot
ICAgIGlmICghcmVzdWx0LklzVmFsaWQoKSkKKyAgICBmbG9hdCByZXN1bHQgPSBsaHMgKiByaHM7
CisgICAgaWYgKGdsOjppc05hTihyZXN1bHQpICYmICFnbDo6aXNOYU4obGhzKSAmJiAhZ2w6Omlz
TmFOKHJocykpCiAgICAgewotICAgICAgICBkaWFnLT5lcnJvcihsaW5lLCAiTXVsdGlwbGljYXRp
b24gb3V0IG9mIHJhbmdlIiwgIioiLCAiIik7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBk
aWFnLT53YXJuaW5nKGxpbmUsICJDb25zdGFudCBmb2xkZWQgdW5kZWZpbmVkIG11bHRpcGxpY2F0
aW9uIGdlbmVyYXRlZCBOYU4iLCAiKiIpOwogICAgIH0KLSAgICByZXR1cm4gcmVzdWx0LlZhbHVl
T3JEZWZhdWx0KDApOworICAgIGVsc2UgaWYgKGdsOjppc0luZihyZXN1bHQpICYmICFnbDo6aXNJ
bmYobGhzKSAmJiAhZ2w6OmlzSW5mKHJocykpCisgICAgeworICAgICAgICBkaWFnLT53YXJuaW5n
KGxpbmUsICJDb25zdGFudCBmb2xkZWQgbXVsdGlwbGljYXRpb24gb3ZlcmZsb3dlZCB0byBpbmZp
bml0eSIsICIqIik7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgSXNWYWxp
ZFNoaWZ0T2Zmc2V0KGNvbnN0IFRDb25zdGFudFVuaW9uICZyaHMpCit7CisgICAgcmV0dXJuIChy
aHMuZ2V0VHlwZSgpID09IEVidEludCAmJiAocmhzLmdldElDb25zdCgpID49IDAgJiYgcmhzLmdl
dElDb25zdCgpIDw9IDMxKSkgfHwKKyAgICAgICAgICAgKHJocy5nZXRUeXBlKCkgPT0gRWJ0VUlu
dCAmJiByaHMuZ2V0VUNvbnN0KCkgPD0gMzF1KTsKIH0KIAogfSAgLy8gYW5vbnltb3VzIG5hbWVz
cGFjZQpAQCAtMTk2LDYgKzE5OCwxMSBAQCBib29sIFRDb25zdGFudFVuaW9uOjpvcGVyYXRvcj09
KGNvbnN0IGJvb2wgYikgY29uc3QKICAgICByZXR1cm4gYiA9PSBiQ29uc3Q7CiB9CiAKK2Jvb2wg
VENvbnN0YW50VW5pb246Om9wZXJhdG9yPT0oY29uc3QgVFl1dkNzY1N0YW5kYXJkRVhUIHMpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHMgPT0geXV2Q3NjU3RhbmRhcmRFWFRDb25zdDsKK30KKwogYm9v
bCBUQ29uc3RhbnRVbmlvbjo6b3BlcmF0b3I9PShjb25zdCBUQ29uc3RhbnRVbmlvbiAmY29uc3Rh
bnQpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0YW50LnR5cGUgIT0gdHlwZSkKQEAgLTIxMSw2ICsy
MTgsOCBAQCBib29sIFRDb25zdGFudFVuaW9uOjpvcGVyYXRvcj09KGNvbnN0IFRDb25zdGFudFVu
aW9uICZjb25zdGFudCkgY29uc3QKICAgICAgICAgICAgIHJldHVybiBjb25zdGFudC5mQ29uc3Qg
PT0gZkNvbnN0OwogICAgICAgICBjYXNlIEVidEJvb2w6CiAgICAgICAgICAgICByZXR1cm4gY29u
c3RhbnQuYkNvbnN0ID09IGJDb25zdDsKKyAgICAgICAgY2FzZSBFYnRZdXZDc2NTdGFuZGFyZEVY
VDoKKyAgICAgICAgICAgIHJldHVybiBjb25zdGFudC55dXZDc2NTdGFuZGFyZEVYVENvbnN0ID09
IHl1dkNzY1N0YW5kYXJkRVhUQ29uc3Q7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjM2LDYgKzI0NSwxMSBAQCBib29sIFRDb25zdGFudFVu
aW9uOjpvcGVyYXRvciE9KGNvbnN0IGJvb2wgYikgY29uc3QKICAgICByZXR1cm4gIW9wZXJhdG9y
PT0oYik7CiB9CiAKK2Jvb2wgVENvbnN0YW50VW5pb246Om9wZXJhdG9yIT0oY29uc3QgVFl1dkNz
Y1N0YW5kYXJkRVhUIHMpIGNvbnN0Cit7CisgICAgcmV0dXJuICFvcGVyYXRvcj09KHMpOworfQor
CiBib29sIFRDb25zdGFudFVuaW9uOjpvcGVyYXRvciE9KGNvbnN0IFRDb25zdGFudFVuaW9uICZj
b25zdGFudCkgY29uc3QKIHsKICAgICByZXR1cm4gIW9wZXJhdG9yPT0oY29uc3RhbnQpOwpAQCAt
MjkwLDcgKzMwNCw3IEBAIFRDb25zdGFudFVuaW9uIFRDb25zdGFudFVuaW9uOjphZGQoY29uc3Qg
VENvbnN0YW50VW5pb24gJmxocywKICAgICAgICAgICAgIHJldHVyblZhbHVlLnNldFVDb25zdChn
bDo6V3JhcHBpbmdTdW08dW5zaWduZWQgaW50PihsaHMudUNvbnN0LCByaHMudUNvbnN0KSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgIHJl
dHVyblZhbHVlLnNldEZDb25zdChDaGVja2VkU3VtPGZsb2F0PihsaHMuZkNvbnN0LCByaHMuZkNv
bnN0LCBkaWFnLCBsaW5lKSk7CisgICAgICAgICAgICByZXR1cm5WYWx1ZS5zZXRGQ29uc3QoQ2hl
Y2tlZFN1bShsaHMuZkNvbnN0LCByaHMuZkNvbnN0LCBkaWFnLCBsaW5lKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CkBA
IC0zMTYsNyArMzMwLDcgQEAgVENvbnN0YW50VW5pb24gVENvbnN0YW50VW5pb246OnN1Yihjb25z
dCBUQ29uc3RhbnRVbmlvbiAmbGhzLAogICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0VUNvbnN0
KGdsOjpXcmFwcGluZ0RpZmY8dW5zaWduZWQgaW50PihsaHMudUNvbnN0LCByaHMudUNvbnN0KSk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAg
IHJldHVyblZhbHVlLnNldEZDb25zdChDaGVja2VkRGlmZjxmbG9hdD4obGhzLmZDb25zdCwgcmhz
LmZDb25zdCwgZGlhZywgbGluZSkpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0RkNvbnN0
KENoZWNrZWREaWZmKGxocy5mQ29uc3QsIHJocy5mQ29uc3QsIGRpYWcsIGxpbmUpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKQEAgLTM0NCw3ICszNTgsNyBAQCBUQ29uc3RhbnRVbmlvbiBUQ29uc3RhbnRVbmlvbjo6bXVs
KGNvbnN0IFRDb25zdGFudFVuaW9uICZsaHMsCiAgICAgICAgICAgICByZXR1cm5WYWx1ZS5zZXRV
Q29uc3QobGhzLnVDb25zdCAqIHJocy51Q29uc3QpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICByZXR1cm5WYWx1ZS5zZXRGQ29uc3QoQ2hl
Y2tlZE11bDxmbG9hdD4obGhzLmZDb25zdCwgcmhzLmZDb25zdCwgZGlhZywgbGluZSkpOworICAg
ICAgICAgICAgcmV0dXJuVmFsdWUuc2V0RkNvbnN0KENoZWNrZWRNdWwobGhzLmZDb25zdCwgcmhz
LmZDb25zdCwgZGlhZywgbGluZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwpAQCAtMzgxLDEwICszOTUsOSBAQCBUQ29u
c3RhbnRVbmlvbiBUQ29uc3RhbnRVbmlvbjo6cnNoaWZ0KGNvbnN0IFRDb25zdGFudFVuaW9uICZs
aHMsCiAgICAgVENvbnN0YW50VW5pb24gcmV0dXJuVmFsdWU7CiAgICAgQVNTRVJUKGxocy50eXBl
ID09IEVidEludCB8fCBsaHMudHlwZSA9PSBFYnRVSW50KTsKICAgICBBU1NFUlQocmhzLnR5cGUg
PT0gRWJ0SW50IHx8IHJocy50eXBlID09IEVidFVJbnQpOwotICAgIGlmICgocmhzLnR5cGUgPT0g
RWJ0SW50ICYmIChyaHMuaUNvbnN0IDwgMCB8fCByaHMuaUNvbnN0ID4gMzEpKSB8fAotICAgICAg
ICAocmhzLnR5cGUgPT0gRWJ0VUludCAmJiByaHMudUNvbnN0ID4gMzF1KSkKKyAgICBpZiAoIUlz
VmFsaWRTaGlmdE9mZnNldChyaHMpKQogICAgIHsKLSAgICAgICAgZGlhZy0+ZXJyb3IobGluZSwg
IlVuZGVmaW5lZCBzaGlmdCAob3BlcmFuZCBvdXQgb2YgcmFuZ2UpIiwgIj4+IiwgIiIpOworICAg
ICAgICBkaWFnLT53YXJuaW5nKGxpbmUsICJVbmRlZmluZWQgc2hpZnQgKG9wZXJhbmQgb3V0IG9m
IHJhbmdlKSIsICI+PiIpOwogICAgICAgICBzd2l0Y2ggKGxocy50eXBlKQogICAgICAgICB7CiAg
ICAgICAgICAgICBjYXNlIEVidEludDoKQEAgLTQyMCwyNyArNDMzLDQyIEBAIFRDb25zdGFudFVu
aW9uIFRDb25zdGFudFVuaW9uOjpyc2hpZnQoY29uc3QgVENvbnN0YW50VW5pb24gJmxocywKICAg
ICAgICAgICAgICAgICAvLyBFU1NMIDMuMDAuNiBzZWN0aW9uIDUuOTogIklmIEUxIGlzIGEgc2ln
bmVkIGludGVnZXIsIHRoZSByaWdodC1zaGlmdCB3aWxsIGV4dGVuZAogICAgICAgICAgICAgICAg
IC8vIHRoZSBzaWduIGJpdC4iIEluIEMrKyBzaGlmdGluZyBuZWdhdGl2ZSBpbnRlZ2VycyBpcyB1
bmRlZmluZWQsIHNvIHdlIGltcGxlbWVudAogICAgICAgICAgICAgICAgIC8vIGV4dGVuZGluZyB0
aGUgc2lnbiBiaXQgbWFudWFsbHkuCi0gICAgICAgICAgICAgICAgYm9vbCBleHRlbmRTaWduQml0
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaW50IGxoc1NhZmUgICAgICAgID0gbGhzLmlDb25z
dDsKLSAgICAgICAgICAgICAgICBpZiAobGhzU2FmZSA8IDApCisgICAgICAgICAgICAgICAgaW50
IGxoc1NhZmUgPSBsaHMuaUNvbnN0OworICAgICAgICAgICAgICAgIGlmIChsaHNTYWZlID09IHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCkpCiAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBleHRlbmRTaWduQml0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAg
Ly8gQ2xlYXIgdGhlIHNpZ24gYml0IHNvIHRoYXQgYml0c2hpZnQgcmlnaHQgaXMgZGVmaW5lZCBp
biBDKysuCi0gICAgICAgICAgICAgICAgICAgIGxoc1NhZmUgJj0gMHg3ZmZmZmZmZjsKLSAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGxoc1NhZmUgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gVGhlIG1pbiBpbnRlZ2VyIG5lZWRzIHNwZWNpYWwgdHJlYXRtZW50IGJlY2F1c2Ugb25seSBi
aXQgaXQgaGFzIHNldCBpcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gc2lnbiBiaXQsIHdo
aWNoIHdlIGNsZWFyIGxhdGVyIHRvIGltcGxlbWVudCBzYWZlIHJpZ2h0IHNoaWZ0IG9mIG5lZ2F0
aXZlCisgICAgICAgICAgICAgICAgICAgIC8vIG51bWJlcnMuCisgICAgICAgICAgICAgICAgICAg
IGxoc1NhZmUgPSAtMHg0MDAwMDAwMDsKKyAgICAgICAgICAgICAgICAgICAgLS1zaGlmdE9mZnNl
dDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0SUNv
bnN0KGxoc1NhZmUgPj4gc2hpZnRPZmZzZXQpOwotCi0gICAgICAgICAgICAgICAgLy8gTWFudWFs
bHkgZmlsbCBpbiB0aGUgZXh0ZW5kZWQgc2lnbiBiaXQgaWYgbmVjZXNzYXJ5LgotICAgICAgICAg
ICAgICAgIGlmIChleHRlbmRTaWduQml0KQorICAgICAgICAgICAgICAgIGlmIChzaGlmdE9mZnNl
dCA+IDApCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpbnQgZXh0ZW5k
ZWRTaWduQml0ID0gc3RhdGljX2Nhc3Q8aW50PigweGZmZmZmZmZmdSA8PCAoMzEgLSBzaGlmdE9m
ZnNldCkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZS5zZXRJQ29uc3QocmV0dXJu
VmFsdWUuZ2V0SUNvbnN0KCkgfCBleHRlbmRlZFNpZ25CaXQpOworICAgICAgICAgICAgICAgICAg
ICBib29sIGV4dGVuZFNpZ25CaXQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxo
c1NhZmUgPCAwKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBleHRlbmRTaWduQml0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsZWFy
IHRoZSBzaWduIGJpdCBzbyB0aGF0IGJpdHNoaWZ0IHJpZ2h0IGlzIGRlZmluZWQgaW4gQysrLgor
ICAgICAgICAgICAgICAgICAgICAgICAgbGhzU2FmZSAmPSAweDdmZmZmZmZmOworICAgICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGxoc1NhZmUgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZS5zZXRJQ29uc3QobGhzU2FmZSA+PiBz
aGlmdE9mZnNldCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gTWFudWFsbHkgZmlsbCBpbiB0
aGUgZXh0ZW5kZWQgc2lnbiBiaXQgaWYgbmVjZXNzYXJ5LgorICAgICAgICAgICAgICAgICAgICBp
ZiAoZXh0ZW5kU2lnbkJpdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGV4dGVuZGVkU2lnbkJpdCA9IHN0YXRpY19jYXN0PGludD4oMHhmZmZmZmZm
ZnUgPDwgKDMxIC0gc2hpZnRPZmZzZXQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
blZhbHVlLnNldElDb25zdChyZXR1cm5WYWx1ZS5nZXRJQ29uc3QoKSB8IGV4dGVuZGVkU2lnbkJp
dCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
VmFsdWUuc2V0SUNvbnN0KGxoc1NhZmUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1
cm5WYWx1ZS5zZXRJQ29uc3QocmhzLmlDb25zdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuVmFs
dWUuc2V0SUNvbnN0KGxocy5pQ29uc3QpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTQ3MywxMCArNTAxLDkgQEAgVENvbnN0YW50VW5pb24gVENvbnN0
YW50VW5pb246OmxzaGlmdChjb25zdCBUQ29uc3RhbnRVbmlvbiAmbGhzLAogICAgIFRDb25zdGFu
dFVuaW9uIHJldHVyblZhbHVlOwogICAgIEFTU0VSVChsaHMudHlwZSA9PSBFYnRJbnQgfHwgbGhz
LnR5cGUgPT0gRWJ0VUludCk7CiAgICAgQVNTRVJUKHJocy50eXBlID09IEVidEludCB8fCByaHMu
dHlwZSA9PSBFYnRVSW50KTsKLSAgICBpZiAoKHJocy50eXBlID09IEVidEludCAmJiAocmhzLmlD
b25zdCA8IDAgfHwgcmhzLmlDb25zdCA+IDMxKSkgfHwKLSAgICAgICAgKHJocy50eXBlID09IEVi
dFVJbnQgJiYgcmhzLnVDb25zdCA+IDMxdSkpCisgICAgaWYgKCFJc1ZhbGlkU2hpZnRPZmZzZXQo
cmhzKSkKICAgICB7Ci0gICAgICAgIGRpYWctPmVycm9yKGxpbmUsICJVbmRlZmluZWQgc2hpZnQg
KG9wZXJhbmQgb3V0IG9mIHJhbmdlKSIsICI8PCIsICIiKTsKKyAgICAgICAgZGlhZy0+d2Fybmlu
ZyhsaW5lLCAiVW5kZWZpbmVkIHNoaWZ0IChvcGVyYW5kIG91dCBvZiByYW5nZSkiLCAiPDwiKTsK
ICAgICAgICAgc3dpdGNoIChsaHMudHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgY2FzZSBF
YnRJbnQ6CkBAIC02MjAsMyArNjQ3LDUgQEAgVENvbnN0YW50VW5pb24gVENvbnN0YW50VW5pb246
Om9wZXJhdG9yfHwoY29uc3QgVENvbnN0YW50VW5pb24gJmNvbnN0YW50KSBjb25zdAogCiAgICAg
cmV0dXJuIHJldHVyblZhbHVlOwogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NvbnN0YW50
VW5pb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L0NvbnN0YW50VW5pb24uaAppbmRleCBlZWMwZjBmZjk3ZGNlZDM4Y2QzODAwNjM4N2RmNTk3OGFj
NjQ0YWNkLi44NzBhY2I2ZjkwMzQzZDJkYjZjZTE4NDIwYWQ1MDUwNDVjNDY5NDk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db25z
dGFudFVuaW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvQ29uc3RhbnRVbmlvbi5oCkBAIC0xMiw2ICsxMiw5IEBACiAjaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci9Db21tb24uaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L0Jhc2VUeXBlcy5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogY2xhc3MgVERpYWdub3N0aWNzOwog
CiBjbGFzcyBUQ29uc3RhbnRVbmlvbgpAQCAtMjIsMjUgKzI1LDUwIEBAIGNsYXNzIFRDb25zdGFu
dFVuaW9uCiAKICAgICBib29sIGNhc3QoVEJhc2ljVHlwZSBuZXdUeXBlLCBjb25zdCBUQ29uc3Rh
bnRVbmlvbiAmY29uc3RhbnQpOwogCi0gICAgdm9pZCBzZXRJQ29uc3QoaW50IGkpIHtpQ29uc3Qg
PSBpOyB0eXBlID0gRWJ0SW50OyB9Ci0gICAgdm9pZCBzZXRVQ29uc3QodW5zaWduZWQgaW50IHUp
IHsgdUNvbnN0ID0gdTsgdHlwZSA9IEVidFVJbnQ7IH0KLSAgICB2b2lkIHNldEZDb25zdChmbG9h
dCBmKSB7ZkNvbnN0ID0gZjsgdHlwZSA9IEVidEZsb2F0OyB9Ci0gICAgdm9pZCBzZXRCQ29uc3Qo
Ym9vbCBiKSB7YkNvbnN0ID0gYjsgdHlwZSA9IEVidEJvb2w7IH0KKyAgICB2b2lkIHNldElDb25z
dChpbnQgaSkKKyAgICB7CisgICAgICAgIGlDb25zdCA9IGk7CisgICAgICAgIHR5cGUgICA9IEVi
dEludDsKKyAgICB9CisgICAgdm9pZCBzZXRVQ29uc3QodW5zaWduZWQgaW50IHUpCisgICAgewor
ICAgICAgICB1Q29uc3QgPSB1OworICAgICAgICB0eXBlICAgPSBFYnRVSW50OworICAgIH0KKyAg
ICB2b2lkIHNldEZDb25zdChmbG9hdCBmKQorICAgIHsKKyAgICAgICAgZkNvbnN0ID0gZjsKKyAg
ICAgICAgdHlwZSAgID0gRWJ0RmxvYXQ7CisgICAgfQorICAgIHZvaWQgc2V0QkNvbnN0KGJvb2wg
YikKKyAgICB7CisgICAgICAgIGJDb25zdCA9IGI7CisgICAgICAgIHR5cGUgICA9IEVidEJvb2w7
CisgICAgfQorCisgICAgdm9pZCBzZXRZdXZDc2NTdGFuZGFyZEVYVENvbnN0KFRZdXZDc2NTdGFu
ZGFyZEVYVCBzKQorICAgIHsKKyAgICAgICAgeXV2Q3NjU3RhbmRhcmRFWFRDb25zdCA9IHM7Cisg
ICAgICAgIHR5cGUgICAgICAgICAgICAgICAgICAgPSBFYnRZdXZDc2NTdGFuZGFyZEVYVDsKKyAg
ICB9CiAKICAgICBpbnQgZ2V0SUNvbnN0KCkgY29uc3QgeyByZXR1cm4gaUNvbnN0OyB9CiAgICAg
dW5zaWduZWQgaW50IGdldFVDb25zdCgpIGNvbnN0IHsgcmV0dXJuIHVDb25zdDsgfQogICAgIGZs
b2F0IGdldEZDb25zdCgpIGNvbnN0IHsgcmV0dXJuIGZDb25zdDsgfQogICAgIGJvb2wgZ2V0QkNv
bnN0KCkgY29uc3QgeyByZXR1cm4gYkNvbnN0OyB9CisgICAgVFl1dkNzY1N0YW5kYXJkRVhUIGdl
dFl1dkNzY1N0YW5kYXJkRVhUQ29uc3QoKSBjb25zdCB7IHJldHVybiB5dXZDc2NTdGFuZGFyZEVY
VENvbnN0OyB9CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgaW50IGkpIGNvbnN0OwogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCB1bnNpZ25lZCBpbnQgdSkgY29uc3Q7CiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IGZsb2F0IGYpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBib29sIGIpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUWXV2Q3NjU3RhbmRh
cmRFWFQgcykgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRDb25zdGFudFVuaW9u
ICZjb25zdGFudCkgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGludCBpKSBjb25z
dDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgdW5zaWduZWQgaW50IHUpIGNvbnN0OwogICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBmbG9hdCBmKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9y
IT0oY29uc3QgYm9vbCBiKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVFl1dkNz
Y1N0YW5kYXJkRVhUIHMpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUQ29uc3Rh
bnRVbmlvbiAmY29uc3RhbnQpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFRDb25z
dGFudFVuaW9uICZjb25zdGFudCkgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgVENv
bnN0YW50VW5pb24gJmNvbnN0YW50KSBjb25zdDsKQEAgLTc4LDkgKzEwNiwxMiBAQCBjbGFzcyBU
Q29uc3RhbnRVbmlvbgogICAgICAgICB1bnNpZ25lZCBpbnQgdUNvbnN0OyAgLy8gdXNlZCBmb3Ig
dXZlYywgc2NhbGFyIHVpbnRzCiAgICAgICAgIGJvb2wgYkNvbnN0OyAgICAgICAgICAvLyB1c2Vk
IGZvciBidmVjLCBzY2FsYXIgYm9vbHMKICAgICAgICAgZmxvYXQgZkNvbnN0OyAgICAgICAgIC8v
IHVzZWQgZm9yIHZlYywgbWF0LCBzY2FsYXIgZmxvYXRzCisgICAgICAgIFRZdXZDc2NTdGFuZGFy
ZEVYVCB5dXZDc2NTdGFuZGFyZEVYVENvbnN0OwogICAgIH07CiAKICAgICBUQmFzaWNUeXBlIHR5
cGU7CiB9OwogCi0jZW5kaWYgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9DT05TVEFOVFVOSU9OX0hf
Cit9ICAvLyBuYW1lc3BhY2Ugc2gKKworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0NP
TlNUQU5UVU5JT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0RlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RlZmVyR2xvYmFsSW5pdGlh
bGl6ZXJzLmNwcAppbmRleCAwNjdlNmNlYTNjOTVlNzQ2YmMwYWM5NTc5YzhiZWJkYThiMDI1ZTQ5
Li5jZjdlYmI1ZTg4NDQzNmU0Y2IxMzJmYjk2MzUxZGUyMTRlZDgzMjM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9EZWZlckdsb2Jh
bEluaXRpYWxpemVycy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvRGVmZXJHbG9iYWxJbml0aWFsaXplcnMuY3BwCkBAIC0xNSw1NCArMTUs
MTEgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKICNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmgiCiAKLW5hbWVzcGFjZQotewot
Ci12b2lkIFNldEludGVybmFsRnVuY3Rpb25OYW1lKFRGdW5jdGlvblN5bWJvbEluZm8gKmZ1bmN0
aW9uSW5mbywgY29uc3QgY2hhciAqbmFtZSkKLXsKLSAgICBUU3RyaW5nIG5hbWVTdHIobmFtZSk7
Ci0gICAgbmFtZVN0ciA9IFRGdW5jdGlvbjo6bWFuZ2xlTmFtZShuYW1lU3RyKTsKLSAgICBUTmFt
ZSBuYW1lT2JqKG5hbWVTdHIpOwotICAgIG5hbWVPYmouc2V0SW50ZXJuYWwodHJ1ZSk7Ci0gICAg
ZnVuY3Rpb25JbmZvLT5zZXROYW1lT2JqKG5hbWVPYmopOwotfQotCi1USW50ZXJtQWdncmVnYXRl
ICpDcmVhdGVGdW5jdGlvblByb3RvdHlwZU5vZGUoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgaW50
IGZ1bmN0aW9uSWQpCi17Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25Ob2RlID0gbmV3
IFRJbnRlcm1BZ2dyZWdhdGUoRU9wUHJvdG90eXBlKTsKLQotICAgIFNldEludGVybmFsRnVuY3Rp
b25OYW1lKGZ1bmN0aW9uTm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCksIG5hbWUpOwotICAg
IFRUeXBlIHJldHVyblR5cGUoRWJ0Vm9pZCk7Ci0gICAgZnVuY3Rpb25Ob2RlLT5zZXRUeXBlKHJl
dHVyblR5cGUpOwotICAgIGZ1bmN0aW9uTm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPnNl
dElkKGZ1bmN0aW9uSWQpOwotICAgIHJldHVybiBmdW5jdGlvbk5vZGU7Ci19Ci0KLVRJbnRlcm1G
dW5jdGlvbkRlZmluaXRpb24gKkNyZWF0ZUZ1bmN0aW9uRGVmaW5pdGlvbk5vZGUoY29uc3QgY2hh
ciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEludGVybUJsb2NrICpmdW5jdGlvbkJvZHksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBmdW5jdGlvbklk
KQorbmFtZXNwYWNlIHNoCiB7Ci0gICAgVFR5cGUgcmV0dXJuVHlwZShFYnRWb2lkKTsKLSAgICBU
SW50ZXJtQWdncmVnYXRlICpwYXJhbXNOb2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wUGFy
YW1ldGVycyk7Ci0gICAgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqZnVuY3Rpb25Ob2RlID0K
LSAgICAgICAgbmV3IFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24ocmV0dXJuVHlwZSwgcGFyYW1z
Tm9kZSwgZnVuY3Rpb25Cb2R5KTsKLQotICAgIFNldEludGVybmFsRnVuY3Rpb25OYW1lKGZ1bmN0
aW9uTm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCksIG5hbWUpOwotICAgIGZ1bmN0aW9uTm9k
ZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPnNldElkKGZ1bmN0aW9uSWQpOwotICAgIHJldHVy
biBmdW5jdGlvbk5vZGU7Ci19CiAKLVRJbnRlcm1BZ2dyZWdhdGUgKkNyZWF0ZUZ1bmN0aW9uQ2Fs
bE5vZGUoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgaW50IGZ1bmN0aW9uSWQpCituYW1lc3BhY2UK
IHsKLSAgICBUSW50ZXJtQWdncmVnYXRlICpmdW5jdGlvbk5vZGUgPSBuZXcgVEludGVybUFnZ3Jl
Z2F0ZShFT3BGdW5jdGlvbkNhbGwpOwotCi0gICAgZnVuY3Rpb25Ob2RlLT5zZXRVc2VyRGVmaW5l
ZCgpOwotICAgIFNldEludGVybmFsRnVuY3Rpb25OYW1lKGZ1bmN0aW9uTm9kZS0+Z2V0RnVuY3Rp
b25TeW1ib2xJbmZvKCksIG5hbWUpOwotICAgIFRUeXBlIHJldHVyblR5cGUoRWJ0Vm9pZCk7Ci0g
ICAgZnVuY3Rpb25Ob2RlLT5zZXRUeXBlKHJldHVyblR5cGUpOwotICAgIGZ1bmN0aW9uTm9kZS0+
Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPnNldElkKGZ1bmN0aW9uSWQpOwotICAgIHJldHVybiBm
dW5jdGlvbk5vZGU7Ci19CiAKIGNsYXNzIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzVHJhdmVyc2Vy
IDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKIHsKQEAgLTExMSw3ICs2OCw3IEBAIGJvb2wgRGVm
ZXJHbG9iYWxJbml0aWFsaXplcnNUcmF2ZXJzZXI6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBU
SW50ZXJtQmluYXJ5ICpuCiAgICAgICAgICAgICBpZiAoc3ltYm9sTm9kZS0+Z2V0UXVhbGlmaWVy
KCkgPT0gRXZxQ29uc3QpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLy8gQWxsIG9m
IHRoZSBzaWJsaW5ncyBpbiB0aGUgc2FtZSBkZWNsYXJhdGlvbiBuZWVkIHRvIGhhdmUgY29uc2lz
dGVudCBxdWFsaWZpZXJzLgotICAgICAgICAgICAgICAgIGF1dG8gKnNpYmxpbmdzID0gZ2V0UGFy
ZW50Tm9kZSgpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5nZXRTZXF1ZW5jZSgpOworICAgICAgICAgICAg
ICAgIGF1dG8gKnNpYmxpbmdzID0gZ2V0UGFyZW50Tm9kZSgpLT5nZXRBc0RlY2xhcmF0aW9uTm9k
ZSgpLT5nZXRTZXF1ZW5jZSgpOwogICAgICAgICAgICAgICAgIGZvciAoVEludGVybU5vZGUgKnNp
YmxpbmdOb2RlIDogKnNpYmxpbmdzKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgVEludGVybUJpbmFyeSAqc2libGluZ0JpbmFyeSA9IHNpYmxpbmdOb2RlLT5nZXRBc0Jp
bmFyeU5vZGUoKTsKQEAgLTEzOCwyNCArOTUsMjQgQEAgdm9pZCBEZWZlckdsb2JhbEluaXRpYWxp
emVyc1RyYXZlcnNlcjo6aW5zZXJ0SW5pdEZ1bmN0aW9uKFRJbnRlcm1CbG9jayAqcm9vdCkKICAg
ICB7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY29uc3QgaW50IGluaXRGdW5jdGlvbklk
ICA9IFRTeW1ib2xUYWJsZTo6bmV4dFVuaXF1ZUlkKCk7CisgICAgVFN5bWJvbFVuaXF1ZUlkIGlu
aXRGdW5jdGlvbklkOwogCiAgICAgY29uc3QgY2hhciAqZnVuY3Rpb25OYW1lID0gImluaXRpYWxp
emVEZWZlcnJlZEdsb2JhbHMiOwogCiAgICAgLy8gQWRkIGZ1bmN0aW9uIHByb3RvdHlwZSB0byB0
aGUgYmVnaW5uaW5nIG9mIHRoZSBzaGFkZXIKLSAgICBUSW50ZXJtQWdncmVnYXRlICpmdW5jdGlv
blByb3RvdHlwZU5vZGUgPQotICAgICAgICBDcmVhdGVGdW5jdGlvblByb3RvdHlwZU5vZGUoZnVu
Y3Rpb25OYW1lLCBpbml0RnVuY3Rpb25JZCk7CisgICAgVEludGVybUZ1bmN0aW9uUHJvdG90eXBl
ICpmdW5jdGlvblByb3RvdHlwZU5vZGUgPQorICAgICAgICBDcmVhdGVJbnRlcm5hbEZ1bmN0aW9u
UHJvdG90eXBlTm9kZShUVHlwZShFYnRWb2lkKSwgZnVuY3Rpb25OYW1lLCBpbml0RnVuY3Rpb25J
ZCk7CiAgICAgcm9vdC0+Z2V0U2VxdWVuY2UoKS0+aW5zZXJ0KHJvb3QtPmdldFNlcXVlbmNlKCkt
PmJlZ2luKCksIGZ1bmN0aW9uUHJvdG90eXBlTm9kZSk7CiAKICAgICAvLyBBZGQgZnVuY3Rpb24g
ZGVmaW5pdGlvbiB0byB0aGUgZW5kIG9mIHRoZSBzaGFkZXIKICAgICBUSW50ZXJtQmxvY2sgKmZ1
bmN0aW9uQm9keU5vZGUgPSBuZXcgVEludGVybUJsb2NrKCk7Ci0gICAgVEludGVybVNlcXVlbmNl
ICpmdW5jdGlvbkJvZHkgPSBmdW5jdGlvbkJvZHlOb2RlLT5nZXRTZXF1ZW5jZSgpOworICAgIFRJ
bnRlcm1TZXF1ZW5jZSAqZnVuY3Rpb25Cb2R5ICA9IGZ1bmN0aW9uQm9keU5vZGUtPmdldFNlcXVl
bmNlKCk7CiAgICAgZm9yIChjb25zdCBhdXRvICZkZWZlcnJlZEluaXQgOiBtRGVmZXJyZWRJbml0
aWFsaXplcnMpCiAgICAgewogICAgICAgICBmdW5jdGlvbkJvZHktPnB1c2hfYmFjayhkZWZlcnJl
ZEluaXQpOwogICAgIH0KLSAgICBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpmdW5jdGlvbkRl
ZmluaXRpb24gPQotICAgICAgICBDcmVhdGVGdW5jdGlvbkRlZmluaXRpb25Ob2RlKGZ1bmN0aW9u
TmFtZSwgZnVuY3Rpb25Cb2R5Tm9kZSwgaW5pdEZ1bmN0aW9uSWQpOworICAgIFRJbnRlcm1GdW5j
dGlvbkRlZmluaXRpb24gKmZ1bmN0aW9uRGVmaW5pdGlvbiA9IENyZWF0ZUludGVybmFsRnVuY3Rp
b25EZWZpbml0aW9uTm9kZSgKKyAgICAgICAgVFR5cGUoRWJ0Vm9pZCksIGZ1bmN0aW9uTmFtZSwg
ZnVuY3Rpb25Cb2R5Tm9kZSwgaW5pdEZ1bmN0aW9uSWQpOwogICAgIHJvb3QtPmdldFNlcXVlbmNl
KCktPnB1c2hfYmFjayhmdW5jdGlvbkRlZmluaXRpb24pOwogCiAgICAgLy8gSW5zZXJ0IGNhbGwg
aW50byBtYWluIGZ1bmN0aW9uCkBAIC0xNjQsOCArMTIxLDggQEAgdm9pZCBEZWZlckdsb2JhbElu
aXRpYWxpemVyc1RyYXZlcnNlcjo6aW5zZXJ0SW5pdEZ1bmN0aW9uKFRJbnRlcm1CbG9jayAqcm9v
dCkKICAgICAgICAgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kZUZ1bmN0aW9uID0gbm9k
ZS0+Z2V0QXNGdW5jdGlvbkRlZmluaXRpb24oKTsKICAgICAgICAgaWYgKG5vZGVGdW5jdGlvbiAh
PSBudWxscHRyICYmIG5vZGVGdW5jdGlvbi0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmlzTWFp
bigpKQogICAgICAgICB7Ci0gICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpmdW5jdGlvbkNh
bGxOb2RlID0KLSAgICAgICAgICAgICAgICBDcmVhdGVGdW5jdGlvbkNhbGxOb2RlKGZ1bmN0aW9u
TmFtZSwgaW5pdEZ1bmN0aW9uSWQpOworICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqZnVu
Y3Rpb25DYWxsTm9kZSA9IENyZWF0ZUludGVybmFsRnVuY3Rpb25DYWxsTm9kZSgKKyAgICAgICAg
ICAgICAgICBUVHlwZShFYnRWb2lkKSwgZnVuY3Rpb25OYW1lLCBpbml0RnVuY3Rpb25JZCwgbnVs
bHB0cik7CiAKICAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqbWFpbkJvZHkgPSBub2RlRnVuY3Rp
b24tPmdldEJvZHkoKTsKICAgICAgICAgICAgIEFTU0VSVChtYWluQm9keSAhPSBudWxscHRyKTsK
QEAgLTE4NywzICsxNDQsNSBAQCB2b2lkIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzKFRJbnRlcm1C
bG9jayAqcm9vdCkKICAgICAvLyBBZGQgdGhlIGZ1bmN0aW9uIHdpdGggaW5pdGlhbGl6YXRpb24g
YW5kIHRoZSBjYWxsIHRvIHRoYXQuCiAgICAgdHJhdmVyc2VyLmluc2VydEluaXRGdW5jdGlvbihy
b290KTsKIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9EZWZlckdsb2JhbEluaXRpYWxpemVy
cy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGVm
ZXJHbG9iYWxJbml0aWFsaXplcnMuaAppbmRleCA4NWU1NWQ5YzYwOWMzZGRhYzMzYWYyNjYwZDM2
ZjM0OGEyZDYzNDY3Li4yNjFlYzkwMDE4Y2YzMGI0ZjQ5Y2IwMmRjZjJkMzMwYzgwOTIxM2MwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9EZWZlckdsb2JhbEluaXRpYWxpemVycy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmgKQEAgLTE1
LDYgKzE1LDkgQEAKIAogY2xhc3MgVEludGVybUJsb2NrOwogCituYW1lc3BhY2Ugc2gKK3sKIHZv
aWQgRGVmZXJHbG9iYWxJbml0aWFsaXplcnMoVEludGVybUJsb2NrICpyb290KTsKK30gIC8vIG5h
bWVzcGFjZSBzaAogCiAjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfREVGRVJHTE9CQUxJ
TklUSUFMSVpFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0aWNzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0aWNzLmNwcAppbmRleCA2YmE0Njc5
YzQ1OWE3MmEzMTA4ZTI3YTQwZmQ4YTUzZThhNTE4NGEyLi5kMmZlNDI5Mjg2MDc4YTRmNjY1NzRk
YzUyNTgzMmM1MDQwNTMxOTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9EaWFnbm9zdGljcy5jcHAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlhZ25vc3RpY3MuY3BwCkBAIC0x
MSwxMCArMTEsMTEgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0NvbW1vbi5oIgog
I2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5mb1NpbmsuaCIKIAotVERpYWdub3N0aWNz
OjpURGlhZ25vc3RpY3MoVEluZm9TaW5rJiBpbmZvU2luaykgOgotICAgIG1JbmZvU2luayhpbmZv
U2luayksCi0gICAgbU51bUVycm9ycygwKSwKLSAgICBtTnVtV2FybmluZ3MoMCkKK25hbWVzcGFj
ZSBzaAoreworCitURGlhZ25vc3RpY3M6OlREaWFnbm9zdGljcyhUSW5mb1NpbmtCYXNlICZpbmZv
U2luaykKKyAgICA6IG1JbmZvU2luayhpbmZvU2luayksIG1OdW1FcnJvcnMoMCksIG1OdW1XYXJu
aW5ncygwKQogewogfQogCkBAIC0yMyw1OSArMjQsNzEgQEAgVERpYWdub3N0aWNzOjp+VERpYWdu
b3N0aWNzKCkKIH0KIAogdm9pZCBURGlhZ25vc3RpY3M6OndyaXRlSW5mbyhTZXZlcml0eSBzZXZl
cml0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcHA6OlNvdXJjZUxvY2F0
aW9uJiBsb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiByZWFzb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiB0b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IGV4dHJhKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcDo6U291cmNlTG9j
YXRpb24gJmxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVh
c29uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbikKIHsK
LSAgICBUUHJlZml4VHlwZSBwcmVmaXggPSBFUHJlZml4Tm9uZTsKICAgICBzd2l0Y2ggKHNldmVy
aXR5KQogICAgIHsKLSAgICAgIGNhc2UgUFBfRVJST1I6Ci0gICAgICAgICsrbU51bUVycm9yczsK
LSAgICAgICAgcHJlZml4ID0gRVByZWZpeEVycm9yOwotICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgUFBfV0FSTklORzoKLSAgICAgICAgKyttTnVtV2FybmluZ3M7Ci0gICAgICAgIHByZWZpeCA9
IEVQcmVmaXhXYXJuaW5nOwotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNIX0VSUk9SOgor
ICAgICAgICAgICAgKyttTnVtRXJyb3JzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU0hfV0FSTklORzoKKyAgICAgICAgICAgICsrbU51bVdhcm5pbmdzOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAg
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgVEluZm9TaW5rQmFzZSYgc2luayA9IG1JbmZv
U2luay5pbmZvOwogICAgIC8qIFZDKysgZm9ybWF0OiBmaWxlKGxpbmVudW0pIDogZXJyb3IgIzog
J3Rva2VuJyA6IGV4dHJhaW5mbyAqLwotICAgIHNpbmsucHJlZml4KHByZWZpeCk7Ci0gICAgc2lu
ay5sb2NhdGlvbihsb2MuZmlsZSwgbG9jLmxpbmUpOwotICAgIHNpbmsgPDwgIiciIDw8IHRva2Vu
IDw8ICAiJyA6ICIgPDwgcmVhc29uIDw8ICIgIiA8PCBleHRyYSA8PCAiXG4iOworICAgIG1JbmZv
U2luay5wcmVmaXgoc2V2ZXJpdHkpOworICAgIG1JbmZvU2luay5sb2NhdGlvbihsb2MuZmlsZSwg
bG9jLmxpbmUpOworICAgIG1JbmZvU2luayA8PCAiJyIgPDwgdG9rZW4gPDwgIicgOiAiIDw8IHJl
YXNvbiA8PCAiXG4iOworfQorCit2b2lkIFREaWFnbm9zdGljczo6Z2xvYmFsRXJyb3IoY29uc3Qg
Y2hhciAqbWVzc2FnZSkKK3sKKyAgICArK21OdW1FcnJvcnM7CisgICAgbUluZm9TaW5rLnByZWZp
eChTSF9FUlJPUik7CisgICAgbUluZm9TaW5rIDw8IG1lc3NhZ2UgPDwgIlxuIjsKK30KKwordm9p
ZCBURGlhZ25vc3RpY3M6OmVycm9yKGNvbnN0IHBwOjpTb3VyY2VMb2NhdGlvbiAmbG9jLCBjb25z
dCBjaGFyICpyZWFzb24sIGNvbnN0IGNoYXIgKnRva2VuKQoreworICAgIHdyaXRlSW5mbyhTSF9F
UlJPUiwgbG9jLCByZWFzb24sIHRva2VuKTsKIH0KIAotdm9pZCBURGlhZ25vc3RpY3M6OmVycm9y
KGNvbnN0IFRTb3VyY2VMb2MgJmxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyICpyZWFzb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9rZW4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXh0cmFJbmZvKQordm9pZCBU
RGlhZ25vc3RpY3M6Ondhcm5pbmcoY29uc3QgcHA6OlNvdXJjZUxvY2F0aW9uICZsb2MsIGNvbnN0
IGNoYXIgKnJlYXNvbiwgY29uc3QgY2hhciAqdG9rZW4pCit7CisgICAgd3JpdGVJbmZvKFNIX1dB
Uk5JTkcsIGxvYywgcmVhc29uLCB0b2tlbik7Cit9CisKK3ZvaWQgVERpYWdub3N0aWNzOjplcnJv
cihjb25zdCBUU291cmNlTG9jICZsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29uc3QgY2hhciAq
dG9rZW4pCiB7CiAgICAgcHA6OlNvdXJjZUxvY2F0aW9uIHNyY0xvYzsKICAgICBzcmNMb2MuZmls
ZSA9IGxvYy5maXJzdF9maWxlOwogICAgIHNyY0xvYy5saW5lID0gbG9jLmZpcnN0X2xpbmU7Ci0g
ICAgd3JpdGVJbmZvKHBwOjpEaWFnbm9zdGljczo6UFBfRVJST1IsIHNyY0xvYywgcmVhc29uLCB0
b2tlbiwgZXh0cmFJbmZvKTsKKyAgICBlcnJvcihzcmNMb2MsIHJlYXNvbiwgdG9rZW4pOwogfQog
Ci12b2lkIFREaWFnbm9zdGljczo6d2FybmluZyhjb25zdCBUU291cmNlTG9jICZsb2MsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKmV4dHJhSW5mbykKK3ZvaWQgVERpYWdub3N0aWNzOjp3YXJuaW5nKGNv
bnN0IFRTb3VyY2VMb2MgJmxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyICp0b2tl
bikKIHsKICAgICBwcDo6U291cmNlTG9jYXRpb24gc3JjTG9jOwogICAgIHNyY0xvYy5maWxlID0g
bG9jLmZpcnN0X2ZpbGU7CiAgICAgc3JjTG9jLmxpbmUgPSBsb2MuZmlyc3RfbGluZTsKLSAgICB3
cml0ZUluZm8ocHA6OkRpYWdub3N0aWNzOjpQUF9XQVJOSU5HLCBzcmNMb2MsIHJlYXNvbiwgdG9r
ZW4sIGV4dHJhSW5mbyk7CisgICAgd2FybmluZyhzcmNMb2MsIHJlYXNvbiwgdG9rZW4pOwogfQog
Ci12b2lkIFREaWFnbm9zdGljczo6cHJpbnQoSUQgaWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgcHA6OlNvdXJjZUxvY2F0aW9uJiBsb2MsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRleHQpCit2b2lkIFREaWFnbm9zdGljczo6cHJpbnQoSUQg
aWQsIGNvbnN0IHBwOjpTb3VyY2VMb2NhdGlvbiAmbG9jLCBjb25zdCBzdGQ6OnN0cmluZyAmdGV4
dCkKIHsKLSAgICB3cml0ZUluZm8oc2V2ZXJpdHkoaWQpLCBsb2MsIG1lc3NhZ2UoaWQpLCB0ZXh0
LCAiIik7CisgICAgd3JpdGVJbmZvKGlzRXJyb3IoaWQpID8gU0hfRVJST1IgOiBTSF9XQVJOSU5H
LCBsb2MsIG1lc3NhZ2UoaWQpLCB0ZXh0LmNfc3RyKCkpOwogfQorCit2b2lkIFREaWFnbm9zdGlj
czo6cmVzZXRFcnJvckNvdW50KCkKK3sKKyAgICBtTnVtRXJyb3JzICAgPSAwOworICAgIG1OdW1X
YXJuaW5ncyA9IDA7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlhZ25vc3RpY3MuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0
aWNzLmgKaW5kZXggYmI1MjFkYTFhMmE3Y2ZiMTE2ZWUzZGUyYTk2MzUyYjE5YTMxMDJmZC4uNzhi
ZmI3NWNlZTZmY2I5NDI4NTkxOWI4Njg0NGQxMDhmODIyMWNkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlhZ25vc3RpY3MuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9EaWFn
bm9zdGljcy5oCkBAIC05LDQwICs5LDQ3IEBACiAKICNpbmNsdWRlICJjb21tb24vYW5nbGV1dGls
cy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaWFnbm9zdGljc0Jhc2UuaCIK
KyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1NldmVyaXR5LmgiCiAKLWNsYXNzIFRJbmZv
U2luazsKK25hbWVzcGFjZSBzaAoreworCitjbGFzcyBUSW5mb1NpbmtCYXNlOwogc3RydWN0IFRT
b3VyY2VMb2M7CiAKIGNsYXNzIFREaWFnbm9zdGljcyA6IHB1YmxpYyBwcDo6RGlhZ25vc3RpY3Ms
IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6Ci0gICAgVERpYWdub3N0aWNzKFRJbmZv
U2luayYgaW5mb1NpbmspOworICAgIFREaWFnbm9zdGljcyhUSW5mb1NpbmtCYXNlICZpbmZvU2lu
ayk7CiAgICAgflREaWFnbm9zdGljcygpIG92ZXJyaWRlOwogCi0gICAgVEluZm9TaW5rJiBpbmZv
U2luaygpIHsgcmV0dXJuIG1JbmZvU2luazsgfQotCiAgICAgaW50IG51bUVycm9ycygpIGNvbnN0
IHsgcmV0dXJuIG1OdW1FcnJvcnM7IH0KICAgICBpbnQgbnVtV2FybmluZ3MoKSBjb25zdCB7IHJl
dHVybiBtTnVtV2FybmluZ3M7IH0KIAotICAgIHZvaWQgd3JpdGVJbmZvKFNldmVyaXR5IHNldmVy
aXR5LAotICAgICAgICAgICAgICAgICAgIGNvbnN0IHBwOjpTb3VyY2VMb2NhdGlvbiYgbG9jLAot
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiByZWFzb24sCi0gICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRva2VuLAotICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBleHRyYSk7CisgICAgdm9pZCBlcnJvcihjb25zdCBwcDo6U291cmNl
TG9jYXRpb24gJmxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyICp0b2tlbik7Cisg
ICAgdm9pZCB3YXJuaW5nKGNvbnN0IHBwOjpTb3VyY2VMb2NhdGlvbiAmbG9jLCBjb25zdCBjaGFy
ICpyZWFzb24sIGNvbnN0IGNoYXIgKnRva2VuKTsKKworICAgIHZvaWQgZXJyb3IoY29uc3QgVFNv
dXJjZUxvYyAmbG9jLCBjb25zdCBjaGFyICpyZWFzb24sIGNvbnN0IGNoYXIgKnRva2VuKTsKKyAg
ICB2b2lkIHdhcm5pbmcoY29uc3QgVFNvdXJjZUxvYyAmbG9jLCBjb25zdCBjaGFyICpyZWFzb24s
IGNvbnN0IGNoYXIgKnRva2VuKTsKIAotICAgIHZvaWQgZXJyb3IoY29uc3QgVFNvdXJjZUxvYyAm
bG9jLCBjb25zdCBjaGFyICpyZWFzb24sIGNvbnN0IGNoYXIgKnRva2VuLCBjb25zdCBjaGFyICpl
eHRyYUluZm8pOwotICAgIHZvaWQgd2FybmluZyhjb25zdCBUU291cmNlTG9jICZsb2MsCi0gICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbiwKLSAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciAqdG9rZW4sCi0gICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmV4dHJhSW5mbyk7Cisg
ICAgdm9pZCBnbG9iYWxFcnJvcihjb25zdCBjaGFyICptZXNzYWdlKTsKKworICAgIHZvaWQgcmVz
ZXRFcnJvckNvdW50KCk7CiAKICAgcHJvdGVjdGVkOgorICAgIHZvaWQgd3JpdGVJbmZvKFNldmVy
aXR5IHNldmVyaXR5LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IHBwOjpTb3VyY2VMb2NhdGlv
biAmbG9jLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbiwKKyAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbik7CisKICAgICB2b2lkIHByaW50KElEIGlkLCBj
b25zdCBwcDo6U291cmNlTG9jYXRpb24gJmxvYywgY29uc3Qgc3RkOjpzdHJpbmcgJnRleHQpIG92
ZXJyaWRlOwogCiAgIHByaXZhdGU6Ci0gICAgVEluZm9TaW5rJiBtSW5mb1Npbms7CisgICAgVElu
Zm9TaW5rQmFzZSAmbUluZm9TaW5rOwogICAgIGludCBtTnVtRXJyb3JzOwogICAgIGludCBtTnVt
V2FybmluZ3M7CiB9OwogCit9ICAvLyBuYW1lc3BhY2Ugc2gKKwogI2VuZGlmICAvLyBDT01QSUxF
Ul9UUkFOU0xBVE9SX0RJQUdOT1NUSUNTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9EaXJlY3RpdmVIYW5kbGVyLmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RpcmVjdGl2ZUhh
bmRsZXIuY3BwCmluZGV4IGY4MDgxZWNkNjU5YmIyZmZjMDc5NjY0MDg2MWQ5MTE4ZTZiMDBiYWMu
LmJiY2FkMjViNTRlZDc5ZDMzZGQ0NzIyYWQ3Yzc4NmIyZjExYmY0MTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RpcmVjdGl2ZUhh
bmRsZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL0RpcmVjdGl2ZUhhbmRsZXIuY3BwCkBAIC0xMiwxNyArMTIsMjQgQEAKICNpbmNsdWRl
ICJjb21tb24vZGVidWcuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0
aWNzLmgiCiAKLXN0YXRpYyBUQmVoYXZpb3IgZ2V0QmVoYXZpb3IoY29uc3Qgc3RkOjpzdHJpbmcm
IHN0cikKK25hbWVzcGFjZSBzaAoreworCitzdGF0aWMgVEJlaGF2aW9yIGdldEJlaGF2aW9yKGNv
bnN0IHN0ZDo6c3RyaW5nICZzdHIpCiB7CiAgICAgY29uc3QgY2hhciBrUmVxdWlyZVtdID0gInJl
cXVpcmUiOwotICAgIGNvbnN0IGNoYXIga0VuYWJsZVtdID0gImVuYWJsZSI7CisgICAgY29uc3Qg
Y2hhciBrRW5hYmxlW10gID0gImVuYWJsZSI7CiAgICAgY29uc3QgY2hhciBrRGlzYWJsZVtdID0g
ImRpc2FibGUiOwotICAgIGNvbnN0IGNoYXIga1dhcm5bXSA9ICJ3YXJuIjsKLQotICAgIGlmIChz
dHIgPT0ga1JlcXVpcmUpIHJldHVybiBFQmhSZXF1aXJlOwotICAgIGVsc2UgaWYgKHN0ciA9PSBr
RW5hYmxlKSByZXR1cm4gRUJoRW5hYmxlOwotICAgIGVsc2UgaWYgKHN0ciA9PSBrRGlzYWJsZSkg
cmV0dXJuIEVCaERpc2FibGU7Ci0gICAgZWxzZSBpZiAoc3RyID09IGtXYXJuKSByZXR1cm4gRUJo
V2FybjsKKyAgICBjb25zdCBjaGFyIGtXYXJuW10gICAgPSAid2FybiI7CisKKyAgICBpZiAoc3Ry
ID09IGtSZXF1aXJlKQorICAgICAgICByZXR1cm4gRUJoUmVxdWlyZTsKKyAgICBlbHNlIGlmIChz
dHIgPT0ga0VuYWJsZSkKKyAgICAgICAgcmV0dXJuIEVCaEVuYWJsZTsKKyAgICBlbHNlIGlmIChz
dHIgPT0ga0Rpc2FibGUpCisgICAgICAgIHJldHVybiBFQmhEaXNhYmxlOworICAgIGVsc2UgaWYg
KHN0ciA9PSBrV2FybikKKyAgICAgICAgcmV0dXJuIEVCaFdhcm47CiAgICAgcmV0dXJuIEVCaFVu
ZGVmaW5lZDsKIH0KIApAQCAtNDMsMzAgKzUwLDI5IEBAIFREaXJlY3RpdmVIYW5kbGVyOjp+VERp
cmVjdGl2ZUhhbmRsZXIoKQogewogfQogCi12b2lkIFREaXJlY3RpdmVIYW5kbGVyOjpoYW5kbGVF
cnJvcihjb25zdCBwcDo6U291cmNlTG9jYXRpb24mIGxvYywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtc2cpCit2b2lkIFREaXJlY3RpdmVI
YW5kbGVyOjpoYW5kbGVFcnJvcihjb25zdCBwcDo6U291cmNlTG9jYXRpb24gJmxvYywgY29uc3Qg
c3RkOjpzdHJpbmcgJm1zZykKIHsKLSAgICBtRGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFn
bm9zdGljczo6UFBfRVJST1IsIGxvYywgbXNnLCAiIiwgIiIpOworICAgIG1EaWFnbm9zdGljcy5l
cnJvcihsb2MsIG1zZy5jX3N0cigpLCAiIik7CiB9CiAKLXZvaWQgVERpcmVjdGl2ZUhhbmRsZXI6
OmhhbmRsZVByYWdtYShjb25zdCBwcDo6U291cmNlTG9jYXRpb24mIGxvYywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUs
Cit2b2lkIFREaXJlY3RpdmVIYW5kbGVyOjpoYW5kbGVQcmFnbWEoY29uc3QgcHA6OlNvdXJjZUxv
Y2F0aW9uICZsb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgc3RkZ2wpCiB7CiAgICAgaWYgKHN0ZGdsKQogICAgIHsKICAgICAgICAgY29u
c3QgY2hhciBrSW52YXJpYW50W10gPSAiaW52YXJpYW50IjsKLSAgICAgICAgY29uc3QgY2hhciBr
QWxsW10gPSAiYWxsIjsKKyAgICAgICAgY29uc3QgY2hhciBrQWxsW10gICAgICAgPSAiYWxsIjsK
IAogICAgICAgICBpZiAobmFtZSA9PSBrSW52YXJpYW50ICYmIHZhbHVlID09IGtBbGwpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmIChtU2hhZGVyVmVyc2lvbiA9PSAzMDAgJiYgbVNoYWRlclR5
cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IC8vIEVTU0wgMy4wMC40IHNlY3Rpb24gNC42LjEKLSAgICAgICAgICAgICAgICBtRGlhZ25vc3Rp
Y3Mud3JpdGVJbmZvKAotICAgICAgICAgICAgICAgICAgICBwcDo6RGlhZ25vc3RpY3M6OlBQX0VS
Uk9SLCBsb2MsCi0gICAgICAgICAgICAgICAgICAgICIjcHJhZ21hIFNUREdMIGludmFyaWFudChh
bGwpIGNhbiBub3QgYmUgdXNlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCBuYW1lLCB2YWx1ZSk7Cisg
ICAgICAgICAgICAgICAgbURpYWdub3N0aWNzLmVycm9yKAorICAgICAgICAgICAgICAgICAgICBs
b2MsICIjcHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpIGNhbiBub3QgYmUgdXNlZCBpbiBmcmFn
bWVudCBzaGFkZXIiLAorICAgICAgICAgICAgICAgICAgICBuYW1lLmNfc3RyKCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgbVByYWdtYS5zdGRnbC5pbnZhcmlhbnRBbGwgPSB0cnVlOwog
ICAgICAgICB9CkBAIC03NywzMCArODMsMzkgQEAgdm9pZCBURGlyZWN0aXZlSGFuZGxlcjo6aGFu
ZGxlUHJhZ21hKGNvbnN0IHBwOjpTb3VyY2VMb2NhdGlvbiYgbG9jLAogICAgIH0KICAgICBlbHNl
CiAgICAgewotICAgICAgICBjb25zdCBjaGFyIGtPcHRpbWl6ZVtdID0gIm9wdGltaXplIjsKLSAg
ICAgICAgY29uc3QgY2hhciBrRGVidWdbXSA9ICJkZWJ1ZyI7CisgICAgICAgIGNvbnN0IGNoYXIg
a09wdGltaXplW10gICAgICAgICAgICAgPSAib3B0aW1pemUiOworICAgICAgICBjb25zdCBjaGFy
IGtEZWJ1Z1tdICAgICAgICAgICAgICAgID0gImRlYnVnIjsKICAgICAgICAgY29uc3QgY2hhciBr
RGVidWdTaGFkZXJQcmVjaXNpb25bXSA9ICJ3ZWJnbF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9uIjsK
LSAgICAgICAgY29uc3QgY2hhciBrT25bXSA9ICJvbiI7Ci0gICAgICAgIGNvbnN0IGNoYXIga09m
ZltdID0gIm9mZiI7CisgICAgICAgIGNvbnN0IGNoYXIga09uW10gICAgICAgICAgICAgICAgICAg
PSAib24iOworICAgICAgICBjb25zdCBjaGFyIGtPZmZbXSAgICAgICAgICAgICAgICAgID0gIm9m
ZiI7CiAKICAgICAgICAgYm9vbCBpbnZhbGlkVmFsdWUgPSBmYWxzZTsKICAgICAgICAgaWYgKG5h
bWUgPT0ga09wdGltaXplKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT0ga09u
KSBtUHJhZ21hLm9wdGltaXplID0gdHJ1ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09
IGtPZmYpIG1QcmFnbWEub3B0aW1pemUgPSBmYWxzZTsKLSAgICAgICAgICAgIGVsc2UgaW52YWxp
ZFZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBrT24pCisgICAgICAgICAg
ICAgICAgbVByYWdtYS5vcHRpbWl6ZSA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1
ZSA9PSBrT2ZmKQorICAgICAgICAgICAgICAgIG1QcmFnbWEub3B0aW1pemUgPSBmYWxzZTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpbnZhbGlkVmFsdWUgPSB0cnVlOwogICAg
ICAgICB9CiAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0ga0RlYnVnKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAodmFsdWUgPT0ga09uKSBtUHJhZ21hLmRlYnVnID0gdHJ1ZTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKHZhbHVlID09IGtPZmYpIG1QcmFnbWEuZGVidWcgPSBmYWxzZTsKLSAgICAg
ICAgICAgIGVsc2UgaW52YWxpZFZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9
PSBrT24pCisgICAgICAgICAgICAgICAgbVByYWdtYS5kZWJ1ZyA9IHRydWU7CisgICAgICAgICAg
ICBlbHNlIGlmICh2YWx1ZSA9PSBrT2ZmKQorICAgICAgICAgICAgICAgIG1QcmFnbWEuZGVidWcg
PSBmYWxzZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpbnZhbGlkVmFsdWUg
PSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0ga0RlYnVnU2hhZGVy
UHJlY2lzaW9uICYmIG1EZWJ1Z1NoYWRlclByZWNpc2lvblN1cHBvcnRlZCkKICAgICAgICAgewot
ICAgICAgICAgICAgaWYgKHZhbHVlID09IGtPbikgbVByYWdtYS5kZWJ1Z1NoYWRlclByZWNpc2lv
biA9IHRydWU7Ci0gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBrT2ZmKSBtUHJhZ21hLmRl
YnVnU2hhZGVyUHJlY2lzaW9uID0gZmFsc2U7Ci0gICAgICAgICAgICBlbHNlIGludmFsaWRWYWx1
ZSA9IHRydWU7CisgICAgICAgICAgICBpZiAodmFsdWUgPT0ga09uKQorICAgICAgICAgICAgICAg
IG1QcmFnbWEuZGVidWdTaGFkZXJQcmVjaXNpb24gPSB0cnVlOworICAgICAgICAgICAgZWxzZSBp
ZiAodmFsdWUgPT0ga09mZikKKyAgICAgICAgICAgICAgICBtUHJhZ21hLmRlYnVnU2hhZGVyUHJl
Y2lzaW9uID0gZmFsc2U7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaW52YWxp
ZFZhbHVlID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKQEAgLTEx
MCwyNCArMTI1LDIxIEBAIHZvaWQgVERpcmVjdGl2ZUhhbmRsZXI6OmhhbmRsZVByYWdtYShjb25z
dCBwcDo6U291cmNlTG9jYXRpb24mIGxvYywKIAogICAgICAgICBpZiAoaW52YWxpZFZhbHVlKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBtRGlhZ25vc3RpY3Mud3JpdGVJbmZvKHBwOjpEaWFnbm9z
dGljczo6UFBfRVJST1IsIGxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImludmFsaWQgcHJhZ21hIHZhbHVlIiwgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICInb24nIG9yICdvZmYnIGV4cGVjdGVkIik7CisgICAgICAgICAgICBtRGlhZ25v
c3RpY3MuZXJyb3IobG9jLCAiaW52YWxpZCBwcmFnbWEgdmFsdWUgLSAnb24nIG9yICdvZmYnIGV4
cGVjdGVkIiwgdmFsdWUuY19zdHIoKSk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgVERp
cmVjdGl2ZUhhbmRsZXI6OmhhbmRsZUV4dGVuc2lvbihjb25zdCBwcDo6U291cmNlTG9jYXRpb24m
IGxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgYmVoYXZpb3IpCit2b2lkIFREaXJlY3RpdmVIYW5kbGVyOjpoYW5k
bGVFeHRlbnNpb24oY29uc3QgcHA6OlNvdXJjZUxvY2F0aW9uICZsb2MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmJl
aGF2aW9yKQogewogICAgIGNvbnN0IGNoYXIga0V4dEFsbFtdID0gImFsbCI7CiAKICAgICBUQmVo
YXZpb3IgYmVoYXZpb3JWYWwgPSBnZXRCZWhhdmlvcihiZWhhdmlvcik7CiAgICAgaWYgKGJlaGF2
aW9yVmFsID09IEVCaFVuZGVmaW5lZCkKICAgICB7Ci0gICAgICAgIG1EaWFnbm9zdGljcy53cml0
ZUluZm8ocHA6OkRpYWdub3N0aWNzOjpQUF9FUlJPUiwgbG9jLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJiZWhhdmlvciIsIG5hbWUsICJpbnZhbGlkIik7CisgICAgICAgIG1EaWFn
bm9zdGljcy5lcnJvcihsb2MsICJiZWhhdmlvciBpbnZhbGlkIiwgbmFtZS5jX3N0cigpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM1LDE1ICsxNDcsMTEgQEAgdm9pZCBURGlyZWN0
aXZlSGFuZGxlcjo6aGFuZGxlRXh0ZW5zaW9uKGNvbnN0IHBwOjpTb3VyY2VMb2NhdGlvbiYgbG9j
LAogICAgIHsKICAgICAgICAgaWYgKGJlaGF2aW9yVmFsID09IEVCaFJlcXVpcmUpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIG1EaWFnbm9zdGljcy53cml0ZUluZm8ocHA6OkRpYWdub3N0aWNzOjpQ
UF9FUlJPUiwgbG9jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXh0ZW5z
aW9uIiwgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBo
YXZlICdyZXF1aXJlJyBiZWhhdmlvciIpOworICAgICAgICAgICAgbURpYWdub3N0aWNzLmVycm9y
KGxvYywgImV4dGVuc2lvbiBjYW5ub3QgaGF2ZSAncmVxdWlyZScgYmVoYXZpb3IiLCBuYW1lLmNf
c3RyKCkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGJlaGF2aW9yVmFsID09IEVCaEVu
YWJsZSkKICAgICAgICAgewotICAgICAgICAgICAgbURpYWdub3N0aWNzLndyaXRlSW5mbyhwcDo6
RGlhZ25vc3RpY3M6OlBQX0VSUk9SLCBsb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJleHRlbnNpb24iLCBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiY2Fubm90IGhhdmUgJ2VuYWJsZScgYmVoYXZpb3IiKTsKKyAgICAgICAgICAgIG1EaWFn
bm9zdGljcy5lcnJvcihsb2MsICJleHRlbnNpb24gY2Fubm90IGhhdmUgJ2VuYWJsZScgYmVoYXZp
b3IiLCBuYW1lLmNfc3RyKCkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewpA
QCAtMTYxLDI2ICsxNjksMjMgQEAgdm9pZCBURGlyZWN0aXZlSGFuZGxlcjo6aGFuZGxlRXh0ZW5z
aW9uKGNvbnN0IHBwOjpTb3VyY2VMb2NhdGlvbiYgbG9jLAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgcHA6OkRpYWdub3N0aWNzOjpTZXZlcml0eSBzZXZlcml0eSA9IHBwOjpEaWFnbm9z
dGljczo6UFBfRVJST1I7Ci0gICAgc3dpdGNoIChiZWhhdmlvclZhbCkgewotICAgICAgY2FzZSBF
QmhSZXF1aXJlOgotICAgICAgICBzZXZlcml0eSA9IHBwOjpEaWFnbm9zdGljczo6UFBfRVJST1I7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFQmhFbmFibGU6Ci0gICAgICBjYXNlIEVCaFdh
cm46Ci0gICAgICBjYXNlIEVCaERpc2FibGU6Ci0gICAgICAgIHNldmVyaXR5ID0gcHA6OkRpYWdu
b3N0aWNzOjpQUF9XQVJOSU5HOwotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIGJyZWFrOworICAgIHN3aXRjaCAoYmVoYXZpb3JW
YWwpCisgICAgeworICAgICAgICBjYXNlIEVCaFJlcXVpcmU6CisgICAgICAgICAgICBtRGlhZ25v
c3RpY3MuZXJyb3IobG9jLCAiZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQiLCBuYW1lLmNfc3Ry
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUJoRW5hYmxlOgorICAgICAg
ICBjYXNlIEVCaFdhcm46CisgICAgICAgIGNhc2UgRUJoRGlzYWJsZToKKyAgICAgICAgICAgIG1E
aWFnbm9zdGljcy53YXJuaW5nKGxvYywgImV4dGVuc2lvbiBpcyBub3Qgc3VwcG9ydGVkIiwgbmFt
ZS5jX3N0cigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBtRGlh
Z25vc3RpY3Mud3JpdGVJbmZvKHNldmVyaXR5LCBsb2MsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZXh0ZW5zaW9uIiwgbmFtZSwgImlzIG5vdCBzdXBwb3J0ZWQiKTsKIH0KIAotdm9pZCBU
RGlyZWN0aXZlSGFuZGxlcjo6aGFuZGxlVmVyc2lvbihjb25zdCBwcDo6U291cmNlTG9jYXRpb24m
IGxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZlcnNpb24p
Cit2b2lkIFREaXJlY3RpdmVIYW5kbGVyOjpoYW5kbGVWZXJzaW9uKGNvbnN0IHBwOjpTb3VyY2VM
b2NhdGlvbiAmbG9jLCBpbnQgdmVyc2lvbikKIHsKICAgICBpZiAodmVyc2lvbiA9PSAxMDAgfHwg
dmVyc2lvbiA9PSAzMDAgfHwgdmVyc2lvbiA9PSAzMTApCiAgICAgewpAQCAtMTkxLDcgKzE5Niw4
IEBAIHZvaWQgVERpcmVjdGl2ZUhhbmRsZXI6OmhhbmRsZVZlcnNpb24oY29uc3QgcHA6OlNvdXJj
ZUxvY2F0aW9uJiBsb2MsCiAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cmVhbTsKICAgICAg
ICAgc3RyZWFtIDw8IHZlcnNpb247CiAgICAgICAgIHN0ZDo6c3RyaW5nIHN0ciA9IHN0cmVhbS5z
dHIoKTsKLSAgICAgICAgbURpYWdub3N0aWNzLndyaXRlSW5mbyhwcDo6RGlhZ25vc3RpY3M6OlBQ
X0VSUk9SLCBsb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb24gbnVt
YmVyIiwgc3RyLCAibm90IHN1cHBvcnRlZCIpOworICAgICAgICBtRGlhZ25vc3RpY3MuZXJyb3Io
bG9jLCAidmVyc2lvbiBudW1iZXIgbm90IHN1cHBvcnRlZCIsIHN0ci5jX3N0cigpKTsKICAgICB9
CiB9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlyZWN0aXZlSGFuZGxlci5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlyZWN0aXZlSGFuZGxl
ci5oCmluZGV4IDAwZWI0OTExNGU1ZTVmMmNlNDY3NjhmZWE2NjZhYmYyNzhiOGZhMmQuLjhlOGNi
OWJiZjZmZTcxZDBiNjc5YTAzMTRiYmExOGYzYTI4M2RmNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RpcmVjdGl2ZUhhbmRsZXIu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9E
aXJlY3RpdmVIYW5kbGVyLmgKQEAgLTEzLDYgKzEzLDggQEAKICNpbmNsdWRlICJjb21waWxlci9w
cmVwcm9jZXNzb3IvRGlyZWN0aXZlSGFuZGxlckJhc2UuaCIKICNpbmNsdWRlICJHTFNMQU5HL1No
YWRlckxhbmcuaCIKIAorbmFtZXNwYWNlIHNoCit7CiBjbGFzcyBURGlhZ25vc3RpY3M7CiAKIGNs
YXNzIFREaXJlY3RpdmVIYW5kbGVyIDogcHVibGljIHBwOjpEaXJlY3RpdmVIYW5kbGVyLCBhbmds
ZTo6Tm9uQ29weWFibGUKQEAgLTI1LDggKzI3LDggQEAgY2xhc3MgVERpcmVjdGl2ZUhhbmRsZXIg
OiBwdWJsaWMgcHA6OkRpcmVjdGl2ZUhhbmRsZXIsIGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgZGVidWdTaGFkZXJQcmVjaXNpb25TdXBwb3J0ZWQpOwogICAg
IH5URGlyZWN0aXZlSGFuZGxlcigpIG92ZXJyaWRlOwogCi0gICAgY29uc3QgVFByYWdtYSYgcHJh
Z21hKCkgY29uc3QgeyByZXR1cm4gbVByYWdtYTsgfQotICAgIGNvbnN0IFRFeHRlbnNpb25CZWhh
dmlvciYgZXh0ZW5zaW9uQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtRXh0ZW5zaW9uQmVoYXZp
b3I7IH0KKyAgICBjb25zdCBUUHJhZ21hICZwcmFnbWEoKSBjb25zdCB7IHJldHVybiBtUHJhZ21h
OyB9CisgICAgY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yICZleHRlbnNpb25CZWhhdmlvcigpIGNv
bnN0IHsgcmV0dXJuIG1FeHRlbnNpb25CZWhhdmlvcjsgfQogCiAgICAgdm9pZCBoYW5kbGVFcnJv
cihjb25zdCBwcDo6U291cmNlTG9jYXRpb24gJmxvYywgY29uc3Qgc3RkOjpzdHJpbmcgJm1zZykg
b3ZlcnJpZGU7CiAKQEAgLTQzLDExICs0NSwxMyBAQCBjbGFzcyBURGlyZWN0aXZlSGFuZGxlciA6
IHB1YmxpYyBwcDo6RGlyZWN0aXZlSGFuZGxlciwgYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgcHJp
dmF0ZToKICAgICBUUHJhZ21hIG1QcmFnbWE7Ci0gICAgVEV4dGVuc2lvbkJlaGF2aW9yJiBtRXh0
ZW5zaW9uQmVoYXZpb3I7Ci0gICAgVERpYWdub3N0aWNzJiBtRGlhZ25vc3RpY3M7Ci0gICAgaW50
JiBtU2hhZGVyVmVyc2lvbjsKKyAgICBURXh0ZW5zaW9uQmVoYXZpb3IgJm1FeHRlbnNpb25CZWhh
dmlvcjsKKyAgICBURGlhZ25vc3RpY3MgJm1EaWFnbm9zdGljczsKKyAgICBpbnQgJm1TaGFkZXJW
ZXJzaW9uOwogICAgIHNoOjpHTGVudW0gbVNoYWRlclR5cGU7CiAgICAgYm9vbCBtRGVidWdTaGFk
ZXJQcmVjaXNpb25TdXBwb3J0ZWQ7CiB9OwogCit9ICAvLyBuYW1lc3BhY2Ugc2gKKwogI2VuZGlm
ICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0RJUkVDVElWRUhBTkRMRVJfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVH
TEZyYWdDb2xvckJyb2FkY2FzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3QuY3BwCmluZGV4IGUz
NGUxZGMxYzA1YmViOTIxN2ZiNjZiZTY2MWIxZDM3MGZiZjJkOWEuLmE0ZWViOWI3ZTk3MGUwMzNk
MTFhOTQ1OGRmZmJkNWM3YTkwZmUxOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdC5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
RW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmNwcApAQCAtMTQsNiArMTQsOSBAQAogI2luY2x1
ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmgiCiAj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCiAKK25hbWVzcGFjZSBz
aAoreworCiBuYW1lc3BhY2UKIHsKIApAQCAtMTMwLDMgKzEzMyw1IEBAIHZvaWQgRW11bGF0ZUdM
RnJhZ0NvbG9yQnJvYWRjYXN0KFRJbnRlcm1Ob2RlICpyb290LAogICAgICAgICB9CiAgICAgfQog
fQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdC5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0
ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmgKaW5kZXggNjI3YzRjNjdmZTlkOGVkZGVlZTRmZWZiYmIx
MTgxMjcyZGU1NGUxNi4uMDllOGRhZTZkMWI0OTgxOGM3NzU3MTRlNmUxNDFhOTQ4NTM1NTY2MiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0
LmgKQEAgLTE1LDggKzE1LDYgQEAKIG5hbWVzcGFjZSBzaAogewogc3RydWN0IE91dHB1dFZhcmlh
YmxlOwotfQotCiBjbGFzcyBUSW50ZXJtTm9kZTsKIAogLy8gUmVwbGFjZSBhbGwgZ2xfRnJhZ0Nv
bG9yIHdpdGggZ2xfRnJhZ0RhdGFbMF0sIGFuZCBpbiB0aGUgZW5kIG9mIG1haW4oKSBmdW5jdGlv
biwKQEAgLTI0LDYgKzIyLDcgQEAgY2xhc3MgVEludGVybU5vZGU7CiAvLyBJZiBnbF9GcmFnQ29s
b3IgaXMgaW4gb3V0cHV0VmFyaWFibGVzLCBpdCBpcyByZXBsYWNlZCBieSBnbF9GcmFnRGF0YS4K
IHZvaWQgRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0KFRJbnRlcm1Ob2RlICpyb290LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heERyYXdCdWZmZXJzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c2g6Ok91dHB1dFZhcmlhYmxl
PiAqb3V0cHV0VmFyaWFibGVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6dmVjdG9yPE91dHB1dFZhcmlhYmxlPiAqb3V0cHV0VmFyaWFibGVzKTsKK30KIAogI2VuZGlm
ICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0VNVUxBVEVHTEZSQUdDT0xPUkJST0FEQ0FTVF9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvRW11bGF0ZVByZWNpc2lvbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlUHJlY2lzaW9uLmNwcAppbmRleCBhOGY2ZDY0MmViNDQz
MDQ2NTExZTkyZGJmNjdlZGJhYzVhYzUwNWU5Li44MGQ1YzFlZDMzZTg0MTIzZjcwYzY2MGE0NzUy
OTFmM2ZmMjU3Zjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlUHJlY2lzaW9uLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlUHJlY2lzaW9uLmNwcApA
QCAtOCw2ICs4LDkgQEAKIAogI2luY2x1ZGUgPG1lbW9yeT4KIAorbmFtZXNwYWNlIHNoCit7CisK
IG5hbWVzcGFjZQogewogCkBAIC00MjQsMTQgKzQyNywxNSBAQCBib29sIGNhblJvdW5kRmxvYXQo
Y29uc3QgVFR5cGUgJnR5cGUpCiAgICAgICAgICAgICh0eXBlLmdldFByZWNpc2lvbigpID09IEVi
cExvdyB8fCB0eXBlLmdldFByZWNpc2lvbigpID09IEVicE1lZGl1bSk7CiB9CiAKLVRJbnRlcm1B
Z2dyZWdhdGUgKmNyZWF0ZUludGVybmFsRnVuY3Rpb25DYWxsTm9kZShUU3RyaW5nIG5hbWUsIFRJ
bnRlcm1Ob2RlICpjaGlsZCkKK1RJbnRlcm1BZ2dyZWdhdGUgKmNyZWF0ZUludGVybmFsRnVuY3Rp
b25DYWxsTm9kZShjb25zdCBUVHlwZSAmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUU3RyaW5nIG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVNlcXVlbmNlICphcmd1bWVudHMp
CiB7Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqY2FsbE5vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0
ZSgpOwotICAgIGNhbGxOb2RlLT5zZXRPcChFT3BGdW5jdGlvbkNhbGwpOwotICAgIFROYW1lIG5h
bWVPYmooVEZ1bmN0aW9uOjptYW5nbGVOYW1lKG5hbWUpKTsKKyAgICBUTmFtZSBuYW1lT2JqKG5h
bWUpOwogICAgIG5hbWVPYmouc2V0SW50ZXJuYWwodHJ1ZSk7CisgICAgVEludGVybUFnZ3JlZ2F0
ZSAqY2FsbE5vZGUgPQorICAgICAgICBUSW50ZXJtQWdncmVnYXRlOjpDcmVhdGUodHlwZSwgRU9w
Q2FsbEludGVybmFsUmF3RnVuY3Rpb24sIGFyZ3VtZW50cyk7CiAgICAgY2FsbE5vZGUtPmdldEZ1
bmN0aW9uU3ltYm9sSW5mbygpLT5zZXROYW1lT2JqKG5hbWVPYmopOwotICAgIGNhbGxOb2RlLT5n
ZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soY2hpbGQpOwogICAgIHJldHVybiBjYWxsTm9kZTsKIH0K
IApAQCAtNDQxLDI2ICs0NDUsMjkgQEAgVEludGVybUFnZ3JlZ2F0ZSAqY3JlYXRlUm91bmRpbmdG
dW5jdGlvbkNhbGxOb2RlKFRJbnRlcm1UeXBlZCAqcm91bmRlZENoaWxkKQogICAgIGlmIChyb3Vu
ZGVkQ2hpbGQtPmdldFByZWNpc2lvbigpID09IEVicE1lZGl1bSkKICAgICAgICAgcm91bmRGdW5j
dGlvbk5hbWUgPSAiYW5nbGVfZnJtIjsKICAgICBlbHNlCi0gICAgICAgIHJvdW5kRnVuY3Rpb25O
YW1lID0gImFuZ2xlX2ZybCI7Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqY2FsbE5vZGUgPSBjcmVh
dGVJbnRlcm5hbEZ1bmN0aW9uQ2FsbE5vZGUocm91bmRGdW5jdGlvbk5hbWUsIHJvdW5kZWRDaGls
ZCk7Ci0gICAgY2FsbE5vZGUtPnNldFR5cGUocm91bmRlZENoaWxkLT5nZXRUeXBlKCkpOwotICAg
IHJldHVybiBjYWxsTm9kZTsKKyAgICAgICAgcm91bmRGdW5jdGlvbk5hbWUgICAgICA9ICJhbmds
ZV9mcmwiOworICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzID0gbmV3IFRJbnRlcm1TZXF1
ZW5jZSgpOworICAgIGFyZ3VtZW50cy0+cHVzaF9iYWNrKHJvdW5kZWRDaGlsZCk7CisgICAgcmV0
dXJuIGNyZWF0ZUludGVybmFsRnVuY3Rpb25DYWxsTm9kZShyb3VuZGVkQ2hpbGQtPmdldFR5cGUo
KSwgcm91bmRGdW5jdGlvbk5hbWUsIGFyZ3VtZW50cyk7CiB9CiAKLVRJbnRlcm1BZ2dyZWdhdGUg
KmNyZWF0ZUNvbXBvdW5kQXNzaWdubWVudEZ1bmN0aW9uQ2FsbE5vZGUoVEludGVybVR5cGVkICps
ZWZ0LCBUSW50ZXJtVHlwZWQgKnJpZ2h0LCBjb25zdCBjaGFyICpvcE5hbWVTdHIpCitUSW50ZXJt
QWdncmVnYXRlICpjcmVhdGVDb21wb3VuZEFzc2lnbm1lbnRGdW5jdGlvbkNhbGxOb2RlKFRJbnRl
cm1UeXBlZCAqbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpyaWdodCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqb3BO
YW1lU3RyKQogewogICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cnN0cjsKICAgICBpZiAobGVmdC0+
Z2V0UHJlY2lzaW9uKCkgPT0gRWJwTWVkaXVtKQogICAgICAgICBzdHJzdHIgPDwgImFuZ2xlX2Nv
bXBvdW5kXyIgPDwgb3BOYW1lU3RyIDw8ICJfZnJtIjsKICAgICBlbHNlCiAgICAgICAgIHN0cnN0
ciA8PCAiYW5nbGVfY29tcG91bmRfIiA8PCBvcE5hbWVTdHIgPDwgIl9mcmwiOwotICAgIFRTdHJp
bmcgZnVuY3Rpb25OYW1lID0gc3Ryc3RyLnN0cigpLmNfc3RyKCk7Ci0gICAgVEludGVybUFnZ3Jl
Z2F0ZSAqY2FsbE5vZGUgPSBjcmVhdGVJbnRlcm5hbEZ1bmN0aW9uQ2FsbE5vZGUoZnVuY3Rpb25O
YW1lLCBsZWZ0KTsKLSAgICBjYWxsTm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKHJpZ2h0
KTsKLSAgICByZXR1cm4gY2FsbE5vZGU7CisgICAgVFN0cmluZyBmdW5jdGlvbk5hbWUgICAgICAg
PSBzdHJzdHIuc3RyKCkuY19zdHIoKTsKKyAgICBUSW50ZXJtU2VxdWVuY2UgKmFyZ3VtZW50cyA9
IG5ldyBUSW50ZXJtU2VxdWVuY2UoKTsKKyAgICBhcmd1bWVudHMtPnB1c2hfYmFjayhsZWZ0KTsK
KyAgICBhcmd1bWVudHMtPnB1c2hfYmFjayhyaWdodCk7CisgICAgcmV0dXJuIGNyZWF0ZUludGVy
bmFsRnVuY3Rpb25DYWxsTm9kZShUVHlwZShFYnRWb2lkKSwgZnVuY3Rpb25OYW1lLCBhcmd1bWVu
dHMpOwogfQogCi1ib29sIHBhcmVudFVzZXNSZXN1bHQoVEludGVybU5vZGUqIHBhcmVudCwgVElu
dGVybU5vZGUqIG5vZGUpCitib29sIHBhcmVudFVzZXNSZXN1bHQoVEludGVybU5vZGUgKnBhcmVu
dCwgVEludGVybU5vZGUgKm5vZGUpCiB7CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgewpAQCAtNDg4
LDcgKzQ5NSw4IEBAIGJvb2wgcGFyZW50VXNlc1Jlc3VsdChUSW50ZXJtTm9kZSogcGFyZW50LCBU
SW50ZXJtTm9kZSogbm9kZSkKIEVtdWxhdGVQcmVjaXNpb246OkVtdWxhdGVQcmVjaXNpb24oY29u
c3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwgaW50IHNoYWRlclZlcnNpb24pCiAgICAgOiBU
TFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXIodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgc3ltYm9sVGFibGUsIHNo
YWRlclZlcnNpb24pLAogICAgICAgbURlY2xhcmluZ1ZhcmlhYmxlcyhmYWxzZSkKLXt9Cit7Cit9
CiAKIHZvaWQgRW11bGF0ZVByZWNpc2lvbjo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9k
ZSkKIHsKQEAgLTQ5OSw3ICs1MDcsNiBAQCB2b2lkIEVtdWxhdGVQcmVjaXNpb246OnZpc2l0U3lt
Ym9sKFRJbnRlcm1TeW1ib2wgKm5vZGUpCiAgICAgfQogfQogCi0KIGJvb2wgRW11bGF0ZVByZWNp
c2lvbjo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpCiB7CiAg
ICAgYm9vbCB2aXNpdENoaWxkcmVuID0gdHJ1ZTsKQEAgLTUxNiwxNDQgKzUyMywxMzggQEAgYm9v
bCBFbXVsYXRlUHJlY2lzaW9uOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFy
eSAqbm9kZSkKICAgICBpZiAodmlzaXQgIT0gUHJlVmlzaXQpCiAgICAgICAgIHJldHVybiB2aXNp
dENoaWxkcmVuOwogCi0gICAgY29uc3QgVFR5cGUmIHR5cGUgPSBub2RlLT5nZXRUeXBlKCk7Ci0g
ICAgYm9vbCByb3VuZEZsb2F0ID0gY2FuUm91bmRGbG9hdCh0eXBlKTsKLQotICAgIGlmIChyb3Vu
ZEZsb2F0KSB7Ci0gICAgICAgIHN3aXRjaCAob3ApIHsKLSAgICAgICAgICAvLyBNYXRoIG9wZXJh
dG9ycyB0aGF0IGNhbiByZXN1bHQgaW4gYSBmbG9hdCBtYXkgbmVlZCB0byBhcHBseSByb3VuZGlu
ZyB0byB0aGUgcmV0dXJuCi0gICAgICAgICAgLy8gdmFsdWUuIE5vdGUgdGhhdCBpbiB0aGUgY2Fz
ZSBvZiBhc3NpZ25tZW50LCB0aGUgcm91bmRpbmcgaXMgYXBwbGllZCB0byBpdHMgcmV0dXJuCi0g
ICAgICAgICAgLy8gdmFsdWUgaGVyZSwgbm90IHRoZSB2YWx1ZSBiZWluZyBhc3NpZ25lZC4KLSAg
ICAgICAgICBjYXNlIEVPcEFzc2lnbjoKLSAgICAgICAgICBjYXNlIEVPcEFkZDoKLSAgICAgICAg
ICBjYXNlIEVPcFN1YjoKLSAgICAgICAgICBjYXNlIEVPcE11bDoKLSAgICAgICAgICBjYXNlIEVP
cERpdjoKLSAgICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzU2NhbGFyOgotICAgICAgICAgIGNh
c2UgRU9wVmVjdG9yVGltZXNNYXRyaXg6Ci0gICAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1Zl
Y3RvcjoKLSAgICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzU2NhbGFyOgotICAgICAgICAgIGNh
c2UgRU9wTWF0cml4VGltZXNNYXRyaXg6Ci0gICAgICAgICAgewotICAgICAgICAgICAgVEludGVy
bU5vZGUgKnBhcmVudCA9IGdldFBhcmVudE5vZGUoKTsKLSAgICAgICAgICAgIGlmICghcGFyZW50
VXNlc1Jlc3VsdChwYXJlbnQsIG5vZGUpKQorICAgIGNvbnN0IFRUeXBlICZ0eXBlID0gbm9kZS0+
Z2V0VHlwZSgpOworICAgIGJvb2wgcm91bmRGbG9hdCAgID0gY2FuUm91bmRGbG9hdCh0eXBlKTsK
KworICAgIGlmIChyb3VuZEZsb2F0KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChvcCkKKyAgICAg
ICAgeworICAgICAgICAgICAgLy8gTWF0aCBvcGVyYXRvcnMgdGhhdCBjYW4gcmVzdWx0IGluIGEg
ZmxvYXQgbWF5IG5lZWQgdG8gYXBwbHkgcm91bmRpbmcgdG8gdGhlIHJldHVybgorICAgICAgICAg
ICAgLy8gdmFsdWUuIE5vdGUgdGhhdCBpbiB0aGUgY2FzZSBvZiBhc3NpZ25tZW50LCB0aGUgcm91
bmRpbmcgaXMgYXBwbGllZCB0byBpdHMgcmV0dXJuCisgICAgICAgICAgICAvLyB2YWx1ZSBoZXJl
LCBub3QgdGhlIHZhbHVlIGJlaW5nIGFzc2lnbmVkLgorICAgICAgICAgICAgY2FzZSBFT3BBc3Np
Z246CisgICAgICAgICAgICBjYXNlIEVPcEFkZDoKKyAgICAgICAgICAgIGNhc2UgRU9wU3ViOgor
ICAgICAgICAgICAgY2FzZSBFT3BNdWw6CisgICAgICAgICAgICBjYXNlIEVPcERpdjoKKyAgICAg
ICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2FsYXI6CisgICAgICAgICAgICBjYXNlIEVPcFZl
Y3RvclRpbWVzTWF0cml4OgorICAgICAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1ZlY3RvcjoK
KyAgICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXI6CisgICAgICAgICAgICBjYXNl
IEVPcE1hdHJpeFRpbWVzTWF0cml4OgogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFRJ
bnRlcm1Ob2RlICpwYXJlbnQgPSBnZXRQYXJlbnROb2RlKCk7CisgICAgICAgICAgICAgICAgaWYg
KCFwYXJlbnRVc2VzUmVzdWx0KHBhcmVudCwgbm9kZSkpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50ID0gY3JlYXRlUm91bmRpbmdGdW5jdGlvbkNhbGxO
b2RlKG5vZGUpOworICAgICAgICAgICAgICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgcmVwbGFj
ZW1lbnQsIE9yaWdpbmFsTm9kZTo6QkVDT01FU19DSElMRCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQg
PSBjcmVhdGVSb3VuZGluZ0Z1bmN0aW9uQ2FsbE5vZGUobm9kZSk7Ci0gICAgICAgICAgICBxdWV1
ZVJlcGxhY2VtZW50KG5vZGUsIHJlcGxhY2VtZW50LCBPcmlnaW5hbE5vZGU6OkJFQ09NRVNfQ0hJ
TEQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgLy8gQ29t
cG91bmQgYXNzaWdubWVudCBjYXNlcyBuZWVkIHRvIHJlcGxhY2UgdGhlIG9wZXJhdG9yIHdpdGgg
YSBmdW5jdGlvbiBjYWxsLgotICAgICAgICAgIGNhc2UgRU9wQWRkQXNzaWduOgotICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgbUVtdWxhdGVDb21wb3VuZEFkZC5pbnNlcnQoCi0gICAgICAgICAg
ICAgICAgICBUeXBlUGFpcih0eXBlLmdldEJ1aWx0SW5UeXBlTmFtZVN0cmluZygpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0UmlnaHQoKS0+Z2V0VHlwZSgpLmdldEJ1aWx0
SW5UeXBlTmFtZVN0cmluZygpKSk7Ci0gICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpyZXBsYWNl
bWVudCA9IGNyZWF0ZUNvbXBvdW5kQXNzaWdubWVudEZ1bmN0aW9uQ2FsbE5vZGUoCi0gICAgICAg
ICAgICAgICAgICBub2RlLT5nZXRMZWZ0KCksIG5vZGUtPmdldFJpZ2h0KCksICJhZGQiKTsKLSAg
ICAgICAgICAgICAgcXVldWVSZXBsYWNlbWVudChub2RlLCByZXBsYWNlbWVudCwgT3JpZ2luYWxO
b2RlOjpJU19EUk9QUEVEKTsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAg
ICAgICAgIGNhc2UgRU9wU3ViQXNzaWduOgotICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbUVt
dWxhdGVDb21wb3VuZFN1Yi5pbnNlcnQoCi0gICAgICAgICAgICAgICAgICBUeXBlUGFpcih0eXBl
LmdldEJ1aWx0SW5UeXBlTmFtZVN0cmluZygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZS0+Z2V0UmlnaHQoKS0+Z2V0VHlwZSgpLmdldEJ1aWx0SW5UeXBlTmFtZVN0cmluZygpKSk7
Ci0gICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCA9IGNyZWF0ZUNvbXBvdW5k
QXNzaWdubWVudEZ1bmN0aW9uQ2FsbE5vZGUoCi0gICAgICAgICAgICAgICAgICBub2RlLT5nZXRM
ZWZ0KCksIG5vZGUtPmdldFJpZ2h0KCksICJzdWIiKTsKLSAgICAgICAgICAgICAgcXVldWVSZXBs
YWNlbWVudChub2RlLCByZXBsYWNlbWVudCwgT3JpZ2luYWxOb2RlOjpJU19EUk9QUEVEKTsKLSAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgfQotICAgICAgICAgIGNhc2UgRU9wTXVsQXNz
aWduOgotICAgICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXhBc3NpZ246Ci0gICAgICAg
ICAgY2FzZSBFT3BWZWN0b3JUaW1lc1NjYWxhckFzc2lnbjoKLSAgICAgICAgICBjYXNlIEVPcE1h
dHJpeFRpbWVzU2NhbGFyQXNzaWduOgotICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRy
aXhBc3NpZ246Ci0gICAgICAgICAgewotICAgICAgICAgICAgICBtRW11bGF0ZUNvbXBvdW5kTXVs
Lmluc2VydCgKLSAgICAgICAgICAgICAgICAgIFR5cGVQYWlyKHR5cGUuZ2V0QnVpbHRJblR5cGVO
YW1lU3RyaW5nKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5nZXRSaWdodCgp
LT5nZXRUeXBlKCkuZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCkpKTsKLSAgICAgICAgICAgICAg
VEludGVybU5vZGUgKnJlcGxhY2VtZW50ID0gY3JlYXRlQ29tcG91bmRBc3NpZ25tZW50RnVuY3Rp
b25DYWxsTm9kZSgKLSAgICAgICAgICAgICAgICAgIG5vZGUtPmdldExlZnQoKSwgbm9kZS0+Z2V0
UmlnaHQoKSwgIm11bCIpOwotICAgICAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIHJl
cGxhY2VtZW50LCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOwotICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2FzZSBFT3BEaXZBc3NpZ246Ci0gICAgICAgICAg
ewotICAgICAgICAgICAgICBtRW11bGF0ZUNvbXBvdW5kRGl2Lmluc2VydCgKLSAgICAgICAgICAg
ICAgICAgIFR5cGVQYWlyKHR5cGUuZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBub2RlLT5nZXRSaWdodCgpLT5nZXRUeXBlKCkuZ2V0QnVpbHRJ
blR5cGVOYW1lU3RyaW5nKCkpKTsKLSAgICAgICAgICAgICAgVEludGVybU5vZGUgKnJlcGxhY2Vt
ZW50ID0gY3JlYXRlQ29tcG91bmRBc3NpZ25tZW50RnVuY3Rpb25DYWxsTm9kZSgKLSAgICAgICAg
ICAgICAgICAgIG5vZGUtPmdldExlZnQoKSwgbm9kZS0+Z2V0UmlnaHQoKSwgImRpdiIpOwotICAg
ICAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIHJlcGxhY2VtZW50LCBPcmlnaW5hbE5v
ZGU6OklTX0RST1BQRUQpOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIC8vIFRoZSByZXN0IG9mIHRoZSBiaW5hcnkgb3Bl
cmF0aW9ucyBzaG91bGQgbm90IG5lZWQgcHJlY2lzaW9uIGVtdWxhdGlvbi4KLSAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAvLyBDb21wb3VuZCBhc3NpZ25tZW50IGNhc2VzIG5lZWQg
dG8gcmVwbGFjZSB0aGUgb3BlcmF0b3Igd2l0aCBhIGZ1bmN0aW9uIGNhbGwuCisgICAgICAgICAg
ICBjYXNlIEVPcEFkZEFzc2lnbjoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtRW11
bGF0ZUNvbXBvdW5kQWRkLmluc2VydCgKKyAgICAgICAgICAgICAgICAgICAgVHlwZVBhaXIodHlw
ZS5nZXRCdWlsdEluVHlwZU5hbWVTdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+Z2V0UmlnaHQoKS0+Z2V0VHlwZSgpLmdldEJ1aWx0SW5UeXBlTmFtZVN0cmluZygp
KSk7CisgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50ID0gY3JlYXRlQ29t
cG91bmRBc3NpZ25tZW50RnVuY3Rpb25DYWxsTm9kZSgKKyAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+Z2V0TGVmdCgpLCBub2RlLT5nZXRSaWdodCgpLCAiYWRkIik7CisgICAgICAgICAgICAgICAg
cXVldWVSZXBsYWNlbWVudChub2RlLCByZXBsYWNlbWVudCwgT3JpZ2luYWxOb2RlOjpJU19EUk9Q
UEVEKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGNhc2UgRU9wU3ViQXNzaWduOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1FbXVs
YXRlQ29tcG91bmRTdWIuaW5zZXJ0KAorICAgICAgICAgICAgICAgICAgICBUeXBlUGFpcih0eXBl
LmdldEJ1aWx0SW5UeXBlTmFtZVN0cmluZygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLT5nZXRSaWdodCgpLT5nZXRUeXBlKCkuZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCkp
KTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQgPSBjcmVhdGVDb21w
b3VuZEFzc2lnbm1lbnRGdW5jdGlvbkNhbGxOb2RlKAorICAgICAgICAgICAgICAgICAgICBub2Rl
LT5nZXRMZWZ0KCksIG5vZGUtPmdldFJpZ2h0KCksICJzdWIiKTsKKyAgICAgICAgICAgICAgICBx
dWV1ZVJlcGxhY2VtZW50KG5vZGUsIHJlcGxhY2VtZW50LCBPcmlnaW5hbE5vZGU6OklTX0RST1BQ
RUQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
Y2FzZSBFT3BNdWxBc3NpZ246CisgICAgICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzTWF0cml4
QXNzaWduOgorICAgICAgICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc1NjYWxhckFzc2lnbjoKKyAg
ICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXJBc3NpZ246CisgICAgICAgICAgICBj
YXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4QXNzaWduOgorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIG1FbXVsYXRlQ29tcG91bmRNdWwuaW5zZXJ0KAorICAgICAgICAgICAgICAgICAgICBU
eXBlUGFpcih0eXBlLmdldEJ1aWx0SW5UeXBlTmFtZVN0cmluZygpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlLT5nZXRSaWdodCgpLT5nZXRUeXBlKCkuZ2V0QnVpbHRJblR5cGVO
YW1lU3RyaW5nKCkpKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQg
PSBjcmVhdGVDb21wb3VuZEFzc2lnbm1lbnRGdW5jdGlvbkNhbGxOb2RlKAorICAgICAgICAgICAg
ICAgICAgICBub2RlLT5nZXRMZWZ0KCksIG5vZGUtPmdldFJpZ2h0KCksICJtdWwiKTsKKyAgICAg
ICAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIHJlcGxhY2VtZW50LCBPcmlnaW5hbE5v
ZGU6OklTX0RST1BQRUQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgY2FzZSBFT3BEaXZBc3NpZ246CisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgbUVtdWxhdGVDb21wb3VuZERpdi5pbnNlcnQoCisgICAgICAgICAgICAgICAgICAgIFR5
cGVQYWlyKHR5cGUuZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmdldFJpZ2h0KCktPmdldFR5cGUoKS5nZXRCdWlsdEluVHlwZU5h
bWVTdHJpbmcoKSkpOworICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCA9
IGNyZWF0ZUNvbXBvdW5kQXNzaWdubWVudEZ1bmN0aW9uQ2FsbE5vZGUoCisgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmdldExlZnQoKSwgbm9kZS0+Z2V0UmlnaHQoKSwgImRpdiIpOworICAgICAg
ICAgICAgICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgcmVwbGFjZW1lbnQsIE9yaWdpbmFsTm9k
ZTo6SVNfRFJPUFBFRCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIC8vIFRoZSByZXN0IG9mIHRoZSBi
aW5hcnkgb3BlcmF0aW9ucyBzaG91bGQgbm90IG5lZWQgcHJlY2lzaW9uIGVtdWxhdGlvbi4KKyAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdmlzaXRD
aGlsZHJlbjsKIH0KIAorYm9vbCBFbXVsYXRlUHJlY2lzaW9uOjp2aXNpdERlY2xhcmF0aW9uKFZp
c2l0IHZpc2l0LCBUSW50ZXJtRGVjbGFyYXRpb24gKm5vZGUpCit7CisgICAgLy8gVmFyaWFibGUg
b3IgaW50ZXJmYWNlIGJsb2NrIGRlY2xhcmF0aW9uLgorICAgIGlmICh2aXNpdCA9PSBQcmVWaXNp
dCkKKyAgICB7CisgICAgICAgIG1EZWNsYXJpbmdWYXJpYWJsZXMgPSB0cnVlOworICAgIH0KKyAg
ICBlbHNlIGlmICh2aXNpdCA9PSBJblZpc2l0KQorICAgIHsKKyAgICAgICAgbURlY2xhcmluZ1Zh
cmlhYmxlcyA9IHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1EZWNsYXJp
bmdWYXJpYWJsZXMgPSBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
RW11bGF0ZVByZWNpc2lvbjo6dmlzaXRJbnZhcmlhbnREZWNsYXJhdGlvbihWaXNpdCB2aXNpdCwg
VEludGVybUludmFyaWFudERlY2xhcmF0aW9uICpub2RlKQoreworICAgIHJldHVybiBmYWxzZTsK
K30KKworYm9vbCBFbXVsYXRlUHJlY2lzaW9uOjp2aXNpdEZ1bmN0aW9uUHJvdG90eXBlKFZpc2l0
IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKm5vZGUpCit7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCiBib29sIEVtdWxhdGVQcmVjaXNpb246OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZp
c2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQogewogICAgIGJvb2wgdmlzaXRDaGlsZHJlbiA9
IHRydWU7CiAgICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQogICAgIHsKLSAgICAgIGNhc2UgRU9w
Q29uc3RydWN0U3RydWN0OgotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wUHJvdG90eXBl
OgotICAgICAgICB2aXNpdENoaWxkcmVuID0gZmFsc2U7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFT3BQYXJhbWV0ZXJzOgotICAgICAgICB2aXNpdENoaWxkcmVuID0gZmFsc2U7Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BJbnZhcmlhbnREZWNsYXJhdGlvbjoKLSAgICAgICAg
dmlzaXRDaGlsZHJlbiA9IGZhbHNlOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wRGVj
bGFyYXRpb246Ci0gICAgICAgIC8vIFZhcmlhYmxlIGRlY2xhcmF0aW9uLgotICAgICAgICBpZiAo
dmlzaXQgPT0gUHJlVmlzaXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1EZWNsYXJpbmdWYXJp
YWJsZXMgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHZpc2l0ID09IEluVmlz
aXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1EZWNsYXJpbmdWYXJpYWJsZXMgPSB0cnVlOwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgbURlY2xhcmlu
Z1ZhcmlhYmxlcyA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BGdW5jdGlvbkNhbGw6Ci0gICAgICB7Ci0gICAgICAgIC8vIEZ1bmN0aW9uIGNhbGwuCi0g
ICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8g
VXNlci1kZWZpbmVkIGZ1bmN0aW9uIHJldHVybiB2YWx1ZXMgYXJlIG5vdCByb3VuZGVkLCB0aGlz
IHJlbGllcyBvbiB0aGF0Ci0gICAgICAgICAgICAvLyBjYWxjdWxhdGlvbnMgcHJvZHVjaW5nIHRo
ZSB2YWx1ZSB3ZXJlIHJvdW5kZWQuCisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0U3RydWN0Ogor
ICAgICAgICBjYXNlIEVPcENhbGxJbnRlcm5hbFJhd0Z1bmN0aW9uOgorICAgICAgICBjYXNlIEVP
cENhbGxGdW5jdGlvbkluQVNUOgorICAgICAgICAgICAgLy8gVXNlci1kZWZpbmVkIGZ1bmN0aW9u
IHJldHVybiB2YWx1ZXMgYXJlIG5vdCByb3VuZGVkLiBUaGUgY2FsY3VsYXRpb25zIHRoYXQgcHJv
ZHVjZWQKKyAgICAgICAgICAgIC8vIHRoZSB2YWx1ZSBpbnNpZGUgdGhlIGZ1bmN0aW9uIGRlZmlu
aXRpb24gc2hvdWxkIGhhdmUgYmVlbiByb3VuZGVkLgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqcGFyZW50ID0gZ2V0UGFyZW50
Tm9kZSgpOwotICAgICAgICAgICAgaWYgKGNhblJvdW5kRmxvYXQobm9kZS0+Z2V0VHlwZSgpKSAm
JiAhaXNJbkZ1bmN0aW9uTWFwKG5vZGUpICYmCisgICAgICAgICAgICBpZiAoY2FuUm91bmRGbG9h
dChub2RlLT5nZXRUeXBlKCkpICYmIHZpc2l0ID09IFByZVZpc2l0ICYmCiAgICAgICAgICAgICAg
ICAgcGFyZW50VXNlc1Jlc3VsdChwYXJlbnQsIG5vZGUpKQogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCA9IGNyZWF0ZVJvdW5kaW5nRnVuY3Rp
b25DYWxsTm9kZShub2RlKTsKICAgICAgICAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUs
IHJlcGxhY2VtZW50LCBPcmlnaW5hbE5vZGU6OkJFQ09NRVNfQ0hJTEQpOwogICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgVEludGVybU5vZGUgKnBhcmVudCA9IGdldFBhcmVudE5vZGUoKTsKLSAgICAgICAgaWYg
KGNhblJvdW5kRmxvYXQobm9kZS0+Z2V0VHlwZSgpKSAmJiB2aXNpdCA9PSBQcmVWaXNpdCAmJiBw
YXJlbnRVc2VzUmVzdWx0KHBhcmVudCwgbm9kZSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFRJ
bnRlcm1Ob2RlICpyZXBsYWNlbWVudCA9IGNyZWF0ZVJvdW5kaW5nRnVuY3Rpb25DYWxsTm9kZShu
b2RlKTsKLSAgICAgICAgICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgcmVwbGFjZW1lbnQsIE9y
aWdpbmFsTm9kZTo6QkVDT01FU19DSElMRCk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHZpc2l0Q2hpbGRyZW47CiB9CkBA
IC02NjIsMjEgKzY2MywyMSBAQCBib29sIEVtdWxhdGVQcmVjaXNpb246OnZpc2l0VW5hcnkoVmlz
aXQgdmlzaXQsIFRJbnRlcm1VbmFyeSAqbm9kZSkKIHsKICAgICBzd2l0Y2ggKG5vZGUtPmdldE9w
KCkpCiAgICAgewotICAgICAgY2FzZSBFT3BOZWdhdGl2ZToKLSAgICAgIGNhc2UgRU9wVmVjdG9y
TG9naWNhbE5vdDoKLSAgICAgIGNhc2UgRU9wTG9naWNhbE5vdDoKLSAgICAgIGNhc2UgRU9wUG9z
dEluY3JlbWVudDoKLSAgICAgIGNhc2UgRU9wUG9zdERlY3JlbWVudDoKLSAgICAgIGNhc2UgRU9w
UHJlSW5jcmVtZW50OgotICAgICAgY2FzZSBFT3BQcmVEZWNyZW1lbnQ6Ci0gICAgICAgIGJyZWFr
OwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgaWYgKGNhblJvdW5kRmxvYXQobm9kZS0+Z2V0VHlw
ZSgpKSAmJiB2aXNpdCA9PSBQcmVWaXNpdCkKLSAgICAgICAgewotICAgICAgICAgICAgVEludGVy
bU5vZGUgKnJlcGxhY2VtZW50ID0gY3JlYXRlUm91bmRpbmdGdW5jdGlvbkNhbGxOb2RlKG5vZGUp
OwotICAgICAgICAgICAgcXVldWVSZXBsYWNlbWVudChub2RlLCByZXBsYWNlbWVudCwgT3JpZ2lu
YWxOb2RlOjpCRUNPTUVTX0NISUxEKTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBFT3BOZWdhdGl2ZToKKyAgICAgICAgY2FzZSBFT3BMb2dpY2FsTm90OgorICAgICAg
ICBjYXNlIEVPcFBvc3RJbmNyZW1lbnQ6CisgICAgICAgIGNhc2UgRU9wUG9zdERlY3JlbWVudDoK
KyAgICAgICAgY2FzZSBFT3BQcmVJbmNyZW1lbnQ6CisgICAgICAgIGNhc2UgRU9wUHJlRGVjcmVt
ZW50OgorICAgICAgICBjYXNlIEVPcExvZ2ljYWxOb3RDb21wb25lbnRXaXNlOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoY2FuUm91bmRGbG9h
dChub2RlLT5nZXRUeXBlKCkpICYmIHZpc2l0ID09IFByZVZpc2l0KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCA9IGNyZWF0ZVJvdW5kaW5n
RnVuY3Rpb25DYWxsTm9kZShub2RlKTsKKyAgICAgICAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50
KG5vZGUsIHJlcGxhY2VtZW50LCBPcmlnaW5hbE5vZGU6OkJFQ09NRVNfQ0hJTEQpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBA
IC03MTMsNiArNzE0LDggQEAgYm9vbCBFbXVsYXRlUHJlY2lzaW9uOjpTdXBwb3J0ZWRJbkxhbmd1
YWdlKGNvbnN0IFNoU2hhZGVyT3V0cHV0IG91dHB1dExhbmd1YWdlKQogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgLy8gT3RoZXIgbGFuZ3VhZ2VzIG5vdCB5ZXQgc3VwcG9ydGVkCiAgICAg
ICAgICAgICByZXR1cm4gKG91dHB1dExhbmd1YWdlID09IFNIX0dMU0xfQ09NUEFUSUJJTElUWV9P
VVRQVVQgfHwKLSAgICAgICAgICAgICAgICAgICAgSXNHTFNMMTMwT3JOZXdlcihvdXRwdXRMYW5n
dWFnZSkpOworICAgICAgICAgICAgICAgICAgICBzaDo6SXNHTFNMMTMwT3JOZXdlcihvdXRwdXRM
YW5ndWFnZSkpOwogICAgIH0KIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlUHJl
Y2lzaW9uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9FbXVsYXRlUHJlY2lzaW9uLmgKaW5kZXggZjIzZTQwYmU3ZjU5ZWRmM2VlYjgwNTIwMmJlMjA2
Yjk0NmM1MGYwZi4uZWQxNTM5NTJlMzJmODlkNjhiYmIxZjIwNjQ3N2FjNDdiNGMxNjY0OCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
RW11bGF0ZVByZWNpc2lvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL0VtdWxhdGVQcmVjaXNpb24uaApAQCAtMTgsNiArMTgsOSBAQAogLy8g
bmVlZCB0byB3cml0ZSBhIGh1Z2UgbnVtYmVyIG9mIHZhcmlhdGlvbnMgb2YgdGhlIGVtdWxhdGVk
IGNvbXBvdW5kIGFzc2lnbm1lbnQKIC8vIHRvIGV2ZXJ5IHRyYW5zbGF0ZWQgc2hhZGVyIHdpdGgg
ZW11bGF0aW9uIGVuYWJsZWQuCiAKK25hbWVzcGFjZSBzaAoreworCiBjbGFzcyBFbXVsYXRlUHJl
Y2lzaW9uIDogcHVibGljIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcgogewogICBwdWJsaWM6CkBA
IC0yNyw2ICszMCw5IEBAIGNsYXNzIEVtdWxhdGVQcmVjaXNpb24gOiBwdWJsaWMgVExWYWx1ZVRy
YWNraW5nVHJhdmVyc2VyCiAgICAgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVy
bUJpbmFyeSAqbm9kZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0
LCBUSW50ZXJtVW5hcnkgKm5vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUo
VmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wg
dmlzaXRJbnZhcmlhbnREZWNsYXJhdGlvbihWaXNpdCB2aXNpdCwgVEludGVybUludmFyaWFudERl
Y2xhcmF0aW9uICpub2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0RGVjbGFyYXRpb24oVmlz
aXQgdmlzaXQsIFRJbnRlcm1EZWNsYXJhdGlvbiAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2
aXNpdEZ1bmN0aW9uUHJvdG90eXBlKFZpc2l0IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25Qcm90b3R5
cGUgKm5vZGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCB3cml0ZUVtdWxhdGlvbkhlbHBlcnMoVElu
Zm9TaW5rQmFzZSAmc2luaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp
bnQgc2hhZGVyVmVyc2lvbiwKQEAgLTM3LDggKzQzLDcgQEAgY2xhc3MgRW11bGF0ZVByZWNpc2lv
biA6IHB1YmxpYyBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXIKICAgcHJpdmF0ZToKICAgICBzdHJ1
Y3QgVHlwZVBhaXIKICAgICB7Ci0gICAgICAgIFR5cGVQYWlyKGNvbnN0IGNoYXIgKmwsIGNvbnN0
IGNoYXIgKnIpCi0gICAgICAgICAgICA6IGxUeXBlKGwpLCByVHlwZShyKSB7IH0KKyAgICAgICAg
VHlwZVBhaXIoY29uc3QgY2hhciAqbCwgY29uc3QgY2hhciAqcikgOiBsVHlwZShsKSwgclR5cGUo
cikge30KIAogICAgICAgICBjb25zdCBjaGFyICpsVHlwZTsKICAgICAgICAgY29uc3QgY2hhciAq
clR5cGU7CkBAIC00Niw3ICs1MSw3IEBAIGNsYXNzIEVtdWxhdGVQcmVjaXNpb24gOiBwdWJsaWMg
VExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyCiAKICAgICBzdHJ1Y3QgVHlwZVBhaXJDb21wYXJhdG9y
CiAgICAgewotICAgICAgICBib29sIG9wZXJhdG9yKCkgKGNvbnN0IFR5cGVQYWlyJiBsLCBjb25z
dCBUeXBlUGFpciYgcikgY29uc3QKKyAgICAgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IFR5cGVQ
YWlyICZsLCBjb25zdCBUeXBlUGFpciAmcikgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKGwubFR5cGUgPT0gci5sVHlwZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbC5yVHlwZSA8
IHIuclR5cGU7CkBAIC02Myw0ICs2OCw2IEBAIGNsYXNzIEVtdWxhdGVQcmVjaXNpb24gOiBwdWJs
aWMgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyCiAgICAgYm9vbCBtRGVjbGFyaW5nVmFyaWFibGVz
OwogfTsKIAorfSAgLy8gbmFtZXNwYWNlIHNoCisKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNM
QVRPUl9FTVVMQVRFX1BSRUNJU0lPTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25z
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0V4
cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucy5jcHAKaW5kZXggOTQwOWMwMTBmMTRjYmJiZjgzOGEx
YzgwZjM3NzgwN2QyMGUyYjMxMS4uOWZmMmYxMjY1MGZjM2VhZDkxMzQ4YzgwYzI2YmZhMDA4ZjNl
YTJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FeHBhbmRJbnRlZ2VyUG93RXhw
cmVzc2lvbnMuY3BwCkBAIC0xMTYsOCArMTE2LDggQEAgYm9vbCBUcmF2ZXJzZXI6OnZpc2l0QWdn
cmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQogICAgIFRJbnRlcm1U
eXBlZCAqbGhzID0gc2VxdWVuY2UtPmF0KDApLT5nZXRBc1R5cGVkKCk7CiAgICAgQVNTRVJUKGxo
cyk7CiAKLSAgICBUSW50ZXJtQWdncmVnYXRlICppbml0ID0gY3JlYXRlVGVtcEluaXREZWNsYXJh
dGlvbihsaHMpOwotICAgIFRJbnRlcm1UeXBlZCAqY3VycmVudCAgPSBjcmVhdGVUZW1wU3ltYm9s
KGxocy0+Z2V0VHlwZSgpKTsKKyAgICBUSW50ZXJtRGVjbGFyYXRpb24gKmluaXQgPSBjcmVhdGVU
ZW1wSW5pdERlY2xhcmF0aW9uKGxocyk7CisgICAgVEludGVybVR5cGVkICpjdXJyZW50ICAgID0g
Y3JlYXRlVGVtcFN5bWJvbChsaHMtPmdldFR5cGUoKSk7CiAKICAgICBpbnNlcnRTdGF0ZW1lbnRJ
blBhcmVudEJsb2NrKGluaXQpOwogCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBUcmF2ZXJzZXI6
OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQogICAg
ICAgICBvbmVWYWwtPnNldEZDb25zdCgxLjBmKTsKICAgICAgICAgVEludGVybUNvbnN0YW50VW5p
b24gKm9uZU5vZGUgPSBuZXcgVEludGVybUNvbnN0YW50VW5pb24ob25lVmFsLCBub2RlLT5nZXRU
eXBlKCkpOwogICAgICAgICBUSW50ZXJtQmluYXJ5ICpkaXYgICAgICAgICAgICA9IG5ldyBUSW50
ZXJtQmluYXJ5KEVPcERpdiwgb25lTm9kZSwgY3VycmVudCk7Ci0gICAgICAgIGN1cnJlbnQgPSBk
aXY7CisgICAgICAgIGN1cnJlbnQgICAgICAgICAgICAgICAgICAgICAgID0gZGl2OwogICAgIH0K
IAogICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgY3VycmVudCwgT3JpZ2luYWxOb2RlOjpJU19E
Uk9QUEVEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0V4dGVuc2lvbkJlaGF2aW9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FeHRlbnNpb25CZWhhdmlvci5oCmluZGV4IDc4MmMx
YzkyMTc4YTY2NTc4ZGIxYjZkY2E2YmE0M2UyZTFhZGI5OGIuLmZhYzgyYTEzNGZlODIyNjViYWM2
MjNhMGY4YWZkYzlhYmUxYzFmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL0V4dGVuc2lvbkJlaGF2aW9yLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRXh0ZW5zaW9uQmVoYXZp
b3IuaApAQCAtMTAsMjQgKzEwLDIyIEBACiAjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHN0cmlu
Zz4KIAotdHlwZWRlZiBlbnVtCi17Ci0gICAgRUJoUmVxdWlyZSwKLSAgICBFQmhFbmFibGUsCi0g
ICAgRUJoV2FybiwKLSAgICBFQmhEaXNhYmxlLAotICAgIEVCaFVuZGVmaW5lZAotfSBUQmVoYXZp
b3I7Cit0eXBlZGVmIGVudW0geyBFQmhSZXF1aXJlLCBFQmhFbmFibGUsIEVCaFdhcm4sIEVCaERp
c2FibGUsIEVCaFVuZGVmaW5lZCB9IFRCZWhhdmlvcjsKIAotaW5saW5lIGNvbnN0IGNoYXIqIGdl
dEJlaGF2aW9yU3RyaW5nKFRCZWhhdmlvciBiKQoraW5saW5lIGNvbnN0IGNoYXIgKmdldEJlaGF2
aW9yU3RyaW5nKFRCZWhhdmlvciBiKQogewotICAgIHN3aXRjaChiKQorICAgIHN3aXRjaCAoYikK
ICAgICB7Ci0gICAgICBjYXNlIEVCaFJlcXVpcmU6IHJldHVybiAicmVxdWlyZSI7Ci0gICAgICBj
YXNlIEVCaEVuYWJsZTogcmV0dXJuICJlbmFibGUiOwotICAgICAgY2FzZSBFQmhXYXJuOiByZXR1
cm4gIndhcm4iOwotICAgICAgY2FzZSBFQmhEaXNhYmxlOiByZXR1cm4gImRpc2FibGUiOwotICAg
ICAgZGVmYXVsdDogcmV0dXJuIE5VTEw7CisgICAgICAgIGNhc2UgRUJoUmVxdWlyZToKKyAgICAg
ICAgICAgIHJldHVybiAicmVxdWlyZSI7CisgICAgICAgIGNhc2UgRUJoRW5hYmxlOgorICAgICAg
ICAgICAgcmV0dXJuICJlbmFibGUiOworICAgICAgICBjYXNlIEVCaFdhcm46CisgICAgICAgICAg
ICByZXR1cm4gIndhcm4iOworICAgICAgICBjYXNlIEVCaERpc2FibGU6CisgICAgICAgICAgICBy
ZXR1cm4gImRpc2FibGUiOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIE5V
TEw7CiAgICAgfQogfQogCkBAIC00MCw0ICszOCw0IEBAIGlubGluZSBib29sIElzRXh0ZW5zaW9u
RW5hYmxlZChjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3IgJmV4dEJlaGF2aW9yLCBjb25zdCBjaGFy
CiAgICAgcmV0dXJuIGl0ZXIgIT0gZXh0QmVoYXZpb3IuZW5kKCkgJiYgKGl0ZXItPnNlY29uZCA9
PSBFQmhFbmFibGUgfHwgaXRlci0+c2Vjb25kID09IEVCaFJlcXVpcmUpOwogfQogCi0jZW5kaWYg
Ly8gQ09NUElMRVJfVFJBTlNMQVRPUl9FWFRFTlNJT05CRUhBVklPUl9IXworI2VuZGlmICAvLyBD
T01QSUxFUl9UUkFOU0xBVE9SX0VYVEVOU0lPTkJFSEFWSU9SX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FeHRlbnNpb25HTFNM
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0V4
dGVuc2lvbkdMU0wuY3BwCmluZGV4IGQ3ZjQ1ZjdlZWY2MmYxMTBiNGYzNGZiYTg0MjgzOTAxNDI3
ZWRhOWEuLjViNWRjNTgwZTlhMjU4ZmM4ZDcyMjQ2NTRjZDQwNThlYzE5NTM1ODYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0V4dGVu
c2lvbkdMU0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0V4dGVuc2lvbkdMU0wuY3BwCkBAIC0xMCw2ICsxMCw5IEBACiAKICNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL1ZlcnNpb25HTFNMLmgiCiAKK25hbWVzcGFjZSBzaAorewor
CiBURXh0ZW5zaW9uR0xTTDo6VEV4dGVuc2lvbkdMU0woU2hTaGFkZXJPdXRwdXQgb3V0cHV0KQog
ICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLCBtVGFyZ2V0VmVyc2lv
bihTaGFkZXJPdXRwdXRUeXBlVG9HTFNMVmVyc2lvbihvdXRwdXQpKQogewpAQCAtOTgsMyArMTAx
LDUgQEAgdm9pZCBURXh0ZW5zaW9uR0xTTDo6Y2hlY2tPcGVyYXRvcihUSW50ZXJtT3BlcmF0b3Ig
Km5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiB9CisKK30gIC8vIG5hbWVzcGFjZSBz
aApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvRXh0ZW5zaW9uR0xTTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvRXh0ZW5zaW9uR0xTTC5oCmluZGV4IDZiYjg0ZDYxMmRhZjA5OGFmZjA4
MzQxNGMyZmMzMGJmYmM5OWNmYjYuLjNjMmRiZTA3NDZkYmJlNGYzMTliODYwMjhmMDEyODkzZTE4
N2JmZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0V4dGVuc2lvbkdMU0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9FeHRlbnNpb25HTFNMLmgKQEAgLTE0LDYgKzE0LDkgQEAK
IAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgogCituYW1lc3Bh
Y2Ugc2gKK3sKKwogLy8gVHJhdmVyc2VzIHRoZSBpbnRlcm1lZGlhdGUgdHJlZSB0byBkZXRlcm1p
bmUgd2hpY2ggR0xTTCBleHRlbnNpb25zIGFyZSByZXF1aXJlZAogLy8gdG8gc3VwcG9ydCB0aGUg
c2hhZGVyLgogY2xhc3MgVEV4dGVuc2lvbkdMU0wgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgpA
QCAtMzYsNCArMzksNiBAQCBjbGFzcyBURXh0ZW5zaW9uR0xTTCA6IHB1YmxpYyBUSW50ZXJtVHJh
dmVyc2VyCiAgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IG1SZXF1aXJlZEV4dGVuc2lvbnM7CiB9
OwogCit9ICAvLyBuYW1lc3BhY2Ugc2gKKwogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9S
X0VYVEVOU0lPTkdMU0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL0ZpbmRTeW1ib2xOb2RlLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ZpbmRTeW1ib2xOb2RlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi44N2ZiOWQ1OTg2NDk4YWIzNDFiNzA1YTFmNzM3MzJmNWQxYzA3ZGUwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvRmluZFN5bWJvbE5vZGUuY3BwCkBAIC0wLDAgKzEsNTggQEAKKy8vCisvLyBDb3B5cmlnaHQg
KGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8g
RmluZFN5bWJvbC5jcHA6CisvLyAgICAgVXRpbGl0eSBmb3IgZmluZGluZyBhIHN5bWJvbCBub2Rl
IGluc2lkZSBhbiBBU1QgdHJlZS4KKworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvRmlu
ZFN5bWJvbE5vZGUuaCIKKworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9k
ZS5oIgorCituYW1lc3BhY2Ugc2gKK3sKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIFN5bWJvbEZp
bmRlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBTeW1ib2xG
aW5kZXIoY29uc3QgVFN0cmluZyAmc3ltYm9sTmFtZSwgVEJhc2ljVHlwZSBiYXNpY1R5cGUpCisg
ICAgICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLAorICAgICAgICAg
IG1TeW1ib2xOYW1lKHN5bWJvbE5hbWUpLAorICAgICAgICAgIG1Ob2RlRm91bmQobnVsbHB0ciks
CisgICAgICAgICAgbUJhc2ljVHlwZShiYXNpY1R5cGUpCisgICAgeworICAgIH0KKworICAgIHZv
aWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkKKyAgICB7CisgICAgICAgIGlmIChu
b2RlLT5nZXRCYXNpY1R5cGUoKSA9PSBtQmFzaWNUeXBlICYmIG5vZGUtPmdldFN5bWJvbCgpID09
IG1TeW1ib2xOYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBtTm9kZUZvdW5kID0gbm9kZTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgaXNGb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1O
b2RlRm91bmQgIT0gbnVsbHB0cjsgfQorICAgIGNvbnN0IFRJbnRlcm1TeW1ib2wgKmdldE5vZGUo
KSBjb25zdCB7IHJldHVybiBtTm9kZUZvdW5kOyB9CisKKyAgcHJpdmF0ZToKKyAgICBUU3RyaW5n
IG1TeW1ib2xOYW1lOworICAgIFRJbnRlcm1TeW1ib2wgKm1Ob2RlRm91bmQ7CisgICAgVEJhc2lj
VHlwZSBtQmFzaWNUeXBlOworfTsKKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitjb25z
dCBUSW50ZXJtU3ltYm9sICpGaW5kU3ltYm9sTm9kZShUSW50ZXJtTm9kZSAqcm9vdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJnN5bWJvbE5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQmFzaWNUeXBlIGJhc2ljVHlw
ZSkKK3sKKyAgICBTeW1ib2xGaW5kZXIgZmluZGVyKHN5bWJvbE5hbWUsIGJhc2ljVHlwZSk7Cisg
ICAgcm9vdC0+dHJhdmVyc2UoJmZpbmRlcik7CisgICAgcmV0dXJuIGZpbmRlci5nZXROb2RlKCk7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRmluZFN5bWJvbE5vZGUuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ZpbmRTeW1ib2xOb2RlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDhkZmI5YTIyMjQwY2FhNjcwNWI1YTk3MmM1ZDI2M2ZhY2Q1MDI0MgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL0ZpbmRTeW1ib2xOb2RlLmgKQEAgLTAsMCArMSwyNyBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisv
LyBGaW5kU3ltYm9sTm9kZS5oOgorLy8gICAgIFV0aWxpdHkgZm9yIGZpbmRpbmcgYSBzeW1ib2wg
bm9kZSBpbnNpZGUgYW4gQVNUIHRyZWUuCisKKyNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9G
SU5EX1NZTUJPTF9IXworI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX0ZJTkRfU1lNQk9MX0hf
CisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0Jhc2VUeXBlcy5oIgorI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvQ29tbW9uLmgiCisKK25hbWVzcGFjZSBzaAoreworCitjbGFz
cyBUSW50ZXJtTm9kZTsKK2NsYXNzIFRJbnRlcm1TeW1ib2w7CisKK2NvbnN0IFRJbnRlcm1TeW1i
b2wgKkZpbmRTeW1ib2xOb2RlKFRJbnRlcm1Ob2RlICpyb290LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmc3ltYm9sTmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRCYXNpY1R5cGUgYmFzaWNUeXBlKTsKKworfSAgLy8g
bmFtZXNwYWNlIHNoCisKKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9GSU5EX1NZTUJP
TF9IXwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ZsYWdTdGQxNDBTdHJ1Y3RzLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ZsYWdT
dGQxNDBTdHJ1Y3RzLmNwcAppbmRleCBhNzUxYjc2OGI3OGI5YWM1NDVlNmFmYzYyZDQyYWI3ZWRi
NjU1MDI0Li5kMTY0MTJiYjIzMDNiZjAyODZiNWZiZWQxYzg4ZmFlZDYxNzU3NTE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9GbGFn
U3RkMTQwU3RydWN0cy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvRmxhZ1N0ZDE0MFN0cnVjdHMuY3BwCkBAIC0xNSwxNSArMTUsMTYgQEAg
Ym9vbCBGbGFnU3RkMTQwU3RydWN0czo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1C
aW5hcnkgKmJpbmFyeU5vZGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGJpbmFyeU5vZGUtPmdl
dE9wKCkpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0SW50ZXJmYWNl
QmxvY2s6Ci0gICAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdFN0cnVjdDoKLSAgICAgICAgICAg
IGlmIChpc0luU3RkMTQwSW50ZXJmYWNlQmxvY2soYmluYXJ5Tm9kZS0+Z2V0TGVmdCgpKSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtRmxhZ2dlZE5vZGVzLnB1c2hfYmFjayhiaW5h
cnlOb2RlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAg
ZGVmYXVsdDogYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0SW50ZXJmYWNl
QmxvY2s6CisgICAgICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0U3RydWN0OgorICAgICAgICAg
ICAgICAgIGlmIChpc0luU3RkMTQwSW50ZXJmYWNlQmxvY2soYmluYXJ5Tm9kZS0+Z2V0TGVmdCgp
KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1GbGFnZ2VkTm9kZXMu
cHVzaF9iYWNrKGJpbmFyeU5vZGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNzMsNSArNzQsNCBA
QCBzdGQ6OnZlY3RvcjxUSW50ZXJtVHlwZWQgKj4gRmxhZ1N0ZDE0MFZhbHVlU3RydWN0cyhUSW50
ZXJtTm9kZSAqbm9kZSkKIAogICAgIHJldHVybiBmbGFnZ2luZ1RyYXZlcnNhbC5nZXRGbGFnZ2Vk
Tm9kZXMoKTsKIH0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvRmxhZ1N0ZDE0MFN0cnVjdHMuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ZsYWdTdGQxNDBTdHJ1Y3RzLmgKaW5k
ZXggY2ZjZDc3NWFmNzQwYWM0NTUyOGNhMjQzZGIyY2NiY2NlN2RkNDRmMC4uNjcyYjIwZDM5MmEy
Nzk3ZTI0NjgzNWZlZjM3NGI0MDY0ZTVhNDNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRmxhZ1N0ZDE0MFN0cnVjdHMuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9GbGFnU3Rk
MTQwU3RydWN0cy5oCkBAIC0xOCwxMSArMTgsNyBAQCBuYW1lc3BhY2Ugc2gKIGNsYXNzIEZsYWdT
dGQxNDBTdHJ1Y3RzIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKIHsKICAgcHVibGljOgotCi0g
ICAgRmxhZ1N0ZDE0MFN0cnVjdHMoKQotICAgICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwg
ZmFsc2UsIGZhbHNlKQotICAgIHsKLSAgICB9CisgICAgRmxhZ1N0ZDE0MFN0cnVjdHMoKSA6IFRJ
bnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSB7fQogCiAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8VEludGVybVR5cGVkICo+IGdldEZsYWdnZWROb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1G
bGFnZ2VkTm9kZXM7IH0KIApAQCAtMzcsNyArMzMsNiBAQCBjbGFzcyBGbGFnU3RkMTQwU3RydWN0
cyA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiB9OwogCiBzdGQ6OnZlY3RvcjxUSW50ZXJtVHlw
ZWQgKj4gRmxhZ1N0ZDE0MFZhbHVlU3RydWN0cyhUSW50ZXJtTm9kZSAqbm9kZSk7Ci0KIH0KIAot
I2VuZGlmIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfRkxBR1NURDE0MFNUUlVDVFNfSF8KKyNlbmRp
ZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9GTEFHU1REMTQwU1RSVUNUU19IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRm9yTG9v
cFVucm9sbC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9Gb3JMb29wVW5yb2xsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGNj
MWMyNmExMzViNDg3MGNlNWE2ZjBjMWY2MDkxYTViZGMyNWMzOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9Gb3JMb29wVW5yb2xsLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDk3ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL0Zvckxvb3BVbnJvbGwuaCIKLQotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3Iv
VmFsaWRhdGVMaW1pdGF0aW9ucy5oIgotI2luY2x1ZGUgImFuZ2xlX2dsLmgiCi0KLWJvb2wgRm9y
TG9vcFVucm9sbE1hcmtlcjo6dmlzaXRCaW5hcnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUp
Ci17Ci0gICAgaWYgKG1VbnJvbGxDb25kaXRpb24gIT0ga1NhbXBsZXJBcnJheUluZGV4KQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIElmIGEgc2FtcGxlciBhcnJheSBpbmRleCBpcyBh
bHNvIHRoZSBsb29wIGluZGV4LAotICAgIC8vICAgMSkgaWYgdGhlIGluZGV4IHR5cGUgaXMgaW50
ZWdlciwgbWFyayB0aGUgbG9vcCBmb3IgdW5yb2xsaW5nOwotICAgIC8vICAgMikgaWYgdGhlIGlu
ZGV4IHR5cGUgaWYgZmxvYXQsIHNldCBhIGZsYWcgdG8gbGF0ZXIgZmFpbCBjb21waWxlLgotICAg
IHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKLSAgICB7Ci0gICAgICBjYXNlIEVPcEluZGV4SW5kaXJl
Y3Q6Ci0gICAgICAgIGlmIChub2RlLT5nZXRMZWZ0KCkgIT0gTlVMTCAmJiBub2RlLT5nZXRSaWdo
dCgpICE9IE5VTEwgJiYgbm9kZS0+Z2V0TGVmdCgpLT5nZXRBc1N5bWJvbE5vZGUoKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gbm9kZS0+Z2V0TGVmdCgp
LT5nZXRBc1N5bWJvbE5vZGUoKTsKLSAgICAgICAgICAgIGlmIChJc1NhbXBsZXIoc3ltYm9sLT5n
ZXRCYXNpY1R5cGUoKSkgJiYgc3ltYm9sLT5pc0FycmF5KCkgJiYgIW1Mb29wU3RhY2suZW1wdHko
KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtVmlzaXRTYW1wbGVyQXJyYXlJbmRl
eE5vZGVJbnNpZGVMb29wID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBub2RlLT5nZXRSaWdodCgp
LT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgICAgICAgICBtVmlzaXRTYW1wbGVyQXJyYXlJbmRl
eE5vZGVJbnNpZGVMb29wID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhbHJl
YWR5IHZpc2l0ZWQgYWxsIHRoZSBjaGlsZHJlbi4KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZh
dWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wg
Rm9yTG9vcFVucm9sbE1hcmtlcjo6dmlzaXRMb29wKFZpc2l0LCBUSW50ZXJtTG9vcCAqbm9kZSkK
LXsKLSAgICBib29sIGNhbkJlVW5yb2xsZWQgPSBtSGFzUnVuTG9vcFZhbGlkYXRpb247Ci0gICAg
aWYgKCFtSGFzUnVuTG9vcFZhbGlkYXRpb24pCi0gICAgewotICAgICAgICBjYW5CZVVucm9sbGVk
ID0gVmFsaWRhdGVMaW1pdGF0aW9uczo6SXNMaW1pdGVkRm9yTG9vcChub2RlKTsKLSAgICB9Ci0g
ICAgaWYgKG1VbnJvbGxDb25kaXRpb24gPT0ga0ludGVnZXJJbmRleCAmJiBjYW5CZVVucm9sbGVk
KQotICAgIHsKLSAgICAgICAgLy8gQ2hlY2sgaWYgbG9vcCBpbmRleCB0eXBlIGlzIGludGVnZXIu
Ci0gICAgICAgIC8vIFRoaXMgaXMgY2FsbGVkIGFmdGVyIFZhbGlkYXRlTGltaXRhdGlvbnMgcGFz
cywgc28gdGhlIGxvb3AgaGFzIHRoZSBsaW1pdGVkIGZvcm0gc3BlY2lmaWVkCi0gICAgICAgIC8v
IGluIEVTU0wgMS4wMCBhcHBlbmRpeCBBLgotICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKmRlY2xT
ZXEgPSBub2RlLT5nZXRJbml0KCktPmdldEFzQWdncmVnYXRlKCktPmdldFNlcXVlbmNlKCk7Ci0g
ICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9ICgqZGVjbFNlcSlbMF0tPmdldEFzQmluYXJ5
Tm9kZSgpLT5nZXRMZWZ0KCktPmdldEFzU3ltYm9sTm9kZSgpOwotICAgICAgICBpZiAoc3ltYm9s
LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnQpCi0gICAgICAgICAgICBub2RlLT5zZXRVbnJvbGxG
bGFnKHRydWUpOwotICAgIH0KLQotICAgIFRJbnRlcm1Ob2RlICpib2R5ID0gbm9kZS0+Z2V0Qm9k
eSgpOwotICAgIGlmIChib2R5ICE9IG51bGxwdHIpCi0gICAgewotICAgICAgICBpZiAoY2FuQmVV
bnJvbGxlZCkKLSAgICAgICAgewotICAgICAgICAgICAgbUxvb3BTdGFjay5wdXNoKG5vZGUpOwot
ICAgICAgICAgICAgYm9keS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgICAgICBtTG9vcFN0YWNr
LnBvcCgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAg
Ym9keS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgLy8gVGhlIGxvb3Ag
aXMgZnVsbHkgcHJvY2Vzc2VkIC0gbm8gbmVlZCB0byB2aXNpdCBjaGlsZHJlbi4KLSAgICByZXR1
cm4gZmFsc2U7Ci19Ci0KLXZvaWQgRm9yTG9vcFVucm9sbE1hcmtlcjo6dmlzaXRTeW1ib2woVElu
dGVybVN5bWJvbCogc3ltYm9sKQotewotICAgIGlmICghbVZpc2l0U2FtcGxlckFycmF5SW5kZXhO
b2RlSW5zaWRlTG9vcCkKLSAgICAgICAgcmV0dXJuOwotICAgIFRJbnRlcm1Mb29wICpsb29wID0g
bUxvb3BTdGFjay5maW5kTG9vcChzeW1ib2wpOwotICAgIGlmIChsb29wKQotICAgIHsKLSAgICAg
ICAgc3dpdGNoIChzeW1ib2wtPmdldEJhc2ljVHlwZSgpKQotICAgICAgICB7Ci0gICAgICAgICAg
Y2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgIG1TYW1wbGVyQXJyYXlJbmRleElzRmxvYXRMb29w
SW5kZXggPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBFYnRJbnQ6
Ci0gICAgICAgICAgICBsb29wLT5zZXRVbnJvbGxGbGFnKHRydWUpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAg
ICAgIH0KLSAgICB9Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9Gb3JMb29wVW5yb2xsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Gb3JMb29wVW5yb2xsLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDljNDllY2FkMzNlNzUyN2FhZjNhMDg1OWRiNzZkODczNWE5ZTk5
MTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRm9yTG9vcFVucm9sbC5o
CisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAx
MSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpZm5kZWYg
Q09NUElMRVJfVFJBTlNMQVRPUl9GT1JMT09QVU5ST0xMX0hfCi0jZGVmaW5lIENPTVBJTEVSX1RS
QU5TTEFUT1JfRk9STE9PUFVOUk9MTF9IXwotCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9Mb29wSW5mby5oIgotCi0vLyBUaGlzIGNsYXNzIGRldGVjdHMgZm9yLWxvb3BzIHRoYXQgbmVl
ZHMgdG8gYmUgdW5yb2xsZWQuCi0vLyBDdXJyZW50bHkgd2Ugc3VwcG9ydCB0d28gdW5yb2xsIGNv
bmRpdGlvbnM6Ci0vLyAgIDEpIGtGb3JMb29wV2l0aEludGVnZXJJbmRleDogdW5yb2xsIGlmIHRo
ZSBpbmRleCB0eXBlIGlzIGludGVnZXIuCi0vLyAgIDIpIGtGb3JMb29wV2l0aFNhbXBsZXJBcnJh
eUluZGV4OiB1bnJvbGwgd2hlcmUgYSBzYW1wbGVyIGFycmF5IGluZGV4Ci0vLyAgICAgIGlzIGFs
c28gdGhlIGxvb3AgaW50ZWdlciBpbmRleCwgYW5kIHJlamVjdCBhbmQgZmFpbCBhIGNvbXBpbGUK
LS8vICAgICAgd2hlcmUgYSBzYW1wbGVyIGFycmF5IGluZGV4IGlzIGFsc28gdGhlIGxvb3AgZmxv
YXQgaW5kZXguCi1jbGFzcyBGb3JMb29wVW5yb2xsTWFya2VyIDogcHVibGljIFRJbnRlcm1UcmF2
ZXJzZXIKLXsKLSAgcHVibGljOgotICAgIGVudW0gVW5yb2xsQ29uZGl0aW9uCi0gICAgewotICAg
ICAgICBrSW50ZWdlckluZGV4LAotICAgICAgICBrU2FtcGxlckFycmF5SW5kZXgKLSAgICB9Owot
Ci0gICAgRm9yTG9vcFVucm9sbE1hcmtlcihVbnJvbGxDb25kaXRpb24gY29uZGl0aW9uLCBib29s
IGhhc1J1bkxvb3BWYWxpZGF0aW9uKQotICAgICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwg
ZmFsc2UsIGZhbHNlKSwKLSAgICAgICAgICBtVW5yb2xsQ29uZGl0aW9uKGNvbmRpdGlvbiksCi0g
ICAgICAgICAgbVNhbXBsZXJBcnJheUluZGV4SXNGbG9hdExvb3BJbmRleChmYWxzZSksCi0gICAg
ICAgICAgbVZpc2l0U2FtcGxlckFycmF5SW5kZXhOb2RlSW5zaWRlTG9vcChmYWxzZSksCi0gICAg
ICAgICAgbUhhc1J1bkxvb3BWYWxpZGF0aW9uKGhhc1J1bkxvb3BWYWxpZGF0aW9uKQotICAgIHsK
LSAgICB9Ci0KLSAgICBib29sIHZpc2l0QmluYXJ5KFZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2Rl
KSBvdmVycmlkZTsKLSAgICBib29sIHZpc2l0TG9vcChWaXNpdCwgVEludGVybUxvb3AgKm5vZGUp
IG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkgb3Zl
cnJpZGU7Ci0KLSAgICBib29sIHNhbXBsZXJBcnJheUluZGV4SXNGbG9hdExvb3BJbmRleCgpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbVNhbXBsZXJBcnJheUluZGV4SXNGbG9hdExvb3BJ
bmRleDsKLSAgICB9Ci0KLSAgcHJpdmF0ZToKLSAgICBVbnJvbGxDb25kaXRpb24gbVVucm9sbENv
bmRpdGlvbjsKLSAgICBUTG9vcFN0YWNrIG1Mb29wU3RhY2s7Ci0gICAgYm9vbCBtU2FtcGxlckFy
cmF5SW5kZXhJc0Zsb2F0TG9vcEluZGV4OwotICAgIGJvb2wgbVZpc2l0U2FtcGxlckFycmF5SW5k
ZXhOb2RlSW5zaWRlTG9vcDsKLSAgICBib29sIG1IYXNSdW5Mb29wVmFsaWRhdGlvbjsKLX07Ci0K
LSNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0ZPUkxPT1BVTlJPTExfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luZm9T
aW5rLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L0luZm9TaW5rLmNwcAppbmRleCBjZDU5NjU4ZmY3NmM5NTc3OGY1MGQ0MTllOWE3NDNlNjMyMmM5
MmE1Li5kYjI2YWE2N2U4MzA2MjZjNTVlMzFjYTcyN2U5MTMwYjQwMDA3NmNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbmZvU2lu
ay5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvSW5mb1NpbmsuY3BwCkBAIC02LDMyICs2LDI3IEBACiAKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL0luZm9TaW5rLmgiCiAKLXZvaWQgVEluZm9TaW5rQmFzZTo6cHJlZml4KFRQcmVm
aXhUeXBlIHApIHsKLSAgICBzd2l0Y2gocCkgewotICAgICAgICBjYXNlIEVQcmVmaXhOb25lOgot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVByZWZpeFdhcm5pbmc6CituYW1lc3Bh
Y2Ugc2gKK3sKKwordm9pZCBUSW5mb1NpbmtCYXNlOjpwcmVmaXgoU2V2ZXJpdHkgc2V2ZXJpdHkp
Cit7CisgICAgc3dpdGNoIChzZXZlcml0eSkKKyAgICB7CisgICAgICAgIGNhc2UgU0hfV0FSTklO
RzoKICAgICAgICAgICAgIHNpbmsuYXBwZW5kKCJXQVJOSU5HOiAiKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEVQcmVmaXhFcnJvcjoKKyAgICAgICAgY2FzZSBTSF9FUlJPUjoK
ICAgICAgICAgICAgIHNpbmsuYXBwZW5kKCJFUlJPUjogIik7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBFUHJlZml4SW50ZXJuYWxFcnJvcjoKLSAgICAgICAgICAgIHNpbmsuYXBw
ZW5kKCJJTlRFUk5BTCBFUlJPUjogIik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBFUHJlZml4VW5pbXBsZW1lbnRlZDoKLSAgICAgICAgICAgIHNpbmsuYXBwZW5kKCJVTklNUExF
TUVOVEVEOiAiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVQcmVmaXhOb3Rl
OgotICAgICAgICAgICAgc2luay5hcHBlbmQoIk5PVEU6ICIpOwotICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBzaW5rLmFwcGVuZCgiVU5LT1dOIEVSUk9S
OiAiKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAotdm9pZCBUSW5mb1NpbmtCYXNl
Ojpsb2NhdGlvbihpbnQgZmlsZSwgaW50IGxpbmUpIHsKK3ZvaWQgVEluZm9TaW5rQmFzZTo6bG9j
YXRpb24oaW50IGZpbGUsIGludCBsaW5lKQorewogICAgIFRQZXJzaXN0U3RyaW5nU3RyZWFtIHN0
cmVhbTsKICAgICBpZiAobGluZSkKICAgICAgICAgc3RyZWFtIDw8IGZpbGUgPDwgIjoiIDw8IGxp
bmU7CkBAIC00MiwxMyArMzcsNCBAQCB2b2lkIFRJbmZvU2lua0Jhc2U6OmxvY2F0aW9uKGludCBm
aWxlLCBpbnQgbGluZSkgewogICAgIHNpbmsuYXBwZW5kKHN0cmVhbS5zdHIoKSk7CiB9CiAKLXZv
aWQgVEluZm9TaW5rQmFzZTo6bG9jYXRpb24oY29uc3QgVFNvdXJjZUxvYyYgbG9jKSB7Ci0gICAg
bG9jYXRpb24obG9jLmZpcnN0X2ZpbGUsIGxvYy5maXJzdF9saW5lKTsKLX0KLQotdm9pZCBUSW5m
b1NpbmtCYXNlOjptZXNzYWdlKFRQcmVmaXhUeXBlIHAsIGNvbnN0IFRTb3VyY2VMb2MmIGxvYywg
Y29uc3QgY2hhciogbSkgewotICAgIHByZWZpeChwKTsKLSAgICBsb2NhdGlvbihsb2MpOwotICAg
IHNpbmsuYXBwZW5kKG0pOwotICAgIHNpbmsuYXBwZW5kKCJcbiIpOwotfQorfSAgLy8gbmFtZXNw
YWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9JbmZvU2luay5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvSW5mb1NpbmsuaAppbmRleCBmNDdmYWZhOGVlMWEwNmMzMmMxYjhjOWQ4
YmYwNjRkMmEwNzRkNmE2Li4yNzA1ZjQ4ZDU5OWZmYWJhYzIxMTEzYTYwM2IxNDk3YWRhZDU2ZDRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9JbmZvU2luay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0luZm9TaW5rLmgKQEAgLTEwLDM4ICsxMCwzMiBAQAogI2luY2x1ZGUgPG1h
dGguaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L0NvbW1vbi5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU2V2ZXJpdHkuaCIKKwor
bmFtZXNwYWNlIHNoCit7CiAKIC8vIFJldHVybnMgdGhlIGZyYWN0aW9uYWwgcGFydCBvZiB0aGUg
Z2l2ZW4gZmxvYXRpbmctcG9pbnQgbnVtYmVyLgotaW5saW5lIGZsb2F0IGZyYWN0aW9uYWxQYXJ0
KGZsb2F0IGYpIHsKLSAgZmxvYXQgaW50UGFydCA9IDAuMGY7Ci0gIHJldHVybiBtb2RmZihmLCAm
aW50UGFydCk7CitpbmxpbmUgZmxvYXQgZnJhY3Rpb25hbFBhcnQoZmxvYXQgZikKK3sKKyAgICBm
bG9hdCBpbnRQYXJ0ID0gMC4wZjsKKyAgICByZXR1cm4gbW9kZmYoZiwgJmludFBhcnQpOwogfQog
CiAvLwotLy8gVFByZWZpeFR5cGUgaXMgdXNlZCB0byBjZW50cmFsaXplIGhvdyBpbmZvIGxvZyBt
ZXNzYWdlcyBzdGFydC4KLS8vIFNlZSBiZWxvdy4KLS8vCi1lbnVtIFRQcmVmaXhUeXBlIHsKLSAg
ICBFUHJlZml4Tm9uZSwKLSAgICBFUHJlZml4V2FybmluZywKLSAgICBFUHJlZml4RXJyb3IsCi0g
ICAgRVByZWZpeEludGVybmFsRXJyb3IsCi0gICAgRVByZWZpeFVuaW1wbGVtZW50ZWQsCi0gICAg
RVByZWZpeE5vdGUKLX07Ci0KLS8vCiAvLyBFbmNhcHN1bGF0ZSBpbmZvIGxvZ3MgZm9yIGFsbCBv
YmplY3RzIHRoYXQgaGF2ZSB0aGVtLgogLy8KIC8vIFRoZSBtZXRob2RzIGFyZSBhIGdlbmVyYWwg
c2V0IG9mIHRvb2xzIGZvciBnZXR0aW5nIGEgdmFyaWV0eSBvZgogLy8gbWVzc2FnZXMgYW5kIHR5
cGVzIGluc2VydGVkIGludG8gdGhlIGxvZy4KIC8vCi1jbGFzcyBUSW5mb1NpbmtCYXNlIHsKLXB1
YmxpYzoKK2NsYXNzIFRJbmZvU2lua0Jhc2UKK3sKKyAgcHVibGljOgogICAgIFRJbmZvU2lua0Jh
c2UoKSB7fQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgVEluZm9TaW5rQmFzZSYg
b3BlcmF0b3I8PChjb25zdCBUJiB0KSB7CisgICAgVEluZm9TaW5rQmFzZSAmb3BlcmF0b3I8PChj
b25zdCBUICZ0KQorICAgIHsKICAgICAgICAgVFBlcnNpc3RTdHJpbmdTdHJlYW0gc3RyZWFtOwog
ICAgICAgICBzdHJlYW0gPDwgdDsKICAgICAgICAgc2luay5hcHBlbmQoc3RyZWFtLnN0cigpKTsK
QEAgLTQ5LDMzICs0Myw0MSBAQCBwdWJsaWM6CiAgICAgfQogICAgIC8vIE92ZXJyaWRlIDw8IG9w
ZXJhdG9yIGZvciBzcGVjaWZpYyB0eXBlcy4gSXQgaXMgZmFzdGVyIHRvIGFwcGVuZCBzdHJpbmdz
CiAgICAgLy8gYW5kIGNoYXJhY3RlcnMgZGlyZWN0bHkgdG8gdGhlIHNpbmsuCi0gICAgVEluZm9T
aW5rQmFzZSYgb3BlcmF0b3I8PChjaGFyIGMpIHsKKyAgICBUSW5mb1NpbmtCYXNlICZvcGVyYXRv
cjw8KGNoYXIgYykKKyAgICB7CiAgICAgICAgIHNpbmsuYXBwZW5kKDEsIGMpOwogICAgICAgICBy
ZXR1cm4gKnRoaXM7CiAgICAgfQotICAgIFRJbmZvU2lua0Jhc2UmIG9wZXJhdG9yPDwoY29uc3Qg
Y2hhciogc3RyKSB7CisgICAgVEluZm9TaW5rQmFzZSAmb3BlcmF0b3I8PChjb25zdCBjaGFyICpz
dHIpCisgICAgewogICAgICAgICBzaW5rLmFwcGVuZChzdHIpOwogICAgICAgICByZXR1cm4gKnRo
aXM7CiAgICAgfQotICAgIFRJbmZvU2lua0Jhc2UmIG9wZXJhdG9yPDwoY29uc3QgVFBlcnNpc3RT
dHJpbmcmIHN0cikgeworICAgIFRJbmZvU2lua0Jhc2UgJm9wZXJhdG9yPDwoY29uc3QgVFBlcnNp
c3RTdHJpbmcgJnN0cikKKyAgICB7CiAgICAgICAgIHNpbmsuYXBwZW5kKHN0cik7CiAgICAgICAg
IHJldHVybiAqdGhpczsKICAgICB9Ci0gICAgVEluZm9TaW5rQmFzZSYgb3BlcmF0b3I8PChjb25z
dCBUU3RyaW5nJiBzdHIpIHsKKyAgICBUSW5mb1NpbmtCYXNlICZvcGVyYXRvcjw8KGNvbnN0IFRT
dHJpbmcgJnN0cikKKyAgICB7CiAgICAgICAgIHNpbmsuYXBwZW5kKHN0ci5jX3N0cigpKTsKICAg
ICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KICAgICAvLyBNYWtlIHN1cmUgZmxvYXRzIGFyZSB3
cml0dGVuIHdpdGggY29ycmVjdCBwcmVjaXNpb24uCi0gICAgVEluZm9TaW5rQmFzZSYgb3BlcmF0
b3I8PChmbG9hdCBmKSB7CisgICAgVEluZm9TaW5rQmFzZSAmb3BlcmF0b3I8PChmbG9hdCBmKQor
ICAgIHsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYXQgbGVhc3Qgb25lIGRlY2ltYWwgcG9p
bnQgaXMgd3JpdHRlbi4gSWYgYSBudW1iZXIKICAgICAgICAgLy8gZG9lcyBub3QgaGF2ZSBhIGZy
YWN0aW9uYWwgcGFydCwgdGhlIGRlZmF1bHQgcHJlY2lzaW9uIGZvcm1hdCBkb2VzCiAgICAgICAg
IC8vIG5vdCB3cml0ZSB0aGUgZGVjaW1hbCBwb3J0aW9uIHdoaWNoIGdldHMgaW50ZXJwcmV0ZWQg
YXMgaW50ZWdlciBieQogICAgICAgICAvLyB0aGUgY29tcGlsZXIuCiAgICAgICAgIFRQZXJzaXN0
U3RyaW5nU3RyZWFtIHN0cmVhbTsKLSAgICAgICAgaWYgKGZyYWN0aW9uYWxQYXJ0KGYpID09IDAu
MGYpIHsKKyAgICAgICAgaWYgKGZyYWN0aW9uYWxQYXJ0KGYpID09IDAuMGYpCisgICAgICAgIHsK
ICAgICAgICAgICAgIHN0cmVhbS5wcmVjaXNpb24oMSk7CiAgICAgICAgICAgICBzdHJlYW0gPDwg
c3RkOjpzaG93cG9pbnQgPDwgc3RkOjpmaXhlZCA8PCBmOwotICAgICAgICB9IGVsc2UgeworICAg
ICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewogICAgICAgICAgICAgc3RyZWFtLnVuc2V0
ZihzdGQ6Omlvczo6Zml4ZWQpOwogICAgICAgICAgICAgc3RyZWFtLnVuc2V0ZihzdGQ6Omlvczo6
c2NpZW50aWZpYyk7CiAgICAgICAgICAgICBzdHJlYW0ucHJlY2lzaW9uKDgpOwpAQCAtODUsOCAr
ODcsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CiAgICAgLy8gV3Jp
dGUgYm9vbGVhbiB2YWx1ZXMgYXMgdGhlaXIgbmFtZXMgaW5zdGVhZCBvZiBpbnRlZ3JhbCB2YWx1
ZS4KLSAgICBUSW5mb1NpbmtCYXNlJiBvcGVyYXRvcjw8KGJvb2wgYikgewotICAgICAgICBjb25z
dCBjaGFyKiBzdHIgPSBiID8gInRydWUiIDogImZhbHNlIjsKKyAgICBUSW5mb1NpbmtCYXNlICZv
cGVyYXRvcjw8KGJvb2wgYikKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIgKnN0ciA9IGIgPyAi
dHJ1ZSIgOiAiZmFsc2UiOwogICAgICAgICBzaW5rLmFwcGVuZChzdHIpOwogICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgfQpAQCAtOTQsMjMgKzk3LDI0IEBAIHB1YmxpYzoKICAgICB2b2lkIGVy
YXNlKCkgeyBzaW5rLmNsZWFyKCk7IH0KICAgICBpbnQgc2l6ZSgpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PGludD4oc2luay5zaXplKCkpOyB9CiAKLSAgICBjb25zdCBUUGVyc2lzdFN0cmluZyYgc3Ry
KCkgY29uc3QgeyByZXR1cm4gc2luazsgfQotICAgIGNvbnN0IGNoYXIqIGNfc3RyKCkgY29uc3Qg
eyByZXR1cm4gc2luay5jX3N0cigpOyB9CisgICAgY29uc3QgVFBlcnNpc3RTdHJpbmcgJnN0cigp
IGNvbnN0IHsgcmV0dXJuIHNpbms7IH0KKyAgICBjb25zdCBjaGFyICpjX3N0cigpIGNvbnN0IHsg
cmV0dXJuIHNpbmsuY19zdHIoKTsgfQogCi0gICAgdm9pZCBwcmVmaXgoVFByZWZpeFR5cGUgcCk7
CisgICAgdm9pZCBwcmVmaXgoU2V2ZXJpdHkgc2V2ZXJpdHkpOwogICAgIHZvaWQgbG9jYXRpb24o
aW50IGZpbGUsIGludCBsaW5lKTsKLSAgICB2b2lkIGxvY2F0aW9uKGNvbnN0IFRTb3VyY2VMb2Mm
IGxvYyk7Ci0gICAgdm9pZCBtZXNzYWdlKFRQcmVmaXhUeXBlIHAsIGNvbnN0IFRTb3VyY2VMb2Mm
IGxvYywgY29uc3QgY2hhciogbSk7CiAKLXByaXZhdGU6CisgIHByaXZhdGU6CiAgICAgVFBlcnNp
c3RTdHJpbmcgc2luazsKIH07CiAKLWNsYXNzIFRJbmZvU2luayB7Ci1wdWJsaWM6CitjbGFzcyBU
SW5mb1NpbmsKK3sKKyAgcHVibGljOgogICAgIFRJbmZvU2lua0Jhc2UgaW5mbzsKICAgICBUSW5m
b1NpbmtCYXNlIGRlYnVnOwogICAgIFRJbmZvU2lua0Jhc2Ugb2JqOwogfTsKIAotI2VuZGlmIC8v
IENPTVBJTEVSX1RSQU5TTEFUT1JfSU5GT1NJTktfSF8KK30gIC8vIG5hbWVzcGFjZSBzaAorCisj
ZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfSU5GT1NJTktfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemUu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5p
dGlhbGl6ZS5jcHAKaW5kZXggNzU5ODM0Zjg1NzU0NzhiZTBjZTU5MzZhMTc1MjU5MDIzYTRhOWM3
Yy4uZWRjNTBiODk5YzUyODRjZmMxZjY0OWFiNWZjYjllNzI1Mjk1MzYwYiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6
ZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvSW5pdGlhbGl6ZS5jcHAKQEAgLTYsNyArNiw3IEBACiAKIC8vCiAvLyBDcmVhdGUgc3ltYm9s
cyB0aGF0IGRlY2xhcmUgYnVpbHQtaW4gZGVmaW5pdGlvbnMsIGFkZCBidWlsdC1pbnMgdGhhdAot
Ly8gY2Fubm90IGJlIGV4cHJlc3NlZCBpbiB0aGUgZmlsZXMsIGFuZCBlc3RhYmxpc2ggbWFwcGlu
Z3MgYmV0d2VlbiAKKy8vIGNhbm5vdCBiZSBleHByZXNzZWQgaW4gdGhlIGZpbGVzLCBhbmQgZXN0
YWJsaXNoIG1hcHBpbmdzIGJldHdlZW4KIC8vIGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgb3BlcmF0
b3JzLgogLy8KIApAQCAtMTYsMTggKzE2LDI1IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci9JbnRlcm1Ob2RlLmgiCiAjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKIAotdm9pZCBJbnNlcnRC
dWlsdEluRnVuY3Rpb25zKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIGNvbnN0
IFNoQnVpbHRJblJlc291cmNlcyAmcmVzb3VyY2VzLCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxl
KQorbmFtZXNwYWNlIHNoCiB7Ci0gICAgY29uc3QgVFR5cGUgKmZsb2F0MSA9IFRDYWNoZTo6Z2V0
VHlwZShFYnRGbG9hdCk7Ci0gICAgY29uc3QgVFR5cGUgKmZsb2F0MiA9IFRDYWNoZTo6Z2V0VHlw
ZShFYnRGbG9hdCwgMik7Ci0gICAgY29uc3QgVFR5cGUgKmZsb2F0MyA9IFRDYWNoZTo6Z2V0VHlw
ZShFYnRGbG9hdCwgMyk7Ci0gICAgY29uc3QgVFR5cGUgKmZsb2F0NCA9IFRDYWNoZTo6Z2V0VHlw
ZShFYnRGbG9hdCwgNCk7Ci0gICAgY29uc3QgVFR5cGUgKmludDEgPSBUQ2FjaGU6OmdldFR5cGUo
RWJ0SW50KTsKLSAgICBjb25zdCBUVHlwZSAqaW50MiA9IFRDYWNoZTo6Z2V0VHlwZShFYnRJbnQs
IDIpOwotICAgIGNvbnN0IFRUeXBlICppbnQzID0gVENhY2hlOjpnZXRUeXBlKEVidEludCwgMyk7
Ci0gICAgY29uc3QgVFR5cGUgKnVpbnQxID0gVENhY2hlOjpnZXRUeXBlKEVidFVJbnQpOwotICAg
IGNvbnN0IFRUeXBlICpib29sMSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRCb29sKTsKLSAgICBjb25z
dCBUVHlwZSAqZ2VuVHlwZSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRHZW5UeXBlKTsKKwordm9pZCBJ
bnNlcnRCdWlsdEluRnVuY3Rpb25zKHNoOjpHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTaFNoYWRlclNwZWMgc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMgJnJlc291cmNlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlKQoreworICAgIGNvbnN0IFRUeXBl
ICp2b2lkVHlwZSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRWb2lkKTsKKyAgICBjb25zdCBUVHlwZSAq
ZmxvYXQxICAgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQpOworICAgIGNvbnN0IFRUeXBlICpm
bG9hdDIgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgMik7CisgICAgY29uc3QgVFR5cGUg
KmZsb2F0MyAgID0gVENhY2hlOjpnZXRUeXBlKEVidEZsb2F0LCAzKTsKKyAgICBjb25zdCBUVHlw
ZSAqZmxvYXQ0ICAgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIDQpOworICAgIGNvbnN0IFRU
eXBlICppbnQxICAgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRJbnQpOworICAgIGNvbnN0IFRUeXBl
ICppbnQyICAgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRJbnQsIDIpOworICAgIGNvbnN0IFRUeXBl
ICppbnQzICAgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRJbnQsIDMpOworICAgIGNvbnN0IFRUeXBl
ICp1aW50MSAgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRVSW50KTsKKyAgICBjb25zdCBUVHlwZSAq
Ym9vbDEgICAgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0Qm9vbCk7CisgICAgY29uc3QgVFR5cGUgKmdl
blR5cGUgID0gVENhY2hlOjpnZXRUeXBlKEVidEdlblR5cGUpOwogICAgIGNvbnN0IFRUeXBlICpn
ZW5JVHlwZSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRHZW5JVHlwZSk7CiAgICAgY29uc3QgVFR5cGUg
KmdlblVUeXBlID0gVENhY2hlOjpnZXRUeXBlKEVidEdlblVUeXBlKTsKICAgICBjb25zdCBUVHlw
ZSAqZ2VuQlR5cGUgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0R2VuQlR5cGUpOwpAQCAtMzUsMTEzICs0
MiwxMTcgQEAgdm9pZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25zKHNoOjpHTGVudW0gdHlwZSwgU2hT
aGFkZXJTcGVjIHNwZWMsIGNvbnN0IFNoQnVpbHRJblIKICAgICAvLwogICAgIC8vIEFuZ2xlIGFu
ZCBUcmlnb25vbWV0cmljIEZ1bmN0aW9ucy4KICAgICAvLwotICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BSYWRpYW5zLCBnZW5UeXBlLCAicmFkaWFucyIs
IGdlblR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5T
LCBFT3BEZWdyZWVzLCBnZW5UeXBlLCAiZGVncmVlcyIsIGdlblR5cGUpOwotICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BTaW4sIGdlblR5cGUsICJzaW4i
LCBnZW5UeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElO
UywgRU9wQ29zLCBnZW5UeXBlLCAiY29zIiwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcFRhbiwgZ2VuVHlwZSwgInRhbiIsIGdlblR5
cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BB
c2luLCBnZW5UeXBlLCAiYXNpbiIsIGdlblR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BBY29zLCBnZW5UeXBlLCAiYWNvcyIsIGdlblR5cGUp
OwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BBdGFu
LCBnZW5UeXBlLCAiYXRhbiIsIGdlblR5cGUsIGdlblR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BBdGFuLCBnZW5UeXBlLCAiYXRhbiIsIGdl
blR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVP
cFNpbmgsIGdlblR5cGUsICJzaW5oIiwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wQ29zaCwgZ2VuVHlwZSwgImNvc2giLCBnZW5UeXBl
KTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BUYW5o
LCBnZW5UeXBlLCAidGFuaCIsIGdlblR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oRVNTTDNfQlVJTFRJTlMsIEVPcEFzaW5oLCBnZW5UeXBlLCAiYXNpbmgiLCBnZW5UeXBlKTsK
LSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BBY29zaCwg
Z2VuVHlwZSwgImFjb3NoIiwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihFU1NMM19CVUlMVElOUywgRU9wQXRhbmgsIGdlblR5cGUsICJhdGFuaCIsIGdlblR5cGUpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcFJhZGlh
bnMsIGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChD
T01NT05fQlVJTFRJTlMsIEVPcERlZ3JlZXMsIGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcFNpbiwgZ2VuVHlwZSwg
Z2VuVHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElO
UywgRU9wQ29zLCBnZW5UeXBlLCBnZW5UeXBlKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BUYW4sIGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcEFzaW4sIGdlblR5
cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJ
TFRJTlMsIEVPcEFjb3MsIGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcEF0YW4sIGdlblR5cGUsIGdlblR5cGUsIGdl
blR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMs
IEVPcEF0YW4sIGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW5PcChFU1NMM19CVUlMVElOUywgRU9wU2luaCwgZ2VuVHlwZSwgZ2VuVHlwZSk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BDb3NoLCBnZW5UeXBl
LCBnZW5UeXBlKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJ
TlMsIEVPcFRhbmgsIGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wQXNpbmgsIGdlblR5cGUsIGdlblR5cGUpOworICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wQWNvc2gsIGdl
blR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19C
VUlMVElOUywgRU9wQXRhbmgsIGdlblR5cGUsIGdlblR5cGUpOwogCiAgICAgLy8KICAgICAvLyBF
eHBvbmVudGlhbCBGdW5jdGlvbnMuCiAgICAgLy8KLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKENPTU1PTl9CVUlMVElOUywgRU9wUG93LCBnZW5UeXBlLCAicG93IiwgZ2VuVHlwZSwgZ2Vu
VHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVP
cEV4cCwgZ2VuVHlwZSwgImV4cCIsIGdlblR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BMb2csIGdlblR5cGUsICJsb2ciLCBnZW5UeXBlKTsK
LSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9wRXhwMiwg
Z2VuVHlwZSwgImV4cDIiLCBnZW5UeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KENPTU1PTl9CVUlMVElOUywgRU9wTG9nMiwgZ2VuVHlwZSwgImxvZzIiLCBnZW5UeXBlKTsKLSAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9wU3FydCwgZ2Vu
VHlwZSwgInNxcnQiLCBnZW5UeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENP
TU1PTl9CVUlMVElOUywgRU9wSW52ZXJzZVNxcnQsIGdlblR5cGUsICJpbnZlcnNlc3FydCIsIGdl
blR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMs
IEVPcFBvdywgZ2VuVHlwZSwgZ2VuVHlwZSwgZ2VuVHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9wRXhwLCBnZW5UeXBlLCBnZW5UeXBlKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BMb2cs
IGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01N
T05fQlVJTFRJTlMsIEVPcEV4cDIsIGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcExvZzIsIGdlblR5cGUsIGdlblR5
cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVP
cFNxcnQsIGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5P
cChDT01NT05fQlVJTFRJTlMsIEVPcEludmVyc2VTcXJ0LCBnZW5UeXBlLCBnZW5UeXBlKTsKIAog
ICAgIC8vCiAgICAgLy8gQ29tbW9uIEZ1bmN0aW9ucy4KICAgICAvLwotICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BBYnMsIGdlblR5cGUsICJhYnMiLCBn
ZW5UeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBF
T3BBYnMsIGdlbklUeXBlLCAiYWJzIiwgZ2VuSVR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BTaWduLCBnZW5UeXBlLCAic2lnbiIsIGdlblR5
cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcFNp
Z24sIGdlbklUeXBlLCAic2lnbiIsIGdlbklUeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9wRmxvb3IsIGdlblR5cGUsICJmbG9vciIsIGdlblR5
cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcFRy
dW5jLCBnZW5UeXBlLCAidHJ1bmMiLCBnZW5UeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BSb3VuZCwgZ2VuVHlwZSwgInJvdW5kIiwgZ2VuVHlw
ZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wUm91
bmRFdmVuLCBnZW5UeXBlLCAicm91bmRFdmVuIiwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcENlaWwsIGdlblR5cGUsICJjZWlsIiwg
Z2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMs
IEVPcEZyYWN0LCBnZW5UeXBlLCAiZnJhY3QiLCBnZW5UeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9wTW9kLCBnZW5UeXBlLCAibW9kIiwgZ2Vu
VHlwZSwgZmxvYXQxKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlM
VElOUywgRU9wTW9kLCBnZW5UeXBlLCAibW9kIiwgZ2VuVHlwZSwgZ2VuVHlwZSk7Ci0gICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcE1pbiwgZ2VuVHlwZSwg
Im1pbiIsIGdlblR5cGUsIGZsb2F0MSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihD
T01NT05fQlVJTFRJTlMsIEVPcE1pbiwgZ2VuVHlwZSwgIm1pbiIsIGdlblR5cGUsIGdlblR5cGUp
OwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcE1pbiwg
Z2VuSVR5cGUsICJtaW4iLCBnZW5JVHlwZSwgZ2VuSVR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcE1pbiwgZ2VuSVR5cGUsICJtaW4iLCBnZW5J
VHlwZSwgaW50MSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElO
UywgRU9wTWluLCBnZW5VVHlwZSwgIm1pbiIsIGdlblVUeXBlLCBnZW5VVHlwZSk7Ci0gICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wTWluLCBnZW5VVHlwZSwg
Im1pbiIsIGdlblVUeXBlLCB1aW50MSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihD
T01NT05fQlVJTFRJTlMsIEVPcE1heCwgZ2VuVHlwZSwgIm1heCIsIGdlblR5cGUsIGZsb2F0MSk7
Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcE1heCwg
Z2VuVHlwZSwgIm1heCIsIGdlblR5cGUsIGdlblR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcE1heCwgZ2VuSVR5cGUsICJtYXgiLCBnZW5JVHlw
ZSwgZ2VuSVR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJ
TlMsIEVPcE1heCwgZ2VuSVR5cGUsICJtYXgiLCBnZW5JVHlwZSwgaW50MSk7Ci0gICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wTWF4LCBnZW5VVHlwZSwgIm1h
eCIsIGdlblVUeXBlLCBnZW5VVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihF
U1NMM19CVUlMVElOUywgRU9wTWF4LCBnZW5VVHlwZSwgIm1heCIsIGdlblVUeXBlLCB1aW50MSk7
Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcENsYW1w
LCBnZW5UeXBlLCAiY2xhbXAiLCBnZW5UeXBlLCBmbG9hdDEsIGZsb2F0MSk7Ci0gICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcENsYW1wLCBnZW5UeXBlLCAi
Y2xhbXAiLCBnZW5UeXBlLCBnZW5UeXBlLCBnZW5UeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BDbGFtcCwgZ2VuSVR5cGUsICJjbGFtcCIsIGdl
bklUeXBlLCBpbnQxLCBpbnQxKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wz
X0JVSUxUSU5TLCBFT3BDbGFtcCwgZ2VuSVR5cGUsICJjbGFtcCIsIGdlbklUeXBlLCBnZW5JVHlw
ZSwgZ2VuSVR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJ
TlMsIEVPcENsYW1wLCBnZW5VVHlwZSwgImNsYW1wIiwgZ2VuVVR5cGUsIHVpbnQxLCB1aW50MSk7
Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wQ2xhbXAs
IGdlblVUeXBlLCAiY2xhbXAiLCBnZW5VVHlwZSwgZ2VuVVR5cGUsIGdlblVUeXBlKTsKLSAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9wTWl4LCBnZW5UeXBl
LCAibWl4IiwgZ2VuVHlwZSwgZ2VuVHlwZSwgZmxvYXQxKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9wTWl4LCBnZW5UeXBlLCAibWl4IiwgZ2VuVHlw
ZSwgZ2VuVHlwZSwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NM
M19CVUlMVElOUywgRU9wTWl4LCBnZW5UeXBlLCAibWl4IiwgZ2VuVHlwZSwgZ2VuVHlwZSwgZ2Vu
QlR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBF
T3BTdGVwLCBnZW5UeXBlLCAic3RlcCIsIGdlblR5cGUsIGdlblR5cGUpOwotICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BTdGVwLCBnZW5UeXBlLCAic3Rl
cCIsIGZsb2F0MSwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01N
T05fQlVJTFRJTlMsIEVPcFNtb290aFN0ZXAsIGdlblR5cGUsICJzbW9vdGhzdGVwIiwgZ2VuVHlw
ZSwgZ2VuVHlwZSwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01N
T05fQlVJTFRJTlMsIEVPcFNtb290aFN0ZXAsIGdlblR5cGUsICJzbW9vdGhzdGVwIiwgZmxvYXQx
LCBmbG9hdDEsIGdlblR5cGUpOwotCi0gICAgY29uc3QgVFR5cGUgKm91dEZsb2F0MSA9IFRDYWNo
ZTo6Z2V0VHlwZShFYnRGbG9hdCwgRXZxT3V0KTsKLSAgICBjb25zdCBUVHlwZSAqb3V0RmxvYXQy
ID0gVENhY2hlOjpnZXRUeXBlKEVidEZsb2F0LCBFdnFPdXQsIDIpOwotICAgIGNvbnN0IFRUeXBl
ICpvdXRGbG9hdDMgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIEV2cU91dCwgMyk7Ci0gICAg
Y29uc3QgVFR5cGUgKm91dEZsb2F0NCA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgRXZxT3V0
LCA0KTsKLQotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVP
cE1vZGYsIGZsb2F0MSwgIm1vZGYiLCBmbG9hdDEsIG91dEZsb2F0MSk7Ci0gICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wTW9kZiwgZmxvYXQyLCAibW9kZiIs
IGZsb2F0Miwgb3V0RmxvYXQyKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wz
X0JVSUxUSU5TLCBFT3BNb2RmLCBmbG9hdDMsICJtb2RmIiwgZmxvYXQzLCBvdXRGbG9hdDMpOwot
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcE1vZGYsIGZs
b2F0NCwgIm1vZGYiLCBmbG9hdDQsIG91dEZsb2F0NCk7Ci0KLSAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BJc05hbiwgZ2VuQlR5cGUsICJpc25hbiIsIGdl
blR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVP
cElzSW5mLCBnZW5CVHlwZSwgImlzaW5mIiwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wRmxvYXRCaXRzVG9JbnQsIGdlbklUeXBlLCAi
ZmxvYXRCaXRzVG9JbnQiLCBnZW5UeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KEVTU0wzX0JVSUxUSU5TLCBFT3BGbG9hdEJpdHNUb1VpbnQsIGdlblVUeXBlLCAiZmxvYXRCaXRz
VG9VaW50IiwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19C
VUlMVElOUywgRU9wSW50Qml0c1RvRmxvYXQsIGdlblR5cGUsICJpbnRCaXRzVG9GbG9hdCIsIGdl
bklUeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBF
T3BVaW50Qml0c1RvRmxvYXQsIGdlblR5cGUsICJ1aW50Qml0c1RvRmxvYXQiLCBnZW5VVHlwZSk7
Ci0KLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BQYWNr
U25vcm0yeDE2LCB1aW50MSwgInBhY2tTbm9ybTJ4MTYiLCBmbG9hdDIpOwotICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcFBhY2tVbm9ybTJ4MTYsIHVpbnQx
LCAicGFja1Vub3JtMngxNiIsIGZsb2F0Mik7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihFU1NMM19CVUlMVElOUywgRU9wUGFja0hhbGYyeDE2LCB1aW50MSwgInBhY2tIYWxmMngxNiIs
IGZsb2F0Mik7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywg
RU9wVW5wYWNrU25vcm0yeDE2LCBmbG9hdDIsICJ1bnBhY2tTbm9ybTJ4MTYiLCB1aW50MSk7Ci0g
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wVW5wYWNrVW5v
cm0yeDE2LCBmbG9hdDIsICJ1bnBhY2tVbm9ybTJ4MTYiLCB1aW50MSk7Ci0gICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wVW5wYWNrSGFsZjJ4MTYsIGZsb2F0
MiwgInVucGFja0hhbGYyeDE2IiwgdWludDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcEFicywgZ2VuVHlwZSwgZ2VuVHlwZSk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BBYnMsIGdlbklUeXBl
LCBnZW5JVHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlM
VElOUywgRU9wU2lnbiwgZ2VuVHlwZSwgZ2VuVHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BTaWduLCBnZW5JVHlwZSwgZ2VuSVR5cGUpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcEZsb29y
LCBnZW5UeXBlLCBnZW5UeXBlKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNT
TDNfQlVJTFRJTlMsIEVPcFRydW5jLCBnZW5UeXBlLCBnZW5UeXBlKTsKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcFJvdW5kLCBnZW5UeXBlLCBnZW5U
eXBlKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVP
cFJvdW5kRXZlbiwgZ2VuVHlwZSwgZ2VuVHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9wQ2VpbCwgZ2VuVHlwZSwgZ2VuVHlwZSk7CisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9wRnJhY3QsIGdl
blR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05f
QlVJTFRJTlMsIEVPcE1vZCwgZ2VuVHlwZSwgZ2VuVHlwZSwgZmxvYXQxKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BNb2QsIGdlblR5cGUsIGdl
blR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05f
QlVJTFRJTlMsIEVPcE1pbiwgZ2VuVHlwZSwgZ2VuVHlwZSwgZmxvYXQxKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BNaW4sIGdlblR5cGUsIGdl
blR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19C
VUlMVElOUywgRU9wTWluLCBnZW5JVHlwZSwgZ2VuSVR5cGUsIGdlbklUeXBlKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcE1pbiwgZ2VuSVR5cGUs
IGdlbklUeXBlLCBpbnQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNf
QlVJTFRJTlMsIEVPcE1pbiwgZ2VuVVR5cGUsIGdlblVUeXBlLCBnZW5VVHlwZSk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BNaW4sIGdlblVUeXBl
LCBnZW5VVHlwZSwgdWludDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01N
T05fQlVJTFRJTlMsIEVPcE1heCwgZ2VuVHlwZSwgZ2VuVHlwZSwgZmxvYXQxKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BNYXgsIGdlblR5cGUs
IGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NM
M19CVUlMVElOUywgRU9wTWF4LCBnZW5JVHlwZSwgZ2VuSVR5cGUsIGdlbklUeXBlKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcE1heCwgZ2VuSVR5
cGUsIGdlbklUeXBlLCBpbnQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNT
TDNfQlVJTFRJTlMsIEVPcE1heCwgZ2VuVVR5cGUsIGdlblVUeXBlLCBnZW5VVHlwZSk7CisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BNYXgsIGdlblVU
eXBlLCBnZW5VVHlwZSwgdWludDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChD
T01NT05fQlVJTFRJTlMsIEVPcENsYW1wLCBnZW5UeXBlLCBnZW5UeXBlLCBmbG9hdDEsIGZsb2F0
MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9w
Q2xhbXAsIGdlblR5cGUsIGdlblR5cGUsIGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wQ2xhbXAsIGdlbklUeXBlLCBn
ZW5JVHlwZSwgaW50MSwgaW50MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVT
U0wzX0JVSUxUSU5TLCBFT3BDbGFtcCwgZ2VuSVR5cGUsIGdlbklUeXBlLCBnZW5JVHlwZSwgZ2Vu
SVR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywg
RU9wQ2xhbXAsIGdlblVUeXBlLCBnZW5VVHlwZSwgdWludDEsIHVpbnQxKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcENsYW1wLCBnZW5VVHlwZSwg
Z2VuVVR5cGUsIGdlblVUeXBlLCBnZW5VVHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9wTWl4LCBnZW5UeXBlLCBnZW5UeXBlLCBnZW5UeXBl
LCBmbG9hdDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJ
TlMsIEVPcE1peCwgZ2VuVHlwZSwgZ2VuVHlwZSwgZ2VuVHlwZSwgZ2VuVHlwZSk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BNaXgsIGdlblR5cGUs
IGdlblR5cGUsIGdlblR5cGUsIGdlbkJUeXBlKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BTdGVwLCBnZW5UeXBlLCBnZW5UeXBlLCBnZW5UeXBl
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BT
dGVwLCBnZW5UeXBlLCBmbG9hdDEsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcFNtb290aFN0ZXAsIGdlblR5cGUsIGdlblR5cGUs
IGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01N
T05fQlVJTFRJTlMsIEVPcFNtb290aFN0ZXAsIGdlblR5cGUsIGZsb2F0MSwgZmxvYXQxLCBnZW5U
eXBlKTsKKworICAgIGNvbnN0IFRUeXBlICpvdXRHZW5UeXBlID0gVENhY2hlOjpnZXRUeXBlKEVi
dEdlblR5cGUsIEV2cU91dCk7CisgICAgY29uc3QgVFR5cGUgKm91dEdlbklUeXBlID0gVENhY2hl
OjpnZXRUeXBlKEVidEdlbklUeXBlLCBFdnFPdXQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BNb2RmLCBnZW5UeXBlLCBnZW5UeXBlLCBvdXRH
ZW5UeXBlKTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElO
UywgRU9wSXNOYW4sIGdlbkJUeXBlLCBnZW5UeXBlKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcElzSW5mLCBnZW5CVHlwZSwgZ2VuVHlwZSk7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BGbG9hdEJp
dHNUb0ludCwgZ2VuSVR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW5PcChFU1NMM19CVUlMVElOUywgRU9wRmxvYXRCaXRzVG9VaW50LCBnZW5VVHlwZSwgZ2VuVHlw
ZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BJ
bnRCaXRzVG9GbG9hdCwgZ2VuVHlwZSwgZ2VuSVR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wVWludEJpdHNUb0Zsb2F0LCBnZW5UeXBlLCBn
ZW5VVHlwZSk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfMV9CVUlM
VElOUywgRU9wRnJleHAsIGdlblR5cGUsIGdlblR5cGUsIG91dEdlbklUeXBlKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfMV9CVUlMVElOUywgRU9wTGRleHAsIGdlblR5
cGUsIGdlblR5cGUsIGdlbklUeXBlKTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5P
cChFU1NMM19CVUlMVElOUywgRU9wUGFja1Nub3JtMngxNiwgdWludDEsIGZsb2F0Mik7CisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BQYWNrVW5vcm0y
eDE2LCB1aW50MSwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNT
TDNfQlVJTFRJTlMsIEVPcFBhY2tIYWxmMngxNiwgdWludDEsIGZsb2F0Mik7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BVbnBhY2tTbm9ybTJ4MTYs
IGZsb2F0MiwgdWludDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19C
VUlMVElOUywgRU9wVW5wYWNrVW5vcm0yeDE2LCBmbG9hdDIsIHVpbnQxKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcFVucGFja0hhbGYyeDE2LCBm
bG9hdDIsIHVpbnQxKTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM18x
X0JVSUxUSU5TLCBFT3BQYWNrVW5vcm00eDgsIHVpbnQxLCBmbG9hdDQpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM18xX0JVSUxUSU5TLCBFT3BQYWNrU25vcm00eDgsIHVp
bnQxLCBmbG9hdDQpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM18xX0JV
SUxUSU5TLCBFT3BVbnBhY2tVbm9ybTR4OCwgZmxvYXQ0LCB1aW50MSk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzXzFfQlVJTFRJTlMsIEVPcFVucGFja1Nub3JtNHg4LCBm
bG9hdDQsIHVpbnQxKTsKIAogICAgIC8vCiAgICAgLy8gR2VvbWV0cmljIEZ1bmN0aW9ucy4KICAg
ICAvLwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BM
ZW5ndGgsIGZsb2F0MSwgImxlbmd0aCIsIGdlblR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BEaXN0YW5jZSwgZmxvYXQxLCAiZGlzdGFuY2Ui
LCBnZW5UeXBlLCBnZW5UeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1P
Tl9CVUlMVElOUywgRU9wRG90LCBmbG9hdDEsICJkb3QiLCBnZW5UeXBlLCBnZW5UeXBlKTsKLSAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9wQ3Jvc3MsIGZs
b2F0MywgImNyb3NzIiwgZmxvYXQzLCBmbG9hdDMpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BOb3JtYWxpemUsIGdlblR5cGUsICJub3JtYWxpemUi
LCBnZW5UeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElO
UywgRU9wRmFjZUZvcndhcmQsIGdlblR5cGUsICJmYWNlZm9yd2FyZCIsIGdlblR5cGUsIGdlblR5
cGUsIGdlblR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxU
SU5TLCBFT3BSZWZsZWN0LCBnZW5UeXBlLCAicmVmbGVjdCIsIGdlblR5cGUsIGdlblR5cGUpOwot
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BSZWZyYWN0
LCBnZW5UeXBlLCAicmVmcmFjdCIsIGdlblR5cGUsIGdlblR5cGUsIGZsb2F0MSk7Ci0KLSAgICBj
b25zdCBUVHlwZSAqbWF0MiA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgMiwgMik7Ci0gICAg
Y29uc3QgVFR5cGUgKm1hdDMgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIDMsIDMpOwotICAg
IGNvbnN0IFRUeXBlICptYXQ0ID0gVENhY2hlOjpnZXRUeXBlKEVidEZsb2F0LCA0LCA0KTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BMZW5ndGgs
IGZsb2F0MSwgZ2VuVHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1P
Tl9CVUlMVElOUywgRU9wRGlzdGFuY2UsIGZsb2F0MSwgZ2VuVHlwZSwgZ2VuVHlwZSk7CisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9wRG90LCBmbG9h
dDEsIGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChD
T01NT05fQlVJTFRJTlMsIEVPcENyb3NzLCBmbG9hdDMsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BOb3JtYWxpemUs
IGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01N
T05fQlVJTFRJTlMsIEVPcEZhY2VGb3J3YXJkLCBnZW5UeXBlLCBnZW5UeXBlLCBnZW5UeXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5UeXBlKTsKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BSZWZsZWN0LCBnZW5UeXBlLCBn
ZW5UeXBlLCBnZW5UeXBlKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9O
X0JVSUxUSU5TLCBFT3BSZWZyYWN0LCBnZW5UeXBlLCBnZW5UeXBlLCBnZW5UeXBlLCBmbG9hdDEp
OworCisgICAgY29uc3QgVFR5cGUgKm1hdDIgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwg
MiwgMik7CisgICAgY29uc3QgVFR5cGUgKm1hdDMgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9h
dCwgMywgMyk7CisgICAgY29uc3QgVFR5cGUgKm1hdDQgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRG
bG9hdCwgNCwgNCk7CiAgICAgY29uc3QgVFR5cGUgKm1hdDJ4MyA9IFRDYWNoZTo6Z2V0VHlwZShF
YnRGbG9hdCwgMiwgMyk7CiAgICAgY29uc3QgVFR5cGUgKm1hdDN4MiA9IFRDYWNoZTo6Z2V0VHlw
ZShFYnRGbG9hdCwgMywgMik7CiAgICAgY29uc3QgVFR5cGUgKm1hdDJ4NCA9IFRDYWNoZTo6Z2V0
VHlwZShFYnRGbG9hdCwgMiwgNCk7CkBAIC0xNTIsNDUgKzE2Myw0NSBAQCB2b2lkIEluc2VydEJ1
aWx0SW5GdW5jdGlvbnMoc2g6OkdMZW51bSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgY29uc3Qg
U2hCdWlsdEluUgogICAgIC8vCiAgICAgLy8gTWF0cml4IEZ1bmN0aW9ucy4KICAgICAvLwotICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BNdWwsIG1hdDIs
ICJtYXRyaXhDb21wTXVsdCIsIG1hdDIsIG1hdDIpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BNdWwsIG1hdDMsICJtYXRyaXhDb21wTXVsdCIsIG1h
dDMsIG1hdDMpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5T
LCBFT3BNdWwsIG1hdDQsICJtYXRyaXhDb21wTXVsdCIsIG1hdDQsIG1hdDQpOwotICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcE11bCwgbWF0MngzLCAibWF0
cml4Q29tcE11bHQiLCBtYXQyeDMsIG1hdDJ4Myk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihFU1NMM19CVUlMVElOUywgRU9wTXVsLCBtYXQzeDIsICJtYXRyaXhDb21wTXVsdCIsIG1h
dDN4MiwgbWF0M3gyKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxU
SU5TLCBFT3BNdWwsIG1hdDJ4NCwgIm1hdHJpeENvbXBNdWx0IiwgbWF0Mng0LCBtYXQyeDQpOwot
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcE11bCwgbWF0
NHgyLCAibWF0cml4Q29tcE11bHQiLCBtYXQ0eDIsIG1hdDR4Mik7Ci0gICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wTXVsLCBtYXQzeDQsICJtYXRyaXhDb21w
TXVsdCIsIG1hdDN4NCwgbWF0M3g0KTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVT
U0wzX0JVSUxUSU5TLCBFT3BNdWwsIG1hdDR4MywgIm1hdHJpeENvbXBNdWx0IiwgbWF0NHgzLCBt
YXQ0eDMpOwotCi0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywg
RU9wT3V0ZXJQcm9kdWN0LCBtYXQyLCAib3V0ZXJQcm9kdWN0IiwgZmxvYXQyLCBmbG9hdDIpOwot
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcE91dGVyUHJv
ZHVjdCwgbWF0MywgIm91dGVyUHJvZHVjdCIsIGZsb2F0MywgZmxvYXQzKTsKLSAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BPdXRlclByb2R1Y3QsIG1hdDQs
ICJvdXRlclByb2R1Y3QiLCBmbG9hdDQsIGZsb2F0NCk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wT3V0ZXJQcm9kdWN0LCBtYXQyeDMsICJvdXRlclBy
b2R1Y3QiLCBmbG9hdDMsIGZsb2F0Mik7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihF
U1NMM19CVUlMVElOUywgRU9wT3V0ZXJQcm9kdWN0LCBtYXQzeDIsICJvdXRlclByb2R1Y3QiLCBm
bG9hdDIsIGZsb2F0Myk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlM
VElOUywgRU9wT3V0ZXJQcm9kdWN0LCBtYXQyeDQsICJvdXRlclByb2R1Y3QiLCBmbG9hdDQsIGZs
b2F0Mik7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9w
T3V0ZXJQcm9kdWN0LCBtYXQ0eDIsICJvdXRlclByb2R1Y3QiLCBmbG9hdDIsIGZsb2F0NCk7Ci0g
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wT3V0ZXJQcm9k
dWN0LCBtYXQzeDQsICJvdXRlclByb2R1Y3QiLCBmbG9hdDQsIGZsb2F0Myk7Ci0gICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wT3V0ZXJQcm9kdWN0LCBtYXQ0
eDMsICJvdXRlclByb2R1Y3QiLCBmbG9hdDMsIGZsb2F0NCk7Ci0KLSAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BUcmFuc3Bvc2UsIG1hdDIsICJ0cmFuc3Bv
c2UiLCBtYXQyKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5T
LCBFT3BUcmFuc3Bvc2UsIG1hdDMsICJ0cmFuc3Bvc2UiLCBtYXQzKTsKLSAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BUcmFuc3Bvc2UsIG1hdDQsICJ0cmFu
c3Bvc2UiLCBtYXQ0KTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxU
SU5TLCBFT3BUcmFuc3Bvc2UsIG1hdDJ4MywgInRyYW5zcG9zZSIsIG1hdDN4Mik7Ci0gICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wVHJhbnNwb3NlLCBtYXQz
eDIsICJ0cmFuc3Bvc2UiLCBtYXQyeDMpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
RVNTTDNfQlVJTFRJTlMsIEVPcFRyYW5zcG9zZSwgbWF0Mng0LCAidHJhbnNwb3NlIiwgbWF0NHgy
KTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BUcmFu
c3Bvc2UsIG1hdDR4MiwgInRyYW5zcG9zZSIsIG1hdDJ4NCk7Ci0gICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wVHJhbnNwb3NlLCBtYXQzeDQsICJ0cmFuc3Bv
c2UiLCBtYXQ0eDMpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJ
TlMsIEVPcFRyYW5zcG9zZSwgbWF0NHgzLCAidHJhbnNwb3NlIiwgbWF0M3g0KTsKLQotICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcERldGVybWluYW50LCBm
bG9hdDEsICJkZXRlcm1pbmFudCIsIG1hdDIpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oRVNTTDNfQlVJTFRJTlMsIEVPcERldGVybWluYW50LCBmbG9hdDEsICJkZXRlcm1pbmFudCIs
IG1hdDMpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVP
cERldGVybWluYW50LCBmbG9hdDEsICJkZXRlcm1pbmFudCIsIG1hdDQpOwotCi0gICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wSW52ZXJzZSwgbWF0MiwgImlu
dmVyc2UiLCBtYXQyKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxU
SU5TLCBFT3BJbnZlcnNlLCBtYXQzLCAiaW52ZXJzZSIsIG1hdDMpOwotICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcEludmVyc2UsIG1hdDQsICJpbnZlcnNl
IiwgbWF0NCk7Ci0KLSAgICBjb25zdCBUVHlwZSAqdmVjID0gVENhY2hlOjpnZXRUeXBlKEVidFZl
Yyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9w
TXVsTWF0cml4Q29tcG9uZW50V2lzZSwgbWF0MiwgbWF0MiwgbWF0Mik7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9wTXVsTWF0cml4Q29tcG9uZW50
V2lzZSwgbWF0MywgbWF0MywgbWF0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9w
KENPTU1PTl9CVUlMVElOUywgRU9wTXVsTWF0cml4Q29tcG9uZW50V2lzZSwgbWF0NCwgbWF0NCwg
bWF0NCk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBF
T3BNdWxNYXRyaXhDb21wb25lbnRXaXNlLCBtYXQyeDMsIG1hdDJ4MywgbWF0MngzKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcE11bE1hdHJpeENv
bXBvbmVudFdpc2UsIG1hdDN4MiwgbWF0M3gyLCBtYXQzeDIpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wTXVsTWF0cml4Q29tcG9uZW50V2lzZSwg
bWF0Mng0LCBtYXQyeDQsIG1hdDJ4NCk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9w
KEVTU0wzX0JVSUxUSU5TLCBFT3BNdWxNYXRyaXhDb21wb25lbnRXaXNlLCBtYXQ0eDIsIG1hdDR4
MiwgbWF0NHgyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJ
TlMsIEVPcE11bE1hdHJpeENvbXBvbmVudFdpc2UsIG1hdDN4NCwgbWF0M3g0LCBtYXQzeDQpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wTXVsTWF0
cml4Q29tcG9uZW50V2lzZSwgbWF0NHgzLCBtYXQ0eDMsIG1hdDR4Myk7CisKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcE91dGVyUHJvZHVjdCwgbWF0
MiwgZmxvYXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NM
M19CVUlMVElOUywgRU9wT3V0ZXJQcm9kdWN0LCBtYXQzLCBmbG9hdDMsIGZsb2F0Myk7CisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BPdXRlclByb2R1
Y3QsIG1hdDQsIGZsb2F0NCwgZmxvYXQ0KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
T3AoRVNTTDNfQlVJTFRJTlMsIEVPcE91dGVyUHJvZHVjdCwgbWF0MngzLCBmbG9hdDMsIGZsb2F0
Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BP
dXRlclByb2R1Y3QsIG1hdDN4MiwgZmxvYXQyLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wT3V0ZXJQcm9kdWN0LCBtYXQyeDQsIGZs
b2F0NCwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJ
TFRJTlMsIEVPcE91dGVyUHJvZHVjdCwgbWF0NHgyLCBmbG9hdDIsIGZsb2F0NCk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BPdXRlclByb2R1Y3Qs
IG1hdDN4NCwgZmxvYXQ0LCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5P
cChFU1NMM19CVUlMVElOUywgRU9wT3V0ZXJQcm9kdWN0LCBtYXQ0eDMsIGZsb2F0MywgZmxvYXQ0
KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9w
VHJhbnNwb3NlLCBtYXQyLCBtYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3Ao
RVNTTDNfQlVJTFRJTlMsIEVPcFRyYW5zcG9zZSwgbWF0MywgbWF0Myk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BUcmFuc3Bvc2UsIG1hdDQsIG1h
dDQpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9w
VHJhbnNwb3NlLCBtYXQyeDMsIG1hdDN4Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BUcmFuc3Bvc2UsIG1hdDN4MiwgbWF0MngzKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcFRyYW5zcG9zZSwg
bWF0Mng0LCBtYXQ0eDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19C
VUlMVElOUywgRU9wVHJhbnNwb3NlLCBtYXQ0eDIsIG1hdDJ4NCk7CisgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BUcmFuc3Bvc2UsIG1hdDN4NCwgbWF0
NHgzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVP
cFRyYW5zcG9zZSwgbWF0NHgzLCBtYXQzeDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BEZXRlcm1pbmFudCwgZmxvYXQxLCBtYXQyKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcERldGVybWlu
YW50LCBmbG9hdDEsIG1hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NM
M19CVUlMVElOUywgRU9wRGV0ZXJtaW5hbnQsIGZsb2F0MSwgbWF0NCk7CisKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcEludmVyc2UsIG1hdDIsIG1h
dDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9w
SW52ZXJzZSwgbWF0MywgbWF0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVT
U0wzX0JVSUxUSU5TLCBFT3BJbnZlcnNlLCBtYXQ0LCBtYXQ0KTsKKworICAgIGNvbnN0IFRUeXBl
ICp2ZWMgID0gVENhY2hlOjpnZXRUeXBlKEVidFZlYyk7CiAgICAgY29uc3QgVFR5cGUgKml2ZWMg
PSBUQ2FjaGU6OmdldFR5cGUoRWJ0SVZlYyk7CiAgICAgY29uc3QgVFR5cGUgKnV2ZWMgPSBUQ2Fj
aGU6OmdldFR5cGUoRWJ0VVZlYyk7CiAgICAgY29uc3QgVFR5cGUgKmJ2ZWMgPSBUQ2FjaGU6Omdl
dFR5cGUoRWJ0QlZlYyk7CkBAIC0xOTgsMzEgKzIwOSw2MiBAQCB2b2lkIEluc2VydEJ1aWx0SW5G
dW5jdGlvbnMoc2g6OkdMZW51bSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgY29uc3QgU2hCdWls
dEluUgogICAgIC8vCiAgICAgLy8gVmVjdG9yIHJlbGF0aW9uYWwgZnVuY3Rpb25zLgogICAgIC8v
Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcExlc3NU
aGFuLCBidmVjLCAibGVzc1RoYW4iLCB2ZWMsIHZlYyk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcExlc3NUaGFuLCBidmVjLCAibGVzc1RoYW4iLCBp
dmVjLCBpdmVjKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5T
LCBFT3BMZXNzVGhhbiwgYnZlYywgImxlc3NUaGFuIiwgdXZlYywgdXZlYyk7Ci0gICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcExlc3NUaGFuRXF1YWwsIGJ2
ZWMsICJsZXNzVGhhbkVxdWFsIiwgdmVjLCB2ZWMpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BMZXNzVGhhbkVxdWFsLCBidmVjLCAibGVzc1RoYW5F
cXVhbCIsIGl2ZWMsIGl2ZWMpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNf
QlVJTFRJTlMsIEVPcExlc3NUaGFuRXF1YWwsIGJ2ZWMsICJsZXNzVGhhbkVxdWFsIiwgdXZlYywg
dXZlYyk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVP
cEdyZWF0ZXJUaGFuLCBidmVjLCAiZ3JlYXRlclRoYW4iLCB2ZWMsIHZlYyk7Ci0gICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcEdyZWF0ZXJUaGFuLCBidmVj
LCAiZ3JlYXRlclRoYW4iLCBpdmVjLCBpdmVjKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKEVTU0wzX0JVSUxUSU5TLCBFT3BHcmVhdGVyVGhhbiwgYnZlYywgImdyZWF0ZXJUaGFuIiwg
dXZlYywgdXZlYyk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJ
TlMsIEVPcEdyZWF0ZXJUaGFuRXF1YWwsIGJ2ZWMsICJncmVhdGVyVGhhbkVxdWFsIiwgdmVjLCB2
ZWMpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BH
cmVhdGVyVGhhbkVxdWFsLCBidmVjLCAiZ3JlYXRlclRoYW5FcXVhbCIsIGl2ZWMsIGl2ZWMpOwot
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcEdyZWF0ZXJU
aGFuRXF1YWwsIGJ2ZWMsICJncmVhdGVyVGhhbkVxdWFsIiwgdXZlYywgdXZlYyk7Ci0gICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcFZlY3RvckVxdWFsLCBi
dmVjLCAiZXF1YWwiLCB2ZWMsIHZlYyk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihD
T01NT05fQlVJTFRJTlMsIEVPcFZlY3RvckVxdWFsLCBidmVjLCAiZXF1YWwiLCBpdmVjLCBpdmVj
KTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BWZWN0
b3JFcXVhbCwgYnZlYywgImVxdWFsIiwgdXZlYywgdXZlYyk7Ci0gICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcFZlY3RvckVxdWFsLCBidmVjLCAiZXF1YWwi
LCBidmVjLCBidmVjKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlM
VElOUywgRU9wVmVjdG9yTm90RXF1YWwsIGJ2ZWMsICJub3RFcXVhbCIsIHZlYywgdmVjKTsKLSAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9wVmVjdG9yTm90
RXF1YWwsIGJ2ZWMsICJub3RFcXVhbCIsIGl2ZWMsIGl2ZWMpOwotICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcFZlY3Rvck5vdEVxdWFsLCBidmVjLCAibm90
RXF1YWwiLCB1dmVjLCB1dmVjKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1P
Tl9CVUlMVElOUywgRU9wVmVjdG9yTm90RXF1YWwsIGJ2ZWMsICJub3RFcXVhbCIsIGJ2ZWMsIGJ2
ZWMpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BB
bnksIGJvb2wxLCAiYW55IiwgYnZlYyk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihD
T01NT05fQlVJTFRJTlMsIEVPcEFsbCwgYm9vbDEsICJhbGwiLCBidmVjKTsKLSAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9wVmVjdG9yTG9naWNhbE5vdCwg
YnZlYywgIm5vdCIsIGJ2ZWMpOwotCi0gICAgY29uc3QgVFR5cGUgKnNhbXBsZXIyRCA9IFRDYWNo
ZTo6Z2V0VHlwZShFYnRTYW1wbGVyMkQpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5P
cChDT01NT05fQlVJTFRJTlMsIEVPcExlc3NUaGFuQ29tcG9uZW50V2lzZSwgYnZlYywgdmVjLCB2
ZWMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVP
cExlc3NUaGFuQ29tcG9uZW50V2lzZSwgYnZlYywgaXZlYywgaXZlYyk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BMZXNzVGhhbkNvbXBvbmVudFdp
c2UsIGJ2ZWMsIHV2ZWMsIHV2ZWMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChD
T01NT05fQlVJTFRJTlMsIEVPcExlc3NUaGFuRXF1YWxDb21wb25lbnRXaXNlLCBidmVjLCB2ZWMs
IHZlYyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywg
RU9wTGVzc1RoYW5FcXVhbENvbXBvbmVudFdpc2UsIGJ2ZWMsIGl2ZWMsIGl2ZWMpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wTGVzc1RoYW5FcXVh
bENvbXBvbmVudFdpc2UsIGJ2ZWMsIHV2ZWMsIHV2ZWMpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcEdyZWF0ZXJUaGFuQ29tcG9uZW50V2lzZSwg
YnZlYywgdmVjLCB2ZWMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05f
QlVJTFRJTlMsIEVPcEdyZWF0ZXJUaGFuQ29tcG9uZW50V2lzZSwgYnZlYywgaXZlYywgaXZlYyk7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BHcmVh
dGVyVGhhbkNvbXBvbmVudFdpc2UsIGJ2ZWMsIHV2ZWMsIHV2ZWMpOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcEdyZWF0ZXJUaGFuRXF1YWxDb21w
b25lbnRXaXNlLCBidmVjLCB2ZWMsIHZlYyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bk9wKENPTU1PTl9CVUlMVElOUywgRU9wR3JlYXRlclRoYW5FcXVhbENvbXBvbmVudFdpc2UsIGJ2
ZWMsIGl2ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl2ZWMpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wR3JlYXRlclRoYW5F
cXVhbENvbXBvbmVudFdpc2UsIGJ2ZWMsIHV2ZWMsIHV2ZWMpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcEVxdWFsQ29tcG9uZW50V2lzZSwgYnZl
YywgdmVjLCB2ZWMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJ
TFRJTlMsIEVPcEVxdWFsQ29tcG9uZW50V2lzZSwgYnZlYywgaXZlYywgaXZlYyk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BFcXVhbENvbXBvbmVu
dFdpc2UsIGJ2ZWMsIHV2ZWMsIHV2ZWMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5P
cChDT01NT05fQlVJTFRJTlMsIEVPcEVxdWFsQ29tcG9uZW50V2lzZSwgYnZlYywgYnZlYywgYnZl
Yyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9w
Tm90RXF1YWxDb21wb25lbnRXaXNlLCBidmVjLCB2ZWMsIHZlYyk7CisgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9wTm90RXF1YWxDb21wb25lbnRXaXNl
LCBidmVjLCBpdmVjLCBpdmVjKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNT
TDNfQlVJTFRJTlMsIEVPcE5vdEVxdWFsQ29tcG9uZW50V2lzZSwgYnZlYywgdXZlYywgdXZlYyk7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9wTm90
RXF1YWxDb21wb25lbnRXaXNlLCBidmVjLCBidmVjLCBidmVjKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BBbnksIGJvb2wxLCBidmVjKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BBbGwsIGJv
b2wxLCBidmVjKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxU
SU5TLCBFT3BMb2dpY2FsTm90Q29tcG9uZW50V2lzZSwgYnZlYywgYnZlYyk7CisKKyAgICAvLwor
ICAgIC8vIEludGVnZXIgZnVuY3Rpb25zCisgICAgLy8KKyAgICBjb25zdCBUVHlwZSAqb3V0R2Vu
VVR5cGUgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0R2VuVVR5cGUsIEV2cU91dCk7CisKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfMV9CVUlMVElOUywgRU9wQml0ZmllbGRFeHRy
YWN0LCBnZW5JVHlwZSwgZ2VuSVR5cGUsIGludDEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM18xX0JV
SUxUSU5TLCBFT3BCaXRmaWVsZEV4dHJhY3QsIGdlblVUeXBlLCBnZW5VVHlwZSwgaW50MSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MSk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbk9wKEVTU0wzXzFfQlVJTFRJTlMsIEVPcEJpdGZpZWxkSW5zZXJ0LCBnZW5JVHlw
ZSwgZ2VuSVR5cGUsIGdlbklUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQxLCBpbnQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfMV9CVUlM
VElOUywgRU9wQml0ZmllbGRJbnNlcnQsIGdlblVUeXBlLCBnZW5VVHlwZSwgZ2VuVVR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDEsIGludDEpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM18xX0JVSUxUSU5TLCBFT3BCaXRmaWVsZFJldmVyc2Us
IGdlbklUeXBlLCBnZW5JVHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVT
U0wzXzFfQlVJTFRJTlMsIEVPcEJpdGZpZWxkUmV2ZXJzZSwgZ2VuVVR5cGUsIGdlblVUeXBlKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfMV9CVUlMVElOUywgRU9wQml0
Q291bnQsIGdlbklUeXBlLCBnZW5JVHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bk9wKEVTU0wzXzFfQlVJTFRJTlMsIEVPcEJpdENvdW50LCBnZW5JVHlwZSwgZ2VuVVR5cGUpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM18xX0JVSUxUSU5TLCBFT3BGaW5k
TFNCLCBnZW5JVHlwZSwgZ2VuSVR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5P
cChFU1NMM18xX0JVSUxUSU5TLCBFT3BGaW5kTFNCLCBnZW5JVHlwZSwgZ2VuVVR5cGUpOworICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM18xX0JVSUxUSU5TLCBFT3BGaW5kTVNC
LCBnZW5JVHlwZSwgZ2VuSVR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChF
U1NMM18xX0JVSUxUSU5TLCBFT3BGaW5kTVNCLCBnZW5JVHlwZSwgZ2VuVVR5cGUpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM18xX0JVSUxUSU5TLCBFT3BVYWRkQ2Fycnks
IGdlblVUeXBlLCBnZW5VVHlwZSwgZ2VuVVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG91dEdlblVUeXBlKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNT
TDNfMV9CVUlMVElOUywgRU9wVXN1YkJvcnJvdywgZ2VuVVR5cGUsIGdlblVUeXBlLCBnZW5VVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0R2VuVVR5cGUpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM18xX0JVSUxUSU5TLCBFT3BVbXVsRXh0ZW5k
ZWQsIHZvaWRUeXBlLCBnZW5VVHlwZSwgZ2VuVVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dEdlblVUeXBlLCBvdXRHZW5VVHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbk9wKEVTU0wzXzFfQlVJTFRJTlMsIEVPcEltdWxFeHRlbmRlZCwgdm9pZFR5cGUs
IGdlbklUeXBlLCBnZW5JVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0
R2VuSVR5cGUsIG91dEdlbklUeXBlKTsKKworICAgIGNvbnN0IFRUeXBlICpzYW1wbGVyMkQgICA9
IFRDYWNoZTo6Z2V0VHlwZShFYnRTYW1wbGVyMkQpOwogICAgIGNvbnN0IFRUeXBlICpzYW1wbGVy
Q3ViZSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRTYW1wbGVyQ3ViZSk7CiAKICAgICAvLwpAQCAtMjM4
LDggKzI4MCwxMCBAQCB2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnMoc2g6OkdMZW51bSB0eXBl
LCBTaFNoYWRlclNwZWMgc3BlYywgY29uc3QgU2hCdWlsdEluUgogICAgICAgICBjb25zdCBUVHlw
ZSAqc2FtcGxlckV4dGVybmFsT0VTID0gVENhY2hlOjpnZXRUeXBlKEVidFNhbXBsZXJFeHRlcm5h
bE9FUyk7CiAKICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElO
UywgZmxvYXQ0LCAidGV4dHVyZTJEIiwgc2FtcGxlckV4dGVybmFsT0VTLCBmbG9hdDIpOwotICAg
ICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0
ZXh0dXJlMkRQcm9qIiwgc2FtcGxlckV4dGVybmFsT0VTLCBmbG9hdDMpOwotICAgICAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0dXJlMkRQ
cm9qIiwgc2FtcGxlckV4dGVybmFsT0VTLCBmbG9hdDQpOworICAgICAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0dXJlMkRQcm9qIiwgc2Ft
cGxlckV4dGVybmFsT0VTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0
Myk7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDFfQlVJTFRJTlMsIGZs
b2F0NCwgInRleHR1cmUyRFByb2oiLCBzYW1wbGVyRXh0ZXJuYWxPRVMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQ0KTsKICAgICB9CiAKICAgICBpZiAocmVzb3VyY2Vz
LkFSQl90ZXh0dXJlX3JlY3RhbmdsZSkKQEAgLTI0Nyw4ICsyOTEsMTAgQEAgdm9pZCBJbnNlcnRC
dWlsdEluRnVuY3Rpb25zKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIGNvbnN0
IFNoQnVpbHRJblIKICAgICAgICAgY29uc3QgVFR5cGUgKnNhbXBsZXIyRFJlY3QgPSBUQ2FjaGU6
OmdldFR5cGUoRWJ0U2FtcGxlcjJEUmVjdCk7CiAKICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihFU1NMMV9CVUlMVElOUywgZmxvYXQ0LCAidGV4dHVyZTJEUmVjdCIsIHNhbXBsZXIy
RFJlY3QsIGZsb2F0Mik7Ci0gICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDFf
QlVJTFRJTlMsIGZsb2F0NCwgInRleHR1cmUyRFJlY3RQcm9qIiwgc2FtcGxlcjJEUmVjdCwgZmxv
YXQzKTsKLSAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywg
ZmxvYXQ0LCAidGV4dHVyZTJEUmVjdFByb2oiLCBzYW1wbGVyMkRSZWN0LCBmbG9hdDQpOworICAg
ICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0
ZXh0dXJlMkRSZWN0UHJvaiIsIHNhbXBsZXIyRFJlY3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQzKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihF
U1NMMV9CVUlMVElOUywgZmxvYXQ0LCAidGV4dHVyZTJEUmVjdFByb2oiLCBzYW1wbGVyMkRSZWN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0NCk7CiAgICAgfQogCiAg
ICAgaWYgKHJlc291cmNlcy5FWFRfc2hhZGVyX3RleHR1cmVfbG9kKQpAQCAtMjU2LDQ5ICszMDIs
NjggQEAgdm9pZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25zKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFk
ZXJTcGVjIHNwZWMsIGNvbnN0IFNoQnVpbHRJblIKICAgICAgICAgLyogVGhlICpHcmFkKiB2YXJp
YW50cyBhcmUgbmV3IHRvIGJvdGggdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXJzOyB0aGUgZnJh
Z21lbnQKICAgICAgICAgICogc2hhZGVyIHNwZWNpZmljIHBpZWNlcyBhcmUgYWRkZWQgc2VwYXJh
dGVseSBiZWxvdy4KICAgICAgICAgICovCi0gICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oRVNTTDFfQlVJTFRJTlMsICJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIiwgZmxvYXQ0LCAi
dGV4dHVyZTJER3JhZEVYVCIsIHNhbXBsZXIyRCwgZmxvYXQyLCBmbG9hdDIsIGZsb2F0Mik7Ci0g
ICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDFfQlVJTFRJTlMsICJHTF9FWFRf
c2hhZGVyX3RleHR1cmVfbG9kIiwgZmxvYXQ0LCAidGV4dHVyZTJEUHJvakdyYWRFWFQiLCBzYW1w
bGVyMkQsIGZsb2F0MywgZmxvYXQyLCBmbG9hdDIpOwotICAgICAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIsIGZs
b2F0NCwgInRleHR1cmUyRFByb2pHcmFkRVhUIiwgc2FtcGxlcjJELCBmbG9hdDQsIGZsb2F0Miwg
ZmxvYXQyKTsKLSAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElO
UywgIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiLCBmbG9hdDQsICJ0ZXh0dXJlQ3ViZUdyYWRF
WFQiLCBzYW1wbGVyQ3ViZSwgZmxvYXQzLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDFfQlVJTFRJTlMsICJHTF9FWFRfc2hhZGVyX3RleHR1
cmVfbG9kIiwgZmxvYXQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0
dXJlMkRHcmFkRVhUIiwgc2FtcGxlcjJELCBmbG9hdDIsIGZsb2F0MiwgZmxvYXQyKTsKKyAgICAg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywgIkdMX0VYVF9zaGFk
ZXJfdGV4dHVyZV9sb2QiLCBmbG9hdDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInRleHR1cmUyRFByb2pHcmFkRVhUIiwgc2FtcGxlcjJELCBmbG9hdDMsIGZsb2F0MiwgZmxv
YXQyKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywg
IkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiLCBmbG9hdDQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInRleHR1cmUyRFByb2pHcmFkRVhUIiwgc2FtcGxlcjJELCBmbG9hdDQs
IGZsb2F0MiwgZmxvYXQyKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NM
MV9CVUlMVElOUywgIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiLCBmbG9hdDQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInRleHR1cmVDdWJlR3JhZEVYVCIsIHNhbXBsZXJD
dWJlLCBmbG9hdDMsIGZsb2F0MywgZmxvYXQzKTsKICAgICB9CiAKICAgICBpZiAodHlwZSA9PSBH
TF9GUkFHTUVOVF9TSEFERVIpCiAgICAgewogICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0dXJlMkQiLCBzYW1wbGVyMkQsIGZsb2F0
MiwgZmxvYXQxKTsKLSAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlM
VElOUywgZmxvYXQ0LCAidGV4dHVyZTJEUHJvaiIsIHNhbXBsZXIyRCwgZmxvYXQzLCBmbG9hdDEp
OwotICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCBmbG9h
dDQsICJ0ZXh0dXJlMkRQcm9qIiwgc2FtcGxlcjJELCBmbG9hdDQsIGZsb2F0MSk7Ci0gICAgICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDFfQlVJTFRJTlMsIGZsb2F0NCwgInRleHR1
cmVDdWJlIiwgc2FtcGxlckN1YmUsIGZsb2F0MywgZmxvYXQxKTsKKyAgICAgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywgZmxvYXQ0LCAidGV4dHVyZTJEUHJvaiIs
IHNhbXBsZXIyRCwgZmxvYXQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0MSk7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDFfQlVJTFRJTlMs
IGZsb2F0NCwgInRleHR1cmUyRFByb2oiLCBzYW1wbGVyMkQsIGZsb2F0NCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDEpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0dXJlQ3ViZSIsIHNhbXBsZXJD
dWJlLCBmbG9hdDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQxKTsK
IAogICAgICAgICBpZiAocmVzb3VyY2VzLk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcykKICAgICAg
ICAgewotICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElO
UywgRU9wREZkeCwgIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIsIGdlblR5cGUsICJkRmR4
IiwgZ2VuVHlwZSk7Ci0gICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wx
X0JVSUxUSU5TLCBFT3BERmR5LCAiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIiwgZ2VuVHlw
ZSwgImRGZHkiLCBnZW5UeXBlKTsKLSAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oRVNTTDFfQlVJTFRJTlMsIEVPcEZ3aWR0aCwgIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZl
cyIsIGdlblR5cGUsICJmd2lkdGgiLCBnZW5UeXBlKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW5PcChFU1NMMV9CVUlMVElOUywgRU9wREZkeCwgIkdMX09FU19zdGFuZGFy
ZF9kZXJpdmF0aXZlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2VuVHlwZSwgZ2VuVHlwZSk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
T3AoRVNTTDFfQlVJTFRJTlMsIEVPcERGZHksICJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlblR5cGUsIGdlblR5
cGUpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wxX0JVSUxU
SU5TLCBFT3BGd2lkdGgsICJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlblR5cGUsIGdlblR5cGUpOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKHJlc291cmNlcy5FWFRfc2hhZGVyX3RleHR1cmVfbG9kKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxU
SU5TLCAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIsIGZsb2F0NCwgInRleHR1cmUyRExvZEVY
VCIsIHNhbXBsZXIyRCwgZmxvYXQyLCBmbG9hdDEpOwotICAgICAgICAgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywgIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2Qi
LCBmbG9hdDQsICJ0ZXh0dXJlMkRQcm9qTG9kRVhUIiwgc2FtcGxlcjJELCBmbG9hdDMsIGZsb2F0
MSk7Ci0gICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5T
LCAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIsIGZsb2F0NCwgInRleHR1cmUyRFByb2pMb2RF
WFQiLCBzYW1wbGVyMkQsIGZsb2F0NCwgZmxvYXQxKTsKLSAgICAgICAgICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oRVNTTDFfQlVJTFRJTlMsICJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9k
IiwgZmxvYXQ0LCAidGV4dHVyZUN1YmVMb2RFWFQiLCBzYW1wbGVyQ3ViZSwgZmxvYXQzLCBmbG9h
dDEpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElO
UywgIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiLCBmbG9hdDQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0dXJlMkRMb2RFWFQiLCBzYW1wbGVyMkQsIGZsb2F0
MiwgZmxvYXQxKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDFf
QlVJTFRJTlMsICJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIiwgZmxvYXQ0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGV4dHVyZTJEUHJvakxvZEVYVCIsIHNhbXBs
ZXIyRCwgZmxvYXQzLCBmbG9hdDEpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihFU1NMMV9CVUlMVElOUywgIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiLCBmbG9hdDQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0dXJlMkRQcm9qTG9k
RVhUIiwgc2FtcGxlcjJELCBmbG9hdDQsIGZsb2F0MSk7CisgICAgICAgICAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZCIsIGZsb2F0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRleHR1
cmVDdWJlTG9kRVhUIiwgc2FtcGxlckN1YmUsIGZsb2F0MywgZmxvYXQxKTsKICAgICAgICAgfQog
ICAgIH0KIAogICAgIGlmICh0eXBlID09IEdMX1ZFUlRFWF9TSEFERVIpCiAgICAgewotICAgICAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0
dXJlMkRMb2QiLCBzYW1wbGVyMkQsIGZsb2F0MiwgZmxvYXQxKTsKLSAgICAgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywgZmxvYXQ0LCAidGV4dHVyZTJEUHJvakxv
ZCIsIHNhbXBsZXIyRCwgZmxvYXQzLCBmbG9hdDEpOwotICAgICAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0dXJlMkRQcm9qTG9kIiwgc2Ft
cGxlcjJELCBmbG9hdDQsIGZsb2F0MSk7Ci0gICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oRVNTTDFfQlVJTFRJTlMsIGZsb2F0NCwgInRleHR1cmVDdWJlTG9kIiwgc2FtcGxlckN1YmUs
IGZsb2F0MywgZmxvYXQxKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NM
MV9CVUlMVElOUywgZmxvYXQ0LCAidGV4dHVyZTJETG9kIiwgc2FtcGxlcjJELCBmbG9hdDIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQxKTsKKyAgICAgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywgZmxvYXQ0LCAidGV4dHVyZTJEUHJv
akxvZCIsIHNhbXBsZXIyRCwgZmxvYXQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0MSk7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDFfQlVJ
TFRJTlMsIGZsb2F0NCwgInRleHR1cmUyRFByb2pMb2QiLCBzYW1wbGVyMkQsIGZsb2F0NCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDEpOworICAgICAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0dXJlQ3ViZUxv
ZCIsIHNhbXBsZXJDdWJlLCBmbG9hdDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQxKTsKICAgICB9CiAKICAgICBjb25zdCBUVHlwZSAqZ3ZlYzQgPSBUQ2FjaGU6Omdl
dFR5cGUoRWJ0R1ZlYzQpOwogCi0gICAgY29uc3QgVFR5cGUgKmdzYW1wbGVyMkQgPSBUQ2FjaGU6
OmdldFR5cGUoRWJ0R1NhbXBsZXIyRCk7Ci0gICAgY29uc3QgVFR5cGUgKmdzYW1wbGVyQ3ViZSA9
IFRDYWNoZTo6Z2V0VHlwZShFYnRHU2FtcGxlckN1YmUpOwotICAgIGNvbnN0IFRUeXBlICpnc2Ft
cGxlcjNEID0gVENhY2hlOjpnZXRUeXBlKEVidEdTYW1wbGVyM0QpOworICAgIGNvbnN0IFRUeXBl
ICpnc2FtcGxlcjJEICAgICAgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0R1NhbXBsZXIyRCk7CisgICAg
Y29uc3QgVFR5cGUgKmdzYW1wbGVyQ3ViZSAgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRHU2FtcGxl
ckN1YmUpOworICAgIGNvbnN0IFRUeXBlICpnc2FtcGxlcjNEICAgICAgPSBUQ2FjaGU6OmdldFR5
cGUoRWJ0R1NhbXBsZXIzRCk7CiAgICAgY29uc3QgVFR5cGUgKmdzYW1wbGVyMkRBcnJheSA9IFRD
YWNoZTo6Z2V0VHlwZShFYnRHU2FtcGxlcjJEQXJyYXkpOworICAgIGNvbnN0IFRUeXBlICpnc2Ft
cGxlcjJETVMgICAgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0R1NhbXBsZXIyRE1TKTsKIAogICAgIC8v
CiAgICAgLy8gVGV4dHVyZSBGdW5jdGlvbnMgZm9yIEdMU0wgRVMgMy4wCkBAIC0zMjYsMTIgKzM5
MSwzMiBAQCB2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnMoc2g6OkdMZW51bSB0eXBlLCBTaFNo
YWRlclNwZWMgc3BlYywgY29uc3QgU2hCdWlsdEluUgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0NCk7CiAgICAgfQogCisgICAgaWYgKHJlc291cmNlcy5FWFRfWVVWX3Rh
cmdldCkKKyAgICB7CisgICAgICAgIGNvbnN0IFRUeXBlICpzYW1wbGVyRXh0ZXJuYWwyRFkyWUVY
VCA9IFRDYWNoZTo6Z2V0VHlwZShFYnRTYW1wbGVyRXh0ZXJuYWwyRFkyWUVYVCk7CisKKyAgICAg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgIkdMX0VYVF9ZVVZf
dGFyZ2V0IiwgZmxvYXQ0LCAidGV4dHVyZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2FtcGxlckV4dGVybmFsMkRZMllFWFQsIGZsb2F0Mik7CisgICAgICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsICJHTF9FWFRfWVVWX3RhcmdldCIsIGZs
b2F0NCwgInRleHR1cmVQcm9qIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
YW1wbGVyRXh0ZXJuYWwyRFkyWUVYVCwgZmxvYXQzKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgIkdMX0VYVF9ZVVZfdGFyZ2V0IiwgZmxvYXQ0LCAi
dGV4dHVyZVByb2oiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXJF
eHRlcm5hbDJEWTJZRVhULCBmbG9hdDQpOworCisgICAgICAgIGNvbnN0IFRUeXBlICp5dXZDc2NT
dGFuZGFyZEVYVCA9IFRDYWNoZTo6Z2V0VHlwZShFYnRZdXZDc2NTdGFuZGFyZEVYVCk7CisKKyAg
ICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgIkdMX0VYVF9Z
VVZfdGFyZ2V0IiwgZmxvYXQzLCAicmdiXzJfeXV2IiwgZmxvYXQzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHl1dkNzY1N0YW5kYXJkRVhUKTsKKyAgICAgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgIkdMX0VYVF9ZVVZfdGFyZ2V0IiwgZmxv
YXQzLCAieXV2XzJfcmdiIiwgZmxvYXQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHl1dkNzY1N0YW5kYXJkRVhUKTsKKyAgICB9CisKICAgICBpZiAodHlwZSA9PSBHTF9GUkFH
TUVOVF9TSEFERVIpCiAgICAgewogICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVT
U0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmUiLCBnc2FtcGxlcjJELCBmbG9hdDIsIGZsb2F0
MSk7CiAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2
ZWM0LCAidGV4dHVyZSIsIGdzYW1wbGVyM0QsIGZsb2F0MywgZmxvYXQxKTsKICAgICAgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlIiwg
Z3NhbXBsZXJDdWJlLCBmbG9hdDMsIGZsb2F0MSk7Ci0gICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZSIsIGdzYW1wbGVyMkRBcnJh
eSwgZmxvYXQzLCBmbG9hdDEpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVT
U0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmUiLCBnc2FtcGxlcjJEQXJyYXksIGZsb2F0MywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDEpOwogICAgICAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9q
IiwgZ3NhbXBsZXIyRCwgZmxvYXQzLCBmbG9hdDEpOwogICAgICAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qIiwgZ3NhbXBsZXIy
RCwgZmxvYXQ0LCBmbG9hdDEpOwogICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVT
U0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qIiwgZ3NhbXBsZXIzRCwgZmxvYXQ0LCBm
bG9hdDEpOwpAQCAtMzQ3LDIzICs0MzIsMzkgQEAgdm9pZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25z
KHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIGNvbnN0IFNoQnVpbHRJblIKICAg
ICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0
NCwgInRleHR1cmVQcm9qIiwgc2FtcGxlckV4dGVybmFsT0VTLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbG9hdDQsIGZsb2F0MSk7CiAgICAgICAgIH0KKworICAgICAg
ICBpZiAocmVzb3VyY2VzLkVYVF9ZVVZfdGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAgICBj
b25zdCBUVHlwZSAqc2FtcGxlckV4dGVybmFsMkRZMllFWFQgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0
U2FtcGxlckV4dGVybmFsMkRZMllFWFQpOworCisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCAiR0xfRVhUX1lVVl90YXJnZXQiLCBmbG9hdDQsICJ0
ZXh0dXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlckV4
dGVybmFsMkRZMllFWFQsIGZsb2F0MiwgZmxvYXQxKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsICJHTF9FWFRfWVVWX3RhcmdldCIsIGZsb2F0
NCwgInRleHR1cmVQcm9qIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2FtcGxlckV4dGVybmFsMkRZMllFWFQsIGZsb2F0MywgZmxvYXQxKTsKKyAgICAgICAgICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsICJHTF9FWFRfWVVWX3Rhcmdl
dCIsIGZsb2F0NCwgInRleHR1cmVQcm9qIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2FtcGxlckV4dGVybmFsMkRZMllFWFQsIGZsb2F0NCwgZmxvYXQxKTsKKyAgICAg
ICAgfQogICAgIH0KIAotICAgIGNvbnN0IFRUeXBlICpzYW1wbGVyMkRTaGFkb3cgPSBUQ2FjaGU6
OmdldFR5cGUoRWJ0U2FtcGxlcjJEU2hhZG93KTsKLSAgICBjb25zdCBUVHlwZSAqc2FtcGxlckN1
YmVTaGFkb3cgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0U2FtcGxlckN1YmVTaGFkb3cpOworICAgIGNv
bnN0IFRUeXBlICpzYW1wbGVyMkRTaGFkb3cgICAgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRTYW1w
bGVyMkRTaGFkb3cpOworICAgIGNvbnN0IFRUeXBlICpzYW1wbGVyQ3ViZVNoYWRvdyAgICA9IFRD
YWNoZTo6Z2V0VHlwZShFYnRTYW1wbGVyQ3ViZVNoYWRvdyk7CiAgICAgY29uc3QgVFR5cGUgKnNh
bXBsZXIyREFycmF5U2hhZG93ID0gVENhY2hlOjpnZXRUeXBlKEVidFNhbXBsZXIyREFycmF5U2hh
ZG93KTsKIAogICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZs
b2F0MSwgInRleHR1cmUiLCBzYW1wbGVyMkRTaGFkb3csIGZsb2F0Myk7CiAgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxvYXQxLCAidGV4dHVyZSIsIHNhbXBs
ZXJDdWJlU2hhZG93LCBmbG9hdDQpOwogICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNT
TDNfQlVJTFRJTlMsIGZsb2F0MSwgInRleHR1cmUiLCBzYW1wbGVyMkRBcnJheVNoYWRvdywgZmxv
YXQ0KTsKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9h
dDEsICJ0ZXh0dXJlUHJvaiIsIHNhbXBsZXIyRFNoYWRvdywgZmxvYXQ0KTsKLSAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEsICJ0ZXh0dXJlTG9kIiwg
c2FtcGxlcjJEU2hhZG93LCBmbG9hdDMsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxvYXQxLCAidGV4dHVyZUxvZCIsIHNhbXBsZXIyRFNo
YWRvdywgZmxvYXQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQxKTsKIAog
ICAgIGlmICh0eXBlID09IEdMX0ZSQUdNRU5UX1NIQURFUikKICAgICB7Ci0gICAgICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwgInRleHR1cmUiLCBz
YW1wbGVyMkRTaGFkb3csIGZsb2F0MywgZmxvYXQxKTsKLSAgICAgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxvYXQxLCAidGV4dHVyZSIsIHNhbXBsZXJDdWJl
U2hhZG93LCBmbG9hdDQsIGZsb2F0MSk7Ci0gICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwgInRleHR1cmVQcm9qIiwgc2FtcGxlcjJEU2hhZG93
LCBmbG9hdDQsIGZsb2F0MSk7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNT
TDNfQlVJTFRJTlMsIGZsb2F0MSwgInRleHR1cmUiLCBzYW1wbGVyMkRTaGFkb3csIGZsb2F0MywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDEpOworICAgICAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEsICJ0ZXh0dXJlIiwg
c2FtcGxlckN1YmVTaGFkb3csIGZsb2F0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmbG9hdDEpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JV
SUxUSU5TLCBmbG9hdDEsICJ0ZXh0dXJlUHJvaiIsIHNhbXBsZXIyRFNoYWRvdywgZmxvYXQ0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0MSk7CiAgICAgfQogCiAgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgaW50MiwgInRleHR1cmVT
aXplIiwgZ3NhbXBsZXIyRCwgaW50MSk7CkBAIC0zNzMsNiArNDc0LDcgQEAgdm9pZCBJbnNlcnRC
dWlsdEluRnVuY3Rpb25zKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIGNvbnN0
IFNoQnVpbHRJblIKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5T
LCBpbnQyLCAidGV4dHVyZVNpemUiLCBzYW1wbGVyMkRTaGFkb3csIGludDEpOwogICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGludDIsICJ0ZXh0dXJlU2l6ZSIs
IHNhbXBsZXJDdWJlU2hhZG93LCBpbnQxKTsKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KEVTU0wzX0JVSUxUSU5TLCBpbnQzLCAidGV4dHVyZVNpemUiLCBzYW1wbGVyMkRBcnJheVNoYWRv
dywgaW50MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywg
aW50MiwgInRleHR1cmVTaXplIiwgZ3NhbXBsZXIyRE1TKTsKIAogICAgIGlmIChyZXNvdXJjZXMu
T0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMykKICAgICB7CkBAIC0zODEsNTMgKzQ4Myw4MSBA
QCB2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnMoc2g6OkdMZW51bSB0eXBlLCBTaFNoYWRlclNw
ZWMgc3BlYywgY29uc3QgU2hCdWlsdEluUgogICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKEVTU0wzX0JVSUxUSU5TLCBpbnQyLCAidGV4dHVyZVNpemUiLCBzYW1wbGVyRXh0ZXJuYWxP
RVMsIGludDEpOwogICAgIH0KIAorICAgIGlmIChyZXNvdXJjZXMuRVhUX1lVVl90YXJnZXQpCisg
ICAgeworICAgICAgICBjb25zdCBUVHlwZSAqc2FtcGxlckV4dGVybmFsMkRZMllFWFQgPSBUQ2Fj
aGU6OmdldFR5cGUoRWJ0U2FtcGxlckV4dGVybmFsMkRZMllFWFQpOworCisgICAgICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsICJHTF9FWFRfWVVWX3RhcmdldCIs
IGludDIsICJ0ZXh0dXJlU2l6ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2FtcGxlckV4dGVybmFsMkRZMllFWFQsIGludDEpOworICAgIH0KKwogICAgIGlmICh0eXBlID09
IEdMX0ZSQUdNRU5UX1NIQURFUikKICAgICB7Ci0gICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcERGZHgsIGdlblR5cGUsICJkRmR4IiwgZ2VuVHlwZSk7
Ci0gICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcERG
ZHksIGdlblR5cGUsICJkRmR5IiwgZ2VuVHlwZSk7Ci0gICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcEZ3aWR0aCwgZ2VuVHlwZSwgImZ3aWR0aCIsIGdl
blR5cGUpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJ
TlMsIEVPcERGZHgsIGdlblR5cGUsIGdlblR5cGUpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcERGZHksIGdlblR5cGUsIGdlblR5cGUpOwor
ICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcEZ3
aWR0aCwgZ2VuVHlwZSwgZ2VuVHlwZSk7CiAgICAgfQogCiAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlT2Zmc2V0IiwgZ3NhbXBsZXIy
RCwgZmxvYXQyLCBpbnQyKTsKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JV
SUxUSU5TLCBndmVjNCwgInRleHR1cmVPZmZzZXQiLCBnc2FtcGxlcjNELCBmbG9hdDMsIGludDMp
OwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwg
InRleHR1cmVPZmZzZXQiLCBzYW1wbGVyMkRTaGFkb3csIGZsb2F0MywgaW50Mik7Ci0gICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlT2Zm
c2V0IiwgZ3NhbXBsZXIyREFycmF5LCBmbG9hdDMsIGludDIpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwgInRleHR1cmVPZmZzZXQiLCBzYW1w
bGVyMkRTaGFkb3csIGZsb2F0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDIp
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAi
dGV4dHVyZU9mZnNldCIsIGdzYW1wbGVyMkRBcnJheSwgZmxvYXQzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50Mik7CiAKICAgICBpZiAodHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFE
RVIpCiAgICAgewotICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxU
SU5TLCBndmVjNCwgInRleHR1cmVPZmZzZXQiLCBnc2FtcGxlcjJELCBmbG9hdDIsIGludDIsIGZs
b2F0MSk7Ci0gICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMs
IGd2ZWM0LCAidGV4dHVyZU9mZnNldCIsIGdzYW1wbGVyM0QsIGZsb2F0MywgaW50MywgZmxvYXQx
KTsKLSAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxv
YXQxLCAidGV4dHVyZU9mZnNldCIsIHNhbXBsZXIyRFNoYWRvdywgZmxvYXQzLCBpbnQyLCBmbG9h
dDEpOwotICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBn
dmVjNCwgInRleHR1cmVPZmZzZXQiLCBnc2FtcGxlcjJEQXJyYXksIGZsb2F0MywgaW50MiwgZmxv
YXQxKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywg
Z3ZlYzQsICJ0ZXh0dXJlT2Zmc2V0IiwgZ3NhbXBsZXIyRCwgZmxvYXQyLCBpbnQyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0MSk7CisgICAgICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZU9mZnNldCIsIGdz
YW1wbGVyM0QsIGZsb2F0MywgaW50MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdDEpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxU
SU5TLCBmbG9hdDEsICJ0ZXh0dXJlT2Zmc2V0Iiwgc2FtcGxlcjJEU2hhZG93LCBmbG9hdDMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MiwgZmxvYXQxKTsKKyAgICAgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJl
T2Zmc2V0IiwgZ3NhbXBsZXIyREFycmF5LCBmbG9hdDMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MiwgZmxvYXQxKTsKICAgICB9CiAKICAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qT2Zmc2V0IiwgZ3Nh
bXBsZXIyRCwgZmxvYXQzLCBpbnQyKTsKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVT
U0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qT2Zmc2V0IiwgZ3NhbXBsZXIyRCwgZmxv
YXQ0LCBpbnQyKTsKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5T
LCBndmVjNCwgInRleHR1cmVQcm9qT2Zmc2V0IiwgZ3NhbXBsZXIzRCwgZmxvYXQ0LCBpbnQzKTsK
LSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEsICJ0
ZXh0dXJlUHJvak9mZnNldCIsIHNhbXBsZXIyRFNoYWRvdywgZmxvYXQ0LCBpbnQyKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEsICJ0ZXh0dXJl
UHJvak9mZnNldCIsIHNhbXBsZXIyRFNoYWRvdywgZmxvYXQ0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50Mik7CiAKICAgICBpZiAodHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIp
CiAgICAgewotICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5T
LCBndmVjNCwgInRleHR1cmVQcm9qT2Zmc2V0IiwgZ3NhbXBsZXIyRCwgZmxvYXQzLCBpbnQyLCBm
bG9hdDEpOwotICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5T
LCBndmVjNCwgInRleHR1cmVQcm9qT2Zmc2V0IiwgZ3NhbXBsZXIyRCwgZmxvYXQ0LCBpbnQyLCBm
bG9hdDEpOwotICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5T
LCBndmVjNCwgInRleHR1cmVQcm9qT2Zmc2V0IiwgZ3NhbXBsZXIzRCwgZmxvYXQ0LCBpbnQzLCBm
bG9hdDEpOwotICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5T
LCBmbG9hdDEsICJ0ZXh0dXJlUHJvak9mZnNldCIsIHNhbXBsZXIyRFNoYWRvdywgZmxvYXQ0LCBp
bnQyLCBmbG9hdDEpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JV
SUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qT2Zmc2V0IiwgZ3NhbXBsZXIyRCwgZmxvYXQzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDIsIGZsb2F0MSk7CisgICAgICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVy
ZVByb2pPZmZzZXQiLCBnc2FtcGxlcjJELCBmbG9hdDQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50MiwgZmxvYXQxKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlUHJvak9mZnNldCIsIGdzYW1wbGVy
M0QsIGZsb2F0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzLCBmbG9h
dDEpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBm
bG9hdDEsICJ0ZXh0dXJlUHJvak9mZnNldCIsIHNhbXBsZXIyRFNoYWRvdywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDQsIGludDIsIGZsb2F0MSk7CiAgICAgfQogCi0g
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0
dXJlTG9kT2Zmc2V0IiwgZ3NhbXBsZXIyRCwgZmxvYXQyLCBmbG9hdDEsIGludDIpOwotICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZUxv
ZE9mZnNldCIsIGdzYW1wbGVyM0QsIGZsb2F0MywgZmxvYXQxLCBpbnQzKTsKLSAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEsICJ0ZXh0dXJlTG9kT2Zm
c2V0Iiwgc2FtcGxlcjJEU2hhZG93LCBmbG9hdDMsIGZsb2F0MSwgaW50Mik7Ci0gICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlTG9kT2Zm
c2V0IiwgZ3NhbXBsZXIyREFycmF5LCBmbG9hdDMsIGZsb2F0MSwgaW50Mik7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlTG9kT2Zm
c2V0IiwgZ3NhbXBsZXIyRCwgZmxvYXQyLCBmbG9hdDEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxU
SU5TLCBndmVjNCwgInRleHR1cmVMb2RPZmZzZXQiLCBnc2FtcGxlcjNELCBmbG9hdDMsIGZsb2F0
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMpOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwgInRleHR1cmVMb2RPZmZzZXQi
LCBzYW1wbGVyMkRTaGFkb3csIGZsb2F0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZsb2F0MSwgaW50Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlM
VElOUywgZ3ZlYzQsICJ0ZXh0dXJlTG9kT2Zmc2V0IiwgZ3NhbXBsZXIyREFycmF5LCBmbG9hdDMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDEsIGludDIpOwogCiAgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlUHJv
akxvZCIsIGdzYW1wbGVyMkQsIGZsb2F0MywgZmxvYXQxKTsKICAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qTG9kIiwgZ3NhbXBs
ZXIyRCwgZmxvYXQ0LCBmbG9hdDEpOwogICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNT
TDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZVByb2pMb2QiLCBnc2FtcGxlcjNELCBmbG9hdDQs
IGZsb2F0MSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywg
ZmxvYXQxLCAidGV4dHVyZVByb2pMb2QiLCBzYW1wbGVyMkRTaGFkb3csIGZsb2F0NCwgZmxvYXQx
KTsKLQotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0
LCAidGV4dHVyZVByb2pMb2RPZmZzZXQiLCBnc2FtcGxlcjJELCBmbG9hdDMsIGZsb2F0MSwgaW50
Mik7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQs
ICJ0ZXh0dXJlUHJvakxvZE9mZnNldCIsIGdzYW1wbGVyMkQsIGZsb2F0NCwgZmxvYXQxLCBpbnQy
KTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwg
InRleHR1cmVQcm9qTG9kT2Zmc2V0IiwgZ3NhbXBsZXIzRCwgZmxvYXQ0LCBmbG9hdDEsIGludDMp
OwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwg
InRleHR1cmVQcm9qTG9kT2Zmc2V0Iiwgc2FtcGxlcjJEU2hhZG93LCBmbG9hdDQsIGZsb2F0MSwg
aW50Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxv
YXQxLCAidGV4dHVyZVByb2pMb2QiLCBzYW1wbGVyMkRTaGFkb3csIGZsb2F0NCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0MSk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qTG9kT2Zmc2V0IiwgZ3Nh
bXBsZXIyRCwgZmxvYXQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQxLCBp
bnQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVj
NCwgInRleHR1cmVQcm9qTG9kT2Zmc2V0IiwgZ3NhbXBsZXIyRCwgZmxvYXQ0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQxLCBpbnQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qTG9kT2Zmc2V0Iiwg
Z3NhbXBsZXIzRCwgZmxvYXQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQx
LCBpbnQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBm
bG9hdDEsICJ0ZXh0dXJlUHJvakxvZE9mZnNldCIsIHNhbXBsZXIyRFNoYWRvdywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0NCwgZmxvYXQxLCBpbnQyKTsKIAogICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4ZWxGZXRjaCIs
IGdzYW1wbGVyMkQsIGludDIsIGludDEpOwogICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
RVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4ZWxGZXRjaCIsIGdzYW1wbGVyM0QsIGludDMsIGlu
dDEpOwpAQCAtNDQxLDM4ICs1NzEsMTEwIEBAIHZvaWQgSW5zZXJ0QnVpbHRJbkZ1bmN0aW9ucyhz
aDo6R0xlbnVtIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBjb25zdCBTaEJ1aWx0SW5SCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MSk7CiAgICAgfQogCi0gICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXhlbEZldGNoT2Zm
c2V0IiwgZ3NhbXBsZXIyRCwgaW50MiwgaW50MSwgaW50Mik7Ci0gICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXhlbEZldGNoT2Zmc2V0IiwgZ3Nh
bXBsZXIzRCwgaW50MywgaW50MSwgaW50Myk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXhlbEZldGNoT2Zmc2V0IiwgZ3NhbXBsZXIyREFy
cmF5LCBpbnQzLCBpbnQxLCBpbnQyKTsKLQotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
RVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZUdyYWQiLCBnc2FtcGxlcjJELCBmbG9hdDIs
IGZsb2F0MiwgZmxvYXQyKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JV
SUxUSU5TLCBndmVjNCwgInRleHR1cmVHcmFkIiwgZ3NhbXBsZXIzRCwgZmxvYXQzLCBmbG9hdDMs
IGZsb2F0Myk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywg
Z3ZlYzQsICJ0ZXh0dXJlR3JhZCIsIGdzYW1wbGVyQ3ViZSwgZmxvYXQzLCBmbG9hdDMsIGZsb2F0
Myk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxvYXQx
LCAidGV4dHVyZUdyYWQiLCBzYW1wbGVyMkRTaGFkb3csIGZsb2F0MywgZmxvYXQyLCBmbG9hdDIp
OwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwg
InRleHR1cmVHcmFkIiwgc2FtcGxlckN1YmVTaGFkb3csIGZsb2F0NCwgZmxvYXQzLCBmbG9hdDMp
OwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAi
dGV4dHVyZUdyYWQiLCBnc2FtcGxlcjJEQXJyYXksIGZsb2F0MywgZmxvYXQyLCBmbG9hdDIpOwot
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwgInRl
eHR1cmVHcmFkIiwgc2FtcGxlcjJEQXJyYXlTaGFkb3csIGZsb2F0NCwgZmxvYXQyLCBmbG9hdDIp
OwotCi0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQs
ICJ0ZXh0dXJlR3JhZE9mZnNldCIsIGdzYW1wbGVyMkQsIGZsb2F0MiwgZmxvYXQyLCBmbG9hdDIs
IGludDIpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2
ZWM0LCAidGV4dHVyZUdyYWRPZmZzZXQiLCBnc2FtcGxlcjNELCBmbG9hdDMsIGZsb2F0MywgZmxv
YXQzLCBpbnQzKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5T
LCBmbG9hdDEsICJ0ZXh0dXJlR3JhZE9mZnNldCIsIHNhbXBsZXIyRFNoYWRvdywgZmxvYXQzLCBm
bG9hdDIsIGZsb2F0MiwgaW50Mik7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NM
M19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlR3JhZE9mZnNldCIsIGdzYW1wbGVyMkRBcnJheSwg
ZmxvYXQzLCBmbG9hdDIsIGZsb2F0MiwgaW50Mik7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihFU1NMM19CVUlMVElOUywgZmxvYXQxLCAidGV4dHVyZUdyYWRPZmZzZXQiLCBzYW1wbGVy
MkRBcnJheVNoYWRvdywgZmxvYXQ0LCBmbG9hdDIsIGZsb2F0MiwgaW50Mik7Ci0KLSAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9q
R3JhZCIsIGdzYW1wbGVyMkQsIGZsb2F0MywgZmxvYXQyLCBmbG9hdDIpOwotICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZVByb2pHcmFk
IiwgZ3NhbXBsZXIyRCwgZmxvYXQ0LCBmbG9hdDIsIGZsb2F0Mik7Ci0gICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlUHJvakdyYWQiLCBn
c2FtcGxlcjNELCBmbG9hdDQsIGZsb2F0MywgZmxvYXQzKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEsICJ0ZXh0dXJlUHJvakdyYWQiLCBzYW1w
bGVyMkRTaGFkb3csIGZsb2F0NCwgZmxvYXQyLCBmbG9hdDIpOwotCi0gICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlUHJvakdyYWRPZmZz
ZXQiLCBnc2FtcGxlcjJELCBmbG9hdDMsIGZsb2F0MiwgZmxvYXQyLCBpbnQyKTsKLSAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9q
R3JhZE9mZnNldCIsIGdzYW1wbGVyMkQsIGZsb2F0NCwgZmxvYXQyLCBmbG9hdDIsIGludDIpOwot
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4
dHVyZVByb2pHcmFkT2Zmc2V0IiwgZ3NhbXBsZXIzRCwgZmxvYXQ0LCBmbG9hdDMsIGZsb2F0Mywg
aW50Myk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxv
YXQxLCAidGV4dHVyZVByb2pHcmFkT2Zmc2V0Iiwgc2FtcGxlcjJEU2hhZG93LCBmbG9hdDQsIGZs
b2F0MiwgZmxvYXQyLCBpbnQyKTsKKyAgICBpZiAocmVzb3VyY2VzLkVYVF9ZVVZfdGFyZ2V0KQor
ICAgIHsKKyAgICAgICAgY29uc3QgVFR5cGUgKnNhbXBsZXJFeHRlcm5hbDJEWTJZRVhUID0gVENh
Y2hlOjpnZXRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbDJEWTJZRVhUKTsKKworICAgICAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCAiR0xfRVhUX1lVVl90YXJnZXQi
LCBmbG9hdDQsICJ0ZXhlbEZldGNoIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzYW1wbGVyRXh0ZXJuYWwyRFkyWUVYVCwgaW50MiwgaW50MSk7CisgICAgfQorCisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXhlbEZldGNo
T2Zmc2V0IiwgZ3NhbXBsZXIyRCwgaW50MiwgaW50MSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJ
TlMsIGd2ZWM0LCAidGV4ZWxGZXRjaE9mZnNldCIsIGdzYW1wbGVyM0QsIGludDMsIGludDEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleGVsRmV0Y2hPZmZzZXQiLCBnc2Ft
cGxlcjJEQXJyYXksIGludDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxLCBp
bnQyKTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2
ZWM0LCAidGV4dHVyZUdyYWQiLCBnc2FtcGxlcjJELCBmbG9hdDIsIGZsb2F0MiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlR3JhZCIsIGdzYW1wbGVyM0QsIGZs
b2F0MywgZmxvYXQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQzKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1
cmVHcmFkIiwgZ3NhbXBsZXJDdWJlLCBmbG9hdDMsIGZsb2F0MywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NM
M19CVUlMVElOUywgZmxvYXQxLCAidGV4dHVyZUdyYWQiLCBzYW1wbGVyMkRTaGFkb3csIGZsb2F0
MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0MiwgZmxvYXQyKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEsICJ0ZXh0dXJl
R3JhZCIsIHNhbXBsZXJDdWJlU2hhZG93LCBmbG9hdDQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihF
U1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlR3JhZCIsIGdzYW1wbGVyMkRBcnJheSwgZmxv
YXQzLCBmbG9hdDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDIpOworICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwgInRleHR1
cmVHcmFkIiwgc2FtcGxlcjJEQXJyYXlTaGFkb3csIGZsb2F0NCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsb2F0MiwgZmxvYXQyKTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZUdyYWRPZmZzZXQiLCBnc2FtcGxl
cjJELCBmbG9hdDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDIsIGZsb2F0
MiwgaW50Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywg
Z3ZlYzQsICJ0ZXh0dXJlR3JhZE9mZnNldCIsIGdzYW1wbGVyM0QsIGZsb2F0MywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0MywgZmxvYXQzLCBpbnQzKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEsICJ0ZXh0dXJlR3JhZE9m
ZnNldCIsIHNhbXBsZXIyRFNoYWRvdywgZmxvYXQzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxvYXQyLCBmbG9hdDIsIGludDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZUdyYWRPZmZzZXQiLCBnc2FtcGxlcjJE
QXJyYXksIGZsb2F0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0MiwgZmxv
YXQyLCBpbnQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5T
LCBmbG9hdDEsICJ0ZXh0dXJlR3JhZE9mZnNldCIsIHNhbXBsZXIyREFycmF5U2hhZG93LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQ0LCBmbG9hdDIsIGZsb2F0MiwgaW50Mik7
CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwg
InRleHR1cmVQcm9qR3JhZCIsIGdzYW1wbGVyMkQsIGZsb2F0MywgZmxvYXQyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qR3JhZCIsIGdzYW1wbGVyMkQs
IGZsb2F0NCwgZmxvYXQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQyKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRl
eHR1cmVQcm9qR3JhZCIsIGdzYW1wbGVyM0QsIGZsb2F0NCwgZmxvYXQzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEsICJ0ZXh0dXJlUHJvakdyYWQiLCBzYW1wbGVyMkRTaGFk
b3csIGZsb2F0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0MiwgZmxvYXQy
KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0
LCAidGV4dHVyZVByb2pHcmFkT2Zmc2V0IiwgZ3NhbXBsZXIyRCwgZmxvYXQzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQyLCBmbG9hdDIsIGludDIpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZVByb2pHcmFk
T2Zmc2V0IiwgZ3NhbXBsZXIyRCwgZmxvYXQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQyLCBmbG9hdDIsIGludDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
RVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZVByb2pHcmFkT2Zmc2V0IiwgZ3NhbXBsZXIz
RCwgZmxvYXQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQzLCBmbG9hdDMs
IGludDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZs
b2F0MSwgInRleHR1cmVQcm9qR3JhZE9mZnNldCIsIHNhbXBsZXIyRFNoYWRvdywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0NCwgZmxvYXQyLCBmbG9hdDIsIGludDIpOworCisg
ICAgY29uc3QgVFR5cGUgKmdpbWFnZTJEICAgICAgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0R0ltYWdl
MkQpOworICAgIGNvbnN0IFRUeXBlICpnaW1hZ2UzRCAgICAgID0gVENhY2hlOjpnZXRUeXBlKEVi
dEdJbWFnZTNEKTsKKyAgICBjb25zdCBUVHlwZSAqZ2ltYWdlMkRBcnJheSA9IFRDYWNoZTo6Z2V0
VHlwZShFYnRHSW1hZ2UyREFycmF5KTsKKyAgICBjb25zdCBUVHlwZSAqZ2ltYWdlQ3ViZSAgICA9
IFRDYWNoZTo6Z2V0VHlwZShFYnRHSW1hZ2VDdWJlKTsKKworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oRVNTTDNfMV9CVUlMVElOUywgdm9pZFR5cGUsICJpbWFnZVN0b3JlIiwgZ2ltYWdl
MkQsIGludDIsIGd2ZWM0KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzXzFf
QlVJTFRJTlMsIHZvaWRUeXBlLCAiaW1hZ2VTdG9yZSIsIGdpbWFnZTNELCBpbnQzLCBndmVjNCk7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM18xX0JVSUxUSU5TLCB2b2lkVHlw
ZSwgImltYWdlU3RvcmUiLCBnaW1hZ2UyREFycmF5LCBpbnQzLCBndmVjNCk7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM18xX0JVSUxUSU5TLCB2b2lkVHlwZSwgImltYWdlU3Rv
cmUiLCBnaW1hZ2VDdWJlLCBpbnQzLCBndmVjNCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKEVTU0wzXzFfQlVJTFRJTlMsIGd2ZWM0LCAiaW1hZ2VMb2FkIiwgZ2ltYWdlMkQsIGlu
dDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfMV9CVUlMVElOUywgZ3Zl
YzQsICJpbWFnZUxvYWQiLCBnaW1hZ2UzRCwgaW50Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihFU1NMM18xX0JVSUxUSU5TLCBndmVjNCwgImltYWdlTG9hZCIsIGdpbWFnZTJEQXJy
YXksIGludDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfMV9CVUlMVElO
UywgZ3ZlYzQsICJpbWFnZUxvYWQiLCBnaW1hZ2VDdWJlLCBpbnQzKTsKKworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfMV9CVUlMVElOUywgaW50MiwgImltYWdlU2l6ZSIsIGdp
bWFnZTJEKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzXzFfQlVJTFRJTlMs
IGludDMsICJpbWFnZVNpemUiLCBnaW1hZ2UzRCk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihFU1NMM18xX0JVSUxUSU5TLCBpbnQzLCAiaW1hZ2VTaXplIiwgZ2ltYWdlMkRBcnJheSk7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM18xX0JVSUxUSU5TLCBpbnQyLCAi
aW1hZ2VTaXplIiwgZ2ltYWdlQ3ViZSk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
RnVuY3Rpb25Ob1BhcmFtZXRlcnMoRVNTTDNfMV9CVUlMVElOUywgRU9wTWVtb3J5QmFycmllciwg
dm9pZFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJtZW1vcnlCYXJyaWVyIik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbkZ1bmN0
aW9uTm9QYXJhbWV0ZXJzKEVTU0wzXzFfQlVJTFRJTlMsIEVPcE1lbW9yeUJhcnJpZXJBdG9taWND
b3VudGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2b2lkVHlwZSwgIm1lbW9yeUJhcnJpZXJBdG9taWNDb3VudGVyIik7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbkZ1bmN0aW9uTm9QYXJhbWV0ZXJzKEVTU0wzXzFfQlVJTFRJTlMsIEVP
cE1lbW9yeUJhcnJpZXJCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZvaWRUeXBlLCAibWVtb3J5QmFycmllckJ1ZmZlciIpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5GdW5jdGlvbk5vUGFyYW1ldGVycyhFU1NMM18xX0JVSUxU
SU5TLCBFT3BNZW1vcnlCYXJyaWVySW1hZ2UsIHZvaWRUeXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5QmFycmllckltYWdlIik7CisK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzXzFfQlVJTFRJTlMsIGd2ZWM0LCAi
dGV4ZWxGZXRjaCIsIGdzYW1wbGVyMkRNUywgaW50MiwgaW50MSk7CisKKyAgICBpZiAodHlwZSA9
PSBHTF9DT01QVVRFX1NIQURFUikKKyAgICB7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW5GdW5jdGlvbk5vUGFyYW1ldGVycyhFU1NMM18xX0JVSUxUSU5TLCBFT3BCYXJyaWVyLCB2
b2lkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJiYXJyaWVyIik7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5GdW5j
dGlvbk5vUGFyYW1ldGVycyhFU1NMM18xX0JVSUxUSU5TLCBFT3BNZW1vcnlCYXJyaWVyU2hhcmVk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dm9pZFR5cGUsICJtZW1vcnlCYXJyaWVyU2hhcmVkIik7CisgICAgICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW5GdW5jdGlvbk5vUGFyYW1ldGVycyhFU1NMM18xX0JVSUxUSU5TLCBFT3BHcm91
cE1lbW9yeUJhcnJpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkVHlwZSwgImdyb3VwTWVtb3J5QmFycmllciIpOworICAgIH0KIAog
ICAgIC8vCiAgICAgLy8gRGVwdGggcmFuZ2UgaW4gd2luZG93IGNvb3JkaW5hdGVzCiAgICAgLy8K
LSAgICBURmllbGRMaXN0ICpmaWVsZHMgPSBOZXdQb29sVEZpZWxkTGlzdCgpOworICAgIFRGaWVs
ZExpc3QgKmZpZWxkcyAgICAgICA9IE5ld1Bvb2xURmllbGRMaXN0KCk7CiAgICAgVFNvdXJjZUxv
YyB6ZXJvU291cmNlTG9jID0gezAsIDAsIDAsIDB9OwogICAgIGF1dG8gaGlnaHBGbG9hdDEgICAg
ICAgICA9IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwgRXZxR2xvYmFsLCAxKTsKICAgICBU
RmllbGQgKm5lYXIgICAgICAgICAgICAgPSBuZXcgVEZpZWxkKGhpZ2hwRmxvYXQxLCBOZXdQb29s
VFN0cmluZygibmVhciIpLCB6ZXJvU291cmNlTG9jKTsKQEAgLTQ4MSwxNSArNjgzLDE2IEBAIHZv
aWQgSW5zZXJ0QnVpbHRJbkZ1bmN0aW9ucyhzaDo6R0xlbnVtIHR5cGUsIFNoU2hhZGVyU3BlYyBz
cGVjLCBjb25zdCBTaEJ1aWx0SW5SCiAgICAgZmllbGRzLT5wdXNoX2JhY2sobmVhcik7CiAgICAg
ZmllbGRzLT5wdXNoX2JhY2soZmFyKTsKICAgICBmaWVsZHMtPnB1c2hfYmFjayhkaWZmKTsKLSAg
ICBUU3RydWN0dXJlICpkZXB0aFJhbmdlU3RydWN0ID0gbmV3IFRTdHJ1Y3R1cmUoTmV3UG9vbFRT
dHJpbmcoImdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJzIiksIGZpZWxkcyk7CisgICAgVFN0cnVjdHVy
ZSAqZGVwdGhSYW5nZVN0cnVjdCA9CisgICAgICAgIG5ldyBUU3RydWN0dXJlKE5ld1Bvb2xUU3Ry
aW5nKCJnbF9EZXB0aFJhbmdlUGFyYW1ldGVycyIpLCBmaWVsZHMpOwogICAgIFRWYXJpYWJsZSAq
ZGVwdGhSYW5nZVBhcmFtZXRlcnMgPQogICAgICAgICBuZXcgVFZhcmlhYmxlKCZkZXB0aFJhbmdl
U3RydWN0LT5uYW1lKCksIFRUeXBlKGRlcHRoUmFuZ2VTdHJ1Y3QpLCB0cnVlKTsKICAgICBzeW1i
b2xUYWJsZS5pbnNlcnQoQ09NTU9OX0JVSUxUSU5TLCBkZXB0aFJhbmdlUGFyYW1ldGVycyk7CiAg
ICAgVFZhcmlhYmxlICpkZXB0aFJhbmdlID0gbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygi
Z2xfRGVwdGhSYW5nZSIpLCBUVHlwZShkZXB0aFJhbmdlU3RydWN0KSk7CiAgICAgZGVwdGhSYW5n
ZS0+c2V0UXVhbGlmaWVyKEV2cVVuaWZvcm0pOwotICAgIC8vIEVuc3VyZSB3ZSBldmFsdWF0ZSB0
aGUgbWFuZ2xlZCBuYW1lIGZvciBkZXB0aCByYW5nZSwgc28gd2UgYWxsb2NhdGUgdG8gdGhlIGN1
cnJlbnQgc2NvcGUuCi0gICAgZGVwdGhSYW5nZVBhcmFtZXRlcnMtPmdldFR5cGUoKS5nZXRNYW5n
bGVkTmFtZSgpOwotICAgIGRlcHRoUmFuZ2UtPmdldFR5cGUoKS5nZXRNYW5nbGVkTmFtZSgpOwor
ICAgIC8vIERvIGxhenkgaW5pdGlhbGl6YXRpb24gZm9yIGRlcHRoIHJhbmdlLCBzbyB3ZSBhbGxv
Y2F0ZSB0byB0aGUgY3VycmVudCBzY29wZS4KKyAgICBkZXB0aFJhbmdlUGFyYW1ldGVycy0+Z2V0
VHlwZSgpLnJlYWxpemUoKTsKKyAgICBkZXB0aFJhbmdlLT5nZXRUeXBlKCkucmVhbGl6ZSgpOwog
ICAgIHN5bWJvbFRhYmxlLmluc2VydChDT01NT05fQlVJTFRJTlMsIGRlcHRoUmFuZ2UpOwogCiAg
ICAgLy8KQEAgLTU3Niw3ICs3NzksOCBAQCB2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnMoc2g6
OkdMZW51bSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgY29uc3QgU2hCdWlsdEluUgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy5NYXhBdG9taWNDb3VudGVyQnVmZmVy
U2l6ZSwgRWJwTWVkaXVtKTsKIH0KIAotdm9pZCBJZGVudGlmeUJ1aWx0SW5zKHNoOjpHTGVudW0g
dHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsCit2b2lkIElkZW50aWZ5QnVpbHRJbnMoc2g6OkdMZW51
bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyU3BlYyBzcGVjLAogICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVzb3VyY2VzLAogICAg
ICAgICAgICAgICAgICAgICAgIFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUpCiB7CkBAIC01ODQs
MTIwICs3ODgsMTQxIEBAIHZvaWQgSWRlbnRpZnlCdWlsdElucyhzaDo6R0xlbnVtIHR5cGUsIFNo
U2hhZGVyU3BlYyBzcGVjLAogICAgIC8vIEluc2VydCBzb21lIHNwZWNpYWwgYnVpbHQtaW4gdmFy
aWFibGVzIHRoYXQgYXJlIG5vdCBpbgogICAgIC8vIHRoZSBidWlsdC1pbiBoZWFkZXIgZmlsZXMu
CiAgICAgLy8KKworICAgIGlmIChyZXNvdXJjZXMuT1ZSX211bHRpdmlldyAmJiB0eXBlICE9IEdM
X0NPTVBVVEVfU0hBREVSKQorICAgIHsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KENPTU1P
Tl9CVUlMVElOUywgIkdMX09WUl9tdWx0aXZpZXciLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfVmlld0lEX09WUiIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRVSW50LCBFYnBIaWdo
LCBFdnFWaWV3SURPVlIsIDEpKSk7CisgICAgfQorCiAgICAgc3dpdGNoICh0eXBlKQogICAgIHsK
LSAgICAgIGNhc2UgR0xfRlJBR01FTlRfU0hBREVSOgotICAgICAgewotICAgICAgICAgIHN5bWJv
bFRhYmxlLmluc2VydChDT01NT05fQlVJTFRJTlMsIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJp
bmcoImdsX0ZyYWdDb29yZCIpLAotICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJwTWVk
aXVtLCBFdnFGcmFnQ29vcmQsIDQpKSk7Ci0gICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KENP
TU1PTl9CVUlMVElOUywgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfRnJvbnRGYWNp
bmciKSwKLSAgICAgICAgICAgICAgVFR5cGUoRWJ0Qm9vbCwgIEVicFVuZGVmaW5lZCwgRXZxRnJv
bnRGYWNpbmcsIDEpKSk7Ci0gICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KENPTU1PTl9CVUlM
VElOUywgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfUG9pbnRDb29yZCIpLAotICAg
ICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFQb2ludENvb3JkLCAyKSkp
OwotCi0gICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KEVTU0wxX0JVSUxUSU5TLCBuZXcgVFZh
cmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnQ29sb3IiKSwKLSAgICAgICAgICAgICAgVFR5
cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0NvbG9yLCA0KSkpOwotICAgICAgICAgIFRU
eXBlIGZyYWdEYXRhKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUZyYWdEYXRhLCA0LCAxLCB0cnVl
KTsKLSAgICAgICAgICBmcmFnRGF0YS5zZXRBcnJheVNpemUocmVzb3VyY2VzLk1heERyYXdCdWZm
ZXJzKTsKLSAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoRVNTTDFfQlVJTFRJTlMsIG5ldyBU
VmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdEYXRhIiksIGZyYWdEYXRhKSk7Ci0KLSAg
ICAgICAgICBpZiAocmVzb3VyY2VzLkVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkKQotICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KAotICAgICAgICAgICAgICAgICAg
RVNTTDFfQlVJTFRJTlMsICJHTF9FWFRfYmxlbmRfZnVuY19leHRlbmRlZCIsCi0gICAgICAgICAg
ICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9TZWNvbmRhcnlGcmFnQ29s
b3JFWFQiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQs
IEVicE1lZGl1bSwgRXZxU2Vjb25kYXJ5RnJhZ0NvbG9yRVhULCA0KSkpOwotICAgICAgICAgICAg
ICBUVHlwZSBzZWNvbmRhcnlGcmFnRGF0YShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFTZWNvbmRh
cnlGcmFnRGF0YUVYVCwgNCwgMSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgIHNlY29uZGFyeUZyYWdE
YXRhLnNldEFycmF5U2l6ZShyZXNvdXJjZXMuTWF4RHVhbFNvdXJjZURyYXdCdWZmZXJzKTsKLSAg
ICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KAotICAgICAgICAgICAgICAgICAgRVNTTDFf
QlVJTFRJTlMsICJHTF9FWFRfYmxlbmRfZnVuY19leHRlbmRlZCIsCi0gICAgICAgICAgICAgICAg
ICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9TZWNvbmRhcnlGcmFnRGF0YUVYVCIp
LCBzZWNvbmRhcnlGcmFnRGF0YSkpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmIChyZXNv
dXJjZXMuRVhUX2ZyYWdfZGVwdGgpCi0gICAgICAgICAgewotICAgICAgICAgICAgICBzeW1ib2xU
YWJsZS5pbnNlcnQoCi0gICAgICAgICAgICAgICAgICBFU1NMMV9CVUlMVElOUywgIkdMX0VYVF9m
cmFnX2RlcHRoIiwKLSAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUoCi0gICAgICAgICAg
ICAgICAgICAgICAgTmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdEZXB0aEVYVCIpLAotICAgICAgICAg
ICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCByZXNvdXJjZXMuRnJhZ21lbnRQcmVjaXNpb25I
aWdoID8gRWJwSGlnaCA6IEVicE1lZGl1bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
dnFGcmFnRGVwdGhFWFQsIDEpKSk7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0KEVTU0wzX0JVSUxUSU5TLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
ZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnRGVwdGgiKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwg
RXZxRnJhZ0RlcHRoLCAxKSkpOwotCi0gICAgICAgICAgaWYgKHJlc291cmNlcy5FWFRfc2hhZGVy
X2ZyYW1lYnVmZmVyX2ZldGNoIHx8IHJlc291cmNlcy5OVl9zaGFkZXJfZnJhbWVidWZmZXJfZmV0
Y2gpCi0gICAgICAgICAgewotICAgICAgICAgICAgICBUVHlwZSBsYXN0RnJhZ0RhdGEoRWJ0Rmxv
YXQsIEVicE1lZGl1bSwgRXZxTGFzdEZyYWdEYXRhLCA0LCAxLCB0cnVlKTsKLSAgICAgICAgICAg
ICAgbGFzdEZyYWdEYXRhLnNldEFycmF5U2l6ZShyZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMpOwot
Ci0gICAgICAgICAgICAgIGlmIChyZXNvdXJjZXMuRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRj
aCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
KEVTU0wxX0JVSUxUSU5TLCAiR0xfRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCIsCi0gICAg
ICAgICAgICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfTGFzdEZy
YWdEYXRhIiksIGxhc3RGcmFnRGF0YSkpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
IGVsc2UgaWYgKHJlc291cmNlcy5OVl9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2gpCi0gICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMMV9CVUlM
VElOUywgIkdMX05WX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCIsCi0gICAgICAgICAgICAgICAg
ICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfTGFzdEZyYWdDb2xvciIpLAot
ICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUxhc3RG
cmFnQ29sb3IsIDQpKSk7Ci0gICAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoRVNT
TDFfQlVJTFRJTlMsICJHTF9OVl9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2giLAotICAgICAgICAg
ICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0xhc3RGcmFnRGF0
YSIpLCBsYXN0RnJhZ0RhdGEpKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAg
ICAgICBlbHNlIGlmIChyZXNvdXJjZXMuQVJNX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCkKLSAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMMV9CVUlMVElO
UywgIkdMX0FSTV9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2giLAotICAgICAgICAgICAgICAgICAg
bmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfTGFzdEZyYWdDb2xvckFSTSIpLAotICAg
ICAgICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxTGFzdEZyYWdDb2xv
ciwgNCkpKTsKLSAgICAgICAgICB9Ci0gICAgICB9CisgICAgICAgIGNhc2UgR0xfRlJBR01FTlRf
U0hBREVSOgorICAgICAgICB7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoQ09NTU9O
X0JVSUxUSU5TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUo
TmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdDb29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0Nv
b3JkLCA0KSkpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KENPTU1PTl9CVUlMVElO
UywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xU
U3RyaW5nKCJnbF9Gcm9udEZhY2luZyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFGcm9udEZhY2lu
ZywgMSkpKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChDT01NT05fQlVJTFRJTlMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0
cmluZygiZ2xfUG9pbnRDb29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxUG9pbnRDb29yZCwgMikp
KTsKKworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KEVTU0wxX0JVSUxUSU5TLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmco
ImdsX0ZyYWdDb2xvciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0NvbG9yLCA0KSkpOworICAg
ICAgICAgICAgVFR5cGUgZnJhZ0RhdGEoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0RhdGEs
IDQsIDEsIHRydWUpOworICAgICAgICAgICAgZnJhZ0RhdGEuc2V0QXJyYXlTaXplKHJlc291cmNl
cy5NYXhEcmF3QnVmZmVycyk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoRVNTTDFf
QlVJTFRJTlMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShO
ZXdQb29sVFN0cmluZygiZ2xfRnJhZ0RhdGEiKSwgZnJhZ0RhdGEpKTsKKworICAgICAgICAgICAg
aWYgKHJlc291cmNlcy5FWFRfYmxlbmRfZnVuY19leHRlbmRlZCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoCisgICAgICAgICAgICAgICAgICAgIEVT
U0wxX0JVSUxUSU5TLCAiR0xfRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQiLAorICAgICAgICAgICAg
ICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9TZWNvbmRhcnlGcmFnQ29s
b3JFWFQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9h
dCwgRWJwTWVkaXVtLCBFdnFTZWNvbmRhcnlGcmFnQ29sb3JFWFQsIDQpKSk7CisgICAgICAgICAg
ICAgICAgVFR5cGUgc2Vjb25kYXJ5RnJhZ0RhdGEoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxU2Vj
b25kYXJ5RnJhZ0RhdGFFWFQsIDQsIDEsIHRydWUpOworICAgICAgICAgICAgICAgIHNlY29uZGFy
eUZyYWdEYXRhLnNldEFycmF5U2l6ZShyZXNvdXJjZXMuTWF4RHVhbFNvdXJjZURyYXdCdWZmZXJz
KTsKKyAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoCisgICAgICAgICAgICAgICAg
ICAgIEVTU0wxX0JVSUxUSU5TLCAiR0xfRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQiLAorICAgICAg
ICAgICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9TZWNvbmRhcnlG
cmFnRGF0YUVYVCIpLCBzZWNvbmRhcnlGcmFnRGF0YSkpOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAocmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgKKyAgICAgICAgICAgICAgICAgICAgRVNT
TDFfQlVJTFRJTlMsICJHTF9FWFRfZnJhZ19kZXB0aCIsCisgICAgICAgICAgICAgICAgICAgIG5l
dyBUVmFyaWFibGUoCisgICAgICAgICAgICAgICAgICAgICAgICBOZXdQb29sVFN0cmluZygiZ2xf
RnJhZ0RlcHRoRVhUIiksCisgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwg
cmVzb3VyY2VzLkZyYWdtZW50UHJlY2lzaW9uSGlnaCA/IEVicEhpZ2ggOiBFYnBNZWRpdW0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdnFGcmFnRGVwdGhFWFQsIDEpKSk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMM19CVUlMVElO
UywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xU
U3RyaW5nKCJnbF9GcmFnRGVwdGgiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFGcmFnRGVwdGgsIDEpKSk7
CisKKyAgICAgICAgICAgIGlmIChyZXNvdXJjZXMuRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRj
aCB8fCByZXNvdXJjZXMuTlZfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIFRUeXBlIGxhc3RGcmFnRGF0YShFYnRGbG9hdCwgRWJwTWVkaXVt
LCBFdnFMYXN0RnJhZ0RhdGEsIDQsIDEsIHRydWUpOworICAgICAgICAgICAgICAgIGxhc3RGcmFn
RGF0YS5zZXRBcnJheVNpemUocmVzb3VyY2VzLk1heERyYXdCdWZmZXJzKTsKKworICAgICAgICAg
ICAgICAgIGlmIChyZXNvdXJjZXMuRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCkKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEVTU0wxX0JVSUxUSU5TLCAiR0xfRVhUX3NoYWRlcl9mcmFt
ZWJ1ZmZlcl9mZXRjaCIsCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5l
d1Bvb2xUU3RyaW5nKCJnbF9MYXN0RnJhZ0RhdGEiKSwgbGFzdEZyYWdEYXRhKSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlc291cmNlcy5OVl9zaGFkZXJf
ZnJhbWVidWZmZXJfZmV0Y2gpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBzeW1ib2xUYWJsZS5pbnNlcnQoCisgICAgICAgICAgICAgICAgICAgICAgICBFU1NMMV9CVUlM
VElOUywgIkdMX05WX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9MYXN0RnJhZ0NvbG9yIiks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBF
YnBNZWRpdW0sIEV2cUxhc3RGcmFnQ29sb3IsIDQpKSk7CisgICAgICAgICAgICAgICAgICAgIHN5
bWJvbFRhYmxlLmluc2VydCgKKyAgICAgICAgICAgICAgICAgICAgICAgIEVTU0wxX0JVSUxUSU5T
LCAiR0xfTlZfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0xhc3RGcmFnRGF0YSIpLCBsYXN0
RnJhZ0RhdGEpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBlbHNlIGlmIChyZXNvdXJjZXMuQVJNX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoRVNTTDFfQlVJTFRJ
TlMsICJHTF9BUk1fc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfTGFzdEZy
YWdDb2xvckFSTSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUxhc3RGcmFnQ29sb3IsIDQpKSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgICBicmVhazsKIAotICAgICAgY2Fz
ZSBHTF9WRVJURVhfU0hBREVSOgotICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoQ09NTU9OX0JV
SUxUSU5TLCBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9Qb3NpdGlvbiIpLAotICAg
ICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cVBvc2l0aW9uLCA0KSkpOwotICAg
ICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoQ09NTU9OX0JVSUxUSU5TLCBuZXcgVFZhcmlhYmxlKE5l
d1Bvb2xUU3RyaW5nKCJnbF9Qb2ludFNpemUiKSwKLSAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0
LCBFYnBNZWRpdW0sIEV2cVBvaW50U2l6ZSwgMSkpKTsKLSAgICAgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0KEVTU0wzX0JVSUxUSU5TLCBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9JbnN0
YW5jZUlEIiksCi0gICAgICAgICAgICBUVHlwZShFYnRJbnQsIEVicEhpZ2gsIEV2cUluc3RhbmNl
SUQsIDEpKSk7Ci0gICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMM19CVUlMVElOUywgbmV3
IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfVmVydGV4SUQiKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEludCwg
RWJwSGlnaCwgRXZxVmVydGV4SUQsIDEpKSk7CisgICAgICAgIGNhc2UgR0xfVkVSVEVYX1NIQURF
UjoKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChDT01NT05fQlVJTFRJTlMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygi
Z2xfUG9zaXRpb24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFQb3NpdGlvbiwgNCkpKTsKKyAgICAgICAg
ICAgIHN5bWJvbFRhYmxlLmluc2VydChDT01NT05fQlVJTFRJTlMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfUG9pbnRTaXpl
IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZShF
YnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFQb2ludFNpemUsIDEpKSk7CisgICAgICAgICAgICBzeW1i
b2xUYWJsZS5pbnNlcnQoRVNTTDNfQlVJTFRJTlMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfSW5zdGFuY2VJRCIpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0SW50LCBF
YnBIaWdoLCBFdnFJbnN0YW5jZUlELCAxKSkpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0KEVTU0wzX0JVSUxUSU5TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBU
VmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX1ZlcnRleElEIiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRJbnQsIEVicEhpZ2gsIEV2cVZl
cnRleElELCAxKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQ09NUFVU
RV9TSEFERVI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NM
M18xX0JVSUxUSU5TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFi
bGUoTmV3UG9vbFRTdHJpbmcoImdsX051bVdvcmtHcm91cHMiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidFVJbnQsIEVicFVuZGVmaW5lZCwg
RXZxTnVtV29ya0dyb3VwcywgMykpKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChF
U1NMM18xX0JVSUxUSU5TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFy
aWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX1dvcmtHcm91cFNpemUiKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidFVJbnQsIEVicFVuZGVmaW5l
ZCwgRXZxV29ya0dyb3VwU2l6ZSwgMykpKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dChFU1NMM18xX0JVSUxUSU5TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBU
VmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX1dvcmtHcm91cElEIiksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRVSW50LCBFYnBVbmRlZmlu
ZWQsIEV2cVdvcmtHcm91cElELCAzKSkpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
KAorICAgICAgICAgICAgICAgIEVTU0wzXzFfQlVJTFRJTlMsCisgICAgICAgICAgICAgICAgbmV3
IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfTG9jYWxJbnZvY2F0aW9uSUQiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidFVJbnQsIEVicFVuZGVmaW5lZCwgRXZx
TG9jYWxJbnZvY2F0aW9uSUQsIDMpKSk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQo
CisgICAgICAgICAgICAgICAgRVNTTDNfMV9CVUlMVElOUywKKyAgICAgICAgICAgICAgICBuZXcg
VFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9HbG9iYWxJbnZvY2F0aW9uSUQiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidFVJbnQsIEVicFVuZGVmaW5lZCwgRXZx
R2xvYmFsSW52b2NhdGlvbklELCAzKSkpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
KAorICAgICAgICAgICAgICAgIEVTU0wzXzFfQlVJTFRJTlMsCisgICAgICAgICAgICAgICAgbmV3
IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfTG9jYWxJbnZvY2F0aW9uSW5kZXgiKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidFVJbnQsIEVicFVuZGVmaW5lZCwg
RXZxTG9jYWxJbnZvY2F0aW9uSW5kZXgsIDEpKSk7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEdMX0NPTVBVVEVfU0hBREVSOgotICAgICAgewotICAgICAgICAgIHN5bWJv
bFRhYmxlLmluc2VydChFU1NMM18xX0JVSUxUSU5TLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9OdW1Xb3JrR3JvdXBzIiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0VUludCwg
RWJwVW5kZWZpbmVkLCBFdnFOdW1Xb3JrR3JvdXBzLCAzKSkpOwotICAgICAgICAgIHN5bWJvbFRh
YmxlLmluc2VydChFU1NMM18xX0JVSUxUSU5TLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9Xb3JrR3JvdXBTaXplIiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0VUludCwgRWJw
VW5kZWZpbmVkLCBFdnFXb3JrR3JvdXBTaXplLCAzKSkpOwotICAgICAgICAgIHN5bWJvbFRhYmxl
Lmluc2VydChFU1NMM18xX0JVSUxUSU5TLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
ZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9Xb3JrR3JvdXBJRCIpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidFVJbnQsIEVicFVuZGVm
aW5lZCwgRXZxV29ya0dyb3VwSUQsIDMpKSk7Ci0gICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
KEVTU0wzXzFfQlVJTFRJTlMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFy
aWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0xvY2FsSW52b2NhdGlvbklEIiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0VUludCwgRWJwVW5kZWZp
bmVkLCBFdnFMb2NhbEludm9jYXRpb25JRCwgMykpKTsKLSAgICAgICAgICBzeW1ib2xUYWJsZS5p
bnNlcnQoRVNTTDNfMV9CVUlMVElOUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3
IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfR2xvYmFsSW52b2NhdGlvbklEIiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0VUludCwgRWJw
VW5kZWZpbmVkLCBFdnFHbG9iYWxJbnZvY2F0aW9uSUQsIDMpKSk7Ci0gICAgICAgICAgc3ltYm9s
VGFibGUuaW5zZXJ0KAotICAgICAgICAgICAgICBFU1NMM18xX0JVSUxUSU5TLAotICAgICAgICAg
ICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9Mb2NhbEludm9jYXRpb25JbmRl
eCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidFVJbnQsIEVicFVuZGVm
aW5lZCwgRXZxTG9jYWxJbnZvY2F0aW9uSW5kZXgsIDEpKSk7Ci0gICAgICB9Ci0gICAgICBicmVh
azsKLQotICAgICAgZGVmYXVsdDoKLSAgICAgICAgYXNzZXJ0KGZhbHNlICYmICJMYW5ndWFnZSBu
b3Qgc3VwcG9ydGVkIik7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydChm
YWxzZSAmJiAiTGFuZ3VhZ2Ugbm90IHN1cHBvcnRlZCIpOwogICAgIH0KIH0KIAotdm9pZCBJbml0
RXh0ZW5zaW9uQmVoYXZpb3IoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9y
KQordm9pZCBJbml0RXh0ZW5zaW9uQmVoYXZpb3IoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzICZy
ZXNvdXJjZXMsIFRFeHRlbnNpb25CZWhhdmlvciAmZXh0QmVoYXZpb3IpCiB7CiAgICAgaWYgKHJl
c291cmNlcy5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMpCiAgICAgICAgIGV4dEJlaGF2aW9yWyJH
TF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiXSA9IEVCaFVuZGVmaW5lZDsKQEAgLTcyMywxNCAr
OTQ4LDIzIEBAIHZvaWQgSW5pdEV4dGVuc2lvbkJlaGF2aW9yKGNvbnN0IFNoQnVpbHRJblJlc291
cmNlcyYgcmVzb3VyY2VzLAogICAgICAgICBleHRCZWhhdmlvclsiR0xfTlZfc2hhZGVyX2ZyYW1l
YnVmZmVyX2ZldGNoIl0gPSBFQmhVbmRlZmluZWQ7CiAgICAgaWYgKHJlc291cmNlcy5BUk1fc2hh
ZGVyX2ZyYW1lYnVmZmVyX2ZldGNoKQogICAgICAgICBleHRCZWhhdmlvclsiR0xfQVJNX3NoYWRl
cl9mcmFtZWJ1ZmZlcl9mZXRjaCJdID0gRUJoVW5kZWZpbmVkOworICAgIGlmIChyZXNvdXJjZXMu
T1ZSX211bHRpdmlldykKKyAgICB7CisgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9PVlJfbXVsdGl2
aWV3Il0gID0gRUJoVW5kZWZpbmVkOworICAgICAgICBleHRCZWhhdmlvclsiR0xfT1ZSX211bHRp
dmlldzIiXSA9IEVCaFVuZGVmaW5lZDsKKyAgICB9CisgICAgaWYgKHJlc291cmNlcy5FWFRfWVVW
X3RhcmdldCkKKyAgICB7CisgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9FWFRfWVVWX3RhcmdldCJd
ID0gRUJoVW5kZWZpbmVkOworICAgIH0KIH0KIAogdm9pZCBSZXNldEV4dGVuc2lvbkJlaGF2aW9y
KFRFeHRlbnNpb25CZWhhdmlvciAmZXh0QmVoYXZpb3IpCiB7Ci0gICAgZm9yIChhdXRvIGV4dF9p
dGVyID0gZXh0QmVoYXZpb3IuYmVnaW4oKTsKLSAgICAgICAgIGV4dF9pdGVyICE9IGV4dEJlaGF2
aW9yLmVuZCgpOwotICAgICAgICAgKytleHRfaXRlcikKKyAgICBmb3IgKGF1dG8gZXh0X2l0ZXIg
PSBleHRCZWhhdmlvci5iZWdpbigpOyBleHRfaXRlciAhPSBleHRCZWhhdmlvci5lbmQoKTsgKytl
eHRfaXRlcikKICAgICB7CiAgICAgICAgIGV4dF9pdGVyLT5zZWNvbmQgPSBFQmhVbmRlZmluZWQ7
CiAgICAgfQogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemUuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemUuaApp
bmRleCBjNDNjZTM0MTdhMjZmNDBmZjNmNmYzMzkzYmNlZTMxM2RkM2U2MTFjLi4yZTYxMjE4YTBm
MWE2N2Q4NGVmNTc0OWVmNmY2Mjc5NWQ1MWNlOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZS5o
CkBAIC0xMSwxNCArMTEsMjEgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0NvbXBp
bGVyLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgogCi12
b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnMoc2g6OkdMZW51bSB0eXBlLCBTaFNoYWRlclNwZWMg
c3BlYywgY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzICZyZXNvdXJjZXMsIFRTeW1ib2xUYWJsZSAm
dGFibGUpOworbmFtZXNwYWNlIHNoCit7CiAKLXZvaWQgSWRlbnRpZnlCdWlsdElucyhzaDo6R0xl
bnVtIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzLAotICAgICAgICAgICAgICAgICAgICAgIFRT
eW1ib2xUYWJsZSYgc3ltYm9sVGFibGUpOwordm9pZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25zKHNo
OjpHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaFNoYWRlclNwZWMg
c3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaEJ1aWx0SW5SZXNvdXJj
ZXMgJnJlc291cmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUU3ltYm9sVGFibGUg
JnRhYmxlKTsKIAotdm9pZCBJbml0RXh0ZW5zaW9uQmVoYXZpb3IoY29uc3QgU2hCdWlsdEluUmVz
b3VyY2VzJiByZXNvdXJjZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBURXh0ZW5zaW9u
QmVoYXZpb3ImIGV4dGVuc2lvbkJlaGF2aW9yKTsKK3ZvaWQgSWRlbnRpZnlCdWlsdElucyhzaDo6
R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJTcGVjIHNwZWMsCisg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzICZyZXNvdXJjZXMs
CisgICAgICAgICAgICAgICAgICAgICAgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSk7CisKK3Zv
aWQgSW5pdEV4dGVuc2lvbkJlaGF2aW9yKGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVzb3Vy
Y2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVEV4dGVuc2lvbkJlaGF2aW9yICZleHRl
bnNpb25CZWhhdmlvcik7CiAKIC8vIFJlc2V0cyB0aGUgYmVoYXZpb3Igb2YgdGhlIGV4dGVuc2lv
bnMgbGlzdGVkIGluIHxleHRlbnNpb25CZWhhdmlvcnwgdG8gdGhlCiAvLyB1bmRlZmluZWQgc3Rh
dGUuIFRoZXNlIGV4dGVuc2lvbnMgd2lsbCBvbmx5IGJlIHRob3NlIGluaXRpYWxseSBzdXBwb3J0
ZWQgaW4KQEAgLTI2LDQgKzMzLDYgQEAgdm9pZCBJbml0RXh0ZW5zaW9uQmVoYXZpb3IoY29uc3Qg
U2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMsCiAvLyBleHRlbnNpb25zIHdpbGwgcmVtYWlu
IHVuc3VwcG9ydGVkLgogdm9pZCBSZXNldEV4dGVuc2lvbkJlaGF2aW9yKFRFeHRlbnNpb25CZWhh
dmlvciAmZXh0ZW5zaW9uQmVoYXZpb3IpOwogCi0jZW5kaWYgLy8gQ09NUElMRVJfVFJBTlNMQVRP
Ul9JTklUSUFMSVpFX0hfCit9ICAvLyBuYW1lc3BhY2Ugc2gKKworI2VuZGlmICAvLyBDT01QSUxF
Ul9UUkFOU0xBVE9SX0lOSVRJQUxJWkVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVEbGwuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZURsbC5j
cHAKaW5kZXggNzEzOTY1Mzg5ZmFiYTNkOTcyNDFkM2EyZGNlZDMyZjdmMzNlMGI5Yi4uNDNjMjE1
ZjUyYjU4YzhiNmE1ZTE4YTk4N2RjY2E0NWM5NmRjYjU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZURsbC5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5p
dGlhbGl6ZURsbC5jcHAKQEAgLTcsMjQgKzcsMjIgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL0NhY2hlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXpl
RGxsLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplR2xvYmFscy5o
IgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5o
IgogCiAjaW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCiAKICNpbmNsdWRlIDxhc3NlcnQuaD4K
IAorbmFtZXNwYWNlIHNoCit7CisKIGJvb2wgSW5pdFByb2Nlc3MoKQogewotICAgIGlmICghSW5p
dGlhbGl6ZVBvb2xJbmRleCgpKSB7CisgICAgaWYgKCFJbml0aWFsaXplUG9vbEluZGV4KCkpCisg
ICAgewogICAgICAgICBhc3NlcnQoMCAmJiAiSW5pdFByb2Nlc3MoKTogRmFpbGVkIHRvIGluaXRh
bGl6ZSBnbG9iYWwgcG9vbCIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
aWYgKCFJbml0aWFsaXplUGFyc2VDb250ZXh0SW5kZXgoKSkgewotICAgICAgICBhc3NlcnQoMCAm
JiAiSW5pdFByb2Nlc3MoKTogRmFpbGVkIHRvIGluaXRhbGl6ZSBwYXJzZSBjb250ZXh0Iik7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KICAgICBUQ2FjaGU6OmluaXRpYWxpemUoKTsK
IAogICAgIHJldHVybiB0cnVlOwpAQCAtMzIsNyArMzAsOCBAQCBib29sIEluaXRQcm9jZXNzKCkK
IAogdm9pZCBEZXRhY2hQcm9jZXNzKCkKIHsKLSAgICBGcmVlUGFyc2VDb250ZXh0SW5kZXgoKTsK
ICAgICBGcmVlUG9vbEluZGV4KCk7CiAgICAgVENhY2hlOjpkZXN0cm95KCk7CiB9CisKK30gIC8v
IG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZURsbC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZURsbC5oCmluZGV4IDRjNDAwNzYw
ZjYzMWI1NzEwOTk2YWM5YmFhMTAyNDcxODQwZDA3ZGMuLjg3ZjcyNTE0NzBkNGM1ZGY3YjI1ZWQ2
ZmM1ZTRiODdlNGVjZGNiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVEbGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplRGxsLmgKQEAgLTYs
OCArNiwxMCBAQAogI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX0lOSVRJQUxJWkVETExfSF8K
ICNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9JTklUSUFMSVpFRExMX0hfCiAKK25hbWVzcGFj
ZSBzaAorewogYm9vbCBJbml0UHJvY2VzcygpOwogdm9pZCBEZXRhY2hQcm9jZXNzKCk7Cit9ICAv
LyBuYW1lc3BhY2Ugc2gKIAotI2VuZGlmIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfSU5JVElBTEla
RURMTF9IXwotCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfSU5JVElBTElaRURMTF9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvSW5pdGlhbGl6ZUdsb2JhbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVHbG9iYWxzLmgKaW5kZXggOGM2NWNiMjhkYTM5
ODEzMzliYzUzMTQ2MjBjMTQ5Y2E2NWJhNGQwZC4uOWE2N2VkMGUwNDgyYWZjMjNkYjgzZWQ1Njcx
ZmI2Njk2ZTEyNzg4YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZUdsb2JhbHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplR2xvYmFscy5oCkBA
IC0xMCw0ICsxMCw0IEBACiBib29sIEluaXRpYWxpemVQb29sSW5kZXgoKTsKIHZvaWQgRnJlZVBv
b2xJbmRleCgpOwogCi0jZW5kaWYgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9JTklUSUFMSVpFR0xP
QkFMU19IXworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0lOSVRJQUxJWkVHTE9CQUxT
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVQYXJzZUNvbnRleHQuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzVjZWRiMzQ4YmUyZWVhNTY0NWM2MTA4YWM5
ZWJlMjg3YjlkMmFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRp
YWxpemVQYXJzZUNvbnRleHQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLy8K
LS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVQYXJz
ZUNvbnRleHQuaCIKLQotI2luY2x1ZGUgImNvbW1vbi90bHMuaCIKLQotI2luY2x1ZGUgPGFzc2Vy
dC5oPgotCi1UTFNJbmRleCBHbG9iYWxQYXJzZUNvbnRleHRJbmRleCA9IFRMU19JTlZBTElEX0lO
REVYOwotCi1ib29sIEluaXRpYWxpemVQYXJzZUNvbnRleHRJbmRleCgpCi17Ci0gICAgYXNzZXJ0
KEdsb2JhbFBhcnNlQ29udGV4dEluZGV4ID09IFRMU19JTlZBTElEX0lOREVYKTsKLQotICAgIEds
b2JhbFBhcnNlQ29udGV4dEluZGV4ID0gQ3JlYXRlVExTSW5kZXgoKTsKLSAgICByZXR1cm4gR2xv
YmFsUGFyc2VDb250ZXh0SW5kZXggIT0gVExTX0lOVkFMSURfSU5ERVg7Ci19Ci0KLXZvaWQgRnJl
ZVBhcnNlQ29udGV4dEluZGV4KCkKLXsKLSAgICBhc3NlcnQoR2xvYmFsUGFyc2VDb250ZXh0SW5k
ZXggIT0gVExTX0lOVkFMSURfSU5ERVgpOwotCi0gICAgRGVzdHJveVRMU0luZGV4KEdsb2JhbFBh
cnNlQ29udGV4dEluZGV4KTsKLSAgICBHbG9iYWxQYXJzZUNvbnRleHRJbmRleCA9IFRMU19JTlZB
TElEX0lOREVYOwotfQotCi12b2lkIFNldEdsb2JhbFBhcnNlQ29udGV4dChUUGFyc2VDb250ZXh0
KiBjb250ZXh0KQotewotICAgIGFzc2VydChHbG9iYWxQYXJzZUNvbnRleHRJbmRleCAhPSBUTFNf
SU5WQUxJRF9JTkRFWCk7Ci0gICAgU2V0VExTVmFsdWUoR2xvYmFsUGFyc2VDb250ZXh0SW5kZXgs
IGNvbnRleHQpOwotfQotCi1UUGFyc2VDb250ZXh0KiBHZXRHbG9iYWxQYXJzZUNvbnRleHQoKQot
ewotICAgIGFzc2VydChHbG9iYWxQYXJzZUNvbnRleHRJbmRleCAhPSBUTFNfSU5WQUxJRF9JTkRF
WCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFRQYXJzZUNvbnRleHQqPihHZXRUTFNWYWx1ZShH
bG9iYWxQYXJzZUNvbnRleHRJbmRleCkpOwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplUGFyc2VDb250ZXh0
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0
aWFsaXplUGFyc2VDb250ZXh0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwZGFj
NzAyZTIzMWE3N2VhMDE3YmQzNzE0OGNhMDIzNzhkN2M1NDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTcgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2lmbmRlZiBDT01QSUxFUl9U
UkFOU0xBVE9SX0lOSVRJQUxJWkVQQVJTRUNPTlRFWFRfSF8KLSNkZWZpbmUgQ09NUElMRVJfVFJB
TlNMQVRPUl9JTklUSUFMSVpFUEFSU0VDT05URVhUX0hfCi0KLWJvb2wgSW5pdGlhbGl6ZVBhcnNl
Q29udGV4dEluZGV4KCk7Ci12b2lkIEZyZWVQYXJzZUNvbnRleHRJbmRleCgpOwotCi1jbGFzcyBU
UGFyc2VDb250ZXh0OwotZXh0ZXJuIHZvaWQgU2V0R2xvYmFsUGFyc2VDb250ZXh0KFRQYXJzZUNv
bnRleHQqIGNvbnRleHQpOwotZXh0ZXJuIFRQYXJzZUNvbnRleHQqIEdldEdsb2JhbFBhcnNlQ29u
dGV4dCgpOwotCi0jZW5kaWYgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9JTklUSUFMSVpFUEFSU0VD
T05URVhUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplVmFyaWFibGVzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVWYXJpYWJsZXMuY3BwCmlu
ZGV4IDJkZWZmMGM1ZWYxZjc1YzJkN2Q4MjMxYzI3Y2Q2MzMxMWViYjcyMGUuLjhjYjUwYWUxODg2
OTM1YmM5MjFjNTc3MjFkZTBhYjAwNGY2Yzk2YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVWYXJpYWJsZXMuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0lu
aXRpYWxpemVWYXJpYWJsZXMuY3BwCkBAIC05LDE3ICs5LDI1IEBACiAjaW5jbHVkZSAiYW5nbGVf
Z2wuaCIKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL0ludGVybU5vZGUuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1N5bWJv
bFRhYmxlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmgiCiAKK25hbWVz
cGFjZSBzaAoreworCiBuYW1lc3BhY2UKIHsKIAogY2xhc3MgVmFyaWFibGVJbml0aWFsaXplciA6
IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiB7CiAgIHB1YmxpYzoKLSAgICBWYXJpYWJsZUluaXRp
YWxpemVyKGNvbnN0IEluaXRWYXJpYWJsZUxpc3QgJnZhcnMpCi0gICAgICAgIDogVEludGVybVRy
YXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLCBtVmFyaWFibGVzKHZhcnMpLCBtQ29kZUluc2Vy
dGVkKGZhbHNlKQorICAgIFZhcmlhYmxlSW5pdGlhbGl6ZXIoY29uc3QgSW5pdFZhcmlhYmxlTGlz
dCAmdmFycywgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSkKKyAgICAgICAgOiBUSW50
ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksCisgICAgICAgICAgbVZhcmlhYmxlcyh2
YXJzKSwKKyAgICAgICAgICBtU3ltYm9sVGFibGUoc3ltYm9sVGFibGUpLAorICAgICAgICAgIG1D
b2RlSW5zZXJ0ZWQoZmFsc2UpCiAgICAgeworICAgICAgICBBU1NFUlQobVN5bWJvbFRhYmxlLmF0
R2xvYmFsTGV2ZWwoKSk7CiAgICAgfQogCiAgIHByb3RlY3RlZDoKQEAgLTM2LDYgKzQ0LDcgQEAg
Y2xhc3MgVmFyaWFibGVJbml0aWFsaXplciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAg
dm9pZCBpbnNlcnRJbml0Q29kZShUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlKTsKIAogICAgIGNv
bnN0IEluaXRWYXJpYWJsZUxpc3QgJm1WYXJpYWJsZXM7CisgICAgY29uc3QgVFN5bWJvbFRhYmxl
ICZtU3ltYm9sVGFibGU7CiAgICAgYm9vbCBtQ29kZUluc2VydGVkOwogfTsKIApAQCAtNTksMjUg
KzY4LDMxIEBAIHZvaWQgVmFyaWFibGVJbml0aWFsaXplcjo6aW5zZXJ0SW5pdENvZGUoVEludGVy
bVNlcXVlbmNlICpzZXF1ZW5jZSkKICAgICBmb3IgKGNvbnN0IGF1dG8gJnZhciA6IG1WYXJpYWJs
ZXMpCiAgICAgewogICAgICAgICBUU3RyaW5nIG5hbWUgPSBUU3RyaW5nKHZhci5uYW1lLmNfc3Ry
KCkpOwotICAgICAgICBUVHlwZSB0eXBlICAgPSBzaDo6R2V0U2hhZGVyVmFyaWFibGVUeXBlKHZh
cik7CiAKLSAgICAgICAgLy8gQXNzaWduIHRoZSBhcnJheSBlbGVtZW50cyBvbmUgYnkgb25lIHRv
IGtlZXAgdGhlIEFTVCBjb21wYXRpYmxlIHdpdGggRVNTTCAxLjAwIHdoaWNoCi0gICAgICAgIC8v
IGRvZXNuJ3QgaGF2ZSBhcnJheSBhc3NpZ25tZW50LgogICAgICAgICBpZiAodmFyLmlzQXJyYXko
KSkKICAgICAgICAgeworICAgICAgICAgICAgLy8gQXNzaWduIHRoZSBhcnJheSBlbGVtZW50cyBv
bmUgYnkgb25lIHRvIGtlZXAgdGhlIEFTVCBjb21wYXRpYmxlIHdpdGggRVNTTCAxLjAwIHdoaWNo
CisgICAgICAgICAgICAvLyBkb2Vzbid0IGhhdmUgYXJyYXkgYXNzaWdubWVudC4KICAgICAgICAg
ICAgIHNpemVfdCBwb3MgPSBuYW1lLmZpbmRfbGFzdF9vZignWycpOwogICAgICAgICAgICAgaWYg
KHBvcyAhPSBUU3RyaW5nOjpucG9zKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG5h
bWUgPSBuYW1lLnN1YnN0cigwLCBwb3MpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgVFR5
cGUgZWxlbWVudFR5cGUgPSB0eXBlOwotICAgICAgICAgICAgZWxlbWVudFR5cGUuY2xlYXJBcnJh
eW5lc3MoKTsKLQotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB2YXIu
YXJyYXlTaXplOyArK2kpCisgICAgICAgICAgICBUVHlwZSBlbGVtZW50VHlwZSA9IHNoOjpHZXRT
aGFkZXJWYXJpYWJsZUJhc2ljVHlwZSh2YXIpOworICAgICAgICAgICAgVFR5cGUgYXJyYXlUeXBl
ICAgPSBlbGVtZW50VHlwZTsKKyAgICAgICAgICAgIGFycmF5VHlwZS5zZXRBcnJheVNpemUodmFy
LmVsZW1lbnRDb3VudCgpKTsKKworICAgICAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgaHR0cDov
L2NyYnVnLmNvbS83MDkzMTcKKyAgICAgICAgICAgIC8vICAgVGhpcyBsb29wIGlzIHJldmVyc2Vk
IHRvIGluaXRpYWxpemUgZWxlbWVudHMgaW4gaW5jcmVhc2luZworICAgICAgICAgICAgLy8gb3Jk
ZXIgWzAgMSAyIC4uLl0uIE90aGVyd2lzZSwgdGhleSdyZSBpbml0aWFsaXplZCBpbgorICAgICAg
ICAgICAgLy8gZGVjcmVhc2luZyBvcmRlciBbLi4uIDIgMSAwXSwgZHVlIHRvCisgICAgICAgICAg
ICAvLyBgc2VxdWVuY2UtPmluc2VydChzZXF1ZW5jZS0+YmVnaW4oKSwgLi4uKWAgYmVsb3cuCisg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gdmFyLmFycmF5U2l6ZTsgaSA+IDA7IC0t
aSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICphcnJheVN5
bWJvbCA9IG5ldyBUSW50ZXJtU3ltYm9sKDAsIG5hbWUsIHR5cGUpOworICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBpbmRleCA9IGkgLSAxOworICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1i
b2wgKmFycmF5U3ltYm9sID0gbmV3IFRJbnRlcm1TeW1ib2woMCwgbmFtZSwgYXJyYXlUeXBlKTsK
ICAgICAgICAgICAgICAgICBUSW50ZXJtQmluYXJ5ICplbGVtZW50ICAgICA9IG5ldyBUSW50ZXJt
QmluYXJ5KEVPcEluZGV4RGlyZWN0LCBhcnJheVN5bWJvbCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkOjpDcmVh
dGVJbmRleE5vZGUoaSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQ6OkNyZWF0ZUluZGV4Tm9kZShpbmRleCkp
OwogCiAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICp6ZXJvICAgICAgICA9IFRJbnRlcm1U
eXBlZDo6Q3JlYXRlWmVybyhlbGVtZW50VHlwZSk7CiAgICAgICAgICAgICAgICAgVEludGVybUJp
bmFyeSAqYXNzaWdubWVudCA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcEFzc2lnbiwgZWxlbWVudCwg
emVybyk7CkBAIC04NSw4ICsxMDAsMjAgQEAgdm9pZCBWYXJpYWJsZUluaXRpYWxpemVyOjppbnNl
cnRJbml0Q29kZShUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlKQogICAgICAgICAgICAgICAgIHNl
cXVlbmNlLT5pbnNlcnQoc2VxdWVuY2UtPmJlZ2luKCksIGFzc2lnbm1lbnQpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHZhci5pc1N0cnVjdCgpKQorICAgICAg
ICB7CisgICAgICAgICAgICBUVmFyaWFibGUgKnN0cnVjdEluZm8gPSByZWludGVycHJldF9jYXN0
PFRWYXJpYWJsZSAqPihtU3ltYm9sVGFibGUuZmluZEdsb2JhbChuYW1lKSk7CisgICAgICAgICAg
ICBBU1NFUlQoc3RydWN0SW5mbyk7CisKKyAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJv
bCA9IG5ldyBUSW50ZXJtU3ltYm9sKDAsIG5hbWUsIHN0cnVjdEluZm8tPmdldFR5cGUoKSk7Cisg
ICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnplcm8gICAgPSBUSW50ZXJtVHlwZWQ6OkNyZWF0ZVpl
cm8oc3RydWN0SW5mby0+Z2V0VHlwZSgpKTsKKworICAgICAgICAgICAgVEludGVybUJpbmFyeSAq
YXNzaWduID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9wQXNzaWduLCBzeW1ib2wsIHplcm8pOworICAg
ICAgICAgICAgc2VxdWVuY2UtPmluc2VydChzZXF1ZW5jZS0+YmVnaW4oKSwgYXNzaWduKTsKKyAg
ICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKKyAgICAgICAgICAgIFRUeXBlIHR5cGUg
ICAgICAgICAgICA9IHNoOjpHZXRTaGFkZXJWYXJpYWJsZUJhc2ljVHlwZSh2YXIpOwogICAgICAg
ICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gbmV3IFRJbnRlcm1TeW1ib2woMCwgbmFtZSwg
dHlwZSk7CiAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnplcm8gICAgPSBUSW50ZXJtVHlwZWQ6
OkNyZWF0ZVplcm8odHlwZSk7CiAKQEAgLTk4LDggKzEyNSwxMiBAQCB2b2lkIFZhcmlhYmxlSW5p
dGlhbGl6ZXI6Omluc2VydEluaXRDb2RlKFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVuY2UpCiAKIH0g
IC8vIG5hbWVzcGFjZSBhbm9ueW1vdXMKIAotdm9pZCBJbml0aWFsaXplVmFyaWFibGVzKFRJbnRl
cm1Ob2RlICpyb290LCBjb25zdCBJbml0VmFyaWFibGVMaXN0ICZ2YXJzKQordm9pZCBJbml0aWFs
aXplVmFyaWFibGVzKFRJbnRlcm1Ob2RlICpyb290LAorICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEluaXRWYXJpYWJsZUxpc3QgJnZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSkKIHsKLSAgICBWYXJpYWJsZUluaXRpYWxp
emVyIGluaXRpYWxpemVyKHZhcnMpOworICAgIFZhcmlhYmxlSW5pdGlhbGl6ZXIgaW5pdGlhbGl6
ZXIodmFycywgc3ltYm9sVGFibGUpOwogICAgIHJvb3QtPnRyYXZlcnNlKCZpbml0aWFsaXplcik7
CiB9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZVZhcmlhYmxlcy5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZVZh
cmlhYmxlcy5oCmluZGV4IGRjZTEwODNmNjZiZjZlMWQyZTUyYWE0ZGE2ZWJlYjBkNDAxMjQwMDIu
LjlhMzQyNDVhNTNjODg4MTU3NDg5YTEyNmJmYzI1MDg0ZjkwNmJlMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVW
YXJpYWJsZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9Jbml0aWFsaXplVmFyaWFibGVzLmgKQEAgLTksMTEgKzksMjMgQEAKIAogI2luY2x1
ZGUgPEdMU0xBTkcvU2hhZGVyTGFuZy5oPgogCituYW1lc3BhY2Ugc2gKK3sKIGNsYXNzIFRJbnRl
cm1Ob2RlOworY2xhc3MgVFN5bWJvbFRhYmxlOwogCiB0eXBlZGVmIHN0ZDo6dmVjdG9yPHNoOjpT
aGFkZXJWYXJpYWJsZT4gSW5pdFZhcmlhYmxlTGlzdDsKIAotLy8gVGhpcyBmdW5jdGlvbiBjYW5u
b3QgY3VycmVudGx5IGluaXRpYWxpemUgc3RydWN0dXJlcyBjb250YWluaW5nIGFycmF5cyBmb3Ig
YW4gRVNTTCAxLjAwIGJhY2tlbmQuCi12b2lkIEluaXRpYWxpemVWYXJpYWJsZXMoVEludGVybU5v
ZGUgKnJvb3QsIGNvbnN0IEluaXRWYXJpYWJsZUxpc3QgJnZhcnMpOworLy8gQ3VycmVudGx5IHRo
aXMgZnVuY3Rpb24gaXMgb25seSBjYXBhYmxlIG9mIGluaXRpYWxpemluZyB2YXJpYWJsZXMgb2Yg
YmFzaWMgdHlwZXMsCisvLyBhcnJheSBvZiBiYXNpYyB0eXBlcywgb3Igc3RydWN0IG9mIGJhc2lj
IHR5cGVzLgorLy8gRm9yIG5vdyBpdCBpcyB1c2VkIGZvciB0aGUgZm9sbG93aW5nIHR3byBzY2Vu
YXJpb3M6CisvLyAgIDEuIGluaXRpYWxpemluZyBnbF9Qb3NpdGlvbjsKKy8vICAgMi4gaW5pdGlh
bGl6aW5nIEVTU0wgMy4wMCBzaGFkZXJzJyBvdXRwdXQgdmFyaWFibGVzICh3aGljaCBtaWdodCBi
ZSBzdHJ1Y3RzKS4KKy8vIFNwZWNpZmljYWxseSwgaXQncyBub3QgZmVhc2libGUgdG8gbWFrZSBp
dCB3b3JrIGZvciBsb2NhbCB2YXJpYWJsZXMgYmVjYXVzZSBpZiB0aGVpcgorLy8gdHlwZXMgYXJl
IHN0cnVjdHMsIHdlIGNhbid0IGxvb2sgaW50byBUU3ltYm9sVGFibGUgdG8gZmluZCB0aGUgVFR5
cGUgZGF0YS4KK3ZvaWQgSW5pdGlhbGl6ZVZhcmlhYmxlcyhUSW50ZXJtTm9kZSAqcm9vdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbml0VmFyaWFibGVMaXN0ICZ2YXJzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUpOwor
fSAgLy8gbmFtZXNwYWNlIHNoCiAKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9JTklU
SUFMSVpFVkFSSUFCTEVTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuY3BwCmluZGV4IDBhY2Zl
NDBlN2U3ZTJlNzA5ZTZlODMxN2E1NDA0MmI0MzI4NWI2MGUuLmU2Mzg0OGE0NjcwODk1NmRlMmU4
N2RlMGVhOWZlMDgzOWRmOGE5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuY3BwCkBAIC0y
MywxMCArMjMsMTMgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxl
LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmgiCiAKK25hbWVzcGFjZSBz
aAoreworCiBuYW1lc3BhY2UKIHsKIAotY29uc3QgZmxvYXQga1BpID0gMy4xNDE1OTI2NTM1ODk3
OTMyMzg0NmY7Citjb25zdCBmbG9hdCBrUGkgICAgICAgICAgICAgICAgICAgICAgICAgPSAzLjE0
MTU5MjY1MzU4OTc5MzIzODQ2ZjsKIGNvbnN0IGZsb2F0IGtEZWdyZWVzVG9SYWRpYW5zTXVsdGlw
bGllciA9IGtQaSAvIDE4MC4wZjsKIGNvbnN0IGZsb2F0IGtSYWRpYW5zVG9EZWdyZWVzTXVsdGlw
bGllciA9IDE4MC4wZiAvIGtQaTsKIApAQCAtMzksNyArNDIsNyBAQCBUQ29uc3RhbnRVbmlvbiAq
VmVjdG9yaXplKGNvbnN0IFRDb25zdGFudFVuaW9uICZjb25zdGFudCwgc2l6ZV90IHNpemUpCiB7
CiAgICAgVENvbnN0YW50VW5pb24gKmNvbnN0VW5pb24gPSBuZXcgVENvbnN0YW50VW5pb25bc2l6
ZV07CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAg
IGNvbnN0VW5pb25baV0gPSBjb25zdGFudDsKKyAgICAgICAgY29uc3RVbmlvbltpXSAgID0gY29u
c3RhbnQ7CiAKICAgICByZXR1cm4gY29uc3RVbmlvbjsKIH0KQEAgLTUxLDI0ICs1NCwyNCBAQCB2
b2lkIFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGNvbnN0IFRTb3VyY2VMb2MgJmxvYywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENvbnN0YW50VW5pb24gKnJlc3Vs
dCkKIHsKICAgICBkaWFnbm9zdGljcy0+d2FybmluZyhsb2MsICJvcGVyYXRpb24gcmVzdWx0IGlz
IHVuZGVmaW5lZCBmb3IgdGhlIHZhbHVlcyBwYXNzZWQgaW4iLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIEdldE9wZXJhdG9yU3RyaW5nKG9wKSwgIiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgIEdldE9wZXJhdG9yU3RyaW5nKG9wKSk7CiAKICAgICBzd2l0Y2ggKGJhc2ljVHlwZSkKICAg
ICB7Ci0gICAgICBjYXNlIEVidEZsb2F0IDoKLSAgICAgICAgcmVzdWx0LT5zZXRGQ29uc3QoMC4w
Zik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgIHJlc3VsdC0+
c2V0SUNvbnN0KDApOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0VUludDoKLSAgICAg
ICAgcmVzdWx0LT5zZXRVQ29uc3QoMHUpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0
Qm9vbDoKLSAgICAgICAgcmVzdWx0LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICBicmVhazsK
LSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidEZsb2F0Ogor
ICAgICAgICAgICAgcmVzdWx0LT5zZXRGQ29uc3QoMC4wZik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICByZXN1bHQtPnNldElDb25zdCgwKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICBy
ZXN1bHQtPnNldFVDb25zdCgwdSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBF
YnRCb29sOgorICAgICAgICAgICAgcmVzdWx0LT5zZXRCQ29uc3QoZmFsc2UpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKICAgICB9CiB9
CiAKQEAgLTEzNCw3ICsxMzcsNyBAQCB2b2lkIFNldFVuaW9uQXJyYXlGcm9tTWF0cml4KGNvbnN0
IGFuZ2xlOjpNYXRyaXg8ZmxvYXQ+ICZtLCBUQ29uc3RhbnRVbmlvbiAqcmVzdQogewogICAgIC8v
IFRyYW5zcG9zZSBpcyB1c2VkIHNpbmNlIHRoZSBpbnB1dCBNYXRyaXggaXMgaW4gcm93LW1ham9y
IG9yZGVyLAogICAgIC8vIHdoZXJlYXMgdGhlIGFjdHVhbCByZXN1bHQgc2hvdWxkIGJlIGluIGNv
bHVtbi1tYWpvciBvcmRlci4KLSAgICBhbmdsZTo6TWF0cml4PGZsb2F0PiByZXN1bHQgPSBtLnRy
YW5zcG9zZSgpOworICAgIGFuZ2xlOjpNYXRyaXg8ZmxvYXQ+IHJlc3VsdCAgICAgICA9IG0udHJh
bnNwb3NlKCk7CiAgICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHJlc3VsdEVsZW1lbnRzID0gcmVzdWx0
LmVsZW1lbnRzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXN1bHRFbGVtZW50cy5z
aXplKCk7IGkrKykKICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KHJlc3VsdEVsZW1l
bnRzW2ldKTsKQEAgLTE0Miw3ICsxNDUsNiBAQCB2b2lkIFNldFVuaW9uQXJyYXlGcm9tTWF0cml4
KGNvbnN0IGFuZ2xlOjpNYXRyaXg8ZmxvYXQ+ICZtLCBUQ29uc3RhbnRVbmlvbiAqcmVzdQogCiB9
ICAvLyBuYW1lc3BhY2UgYW5vbnltb3VzCiAKLQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8KIC8vIE1lbWJlciBmdW5j
dGlvbnMgb2YgdGhlIG5vZGVzIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSB0cmVlLgpAQCAtMTUyLDE5
ICsxNTQsMTkgQEAgdm9pZCBTZXRVbmlvbkFycmF5RnJvbU1hdHJpeChjb25zdCBhbmdsZTo6TWF0
cml4PGZsb2F0PiAmbSwgVENvbnN0YW50VW5pb24gKnJlc3UKIHZvaWQgVEludGVybVR5cGVkOjpz
ZXRUeXBlUHJlc2VydmVQcmVjaXNpb24oY29uc3QgVFR5cGUgJnQpCiB7CiAgICAgVFByZWNpc2lv
biBwcmVjaXNpb24gPSBnZXRQcmVjaXNpb24oKTsKLSAgICBtVHlwZSA9IHQ7CisgICAgbVR5cGUg
ICAgICAgICAgICAgICAgPSB0OwogICAgIEFTU0VSVChtVHlwZS5nZXRCYXNpY1R5cGUoKSAhPSBF
YnRCb29sIHx8IHByZWNpc2lvbiA9PSBFYnBVbmRlZmluZWQpOwogICAgIG1UeXBlLnNldFByZWNp
c2lvbihwcmVjaXNpb24pOwogfQogCiAjZGVmaW5lIFJFUExBQ0VfSUZfSVMobm9kZSwgdHlwZSwg
b3JpZ2luYWwsIHJlcGxhY2VtZW50KSBcCi0gICAgaWYgKG5vZGUgPT0gb3JpZ2luYWwpIHsgXAot
ICAgICAgICBub2RlID0gc3RhdGljX2Nhc3Q8dHlwZSAqPihyZXBsYWNlbWVudCk7IFwKLSAgICAg
ICAgcmV0dXJuIHRydWU7IFwKKyAgICBpZiAobm9kZSA9PSBvcmlnaW5hbCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbm9kZSA9IHN0YXRpY19jYXN0PHR5cGUg
Kj4ocmVwbGFjZW1lbnQpOyAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIHRydWU7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9CiAKLWJvb2wgVEludGVybUxvb3A6
OnJlcGxhY2VDaGlsZE5vZGUoCi0gICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9k
ZSAqcmVwbGFjZW1lbnQpCitib29sIFRJbnRlcm1Mb29wOjpyZXBsYWNlQ2hpbGROb2RlKFRJbnRl
cm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KQogewogICAgIEFTU0VS
VChvcmlnaW5hbCAhPSBudWxscHRyKTsgIC8vIFRoaXMgcmlza3MgcmVwbGFjaW5nIG11bHRpcGxl
IGNoaWxkcmVuLgogICAgIFJFUExBQ0VfSUZfSVMobUluaXQsIFRJbnRlcm1Ob2RlLCBvcmlnaW5h
bCwgcmVwbGFjZW1lbnQpOwpAQCAtMTc0LDggKzE3Niw3IEBAIGJvb2wgVEludGVybUxvb3A6OnJl
cGxhY2VDaGlsZE5vZGUoCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRJbnRlcm1CcmFu
Y2g6OnJlcGxhY2VDaGlsZE5vZGUoCi0gICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJt
Tm9kZSAqcmVwbGFjZW1lbnQpCitib29sIFRJbnRlcm1CcmFuY2g6OnJlcGxhY2VDaGlsZE5vZGUo
VEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCiB7CiAgICAg
UkVQTEFDRV9JRl9JUyhtRXhwcmVzc2lvbiwgVEludGVybVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFj
ZW1lbnQpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTE4OCwzMSArMTg5LDM0IEBAIGJvb2wgVElu
dGVybVN3aXp6bGU6OnJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50
ZXJtTm9kZSAqcmVwbGFjCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRJbnRlcm1CaW5h
cnk6OnJlcGxhY2VDaGlsZE5vZGUoCi0gICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJt
Tm9kZSAqcmVwbGFjZW1lbnQpCitib29sIFRJbnRlcm1CaW5hcnk6OnJlcGxhY2VDaGlsZE5vZGUo
VEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCiB7CiAgICAg
UkVQTEFDRV9JRl9JUyhtTGVmdCwgVEludGVybVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQp
OwogICAgIFJFUExBQ0VfSUZfSVMobVJpZ2h0LCBUSW50ZXJtVHlwZWQsIG9yaWdpbmFsLCByZXBs
YWNlbWVudCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRJbnRlcm1VbmFyeTo6cmVw
bGFjZUNoaWxkTm9kZSgKLSAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpy
ZXBsYWNlbWVudCkKK2Jvb2wgVEludGVybVVuYXJ5OjpyZXBsYWNlQ2hpbGROb2RlKFRJbnRlcm1O
b2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KQogewogICAgIEFTU0VSVChv
cmlnaW5hbC0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCkgPT0gcmVwbGFjZW1lbnQtPmdldEFzVHlw
ZWQoKS0+Z2V0VHlwZSgpKTsKICAgICBSRVBMQUNFX0lGX0lTKG1PcGVyYW5kLCBUSW50ZXJtVHlw
ZWQsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29s
IFRJbnRlcm1JbnZhcmlhbnREZWNsYXJhdGlvbjo6cmVwbGFjZUNoaWxkTm9kZShUSW50ZXJtTm9k
ZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkKK3sKKyAgICBSRVBMQUNFX0lG
X0lTKG1TeW1ib2wsIFRJbnRlcm1TeW1ib2wsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CisgICAg
cmV0dXJuIGZhbHNlOworfQorCiBib29sIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb246OnJlcGxh
Y2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1l
bnQpCiB7Ci0gICAgUkVQTEFDRV9JRl9JUyhtUGFyYW1ldGVycywgVEludGVybUFnZ3JlZ2F0ZSwg
b3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKKyAgICBSRVBMQUNFX0lGX0lTKG1Qcm90b3R5cGUsIFRJ
bnRlcm1GdW5jdGlvblByb3RvdHlwZSwgb3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKICAgICBSRVBM
QUNFX0lGX0lTKG1Cb2R5LCBUSW50ZXJtQmxvY2ssIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRJbnRlcm1BZ2dyZWdhdGU6OnJlcGxhY2VDaGls
ZE5vZGUoCi0gICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1l
bnQpCitib29sIFRJbnRlcm1BZ2dyZWdhdGU6OnJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUg
Km9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCiB7CiAgICAgcmV0dXJuIHJlcGxh
Y2VDaGlsZE5vZGVJbnRlcm5hbChvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOwogfQpAQCAtMjIyLDYg
KzIyNiwxNiBAQCBib29sIFRJbnRlcm1CbG9jazo6cmVwbGFjZUNoaWxkTm9kZShUSW50ZXJtTm9k
ZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbQogICAgIHJldHVybiByZXBsYWNlQ2hp
bGROb2RlSW50ZXJuYWwob3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKIH0KIAorYm9vbCBUSW50ZXJt
RnVuY3Rpb25Qcm90b3R5cGU6OnJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFs
LCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCit7CisgICAgcmV0dXJuIHJlcGxhY2VDaGlsZE5v
ZGVJbnRlcm5hbChvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOworfQorCitib29sIFRJbnRlcm1EZWNs
YXJhdGlvbjo6cmVwbGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1O
b2RlICpyZXBsYWNlbWVudCkKK3sKKyAgICByZXR1cm4gcmVwbGFjZUNoaWxkTm9kZUludGVybmFs
KG9yaWdpbmFsLCByZXBsYWNlbWVudCk7Cit9CisKIGJvb2wgVEludGVybUFnZ3JlZ2F0ZUJhc2U6
OnJlcGxhY2VDaGlsZE5vZGVJbnRlcm5hbChUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1O
b2RlICpyZXBsYWNlbWVudCkKIHsKICAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgZ2V0U2Vx
dWVuY2UoKS0+c2l6ZSgpOyArK2lpKQpAQCAtMjU4LDEyICsyNzIsOTkgQEAgYm9vbCBUSW50ZXJt
QWdncmVnYXRlQmFzZTo6aW5zZXJ0Q2hpbGROb2RlcyhUSW50ZXJtU2VxdWVuY2U6OnNpemVfdHlw
ZSBwb3NpdGlvbiwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorVEludGVybUFnZ3JlZ2F0ZSAqVElu
dGVybUFnZ3JlZ2F0ZTo6Q3JlYXRlRnVuY3Rpb25DYWxsKGNvbnN0IFRGdW5jdGlvbiAmZnVuYywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
SW50ZXJtU2VxdWVuY2UgKmFyZ3VtZW50cykKK3sKKyAgICBUSW50ZXJtQWdncmVnYXRlICpjYWxs
Tm9kZSA9CisgICAgICAgIG5ldyBUSW50ZXJtQWdncmVnYXRlKGZ1bmMuZ2V0UmV0dXJuVHlwZSgp
LCBFT3BDYWxsRnVuY3Rpb25JbkFTVCwgYXJndW1lbnRzKTsKKyAgICBjYWxsTm9kZS0+Z2V0RnVu
Y3Rpb25TeW1ib2xJbmZvKCktPnNldEZyb21GdW5jdGlvbihmdW5jKTsKKyAgICByZXR1cm4gY2Fs
bE5vZGU7Cit9CisKK1RJbnRlcm1BZ2dyZWdhdGUgKlRJbnRlcm1BZ2dyZWdhdGU6OkNyZWF0ZUZ1
bmN0aW9uQ2FsbChjb25zdCBUVHlwZSAmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sVW5pcXVlSWQgJmlkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFROYW1lICZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzKQoreworICAgIFRJbnRl
cm1BZ2dyZWdhdGUgKmNhbGxOb2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUodHlwZSwgRU9wQ2Fs
bEZ1bmN0aW9uSW5BU1QsIGFyZ3VtZW50cyk7CisgICAgY2FsbE5vZGUtPmdldEZ1bmN0aW9uU3lt
Ym9sSW5mbygpLT5zZXRJZChpZCk7CisgICAgY2FsbE5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5m
bygpLT5zZXROYW1lT2JqKG5hbWUpOworICAgIHJldHVybiBjYWxsTm9kZTsKK30KKworVEludGVy
bUFnZ3JlZ2F0ZSAqVEludGVybUFnZ3JlZ2F0ZTo6Q3JlYXRlQnVpbHRJbkZ1bmN0aW9uQ2FsbChj
b25zdCBURnVuY3Rpb24gJmZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzKQor
eworICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmNhbGxOb2RlID0KKyAgICAgICAgbmV3IFRJbnRlcm1B
Z2dyZWdhdGUoZnVuYy5nZXRSZXR1cm5UeXBlKCksIEVPcENhbGxCdWlsdEluRnVuY3Rpb24sIGFy
Z3VtZW50cyk7CisgICAgY2FsbE5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5zZXRGcm9t
RnVuY3Rpb24oZnVuYyk7CisgICAgLy8gTm90ZSB0aGF0IG5hbWUgbmVlZHMgdG8gYmUgc2V0IGJl
Zm9yZSB0ZXh0dXJlIGZ1bmN0aW9uIHR5cGUgaXMgZGV0ZXJtaW5lZC4KKyAgICBjYWxsTm9kZS0+
c2V0QnVpbHRJbkZ1bmN0aW9uUHJlY2lzaW9uKCk7CisgICAgcmV0dXJuIGNhbGxOb2RlOworfQor
CitUSW50ZXJtQWdncmVnYXRlICpUSW50ZXJtQWdncmVnYXRlOjpDcmVhdGVDb25zdHJ1Y3Rvcihj
b25zdCBUVHlwZSAmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzKQor
eworICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmNvbnN0cnVjdG9yTm9kZSA9IG5ldyBUSW50ZXJtQWdn
cmVnYXRlKHR5cGUsIG9wLCBhcmd1bWVudHMpOworICAgIEFTU0VSVChjb25zdHJ1Y3Rvck5vZGUt
PmlzQ29uc3RydWN0b3IoKSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yTm9kZTsKK30KKworVElu
dGVybUFnZ3JlZ2F0ZSAqVEludGVybUFnZ3JlZ2F0ZTo6Q3JlYXRlKGNvbnN0IFRUeXBlICZ0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRPcGVyYXRvciBv
cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU2Vx
dWVuY2UgKmFyZ3VtZW50cykKK3sKKyAgICBUSW50ZXJtQWdncmVnYXRlICpub2RlID0gbmV3IFRJ
bnRlcm1BZ2dyZWdhdGUodHlwZSwgb3AsIGFyZ3VtZW50cyk7CisgICAgQVNTRVJUKG9wICE9IEVP
cENhbGxGdW5jdGlvbkluQVNUKTsgICAgLy8gU2hvdWxkIHVzZSBDcmVhdGVGdW5jdGlvbkNhbGwK
KyAgICBBU1NFUlQob3AgIT0gRU9wQ2FsbEJ1aWx0SW5GdW5jdGlvbik7ICAvLyBTaG91bGQgdXNl
IENyZWF0ZUJ1aWx0SW5GdW5jdGlvbkNhbGwKKyAgICBBU1NFUlQoIW5vZGUtPmlzQ29uc3RydWN0
b3IoKSk7ICAgICAgICAvLyBTaG91bGQgdXNlIENyZWF0ZUNvbnN0cnVjdG9yCisgICAgcmV0dXJu
IG5vZGU7Cit9CisKK1RJbnRlcm1BZ2dyZWdhdGU6OlRJbnRlcm1BZ2dyZWdhdGUoY29uc3QgVFR5
cGUgJnR5cGUsIFRPcGVyYXRvciBvcCwgVEludGVybVNlcXVlbmNlICphcmd1bWVudHMpCisgICAg
OiBUSW50ZXJtT3BlcmF0b3Iob3ApLCBtVXNlRW11bGF0ZWRGdW5jdGlvbihmYWxzZSksIG1Hb3RQ
cmVjaXNpb25Gcm9tQ2hpbGRyZW4oZmFsc2UpCit7CisgICAgaWYgKGFyZ3VtZW50cyAhPSBudWxs
cHRyKQorICAgIHsKKyAgICAgICAgbUFyZ3VtZW50cy5zd2FwKCphcmd1bWVudHMpOworICAgIH0K
KyAgICBzZXRUeXBlUHJlY2lzaW9uQW5kUXVhbGlmaWVyKHR5cGUpOworfQorCit2b2lkIFRJbnRl
cm1BZ2dyZWdhdGU6OnNldFR5cGVQcmVjaXNpb25BbmRRdWFsaWZpZXIoY29uc3QgVFR5cGUgJnR5
cGUpCit7CisgICAgc2V0VHlwZSh0eXBlKTsKKyAgICBtVHlwZS5zZXRRdWFsaWZpZXIoRXZxVGVt
cG9yYXJ5KTsKKyAgICBpZiAoIWlzRnVuY3Rpb25DYWxsKCkpCisgICAgeworICAgICAgICBpZiAo
aXNDb25zdHJ1Y3RvcigpKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBTdHJ1Y3RzIHNob3Vs
ZCBub3QgYmUgcHJlY2lzaW9uIHF1YWxpZmllZCwgdGhlIGluZGl2aWR1YWwgbWVtYmVycyBtYXkg
YmUuCisgICAgICAgICAgICAvLyBCdWlsdC1pbiB0eXBlcyBvbiB0aGUgb3RoZXIgaGFuZCBzaG91
bGQgYmUgcHJlY2lzaW9uIHF1YWxpZmllZC4KKyAgICAgICAgICAgIGlmIChtT3AgIT0gRU9wQ29u
c3RydWN0U3RydWN0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHNldFByZWNpc2lv
bkZyb21DaGlsZHJlbigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UK
KyAgICAgICAgeworICAgICAgICAgICAgc2V0UHJlY2lzaW9uRm9yQnVpbHRJbk9wKCk7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGFyZUNoaWxkcmVuQ29uc3RRdWFsaWZpZWQoKSkKKyAgICAgICAg
eworICAgICAgICAgICAgbVR5cGUuc2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsKKyAgICAgICAgfQor
ICAgIH0KK30KKwogYm9vbCBUSW50ZXJtQWdncmVnYXRlOjphcmVDaGlsZHJlbkNvbnN0UXVhbGlm
aWVkKCkKIHsKLSAgICBmb3IgKFRJbnRlcm1Ob2RlIComY2hpbGQgOiBtU2VxdWVuY2UpCisgICAg
Zm9yIChUSW50ZXJtTm9kZSAqJmFyZyA6IG1Bcmd1bWVudHMpCiAgICAgewotICAgICAgICBUSW50
ZXJtVHlwZWQgKnR5cGVkID0gY2hpbGQtPmdldEFzVHlwZWQoKTsKLSAgICAgICAgaWYgKHR5cGVk
ICYmIHR5cGVkLT5nZXRRdWFsaWZpZXIoKSAhPSBFdnFDb25zdCkKKyAgICAgICAgVEludGVybVR5
cGVkICp0eXBlZEFyZyA9IGFyZy0+Z2V0QXNUeXBlZCgpOworICAgICAgICBpZiAodHlwZWRBcmcg
JiYgdHlwZWRBcmctPmdldFF1YWxpZmllcigpICE9IEV2cUNvbnN0KQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTI4MCw5ICszODEsOSBAQCB2b2lk
IFRJbnRlcm1BZ2dyZWdhdGU6OnNldFByZWNpc2lvbkZyb21DaGlsZHJlbigpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBUUHJlY2lzaW9uIHByZWNpc2lvbiA9IEVicFVuZGVmaW5lZDsK
LSAgICBUSW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIGNoaWxkSXRlciA9IG1TZXF1ZW5jZS5iZWdp
bigpOwotICAgIHdoaWxlIChjaGlsZEl0ZXIgIT0gbVNlcXVlbmNlLmVuZCgpKQorICAgIFRQcmVj
aXNpb24gcHJlY2lzaW9uICAgICAgICAgICAgICAgID0gRWJwVW5kZWZpbmVkOworICAgIFRJbnRl
cm1TZXF1ZW5jZTo6aXRlcmF0b3IgY2hpbGRJdGVyID0gbUFyZ3VtZW50cy5iZWdpbigpOworICAg
IHdoaWxlIChjaGlsZEl0ZXIgIT0gbUFyZ3VtZW50cy5lbmQoKSkKICAgICB7CiAgICAgICAgIFRJ
bnRlcm1UeXBlZCAqdHlwZWQgPSAoKmNoaWxkSXRlciktPmdldEFzVHlwZWQoKTsKICAgICAgICAg
aWYgKHR5cGVkKQpAQCAtMjkyLDIzICszOTMsNTQgQEAgdm9pZCBUSW50ZXJtQWdncmVnYXRlOjpz
ZXRQcmVjaXNpb25Gcm9tQ2hpbGRyZW4oKQogICAgIG1UeXBlLnNldFByZWNpc2lvbihwcmVjaXNp
b24pOwogfQogCit2b2lkIFRJbnRlcm1BZ2dyZWdhdGU6OnNldFByZWNpc2lvbkZvckJ1aWx0SW5P
cCgpCit7CisgICAgQVNTRVJUKCFpc0NvbnN0cnVjdG9yKCkpOworICAgIEFTU0VSVCghaXNGdW5j
dGlvbkNhbGwoKSk7CisgICAgaWYgKCFzZXRQcmVjaXNpb25Gb3JTcGVjaWFsQnVpbHRJbk9wKCkp
CisgICAgeworICAgICAgICBzZXRQcmVjaXNpb25Gcm9tQ2hpbGRyZW4oKTsKKyAgICB9Cit9CisK
K2Jvb2wgVEludGVybUFnZ3JlZ2F0ZTo6c2V0UHJlY2lzaW9uRm9yU3BlY2lhbEJ1aWx0SW5PcCgp
Cit7CisgICAgc3dpdGNoIChtT3ApCisgICAgeworICAgICAgICBjYXNlIEVPcEJpdGZpZWxkRXh0
cmFjdDoKKyAgICAgICAgICAgIG1UeXBlLnNldFByZWNpc2lvbihtQXJndW1lbnRzWzBdLT5nZXRB
c1R5cGVkKCktPmdldFByZWNpc2lvbigpKTsKKyAgICAgICAgICAgIG1Hb3RQcmVjaXNpb25Gcm9t
Q2hpbGRyZW4gPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2Ug
RU9wQml0ZmllbGRJbnNlcnQ6CisgICAgICAgICAgICBtVHlwZS5zZXRQcmVjaXNpb24oR2V0SGln
aGVyUHJlY2lzaW9uKG1Bcmd1bWVudHNbMF0tPmdldEFzVHlwZWQoKS0+Z2V0UHJlY2lzaW9uKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Bcmd1
bWVudHNbMV0tPmdldEFzVHlwZWQoKS0+Z2V0UHJlY2lzaW9uKCkpKTsKKyAgICAgICAgICAgIG1H
b3RQcmVjaXNpb25Gcm9tQ2hpbGRyZW4gPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIGNhc2UgRU9wVWFkZENhcnJ5OgorICAgICAgICBjYXNlIEVPcFVzdWJCb3Jyb3c6
CisgICAgICAgICAgICBtVHlwZS5zZXRQcmVjaXNpb24oRWJwSGlnaCk7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9Cit9CisKIHZvaWQgVEludGVybUFnZ3JlZ2F0ZTo6c2V0QnVpbHRJbkZ1bmN0aW9uUHJl
Y2lzaW9uKCkKIHsKICAgICAvLyBBbGwgYnVpbHQtaW5zIHJldHVybmluZyBib29sIHNob3VsZCBi
ZSBoYW5kbGVkIGFzIG9wcywgbm90IGZ1bmN0aW9ucy4KICAgICBBU1NFUlQoZ2V0QmFzaWNUeXBl
KCkgIT0gRWJ0Qm9vbCk7CisgICAgQVNTRVJUKG1PcCA9PSBFT3BDYWxsQnVpbHRJbkZ1bmN0aW9u
KTsKIAogICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uID0gRWJwVW5kZWZpbmVkOwotICAgIFRJbnRl
cm1TZXF1ZW5jZTo6aXRlcmF0b3IgY2hpbGRJdGVyID0gbVNlcXVlbmNlLmJlZ2luKCk7Ci0gICAg
d2hpbGUgKGNoaWxkSXRlciAhPSBtU2VxdWVuY2UuZW5kKCkpCisgICAgZm9yIChUSW50ZXJtTm9k
ZSAqYXJnIDogbUFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIFRJbnRlcm1UeXBlZCAqdHlwZWQg
PSAoKmNoaWxkSXRlciktPmdldEFzVHlwZWQoKTsKKyAgICAgICAgVEludGVybVR5cGVkICp0eXBl
ZCA9IGFyZy0+Z2V0QXNUeXBlZCgpOwogICAgICAgICAvLyBFU1NMIHNwZWMgc2VjdGlvbiA4OiB0
ZXh0dXJlIGZ1bmN0aW9ucyBnZXQgdGhlaXIgcHJlY2lzaW9uIGZyb20gdGhlIHNhbXBsZXIuCiAg
ICAgICAgIGlmICh0eXBlZCAmJiBJc1NhbXBsZXIodHlwZWQtPmdldEJhc2ljVHlwZSgpKSkKICAg
ICAgICAgewogICAgICAgICAgICAgcHJlY2lzaW9uID0gdHlwZWQtPmdldFByZWNpc2lvbigpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgKytjaGlsZEl0ZXI7CiAgICAg
fQogICAgIC8vIEVTU0wgMy4wIHNwZWMgc2VjdGlvbiA4OiB0ZXh0dXJlU2l6ZSBhbHdheXMgZ2V0
cyBoaWdocCBwcmVjaXNpb24uCiAgICAgLy8gQWxsIG90aGVyIGZ1bmN0aW9ucyB0aGF0IHRha2Ug
YSBzYW1wbGVyIGFyZSBhc3N1bWVkIHRvIGJlIHRleHR1cmUgZnVuY3Rpb25zLgpAQCAtMzE4LDE0
ICs0NTAsNDkgQEAgdm9pZCBUSW50ZXJtQWdncmVnYXRlOjpzZXRCdWlsdEluRnVuY3Rpb25QcmVj
aXNpb24oKQogICAgICAgICBtVHlwZS5zZXRQcmVjaXNpb24ocHJlY2lzaW9uKTsKIH0KIAorVFN0
cmluZyBUSW50ZXJtQWdncmVnYXRlOjpnZXRTeW1ib2xUYWJsZU1hbmdsZWROYW1lKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoIWlzQ29uc3RydWN0b3IoKSk7CisgICAgc3dpdGNoIChtT3ApCisgICAg
eworICAgICAgICBjYXNlIEVPcENhbGxJbnRlcm5hbFJhd0Z1bmN0aW9uOgorICAgICAgICBjYXNl
IEVPcENhbGxCdWlsdEluRnVuY3Rpb246CisgICAgICAgIGNhc2UgRU9wQ2FsbEZ1bmN0aW9uSW5B
U1Q6CisgICAgICAgICAgICByZXR1cm4gVEZ1bmN0aW9uOjpHZXRNYW5nbGVkTmFtZUZyb21DYWxs
KG1GdW5jdGlvbkluZm8uZ2V0TmFtZSgpLCBtQXJndW1lbnRzKTsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFRTdHJpbmcgb3BTdHJpbmcgPSBHZXRPcGVyYXRvclN0cmluZyhtT3ApOwor
ICAgICAgICAgICAgcmV0dXJuIFRGdW5jdGlvbjo6R2V0TWFuZ2xlZE5hbWVGcm9tQ2FsbChvcFN0
cmluZywgbUFyZ3VtZW50cyk7CisgICAgfQorfQorCiB2b2lkIFRJbnRlcm1CbG9jazo6YXBwZW5k
U3RhdGVtZW50KFRJbnRlcm1Ob2RlICpzdGF0ZW1lbnQpCiB7Ci0gICAgaWYgKHN0YXRlbWVudCAh
PSBudWxscHRyKQorICAgIC8vIERlY2xhcmF0aW9uIG5vZGVzIHdpdGggbm8gY2hpbGRyZW4gY2Fu
IGFwcGVhciBpZiBhbGwgdGhlIGRlY2xhcmF0b3JzIGp1c3QgYWRkZWQgY29uc3RhbnRzIHRvCisg
ICAgLy8gdGhlIHN5bWJvbCB0YWJsZSBpbnN0ZWFkIG9mIGdlbmVyYXRpbmcgY29kZS4gVGhleSdy
ZSBuby1vcHMgc28gdGhleSBhcmVuJ3QgYWRkZWQgdG8gYmxvY2tzLgorICAgIGlmIChzdGF0ZW1l
bnQgIT0gbnVsbHB0ciAmJiAoc3RhdGVtZW50LT5nZXRBc0RlY2xhcmF0aW9uTm9kZSgpID09IG51
bGxwdHIgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFzdGF0ZW1lbnQtPmdl
dEFzRGVjbGFyYXRpb25Ob2RlKCktPmdldFNlcXVlbmNlKCktPmVtcHR5KCkpKQogICAgIHsKICAg
ICAgICAgbVN0YXRlbWVudHMucHVzaF9iYWNrKHN0YXRlbWVudCk7CiAgICAgfQogfQogCit2b2lk
IFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZTo6YXBwZW5kUGFyYW1ldGVyKFRJbnRlcm1TeW1ib2wg
KnBhcmFtZXRlcikKK3sKKyAgICBBU1NFUlQocGFyYW1ldGVyICE9IG51bGxwdHIpOworICAgIG1Q
YXJhbWV0ZXJzLnB1c2hfYmFjayhwYXJhbWV0ZXIpOworfQorCit2b2lkIFRJbnRlcm1EZWNsYXJh
dGlvbjo6YXBwZW5kRGVjbGFyYXRvcihUSW50ZXJtVHlwZWQgKmRlY2xhcmF0b3IpCit7CisgICAg
QVNTRVJUKGRlY2xhcmF0b3IgIT0gbnVsbHB0cik7CisgICAgQVNTRVJUKGRlY2xhcmF0b3ItPmdl
dEFzU3ltYm9sTm9kZSgpICE9IG51bGxwdHIgfHwKKyAgICAgICAgICAgKGRlY2xhcmF0b3ItPmdl
dEFzQmluYXJ5Tm9kZSgpICE9IG51bGxwdHIgJiYKKyAgICAgICAgICAgIGRlY2xhcmF0b3ItPmdl
dEFzQmluYXJ5Tm9kZSgpLT5nZXRPcCgpID09IEVPcEluaXRpYWxpemUpKTsKKyAgICBBU1NFUlQo
bURlY2xhcmF0b3JzLmVtcHR5KCkgfHwKKyAgICAgICAgICAgZGVjbGFyYXRvci0+Z2V0VHlwZSgp
LnNhbWVFbGVtZW50VHlwZShtRGVjbGFyYXRvcnMuYmFjaygpLT5nZXRBc1R5cGVkKCktPmdldFR5
cGUoKSkpOworICAgIG1EZWNsYXJhdG9ycy5wdXNoX2JhY2soZGVjbGFyYXRvcik7Cit9CisKIGJv
b2wgVEludGVybVRlcm5hcnk6OnJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFs
LCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCiB7CiAgICAgUkVQTEFDRV9JRl9JUyhtQ29uZGl0
aW9uLCBUSW50ZXJtVHlwZWQsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CkBAIC0zNDIsMTYgKzUw
OSwxNCBAQCBib29sIFRJbnRlcm1JZkVsc2U6OnJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUg
Km9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
Ym9vbCBUSW50ZXJtU3dpdGNoOjpyZXBsYWNlQ2hpbGROb2RlKAotICAgIFRJbnRlcm1Ob2RlICpv
cmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KQorYm9vbCBUSW50ZXJtU3dpdGNoOjpy
ZXBsYWNlQ2hpbGROb2RlKFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxh
Y2VtZW50KQogewogICAgIFJFUExBQ0VfSUZfSVMobUluaXQsIFRJbnRlcm1UeXBlZCwgb3JpZ2lu
YWwsIHJlcGxhY2VtZW50KTsKICAgICBSRVBMQUNFX0lGX0lTKG1TdGF0ZW1lbnRMaXN0LCBUSW50
ZXJtQmxvY2ssIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIFRJbnRlcm1DYXNlOjpyZXBsYWNlQ2hpbGROb2RlKAotICAgIFRJbnRlcm1Ob2RlICpv
cmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KQorYm9vbCBUSW50ZXJtQ2FzZTo6cmVw
bGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNl
bWVudCkKIHsKICAgICBSRVBMQUNFX0lGX0lTKG1Db25kaXRpb24sIFRJbnRlcm1UeXBlZCwgb3Jp
Z2luYWwsIHJlcGxhY2VtZW50KTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjAsOCArNTg1LDEz
IEBAIFRJbnRlcm1UeXBlZCAqVEludGVybVR5cGVkOjpDcmVhdGVaZXJvKGNvbnN0IFRUeXBlICZ0
eXBlKQogICAgICAgICAgICAgICAgICAgICB1W2ldLnNldEJDb25zdChmYWxzZSk7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICAgICAgICAgICAgICAvLyBDcmVhdGVaZXJvIGlzIGNhbGxlZCBieSBQYXJz
ZUNvbnRleHQgdGhhdCBrZWVwcyBwYXJzaW5nIGV2ZW4gd2hlbiBhbiBlcnJvcgorICAgICAgICAg
ICAgICAgICAgICAvLyBvY2N1cnMsIHNvIGl0IGlzIHBvc3NpYmxlIGZvciBDcmVhdGVaZXJvIHRv
IGJlIGNhbGxlZCB3aXRoIG5vbi1iYXNpYyB0eXBlcy4KKyAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBoYXBwZW5zIG9ubHkgb24gZXJyb3IgY29uZGl0aW9uIGJ1dCBDcmVhdGVaZXJvIG5lZWRz
IHRvIHJldHVybiBhIHZhbHVlCisgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIGNvcnJl
Y3QgdHlwZSB0byBjb250aW51ZSB0aGUgdHlwZWNoZWNrLiBUaGF0J3Mgd2h5IHdlIGhhbmRsZQor
ICAgICAgICAgICAgICAgICAgICAvLyBub24tYmFzaWMgdHlwZSBieSBzZXR0aW5nIHdoYXRldmVy
IHZhbHVlLCB3ZSBqdXN0IG5lZWQgdGhlIHR5cGUgdG8gYmUgcmlnaHQuCisgICAgICAgICAgICAg
ICAgICAgIHVbaV0uc2V0SUNvbnN0KDQyKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNDI5LDggKzU5OSw3IEBAIFRJbnRlcm1UeXBl
ZCAqVEludGVybVR5cGVkOjpDcmVhdGVaZXJvKGNvbnN0IFRUeXBlICZ0eXBlKQogICAgICAgICBy
ZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBUSW50ZXJtQWdncmVnYXRlICpjb25zdHJ1Y3RvciA9
IG5ldyBUSW50ZXJtQWdncmVnYXRlKHNoOjpUeXBlVG9Db25zdHJ1Y3Rvck9wZXJhdG9yKHR5cGUp
KTsKLSAgICBjb25zdHJ1Y3Rvci0+c2V0VHlwZShjb25zdFR5cGUpOworICAgIFRJbnRlcm1TZXF1
ZW5jZSAqYXJndW1lbnRzID0gbmV3IFRJbnRlcm1TZXF1ZW5jZSgpOwogCiAgICAgaWYgKHR5cGUu
aXNBcnJheSgpKQogICAgIHsKQEAgLTQ0MCw3ICs2MDksNyBAQCBUSW50ZXJtVHlwZWQgKlRJbnRl
cm1UeXBlZDo6Q3JlYXRlWmVybyhjb25zdCBUVHlwZSAmdHlwZSkKICAgICAgICAgc2l6ZV90IGFy
cmF5U2l6ZSA9IHR5cGUuZ2V0QXJyYXlTaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYXJyYXlTaXplOyArK2kpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0cnVjdG9y
LT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soQ3JlYXRlWmVybyhlbGVtZW50VHlwZSkpOworICAg
ICAgICAgICAgYXJndW1lbnRzLT5wdXNoX2JhY2soQ3JlYXRlWmVybyhlbGVtZW50VHlwZSkpOwog
ICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKQEAgLTQ1MCwxMSArNjE5LDIzIEBAIFRJbnRlcm1U
eXBlZCAqVEludGVybVR5cGVkOjpDcmVhdGVaZXJvKGNvbnN0IFRUeXBlICZ0eXBlKQogICAgICAg
ICBUU3RydWN0dXJlICpzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOwogICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8gJmZpZWxkIDogc3RydWN0dXJlLT5maWVsZHMoKSkKICAgICAgICAgewotICAg
ICAgICAgICAgY29uc3RydWN0b3ItPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhDcmVhdGVaZXJv
KCpmaWVsZC0+dHlwZSgpKSk7CisgICAgICAgICAgICBhcmd1bWVudHMtPnB1c2hfYmFjayhDcmVh
dGVaZXJvKCpmaWVsZC0+dHlwZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4g
Y29uc3RydWN0b3I7CisgICAgcmV0dXJuIFRJbnRlcm1BZ2dyZWdhdGU6OkNyZWF0ZUNvbnN0cnVj
dG9yKGNvbnN0VHlwZSwgc2g6OlR5cGVUb0NvbnN0cnVjdG9yT3BlcmF0b3IodHlwZSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyk7Cit9
CisKKy8vIHN0YXRpYworVEludGVybVR5cGVkICpUSW50ZXJtVHlwZWQ6OkNyZWF0ZUJvb2woYm9v
bCB2YWx1ZSkKK3sKKyAgICBUQ29uc3RhbnRVbmlvbiAqdSA9IG5ldyBUQ29uc3RhbnRVbmlvblsx
XTsKKyAgICB1WzBdLnNldEJDb25zdCh2YWx1ZSk7CisKKyAgICBUVHlwZSB0eXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxQ29uc3QsIDEpOworICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpu
b2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKHUsIHR5cGUpOworICAgIHJldHVybiBub2Rl
OwogfQogCiBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6VEludGVybUNvbnN0YW50VW5pb24oY29uc3Qg
VEludGVybUNvbnN0YW50VW5pb24gJm5vZGUpIDogVEludGVybVR5cGVkKG5vZGUpCkBAIC00NjQs
MzEgKzY0NSw3OSBAQCBUSW50ZXJtQ29uc3RhbnRVbmlvbjo6VEludGVybUNvbnN0YW50VW5pb24o
Y29uc3QgVEludGVybUNvbnN0YW50VW5pb24gJm5vZGUpIDogVAogCiB2b2lkIFRGdW5jdGlvblN5
bWJvbEluZm86OnNldEZyb21GdW5jdGlvbihjb25zdCBURnVuY3Rpb24gJmZ1bmN0aW9uKQogewot
ICAgIHNldE5hbWUoZnVuY3Rpb24uZ2V0TWFuZ2xlZE5hbWUoKSk7Ci0gICAgc2V0SWQoZnVuY3Rp
b24uZ2V0VW5pcXVlSWQoKSk7CisgICAgc2V0TmFtZShmdW5jdGlvbi5nZXROYW1lKCkpOworICAg
IHNldElkKFRTeW1ib2xVbmlxdWVJZChmdW5jdGlvbikpOworfQorCitURnVuY3Rpb25TeW1ib2xJ
bmZvOjpURnVuY3Rpb25TeW1ib2xJbmZvKGNvbnN0IFRTeW1ib2xVbmlxdWVJZCAmaWQpIDogbUlk
KG5ldyBUU3ltYm9sVW5pcXVlSWQoaWQpKQoreworfQorCitURnVuY3Rpb25TeW1ib2xJbmZvOjpU
RnVuY3Rpb25TeW1ib2xJbmZvKGNvbnN0IFRGdW5jdGlvblN5bWJvbEluZm8gJmluZm8pCisgICAg
OiBtTmFtZShpbmZvLm1OYW1lKSwgbUlkKG51bGxwdHIpCit7CisgICAgaWYgKGluZm8ubUlkKQor
ICAgIHsKKyAgICAgICAgbUlkID0gbmV3IFRTeW1ib2xVbmlxdWVJZCgqaW5mby5tSWQpOworICAg
IH0KK30KKworVEZ1bmN0aW9uU3ltYm9sSW5mbyAmVEZ1bmN0aW9uU3ltYm9sSW5mbzo6b3BlcmF0
b3I9KGNvbnN0IFRGdW5jdGlvblN5bWJvbEluZm8gJmluZm8pCit7CisgICAgbU5hbWUgPSBpbmZv
Lm1OYW1lOworICAgIGlmIChpbmZvLm1JZCkKKyAgICB7CisgICAgICAgIG1JZCA9IG5ldyBUU3lt
Ym9sVW5pcXVlSWQoKmluZm8ubUlkKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg
bUlkID0gbnVsbHB0cjsKKyAgICB9CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFRGdW5j
dGlvblN5bWJvbEluZm86OnNldElkKGNvbnN0IFRTeW1ib2xVbmlxdWVJZCAmaWQpCit7CisgICAg
bUlkID0gbmV3IFRTeW1ib2xVbmlxdWVJZChpZCk7Cit9CisKK2NvbnN0IFRTeW1ib2xVbmlxdWVJ
ZCAmVEZ1bmN0aW9uU3ltYm9sSW5mbzo6Z2V0SWQoKSBjb25zdAoreworICAgIEFTU0VSVChtSWQp
OworICAgIHJldHVybiAqbUlkOwogfQogCiBUSW50ZXJtQWdncmVnYXRlOjpUSW50ZXJtQWdncmVn
YXRlKGNvbnN0IFRJbnRlcm1BZ2dyZWdhdGUgJm5vZGUpCiAgICAgOiBUSW50ZXJtT3BlcmF0b3Io
bm9kZSksCi0gICAgICBtVXNlckRlZmluZWQobm9kZS5tVXNlckRlZmluZWQpLAogICAgICAgbVVz
ZUVtdWxhdGVkRnVuY3Rpb24obm9kZS5tVXNlRW11bGF0ZWRGdW5jdGlvbiksCiAgICAgICBtR290
UHJlY2lzaW9uRnJvbUNoaWxkcmVuKG5vZGUubUdvdFByZWNpc2lvbkZyb21DaGlsZHJlbiksCiAg
ICAgICBtRnVuY3Rpb25JbmZvKG5vZGUubUZ1bmN0aW9uSW5mbykKIHsKLSAgICBmb3IgKFRJbnRl
cm1Ob2RlICpjaGlsZCA6IG5vZGUubVNlcXVlbmNlKQorICAgIGZvciAoVEludGVybU5vZGUgKmFy
ZyA6IG5vZGUubUFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIFRJbnRlcm1UeXBlZCAqdHlwZWRD
aGlsZCA9IGNoaWxkLT5nZXRBc1R5cGVkKCk7Ci0gICAgICAgIEFTU0VSVCh0eXBlZENoaWxkICE9
IG51bGxwdHIpOwotICAgICAgICBUSW50ZXJtVHlwZWQgKmNoaWxkQ29weSA9IHR5cGVkQ2hpbGQt
PmRlZXBDb3B5KCk7Ci0gICAgICAgIG1TZXF1ZW5jZS5wdXNoX2JhY2soY2hpbGRDb3B5KTsKKyAg
ICAgICAgVEludGVybVR5cGVkICp0eXBlZEFyZyA9IGFyZy0+Z2V0QXNUeXBlZCgpOworICAgICAg
ICBBU1NFUlQodHlwZWRBcmcgIT0gbnVsbHB0cik7CisgICAgICAgIFRJbnRlcm1UeXBlZCAqYXJn
Q29weSA9IHR5cGVkQXJnLT5kZWVwQ29weSgpOworICAgICAgICBtQXJndW1lbnRzLnB1c2hfYmFj
ayhhcmdDb3B5KTsKICAgICB9CiB9CiAKK1RJbnRlcm1BZ2dyZWdhdGUgKlRJbnRlcm1BZ2dyZWdh
dGU6OnNoYWxsb3dDb3B5KCkgY29uc3QKK3sKKyAgICBUSW50ZXJtU2VxdWVuY2UgKmNvcHlTZXEg
PSBuZXcgVEludGVybVNlcXVlbmNlKCk7CisgICAgY29weVNlcS0+aW5zZXJ0KGNvcHlTZXEtPmJl
Z2luKCksIGdldFNlcXVlbmNlKCktPmJlZ2luKCksIGdldFNlcXVlbmNlKCktPmVuZCgpKTsKKyAg
ICBUSW50ZXJtQWdncmVnYXRlICpjb3B5Tm9kZSAgICAgICAgID0gbmV3IFRJbnRlcm1BZ2dyZWdh
dGUobVR5cGUsIG1PcCwgY29weVNlcSk7CisgICAgKmNvcHlOb2RlLT5nZXRGdW5jdGlvblN5bWJv
bEluZm8oKSA9IG1GdW5jdGlvbkluZm87CisgICAgY29weU5vZGUtPnNldExpbmUobUxpbmUpOwor
ICAgIHJldHVybiBjb3B5Tm9kZTsKK30KKwogVEludGVybVN3aXp6bGU6OlRJbnRlcm1Td2l6emxl
KGNvbnN0IFRJbnRlcm1Td2l6emxlICZub2RlKSA6IFRJbnRlcm1UeXBlZChub2RlKQogewogICAg
IFRJbnRlcm1UeXBlZCAqb3BlcmFuZENvcHkgPSBub2RlLm1PcGVyYW5kLT5kZWVwQ29weSgpOwog
ICAgIEFTU0VSVChvcGVyYW5kQ29weSAhPSBudWxscHRyKTsKICAgICBtT3BlcmFuZCA9IG9wZXJh
bmRDb3B5OworICAgIG1Td2l6emxlT2Zmc2V0cyA9IG5vZGUubVN3aXp6bGVPZmZzZXRzOwogfQog
CiBUSW50ZXJtQmluYXJ5OjpUSW50ZXJtQmluYXJ5KGNvbnN0IFRJbnRlcm1CaW5hcnkgJm5vZGUp
CkBAIC01MjksMTUgKzc1OCwxNSBAQCBib29sIFRJbnRlcm1PcGVyYXRvcjo6aXNNdWx0aXBsaWNh
dGlvbigpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtT3ApCiAgICAgewotICAgICAgY2FzZSBFT3BN
dWw6Ci0gICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4OgotICAgICAgY2FzZSBFT3BNYXRy
aXhUaW1lc1ZlY3RvcjoKLSAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXI6Ci0gICAgICBj
YXNlIEVPcFZlY3RvclRpbWVzTWF0cml4OgotICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc1NjYWxh
cjoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGNhc2UgRU9wTXVsOgorICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVz
TWF0cml4OgorICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzVmVjdG9yOgorICAgICAgICBjYXNl
IEVPcE1hdHJpeFRpbWVzU2NhbGFyOgorICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzTWF0cml4
OgorICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzU2NhbGFyOgorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogfQogCkBAIC01NDgsMzUgKzc3Nyw0OCBAQCBib29sIFRJbnRlcm1PcGVyYXRvcjo6aXNDb25z
dHJ1Y3RvcigpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtT3ApCiAgICAgewotICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RWZWMyOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMzOgotICAgICAgY2Fz
ZSBFT3BDb25zdHJ1Y3RWZWM0OgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyOgotICAgICAg
Y2FzZSBFT3BDb25zdHJ1Y3RNYXQyeDM6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDJ4NDoK
LSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0M3gyOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RN
YXQzOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzeDQ6Ci0gICAgICBjYXNlIEVPcENvbnN0
cnVjdE1hdDR4MjoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NHgzOgotICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RNYXQ0OgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RGbG9hdDoKLSAgICAgIGNh
c2UgRU9wQ29uc3RydWN0SVZlYzI6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWMzOgotICAg
ICAgY2FzZSBFT3BDb25zdHJ1Y3RJVmVjNDoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0SW50Ogot
ICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RVVmVjMjoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0VVZl
YzM6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdFVWZWM0OgotICAgICAgY2FzZSBFT3BDb25zdHJ1
Y3RVSW50OgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVjMjoKLSAgICAgIGNhc2UgRU9wQ29u
c3RydWN0QlZlYzM6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWM0OgotICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RCb29sOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RTdHJ1Y3Q6Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBjYXNlIEVPcENvbnN0cnVjdFZlYzI6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVj
MzoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWM0OgorICAgICAgICBjYXNlIEVPcENvbnN0
cnVjdE1hdDI6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MngzOgorICAgICAgICBjYXNl
IEVPcENvbnN0cnVjdE1hdDJ4NDoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzeDI6Cisg
ICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MzoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RN
YXQzeDQ6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NHgyOgorICAgICAgICBjYXNlIEVP
cENvbnN0cnVjdE1hdDR4MzoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0OgorICAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdEZsb2F0OgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWMy
OgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWMzOgorICAgICAgICBjYXNlIEVPcENvbnN0
cnVjdElWZWM0OgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdEludDoKKyAgICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RVVmVjMjoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RVVmVjMzoKKyAgICAg
ICAgY2FzZSBFT3BDb25zdHJ1Y3RVVmVjNDoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RVSW50
OgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWMyOgorICAgICAgICBjYXNlIEVPcENvbnN0
cnVjdEJWZWMzOgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWM0OgorICAgICAgICBjYXNl
IEVPcENvbnN0cnVjdEJvb2w6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0U3RydWN0OgorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorfQorCitib29sIFRJbnRlcm1PcGVyYXRvcjo6aXNGdW5jdGlvbkNh
bGwoKSBjb25zdAoreworICAgIHN3aXRjaCAobU9wKQorICAgIHsKKyAgICAgICAgY2FzZSBFT3BD
YWxsRnVuY3Rpb25JbkFTVDoKKyAgICAgICAgY2FzZSBFT3BDYWxsQnVpbHRJbkZ1bmN0aW9uOgor
ICAgICAgICBjYXNlIEVPcENhbGxJbnRlcm5hbFJhd0Z1bmN0aW9uOgorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogfQogCkBAIC02OTUsNiArOTM3LDggQEAgdm9pZCBUSW50ZXJtVW5hcnk6OnByb21vdGUo
KQogICAgICAgICBjYXNlIEVPcFBhY2tTbm9ybTJ4MTY6CiAgICAgICAgIGNhc2UgRU9wUGFja1Vu
b3JtMngxNjoKICAgICAgICAgY2FzZSBFT3BQYWNrSGFsZjJ4MTY6CisgICAgICAgIGNhc2UgRU9w
UGFja1Vub3JtNHg4OgorICAgICAgICBjYXNlIEVPcFBhY2tTbm9ybTR4ODoKICAgICAgICAgICAg
IHNldFR5cGUoVFR5cGUoRWJ0VUludCwgRWJwSGlnaCwgcmVzdWx0UXVhbGlmaWVyKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFT3BVbnBhY2tTbm9ybTJ4MTY6CkBAIC03MDQs
NiArOTQ4LDEwIEBAIHZvaWQgVEludGVybVVuYXJ5Ojpwcm9tb3RlKCkKICAgICAgICAgY2FzZSBF
T3BVbnBhY2tIYWxmMngxNjoKICAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoRWJ0RmxvYXQsIEVi
cE1lZGl1bSwgcmVzdWx0UXVhbGlmaWVyLCAyKSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBFT3BVbnBhY2tVbm9ybTR4ODoKKyAgICAgICAgY2FzZSBFT3BVbnBhY2tTbm9ybTR4
ODoKKyAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgcmVzdWx0
UXVhbGlmaWVyLCA0KSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFT3BBbnk6
CiAgICAgICAgIGNhc2UgRU9wQWxsOgogICAgICAgICAgICAgc2V0VHlwZShUVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIHJlc3VsdFF1YWxpZmllcikpOwpAQCAtNzIxLDYgKzk2OSwxOCBAQCB2
b2lkIFRJbnRlcm1VbmFyeTo6cHJvbW90ZSgpCiAgICAgICAgIGNhc2UgRU9wSXNOYW46CiAgICAg
ICAgICAgICBzZXRUeXBlKFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgcmVzdWx0UXVhbGlm
aWVyLCBvcGVyYW5kUHJpbWFyeVNpemUpKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEVPcEJpdGZpZWxkUmV2ZXJzZToKKyAgICAgICAgICAgIHNldFR5cGUoVFR5cGUobU9wZXJh
bmQtPmdldEJhc2ljVHlwZSgpLCBFYnBIaWdoLCByZXN1bHRRdWFsaWZpZXIsIG9wZXJhbmRQcmlt
YXJ5U2l6ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQml0Q291bnQ6
CisgICAgICAgICAgICBzZXRUeXBlKFRUeXBlKEVidEludCwgRWJwTG93LCByZXN1bHRRdWFsaWZp
ZXIsIG9wZXJhbmRQcmltYXJ5U2l6ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRU9wRmluZExTQjoKKyAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoRWJ0SW50LCBFYnBMb3cs
IHJlc3VsdFF1YWxpZmllciwgb3BlcmFuZFByaW1hcnlTaXplKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBFT3BGaW5kTVNCOgorICAgICAgICAgICAgc2V0VHlwZShUVHlwZShF
YnRJbnQsIEVicExvdywgcmVzdWx0UXVhbGlmaWVyLCBvcGVyYW5kUHJpbWFyeVNpemUpKTsKKyAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgc2V0VHlwZSht
T3BlcmFuZC0+Z2V0VHlwZSgpKTsKICAgICAgICAgICAgIG1UeXBlLnNldFF1YWxpZmllcihyZXN1
bHRRdWFsaWZpZXIpOwpAQCAtNzQ5LDYgKzEwMDksMTMgQEAgVEludGVybUJpbmFyeTo6VEludGVy
bUJpbmFyeShUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqbGVmdCwgVEludGVybVR5cGVkICpy
aWcKICAgICBwcm9tb3RlKCk7CiB9CiAKK1RJbnRlcm1JbnZhcmlhbnREZWNsYXJhdGlvbjo6VElu
dGVybUludmFyaWFudERlY2xhcmF0aW9uKFRJbnRlcm1TeW1ib2wgKnN5bWJvbCwgY29uc3QgVFNv
dXJjZUxvYyAmbGluZSkKKyAgICA6IFRJbnRlcm1Ob2RlKCksIG1TeW1ib2woc3ltYm9sKQorewor
ICAgIEFTU0VSVChzeW1ib2wpOworICAgIHNldExpbmUobGluZSk7Cit9CisKIFRJbnRlcm1UZXJu
YXJ5OjpUSW50ZXJtVGVybmFyeShUSW50ZXJtVHlwZWQgKmNvbmQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEludGVybVR5cGVkICp0cnVlRXhwcmVzc2lvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmZhbHNlRXhwcmVzc2lvbikKQEAgLTc5
OSwyNiArMTA2NiwzMSBAQCBib29sIFRJbnRlcm1Td2l6emxlOjpoYXNEdXBsaWNhdGVPZmZzZXRz
KCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgVEludGVybVN3aXp6bGU6Om9m
ZnNldHNNYXRjaChpbnQgb2Zmc2V0KSBjb25zdAoreworICAgIHJldHVybiBtU3dpenpsZU9mZnNl
dHMuc2l6ZSgpID09IDEgJiYgbVN3aXp6bGVPZmZzZXRzWzBdID09IG9mZnNldDsKK30KKwogdm9p
ZCBUSW50ZXJtU3dpenpsZTo6d3JpdGVPZmZzZXRzQXNYWVpXKFRJbmZvU2lua0Jhc2UgKm91dCkg
Y29uc3QKIHsKICAgICBmb3IgKGNvbnN0IGludCBvZmZzZXQgOiBtU3dpenpsZU9mZnNldHMpCiAg
ICAgewogICAgICAgICBzd2l0Y2ggKG9mZnNldCkKICAgICAgICAgewotICAgICAgICBjYXNlIDA6
Ci0gICAgICAgICAgICAqb3V0IDw8ICJ4IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIDE6Ci0gICAgICAgICAgICAqb3V0IDw8ICJ5IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIDI6Ci0gICAgICAgICAgICAqb3V0IDw8ICJ6IjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICAqb3V0IDw8ICJ3IjsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICAqb3V0IDw8ICJ4IjsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAqb3V0
IDw8ICJ5IjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjoKKyAg
ICAgICAgICAgICAgICAqb3V0IDw8ICJ6IjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAqb3V0IDw8ICJ3IjsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTkxMSw4ICsxMTgzLDcgQEAgdm9pZCBU
SW50ZXJtQmluYXJ5Ojpwcm9tb3RlKCkKICAgICBUUHJlY2lzaW9uIGhpZ2hlclByZWNpc2lvbiA9
IEdldEhpZ2hlclByZWNpc2lvbihtTGVmdC0+Z2V0UHJlY2lzaW9uKCksIG1SaWdodC0+Z2V0UHJl
Y2lzaW9uKCkpOwogICAgIGdldFR5cGVQb2ludGVyKCktPnNldFByZWNpc2lvbihoaWdoZXJQcmVj
aXNpb24pOwogCi0gICAgY29uc3QgaW50IG5vbWluYWxTaXplID0KLSAgICAgICAgc3RkOjptYXgo
bUxlZnQtPmdldE5vbWluYWxTaXplKCksIG1SaWdodC0+Z2V0Tm9taW5hbFNpemUoKSk7CisgICAg
Y29uc3QgaW50IG5vbWluYWxTaXplID0gc3RkOjptYXgobUxlZnQtPmdldE5vbWluYWxTaXplKCks
IG1SaWdodC0+Z2V0Tm9taW5hbFNpemUoKSk7CiAKICAgICAvLwogICAgIC8vIEFsbCBzY2FsYXJz
IG9yIHN0cnVjdHMuIENvZGUgYWZ0ZXIgdGhpcyB0ZXN0IGFzc3VtZXMgdGhpcyBjYXNlIGlzIHJl
bW92ZWQhCkBAIC05MjEsMzAgKzExOTIsMzAgQEAgdm9pZCBUSW50ZXJtQmluYXJ5Ojpwcm9tb3Rl
KCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAobU9wKQogICAgICAgICB7Ci0gICAgICAgICAgLy8K
LSAgICAgICAgICAvLyBQcm9tb3RlIHRvIGNvbmRpdGlvbmFsCi0gICAgICAgICAgLy8KLSAgICAg
ICAgICBjYXNlIEVPcEVxdWFsOgotICAgICAgICAgIGNhc2UgRU9wTm90RXF1YWw6Ci0gICAgICAg
ICAgY2FzZSBFT3BMZXNzVGhhbjoKLSAgICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOgotICAg
ICAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbDoKLSAgICAgICAgICBjYXNlIEVPcEdyZWF0ZXJU
aGFuRXF1YWw6Ci0gICAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZp
bmVkLCByZXN1bHRRdWFsaWZpZXIpKTsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
ICAvLwotICAgICAgICAgIC8vIEFuZCBhbmQgT3Igb3BlcmF0ZSBvbiBjb25kaXRpb25hbHMKLSAg
ICAgICAgICAvLwotICAgICAgICAgIGNhc2UgRU9wTG9naWNhbEFuZDoKLSAgICAgICAgICBjYXNl
IEVPcExvZ2ljYWxYb3I6Ci0gICAgICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6Ci0gICAgICAgICAg
ICBBU1NFUlQobUxlZnQtPmdldEJhc2ljVHlwZSgpID09IEVidEJvb2wgJiYgbVJpZ2h0LT5nZXRC
YXNpY1R5cGUoKSA9PSBFYnRCb29sKTsKLSAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoRWJ0Qm9v
bCwgRWJwVW5kZWZpbmVkLCByZXN1bHRRdWFsaWZpZXIpKTsKLSAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFByb21vdGUgdG8gY29uZGl0aW9uYWwKKyAg
ICAgICAgICAgIC8vCisgICAgICAgICAgICBjYXNlIEVPcEVxdWFsOgorICAgICAgICAgICAgY2Fz
ZSBFT3BOb3RFcXVhbDoKKyAgICAgICAgICAgIGNhc2UgRU9wTGVzc1RoYW46CisgICAgICAgICAg
ICBjYXNlIEVPcEdyZWF0ZXJUaGFuOgorICAgICAgICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFs
OgorICAgICAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFsOgorICAgICAgICAgICAgICAg
IHNldFR5cGUoVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCByZXN1bHRRdWFsaWZpZXIpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBBbmQgYW5kIE9yIG9wZXJh
dGUgb24gY29uZGl0aW9uYWxzCisgICAgICAgICAgICAvLworICAgICAgICAgICAgY2FzZSBFT3BM
b2dpY2FsQW5kOgorICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsWG9yOgorICAgICAgICAgICAg
Y2FzZSBFT3BMb2dpY2FsT3I6CisgICAgICAgICAgICAgICAgQVNTRVJUKG1MZWZ0LT5nZXRCYXNp
Y1R5cGUoKSA9PSBFYnRCb29sICYmIG1SaWdodC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0Qm9vbCk7
CisgICAgICAgICAgICAgICAgc2V0VHlwZShUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIHJl
c3VsdFF1YWxpZmllcikpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0xMTU0LDIzICsxNDI1LDI3IEBAIFRJbnRlcm1UeXBlZCAqVEludGVybVVu
YXJ5Ojpmb2xkKFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpCiAgICAgVENvbnN0YW50VW5pb24g
KmNvbnN0QXJyYXkgPSBudWxscHRyOwogICAgIHN3aXRjaCAobU9wKQogICAgIHsKLSAgICAgIGNh
c2UgRU9wQW55OgotICAgICAgY2FzZSBFT3BBbGw6Ci0gICAgICBjYXNlIEVPcExlbmd0aDoKLSAg
ICAgIGNhc2UgRU9wVHJhbnNwb3NlOgotICAgICAgY2FzZSBFT3BEZXRlcm1pbmFudDoKLSAgICAg
IGNhc2UgRU9wSW52ZXJzZToKLSAgICAgIGNhc2UgRU9wUGFja1Nub3JtMngxNjoKLSAgICAgIGNh
c2UgRU9wVW5wYWNrU25vcm0yeDE2OgotICAgICAgY2FzZSBFT3BQYWNrVW5vcm0yeDE2OgotICAg
ICAgY2FzZSBFT3BVbnBhY2tVbm9ybTJ4MTY6Ci0gICAgICBjYXNlIEVPcFBhY2tIYWxmMngxNjoK
LSAgICAgIGNhc2UgRU9wVW5wYWNrSGFsZjJ4MTY6Ci0gICAgICAgICAgY29uc3RBcnJheSA9IG9w
ZXJhbmRDb25zdGFudC0+Zm9sZFVuYXJ5Tm9uQ29tcG9uZW50V2lzZShtT3ApOwotICAgICAgICAg
IGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgICBjb25zdEFycmF5ID0gb3BlcmFuZENv
bnN0YW50LT5mb2xkVW5hcnlDb21wb25lbnRXaXNlKG1PcCwgZGlhZ25vc3RpY3MpOwotICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEFueToKKyAgICAgICAgY2FzZSBFT3BBbGw6Cisg
ICAgICAgIGNhc2UgRU9wTGVuZ3RoOgorICAgICAgICBjYXNlIEVPcFRyYW5zcG9zZToKKyAgICAg
ICAgY2FzZSBFT3BEZXRlcm1pbmFudDoKKyAgICAgICAgY2FzZSBFT3BJbnZlcnNlOgorICAgICAg
ICBjYXNlIEVPcFBhY2tTbm9ybTJ4MTY6CisgICAgICAgIGNhc2UgRU9wVW5wYWNrU25vcm0yeDE2
OgorICAgICAgICBjYXNlIEVPcFBhY2tVbm9ybTJ4MTY6CisgICAgICAgIGNhc2UgRU9wVW5wYWNr
VW5vcm0yeDE2OgorICAgICAgICBjYXNlIEVPcFBhY2tIYWxmMngxNjoKKyAgICAgICAgY2FzZSBF
T3BVbnBhY2tIYWxmMngxNjoKKyAgICAgICAgY2FzZSBFT3BQYWNrVW5vcm00eDg6CisgICAgICAg
IGNhc2UgRU9wUGFja1Nub3JtNHg4OgorICAgICAgICBjYXNlIEVPcFVucGFja1Vub3JtNHg4Ogor
ICAgICAgICBjYXNlIEVPcFVucGFja1Nub3JtNHg4OgorICAgICAgICAgICAgY29uc3RBcnJheSA9
IG9wZXJhbmRDb25zdGFudC0+Zm9sZFVuYXJ5Tm9uQ29tcG9uZW50V2lzZShtT3ApOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb25zdEFycmF5ID0g
b3BlcmFuZENvbnN0YW50LT5mb2xkVW5hcnlDb21wb25lbnRXaXNlKG1PcCwgZGlhZ25vc3RpY3Mp
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgLy8gTm9kZXMgbWF5IGJlIGNvbnN0
YW50IGZvbGRlZCB3aXRob3V0IGJlaW5nIHF1YWxpZmllZCBhcyBjb25zdGFudC4KQEAgLTExOTQs
OCArMTQ2OSw3IEBAIFRJbnRlcm1UeXBlZCAqVEludGVybUFnZ3JlZ2F0ZTo6Zm9sZChURGlhZ25v
c3RpY3MgKmRpYWdub3N0aWNzKQogICAgICAgICBjb25zdEFycmF5ID0gVEludGVybUNvbnN0YW50
VW5pb246OkZvbGRBZ2dyZWdhdGVCdWlsdEluKHRoaXMsIGRpYWdub3N0aWNzKTsKIAogICAgIC8v
IE5vZGVzIG1heSBiZSBjb25zdGFudCBmb2xkZWQgd2l0aG91dCBiZWluZyBxdWFsaWZpZWQgYXMg
Y29uc3RhbnQuCi0gICAgVFF1YWxpZmllciByZXN1bHRRdWFsaWZpZXIgPSBhcmVDaGlsZHJlbkNv
bnN0UXVhbGlmaWVkKCkgPyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKLSAgICByZXR1cm4gQ3Jl
YXRlRm9sZGVkTm9kZShjb25zdEFycmF5LCB0aGlzLCByZXN1bHRRdWFsaWZpZXIpOworICAgIHJl
dHVybiBDcmVhdGVGb2xkZWROb2RlKGNvbnN0QXJyYXksIHRoaXMsIGdldFF1YWxpZmllcigpKTsK
IH0KIAogLy8KQEAgLTEyMjQsNDIgKzE0OTgsNDUgQEAgVENvbnN0YW50VW5pb24gKlRJbnRlcm1D
b25zdGFudFVuaW9uOjpmb2xkQmluYXJ5KFRPcGVyYXRvciBvcCwKICAgICBlbHNlIGlmIChyaWdo
dE5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCkgPiAxICYmIG9iamVjdFNpemUgPT0gMSkK
ICAgICB7CiAgICAgICAgIC8vIGZvciBhIGNhc2UgbGlrZSBmbG9hdCBmID0gMS4yICsgdmVjNCgy
LCAzLCA0LCA1KTsKLSAgICAgICAgbGVmdEFycmF5ID0gVmVjdG9yaXplKCpnZXRVbmlvbkFycmF5
UG9pbnRlcigpLCByaWdodE5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCkpOworICAgICAg
ICBsZWZ0QXJyYXkgID0gVmVjdG9yaXplKCpnZXRVbmlvbkFycmF5UG9pbnRlcigpLCByaWdodE5v
ZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCkpOwogICAgICAgICBvYmplY3RTaXplID0gcmln
aHROb2RlLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwogICAgIH0KIAogICAgIFRDb25zdGFu
dFVuaW9uICpyZXN1bHRBcnJheSA9IG51bGxwdHI7CiAKLSAgICBzd2l0Y2gob3ApCisgICAgc3dp
dGNoIChvcCkKICAgICB7Ci0gICAgICBjYXNlIEVPcEFkZDoKLSAgICAgICAgcmVzdWx0QXJyYXkg
PSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07Ci0gICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQotICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0gPSBU
Q29uc3RhbnRVbmlvbjo6YWRkKGxlZnRBcnJheVtpXSwgcmlnaHRBcnJheVtpXSwgZGlhZ25vc3Rp
Y3MsIGxpbmUpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wU3ViOgotICAgICAgICBy
ZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCi0gICAgICAgICAgICByZXN1bHRB
cnJheVtpXSA9IFRDb25zdGFudFVuaW9uOjpzdWIobGVmdEFycmF5W2ldLCByaWdodEFycmF5W2ld
LCBkaWFnbm9zdGljcywgbGluZSk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEFk
ZDoKKyAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW29iamVjdFNp
emVdOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKysp
CisgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0gPQorICAgICAgICAgICAgICAgICAgICBU
Q29uc3RhbnRVbmlvbjo6YWRkKGxlZnRBcnJheVtpXSwgcmlnaHRBcnJheVtpXSwgZGlhZ25vc3Rp
Y3MsIGxpbmUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wU3ViOgorICAg
ICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07Cisg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVtpXSA9CisgICAgICAgICAgICAgICAgICAgIFRDb25zdGFu
dFVuaW9uOjpzdWIobGVmdEFycmF5W2ldLCByaWdodEFycmF5W2ldLCBkaWFnbm9zdGljcywgbGlu
ZSk7CisgICAgICAgICAgICBicmVhazsKIAotICAgICAgY2FzZSBFT3BNdWw6Ci0gICAgICBjYXNl
IEVPcFZlY3RvclRpbWVzU2NhbGFyOgotICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjoK
LSAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07Ci0g
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQotICAgICAgICAg
ICAgcmVzdWx0QXJyYXlbaV0gPSBUQ29uc3RhbnRVbmlvbjo6bXVsKGxlZnRBcnJheVtpXSwgcmln
aHRBcnJheVtpXSwgZGlhZ25vc3RpY3MsIGxpbmUpOwotICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBFT3BNdWw6CisgICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2FsYXI6CisgICAgICAg
IGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXI6CisgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5l
dyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ld
ID0KKyAgICAgICAgICAgICAgICAgICAgVENvbnN0YW50VW5pb246Om11bChsZWZ0QXJyYXlbaV0s
IHJpZ2h0QXJyYXlbaV0sIGRpYWdub3N0aWNzLCBsaW5lKTsKKyAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4OgorICAgICAgICBjYXNlIEVPcE1hdHJp
eFRpbWVzTWF0cml4OgogICAgICAgICB7CiAgICAgICAgICAgICAvLyBUT0RPKGptYWRsbCk6IFRo
aXMgY29kZSBzaG91bGQgY2hlY2sgZm9yIG92ZXJmbG93cy4KICAgICAgICAgICAgIEFTU0VSVChn
ZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQgJiYgcmlnaHROb2RlLT5nZXRCYXNp
Y1R5cGUoKSA9PSBFYnRGbG9hdCk7CiAKLSAgICAgICAgICAgIGNvbnN0IGludCBsZWZ0Q29scyA9
IGdldENvbHMoKTsKLSAgICAgICAgICAgIGNvbnN0IGludCBsZWZ0Um93cyA9IGdldFJvd3MoKTsK
LSAgICAgICAgICAgIGNvbnN0IGludCByaWdodENvbHMgPSByaWdodE5vZGUtPmdldFR5cGUoKS5n
ZXRDb2xzKCk7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcmlnaHRSb3dzID0gcmlnaHROb2RlLT5n
ZXRUeXBlKCkuZ2V0Um93cygpOworICAgICAgICAgICAgY29uc3QgaW50IGxlZnRDb2xzICAgPSBn
ZXRDb2xzKCk7CisgICAgICAgICAgICBjb25zdCBpbnQgbGVmdFJvd3MgICA9IGdldFJvd3MoKTsK
KyAgICAgICAgICAgIGNvbnN0IGludCByaWdodENvbHMgID0gcmlnaHROb2RlLT5nZXRUeXBlKCku
Z2V0Q29scygpOworICAgICAgICAgICAgY29uc3QgaW50IHJpZ2h0Um93cyAgPSByaWdodE5vZGUt
PmdldFR5cGUoKS5nZXRSb3dzKCk7CiAgICAgICAgICAgICBjb25zdCBpbnQgcmVzdWx0Q29scyA9
IHJpZ2h0Q29sczsKICAgICAgICAgICAgIGNvbnN0IGludCByZXN1bHRSb3dzID0gbGVmdFJvd3M7
CiAKQEAgLTEyNzQsMTE0ICsxNTUxLDE1MiBAQCBUQ29uc3RhbnRVbmlvbiAqVEludGVybUNvbnN0
YW50VW5pb246OmZvbGRCaW5hcnkoVE9wZXJhdG9yIG9wLAogICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0QXJyYXlbcmVzdWx0Um93cyAqIGNvbHVtbiArIHJvd10uc2V0RkNvbnN0KAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W3Jlc3VsdFJvd3MgKiBjb2x1bW4g
KyByb3ddLmdldEZDb25zdCgpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0QXJy
YXlbaSAqIGxlZnRSb3dzICsgcm93XS5nZXRGQ29uc3QoKSAqCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmlnaHRBcnJheVtjb2x1bW4gKiByaWdodFJvd3MgKyBpXS5nZXRGQ29uc3QoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0QXJyYXlbY29sdW1uICogcmln
aHRSb3dzICsgaV0uZ2V0RkNvbnN0KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCi0g
ICAgICBjYXNlIEVPcERpdjoKLSAgICAgIGNhc2UgRU9wSU1vZDoKKyAgICAgICAgY2FzZSBFT3BE
aXY6CisgICAgICAgIGNhc2UgRU9wSU1vZDoKICAgICAgICAgewogICAgICAgICAgICAgcmVzdWx0
QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkKICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgICAg
ICAgICBpZiAocmlnaHRBcnJheVtpXSA9PSAwLjBmKQotICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBkaWFnbm9zdGljcy0+d2FybmluZygKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnZXRMaW5lKCksICJEaXZpZGUgYnkgemVybyBlcnJvciBkdXJpbmcg
Y29uc3RhbnQgZm9sZGluZyIsICIvIiwgIiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXlbaV0uc2V0RkNvbnN0KGxlZnRBcnJheVtpXS5nZXRGQ29uc3QoKSA8IDAgPyAtRkxU
X01BWCA6IEZMVF9NQVgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9wID09IEVPcERpdik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QobGVmdEFy
cmF5W2ldLmdldEZDb25zdCgpIC8gcmlnaHRBcnJheVtpXS5nZXRGQ29uc3QoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAg
ICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgICAgICAgICBpZiAocmlnaHRBcnJheVtp
XSA9PSAwKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBk
aWFnbm9zdGljcy0+d2FybmluZygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMaW5l
KCksICJEaXZpZGUgYnkgemVybyBlcnJvciBkdXJpbmcgY29uc3RhbnQgZm9sZGluZyIsICIvIiwg
IiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KElO
VF9NQVgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxocyAg
ICAgPSBsZWZ0QXJyYXlbaV0uZ2V0SUNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
bnQgZGl2aXNvciA9IHJpZ2h0QXJyYXlbaV0uZ2V0SUNvbnN0KCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAob3AgPT0gRU9wRGl2KQorICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQg
ZGl2aWRlbmQgPSBsZWZ0QXJyYXlbaV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBmbG9hdCBkaXZpc29yICA9IHJpZ2h0QXJyYXlbaV0uZ2V0RkNvbnN0KCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoZGl2aXNvciA9PSAwLjBmKQogICAgICAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciB0aGUgc3Bl
Y2lhbCBjYXNlIHdoZXJlIHRoZSBtaW5pbXVtIHJlcHJlc2VudGFibGUgbnVtYmVyIGlzCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGl2aWRlZCBieSAtMS4gSWYgbGVmdCBhbG9uZSB0
aGlzIGxlYWRzIHRvIGludGVnZXIgb3ZlcmZsb3cgaW4gQysrLgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIEVTU0wgMy4wMC42IHNlY3Rpb24gNC4xLjMgSW50ZWdlcnM6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gIkhvd2V2ZXIsIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUg
bWluaW11bSByZXByZXNlbnRhYmxlIHZhbHVlIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZGl2aWRlZCBieSAtMSwgaXQgaXMgYWxsb3dlZCB0byByZXR1cm4gZWl0aGVyIHRoZSBt
aW5pbXVtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVwcmVzZW50YWJsZSB2YWx1
ZSBvciB0aGUgbWF4aW11bSByZXByZXNlbnRhYmxlIHZhbHVlLiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAobGhzID09IC0weDdmZmZmZmZmIC0gMSAmJiBkaXZpc29yID09IC0xKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXZpZGVuZCA9PSAwLjBmKQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KDB4N2ZmZmZmZmYpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaWFnbm9zdGljcy0+d2FybmluZygKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdldExpbmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJaZXJvIGRpdmlkZWQgYnkgemVybyBkdXJpbmcgY29uc3RhbnQgZm9sZGluZyBnZW5l
cmF0ZWQgTmFOIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChz
dGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6cXVpZXRfTmFOKCkpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRBcnJheVtpXS5zZXRJQ29uc3QobGhzIC8gZGl2aXNvcik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpYWdub3N0aWNzLT53YXJuaW5nKGdldExpbmUoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpdmlkZSBieSB6
ZXJvIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIiwgIi8iKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBuZWdhdGl2ZVJlc3VsdCA9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnNpZ25iaXQoZGl2aWRlbmQpICE9IHN0ZDo6c2lnbmJpdChkaXZp
c29yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0
RkNvbnN0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVnYXRpdmVSZXN1
bHQgPyAtc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc3RkOjpudW1lcmljX2xp
bWl0czxmbG9hdD46OmluZmluaXR5KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGdsOjppc0luZihkaXZpZGVuZCkgJiYgZ2w6OmlzSW5mKGRpdmlzb3IpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWdub3N0aWNz
LT53YXJuaW5nKGdldExpbmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiSW5maW5pdHkgZGl2aWRlZCBieSBpbmZpbml0eSBkdXJpbmcgY29uc3Rh
bnQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJm
b2xkaW5nIGdlbmVyYXRlZCBOYU4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIvIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
QXJyYXlbaV0uc2V0RkNvbnN0KHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4o
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQVNTRVJUKG9wID09IEVPcElNb2QpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChsaHMgPCAwIHx8IGRpdmlzb3IgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0IHJlc3VsdCA9IGRpdmlkZW5kIC8gZGl2aXNvcjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWdsOjppc0luZihkaXZpZGVuZCkgJiYgZ2w6OmlzSW5mKHJlc3VsdCkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBFU1NMIDMuMDAuNiBzZWN0aW9uIDUuOTogUmVzdWx0cyBvZiBtb2R1bHVzIGFyZSB1bmRl
ZmluZWQgd2hlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlaXRoZXIgb25l
IG9mIHRoZSBvcGVyYW5kcyBpcyBuZWdhdGl2ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlhZ25vc3RpY3MtPndhcm5pbmcoZ2V0TGluZSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmVnYXRpdmUgbW9kdWx1cyBvcGVy
YXRvciBvcGVyYW5kICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImVuY291bnRlcmVkIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiLCAiIik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25z
dCgwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhZ25vc3RpY3MtPndhcm5p
bmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMaW5lKCksICJDb25z
dGFudCBmb2xkZWQgZGl2aXNpb24gb3ZlcmZsb3dlZCB0byBpbmZpbml0eSIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29u
c3QocmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJpZ2h0QXJyYXlbaV0g
PT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkaWFnbm9zdGljcy0+d2FybmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2V0TGluZSgpLCAiRGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRp
bmciLCAiLyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNl
dElDb25zdChJTlRfTUFYKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgbGhzICAgICA9IGxlZnRBcnJheVtpXS5nZXRJQ29uc3QoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGl2aXNvciA9IHJpZ2h0QXJyYXlbaV0u
Z2V0SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wID09IEVPcERp
dikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIENoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSBtaW5pbXVt
IHJlcHJlc2VudGFibGUgbnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpdmlkZWQgYnkgLTEuIElm
IGxlZnQgYWxvbmUgdGhpcyBsZWFkcyB0byBpbnRlZ2VyIG92ZXJmbG93IGluCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEMrKy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gRVNTTCAzLjAwLjYgc2VjdGlvbiA0LjEuMyBJbnRlZ2VyczoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gIkhvd2V2ZXIsIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUg
bWluaW11bSByZXByZXNlbnRhYmxlIHZhbHVlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGRpdmlkZWQgYnkgLTEsIGl0IGlzIGFsbG93ZWQgdG8gcmV0dXJuIGVpdGhlciB0
aGUgbWluaW11bQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXByZXNlbnRh
YmxlIHZhbHVlIG9yIHRoZSBtYXhpbXVtIHJlcHJlc2VudGFibGUgdmFsdWUuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobGhzID09IC0weDdmZmZmZmZmIC0gMSAmJiBkaXZp
c29yID09IC0xKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3QoMHg3ZmZm
ZmZmZik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJ
Q29uc3QobGhzIC8gZGl2aXNvcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KGxocyAlIGRpdmlzb3IpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQob3AgPT0gRU9wSU1vZCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaHMgPCAwIHx8IGRpdmlzb3IgPCAw
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBFU1NMIDMuMDAuNiBzZWN0aW9uIDUuOTogUmVzdWx0cyBvZiBt
b2R1bHVzIGFyZSB1bmRlZmluZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8vIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVpdGhlciBv
bmUgb2YgdGhlIG9wZXJhbmRzIGlzIG5lZ2F0aXZlLgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlhZ25vc3RpY3MtPndhcm5pbmcoZ2V0TGluZSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5lZ2F0aXZlIG1v
ZHVsdXMgb3BlcmF0b3Igb3BlcmFuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb3VudGVyZWQgZHVyaW5nIGNvbnN0YW50IGZv
bGRpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dEFycmF5W2ldLnNldElDb25zdCgwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdEFycmF5W2ldLnNldElDb25zdChsaHMgJSBkaXZpc29yKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAg
ICAgICAgICBjYXNlIEVidFVJbnQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyaWdodEFycmF5
W2ldID09IDApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGRpYWdub3N0aWNzLT53YXJuaW5nKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExp
bmUoKSwgIkRpdmlkZSBieSB6ZXJvIGVycm9yIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIiwgIi8i
LCAiIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3Qo
VUlOVF9NQVgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9w
ID09IEVPcERpdikKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHJpZ2h0QXJyYXlbaV0gPT0gMCkKICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRV
Q29uc3QobGVmdEFycmF5W2ldLmdldFVDb25zdCgpIC8gcmlnaHRBcnJheVtpXS5nZXRVQ29uc3Qo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhZ25vc3RpY3MtPndhcm5pbmcoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExpbmUoKSwgIkRpdmlkZSBieSB6ZXJv
IGVycm9yIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIiwgIi8iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3QoVUlOVF9NQVgpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChvcCA9
PSBFT3BJTW9kKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5z
ZXRVQ29uc3QobGVmdEFycmF5W2ldLmdldFVDb25zdCgpICUgcmlnaHRBcnJheVtpXS5nZXRVQ29u
c3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKG9wID09IEVPcERpdikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldFVDb25zdChsZWZ0QXJy
YXlbaV0uZ2V0VUNvbnN0KCkgLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmlnaHRBcnJheVtpXS5nZXRVQ29uc3QoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChvcCA9PSBFT3BJTW9kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0VUNvbnN0KGxlZnRBcnJheVtpXS5nZXRVQ29uc3QoKSAl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByaWdodEFycmF5W2ldLmdldFVDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKIAotICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsK
IAotICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1ZlY3RvcjoKKyAgICAgICAgY2FzZSBFT3BNYXRy
aXhUaW1lc1ZlY3RvcjoKICAgICAgICAgewogICAgICAgICAgICAgLy8gVE9ETyhqbWFkbGwpOiBU
aGlzIGNvZGUgc2hvdWxkIGNoZWNrIGZvciBvdmVyZmxvd3MuCiAgICAgICAgICAgICBBU1NFUlQo
cmlnaHROb2RlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCk7CkBAIC0xMzk2LDE1ICsxNzEx
LDE2IEBAIFRDb25zdGFudFVuaW9uICpUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZEJpbmFyeShU
T3BlcmF0b3Igb3AsCiAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbbWF0cml4Um93XS5zZXRG
Q29uc3QoMC4wZik7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbWF0
cml4Q29sczsgY29sKyspCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRBcnJheVttYXRyaXhSb3ddLnNldEZDb25zdChyZXN1bHRBcnJheVttYXRyaXhSb3ddLmdl
dEZDb25zdCgpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGVmdEFycmF5W2NvbCAqIG1hdHJpeFJvd3MgKyBtYXRyaXhSb3ddLmdldEZDb25z
dCgpICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmlnaHRBcnJheVtjb2xdLmdldEZDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXlbbWF0cml4Um93XS5zZXRGQ29uc3QoCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRBcnJheVttYXRyaXhSb3ddLmdldEZDb25zdCgpICsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxlZnRBcnJheVtjb2wgKiBtYXRyaXhSb3dzICsgbWF0cml4Um93XS5nZXRGQ29uc3QoKSAq
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRBcnJheVtjb2xdLmdldEZDb25zdCgp
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7CiAKLSAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXg6CisgICAgICAgIGNhc2Ug
RU9wVmVjdG9yVGltZXNNYXRyaXg6CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFRPRE8oam1h
ZGxsKTogVGhpcyBjb2RlIHNob3VsZCBjaGVjayBmb3Igb3ZlcmZsb3dzLgogICAgICAgICAgICAg
QVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCk7CkBAIC0xNDE5LDE1
ICsxNzM1LDE2IEBAIFRDb25zdGFudFVuaW9uICpUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZEJp
bmFyeShUT3BlcmF0b3Igb3AsCiAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbbWF0cml4Q29s
XS5zZXRGQ29uc3QoMC4wZik7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgbWF0cml4Um93ID0g
MDsgbWF0cml4Um93IDwgbWF0cml4Um93czsgbWF0cml4Um93KyspCiAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVttYXRyaXhDb2xdLnNldEZDb25zdChy
ZXN1bHRBcnJheVttYXRyaXhDb2xdLmdldEZDb25zdCgpICsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdEFycmF5W21hdHJpeFJvd10uZ2V0
RkNvbnN0KCkgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByaWdodEFycmF5W21hdHJpeENvbCAqIG1hdHJpeFJvd3MgKyBtYXRyaXhSb3ddLmdl
dEZDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbbWF0cml4Q29sXS5z
ZXRGQ29uc3QoCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVttYXRyaXhDb2xd
LmdldEZDb25zdCgpICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRBcnJheVttYXRyaXhS
b3ddLmdldEZDb25zdCgpICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodEFycmF5
W21hdHJpeENvbCAqIG1hdHJpeFJvd3MgKyBtYXRyaXhSb3ddLmdldEZDb25zdCgpKTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAK
LSAgICAgIGNhc2UgRU9wTG9naWNhbEFuZDoKKyAgICAgICAgY2FzZSBFT3BMb2dpY2FsQW5kOgog
ICAgICAgICB7CiAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltv
YmplY3RTaXplXTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6
ZTsgaSsrKQpAQCAtMTQzNyw3ICsxNzU0LDcgQEAgVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25z
dGFudFVuaW9uOjpmb2xkQmluYXJ5KFRPcGVyYXRvciBvcCwKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKIAotICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6CisgICAgICAgIGNhc2UgRU9wTG9naWNh
bE9yOgogICAgICAgICB7CiAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRV
bmlvbltvYmplY3RTaXplXTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2Jq
ZWN0U2l6ZTsgaSsrKQpAQCAtMTQ0Nyw3ICsxNzY0LDcgQEAgVENvbnN0YW50VW5pb24gKlRJbnRl
cm1Db25zdGFudFVuaW9uOjpmb2xkQmluYXJ5KFRPcGVyYXRvciBvcCwKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKIAotICAgICAgY2FzZSBFT3BMb2dpY2FsWG9yOgorICAgICAgICBjYXNlIEVP
cExvZ2ljYWxYb3I6CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0
QmFzaWNUeXBlKCkgPT0gRWJ0Qm9vbCk7CiAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBU
Q29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKQEAgLTE0NTgsNjEgKzE3NzUsNjMgQEAgVENvbnN0
YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkQmluYXJ5KFRPcGVyYXRvciBvcCwK
ICAgICAgICAgfQogICAgICAgICBicmVhazsKIAotICAgICAgY2FzZSBFT3BCaXR3aXNlQW5kOgot
ICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCi0gICAgICAgICAg
ICByZXN1bHRBcnJheVtpXSA9IGxlZnRBcnJheVtpXSAmIHJpZ2h0QXJyYXlbaV07Ci0gICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBFT3BCaXR3aXNlWG9yOgotICAgICAgICByZXN1bHRBcnJheSA9
IG5ldyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCi0gICAgICAgICAgICByZXN1bHRBcnJheVtpXSA9IGxl
ZnRBcnJheVtpXSBeIHJpZ2h0QXJyYXlbaV07Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBF
T3BCaXR3aXNlT3I6Ci0gICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW29i
amVjdFNpemVdOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkr
KykKLSAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldID0gbGVmdEFycmF5W2ldIHwgcmlnaHRBcnJh
eVtpXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVmdDoKLSAgICAg
ICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07Ci0gICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQotICAgICAgICAgICAgcmVz
dWx0QXJyYXlbaV0gPSBUQ29uc3RhbnRVbmlvbjo6bHNoaWZ0KGxlZnRBcnJheVtpXSwgcmlnaHRB
cnJheVtpXSwgZGlhZ25vc3RpY3MsIGxpbmUpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
RU9wQml0U2hpZnRSaWdodDoKLSAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5p
b25bb2JqZWN0U2l6ZV07Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6
ZTsgaSsrKQotICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0gPSBUQ29uc3RhbnRVbmlvbjo6cnNo
aWZ0KGxlZnRBcnJheVtpXSwgcmlnaHRBcnJheVtpXSwgZGlhZ25vc3RpY3MsIGxpbmUpOwotICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNlQW5kOgorICAgICAgICAgICAgcmVz
dWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CisgICAgICAgICAgICBm
b3IgKHNpemVfdCBpICAgICAgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAg
ICAgIHJlc3VsdEFycmF5W2ldID0gbGVmdEFycmF5W2ldICYgcmlnaHRBcnJheVtpXTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdHdpc2VYb3I6CisgICAgICAgICAgICBy
ZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKKyAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgICAgICA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAg
ICAgICAgcmVzdWx0QXJyYXlbaV0gPSBsZWZ0QXJyYXlbaV0gXiByaWdodEFycmF5W2ldOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQml0d2lzZU9yOgorICAgICAgICAgICAg
cmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpICAgICAgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAg
ICAgICAgIHJlc3VsdEFycmF5W2ldID0gbGVmdEFycmF5W2ldIHwgcmlnaHRBcnJheVtpXTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVmdDoKKyAgICAgICAg
ICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW29iamVjdFNpemVdOworICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAg
ICAgICAgcmVzdWx0QXJyYXlbaV0gPQorICAgICAgICAgICAgICAgICAgICBUQ29uc3RhbnRVbmlv
bjo6bHNoaWZ0KGxlZnRBcnJheVtpXSwgcmlnaHRBcnJheVtpXSwgZGlhZ25vc3RpY3MsIGxpbmUp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQml0U2hpZnRSaWdodDoKKyAg
ICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAg
ICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0gPQorICAgICAgICAgICAgICAgICAgICBUQ29uc3Rh
bnRVbmlvbjo6cnNoaWZ0KGxlZnRBcnJheVtpXSwgcmlnaHRBcnJheVtpXSwgZGlhZ25vc3RpY3Ms
IGxpbmUpOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgIGNhc2UgRU9wTGVzc1RoYW46Ci0g
ICAgICAgIEFTU0VSVChvYmplY3RTaXplID09IDEpOwotICAgICAgICByZXN1bHRBcnJheSA9IG5l
dyBUQ29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgcmVzdWx0QXJyYXktPnNldEJDb25zdCgqbGVm
dEFycmF5IDwgKnJpZ2h0QXJyYXkpOwotICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BM
ZXNzVGhhbjoKKyAgICAgICAgICAgIEFTU0VSVChvYmplY3RTaXplID09IDEpOworICAgICAgICAg
ICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bMV07CisgICAgICAgICAgICByZXN1
bHRBcnJheS0+c2V0QkNvbnN0KCpsZWZ0QXJyYXkgPCAqcmlnaHRBcnJheSk7CisgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbjoKLSAgICAgICAgQVNTRVJUKG9i
amVjdFNpemUgPT0gMSk7Ci0gICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9u
WzFdOwotICAgICAgICByZXN1bHRBcnJheS0+c2V0QkNvbnN0KCpsZWZ0QXJyYXkgPiAqcmlnaHRB
cnJheSk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOgorICAg
ICAgICAgICAgQVNTRVJUKG9iamVjdFNpemUgPT0gMSk7CisgICAgICAgICAgICByZXN1bHRBcnJh
eSA9IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRC
Q29uc3QoKmxlZnRBcnJheSA+ICpyaWdodEFycmF5KTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6Ci0gICAgICAgIEFTU0VSVChvYmplY3RTaXplID09
IDEpOwotICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsKLSAgICAg
ICAgcmVzdWx0QXJyYXktPnNldEJDb25zdCghKCpsZWZ0QXJyYXkgPiAqcmlnaHRBcnJheSkpOwot
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFsOgorICAgICAgICAg
ICAgQVNTRVJUKG9iamVjdFNpemUgPT0gMSk7CisgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5l
dyBUQ29uc3RhbnRVbmlvblsxXTsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRCQ29uc3Qo
ISgqbGVmdEFycmF5ID4gKnJpZ2h0QXJyYXkpKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWw6Ci0gICAgICAgIEFTU0VSVChvYmplY3RTaXplID09
IDEpOwotICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsKLSAgICAg
ICAgcmVzdWx0QXJyYXktPnNldEJDb25zdCghKCpsZWZ0QXJyYXkgPCAqcmlnaHRBcnJheSkpOwot
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFsOgorICAgICAg
ICAgICAgQVNTRVJUKG9iamVjdFNpemUgPT0gMSk7CisgICAgICAgICAgICByZXN1bHRBcnJheSA9
IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRCQ29u
c3QoISgqbGVmdEFycmF5IDwgKnJpZ2h0QXJyYXkpKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICBjYXNlIEVPcEVxdWFsOgotICAgICAgY2FzZSBFT3BOb3RFcXVhbDoKKyAgICAgICAgY2Fz
ZSBFT3BFcXVhbDoKKyAgICAgICAgY2FzZSBFT3BOb3RFcXVhbDoKICAgICAgICAgewogICAgICAg
ICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgICAgICBi
b29sIGVxdWFsID0gdHJ1ZTsKKyAgICAgICAgICAgIGJvb2wgZXF1YWwgID0gdHJ1ZTsKICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIGlmIChsZWZ0QXJyYXlbaV0gIT0gcmlnaHRBcnJheVtpXSkK
QEAgLTE1MzIsOSArMTg1MSw5IEBAIFRDb25zdGFudFVuaW9uICpUSW50ZXJtQ29uc3RhbnRVbmlv
bjo6Zm9sZEJpbmFyeShUT3BlcmF0b3Igb3AsCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAK
LSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdEFy
cmF5OwogfQpAQCAtMTU0OSw3ICsxODY4LDcgQEAgVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25z
dGFudFVuaW9uOjpmb2xkVW5hcnlOb25Db21wb25lbnRXaXNlKFRPcGVyYXRvciBvcCkKICAgICBj
b25zdCBUQ29uc3RhbnRVbmlvbiAqb3BlcmFuZEFycmF5ID0gZ2V0VW5pb25BcnJheVBvaW50ZXIo
KTsKICAgICBBU1NFUlQob3BlcmFuZEFycmF5KTsKIAotICAgIHNpemVfdCBvYmplY3RTaXplID0g
Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKKyAgICBzaXplX3Qgb2JqZWN0U2l6ZSAgICAgICAg
ICAgPSBnZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwogICAgIFRDb25zdGFudFVuaW9uICpyZXN1
bHRBcnJheSA9IG51bGxwdHI7CiAgICAgc3dpdGNoIChvcCkKICAgICB7CkBAIC0xNjc1LDYgKzE5
OTQsNDkgQEAgVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkVW5hcnlO
b25Db21wb25lbnRXaXNlKFRPcGVyYXRvciBvcCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAKKyAgICAgICAgY2FzZSBFT3BQYWNrVW5vcm00eDg6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpOworICAgICAg
ICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb24oKTsKKyAgICAgICAgICAgIHJl
c3VsdEFycmF5LT5zZXRVQ29uc3QoCisgICAgICAgICAgICAgICAgZ2w6OlBhY2tVbm9ybTR4OChv
cGVyYW5kQXJyYXlbMF0uZ2V0RkNvbnN0KCksIG9wZXJhbmRBcnJheVsxXS5nZXRGQ29uc3QoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhbmRBcnJheVsyXS5nZXRGQ29u
c3QoKSwgb3BlcmFuZEFycmF5WzNdLmdldEZDb25zdCgpKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEVPcFBhY2tTbm9ybTR4ODoKKyAgICAgICAgeworICAg
ICAgICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCk7Cisg
ICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbigpOworICAgICAgICAg
ICAgcmVzdWx0QXJyYXktPnNldFVDb25zdCgKKyAgICAgICAgICAgICAgICBnbDo6UGFja1Nub3Jt
NHg4KG9wZXJhbmRBcnJheVswXS5nZXRGQ29uc3QoKSwgb3BlcmFuZEFycmF5WzFdLmdldEZDb25z
dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZEFycmF5WzJdLmdl
dEZDb25zdCgpLCBvcGVyYW5kQXJyYXlbM10uZ2V0RkNvbnN0KCkpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRU9wVW5wYWNrVW5vcm00eDg6CisgICAgICAg
IHsKKyAgICAgICAgICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0VUlu
dCk7CisgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbls0XTsKKyAg
ICAgICAgICAgIGZsb2F0IGZbNF07CisgICAgICAgICAgICBnbDo6VW5wYWNrVW5vcm00eDgob3Bl
cmFuZEFycmF5WzBdLmdldFVDb25zdCgpLCBmKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgNDsgKytpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdEFy
cmF5W2ldLnNldEZDb25zdChmW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgRU9wVW5wYWNrU25vcm00eDg6CisgICAgICAgIHsK
KyAgICAgICAgICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0VUludCk7
CisgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbls0XTsKKyAgICAg
ICAgICAgIGZsb2F0IGZbNF07CisgICAgICAgICAgICBnbDo6VW5wYWNrU25vcm00eDgob3BlcmFu
ZEFycmF5WzBdLmdldFVDb25zdCgpLCBmKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgNDsgKytpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5
W2ldLnNldEZDb25zdChmW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CiAgICAgICAgICAgICBicmVhazsKQEAgLTE2OTgsNyArMjA2MCw3IEBAIFRDb25zdGFudFVuaW9u
ICpUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZFVuYXJ5Q29tcG9uZW50V2lzZShUT3BlcmF0b3Ig
b3AsCiAgICAgVENvbnN0YW50VW5pb24gKnJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9u
W29iamVjdFNpemVdOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsr
KQogICAgIHsKLSAgICAgICAgc3dpdGNoKG9wKQorICAgICAgICBzd2l0Y2ggKG9wKQogICAgICAg
ICB7CiAgICAgICAgICAgICBjYXNlIEVPcE5lZ2F0aXZlOgogICAgICAgICAgICAgICAgIHN3aXRj
aCAoZ2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpKQpAQCAtMjAzNSw3ICsyMzk3LDcgQEAgVENvbnN0
YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkVW5hcnlDb21wb25lbnRXaXNlKFRP
cGVyYXRvciBvcCwKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgICAgICAgIGNhc2UgRU9wVmVjdG9yTG9naWNhbE5vdDoKKyAgICAgICAgICAgIGNhc2Ug
RU9wTG9naWNhbE5vdENvbXBvbmVudFdpc2U6CiAgICAgICAgICAgICAgICAgQVNTRVJUKGdldFR5
cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sKTsKICAgICAgICAgICAgICAgICByZXN1bHRB
cnJheVtpXS5zZXRCQ29uc3QoIW9wZXJhbmRBcnJheVtpXS5nZXRCQ29uc3QoKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CkBAIC0yMDUyLDcgKzI0MTQsODIgQEAgVENvbnN0YW50VW5pb24gKlRJ
bnRlcm1Db25zdGFudFVuaW9uOjpmb2xkVW5hcnlDb21wb25lbnRXaXNlKFRPcGVyYXRvciBvcCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhZ25v
c3RpY3MsICZyZXN1bHRBcnJheVtpXSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9Ci0KKyAgICAgICAgICAgIGNhc2UgRU9wQml0ZmllbGRSZXZlcnNlOgorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbHVlOworICAgICAgICAgICAgICAgIGlm
IChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50KQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFu
ZEFycmF5W2ldLmdldElDb25zdCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGdl
dFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRVSW50KTsKKyAgICAgICAgICAgICAgICAgICAg
dmFsdWUgPSBvcGVyYW5kQXJyYXlbaV0uZ2V0VUNvbnN0KCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIHVpbnQzMl90IHJlc3VsdCA9IGdsOjpCaXRmaWVsZFJldmVyc2UodmFs
dWUpOworICAgICAgICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0
SW50KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlb
aV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludDMyX3Q+KHJlc3VsdCkpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3QocmVzdWx0KTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjYXNlIEVPcEJpdENvdW50OgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVpbnQz
Ml90IHZhbHVlOworICAgICAgICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkg
PT0gRWJ0SW50KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUg
PSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFuZEFycmF5W2ldLmdldElDb25zdCgpKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBF
YnRVSW50KTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBvcGVyYW5kQXJyYXlbaV0uZ2V0
VUNvbnN0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGludCByZXN1bHQg
PSBnbDo6Qml0Q291bnQodmFsdWUpOworICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNl
dElDb25zdChyZXN1bHQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgY2FzZSBFT3BGaW5kTFNCOgorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHVpbnQzMl90IHZhbHVlOworICAgICAgICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFz
aWNUeXBlKCkgPT0gRWJ0SW50KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFuZEFycmF5W2ldLmdldElDb25z
dCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5
cGUoKSA9PSBFYnRVSW50KTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBvcGVyYW5kQXJy
YXlbaV0uZ2V0VUNvbnN0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJl
c3VsdEFycmF5W2ldLnNldElDb25zdChnbDo6RmluZExTQih2YWx1ZSkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBFT3BGaW5kTVNCOgor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbHVlOworICAgICAgICAg
ICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50KQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGludFZhbHVlID0gb3BlcmFuZEFycmF5
W2ldLmdldElDb25zdCgpOworICAgICAgICAgICAgICAgICAgICB2YWx1ZSAgICAgICAgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4oaW50VmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoaW50
VmFsdWUgPCAwKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBMb29rIGZvciB6ZXJvIGluc3RlYWQgb2Ygb25lIGluIHZhbHVlLiBUaGlzIGFsc28gaGFu
ZGxlcyB0aGUgaW50VmFsdWUgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0xIHNwZWNp
YWwgY2FzZSwgd2hlcmUgdGhlIHJldHVybiB2YWx1ZSBuZWVkcyB0byBiZSAtMS4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlID0gfnZhbHVlOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0g
RWJ0VUludCk7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gb3BlcmFuZEFycmF5W2ldLmdl
dFVDb25zdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXN1bHRBcnJh
eVtpXS5zZXRJQ29uc3QoZ2w6OkZpbmRNU0IodmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgRU9wREZkeDoKICAgICAgICAgICAg
IGNhc2UgRU9wREZkeToKICAgICAgICAgICAgIGNhc2UgRU9wRndpZHRoOgpAQCAtMjEzNSw3ICsy
NTcyLDcgQEAgVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpGb2xkQWdncmVn
YXRlQ29uc3RydWN0b3IoVEludGVybUFnZ3JlZ2F0ZQogICAgICAgICAgICAgaW50IGFyZ3VtZW50
Q29scyA9IGFyZ3VtZW50Q29uc3RhbnQtPmdldFR5cGUoKS5nZXRDb2xzKCk7CiAgICAgICAgICAg
ICBpbnQgYXJndW1lbnRSb3dzID0gYXJndW1lbnRDb25zdGFudC0+Z2V0VHlwZSgpLmdldFJvd3Mo
KTsKICAgICAgICAgICAgIGludCByZXN1bHRDb2xzICAgPSBhZ2dyZWdhdGUtPmdldFR5cGUoKS5n
ZXRDb2xzKCk7Ci0gICAgICAgICAgICBpbnQgcmVzdWx0Um93cyA9IGFnZ3JlZ2F0ZS0+Z2V0VHlw
ZSgpLmdldFJvd3MoKTsKKyAgICAgICAgICAgIGludCByZXN1bHRSb3dzICAgPSBhZ2dyZWdhdGUt
PmdldFR5cGUoKS5nZXRSb3dzKCk7CiAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wg
PCByZXN1bHRDb2xzOyArK2NvbCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBmb3Ig
KGludCByb3cgPSAwOyByb3cgPCByZXN1bHRSb3dzOyArK3JvdykKQEAgLTIxODIsNTkwICsyNjE5
LDY4NiBAQCBUQ29uc3RhbnRVbmlvbiAqVEludGVybUNvbnN0YW50VW5pb246OkZvbGRBZ2dyZWdh
dGVDb25zdHJ1Y3RvcihUSW50ZXJtQWdncmVnYXRlCiBUQ29uc3RhbnRVbmlvbiAqVEludGVybUNv
bnN0YW50VW5pb246OkZvbGRBZ2dyZWdhdGVCdWlsdEluKFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3Jl
Z2F0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVERpYWdub3N0aWNzICpkaWFnbm9zdGljcykKIHsKLSAgICBUT3BlcmF0b3Igb3Ag
PSBhZ2dyZWdhdGUtPmdldE9wKCk7Ci0gICAgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9IGFn
Z3JlZ2F0ZS0+Z2V0U2VxdWVuY2UoKTsKLSAgICB1bnNpZ25lZCBpbnQgcGFyYW1zQ291bnQgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHNlcXVlbmNlLT5zaXplKCkpOwotICAgIHN0ZDo6dmVj
dG9yPGNvbnN0IFRDb25zdGFudFVuaW9uICo+IHVuaW9uQXJyYXlzKHBhcmFtc0NvdW50KTsKLSAg
ICBzdGQ6OnZlY3RvcjxzaXplX3Q+IG9iamVjdFNpemVzKHBhcmFtc0NvdW50KTsKKyAgICBUT3Bl
cmF0b3Igb3AgICAgICAgICAgICAgID0gYWdncmVnYXRlLT5nZXRPcCgpOworICAgIFRJbnRlcm1T
ZXF1ZW5jZSAqYXJndW1lbnRzID0gYWdncmVnYXRlLT5nZXRTZXF1ZW5jZSgpOworICAgIHVuc2ln
bmVkIGludCBhcmdzQ291bnQgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihhcmd1bWVu
dHMtPnNpemUoKSk7CisgICAgc3RkOjp2ZWN0b3I8Y29uc3QgVENvbnN0YW50VW5pb24gKj4gdW5p
b25BcnJheXMoYXJnc0NvdW50KTsKKyAgICBzdGQ6OnZlY3RvcjxzaXplX3Q+IG9iamVjdFNpemVz
KGFyZ3NDb3VudCk7CiAgICAgc2l6ZV90IG1heE9iamVjdFNpemUgPSAwOwogICAgIFRCYXNpY1R5
cGUgYmFzaWNUeXBlID0gRWJ0Vm9pZDsKICAgICBUU291cmNlTG9jIGxvYzsKLSAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IHBhcmFtc0NvdW50OyBpKyspCisgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBhcmdzQ291bnQ7IGkrKykKICAgICB7Ci0gICAgICAgIFRJbnRlcm1D
b25zdGFudFVuaW9uICpwYXJhbUNvbnN0YW50ID0gKCpzZXF1ZW5jZSlbaV0tPmdldEFzQ29uc3Rh
bnRVbmlvbigpOwotICAgICAgICBBU1NFUlQocGFyYW1Db25zdGFudCAhPSBudWxscHRyKTsgLy8g
U2hvdWxkIGJlIGNoZWNrZWQgYWxyZWFkeS4KKyAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24g
KmFyZ0NvbnN0YW50ID0gKCphcmd1bWVudHMpW2ldLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKKyAg
ICAgICAgQVNTRVJUKGFyZ0NvbnN0YW50ICE9IG51bGxwdHIpOyAgLy8gU2hvdWxkIGJlIGNoZWNr
ZWQgYWxyZWFkeS4KIAogICAgICAgICBpZiAoaSA9PSAwKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBiYXNpY1R5cGUgPSBwYXJhbUNvbnN0YW50LT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCk7Ci0g
ICAgICAgICAgICBsb2MgPSBwYXJhbUNvbnN0YW50LT5nZXRMaW5lKCk7CisgICAgICAgICAgICBi
YXNpY1R5cGUgPSBhcmdDb25zdGFudC0+Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpOworICAgICAg
ICAgICAgbG9jICAgICAgID0gYXJnQ29uc3RhbnQtPmdldExpbmUoKTsKICAgICAgICAgfQotICAg
ICAgICB1bmlvbkFycmF5c1tpXSA9IHBhcmFtQ29uc3RhbnQtPmdldFVuaW9uQXJyYXlQb2ludGVy
KCk7Ci0gICAgICAgIG9iamVjdFNpemVzW2ldID0gcGFyYW1Db25zdGFudC0+Z2V0VHlwZSgpLmdl
dE9iamVjdFNpemUoKTsKKyAgICAgICAgdW5pb25BcnJheXNbaV0gPSBhcmdDb25zdGFudC0+Z2V0
VW5pb25BcnJheVBvaW50ZXIoKTsKKyAgICAgICAgb2JqZWN0U2l6ZXNbaV0gPSBhcmdDb25zdGFu
dC0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsKICAgICAgICAgaWYgKG9iamVjdFNpemVzW2ld
ID4gbWF4T2JqZWN0U2l6ZSkKICAgICAgICAgICAgIG1heE9iamVjdFNpemUgPSBvYmplY3RTaXpl
c1tpXTsKICAgICB9CiAKLSAgICBpZiAoISgqc2VxdWVuY2UpWzBdLT5nZXRBc1R5cGVkKCktPmlz
TWF0cml4KCkgJiYgYWdncmVnYXRlLT5nZXRPcCgpICE9IEVPcE91dGVyUHJvZHVjdCkKKyAgICBp
ZiAoISgqYXJndW1lbnRzKVswXS0+Z2V0QXNUeXBlZCgpLT5pc01hdHJpeCgpICYmIGFnZ3JlZ2F0
ZS0+Z2V0T3AoKSAhPSBFT3BPdXRlclByb2R1Y3QpCiAgICAgewotICAgICAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IHBhcmFtc0NvdW50OyBpKyspCisgICAgICAgIGZvciAodW5zaWdu
ZWQgaW50IGkgPSAwOyBpIDwgYXJnc0NvdW50OyBpKyspCiAgICAgICAgICAgICBpZiAob2JqZWN0
U2l6ZXNbaV0gIT0gbWF4T2JqZWN0U2l6ZSkKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1tp
XSA9IFZlY3Rvcml6ZSgqdW5pb25BcnJheXNbaV0sIG1heE9iamVjdFNpemUpOwogICAgIH0KIAog
ICAgIFRDb25zdGFudFVuaW9uICpyZXN1bHRBcnJheSA9IG51bGxwdHI7Ci0gICAgaWYgKHBhcmFt
c0NvdW50ID09IDIpCisKKyAgICBzd2l0Y2ggKG9wKQogICAgIHsKLSAgICAgICAgLy8KLSAgICAg
ICAgLy8gQmluYXJ5IGJ1aWx0LWluCi0gICAgICAgIC8vCi0gICAgICAgIHN3aXRjaCAob3ApCisg
ICAgICAgIGNhc2UgRU9wQXRhbjoKICAgICAgICAgewotICAgICAgICAgICAgY2FzZSBFT3BBdGFu
OgorICAgICAgICAgICAgQVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCk7CisgICAgICAgICAg
ICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIEFTU0VSVChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpOwot
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVj
dFNpemVdOwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0
U2l6ZTsgaSsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQg
eSA9IHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAgICAgICBm
bG9hdCB4ID0gdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCk7Ci0gICAgICAgICAgICAgICAg
ICAgIC8vIFJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiB4IGFuZCB5IGFyZSBib3RoIDAuCi0gICAg
ICAgICAgICAgICAgICAgIGlmICh4ID09IDAuMGYgJiYgeSA9PSAwLjBmKQotICAgICAgICAgICAg
ICAgICAgICAgICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xkaW5nRXJyb3IobG9jLCBvcCwgYmFzaWNU
eXBlLCBkaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZyZXN1bHRBcnJheVtpXSk7Ci0gICAgICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChhdGFu
MmYoeSwgeCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBmbG9hdCB5ID0gdW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCk7Cisg
ICAgICAgICAgICAgICAgZmxvYXQgeCA9IHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpOwor
ICAgICAgICAgICAgICAgIC8vIFJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiB4IGFuZCB5IGFyZSBi
b3RoIDAuCisgICAgICAgICAgICAgICAgaWYgKHggPT0gMC4wZiAmJiB5ID09IDAuMGYpCisgICAg
ICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGxvYywgb3AsIGJh
c2ljVHlwZSwgZGlhZ25vc3RpY3MsICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoYXRhbjJm
KHksIHgpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAK
LSAgICAgICAgICAgIGNhc2UgRU9wUG93OgorICAgICAgICBjYXNlIEVPcFBvdzoKKyAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCk7CisgICAgICAgICAg
ICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIEFTU0VSVChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpOwot
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVj
dFNpemVdOwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0
U2l6ZTsgaSsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQg
eCA9IHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAgICAgICBm
bG9hdCB5ID0gdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCk7Ci0gICAgICAgICAgICAgICAg
ICAgIC8vIFJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiB4IDwgMC4KLSAgICAgICAgICAgICAgICAg
ICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIHggPSAwIGFuZCB5IDw9IDAuCi0gICAgICAg
ICAgICAgICAgICAgIGlmICh4IDwgMC4wZikKLSAgICAgICAgICAgICAgICAgICAgICAgIFVuZGVm
aW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGxvYywgb3AsIGJhc2ljVHlwZSwgZGlhZ25vc3RpY3Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
cmVzdWx0QXJyYXlbaV0pOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4ID09IDAuMGYg
JiYgeSA8PSAwLjBmKQotICAgICAgICAgICAgICAgICAgICAgICAgVW5kZWZpbmVkQ29uc3RhbnRG
b2xkaW5nRXJyb3IobG9jLCBvcCwgYmFzaWNUeXBlLCBkaWFnbm9zdGljcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXN1bHRBcnJheVtp
XSk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdEFycmF5W2ldLnNldEZDb25zdChwb3dmKHgsIHkpKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZmxvYXQgeCA9IHVuaW9uQXJy
YXlzWzBdW2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgIGZsb2F0IHkgPSB1bmlvbkFy
cmF5c1sxXVtpXS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAvLyBSZXN1bHRzIGFyZSB1
bmRlZmluZWQgaWYgeCA8IDAuCisgICAgICAgICAgICAgICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZp
bmVkIGlmIHggPSAwIGFuZCB5IDw9IDAuCisgICAgICAgICAgICAgICAgaWYgKHggPCAwLjBmKQor
ICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihsb2MsIG9w
LCBiYXNpY1R5cGUsIGRpYWdub3N0aWNzLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKHggPT0gMC4wZiAmJiB5IDw9IDAuMGYpCisgICAgICAgICAgICAgICAgICAg
IFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGxvYywgb3AsIGJhc2ljVHlwZSwgZGlhZ25v
c3RpY3MsICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QocG93Zih4LCB5KSk7CiAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBjYXNl
IEVPcE1vZDoKKyAgICAgICAgY2FzZSBFT3BNb2Q6CisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpOworICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBu
ZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0KTsKLSAgICAgICAgICAgICAgICBy
ZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKLSAgICAgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IHggPSB1bmlvbkFycmF5c1sw
XVtpXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgeSA9IHVuaW9uQXJy
YXlzWzFdW2ldLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtp
XS5zZXRGQ29uc3QoeCAtIHkgKiBmbG9vcmYoeCAvIHkpKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZmxvYXQgeCA9IHVuaW9uQXJy
YXlzWzBdW2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgIGZsb2F0IHkgPSB1bmlvbkFy
cmF5c1sxXVtpXS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5z
ZXRGQ29uc3QoeCAtIHkgKiBmbG9vcmYoeCAvIHkpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CiAKLSAgICAgICAgICAgIGNhc2UgRU9wTWluOgorICAgICAg
ICBjYXNlIEVPcE1pbjoKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcg
VENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKLSAg
ICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKGJhc2ljVHlwZSkKICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYmFzaWNUeXBlKQotICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChzdGQ6Om1pbih1bmlvbkFy
cmF5c1swXVtpXS5nZXRGQ29uc3QoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0
KCkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dEFycmF5W2ldLnNldElDb25zdChzdGQ6Om1pbih1bmlvbkFycmF5c1swXVtpXS5nZXRJQ29uc3Qo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0SUNvbnN0KCkpKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUlu
dDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3Qo
c3RkOjptaW4odW5pb25BcnJheXNbMF1baV0uZ2V0VUNvbnN0KCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlz
WzFdW2ldLmdldFVDb25zdCgpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9h
dDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1pbih1bmlvbkFycmF5c1swXVtpXS5nZXRG
Q29uc3QoKSwgdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCkpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6Om1pbih1bmlvbkFycmF5c1swXVtpXS5nZXRJQ29uc3QoKSwg
dW5pb25BcnJheXNbMV1baV0uZ2V0SUNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3QoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptaW4odW5pb25BcnJheXNbMF1baV0uZ2V0VUNvbnN0KCksIHVuaW9uQXJy
YXlzWzFdW2ldLmdldFVDb25zdCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBjYXNlIEVPcE1heDoKKyAgICAgICAg
Y2FzZSBFT3BNYXg6CisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRD
b25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07Ci0gICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCisg
ICAgICAgICAgICAgICAgc3dpdGNoIChiYXNpY1R5cGUpCiAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKGJhc2ljVHlwZSkKLSAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3Qoc3RkOjptYXgodW5pb25BcnJh
eXNbMF1baV0uZ2V0RkNvbnN0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgp
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRB
cnJheVtpXS5zZXRJQ29uc3Qoc3RkOjptYXgodW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0VUNvbnN0KHN0
ZDo6bWF4KHVuaW9uQXJyYXlzWzBdW2ldLmdldFVDb25zdCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sx
XVtpXS5nZXRVQ29uc3QoKSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6
CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXgodW5pb25BcnJheXNbMF1baV0uZ2V0RkNv
bnN0KCksIHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3QoCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptYXgodW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCksIHVu
aW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0VUNvbnN0KAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bWF4KHVuaW9uQXJyYXlzWzBdW2ldLmdldFVDb25zdCgpLCB1bmlvbkFycmF5
c1sxXVtpXS5nZXRVQ29uc3QoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KIAotICAgICAgICAgICAgY2FzZSBFT3BTdGVwOgorICAgICAgICBj
YXNlIEVPcFN0ZXA6CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChiYXNpY1R5cGUgPT0g
RWJ0RmxvYXQpOworICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25b
bWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9i
amVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3Qo
CisgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpIDwgdW5p
b25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkgPyAwLjBmIDogMS4wZik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgRU9wTGVzc1RoYW5Db21wb25lbnRXaXNl
OgorICAgICAgICB7CisgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlv
blttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4
T2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEFTU0VSVChi
YXNpY1R5cGUgPT0gRWJ0RmxvYXQpOwotICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3
IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwotICAgICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQotICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoCi0gICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFy
cmF5c1sxXVtpXS5nZXRGQ29uc3QoKSA8IHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpID8g
MC4wZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDEuMGYpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHN3aXRjaCAoYmFzaWNUeXBlKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5n
ZXRGQ29uc3QoKSA8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ld
LmdldElDb25zdCgpIDwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29uc3QoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBd
W2ldLmdldFVDb25zdCgpIDwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBjYXNlIEVPcExlc3NUaGFuOgorICAgICAgICBj
YXNlIEVPcExlc3NUaGFuRXF1YWxDb21wb25lbnRXaXNlOgorICAgICAgICB7CisgICAgICAgICAg
ICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9u
W21heE9iamVjdFNpemVdOwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bWF4T2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgIHN3aXRjaCAoYmFzaWNUeXBlKQog
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChiYXNpY1R5cGUp
Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0
RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNv
bnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpIDwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0RkNv
bnN0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldElDb25zdCgpIDwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25B
cnJheXNbMV1baV0uZ2V0SUNvbnN0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtp
XS5nZXRVQ29uc3QoKSA8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldFVDb25zdCgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBjYXNlIEVidEZsb2F0OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpIDw9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNb
MV1baV0uZ2V0RkNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldElDb25zdCgpIDw9Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJh
eXNbMV1baV0uZ2V0SUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRVQ29uc3QoKSA8
PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9u
QXJyYXlzWzFdW2ldLmdldFVDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CiAKLSAgICAgICAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVh
bDoKKyAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkNvbXBvbmVudFdpc2U6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNp
emVdOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBp
KyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENv
bnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgc3dpdGNoIChi
YXNpY1R5cGUpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KGJhc2ljVHlwZSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJh
eVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkgPD0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNb
MV1baV0uZ2V0RkNvbnN0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldElD
b25zdCgpIDw9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5p
b25BcnJheXNbMF1baV0uZ2V0VUNvbnN0KCkgPD0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0VUNvbnN0KCkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0RkNv
bnN0KCkgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRJ
Q29uc3QoKSA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5pb25BcnJheXNbMV1baV0uZ2V0SUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5n
ZXRVQ29uc3QoKSA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0VUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFsQ29tcG9uZW50V2lz
ZToKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5p
b25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1h
eE9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXN1bHRB
cnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKLSAgICAgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGJhc2ljVHlwZSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAoYmFzaWNUeXBlKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3Qo
KSA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5
c1swXVtpXS5nZXRJQ29uc3QoKSA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgRWJ0VUludDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5z
ZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0VUNvbnN0KCkgPgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5n
ZXRVQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1sw
XVtpXS5nZXRGQ29uc3QoKSA+PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5
c1swXVtpXS5nZXRJQ29uc3QoKSA+PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6
CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25B
cnJheXNbMF1baV0uZ2V0VUNvbnN0KCkgPj0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWw6Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFT3BFcXVhbENvbXBvbmVu
dFdpc2U6CisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFu
dFVuaW9uW21heE9iamVjdFNpemVdOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtYXhPYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07Ci0gICAgICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCisgICAgICAg
ICAgICAgICAgc3dpdGNoIChiYXNpY1R5cGUpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKGJhc2ljVHlwZSkKLSAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0RkNv
bnN0KCkgPj0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9u
QXJyYXlzWzBdW2ldLmdldElDb25zdCgpID49Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgRWJ0VUludDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJh
eVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0VUNvbnN0KCkgPj0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNb
MV1baV0uZ2V0VUNvbnN0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6
CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25B
cnJheXNbMF1baV0uZ2V0RkNvbnN0KCkgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJ
bnQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5p
b25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCkgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29uc3QoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBF
YnRVSW50OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0
KHVuaW9uQXJyYXlzWzBdW2ldLmdldFVDb25zdCgpID09CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0VUNvbnN0KCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgRWJ0Qm9vbDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJD
b25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRCQ29uc3QoKSA9PQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldEJDb25z
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKLSAgICAgICAgICAgIGNhc2UgRU9w
VmVjdG9yRXF1YWw6CisgICAgICAgIGNhc2UgRU9wTm90RXF1YWxDb21wb25lbnRXaXNlOgorICAg
ICAgICB7CisgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhP
YmplY3RTaXplXTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0
U2l6ZTsgaSsrKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0g
bmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwotICAgICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgIHN3
aXRjaCAoYmFzaWNUeXBlKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChiYXNpY1R5cGUpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpID09Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9u
QXJyYXlzWzFdW2ldLmdldEZDb25zdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtp
XS5nZXRJQ29uc3QoKSA9PQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29uc3QoKSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVi
dFVJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNv
bnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldFVDb25zdCgpID09Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldFVD
b25zdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0QkNvbnN0KCkgPT0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5p
b25BcnJheXNbMV1baV0uZ2V0QkNvbnN0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
RWJ0RmxvYXQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29u
c3QodW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkgIT0KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3Qo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
Y2FzZSBFYnRJbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRC
Q29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCkgIT0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29u
c3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0u
c2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldFVDb25zdCgpICE9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0
VUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgRWJ0Qm9vbDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5
W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRCQ29uc3QoKSAhPQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ld
LmdldEJDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBFT3BEaXN0YW5jZToKKyAgICAgICAgeworICAgICAg
ICAgICAgQVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCk7CisgICAgICAgICAgICBUQ29uc3Rh
bnRVbmlvbiAqZGlzdGFuY2VBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXpl
XTsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5ICAgICAgICAgICAgICAgICAgID0gbmV3IFRDb25z
dGFudFVuaW9uKCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVj
dFNpemU7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmbG9hdCB4ID0gdW5p
b25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgZmxvYXQgeSA9IHVu
aW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgIGRpc3RhbmNlQXJy
YXlbaV0uc2V0RkNvbnN0KHggLSB5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlc3Vs
dEFycmF5LT5zZXRGQ29uc3QoVmVjdG9yTGVuZ3RoKGRpc3RhbmNlQXJyYXksIG1heE9iamVjdFNp
emUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBFT3BE
b3Q6CisgICAgICAgICAgICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0KTsKKyAgICAgICAg
ICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uKCk7CisgICAgICAgICAgICByZXN1
bHRBcnJheS0+c2V0RkNvbnN0KFZlY3RvckRvdFByb2R1Y3QodW5pb25BcnJheXNbMF0sIHVuaW9u
QXJyYXlzWzFdLCBtYXhPYmplY3RTaXplKSk7CisgICAgICAgICAgICBicmVhazsKIAotICAgICAg
ICAgICAgY2FzZSBFT3BWZWN0b3JOb3RFcXVhbDoKKyAgICAgICAgY2FzZSBFT3BDcm9zczoKKyAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCAmJiBtYXhP
YmplY3RTaXplID09IDMpOworICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50
VW5pb25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAgICBmbG9hdCB4MCAgICA9IHVuaW9uQXJy
YXlzWzBdWzBdLmdldEZDb25zdCgpOworICAgICAgICAgICAgZmxvYXQgeDEgICAgPSB1bmlvbkFy
cmF5c1swXVsxXS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgIGZsb2F0IHgyICAgID0gdW5pb25B
cnJheXNbMF1bMl0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICBmbG9hdCB5MCAgICA9IHVuaW9u
QXJyYXlzWzFdWzBdLmdldEZDb25zdCgpOworICAgICAgICAgICAgZmxvYXQgeTEgICAgPSB1bmlv
bkFycmF5c1sxXVsxXS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgIGZsb2F0IHkyICAgID0gdW5p
b25BcnJheXNbMV1bMl0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICByZXN1bHRBcnJheVswXS5z
ZXRGQ29uc3QoeDEgKiB5MiAtIHkxICogeDIpOworICAgICAgICAgICAgcmVzdWx0QXJyYXlbMV0u
c2V0RkNvbnN0KHgyICogeTAgLSB5MiAqIHgwKTsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5WzJd
LnNldEZDb25zdCh4MCAqIHkxIC0geTAgKiB4MSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorCisgICAgICAgIGNhc2UgRU9wUmVmbGVjdDoKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCk7CisgICAgICAgICAgICAvLyBnZW5UeXBlIHJl
ZmxlY3QgKGdlblR5cGUgSSwgZ2VuVHlwZSBOKSA6CisgICAgICAgICAgICAvLyAgICAgRm9yIHRo
ZSBpbmNpZGVudCB2ZWN0b3IgSSBhbmQgc3VyZmFjZSBvcmllbnRhdGlvbiBOLCByZXR1cm5zIHRo
ZSByZWZsZWN0aW9uCisgICAgICAgICAgICAvLyAgICAgZGlyZWN0aW9uOgorICAgICAgICAgICAg
Ly8gICAgIEkgLSAyICogZG90KE4sIEkpICogTi4KKyAgICAgICAgICAgIHJlc3VsdEFycmF5ICAg
ICAgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAgICBmbG9h
dCBkb3RQcm9kdWN0ID0gVmVjdG9yRG90UHJvZHVjdCh1bmlvbkFycmF5c1sxXSwgdW5pb25BcnJh
eXNbMF0sIG1heE9iamVjdFNpemUpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtYXhPYmplY3RTaXplOyBpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07Ci0gICAgICAgICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCisgICAgICAg
ICAgICAgICAgZmxvYXQgcmVzdWx0ID0gdW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkgLQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIuMGYgKiBkb3RQcm9kdWN0ICogdW5pb25B
cnJheXNbMV1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0u
c2V0RkNvbnN0KHJlc3VsdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2UgRU9wTXVsTWF0cml4Q29tcG9uZW50V2lzZToKKyAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCAmJiAoKmFyZ3Vt
ZW50cylbMF0tPmdldEFzVHlwZWQoKS0+aXNNYXRyaXgoKSAmJgorICAgICAgICAgICAgICAgICAg
ICgqYXJndW1lbnRzKVsxXS0+Z2V0QXNUeXBlZCgpLT5pc01hdHJpeCgpKTsKKyAgICAgICAgICAg
IC8vIFBlcmZvcm0gY29tcG9uZW50LXdpc2UgbWF0cml4IG11bHRpcGxpY2F0aW9uLgorICAgICAg
ICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07Cisg
ICAgICAgICAgICBpbnQgc2l6ZSAgICA9ICgqYXJndW1lbnRzKVswXS0+Z2V0QXNUeXBlZCgpLT5n
ZXROb21pbmFsU2l6ZSgpOworICAgICAgICAgICAgYW5nbGU6Ok1hdHJpeDxmbG9hdD4gcmVzdWx0
ID0KKyAgICAgICAgICAgICAgICBHZXRNYXRyaXgodW5pb25BcnJheXNbMF0sIHNpemUpLmNvbXBN
dWx0KEdldE1hdHJpeCh1bmlvbkFycmF5c1sxXSwgc2l6ZSkpOworICAgICAgICAgICAgU2V0VW5p
b25BcnJheUZyb21NYXRyaXgocmVzdWx0LCByZXN1bHRBcnJheSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgRU9wT3V0ZXJQcm9kdWN0OgorICAgICAgICB7
CisgICAgICAgICAgICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0KTsKKyAgICAgICAgICAg
IHNpemVfdCBudW1Sb3dzID0gKCphcmd1bWVudHMpWzBdLT5nZXRBc1R5cGVkKCktPmdldFR5cGUo
KS5nZXRPYmplY3RTaXplKCk7CisgICAgICAgICAgICBzaXplX3QgbnVtQ29scyA9ICgqYXJndW1l
bnRzKVsxXS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAg
ICAgICAgcmVzdWx0QXJyYXkgICAgPSBuZXcgVENvbnN0YW50VW5pb25bbnVtUm93cyAqIG51bUNv
bHNdOworICAgICAgICAgICAgYW5nbGU6Ok1hdHJpeDxmbG9hdD4gcmVzdWx0ID0KKyAgICAgICAg
ICAgICAgICBHZXRNYXRyaXgodW5pb25BcnJheXNbMF0sIHN0YXRpY19jYXN0PGludD4obnVtUm93
cyksIDEpCisgICAgICAgICAgICAgICAgICAgIC5vdXRlclByb2R1Y3QoR2V0TWF0cml4KHVuaW9u
QXJyYXlzWzFdLCAxLCBzdGF0aWNfY2FzdDxpbnQ+KG51bUNvbHMpKSk7CisgICAgICAgICAgICBT
ZXRVbmlvbkFycmF5RnJvbU1hdHJpeChyZXN1bHQsIHJlc3VsdEFycmF5KTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBFT3BDbGFtcDoKKyAgICAgICAgewor
ICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6
ZV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkr
KykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGJhc2ljVHlwZSkKICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYmFzaWNUeXBlKQor
ICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgogICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5n
ZXRGQ29uc3QoKSAhPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidElu
dDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3Qo
dW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCkgIT0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0SUNvbnN0
KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBFYnRVSW50OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRVQ29uc3QoKSAhPQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFy
cmF5c1sxXVtpXS5nZXRVQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ld
LmdldEJDb25zdCgpICE9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldEJDb25zdCgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHgg
ICA9IHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgbWluID0gdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdCBtYXggPSB1bmlvbkFycmF5c1syXVtpXS5nZXRGQ29uc3QoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiBtaW4g
PiBtYXguCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluID4gbWF4KQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGxvYywgb3As
IGJhc2ljVHlwZSwgZGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc3VsdEFycmF5W2ldKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJh
eVtpXS5zZXRGQ29uc3QoZ2w6OmNsYW1wKHgsIG1pbiwgbWF4KSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgeCAgID0gdW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgbWluID0gdW5pb25BcnJheXNbMV1baV0uZ2V0SUNvbnN0KCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF4ID0gdW5pb25BcnJheXNbMl1baV0uZ2V0
SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXN1bHRzIGFyZSB1bmRlZmlu
ZWQgaWYgbWluID4gbWF4LgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbiA+IG1heCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJv
cihsb2MsIG9wLCBiYXNpY1R5cGUsIGRpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXN1bHRBcnJheVtpXSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KGdsOjpjbGFtcCh4LCBtaW4sIG1heCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgeCAgID0gdW5pb25BcnJheXNbMF1baV0uZ2V0
VUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWluID0gdW5p
b25BcnJheXNbMV1baV0uZ2V0VUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgbWF4ID0gdW5pb25BcnJheXNbMl1baV0uZ2V0VUNvbnN0KCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBSZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYgbWluID4gbWF4LgorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbiA+IG1heCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNpY1R5cGUs
IGRpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0VUNv
bnN0KGdsOjpjbGFtcCh4LCBtaW4sIG1heCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCi0gICAgICAg
ICAgICBjYXNlIEVPcERpc3RhbmNlOgorICAgICAgICBjYXNlIEVPcE1peDoKKyAgICAgICAgewor
ICAgICAgICAgICAgQVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCk7CisgICAgICAgICAgICBy
ZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIEFTU0VSVChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpOwotICAg
ICAgICAgICAgICAgIFRDb25zdGFudFVuaW9uICpkaXN0YW5jZUFycmF5ID0gbmV3IFRDb25zdGFu
dFVuaW9uW21heE9iamVjdFNpemVdOwotICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ICAgICAg
ICAgICAgICAgICAgID0gbmV3IFRDb25zdGFudFVuaW9uKCk7Ci0gICAgICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAg
ZmxvYXQgeCAgICAgICAgID0gdW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAg
ICAgICAgICAgZmxvYXQgeSAgICAgICAgID0gdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCk7
CisgICAgICAgICAgICAgICAgVEJhc2ljVHlwZSB0eXBlID0gKCphcmd1bWVudHMpWzJdLT5nZXRB
c1R5cGVkKCktPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKTsKKyAgICAgICAgICAgICAgICBpZiAo
dHlwZSA9PSBFYnRGbG9hdCkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IGZsb2F0IHggPSB1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAg
ICAgICAgZmxvYXQgeSA9IHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpOwotICAgICAgICAg
ICAgICAgICAgICBkaXN0YW5jZUFycmF5W2ldLnNldEZDb25zdCh4IC0geSk7CisgICAgICAgICAg
ICAgICAgICAgIC8vIFJldHVybnMgdGhlIGxpbmVhciBibGVuZCBvZiB4IGFuZCB5LCBpLmUuLCB4
ICogKDEgLSBhKSArIHkgKiBhLgorICAgICAgICAgICAgICAgICAgICBmbG9hdCBhID0gdW5pb25B
cnJheXNbMl1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5
W2ldLnNldEZDb25zdCh4ICogKDEuMGYgLSBhKSArIHkgKiBhKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgZWxzZSAgLy8gM3JkIHBhcmFtZXRlciBpcyBFYnRCb29sCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBFYnRCb29s
KTsKKyAgICAgICAgICAgICAgICAgICAgLy8gU2VsZWN0cyB3aGljaCB2ZWN0b3IgZWFjaCByZXR1
cm5lZCBjb21wb25lbnQgY29tZXMgZnJvbS4KKyAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGEg
Y29tcG9uZW50IG9mIGEgdGhhdCBpcyBmYWxzZSwgdGhlIGNvcnJlc3BvbmRpbmcgY29tcG9uZW50
IG9mIHggaXMKKyAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuZWQuCisgICAgICAgICAgICAg
ICAgICAgIC8vIEZvciBhIGNvbXBvbmVudCBvZiBhIHRoYXQgaXMgdHJ1ZSwgdGhlIGNvcnJlc3Bv
bmRpbmcgY29tcG9uZW50IG9mIHkgaXMKKyAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuZWQu
CisgICAgICAgICAgICAgICAgICAgIGJvb2wgYSA9IHVuaW9uQXJyYXlzWzJdW2ldLmdldEJDb25z
dCgpOworICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoYSA/IHkg
OiB4KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXktPnNl
dEZDb25zdChWZWN0b3JMZW5ndGgoZGlzdGFuY2VBcnJheSwgbWF4T2JqZWN0U2l6ZSkpOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KIAotICAgICAgICAgICAgY2FzZSBFT3BEb3Q6Ci0gICAgICAgICAgICAgICAgQVNT
RVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkg
PSBuZXcgVENvbnN0YW50VW5pb24oKTsKLSAgICAgICAgICAgICAgICByZXN1bHRBcnJheS0+c2V0
RkNvbnN0KAotICAgICAgICAgICAgICAgICAgICBWZWN0b3JEb3RQcm9kdWN0KHVuaW9uQXJyYXlz
WzBdLCB1bmlvbkFycmF5c1sxXSwgbWF4T2JqZWN0U2l6ZSkpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotCi0gICAgICAgICAgICBjYXNlIEVPcENyb3NzOgotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIEFTU0VSVChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQgJiYgbWF4T2JqZWN0U2l6ZSA9
PSAzKTsKLSAgICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltt
YXhPYmplY3RTaXplXTsKLSAgICAgICAgICAgICAgICBmbG9hdCB4MCAgICA9IHVuaW9uQXJyYXlz
WzBdWzBdLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAgIGZsb2F0IHgxICAgID0gdW5pb25B
cnJheXNbMF1bMV0uZ2V0RkNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgZmxvYXQgeDIgICAgPSB1
bmlvbkFycmF5c1swXVsyXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAgICBmbG9hdCB5MCAg
ICA9IHVuaW9uQXJyYXlzWzFdWzBdLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAgIGZsb2F0
IHkxICAgID0gdW5pb25BcnJheXNbMV1bMV0uZ2V0RkNvbnN0KCk7Ci0gICAgICAgICAgICAgICAg
ZmxvYXQgeTIgICAgPSB1bmlvbkFycmF5c1sxXVsyXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAg
ICAgICByZXN1bHRBcnJheVswXS5zZXRGQ29uc3QoeDEgKiB5MiAtIHkxICogeDIpOwotICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5WzFdLnNldEZDb25zdCh4MiAqIHkwIC0geTIgKiB4MCk7Ci0g
ICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbMl0uc2V0RkNvbnN0KHgwICogeTEgLSB5MCAqIHgx
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BTbW9vdGhTdGVwOgor
ICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0KTsKKyAg
ICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVd
OworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKysp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZmxvYXQgZWRnZTAgPSB1bmlvbkFycmF5
c1swXVtpXS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAgICBmbG9hdCBlZGdlMSA9IHVuaW9u
QXJyYXlzWzFdW2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgIGZsb2F0IHggICAgID0g
dW5pb25BcnJheXNbMl1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgLy8gUmVzdWx0
cyBhcmUgdW5kZWZpbmVkIGlmIGVkZ2UwID49IGVkZ2UxLgorICAgICAgICAgICAgICAgIGlmIChl
ZGdlMCA+PSBlZGdlMSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFVu
ZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGxvYywgb3AsIGJhc2ljVHlwZSwgZGlhZ25vc3Rp
Y3MsICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFJldHVybnMg
MC4wIGlmIHggPD0gZWRnZTAgYW5kIDEuMCBpZiB4ID49IGVkZ2UxIGFuZCBwZXJmb3JtcyBzbW9v
dGgKKyAgICAgICAgICAgICAgICAgICAgLy8gSGVybWl0ZSBpbnRlcnBvbGF0aW9uIGJldHdlZW4g
MCBhbmQgMSB3aGVuIGVkZ2UwIDwgeCA8IGVkZ2UxLgorICAgICAgICAgICAgICAgICAgICBmbG9h
dCB0ID0gZ2w6OmNsYW1wKCh4IC0gZWRnZTApIC8gKGVkZ2UxIC0gZWRnZTApLCAwLjBmLCAxLjBm
KTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KHQgKiB0ICog
KDMuMGYgLSAyLjBmICogdCkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKLSAgICAgICAgICAgIGNhc2UgRU9wUmVmbGVj
dDoKKyAgICAgICAgY2FzZSBFT3BMZGV4cDoKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0
QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0KTsKLSAgICAgICAg
ICAgICAgICAvLyBnZW5UeXBlIHJlZmxlY3QgKGdlblR5cGUgSSwgZ2VuVHlwZSBOKSA6Ci0gICAg
ICAgICAgICAgICAgLy8gICAgIEZvciB0aGUgaW5jaWRlbnQgdmVjdG9yIEkgYW5kIHN1cmZhY2Ug
b3JpZW50YXRpb24gTiwgcmV0dXJucyB0aGUgcmVmbGVjdGlvbgotICAgICAgICAgICAgICAgIC8v
ICAgICBkaXJlY3Rpb246Ci0gICAgICAgICAgICAgICAgLy8gICAgIEkgLSAyICogZG90KE4sIEkp
ICogTi4KLSAgICAgICAgICAgICAgICByZXN1bHRBcnJheSAgICAgID0gbmV3IFRDb25zdGFudFVu
aW9uW21heE9iamVjdFNpemVdOwotICAgICAgICAgICAgICAgIGZsb2F0IGRvdFByb2R1Y3QgPSBW
ZWN0b3JEb3RQcm9kdWN0KHVuaW9uQXJyYXlzWzFdLCB1bmlvbkFycmF5c1swXSwgbWF4T2JqZWN0
U2l6ZSk7Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RT
aXplOyBpKyspCisgICAgICAgICAgICAgICAgZmxvYXQgeCA9IHVuaW9uQXJyYXlzWzBdW2ldLmdl
dEZDb25zdCgpOworICAgICAgICAgICAgICAgIGludCBleHAgPSB1bmlvbkFycmF5c1sxXVtpXS5n
ZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICBpZiAoZXhwID4gMTI4KQogICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcmVzdWx0ID0gdW5pb25BcnJheXNbMF1b
aV0uZ2V0RkNvbnN0KCkgLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjBm
ICogZG90UHJvZHVjdCAqIHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpOwotICAgICAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QocmVzdWx0KTsKKyAgICAgICAgICAg
ICAgICAgICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xkaW5nRXJyb3IobG9jLCBvcCwgYmFzaWNUeXBl
LCBkaWFnbm9zdGljcywgJnJlc3VsdEFycmF5W2ldKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KGdsOjpMZGV4cCh4LCBleHApKTsKICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBjYXNlIEVPcE11bDoKKyAgICAgICAg
Y2FzZSBFT3BGYWNlRm9yd2FyZDoKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGJhc2lj
VHlwZSA9PSBFYnRGbG9hdCk7CisgICAgICAgICAgICAvLyBnZW5UeXBlIGZhY2Vmb3J3YXJkKGdl
blR5cGUgTiwgZ2VuVHlwZSBJLCBnZW5UeXBlIE5yZWYpIDoKKyAgICAgICAgICAgIC8vICAgICBJ
ZiBkb3QoTnJlZiwgSSkgPCAwIHJldHVybiBOLCBvdGhlcndpc2UgcmV0dXJuIC1OLgorICAgICAg
ICAgICAgcmVzdWx0QXJyYXkgICAgICA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXpl
XTsKKyAgICAgICAgICAgIGZsb2F0IGRvdFByb2R1Y3QgPSBWZWN0b3JEb3RQcm9kdWN0KHVuaW9u
QXJyYXlzWzJdLCB1bmlvbkFycmF5c1sxXSwgbWF4T2JqZWN0U2l6ZSk7CisgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0ICYmICgqc2VxdWVu
Y2UpWzBdLT5nZXRBc1R5cGVkKCktPmlzTWF0cml4KCkgJiYKLSAgICAgICAgICAgICAgICAgICAg
ICAgKCpzZXF1ZW5jZSlbMV0tPmdldEFzVHlwZWQoKS0+aXNNYXRyaXgoKSk7Ci0gICAgICAgICAg
ICAgICAgLy8gUGVyZm9ybSBjb21wb25lbnQtd2lzZSBtYXRyaXggbXVsdGlwbGljYXRpb24uCi0g
ICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0
U2l6ZV07Ci0gICAgICAgICAgICAgICAgaW50IHNpemUgICAgPSAoKnNlcXVlbmNlKVswXS0+Z2V0
QXNUeXBlZCgpLT5nZXROb21pbmFsU2l6ZSgpOwotICAgICAgICAgICAgICAgIGFuZ2xlOjpNYXRy
aXg8ZmxvYXQ+IHJlc3VsdCA9Ci0gICAgICAgICAgICAgICAgICAgIEdldE1hdHJpeCh1bmlvbkFy
cmF5c1swXSwgc2l6ZSkuY29tcE11bHQoR2V0TWF0cml4KHVuaW9uQXJyYXlzWzFdLCBzaXplKSk7
Ci0gICAgICAgICAgICAgICAgU2V0VW5pb25BcnJheUZyb21NYXRyaXgocmVzdWx0LCByZXN1bHRB
cnJheSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGRvdFBy
b2R1Y3QgPCAwKQorICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3Qo
dW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KC11bmlvbkFycmF5c1sw
XVtpXS5nZXRGQ29uc3QoKSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogCi0gICAgICAgICAgICBjYXNlIEVPcE91dGVyUHJvZHVjdDoKKyAgICAgICAgY2Fz
ZSBFT3BSZWZyYWN0OgorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoYmFzaWNUeXBlID09
IEVidEZsb2F0KTsKKyAgICAgICAgICAgIC8vIGdlblR5cGUgcmVmcmFjdChnZW5UeXBlIEksIGdl
blR5cGUgTiwgZmxvYXQgZXRhKSA6CisgICAgICAgICAgICAvLyAgICAgRm9yIHRoZSBpbmNpZGVu
dCB2ZWN0b3IgSSBhbmQgc3VyZmFjZSBub3JtYWwgTiwgYW5kIHRoZSByYXRpbyBvZiBpbmRpY2Vz
IG9mCisgICAgICAgICAgICAvLyAgICAgcmVmcmFjdGlvbiBldGEsCisgICAgICAgICAgICAvLyAg
ICAgcmV0dXJuIHRoZSByZWZyYWN0aW9uIHZlY3Rvci4gVGhlIHJlc3VsdCBpcyBjb21wdXRlZCBi
eQorICAgICAgICAgICAgLy8gICAgICAgICBrID0gMS4wIC0gZXRhICogZXRhICogKDEuMCAtIGRv
dChOLCBJKSAqIGRvdChOLCBJKSkKKyAgICAgICAgICAgIC8vICAgICAgICAgaWYgKGsgPCAwLjAp
CisgICAgICAgICAgICAvLyAgICAgICAgICAgICByZXR1cm4gZ2VuVHlwZSgwLjApCisgICAgICAg
ICAgICAvLyAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIC8vICAgICAgICAgICAgIHJldHVybiBl
dGEgKiBJIC0gKGV0YSAqIGRvdChOLCBJKSArIHNxcnQoaykpICogTgorICAgICAgICAgICAgcmVz
dWx0QXJyYXkgICAgICA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAg
ICAgICAgIGZsb2F0IGRvdFByb2R1Y3QgPSBWZWN0b3JEb3RQcm9kdWN0KHVuaW9uQXJyYXlzWzFd
LCB1bmlvbkFycmF5c1swXSwgbWF4T2JqZWN0U2l6ZSk7CisgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0KTsKLSAgICAgICAgICAgICAgICBz
aXplX3QgbnVtUm93cyA9ICgqc2VxdWVuY2UpWzBdLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKS5n
ZXRPYmplY3RTaXplKCk7Ci0gICAgICAgICAgICAgICAgc2l6ZV90IG51bUNvbHMgPSAoKnNlcXVl
bmNlKVsxXS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwotICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5ICAgID0gbmV3IFRDb25zdGFudFVuaW9uW251bVJvd3MgKiBu
dW1Db2xzXTsKLSAgICAgICAgICAgICAgICBhbmdsZTo6TWF0cml4PGZsb2F0PiByZXN1bHQgPQot
ICAgICAgICAgICAgICAgICAgICBHZXRNYXRyaXgodW5pb25BcnJheXNbMF0sIHN0YXRpY19jYXN0
PGludD4obnVtUm93cyksIDEpCi0gICAgICAgICAgICAgICAgICAgICAgICAub3V0ZXJQcm9kdWN0
KEdldE1hdHJpeCh1bmlvbkFycmF5c1sxXSwgMSwgc3RhdGljX2Nhc3Q8aW50PihudW1Db2xzKSkp
OwotICAgICAgICAgICAgICAgIFNldFVuaW9uQXJyYXlGcm9tTWF0cml4KHJlc3VsdCwgcmVzdWx0
QXJyYXkpOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGZsb2F0IGV0
YSA9IHVuaW9uQXJyYXlzWzJdW2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgIGZsb2F0
IGsgICA9IDEuMGYgLSBldGEgKiBldGEgKiAoMS4wZiAtIGRvdFByb2R1Y3QgKiBkb3RQcm9kdWN0
KTsKKyAgICAgICAgICAgICAgICBpZiAoayA8IDAuMGYpCisgICAgICAgICAgICAgICAgICAgIHJl
c3VsdEFycmF5W2ldLnNldEZDb25zdCgwLjBmKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChldGEgKiB1bmlvbkFycmF5
c1swXVtpXS5nZXRGQ29uc3QoKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoZXRhICogZG90UHJvZHVjdCArIHNxcnRmKGspKSAqCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0
RkNvbnN0KCkpOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgLy8gVE9ETzogQWRkIGNv
bnN0YW50IGZvbGRpbmcgc3VwcG9ydCBmb3Igb3RoZXIgYnVpbHQtaW4gb3BlcmF0aW9ucyB0aGF0
IHRha2UgMgotICAgICAgICAgICAgICAgIC8vIHBhcmFtZXRlcnMgYW5kIG5vdCBoYW5kbGVkIGFi
b3ZlLgotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAocGFyYW1zQ291bnQgPT0gMykKLSAgICB7
Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIFRlcm5hcnkgYnVpbHQtaW4KLSAgICAgICAgLy8KLSAg
ICAgICAgc3dpdGNoIChvcCkKKyAgICAgICAgY2FzZSBFT3BCaXRmaWVsZEV4dHJhY3Q6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGNhc2UgRU9wQ2xhbXA6CisgICAgICAgICAgICByZXN1bHRBcnJh
eSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgKytpKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNp
emVdOwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6
ZTsgaSsrKQorICAgICAgICAgICAgICAgIGludCBvZmZzZXQgPSB1bmlvbkFycmF5c1sxXVswXS5n
ZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICBpbnQgYml0cyAgID0gdW5pb25BcnJheXNbMl1b
MF0uZ2V0SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgaWYgKGJpdHMgPT0gMCkKICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYmFzaWNUeXBlKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoYWdncmVnYXRlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnQpCiAg
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Rmxv
YXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgeCAgID0gdW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgbWluID0gdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgbWF4ID0gdW5pb25BcnJheXNb
Ml1baV0uZ2V0RkNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0
cyBhcmUgdW5kZWZpbmVkIGlmIG1pbiA+IG1heC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobWluID4gbWF4KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRlZmlu
ZWRDb25zdGFudEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNpY1R5cGUsIGRpYWdub3N0aWNzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmcmVzdWx0QXJyYXlbaV0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0
KGdsOjpjbGFtcCh4LCBtaW4sIG1heCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgeCAgID0gdW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pbiA9IHVuaW9uQXJyYXlzWzFdW2ldLmdl
dElDb25zdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXggPSB1bmlvbkFy
cmF5c1syXVtpXS5nZXRJQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBS
ZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYgbWluID4gbWF4LgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChtaW4gPiBtYXgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVu
ZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGxvYywgb3AsIGJhc2ljVHlwZSwgZGlhZ25vc3Rp
Y3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZyZXN1bHRBcnJheVtpXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJ
Q29uc3QoZ2w6OmNsYW1wKHgsIG1pbiwgbWF4KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIEVidFVJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHggICA9IHVuaW9uQXJyYXlzWzBdW2ldLmdl
dFVDb25zdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtaW4g
PSB1bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgbWF4ID0gdW5pb25BcnJheXNbMl1baV0uZ2V0VUNvbnN0KCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIG1p
biA+IG1heC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluID4gbWF4KQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJv
cihsb2MsIG9wLCBiYXNpY1R5cGUsIGRpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzdWx0QXJyYXlbaV0p
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0VUNvbnN0KGdsOjpjbGFtcCh4LCBtaW4sIG1h
eCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNv
bnN0KDApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGFn
Z3JlZ2F0ZS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0VUludCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3QoMCk7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIGNhc2UgRU9wTWl4OgotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIEFTU0VSVChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpOwotICAgICAgICAgICAgICAgIHJlc3Vs
dEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwotICAgICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKG9mZnNldCA8IDAgfHwgYml0cyA8IDAgfHwgb2Zmc2V0ID49IDMyIHx8
IGJpdHMgPiAzMiB8fCBvZmZzZXQgKyBiaXRzID4gMzIpCiAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBmbG9hdCB4ICAgICAgICAgPSB1bmlvbkFycmF5c1swXVtpXS5nZXRG
Q29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgeSAgICAgICAgID0gdW5pb25BcnJh
eXNbMV1baV0uZ2V0RkNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIFRCYXNpY1R5cGUgdHlw
ZSA9ICgqc2VxdWVuY2UpWzJdLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUo
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gRWJ0RmxvYXQpCisgICAgICAgICAg
ICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGxvYywgb3AsIGFnZ3JlZ2F0
ZS0+Z2V0QmFzaWNUeXBlKCksIGRpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAvLyBiaXRzIGNhbiBiZSAzMiBoZXJlLCBzbyB3ZSBuZWVkIHRvIGF2b2lkIGJp
dCBzaGlmdCBvdmVyZmxvdy4KKyAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbWFza01zYiA9
IDF1IDw8IChiaXRzIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG1hc2sgICAg
PSAoKG1hc2tNc2IgLSAxdSkgfCBtYXNrTXNiKSA8PCBvZmZzZXQ7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChhZ2dyZWdhdGUtPmdldEJhc2ljVHlwZSgpID09IEVidEludCkKICAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV0dXJucyB0aGUgbGluZWFy
IGJsZW5kIG9mIHggYW5kIHksIGkuZS4sIHggKiAoMSAtIGEpICsgeSAqIGEuCi0gICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdCBhID0gdW5pb25BcnJheXNbMl1baV0uZ2V0RkNvbnN0KCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoeCAqICgxLjBm
IC0gYSkgKyB5ICogYSk7CisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWx1ZSA9
IHN0YXRpY19jYXN0PHVpbnQzMl90Pih1bmlvbkFycmF5c1swXVtpXS5nZXRJQ29uc3QoKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCByZXN1bHRVbnNpZ25lZCA9ICh2YWx1ZSAm
IG1hc2spID4+IG9mZnNldDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocmVzdWx0VW5z
aWduZWQgJiBtYXNrTXNiKSAhPSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBtb3N0IHNpZ25pZmljYW50IGJpdHMgKGZyb20g
Yml0cysxIHRvIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBzaG91bGQgYmUgc2V0IHRvIDEuCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgaGlnaGVyQml0c01hc2sgPSAoKDF1IDw8ICgzMiAtIGJpdHMpKSAtIDF1KSA8
PCBiaXRzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFVuc2lnbmVkIHw9IGhp
Z2hlckJpdHNNYXNrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludDMyX3Q+KHJl
c3VsdFVuc2lnbmVkKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgZWxzZSAgLy8gM3JkIHBhcmFtZXRlciBpcyBFYnRCb29sCisgICAgICAgICAgICAgICAgICAg
IGVsc2UKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKHR5cGUgPT0gRWJ0Qm9vbCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWxlY3Rz
IHdoaWNoIHZlY3RvciBlYWNoIHJldHVybmVkIGNvbXBvbmVudCBjb21lcyBmcm9tLgotICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gRm9yIGEgY29tcG9uZW50IG9mIGEgdGhhdCBpcyBmYWxzZSwg
dGhlIGNvcnJlc3BvbmRpbmcgY29tcG9uZW50IG9mIHggaXMKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIHJldHVybmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGEgY29tcG9u
ZW50IG9mIGEgdGhhdCBpcyB0cnVlLCB0aGUgY29ycmVzcG9uZGluZyBjb21wb25lbnQgb2YgeSBp
cwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuZWQuCi0gICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGEgPSB1bmlvbkFycmF5c1syXVtpXS5nZXRCQ29uc3QoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChhID8geSA6IHgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGFnZ3JlZ2F0ZS0+Z2V0QmFzaWNUeXBlKCkgPT0g
RWJ0VUludCk7CisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWx1ZSA9IHVuaW9u
QXJyYXlzWzBdW2ldLmdldFVDb25zdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
QXJyYXlbaV0uc2V0VUNvbnN0KCh2YWx1ZSAmIG1hc2spID4+IG9mZnNldCk7CiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNhc2UgRU9wU21vb3RoU3RlcDoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRU9wQml0ZmllbGRJbnNlcnQ6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21h
eE9iamVjdFNpemVdOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmpl
Y3RTaXplOyArK2kpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJhc2lj
VHlwZSA9PSBFYnRGbG9hdCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENv
bnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgaW50IG9mZnNl
dCA9IHVuaW9uQXJyYXlzWzJdWzBdLmdldElDb25zdCgpOworICAgICAgICAgICAgICAgIGludCBi
aXRzICAgPSB1bmlvbkFycmF5c1szXVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICBp
ZiAoYml0cyA9PSAwKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZmxv
YXQgZWRnZTAgPSB1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAg
ICAgICAgZmxvYXQgZWRnZTEgPSB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKTsKLSAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgeCAgICAgPSB1bmlvbkFycmF5c1syXVtpXS5nZXRGQ29uc3Qo
KTsKLSAgICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIGVkZ2Uw
ID49IGVkZ2UxLgotICAgICAgICAgICAgICAgICAgICBpZiAoZWRnZTAgPj0gZWRnZTEpCisgICAg
ICAgICAgICAgICAgICAgIGlmIChhZ2dyZWdhdGUtPmdldEJhc2ljVHlwZSgpID09IEVidEludCkK
ICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgVW5kZWZpbmVk
Q29uc3RhbnRGb2xkaW5nRXJyb3IobG9jLCBvcCwgYmFzaWNUeXBlLCBkaWFnbm9zdGljcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXN1
bHRBcnJheVtpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGJhc2UgPSB1bmlv
bkFycmF5c1swXVtpXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dEFycmF5W2ldLnNldElDb25zdChiYXNlKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFJldHVybnMgMC4wIGlmIHggPD0gZWRnZTAgYW5kIDEuMCBpZiB4ID49IGVk
Z2UxIGFuZCBwZXJmb3JtcyBzbW9vdGgKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhlcm1p
dGUgaW50ZXJwb2xhdGlvbiBiZXR3ZWVuIDAgYW5kIDEgd2hlbiBlZGdlMCA8IHggPCBlZGdlMS4K
LSAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHQgPSBnbDo6Y2xhbXAoKHggLSBlZGdlMCkg
LyAoZWRnZTEgLSBlZGdlMCksIDAuMGYsIDEuMGYpOwotICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KHQgKiB0ICogKDMuMGYgLSAyLjBmICogdCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGFnZ3JlZ2F0ZS0+Z2V0QmFzaWNUeXBlKCkgPT0g
RWJ0VUludCk7CisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBiYXNlID0gdW5pb25B
cnJheXNbMF1baV0uZ2V0VUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRB
cnJheVtpXS5zZXRVQ29uc3QoYmFzZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGNhc2UgRU9wRmFjZUZvcndhcmQ6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgQVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCk7Ci0gICAgICAgICAgICAgICAgLy8gZ2Vu
VHlwZSBmYWNlZm9yd2FyZChnZW5UeXBlIE4sIGdlblR5cGUgSSwgZ2VuVHlwZSBOcmVmKSA6Ci0g
ICAgICAgICAgICAgICAgLy8gICAgIElmIGRvdChOcmVmLCBJKSA8IDAgcmV0dXJuIE4sIG90aGVy
d2lzZSByZXR1cm4gLU4uCi0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgICAgICA9IG5ldyBU
Q29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKLSAgICAgICAgICAgICAgICBmbG9hdCBkb3RQ
cm9kdWN0ID0gVmVjdG9yRG90UHJvZHVjdCh1bmlvbkFycmF5c1syXSwgdW5pb25BcnJheXNbMV0s
IG1heE9iamVjdFNpemUpOwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bWF4T2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9mZnNldCA8IDAg
fHwgYml0cyA8IDAgfHwgb2Zmc2V0ID49IDMyIHx8IGJpdHMgPiAzMiB8fCBvZmZzZXQgKyBiaXRz
ID4gMzIpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoZG90UHJv
ZHVjdCA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29u
c3QodW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkpOwotICAgICAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoLXVu
aW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgVW5kZWZp
bmVkQ29uc3RhbnRGb2xkaW5nRXJyb3IobG9jLCBvcCwgYWdncmVnYXRlLT5nZXRCYXNpY1R5cGUo
KSwgZGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZyZXN1bHRBcnJheVtpXSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjYXNlIEVPcFJlZnJh
Y3Q6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJhc2ljVHlwZSA9PSBF
YnRGbG9hdCk7Ci0gICAgICAgICAgICAgICAgLy8gZ2VuVHlwZSByZWZyYWN0KGdlblR5cGUgSSwg
Z2VuVHlwZSBOLCBmbG9hdCBldGEpIDoKLSAgICAgICAgICAgICAgICAvLyAgICAgRm9yIHRoZSBp
bmNpZGVudCB2ZWN0b3IgSSBhbmQgc3VyZmFjZSBub3JtYWwgTiwgYW5kIHRoZSByYXRpbyBvZiBp
bmRpY2VzIG9mCi0gICAgICAgICAgICAgICAgLy8gICAgIHJlZnJhY3Rpb24gZXRhLAotICAgICAg
ICAgICAgICAgIC8vICAgICByZXR1cm4gdGhlIHJlZnJhY3Rpb24gdmVjdG9yLiBUaGUgcmVzdWx0
IGlzIGNvbXB1dGVkIGJ5Ci0gICAgICAgICAgICAgICAgLy8gICAgICAgICBrID0gMS4wIC0gZXRh
ICogZXRhICogKDEuMCAtIGRvdChOLCBJKSAqIGRvdChOLCBJKSkKLSAgICAgICAgICAgICAgICAv
LyAgICAgICAgIGlmIChrIDwgMC4wKQotICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgIHJl
dHVybiBnZW5UeXBlKDAuMCkKLSAgICAgICAgICAgICAgICAvLyAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAvLyAgICAgICAgICAgICByZXR1cm4gZXRhICogSSAtIChldGEgKiBkb3QoTiwg
SSkgKyBzcXJ0KGspKSAqIE4KLSAgICAgICAgICAgICAgICByZXN1bHRBcnJheSAgICAgID0gbmV3
IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwotICAgICAgICAgICAgICAgIGZsb2F0IGRv
dFByb2R1Y3QgPSBWZWN0b3JEb3RQcm9kdWN0KHVuaW9uQXJyYXlzWzFdLCB1bmlvbkFycmF5c1sw
XSwgbWF4T2JqZWN0U2l6ZSk7Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtYXhPYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgZXRhID0gdW5pb25BcnJheXNbMl1baV0u
Z2V0RkNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IGsgICA9IDEuMGYgLSBldGEg
KiBldGEgKiAoMS4wZiAtIGRvdFByb2R1Y3QgKiBkb3RQcm9kdWN0KTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGsgPCAwLjBmKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlb
aV0uc2V0RkNvbnN0KDAuMGYpOworICAgICAgICAgICAgICAgICAgICAvLyBiaXRzIGNhbiBiZSAz
MiBoZXJlLCBzbyB3ZSBuZWVkIHRvIGF2b2lkIGJpdCBzaGlmdCBvdmVyZmxvdy4KKyAgICAgICAg
ICAgICAgICAgICAgdWludDMyX3QgbWFza01zYiAgICA9IDF1IDw8IChiaXRzIC0gMSk7CisgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IGluc2VydE1hc2sgPSAoKG1hc2tNc2IgLSAxdSkgfCBt
YXNrTXNiKSA8PCBvZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGJhc2VNYXNr
ICAgPSB+aW5zZXJ0TWFzazsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFnZ3JlZ2F0ZS0+Z2V0
QmFzaWNUeXBlKCkgPT0gRWJ0SW50KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCBiYXNlICAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odW5p
b25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3QgaW5zZXJ0ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHVuaW9uQXJyYXlzWzFdW2ldLmdl
dElDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJlc3VsdFVuc2ln
bmVkID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmFzZSAmIGJhc2VNYXNrKSB8ICgo
aW5zZXJ0IDw8IG9mZnNldCkgJiBpbnNlcnRNYXNrKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdEFycmF5W2ldLnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQzMl90PihyZXN1bHRVbnNp
Z25lZCkpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChldGEgKiB1
bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGV0YSAqIGRvdFByb2R1Y3QgKyBzcXJ0ZihrKSkgKgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlv
bkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChhZ2dyZWdhdGUtPmdldEJhc2ljVHlwZSgpID09IEVi
dFVJbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYmFzZSAgID0gdW5pb25B
cnJheXNbMF1baV0uZ2V0VUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBpbnNlcnQgPSB1bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldFVDb25zdCgoYmFzZSAmIGJhc2VNYXNrKSB8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChpbnNlcnQg
PDwgb2Zmc2V0KSAmIGluc2VydE1hc2spKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAg
ICAgICAgICAgIC8vIFRPRE86IEFkZCBjb25zdGFudCBmb2xkaW5nIHN1cHBvcnQgZm9yIG90aGVy
IGJ1aWx0LWluIG9wZXJhdGlvbnMgdGhhdCB0YWtlIDMKLSAgICAgICAgICAgICAgICAvLyBwYXJh
bWV0ZXJzIGFuZCBub3QgaGFuZGxlZCBhYm92ZS4KLSAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdEFycmF5OwogfQpAQCAtMjc5MywyNCArMzMyNiwyMSBA
QCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnVwZGF0ZVRyZWUoKQogICAgICAgICAgICAgYm9vbCBp
bnNlcnRlZCA9IGluc2VydGlvbi5wYXJlbnQtPmluc2VydENoaWxkTm9kZXMoaW5zZXJ0aW9uLnBv
c2l0aW9uICsgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluc2VydGlvbi5pbnNlcnRpb25zQWZ0ZXIpOwogICAgICAgICAg
ICAgQVNTRVJUKGluc2VydGVkKTsKLSAgICAgICAgICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFC
TEUoaW5zZXJ0ZWQpOwogICAgICAgICB9CiAgICAgICAgIGlmICghaW5zZXJ0aW9uLmluc2VydGlv
bnNCZWZvcmUuZW1wdHkoKSkKICAgICAgICAgewogICAgICAgICAgICAgYm9vbCBpbnNlcnRlZCA9
CiAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uLnBhcmVudC0+aW5zZXJ0Q2hpbGROb2RlcyhpbnNl
cnRpb24ucG9zaXRpb24sIGluc2VydGlvbi5pbnNlcnRpb25zQmVmb3JlKTsKICAgICAgICAgICAg
IEFTU0VSVChpbnNlcnRlZCk7Ci0gICAgICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxF
KGluc2VydGVkKTsKICAgICAgICAgfQogICAgIH0KICAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlp
IDwgbVJlcGxhY2VtZW50cy5zaXplKCk7ICsraWkpCiAgICAgewogICAgICAgICBjb25zdCBOb2Rl
VXBkYXRlRW50cnkgJnJlcGxhY2VtZW50ID0gbVJlcGxhY2VtZW50c1tpaV07CiAgICAgICAgIEFT
U0VSVChyZXBsYWNlbWVudC5wYXJlbnQpOwotICAgICAgICBib29sIHJlcGxhY2VkID0gcmVwbGFj
ZW1lbnQucGFyZW50LT5yZXBsYWNlQ2hpbGROb2RlKAotICAgICAgICAgICAgcmVwbGFjZW1lbnQu
b3JpZ2luYWwsIHJlcGxhY2VtZW50LnJlcGxhY2VtZW50KTsKKyAgICAgICAgYm9vbCByZXBsYWNl
ZCA9CisgICAgICAgICAgICByZXBsYWNlbWVudC5wYXJlbnQtPnJlcGxhY2VDaGlsZE5vZGUocmVw
bGFjZW1lbnQub3JpZ2luYWwsIHJlcGxhY2VtZW50LnJlcGxhY2VtZW50KTsKICAgICAgICAgQVNT
RVJUKHJlcGxhY2VkKTsKLSAgICAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShyZXBsYWNl
ZCk7CiAKICAgICAgICAgaWYgKCFyZXBsYWNlbWVudC5vcmlnaW5hbEJlY29tZXNDaGlsZE9mUmVw
bGFjZW1lbnQpCiAgICAgICAgIHsKQEAgLTI4MzAsMTAgKzMzNjAsOSBAQCB2b2lkIFRJbnRlcm1U
cmF2ZXJzZXI6OnVwZGF0ZVRyZWUoKQogICAgIHsKICAgICAgICAgY29uc3QgTm9kZVJlcGxhY2VX
aXRoTXVsdGlwbGVFbnRyeSAmcmVwbGFjZW1lbnQgPSBtTXVsdGlSZXBsYWNlbWVudHNbaWldOwog
ICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQucGFyZW50KTsKLSAgICAgICAgYm9vbCByZXBsYWNl
ZCA9IHJlcGxhY2VtZW50LnBhcmVudC0+cmVwbGFjZUNoaWxkTm9kZVdpdGhNdWx0aXBsZSgKLSAg
ICAgICAgICAgIHJlcGxhY2VtZW50Lm9yaWdpbmFsLCByZXBsYWNlbWVudC5yZXBsYWNlbWVudHMp
OworICAgICAgICBib29sIHJlcGxhY2VkID0gcmVwbGFjZW1lbnQucGFyZW50LT5yZXBsYWNlQ2hp
bGROb2RlV2l0aE11bHRpcGxlKHJlcGxhY2VtZW50Lm9yaWdpbmFsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcGxhY2VtZW50LnJlcGxhY2VtZW50cyk7CiAgICAgICAgIEFTU0VSVChyZXBsYWNlZCk7Ci0g
ICAgICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUocmVwbGFjZWQpOwogICAgIH0KIAogICAg
IGNsZWFyUmVwbGFjZW1lbnRRdWV1ZSgpOwpAQCAtMjg2MSwzICszMzkwLDQ1IEBAIHZvaWQgVElu
dGVybVRyYXZlcnNlcjo6cXVldWVSZXBsYWNlbWVudFdpdGhQYXJlbnQoVEludGVybU5vZGUgKnBh
cmVudCwKICAgICBib29sIG9yaWdpbmFsQmVjb21lc0NoaWxkID0gKG9yaWdpbmFsU3RhdHVzID09
IE9yaWdpbmFsTm9kZTo6QkVDT01FU19DSElMRCk7CiAgICAgbVJlcGxhY2VtZW50cy5wdXNoX2Jh
Y2soTm9kZVVwZGF0ZUVudHJ5KHBhcmVudCwgb3JpZ2luYWwsIHJlcGxhY2VtZW50LCBvcmlnaW5h
bEJlY29tZXNDaGlsZCkpOwogfQorCitUTmFtZSBUSW50ZXJtVHJhdmVyc2VyOjpHZXRJbnRlcm5h
bEZ1bmN0aW9uTmFtZShjb25zdCBjaGFyICpuYW1lKQoreworICAgIFRTdHJpbmcgbmFtZVN0cihu
YW1lKTsKKyAgICBUTmFtZSBuYW1lT2JqKG5hbWVTdHIpOworICAgIG5hbWVPYmouc2V0SW50ZXJu
YWwodHJ1ZSk7CisgICAgcmV0dXJuIG5hbWVPYmo7Cit9CisKK1RJbnRlcm1GdW5jdGlvblByb3Rv
dHlwZSAqVEludGVybVRyYXZlcnNlcjo6Q3JlYXRlSW50ZXJuYWxGdW5jdGlvblByb3RvdHlwZU5v
ZGUoCisgICAgY29uc3QgVFR5cGUgJnJldHVyblR5cGUsCisgICAgY29uc3QgY2hhciAqbmFtZSwK
KyAgICBjb25zdCBUU3ltYm9sVW5pcXVlSWQgJmZ1bmN0aW9uSWQpCit7CisgICAgVEludGVybUZ1
bmN0aW9uUHJvdG90eXBlICpmdW5jdGlvbk5vZGUgPSBuZXcgVEludGVybUZ1bmN0aW9uUHJvdG90
eXBlKHJldHVyblR5cGUsIGZ1bmN0aW9uSWQpOworICAgIGZ1bmN0aW9uTm9kZS0+Z2V0RnVuY3Rp
b25TeW1ib2xJbmZvKCktPnNldE5hbWVPYmooR2V0SW50ZXJuYWxGdW5jdGlvbk5hbWUobmFtZSkp
OworICAgIHJldHVybiBmdW5jdGlvbk5vZGU7Cit9CisKK1RJbnRlcm1GdW5jdGlvbkRlZmluaXRp
b24gKlRJbnRlcm1UcmF2ZXJzZXI6OkNyZWF0ZUludGVybmFsRnVuY3Rpb25EZWZpbml0aW9uTm9k
ZSgKKyAgICBjb25zdCBUVHlwZSAmcmV0dXJuVHlwZSwKKyAgICBjb25zdCBjaGFyICpuYW1lLAor
ICAgIFRJbnRlcm1CbG9jayAqZnVuY3Rpb25Cb2R5LAorICAgIGNvbnN0IFRTeW1ib2xVbmlxdWVJ
ZCAmZnVuY3Rpb25JZCkKK3sKKyAgICBUSW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKnByb3RvdHlw
ZU5vZGUgPQorICAgICAgICBDcmVhdGVJbnRlcm5hbEZ1bmN0aW9uUHJvdG90eXBlTm9kZShyZXR1
cm5UeXBlLCBuYW1lLCBmdW5jdGlvbklkKTsKKyAgICByZXR1cm4gbmV3IFRJbnRlcm1GdW5jdGlv
bkRlZmluaXRpb24ocHJvdG90eXBlTm9kZSwgZnVuY3Rpb25Cb2R5KTsKK30KKworVEludGVybUFn
Z3JlZ2F0ZSAqVEludGVybVRyYXZlcnNlcjo6Q3JlYXRlSW50ZXJuYWxGdW5jdGlvbkNhbGxOb2Rl
KAorICAgIGNvbnN0IFRUeXBlICZyZXR1cm5UeXBlLAorICAgIGNvbnN0IGNoYXIgKm5hbWUsCisg
ICAgY29uc3QgVFN5bWJvbFVuaXF1ZUlkICZmdW5jdGlvbklkLAorICAgIFRJbnRlcm1TZXF1ZW5j
ZSAqYXJndW1lbnRzKQoreworICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmZ1bmN0aW9uTm9kZSA9IFRJ
bnRlcm1BZ2dyZWdhdGU6OkNyZWF0ZUZ1bmN0aW9uQ2FsbCgKKyAgICAgICAgcmV0dXJuVHlwZSwg
ZnVuY3Rpb25JZCwgR2V0SW50ZXJuYWxGdW5jdGlvbk5hbWUobmFtZSksIGFyZ3VtZW50cyk7Cisg
ICAgcmV0dXJuIGZ1bmN0aW9uTm9kZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRl
cm1Ob2RlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9JbnRlcm1Ob2RlLmgKaW5kZXggNGMzNzAzNDEzZTY5MmYxZjQ5MzJiNjllMWE1ZWZiYjBlZmU3
Y2ZjZS4uYmVmMjdhNTcyZTQ0YTUxMjcwODlhNjZjMjUzN2YxMTJhZDUyMGE0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJt
Tm9kZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL0ludGVybU5vZGUuaApAQCAtMjcsMTEgKzI3LDE3IEBACiAjaW5jbHVkZSAiY29tcGlsZXIv
dHJhbnNsYXRvci9PcGVyYXRvci5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHlw
ZXMuaCIKIAorbmFtZXNwYWNlIHNoCit7CisKIGNsYXNzIFREaWFnbm9zdGljczsKIAogY2xhc3Mg
VEludGVybVRyYXZlcnNlcjsKIGNsYXNzIFRJbnRlcm1BZ2dyZWdhdGU7CiBjbGFzcyBUSW50ZXJt
QmxvY2s7CitjbGFzcyBUSW50ZXJtSW52YXJpYW50RGVjbGFyYXRpb247CitjbGFzcyBUSW50ZXJt
RGVjbGFyYXRpb247CitjbGFzcyBUSW50ZXJtRnVuY3Rpb25Qcm90b3R5cGU7CiBjbGFzcyBUSW50
ZXJtRnVuY3Rpb25EZWZpbml0aW9uOwogY2xhc3MgVEludGVybVN3aXp6bGU7CiBjbGFzcyBUSW50
ZXJtQmluYXJ5OwpAQCAtNTAsNiArNTYsNyBAQCBjbGFzcyBUSW50ZXJtUmF3OwogY2xhc3MgVElu
dGVybUJyYW5jaDsKIAogY2xhc3MgVFN5bWJvbFRhYmxlOworY2xhc3MgVFN5bWJvbFVuaXF1ZUlk
OwogY2xhc3MgVEZ1bmN0aW9uOwogCiAvLyBFbmNhcHN1bGF0ZSBhbiBpZGVudGlmaWVyIHN0cmlu
ZyBhbmQgdHJhY2sgd2hldGhlciBpdCBpcyBjb21pbmcgZnJvbSB0aGUgb3JpZ2luYWwgc2hhZGVy
IGNvZGUKQEAgLTg3LDcgKzk0LDcgQEAgY2xhc3MgVEludGVybU5vZGUgOiBhbmdsZTo6Tm9uQ29w
eWFibGUKICAgICAgICAgbUxpbmUuZmlyc3RfZmlsZSA9IG1MaW5lLmxhc3RfZmlsZSA9IDA7CiAg
ICAgICAgIG1MaW5lLmZpcnN0X2xpbmUgPSBtTGluZS5sYXN0X2xpbmUgPSAwOwogICAgIH0KLSAg
ICB2aXJ0dWFsIH5USW50ZXJtTm9kZSgpIHsgfQorICAgIHZpcnR1YWwgflRJbnRlcm1Ob2RlKCkg
e30KIAogICAgIGNvbnN0IFRTb3VyY2VMb2MgJmdldExpbmUoKSBjb25zdCB7IHJldHVybiBtTGlu
ZTsgfQogICAgIHZvaWQgc2V0TGluZShjb25zdCBUU291cmNlTG9jICZsKSB7IG1MaW5lID0gbDsg
fQpAQCAtOTgsNiArMTA1LDggQEAgY2xhc3MgVEludGVybU5vZGUgOiBhbmdsZTo6Tm9uQ29weWFi
bGUKICAgICB2aXJ0dWFsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKmdldEFzRnVuY3Rpb25E
ZWZpbml0aW9uKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgVEludGVybUFnZ3Jl
Z2F0ZSAqZ2V0QXNBZ2dyZWdhdGUoKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBUSW50ZXJt
QmxvY2sgKmdldEFzQmxvY2soKSB7IHJldHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCBUSW50
ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKmdldEFzRnVuY3Rpb25Qcm90b3R5cGVOb2RlKCkgeyByZXR1
cm4gbnVsbHB0cjsgfQorICAgIHZpcnR1YWwgVEludGVybURlY2xhcmF0aW9uICpnZXRBc0RlY2xh
cmF0aW9uTm9kZSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2aXJ0dWFsIFRJbnRlcm1Td2l6
emxlICpnZXRBc1N3aXp6bGVOb2RlKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwg
VEludGVybUJpbmFyeSAqZ2V0QXNCaW5hcnlOb2RlKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1
YWwgVEludGVybVVuYXJ5ICpnZXRBc1VuYXJ5Tm9kZSgpIHsgcmV0dXJuIDA7IH0KQEAgLTExMiw4
ICsxMjEsNyBAQCBjbGFzcyBUSW50ZXJtTm9kZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAg
Ly8gUmVwbGFjZSBhIGNoaWxkIG5vZGUuIFJldHVybiB0cnVlIGlmIHxvcmlnaW5hbHwgaXMgYSBj
aGlsZAogICAgIC8vIG5vZGUgYW5kIGl0IGlzIHJlcGxhY2VkOyBvdGhlcndpc2UsIHJldHVybiBm
YWxzZS4KLSAgICB2aXJ0dWFsIGJvb2wgcmVwbGFjZUNoaWxkTm9kZSgKLSAgICAgICAgVEludGVy
bU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgcmVwbGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1O
b2RlICpyZXBsYWNlbWVudCkgPSAwOwogCiAgIHByb3RlY3RlZDoKICAgICBUU291cmNlTG9jIG1M
aW5lOwpAQCAtMTM0LDcgKzE0Miw3IEBAIHN0cnVjdCBUSW50ZXJtTm9kZVBhaXIKIGNsYXNzIFRJ
bnRlcm1UeXBlZCA6IHB1YmxpYyBUSW50ZXJtTm9kZQogewogICBwdWJsaWM6Ci0gICAgVEludGVy
bVR5cGVkKGNvbnN0IFRUeXBlICZ0KSA6IG1UeXBlKHQpICB7IH0KKyAgICBUSW50ZXJtVHlwZWQo
Y29uc3QgVFR5cGUgJnQpIDogbVR5cGUodCkge30KIAogICAgIHZpcnR1YWwgVEludGVybVR5cGVk
ICpkZWVwQ29weSgpIGNvbnN0ID0gMDsKIApAQCAtMTUwLDYgKzE1OCw3IEBAIGNsYXNzIFRJbnRl
cm1UeXBlZCA6IHB1YmxpYyBUSW50ZXJtTm9kZQogICAgIFRCYXNpY1R5cGUgZ2V0QmFzaWNUeXBl
KCkgY29uc3QgeyByZXR1cm4gbVR5cGUuZ2V0QmFzaWNUeXBlKCk7IH0KICAgICBUUXVhbGlmaWVy
IGdldFF1YWxpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1UeXBlLmdldFF1YWxpZmllcigpOyB9CiAg
ICAgVFByZWNpc2lvbiBnZXRQcmVjaXNpb24oKSBjb25zdCB7IHJldHVybiBtVHlwZS5nZXRQcmVj
aXNpb24oKTsgfQorICAgIFRNZW1vcnlRdWFsaWZpZXIgZ2V0TWVtb3J5UXVhbGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbVR5cGUuZ2V0TWVtb3J5UXVhbGlmaWVyKCk7IH0KICAgICBpbnQgZ2V0Q29s
cygpIGNvbnN0IHsgcmV0dXJuIG1UeXBlLmdldENvbHMoKTsgfQogICAgIGludCBnZXRSb3dzKCkg
Y29uc3QgeyByZXR1cm4gbVR5cGUuZ2V0Um93cygpOyB9CiAgICAgaW50IGdldE5vbWluYWxTaXpl
KCkgY29uc3QgeyByZXR1cm4gbVR5cGUuZ2V0Tm9taW5hbFNpemUoKTsgfQpAQCAtMTU3LDcgKzE2
Niw3IEBAIGNsYXNzIFRJbnRlcm1UeXBlZCA6IHB1YmxpYyBUSW50ZXJtTm9kZQogCiAgICAgYm9v
bCBpc0ludGVyZmFjZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbVR5cGUuaXNJbnRlcmZhY2VCbG9j
aygpOyB9CiAgICAgYm9vbCBpc01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1UeXBlLmlzTWF0cml4
KCk7IH0KLSAgICBib29sIGlzQXJyYXkoKSAgY29uc3QgeyByZXR1cm4gbVR5cGUuaXNBcnJheSgp
OyB9CisgICAgYm9vbCBpc0FycmF5KCkgY29uc3QgeyByZXR1cm4gbVR5cGUuaXNBcnJheSgpOyB9
CiAgICAgYm9vbCBpc1ZlY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1UeXBlLmlzVmVjdG9yKCk7IH0K
ICAgICBib29sIGlzU2NhbGFyKCkgY29uc3QgeyByZXR1cm4gbVR5cGUuaXNTY2FsYXIoKTsgfQog
ICAgIGJvb2wgaXNTY2FsYXJJbnQoKSBjb25zdCB7IHJldHVybiBtVHlwZS5pc1NjYWxhckludCgp
OyB9CkBAIC0xNzAsNiArMTc5LDcgQEAgY2xhc3MgVEludGVybVR5cGVkIDogcHVibGljIFRJbnRl
cm1Ob2RlCiAKICAgICBzdGF0aWMgVEludGVybVR5cGVkICpDcmVhdGVJbmRleE5vZGUoaW50IGlu
ZGV4KTsKICAgICBzdGF0aWMgVEludGVybVR5cGVkICpDcmVhdGVaZXJvKGNvbnN0IFRUeXBlICZ0
eXBlKTsKKyAgICBzdGF0aWMgVEludGVybVR5cGVkICpDcmVhdGVCb29sKGJvb2wgdmFsdWUpOwog
CiAgIHByb3RlY3RlZDoKICAgICBUVHlwZSBtVHlwZTsKQEAgLTE5NSw3ICsyMDUsNyBAQCBjbGFz
cyBUSW50ZXJtTG9vcCA6IHB1YmxpYyBUSW50ZXJtTm9kZQogICAgICAgICAgICAgICAgIFRJbnRl
cm1UeXBlZCAqY29uZCwKICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmV4cHIsCiAgICAg
ICAgICAgICAgICAgVEludGVybUJsb2NrICpib2R5KQotICAgICAgICA6IG1UeXBlKHR5cGUpLCBt
SW5pdChpbml0KSwgbUNvbmQoY29uZCksIG1FeHByKGV4cHIpLCBtQm9keShib2R5KSwgbVVucm9s
bEZsYWcoZmFsc2UpCisgICAgICAgIDogbVR5cGUodHlwZSksIG1Jbml0KGluaXQpLCBtQ29uZChj
b25kKSwgbUV4cHIoZXhwciksIG1Cb2R5KGJvZHkpCiAgICAgewogICAgIH0KIApAQCAtMjEzLDE3
ICsyMjMsMTIgQEAgY2xhc3MgVEludGVybUxvb3AgOiBwdWJsaWMgVEludGVybU5vZGUKICAgICB2
b2lkIHNldEV4cHJlc3Npb24oVEludGVybVR5cGVkICpleHByZXNzaW9uKSB7IG1FeHByID0gZXhw
cmVzc2lvbjsgfQogICAgIHZvaWQgc2V0Qm9keShUSW50ZXJtQmxvY2sgKmJvZHkpIHsgbUJvZHkg
PSBib2R5OyB9CiAKLSAgICB2b2lkIHNldFVucm9sbEZsYWcoYm9vbCBmbGFnKSB7IG1VbnJvbGxG
bGFnID0gZmxhZzsgfQotICAgIGJvb2wgZ2V0VW5yb2xsRmxhZygpIGNvbnN0IHsgcmV0dXJuIG1V
bnJvbGxGbGFnOyB9Ci0KICAgcHJvdGVjdGVkOgogICAgIFRMb29wVHlwZSBtVHlwZTsKLSAgICBU
SW50ZXJtTm9kZSAqbUluaXQ7ICAvLyBmb3ItbG9vcCBpbml0aWFsaXphdGlvbgotICAgIFRJbnRl
cm1UeXBlZCAqbUNvbmQ7IC8vIGxvb3AgZXhpdCBjb25kaXRpb24KLSAgICBUSW50ZXJtVHlwZWQg
Km1FeHByOyAvLyBmb3ItbG9vcCBleHByZXNzaW9uCisgICAgVEludGVybU5vZGUgKm1Jbml0OyAg
IC8vIGZvci1sb29wIGluaXRpYWxpemF0aW9uCisgICAgVEludGVybVR5cGVkICptQ29uZDsgIC8v
IGxvb3AgZXhpdCBjb25kaXRpb24KKyAgICBUSW50ZXJtVHlwZWQgKm1FeHByOyAgLy8gZm9yLWxv
b3AgZXhwcmVzc2lvbgogICAgIFRJbnRlcm1CbG9jayAqbUJvZHk7ICAvLyBsb29wIGJvZHkKLQot
ICAgIGJvb2wgbVVucm9sbEZsYWc7IC8vIFdoZXRoZXIgdGhlIGxvb3Agc2hvdWxkIGJlIHVucm9s
bGVkIG9yIG5vdC4KIH07CiAKIC8vCkBAIC0yMzIsMTggKzIzNywxNiBAQCBjbGFzcyBUSW50ZXJt
TG9vcCA6IHB1YmxpYyBUSW50ZXJtTm9kZQogY2xhc3MgVEludGVybUJyYW5jaCA6IHB1YmxpYyBU
SW50ZXJtTm9kZQogewogICBwdWJsaWM6Ci0gICAgVEludGVybUJyYW5jaChUT3BlcmF0b3Igb3As
IFRJbnRlcm1UeXBlZCAqZSkKLSAgICAgICAgOiBtRmxvd09wKG9wKSwKLSAgICAgICAgICBtRXhw
cmVzc2lvbihlKSB7IH0KKyAgICBUSW50ZXJtQnJhbmNoKFRPcGVyYXRvciBvcCwgVEludGVybVR5
cGVkICplKSA6IG1GbG93T3Aob3ApLCBtRXhwcmVzc2lvbihlKSB7fQogCiAgICAgdm9pZCB0cmF2
ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkgb3ZlcnJpZGU7CiAgICAgVEludGVybUJyYW5jaCAq
Z2V0QXNCcmFuY2hOb2RlKCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfQogICAgIGJvb2wgcmVw
bGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNl
bWVudCkgb3ZlcnJpZGU7CiAKICAgICBUT3BlcmF0b3IgZ2V0Rmxvd09wKCkgeyByZXR1cm4gbUZs
b3dPcDsgfQotICAgIFRJbnRlcm1UeXBlZCogZ2V0RXhwcmVzc2lvbigpIHsgcmV0dXJuIG1FeHBy
ZXNzaW9uOyB9CisgICAgVEludGVybVR5cGVkICpnZXRFeHByZXNzaW9uKCkgeyByZXR1cm4gbUV4
cHJlc3Npb247IH0KIAotcHJvdGVjdGVkOgorICBwcm90ZWN0ZWQ6CiAgICAgVE9wZXJhdG9yIG1G
bG93T3A7CiAgICAgVEludGVybVR5cGVkICptRXhwcmVzc2lvbjsgIC8vIG5vbi16ZXJvIGV4Y2Vw
dCBmb3IgInJldHVybiBleHA7IiBzdGF0ZW1lbnRzCiB9OwpAQCAtMjkyLDkgKzI5NSw3IEBAIGNs
YXNzIFRJbnRlcm1TeW1ib2wgOiBwdWJsaWMgVEludGVybVR5cGVkCiBjbGFzcyBUSW50ZXJtUmF3
IDogcHVibGljIFRJbnRlcm1UeXBlZAogewogICBwdWJsaWM6Ci0gICAgVEludGVybVJhdyhjb25z
dCBUVHlwZSAmdHlwZSwgY29uc3QgVFN0cmluZyAmcmF3VGV4dCkKLSAgICAgICAgOiBUSW50ZXJt
VHlwZWQodHlwZSksCi0gICAgICAgICAgbVJhd1RleHQocmF3VGV4dCkgeyB9CisgICAgVEludGVy
bVJhdyhjb25zdCBUVHlwZSAmdHlwZSwgY29uc3QgVFN0cmluZyAmcmF3VGV4dCkgOiBUSW50ZXJt
VHlwZWQodHlwZSksIG1SYXdUZXh0KHJhd1RleHQpIHt9CiAgICAgVEludGVybVJhdyhjb25zdCBU
SW50ZXJtUmF3ICYpID0gZGVsZXRlOwogCiAgICAgVEludGVybVR5cGVkICpkZWVwQ29weSgpIGNv
bnN0IG92ZXJyaWRlCkBAIC0zODIsNyArMzgzLDcgQEAgY2xhc3MgVEludGVybUNvbnN0YW50VW5p
b24gOiBwdWJsaWMgVEludGVybVR5cGVkCiAgICAgY29uc3QgVENvbnN0YW50VW5pb24gKm1Vbmlv
bkFycmF5UG9pbnRlcjsKIAogICBwcml2YXRlOgotICAgIHR5cGVkZWYgZmxvYXQoKkZsb2F0VHlw
ZVVuYXJ5RnVuYykgKGZsb2F0KTsKKyAgICB0eXBlZGVmIGZsb2F0ICgqRmxvYXRUeXBlVW5hcnlG
dW5jKShmbG9hdCk7CiAgICAgdm9pZCBmb2xkRmxvYXRUeXBlVW5hcnkoY29uc3QgVENvbnN0YW50
VW5pb24gJnBhcmFtZXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFR5cGVV
bmFyeUZ1bmMgYnVpbHRpbkZ1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENvbnN0
YW50VW5pb24gKnJlc3VsdCkgY29uc3Q7CkBAIC00MDIsMTkgKzQwMywxOSBAQCBjbGFzcyBUSW50
ZXJtT3BlcmF0b3IgOiBwdWJsaWMgVEludGVybVR5cGVkCiAgICAgYm9vbCBpc011bHRpcGxpY2F0
aW9uKCkgY29uc3Q7CiAgICAgYm9vbCBpc0NvbnN0cnVjdG9yKCkgY29uc3Q7CiAKKyAgICAvLyBS
ZXR1cm5zIHRydWUgZm9yIGNhbGxzIG1hcHBlZCB0byBFT3BDYWxsKiwgZmFsc2UgZm9yIGJ1aWx0
LWlucyB0aGF0IGhhdmUgdGhlaXIgb3duIHNwZWNpZmljCisgICAgLy8gb3BzLgorICAgIGJvb2wg
aXNGdW5jdGlvbkNhbGwoKSBjb25zdDsKKwogICAgIGJvb2wgaGFzU2lkZUVmZmVjdHMoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBpc0Fzc2lnbm1lbnQoKTsgfQogCiAgIHByb3RlY3RlZDoKLSAg
ICBUSW50ZXJtT3BlcmF0b3IoVE9wZXJhdG9yIG9wKQotICAgICAgICA6IFRJbnRlcm1UeXBlZChU
VHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkKSksCi0gICAgICAgICAgbU9wKG9wKSB7fQotICAg
IFRJbnRlcm1PcGVyYXRvcihUT3BlcmF0b3Igb3AsIGNvbnN0IFRUeXBlICZ0eXBlKQotICAgICAg
ICA6IFRJbnRlcm1UeXBlZCh0eXBlKSwKLSAgICAgICAgICBtT3Aob3ApIHt9CisgICAgVEludGVy
bU9wZXJhdG9yKFRPcGVyYXRvciBvcCkgOiBUSW50ZXJtVHlwZWQoVFR5cGUoRWJ0RmxvYXQsIEVi
cFVuZGVmaW5lZCkpLCBtT3Aob3ApIHt9CisgICAgVEludGVybU9wZXJhdG9yKFRPcGVyYXRvciBv
cCwgY29uc3QgVFR5cGUgJnR5cGUpIDogVEludGVybVR5cGVkKHR5cGUpLCBtT3Aob3ApIHt9CiAK
ICAgICBUSW50ZXJtT3BlcmF0b3IoY29uc3QgVEludGVybU9wZXJhdG9yICYpID0gZGVmYXVsdDsK
IAotICAgIFRPcGVyYXRvciBtT3A7CisgICAgY29uc3QgVE9wZXJhdG9yIG1PcDsKIH07CiAKIC8v
IE5vZGUgZm9yIHZlY3RvciBzd2l6emxlcy4KQEAgLTQzNiw2ICs0MzcsNyBAQCBjbGFzcyBUSW50
ZXJtU3dpenpsZSA6IHB1YmxpYyBUSW50ZXJtVHlwZWQKICAgICB2b2lkIHdyaXRlT2Zmc2V0c0Fz
WFlaVyhUSW5mb1NpbmtCYXNlICpvdXQpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNEdXBsaWNhdGVP
ZmZzZXRzKCkgY29uc3Q7CisgICAgYm9vbCBvZmZzZXRzTWF0Y2goaW50IG9mZnNldCkgY29uc3Q7
CiAKICAgICBUSW50ZXJtVHlwZWQgKmZvbGQoKTsKIApAQCAtNDgzLDggKzQ4NSw4IEBAIGNsYXNz
IFRJbnRlcm1CaW5hcnkgOiBwdWJsaWMgVEludGVybU9wZXJhdG9yCiAgICAgYm9vbCBnZXRBZGRJ
bmRleENsYW1wKCkgeyByZXR1cm4gbUFkZEluZGV4Q2xhbXA7IH0KIAogICBwcm90ZWN0ZWQ6Ci0g
ICAgVEludGVybVR5cGVkKiBtTGVmdDsKLSAgICBUSW50ZXJtVHlwZWQqIG1SaWdodDsKKyAgICBU
SW50ZXJtVHlwZWQgKm1MZWZ0OworICAgIFRJbnRlcm1UeXBlZCAqbVJpZ2h0OwogCiAgICAgLy8g
SWYgc2V0IHRvIHRydWUsIHdyYXAgYW55IEVPcEluZGV4SW5kaXJlY3Qgd2l0aCBhIGNsYW1wIHRv
IGJvdW5kcy4KICAgICBib29sIG1BZGRJbmRleENsYW1wOwpAQCAtNTM0LDEwICs1MzYsMTEgQEAg
Y2xhc3MgVEZ1bmN0aW9uU3ltYm9sSW5mbwogewogICBwdWJsaWM6CiAgICAgUE9PTF9BTExPQ0FU
T1JfTkVXX0RFTEVURSgpOwotICAgIFRGdW5jdGlvblN5bWJvbEluZm8oKSA6IG1JZCgwKSB7fQor
ICAgIFRGdW5jdGlvblN5bWJvbEluZm8oY29uc3QgVFN5bWJvbFVuaXF1ZUlkICZpZCk7CisgICAg
VEZ1bmN0aW9uU3ltYm9sSW5mbygpIDogbUlkKG51bGxwdHIpIHt9CiAKLSAgICBURnVuY3Rpb25T
eW1ib2xJbmZvKGNvbnN0IFRGdW5jdGlvblN5bWJvbEluZm8gJikgPSBkZWZhdWx0OwotICAgIFRG
dW5jdGlvblN5bWJvbEluZm8gJm9wZXJhdG9yPShjb25zdCBURnVuY3Rpb25TeW1ib2xJbmZvICYp
ID0gZGVmYXVsdDsKKyAgICBURnVuY3Rpb25TeW1ib2xJbmZvKGNvbnN0IFRGdW5jdGlvblN5bWJv
bEluZm8gJmluZm8pOworICAgIFRGdW5jdGlvblN5bWJvbEluZm8gJm9wZXJhdG9yPShjb25zdCBU
RnVuY3Rpb25TeW1ib2xJbmZvICZpbmZvKTsKIAogICAgIHZvaWQgc2V0RnJvbUZ1bmN0aW9uKGNv
bnN0IFRGdW5jdGlvbiAmZnVuY3Rpb24pOwogCkBAIC01NDYsNTkgKzU0OSwyOCBAQCBjbGFzcyBU
RnVuY3Rpb25TeW1ib2xJbmZvCiAKICAgICBjb25zdCBUU3RyaW5nICZnZXROYW1lKCkgY29uc3Qg
eyByZXR1cm4gbU5hbWUuZ2V0U3RyaW5nKCk7IH0KICAgICB2b2lkIHNldE5hbWUoY29uc3QgVFN0
cmluZyAmbmFtZSkgeyBtTmFtZS5zZXRTdHJpbmcobmFtZSk7IH0KLSAgICBib29sIGlzTWFpbigp
IGNvbnN0IHsgcmV0dXJuIG1OYW1lLmdldFN0cmluZygpID09ICJtYWluKCI7IH0KLQotICAgIHZv
aWQgc2V0SWQoaW50IGZ1bmN0aW9uSWQpIHsgbUlkID0gZnVuY3Rpb25JZDsgfQotICAgIGludCBn
ZXRJZCgpIGNvbnN0IHsgcmV0dXJuIG1JZDsgfQotICBwcml2YXRlOgotICAgIFROYW1lIG1OYW1l
OwotICAgIGludCBtSWQ7Ci19OworICAgIGJvb2wgaXNNYWluKCkgY29uc3QgeyByZXR1cm4gbU5h
bWUuZ2V0U3RyaW5nKCkgPT0gIm1haW4iOyB9CiAKLS8vIE5vZGUgZm9yIGZ1bmN0aW9uIGRlZmlu
aXRpb25zLgotY2xhc3MgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiA6IHB1YmxpYyBUSW50ZXJt
VHlwZWQKLXsKLSAgcHVibGljOgotICAgIC8vIFRPRE8ob2V0dWFob0BudmlkaWEuY29tKTogU2Vl
IGlmIFRGdW5jdGlvblN5bWJvbEluZm8gY291bGQgYmUgYWRkZWQgdG8gY29uc3RydWN0b3IKLSAg
ICAvLyBwYXJhbWV0ZXJzLgotICAgIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24oY29uc3QgVFR5
cGUgJnR5cGUsIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcmFtZXRlcnMsIFRJbnRlcm1CbG9jayAqYm9k
eSkKLSAgICAgICAgOiBUSW50ZXJtVHlwZWQodHlwZSksIG1QYXJhbWV0ZXJzKHBhcmFtZXRlcnMp
LCBtQm9keShib2R5KQotICAgIHsKLSAgICAgICAgQVNTRVJUKHBhcmFtZXRlcnMgIT0gbnVsbHB0
cik7Ci0gICAgICAgIEFTU0VSVChib2R5ICE9IG51bGxwdHIpOwotICAgIH0KLQotICAgIFRJbnRl
cm1GdW5jdGlvbkRlZmluaXRpb24gKmdldEFzRnVuY3Rpb25EZWZpbml0aW9uKCkgb3ZlcnJpZGUg
eyByZXR1cm4gdGhpczsgfQotICAgIHZvaWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQp
IG92ZXJyaWRlOwotICAgIGJvb2wgcmVwbGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqb3JpZ2lu
YWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkgb3ZlcnJpZGU7Ci0KLSAgICBUSW50ZXJtVHlw
ZWQgKmRlZXBDb3B5KCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFVOUkVBQ0hBQkxF
KCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICBib29sIGhhc1NpZGVFZmZl
Y3RzKCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmdldEZ1bmN0
aW9uUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1QYXJhbWV0ZXJzOyB9Ci0gICAgVEludGVy
bUJsb2NrICpnZXRCb2R5KCkgY29uc3QgeyByZXR1cm4gbUJvZHk7IH0KLQotICAgIFRGdW5jdGlv
blN5bWJvbEluZm8gKmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpIHsgcmV0dXJuICZtRnVuY3Rpb25J
bmZvOyB9Ci0gICAgY29uc3QgVEZ1bmN0aW9uU3ltYm9sSW5mbyAqZ2V0RnVuY3Rpb25TeW1ib2xJ
bmZvKCkgY29uc3QgeyByZXR1cm4gJm1GdW5jdGlvbkluZm87IH0KKyAgICB2b2lkIHNldElkKGNv
bnN0IFRTeW1ib2xVbmlxdWVJZCAmZnVuY3Rpb25JZCk7CisgICAgY29uc3QgVFN5bWJvbFVuaXF1
ZUlkICZnZXRJZCgpIGNvbnN0OwogCiAgIHByaXZhdGU6Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAq
bVBhcmFtZXRlcnM7Ci0gICAgVEludGVybUJsb2NrICptQm9keTsKLQotICAgIFRGdW5jdGlvblN5
bWJvbEluZm8gbUZ1bmN0aW9uSW5mbzsKKyAgICBUTmFtZSBtTmFtZTsKKyAgICBUU3ltYm9sVW5p
cXVlSWQgKm1JZDsKIH07CiAKIHR5cGVkZWYgVFZlY3RvcjxUSW50ZXJtTm9kZSAqPiBUSW50ZXJt
U2VxdWVuY2U7CiB0eXBlZGVmIFRWZWN0b3I8aW50PiBUUXVhbGlmaWVyTGlzdDsKIAorLy8KKy8v
IFRoaXMgaXMganVzdCB0byBoZWxwIHlhY2MuCisvLworc3RydWN0IFRJbnRlcm1GdW5jdGlvbkNh
bGxPck1ldGhvZAoreworICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzOworICAgIFRJbnRl
cm1Ob2RlICp0aGlzTm9kZTsKK307CisKIC8vIEludGVyZmFjZSBmb3Igbm9kZSBjbGFzc2VzIHRo
YXQgaGF2ZSBhbiBhcmJpdHJhcmlseSBzaXplZCBzZXQgb2YgY2hpbGRyZW4uCiBjbGFzcyBUSW50
ZXJtQWdncmVnYXRlQmFzZQogewpAQCAtNjIzLDI2ICs1OTUsMjcgQEAgY2xhc3MgVEludGVybUFn
Z3JlZ2F0ZUJhc2UKIGNsYXNzIFRJbnRlcm1BZ2dyZWdhdGUgOiBwdWJsaWMgVEludGVybU9wZXJh
dG9yLCBwdWJsaWMgVEludGVybUFnZ3JlZ2F0ZUJhc2UKIHsKICAgcHVibGljOgotICAgIFRJbnRl
cm1BZ2dyZWdhdGUoKQotICAgICAgICA6IFRJbnRlcm1PcGVyYXRvcihFT3BOdWxsKSwKLSAgICAg
ICAgICBtVXNlckRlZmluZWQoZmFsc2UpLAotICAgICAgICAgIG1Vc2VFbXVsYXRlZEZ1bmN0aW9u
KGZhbHNlKSwKLSAgICAgICAgICBtR290UHJlY2lzaW9uRnJvbUNoaWxkcmVuKGZhbHNlKQotICAg
IHsKLSAgICB9Ci0gICAgVEludGVybUFnZ3JlZ2F0ZShUT3BlcmF0b3Igb3ApCi0gICAgICAgIDog
VEludGVybU9wZXJhdG9yKG9wKSwKLSAgICAgICAgICBtVXNlckRlZmluZWQoZmFsc2UpLAotICAg
ICAgICAgIG1Vc2VFbXVsYXRlZEZ1bmN0aW9uKGZhbHNlKSwKLSAgICAgICAgICBtR290UHJlY2lz
aW9uRnJvbUNoaWxkcmVuKGZhbHNlKQotICAgIHsKLSAgICB9Ci0gICAgflRJbnRlcm1BZ2dyZWdh
dGUoKSB7IH0KKyAgICBzdGF0aWMgVEludGVybUFnZ3JlZ2F0ZSAqQ3JlYXRlRnVuY3Rpb25DYWxs
KGNvbnN0IFRGdW5jdGlvbiAmZnVuYywgVEludGVybVNlcXVlbmNlICphcmd1bWVudHMpOworCisg
ICAgLy8gSWYgdXNpbmcgdGhpcywgZW5zdXJlIHRoYXQgdGhlcmUncyBhIGNvbnNpc3RlbnQgZnVu
Y3Rpb24gZGVmaW5pdGlvbiB3aXRoIHRoZSBzYW1lIHN5bWJvbCBpZAorICAgIC8vIGFkZGVkIHRv
IHRoZSBBU1QuCisgICAgc3RhdGljIFRJbnRlcm1BZ2dyZWdhdGUgKkNyZWF0ZUZ1bmN0aW9uQ2Fs
bChjb25zdCBUVHlwZSAmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2xVbmlxdWVJZCAmaWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUTmFtZSAmbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5j
ZSAqYXJndW1lbnRzKTsKKworICAgIHN0YXRpYyBUSW50ZXJtQWdncmVnYXRlICpDcmVhdGVCdWls
dEluRnVuY3Rpb25DYWxsKGNvbnN0IFRGdW5jdGlvbiAmZnVuYywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKmFy
Z3VtZW50cyk7CisgICAgc3RhdGljIFRJbnRlcm1BZ2dyZWdhdGUgKkNyZWF0ZUNvbnN0cnVjdG9y
KGNvbnN0IFRUeXBlICZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzKTsKKyAgICBzdGF0aWMg
VEludGVybUFnZ3JlZ2F0ZSAqQ3JlYXRlKGNvbnN0IFRUeXBlICZ0eXBlLCBUT3BlcmF0b3Igb3As
IFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzKTsKKyAgICB+VEludGVybUFnZ3JlZ2F0ZSgpIHt9
CiAKICAgICAvLyBOb3RlOiBvbmx5IHN1cHBvcnRlZCBmb3Igbm9kZXMgdGhhdCBjYW4gYmUgYSBw
YXJ0IG9mIGFuIGV4cHJlc3Npb24uCiAgICAgVEludGVybVR5cGVkICpkZWVwQ29weSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG5ldyBUSW50ZXJtQWdncmVnYXRlKCp0aGlzKTsgfQogCi0gICAg
dm9pZCBzZXRPcChUT3BlcmF0b3Igb3ApIHsgbU9wID0gb3A7IH0KKyAgICBUSW50ZXJtQWdncmVn
YXRlICpzaGFsbG93Q29weSgpIGNvbnN0OwogCiAgICAgVEludGVybUFnZ3JlZ2F0ZSAqZ2V0QXNB
Z2dyZWdhdGUoKSBvdmVycmlkZSB7IHJldHVybiB0aGlzOyB9CiAgICAgdm9pZCB0cmF2ZXJzZShU
SW50ZXJtVHJhdmVyc2VyICppdCkgb3ZlcnJpZGU7CkBAIC02NTIsMTkgKzYyNSwxNCBAQCBjbGFz
cyBUSW50ZXJtQWdncmVnYXRlIDogcHVibGljIFRJbnRlcm1PcGVyYXRvciwgcHVibGljIFRJbnRl
cm1BZ2dyZWdhdGVCYXNlCiAgICAgYm9vbCBoYXNTaWRlRWZmZWN0cygpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KICAgICBUSW50ZXJtVHlwZWQgKmZvbGQoVERpYWdub3N0aWNzICpk
aWFnbm9zdGljcyk7CiAKLSAgICBUSW50ZXJtU2VxdWVuY2UgKmdldFNlcXVlbmNlKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gJm1TZXF1ZW5jZTsgfQotICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAqZ2V0
U2VxdWVuY2UoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAmbVNlcXVlbmNlOyB9CisgICAgVElu
dGVybVNlcXVlbmNlICpnZXRTZXF1ZW5jZSgpIG92ZXJyaWRlIHsgcmV0dXJuICZtQXJndW1lbnRz
OyB9CisgICAgY29uc3QgVEludGVybVNlcXVlbmNlICpnZXRTZXF1ZW5jZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICZtQXJndW1lbnRzOyB9CiAKLSAgICB2b2lkIHNldFVzZXJEZWZpbmVkKCkg
eyBtVXNlckRlZmluZWQgPSB0cnVlOyB9Ci0gICAgYm9vbCBpc1VzZXJEZWZpbmVkKCkgY29uc3Qg
eyByZXR1cm4gbVVzZXJEZWZpbmVkOyB9CisgICAgVFN0cmluZyBnZXRTeW1ib2xUYWJsZU1hbmds
ZWROYW1lKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSB7IG1V
c2VFbXVsYXRlZEZ1bmN0aW9uID0gdHJ1ZTsgfQogICAgIGJvb2wgZ2V0VXNlRW11bGF0ZWRGdW5j
dGlvbigpIHsgcmV0dXJuIG1Vc2VFbXVsYXRlZEZ1bmN0aW9uOyB9CiAKLSAgICBib29sIGFyZUNo
aWxkcmVuQ29uc3RRdWFsaWZpZWQoKTsKLSAgICB2b2lkIHNldFByZWNpc2lvbkZyb21DaGlsZHJl
bigpOwotICAgIHZvaWQgc2V0QnVpbHRJbkZ1bmN0aW9uUHJlY2lzaW9uKCk7Ci0KICAgICAvLyBS
ZXR1cm5zIHRydWUgaWYgY2hhbmdpbmcgcGFyYW1ldGVyIHByZWNpc2lvbiBtYXkgYWZmZWN0IHRo
ZSByZXR1cm4gdmFsdWUuCiAgICAgYm9vbCBnb3RQcmVjaXNpb25Gcm9tQ2hpbGRyZW4oKSBjb25z
dCB7IHJldHVybiBtR290UHJlY2lzaW9uRnJvbUNoaWxkcmVuOyB9CiAKQEAgLTY3MiwxMSArNjQw
LDEwIEBAIGNsYXNzIFRJbnRlcm1BZ2dyZWdhdGUgOiBwdWJsaWMgVEludGVybU9wZXJhdG9yLCBw
dWJsaWMgVEludGVybUFnZ3JlZ2F0ZUJhc2UKICAgICBjb25zdCBURnVuY3Rpb25TeW1ib2xJbmZv
ICpnZXRGdW5jdGlvblN5bWJvbEluZm8oKSBjb25zdCB7IHJldHVybiAmbUZ1bmN0aW9uSW5mbzsg
fQogCiAgIHByb3RlY3RlZDoKLSAgICBUSW50ZXJtU2VxdWVuY2UgbVNlcXVlbmNlOwotICAgIGJv
b2wgbVVzZXJEZWZpbmVkOyAvLyB1c2VkIGZvciB1c2VyIGRlZmluZWQgZnVuY3Rpb24gbmFtZXMK
KyAgICBUSW50ZXJtU2VxdWVuY2UgbUFyZ3VtZW50czsKIAogICAgIC8vIElmIHNldCB0byB0cnVl
LCByZXBsYWNlIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBjYWxsIHdpdGggYW4gZW11bGF0ZWQgb25l
Ci0gICAgLy8gdG8gd29yayBhcm91bmQgZHJpdmVyIGJ1Z3MuCisgICAgLy8gdG8gd29yayBhcm91
bmQgZHJpdmVyIGJ1Z3MuIE9ubHkgZm9yIGNhbGxzIG1hcHBlZCB0byBvcHMgb3RoZXIgdGhhbiBF
T3BDYWxsKi4KICAgICBib29sIG1Vc2VFbXVsYXRlZEZ1bmN0aW9uOwogCiAgICAgYm9vbCBtR290
UHJlY2lzaW9uRnJvbUNoaWxkcmVuOwpAQCAtNjg0LDcgKzY1MSwyNCBAQCBjbGFzcyBUSW50ZXJt
QWdncmVnYXRlIDogcHVibGljIFRJbnRlcm1PcGVyYXRvciwgcHVibGljIFRJbnRlcm1BZ2dyZWdh
dGVCYXNlCiAgICAgVEZ1bmN0aW9uU3ltYm9sSW5mbyBtRnVuY3Rpb25JbmZvOwogCiAgIHByaXZh
dGU6CisgICAgVEludGVybUFnZ3JlZ2F0ZShjb25zdCBUVHlwZSAmdHlwZSwgVE9wZXJhdG9yIG9w
LCBUSW50ZXJtU2VxdWVuY2UgKmFyZ3VtZW50cyk7CisKICAgICBUSW50ZXJtQWdncmVnYXRlKGNv
bnN0IFRJbnRlcm1BZ2dyZWdhdGUgJm5vZGUpOyAgLy8gbm90ZTogbm90IGRlbGV0ZWQsIGp1c3Qg
cHJpdmF0ZSEKKworICAgIHZvaWQgc2V0VHlwZVByZWNpc2lvbkFuZFF1YWxpZmllcihjb25zdCBU
VHlwZSAmdHlwZSk7CisKKyAgICBib29sIGFyZUNoaWxkcmVuQ29uc3RRdWFsaWZpZWQoKTsKKwor
ICAgIHZvaWQgc2V0UHJlY2lzaW9uRnJvbUNoaWxkcmVuKCk7CisKKyAgICB2b2lkIHNldFByZWNp
c2lvbkZvckJ1aWx0SW5PcCgpOworCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHByZWNpc2lvbiB3
YXMgc2V0IGFjY29yZGluZyB0byBzcGVjaWFsIHJ1bGVzIGZvciB0aGlzIGJ1aWx0LWluLgorICAg
IGJvb2wgc2V0UHJlY2lzaW9uRm9yU3BlY2lhbEJ1aWx0SW5PcCgpOworCisgICAgLy8gVXNlZCBm
b3IgYnVpbHQtaW4gZnVuY3Rpb25zIHVuZGVyIEVPcENhbGxCdWlsdEluRnVuY3Rpb24uIFRoZSBm
dW5jdGlvbiBuYW1lIGluIHRoZSBzeW1ib2wKKyAgICAvLyBpbmZvIG5lZWRzIHRvIGJlIHNldCBi
ZWZvcmUgY2FsbGluZyB0aGlzLgorICAgIHZvaWQgc2V0QnVpbHRJbkZ1bmN0aW9uUHJlY2lzaW9u
KCk7CiB9OwogCiAvLyBBIGxpc3Qgb2Ygc3RhdGVtZW50cy4gRWl0aGVyIHRoZSByb290IG5vZGUg
d2hpY2ggY29udGFpbnMgZGVjbGFyYXRpb25zIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucywKQEAg
LTcwOSw2ICs2OTMsMTE1IEBAIGNsYXNzIFRJbnRlcm1CbG9jayA6IHB1YmxpYyBUSW50ZXJtTm9k
ZSwgcHVibGljIFRJbnRlcm1BZ2dyZWdhdGVCYXNlCiAgICAgVEludGVybVNlcXVlbmNlIG1TdGF0
ZW1lbnRzOwogfTsKIAorLy8gRnVuY3Rpb24gcHJvdG90eXBlLiBNYXkgYmUgaW4gdGhlIEFTVCBl
aXRoZXIgYXMgYSBmdW5jdGlvbiBwcm90b3R5cGUgZGVjbGFyYXRpb24gb3IgYXMgYSBwYXJ0IG9m
CisvLyBhIGZ1bmN0aW9uIGRlZmluaXRpb24uIFRoZSB0eXBlIG9mIHRoZSBub2RlIGlzIHRoZSBm
dW5jdGlvbiByZXR1cm4gdHlwZS4KK2NsYXNzIFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSA6IHB1
YmxpYyBUSW50ZXJtVHlwZWQsIHB1YmxpYyBUSW50ZXJtQWdncmVnYXRlQmFzZQoreworICBwdWJs
aWM6CisgICAgLy8gVE9ETyhvZXR1YWhvQG52aWRpYS5jb20pOiBTZWUgaWYgVEZ1bmN0aW9uU3lt
Ym9sSW5mbyBjb3VsZCBiZSBhZGRlZCB0byBjb25zdHJ1Y3RvcgorICAgIC8vIHBhcmFtZXRlcnMu
CisgICAgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlKGNvbnN0IFRUeXBlICZ0eXBlLCBjb25zdCBU
U3ltYm9sVW5pcXVlSWQgJmlkKQorICAgICAgICA6IFRJbnRlcm1UeXBlZCh0eXBlKSwgbUZ1bmN0
aW9uSW5mbyhpZCkKKyAgICB7CisgICAgfQorICAgIH5USW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUo
KSB7fQorCisgICAgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlICpnZXRBc0Z1bmN0aW9uUHJvdG90
eXBlTm9kZSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH0KKyAgICB2b2lkIHRyYXZlcnNlKFRJ
bnRlcm1UcmF2ZXJzZXIgKml0KSBvdmVycmlkZTsKKyAgICBib29sIHJlcGxhY2VDaGlsZE5vZGUo
VEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpIG92ZXJyaWRl
OworCisgICAgVEludGVybVR5cGVkICpkZWVwQ29weSgpIGNvbnN0IG92ZXJyaWRlCisgICAgewor
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cisg
ICAgYm9vbCBoYXNTaWRlRWZmZWN0cygpIGNvbnN0IG92ZXJyaWRlCisgICAgeworICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBPbmx5
IGludGVuZGVkIGZvciBpbml0aWFsbHkgYnVpbGRpbmcgdGhlIGRlY2xhcmF0aW9uLgorICAgIHZv
aWQgYXBwZW5kUGFyYW1ldGVyKFRJbnRlcm1TeW1ib2wgKnBhcmFtZXRlcik7CisKKyAgICBUSW50
ZXJtU2VxdWVuY2UgKmdldFNlcXVlbmNlKCkgb3ZlcnJpZGUgeyByZXR1cm4gJm1QYXJhbWV0ZXJz
OyB9CisgICAgY29uc3QgVEludGVybVNlcXVlbmNlICpnZXRTZXF1ZW5jZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuICZtUGFyYW1ldGVyczsgfQorCisgICAgVEZ1bmN0aW9uU3ltYm9sSW5mbyAq
Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCkgeyByZXR1cm4gJm1GdW5jdGlvbkluZm87IH0KKyAgICBj
b25zdCBURnVuY3Rpb25TeW1ib2xJbmZvICpnZXRGdW5jdGlvblN5bWJvbEluZm8oKSBjb25zdCB7
IHJldHVybiAmbUZ1bmN0aW9uSW5mbzsgfQorCisgIHByb3RlY3RlZDoKKyAgICBUSW50ZXJtU2Vx
dWVuY2UgbVBhcmFtZXRlcnM7CisKKyAgICBURnVuY3Rpb25TeW1ib2xJbmZvIG1GdW5jdGlvbklu
Zm87Cit9OworCisvLyBOb2RlIGZvciBmdW5jdGlvbiBkZWZpbml0aW9ucy4gVGhlIHByb3RvdHlw
ZSBjaGlsZCBub2RlIHN0b3JlcyB0aGUgZnVuY3Rpb24gaGVhZGVyIGluY2x1ZGluZworLy8gcGFy
YW1ldGVycywgYW5kIHRoZSBib2R5IGNoaWxkIG5vZGUgc3RvcmVzIHRoZSBmdW5jdGlvbiBib2R5
LgorY2xhc3MgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiA6IHB1YmxpYyBUSW50ZXJtTm9kZQor
eworICBwdWJsaWM6CisgICAgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbihUSW50ZXJtRnVuY3Rp
b25Qcm90b3R5cGUgKnByb3RvdHlwZSwgVEludGVybUJsb2NrICpib2R5KQorICAgICAgICA6IFRJ
bnRlcm1Ob2RlKCksIG1Qcm90b3R5cGUocHJvdG90eXBlKSwgbUJvZHkoYm9keSkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChwcm90b3R5cGUgIT0gbnVsbHB0cik7CisgICAgICAgIEFTU0VSVChib2R5
ICE9IG51bGxwdHIpOworICAgIH0KKworICAgIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKmdl
dEFzRnVuY3Rpb25EZWZpbml0aW9uKCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfQorICAgIHZv
aWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpIG92ZXJyaWRlOworICAgIGJvb2wgcmVw
bGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNl
bWVudCkgb3ZlcnJpZGU7CisKKyAgICBUSW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKmdldEZ1bmN0
aW9uUHJvdG90eXBlKCkgY29uc3QgeyByZXR1cm4gbVByb3RvdHlwZTsgfQorICAgIFRJbnRlcm1C
bG9jayAqZ2V0Qm9keSgpIGNvbnN0IHsgcmV0dXJuIG1Cb2R5OyB9CisKKyAgICBjb25zdCBURnVu
Y3Rpb25TeW1ib2xJbmZvICpnZXRGdW5jdGlvblN5bWJvbEluZm8oKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1Qcm90b3R5cGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpOworICAgIH0K
KworICBwcml2YXRlOgorICAgIFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAqbVByb3RvdHlwZTsK
KyAgICBUSW50ZXJtQmxvY2sgKm1Cb2R5OworfTsKKworLy8gU3RydWN0LCBpbnRlcmZhY2UgYmxv
Y2sgb3IgdmFyaWFibGUgZGVjbGFyYXRpb24uIENhbiBjb250YWluIG11bHRpcGxlIHZhcmlhYmxl
IGRlY2xhcmF0b3JzLgorY2xhc3MgVEludGVybURlY2xhcmF0aW9uIDogcHVibGljIFRJbnRlcm1O
b2RlLCBwdWJsaWMgVEludGVybUFnZ3JlZ2F0ZUJhc2UKK3sKKyAgcHVibGljOgorICAgIFRJbnRl
cm1EZWNsYXJhdGlvbigpIDogVEludGVybU5vZGUoKSB7fQorICAgIH5USW50ZXJtRGVjbGFyYXRp
b24oKSB7fQorCisgICAgVEludGVybURlY2xhcmF0aW9uICpnZXRBc0RlY2xhcmF0aW9uTm9kZSgp
IG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH0KKyAgICB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2
ZXJzZXIgKml0KSBvdmVycmlkZTsKKyAgICBib29sIHJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5v
ZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpIG92ZXJyaWRlOworCisgICAg
Ly8gT25seSBpbnRlbmRlZCBmb3IgaW5pdGlhbGx5IGJ1aWxkaW5nIHRoZSBkZWNsYXJhdGlvbi4K
KyAgICAvLyBUaGUgZGVjbGFyYXRvciBub2RlIHNob3VsZCBiZSBlaXRoZXIgVEludGVybVN5bWJv
bCBvciBUSW50ZXJtQmluYXJ5IHdpdGggb3Agc2V0IHRvCisgICAgLy8gRU9wSW5pdGlhbGl6ZS4K
KyAgICB2b2lkIGFwcGVuZERlY2xhcmF0b3IoVEludGVybVR5cGVkICpkZWNsYXJhdG9yKTsKKwor
ICAgIFRJbnRlcm1TZXF1ZW5jZSAqZ2V0U2VxdWVuY2UoKSBvdmVycmlkZSB7IHJldHVybiAmbURl
Y2xhcmF0b3JzOyB9CisgICAgY29uc3QgVEludGVybVNlcXVlbmNlICpnZXRTZXF1ZW5jZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuICZtRGVjbGFyYXRvcnM7IH0KKyAgcHJvdGVjdGVkOgorICAg
IFRJbnRlcm1TZXF1ZW5jZSBtRGVjbGFyYXRvcnM7Cit9OworCisvLyBTcGVjaWFsaXplZCBkZWNs
YXJhdGlvbnMgZm9yIGF0dHJpYnV0aW5nIGludmFyaWFuY2UuCitjbGFzcyBUSW50ZXJtSW52YXJp
YW50RGVjbGFyYXRpb24gOiBwdWJsaWMgVEludGVybU5vZGUKK3sKKyAgcHVibGljOgorICAgIFRJ
bnRlcm1JbnZhcmlhbnREZWNsYXJhdGlvbihUSW50ZXJtU3ltYm9sICpzeW1ib2wsIGNvbnN0IFRT
b3VyY2VMb2MgJmxpbmUpOworCisgICAgVEludGVybVN5bWJvbCAqZ2V0U3ltYm9sKCkgeyByZXR1
cm4gbVN5bWJvbDsgfQorCisgICAgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkg
b3ZlcnJpZGU7CisgICAgYm9vbCByZXBsYWNlQ2hpbGROb2RlKFRJbnRlcm1Ob2RlICpvcmlnaW5h
bCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KSBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAg
IFRJbnRlcm1TeW1ib2wgKm1TeW1ib2w7Cit9OworCiAvLyBGb3IgdGVybmFyeSBvcGVyYXRvcnMg
bGlrZSBhID8gYiA6IGMuCiBjbGFzcyBUSW50ZXJtVGVybmFyeSA6IHB1YmxpYyBUSW50ZXJtVHlw
ZWQKIHsKQEAgLTc3Nyw4ICs4NzAsNyBAQCBjbGFzcyBUSW50ZXJtU3dpdGNoIDogcHVibGljIFRJ
bnRlcm1Ob2RlCiAgICAgfQogCiAgICAgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICpp
dCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCByZXBsYWNlQ2hpbGROb2RlKAotICAgICAgICBUSW50ZXJt
Tm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkgb3ZlcnJpZGU7CisgICAg
Ym9vbCByZXBsYWNlQ2hpbGROb2RlKFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUg
KnJlcGxhY2VtZW50KSBvdmVycmlkZTsKIAogICAgIFRJbnRlcm1Td2l0Y2ggKmdldEFzU3dpdGNo
Tm9kZSgpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH0KIApAQCAtNzk3LDE1ICs4ODksMTAgQEAg
Y2xhc3MgVEludGVybVN3aXRjaCA6IHB1YmxpYyBUSW50ZXJtTm9kZQogY2xhc3MgVEludGVybUNh
c2UgOiBwdWJsaWMgVEludGVybU5vZGUKIHsKICAgcHVibGljOgotICAgIFRJbnRlcm1DYXNlKFRJ
bnRlcm1UeXBlZCAqY29uZGl0aW9uKQotICAgICAgICA6IFRJbnRlcm1Ob2RlKCksCi0gICAgICAg
ICAgbUNvbmRpdGlvbihjb25kaXRpb24pCi0gICAgewotICAgIH0KKyAgICBUSW50ZXJtQ2FzZShU
SW50ZXJtVHlwZWQgKmNvbmRpdGlvbikgOiBUSW50ZXJtTm9kZSgpLCBtQ29uZGl0aW9uKGNvbmRp
dGlvbikge30KIAogICAgIHZvaWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpIG92ZXJy
aWRlOwotICAgIGJvb2wgcmVwbGFjZUNoaWxkTm9kZSgKLSAgICAgICAgVEludGVybU5vZGUgKm9y
aWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpIG92ZXJyaWRlOworICAgIGJvb2wgcmVw
bGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNl
bWVudCkgb3ZlcnJpZGU7CiAKICAgICBUSW50ZXJtQ2FzZSAqZ2V0QXNDYXNlTm9kZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIHRoaXM7IH0KIApAQCAtODUxLDEyICs5MzgsMjEgQEAgY2xhc3MgVEludGVy
bVRyYXZlcnNlciA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHZpcnR1YWwgYm9vbCB2aXNpdElm
RWxzZShWaXNpdCB2aXNpdCwgVEludGVybUlmRWxzZSAqbm9kZSkgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIHZpcnR1YWwgYm9vbCB2aXNpdFN3aXRjaChWaXNpdCB2aXNpdCwgVEludGVybVN3aXRjaCAq
bm9kZSkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCB2aXNpdENhc2UoVmlzaXQg
dmlzaXQsIFRJbnRlcm1DYXNlICpub2RlKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBi
b29sIHZpc2l0RnVuY3Rpb25Qcm90b3R5cGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvblBy
b3RvdHlwZSAqbm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KICAgICB2
aXJ0dWFsIGJvb2wgdmlzaXRGdW5jdGlvbkRlZmluaXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1G
dW5jdGlvbkRlZmluaXRpb24gKm5vZGUpCiAgICAgewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAgICAgdmlydHVhbCBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJt
QWdncmVnYXRlICpub2RlKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHZpc2l0
QmxvY2soVmlzaXQgdmlzaXQsIFRJbnRlcm1CbG9jayAqbm9kZSkgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCB2aXNpdEludmFyaWFudERlY2xhcmF0aW9uKFZpc2l0IHZpc2l0LCBU
SW50ZXJtSW52YXJpYW50RGVjbGFyYXRpb24gKm5vZGUpCisgICAgeworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgdmlydHVhbCBib29sIHZpc2l0RGVjbGFyYXRpb24oVmlzaXQgdmlz
aXQsIFRJbnRlcm1EZWNsYXJhdGlvbiAqbm9kZSkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1
YWwgYm9vbCB2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wICpub2RlKSB7IHJldHVy
biB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHZpc2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50
ZXJtQnJhbmNoICpub2RlKSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTg3Myw5ICs5NjksMTIgQEAg
Y2xhc3MgVEludGVybVRyYXZlcnNlciA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHZpcnR1YWwg
dm9pZCB0cmF2ZXJzZUlmRWxzZShUSW50ZXJtSWZFbHNlICpub2RlKTsKICAgICB2aXJ0dWFsIHZv
aWQgdHJhdmVyc2VTd2l0Y2goVEludGVybVN3aXRjaCAqbm9kZSk7CiAgICAgdmlydHVhbCB2b2lk
IHRyYXZlcnNlQ2FzZShUSW50ZXJtQ2FzZSAqbm9kZSk7CisgICAgdmlydHVhbCB2b2lkIHRyYXZl
cnNlRnVuY3Rpb25Qcm90b3R5cGUoVEludGVybUZ1bmN0aW9uUHJvdG90eXBlICpub2RlKTsKICAg
ICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2VGdW5jdGlvbkRlZmluaXRpb24oVEludGVybUZ1bmN0aW9u
RGVmaW5pdGlvbiAqbm9kZSk7CiAgICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlQWdncmVnYXRlKFRJ
bnRlcm1BZ2dyZWdhdGUgKm5vZGUpOwogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZUJsb2NrKFRJ
bnRlcm1CbG9jayAqbm9kZSk7CisgICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlSW52YXJpYW50RGVj
bGFyYXRpb24oVEludGVybUludmFyaWFudERlY2xhcmF0aW9uICpub2RlKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdHJhdmVyc2VEZWNsYXJhdGlvbihUSW50ZXJtRGVjbGFyYXRpb24gKm5vZGUpOwogICAg
IHZpcnR1YWwgdm9pZCB0cmF2ZXJzZUxvb3AoVEludGVybUxvb3AgKm5vZGUpOwogICAgIHZpcnR1
YWwgdm9pZCB0cmF2ZXJzZUJyYW5jaChUSW50ZXJtQnJhbmNoICpub2RlKTsKIApAQCAtODkzLDcg
Kzk5MiwyMiBAQCBjbGFzcyBUSW50ZXJtVHJhdmVyc2VyIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAg
ICAgLy8gU3RhcnQgY3JlYXRpbmcgdGVtcG9yYXJ5IHN5bWJvbHMgZnJvbSB0aGUgZ2l2ZW4gdGVt
cG9yYXJ5IHN5bWJvbCBpbmRleCArIDEuCiAgICAgdm9pZCB1c2VUZW1wb3JhcnlJbmRleCh1bnNp
Z25lZCBpbnQgKnRlbXBvcmFyeUluZGV4KTsKIAorICAgIHN0YXRpYyBUSW50ZXJtRnVuY3Rpb25Q
cm90b3R5cGUgKkNyZWF0ZUludGVybmFsRnVuY3Rpb25Qcm90b3R5cGVOb2RlKAorICAgICAgICBj
b25zdCBUVHlwZSAmcmV0dXJuVHlwZSwKKyAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAg
ICAgY29uc3QgVFN5bWJvbFVuaXF1ZUlkICZmdW5jdGlvbklkKTsKKyAgICBzdGF0aWMgVEludGVy
bUZ1bmN0aW9uRGVmaW5pdGlvbiAqQ3JlYXRlSW50ZXJuYWxGdW5jdGlvbkRlZmluaXRpb25Ob2Rl
KAorICAgICAgICBjb25zdCBUVHlwZSAmcmV0dXJuVHlwZSwKKyAgICAgICAgY29uc3QgY2hhciAq
bmFtZSwKKyAgICAgICAgVEludGVybUJsb2NrICpmdW5jdGlvbkJvZHksCisgICAgICAgIGNvbnN0
IFRTeW1ib2xVbmlxdWVJZCAmZnVuY3Rpb25JZCk7CisgICAgc3RhdGljIFRJbnRlcm1BZ2dyZWdh
dGUgKkNyZWF0ZUludGVybmFsRnVuY3Rpb25DYWxsTm9kZShjb25zdCBUVHlwZSAmcmV0dXJuVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sVW5pcXVlSWQgJmZ1bmN0
aW9uSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKmFyZ3VtZW50cyk7CisKICAgcHJvdGVjdGVkOgor
ICAgIC8vIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRyYXZlcnNlKigpIGZ1bmN0aW9ucwog
ICAgIHZvaWQgaW5jcmVtZW50RGVwdGgoVEludGVybU5vZGUgKmN1cnJlbnQpCiAgICAgewogICAg
ICAgICBtRGVwdGgrKzsKQEAgLTkwMSwyMyArMTAxNSwzNSBAQCBjbGFzcyBUSW50ZXJtVHJhdmVy
c2VyIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgIG1QYXRoLnB1c2hfYmFjayhjdXJyZW50
KTsKICAgICB9CiAKKyAgICAvLyBTaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSB0cmF2ZXJzZSoo
KSBmdW5jdGlvbnMKICAgICB2b2lkIGRlY3JlbWVudERlcHRoKCkKICAgICB7CiAgICAgICAgIG1E
ZXB0aC0tOwogICAgICAgICBtUGF0aC5wb3BfYmFjaygpOwogICAgIH0KIAotICAgIFRJbnRlcm1O
b2RlICpnZXRQYXJlbnROb2RlKCkKKyAgICAvLyBSQUlJIGhlbHBlciBmb3IgaW5jcmVtZW50RGVw
dGgvZGVjcmVtZW50RGVwdGgKKyAgICBjbGFzcyBTY29wZWROb2RlSW5UcmF2ZXJzYWxQYXRoCiAg
ICAgewotICAgICAgICByZXR1cm4gbVBhdGguc2l6ZSgpID09IDAgPyBOVUxMIDogbVBhdGguYmFj
aygpOwotICAgIH0KKyAgICAgIHB1YmxpYzoKKyAgICAgICAgU2NvcGVkTm9kZUluVHJhdmVyc2Fs
UGF0aChUSW50ZXJtVHJhdmVyc2VyICp0cmF2ZXJzZXIsIFRJbnRlcm1Ob2RlICpjdXJyZW50KQor
ICAgICAgICAgICAgOiBtVHJhdmVyc2VyKHRyYXZlcnNlcikKKyAgICAgICAgeworICAgICAgICAg
ICAgbVRyYXZlcnNlci0+aW5jcmVtZW50RGVwdGgoY3VycmVudCk7CisgICAgICAgIH0KKyAgICAg
ICAgflNjb3BlZE5vZGVJblRyYXZlcnNhbFBhdGgoKSB7IG1UcmF2ZXJzZXItPmRlY3JlbWVudERl
cHRoKCk7IH0KKyAgICAgIHByaXZhdGU6CisgICAgICAgIFRJbnRlcm1UcmF2ZXJzZXIgKm1UcmF2
ZXJzZXI7CisgICAgfTsKKworICAgIFRJbnRlcm1Ob2RlICpnZXRQYXJlbnROb2RlKCkgeyByZXR1
cm4gbVBhdGguc2l6ZSgpIDw9IDEgPyBudWxscHRyIDogbVBhdGhbbVBhdGguc2l6ZSgpIC0gMnVd
OyB9CiAKICAgICAvLyBSZXR1cm4gdGhlIG50aCBhbmNlc3RvciBvZiB0aGUgbm9kZSBiZWluZyB0
cmF2ZXJzZWQuIGdldEFuY2VzdG9yTm9kZSgwKSA9PSBnZXRQYXJlbnROb2RlKCkKICAgICBUSW50
ZXJtTm9kZSAqZ2V0QW5jZXN0b3JOb2RlKHVuc2lnbmVkIGludCBuKQogICAgIHsKLSAgICAgICAg
aWYgKG1QYXRoLnNpemUoKSA+IG4pCisgICAgICAgIGlmIChtUGF0aC5zaXplKCkgPiBuICsgMXUp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtUGF0aFttUGF0aC5zaXplKCkgLSBuIC0g
MXVdOworICAgICAgICAgICAgcmV0dXJuIG1QYXRoW21QYXRoLnNpemUoKSAtIG4gLSAydV07CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtOTI2LDExICsxMDUy
LDYgQEAgY2xhc3MgVEludGVybVRyYXZlcnNlciA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHZv
aWQgaW5jcmVtZW50UGFyZW50QmxvY2tQb3MoKTsKICAgICB2b2lkIHBvcFBhcmVudEJsb2NrKCk7
CiAKLSAgICBib29sIHBhcmVudE5vZGVJc0Jsb2NrKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAh
bVBhcmVudEJsb2NrU3RhY2suZW1wdHkoKSAmJiBnZXRQYXJlbnROb2RlKCkgPT0gbVBhcmVudEJs
b2NrU3RhY2suYmFjaygpLm5vZGU7Ci0gICAgfQotCiAgICAgLy8gVG8gcmVwbGFjZSBhIHNpbmds
ZSBub2RlIHdpdGggbXVsdGlwbGUgbm9kZXMgb24gdGhlIHBhcmVudCBhZ2dyZWdhdGUgbm9kZQog
ICAgIHN0cnVjdCBOb2RlUmVwbGFjZVdpdGhNdWx0aXBsZUVudHJ5CiAgICAgewpAQCAtOTY2LDEw
ICsxMDg3LDEyIEBAIGNsYXNzIFRJbnRlcm1UcmF2ZXJzZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUK
ICAgICAgICAgVEludGVybVNlcXVlbmNlIGluc2VydGlvbnNBZnRlcjsKICAgICB9OwogCi0gICAg
Ly8gSGVscGVyIHRvIGluc2VydCBzdGF0ZW1lbnRzIGluIHRoZSBwYXJlbnQgYmxvY2sgKHNlcXVl
bmNlKSBvZiB0aGUgbm9kZSBjdXJyZW50bHkgYmVpbmcgdHJhdmVyc2VkLgorICAgIC8vIEhlbHBl
ciB0byBpbnNlcnQgc3RhdGVtZW50cyBpbiB0aGUgcGFyZW50IGJsb2NrIChzZXF1ZW5jZSkgb2Yg
dGhlIG5vZGUgY3VycmVudGx5IGJlaW5nCisgICAgLy8gdHJhdmVyc2VkLgogICAgIC8vIFRoZSBz
dGF0ZW1lbnRzIHdpbGwgYmUgaW5zZXJ0ZWQgYmVmb3JlIHRoZSBub2RlIGJlaW5nIHRyYXZlcnNl
ZCBvbmNlIHVwZGF0ZVRyZWUgaXMgY2FsbGVkLgogICAgIC8vIFNob3VsZCBvbmx5IGJlIGNhbGxl
ZCBkdXJpbmcgUHJlVmlzaXQgb3IgUG9zdFZpc2l0IGZyb20gc2VxdWVuY2Ugbm9kZXMuCi0gICAg
Ly8gTm90ZSB0aGF0IGluc2VydGluZyBtb3JlIHRoYW4gb25lIHNldCBvZiBub2RlcyB0byB0aGUg
c2FtZSBwYXJlbnQgbm9kZSBvbiBhIHNpbmdsZSB1cGRhdGVUcmVlIGNhbGwgaXMgbm90CisgICAg
Ly8gTm90ZSB0aGF0IGluc2VydGluZyBtb3JlIHRoYW4gb25lIHNldCBvZiBub2RlcyB0byB0aGUg
c2FtZSBwYXJlbnQgbm9kZSBvbiBhIHNpbmdsZSB1cGRhdGVUcmVlCisgICAgLy8gY2FsbCBpcyBu
b3QKICAgICAvLyBzdXBwb3J0ZWQuCiAgICAgdm9pZCBpbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRC
bG9jayhjb25zdCBUSW50ZXJtU2VxdWVuY2UgJmluc2VydGlvbnMpOwogCkBAIC05ODYsMTEgKzEx
MDksMTIgQEAgY2xhc3MgVEludGVybVRyYXZlcnNlciA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAg
IC8vIEhlbHBlciB0byBjcmVhdGUgYSB0ZW1wb3Jhcnkgc3ltYm9sIG5vZGUuCiAgICAgVEludGVy
bVN5bWJvbCAqY3JlYXRlVGVtcFN5bWJvbChjb25zdCBUVHlwZSAmdHlwZSk7CiAgICAgLy8gQ3Jl
YXRlIGEgbm9kZSB0aGF0IGRlY2xhcmVzIGJ1dCBkb2Vzbid0IGluaXRpYWxpemUgYSB0ZW1wb3Jh
cnkgc3ltYm9sLgotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmNyZWF0ZVRlbXBEZWNsYXJhdGlvbihj
b25zdCBUVHlwZSAmdHlwZSk7Ci0gICAgLy8gQ3JlYXRlIGEgbm9kZSB0aGF0IGluaXRpYWxpemVz
IHRoZSBjdXJyZW50IHRlbXBvcmFyeSBzeW1ib2wgd2l0aCBpbml0aWFsaXplciBoYXZpbmcgdGhl
IGdpdmVuIHF1YWxpZmllci4KLSAgICBUSW50ZXJtQWdncmVnYXRlICpjcmVhdGVUZW1wSW5pdERl
Y2xhcmF0aW9uKFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIsIFRRdWFsaWZpZXIgcXVhbGlmaWVy
KTsKKyAgICBUSW50ZXJtRGVjbGFyYXRpb24gKmNyZWF0ZVRlbXBEZWNsYXJhdGlvbihjb25zdCBU
VHlwZSAmdHlwZSk7CisgICAgLy8gQ3JlYXRlIGEgbm9kZSB0aGF0IGluaXRpYWxpemVzIHRoZSBj
dXJyZW50IHRlbXBvcmFyeSBzeW1ib2wgd2l0aCBpbml0aWFsaXplciBoYXZpbmcgdGhlIGdpdmVu
CisgICAgLy8gcXVhbGlmaWVyLgorICAgIFRJbnRlcm1EZWNsYXJhdGlvbiAqY3JlYXRlVGVtcElu
aXREZWNsYXJhdGlvbihUSW50ZXJtVHlwZWQgKmluaXRpYWxpemVyLCBUUXVhbGlmaWVyIHF1YWxp
Zmllcik7CiAgICAgLy8gQ3JlYXRlIGEgbm9kZSB0aGF0IGluaXRpYWxpemVzIHRoZSBjdXJyZW50
IHRlbXBvcmFyeSBzeW1ib2wgd2l0aCBpbml0aWFsaXplci4KLSAgICBUSW50ZXJtQWdncmVnYXRl
ICpjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIpOwor
ICAgIFRJbnRlcm1EZWNsYXJhdGlvbiAqY3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihUSW50ZXJt
VHlwZWQgKmluaXRpYWxpemVyKTsKICAgICAvLyBDcmVhdGUgYSBub2RlIHRoYXQgYXNzaWducyBy
aWdodE5vZGUgdG8gdGhlIGN1cnJlbnQgdGVtcG9yYXJ5IHN5bWJvbC4KICAgICBUSW50ZXJtQmlu
YXJ5ICpjcmVhdGVUZW1wQXNzaWdubWVudChUSW50ZXJtVHlwZWQgKnJpZ2h0Tm9kZSk7CiAgICAg
Ly8gSW5jcmVtZW50IHRlbXBvcmFyeSBzeW1ib2wgaW5kZXguCkBAIC0xMDE4LDkgKzExNDIsNiBA
QCBjbGFzcyBUSW50ZXJtVHJhdmVyc2VyIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgaW50IG1E
ZXB0aDsKICAgICBpbnQgbU1heERlcHRoOwogCi0gICAgLy8gQWxsIHRoZSBub2RlcyBmcm9tIHJv
b3QgdG8gdGhlIGN1cnJlbnQgbm9kZSdzIHBhcmVudCBkdXJpbmcgdHJhdmVyc2luZy4KLSAgICBU
VmVjdG9yPFRJbnRlcm1Ob2RlICo+IG1QYXRoOwotCiAgICAgYm9vbCBtSW5HbG9iYWxTY29wZTsK
IAogICAgIC8vIER1cmluZyB0cmF2ZXJzaW5nLCBzYXZlIGFsbCB0aGUgY2hhbmdlcyB0aGF0IG5l
ZWQgdG8gaGFwcGVuIGludG8KQEAgLTEwMzAsNiArMTE1MSw4IEBAIGNsYXNzIFRJbnRlcm1UcmF2
ZXJzZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBzdGQ6OnZlY3RvcjxOb2RlSW5zZXJ0TXVs
dGlwbGVFbnRyeT4gbUluc2VydGlvbnM7CiAKICAgcHJpdmF0ZToKKyAgICBzdGF0aWMgVE5hbWUg
R2V0SW50ZXJuYWxGdW5jdGlvbk5hbWUoY29uc3QgY2hhciAqbmFtZSk7CisKICAgICAvLyBUbyBy
ZXBsYWNlIGEgc2luZ2xlIG5vZGUgd2l0aCBhbm90aGVyIG9uIHRoZSBwYXJlbnQgbm9kZQogICAg
IHN0cnVjdCBOb2RlVXBkYXRlRW50cnkKICAgICB7CkBAIC0xMDYzLDYgKzExODYsOSBAQCBjbGFz
cyBUSW50ZXJtVHJhdmVyc2VyIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICBzdGQ6OnZlY3Rv
cjxOb2RlVXBkYXRlRW50cnk+IG1SZXBsYWNlbWVudHM7CiAKKyAgICAvLyBBbGwgdGhlIG5vZGVz
IGZyb20gcm9vdCB0byB0aGUgY3VycmVudCBub2RlIGR1cmluZyB0cmF2ZXJzaW5nLgorICAgIFRW
ZWN0b3I8VEludGVybU5vZGUgKj4gbVBhdGg7CisKICAgICAvLyBBbGwgdGhlIGNvZGUgYmxvY2tz
IGZyb20gdGhlIHJvb3QgdG8gdGhlIGN1cnJlbnQgbm9kZSdzIHBhcmVudCBkdXJpbmcgdHJhdmVy
c2FsLgogICAgIHN0ZDo6dmVjdG9yPFBhcmVudEJsb2NrPiBtUGFyZW50QmxvY2tTdGFjazsKIApA
QCAtMTA5MCw3ICsxMjE2LDcgQEAgY2xhc3MgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyIDogcHVi
bGljIFRJbnRlcm1UcmF2ZXJzZXIKIAogICAgIHZvaWQgdHJhdmVyc2VCaW5hcnkoVEludGVybUJp
bmFyeSAqbm9kZSkgZmluYWw7CiAgICAgdm9pZCB0cmF2ZXJzZVVuYXJ5KFRJbnRlcm1VbmFyeSAq
bm9kZSkgZmluYWw7Ci0gICAgdm9pZCB0cmF2ZXJzZUZ1bmN0aW9uRGVmaW5pdGlvbihUSW50ZXJt
RnVuY3Rpb25EZWZpbml0aW9uICpub2RlKSBmaW5hbDsKKyAgICB2b2lkIHRyYXZlcnNlRnVuY3Rp
b25Qcm90b3R5cGUoVEludGVybUZ1bmN0aW9uUHJvdG90eXBlICpub2RlKSBmaW5hbDsKICAgICB2
b2lkIHRyYXZlcnNlQWdncmVnYXRlKFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIGZpbmFsOwogCiAg
IHByb3RlY3RlZDoKQEAgLTEwOTksMTAgKzEyMjUsNiBAQCBjbGFzcyBUTFZhbHVlVHJhY2tpbmdU
cmF2ZXJzZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgICAgICByZXR1cm4gbU9wZXJh
dG9yUmVxdWlyZXNMVmFsdWUgfHwgbUluRnVuY3Rpb25DYWxsT3V0UGFyYW1ldGVyOwogICAgIH0K
IAotICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBwcm90b3R5cGUgb3IgZGVmaW5pdGlvbiBvZiB0
aGUgZnVuY3Rpb24gYmVpbmcgY2FsbGVkIGhhcyBiZWVuIGVuY291bnRlcmVkCi0gICAgLy8gZHVy
aW5nIHRyYXZlcnNhbC4KLSAgICBib29sIGlzSW5GdW5jdGlvbk1hcChjb25zdCBUSW50ZXJtQWdn
cmVnYXRlICpjYWxsTm9kZSkgY29uc3Q7Ci0KICAgcHJpdmF0ZToKICAgICAvLyBUcmFjayB3aGV0
aGVyIGFuIGwtdmFsdWUgaXMgcmVxdWlyZWQgaW4gdGhlIG5vZGUgdGhhdCBpcyBjdXJyZW50bHkg
YmVpbmcgdHJhdmVyc2VkIGJ5IHRoZQogICAgIC8vIHN1cnJvdW5kaW5nIG9wZXJhdG9yLgpAQCAt
MTExNCw3ICsxMjM2LDExIEBAIGNsYXNzIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlciA6IHB1Ymxp
YyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgYm9vbCBvcGVyYXRvclJlcXVpcmVzTFZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbU9wZXJhdG9yUmVxdWlyZXNMVmFsdWU7IH0KIAogICAgIC8vIEFkZCBhIGZ1
bmN0aW9uIGVuY291bnRlcmVkIGR1cmluZyB0cmF2ZXJzYWwgdG8gdGhlIGZ1bmN0aW9uIG1hcC4K
LSAgICB2b2lkIGFkZFRvRnVuY3Rpb25NYXAoY29uc3QgVE5hbWUgJm5hbWUsIFRJbnRlcm1TZXF1
ZW5jZSAqcGFyYW1TZXF1ZW5jZSk7CisgICAgdm9pZCBhZGRUb0Z1bmN0aW9uTWFwKGNvbnN0IFRT
eW1ib2xVbmlxdWVJZCAmaWQsIFRJbnRlcm1TZXF1ZW5jZSAqcGFyYW1TZXF1ZW5jZSk7CisKKyAg
ICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgcHJvdG90eXBlIG9yIGRlZmluaXRpb24gb2YgdGhlIGZ1
bmN0aW9uIGJlaW5nIGNhbGxlZCBoYXMgYmVlbiBlbmNvdW50ZXJlZAorICAgIC8vIGR1cmluZyB0
cmF2ZXJzYWwuCisgICAgYm9vbCBpc0luRnVuY3Rpb25NYXAoY29uc3QgVEludGVybUFnZ3JlZ2F0
ZSAqY2FsbE5vZGUpIGNvbnN0OwogCiAgICAgLy8gUmV0dXJuIHRoZSBwYXJhbWV0ZXJzIHNlcXVl
bmNlIGZyb20gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgcHJvdG90eXBlLgogICAgIFRJbnRl
cm1TZXF1ZW5jZSAqZ2V0RnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnN0IFRJbnRlcm1BZ2dyZWdhdGUg
KmNhbGxOb2RlKTsKQEAgLTExMjYsMjAgKzEyNTIsOCBAQCBjbGFzcyBUTFZhbHVlVHJhY2tpbmdU
cmF2ZXJzZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgIGJvb2wgbU9wZXJhdG9yUmVx
dWlyZXNMVmFsdWU7CiAgICAgYm9vbCBtSW5GdW5jdGlvbkNhbGxPdXRQYXJhbWV0ZXI7CiAKLSAg
ICBzdHJ1Y3QgVE5hbWVDb21wYXJhdG9yCi0gICAgewotICAgICAgICBib29sIG9wZXJhdG9yKCko
Y29uc3QgVE5hbWUgJmEsIGNvbnN0IFROYW1lICZiKSBjb25zdAotICAgICAgICB7Ci0gICAgICAg
ICAgICBpbnQgY29tcGFyZVJlc3VsdCA9IGEuZ2V0U3RyaW5nKCkuY29tcGFyZShiLmdldFN0cmlu
ZygpKTsKLSAgICAgICAgICAgIGlmIChjb21wYXJlUmVzdWx0ICE9IDApCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGNvbXBhcmVSZXN1bHQgPCAwOwotICAgICAgICAgICAgLy8gSW50ZXJuYWwgZnVu
Y3Rpb25zIG1heSBoYXZlIHNhbWUgbmFtZXMgYXMgbm9uLWludGVybmFsIGZ1bmN0aW9ucy4KLSAg
ICAgICAgICAgIHJldHVybiAhYS5pc0ludGVybmFsKCkgJiYgYi5pc0ludGVybmFsKCk7Ci0gICAg
ICAgIH0KLSAgICB9OwotCi0gICAgLy8gTWFwIGZyb20gbWFuZ2xlZCBmdW5jdGlvbiBuYW1lcyB0
byB0aGVpciBwYXJhbWV0ZXIgc2VxdWVuY2VzCi0gICAgVE1hcDxUTmFtZSwgVEludGVybVNlcXVl
bmNlICosIFROYW1lQ29tcGFyYXRvcj4gbUZ1bmN0aW9uTWFwOworICAgIC8vIE1hcCBmcm9tIGZ1
bmN0aW9uIHN5bWJvbCBpZCB2YWx1ZXMgdG8gdGhlaXIgcGFyYW1ldGVyIHNlcXVlbmNlcworICAg
IFRNYXA8aW50LCBUSW50ZXJtU2VxdWVuY2UgKj4gbUZ1bmN0aW9uTWFwOwogCiAgICAgY29uc3Qg
VFN5bWJvbFRhYmxlICZtU3ltYm9sVGFibGU7CiAgICAgY29uc3QgaW50IG1TaGFkZXJWZXJzaW9u
OwpAQCAtMTE1NCw4ICsxMjY4LDkgQEAgY2xhc3MgVE1heERlcHRoVHJhdmVyc2VyIDogcHVibGlj
IFRJbnRlcm1UcmF2ZXJzZXIKICAgcHVibGljOgogICAgIFBPT0xfQUxMT0NBVE9SX05FV19ERUxF
VEUoKTsKICAgICBUTWF4RGVwdGhUcmF2ZXJzZXIoaW50IGRlcHRoTGltaXQpCi0gICAgICAgIDog
VEludGVybVRyYXZlcnNlcih0cnVlLCB0cnVlLCBmYWxzZSksCi0gICAgICAgICAgbURlcHRoTGlt
aXQoZGVwdGhMaW1pdCkgeyB9CisgICAgICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCB0cnVl
LCBmYWxzZSksIG1EZXB0aExpbWl0KGRlcHRoTGltaXQpCisgICAgeworICAgIH0KIAogICAgIGJv
b2wgdmlzaXRCaW5hcnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkgKikgb3ZlcnJpZGUgeyByZXR1cm4g
ZGVwdGhDaGVjaygpOyB9CiAgICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0LCBUSW50ZXJtVW5hcnkg
Kikgb3ZlcnJpZGUgeyByZXR1cm4gZGVwdGhDaGVjaygpOyB9CkBAIC0xMTcyLDQgKzEyODcsNiBA
QCBjbGFzcyBUTWF4RGVwdGhUcmF2ZXJzZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAg
IGludCBtRGVwdGhMaW1pdDsKIH07CiAKK30gIC8vIG5hbWVzcGFjZSBzaAorCiAjZW5kaWYgIC8v
IENPTVBJTEVSX1RSQU5TTEFUT1JfSU5URVJNTk9ERV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZVBhdHRlcm5N
YXRjaGVyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL0ludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5jcHAKaW5kZXggNDE3N2IwNWFjYjc4NmM0Y2Iy
MWMzNWMzZDRkZDRkMzU2MzkzOTJiMi4uYmMwODQ3ZDUyM2M5OTJhNzc4ZjdmMzg4YzdiYjdlY2M1
ZGFjYzljMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlUGF0dGVybk1h
dGNoZXIuY3BwCkBAIC0xMiw2ICsxMiw5IEBACiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL0ludGVybU5vZGUuaCIKIAorbmFtZXNwYWNlIHNoCit7CisKIEludGVybU5vZGVQYXR0ZXJu
TWF0Y2hlcjo6SW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyKGNvbnN0IHVuc2lnbmVkIGludCBtYXNr
KSA6IG1NYXNrKG1hc2spCiB7CiB9CkBAIC04NCw4ICs4Nyw3IEBAIGJvb2wgSW50ZXJtTm9kZVBh
dHRlcm5NYXRjaGVyOjptYXRjaChUSW50ZXJtQWdncmVnYXRlICpub2RlLCBUSW50ZXJtTm9kZSAq
cGFyZW50CiAgICAgICAgICAgICAgICAgIChwYXJlbnRCaW5hcnktPmdldE9wKCkgPT0gRU9wQXNz
aWduIHx8IHBhcmVudEJpbmFyeS0+Z2V0T3AoKSA9PSBFT3BJbml0aWFsaXplKSk7CiAKICAgICAg
ICAgICAgIGlmIChub2RlLT5nZXRUeXBlKCkuaXNBcnJheSgpICYmICFwYXJlbnRJc0Fzc2lnbm1l
bnQgJiYKLSAgICAgICAgICAgICAgICAobm9kZS0+aXNDb25zdHJ1Y3RvcigpIHx8IG5vZGUtPmdl
dE9wKCkgPT0gRU9wRnVuY3Rpb25DYWxsKSAmJgotICAgICAgICAgICAgICAgICFwYXJlbnROb2Rl
LT5nZXRBc0Jsb2NrKCkpCisgICAgICAgICAgICAgICAgKG5vZGUtPmlzQ29uc3RydWN0b3IoKSB8
fCBub2RlLT5pc0Z1bmN0aW9uQ2FsbCgpKSAmJiAhcGFyZW50Tm9kZS0+Z2V0QXNCbG9jaygpKQog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
fQpAQCAtMTAyLDMgKzEwNCwxNCBAQCBib29sIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlcjo6bWF0
Y2goVEludGVybVRlcm5hcnkgKm5vZGUpCiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KKwor
Ym9vbCBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXI6Om1hdGNoKFRJbnRlcm1EZWNsYXJhdGlvbiAq
bm9kZSkKK3sKKyAgICBpZiAoKG1NYXNrICYga011bHRpRGVjbGFyYXRpb24pICE9IDApCisgICAg
eworICAgICAgICByZXR1cm4gbm9kZS0+Z2V0U2VxdWVuY2UoKS0+c2l6ZSgpID4gMTsKKyAgICB9
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ludGVybU5v
ZGVQYXR0ZXJuTWF0Y2hlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyLmgKaW5kZXggM2UyNGY4NTYwZTEy
YWM5NWJlM2ExYjUzNjRlM2JmNjRmODM2MDIyMy4uYzE1NjEwMGI1M2NkZTMwMzBjYmM4ZGQ4MTdj
ZjY1NTg1YjBhMGE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZVBhdHRl
cm5NYXRjaGVyLmgKQEAgLTExLDEwICsxMSwxNCBAQAogI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xB
VE9SX0lOVEVSTU5PREVQQVRURVJOTUFUQ0hFUl9IXwogI2RlZmluZSBDT01QSUxFUl9UUkFOU0xB
VE9SX0lOVEVSTU5PREVQQVRURVJOTUFUQ0hFUl9IXwogCituYW1lc3BhY2Ugc2gKK3sKKwogY2xh
c3MgVEludGVybUFnZ3JlZ2F0ZTsKIGNsYXNzIFRJbnRlcm1CaW5hcnk7CiBjbGFzcyBUSW50ZXJt
Tm9kZTsKIGNsYXNzIFRJbnRlcm1UZXJuYXJ5OworY2xhc3MgVEludGVybURlY2xhcmF0aW9uOwog
CiBjbGFzcyBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIKIHsKQEAgLTMxLDcgKzM1LDEwIEBAIGNs
YXNzIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlcgogICAgICAgICBrRXhwcmVzc2lvblJldHVybmlu
Z0FycmF5ID0gMHgwMDAyLAogCiAgICAgICAgIC8vIE1hdGNoZXMgZHluYW1pYyBpbmRleGluZyBv
ZiB2ZWN0b3JzIG9yIG1hdHJpY2VzIGluIGwtdmFsdWVzLgotICAgICAgICBrRHluYW1pY0luZGV4
aW5nT2ZWZWN0b3JPck1hdHJpeEluTFZhbHVlID0gMHgwMDA0CisgICAgICAgIGtEeW5hbWljSW5k
ZXhpbmdPZlZlY3Rvck9yTWF0cml4SW5MVmFsdWUgPSAweDAwMDQsCisKKyAgICAgICAgLy8gTWF0
Y2hlcyBkZWNsYXJhdGlvbnMgd2l0aCBtb3JlIHRoYW4gb25lIGRlY2xhcmVkIHZhcmlhYmxlcwor
ICAgICAgICBrTXVsdGlEZWNsYXJhdGlvbiA9IDB4MDAwOCwKICAgICB9OwogICAgIEludGVybU5v
ZGVQYXR0ZXJuTWF0Y2hlcihjb25zdCB1bnNpZ25lZCBpbnQgbWFzayk7CiAKQEAgLTQzLDYgKzUw
LDcgQEAgY2xhc3MgSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyCiAKICAgICBib29sIG1hdGNoKFRJ
bnRlcm1BZ2dyZWdhdGUgKm5vZGUsIFRJbnRlcm1Ob2RlICpwYXJlbnROb2RlKTsKICAgICBib29s
IG1hdGNoKFRJbnRlcm1UZXJuYXJ5ICpub2RlKTsKKyAgICBib29sIG1hdGNoKFRJbnRlcm1EZWNs
YXJhdGlvbiAqbm9kZSk7CiAKICAgcHJpdmF0ZToKICAgICBjb25zdCB1bnNpZ25lZCBpbnQgbU1h
c2s7CkBAIC01MCw0ICs1OCw2IEBAIGNsYXNzIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlcgogICAg
IGJvb2wgbWF0Y2hJbnRlcm5hbChUSW50ZXJtQmluYXJ5ICpub2RlLCBUSW50ZXJtTm9kZSAqcGFy
ZW50Tm9kZSk7CiB9OwogCit9ICAvLyBuYW1lc3BhY2Ugc2gKKwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1U
cmF2ZXJzZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9JbnRlcm1UcmF2ZXJzZS5jcHAKaW5kZXggMjlmODFmNDAxZmRjNzg3NTczNWRlMTlkMjFl
MDU2YjVmNzRjYWQ1Yy4uMTgxOWFiOGU1ZjJmMDYxMGE1MjJkNzg5MWY0MDc5YjE1NTVlN2E2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvSW50ZXJtVHJhdmVyc2UuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0ludGVybVRyYXZlcnNlLmNwcApAQCAtOCw2ICs4LDkgQEAKICNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogdm9pZCBU
SW50ZXJtU3ltYm9sOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkKIHsKICAgICBpdC0+
dHJhdmVyc2VTeW1ib2wodGhpcyk7CkBAIC02OCw2ICs3MSwyMSBAQCB2b2lkIFRJbnRlcm1CbG9j
azo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpCiAgICAgaXQtPnRyYXZlcnNlQmxvY2so
dGhpcyk7CiB9CiAKK3ZvaWQgVEludGVybUludmFyaWFudERlY2xhcmF0aW9uOjp0cmF2ZXJzZShU
SW50ZXJtVHJhdmVyc2VyICppdCkKK3sKKyAgICBpdC0+dHJhdmVyc2VJbnZhcmlhbnREZWNsYXJh
dGlvbih0aGlzKTsKK30KKwordm9pZCBUSW50ZXJtRGVjbGFyYXRpb246OnRyYXZlcnNlKFRJbnRl
cm1UcmF2ZXJzZXIgKml0KQoreworICAgIGl0LT50cmF2ZXJzZURlY2xhcmF0aW9uKHRoaXMpOwor
fQorCit2b2lkIFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZTo6dHJhdmVyc2UoVEludGVybVRyYXZl
cnNlciAqaXQpCit7CisgICAgaXQtPnRyYXZlcnNlRnVuY3Rpb25Qcm90b3R5cGUodGhpcyk7Cit9
CisKIHZvaWQgVEludGVybUFnZ3JlZ2F0ZTo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQp
CiB7CiAgICAgaXQtPnRyYXZlcnNlQWdncmVnYXRlKHRoaXMpOwpAQCAtODcsNyArMTA1LDcgQEAg
VEludGVybVRyYXZlcnNlcjo6VEludGVybVRyYXZlcnNlcihib29sIHByZVZpc2l0LCBib29sIGlu
VmlzaXQsIGJvb2wgcG9zdFZpc2l0KQogICAgIDogcHJlVmlzaXQocHJlVmlzaXQpLAogICAgICAg
aW5WaXNpdChpblZpc2l0KSwKICAgICAgIHBvc3RWaXNpdChwb3N0VmlzaXQpLAotICAgICAgbURl
cHRoKDApLAorICAgICAgbURlcHRoKC0xKSwKICAgICAgIG1NYXhEZXB0aCgwKSwKICAgICAgIG1J
bkdsb2JhbFNjb3BlKHRydWUpLAogICAgICAgbVRlbXBvcmFyeUluZGV4KG51bGxwdHIpCkBAIC0x
MjQsOCArMTQyLDE2IEBAIHZvaWQgVEludGVybVRyYXZlcnNlcjo6aW5zZXJ0U3RhdGVtZW50c0lu
UGFyZW50QmxvY2soY29uc3QgVEludGVybVNlcXVlbmNlICZpbnNlCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5j
ZSAmaW5zZXJ0aW9uc0FmdGVyKQogewogICAgIEFTU0VSVCghbVBhcmVudEJsb2NrU3RhY2suZW1w
dHkoKSk7Ci0gICAgTm9kZUluc2VydE11bHRpcGxlRW50cnkgaW5zZXJ0KG1QYXJlbnRCbG9ja1N0
YWNrLmJhY2soKS5ub2RlLCBtUGFyZW50QmxvY2tTdGFjay5iYWNrKCkucG9zLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25zQmVmb3JlLCBpbnNlcnRpb25zQWZ0
ZXIpOworICAgIFBhcmVudEJsb2NrICZwYXJlbnRCbG9jayA9IG1QYXJlbnRCbG9ja1N0YWNrLmJh
Y2soKTsKKyAgICBpZiAobVBhdGguYmFjaygpID09IHBhcmVudEJsb2NrLm5vZGUpCisgICAgewor
ICAgICAgICBBU1NFUlQobVBhcmVudEJsb2NrU3RhY2suc2l6ZSgpID49IDJ1KTsKKyAgICAgICAg
Ly8gVGhlIGN1cnJlbnQgbm9kZSBpcyBhIGJsb2NrIG5vZGUsIHNvIHRoZSBwYXJlbnQgYmxvY2sg
aXMgbm90IHRoZSB0b3Btb3N0IG9uZSBpbiB0aGUgYmxvY2sKKyAgICAgICAgLy8gc3RhY2ssIGJ1
dCB0aGUgb25lIGJlbG93IHRoYXQuCisgICAgICAgIHBhcmVudEJsb2NrID0gbVBhcmVudEJsb2Nr
U3RhY2suYXQobVBhcmVudEJsb2NrU3RhY2suc2l6ZSgpIC0gMnUpOworICAgIH0KKyAgICBOb2Rl
SW5zZXJ0TXVsdGlwbGVFbnRyeSBpbnNlcnQocGFyZW50QmxvY2subm9kZSwgcGFyZW50QmxvY2su
cG9zLCBpbnNlcnRpb25zQmVmb3JlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnNlcnRpb25zQWZ0ZXIpOwogICAgIG1JbnNlcnRpb25zLnB1c2hfYmFjayhpbnNlcnQpOwog
fQogCkBAIC0xMzgsNyArMTY0LDggQEAgdm9pZCBUSW50ZXJtVHJhdmVyc2VyOjppbnNlcnRTdGF0
ZW1lbnRJblBhcmVudEJsb2NrKFRJbnRlcm1Ob2RlICpzdGF0ZW1lbnQpCiAKIFRJbnRlcm1TeW1i
b2wgKlRJbnRlcm1UcmF2ZXJzZXI6OmNyZWF0ZVRlbXBTeW1ib2woY29uc3QgVFR5cGUgJnR5cGUs
IFRRdWFsaWZpZXIgcXVhbGlmaWVyKQogewotICAgIC8vIEVhY2ggdHJhdmVyc2FsIHVzZXMgYXQg
bW9zdCBvbmUgdGVtcG9yYXJ5IHZhcmlhYmxlLCBzbyB0aGUgaW5kZXggc3RheXMgdGhlIHNhbWUg
d2l0aGluIGEgc2luZ2xlIHRyYXZlcnNhbC4KKyAgICAvLyBFYWNoIHRyYXZlcnNhbCB1c2VzIGF0
IG1vc3Qgb25lIHRlbXBvcmFyeSB2YXJpYWJsZSwgc28gdGhlIGluZGV4IHN0YXlzIHRoZSBzYW1l
IHdpdGhpbiBhCisgICAgLy8gc2luZ2xlIHRyYXZlcnNhbC4KICAgICBUSW5mb1NpbmtCYXNlIHN5
bWJvbE5hbWVPdXQ7CiAgICAgQVNTRVJUKG1UZW1wb3JhcnlJbmRleCAhPSBudWxscHRyKTsKICAg
ICBzeW1ib2xOYW1lT3V0IDw8ICJzIiA8PCAoKm1UZW1wb3JhcnlJbmRleCk7CkBAIC0xNDYsNyAr
MTczLDExIEBAIFRJbnRlcm1TeW1ib2wgKlRJbnRlcm1UcmF2ZXJzZXI6OmNyZWF0ZVRlbXBTeW1i
b2woY29uc3QgVFR5cGUgJnR5cGUsIFRRdWFsaWZpZXIKIAogICAgIFRJbnRlcm1TeW1ib2wgKm5v
ZGUgPSBuZXcgVEludGVybVN5bWJvbCgwLCBzeW1ib2xOYW1lLCB0eXBlKTsKICAgICBub2RlLT5z
ZXRJbnRlcm5hbCh0cnVlKTsKKworICAgIEFTU0VSVChxdWFsaWZpZXIgPT0gRXZxVGVtcG9yYXJ5
IHx8IHF1YWxpZmllciA9PSBFdnFDb25zdCB8fCBxdWFsaWZpZXIgPT0gRXZxR2xvYmFsKTsKICAg
ICBub2RlLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIocXVhbGlmaWVyKTsKKyAgICAv
LyBUT0RPKG9ldHVhaG8pOiBNaWdodCBiZSB1c2VmdWwgdG8gc2FuaXRpemUgbGF5b3V0IHF1YWxp
ZmllciBldGMuIG9uIHRoZSB0eXBlIG9mIHRoZSBjcmVhdGVkCisgICAgLy8gc3ltYm9sLiBUaGlz
IG1pZ2h0IG5lZWQgdG8gYmUgZG9uZSBpbiBvdGhlciBwbGFjZXMgYXMgd2VsbC4KICAgICByZXR1
cm4gbm9kZTsKIH0KIApAQCAtMTU1LDI0ICsxODYsMjUgQEAgVEludGVybVN5bWJvbCAqVEludGVy
bVRyYXZlcnNlcjo6Y3JlYXRlVGVtcFN5bWJvbChjb25zdCBUVHlwZSAmdHlwZSkKICAgICByZXR1
cm4gY3JlYXRlVGVtcFN5bWJvbCh0eXBlLCBFdnFUZW1wb3JhcnkpOwogfQogCi1USW50ZXJtQWdn
cmVnYXRlICpUSW50ZXJtVHJhdmVyc2VyOjpjcmVhdGVUZW1wRGVjbGFyYXRpb24oY29uc3QgVFR5
cGUgJnR5cGUpCitUSW50ZXJtRGVjbGFyYXRpb24gKlRJbnRlcm1UcmF2ZXJzZXI6OmNyZWF0ZVRl
bXBEZWNsYXJhdGlvbihjb25zdCBUVHlwZSAmdHlwZSkKIHsKLSAgICBUSW50ZXJtQWdncmVnYXRl
ICp0ZW1wRGVjbGFyYXRpb24gPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BEZWNsYXJhdGlvbik7
Ci0gICAgdGVtcERlY2xhcmF0aW9uLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soY3JlYXRlVGVt
cFN5bWJvbCh0eXBlKSk7CisgICAgVEludGVybURlY2xhcmF0aW9uICp0ZW1wRGVjbGFyYXRpb24g
PSBuZXcgVEludGVybURlY2xhcmF0aW9uKCk7CisgICAgdGVtcERlY2xhcmF0aW9uLT5hcHBlbmRE
ZWNsYXJhdG9yKGNyZWF0ZVRlbXBTeW1ib2wodHlwZSkpOwogICAgIHJldHVybiB0ZW1wRGVjbGFy
YXRpb247CiB9CiAKLVRJbnRlcm1BZ2dyZWdhdGUgKlRJbnRlcm1UcmF2ZXJzZXI6OmNyZWF0ZVRl
bXBJbml0RGVjbGFyYXRpb24oVEludGVybVR5cGVkICppbml0aWFsaXplciwgVFF1YWxpZmllciBx
dWFsaWZpZXIpCitUSW50ZXJtRGVjbGFyYXRpb24gKlRJbnRlcm1UcmF2ZXJzZXI6OmNyZWF0ZVRl
bXBJbml0RGVjbGFyYXRpb24oVEludGVybVR5cGVkICppbml0aWFsaXplciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUXVh
bGlmaWVyIHF1YWxpZmllcikKIHsKICAgICBBU1NFUlQoaW5pdGlhbGl6ZXIgIT0gbnVsbHB0cik7
Ci0gICAgVEludGVybVN5bWJvbCAqdGVtcFN5bWJvbCA9IGNyZWF0ZVRlbXBTeW1ib2woaW5pdGlh
bGl6ZXItPmdldFR5cGUoKSwgcXVhbGlmaWVyKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlICp0ZW1w
RGVjbGFyYXRpb24gPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BEZWNsYXJhdGlvbik7Ci0gICAg
VEludGVybUJpbmFyeSAqdGVtcEluaXQgICAgICAgICAgID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9w
SW5pdGlhbGl6ZSwgdGVtcFN5bWJvbCwgaW5pdGlhbGl6ZXIpOwotICAgIHRlbXBEZWNsYXJhdGlv
bi0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKHRlbXBJbml0KTsKKyAgICBUSW50ZXJtU3ltYm9s
ICp0ZW1wU3ltYm9sICAgICAgICAgICA9IGNyZWF0ZVRlbXBTeW1ib2woaW5pdGlhbGl6ZXItPmdl
dFR5cGUoKSwgcXVhbGlmaWVyKTsKKyAgICBUSW50ZXJtRGVjbGFyYXRpb24gKnRlbXBEZWNsYXJh
dGlvbiA9IG5ldyBUSW50ZXJtRGVjbGFyYXRpb24oKTsKKyAgICBUSW50ZXJtQmluYXJ5ICp0ZW1w
SW5pdCAgICAgICAgICAgICA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcEluaXRpYWxpemUsIHRlbXBT
eW1ib2wsIGluaXRpYWxpemVyKTsKKyAgICB0ZW1wRGVjbGFyYXRpb24tPmFwcGVuZERlY2xhcmF0
b3IodGVtcEluaXQpOwogICAgIHJldHVybiB0ZW1wRGVjbGFyYXRpb247CiB9CiAKLVRJbnRlcm1B
Z2dyZWdhdGUgKlRJbnRlcm1UcmF2ZXJzZXI6OmNyZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24oVElu
dGVybVR5cGVkICppbml0aWFsaXplcikKK1RJbnRlcm1EZWNsYXJhdGlvbiAqVEludGVybVRyYXZl
cnNlcjo6Y3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihUSW50ZXJtVHlwZWQgKmluaXRpYWxpemVy
KQogewogICAgIHJldHVybiBjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKGluaXRpYWxpemVyLCBF
dnFUZW1wb3JhcnkpOwogfQpAQCAtMTk2LDIyICsyMjgsMjMgQEAgdm9pZCBUSW50ZXJtVHJhdmVy
c2VyOjpuZXh0VGVtcG9yYXJ5SW5kZXgoKQogICAgICsrKCptVGVtcG9yYXJ5SW5kZXgpOwogfQog
Ci12b2lkIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcjo6YWRkVG9GdW5jdGlvbk1hcChjb25zdCBU
TmFtZSAmbmFtZSwgVEludGVybVNlcXVlbmNlICpwYXJhbVNlcXVlbmNlKQordm9pZCBUTFZhbHVl
VHJhY2tpbmdUcmF2ZXJzZXI6OmFkZFRvRnVuY3Rpb25NYXAoY29uc3QgVFN5bWJvbFVuaXF1ZUlk
ICZpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJ
bnRlcm1TZXF1ZW5jZSAqcGFyYW1TZXF1ZW5jZSkKIHsKLSAgICBtRnVuY3Rpb25NYXBbbmFtZV0g
PSBwYXJhbVNlcXVlbmNlOworICAgIG1GdW5jdGlvbk1hcFtpZC5nZXQoKV0gPSBwYXJhbVNlcXVl
bmNlOwogfQogCiBib29sIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcjo6aXNJbkZ1bmN0aW9uTWFw
KGNvbnN0IFRJbnRlcm1BZ2dyZWdhdGUgKmNhbGxOb2RlKSBjb25zdAogewotICAgIEFTU0VSVChj
YWxsTm9kZS0+Z2V0T3AoKSA9PSBFT3BGdW5jdGlvbkNhbGwpOwotICAgIHJldHVybiAobUZ1bmN0
aW9uTWFwLmZpbmQoY2FsbE5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lT2Jq
KCkpICE9CisgICAgQVNTRVJUKGNhbGxOb2RlLT5nZXRPcCgpID09IEVPcENhbGxGdW5jdGlvbklu
QVNUKTsKKyAgICByZXR1cm4gKG1GdW5jdGlvbk1hcC5maW5kKGNhbGxOb2RlLT5nZXRGdW5jdGlv
blN5bWJvbEluZm8oKS0+Z2V0SWQoKS5nZXQoKSkgIT0KICAgICAgICAgICAgIG1GdW5jdGlvbk1h
cC5lbmQoKSk7CiB9CiAKIFRJbnRlcm1TZXF1ZW5jZSAqVExWYWx1ZVRyYWNraW5nVHJhdmVyc2Vy
OjpnZXRGdW5jdGlvblBhcmFtZXRlcnMoY29uc3QgVEludGVybUFnZ3JlZ2F0ZSAqY2FsbE5vZGUp
CiB7CiAgICAgQVNTRVJUKGlzSW5GdW5jdGlvbk1hcChjYWxsTm9kZSkpOwotICAgIHJldHVybiBt
RnVuY3Rpb25NYXBbY2FsbE5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lT2Jq
KCldOworICAgIHJldHVybiBtRnVuY3Rpb25NYXBbY2FsbE5vZGUtPmdldEZ1bmN0aW9uU3ltYm9s
SW5mbygpLT5nZXRJZCgpLmdldCgpXTsKIH0KIAogdm9pZCBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJz
ZXI6OnNldEluRnVuY3Rpb25DYWxsT3V0UGFyYW1ldGVyKGJvb2wgaW5PdXRQYXJhbWV0ZXIpCkBA
IC0yNDAsMTYgKzI3MywyMCBAQCBib29sIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcjo6aXNJbkZ1
bmN0aW9uQ2FsbE91dFBhcmFtZXRlcigpIGNvbnN0CiAvLwogdm9pZCBUSW50ZXJtVHJhdmVyc2Vy
Ojp0cmF2ZXJzZVN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKQogeworICAgIFNjb3BlZE5vZGVJ
blRyYXZlcnNhbFBhdGggYWRkVG9QYXRoKHRoaXMsIG5vZGUpOwogICAgIHZpc2l0U3ltYm9sKG5v
ZGUpOwogfQogCiB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlQ29uc3RhbnRVbmlvbihU
SW50ZXJtQ29uc3RhbnRVbmlvbiAqbm9kZSkKIHsKKyAgICBTY29wZWROb2RlSW5UcmF2ZXJzYWxQ
YXRoIGFkZFRvUGF0aCh0aGlzLCBub2RlKTsKICAgICB2aXNpdENvbnN0YW50VW5pb24obm9kZSk7
CiB9CiAKIHZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VTd2l6emxlKFRJbnRlcm1Td2l6
emxlICpub2RlKQogeworICAgIFNjb3BlZE5vZGVJblRyYXZlcnNhbFBhdGggYWRkVG9QYXRoKHRo
aXMsIG5vZGUpOworCiAgICAgYm9vbCB2aXNpdCA9IHRydWU7CiAKICAgICBpZiAocHJlVmlzaXQp
CkBAIC0yNTcsMTEgKzI5NCw3IEBAIHZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VTd2l6
emxlKFRJbnRlcm1Td2l6emxlICpub2RlKQogCiAgICAgaWYgKHZpc2l0KQogICAgIHsKLSAgICAg
ICAgaW5jcmVtZW50RGVwdGgobm9kZSk7Ci0KICAgICAgICAgbm9kZS0+Z2V0T3BlcmFuZCgpLT50
cmF2ZXJzZSh0aGlzKTsKLQotICAgICAgICBkZWNyZW1lbnREZXB0aCgpOwogICAgIH0KIAogICAg
IGlmICh2aXNpdCAmJiBwb3N0VmlzaXQpCkBAIC0yNzMsNiArMzA2LDggQEAgdm9pZCBUSW50ZXJt
VHJhdmVyc2VyOjp0cmF2ZXJzZVN3aXp6bGUoVEludGVybVN3aXp6bGUgKm5vZGUpCiAvLwogdm9p
ZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZUJpbmFyeShUSW50ZXJtQmluYXJ5ICpub2RlKQog
eworICAgIFNjb3BlZE5vZGVJblRyYXZlcnNhbFBhdGggYWRkVG9QYXRoKHRoaXMsIG5vZGUpOwor
CiAgICAgYm9vbCB2aXNpdCA9IHRydWU7CiAKICAgICAvLwpAQCAtMjg2LDggKzMyMSw2IEBAIHZv
aWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VCaW5hcnkoVEludGVybUJpbmFyeSAqbm9kZSkK
ICAgICAvLwogICAgIGlmICh2aXNpdCkKICAgICB7Ci0gICAgICAgIGluY3JlbWVudERlcHRoKG5v
ZGUpOwotCiAgICAgICAgIGlmIChub2RlLT5nZXRMZWZ0KCkpCiAgICAgICAgICAgICBub2RlLT5n
ZXRMZWZ0KCktPnRyYXZlcnNlKHRoaXMpOwogCkBAIC0yOTYsOCArMzI5LDYgQEAgdm9pZCBUSW50
ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZUJpbmFyeShUSW50ZXJtQmluYXJ5ICpub2RlKQogCiAgICAg
ICAgIGlmICh2aXNpdCAmJiBub2RlLT5nZXRSaWdodCgpKQogICAgICAgICAgICAgbm9kZS0+Z2V0
UmlnaHQoKS0+dHJhdmVyc2UodGhpcyk7Ci0KLSAgICAgICAgZGVjcmVtZW50RGVwdGgoKTsKICAg
ICB9CiAKICAgICAvLwpAQCAtMzEwLDYgKzM0MSw4IEBAIHZvaWQgVEludGVybVRyYXZlcnNlcjo6
dHJhdmVyc2VCaW5hcnkoVEludGVybUJpbmFyeSAqbm9kZSkKIAogdm9pZCBUTFZhbHVlVHJhY2tp
bmdUcmF2ZXJzZXI6OnRyYXZlcnNlQmluYXJ5KFRJbnRlcm1CaW5hcnkgKm5vZGUpCiB7CisgICAg
U2NvcGVkTm9kZUluVHJhdmVyc2FsUGF0aCBhZGRUb1BhdGgodGhpcywgbm9kZSk7CisKICAgICBi
b29sIHZpc2l0ID0gdHJ1ZTsKIAogICAgIC8vCkBAIC0zMjMsOCArMzU2LDYgQEAgdm9pZCBUTFZh
bHVlVHJhY2tpbmdUcmF2ZXJzZXI6OnRyYXZlcnNlQmluYXJ5KFRJbnRlcm1CaW5hcnkgKm5vZGUp
CiAgICAgLy8KICAgICBpZiAodmlzaXQpCiAgICAgewotICAgICAgICBpbmNyZW1lbnREZXB0aChu
b2RlKTsKLQogICAgICAgICAvLyBTb21lIGJpbmFyeSBvcGVyYXRpb25zIGxpa2UgaW5kZXhpbmcg
Y2FuIGJlIGluc2lkZSBhbiBleHByZXNzaW9uIHdoaWNoIG11c3QgYmUgYW4KICAgICAgICAgLy8g
bC12YWx1ZS4KICAgICAgICAgYm9vbCBwYXJlbnRPcGVyYXRvclJlcXVpcmVzTFZhbHVlICAgICA9
IG9wZXJhdG9yUmVxdWlyZXNMVmFsdWUoKTsKQEAgLTM1OSw4ICszOTAsNiBAQCB2b2lkIFRMVmFs
dWVUcmFja2luZ1RyYXZlcnNlcjo6dHJhdmVyc2VCaW5hcnkoVEludGVybUJpbmFyeSAqbm9kZSkK
IAogICAgICAgICBzZXRPcGVyYXRvclJlcXVpcmVzTFZhbHVlKHBhcmVudE9wZXJhdG9yUmVxdWly
ZXNMVmFsdWUpOwogICAgICAgICBzZXRJbkZ1bmN0aW9uQ2FsbE91dFBhcmFtZXRlcihwYXJlbnRJ
bkZ1bmN0aW9uQ2FsbE91dFBhcmFtZXRlcik7Ci0KLSAgICAgICAgZGVjcmVtZW50RGVwdGgoKTsK
ICAgICB9CiAKICAgICAvLwpAQCAtMzc2LDYgKzQwNSw4IEBAIHZvaWQgVExWYWx1ZVRyYWNraW5n
VHJhdmVyc2VyOjp0cmF2ZXJzZUJpbmFyeShUSW50ZXJtQmluYXJ5ICpub2RlKQogLy8KIHZvaWQg
VEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VVbmFyeShUSW50ZXJtVW5hcnkgKm5vZGUpCiB7Cisg
ICAgU2NvcGVkTm9kZUluVHJhdmVyc2FsUGF0aCBhZGRUb1BhdGgodGhpcywgbm9kZSk7CisKICAg
ICBib29sIHZpc2l0ID0gdHJ1ZTsKIAogICAgIGlmIChwcmVWaXNpdCkKQEAgLTM4MywxMSArNDE0
LDcgQEAgdm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZVVuYXJ5KFRJbnRlcm1VbmFyeSAq
bm9kZSkKIAogICAgIGlmICh2aXNpdCkKICAgICB7Ci0gICAgICAgIGluY3JlbWVudERlcHRoKG5v
ZGUpOwotCiAgICAgICAgIG5vZGUtPmdldE9wZXJhbmQoKS0+dHJhdmVyc2UodGhpcyk7Ci0KLSAg
ICAgICAgZGVjcmVtZW50RGVwdGgoKTsKICAgICB9CiAKICAgICBpZiAodmlzaXQgJiYgcG9zdFZp
c2l0KQpAQCAtMzk2LDYgKzQyMyw4IEBAIHZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VV
bmFyeShUSW50ZXJtVW5hcnkgKm5vZGUpCiAKIHZvaWQgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2Vy
Ojp0cmF2ZXJzZVVuYXJ5KFRJbnRlcm1VbmFyeSAqbm9kZSkKIHsKKyAgICBTY29wZWROb2RlSW5U
cmF2ZXJzYWxQYXRoIGFkZFRvUGF0aCh0aGlzLCBub2RlKTsKKwogICAgIGJvb2wgdmlzaXQgPSB0
cnVlOwogCiAgICAgaWYgKHByZVZpc2l0KQpAQCAtNDAzLDggKzQzMiw2IEBAIHZvaWQgVExWYWx1
ZVRyYWNraW5nVHJhdmVyc2VyOjp0cmF2ZXJzZVVuYXJ5KFRJbnRlcm1VbmFyeSAqbm9kZSkKIAog
ICAgIGlmICh2aXNpdCkKICAgICB7Ci0gICAgICAgIGluY3JlbWVudERlcHRoKG5vZGUpOwotCiAg
ICAgICAgIEFTU0VSVCghb3BlcmF0b3JSZXF1aXJlc0xWYWx1ZSgpKTsKICAgICAgICAgc3dpdGNo
IChub2RlLT5nZXRPcCgpKQogICAgICAgICB7CkBAIC00MjEsOCArNDQ4LDYgQEAgdm9pZCBUTFZh
bHVlVHJhY2tpbmdUcmF2ZXJzZXI6OnRyYXZlcnNlVW5hcnkoVEludGVybVVuYXJ5ICpub2RlKQog
ICAgICAgICBub2RlLT5nZXRPcGVyYW5kKCktPnRyYXZlcnNlKHRoaXMpOwogCiAgICAgICAgIHNl
dE9wZXJhdG9yUmVxdWlyZXNMVmFsdWUoZmFsc2UpOwotCi0gICAgICAgIGRlY3JlbWVudERlcHRo
KCk7CiAgICAgfQogCiAgICAgaWYgKHZpc2l0ICYmIHBvc3RWaXNpdCkKQEAgLTQzMiw2ICs0NTcs
OCBAQCB2b2lkIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcjo6dHJhdmVyc2VVbmFyeShUSW50ZXJt
VW5hcnkgKm5vZGUpCiAvLyBUcmF2ZXJzZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gbm9kZS4KIHZv
aWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VGdW5jdGlvbkRlZmluaXRpb24oVEludGVybUZ1
bmN0aW9uRGVmaW5pdGlvbiAqbm9kZSkKIHsKKyAgICBTY29wZWROb2RlSW5UcmF2ZXJzYWxQYXRo
IGFkZFRvUGF0aCh0aGlzLCBub2RlKTsKKwogICAgIGJvb2wgdmlzaXQgPSB0cnVlOwogCiAgICAg
aWYgKHByZVZpc2l0KQpAQCAtNDM5LDE2ICs0NjYsMTQgQEAgdm9pZCBUSW50ZXJtVHJhdmVyc2Vy
Ojp0cmF2ZXJzZUZ1bmN0aW9uRGVmaW5pdGlvbihUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpu
b2QKIAogICAgIGlmICh2aXNpdCkKICAgICB7Ci0gICAgICAgIGluY3JlbWVudERlcHRoKG5vZGUp
OwogICAgICAgICBtSW5HbG9iYWxTY29wZSA9IGZhbHNlOwogCi0gICAgICAgIG5vZGUtPmdldEZ1
bmN0aW9uUGFyYW1ldGVycygpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAgbm9kZS0+Z2V0RnVu
Y3Rpb25Qcm90b3R5cGUoKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgIGlmIChpblZpc2l0KQog
ICAgICAgICAgICAgdmlzaXQgPSB2aXNpdEZ1bmN0aW9uRGVmaW5pdGlvbihJblZpc2l0LCBub2Rl
KTsKICAgICAgICAgbm9kZS0+Z2V0Qm9keSgpLT50cmF2ZXJzZSh0aGlzKTsKIAogICAgICAgICBt
SW5HbG9iYWxTY29wZSA9IHRydWU7Ci0gICAgICAgIGRlY3JlbWVudERlcHRoKCk7CiAgICAgfQog
CiAgICAgaWYgKHZpc2l0ICYmIHBvc3RWaXNpdCkKQEAgLTQ1OCw2ICs0ODMsOSBAQCB2b2lkIFRJ
bnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlRnVuY3Rpb25EZWZpbml0aW9uKFRJbnRlcm1GdW5jdGlv
bkRlZmluaXRpb24gKm5vZAogLy8gVHJhdmVyc2UgYSBibG9jayBub2RlLgogdm9pZCBUSW50ZXJt
VHJhdmVyc2VyOjp0cmF2ZXJzZUJsb2NrKFRJbnRlcm1CbG9jayAqbm9kZSkKIHsKKyAgICBTY29w
ZWROb2RlSW5UcmF2ZXJzYWxQYXRoIGFkZFRvUGF0aCh0aGlzLCBub2RlKTsKKyAgICBwdXNoUGFy
ZW50QmxvY2sobm9kZSk7CisKICAgICBib29sIHZpc2l0ID0gdHJ1ZTsKIAogICAgIFRJbnRlcm1T
ZXF1ZW5jZSAqc2VxdWVuY2UgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOwpAQCAtNDY3LDkgKzQ5NSw2
IEBAIHZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VCbG9jayhUSW50ZXJtQmxvY2sgKm5v
ZGUpCiAKICAgICBpZiAodmlzaXQpCiAgICAgewotICAgICAgICBpbmNyZW1lbnREZXB0aChub2Rl
KTsKLSAgICAgICAgcHVzaFBhcmVudEJsb2NrKG5vZGUpOwotCiAgICAgICAgIGZvciAoYXV0byAq
Y2hpbGQgOiAqc2VxdWVuY2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNoaWxkLT50cmF2ZXJz
ZSh0aGlzKTsKQEAgLTQ4MSwxOCArNTA2LDk3IEBAIHZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJh
dmVyc2VCbG9jayhUSW50ZXJtQmxvY2sgKm5vZGUpCiAKICAgICAgICAgICAgIGluY3JlbWVudFBh
cmVudEJsb2NrUG9zKCk7CiAgICAgICAgIH0KLQotICAgICAgICBwb3BQYXJlbnRCbG9jaygpOwot
ICAgICAgICBkZWNyZW1lbnREZXB0aCgpOwogICAgIH0KIAogICAgIGlmICh2aXNpdCAmJiBwb3N0
VmlzaXQpCiAgICAgICAgIHZpc2l0QmxvY2soUG9zdFZpc2l0LCBub2RlKTsKKworICAgIHBvcFBh
cmVudEJsb2NrKCk7Cit9CisKK3ZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VJbnZhcmlh
bnREZWNsYXJhdGlvbihUSW50ZXJtSW52YXJpYW50RGVjbGFyYXRpb24gKm5vZGUpCit7CisgICAg
U2NvcGVkTm9kZUluVHJhdmVyc2FsUGF0aCBhZGRUb1BhdGgodGhpcywgbm9kZSk7CisKKyAgICBi
b29sIHZpc2l0ID0gdHJ1ZTsKKworICAgIGlmIChwcmVWaXNpdCkKKyAgICB7CisgICAgICAgIHZp
c2l0ID0gdmlzaXRJbnZhcmlhbnREZWNsYXJhdGlvbihQcmVWaXNpdCwgbm9kZSk7CisgICAgfQor
CisgICAgaWYgKHZpc2l0KQorICAgIHsKKyAgICAgICAgbm9kZS0+Z2V0U3ltYm9sKCktPnRyYXZl
cnNlKHRoaXMpOworICAgICAgICBpZiAocG9zdFZpc2l0KQorICAgICAgICB7CisgICAgICAgICAg
ICB2aXNpdEludmFyaWFudERlY2xhcmF0aW9uKFBvc3RWaXNpdCwgbm9kZSk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKKy8vIFRyYXZlcnNlIGEgZGVjbGFyYXRpb24gbm9kZS4KK3ZvaWQgVEludGVy
bVRyYXZlcnNlcjo6dHJhdmVyc2VEZWNsYXJhdGlvbihUSW50ZXJtRGVjbGFyYXRpb24gKm5vZGUp
Cit7CisgICAgU2NvcGVkTm9kZUluVHJhdmVyc2FsUGF0aCBhZGRUb1BhdGgodGhpcywgbm9kZSk7
CisKKyAgICBib29sIHZpc2l0ID0gdHJ1ZTsKKworICAgIFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVu
Y2UgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOworCisgICAgaWYgKHByZVZpc2l0KQorICAgICAgICB2
aXNpdCA9IHZpc2l0RGVjbGFyYXRpb24oUHJlVmlzaXQsIG5vZGUpOworCisgICAgaWYgKHZpc2l0
KQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvICpjaGlsZCA6ICpzZXF1ZW5jZSkKKyAgICAgICAg
eworICAgICAgICAgICAgY2hpbGQtPnRyYXZlcnNlKHRoaXMpOworICAgICAgICAgICAgaWYgKHZp
c2l0ICYmIGluVmlzaXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGNoaWxk
ICE9IHNlcXVlbmNlLT5iYWNrKCkpCisgICAgICAgICAgICAgICAgICAgIHZpc2l0ID0gdmlzaXRE
ZWNsYXJhdGlvbihJblZpc2l0LCBub2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIGlmICh2aXNpdCAmJiBwb3N0VmlzaXQpCisgICAgICAgIHZpc2l0RGVjbGFyYXRp
b24oUG9zdFZpc2l0LCBub2RlKTsKK30KKwordm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJz
ZUZ1bmN0aW9uUHJvdG90eXBlKFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAqbm9kZSkKK3sKKyAg
ICBTY29wZWROb2RlSW5UcmF2ZXJzYWxQYXRoIGFkZFRvUGF0aCh0aGlzLCBub2RlKTsKKworICAg
IGJvb2wgdmlzaXQgPSB0cnVlOworCisgICAgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9IG5v
ZGUtPmdldFNlcXVlbmNlKCk7CisKKyAgICBpZiAocHJlVmlzaXQpCisgICAgICAgIHZpc2l0ID0g
dmlzaXRGdW5jdGlvblByb3RvdHlwZShQcmVWaXNpdCwgbm9kZSk7CisKKyAgICBpZiAodmlzaXQp
CisgICAgeworICAgICAgICBmb3IgKGF1dG8gKmNoaWxkIDogKnNlcXVlbmNlKQorICAgICAgICB7
CisgICAgICAgICAgICBjaGlsZC0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgICAgICBpZiAodmlz
aXQgJiYgaW5WaXNpdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGQg
IT0gc2VxdWVuY2UtPmJhY2soKSkKKyAgICAgICAgICAgICAgICAgICAgdmlzaXQgPSB2aXNpdEZ1
bmN0aW9uUHJvdG90eXBlKEluVmlzaXQsIG5vZGUpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgaWYgKHZpc2l0ICYmIHBvc3RWaXNpdCkKKyAgICAgICAgdmlzaXRGdW5j
dGlvblByb3RvdHlwZShQb3N0VmlzaXQsIG5vZGUpOwogfQogCiAvLyBUcmF2ZXJzZSBhbiBhZ2dy
ZWdhdGUgbm9kZS4gIFNhbWUgY29tbWVudHMgaW4gYmluYXJ5IG5vZGUgYXBwbHkgaGVyZS4KIHZv
aWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VBZ2dyZWdhdGUoVEludGVybUFnZ3JlZ2F0ZSAq
bm9kZSkKIHsKKyAgICBTY29wZWROb2RlSW5UcmF2ZXJzYWxQYXRoIGFkZFRvUGF0aCh0aGlzLCBu
b2RlKTsKKwogICAgIGJvb2wgdmlzaXQgPSB0cnVlOwogCiAgICAgVEludGVybVNlcXVlbmNlICpz
ZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7CkBAIC01MDIsOCArNjA2LDYgQEAgdm9pZCBU
SW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZUFnZ3JlZ2F0ZShUSW50ZXJtQWdncmVnYXRlICpub2Rl
KQogCiAgICAgaWYgKHZpc2l0KQogICAgIHsKLSAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7
Ci0KICAgICAgICAgZm9yIChhdXRvICpjaGlsZCA6ICpzZXF1ZW5jZSkKICAgICAgICAgewogICAg
ICAgICAgICAgY2hpbGQtPnRyYXZlcnNlKHRoaXMpOwpAQCAtNTEzLDcxICs2MTUsNzAgQEAgdm9p
ZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZUFnZ3JlZ2F0ZShUSW50ZXJtQWdncmVnYXRlICpu
b2RlKQogICAgICAgICAgICAgICAgICAgICB2aXNpdCA9IHZpc2l0QWdncmVnYXRlKEluVmlzaXQs
IG5vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgZGVjcmVtZW50RGVw
dGgoKTsKICAgICB9CiAKICAgICBpZiAodmlzaXQgJiYgcG9zdFZpc2l0KQogICAgICAgICB2aXNp
dEFnZ3JlZ2F0ZShQb3N0VmlzaXQsIG5vZGUpOwogfQogCi12b2lkIFRMVmFsdWVUcmFja2luZ1Ry
YXZlcnNlcjo6dHJhdmVyc2VGdW5jdGlvbkRlZmluaXRpb24oVEludGVybUZ1bmN0aW9uRGVmaW5p
dGlvbiAqbm9kZSkKK3ZvaWQgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyOjp0cmF2ZXJzZUZ1bmN0
aW9uUHJvdG90eXBlKFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAqbm9kZSkKIHsKLSAgICBUSW50
ZXJtQWdncmVnYXRlICpwYXJhbXMgPSBub2RlLT5nZXRGdW5jdGlvblBhcmFtZXRlcnMoKTsKLSAg
ICBBU1NFUlQocGFyYW1zICE9IG51bGxwdHIpOwotICAgIEFTU0VSVChwYXJhbXMtPmdldE9wKCkg
PT0gRU9wUGFyYW1ldGVycyk7Ci0gICAgYWRkVG9GdW5jdGlvbk1hcChub2RlLT5nZXRGdW5jdGlv
blN5bWJvbEluZm8oKS0+Z2V0TmFtZU9iaigpLCBwYXJhbXMtPmdldFNlcXVlbmNlKCkpOworICAg
IFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVuY2UgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOworICAgIGFk
ZFRvRnVuY3Rpb25NYXAobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldElkKCksIHNl
cXVlbmNlKTsKIAotICAgIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlRnVuY3Rpb25EZWZpbml0
aW9uKG5vZGUpOworICAgIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlRnVuY3Rpb25Qcm90b3R5
cGUobm9kZSk7CiB9CiAKIHZvaWQgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyOjp0cmF2ZXJzZUFn
Z3JlZ2F0ZShUSW50ZXJtQWdncmVnYXRlICpub2RlKQogeworICAgIFNjb3BlZE5vZGVJblRyYXZl
cnNhbFBhdGggYWRkVG9QYXRoKHRoaXMsIG5vZGUpOworCiAgICAgYm9vbCB2aXNpdCA9IHRydWU7
CiAKICAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsK
LSAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BQcm90b3R5cGUpCi0gICAgewotICAgICAgICBh
ZGRUb0Z1bmN0aW9uTWFwKG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lT2Jq
KCksIHNlcXVlbmNlKTsKLSAgICB9CiAKICAgICBpZiAocHJlVmlzaXQpCiAgICAgICAgIHZpc2l0
ID0gdmlzaXRBZ2dyZWdhdGUoUHJlVmlzaXQsIG5vZGUpOwogCiAgICAgaWYgKHZpc2l0KQogICAg
IHsKLSAgICAgICAgYm9vbCBpbkZ1bmN0aW9uTWFwID0gZmFsc2U7Ci0gICAgICAgIGlmIChub2Rl
LT5nZXRPcCgpID09IEVPcEZ1bmN0aW9uQ2FsbCkKKyAgICAgICAgaWYgKG5vZGUtPmdldE9wKCkg
PT0gRU9wQ2FsbEZ1bmN0aW9uSW5BU1QpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGluRnVuY3Rp
b25NYXAgPSBpc0luRnVuY3Rpb25NYXAobm9kZSk7Ci0gICAgICAgICAgICBpZiAoIWluRnVuY3Rp
b25NYXApCisgICAgICAgICAgICBpZiAoaXNJbkZ1bmN0aW9uTWFwKG5vZGUpKQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIC8vIFRoZSBmdW5jdGlvbiBpcyBub3QgdXNlci1kZWZpbmVk
IC0gaXQgaXMgbGlrZWx5IGJ1aWx0LWluIHRleHR1cmUgZnVuY3Rpb24uCi0gICAgICAgICAgICAg
ICAgLy8gQXNzdW1lIHRoYXQgdGhvc2UgZG8gbm90IGhhdmUgb3V0IHBhcmFtZXRlcnMuCi0gICAg
ICAgICAgICAgICAgc2V0SW5GdW5jdGlvbkNhbGxPdXRQYXJhbWV0ZXIoZmFsc2UpOworICAgICAg
ICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqcGFyYW1zICAgICAgICAgICAgID0gZ2V0RnVuY3Rp
b25QYXJhbWV0ZXJzKG5vZGUpOworICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZTo6aXRl
cmF0b3IgcGFyYW1JdGVyID0gcGFyYW1zLT5iZWdpbigpOworICAgICAgICAgICAgICAgIGZvciAo
YXV0byAqY2hpbGQgOiAqc2VxdWVuY2UpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQocGFyYW1JdGVyICE9IHBhcmFtcy0+ZW5kKCkpOworICAgICAgICAgICAg
ICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9ICgqcGFyYW1JdGVyKS0+Z2V0QXNUeXBlZCgp
LT5nZXRRdWFsaWZpZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0SW5GdW5jdGlvbkNhbGxP
dXRQYXJhbWV0ZXIocXVhbGlmaWVyID09IEV2cU91dCB8fCBxdWFsaWZpZXIgPT0gRXZxSW5PdXQp
OworCisgICAgICAgICAgICAgICAgICAgIGNoaWxkLT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHZpc2l0ICYmIGluVmlzaXQpCisgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZCAhPSBzZXF1ZW5jZS0+YmFjaygpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0ID0gdmlzaXRBZ2dyZWdhdGUoSW5WaXNp
dCwgbm9kZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAr
K3BhcmFtSXRlcjsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICBpbmNyZW1lbnREZXB0aChub2RlKTsKLQotICAgICAgICBpZiAoaW5GdW5jdGlv
bk1hcCkKLSAgICAgICAgewotICAgICAgICAgICAgVEludGVybVNlcXVlbmNlICpwYXJhbXMgICAg
ICAgICAgICAgPSBnZXRGdW5jdGlvblBhcmFtZXRlcnMobm9kZSk7Ci0gICAgICAgICAgICBUSW50
ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIHBhcmFtSXRlciA9IHBhcmFtcy0+YmVnaW4oKTsKLSAgICAg
ICAgICAgIGZvciAoYXV0byAqY2hpbGQgOiAqc2VxdWVuY2UpCisgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHBhcmFtSXRlciAhPSBwYXJhbXMt
PmVuZCgpKTsKLSAgICAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9ICgqcGFyYW1J
dGVyKS0+Z2V0QXNUeXBlZCgpLT5nZXRRdWFsaWZpZXIoKTsKLSAgICAgICAgICAgICAgICBzZXRJ
bkZ1bmN0aW9uQ2FsbE91dFBhcmFtZXRlcihxdWFsaWZpZXIgPT0gRXZxT3V0IHx8IHF1YWxpZmll
ciA9PSBFdnFJbk91dCk7Ci0KLSAgICAgICAgICAgICAgICBjaGlsZC0+dHJhdmVyc2UodGhpcyk7
Ci0gICAgICAgICAgICAgICAgaWYgKHZpc2l0ICYmIGluVmlzaXQpCisgICAgICAgICAgICAgICAg
Ly8gVGhlIG5vZGUgbWlnaHQgbm90IGJlIGluIHRoZSBmdW5jdGlvbiBtYXAgaW4gY2FzZSB3ZSdy
ZSBpbiB0aGUgbWlkZGxlIG9mCisgICAgICAgICAgICAgICAgLy8gdHJhbnNmb3JtaW5nIHRoZSBB
U1QsIGFuZCBoYXZlIGluc2VydGVkIGZ1bmN0aW9uIGNhbGwgbm9kZXMgd2l0aG91dCBpbnNlcnRp
bmcgdGhlCisgICAgICAgICAgICAgICAgLy8gZnVuY3Rpb24gZGVmaW5pdGlvbnMgeWV0LgorICAg
ICAgICAgICAgICAgIHNldEluRnVuY3Rpb25DYWxsT3V0UGFyYW1ldGVyKGZhbHNlKTsKKyAgICAg
ICAgICAgICAgICBmb3IgKGF1dG8gKmNoaWxkIDogKnNlcXVlbmNlKQogICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkICE9IHNlcXVlbmNlLT5iYWNrKCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICB2aXNpdCA9IHZpc2l0QWdncmVnYXRlKEluVmlzaXQsIG5v
ZGUpOworICAgICAgICAgICAgICAgICAgICBjaGlsZC0+dHJhdmVyc2UodGhpcyk7CisgICAgICAg
ICAgICAgICAgICAgIGlmICh2aXNpdCAmJiBpblZpc2l0KQorICAgICAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQgIT0gc2VxdWVuY2UtPmJhY2soKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpdCA9IHZpc2l0QWdncmVnYXRlKEluVmlz
aXQsIG5vZGUpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgKytwYXJhbUl0ZXI7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IHNldEluRnVuY3Rpb25DYWxsT3V0UGFyYW1ldGVyKGZhbHNlKTsKQEAgLTU4NywzMiArNjg4LDE4
IEBAIHZvaWQgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyOjp0cmF2ZXJzZUFnZ3JlZ2F0ZShUSW50
ZXJtQWdncmVnYXRlICpub2RlKQogICAgICAgICAgICAgLy8gRmluZCB0aGUgYnVpbHQtaW4gZnVu
Y3Rpb24gY29ycmVzcG9uZGluZyB0byB0aGlzIG9wIHNvIHRoYXQgd2UgY2FuIGRldGVybWluZSB0
aGUKICAgICAgICAgICAgIC8vIGluL291dCBxdWFsaWZpZXJzIG9mIGl0cyBwYXJhbWV0ZXJzLgog
ICAgICAgICAgICAgVEZ1bmN0aW9uICpidWlsdEluRnVuYyA9IG51bGxwdHI7Ci0gICAgICAgICAg
ICBUU3RyaW5nIG9wU3RyaW5nID0gR2V0T3BlcmF0b3JTdHJpbmcobm9kZS0+Z2V0T3AoKSk7Ci0g
ICAgICAgICAgICBpZiAoIW5vZGUtPmlzQ29uc3RydWN0b3IoKSAmJiAhb3BTdHJpbmcuZW1wdHko
KSkKKyAgICAgICAgICAgIGlmICghbm9kZS0+aXNGdW5jdGlvbkNhbGwoKSAmJiAhbm9kZS0+aXND
b25zdHJ1Y3RvcigpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIFRoZSByZXR1
cm4gdHlwZSBkb2Vzbid0IGFmZmVjdCB0aGUgbWFuZ2xlZCBuYW1lIG9mIHRoZSBmdW5jdGlvbiwg
d2hpY2ggaXMgdXNlZAotICAgICAgICAgICAgICAgIC8vIHRvIGxvb2sgaXQgdXAgZnJvbSB0aGUg
c3ltYm9sIHRhYmxlLgotICAgICAgICAgICAgICAgIFRUeXBlIGR1bW15UmV0dXJuVHlwZTsKLSAg
ICAgICAgICAgICAgICBURnVuY3Rpb24gY2FsbCgmb3BTdHJpbmcsICZkdW1teVJldHVyblR5cGUs
IG5vZGUtPmdldE9wKCkpOwotICAgICAgICAgICAgICAgIGZvciAoYXV0byAqY2hpbGQgOiAqc2Vx
dWVuY2UpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBUVHlwZSAqcGFy
YW1UeXBlID0gY2hpbGQtPmdldEFzVHlwZWQoKS0+Z2V0VHlwZVBvaW50ZXIoKTsKLSAgICAgICAg
ICAgICAgICAgICAgVENvbnN0UGFyYW1ldGVyIHAocGFyYW1UeXBlKTsKLSAgICAgICAgICAgICAg
ICAgICAgY2FsbC5hZGRQYXJhbWV0ZXIocCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgVFN5bWJvbCAqc3ltID0gbVN5bWJvbFRhYmxlLmZpbmRCdWlsdEluKGNhbGwuZ2V0
TWFuZ2xlZE5hbWUoKSwgbVNoYWRlclZlcnNpb24pOwotICAgICAgICAgICAgICAgIGlmIChzeW0g
IT0gbnVsbHB0ciAmJiBzeW0tPmlzRnVuY3Rpb24oKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIGJ1aWx0SW5GdW5jID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uICo+KHN5
bSk7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChidWlsdEluRnVuYy0+Z2V0UGFyYW1Db3Vu
dCgpID09IHNlcXVlbmNlLT5zaXplKCkpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBidWlsdEluRnVuYyA9IHN0YXRpY19jYXN0PFRGdW5jdGlvbiAqPigKKyAgICAgICAgICAg
ICAgICAgICAgbVN5bWJvbFRhYmxlLmZpbmRCdWlsdEluKG5vZGUtPmdldFN5bWJvbFRhYmxlTWFu
Z2xlZE5hbWUoKSwgbVNoYWRlclZlcnNpb24pKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgc2l6ZV90IHBhcmFtSW5kZXggPSAwOwogCiAgICAgICAgICAgICBmb3IgKGF1dG8gKmNoaWxk
IDogKnNlcXVlbmNlKQogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgYXNz
dW1lcyB0aGF0IHJhdyBmdW5jdGlvbnMgY2FsbGVkIHdpdGgKKyAgICAgICAgICAgICAgICAvLyBF
T3BDYWxsSW50ZXJuYWxSYXdGdW5jdGlvbiBkb24ndCBoYXZlIG91dCBwYXJhbWV0ZXJzLgogICAg
ICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gRXZxSW47CiAgICAgICAgICAgICAg
ICAgaWYgKGJ1aWx0SW5GdW5jICE9IG51bGxwdHIpCiAgICAgICAgICAgICAgICAgICAgIHF1YWxp
ZmllciA9IGJ1aWx0SW5GdW5jLT5nZXRQYXJhbShwYXJhbUluZGV4KS50eXBlLT5nZXRRdWFsaWZp
ZXIoKTsKQEAgLTYzMCw4ICs3MTcsNiBAQCB2b2lkIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcjo6
dHJhdmVyc2VBZ2dyZWdhdGUoVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKIAogICAgICAgICAgICAg
c2V0SW5GdW5jdGlvbkNhbGxPdXRQYXJhbWV0ZXIoZmFsc2UpOwogICAgICAgICB9Ci0KLSAgICAg
ICAgZGVjcmVtZW50RGVwdGgoKTsKICAgICB9CiAKICAgICBpZiAodmlzaXQgJiYgcG9zdFZpc2l0
KQpAQCAtNjQzLDYgKzcyOCw4IEBAIHZvaWQgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyOjp0cmF2
ZXJzZUFnZ3JlZ2F0ZShUSW50ZXJtQWdncmVnYXRlICpub2RlKQogLy8KIHZvaWQgVEludGVybVRy
YXZlcnNlcjo6dHJhdmVyc2VUZXJuYXJ5KFRJbnRlcm1UZXJuYXJ5ICpub2RlKQogeworICAgIFNj
b3BlZE5vZGVJblRyYXZlcnNhbFBhdGggYWRkVG9QYXRoKHRoaXMsIG5vZGUpOworCiAgICAgYm9v
bCB2aXNpdCA9IHRydWU7CiAKICAgICBpZiAocHJlVmlzaXQpCkBAIC02NTAsMTMgKzczNywxMSBA
QCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlVGVybmFyeShUSW50ZXJtVGVybmFyeSAq
bm9kZSkKIAogICAgIGlmICh2aXNpdCkKICAgICB7Ci0gICAgICAgIGluY3JlbWVudERlcHRoKG5v
ZGUpOwogICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7CiAgICAg
ICAgIGlmIChub2RlLT5nZXRUcnVlRXhwcmVzc2lvbigpKQogICAgICAgICAgICAgbm9kZS0+Z2V0
VHJ1ZUV4cHJlc3Npb24oKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgIGlmIChub2RlLT5nZXRG
YWxzZUV4cHJlc3Npb24oKSkKICAgICAgICAgICAgIG5vZGUtPmdldEZhbHNlRXhwcmVzc2lvbigp
LT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgZGVjcmVtZW50RGVwdGgoKTsKICAgICB9CiAKICAg
ICBpZiAodmlzaXQgJiYgcG9zdFZpc2l0KQpAQCAtNjY2LDYgKzc1MSw4IEBAIHZvaWQgVEludGVy
bVRyYXZlcnNlcjo6dHJhdmVyc2VUZXJuYXJ5KFRJbnRlcm1UZXJuYXJ5ICpub2RlKQogLy8gVHJh
dmVyc2UgYW4gaWYtZWxzZSBub2RlLiAgU2FtZSBjb21tZW50cyBpbiBiaW5hcnkgbm9kZSBhcHBs
eSBoZXJlLgogdm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZUlmRWxzZShUSW50ZXJtSWZF
bHNlICpub2RlKQogeworICAgIFNjb3BlZE5vZGVJblRyYXZlcnNhbFBhdGggYWRkVG9QYXRoKHRo
aXMsIG5vZGUpOworCiAgICAgYm9vbCB2aXNpdCA9IHRydWU7CiAKICAgICBpZiAocHJlVmlzaXQp
CkBAIC02NzMsMTMgKzc2MCwxMSBAQCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlSWZF
bHNlKFRJbnRlcm1JZkVsc2UgKm5vZGUpCiAKICAgICBpZiAodmlzaXQpCiAgICAgewotICAgICAg
ICBpbmNyZW1lbnREZXB0aChub2RlKTsKICAgICAgICAgbm9kZS0+Z2V0Q29uZGl0aW9uKCktPnRy
YXZlcnNlKHRoaXMpOwogICAgICAgICBpZiAobm9kZS0+Z2V0VHJ1ZUJsb2NrKCkpCiAgICAgICAg
ICAgICBub2RlLT5nZXRUcnVlQmxvY2soKS0+dHJhdmVyc2UodGhpcyk7CiAgICAgICAgIGlmIChu
b2RlLT5nZXRGYWxzZUJsb2NrKCkpCiAgICAgICAgICAgICBub2RlLT5nZXRGYWxzZUJsb2NrKCkt
PnRyYXZlcnNlKHRoaXMpOwotICAgICAgICBkZWNyZW1lbnREZXB0aCgpOwogICAgIH0KIAogICAg
IGlmICh2aXNpdCAmJiBwb3N0VmlzaXQpCkBAIC02OTEsNiArNzc2LDggQEAgdm9pZCBUSW50ZXJt
VHJhdmVyc2VyOjp0cmF2ZXJzZUlmRWxzZShUSW50ZXJtSWZFbHNlICpub2RlKQogLy8KIHZvaWQg
VEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VTd2l0Y2goVEludGVybVN3aXRjaCAqbm9kZSkKIHsK
KyAgICBTY29wZWROb2RlSW5UcmF2ZXJzYWxQYXRoIGFkZFRvUGF0aCh0aGlzLCBub2RlKTsKKwog
ICAgIGJvb2wgdmlzaXQgPSB0cnVlOwogCiAgICAgaWYgKHByZVZpc2l0KQpAQCAtNjk4LDEzICs3
ODUsMTEgQEAgdm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZVN3aXRjaChUSW50ZXJtU3dp
dGNoICpub2RlKQogCiAgICAgaWYgKHZpc2l0KQogICAgIHsKLSAgICAgICAgaW5jcmVtZW50RGVw
dGgobm9kZSk7CiAgICAgICAgIG5vZGUtPmdldEluaXQoKS0+dHJhdmVyc2UodGhpcyk7CiAgICAg
ICAgIGlmIChpblZpc2l0KQogICAgICAgICAgICAgdmlzaXQgPSB2aXNpdFN3aXRjaChJblZpc2l0
LCBub2RlKTsKICAgICAgICAgaWYgKHZpc2l0ICYmIG5vZGUtPmdldFN0YXRlbWVudExpc3QoKSkK
ICAgICAgICAgICAgIG5vZGUtPmdldFN0YXRlbWVudExpc3QoKS0+dHJhdmVyc2UodGhpcyk7Ci0g
ICAgICAgIGRlY3JlbWVudERlcHRoKCk7CiAgICAgfQogCiAgICAgaWYgKHZpc2l0ICYmIHBvc3RW
aXNpdCkKQEAgLTcxNiw2ICs4MDEsOCBAQCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNl
U3dpdGNoKFRJbnRlcm1Td2l0Y2ggKm5vZGUpCiAvLwogdm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0
cmF2ZXJzZUNhc2UoVEludGVybUNhc2UgKm5vZGUpCiB7CisgICAgU2NvcGVkTm9kZUluVHJhdmVy
c2FsUGF0aCBhZGRUb1BhdGgodGhpcywgbm9kZSk7CisKICAgICBib29sIHZpc2l0ID0gdHJ1ZTsK
IAogICAgIGlmIChwcmVWaXNpdCkKQEAgLTcyMyw5ICs4MTAsNyBAQCB2b2lkIFRJbnRlcm1UcmF2
ZXJzZXI6OnRyYXZlcnNlQ2FzZShUSW50ZXJtQ2FzZSAqbm9kZSkKIAogICAgIGlmICh2aXNpdCAm
JiBub2RlLT5nZXRDb25kaXRpb24oKSkKICAgICB7Ci0gICAgICAgIGluY3JlbWVudERlcHRoKG5v
ZGUpOwogICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7Ci0gICAg
ICAgIGRlY3JlbWVudERlcHRoKCk7CiAgICAgfQogCiAgICAgaWYgKHZpc2l0ICYmIHBvc3RWaXNp
dCkKQEAgLTczNyw2ICs4MjIsOCBAQCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlQ2Fz
ZShUSW50ZXJtQ2FzZSAqbm9kZSkKIC8vCiB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNl
TG9vcChUSW50ZXJtTG9vcCAqbm9kZSkKIHsKKyAgICBTY29wZWROb2RlSW5UcmF2ZXJzYWxQYXRo
IGFkZFRvUGF0aCh0aGlzLCBub2RlKTsKKwogICAgIGJvb2wgdmlzaXQgPSB0cnVlOwogCiAgICAg
aWYgKHByZVZpc2l0KQpAQCAtNzQ0LDggKzgzMSw2IEBAIHZvaWQgVEludGVybVRyYXZlcnNlcjo6
dHJhdmVyc2VMb29wKFRJbnRlcm1Mb29wICpub2RlKQogCiAgICAgaWYgKHZpc2l0KQogICAgIHsK
LSAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7Ci0KICAgICAgICAgaWYgKG5vZGUtPmdldElu
aXQoKSkKICAgICAgICAgICAgIG5vZGUtPmdldEluaXQoKS0+dHJhdmVyc2UodGhpcyk7CiAKQEAg
LTc1Nyw4ICs4NDIsNiBAQCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlTG9vcChUSW50
ZXJtTG9vcCAqbm9kZSkKIAogICAgICAgICBpZiAobm9kZS0+Z2V0RXhwcmVzc2lvbigpKQogICAg
ICAgICAgICAgbm9kZS0+Z2V0RXhwcmVzc2lvbigpLT50cmF2ZXJzZSh0aGlzKTsKLQotICAgICAg
ICBkZWNyZW1lbnREZXB0aCgpOwogICAgIH0KIAogICAgIGlmICh2aXNpdCAmJiBwb3N0VmlzaXQp
CkBAIC03NzAsNiArODUzLDggQEAgdm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZUxvb3Ao
VEludGVybUxvb3AgKm5vZGUpCiAvLwogdm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZUJy
YW5jaChUSW50ZXJtQnJhbmNoICpub2RlKQogeworICAgIFNjb3BlZE5vZGVJblRyYXZlcnNhbFBh
dGggYWRkVG9QYXRoKHRoaXMsIG5vZGUpOworCiAgICAgYm9vbCB2aXNpdCA9IHRydWU7CiAKICAg
ICBpZiAocHJlVmlzaXQpCkBAIC03NzcsOSArODYyLDcgQEAgdm9pZCBUSW50ZXJtVHJhdmVyc2Vy
Ojp0cmF2ZXJzZUJyYW5jaChUSW50ZXJtQnJhbmNoICpub2RlKQogCiAgICAgaWYgKHZpc2l0ICYm
IG5vZGUtPmdldEV4cHJlc3Npb24oKSkKICAgICB7Ci0gICAgICAgIGluY3JlbWVudERlcHRoKG5v
ZGUpOwogICAgICAgICBub2RlLT5nZXRFeHByZXNzaW9uKCktPnRyYXZlcnNlKHRoaXMpOwotICAg
ICAgICBkZWNyZW1lbnREZXB0aCgpOwogICAgIH0KIAogICAgIGlmICh2aXNpdCAmJiBwb3N0Vmlz
aXQpCkBAIC03ODgsNSArODcxLDggQEAgdm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZUJy
YW5jaChUSW50ZXJtQnJhbmNoICpub2RlKQogCiB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZl
cnNlUmF3KFRJbnRlcm1SYXcgKm5vZGUpCiB7CisgICAgU2NvcGVkTm9kZUluVHJhdmVyc2FsUGF0
aCBhZGRUb1BhdGgodGhpcywgbm9kZSk7CiAgICAgdmlzaXRSYXcobm9kZSk7CiB9CisKK30gIC8v
IG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtZWRpYXRlLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ludGVybWVkaWF0ZS5jcHAKaW5kZXggOGU2NTE5
ZGQ2ODc0NGNiY2M0ZDZlNmZmNWM0NzM4ODU3Mzk0ZTAwYS4uMGIzOGViNWMyYzg4NDA1NTI5NzFk
Yjg0ODEyMDUwZjQyYWQ2NDZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtZWRpYXRlLmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1lZGlhdGUuY3BwCkBA
IC0xNSw2ICsxNSw5IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1lZGlh
dGUuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmgiCiAKK25h
bWVzcGFjZSBzaAoreworCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLwogLy8gRmlyc3Qgc2V0IG9m
IGZ1bmN0aW9ucyBhcmUgdG8gaGVscCBidWlsZCB0aGUgaW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0
aW9uLgpAQCAtMjgsOCArMzEsMTAgQEAKIC8vCiAvLyBSZXR1cm5zIHRoZSBhZGRlZCBub2RlLgog
Ly8KLVRJbnRlcm1TeW1ib2wgKlRJbnRlcm1lZGlhdGU6OmFkZFN5bWJvbCgKLSAgICBpbnQgaWQs
IGNvbnN0IFRTdHJpbmcgJm5hbWUsIGNvbnN0IFRUeXBlICZ0eXBlLCBjb25zdCBUU291cmNlTG9j
ICZsaW5lKQorVEludGVybVN5bWJvbCAqVEludGVybWVkaWF0ZTo6YWRkU3ltYm9sKGludCBpZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBl
ICZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
b3VyY2VMb2MgJmxpbmUpCiB7CiAgICAgVEludGVybVN5bWJvbCAqbm9kZSA9IG5ldyBUSW50ZXJt
U3ltYm9sKGlkLCBuYW1lLCB0eXBlKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAtNjIs
OTUgKzY3LDYgQEAgVEludGVybVR5cGVkICpUSW50ZXJtZWRpYXRlOjphZGRJbmRleChUT3BlcmF0
b3Igb3AsCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLS8vIFRoaXMgaXMgdGhlIHNhZmUgd2F5IHRv
IGNoYW5nZSB0aGUgb3BlcmF0b3Igb24gYW4gYWdncmVnYXRlLCBhcyBpdAotLy8gZG9lcyBsb3Rz
IG9mIGVycm9yIGNoZWNraW5nIGFuZCBmaXhpbmcuICBFc3BlY2lhbGx5IGZvciBlc3RhYmxpc2hp
bmcKLS8vIGEgZnVuY3Rpb24gY2FsbCdzIG9wZXJhdGlvbiBvbiBpdCdzIHNldCBvZiBwYXJhbWV0
ZXJzLgotLy8KLS8vIFJldHVybnMgYW4gYWdncmVnYXRlIG5vZGUsIHdoaWNoIGNvdWxkIGJlIHRo
ZSBvbmUgcGFzc2VkIGluIGlmCi0vLyBpdCB3YXMgYWxyZWFkeSBhbiBhZ2dyZWdhdGUgYnV0IG5v
IG9wZXJhdG9yIHdhcyBzZXQuCi1USW50ZXJtQWdncmVnYXRlICpUSW50ZXJtZWRpYXRlOjpzZXRB
Z2dyZWdhdGVPcGVyYXRvcigKLSAgICBUSW50ZXJtTm9kZSAqbm9kZSwgVE9wZXJhdG9yIG9wLCBj
b25zdCBUU291cmNlTG9jICZsaW5lKQotewotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ05vZGU7
Ci0KLSAgICAvLwotICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGFnZ3JlZ2F0ZS4gIElmIG5v
dCB0dXJuIGl0IGludG8gb25lLgotICAgIC8vCi0gICAgaWYgKG5vZGUpCi0gICAgewotICAgICAg
ICBhZ2dOb2RlID0gbm9kZS0+Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICAgICAgaWYgKGFnZ05vZGUg
PT0gTlVMTCB8fCBhZ2dOb2RlLT5nZXRPcCgpICE9IEVPcE51bGwpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIC8vCi0gICAgICAgICAgICAvLyBNYWtlIGFuIGFnZ3JlZ2F0ZSBjb250YWluaW5nIHRo
aXMgbm9kZS4KLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICBhZ2dOb2RlID0gbmV3IFRJbnRl
cm1BZ2dyZWdhdGUoKTsKLSAgICAgICAgICAgIGFnZ05vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hf
YmFjayhub2RlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBh
Z2dOb2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoKTsKLSAgICB9Ci0KLSAgICAvLwotICAgIC8v
IFNldCB0aGUgb3BlcmF0b3IuCi0gICAgLy8KLSAgICBhZ2dOb2RlLT5zZXRPcChvcCk7Ci0gICAg
YWdnTm9kZS0+c2V0TGluZShsaW5lKTsKLQotICAgIHJldHVybiBhZ2dOb2RlOwotfQotCi0vLwot
Ly8gU2FmZSB3YXkgdG8gY29tYmluZSB0d28gbm9kZXMgaW50byBhbiBhZ2dyZWdhdGUuICBXb3Jr
cyB3aXRoIG51bGwgcG9pbnRlcnMsCi0vLyBhIG5vZGUgdGhhdCdzIG5vdCBhIGFnZ3JlZ2F0ZSB5
ZXQsIGV0Yy4KLS8vCi0vLyBSZXR1cm5zIHRoZSByZXN1bHRpbmcgYWdncmVnYXRlLCB1bmxlc3Mg
MCB3YXMgcGFzc2VkIGluIGZvcgotLy8gYm90aCBleGlzdGluZyBub2Rlcy4KLS8vCi1USW50ZXJt
QWdncmVnYXRlICpUSW50ZXJtZWRpYXRlOjpncm93QWdncmVnYXRlKAotICAgIFRJbnRlcm1Ob2Rl
ICpsZWZ0LCBUSW50ZXJtTm9kZSAqcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCi17Ci0g
ICAgaWYgKGxlZnQgPT0gTlVMTCAmJiByaWdodCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVM
TDsKLQotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ05vZGUgPSBOVUxMOwotICAgIGlmIChsZWZ0
KQotICAgICAgICBhZ2dOb2RlID0gbGVmdC0+Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICBpZiAoIWFn
Z05vZGUgfHwgYWdnTm9kZS0+Z2V0T3AoKSAhPSBFT3BOdWxsKQotICAgIHsKLSAgICAgICAgYWdn
Tm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlOwotICAgICAgICBpZiAobGVmdCkKLSAgICAgICAg
ICAgIGFnZ05vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhsZWZ0KTsKLSAgICB9Ci0KLSAg
ICBpZiAocmlnaHQpCi0gICAgICAgIGFnZ05vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhy
aWdodCk7Ci0KLSAgICBhZ2dOb2RlLT5zZXRMaW5lKGxpbmUpOwotCi0gICAgcmV0dXJuIGFnZ05v
ZGU7Ci19Ci0KLS8vCi0vLyBUdXJuIGFuIGV4aXN0aW5nIG5vZGUgaW50byBhbiBhZ2dyZWdhdGUu
Ci0vLwotLy8gUmV0dXJucyBhbiBhZ2dyZWdhdGUsIHVubGVzcyBOVUxMIHdhcyBwYXNzZWQgaW4g
Zm9yIHRoZSBleGlzdGluZyBub2RlLgotLy8KLVRJbnRlcm1BZ2dyZWdhdGUgKlRJbnRlcm1lZGlh
dGU6Ok1ha2VBZ2dyZWdhdGUoVEludGVybU5vZGUgKm5vZGUsIGNvbnN0IFRTb3VyY2VMb2MgJmxp
bmUpCi17Ci0gICAgaWYgKG5vZGUgPT0gbnVsbHB0cikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0KLSAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dOb2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGU7
Ci0gICAgYWdnTm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKG5vZGUpOwotCi0gICAgYWdn
Tm9kZS0+c2V0TGluZShsaW5lKTsKLQotICAgIHJldHVybiBhZ2dOb2RlOwotfQotCiAvLyBJZiB0
aGUgaW5wdXQgbm9kZSBpcyBudWxscHRyLCByZXR1cm4gbnVsbHB0ci4KIC8vIElmIHRoZSBpbnB1
dCBub2RlIGlzIGEgYmxvY2sgbm9kZSwgcmV0dXJuIGl0LgogLy8gSWYgdGhlIGlucHV0IG5vZGUg
aXMgbm90IGEgYmxvY2sgbm9kZSwgcHV0IGl0IGluc2lkZSBhIGJsb2NrIG5vZGUgYW5kIHJldHVy
biB0aGF0LgpAQCAtMjY0LDggKzE4MCw3IEBAIFRJbnRlcm1Td2l0Y2ggKlRJbnRlcm1lZGlhdGU6
OmFkZFN3aXRjaChUSW50ZXJtVHlwZWQgKmluaXQsCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLVRJ
bnRlcm1DYXNlICpUSW50ZXJtZWRpYXRlOjphZGRDYXNlKAotICAgIFRJbnRlcm1UeXBlZCAqY29u
ZGl0aW9uLCBjb25zdCBUU291cmNlTG9jICZsaW5lKQorVEludGVybUNhc2UgKlRJbnRlcm1lZGlh
dGU6OmFkZENhc2UoVEludGVybVR5cGVkICpjb25kaXRpb24sIGNvbnN0IFRTb3VyY2VMb2MgJmxp
bmUpCiB7CiAgICAgVEludGVybUNhc2UgKm5vZGUgPSBuZXcgVEludGVybUNhc2UoY29uZGl0aW9u
KTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAtMzEzLDkgKzIyOCwxMiBAQCBUSW50ZXJt
VHlwZWQgKlRJbnRlcm1lZGlhdGU6OkFkZFN3aXp6bGUoVEludGVybVR5cGVkICpiYXNlRXhwcmVz
c2lvbiwKIC8vCiAvLyBDcmVhdGUgbG9vcCBub2Rlcy4KIC8vCi1USW50ZXJtTm9kZSAqVEludGVy
bWVkaWF0ZTo6YWRkTG9vcCgKLSAgICBUTG9vcFR5cGUgdHlwZSwgVEludGVybU5vZGUgKmluaXQs
IFRJbnRlcm1UeXBlZCAqY29uZCwgVEludGVybVR5cGVkICpleHByLAotICAgIFRJbnRlcm1Ob2Rl
ICpib2R5LCBjb25zdCBUU291cmNlTG9jICZsaW5lKQorVEludGVybU5vZGUgKlRJbnRlcm1lZGlh
dGU6OmFkZExvb3AoVExvb3BUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUSW50ZXJtTm9kZSAqaW5pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJbnRlcm1UeXBlZCAqY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJbnRlcm1UeXBlZCAqZXhwciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJbnRlcm1Ob2RlICpib2R5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkKIHsKICAgICBUSW50ZXJtTm9kZSAqbm9kZSA9
IG5ldyBUSW50ZXJtTG9vcCh0eXBlLCBpbml0LCBjb25kLCBleHByLCBFbnN1cmVCbG9jayhib2R5
KSk7CiAgICAgbm9kZS0+c2V0TGluZShsaW5lKTsKQEAgLTMyNiwxNCArMjQ0LDE0IEBAIFRJbnRl
cm1Ob2RlICpUSW50ZXJtZWRpYXRlOjphZGRMb29wKAogLy8KIC8vIEFkZCBicmFuY2hlcy4KIC8v
Ci1USW50ZXJtQnJhbmNoKiBUSW50ZXJtZWRpYXRlOjphZGRCcmFuY2goCi0gICAgVE9wZXJhdG9y
IGJyYW5jaE9wLCBjb25zdCBUU291cmNlTG9jICZsaW5lKQorVEludGVybUJyYW5jaCAqVEludGVy
bWVkaWF0ZTo6YWRkQnJhbmNoKFRPcGVyYXRvciBicmFuY2hPcCwgY29uc3QgVFNvdXJjZUxvYyAm
bGluZSkKIHsKICAgICByZXR1cm4gYWRkQnJhbmNoKGJyYW5jaE9wLCAwLCBsaW5lKTsKIH0KIAot
VEludGVybUJyYW5jaCogVEludGVybWVkaWF0ZTo6YWRkQnJhbmNoKAotICAgIFRPcGVyYXRvciBi
cmFuY2hPcCwgVEludGVybVR5cGVkICpleHByZXNzaW9uLCBjb25zdCBUU291cmNlTG9jICZsaW5l
KQorVEludGVybUJyYW5jaCAqVEludGVybWVkaWF0ZTo6YWRkQnJhbmNoKFRPcGVyYXRvciBicmFu
Y2hPcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQgKmV4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFNvdXJjZUxvYyAmbGluZSkKIHsKICAgICBUSW50ZXJtQnJhbmNoICpub2RlID0gbmV3
IFRJbnRlcm1CcmFuY2goYnJhbmNoT3AsIGV4cHJlc3Npb24pOwogICAgIG5vZGUtPnNldExpbmUo
bGluZSk7CkBAIC0zNTUsMjAgKzI3MywyMyBAQCBUSW50ZXJtVHlwZWQgKlRJbnRlcm1lZGlhdGU6
OmZvbGRBZ2dyZWdhdGVCdWlsdEluKFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSwKICAgICAg
ICAgY2FzZSBFT3BNaXg6CiAgICAgICAgIGNhc2UgRU9wU3RlcDoKICAgICAgICAgY2FzZSBFT3BT
bW9vdGhTdGVwOgotICAgICAgICBjYXNlIEVPcE11bDoKKyAgICAgICAgY2FzZSBFT3BMZGV4cDoK
KyAgICAgICAgY2FzZSBFT3BNdWxNYXRyaXhDb21wb25lbnRXaXNlOgogICAgICAgICBjYXNlIEVP
cE91dGVyUHJvZHVjdDoKLSAgICAgICAgY2FzZSBFT3BMZXNzVGhhbjoKLSAgICAgICAgY2FzZSBF
T3BMZXNzVGhhbkVxdWFsOgotICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOgotICAgICAgICBj
YXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWw6Ci0gICAgICAgIGNhc2UgRU9wVmVjdG9yRXF1YWw6Ci0g
ICAgICAgIGNhc2UgRU9wVmVjdG9yTm90RXF1YWw6CisgICAgICAgIGNhc2UgRU9wRXF1YWxDb21w
b25lbnRXaXNlOgorICAgICAgICBjYXNlIEVPcE5vdEVxdWFsQ29tcG9uZW50V2lzZToKKyAgICAg
ICAgY2FzZSBFT3BMZXNzVGhhbkNvbXBvbmVudFdpc2U6CisgICAgICAgIGNhc2UgRU9wTGVzc1Ro
YW5FcXVhbENvbXBvbmVudFdpc2U6CisgICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW5Db21wb25l
bnRXaXNlOgorICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWxDb21wb25lbnRXaXNlOgog
ICAgICAgICBjYXNlIEVPcERpc3RhbmNlOgogICAgICAgICBjYXNlIEVPcERvdDoKICAgICAgICAg
Y2FzZSBFT3BDcm9zczoKICAgICAgICAgY2FzZSBFT3BGYWNlRm9yd2FyZDoKICAgICAgICAgY2Fz
ZSBFT3BSZWZsZWN0OgogICAgICAgICBjYXNlIEVPcFJlZnJhY3Q6CisgICAgICAgIGNhc2UgRU9w
Qml0ZmllbGRFeHRyYWN0OgorICAgICAgICBjYXNlIEVPcEJpdGZpZWxkSW5zZXJ0OgogICAgICAg
ICAgICAgcmV0dXJuIGFnZ3JlZ2F0ZS0+Zm9sZChkaWFnbm9zdGljcyk7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAvLyBUT0RPOiBBZGQgc3VwcG9ydCBmb3IgZm9sZGluZyBhcnJheSBj
b25zdHJ1Y3RvcnMKQEAgLTM4MCwzICszMDEsNSBAQCBUSW50ZXJtVHlwZWQgKlRJbnRlcm1lZGlh
dGU6OmZvbGRBZ2dyZWdhdGVCdWlsdEluKFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSwKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIH0KKworfSAgLy8gbmFtZXNwYWNlIHNo
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9JbnRlcm1lZGlhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0ludGVybWVkaWF0ZS5oCmluZGV4IGE0ZmI3Y2M5ZTdiNzlkYmM1MjZiMTJj
MGE3YWQ1YzdmMzNkMTI4NTQuLmViMWQxZDBlNTYyZjBmYjViMDVkNWM4M2ZlZjIzZmM5MmM4ZWQw
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL0ludGVybWVkaWF0ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0ludGVybWVkaWF0ZS5oCkBAIC05LDYgKzksOSBAQAogCiAjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCiAKK25hbWVzcGFjZSBzaAor
eworCiBzdHJ1Y3QgVFZlY3RvckZpZWxkcwogewogICAgIGludCBvZmZzZXRzWzRdOwpAQCAtMjQs
MjAgKzI3LDEzIEBAIGNsYXNzIFRJbnRlcm1lZGlhdGUKICAgICBQT09MX0FMTE9DQVRPUl9ORVdf
REVMRVRFKCk7CiAgICAgVEludGVybWVkaWF0ZSgpIHt9CiAKLSAgICBUSW50ZXJtU3ltYm9sICph
ZGRTeW1ib2woCi0gICAgICAgIGludCBpZCwgY29uc3QgVFN0cmluZyAmLCBjb25zdCBUVHlwZSAm
LCBjb25zdCBUU291cmNlTG9jICYpOworICAgIFRJbnRlcm1TeW1ib2wgKmFkZFN5bWJvbChpbnQg
aWQsIGNvbnN0IFRTdHJpbmcgJiwgY29uc3QgVFR5cGUgJiwgY29uc3QgVFNvdXJjZUxvYyAmKTsK
ICAgICBUSW50ZXJtVHlwZWQgKmFkZEluZGV4KFRPcGVyYXRvciBvcCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRJbnRlcm1UeXBlZCAqaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUU291cmNlTG9jICZsaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVERpYWdub3N0
aWNzICpkaWFnbm9zdGljcyk7Ci0gICAgVEludGVybVR5cGVkICphZGRVbmFyeU1hdGgoCi0gICAg
ICAgIFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkICpjaGlsZCwgY29uc3QgVFNvdXJjZUxvYyAm
bGluZSwgY29uc3QgVFR5cGUgKmZ1bmNSZXR1cm5UeXBlKTsKLSAgICBUSW50ZXJtQWdncmVnYXRl
ICpncm93QWdncmVnYXRlKAotICAgICAgICBUSW50ZXJtTm9kZSAqbGVmdCwgVEludGVybU5vZGUg
KnJpZ2h0LCBjb25zdCBUU291cmNlTG9jICYpOwotICAgIHN0YXRpYyBUSW50ZXJtQWdncmVnYXRl
ICpNYWtlQWdncmVnYXRlKFRJbnRlcm1Ob2RlICpub2RlLCBjb25zdCBUU291cmNlTG9jICZsaW5l
KTsKICAgICBzdGF0aWMgVEludGVybUJsb2NrICpFbnN1cmVCbG9jayhUSW50ZXJtTm9kZSAqbm9k
ZSk7Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqc2V0QWdncmVnYXRlT3BlcmF0b3IoVEludGVybU5v
ZGUgKiwgVE9wZXJhdG9yLCBjb25zdCBUU291cmNlTG9jICYpOwogICAgIFRJbnRlcm1Ob2RlICph
ZGRJZkVsc2UoVEludGVybVR5cGVkICpjb25kLCBUSW50ZXJtTm9kZVBhaXIgY29kZSwgY29uc3Qg
VFNvdXJjZUxvYyAmbGluZSk7CiAgICAgc3RhdGljIFRJbnRlcm1UeXBlZCAqQWRkVGVybmFyeVNl
bGVjdGlvbihUSW50ZXJtVHlwZWQgKmNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnRydWVFeHByZXNzaW9uLApAQCAtNDYsOCAr
NDIsNyBAQCBjbGFzcyBUSW50ZXJtZWRpYXRlCiAgICAgVEludGVybVN3aXRjaCAqYWRkU3dpdGNo
KFRJbnRlcm1UeXBlZCAqaW5pdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVy
bUJsb2NrICpzdGF0ZW1lbnRMaXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUU291cmNlTG9jICZsaW5lKTsKLSAgICBUSW50ZXJtQ2FzZSAqYWRkQ2FzZSgKLSAgICAgICAg
VEludGVybVR5cGVkICpjb25kaXRpb24sIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpOworICAgIFRJ
bnRlcm1DYXNlICphZGRDYXNlKFRJbnRlcm1UeXBlZCAqY29uZGl0aW9uLCBjb25zdCBUU291cmNl
TG9jICZsaW5lKTsKICAgICBzdGF0aWMgVEludGVybVR5cGVkICpBZGRDb21tYShUSW50ZXJtVHlw
ZWQgKmxlZnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVk
ICpyaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNl
TG9jICZsaW5lLApAQCAtNTUsOCArNTAsMTIgQEAgY2xhc3MgVEludGVybWVkaWF0ZQogICAgIFRJ
bnRlcm1Db25zdGFudFVuaW9uICphZGRDb25zdGFudFVuaW9uKGNvbnN0IFRDb25zdGFudFVuaW9u
ICpjb25zdGFudFVuaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRUeXBlICZ0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpOwotICAgIFRJbnRlcm1Ob2RlICphZGRM
b29wKFRMb29wVHlwZSwgVEludGVybU5vZGUgKiwgVEludGVybVR5cGVkICosIFRJbnRlcm1UeXBl
ZCAqLAotICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICosIGNvbnN0IFRTb3Vy
Y2VMb2MgJik7CisgICAgVEludGVybU5vZGUgKmFkZExvb3AoVExvb3BUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICosCisgICAgICAgICAgICAgICAgICAgICAgICAg
VEludGVybVR5cGVkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICos
CisgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICYpOwogICAgIFRJbnRlcm1CcmFuY2ggKmFkZEJy
YW5jaChUT3BlcmF0b3IsIGNvbnN0IFRTb3VyY2VMb2MgJik7CiAgICAgVEludGVybUJyYW5jaCAq
YWRkQnJhbmNoKFRPcGVyYXRvciwgVEludGVybVR5cGVkICosIGNvbnN0IFRTb3VyY2VMb2MgJik7
CiAgICAgc3RhdGljIFRJbnRlcm1UeXBlZCAqQWRkU3dpenpsZShUSW50ZXJtVHlwZWQgKmJhc2VF
eHByZXNzaW9uLApAQCAtNjgsNyArNjcsOSBAQCBjbGFzcyBUSW50ZXJtZWRpYXRlCiAgICAgVElu
dGVybVR5cGVkICpmb2xkQWdncmVnYXRlQnVpbHRJbihUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdh
dGUsIFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpOwogCiAgIHByaXZhdGU6Ci0gICAgdm9pZCBv
cGVyYXRvcj0oVEludGVybWVkaWF0ZSAmKTsgLy8gcHJldmVudCBhc3NpZ25tZW50cworICAgIHZv
aWQgb3BlcmF0b3I9KFRJbnRlcm1lZGlhdGUgJik7ICAvLyBwcmV2ZW50IGFzc2lnbm1lbnRzCiB9
OwogCit9ICAvLyBuYW1lc3BhY2Ugc2gKKwogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9S
X0lOVEVSTUVESUFURV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvTG9vcEluZm8uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvTG9vcEluZm8uY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkOTMxYTE4YTIzMTIwMDQ1MzUxOGI1NTA2ZGMyYzM4OTNhMGNmN2FhLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0xvb3BJbmZvLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDIxMSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9Mb29wSW5mby5oIgotCi1uYW1lc3BhY2UKLXsKLQotaW50IEV2
YWx1YXRlSW50Q29uc3RhbnQoVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUpCi17Ci0gICAgQVNT
RVJUKG5vZGUgJiYgbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKSk7Ci0gICAgcmV0dXJuIG5v
ZGUtPmdldElDb25zdCgwKTsKLX0KLQotaW50IEdldExvb3BJbnRJbmNyZW1lbnQoVEludGVybUxv
b3AgKm5vZGUpCi17Ci0gICAgVEludGVybU5vZGUgKmV4cHIgPSBub2RlLT5nZXRFeHByZXNzaW9u
KCk7Ci0gICAgLy8gZm9yIGV4cHJlc3Npb24gaGFzIG9uZSBvZiB0aGUgZm9sbG93aW5nIGZvcm1z
OgotICAgIC8vICAgICBsb29wX2luZGV4KysKLSAgICAvLyAgICAgbG9vcF9pbmRleC0tCi0gICAg
Ly8gICAgIGxvb3BfaW5kZXggKz0gY29uc3RhbnRfZXhwcmVzc2lvbgotICAgIC8vICAgICBsb29w
X2luZGV4IC09IGNvbnN0YW50X2V4cHJlc3Npb24KLSAgICAvLyAgICAgKytsb29wX2luZGV4Ci0g
ICAgLy8gICAgIC0tbG9vcF9pbmRleAotICAgIC8vIFRoZSBsYXN0IHR3byBmb3JtcyBhcmUgbm90
IHNwZWNpZmllZCBpbiB0aGUgc3BlYywgYnV0IEkgYW0gYXNzdW1pbmcKLSAgICAvLyBpdHMgYW4g
b3ZlcnNpZ2h0LgotICAgIFRJbnRlcm1VbmFyeSAqdW5PcCA9IGV4cHItPmdldEFzVW5hcnlOb2Rl
KCk7Ci0gICAgVEludGVybUJpbmFyeSAqYmluT3AgPSB1bk9wID8gTlVMTCA6IGV4cHItPmdldEFz
QmluYXJ5Tm9kZSgpOwotCi0gICAgVE9wZXJhdG9yIG9wID0gRU9wTnVsbDsKLSAgICBUSW50ZXJt
Q29uc3RhbnRVbmlvbiAqaW5jcmVtZW50Tm9kZSA9IE5VTEw7Ci0gICAgaWYgKHVuT3ApCi0gICAg
ewotICAgICAgICBvcCA9IHVuT3AtPmdldE9wKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGJpbk9w
KQotICAgIHsKLSAgICAgICAgb3AgPSBiaW5PcC0+Z2V0T3AoKTsKLSAgICAgICAgQVNTRVJUKGJp
bk9wLT5nZXRSaWdodCgpKTsKLSAgICAgICAgaW5jcmVtZW50Tm9kZSA9IGJpbk9wLT5nZXRSaWdo
dCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKLSAgICAgICAgQVNTRVJUKGluY3JlbWVudE5vZGUp
OwotICAgIH0KLQotICAgIGludCBpbmNyZW1lbnQgPSAwOwotICAgIC8vIFRoZSBvcGVyYXRvciBp
cyBvbmUgb2Y6ICsrIC0tICs9IC09LgotICAgIHN3aXRjaCAob3ApCi0gICAgewotICAgICAgY2Fz
ZSBFT3BQb3N0SW5jcmVtZW50OgotICAgICAgY2FzZSBFT3BQcmVJbmNyZW1lbnQ6Ci0gICAgICAg
IEFTU0VSVCh1bk9wICYmICFiaW5PcCk7Ci0gICAgICAgIGluY3JlbWVudCA9IDE7Ci0gICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBFT3BQb3N0RGVjcmVtZW50OgotICAgICAgY2FzZSBFT3BQcmVE
ZWNyZW1lbnQ6Ci0gICAgICAgIEFTU0VSVCh1bk9wICYmICFiaW5PcCk7Ci0gICAgICAgIGluY3Jl
bWVudCA9IC0xOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQWRkQXNzaWduOgotICAg
ICAgICBBU1NFUlQoIXVuT3AgJiYgYmluT3ApOwotICAgICAgICBpbmNyZW1lbnQgPSBFdmFsdWF0
ZUludENvbnN0YW50KGluY3JlbWVudE5vZGUpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
RU9wU3ViQXNzaWduOgotICAgICAgICBBU1NFUlQoIXVuT3AgJiYgYmluT3ApOwotICAgICAgICBp
bmNyZW1lbnQgPSAtIEV2YWx1YXRlSW50Q29uc3RhbnQoaW5jcmVtZW50Tm9kZSk7Ci0gICAgICAg
IGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gaW5jcmVtZW50OwotfQotCi19ICAvLyBuYW1lc3BhY2UgYW5vbnltb3VzCi0K
LVRMb29wSW5kZXhJbmZvOjpUTG9vcEluZGV4SW5mbygpCi0gICAgOiBtSWQoLTEpLAotICAgICAg
bVR5cGUoRWJ0Vm9pZCksCi0gICAgICBtSW5pdFZhbHVlKDApLAotICAgICAgbVN0b3BWYWx1ZSgw
KSwKLSAgICAgIG1JbmNyZW1lbnRWYWx1ZSgwKSwKLSAgICAgIG1PcChFT3BOdWxsKSwKLSAgICAg
IG1DdXJyZW50VmFsdWUoMCkKLXsKLX0KLQotdm9pZCBUTG9vcEluZGV4SW5mbzo6ZmlsbEluZm8o
VEludGVybUxvb3AgKm5vZGUpCi17Ci0gICAgaWYgKG5vZGUgPT0gTlVMTCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgLy8gSGVyZSB3ZSBhc3N1bWUgYWxsIHRoZSBvcGVyYXRpb25zIGFyZSB2YWxp
ZCwgYmVjYXVzZSB0aGUgbG9vcCBub2RlIGlzCi0gICAgLy8gYWxyZWFkeSB2YWxpZGF0ZWQgaW4g
VmFsaWRhdGVMaW1pdGF0aW9ucy4KLSAgICBUSW50ZXJtU2VxdWVuY2UgKmRlY2xTZXEgPQotICAg
ICAgICBub2RlLT5nZXRJbml0KCktPmdldEFzQWdncmVnYXRlKCktPmdldFNlcXVlbmNlKCk7Ci0g
ICAgVEludGVybUJpbmFyeSAqZGVjbEluaXQgPSAoKmRlY2xTZXEpWzBdLT5nZXRBc0JpbmFyeU5v
ZGUoKTsKLSAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSBkZWNsSW5pdC0+Z2V0TGVmdCgpLT5n
ZXRBc1N5bWJvbE5vZGUoKTsKLQotICAgIG1JZCA9IHN5bWJvbC0+Z2V0SWQoKTsKLSAgICBtVHlw
ZSA9IHN5bWJvbC0+Z2V0QmFzaWNUeXBlKCk7Ci0KLSAgICBpZiAobVR5cGUgPT0gRWJ0SW50KQot
ICAgIHsKLSAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24qIGluaXROb2RlID0gZGVjbEluaXQt
PmdldFJpZ2h0KCktPmdldEFzQ29uc3RhbnRVbmlvbigpOwotICAgICAgICBtSW5pdFZhbHVlID0g
RXZhbHVhdGVJbnRDb25zdGFudChpbml0Tm9kZSk7Ci0gICAgICAgIG1DdXJyZW50VmFsdWUgPSBt
SW5pdFZhbHVlOwotICAgICAgICBtSW5jcmVtZW50VmFsdWUgPSBHZXRMb29wSW50SW5jcmVtZW50
KG5vZGUpOwotCi0gICAgICAgIFRJbnRlcm1CaW5hcnkqIGJpbk9wID0gbm9kZS0+Z2V0Q29uZGl0
aW9uKCktPmdldEFzQmluYXJ5Tm9kZSgpOwotICAgICAgICBtU3RvcFZhbHVlID0gRXZhbHVhdGVJ
bnRDb25zdGFudCgKLSAgICAgICAgICAgIGJpbk9wLT5nZXRSaWdodCgpLT5nZXRBc0NvbnN0YW50
VW5pb24oKSk7Ci0gICAgICAgIG1PcCA9IGJpbk9wLT5nZXRPcCgpOwotICAgIH0KLX0KLQotYm9v
bCBUTG9vcEluZGV4SW5mbzo6c2F0aXNmaWVzTG9vcENvbmRpdGlvbigpIGNvbnN0Ci17Ci0gICAg
Ly8gUmVsYXRpb25hbCBvcGVyYXRvciBpcyBvbmUgb2Y6ID4gPj0gPCA8PSA9PSBvciAhPS4KLSAg
ICBzd2l0Y2ggKG1PcCkKLSAgICB7Ci0gICAgICBjYXNlIEVPcEVxdWFsOgotICAgICAgICByZXR1
cm4gKG1DdXJyZW50VmFsdWUgPT0gbVN0b3BWYWx1ZSk7Ci0gICAgICBjYXNlIEVPcE5vdEVxdWFs
OgotICAgICAgICByZXR1cm4gKG1DdXJyZW50VmFsdWUgIT0gbVN0b3BWYWx1ZSk7Ci0gICAgICBj
YXNlIEVPcExlc3NUaGFuOgotICAgICAgICByZXR1cm4gKG1DdXJyZW50VmFsdWUgPCBtU3RvcFZh
bHVlKTsKLSAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW46Ci0gICAgICAgIHJldHVybiAobUN1cnJl
bnRWYWx1ZSA+IG1TdG9wVmFsdWUpOwotICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFsOgotICAg
ICAgICByZXR1cm4gKG1DdXJyZW50VmFsdWUgPD0gbVN0b3BWYWx1ZSk7Ci0gICAgICBjYXNlIEVP
cEdyZWF0ZXJUaGFuRXF1YWw6Ci0gICAgICAgIHJldHVybiAobUN1cnJlbnRWYWx1ZSA+PSBtU3Rv
cFZhbHVlKTsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLVRMb29wSW5mbzo6VExvb3BJbmZvKCkKLSAgICA6
IGxvb3AoTlVMTCkKLXsKLX0KLQotVExvb3BJbmZvOjpUTG9vcEluZm8oVEludGVybUxvb3AgKm5v
ZGUpCi0gICAgOiBsb29wKG5vZGUpCi17Ci0gICAgaW5kZXguZmlsbEluZm8obm9kZSk7Ci19Ci0K
LVRJbnRlcm1Mb29wICpUTG9vcFN0YWNrOjpmaW5kTG9vcChUSW50ZXJtU3ltYm9sICpzeW1ib2wp
Ci17Ci0gICAgaWYgKCFzeW1ib2wpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGZvciAoaXRl
cmF0b3IgaXRlciA9IGJlZ2luKCk7IGl0ZXIgIT0gZW5kKCk7ICsraXRlcikKLSAgICB7Ci0gICAg
ICAgIGlmIChpdGVyLT5pbmRleC5nZXRJZCgpID09IHN5bWJvbC0+Z2V0SWQoKSkKLSAgICAgICAg
ICAgIHJldHVybiBpdGVyLT5sb29wOwotICAgIH0KLSAgICByZXR1cm4gTlVMTDsKLX0KLQotVExv
b3BJbmRleEluZm8gKlRMb29wU3RhY2s6OmdldEluZGV4SW5mbyhUSW50ZXJtU3ltYm9sICpzeW1i
b2wpCi17Ci0gICAgaWYgKCFzeW1ib2wpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGZvciAo
aXRlcmF0b3IgaXRlciA9IGJlZ2luKCk7IGl0ZXIgIT0gZW5kKCk7ICsraXRlcikKLSAgICB7Ci0g
ICAgICAgIGlmIChpdGVyLT5pbmRleC5nZXRJZCgpID09IHN5bWJvbC0+Z2V0SWQoKSkKLSAgICAg
ICAgICAgIHJldHVybiAmKGl0ZXItPmluZGV4KTsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19
Ci0KLXZvaWQgVExvb3BTdGFjazo6c3RlcCgpCi17Ci0gICAgQVNTRVJUKCFlbXB0eSgpKTsKLSAg
ICByYmVnaW4oKS0+aW5kZXguc3RlcCgpOwotfQotCi1ib29sIFRMb29wU3RhY2s6OnNhdGlzZmll
c0xvb3BDb25kaXRpb24oKQotewotICAgIEFTU0VSVCghZW1wdHkoKSk7Ci0gICAgcmV0dXJuIHJi
ZWdpbigpLT5pbmRleC5zYXRpc2ZpZXNMb29wQ29uZGl0aW9uKCk7Ci19Ci0KLWJvb2wgVExvb3BT
dGFjazo6bmVlZHNUb1JlcGxhY2VTeW1ib2xXaXRoVmFsdWUoVEludGVybVN5bWJvbCAqc3ltYm9s
KQotewotICAgIFRJbnRlcm1Mb29wICpsb29wID0gZmluZExvb3Aoc3ltYm9sKTsKLSAgICByZXR1
cm4gbG9vcCAmJiBsb29wLT5nZXRVbnJvbGxGbGFnKCk7Ci19Ci0KLWludCBUTG9vcFN0YWNrOjpn
ZXRMb29wSW5kZXhWYWx1ZShUSW50ZXJtU3ltYm9sICpzeW1ib2wpCi17Ci0gICAgVExvb3BJbmRl
eEluZm8gKmluZm8gPSBnZXRJbmRleEluZm8oc3ltYm9sKTsKLSAgICBBU1NFUlQoaW5mbyk7Ci0g
ICAgcmV0dXJuIGluZm8tPmdldEN1cnJlbnRWYWx1ZSgpOwotfQotCi12b2lkIFRMb29wU3RhY2s6
OnB1c2goVEludGVybUxvb3AgKmxvb3ApCi17Ci0gICAgVExvb3BJbmZvIGluZm8obG9vcCk7Ci0g
ICAgcHVzaF9iYWNrKGluZm8pOwotfQotCi12b2lkIFRMb29wU3RhY2s6OnBvcCgpCi17Ci0gICAg
cG9wX2JhY2soKTsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvTG9vcEluZm8uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL0xvb3BJbmZvLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGVjNzNmZDBmYTUyZjMwN2RiN2NkMzg1NjdiYzVlZjdmNDFiNGE0NjguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvTG9vcEluZm8uaAorKysgL2Rldi9udWxs
CkBAIC0xLDgwICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpZm5kZWYgQ09NUElMRVJf
VFJBTlNMQVRPUl9MT09QSU5GT19IXwotI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX0xPT1BJ
TkZPX0hfCi0KLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKLQot
Y2xhc3MgVExvb3BJbmRleEluZm8KLXsKLSAgcHVibGljOgotICAgIFRMb29wSW5kZXhJbmZvKCk7
Ci0KLSAgICAvLyBJZiB0eXBlIGlzIEVidEludCwgZmlsbCBhbGwgZmllbGRzIG9mIHRoZSBzdHJ1
Y3R1cmUgd2l0aCBpbmZvCi0gICAgLy8gZXh0cmFjdGVkIGZyb20gYSBsb29wIG5vZGUuCi0gICAg
Ly8gSWYgdHlwZSBpcyBub3QgRWJ0SW50LCBvbmx5IGZpbGwgaWQgYW5kIHR5cGUuCi0gICAgdm9p
ZCBmaWxsSW5mbyhUSW50ZXJtTG9vcCAqbm9kZSk7Ci0KLSAgICBpbnQgZ2V0SWQoKSBjb25zdCB7
IHJldHVybiBtSWQ7IH0KLSAgICB2b2lkIHNldElkKGludCBpZCkgeyBtSWQgPSBpZDsgfQotICAg
IFRCYXNpY1R5cGUgZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1UeXBlOyB9Ci0gICAgdm9pZCBz
ZXRUeXBlKFRCYXNpY1R5cGUgdHlwZSkgeyBtVHlwZSA9IHR5cGU7IH0KLSAgICBpbnQgZ2V0Q3Vy
cmVudFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbUN1cnJlbnRWYWx1ZTsgfQotCi0gICAgdm9pZCBz
dGVwKCkgeyBtQ3VycmVudFZhbHVlICs9IG1JbmNyZW1lbnRWYWx1ZTsgfQotCi0gICAgLy8gQ2hl
Y2sgaWYgdGhlIGN1cnJlbnQgdmFsdWUgc2F0aXNmaWVzIHRoZSBsb29wIGNvbmRpdGlvbi4KLSAg
ICBib29sIHNhdGlzZmllc0xvb3BDb25kaXRpb24oKSBjb25zdDsKLQotICBwcml2YXRlOgotICAg
IGludCBtSWQ7Ci0gICAgVEJhc2ljVHlwZSBtVHlwZTsgIC8vIEVpdGhlciBFYnRJbnQgb3IgRWJ0
RmxvYXQKLQotICAgIC8vIEJlbG93IGZpZWxkcyBhcmUgb25seSB2YWxpZCBpZiB0aGUgaW5kZXgn
cyB0eXBlIGlzIGludC4KLSAgICBpbnQgbUluaXRWYWx1ZTsKLSAgICBpbnQgbVN0b3BWYWx1ZTsK
LSAgICBpbnQgbUluY3JlbWVudFZhbHVlOwotICAgIFRPcGVyYXRvciBtT3A7Ci0gICAgaW50IG1D
dXJyZW50VmFsdWU7Ci19OwotCi1zdHJ1Y3QgVExvb3BJbmZvCi17Ci0gICAgVExvb3BJbmRleElu
Zm8gaW5kZXg7Ci0gICAgVEludGVybUxvb3AgKmxvb3A7Ci0KLSAgICBUTG9vcEluZm8oKTsKLSAg
ICBUTG9vcEluZm8oVEludGVybUxvb3AgKm5vZGUpOwotfTsKLQotY2xhc3MgVExvb3BTdGFjayA6
IHB1YmxpYyBUVmVjdG9yPFRMb29wSW5mbz4KLXsKLSAgcHVibGljOgotICAgIC8vIFNlYXJjaCBs
b29wIHN0YWNrIGZvciBhIGxvb3Agd2hvc2UgaW5kZXggbWF0Y2hlcyB0aGUgaW5wdXQgc3ltYm9s
LgotICAgIFRJbnRlcm1Mb29wICpmaW5kTG9vcChUSW50ZXJtU3ltYm9sICpzeW1ib2wpOwotCi0g
ICAgLy8gRmluZCB0aGUgbG9vcCBpbmRleCBpbmZvIGluIHRoZSBsb29wIHN0YWNrIGJ5IHRoZSBp
bnB1dCBzeW1ib2wuCi0gICAgVExvb3BJbmRleEluZm8gKmdldEluZGV4SW5mbyhUSW50ZXJtU3lt
Ym9sICpzeW1ib2wpOwotCi0gICAgLy8gVXBkYXRlIHRoZSBjdXJyZW50VmFsdWUgZm9yIHRoZSBu
ZXh0IGxvb3AgaXRlcmF0aW9uLgotICAgIHZvaWQgc3RlcCgpOwotCi0gICAgLy8gUmV0dXJuIGZh
bHNlIGlmIGxvb3AgY29uZGl0aW9uIGlzIG5vIGxvbmdlciBzYXRpc2ZpZWQuCi0gICAgYm9vbCBz
YXRpc2ZpZXNMb29wQ29uZGl0aW9uKCk7Ci0KLSAgICAvLyBDaGVjayBpZiB0aGUgc3ltYm9sIGlz
IHRoZSBpbmRleCBvZiBhIGxvb3AgdGhhdCdzIHVucm9sbGVkLgotICAgIGJvb2wgbmVlZHNUb1Jl
cGxhY2VTeW1ib2xXaXRoVmFsdWUoVEludGVybVN5bWJvbCAqc3ltYm9sKTsKLQotICAgIC8vIFJl
dHVybiB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIGdpdmVuIGxvb3AgaW5kZXggc3ltYm9sLgotICAg
IGludCBnZXRMb29wSW5kZXhWYWx1ZShUSW50ZXJtU3ltYm9sICpzeW1ib2wpOwotCi0gICAgdm9p
ZCBwdXNoKFRJbnRlcm1Mb29wICppbmZvKTsKLSAgICB2b2lkIHBvcCgpOwotfTsKLQotI2VuZGlm
IC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfTE9PUElORk9fSF8KLQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvTU1hcC5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvTU1hcC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2E4NDM5OTJiNmRkMzA2NmZhZmZiZmI2ODQxMTUwZWZl
NzFlMDA3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL01NYXAuaAorKysg
L2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpZm5kZWYg
Q09NUElMRVJfVFJBTlNMQVRPUl9NTUFQX0hfCi0jZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1Jf
TU1BUF9IXwotCi0vLwotLy8gRW5jYXBzdWxhdGUgbWVtb3J5IG1hcHBlZCBmaWxlcwotLy8KLQot
Y2xhc3MgVE1NYXAgewotcHVibGljOgotICAgIFRNTWFwKGNvbnN0IGNoYXIqIGZpbGVOYW1lKSA6
IAotICAgICAgICBmU2l6ZSgtMSksIC8vIC0xIGlzIHRoZSBlcnJvciB2YWx1ZSByZXR1cm5lZCBi
eSBHZXRGaWxlU2l6ZSgpCi0gICAgICAgIGZwKE5VTEwpLAotICAgICAgICBmQnVmZigwKSAgIC8v
IDAgaXMgdGhlIGVycm9yIHZhbHVlIHJldHVybmVkIGJ5IE1hcFZpZXdPZkZpbGUoKQotICAgIHsK
LSAgICAgICAgaWYgKChmcCA9IGZvcGVuKGZpbGVOYW1lLCAiciIpKSA9PSBOVUxMKQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICBjaGFyIGMgPSBnZXRjKGZwKTsKLSAgICAgICAgZlNpemUg
PSAwOwotICAgICAgICB3aGlsZSAoYyAhPSBFT0YpIHsKLSAgICAgICAgICAgIGZTaXplKys7Ci0g
ICAgICAgICAgICBjID0gZ2V0YyhmcCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGMgPT0gRU9G
KQotICAgICAgICAgICAgZlNpemUrKzsKLSAgICAgICAgcmV3aW5kKGZwKTsKLSAgICAgICAgZkJ1
ZmYgPSAoY2hhciopbWFsbG9jKHNpemVvZihjaGFyKSAqIGZTaXplKTsKLSAgICAgICAgaW50IGNv
dW50ID0gMDsKLSAgICAgICAgYyA9IGdldGMoZnApOwotICAgICAgICB3aGlsZSAoYyAhPSBFT0Yp
IHsKLSAgICAgICAgICAgIGZCdWZmW2NvdW50KytdID0gYzsKLSAgICAgICAgICAgIGMgPSBnZXRj
KGZwKTsKLSAgICAgICAgfQotICAgICAgICBmQnVmZltjb3VudCsrXSA9IGM7Ci0gICAgfQotCi0g
ICAgY2hhciogZ2V0RGF0YSgpIHsgcmV0dXJuIGZCdWZmOyB9Ci0gICAgaW50ICAgZ2V0U2l6ZSgp
IHsgcmV0dXJuIGZTaXplOyB9Ci0KLSAgICB+VE1NYXAoKSB7Ci0gICAgICAgIGlmIChmcCAhPSBO
VUxMKQotICAgICAgICAgICAgZmNsb3NlKGZwKTsKLSAgICB9Ci0gICAgCi1wcml2YXRlOgotICAg
IGludCAgICAgICAgICAgICBmU2l6ZTsgICAgICAvLyBzaXplIG9mIGZpbGUgdG8gbWFwIGluCi0g
ICAgRklMRSAqZnA7Ci0gICAgY2hhciogICAgICAgICAgIGZCdWZmOyAgICAgIC8vIHRoZSBhY3R1
YWwgZGF0YTsKLX07Ci0KLSNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX01NQVBfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L05vZGVTZWFyY2guaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL05vZGVTZWFyY2guaAppbmRleCBiMTNiMWJhYWJiMDgwMWYwYzgyYTQwOTMwM2E2MjUx
YTRlZDIyMjY5Li45NmIwYjMzODZiODE3YzRjM2E4MGQ1OWRjOTU5ZDBhZjliMjA5N2YzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9O
b2RlU2VhcmNoLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvTm9kZVNlYXJjaC5oCkBAIC0xOCwxMCArMTgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
UGFyZW50PgogY2xhc3MgTm9kZVNlYXJjaFRyYXZlcnNlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVy
c2VyCiB7CiAgIHB1YmxpYzoKLSAgICBOb2RlU2VhcmNoVHJhdmVyc2VyKCkKLSAgICAgICAgOiBU
SW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksCi0gICAgICAgICAgbUZvdW5kKGZh
bHNlKQotICAgIHt9CisgICAgTm9kZVNlYXJjaFRyYXZlcnNlcigpIDogVEludGVybVRyYXZlcnNl
cih0cnVlLCBmYWxzZSwgZmFsc2UpLCBtRm91bmQoZmFsc2UpIHt9CiAKICAgICBib29sIGZvdW5k
KCkgY29uc3QgeyByZXR1cm4gbUZvdW5kOyB9CiAKQEAgLTQzLDE3ICs0MCwxNyBAQCBjbGFzcyBG
aW5kRGlzY2FyZCA6IHB1YmxpYyBOb2RlU2VhcmNoVHJhdmVyc2VyPEZpbmREaXNjYXJkPgogICAg
IHsKICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRGbG93T3AoKSkKICAgICAgICAgewotICAgICAg
ICAgIGNhc2UgRU9wS2lsbDoKLSAgICAgICAgICAgIG1Gb3VuZCA9IHRydWU7Ci0gICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRU9wS2lsbDoKKyAgICAgICAgICAgICAgICBtRm91
bmQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgZGVmYXVsdDog
YnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKICAgICAgICAgcmV0dXJuICFtRm91bmQ7CiAgICAgfQogfTsKLQogfQogCi0jZW5k
aWYgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9OT0RFU0VBUkNIX0hfCisjZW5kaWYgIC8vIENPTVBJ
TEVSX1RSQU5TTEFUT1JfTk9ERVNFQVJDSF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3BlcmF0b3IuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3BlcmF0b3IuY3BwCmluZGV4
IDBiNjkzZTJkMDQyZTUzN2IyZDg4MzM1ODBhZmJiZjUxZjcxN2I2YWMuLmZjMmE5ODFkMzc0MGM5
YTdiNGUzNDNkMWFkY2MxODkwNjU4MzFmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL09wZXJhdG9yLmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PcGVyYXRvci5jcHAKQEAg
LTEwLDE4OSArMTAsMzkxIEBAIGNvbnN0IGNoYXIgKkdldE9wZXJhdG9yU3RyaW5nKFRPcGVyYXRv
ciBvcCkKIHsKICAgICBzd2l0Y2ggKG9wKQogICAgIHsKLSAgICAgIC8vIE5vdGU6IG9wcyBmcm9t
IEVPcE51bGwgdG8gRU9wUHJvdG90eXBlIGNhbid0IGJlIGhhbmRsZWQgaGVyZS4KLQotICAgICAg
Y2FzZSBFT3BOZWdhdGl2ZTogcmV0dXJuICItIjsKLSAgICAgIGNhc2UgRU9wUG9zaXRpdmU6IHJl
dHVybiAiKyI7Ci0gICAgICBjYXNlIEVPcExvZ2ljYWxOb3Q6IHJldHVybiAiISI7Ci0gICAgICBj
YXNlIEVPcFZlY3RvckxvZ2ljYWxOb3Q6IHJldHVybiAibm90IjsKLSAgICAgIGNhc2UgRU9wQml0
d2lzZU5vdDogcmV0dXJuICJ+IjsKLQotICAgICAgY2FzZSBFT3BQb3N0SW5jcmVtZW50OiByZXR1
cm4gIisrIjsKLSAgICAgIGNhc2UgRU9wUG9zdERlY3JlbWVudDogcmV0dXJuICItLSI7Ci0gICAg
ICBjYXNlIEVPcFByZUluY3JlbWVudDogcmV0dXJuICIrKyI7Ci0gICAgICBjYXNlIEVPcFByZURl
Y3JlbWVudDogcmV0dXJuICItLSI7Ci0KLSAgICAgIGNhc2UgRU9wQWRkOiByZXR1cm4gIisiOwot
ICAgICAgY2FzZSBFT3BTdWI6IHJldHVybiAiLSI7Ci0gICAgICBjYXNlIEVPcE11bDogcmV0dXJu
ICIqIjsKLSAgICAgIGNhc2UgRU9wRGl2OiByZXR1cm4gIi8iOwotICAgICAgY2FzZSBFT3BJTW9k
OiByZXR1cm4gIiUiOwotICAgICAgY2FzZSBFT3BFcXVhbDogcmV0dXJuICI9PSI7Ci0gICAgICBj
YXNlIEVPcE5vdEVxdWFsOiByZXR1cm4gIiE9IjsKLSAgICAgIGNhc2UgRU9wVmVjdG9yRXF1YWw6
IHJldHVybiAiZXF1YWwiOwotICAgICAgY2FzZSBFT3BWZWN0b3JOb3RFcXVhbDogcmV0dXJuICJu
b3RFcXVhbCI7Ci0gICAgICBjYXNlIEVPcExlc3NUaGFuOiByZXR1cm4gIjwiOwotICAgICAgY2Fz
ZSBFT3BHcmVhdGVyVGhhbjogcmV0dXJuICI+IjsKLSAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVh
bDogcmV0dXJuICI8PSI7Ci0gICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWw6IHJldHVybiAi
Pj0iOwotICAgICAgY2FzZSBFT3BDb21tYTogcmV0dXJuICIsIjsKLQotICAgICAgLy8gRmFsbC10
aHJvdWdoLgotICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc1NjYWxhcjoKLSAgICAgIGNhc2UgRU9w
VmVjdG9yVGltZXNNYXRyaXg6Ci0gICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzVmVjdG9yOgotICAg
ICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjogcmV0dXJuICIqIjsKLQotICAgICAgY2FzZSBF
T3BMb2dpY2FsT3I6IHJldHVybiAifHwiOwotICAgICAgY2FzZSBFT3BMb2dpY2FsWG9yOiByZXR1
cm4gIl5eIjsKLSAgICAgIGNhc2UgRU9wTG9naWNhbEFuZDogcmV0dXJuICImJiI7Ci0KLSAgICAg
IGNhc2UgRU9wQml0U2hpZnRMZWZ0OiByZXR1cm4gIjw8IjsKLSAgICAgIGNhc2UgRU9wQml0U2hp
ZnRSaWdodDogcmV0dXJuICI+PiI7Ci0KLSAgICAgIGNhc2UgRU9wQml0d2lzZUFuZDogcmV0dXJu
ICImIjsKLSAgICAgIGNhc2UgRU9wQml0d2lzZVhvcjogcmV0dXJuICJeIjsKLSAgICAgIGNhc2Ug
RU9wQml0d2lzZU9yOiByZXR1cm4gInwiOwotCi0gICAgICAvLyBGYWxsLXRocm91Z2guCi0gICAg
ICBjYXNlIEVPcEluZGV4RGlyZWN0OgotICAgICAgY2FzZSBFT3BJbmRleEluZGlyZWN0OiByZXR1
cm4gIltdIjsKLQotICAgICAgY2FzZSBFT3BJbmRleERpcmVjdFN0cnVjdDoKLSAgICAgIGNhc2Ug
RU9wSW5kZXhEaXJlY3RJbnRlcmZhY2VCbG9jazogcmV0dXJuICIuIjsKLQotICAgICAgY2FzZSBF
T3BSYWRpYW5zOiByZXR1cm4gInJhZGlhbnMiOwotICAgICAgY2FzZSBFT3BEZWdyZWVzOiByZXR1
cm4gImRlZ3JlZXMiOwotICAgICAgY2FzZSBFT3BTaW46IHJldHVybiAic2luIjsKLSAgICAgIGNh
c2UgRU9wQ29zOiByZXR1cm4gImNvcyI7Ci0gICAgICBjYXNlIEVPcFRhbjogcmV0dXJuICJ0YW4i
OwotICAgICAgY2FzZSBFT3BBc2luOiByZXR1cm4gImFzaW4iOwotICAgICAgY2FzZSBFT3BBY29z
OiByZXR1cm4gImFjb3MiOwotICAgICAgY2FzZSBFT3BBdGFuOiByZXR1cm4gImF0YW4iOwotCi0g
ICAgICBjYXNlIEVPcFNpbmg6IHJldHVybiAic2luaCI7Ci0gICAgICBjYXNlIEVPcENvc2g6IHJl
dHVybiAiY29zaCI7Ci0gICAgICBjYXNlIEVPcFRhbmg6IHJldHVybiAidGFuaCI7Ci0gICAgICBj
YXNlIEVPcEFzaW5oOiByZXR1cm4gImFzaW5oIjsKLSAgICAgIGNhc2UgRU9wQWNvc2g6IHJldHVy
biAiYWNvc2giOwotICAgICAgY2FzZSBFT3BBdGFuaDogcmV0dXJuICJhdGFuaCI7Ci0KLSAgICAg
IGNhc2UgRU9wUG93OiByZXR1cm4gInBvdyI7Ci0gICAgICBjYXNlIEVPcEV4cDogcmV0dXJuICJl
eHAiOwotICAgICAgY2FzZSBFT3BMb2c6IHJldHVybiAibG9nIjsKLSAgICAgIGNhc2UgRU9wRXhw
MjogcmV0dXJuICJleHAyIjsKLSAgICAgIGNhc2UgRU9wTG9nMjogcmV0dXJuICJsb2cyIjsKLSAg
ICAgIGNhc2UgRU9wU3FydDogcmV0dXJuICJzcXJ0IjsKLSAgICAgIGNhc2UgRU9wSW52ZXJzZVNx
cnQ6IHJldHVybiAiaW52ZXJzZXNxcnQiOwotCi0gICAgICBjYXNlIEVPcEFiczogcmV0dXJuICJh
YnMiOwotICAgICAgY2FzZSBFT3BTaWduOiByZXR1cm4gInNpZ24iOwotICAgICAgY2FzZSBFT3BG
bG9vcjogcmV0dXJuICJmbG9vciI7Ci0gICAgICBjYXNlIEVPcFRydW5jOiByZXR1cm4gInRydW5j
IjsKLSAgICAgIGNhc2UgRU9wUm91bmQ6IHJldHVybiAicm91bmQiOwotICAgICAgY2FzZSBFT3BS
b3VuZEV2ZW46IHJldHVybiAicm91bmRFdmVuIjsKLSAgICAgIGNhc2UgRU9wQ2VpbDogcmV0dXJu
ICJjZWlsIjsKLSAgICAgIGNhc2UgRU9wRnJhY3Q6IHJldHVybiAiZnJhY3QiOwotICAgICAgY2Fz
ZSBFT3BNb2Q6IHJldHVybiAibW9kIjsKLSAgICAgIGNhc2UgRU9wTW9kZjogcmV0dXJuICJtb2Rm
IjsKLSAgICAgIGNhc2UgRU9wTWluOiByZXR1cm4gIm1pbiI7Ci0gICAgICBjYXNlIEVPcE1heDog
cmV0dXJuICJtYXgiOwotICAgICAgY2FzZSBFT3BDbGFtcDogcmV0dXJuICJjbGFtcCI7Ci0gICAg
ICBjYXNlIEVPcE1peDogcmV0dXJuICJtaXgiOwotICAgICAgY2FzZSBFT3BTdGVwOiByZXR1cm4g
InN0ZXAiOwotICAgICAgY2FzZSBFT3BTbW9vdGhTdGVwOiByZXR1cm4gInNtb290aHN0ZXAiOwot
ICAgICAgY2FzZSBFT3BJc05hbjogcmV0dXJuICJpc25hbiI7Ci0gICAgICBjYXNlIEVPcElzSW5m
OiByZXR1cm4gImlzaW5mIjsKLQotICAgICAgY2FzZSBFT3BGbG9hdEJpdHNUb0ludDogcmV0dXJu
ICJmbG9hdEJpdHNUb0ludCI7Ci0gICAgICBjYXNlIEVPcEZsb2F0Qml0c1RvVWludDogcmV0dXJu
ICJmbG9hdEJpdHNUb1VpbnQiOwotICAgICAgY2FzZSBFT3BJbnRCaXRzVG9GbG9hdDogcmV0dXJu
ICJpbnRCaXRzVG9GbG9hdCI7Ci0gICAgICBjYXNlIEVPcFVpbnRCaXRzVG9GbG9hdDogcmV0dXJu
ICJ1aW50Qml0c1RvRmxvYXQiOwotCi0gICAgICBjYXNlIEVPcFBhY2tTbm9ybTJ4MTY6IHJldHVy
biAicGFja1Nub3JtMngxNiI7Ci0gICAgICBjYXNlIEVPcFBhY2tVbm9ybTJ4MTY6IHJldHVybiAi
cGFja1Vub3JtMngxNiI7Ci0gICAgICBjYXNlIEVPcFBhY2tIYWxmMngxNjogcmV0dXJuICJwYWNr
SGFsZjJ4MTYiOwotICAgICAgY2FzZSBFT3BVbnBhY2tTbm9ybTJ4MTY6IHJldHVybiAidW5wYWNr
U25vcm0yeDE2IjsKLSAgICAgIGNhc2UgRU9wVW5wYWNrVW5vcm0yeDE2OiByZXR1cm4gInVucGFj
a1Vub3JtMngxNiI7Ci0gICAgICBjYXNlIEVPcFVucGFja0hhbGYyeDE2OiByZXR1cm4gInVucGFj
a0hhbGYyeDE2IjsKLQotICAgICAgY2FzZSBFT3BMZW5ndGg6IHJldHVybiAibGVuZ3RoIjsKLSAg
ICAgIGNhc2UgRU9wRGlzdGFuY2U6IHJldHVybiAiZGlzdGFuY2UiOwotICAgICAgY2FzZSBFT3BE
b3Q6IHJldHVybiAiZG90IjsKLSAgICAgIGNhc2UgRU9wQ3Jvc3M6IHJldHVybiAiY3Jvc3MiOwot
ICAgICAgY2FzZSBFT3BOb3JtYWxpemU6IHJldHVybiAibm9ybWFsaXplIjsKLSAgICAgIGNhc2Ug
RU9wRmFjZUZvcndhcmQ6IHJldHVybiAiZmFjZWZvcndhcmQiOwotICAgICAgY2FzZSBFT3BSZWZs
ZWN0OiByZXR1cm4gInJlZmxlY3QiOwotICAgICAgY2FzZSBFT3BSZWZyYWN0OiByZXR1cm4gInJl
ZnJhY3QiOwotCi0gICAgICBjYXNlIEVPcERGZHg6IHJldHVybiAiZEZkeCI7Ci0gICAgICBjYXNl
IEVPcERGZHk6IHJldHVybiAiZEZkeSI7Ci0gICAgICBjYXNlIEVPcEZ3aWR0aDogcmV0dXJuICJm
d2lkdGgiOwotCi0gICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4OiByZXR1cm4gIioiOwot
Ci0gICAgICBjYXNlIEVPcE91dGVyUHJvZHVjdDogcmV0dXJuICJvdXRlclByb2R1Y3QiOwotICAg
ICAgY2FzZSBFT3BUcmFuc3Bvc2U6IHJldHVybiAidHJhbnNwb3NlIjsKLSAgICAgIGNhc2UgRU9w
RGV0ZXJtaW5hbnQ6IHJldHVybiAiZGV0ZXJtaW5hbnQiOwotICAgICAgY2FzZSBFT3BJbnZlcnNl
OiByZXR1cm4gImludmVyc2UiOwotCi0gICAgICBjYXNlIEVPcEFueTogcmV0dXJuICJhbnkiOwot
ICAgICAgY2FzZSBFT3BBbGw6IHJldHVybiAiYWxsIjsKLQotICAgICAgY2FzZSBFT3BLaWxsOiBy
ZXR1cm4gImtpbGwiOwotICAgICAgY2FzZSBFT3BSZXR1cm46IHJldHVybiAicmV0dXJuIjsKLSAg
ICAgIGNhc2UgRU9wQnJlYWs6IHJldHVybiAiYnJlYWsiOwotICAgICAgY2FzZSBFT3BDb250aW51
ZTogcmV0dXJuICJjb250aW51ZSI7Ci0KLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0SW50OiByZXR1
cm4gImludCI7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdFVJbnQ6IHJldHVybiAidWludCI7Ci0g
ICAgICBjYXNlIEVPcENvbnN0cnVjdEJvb2w6IHJldHVybiAiYm9vbCI7Ci0gICAgICBjYXNlIEVP
cENvbnN0cnVjdEZsb2F0OiByZXR1cm4gImZsb2F0IjsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0
VmVjMjogcmV0dXJuICJ2ZWMyIjsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjMzogcmV0dXJu
ICJ2ZWMzIjsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjNDogcmV0dXJuICJ2ZWM0IjsKLSAg
ICAgIGNhc2UgRU9wQ29uc3RydWN0QlZlYzI6IHJldHVybiAiYnZlYzIiOwotICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RCVmVjMzogcmV0dXJuICJidmVjMyI7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVj
dEJWZWM0OiByZXR1cm4gImJ2ZWM0IjsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0SVZlYzI6IHJl
dHVybiAiaXZlYzIiOwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RJVmVjMzogcmV0dXJuICJpdmVj
MyI7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWM0OiByZXR1cm4gIml2ZWM0IjsKLSAgICAg
IGNhc2UgRU9wQ29uc3RydWN0VVZlYzI6IHJldHVybiAidXZlYzIiOwotICAgICAgY2FzZSBFT3BD
b25zdHJ1Y3RVVmVjMzogcmV0dXJuICJ1dmVjMyI7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdFVW
ZWM0OiByZXR1cm4gInV2ZWM0IjsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MjogcmV0dXJu
ICJtYXQyIjsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MngzOiByZXR1cm4gIm1hdDJ4MyI7
Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDJ4NDogcmV0dXJuICJtYXQyeDQiOwotICAgICAg
Y2FzZSBFT3BDb25zdHJ1Y3RNYXQzeDI6IHJldHVybiAibWF0M3gyIjsKLSAgICAgIGNhc2UgRU9w
Q29uc3RydWN0TWF0MzogcmV0dXJuICJtYXQzIjsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0
M3g0OiByZXR1cm4gIm1hdDN4NCI7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDR4MjogcmV0
dXJuICJtYXQ0eDIiOwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0eDM6IHJldHVybiAibWF0
NHgzIjsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NDogcmV0dXJuICJtYXQ0IjsKLSAgICAg
IC8vIE5vdGU6IEVPcENvbnN0cnVjdFN0cnVjdCBjYW4ndCBiZSBoYW5kbGVkIGhlcmUKLQotICAg
ICAgY2FzZSBFT3BBc3NpZ246IHJldHVybiAiPSI7Ci0gICAgICBjYXNlIEVPcEluaXRpYWxpemU6
IHJldHVybiAiPSI7Ci0gICAgICBjYXNlIEVPcEFkZEFzc2lnbjogcmV0dXJuICIrPSI7Ci0gICAg
ICBjYXNlIEVPcFN1YkFzc2lnbjogcmV0dXJuICItPSI7Ci0KLSAgICAgIC8vIEZhbGwtdGhyb3Vn
aC4KLSAgICAgIGNhc2UgRU9wTXVsQXNzaWduOgotICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc01h
dHJpeEFzc2lnbjoKLSAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2FsYXJBc3NpZ246Ci0gICAg
ICBjYXNlIEVPcE1hdHJpeFRpbWVzU2NhbGFyQXNzaWduOgotICAgICAgY2FzZSBFT3BNYXRyaXhU
aW1lc01hdHJpeEFzc2lnbjogcmV0dXJuICIqPSI7Ci0KLSAgICAgIGNhc2UgRU9wRGl2QXNzaWdu
OiByZXR1cm4gIi89IjsKLSAgICAgIGNhc2UgRU9wSU1vZEFzc2lnbjogcmV0dXJuICIlPSI7Ci0g
ICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVmdEFzc2lnbjogcmV0dXJuICI8PD0iOwotICAgICAgY2Fz
ZSBFT3BCaXRTaGlmdFJpZ2h0QXNzaWduOiByZXR1cm4gIj4+PSI7Ci0gICAgICBjYXNlIEVPcEJp
dHdpc2VBbmRBc3NpZ246IHJldHVybiAiJj0iOwotICAgICAgY2FzZSBFT3BCaXR3aXNlWG9yQXNz
aWduOiByZXR1cm4gIl49IjsKLSAgICAgIGNhc2UgRU9wQml0d2lzZU9yQXNzaWduOiByZXR1cm4g
Inw9IjsKLQotICAgICAgZGVmYXVsdDogYnJlYWs7CisgICAgICAgIC8vIE5vdGU6IEVPcE51bGwg
YW5kIEVPcENhbGwqIGNhbid0IGJlIGhhbmRsZWQgaGVyZS4KKworICAgICAgICBjYXNlIEVPcE5l
Z2F0aXZlOgorICAgICAgICAgICAgcmV0dXJuICItIjsKKyAgICAgICAgY2FzZSBFT3BQb3NpdGl2
ZToKKyAgICAgICAgICAgIHJldHVybiAiKyI7CisgICAgICAgIGNhc2UgRU9wTG9naWNhbE5vdDoK
KyAgICAgICAgICAgIHJldHVybiAiISI7CisgICAgICAgIGNhc2UgRU9wQml0d2lzZU5vdDoKKyAg
ICAgICAgICAgIHJldHVybiAifiI7CisKKyAgICAgICAgY2FzZSBFT3BQb3N0SW5jcmVtZW50Ogor
ICAgICAgICAgICAgcmV0dXJuICIrKyI7CisgICAgICAgIGNhc2UgRU9wUG9zdERlY3JlbWVudDoK
KyAgICAgICAgICAgIHJldHVybiAiLS0iOworICAgICAgICBjYXNlIEVPcFByZUluY3JlbWVudDoK
KyAgICAgICAgICAgIHJldHVybiAiKysiOworICAgICAgICBjYXNlIEVPcFByZURlY3JlbWVudDoK
KyAgICAgICAgICAgIHJldHVybiAiLS0iOworCisgICAgICAgIGNhc2UgRU9wQWRkOgorICAgICAg
ICAgICAgcmV0dXJuICIrIjsKKyAgICAgICAgY2FzZSBFT3BTdWI6CisgICAgICAgICAgICByZXR1
cm4gIi0iOworICAgICAgICBjYXNlIEVPcE11bDoKKyAgICAgICAgICAgIHJldHVybiAiKiI7Cisg
ICAgICAgIGNhc2UgRU9wRGl2OgorICAgICAgICAgICAgcmV0dXJuICIvIjsKKyAgICAgICAgY2Fz
ZSBFT3BJTW9kOgorICAgICAgICAgICAgcmV0dXJuICIlIjsKKworICAgICAgICBjYXNlIEVPcEVx
dWFsOgorICAgICAgICAgICAgcmV0dXJuICI9PSI7CisgICAgICAgIGNhc2UgRU9wTm90RXF1YWw6
CisgICAgICAgICAgICByZXR1cm4gIiE9IjsKKyAgICAgICAgY2FzZSBFT3BMZXNzVGhhbjoKKyAg
ICAgICAgICAgIHJldHVybiAiPCI7CisgICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW46CisgICAg
ICAgICAgICByZXR1cm4gIj4iOworICAgICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6CisgICAg
ICAgICAgICByZXR1cm4gIjw9IjsKKyAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFsOgor
ICAgICAgICAgICAgcmV0dXJuICI+PSI7CisKKyAgICAgICAgY2FzZSBFT3BFcXVhbENvbXBvbmVu
dFdpc2U6CisgICAgICAgICAgICByZXR1cm4gImVxdWFsIjsKKyAgICAgICAgY2FzZSBFT3BOb3RF
cXVhbENvbXBvbmVudFdpc2U6CisgICAgICAgICAgICByZXR1cm4gIm5vdEVxdWFsIjsKKyAgICAg
ICAgY2FzZSBFT3BMZXNzVGhhbkNvbXBvbmVudFdpc2U6CisgICAgICAgICAgICByZXR1cm4gImxl
c3NUaGFuIjsKKyAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkNvbXBvbmVudFdpc2U6CisgICAg
ICAgICAgICByZXR1cm4gImdyZWF0ZXJUaGFuIjsKKyAgICAgICAgY2FzZSBFT3BMZXNzVGhhbkVx
dWFsQ29tcG9uZW50V2lzZToKKyAgICAgICAgICAgIHJldHVybiAibGVzc1RoYW5FcXVhbCI7Cisg
ICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW5FcXVhbENvbXBvbmVudFdpc2U6CisgICAgICAgICAg
ICByZXR1cm4gImdyZWF0ZXJUaGFuRXF1YWwiOworCisgICAgICAgIGNhc2UgRU9wQ29tbWE6Cisg
ICAgICAgICAgICByZXR1cm4gIiwiOworCisgICAgICAgIC8vIEZhbGwtdGhyb3VnaC4KKyAgICAg
ICAgY2FzZSBFT3BWZWN0b3JUaW1lc1NjYWxhcjoKKyAgICAgICAgY2FzZSBFT3BWZWN0b3JUaW1l
c01hdHJpeDoKKyAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1ZlY3RvcjoKKyAgICAgICAgY2Fz
ZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjoKKyAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc01hdHJp
eDoKKyAgICAgICAgICAgIHJldHVybiAiKiI7CisKKyAgICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6
CisgICAgICAgICAgICByZXR1cm4gInx8IjsKKyAgICAgICAgY2FzZSBFT3BMb2dpY2FsWG9yOgor
ICAgICAgICAgICAgcmV0dXJuICJeXiI7CisgICAgICAgIGNhc2UgRU9wTG9naWNhbEFuZDoKKyAg
ICAgICAgICAgIHJldHVybiAiJiYiOworCisgICAgICAgIGNhc2UgRU9wQml0U2hpZnRMZWZ0Ogor
ICAgICAgICAgICAgcmV0dXJuICI8PCI7CisgICAgICAgIGNhc2UgRU9wQml0U2hpZnRSaWdodDoK
KyAgICAgICAgICAgIHJldHVybiAiPj4iOworCisgICAgICAgIGNhc2UgRU9wQml0d2lzZUFuZDoK
KyAgICAgICAgICAgIHJldHVybiAiJiI7CisgICAgICAgIGNhc2UgRU9wQml0d2lzZVhvcjoKKyAg
ICAgICAgICAgIHJldHVybiAiXiI7CisgICAgICAgIGNhc2UgRU9wQml0d2lzZU9yOgorICAgICAg
ICAgICAgcmV0dXJuICJ8IjsKKworICAgICAgICAvLyBGYWxsLXRocm91Z2guCisgICAgICAgIGNh
c2UgRU9wSW5kZXhEaXJlY3Q6CisgICAgICAgIGNhc2UgRU9wSW5kZXhJbmRpcmVjdDoKKyAgICAg
ICAgICAgIHJldHVybiAiW10iOworCisgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6
CisgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RJbnRlcmZhY2VCbG9jazoKKyAgICAgICAgICAg
IHJldHVybiAiLiI7CisKKyAgICAgICAgY2FzZSBFT3BSYWRpYW5zOgorICAgICAgICAgICAgcmV0
dXJuICJyYWRpYW5zIjsKKyAgICAgICAgY2FzZSBFT3BEZWdyZWVzOgorICAgICAgICAgICAgcmV0
dXJuICJkZWdyZWVzIjsKKyAgICAgICAgY2FzZSBFT3BTaW46CisgICAgICAgICAgICByZXR1cm4g
InNpbiI7CisgICAgICAgIGNhc2UgRU9wQ29zOgorICAgICAgICAgICAgcmV0dXJuICJjb3MiOwor
ICAgICAgICBjYXNlIEVPcFRhbjoKKyAgICAgICAgICAgIHJldHVybiAidGFuIjsKKyAgICAgICAg
Y2FzZSBFT3BBc2luOgorICAgICAgICAgICAgcmV0dXJuICJhc2luIjsKKyAgICAgICAgY2FzZSBF
T3BBY29zOgorICAgICAgICAgICAgcmV0dXJuICJhY29zIjsKKyAgICAgICAgY2FzZSBFT3BBdGFu
OgorICAgICAgICAgICAgcmV0dXJuICJhdGFuIjsKKworICAgICAgICBjYXNlIEVPcFNpbmg6Cisg
ICAgICAgICAgICByZXR1cm4gInNpbmgiOworICAgICAgICBjYXNlIEVPcENvc2g6CisgICAgICAg
ICAgICByZXR1cm4gImNvc2giOworICAgICAgICBjYXNlIEVPcFRhbmg6CisgICAgICAgICAgICBy
ZXR1cm4gInRhbmgiOworICAgICAgICBjYXNlIEVPcEFzaW5oOgorICAgICAgICAgICAgcmV0dXJu
ICJhc2luaCI7CisgICAgICAgIGNhc2UgRU9wQWNvc2g6CisgICAgICAgICAgICByZXR1cm4gImFj
b3NoIjsKKyAgICAgICAgY2FzZSBFT3BBdGFuaDoKKyAgICAgICAgICAgIHJldHVybiAiYXRhbmgi
OworCisgICAgICAgIGNhc2UgRU9wUG93OgorICAgICAgICAgICAgcmV0dXJuICJwb3ciOworICAg
ICAgICBjYXNlIEVPcEV4cDoKKyAgICAgICAgICAgIHJldHVybiAiZXhwIjsKKyAgICAgICAgY2Fz
ZSBFT3BMb2c6CisgICAgICAgICAgICByZXR1cm4gImxvZyI7CisgICAgICAgIGNhc2UgRU9wRXhw
MjoKKyAgICAgICAgICAgIHJldHVybiAiZXhwMiI7CisgICAgICAgIGNhc2UgRU9wTG9nMjoKKyAg
ICAgICAgICAgIHJldHVybiAibG9nMiI7CisgICAgICAgIGNhc2UgRU9wU3FydDoKKyAgICAgICAg
ICAgIHJldHVybiAic3FydCI7CisgICAgICAgIGNhc2UgRU9wSW52ZXJzZVNxcnQ6CisgICAgICAg
ICAgICByZXR1cm4gImludmVyc2VzcXJ0IjsKKworICAgICAgICBjYXNlIEVPcEFiczoKKyAgICAg
ICAgICAgIHJldHVybiAiYWJzIjsKKyAgICAgICAgY2FzZSBFT3BTaWduOgorICAgICAgICAgICAg
cmV0dXJuICJzaWduIjsKKyAgICAgICAgY2FzZSBFT3BGbG9vcjoKKyAgICAgICAgICAgIHJldHVy
biAiZmxvb3IiOworICAgICAgICBjYXNlIEVPcFRydW5jOgorICAgICAgICAgICAgcmV0dXJuICJ0
cnVuYyI7CisgICAgICAgIGNhc2UgRU9wUm91bmQ6CisgICAgICAgICAgICByZXR1cm4gInJvdW5k
IjsKKyAgICAgICAgY2FzZSBFT3BSb3VuZEV2ZW46CisgICAgICAgICAgICByZXR1cm4gInJvdW5k
RXZlbiI7CisgICAgICAgIGNhc2UgRU9wQ2VpbDoKKyAgICAgICAgICAgIHJldHVybiAiY2VpbCI7
CisgICAgICAgIGNhc2UgRU9wRnJhY3Q6CisgICAgICAgICAgICByZXR1cm4gImZyYWN0IjsKKyAg
ICAgICAgY2FzZSBFT3BNb2Q6CisgICAgICAgICAgICByZXR1cm4gIm1vZCI7CisgICAgICAgIGNh
c2UgRU9wTW9kZjoKKyAgICAgICAgICAgIHJldHVybiAibW9kZiI7CisgICAgICAgIGNhc2UgRU9w
TWluOgorICAgICAgICAgICAgcmV0dXJuICJtaW4iOworICAgICAgICBjYXNlIEVPcE1heDoKKyAg
ICAgICAgICAgIHJldHVybiAibWF4IjsKKyAgICAgICAgY2FzZSBFT3BDbGFtcDoKKyAgICAgICAg
ICAgIHJldHVybiAiY2xhbXAiOworICAgICAgICBjYXNlIEVPcE1peDoKKyAgICAgICAgICAgIHJl
dHVybiAibWl4IjsKKyAgICAgICAgY2FzZSBFT3BTdGVwOgorICAgICAgICAgICAgcmV0dXJuICJz
dGVwIjsKKyAgICAgICAgY2FzZSBFT3BTbW9vdGhTdGVwOgorICAgICAgICAgICAgcmV0dXJuICJz
bW9vdGhzdGVwIjsKKyAgICAgICAgY2FzZSBFT3BJc05hbjoKKyAgICAgICAgICAgIHJldHVybiAi
aXNuYW4iOworICAgICAgICBjYXNlIEVPcElzSW5mOgorICAgICAgICAgICAgcmV0dXJuICJpc2lu
ZiI7CisKKyAgICAgICAgY2FzZSBFT3BGbG9hdEJpdHNUb0ludDoKKyAgICAgICAgICAgIHJldHVy
biAiZmxvYXRCaXRzVG9JbnQiOworICAgICAgICBjYXNlIEVPcEZsb2F0Qml0c1RvVWludDoKKyAg
ICAgICAgICAgIHJldHVybiAiZmxvYXRCaXRzVG9VaW50IjsKKyAgICAgICAgY2FzZSBFT3BJbnRC
aXRzVG9GbG9hdDoKKyAgICAgICAgICAgIHJldHVybiAiaW50Qml0c1RvRmxvYXQiOworICAgICAg
ICBjYXNlIEVPcFVpbnRCaXRzVG9GbG9hdDoKKyAgICAgICAgICAgIHJldHVybiAidWludEJpdHNU
b0Zsb2F0IjsKKworICAgICAgICBjYXNlIEVPcEZyZXhwOgorICAgICAgICAgICAgcmV0dXJuICJm
cmV4cCI7CisgICAgICAgIGNhc2UgRU9wTGRleHA6CisgICAgICAgICAgICByZXR1cm4gImxkZXhw
IjsKKworICAgICAgICBjYXNlIEVPcFBhY2tTbm9ybTJ4MTY6CisgICAgICAgICAgICByZXR1cm4g
InBhY2tTbm9ybTJ4MTYiOworICAgICAgICBjYXNlIEVPcFBhY2tVbm9ybTJ4MTY6CisgICAgICAg
ICAgICByZXR1cm4gInBhY2tVbm9ybTJ4MTYiOworICAgICAgICBjYXNlIEVPcFBhY2tIYWxmMngx
NjoKKyAgICAgICAgICAgIHJldHVybiAicGFja0hhbGYyeDE2IjsKKyAgICAgICAgY2FzZSBFT3BV
bnBhY2tTbm9ybTJ4MTY6CisgICAgICAgICAgICByZXR1cm4gInVucGFja1Nub3JtMngxNiI7Cisg
ICAgICAgIGNhc2UgRU9wVW5wYWNrVW5vcm0yeDE2OgorICAgICAgICAgICAgcmV0dXJuICJ1bnBh
Y2tVbm9ybTJ4MTYiOworICAgICAgICBjYXNlIEVPcFVucGFja0hhbGYyeDE2OgorICAgICAgICAg
ICAgcmV0dXJuICJ1bnBhY2tIYWxmMngxNiI7CisKKyAgICAgICAgY2FzZSBFT3BQYWNrVW5vcm00
eDg6CisgICAgICAgICAgICByZXR1cm4gInBhY2tVbm9ybTR4OCI7CisgICAgICAgIGNhc2UgRU9w
UGFja1Nub3JtNHg4OgorICAgICAgICAgICAgcmV0dXJuICJwYWNrU25vcm00eDgiOworICAgICAg
ICBjYXNlIEVPcFVucGFja1Vub3JtNHg4OgorICAgICAgICAgICAgcmV0dXJuICJ1bnBhY2tVbm9y
bTR4OCI7CisgICAgICAgIGNhc2UgRU9wVW5wYWNrU25vcm00eDg6CisgICAgICAgICAgICByZXR1
cm4gInVucGFja1Nub3JtNHg4IjsKKworICAgICAgICBjYXNlIEVPcExlbmd0aDoKKyAgICAgICAg
ICAgIHJldHVybiAibGVuZ3RoIjsKKyAgICAgICAgY2FzZSBFT3BEaXN0YW5jZToKKyAgICAgICAg
ICAgIHJldHVybiAiZGlzdGFuY2UiOworICAgICAgICBjYXNlIEVPcERvdDoKKyAgICAgICAgICAg
IHJldHVybiAiZG90IjsKKyAgICAgICAgY2FzZSBFT3BDcm9zczoKKyAgICAgICAgICAgIHJldHVy
biAiY3Jvc3MiOworICAgICAgICBjYXNlIEVPcE5vcm1hbGl6ZToKKyAgICAgICAgICAgIHJldHVy
biAibm9ybWFsaXplIjsKKyAgICAgICAgY2FzZSBFT3BGYWNlRm9yd2FyZDoKKyAgICAgICAgICAg
IHJldHVybiAiZmFjZWZvcndhcmQiOworICAgICAgICBjYXNlIEVPcFJlZmxlY3Q6CisgICAgICAg
ICAgICByZXR1cm4gInJlZmxlY3QiOworICAgICAgICBjYXNlIEVPcFJlZnJhY3Q6CisgICAgICAg
ICAgICByZXR1cm4gInJlZnJhY3QiOworCisgICAgICAgIGNhc2UgRU9wREZkeDoKKyAgICAgICAg
ICAgIHJldHVybiAiZEZkeCI7CisgICAgICAgIGNhc2UgRU9wREZkeToKKyAgICAgICAgICAgIHJl
dHVybiAiZEZkeSI7CisgICAgICAgIGNhc2UgRU9wRndpZHRoOgorICAgICAgICAgICAgcmV0dXJu
ICJmd2lkdGgiOworCisgICAgICAgIGNhc2UgRU9wTXVsTWF0cml4Q29tcG9uZW50V2lzZToKKyAg
ICAgICAgICAgIHJldHVybiAibWF0cml4Q29tcE11bHQiOworICAgICAgICBjYXNlIEVPcE91dGVy
UHJvZHVjdDoKKyAgICAgICAgICAgIHJldHVybiAib3V0ZXJQcm9kdWN0IjsKKyAgICAgICAgY2Fz
ZSBFT3BUcmFuc3Bvc2U6CisgICAgICAgICAgICByZXR1cm4gInRyYW5zcG9zZSI7CisgICAgICAg
IGNhc2UgRU9wRGV0ZXJtaW5hbnQ6CisgICAgICAgICAgICByZXR1cm4gImRldGVybWluYW50IjsK
KyAgICAgICAgY2FzZSBFT3BJbnZlcnNlOgorICAgICAgICAgICAgcmV0dXJuICJpbnZlcnNlIjsK
KworICAgICAgICBjYXNlIEVPcEFueToKKyAgICAgICAgICAgIHJldHVybiAiYW55IjsKKyAgICAg
ICAgY2FzZSBFT3BBbGw6CisgICAgICAgICAgICByZXR1cm4gImFsbCI7CisgICAgICAgIGNhc2Ug
RU9wTG9naWNhbE5vdENvbXBvbmVudFdpc2U6CisgICAgICAgICAgICByZXR1cm4gIm5vdCI7CisK
KyAgICAgICAgY2FzZSBFT3BCaXRmaWVsZEV4dHJhY3Q6CisgICAgICAgICAgICByZXR1cm4gImJp
dGZpZWxkRXh0cmFjdCI7CisgICAgICAgIGNhc2UgRU9wQml0ZmllbGRJbnNlcnQ6CisgICAgICAg
ICAgICByZXR1cm4gImJpdGZpZWxkSW5zZXJ0IjsKKyAgICAgICAgY2FzZSBFT3BCaXRmaWVsZFJl
dmVyc2U6CisgICAgICAgICAgICByZXR1cm4gImJpdGZpZWxkUmV2ZXJzZSI7CisgICAgICAgIGNh
c2UgRU9wQml0Q291bnQ6CisgICAgICAgICAgICByZXR1cm4gImJpdENvdW50IjsKKyAgICAgICAg
Y2FzZSBFT3BGaW5kTFNCOgorICAgICAgICAgICAgcmV0dXJuICJmaW5kTFNCIjsKKyAgICAgICAg
Y2FzZSBFT3BGaW5kTVNCOgorICAgICAgICAgICAgcmV0dXJuICJmaW5kTVNCIjsKKyAgICAgICAg
Y2FzZSBFT3BVYWRkQ2Fycnk6CisgICAgICAgICAgICByZXR1cm4gInVhZGRDYXJyeSI7CisgICAg
ICAgIGNhc2UgRU9wVXN1YkJvcnJvdzoKKyAgICAgICAgICAgIHJldHVybiAidXN1YkJvcnJvdyI7
CisgICAgICAgIGNhc2UgRU9wVW11bEV4dGVuZGVkOgorICAgICAgICAgICAgcmV0dXJuICJ1bXVs
RXh0ZW5kZWQiOworICAgICAgICBjYXNlIEVPcEltdWxFeHRlbmRlZDoKKyAgICAgICAgICAgIHJl
dHVybiAiaW11bEV4dGVuZGVkIjsKKworICAgICAgICBjYXNlIEVPcEtpbGw6CisgICAgICAgICAg
ICByZXR1cm4gImtpbGwiOworICAgICAgICBjYXNlIEVPcFJldHVybjoKKyAgICAgICAgICAgIHJl
dHVybiAicmV0dXJuIjsKKyAgICAgICAgY2FzZSBFT3BCcmVhazoKKyAgICAgICAgICAgIHJldHVy
biAiYnJlYWsiOworICAgICAgICBjYXNlIEVPcENvbnRpbnVlOgorICAgICAgICAgICAgcmV0dXJu
ICJjb250aW51ZSI7CisKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RJbnQ6CisgICAgICAgICAg
ICByZXR1cm4gImludCI7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VUludDoKKyAgICAgICAg
ICAgIHJldHVybiAidWludCI7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0Qm9vbDoKKyAgICAg
ICAgICAgIHJldHVybiAiYm9vbCI7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0RmxvYXQ6Cisg
ICAgICAgICAgICByZXR1cm4gImZsb2F0IjsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMy
OgorICAgICAgICAgICAgcmV0dXJuICJ2ZWMyIjsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RW
ZWMzOgorICAgICAgICAgICAgcmV0dXJuICJ2ZWMzIjsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1
Y3RWZWM0OgorICAgICAgICAgICAgcmV0dXJuICJ2ZWM0IjsKKyAgICAgICAgY2FzZSBFT3BDb25z
dHJ1Y3RCVmVjMjoKKyAgICAgICAgICAgIHJldHVybiAiYnZlYzIiOworICAgICAgICBjYXNlIEVP
cENvbnN0cnVjdEJWZWMzOgorICAgICAgICAgICAgcmV0dXJuICJidmVjMyI7CisgICAgICAgIGNh
c2UgRU9wQ29uc3RydWN0QlZlYzQ6CisgICAgICAgICAgICByZXR1cm4gImJ2ZWM0IjsKKyAgICAg
ICAgY2FzZSBFT3BDb25zdHJ1Y3RJVmVjMjoKKyAgICAgICAgICAgIHJldHVybiAiaXZlYzIiOwor
ICAgICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWMzOgorICAgICAgICAgICAgcmV0dXJuICJpdmVj
MyI7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0SVZlYzQ6CisgICAgICAgICAgICByZXR1cm4g
Iml2ZWM0IjsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RVVmVjMjoKKyAgICAgICAgICAgIHJl
dHVybiAidXZlYzIiOworICAgICAgICBjYXNlIEVPcENvbnN0cnVjdFVWZWMzOgorICAgICAgICAg
ICAgcmV0dXJuICJ1dmVjMyI7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VVZlYzQ6CisgICAg
ICAgICAgICByZXR1cm4gInV2ZWM0IjsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyOgor
ICAgICAgICAgICAgcmV0dXJuICJtYXQyIjsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQy
eDM6CisgICAgICAgICAgICByZXR1cm4gIm1hdDJ4MyI7CisgICAgICAgIGNhc2UgRU9wQ29uc3Ry
dWN0TWF0Mng0OgorICAgICAgICAgICAgcmV0dXJuICJtYXQyeDQiOworICAgICAgICBjYXNlIEVP
cENvbnN0cnVjdE1hdDN4MjoKKyAgICAgICAgICAgIHJldHVybiAibWF0M3gyIjsKKyAgICAgICAg
Y2FzZSBFT3BDb25zdHJ1Y3RNYXQzOgorICAgICAgICAgICAgcmV0dXJuICJtYXQzIjsKKyAgICAg
ICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzeDQ6CisgICAgICAgICAgICByZXR1cm4gIm1hdDN4NCI7
CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NHgyOgorICAgICAgICAgICAgcmV0dXJuICJt
YXQ0eDIiOworICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDR4MzoKKyAgICAgICAgICAgIHJl
dHVybiAibWF0NHgzIjsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0OgorICAgICAgICAg
ICAgcmV0dXJuICJtYXQ0IjsKKyAgICAgICAgLy8gTm90ZTogRU9wQ29uc3RydWN0U3RydWN0IGNh
bid0IGJlIGhhbmRsZWQgaGVyZQorCisgICAgICAgIGNhc2UgRU9wQXNzaWduOgorICAgICAgICAg
ICAgcmV0dXJuICI9IjsKKyAgICAgICAgY2FzZSBFT3BJbml0aWFsaXplOgorICAgICAgICAgICAg
cmV0dXJuICI9IjsKKyAgICAgICAgY2FzZSBFT3BBZGRBc3NpZ246CisgICAgICAgICAgICByZXR1
cm4gIis9IjsKKyAgICAgICAgY2FzZSBFT3BTdWJBc3NpZ246CisgICAgICAgICAgICByZXR1cm4g
Ii09IjsKKworICAgICAgICAvLyBGYWxsLXRocm91Z2guCisgICAgICAgIGNhc2UgRU9wTXVsQXNz
aWduOgorICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzTWF0cml4QXNzaWduOgorICAgICAgICBj
YXNlIEVPcFZlY3RvclRpbWVzU2NhbGFyQXNzaWduOgorICAgICAgICBjYXNlIEVPcE1hdHJpeFRp
bWVzU2NhbGFyQXNzaWduOgorICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4QXNzaWdu
OgorICAgICAgICAgICAgcmV0dXJuICIqPSI7CisKKyAgICAgICAgY2FzZSBFT3BEaXZBc3NpZ246
CisgICAgICAgICAgICByZXR1cm4gIi89IjsKKyAgICAgICAgY2FzZSBFT3BJTW9kQXNzaWduOgor
ICAgICAgICAgICAgcmV0dXJuICIlPSI7CisgICAgICAgIGNhc2UgRU9wQml0U2hpZnRMZWZ0QXNz
aWduOgorICAgICAgICAgICAgcmV0dXJuICI8PD0iOworICAgICAgICBjYXNlIEVPcEJpdFNoaWZ0
UmlnaHRBc3NpZ246CisgICAgICAgICAgICByZXR1cm4gIj4+PSI7CisgICAgICAgIGNhc2UgRU9w
Qml0d2lzZUFuZEFzc2lnbjoKKyAgICAgICAgICAgIHJldHVybiAiJj0iOworICAgICAgICBjYXNl
IEVPcEJpdHdpc2VYb3JBc3NpZ246CisgICAgICAgICAgICByZXR1cm4gIl49IjsKKyAgICAgICAg
Y2FzZSBFT3BCaXR3aXNlT3JBc3NpZ246CisgICAgICAgICAgICByZXR1cm4gInw9IjsKKyAgICAg
ICAgY2FzZSBFT3BCYXJyaWVyOgorICAgICAgICAgICAgcmV0dXJuICJiYXJyaWVyIjsKKyAgICAg
ICAgY2FzZSBFT3BNZW1vcnlCYXJyaWVyOgorICAgICAgICAgICAgcmV0dXJuICJtZW1vcnlCYXJy
aWVyIjsKKyAgICAgICAgY2FzZSBFT3BNZW1vcnlCYXJyaWVyQXRvbWljQ291bnRlcjoKKyAgICAg
ICAgICAgIHJldHVybiAibWVtb3J5QmFycmllckF0b21pY0NvdW50ZXIiOworICAgICAgICBjYXNl
IEVPcE1lbW9yeUJhcnJpZXJCdWZmZXI6CisgICAgICAgICAgICByZXR1cm4gIm1lbW9yeUJhcnJp
ZXJCdWZmZXIiOworICAgICAgICBjYXNlIEVPcE1lbW9yeUJhcnJpZXJJbWFnZToKKyAgICAgICAg
ICAgIHJldHVybiAibWVtb3J5QmFycmllckltYWdlIjsKKyAgICAgICAgY2FzZSBFT3BNZW1vcnlC
YXJyaWVyU2hhcmVkOgorICAgICAgICAgICAgcmV0dXJuICJtZW1vcnlCYXJyaWVyU2hhcmVkIjsK
KyAgICAgICAgY2FzZSBFT3BHcm91cE1lbW9yeUJhcnJpZXI6CisgICAgICAgICAgICByZXR1cm4g
Imdyb3VwTWVtb3J5QmFycmllciI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVh
azsKICAgICB9CiAgICAgcmV0dXJuICIiOwogfQpAQCAtMjI0LDQgKzQyNiw0IEBAIGJvb2wgSXNB
c3NpZ25tZW50KFRPcGVyYXRvciBvcCkKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9Ci19Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
T3BlcmF0b3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL09wZXJhdG9yLmgKaW5kZXggNDJjNWM2MzIyYWY2MTYzZjkxZTY4NTIyMjViODkyMDBlZGVh
YmMxYS4uODNiOTU3ZDEwNzA1YjkzNjVkY2U2NDlkNjliNmQ0ZmI0YjFiMmQ1NiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3BlcmF0
b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9PcGVyYXRvci5oCkBAIC0xMiwxMyArMTIsMjEgQEAKIC8vCiBlbnVtIFRPcGVyYXRvcgogewot
ICAgIEVPcE51bGwsICAgICAgICAgICAgLy8gaWYgaW4gYSBub2RlLCBzaG91bGQgb25seSBtZWFu
IGEgbm9kZSBpcyBzdGlsbCBiZWluZyBidWlsdAotICAgIEVPcEZ1bmN0aW9uQ2FsbCwKLSAgICBF
T3BQYXJhbWV0ZXJzLCAgICAgIC8vIGFuIGFnZ3JlZ2F0ZSBsaXN0aW5nIHRoZSBwYXJhbWV0ZXJz
IHRvIGEgZnVuY3Rpb24KKyAgICBFT3BOdWxsLCAgLy8gaWYgaW4gYSBub2RlLCBzaG91bGQgb25s
eSBtZWFuIGEgbm9kZSBpcyBzdGlsbCBiZWluZyBidWlsdAogCi0gICAgRU9wRGVjbGFyYXRpb24s
Ci0gICAgRU9wSW52YXJpYW50RGVjbGFyYXRpb24sIC8vIFNwZWNpYWxpemVkIGRlY2xhcmF0aW9u
cyBmb3IgYXR0cmlidXRpbmcgaW52YXJpYW5jZQotICAgIEVPcFByb3RvdHlwZSwKKyAgICAvLyBD
YWxsIGEgZnVuY3Rpb24gZGVmaW5lZCBpbiB0aGUgQVNULiBUaGlzIG1pZ2h0IGJlIGEgdXNlci1k
ZWZpbmVkIGZ1bmN0aW9uIG9yIGEgZnVuY3Rpb24KKyAgICAvLyBpbnNlcnRlZCBieSBhbiBBU1Qg
dHJhbnNmb3JtYXRpb24uCisgICAgRU9wQ2FsbEZ1bmN0aW9uSW5BU1QsCisKKyAgICAvLyBDYWxs
IGFuIGludGVybmFsIGhlbHBlciBmdW5jdGlvbiB3aXRoIGEgcmF3IGltcGxlbWVudGF0aW9uIC0g
dGhlIGltcGxlbWVudGF0aW9uIGNhbid0IGJlCisgICAgLy8gc3ViamVjdCB0byBBU1QgdHJhbnNm
b3JtYXRpb25zLiBSYXcgZnVuY3Rpb25zIGhhdmUgYSBmZXcgY29uc3RyYWludHMgdG8ga2VlcCB0
aGVtIGNvbXBhdGlibGUKKyAgICAvLyB3aXRoIEFTVCB0cmF2ZXJzZXJzOgorICAgIC8vICogVGhl
eSBzaG91bGQgbm90IHJldHVybiBhcnJheXMuCisgICAgLy8gKiBUaGV5IHNob3VsZCBub3QgaGF2
ZSBvdXQgcGFyYW1ldGVycy4KKyAgICBFT3BDYWxsSW50ZXJuYWxSYXdGdW5jdGlvbiwKKworICAg
IC8vIENhbGwgYSBidWlsdC1pbiBmdW5jdGlvbiBsaWtlIGEgdGV4dHVyZSBvciBpbWFnZSBmdW5j
dGlvbi4KKyAgICBFT3BDYWxsQnVpbHRJbkZ1bmN0aW9uLAogCiAgICAgLy8KICAgICAvLyBVbmFy
eSBvcGVyYXRvcnMKQEAgLTI3LDcgKzM1LDYgQEAgZW51bSBUT3BlcmF0b3IKICAgICBFT3BOZWdh
dGl2ZSwKICAgICBFT3BQb3NpdGl2ZSwKICAgICBFT3BMb2dpY2FsTm90LAotICAgIEVPcFZlY3Rv
ckxvZ2ljYWxOb3QsCiAgICAgRU9wQml0d2lzZU5vdCwKIAogICAgIEVPcFBvc3RJbmNyZW1lbnQs
CkBAIC0zNiw3ICs0Myw4IEBAIGVudW0gVE9wZXJhdG9yCiAgICAgRU9wUHJlRGVjcmVtZW50LAog
CiAgICAgLy8KLSAgICAvLyBiaW5hcnkgb3BlcmF0aW9ucworICAgIC8vIGJpbmFyeSBvcGVyYXRp
b25zIChvbmVzIHdpdGggc3BlY2lhbCBHTFNMIHN5bnRheCBhcmUgdXNlZCBpbiBUSW50ZXJtQmlu
YXJ5IG5vZGVzLCBvdGhlcnMgaW4KKyAgICAvLyBUSW50ZXJtQWdncmVnYXRlIG5vZGVzKQogICAg
IC8vCiAKICAgICBFT3BBZGQsCkBAIC00NCwyMCArNTIsMjggQEAgZW51bSBUT3BlcmF0b3IKICAg
ICBFT3BNdWwsCiAgICAgRU9wRGl2LAogICAgIEVPcElNb2QsCisKICAgICBFT3BFcXVhbCwKICAg
ICBFT3BOb3RFcXVhbCwKLSAgICBFT3BWZWN0b3JFcXVhbCwKLSAgICBFT3BWZWN0b3JOb3RFcXVh
bCwKICAgICBFT3BMZXNzVGhhbiwKICAgICBFT3BHcmVhdGVyVGhhbiwKICAgICBFT3BMZXNzVGhh
bkVxdWFsLAogICAgIEVPcEdyZWF0ZXJUaGFuRXF1YWwsCisKKyAgICBFT3BFcXVhbENvbXBvbmVu
dFdpc2UsCisgICAgRU9wTm90RXF1YWxDb21wb25lbnRXaXNlLAorICAgIEVPcExlc3NUaGFuQ29t
cG9uZW50V2lzZSwKKyAgICBFT3BMZXNzVGhhbkVxdWFsQ29tcG9uZW50V2lzZSwKKyAgICBFT3BH
cmVhdGVyVGhhbkNvbXBvbmVudFdpc2UsCisgICAgRU9wR3JlYXRlclRoYW5FcXVhbENvbXBvbmVu
dFdpc2UsCisKICAgICBFT3BDb21tYSwKIAogICAgIEVPcFZlY3RvclRpbWVzU2NhbGFyLAogICAg
IEVPcFZlY3RvclRpbWVzTWF0cml4LAogICAgIEVPcE1hdHJpeFRpbWVzVmVjdG9yLAogICAgIEVP
cE1hdHJpeFRpbWVzU2NhbGFyLAorICAgIEVPcE1hdHJpeFRpbWVzTWF0cml4LAogCiAgICAgRU9w
TG9naWNhbE9yLAogICAgIEVPcExvZ2ljYWxYb3IsCkBAIC03Niw3ICs5Miw3IEBAIGVudW0gVE9w
ZXJhdG9yCiAgICAgRU9wSW5kZXhEaXJlY3RJbnRlcmZhY2VCbG9jaywKIAogICAgIC8vCi0gICAg
Ly8gQnVpbHQtaW4gZnVuY3Rpb25zIHBvdGVudGlhbGx5IG1hcHBlZCB0byBvcGVyYXRvcnMKKyAg
ICAvLyBCdWlsdC1pbiBmdW5jdGlvbnMgbWFwcGVkIHRvIG9wZXJhdG9ycyAoZWl0aGVyIHVuYXJ5
IG9yIHdpdGggbXVsdGlwbGUgcGFyYW1ldGVycykKICAgICAvLwogCiAgICAgRU9wUmFkaWFucywK
QEAgLTEyNyw2ICsxNDMsOSBAQCBlbnVtIFRPcGVyYXRvcgogICAgIEVPcEludEJpdHNUb0Zsb2F0
LAogICAgIEVPcFVpbnRCaXRzVG9GbG9hdCwKIAorICAgIEVPcEZyZXhwLAorICAgIEVPcExkZXhw
LAorCiAgICAgRU9wUGFja1Nub3JtMngxNiwKICAgICBFT3BQYWNrVW5vcm0yeDE2LAogICAgIEVP
cFBhY2tIYWxmMngxNiwKQEAgLTEzNCw2ICsxNTMsMTEgQEAgZW51bSBUT3BlcmF0b3IKICAgICBF
T3BVbnBhY2tVbm9ybTJ4MTYsCiAgICAgRU9wVW5wYWNrSGFsZjJ4MTYsCiAKKyAgICBFT3BQYWNr
VW5vcm00eDgsCisgICAgRU9wUGFja1Nub3JtNHg4LAorICAgIEVPcFVucGFja1Vub3JtNHg4LAor
ICAgIEVPcFVucGFja1Nub3JtNHg4LAorCiAgICAgRU9wTGVuZ3RoLAogICAgIEVPcERpc3RhbmNl
LAogICAgIEVPcERvdCwKQEAgLTE0MywxMiArMTY3LDExIEBAIGVudW0gVE9wZXJhdG9yCiAgICAg
RU9wUmVmbGVjdCwKICAgICBFT3BSZWZyYWN0LAogCi0gICAgRU9wREZkeCwgICAgICAgICAgICAv
LyBGcmFnbWVudCBvbmx5LCBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgZXh0ZW5zaW9uCi0gICAg
RU9wREZkeSwgICAgICAgICAgICAvLyBGcmFnbWVudCBvbmx5LCBPRVNfc3RhbmRhcmRfZGVyaXZh
dGl2ZXMgZXh0ZW5zaW9uCi0gICAgRU9wRndpZHRoLCAgICAgICAgICAvLyBGcmFnbWVudCBvbmx5
LCBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgZXh0ZW5zaW9uCi0KLSAgICBFT3BNYXRyaXhUaW1l
c01hdHJpeCwKKyAgICBFT3BERmR4LCAgICAvLyBGcmFnbWVudCBvbmx5LCBPRVNfc3RhbmRhcmRf
ZGVyaXZhdGl2ZXMgZXh0ZW5zaW9uCisgICAgRU9wREZkeSwgICAgLy8gRnJhZ21lbnQgb25seSwg
T0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIGV4dGVuc2lvbgorICAgIEVPcEZ3aWR0aCwgIC8vIEZy
YWdtZW50IG9ubHksIE9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyBleHRlbnNpb24KIAorICAgIEVP
cE11bE1hdHJpeENvbXBvbmVudFdpc2UsCiAgICAgRU9wT3V0ZXJQcm9kdWN0LAogICAgIEVPcFRy
YW5zcG9zZSwKICAgICBFT3BEZXRlcm1pbmFudCwKQEAgLTE1NiwxMiArMTc5LDI0IEBAIGVudW0g
VE9wZXJhdG9yCiAKICAgICBFT3BBbnksCiAgICAgRU9wQWxsLAorICAgIEVPcExvZ2ljYWxOb3RD
b21wb25lbnRXaXNlLAorCisgICAgRU9wQml0ZmllbGRFeHRyYWN0LAorICAgIEVPcEJpdGZpZWxk
SW5zZXJ0LAorICAgIEVPcEJpdGZpZWxkUmV2ZXJzZSwKKyAgICBFT3BCaXRDb3VudCwKKyAgICBF
T3BGaW5kTFNCLAorICAgIEVPcEZpbmRNU0IsCisgICAgRU9wVWFkZENhcnJ5LAorICAgIEVPcFVz
dWJCb3Jyb3csCisgICAgRU9wVW11bEV4dGVuZGVkLAorICAgIEVPcEltdWxFeHRlbmRlZCwKIAog
ICAgIC8vCiAgICAgLy8gQnJhbmNoCiAgICAgLy8KIAotICAgIEVPcEtpbGwsICAgICAgICAgICAg
Ly8gRnJhZ21lbnQgb25seQorICAgIEVPcEtpbGwsICAvLyBGcmFnbWVudCBvbmx5CiAgICAgRU9w
UmV0dXJuLAogICAgIEVPcEJyZWFrLAogICAgIEVPcENvbnRpbnVlLApAQCAtMjE4LDExICsyNTMs
MjAgQEAgZW51bSBUT3BlcmF0b3IKICAgICBFT3BCaXRTaGlmdFJpZ2h0QXNzaWduLAogICAgIEVP
cEJpdHdpc2VBbmRBc3NpZ24sCiAgICAgRU9wQml0d2lzZVhvckFzc2lnbiwKLSAgICBFT3BCaXR3
aXNlT3JBc3NpZ24KKyAgICBFT3BCaXR3aXNlT3JBc3NpZ24sCisKKyAgICAvLyAgYmFycmllcnMK
KyAgICBFT3BCYXJyaWVyLAorICAgIEVPcE1lbW9yeUJhcnJpZXIsCisgICAgRU9wTWVtb3J5QmFy
cmllckF0b21pY0NvdW50ZXIsCisgICAgRU9wTWVtb3J5QmFycmllckJ1ZmZlciwKKyAgICBFT3BN
ZW1vcnlCYXJyaWVySW1hZ2UsCisgICAgRU9wTWVtb3J5QmFycmllclNoYXJlZCwKKyAgICBFT3BH
cm91cE1lbW9yeUJhcnJpZXIKIH07CiAKIC8vIFJldHVybnMgdGhlIHN0cmluZyBjb3JyZXNwb25k
aW5nIHRvIHRoZSBvcGVyYXRvciBpbiBHTFNMCi1jb25zdCBjaGFyKiBHZXRPcGVyYXRvclN0cmlu
ZyhUT3BlcmF0b3Igb3ApOworY29uc3QgY2hhciAqR2V0T3BlcmF0b3JTdHJpbmcoVE9wZXJhdG9y
IG9wKTsKIAogLy8gU2F5IHdoZXRoZXIgb3Igbm90IGEgYmluYXJ5IG9yIHVuYXJ5IG9wZXJhdGlv
biBjaGFuZ2VzIHRoZSB2YWx1ZSBvZiBhIHZhcmlhYmxlLgogYm9vbCBJc0Fzc2lnbm1lbnQoVE9w
ZXJhdG9yIG9wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL091dHB1dEVTU0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0RVNTTC5jcHAKaW5kZXggNzdlMGE4ZmIzNzY1
MGQzNWQ3Mzc2NTU5YzBiMzI1ZDJiZTUyN2ZhMi4uZGY5ODVhZDQ4MzAwNGYzZjYxMDc4NWY5MTFj
YmY4ZjZjMzA4MTEzNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0RVNTTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0RVNTTC5jcHAKQEAgLTYsMjAgKzYs
MjcgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0RVNTTC5oIgogCitu
YW1lc3BhY2Ugc2gKK3sKKwogVE91dHB1dEVTU0w6OlRPdXRwdXRFU1NMKFRJbmZvU2lua0Jhc2Ug
Jm9ialNpbmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgU2hBcnJheUluZGV4Q2xhbXBpbmdT
dHJhdGVneSBjbGFtcGluZ1N0cmF0ZWd5LAogICAgICAgICAgICAgICAgICAgICAgICAgIFNoSGFz
aEZ1bmN0aW9uNjQgaGFzaEZ1bmN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVN
YXAgJm5hbWVNYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgVFN5bWJvbFRhYmxlICZzeW1i
b2xUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaDo6R0xlbnVtIHNoYWRlclR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBmb3JjZUhpZ2hwKQorICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgZm9yY2VIaWdocCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTaENvbXBpbGVPcHRp
b25zIGNvbXBpbGVPcHRpb25zKQogICAgIDogVE91dHB1dEdMU0xCYXNlKG9ialNpbmssCiAgICAg
ICAgICAgICAgICAgICAgICAgY2xhbXBpbmdTdHJhdGVneSwKICAgICAgICAgICAgICAgICAgICAg
ICBoYXNoRnVuY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgbmFtZU1hcCwKICAgICAgICAg
ICAgICAgICAgICAgICBzeW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJU
eXBlLAogICAgICAgICAgICAgICAgICAgICAgIHNoYWRlclZlcnNpb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgU0hfRVNTTF9PVVRQVVQpLAorICAgICAgICAgICAgICAgICAgICAgIFNIX0VTU0xf
T1VUUFVULAorICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVPcHRpb25zKSwKICAgICAgIG1G
b3JjZUhpZ2hwKGZvcmNlSGlnaHApCiB7CiB9CkBAIC0yOSwxMCArMzYsMTIgQEAgYm9vbCBUT3V0
cHV0RVNTTDo6d3JpdGVWYXJpYWJsZVByZWNpc2lvbihUUHJlY2lzaW9uIHByZWNpc2lvbikKICAg
ICBpZiAocHJlY2lzaW9uID09IEVicFVuZGVmaW5lZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgVEluZm9TaW5rQmFzZSYgb3V0ID0gb2JqU2luaygpOworICAgIFRJbmZvU2lua0Jhc2Ug
Jm91dCA9IG9ialNpbmsoKTsKICAgICBpZiAobUZvcmNlSGlnaHApCiAgICAgICAgIG91dCA8PCBn
ZXRQcmVjaXNpb25TdHJpbmcoRWJwSGlnaCk7CiAgICAgZWxzZQogICAgICAgICBvdXQgPDwgZ2V0
UHJlY2lzaW9uU3RyaW5nKHByZWNpc2lvbik7CiAgICAgcmV0dXJuIHRydWU7CiB9CisKK30gIC8v
IG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0RVNTTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0RVNTTC5oCmluZGV4IGM1YTk2MzQ5OWU4NmVj
YTA2NDJlZTBkNjNjMTljZmQ3ODQ1YzRkNTkuLjViMmNiOTQ5MmM0MDVjYWY3YTY5YzJiMzMzMzdl
MjU0ZjQxYTRlNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL091dHB1dEVTU0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRFU1NMLmgKQEAgLTksMjIgKzksMjkgQEAK
IAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0R0xTTEJhc2UuaCIKIAorbmFt
ZXNwYWNlIHNoCit7CisKIGNsYXNzIFRPdXRwdXRFU1NMIDogcHVibGljIFRPdXRwdXRHTFNMQmFz
ZQogewotcHVibGljOgotICAgIFRPdXRwdXRFU1NMKFRJbmZvU2lua0Jhc2UmIG9ialNpbmssCisg
IHB1YmxpYzoKKyAgICBUT3V0cHV0RVNTTChUSW5mb1NpbmtCYXNlICZvYmpTaW5rLAogICAgICAg
ICAgICAgICAgIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgY2xhbXBpbmdTdHJhdGVneSwK
ICAgICAgICAgICAgICAgICBTaEhhc2hGdW5jdGlvbjY0IGhhc2hGdW5jdGlvbiwKLSAgICAgICAg
ICAgICAgICBOYW1lTWFwJiBuYW1lTWFwLAotICAgICAgICAgICAgICAgIFRTeW1ib2xUYWJsZSYg
c3ltYm9sVGFibGUsCisgICAgICAgICAgICAgICAgTmFtZU1hcCAmbmFtZU1hcCwKKyAgICAgICAg
ICAgICAgICBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLAorICAgICAgICAgICAgICAgIHNoOjpH
TGVudW0gc2hhZGVyVHlwZSwKICAgICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbiwKLSAg
ICAgICAgICAgICAgICBib29sIGZvcmNlSGlnaHApOworICAgICAgICAgICAgICAgIGJvb2wgZm9y
Y2VIaWdocCwKKyAgICAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25z
KTsKIAotcHJvdGVjdGVkOgotICBib29sIHdyaXRlVmFyaWFibGVQcmVjaXNpb24oVFByZWNpc2lv
biBwcmVjaXNpb24pIG92ZXJyaWRlOworICBwcm90ZWN0ZWQ6CisgICAgYm9vbCB3cml0ZVZhcmlh
YmxlUHJlY2lzaW9uKFRQcmVjaXNpb24gcHJlY2lzaW9uKSBvdmVycmlkZTsKIAotcHJpdmF0ZToK
KyAgcHJpdmF0ZToKICAgICBib29sIG1Gb3JjZUhpZ2hwOwogfTsKIAorfSAgLy8gbmFtZXNwYWNl
IHNoCisKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9PVVRQVVRFU1NMX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9P
dXRwdXRHTFNMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL091dHB1dEdMU0wuY3BwCmluZGV4IDQzMTQyNTAyMGE3NDFjMDA2YmRlOTZhNTI1N2Qw
MDM4OTA2YWQyNTguLmFmMWI3N2M1NGQ4ZDU2YTM2YzNlM2U1OWJjYTRhODk2Y2U2MzNmNGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L091dHB1dEdMU0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL091dHB1dEdMU0wuY3BwCkBAIC02LDIwICs2LDI3IEBACiAKICNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0wuaCIKIAotVE91dHB1dEdMU0w6OlRPdXRw
dXRHTFNMKFRJbmZvU2lua0Jhc2UmIG9ialNpbmssCituYW1lc3BhY2Ugc2gKK3sKKworVE91dHB1
dEdMU0w6OlRPdXRwdXRHTFNMKFRJbmZvU2lua0Jhc2UgJm9ialNpbmssCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBjbGFtcGluZ1N0cmF0ZWd5
LAogICAgICAgICAgICAgICAgICAgICAgICAgIFNoSGFzaEZ1bmN0aW9uNjQgaGFzaEZ1bmN0aW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWVNYXAmIG5hbWVNYXAsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgVFN5bWJvbFRhYmxlJiBzeW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBOYW1lTWFwICZuYW1lTWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgIFRT
eW1ib2xUYWJsZSAmc3ltYm9sVGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkdM
ZW51bSBzaGFkZXJUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJz
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBTaFNoYWRlck91dHB1dCBvdXRwdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykKICAgICA6IFRP
dXRwdXRHTFNMQmFzZShvYmpTaW5rLAogICAgICAgICAgICAgICAgICAgICAgIGNsYW1waW5nU3Ry
YXRlZ3ksCiAgICAgICAgICAgICAgICAgICAgICAgaGFzaEZ1bmN0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgIG5hbWVNYXAsCiAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUsCisg
ICAgICAgICAgICAgICAgICAgICAgc2hhZGVyVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICBz
aGFkZXJWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCkKKyAgICAgICAgICAg
ICAgICAgICAgICBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZU9wdGlvbnMp
CiB7CiB9CiAKQEAgLTMwLDE4ICszNywxOCBAQCBib29sIFRPdXRwdXRHTFNMOjp3cml0ZVZhcmlh
YmxlUHJlY2lzaW9uKFRQcmVjaXNpb24pCiAKIHZvaWQgVE91dHB1dEdMU0w6OnZpc2l0U3ltYm9s
KFRJbnRlcm1TeW1ib2wgKm5vZGUpCiB7Ci0gICAgVEluZm9TaW5rQmFzZSYgb3V0ID0gb2JqU2lu
aygpOworICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG9ialNpbmsoKTsKIAogICAgIGNvbnN0IFRT
dHJpbmcgJnN5bWJvbCA9IG5vZGUtPmdldFN5bWJvbCgpOwogICAgIGlmIChzeW1ib2wgPT0gImds
X0ZyYWdEZXB0aEVYVCIpCiAgICAgewogICAgICAgICBvdXQgPDwgImdsX0ZyYWdEZXB0aCI7CiAg
ICAgfQotICAgIGVsc2UgaWYgKHN5bWJvbCA9PSAiZ2xfRnJhZ0NvbG9yIiAmJiBJc0dMU0wxMzBP
ck5ld2VyKGdldFNoYWRlck91dHB1dCgpKSkKKyAgICBlbHNlIGlmIChzeW1ib2wgPT0gImdsX0Zy
YWdDb2xvciIgJiYgc2g6OklzR0xTTDEzME9yTmV3ZXIoZ2V0U2hhZGVyT3V0cHV0KCkpKQogICAg
IHsKICAgICAgICAgb3V0IDw8ICJ3ZWJnbF9GcmFnQ29sb3IiOwogICAgIH0KLSAgICBlbHNlIGlm
IChzeW1ib2wgPT0gImdsX0ZyYWdEYXRhIiAmJiBJc0dMU0wxMzBPck5ld2VyKGdldFNoYWRlck91
dHB1dCgpKSkKKyAgICBlbHNlIGlmIChzeW1ib2wgPT0gImdsX0ZyYWdEYXRhIiAmJiBzaDo6SXNH
TFNMMTMwT3JOZXdlcihnZXRTaGFkZXJPdXRwdXQoKSkpCiAgICAgewogICAgICAgICBvdXQgPDwg
IndlYmdsX0ZyYWdEYXRhIjsKICAgICB9CkBAIC01OSw0NCArNjYsNDIgQEAgdm9pZCBUT3V0cHV0
R0xTTDo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkKICAgICB9CiB9CiAKLVRTdHJp
bmcgVE91dHB1dEdMU0w6OnRyYW5zbGF0ZVRleHR1cmVGdW5jdGlvbihUU3RyaW5nICZuYW1lKQor
VFN0cmluZyBUT3V0cHV0R0xTTDo6dHJhbnNsYXRlVGV4dHVyZUZ1bmN0aW9uKGNvbnN0IFRTdHJp
bmcgJm5hbWUpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgKnNpbXBsZVJlbmFtZVtdID0gewot
ICAgICAgICAidGV4dHVyZTJETG9kRVhUIiwgInRleHR1cmUyRExvZCIsCi0gICAgICAgICJ0ZXh0
dXJlMkRQcm9qTG9kRVhUIiwgInRleHR1cmUyRFByb2pMb2QiLAotICAgICAgICAidGV4dHVyZUN1
YmVMb2RFWFQiLCAidGV4dHVyZUN1YmVMb2QiLAotICAgICAgICAidGV4dHVyZTJER3JhZEVYVCIs
ICJ0ZXh0dXJlMkRHcmFkQVJCIiwKLSAgICAgICAgInRleHR1cmUyRFByb2pHcmFkRVhUIiwgInRl
eHR1cmUyRFByb2pHcmFkQVJCIiwKLSAgICAgICAgInRleHR1cmVDdWJlR3JhZEVYVCIsICJ0ZXh0
dXJlQ3ViZUdyYWRBUkIiLAotICAgICAgICBOVUxMLCBOVUxMCi0gICAgfTsKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciAqc2ltcGxlUmVuYW1lW10gPSB7InRleHR1cmUyRExvZEVYVCIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0dXJlMkRMb2QiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGV4dHVyZTJEUHJvakxvZEVYVCIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0dXJlMkRQcm9q
TG9kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRleHR1cmVD
dWJlTG9kRVhUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRl
eHR1cmVDdWJlTG9kIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InRleHR1cmUyREdyYWRFWFQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAidGV4dHVyZTJER3JhZEFSQiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJ0ZXh0dXJlMkRQcm9qR3JhZEVYVCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJ0ZXh0dXJlMkRQcm9qR3JhZEFSQiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0dXJlQ3ViZUdyYWRFWFQiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGV4dHVyZUN1YmVHcmFkQVJCIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTH07CiAgICAgc3RhdGljIGNvbnN0
IGNoYXIgKmxlZ2FjeVRvQ29yZVJlbmFtZVtdID0gewotICAgICAgICAidGV4dHVyZTJEIiwgInRl
eHR1cmUiLAotICAgICAgICAidGV4dHVyZTJEUHJvaiIsICJ0ZXh0dXJlUHJvaiIsCi0gICAgICAg
ICJ0ZXh0dXJlMkRMb2QiLCAidGV4dHVyZUxvZCIsCi0gICAgICAgICJ0ZXh0dXJlMkRQcm9qTG9k
IiwgInRleHR1cmVQcm9qTG9kIiwKLSAgICAgICAgInRleHR1cmUyRFJlY3QiLCAidGV4dHVyZSIs
Ci0gICAgICAgICJ0ZXh0dXJlQ3ViZSIsICJ0ZXh0dXJlIiwKKyAgICAgICAgInRleHR1cmUyRCIs
ICJ0ZXh0dXJlIiwgInRleHR1cmUyRFByb2oiLCAidGV4dHVyZVByb2oiLCAidGV4dHVyZTJETG9k
IiwgInRleHR1cmVMb2QiLAorICAgICAgICAidGV4dHVyZTJEUHJvakxvZCIsICJ0ZXh0dXJlUHJv
akxvZCIsICJ0ZXh0dXJlMkRSZWN0IiwgInRleHR1cmUiLCAidGV4dHVyZUN1YmUiLCAidGV4dHVy
ZSIsCiAgICAgICAgICJ0ZXh0dXJlQ3ViZUxvZCIsICJ0ZXh0dXJlTG9kIiwKICAgICAgICAgLy8g
RXh0ZW5zaW9ucwotICAgICAgICAidGV4dHVyZTJETG9kRVhUIiwgInRleHR1cmVMb2QiLAotICAg
ICAgICAidGV4dHVyZTJEUHJvakxvZEVYVCIsICJ0ZXh0dXJlUHJvakxvZCIsCi0gICAgICAgICJ0
ZXh0dXJlQ3ViZUxvZEVYVCIsICJ0ZXh0dXJlTG9kIiwKLSAgICAgICAgInRleHR1cmUyREdyYWRF
WFQiLCAidGV4dHVyZUdyYWQiLAotICAgICAgICAidGV4dHVyZTJEUHJvakdyYWRFWFQiLCAidGV4
dHVyZVByb2pHcmFkIiwKLSAgICAgICAgInRleHR1cmVDdWJlR3JhZEVYVCIsICJ0ZXh0dXJlR3Jh
ZCIsCi0gICAgICAgIE5VTEwsIE5VTEwKLSAgICB9OwotICAgIGNvbnN0IGNoYXIgKiptYXBwaW5n
ID0gKElzR0xTTDEzME9yTmV3ZXIoZ2V0U2hhZGVyT3V0cHV0KCkpKSA/Ci0gICAgICAgIGxlZ2Fj
eVRvQ29yZVJlbmFtZSA6IHNpbXBsZVJlbmFtZTsKKyAgICAgICAgInRleHR1cmUyRExvZEVYVCIs
ICJ0ZXh0dXJlTG9kIiwgInRleHR1cmUyRFByb2pMb2RFWFQiLCAidGV4dHVyZVByb2pMb2QiLAor
ICAgICAgICAidGV4dHVyZUN1YmVMb2RFWFQiLCAidGV4dHVyZUxvZCIsICJ0ZXh0dXJlMkRHcmFk
RVhUIiwgInRleHR1cmVHcmFkIiwKKyAgICAgICAgInRleHR1cmUyRFByb2pHcmFkRVhUIiwgInRl
eHR1cmVQcm9qR3JhZCIsICJ0ZXh0dXJlQ3ViZUdyYWRFWFQiLCAidGV4dHVyZUdyYWQiLCBOVUxM
LCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICoqbWFwcGluZyA9CisgICAgICAgIChzaDo6SXNHTFNM
MTMwT3JOZXdlcihnZXRTaGFkZXJPdXRwdXQoKSkpID8gbGVnYWN5VG9Db3JlUmVuYW1lIDogc2lt
cGxlUmVuYW1lOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IG1hcHBpbmdbaV0gIT0gTlVMTDsgaSAr
PSAyKQogICAgIHsKICAgICAgICAgaWYgKG5hbWUgPT0gbWFwcGluZ1tpXSkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIG1hcHBpbmdbaSsxXTsKKyAgICAgICAgICAgIHJldHVybiBtYXBw
aW5nW2kgKyAxXTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBuYW1lOwogfQorCit9
ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0wuaAppbmRleCA5YjFhY2E0ZWFi
ZTk2MDU2ZmMwZWU1YTdhODE4NzE1Zjc4NDU5NWEzLi4xNzY4MmZmMzFlYTM1ZDBhYzBmNDZmNDZj
MzRiMmE3YzVmMWY2NmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0R0xTTC5oCkBAIC05LDIxICs5LDI4
IEBACiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0xCYXNlLmgiCiAK
K25hbWVzcGFjZSBzaAoreworCiBjbGFzcyBUT3V0cHV0R0xTTCA6IHB1YmxpYyBUT3V0cHV0R0xT
TEJhc2UKIHsKICAgcHVibGljOgotICAgIFRPdXRwdXRHTFNMKFRJbmZvU2lua0Jhc2UmIG9ialNp
bmssCisgICAgVE91dHB1dEdMU0woVEluZm9TaW5rQmFzZSAmb2JqU2luaywKICAgICAgICAgICAg
ICAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IGNsYW1waW5nU3RyYXRlZ3ksCiAgICAg
ICAgICAgICAgICAgU2hIYXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rpb24sCi0gICAgICAgICAgICAg
ICAgTmFtZU1hcCYgbmFtZU1hcCwKLSAgICAgICAgICAgICAgICBUU3ltYm9sVGFibGUmIHN5bWJv
bFRhYmxlLAorICAgICAgICAgICAgICAgIE5hbWVNYXAgJm5hbWVNYXAsCisgICAgICAgICAgICAg
ICAgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAgICBzaDo6R0xlbnVt
IHNoYWRlclR5cGUsCiAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24sCi0gICAgICAg
ICAgICAgICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0KTsKKyAgICAgICAgICAgICAgICBTaFNoYWRl
ck91dHB1dCBvdXRwdXQsCisgICAgICAgICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxl
T3B0aW9ucyk7CiAKICAgcHJvdGVjdGVkOgogICAgIGJvb2wgd3JpdGVWYXJpYWJsZVByZWNpc2lv
bihUUHJlY2lzaW9uKSBvdmVycmlkZTsKICAgICB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1i
b2wgKm5vZGUpIG92ZXJyaWRlOwotICAgIFRTdHJpbmcgdHJhbnNsYXRlVGV4dHVyZUZ1bmN0aW9u
KFRTdHJpbmcgJm5hbWUpIG92ZXJyaWRlOworICAgIFRTdHJpbmcgdHJhbnNsYXRlVGV4dHVyZUZ1
bmN0aW9uKGNvbnN0IFRTdHJpbmcgJm5hbWUpIG92ZXJyaWRlOwogfTsKIAorfSAgLy8gbmFtZXNw
YWNlIHNoCisKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9PVVRQVVRHTFNMX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9PdXRwdXRHTFNMQmFzZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMQmFzZS5jcHAKaW5kZXggNDMwMTU1OTYxMzRiYjBhZGYy
OGI4MDk1Mjg5YThlMzM2OTM5ZGE5ZS4uZmVlMzgzNjMxNmM3YjVkMWU5NTM1YTQ5YjkxMDA5ZjRm
ZTBhYmZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvT3V0cHV0R0xTTEJhc2UuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0xCYXNlLmNwcApAQCAtNyw5ICs3
LDEzIEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMQmFzZS5oIgog
CiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgi
CiAKICNpbmNsdWRlIDxjZmxvYXQ+CiAKK25hbWVzcGFjZSBzaAoreworCiBuYW1lc3BhY2UKIHsK
IFRTdHJpbmcgYXJyYXlCcmFja2V0cyhjb25zdCBUVHlwZSAmdHlwZSkKQEAgLTQ5LDYgKzUzLDY3
IEBAIGJvb2wgaXNTaW5nbGVTdGF0ZW1lbnQoVEludGVybU5vZGUgKm5vZGUpCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKKy8vIElmIFNIX1NDQUxBUklaRV9WRUNfQU5EX01BVF9DT05TVFJVQ1RPUl9B
UkdTIGlzIGVuYWJsZWQsIGxheW91dCBxdWFsaWZpZXJzIGFyZSBzcGlsbGVkIHdoZW5ldmVyCisv
LyB2YXJpYWJsZXMgd2l0aCBzcGVjaWZpZWQgbGF5b3V0IHF1YWxpZmllcnMgYXJlIGNvcGllZC4g
QWRkaXRpb25hbCBjaGVja3MgYXJlIG5lZWRlZCBhZ2FpbnN0IHRoZQorLy8gdHlwZSBhbmQgc3Rv
cmFnZSBxdWFsaWZpZXIgb2YgdGhlIHZhcmlhYmxlIHRvIHZlcmlmeSB0aGF0IGxheW91dCBxdWFs
aWZpZXJzIGhhdmUgdG8gYmUgb3V0cHV0dGVkLgorLy8gVE9ETyAobXJhZGV2KTogRml4IGxheW91
dCBxdWFsaWZpZXIgc3BpbGxpbmcgaW4gU2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdz
IGFuZCByZW1vdmUKKy8vIE5lZWRzVG9Xcml0ZUxheW91dFF1YWxpZmllci4KK2Jvb2wgTmVlZHNU
b1dyaXRlTGF5b3V0UXVhbGlmaWVyKGNvbnN0IFRUeXBlICZ0eXBlKQoreworICAgIGlmICh0eXBl
LmdldEJhc2ljVHlwZSgpID09IEVidEludGVyZmFjZUJsb2NrKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IFRMYXlvdXRRdWFsaWZpZXIgJmxheW91dFF1
YWxpZmllciA9IHR5cGUuZ2V0TGF5b3V0UXVhbGlmaWVyKCk7CisKKyAgICBpZiAoKHR5cGUuZ2V0
UXVhbGlmaWVyKCkgPT0gRXZxRnJhZ21lbnRPdXQgfHwgdHlwZS5nZXRRdWFsaWZpZXIoKSA9PSBF
dnFWZXJ0ZXhJbikgJiYKKyAgICAgICAgbGF5b3V0UXVhbGlmaWVyLmxvY2F0aW9uID49IDApCisg
ICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAodHlwZS5nZXRRdWFs
aWZpZXIoKSA9PSBFdnFGcmFnbWVudE91dCAmJiBsYXlvdXRRdWFsaWZpZXIueXV2ID09IHRydWUp
CisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoSXNPcGFxdWVU
eXBlKHR5cGUuZ2V0QmFzaWNUeXBlKCkpICYmIGxheW91dFF1YWxpZmllci5iaW5kaW5nICE9IC0x
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKElzSW1hZ2Uo
dHlwZS5nZXRCYXNpY1R5cGUoKSkgJiYgbGF5b3V0UXVhbGlmaWVyLmltYWdlSW50ZXJuYWxGb3Jt
YXQgIT0gRWlpZlVuc3BlY2lmaWVkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KKworY2xhc3MgQ29tbWFTZXBhcmF0ZWRMaXN0SXRlbVBy
ZWZpeEdlbmVyYXRvcgoreworICBwdWJsaWM6CisgICAgQ29tbWFTZXBhcmF0ZWRMaXN0SXRlbVBy
ZWZpeEdlbmVyYXRvcigpIDogbUZpcnN0KHRydWUpIHt9CisgIHByaXZhdGU6CisgICAgYm9vbCBt
Rmlyc3Q7CisKKyAgICBmcmllbmQgVEluZm9TaW5rQmFzZSAmb3BlcmF0b3I8PChUSW5mb1NpbmtC
YXNlICZvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFTZXBh
cmF0ZWRMaXN0SXRlbVByZWZpeEdlbmVyYXRvciAmZ2VuKTsKK307CisKK1RJbmZvU2lua0Jhc2Ug
Jm9wZXJhdG9yPDwoVEluZm9TaW5rQmFzZSAmb3V0LCBDb21tYVNlcGFyYXRlZExpc3RJdGVtUHJl
Zml4R2VuZXJhdG9yICZnZW4pCit7CisgICAgaWYgKGdlbi5tRmlyc3QpCisgICAgeworICAgICAg
ICBnZW4ubUZpcnN0ID0gZmFsc2U7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG91
dCA8PCAiLCAiOworICAgIH0KKyAgICByZXR1cm4gb3V0OworfQorCiB9ICAvLyBuYW1lc3BhY2UK
IAogVE91dHB1dEdMU0xCYXNlOjpUT3V0cHV0R0xTTEJhc2UoVEluZm9TaW5rQmFzZSAmb2JqU2lu
aywKQEAgLTU2LDggKzEyMSwxMCBAQCBUT3V0cHV0R0xTTEJhc2U6OlRPdXRwdXRHTFNMQmFzZShU
SW5mb1NpbmtCYXNlICZvYmpTaW5rLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hIYXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOYW1lTWFwICZuYW1lTWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNoOjpHTGVudW0gc2hhZGVyVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBzaGFkZXJWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykKICAgICA6IFRJbnRlcm1UcmF2ZXJz
ZXIodHJ1ZSwgdHJ1ZSwgdHJ1ZSksCiAgICAgICBtT2JqU2luayhvYmpTaW5rKSwKICAgICAgIG1E
ZWNsYXJpbmdWYXJpYWJsZXMoZmFsc2UpLApAQCAtNjUsMTMgKzEzMiwzOCBAQCBUT3V0cHV0R0xT
TEJhc2U6OlRPdXRwdXRHTFNMQmFzZShUSW5mb1NpbmtCYXNlICZvYmpTaW5rLAogICAgICAgbUhh
c2hGdW5jdGlvbihoYXNoRnVuY3Rpb24pLAogICAgICAgbU5hbWVNYXAobmFtZU1hcCksCiAgICAg
ICBtU3ltYm9sVGFibGUoc3ltYm9sVGFibGUpLAorICAgICAgbVNoYWRlclR5cGUoc2hhZGVyVHlw
ZSksCiAgICAgICBtU2hhZGVyVmVyc2lvbihzaGFkZXJWZXJzaW9uKSwKLSAgICAgIG1PdXRwdXQo
b3V0cHV0KQorICAgICAgbU91dHB1dChvdXRwdXQpLAorICAgICAgbUNvbXBpbGVPcHRpb25zKGNv
bXBpbGVPcHRpb25zKQoreworfQorCit2b2lkIFRPdXRwdXRHTFNMQmFzZTo6d3JpdGVJbnZhcmlh
bnRRdWFsaWZpZXIoY29uc3QgVFR5cGUgJnR5cGUpCit7CisgICAgaWYgKCFzaDo6UmVtb3ZlSW52
YXJpYW50KG1TaGFkZXJUeXBlLCBtU2hhZGVyVmVyc2lvbiwgbU91dHB1dCwgbUNvbXBpbGVPcHRp
b25zKSkKKyAgICB7CisgICAgICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG9ialNpbmsoKTsKKyAg
ICAgICAgb3V0IDw8ICJpbnZhcmlhbnQgIjsKKyAgICB9Cit9CisKK3ZvaWQgVE91dHB1dEdMU0xC
YXNlOjp3cml0ZUZsb2F0KFRJbmZvU2lua0Jhc2UgJm91dCwgZmxvYXQgZikKIHsKKyAgICBpZiAo
KGdsOjppc0luZihmKSB8fCBnbDo6aXNOYU4oZikpICYmIG1TaGFkZXJWZXJzaW9uID49IDMwMCkK
KyAgICB7CisgICAgICAgIG91dCA8PCAidWludEJpdHNUb0Zsb2F0KCIgPDwgZ2w6OmJpdENhc3Q8
dWludDMyX3Q+KGYpIDw8ICJ1KSI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG91
dCA8PCBzdGQ6Om1pbihGTFRfTUFYLCBzdGQ6Om1heCgtRkxUX01BWCwgZikpOworICAgIH0KIH0K
IAotdm9pZCBUT3V0cHV0R0xTTEJhc2U6OndyaXRlVHJpcGxldCgKLSAgICBWaXNpdCB2aXNpdCwg
Y29uc3QgY2hhciAqcHJlU3RyLCBjb25zdCBjaGFyICppblN0ciwgY29uc3QgY2hhciAqcG9zdFN0
cikKK3ZvaWQgVE91dHB1dEdMU0xCYXNlOjp3cml0ZVRyaXBsZXQoVmlzaXQgdmlzaXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnByZVN0ciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW5TdHIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBvc3RTdHIpCiB7CiAgICAg
VEluZm9TaW5rQmFzZSAmb3V0ID0gb2JqU2luaygpOwogICAgIGlmICh2aXNpdCA9PSBQcmVWaXNp
dCAmJiBwcmVTdHIpCkBAIC04Miw2NSArMTc0LDE2OSBAQCB2b2lkIFRPdXRwdXRHTFNMQmFzZTo6
d3JpdGVUcmlwbGV0KAogICAgICAgICBvdXQgPDwgcG9zdFN0cjsKIH0KIAotdm9pZCBUT3V0cHV0
R0xTTEJhc2U6OndyaXRlQnVpbHRJbkZ1bmN0aW9uVHJpcGxldCgKLSAgICBWaXNpdCB2aXNpdCwg
Y29uc3QgY2hhciAqcHJlU3RyLCBib29sIHVzZUVtdWxhdGVkRnVuY3Rpb24pCit2b2lkIFRPdXRw
dXRHTFNMQmFzZTo6d3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KFZpc2l0IHZpc2l0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUT3BlcmF0b3Ig
b3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgdXNlRW11bGF0ZWRGdW5jdGlvbikKIHsKLSAgICBUU3RyaW5nIHByZVN0cmluZyA9IHVzZUVt
dWxhdGVkRnVuY3Rpb24gPwotICAgICAgICBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6R2V0RW11
bGF0ZWRGdW5jdGlvbk5hbWUocHJlU3RyKSA6IHByZVN0cjsKLSAgICB3cml0ZVRyaXBsZXQodmlz
aXQsIHByZVN0cmluZy5jX3N0cigpLCAiLCAiLCAiKSIpOworICAgIFRJbmZvU2lua0Jhc2UgJm91
dCA9IG9ialNpbmsoKTsKKyAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCisgICAgeworICAgICAg
ICBjb25zdCBjaGFyICpvcFN0cihHZXRPcGVyYXRvclN0cmluZyhvcCkpOworICAgICAgICBpZiAo
dXNlRW11bGF0ZWRGdW5jdGlvbikKKyAgICAgICAgeworICAgICAgICAgICAgQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3I6OldyaXRlRW11bGF0ZWRGdW5jdGlvbk5hbWUob3V0LCBvcFN0cik7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgb3BTdHI7
CisgICAgICAgIH0KKyAgICAgICAgb3V0IDw8ICIoIjsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCBudWxscHRyLCAiLCAiLCAiKSIpOworICAgIH0K
IH0KIAogdm9pZCBUT3V0cHV0R0xTTEJhc2U6OndyaXRlTGF5b3V0UXVhbGlmaWVyKGNvbnN0IFRU
eXBlICZ0eXBlKQogeworICAgIGlmICghTmVlZHNUb1dyaXRlTGF5b3V0UXVhbGlmaWVyKHR5cGUp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFRJbmZvU2lua0Jhc2UgJm91
dCAgICAgICAgICAgICAgICAgICAgICA9IG9ialNpbmsoKTsKKyAgICBjb25zdCBUTGF5b3V0UXVh
bGlmaWVyICZsYXlvdXRRdWFsaWZpZXIgPSB0eXBlLmdldExheW91dFF1YWxpZmllcigpOworICAg
IG91dCA8PCAibGF5b3V0KCI7CisKKyAgICBDb21tYVNlcGFyYXRlZExpc3RJdGVtUHJlZml4R2Vu
ZXJhdG9yIGxpc3RJdGVtUHJlZml4OworCiAgICAgaWYgKHR5cGUuZ2V0UXVhbGlmaWVyKCkgPT0g
RXZxRnJhZ21lbnRPdXQgfHwgdHlwZS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFWZXJ0ZXhJbikKICAg
ICB7Ci0gICAgICAgIGNvbnN0IFRMYXlvdXRRdWFsaWZpZXIgJmxheW91dFF1YWxpZmllciA9IHR5
cGUuZ2V0TGF5b3V0UXVhbGlmaWVyKCk7CiAgICAgICAgIGlmIChsYXlvdXRRdWFsaWZpZXIubG9j
YXRpb24gPj0gMCkKICAgICAgICAgewotICAgICAgICAgICAgVEluZm9TaW5rQmFzZSAmb3V0ID0g
b2JqU2luaygpOwotICAgICAgICAgICAgb3V0IDw8ICJsYXlvdXQobG9jYXRpb24gPSAiIDw8IGxh
eW91dFF1YWxpZmllci5sb2NhdGlvbiA8PCAiKSAiOworICAgICAgICAgICAgb3V0IDw8IGxpc3RJ
dGVtUHJlZml4IDw8ICJsb2NhdGlvbiA9ICIgPDwgbGF5b3V0UXVhbGlmaWVyLmxvY2F0aW9uOwor
ICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHR5cGUuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxRnJh
Z21lbnRPdXQpCisgICAgeworICAgICAgICBpZiAobGF5b3V0UXVhbGlmaWVyLnl1diA9PSB0cnVl
KQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgbGlzdEl0ZW1QcmVmaXggPDwgInl1diI7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoSXNPcGFxdWVUeXBlKHR5cGUuZ2V0QmFzaWNU
eXBlKCkpKQorICAgIHsKKyAgICAgICAgaWYgKGxheW91dFF1YWxpZmllci5iaW5kaW5nID49IDAp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCBsaXN0SXRlbVByZWZpeCA8PCAiYmluZGlu
ZyA9ICIgPDwgbGF5b3V0UXVhbGlmaWVyLmJpbmRpbmc7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBpZiAoSXNJbWFnZSh0eXBlLmdldEJhc2ljVHlwZSgpKSkKKyAgICB7CisgICAgICAgIGlmIChs
YXlvdXRRdWFsaWZpZXIuaW1hZ2VJbnRlcm5hbEZvcm1hdCAhPSBFaWlmVW5zcGVjaWZpZWQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCh0eXBlLmdldFF1YWxpZmllcigpID09IEV2cVRl
bXBvcmFyeSB8fCB0eXBlLmdldFF1YWxpZmllcigpID09IEV2cVVuaWZvcm0pOworICAgICAgICAg
ICAgb3V0IDw8IGxpc3RJdGVtUHJlZml4CisgICAgICAgICAgICAgICAgPDwgZ2V0SW1hZ2VJbnRl
cm5hbEZvcm1hdFN0cmluZyhsYXlvdXRRdWFsaWZpZXIuaW1hZ2VJbnRlcm5hbEZvcm1hdCk7CiAg
ICAgICAgIH0KICAgICB9CisKKyAgICBvdXQgPDwgIikgIjsKK30KKworY29uc3QgY2hhciAqVE91
dHB1dEdMU0xCYXNlOjptYXBRdWFsaWZpZXJUb1N0cmluZyhUUXVhbGlmaWVyIHF1YWxpZmllcikK
K3sKKyAgICBpZiAoc2g6OklzR0xTTDQxME9yT2xkZXIobU91dHB1dCkgJiYgbVNoYWRlclZlcnNp
b24gPj0gMzAwICYmCisgICAgICAgIChtQ29tcGlsZU9wdGlvbnMgJiBTSF9SRU1PVkVfSU5WQVJJ
QU5UX0FORF9DRU5UUk9JRF9GT1JfRVNTTDMpICE9IDApCisgICAgeworICAgICAgICBzd2l0Y2gg
KHF1YWxpZmllcikKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVGhlIHJldHVybiBzdHJpbmcg
aXMgY29uc2lzdGVudCB3aXRoIHNoOjpnZXRRdWFsaWZpZXJTdHJpbmcoKSBmcm9tCisgICAgICAg
ICAgICAvLyBCYXNlVHlwZXMuaCBtaW51cyB0aGUgImNlbnRyb2lkIiBrZXl3b3JkLgorICAgICAg
ICAgICAgY2FzZSBFdnFDZW50cm9pZDoKKyAgICAgICAgICAgICAgICByZXR1cm4gIiI7CisgICAg
ICAgICAgICBjYXNlIEV2cUNlbnRyb2lkSW46CisgICAgICAgICAgICAgICAgcmV0dXJuICJzbW9v
dGggaW4iOworICAgICAgICAgICAgY2FzZSBFdnFDZW50cm9pZE91dDoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gInNtb290aCBvdXQiOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc2g6OklzR0xTTDEzME9yTmV3
ZXIobU91dHB1dCkpCisgICAgeworICAgICAgICBzd2l0Y2ggKHF1YWxpZmllcikKKyAgICAgICAg
eworICAgICAgICAgICAgY2FzZSBFdnFBdHRyaWJ1dGU6CisgICAgICAgICAgICAgICAgcmV0dXJu
ICJpbiI7CisgICAgICAgICAgICBjYXNlIEV2cVZhcnlpbmdJbjoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gImluIjsKKyAgICAgICAgICAgIGNhc2UgRXZxVmFyeWluZ091dDoKKyAgICAgICAgICAg
ICAgICByZXR1cm4gIm91dCI7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBzaDo6Z2V0UXVhbGlmaWVyU3Ry
aW5nKHF1YWxpZmllcik7CiB9CiAKIHZvaWQgVE91dHB1dEdMU0xCYXNlOjp3cml0ZVZhcmlhYmxl
VHlwZShjb25zdCBUVHlwZSAmdHlwZSkKIHsKLSAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBvYmpT
aW5rKCk7CisgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSB0eXBlLmdldFF1YWxpZmllcigpOwor
ICAgIFRJbmZvU2lua0Jhc2UgJm91dCAgID0gb2JqU2luaygpOwogICAgIGlmICh0eXBlLmlzSW52
YXJpYW50KCkpCiAgICAgewotICAgICAgICBvdXQgPDwgImludmFyaWFudCAiOworICAgICAgICB3
cml0ZUludmFyaWFudFF1YWxpZmllcih0eXBlKTsKICAgICB9CiAgICAgaWYgKHR5cGUuZ2V0QmFz
aWNUeXBlKCkgPT0gRWJ0SW50ZXJmYWNlQmxvY2spCiAgICAgewogICAgICAgICBUSW50ZXJmYWNl
QmxvY2sgKmludGVyZmFjZUJsb2NrID0gdHlwZS5nZXRJbnRlcmZhY2VCbG9jaygpOwogICAgICAg
ICBkZWNsYXJlSW50ZXJmYWNlQmxvY2tMYXlvdXQoaW50ZXJmYWNlQmxvY2spOwogICAgIH0KLSAg
ICBUUXVhbGlmaWVyIHF1YWxpZmllciA9IHR5cGUuZ2V0UXVhbGlmaWVyKCk7CiAgICAgaWYgKHF1
YWxpZmllciAhPSBFdnFUZW1wb3JhcnkgJiYgcXVhbGlmaWVyICE9IEV2cUdsb2JhbCkKICAgICB7
Ci0gICAgICAgIGlmIChJc0dMU0wxMzBPck5ld2VyKG1PdXRwdXQpKQorICAgICAgICBjb25zdCBj
aGFyICpxdWFsaWZpZXJTdHJpbmcgPSBtYXBRdWFsaWZpZXJUb1N0cmluZyhxdWFsaWZpZXIpOwor
ICAgICAgICBpZiAocXVhbGlmaWVyU3RyaW5nICYmIHF1YWxpZmllclN0cmluZ1swXSAhPSAnXDAn
KQogICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHF1YWxpZmllcikKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgY2FzZSBFdnFBdHRyaWJ1dGU6Ci0gICAgICAgICAgICAgICAgb3V0
IDw8ICJpbiAiOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEV2
cVZhcnlpbmdJbjoKLSAgICAgICAgICAgICAgICBvdXQgPDwgImluICI7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRXZxVmFyeWluZ091dDoKLSAgICAgICAgICAg
ICAgICBvdXQgPDwgIm91dCAiOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIG91dCA8PCB0eXBlLmdldFF1YWxpZmllclN0cmlu
ZygpIDw8ICIgIjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCB0eXBlLmdl
dFF1YWxpZmllclN0cmluZygpIDw8ICIgIjsKKyAgICAgICAgICAgIG91dCA8PCBxdWFsaWZpZXJT
dHJpbmcgPDwgIiAiOwogICAgICAgICB9CiAgICAgfQorCisgICAgY29uc3QgVE1lbW9yeVF1YWxp
ZmllciAmbWVtb3J5UXVhbGlmaWVyID0gdHlwZS5nZXRNZW1vcnlRdWFsaWZpZXIoKTsKKyAgICBp
ZiAobWVtb3J5UXVhbGlmaWVyLnJlYWRvbmx5KQorICAgIHsKKyAgICAgICAgQVNTRVJUKElzSW1h
Z2UodHlwZS5nZXRCYXNpY1R5cGUoKSkpOworICAgICAgICBvdXQgPDwgInJlYWRvbmx5ICI7Cisg
ICAgfQorCisgICAgaWYgKG1lbW9yeVF1YWxpZmllci53cml0ZW9ubHkpCisgICAgeworICAgICAg
ICBBU1NFUlQoSXNJbWFnZSh0eXBlLmdldEJhc2ljVHlwZSgpKSk7CisgICAgICAgIG91dCA8PCAi
d3JpdGVvbmx5ICI7CisgICAgfQorCisgICAgaWYgKG1lbW9yeVF1YWxpZmllci5jb2hlcmVudCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChJc0ltYWdlKHR5cGUuZ2V0QmFzaWNUeXBlKCkpKTsKKyAg
ICAgICAgb3V0IDw8ICJjb2hlcmVudCAiOworICAgIH0KKworICAgIGlmIChtZW1vcnlRdWFsaWZp
ZXIucmVzdHJpY3RRdWFsaWZpZXIpCisgICAgeworICAgICAgICBBU1NFUlQoSXNJbWFnZSh0eXBl
LmdldEJhc2ljVHlwZSgpKSk7CisgICAgICAgIG91dCA8PCAicmVzdHJpY3QgIjsKKyAgICB9CisK
KyAgICBpZiAobWVtb3J5UXVhbGlmaWVyLnZvbGF0aWxlUXVhbGlmaWVyKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKElzSW1hZ2UodHlwZS5nZXRCYXNpY1R5cGUoKSkpOworICAgICAgICBvdXQgPDwg
InZvbGF0aWxlICI7CisgICAgfQorCiAgICAgLy8gRGVjbGFyZSB0aGUgc3RydWN0IGlmIHdlIGhh
dmUgbm90IGRvbmUgc28gYWxyZWFkeS4KICAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBF
YnRTdHJ1Y3QgJiYgIXN0cnVjdERlY2xhcmVkKHR5cGUuZ2V0U3RydWN0KCkpKQogICAgIHsKQEAg
LTE2OSw4ICszNjUsNyBAQCB2b2lkIFRPdXRwdXRHTFNMQmFzZTo6d3JpdGVWYXJpYWJsZVR5cGUo
Y29uc3QgVFR5cGUgJnR5cGUpCiB2b2lkIFRPdXRwdXRHTFNMQmFzZTo6d3JpdGVGdW5jdGlvblBh
cmFtZXRlcnMoY29uc3QgVEludGVybVNlcXVlbmNlICZhcmdzKQogewogICAgIFRJbmZvU2lua0Jh
c2UgJm91dCA9IG9ialNpbmsoKTsKLSAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IGFyZ3MuYmVnaW4oKTsKLSAgICAgICAgIGl0ZXIgIT0gYXJncy5lbmQoKTsg
KytpdGVyKQorICAgIGZvciAoVEludGVybVNlcXVlbmNlOjpjb25zdF9pdGVyYXRvciBpdGVyID0g
YXJncy5iZWdpbigpOyBpdGVyICE9IGFyZ3MuZW5kKCk7ICsraXRlcikKICAgICB7CiAgICAgICAg
IGNvbnN0IFRJbnRlcm1TeW1ib2wgKmFyZyA9ICgqaXRlciktPmdldEFzU3ltYm9sTm9kZSgpOwog
ICAgICAgICBBU1NFUlQoYXJnICE9IE5VTEwpOwpAQCAtMTc4LDkgKzM3Myw4IEBAIHZvaWQgVE91
dHB1dEdMU0xCYXNlOjp3cml0ZUZ1bmN0aW9uUGFyYW1ldGVycyhjb25zdCBUSW50ZXJtU2VxdWVu
Y2UgJmFyZ3MpCiAgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlID0gYXJnLT5nZXRUeXBlKCk7CiAg
ICAgICAgIHdyaXRlVmFyaWFibGVUeXBlKHR5cGUpOwogCi0gICAgICAgIGNvbnN0IFRTdHJpbmcg
Jm5hbWUgPSBhcmctPmdldFN5bWJvbCgpOwotICAgICAgICBpZiAoIW5hbWUuZW1wdHkoKSkKLSAg
ICAgICAgICAgIG91dCA8PCAiICIgPDwgaGFzaE5hbWUobmFtZSk7CisgICAgICAgIGlmICghYXJn
LT5nZXROYW1lKCkuZ2V0U3RyaW5nKCkuZW1wdHkoKSkKKyAgICAgICAgICAgIG91dCA8PCAiICIg
PDwgaGFzaE5hbWUoYXJnLT5nZXROYW1lKCkpOwogICAgICAgICBpZiAodHlwZS5pc0FycmF5KCkp
CiAgICAgICAgICAgICBvdXQgPDwgYXJyYXlCcmFja2V0cyh0eXBlKTsKIApAQCAtMTkwLDE1ICsz
ODQsMTUgQEAgdm9pZCBUT3V0cHV0R0xTTEJhc2U6OndyaXRlRnVuY3Rpb25QYXJhbWV0ZXJzKGNv
bnN0IFRJbnRlcm1TZXF1ZW5jZSAmYXJncykKICAgICB9CiB9CiAKLWNvbnN0IFRDb25zdGFudFVu
aW9uICpUT3V0cHV0R0xTTEJhc2U6OndyaXRlQ29uc3RhbnRVbmlvbigKLSAgICBjb25zdCBUVHlw
ZSAmdHlwZSwgY29uc3QgVENvbnN0YW50VW5pb24gKnBDb25zdFVuaW9uKQorY29uc3QgVENvbnN0
YW50VW5pb24gKlRPdXRwdXRHTFNMQmFzZTo6d3JpdGVDb25zdGFudFVuaW9uKGNvbnN0IFRUeXBl
ICZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICpwQ29uc3RVbmlvbikKIHsKICAgICBUSW5m
b1NpbmtCYXNlICZvdXQgPSBvYmpTaW5rKCk7CiAKICAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUo
KSA9PSBFYnRTdHJ1Y3QpCiAgICAgewogICAgICAgICBjb25zdCBUU3RydWN0dXJlICpzdHJ1Y3R1
cmUgPSB0eXBlLmdldFN0cnVjdCgpOwotICAgICAgICBvdXQgPDwgaGFzaE5hbWUoc3RydWN0dXJl
LT5uYW1lKCkpIDw8ICIoIjsKKyAgICAgICAgb3V0IDw8IGhhc2hOYW1lKFROYW1lKHN0cnVjdHVy
ZS0+bmFtZSgpKSkgPDwgIigiOwogCiAgICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9
IHN0cnVjdHVyZS0+ZmllbGRzKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmll
bGRzLnNpemUoKTsgKytpKQpAQCAtMjEzLDcgKzQwNyw3IEBAIGNvbnN0IFRDb25zdGFudFVuaW9u
ICpUT3V0cHV0R0xTTEJhc2U6OndyaXRlQ29uc3RhbnRVbmlvbigKICAgICB9CiAgICAgZWxzZQog
ICAgIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKKyAgICAg
ICAgc2l6ZV90IHNpemUgICAgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKICAgICAgICAgYm9vbCB3
cml0ZVR5cGUgPSBzaXplID4gMTsKICAgICAgICAgaWYgKHdyaXRlVHlwZSkKICAgICAgICAgICAg
IG91dCA8PCBnZXRUeXBlTmFtZSh0eXBlKSA8PCAiKCI7CkBAIC0yMjEsMTkgKzQxNSwyMyBAQCBj
b25zdCBUQ29uc3RhbnRVbmlvbiAqVE91dHB1dEdMU0xCYXNlOjp3cml0ZUNvbnN0YW50VW5pb24o
CiAgICAgICAgIHsKICAgICAgICAgICAgIHN3aXRjaCAocENvbnN0VW5pb24tPmdldFR5cGUoKSkK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAg
ICAgICBvdXQgPDwgc3RkOjptaW4oRkxUX01BWCwgc3RkOjptYXgoLUZMVF9NQVgsIHBDb25zdFVu
aW9uLT5nZXRGQ29uc3QoKSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICBjYXNlIEVidEludDoKLSAgICAgICAgICAgICAgICBvdXQgPDwgcENvbnN0VW5pb24tPmdldElD
b25zdCgpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVidFVJ
bnQ6Ci0gICAgICAgICAgICAgICAgb3V0IDw8IHBDb25zdFVuaW9uLT5nZXRVQ29uc3QoKSA8PCAi
dSI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoK
LSAgICAgICAgICAgICAgICBvdXQgPDwgcENvbnN0VW5pb24tPmdldEJDb25zdCgpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICAgICAgICAgIHdyaXRl
RmxvYXQob3V0LCBwQ29uc3RVbmlvbi0+Z2V0RkNvbnN0KCkpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICAg
ICAgb3V0IDw8IHBDb25zdFVuaW9uLT5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAgICAg
ICBvdXQgPDwgcENvbnN0VW5pb24tPmdldFVDb25zdCgpIDw8ICJ1IjsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBFYnRCb29sOgorICAgICAgICAgICAg
ICAgICAgICBvdXQgPDwgcENvbnN0VW5pb24tPmdldEJDb25zdCgpOworICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEVidFl1dkNzY1N0YW5kYXJkRVhUOgor
ICAgICAgICAgICAgICAgICAgICBvdXQgPDwgZ2V0WXV2Q3NjU3RhbmRhcmRFWFRTdHJpbmcocENv
bnN0VW5pb24tPmdldFl1dkNzY1N0YW5kYXJkRVhUQ29uc3QoKSk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoaSAhPSBzaXpl
IC0gMSkKICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsKQEAgLTI2OSwxMCArNDY3LDcgQEAg
dm9pZCBUT3V0cHV0R0xTTEJhc2U6OndyaXRlQ29uc3RydWN0b3JUcmlwbGV0KFZpc2l0IHZpc2l0
LCBjb25zdCBUVHlwZSAmdHlwZSkKIHZvaWQgVE91dHB1dEdMU0xCYXNlOjp2aXNpdFN5bWJvbChU
SW50ZXJtU3ltYm9sICpub2RlKQogewogICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG9ialNpbmso
KTsKLSAgICBpZiAobUxvb3BVbnJvbGxTdGFjay5uZWVkc1RvUmVwbGFjZVN5bWJvbFdpdGhWYWx1
ZShub2RlKSkKLSAgICAgICAgb3V0IDw8IG1Mb29wVW5yb2xsU3RhY2suZ2V0TG9vcEluZGV4VmFs
dWUobm9kZSk7Ci0gICAgZWxzZQotICAgICAgICBvdXQgPDwgaGFzaFZhcmlhYmxlTmFtZShub2Rl
LT5nZXRTeW1ib2woKSk7CisgICAgb3V0IDw8IGhhc2hWYXJpYWJsZU5hbWUobm9kZS0+Z2V0TmFt
ZSgpKTsKIAogICAgIGlmIChtRGVjbGFyaW5nVmFyaWFibGVzICYmIG5vZGUtPmdldFR5cGUoKS5p
c0FycmF5KCkpCiAgICAgICAgIG91dCA8PCBhcnJheUJyYWNrZXRzKG5vZGUtPmdldFR5cGUoKSk7
CkBAIC00MDUsNyArNjAwLDcgQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QmluYXJ5KFZp
c2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2RlKQogCiAgICAgICAgICAgICAgICAgVFN0cmlu
ZyBmaWVsZE5hbWUgPSBmaWVsZC0+bmFtZSgpOwogICAgICAgICAgICAgICAgIGlmICghbVN5bWJv
bFRhYmxlLmZpbmRCdWlsdEluKHN0cnVjdHVyZS0+bmFtZSgpLCBtU2hhZGVyVmVyc2lvbikpCi0g
ICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZSA9IGhhc2hOYW1lKGZpZWxkTmFtZSk7CisgICAg
ICAgICAgICAgICAgICAgIGZpZWxkTmFtZSA9IGhhc2hOYW1lKFROYW1lKGZpZWxkTmFtZSkpOwog
CiAgICAgICAgICAgICAgICAgb3V0IDw8IGZpZWxkTmFtZTsKICAgICAgICAgICAgICAgICB2aXNp
dENoaWxkcmVuID0gZmFsc2U7CkBAIC00MjIsNyArNjE3LDcgQEAgYm9vbCBUT3V0cHV0R0xTTEJh
c2U6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2RlKQogCiAgICAg
ICAgICAgICAgICAgVFN0cmluZyBmaWVsZE5hbWUgPSBmaWVsZC0+bmFtZSgpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVCghbVN5bWJvbFRhYmxlLmZpbmRCdWlsdEluKGludGVyZmFjZUJsb2NrLT5u
YW1lKCksIG1TaGFkZXJWZXJzaW9uKSk7Ci0gICAgICAgICAgICAgICAgZmllbGROYW1lID0gaGFz
aE5hbWUoZmllbGROYW1lKTsKKyAgICAgICAgICAgICAgICBmaWVsZE5hbWUgPSBoYXNoTmFtZShU
TmFtZShmaWVsZE5hbWUpKTsKIAogICAgICAgICAgICAgICAgIG91dCA8PCBmaWVsZE5hbWU7CiAg
ICAgICAgICAgICAgICAgdmlzaXRDaGlsZHJlbiA9IGZhbHNlOwpAQCAtNTExLDE4MyArNzA2LDk5
IEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJt
VW5hcnkgKm5vZGUpCiAKICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCiAgICAgewotICAgICAg
Y2FzZSBFT3BOZWdhdGl2ZTogcHJlU3RyaW5nID0gIigtIjsgYnJlYWs7Ci0gICAgICBjYXNlIEVP
cFBvc2l0aXZlOiBwcmVTdHJpbmcgPSAiKCsiOyBicmVhazsKLSAgICAgIGNhc2UgRU9wVmVjdG9y
TG9naWNhbE5vdDogcHJlU3RyaW5nID0gIm5vdCgiOyBicmVhazsKLSAgICAgIGNhc2UgRU9wTG9n
aWNhbE5vdDogcHJlU3RyaW5nID0gIighIjsgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEJpdHdpc2VO
b3Q6IHByZVN0cmluZyA9ICIofiI7IGJyZWFrOwotCi0gICAgICBjYXNlIEVPcFBvc3RJbmNyZW1l
bnQ6IHByZVN0cmluZyA9ICIoIjsgcG9zdFN0cmluZyA9ICIrKykiOyBicmVhazsKLSAgICAgIGNh
c2UgRU9wUG9zdERlY3JlbWVudDogcHJlU3RyaW5nID0gIigiOyBwb3N0U3RyaW5nID0gIi0tKSI7
IGJyZWFrOwotICAgICAgY2FzZSBFT3BQcmVJbmNyZW1lbnQ6IHByZVN0cmluZyA9ICIoKysiOyBi
cmVhazsKLSAgICAgIGNhc2UgRU9wUHJlRGVjcmVtZW50OiBwcmVTdHJpbmcgPSAiKC0tIjsgYnJl
YWs7Ci0KLSAgICAgIGNhc2UgRU9wUmFkaWFuczoKLSAgICAgICAgcHJlU3RyaW5nID0gInJhZGlh
bnMoIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcERlZ3JlZXM6Ci0gICAgICAgIHBy
ZVN0cmluZyA9ICJkZWdyZWVzKCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BTaW46
Ci0gICAgICAgIHByZVN0cmluZyA9ICJzaW4oIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IEVPcENvczoKLSAgICAgICAgcHJlU3RyaW5nID0gImNvcygiOwotICAgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgRU9wVGFuOgotICAgICAgICBwcmVTdHJpbmcgPSAidGFuKCI7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFT3BBc2luOgotICAgICAgICBwcmVTdHJpbmcgPSAiYXNpbigiOwot
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQWNvczoKLSAgICAgICAgcHJlU3RyaW5nID0g
ImFjb3MoIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEF0YW46Ci0gICAgICAgIHBy
ZVN0cmluZyA9ICJhdGFuKCI7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcFNpbmg6
Ci0gICAgICAgIHByZVN0cmluZyA9ICJzaW5oKCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BDb3NoOgotICAgICAgICBwcmVTdHJpbmcgPSAiY29zaCgiOwotICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgRU9wVGFuaDoKLSAgICAgICAgcHJlU3RyaW5nID0gInRhbmgoIjsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEFzaW5oOgotICAgICAgICBwcmVTdHJpbmcgPSAiYXNp
bmgoIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEFjb3NoOgotICAgICAgICBwcmVT
dHJpbmcgPSAiYWNvc2goIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEF0YW5oOgot
ICAgICAgICBwcmVTdHJpbmcgPSAiYXRhbmgoIjsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNh
c2UgRU9wRXhwOgotICAgICAgICBwcmVTdHJpbmcgPSAiZXhwKCI7Ci0gICAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSBFT3BMb2c6Ci0gICAgICAgIHByZVN0cmluZyA9ICJsb2coIjsKLSAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIEVPcEV4cDI6Ci0gICAgICAgIHByZVN0cmluZyA9ICJleHAyKCI7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BMb2cyOgotICAgICAgICBwcmVTdHJpbmcg
PSAibG9nMigiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wU3FydDoKLSAgICAgICAg
cHJlU3RyaW5nID0gInNxcnQoIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEludmVy
c2VTcXJ0OgotICAgICAgICBwcmVTdHJpbmcgPSAiaW52ZXJzZXNxcnQoIjsKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICAgIGNhc2UgRU9wQWJzOgotICAgICAgICBwcmVTdHJpbmcgPSAiYWJzKCI7Ci0g
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BTaWduOgotICAgICAgICBwcmVTdHJpbmcgPSAi
c2lnbigiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wRmxvb3I6Ci0gICAgICAgIHBy
ZVN0cmluZyA9ICJmbG9vcigiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wVHJ1bmM6
Ci0gICAgICAgIHByZVN0cmluZyA9ICJ0cnVuYygiOwotICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgRU9wUm91bmQ6Ci0gICAgICAgIHByZVN0cmluZyA9ICJyb3VuZCgiOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRU9wUm91bmRFdmVuOgotICAgICAgICBwcmVTdHJpbmcgPSAicm91bmRF
dmVuKCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BDZWlsOgotICAgICAgICBwcmVT
dHJpbmcgPSAiY2VpbCgiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wRnJhY3Q6Ci0g
ICAgICAgIHByZVN0cmluZyA9ICJmcmFjdCgiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
RU9wSXNOYW46Ci0gICAgICAgIHByZVN0cmluZyA9ICJpc25hbigiOwotICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgRU9wSXNJbmY6Ci0gICAgICAgIHByZVN0cmluZyA9ICJpc2luZigiOwotICAg
ICAgICBicmVhazsKLQotICAgICAgY2FzZSBFT3BGbG9hdEJpdHNUb0ludDoKLSAgICAgICAgcHJl
U3RyaW5nID0gImZsb2F0Qml0c1RvSW50KCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBF
T3BGbG9hdEJpdHNUb1VpbnQ6Ci0gICAgICAgIHByZVN0cmluZyA9ICJmbG9hdEJpdHNUb1VpbnQo
IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEludEJpdHNUb0Zsb2F0OgotICAgICAg
ICBwcmVTdHJpbmcgPSAiaW50Qml0c1RvRmxvYXQoIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEVPcFVpbnRCaXRzVG9GbG9hdDoKLSAgICAgICAgcHJlU3RyaW5nID0gInVpbnRCaXRzVG9G
bG9hdCgiOwotICAgICAgICBicmVhazsKLQotICAgICAgY2FzZSBFT3BQYWNrU25vcm0yeDE2Ogot
ICAgICAgICBwcmVTdHJpbmcgPSAicGFja1Nub3JtMngxNigiOwotICAgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgRU9wUGFja1Vub3JtMngxNjoKLSAgICAgICAgcHJlU3RyaW5nID0gInBhY2tVbm9y
bTJ4MTYoIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFBhY2tIYWxmMngxNjoKLSAg
ICAgICAgcHJlU3RyaW5nID0gInBhY2tIYWxmMngxNigiOwotICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgRU9wVW5wYWNrU25vcm0yeDE2OgotICAgICAgICBwcmVTdHJpbmcgPSAidW5wYWNrU25v
cm0yeDE2KCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BVbnBhY2tVbm9ybTJ4MTY6
Ci0gICAgICAgIHByZVN0cmluZyA9ICJ1bnBhY2tVbm9ybTJ4MTYoIjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEVPcFVucGFja0hhbGYyeDE2OgotICAgICAgICBwcmVTdHJpbmcgPSAidW5w
YWNrSGFsZjJ4MTYoIjsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRU9wTGVuZ3RoOgot
ICAgICAgICBwcmVTdHJpbmcgPSAibGVuZ3RoKCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BOb3JtYWxpemU6Ci0gICAgICAgIHByZVN0cmluZyA9ICJub3JtYWxpemUoIjsKLSAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRU9wREZkeDoKLSAgICAgICAgcHJlU3RyaW5nID0gImRG
ZHgoIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcERGZHk6Ci0gICAgICAgIHByZVN0
cmluZyA9ICJkRmR5KCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BGd2lkdGg6Ci0g
ICAgICAgIHByZVN0cmluZyA9ICJmd2lkdGgoIjsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNh
c2UgRU9wVHJhbnNwb3NlOgotICAgICAgICBwcmVTdHJpbmcgPSAidHJhbnNwb3NlKCI7Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BEZXRlcm1pbmFudDoKLSAgICAgICAgcHJlU3RyaW5n
ID0gImRldGVybWluYW50KCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BJbnZlcnNl
OgotICAgICAgICBwcmVTdHJpbmcgPSAiaW52ZXJzZSgiOwotICAgICAgICBicmVhazsKLQotICAg
ICAgY2FzZSBFT3BBbnk6Ci0gICAgICAgIHByZVN0cmluZyA9ICJhbnkoIjsKLSAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcEFsbDoKLSAgICAgICAgcHJlU3RyaW5nID0gImFsbCgiOwotICAg
ICAgICBicmVhazsKLQotICAgICAgZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAg
ICB9Ci0KLSAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQgJiYgbm9kZS0+Z2V0VXNlRW11bGF0ZWRG
dW5jdGlvbigpKQotICAgICAgICBwcmVTdHJpbmcgPSBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6
R2V0RW11bGF0ZWRGdW5jdGlvbk5hbWUocHJlU3RyaW5nKTsKKyAgICAgICAgY2FzZSBFT3BOZWdh
dGl2ZToKKyAgICAgICAgICAgIHByZVN0cmluZyA9ICIoLSI7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFT3BQb3NpdGl2ZToKKyAgICAgICAgICAgIHByZVN0cmluZyA9ICIoKyI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BMb2dpY2FsTm90OgorICAgICAg
ICAgICAgcHJlU3RyaW5nID0gIighIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEVPcEJpdHdpc2VOb3Q6CisgICAgICAgICAgICBwcmVTdHJpbmcgPSAiKH4iOworICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFT3BQb3N0SW5jcmVtZW50OgorICAgICAgICAgICAg
cHJlU3RyaW5nICA9ICIoIjsKKyAgICAgICAgICAgIHBvc3RTdHJpbmcgPSAiKyspIjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcFBvc3REZWNyZW1lbnQ6CisgICAgICAgICAg
ICBwcmVTdHJpbmcgID0gIigiOworICAgICAgICAgICAgcG9zdFN0cmluZyA9ICItLSkiOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wUHJlSW5jcmVtZW50OgorICAgICAgICAg
ICAgcHJlU3RyaW5nID0gIigrKyI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBF
T3BQcmVEZWNyZW1lbnQ6CisgICAgICAgICAgICBwcmVTdHJpbmcgPSAiKC0tIjsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRU9wUmFkaWFuczoKKyAgICAgICAgY2FzZSBFT3BE
ZWdyZWVzOgorICAgICAgICBjYXNlIEVPcFNpbjoKKyAgICAgICAgY2FzZSBFT3BDb3M6CisgICAg
ICAgIGNhc2UgRU9wVGFuOgorICAgICAgICBjYXNlIEVPcEFzaW46CisgICAgICAgIGNhc2UgRU9w
QWNvczoKKyAgICAgICAgY2FzZSBFT3BBdGFuOgorICAgICAgICBjYXNlIEVPcFNpbmg6CisgICAg
ICAgIGNhc2UgRU9wQ29zaDoKKyAgICAgICAgY2FzZSBFT3BUYW5oOgorICAgICAgICBjYXNlIEVP
cEFzaW5oOgorICAgICAgICBjYXNlIEVPcEFjb3NoOgorICAgICAgICBjYXNlIEVPcEF0YW5oOgor
ICAgICAgICBjYXNlIEVPcEV4cDoKKyAgICAgICAgY2FzZSBFT3BMb2c6CisgICAgICAgIGNhc2Ug
RU9wRXhwMjoKKyAgICAgICAgY2FzZSBFT3BMb2cyOgorICAgICAgICBjYXNlIEVPcFNxcnQ6Cisg
ICAgICAgIGNhc2UgRU9wSW52ZXJzZVNxcnQ6CisgICAgICAgIGNhc2UgRU9wQWJzOgorICAgICAg
ICBjYXNlIEVPcFNpZ246CisgICAgICAgIGNhc2UgRU9wRmxvb3I6CisgICAgICAgIGNhc2UgRU9w
VHJ1bmM6CisgICAgICAgIGNhc2UgRU9wUm91bmQ6CisgICAgICAgIGNhc2UgRU9wUm91bmRFdmVu
OgorICAgICAgICBjYXNlIEVPcENlaWw6CisgICAgICAgIGNhc2UgRU9wRnJhY3Q6CisgICAgICAg
IGNhc2UgRU9wSXNOYW46CisgICAgICAgIGNhc2UgRU9wSXNJbmY6CisgICAgICAgIGNhc2UgRU9w
RmxvYXRCaXRzVG9JbnQ6CisgICAgICAgIGNhc2UgRU9wRmxvYXRCaXRzVG9VaW50OgorICAgICAg
ICBjYXNlIEVPcEludEJpdHNUb0Zsb2F0OgorICAgICAgICBjYXNlIEVPcFVpbnRCaXRzVG9GbG9h
dDoKKyAgICAgICAgY2FzZSBFT3BQYWNrU25vcm0yeDE2OgorICAgICAgICBjYXNlIEVPcFBhY2tV
bm9ybTJ4MTY6CisgICAgICAgIGNhc2UgRU9wUGFja0hhbGYyeDE2OgorICAgICAgICBjYXNlIEVP
cFVucGFja1Nub3JtMngxNjoKKyAgICAgICAgY2FzZSBFT3BVbnBhY2tVbm9ybTJ4MTY6CisgICAg
ICAgIGNhc2UgRU9wVW5wYWNrSGFsZjJ4MTY6CisgICAgICAgIGNhc2UgRU9wUGFja1Vub3JtNHg4
OgorICAgICAgICBjYXNlIEVPcFBhY2tTbm9ybTR4ODoKKyAgICAgICAgY2FzZSBFT3BVbnBhY2tV
bm9ybTR4ODoKKyAgICAgICAgY2FzZSBFT3BVbnBhY2tTbm9ybTR4ODoKKyAgICAgICAgY2FzZSBF
T3BMZW5ndGg6CisgICAgICAgIGNhc2UgRU9wTm9ybWFsaXplOgorICAgICAgICBjYXNlIEVPcERG
ZHg6CisgICAgICAgIGNhc2UgRU9wREZkeToKKyAgICAgICAgY2FzZSBFT3BGd2lkdGg6CisgICAg
ICAgIGNhc2UgRU9wVHJhbnNwb3NlOgorICAgICAgICBjYXNlIEVPcERldGVybWluYW50OgorICAg
ICAgICBjYXNlIEVPcEludmVyc2U6CisgICAgICAgIGNhc2UgRU9wQW55OgorICAgICAgICBjYXNl
IEVPcEFsbDoKKyAgICAgICAgY2FzZSBFT3BMb2dpY2FsTm90Q29tcG9uZW50V2lzZToKKyAgICAg
ICAgY2FzZSBFT3BCaXRmaWVsZFJldmVyc2U6CisgICAgICAgIGNhc2UgRU9wQml0Q291bnQ6Cisg
ICAgICAgIGNhc2UgRU9wRmluZExTQjoKKyAgICAgICAgY2FzZSBFT3BGaW5kTVNCOgorICAgICAg
ICAgICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZpc2l0LCBub2RlLT5nZXRPcCgpLCBu
b2RlLT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KKwog
ICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgcHJlU3RyaW5nLmNfc3RyKCksIE5VTEwsIHBvc3RTdHJp
bmcuY19zdHIoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTcxOCw3ICs4MjksNiBAQCBib29s
IFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRJZkVsc2UoVmlzaXQgdmlzaXQsIFRJbnRlcm1JZkVsc2Ug
Km5vZGUpCiAgICAgbm9kZS0+Z2V0Q29uZGl0aW9uKCktPnRyYXZlcnNlKHRoaXMpOwogICAgIG91
dCA8PCAiKVxuIjsKIAotICAgIGluY3JlbWVudERlcHRoKG5vZGUpOwogICAgIHZpc2l0Q29kZUJs
b2NrKG5vZGUtPmdldFRydWVCbG9jaygpKTsKIAogICAgIGlmIChub2RlLT5nZXRGYWxzZUJsb2Nr
KCkpCkBAIC03MjYsNyArODM2LDYgQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0SWZFbHNl
KFZpc2l0IHZpc2l0LCBUSW50ZXJtSWZFbHNlICpub2RlKQogICAgICAgICBvdXQgPDwgImVsc2Vc
biI7CiAgICAgICAgIHZpc2l0Q29kZUJsb2NrKG5vZGUtPmdldEZhbHNlQmxvY2soKSk7CiAgICAg
fQotICAgIGRlY3JlbWVudERlcHRoKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCkBAIC03Njks
NyArODc4LDYgQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QmxvY2soVmlzaXQgdmlzaXQs
IFRJbnRlcm1CbG9jayAqbm9kZSkKICAgICAgICAgb3V0IDw8ICJ7XG4iOwogICAgIH0KIAotICAg
IGluY3JlbWVudERlcHRoKG5vZGUpOwogICAgIGZvciAoVEludGVybVNlcXVlbmNlOjpjb25zdF9p
dGVyYXRvciBpdGVyID0gbm9kZS0+Z2V0U2VxdWVuY2UoKS0+YmVnaW4oKTsKICAgICAgICAgIGl0
ZXIgIT0gbm9kZS0+Z2V0U2VxdWVuY2UoKS0+ZW5kKCk7ICsraXRlcikKICAgICB7CkBAIC03ODAs
NyArODg4LDYgQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QmxvY2soVmlzaXQgdmlzaXQs
IFRJbnRlcm1CbG9jayAqbm9kZSkKICAgICAgICAgaWYgKGlzU2luZ2xlU3RhdGVtZW50KGN1ck5v
ZGUpKQogICAgICAgICAgICAgb3V0IDw8ICI7XG4iOwogICAgIH0KLSAgICBkZWNyZW1lbnREZXB0
aCgpOwogCiAgICAgLy8gU2NvcGUgdGhlIGJsb2NrcyBleGNlcHQgd2hlbiBhdCB0aGUgZ2xvYmFs
IHNjb3BlLgogICAgIGlmIChtRGVwdGggPiAwKQpAQCAtNzkyLDI3MCArODk5LDE5MyBAQCBib29s
IFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRCbG9jayhWaXNpdCB2aXNpdCwgVEludGVybUJsb2NrICpu
b2RlKQogCiBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRGdW5jdGlvbkRlZmluaXRpb24oVmlz
aXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUpCiB7Ci0gICAgVEluZm9T
aW5rQmFzZSAmb3V0ID0gb2JqU2luaygpOworICAgIFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAq
cHJvdG90eXBlID0gbm9kZS0+Z2V0RnVuY3Rpb25Qcm90b3R5cGUoKTsKKyAgICBwcm90b3R5cGUt
PnRyYXZlcnNlKHRoaXMpOworICAgIHZpc2l0Q29kZUJsb2NrKG5vZGUtPmdldEJvZHkoKSk7CisK
KyAgICAvLyBGdWxseSBwcm9jZXNzZWQ7IG5vIG5lZWQgdG8gdmlzaXQgY2hpbGRyZW4uCisgICAg
cmV0dXJuIGZhbHNlOworfQogCitib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRJbnZhcmlhbnRE
ZWNsYXJhdGlvbihWaXNpdCB2aXNpdCwgVEludGVybUludmFyaWFudERlY2xhcmF0aW9uICpub2Rl
KQoreworICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG9ialNpbmsoKTsKICAgICBBU1NFUlQodmlz
aXQgPT0gUHJlVmlzaXQpOwotICAgIHsKLSAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUgPSBub2Rl
LT5nZXRUeXBlKCk7Ci0gICAgICAgIHdyaXRlVmFyaWFibGVUeXBlKHR5cGUpOwotICAgICAgICBp
ZiAodHlwZS5pc0FycmF5KCkpCi0gICAgICAgICAgICBvdXQgPDwgYXJyYXlCcmFja2V0cyh0eXBl
KTsKLSAgICB9CisgICAgY29uc3QgVEludGVybVN5bWJvbCAqc3ltYm9sID0gbm9kZS0+Z2V0U3lt
Ym9sKCk7CisgICAgb3V0IDw8ICJpbnZhcmlhbnQgIiA8PCBoYXNoVmFyaWFibGVOYW1lKHN5bWJv
bC0+Z2V0TmFtZSgpKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CiAKLSAgICBvdXQgPDwgIiAiIDw8
IGhhc2hGdW5jdGlvbk5hbWVJZk5lZWRlZChub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+
Z2V0TmFtZU9iaigpKTsKK2Jvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdEZ1bmN0aW9uUHJvdG90
eXBlKFZpc2l0IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKm5vZGUpCit7CisgICAg
VEluZm9TaW5rQmFzZSAmb3V0ID0gb2JqU2luaygpOworICAgIEFTU0VSVCh2aXNpdCA9PSBQcmVW
aXNpdCk7CiAKLSAgICBpbmNyZW1lbnREZXB0aChub2RlKTsKKyAgICBjb25zdCBUVHlwZSAmdHlw
ZSA9IG5vZGUtPmdldFR5cGUoKTsKKyAgICB3cml0ZVZhcmlhYmxlVHlwZSh0eXBlKTsKKyAgICBp
ZiAodHlwZS5pc0FycmF5KCkpCisgICAgICAgIG91dCA8PCBhcnJheUJyYWNrZXRzKHR5cGUpOwog
Ci0gICAgLy8gVHJhdmVyc2UgZnVuY3Rpb24gcGFyYW1ldGVycy4KLSAgICBUSW50ZXJtQWdncmVn
YXRlICpwYXJhbXMgPSBub2RlLT5nZXRGdW5jdGlvblBhcmFtZXRlcnMoKS0+Z2V0QXNBZ2dyZWdh
dGUoKTsKLSAgICBBU1NFUlQocGFyYW1zLT5nZXRPcCgpID09IEVPcFBhcmFtZXRlcnMpOwotICAg
IHBhcmFtcy0+dHJhdmVyc2UodGhpcyk7CisgICAgb3V0IDw8ICIgIiA8PCBoYXNoRnVuY3Rpb25O
YW1lSWZOZWVkZWQoKm5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpKTsKIAotICAgIC8vIFRy
YXZlcnNlIGZ1bmN0aW9uIGJvZHkuCi0gICAgdmlzaXRDb2RlQmxvY2sobm9kZS0+Z2V0Qm9keSgp
KTsKLSAgICBkZWNyZW1lbnREZXB0aCgpOworICAgIG91dCA8PCAiKCI7CisgICAgd3JpdGVGdW5j
dGlvblBhcmFtZXRlcnMoKihub2RlLT5nZXRTZXF1ZW5jZSgpKSk7CisgICAgb3V0IDw8ICIpIjsK
IAotICAgIC8vIEZ1bGx5IHByb2Nlc3NlZDsgbm8gbmVlZCB0byB2aXNpdCBjaGlsZHJlbi4KICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdEFnZ3JlZ2F0
ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKIHsKLSAgICBib29sIHZpc2l0
Q2hpbGRyZW4gPSB0cnVlOwotICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG9ialNpbmsoKTsKLSAg
ICBib29sIHVzZUVtdWxhdGVkRnVuY3Rpb24gPSAodmlzaXQgPT0gUHJlVmlzaXQgJiYgbm9kZS0+
Z2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpKTsKKyAgICBib29sIHZpc2l0Q2hpbGRyZW4gICAgICAg
PSB0cnVlOworICAgIFRJbmZvU2lua0Jhc2UgJm91dCAgICAgICA9IG9ialNpbmsoKTsKICAgICBz
d2l0Y2ggKG5vZGUtPmdldE9wKCkpCiAgICAgewotICAgICAgY2FzZSBFT3BQcm90b3R5cGU6Ci0g
ICAgICAgIC8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLgotICAgICAgICBBU1NFUlQodmlzaXQgPT0g
UHJlVmlzaXQpOwotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSA9IG5v
ZGUtPmdldFR5cGUoKTsKLSAgICAgICAgICAgIHdyaXRlVmFyaWFibGVUeXBlKHR5cGUpOwotICAg
ICAgICAgICAgaWYgKHR5cGUuaXNBcnJheSgpKQotICAgICAgICAgICAgICAgIG91dCA8PCBhcnJh
eUJyYWNrZXRzKHR5cGUpOwotICAgICAgICB9CisgICAgICAgIGNhc2UgRU9wQ2FsbEZ1bmN0aW9u
SW5BU1Q6CisgICAgICAgIGNhc2UgRU9wQ2FsbEludGVybmFsUmF3RnVuY3Rpb246CisgICAgICAg
IGNhc2UgRU9wQ2FsbEJ1aWx0SW5GdW5jdGlvbjoKKyAgICAgICAgICAgIC8vIEZ1bmN0aW9uIGNh
bGwuCisgICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wQ2FsbEJ1aWx0SW5GdW5jdGlv
bikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG91dCA8PCB0cmFuc2xh
dGVUZXh0dXJlRnVuY3Rpb24obm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWUo
KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIG91dCA8PCBoYXNoRnVuY3Rpb25OYW1lSWZOZWVk
ZWQoKm5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpKTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgb3V0IDw8ICIoIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs
c2UgaWYgKHZpc2l0ID09IEluVmlzaXQpCisgICAgICAgICAgICAgICAgb3V0IDw8ICIsICI7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3V0IDw8ICIpIjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEVPcENvbnN0cnVjdEZsb2F0OgorICAgICAgICBjYXNlIEVP
cENvbnN0cnVjdFZlYzI6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjMzoKKyAgICAgICAg
Y2FzZSBFT3BDb25zdHJ1Y3RWZWM0OgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdEJvb2w6Cisg
ICAgICAgIGNhc2UgRU9wQ29uc3RydWN0QlZlYzI6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0
QlZlYzM6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0QlZlYzQ6CisgICAgICAgIGNhc2UgRU9w
Q29uc3RydWN0SW50OgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWMyOgorICAgICAgICBj
YXNlIEVPcENvbnN0cnVjdElWZWMzOgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWM0Ogor
ICAgICAgICBjYXNlIEVPcENvbnN0cnVjdFVJbnQ6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0
VVZlYzI6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VVZlYzM6CisgICAgICAgIGNhc2UgRU9w
Q29uc3RydWN0VVZlYzQ6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MjoKKyAgICAgICAg
Y2FzZSBFT3BDb25zdHJ1Y3RNYXQyeDM6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0Mng0
OgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4MjoKKyAgICAgICAgY2FzZSBFT3BDb25z
dHJ1Y3RNYXQzOgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4NDoKKyAgICAgICAgY2Fz
ZSBFT3BDb25zdHJ1Y3RNYXQ0eDI6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NHgzOgor
ICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDQ6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0
U3RydWN0OgorICAgICAgICAgICAgd3JpdGVDb25zdHJ1Y3RvclRyaXBsZXQodmlzaXQsIG5vZGUt
PmdldFR5cGUoKSk7CisgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBvdXQgPDwgIiAiIDw8
IGhhc2hGdW5jdGlvbk5hbWVJZk5lZWRlZChub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+
Z2V0TmFtZU9iaigpKTsKKyAgICAgICAgY2FzZSBFT3BFcXVhbENvbXBvbmVudFdpc2U6CisgICAg
ICAgIGNhc2UgRU9wTm90RXF1YWxDb21wb25lbnRXaXNlOgorICAgICAgICBjYXNlIEVPcExlc3NU
aGFuQ29tcG9uZW50V2lzZToKKyAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkNvbXBvbmVudFdp
c2U6CisgICAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbENvbXBvbmVudFdpc2U6CisgICAgICAg
IGNhc2UgRU9wR3JlYXRlclRoYW5FcXVhbENvbXBvbmVudFdpc2U6CisgICAgICAgIGNhc2UgRU9w
TW9kOgorICAgICAgICBjYXNlIEVPcE1vZGY6CisgICAgICAgIGNhc2UgRU9wUG93OgorICAgICAg
ICBjYXNlIEVPcEF0YW46CisgICAgICAgIGNhc2UgRU9wTWluOgorICAgICAgICBjYXNlIEVPcE1h
eDoKKyAgICAgICAgY2FzZSBFT3BDbGFtcDoKKyAgICAgICAgY2FzZSBFT3BNaXg6CisgICAgICAg
IGNhc2UgRU9wU3RlcDoKKyAgICAgICAgY2FzZSBFT3BTbW9vdGhTdGVwOgorICAgICAgICBjYXNl
IEVPcEZyZXhwOgorICAgICAgICBjYXNlIEVPcExkZXhwOgorICAgICAgICBjYXNlIEVPcERpc3Rh
bmNlOgorICAgICAgICBjYXNlIEVPcERvdDoKKyAgICAgICAgY2FzZSBFT3BDcm9zczoKKyAgICAg
ICAgY2FzZSBFT3BGYWNlRm9yd2FyZDoKKyAgICAgICAgY2FzZSBFT3BSZWZsZWN0OgorICAgICAg
ICBjYXNlIEVPcFJlZnJhY3Q6CisgICAgICAgIGNhc2UgRU9wTXVsTWF0cml4Q29tcG9uZW50V2lz
ZToKKyAgICAgICAgY2FzZSBFT3BPdXRlclByb2R1Y3Q6CisgICAgICAgIGNhc2UgRU9wQml0Zmll
bGRFeHRyYWN0OgorICAgICAgICBjYXNlIEVPcEJpdGZpZWxkSW5zZXJ0OgorICAgICAgICBjYXNl
IEVPcFVhZGRDYXJyeToKKyAgICAgICAgY2FzZSBFT3BVc3ViQm9ycm93OgorICAgICAgICBjYXNl
IEVPcFVtdWxFeHRlbmRlZDoKKyAgICAgICAgY2FzZSBFT3BJbXVsRXh0ZW5kZWQ6CisgICAgICAg
IGNhc2UgRU9wQmFycmllcjoKKyAgICAgICAgY2FzZSBFT3BNZW1vcnlCYXJyaWVyOgorICAgICAg
ICBjYXNlIEVPcE1lbW9yeUJhcnJpZXJBdG9taWNDb3VudGVyOgorICAgICAgICBjYXNlIEVPcE1l
bW9yeUJhcnJpZXJCdWZmZXI6CisgICAgICAgIGNhc2UgRU9wTWVtb3J5QmFycmllckltYWdlOgor
ICAgICAgICBjYXNlIEVPcE1lbW9yeUJhcnJpZXJTaGFyZWQ6CisgICAgICAgIGNhc2UgRU9wR3Jv
dXBNZW1vcnlCYXJyaWVyOgorICAgICAgICAgICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0
KHZpc2l0LCBub2RlLT5nZXRPcCgpLCBub2RlLT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgIH0KKyAgICByZXR1cm4gdmlzaXRDaGlsZHJlbjsKK30KIAotICAgICAgICBv
dXQgPDwgIigiOwotICAgICAgICB3cml0ZUZ1bmN0aW9uUGFyYW1ldGVycygqKG5vZGUtPmdldFNl
cXVlbmNlKCkpKTsKLSAgICAgICAgb3V0IDw8ICIpIjsKK2Jvb2wgVE91dHB1dEdMU0xCYXNlOjp2
aXNpdERlY2xhcmF0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtRGVjbGFyYXRpb24gKm5vZGUpCit7
CisgICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gb2JqU2luaygpOwogCi0gICAgICAgIHZpc2l0Q2hp
bGRyZW4gPSBmYWxzZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEZ1bmN0aW9uQ2Fs
bDoKLSAgICAgICAgLy8gRnVuY3Rpb24gY2FsbC4KLSAgICAgICAgaWYgKHZpc2l0ID09IFByZVZp
c2l0KQotICAgICAgICAgICAgb3V0IDw8IGhhc2hGdW5jdGlvbk5hbWVJZk5lZWRlZChub2RlLT5n
ZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZU9iaigpKSA8PCAiKCI7Ci0gICAgICAgIGVs
c2UgaWYgKHZpc2l0ID09IEluVmlzaXQpCi0gICAgICAgICAgICBvdXQgPDwgIiwgIjsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgb3V0IDw8ICIpIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEVPcFBhcmFtZXRlcnM6Ci0gICAgICAgIC8vIEZ1bmN0aW9uIHBhcmFtZXRlcnMuCi0gICAg
ICAgIEFTU0VSVCh2aXNpdCA9PSBQcmVWaXNpdCk7Ci0gICAgICAgIG91dCA8PCAiKCI7Ci0gICAg
ICAgIHdyaXRlRnVuY3Rpb25QYXJhbWV0ZXJzKCoobm9kZS0+Z2V0U2VxdWVuY2UoKSkpOwotICAg
ICAgICBvdXQgPDwgIikiOwotICAgICAgICB2aXNpdENoaWxkcmVuID0gZmFsc2U7Ci0gICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBFT3BEZWNsYXJhdGlvbjoKLSAgICAgICAgLy8gVmFyaWFibGUg
ZGVjbGFyYXRpb24uCi0gICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKLSAgICAgICAgewot
ICAgICAgICAgICAgY29uc3QgVEludGVybVNlcXVlbmNlICZzZXF1ZW5jZSA9ICoobm9kZS0+Z2V0
U2VxdWVuY2UoKSk7Ci0gICAgICAgICAgICBjb25zdCBUSW50ZXJtVHlwZWQgKnZhcmlhYmxlID0g
c2VxdWVuY2UuZnJvbnQoKS0+Z2V0QXNUeXBlZCgpOwotICAgICAgICAgICAgd3JpdGVMYXlvdXRR
dWFsaWZpZXIodmFyaWFibGUtPmdldFR5cGUoKSk7Ci0gICAgICAgICAgICB3cml0ZVZhcmlhYmxl
VHlwZSh2YXJpYWJsZS0+Z2V0VHlwZSgpKTsKLSAgICAgICAgICAgIG91dCA8PCAiICI7Ci0gICAg
ICAgICAgICBtRGVjbGFyaW5nVmFyaWFibGVzID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBl
bHNlIGlmICh2aXNpdCA9PSBJblZpc2l0KQotICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwg
IiwgIjsKLSAgICAgICAgICAgIG1EZWNsYXJpbmdWYXJpYWJsZXMgPSB0cnVlOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgbURlY2xhcmluZ1ZhcmlhYmxl
cyA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BJbnZh
cmlhbnREZWNsYXJhdGlvbjoKLSAgICAgICAgLy8gSW52YXJpYW50IGRlY2xhcmF0aW9uLgotICAg
ICAgICBBU1NFUlQodmlzaXQgPT0gUHJlVmlzaXQpOwotICAgICAgICB7Ci0gICAgICAgICAgICBj
b25zdCBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKLSAg
ICAgICAgICAgIEFTU0VSVChzZXF1ZW5jZSAmJiBzZXF1ZW5jZS0+c2l6ZSgpID09IDEpOwotICAg
ICAgICAgICAgY29uc3QgVEludGVybVN5bWJvbCAqc3ltYm9sID0gc2VxdWVuY2UtPmZyb250KCkt
PmdldEFzU3ltYm9sTm9kZSgpOwotICAgICAgICAgICAgQVNTRVJUKHN5bWJvbCk7Ci0gICAgICAg
ICAgICBvdXQgPDwgImludmFyaWFudCAiIDw8IGhhc2hWYXJpYWJsZU5hbWUoc3ltYm9sLT5nZXRT
eW1ib2woKSk7Ci0gICAgICAgIH0KLSAgICAgICAgdmlzaXRDaGlsZHJlbiA9IGZhbHNlOwotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0RmxvYXQ6Ci0gICAgICBjYXNlIEVP
cENvbnN0cnVjdFZlYzI6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdFZlYzM6Ci0gICAgICBjYXNl
IEVPcENvbnN0cnVjdFZlYzQ6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdEJvb2w6Ci0gICAgICBj
YXNlIEVPcENvbnN0cnVjdEJWZWMyOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVjMzoKLSAg
ICAgIGNhc2UgRU9wQ29uc3RydWN0QlZlYzQ6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdEludDoK
LSAgICAgIGNhc2UgRU9wQ29uc3RydWN0SVZlYzI6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdElW
ZWMzOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RJVmVjNDoKLSAgICAgIGNhc2UgRU9wQ29uc3Ry
dWN0VUludDoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0VVZlYzI6Ci0gICAgICBjYXNlIEVPcENv
bnN0cnVjdFVWZWMzOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RVVmVjNDoKLSAgICAgIGNhc2Ug
RU9wQ29uc3RydWN0TWF0MjoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MngzOgotICAgICAg
Y2FzZSBFT3BDb25zdHJ1Y3RNYXQyeDQ6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4MjoK
LSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MzoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0
M3g0OgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0eDI6Ci0gICAgICBjYXNlIEVPcENvbnN0
cnVjdE1hdDR4MzoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NDoKLSAgICAgIGNhc2UgRU9w
Q29uc3RydWN0U3RydWN0OgotICAgICAgICAgIHdyaXRlQ29uc3RydWN0b3JUcmlwbGV0KHZpc2l0
LCBub2RlLT5nZXRUeXBlKCkpOwotICAgICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcE91
dGVyUHJvZHVjdDoKLSAgICAgICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZpc2l0LCAi
b3V0ZXJQcm9kdWN0KCIsIHVzZUVtdWxhdGVkRnVuY3Rpb24pOwotICAgICAgICBicmVhazsKLQot
ICAgICAgY2FzZSBFT3BMZXNzVGhhbjoKLSAgICAgICAgd3JpdGVCdWlsdEluRnVuY3Rpb25Ucmlw
bGV0KHZpc2l0LCAibGVzc1RoYW4oIiwgdXNlRW11bGF0ZWRGdW5jdGlvbik7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbjoKLSAgICAgICAgd3JpdGVCdWlsdEluRnVu
Y3Rpb25UcmlwbGV0KHZpc2l0LCAiZ3JlYXRlclRoYW4oIiwgdXNlRW11bGF0ZWRGdW5jdGlvbik7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFsOgotICAgICAgICB3
cml0ZUJ1aWx0SW5GdW5jdGlvblRyaXBsZXQodmlzaXQsICJsZXNzVGhhbkVxdWFsKCIsIHVzZUVt
dWxhdGVkRnVuY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wR3JlYXRlclRo
YW5FcXVhbDoKLSAgICAgICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZpc2l0LCAiZ3Jl
YXRlclRoYW5FcXVhbCgiLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEVPcFZlY3RvckVxdWFsOgotICAgICAgICB3cml0ZUJ1aWx0SW5GdW5jdGlvblRy
aXBsZXQodmlzaXQsICJlcXVhbCgiLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcFZlY3Rvck5vdEVxdWFsOgotICAgICAgICB3cml0ZUJ1aWx0SW5G
dW5jdGlvblRyaXBsZXQodmlzaXQsICJub3RFcXVhbCgiLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKTsK
LSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRU9wTW9kOgotICAgICAgICB3cml0ZUJ1aWx0
SW5GdW5jdGlvblRyaXBsZXQodmlzaXQsICJtb2QoIiwgdXNlRW11bGF0ZWRGdW5jdGlvbik7Ci0g
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BNb2RmOgotICAgICAgICB3cml0ZUJ1aWx0SW5G
dW5jdGlvblRyaXBsZXQodmlzaXQsICJtb2RmKCIsIHVzZUVtdWxhdGVkRnVuY3Rpb24pOwotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wUG93OgotICAgICAgICB3cml0ZUJ1aWx0SW5GdW5j
dGlvblRyaXBsZXQodmlzaXQsICJwb3coIiwgdXNlRW11bGF0ZWRGdW5jdGlvbik7Ci0gICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBFT3BBdGFuOgotICAgICAgICB3cml0ZUJ1aWx0SW5GdW5jdGlv
blRyaXBsZXQodmlzaXQsICJhdGFuKCIsIHVzZUVtdWxhdGVkRnVuY3Rpb24pOwotICAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgRU9wTWluOgotICAgICAgICB3cml0ZUJ1aWx0SW5GdW5jdGlvblRy
aXBsZXQodmlzaXQsICJtaW4oIiwgdXNlRW11bGF0ZWRGdW5jdGlvbik7Ci0gICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFT3BNYXg6Ci0gICAgICAgIHdyaXRlQnVpbHRJbkZ1bmN0aW9uVHJpcGxl
dCh2aXNpdCwgIm1heCgiLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEVPcENsYW1wOgotICAgICAgICB3cml0ZUJ1aWx0SW5GdW5jdGlvblRyaXBsZXQo
dmlzaXQsICJjbGFtcCgiLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEVPcE1peDoKLSAgICAgICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZp
c2l0LCAibWl4KCIsIHVzZUVtdWxhdGVkRnVuY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgRU9wU3RlcDoKLSAgICAgICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZpc2l0
LCAic3RlcCgiLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEVPcFNtb290aFN0ZXA6Ci0gICAgICAgIHdyaXRlQnVpbHRJbkZ1bmN0aW9uVHJpcGxldCh2
aXNpdCwgInNtb290aHN0ZXAoIiwgdXNlRW11bGF0ZWRGdW5jdGlvbik7Ci0gICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFT3BEaXN0YW5jZToKLSAgICAgICAgd3JpdGVCdWlsdEluRnVuY3Rpb25U
cmlwbGV0KHZpc2l0LCAiZGlzdGFuY2UoIiwgdXNlRW11bGF0ZWRGdW5jdGlvbik7Ci0gICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBFT3BEb3Q6Ci0gICAgICAgIHdyaXRlQnVpbHRJbkZ1bmN0aW9u
VHJpcGxldCh2aXNpdCwgImRvdCgiLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcENyb3NzOgotICAgICAgICB3cml0ZUJ1aWx0SW5GdW5jdGlvblRy
aXBsZXQodmlzaXQsICJjcm9zcygiLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcEZhY2VGb3J3YXJkOgotICAgICAgICB3cml0ZUJ1aWx0SW5GdW5j
dGlvblRyaXBsZXQodmlzaXQsICJmYWNlZm9yd2FyZCgiLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFJlZmxlY3Q6Ci0gICAgICAgIHdyaXRlQnVp
bHRJbkZ1bmN0aW9uVHJpcGxldCh2aXNpdCwgInJlZmxlY3QoIiwgdXNlRW11bGF0ZWRGdW5jdGlv
bik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BSZWZyYWN0OgotICAgICAgICB3cml0
ZUJ1aWx0SW5GdW5jdGlvblRyaXBsZXQodmlzaXQsICJyZWZyYWN0KCIsIHVzZUVtdWxhdGVkRnVu
Y3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTXVsOgotICAgICAgICB3cml0
ZUJ1aWx0SW5GdW5jdGlvblRyaXBsZXQodmlzaXQsICJtYXRyaXhDb21wTXVsdCgiLCB1c2VFbXVs
YXRlZEZ1bmN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgLy8gVmFyaWFibGUgZGVjbGFyYXRpb24uCisgICAgaWYgKHZp
c2l0ID09IFByZVZpc2l0KQorICAgIHsKKyAgICAgICAgY29uc3QgVEludGVybVNlcXVlbmNlICZz
ZXF1ZW5jZSA9ICoobm9kZS0+Z2V0U2VxdWVuY2UoKSk7CisgICAgICAgIGNvbnN0IFRJbnRlcm1U
eXBlZCAqdmFyaWFibGUgICAgPSBzZXF1ZW5jZS5mcm9udCgpLT5nZXRBc1R5cGVkKCk7CisgICAg
ICAgIHdyaXRlTGF5b3V0UXVhbGlmaWVyKHZhcmlhYmxlLT5nZXRUeXBlKCkpOworICAgICAgICB3
cml0ZVZhcmlhYmxlVHlwZSh2YXJpYWJsZS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgb3V0IDw8ICIg
IjsKKyAgICAgICAgbURlY2xhcmluZ1ZhcmlhYmxlcyA9IHRydWU7CiAgICAgfQotICAgIHJldHVy
biB2aXNpdENoaWxkcmVuOworICAgIGVsc2UgaWYgKHZpc2l0ID09IEluVmlzaXQpCisgICAgewor
ICAgICAgICBvdXQgPDwgIiwgIjsKKyAgICAgICAgbURlY2xhcmluZ1ZhcmlhYmxlcyA9IHRydWU7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1EZWNsYXJpbmdWYXJpYWJsZXMgPSBm
YWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgVE91dHB1dEdMU0xCYXNl
Ojp2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wICpub2RlKQogewogICAgIFRJbmZv
U2lua0Jhc2UgJm91dCA9IG9ialNpbmsoKTsKIAotICAgIGluY3JlbWVudERlcHRoKG5vZGUpOwot
CiAgICAgVExvb3BUeXBlIGxvb3BUeXBlID0gbm9kZS0+Z2V0VHlwZSgpOwogCi0gICAgLy8gT25s
eSBmb3IgbG9vcHMgY2FuIGJlIHVucm9sbGVkCi0gICAgQVNTRVJUKCFub2RlLT5nZXRVbnJvbGxG
bGFnKCkgfHwgbG9vcFR5cGUgPT0gRUxvb3BGb3IpOwotCiAgICAgaWYgKGxvb3BUeXBlID09IEVM
b29wRm9yKSAgLy8gZm9yIGxvb3AKICAgICB7Ci0gICAgICAgIGlmICghbm9kZS0+Z2V0VW5yb2xs
RmxhZygpKQotICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgImZvciAoIjsKLSAgICAgICAg
ICAgIGlmIChub2RlLT5nZXRJbml0KCkpCi0gICAgICAgICAgICAgICAgbm9kZS0+Z2V0SW5pdCgp
LT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgICAgIG91dCA8PCAiOyAiOworICAgICAgICBvdXQg
PDwgImZvciAoIjsKKyAgICAgICAgaWYgKG5vZGUtPmdldEluaXQoKSkKKyAgICAgICAgICAgIG5v
ZGUtPmdldEluaXQoKS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgIG91dCA8PCAiOyAiOwogCi0g
ICAgICAgICAgICBpZiAobm9kZS0+Z2V0Q29uZGl0aW9uKCkpCi0gICAgICAgICAgICAgICAgbm9k
ZS0+Z2V0Q29uZGl0aW9uKCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgb3V0IDw8ICI7
ICI7CisgICAgICAgIGlmIChub2RlLT5nZXRDb25kaXRpb24oKSkKKyAgICAgICAgICAgIG5vZGUt
PmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAgb3V0IDw8ICI7ICI7CiAK
LSAgICAgICAgICAgIGlmIChub2RlLT5nZXRFeHByZXNzaW9uKCkpCi0gICAgICAgICAgICAgICAg
bm9kZS0+Z2V0RXhwcmVzc2lvbigpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgICAgIG91dCA8
PCAiKVxuIjsKKyAgICAgICAgaWYgKG5vZGUtPmdldEV4cHJlc3Npb24oKSkKKyAgICAgICAgICAg
IG5vZGUtPmdldEV4cHJlc3Npb24oKS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgIG91dCA8PCAi
KVxuIjsKIAotICAgICAgICAgICAgdmlzaXRDb2RlQmxvY2sobm9kZS0+Z2V0Qm9keSgpKTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIE5lZWQgdG8g
cHV0IGEgb25lLWl0ZXJhdGlvbiBsb29wIGhlcmUgdG8gaGFuZGxlIGJyZWFrLgotICAgICAgICAg
ICAgVEludGVybVNlcXVlbmNlICpkZWNsU2VxID0KLSAgICAgICAgICAgICAgICBub2RlLT5nZXRJ
bml0KCktPmdldEFzQWdncmVnYXRlKCktPmdldFNlcXVlbmNlKCk7Ci0gICAgICAgICAgICBUSW50
ZXJtU3ltYm9sICppbmRleFN5bWJvbCA9Ci0gICAgICAgICAgICAgICAgKCpkZWNsU2VxKVswXS0+
Z2V0QXNCaW5hcnlOb2RlKCktPmdldExlZnQoKS0+Z2V0QXNTeW1ib2xOb2RlKCk7Ci0gICAgICAg
ICAgICBUU3RyaW5nIG5hbWUgPSBoYXNoVmFyaWFibGVOYW1lKGluZGV4U3ltYm9sLT5nZXRTeW1i
b2woKSk7Ci0gICAgICAgICAgICBvdXQgPDwgImZvciAoaW50ICIgPDwgbmFtZSA8PCAiID0gMDsg
IgotICAgICAgICAgICAgICAgIDw8IG5hbWUgPDwgIiA8IDE7ICIKLSAgICAgICAgICAgICAgICA8
PCAiKysiIDw8IG5hbWUgPDwgIilcbiI7Ci0KLSAgICAgICAgICAgIG91dCA8PCAie1xuIjsKLSAg
ICAgICAgICAgIG1Mb29wVW5yb2xsU3RhY2sucHVzaChub2RlKTsKLSAgICAgICAgICAgIHdoaWxl
IChtTG9vcFVucm9sbFN0YWNrLnNhdGlzZmllc0xvb3BDb25kaXRpb24oKSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICB2aXNpdENvZGVCbG9jayhub2RlLT5nZXRCb2R5KCkpOwotICAg
ICAgICAgICAgICAgIG1Mb29wVW5yb2xsU3RhY2suc3RlcCgpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgbUxvb3BVbnJvbGxTdGFjay5wb3AoKTsKLSAgICAgICAgICAgIG91dCA8PCAifVxu
IjsKLSAgICAgICAgfQorICAgICAgICB2aXNpdENvZGVCbG9jayhub2RlLT5nZXRCb2R5KCkpOwog
ICAgIH0KICAgICBlbHNlIGlmIChsb29wVHlwZSA9PSBFTG9vcFdoaWxlKSAgLy8gd2hpbGUgbG9v
cAogICAgIHsKQEAgLTEwNzksOCArMTEwOSw2IEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNp
dExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wICpub2RlKQogICAgICAgICBvdXQgPDwgIik7
XG4iOwogICAgIH0KIAotICAgIGRlY3JlbWVudERlcHRoKCk7Ci0KICAgICAvLyBObyBuZWVkIHRv
IHZpc2l0IGNoaWxkcmVuLiBUaGV5IGhhdmUgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZCBpbgogICAg
IC8vIHRoaXMgZnVuY3Rpb24uCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA5MCwyMCArMTExOCwy
MCBAQCBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRl
cm1CcmFuY2ggKm5vZGUpCiB7CiAgICAgc3dpdGNoIChub2RlLT5nZXRGbG93T3AoKSkKICAgICB7
Ci0gICAgICBjYXNlIEVPcEtpbGw6Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgImRpc2Nh
cmQiLCBOVUxMLCBOVUxMKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEJyZWFrOgot
ICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICJicmVhayIsIE5VTEwsIE5VTEwpOwotICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ29udGludWU6Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2
aXNpdCwgImNvbnRpbnVlIiwgTlVMTCwgTlVMTCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BSZXR1cm46Ci0gICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgInJldHVybiAiLCBOVUxM
LCBOVUxMKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICBjYXNlIEVPcEtpbGw6CisgICAgICAgICAgICB3cml0ZVRyaXBsZXQo
dmlzaXQsICJkaXNjYXJkIiwgTlVMTCwgTlVMTCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBFT3BCcmVhazoKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgImJyZWFr
IiwgTlVMTCwgTlVMTCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDb250
aW51ZToKKyAgICAgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgImNvbnRpbnVlIiwgTlVMTCwg
TlVMTCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BSZXR1cm46CisgICAg
ICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICJyZXR1cm4gIiwgTlVMTCwgTlVMTCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTI5LDQwICsxMTU3LDY3IEBAIHZv
aWQgVE91dHB1dEdMU0xCYXNlOjp2aXNpdENvZGVCbG9jayhUSW50ZXJtQmxvY2sgKm5vZGUpCiBU
U3RyaW5nIFRPdXRwdXRHTFNMQmFzZTo6Z2V0VHlwZU5hbWUoY29uc3QgVFR5cGUgJnR5cGUpCiB7
CiAgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQotICAgICAgICByZXR1
cm4gaGFzaE5hbWUodHlwZS5nZXRTdHJ1Y3QoKS0+bmFtZSgpKTsKKyAgICAgICAgcmV0dXJuIGhh
c2hOYW1lKFROYW1lKHR5cGUuZ2V0U3RydWN0KCktPm5hbWUoKSkpOwogICAgIGVsc2UKICAgICAg
ICAgcmV0dXJuIHR5cGUuZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCk7CiB9CiAKLVRTdHJpbmcg
VE91dHB1dEdMU0xCYXNlOjpoYXNoTmFtZShjb25zdCBUU3RyaW5nICZuYW1lKQorVFN0cmluZyBU
T3V0cHV0R0xTTEJhc2U6Omhhc2hOYW1lKGNvbnN0IFROYW1lICZuYW1lKQogewotICAgIGlmICht
SGFzaEZ1bmN0aW9uID09IE5VTEwgfHwgbmFtZS5lbXB0eSgpKQotICAgICAgICByZXR1cm4gbmFt
ZTsKLSAgICBOYW1lTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1OYW1lTWFwLmZpbmQobmFtZS5j
X3N0cigpKTsKKyAgICBpZiAobmFtZS5nZXRTdHJpbmcoKS5lbXB0eSgpKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKCFuYW1lLmlzSW50ZXJuYWwoKSk7CisgICAgICAgIHJldHVybiBuYW1lLmdldFN0
cmluZygpOworICAgIH0KKyAgICBpZiAobmFtZS5pc0ludGVybmFsKCkpCisgICAgeworICAgICAg
ICAvLyBUT0RPKG9ldHVhaG8pOiBXb3VsZCBiZSBuaWNlciB0byBwcmVmaXggbm9uLWludGVybmFs
IG5hbWVzIHdpdGggIl8iIGluc3RlYWQsIGxpa2UgaXMKKyAgICAgICAgLy8gZG9uZSBpbiB0aGUg
SExTTCBvdXRwdXQsIGJ1dCB0aGF0IHJlcXVpcmVzIGZhaXJseSBjb21wbGV4IGNoYW5nZXMgZWxz
ZXdoZXJlIGluIHRoZSBjb2RlCisgICAgICAgIC8vIGFzIHdlbGwuCisgICAgICAgIC8vIFdlIG5l
ZWQgdG8gdXNlIGEgcHJlZml4IHRoYXQgaXMgcmVzZXJ2ZWQgaW4gV2ViR0wgaW4gb3JkZXIgdG8g
Z3VhcmFudGVlIHRoYXQgdGhlIGludGVybmFsCisgICAgICAgIC8vIG5hbWVzIGRvbid0IGNvbmZs
aWN0IHdpdGggdXNlci1kZWZpbmVkIG5hbWVzIGZyb20gV2ViR0wuCisgICAgICAgIHJldHVybiAi
d2ViZ2xfYW5nbGVfIiArIG5hbWUuZ2V0U3RyaW5nKCk7CisgICAgfQorICAgIGlmIChtSGFzaEZ1
bmN0aW9uID09IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gbmFtZS5nZXRTdHJpbmco
KTsKKyAgICB9CisgICAgTmFtZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtTmFtZU1hcC5maW5k
KG5hbWUuZ2V0U3RyaW5nKCkuY19zdHIoKSk7CiAgICAgaWYgKGl0ICE9IG1OYW1lTWFwLmVuZCgp
KQogICAgICAgICByZXR1cm4gaXQtPnNlY29uZC5jX3N0cigpOwotICAgIFRTdHJpbmcgaGFzaGVk
TmFtZSA9IFRJbnRlcm1UcmF2ZXJzZXI6Omhhc2gobmFtZSwgbUhhc2hGdW5jdGlvbik7Ci0gICAg
bU5hbWVNYXBbbmFtZS5jX3N0cigpXSA9IGhhc2hlZE5hbWUuY19zdHIoKTsKKyAgICBUU3RyaW5n
IGhhc2hlZE5hbWUgICAgICAgICAgICAgICAgID0gVEludGVybVRyYXZlcnNlcjo6aGFzaChuYW1l
LmdldFN0cmluZygpLCBtSGFzaEZ1bmN0aW9uKTsKKyAgICBtTmFtZU1hcFtuYW1lLmdldFN0cmlu
ZygpLmNfc3RyKCldID0gaGFzaGVkTmFtZS5jX3N0cigpOwogICAgIHJldHVybiBoYXNoZWROYW1l
OwogfQogCi1UU3RyaW5nIFRPdXRwdXRHTFNMQmFzZTo6aGFzaFZhcmlhYmxlTmFtZShjb25zdCBU
U3RyaW5nICZuYW1lKQorVFN0cmluZyBUT3V0cHV0R0xTTEJhc2U6Omhhc2hWYXJpYWJsZU5hbWUo
Y29uc3QgVE5hbWUgJm5hbWUpCiB7Ci0gICAgaWYgKG1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihu
YW1lLCBtU2hhZGVyVmVyc2lvbikgIT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIG5hbWU7CisgICAg
aWYgKG1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihuYW1lLmdldFN0cmluZygpLCBtU2hhZGVyVmVy
c2lvbikgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIGlmIChtQ29tcGlsZU9wdGlvbnMgJiBTSF9U
UkFOU0xBVEVfVklFV0lEX09WUl9UT19VTklGT1JNICYmCisgICAgICAgICAgICBuYW1lLmdldFN0
cmluZygpID09ICJnbF9WaWV3SURfT1ZSIikKKyAgICAgICAgeworICAgICAgICAgICAgVE5hbWUg
dW5pZm9ybU5hbWUoVFN0cmluZygiVmlld0lEX09WUiIpKTsKKyAgICAgICAgICAgIHVuaWZvcm1O
YW1lLnNldEludGVybmFsKHRydWUpOworICAgICAgICAgICAgcmV0dXJuIGhhc2hOYW1lKHVuaWZv
cm1OYW1lKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmFtZS5nZXRTdHJpbmcoKTsKKyAg
ICB9CiAgICAgcmV0dXJuIGhhc2hOYW1lKG5hbWUpOwogfQogCi1UU3RyaW5nIFRPdXRwdXRHTFNM
QmFzZTo6aGFzaEZ1bmN0aW9uTmFtZUlmTmVlZGVkKGNvbnN0IFROYW1lICZtYW5nbGVkTmFtZSkK
K1RTdHJpbmcgVE91dHB1dEdMU0xCYXNlOjpoYXNoRnVuY3Rpb25OYW1lSWZOZWVkZWQoY29uc3Qg
VEZ1bmN0aW9uU3ltYm9sSW5mbyAmaW5mbykKIHsKLSAgICBUU3RyaW5nIG1hbmdsZWRTdHIgPSBt
YW5nbGVkTmFtZS5nZXRTdHJpbmcoKTsKLSAgICBUU3RyaW5nIG5hbWUgPSBURnVuY3Rpb246OnVu
bWFuZ2xlTmFtZShtYW5nbGVkU3RyKTsKLSAgICBpZiAobVN5bWJvbFRhYmxlLmZpbmRCdWlsdElu
KG1hbmdsZWRTdHIsIG1TaGFkZXJWZXJzaW9uKSAhPSBudWxscHRyIHx8IG5hbWUgPT0gIm1haW4i
KQotICAgICAgICByZXR1cm4gdHJhbnNsYXRlVGV4dHVyZUZ1bmN0aW9uKG5hbWUpOwotICAgIGlm
IChtYW5nbGVkTmFtZS5pc0ludGVybmFsKCkpCi0gICAgICAgIHJldHVybiBuYW1lOworICAgIGlm
IChpbmZvLmlzTWFpbigpIHx8IGluZm8uZ2V0TmFtZU9iaigpLmlzSW50ZXJuYWwoKSkKKyAgICB7
CisgICAgICAgIC8vIEludGVybmFsIGZ1bmN0aW9uIG5hbWVzIGFyZSBvdXRwdXR0ZWQgYXMtaXMg
LSB0aGV5IG1heSByZWZlciB0byBmdW5jdGlvbnMgbWFudWFsbHkgYWRkZWQKKyAgICAgICAgLy8g
dG8gdGhlIG91dHB1dCBzaGFkZXIgc291cmNlIHRoYXQgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUg
QVNUIGF0IGFsbC4KKyAgICAgICAgcmV0dXJuIGluZm8uZ2V0TmFtZSgpOworICAgIH0KICAgICBl
bHNlCi0gICAgICAgIHJldHVybiBoYXNoTmFtZShuYW1lKTsKKyAgICB7CisgICAgICAgIHJldHVy
biBoYXNoTmFtZShpbmZvLmdldE5hbWVPYmooKSk7CisgICAgfQogfQogCiBib29sIFRPdXRwdXRH
TFNMQmFzZTo6c3RydWN0RGVjbGFyZWQoY29uc3QgVFN0cnVjdHVyZSAqc3RydWN0dXJlKSBjb25z
dApAQCAtMTE4MCwxNCArMTIzNSwxNCBAQCB2b2lkIFRPdXRwdXRHTFNMQmFzZTo6ZGVjbGFyZVN0
cnVjdChjb25zdCBUU3RydWN0dXJlICpzdHJ1Y3R1cmUpCiB7CiAgICAgVEluZm9TaW5rQmFzZSAm
b3V0ID0gb2JqU2luaygpOwogCi0gICAgb3V0IDw8ICJzdHJ1Y3QgIiA8PCBoYXNoTmFtZShzdHJ1
Y3R1cmUtPm5hbWUoKSkgPDwgIntcbiI7CisgICAgb3V0IDw8ICJzdHJ1Y3QgIiA8PCBoYXNoTmFt
ZShUTmFtZShzdHJ1Y3R1cmUtPm5hbWUoKSkpIDw8ICJ7XG4iOwogICAgIGNvbnN0IFRGaWVsZExp
c3QgJmZpZWxkcyA9IHN0cnVjdHVyZS0+ZmllbGRzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpCiAgICAgewogICAgICAgICBjb25zdCBURmllbGQgKmZp
ZWxkID0gZmllbGRzW2ldOwogICAgICAgICBpZiAod3JpdGVWYXJpYWJsZVByZWNpc2lvbihmaWVs
ZC0+dHlwZSgpLT5nZXRQcmVjaXNpb24oKSkpCiAgICAgICAgICAgICBvdXQgPDwgIiAiOwotICAg
ICAgICBvdXQgPDwgZ2V0VHlwZU5hbWUoKmZpZWxkLT50eXBlKCkpIDw8ICIgIiA8PCBoYXNoTmFt
ZShmaWVsZC0+bmFtZSgpKTsKKyAgICAgICAgb3V0IDw8IGdldFR5cGVOYW1lKCpmaWVsZC0+dHlw
ZSgpKSA8PCAiICIgPDwgaGFzaE5hbWUoVE5hbWUoZmllbGQtPm5hbWUoKSkpOwogICAgICAgICBp
ZiAoZmllbGQtPnR5cGUoKS0+aXNBcnJheSgpKQogICAgICAgICAgICAgb3V0IDw8IGFycmF5QnJh
Y2tldHMoKmZpZWxkLT50eXBlKCkpOwogICAgICAgICBvdXQgPDwgIjtcbiI7CkBAIC0xMjQ4LDE3
ICsxMzAzLDE5IEBAIHZvaWQgVE91dHB1dEdMU0xCYXNlOjpkZWNsYXJlSW50ZXJmYWNlQmxvY2so
Y29uc3QgVEludGVyZmFjZUJsb2NrICppbnRlcmZhY2VCbG9jCiB7CiAgICAgVEluZm9TaW5rQmFz
ZSAmb3V0ID0gb2JqU2luaygpOwogCi0gICAgb3V0IDw8IGhhc2hOYW1lKGludGVyZmFjZUJsb2Nr
LT5uYW1lKCkpIDw8ICJ7XG4iOworICAgIG91dCA8PCBoYXNoTmFtZShUTmFtZShpbnRlcmZhY2VC
bG9jay0+bmFtZSgpKSkgPDwgIntcbiI7CiAgICAgY29uc3QgVEZpZWxkTGlzdCAmZmllbGRzID0g
aW50ZXJmYWNlQmxvY2stPmZpZWxkcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmll
bGRzLnNpemUoKTsgKytpKQogICAgIHsKICAgICAgICAgY29uc3QgVEZpZWxkICpmaWVsZCA9IGZp
ZWxkc1tpXTsKICAgICAgICAgaWYgKHdyaXRlVmFyaWFibGVQcmVjaXNpb24oZmllbGQtPnR5cGUo
KS0+Z2V0UHJlY2lzaW9uKCkpKQogICAgICAgICAgICAgb3V0IDw8ICIgIjsKLSAgICAgICAgb3V0
IDw8IGdldFR5cGVOYW1lKCpmaWVsZC0+dHlwZSgpKSA8PCAiICIgPDwgaGFzaE5hbWUoZmllbGQt
Pm5hbWUoKSk7CisgICAgICAgIG91dCA8PCBnZXRUeXBlTmFtZSgqZmllbGQtPnR5cGUoKSkgPDwg
IiAiIDw8IGhhc2hOYW1lKFROYW1lKGZpZWxkLT5uYW1lKCkpKTsKICAgICAgICAgaWYgKGZpZWxk
LT50eXBlKCktPmlzQXJyYXkoKSkKICAgICAgICAgICAgIG91dCA8PCBhcnJheUJyYWNrZXRzKCpm
aWVsZC0+dHlwZSgpKTsKICAgICAgICAgb3V0IDw8ICI7XG4iOwogICAgIH0KICAgICBvdXQgPDwg
In0iOwogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0xCYXNlLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMQmFz
ZS5oCmluZGV4IGFhODYxYzczYzMwMDA0N2M3NmFlMTNhOWFlM2EzYTA1M2FiZTgxYTAuLmFmMzAx
OWM1ZGEwY2E3OWUwNWRlY2RmYzk1N2Q0MWZlZDNlNGIxZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0xCYXNlLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0
cHV0R0xTTEJhc2UuaApAQCAtMTAsOSArMTAsMTEgQEAKICNpbmNsdWRlIDxzZXQ+CiAKICNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKLSNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL0xvb3BJbmZvLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Q
YXJzZUNvbnRleHQuaCIKIAorbmFtZXNwYWNlIHNoCit7CisKIGNsYXNzIFRPdXRwdXRHTFNMQmFz
ZSA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiB7CiAgIHB1YmxpYzoKQEAgLTIwLDE5ICsyMiwy
NSBAQCBjbGFzcyBUT3V0cHV0R0xTTEJhc2UgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAg
ICAgICAgICAgICAgICAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IGNsYW1waW5nU3Ry
YXRlZ3ksCiAgICAgICAgICAgICAgICAgICAgIFNoSGFzaEZ1bmN0aW9uNjQgaGFzaEZ1bmN0aW9u
LAogICAgICAgICAgICAgICAgICAgICBOYW1lTWFwICZuYW1lTWFwLAotICAgICAgICAgICAgICAg
ICAgICBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlLAorICAgICAgICAgICAgICAgICAgICBUU3lt
Ym9sVGFibGUgJnN5bWJvbFRhYmxlLAorICAgICAgICAgICAgICAgICAgICBzaDo6R0xlbnVtIHNo
YWRlclR5cGUsCiAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uLAotICAgICAg
ICAgICAgICAgICAgICBTaFNoYWRlck91dHB1dCBvdXRwdXQpOworICAgICAgICAgICAgICAgICAg
ICBTaFNoYWRlck91dHB1dCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgIFNoQ29tcGlsZU9w
dGlvbnMgY29tcGlsZU9wdGlvbnMpOwogCi0gICAgU2hTaGFkZXJPdXRwdXQgZ2V0U2hhZGVyT3V0
cHV0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtT3V0cHV0OwotICAgIH0KKyAgICBT
aFNoYWRlck91dHB1dCBnZXRTaGFkZXJPdXRwdXQoKSBjb25zdCB7IHJldHVybiBtT3V0cHV0OyB9
CisKKyAgICAvLyBSZXR1cm4gdGhlIG9yaWdpbmFsIG5hbWUgaWYgaGFzaCBmdW5jdGlvbiBwb2lu
dGVyIGlzIE5VTEw7CisgICAgLy8gb3RoZXJ3aXNlIHJldHVybiB0aGUgaGFzaGVkIG5hbWUuIEhh
cyBzcGVjaWFsIGhhbmRsaW5nIGZvciBpbnRlcm5hbCBuYW1lcywgd2hpY2ggYXJlIG5vdAorICAg
IC8vIGhhc2hlZC4KKyAgICBUU3RyaW5nIGhhc2hOYW1lKGNvbnN0IFROYW1lICZuYW1lKTsKIAog
ICBwcm90ZWN0ZWQ6CiAgICAgVEluZm9TaW5rQmFzZSAmb2JqU2luaygpIHsgcmV0dXJuIG1PYmpT
aW5rOyB9CisgICAgdm9pZCB3cml0ZUZsb2F0KFRJbmZvU2lua0Jhc2UgJm91dCwgZmxvYXQgZik7
CiAgICAgdm9pZCB3cml0ZVRyaXBsZXQoVmlzaXQgdmlzaXQsIGNvbnN0IGNoYXIgKnByZVN0ciwg
Y29uc3QgY2hhciAqaW5TdHIsIGNvbnN0IGNoYXIgKnBvc3RTdHIpOwotICAgIHZvaWQgd3JpdGVM
YXlvdXRRdWFsaWZpZXIoY29uc3QgVFR5cGUgJnR5cGUpOworICAgIHZpcnR1YWwgdm9pZCB3cml0
ZUxheW91dFF1YWxpZmllcihjb25zdCBUVHlwZSAmdHlwZSk7CisgICAgdm9pZCB3cml0ZUludmFy
aWFudFF1YWxpZmllcihjb25zdCBUVHlwZSAmdHlwZSk7CiAgICAgdm9pZCB3cml0ZVZhcmlhYmxl
VHlwZShjb25zdCBUVHlwZSAmdHlwZSk7CiAgICAgdmlydHVhbCBib29sIHdyaXRlVmFyaWFibGVQ
cmVjaXNpb24oVFByZWNpc2lvbiBwcmVjaXNpb24pID0gMDsKICAgICB2b2lkIHdyaXRlRnVuY3Rp
b25QYXJhbWV0ZXJzKGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAmYXJncyk7CkBAIC00OSwyMyArNTcs
MjMgQEAgY2xhc3MgVE91dHB1dEdMU0xCYXNlIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKICAg
ICBib29sIHZpc2l0SWZFbHNlKFZpc2l0IHZpc2l0LCBUSW50ZXJtSWZFbHNlICpub2RlKSBvdmVy
cmlkZTsKICAgICBib29sIHZpc2l0U3dpdGNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtU3dpdGNoICpu
b2RlKSBvdmVycmlkZTsKICAgICBib29sIHZpc2l0Q2FzZShWaXNpdCB2aXNpdCwgVEludGVybUNh
c2UgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRGdW5jdGlvblByb3RvdHlwZShWaXNp
dCB2aXNpdCwgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlICpub2RlKSBvdmVycmlkZTsKICAgICBi
b29sIHZpc2l0RnVuY3Rpb25EZWZpbml0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25E
ZWZpbml0aW9uICpub2RlKSBvdmVycmlkZTsKICAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0
IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKSBvdmVycmlkZTsKICAgICBib29sIHZpc2l0
QmxvY2soVmlzaXQgdmlzaXQsIFRJbnRlcm1CbG9jayAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9v
bCB2aXNpdEludmFyaWFudERlY2xhcmF0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtSW52YXJpYW50
RGVjbGFyYXRpb24gKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXREZWNsYXJhdGlvbihW
aXNpdCB2aXNpdCwgVEludGVybURlY2xhcmF0aW9uICpub2RlKSBvdmVycmlkZTsKICAgICBib29s
IHZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AgKm5vZGUpIG92ZXJyaWRlOwogICAg
IGJvb2wgdmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2ggKm5vZGUpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCB2aXNpdENvZGVCbG9jayhUSW50ZXJtQmxvY2sgKm5vZGUpOwogCi0g
ICAgLy8gUmV0dXJuIHRoZSBvcmlnaW5hbCBuYW1lIGlmIGhhc2ggZnVuY3Rpb24gcG9pbnRlciBp
cyBOVUxMOwotICAgIC8vIG90aGVyd2lzZSByZXR1cm4gdGhlIGhhc2hlZCBuYW1lLgotICAgIFRT
dHJpbmcgaGFzaE5hbWUoY29uc3QgVFN0cmluZyAmbmFtZSk7CiAgICAgLy8gU2FtZSBhcyBoYXNo
TmFtZSgpLCBidXQgd2l0aG91dCBoYXNoaW5nIGJ1aWx0LWluIHZhcmlhYmxlcy4KLSAgICBUU3Ry
aW5nIGhhc2hWYXJpYWJsZU5hbWUoY29uc3QgVFN0cmluZyAmbmFtZSk7Ci0gICAgLy8gU2FtZSBh
cyBoYXNoTmFtZSgpLCBidXQgd2l0aG91dCBoYXNoaW5nIGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQg
d2l0aCB1bm1hbmdsaW5nLgotICAgIFRTdHJpbmcgaGFzaEZ1bmN0aW9uTmFtZUlmTmVlZGVkKGNv
bnN0IFROYW1lICZtYW5nbGVkTmFtZSk7CisgICAgVFN0cmluZyBoYXNoVmFyaWFibGVOYW1lKGNv
bnN0IFROYW1lICZuYW1lKTsKKyAgICAvLyBTYW1lIGFzIGhhc2hOYW1lKCksIGJ1dCB3aXRob3V0
IGhhc2hpbmcgaW50ZXJuYWwgZnVuY3Rpb25zIG9yICJtYWluIi4KKyAgICBUU3RyaW5nIGhhc2hG
dW5jdGlvbk5hbWVJZk5lZWRlZChjb25zdCBURnVuY3Rpb25TeW1ib2xJbmZvICZpbmZvKTsKICAg
ICAvLyBVc2VkIHRvIHRyYW5zbGF0ZSBmdW5jdGlvbiBuYW1lcyBmb3IgZGlmZmVyZW5jZXMgYmV0
d2VlbiBFU1NMIGFuZCBHTFNMCi0gICAgdmlydHVhbCBUU3RyaW5nIHRyYW5zbGF0ZVRleHR1cmVG
dW5jdGlvbihUU3RyaW5nICZuYW1lKSB7IHJldHVybiBuYW1lOyB9CisgICAgdmlydHVhbCBUU3Ry
aW5nIHRyYW5zbGF0ZVRleHR1cmVGdW5jdGlvbihjb25zdCBUU3RyaW5nICZuYW1lKSB7IHJldHVy
biBuYW1lOyB9CiAKICAgcHJpdmF0ZToKICAgICBib29sIHN0cnVjdERlY2xhcmVkKGNvbnN0IFRT
dHJ1Y3R1cmUgKnN0cnVjdHVyZSkgY29uc3Q7CkBAIC03NCw3ICs4Miw5IEBAIGNsYXNzIFRPdXRw
dXRHTFNMQmFzZSA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgdm9pZCBkZWNsYXJlSW50
ZXJmYWNlQmxvY2tMYXlvdXQoY29uc3QgVEludGVyZmFjZUJsb2NrICppbnRlcmZhY2VCbG9jayk7
CiAgICAgdm9pZCBkZWNsYXJlSW50ZXJmYWNlQmxvY2soY29uc3QgVEludGVyZmFjZUJsb2NrICpp
bnRlcmZhY2VCbG9jayk7CiAKLSAgICB2b2lkIHdyaXRlQnVpbHRJbkZ1bmN0aW9uVHJpcGxldChW
aXNpdCB2aXNpdCwgY29uc3QgY2hhciAqcHJlU3RyLCBib29sIHVzZUVtdWxhdGVkRnVuY3Rpb24p
OworICAgIHZvaWQgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KFZpc2l0IHZpc2l0LCBUT3Bl
cmF0b3Igb3AsIGJvb2wgdXNlRW11bGF0ZWRGdW5jdGlvbik7CisKKyAgICBjb25zdCBjaGFyICpt
YXBRdWFsaWZpZXJUb1N0cmluZyhUUXVhbGlmaWVyIHFpYWxpZmllcik7CiAKICAgICBUSW5mb1Np
bmtCYXNlICZtT2JqU2luazsKICAgICBib29sIG1EZWNsYXJpbmdWYXJpYWJsZXM7CkBAIC04Miw5
ICs5Miw2IEBAIGNsYXNzIFRPdXRwdXRHTFNMQmFzZSA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2Vy
CiAgICAgLy8gVGhpcyBzZXQgY29udGFpbnMgYWxsIHRoZSBpZHMgb2YgdGhlIHN0cnVjdHMgZnJv
bSBldmVyeSBzY29wZS4KICAgICBzdGQ6OnNldDxpbnQ+IG1EZWNsYXJlZFN0cnVjdHM7CiAKLSAg
ICAvLyBTdGFjayBvZiBsb29wcyB0aGF0IG5lZWQgdG8gYmUgdW5yb2xsZWQuCi0gICAgVExvb3BT
dGFjayBtTG9vcFVucm9sbFN0YWNrOwotCiAgICAgU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVn
eSBtQ2xhbXBpbmdTdHJhdGVneTsKIAogICAgIC8vIG5hbWUgaGFzaGluZy4KQEAgLTk0LDkgKzEw
MSwxNSBAQCBjbGFzcyBUT3V0cHV0R0xTTEJhc2UgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgog
CiAgICAgVFN5bWJvbFRhYmxlICZtU3ltYm9sVGFibGU7CiAKKyAgICBzaDo6R0xlbnVtIG1TaGFk
ZXJUeXBlOworCiAgICAgY29uc3QgaW50IG1TaGFkZXJWZXJzaW9uOwogCiAgICAgU2hTaGFkZXJP
dXRwdXQgbU91dHB1dDsKKworICAgIFNoQ29tcGlsZU9wdGlvbnMgbUNvbXBpbGVPcHRpb25zOwog
fTsKIAorfSAgLy8gbmFtZXNwYWNlIHNoCisKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRP
Ul9PVVRQVVRHTFNMQkFTRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRITFNMLmNwcAppbmRleCBmZWFl
Njg0ZDU4MGJjMjZkNDM2ODY4OTE3NzA0YzMxZTFiYzFmYTE4Li5jMDEyOWRhZGU0ZmFkMGIxZjdm
Mjg0YzIyYzUxMTUzYmY4Mjc0M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRITFNMLmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRITFNMLmNwcApAQCAt
MjgsMTYgKzI4LDMxIEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91
dC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdXRpbC5oIgogCi1uYW1lc3BhY2UK
K25hbWVzcGFjZSBzaAogewogCi12b2lkIFdyaXRlU2luZ2xlQ29uc3RhbnQoVEluZm9TaW5rQmFz
ZSAmb3V0LCBjb25zdCBUQ29uc3RhbnRVbmlvbiAqY29uc3QgY29uc3RVbmlvbikKK3ZvaWQgT3V0
cHV0SExTTDo6d3JpdGVGbG9hdChUSW5mb1NpbmtCYXNlICZvdXQsIGZsb2F0IGYpCit7CisgICAg
Ly8gVGhpcyBpcyBrbm93biBub3QgdG8gd29yayBmb3IgTmFOIG9uIGFsbCBkcml2ZXJzIGJ1dCBt
YWtlIHRoZSBiZXN0IGVmZm9ydCB0byBvdXRwdXQgTmFOcworICAgIC8vIHJlZ2FyZGxlc3MuCisg
ICAgaWYgKChnbDo6aXNJbmYoZikgfHwgZ2w6OmlzTmFOKGYpKSAmJiBtU2hhZGVyVmVyc2lvbiA+
PSAzMDAgJiYKKyAgICAgICAgbU91dHB1dFR5cGUgPT0gU0hfSExTTF80XzFfT1VUUFVUKQorICAg
IHsKKyAgICAgICAgb3V0IDw8ICJhc2Zsb2F0KCIgPDwgZ2w6OmJpdENhc3Q8dWludDMyX3Q+KGYp
IDw8ICJ1KSI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG91dCA8PCBzdGQ6Om1p
bihGTFRfTUFYLCBzdGQ6Om1heCgtRkxUX01BWCwgZikpOworICAgIH0KK30KKwordm9pZCBPdXRw
dXRITFNMOjp3cml0ZVNpbmdsZUNvbnN0YW50KFRJbmZvU2lua0Jhc2UgJm91dCwgY29uc3QgVENv
bnN0YW50VW5pb24gKmNvbnN0IGNvbnN0VW5pb24pCiB7CiAgICAgQVNTRVJUKGNvbnN0VW5pb24g
IT0gbnVsbHB0cik7CiAgICAgc3dpdGNoIChjb25zdFVuaW9uLT5nZXRUeXBlKCkpCiAgICAgewog
ICAgICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgb3V0IDw8IHN0ZDo6bWluKEZMVF9N
QVgsIHN0ZDo6bWF4KC1GTFRfTUFYLCBjb25zdFVuaW9uLT5nZXRGQ29uc3QoKSkpOworICAgICAg
ICAgICAgd3JpdGVGbG9hdChvdXQsIGNvbnN0VW5pb24tPmdldEZDb25zdCgpKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVidEludDoKICAgICAgICAgICAgIG91dCA8PCBjb25z
dFVuaW9uLT5nZXRJQ29uc3QoKTsKQEAgLTUzLDE0ICs2OCwxNCBAQCB2b2lkIFdyaXRlU2luZ2xl
Q29uc3RhbnQoVEluZm9TaW5rQmFzZSAmb3V0LCBjb25zdCBUQ29uc3RhbnRVbmlvbiAqY29uc3Qg
Y29uc3RVbgogICAgIH0KIH0KIAotY29uc3QgVENvbnN0YW50VW5pb24gKldyaXRlQ29uc3RhbnRV
bmlvbkFycmF5KFRJbmZvU2lua0Jhc2UgJm91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAqY29uc3QgY29uc3RVbmlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
aXplX3Qgc2l6ZSkKK2NvbnN0IFRDb25zdGFudFVuaW9uICpPdXRwdXRITFNMOjp3cml0ZUNvbnN0
YW50VW5pb25BcnJheShUSW5mb1NpbmtCYXNlICZvdXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVENvbnN0YW50VW5pb24g
KmNvbnN0IGNvbnN0VW5pb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IHNpemUpCiB7CiAgICAgY29uc3QgVENv
bnN0YW50VW5pb24gKmNvbnN0VW5pb25JdGVyYXRlZCA9IGNvbnN0VW5pb247CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyssIGNvbnN0VW5pb25JdGVyYXRlZCsrKQogICAgIHsK
LSAgICAgICAgV3JpdGVTaW5nbGVDb25zdGFudChvdXQsIGNvbnN0VW5pb25JdGVyYXRlZCk7Cisg
ICAgICAgIHdyaXRlU2luZ2xlQ29uc3RhbnQob3V0LCBjb25zdFVuaW9uSXRlcmF0ZWQpOwogCiAg
ICAgICAgIGlmIChpICE9IHNpemUgLSAxKQogICAgICAgICB7CkBAIC03MCwxMSArODUsNiBAQCBj
b25zdCBUQ29uc3RhbnRVbmlvbiAqV3JpdGVDb25zdGFudFVuaW9uQXJyYXkoVEluZm9TaW5rQmFz
ZSAmb3V0LAogICAgIHJldHVybiBjb25zdFVuaW9uSXRlcmF0ZWQ7CiB9CiAKLX0gLy8gbmFtZXNw
YWNlCi0KLW5hbWVzcGFjZSBzaAotewotCiBPdXRwdXRITFNMOjpPdXRwdXRITFNMKHNoOjpHTGVu
dW0gc2hhZGVyVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciAmZXh0ZW5z
aW9uQmVoYXZpb3IsCkBAIC05NSwzNyArMTA1LDQzIEBAIE91dHB1dEhMU0w6Ok91dHB1dEhMU0wo
c2g6OkdMZW51bSBzaGFkZXJUeXBlLAogewogICAgIG1JbnNpZGVGdW5jdGlvbiA9IGZhbHNlOwog
Ci0gICAgbVVzZXNGcmFnQ29sb3IgPSBmYWxzZTsKLSAgICBtVXNlc0ZyYWdEYXRhID0gZmFsc2U7
Ci0gICAgbVVzZXNEZXB0aFJhbmdlID0gZmFsc2U7Ci0gICAgbVVzZXNGcmFnQ29vcmQgPSBmYWxz
ZTsKLSAgICBtVXNlc1BvaW50Q29vcmQgPSBmYWxzZTsKLSAgICBtVXNlc0Zyb250RmFjaW5nID0g
ZmFsc2U7Ci0gICAgbVVzZXNQb2ludFNpemUgPSBmYWxzZTsKLSAgICBtVXNlc0luc3RhbmNlSUQg
PSBmYWxzZTsKKyAgICBtVXNlc0ZyYWdDb2xvciAgICAgICAgICAgICAgID0gZmFsc2U7CisgICAg
bVVzZXNGcmFnRGF0YSAgICAgICAgICAgICAgICA9IGZhbHNlOworICAgIG1Vc2VzRGVwdGhSYW5n
ZSAgICAgICAgICAgICAgPSBmYWxzZTsKKyAgICBtVXNlc0ZyYWdDb29yZCAgICAgICAgICAgICAg
ID0gZmFsc2U7CisgICAgbVVzZXNQb2ludENvb3JkICAgICAgICAgICAgICA9IGZhbHNlOworICAg
IG1Vc2VzRnJvbnRGYWNpbmcgICAgICAgICAgICAgPSBmYWxzZTsKKyAgICBtVXNlc1BvaW50U2l6
ZSAgICAgICAgICAgICAgID0gZmFsc2U7CisgICAgbVVzZXNJbnN0YW5jZUlEICAgICAgICAgICAg
ICA9IGZhbHNlOwogICAgIG1Vc2VzVmVydGV4SUQgICAgICAgICAgICAgICAgPSBmYWxzZTsKLSAg
ICBtVXNlc0ZyYWdEZXB0aCA9IGZhbHNlOwotICAgIG1Vc2VzWG9yID0gZmFsc2U7Ci0gICAgbVVz
ZXNEaXNjYXJkUmV3cml0aW5nID0gZmFsc2U7Ci0gICAgbVVzZXNOZXN0ZWRCcmVhayA9IGZhbHNl
OworICAgIG1Vc2VzRnJhZ0RlcHRoICAgICAgICAgICAgICAgPSBmYWxzZTsKKyAgICBtVXNlc051
bVdvcmtHcm91cHMgICAgICAgICAgID0gZmFsc2U7CisgICAgbVVzZXNXb3JrR3JvdXBJRCAgICAg
ICAgICAgICA9IGZhbHNlOworICAgIG1Vc2VzTG9jYWxJbnZvY2F0aW9uSUQgICAgICAgPSBmYWxz
ZTsKKyAgICBtVXNlc0dsb2JhbEludm9jYXRpb25JRCAgICAgID0gZmFsc2U7CisgICAgbVVzZXNM
b2NhbEludm9jYXRpb25JbmRleCAgICA9IGZhbHNlOworICAgIG1Vc2VzWG9yICAgICAgICAgICAg
ICAgICAgICAgPSBmYWxzZTsKKyAgICBtVXNlc0Rpc2NhcmRSZXdyaXRpbmcgICAgICAgID0gZmFs
c2U7CisgICAgbVVzZXNOZXN0ZWRCcmVhayAgICAgICAgICAgICA9IGZhbHNlOwogICAgIG1SZXF1
aXJlc0lFRUVTdHJpY3RDb21waWxpbmcgPSBmYWxzZTsKIAogICAgIG1VbmlxdWVJbmRleCA9IDA7
CiAKLSAgICBtT3V0cHV0TG9kMEZ1bmN0aW9uID0gZmFsc2U7CisgICAgbU91dHB1dExvZDBGdW5j
dGlvbiAgICAgID0gZmFsc2U7CiAgICAgbUluc2lkZURpc2NvbnRpbnVvdXNMb29wID0gZmFsc2U7
Ci0gICAgbU5lc3RlZExvb3BEZXB0aCA9IDA7CisgICAgbU5lc3RlZExvb3BEZXB0aCAgICAgICAg
ID0gMDsKIAogICAgIG1FeGNlc3NpdmVMb29wSW5kZXggPSBOVUxMOwogCi0gICAgbVN0cnVjdHVy
ZUhMU0wgPSBuZXcgU3RydWN0dXJlSExTTDsKLSAgICBtVW5pZm9ybUhMU0wgPSBuZXcgVW5pZm9y
bUhMU0wobVN0cnVjdHVyZUhMU0wsIG91dHB1dFR5cGUsIHVuaWZvcm1zKTsKKyAgICBtU3RydWN0
dXJlSExTTCAgICAgICA9IG5ldyBTdHJ1Y3R1cmVITFNMOworICAgIG1Vbmlmb3JtSExTTCAgICAg
ICAgID0gbmV3IFVuaWZvcm1ITFNMKG1TdHJ1Y3R1cmVITFNMLCBvdXRwdXRUeXBlLCB1bmlmb3Jt
cyk7CiAgICAgbVRleHR1cmVGdW5jdGlvbkhMU0wgPSBuZXcgVGV4dHVyZUZ1bmN0aW9uSExTTDsK
IAogICAgIGlmIChtT3V0cHV0VHlwZSA9PSBTSF9ITFNMXzNfMF9PVVRQVVQpCiAgICAgewogICAg
ICAgICAvLyBGcmFnbWVudCBzaGFkZXJzIG5lZWQgZHhfRGVwdGhSYW5nZSwgZHhfVmlld0Nvb3Jk
cyBhbmQgZHhfRGVwdGhGcm9udC4KLSAgICAgICAgLy8gVmVydGV4IHNoYWRlcnMgbmVlZCBhIHNs
aWdodGx5IGRpZmZlcmVudCBzZXQ6IGR4X0RlcHRoUmFuZ2UsIGR4X1ZpZXdDb29yZHMgYW5kIGR4
X1ZpZXdBZGp1c3QuCisgICAgICAgIC8vIFZlcnRleCBzaGFkZXJzIG5lZWQgYSBzbGlnaHRseSBk
aWZmZXJlbnQgc2V0OiBkeF9EZXB0aFJhbmdlLCBkeF9WaWV3Q29vcmRzIGFuZAorICAgICAgICAv
LyBkeF9WaWV3QWRqdXN0LgogICAgICAgICAvLyBJbiBib3RoIGNhc2VzIHRvdGFsIDMgdW5pZm9y
bSByZWdpc3RlcnMgbmVlZCB0byBiZSByZXNlcnZlZC4KICAgICAgICAgbVVuaWZvcm1ITFNMLT5y
ZXNlcnZlVW5pZm9ybVJlZ2lzdGVycygzKTsKICAgICB9CkBAIC0xNTEsNyArMTY3LDcgQEAgT3V0
cHV0SExTTDo6fk91dHB1dEhMU0woKQogCiB2b2lkIE91dHB1dEhMU0w6Om91dHB1dChUSW50ZXJt
Tm9kZSAqdHJlZVJvb3QsIFRJbmZvU2lua0Jhc2UgJm9ialNpbmspCiB7Ci0gICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8VEludGVybVR5cGVkKj4gJmZsYWdnZWRTdHJ1Y3RzID0gRmxhZ1N0ZDE0MFZhbHVl
U3RydWN0cyh0cmVlUm9vdCk7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VEludGVybVR5cGVkICo+
ICZmbGFnZ2VkU3RydWN0cyA9IEZsYWdTdGQxNDBWYWx1ZVN0cnVjdHModHJlZVJvb3QpOwogICAg
IG1ha2VGbGFnZ2VkU3RydWN0TWFwcyhmbGFnZ2VkU3RydWN0cyk7CiAKICAgICBCdWlsdEluRnVu
Y3Rpb25FbXVsYXRvciBidWlsdEluRnVuY3Rpb25FbXVsYXRvcjsKQEAgLTE2MiwxMiArMTc4LDEx
IEBAIHZvaWQgT3V0cHV0SExTTDo6b3V0cHV0KFRJbnRlcm1Ob2RlICp0cmVlUm9vdCwgVEluZm9T
aW5rQmFzZSAmb2JqU2luaykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbVNoYWRlclZlcnNpb24pOwogICAgIH0KIAotICAgIGJ1aWx0
SW5GdW5jdGlvbkVtdWxhdG9yLk1hcmtCdWlsdEluRnVuY3Rpb25zRm9yRW11bGF0aW9uKHRyZWVS
b290KTsKKyAgICBidWlsdEluRnVuY3Rpb25FbXVsYXRvci5tYXJrQnVpbHRJbkZ1bmN0aW9uc0Zv
ckVtdWxhdGlvbih0cmVlUm9vdCk7CiAKICAgICAvLyBOb3cgdGhhdCB3ZSBhcmUgZG9uZSBjaGFu
Z2luZyB0aGUgQVNULCBkbyB0aGUgYW5hbHlzZXMgbmVlZCBmb3IgSExTTCBnZW5lcmF0aW9uCi0g
ICAgQ2FsbERBRzo6SW5pdFJlc3VsdCBzdWNjZXNzID0gbUNhbGxEYWcuaW5pdCh0cmVlUm9vdCwg
Jm9ialNpbmspOworICAgIENhbGxEQUc6OkluaXRSZXN1bHQgc3VjY2VzcyA9IG1DYWxsRGFnLmlu
aXQodHJlZVJvb3QsIG51bGxwdHIpOwogICAgIEFTU0VSVChzdWNjZXNzID09IENhbGxEQUc6OklO
SVREQUdfU1VDQ0VTUyk7Ci0gICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShzdWNjZXNzKTsK
ICAgICBtQVNUTWV0YWRhdGFMaXN0ID0gQ3JlYXRlQVNUTWV0YWRhdGFITFNMKHRyZWVSb290LCBt
Q2FsbERhZyk7CiAKICAgICAvLyBPdXRwdXQgdGhlIGJvZHkgYW5kIGZvb3RlciBmaXJzdCB0byBk
ZXRlcm1pbmUgd2hhdCBoYXMgdG8gZ28gaW4gdGhlIGhlYWRlcgpAQCAtMTg2LDcgKzIwMSw3IEBA
IHZvaWQgT3V0cHV0SExTTDo6b3V0cHV0KFRJbnRlcm1Ob2RlICp0cmVlUm9vdCwgVEluZm9TaW5r
QmFzZSAmb2JqU2luaykKICAgICBvYmpTaW5rIDw8IG1Cb2R5LmNfc3RyKCk7CiAgICAgb2JqU2lu
ayA8PCBtRm9vdGVyLmNfc3RyKCk7CiAKLSAgICBidWlsdEluRnVuY3Rpb25FbXVsYXRvci5DbGVh
bnVwKCk7CisgICAgYnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuY2xlYW51cCgpOwogfQogCiB2b2lk
IE91dHB1dEhMU0w6Om1ha2VGbGFnZ2VkU3RydWN0TWFwcyhjb25zdCBzdGQ6OnZlY3RvcjxUSW50
ZXJtVHlwZWQgKj4gJmZsYWdnZWRTdHJ1Y3RzKQpAQCAtMjA2LDcgKzIyMSw4IEBAIHZvaWQgT3V0
cHV0SExTTDo6bWFrZUZsYWdnZWRTdHJ1Y3RNYXBzKGNvbnN0IHN0ZDo6dmVjdG9yPFRJbnRlcm1U
eXBlZCAqPiAmZmxhZ2dlCiAKICAgICAgICAgbUZsYWdnZWRTdHJ1Y3RPcmlnaW5hbE5hbWVzW2Zs
YWdnZWROb2RlXSA9IHN0cnVjdE5hbWU7CiAKLSAgICAgICAgZm9yIChzaXplX3QgcG9zID0gc3Ry
dWN0TmFtZS5maW5kKCcuJyk7IHBvcyAhPSBzdGQ6OnN0cmluZzo6bnBvczsgcG9zID0gc3RydWN0
TmFtZS5maW5kKCcuJykpCisgICAgICAgIGZvciAoc2l6ZV90IHBvcyA9IHN0cnVjdE5hbWUuZmlu
ZCgnLicpOyBwb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3M7CisgICAgICAgICAgICAgcG9zICAgICAg
ICA9IHN0cnVjdE5hbWUuZmluZCgnLicpKQogICAgICAgICB7CiAgICAgICAgICAgICBzdHJ1Y3RO
YW1lLmVyYXNlKHBvcywgMSk7CiAgICAgICAgIH0KQEAgLTIyNywxMyArMjQzLDE1IEBAIGNvbnN0
IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1bnNpZ25lZCBpbnQ+ICZPdXRwdXRITFNMOjpnZXRVbmlm
b3JtUmVnaXN0ZXJNYXAoKSBjCiAKIGludCBPdXRwdXRITFNMOjp2ZWN0b3JTaXplKGNvbnN0IFRU
eXBlICZ0eXBlKSBjb25zdAogewotICAgIGludCBlbGVtZW50U2l6ZSA9IHR5cGUuaXNNYXRyaXgo
KSA/IHR5cGUuZ2V0Q29scygpIDogMTsKKyAgICBpbnQgZWxlbWVudFNpemUgICAgICAgID0gdHlw
ZS5pc01hdHJpeCgpID8gdHlwZS5nZXRDb2xzKCkgOiAxOwogICAgIHVuc2lnbmVkIGludCBhcnJh
eVNpemUgPSB0eXBlLmlzQXJyYXkoKSA/IHR5cGUuZ2V0QXJyYXlTaXplKCkgOiAxdTsKIAogICAg
IHJldHVybiBlbGVtZW50U2l6ZSAqIGFycmF5U2l6ZTsKIH0KIAotVFN0cmluZyBPdXRwdXRITFNM
OjpzdHJ1Y3RJbml0aWFsaXplclN0cmluZyhpbnQgaW5kZW50LCBjb25zdCBUU3RydWN0dXJlICZz
dHJ1Y3R1cmUsIGNvbnN0IFRTdHJpbmcgJnJoc1N0cnVjdE5hbWUpCitUU3RyaW5nIE91dHB1dEhM
U0w6OnN0cnVjdEluaXRpYWxpemVyU3RyaW5nKGludCBpbmRlbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdHVyZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmlu
ZyAmcmhzU3RydWN0TmFtZSkKIHsKICAgICBUU3RyaW5nIGluaXQ7CiAKQEAgLTI0NSw3ICsyNjMs
NyBAQCBUU3RyaW5nIE91dHB1dEhMU0w6OnN0cnVjdEluaXRpYWxpemVyU3RyaW5nKGludCBpbmRl
bnQsIGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdAogICAgICAgICBwcmVJbmRlbnRTdHJpbmcgKz0g
JyAnOwogICAgIH0KIAotICAgIGZvciAoaW50IHNwYWNlcyA9IDA7IHNwYWNlcyA8ICgoaW5kZW50
KzEpICogNCk7IHNwYWNlcysrKQorICAgIGZvciAoaW50IHNwYWNlcyA9IDA7IHNwYWNlcyA8ICgo
aW5kZW50ICsgMSkgKiA0KTsgc3BhY2VzKyspCiAgICAgewogICAgICAgICBmdWxsSW5kZW50U3Ry
aW5nICs9ICcgJzsKICAgICB9CkBAIC0yNTUsOSArMjczLDkgQEAgVFN0cmluZyBPdXRwdXRITFNM
OjpzdHJ1Y3RJbml0aWFsaXplclN0cmluZyhpbnQgaW5kZW50LCBjb25zdCBUU3RydWN0dXJlICZz
dHJ1Y3QKICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSBzdHJ1Y3R1cmUuZmllbGRzKCk7
CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgZmllbGRJbmRleCA9IDA7IGZpZWxkSW5kZXggPCBmaWVs
ZHMuc2l6ZSgpOyBmaWVsZEluZGV4KyspCiAgICAgewotICAgICAgICBjb25zdCBURmllbGQgJmZp
ZWxkID0gKmZpZWxkc1tmaWVsZEluZGV4XTsKKyAgICAgICAgY29uc3QgVEZpZWxkICZmaWVsZCAg
ICAgID0gKmZpZWxkc1tmaWVsZEluZGV4XTsKICAgICAgICAgY29uc3QgVFN0cmluZyAmZmllbGRO
YW1lID0gcmhzU3RydWN0TmFtZSArICIuIiArIERlY29yYXRlKGZpZWxkLm5hbWUoKSk7Ci0gICAg
ICAgIGNvbnN0IFRUeXBlICZmaWVsZFR5cGUgPSAqZmllbGQudHlwZSgpOworICAgICAgICBjb25z
dCBUVHlwZSAmZmllbGRUeXBlICAgPSAqZmllbGQudHlwZSgpOwogCiAgICAgICAgIGlmIChmaWVs
ZFR5cGUuZ2V0U3RydWN0KCkpCiAgICAgICAgIHsKQEAgLTI4MCwxMCArMjk4LDEyIEBAIHZvaWQg
T3V0cHV0SExTTDo6aGVhZGVyKFRJbmZvU2lua0Jhc2UgJm91dCwgY29uc3QgQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3IgKmJ1aWx0CiAgICAgVFN0cmluZyBhdHRyaWJ1dGVzOwogICAgIFRTdHJpbmcg
ZmxhZ2dlZFN0cnVjdHM7CiAKLSAgICBmb3IgKHN0ZDo6bWFwPFRJbnRlcm1UeXBlZCosIFRTdHJp
bmc+Ojpjb25zdF9pdGVyYXRvciBmbGFnZ2VkU3RydWN0SXQgPSBtRmxhZ2dlZFN0cnVjdE1hcHBl
ZE5hbWVzLmJlZ2luKCk7IGZsYWdnZWRTdHJ1Y3RJdCAhPSBtRmxhZ2dlZFN0cnVjdE1hcHBlZE5h
bWVzLmVuZCgpOyBmbGFnZ2VkU3RydWN0SXQrKykKKyAgICBmb3IgKHN0ZDo6bWFwPFRJbnRlcm1U
eXBlZCAqLCBUU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgZmxhZ2dlZFN0cnVjdEl0ID0KKyAgICAg
ICAgICAgICBtRmxhZ2dlZFN0cnVjdE1hcHBlZE5hbWVzLmJlZ2luKCk7CisgICAgICAgICBmbGFn
Z2VkU3RydWN0SXQgIT0gbUZsYWdnZWRTdHJ1Y3RNYXBwZWROYW1lcy5lbmQoKTsgZmxhZ2dlZFN0
cnVjdEl0KyspCiAgICAgewotICAgICAgICBUSW50ZXJtVHlwZWQgKnN0cnVjdE5vZGUgPSBmbGFn
Z2VkU3RydWN0SXQtPmZpcnN0OwotICAgICAgICBjb25zdCBUU3RyaW5nICZtYXBwZWROYW1lID0g
ZmxhZ2dlZFN0cnVjdEl0LT5zZWNvbmQ7CisgICAgICAgIFRJbnRlcm1UeXBlZCAqc3RydWN0Tm9k
ZSAgICA9IGZsYWdnZWRTdHJ1Y3RJdC0+Zmlyc3Q7CisgICAgICAgIGNvbnN0IFRTdHJpbmcgJm1h
cHBlZE5hbWUgICA9IGZsYWdnZWRTdHJ1Y3RJdC0+c2Vjb25kOwogICAgICAgICBjb25zdCBUU3Ry
dWN0dXJlICZzdHJ1Y3R1cmUgPSAqc3RydWN0Tm9kZS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOwog
ICAgICAgICBjb25zdCBUU3RyaW5nICZvcmlnaW5hbE5hbWUgPSBtRmxhZ2dlZFN0cnVjdE9yaWdp
bmFsTmFtZXNbc3RydWN0Tm9kZV07CiAKQEAgLTI5MiwyMiArMzEyLDI1IEBAIHZvaWQgT3V0cHV0
SExTTDo6aGVhZGVyKFRJbmZvU2lua0Jhc2UgJm91dCwgY29uc3QgQnVpbHRJbkZ1bmN0aW9uRW11
bGF0b3IgKmJ1aWx0CiAgICAgICAgIGZsYWdnZWRTdHJ1Y3RzICs9ICJcbiI7CiAgICAgfQogCi0g
ICAgZm9yIChSZWZlcmVuY2VkU3ltYm9sczo6Y29uc3RfaXRlcmF0b3IgdmFyeWluZyA9IG1SZWZl
cmVuY2VkVmFyeWluZ3MuYmVnaW4oKTsgdmFyeWluZyAhPSBtUmVmZXJlbmNlZFZhcnlpbmdzLmVu
ZCgpOyB2YXJ5aW5nKyspCisgICAgZm9yIChSZWZlcmVuY2VkU3ltYm9sczo6Y29uc3RfaXRlcmF0
b3IgdmFyeWluZyA9IG1SZWZlcmVuY2VkVmFyeWluZ3MuYmVnaW4oKTsKKyAgICAgICAgIHZhcnlp
bmcgIT0gbVJlZmVyZW5jZWRWYXJ5aW5ncy5lbmQoKTsgdmFyeWluZysrKQogICAgIHsKLSAgICAg
ICAgY29uc3QgVFR5cGUgJnR5cGUgPSB2YXJ5aW5nLT5zZWNvbmQtPmdldFR5cGUoKTsKKyAgICAg
ICAgY29uc3QgVFR5cGUgJnR5cGUgICA9IHZhcnlpbmctPnNlY29uZC0+Z2V0VHlwZSgpOwogICAg
ICAgICBjb25zdCBUU3RyaW5nICZuYW1lID0gdmFyeWluZy0+c2Vjb25kLT5nZXRTeW1ib2woKTsK
IAogICAgICAgICAvLyBQcm9ncmFtIGxpbmtpbmcgZGVwZW5kcyBvbiB0aGlzIGV4YWN0IGZvcm1h
dAotICAgICAgICB2YXJ5aW5ncyArPSAic3RhdGljICIgKyBJbnRlcnBvbGF0aW9uU3RyaW5nKHR5
cGUuZ2V0UXVhbGlmaWVyKCkpICsgIiAiICsgVHlwZVN0cmluZyh0eXBlKSArICIgIiArCi0gICAg
ICAgICAgICAgICAgICAgIERlY29yYXRlKG5hbWUpICsgQXJyYXlTdHJpbmcodHlwZSkgKyAiID0g
IiArIGluaXRpYWxpemVyKHR5cGUpICsgIjtcbiI7CisgICAgICAgIHZhcnlpbmdzICs9ICJzdGF0
aWMgIiArIEludGVycG9sYXRpb25TdHJpbmcodHlwZS5nZXRRdWFsaWZpZXIoKSkgKyAiICIgKyBU
eXBlU3RyaW5nKHR5cGUpICsKKyAgICAgICAgICAgICAgICAgICAgIiAiICsgRGVjb3JhdGUobmFt
ZSkgKyBBcnJheVN0cmluZyh0eXBlKSArICIgPSAiICsgaW5pdGlhbGl6ZXIodHlwZSkgKyAiO1xu
IjsKICAgICB9CiAKLSAgICBmb3IgKFJlZmVyZW5jZWRTeW1ib2xzOjpjb25zdF9pdGVyYXRvciBh
dHRyaWJ1dGUgPSBtUmVmZXJlbmNlZEF0dHJpYnV0ZXMuYmVnaW4oKTsgYXR0cmlidXRlICE9IG1S
ZWZlcmVuY2VkQXR0cmlidXRlcy5lbmQoKTsgYXR0cmlidXRlKyspCisgICAgZm9yIChSZWZlcmVu
Y2VkU3ltYm9sczo6Y29uc3RfaXRlcmF0b3IgYXR0cmlidXRlID0gbVJlZmVyZW5jZWRBdHRyaWJ1
dGVzLmJlZ2luKCk7CisgICAgICAgICBhdHRyaWJ1dGUgIT0gbVJlZmVyZW5jZWRBdHRyaWJ1dGVz
LmVuZCgpOyBhdHRyaWJ1dGUrKykKICAgICB7Ci0gICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlID0g
YXR0cmlidXRlLT5zZWNvbmQtPmdldFR5cGUoKTsKKyAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUg
ICA9IGF0dHJpYnV0ZS0+c2Vjb25kLT5nZXRUeXBlKCk7CiAgICAgICAgIGNvbnN0IFRTdHJpbmcg
Jm5hbWUgPSBhdHRyaWJ1dGUtPnNlY29uZC0+Z2V0U3ltYm9sKCk7CiAKLSAgICAgICAgYXR0cmli
dXRlcyArPSAic3RhdGljICIgKyBUeXBlU3RyaW5nKHR5cGUpICsgIiAiICsgRGVjb3JhdGUobmFt
ZSkgKyBBcnJheVN0cmluZyh0eXBlKSArICIgPSAiICsgaW5pdGlhbGl6ZXIodHlwZSkgKyAiO1xu
IjsKKyAgICAgICAgYXR0cmlidXRlcyArPSAic3RhdGljICIgKyBUeXBlU3RyaW5nKHR5cGUpICsg
IiAiICsgRGVjb3JhdGUobmFtZSkgKyBBcnJheVN0cmluZyh0eXBlKSArCisgICAgICAgICAgICAg
ICAgICAgICAgIiA9ICIgKyBpbml0aWFsaXplcih0eXBlKSArICI7XG4iOwogICAgIH0KIAogICAg
IG91dCA8PCBtU3RydWN0dXJlSExTTC0+c3RydWN0c0hlYWRlcigpOwpAQCAtMzY2LDIxICszODks
MjQgQEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoVEluZm9TaW5rQmFzZSAmb3V0LCBjb25zdCBC
dWlsdEluRnVuY3Rpb25FbXVsYXRvciAqYnVpbHQKICAgICBpZiAobVNoYWRlclR5cGUgPT0gR0xf
RlJBR01FTlRfU0hBREVSKQogICAgIHsKICAgICAgICAgVEV4dGVuc2lvbkJlaGF2aW9yOjpjb25z
dF9pdGVyYXRvciBpdGVyID0gbUV4dGVuc2lvbkJlaGF2aW9yLmZpbmQoIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiKTsKLSAgICAgICAgY29uc3QgYm9vbCB1c2luZ01SVEV4dGVuc2lvbiA9IChpdGVyICE9
IG1FeHRlbnNpb25CZWhhdmlvci5lbmQoKSAmJiAoaXRlci0+c2Vjb25kID09IEVCaEVuYWJsZSB8
fCBpdGVyLT5zZWNvbmQgPT0gRUJoUmVxdWlyZSkpOworICAgICAgICBjb25zdCBib29sIHVzaW5n
TVJURXh0ZW5zaW9uICAgICAgICAgICAgPSAoaXRlciAhPSBtRXh0ZW5zaW9uQmVoYXZpb3IuZW5k
KCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXRlci0+c2Vj
b25kID09IEVCaEVuYWJsZSB8fCBpdGVyLT5zZWNvbmQgPT0gRUJoUmVxdWlyZSkpOwogCiAgICAg
ICAgIG91dCA8PCAiLy8gVmFyeWluZ3NcbiI7Ci0gICAgICAgIG91dCA8PCAgdmFyeWluZ3M7Cisg
ICAgICAgIG91dCA8PCB2YXJ5aW5nczsKICAgICAgICAgb3V0IDw8ICJcbiI7CiAKICAgICAgICAg
aWYgKG1TaGFkZXJWZXJzaW9uID49IDMwMCkKICAgICAgICAgewotICAgICAgICAgICAgZm9yIChS
ZWZlcmVuY2VkU3ltYm9sczo6Y29uc3RfaXRlcmF0b3Igb3V0cHV0VmFyaWFibGVJdCA9IG1SZWZl
cmVuY2VkT3V0cHV0VmFyaWFibGVzLmJlZ2luKCk7IG91dHB1dFZhcmlhYmxlSXQgIT0gbVJlZmVy
ZW5jZWRPdXRwdXRWYXJpYWJsZXMuZW5kKCk7IG91dHB1dFZhcmlhYmxlSXQrKykKKyAgICAgICAg
ICAgIGZvciAoUmVmZXJlbmNlZFN5bWJvbHM6OmNvbnN0X2l0ZXJhdG9yIG91dHB1dFZhcmlhYmxl
SXQgPQorICAgICAgICAgICAgICAgICAgICAgbVJlZmVyZW5jZWRPdXRwdXRWYXJpYWJsZXMuYmVn
aW4oKTsKKyAgICAgICAgICAgICAgICAgb3V0cHV0VmFyaWFibGVJdCAhPSBtUmVmZXJlbmNlZE91
dHB1dFZhcmlhYmxlcy5lbmQoKTsgb3V0cHV0VmFyaWFibGVJdCsrKQogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJnZhcmlhYmxlTmFtZSA9IG91dHB1dFZhcmlh
YmxlSXQtPmZpcnN0OwotICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZ2YXJpYWJsZVR5cGUg
PSBvdXRwdXRWYXJpYWJsZUl0LT5zZWNvbmQtPmdldFR5cGUoKTsKKyAgICAgICAgICAgICAgICBj
b25zdCBUVHlwZSAmdmFyaWFibGVUeXBlICAgPSBvdXRwdXRWYXJpYWJsZUl0LT5zZWNvbmQtPmdl
dFR5cGUoKTsKIAotICAgICAgICAgICAgICAgIG91dCA8PCAic3RhdGljICIgKyBUeXBlU3RyaW5n
KHZhcmlhYmxlVHlwZSkgKyAiIG91dF8iICsgdmFyaWFibGVOYW1lICsgQXJyYXlTdHJpbmcodmFy
aWFibGVUeXBlKSArCi0gICAgICAgICAgICAgICAgICAgICAgICIgPSAiICsgaW5pdGlhbGl6ZXIo
dmFyaWFibGVUeXBlKSArICI7XG4iOworICAgICAgICAgICAgICAgIG91dCA8PCAic3RhdGljICIg
KyBUeXBlU3RyaW5nKHZhcmlhYmxlVHlwZSkgKyAiIG91dF8iICsgdmFyaWFibGVOYW1lICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5U3RyaW5nKHZhcmlhYmxlVHlwZSkgKyAiID0g
IiArIGluaXRpYWxpemVyKHZhcmlhYmxlVHlwZSkgKyAiO1xuIjsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICBlbHNlCkBAIC0zODgsNyArNDE0LDcgQEAgdm9pZCBPdXRwdXRITFNM
OjpoZWFkZXIoVEluZm9TaW5rQmFzZSAmb3V0LCBjb25zdCBCdWlsdEluRnVuY3Rpb25FbXVsYXRv
ciAqYnVpbHQKICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBudW1Db2xvclZhbHVlcyA9
IHVzaW5nTVJURXh0ZW5zaW9uID8gbU51bVJlbmRlclRhcmdldHMgOiAxOwogCiAgICAgICAgICAg
ICBvdXQgPDwgInN0YXRpYyBmbG9hdDQgZ2xfQ29sb3JbIiA8PCBudW1Db2xvclZhbHVlcyA8PCAi
XSA9XG4iCi0gICAgICAgICAgICAgICAgICAgIntcbiI7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIjsKICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVtQ29sb3JWYWx1ZXM7IGkrKykK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBmbG9hdDQoMCwgMCwg
MCwgMCkiOwpAQCAtNDkxLDcgKzUxNyw4IEBAIHZvaWQgT3V0cHV0SExTTDo6aGVhZGVyKFRJbmZv
U2lua0Jhc2UgJm91dCwgY29uc3QgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmJ1aWx0CiAKICAg
ICAgICAgaWYgKG1Vc2VzRGVwdGhSYW5nZSkKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8
ICJzdGF0aWMgZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnMgZ2xfRGVwdGhSYW5nZSA9IHtkeF9EZXB0
aFJhbmdlLngsIGR4X0RlcHRoUmFuZ2UueSwgZHhfRGVwdGhSYW5nZS56fTtcbiIKKyAgICAgICAg
ICAgIG91dCA8PCAic3RhdGljIGdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJzIGdsX0RlcHRoUmFuZ2Ug
PSB7ZHhfRGVwdGhSYW5nZS54LCAiCisgICAgICAgICAgICAgICAgICAgImR4X0RlcHRoUmFuZ2Uu
eSwgZHhfRGVwdGhSYW5nZS56fTtcbiIKICAgICAgICAgICAgICAgICAgICAiXG4iOwogICAgICAg
ICB9CiAKQEAgLTUxOCwxMCArNTQ1LDEwIEBAIHZvaWQgT3V0cHV0SExTTDo6aGVhZGVyKFRJbmZv
U2lua0Jhc2UgJm91dCwgY29uc3QgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmJ1aWx0CiAgICAg
ICAgICAgICBvdXQgPDwgIiNkZWZpbmUgR0xfVVNFU19GUkFHX0RBVEFcbiI7CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgZWxzZSAgIC8vIFZlcnRleCBzaGFkZXIKKyAgICBlbHNlIGlmIChtU2hhZGVy
VHlwZSA9PSBHTF9WRVJURVhfU0hBREVSKQogICAgIHsKICAgICAgICAgb3V0IDw8ICIvLyBBdHRy
aWJ1dGVzXG4iOwotICAgICAgICBvdXQgPDwgIGF0dHJpYnV0ZXM7CisgICAgICAgIG91dCA8PCBh
dHRyaWJ1dGVzOwogICAgICAgICBvdXQgPDwgIlxuIgogICAgICAgICAgICAgICAgInN0YXRpYyBm
bG9hdDQgZ2xfUG9zaXRpb24gPSBmbG9hdDQoMCwgMCwgMCwgMCk7XG4iOwogCkBAIC01NDIsNyAr
NTY5LDcgQEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoVEluZm9TaW5rQmFzZSAmb3V0LCBjb25z
dCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqYnVpbHQKIAogICAgICAgICBvdXQgPDwgIlxuIgog
ICAgICAgICAgICAgICAgIi8vIFZhcnlpbmdzXG4iOwotICAgICAgICBvdXQgPDwgIHZhcnlpbmdz
OworICAgICAgICBvdXQgPDwgdmFyeWluZ3M7CiAgICAgICAgIG91dCA8PCAiXG4iOwogCiAgICAg
ICAgIGlmIChtVXNlc0RlcHRoUmFuZ2UpCkBAIC01NTksNyArNTg2LDcgQEAgdm9pZCBPdXRwdXRI
TFNMOjpoZWFkZXIoVEluZm9TaW5rQmFzZSAmb3V0LCBjb25zdCBCdWlsdEluRnVuY3Rpb25FbXVs
YXRvciAqYnVpbHQKICAgICAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0xfNF8xX09VVFBV
VCB8fCBtT3V0cHV0VHlwZSA9PSBTSF9ITFNMXzRfMF9GTDlfM19PVVRQVVQpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIG91dCA8PCAiY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3Rlcihi
MSlcbiIKLSAgICAgICAgICAgICAgICAgICAgIntcbiI7CisgICAgICAgICAgICAgICAgICAgIntc
biI7CiAKICAgICAgICAgICAgIGlmIChtVXNlc0RlcHRoUmFuZ2UpCiAgICAgICAgICAgICB7CkBA
IC01OTYsNyArNjIzLDggQEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoVEluZm9TaW5rQmFzZSAm
b3V0LCBjb25zdCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqYnVpbHQKIAogICAgICAgICBpZiAo
bVVzZXNEZXB0aFJhbmdlKQogICAgICAgICB7Ci0gICAgICAgICAgICBvdXQgPDwgInN0YXRpYyBn
bF9EZXB0aFJhbmdlUGFyYW1ldGVycyBnbF9EZXB0aFJhbmdlID0ge2R4X0RlcHRoUmFuZ2UueCwg
ZHhfRGVwdGhSYW5nZS55LCBkeF9EZXB0aFJhbmdlLnp9O1xuIgorICAgICAgICAgICAgb3V0IDw8
ICJzdGF0aWMgZ2xfRGVwdGhSYW5nZVBhcmFtZXRlcnMgZ2xfRGVwdGhSYW5nZSA9IHtkeF9EZXB0
aFJhbmdlLngsICIKKyAgICAgICAgICAgICAgICAgICAiZHhfRGVwdGhSYW5nZS55LCBkeF9EZXB0
aFJhbmdlLnp9O1xuIgogICAgICAgICAgICAgICAgICAgICJcbiI7CiAgICAgICAgIH0KIApAQCAt
NjA4LDYgKzYzNiw0MCBAQCB2b2lkIE91dHB1dEhMU0w6OmhlYWRlcihUSW5mb1NpbmtCYXNlICZv
dXQsIGNvbnN0IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICpidWlsdAogICAgICAgICAgICAgb3V0
IDw8ICJcbiI7CiAgICAgICAgIH0KICAgICB9CisgICAgZWxzZSAgLy8gQ29tcHV0ZSBzaGFkZXIK
KyAgICB7CisgICAgICAgIEFTU0VSVChtU2hhZGVyVHlwZSA9PSBHTF9DT01QVVRFX1NIQURFUik7
CisgICAgICAgIGlmIChtVXNlc051bVdvcmtHcm91cHMpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG91dCA8PCAiY2J1ZmZlciBEcml2ZXJDb25zdGFudHMgOiByZWdpc3RlcihiMSlcbiIKKyAgICAg
ICAgICAgICAgICAgICAie1xuIjsKKyAgICAgICAgICAgIG91dCA8PCAiICAgIHVpbnQzIGdsX051
bVdvcmtHcm91cHMgOiBwYWNrb2Zmc2V0KGMwKTtcbiI7CisgICAgICAgICAgICBvdXQgPDwgIn07
XG4iOworICAgICAgICB9CisKKyAgICAgICAgLy8gRm9sbG93IGJ1aWx0LWluIHZhcmlhYmxlcyB3
b3VsZCBiZSBpbml0aWFsaXplZCBpbgorICAgICAgICAvLyBEeW5hbWljSExTTDo6Z2VuZXJhdGVD
b21wdXRlU2hhZGVyTGlua0hMU0wsIGlmIHRoZXkKKyAgICAgICAgLy8gYXJlIHVzZWQgaW4gY29t
cHV0ZSBzaGFkZXIuCisgICAgICAgIGlmIChtVXNlc1dvcmtHcm91cElEKQorICAgICAgICB7Cisg
ICAgICAgICAgICBvdXQgPDwgInN0YXRpYyB1aW50MyBnbF9Xb3JrR3JvdXBJRCA9IHVpbnQzKDAs
IDAsIDApO1xuIjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtVXNlc0xvY2FsSW52b2NhdGlv
bklEKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgInN0YXRpYyB1aW50MyBnbF9Mb2Nh
bEludm9jYXRpb25JRCA9IHVpbnQzKDAsIDAsIDApO1xuIjsKKyAgICAgICAgfQorCisgICAgICAg
IGlmIChtVXNlc0dsb2JhbEludm9jYXRpb25JRCkKKyAgICAgICAgeworICAgICAgICAgICAgb3V0
IDw8ICJzdGF0aWMgdWludDMgZ2xfR2xvYmFsSW52b2NhdGlvbklEID0gdWludDMoMCwgMCwgMCk7
XG4iOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1Vc2VzTG9jYWxJbnZvY2F0aW9uSW5kZXgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAic3RhdGljIHVpbnQgZ2xfTG9jYWxJbnZv
Y2F0aW9uSW5kZXggPSB1aW50KDApO1xuIjsKKyAgICAgICAgfQorICAgIH0KIAogICAgIGJvb2wg
Z2V0RGltZW5zaW9uc0lnbm9yZXNCYXNlTGV2ZWwgPQogICAgICAgICAobUNvbXBpbGVPcHRpb25z
ICYgU0hfSExTTF9HRVRfRElNRU5TSU9OU19JR05PUkVTX0JBU0VfTEVWRUwpICE9IDA7CkBAIC02
NDMsNiArNzA1LDMxIEBAIHZvaWQgT3V0cHV0SExTTDo6aGVhZGVyKFRJbmZvU2lua0Jhc2UgJm91
dCwgY29uc3QgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmJ1aWx0CiAgICAgICAgIG91dCA8PCAi
I2RlZmluZSBHTF9VU0VTX0RFUFRIX1JBTkdFXG4iOwogICAgIH0KIAorICAgIGlmIChtVXNlc051
bVdvcmtHcm91cHMpCisgICAgeworICAgICAgICBvdXQgPDwgIiNkZWZpbmUgR0xfVVNFU19OVU1f
V09SS19HUk9VUFNcbiI7CisgICAgfQorCisgICAgaWYgKG1Vc2VzV29ya0dyb3VwSUQpCisgICAg
eworICAgICAgICBvdXQgPDwgIiNkZWZpbmUgR0xfVVNFU19XT1JLX0dST1VQX0lEXG4iOworICAg
IH0KKworICAgIGlmIChtVXNlc0xvY2FsSW52b2NhdGlvbklEKQorICAgIHsKKyAgICAgICAgb3V0
IDw8ICIjZGVmaW5lIEdMX1VTRVNfTE9DQUxfSU5WT0NBVElPTl9JRFxuIjsKKyAgICB9CisKKyAg
ICBpZiAobVVzZXNHbG9iYWxJbnZvY2F0aW9uSUQpCisgICAgeworICAgICAgICBvdXQgPDwgIiNk
ZWZpbmUgR0xfVVNFU19HTE9CQUxfSU5WT0NBVElPTl9JRFxuIjsKKyAgICB9CisKKyAgICBpZiAo
bVVzZXNMb2NhbEludm9jYXRpb25JbmRleCkKKyAgICB7CisgICAgICAgIG91dCA8PCAiI2RlZmlu
ZSBHTF9VU0VTX0xPQ0FMX0lOVk9DQVRJT05fSU5ERVhcbiI7CisgICAgfQorCiAgICAgaWYgKG1V
c2VzWG9yKQogICAgIHsKICAgICAgICAgb3V0IDw8ICJib29sIHhvcihib29sIHAsIGJvb2wgcSlc
biIKQEAgLTY1Miw3ICs3MzksNyBAQCB2b2lkIE91dHB1dEhMU0w6OmhlYWRlcihUSW5mb1NpbmtC
YXNlICZvdXQsIGNvbnN0IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICpidWlsdAogICAgICAgICAg
ICAgICAgIlxuIjsKICAgICB9CiAKLSAgICBidWlsdEluRnVuY3Rpb25FbXVsYXRvci0+T3V0cHV0
RW11bGF0ZWRGdW5jdGlvbnMob3V0KTsKKyAgICBidWlsdEluRnVuY3Rpb25FbXVsYXRvci0+b3V0
cHV0RW11bGF0ZWRGdW5jdGlvbnMob3V0KTsKIH0KIAogdm9pZCBPdXRwdXRITFNMOjp2aXNpdFN5
bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKQpAQCAtNjc5LDcgKzc2Niw3IEBAIHZvaWQgT3V0cHV0
SExTTDo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkKIAogICAgICAgICBpZiAocXVh
bGlmaWVyID09IEV2cVVuaWZvcm0pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBl
ICZub2RlVHlwZSA9IG5vZGUtPmdldFR5cGUoKTsKKyAgICAgICAgICAgIGNvbnN0IFRUeXBlICZu
b2RlVHlwZSAgICAgICAgICAgICAgICAgPSBub2RlLT5nZXRUeXBlKCk7CiAgICAgICAgICAgICBj
b25zdCBUSW50ZXJmYWNlQmxvY2sgKmludGVyZmFjZUJsb2NrID0gbm9kZVR5cGUuZ2V0SW50ZXJm
YWNlQmxvY2soKTsKIAogICAgICAgICAgICAgaWYgKGludGVyZmFjZUJsb2NrKQpAQCAtNzU2LDYg
Kzg0MywzMSBAQCB2b2lkIE91dHB1dEhMU0w6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKm5v
ZGUpCiAgICAgICAgICAgICBtVXNlc0ZyYWdEZXB0aCA9IHRydWU7CiAgICAgICAgICAgICBvdXQg
PDwgImdsX0RlcHRoIjsKICAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChxdWFsaWZpZXIgPT0g
RXZxTnVtV29ya0dyb3VwcykKKyAgICAgICAgeworICAgICAgICAgICAgbVVzZXNOdW1Xb3JrR3Jv
dXBzID0gdHJ1ZTsKKyAgICAgICAgICAgIG91dCA8PCBuYW1lOworICAgICAgICB9CisgICAgICAg
IGVsc2UgaWYgKHF1YWxpZmllciA9PSBFdnFXb3JrR3JvdXBJRCkKKyAgICAgICAgeworICAgICAg
ICAgICAgbVVzZXNXb3JrR3JvdXBJRCA9IHRydWU7CisgICAgICAgICAgICBvdXQgPDwgbmFtZTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChxdWFsaWZpZXIgPT0gRXZxTG9jYWxJbnZvY2F0
aW9uSUQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1Vc2VzTG9jYWxJbnZvY2F0aW9uSUQgPSB0
cnVlOworICAgICAgICAgICAgb3V0IDw8IG5hbWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBp
ZiAocXVhbGlmaWVyID09IEV2cUdsb2JhbEludm9jYXRpb25JRCkKKyAgICAgICAgeworICAgICAg
ICAgICAgbVVzZXNHbG9iYWxJbnZvY2F0aW9uSUQgPSB0cnVlOworICAgICAgICAgICAgb3V0IDw8
IG5hbWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocXVhbGlmaWVyID09IEV2cUxvY2Fs
SW52b2NhdGlvbkluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBtVXNlc0xvY2FsSW52b2Nh
dGlvbkluZGV4ID0gdHJ1ZTsKKyAgICAgICAgICAgIG91dCA8PCBuYW1lOworICAgICAgICB9CiAg
ICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAgb3V0IDw8IERlY29yYXRlSWZOZWVk
ZWQobm9kZS0+Z2V0TmFtZSgpKTsKQEAgLTgwNywxMSArOTE5LDkgQEAgdm9pZCBPdXRwdXRITFNM
OjpvdXRwdXRFcXVhbChWaXNpdCB2aXNpdCwgY29uc3QgVFR5cGUgJnR5cGUsIFRPcGVyYXRvciBv
cCwgVEluZm8KICAgICB9CiB9CiAKLWJvb2wgT3V0cHV0SExTTDo6YW5jZXN0b3JFdmFsdWF0ZXNU
b1NhbXBsZXJJblN0cnVjdChWaXNpdCB2aXNpdCkKK2Jvb2wgT3V0cHV0SExTTDo6YW5jZXN0b3JF
dmFsdWF0ZXNUb1NhbXBsZXJJblN0cnVjdCgpCiB7Ci0gICAgLy8gSW5zaWRlIEluVmlzaXQgdGhl
IGN1cnJlbnQgbm9kZSBpcyBhbHJlYWR5IGluIHRoZSBwYXRoLgotICAgIGNvbnN0IHVuc2lnbmVk
IGludCBpbml0aWFsTiA9IHZpc2l0ID09IEluVmlzaXQgPyAxdSA6IDB1OwotICAgIGZvciAodW5z
aWduZWQgaW50IG4gPSBpbml0aWFsTjsgZ2V0QW5jZXN0b3JOb2RlKG4pICE9IG51bGxwdHI7ICsr
bikKKyAgICBmb3IgKHVuc2lnbmVkIGludCBuID0gMHU7IGdldEFuY2VzdG9yTm9kZShuKSAhPSBu
dWxscHRyOyArK24pCiAgICAgewogICAgICAgICBUSW50ZXJtTm9kZSAqYW5jZXN0b3IgICAgICAg
ICAgICAgICA9IGdldEFuY2VzdG9yTm9kZShuKTsKICAgICAgICAgY29uc3QgVEludGVybUJpbmFy
eSAqYW5jZXN0b3JCaW5hcnkgPSBhbmNlc3Rvci0+Z2V0QXNCaW5hcnlOb2RlKCk7CkBAIC04OTAs
NyArMTAwMCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJ
bnRlcm1CaW5hcnkgKm5vZGUpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8v
IEFycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlciBzaG91bGQgaGF2ZSBlbGltaW5hdGVkIGV4
cHJlc3Npb25zIHdoZXJlIGEKICAgICAgICAgICAgICAgICAvLyBmdW5jdGlvbiBjYWxsIGlzIGFz
c2lnbmVkLgotICAgICAgICAgICAgICAgIEFTU0VSVChyaWdodEFnZyA9PSBudWxscHRyIHx8IHJp
Z2h0QWdnLT5nZXRPcCgpICE9IEVPcEZ1bmN0aW9uQ2FsbCk7CisgICAgICAgICAgICAgICAgQVNT
RVJUKHJpZ2h0QWdnID09IG51bGxwdHIpOwogCiAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmlu
ZyAmZnVuY3Rpb25OYW1lID0gYWRkQXJyYXlBc3NpZ25tZW50RnVuY3Rpb24obm9kZS0+Z2V0VHlw
ZSgpKTsKICAgICAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsIChmdW5jdGlv
bk5hbWUgKyAiKCIpLmNfc3RyKCksICIsICIsICIpIik7CkBAIC0xMDAxLDE5ICsxMTExLDIwIEBA
IGJvb2wgT3V0cHV0SExTTDo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkg
Km5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdDoK
ICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVFR5cGUmIGxlZnRUeXBlID0gbm9kZS0+Z2V0
TGVmdCgpLT5nZXRUeXBlKCk7CisgICAgICAgICAgICBjb25zdCBUVHlwZSAmbGVmdFR5cGUgPSBu
b2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKTsKICAgICAgICAgICAgIGlmIChsZWZ0VHlwZS5pc0lu
dGVyZmFjZUJsb2NrKCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKHZpc2l0
ID09IFByZVZpc2l0KQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgVElu
dGVyZmFjZUJsb2NrKiBpbnRlcmZhY2VCbG9jayA9IGxlZnRUeXBlLmdldEludGVyZmFjZUJsb2Nr
KCk7CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcmZhY2VCbG9jayAqaW50ZXJmYWNlQmxvY2sg
PSBsZWZ0VHlwZS5nZXRJbnRlcmZhY2VCbG9jaygpOwogICAgICAgICAgICAgICAgICAgICBjb25z
dCBpbnQgYXJyYXlJbmRleCA9IG5vZGUtPmdldFJpZ2h0KCktPmdldEFzQ29uc3RhbnRVbmlvbigp
LT5nZXRJQ29uc3QoMCk7Ci0gICAgICAgICAgICAgICAgICAgIG1SZWZlcmVuY2VkSW50ZXJmYWNl
QmxvY2tzW2ludGVyZmFjZUJsb2NrLT5pbnN0YW5jZU5hbWUoKV0gPSBub2RlLT5nZXRMZWZ0KCkt
PmdldEFzU3ltYm9sTm9kZSgpOworICAgICAgICAgICAgICAgICAgICBtUmVmZXJlbmNlZEludGVy
ZmFjZUJsb2Nrc1tpbnRlcmZhY2VCbG9jay0+aW5zdGFuY2VOYW1lKCldID0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPmdldExlZnQoKS0+Z2V0QXNTeW1ib2xOb2RlKCk7CiAgICAgICAg
ICAgICAgICAgICAgIG91dCA8PCBtVW5pZm9ybUhMU0wtPmludGVyZmFjZUJsb2NrSW5zdGFuY2VT
dHJpbmcoKmludGVyZmFjZUJsb2NrLCBhcnJheUluZGV4KTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGVsc2UgaWYgKGFuY2VzdG9yRXZhbHVhdGVzVG9TYW1wbGVySW5TdHJ1Y3QodmlzaXQpKQor
ICAgICAgICAgICAgZWxzZSBpZiAoYW5jZXN0b3JFdmFsdWF0ZXNUb1NhbXBsZXJJblN0cnVjdCgp
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8vIEFsbCBwYXJ0cyBvZiBhbiBleHBy
ZXNzaW9uIHRoYXQgYWNjZXNzIGEgc2FtcGxlciBpbiBhIHN0cnVjdCBuZWVkIHRvIHVzZSBfIGFz
CiAgICAgICAgICAgICAgICAgLy8gc2VwYXJhdG9yIHRvIGFjY2VzcyB0aGUgc2FtcGxlciB2YXJp
YWJsZSB0aGF0IGhhcyBiZWVuIG1vdmVkIG91dCBvZiB0aGUgc3RydWN0LgpAQCAtMTAyNSwxNiAr
MTEzNiwxNiBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50
ZXJtQmluYXJ5ICpub2RlKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFT3BJbmRleEluZGlyZWN0OgotICAgICAgICAvLyBXZSBkbyBub3QgY3Vy
cmVudGx5IHN1cHBvcnQgaW5kaXJlY3QgcmVmZXJlbmNlcyB0byBpbnRlcmZhY2UgYmxvY2tzCi0g
ICAgICAgIEFTU0VSVChub2RlLT5nZXRMZWZ0KCktPmdldEJhc2ljVHlwZSgpICE9IEVidEludGVy
ZmFjZUJsb2NrKTsKLSAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiIiwgIlsiLCAi
XSIpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6Cisg
ICAgICAgIGNhc2UgRU9wSW5kZXhJbmRpcmVjdDoKKyAgICAgICAgICAgIC8vIFdlIGRvIG5vdCBj
dXJyZW50bHkgc3VwcG9ydCBpbmRpcmVjdCByZWZlcmVuY2VzIHRvIGludGVyZmFjZSBibG9ja3MK
KyAgICAgICAgICAgIEFTU0VSVChub2RlLT5nZXRMZWZ0KCktPmdldEJhc2ljVHlwZSgpICE9IEVi
dEludGVyZmFjZUJsb2NrKTsKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwg
IiIsICJbIiwgIl0iKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEluZGV4
RGlyZWN0U3RydWN0OgogICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBUU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKTsKLSAgICAg
ICAgICAgIGNvbnN0IFRJbnRlcm1Db25zdGFudFVuaW9uKiBpbmRleCA9IG5vZGUtPmdldFJpZ2h0
KCktPmdldEFzQ29uc3RhbnRVbmlvbigpOwotICAgICAgICAgICAgY29uc3QgVEZpZWxkKiBmaWVs
ZCA9IHN0cnVjdHVyZS0+ZmllbGRzKClbaW5kZXgtPmdldElDb25zdCgwKV07CisgICAgICAgICAg
ICBjb25zdCBUU3RydWN0dXJlICpzdHJ1Y3R1cmUgICAgICAgPSBub2RlLT5nZXRMZWZ0KCktPmdl
dFR5cGUoKS5nZXRTdHJ1Y3QoKTsKKyAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1Db25zdGFudFVu
aW9uICppbmRleCA9IG5vZGUtPmdldFJpZ2h0KCktPmdldEFzQ29uc3RhbnRVbmlvbigpOworICAg
ICAgICAgICAgY29uc3QgVEZpZWxkICpmaWVsZCAgICAgICAgICAgICAgID0gc3RydWN0dXJlLT5m
aWVsZHMoKVtpbmRleC0+Z2V0SUNvbnN0KDApXTsKIAogICAgICAgICAgICAgLy8gSW4gY2FzZXMg
d2hlcmUgaW5kZXhpbmcgcmV0dXJucyBhIHNhbXBsZXIsIHdlIG5lZWQgdG8gYWNjZXNzIHRoZSBz
YW1wbGVyIHZhcmlhYmxlCiAgICAgICAgICAgICAvLyB0aGF0IGhhcyBiZWVuIG1vdmVkIG91dCBv
ZiB0aGUgc3RydWN0LgpAQCAtMTA1MCw3ICsxMTYxLDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNp
dEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAvLyBBbGwgcGFydHMgb2YgYW4gZXhwcmVzc2lvbiB0aGF0IGFjY2Vz
cyBhIHNhbXBsZXIgaW4gYSBzdHJ1Y3QgbmVlZCB0byB1c2UgXyBhcwogICAgICAgICAgICAgICAg
IC8vIHNlcGFyYXRvciB0byBhY2Nlc3MgdGhlIHNhbXBsZXIgdmFyaWFibGUgdGhhdCBoYXMgYmVl
biBtb3ZlZCBvdXQgb2YgdGhlIHN0cnVjdC4KLSAgICAgICAgICAgICAgICBpbmRleGluZ1JldHVy
bnNTYW1wbGVyID0gYW5jZXN0b3JFdmFsdWF0ZXNUb1NhbXBsZXJJblN0cnVjdCh2aXNpdCk7Cisg
ICAgICAgICAgICAgICAgaW5kZXhpbmdSZXR1cm5zU2FtcGxlciA9IGFuY2VzdG9yRXZhbHVhdGVz
VG9TYW1wbGVySW5TdHJ1Y3QoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh2aXNp
dCA9PSBJblZpc2l0KQogICAgICAgICAgICAgewpAQCAtMTA2Nyw5MyArMTE3OCw5NyBAQCBib29s
IE91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2Rl
KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBF
T3BJbmRleERpcmVjdEludGVyZmFjZUJsb2NrOgotICAgICAgICBpZiAodmlzaXQgPT0gSW5WaXNp
dCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVEludGVyZmFjZUJsb2NrKiBpbnRlcmZh
Y2VCbG9jayA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLmdldEludGVyZmFjZUJsb2NrKCk7
Ci0gICAgICAgICAgICBjb25zdCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogaW5kZXggPSBub2RlLT5n
ZXRSaWdodCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKLSAgICAgICAgICAgIGNvbnN0IFRGaWVs
ZCogZmllbGQgPSBpbnRlcmZhY2VCbG9jay0+ZmllbGRzKClbaW5kZXgtPmdldElDb25zdCgwKV07
Ci0gICAgICAgICAgICBvdXQgPDwgIi4iICsgRGVjb3JhdGUoZmllbGQtPm5hbWUoKSk7CisgICAg
ICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RJbnRlcmZhY2VCbG9jazoKKyAgICAgICAgICAgIGlmICh2
aXNpdCA9PSBJblZpc2l0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IFRJ
bnRlcmZhY2VCbG9jayAqaW50ZXJmYWNlQmxvY2sgPQorICAgICAgICAgICAgICAgICAgICBub2Rl
LT5nZXRMZWZ0KCktPmdldFR5cGUoKS5nZXRJbnRlcmZhY2VCbG9jaygpOworICAgICAgICAgICAg
ICAgIGNvbnN0IFRJbnRlcm1Db25zdGFudFVuaW9uICppbmRleCA9IG5vZGUtPmdldFJpZ2h0KCkt
PmdldEFzQ29uc3RhbnRVbmlvbigpOworICAgICAgICAgICAgICAgIGNvbnN0IFRGaWVsZCAqZmll
bGQgICAgICAgICAgICAgICA9IGludGVyZmFjZUJsb2NrLT5maWVsZHMoKVtpbmRleC0+Z2V0SUNv
bnN0KDApXTsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIi4iICsgRGVjb3JhdGUoZmllbGQtPm5h
bWUoKSk7CiAKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgRU9wQWRkOgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2
aXNpdCwgIigiLCAiICsgIiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
U3ViOgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiIC0gIiwgIiki
KTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTXVsOgotICAgICAgICAgIG91dHB1
dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiICogIiwgIikiKTsKLSAgICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgRU9wRGl2OgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwg
IigiLCAiIC8gIiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wSU1vZDoK
LSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiAlICIsICIpIik7Ci0g
ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVmdDoKLSAgICAgICAgICBv
dXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiA8PCAiLCAiKSIpOwotICAgICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFT3BCaXRTaGlmdFJpZ2h0OgotICAgICAgICAgIG91dHB1dFRyaXBs
ZXQob3V0LCB2aXNpdCwgIigiLCAiID4+ICIsICIpIik7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcEJpdHdpc2VBbmQ6Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0
LCAiKCIsICIgJiAiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BCaXR3
aXNlWG9yOgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiIF4gIiwg
IikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0d2lzZU9yOgotICAgICAg
ICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiIHwgIiwgIikiKTsKLSAgICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgRU9wRXF1YWw6Ci0gICAgICBjYXNlIEVPcE5vdEVxdWFsOgot
ICAgICAgICBvdXRwdXRFcXVhbCh2aXNpdCwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCksIG5v
ZGUtPmdldE9wKCksIG91dCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BMZXNzVGhh
bjoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiA8ICIsICIpIik7
Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOgotICAgICAgICAg
IG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiID4gIiwgIikiKTsKLSAgICAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbDoKLSAgICAgICAgICBvdXRwdXRUcmlw
bGV0KG91dCwgdmlzaXQsICIoIiwgIiA8PSAiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFsOgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0
LCB2aXNpdCwgIigiLCAiID49ICIsICIpIik7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IEVPcFZlY3RvclRpbWVzU2NhbGFyOgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNp
dCwgIigiLCAiICogIiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTWF0
cml4VGltZXNTY2FsYXI6Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIs
ICIgKiAiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BWZWN0b3JUaW1l
c01hdHJpeDoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJtdWwoIiwgIiwg
dHJhbnNwb3NlKCIsICIpKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BNYXRy
aXhUaW1lc1ZlY3RvcjoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJtdWwo
dHJhbnNwb3NlKCIsICIpLCAiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBF
T3BNYXRyaXhUaW1lc01hdHJpeDoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQs
ICJ0cmFuc3Bvc2UobXVsKHRyYW5zcG9zZSgiLCAiKSwgdHJhbnNwb3NlKCIsICIpKSkiKTsKLSAg
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTG9naWNhbE9yOgotICAgICAgICAvLyBITFNM
IGRvZXNuJ3Qgc2hvcnQtY2lyY3VpdCB8fCwgc28gd2UgYXNzdW1lIHRoYXQgfHwgYWZmZWN0ZWQg
Ynkgc2hvcnQtY2lyY3VpdGluZyBoYXZlIGJlZW4gdW5mb2xkZWQuCi0gICAgICAgIEFTU0VSVCgh
bm9kZS0+Z2V0UmlnaHQoKS0+aGFzU2lkZUVmZmVjdHMoKSk7Ci0gICAgICAgIG91dHB1dFRyaXBs
ZXQob3V0LCB2aXNpdCwgIigiLCAiIHx8ICIsICIpIik7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgY2FzZSBFT3BMb2dpY2FsWG9yOgotICAgICAgICBtVXNlc1hvciA9IHRydWU7Ci0gICAg
ICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgInhvcigiLCAiLCAiLCAiKSIpOwotICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgRU9wTG9naWNhbEFuZDoKLSAgICAgICAgLy8gSExTTCBkb2Vz
bid0IHNob3J0LWNpcmN1aXQgJiYsIHNvIHdlIGFzc3VtZSB0aGF0ICYmIGFmZmVjdGVkIGJ5IHNo
b3J0LWNpcmN1aXRpbmcgaGF2ZSBiZWVuIHVuZm9sZGVkLgotICAgICAgICBBU1NFUlQoIW5vZGUt
PmdldFJpZ2h0KCktPmhhc1NpZGVFZmZlY3RzKCkpOwotICAgICAgICBvdXRwdXRUcmlwbGV0KG91
dCwgdmlzaXQsICIoIiwgIiAmJiAiLCAiKSIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
IGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQWRkOgor
ICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgKyAiLCAiKSIpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wU3ViOgorICAgICAgICAgICAgb3V0
cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgLSAiLCAiKSIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRU9wTXVsOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQs
IHZpc2l0LCAiKCIsICIgKiAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRU9wRGl2OgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIg
LyAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wSU1vZDoKKyAg
ICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiICUgIiwgIikiKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVmdDoKKyAgICAgICAg
ICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiIDw8ICIsICIpIik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXRTaGlmdFJpZ2h0OgorICAgICAgICAgICAg
b3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgPj4gIiwgIikiKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdHdpc2VBbmQ6CisgICAgICAgICAgICBvdXRwdXRU
cmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiAmICIsICIpIik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFT3BCaXR3aXNlWG9yOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChv
dXQsIHZpc2l0LCAiKCIsICIgXiAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wQml0d2lzZU9yOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0
LCAiKCIsICIgfCAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9w
RXF1YWw6CisgICAgICAgIGNhc2UgRU9wTm90RXF1YWw6CisgICAgICAgICAgICBvdXRwdXRFcXVh
bCh2aXNpdCwgbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCksIG5vZGUtPmdldE9wKCksIG91dCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BMZXNzVGhhbjoKKyAgICAgICAg
ICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiIDwgIiwgIikiKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOgorICAgICAgICAgICAgb3V0
cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgPiAiLCAiKSIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbDoKKyAgICAgICAgICAgIG91dHB1dFRy
aXBsZXQob3V0LCB2aXNpdCwgIigiLCAiIDw9ICIsICIpIik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFsOgorICAgICAgICAgICAgb3V0cHV0VHJp
cGxldChvdXQsIHZpc2l0LCAiKCIsICIgPj0gIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzU2NhbGFyOgorICAgICAgICAgICAgb3V0cHV0VHJp
cGxldChvdXQsIHZpc2l0LCAiKCIsICIgKiAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXI6CisgICAgICAgICAgICBvdXRwdXRUcmlw
bGV0KG91dCwgdmlzaXQsICIoIiwgIiAqICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc01hdHJpeDoKKyAgICAgICAgICAgIG91dHB1dFRyaXBs
ZXQob3V0LCB2aXNpdCwgIm11bCgiLCAiLCB0cmFuc3Bvc2UoIiwgIikpIik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1ZlY3RvcjoKKyAgICAgICAgICAg
IG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIm11bCh0cmFuc3Bvc2UoIiwgIiksICIsICIpIik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc01hdHJpeDoK
KyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgInRyYW5zcG9zZShtdWwodHJh
bnNwb3NlKCIsICIpLCB0cmFuc3Bvc2UoIiwgIikpKSIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRU9wTG9naWNhbE9yOgorICAgICAgICAgICAgLy8gSExTTCBkb2Vzbid0IHNo
b3J0LWNpcmN1aXQgfHwsIHNvIHdlIGFzc3VtZSB0aGF0IHx8IGFmZmVjdGVkIGJ5IHNob3J0LWNp
cmN1aXRpbmcgaGF2ZQorICAgICAgICAgICAgLy8gYmVlbiB1bmZvbGRlZC4KKyAgICAgICAgICAg
IEFTU0VSVCghbm9kZS0+Z2V0UmlnaHQoKS0+aGFzU2lkZUVmZmVjdHMoKSk7CisgICAgICAgICAg
ICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiB8fCAiLCAiKSIpOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgRU9wTG9naWNhbFhvcjoKKyAgICAgICAgICAg
IG1Vc2VzWG9yID0gdHJ1ZTsKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwg
InhvcigiLCAiLCAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9w
TG9naWNhbEFuZDoKKyAgICAgICAgICAgIC8vIEhMU0wgZG9lc24ndCBzaG9ydC1jaXJjdWl0ICYm
LCBzbyB3ZSBhc3N1bWUgdGhhdCAmJiBhZmZlY3RlZCBieSBzaG9ydC1jaXJjdWl0aW5nIGhhdmUK
KyAgICAgICAgICAgIC8vIGJlZW4gdW5mb2xkZWQuCisgICAgICAgICAgICBBU1NFUlQoIW5vZGUt
PmdldFJpZ2h0KCktPmhhc1NpZGVFZmZlY3RzKCkpOworICAgICAgICAgICAgb3V0cHV0VHJpcGxl
dChvdXQsIHZpc2l0LCAiKCIsICIgJiYgIiwgIikiKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9CiAK
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExNzEsOSArMTI4Niw2IEBAIGJvb2wgT3V0cHV0SExTTDo6
dmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5ICpub2RlKQogICAgICAgICBjYXNl
IEVPcFBvc2l0aXZlOgogICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCsi
LCAiIiwgIikiKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVPcFZlY3Rvckxv
Z2ljYWxOb3Q6Ci0gICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoISIsICIi
LCAiKSIpOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRU9wTG9naWNhbE5vdDoK
ICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIighIiwgIiIsICIpIik7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTEyMjUsMTYxICsxMzM3LDE2NCBAQCBib29sIE91dHB1dEhM
U0w6OnZpc2l0VW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1VbmFyeSAqbm9kZSkKICAgICAgICAg
Y2FzZSBFT3BUYW5oOgogICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAidGFu
aCgiLCAiIiwgIikiKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BBc2luaDoK
LSAgICAgICAgQVNTRVJUKG5vZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSk7Ci0gICAgICAg
IHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBsZXQob3V0LCB2aXNpdCwgImFzaW5oKCIpOwotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQWNvc2g6Ci0gICAgICAgIEFTU0VSVChub2RlLT5n
ZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkpOwotICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25U
cmlwbGV0KG91dCwgdmlzaXQsICJhY29zaCgiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IEVPcEF0YW5oOgotICAgICAgICBBU1NFUlQobm9kZS0+Z2V0VXNlRW11bGF0ZWRGdW5jdGlvbigp
KTsKLSAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQsIHZpc2l0LCAiYXRh
bmgoIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BFeHA6Ci0gICAgICAgICAgb3V0
cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiZXhwKCIsICIiLCAiKSIpOwotICAgICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFT3BMb2c6Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0
LCAibG9nKCIsICIiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BFeHAy
OgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImV4cDIoIiwgIiIsICIpIik7
Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcExvZzI6Ci0gICAgICAgICAgb3V0cHV0
VHJpcGxldChvdXQsIHZpc2l0LCAibG9nMigiLCAiIiwgIikiKTsKLSAgICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgRU9wU3FydDoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQs
ICJzcXJ0KCIsICIiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BJbnZl
cnNlU3FydDoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJyc3FydCgiLCAi
IiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQWJzOgotICAgICAgICAg
IG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImFicygiLCAiIiwgIikiKTsKLSAgICAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgRU9wU2lnbjoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwg
dmlzaXQsICJzaWduKCIsICIiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBF
T3BGbG9vcjoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJmbG9vcigiLCAi
IiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wVHJ1bmM6Ci0gICAgICAg
ICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAidHJ1bmMoIiwgIiIsICIpIik7Ci0gICAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFJvdW5kOgotICAgICAgICAgIG91dHB1dFRyaXBsZXQo
b3V0LCB2aXNpdCwgInJvdW5kKCIsICIiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFT3BSb3VuZEV2ZW46Ci0gICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1
bmN0aW9uKCkpOwotICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91dCwgdmlz
aXQsICJyb3VuZEV2ZW4oIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BDZWlsOgot
ICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImNlaWwoIiwgIiIsICIpIik7Ci0g
ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEZyYWN0OgotICAgICAgICAgIG91dHB1dFRy
aXBsZXQob3V0LCB2aXNpdCwgImZyYWMoIiwgIiIsICIpIik7Ci0gICAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEVPcElzTmFuOgotICAgICAgICAgIGlmIChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1
bmN0aW9uKCkpCi0gICAgICAgICAgICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBsZXQob3V0
LCB2aXNpdCwgImlzbmFuKCIpOwotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgb3V0cHV0
VHJpcGxldChvdXQsIHZpc2l0LCAiaXNuYW4oIiwgIiIsICIpIik7Ci0gICAgICAgICAgbVJlcXVp
cmVzSUVFRVN0cmljdENvbXBpbGluZyA9IHRydWU7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEVPcElzSW5mOgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImlzaW5m
KCIsICIiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BGbG9hdEJpdHNU
b0ludDoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJhc2ludCgiLCAiIiwg
IikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wRmxvYXRCaXRzVG9VaW50Ogot
ICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImFzdWludCgiLCAiIiwgIikiKTsK
LSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wSW50Qml0c1RvRmxvYXQ6Ci0gICAgICAg
ICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiYXNmbG9hdCgiLCAiIiwgIikiKTsKLSAgICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wVWludEJpdHNUb0Zsb2F0OgotICAgICAgICAgIG91
dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImFzZmxvYXQoIiwgIiIsICIpIik7Ci0gICAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIEVPcFBhY2tTbm9ybTJ4MTY6Ci0gICAgICAgIEFTU0VSVChub2Rl
LT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkpOwotICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rp
b25UcmlwbGV0KG91dCwgdmlzaXQsICJwYWNrU25vcm0yeDE2KCIpOwotICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgRU9wUGFja1Vub3JtMngxNjoKLSAgICAgICAgQVNTRVJUKG5vZGUtPmdldFVz
ZUVtdWxhdGVkRnVuY3Rpb24oKSk7Ci0gICAgICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBs
ZXQob3V0LCB2aXNpdCwgInBhY2tVbm9ybTJ4MTYoIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFT3BQYWNrSGFsZjJ4MTY6Ci0gICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRl
ZEZ1bmN0aW9uKCkpOwotICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91dCwg
dmlzaXQsICJwYWNrSGFsZjJ4MTYoIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BV
bnBhY2tTbm9ybTJ4MTY6Ci0gICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1bmN0
aW9uKCkpOwotICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91dCwgdmlzaXQs
ICJ1bnBhY2tTbm9ybTJ4MTYoIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BVbnBh
Y2tVbm9ybTJ4MTY6Ci0gICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9u
KCkpOwotICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91dCwgdmlzaXQsICJ1
bnBhY2tVbm9ybTJ4MTYoIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BVbnBhY2tI
YWxmMngxNjoKLSAgICAgICAgQVNTRVJUKG5vZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSk7
Ci0gICAgICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBsZXQob3V0LCB2aXNpdCwgInVucGFj
a0hhbGYyeDE2KCIpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTGVuZ3RoOgotICAg
ICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImxlbmd0aCgiLCAiIiwgIikiKTsKLSAg
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTm9ybWFsaXplOgotICAgICAgICAgIG91dHB1
dFRyaXBsZXQob3V0LCB2aXNpdCwgIm5vcm1hbGl6ZSgiLCAiIiwgIikiKTsKLSAgICAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgRU9wREZkeDoKLSAgICAgICAgaWYobUluc2lkZURpc2NvbnRpbnVv
dXNMb29wIHx8IG1PdXRwdXRMb2QwRnVuY3Rpb24pCi0gICAgICAgIHsKLSAgICAgICAgICAgIG91
dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiIiwgIiwgMC4wKSIpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZp
c2l0LCAiZGR4KCIsICIiLCAiKSIpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFT3BERmR5OgotICAgICAgICBpZihtSW5zaWRlRGlzY29udGludW91c0xvb3AgfHwgbU91
dHB1dExvZDBGdW5jdGlvbikKLSAgICAgICAgewotICAgICAgICAgICAgb3V0cHV0VHJpcGxldChv
dXQsIHZpc2l0LCAiKCIsICIiLCAiLCAwLjApIik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJkZHkoIiwg
IiIsICIpIik7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEZ3aWR0
aDoKLSAgICAgICAgaWYobUluc2lkZURpc2NvbnRpbnVvdXNMb29wIHx8IG1PdXRwdXRMb2QwRnVu
Y3Rpb24pCi0gICAgICAgIHsKLSAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwg
IigiLCAiIiwgIiwgMC4wKSIpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewot
ICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiZndpZHRoKCIsICIiLCAiKSIp
OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BUcmFuc3Bvc2U6Ci0g
ICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAidHJhbnNwb3NlKCIsICIiLCAiKSIp
OwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BEZXRlcm1pbmFudDoKLSAgICAgICAg
ICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJkZXRlcm1pbmFudCh0cmFuc3Bvc2UoIiwgIiIs
ICIpKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BJbnZlcnNlOgotICAgICAg
ICBBU1NFUlQobm9kZS0+Z2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpKTsKLSAgICAgICAgd3JpdGVF
bXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQsIHZpc2l0LCAiaW52ZXJzZSgiKTsKLSAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRU9wQXNpbmg6CisgICAgICAgIGNhc2UgRU9wQWNvc2g6Cisg
ICAgICAgIGNhc2UgRU9wQXRhbmg6CisgICAgICAgICAgICBBU1NFUlQobm9kZS0+Z2V0VXNlRW11
bGF0ZWRGdW5jdGlvbigpKTsKKyAgICAgICAgICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBs
ZXQob3V0LCB2aXNpdCwgbm9kZS0+Z2V0T3AoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBFT3BFeHA6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJl
eHAoIiwgIiIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BMb2c6
CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJsb2coIiwgIiIsICIpIik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BFeHAyOgorICAgICAgICAgICAg
b3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiZXhwMigiLCAiIiwgIikiKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEVPcExvZzI6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0
KG91dCwgdmlzaXQsICJsb2cyKCIsICIiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRU9wU3FydDoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwg
InNxcnQoIiwgIiIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BJ
bnZlcnNlU3FydDoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgInJzcXJ0
KCIsICIiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQWJzOgor
ICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiYWJzKCIsICIiLCAiKSIpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wU2lnbjoKKyAgICAgICAgICAgIG91
dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgInNpZ24oIiwgIiIsICIpIik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBFT3BGbG9vcjoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQo
b3V0LCB2aXNpdCwgImZsb29yKCIsICIiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRU9wVHJ1bmM6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQs
ICJ0cnVuYygiLCAiIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVP
cFJvdW5kOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAicm91bmQoIiwg
IiIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BSb3VuZEV2ZW46
CisgICAgICAgICAgICBBU1NFUlQobm9kZS0+Z2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpKTsKKyAg
ICAgICAgICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBsZXQob3V0LCB2aXNpdCwgbm9kZS0+
Z2V0T3AoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDZWlsOgorICAg
ICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiY2VpbCgiLCAiIiwgIikiKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEZyYWN0OgorICAgICAgICAgICAgb3V0
cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiZnJhYygiLCAiIiwgIikiKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEVPcElzTmFuOgorICAgICAgICAgICAgaWYgKG5vZGUtPmdldFVz
ZUVtdWxhdGVkRnVuY3Rpb24oKSkKKyAgICAgICAgICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rp
b25UcmlwbGV0KG91dCwgdmlzaXQsIG5vZGUtPmdldE9wKCkpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImlzbmFuKCIsICIiLCAi
KSIpOworICAgICAgICAgICAgbVJlcXVpcmVzSUVFRVN0cmljdENvbXBpbGluZyA9IHRydWU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BJc0luZjoKKyAgICAgICAgICAgIG91
dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImlzaW5mKCIsICIiLCAiKSIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRU9wRmxvYXRCaXRzVG9JbnQ6CisgICAgICAgICAgICBvdXRw
dXRUcmlwbGV0KG91dCwgdmlzaXQsICJhc2ludCgiLCAiIiwgIikiKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEVPcEZsb2F0Qml0c1RvVWludDoKKyAgICAgICAgICAgIG91dHB1
dFRyaXBsZXQob3V0LCB2aXNpdCwgImFzdWludCgiLCAiIiwgIikiKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEVPcEludEJpdHNUb0Zsb2F0OgorICAgICAgICAgICAgb3V0cHV0
VHJpcGxldChvdXQsIHZpc2l0LCAiYXNmbG9hdCgiLCAiIiwgIikiKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEVPcFVpbnRCaXRzVG9GbG9hdDoKKyAgICAgICAgICAgIG91dHB1
dFRyaXBsZXQob3V0LCB2aXNpdCwgImFzZmxvYXQoIiwgIiIsICIpIik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBFT3BQYWNrU25vcm0yeDE2OgorICAgICAgICBjYXNlIEVPcFBh
Y2tVbm9ybTJ4MTY6CisgICAgICAgIGNhc2UgRU9wUGFja0hhbGYyeDE2OgorICAgICAgICBjYXNl
IEVPcFVucGFja1Nub3JtMngxNjoKKyAgICAgICAgY2FzZSBFT3BVbnBhY2tVbm9ybTJ4MTY6Cisg
ICAgICAgIGNhc2UgRU9wVW5wYWNrSGFsZjJ4MTY6CisgICAgICAgIGNhc2UgRU9wUGFja1Vub3Jt
NHg4OgorICAgICAgICBjYXNlIEVPcFBhY2tTbm9ybTR4ODoKKyAgICAgICAgY2FzZSBFT3BVbnBh
Y2tVbm9ybTR4ODoKKyAgICAgICAgY2FzZSBFT3BVbnBhY2tTbm9ybTR4ODoKKyAgICAgICAgICAg
IEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkpOworICAgICAgICAgICAgd3Jp
dGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQsIHZpc2l0LCBub2RlLT5nZXRPcCgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcExlbmd0aDoKKyAgICAgICAgICAgIG91
dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImxlbmd0aCgiLCAiIiwgIikiKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEVPcE5vcm1hbGl6ZToKKyAgICAgICAgICAgIG91dHB1dFRy
aXBsZXQob3V0LCB2aXNpdCwgIm5vcm1hbGl6ZSgiLCAiIiwgIikiKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEVPcERGZHg6CisgICAgICAgICAgICBpZiAobUluc2lkZURpc2Nv
bnRpbnVvdXNMb29wIHx8IG1PdXRwdXRMb2QwRnVuY3Rpb24pCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIiLCAiLCAwLjApIik7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiZGR4KCIsICIiLCAiKSIpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wREZkeToKKyAg
ICAgICAgICAgIGlmIChtSW5zaWRlRGlzY29udGludW91c0xvb3AgfHwgbU91dHB1dExvZDBGdW5j
dGlvbikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwg
dmlzaXQsICIoIiwgIiIsICIsIDAuMCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlz
aXQsICJkZHkoIiwgIiIsICIpIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFT3BGd2lkdGg6CisgICAgICAgICAgICBpZiAobUluc2lkZURpc2NvbnRp
bnVvdXNMb29wIHx8IG1PdXRwdXRMb2QwRnVuY3Rpb24pCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIiLCAiLCAwLjApIik7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiZndpZHRoKCIsICIiLCAiKSIpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wVHJhbnNwb3Nl
OgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAidHJhbnNwb3NlKCIsICIi
LCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wRGV0ZXJtaW5hbnQ6
CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJkZXRlcm1pbmFudCh0cmFu
c3Bvc2UoIiwgIiIsICIpKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9w
SW52ZXJzZToKKyAgICAgICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9u
KCkpOworICAgICAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQsIHZpc2l0
LCBub2RlLT5nZXRPcCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEVPcEFu
eToKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJhbnkoIiwgIiIsICIpIik7
Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEFsbDoKLSAgICAgICAgICBvdXRwdXRU
cmlwbGV0KG91dCwgdmlzaXQsICJhbGwoIiwgIiIsICIpIik7Ci0gICAgICAgICAgYnJlYWs7Ci0g
ICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICBjYXNlIEVPcEFueToKKyAgICAg
ICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImFueSgiLCAiIiwgIikiKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEFsbDoKKyAgICAgICAgICAgIG91dHB1dFRy
aXBsZXQob3V0LCB2aXNpdCwgImFsbCgiLCAiIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEVPcExvZ2ljYWxOb3RDb21wb25lbnRXaXNlOgorICAgICAgICAgICAgb3V0
cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCEiLCAiIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEVPcEJpdGZpZWxkUmV2ZXJzZToKKyAgICAgICAgICAgIG91dHB1dFRy
aXBsZXQob3V0LCB2aXNpdCwgInJldmVyc2ViaXRzKCIsICIiLCAiKSIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRU9wQml0Q291bnQ6CisgICAgICAgICAgICBvdXRwdXRUcmlw
bGV0KG91dCwgdmlzaXQsICJjb3VudGJpdHMoIiwgIiIsICIpIik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBFT3BGaW5kTFNCOgorICAgICAgICAgICAgLy8gTm90ZSB0aGF0IGl0
J3MgdW5jbGVhciBmcm9tIHRoZSBITFNMIGRvY3Mgd2hhdCB0aGlzIHJldHVybnMgZm9yIDAsIGJ1
dCB0aGlzIGlzIHRlc3RlZAorICAgICAgICAgICAgLy8gaW4gR0xTTFRlc3QgYW5kIHJlc3VsdHMg
YXJlIGNvbnNpc3RlbnQgd2l0aCBHTC4KKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2
aXNpdCwgImZpcnN0Yml0bG93KCIsICIiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRU9wRmluZE1TQjoKKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBpdCdzIHVuY2xl
YXIgZnJvbSB0aGUgSExTTCBkb2NzIHdoYXQgdGhpcyByZXR1cm5zIGZvciAwIG9yIC0xLCBidXQg
dGhpcyBpcworICAgICAgICAgICAgLy8gdGVzdGVkIGluIEdMU0xUZXN0IGFuZCByZXN1bHRzIGFy
ZSBjb25zaXN0ZW50IHdpdGggR0wuCisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlz
aXQsICJmaXJzdGJpdGhpZ2goIiwgIiIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQogCiAgICAgcmV0
dXJuIHRydWU7CkBAIC0xNDY1LDkgKzE1ODAsOSBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0RnVu
Y3Rpb25EZWZpbml0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uCiAg
ICAgQVNTRVJUKGluZGV4ICE9IENhbGxEQUc6OkludmFsaWRJbmRleCk7CiAgICAgbUN1cnJlbnRG
dW5jdGlvbk1ldGFkYXRhID0gJm1BU1RNZXRhZGF0YUxpc3RbaW5kZXhdOwogCi0gICAgb3V0IDw8
IFR5cGVTdHJpbmcobm9kZS0+Z2V0VHlwZSgpKSA8PCAiICI7CisgICAgb3V0IDw8IFR5cGVTdHJp
bmcobm9kZS0+Z2V0RnVuY3Rpb25Qcm90b3R5cGUoKS0+Z2V0VHlwZSgpKSA8PCAiICI7CiAKLSAg
ICBUSW50ZXJtU2VxdWVuY2UgKnBhcmFtZXRlcnMgPSBub2RlLT5nZXRGdW5jdGlvblBhcmFtZXRl
cnMoKS0+Z2V0U2VxdWVuY2UoKTsKKyAgICBUSW50ZXJtU2VxdWVuY2UgKnBhcmFtZXRlcnMgPSBu
b2RlLT5nZXRGdW5jdGlvblByb3RvdHlwZSgpLT5nZXRTZXF1ZW5jZSgpOwogCiAgICAgaWYgKG5v
ZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5pc01haW4oKSkKICAgICB7CkBAIC0xNDc1LDcg
KzE1OTAsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0RnVuY3Rpb25EZWZpbml0aW9uKFZpc2l0
IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uCiAgICAgfQogICAgIGVsc2UKICAgICB7
Ci0gICAgICAgIG91dCA8PCBEZWNvcmF0ZUZ1bmN0aW9uSWZOZWVkZWQobm9kZS0+Z2V0RnVuY3Rp
b25TeW1ib2xJbmZvKCktPmdldE5hbWVPYmooKSkKKyAgICAgICAgb3V0IDw8IERlY29yYXRlSWZO
ZWVkZWQobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWVPYmooKSkKICAgICAg
ICAgICAgIDw8IERpc2FtYmlndWF0ZUZ1bmN0aW9uTmFtZShwYXJhbWV0ZXJzKSA8PCAobU91dHB1
dExvZDBGdW5jdGlvbiA/ICJMb2QwKCIgOiAiKCIpOwogICAgIH0KIApAQCAtMTUxOSwxNDEgKzE2
MzQsMTM5IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRGdW5jdGlvbkRlZmluaXRpb24oVmlzaXQg
dmlzaXQsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dy
ZWdhdGUgKm5vZGUpCitib29sIE91dHB1dEhMU0w6OnZpc2l0RGVjbGFyYXRpb24oVmlzaXQgdmlz
aXQsIFRJbnRlcm1EZWNsYXJhdGlvbiAqbm9kZSkKIHsKICAgICBUSW5mb1NpbmtCYXNlICZvdXQg
PSBnZXRJbmZvU2luaygpOwotCi0gICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQorICAgIGlmICh2
aXNpdCA9PSBQcmVWaXNpdCkKICAgICB7Ci0gICAgICAgIGNhc2UgRU9wRGVjbGFyYXRpb246Ci0g
ICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7
Ci0gICAgICAgICAgICAgICAgVEludGVybVR5cGVkICp2YXJpYWJsZSAgICA9ICgqc2VxdWVuY2Up
WzBdLT5nZXRBc1R5cGVkKCk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHNlcXVlbmNlLT5zaXpl
KCkgPT0gMSk7CisgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVuY2UgPSBub2RlLT5nZXRT
ZXF1ZW5jZSgpOworICAgICAgICBUSW50ZXJtVHlwZWQgKnZhcmlhYmxlICAgID0gKCpzZXF1ZW5j
ZSlbMF0tPmdldEFzVHlwZWQoKTsKKyAgICAgICAgQVNTRVJUKHNlcXVlbmNlLT5zaXplKCkgPT0g
MSk7CiAKLSAgICAgICAgICAgICAgICBpZiAodmFyaWFibGUgJiYKLSAgICAgICAgICAgICAgICAg
ICAgKHZhcmlhYmxlLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFUZW1wb3JhcnkgfHwKLSAgICAgICAg
ICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFHbG9iYWwgfHwgdmFy
aWFibGUtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSkKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIGVuc3VyZVN0cnVjdERlZmluZWQodmFyaWFibGUtPmdldFR5cGUo
KSk7CisgICAgICAgIGlmICh2YXJpYWJsZSAmJgorICAgICAgICAgICAgKHZhcmlhYmxlLT5nZXRR
dWFsaWZpZXIoKSA9PSBFdnFUZW1wb3JhcnkgfHwgdmFyaWFibGUtPmdldFF1YWxpZmllcigpID09
IEV2cUdsb2JhbCB8fAorICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRRdWFsaWZpZXIoKSA9PSBF
dnFDb25zdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVuc3VyZVN0cnVjdERlZmluZWQodmFy
aWFibGUtPmdldFR5cGUoKSk7CiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKCF2YXJpYWJsZS0+
Z2V0QXNTeW1ib2xOb2RlKCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5n
ZXRBc1N5bWJvbE5vZGUoKS0+Z2V0U3ltYm9sKCkgIT0gIiIpICAvLyBWYXJpYWJsZSBkZWNsYXJh
dGlvbgotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
IW1JbnNpZGVGdW5jdGlvbikKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvdXQgPDwgInN0YXRpYyAiOwotICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKCF2YXJpYWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCkgfHwKKyAg
ICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpICE9
ICIiKSAgLy8gVmFyaWFibGUgZGVjbGFyYXRpb24KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIW1JbnNpZGVGdW5jdGlvbikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIG91dCA8PCAic3RhdGljICI7CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAgICAgICAgICAgICBvdXQgPDwgVHlwZVN0cmluZyh2YXJpYWJsZS0+Z2V0VHlwZSgpKSAr
ICIgIjsKKyAgICAgICAgICAgICAgICBvdXQgPDwgVHlwZVN0cmluZyh2YXJpYWJsZS0+Z2V0VHlw
ZSgpKSArICIgIjsKIAotICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3lt
Ym9sID0gdmFyaWFibGUtPmdldEFzU3ltYm9sTm9kZSgpOworICAgICAgICAgICAgICAgIFRJbnRl
cm1TeW1ib2wgKnN5bWJvbCA9IHZhcmlhYmxlLT5nZXRBc1N5bWJvbE5vZGUoKTsKIAotICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wtPnRyYXZlcnNlKHRoaXMpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCBBcnJheVN0cmluZyhzeW1ib2wtPmdldFR5
cGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgPSAiICsgaW5pdGlh
bGl6ZXIoc3ltYm9sLT5nZXRUeXBlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmICh2YXJpYWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCkgJiYKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1i
b2woKSA9PQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIpICAvLyBUeXBlIChz
dHJ1Y3QpIGRlY2xhcmF0aW9uCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIEFscmVhZHkgYWRkZWQgdG8gY29uc3RydWN0b3IgbWFwCi0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICBpZiAoc3ltYm9sKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3ltYm9sLT50cmF2ZXJzZSh0aGlzKTsK
KyAgICAgICAgICAgICAgICAgICAgb3V0IDw8IEFycmF5U3RyaW5nKHN5bWJvbC0+Z2V0VHlwZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIgPSAiICsgaW5pdGlhbGl6ZXIoc3ltYm9s
LT5nZXRUeXBlKCkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlm
ICh2YXJpYWJsZSAmJiBJc1ZhcnlpbmdPdXQodmFyaWFibGUtPmdldFF1YWxpZmllcigpKSkKKyAg
ICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0b3Igc2l0ID0gc2VxdWVuY2UtPmJlZ2luKCk7
IHNpdCAhPSBzZXF1ZW5jZS0+ZW5kKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgc2l0Kysp
Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1T
eW1ib2wgKnN5bWJvbCA9ICgqc2l0KS0+Z2V0QXNTeW1ib2xOb2RlKCk7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChzeW1ib2wpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLy8gVmVydGV4IChvdXRwdXQpIHZhcnlpbmdzIHdoaWNo
IGFyZSBkZWNsYXJlZCBidXQgbm90IHdyaXR0ZW4gdG8gc2hvdWxkCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gc3RpbGwgYmUgZGVjbGFyZWQgdG8gYWxsb3cgc3VjY2Vzc2Z1bCBsaW5r
aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlZmVyZW5jZWRWYXJ5aW5nc1tzeW1i
b2wtPmdldFN5bWJvbCgpXSA9IHN5bWJvbDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoKnNpdCktPnRyYXZlcnNlKHRoaXMpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIHZhcmlhYmxlLT50cmF2ZXJzZSh0aGlzKTsKICAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBl
bHNlIGlmICh2aXNpdCA9PSBJblZpc2l0KQorICAgICAgICAgICAgZWxzZSBpZiAodmFyaWFibGUt
PmdldEFzU3ltYm9sTm9kZSgpICYmCisgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0
QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpID09ICIiKSAgLy8gVHlwZSAoc3RydWN0KSBkZWNs
YXJhdGlvbgogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dCA8PCAiLCAiOworICAg
ICAgICAgICAgICAgIC8vIEFscmVhZHkgYWRkZWQgdG8gY29uc3RydWN0b3IgbWFwCiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFT3BJbnZhcmlhbnREZWNs
YXJhdGlvbjoKLSAgICAgICAgICAgIC8vIERvIG5vdCBkbyBhbnkgdHJhbnNsYXRpb24KLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgY2FzZSBFT3BQcm90b3R5cGU6Ci0gICAgICAg
ICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh2YXJpYWJs
ZSAmJiBJc1ZhcnlpbmdPdXQodmFyaWFibGUtPmdldFF1YWxpZmllcigpKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIHNpdCA9IHNlcXVlbmNl
LT5iZWdpbigpOyBzaXQgIT0gc2VxdWVuY2UtPmVuZCgpOyBzaXQrKykKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBzaXplX3QgaW5kZXggPSBtQ2FsbERhZy5maW5kSW5kZXgobm9kZS0+
Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCkpOwotICAgICAgICAgICAgICAgIC8vIFNraXAgdGhlIHBy
b3RvdHlwZSBpZiBpdCBpcyBub3QgaW1wbGVtZW50ZWQgKGFuZCB0aHVzIG5vdCB1c2VkKQotICAg
ICAgICAgICAgICAgIGlmIChpbmRleCA9PSBDYWxsREFHOjpJbnZhbGlkSW5kZXgpCisgICAgICAg
ICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gKCpzaXQpLT5nZXRBc1N5bWJvbE5vZGUo
KTsKKworICAgICAgICAgICAgICAgIGlmIChzeW1ib2wpCiAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIC8vIFZl
cnRleCAob3V0cHV0KSB2YXJ5aW5ncyB3aGljaCBhcmUgZGVjbGFyZWQgYnV0IG5vdCB3cml0dGVu
IHRvIHNob3VsZAorICAgICAgICAgICAgICAgICAgICAvLyBzdGlsbCBiZSBkZWNsYXJlZCB0byBh
bGxvdyBzdWNjZXNzZnVsIGxpbmtpbmcKKyAgICAgICAgICAgICAgICAgICAgbVJlZmVyZW5jZWRW
YXJ5aW5nc1tzeW1ib2wtPmdldFN5bWJvbCgpXSA9IHN5bWJvbDsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgKCpzaXQpLT50cmF2ZXJzZSh0aGlzKTsKICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQogCi0gICAgICAg
ICAgICAgICAgVEludGVybVNlcXVlbmNlICphcmd1bWVudHMgPSBub2RlLT5nZXRTZXF1ZW5jZSgp
OworYm9vbCBPdXRwdXRITFNMOjp2aXNpdEludmFyaWFudERlY2xhcmF0aW9uKFZpc2l0IHZpc2l0
LCBUSW50ZXJtSW52YXJpYW50RGVjbGFyYXRpb24gKm5vZGUpCit7CisgICAgLy8gRG8gbm90IGRv
IGFueSB0cmFuc2xhdGlvbgorICAgIHJldHVybiBmYWxzZTsKK30KIAotICAgICAgICAgICAgICAg
IFRTdHJpbmcgbmFtZSA9Ci0gICAgICAgICAgICAgICAgICAgIERlY29yYXRlRnVuY3Rpb25JZk5l
ZWRlZChub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZU9iaigpKTsKLSAgICAg
ICAgICAgICAgICBvdXQgPDwgVHlwZVN0cmluZyhub2RlLT5nZXRUeXBlKCkpIDw8ICIgIiA8PCBu
YW1lCi0gICAgICAgICAgICAgICAgICAgIDw8IERpc2FtYmlndWF0ZUZ1bmN0aW9uTmFtZShhcmd1
bWVudHMpIDw8IChtT3V0cHV0TG9kMEZ1bmN0aW9uID8gIkxvZDAoIiA6ICIoIik7Citib29sIE91
dHB1dEhMU0w6OnZpc2l0RnVuY3Rpb25Qcm90b3R5cGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5j
dGlvblByb3RvdHlwZSAqbm9kZSkKK3sKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBnZXRJbmZv
U2luaygpOwogCi0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBh
cmd1bWVudHMtPnNpemUoKTsgaSsrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gKCphcmd1bWVudHMpW2ldLT5nZXRBc1N5bWJv
bE5vZGUoKTsKKyAgICBBU1NFUlQodmlzaXQgPT0gUHJlVmlzaXQpOworICAgIHNpemVfdCBpbmRl
eCA9IG1DYWxsRGFnLmZpbmRJbmRleChub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKSk7Cisg
ICAgLy8gU2tpcCB0aGUgcHJvdG90eXBlIGlmIGl0IGlzIG5vdCBpbXBsZW1lbnRlZCAoYW5kIHRo
dXMgbm90IHVzZWQpCisgICAgaWYgKGluZGV4ID09IENhbGxEQUc6OkludmFsaWRJbmRleCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHN5bWJvbCkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0IDw8IGFyZ3VtZW50U3RyaW5nKHN5bWJvbCk7CisgICAgVEludGVybVNlcXVlbmNlICph
cmd1bWVudHMgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOwogCi0gICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoaSA8IGFyZ3VtZW50cy0+c2l6ZSgpIC0gMSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAg
ICAgICAgIH0KKyAgICBUU3RyaW5nIG5hbWUgPSBEZWNvcmF0ZUlmTmVlZGVkKG5vZGUtPmdldEZ1
bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lT2JqKCkpOworICAgIG91dCA8PCBUeXBlU3RyaW5n
KG5vZGUtPmdldFR5cGUoKSkgPDwgIiAiIDw8IG5hbWUgPDwgRGlzYW1iaWd1YXRlRnVuY3Rpb25O
YW1lKGFyZ3VtZW50cykKKyAgICAgICAgPDwgKG1PdXRwdXRMb2QwRnVuY3Rpb24gPyAiTG9kMCgi
IDogIigiKTsKIAotICAgICAgICAgICAgICAgIG91dCA8PCAiKTtcbiI7CisgICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBhcmd1bWVudHMtPnNpemUoKTsgaSsrKQorICAgIHsKKyAgICAg
ICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gKCphcmd1bWVudHMpW2ldLT5nZXRBc1N5bWJvbE5v
ZGUoKTsKKyAgICAgICAgQVNTRVJUKHN5bWJvbCAhPSBudWxscHRyKTsKIAotICAgICAgICAgICAg
ICAgIC8vIEFsc28gcHJvdG90eXBlIHRoZSBMb2QwIHZhcmlhbnQgaWYgbmVlZGVkCi0gICAgICAg
ICAgICAgICAgYm9vbCBuZWVkc0xvZDAgPSBtQVNUTWV0YWRhdGFMaXN0W2luZGV4XS5tTmVlZHNM
b2QwOwotICAgICAgICAgICAgICAgIGlmIChuZWVkc0xvZDAgJiYgIW1PdXRwdXRMb2QwRnVuY3Rp
b24gJiYgbVNoYWRlclR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSKQotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgbU91dHB1dExvZDBGdW5jdGlvbiA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICAgIG5vZGUtPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgICAgICAg
ICBtT3V0cHV0TG9kMEZ1bmN0aW9uID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQorICAgICAg
ICBvdXQgPDwgYXJndW1lbnRTdHJpbmcoc3ltYm9sKTsKIAotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IEVPcEZ1bmN0aW9uQ2FsbDoKKyAgICAgICAgaWYgKGkgPCBhcmd1bWVudHMtPnNpemUoKSAtIDEp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAiLCAiOworICAgICAgICB9CisgICAgfQor
CisgICAgb3V0IDw8ICIpO1xuIjsKKworICAgIC8vIEFsc28gcHJvdG90eXBlIHRoZSBMb2QwIHZh
cmlhbnQgaWYgbmVlZGVkCisgICAgYm9vbCBuZWVkc0xvZDAgPSBtQVNUTWV0YWRhdGFMaXN0W2lu
ZGV4XS5tTmVlZHNMb2QwOworICAgIGlmIChuZWVkc0xvZDAgJiYgIW1PdXRwdXRMb2QwRnVuY3Rp
b24gJiYgbVNoYWRlclR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSKQorICAgIHsKKyAgICAgICAg
bU91dHB1dExvZDBGdW5jdGlvbiA9IHRydWU7CisgICAgICAgIG5vZGUtPnRyYXZlcnNlKHRoaXMp
OworICAgICAgICBtT3V0cHV0TG9kMEZ1bmN0aW9uID0gZmFsc2U7CisgICAgfQorCisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZp
c2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQoreworICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9
IGdldEluZm9TaW5rKCk7CisKKyAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCisgICAgeworICAg
ICAgICBjYXNlIEVPcENhbGxCdWlsdEluRnVuY3Rpb246CisgICAgICAgIGNhc2UgRU9wQ2FsbEZ1
bmN0aW9uSW5BU1Q6CisgICAgICAgIGNhc2UgRU9wQ2FsbEludGVybmFsUmF3RnVuY3Rpb246CiAg
ICAgICAgIHsKICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzID0gbm9kZS0+
Z2V0U2VxdWVuY2UoKTsKIAogICAgICAgICAgICAgYm9vbCBsb2QwID0gbUluc2lkZURpc2NvbnRp
bnVvdXNMb29wIHx8IG1PdXRwdXRMb2QwRnVuY3Rpb247Ci0gICAgICAgICAgICBpZiAobm9kZS0+
aXNVc2VyRGVmaW5lZCgpKQorICAgICAgICAgICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wQ2Fs
bEZ1bmN0aW9uSW5BU1QpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmlzQXJyYXkoKSkKICAgICAgICAgICAgICAgICB7CkBAIC0xNjYzLDIxICsxNzc2LDI1IEBAIGJv
b2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdh
dGUgKm5vZGUpCiAgICAgICAgICAgICAgICAgQVNTRVJUKGluZGV4ICE9IENhbGxEQUc6OkludmFs
aWRJbmRleCk7CiAgICAgICAgICAgICAgICAgbG9kMCAmPSBtQVNUTWV0YWRhdGFMaXN0W2luZGV4
XS5tTmVlZHNMb2QwOwogCi0gICAgICAgICAgICAgICAgb3V0IDw8IERlY29yYXRlRnVuY3Rpb25J
Zk5lZWRlZChub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZU9iaigpKTsKKyAg
ICAgICAgICAgICAgICBvdXQgPDwgRGVjb3JhdGVJZk5lZWRlZChub2RlLT5nZXRGdW5jdGlvblN5
bWJvbEluZm8oKS0+Z2V0TmFtZU9iaigpKTsKICAgICAgICAgICAgICAgICBvdXQgPDwgRGlzYW1i
aWd1YXRlRnVuY3Rpb25OYW1lKG5vZGUtPmdldFNlcXVlbmNlKCkpOwogICAgICAgICAgICAgICAg
IG91dCA8PCAobG9kMCA/ICJMb2QwKCIgOiAiKCIpOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZWxzZSBpZiAobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWVPYmooKS5p
c0ludGVybmFsKCkpCisgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5nZXRPcCgpID09IEVPcENh
bGxJbnRlcm5hbFJhd0Z1bmN0aW9uKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8v
IFRoaXMgcGF0aCBpcyB1c2VkIGZvciBpbnRlcm5hbCBmdW5jdGlvbnMgdGhhdCBkb24ndCBoYXZl
IHRoZWlyIGRlZmluaXRpb25zIGluIHRoZQogICAgICAgICAgICAgICAgIC8vIEFTVCwgc3VjaCBh
cyBwcmVjaXNpb24gZW11bGF0aW9uIGZ1bmN0aW9ucy4KLSAgICAgICAgICAgICAgICBvdXQgPDwg
RGVjb3JhdGVGdW5jdGlvbklmTmVlZGVkKG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5n
ZXROYW1lT2JqKCkpIDw8ICIoIjsKKyAgICAgICAgICAgICAgICBvdXQgPDwgRGVjb3JhdGVJZk5l
ZWRlZChub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZU9iaigpKSA8PCAiKCI7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgVFN0cmluZyBuYW1lID0gVEZ1bmN0aW9uOjp1bm1hbmdsZU5hbWUobm9kZS0+Z2V0
RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgY29uc3Qg
VFN0cmluZyAmbmFtZSAgICA9IG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1l
KCk7CiAgICAgICAgICAgICAgICAgVEJhc2ljVHlwZSBzYW1wbGVyVHlwZSA9ICgqYXJndW1lbnRz
KVswXS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCk7Ci0gICAgICAgICAg
ICAgICAgaW50IGNvb3JkcyAgICAgICAgICAgICAgICAgID0gKCphcmd1bWVudHMpWzFdLT5nZXRB
c1R5cGVkKCktPmdldE5vbWluYWxTaXplKCk7CisgICAgICAgICAgICAgICAgaW50IGNvb3JkcyA9
IDA7ICAvLyB0ZXh0dXJlU2l6ZShnc2FtcGxlcjJETVMpIGRvZXNuJ3QgaGF2ZSBhIHNlY29uZCBh
cmd1bWVudC4KKyAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzLT5zaXplKCkgPiAxKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29vcmRzID0gKCphcmd1bWVudHMp
WzFdLT5nZXRBc1R5cGVkKCktPmdldE5vbWluYWxTaXplKCk7CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIFRTdHJpbmcgdGV4dHVyZUZ1bmN0aW9uTmFtZSA9IG1UZXh0dXJlRnVu
Y3Rpb25ITFNMLT51c2VUZXh0dXJlRnVuY3Rpb24oCiAgICAgICAgICAgICAgICAgICAgIG5hbWUs
IHNhbXBsZXJUeXBlLCBjb29yZHMsIGFyZ3VtZW50cy0+c2l6ZSgpLCBsb2QwLCBtU2hhZGVyVHlw
ZSk7CiAgICAgICAgICAgICAgICAgb3V0IDw8IHRleHR1cmVGdW5jdGlvbk5hbWUgPDwgIigiOwpA
QCAtMTcyOSw5ICsxODQ2LDYgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNp
dCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKIAogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgRU9wUGFyYW1ldGVyczoKLSAgICAgICAgICAg
IG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiLCAiLCAiKVxue1xuIik7Ci0gICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RGbG9hdDoKICAgICAgICAgICAg
IG91dHB1dENvbnN0cnVjdG9yKG91dCwgdmlzaXQsIG5vZGUtPmdldFR5cGUoKSwgInZlYzEiLCBu
b2RlLT5nZXRTZXF1ZW5jZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTgxOCwyNyArMTkz
MiwyNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50
ZXJtQWdncmVnYXRlICpub2RlKQogICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0
LCAoc3RydWN0TmFtZSArICJfY3RvcigiKS5jX3N0cigpLCAiLCAiLCAiKSIpOwogICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVPcExlc3NUaGFuOgorICAgICAgICBjYXNl
IEVPcEVxdWFsQ29tcG9uZW50V2lzZToKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2
aXNpdCwgIigiLCAiID09ICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFT3BOb3RFcXVhbENvbXBvbmVudFdpc2U6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91
dCwgdmlzaXQsICIoIiwgIiAhPSAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wTGVzc1RoYW5Db21wb25lbnRXaXNlOgogICAgICAgICAgICAgb3V0cHV0VHJpcGxl
dChvdXQsIHZpc2l0LCAiKCIsICIgPCAiLCAiKSIpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgRU9wR3JlYXRlclRoYW46CisgICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW5Db21w
b25lbnRXaXNlOgogICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIg
PiAiLCAiKSIpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wTGVzc1RoYW5F
cXVhbDoKKyAgICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFsQ29tcG9uZW50V2lzZToKICAgICAg
ICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiIDw9ICIsICIpIik7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFsOgorICAgICAg
ICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWxDb21wb25lbnRXaXNlOgogICAgICAgICAgICAgb3V0
cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgPj0gIiwgIikiKTsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIEVPcFZlY3RvckVxdWFsOgotICAgICAgICAgICAgb3V0cHV0VHJp
cGxldChvdXQsIHZpc2l0LCAiKCIsICIgPT0gIiwgIikiKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEVPcFZlY3Rvck5vdEVxdWFsOgotICAgICAgICAgICAgb3V0cHV0VHJpcGxl
dChvdXQsIHZpc2l0LCAiKCIsICIgIT0gIiwgIikiKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEVPcE1vZDoKICAgICAgICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRl
ZEZ1bmN0aW9uKCkpOwotICAgICAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChv
dXQsIHZpc2l0LCAibW9kKCIpOworICAgICAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJp
cGxldChvdXQsIHZpc2l0LCBub2RlLT5nZXRPcCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEVPcE1vZGY6CiAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQs
ICJtb2RmKCIsICIsICIsICIpIik7CkBAIC0xODQ5LDcgKzE5NjMsNyBAQCBib29sIE91dHB1dEhM
U0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQog
ICAgICAgICBjYXNlIEVPcEF0YW46CiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+Z2V0U2VxdWVu
Y2UoKS0+c2l6ZSgpID09IDIpOyAgLy8gYXRhbih4KSBpcyBhIHVuYXJ5IG9wZXJhdG9yCiAgICAg
ICAgICAgICBBU1NFUlQobm9kZS0+Z2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpKTsKLSAgICAgICAg
ICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBsZXQob3V0LCB2aXNpdCwgImF0YW4oIik7Cisg
ICAgICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91dCwgdmlzaXQsIG5vZGUt
PmdldE9wKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRU9wTWluOgogICAg
ICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAibWluKCIsICIsICIsICIpIik7CkBA
IC0xODY1LDEwICsxOTc5LDExIEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlz
aXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCiAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQgKmxhc3RQYXJhbU5vZGUgPSAoKihub2RlLT5nZXRTZXF1ZW5jZSgpKSlbMl0tPmdldEFzVHlw
ZWQoKTsKICAgICAgICAgICAgIGlmIChsYXN0UGFyYW1Ob2RlLT5nZXRUeXBlKCkuZ2V0QmFzaWNU
eXBlKCkgPT0gRWJ0Qm9vbCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBUaGVy
ZSBpcyBubyBITFNMIGVxdWl2YWxlbnQgZm9yIEVTU0wzIGJ1aWx0LWluICJnZW5UeXBlIG1peCAo
Z2VuVHlwZSB4LCBnZW5UeXBlIHksIGdlbkJUeXBlIGEpIiwKKyAgICAgICAgICAgICAgICAvLyBU
aGVyZSBpcyBubyBITFNMIGVxdWl2YWxlbnQgZm9yIEVTU0wzIGJ1aWx0LWluICJnZW5UeXBlIG1p
eCAoZ2VuVHlwZSB4LCBnZW5UeXBlCisgICAgICAgICAgICAgICAgLy8geSwgZ2VuQlR5cGUgYSki
LAogICAgICAgICAgICAgICAgIC8vIHNvIHVzZSBlbXVsYXRlZCB2ZXJzaW9uLgogICAgICAgICAg
ICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkpOwotICAgICAgICAg
ICAgICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBsZXQob3V0LCB2aXNpdCwgIm1peCgiKTsK
KyAgICAgICAgICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91dCwgdmlzaXQs
IG5vZGUtPmdldE9wKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgewpAQCAtMTg4Miw2ICsxOTk3LDExIEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dy
ZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCiAgICAgICAgIGNhc2Ug
RU9wU21vb3RoU3RlcDoKICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgInNt
b290aHN0ZXAoIiwgIiwgIiwgIikiKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEVPcEZyZXhwOgorICAgICAgICBjYXNlIEVPcExkZXhwOgorICAgICAgICAgICAgQVNTRVJUKG5v
ZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSk7CisgICAgICAgICAgICB3cml0ZUVtdWxhdGVk
RnVuY3Rpb25UcmlwbGV0KG91dCwgdmlzaXQsIG5vZGUtPmdldE9wKCkpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgRU9wRGlzdGFuY2U6CiAgICAgICAgICAgICBvdXRwdXRUcmlw
bGV0KG91dCwgdmlzaXQsICJkaXN0YW5jZSgiLCAiLCAiLCAiKSIpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0xODkzLDcgKzIwMTMsNyBAQCBib29sIE91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRl
KFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgRU9wRmFjZUZvcndhcmQ6CiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+
Z2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpKTsKLSAgICAgICAgICAgIHdyaXRlRW11bGF0ZWRGdW5j
dGlvblRyaXBsZXQob3V0LCB2aXNpdCwgImZhY2Vmb3J3YXJkKCIpOworICAgICAgICAgICAgd3Jp
dGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQsIHZpc2l0LCBub2RlLT5nZXRPcCgpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVPcFJlZmxlY3Q6CiAgICAgICAgICAgICBv
dXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJyZWZsZWN0KCIsICIsICIsICIpIik7CkBAIC0xOTAz
LDExICsyMDIzLDIwIEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlz
aXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBFT3BPdXRlclByb2R1Y3Q6CiAgICAgICAgICAgICBBU1NFUlQobm9kZS0+Z2V0VXNlRW11
bGF0ZWRGdW5jdGlvbigpKTsKLSAgICAgICAgICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBs
ZXQob3V0LCB2aXNpdCwgIm91dGVyUHJvZHVjdCgiKTsKKyAgICAgICAgICAgIHdyaXRlRW11bGF0
ZWRGdW5jdGlvblRyaXBsZXQob3V0LCB2aXNpdCwgbm9kZS0+Z2V0T3AoKSk7CiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBFT3BNdWw6CisgICAgICAgIGNhc2UgRU9wTXVsTWF0cml4
Q29tcG9uZW50V2lzZToKICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigi
LCAiICogIiwgIikiKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdGZp
ZWxkRXh0cmFjdDoKKyAgICAgICAgY2FzZSBFT3BCaXRmaWVsZEluc2VydDoKKyAgICAgICAgY2Fz
ZSBFT3BVYWRkQ2Fycnk6CisgICAgICAgIGNhc2UgRU9wVXN1YkJvcnJvdzoKKyAgICAgICAgY2Fz
ZSBFT3BVbXVsRXh0ZW5kZWQ6CisgICAgICAgIGNhc2UgRU9wSW11bEV4dGVuZGVkOgorICAgICAg
ICAgICAgQVNTRVJUKG5vZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSk7CisgICAgICAgICAg
ICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91dCwgdmlzaXQsIG5vZGUtPmdldE9wKCkp
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOwogICAgIH0KQEAgLTE5OTcsNyArMjEyNiw4IEBAIGJvb2wgT3V0cHV0SExTTDo6
dmlzaXRTd2l0Y2goVmlzaXQgdmlzaXQsIFRJbnRlcm1Td2l0Y2ggKm5vZGUpCiAKICAgICBpZiAo
bm9kZS0+Z2V0U3RhdGVtZW50TGlzdCgpKQogICAgIHsKLSAgICAgICAgbm9kZS0+c2V0U3RhdGVt
ZW50TGlzdChSZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaDo6cmVtb3ZlRmFsbFRocm91Z2gobm9kZS0+
Z2V0U3RhdGVtZW50TGlzdCgpKSk7CisgICAgICAgIG5vZGUtPnNldFN0YXRlbWVudExpc3QoCisg
ICAgICAgICAgICBSZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaDo6cmVtb3ZlRmFsbFRocm91Z2gobm9k
ZS0+Z2V0U3RhdGVtZW50TGlzdCgpKSk7CiAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNp
dCwgInN3aXRjaCAoIiwgIikgIiwgIiIpOwogICAgICAgICAvLyBUaGUgY3VybHkgYnJhY2VzIGdl
dCB3cml0dGVuIHdoZW4gdmlzaXRpbmcgdGhlIHN0YXRlbWVudExpc3QgYWdncmVnYXRlCiAgICAg
fQpAQCAtMjAzNiw4ICsyMTY2LDggQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdExvb3AoVmlzaXQg
dmlzaXQsIFRJbnRlcm1Mb29wICpub2RlKQogICAgIG1OZXN0ZWRMb29wRGVwdGgrKzsKIAogICAg
IGJvb2wgd2FzRGlzY29udGludW91cyA9IG1JbnNpZGVEaXNjb250aW51b3VzTG9vcDsKLSAgICBt
SW5zaWRlRGlzY29udGludW91c0xvb3AgPSBtSW5zaWRlRGlzY29udGludW91c0xvb3AgfHwKLSAg
ICBtQ3VycmVudEZ1bmN0aW9uTWV0YWRhdGEtPm1EaXNjb250aW51b3VzTG9vcHMuY291bnQobm9k
ZSkgPiAwOworICAgIG1JbnNpZGVEaXNjb250aW51b3VzTG9vcCA9CisgICAgICAgIG1JbnNpZGVE
aXNjb250aW51b3VzTG9vcCB8fCBtQ3VycmVudEZ1bmN0aW9uTWV0YWRhdGEtPm1EaXNjb250aW51
b3VzTG9vcHMuY291bnQobm9kZSkgPiAwOwogCiAgICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gZ2V0
SW5mb1NpbmsoKTsKIApAQCAtMjEyNSw5MyArMjI1NSw2MiBAQCBib29sIE91dHB1dEhMU0w6OnZp
c2l0QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoICpub2RlKQogCiAgICAgc3dpdGNo
IChub2RlLT5nZXRGbG93T3AoKSkKICAgICB7Ci0gICAgICBjYXNlIEVPcEtpbGw6Ci0gICAgICAg
ICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiZGlzY2FyZDtcbiIsICIiLCAiIik7Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BCcmVhazoKLSAgICAgICAgaWYgKHZpc2l0ID09IFBy
ZVZpc2l0KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobU5lc3RlZExvb3BEZXB0aCA+IDEp
CisgICAgICAgIGNhc2UgRU9wS2lsbDoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2
aXNpdCwgImRpc2NhcmQ7XG4iLCAiIiwgIiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wQnJlYWs6CisgICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbVVzZXNOZXN0ZWRCcmVhayA9IHRydWU7Ci0gICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1OZXN0ZWRMb29wRGVwdGggPiAxKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbVVzZXNOZXN0ZWRCcmVhayA9IHRy
dWU7CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobUV4Y2Vzc2l2ZUxvb3BJ
bmRleCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXQgPDwgIntCcmVhayI7Ci0g
ICAgICAgICAgICAgICAgbUV4Y2Vzc2l2ZUxvb3BJbmRleC0+dHJhdmVyc2UodGhpcyk7Ci0gICAg
ICAgICAgICAgICAgb3V0IDw8ICIgPSB0cnVlOyBicmVhazt9XG4iOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dCA8PCAi
YnJlYWs7XG4iOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBFT3BDb250aW51ZToKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQs
ICJjb250aW51ZTtcbiIsICIiLCAiIik7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVP
cFJldHVybjoKLSAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAobm9kZS0+Z2V0RXhwcmVzc2lvbigpKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIG91dCA8PCAicmV0dXJuICI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICJyZXR1cm47XG4iOwor
ICAgICAgICAgICAgICAgIGlmIChtRXhjZXNzaXZlTG9vcEluZGV4KQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJ7QnJlYWsiOworICAgICAgICAgICAgICAg
ICAgICBtRXhjZXNzaXZlTG9vcEluZGV4LT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAgICAgICAg
ICAgICAgb3V0IDw8ICIgPSB0cnVlOyBicmVhazt9XG4iOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBvdXQgPDwgImJyZWFrO1xuIjsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAodmlzaXQgPT0gUG9zdFZpc2l0KQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAobm9kZS0+Z2V0RXhwcmVzc2lvbigpKQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRU9wQ29udGludWU6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0
KG91dCwgdmlzaXQsICJjb250aW51ZTtcbiIsICIiLCAiIik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFT3BSZXR1cm46CisgICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlz
aXQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICI7XG4iOworICAgICAg
ICAgICAgICAgIGlmIChub2RlLT5nZXRFeHByZXNzaW9uKCkpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBvdXQgPDwgInJldHVybiAiOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBvdXQgPDwgInJldHVybjtcbiI7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUo
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBPdXRwdXRITFNMOjppc1Np
bmdsZVN0YXRlbWVudChUSW50ZXJtTm9kZSAqbm9kZSkKLXsKLSAgICBpZiAobm9kZS0+Z2V0QXNC
bG9jaygpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFRJbnRl
cm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSA9IG5vZGUtPmdldEFzQWdncmVnYXRlKCk7Ci0gICAgaWYg
KGFnZ3JlZ2F0ZSkKLSAgICB7Ci0gICAgICAgIGlmIChhZ2dyZWdhdGUtPmdldE9wKCkgPT0gRU9w
RGVjbGFyYXRpb24pCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIERlY2xhcmluZyBtdWx0aXBs
ZSBjb21tYS1zZXBhcmF0ZWQgdmFyaWFibGVzIG11c3QgYmUgY29uc2lkZXJlZCBtdWx0aXBsZSBz
dGF0ZW1lbnRzCi0gICAgICAgICAgICAvLyBiZWNhdXNlIGVhY2ggaW5kaXZpZHVhbCBkZWNsYXJh
dGlvbiBoYXMgc2lkZSBlZmZlY3RzIHdoaWNoIGFyZSB2aXNpYmxlIGluIHRoZSBuZXh0LgotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ewotICAgICAgICAgICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6Oml0ZXJhdG9yIHNpdCA9IGFnZ3Jl
Z2F0ZS0+Z2V0U2VxdWVuY2UoKS0+YmVnaW4oKTsgc2l0ICE9IGFnZ3JlZ2F0ZS0+Z2V0U2VxdWVu
Y2UoKS0+ZW5kKCk7IHNpdCsrKQorICAgICAgICAgICAgZWxzZSBpZiAodmlzaXQgPT0gUG9zdFZp
c2l0KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghaXNTaW5nbGVTdGF0ZW1l
bnQoKnNpdCkpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldEV4cHJlc3Npb24oKSkKICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgb3V0IDw8ICI7XG4iOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAg
ICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogLy8gSGFuZGxlIGxvb3BzIHdpdGggbW9yZSB0
aGFuIDI1NCBpdGVyYXRpb25zICh1bnN1cHBvcnRlZCBieSBEM0Q5KSBieSBzcGxpdHRpbmcgdGhl
bQotLy8gKFRoZSBEM0QgZG9jdW1lbnRhdGlvbiBzYXlzIDI1NSBpdGVyYXRpb25zLCBidXQgdGhl
IGNvbXBpbGVyIGNvbXBsYWlucyBhdCBhbnl0aGluZyBtb3JlIHRoYW4gMjU0KS4KKy8vIChUaGUg
RDNEIGRvY3VtZW50YXRpb24gc2F5cyAyNTUgaXRlcmF0aW9ucywgYnV0IHRoZSBjb21waWxlciBj
b21wbGFpbnMgYXQgYW55dGhpbmcgbW9yZSB0aGFuCisvLyAyNTQpLgogYm9vbCBPdXRwdXRITFNM
OjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbmZvU2lua0Jhc2UgJm91dCwgVEludGVybUxvb3AgKm5v
ZGUpCiB7CiAgICAgY29uc3QgaW50IE1BWF9MT09QX0lURVJBVElPTlMgPSAyNTQ7CkBAIC0yMjIw
LDE5ICsyMzE5LDE5IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcChUSW5m
b1NpbmtCYXNlICZvdXQsIFRJbnRlcm1Mb29wICpub2RlKQogICAgIC8vIGZvcihpbnQgaW5kZXgg
PSBpbml0aWFsOyBpbmRleCBbY29tcGFyYXRvcl0gbGltaXQ7IGluZGV4ICs9IGluY3JlbWVudCkK
ICAgICBUSW50ZXJtU3ltYm9sICppbmRleCA9IE5VTEw7CiAgICAgVE9wZXJhdG9yIGNvbXBhcmF0
b3IgPSBFT3BOdWxsOwotICAgIGludCBpbml0aWFsID0gMDsKLSAgICBpbnQgbGltaXQgPSAwOwot
ICAgIGludCBpbmNyZW1lbnQgPSAwOworICAgIGludCBpbml0aWFsICAgICAgICAgID0gMDsKKyAg
ICBpbnQgbGltaXQgICAgICAgICAgICA9IDA7CisgICAgaW50IGluY3JlbWVudCAgICAgICAgPSAw
OwogCiAgICAgLy8gUGFyc2UgaW5kZXggbmFtZSBhbmQgaW50aWFsIHZhbHVlCiAgICAgaWYgKG5v
ZGUtPmdldEluaXQoKSkKICAgICB7Ci0gICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmluaXQgPSBu
b2RlLT5nZXRJbml0KCktPmdldEFzQWdncmVnYXRlKCk7CisgICAgICAgIFRJbnRlcm1EZWNsYXJh
dGlvbiAqaW5pdCA9IG5vZGUtPmdldEluaXQoKS0+Z2V0QXNEZWNsYXJhdGlvbk5vZGUoKTsKIAog
ICAgICAgICBpZiAoaW5pdCkKICAgICAgICAgewogICAgICAgICAgICAgVEludGVybVNlcXVlbmNl
ICpzZXF1ZW5jZSA9IGluaXQtPmdldFNlcXVlbmNlKCk7Ci0gICAgICAgICAgICBUSW50ZXJtVHlw
ZWQgKnZhcmlhYmxlID0gKCpzZXF1ZW5jZSlbMF0tPmdldEFzVHlwZWQoKTsKKyAgICAgICAgICAg
IFRJbnRlcm1UeXBlZCAqdmFyaWFibGUgICAgPSAoKnNlcXVlbmNlKVswXS0+Z2V0QXNUeXBlZCgp
OwogCiAgICAgICAgICAgICBpZiAodmFyaWFibGUgJiYgdmFyaWFibGUtPmdldFF1YWxpZmllcigp
ID09IEV2cVRlbXBvcmFyeSkKICAgICAgICAgICAgIHsKQEAgLTIyNDAsMTQgKzIzMzksMTQgQEAg
Ym9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbmZvU2lua0Jhc2UgJm91dCwg
VEludGVybUxvb3AgKm5vZGUpCiAKICAgICAgICAgICAgICAgICBpZiAoYXNzaWduLT5nZXRPcCgp
ID09IEVPcEluaXRpYWxpemUpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSBhc3NpZ24tPmdldExlZnQoKS0+Z2V0QXNTeW1ib2xO
b2RlKCk7CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCAgICAgICAg
ICA9IGFzc2lnbi0+Z2V0TGVmdCgpLT5nZXRBc1N5bWJvbE5vZGUoKTsKICAgICAgICAgICAgICAg
ICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKmNvbnN0YW50ID0gYXNzaWduLT5nZXRSaWdodCgp
LT5nZXRBc0NvbnN0YW50VW5pb24oKTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoc3ltYm9s
ICYmIGNvbnN0YW50KQogICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoY29uc3RhbnQtPmdldEJhc2ljVHlwZSgpID09IEVidEludCAmJiBjb25zdGFudC0+
aXNTY2FsYXIoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmRleCA9IHN5bWJvbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmRleCAgID0gc3ltYm9sOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWwgPSBj
b25zdGFudC0+Z2V0SUNvbnN0KDApOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICB9CkBAIC0yMjcwLDcgKzIzNjksNyBAQCBib29sIE91dHB1dEhMU0w6Omhh
bmRsZUV4Y2Vzc2l2ZUxvb3AoVEluZm9TaW5rQmFzZSAmb3V0LCBUSW50ZXJtTG9vcCAqbm9kZSkK
ICAgICAgICAgICAgICAgICBpZiAoY29uc3RhbnQtPmdldEJhc2ljVHlwZSgpID09IEVidEludCAm
JiBjb25zdGFudC0+aXNTY2FsYXIoKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgIGNvbXBhcmF0b3IgPSB0ZXN0LT5nZXRPcCgpOwotICAgICAgICAgICAgICAgICAgICBs
aW1pdCA9IGNvbnN0YW50LT5nZXRJQ29uc3QoMCk7CisgICAgICAgICAgICAgICAgICAgIGxpbWl0
ICAgICAgPSBjb25zdGFudC0+Z2V0SUNvbnN0KDApOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KICAgICAgICAgfQpAQCAtMjI4MCwxMSArMjM3OSwxMSBAQCBib29sIE91dHB1dEhM
U0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluZm9TaW5rQmFzZSAmb3V0LCBUSW50ZXJtTG9vcCAq
bm9kZSkKICAgICBpZiAoaW5kZXggIT0gTlVMTCAmJiBjb21wYXJhdG9yICE9IEVPcE51bGwgJiYg
bm9kZS0+Z2V0RXhwcmVzc2lvbigpKQogICAgIHsKICAgICAgICAgVEludGVybUJpbmFyeSAqYmlu
YXJ5VGVybWluYWwgPSBub2RlLT5nZXRFeHByZXNzaW9uKCktPmdldEFzQmluYXJ5Tm9kZSgpOwot
ICAgICAgICBUSW50ZXJtVW5hcnkgKnVuYXJ5VGVybWluYWwgPSBub2RlLT5nZXRFeHByZXNzaW9u
KCktPmdldEFzVW5hcnlOb2RlKCk7CisgICAgICAgIFRJbnRlcm1VbmFyeSAqdW5hcnlUZXJtaW5h
bCAgID0gbm9kZS0+Z2V0RXhwcmVzc2lvbigpLT5nZXRBc1VuYXJ5Tm9kZSgpOwogCiAgICAgICAg
IGlmIChiaW5hcnlUZXJtaW5hbCkKICAgICAgICAgewotICAgICAgICAgICAgVE9wZXJhdG9yIG9w
ID0gYmluYXJ5VGVybWluYWwtPmdldE9wKCk7CisgICAgICAgICAgICBUT3BlcmF0b3Igb3AgICAg
ICAgICAgICAgICAgICAgPSBiaW5hcnlUZXJtaW5hbC0+Z2V0T3AoKTsKICAgICAgICAgICAgIFRJ
bnRlcm1Db25zdGFudFVuaW9uICpjb25zdGFudCA9IGJpbmFyeVRlcm1pbmFsLT5nZXRSaWdodCgp
LT5nZXRBc0NvbnN0YW50VW5pb24oKTsKIAogICAgICAgICAgICAgaWYgKGNvbnN0YW50KQpAQCAt
MjI5NSw5ICsyMzk0LDE0IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcChU
SW5mb1NpbmtCYXNlICZvdXQsIFRJbnRlcm1Mb29wICpub2RlKQogCiAgICAgICAgICAgICAgICAg
ICAgIHN3aXRjaCAob3ApCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIEVPcEFkZEFzc2lnbjogaW5jcmVtZW50ID0gdmFsdWU7ICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIEVPcFN1YkFzc2lnbjogaW5jcmVtZW50ID0gLXZhbHVlOyBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBVTklNUExFTUVOVEVEKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVPcEFkZEFzc2lnbjoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbmNyZW1lbnQgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRU9wU3ViQXNzaWduOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudCA9IC12YWx1ZTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjMw
OCwxMSArMjQxMiwyMCBAQCBib29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVElu
Zm9TaW5rQmFzZSAmb3V0LCBUSW50ZXJtTG9vcCAqbm9kZSkKIAogICAgICAgICAgICAgc3dpdGNo
IChvcCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBFT3BQb3N0SW5jcmVtZW50
OiBpbmNyZW1lbnQgPSAxOyAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgRU9wUG9zdERlY3Jl
bWVudDogaW5jcmVtZW50ID0gLTE7IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEVPcFByZUlu
Y3JlbWVudDogIGluY3JlbWVudCA9IDE7ICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFT3BQ
cmVEZWNyZW1lbnQ6ICBpbmNyZW1lbnQgPSAtMTsgYnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1
bHQ6IFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgICAgICBjYXNlIEVPcFBvc3RJbmNyZW1l
bnQ6CisgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudCA9IDE7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRU9wUG9zdERlY3JlbWVudDoKKyAgICAg
ICAgICAgICAgICAgICAgaW5jcmVtZW50ID0gLTE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgRU9wUHJlSW5jcmVtZW50OgorICAgICAgICAgICAgICAg
ICAgICBpbmNyZW1lbnQgPSAxOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjYXNlIEVPcFByZURlY3JlbWVudDoKKyAgICAgICAgICAgICAgICAgICAgaW5jcmVt
ZW50ID0gLTE7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KQEAgLTIzMzEsMTEgKzI0NDQsMTEgQEAgYm9vbCBPdXRwdXRI
TFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbmZvU2lua0Jhc2UgJm91dCwgVEludGVybUxvb3Ag
Km5vZGUpCiAKICAgICAgICAgICAgIGlmIChpdGVyYXRpb25zIDw9IE1BWF9MT09QX0lURVJBVElP
TlMpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgIC8vIE5v
dCBhbiBleGNlc3NpdmUgbG9vcAorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgIC8vIE5v
dCBhbiBleGNlc3NpdmUgbG9vcAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBUSW50ZXJt
U3ltYm9sICpyZXN0b3JlSW5kZXggPSBtRXhjZXNzaXZlTG9vcEluZGV4OwotICAgICAgICAgICAg
bUV4Y2Vzc2l2ZUxvb3BJbmRleCA9IGluZGV4OworICAgICAgICAgICAgbUV4Y2Vzc2l2ZUxvb3BJ
bmRleCAgICAgICAgID0gaW5kZXg7CiAKICAgICAgICAgICAgIG91dCA8PCAie2ludCAiOwogICAg
ICAgICAgICAgaW5kZXgtPnRyYXZlcnNlKHRoaXMpOwpAQCAtMjM1NywxMyArMjQ3MCwxNCBAQCBi
b29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluZm9TaW5rQmFzZSAmb3V0LCBU
SW50ZXJtTG9vcCAqbm9kZSkKICAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICIpIHtcbiI7CiAg
ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaWYgKGl0ZXJhdGlvbnMgPD0gTUFY
X0xPT1BfSVRFUkFUSU9OUykgICAvLyBMYXN0IGxvb3AgZnJhZ21lbnQKKyAgICAgICAgICAgICAg
ICBpZiAoaXRlcmF0aW9ucyA8PSBNQVhfTE9PUF9JVEVSQVRJT05TKSAgLy8gTGFzdCBsb29wIGZy
YWdtZW50CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBtRXhjZXNzaXZl
TG9vcEluZGV4ID0gTlVMTDsgICAvLyBTdG9wcyBzZXR0aW5nIHRoZSBCcmVhayBmbGFnCisgICAg
ICAgICAgICAgICAgICAgIG1FeGNlc3NpdmVMb29wSW5kZXggPSBOVUxMOyAgLy8gU3RvcHMgc2V0
dGluZyB0aGUgQnJlYWsgZmxhZwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IC8vIGZvcihpbnQgaW5kZXggPSBpbml0aWFsOyBpbmRleCA8IGNsYW1wZWRMaW1pdDsgaW5kZXgg
Kz0gaW5jcmVtZW50KQotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVucm9sbCA9IG1DdXJy
ZW50RnVuY3Rpb25NZXRhZGF0YS0+aGFzR3JhZGllbnRJbkNhbGxHcmFwaChub2RlKSA/ICJMT09Q
IiA6ICIiOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVucm9sbCA9CisgICAgICAgICAg
ICAgICAgICAgIG1DdXJyZW50RnVuY3Rpb25NZXRhZGF0YS0+aGFzR3JhZGllbnRJbkNhbGxHcmFw
aChub2RlKSA/ICJMT09QIiA6ICIiOwogCiAgICAgICAgICAgICAgICAgb3V0IDw8IHVucm9sbCA8
PCAiIGZvcigiOwogICAgICAgICAgICAgICAgIGluZGV4LT50cmF2ZXJzZSh0aGlzKTsKQEAgLTI0
MDksMTAgKzI1MjMsMTEgQEAgYm9vbCBPdXRwdXRITFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJ
bmZvU2lua0Jhc2UgJm91dCwgVEludGVybUxvb3AgKm5vZGUpCiAKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgVU5JTVBMRU1FTlRFRCgpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgfQogCi0gICAgcmV0dXJu
IGZhbHNlOyAgIC8vIE5vdCBoYW5kbGVkIGFzIGFuIGV4Y2Vzc2l2ZSBsb29wCisgICAgcmV0dXJu
IGZhbHNlOyAgLy8gTm90IGhhbmRsZWQgYXMgYW4gZXhjZXNzaXZlIGxvb3AKIH0KIAogdm9pZCBP
dXRwdXRITFNMOjpvdXRwdXRUcmlwbGV0KFRJbmZvU2lua0Jhc2UgJm91dCwKQEAgLTI1ODAsMTIg
KzI2OTUsMTIgQEAgY29uc3QgVENvbnN0YW50VW5pb24gKk91dHB1dEhMU0w6OndyaXRlQ29uc3Rh
bnRVbmlvbihUSW5mb1NpbmtCYXNlICZvdXQsCiB7CiAgICAgY29uc3QgVENvbnN0YW50VW5pb24g
KmNvbnN0VW5pb25JdGVyYXRlZCA9IGNvbnN0VW5pb247CiAKLSAgICBjb25zdCBUU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOworICAgIGNvbnN0IFRTdHJ1Y3R1cmUgKnN0
cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0KCk7CiAgICAgaWYgKHN0cnVjdHVyZSkKICAgICB7CiAg
ICAgICAgIG91dCA8PCBTdHJ1Y3ROYW1lU3RyaW5nKCpzdHJ1Y3R1cmUpICsgIl9jdG9yKCI7CiAK
LSAgICAgICAgY29uc3QgVEZpZWxkTGlzdCYgZmllbGRzID0gc3RydWN0dXJlLT5maWVsZHMoKTsK
KyAgICAgICAgY29uc3QgVEZpZWxkTGlzdCAmZmllbGRzID0gc3RydWN0dXJlLT5maWVsZHMoKTsK
IAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAg
ICAgICAgewpAQCAtMjYwMiwxNCArMjcxNywxNCBAQCBjb25zdCBUQ29uc3RhbnRVbmlvbiAqT3V0
cHV0SExTTDo6d3JpdGVDb25zdGFudFVuaW9uKFRJbmZvU2lua0Jhc2UgJm91dCwKICAgICB9CiAg
ICAgZWxzZQogICAgIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSB0eXBlLmdldE9iamVjdFNpemUo
KTsKKyAgICAgICAgc2l6ZV90IHNpemUgICAgPSB0eXBlLmdldE9iamVjdFNpemUoKTsKICAgICAg
ICAgYm9vbCB3cml0ZVR5cGUgPSBzaXplID4gMTsKIAogICAgICAgICBpZiAod3JpdGVUeXBlKQog
ICAgICAgICB7CiAgICAgICAgICAgICBvdXQgPDwgVHlwZVN0cmluZyh0eXBlKSA8PCAiKCI7CiAg
ICAgICAgIH0KLSAgICAgICAgY29uc3RVbmlvbkl0ZXJhdGVkID0gV3JpdGVDb25zdGFudFVuaW9u
QXJyYXkob3V0LCBjb25zdFVuaW9uSXRlcmF0ZWQsIHNpemUpOworICAgICAgICBjb25zdFVuaW9u
SXRlcmF0ZWQgPSB3cml0ZUNvbnN0YW50VW5pb25BcnJheShvdXQsIGNvbnN0VW5pb25JdGVyYXRl
ZCwgc2l6ZSk7CiAgICAgICAgIGlmICh3cml0ZVR5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IG91dCA8PCAiKSI7CkBAIC0yNjE5LDEzICsyNzM0LDIzIEBAIGNvbnN0IFRDb25zdGFudFVuaW9u
ICpPdXRwdXRITFNMOjp3cml0ZUNvbnN0YW50VW5pb24oVEluZm9TaW5rQmFzZSAmb3V0LAogICAg
IHJldHVybiBjb25zdFVuaW9uSXRlcmF0ZWQ7CiB9CiAKLXZvaWQgT3V0cHV0SExTTDo6d3JpdGVF
bXVsYXRlZEZ1bmN0aW9uVHJpcGxldChUSW5mb1NpbmtCYXNlICZvdXQsIFZpc2l0IHZpc2l0LCBj
b25zdCBjaGFyICpwcmVTdHIpCit2b2lkIE91dHB1dEhMU0w6OndyaXRlRW11bGF0ZWRGdW5jdGlv
blRyaXBsZXQoVEluZm9TaW5rQmFzZSAmb3V0LCBWaXNpdCB2aXNpdCwgVE9wZXJhdG9yIG9wKQog
ewotICAgIFRTdHJpbmcgcHJlU3RyaW5nID0gQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkdldEVt
dWxhdGVkRnVuY3Rpb25OYW1lKHByZVN0cik7Ci0gICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0
LCBwcmVTdHJpbmcuY19zdHIoKSwgIiwgIiwgIikiKTsKKyAgICBpZiAodmlzaXQgPT0gUHJlVmlz
aXQpCisgICAgeworICAgICAgICBjb25zdCBjaGFyICpvcFN0ciA9IEdldE9wZXJhdG9yU3RyaW5n
KG9wKTsKKyAgICAgICAgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OldyaXRlRW11bGF0ZWRGdW5j
dGlvbk5hbWUob3V0LCBvcFN0cik7CisgICAgICAgIG91dCA8PCAiKCI7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgbnVsbHB0ciwgIiwg
IiwgIikiKTsKKyAgICB9CiB9CiAKLWJvb2wgT3V0cHV0SExTTDo6d3JpdGVTYW1lU3ltYm9sSW5p
dGlhbGl6ZXIoVEluZm9TaW5rQmFzZSAmb3V0LCBUSW50ZXJtU3ltYm9sICpzeW1ib2xOb2RlLCBU
SW50ZXJtVHlwZWQgKmV4cHJlc3Npb24pCitib29sIE91dHB1dEhMU0w6OndyaXRlU2FtZVN5bWJv
bEluaXRpYWxpemVyKFRJbmZvU2lua0Jhc2UgJm91dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sTm9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpleHByZXNz
aW9uKQogewogICAgIHNoOjpTZWFyY2hTeW1ib2wgc2VhcmNoU3ltYm9sKHN5bWJvbE5vZGUtPmdl
dFN5bWJvbCgpKTsKICAgICBleHByZXNzaW9uLT50cmF2ZXJzZSgmc2VhcmNoU3ltYm9sKTsKQEAg
LTI2NzAsNyArMjc5NSw3IEBAIGJvb2wgT3V0cHV0SExTTDo6d3JpdGVDb25zdGFudEluaXRpYWxp
emF0aW9uKFRJbmZvU2lua0Jhc2UgJm91dCwKICAgICAgICAgewogICAgICAgICAgICAgVEludGVy
bUNvbnN0YW50VW5pb24gKm5vZGVDb25zdCAgPSBleHByZXNzaW9uLT5nZXRBc0NvbnN0YW50VW5p
b24oKTsKICAgICAgICAgICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICpjb25zdFVuaW9uID0gbm9k
ZUNvbnN0LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwotICAgICAgICAgICAgV3JpdGVDb25zdGFu
dFVuaW9uQXJyYXkob3V0LCBjb25zdFVuaW9uLCBub2RlQ29uc3QtPmdldFR5cGUoKS5nZXRPYmpl
Y3RTaXplKCkpOworICAgICAgICAgICAgd3JpdGVDb25zdGFudFVuaW9uQXJyYXkob3V0LCBjb25z
dFVuaW9uLCBub2RlQ29uc3QtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCkpOwogICAgICAgICB9
CiAgICAgICAgIGVsc2UKICAgICAgICAgewpAQCAtMjY4MSw3ICsyODA2LDcgQEAgYm9vbCBPdXRw
dXRITFNMOjp3cml0ZUNvbnN0YW50SW5pdGlhbGl6YXRpb24oVEluZm9TaW5rQmFzZSAmb3V0LAog
ICAgICAgICAgICAgICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpub2RlQ29uc3QgPSBub2RlLT5n
ZXRBc0NvbnN0YW50VW5pb24oKTsKICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZUNvbnN0KTsK
ICAgICAgICAgICAgICAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAqY29uc3RVbmlvbiA9IG5vZGVD
b25zdC0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAgICAgICAgICAgICAgICBXcml0ZUNvbnN0
YW50VW5pb25BcnJheShvdXQsIGNvbnN0VW5pb24sIG5vZGVDb25zdC0+Z2V0VHlwZSgpLmdldE9i
amVjdFNpemUoKSk7CisgICAgICAgICAgICAgICAgd3JpdGVDb25zdGFudFVuaW9uQXJyYXkob3V0
LCBjb25zdFVuaW9uLCBub2RlQ29uc3QtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCkpOwogICAg
ICAgICAgICAgICAgIGlmIChub2RlICE9IGNvbnN0cnVjdG9yLT5nZXRTZXF1ZW5jZSgpLT5iYWNr
KCkpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgIjsK
QEAgLTI3MDksMTggKzI4MzQsMTkgQEAgVFN0cmluZyBPdXRwdXRITFNMOjphZGRTdHJ1Y3RFcXVh
bGl0eUZ1bmN0aW9uKGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdHVyZSkKICAgICBjb25zdCBUU3Ry
aW5nICZzdHJ1Y3ROYW1lU3RyaW5nID0gU3RydWN0TmFtZVN0cmluZyhzdHJ1Y3R1cmUpOwogCiAg
ICAgU3RydWN0RXF1YWxpdHlGdW5jdGlvbiAqZnVuY3Rpb24gPSBuZXcgU3RydWN0RXF1YWxpdHlG
dW5jdGlvbigpOwotICAgIGZ1bmN0aW9uLT5zdHJ1Y3R1cmUgPSAmc3RydWN0dXJlOwotICAgIGZ1
bmN0aW9uLT5mdW5jdGlvbk5hbWUgPSAiYW5nbGVfZXFfIiArIHN0cnVjdE5hbWVTdHJpbmc7Cisg
ICAgZnVuY3Rpb24tPnN0cnVjdHVyZSAgICAgICAgICAgICAgPSAmc3RydWN0dXJlOworICAgIGZ1
bmN0aW9uLT5mdW5jdGlvbk5hbWUgICAgICAgICAgID0gImFuZ2xlX2VxXyIgKyBzdHJ1Y3ROYW1l
U3RyaW5nOwogCiAgICAgVEluZm9TaW5rQmFzZSBmbk91dDsKIAotICAgIGZuT3V0IDw8ICJib29s
ICIgPDwgZnVuY3Rpb24tPmZ1bmN0aW9uTmFtZSA8PCAiKCIgPDwgc3RydWN0TmFtZVN0cmluZyA8
PCAiIGEsICIgPDwgc3RydWN0TmFtZVN0cmluZyArICIgYilcbiIKKyAgICBmbk91dCA8PCAiYm9v
bCAiIDw8IGZ1bmN0aW9uLT5mdW5jdGlvbk5hbWUgPDwgIigiIDw8IHN0cnVjdE5hbWVTdHJpbmcg
PDwgIiBhLCAiCisgICAgICAgICAgPDwgc3RydWN0TmFtZVN0cmluZyArICIgYilcbiIKICAgICAg
ICAgICA8PCAie1xuIgogICAgICAgICAgICAgICIgICAgcmV0dXJuICI7CiAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICB7Ci0gICAgICAgIGNvbnN0
IFRGaWVsZCAqZmllbGQgPSBmaWVsZHNbaV07CisgICAgICAgIGNvbnN0IFRGaWVsZCAqZmllbGQg
ICAgPSBmaWVsZHNbaV07CiAgICAgICAgIGNvbnN0IFRUeXBlICpmaWVsZFR5cGUgPSBmaWVsZC0+
dHlwZSgpOwogCiAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmZpZWxkTmFtZUEgPSAiYS4iICsgRGVj
b3JhdGUoZmllbGQtPm5hbWUoKSk7CkBAIC0yNzQwLDcgKzI4NjYsOCBAQCBUU3RyaW5nIE91dHB1
dEhMU0w6OmFkZFN0cnVjdEVxdWFsaXR5RnVuY3Rpb24oY29uc3QgVFN0cnVjdHVyZSAmc3RydWN0
dXJlKQogICAgICAgICBmbk91dCA8PCAiKSI7CiAgICAgfQogCi0gICAgZm5PdXQgPDwgIjtcbiIg
PDwgIn1cbiI7CisgICAgZm5PdXQgPDwgIjtcbiIKKyAgICAgICAgICA8PCAifVxuIjsKIAogICAg
IGZ1bmN0aW9uLT5mdW5jdGlvbkRlZmluaXRpb24gPSBmbk91dC5jX3N0cigpOwogCkBAIC0yNzUw
LDcgKzI4NzcsNyBAQCBUU3RyaW5nIE91dHB1dEhMU0w6OmFkZFN0cnVjdEVxdWFsaXR5RnVuY3Rp
b24oY29uc3QgVFN0cnVjdHVyZSAmc3RydWN0dXJlKQogICAgIHJldHVybiBmdW5jdGlvbi0+ZnVu
Y3Rpb25OYW1lOwogfQogCi1UU3RyaW5nIE91dHB1dEhMU0w6OmFkZEFycmF5RXF1YWxpdHlGdW5j
dGlvbihjb25zdCBUVHlwZSYgdHlwZSkKK1RTdHJpbmcgT3V0cHV0SExTTDo6YWRkQXJyYXlFcXVh
bGl0eUZ1bmN0aW9uKGNvbnN0IFRUeXBlICZ0eXBlKQogewogICAgIGZvciAoY29uc3QgYXV0byAm
ZXFGdW5jdGlvbiA6IG1BcnJheUVxdWFsaXR5RnVuY3Rpb25zKQogICAgIHsKQEAgLTI3NjMsNyAr
Mjg5MCw3IEBAIFRTdHJpbmcgT3V0cHV0SExTTDo6YWRkQXJyYXlFcXVhbGl0eUZ1bmN0aW9uKGNv
bnN0IFRUeXBlJiB0eXBlKQogICAgIGNvbnN0IFRTdHJpbmcgJnR5cGVOYW1lID0gVHlwZVN0cmlu
Zyh0eXBlKTsKIAogICAgIEFycmF5SGVscGVyRnVuY3Rpb24gKmZ1bmN0aW9uID0gbmV3IEFycmF5
SGVscGVyRnVuY3Rpb24oKTsKLSAgICBmdW5jdGlvbi0+dHlwZSA9IHR5cGU7CisgICAgZnVuY3Rp
b24tPnR5cGUgICAgICAgICAgICAgICAgPSB0eXBlOwogCiAgICAgVEluZm9TaW5rQmFzZSBmbk5h
bWVPdXQ7CiAgICAgZm5OYW1lT3V0IDw8ICJhbmdsZV9lcV8iIDw8IHR5cGUuZ2V0QXJyYXlTaXpl
KCkgPDwgIl8iIDw8IHR5cGVOYW1lOwpAQCAtMjc3NCwxMyArMjkwMSwxMyBAQCBUU3RyaW5nIE91
dHB1dEhMU0w6OmFkZEFycmF5RXF1YWxpdHlGdW5jdGlvbihjb25zdCBUVHlwZSYgdHlwZSkKIAog
ICAgIFRJbmZvU2lua0Jhc2UgZm5PdXQ7CiAKLSAgICBmbk91dCA8PCAiYm9vbCAiIDw8IGZ1bmN0
aW9uLT5mdW5jdGlvbk5hbWUgPDwgIigiCi0gICAgICAgICAgPDwgdHlwZU5hbWUgPDwgIiBhWyIg
PDwgdHlwZS5nZXRBcnJheVNpemUoKSA8PCAiXSwgIgotICAgICAgICAgIDw8IHR5cGVOYW1lIDw8
ICIgYlsiIDw8IHR5cGUuZ2V0QXJyYXlTaXplKCkgPDwgIl0pXG4iCisgICAgZm5PdXQgPDwgImJv
b2wgIiA8PCBmdW5jdGlvbi0+ZnVuY3Rpb25OYW1lIDw8ICIoIiA8PCB0eXBlTmFtZSA8PCAiIGFb
IiA8PCB0eXBlLmdldEFycmF5U2l6ZSgpCisgICAgICAgICAgPDwgIl0sICIgPDwgdHlwZU5hbWUg
PDwgIiBiWyIgPDwgdHlwZS5nZXRBcnJheVNpemUoKSA8PCAiXSlcbiIKICAgICAgICAgICA8PCAi
e1xuIgotICAgICAgICAgICAgICIgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAiIDw8IHR5cGUuZ2V0
QXJyYXlTaXplKCkgPDwgIjsgKytpKVxuIgotICAgICAgICAgICAgICIgICAge1xuIgotICAgICAg
ICAgICAgICIgICAgICAgIGlmICgiOworICAgICAgICAgICAgICIgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCAiCisgICAgICAgICAgPDwgdHlwZS5nZXRBcnJheVNpemUoKSA8PCAiOyArK2kpXG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHtcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIGlmICgiOwogCiAgICAgb3V0cHV0RXF1
YWwoUHJlVmlzaXQsIG5vbkFycmF5VHlwZSwgRU9wTm90RXF1YWwsIGZuT3V0KTsKICAgICBmbk91
dCA8PCAiYVtpXSI7CkBAIC0yODAxLDcgKzI5MjgsNyBAQCBUU3RyaW5nIE91dHB1dEhMU0w6OmFk
ZEFycmF5RXF1YWxpdHlGdW5jdGlvbihjb25zdCBUVHlwZSYgdHlwZSkKICAgICByZXR1cm4gZnVu
Y3Rpb24tPmZ1bmN0aW9uTmFtZTsKIH0KIAotVFN0cmluZyBPdXRwdXRITFNMOjphZGRBcnJheUFz
c2lnbm1lbnRGdW5jdGlvbihjb25zdCBUVHlwZSYgdHlwZSkKK1RTdHJpbmcgT3V0cHV0SExTTDo6
YWRkQXJyYXlBc3NpZ25tZW50RnVuY3Rpb24oY29uc3QgVFR5cGUgJnR5cGUpCiB7CiAgICAgZm9y
IChjb25zdCBhdXRvICZhc3NpZ25GdW5jdGlvbiA6IG1BcnJheUFzc2lnbm1lbnRGdW5jdGlvbnMp
CiAgICAgewpAQCAtMjgyMiwxNSArMjk0OSwxNSBAQCBUU3RyaW5nIE91dHB1dEhMU0w6OmFkZEFy
cmF5QXNzaWdubWVudEZ1bmN0aW9uKGNvbnN0IFRUeXBlJiB0eXBlKQogCiAgICAgVEluZm9TaW5r
QmFzZSBmbk91dDsKIAotICAgIGZuT3V0IDw8ICJ2b2lkICIgPDwgZnVuY3Rpb24uZnVuY3Rpb25O
YW1lIDw8ICIob3V0ICIKLSAgICAgICAgPDwgdHlwZU5hbWUgPDwgIiBhWyIgPDwgdHlwZS5nZXRB
cnJheVNpemUoKSA8PCAiXSwgIgotICAgICAgICA8PCB0eXBlTmFtZSA8PCAiIGJbIiA8PCB0eXBl
LmdldEFycmF5U2l6ZSgpIDw8ICJdKVxuIgotICAgICAgICA8PCAie1xuIgotICAgICAgICAgICAi
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgIiA8PCB0eXBlLmdldEFycmF5U2l6ZSgpIDw8ICI7ICsr
aSlcbiIKLSAgICAgICAgICAgIiAgICB7XG4iCi0gICAgICAgICAgICIgICAgICAgIGFbaV0gPSBi
W2ldO1xuIgotICAgICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgICAgIn1cbiI7CisgICAgZm5P
dXQgPDwgInZvaWQgIiA8PCBmdW5jdGlvbi5mdW5jdGlvbk5hbWUgPDwgIihvdXQgIiA8PCB0eXBl
TmFtZSA8PCAiIGFbIiA8PCB0eXBlLmdldEFycmF5U2l6ZSgpCisgICAgICAgICAgPDwgIl0sICIg
PDwgdHlwZU5hbWUgPDwgIiBiWyIgPDwgdHlwZS5nZXRBcnJheVNpemUoKSA8PCAiXSlcbiIKKyAg
ICAgICAgICA8PCAie1xuIgorICAgICAgICAgICAgICIgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAi
CisgICAgICAgICAgPDwgdHlwZS5nZXRBcnJheVNpemUoKSA8PCAiOyArK2kpXG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHtcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIgICAgICAgIGFbaV0gPSBiW2ldO1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB9XG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAifVxuIjsKIAogICAgIGZ1bmN0aW9uLmZ1bmN0aW9uRGVmaW5pdGlvbiA9
IGZuT3V0LmNfc3RyKCk7CiAKQEAgLTI4MzksNyArMjk2Niw3IEBAIFRTdHJpbmcgT3V0cHV0SExT
TDo6YWRkQXJyYXlBc3NpZ25tZW50RnVuY3Rpb24oY29uc3QgVFR5cGUmIHR5cGUpCiAgICAgcmV0
dXJuIGZ1bmN0aW9uLmZ1bmN0aW9uTmFtZTsKIH0KIAotVFN0cmluZyBPdXRwdXRITFNMOjphZGRB
cnJheUNvbnN0cnVjdEludG9GdW5jdGlvbihjb25zdCBUVHlwZSYgdHlwZSkKK1RTdHJpbmcgT3V0
cHV0SExTTDo6YWRkQXJyYXlDb25zdHJ1Y3RJbnRvRnVuY3Rpb24oY29uc3QgVFR5cGUgJnR5cGUp
CiB7CiAgICAgZm9yIChjb25zdCBhdXRvICZjb25zdHJ1Y3RJbnRvRnVuY3Rpb24gOiBtQXJyYXlD
b25zdHJ1Y3RJbnRvRnVuY3Rpb25zKQogICAgIHsKQEAgLTI4NjAsOCArMjk4Nyw4IEBAIFRTdHJp
bmcgT3V0cHV0SExTTDo6YWRkQXJyYXlDb25zdHJ1Y3RJbnRvRnVuY3Rpb24oY29uc3QgVFR5cGUm
IHR5cGUpCiAKICAgICBUSW5mb1NpbmtCYXNlIGZuT3V0OwogCi0gICAgZm5PdXQgPDwgInZvaWQg
IiA8PCBmdW5jdGlvbi5mdW5jdGlvbk5hbWUgPDwgIihvdXQgIgotICAgICAgICAgIDw8IHR5cGVO
YW1lIDw8ICIgYVsiIDw8IHR5cGUuZ2V0QXJyYXlTaXplKCkgPDwgIl0iOworICAgIGZuT3V0IDw8
ICJ2b2lkICIgPDwgZnVuY3Rpb24uZnVuY3Rpb25OYW1lIDw8ICIob3V0ICIgPDwgdHlwZU5hbWUg
PDwgIiBhWyIgPDwgdHlwZS5nZXRBcnJheVNpemUoKQorICAgICAgICAgIDw8ICJdIjsKICAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMHU7IGkgPCB0eXBlLmdldEFycmF5U2l6ZSgpOyArK2kpCiAg
ICAgewogICAgICAgICBmbk91dCA8PCAiLCAiIDw8IHR5cGVOYW1lIDw8ICIgYiIgPDwgaTsKQEAg
LTI4OTIsNiArMzAxOSw0IEBAIHZvaWQgT3V0cHV0SExTTDo6ZW5zdXJlU3RydWN0RGVmaW5lZChj
b25zdCBUVHlwZSAmdHlwZSkKICAgICB9CiB9CiAKLQotCi19Cit9ICAvLyBuYW1lc3BhY2Ugc2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL091dHB1dEhMU0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL091dHB1dEhMU0wuaAppbmRleCBmMjk2ZGQ5MjhjZWZlYzRmMGFkZmI4YThlN2Y3
NmQ5ZTNhY2MzNzE5Li5iMWNjYmM1OWQxY2Y1ZDc5YThiZDhiMTdiNGU4MmYwNmE0ZjcyZjM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9PdXRwdXRITFNMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvT3V0cHV0SExTTC5oCkBAIC0yNSw3ICsyNSw3IEBAIGNsYXNzIFRleHR1cmVG
dW5jdGlvbkhMU0w7CiBjbGFzcyBVbmZvbGRTaG9ydENpcmN1aXQ7CiBjbGFzcyBVbmlmb3JtSExT
TDsKIAotdHlwZWRlZiBzdGQ6Om1hcDxUU3RyaW5nLCBUSW50ZXJtU3ltYm9sKj4gUmVmZXJlbmNl
ZFN5bWJvbHM7Cit0eXBlZGVmIHN0ZDo6bWFwPFRTdHJpbmcsIFRJbnRlcm1TeW1ib2wgKj4gUmVm
ZXJlbmNlZFN5bWJvbHM7CiAKIGNsYXNzIE91dHB1dEhMU0wgOiBwdWJsaWMgVEludGVybVRyYXZl
cnNlcgogewpAQCAtNDgsMzQgKzQ4LDQ3IEBAIGNsYXNzIE91dHB1dEhMU0wgOiBwdWJsaWMgVElu
dGVybVRyYXZlcnNlcgogCiAgICAgc3RhdGljIFRTdHJpbmcgaW5pdGlhbGl6ZXIoY29uc3QgVFR5
cGUgJnR5cGUpOwogCi0gICAgVEluZm9TaW5rQmFzZSAmZ2V0SW5mb1NpbmsoKSB7IEFTU0VSVCgh
bUluZm9TaW5rU3RhY2suZW1wdHkoKSk7IHJldHVybiAqbUluZm9TaW5rU3RhY2sudG9wKCk7IH0K
KyAgICBUSW5mb1NpbmtCYXNlICZnZXRJbmZvU2luaygpCisgICAgeworICAgICAgICBBU1NFUlQo
IW1JbmZvU2lua1N0YWNrLmVtcHR5KCkpOworICAgICAgICByZXR1cm4gKm1JbmZvU2lua1N0YWNr
LnRvcCgpOworICAgIH0KIAogICAgIHN0YXRpYyBib29sIGNhbldyaXRlQXNITFNMTGl0ZXJhbChU
SW50ZXJtVHlwZWQgKmV4cHJlc3Npb24pOwogCiAgIHByb3RlY3RlZDoKICAgICB2b2lkIGhlYWRl
cihUSW5mb1NpbmtCYXNlICZvdXQsIGNvbnN0IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICpidWls
dEluRnVuY3Rpb25FbXVsYXRvcik7CiAKKyAgICB2b2lkIHdyaXRlRmxvYXQoVEluZm9TaW5rQmFz
ZSAmb3V0LCBmbG9hdCBmKTsKKyAgICB2b2lkIHdyaXRlU2luZ2xlQ29uc3RhbnQoVEluZm9TaW5r
QmFzZSAmb3V0LCBjb25zdCBUQ29uc3RhbnRVbmlvbiAqY29uc3QgY29uc3RVbmlvbik7CisgICAg
Y29uc3QgVENvbnN0YW50VW5pb24gKndyaXRlQ29uc3RhbnRVbmlvbkFycmF5KFRJbmZvU2lua0Jh
c2UgJm91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVENvbnN0YW50VW5pb24gKmNvbnN0IGNvbnN0VW5pb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBzaXplKTsK
KwogICAgIC8vIFZpc2l0IEFTVCBub2RlcyBhbmQgb3V0cHV0IHRoZWlyIGNvZGUgdG8gdGhlIGJv
ZHkgc3RyZWFtCi0gICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB2aXNpdFJhdyhUSW50ZXJtUmF3Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB2aXNp
dENvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24qKSBvdmVycmlkZTsKKyAgICB2b2lk
IHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKik7CisgICAgdm9pZCB2aXNpdFJhdyhUSW50ZXJt
UmF3ICopOworICAgIHZvaWQgdmlzaXRDb25zdGFudFVuaW9uKFRJbnRlcm1Db25zdGFudFVuaW9u
ICopOwogICAgIGJvb2wgdmlzaXRTd2l6emxlKFZpc2l0IHZpc2l0LCBUSW50ZXJtU3dpenpsZSAq
bm9kZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVy
bUJpbmFyeSopIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVElu
dGVybVVuYXJ5Kikgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNpdFRlcm5hcnkoVmlzaXQgdmlzaXQs
IFRJbnRlcm1UZXJuYXJ5ICopIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRJZkVsc2UoVmlzaXQg
dmlzaXQsIFRJbnRlcm1JZkVsc2UgKikgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNpdFN3aXRjaChW
aXNpdCB2aXNpdCwgVEludGVybVN3aXRjaCAqKSBvdmVycmlkZTsKLSAgICBib29sIHZpc2l0Q2Fz
ZShWaXNpdCB2aXNpdCwgVEludGVybUNhc2UgKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEJp
bmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqKTsKKyAgICBib29sIHZpc2l0VW5hcnko
VmlzaXQgdmlzaXQsIFRJbnRlcm1VbmFyeSAqKTsKKyAgICBib29sIHZpc2l0VGVybmFyeShWaXNp
dCB2aXNpdCwgVEludGVybVRlcm5hcnkgKik7CisgICAgYm9vbCB2aXNpdElmRWxzZShWaXNpdCB2
aXNpdCwgVEludGVybUlmRWxzZSAqKTsKKyAgICBib29sIHZpc2l0U3dpdGNoKFZpc2l0IHZpc2l0
LCBUSW50ZXJtU3dpdGNoICopOworICAgIGJvb2wgdmlzaXRDYXNlKFZpc2l0IHZpc2l0LCBUSW50
ZXJtQ2FzZSAqKTsKKyAgICBib29sIHZpc2l0RnVuY3Rpb25Qcm90b3R5cGUoVmlzaXQgdmlzaXQs
IFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAqbm9kZSkgb3ZlcnJpZGU7CiAgICAgYm9vbCB2aXNp
dEZ1bmN0aW9uRGVmaW5pdGlvbihWaXNpdCB2aXNpdCwgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlv
biAqbm9kZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwg
VEludGVybUFnZ3JlZ2F0ZSopIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRCbG9jayhWaXNpdCB2
aXNpdCwgVEludGVybUJsb2NrICpub2RlKSBvdmVycmlkZTsKLSAgICBib29sIHZpc2l0TG9vcChW
aXNpdCB2aXNpdCwgVEludGVybUxvb3AqKSBvdmVycmlkZTsKLSAgICBib29sIHZpc2l0QnJhbmNo
KFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEFn
Z3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqKTsKKyAgICBib29sIHZpc2l0
QmxvY2soVmlzaXQgdmlzaXQsIFRJbnRlcm1CbG9jayAqbm9kZSk7CisgICAgYm9vbCB2aXNpdElu
dmFyaWFudERlY2xhcmF0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtSW52YXJpYW50RGVjbGFyYXRp
b24gKm5vZGUpOworICAgIGJvb2wgdmlzaXREZWNsYXJhdGlvbihWaXNpdCB2aXNpdCwgVEludGVy
bURlY2xhcmF0aW9uICpub2RlKTsKKyAgICBib29sIHZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVElu
dGVybUxvb3AgKik7CisgICAgYm9vbCB2aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJy
YW5jaCAqKTsKIAotICAgIGJvb2wgaXNTaW5nbGVTdGF0ZW1lbnQoVEludGVybU5vZGUgKm5vZGUp
OwogICAgIGJvb2wgaGFuZGxlRXhjZXNzaXZlTG9vcChUSW5mb1NpbmtCYXNlICZvdXQsIFRJbnRl
cm1Mb29wICpub2RlKTsKIAotICAgIC8vIEVtaXQgb25lIG9mIHRocmVlIHN0cmluZ3MgZGVwZW5k
aW5nIG9uIHRyYXZlcnNlIHBoYXNlLiBDYWxsZWQgd2l0aCBsaXRlcmFsIHN0cmluZ3Mgc28gdXNp
bmcgY29uc3QgY2hhciogaW5zdGVhZCBvZiBUU3RyaW5nLgorICAgIC8vIEVtaXQgb25lIG9mIHRo
cmVlIHN0cmluZ3MgZGVwZW5kaW5nIG9uIHRyYXZlcnNlIHBoYXNlLiBDYWxsZWQgd2l0aCBsaXRl
cmFsIHN0cmluZ3Mgc28gdXNpbmcKKyAgICAvLyBjb25zdCBjaGFyKiBpbnN0ZWFkIG9mIFRTdHJp
bmcuCiAgICAgdm9pZCBvdXRwdXRUcmlwbGV0KFRJbmZvU2lua0Jhc2UgJm91dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgVmlzaXQgdmlzaXQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKnByZVN0cmluZywKQEAgLTk3LDE3ICsxMTAsMTkgQEAgY2xhc3MgT3V0cHV0SExTTCA6
IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAKICAgICB2b2lkIG91dHB1dEVxdWFsKFZpc2l0IHZp
c2l0LCBjb25zdCBUVHlwZSAmdHlwZSwgVE9wZXJhdG9yIG9wLCBUSW5mb1NpbmtCYXNlICZvdXQp
OwogCi0gICAgdm9pZCB3cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KFRJbmZvU2lua0Jhc2Ug
Jm91dCwgVmlzaXQgdmlzaXQsIGNvbnN0IGNoYXIgKnByZVN0cik7CisgICAgdm9pZCB3cml0ZUVt
dWxhdGVkRnVuY3Rpb25UcmlwbGV0KFRJbmZvU2lua0Jhc2UgJm91dCwgVmlzaXQgdmlzaXQsIFRP
cGVyYXRvciBvcCk7CiAgICAgdm9pZCBtYWtlRmxhZ2dlZFN0cnVjdE1hcHMoY29uc3Qgc3RkOjp2
ZWN0b3I8VEludGVybVR5cGVkICo+ICZmbGFnZ2VkU3RydWN0cyk7CiAKLSAgICAvLyBSZXR1cm5z
IHRydWUgaWYgaXQgZm91bmQgYSAnc2FtZSBzeW1ib2wnIGluaXRpYWxpemVyIChpbml0aWFsaXpl
ciB0aGF0IHJlZmVyZW5jZXMgdGhlIHZhcmlhYmxlIGl0J3MgaW5pdHRpbmcpCi0gICAgYm9vbCB3
cml0ZVNhbWVTeW1ib2xJbml0aWFsaXplcihUSW5mb1NpbmtCYXNlICZvdXQsIFRJbnRlcm1TeW1i
b2wgKnN5bWJvbE5vZGUsIFRJbnRlcm1UeXBlZCAqZXhwcmVzc2lvbik7CisgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIGl0IGZvdW5kIGEgJ3NhbWUgc3ltYm9sJyBpbml0aWFsaXplciAoaW5pdGlhbGl6
ZXIgdGhhdCByZWZlcmVuY2VzIHRoZQorICAgIC8vIHZhcmlhYmxlIGl0J3MgaW5pdHRpbmcpCisg
ICAgYm9vbCB3cml0ZVNhbWVTeW1ib2xJbml0aWFsaXplcihUSW5mb1NpbmtCYXNlICZvdXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2xO
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpl
eHByZXNzaW9uKTsKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdmFyaWFibGUgaW5pdGlhbGl6ZXIg
Y291bGQgYmUgd3JpdHRlbiB1c2luZyBsaXRlcmFsIHt9IG5vdGF0aW9uLgogICAgIGJvb2wgd3Jp
dGVDb25zdGFudEluaXRpYWxpemF0aW9uKFRJbmZvU2lua0Jhc2UgJm91dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2xOb2RlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqZXhwcmVzc2lv
bik7CiAKLSAgICB2b2lkIHdyaXRlRGVmZXJyZWRHbG9iYWxJbml0aWFsaXplcnMoVEluZm9TaW5r
QmFzZSAmb3V0KTsKICAgICB2b2lkIHdyaXRlSWZFbHNlKFRJbmZvU2lua0Jhc2UgJm91dCwgVElu
dGVybUlmRWxzZSAqbm9kZSk7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBmdW5jdGlvbiBuYW1lCkBA
IC0xMzMsOCArMTQ4LDggQEAgY2xhc3MgT3V0cHV0SExTTCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVy
c2VyCiAgICAgVEluZm9TaW5rQmFzZSBtQm9keTsKICAgICBUSW5mb1NpbmtCYXNlIG1Gb290ZXI7
CiAKLSAgICAvLyBBIHN0YWNrIGlzIHVzZWZ1bCB3aGVuIHdlIHdhbnQgdG8gdHJhdmVyc2UgaW4g
dGhlIGhlYWRlciwgb3IgaW4gaGVscGVyIGZ1bmN0aW9ucywgYnV0IG5vdCBhbHdheXMKLSAgICAv
LyB3cml0ZSB0byB0aGUgYm9keS4gSW5zdGVhZCB1c2UgYW4gSW5mb1Npbmsgc3RhY2sgdG8ga2Vl
cCBvdXIgY3VycmVudCBzdGF0ZSBpbnRhY3QuCisgICAgLy8gQSBzdGFjayBpcyB1c2VmdWwgd2hl
biB3ZSB3YW50IHRvIHRyYXZlcnNlIGluIHRoZSBoZWFkZXIsIG9yIGluIGhlbHBlciBmdW5jdGlv
bnMsIGJ1dCBub3QKKyAgICAvLyBhbHdheXMgd3JpdGUgdG8gdGhlIGJvZHkuIEluc3RlYWQgdXNl
IGFuIEluZm9TaW5rIHN0YWNrIHRvIGtlZXAgb3VyIGN1cnJlbnQgc3RhdGUgaW50YWN0LgogICAg
IC8vIFRPRE8gKGptYWRpbGwpOiBKdXN0IHBhc3NpbmcgYW4gSW5mb1NpbmsgaW4gZnVuY3Rpb24g
cGFyYW1ldGVycyB3b3VsZCBiZSBzaW1wbGVyLgogICAgIHN0ZDo6c3RhY2s8VEluZm9TaW5rQmFz
ZSAqPiBtSW5mb1NpbmtTdGFjazsKIApAQCAtMTU5LDE1ICsxNzQsMTkgQEAgY2xhc3MgT3V0cHV0
SExTTCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgYm9vbCBtVXNlc0luc3RhbmNlSUQ7
CiAgICAgYm9vbCBtVXNlc1ZlcnRleElEOwogICAgIGJvb2wgbVVzZXNGcmFnRGVwdGg7CisgICAg
Ym9vbCBtVXNlc051bVdvcmtHcm91cHM7CisgICAgYm9vbCBtVXNlc1dvcmtHcm91cElEOworICAg
IGJvb2wgbVVzZXNMb2NhbEludm9jYXRpb25JRDsKKyAgICBib29sIG1Vc2VzR2xvYmFsSW52b2Nh
dGlvbklEOworICAgIGJvb2wgbVVzZXNMb2NhbEludm9jYXRpb25JbmRleDsKICAgICBib29sIG1V
c2VzWG9yOwogICAgIGJvb2wgbVVzZXNEaXNjYXJkUmV3cml0aW5nOwogICAgIGJvb2wgbVVzZXNO
ZXN0ZWRCcmVhazsKICAgICBib29sIG1SZXF1aXJlc0lFRUVTdHJpY3RDb21waWxpbmc7CiAKLQog
ICAgIGludCBtTnVtUmVuZGVyVGFyZ2V0czsKIAotICAgIGludCBtVW5pcXVlSW5kZXg7ICAgLy8g
Rm9yIGNyZWF0aW5nIHVuaXF1ZSBuYW1lcworICAgIGludCBtVW5pcXVlSW5kZXg7ICAvLyBGb3Ig
Y3JlYXRpbmcgdW5pcXVlIG5hbWVzCiAKICAgICBDYWxsREFHIG1DYWxsRGFnOwogICAgIE1ldGFk
YXRhTGlzdCBtQVNUTWV0YWRhdGFMaXN0OwpAQCAtMTc4LDEwICsxOTcsMTIgQEAgY2xhc3MgT3V0
cHV0SExTTCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAKICAgICBUSW50ZXJtU3ltYm9sICpt
RXhjZXNzaXZlTG9vcEluZGV4OwogCi0gICAgVFN0cmluZyBzdHJ1Y3RJbml0aWFsaXplclN0cmlu
ZyhpbnQgaW5kZW50LCBjb25zdCBUU3RydWN0dXJlICZzdHJ1Y3R1cmUsIGNvbnN0IFRTdHJpbmcg
JnJoc1N0cnVjdE5hbWUpOworICAgIFRTdHJpbmcgc3RydWN0SW5pdGlhbGl6ZXJTdHJpbmcoaW50
IGluZGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJ1
Y3R1cmUgJnN0cnVjdHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTdHJpbmcgJnJoc1N0cnVjdE5hbWUpOwogCi0gICAgc3RkOjptYXA8VEludGVybVR5cGVk
KiwgVFN0cmluZz4gbUZsYWdnZWRTdHJ1Y3RNYXBwZWROYW1lczsKLSAgICBzdGQ6Om1hcDxUSW50
ZXJtVHlwZWQqLCBUU3RyaW5nPiBtRmxhZ2dlZFN0cnVjdE9yaWdpbmFsTmFtZXM7CisgICAgc3Rk
OjptYXA8VEludGVybVR5cGVkICosIFRTdHJpbmc+IG1GbGFnZ2VkU3RydWN0TWFwcGVkTmFtZXM7
CisgICAgc3RkOjptYXA8VEludGVybVR5cGVkICosIFRTdHJpbmc+IG1GbGFnZ2VkU3RydWN0T3Jp
Z2luYWxOYW1lczsKIAogICAgIHN0cnVjdCBIZWxwZXJGdW5jdGlvbgogICAgIHsKQEAgLTE5NSwz
MiArMjE2LDMxIEBAIGNsYXNzIE91dHB1dEhMU0wgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgog
ICAgIC8vIHdoaWNoIHdlIGFkZCB0aGUgZnVuY3Rpb25zLCBzaW5jZSBuZXN0ZWQgc3RydWN0dXJl
cyBjYWxsIGVhY2ggb3RoZXIgcmVjdXJzaXZlbHksIGFuZAogICAgIC8vIHN0cnVjdHVyZSBlcXVh
bGl0eSBmdW5jdGlvbnMgbWF5IG5lZWQgdG8gY2FsbCBhcnJheSBlcXVhbGl0eSBmdW5jdGlvbnMg
YW5kIHZpY2UgdmVyc2EuCiAgICAgLy8gVGhlIG93bmVyc2hpcCBvZiB0aGUgcG9pbnRlcnMgaXMg
bWFpbnRhaW5lZCBieSB0aGUgdHlwZS1zcGVjaWZpYyBhcnJheXMuCi0gICAgc3RkOjp2ZWN0b3I8
SGVscGVyRnVuY3Rpb24qPiBtRXF1YWxpdHlGdW5jdGlvbnM7CisgICAgc3RkOjp2ZWN0b3I8SGVs
cGVyRnVuY3Rpb24gKj4gbUVxdWFsaXR5RnVuY3Rpb25zOwogCiAgICAgc3RydWN0IFN0cnVjdEVx
dWFsaXR5RnVuY3Rpb24gOiBwdWJsaWMgSGVscGVyRnVuY3Rpb24KICAgICB7CiAgICAgICAgIGNv
bnN0IFRTdHJ1Y3R1cmUgKnN0cnVjdHVyZTsKICAgICB9OwotICAgIHN0ZDo6dmVjdG9yPFN0cnVj
dEVxdWFsaXR5RnVuY3Rpb24qPiBtU3RydWN0RXF1YWxpdHlGdW5jdGlvbnM7CisgICAgc3RkOjp2
ZWN0b3I8U3RydWN0RXF1YWxpdHlGdW5jdGlvbiAqPiBtU3RydWN0RXF1YWxpdHlGdW5jdGlvbnM7
CiAKICAgICBzdHJ1Y3QgQXJyYXlIZWxwZXJGdW5jdGlvbiA6IHB1YmxpYyBIZWxwZXJGdW5jdGlv
bgogICAgIHsKICAgICAgICAgVFR5cGUgdHlwZTsKICAgICB9OwotICAgIHN0ZDo6dmVjdG9yPEFy
cmF5SGVscGVyRnVuY3Rpb24qPiBtQXJyYXlFcXVhbGl0eUZ1bmN0aW9uczsKKyAgICBzdGQ6OnZl
Y3RvcjxBcnJheUhlbHBlckZ1bmN0aW9uICo+IG1BcnJheUVxdWFsaXR5RnVuY3Rpb25zOwogCiAg
ICAgc3RkOjp2ZWN0b3I8QXJyYXlIZWxwZXJGdW5jdGlvbj4gbUFycmF5QXNzaWdubWVudEZ1bmN0
aW9uczsKIAotICAgIC8vIFRoZSBjb25zdHJ1Y3QtaW50byBmdW5jdGlvbnMgYXJlIGZ1bmN0aW9u
cyB0aGF0IGZpbGwgYW4gTi1lbGVtZW50IGFycmF5IHBhc3NlZCBhcyBhbiBvdXQgcGFyYW1ldGVy
Ci0gICAgLy8gd2l0aCB0aGUgb3RoZXIgTiBwYXJhbWV0ZXJzIG9mIHRoZSBmdW5jdGlvbi4gVGhp
cyBpcyB1c2VkIHRvIHdvcmsgYXJvdW5kIHRoYXQgYXJyYXlzIGNhbid0IGJlCi0gICAgLy8gcmV0
dXJuIHZhbHVlcyBpbiBITFNMLgorICAgIC8vIFRoZSBjb25zdHJ1Y3QtaW50byBmdW5jdGlvbnMg
YXJlIGZ1bmN0aW9ucyB0aGF0IGZpbGwgYW4gTi1lbGVtZW50IGFycmF5IHBhc3NlZCBhcyBhbiBv
dXQKKyAgICAvLyBwYXJhbWV0ZXIgd2l0aCB0aGUgb3RoZXIgTiBwYXJhbWV0ZXJzIG9mIHRoZSBm
dW5jdGlvbi4gVGhpcyBpcyB1c2VkIHRvIHdvcmsgYXJvdW5kIHRoYXQKKyAgICAvLyBhcnJheXMg
Y2FuJ3QgYmUgcmV0dXJuIHZhbHVlcyBpbiBITFNMLgogICAgIHN0ZDo6dmVjdG9yPEFycmF5SGVs
cGVyRnVuY3Rpb24+IG1BcnJheUNvbnN0cnVjdEludG9GdW5jdGlvbnM7CiAKICAgcHJpdmF0ZToK
ICAgICBUU3RyaW5nIHNhbXBsZXJOYW1lUHJlZml4RnJvbVN0cnVjdChUSW50ZXJtVHlwZWQgKm5v
ZGUpOwotICAgIGJvb2wgYW5jZXN0b3JFdmFsdWF0ZXNUb1NhbXBsZXJJblN0cnVjdChWaXNpdCB2
aXNpdCk7CisgICAgYm9vbCBhbmNlc3RvckV2YWx1YXRlc1RvU2FtcGxlckluU3RydWN0KCk7CiB9
OwotCiB9CiAKLSNlbmRpZiAgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfT1VUUFVUSExTTF9IXwor
I2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX09VVFBVVEhMU0xfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dFZ1
bGthbkdMU0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvT3V0cHV0VnVsa2FuR0xTTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzJjNzgxM2RlNzcyYTk1Njkz
OTNiNWY2NjJkZTgyYzBlOGJkN2FmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dFZ1bGthbkdMU0wuY3BwCkBA
IC0wLDAgKzEsOTEgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gT3V0cHV0VnVsa2FuR0xTTDoKKy8vICAg
Q29kZSB0aGF0IG91dHB1dHMgc2hhZGVycyB0aGF0IGZpdCBHTF9LSFJfdnVsa2FuX2dsc2wuCisv
LyAgIFRoZSBzaGFkZXJzIGFyZSB0aGVuIGZlZCBpbnRvIGdsc2xhbmcgdG8gc3BpdCBvdXQgU1BJ
Ui1WIChsaWJBTkdMRS1zaWRlKS4KKy8vICAgU2VlOiBodHRwczovL3d3dy5raHJvbm9zLm9yZy9y
ZWdpc3RyeS92dWxrYW4vc3BlY3MvbWlzYy9HTF9LSFJfdnVsa2FuX2dsc2wudHh0CisvLworCisj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRWdWxrYW5HTFNMLmgiCisKK25hbWVz
cGFjZSBzaAoreworCitUT3V0cHV0VnVsa2FuR0xTTDo6VE91dHB1dFZ1bGthbkdMU0woVEluZm9T
aW5rQmFzZSAmb2JqU2luaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
aEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IGNsYW1waW5nU3RyYXRlZ3ksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hIYXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZU1hcCAmbmFtZU1hcCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUU3ltYm9sVGFibGUgJnN5bWJv
bFRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoOjpHTGVudW0g
c2hhZGVyVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2hh
ZGVyVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaFNoYWRl
ck91dHB1dCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hD
b21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykKKyAgICA6IFRPdXRwdXRHTFNMQmFzZShvYmpT
aW5rLAorICAgICAgICAgICAgICAgICAgICAgIGNsYW1waW5nU3RyYXRlZ3ksCisgICAgICAgICAg
ICAgICAgICAgICAgaGFzaEZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgIG5hbWVNYXAs
CisgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUsCisgICAgICAgICAgICAgICAgICAg
ICAgc2hhZGVyVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJWZXJzaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBjb21waWxl
T3B0aW9ucykKK3sKK30KKworLy8gVE9ETyhqbWFkaWxsKTogVGhpcyBpcyBub3QgY29tcGxldGUu
Cit2b2lkIFRPdXRwdXRWdWxrYW5HTFNMOjp3cml0ZUxheW91dFF1YWxpZmllcihjb25zdCBUVHlw
ZSAmdHlwZSkKK3sKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgICAgICAgICAgICAgICAgICAgICAg
PSBvYmpTaW5rKCk7CisgICAgY29uc3QgVExheW91dFF1YWxpZmllciAmbGF5b3V0UXVhbGlmaWVy
ID0gdHlwZS5nZXRMYXlvdXRRdWFsaWZpZXIoKTsKKyAgICBvdXQgPDwgImxheW91dCgiOworCisg
ICAgaWYgKHR5cGUuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQXR0cmlidXRlIHx8IHR5cGUuZ2V0UXVh
bGlmaWVyKCkgPT0gRXZxRnJhZ21lbnRPdXQgfHwKKyAgICAgICAgdHlwZS5nZXRRdWFsaWZpZXIo
KSA9PSBFdnFWZXJ0ZXhJbikKKyAgICB7CisgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IE11bHRp
cGxlIG91dHB1dCBsb2NhdGlvbnMuCisgICAgICAgIG91dCA8PCAibG9jYXRpb24gPSAiCisgICAg
ICAgICAgICA8PCAiMCI7CisgICAgfQorCisgICAgaWYgKElzSW1hZ2UodHlwZS5nZXRCYXNpY1R5
cGUoKSkgJiYgbGF5b3V0UXVhbGlmaWVyLmltYWdlSW50ZXJuYWxGb3JtYXQgIT0gRWlpZlVuc3Bl
Y2lmaWVkKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHR5cGUuZ2V0UXVhbGlmaWVyKCkgPT0gRXZx
VGVtcG9yYXJ5IHx8IHR5cGUuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxVW5pZm9ybSk7CisgICAgICAg
IG91dCA8PCBnZXRJbWFnZUludGVybmFsRm9ybWF0U3RyaW5nKGxheW91dFF1YWxpZmllci5pbWFn
ZUludGVybmFsRm9ybWF0KTsKKyAgICB9CisKKyAgICBvdXQgPDwgIikgIjsKK30KKworYm9vbCBU
T3V0cHV0VnVsa2FuR0xTTDo6d3JpdGVWYXJpYWJsZVByZWNpc2lvbihUUHJlY2lzaW9uIHByZWNp
c2lvbikKK3sKKyAgICBpZiAocHJlY2lzaW9uID09IEVicFVuZGVmaW5lZCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gb2JqU2luaygpOworICAgIG91
dCA8PCBnZXRQcmVjaXNpb25TdHJpbmcocHJlY2lzaW9uKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBUT3V0cHV0VnVsa2FuR0xTTDo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9k
ZSkKK3sKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBvYmpTaW5rKCk7CisKKyAgICBjb25zdCBU
U3RyaW5nICZzeW1ib2wgPSBub2RlLT5nZXRTeW1ib2woKTsKKyAgICBpZiAoc3ltYm9sID09ICJn
bF9GcmFnQ29sb3IiKQorICAgIHsKKyAgICAgICAgb3V0IDw8ICJ3ZWJnbF9GcmFnQ29sb3IiOwor
ICAgIH0KKyAgICBlbHNlIGlmIChzeW1ib2wgPT0gImdsX0ZyYWdEYXRhIikKKyAgICB7CisgICAg
ICAgIG91dCA8PCAid2ViZ2xfRnJhZ0RhdGEiOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0U3ltYm9sKG5vZGUpOworICAgIH0KK30KKworfSAg
Ly8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRWdWxrYW5HTFNMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRWdWxrYW5HTFNMLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzVmMmYzNWRhZTQxMGJhNDJhZmE0NDlmYThmNGQ2MWFmMjY2OGI4ZAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L091dHB1dFZ1bGthbkdMU0wuaApAQCAtMCwwICsxLDM2IEBACisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIE91
dHB1dFZ1bGthbkdMU0w6CisvLyAgIENvZGUgdGhhdCBvdXRwdXRzIHNoYWRlcnMgdGhhdCBmaXQg
R0xfS0hSX3Z1bGthbl9nbHNsLgorLy8gICBUaGUgc2hhZGVycyBhcmUgdGhlbiBmZWQgaW50byBn
bHNsYW5nIHRvIHNwaXQgb3V0IFNQSVItViAobGliQU5HTEUtc2lkZSkuCisvLyAgIFNlZTogaHR0
cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvdnVsa2FuL3NwZWNzL21pc2MvR0xfS0hSX3Z1
bGthbl9nbHNsLnR4dAorLy8KKworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0
R0xTTC5oIgorCituYW1lc3BhY2Ugc2gKK3sKKworY2xhc3MgVE91dHB1dFZ1bGthbkdMU0wgOiBw
dWJsaWMgVE91dHB1dEdMU0xCYXNlCit7CisgIHB1YmxpYzoKKyAgICBUT3V0cHV0VnVsa2FuR0xT
TChUSW5mb1NpbmtCYXNlICZvYmpTaW5rLAorICAgICAgICAgICAgICAgICAgICAgIFNoQXJyYXlJ
bmRleENsYW1waW5nU3RyYXRlZ3kgY2xhbXBpbmdTdHJhdGVneSwKKyAgICAgICAgICAgICAgICAg
ICAgICBTaEhhc2hGdW5jdGlvbjY0IGhhc2hGdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICBOYW1lTWFwICZuYW1lTWFwLAorICAgICAgICAgICAgICAgICAgICAgIFRTeW1ib2xUYWJsZSAm
c3ltYm9sVGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgc2g6OkdMZW51bSBzaGFkZXJUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uLAorICAgICAgICAgICAg
ICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBT
aENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zKTsKKworICBwcm90ZWN0ZWQ6CisgICAgdm9p
ZCB3cml0ZUxheW91dFF1YWxpZmllcihjb25zdCBUVHlwZSAmdHlwZSkgb3ZlcnJpZGU7CisgICAg
Ym9vbCB3cml0ZVZhcmlhYmxlUHJlY2lzaW9uKFRQcmVjaXNpb24gcHJlY2lzaW9uKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKm5vZGUpIG92ZXJyaWRlOwor
fTsKKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUGFyc2VDb250ZXh0LmNwcApp
bmRleCA3MGMwYzI3Y2YzNjA0NTdkZWY2N2U1YTk2NzUzODk2ZTEzNmQyNjM1Li5mNDY5NzQ2NGNh
ZTE5MDk2ZGI4NjE2YTI2NDFlNWVlODcwZjM3ZTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQuY3BwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29u
dGV4dC5jcHAKQEAgLTE2LDEyICsxNiwxMjYgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL1ZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL3V0aWwuaCIKIAorbmFtZXNwYWNlIHNoCit7CisKIC8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLwog
Ly8gU3ViLSB2ZWN0b3IgYW5kIG1hdHJpeCBmaWVsZHMKIC8vCiAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAor
bmFtZXNwYWNlCit7CisKK2NvbnN0IGludCBrV2ViR0xNYXhTdHJ1Y3ROZXN0aW5nID0gNDsKKwor
Ym9vbCBDb250YWluc1NhbXBsZXIoY29uc3QgVFR5cGUgJnR5cGUpCit7CisgICAgaWYgKElzU2Ft
cGxlcih0eXBlLmdldEJhc2ljVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBp
ZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QgfHwgdHlwZS5pc0ludGVyZmFjZUJs
b2NrKCkpCisgICAgeworICAgICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSB0eXBlLmdl
dFN0cnVjdCgpLT5maWVsZHMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBmaWVsZHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChDb250YWlu
c1NhbXBsZXIoKmZpZWxkc1tpXS0+dHlwZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBDb250
YWluc0ltYWdlKGNvbnN0IFRUeXBlICZ0eXBlKQoreworICAgIGlmIChJc0ltYWdlKHR5cGUuZ2V0
QmFzaWNUeXBlKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICh0eXBlLmdldEJh
c2ljVHlwZSgpID09IEVidFN0cnVjdCB8fCB0eXBlLmlzSW50ZXJmYWNlQmxvY2soKSkKKyAgICB7
CisgICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IHR5cGUuZ2V0U3RydWN0KCktPmZp
ZWxkcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGZpZWxkcy5zaXpl
KCk7ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKENvbnRhaW5zSW1hZ2UoKmZpZWxk
c1tpXS0+dHlwZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gR2V0IGEgdG9rZW4gZnJvbSBhbiBp
bWFnZSBhcmd1bWVudCB0byB1c2UgYXMgYW4gZXJyb3IgbWVzc2FnZSB0b2tlbi4KK2NvbnN0IGNo
YXIgKkdldEltYWdlQXJndW1lbnRUb2tlbihUSW50ZXJtVHlwZWQgKmltYWdlTm9kZSkKK3sKKyAg
ICBBU1NFUlQoSXNJbWFnZShpbWFnZU5vZGUtPmdldEJhc2ljVHlwZSgpKSk7CisgICAgd2hpbGUg
KGltYWdlTm9kZS0+Z2V0QXNCaW5hcnlOb2RlKCkgJiYKKyAgICAgICAgICAgKGltYWdlTm9kZS0+
Z2V0QXNCaW5hcnlOb2RlKCktPmdldE9wKCkgPT0gRU9wSW5kZXhJbmRpcmVjdCB8fAorICAgICAg
ICAgICAgaW1hZ2VOb2RlLT5nZXRBc0JpbmFyeU5vZGUoKS0+Z2V0T3AoKSA9PSBFT3BJbmRleERp
cmVjdCkpCisgICAgeworICAgICAgICBpbWFnZU5vZGUgPSBpbWFnZU5vZGUtPmdldEFzQmluYXJ5
Tm9kZSgpLT5nZXRMZWZ0KCk7CisgICAgfQorICAgIFRJbnRlcm1TeW1ib2wgKmltYWdlU3ltYm9s
ID0gaW1hZ2VOb2RlLT5nZXRBc1N5bWJvbE5vZGUoKTsKKyAgICBpZiAoaW1hZ2VTeW1ib2wpCisg
ICAgeworICAgICAgICByZXR1cm4gaW1hZ2VTeW1ib2wtPmdldFN5bWJvbCgpLmNfc3RyKCk7Cisg
ICAgfQorICAgIHJldHVybiAiaW1hZ2UiOworfQorCit9ICAvLyBuYW1lc3BhY2UKKworVFBhcnNl
Q29udGV4dDo6VFBhcnNlQ29udGV4dChUU3ltYm9sVGFibGUgJnN5bXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRFeHRlbnNpb25CZWhhdmlvciAmZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaDo6R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFNoU2hhZGVyU3BlYyBzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaENv
bXBpbGVPcHRpb25zIG9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
Y2hlY2tzUHJlY0Vycm9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVERpYWdub3N0
aWNzICpkaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hC
dWlsdEluUmVzb3VyY2VzICZyZXNvdXJjZXMpCisgICAgOiBpbnRlcm1lZGlhdGUoKSwKKyAgICAg
IHN5bWJvbFRhYmxlKHN5bXQpLAorICAgICAgbURlZmVycmVkU2luZ2xlRGVjbGFyYXRpb25FcnJv
ckNoZWNrKGZhbHNlKSwKKyAgICAgIG1TaGFkZXJUeXBlKHR5cGUpLAorICAgICAgbVNoYWRlclNw
ZWMoc3BlYyksCisgICAgICBtQ29tcGlsZU9wdGlvbnMob3B0aW9ucyksCisgICAgICBtU2hhZGVy
VmVyc2lvbigxMDApLAorICAgICAgbVRyZWVSb290KG51bGxwdHIpLAorICAgICAgbUxvb3BOZXN0
aW5nTGV2ZWwoMCksCisgICAgICBtU3RydWN0TmVzdGluZ0xldmVsKDApLAorICAgICAgbVN3aXRj
aE5lc3RpbmdMZXZlbCgwKSwKKyAgICAgIG1DdXJyZW50RnVuY3Rpb25UeXBlKG51bGxwdHIpLAor
ICAgICAgbUZ1bmN0aW9uUmV0dXJuc1ZhbHVlKGZhbHNlKSwKKyAgICAgIG1DaGVja3NQcmVjaXNp
b25FcnJvcnMoY2hlY2tzUHJlY0Vycm9ycyksCisgICAgICBtRnJhZ21lbnRQcmVjaXNpb25IaWdo
T25FU1NMMShmYWxzZSksCisgICAgICBtRGVmYXVsdE1hdHJpeFBhY2tpbmcoRW1wQ29sdW1uTWFq
b3IpLAorICAgICAgbURlZmF1bHRCbG9ja1N0b3JhZ2Uoc2g6OklzV2ViR0xCYXNlZFNwZWMoc3Bl
YykgPyBFYnNTdGQxNDAgOiBFYnNTaGFyZWQpLAorICAgICAgbURpYWdub3N0aWNzKGRpYWdub3N0
aWNzKSwKKyAgICAgIG1EaXJlY3RpdmVIYW5kbGVyKGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICptRGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgICAgICAgICBtU2hhZGVyVmVyc2lv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TaGFkZXJUeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzb3VyY2VzLldFQkdMX2RlYnVnX3NoYWRlcl9wcmVjaXNpb24gPT0gMSksCisg
ICAgICBtUHJlcHJvY2Vzc29yKG1EaWFnbm9zdGljcywgJm1EaXJlY3RpdmVIYW5kbGVyLCBwcDo6
UHJlcHJvY2Vzc29yU2V0dGluZ3MoKSksCisgICAgICBtU2Nhbm5lcihudWxscHRyKSwKKyAgICAg
IG1Vc2VzRnJhZ0RhdGEoZmFsc2UpLAorICAgICAgbVVzZXNGcmFnQ29sb3IoZmFsc2UpLAorICAg
ICAgbVVzZXNTZWNvbmRhcnlPdXRwdXRzKGZhbHNlKSwKKyAgICAgIG1NaW5Qcm9ncmFtVGV4ZWxP
ZmZzZXQocmVzb3VyY2VzLk1pblByb2dyYW1UZXhlbE9mZnNldCksCisgICAgICBtTWF4UHJvZ3Jh
bVRleGVsT2Zmc2V0KHJlc291cmNlcy5NYXhQcm9ncmFtVGV4ZWxPZmZzZXQpLAorICAgICAgbU11
bHRpdmlld0F2YWlsYWJsZShyZXNvdXJjZXMuT1ZSX211bHRpdmlldyA9PSAxKSwKKyAgICAgIG1D
b21wdXRlU2hhZGVyTG9jYWxTaXplRGVjbGFyZWQoZmFsc2UpLAorICAgICAgbU51bVZpZXdzKC0x
KSwKKyAgICAgIG1NYXhOdW1WaWV3cyhyZXNvdXJjZXMuTWF4Vmlld3NPVlIpLAorICAgICAgbU1h
eEltYWdlVW5pdHMocmVzb3VyY2VzLk1heEltYWdlVW5pdHMpLAorICAgICAgbU1heENvbWJpbmVk
VGV4dHVyZUltYWdlVW5pdHMocmVzb3VyY2VzLk1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMp
LAorICAgICAgbU1heFVuaWZvcm1Mb2NhdGlvbnMocmVzb3VyY2VzLk1heFVuaWZvcm1Mb2NhdGlv
bnMpLAorICAgICAgbURlY2xhcmluZ0Z1bmN0aW9uKGZhbHNlKQoreworICAgIG1Db21wdXRlU2hh
ZGVyTG9jYWxTaXplLmZpbGwoLTEpOworfQorCiAvLwogLy8gTG9vayBhdCBhICcuJyBmaWVsZCBz
ZWxlY3RvciBzdHJpbmcgYW5kIGNoYW5nZSBpdCBpbnRvIG9mZnNldHMKIC8vIGZvciBhIHZlY3Rv
ci4KQEAgLTEzMiwzOSArMjQ2LDMxIEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6cGFyc2VWZWN0b3JG
aWVsZHMoY29uc3QgVFN0cmluZyAmY29tcFN0cmluZywKIC8vCiAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAot
CiAvLwogLy8gVXNlZCBieSBmbGV4L2Jpc29uIHRvIG91dHB1dCBhbGwgc3ludGF4IGFuZCBwYXJz
aW5nIGVycm9ycy4KIC8vCi12b2lkIFRQYXJzZUNvbnRleHQ6OmVycm9yKGNvbnN0IFRTb3VyY2VM
b2MgJmxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXh0cmFJbmZvKQordm9pZCBUUGFyc2VDb250ZXh0
OjplcnJvcihjb25zdCBUU291cmNlTG9jICZsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29uc3Qg
Y2hhciAqdG9rZW4pCiB7Ci0gICAgbURpYWdub3N0aWNzLmVycm9yKGxvYywgcmVhc29uLCB0b2tl
biwgZXh0cmFJbmZvKTsKKyAgICBtRGlhZ25vc3RpY3MtPmVycm9yKGxvYywgcmVhc29uLCB0b2tl
bik7CiB9CiAKLXZvaWQgVFBhcnNlQ29udGV4dDo6d2FybmluZyhjb25zdCBUU291cmNlTG9jICZs
b2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRva2VuLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmV4dHJhSW5mbykKK3ZvaWQgVFBhcnNlQ29udGV4
dDo6d2FybmluZyhjb25zdCBUU291cmNlTG9jICZsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29u
c3QgY2hhciAqdG9rZW4pCiB7Ci0gICAgbURpYWdub3N0aWNzLndhcm5pbmcobG9jLCByZWFzb24s
IHRva2VuLCBleHRyYUluZm8pOworICAgIG1EaWFnbm9zdGljcy0+d2FybmluZyhsb2MsIHJlYXNv
biwgdG9rZW4pOwogfQogCiB2b2lkIFRQYXJzZUNvbnRleHQ6Om91dE9mUmFuZ2VFcnJvcihib29s
IGlzRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291
cmNlTG9jICZsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyICpyZWFzb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyICp0b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKmV4dHJhSW5mbykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKnRva2VuKQogewogICAgIGlmIChpc0Vycm9yKQogICAgIHsKLSAgICAgICAgZXJyb3Io
bG9jLCByZWFzb24sIHRva2VuLCBleHRyYUluZm8pOworICAgICAgICBlcnJvcihsb2MsIHJlYXNv
biwgdG9rZW4pOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICB3YXJuaW5nKGxvYywg
cmVhc29uLCB0b2tlbiwgZXh0cmFJbmZvKTsKKyAgICAgICAgd2FybmluZyhsb2MsIHJlYXNvbiwg
dG9rZW4pOwogICAgIH0KIH0KIApAQCAtMTczLDEwICsyNzksMTAgQEAgdm9pZCBUUGFyc2VDb250
ZXh0OjpvdXRPZlJhbmdlRXJyb3IoYm9vbCBpc0Vycm9yLAogLy8KIHZvaWQgVFBhcnNlQ29udGV4
dDo6YXNzaWduRXJyb3IoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgY2hhciAqb3AsIFRT
dHJpbmcgbGVmdCwgVFN0cmluZyByaWdodCkKIHsKLSAgICBzdGQ6OnN0cmluZ3N0cmVhbSBleHRy
YUluZm9TdHJlYW07Ci0gICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJjYW5ub3QgY29udmVydCBmcm9t
ICciIDw8IHJpZ2h0IDw8ICInIHRvICciIDw8IGxlZnQgPDwgIiciOwotICAgIHN0ZDo6c3RyaW5n
IGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICBlcnJvcihsaW5lLCAiIiwg
b3AsIGV4dHJhSW5mby5jX3N0cigpKTsKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSByZWFzb25TdHJl
YW07CisgICAgcmVhc29uU3RyZWFtIDw8ICJjYW5ub3QgY29udmVydCBmcm9tICciIDw8IHJpZ2h0
IDw8ICInIHRvICciIDw8IGxlZnQgPDwgIiciOworICAgIHN0ZDo6c3RyaW5nIHJlYXNvbiA9IHJl
YXNvblN0cmVhbS5zdHIoKTsKKyAgICBlcnJvcihsaW5lLCByZWFzb24uY19zdHIoKSwgb3ApOwog
fQogCiAvLwpAQCAtMTg0LDExICsyOTAsMTIgQEAgdm9pZCBUUGFyc2VDb250ZXh0Ojphc3NpZ25F
cnJvcihjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBjaGFyICpvcCwgVFN0cmluZwogLy8K
IHZvaWQgVFBhcnNlQ29udGV4dDo6dW5hcnlPcEVycm9yKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUs
IGNvbnN0IGNoYXIgKm9wLCBUU3RyaW5nIG9wZXJhbmQpCiB7Ci0gICAgc3RkOjpzdHJpbmdzdHJl
YW0gZXh0cmFJbmZvU3RyZWFtOwotICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAibm8gb3BlcmF0aW9u
ICciIDw8IG9wIDw8ICInIGV4aXN0cyB0aGF0IHRha2VzIGFuIG9wZXJhbmQgb2YgdHlwZSAiCi0g
ICAgICAgICAgICAgICAgICAgIDw8IG9wZXJhbmQgPDwgIiAob3IgdGhlcmUgaXMgbm8gYWNjZXB0
YWJsZSBjb252ZXJzaW9uKSI7Ci0gICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZv
U3RyZWFtLnN0cigpOwotICAgIGVycm9yKGxpbmUsICIgd3Jvbmcgb3BlcmFuZCB0eXBlIiwgb3As
IGV4dHJhSW5mby5jX3N0cigpKTsKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSByZWFzb25TdHJlYW07
CisgICAgcmVhc29uU3RyZWFtIDw8ICJ3cm9uZyBvcGVyYW5kIHR5cGUgLSBubyBvcGVyYXRpb24g
JyIgPDwgb3AKKyAgICAgICAgICAgICAgICAgPDwgIicgZXhpc3RzIHRoYXQgdGFrZXMgYW4gb3Bl
cmFuZCBvZiB0eXBlICIgPDwgb3BlcmFuZAorICAgICAgICAgICAgICAgICA8PCAiIChvciB0aGVy
ZSBpcyBubyBhY2NlcHRhYmxlIGNvbnZlcnNpb24pIjsKKyAgICBzdGQ6OnN0cmluZyByZWFzb24g
PSByZWFzb25TdHJlYW0uc3RyKCk7CisgICAgZXJyb3IobGluZSwgcmVhc29uLmNfc3RyKCksIG9w
KTsKIH0KIAogLy8KQEAgLTE5OSwxMiArMzA2LDEzIEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6Ymlu
YXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jICZsaW5lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRTdHJpbmcgbGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUU3RyaW5nIHJpZ2h0KQogewotICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0
cmVhbTsKLSAgICBleHRyYUluZm9TdHJlYW0gPDwgIm5vIG9wZXJhdGlvbiAnIiA8PCBvcCA8PCAi
JyBleGlzdHMgdGhhdCB0YWtlcyBhIGxlZnQtaGFuZCBvcGVyYW5kIG9mIHR5cGUgJyIKLSAgICAg
ICAgICAgICAgICAgICAgPDwgbGVmdCA8PCAiJyBhbmQgYSByaWdodCBvcGVyYW5kIG9mIHR5cGUg
JyIgPDwgcmlnaHQKLSAgICAgICAgICAgICAgICAgICAgPDwgIicgKG9yIHRoZXJlIGlzIG5vIGFj
Y2VwdGFibGUgY29udmVyc2lvbikiOwotICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJh
SW5mb1N0cmVhbS5zdHIoKTsKLSAgICBlcnJvcihsaW5lLCAiIHdyb25nIG9wZXJhbmQgdHlwZXMg
Iiwgb3AsIGV4dHJhSW5mby5jX3N0cigpKTsKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSByZWFzb25T
dHJlYW07CisgICAgcmVhc29uU3RyZWFtIDw8ICJ3cm9uZyBvcGVyYW5kIHR5cGVzIC0gbm8gb3Bl
cmF0aW9uICciIDw8IG9wCisgICAgICAgICAgICAgICAgIDw8ICInIGV4aXN0cyB0aGF0IHRha2Vz
IGEgbGVmdC1oYW5kIG9wZXJhbmQgb2YgdHlwZSAnIiA8PCBsZWZ0CisgICAgICAgICAgICAgICAg
IDw8ICInIGFuZCBhIHJpZ2h0IG9wZXJhbmQgb2YgdHlwZSAnIiA8PCByaWdodAorICAgICAgICAg
ICAgICAgICA8PCAiJyAob3IgdGhlcmUgaXMgbm8gYWNjZXB0YWJsZSBjb252ZXJzaW9uKSI7Cisg
ICAgc3RkOjpzdHJpbmcgcmVhc29uID0gcmVhc29uU3RyZWFtLnN0cigpOworICAgIGVycm9yKGxp
bmUsIHJlYXNvbi5jX3N0cigpLCBvcCk7CiB9CiAKIHZvaWQgVFBhcnNlQ29udGV4dDo6Y2hlY2tQ
cmVjaXNpb25TcGVjaWZpZWQoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKQEAgLTIzNyw2ICszNDUs
MTEgQEAgdm9pZCBUUGFyc2VDb250ZXh0OjpjaGVja1ByZWNpc2lvblNwZWNpZmllZChjb25zdCBU
U291cmNlTG9jICZsaW5lLAogICAgICAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCAiTm8gcHJl
Y2lzaW9uIHNwZWNpZmllZCAoc2FtcGxlcikiLCAiIik7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKElzSW1hZ2UodHlw
ZSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBlcnJvcihsaW5lLCAi
Tm8gcHJlY2lzaW9uIHNwZWNpZmllZCAoaW1hZ2UpIiwgIiIpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQpAQCAtMjQ1
LDggKzM1OCw4IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6Y2hlY2tQcmVjaXNpb25TcGVjaWZpZWQo
Y29uc3QgVFNvdXJjZUxvYyAmbGluZSwKIC8vIGFuIGwtdmFsdWUgdGhhdCBjYW4gYmUgb3BlcmF0
ZWQgb24gdGhpcyB3YXkuCiBib29sIFRQYXJzZUNvbnRleHQ6OmNoZWNrQ2FuQmVMVmFsdWUoY29u
c3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgY2hhciAqb3AsIFRJbnRlcm1UeXBlZCAqbm9kZSkK
IHsKLSAgICBUSW50ZXJtU3ltYm9sICpzeW1Ob2RlICAgID0gbm9kZS0+Z2V0QXNTeW1ib2xOb2Rl
KCk7Ci0gICAgVEludGVybUJpbmFyeSAqYmluYXJ5Tm9kZSA9IG5vZGUtPmdldEFzQmluYXJ5Tm9k
ZSgpOworICAgIFRJbnRlcm1TeW1ib2wgKnN5bU5vZGUgICAgICA9IG5vZGUtPmdldEFzU3ltYm9s
Tm9kZSgpOworICAgIFRJbnRlcm1CaW5hcnkgKmJpbmFyeU5vZGUgICA9IG5vZGUtPmdldEFzQmlu
YXJ5Tm9kZSgpOwogICAgIFRJbnRlcm1Td2l6emxlICpzd2l6emxlTm9kZSA9IG5vZGUtPmdldEFz
U3dpenpsZU5vZGUoKTsKIAogICAgIGlmIChzd2l6emxlTm9kZSkKQEAgLTI3NiwxMCArMzg5LDYg
QEAgYm9vbCBUUGFyc2VDb250ZXh0OjpjaGVja0NhbkJlTFZhbHVlKGNvbnN0IFRTb3VyY2VMb2Mg
JmxpbmUsIGNvbnN0IGNoYXIgKm9wLCBUSW4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGNvbnN0IGNoYXIgKnN5bWJvbCA9IDA7Ci0gICAgaWYgKHN5bU5vZGUgIT0gMCkKLSAg
ICAgICAgc3ltYm9sID0gc3ltTm9kZS0+Z2V0U3ltYm9sKCkuY19zdHIoKTsKLQogICAgIGNvbnN0
IGNoYXIgKm1lc3NhZ2UgPSAwOwogICAgIHN3aXRjaCAobm9kZS0+Z2V0UXVhbGlmaWVyKCkpCiAg
ICAgewpAQCAtMzQ2LDExICs0NTUsMTUgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpjaGVja0NhbkJl
TFZhbHVlKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IGNoYXIgKm9wLCBUSW4KICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhIHNhbXBs
ZXIiOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKElzSW1hZ2Uobm9kZS0+Z2V0QmFz
aWNUeXBlKCkpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiY2Fu
J3QgbW9kaWZ5IGFuIGltYWdlIjsKKyAgICAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAobWVz
c2FnZSA9PSAwICYmIGJpbmFyeU5vZGUgPT0gMCAmJiBzeW1Ob2RlID09IDApCiAgICAgewotICAg
ICAgICBlcnJvcihsaW5lLCAiIGwtdmFsdWUgcmVxdWlyZWQiLCBvcCk7CisgICAgICAgIGVycm9y
KGxpbmUsICJsLXZhbHVlIHJlcXVpcmVkIiwgb3ApOwogCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CkBAIC0zNjYsMTcgKzQ3OSwxOCBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNoZWNrQ2Fu
QmVMVmFsdWUoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgY2hhciAqb3AsIFRJbgogICAg
IC8vCiAgICAgaWYgKHN5bU5vZGUpCiAgICAgewotICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBl
eHRyYUluZm9TdHJlYW07Ci0gICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiXCIiIDw8IHN5bWJv
bCA8PCAiXCIgKCIgPDwgbWVzc2FnZSA8PCAiKSI7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJh
SW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgZXJyb3IobGluZSwgIiBsLXZh
bHVlIHJlcXVpcmVkIiwgb3AsIGV4dHJhSW5mby5jX3N0cigpKTsKKyAgICAgICAgY29uc3QgY2hh
ciAqc3ltYm9sID0gc3ltTm9kZS0+Z2V0U3ltYm9sKCkuY19zdHIoKTsKKyAgICAgICAgc3RkOjpz
dHJpbmdzdHJlYW0gcmVhc29uU3RyZWFtOworICAgICAgICByZWFzb25TdHJlYW0gPDwgImwtdmFs
dWUgcmVxdWlyZWQgKCIgPDwgbWVzc2FnZSA8PCAiIFwiIiA8PCBzeW1ib2wgPDwgIlwiKSI7Cisg
ICAgICAgIHN0ZDo6c3RyaW5nIHJlYXNvbiA9IHJlYXNvblN0cmVhbS5zdHIoKTsKKyAgICAgICAg
ZXJyb3IobGluZSwgcmVhc29uLmNfc3RyKCksIG9wKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsK
LSAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICBleHRy
YUluZm9TdHJlYW0gPDwgIigiIDw8IG1lc3NhZ2UgPDwgIikiOwotICAgICAgICBzdGQ6OnN0cmlu
ZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAgIGVycm9yKGxpbmUs
ICIgbC12YWx1ZSByZXF1aXJlZCIsIG9wLCBleHRyYUluZm8uY19zdHIoKSk7CisgICAgICAgIHN0
ZDo6c3RyaW5nc3RyZWFtIHJlYXNvblN0cmVhbTsKKyAgICAgICAgcmVhc29uU3RyZWFtIDw8ICJs
LXZhbHVlIHJlcXVpcmVkICgiIDw8IG1lc3NhZ2UgPDwgIikiOworICAgICAgICBzdGQ6OnN0cmlu
ZyByZWFzb24gPSByZWFzb25TdHJlYW0uc3RyKCk7CisgICAgICAgIGVycm9yKGxpbmUsIHJlYXNv
bi5jX3N0cigpLCBvcCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDI5LDcgKzU0
Myw3IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y2hlY2tJc05vdFJlc2VydmVkKGNvbnN0IFRTb3Vy
Y2VMb2MgJmxpbmUsIGNvbnN0IFRTdHJpbmcgJmlkCiAgICAgICAgICAgICBlcnJvcihsaW5lLCBy
ZXNlcnZlZEVyck1zZywgImdsXyIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChJc1dlYkdMQmFzZWRTcGVjKG1TaGFkZXJTcGVjKSkKKyAgICAgICAg
aWYgKHNoOjpJc1dlYkdMQmFzZWRTcGVjKG1TaGFkZXJTcGVjKSkKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKGlkZW50aWZpZXIuY29tcGFyZSgwLCA2LCAid2ViZ2xfIikgPT0gMCkKICAgICAg
ICAgICAgIHsKQEAgLTQ1OSw4ICs1NzMsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNoZWNrSXNO
b3RSZXNlcnZlZChjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBUU3RyaW5nICZpZAogLy8g
c29tZXRoaW5nIG9mIHRoZSB0eXBlIG9mIHRoZSBjb25zdHJ1Y3Rvci4gIEFsc28gcmV0dXJucyB0
aGUgdHlwZSBvZgogLy8gdGhlIGNvbnN0cnVjdG9yLgogYm9vbCBUUGFyc2VDb250ZXh0OjpjaGVj
a0NvbnN0cnVjdG9yQXJndW1lbnRzKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKmFyZ3VtZW50
c05vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVEZ1bmN0aW9uICZmdW5jdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUSW50ZXJtU2VxdWVuY2UgKmFyZ3VtZW50cywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUT3BlcmF0b3Igb3AsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJnR5
cGUpCiB7CkBAIC00OTIsMTkgKzYwNSwxOSBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNoZWNrQ29u
c3RydWN0b3JBcmd1bWVudHMoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKICAgICBib29sIGZ1bGwg
ICAgICAgICAgID0gZmFsc2U7CiAgICAgYm9vbCBvdmVyRnVsbCAgICAgICA9IGZhbHNlOwogICAg
IGJvb2wgbWF0cml4SW5NYXRyaXggPSBmYWxzZTsKLSAgICBib29sIGFycmF5QXJnID0gZmFsc2U7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCk7ICsr
aSkKKyAgICBib29sIGFycmF5QXJnICAgICAgID0gZmFsc2U7CisgICAgZm9yIChUSW50ZXJtTm9k
ZSAqYXJnIDogKmFyZ3VtZW50cykKICAgICB7Ci0gICAgICAgIGNvbnN0IFRDb25zdFBhcmFtZXRl
ciAmcGFyYW0gPSBmdW5jdGlvbi5nZXRQYXJhbShpKTsKLSAgICAgICAgc2l6ZSArPSBwYXJhbS50
eXBlLT5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIGNvbnN0IFRJbnRlcm1UeXBlZCAqYXJnVHlw
ZWQgPSBhcmctPmdldEFzVHlwZWQoKTsKKyAgICAgICAgc2l6ZSArPSBhcmdUeXBlZC0+Z2V0VHlw
ZSgpLmdldE9iamVjdFNpemUoKTsKIAotICAgICAgICBpZiAoY29uc3RydWN0aW5nTWF0cml4ICYm
IHBhcmFtLnR5cGUtPmlzTWF0cml4KCkpCisgICAgICAgIGlmIChjb25zdHJ1Y3RpbmdNYXRyaXgg
JiYgYXJnVHlwZWQtPmdldFR5cGUoKS5pc01hdHJpeCgpKQogICAgICAgICAgICAgbWF0cml4SW5N
YXRyaXggPSB0cnVlOwogICAgICAgICBpZiAoZnVsbCkKICAgICAgICAgICAgIG92ZXJGdWxsID0g
dHJ1ZTsKICAgICAgICAgaWYgKG9wICE9IEVPcENvbnN0cnVjdFN0cnVjdCAmJiAhdHlwZS5pc0Fy
cmF5KCkgJiYgc2l6ZSA+PSB0eXBlLmdldE9iamVjdFNpemUoKSkKICAgICAgICAgICAgIGZ1bGwg
PSB0cnVlOwotICAgICAgICBpZiAocGFyYW0udHlwZS0+aXNBcnJheSgpKQorICAgICAgICBpZiAo
YXJnVHlwZWQtPmdldFR5cGUoKS5pc0FycmF5KCkpCiAgICAgICAgICAgICBhcnJheUFyZyA9IHRy
dWU7CiAgICAgfQogCkBAIC01MTIsNyArNjI1LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpjaGVj
a0NvbnN0cnVjdG9yQXJndW1lbnRzKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCiAgICAgewogICAg
ICAgICAvLyBUaGUgc2l6ZSBvZiBhbiB1bnNpemVkIGNvbnN0cnVjdG9yIHNob3VsZCBhbHJlYWR5
IGhhdmUgYmVlbiBkZXRlcm1pbmVkLgogICAgICAgICBBU1NFUlQoIXR5cGUuaXNVbnNpemVkQXJy
YXkoKSk7Ci0gICAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KHR5cGUuZ2V0QXJyYXlTaXpl
KCkpICE9IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKSkKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0
PHNpemVfdD4odHlwZS5nZXRBcnJheVNpemUoKSkgIT0gYXJndW1lbnRzLT5zaXplKCkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGVycm9yKGxpbmUsICJhcnJheSBjb25zdHJ1Y3RvciBuZWVkcyBv
bmUgYXJndW1lbnQgcGVyIGFycmF5IGVsZW1lbnQiLCAiY29uc3RydWN0b3IiKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTUyNyw3ICs2NDAsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6
OmNoZWNrQ29uc3RydWN0b3JBcmd1bWVudHMoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKIAogICAg
IGlmIChtYXRyaXhJbk1hdHJpeCAmJiAhdHlwZS5pc0FycmF5KCkpCiAgICAgewotICAgICAgICBp
ZiAoZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpICE9IDEpCisgICAgICAgIGlmIChhcmd1bWVudHMt
PnNpemUoKSAhPSAxKQogICAgICAgICB7CiAgICAgICAgICAgICBlcnJvcihsaW5lLCAiY29uc3Ry
dWN0aW5nIG1hdHJpeCBmcm9tIG1hdHJpeCBjYW4gb25seSB0YWtlIG9uZSBhcmd1bWVudCIsCiAg
ICAgICAgICAgICAgICAgICAiY29uc3RydWN0b3IiKTsKQEAgLTU0Miw3ICs2NTUsNyBAQCBib29s
IFRQYXJzZUNvbnRleHQ6OmNoZWNrQ29uc3RydWN0b3JBcmd1bWVudHMoY29uc3QgVFNvdXJjZUxv
YyAmbGluZSwKICAgICB9CiAKICAgICBpZiAob3AgPT0gRU9wQ29uc3RydWN0U3RydWN0ICYmICF0
eXBlLmlzQXJyYXkoKSAmJgotICAgICAgICB0eXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKS5zaXpl
KCkgIT0gZnVuY3Rpb24uZ2V0UGFyYW1Db3VudCgpKQorICAgICAgICB0eXBlLmdldFN0cnVjdCgp
LT5maWVsZHMoKS5zaXplKCkgIT0gYXJndW1lbnRzLT5zaXplKCkpCiAgICAgewogICAgICAgICBl
cnJvcihsaW5lLAogICAgICAgICAgICAgICAiTnVtYmVyIG9mIGNvbnN0cnVjdG9yIHBhcmFtZXRl
cnMgZG9lcyBub3QgbWF0Y2ggdGhlIG51bWJlciBvZiBzdHJ1Y3R1cmUgZmllbGRzIiwKQEAgLTU2
MCwxNCArNjczLDEzIEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y2hlY2tDb25zdHJ1Y3RvckFyZ3Vt
ZW50cyhjb25zdCBUU291cmNlTG9jICZsaW5lLAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYg
KGFyZ3VtZW50c05vZGUgPT0gbnVsbHB0cikKKyAgICBpZiAoYXJndW1lbnRzLT5lbXB0eSgpKQog
ICAgIHsKICAgICAgICAgZXJyb3IobGluZSwgImNvbnN0cnVjdG9yIGRvZXMgbm90IGhhdmUgYW55
IGFyZ3VtZW50cyIsICJjb25zdHJ1Y3RvciIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAqYXJndW1lbnRzQWdnID0gYXJndW1lbnRzTm9kZS0+
Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICBmb3IgKFRJbnRlcm1Ob2RlIComYXJnTm9kZSA6ICphcmd1
bWVudHNBZ2ctPmdldFNlcXVlbmNlKCkpCisgICAgZm9yIChUSW50ZXJtTm9kZSAqY29uc3QgJmFy
Z05vZGUgOiAqYXJndW1lbnRzKQogICAgIHsKICAgICAgICAgVEludGVybVR5cGVkICphcmdUeXBl
ZCA9IGFyZ05vZGUtPmdldEFzVHlwZWQoKTsKICAgICAgICAgQVNTRVJUKGFyZ1R5cGVkICE9IG51
bGxwdHIpOwpAQCAtNTc2LDYgKzY4OCwxMSBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNoZWNrQ29u
c3RydWN0b3JBcmd1bWVudHMoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKICAgICAgICAgICAgIGVy
cm9yKGxpbmUsICJjYW5ub3QgY29udmVydCBhIHNhbXBsZXIiLCAiY29uc3RydWN0b3IiKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorICAgICAgICBpZiAob3AgIT0gRU9w
Q29uc3RydWN0U3RydWN0ICYmIElzSW1hZ2UoYXJnVHlwZWQtPmdldEJhc2ljVHlwZSgpKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBjb252ZXJ0IGFuIGltYWdl
IiwgImNvbnN0cnVjdG9yIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
ICAgICAgICAgaWYgKGFyZ1R5cGVkLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKQogICAgICAg
ICB7CiAgICAgICAgICAgICBlcnJvcihsaW5lLCAiY2Fubm90IGNvbnZlcnQgYSB2b2lkIiwgImNv
bnN0cnVjdG9yIik7CkBAIC01ODcsMTQgKzcwNCwxOCBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNo
ZWNrQ29uc3RydWN0b3JBcmd1bWVudHMoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKICAgICB7CiAg
ICAgICAgIC8vIEdMU0wgRVMgMy4wMCBzZWN0aW9uIDUuNC40OiBFYWNoIGFyZ3VtZW50IG11c3Qg
YmUgdGhlIHNhbWUgdHlwZSBhcyB0aGUgZWxlbWVudCB0eXBlIG9mCiAgICAgICAgIC8vIHRoZSBh
cnJheS4KLSAgICAgICAgZm9yIChUSW50ZXJtTm9kZSAqJmFyZ05vZGUgOiAqYXJndW1lbnRzQWdn
LT5nZXRTZXF1ZW5jZSgpKQorICAgICAgICBmb3IgKFRJbnRlcm1Ob2RlICpjb25zdCAmYXJnTm9k
ZSA6ICphcmd1bWVudHMpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZhcmdU
eXBlID0gYXJnTm9kZS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCk7Ci0gICAgICAgICAgICAvLyBJ
dCBoYXMgYWxyZWFkeSBiZWVuIGNoZWNrZWQgdGhhdCB0aGUgYXJndW1lbnQgaXMgbm90IGFuIGFy
cmF5LgotICAgICAgICAgICAgQVNTRVJUKCFhcmdUeXBlLmlzQXJyYXkoKSk7CisgICAgICAgICAg
ICAvLyBJdCBoYXMgYWxyZWFkeSBiZWVuIGNoZWNrZWQgdGhhdCB0aGUgYXJndW1lbnQgaXMgbm90
IGFuIGFycmF5LCBidXQgd2UgY2FuIGFycml2ZQorICAgICAgICAgICAgLy8gaGVyZSBkdWUgdG8g
cHJpb3IgZXJyb3IgY29uZGl0aW9ucy4KKyAgICAgICAgICAgIGlmIChhcmdUeXBlLmlzQXJyYXko
KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAoIWFyZ1R5cGUuc2FtZUVsZW1lbnRUeXBlKHR5cGUpKQog
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGVycm9yKGxpbmUsICJBcnJheSBjb25zdHJ1
Y3RvciBhcmd1bWVudCBoYXMgYW4gaW5jb3JyZWN0IHR5cGUiLCAiRXJyb3IiKTsKKyAgICAgICAg
ICAgICAgICBlcnJvcihsaW5lLCAiQXJyYXkgY29uc3RydWN0b3IgYXJndW1lbnQgaGFzIGFuIGlu
Y29ycmVjdCB0eXBlIiwgImNvbnN0cnVjdG9yIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC02MDIsMTQgKzcyMywxNCBAQCBib29s
IFRQYXJzZUNvbnRleHQ6OmNoZWNrQ29uc3RydWN0b3JBcmd1bWVudHMoY29uc3QgVFNvdXJjZUxv
YyAmbGluZSwKICAgICBlbHNlIGlmIChvcCA9PSBFT3BDb25zdHJ1Y3RTdHJ1Y3QpCiAgICAgewog
ICAgICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSB0eXBlLmdldFN0cnVjdCgpLT5maWVs
ZHMoKTsKLSAgICAgICAgVEludGVybVNlcXVlbmNlICphcmdzICAgID0gYXJndW1lbnRzQWdnLT5n
ZXRTZXF1ZW5jZSgpOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmllbGRzLnNp
emUoKTsgaSsrKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaSA+PSBhcmdzLT5zaXplKCkg
fHwgKCphcmdzKVtpXS0+Z2V0QXNUeXBlZCgpLT5nZXRUeXBlKCkgIT0gKmZpZWxkc1tpXS0+dHlw
ZSgpKQorICAgICAgICAgICAgaWYgKGkgPj0gYXJndW1lbnRzLT5zaXplKCkgfHwKKyAgICAgICAg
ICAgICAgICAoKmFyZ3VtZW50cylbaV0tPmdldEFzVHlwZWQoKS0+Z2V0VHlwZSgpICE9ICpmaWVs
ZHNbaV0tPnR5cGUoKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBlcnJvcihsaW5l
LCAiU3RydWN0dXJlIGNvbnN0cnVjdG9yIGFyZ3VtZW50cyBkbyBub3QgbWF0Y2ggc3RydWN0dXJl
IGZpZWxkcyIsCi0gICAgICAgICAgICAgICAgICAgICAgIkVycm9yIik7CisgICAgICAgICAgICAg
ICAgICAgICAgImNvbnN0cnVjdG9yIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC02NjIsOSArNzgzLDEyIEBAIGJvb2wgVFBhcnNl
Q29udGV4dDo6Y2hlY2tJc05vdFNhbXBsZXIoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKIHsKICAg
ICBpZiAocFR5cGUudHlwZSA9PSBFYnRTdHJ1Y3QpCiAgICAgewotICAgICAgICBpZiAoY29udGFp
bnNTYW1wbGVyKCpwVHlwZS51c2VyRGVmKSkKKyAgICAgICAgaWYgKENvbnRhaW5zU2FtcGxlcigq
cFR5cGUudXNlckRlZikpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yKGxpbmUsIHJlYXNv
biwgZ2V0QmFzaWNTdHJpbmcocFR5cGUudHlwZSksICIoc3RydWN0dXJlIGNvbnRhaW5zIGEgc2Ft
cGxlcikiKTsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHJlYXNvblN0cmVhbTsKKyAg
ICAgICAgICAgIHJlYXNvblN0cmVhbSA8PCByZWFzb24gPDwgIiAoc3RydWN0dXJlIGNvbnRhaW5z
IGEgc2FtcGxlcikiOworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVhc29uU3RyID0gcmVhc29u
U3RyZWFtLnN0cigpOworICAgICAgICAgICAgZXJyb3IobGluZSwgcmVhc29uU3RyLmNfc3RyKCks
IGdldEJhc2ljU3RyaW5nKHBUeXBlLnR5cGUpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogCkBAIC02NzksNiArODAzLDM0IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y2hl
Y2tJc05vdFNhbXBsZXIoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorYm9vbCBUUGFyc2VDb250ZXh0OjpjaGVja0lzTm90SW1hZ2UoY29uc3QgVFNvdXJjZUxv
YyAmbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBl
U3BlY2lmaWVyTm9uQXJyYXkgJnBUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciAqcmVhc29uKQoreworICAgIGlmIChwVHlwZS50eXBlID09IEVidFN0
cnVjdCkKKyAgICB7CisgICAgICAgIGlmIChDb250YWluc0ltYWdlKCpwVHlwZS51c2VyRGVmKSkK
KyAgICAgICAgeworICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gcmVhc29uU3RyZWFtOwor
ICAgICAgICAgICAgcmVhc29uU3RyZWFtIDw8IHJlYXNvbiA8PCAiIChzdHJ1Y3R1cmUgY29udGFp
bnMgYW4gaW1hZ2UpIjsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJlYXNvblN0ciA9IHJlYXNv
blN0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsIHJlYXNvblN0ci5jX3N0cigp
LCBnZXRCYXNpY1N0cmluZyhwVHlwZS50eXBlKSk7CisKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBlbHNlIGlm
IChJc0ltYWdlKHBUeXBlLnR5cGUpKQorICAgIHsKKyAgICAgICAgZXJyb3IobGluZSwgcmVhc29u
LCBnZXRCYXNpY1N0cmluZyhwVHlwZS50eXBlKSk7CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNr
RGVjbGFyYXRvckxvY2F0aW9uSXNOb3RTcGVjaWZpZWQoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUUHVibGljVHlwZSAmcFR5cGUpCiB7CkBAIC02OTQsMzggKzg0Niw0NCBAQCB2b2lk
IFRQYXJzZUNvbnRleHQ6OmNoZWNrTG9jYXRpb25Jc05vdFNwZWNpZmllZChjb25zdCBUU291cmNl
TG9jICZsb2NhdGlvbiwKIHsKICAgICBpZiAobGF5b3V0UXVhbGlmaWVyLmxvY2F0aW9uICE9IC0x
KQogICAgIHsKLSAgICAgICAgZXJyb3IobG9jYXRpb24sICJpbnZhbGlkIGxheW91dCBxdWFsaWZp
ZXI6IiwgImxvY2F0aW9uIiwKLSAgICAgICAgICAgICAgIm9ubHkgdmFsaWQgb24gcHJvZ3JhbSBp
bnB1dHMgYW5kIG91dHB1dHMiKTsKKyAgICAgICAgY29uc3QgY2hhciAqZXJyb3JNc2cgPSAiaW52
YWxpZCBsYXlvdXQgcXVhbGlmaWVyOiBvbmx5IHZhbGlkIG9uIHByb2dyYW0gaW5wdXRzIGFuZCBv
dXRwdXRzIjsKKyAgICAgICAgaWYgKG1TaGFkZXJWZXJzaW9uID49IDMxMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgZXJyb3JNc2cgPQorICAgICAgICAgICAgICAgICJpbnZhbGlkIGxheW91dCBx
dWFsaWZpZXI6IG9ubHkgdmFsaWQgb24gcHJvZ3JhbSBpbnB1dHMsIG91dHB1dHMsIGFuZCB1bmlm
b3JtcyI7CisgICAgICAgIH0KKyAgICAgICAgZXJyb3IobG9jYXRpb24sIGVycm9yTXNnLCAibG9j
YXRpb24iKTsKICAgICB9CiB9CiAKK3ZvaWQgVFBhcnNlQ29udGV4dDo6Y2hlY2tPdXRQYXJhbWV0
ZXJJc05vdE9wYXF1ZVR5cGUoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZp
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRUeXBlICZ0eXBlKQoreworICAgIGNoZWNrT3V0UGFyYW1ldGVySXNOb3RTYW1wbGVy
KGxpbmUsIHF1YWxpZmllciwgdHlwZSk7CisgICAgY2hlY2tPdXRQYXJhbWV0ZXJJc05vdEltYWdl
KGxpbmUsIHF1YWxpZmllciwgdHlwZSk7Cit9CisKIHZvaWQgVFBhcnNlQ29udGV4dDo6Y2hlY2tP
dXRQYXJhbWV0ZXJJc05vdFNhbXBsZXIoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFF1YWxpZmllciBxdWFs
aWZpZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRUeXBlICZ0eXBlKQogewotICAgIGlmICgocXVhbGlmaWVyID09IEV2cU91dCB8fCBx
dWFsaWZpZXIgPT0gRXZxSW5PdXQpICYmIHR5cGUuZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0
ICYmCi0gICAgICAgIElzU2FtcGxlcih0eXBlLmdldEJhc2ljVHlwZSgpKSkKKyAgICBBU1NFUlQo
cXVhbGlmaWVyID09IEV2cU91dCB8fCBxdWFsaWZpZXIgPT0gRXZxSW5PdXQpOworICAgIGlmIChJ
c1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkpCiAgICAgewogICAgICAgICBlcnJvcihsaW5l
LCAic2FtcGxlcnMgY2Fubm90IGJlIG91dHB1dCBwYXJhbWV0ZXJzIiwgdHlwZS5nZXRCYXNpY1N0
cmluZygpKTsKICAgICB9CiB9CiAKLWJvb2wgVFBhcnNlQ29udGV4dDo6Y29udGFpbnNTYW1wbGVy
KGNvbnN0IFRUeXBlICZ0eXBlKQordm9pZCBUUGFyc2VDb250ZXh0OjpjaGVja091dFBhcmFtZXRl
cklzTm90SW1hZ2UoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJnR5
cGUpCiB7Ci0gICAgaWYgKElzU2FtcGxlcih0eXBlLmdldEJhc2ljVHlwZSgpKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3Qg
fHwgdHlwZS5pc0ludGVyZmFjZUJsb2NrKCkpCisgICAgQVNTRVJUKHF1YWxpZmllciA9PSBFdnFP
dXQgfHwgcXVhbGlmaWVyID09IEV2cUluT3V0KTsKKyAgICBpZiAoSXNJbWFnZSh0eXBlLmdldEJh
c2ljVHlwZSgpKSkKICAgICB7Ci0gICAgICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IHR5
cGUuZ2V0U3RydWN0KCktPmZpZWxkcygpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGNv
bnRhaW5zU2FtcGxlcigqZmllbGRzW2ldLT50eXBlKCkpKQotICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9CisgICAgICAgIGVycm9yKGxpbmUsICJpbWFnZXMgY2Fubm90IGJl
IG91dHB1dCBwYXJhbWV0ZXJzIiwgdHlwZS5nZXRCYXNpY1N0cmluZygpKTsKICAgICB9Ci0KLSAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIC8vIERvIHNpemUgY2hlY2tpbmcgZm9yIGFuIGFycmF5IHR5
cGUncyBzaXplLgpAQCAtODc4LDYgKzEwMzYsOCBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmRlY2xh
cmVWYXJpYWJsZShjb25zdCBUU291cmNlTG9jICZsaW5lLAogewogICAgIEFTU0VSVCgoKnZhcmlh
YmxlKSA9PSBudWxscHRyKTsKIAorICAgIGNoZWNrQmluZGluZ0lzVmFsaWQobGluZSwgdHlwZSk7
CisKICAgICBib29sIG5lZWRzUmVzZXJ2ZWRDaGVjayA9IHRydWU7CiAKICAgICAvLyBnbF9MYXN0
RnJhZ0RhdGEgbWF5IGJlIHJlZGVjbGFyZWQgd2l0aCBhIG5ldyBwcmVjaXNpb24gcXVhbGlmaWVy
CkBAIC05MjIsMTEgKzEwODIsMjAgQEAgdm9pZCBUUGFyc2VDb250ZXh0OjpjaGVja0lzUGFyYW1l
dGVyUXVhbGlmaWVyVmFsaWQoCiAgICAgY29uc3QgVFR5cGVRdWFsaWZpZXJCdWlsZGVyICZ0eXBl
UXVhbGlmaWVyQnVpbGRlciwKICAgICBUVHlwZSAqdHlwZSkKIHsKLSAgICBUVHlwZVF1YWxpZmll
ciB0eXBlUXVhbGlmaWVyID0gdHlwZVF1YWxpZmllckJ1aWxkZXIuZ2V0UGFyYW1ldGVyVHlwZVF1
YWxpZmllcigmbURpYWdub3N0aWNzKTsKKyAgICBUVHlwZVF1YWxpZmllciB0eXBlUXVhbGlmaWVy
ID0gdHlwZVF1YWxpZmllckJ1aWxkZXIuZ2V0UGFyYW1ldGVyVHlwZVF1YWxpZmllcihtRGlhZ25v
c3RpY3MpOwogCiAgICAgaWYgKHR5cGVRdWFsaWZpZXIucXVhbGlmaWVyID09IEV2cU91dCB8fCB0
eXBlUXVhbGlmaWVyLnF1YWxpZmllciA9PSBFdnFJbk91dCkKICAgICB7Ci0gICAgICAgIGNoZWNr
T3V0UGFyYW1ldGVySXNOb3RTYW1wbGVyKGxpbmUsIHR5cGVRdWFsaWZpZXIucXVhbGlmaWVyLCAq
dHlwZSk7CisgICAgICAgIGNoZWNrT3V0UGFyYW1ldGVySXNOb3RPcGFxdWVUeXBlKGxpbmUsIHR5
cGVRdWFsaWZpZXIucXVhbGlmaWVyLCAqdHlwZSk7CisgICAgfQorCisgICAgaWYgKCFJc0ltYWdl
KHR5cGUtPmdldEJhc2ljVHlwZSgpKSkKKyAgICB7CisgICAgICAgIGNoZWNrTWVtb3J5UXVhbGlm
aWVySXNOb3RTcGVjaWZpZWQodHlwZVF1YWxpZmllci5tZW1vcnlRdWFsaWZpZXIsIGxpbmUpOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICB0eXBlLT5zZXRNZW1vcnlRdWFsaWZpZXIo
dHlwZVF1YWxpZmllci5tZW1vcnlRdWFsaWZpZXIpOwogICAgIH0KIAogICAgIHR5cGUtPnNldFF1
YWxpZmllcih0eXBlUXVhbGlmaWVyLnF1YWxpZmllcik7CkBAIC05NDMsMjQgKzExMTIsNDUgQEAg
Ym9vbCBUUGFyc2VDb250ZXh0OjpjaGVja0NhblVzZUV4dGVuc2lvbihjb25zdCBUU291cmNlTG9j
ICZsaW5lLCBjb25zdCBUU3RyaW5nICYKICAgICBURXh0ZW5zaW9uQmVoYXZpb3I6OmNvbnN0X2l0
ZXJhdG9yIGl0ZXIgPSBleHRCZWhhdmlvci5maW5kKGV4dGVuc2lvbi5jX3N0cigpKTsKICAgICBp
ZiAoaXRlciA9PSBleHRCZWhhdmlvci5lbmQoKSkKICAgICB7Ci0gICAgICAgIGVycm9yKGxpbmUs
ICJleHRlbnNpb24iLCBleHRlbnNpb24uY19zdHIoKSwgImlzIG5vdCBzdXBwb3J0ZWQiKTsKKyAg
ICAgICAgZXJyb3IobGluZSwgImV4dGVuc2lvbiBpcyBub3Qgc3VwcG9ydGVkIiwgZXh0ZW5zaW9u
LmNfc3RyKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIEluIEdMU0wg
RVMsIGFuIGV4dGVuc2lvbidzIGRlZmF1bHQgYmVoYXZpb3IgaXMgImRpc2FibGUiLgogICAgIGlm
IChpdGVyLT5zZWNvbmQgPT0gRUJoRGlzYWJsZSB8fCBpdGVyLT5zZWNvbmQgPT0gRUJoVW5kZWZp
bmVkKQogICAgIHsKLSAgICAgICAgZXJyb3IobGluZSwgImV4dGVuc2lvbiIsIGV4dGVuc2lvbi5j
X3N0cigpLCAiaXMgZGlzYWJsZWQiKTsKKyAgICAgICAgLy8gVE9ETyhvZXR1YWhvQG52aWRpYS5j
b20pOiBUaGlzIGlzIHNsaWdodGx5IGhhY2t5LiBNaWdodCBiZSBiZXR0ZXIgaWYgc3ltYm9scyBj
b3VsZCBiZQorICAgICAgICAvLyBhc3NvY2lhdGVkIHdpdGggbW9yZSB0aGFuIG9uZSBleHRlbnNp
b24uCisgICAgICAgIGlmIChleHRlbnNpb24gPT0gIkdMX09WUl9tdWx0aXZpZXciKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tDYW5Vc2VFeHRlbnNpb24obGluZSwgIkdMX09W
Ul9tdWx0aXZpZXcyIik7CisgICAgICAgIH0KKyAgICAgICAgZXJyb3IobGluZSwgImV4dGVuc2lv
biBpcyBkaXNhYmxlZCIsIGV4dGVuc2lvbi5jX3N0cigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICBpZiAoaXRlci0+c2Vjb25kID09IEVCaFdhcm4pCiAgICAgewotICAgICAg
ICB3YXJuaW5nKGxpbmUsICJleHRlbnNpb24iLCBleHRlbnNpb24uY19zdHIoKSwgImlzIGJlaW5n
IHVzZWQiKTsKKyAgICAgICAgd2FybmluZyhsaW5lLCAiZXh0ZW5zaW9uIGlzIGJlaW5nIHVzZWQi
LCBleHRlbnNpb24uY19zdHIoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAg
IHJldHVybiB0cnVlOwogfQogCit2b2lkIFRQYXJzZUNvbnRleHQ6OmVtcHR5RGVjbGFyYXRpb25F
cnJvckNoZWNrKGNvbnN0IFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2NhdGlv
bikKK3sKKyAgICBpZiAocHVibGljVHlwZS5pc1Vuc2l6ZWRBcnJheSgpKQorICAgIHsKKyAgICAg
ICAgLy8gRVNTTDMgc3BlYyBzZWN0aW9uIDQuMS45OiBBcnJheSBkZWNsYXJhdGlvbiB3aGljaCBs
ZWF2ZXMgdGhlIHNpemUgdW5zcGVjaWZpZWQgaXMgYW4KKyAgICAgICAgLy8gZXJyb3IuIEl0IGlz
IGFzc3VtZWQgdGhhdCB0aGlzIGFwcGxpZXMgdG8gZW1wdHkgZGVjbGFyYXRpb25zIGFzIHdlbGwu
CisgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiZW1wdHkgYXJyYXkgZGVjbGFyYXRpb24gbmVlZHMg
dG8gc3BlY2lmeSBhIHNpemUiLCAiIik7CisgICAgfQorICAgIGlmIChwdWJsaWNUeXBlLnF1YWxp
ZmllciA9PSBFdnFTaGFyZWQgJiYgIXB1YmxpY1R5cGUubGF5b3V0UXVhbGlmaWVyLmlzRW1wdHko
KSkKKyAgICB7CisgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiU2hhcmVkIG1lbW9yeSBkZWNsYXJh
dGlvbnMgY2Fubm90IGhhdmUgbGF5b3V0IHNwZWNpZmllZCIsICJsYXlvdXQiKTsKKyAgICB9Cit9
CisKIC8vIFRoZXNlIGNoZWNrcyBhcmUgY29tbW9uIGZvciBhbGwgZGVjbGFyYXRpb25zIHN0YXJ0
aW5nIGEgZGVjbGFyYXRvciBsaXN0LCBhbmQgZGVjbGFyYXRvcnMgdGhhdAogLy8gZm9sbG93IGFu
IGVtcHR5IGRlY2xhcmF0aW9uLgogdm9pZCBUUGFyc2VDb250ZXh0OjpzaW5nbGVEZWNsYXJhdGlv
bkVycm9yQ2hlY2soY29uc3QgVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCkBAIC05OTEsMzAgKzEx
ODEsMTY2IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6c2luZ2xlRGVjbGFyYXRpb25FcnJvckNoZWNr
KGNvbnN0IFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLAogICAgIHsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KKyAgICBpZiAocHVibGljVHlwZS5xdWFsaWZpZXIgIT0gRXZxVW5pZm9ybSAmJgorICAg
ICAgICAhY2hlY2tJc05vdEltYWdlKGlkZW50aWZpZXJMb2NhdGlvbiwgcHVibGljVHlwZS50eXBl
U3BlY2lmaWVyTm9uQXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgImltYWdlcyBtdXN0
IGJlIHVuaWZvcm0iKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAo
KHB1YmxpY1R5cGUucXVhbGlmaWVyICE9IEV2cVRlbXBvcmFyeSAmJiBwdWJsaWNUeXBlLnF1YWxp
ZmllciAhPSBFdnFHbG9iYWwgJiYKKyAgICAgICAgIHB1YmxpY1R5cGUucXVhbGlmaWVyICE9IEV2
cUNvbnN0KSAmJgorICAgICAgICBwdWJsaWNUeXBlLmdldEJhc2ljVHlwZSgpID09IEVidFl1dkNz
Y1N0YW5kYXJkRVhUKQorICAgIHsKKyAgICAgICAgZXJyb3IoaWRlbnRpZmllckxvY2F0aW9uLCAi
Y2Fubm90IGJlIHVzZWQgd2l0aCBhIHl1dkNzY1N0YW5kYXJkRVhUIiwKKyAgICAgICAgICAgICAg
Z2V0UXVhbGlmaWVyU3RyaW5nKHB1YmxpY1R5cGUucXVhbGlmaWVyKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKICAgICAvLyBjaGVjayBmb3IgbGF5b3V0IHF1YWxpZmllciBpc3N1ZXMKICAg
ICBjb25zdCBUTGF5b3V0UXVhbGlmaWVyIGxheW91dFF1YWxpZmllciA9IHB1YmxpY1R5cGUubGF5
b3V0UXVhbGlmaWVyOwogCiAgICAgaWYgKGxheW91dFF1YWxpZmllci5tYXRyaXhQYWNraW5nICE9
IEVtcFVuc3BlY2lmaWVkKQogICAgIHsKLSAgICAgICAgZXJyb3IoaWRlbnRpZmllckxvY2F0aW9u
LCAibGF5b3V0IHF1YWxpZmllciIsCi0gICAgICAgICAgICAgIGdldE1hdHJpeFBhY2tpbmdTdHJp
bmcobGF5b3V0UXVhbGlmaWVyLm1hdHJpeFBhY2tpbmcpLAotICAgICAgICAgICAgICAib25seSB2
YWxpZCBmb3IgaW50ZXJmYWNlIGJsb2NrcyIpOworICAgICAgICBlcnJvcihpZGVudGlmaWVyTG9j
YXRpb24sICJsYXlvdXQgcXVhbGlmaWVyIG9ubHkgdmFsaWQgZm9yIGludGVyZmFjZSBibG9ja3Mi
LAorICAgICAgICAgICAgICBnZXRNYXRyaXhQYWNraW5nU3RyaW5nKGxheW91dFF1YWxpZmllci5t
YXRyaXhQYWNraW5nKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobGF5b3V0
UXVhbGlmaWVyLmJsb2NrU3RvcmFnZSAhPSBFYnNVbnNwZWNpZmllZCkKICAgICB7Ci0gICAgICAg
IGVycm9yKGlkZW50aWZpZXJMb2NhdGlvbiwgImxheW91dCBxdWFsaWZpZXIiLAotICAgICAgICAg
ICAgICBnZXRCbG9ja1N0b3JhZ2VTdHJpbmcobGF5b3V0UXVhbGlmaWVyLmJsb2NrU3RvcmFnZSks
Ci0gICAgICAgICAgICAgICJvbmx5IHZhbGlkIGZvciBpbnRlcmZhY2UgYmxvY2tzIik7CisgICAg
ICAgIGVycm9yKGlkZW50aWZpZXJMb2NhdGlvbiwgImxheW91dCBxdWFsaWZpZXIgb25seSB2YWxp
ZCBmb3IgaW50ZXJmYWNlIGJsb2NrcyIsCisgICAgICAgICAgICAgIGdldEJsb2NrU3RvcmFnZVN0
cmluZyhsYXlvdXRRdWFsaWZpZXIuYmxvY2tTdG9yYWdlKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpZiAocHVibGljVHlwZS5xdWFsaWZpZXIgIT0gRXZxVmVydGV4SW4gJiYgcHVi
bGljVHlwZS5xdWFsaWZpZXIgIT0gRXZxRnJhZ21lbnRPdXQpCisgICAgYm9vbCBjYW5IYXZlTG9j
YXRpb24gPQorICAgICAgICBwdWJsaWNUeXBlLnF1YWxpZmllciA9PSBFdnFWZXJ0ZXhJbiB8fCBw
dWJsaWNUeXBlLnF1YWxpZmllciA9PSBFdnFGcmFnbWVudE91dDsKKworICAgIGlmIChtU2hhZGVy
VmVyc2lvbiA+PSAzMTAgJiYgcHVibGljVHlwZS5xdWFsaWZpZXIgPT0gRXZxVW5pZm9ybSkKKyAg
ICB7CisgICAgICAgIGNhbkhhdmVMb2NhdGlvbiA9IHRydWU7CisKKyAgICAgICAgLy8gVmFsaWQg
dW5pZm9ybSBkZWNsYXJhdGlvbnMgY2FuJ3QgYmUgdW5zaXplZCBhcnJheXMgc2luY2UgdW5pZm9y
bXMgY2FuJ3QgYmUgaW5pdGlhbGl6ZWQuCisgICAgICAgIC8vIEJ1dCBpbnZhbGlkIHNoYWRlcnMg
bWF5IHN0aWxsIHJlYWNoIGhlcmUgd2l0aCBhbiB1bnNpemVkIGFycmF5IGRlY2xhcmF0aW9uLgor
ICAgICAgICBpZiAoIXB1YmxpY1R5cGUuaXNVbnNpemVkQXJyYXkoKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgVFR5cGUgdHlwZShwdWJsaWNUeXBlKTsKKyAgICAgICAgICAgIGNoZWNrVW5pZm9y
bUxvY2F0aW9uSW5SYW5nZShpZGVudGlmaWVyTG9jYXRpb24sIHR5cGUuZ2V0TG9jYXRpb25Db3Vu
dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpY1R5cGUu
bGF5b3V0UXVhbGlmaWVyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWNhbkhhdmVMb2Nh
dGlvbikKICAgICB7CiAgICAgICAgIGNoZWNrTG9jYXRpb25Jc05vdFNwZWNpZmllZChpZGVudGlm
aWVyTG9jYXRpb24sIHB1YmxpY1R5cGUubGF5b3V0UXVhbGlmaWVyKTsKICAgICB9CisKKyAgICBp
ZiAocHVibGljVHlwZS5xdWFsaWZpZXIgPT0gRXZxRnJhZ21lbnRPdXQpCisgICAgeworICAgICAg
ICBpZiAobGF5b3V0UXVhbGlmaWVyLmxvY2F0aW9uICE9IC0xICYmIGxheW91dFF1YWxpZmllci55
dXYgPT0gdHJ1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3IoaWRlbnRpZmllckxvY2F0
aW9uLCAiaW52YWxpZCBsYXlvdXQgcXVhbGlmaWVyIGNvbWJpbmF0aW9uIiwgInl1diIpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIGNoZWNrWXV2SXNOb3RTcGVjaWZpZWQoaWRlbnRpZmllckxvY2F0aW9uLCBsYXlvdXRRdWFs
aWZpZXIueXV2KTsKKyAgICB9CisKKyAgICBpZiAoSXNJbWFnZShwdWJsaWNUeXBlLmdldEJhc2lj
VHlwZSgpKSkKKyAgICB7CisKKyAgICAgICAgc3dpdGNoIChsYXlvdXRRdWFsaWZpZXIuaW1hZ2VJ
bnRlcm5hbEZvcm1hdCkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBFaWlmUkdCQTMyRjoK
KyAgICAgICAgICAgIGNhc2UgRWlpZlJHQkExNkY6CisgICAgICAgICAgICBjYXNlIEVpaWZSMzJG
OgorICAgICAgICAgICAgY2FzZSBFaWlmUkdCQTg6CisgICAgICAgICAgICBjYXNlIEVpaWZSR0JB
OF9TTk9STToKKyAgICAgICAgICAgICAgICBpZiAoIUlzRmxvYXRJbWFnZShwdWJsaWNUeXBlLmdl
dEJhc2ljVHlwZSgpKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGVy
cm9yKGlkZW50aWZpZXJMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImludGVy
bmFsIGltYWdlIGZvcm1hdCByZXF1aXJlcyBhIGZsb2F0aW5nIGltYWdlIHR5cGUiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBnZXRCYXNpY1N0cmluZyhwdWJsaWNUeXBlLmdldEJhc2ljVHlw
ZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVpaWZSR0JBMzJJOgorICAg
ICAgICAgICAgY2FzZSBFaWlmUkdCQTE2SToKKyAgICAgICAgICAgIGNhc2UgRWlpZlJHQkE4SToK
KyAgICAgICAgICAgIGNhc2UgRWlpZlIzMkk6CisgICAgICAgICAgICAgICAgaWYgKCFJc0ludGVn
ZXJJbWFnZShwdWJsaWNUeXBlLmdldEJhc2ljVHlwZSgpKSkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIGVycm9yKGlkZW50aWZpZXJMb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgImludGVybmFsIGltYWdlIGZvcm1hdCByZXF1aXJlcyBhbiBpbnRlZ2Vy
IGltYWdlIHR5cGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRCYXNpY1N0cmluZyhw
dWJsaWNUeXBlLmdldEJhc2ljVHlwZSgpKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIEVpaWZSR0JBMzJVSToKKyAgICAgICAgICAgIGNhc2UgRWlpZlJHQkExNlVJOgorICAgICAg
ICAgICAgY2FzZSBFaWlmUkdCQThVSToKKyAgICAgICAgICAgIGNhc2UgRWlpZlIzMlVJOgorICAg
ICAgICAgICAgICAgIGlmICghSXNVbnNpZ25lZEltYWdlKHB1YmxpY1R5cGUuZ2V0QmFzaWNUeXBl
KCkpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IoaWRlbnRp
ZmllckxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWwgaW1hZ2Ug
Zm9ybWF0IHJlcXVpcmVzIGFuIHVuc2lnbmVkIGltYWdlIHR5cGUiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZXRCYXNpY1N0cmluZyhwdWJsaWNUeXBlLmdldEJhc2ljVHlwZSgpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVpaWZVbnNwZWNpZmllZDoKKyAgICAgICAg
ICAgICAgICBlcnJvcihpZGVudGlmaWVyTG9jYXRpb24sICJsYXlvdXQgcXVhbGlmaWVyIiwgIk5v
IGltYWdlIGludGVybmFsIGZvcm1hdCBzcGVjaWZpZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGVycm9yKGlkZW50aWZp
ZXJMb2NhdGlvbiwgImxheW91dCBxdWFsaWZpZXIiLCAidW5yZWNvZ25pemVkIHRva2VuIik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gR0xTTCBFUyAz
LjEwIFJldmlzaW9uIDQsIDQuOSBNZW1vcnkgQWNjZXNzIFF1YWxpZmllcnMKKyAgICAgICAgc3dp
dGNoIChsYXlvdXRRdWFsaWZpZXIuaW1hZ2VJbnRlcm5hbEZvcm1hdCkKKyAgICAgICAgeworICAg
ICAgICAgICAgY2FzZSBFaWlmUjMyRjoKKyAgICAgICAgICAgIGNhc2UgRWlpZlIzMkk6CisgICAg
ICAgICAgICBjYXNlIEVpaWZSMzJVSToKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgaWYgKCFwdWJsaWNUeXBlLm1lbW9yeVF1YWxp
Zmllci5yZWFkb25seSAmJiAhcHVibGljVHlwZS5tZW1vcnlRdWFsaWZpZXIud3JpdGVvbmx5KQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IoaWRlbnRpZmllckxv
Y2F0aW9uLCAibGF5b3V0IHF1YWxpZmllciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJF
eGNlcHQgZm9yIGltYWdlcyB3aXRoIHRoZSByMzJmLCByMzJpIGFuZCByMzJ1aSBmb3JtYXQgcXVh
bGlmaWVycywgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1hZ2UgdmFyaWFibGVzIG11
c3QgYmUgcXVhbGlmaWVkIHJlYWRvbmx5IGFuZC9vciB3cml0ZW9ubHkiKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBjaGVja0ludGVy
bmFsRm9ybWF0SXNOb3RTcGVjaWZpZWQoaWRlbnRpZmllckxvY2F0aW9uLCBsYXlvdXRRdWFsaWZp
ZXIuaW1hZ2VJbnRlcm5hbEZvcm1hdCk7CisKKyAgICAgICAgY2hlY2tNZW1vcnlRdWFsaWZpZXJJ
c05vdFNwZWNpZmllZChwdWJsaWNUeXBlLm1lbW9yeVF1YWxpZmllciwgaWRlbnRpZmllckxvY2F0
aW9uKTsKKyAgICB9Cit9CisKK3ZvaWQgVFBhcnNlQ29udGV4dDo6Y2hlY2tCaW5kaW5nSXNWYWxp
ZChjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24sIGNvbnN0IFRUeXBlICZ0eXBl
KQoreworICAgIFRMYXlvdXRRdWFsaWZpZXIgbGF5b3V0UXVhbGlmaWVyID0gdHlwZS5nZXRMYXlv
dXRRdWFsaWZpZXIoKTsKKyAgICBpbnQgYXJyYXlTaXplICAgICAgICAgICAgICAgICAgICA9IHR5
cGUuaXNBcnJheSgpID8gdHlwZS5nZXRBcnJheVNpemUoKSA6IDE7CisgICAgaWYgKElzSW1hZ2Uo
dHlwZS5nZXRCYXNpY1R5cGUoKSkpCisgICAgeworICAgICAgICBjaGVja0ltYWdlQmluZGluZ0lz
VmFsaWQoaWRlbnRpZmllckxvY2F0aW9uLCBsYXlvdXRRdWFsaWZpZXIuYmluZGluZywgYXJyYXlT
aXplKTsKKyAgICB9CisgICAgZWxzZSBpZiAoSXNTYW1wbGVyKHR5cGUuZ2V0QmFzaWNUeXBlKCkp
KQorICAgIHsKKyAgICAgICAgY2hlY2tTYW1wbGVyQmluZGluZ0lzVmFsaWQoaWRlbnRpZmllckxv
Y2F0aW9uLCBsYXlvdXRRdWFsaWZpZXIuYmluZGluZywgYXJyYXlTaXplKTsKKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFJc09wYXF1ZVR5cGUodHlwZS5nZXRCYXNpY1R5
cGUoKSkpOworICAgICAgICBjaGVja0JpbmRpbmdJc05vdFNwZWNpZmllZChpZGVudGlmaWVyTG9j
YXRpb24sIGxheW91dFF1YWxpZmllci5iaW5kaW5nKTsKKyAgICB9CiB9CiAKIHZvaWQgVFBhcnNl
Q29udGV4dDo6Y2hlY2tMYXlvdXRRdWFsaWZpZXJTdXBwb3J0ZWQoY29uc3QgVFNvdXJjZUxvYyAm
bG9jYXRpb24sCkBAIC0xMDI0LDcgKzEzNTAsNyBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNr
TGF5b3V0UXVhbGlmaWVyU3VwcG9ydGVkKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLAogCiAg
ICAgaWYgKG1TaGFkZXJWZXJzaW9uIDwgdmVyc2lvblJlcXVpcmVkKQogICAgIHsKLSAgICAgICAg
ZXJyb3IobG9jYXRpb24sICJpbnZhbGlkIGxheW91dCBxdWFsaWZpZXI6IiwgbGF5b3V0UXVhbGlm
aWVyTmFtZS5jX3N0cigpLCAibm90IHN1cHBvcnRlZCIpOworICAgICAgICBlcnJvcihsb2NhdGlv
biwgImludmFsaWQgbGF5b3V0IHF1YWxpZmllcjogbm90IHN1cHBvcnRlZCIsIGxheW91dFF1YWxp
Zmllck5hbWUuY19zdHIoKSk7CiAgICAgfQogfQogCkBAIC0xMDM2LDggKzEzNjIsMTAgQEAgYm9v
bCBUUGFyc2VDb250ZXh0OjpjaGVja1dvcmtHcm91cFNpemVJc05vdFNwZWNpZmllZChjb25zdCBU
U291cmNlTG9jICZsb2NhdGlvbiwKICAgICB7CiAgICAgICAgIGlmIChsb2NhbFNpemVbaV0gIT0g
LTEpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiaW52YWxpZCBsYXlv
dXQgcXVhbGlmaWVyOiIsIGdldFdvcmtHcm91cFNpemVTdHJpbmcoaSksCi0gICAgICAgICAgICAg
ICAgICAib25seSB2YWxpZCB3aGVuIHVzZWQgd2l0aCAnaW4nIGluIGEgY29tcHV0ZSBzaGFkZXIg
Z2xvYmFsIGxheW91dCBkZWNsYXJhdGlvbiIpOworICAgICAgICAgICAgZXJyb3IobG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAiaW52YWxpZCBsYXlvdXQgcXVhbGlmaWVyOiBvbmx5IHZhbGlk
IHdoZW4gdXNlZCB3aXRoICdpbicgaW4gYSBjb21wdXRlIHNoYWRlciAiCisgICAgICAgICAgICAg
ICAgICAiZ2xvYmFsIGxheW91dCBkZWNsYXJhdGlvbiIsCisgICAgICAgICAgICAgICAgICBnZXRX
b3JrR3JvdXBTaXplU3RyaW5nKGkpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogICAgIH0KQEAgLTEwNDUsNiArMTM3Myw2NSBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNo
ZWNrV29ya0dyb3VwU2l6ZUlzTm90U3BlY2lmaWVkKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9u
LAogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNrSW50ZXJu
YWxGb3JtYXRJc05vdFNwZWNpZmllZChjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRMYXlvdXRJ
bWFnZUludGVybmFsRm9ybWF0IGludGVybmFsRm9ybWF0KQoreworICAgIGlmIChpbnRlcm5hbEZv
cm1hdCAhPSBFaWlmVW5zcGVjaWZpZWQpCisgICAgeworICAgICAgICBlcnJvcihsb2NhdGlvbiwg
ImludmFsaWQgbGF5b3V0IHF1YWxpZmllcjogb25seSB2YWxpZCB3aGVuIHVzZWQgd2l0aCBpbWFn
ZXMiLAorICAgICAgICAgICAgICBnZXRJbWFnZUludGVybmFsRm9ybWF0U3RyaW5nKGludGVybmFs
Rm9ybWF0KSk7CisgICAgfQorfQorCit2b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNrQmluZGluZ0lz
Tm90U3BlY2lmaWVkKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLCBpbnQgYmluZGluZykKK3sK
KyAgICBpZiAoYmluZGluZyAhPSAtMSkKKyAgICB7CisgICAgICAgIGVycm9yKGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAiaW52YWxpZCBsYXlvdXQgcXVhbGlmaWVyOiBvbmx5IHZhbGlkIHdoZW4g
dXNlZCB3aXRoIG9wYXF1ZSB0eXBlcyBvciBibG9ja3MiLAorICAgICAgICAgICAgICAiYmluZGlu
ZyIpOworICAgIH0KK30KKwordm9pZCBUUGFyc2VDb250ZXh0OjpjaGVja0ltYWdlQmluZGluZ0lz
VmFsaWQoY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sIGludCBiaW5kaW5nLCBpbnQgYXJyYXlT
aXplKQoreworICAgIC8vIEV4cGVjdHMgYXJyYXlTaXplIHRvIGJlIDEgd2hlbiBzZXR0aW5nIGJp
bmRpbmcgZm9yIG9ubHkgYSBzaW5nbGUgdmFyaWFibGUuCisgICAgaWYgKGJpbmRpbmcgPj0gMCAm
JiBiaW5kaW5nICsgYXJyYXlTaXplID4gbU1heEltYWdlVW5pdHMpCisgICAgeworICAgICAgICBl
cnJvcihsb2NhdGlvbiwgImltYWdlIGJpbmRpbmcgZ3JlYXRlciB0aGFuIGdsX01heEltYWdlVW5p
dHMiLCAiYmluZGluZyIpOworICAgIH0KK30KKwordm9pZCBUUGFyc2VDb250ZXh0OjpjaGVja1Nh
bXBsZXJCaW5kaW5nSXNWYWxpZChjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJpbmRpbmcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhcnJheVNpemUp
Cit7CisgICAgLy8gRXhwZWN0cyBhcnJheVNpemUgdG8gYmUgMSB3aGVuIHNldHRpbmcgYmluZGlu
ZyBmb3Igb25seSBhIHNpbmdsZSB2YXJpYWJsZS4KKyAgICBpZiAoYmluZGluZyA+PSAwICYmIGJp
bmRpbmcgKyBhcnJheVNpemUgPiBtTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cykKKyAgICB7
CisgICAgICAgIGVycm9yKGxvY2F0aW9uLCAic2FtcGxlciBiaW5kaW5nIGdyZWF0ZXIgdGhhbiBt
YXhpbXVtIHRleHR1cmUgdW5pdHMiLCAiYmluZGluZyIpOworICAgIH0KK30KKwordm9pZCBUUGFy
c2VDb250ZXh0OjpjaGVja1VuaWZvcm1Mb2NhdGlvbkluUmFuZ2UoY29uc3QgVFNvdXJjZUxvYyAm
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgb2JqZWN0TG9jYXRpb25Db3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRMYXlvdXRRdWFsaWZpZXIgJmxheW91dFF1YWxpZmll
cikKK3sKKyAgICBpbnQgbG9jID0gbGF5b3V0UXVhbGlmaWVyLmxvY2F0aW9uOworICAgIGlmIChs
b2MgPj0gMCAmJiBsb2MgKyBvYmplY3RMb2NhdGlvbkNvdW50ID4gbU1heFVuaWZvcm1Mb2NhdGlv
bnMpCisgICAgeworICAgICAgICBlcnJvcihsb2NhdGlvbiwgIlVuaWZvcm0gbG9jYXRpb24gb3V0
IG9mIHJhbmdlIiwgImxvY2F0aW9uIik7CisgICAgfQorfQorCit2b2lkIFRQYXJzZUNvbnRleHQ6
OmNoZWNrWXV2SXNOb3RTcGVjaWZpZWQoY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sIGJvb2wg
eXV2KQoreworICAgIGlmICh5dXYgIT0gZmFsc2UpCisgICAgeworICAgICAgICBlcnJvcihsb2Nh
dGlvbiwgImludmFsaWQgbGF5b3V0IHF1YWxpZmllcjogb25seSB2YWxpZCBvbiBwcm9ncmFtIG91
dHB1dHMiLCAieXV2Iik7CisgICAgfQorfQorCiB2b2lkIFRQYXJzZUNvbnRleHQ6OmZ1bmN0aW9u
Q2FsbExWYWx1ZUVycm9yQ2hlY2soY29uc3QgVEZ1bmN0aW9uICpmbkNhbmRpZGF0ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVn
YXRlICpmbkNhbGwpCiB7CkBAIC0xMDU3LDcgKzE0NDQsOCBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6
OmZ1bmN0aW9uQ2FsbExWYWx1ZUVycm9yQ2hlY2soY29uc3QgVEZ1bmN0aW9uICpmbkNhbmRpZGF0
ZSwKICAgICAgICAgICAgIGlmICghY2hlY2tDYW5CZUxWYWx1ZShhcmd1bWVudC0+Z2V0TGluZSgp
LCAiYXNzaWduIiwgYXJndW1lbnQpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGVy
cm9yKGFyZ3VtZW50LT5nZXRMaW5lKCksCi0gICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50
IHZhbHVlIGNhbm5vdCBiZSBwYXNzZWQgZm9yICdvdXQnIG9yICdpbm91dCcgcGFyYW1ldGVycy4i
LCAiRXJyb3IiKTsKKyAgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQgdmFsdWUgY2Fubm90
IGJlIHBhc3NlZCBmb3IgJ291dCcgb3IgJ2lub3V0JyBwYXJhbWV0ZXJzLiIsCisgICAgICAgICAg
ICAgICAgICAgICAgZm5DYWxsLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZSgpLmNf
c3RyKCkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpAQCAtMTIyNiw1MCArMTYxNCw0MyBAQCBUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OnBh
cnNlVmFyaWFibGVJZGVudGlmaWVyKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLAogewogICAg
IGNvbnN0IFRWYXJpYWJsZSAqdmFyaWFibGUgPSBnZXROYW1lZFZhcmlhYmxlKGxvY2F0aW9uLCBu
YW1lLCBzeW1ib2wpOwogCisgICAgaWYgKHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVy
KCkgPT0gRXZxVmlld0lET1ZSICYmIElzV2ViR0xCYXNlZFNwZWMobVNoYWRlclNwZWMpICYmCisg
ICAgICAgIG1TaGFkZXJUeXBlID09IEdMX0ZSQUdNRU5UX1NIQURFUiAmJiAhaXNFeHRlbnNpb25F
bmFibGVkKCJHTF9PVlJfbXVsdGl2aWV3MiIpKQorICAgIHsKKyAgICAgICAgLy8gV0VCR0xfbXVs
dGl2aWV3IHNwZWMKKyAgICAgICAgZXJyb3IobG9jYXRpb24sICJOZWVkIHRvIGVuYWJsZSBPVlJf
bXVsdGl2aWV3MiB0byB1c2UgZ2xfVmlld0lEX09WUiBpbiBmcmFnbWVudCBzaGFkZXIiLAorICAg
ICAgICAgICAgICAiZ2xfVmlld0lEX09WUiIpOworICAgIH0KKwogICAgIGlmICh2YXJpYWJsZS0+
Z2V0Q29uc3RQb2ludGVyKCkpCiAgICAgewogICAgICAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAq
Y29uc3RBcnJheSA9IHZhcmlhYmxlLT5nZXRDb25zdFBvaW50ZXIoKTsKICAgICAgICAgcmV0dXJu
IGludGVybWVkaWF0ZS5hZGRDb25zdGFudFVuaW9uKGNvbnN0QXJyYXksIHZhcmlhYmxlLT5nZXRU
eXBlKCksIGxvY2F0aW9uKTsKICAgICB9Ci0gICAgZWxzZQorICAgIGVsc2UgaWYgKHZhcmlhYmxl
LT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxV29ya0dyb3VwU2l6ZSAmJgorICAgICAg
ICAgICAgIG1Db21wdXRlU2hhZGVyTG9jYWxTaXplRGVjbGFyZWQpCiAgICAgewotICAgICAgICBy
ZXR1cm4gaW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwgdmFy
aWFibGUtPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyaWFibGUtPmdldFR5cGUoKSwgbG9jYXRpb24pOwotICAgIH0KLX0KKyAgICAgICAgLy8gZ2xf
V29ya0dyb3VwU2l6ZSBjYW4gYmUgdXNlZCB0byBzaXplIGFycmF5cyBhY2NvcmRpbmcgdG8gdGhl
IEVTU0wgMy4xMC40IHNwZWMsIHNvIGl0CisgICAgICAgIC8vIG5lZWRzIHRvIGJlIGFkZGVkIHRv
IHRoZSBBU1QgYXMgYSBjb25zdGFudCBhbmQgbm90IGFzIGEgc3ltYm9sLgorICAgICAgICBzaDo6
V29ya0dyb3VwU2l6ZSB3b3JrR3JvdXBTaXplID0gZ2V0Q29tcHV0ZVNoYWRlckxvY2FsU2l6ZSgp
OworICAgICAgICBUQ29uc3RhbnRVbmlvbiAqY29uc3RBcnJheSAgICAgID0gbmV3IFRDb25zdGFu
dFVuaW9uWzNdOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDM7ICsraSkKKyAgICAg
ICAgeworICAgICAgICAgICAgY29uc3RBcnJheVtpXS5zZXRVQ29uc3Qoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50Pih3b3JrR3JvdXBTaXplW2ldKSk7CisgICAgICAgIH0KIAotLy8KLS8vIExvb2sg
dXAgYSBmdW5jdGlvbiBuYW1lIGluIHRoZSBzeW1ib2wgdGFibGUsIGFuZCBtYWtlIHN1cmUgaXQg
aXMgYSBmdW5jdGlvbi4KLS8vCi0vLyBSZXR1cm4gdGhlIGZ1bmN0aW9uIHN5bWJvbCBpZiBmb3Vu
ZCwgb3RoZXJ3aXNlIDAuCi0vLwotY29uc3QgVEZ1bmN0aW9uICpUUGFyc2VDb250ZXh0OjpmaW5k
RnVuY3Rpb24oY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRGdW5jdGlvbiAqY2FsbCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnB1dFNoYWRlclZlcnNpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpidWlsdEluKQot
ewotICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8gY2hlY2sgd2hldGhlciB0
aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgotICAgIC8vIGhpZGRlbiBieSBhIHZhcmlhYmxlIG5h
bWUgb3Igc3RydWN0IHR5cGVuYW1lLgotICAgIC8vIElmIGEgZnVuY3Rpb24gaXMgZm91bmQsIGNo
ZWNrIGZvciBvbmUgd2l0aCBhIG1hdGNoaW5nIGFyZ3VtZW50IGxpc3QuCi0gICAgY29uc3QgVFN5
bWJvbCAqc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZChjYWxsLT5nZXROYW1lKCksIGlucHV0U2hh
ZGVyVmVyc2lvbiwgYnVpbHRJbik7Ci0gICAgaWYgKHN5bWJvbCA9PSAwIHx8IHN5bWJvbC0+aXNG
dW5jdGlvbigpKQotICAgIHsKLSAgICAgICAgc3ltYm9sID0gc3ltYm9sVGFibGUuZmluZChjYWxs
LT5nZXRNYW5nbGVkTmFtZSgpLCBpbnB1dFNoYWRlclZlcnNpb24sIGJ1aWx0SW4pOwotICAgIH0K
KyAgICAgICAgQVNTRVJUKHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0
VUludCk7CisgICAgICAgIEFTU0VSVCh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUo
KSA9PSAzKTsKIAotICAgIGlmIChzeW1ib2wgPT0gMCkKLSAgICB7Ci0gICAgICAgIGVycm9yKGxp
bmUsICJubyBtYXRjaGluZyBvdmVybG9hZGVkIGZ1bmN0aW9uIGZvdW5kIiwgY2FsbC0+Z2V0TmFt
ZSgpLmNfc3RyKCkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgVFR5cGUgdHlwZSh2YXJp
YWJsZS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgdHlwZS5zZXRRdWFsaWZpZXIoRXZxQ29uc3QpOwor
ICAgICAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24oY29uc3RBcnJheSwg
dHlwZSwgbG9jYXRpb24pOwogICAgIH0KLQotICAgIGlmICghc3ltYm9sLT5pc0Z1bmN0aW9uKCkp
CisgICAgZWxzZQogICAgIHsKLSAgICAgICAgZXJyb3IobGluZSwgImZ1bmN0aW9uIG5hbWUgZXhw
ZWN0ZWQiLCBjYWxsLT5nZXROYW1lKCkuY19zdHIoKSk7Ci0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQo
KSwgdmFyaWFibGUtPmdldE5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyaWFibGUtPmdldFR5cGUoKSwgbG9jYXRpb24pOwogICAgIH0KLQotICAgIHJldHVy
biBzdGF0aWNfY2FzdDxjb25zdCBURnVuY3Rpb24gKj4oc3ltYm9sKTsKIH0KIAogLy8KQEAgLTEy
ODIsMTUgKzE2NjMsMjYgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6ZXIo
Y29uc3QgVFNvdXJjZUxvYyAmbGluZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUUHVibGljVHlwZSAmcFR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmluaXRpYWxpemVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKippbnRlcm1O
b2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUJpbmFy
eSAqKmluaXROb2RlKQogewotICAgIEFTU0VSVChpbnRlcm1Ob2RlICE9IG51bGxwdHIpOworICAg
IEFTU0VSVChpbml0Tm9kZSAhPSBudWxscHRyKTsKKyAgICBBU1NFUlQoKmluaXROb2RlID09IG51
bGxwdHIpOwogICAgIFRUeXBlIHR5cGUgPSBUVHlwZShwVHlwZSk7CiAKICAgICBUVmFyaWFibGUg
KnZhcmlhYmxlID0gbnVsbHB0cjsKICAgICBpZiAodHlwZS5pc1Vuc2l6ZWRBcnJheSgpKQogICAg
IHsKLSAgICAgICAgdHlwZS5zZXRBcnJheVNpemUoaW5pdGlhbGl6ZXItPmdldEFycmF5U2l6ZSgp
KTsKKyAgICAgICAgLy8gV2UgaGF2ZSBub3QgY2hlY2tlZCB5ZXQgd2hldGhlciB0aGUgaW5pdGlh
bGl6ZXIgYWN0dWFsbHkgaXMgYW4gYXJyYXkgb3Igbm90LgorICAgICAgICBpZiAoaW5pdGlhbGl6
ZXItPmlzQXJyYXkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgdHlwZS5zZXRBcnJheVNpemUo
aW5pdGlhbGl6ZXItPmdldEFycmF5U2l6ZSgpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIC8vIEhhdmluZyBhIG5vbi1hcnJheSBpbml0aWFsaXplciBm
b3IgYW4gdW5zaXplZCBhcnJheSB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvciBsYXRlciwKKyAgICAg
ICAgICAgIC8vIHNvIHdlIGRvbid0IGdlbmVyYXRlIGFuIGVycm9yIG1lc3NhZ2UgaGVyZS4KKyAg
ICAgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKDF1KTsKKyAgICAgICAgfQogICAgIH0KICAgICBp
ZiAoIWRlY2xhcmVWYXJpYWJsZShsaW5lLCBpZGVudGlmaWVyLCB0eXBlLCAmdmFyaWFibGUpKQog
ICAgIHsKQEAgLTEzMzMsMTAgKzE3MjUsMTEgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpleGVjdXRl
SW5pdGlhbGl6ZXIoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKICAgICB7CiAgICAgICAgIGlmIChx
dWFsaWZpZXIgIT0gaW5pdGlhbGl6ZXItPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSkKICAgICAg
ICAgewotICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAg
ICAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICInIiA8PCB2YXJpYWJsZS0+Z2V0VHlwZSgpLmdl
dENvbXBsZXRlU3RyaW5nKCkgPDwgIiciOwotICAgICAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJ
bmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICAgICAgZXJyb3IobGluZSwgIiBh
c3NpZ25pbmcgbm9uLWNvbnN0YW50IHRvIiwgIj0iLCBleHRyYUluZm8uY19zdHIoKSk7CisgICAg
ICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSByZWFzb25TdHJlYW07CisgICAgICAgICAgICByZWFz
b25TdHJlYW0gPDwgImFzc2lnbmluZyBub24tY29uc3RhbnQgdG8gJyIgPDwgdmFyaWFibGUtPmdl
dFR5cGUoKS5nZXRDb21wbGV0ZVN0cmluZygpCisgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
IiciOworICAgICAgICAgICAgc3RkOjpzdHJpbmcgcmVhc29uID0gcmVhc29uU3RyZWFtLnN0cigp
OworICAgICAgICAgICAgZXJyb3IobGluZSwgcmVhc29uLmNfc3RyKCksICI9Iik7CiAgICAgICAg
ICAgICB2YXJpYWJsZS0+Z2V0VHlwZSgpLnNldFF1YWxpZmllcihFdnFUZW1wb3JhcnkpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTEzNTYsNyArMTc0OSw3IEBAIGJv
b2wgVFBhcnNlQ29udGV4dDo6ZXhlY3V0ZUluaXRpYWxpemVyKGNvbnN0IFRTb3VyY2VMb2MgJmxp
bmUsCiAgICAgICAgIGlmIChpbml0aWFsaXplci0+Z2V0QXNDb25zdGFudFVuaW9uKCkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHZhcmlhYmxlLT5zaGFyZUNvbnN0UG9pbnRlcihpbml0aWFsaXpl
ci0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldFVuaW9uQXJyYXlQb2ludGVyKCkpOwotICAgICAg
ICAgICAgKmludGVybU5vZGUgPSBudWxscHRyOworICAgICAgICAgICAgKmluaXROb2RlID0gbnVs
bHB0cjsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBlbHNl
IGlmIChpbml0aWFsaXplci0+Z2V0QXNTeW1ib2xOb2RlKCkpCkBAIC0xMzY5LDcgKzE3NjIsNyBA
QCBib29sIFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihjb25zdCBUU291cmNlTG9j
ICZsaW5lLAogICAgICAgICAgICAgaWYgKGNvbnN0QXJyYXkpCiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgdmFyaWFibGUtPnNoYXJlQ29uc3RQb2ludGVyKGNvbnN0QXJyYXkpOwotICAg
ICAgICAgICAgICAgICppbnRlcm1Ob2RlID0gbnVsbHB0cjsKKyAgICAgICAgICAgICAgICAqaW5p
dE5vZGUgPSBudWxscHRyOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQpAQCAtMTM3Nyw4ICsxNzcwLDggQEAgYm9vbCBUUGFyc2VDb250ZXh0
OjpleGVjdXRlSW5pdGlhbGl6ZXIoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKIAogICAgIFRJbnRl
cm1TeW1ib2wgKmludGVybVN5bWJvbCA9IGludGVybWVkaWF0ZS5hZGRTeW1ib2woCiAgICAgICAg
IHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLCB2YXJpYWJsZS0+
Z2V0VHlwZSgpLCBsaW5lKTsKLSAgICAqaW50ZXJtTm9kZSA9IGNyZWF0ZUFzc2lnbihFT3BJbml0
aWFsaXplLCBpbnRlcm1TeW1ib2wsIGluaXRpYWxpemVyLCBsaW5lKTsKLSAgICBpZiAoKmludGVy
bU5vZGUgPT0gbnVsbHB0cikKKyAgICAqaW5pdE5vZGUgPSBjcmVhdGVBc3NpZ24oRU9wSW5pdGlh
bGl6ZSwgaW50ZXJtU3ltYm9sLCBpbml0aWFsaXplciwgbGluZSk7CisgICAgaWYgKCppbml0Tm9k
ZSA9PSBudWxscHRyKQogICAgIHsKICAgICAgICAgYXNzaWduRXJyb3IobGluZSwgIj0iLCBpbnRl
cm1TeW1ib2wtPmdldENvbXBsZXRlU3RyaW5nKCksIGluaXRpYWxpemVyLT5nZXRDb21wbGV0ZVN0
cmluZygpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMzg3LDE1ICsxNzgwLDI4IEBAIGJv
b2wgVFBhcnNlQ29udGV4dDo6ZXhlY3V0ZUluaXRpYWxpemVyKGNvbnN0IFRTb3VyY2VMb2MgJmxp
bmUsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFRQYXJzZUNvbnRleHQ6OmFkZEZ1bGx5
U3BlY2lmaWVkVHlwZShUUHVibGljVHlwZSAqdHlwZVNwZWNpZmllcikKK3sKKyAgICBjaGVja1By
ZWNpc2lvblNwZWNpZmllZCh0eXBlU3BlY2lmaWVyLT5nZXRMaW5lKCksIHR5cGVTcGVjaWZpZXIt
PnByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlU3BlY2lmaWVyLT5n
ZXRCYXNpY1R5cGUoKSk7CisKKyAgICBpZiAobVNoYWRlclZlcnNpb24gPCAzMDAgJiYgdHlwZVNw
ZWNpZmllci0+YXJyYXkpCisgICAgeworICAgICAgICBlcnJvcih0eXBlU3BlY2lmaWVyLT5nZXRM
aW5lKCksICJub3Qgc3VwcG9ydGVkIiwgImZpcnN0LWNsYXNzIGFycmF5Iik7CisgICAgICAgIHR5
cGVTcGVjaWZpZXItPmNsZWFyQXJyYXluZXNzKCk7CisgICAgfQorfQorCiBUUHVibGljVHlwZSBU
UGFyc2VDb250ZXh0OjphZGRGdWxseVNwZWNpZmllZFR5cGUoY29uc3QgVFR5cGVRdWFsaWZpZXJC
dWlsZGVyICZ0eXBlUXVhbGlmaWVyQnVpbGRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUUHVibGljVHlwZSAmdHlwZVNwZWNpZmllcikK
IHsKLSAgICBUVHlwZVF1YWxpZmllciB0eXBlUXVhbGlmaWVyID0gdHlwZVF1YWxpZmllckJ1aWxk
ZXIuZ2V0VmFyaWFibGVUeXBlUXVhbGlmaWVyKCZtRGlhZ25vc3RpY3MpOworICAgIFRUeXBlUXVh
bGlmaWVyIHR5cGVRdWFsaWZpZXIgPSB0eXBlUXVhbGlmaWVyQnVpbGRlci5nZXRWYXJpYWJsZVR5
cGVRdWFsaWZpZXIobURpYWdub3N0aWNzKTsKIAogICAgIFRQdWJsaWNUeXBlIHJldHVyblR5cGUg
ICAgID0gdHlwZVNwZWNpZmllcjsKICAgICByZXR1cm5UeXBlLnF1YWxpZmllciAgICAgICA9IHR5
cGVRdWFsaWZpZXIucXVhbGlmaWVyOwogICAgIHJldHVyblR5cGUuaW52YXJpYW50ICAgICAgID0g
dHlwZVF1YWxpZmllci5pbnZhcmlhbnQ7CiAgICAgcmV0dXJuVHlwZS5sYXlvdXRRdWFsaWZpZXIg
PSB0eXBlUXVhbGlmaWVyLmxheW91dFF1YWxpZmllcjsKKyAgICByZXR1cm5UeXBlLm1lbW9yeVF1
YWxpZmllciA9IHR5cGVRdWFsaWZpZXIubWVtb3J5UXVhbGlmaWVyOwogICAgIHJldHVyblR5cGUu
cHJlY2lzaW9uICAgICAgID0gdHlwZVNwZWNpZmllci5wcmVjaXNpb247CiAKICAgICBpZiAodHlw
ZVF1YWxpZmllci5wcmVjaXNpb24gIT0gRWJwVW5kZWZpbmVkKQpAQCAtMTUyNyw5ICsxOTMzLDUx
IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6Y2hlY2tJbnB1dE91dHB1dFR5cGVJc1ZhbGlkRVMzKGNv
bnN0IFRRdWFsaWZpZXIgcXVhbGlmaWVyLAogICAgIH0KIH0KIAotVEludGVybUFnZ3JlZ2F0ZSAq
VFBhcnNlQ29udGV4dDo6cGFyc2VTaW5nbGVEZWNsYXJhdGlvbihUUHVibGljVHlwZSAmcHVibGlj
VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllck9yVHlwZUxvY2F0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
U3RyaW5nICZpZGVudGlmaWVyKQordm9pZCBUUGFyc2VDb250ZXh0OjpjaGVja0xvY2FsVmFyaWFi
bGVDb25zdFN0b3JhZ2VRdWFsaWZpZXIoY29uc3QgVFF1YWxpZmllcldyYXBwZXJCYXNlICZxdWFs
aWZpZXIpCit7CisgICAgaWYgKHF1YWxpZmllci5nZXRUeXBlKCkgPT0gUXRTdG9yYWdlKQorICAg
IHsKKyAgICAgICAgY29uc3QgVFN0b3JhZ2VRdWFsaWZpZXJXcmFwcGVyICZzdG9yYWdlUXVhbGlm
aWVyID0KKyAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFRTdG9yYWdlUXVhbGlmaWVyV3Jh
cHBlciAmPihxdWFsaWZpZXIpOworICAgICAgICBpZiAoIWRlY2xhcmluZ0Z1bmN0aW9uKCkgJiYg
c3RvcmFnZVF1YWxpZmllci5nZXRRdWFsaWZpZXIoKSAhPSBFdnFDb25zdCAmJgorICAgICAgICAg
ICAgIXN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSkKKyAgICAgICAgeworICAgICAgICAgICAg
ZXJyb3Ioc3RvcmFnZVF1YWxpZmllci5nZXRMaW5lKCksCisgICAgICAgICAgICAgICAgICAiTG9j
YWwgdmFyaWFibGVzIGNhbiBvbmx5IHVzZSB0aGUgY29uc3Qgc3RvcmFnZSBxdWFsaWZpZXIuIiwK
KyAgICAgICAgICAgICAgICAgIHN0b3JhZ2VRdWFsaWZpZXIuZ2V0UXVhbGlmaWVyU3RyaW5nKCku
Y19zdHIoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgVFBhcnNlQ29udGV4dDo6Y2hl
Y2tNZW1vcnlRdWFsaWZpZXJJc05vdFNwZWNpZmllZChjb25zdCBUTWVtb3J5UXVhbGlmaWVyICZt
ZW1vcnlRdWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24pCit7CisgICAgaWYgKG1l
bW9yeVF1YWxpZmllci5yZWFkb25seSkKKyAgICB7CisgICAgICAgIGVycm9yKGxvY2F0aW9uLCAi
T25seSBhbGxvd2VkIHdpdGggaW1hZ2VzLiIsICJyZWFkb25seSIpOworICAgIH0KKyAgICBpZiAo
bWVtb3J5UXVhbGlmaWVyLndyaXRlb25seSkKKyAgICB7CisgICAgICAgIGVycm9yKGxvY2F0aW9u
LCAiT25seSBhbGxvd2VkIHdpdGggaW1hZ2VzLiIsICJ3cml0ZW9ubHkiKTsKKyAgICB9CisgICAg
aWYgKG1lbW9yeVF1YWxpZmllci5jb2hlcmVudCkKKyAgICB7CisgICAgICAgIGVycm9yKGxvY2F0
aW9uLCAiT25seSBhbGxvd2VkIHdpdGggaW1hZ2VzLiIsICJjb2hlcmVudCIpOworICAgIH0KKyAg
ICBpZiAobWVtb3J5UXVhbGlmaWVyLnJlc3RyaWN0UXVhbGlmaWVyKQorICAgIHsKKyAgICAgICAg
ZXJyb3IobG9jYXRpb24sICJPbmx5IGFsbG93ZWQgd2l0aCBpbWFnZXMuIiwgInJlc3RyaWN0Iik7
CisgICAgfQorICAgIGlmIChtZW1vcnlRdWFsaWZpZXIudm9sYXRpbGVRdWFsaWZpZXIpCisgICAg
eworICAgICAgICBlcnJvcihsb2NhdGlvbiwgIk9ubHkgYWxsb3dlZCB3aXRoIGltYWdlcy4iLCAi
dm9sYXRpbGUiKTsKKyAgICB9Cit9CisKK1RJbnRlcm1EZWNsYXJhdGlvbiAqVFBhcnNlQ29udGV4
dDo6cGFyc2VTaW5nbGVEZWNsYXJhdGlvbigKKyAgICBUUHVibGljVHlwZSAmcHVibGljVHlwZSwK
KyAgICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyT3JUeXBlTG9jYXRpb24sCisgICAgY29u
c3QgVFN0cmluZyAmaWRlbnRpZmllcikKIHsKICAgICBUVHlwZSB0eXBlKHB1YmxpY1R5cGUpOwog
ICAgIGlmICgobUNvbXBpbGVPcHRpb25zICYgU0hfRkxBVFRFTl9QUkFHTUFfU1RER0xfSU5WQVJJ
QU5UX0FMTCkgJiYKQEAgLTE1NjUsMTUgKzIwMTMsMTIgQEAgVEludGVybUFnZ3JlZ2F0ZSAqVFBh
cnNlQ29udGV4dDo6cGFyc2VTaW5nbGVEZWNsYXJhdGlvbihUUHVibGljVHlwZSAmcHVibGljVHlw
ZSwKIAogICAgIG1EZWZlcnJlZFNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayA9IGVtcHR5RGVj
bGFyYXRpb247CiAKKyAgICBUSW50ZXJtRGVjbGFyYXRpb24gKmRlY2xhcmF0aW9uID0gbmV3IFRJ
bnRlcm1EZWNsYXJhdGlvbigpOworICAgIGRlY2xhcmF0aW9uLT5zZXRMaW5lKGlkZW50aWZpZXJP
clR5cGVMb2NhdGlvbik7CisKICAgICBpZiAoZW1wdHlEZWNsYXJhdGlvbikKICAgICB7Ci0gICAg
ICAgIGlmIChwdWJsaWNUeXBlLmlzVW5zaXplZEFycmF5KCkpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIC8vIEVTU0wzIHNwZWMgc2VjdGlvbiA0LjEuOTogQXJyYXkgZGVjbGFyYXRpb24gd2hpY2gg
bGVhdmVzIHRoZSBzaXplIHVuc3BlY2lmaWVkIGlzIGFuCi0gICAgICAgICAgICAvLyBlcnJvci4g
SXQgaXMgYXNzdW1lZCB0aGF0IHRoaXMgYXBwbGllcyB0byBlbXB0eSBkZWNsYXJhdGlvbnMgYXMg
d2VsbC4KLSAgICAgICAgICAgIGVycm9yKGlkZW50aWZpZXJPclR5cGVMb2NhdGlvbiwgImVtcHR5
IGFycmF5IGRlY2xhcmF0aW9uIG5lZWRzIHRvIHNwZWNpZnkgYSBzaXplIiwKLSAgICAgICAgICAg
ICAgICAgIGlkZW50aWZpZXIuY19zdHIoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgZW1wdHlEZWNs
YXJhdGlvbkVycm9yQ2hlY2socHVibGljVHlwZSwgaWRlbnRpZmllck9yVHlwZUxvY2F0aW9uKTsK
ICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTE1ODUsMTcgKzIwMzAsMjMgQEAgVEludGVybUFn
Z3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VTaW5nbGVEZWNsYXJhdGlvbihUUHVibGljVHlw
ZSAmcHVibGljVHlwZSwKICAgICAgICAgZGVjbGFyZVZhcmlhYmxlKGlkZW50aWZpZXJPclR5cGVM
b2NhdGlvbiwgaWRlbnRpZmllciwgdHlwZSwgJnZhcmlhYmxlKTsKIAogICAgICAgICBpZiAodmFy
aWFibGUgJiYgc3ltYm9sKQorICAgICAgICB7CiAgICAgICAgICAgICBzeW1ib2wtPnNldElkKHZh
cmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBU
SW50ZXJtZWRpYXRlOjpNYWtlQWdncmVnYXRlKHN5bWJvbCwgaWRlbnRpZmllck9yVHlwZUxvY2F0
aW9uKTsKKyAgICAvLyBXZSBhcHBlbmQgdGhlIHN5bWJvbCBldmVuIGlmIHRoZSBkZWNsYXJhdGlv
biBpcyBlbXB0eSwgbWFpbmx5IGJlY2F1c2Ugb2Ygc3RydWN0IGRlY2xhcmF0aW9ucworICAgIC8v
IHRoYXQgbWF5IGp1c3QgZGVjbGFyZSBhIHR5cGUuCisgICAgZGVjbGFyYXRpb24tPmFwcGVuZERl
Y2xhcmF0b3Ioc3ltYm9sKTsKKworICAgIHJldHVybiBkZWNsYXJhdGlvbjsKIH0KIAotVEludGVy
bUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VTaW5nbGVBcnJheURlY2xhcmF0aW9uKFRQ
dWJsaWNUeXBlICZwdWJsaWNUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJM
b2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3Vy
Y2VMb2MgJmluZGV4TG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbmRleEV4cHJlc3Npb24p
CitUSW50ZXJtRGVjbGFyYXRpb24gKlRQYXJzZUNvbnRleHQ6OnBhcnNlU2luZ2xlQXJyYXlEZWNs
YXJhdGlvbihUUHVibGljVHlwZSAmcHVibGljVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2Mg
JmlkZW50aWZpZXJMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUU291cmNlTG9jICZpbmRleExvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVk
ICppbmRleEV4cHJlc3Npb24pCiB7CiAgICAgbURlZmVycmVkU2luZ2xlRGVjbGFyYXRpb25FcnJv
ckNoZWNrID0gZmFsc2U7CiAKQEAgLTE2MTUsMzggKzIwNjYsNDQgQEAgVEludGVybUFnZ3JlZ2F0
ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VTaW5nbGVBcnJheURlY2xhcmF0aW9uKFRQdWJsaWNUeXBl
ICZwdWJsaWMKICAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbnVsbHB0cjsKICAgICBkZWNsYXJl
VmFyaWFibGUoaWRlbnRpZmllckxvY2F0aW9uLCBpZGVudGlmaWVyLCBhcnJheVR5cGUsICZ2YXJp
YWJsZSk7CiAKKyAgICBUSW50ZXJtRGVjbGFyYXRpb24gKmRlY2xhcmF0aW9uID0gbmV3IFRJbnRl
cm1EZWNsYXJhdGlvbigpOworICAgIGRlY2xhcmF0aW9uLT5zZXRMaW5lKGlkZW50aWZpZXJMb2Nh
dGlvbik7CisKICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSBpbnRlcm1lZGlhdGUuYWRkU3lt
Ym9sKDAsIGlkZW50aWZpZXIsIGFycmF5VHlwZSwgaWRlbnRpZmllckxvY2F0aW9uKTsKICAgICBp
ZiAodmFyaWFibGUgJiYgc3ltYm9sKQorICAgIHsKICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJp
YWJsZS0+Z2V0VW5pcXVlSWQoKSk7CisgICAgICAgIGRlY2xhcmF0aW9uLT5hcHBlbmREZWNsYXJh
dG9yKHN5bWJvbCk7CisgICAgfQogCi0gICAgcmV0dXJuIFRJbnRlcm1lZGlhdGU6Ok1ha2VBZ2dy
ZWdhdGUoc3ltYm9sLCBpZGVudGlmaWVyTG9jYXRpb24pOworICAgIHJldHVybiBkZWNsYXJhdGlv
bjsKIH0KIAotVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VTaW5nbGVJbml0
RGVjbGFyYXRpb24oY29uc3QgVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291
cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5pdExvY2F0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpp
bml0aWFsaXplcikKK1RJbnRlcm1EZWNsYXJhdGlvbiAqVFBhcnNlQ29udGV4dDo6cGFyc2VTaW5n
bGVJbml0RGVjbGFyYXRpb24oY29uc3QgVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAm
aWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5pdExvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
SW50ZXJtVHlwZWQgKmluaXRpYWxpemVyKQogewogICAgIG1EZWZlcnJlZFNpbmdsZURlY2xhcmF0
aW9uRXJyb3JDaGVjayA9IGZhbHNlOwogCiAgICAgc2luZ2xlRGVjbGFyYXRpb25FcnJvckNoZWNr
KHB1YmxpY1R5cGUsIGlkZW50aWZpZXJMb2NhdGlvbik7CiAKLSAgICBUSW50ZXJtTm9kZSAqaW50
ZXJtTm9kZSA9IG51bGxwdHI7Ci0gICAgaWYgKCFleGVjdXRlSW5pdGlhbGl6ZXIoaWRlbnRpZmll
ckxvY2F0aW9uLCBpZGVudGlmaWVyLCBwdWJsaWNUeXBlLCBpbml0aWFsaXplciwgJmludGVybU5v
ZGUpKQotICAgIHsKLSAgICAgICAgLy8KLSAgICAgICAgLy8gQnVpbGQgaW50ZXJtZWRpYXRlIHJl
cHJlc2VudGF0aW9uCi0gICAgICAgIC8vCi0gICAgICAgIHJldHVybiBpbnRlcm1Ob2RlID8gVElu
dGVybWVkaWF0ZTo6TWFrZUFnZ3JlZ2F0ZShpbnRlcm1Ob2RlLCBpbml0TG9jYXRpb24pIDogbnVs
bHB0cjsKLSAgICB9Ci0gICAgZWxzZQorICAgIFRJbnRlcm1EZWNsYXJhdGlvbiAqZGVjbGFyYXRp
b24gPSBuZXcgVEludGVybURlY2xhcmF0aW9uKCk7CisgICAgZGVjbGFyYXRpb24tPnNldExpbmUo
aWRlbnRpZmllckxvY2F0aW9uKTsKKworICAgIFRJbnRlcm1CaW5hcnkgKmluaXROb2RlID0gbnVs
bHB0cjsKKyAgICBpZiAoIWV4ZWN1dGVJbml0aWFsaXplcihpZGVudGlmaWVyTG9jYXRpb24sIGlk
ZW50aWZpZXIsIHB1YmxpY1R5cGUsIGluaXRpYWxpemVyLCAmaW5pdE5vZGUpKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIGlmIChpbml0Tm9kZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgZGVjbGFyYXRpb24tPmFwcGVuZERlY2xhcmF0b3IoaW5pdE5vZGUpOworICAg
ICAgICB9CiAgICAgfQorICAgIHJldHVybiBkZWNsYXJhdGlvbjsKIH0KIAotVEludGVybUFnZ3Jl
Z2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VTaW5nbGVBcnJheUluaXREZWNsYXJhdGlvbigKK1RJ
bnRlcm1EZWNsYXJhdGlvbiAqVFBhcnNlQ29udGV4dDo6cGFyc2VTaW5nbGVBcnJheUluaXREZWNs
YXJhdGlvbigKICAgICBUUHVibGljVHlwZSAmcHVibGljVHlwZSwKICAgICBjb25zdCBUU291cmNl
TG9jICZpZGVudGlmaWVyTG9jYXRpb24sCiAgICAgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwK
QEAgLTE2NzQsMjUgKzIxMzEsMjkgQEAgVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6
cGFyc2VTaW5nbGVBcnJheUluaXREZWNsYXJhdGlvbigKICAgICAvLyBUaGlzIGVuc3VyZXMgdXNl
bGVzcyBlcnJvciBtZXNzYWdlcyByZWdhcmRpbmcgdGhlIHZhcmlhYmxlJ3Mgbm9uLWFycmF5bmVz
cyB3b24ndCBmb2xsb3cuCiAgICAgYXJyYXlUeXBlLnNldEFycmF5U2l6ZShzaXplKTsKIAorICAg
IFRJbnRlcm1EZWNsYXJhdGlvbiAqZGVjbGFyYXRpb24gPSBuZXcgVEludGVybURlY2xhcmF0aW9u
KCk7CisgICAgZGVjbGFyYXRpb24tPnNldExpbmUoaWRlbnRpZmllckxvY2F0aW9uKTsKKwogICAg
IC8vIGluaXROb2RlIHdpbGwgY29ycmVzcG9uZCB0byB0aGUgd2hvbGUgb2YgInR5cGUgYltuXSA9
IGluaXRpYWxpemVyIi4KLSAgICBUSW50ZXJtTm9kZSAqaW5pdE5vZGUgPSBudWxscHRyOworICAg
IFRJbnRlcm1CaW5hcnkgKmluaXROb2RlID0gbnVsbHB0cjsKICAgICBpZiAoIWV4ZWN1dGVJbml0
aWFsaXplcihpZGVudGlmaWVyTG9jYXRpb24sIGlkZW50aWZpZXIsIGFycmF5VHlwZSwgaW5pdGlh
bGl6ZXIsICZpbml0Tm9kZSkpCiAgICAgewotICAgICAgICByZXR1cm4gaW5pdE5vZGUgPyBUSW50
ZXJtZWRpYXRlOjpNYWtlQWdncmVnYXRlKGluaXROb2RlLCBpbml0TG9jYXRpb24pIDogbnVsbHB0
cjsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAg
ICAgIGlmIChpbml0Tm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgZGVjbGFyYXRpb24tPmFw
cGVuZERlY2xhcmF0b3IoaW5pdE5vZGUpOworICAgICAgICB9CiAgICAgfQorCisgICAgcmV0dXJu
IGRlY2xhcmF0aW9uOwogfQogCi1USW50ZXJtQWdncmVnYXRlICpUUGFyc2VDb250ZXh0OjpwYXJz
ZUludmFyaWFudERlY2xhcmF0aW9uKAorVEludGVybUludmFyaWFudERlY2xhcmF0aW9uICpUUGFy
c2VDb250ZXh0OjpwYXJzZUludmFyaWFudERlY2xhcmF0aW9uKAogICAgIGNvbnN0IFRUeXBlUXVh
bGlmaWVyQnVpbGRlciAmdHlwZVF1YWxpZmllckJ1aWxkZXIsCiAgICAgY29uc3QgVFNvdXJjZUxv
YyAmaWRlbnRpZmllckxvYywKICAgICBjb25zdCBUU3RyaW5nICppZGVudGlmaWVyLAogICAgIGNv
bnN0IFRTeW1ib2wgKnN5bWJvbCkKIHsKLSAgICBUVHlwZVF1YWxpZmllciB0eXBlUXVhbGlmaWVy
ID0gdHlwZVF1YWxpZmllckJ1aWxkZXIuZ2V0VmFyaWFibGVUeXBlUXVhbGlmaWVyKCZtRGlhZ25v
c3RpY3MpOworICAgIFRUeXBlUXVhbGlmaWVyIHR5cGVRdWFsaWZpZXIgPSB0eXBlUXVhbGlmaWVy
QnVpbGRlci5nZXRWYXJpYWJsZVR5cGVRdWFsaWZpZXIobURpYWdub3N0aWNzKTsKIAogICAgIGlm
ICghdHlwZVF1YWxpZmllci5pbnZhcmlhbnQpCiAgICAgewpAQCAtMTcyOSwyMSArMjE5MCwyMCBA
QCBUSW50ZXJtQWdncmVnYXRlICpUUGFyc2VDb250ZXh0OjpwYXJzZUludmFyaWFudERlY2xhcmF0
aW9uKAogCiAgICAgY2hlY2tJbnZhcmlhbnRWYXJpYWJsZVF1YWxpZmllcih0eXBlUXVhbGlmaWVy
LmludmFyaWFudCwgdHlwZS5nZXRRdWFsaWZpZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHR5cGVRdWFsaWZpZXIubGluZSk7CisgICAgY2hlY2tNZW1vcnlRdWFsaWZp
ZXJJc05vdFNwZWNpZmllZCh0eXBlUXVhbGlmaWVyLm1lbW9yeVF1YWxpZmllciwgdHlwZVF1YWxp
Zmllci5saW5lKTsKIAogICAgIHN5bWJvbFRhYmxlLmFkZEludmFyaWFudFZhcnlpbmcoc3RkOjpz
dHJpbmcoaWRlbnRpZmllci0+Y19zdHIoKSkpOwogCiAgICAgVEludGVybVN5bWJvbCAqaW50ZXJt
U3ltYm9sID0KICAgICAgICAgaW50ZXJtZWRpYXRlLmFkZFN5bWJvbCh2YXJpYWJsZS0+Z2V0VW5p
cXVlSWQoKSwgKmlkZW50aWZpZXIsIHR5cGUsIGlkZW50aWZpZXJMb2MpOwogCi0gICAgVEludGVy
bUFnZ3JlZ2F0ZSAqYWdncmVnYXRlID0gVEludGVybWVkaWF0ZTo6TWFrZUFnZ3JlZ2F0ZShpbnRl
cm1TeW1ib2wsIGlkZW50aWZpZXJMb2MpOwotICAgIGFnZ3JlZ2F0ZS0+c2V0T3AoRU9wSW52YXJp
YW50RGVjbGFyYXRpb24pOwotICAgIHJldHVybiBhZ2dyZWdhdGU7CisgICAgcmV0dXJuIG5ldyBU
SW50ZXJtSW52YXJpYW50RGVjbGFyYXRpb24oaW50ZXJtU3ltYm9sLCBpZGVudGlmaWVyTG9jKTsK
IH0KIAotVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VEZWNsYXJhdG9yKFRQ
dWJsaWNUeXBlICZwdWJsaWNUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZURlY2xhcmF0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
b3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyKQordm9pZCBU
UGFyc2VDb250ZXh0OjpwYXJzZURlY2xhcmF0b3IoVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpZGVu
dGlmaWVyTG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUU3RyaW5nICZpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVEludGVybURlY2xhcmF0aW9uICpkZWNsYXJhdGlvbk91dCkKIHsKICAgICAvLyBJZiB0aGUg
ZGVjbGFyYXRpb24gc3RhcnRpbmcgdGhpcyBkZWNsYXJhdG9yIGxpc3Qgd2FzIGVtcHR5IChleGFt
cGxlOiBpbnQsKSwgc29tZSBjaGVja3Mgd2VyZQogICAgIC8vIG5vdCBwZXJmb3JtZWQuCkBAIC0x
NzU4LDIyICsyMjE4LDIzIEBAIFRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNl
RGVjbGFyYXRvcihUUHVibGljVHlwZSAmcHVibGljVHlwZSwKICAgICBjaGVja0NhbkJlRGVjbGFy
ZWRXaXRob3V0SW5pdGlhbGl6ZXIoaWRlbnRpZmllckxvY2F0aW9uLCBpZGVudGlmaWVyLCAmcHVi
bGljVHlwZSk7CiAKICAgICBUVmFyaWFibGUgKnZhcmlhYmxlID0gbnVsbHB0cjsKLSAgICBkZWNs
YXJlVmFyaWFibGUoaWRlbnRpZmllckxvY2F0aW9uLCBpZGVudGlmaWVyLCBUVHlwZShwdWJsaWNU
eXBlKSwgJnZhcmlhYmxlKTsKKyAgICBUVHlwZSB0eXBlKHB1YmxpY1R5cGUpOworICAgIGRlY2xh
cmVWYXJpYWJsZShpZGVudGlmaWVyTG9jYXRpb24sIGlkZW50aWZpZXIsIHR5cGUsICZ2YXJpYWJs
ZSk7CiAKLSAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPQotICAgICAgICBpbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKDAsIGlkZW50aWZpZXIsIFRUeXBlKHB1YmxpY1R5cGUpLCBpZGVudGlmaWVyTG9j
YXRpb24pOworICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGludGVybWVkaWF0ZS5hZGRTeW1i
b2woMCwgaWRlbnRpZmllciwgdHlwZSwgaWRlbnRpZmllckxvY2F0aW9uKTsKICAgICBpZiAodmFy
aWFibGUgJiYgc3ltYm9sKQorICAgIHsKICAgICAgICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+
Z2V0VW5pcXVlSWQoKSk7Ci0KLSAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUo
YWdncmVnYXRlRGVjbGFyYXRpb24sIHN5bWJvbCwgaWRlbnRpZmllckxvY2F0aW9uKTsKKyAgICAg
ICAgZGVjbGFyYXRpb25PdXQtPmFwcGVuZERlY2xhcmF0b3Ioc3ltYm9sKTsKKyAgICB9CiB9CiAK
LVRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNlQXJyYXlEZWNsYXJhdG9yKFRQ
dWJsaWNUeXBlICZwdWJsaWNUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlRGVjbGFyYXRp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVu
dGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFNvdXJjZUxvYyAmYXJyYXlMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXhF
eHByZXNzaW9uKQordm9pZCBUUGFyc2VDb250ZXh0OjpwYXJzZUFycmF5RGVjbGFyYXRvcihUUHVi
bGljVHlwZSAmcHVibGljVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9j
ICZhcnJheUxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUSW50ZXJtVHlwZWQgKmluZGV4RXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVEludGVybURlY2xhcmF0aW9uICpkZWNsYXJhdGlvbk91dCkKIHsK
ICAgICAvLyBJZiB0aGUgZGVjbGFyYXRpb24gc3RhcnRpbmcgdGhpcyBkZWNsYXJhdG9yIGxpc3Qg
d2FzIGVtcHR5IChleGFtcGxlOiBpbnQsKSwgc29tZSBjaGVja3Mgd2VyZQogICAgIC8vIG5vdCBw
ZXJmb3JtZWQuCkBAIC0xNzg5LDcgKzIyNTAsNyBAQCBUSW50ZXJtQWdncmVnYXRlICpUUGFyc2VD
b250ZXh0OjpwYXJzZUFycmF5RGVjbGFyYXRvcihUUHVibGljVHlwZSAmcHVibGljVHlwZSwKIAog
ICAgIGlmIChjaGVja0lzVmFsaWRUeXBlQW5kUXVhbGlmaWVyRm9yQXJyYXkoYXJyYXlMb2NhdGlv
biwgcHVibGljVHlwZSkpCiAgICAgewotICAgICAgICBUVHlwZSBhcnJheVR5cGUgPSBUVHlwZShw
dWJsaWNUeXBlKTsKKyAgICAgICAgVFR5cGUgYXJyYXlUeXBlICAgPSBUVHlwZShwdWJsaWNUeXBl
KTsKICAgICAgICAgdW5zaWduZWQgaW50IHNpemUgPSBjaGVja0lzVmFsaWRBcnJheVNpemUoYXJy
YXlMb2NhdGlvbiwgaW5kZXhFeHByZXNzaW9uKTsKICAgICAgICAgYXJyYXlUeXBlLnNldEFycmF5
U2l6ZShzaXplKTsKIApAQCAtMTgwMSwxOCArMjI2MiwxNiBAQCBUSW50ZXJtQWdncmVnYXRlICpU
UGFyc2VDb250ZXh0OjpwYXJzZUFycmF5RGVjbGFyYXRvcihUUHVibGljVHlwZSAmcHVibGljVHlw
ZSwKICAgICAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKICAgICAgICAgICAgIHN5bWJvbC0+
c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwogCi0gICAgICAgIHJldHVybiBpbnRlcm1l
ZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShhZ2dyZWdhdGVEZWNsYXJhdGlvbiwgc3ltYm9sLCBpZGVudGlm
aWVyTG9jYXRpb24pOworICAgICAgICBkZWNsYXJhdGlvbk91dC0+YXBwZW5kRGVjbGFyYXRvcihz
eW1ib2wpOwogICAgIH0KLQotICAgIHJldHVybiBudWxscHRyOwogfQogCi1USW50ZXJtQWdncmVn
YXRlICpUUGFyc2VDb250ZXh0OjpwYXJzZUluaXREZWNsYXJhdG9yKGNvbnN0IFRQdWJsaWNUeXBl
ICZwdWJsaWNUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGVEZWNsYXJhdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNv
dXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
U291cmNlTG9jICZpbml0TG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIpCit2b2lkIFRQ
YXJzZUNvbnRleHQ6OnBhcnNlSW5pdERlY2xhcmF0b3IoY29uc3QgVFB1YmxpY1R5cGUgJnB1Ymxp
Y1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNv
dXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5pdExvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5p
dGlhbGl6ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVy
bURlY2xhcmF0aW9uICpkZWNsYXJhdGlvbk91dCkKIHsKICAgICAvLyBJZiB0aGUgZGVjbGFyYXRp
b24gc3RhcnRpbmcgdGhpcyBkZWNsYXJhdG9yIGxpc3Qgd2FzIGVtcHR5IChleGFtcGxlOiBpbnQs
KSwgc29tZSBjaGVja3Mgd2VyZQogICAgIC8vIG5vdCBwZXJmb3JtZWQuCkBAIC0xODI0LDM1ICsy
MjgzLDI3IEBAIFRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNlSW5pdERlY2xh
cmF0b3IoY29uc3QgVFB1YmxpY1R5cGUgJnB1YmxpY1R5CiAKICAgICBjaGVja0RlY2xhcmF0b3JM
b2NhdGlvbklzTm90U3BlY2lmaWVkKGlkZW50aWZpZXJMb2NhdGlvbiwgcHVibGljVHlwZSk7CiAK
LSAgICBUSW50ZXJtTm9kZSAqaW50ZXJtTm9kZSA9IG51bGxwdHI7Ci0gICAgaWYgKCFleGVjdXRl
SW5pdGlhbGl6ZXIoaWRlbnRpZmllckxvY2F0aW9uLCBpZGVudGlmaWVyLCBwdWJsaWNUeXBlLCBp
bml0aWFsaXplciwgJmludGVybU5vZGUpKQorICAgIFRJbnRlcm1CaW5hcnkgKmluaXROb2RlID0g
bnVsbHB0cjsKKyAgICBpZiAoIWV4ZWN1dGVJbml0aWFsaXplcihpZGVudGlmaWVyTG9jYXRpb24s
IGlkZW50aWZpZXIsIHB1YmxpY1R5cGUsIGluaXRpYWxpemVyLCAmaW5pdE5vZGUpKQogICAgIHsK
ICAgICAgICAgLy8KICAgICAgICAgLy8gYnVpbGQgdGhlIGludGVybWVkaWF0ZSByZXByZXNlbnRh
dGlvbgogICAgICAgICAvLwotICAgICAgICBpZiAoaW50ZXJtTm9kZSkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKGFnZ3JlZ2F0ZURlY2xh
cmF0aW9uLCBpbnRlcm1Ob2RlLCBpbml0TG9jYXRpb24pOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UKKyAgICAgICAgaWYgKGluaXROb2RlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
YWdncmVnYXRlRGVjbGFyYXRpb247CisgICAgICAgICAgICBkZWNsYXJhdGlvbk91dC0+YXBwZW5k
RGVjbGFyYXRvcihpbml0Tm9kZSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZWxzZQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQogfQogCi1USW50ZXJtQWdncmVnYXRlICpU
UGFyc2VDb250ZXh0OjpwYXJzZUFycmF5SW5pdERlY2xhcmF0b3IoY29uc3QgVFB1YmxpY1R5cGUg
JnB1YmxpY1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlRGVjbGFyYXRpb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlk
ZW50aWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5kZXhMb2NhdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQgKmluZGV4RXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbml0TG9jYXRpb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VEludGVybVR5cGVkICppbml0aWFsaXplcikKK3ZvaWQgVFBhcnNlQ29udGV4dDo6cGFyc2VBcnJh
eUluaXREZWNsYXJhdG9yKGNvbnN0IFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaWRl
bnRpZmllckxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmluZGV4TG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQg
KmluZGV4RXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmluaXRMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtRGVjbGFy
YXRpb24gKmRlY2xhcmF0aW9uT3V0KQogewogICAgIC8vIElmIHRoZSBkZWNsYXJhdGlvbiBzdGFy
dGluZyB0aGlzIGRlY2xhcmF0b3IgbGlzdCB3YXMgZW1wdHkgKGV4YW1wbGU6IGludCwpLCBzb21l
IGNoZWNrcyB3ZXJlCiAgICAgLy8gbm90IHBlcmZvcm1lZC4KQEAgLTE4ODAsMjcgKzIzMzEsMTkg
QEAgVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VBcnJheUluaXREZWNsYXJh
dG9yKGNvbnN0IFRQdWJsaWNUeXBlICZwdWIKICAgICBhcnJheVR5cGUuc2V0QXJyYXlTaXplKHNp
emUpOwogCiAgICAgLy8gaW5pdE5vZGUgd2lsbCBjb3JyZXNwb25kIHRvIHRoZSB3aG9sZSBvZiAi
YltuXSA9IGluaXRpYWxpemVyIi4KLSAgICBUSW50ZXJtTm9kZSAqaW5pdE5vZGUgPSBudWxscHRy
OworICAgIFRJbnRlcm1CaW5hcnkgKmluaXROb2RlID0gbnVsbHB0cjsKICAgICBpZiAoIWV4ZWN1
dGVJbml0aWFsaXplcihpZGVudGlmaWVyTG9jYXRpb24sIGlkZW50aWZpZXIsIGFycmF5VHlwZSwg
aW5pdGlhbGl6ZXIsICZpbml0Tm9kZSkpCiAgICAgewogICAgICAgICBpZiAoaW5pdE5vZGUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShh
Z2dyZWdhdGVEZWNsYXJhdGlvbiwgaW5pdE5vZGUsIGluaXRMb2NhdGlvbik7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWdncmVnYXRlRGVj
bGFyYXRpb247CisgICAgICAgICAgICBkZWNsYXJhdGlvbk91dC0+YXBwZW5kRGVjbGFyYXRvcihp
bml0Tm9kZSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfQogfQogCiB2b2lkIFRQYXJzZUNvbnRleHQ6OnBhcnNlR2xvYmFs
TGF5b3V0UXVhbGlmaWVyKGNvbnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRlciAmdHlwZVF1YWxpZmll
ckJ1aWxkZXIpCiB7Ci0gICAgVFR5cGVRdWFsaWZpZXIgdHlwZVF1YWxpZmllciA9IHR5cGVRdWFs
aWZpZXJCdWlsZGVyLmdldFZhcmlhYmxlVHlwZVF1YWxpZmllcigmbURpYWdub3N0aWNzKTsKKyAg
ICBUVHlwZVF1YWxpZmllciB0eXBlUXVhbGlmaWVyID0gdHlwZVF1YWxpZmllckJ1aWxkZXIuZ2V0
VmFyaWFibGVUeXBlUXVhbGlmaWVyKG1EaWFnbm9zdGljcyk7CiAgICAgY29uc3QgVExheW91dFF1
YWxpZmllciBsYXlvdXRRdWFsaWZpZXIgPSB0eXBlUXVhbGlmaWVyLmxheW91dFF1YWxpZmllcjsK
IAogICAgIGNoZWNrSW52YXJpYW50VmFyaWFibGVRdWFsaWZpZXIodHlwZVF1YWxpZmllci5pbnZh
cmlhbnQsIHR5cGVRdWFsaWZpZXIucXVhbGlmaWVyLApAQCAtMTkxNSwxMCArMjM1OCwxOCBAQCB2
b2lkIFRQYXJzZUNvbnRleHQ6OnBhcnNlR2xvYmFsTGF5b3V0UXVhbGlmaWVyKGNvbnN0IFRUeXBl
UXVhbGlmaWVyQnVpbGRlciAmdHlwZQogCiAgICAgaWYgKCFsYXlvdXRRdWFsaWZpZXIuaXNDb21i
aW5hdGlvblZhbGlkKCkpCiAgICAgewotICAgICAgICBlcnJvcih0eXBlUXVhbGlmaWVyLmxpbmUs
ICJpbnZhbGlkIGNvbWJpbmF0aW9uOiIsICJsYXlvdXQiKTsKKyAgICAgICAgZXJyb3IodHlwZVF1
YWxpZmllci5saW5lLCAiaW52YWxpZCBsYXlvdXQgcXVhbGlmaWVyIGNvbWJpbmF0aW9uIiwgImxh
eW91dCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgY2hlY2tCaW5kaW5nSXNOb3RT
cGVjaWZpZWQodHlwZVF1YWxpZmllci5saW5lLCBsYXlvdXRRdWFsaWZpZXIuYmluZGluZyk7CisK
KyAgICBjaGVja01lbW9yeVF1YWxpZmllcklzTm90U3BlY2lmaWVkKHR5cGVRdWFsaWZpZXIubWVt
b3J5UXVhbGlmaWVyLCB0eXBlUXVhbGlmaWVyLmxpbmUpOworCisgICAgY2hlY2tJbnRlcm5hbEZv
cm1hdElzTm90U3BlY2lmaWVkKHR5cGVRdWFsaWZpZXIubGluZSwgbGF5b3V0UXVhbGlmaWVyLmlt
YWdlSW50ZXJuYWxGb3JtYXQpOworCisgICAgY2hlY2tZdXZJc05vdFNwZWNpZmllZCh0eXBlUXVh
bGlmaWVyLmxpbmUsIGxheW91dFF1YWxpZmllci55dXYpOworCiAgICAgaWYgKHR5cGVRdWFsaWZp
ZXIucXVhbGlmaWVyID09IEV2cUNvbXB1dGVJbikKICAgICB7CiAgICAgICAgIGlmIChtQ29tcHV0
ZVNoYWRlckxvY2FsU2l6ZURlY2xhcmVkICYmCkBAIC0xOTU2LDEzICsyNDA3LDEyIEBAIHZvaWQg
VFBhcnNlQ29udGV4dDo6cGFyc2VHbG9iYWxMYXlvdXRRdWFsaWZpZXIoY29uc3QgVFR5cGVRdWFs
aWZpZXJCdWlsZGVyICZ0eXBlCiAgICAgICAgICAgICAgICAgaWYgKG1Db21wdXRlU2hhZGVyTG9j
YWxTaXplW2ldIDwgMSB8fAogICAgICAgICAgICAgICAgICAgICBtQ29tcHV0ZVNoYWRlckxvY2Fs
U2l6ZVtpXSA+IG1heENvbXB1dGVXb3JrR3JvdXBTaXplVmFsdWUpCiAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBlcnJvck1lc3NhZ2VTdHJl
YW07Ci0gICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZVN0cmVhbSA8PCAiVmFsdWUgbXVz
dCBiZSBhdCBsZWFzdCAxIGFuZCBubyBncmVhdGVyIHRoYW4gIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPDwgbWF4Q29tcHV0ZVdvcmtHcm91cFNpemVWYWx1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmVycm9yTWVzc2FnZSA9IGVycm9y
TWVzc2FnZVN0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJl
YW0gcmVhc29uU3RyZWFtOworICAgICAgICAgICAgICAgICAgICByZWFzb25TdHJlYW0gPDwgImlu
dmFsaWQgdmFsdWU6IFZhbHVlIG11c3QgYmUgYXQgbGVhc3QgMSBhbmQgbm8gZ3JlYXRlciB0aGFu
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IG1heENvbXB1dGVXb3JrR3Jv
dXBTaXplVmFsdWU7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZyZWFz
b24gPSByZWFzb25TdHJlYW0uc3RyKCk7CiAKLSAgICAgICAgICAgICAgICAgICAgZXJyb3IodHlw
ZVF1YWxpZmllci5saW5lLCAiaW52YWxpZCB2YWx1ZToiLCBnZXRXb3JrR3JvdXBTaXplU3RyaW5n
KGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UuY19zdHIoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGVycm9yKHR5cGVRdWFsaWZpZXIubGluZSwgcmVhc29uLmNfc3Ry
KCksIGdldFdvcmtHcm91cFNpemVTdHJpbmcoaSkpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMTk3MCwxOCArMjQyMCw0
NSBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OnBhcnNlR2xvYmFsTGF5b3V0UXVhbGlmaWVyKGNvbnN0
IFRUeXBlUXVhbGlmaWVyQnVpbGRlciAmdHlwZQogCiAgICAgICAgIG1Db21wdXRlU2hhZGVyTG9j
YWxTaXplRGVjbGFyZWQgPSB0cnVlOwogICAgIH0KLSAgICBlbHNlCisgICAgZWxzZSBpZiAobU11
bHRpdmlld0F2YWlsYWJsZSAmJgorICAgICAgICAgICAgIChpc0V4dGVuc2lvbkVuYWJsZWQoIkdM
X09WUl9tdWx0aXZpZXciKSB8fCBpc0V4dGVuc2lvbkVuYWJsZWQoIkdMX09WUl9tdWx0aXZpZXcy
IikpICYmCisgICAgICAgICAgICAgdHlwZVF1YWxpZmllci5xdWFsaWZpZXIgPT0gRXZxVmVydGV4
SW4pCiAgICAgeworICAgICAgICAvLyBUaGlzIGVycm9yIGlzIG9ubHkgc3BlY2lmaWVkIGluIFdl
YkdMLCBidXQgdGlnaHRlbnMgdW5zcGVjaWZpZWQgYmVoYXZpb3IgaW4gdGhlIG5hdGl2ZQorICAg
ICAgICAvLyBzcGVjaWZpY2F0aW9uLgorICAgICAgICBpZiAobU51bVZpZXdzICE9IC0xICYmIGxh
eW91dFF1YWxpZmllci5udW1WaWV3cyAhPSBtTnVtVmlld3MpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGVycm9yKHR5cGVRdWFsaWZpZXIubGluZSwgIk51bWJlciBvZiB2aWV3cyBkb2VzIG5vdCBt
YXRjaCB0aGUgcHJldmlvdXMgZGVjbGFyYXRpb24iLAorICAgICAgICAgICAgICAgICAgImxheW91
dCIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxheW91
dFF1YWxpZmllci5udW1WaWV3cyA9PSAtMSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3Io
dHlwZVF1YWxpZmllci5saW5lLCAiTm8gbnVtX3ZpZXdzIHNwZWNpZmllZCIsICJsYXlvdXQiKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChsYXlvdXRRdWFs
aWZpZXIubnVtVmlld3MgPiBtTWF4TnVtVmlld3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVy
cm9yKHR5cGVRdWFsaWZpZXIubGluZSwgIm51bV92aWV3cyBncmVhdGVyIHRoYW4gdGhlIHZhbHVl
IG9mIEdMX01BWF9WSUVXU19PVlIiLAorICAgICAgICAgICAgICAgICAgImxheW91dCIpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFjaGVja1dvcmtHcm91
cFNpemVJc05vdFNwZWNpZmllZCh0eXBlUXVhbGlmaWVyLmxpbmUsIHR5cGVRdWFsaWZpZXIubGF5
b3V0UXVhbGlmaWVyKSkKKyAgICAgICAgbU51bVZpZXdzID0gbGF5b3V0UXVhbGlmaWVyLm51bVZp
ZXdzOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBpZiAoIWNoZWNrV29ya0dyb3Vw
U2l6ZUlzTm90U3BlY2lmaWVkKHR5cGVRdWFsaWZpZXIubGluZSwgbGF5b3V0UXVhbGlmaWVyKSkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYg
KHR5cGVRdWFsaWZpZXIucXVhbGlmaWVyICE9IEV2cVVuaWZvcm0pCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGVycm9yKHR5cGVRdWFsaWZpZXIubGluZSwgImludmFsaWQgcXVhbGlmaWVyOiIsCi0g
ICAgICAgICAgICAgICAgICBnZXRRdWFsaWZpZXJTdHJpbmcodHlwZVF1YWxpZmllci5xdWFsaWZp
ZXIpLCAiZ2xvYmFsIGxheW91dCBtdXN0IGJlIHVuaWZvcm0iKTsKKyAgICAgICAgICAgIGVycm9y
KHR5cGVRdWFsaWZpZXIubGluZSwgImludmFsaWQgcXVhbGlmaWVyOiBnbG9iYWwgbGF5b3V0IG11
c3QgYmUgdW5pZm9ybSIsCisgICAgICAgICAgICAgICAgICBnZXRRdWFsaWZpZXJTdHJpbmcodHlw
ZVF1YWxpZmllci5xdWFsaWZpZXIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CkBAIC0xOTkyLDcgKzI0NjksNyBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OnBhcnNlR2xvYmFsTGF5
b3V0UXVhbGlmaWVyKGNvbnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRlciAmdHlwZQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY2hlY2tMb2NhdGlvbklzTm90U3BlY2lm
aWVkKHR5cGVRdWFsaWZpZXIubGluZSwgdHlwZVF1YWxpZmllci5sYXlvdXRRdWFsaWZpZXIpOwor
ICAgICAgICBjaGVja0xvY2F0aW9uSXNOb3RTcGVjaWZpZWQodHlwZVF1YWxpZmllci5saW5lLCBs
YXlvdXRRdWFsaWZpZXIpOwogCiAgICAgICAgIGlmIChsYXlvdXRRdWFsaWZpZXIubWF0cml4UGFj
a2luZyAhPSBFbXBVbnNwZWNpZmllZCkKICAgICAgICAgewpAQCAtMjAwNiw0NyArMjQ4Myw2NiBA
QCB2b2lkIFRQYXJzZUNvbnRleHQ6OnBhcnNlR2xvYmFsTGF5b3V0UXVhbGlmaWVyKGNvbnN0IFRU
eXBlUXVhbGlmaWVyQnVpbGRlciAmdHlwZQogICAgIH0KIH0KIAotVEludGVybUFnZ3JlZ2F0ZSAq
VFBhcnNlQ29udGV4dDo6YWRkRnVuY3Rpb25Qcm90b3R5cGVEZWNsYXJhdGlvbihjb25zdCBURnVu
Y3Rpb24gJnBhcnNlZEZ1bmN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2NhdGlv
bikKK1RJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAqVFBhcnNlQ29udGV4dDo6Y3JlYXRlUHJvdG90
eXBlTm9kZUZyb21GdW5jdGlvbigKKyAgICBjb25zdCBURnVuY3Rpb24gJmZ1bmN0aW9uLAorICAg
IGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLAorICAgIGJvb2wgaW5zZXJ0UGFyYW1ldGVyc1Rv
U3ltYm9sVGFibGUpCiB7Ci0gICAgLy8gTm90ZTogZnVuY3Rpb24gZm91bmQgZnJvbSB0aGUgc3lt
Ym9sIHRhYmxlIGNvdWxkIGJlIHRoZSBzYW1lIGFzIHBhcnNlZEZ1bmN0aW9uIGlmIHRoaXMgaXMg
dGhlCi0gICAgLy8gZmlyc3QgZGVjbGFyYXRpb24uIEVpdGhlciB3YXkgdGhlIGluc3RhbmNlIGlu
IHRoZSBzeW1ib2wgdGFibGUgaXMgdXNlZCB0byB0cmFjayB3aGV0aGVyIHRoZQotICAgIC8vIGZ1
bmN0aW9uIGlzIGRlY2xhcmVkIG11bHRpcGxlIHRpbWVzLgotICAgIFRGdW5jdGlvbiAqZnVuY3Rp
b24gPSBzdGF0aWNfY2FzdDxURnVuY3Rpb24gKj4oCi0gICAgICAgIHN5bWJvbFRhYmxlLmZpbmQo
cGFyc2VkRnVuY3Rpb24uZ2V0TWFuZ2xlZE5hbWUoKSwgZ2V0U2hhZGVyVmVyc2lvbigpKSk7Ci0g
ICAgaWYgKGZ1bmN0aW9uLT5oYXNQcm90b3R5cGVEZWNsYXJhdGlvbigpICYmIG1TaGFkZXJWZXJz
aW9uID09IDEwMCkKLSAgICB7Ci0gICAgICAgIC8vIEVTU0wgMS4wMC4xNyBzZWN0aW9uIDQuMi43
LgotICAgICAgICAvLyBEb2Vzbid0IGFwcGx5IHRvIEVTU0wgMy4wMC40OiBzZWUgc2VjdGlvbiA0
LjIuMy4KLSAgICAgICAgZXJyb3IobG9jYXRpb24sICJkdXBsaWNhdGUgZnVuY3Rpb24gcHJvdG90
eXBlIGRlY2xhcmF0aW9ucyBhcmUgbm90IGFsbG93ZWQiLCAiZnVuY3Rpb24iKTsKLSAgICB9Ci0g
ICAgZnVuY3Rpb24tPnNldEhhc1Byb3RvdHlwZURlY2xhcmF0aW9uKCk7Ci0KLSAgICBUSW50ZXJt
QWdncmVnYXRlICpwcm90b3R5cGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZTsKKyAgICBUSW50ZXJt
RnVuY3Rpb25Qcm90b3R5cGUgKnByb3RvdHlwZSA9CisgICAgICAgIG5ldyBUSW50ZXJtRnVuY3Rp
b25Qcm90b3R5cGUoZnVuY3Rpb24uZ2V0UmV0dXJuVHlwZSgpLCBUU3ltYm9sVW5pcXVlSWQoZnVu
Y3Rpb24pKTsKICAgICAvLyBUT0RPKG9ldHVhaG9AbnZpZGlhLmNvbSk6IEluc3RlYWQgb2YgY29u
dmVydGluZyB0aGUgZnVuY3Rpb24gaW5mb3JtYXRpb24gaGVyZSwgdGhlIG5vZGUgY291bGQKICAg
ICAvLyBwb2ludCB0byB0aGUgZGF0YSB0aGF0IGFscmVhZHkgZXhpc3RzIGluIHRoZSBzeW1ib2wg
dGFibGUuCi0gICAgcHJvdG90eXBlLT5zZXRUeXBlKGZ1bmN0aW9uLT5nZXRSZXR1cm5UeXBlKCkp
OwotICAgIHByb3RvdHlwZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPnNldEZyb21GdW5jdGlv
bigqZnVuY3Rpb24pOworICAgIHByb3RvdHlwZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPnNl
dEZyb21GdW5jdGlvbihmdW5jdGlvbik7CisgICAgcHJvdG90eXBlLT5zZXRMaW5lKGxvY2F0aW9u
KTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb24tPmdldFBhcmFtQ291bnQo
KTsgaSsrKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb24uZ2V0UGFyYW1Db3Vu
dCgpOyBpKyspCiAgICAgewotICAgICAgICBjb25zdCBUQ29uc3RQYXJhbWV0ZXIgJnBhcmFtID0g
ZnVuY3Rpb24tPmdldFBhcmFtKGkpOwotICAgICAgICBpZiAocGFyYW0ubmFtZSAhPSAwKQorICAg
ICAgICBjb25zdCBUQ29uc3RQYXJhbWV0ZXIgJnBhcmFtID0gZnVuY3Rpb24uZ2V0UGFyYW0oaSk7
CisKKyAgICAgICAgLy8gSWYgdGhlIHBhcmFtZXRlciBoYXMgbm8gbmFtZSwgaXQncyBub3QgYW4g
ZXJyb3IsIGp1c3QgZG9uJ3QgYWRkIGl0IHRvIHN5bWJvbCB0YWJsZSAoY291bGQKKyAgICAgICAg
Ly8gYmUgdXNlZCBmb3IgdW51c2VkIGFyZ3MpLgorICAgICAgICBpZiAocGFyYW0ubmFtZSAhPSBu
dWxscHRyKQogICAgICAgICB7Ci0gICAgICAgICAgICBUVmFyaWFibGUgdmFyaWFibGUocGFyYW0u
bmFtZSwgKnBhcmFtLnR5cGUpOworICAgICAgICAgICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG5l
dyBUVmFyaWFibGUocGFyYW0ubmFtZSwgKnBhcmFtLnR5cGUpOwogCi0gICAgICAgICAgICBUSW50
ZXJtU3ltYm9sICpwYXJhbVN5bWJvbCA9IGludGVybWVkaWF0ZS5hZGRTeW1ib2woCi0gICAgICAg
ICAgICAgICAgdmFyaWFibGUuZ2V0VW5pcXVlSWQoKSwgdmFyaWFibGUuZ2V0TmFtZSgpLCB2YXJp
YWJsZS5nZXRUeXBlKCksIGxvY2F0aW9uKTsKLSAgICAgICAgICAgIHByb3RvdHlwZSA9IGludGVy
bWVkaWF0ZS5ncm93QWdncmVnYXRlKHByb3RvdHlwZSwgcGFyYW1TeW1ib2wsIGxvY2F0aW9uKTsK
KyAgICAgICAgICAgIC8vIEluc2VydCB0aGUgcGFyYW1ldGVyIGluIHRoZSBzeW1ib2wgdGFibGUu
CisgICAgICAgICAgICBpZiAoaW5zZXJ0UGFyYW1ldGVyc1RvU3ltYm9sVGFibGUgJiYgIXN5bWJv
bFRhYmxlLmRlY2xhcmUodmFyaWFibGUpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGVycm9yKGxvY2F0aW9uLCAicmVkZWZpbml0aW9uIiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0
cigpKTsKKyAgICAgICAgICAgICAgICBwcm90b3R5cGUtPmFwcGVuZFBhcmFtZXRlcihpbnRlcm1l
ZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgbG9jYXRpb24pKTsKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFRJbnRlcm1TeW1i
b2wgKnN5bWJvbCA9IGludGVybWVkaWF0ZS5hZGRTeW1ib2woCisgICAgICAgICAgICAgICAgdmFy
aWFibGUtPmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLT5nZXROYW1lKCksIHZhcmlhYmxlLT5nZXRU
eXBlKCksIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIHByb3RvdHlwZS0+YXBwZW5kUGFyYW1ldGVy
KHN5bWJvbCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAg
ICBUSW50ZXJtU3ltYm9sICpwYXJhbVN5bWJvbCA9IGludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwg
IiIsICpwYXJhbS50eXBlLCBsb2NhdGlvbik7Ci0gICAgICAgICAgICBwcm90b3R5cGUgICAgICAg
ICAgICAgICAgICA9IGludGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKHByb3RvdHlwZSwgcGFyYW1T
eW1ib2wsIGxvY2F0aW9uKTsKKyAgICAgICAgICAgIHByb3RvdHlwZS0+YXBwZW5kUGFyYW1ldGVy
KGludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpwYXJhbS50eXBlLCBsb2NhdGlvbikpOwog
ICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiBwcm90b3R5cGU7Cit9CisKK1RJbnRlcm1GdW5j
dGlvblByb3RvdHlwZSAqVFBhcnNlQ29udGV4dDo6YWRkRnVuY3Rpb25Qcm90b3R5cGVEZWNsYXJh
dGlvbigKKyAgICBjb25zdCBURnVuY3Rpb24gJnBhcnNlZEZ1bmN0aW9uLAorICAgIGNvbnN0IFRT
b3VyY2VMb2MgJmxvY2F0aW9uKQoreworICAgIC8vIE5vdGU6IGZ1bmN0aW9uIGZvdW5kIGZyb20g
dGhlIHN5bWJvbCB0YWJsZSBjb3VsZCBiZSB0aGUgc2FtZSBhcyBwYXJzZWRGdW5jdGlvbiBpZiB0
aGlzIGlzIHRoZQorICAgIC8vIGZpcnN0IGRlY2xhcmF0aW9uLiBFaXRoZXIgd2F5IHRoZSBpbnN0
YW5jZSBpbiB0aGUgc3ltYm9sIHRhYmxlIGlzIHVzZWQgdG8gdHJhY2sgd2hldGhlciB0aGUKKyAg
ICAvLyBmdW5jdGlvbiBpcyBkZWNsYXJlZCBtdWx0aXBsZSB0aW1lcy4KKyAgICBURnVuY3Rpb24g
KmZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uICo+KAorICAgICAgICBzeW1ib2xUYWJs
ZS5maW5kKHBhcnNlZEZ1bmN0aW9uLmdldE1hbmdsZWROYW1lKCksIGdldFNoYWRlclZlcnNpb24o
KSkpOworICAgIGlmIChmdW5jdGlvbi0+aGFzUHJvdG90eXBlRGVjbGFyYXRpb24oKSAmJiBtU2hh
ZGVyVmVyc2lvbiA9PSAxMDApCisgICAgeworICAgICAgICAvLyBFU1NMIDEuMDAuMTcgc2VjdGlv
biA0LjIuNy4KKyAgICAgICAgLy8gRG9lc24ndCBhcHBseSB0byBFU1NMIDMuMDAuNDogc2VlIHNl
Y3Rpb24gNC4yLjMuCisgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiZHVwbGljYXRlIGZ1bmN0aW9u
IHByb3RvdHlwZSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIiwgImZ1bmN0aW9uIik7Cisg
ICAgfQorICAgIGZ1bmN0aW9uLT5zZXRIYXNQcm90b3R5cGVEZWNsYXJhdGlvbigpOwogCi0gICAg
cHJvdG90eXBlLT5zZXRPcChFT3BQcm90b3R5cGUpOworICAgIFRJbnRlcm1GdW5jdGlvblByb3Rv
dHlwZSAqcHJvdG90eXBlID0KKyAgICAgICAgY3JlYXRlUHJvdG90eXBlTm9kZUZyb21GdW5jdGlv
bigqZnVuY3Rpb24sIGxvY2F0aW9uLCBmYWxzZSk7CiAKICAgICBzeW1ib2xUYWJsZS5wb3AoKTsK
IApAQCAtMjA2MCwxNSArMjU1NiwxNSBAQCBUSW50ZXJtQWdncmVnYXRlICpUUGFyc2VDb250ZXh0
OjphZGRGdW5jdGlvblByb3RvdHlwZURlY2xhcmF0aW9uKGNvbnN0IFRGdW5jdGlvbgogfQogCiBU
SW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpUUGFyc2VDb250ZXh0OjphZGRGdW5jdGlvbkRlZmlu
aXRpb24oCi0gICAgY29uc3QgVEZ1bmN0aW9uICZmdW5jdGlvbiwKLSAgICBUSW50ZXJtQWdncmVn
YXRlICpmdW5jdGlvblBhcmFtZXRlcnMsCisgICAgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlICpm
dW5jdGlvblByb3RvdHlwZSwKICAgICBUSW50ZXJtQmxvY2sgKmZ1bmN0aW9uQm9keSwKICAgICBj
b25zdCBUU291cmNlTG9jICZsb2NhdGlvbikKIHsKICAgICAvLyBDaGVjayB0aGF0IG5vbi12b2lk
IGZ1bmN0aW9ucyBoYXZlIGF0IGxlYXN0IG9uZSByZXR1cm4gc3RhdGVtZW50LgogICAgIGlmICht
Q3VycmVudEZ1bmN0aW9uVHlwZS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Vm9pZCAmJiAhbUZ1bmN0
aW9uUmV0dXJuc1ZhbHVlKQogICAgIHsKLSAgICAgICAgZXJyb3IobG9jYXRpb24sICJmdW5jdGlv
biBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZToiLCAiIiwgZnVuY3Rpb24uZ2V0TmFtZSgpLmNfc3Ry
KCkpOworICAgICAgICBlcnJvcihsb2NhdGlvbiwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBh
IHZhbHVlOiIsCisgICAgICAgICAgICAgIGZ1bmN0aW9uUHJvdG90eXBlLT5nZXRGdW5jdGlvblN5
bWJvbEluZm8oKS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgIH0KIAogICAgIGlmIChmdW5jdGlv
bkJvZHkgPT0gbnVsbHB0cikKQEAgLTIwNzcsMTggKzI1NzMsMTYgQEAgVEludGVybUZ1bmN0aW9u
RGVmaW5pdGlvbiAqVFBhcnNlQ29udGV4dDo6YWRkRnVuY3Rpb25EZWZpbml0aW9uKAogICAgICAg
ICBmdW5jdGlvbkJvZHktPnNldExpbmUobG9jYXRpb24pOwogICAgIH0KICAgICBUSW50ZXJtRnVu
Y3Rpb25EZWZpbml0aW9uICpmdW5jdGlvbk5vZGUgPQotICAgICAgICBuZXcgVEludGVybUZ1bmN0
aW9uRGVmaW5pdGlvbihmdW5jdGlvbi5nZXRSZXR1cm5UeXBlKCksIGZ1bmN0aW9uUGFyYW1ldGVy
cywgZnVuY3Rpb25Cb2R5KTsKKyAgICAgICAgbmV3IFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24o
ZnVuY3Rpb25Qcm90b3R5cGUsIGZ1bmN0aW9uQm9keSk7CiAgICAgZnVuY3Rpb25Ob2RlLT5zZXRM
aW5lKGxvY2F0aW9uKTsKIAotICAgIGZ1bmN0aW9uTm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZv
KCktPnNldEZyb21GdW5jdGlvbihmdW5jdGlvbik7Ci0KICAgICBzeW1ib2xUYWJsZS5wb3AoKTsK
ICAgICByZXR1cm4gZnVuY3Rpb25Ob2RlOwogfQogCiB2b2lkIFRQYXJzZUNvbnRleHQ6OnBhcnNl
RnVuY3Rpb25EZWZpbml0aW9uSGVhZGVyKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURnVuY3Rpb24g
KipmdW5jdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqKmFnZ3JlZ2F0ZU91dCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUZ1bmN0aW9uUHJvdG90eXBl
ICoqcHJvdG90eXBlT3V0KQogewogICAgIEFTU0VSVChmdW5jdGlvbik7CiAgICAgQVNTRVJUKCpm
dW5jdGlvbik7CkBAIC0yMTI1LDY5ICsyNjE5LDExIEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6cGFy
c2VGdW5jdGlvbkRlZmluaXRpb25IZWFkZXIoY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sCiAg
ICAgICAgICgqZnVuY3Rpb24pLT5zZXREZWZpbmVkKCk7CiAgICAgfQogCi0gICAgLy8gUmFpc2Ug
ZXJyb3IgbWVzc2FnZSBpZiBtYWluIGZ1bmN0aW9uIHRha2VzIGFueSBwYXJhbWV0ZXJzIG9yIHJl
dHVybiBhbnl0aGluZyBvdGhlciB0aGFuIHZvaWQKLSAgICBpZiAoKCpmdW5jdGlvbiktPmdldE5h
bWUoKSA9PSAibWFpbiIpCi0gICAgewotICAgICAgICBpZiAoKCpmdW5jdGlvbiktPmdldFBhcmFt
Q291bnQoKSA+IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiZnVu
Y3Rpb24gY2Fubm90IHRha2UgYW55IHBhcmFtZXRlcihzKSIsCi0gICAgICAgICAgICAgICAgICAo
KmZ1bmN0aW9uKS0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotICAgICAgICB9Ci0gICAgICAgIGlmICgo
KmZ1bmN0aW9uKS0+Z2V0UmV0dXJuVHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiIiwgKCpmdW5jdGlvbiktPmdl
dFJldHVyblR5cGUoKS5nZXRCYXNpY1N0cmluZygpLAotICAgICAgICAgICAgICAgICAgIm1haW4g
ZnVuY3Rpb24gY2Fubm90IHJldHVybiBhIHZhbHVlIik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICAvLwotICAgIC8vIFJlbWVtYmVyIHRoZSByZXR1cm4gdHlwZSBmb3IgbGF0ZXIgY2hlY2tpbmcg
Zm9yIFJFVFVSTiBzdGF0ZW1lbnRzLgotICAgIC8vCisgICAgLy8gUmVtZW1iZXIgdGhlIHJldHVy
biB0eXBlIGZvciBsYXRlciBjaGVja2luZyBmb3IgcmV0dXJuIHN0YXRlbWVudHMuCiAgICAgbUN1
cnJlbnRGdW5jdGlvblR5cGUgID0gJigoKmZ1bmN0aW9uKS0+Z2V0UmV0dXJuVHlwZSgpKTsKICAg
ICBtRnVuY3Rpb25SZXR1cm5zVmFsdWUgPSBmYWxzZTsKIAotICAgIC8vCi0gICAgLy8gSW5zZXJ0
IHBhcmFtZXRlcnMgaW50byB0aGUgc3ltYm9sIHRhYmxlLgotICAgIC8vIElmIHRoZSBwYXJhbWV0
ZXIgaGFzIG5vIG5hbWUsIGl0J3Mgbm90IGFuIGVycm9yLCBqdXN0IGRvbid0IGluc2VydCBpdAot
ICAgIC8vIChjb3VsZCBiZSB1c2VkIGZvciB1bnVzZWQgYXJncykuCi0gICAgLy8KLSAgICAvLyBB
bHNvLCBhY2N1bXVsYXRlIHRoZSBsaXN0IG9mIHBhcmFtZXRlcnMgaW50byB0aGUgSElMLCBzbyBs
b3dlciBsZXZlbCBjb2RlCi0gICAgLy8ga25vd3Mgd2hlcmUgdG8gZmluZCBwYXJhbWV0ZXJzLgot
ICAgIC8vCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFyYW1Ob2RlcyA9IG5ldyBUSW50ZXJtQWdn
cmVnYXRlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgKCpmdW5jdGlvbiktPmdldFBhcmFt
Q291bnQoKTsgaSsrKQotICAgIHsKLSAgICAgICAgY29uc3QgVENvbnN0UGFyYW1ldGVyICZwYXJh
bSA9ICgqZnVuY3Rpb24pLT5nZXRQYXJhbShpKTsKLSAgICAgICAgaWYgKHBhcmFtLm5hbWUgIT0g
MCkKLSAgICAgICAgewotICAgICAgICAgICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG5ldyBUVmFy
aWFibGUocGFyYW0ubmFtZSwgKnBhcmFtLnR5cGUpOwotICAgICAgICAgICAgLy8KLSAgICAgICAg
ICAgIC8vIEluc2VydCB0aGUgcGFyYW1ldGVycyB3aXRoIG5hbWUgaW4gdGhlIHN5bWJvbCB0YWJs
ZS4KLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICBpZiAoIXN5bWJvbFRhYmxlLmRlY2xhcmUo
dmFyaWFibGUpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGVycm9yKGxvY2F0aW9u
LCAicmVkZWZpbml0aW9uIiwgdmFyaWFibGUtPmdldE5hbWUoKS5jX3N0cigpKTsKLSAgICAgICAg
ICAgICAgICBwYXJhbU5vZGVzID0gaW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoCi0gICAgICAg
ICAgICAgICAgICAgIHBhcmFtTm9kZXMsIGludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgIiIsICpw
YXJhbS50eXBlLCBsb2NhdGlvbiksIGxvY2F0aW9uKTsKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIEFkZCB0
aGUgcGFyYW1ldGVyIHRvIHRoZSBISUwKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICBUSW50
ZXJtU3ltYm9sICpzeW1ib2wgPSBpbnRlcm1lZGlhdGUuYWRkU3ltYm9sKAotICAgICAgICAgICAg
ICAgIHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLCB2YXJpYWJsZS0+Z2V0TmFtZSgpLCB2YXJpYWJs
ZS0+Z2V0VHlwZSgpLCBsb2NhdGlvbik7Ci0KLSAgICAgICAgICAgIHBhcmFtTm9kZXMgPSBpbnRl
cm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwYXJhbU5vZGVzLCBzeW1ib2wsIGxvY2F0aW9uKTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHBhcmFtTm9kZXMg
PSBpbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgKLSAgICAgICAgICAgICAgICBwYXJhbU5vZGVz
LCBpbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgbG9jYXRpb24pLCBs
b2NhdGlvbik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0
ZU9wZXJhdG9yKHBhcmFtTm9kZXMsIEVPcFBhcmFtZXRlcnMsIGxvY2F0aW9uKTsKLSAgICAqYWdn
cmVnYXRlT3V0ID0gcGFyYW1Ob2RlczsKKyAgICAqcHJvdG90eXBlT3V0ID0gY3JlYXRlUHJvdG90
eXBlTm9kZUZyb21GdW5jdGlvbigqKmZ1bmN0aW9uLCBsb2NhdGlvbiwgdHJ1ZSk7CiAgICAgc2V0
TG9vcE5lc3RpbmdMZXZlbCgwKTsKIH0KIApAQCAtMjIwNCw5ICsyNjQwLDExIEBAIFRGdW5jdGlv
biAqVFBhcnNlQ29udGV4dDo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0b3IoY29uc3QgVFNvdXJjZUxv
YyAmbG9jYXRpb24sIFRGCiAgICAgVEZ1bmN0aW9uICpwcmV2RGVjID0KICAgICAgICAgc3RhdGlj
X2Nhc3Q8VEZ1bmN0aW9uICo+KHN5bWJvbFRhYmxlLmZpbmQoZnVuY3Rpb24tPmdldE1hbmdsZWRO
YW1lKCksIGdldFNoYWRlclZlcnNpb24oKSkpOwogCi0gICAgaWYgKGdldFNoYWRlclZlcnNpb24o
KSA+PSAzMDAgJiYgc3ltYm9sVGFibGUuaGFzVW5tYW5nbGVkQnVpbHRJbihmdW5jdGlvbi0+Z2V0
TmFtZSgpLmNfc3RyKCkpKQorICAgIGlmIChnZXRTaGFkZXJWZXJzaW9uKCkgPj0gMzAwICYmCisg
ICAgICAgIHN5bWJvbFRhYmxlLmhhc1VubWFuZ2xlZEJ1aWx0SW5Gb3JTaGFkZXJWZXJzaW9uKGZ1
bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U2hhZGVyVmVyc2lvbigpKSkKICAgICB7Ci0g
ICAgICAgIC8vIFdpdGggRVNTTCAzLjAwLCBuYW1lcyBvZiBidWlsdC1pbiBmdW5jdGlvbnMgY2Fu
bm90IGJlIHJlZGVjbGFyZWQgYXMgZnVuY3Rpb25zLgorICAgICAgICAvLyBXaXRoIEVTU0wgMy4w
MCBhbmQgYWJvdmUsIG5hbWVzIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBjYW5ub3QgYmUgcmVkZWNs
YXJlZCBhcyBmdW5jdGlvbnMuCiAgICAgICAgIC8vIFRoZXJlZm9yZSBvdmVybG9hZGluZyBvciBy
ZWRlZmluaW5nIGJ1aWx0aW4gZnVuY3Rpb25zIGlzIGFuIGVycm9yLgogICAgICAgICBlcnJvcihs
b2NhdGlvbiwgIk5hbWUgb2YgYSBidWlsdC1pbiBmdW5jdGlvbiBjYW5ub3QgYmUgcmVkZWNsYXJl
ZCBhcyBmdW5jdGlvbiIsCiAgICAgICAgICAgICAgIGZ1bmN0aW9uLT5nZXROYW1lKCkuY19zdHIo
KSk7CkBAIC0yMjM4LDcgKzI2NzYsNyBAQCBURnVuY3Rpb24gKlRQYXJzZUNvbnRleHQ6OnBhcnNl
RnVuY3Rpb25EZWNsYXJhdG9yKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLCBURgogICAgIHsK
ICAgICAgICAgaWYgKCFwcmV2U3ltLT5pc0Z1bmN0aW9uKCkpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGVycm9yKGxvY2F0aW9uLCAicmVkZWZpbml0aW9uIiwgZnVuY3Rpb24tPmdldE5hbWUoKS5j
X3N0cigpLCAiZnVuY3Rpb24iKTsKKyAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAicmVkZWZp
bml0aW9uIG9mIGEgZnVuY3Rpb24iLCBmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAg
ICAgICB9CiAgICAgfQogICAgIGVsc2UKQEAgLTIyNTEsNiArMjY4OSwyMCBAQCBURnVuY3Rpb24g
KlRQYXJzZUNvbnRleHQ6OnBhcnNlRnVuY3Rpb25EZWNsYXJhdG9yKGNvbnN0IFRTb3VyY2VMb2Mg
JmxvY2F0aW9uLCBURgogICAgIC8vIEFkZCB0aGUgZnVuY3Rpb24gcHJvdG90eXBlIHRvIHRoZSBz
dXJyb3VuZGluZyBzY29wZSBpbnN0ZWFkLgogICAgIHN5bWJvbFRhYmxlLmdldE91dGVyTGV2ZWwo
KS0+aW5zZXJ0KGZ1bmN0aW9uKTsKIAorICAgIC8vIFJhaXNlIGVycm9yIG1lc3NhZ2UgaWYgbWFp
biBmdW5jdGlvbiB0YWtlcyBhbnkgcGFyYW1ldGVycyBvciByZXR1cm4gYW55dGhpbmcgb3RoZXIg
dGhhbiB2b2lkCisgICAgaWYgKGZ1bmN0aW9uLT5nZXROYW1lKCkgPT0gIm1haW4iKQorICAgIHsK
KyAgICAgICAgaWYgKGZ1bmN0aW9uLT5nZXRQYXJhbUNvdW50KCkgPiAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJh
bWV0ZXIocykiLCAibWFpbiIpOworICAgICAgICB9CisgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0
UmV0dXJuVHlwZSgpLmdldEJhc2ljVHlwZSgpICE9IEVidFZvaWQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGVycm9yKGxvY2F0aW9uLCAibWFpbiBmdW5jdGlvbiBjYW5ub3QgcmV0dXJuIGEgdmFs
dWUiLAorICAgICAgICAgICAgICAgICAgZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNp
Y1N0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8vCiAgICAgLy8gSWYgdGhpcyBp
cyBhIHJlZGVjbGFyYXRpb24sIGl0IGNvdWxkIGFsc28gYmUgYSBkZWZpbml0aW9uLCBpbiB3aGlj
aCBjYXNlLCB3ZSB3YW50IHRvIHVzZSB0aGUKICAgICAvLyB2YXJpYWJsZSBuYW1lcyBmcm9tIHRo
aXMgb25lLCBhbmQgbm90IHRoZSBvbmUgdGhhdCdzCkBAIC0yMjcyLDE0ICsyNzI0LDE1IEBAIFRG
dW5jdGlvbiAqVFBhcnNlQ29udGV4dDo6cGFyc2VGdW5jdGlvbkhlYWRlcihjb25zdCBUUHVibGlj
VHlwZSAmdHlwZSwKICAgICB7CiAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAibm8gcXVhbGlmaWVy
cyBhbGxvd2VkIGZvciBmdW5jdGlvbiByZXR1cm4iLCAibGF5b3V0Iik7CiAgICAgfQotICAgIC8v
IG1ha2Ugc3VyZSBhIHNhbXBsZXIgaXMgbm90IGludm9sdmVkIGFzIHdlbGwuLi4KKyAgICAvLyBt
YWtlIHN1cmUgYSBzYW1wbGVyIG9yIGFuIGltYWdlIGlzIG5vdCBpbnZvbHZlZCBhcyB3ZWxsLi4u
CiAgICAgY2hlY2tJc05vdFNhbXBsZXIobG9jYXRpb24sIHR5cGUudHlwZVNwZWNpZmllck5vbkFy
cmF5LAogICAgICAgICAgICAgICAgICAgICAgICJzYW1wbGVycyBjYW4ndCBiZSBmdW5jdGlvbiBy
ZXR1cm4gdmFsdWVzIik7CisgICAgY2hlY2tJc05vdEltYWdlKGxvY2F0aW9uLCB0eXBlLnR5cGVT
cGVjaWZpZXJOb25BcnJheSwgImltYWdlcyBjYW4ndCBiZSBmdW5jdGlvbiByZXR1cm4gdmFsdWVz
Iik7CiAgICAgaWYgKG1TaGFkZXJWZXJzaW9uIDwgMzAwKQogICAgIHsKICAgICAgICAgLy8gQXJy
YXkgcmV0dXJuIHZhbHVlcyBhcmUgZm9yYmlkZGVuLCBidXQgdGhlcmUncyBhbHNvIG5vIHZhbGlk
IHN5bnRheCBmb3IgZGVjbGFyaW5nIGFycmF5CiAgICAgICAgIC8vIHJldHVybiB2YWx1ZXMgaW4g
RVNTTCAxLjAwLgotICAgICAgICBBU1NFUlQodHlwZS5hcnJheVNpemUgPT0gMCB8fCBtRGlhZ25v
c3RpY3MubnVtRXJyb3JzKCkgPiAwKTsKKyAgICAgICAgQVNTRVJUKHR5cGUuYXJyYXlTaXplID09
IDAgfHwgbURpYWdub3N0aWNzLT5udW1FcnJvcnMoKSA+IDApOwogCiAgICAgICAgIGlmICh0eXBl
LmlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cygpKQogICAgICAgICB7CkBAIC0yMzE1LDEzICsy
NzY4LDEyIEBAIFRGdW5jdGlvbiAqVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3JGdW5jKGNv
bnN0IFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlSW4pCiAgICAgICAgICAgICBlcnJvcihwdWJsaWNU
eXBlLmdldExpbmUoKSwgImNhbm5vdCBjb25zdHJ1Y3QgdGhpcyB0eXBlIiwKICAgICAgICAgICAg
ICAgICAgIGdldEJhc2ljU3RyaW5nKHB1YmxpY1R5cGUuZ2V0QmFzaWNUeXBlKCkpKTsKICAgICAg
ICAgICAgIHB1YmxpY1R5cGUuc2V0QmFzaWNUeXBlKEVidEZsb2F0KTsKLSAgICAgICAgICAgIG9w
ICAgICAgICAgICAgICA9IEVPcENvbnN0cnVjdEZsb2F0OworICAgICAgICAgICAgb3AgPSBFT3BD
b25zdHJ1Y3RGbG9hdDsKICAgICAgICAgfQogICAgIH0KIAotICAgIFRTdHJpbmcgdGVtcFN0cmlu
ZzsKICAgICBjb25zdCBUVHlwZSAqdHlwZSA9IG5ldyBUVHlwZShwdWJsaWNUeXBlKTsKLSAgICBy
ZXR1cm4gbmV3IFRGdW5jdGlvbigmdGVtcFN0cmluZywgdHlwZSwgb3ApOworICAgIHJldHVybiBu
ZXcgVEZ1bmN0aW9uKG51bGxwdHIsIHR5cGUsIG9wKTsKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBp
cyB1c2VkIHRvIHRlc3QgZm9yIHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgcGFyYW1ldGVycyBwYXNz
ZWQgdG8gdmFyaW91cyBjb25zdHJ1Y3RvcgpAQCAtMjMyOSw2NiArMjc4MSw0NCBAQCBURnVuY3Rp
b24gKlRQYXJzZUNvbnRleHQ6OmFkZENvbnN0cnVjdG9yRnVuYyhjb25zdCBUUHVibGljVHlwZSAm
cHVibGljVHlwZUluKQogLy8KIC8vIFJldHVybnMgYSBub2RlIHRvIGFkZCB0byB0aGUgdHJlZSBy
ZWdhcmRsZXNzIG9mIGlmIGFuIGVycm9yIHdhcyBnZW5lcmF0ZWQgb3Igbm90LgogLy8KLVRJbnRl
cm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3IoVEludGVybU5vZGUgKmFyZ3Vt
ZW50cywKK1RJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6YWRkQ29uc3RydWN0b3IoVEludGVy
bVNlcXVlbmNlICphcmd1bWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRPcGVyYXRvciBvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVEZ1bmN0aW9uICpmbkNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRUeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCiB7Ci0gICAgVFR5cGUg
dHlwZSA9IGZuQ2FsbC0+Z2V0UmV0dXJuVHlwZSgpOwogICAgIGlmICh0eXBlLmlzVW5zaXplZEFy
cmF5KCkpCiAgICAgewotICAgICAgICB0eXBlLnNldEFycmF5U2l6ZShzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KGZuQ2FsbC0+Z2V0UGFyYW1Db3VudCgpKSk7Ci0gICAgfQotICAgIGJvb2wgY29u
c3RUeXBlID0gdHJ1ZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZuQ2FsbC0+Z2V0UGFy
YW1Db3VudCgpOyArK2kpCi0gICAgewotICAgICAgICBjb25zdCBUQ29uc3RQYXJhbWV0ZXIgJnBh
cmFtID0gZm5DYWxsLT5nZXRQYXJhbShpKTsKLSAgICAgICAgaWYgKHBhcmFtLnR5cGUtPmdldFF1
YWxpZmllcigpICE9IEV2cUNvbnN0KQotICAgICAgICAgICAgY29uc3RUeXBlID0gZmFsc2U7Ci0g
ICAgfQotICAgIGlmIChjb25zdFR5cGUpCi0gICAgICAgIHR5cGUuc2V0UXVhbGlmaWVyKEV2cUNv
bnN0KTsKLQotICAgIGlmICghY2hlY2tDb25zdHJ1Y3RvckFyZ3VtZW50cyhsaW5lLCBhcmd1bWVu
dHMsICpmbkNhbGwsIG9wLCB0eXBlKSkKLSAgICB7Ci0gICAgICAgIFRJbnRlcm1UeXBlZCAqZHVt
bXlOb2RlID0gaW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKG51bGxwdHIsIG9wLCBs
aW5lKTsKLSAgICAgICAgZHVtbXlOb2RlLT5zZXRUeXBlKHR5cGUpOwotICAgICAgICByZXR1cm4g
ZHVtbXlOb2RlOworICAgICAgICBpZiAoYXJndW1lbnRzLT5lbXB0eSgpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBlcnJvcihsaW5lLCAiaW1wbGljaXRseSBzaXplZCBhcnJheSBjb25zdHJ1Y3Rv
ciBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IiwgIltdIik7CisgICAgICAgICAgICB0
eXBlLnNldEFycmF5U2l6ZSgxdSk7CisgICAgICAgICAgICByZXR1cm4gVEludGVybVR5cGVkOjpD
cmVhdGVaZXJvKHR5cGUpOworICAgICAgICB9CisgICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGludD4oYXJndW1lbnRzLT5zaXplKCkpKTsKICAgICB9Ci0gICAg
VEludGVybUFnZ3JlZ2F0ZSAqY29uc3RydWN0b3IgPSBhcmd1bWVudHMtPmdldEFzQWdncmVnYXRl
KCk7Ci0gICAgQVNTRVJUKGNvbnN0cnVjdG9yICE9IG51bGxwdHIpOwotCi0gICAgLy8gVHVybiB0
aGUgYXJndW1lbnQgbGlzdCBpdHNlbGYgaW50byBhIGNvbnN0cnVjdG9yCi0gICAgY29uc3RydWN0
b3ItPnNldE9wKG9wKTsKLSAgICBjb25zdHJ1Y3Rvci0+c2V0TGluZShsaW5lKTsKLSAgICBBU1NF
UlQoY29uc3RydWN0b3ItPmlzQ29uc3RydWN0b3IoKSk7CiAKLSAgICAvLyBOZWVkIHRvIHNldCB0
eXBlIGJlZm9yZSBzZXRQcmVjaXNpb25Gcm9tQ2hpbGRyZW4oKSBiZWNhdXNlIGJvb2wgZG9lc24n
dCBoYXZlIHByZWNpc2lvbi4KLSAgICBjb25zdHJ1Y3Rvci0+c2V0VHlwZSh0eXBlKTsKLQotICAg
IC8vIFN0cnVjdHMgc2hvdWxkIG5vdCBiZSBwcmVjaXNpb24gcXVhbGlmaWVkLCB0aGUgaW5kaXZp
ZHVhbCBtZW1iZXJzIG1heSBiZS4KLSAgICAvLyBCdWlsdC1pbiB0eXBlcyBvbiB0aGUgb3RoZXIg
aGFuZCBzaG91bGQgYmUgcHJlY2lzaW9uIHF1YWxpZmllZC4KLSAgICBpZiAob3AgIT0gRU9wQ29u
c3RydWN0U3RydWN0KQorICAgIGlmICghY2hlY2tDb25zdHJ1Y3RvckFyZ3VtZW50cyhsaW5lLCBh
cmd1bWVudHMsIG9wLCB0eXBlKSkKICAgICB7Ci0gICAgICAgIGNvbnN0cnVjdG9yLT5zZXRQcmVj
aXNpb25Gcm9tQ2hpbGRyZW4oKTsKLSAgICAgICAgdHlwZS5zZXRQcmVjaXNpb24oY29uc3RydWN0
b3ItPmdldFByZWNpc2lvbigpKTsKKyAgICAgICAgcmV0dXJuIFRJbnRlcm1UeXBlZDo6Q3JlYXRl
WmVybyh0eXBlKTsKICAgICB9CiAKLSAgICBjb25zdHJ1Y3Rvci0+c2V0VHlwZSh0eXBlKTsKKyAg
ICBUSW50ZXJtQWdncmVnYXRlICpjb25zdHJ1Y3Rvck5vZGUgPSBUSW50ZXJtQWdncmVnYXRlOjpD
cmVhdGVDb25zdHJ1Y3Rvcih0eXBlLCBvcCwgYXJndW1lbnRzKTsKKyAgICBjb25zdHJ1Y3Rvck5v
ZGUtPnNldExpbmUobGluZSk7CiAKLSAgICBUSW50ZXJtVHlwZWQgKmNvbnN0Q29uc3RydWN0b3Ig
PSBpbnRlcm1lZGlhdGUuZm9sZEFnZ3JlZ2F0ZUJ1aWx0SW4oY29uc3RydWN0b3IsICZtRGlhZ25v
c3RpY3MpOworICAgIFRJbnRlcm1UeXBlZCAqY29uc3RDb25zdHJ1Y3RvciA9CisgICAgICAgIGlu
dGVybWVkaWF0ZS5mb2xkQWdncmVnYXRlQnVpbHRJbihjb25zdHJ1Y3Rvck5vZGUsIG1EaWFnbm9z
dGljcyk7CiAgICAgaWYgKGNvbnN0Q29uc3RydWN0b3IpCiAgICAgewogICAgICAgICByZXR1cm4g
Y29uc3RDb25zdHJ1Y3RvcjsKICAgICB9CiAKLSAgICByZXR1cm4gY29uc3RydWN0b3I7CisgICAg
cmV0dXJuIGNvbnN0cnVjdG9yTm9kZTsKIH0KIAogLy8KIC8vIEludGVyZmFjZS91bmlmb3JtIGJs
b2NrcwogLy8KLVRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OmFkZEludGVyZmFjZUJs
b2NrKAorVEludGVybURlY2xhcmF0aW9uICpUUGFyc2VDb250ZXh0OjphZGRJbnRlcmZhY2VCbG9j
aygKICAgICBjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXIgJnR5cGVRdWFsaWZpZXJCdWlsZGVy
LAogICAgIGNvbnN0IFRTb3VyY2VMb2MgJm5hbWVMaW5lLAogICAgIGNvbnN0IFRTdHJpbmcgJmJs
b2NrTmFtZSwKQEAgLTI0MDAsMTIgKzI4MzAsMTIgQEAgVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNl
Q29udGV4dDo6YWRkSW50ZXJmYWNlQmxvY2soCiB7CiAgICAgY2hlY2tJc05vdFJlc2VydmVkKG5h
bWVMaW5lLCBibG9ja05hbWUpOwogCi0gICAgVFR5cGVRdWFsaWZpZXIgdHlwZVF1YWxpZmllciA9
IHR5cGVRdWFsaWZpZXJCdWlsZGVyLmdldFZhcmlhYmxlVHlwZVF1YWxpZmllcigmbURpYWdub3N0
aWNzKTsKKyAgICBUVHlwZVF1YWxpZmllciB0eXBlUXVhbGlmaWVyID0gdHlwZVF1YWxpZmllckJ1
aWxkZXIuZ2V0VmFyaWFibGVUeXBlUXVhbGlmaWVyKG1EaWFnbm9zdGljcyk7CiAKICAgICBpZiAo
dHlwZVF1YWxpZmllci5xdWFsaWZpZXIgIT0gRXZxVW5pZm9ybSkKICAgICB7Ci0gICAgICAgIGVy
cm9yKHR5cGVRdWFsaWZpZXIubGluZSwgImludmFsaWQgcXVhbGlmaWVyOiIsIGdldFF1YWxpZmll
clN0cmluZyh0eXBlUXVhbGlmaWVyLnF1YWxpZmllciksCi0gICAgICAgICAgICAgICJpbnRlcmZh
Y2UgYmxvY2tzIG11c3QgYmUgdW5pZm9ybSIpOworICAgICAgICBlcnJvcih0eXBlUXVhbGlmaWVy
LmxpbmUsICJpbnZhbGlkIHF1YWxpZmllcjogaW50ZXJmYWNlIGJsb2NrcyBtdXN0IGJlIHVuaWZv
cm0iLAorICAgICAgICAgICAgICBnZXRRdWFsaWZpZXJTdHJpbmcodHlwZVF1YWxpZmllci5xdWFs
aWZpZXIpKTsKICAgICB9CiAKICAgICBpZiAodHlwZVF1YWxpZmllci5pbnZhcmlhbnQpCkBAIC0y
NDEzLDYgKzI4NDMsMTMgQEAgVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6YWRkSW50
ZXJmYWNlQmxvY2soCiAgICAgICAgIGVycm9yKHR5cGVRdWFsaWZpZXIubGluZSwgImludmFsaWQg
cXVhbGlmaWVyIG9uIGludGVyZmFjZSBibG9jayBtZW1iZXIiLCAiaW52YXJpYW50Iik7CiAgICAg
fQogCisgICAgY2hlY2tNZW1vcnlRdWFsaWZpZXJJc05vdFNwZWNpZmllZCh0eXBlUXVhbGlmaWVy
Lm1lbW9yeVF1YWxpZmllciwgdHlwZVF1YWxpZmllci5saW5lKTsKKworICAgIC8vIFRPRE8ob2V0
dWFobyk6IFJlbW92ZSB0aGlzIGFuZCBzdXBwb3J0IGJpbmRpbmcgZm9yIGJsb2Nrcy4KKyAgICBj
aGVja0JpbmRpbmdJc05vdFNwZWNpZmllZCh0eXBlUXVhbGlmaWVyLmxpbmUsIHR5cGVRdWFsaWZp
ZXIubGF5b3V0UXVhbGlmaWVyLmJpbmRpbmcpOworCisgICAgY2hlY2tZdXZJc05vdFNwZWNpZmll
ZCh0eXBlUXVhbGlmaWVyLmxpbmUsIHR5cGVRdWFsaWZpZXIubGF5b3V0UXVhbGlmaWVyLnl1dik7
CisKICAgICBUTGF5b3V0UXVhbGlmaWVyIGJsb2NrTGF5b3V0UXVhbGlmaWVyID0gdHlwZVF1YWxp
Zmllci5sYXlvdXRRdWFsaWZpZXI7CiAgICAgY2hlY2tMb2NhdGlvbklzTm90U3BlY2lmaWVkKHR5
cGVRdWFsaWZpZXIubGluZSwgYmxvY2tMYXlvdXRRdWFsaWZpZXIpOwogCkBAIC0yNDI4LDEwICsy
ODY1LDEyIEBAIFRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OmFkZEludGVyZmFjZUJs
b2NrKAogCiAgICAgY2hlY2tXb3JrR3JvdXBTaXplSXNOb3RTcGVjaWZpZWQobmFtZUxpbmUsIGJs
b2NrTGF5b3V0UXVhbGlmaWVyKTsKIAorICAgIGNoZWNrSW50ZXJuYWxGb3JtYXRJc05vdFNwZWNp
ZmllZChuYW1lTGluZSwgYmxvY2tMYXlvdXRRdWFsaWZpZXIuaW1hZ2VJbnRlcm5hbEZvcm1hdCk7
CisKICAgICBUU3ltYm9sICpibG9ja05hbWVTeW1ib2wgPSBuZXcgVEludGVyZmFjZUJsb2NrTmFt
ZSgmYmxvY2tOYW1lKTsKICAgICBpZiAoIXN5bWJvbFRhYmxlLmRlY2xhcmUoYmxvY2tOYW1lU3lt
Ym9sKSkKICAgICB7Ci0gICAgICAgIGVycm9yKG5hbWVMaW5lLCAicmVkZWZpbml0aW9uIiwgYmxv
Y2tOYW1lLmNfc3RyKCksICJpbnRlcmZhY2UgYmxvY2sgbmFtZSIpOworICAgICAgICBlcnJvcihu
YW1lTGluZSwgInJlZGVmaW5pdGlvbiBvZiBhbiBpbnRlcmZhY2UgYmxvY2sgbmFtZSIsIGJsb2Nr
TmFtZS5jX3N0cigpKTsKICAgICB9CiAKICAgICAvLyBjaGVjayBmb3Igc2FtcGxlciB0eXBlcyBh
bmQgYXBwbHkgbGF5b3V0IHF1YWxpZmllcnMKQEAgLTI0NDEsOCArMjg4MCwxNiBAQCBUSW50ZXJt
QWdncmVnYXRlICpUUGFyc2VDb250ZXh0OjphZGRJbnRlcmZhY2VCbG9jaygKICAgICAgICAgVFR5
cGUgKmZpZWxkVHlwZSA9IGZpZWxkLT50eXBlKCk7CiAgICAgICAgIGlmIChJc1NhbXBsZXIoZmll
bGRUeXBlLT5nZXRCYXNpY1R5cGUoKSkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yKGZp
ZWxkLT5saW5lKCksICJ1bnN1cHBvcnRlZCB0eXBlIiwgZmllbGRUeXBlLT5nZXRCYXNpY1N0cmlu
ZygpLAotICAgICAgICAgICAgICAgICAgInNhbXBsZXIgdHlwZXMgYXJlIG5vdCBhbGxvd2VkIGlu
IGludGVyZmFjZSBibG9ja3MiKTsKKyAgICAgICAgICAgIGVycm9yKGZpZWxkLT5saW5lKCksCisg
ICAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgdHlwZSAtIHNhbXBsZXIgdHlwZXMgYXJlIG5v
dCBhbGxvd2VkIGluIGludGVyZmFjZSBibG9ja3MiLAorICAgICAgICAgICAgICAgICAgZmllbGRU
eXBlLT5nZXRCYXNpY1N0cmluZygpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChJc0ltYWdl
KGZpZWxkVHlwZS0+Z2V0QmFzaWNUeXBlKCkpKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJv
cihmaWVsZC0+bGluZSgpLAorICAgICAgICAgICAgICAgICAgInVuc3VwcG9ydGVkIHR5cGUgLSBp
bWFnZSB0eXBlcyBhcmUgbm90IGFsbG93ZWQgaW4gaW50ZXJmYWNlIGJsb2NrcyIsCisgICAgICAg
ICAgICAgICAgICBmaWVsZFR5cGUtPmdldEJhc2ljU3RyaW5nKCkpOwogICAgICAgICB9CiAKICAg
ICAgICAgY29uc3QgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBmaWVsZFR5cGUtPmdldFF1YWxpZmll
cigpOwpAQCAtMjQ2OCw4ICsyOTE1LDggQEAgVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4
dDo6YWRkSW50ZXJmYWNlQmxvY2soCiAKICAgICAgICAgaWYgKGZpZWxkTGF5b3V0UXVhbGlmaWVy
LmJsb2NrU3RvcmFnZSAhPSBFYnNVbnNwZWNpZmllZCkKICAgICAgICAgewotICAgICAgICAgICAg
ZXJyb3IoZmllbGQtPmxpbmUoKSwgImludmFsaWQgbGF5b3V0IHF1YWxpZmllcjoiLAotICAgICAg
ICAgICAgICAgICAgZ2V0QmxvY2tTdG9yYWdlU3RyaW5nKGZpZWxkTGF5b3V0UXVhbGlmaWVyLmJs
b2NrU3RvcmFnZSksICJjYW5ub3QgYmUgdXNlZCBoZXJlIik7CisgICAgICAgICAgICBlcnJvcihm
aWVsZC0+bGluZSgpLCAiaW52YWxpZCBsYXlvdXQgcXVhbGlmaWVyOiBjYW5ub3QgYmUgdXNlZCBo
ZXJlIiwKKyAgICAgICAgICAgICAgICAgIGdldEJsb2NrU3RvcmFnZVN0cmluZyhmaWVsZExheW91
dFF1YWxpZmllci5ibG9ja1N0b3JhZ2UpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChmaWVs
ZExheW91dFF1YWxpZmllci5tYXRyaXhQYWNraW5nID09IEVtcFVuc3BlY2lmaWVkKQpAQCAtMjQ3
OCw5ICsyOTI1LDkgQEAgVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6YWRkSW50ZXJm
YWNlQmxvY2soCiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoIWZpZWxkVHlwZS0+aXNNYXRy
aXgoKSAmJiBmaWVsZFR5cGUtPmdldEJhc2ljVHlwZSgpICE9IEVidFN0cnVjdCkKICAgICAgICAg
ewotICAgICAgICAgICAgd2FybmluZyhmaWVsZC0+bGluZSgpLCAiZXh0cmFuZW91cyBsYXlvdXQg
cXVhbGlmaWVyOiIsCi0gICAgICAgICAgICAgICAgICAgIGdldE1hdHJpeFBhY2tpbmdTdHJpbmco
ZmllbGRMYXlvdXRRdWFsaWZpZXIubWF0cml4UGFja2luZyksCi0gICAgICAgICAgICAgICAgICAg
ICJvbmx5IGhhcyBhbiBlZmZlY3Qgb24gbWF0cml4IHR5cGVzIik7CisgICAgICAgICAgICB3YXJu
aW5nKGZpZWxkLT5saW5lKCksCisgICAgICAgICAgICAgICAgICAgICJleHRyYW5lb3VzIGxheW91
dCBxdWFsaWZpZXI6IG9ubHkgaGFzIGFuIGVmZmVjdCBvbiBtYXRyaXggdHlwZXMiLAorICAgICAg
ICAgICAgICAgICAgICBnZXRNYXRyaXhQYWNraW5nU3RyaW5nKGZpZWxkTGF5b3V0UXVhbGlmaWVy
Lm1hdHJpeFBhY2tpbmcpKTsKICAgICAgICAgfQogCiAgICAgICAgIGZpZWxkVHlwZS0+c2V0TGF5
b3V0UXVhbGlmaWVyKGZpZWxkTGF5b3V0UXVhbGlmaWVyKTsKQEAgLTI1MTcsOCArMjk2NCw4IEBA
IFRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OmFkZEludGVyZmFjZUJsb2NrKAogCiAg
ICAgICAgICAgICBpZiAoIXN5bWJvbFRhYmxlLmRlY2xhcmUoZmllbGRWYXJpYWJsZSkpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZXJyb3IoZmllbGQtPmxpbmUoKSwgInJlZGVmaW5p
dGlvbiIsIGZpZWxkLT5uYW1lKCkuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAiaW50
ZXJmYWNlIGJsb2NrIG1lbWJlciBuYW1lIik7CisgICAgICAgICAgICAgICAgZXJyb3IoZmllbGQt
PmxpbmUoKSwgInJlZGVmaW5pdGlvbiBvZiBhbiBpbnRlcmZhY2UgYmxvY2sgbWVtYmVyIG5hbWUi
LAorICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLT5uYW1lKCkuY19zdHIoKSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0yNTMyLDIxICsyOTc5LDIyIEBAIFRJbnRlcm1B
Z2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OmFkZEludGVyZmFjZUJsb2NrKAogCiAgICAgICAgIGlm
ICghc3ltYm9sVGFibGUuZGVjbGFyZShpbnN0YW5jZVR5cGVEZWYpKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBlcnJvcihpbnN0YW5jZUxpbmUsICJyZWRlZmluaXRpb24iLCBpbnN0YW5jZU5hbWUt
PmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAiaW50ZXJmYWNlIGJsb2NrIGluc3RhbmNlIG5h
bWUiKTsKKyAgICAgICAgICAgIGVycm9yKGluc3RhbmNlTGluZSwgInJlZGVmaW5pdGlvbiBvZiBh
biBpbnRlcmZhY2UgYmxvY2sgaW5zdGFuY2UgbmFtZSIsCisgICAgICAgICAgICAgICAgICBpbnN0
YW5jZU5hbWUtPmNfc3RyKCkpOwogICAgICAgICB9CiAKICAgICAgICAgc3ltYm9sSWQgICA9IGlu
c3RhbmNlVHlwZURlZi0+Z2V0VW5pcXVlSWQoKTsKICAgICAgICAgc3ltYm9sTmFtZSA9IGluc3Rh
bmNlVHlwZURlZi0+Z2V0TmFtZSgpOwogICAgIH0KIAotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFn
Z3JlZ2F0ZSA9IFRJbnRlcm1lZGlhdGU6Ok1ha2VBZ2dyZWdhdGUoCi0gICAgICAgIGludGVybWVk
aWF0ZS5hZGRTeW1ib2woc3ltYm9sSWQsIHN5bWJvbE5hbWUsIGludGVyZmFjZUJsb2NrVHlwZSwg
dHlwZVF1YWxpZmllci5saW5lKSwKLSAgICAgICAgbmFtZUxpbmUpOwotICAgIGFnZ3JlZ2F0ZS0+
c2V0T3AoRU9wRGVjbGFyYXRpb24pOworICAgIFRJbnRlcm1TeW1ib2wgKmJsb2NrU3ltYm9sID0K
KyAgICAgICAgaW50ZXJtZWRpYXRlLmFkZFN5bWJvbChzeW1ib2xJZCwgc3ltYm9sTmFtZSwgaW50
ZXJmYWNlQmxvY2tUeXBlLCB0eXBlUXVhbGlmaWVyLmxpbmUpOworICAgIFRJbnRlcm1EZWNsYXJh
dGlvbiAqZGVjbGFyYXRpb24gPSBuZXcgVEludGVybURlY2xhcmF0aW9uKCk7CisgICAgZGVjbGFy
YXRpb24tPmFwcGVuZERlY2xhcmF0b3IoYmxvY2tTeW1ib2wpOworICAgIGRlY2xhcmF0aW9uLT5z
ZXRMaW5lKG5hbWVMaW5lKTsKIAogICAgIGV4aXRTdHJ1Y3REZWNsYXJhdGlvbigpOwotICAgIHJl
dHVybiBhZ2dyZWdhdGU7CisgICAgcmV0dXJuIGRlY2xhcmF0aW9uOwogfQogCiB2b2lkIFRQYXJz
ZUNvbnRleHQ6OmVudGVyU3RydWN0RGVjbGFyYXRpb24oY29uc3QgVFNvdXJjZUxvYyAmbGluZSwg
Y29uc3QgVFN0cmluZyAmaWRlbnRpZmllcikKQEAgLTI1NTQsMTEgKzMwMDIsMTAgQEAgdm9pZCBU
UGFyc2VDb250ZXh0OjplbnRlclN0cnVjdERlY2xhcmF0aW9uKGNvbnN0IFRTb3VyY2VMb2MgJmxp
bmUsIGNvbnN0IFRTdHJpbmcKICAgICArK21TdHJ1Y3ROZXN0aW5nTGV2ZWw7CiAKICAgICAvLyBF
bWJlZGRlZCBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMgYXJlIG5vdCBzdXBwb3J0ZWQgcGVyIEdMU0wg
RVMgc3BlYy4KLSAgICAvLyBUaGV5IGFyZW4ndCBhbGxvd2VkIGluIEdMU0wgZWl0aGVyLCBidXQg
d2UgbmVlZCB0byBkZXRlY3QgdGhpcyBoZXJlCi0gICAgLy8gc28gd2UgZG9uJ3QgcmVseSBvbiB0
aGUgR0xTTCBjb21waWxlciB0byBjYXRjaCBpdC4KKyAgICAvLyBFU1NMIDEuMDAuMTcgc2VjdGlv
biAxMC45LiBFU1NMIDMuMDAuNiBzZWN0aW9uIDEyLjExLgogICAgIGlmIChtU3RydWN0TmVzdGlu
Z0xldmVsID4gMSkKICAgICB7Ci0gICAgICAgIGVycm9yKGxpbmUsICIiLCAiRW1iZWRkZWQgc3Ry
dWN0IGRlZmluaXRpb25zIGFyZSBub3QgYWxsb3dlZCIpOworICAgICAgICBlcnJvcihsaW5lLCAi
RW1iZWRkZWQgc3RydWN0IGRlZmluaXRpb25zIGFyZSBub3QgYWxsb3dlZCIsICJzdHJ1Y3QiKTsK
ICAgICB9CiB9CiAKQEAgLTI1NjcsMTUgKzMwMTQsOSBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OmV4
aXRTdHJ1Y3REZWNsYXJhdGlvbigpCiAgICAgLS1tU3RydWN0TmVzdGluZ0xldmVsOwogfQogCi1u
YW1lc3BhY2UKLXsKLWNvbnN0IGludCBrV2ViR0xNYXhTdHJ1Y3ROZXN0aW5nID0gNDsKLQotfSAg
Ly8gbmFtZXNwYWNlCi0KIHZvaWQgVFBhcnNlQ29udGV4dDo6Y2hlY2tJc0JlbG93U3RydWN0TmVz
dGluZ0xpbWl0KGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRGaWVsZCAmZmllbGQpCiB7
Ci0gICAgaWYgKCFJc1dlYkdMQmFzZWRTcGVjKG1TaGFkZXJTcGVjKSkKKyAgICBpZiAoIXNoOjpJ
c1dlYkdMQmFzZWRTcGVjKG1TaGFkZXJTcGVjKSkKICAgICB7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0yNTkzLDcgKzMwMzQsNyBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNrSXNCZWxv
d1N0cnVjdE5lc3RpbmdMaW1pdChjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdAogICAgICAg
ICByZWFzb25TdHJlYW0gPDwgIlJlZmVyZW5jZSBvZiBzdHJ1Y3QgdHlwZSAiIDw8IGZpZWxkLnR5
cGUoKS0+Z2V0U3RydWN0KCktPm5hbWUoKS5jX3N0cigpCiAgICAgICAgICAgICAgICAgICAgICA8
PCAiIGV4Y2VlZHMgbWF4aW11bSBhbGxvd2VkIG5lc3RpbmcgbGV2ZWwgb2YgIiA8PCBrV2ViR0xN
YXhTdHJ1Y3ROZXN0aW5nOwogICAgICAgICBzdGQ6OnN0cmluZyByZWFzb24gPSByZWFzb25TdHJl
YW0uc3RyKCk7Ci0gICAgICAgIGVycm9yKGxpbmUsIHJlYXNvbi5jX3N0cigpLCBmaWVsZC5uYW1l
KCkuY19zdHIoKSwgIiIpOworICAgICAgICBlcnJvcihsaW5lLCByZWFzb24uY19zdHIoKSwgZmll
bGQubmFtZSgpLmNfc3RyKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpAQCAtMjYzMywx
OCArMzA3NCwxOCBAQCBUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEluZGV4RXhwcmVz
c2lvbihUSW50ZXJtVHlwZWQgKmJhc2VFeHByZXNzaW9uLAogICAgIHsKICAgICAgICAgaWYgKGJh
c2VFeHByZXNzaW9uLT5pc0ludGVyZmFjZUJsb2NrKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGVycm9yKAotICAgICAgICAgICAgICAgIGxvY2F0aW9uLCAiIiwgIlsiLAotICAgICAgICAgICAg
ICAgICJhcnJheSBpbmRleGVzIGZvciBpbnRlcmZhY2UgYmxvY2tzIGFycmF5cyBtdXN0IGJlIGNv
bnN0YW50IGludGVncmFsIGV4cHJlc3Npb25zIik7CisgICAgICAgICAgICBlcnJvcihsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICJhcnJheSBpbmRleGVzIGZvciBpbnRlcmZhY2UgYmxvY2tz
IGFycmF5cyBtdXN0IGJlIGNvbnN0YW50IGludGVncmFsIGV4cHJlc3Npb25zIiwKKyAgICAgICAg
ICAgICAgICAgICJbIik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoYmFzZUV4cHJlc3Np
b24tPmdldFF1YWxpZmllcigpID09IEV2cUZyYWdtZW50T3V0KQogICAgICAgICB7Ci0gICAgICAg
ICAgICBlcnJvcihsb2NhdGlvbiwgIiIsICJbIiwKLSAgICAgICAgICAgICAgICAgICJhcnJheSBp
bmRleGVzIGZvciBmcmFnbWVudCBvdXRwdXRzIG11c3QgYmUgY29uc3RhbnQgaW50ZWdyYWwgZXhw
cmVzc2lvbnMiKTsKKyAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgImFycmF5IGluZGV4ZXMgZm9yIGZyYWdtZW50IG91dHB1dHMgbXVzdCBiZSBjb25zdGFudCBp
bnRlZ3JhbCBleHByZXNzaW9ucyIsICJbIik7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAo
bVNoYWRlclNwZWMgPT0gU0hfV0VCR0wyX1NQRUMgJiYgYmFzZUV4cHJlc3Npb24tPmdldFF1YWxp
ZmllcigpID09IEV2cUZyYWdEYXRhKQogICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvcihsb2Nh
dGlvbiwgIiIsICJbIiwgImFycmF5IGluZGV4IGZvciBnbF9GcmFnRGF0YSBtdXN0IGJlIGNvbnN0
YW50IHplcm8iKTsKKyAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiYXJyYXkgaW5kZXggZm9y
IGdsX0ZyYWdEYXRhIG11c3QgYmUgY29uc3RhbnQgemVybyIsICJbIik7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTI2NTYsNyArMzA5Nyw3IEBAIFRJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6
YWRkSW5kZXhFeHByZXNzaW9uKFRJbnRlcm1UeXBlZCAqYmFzZUV4cHJlc3Npb24sCiAgICAgICAg
IC8vIGhhbmRsZSB0aGlzIGNhc2UgaXMgdG8gcmVwb3J0IGEgd2FybmluZyBpbnN0ZWFkIG9mIGFu
IGVycm9yIGFuZCBmb3JjZSB0aGUgaW5kZXggdG8gYmUgaW4KICAgICAgICAgLy8gdGhlIGNvcnJl
Y3QgcmFuZ2UuCiAgICAgICAgIGJvb2wgb3V0T2ZSYW5nZUluZGV4SXNFcnJvciA9IGluZGV4RXhw
cmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3Q7Ci0gICAgICAgIGludCBpbmRleCA9
IGluZGV4Q29uc3RhbnRVbmlvbi0+Z2V0SUNvbnN0KDApOworICAgICAgICBpbnQgaW5kZXggICAg
ICAgICAgICAgICAgICAgPSBpbmRleENvbnN0YW50VW5pb24tPmdldElDb25zdCgwKTsKIAogICAg
ICAgICBpbnQgc2FmZUluZGV4ID0gLTE7CiAKQEAgLTI2NjksMTYgKzMxMTAsMTYgQEAgVEludGVy
bVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRJbmRleEV4cHJlc3Npb24oVEludGVybVR5cGVkICpi
YXNlRXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgLy8gRXJyb3IgaGFzIGJlZW4gYWxy
ZWFkeSBnZW5lcmF0ZWQgaWYgaW5kZXggaXMgbm90IGNvbnN0LgogICAgICAgICAgICAgICAgICAg
ICBpZiAoaW5kZXhFeHByZXNzaW9uLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFDb25zdCkKICAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IobG9jYXRpb24s
ICIiLCAiWyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJyYXkgaW5kZXggZm9y
IGdsX0ZyYWdEYXRhIG11c3QgYmUgY29uc3RhbnQgemVybyIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZXJyb3IobG9jYXRpb24sICJhcnJheSBpbmRleCBmb3IgZ2xfRnJhZ0RhdGEgbXVzdCBi
ZSBjb25zdGFudCB6ZXJvIiwgIlsiKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICBzYWZlSW5kZXggPSAwOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBlbHNlIGlmICghaXNFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIikp
CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBvdXRPZlJhbmdlRXJyb3Io
b3V0T2ZSYW5nZUluZGV4SXNFcnJvciwgbG9jYXRpb24sICIiLCAiWyIsCisgICAgICAgICAgICAg
ICAgICAgIG91dE9mUmFuZ2VFcnJvcihvdXRPZlJhbmdlSW5kZXhJc0Vycm9yLCBsb2NhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcnJheSBpbmRleCBmb3IgZ2xf
RnJhZ0RhdGEgbXVzdCBiZSB6ZXJvIHdoZW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkdMX0VYVF9kcmF3X2J1ZmZlcnMgaXMgZGlzYWJsZWQiKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJHTF9FWFRfZHJhd19idWZmZXJzIGlzIGRpc2FibGVk
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbIik7CiAgICAgICAgICAg
ICAgICAgICAgIHNhZmVJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQpAQCAtMjY4NywyMCArMzEyOCwyMCBAQCBUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFk
ZEluZGV4RXhwcmVzc2lvbihUSW50ZXJtVHlwZWQgKmJhc2VFeHByZXNzaW9uLAogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIHNhZmVJbmRleCA9IGNoZWNrSW5kZXhPdXRPZlJhbmdlKG91
dE9mUmFuZ2VJbmRleElzRXJyb3IsIGxvY2F0aW9uLCBpbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlRXhwcmVzc2lvbi0+Z2V0QXJyYXlT
aXplKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImFycmF5IGluZGV4IG91dCBvZiByYW5nZSIsICJbXSIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcnJheSBpbmRleCBvdXQgb2YgcmFuZ2UiKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lv
bi0+aXNNYXRyaXgoKSkKICAgICAgICAgewogICAgICAgICAgICAgc2FmZUluZGV4ID0gY2hlY2tJ
bmRleE91dE9mUmFuZ2Uob3V0T2ZSYW5nZUluZGV4SXNFcnJvciwgbG9jYXRpb24sIGluZGV4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUV4cHJlc3Np
b24tPmdldFR5cGUoKS5nZXRDb2xzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAibWF0cml4IGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UiLCAiW10i
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXRyaXgg
ZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSIpOwogICAgICAgICB9CiAgICAgICAgIGVsc2Ug
aWYgKGJhc2VFeHByZXNzaW9uLT5pc1ZlY3RvcigpKQogICAgICAgICB7CiAgICAgICAgICAgICBz
YWZlSW5kZXggPSBjaGVja0luZGV4T3V0T2ZSYW5nZShvdXRPZlJhbmdlSW5kZXhJc0Vycm9yLCBs
b2NhdGlvbiwgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBiYXNlRXhwcmVzc2lvbi0+Z2V0VHlwZSgpLmdldE5vbWluYWxTaXplKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmVjdG9yIGZpZWxkIHNlbGVj
dGlvbiBvdXQgb2YgcmFuZ2UiLCAiW10iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ2ZWN0b3IgZmllbGQgc2VsZWN0aW9uIG91dCBvZiByYW5nZSIpOwog
ICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKHNhZmVJbmRleCA+PSAwKTsKQEAgLTI3MTUsMTIg
KzMxNTYsMTIgQEAgVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRJbmRleEV4cHJlc3Np
b24oVEludGVybVR5cGVkICpiYXNlRXhwcmVzc2lvbiwKICAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiBpbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3QsIGJhc2VFeHByZXNzaW9u
LCBpbmRleEV4cHJlc3Npb24sIGxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZtRGlhZ25vc3RpY3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1EaWFnbm9zdGljcyk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CiAgICAgICAgIHJl
dHVybiBpbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhJbmRpcmVjdCwgYmFzZUV4cHJlc3Np
b24sIGluZGV4RXhwcmVzc2lvbiwgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJm1EaWFnbm9zdGljcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbURpYWdub3N0aWNzKTsKICAgICB9CiB9CiAKQEAgLTI3MjgsMTUgKzMxNjksMTQg
QEAgaW50IFRQYXJzZUNvbnRleHQ6OmNoZWNrSW5kZXhPdXRPZlJhbmdlKGJvb2wgb3V0T2ZSYW5n
ZUluZGV4SXNFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGFycmF5U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyICpyZWFzb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqdG9rZW4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKQogewogICAgIGlmIChpbmRleCA+PSBhcnJh
eVNpemUgfHwgaW5kZXggPCAwKQogICAgIHsKLSAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0
cmFJbmZvU3RyZWFtOwotICAgICAgICBleHRyYUluZm9TdHJlYW0gPDwgIiciIDw8IGluZGV4IDw8
ICInIjsKLSAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0
cigpOwotICAgICAgICBvdXRPZlJhbmdlRXJyb3Iob3V0T2ZSYW5nZUluZGV4SXNFcnJvciwgbG9j
YXRpb24sIHJlYXNvbiwgdG9rZW4sIGV4dHJhSW5mby5jX3N0cigpKTsKKyAgICAgICAgc3RkOjpz
dHJpbmdzdHJlYW0gcmVhc29uU3RyZWFtOworICAgICAgICByZWFzb25TdHJlYW0gPDwgcmVhc29u
IDw8ICIgJyIgPDwgaW5kZXggPDwgIiciOworICAgICAgICBzdGQ6OnN0cmluZyB0b2tlbiA9IHJl
YXNvblN0cmVhbS5zdHIoKTsKKyAgICAgICAgb3V0T2ZSYW5nZUVycm9yKG91dE9mUmFuZ2VJbmRl
eElzRXJyb3IsIGxvY2F0aW9uLCByZWFzb24sICJbXSIpOwogICAgICAgICBpZiAoaW5kZXggPCAw
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTI3OTcsNyArMzIzNyw3IEBA
IFRJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6YWRkRmllbGRTZWxlY3Rpb25FeHByZXNzaW9u
KFRJbnRlcm1UeXBlZCAqYmFzZUV4cHJlCiAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpp
bmRleCA9IFRJbnRlcm1UeXBlZDo6Q3JlYXRlSW5kZXhOb2RlKGkpOwogICAgICAgICAgICAgICAg
IGluZGV4LT5zZXRMaW5lKGZpZWxkTG9jYXRpb24pOwogICAgICAgICAgICAgICAgIHJldHVybiBp
bnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3RTdHJ1Y3QsIGJhc2VFeHByZXNzaW9u
LCBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRv
dExvY2F0aW9uLCAmbURpYWdub3N0aWNzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRvdExvY2F0aW9uLCBtRGlhZ25vc3RpY3MpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewpAQCAtMjgzMSw3ICszMjcxLDcgQEAg
VEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRGaWVsZFNlbGVjdGlvbkV4cHJlc3Npb24o
VEludGVybVR5cGVkICpiYXNlRXhwcmUKICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmlu
ZGV4ID0gVEludGVybVR5cGVkOjpDcmVhdGVJbmRleE5vZGUoaSk7CiAgICAgICAgICAgICAgICAg
aW5kZXgtPnNldExpbmUoZmllbGRMb2NhdGlvbik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGlu
dGVybWVkaWF0ZS5hZGRJbmRleChFT3BJbmRleERpcmVjdEludGVyZmFjZUJsb2NrLCBiYXNlRXhw
cmVzc2lvbiwgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkb3RMb2NhdGlvbiwgJm1EaWFnbm9zdGljcyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkb3RMb2NhdGlvbiwgbURpYWdub3N0aWNzKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKQEAgLTI4NjUsNyArMzMw
NSw3IEBAIFRMYXlvdXRRdWFsaWZpZXIgVFBhcnNlQ29udGV4dDo6cGFyc2VMYXlvdXRRdWFsaWZp
ZXIoY29uc3QgVFN0cmluZyAmcXVhbGlmaWVyVHlwCiAKICAgICBpZiAocXVhbGlmaWVyVHlwZSA9
PSAic2hhcmVkIikKICAgICB7Ci0gICAgICAgIGlmIChJc1dlYkdMQmFzZWRTcGVjKG1TaGFkZXJT
cGVjKSkKKyAgICAgICAgaWYgKHNoOjpJc1dlYkdMQmFzZWRTcGVjKG1TaGFkZXJTcGVjKSkKICAg
ICAgICAgewogICAgICAgICAgICAgZXJyb3IocXVhbGlmaWVyVHlwZUxpbmUsICJPbmx5IHN0ZDE0
MCBsYXlvdXQgaXMgYWxsb3dlZCBpbiBXZWJHTCIsICJzaGFyZWQiKTsKICAgICAgICAgfQpAQCAt
Mjg3Myw3ICszMzEzLDcgQEAgVExheW91dFF1YWxpZmllciBUUGFyc2VDb250ZXh0OjpwYXJzZUxh
eW91dFF1YWxpZmllcihjb25zdCBUU3RyaW5nICZxdWFsaWZpZXJUeXAKICAgICB9CiAgICAgZWxz
ZSBpZiAocXVhbGlmaWVyVHlwZSA9PSAicGFja2VkIikKICAgICB7Ci0gICAgICAgIGlmIChJc1dl
YkdMQmFzZWRTcGVjKG1TaGFkZXJTcGVjKSkKKyAgICAgICAgaWYgKHNoOjpJc1dlYkdMQmFzZWRT
cGVjKG1TaGFkZXJTcGVjKSkKICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IocXVhbGlmaWVy
VHlwZUxpbmUsICJPbmx5IHN0ZDE0MCBsYXlvdXQgaXMgYWxsb3dlZCBpbiBXZWJHTCIsICJwYWNr
ZWQiKTsKICAgICAgICAgfQpAQCAtMjg5Myw5ICszMzMzLDgwIEBAIFRMYXlvdXRRdWFsaWZpZXIg
VFBhcnNlQ29udGV4dDo6cGFyc2VMYXlvdXRRdWFsaWZpZXIoY29uc3QgVFN0cmluZyAmcXVhbGlm
aWVyVHlwCiAgICAgfQogICAgIGVsc2UgaWYgKHF1YWxpZmllclR5cGUgPT0gImxvY2F0aW9uIikK
ICAgICB7Ci0gICAgICAgIGVycm9yKHF1YWxpZmllclR5cGVMaW5lLCAiaW52YWxpZCBsYXlvdXQg
cXVhbGlmaWVyIiwgcXVhbGlmaWVyVHlwZS5jX3N0cigpLAotICAgICAgICAgICAgICAibG9jYXRp
b24gcmVxdWlyZXMgYW4gYXJndW1lbnQiKTsKKyAgICAgICAgZXJyb3IocXVhbGlmaWVyVHlwZUxp
bmUsICJpbnZhbGlkIGxheW91dCBxdWFsaWZpZXI6IGxvY2F0aW9uIHJlcXVpcmVzIGFuIGFyZ3Vt
ZW50IiwKKyAgICAgICAgICAgICAgcXVhbGlmaWVyVHlwZS5jX3N0cigpKTsKKyAgICB9CisgICAg
ZWxzZSBpZiAocXVhbGlmaWVyVHlwZSA9PSAieXV2IiAmJiBpc0V4dGVuc2lvbkVuYWJsZWQoIkdM
X0VYVF9ZVVZfdGFyZ2V0IikgJiYKKyAgICAgICAgICAgICBtU2hhZGVyVHlwZSA9PSBHTF9GUkFH
TUVOVF9TSEFERVIpCisgICAgeworICAgICAgICBxdWFsaWZpZXIueXV2ID0gdHJ1ZTsKKyAgICB9
CisgICAgZWxzZSBpZiAocXVhbGlmaWVyVHlwZSA9PSAicmdiYTMyZiIpCisgICAgeworICAgICAg
ICBjaGVja0xheW91dFF1YWxpZmllclN1cHBvcnRlZChxdWFsaWZpZXJUeXBlTGluZSwgcXVhbGlm
aWVyVHlwZSwgMzEwKTsKKyAgICAgICAgcXVhbGlmaWVyLmltYWdlSW50ZXJuYWxGb3JtYXQgPSBF
aWlmUkdCQTMyRjsKKyAgICB9CisgICAgZWxzZSBpZiAocXVhbGlmaWVyVHlwZSA9PSAicmdiYTE2
ZiIpCisgICAgeworICAgICAgICBjaGVja0xheW91dFF1YWxpZmllclN1cHBvcnRlZChxdWFsaWZp
ZXJUeXBlTGluZSwgcXVhbGlmaWVyVHlwZSwgMzEwKTsKKyAgICAgICAgcXVhbGlmaWVyLmltYWdl
SW50ZXJuYWxGb3JtYXQgPSBFaWlmUkdCQTE2RjsKKyAgICB9CisgICAgZWxzZSBpZiAocXVhbGlm
aWVyVHlwZSA9PSAicjMyZiIpCisgICAgeworICAgICAgICBjaGVja0xheW91dFF1YWxpZmllclN1
cHBvcnRlZChxdWFsaWZpZXJUeXBlTGluZSwgcXVhbGlmaWVyVHlwZSwgMzEwKTsKKyAgICAgICAg
cXVhbGlmaWVyLmltYWdlSW50ZXJuYWxGb3JtYXQgPSBFaWlmUjMyRjsKKyAgICB9CisgICAgZWxz
ZSBpZiAocXVhbGlmaWVyVHlwZSA9PSAicmdiYTgiKQorICAgIHsKKyAgICAgICAgY2hlY2tMYXlv
dXRRdWFsaWZpZXJTdXBwb3J0ZWQocXVhbGlmaWVyVHlwZUxpbmUsIHF1YWxpZmllclR5cGUsIDMx
MCk7CisgICAgICAgIHF1YWxpZmllci5pbWFnZUludGVybmFsRm9ybWF0ID0gRWlpZlJHQkE4Owor
ICAgIH0KKyAgICBlbHNlIGlmIChxdWFsaWZpZXJUeXBlID09ICJyZ2JhOF9zbm9ybSIpCisgICAg
eworICAgICAgICBjaGVja0xheW91dFF1YWxpZmllclN1cHBvcnRlZChxdWFsaWZpZXJUeXBlTGlu
ZSwgcXVhbGlmaWVyVHlwZSwgMzEwKTsKKyAgICAgICAgcXVhbGlmaWVyLmltYWdlSW50ZXJuYWxG
b3JtYXQgPSBFaWlmUkdCQThfU05PUk07CisgICAgfQorICAgIGVsc2UgaWYgKHF1YWxpZmllclR5
cGUgPT0gInJnYmEzMmkiKQorICAgIHsKKyAgICAgICAgY2hlY2tMYXlvdXRRdWFsaWZpZXJTdXBw
b3J0ZWQocXVhbGlmaWVyVHlwZUxpbmUsIHF1YWxpZmllclR5cGUsIDMxMCk7CisgICAgICAgIHF1
YWxpZmllci5pbWFnZUludGVybmFsRm9ybWF0ID0gRWlpZlJHQkEzMkk7CisgICAgfQorICAgIGVs
c2UgaWYgKHF1YWxpZmllclR5cGUgPT0gInJnYmExNmkiKQorICAgIHsKKyAgICAgICAgY2hlY2tM
YXlvdXRRdWFsaWZpZXJTdXBwb3J0ZWQocXVhbGlmaWVyVHlwZUxpbmUsIHF1YWxpZmllclR5cGUs
IDMxMCk7CisgICAgICAgIHF1YWxpZmllci5pbWFnZUludGVybmFsRm9ybWF0ID0gRWlpZlJHQkEx
Nkk7CisgICAgfQorICAgIGVsc2UgaWYgKHF1YWxpZmllclR5cGUgPT0gInJnYmE4aSIpCisgICAg
eworICAgICAgICBjaGVja0xheW91dFF1YWxpZmllclN1cHBvcnRlZChxdWFsaWZpZXJUeXBlTGlu
ZSwgcXVhbGlmaWVyVHlwZSwgMzEwKTsKKyAgICAgICAgcXVhbGlmaWVyLmltYWdlSW50ZXJuYWxG
b3JtYXQgPSBFaWlmUkdCQThJOworICAgIH0KKyAgICBlbHNlIGlmIChxdWFsaWZpZXJUeXBlID09
ICJyMzJpIikKKyAgICB7CisgICAgICAgIGNoZWNrTGF5b3V0UXVhbGlmaWVyU3VwcG9ydGVkKHF1
YWxpZmllclR5cGVMaW5lLCBxdWFsaWZpZXJUeXBlLCAzMTApOworICAgICAgICBxdWFsaWZpZXIu
aW1hZ2VJbnRlcm5hbEZvcm1hdCA9IEVpaWZSMzJJOwogICAgIH0KKyAgICBlbHNlIGlmIChxdWFs
aWZpZXJUeXBlID09ICJyZ2JhMzJ1aSIpCisgICAgeworICAgICAgICBjaGVja0xheW91dFF1YWxp
ZmllclN1cHBvcnRlZChxdWFsaWZpZXJUeXBlTGluZSwgcXVhbGlmaWVyVHlwZSwgMzEwKTsKKyAg
ICAgICAgcXVhbGlmaWVyLmltYWdlSW50ZXJuYWxGb3JtYXQgPSBFaWlmUkdCQTMyVUk7CisgICAg
fQorICAgIGVsc2UgaWYgKHF1YWxpZmllclR5cGUgPT0gInJnYmExNnVpIikKKyAgICB7CisgICAg
ICAgIGNoZWNrTGF5b3V0UXVhbGlmaWVyU3VwcG9ydGVkKHF1YWxpZmllclR5cGVMaW5lLCBxdWFs
aWZpZXJUeXBlLCAzMTApOworICAgICAgICBxdWFsaWZpZXIuaW1hZ2VJbnRlcm5hbEZvcm1hdCA9
IEVpaWZSR0JBMTZVSTsKKyAgICB9CisgICAgZWxzZSBpZiAocXVhbGlmaWVyVHlwZSA9PSAicmdi
YTh1aSIpCisgICAgeworICAgICAgICBjaGVja0xheW91dFF1YWxpZmllclN1cHBvcnRlZChxdWFs
aWZpZXJUeXBlTGluZSwgcXVhbGlmaWVyVHlwZSwgMzEwKTsKKyAgICAgICAgcXVhbGlmaWVyLmlt
YWdlSW50ZXJuYWxGb3JtYXQgPSBFaWlmUkdCQThVSTsKKyAgICB9CisgICAgZWxzZSBpZiAocXVh
bGlmaWVyVHlwZSA9PSAicjMydWkiKQorICAgIHsKKyAgICAgICAgY2hlY2tMYXlvdXRRdWFsaWZp
ZXJTdXBwb3J0ZWQocXVhbGlmaWVyVHlwZUxpbmUsIHF1YWxpZmllclR5cGUsIDMxMCk7CisgICAg
ICAgIHF1YWxpZmllci5pbWFnZUludGVybmFsRm9ybWF0ID0gRWlpZlIzMlVJOworICAgIH0KKwog
ICAgIGVsc2UKICAgICB7CiAgICAgICAgIGVycm9yKHF1YWxpZmllclR5cGVMaW5lLCAiaW52YWxp
ZCBsYXlvdXQgcXVhbGlmaWVyIiwgcXVhbGlmaWVyVHlwZS5jX3N0cigpKTsKQEAgLTI5MTUsMTIg
KzM0MjYsMjggQEAgdm9pZCBUUGFyc2VDb250ZXh0OjpwYXJzZUxvY2FsU2l6ZShjb25zdCBUU3Ry
aW5nICZxdWFsaWZpZXJUeXBlLAogICAgIGNoZWNrTGF5b3V0UXVhbGlmaWVyU3VwcG9ydGVkKHF1
YWxpZmllclR5cGVMaW5lLCBxdWFsaWZpZXJUeXBlLCAzMTApOwogICAgIGlmIChpbnRWYWx1ZSA8
IDEpCiAgICAgewotICAgICAgICBzdGQ6OnN0cmluZyBlcnJvck1lc3NhZ2UgPSBzdGQ6OnN0cmlu
ZyhnZXRXb3JrR3JvdXBTaXplU3RyaW5nKGluZGV4KSkgKyAiIG11c3QgYmUgcG9zaXRpdmUiOwot
ICAgICAgICBlcnJvcihpbnRWYWx1ZUxpbmUsICJvdXQgb2YgcmFuZ2U6IiwgaW50VmFsdWVTdHJp
bmcuY19zdHIoKSwgZXJyb3JNZXNzYWdlLmNfc3RyKCkpOworICAgICAgICBzdGQ6OnN0cmluZ3N0
cmVhbSByZWFzb25TdHJlYW07CisgICAgICAgIHJlYXNvblN0cmVhbSA8PCAib3V0IG9mIHJhbmdl
OiAiIDw8IGdldFdvcmtHcm91cFNpemVTdHJpbmcoaW5kZXgpIDw8ICIgbXVzdCBiZSBwb3NpdGl2
ZSI7CisgICAgICAgIHN0ZDo6c3RyaW5nIHJlYXNvbiA9IHJlYXNvblN0cmVhbS5zdHIoKTsKKyAg
ICAgICAgZXJyb3IoaW50VmFsdWVMaW5lLCByZWFzb24uY19zdHIoKSwgaW50VmFsdWVTdHJpbmcu
Y19zdHIoKSk7CiAgICAgfQogICAgICgqbG9jYWxTaXplKVtpbmRleF0gPSBpbnRWYWx1ZTsKIH0K
IAordm9pZCBUUGFyc2VDb250ZXh0OjpwYXJzZU51bVZpZXdzKGludCBpbnRWYWx1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbnRWYWx1ZUxp
bmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
JmludFZhbHVlU3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAq
bnVtVmlld3MpCit7CisgICAgLy8gVGhpcyBlcnJvciBpcyBvbmx5IHNwZWNpZmllZCBpbiBXZWJH
TCwgYnV0IHRpZ2h0ZW5zIHVuc3BlY2lmaWVkIGJlaGF2aW9yIGluIHRoZSBuYXRpdmUKKyAgICAv
LyBzcGVjaWZpY2F0aW9uLgorICAgIGlmIChpbnRWYWx1ZSA8IDEpCisgICAgeworICAgICAgICBl
cnJvcihpbnRWYWx1ZUxpbmUsICJvdXQgb2YgcmFuZ2U6IG51bV92aWV3cyBtdXN0IGJlIHBvc2l0
aXZlIiwgaW50VmFsdWVTdHJpbmcuY19zdHIoKSk7CisgICAgfQorICAgICpudW1WaWV3cyA9IGlu
dFZhbHVlOworfQorCiBUTGF5b3V0UXVhbGlmaWVyIFRQYXJzZUNvbnRleHQ6OnBhcnNlTGF5b3V0
UXVhbGlmaWVyKGNvbnN0IFRTdHJpbmcgJnF1YWxpZmllclR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJnF1
YWxpZmllclR5cGVMaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgaW50VmFsdWUsCkBAIC0yOTM1LDE1ICszNDYyLDI4IEBAIFRMYXlv
dXRRdWFsaWZpZXIgVFBhcnNlQ29udGV4dDo6cGFyc2VMYXlvdXRRdWFsaWZpZXIoY29uc3QgVFN0
cmluZyAmcXVhbGlmaWVyVHlwCiAgICAgICAgIC8vIG11c3QgY2hlY2sgdGhhdCBsb2NhdGlvbiBp
cyBub24tbmVnYXRpdmUKICAgICAgICAgaWYgKGludFZhbHVlIDwgMCkKICAgICAgICAgewotICAg
ICAgICAgICAgZXJyb3IoaW50VmFsdWVMaW5lLCAib3V0IG9mIHJhbmdlOiIsIGludFZhbHVlU3Ry
aW5nLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAibG9jYXRpb24gbXVzdCBiZSBub24tbmVn
YXRpdmUiKTsKKyAgICAgICAgICAgIGVycm9yKGludFZhbHVlTGluZSwgIm91dCBvZiByYW5nZTog
bG9jYXRpb24gbXVzdCBiZSBub24tbmVnYXRpdmUiLAorICAgICAgICAgICAgICAgICAgaW50VmFs
dWVTdHJpbmcuY19zdHIoKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0g
ICAgICAgICAgICBxdWFsaWZpZXIubG9jYXRpb24gPSBpbnRWYWx1ZTsKKyAgICAgICAgICAgIHF1
YWxpZmllci5sb2NhdGlvbiAgICAgICAgICAgPSBpbnRWYWx1ZTsKICAgICAgICAgICAgIHF1YWxp
Zmllci5sb2NhdGlvbnNTcGVjaWZpZWQgPSAxOwogICAgICAgICB9CiAgICAgfQorICAgIGVsc2Ug
aWYgKHF1YWxpZmllclR5cGUgPT0gImJpbmRpbmciKQorICAgIHsKKyAgICAgICAgY2hlY2tMYXlv
dXRRdWFsaWZpZXJTdXBwb3J0ZWQocXVhbGlmaWVyVHlwZUxpbmUsIHF1YWxpZmllclR5cGUsIDMx
MCk7CisgICAgICAgIGlmIChpbnRWYWx1ZSA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGVy
cm9yKGludFZhbHVlTGluZSwgIm91dCBvZiByYW5nZTogYmluZGluZyBtdXN0IGJlIG5vbi1uZWdh
dGl2ZSIsCisgICAgICAgICAgICAgICAgICBpbnRWYWx1ZVN0cmluZy5jX3N0cigpKTsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHF1YWxpZmllci5iaW5k
aW5nID0gaW50VmFsdWU7CisgICAgICAgIH0KKyAgICB9CiAgICAgZWxzZSBpZiAocXVhbGlmaWVy
VHlwZSA9PSAibG9jYWxfc2l6ZV94IikKICAgICB7CiAgICAgICAgIHBhcnNlTG9jYWxTaXplKHF1
YWxpZmllclR5cGUsIHF1YWxpZmllclR5cGVMaW5lLCBpbnRWYWx1ZSwgaW50VmFsdWVMaW5lLCBp
bnRWYWx1ZVN0cmluZywgMHUsCkBAIC0yOTU5LDYgKzM0OTksMTIgQEAgVExheW91dFF1YWxpZmll
ciBUUGFyc2VDb250ZXh0OjpwYXJzZUxheW91dFF1YWxpZmllcihjb25zdCBUU3RyaW5nICZxdWFs
aWZpZXJUeXAKICAgICAgICAgcGFyc2VMb2NhbFNpemUocXVhbGlmaWVyVHlwZSwgcXVhbGlmaWVy
VHlwZUxpbmUsIGludFZhbHVlLCBpbnRWYWx1ZUxpbmUsIGludFZhbHVlU3RyaW5nLCAydSwKICAg
ICAgICAgICAgICAgICAgICAgICAgJnF1YWxpZmllci5sb2NhbFNpemUpOwogICAgIH0KKyAgICBl
bHNlIGlmIChxdWFsaWZpZXJUeXBlID09ICJudW1fdmlld3MiICYmIG1NdWx0aXZpZXdBdmFpbGFi
bGUgJiYKKyAgICAgICAgICAgICAoaXNFeHRlbnNpb25FbmFibGVkKCJHTF9PVlJfbXVsdGl2aWV3
IikgfHwgaXNFeHRlbnNpb25FbmFibGVkKCJHTF9PVlJfbXVsdGl2aWV3MiIpKSAmJgorICAgICAg
ICAgICAgIG1TaGFkZXJUeXBlID09IEdMX1ZFUlRFWF9TSEFERVIpCisgICAgeworICAgICAgICBw
YXJzZU51bVZpZXdzKGludFZhbHVlLCBpbnRWYWx1ZUxpbmUsIGludFZhbHVlU3RyaW5nLCAmcXVh
bGlmaWVyLm51bVZpZXdzKTsKKyAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgZXJyb3Io
cXVhbGlmaWVyVHlwZUxpbmUsICJpbnZhbGlkIGxheW91dCBxdWFsaWZpZXIiLCBxdWFsaWZpZXJU
eXBlLmNfc3RyKCkpOwpAQCAtMjk3OSw3ICszNTI1LDI1IEBAIFRMYXlvdXRRdWFsaWZpZXIgVFBh
cnNlQ29udGV4dDo6am9pbkxheW91dFF1YWxpZmllcnMoVExheW91dFF1YWxpZmllciBsZWZ0UXVh
bGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRTb3VyY2VMb2MgJnJpZ2h0UXVhbGlmaWVyTG9jYXRpb24pCiB7CiAgICAgcmV0dXJu
IHNoOjpKb2luTGF5b3V0UXVhbGlmaWVycyhsZWZ0UXVhbGlmaWVyLCByaWdodFF1YWxpZmllciwg
cmlnaHRRdWFsaWZpZXJMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZtRGlhZ25vc3RpY3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bURpYWdub3N0aWNzKTsKK30KKworVEZpZWxkTGlzdCAqVFBhcnNlQ29udGV4dDo6Y29tYmluZVN0
cnVjdEZpZWxkTGlzdHMoVEZpZWxkTGlzdCAqcHJvY2Vzc2VkRmllbGRzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVEZpZWxkTGlzdCAq
bmV3bHlBZGRlZEZpZWxkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uKQoreworICAgIGZvciAoVEZp
ZWxkICpmaWVsZCA6ICpuZXdseUFkZGVkRmllbGRzKQorICAgIHsKKyAgICAgICAgZm9yIChURmll
bGQgKm9sZEZpZWxkIDogKnByb2Nlc3NlZEZpZWxkcykKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKG9sZEZpZWxkLT5uYW1lKCkgPT0gZmllbGQtPm5hbWUoKSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgImR1cGxpY2F0ZSBmaWVsZCBuYW1lIGluIHN0
cnVjdHVyZSIsIGZpZWxkLT5uYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgcHJvY2Vzc2VkRmllbGRzLT5wdXNoX2JhY2soZmllbGQpOworICAgIH0KKyAg
ICByZXR1cm4gcHJvY2Vzc2VkRmllbGRzOwogfQogCiBURmllbGRMaXN0ICpUUGFyc2VDb250ZXh0
OjphZGRTdHJ1Y3REZWNsYXJhdG9yTGlzdFdpdGhRdWFsaWZpZXJzKApAQCAtMjk4NywxMCArMzU1
MSwxMSBAQCBURmllbGRMaXN0ICpUUGFyc2VDb250ZXh0OjphZGRTdHJ1Y3REZWNsYXJhdG9yTGlz
dFdpdGhRdWFsaWZpZXJzKAogICAgIFRQdWJsaWNUeXBlICp0eXBlU3BlY2lmaWVyLAogICAgIFRG
aWVsZExpc3QgKmZpZWxkTGlzdCkKIHsKLSAgICBUVHlwZVF1YWxpZmllciB0eXBlUXVhbGlmaWVy
ID0gdHlwZVF1YWxpZmllckJ1aWxkZXIuZ2V0VmFyaWFibGVUeXBlUXVhbGlmaWVyKCZtRGlhZ25v
c3RpY3MpOworICAgIFRUeXBlUXVhbGlmaWVyIHR5cGVRdWFsaWZpZXIgPSB0eXBlUXVhbGlmaWVy
QnVpbGRlci5nZXRWYXJpYWJsZVR5cGVRdWFsaWZpZXIobURpYWdub3N0aWNzKTsKIAogICAgIHR5
cGVTcGVjaWZpZXItPnF1YWxpZmllciAgICAgICA9IHR5cGVRdWFsaWZpZXIucXVhbGlmaWVyOwog
ICAgIHR5cGVTcGVjaWZpZXItPmxheW91dFF1YWxpZmllciA9IHR5cGVRdWFsaWZpZXIubGF5b3V0
UXVhbGlmaWVyOworICAgIHR5cGVTcGVjaWZpZXItPm1lbW9yeVF1YWxpZmllciA9IHR5cGVRdWFs
aWZpZXIubWVtb3J5UXVhbGlmaWVyOwogICAgIHR5cGVTcGVjaWZpZXItPmludmFyaWFudCAgICAg
ICA9IHR5cGVRdWFsaWZpZXIuaW52YXJpYW50OwogICAgIGlmICh0eXBlUXVhbGlmaWVyLnByZWNp
c2lvbiAhPSBFYnBVbmRlZmluZWQpCiAgICAgewpAQCAtMzAyMSw2ICszNTg2LDcgQEAgVEZpZWxk
TGlzdCAqVFBhcnNlQ29udGV4dDo6YWRkU3RydWN0RGVjbGFyYXRvckxpc3QoY29uc3QgVFB1Ymxp
Y1R5cGUgJnR5cGVTcGVjaWYKICAgICAgICAgdHlwZS0+c2V0UHJlY2lzaW9uKHR5cGVTcGVjaWZp
ZXIucHJlY2lzaW9uKTsKICAgICAgICAgdHlwZS0+c2V0UXVhbGlmaWVyKHR5cGVTcGVjaWZpZXIu
cXVhbGlmaWVyKTsKICAgICAgICAgdHlwZS0+c2V0TGF5b3V0UXVhbGlmaWVyKHR5cGVTcGVjaWZp
ZXIubGF5b3V0UXVhbGlmaWVyKTsKKyAgICAgICAgdHlwZS0+c2V0TWVtb3J5UXVhbGlmaWVyKHR5
cGVTcGVjaWZpZXIubWVtb3J5UXVhbGlmaWVyKTsKICAgICAgICAgdHlwZS0+c2V0SW52YXJpYW50
KHR5cGVTcGVjaWZpZXIuaW52YXJpYW50KTsKIAogICAgICAgICAvLyBkb24ndCBhbGxvdyBhcnJh
eXMgb2YgYXJyYXlzCkBAIC0zMDU5LDcgKzM2MjUsNyBAQCBUVHlwZVNwZWNpZmllck5vbkFycmF5
IFRQYXJzZUNvbnRleHQ6OmFkZFN0cnVjdHVyZShjb25zdCBUU291cmNlTG9jICZzdHJ1Y3RMaW5l
LAogICAgICAgICBUVmFyaWFibGUgKnVzZXJUeXBlRGVmID0gbmV3IFRWYXJpYWJsZShzdHJ1Y3RO
YW1lLCAqc3RydWN0dXJlVHlwZSwgdHJ1ZSk7CiAgICAgICAgIGlmICghc3ltYm9sVGFibGUuZGVj
bGFyZSh1c2VyVHlwZURlZikpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yKG5hbWVMaW5l
LCAicmVkZWZpbml0aW9uIiwgc3RydWN0TmFtZS0+Y19zdHIoKSwgInN0cnVjdCIpOworICAgICAg
ICAgICAgZXJyb3IobmFtZUxpbmUsICJyZWRlZmluaXRpb24gb2YgYSBzdHJ1Y3QiLCBzdHJ1Y3RO
YW1lLT5jX3N0cigpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzA4Miw2ICszNjQ4LDE0IEBA
IFRUeXBlU3BlY2lmaWVyTm9uQXJyYXkgVFBhcnNlQ29udGV4dDo6YWRkU3RydWN0dXJlKGNvbnN0
IFRTb3VyY2VMb2MgJnN0cnVjdExpbmUsCiAgICAgICAgIHsKICAgICAgICAgICAgIGVycm9yKGZp
ZWxkLmxpbmUoKSwgImludmFsaWQgcXVhbGlmaWVyIG9uIHN0cnVjdCBtZW1iZXIiLCAiaW52YXJp
YW50Iik7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKElzSW1hZ2UoZmllbGQudHlwZSgpLT5nZXRC
YXNpY1R5cGUoKSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yKGZpZWxkLmxpbmUoKSwg
ImRpc2FsbG93ZWQgdHlwZSBpbiBzdHJ1Y3QiLCBmaWVsZC50eXBlKCktPmdldEJhc2ljU3RyaW5n
KCkpOworICAgICAgICB9CisKKyAgICAgICAgY2hlY2tNZW1vcnlRdWFsaWZpZXJJc05vdFNwZWNp
ZmllZChmaWVsZC50eXBlKCktPmdldE1lbW9yeVF1YWxpZmllcigpLCBmaWVsZC5saW5lKCkpOwor
CisgICAgICAgIGNoZWNrQmluZGluZ0lzTm90U3BlY2lmaWVkKGZpZWxkLmxpbmUoKSwgZmllbGQu
dHlwZSgpLT5nZXRMYXlvdXRRdWFsaWZpZXIoKS5iaW5kaW5nKTsKIAogICAgICAgICBjaGVja0xv
Y2F0aW9uSXNOb3RTcGVjaWZpZWQoZmllbGQubGluZSgpLCBmaWVsZC50eXBlKCktPmdldExheW91
dFF1YWxpZmllcigpKTsKICAgICB9CkBAIC0zMTEwLDcgKzM2ODQsNyBAQCBUSW50ZXJtU3dpdGNo
ICpUUGFyc2VDb250ZXh0OjphZGRTd2l0Y2goVEludGVybVR5cGVkICppbml0LAogCiAgICAgaWYg
KHN0YXRlbWVudExpc3QpCiAgICAgewotICAgICAgICBpZiAoIVZhbGlkYXRlU3dpdGNoOjp2YWxp
ZGF0ZShzd2l0Y2hUeXBlLCB0aGlzLCBzdGF0ZW1lbnRMaXN0LCBsb2MpKQorICAgICAgICBpZiAo
IVZhbGlkYXRlU3dpdGNoU3RhdGVtZW50TGlzdChzd2l0Y2hUeXBlLCBtRGlhZ25vc3RpY3MsIHN0
YXRlbWVudExpc3QsIGxvYykpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICB9CkBAIC0zMTc3LDEzICszNzUxLDkgQEAgVEludGVybUNhc2UgKlRQYXJzZUNv
bnRleHQ6OmFkZERlZmF1bHQoY29uc3QgVFNvdXJjZUxvYyAmbG9jKQogCiBUSW50ZXJtVHlwZWQg
KlRQYXJzZUNvbnRleHQ6OmNyZWF0ZVVuYXJ5TWF0aChUT3BlcmF0b3Igb3AsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmNoaWxkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJj
ZUxvYyAmbG9jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFR5cGUgKmZ1bmNSZXR1cm5UeXBlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKQogewotICAgIGlmIChjaGls
ZCA9PSBudWxscHRyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAg
IEFTU0VSVChjaGlsZCAhPSBudWxscHRyKTsKIAogICAgIHN3aXRjaCAob3ApCiAgICAgewpAQCAt
MzE5MSw2ICszNzYxLDcgQEAgVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjpjcmVhdGVVbmFy
eU1hdGgoVE9wZXJhdG9yIG9wLAogICAgICAgICAgICAgaWYgKGNoaWxkLT5nZXRCYXNpY1R5cGUo
KSAhPSBFYnRCb29sIHx8IGNoaWxkLT5pc01hdHJpeCgpIHx8IGNoaWxkLT5pc0FycmF5KCkgfHwK
ICAgICAgICAgICAgICAgICBjaGlsZC0+aXNWZWN0b3IoKSkKICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB1bmFyeU9wRXJyb3IobG9jLCBHZXRPcGVyYXRvclN0cmluZyhvcCksIGNoaWxk
LT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzE5OCw2ICszNzY5LDcgQEAg
VEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjpjcmVhdGVVbmFyeU1hdGgoVE9wZXJhdG9yIG9w
LAogICAgICAgICAgICAgaWYgKChjaGlsZC0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0SW50ICYmIGNo
aWxkLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRVSW50KSB8fAogICAgICAgICAgICAgICAgIGNoaWxk
LT5pc01hdHJpeCgpIHx8IGNoaWxkLT5pc0FycmF5KCkpCiAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgdW5hcnlPcEVycm9yKGxvYywgR2V0T3BlcmF0b3JTdHJpbmcob3ApLCBjaGlsZC0+
Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTMyMDgsOCArMzc4MCw5IEBAIFRJ
bnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6Y3JlYXRlVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwK
ICAgICAgICAgY2FzZSBFT3BOZWdhdGl2ZToKICAgICAgICAgY2FzZSBFT3BQb3NpdGl2ZToKICAg
ICAgICAgICAgIGlmIChjaGlsZC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0IHx8IGNoaWxk
LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sIHx8Ci0gICAgICAgICAgICAgICAgY2hpbGQtPmlz
QXJyYXkoKSB8fCBJc1NhbXBsZXIoY2hpbGQtPmdldEJhc2ljVHlwZSgpKSkKKyAgICAgICAgICAg
ICAgICBjaGlsZC0+aXNBcnJheSgpIHx8IElzT3BhcXVlVHlwZShjaGlsZC0+Z2V0QmFzaWNUeXBl
KCkpKQogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVuYXJ5T3BFcnJvcihsb2MsIEdl
dE9wZXJhdG9yU3RyaW5nKG9wKSwgY2hpbGQtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQogICAgICAgICAvLyBPcGVy
YXRvcnMgZm9yIGJ1aWx0LWlucyBhcmUgYWxyZWFkeSB0eXBlIGNoZWNrZWQgYWdhaW5zdCB0aGVp
ciBwcm90b3R5cGUuCkBAIC0zMjIwLDcgKzM3OTMsNyBAQCBUSW50ZXJtVHlwZWQgKlRQYXJzZUNv
bnRleHQ6OmNyZWF0ZVVuYXJ5TWF0aChUT3BlcmF0b3Igb3AsCiAgICAgVEludGVybVVuYXJ5ICpu
b2RlID0gbmV3IFRJbnRlcm1VbmFyeShvcCwgY2hpbGQpOwogICAgIG5vZGUtPnNldExpbmUobG9j
KTsKIAotICAgIFRJbnRlcm1UeXBlZCAqZm9sZGVkTm9kZSA9IG5vZGUtPmZvbGQoJm1EaWFnbm9z
dGljcyk7CisgICAgVEludGVybVR5cGVkICpmb2xkZWROb2RlID0gbm9kZS0+Zm9sZChtRGlhZ25v
c3RpY3MpOwogICAgIGlmIChmb2xkZWROb2RlKQogICAgICAgICByZXR1cm4gZm9sZGVkTm9kZTsK
IApAQCAtMzIyOSwxMCArMzgwMiw5IEBAIFRJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6Y3Jl
YXRlVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwKIAogVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0
OjphZGRVbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQgKmNoaWxkLCBjb25zdCBU
U291cmNlTG9jICZsb2MpCiB7Ci0gICAgVEludGVybVR5cGVkICpub2RlID0gY3JlYXRlVW5hcnlN
YXRoKG9wLCBjaGlsZCwgbG9jLCBudWxscHRyKTsKKyAgICBUSW50ZXJtVHlwZWQgKm5vZGUgPSBj
cmVhdGVVbmFyeU1hdGgob3AsIGNoaWxkLCBsb2MpOwogICAgIGlmIChub2RlID09IG51bGxwdHIp
CiAgICAgewotICAgICAgICB1bmFyeU9wRXJyb3IobG9jLCBHZXRPcGVyYXRvclN0cmluZyhvcCks
IGNoaWxkLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIGNoaWxkOwogICAg
IH0KICAgICByZXR1cm4gbm9kZTsKQEAgLTMzNzMsMTMgKzM5NDUsMjggQEAgYm9vbCBUUGFyc2VD
b250ZXh0OjpiaW5hcnlPcENvbW1vbkNoZWNrKFRPcGVyYXRvciBvcCwKICAgICAgICAgICAgICAg
ICAgICAgICBHZXRPcGVyYXRvclN0cmluZyhvcCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKChvcCA9PSBFT3BBc3NpZ24g
fHwgb3AgPT0gRU9wSW5pdGlhbGl6ZSkgJiYKKyAgICAgICAgICAgICAgICBsZWZ0LT5nZXRUeXBl
KCkuaXNTdHJ1Y3R1cmVDb250YWluaW5nSW1hZ2VzKCkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgZXJyb3IobG9jLCAidW5kZWZpbmVkIG9wZXJhdGlvbiBmb3Igc3RydWN0cyBjb250
YWluaW5nIGltYWdlcyIsCisgICAgICAgICAgICAgICAgICAgICAgR2V0T3BlcmF0b3JTdHJpbmco
b3ApKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoKGxlZnQtPmdldE5vbWluYWxTaXplKCkgIT0gcmlnaHQtPmdldE5vbWluYWxT
aXplKCkpIHx8CisgICAgICAgICAgICAgICAgKGxlZnQtPmdldFNlY29uZGFyeVNpemUoKSAhPSBy
aWdodC0+Z2V0U2Vjb25kYXJ5U2l6ZSgpKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBlcnJvcihsb2MsICJkaW1lbnNpb24gbWlzbWF0Y2giLCBHZXRPcGVyYXRvclN0cmluZyhvcCkp
OworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVPcExlc3NUaGFuOgogICAgICAgICBjYXNlIEVPcEdy
ZWF0ZXJUaGFuOgogICAgICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6CiAgICAgICAgIGNhc2Ug
RU9wR3JlYXRlclRoYW5FcXVhbDoKLSAgICAgICAgICAgIGlmICgobGVmdC0+Z2V0Tm9taW5hbFNp
emUoKSAhPSByaWdodC0+Z2V0Tm9taW5hbFNpemUoKSkgfHwKLSAgICAgICAgICAgICAgICAobGVm
dC0+Z2V0U2Vjb25kYXJ5U2l6ZSgpICE9IHJpZ2h0LT5nZXRTZWNvbmRhcnlTaXplKCkpKQorICAg
ICAgICAgICAgaWYgKCFsZWZ0LT5pc1NjYWxhcigpIHx8ICFyaWdodC0+aXNTY2FsYXIoKSkKICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBlcnJvcihsb2MsICJjb21wYXJpc29uIG9wZXJh
dG9yIG9ubHkgZGVmaW5lZCBmb3Igc2NhbGFycyIsIEdldE9wZXJhdG9yU3RyaW5nKG9wKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CkBAIC0zNDg2LDI3ICs0MDczLDIyIEBAIFRJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4
dDo6YWRkQmluYXJ5TWF0aEludGVybmFsKFRPcGVyYXRvciBvcCwKICAgICB7CiAgICAgICAgIGNh
c2UgRU9wRXF1YWw6CiAgICAgICAgIGNhc2UgRU9wTm90RXF1YWw6Ci0gICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBFT3BMZXNzVGhhbjoKICAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhh
bjoKICAgICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFsOgogICAgICAgICBjYXNlIEVPcEdyZWF0
ZXJUaGFuRXF1YWw6Ci0gICAgICAgICAgICBBU1NFUlQoIWxlZnQtPmlzQXJyYXkoKSAmJiAhcmln
aHQtPmlzQXJyYXkoKSAmJiAhbGVmdC0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpICYmCi0gICAgICAg
ICAgICAgICAgICAgIXJpZ2h0LT5nZXRUeXBlKCkuZ2V0U3RydWN0KCkpOwotICAgICAgICAgICAg
aWYgKGxlZnQtPmlzTWF0cml4KCkgfHwgbGVmdC0+aXNWZWN0b3IoKSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVPcExvZ2ljYWxPcjoKICAgICAgICAgY2FzZSBFT3BM
b2dpY2FsWG9yOgogICAgICAgICBjYXNlIEVPcExvZ2ljYWxBbmQ6CiAgICAgICAgICAgICBBU1NF
UlQoIWxlZnQtPmlzQXJyYXkoKSAmJiAhcmlnaHQtPmlzQXJyYXkoKSAmJiAhbGVmdC0+Z2V0VHlw
ZSgpLmdldFN0cnVjdCgpICYmCiAgICAgICAgICAgICAgICAgICAgIXJpZ2h0LT5nZXRUeXBlKCku
Z2V0U3RydWN0KCkpOwotICAgICAgICAgICAgaWYgKGxlZnQtPmdldEJhc2ljVHlwZSgpICE9IEVi
dEJvb2wgfHwgbGVmdC0+aXNNYXRyaXgoKSB8fCBsZWZ0LT5pc1ZlY3RvcigpKQorICAgICAgICAg
ICAgaWYgKGxlZnQtPmdldEJhc2ljVHlwZSgpICE9IEVidEJvb2wgfHwgIWxlZnQtPmlzU2NhbGFy
KCkgfHwgIXJpZ2h0LT5pc1NjYWxhcigpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gQmFzaWMgdHlw
ZXMgbWF0Y2hpbmcgc2hvdWxkIGhhdmUgYmVlbiBhbHJlYWR5IGNoZWNrZWQuCisgICAgICAgICAg
ICBBU1NFUlQocmlnaHQtPmdldEJhc2ljVHlwZSgpID09IEVidEJvb2wpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgRU9wQWRkOgogICAgICAgICBjYXNlIEVPcFN1YjoKQEAgLTM1
NDUsNyArNDEyNyw3IEBAIFRJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6YWRkQmluYXJ5TWF0
aEludGVybmFsKFRPcGVyYXRvciBvcCwKICAgICBub2RlLT5zZXRMaW5lKGxvYyk7CiAKICAgICAv
LyBTZWUgaWYgd2UgY2FuIGZvbGQgY29uc3RhbnRzLgotICAgIFRJbnRlcm1UeXBlZCAqZm9sZGVk
Tm9kZSA9IG5vZGUtPmZvbGQoJm1EaWFnbm9zdGljcyk7CisgICAgVEludGVybVR5cGVkICpmb2xk
ZWROb2RlID0gbm9kZS0+Zm9sZChtRGlhZ25vc3RpY3MpOwogICAgIGlmIChmb2xkZWROb2RlKQog
ICAgICAgICByZXR1cm4gZm9sZGVkTm9kZTsKIApAQCAtMzU4NSwxMCArNDE2NywxMCBAQCBUSW50
ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEJpbmFyeU1hdGhCb29sZWFuUmVzdWx0KFRPcGVy
YXRvciBvcCwKICAgICByZXR1cm4gbm9kZTsKIH0KIAotVEludGVybVR5cGVkICpUUGFyc2VDb250
ZXh0OjpjcmVhdGVBc3NpZ24oVE9wZXJhdG9yIG9wLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpsZWZ0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpyaWdodCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvYykKK1RJ
bnRlcm1CaW5hcnkgKlRQYXJzZUNvbnRleHQ6OmNyZWF0ZUFzc2lnbihUT3BlcmF0b3Igb3AsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICps
ZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1U
eXBlZCAqcmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFNvdXJjZUxvYyAmbG9jKQogewogICAgIGlmIChiaW5hcnlPcENvbW1vbkNoZWNrKG9w
LCBsZWZ0LCByaWdodCwgbG9jKSkKICAgICB7CkBAIC0zNjI4LDEwICs0MjEwLDEwIEBAIFRJbnRl
cm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6YWRkQ29tbWEoVEludGVybVR5cGVkICpsZWZ0LAogewog
ICAgIC8vIFdlYkdMMiBzZWN0aW9uIDUuMjYsIHRoZSBmb2xsb3dpbmcgcmVzdWx0cyBpbiBhbiBl
cnJvcjoKICAgICAvLyAiU2VxdWVuY2Ugb3BlcmF0b3IgYXBwbGllZCB0byB2b2lkLCBhcnJheXMs
IG9yIHN0cnVjdHMgY29udGFpbmluZyBhcnJheXMiCi0gICAgaWYgKG1TaGFkZXJTcGVjID09IFNI
X1dFQkdMMl9TUEVDICYmIChsZWZ0LT5pc0FycmF5KCkgfHwgbGVmdC0+Z2V0QmFzaWNUeXBlKCkg
PT0gRWJ0Vm9pZCB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGVmdC0+Z2V0VHlwZSgpLmlzU3RydWN0dXJlQ29udGFpbmluZ0FycmF5cygpIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodC0+aXNBcnJheSgpIHx8IHJp
Z2h0LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkIHx8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByaWdodC0+Z2V0VHlwZSgpLmlzU3RydWN0dXJlQ29udGFpbmlu
Z0FycmF5cygpKSkKKyAgICBpZiAobVNoYWRlclNwZWMgPT0gU0hfV0VCR0wyX1NQRUMgJiYKKyAg
ICAgICAgKGxlZnQtPmlzQXJyYXkoKSB8fCBsZWZ0LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lk
IHx8CisgICAgICAgICBsZWZ0LT5nZXRUeXBlKCkuaXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlz
KCkgfHwgcmlnaHQtPmlzQXJyYXkoKSB8fAorICAgICAgICAgcmlnaHQtPmdldEJhc2ljVHlwZSgp
ID09IEVidFZvaWQgfHwgcmlnaHQtPmdldFR5cGUoKS5pc1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJh
eXMoKSkpCiAgICAgewogICAgICAgICBlcnJvcihsb2MsCiAgICAgICAgICAgICAgICJzZXF1ZW5j
ZSBvcGVyYXRvciBpcyBub3QgYWxsb3dlZCBmb3Igdm9pZCwgYXJyYXlzLCBvciBzdHJ1Y3RzIGNv
bnRhaW5pbmcgYXJyYXlzIiwKQEAgLTM2ODksMjAgKzQyNzEsMTcgQEAgVEludGVybUJyYW5jaCAq
VFBhcnNlQ29udGV4dDo6YWRkQnJhbmNoKFRPcGVyYXRvciBvcCwKIAogdm9pZCBUUGFyc2VDb250
ZXh0OjpjaGVja1RleHR1cmVPZmZzZXRDb25zdChUSW50ZXJtQWdncmVnYXRlICpmdW5jdGlvbkNh
bGwpCiB7Ci0gICAgQVNTRVJUKCFmdW5jdGlvbkNhbGwtPmlzVXNlckRlZmluZWQoKSk7CisgICAg
QVNTRVJUKGZ1bmN0aW9uQ2FsbC0+Z2V0T3AoKSA9PSBFT3BDYWxsQnVpbHRJbkZ1bmN0aW9uKTsK
ICAgICBjb25zdCBUU3RyaW5nICZuYW1lICAgICAgICA9IGZ1bmN0aW9uQ2FsbC0+Z2V0RnVuY3Rp
b25TeW1ib2xJbmZvKCktPmdldE5hbWUoKTsKICAgICBUSW50ZXJtTm9kZSAqb2Zmc2V0ICAgICAg
ICA9IG51bGxwdHI7CiAgICAgVEludGVybVNlcXVlbmNlICphcmd1bWVudHMgPSBmdW5jdGlvbkNh
bGwtPmdldFNlcXVlbmNlKCk7Ci0gICAgaWYgKG5hbWUuY29tcGFyZSgwLCAxNiwgInRleGVsRmV0
Y2hPZmZzZXQiKSA9PSAwIHx8Ci0gICAgICAgIG5hbWUuY29tcGFyZSgwLCAxNiwgInRleHR1cmVM
b2RPZmZzZXQiKSA9PSAwIHx8Ci0gICAgICAgIG5hbWUuY29tcGFyZSgwLCAyMCwgInRleHR1cmVQ
cm9qTG9kT2Zmc2V0IikgPT0gMCB8fAotICAgICAgICBuYW1lLmNvbXBhcmUoMCwgMTcsICJ0ZXh0
dXJlR3JhZE9mZnNldCIpID09IDAgfHwKLSAgICAgICAgbmFtZS5jb21wYXJlKDAsIDIxLCAidGV4
dHVyZVByb2pHcmFkT2Zmc2V0IikgPT0gMCkKKyAgICBpZiAobmFtZSA9PSAidGV4ZWxGZXRjaE9m
ZnNldCIgfHwgbmFtZSA9PSAidGV4dHVyZUxvZE9mZnNldCIgfHwKKyAgICAgICAgbmFtZSA9PSAi
dGV4dHVyZVByb2pMb2RPZmZzZXQiIHx8IG5hbWUgPT0gInRleHR1cmVHcmFkT2Zmc2V0IiB8fAor
ICAgICAgICBuYW1lID09ICJ0ZXh0dXJlUHJvakdyYWRPZmZzZXQiKQogICAgIHsKICAgICAgICAg
b2Zmc2V0ID0gYXJndW1lbnRzLT5iYWNrKCk7CiAgICAgfQotICAgIGVsc2UgaWYgKG5hbWUuY29t
cGFyZSgwLCAxMywgInRleHR1cmVPZmZzZXQiKSA9PSAwIHx8Ci0gICAgICAgICAgICAgbmFtZS5j
b21wYXJlKDAsIDE3LCAidGV4dHVyZVByb2pPZmZzZXQiKSA9PSAwKQorICAgIGVsc2UgaWYgKG5h
bWUgPT0gInRleHR1cmVPZmZzZXQiIHx8IG5hbWUgPT0gInRleHR1cmVQcm9qT2Zmc2V0IikKICAg
ICB7CiAgICAgICAgIC8vIEEgYmlhcyBwYXJhbWV0ZXIgbWlnaHQgZm9sbG93IHRoZSBvZmZzZXQg
cGFyYW1ldGVyLgogICAgICAgICBBU1NFUlQoYXJndW1lbnRzLT5zaXplKCkgPj0gMyk7CkBAIC0z
NzEzLDkgKzQyOTIsOCBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNrVGV4dHVyZU9mZnNldENv
bnN0KFRJbnRlcm1BZ2dyZWdhdGUgKmZ1bmN0aW9uQ2FsbCkKICAgICAgICAgVEludGVybUNvbnN0
YW50VW5pb24gKm9mZnNldENvbnN0YW50VW5pb24gPSBvZmZzZXQtPmdldEFzQ29uc3RhbnRVbmlv
bigpOwogICAgICAgICBpZiAob2Zmc2V0LT5nZXRBc1R5cGVkKCktPmdldFF1YWxpZmllcigpICE9
IEV2cUNvbnN0IHx8ICFvZmZzZXRDb25zdGFudFVuaW9uKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBUU3RyaW5nIHVubWFuZ2xlZE5hbWUgPSBURnVuY3Rpb246OnVubWFuZ2xlTmFtZShuYW1lKTsK
ICAgICAgICAgICAgIGVycm9yKGZ1bmN0aW9uQ2FsbC0+Z2V0TGluZSgpLCAiVGV4dHVyZSBvZmZz
ZXQgbXVzdCBiZSBhIGNvbnN0YW50IGV4cHJlc3Npb24iLAotICAgICAgICAgICAgICAgICAgdW5t
YW5nbGVkTmFtZS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICAgIG5hbWUuY19zdHIoKSk7CiAg
ICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CkBAIC0zNzM4LDcwICs0MzE2LDE5NSBA
QCB2b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNrVGV4dHVyZU9mZnNldENvbnN0KFRJbnRlcm1BZ2dy
ZWdhdGUgKmZ1bmN0aW9uQ2FsbCkKICAgICB9CiB9CiAKLVRJbnRlcm1UeXBlZCAqVFBhcnNlQ29u
dGV4dDo6YWRkRnVuY3Rpb25DYWxsT3JNZXRob2QoVEZ1bmN0aW9uICpmbkNhbGwsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2Rl
ICpwYXJhbU5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRJbnRlcm1Ob2RlICp0aGlzTm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpm
YXRhbEVycm9yKQorLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuOSBNZW1vcnkgQWNjZXNz
IFF1YWxpZmllcnMKK3ZvaWQgVFBhcnNlQ29udGV4dDo6Y2hlY2tJbWFnZU1lbW9yeUFjY2Vzc0Zv
ckJ1aWx0aW5GdW5jdGlvbnMoVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25DYWxsKQogewotICAg
ICpmYXRhbEVycm9yICAgICAgICAgICAgPSBmYWxzZTsKLSAgICBUT3BlcmF0b3Igb3AgICAgICAg
ICAgID0gZm5DYWxsLT5nZXRCdWlsdEluT3AoKTsKLSAgICBUSW50ZXJtVHlwZWQgKmNhbGxOb2Rl
ID0gbnVsbHB0cjsKKyAgICBBU1NFUlQoZnVuY3Rpb25DYWxsLT5nZXRPcCgpID09IEVPcENhbGxC
dWlsdEluRnVuY3Rpb24pOworICAgIGNvbnN0IFRTdHJpbmcgJm5hbWUgPSBmdW5jdGlvbkNhbGwt
PmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lKCk7CiAKLSAgICBpZiAodGhpc05vZGUg
IT0gbnVsbHB0cikKKyAgICBpZiAobmFtZS5jb21wYXJlKDAsIDUsICJpbWFnZSIpID09IDApCiAg
ICAgewotICAgICAgICBUQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBUQ29uc3RhbnRV
bmlvblsxXTsKLSAgICAgICAgaW50IGFycmF5U2l6ZSAgICAgICAgICAgICAgPSAwOwotICAgICAg
ICBUSW50ZXJtVHlwZWQgKnR5cGVkVGhpcyA9IHRoaXNOb2RlLT5nZXRBc1R5cGVkKCk7Ci0gICAg
ICAgIGlmIChmbkNhbGwtPmdldE5hbWUoKSAhPSAibGVuZ3RoIikKLSAgICAgICAgewotICAgICAg
ICAgICAgZXJyb3IobG9jLCAiaW52YWxpZCBtZXRob2QiLCBmbkNhbGwtPmdldE5hbWUoKS5jX3N0
cigpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChwYXJhbU5vZGUgIT0gbnVsbHB0cikK
KyAgICAgICAgVEludGVybVNlcXVlbmNlICphcmd1bWVudHMgPSBmdW5jdGlvbkNhbGwtPmdldFNl
cXVlbmNlKCk7CisgICAgICAgIFRJbnRlcm1UeXBlZCAqaW1hZ2VOb2RlICAgID0gKCphcmd1bWVu
dHMpWzBdLT5nZXRBc1R5cGVkKCk7CisKKyAgICAgICAgY29uc3QgVE1lbW9yeVF1YWxpZmllciAm
bWVtb3J5UXVhbGlmaWVyID0gaW1hZ2VOb2RlLT5nZXRNZW1vcnlRdWFsaWZpZXIoKTsKKworICAg
ICAgICBpZiAobmFtZS5jb21wYXJlKDUsIDUsICJTdG9yZSIpID09IDApCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGVycm9yKGxvYywgIm1ldGhvZCB0YWtlcyBubyBwYXJhbWV0ZXJzIiwgImxlbmd0
aCIpOworICAgICAgICAgICAgaWYgKG1lbW9yeVF1YWxpZmllci5yZWFkb25seSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBlcnJvcihpbWFnZU5vZGUtPmdldExpbmUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAiJ2ltYWdlU3RvcmUnIGNhbm5vdCBiZSB1c2VkIHdpdGggaW1hZ2Vz
IHF1YWxpZmllZCBhcyAncmVhZG9ubHknIiwKKyAgICAgICAgICAgICAgICAgICAgICBHZXRJbWFn
ZUFyZ3VtZW50VG9rZW4oaW1hZ2VOb2RlKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAg
ICAgICAgZWxzZSBpZiAodHlwZWRUaGlzID09IG51bGxwdHIgfHwgIXR5cGVkVGhpcy0+aXNBcnJh
eSgpKQorICAgICAgICBlbHNlIGlmIChuYW1lLmNvbXBhcmUoNSwgNCwgIkxvYWQiKSA9PSAwKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvcihsb2MsICJsZW5ndGggY2FuIG9ubHkgYmUgY2Fs
bGVkIG9uIGFycmF5cyIsICJsZW5ndGgiKTsKKyAgICAgICAgICAgIGlmIChtZW1vcnlRdWFsaWZp
ZXIud3JpdGVvbmx5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycm9yKGltYWdl
Tm9kZS0+Z2V0TGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgICInaW1hZ2VMb2FkJyBjYW5u
b3QgYmUgdXNlZCB3aXRoIGltYWdlcyBxdWFsaWZpZWQgYXMgJ3dyaXRlb25seSciLAorICAgICAg
ICAgICAgICAgICAgICAgIEdldEltYWdlQXJndW1lbnRUb2tlbihpbWFnZU5vZGUpKTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlCisgICAgfQorfQorCisvLyBHTFNMIEVT
IDMuMTAgUmV2aXNpb24gNCwgMTMuNTEgTWF0Y2hpbmcgb2YgTWVtb3J5IFF1YWxpZmllcnMgaW4g
RnVuY3Rpb24gUGFyYW1ldGVycwordm9pZCBUUGFyc2VDb250ZXh0OjpjaGVja0ltYWdlTWVtb3J5
QWNjZXNzRm9yVXNlckRlZmluZWRGdW5jdGlvbnMoCisgICAgY29uc3QgVEZ1bmN0aW9uICpmdW5j
dGlvbkRlZmluaXRpb24sCisgICAgY29uc3QgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25DYWxs
KQoreworICAgIEFTU0VSVChmdW5jdGlvbkNhbGwtPmdldE9wKCkgPT0gRU9wQ2FsbEZ1bmN0aW9u
SW5BU1QpOworCisgICAgY29uc3QgVEludGVybVNlcXVlbmNlICZhcmd1bWVudHMgPSAqZnVuY3Rp
b25DYWxsLT5nZXRTZXF1ZW5jZSgpOworCisgICAgQVNTRVJUKGZ1bmN0aW9uRGVmaW5pdGlvbi0+
Z2V0UGFyYW1Db3VudCgpID09IGFyZ3VtZW50cy5zaXplKCkpOworCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCisgICAgeworICAgICAgICBUSW50ZXJt
VHlwZWQgKnR5cGVkQXJndW1lbnQgICAgICAgID0gYXJndW1lbnRzW2ldLT5nZXRBc1R5cGVkKCk7
CisgICAgICAgIGNvbnN0IFRUeXBlICZmdW5jdGlvbkFyZ3VtZW50VHlwZSAgPSB0eXBlZEFyZ3Vt
ZW50LT5nZXRUeXBlKCk7CisgICAgICAgIGNvbnN0IFRUeXBlICZmdW5jdGlvblBhcmFtZXRlclR5
cGUgPSAqZnVuY3Rpb25EZWZpbml0aW9uLT5nZXRQYXJhbShpKS50eXBlOworICAgICAgICBBU1NF
UlQoZnVuY3Rpb25Bcmd1bWVudFR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gZnVuY3Rpb25QYXJhbWV0
ZXJUeXBlLmdldEJhc2ljVHlwZSgpKTsKKworICAgICAgICBpZiAoSXNJbWFnZShmdW5jdGlvbkFy
Z3VtZW50VHlwZS5nZXRCYXNpY1R5cGUoKSkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGFycmF5
U2l6ZSA9IHR5cGVkVGhpcy0+Z2V0QXJyYXlTaXplKCk7Ci0gICAgICAgICAgICBpZiAodHlwZWRU
aGlzLT5nZXRBc1N5bWJvbE5vZGUoKSA9PSBudWxscHRyKQorICAgICAgICAgICAgY29uc3QgVE1l
bW9yeVF1YWxpZmllciAmZnVuY3Rpb25Bcmd1bWVudE1lbW9yeVF1YWxpZmllciA9CisgICAgICAg
ICAgICAgICAgZnVuY3Rpb25Bcmd1bWVudFR5cGUuZ2V0TWVtb3J5UXVhbGlmaWVyKCk7CisgICAg
ICAgICAgICBjb25zdCBUTWVtb3J5UXVhbGlmaWVyICZmdW5jdGlvblBhcmFtZXRlck1lbW9yeVF1
YWxpZmllciA9CisgICAgICAgICAgICAgICAgZnVuY3Rpb25QYXJhbWV0ZXJUeXBlLmdldE1lbW9y
eVF1YWxpZmllcigpOworICAgICAgICAgICAgaWYgKGZ1bmN0aW9uQXJndW1lbnRNZW1vcnlRdWFs
aWZpZXIucmVhZG9ubHkgJiYKKyAgICAgICAgICAgICAgICAhZnVuY3Rpb25QYXJhbWV0ZXJNZW1v
cnlRdWFsaWZpZXIucmVhZG9ubHkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXJy
b3IoZnVuY3Rpb25DYWxsLT5nZXRMaW5lKCksCisgICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0
aW9uIGNhbGwgZGlzY2FyZHMgdGhlICdyZWFkb25seScgcXVhbGlmaWVyIGZyb20gaW1hZ2UiLAor
ICAgICAgICAgICAgICAgICAgICAgIEdldEltYWdlQXJndW1lbnRUb2tlbih0eXBlZEFyZ3VtZW50
KSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmdW5jdGlvbkFyZ3VtZW50TWVt
b3J5UXVhbGlmaWVyLndyaXRlb25seSAmJgorICAgICAgICAgICAgICAgICFmdW5jdGlvblBhcmFt
ZXRlck1lbW9yeVF1YWxpZmllci53cml0ZW9ubHkpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgZXJyb3IoZnVuY3Rpb25DYWxsLT5nZXRMaW5lKCksCisgICAgICAgICAgICAgICAgICAg
ICAgIkZ1bmN0aW9uIGNhbGwgZGlzY2FyZHMgdGhlICd3cml0ZW9ubHknIHF1YWxpZmllciBmcm9t
IGltYWdlIiwKKyAgICAgICAgICAgICAgICAgICAgICBHZXRJbWFnZUFyZ3VtZW50VG9rZW4odHlw
ZWRBcmd1bWVudCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZnVuY3Rpb25B
cmd1bWVudE1lbW9yeVF1YWxpZmllci5jb2hlcmVudCAmJgorICAgICAgICAgICAgICAgICFmdW5j
dGlvblBhcmFtZXRlck1lbW9yeVF1YWxpZmllci5jb2hlcmVudCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBlcnJvcihmdW5jdGlvbkNhbGwtPmdldExpbmUoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAiRnVuY3Rpb24gY2FsbCBkaXNjYXJkcyB0aGUgJ2NvaGVyZW50JyBxdWFsaWZp
ZXIgZnJvbSBpbWFnZSIsCisgICAgICAgICAgICAgICAgICAgICAgR2V0SW1hZ2VBcmd1bWVudFRv
a2VuKHR5cGVkQXJndW1lbnQpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGZ1
bmN0aW9uQXJndW1lbnRNZW1vcnlRdWFsaWZpZXIudm9sYXRpbGVRdWFsaWZpZXIgJiYKKyAgICAg
ICAgICAgICAgICAhZnVuY3Rpb25QYXJhbWV0ZXJNZW1vcnlRdWFsaWZpZXIudm9sYXRpbGVRdWFs
aWZpZXIpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyBjb2RlIHBhdGgg
Y2FuIGJlIGhpdCB3aXRoIGV4cHJlc3Npb25zIGxpa2UgdGhlc2U6Ci0gICAgICAgICAgICAgICAg
Ly8gKGEgPSBiKS5sZW5ndGgoKQotICAgICAgICAgICAgICAgIC8vIChmdW5jKCkpLmxlbmd0aCgp
Ci0gICAgICAgICAgICAgICAgLy8gKGludFszXSgwLCAxLCAyKSkubGVuZ3RoKCkKLSAgICAgICAg
ICAgICAgICAvLyBFU1NMIDMuMDAgc2VjdGlvbiA1LjkgZGVmaW5lcyBleHByZXNzaW9ucyBzbyB0
aGF0IHRoaXMgaXMgbm90IGFjdHVhbGx5IGEgdmFsaWQKLSAgICAgICAgICAgICAgICAvLyBleHBy
ZXNzaW9uLgotICAgICAgICAgICAgICAgIC8vIEl0IGFsbG93cyAiQW4gYXJyYXkgbmFtZSB3aXRo
IHRoZSBsZW5ndGggbWV0aG9kIGFwcGxpZWQiIGluIGNvbnRyYXN0IHRvIEdMU0wgNC40Ci0gICAg
ICAgICAgICAgICAgLy8gc3BlYyBzZWN0aW9uIDUuOSB3aGljaCBhbGxvd3MgIkFuIGFycmF5LCB2
ZWN0b3Igb3IgbWF0cml4IGV4cHJlc3Npb24gd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAvLyBs
ZW5ndGggbWV0aG9kIGFwcGxpZWQiLgotICAgICAgICAgICAgICAgIGVycm9yKGxvYywgImxlbmd0
aCBjYW4gb25seSBiZSBjYWxsZWQgb24gYXJyYXkgbmFtZXMsIG5vdCBvbiBhcnJheSBleHByZXNz
aW9ucyIsCi0gICAgICAgICAgICAgICAgICAgICAgImxlbmd0aCIpOworICAgICAgICAgICAgICAg
IGVycm9yKGZ1bmN0aW9uQ2FsbC0+Z2V0TGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgICJG
dW5jdGlvbiBjYWxsIGRpc2NhcmRzIHRoZSAndm9sYXRpbGUnIHF1YWxpZmllciBmcm9tIGltYWdl
IiwKKyAgICAgICAgICAgICAgICAgICAgICBHZXRJbWFnZUFyZ3VtZW50VG9rZW4odHlwZWRBcmd1
bWVudCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHVuaW9uQXJyYXktPnNl
dElDb25zdChhcnJheVNpemUpOwotICAgICAgICBjYWxsTm9kZSA9Ci0gICAgICAgICAgICBpbnRl
cm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVicFVu
ZGVmaW5lZCwgRXZxQ29uc3QpLCBsb2MpOwogICAgIH0KLSAgICBlbHNlIGlmIChvcCAhPSBFT3BO
dWxsKQorfQorCitUSW50ZXJtU2VxdWVuY2UgKlRQYXJzZUNvbnRleHQ6OmNyZWF0ZUVtcHR5QXJn
dW1lbnRzTGlzdCgpCit7CisgICAgcmV0dXJuIG5ldyBUSW50ZXJtU2VxdWVuY2UoKTsKK30KKwor
VEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRGdW5jdGlvbkNhbGxPck1ldGhvZChURnVu
Y3Rpb24gKmZuQ2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVEludGVybVNlcXVlbmNlICphcmd1bWVudHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICp0aGlzTm9k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFNvdXJjZUxvYyAmbG9jKQoreworICAgIGlmICh0aGlzTm9kZSAhPSBudWxscHRyKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkZE1ldGhvZChmbkNhbGwsIGFyZ3VtZW50cywgdGhpc05v
ZGUsIGxvYyk7CisgICAgfQorCisgICAgVE9wZXJhdG9yIG9wID0gZm5DYWxsLT5nZXRCdWlsdElu
T3AoKTsKKyAgICBpZiAob3AgIT0gRU9wTnVsbCkKICAgICB7Ci0gICAgICAgIC8vIFRoZW4gdGhp
cyBzaG91bGQgYmUgYSBjb25zdHJ1Y3Rvci4KLSAgICAgICAgY2FsbE5vZGUgPSBhZGRDb25zdHJ1
Y3RvcihwYXJhbU5vZGUsIG9wLCBmbkNhbGwsIGxvYyk7CisgICAgICAgIHJldHVybiBhZGRDb25z
dHJ1Y3Rvcihhcmd1bWVudHMsIG9wLCBmbkNhbGwtPmdldFJldHVyblR5cGUoKSwgbG9jKTsKICAg
ICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgLy8KLSAgICAgICAgLy8gTm90IGEgY29uc3Ry
dWN0b3IuICBGaW5kIGl0IGluIHRoZSBzeW1ib2wgdGFibGUuCi0gICAgICAgIC8vCi0gICAgICAg
IGNvbnN0IFRGdW5jdGlvbiAqZm5DYW5kaWRhdGU7Ci0gICAgICAgIGJvb2wgYnVpbHRJbjsKLSAg
ICAgICAgZm5DYW5kaWRhdGUgPSBmaW5kRnVuY3Rpb24obG9jLCBmbkNhbGwsIG1TaGFkZXJWZXJz
aW9uLCAmYnVpbHRJbik7Ci0gICAgICAgIGlmIChmbkNhbmRpZGF0ZSkKKyAgICAgICAgcmV0dXJu
IGFkZE5vbkNvbnN0cnVjdG9yRnVuY3Rpb25DYWxsKGZuQ2FsbCwgYXJndW1lbnRzLCBsb2MpOwor
ICAgIH0KK30KKworVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRNZXRob2QoVEZ1bmN0
aW9uICpmbkNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50
ZXJtU2VxdWVuY2UgKmFyZ3VtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJbnRlcm1Ob2RlICp0aGlzTm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvYykKK3sKKyAgICBUQ29uc3RhbnRVbmlv
biAqdW5pb25BcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsKKyAgICBpbnQgYXJyYXlTaXpl
ICAgICAgICAgICAgICA9IDA7CisgICAgVEludGVybVR5cGVkICp0eXBlZFRoaXMgICAgPSB0aGlz
Tm9kZS0+Z2V0QXNUeXBlZCgpOworICAgIC8vIEl0J3MgcG9zc2libGUgZm9yIHRoZSBuYW1lIHBv
aW50ZXIgaW4gdGhlIFRGdW5jdGlvbiB0byBiZSBudWxsIGluIGNhc2UgaXQgZ2V0cyBwYXJzZWQg
YXMKKyAgICAvLyBhIGNvbnN0cnVjdG9yLiBCdXQgc3VjaCBhIFRGdW5jdGlvbiBjYW4ndCByZWFj
aCBoZXJlLCBzaW5jZSB0aGUgbGV4ZXIgZ29lcyBpbnRvIEZJRUxEUworICAgIC8vIG1vZGUgYWZ0
ZXIgYSBkb3QsIHdoaWNoIG1ha2VzIHR5cGUgaWRlbnRpZmllcnMgdG8gYmUgcGFyc2VkIGFzIEZJ
RUxEX1NFTEVDVElPTiBpbnN0ZWFkLgorICAgIC8vIFNvIGFjY2Vzc2luZyBmbkNhbGwtPmdldE5h
bWUoKSBiZWxvdyBpcyBzYWZlLgorICAgIGlmIChmbkNhbGwtPmdldE5hbWUoKSAhPSAibGVuZ3Ro
IikKKyAgICB7CisgICAgICAgIGVycm9yKGxvYywgImludmFsaWQgbWV0aG9kIiwgZm5DYWxsLT5n
ZXROYW1lKCkuY19zdHIoKSk7CisgICAgfQorICAgIGVsc2UgaWYgKCFhcmd1bWVudHMtPmVtcHR5
KCkpCisgICAgeworICAgICAgICBlcnJvcihsb2MsICJtZXRob2QgdGFrZXMgbm8gcGFyYW1ldGVy
cyIsICJsZW5ndGgiKTsKKyAgICB9CisgICAgZWxzZSBpZiAodHlwZWRUaGlzID09IG51bGxwdHIg
fHwgIXR5cGVkVGhpcy0+aXNBcnJheSgpKQorICAgIHsKKyAgICAgICAgZXJyb3IobG9jLCAibGVu
Z3RoIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhcnJheXMiLCAibGVuZ3RoIik7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIGFycmF5U2l6ZSA9IHR5cGVkVGhpcy0+Z2V0QXJyYXlTaXpl
KCk7CisgICAgICAgIGlmICh0eXBlZFRoaXMtPmdldEFzU3ltYm9sTm9kZSgpID09IG51bGxwdHIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoaXMgY29kZSBwYXRoIGNhbiBiZSBoaXQgd2l0
aCBleHByZXNzaW9ucyBsaWtlIHRoZXNlOgorICAgICAgICAgICAgLy8gKGEgPSBiKS5sZW5ndGgo
KQorICAgICAgICAgICAgLy8gKGZ1bmMoKSkubGVuZ3RoKCkKKyAgICAgICAgICAgIC8vIChpbnRb
M10oMCwgMSwgMikpLmxlbmd0aCgpCisgICAgICAgICAgICAvLyBFU1NMIDMuMDAgc2VjdGlvbiA1
LjkgZGVmaW5lcyBleHByZXNzaW9ucyBzbyB0aGF0IHRoaXMgaXMgbm90IGFjdHVhbGx5IGEgdmFs
aWQKKyAgICAgICAgICAgIC8vIGV4cHJlc3Npb24uCisgICAgICAgICAgICAvLyBJdCBhbGxvd3Mg
IkFuIGFycmF5IG5hbWUgd2l0aCB0aGUgbGVuZ3RoIG1ldGhvZCBhcHBsaWVkIiBpbiBjb250cmFz
dCB0byBHTFNMIDQuNAorICAgICAgICAgICAgLy8gc3BlYyBzZWN0aW9uIDUuOSB3aGljaCBhbGxv
d3MgIkFuIGFycmF5LCB2ZWN0b3Igb3IgbWF0cml4IGV4cHJlc3Npb24gd2l0aCB0aGUKKyAgICAg
ICAgICAgIC8vIGxlbmd0aCBtZXRob2QgYXBwbGllZCIuCisgICAgICAgICAgICBlcnJvcihsb2Ms
ICJsZW5ndGggY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGFycmF5IG5hbWVzLCBub3Qgb24gYXJyYXkg
ZXhwcmVzc2lvbnMiLAorICAgICAgICAgICAgICAgICAgImxlbmd0aCIpOworICAgICAgICB9Cisg
ICAgfQorICAgIHVuaW9uQXJyYXktPnNldElDb25zdChhcnJheVNpemUpOworICAgIHJldHVybiBp
bnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5LCBUVHlwZShFYnRJbnQsIEVi
cFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBsb2MpOworfQorCitUSW50ZXJtVHlwZWQgKlRQYXJzZUNv
bnRleHQ6OmFkZE5vbkNvbnN0cnVjdG9yRnVuY3Rpb25DYWxsKFRGdW5jdGlvbiAqZm5DYWxsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUSW50ZXJtU2VxdWVuY2UgKmFyZ3VtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKQor
eworICAgIC8vIEZpcnN0IGZpbmQgYnkgdW5tYW5nbGVkIG5hbWUgdG8gY2hlY2sgd2hldGhlciB0
aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbgorICAgIC8vIGhpZGRlbiBieSBhIHZhcmlhYmxlIG5h
bWUgb3Igc3RydWN0IHR5cGVuYW1lLgorICAgIC8vIElmIGEgZnVuY3Rpb24gaXMgZm91bmQsIGNo
ZWNrIGZvciBvbmUgd2l0aCBhIG1hdGNoaW5nIGFyZ3VtZW50IGxpc3QuCisgICAgYm9vbCBidWls
dEluOworICAgIGNvbnN0IFRTeW1ib2wgKnN5bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmQoZm5DYWxs
LT5nZXROYW1lKCksIG1TaGFkZXJWZXJzaW9uLCAmYnVpbHRJbik7CisgICAgaWYgKHN5bWJvbCAh
PSBudWxscHRyICYmICFzeW1ib2wtPmlzRnVuY3Rpb24oKSkKKyAgICB7CisgICAgICAgIGVycm9y
KGxvYywgImZ1bmN0aW9uIG5hbWUgZXhwZWN0ZWQiLCBmbkNhbGwtPmdldE5hbWUoKS5jX3N0cigp
KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc3ltYm9sID0gc3ltYm9sVGFibGUu
ZmluZChURnVuY3Rpb246OkdldE1hbmdsZWROYW1lRnJvbUNhbGwoZm5DYWxsLT5nZXROYW1lKCks
ICphcmd1bWVudHMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TaGFkZXJW
ZXJzaW9uLCAmYnVpbHRJbik7CisgICAgICAgIGlmIChzeW1ib2wgPT0gbnVsbHB0cikKICAgICAg
ICAgeworICAgICAgICAgICAgZXJyb3IobG9jLCAibm8gbWF0Y2hpbmcgb3ZlcmxvYWRlZCBmdW5j
dGlvbiBmb3VuZCIsIGZuQ2FsbC0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgVEZ1bmN0aW9uICpmbkNhbmRp
ZGF0ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRGdW5jdGlvbiAqPihzeW1ib2wpOwogICAgICAgICAg
ICAgLy8KICAgICAgICAgICAgIC8vIEEgZGVjbGFyZWQgZnVuY3Rpb24uCiAgICAgICAgICAgICAv
LwpAQCAtMzgwOSwxMDIgKzQ1MTIsNzAgQEAgVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0Ojph
ZGRGdW5jdGlvbkNhbGxPck1ldGhvZChURnVuY3Rpb24gKmZuQ2FsbCwKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBjaGVja0NhblVzZUV4dGVuc2lvbihsb2MsIGZuQ2FuZGlkYXRlLT5n
ZXRFeHRlbnNpb24oKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBvcCA9IGZuQ2FuZGlk
YXRlLT5nZXRCdWlsdEluT3AoKTsKKyAgICAgICAgICAgIFRPcGVyYXRvciBvcCA9IGZuQ2FuZGlk
YXRlLT5nZXRCdWlsdEluT3AoKTsKICAgICAgICAgICAgIGlmIChidWlsdEluICYmIG9wICE9IEVP
cE51bGwpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAg
ICAvLyBBIGZ1bmN0aW9uIGNhbGwgbWFwcGVkIHRvIGEgYnVpbHQtaW4gb3BlcmF0aW9uLgotICAg
ICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAgICAgaWYgKGZuQ2FuZGlkYXRlLT5nZXRQYXJh
bUNvdW50KCkgPT0gMSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8v
CiAgICAgICAgICAgICAgICAgICAgIC8vIFRyZWF0IGl0IGxpa2UgYSBidWlsdC1pbiB1bmFyeSBv
cGVyYXRvci4KLSAgICAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAgICAgVElu
dGVybUFnZ3JlZ2F0ZSAqcGFyYW1BZ2cgPSBwYXJhbU5vZGUtPmdldEFzQWdncmVnYXRlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIHBhcmFtTm9kZSAgICAgICAgICAgICAgICAgID0gcGFyYW1BZ2ct
PmdldFNlcXVlbmNlKCktPmZyb250KCk7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxOb2RlID0g
Y3JlYXRlVW5hcnlNYXRoKG9wLCBwYXJhbU5vZGUtPmdldEFzVHlwZWQoKSwgbG9jLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm5DYW5kaWRhdGUtPmdl
dFJldHVyblR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjYWxsTm9kZSA9PSBudWxs
cHRyKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnN0cmluZ3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgICAgICAgICAgICAgICAgICAgICBl
eHRyYUluZm9TdHJlYW0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiYnVpbHQgaW4g
dW5hcnkgb3BlcmF0b3IgZnVuY3Rpb24uICBUeXBlOiAiCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgc3RhdGljX2Nhc3Q8VEludGVybVR5cGVkICo+KHBhcmFtTm9kZSktPmdldENvbXBs
ZXRlU3RyaW5nKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBleHRyYUlu
Zm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlcnJv
cihwYXJhbU5vZGUtPmdldExpbmUoKSwgIiB3cm9uZyBvcGVyYW5kIHR5cGUiLCAiSW50ZXJuYWwg
RXJyb3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvLmNfc3RyKCkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgKmZhdGFsRXJyb3IgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKnVuYXJ5UGFyYW1Ob2RlID0gYXJndW1lbnRz
LT5mcm9udCgpOworICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmNhbGxOb2RlID0g
Y3JlYXRlVW5hcnlNYXRoKG9wLCB1bmFyeVBhcmFtTm9kZS0+Z2V0QXNUeXBlZCgpLCBsb2MpOwor
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2FsbE5vZGUgIT0gbnVsbHB0cik7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjYWxsTm9kZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgVElu
dGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlID0KLSAgICAgICAgICAgICAgICAgICAgICAgIGludGVy
bWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihwYXJhbU5vZGUsIG9wLCBsb2MpOwotICAgICAg
ICAgICAgICAgICAgICBhZ2dyZWdhdGUtPnNldFR5cGUoZm5DYW5kaWRhdGUtPmdldFJldHVyblR5
cGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZS0+c2V0UHJlY2lzaW9uRnJvbUNo
aWxkcmVuKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhZ2dyZWdhdGUtPmFyZUNoaWxkcmVu
Q29uc3RRdWFsaWZpZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgYWdncmVnYXRlLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxQ29u
c3QpOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1B
Z2dyZWdhdGUgKmNhbGxOb2RlID0KKyAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dy
ZWdhdGU6OkNyZWF0ZShmbkNhbmRpZGF0ZS0+Z2V0UmV0dXJuVHlwZSgpLCBvcCwgYXJndW1lbnRz
KTsKKyAgICAgICAgICAgICAgICAgICAgY2FsbE5vZGUtPnNldExpbmUobG9jKTsKIAogICAgICAg
ICAgICAgICAgICAgICAvLyBTb21lIGJ1aWx0LWluIGZ1bmN0aW9ucyBoYXZlIG91dCBwYXJhbWV0
ZXJzIHRvby4KLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25DYWxsTFZhbHVlRXJyb3JDaGVj
ayhmbkNhbmRpZGF0ZSwgYWdncmVnYXRlKTsKKyAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25D
YWxsTFZhbHVlRXJyb3JDaGVjayhmbkNhbmRpZGF0ZSwgY2FsbE5vZGUpOwogCiAgICAgICAgICAg
ICAgICAgICAgIC8vIFNlZSBpZiB3ZSBjYW4gY29uc3RhbnQgZm9sZCBhIGJ1aWx0LWluLiBOb3Rl
IHRoYXQgdGhpcyBtYXkgYmUgcG9zc2libGUgZXZlbgogICAgICAgICAgICAgICAgICAgICAvLyBp
ZiBpdCBpcyBub3QgY29uc3QtcXVhbGlmaWVkLgogICAgICAgICAgICAgICAgICAgICBUSW50ZXJt
VHlwZWQgKmZvbGRlZE5vZGUgPQotICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJtZWRpYXRl
LmZvbGRBZ2dyZWdhdGVCdWlsdEluKGFnZ3JlZ2F0ZSwgJm1EaWFnbm9zdGljcyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGUuZm9sZEFnZ3JlZ2F0ZUJ1aWx0SW4oY2FsbE5v
ZGUsIG1EaWFnbm9zdGljcyk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChmb2xkZWROb2RlKQog
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxsTm9kZSA9
IGZvbGRlZE5vZGU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWxs
Tm9kZSA9IGFnZ3JlZ2F0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmb2xkZWRO
b2RlOwogICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBj
YWxsTm9kZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHJlYWwgZnVu
Y3Rpb24gY2FsbAotICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSA9
Ci0gICAgICAgICAgICAgICAgICAgIGludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihw
YXJhbU5vZGUsIEVPcEZ1bmN0aW9uQ2FsbCwgbG9jKTsKLSAgICAgICAgICAgICAgICBhZ2dyZWdh
dGUtPnNldFR5cGUoZm5DYW5kaWRhdGUtPmdldFJldHVyblR5cGUoKSk7Ci0KLSAgICAgICAgICAg
ICAgICAvLyB0aGlzIGlzIGhvdyB3ZSBrbm93IHdoZXRoZXIgdGhlIGdpdmVuIGZ1bmN0aW9uIGlz
IGEgYnVpbHRJbiBmdW5jdGlvbiBvciBhIHVzZXIKLSAgICAgICAgICAgICAgICAvLyBkZWZpbmVk
IGZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgLy8gaWYgYnVpbHRJbiA9PSBmYWxzZSwgaXQncyBh
IHVzZXJEZWZpbmVkIC0+IGNvdWxkIGJlIGFuIG92ZXJsb2FkZWQKLSAgICAgICAgICAgICAgICAv
LyBidWlsdEluIGZ1bmN0aW9uIGFsc28KLSAgICAgICAgICAgICAgICAvLyBpZiBidWlsdEluID09
IHRydWUsIGl0J3MgZGVmaW5pdGVseSBhIGJ1aWx0SW4gZnVuY3Rpb24gd2l0aCBFT3BOdWxsCi0g
ICAgICAgICAgICAgICAgaWYgKCFidWlsdEluKQotICAgICAgICAgICAgICAgICAgICBhZ2dyZWdh
dGUtPnNldFVzZXJEZWZpbmVkKCk7Ci0gICAgICAgICAgICAgICAgYWdncmVnYXRlLT5nZXRGdW5j
dGlvblN5bWJvbEluZm8oKS0+c2V0RnJvbUZ1bmN0aW9uKCpmbkNhbmRpZGF0ZSk7Ci0KLSAgICAg
ICAgICAgICAgICAvLyBUaGlzIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB0aGUgZnVuY3Rpb24gaW5m
byBpbmNsdWRpbmcgbmFtZSBpcyBzZXQKKyAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRl
ICpjYWxsTm9kZSA9IG51bGxwdHI7CisKKyAgICAgICAgICAgICAgICAvLyBJZiBidWlsdEluID09
IGZhbHNlLCB0aGUgZnVuY3Rpb24gaXMgdXNlciBkZWZpbmVkIC0gY291bGQgYmUgYW4gb3Zlcmxv
YWRlZAorICAgICAgICAgICAgICAgIC8vIGJ1aWx0LWluIGFzIHdlbGwuCisgICAgICAgICAgICAg
ICAgLy8gaWYgYnVpbHRJbiA9PSB0cnVlLCBpdCdzIGEgYnVpbHRJbiBmdW5jdGlvbiB3aXRoIG5v
IG9wIGFzc29jaWF0ZWQgd2l0aCBpdC4KKyAgICAgICAgICAgICAgICAvLyBUaGlzIG5lZWRzIHRv
IGhhcHBlbiBhZnRlciB0aGUgZnVuY3Rpb24gaW5mbyBpbmNsdWRpbmcgbmFtZSBpcyBzZXQuCiAg
ICAgICAgICAgICAgICAgaWYgKGJ1aWx0SW4pCiAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBhZ2dyZWdhdGUtPnNldEJ1aWx0SW5GdW5jdGlvblByZWNpc2lvbigpOwotCi0g
ICAgICAgICAgICAgICAgICAgIGNoZWNrVGV4dHVyZU9mZnNldENvbnN0KGFnZ3JlZ2F0ZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGNhbGxOb2RlID0gVEludGVybUFnZ3JlZ2F0ZTo6Q3JlYXRlQnVp
bHRJbkZ1bmN0aW9uQ2FsbCgqZm5DYW5kaWRhdGUsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICAg
ICAgICAgIGNoZWNrVGV4dHVyZU9mZnNldENvbnN0KGNhbGxOb2RlKTsKKyAgICAgICAgICAgICAg
ICAgICAgY2hlY2tJbWFnZU1lbW9yeUFjY2Vzc0ZvckJ1aWx0aW5GdW5jdGlvbnMoY2FsbE5vZGUp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBjYWxsTm9kZSA9IFRJbnRlcm1BZ2dyZWdhdGU6OkNy
ZWF0ZUZ1bmN0aW9uQ2FsbCgqZm5DYW5kaWRhdGUsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICAg
ICAgICAgIGNoZWNrSW1hZ2VNZW1vcnlBY2Nlc3NGb3JVc2VyRGVmaW5lZEZ1bmN0aW9ucyhmbkNh
bmRpZGF0ZSwgY2FsbE5vZGUpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IGNhbGxOb2RlID0gYWdncmVnYXRlOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uQ2FsbExWYWx1
ZUVycm9yQ2hlY2soZm5DYW5kaWRhdGUsIGNhbGxOb2RlKTsKIAotICAgICAgICAgICAgICAgIGZ1
bmN0aW9uQ2FsbExWYWx1ZUVycm9yQ2hlY2soZm5DYW5kaWRhdGUsIGFnZ3JlZ2F0ZSk7CisgICAg
ICAgICAgICAgICAgY2FsbE5vZGUtPnNldExpbmUobG9jKTsKKworICAgICAgICAgICAgICAgIHJl
dHVybiBjYWxsTm9kZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIC8vIGVycm9yIG1lc3NhZ2Ugd2FzIHB1dCBvdXQgYnkgZmlu
ZEZ1bmN0aW9uKCkKLSAgICAgICAgICAgIC8vIFB1dCBvbiBhIGR1bW15IG5vZGUgZm9yIGVycm9y
IHJlY292ZXJ5Ci0gICAgICAgICAgICBUQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBU
Q29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgICAgIHVuaW9uQXJyYXktPnNldEZDb25zdCgwLjBm
KTsKLSAgICAgICAgICAgIGNhbGxOb2RlID0gaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24o
dW5pb25BcnJheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBsb2MpOwot
ICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBjYWxsTm9kZTsKKworICAgIC8vIEVycm9yIG1l
c3NhZ2Ugd2FzIGFscmVhZHkgd3JpdHRlbi4gUHV0IG9uIGEgZHVtbXkgbm9kZSBmb3IgZXJyb3Ig
cmVjb3ZlcnkuCisgICAgcmV0dXJuIFRJbnRlcm1UeXBlZDo6Q3JlYXRlWmVybyhUVHlwZShFYnRG
bG9hdCwgRWJwTWVkaXVtLCBFdnFDb25zdCkpOwogfQogCiBUSW50ZXJtVHlwZWQgKlRQYXJzZUNv
bnRleHQ6OmFkZFRlcm5hcnlTZWxlY3Rpb24oVEludGVybVR5cGVkICpjb25kLApAQCAtMzkyMCw2
ICs0NTkxLDE3IEBAIFRJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6YWRkVGVybmFyeVNlbGVj
dGlvbihUSW50ZXJtVHlwZWQgKmNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgZmFsc2VFeHBy
ZXNzaW9uLT5nZXRDb21wbGV0ZVN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlRXhwcmVz
c2lvbjsKICAgICB9CisgICAgaWYgKElzT3BhcXVlVHlwZSh0cnVlRXhwcmVzc2lvbi0+Z2V0QmFz
aWNUeXBlKCkpKQorICAgIHsKKyAgICAgICAgLy8gRVNTTCAxLjAwIHNlY3Rpb24gNC4xLjcKKyAg
ICAgICAgLy8gRVNTTCAzLjAwIHNlY3Rpb24gNC4xLjcKKyAgICAgICAgLy8gT3BhcXVlL3NhbXBs
ZXIgdHlwZXMgYXJlIG5vdCBhbGxvd2VkIGluIG1vc3QgdHlwZXMgb2YgZXhwcmVzc2lvbnMsIGlu
Y2x1ZGluZyB0ZXJuYXJ5LgorICAgICAgICAvLyBOb3RlIHRoYXQgc3RydWN0cyBjb250YWluaW5n
IG9wYXF1ZSB0eXBlcyBkb24ndCBuZWVkIHRvIGJlIGNoZWNrZWQgYXMgc3RydWN0cyBhcmUKKyAg
ICAgICAgLy8gZm9yYmlkZGVuIGJlbG93LgorICAgICAgICBlcnJvcihsb2MsICJ0ZXJuYXJ5IG9w
ZXJhdG9yIGlzIG5vdCBhbGxvd2VkIGZvciBvcGFxdWUgdHlwZXMiLCAiOiIpOworICAgICAgICBy
ZXR1cm4gZmFsc2VFeHByZXNzaW9uOworICAgIH0KKwogICAgIC8vIEVTU0wxIHNlY3Rpb25zIDUu
MiBhbmQgNS43OgogICAgIC8vIEVTU0wzIHNlY3Rpb24gNS43OgogICAgIC8vIFRlcm5hcnkgb3Bl
cmF0b3IgaXMgbm90IGFtb25nIHRoZSBvcGVyYXRvcnMgYWxsb3dlZCBmb3Igc3RydWN0dXJlcy9h
cnJheXMuCkBAIC0zOTYzLDMgKzQ2NDUsNSBAQCBpbnQgUGFQYXJzZVN0cmluZ3Moc2l6ZV90IGNv
dW50LAogCiAgICAgcmV0dXJuIChlcnJvciA9PSAwKSAmJiAoY29udGV4dC0+bnVtRXJyb3JzKCkg
PT0gMCkgPyAwIDogMTsKIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BhcnNl
Q29udGV4dC5oCmluZGV4IDZjYTNhM2NkNWZhZGI5OGRlZTc3YzVhYWM1NTI4MDg2ZmMxZTQ1OTEu
LjY2ZGRhN2ZlN2MyZDhmNWE0MmVmOTk0ZGM4MmUxYTUzNGYyNDg0MDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4
dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1BhcnNlQ29udGV4dC5oCkBAIC0xNCw2ICsxNCw5IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJh
bnNsYXRvci9RdWFsaWZpZXJUeXBlcy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9QcmVwcm9jZXNzb3IuaCIKIAorbmFtZXNwYWNlIHNoCit7CisKIHN0cnVjdCBUTWF0cml4Rmll
bGRzCiB7CiAgICAgYm9vbCB3aG9sZVJvdzsKQEAgLTM1LDQzICszOCw4IEBAIGNsYXNzIFRQYXJz
ZUNvbnRleHQgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgICAgICAgICAgIFNoU2hhZGVy
U3BlYyBzcGVjLAogICAgICAgICAgICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBvcHRpb25zLAog
ICAgICAgICAgICAgICAgICAgYm9vbCBjaGVja3NQcmVjRXJyb3JzLAotICAgICAgICAgICAgICAg
ICAgVEluZm9TaW5rICZpcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFNoQnVpbHRJblJlc291
cmNlcyAmcmVzb3VyY2VzKQotICAgICAgICA6IGludGVybWVkaWF0ZSgpLAotICAgICAgICAgIHN5
bWJvbFRhYmxlKHN5bXQpLAotICAgICAgICAgIG1EZWZlcnJlZFNpbmdsZURlY2xhcmF0aW9uRXJy
b3JDaGVjayhmYWxzZSksCi0gICAgICAgICAgbVNoYWRlclR5cGUodHlwZSksCi0gICAgICAgICAg
bVNoYWRlclNwZWMoc3BlYyksCi0gICAgICAgICAgbUNvbXBpbGVPcHRpb25zKG9wdGlvbnMpLAot
ICAgICAgICAgIG1TaGFkZXJWZXJzaW9uKDEwMCksCi0gICAgICAgICAgbVRyZWVSb290KG51bGxw
dHIpLAotICAgICAgICAgIG1Mb29wTmVzdGluZ0xldmVsKDApLAotICAgICAgICAgIG1TdHJ1Y3RO
ZXN0aW5nTGV2ZWwoMCksCi0gICAgICAgICAgbVN3aXRjaE5lc3RpbmdMZXZlbCgwKSwKLSAgICAg
ICAgICBtQ3VycmVudEZ1bmN0aW9uVHlwZShudWxscHRyKSwKLSAgICAgICAgICBtRnVuY3Rpb25S
ZXR1cm5zVmFsdWUoZmFsc2UpLAotICAgICAgICAgIG1DaGVja3NQcmVjaXNpb25FcnJvcnMoY2hl
Y2tzUHJlY0Vycm9ycyksCi0gICAgICAgICAgbUZyYWdtZW50UHJlY2lzaW9uSGlnaE9uRVNTTDEo
ZmFsc2UpLAotICAgICAgICAgIG1EZWZhdWx0TWF0cml4UGFja2luZyhFbXBDb2x1bW5NYWpvciks
Ci0gICAgICAgICAgbURlZmF1bHRCbG9ja1N0b3JhZ2UoSXNXZWJHTEJhc2VkU3BlYyhzcGVjKSA/
IEVic1N0ZDE0MCA6IEVic1NoYXJlZCksCi0gICAgICAgICAgbURpYWdub3N0aWNzKGlzKSwKLSAg
ICAgICAgICBtRGlyZWN0aXZlSGFuZGxlcihleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbURpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TaGFkZXJWZXJz
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TaGFkZXJUeXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy5XRUJHTF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9u
ID09IDEpLAotICAgICAgICAgIG1QcmVwcm9jZXNzb3IoJm1EaWFnbm9zdGljcywgJm1EaXJlY3Rp
dmVIYW5kbGVyKSwKLSAgICAgICAgICBtU2Nhbm5lcihudWxscHRyKSwKLSAgICAgICAgICBtVXNl
c0ZyYWdEYXRhKGZhbHNlKSwKLSAgICAgICAgICBtVXNlc0ZyYWdDb2xvcihmYWxzZSksCi0gICAg
ICAgICAgbVVzZXNTZWNvbmRhcnlPdXRwdXRzKGZhbHNlKSwKLSAgICAgICAgICBtTWluUHJvZ3Jh
bVRleGVsT2Zmc2V0KHJlc291cmNlcy5NaW5Qcm9ncmFtVGV4ZWxPZmZzZXQpLAotICAgICAgICAg
IG1NYXhQcm9ncmFtVGV4ZWxPZmZzZXQocmVzb3VyY2VzLk1heFByb2dyYW1UZXhlbE9mZnNldCks
Ci0gICAgICAgICAgbUNvbXB1dGVTaGFkZXJMb2NhbFNpemVEZWNsYXJlZChmYWxzZSksCi0gICAg
ICAgICAgbURlY2xhcmluZ0Z1bmN0aW9uKGZhbHNlKQotICAgIHsKLSAgICAgICAgbUNvbXB1dGVT
aGFkZXJMb2NhbFNpemUuZmlsbCgtMSk7Ci0gICAgfQorICAgICAgICAgICAgICAgICAgVERpYWdu
b3N0aWNzICpkaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICAgIGNvbnN0IFNoQnVpbHRJblJl
c291cmNlcyAmcmVzb3VyY2VzKTsKIAogICAgIGNvbnN0IHBwOjpQcmVwcm9jZXNzb3IgJmdldFBy
ZXByb2Nlc3NvcigpIGNvbnN0IHsgcmV0dXJuIG1QcmVwcm9jZXNzb3I7IH0KICAgICBwcDo6UHJl
cHJvY2Vzc29yICZnZXRQcmVwcm9jZXNzb3IoKSB7IHJldHVybiBtUHJlcHJvY2Vzc29yOyB9CkBA
IC04MCwxOSArNDgsMTUgQEAgY2xhc3MgVFBhcnNlQ29udGV4dCA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQogICAgIGludCBnZXRTaGFkZXJWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbVNoYWRlclZlcnNp
b247IH0KICAgICBzaDo6R0xlbnVtIGdldFNoYWRlclR5cGUoKSBjb25zdCB7IHJldHVybiBtU2hh
ZGVyVHlwZTsgfQogICAgIFNoU2hhZGVyU3BlYyBnZXRTaGFkZXJTcGVjKCkgY29uc3QgeyByZXR1
cm4gbVNoYWRlclNwZWM7IH0KLSAgICBpbnQgbnVtRXJyb3JzKCkgY29uc3QgeyByZXR1cm4gbURp
YWdub3N0aWNzLm51bUVycm9ycygpOyB9Ci0gICAgVEluZm9TaW5rICZpbmZvU2luaygpIHsgcmV0
dXJuIG1EaWFnbm9zdGljcy5pbmZvU2luaygpOyB9Ci0gICAgdm9pZCBlcnJvcihjb25zdCBUU291
cmNlTG9jICZsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29uc3QgY2hhciAqdG9rZW4sCi0gICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpleHRyYUluZm89IiIpOwotICAgIHZvaWQgd2FybmluZyhj
b25zdCBUU291cmNlTG9jICZsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29uc3QgY2hhciAqdG9r
ZW4sCi0gICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmV4dHJhSW5mbz0iIik7CisgICAgaW50
IG51bUVycm9ycygpIGNvbnN0IHsgcmV0dXJuIG1EaWFnbm9zdGljcy0+bnVtRXJyb3JzKCk7IH0K
KyAgICB2b2lkIGVycm9yKGNvbnN0IFRTb3VyY2VMb2MgJmxvYywgY29uc3QgY2hhciAqcmVhc29u
LCBjb25zdCBjaGFyICp0b2tlbik7CisgICAgdm9pZCB3YXJuaW5nKGNvbnN0IFRTb3VyY2VMb2Mg
JmxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyICp0b2tlbik7CiAKICAgICAvLyBJ
ZiBpc0Vycm9yIGlzIGZhbHNlLCBhIHdhcm5pbmcgd2lsbCBiZSByZXBvcnRlZCBpbnN0ZWFkLgog
ICAgIHZvaWQgb3V0T2ZSYW5nZUVycm9yKGJvb2wgaXNFcnJvciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAqcmVhc29uLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KnRva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmV4dHJhSW5mbyA9
ICIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbik7CiAKICAg
ICBUSW50ZXJtQmxvY2sgKmdldFRyZWVSb290KCkgY29uc3QgeyByZXR1cm4gbVRyZWVSb290OyB9
CiAgICAgdm9pZCBzZXRUcmVlUm9vdChUSW50ZXJtQmxvY2sgKnRyZWVSb290KSB7IG1UcmVlUm9v
dCA9IHRyZWVSb290OyB9CkBAIC0xMDYsMTAgKzcwLDcgQEAgY2xhc3MgVFBhcnNlQ29udGV4dCA6
IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICBtRnJhZ21lbnRQcmVjaXNpb25IaWdoT25FU1NM
MSA9IGZyYWdtZW50UHJlY2lzaW9uSGlnaDsKICAgICB9CiAKLSAgICB2b2lkIHNldExvb3BOZXN0
aW5nTGV2ZWwoaW50IGxvb3BOZXN0aW50TGV2ZWwpCi0gICAgewotICAgICAgICBtTG9vcE5lc3Rp
bmdMZXZlbCA9IGxvb3BOZXN0aW50TGV2ZWw7Ci0gICAgfQorICAgIHZvaWQgc2V0TG9vcE5lc3Rp
bmdMZXZlbChpbnQgbG9vcE5lc3RpbnRMZXZlbCkgeyBtTG9vcE5lc3RpbmdMZXZlbCA9IGxvb3BO
ZXN0aW50TGV2ZWw7IH0KIAogICAgIHZvaWQgaW5jckxvb3BOZXN0aW5nTGV2ZWwoKSB7ICsrbUxv
b3BOZXN0aW5nTGV2ZWw7IH0KICAgICB2b2lkIGRlY3JMb29wTmVzdGluZ0xldmVsKCkgeyAtLW1M
b29wTmVzdGluZ0xldmVsOyB9CkBAIC0xMjAsNiArODEsOCBAQCBjbGFzcyBUUGFyc2VDb250ZXh0
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgYm9vbCBpc0NvbXB1dGVTaGFkZXJMb2NhbFNpemVE
ZWNsYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1Db21wdXRlU2hhZGVyTG9jYWxTaXplRGVjbGFyZWQ7
IH0KICAgICBzaDo6V29ya0dyb3VwU2l6ZSBnZXRDb21wdXRlU2hhZGVyTG9jYWxTaXplKCkgY29u
c3Q7CiAKKyAgICBpbnQgZ2V0TnVtVmlld3MoKSBjb25zdCB7IHJldHVybiBtTnVtVmlld3M7IH0K
KwogICAgIHZvaWQgZW50ZXJGdW5jdGlvbkRlY2xhcmF0aW9uKCkgeyBtRGVjbGFyaW5nRnVuY3Rp
b24gPSB0cnVlOyB9CiAKICAgICB2b2lkIGV4aXRGdW5jdGlvbkRlY2xhcmF0aW9uKCkgeyBtRGVj
bGFyaW5nRnVuY3Rpb24gPSBmYWxzZTsgfQpAQCAtMTI3LDEyICs5MCwxNCBAQCBjbGFzcyBUUGFy
c2VDb250ZXh0IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgYm9vbCBkZWNsYXJpbmdGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1EZWNsYXJpbmdGdW5jdGlvbjsgfQogCiAgICAgLy8gVGhpcyBt
ZXRob2QgaXMgZ3VhcmFudGVlZCB0byBzdWNjZWVkLCBldmVuIGlmIG5vIHZhcmlhYmxlIHdpdGgg
J25hbWUnIGV4aXN0cy4KLSAgICBjb25zdCBUVmFyaWFibGUgKmdldE5hbWVkVmFyaWFibGUoY29u
c3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sIGNvbnN0IFRTdHJpbmcgKm5hbWUsIGNvbnN0IFRTeW1i
b2wgKnN5bWJvbCk7CisgICAgY29uc3QgVFZhcmlhYmxlICpnZXROYW1lZFZhcmlhYmxlKGNvbnN0
IFRTb3VyY2VMb2MgJmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUU3RyaW5nICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUU3ltYm9sICpzeW1ib2wpOwogICAgIFRJbnRlcm1UeXBlZCAqcGFyc2VW
YXJpYWJsZUlkZW50aWZpZXIoY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICpuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN5bWJvbCAqc3lt
Ym9sKTsKIAotICAgIGJvb2wgcGFyc2VWZWN0b3JGaWVsZHMoY29uc3QgVFN0cmluZyYsIGludCB2
ZWNTaXplLCBUVmVjdG9yRmllbGRzJiwgY29uc3QgVFNvdXJjZUxvYyAmbGluZSk7CisgICAgYm9v
bCBwYXJzZVZlY3RvckZpZWxkcyhjb25zdCBUU3RyaW5nICYsIGludCB2ZWNTaXplLCBUVmVjdG9y
RmllbGRzICYsIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpOwogCiAgICAgdm9pZCBhc3NpZ25FcnJv
cihjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBjaGFyICpvcCwgVFN0cmluZyBsZWZ0LCBU
U3RyaW5nIHJpZ2h0KTsKICAgICB2b2lkIHVuYXJ5T3BFcnJvcihjb25zdCBUU291cmNlTG9jICZs
aW5lLCBjb25zdCBjaGFyICpvcCwgVFN0cmluZyBvcGVyYW5kKTsKQEAgLTE0Nyw4ICsxMTIsNyBA
QCBjbGFzcyBUUGFyc2VDb250ZXh0IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdm9pZCBjaGVj
a0lzU2NhbGFySW50ZWdlcihUSW50ZXJtVHlwZWQgKm5vZGUsIGNvbnN0IGNoYXIgKnRva2VuKTsK
ICAgICBib29sIGNoZWNrSXNBdEdsb2JhbExldmVsKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNv
bnN0IGNoYXIgKnRva2VuKTsKICAgICBib29sIGNoZWNrQ29uc3RydWN0b3JBcmd1bWVudHMoY29u
c3QgVFNvdXJjZUxvYyAmbGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VEludGVybU5vZGUgKmFyZ3VtZW50c05vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRGdW5jdGlvbiAmZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUT3BlcmF0b3Igb3AsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlKTsKIApAQCAtMTYyLDI0ICsxMjYs
MjQgQEAgY2xhc3MgVFBhcnNlQ29udGV4dCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIGJvb2wg
Y2hlY2tJc05vdFNhbXBsZXIoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRUeXBlU3BlY2lmaWVyTm9uQXJyYXkgJnBUeXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKTsKKyAgICBib29sIGNoZWNr
SXNOb3RJbWFnZShjb25zdCBUU291cmNlTG9jICZsaW5lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRUeXBlU3BlY2lmaWVyTm9uQXJyYXkgJnBUeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbik7CiAgICAgdm9pZCBjaGVja0RlY2xhcmF0b3JM
b2NhdGlvbklzTm90U3BlY2lmaWVkKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRQdWJs
aWNUeXBlICZwVHlwZSk7CiAgICAgdm9pZCBjaGVja0xvY2F0aW9uSXNOb3RTcGVjaWZpZWQoY29u
c3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVExheW91dFF1YWxpZmllciAmbGF5b3V0UXVhbGlmaWVyKTsKLSAgICB2b2lk
IGNoZWNrT3V0UGFyYW1ldGVySXNOb3RTYW1wbGVyKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmll
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZ0
eXBlKTsKICAgICB2b2lkIGNoZWNrSXNQYXJhbWV0ZXJRdWFsaWZpZXJWYWxpZChjb25zdCBUU291
cmNlTG9jICZsaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRlciAmdHlwZVF1YWxpZmllckJ1aWxkZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUgKnR5cGUpOwogICAgIGJvb2wg
Y2hlY2tDYW5Vc2VFeHRlbnNpb24oY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFN0cmlu
ZyAmZXh0ZW5zaW9uKTsKICAgICB2b2lkIHNpbmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayhjb25z
dCBUUHVibGljVHlwZSAmcHVibGljVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24pOworICAgIHZvaWQg
ZW1wdHlEZWNsYXJhdGlvbkVycm9yQ2hlY2soY29uc3QgVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUs
IGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uKTsKICAgICB2b2lkIGNoZWNrTGF5b3V0UXVhbGlm
aWVyU3VwcG9ydGVkKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmbGF5b3V0UXVhbGlmaWVyTmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2ZXJzaW9uUmVx
dWlyZWQpOwogICAgIGJvb2wgY2hlY2tXb3JrR3JvdXBTaXplSXNOb3RTcGVjaWZpZWQoY29uc3Qg
VFNvdXJjZUxvYyAmbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUTGF5b3V0UXVhbGlmaWVyICZsYXlvdXRRdWFsaWZpZXIpOwotCiAgICAg
dm9pZCBmdW5jdGlvbkNhbGxMVmFsdWVFcnJvckNoZWNrKGNvbnN0IFRGdW5jdGlvbiAqZm5DYW5k
aWRhdGUsIFRJbnRlcm1BZ2dyZWdhdGUgKmZuQ2FsbCk7CiAgICAgdm9pZCBjaGVja0ludmFyaWFu
dFZhcmlhYmxlUXVhbGlmaWVyKGJvb2wgaW52YXJpYW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUUXVhbGlmaWVyIHF1YWxpZmllciwKQEAgLTE4Nywx
MTEgKzE1MSwxMTMgQEAgY2xhc3MgVFBhcnNlQ29udGV4dCA6IGFuZ2xlOjpOb25Db3B5YWJsZQog
ICAgIHZvaWQgY2hlY2tJbnB1dE91dHB1dFR5cGVJc1ZhbGlkRVMzKGNvbnN0IFRRdWFsaWZpZXIg
cXVhbGlmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRQdWJsaWNUeXBlICZ0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTb3VyY2VMb2MgJnF1YWxpZmllckxvY2F0aW9uKTsKLQorICAgIHZvaWQgY2hl
Y2tMb2NhbFZhcmlhYmxlQ29uc3RTdG9yYWdlUXVhbGlmaWVyKGNvbnN0IFRRdWFsaWZpZXJXcmFw
cGVyQmFzZSAmcXVhbGlmaWVyKTsKICAgICBjb25zdCBUUHJhZ21hICZwcmFnbWEoKSBjb25zdCB7
IHJldHVybiBtRGlyZWN0aXZlSGFuZGxlci5wcmFnbWEoKTsgfQotICAgIGNvbnN0IFRFeHRlbnNp
b25CZWhhdmlvciAmZXh0ZW5zaW9uQmVoYXZpb3IoKSBjb25zdCB7IHJldHVybiBtRGlyZWN0aXZl
SGFuZGxlci5leHRlbnNpb25CZWhhdmlvcigpOyB9CisgICAgY29uc3QgVEV4dGVuc2lvbkJlaGF2
aW9yICZleHRlbnNpb25CZWhhdmlvcigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbURp
cmVjdGl2ZUhhbmRsZXIuZXh0ZW5zaW9uQmVoYXZpb3IoKTsKKyAgICB9CiAgICAgYm9vbCBzdXBw
b3J0c0V4dGVuc2lvbihjb25zdCBjaGFyICpleHRlbnNpb24pOwogICAgIGJvb2wgaXNFeHRlbnNp
b25FbmFibGVkKGNvbnN0IGNoYXIgKmV4dGVuc2lvbikgY29uc3Q7CiAgICAgdm9pZCBoYW5kbGVF
eHRlbnNpb25EaXJlY3RpdmUoY29uc3QgVFNvdXJjZUxvYyAmbG9jLCBjb25zdCBjaGFyICpleHRO
YW1lLCBjb25zdCBjaGFyICpiZWhhdmlvcik7Ci0gICAgdm9pZCBoYW5kbGVQcmFnbWFEaXJlY3Rp
dmUoY29uc3QgVFNvdXJjZUxvYyAmbG9jLCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2
YWx1ZSwgYm9vbCBzdGRnbCk7CisgICAgdm9pZCBoYW5kbGVQcmFnbWFEaXJlY3RpdmUoY29uc3Qg
VFNvdXJjZUxvYyAmbG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdmFs
dWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzdGRnbCk7CiAKLSAgICBi
b29sIGNvbnRhaW5zU2FtcGxlcihjb25zdCBUVHlwZSAmdHlwZSk7Ci0gICAgY29uc3QgVEZ1bmN0
aW9uKiBmaW5kRnVuY3Rpb24oCi0gICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIFRGdW5j
dGlvbiAqcGZuQ2FsbCwgaW50IGlucHV0U2hhZGVyVmVyc2lvbiwgYm9vbCAqYnVpbHRJbiA9IDAp
OwogICAgIGJvb2wgZXhlY3V0ZUluaXRpYWxpemVyKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUUHVibGljVHlwZSAmcFR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbml0aWFsaXplciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqKmludGVybU5vZGUpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKippbml0Tm9kZSk7CiAKKyAgICB2
b2lkIGFkZEZ1bGx5U3BlY2lmaWVkVHlwZShUUHVibGljVHlwZSAqdHlwZVNwZWNpZmllcik7CiAg
ICAgVFB1YmxpY1R5cGUgYWRkRnVsbHlTcGVjaWZpZWRUeXBlKGNvbnN0IFRUeXBlUXVhbGlmaWVy
QnVpbGRlciAmdHlwZVF1YWxpZmllckJ1aWxkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRQdWJsaWNUeXBlICZ0eXBlU3BlY2lmaWVyKTsKIAotICAgIFRJ
bnRlcm1BZ2dyZWdhdGUgKnBhcnNlU2luZ2xlRGVjbGFyYXRpb24oVFB1YmxpY1R5cGUgJnB1Ymxp
Y1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUU291cmNlTG9jICZpZGVudGlmaWVyT3JUeXBlTG9jYXRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyKTsK
LSAgICBUSW50ZXJtQWdncmVnYXRlICpwYXJzZVNpbmdsZUFycmF5RGVjbGFyYXRpb24oVFB1Ymxp
Y1R5cGUgJnB1YmxpY1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmlu
ZyAmaWRlbnRpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5kZXhMb2NhdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbmRleEV4
cHJlc3Npb24pOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcnNlU2luZ2xlSW5pdERlY2xhcmF0
aW9uKGNvbnN0IFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJM
b2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmluaXRMb2NhdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQgKmluaXRpYWxpemVyKTsKKyAgICBUSW50ZXJtRGVjbGFyYXRpb24gKnBhcnNlU2luZ2xlRGVj
bGFyYXRpb24oVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJPclR5
cGVMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllcik7CisgICAgVEludGVybURlY2xhcmF0aW9uICpw
YXJzZVNpbmdsZUFycmF5RGVjbGFyYXRpb24oVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNv
dXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNv
dXJjZUxvYyAmaW5kZXhMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmluZGV4RXhwcmVzc2lvbik7CisgICAg
VEludGVybURlY2xhcmF0aW9uICpwYXJzZVNpbmdsZUluaXREZWNsYXJhdGlvbihjb25zdCBUUHVi
bGljVHlwZSAmcHVibGljVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
dHJpbmcgJmlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbml0TG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmlu
aXRpYWxpemVyKTsKIAogICAgIC8vIFBhcnNlIGEgZGVjbGFyYXRpb24gbGlrZSAidHlwZSBhW25d
ID0gaW5pdGlhbGl6ZXIiCiAgICAgLy8gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYXBwbHkgdG8g
ZGVjbGFyYXRpb25zIGxpa2UgInR5cGVbbl0gYSA9IGluaXRpYWxpemVyIgotICAgIFRJbnRlcm1B
Z2dyZWdhdGUgKnBhcnNlU2luZ2xlQXJyYXlJbml0RGVjbGFyYXRpb24oVFB1YmxpY1R5cGUgJnB1
YmxpY1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5n
ICZpZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5kZXhMb2NhdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAq
aW5kZXhFeHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5pdExvY2F0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVk
ICppbml0aWFsaXplcik7Ci0KLSAgICBUSW50ZXJtQWdncmVnYXRlICpwYXJzZUludmFyaWFudERl
Y2xhcmF0aW9uKGNvbnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRlciAmdHlwZVF1YWxpZmllckJ1aWxk
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAqaWRlbnRpZmllciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2wgKnN5
bWJvbCk7Ci0KLSAgICBUSW50ZXJtQWdncmVnYXRlICpwYXJzZURlY2xhcmF0b3IoVFB1YmxpY1R5
cGUgJnB1YmxpY1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJ
bnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZURlY2xhcmF0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlk
ZW50aWZpZXIpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcnNlQXJyYXlEZWNsYXJhdG9yKFRQ
dWJsaWNUeXBlICZwdWJsaWNUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZURlY2xhcmF0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlk
ZW50aWZpZXJMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmFycmF5TG9jYXRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbmRl
eEV4cHJlc3Npb24pOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcnNlSW5pdERlY2xhcmF0b3Io
Y29uc3QgVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGVEZWNsYXJhdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VM
b2MgJmlkZW50aWZpZXJMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbml0TG9jYXRpb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmlu
aXRpYWxpemVyKTsKKyAgICBUSW50ZXJtRGVjbGFyYXRpb24gKnBhcnNlU2luZ2xlQXJyYXlJbml0
RGVjbGFyYXRpb24oVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlk
ZW50aWZpZXJMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJj
ZUxvYyAmaW5kZXhMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbmRleEV4cHJlc3Npb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRTb3VyY2VMb2MgJmluaXRMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbml0aWFsaXplcik7CisK
KyAgICBUSW50ZXJtSW52YXJpYW50RGVjbGFyYXRpb24gKnBhcnNlSW52YXJpYW50RGVjbGFyYXRp
b24oCisgICAgICAgIGNvbnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRlciAmdHlwZVF1YWxpZmllckJ1
aWxkZXIsCisgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2MsCisgICAgICAg
IGNvbnN0IFRTdHJpbmcgKmlkZW50aWZpZXIsCisgICAgICAgIGNvbnN0IFRTeW1ib2wgKnN5bWJv
bCk7CisKKyAgICB2b2lkIHBhcnNlRGVjbGFyYXRvcihUUHVibGljVHlwZSAmcHVibGljVHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmaWRlbnRpZmll
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtRGVjbGFyYXRpb24gKmRlY2xhcmF0
aW9uT3V0KTsKKyAgICB2b2lkIHBhcnNlQXJyYXlEZWNsYXJhdG9yKFRQdWJsaWNUeXBlICZwdWJs
aWNUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAm
aWRlbnRpZmllckxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFN0cmluZyAmaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRTb3VyY2VMb2MgJmFycmF5TG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUSW50ZXJtVHlwZWQgKmluZGV4RXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJbnRlcm1EZWNsYXJhdGlvbiAqZGVjbGFyYXRpb25PdXQpOworICAgIHZvaWQgcGFy
c2VJbml0RGVjbGFyYXRvcihjb25zdCBUUHVibGljVHlwZSAmcHVibGljVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbml0TG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5pdGlh
bGl6ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1EZWNsYXJhdGlvbiAq
ZGVjbGFyYXRpb25PdXQpOwogCiAgICAgLy8gUGFyc2UgYSBkZWNsYXJhdG9yIGxpa2UgImFbbl0g
PSBpbml0aWFsaXplciIKLSAgICBUSW50ZXJtQWdncmVnYXRlICpwYXJzZUFycmF5SW5pdERlY2xh
cmF0b3IoY29uc3QgVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZURl
Y2xhcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
b3VyY2VMb2MgJmluZGV4TG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXhFeHByZXNzaW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZp
bml0TG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIpOworICAgIHZvaWQgcGFyc2VBcnJheUluaXRE
ZWNsYXJhdG9yKGNvbnN0IFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlm
aWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2Mg
JmluZGV4TG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVy
bVR5cGVkICppbmRleEV4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFNvdXJjZUxvYyAmaW5pdExvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVEludGVybURlY2xhcmF0aW9uICpkZWNsYXJhdGlvbk91dCk7CiAK
ICAgICB2b2lkIHBhcnNlR2xvYmFsTGF5b3V0UXVhbGlmaWVyKGNvbnN0IFRUeXBlUXVhbGlmaWVy
QnVpbGRlciAmdHlwZVF1YWxpZmllckJ1aWxkZXIpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFk
ZEZ1bmN0aW9uUHJvdG90eXBlRGVjbGFyYXRpb24oY29uc3QgVEZ1bmN0aW9uICZwYXJzZWRGdW5j
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uKTsKLSAgICBUSW50ZXJtRnVuY3Rpb25EZWZp
bml0aW9uICphZGRGdW5jdGlvbkRlZmluaXRpb24oY29uc3QgVEZ1bmN0aW9uICZmdW5jdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElu
dGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25QYXJhbWV0ZXJzLAorICAgIFRJbnRlcm1GdW5jdGlvblBy
b3RvdHlwZSAqYWRkRnVuY3Rpb25Qcm90b3R5cGVEZWNsYXJhdGlvbihjb25zdCBURnVuY3Rpb24g
JnBhcnNlZEZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbik7CisgICAg
VEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqYWRkRnVuY3Rpb25EZWZpbml0aW9uKFRJbnRlcm1G
dW5jdGlvblByb3RvdHlwZSAqZnVuY3Rpb25Qcm90b3R5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqZnVuY3Rpb25C
b2R5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbik7CiAgICAgdm9pZCBwYXJzZUZ1bmN0aW9uRGVm
aW5pdGlvbkhlYWRlcihjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRGdW5jdGlvbiAqKmZ1bmN0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqKmFnZ3JlZ2F0
ZU91dCk7Ci0gICAgVEZ1bmN0aW9uICpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRvcihjb25zdCBUU291
cmNlTG9jICZsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRGdW5jdGlvbiAqZnVuY3Rpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlICoqcHJvdG90eXBlT3V0KTsKKyAgICBURnVu
Y3Rpb24gKnBhcnNlRnVuY3Rpb25EZWNsYXJhdG9yKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9u
LCBURnVuY3Rpb24gKmZ1bmN0aW9uKTsKICAgICBURnVuY3Rpb24gKnBhcnNlRnVuY3Rpb25IZWFk
ZXIoY29uc3QgVFB1YmxpY1R5cGUgJnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRTdHJpbmcgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uKTsKICAgICBURnVuY3Rpb24gKmFkZENv
bnN0cnVjdG9yRnVuYyhjb25zdCBUUHVibGljVHlwZSAmcHVibGljVHlwZSk7Ci0gICAgVEludGVy
bVR5cGVkICphZGRDb25zdHJ1Y3RvcihUSW50ZXJtTm9kZSAqYXJndW1lbnRzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVE9wZXJhdG9yIG9wLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEZ1bmN0aW9uICpmbkNhbGwsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lKTsKIAogICAgIFRJbnRlcm1UeXBlZCAq
YWRkSW5kZXhFeHByZXNzaW9uKFRJbnRlcm1UeXBlZCAqYmFzZUV4cHJlc3Npb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyYgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAm
bG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5
cGVkICppbmRleEV4cHJlc3Npb24pOwotICAgIFRJbnRlcm1UeXBlZCogYWRkRmllbGRTZWxlY3Rp
b25FeHByZXNzaW9uKFRJbnRlcm1UeXBlZCAqYmFzZUV4cHJlc3Npb24sCisgICAgVEludGVybVR5
cGVkICphZGRGaWVsZFNlbGVjdGlvbkV4cHJlc3Npb24oVEludGVybVR5cGVkICpiYXNlRXhwcmVz
c2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUU291cmNlTG9jICZkb3RMb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZmaWVsZFN0cmluZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZmaWVs
ZExvY2F0aW9uKTsKIAorICAgIFRGaWVsZExpc3QgKmNvbWJpbmVTdHJ1Y3RGaWVsZExpc3RzKFRG
aWVsZExpc3QgKnByb2Nlc3NlZEZpZWxkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBURmllbGRMaXN0ICpuZXdseUFkZGVkRmllbGRzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9u
KTsKICAgICBURmllbGRMaXN0ICphZGRTdHJ1Y3REZWNsYXJhdG9yTGlzdFdpdGhRdWFsaWZpZXJz
KAogICAgICAgICBjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXIgJnR5cGVRdWFsaWZpZXJCdWls
ZGVyLAogICAgICAgICBUUHVibGljVHlwZSAqdHlwZVNwZWNpZmllciwKQEAgLTMwMiwxNCArMjY4
LDE0IEBAIGNsYXNzIFRQYXJzZUNvbnRleHQgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICpzdHJ1Y3ROYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRGaWVsZExpc3QgKmZp
ZWxkTGlzdCk7CiAKLSAgICBUSW50ZXJtQWdncmVnYXRlICphZGRJbnRlcmZhY2VCbG9jayhjb25z
dCBUVHlwZVF1YWxpZmllckJ1aWxkZXIgJnR5cGVRdWFsaWZpZXJCdWlsZGVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJm5hbWVMaW5l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcg
JmJsb2NrTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURmll
bGRMaXN0ICpmaWVsZExpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFN0cmluZyAqaW5zdGFuY2VOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmluc3RhbmNlTGluZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmFycmF5SW5kZXgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxv
YyAmYXJyYXlJbmRleExpbmUpOworICAgIFRJbnRlcm1EZWNsYXJhdGlvbiAqYWRkSW50ZXJmYWNl
QmxvY2soY29uc3QgVFR5cGVRdWFsaWZpZXJCdWlsZGVyICZ0eXBlUXVhbGlmaWVyQnVpbGRlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VM
b2MgJm5hbWVMaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFN0cmluZyAmYmxvY2tOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVEZpZWxkTGlzdCAqZmllbGRMaXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAqaW5zdGFuY2VOYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5z
dGFuY2VMaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElu
dGVybVR5cGVkICphcnJheUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmYXJyYXlJbmRleExpbmUpOwogCiAgICAgdm9pZCBw
YXJzZUxvY2FsU2l6ZShjb25zdCBUU3RyaW5nICZxdWFsaWZpZXJUeXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmcXVhbGlmaWVyVHlwZUxpbmUsCkBAIC0zMTgs
OCArMjg0LDEyIEBAIGNsYXNzIFRQYXJzZUNvbnRleHQgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZpbnRWYWx1ZVN0cmluZywK
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbmRleCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIHNoOjpXb3JrR3JvdXBTaXplICpsb2NhbFNpemUpOwotICAgIFRMYXlvdXRRdWFsaWZp
ZXIgcGFyc2VMYXlvdXRRdWFsaWZpZXIoCi0gICAgICAgIGNvbnN0IFRTdHJpbmcgJnF1YWxpZmll
clR5cGUsIGNvbnN0IFRTb3VyY2VMb2MgJnF1YWxpZmllclR5cGVMaW5lKTsKKyAgICB2b2lkIHBh
cnNlTnVtVmlld3MoaW50IGludFZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
U291cmNlTG9jICZpbnRWYWx1ZUxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZpbnRWYWx1ZVN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgaW50ICpu
dW1WaWV3cyk7CisgICAgVExheW91dFF1YWxpZmllciBwYXJzZUxheW91dFF1YWxpZmllcihjb25z
dCBUU3RyaW5nICZxdWFsaWZpZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmcXVhbGlmaWVyVHlwZUxpbmUpOwogICAgIFRM
YXlvdXRRdWFsaWZpZXIgcGFyc2VMYXlvdXRRdWFsaWZpZXIoY29uc3QgVFN0cmluZyAmcXVhbGlm
aWVyVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRTb3VyY2VMb2MgJnF1YWxpZmllclR5cGVMaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IGludFZhbHVlLApAQCAtMzQzLDEyICszMTMsMTggQEAgY2xh
c3MgVFBhcnNlQ29udGV4dCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgVEludGVybVR5cGVk
ICphZGRVbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQgKmNoaWxkLCBjb25zdCBU
U291cmNlTG9jICZsb2MpOwogICAgIFRJbnRlcm1UeXBlZCAqYWRkVW5hcnlNYXRoTFZhbHVlKFRP
cGVyYXRvciBvcCwgVEludGVybVR5cGVkICpjaGlsZCwgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsK
LSAgICBUSW50ZXJtVHlwZWQgKmFkZEJpbmFyeU1hdGgoCi0gICAgICAgIFRPcGVyYXRvciBvcCwg
VEludGVybVR5cGVkICpsZWZ0LCBUSW50ZXJtVHlwZWQgKnJpZ2h0LCBjb25zdCBUU291cmNlTG9j
ICZsb2MpOwotICAgIFRJbnRlcm1UeXBlZCAqYWRkQmluYXJ5TWF0aEJvb2xlYW5SZXN1bHQoCi0g
ICAgICAgIFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkICpsZWZ0LCBUSW50ZXJtVHlwZWQgKnJp
Z2h0LCBjb25zdCBUU291cmNlTG9jICZsb2MpOwotICAgIFRJbnRlcm1UeXBlZCAqYWRkQXNzaWdu
KAotICAgICAgICBUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqbGVmdCwgVEludGVybVR5cGVk
ICpyaWdodCwgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKKyAgICBUSW50ZXJtVHlwZWQgKmFkZEJp
bmFyeU1hdGgoVE9wZXJhdG9yIG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
SW50ZXJtVHlwZWQgKmxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRl
cm1UeXBlZCAqcmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
b3VyY2VMb2MgJmxvYyk7CisgICAgVEludGVybVR5cGVkICphZGRCaW5hcnlNYXRoQm9vbGVhblJl
c3VsdChUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUSW50ZXJtVHlwZWQgKmxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnJpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKKyAgICBU
SW50ZXJtVHlwZWQgKmFkZEFzc2lnbihUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEludGVybVR5cGVkICpsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRJbnRlcm1UeXBlZCAqcmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFNvdXJjZUxvYyAmbG9jKTsKIAogICAgIFRJbnRlcm1UeXBlZCAqYWRkQ29tbWEoVEludGVybVR5
cGVkICpsZWZ0LCBUSW50ZXJtVHlwZWQgKnJpZ2h0LCBjb25zdCBUU291cmNlTG9jICZsb2MpOwog
CkBAIC0zNTYsMTEgKzMzMiwxNyBAQCBjbGFzcyBUUGFyc2VDb250ZXh0IDogYW5nbGU6Ok5vbkNv
cHlhYmxlCiAgICAgVEludGVybUJyYW5jaCAqYWRkQnJhbmNoKFRPcGVyYXRvciBvcCwgVEludGVy
bVR5cGVkICpyZXR1cm5WYWx1ZSwgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKIAogICAgIHZvaWQg
Y2hlY2tUZXh0dXJlT2Zmc2V0Q29uc3QoVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25DYWxsKTsK
KyAgICB2b2lkIGNoZWNrSW1hZ2VNZW1vcnlBY2Nlc3NGb3JCdWlsdGluRnVuY3Rpb25zKFRJbnRl
cm1BZ2dyZWdhdGUgKmZ1bmN0aW9uQ2FsbCk7CisgICAgdm9pZCBjaGVja0ltYWdlTWVtb3J5QWNj
ZXNzRm9yVXNlckRlZmluZWRGdW5jdGlvbnMoY29uc3QgVEZ1bmN0aW9uICpmdW5jdGlvbkRlZmlu
aXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25DYWxsKTsKKyAgICBUSW50ZXJt
U2VxdWVuY2UgKmNyZWF0ZUVtcHR5QXJndW1lbnRzTGlzdCgpOworCisgICAgLy8gZm5DYWxsIGlz
IG9ubHkgc3RvcmluZyB0aGUgYnVpbHQtaW4gb3AsIGFuZCBmdW5jdGlvbiBuYW1lIG9yIGNvbnN0
cnVjdG9yIHR5cGUuIGFyZ3VtZW50cworICAgIC8vIGhhcyB0aGUgYXJndW1lbnRzLgogICAgIFRJ
bnRlcm1UeXBlZCAqYWRkRnVuY3Rpb25DYWxsT3JNZXRob2QoVEZ1bmN0aW9uICpmbkNhbGwsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqcGFy
YW1Ob2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVy
bVNlcXVlbmNlICphcmd1bWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUSW50ZXJtTm9kZSAqdGhpc05vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpmYXRhbEVycm9yKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvYyk7CiAK
ICAgICBUSW50ZXJtVHlwZWQgKmFkZFRlcm5hcnlTZWxlY3Rpb24oVEludGVybVR5cGVkICpjb25k
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnRy
dWVFeHByZXNzaW9uLApAQCAtMzcyLDE1ICszNTQsMTcgQEAgY2xhc3MgVFBhcnNlQ29udGV4dCA6
IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGU7ICAgLy8g
c3ltYm9sIHRhYmxlIHRoYXQgZ29lcyB3aXRoIHRoZSBsYW5ndWFnZSBjdXJyZW50bHkgYmVpbmcg
cGFyc2VkCiAKICAgcHJpdmF0ZToKLSAgICAvLyBSZXR1cm5zIGEgY2xhbXBlZCBpbmRleC4KKyAg
ICAvLyBSZXR1cm5zIGEgY2xhbXBlZCBpbmRleC4gSWYgaXQgcHJpbnRzIG91dCBhbiBlcnJvciBt
ZXNzYWdlLCB0aGUgdG9rZW4gaXMgIltdIi4KICAgICBpbnQgY2hlY2tJbmRleE91dE9mUmFuZ2Uo
Ym9vbCBvdXRPZlJhbmdlSW5kZXhJc0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYXJyYXlTaXpl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRva2VuKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKTsKIAotICAgIGJvb2wgZGVjbGFy
ZVZhcmlhYmxlKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZp
ZXIsIGNvbnN0IFRUeXBlICZ0eXBlLCBUVmFyaWFibGUgKip2YXJpYWJsZSk7CisgICAgYm9vbCBk
ZWNsYXJlVmFyaWFibGUoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRUeXBlICZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFRWYXJpYWJs
ZSAqKnZhcmlhYmxlKTsKIAogICAgIHZvaWQgY2hlY2tDYW5CZURlY2xhcmVkV2l0aG91dEluaXRp
YWxpemVyKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwKQEAgLTM5Miwz
MyArMzc2LDc3IEBAIGNsYXNzIFRQYXJzZUNvbnRleHQgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAg
ICAvLyBBc3N1bWVzIHRoYXQgbXVsdGlwbGljYXRpb24gb3AgaGFzIGFscmVhZHkgYmVlbiBzZXQg
YmFzZWQgb24gdGhlIHR5cGVzLgogICAgIGJvb2wgaXNNdWx0aXBsaWNhdGlvblR5cGVDb21iaW5h
dGlvblZhbGlkKFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUgJmxlZnQsIGNvbnN0IFRUeXBlICZy
aWdodCk7CiAKLSAgICBUSW50ZXJtVHlwZWQgKmFkZEJpbmFyeU1hdGhJbnRlcm5hbCgKLSAgICAg
ICAgVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQgKmxlZnQsIFRJbnRlcm1UeXBlZCAqcmlnaHQs
IGNvbnN0IFRTb3VyY2VMb2MgJmxvYyk7Ci0gICAgVEludGVybVR5cGVkICpjcmVhdGVBc3NpZ24o
Ci0gICAgICAgIFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkICpsZWZ0LCBUSW50ZXJtVHlwZWQg
KnJpZ2h0LCBjb25zdCBUU291cmNlTG9jICZsb2MpOwotICAgIC8vIFRoZSBmdW5jUmV0dXJuVHlw
ZSBwYXJhbWV0ZXIgaXMgZXhwZWN0ZWQgdG8gYmUgbm9uLW51bGwgd2hlbiB0aGUgb3BlcmF0aW9u
IGlzIGEgYnVpbHQtaW4gZnVuY3Rpb24uCi0gICAgLy8gSXQgaXMgZXhwZWN0ZWQgdG8gYmUgbnVs
bCBmb3Igb3RoZXIgdW5hcnkgb3BlcmF0b3JzLgotICAgIFRJbnRlcm1UeXBlZCAqY3JlYXRlVW5h
cnlNYXRoKAotICAgICAgICBUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqY2hpbGQsIGNvbnN0
IFRTb3VyY2VMb2MgJmxvYywgY29uc3QgVFR5cGUgKmZ1bmNSZXR1cm5UeXBlKTsKKyAgICB2b2lk
IGNoZWNrT3V0UGFyYW1ldGVySXNOb3RJbWFnZShjb25zdCBUU291cmNlTG9jICZsaW5lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlKTsK
KyAgICB2b2lkIGNoZWNrT3V0UGFyYW1ldGVySXNOb3RPcGFxdWVUeXBlKGNvbnN0IFRTb3VyY2VM
b2MgJmxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUXVh
bGlmaWVyIHF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRUeXBlICZ0eXBlKTsKKyAgICB2b2lkIGNoZWNrT3V0UGFyYW1ldGVySXNOb3RT
YW1wbGVyKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlKTsKKworICAgIHZvaWQgY2hlY2tJ
bnRlcm5hbEZvcm1hdElzTm90U3BlY2lmaWVkKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRMYXlvdXRJbWFnZUlu
dGVybmFsRm9ybWF0IGludGVybmFsRm9ybWF0KTsKKyAgICB2b2lkIGNoZWNrTWVtb3J5UXVhbGlm
aWVySXNOb3RTcGVjaWZpZWQoY29uc3QgVE1lbW9yeVF1YWxpZmllciAmbWVtb3J5UXVhbGlmaWVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291
cmNlTG9jICZsb2NhdGlvbik7CisgICAgdm9pZCBjaGVja0JpbmRpbmdJc1ZhbGlkKGNvbnN0IFRT
b3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbiwgY29uc3QgVFR5cGUgJnR5cGUpOworICAgIHZv
aWQgY2hlY2tCaW5kaW5nSXNOb3RTcGVjaWZpZWQoY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24s
IGludCBiaW5kaW5nKTsKKyAgICB2b2lkIGNoZWNrSW1hZ2VCaW5kaW5nSXNWYWxpZChjb25zdCBU
U291cmNlTG9jICZsb2NhdGlvbiwgaW50IGJpbmRpbmcsIGludCBhcnJheVNpemUpOworICAgIHZv
aWQgY2hlY2tTYW1wbGVyQmluZGluZ0lzVmFsaWQoY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24s
IGludCBiaW5kaW5nLCBpbnQgYXJyYXlTaXplKTsKKworICAgIHZvaWQgY2hlY2tVbmlmb3JtTG9j
YXRpb25JblJhbmdlKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBvYmplY3RMb2NhdGlvbkNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRMYXlvdXRRdWFsaWZpZXIgJmxheW91
dFF1YWxpZmllcik7CisKKyAgICB2b2lkIGNoZWNrWXV2SXNOb3RTcGVjaWZpZWQoY29uc3QgVFNv
dXJjZUxvYyAmbG9jYXRpb24sIGJvb2wgeXV2KTsKKworICAgIFRJbnRlcm1UeXBlZCAqYWRkQmlu
YXJ5TWF0aEludGVybmFsKFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmxlZnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpyaWdodCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2MpOworICAgIFRJbnRl
cm1CaW5hcnkgKmNyZWF0ZUFzc2lnbihUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEludGVybVR5cGVkICpyaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKKyAgICBUSW50ZXJtVHlwZWQgKmNyZWF0ZVVu
YXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqY2hpbGQsIGNvbnN0IFRTb3VyY2VM
b2MgJmxvYyk7CisKKyAgICBUSW50ZXJtVHlwZWQgKmFkZE1ldGhvZChURnVuY3Rpb24gKmZuQ2Fs
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKmFyZ3VtZW50
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqdGhpc05vZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKKyAgICBU
SW50ZXJtVHlwZWQgKmFkZENvbnN0cnVjdG9yKFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE9wZXJhdG9yIG9wLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpOworICAgIFRJbnRlcm1UeXBlZCAq
YWRkTm9uQ29uc3RydWN0b3JGdW5jdGlvbkNhbGwoVEZ1bmN0aW9uICpmbkNhbGwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2Ug
KmFyZ3VtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvYyk7CiAKICAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUg
Y2hlY2tzIHBhc3MKLSAgICBib29sIGJpbmFyeU9wQ29tbW9uQ2hlY2soCi0gICAgICAgIFRPcGVy
YXRvciBvcCwgVEludGVybVR5cGVkICpsZWZ0LCBUSW50ZXJtVHlwZWQgKnJpZ2h0LCBjb25zdCBU
U291cmNlTG9jICZsb2MpOworICAgIGJvb2wgYmluYXJ5T3BDb21tb25DaGVjayhUT3BlcmF0b3Ig
b3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqbGVmdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpyaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKKworICAgIFRJbnRl
cm1GdW5jdGlvblByb3RvdHlwZSAqY3JlYXRlUHJvdG90eXBlTm9kZUZyb21GdW5jdGlvbihjb25z
dCBURnVuY3Rpb24gJmZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpbnNlcnRQYXJhbWV0ZXJzVG9TeW1ib2xUYWJsZSk7CiAKICAgICAvLyBTZXQg
dG8gdHJ1ZSB3aGVuIHRoZSBsYXN0L2N1cnJlbnQgZGVjbGFyYXRvciBsaXN0IHdhcyBzdGFydGVk
IHdpdGggYW4gZW1wdHkgZGVjbGFyYXRpb24uCiAgICAgYm9vbCBtRGVmZXJyZWRTaW5nbGVEZWNs
YXJhdGlvbkVycm9yQ2hlY2s7CiAKLSAgICBzaDo6R0xlbnVtIG1TaGFkZXJUeXBlOyAgICAgICAg
ICAgICAgLy8gdmVydGV4IG9yIGZyYWdtZW50IGxhbmd1YWdlIChmdXR1cmU6IHBhY2sgb3IgdW5w
YWNrKQorICAgIHNoOjpHTGVudW0gbVNoYWRlclR5cGU7ICAgIC8vIHZlcnRleCBvciBmcmFnbWVu
dCBsYW5ndWFnZSAoZnV0dXJlOiBwYWNrIG9yIHVucGFjaykKICAgICBTaFNoYWRlclNwZWMgbVNo
YWRlclNwZWM7ICAvLyBUaGUgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlvbiBjb21waWxlciBjb25mb3Jt
cyB0byAtIEdMRVMyIG9yIFdlYkdMLgogICAgIFNoQ29tcGlsZU9wdGlvbnMgbUNvbXBpbGVPcHRp
b25zOyAgLy8gT3B0aW9ucyBwYXNzZWQgdG8gVENvbXBpbGVyCiAgICAgaW50IG1TaGFkZXJWZXJz
aW9uOwotICAgIFRJbnRlcm1CbG9jayAqbVRyZWVSb290OyAgICAgLy8gcm9vdCBvZiBwYXJzZSB0
cmVlIGJlaW5nIGNyZWF0ZWQKLSAgICBpbnQgbUxvb3BOZXN0aW5nTGV2ZWw7ICAgICAgIC8vIDAg
aWYgb3V0c2lkZSBhbGwgbG9vcHMKLSAgICBpbnQgbVN0cnVjdE5lc3RpbmdMZXZlbDsgICAgIC8v
IGluY3JlbWVudGVkIHdoaWxlIHBhcnNpbmcgYSBzdHJ1Y3QgZGVjbGFyYXRpb24KLSAgICBpbnQg
bVN3aXRjaE5lc3RpbmdMZXZlbDsgICAgIC8vIDAgaWYgb3V0c2lkZSBhbGwgc3dpdGNoIHN0YXRl
bWVudHMKKyAgICBUSW50ZXJtQmxvY2sgKm1UcmVlUm9vdDsgIC8vIHJvb3Qgb2YgcGFyc2UgdHJl
ZSBiZWluZyBjcmVhdGVkCisgICAgaW50IG1Mb29wTmVzdGluZ0xldmVsOyAgICAvLyAwIGlmIG91
dHNpZGUgYWxsIGxvb3BzCisgICAgaW50IG1TdHJ1Y3ROZXN0aW5nTGV2ZWw7ICAvLyBpbmNyZW1l
bnRlZCB3aGlsZSBwYXJzaW5nIGEgc3RydWN0IGRlY2xhcmF0aW9uCisgICAgaW50IG1Td2l0Y2hO
ZXN0aW5nTGV2ZWw7ICAvLyAwIGlmIG91dHNpZGUgYWxsIHN3aXRjaCBzdGF0ZW1lbnRzCiAgICAg
Y29uc3QgVFR5cGUKLSAgICAgICAgKm1DdXJyZW50RnVuY3Rpb25UeXBlOyAgIC8vIHRoZSByZXR1
cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24gdGhhdCdzIGN1cnJlbnRseSBiZWluZyBwYXJzZWQKLSAg
ICBib29sIG1GdW5jdGlvblJldHVybnNWYWx1ZTsgIC8vIHRydWUgaWYgYSBub24tdm9pZCBmdW5j
dGlvbiBoYXMgYSByZXR1cm4KKyAgICAgICAgKm1DdXJyZW50RnVuY3Rpb25UeXBlOyAgICAvLyB0
aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQncyBjdXJyZW50bHkgYmVpbmcgcGFy
c2VkCisgICAgYm9vbCBtRnVuY3Rpb25SZXR1cm5zVmFsdWU7ICAgLy8gdHJ1ZSBpZiBhIG5vbi12
b2lkIGZ1bmN0aW9uIGhhcyBhIHJldHVybgogICAgIGJvb2wgbUNoZWNrc1ByZWNpc2lvbkVycm9y
czsgIC8vIHRydWUgaWYgYW4gZXJyb3Igd2lsbCBiZSBnZW5lcmF0ZWQgd2hlbiBhIHZhcmlhYmxl
IGlzIGRlY2xhcmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2l0aG91
dCBwcmVjaXNpb24sIGV4cGxpY2l0IG9yIGltcGxpY2l0LgogICAgIGJvb2wgbUZyYWdtZW50UHJl
Y2lzaW9uSGlnaE9uRVNTTDE7ICAvLyB0cnVlIGlmIGhpZ2hwIHByZWNpc2lvbiBpcyBzdXBwb3J0
ZWQgd2hlbiBjb21waWxpbmcKQEAgLTQyNiwyNSArNDU0LDM3IEBAIGNsYXNzIFRQYXJzZUNvbnRl
eHQgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBUTGF5b3V0TWF0cml4UGFja2luZyBtRGVmYXVs
dE1hdHJpeFBhY2tpbmc7CiAgICAgVExheW91dEJsb2NrU3RvcmFnZSBtRGVmYXVsdEJsb2NrU3Rv
cmFnZTsKICAgICBUU3RyaW5nIG1IYXNoRXJyTXNnOwotICAgIFREaWFnbm9zdGljcyBtRGlhZ25v
c3RpY3M7CisgICAgVERpYWdub3N0aWNzICptRGlhZ25vc3RpY3M7CiAgICAgVERpcmVjdGl2ZUhh
bmRsZXIgbURpcmVjdGl2ZUhhbmRsZXI7CiAgICAgcHA6OlByZXByb2Nlc3NvciBtUHJlcHJvY2Vz
c29yOwogICAgIHZvaWQgKm1TY2FubmVyOwotICAgIGJvb2wgbVVzZXNGcmFnRGF0YTsgLy8gdHJh
Y2sgaWYgd2UgYXJlIHVzaW5nIGJvdGggZ2xfRnJhZ0RhdGEgYW5kIGdsX0ZyYWdDb2xvcgorICAg
IGJvb2wgbVVzZXNGcmFnRGF0YTsgIC8vIHRyYWNrIGlmIHdlIGFyZSB1c2luZyBib3RoIGdsX0Zy
YWdEYXRhIGFuZCBnbF9GcmFnQ29sb3IKICAgICBib29sIG1Vc2VzRnJhZ0NvbG9yOwogICAgIGJv
b2wgbVVzZXNTZWNvbmRhcnlPdXRwdXRzOyAgLy8gVHJhY2sgaWYgd2UgYXJlIHVzaW5nIGVpdGhl
ciBnbF9TZWNvbmRhcnlGcmFnRGF0YSBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZ2xfU2Vjb25kYXJ5IEZyYWdDb2xvciBvciBib3RoLgogICAgIGludCBtTWluUHJvZ3Jh
bVRleGVsT2Zmc2V0OwogICAgIGludCBtTWF4UHJvZ3JhbVRleGVsT2Zmc2V0OwogCisgICAgYm9v
bCBtTXVsdGl2aWV3QXZhaWxhYmxlOworCiAgICAgLy8ga2VlcCB0cmFjayBvZiBsb2NhbCBncm91
cCBzaXplIGRlY2xhcmVkIGluIGxheW91dC4gSXQgc2hvdWxkIGJlIGRlY2xhcmVkIG9ubHkgb25j
ZS4KICAgICBib29sIG1Db21wdXRlU2hhZGVyTG9jYWxTaXplRGVjbGFyZWQ7CiAgICAgc2g6Oldv
cmtHcm91cFNpemUgbUNvbXB1dGVTaGFkZXJMb2NhbFNpemU7CisgICAgLy8ga2VlcCB0cmFjayBv
ZiBudW1iZXIgb2Ygdmlld3MgZGVjbGFyZWQgaW4gbGF5b3V0LgorICAgIGludCBtTnVtVmlld3M7
CisgICAgaW50IG1NYXhOdW1WaWV3czsKKyAgICBpbnQgbU1heEltYWdlVW5pdHM7CisgICAgaW50
IG1NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzOworICAgIGludCBtTWF4VW5pZm9ybUxvY2F0
aW9uczsKICAgICAvLyBrZWVwcyB0cmFjayB3aGV0aGVyIHdlIGFyZSBkZWNsYXJpbmcgLyBkZWZp
bmluZyBhIGZ1bmN0aW9uCiAgICAgYm9vbCBtRGVjbGFyaW5nRnVuY3Rpb247CiB9OwogCi1pbnQg
UGFQYXJzZVN0cmluZ3MoCi0gICAgc2l6ZV90IGNvdW50LCBjb25zdCBjaGFyICpjb25zdCBzdHJp
bmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLCBUUGFyc2VDb250ZXh0ICpjb250ZXh0KTsKK2ludCBQ
YVBhcnNlU3RyaW5ncyhzaXplX3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqY29uc3Qgc3RyaW5nW10sCisgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGxlbmd0aFtd
LAorICAgICAgICAgICAgICAgICAgIFRQYXJzZUNvbnRleHQgKmNvbnRleHQpOworCit9ICAvLyBu
YW1lc3BhY2Ugc2gKIAotI2VuZGlmIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUEFSU0VDT05URVhU
X0hfCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUEFSU0VDT05URVhUX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Q
b29sQWxsb2MuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvUG9vbEFsbG9jLmNwcAppbmRleCAzYjQ0YWZlMzM1ODgyZjY3NDc0MDA1ZDAzNTM4ZTAw
MjQ5NDZlNjgzLi4wZjFjZDhiNWM5ZDBjNWM1NzY5MzM2ZTFjMDhjNTA0Nzc5NzcyMDlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Q
b29sQWxsb2MuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1Bvb2xBbGxvYy5jcHAKQEAgLTM0LDEzICszNCwxMyBAQCB2b2lkIEZyZWVQb29s
SW5kZXgoKQogICAgIFBvb2xJbmRleCA9IFRMU19JTlZBTElEX0lOREVYOwogfQogCi1UUG9vbEFs
bG9jYXRvciogR2V0R2xvYmFsUG9vbEFsbG9jYXRvcigpCitUUG9vbEFsbG9jYXRvciAqR2V0R2xv
YmFsUG9vbEFsbG9jYXRvcigpCiB7CiAgICAgYXNzZXJ0KFBvb2xJbmRleCAhPSBUTFNfSU5WQUxJ
RF9JTkRFWCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFRQb29sQWxsb2NhdG9yKj4oR2V0VExT
VmFsdWUoUG9vbEluZGV4KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRQb29sQWxsb2NhdG9y
ICo+KEdldFRMU1ZhbHVlKFBvb2xJbmRleCkpOwogfQogCi12b2lkIFNldEdsb2JhbFBvb2xBbGxv
Y2F0b3IoVFBvb2xBbGxvY2F0b3IqIHBvb2xBbGxvY2F0b3IpCit2b2lkIFNldEdsb2JhbFBvb2xB
bGxvY2F0b3IoVFBvb2xBbGxvY2F0b3IgKnBvb2xBbGxvY2F0b3IpCiB7CiAgICAgYXNzZXJ0KFBv
b2xJbmRleCAhPSBUTFNfSU5WQUxJRF9JTkRFWCk7CiAgICAgU2V0VExTVmFsdWUoUG9vbEluZGV4
LCBwb29sQWxsb2NhdG9yKTsKQEAgLTY1LDE0ICs2NSwxNCBAQCBUUG9vbEFsbG9jYXRvcjo6VFBv
b2xBbGxvY2F0b3IoaW50IGdyb3d0aEluY3JlbWVudCwgaW50IGFsbG9jYXRpb25BbGlnbm1lbnQp
CiAgICAgLy8gQWRqdXN0IGFsaWdubWVudCB0byBiZSBhdCBsZWFzdCBwb2ludGVyIGFsaWduZWQg
YW5kCiAgICAgLy8gcG93ZXIgb2YgMi4KICAgICAvLwotICAgIHNpemVfdCBtaW5BbGlnbiA9IHNp
emVvZih2b2lkKik7CisgICAgc2l6ZV90IG1pbkFsaWduID0gc2l6ZW9mKHZvaWQgKik7CiAgICAg
YWxpZ25tZW50ICY9IH4obWluQWxpZ24gLSAxKTsKICAgICBpZiAoYWxpZ25tZW50IDwgbWluQWxp
Z24pCiAgICAgICAgIGFsaWdubWVudCA9IG1pbkFsaWduOwotICAgIHNpemVfdCBhID0gMTsKKyAg
ICBzaXplX3QgYSAgICAgID0gMTsKICAgICB3aGlsZSAoYSA8IGFsaWdubWVudCkKICAgICAgICAg
YSA8PD0gMTsKLSAgICBhbGlnbm1lbnQgPSBhOworICAgIGFsaWdubWVudCAgICAgPSBhOwogICAg
IGFsaWdubWVudE1hc2sgPSBhIC0gMTsKIAogI2lmICFkZWZpbmVkKEFOR0xFX1RSQU5TTEFUT1Jf
RElTQUJMRV9QT09MX0FMTE9DKQpAQCAtOTMsNyArOTMsOCBAQCBUUG9vbEFsbG9jYXRvcjo6VFBv
b2xBbGxvY2F0b3IoaW50IGdyb3d0aEluY3JlbWVudCwgaW50IGFsbG9jYXRpb25BbGlnbm1lbnQp
CiAgICAgLy8gQWxpZ24gaGVhZGVyIHNraXAKICAgICAvLwogICAgIGhlYWRlclNraXAgPSBtaW5B
bGlnbjsKLSAgICBpZiAoaGVhZGVyU2tpcCA8IHNpemVvZih0SGVhZGVyKSkgeworICAgIGlmICho
ZWFkZXJTa2lwIDwgc2l6ZW9mKHRIZWFkZXIpKQorICAgIHsKICAgICAgICAgaGVhZGVyU2tpcCA9
IChzaXplb2YodEhlYWRlcikgKyBhbGlnbm1lbnRNYXNrKSAmIH5hbGlnbm1lbnRNYXNrOwogICAg
IH0KICNlbHNlICAvLyAhZGVmaW5lZChBTkdMRV9UUkFOU0xBVE9SX0RJU0FCTEVfUE9PTF9BTExP
QykKQEAgLTEwNCwxMCArMTA1LDExIEBAIFRQb29sQWxsb2NhdG9yOjpUUG9vbEFsbG9jYXRvcihp
bnQgZ3Jvd3RoSW5jcmVtZW50LCBpbnQgYWxsb2NhdGlvbkFsaWdubWVudCkKIFRQb29sQWxsb2Nh
dG9yOjp+VFBvb2xBbGxvY2F0b3IoKQogewogI2lmICFkZWZpbmVkKEFOR0xFX1RSQU5TTEFUT1Jf
RElTQUJMRV9QT09MX0FMTE9DKQotICAgIHdoaWxlIChpblVzZUxpc3QpIHsKLSAgICAgICAgdEhl
YWRlciogbmV4dCA9IGluVXNlTGlzdC0+bmV4dFBhZ2U7CisgICAgd2hpbGUgKGluVXNlTGlzdCkK
KyAgICB7CisgICAgICAgIHRIZWFkZXIgKm5leHQgPSBpblVzZUxpc3QtPm5leHRQYWdlOwogICAg
ICAgICBpblVzZUxpc3QtPn50SGVhZGVyKCk7Ci0gICAgICAgIGRlbGV0ZSBbXSByZWludGVycHJl
dF9jYXN0PGNoYXIqPihpblVzZUxpc3QpOworICAgICAgICBkZWxldGVbXSByZWludGVycHJldF9j
YXN0PGNoYXIgKj4oaW5Vc2VMaXN0KTsKICAgICAgICAgaW5Vc2VMaXN0ID0gbmV4dDsKICAgICB9
CiAKQEAgLTExNSw5ICsxMTcsMTAgQEAgVFBvb2xBbGxvY2F0b3I6On5UUG9vbEFsbG9jYXRvcigp
CiAgICAgLy8gaGVyZSwgYmVjYXVzZSB3ZSBkaWQgaXQgYWxyZWFkeSB3aGVuIHRoZSBibG9jayB3
YXMKICAgICAvLyBwbGFjZWQgaW50byB0aGUgZnJlZSBsaXN0LgogICAgIC8vCi0gICAgd2hpbGUg
KGZyZWVMaXN0KSB7Ci0gICAgICAgIHRIZWFkZXIqIG5leHQgPSBmcmVlTGlzdC0+bmV4dFBhZ2U7
Ci0gICAgICAgIGRlbGV0ZSBbXSByZWludGVycHJldF9jYXN0PGNoYXIqPihmcmVlTGlzdCk7Cisg
ICAgd2hpbGUgKGZyZWVMaXN0KQorICAgIHsKKyAgICAgICAgdEhlYWRlciAqbmV4dCA9IGZyZWVM
aXN0LT5uZXh0UGFnZTsKKyAgICAgICAgZGVsZXRlW10gcmVpbnRlcnByZXRfY2FzdDxjaGFyICo+
KGZyZWVMaXN0KTsKICAgICAgICAgZnJlZUxpc3QgPSBuZXh0OwogICAgIH0KICNlbHNlICAvLyAh
ZGVmaW5lZChBTkdMRV9UUkFOU0xBVE9SX0RJU0FCTEVfUE9PTF9BTExPQykKQEAgLTEzOCwyOCAr
MTQxLDMyIEBAIGNvbnN0IHVuc2lnbmVkIGNoYXIgVEFsbG9jYXRpb246Omd1YXJkQmxvY2tFbmRW
YWwgICA9IDB4ZmU7CiBjb25zdCB1bnNpZ25lZCBjaGFyIFRBbGxvY2F0aW9uOjp1c2VyRGF0YUZp
bGwgICAgICAgPSAweGNkOwogCiAjaWZkZWYgR1VBUkRfQkxPQ0tTCi0gICAgY29uc3Qgc2l6ZV90
IFRBbGxvY2F0aW9uOjpndWFyZEJsb2NrU2l6ZSA9IDE2OworY29uc3Qgc2l6ZV90IFRBbGxvY2F0
aW9uOjpndWFyZEJsb2NrU2l6ZSA9IDE2OwogI2Vsc2UKLSAgICBjb25zdCBzaXplX3QgVEFsbG9j
YXRpb246Omd1YXJkQmxvY2tTaXplID0gMDsKK2NvbnN0IHNpemVfdCBUQWxsb2NhdGlvbjo6Z3Vh
cmRCbG9ja1NpemUgPSAwOwogI2VuZGlmCiAKIC8vCiAvLyBDaGVjayBhIHNpbmdsZSBndWFyZCBi
bG9jayBmb3IgZGFtYWdlCiAvLwotdm9pZCBUQWxsb2NhdGlvbjo6Y2hlY2tHdWFyZEJsb2NrKHVu
c2lnbmVkIGNoYXIqIGJsb2NrTWVtLCB1bnNpZ25lZCBjaGFyIHZhbCwgY29uc3QgY2hhciogbG9j
VGV4dCkgY29uc3QKK3ZvaWQgVEFsbG9jYXRpb246OmNoZWNrR3VhcmRCbG9jayh1bnNpZ25lZCBj
aGFyICpibG9ja01lbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjaGFyIHZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICpsb2NUZXh0KSBjb25zdAogewogI2lmZGVmIEdVQVJEX0JMT0NLUwotICAgIGZvciAoc2l6ZV90
IHggPSAwOyB4IDwgZ3VhcmRCbG9ja1NpemU7IHgrKykgewotICAgICAgICBpZiAoYmxvY2tNZW1b
eF0gIT0gdmFsKSB7CisgICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCBndWFyZEJsb2NrU2l6ZTsg
eCsrKQorICAgIHsKKyAgICAgICAgaWYgKGJsb2NrTWVtW3hdICE9IHZhbCkKKyAgICAgICAgewog
ICAgICAgICAgICAgY2hhciBhc3NlcnRNc2dbODBdOwogCi0gICAgICAgICAgICAvLyBXZSBkb24n
dCBwcmludCB0aGUgYXNzZXJ0IG1lc3NhZ2UuICBJdCdzIGhlcmUganVzdCB0byBiZSBoZWxwZnVs
LgorLy8gV2UgZG9uJ3QgcHJpbnQgdGhlIGFzc2VydCBtZXNzYWdlLiAgSXQncyBoZXJlIGp1c3Qg
dG8gYmUgaGVscGZ1bC4KICNpZiBkZWZpbmVkKF9NU0NfVkVSKQotICAgICAgICAgICAgc25wcmlu
dGYoYXNzZXJ0TXNnLCBzaXplb2YoYXNzZXJ0TXNnKSwgIlBvb2xBbGxvYzogRGFtYWdlICVzICVJ
dSBieXRlIGFsbG9jYXRpb24gYXQgMHglcFxuIiwKLSAgICAgICAgICAgICAgICAgICAgbG9jVGV4
dCwgc2l6ZSwgZGF0YSgpKTsKKyAgICAgICAgICAgIHNucHJpbnRmKGFzc2VydE1zZywgc2l6ZW9m
KGFzc2VydE1zZyksCisgICAgICAgICAgICAgICAgICAgICAiUG9vbEFsbG9jOiBEYW1hZ2UgJXMg
JUl1IGJ5dGUgYWxsb2NhdGlvbiBhdCAweCVwXG4iLCBsb2NUZXh0LCBzaXplLCBkYXRhKCkpOwog
I2Vsc2UKLSAgICAgICAgICAgIHNucHJpbnRmKGFzc2VydE1zZywgc2l6ZW9mKGFzc2VydE1zZyks
ICJQb29sQWxsb2M6IERhbWFnZSAlcyAlenUgYnl0ZSBhbGxvY2F0aW9uIGF0IDB4JXBcbiIsCi0g
ICAgICAgICAgICAgICAgICAgIGxvY1RleHQsIHNpemUsIGRhdGEoKSk7CisgICAgICAgICAgICBz
bnByaW50Zihhc3NlcnRNc2csIHNpemVvZihhc3NlcnRNc2cpLAorICAgICAgICAgICAgICAgICAg
ICAgIlBvb2xBbGxvYzogRGFtYWdlICVzICV6dSBieXRlIGFsbG9jYXRpb24gYXQgMHglcFxuIiwg
bG9jVGV4dCwgc2l6ZSwgZGF0YSgpKTsKICNlbmRpZgogICAgICAgICAgICAgYXNzZXJ0KDAgJiYg
IlBvb2xBbGxvYzogRGFtYWdlIGluIGd1YXJkIGJsb2NrIik7CiAgICAgICAgIH0KQEAgLTE2Nywx
MSArMTc0LDEwIEBAIHZvaWQgVEFsbG9jYXRpb246OmNoZWNrR3VhcmRCbG9jayh1bnNpZ25lZCBj
aGFyKiBibG9ja01lbSwgdW5zaWduZWQgY2hhciB2YWwsIGNvCiAjZW5kaWYKIH0KIAotCiB2b2lk
IFRQb29sQWxsb2NhdG9yOjpwdXNoKCkKIHsKICNpZiAhZGVmaW5lZChBTkdMRV9UUkFOU0xBVE9S
X0RJU0FCTEVfUE9PTF9BTExPQykKLSAgICB0QWxsb2NTdGF0ZSBzdGF0ZSA9IHsgY3VycmVudFBh
Z2VPZmZzZXQsIGluVXNlTGlzdCB9OworICAgIHRBbGxvY1N0YXRlIHN0YXRlID0ge2N1cnJlbnRQ
YWdlT2Zmc2V0LCBpblVzZUxpc3R9OwogCiAgICAgbVN0YWNrLnB1c2hfYmFjayhzdGF0ZSk7CiAK
QEAgLTIwMCwxNiArMjA2LDE4IEBAIHZvaWQgVFBvb2xBbGxvY2F0b3I6OnBvcCgpCiAgICAgdEhl
YWRlciAqcGFnZSAgICAgPSBtU3RhY2suYmFjaygpLnBhZ2U7CiAgICAgY3VycmVudFBhZ2VPZmZz
ZXQgPSBtU3RhY2suYmFjaygpLm9mZnNldDsKIAotICAgIHdoaWxlIChpblVzZUxpc3QgIT0gcGFn
ZSkgeworICAgIHdoaWxlIChpblVzZUxpc3QgIT0gcGFnZSkKKyAgICB7CiAgICAgICAgIC8vIGlu
dm9rZSBkZXN0cnVjdG9yIHRvIGZyZWUgYWxsb2NhdGlvbiBsaXN0CiAgICAgICAgIGluVXNlTGlz
dC0+fnRIZWFkZXIoKTsKLSAgICAgICAgCi0gICAgICAgIHRIZWFkZXIqIG5leHRJblVzZSA9IGlu
VXNlTGlzdC0+bmV4dFBhZ2U7CisKKyAgICAgICAgdEhlYWRlciAqbmV4dEluVXNlID0gaW5Vc2VM
aXN0LT5uZXh0UGFnZTsKICAgICAgICAgaWYgKGluVXNlTGlzdC0+cGFnZUNvdW50ID4gMSkKLSAg
ICAgICAgICAgIGRlbGV0ZSBbXSByZWludGVycHJldF9jYXN0PGNoYXIqPihpblVzZUxpc3QpOwot
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGRlbGV0ZVtdIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
ciAqPihpblVzZUxpc3QpOworICAgICAgICBlbHNlCisgICAgICAgIHsKICAgICAgICAgICAgIGlu
VXNlTGlzdC0+bmV4dFBhZ2UgPSBmcmVlTGlzdDsKLSAgICAgICAgICAgIGZyZWVMaXN0ID0gaW5V
c2VMaXN0OworICAgICAgICAgICAgZnJlZUxpc3QgICAgICAgICAgICA9IGluVXNlTGlzdDsKICAg
ICAgICAgfQogICAgICAgICBpblVzZUxpc3QgPSBuZXh0SW5Vc2U7CiAgICAgfQpAQCAtMjM0LDcg
KzI0Miw3IEBAIHZvaWQgVFBvb2xBbGxvY2F0b3I6OnBvcEFsbCgpCiAgICAgICAgIHBvcCgpOwog
fQogCi12b2lkKiBUUG9vbEFsbG9jYXRvcjo6YWxsb2NhdGUoc2l6ZV90IG51bUJ5dGVzKQordm9p
ZCAqVFBvb2xBbGxvY2F0b3I6OmFsbG9jYXRlKHNpemVfdCBudW1CeXRlcykKIHsKICAgICBBU1NF
UlQoIW1Mb2NrZWQpOwogCkBAIC0yNTksMTggKzI2NywyMCBAQCB2b2lkKiBUUG9vbEFsbG9jYXRv
cjo6YWxsb2NhdGUoc2l6ZV90IG51bUJ5dGVzKQogICAgIC8vIERvIHRoZSBhbGxvY2F0aW9uLCBt
b3N0IGxpa2VseSBjYXNlIGZpcnN0LCBmb3IgZWZmaWNpZW5jeS4KICAgICAvLyBUaGlzIHN0ZXAg
Y291bGQgYmUgbW92ZWQgdG8gYmUgaW5saW5lIHNvbWV0aW1lLgogICAgIC8vCi0gICAgaWYgKGFs
bG9jYXRpb25TaXplIDw9IHBhZ2VTaXplIC0gY3VycmVudFBhZ2VPZmZzZXQpIHsKKyAgICBpZiAo
YWxsb2NhdGlvblNpemUgPD0gcGFnZVNpemUgLSBjdXJyZW50UGFnZU9mZnNldCkKKyAgICB7CiAg
ICAgICAgIC8vCiAgICAgICAgIC8vIFNhZmUgdG8gYWxsb2NhdGUgZnJvbSBjdXJyZW50UGFnZU9m
ZnNldC4KICAgICAgICAgLy8KLSAgICAgICAgdW5zaWduZWQgY2hhciogbWVtb3J5ID0gcmVpbnRl
cnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyICo+KGluVXNlTGlzdCkgKyBjdXJyZW50UGFnZU9mZnNl
dDsKKyAgICAgICAgdW5zaWduZWQgY2hhciAqbWVtb3J5ID0gcmVpbnRlcnByZXRfY2FzdDx1bnNp
Z25lZCBjaGFyICo+KGluVXNlTGlzdCkgKyBjdXJyZW50UGFnZU9mZnNldDsKICAgICAgICAgY3Vy
cmVudFBhZ2VPZmZzZXQgKz0gYWxsb2NhdGlvblNpemU7CiAgICAgICAgIGN1cnJlbnRQYWdlT2Zm
c2V0ID0gKGN1cnJlbnRQYWdlT2Zmc2V0ICsgYWxpZ25tZW50TWFzaykgJiB+YWxpZ25tZW50TWFz
azsKIAogICAgICAgICByZXR1cm4gaW5pdGlhbGl6ZUFsbG9jYXRpb24oaW5Vc2VMaXN0LCBtZW1v
cnksIG51bUJ5dGVzKTsKICAgICB9CiAKLSAgICBpZiAoYWxsb2NhdGlvblNpemUgPiBwYWdlU2l6
ZSAtIGhlYWRlclNraXApIHsKKyAgICBpZiAoYWxsb2NhdGlvblNpemUgPiBwYWdlU2l6ZSAtIGhl
YWRlclNraXApCisgICAgewogICAgICAgICAvLwogICAgICAgICAvLyBEbyBhIG11bHRpLXBhZ2Ug
YWxsb2NhdGlvbi4gIERvbid0IG1peCB0aGVzZSB3aXRoIHRoZSBvdGhlcnMuCiAgICAgICAgIC8v
IFRoZSBPUyBpcyBlZmZpY2llbnQgYW5kIGFsbG9jYXRpbmcgYW5kIGZyZWUtaW5nIG11bHRpcGxl
IHBhZ2VzLgpAQCAtMjgwLDM5ICsyOTAsNDIgQEAgdm9pZCogVFBvb2xBbGxvY2F0b3I6OmFsbG9j
YXRlKHNpemVfdCBudW1CeXRlcykKICAgICAgICAgaWYgKG51bUJ5dGVzVG9BbGxvYyA8IGFsbG9j
YXRpb25TaXplKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICAgICAgdEhlYWRlciogbWVt
b3J5ID0gcmVpbnRlcnByZXRfY2FzdDx0SGVhZGVyKj4oOjpuZXcgY2hhcltudW1CeXRlc1RvQWxs
b2NdKTsKKyAgICAgICAgdEhlYWRlciAqbWVtb3J5ID0gcmVpbnRlcnByZXRfY2FzdDx0SGVhZGVy
ICo+KDo6bmV3IGNoYXJbbnVtQnl0ZXNUb0FsbG9jXSk7CiAgICAgICAgIGlmIChtZW1vcnkgPT0g
MCkKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIC8vIFVzZSBwbGFjZW1lbnQtbmV3
IHRvIGluaXRpYWxpemUgaGVhZGVyCi0gICAgICAgIG5ldyhtZW1vcnkpIHRIZWFkZXIoaW5Vc2VM
aXN0LCAobnVtQnl0ZXNUb0FsbG9jICsgcGFnZVNpemUgLSAxKSAvIHBhZ2VTaXplKTsKKyAgICAg
ICAgbmV3IChtZW1vcnkpIHRIZWFkZXIoaW5Vc2VMaXN0LCAobnVtQnl0ZXNUb0FsbG9jICsgcGFn
ZVNpemUgLSAxKSAvIHBhZ2VTaXplKTsKICAgICAgICAgaW5Vc2VMaXN0ID0gbWVtb3J5OwogCiAg
ICAgICAgIGN1cnJlbnRQYWdlT2Zmc2V0ID0gcGFnZVNpemU7ICAvLyBtYWtlIG5leHQgYWxsb2Nh
dGlvbiBjb21lIGZyb20gYSBuZXcgcGFnZQogCiAgICAgICAgIC8vIE5vIGd1YXJkIGJsb2NrcyBm
b3IgbXVsdGktcGFnZSBhbGxvY2F0aW9ucyAoeWV0KQotICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KG1lbW9yeSkgKyBoZWFk
ZXJTa2lwKTsKKyAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPihyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4obWVtb3J5KSArIGhlYWRlclNraXApOwogICAgIH0KIAogICAg
IC8vCiAgICAgLy8gTmVlZCBhIHNpbXBsZSBwYWdlIHRvIGFsbG9jYXRlIGZyb20uCiAgICAgLy8K
LSAgICB0SGVhZGVyKiBtZW1vcnk7Ci0gICAgaWYgKGZyZWVMaXN0KSB7Ci0gICAgICAgIG1lbW9y
eSA9IGZyZWVMaXN0OworICAgIHRIZWFkZXIgKm1lbW9yeTsKKyAgICBpZiAoZnJlZUxpc3QpCisg
ICAgeworICAgICAgICBtZW1vcnkgICA9IGZyZWVMaXN0OwogICAgICAgICBmcmVlTGlzdCA9IGZy
ZWVMaXN0LT5uZXh0UGFnZTsKLSAgICB9IGVsc2UgewotICAgICAgICBtZW1vcnkgPSByZWludGVy
cHJldF9jYXN0PHRIZWFkZXIqPig6Om5ldyBjaGFyW3BhZ2VTaXplXSk7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIG1lbW9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dEhlYWRlciAqPig6
Om5ldyBjaGFyW3BhZ2VTaXplXSk7CiAgICAgICAgIGlmIChtZW1vcnkgPT0gMCkKICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIC8vIFVzZSBwbGFjZW1lbnQtbmV3IHRvIGluaXRp
YWxpemUgaGVhZGVyCi0gICAgbmV3KG1lbW9yeSkgdEhlYWRlcihpblVzZUxpc3QsIDEpOworICAg
IG5ldyAobWVtb3J5KSB0SGVhZGVyKGluVXNlTGlzdCwgMSk7CiAgICAgaW5Vc2VMaXN0ID0gbWVt
b3J5OwotICAgIAotICAgIHVuc2lnbmVkIGNoYXIqIHJldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5z
aWduZWQgY2hhciAqPihpblVzZUxpc3QpICsgaGVhZGVyU2tpcDsKLSAgICBjdXJyZW50UGFnZU9m
ZnNldCA9IChoZWFkZXJTa2lwICsgYWxsb2NhdGlvblNpemUgKyBhbGlnbm1lbnRNYXNrKSAmIH5h
bGlnbm1lbnRNYXNrOworCisgICAgdW5zaWduZWQgY2hhciAqcmV0ID0gcmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZCBjaGFyICo+KGluVXNlTGlzdCkgKyBoZWFkZXJTa2lwOworICAgIGN1cnJlbnRQ
YWdlT2Zmc2V0ICA9IChoZWFkZXJTa2lwICsgYWxsb2NhdGlvblNpemUgKyBhbGlnbm1lbnRNYXNr
KSAmIH5hbGlnbm1lbnRNYXNrOwogCiAgICAgcmV0dXJuIGluaXRpYWxpemVBbGxvY2F0aW9uKGlu
VXNlTGlzdCwgcmV0LCBudW1CeXRlcyk7CiAjZWxzZSAgLy8gIWRlZmluZWQoQU5HTEVfVFJBTlNM
QVRPUl9ESVNBQkxFX1BPT0xfQUxMT0MpCkBAIC0zNDIsNiArMzU1LDYgQEAgdm9pZCBUUG9vbEFs
bG9jYXRvcjo6dW5sb2NrKCkKIC8vCiB2b2lkIFRBbGxvY2F0aW9uOjpjaGVja0FsbG9jTGlzdCgp
IGNvbnN0CiB7Ci0gICAgZm9yIChjb25zdCBUQWxsb2NhdGlvbiogYWxsb2MgPSB0aGlzOyBhbGxv
YyAhPSAwOyBhbGxvYyA9IGFsbG9jLT5wcmV2QWxsb2MpCisgICAgZm9yIChjb25zdCBUQWxsb2Nh
dGlvbiAqYWxsb2MgPSB0aGlzOyBhbGxvYyAhPSAwOyBhbGxvYyA9IGFsbG9jLT5wcmV2QWxsb2Mp
CiAgICAgICAgIGFsbG9jLT5jaGVjaygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUG9vbEFsbG9jLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Qb29sQWxsb2MuaAppbmRleCBm
MTViM2UwNWQ4NDgyNzE1ZGFiNjgyOGYxYTJkMmFhMmQ0NTU4NTYwLi5hZDYzYmM0Y2Q2NmFhODk3
ODRmNmM2ZTQxMDc0MjI1NTI0MDEzMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Qb29sQWxsb2MuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Qb29sQWxsb2MuaApAQCAtMTMs
OCArMTMsOCBAQAogCiAvLwogLy8gVGhpcyBoZWFkZXIgZGVmaW5lcyBhbiBhbGxvY2F0b3IgdGhh
dCBjYW4gYmUgdXNlZCB0byBlZmZpY2llbnRseQotLy8gYWxsb2NhdGUgYSBsYXJnZSBudW1iZXIg
b2Ygc21hbGwgcmVxdWVzdHMgZm9yIGhlYXAgbWVtb3J5LCB3aXRoIHRoZSAKLS8vIGludGVudGlv
biB0aGF0IHRoZXkgYXJlIG5vdCBpbmRpdmlkdWFsbHkgZGVhbGxvY2F0ZWQsIGJ1dCByYXRoZXIg
CisvLyBhbGxvY2F0ZSBhIGxhcmdlIG51bWJlciBvZiBzbWFsbCByZXF1ZXN0cyBmb3IgaGVhcCBt
ZW1vcnksIHdpdGggdGhlCisvLyBpbnRlbnRpb24gdGhhdCB0aGV5IGFyZSBub3QgaW5kaXZpZHVh
bGx5IGRlYWxsb2NhdGVkLCBidXQgcmF0aGVyCiAvLyBjb2xsZWN0aXZlbHkgZGVhbGxvY2F0ZWQg
YXQgb25lIHRpbWUuCiAvLwogLy8gVGhpcyBzaW11bHRhbmVvdXNseQpAQCAtMzgsNTMgKzM4LDU4
IEBACiAvLyBJZiB3ZSBhcmUgdXNpbmcgZ3VhcmQgYmxvY2tzLCB3ZSBtdXN0IHRyYWNrIGVhY2gg
aW5kaXZ1YWwKIC8vIGFsbG9jYXRpb24uICBJZiB3ZSBhcmVuJ3QgdXNpbmcgZ3VhcmQgYmxvY2tz
LCB0aGVzZQogLy8gbmV2ZXIgZ2V0IGluc3RhbnRpYXRlZCwgc28gd29uJ3QgaGF2ZSBhbnkgaW1w
YWN0LgotLy8gCi0KLWNsYXNzIFRBbGxvY2F0aW9uIHsKLXB1YmxpYzoKLSAgICBUQWxsb2NhdGlv
bihzaXplX3Qgc2l6ZSwgdW5zaWduZWQgY2hhciogbWVtLCBUQWxsb2NhdGlvbiogcHJldiA9IDAp
IDoKLSAgICAgICAgc2l6ZShzaXplKSwgbWVtKG1lbSksIHByZXZBbGxvYyhwcmV2KSB7Ci0gICAg
ICAgIC8vIEFsbG9jYXRpb25zIGFyZSBicmFja2V0ZWQ6Ci0gICAgICAgIC8vICAgIFthbGxvY2F0
aW9uSGVhZGVyXVtpbml0aWFsR3VhcmRCbG9ja11bdXNlckRhdGFdW2ZpbmFsR3VhcmRCbG9ja10K
LSAgICAgICAgLy8gVGhpcyB3b3VsZCBiZSBjbGVhbmVyIHdpdGggaWYgKGd1YXJkQmxvY2tTaXpl
KS4uLiwgYnV0IHRoYXQKLSAgICAgICAgLy8gbWFrZXMgdGhlIGNvbXBpbGVyIHByaW50IHdhcm5p
bmdzIGFib3V0IDAgbGVuZ3RoIG1lbXNldHMsCi0gICAgICAgIC8vIGV2ZW4gd2l0aCB0aGUgaWYo
KSBwcm90ZWN0aW5nIHRoZW0uCisvLworCitjbGFzcyBUQWxsb2NhdGlvbgoreworICBwdWJsaWM6
CisgICAgVEFsbG9jYXRpb24oc2l6ZV90IHNpemUsIHVuc2lnbmVkIGNoYXIgKm1lbSwgVEFsbG9j
YXRpb24gKnByZXYgPSAwKQorICAgICAgICA6IHNpemUoc2l6ZSksIG1lbShtZW0pLCBwcmV2QWxs
b2MocHJldikKKyAgICB7CisvLyBBbGxvY2F0aW9ucyBhcmUgYnJhY2tldGVkOgorLy8gICAgW2Fs
bG9jYXRpb25IZWFkZXJdW2luaXRpYWxHdWFyZEJsb2NrXVt1c2VyRGF0YV1bZmluYWxHdWFyZEJs
b2NrXQorLy8gVGhpcyB3b3VsZCBiZSBjbGVhbmVyIHdpdGggaWYgKGd1YXJkQmxvY2tTaXplKS4u
LiwgYnV0IHRoYXQKKy8vIG1ha2VzIHRoZSBjb21waWxlciBwcmludCB3YXJuaW5ncyBhYm91dCAw
IGxlbmd0aCBtZW1zZXRzLAorLy8gZXZlbiB3aXRoIHRoZSBpZigpIHByb3RlY3RpbmcgdGhlbS4K
ICNpZmRlZiBHVUFSRF9CTE9DS1MKICAgICAgICAgbWVtc2V0KHByZUd1YXJkKCksIGd1YXJkQmxv
Y2tCZWdpblZhbCwgZ3VhcmRCbG9ja1NpemUpOwotICAgICAgICBtZW1zZXQoZGF0YSgpLCAgICAg
IHVzZXJEYXRhRmlsbCwgICAgICAgc2l6ZSk7Ci0gICAgICAgIG1lbXNldChwb3N0R3VhcmQoKSwg
Z3VhcmRCbG9ja0VuZFZhbCwgICBndWFyZEJsb2NrU2l6ZSk7CisgICAgICAgIG1lbXNldChkYXRh
KCksIHVzZXJEYXRhRmlsbCwgc2l6ZSk7CisgICAgICAgIG1lbXNldChwb3N0R3VhcmQoKSwgZ3Vh
cmRCbG9ja0VuZFZhbCwgZ3VhcmRCbG9ja1NpemUpOwogI2VuZGlmCiAgICAgfQogCi0gICAgdm9p
ZCBjaGVjaygpIGNvbnN0IHsKLSAgICAgICAgY2hlY2tHdWFyZEJsb2NrKHByZUd1YXJkKCksICBn
dWFyZEJsb2NrQmVnaW5WYWwsICJiZWZvcmUiKTsKLSAgICAgICAgY2hlY2tHdWFyZEJsb2NrKHBv
c3RHdWFyZCgpLCBndWFyZEJsb2NrRW5kVmFsLCAgICJhZnRlciIpOworICAgIHZvaWQgY2hlY2so
KSBjb25zdAorICAgIHsKKyAgICAgICAgY2hlY2tHdWFyZEJsb2NrKHByZUd1YXJkKCksIGd1YXJk
QmxvY2tCZWdpblZhbCwgImJlZm9yZSIpOworICAgICAgICBjaGVja0d1YXJkQmxvY2socG9zdEd1
YXJkKCksIGd1YXJkQmxvY2tFbmRWYWwsICJhZnRlciIpOwogICAgIH0KIAogICAgIHZvaWQgY2hl
Y2tBbGxvY0xpc3QoKSBjb25zdDsKIAogICAgIC8vIFJldHVybiB0b3RhbCBzaXplIG5lZWRlZCB0
byBhY2NvbW9kYXRlIHVzZXIgYnVmZmVyIG9mICdzaXplJywKICAgICAvLyBwbHVzIG91ciB0cmFj
a2luZyBkYXRhLgotICAgIGlubGluZSBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVf
dCBzaXplKSB7CisgICAgaW5saW5lIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90
IHNpemUpCisgICAgewogICAgICAgICByZXR1cm4gc2l6ZSArIDIgKiBndWFyZEJsb2NrU2l6ZSAr
IGhlYWRlclNpemUoKTsKICAgICB9CiAKICAgICAvLyBPZmZzZXQgZnJvbSBzdXJyb3VuZGluZyBi
dWZmZXIgdG8gZ2V0IHRvIHVzZXIgZGF0YSBidWZmZXIuCi0gICAgaW5saW5lIHN0YXRpYyB1bnNp
Z25lZCBjaGFyKiBvZmZzZXRBbGxvY2F0aW9uKHVuc2lnbmVkIGNoYXIqIG0pIHsKKyAgICBpbmxp
bmUgc3RhdGljIHVuc2lnbmVkIGNoYXIgKm9mZnNldEFsbG9jYXRpb24odW5zaWduZWQgY2hhciAq
bSkKKyAgICB7CiAgICAgICAgIHJldHVybiBtICsgZ3VhcmRCbG9ja1NpemUgKyBoZWFkZXJTaXpl
KCk7CiAgICAgfQogCi1wcml2YXRlOgotICAgIHZvaWQgY2hlY2tHdWFyZEJsb2NrKHVuc2lnbmVk
IGNoYXIqIGJsb2NrTWVtLCB1bnNpZ25lZCBjaGFyIHZhbCwgY29uc3QgY2hhciogbG9jVGV4dCkg
Y29uc3Q7CisgIHByaXZhdGU6CisgICAgdm9pZCBjaGVja0d1YXJkQmxvY2sodW5zaWduZWQgY2hh
ciAqYmxvY2tNZW0sIHVuc2lnbmVkIGNoYXIgdmFsLCBjb25zdCBjaGFyICpsb2NUZXh0KSBjb25z
dDsKIAogICAgIC8vIEZpbmQgb2Zmc2V0cyB0byBwcmUgYW5kIHBvc3QgZ3VhcmQgYmxvY2tzLCBh
bmQgdXNlciBkYXRhIGJ1ZmZlcgotICAgIHVuc2lnbmVkIGNoYXIqIHByZUd1YXJkKCkgIGNvbnN0
IHsgcmV0dXJuIG1lbSArIGhlYWRlclNpemUoKTsgfQotICAgIHVuc2lnbmVkIGNoYXIqIGRhdGEo
KSAgICAgIGNvbnN0IHsgcmV0dXJuIHByZUd1YXJkKCkgKyBndWFyZEJsb2NrU2l6ZTsgfQotICAg
IHVuc2lnbmVkIGNoYXIqIHBvc3RHdWFyZCgpIGNvbnN0IHsgcmV0dXJuIGRhdGEoKSArIHNpemU7
IH0KKyAgICB1bnNpZ25lZCBjaGFyICpwcmVHdWFyZCgpIGNvbnN0IHsgcmV0dXJuIG1lbSArIGhl
YWRlclNpemUoKTsgfQorICAgIHVuc2lnbmVkIGNoYXIgKmRhdGEoKSBjb25zdCB7IHJldHVybiBw
cmVHdWFyZCgpICsgZ3VhcmRCbG9ja1NpemU7IH0KKyAgICB1bnNpZ25lZCBjaGFyICpwb3N0R3Vh
cmQoKSBjb25zdCB7IHJldHVybiBkYXRhKCkgKyBzaXplOyB9CiAKLSAgICBzaXplX3Qgc2l6ZTsg
ICAgICAgICAgICAgICAgICAvLyBzaXplIG9mIHRoZSB1c2VyIGRhdGEgYXJlYQotICAgIHVuc2ln
bmVkIGNoYXIqIG1lbTsgICAgICAgICAgIC8vIGJlZ2lubmluZyBvZiBvdXIgYWxsb2NhdGlvbiAo
cHRzIHRvIGhlYWRlcikKLSAgICBUQWxsb2NhdGlvbiogcHJldkFsbG9jOyAgICAgICAvLyBwcmlv
ciBhbGxvY2F0aW9uIGluIHRoZSBjaGFpbgorICAgIHNpemVfdCBzaXplOyAgICAgICAgICAgICAv
LyBzaXplIG9mIHRoZSB1c2VyIGRhdGEgYXJlYQorICAgIHVuc2lnbmVkIGNoYXIgKm1lbTsgICAg
ICAvLyBiZWdpbm5pbmcgb2Ygb3VyIGFsbG9jYXRpb24gKHB0cyB0byBoZWFkZXIpCisgICAgVEFs
bG9jYXRpb24gKnByZXZBbGxvYzsgIC8vIHByaW9yIGFsbG9jYXRpb24gaW4gdGhlIGNoYWluCiAK
ICAgICAvLyBTdXBwb3J0IE1TVkMrKyA2LjAKICAgICBjb25zdCBzdGF0aWMgdW5zaWduZWQgY2hh
ciBndWFyZEJsb2NrQmVnaW5WYWw7CkBAIC0xMDEsNyArMTA2LDcgQEAgcHJpdmF0ZToKIAogLy8K
IC8vIFRoZXJlIGFyZSBzZXZlcmFsIHN0YWNrcy4gIE9uZSBpcyB0byB0cmFjayB0aGUgcHVzaGlu
ZyBhbmQgcG9wcGluZwotLy8gb2YgdGhlIHVzZXIsIGFuZCBub3QgeWV0IGltcGxlbWVudGVkLiAg
VGhlIG90aGVycyBhcmUgc2ltcGx5IGEgCisvLyBvZiB0aGUgdXNlciwgYW5kIG5vdCB5ZXQgaW1w
bGVtZW50ZWQuICBUaGUgb3RoZXJzIGFyZSBzaW1wbHkgYQogLy8gcmVwb3NpdG9yaWVzIG9mIGZy
ZWUgcGFnZXMgb3IgdXNlZCBwYWdlcy4KIC8vCiAvLyBQYWdlIHN0YWNrcyBhcmUgbGlua2VkIHRv
Z2V0aGVyIHdpdGggYSBzaW1wbGUgaGVhZGVyIGF0IHRoZSBiZWdpbm5pbmcKQEAgLTExMCwxMiAr
MTE1LDEzIEBAIHByaXZhdGU6CiAvLyByZS11c2UuCiAvLwogLy8gVGhlICJwYWdlIHNpemUiIHVz
ZWQgaXMgbm90LCBub3IgbXVzdCBpdCBtYXRjaCwgdGhlIHVuZGVybHlpbmcgT1MKLS8vIHBhZ2Ug
c2l6ZS4gIEJ1dCwgaGF2aW5nIGl0IGJlIGFib3V0IHRoYXQgc2l6ZSBvciBlcXVhbCB0byBhIHNl
dCBvZiAKKy8vIHBhZ2Ugc2l6ZS4gIEJ1dCwgaGF2aW5nIGl0IGJlIGFib3V0IHRoYXQgc2l6ZSBv
ciBlcXVhbCB0byBhIHNldCBvZgogLy8gcGFnZXMgaXMgbGlrZWx5IG1vc3Qgb3B0aW1hbC4KIC8v
Ci1jbGFzcyBUUG9vbEFsbG9jYXRvciB7Ci1wdWJsaWM6Ci0gICAgVFBvb2xBbGxvY2F0b3IoaW50
IGdyb3d0aEluY3JlbWVudCA9IDgqMTAyNCwgaW50IGFsbG9jYXRpb25BbGlnbm1lbnQgPSAxNik7
CitjbGFzcyBUUG9vbEFsbG9jYXRvcgoreworICBwdWJsaWM6CisgICAgVFBvb2xBbGxvY2F0b3Io
aW50IGdyb3d0aEluY3JlbWVudCA9IDggKiAxMDI0LCBpbnQgYWxsb2NhdGlvbkFsaWdubWVudCA9
IDE2KTsKIAogICAgIC8vCiAgICAgLy8gRG9uJ3QgY2FsbCB0aGUgZGVzdHJ1Y3RvciBqdXN0IHRv
IGZyZWUgdXAgdGhlIG1lbW9yeSwgY2FsbCBwb3AoKQpAQCAtMTQzLDcgKzE0OSw3IEBAIHB1Ymxp
YzoKICAgICAvLyBDYWxsIGFsbG9jYXRlKCkgdG8gYWN0dWFsbHkgYWNxdWlyZSBtZW1vcnkuICBS
ZXR1cm5zIDAgaWYgbm8gbWVtb3J5CiAgICAgLy8gYXZhaWxhYmxlLCBvdGhlcndpc2UgYSBwcm9w
ZXJseSBhbGlnbmVkIHBvaW50ZXIgdG8gJ251bUJ5dGVzJyBvZiBtZW1vcnkuCiAgICAgLy8KLSAg
ICB2b2lkKiBhbGxvY2F0ZShzaXplX3QgbnVtQnl0ZXMpOworICAgIHZvaWQgKmFsbG9jYXRlKHNp
emVfdCBudW1CeXRlcyk7CiAKICAgICAvLwogICAgIC8vIFRoZXJlIGlzIG5vIGRlYWxsb2NhdGUu
ICBUaGUgcG9pbnQgb2YgdGhpcyBjbGFzcyBpcyB0aGF0CkBAIC0xNjQsNzUgKzE3MCw4MCBAQCBw
dWJsaWM6CiAKICNpZiAhZGVmaW5lZChBTkdMRV9UUkFOU0xBVE9SX0RJU0FCTEVfUE9PTF9BTExP
QykKICAgICBmcmllbmQgc3RydWN0IHRIZWFkZXI7Ci0gICAgCi0gICAgc3RydWN0IHRIZWFkZXIg
ewotICAgICAgICB0SGVhZGVyKHRIZWFkZXIqIG5leHRQYWdlLCBzaXplX3QgcGFnZUNvdW50KSA6
Ci0gICAgICAgICAgICBuZXh0UGFnZShuZXh0UGFnZSksCi0gICAgICAgICAgICBwYWdlQ291bnQo
cGFnZUNvdW50KQorCisgICAgc3RydWN0IHRIZWFkZXIKKyAgICB7CisgICAgICAgIHRIZWFkZXIo
dEhlYWRlciAqbmV4dFBhZ2UsIHNpemVfdCBwYWdlQ291bnQpCisgICAgICAgICAgICA6IG5leHRQ
YWdlKG5leHRQYWdlKSwKKyAgICAgICAgICAgICAgcGFnZUNvdW50KHBhZ2VDb3VudCkKICNpZmRl
ZiBHVUFSRF9CTE9DS1MKLSAgICAgICAgICAsIGxhc3RBbGxvY2F0aW9uKDApCisgICAgICAgICAg
ICAgICwKKyAgICAgICAgICAgICAgbGFzdEFsbG9jYXRpb24oMCkKICNlbmRpZgotICAgICAgICAg
ICAgeyB9CisgICAgICAgIHsKKyAgICAgICAgfQogCi0gICAgICAgIH50SGVhZGVyKCkgeworICAg
ICAgICB+dEhlYWRlcigpCisgICAgICAgIHsKICNpZmRlZiBHVUFSRF9CTE9DS1MKICAgICAgICAg
ICAgIGlmIChsYXN0QWxsb2NhdGlvbikKICAgICAgICAgICAgICAgICBsYXN0QWxsb2NhdGlvbi0+
Y2hlY2tBbGxvY0xpc3QoKTsKICNlbmRpZgogICAgICAgICB9CiAKLSAgICAgICAgdEhlYWRlciog
bmV4dFBhZ2U7CisgICAgICAgIHRIZWFkZXIgKm5leHRQYWdlOwogICAgICAgICBzaXplX3QgcGFn
ZUNvdW50OwogI2lmZGVmIEdVQVJEX0JMT0NLUwotICAgICAgICBUQWxsb2NhdGlvbiogbGFzdEFs
bG9jYXRpb247CisgICAgICAgIFRBbGxvY2F0aW9uICpsYXN0QWxsb2NhdGlvbjsKICNlbmRpZgog
ICAgIH07CiAKLSAgICBzdHJ1Y3QgdEFsbG9jU3RhdGUgeworICAgIHN0cnVjdCB0QWxsb2NTdGF0
ZQorICAgIHsKICAgICAgICAgc2l6ZV90IG9mZnNldDsKLSAgICAgICAgdEhlYWRlciogcGFnZTsK
KyAgICAgICAgdEhlYWRlciAqcGFnZTsKICAgICB9OwogICAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8
dEFsbG9jU3RhdGU+IHRBbGxvY1N0YWNrOwogCiAgICAgLy8gVHJhY2sgYWxsb2NhdGlvbnMgaWYg
YW5kIG9ubHkgaWYgd2UncmUgdXNpbmcgZ3VhcmQgYmxvY2tzCi0gICAgdm9pZCogaW5pdGlhbGl6
ZUFsbG9jYXRpb24odEhlYWRlciogYmxvY2ssIHVuc2lnbmVkIGNoYXIqIG1lbW9yeSwgc2l6ZV90
IG51bUJ5dGVzKSB7CisgICAgdm9pZCAqaW5pdGlhbGl6ZUFsbG9jYXRpb24odEhlYWRlciAqYmxv
Y2ssIHVuc2lnbmVkIGNoYXIgKm1lbW9yeSwgc2l6ZV90IG51bUJ5dGVzKQorICAgIHsKICNpZmRl
ZiBHVUFSRF9CTE9DS1MKLSAgICAgICAgbmV3KG1lbW9yeSkgVEFsbG9jYXRpb24obnVtQnl0ZXMs
IG1lbW9yeSwgYmxvY2stPmxhc3RBbGxvY2F0aW9uKTsKLSAgICAgICAgYmxvY2stPmxhc3RBbGxv
Y2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxUQWxsb2NhdGlvbio+KG1lbW9yeSk7CisgICAgICAg
IG5ldyAobWVtb3J5KSBUQWxsb2NhdGlvbihudW1CeXRlcywgbWVtb3J5LCBibG9jay0+bGFzdEFs
bG9jYXRpb24pOworICAgICAgICBibG9jay0+bGFzdEFsbG9jYXRpb24gPSByZWludGVycHJldF9j
YXN0PFRBbGxvY2F0aW9uICo+KG1lbW9yeSk7CiAjZW5kaWYKICAgICAgICAgLy8gVGhpcyBpcyBv
cHRpbWl6ZWQgZW50aXJlbHkgYXdheSBpZiBHVUFSRF9CTE9DS1MgaXMgbm90IGRlZmluZWQuCiAg
ICAgICAgIHJldHVybiBUQWxsb2NhdGlvbjo6b2Zmc2V0QWxsb2NhdGlvbihtZW1vcnkpOwogICAg
IH0KIAotICAgIHNpemVfdCBwYWdlU2l6ZTsgICAgICAgIC8vIGdyYW51bGFyaXR5IG9mIGFsbG9j
YXRpb24gZnJvbSB0aGUgT1MKLSAgICBzaXplX3QgaGVhZGVyU2tpcDsgICAgICAvLyBhbW91bnQg
b2YgbWVtb3J5IHRvIHNraXAgdG8gbWFrZSByb29tIGZvciB0aGUKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyAgICAgIGhlYWRlciAoYmFzaWNhbGx5LCBzaXplIG9mIGhlYWRlciwgcm91
bmRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgdXAgdG8gbWFrZSBpdCBh
bGlnbmVkCisgICAgc2l6ZV90IHBhZ2VTaXplOyAgICAgICAgICAgLy8gZ3JhbnVsYXJpdHkgb2Yg
YWxsb2NhdGlvbiBmcm9tIHRoZSBPUworICAgIHNpemVfdCBoZWFkZXJTa2lwOyAgICAgICAgIC8v
IGFtb3VudCBvZiBtZW1vcnkgdG8gc2tpcCB0byBtYWtlIHJvb20gZm9yIHRoZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgaGVhZGVyIChiYXNpY2FsbHksIHNpemUgb2Yg
aGVhZGVyLCByb3VuZGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICB1
cCB0byBtYWtlIGl0IGFsaWduZWQKICAgICBzaXplX3QgY3VycmVudFBhZ2VPZmZzZXQ7ICAvLyBu
ZXh0IG9mZnNldCBpbiB0b3Agb2YgaW5Vc2VMaXN0IHRvIGFsbG9jYXRlIGZyb20KLSAgICB0SGVh
ZGVyKiBmcmVlTGlzdDsgICAgICAvLyBsaXN0IG9mIHBvcHBlZCBtZW1vcnkKLSAgICB0SGVhZGVy
KiBpblVzZUxpc3Q7ICAgICAvLyBsaXN0IG9mIGFsbCBtZW1vcnkgY3VycmVudGx5IGJlaW5nIHVz
ZWQKLSAgICB0QWxsb2NTdGFjayBtU3RhY2s7ICAgICAvLyBzdGFjayBvZiB3aGVyZSB0byBhbGxv
Y2F0ZSBmcm9tLCB0byBwYXJ0aXRpb24gcG9vbAorICAgIHRIZWFkZXIgKmZyZWVMaXN0OyAgICAg
ICAgIC8vIGxpc3Qgb2YgcG9wcGVkIG1lbW9yeQorICAgIHRIZWFkZXIgKmluVXNlTGlzdDsgICAg
ICAgIC8vIGxpc3Qgb2YgYWxsIG1lbW9yeSBjdXJyZW50bHkgYmVpbmcgdXNlZAorICAgIHRBbGxv
Y1N0YWNrIG1TdGFjazsgICAgICAgIC8vIHN0YWNrIG9mIHdoZXJlIHRvIGFsbG9jYXRlIGZyb20s
IHRvIHBhcnRpdGlvbiBwb29sCiAKLSAgICBpbnQgbnVtQ2FsbHM7ICAgICAgICAgICAvLyBqdXN0
IGFuIGludGVyZXN0aW5nIHN0YXRpc3RpYwotICAgIHNpemVfdCB0b3RhbEJ5dGVzOyAgICAgIC8v
IGp1c3QgYW4gaW50ZXJlc3Rpbmcgc3RhdGlzdGljCisgICAgaW50IG51bUNhbGxzOyAgICAgICAv
LyBqdXN0IGFuIGludGVyZXN0aW5nIHN0YXRpc3RpYworICAgIHNpemVfdCB0b3RhbEJ5dGVzOyAg
Ly8ganVzdCBhbiBpbnRlcmVzdGluZyBzdGF0aXN0aWMKIAogI2Vsc2UgIC8vICFkZWZpbmVkKEFO
R0xFX1RSQU5TTEFUT1JfRElTQUJMRV9QT09MX0FMTE9DKQogICAgIHN0ZDo6dmVjdG9yPHN0ZDo6
dmVjdG9yPHZvaWQgKj4+IG1TdGFjazsKICNlbmRpZgogCi0gICAgVFBvb2xBbGxvY2F0b3ImIG9w
ZXJhdG9yPShjb25zdCBUUG9vbEFsbG9jYXRvciYpOyAgLy8gZG9udCBhbGxvdyBhc3NpZ25tZW50
IG9wZXJhdG9yCi0gICAgVFBvb2xBbGxvY2F0b3IoY29uc3QgVFBvb2xBbGxvY2F0b3ImKTsgIC8v
IGRvbnQgYWxsb3cgZGVmYXVsdCBjb3B5IGNvbnN0cnVjdG9yCisgICAgVFBvb2xBbGxvY2F0b3Ig
Jm9wZXJhdG9yPShjb25zdCBUUG9vbEFsbG9jYXRvciAmKTsgIC8vIGRvbnQgYWxsb3cgYXNzaWdu
bWVudCBvcGVyYXRvcgorICAgIFRQb29sQWxsb2NhdG9yKGNvbnN0IFRQb29sQWxsb2NhdG9yICYp
OyAgICAgICAgICAgICAvLyBkb250IGFsbG93IGRlZmF1bHQgY29weSBjb25zdHJ1Y3RvcgogICAg
IGJvb2wgbUxvY2tlZDsKIH07CiAKLQogLy8KIC8vIFRoZXJlIGNvdWxkIHBvdGVudGlhbGx5IGJl
IG1hbnkgcG9vbHMgd2l0aCBwb3BzIGhhcHBlbmluZyBhdAogLy8gZGlmZmVyZW50IHRpbWVzLiAg
QnV0IGEgc2ltcGxlIHVzZSBpcyB0byBoYXZlIGEgZ2xvYmFsIHBvcAogLy8gd2l0aCBldmVyeW9u
ZSB1c2luZyB0aGUgc2FtZSBnbG9iYWwgYWxsb2NhdG9yLgogLy8KLWV4dGVybiBUUG9vbEFsbG9j
YXRvciogR2V0R2xvYmFsUG9vbEFsbG9jYXRvcigpOwotZXh0ZXJuIHZvaWQgU2V0R2xvYmFsUG9v
bEFsbG9jYXRvcihUUG9vbEFsbG9jYXRvciogcG9vbEFsbG9jYXRvcik7CitleHRlcm4gVFBvb2xB
bGxvY2F0b3IgKkdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKTsKK2V4dGVybiB2b2lkIFNldEdsb2Jh
bFBvb2xBbGxvY2F0b3IoVFBvb2xBbGxvY2F0b3IgKnBvb2xBbGxvY2F0b3IpOwogCiAvLwogLy8g
VGhpcyBTVEwgY29tcGF0aWJsZSBhbGxvY2F0b3IgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyB0
aGUgYWxsb2NhdG9yCkBAIC0yNDEsNjMgKzI1Miw2OCBAQCBleHRlcm4gdm9pZCBTZXRHbG9iYWxQ
b29sQWxsb2NhdG9yKFRQb29sQWxsb2NhdG9yKiBwb29sQWxsb2NhdG9yKTsKIC8vIEl0IHdpbGwg
dXNlIHRoZSBwb29scyBmb3IgYWxsb2NhdGlvbiwgYW5kIG5vdAogLy8gZG8gYW55IGRlYWxsb2Nh
dGlvbiwgYnV0IHdpbGwgc3RpbGwgZG8gZGVzdHJ1Y3Rpb24uCiAvLwotdGVtcGxhdGU8Y2xhc3Mg
VD4KLWNsYXNzIHBvb2xfYWxsb2NhdG9yIHsKLXB1YmxpYzoKK3RlbXBsYXRlIDxjbGFzcyBUPgor
Y2xhc3MgcG9vbF9hbGxvY2F0b3IKK3sKKyAgcHVibGljOgogICAgIHR5cGVkZWYgc2l6ZV90IHNp
emVfdHlwZTsKICAgICB0eXBlZGVmIHB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlw
ZWRlZiBUKiBwb2ludGVyOwotICAgIHR5cGVkZWYgY29uc3QgVCogY29uc3RfcG9pbnRlcjsKLSAg
ICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIGNvbnN0IFQmIGNvbnN0X3JlZmVy
ZW5jZTsKKyAgICB0eXBlZGVmIFQgKnBvaW50ZXI7CisgICAgdHlwZWRlZiBjb25zdCBUICpjb25z
dF9wb2ludGVyOworICAgIHR5cGVkZWYgVCAmcmVmZXJlbmNlOworICAgIHR5cGVkZWYgY29uc3Qg
VCAmY29uc3RfcmVmZXJlbmNlOwogICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwogCi0gICAgdGVt
cGxhdGU8Y2xhc3MgT3RoZXI+IAotICAgIHN0cnVjdCByZWJpbmQgeworICAgIHRlbXBsYXRlIDxj
bGFzcyBPdGhlcj4KKyAgICBzdHJ1Y3QgcmViaW5kCisgICAgewogICAgICAgICB0eXBlZGVmIHBv
b2xfYWxsb2NhdG9yPE90aGVyPiBvdGhlcjsKICAgICB9OwogICAgIHBvaW50ZXIgYWRkcmVzcyhy
ZWZlcmVuY2UgeCkgY29uc3QgeyByZXR1cm4gJng7IH0KICAgICBjb25zdF9wb2ludGVyIGFkZHJl
c3MoY29uc3RfcmVmZXJlbmNlIHgpIGNvbnN0IHsgcmV0dXJuICZ4OyB9CiAKLSAgICBwb29sX2Fs
bG9jYXRvcigpIHsgfQorICAgIHBvb2xfYWxsb2NhdG9yKCkge30KIAotICAgIHRlbXBsYXRlPGNs
YXNzIE90aGVyPgotICAgIHBvb2xfYWxsb2NhdG9yKGNvbnN0IHBvb2xfYWxsb2NhdG9yPE90aGVy
PiYgcCkgeyB9CisgICAgdGVtcGxhdGUgPGNsYXNzIE90aGVyPgorICAgIHBvb2xfYWxsb2NhdG9y
KGNvbnN0IHBvb2xfYWxsb2NhdG9yPE90aGVyPiAmcCkKKyAgICB7CisgICAgfQogCiAgICAgdGVt
cGxhdGUgPGNsYXNzIE90aGVyPgotICAgIHBvb2xfYWxsb2NhdG9yPFQ+JiBvcGVyYXRvcj0oY29u
c3QgcG9vbF9hbGxvY2F0b3I8T3RoZXI+JiBwKSB7IHJldHVybiAqdGhpczsgfQorICAgIHBvb2xf
YWxsb2NhdG9yPFQ+ICZvcGVyYXRvcj0oY29uc3QgcG9vbF9hbGxvY2F0b3I8T3RoZXI+ICZwKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KIAogI2lmIGRlZmluZWQoX19TVU5Q
Uk9fQ0MpICYmICFkZWZpbmVkKF9SV1NURF9BTExPQ0FUT1IpCiAgICAgLy8gbGliQ1N0ZCBvbiBz
b21lIHBsYXRmb3JtcyBoYXZlIGEgZGlmZmVyZW50IGFsbG9jYXRlL2RlYWxsb2NhdGUgaW50ZXJm
YWNlLgogICAgIC8vIENhbGxlciBwcmUtYmFrZXMgc2l6ZW9mKFQpIGludG8gJ24nIHdoaWNoIGlz
IHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gYmUKICAgICAvLyBhbGxvY2F0ZWQsIG5vdCB0aGUgbnVt
YmVyIG9mIGVsZW1lbnRzLgotICAgIHZvaWQqIGFsbG9jYXRlKHNpemVfdHlwZSBuKSB7IAotICAg
ICAgICByZXR1cm4gZ2V0QWxsb2NhdG9yKCkuYWxsb2NhdGUobik7Ci0gICAgfQotICAgIHZvaWQq
IGFsbG9jYXRlKHNpemVfdHlwZSBuLCBjb25zdCB2b2lkKikgewotICAgICAgICByZXR1cm4gZ2V0
QWxsb2NhdG9yKCkuYWxsb2NhdGUobik7Ci0gICAgfQotICAgIHZvaWQgZGVhbGxvY2F0ZSh2b2lk
Kiwgc2l6ZV90eXBlKSB7fQorICAgIHZvaWQgKmFsbG9jYXRlKHNpemVfdHlwZSBuKSB7IHJldHVy
biBnZXRBbGxvY2F0b3IoKS5hbGxvY2F0ZShuKTsgfQorICAgIHZvaWQgKmFsbG9jYXRlKHNpemVf
dHlwZSBuLCBjb25zdCB2b2lkICopIHsgcmV0dXJuIGdldEFsbG9jYXRvcigpLmFsbG9jYXRlKG4p
OyB9CisgICAgdm9pZCBkZWFsbG9jYXRlKHZvaWQgKiwgc2l6ZV90eXBlKSB7fQogI2Vsc2UKLSAg
ICBwb2ludGVyIGFsbG9jYXRlKHNpemVfdHlwZSBuKSB7IAorICAgIHBvaW50ZXIgYWxsb2NhdGUo
c2l6ZV90eXBlIG4pCisgICAgewogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxwb2lu
dGVyPihnZXRBbGxvY2F0b3IoKS5hbGxvY2F0ZShuICogc2l6ZW9mKFQpKSk7CiAgICAgfQotICAg
IHBvaW50ZXIgYWxsb2NhdGUoc2l6ZV90eXBlIG4sIGNvbnN0IHZvaWQqKSB7IAorICAgIHBvaW50
ZXIgYWxsb2NhdGUoc2l6ZV90eXBlIG4sIGNvbnN0IHZvaWQgKikKKyAgICB7CiAgICAgICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHBvaW50ZXI+KGdldEFsbG9jYXRvcigpLmFsbG9jYXRlKG4g
KiBzaXplb2YoVCkpKTsKICAgICB9CiAgICAgdm9pZCBkZWFsbG9jYXRlKHBvaW50ZXIsIHNpemVf
dHlwZSkge30KICNlbmRpZiAgLy8gX1JXU1REX0FMTE9DQVRPUgogCi0gICAgdm9pZCBjb25zdHJ1
Y3QocG9pbnRlciBwLCBjb25zdCBUJiB2YWwpIHsgbmV3ICgodm9pZCAqKXApIFQodmFsKTsgfQor
ICAgIHZvaWQgY29uc3RydWN0KHBvaW50ZXIgcCwgY29uc3QgVCAmdmFsKSB7IG5ldyAoKHZvaWQg
KilwKSBUKHZhbCk7IH0KICAgICB2b2lkIGRlc3Ryb3kocG9pbnRlciBwKSB7IHAtPlQ6On5UKCk7
IH0KIAotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBwb29sX2FsbG9jYXRvciYgcmhzKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHBvb2xfYWxsb2Nh
dG9yJiByaHMpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IHBvb2xfYWxsb2NhdG9yICZyaHMpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgcG9vbF9hbGxvY2F0b3IgJnJocykgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KIAogICAgIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PHNpemVfdHlwZT4oLTEpIC8gc2l6ZW9mKFQpOyB9CiAgICAgc2l6ZV90eXBlIG1heF9zaXpl
KGludCBzaXplKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KC0xKSAvIHNp
emU7IH0KIAotICAgIFRQb29sQWxsb2NhdG9yJiBnZXRBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVy
biAqR2V0R2xvYmFsUG9vbEFsbG9jYXRvcigpOyB9CisgICAgVFBvb2xBbGxvY2F0b3IgJmdldEFs
bG9jYXRvcigpIGNvbnN0IHsgcmV0dXJuICpHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCk7IH0KIH07
CiAKLSNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1BPT0xBTExPQ19IXworI2VuZGlmICAv
LyBDT01QSUxFUl9UUkFOU0xBVE9SX1BPT0xBTExPQ19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUHJhZ21hLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QcmFnbWEuaAppbmRleCA1
N2IxMTM0OTcwNjIyMDc2NmQ1MjE2MDAwZDhlZGYzZmIxNzEwNTgyLi44YzQxOWZjMTdlMzY4NmI0
OGU5NmE2NjMwNzY4YzUxMWQ5ZDE4MzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QcmFnbWEuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QcmFnbWEuaApAQCAtMTEsMTcgKzEx
LDE2IEBAIHN0cnVjdCBUUHJhZ21hCiB7CiAgICAgc3RydWN0IFNUREdMCiAgICAgewotICAgICAg
ICBTVERHTCgpIDogaW52YXJpYW50QWxsKGZhbHNlKSB7IH0KKyAgICAgICAgU1RER0woKSA6IGlu
dmFyaWFudEFsbChmYWxzZSkge30KIAogICAgICAgICBib29sIGludmFyaWFudEFsbDsKICAgICB9
OwogCi0KICAgICAvLyBCeSBkZWZhdWx0IG9wdGltaXphdGlvbiBpcyB0dXJuZWQgb24gYW5kIGRl
YnVnIGlzIHR1cm5lZCBvZmYuCiAgICAgLy8gUHJlY2lzaW9uIGVtdWxhdGlvbiBpcyB0dXJuZWQg
b24gYnkgZGVmYXVsdCwgYnV0IGhhcyBubyBlZmZlY3QgdW5sZXNzCiAgICAgLy8gdGhlIGV4dGVu
c2lvbiBpcyBlbmFibGVkLgotICAgIFRQcmFnbWEoKSA6IG9wdGltaXplKHRydWUpLCBkZWJ1Zyhm
YWxzZSksIGRlYnVnU2hhZGVyUHJlY2lzaW9uKHRydWUpIHsgfQotICAgIFRQcmFnbWEoYm9vbCBv
LCBib29sIGQpIDogb3B0aW1pemUobyksIGRlYnVnKGQpLCBkZWJ1Z1NoYWRlclByZWNpc2lvbih0
cnVlKSB7IH0KKyAgICBUUHJhZ21hKCkgOiBvcHRpbWl6ZSh0cnVlKSwgZGVidWcoZmFsc2UpLCBk
ZWJ1Z1NoYWRlclByZWNpc2lvbih0cnVlKSB7fQorICAgIFRQcmFnbWEoYm9vbCBvLCBib29sIGQp
IDogb3B0aW1pemUobyksIGRlYnVnKGQpLCBkZWJ1Z1NoYWRlclByZWNpc2lvbih0cnVlKSB7fQog
CiAgICAgYm9vbCBvcHRpbWl6ZTsKICAgICBib29sIGRlYnVnOwpAQCAtMjksNCArMjgsNCBAQCBz
dHJ1Y3QgVFByYWdtYQogICAgIFNUREdMIHN0ZGdsOwogfTsKIAotI2VuZGlmIC8vIENPTVBJTEVS
X1RSQU5TTEFUT1JfUFJBR01BX0hfCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUFJB
R01BX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9QcnVuZUVtcHR5RGVjbGFyYXRpb25zLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BydW5lRW1wdHlEZWNsYXJhdGlvbnMuY3Bw
CmluZGV4IDQ3NjNkZDZlZGVkZGZkNWE1NWY4MTIxOTY3OTgxZjg5MThmY2E4Y2EuLmZkMGViNDFm
M2JjYThkZmM1MGYyYWY1MWIzZmQ0YWIxMGE5OGJmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BydW5lRW1wdHlEZWNsYXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1BydW5lRW1wdHlEZWNsYXJhdGlvbnMuY3BwCkBAIC0zLDEyICszLDE2IEBACiAvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KLS8vIFRoZSBQcnVu
ZUVtcHR5RGVjbGFyYXRpb25zIGZ1bmN0aW9uIHBydW5lcyB1bm5lY2Vzc2FyeSBlbXB0eSBkZWNs
YXJhdGlvbnMgYW5kIGRlY2xhcmF0b3JzIGZyb20gdGhlIEFTVC4KKy8vIFRoZSBQcnVuZUVtcHR5
RGVjbGFyYXRpb25zIGZ1bmN0aW9uIHBydW5lcyB1bm5lY2Vzc2FyeSBlbXB0eSBkZWNsYXJhdGlv
bnMgYW5kIGRlY2xhcmF0b3JzIGZyb20KKy8vIHRoZSBBU1QuCiAKICNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL1BydW5lRW1wdHlEZWNsYXJhdGlvbnMuaCIKIAogI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogbmFtZXNw
YWNlCiB7CiAKQEAgLTE2LDkgKzIwLDEwIEBAIGNsYXNzIFBydW5lRW1wdHlEZWNsYXJhdGlvbnNU
cmF2ZXJzZXIgOiBwcml2YXRlIFRJbnRlcm1UcmF2ZXJzZXIKIHsKICAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGFwcGx5KFRJbnRlcm1Ob2RlICpyb290KTsKKwogICBwcml2YXRlOgogICAgIFBy
dW5lRW1wdHlEZWNsYXJhdGlvbnNUcmF2ZXJzZXIoKTsKLSAgICBib29sIHZpc2l0QWdncmVnYXRl
KFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0
RGVjbGFyYXRpb24oVmlzaXQsIFRJbnRlcm1EZWNsYXJhdGlvbiAqbm9kZSkgb3ZlcnJpZGU7CiB9
OwogCiB2b2lkIFBydW5lRW1wdHlEZWNsYXJhdGlvbnNUcmF2ZXJzZXI6OmFwcGx5KFRJbnRlcm1O
b2RlICpyb290KQpAQCAtMzMsNzkgKzM4LDc4IEBAIFBydW5lRW1wdHlEZWNsYXJhdGlvbnNUcmF2
ZXJzZXI6OlBydW5lRW1wdHlEZWNsYXJhdGlvbnNUcmF2ZXJzZXIoKQogewogfQogCi1ib29sIFBy
dW5lRW1wdHlEZWNsYXJhdGlvbnNUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50
ZXJtQWdncmVnYXRlICpub2RlKQorYm9vbCBQcnVuZUVtcHR5RGVjbGFyYXRpb25zVHJhdmVyc2Vy
Ojp2aXNpdERlY2xhcmF0aW9uKFZpc2l0LCBUSW50ZXJtRGVjbGFyYXRpb24gKm5vZGUpCiB7Ci0g
ICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wRGVjbGFyYXRpb24pCisgICAgVEludGVybVNlcXVl
bmNlICpzZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7CisgICAgaWYgKHNlcXVlbmNlLT5z
aXplKCkgPj0gMSkKICAgICB7Ci0gICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVuY2UgPSBu
b2RlLT5nZXRTZXF1ZW5jZSgpOwotICAgICAgICBpZiAoc2VxdWVuY2UtPnNpemUoKSA+PSAxKQor
ICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW0gPSBzZXF1ZW5jZS0+ZnJvbnQoKS0+Z2V0QXNTeW1i
b2xOb2RlKCk7CisgICAgICAgIC8vIFBydW5lIGRlY2xhcmF0aW9ucyB3aXRob3V0IGEgdmFyaWFi
bGUgbmFtZSwgdW5sZXNzIGl0J3MgYW4gaW50ZXJmYWNlIGJsb2NrIGRlY2xhcmF0aW9uLgorICAg
ICAgICBpZiAoc3ltICE9IG51bGxwdHIgJiYgc3ltLT5nZXRTeW1ib2woKSA9PSAiIiAmJiAhc3lt
LT5pc0ludGVyZmFjZUJsb2NrKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRJbnRlcm1TeW1i
b2wgKnN5bSA9IHNlcXVlbmNlLT5mcm9udCgpLT5nZXRBc1N5bWJvbE5vZGUoKTsKLSAgICAgICAg
ICAgIC8vIFBydW5lIGRlY2xhcmF0aW9ucyB3aXRob3V0IGEgdmFyaWFibGUgbmFtZSwgdW5sZXNz
IGl0J3MgYW4gaW50ZXJmYWNlIGJsb2NrIGRlY2xhcmF0aW9uLgotICAgICAgICAgICAgaWYgKHN5
bSAhPSBudWxscHRyICYmIHN5bS0+Z2V0U3ltYm9sKCkgPT0gIiIgJiYgIXN5bS0+aXNJbnRlcmZh
Y2VCbG9jaygpKQorICAgICAgICAgICAgaWYgKHNlcXVlbmNlLT5zaXplKCkgPiAxKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGlmIChzZXF1ZW5jZS0+c2l6ZSgpID4gMSkKKyAgICAg
ICAgICAgICAgICAvLyBHZW5lcmF0ZSBhIHJlcGxhY2VtZW50IHRoYXQgd2lsbCByZW1vdmUgdGhl
IGVtcHR5IGRlY2xhcmF0b3IgaW4gdGhlIGJlZ2lubmluZyBvZgorICAgICAgICAgICAgICAgIC8v
IGEgZGVjbGFyYXRvciBsaXN0LiBFeGFtcGxlIG9mIGEgZGVjbGFyYXRpb24gdGhhdCB3aWxsIGJl
IGNoYW5nZWQ6CisgICAgICAgICAgICAgICAgLy8gZmxvYXQsIGE7CisgICAgICAgICAgICAgICAg
Ly8gd2lsbCBiZSBjaGFuZ2VkIHRvCisgICAgICAgICAgICAgICAgLy8gZmxvYXQgYTsKKyAgICAg
ICAgICAgICAgICAvLyBUaGlzIGFwcGxpZXMgYWxzbyB0byBzdHJ1Y3QgZGVjbGFyYXRpb25zLgor
ICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBlbXB0eVJlcGxhY2VtZW50OworICAgICAg
ICAgICAgICAgIG1NdWx0aVJlcGxhY2VtZW50cy5wdXNoX2JhY2soCisgICAgICAgICAgICAgICAg
ICAgIE5vZGVSZXBsYWNlV2l0aE11bHRpcGxlRW50cnkobm9kZSwgc3ltLCBlbXB0eVJlcGxhY2Vt
ZW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChzeW0tPmdldEJhc2lj
VHlwZSgpICE9IEVidFN0cnVjdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBT
aW5nbGUgc3RydWN0IGRlY2xhcmF0aW9ucyBtYXkganVzdCBkZWNsYXJlIHRoZSBzdHJ1Y3QgdHlw
ZSBhbmQgbm8gdmFyaWFibGVzLCBzbworICAgICAgICAgICAgICAgIC8vIHRoZXkgc2hvdWxkIG5v
dCBiZSBwcnVuZWQuIEFsbCBvdGhlciBzaW5nbGUgZW1wdHkgZGVjbGFyYXRpb25zIGNhbiBiZSBw
cnVuZWQKKyAgICAgICAgICAgICAgICAvLyBlbnRpcmVseS4gRXhhbXBsZSBvZiBhbiBlbXB0eSBk
ZWNsYXJhdGlvbiB0aGF0IHdpbGwgYmUgcHJ1bmVkOgorICAgICAgICAgICAgICAgIC8vIGZsb2F0
OworICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBlbXB0eVJlcGxhY2VtZW50OworICAg
ICAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqcGFyZW50QXNCbG9jayA9IGdldFBhcmVudE5vZGUo
KS0+Z2V0QXNCbG9jaygpOworICAgICAgICAgICAgICAgIC8vIFRoZSBkZWNsYXJhdGlvbiBtYXkg
YmUgaW5zaWRlIGEgYmxvY2sgb3IgaW4gYSBsb29wIGluaXQgZXhwcmVzc2lvbi4KKyAgICAgICAg
ICAgICAgICBBU1NFUlQocGFyZW50QXNCbG9jayAhPSBudWxscHRyIHx8IGdldFBhcmVudE5vZGUo
KS0+Z2V0QXNMb29wTm9kZSgpICE9IG51bGxwdHIpOworICAgICAgICAgICAgICAgIGlmIChwYXJl
bnRBc0Jsb2NrKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gR2Vu
ZXJhdGUgYSByZXBsYWNlbWVudCB0aGF0IHdpbGwgcmVtb3ZlIHRoZSBlbXB0eSBkZWNsYXJhdG9y
IGluIHRoZSBiZWdpbm5pbmcgb2YgYSBkZWNsYXJhdG9yCi0gICAgICAgICAgICAgICAgICAgIC8v
IGxpc3QuIEV4YW1wbGUgb2YgYSBkZWNsYXJhdGlvbiB0aGF0IHdpbGwgYmUgY2hhbmdlZDoKLSAg
ICAgICAgICAgICAgICAgICAgLy8gZmxvYXQsIGE7Ci0gICAgICAgICAgICAgICAgICAgIC8vIHdp
bGwgYmUgY2hhbmdlZCB0bwotICAgICAgICAgICAgICAgICAgICAvLyBmbG9hdCBhOwotICAgICAg
ICAgICAgICAgICAgICAvLyBUaGlzIGFwcGxpZXMgYWxzbyB0byBzdHJ1Y3QgZGVjbGFyYXRpb25z
LgotICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgZW1wdHlSZXBsYWNlbWVudDsK
LSAgICAgICAgICAgICAgICAgICAgbU11bHRpUmVwbGFjZW1lbnRzLnB1c2hfYmFjayhOb2RlUmVw
bGFjZVdpdGhNdWx0aXBsZUVudHJ5KG5vZGUsIHN5bSwgZW1wdHlSZXBsYWNlbWVudCkpOworICAg
ICAgICAgICAgICAgICAgICBtTXVsdGlSZXBsYWNlbWVudHMucHVzaF9iYWNrKAorICAgICAgICAg
ICAgICAgICAgICAgICAgTm9kZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRyeShwYXJlbnRBc0Jsb2Nr
LCBub2RlLCBlbXB0eVJlcGxhY2VtZW50KSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKHN5bS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KQorICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IFNpbmdsZSBzdHJ1Y3QgZGVjbGFyYXRpb25zIG1heSBqdXN0IGRlY2xhcmUgdGhlIHN0cnVjdCB0
eXBlIGFuZCBubyB2YXJpYWJsZXMsIHNvIHRoZXkgc2hvdWxkCi0gICAgICAgICAgICAgICAgICAg
IC8vIG5vdCBiZSBwcnVuZWQuIEFsbCBvdGhlciBzaW5nbGUgZW1wdHkgZGVjbGFyYXRpb25zIGNh
biBiZSBwcnVuZWQgZW50aXJlbHkuIEV4YW1wbGUgb2YgYW4gZW1wdHkKLSAgICAgICAgICAgICAg
ICAgICAgLy8gZGVjbGFyYXRpb24gdGhhdCB3aWxsIGJlIHBydW5lZDoKLSAgICAgICAgICAgICAg
ICAgICAgLy8gZmxvYXQ7Ci0gICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBlbXB0
eVJlcGxhY2VtZW50OwotICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQmxvY2sgKnBhcmVudEFz
QmxvY2sgPSBnZXRQYXJlbnROb2RlKCktPmdldEFzQmxvY2soKTsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gVGhlIGRlY2xhcmF0aW9uIG1heSBiZSBpbnNpZGUgYSBibG9jayBvciBpbiBhIGxvb3Ag
aW5pdCBleHByZXNzaW9uLgotICAgICAgICAgICAgICAgICAgICBBU1NFUlQocGFyZW50QXNCbG9j
ayAhPSBudWxscHRyIHx8IGdldFBhcmVudE5vZGUoKS0+Z2V0QXNMb29wTm9kZSgpICE9IG51bGxw
dHIpOwotICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50QXNCbG9jaykKLSAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgbU11bHRpUmVwbGFjZW1lbnRzLnB1
c2hfYmFjaygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb2RlUmVwbGFjZVdpdGhNdWx0
aXBsZUVudHJ5KHBhcmVudEFzQmxvY2ssIG5vZGUsIGVtcHR5UmVwbGFjZW1lbnQpKTsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwg
bnVsbHB0ciwgT3JpZ2luYWxOb2RlOjpJU19EUk9QUEVEKTsKLSAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIG51bGxwdHIsIE9y
aWdpbmFsTm9kZTo6SVNfRFJPUFBFRCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKHN5bS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpICE9IEV2cUdsb2JhbCAm
JgotICAgICAgICAgICAgICAgICAgICAgICAgIHN5bS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigp
ICE9IEV2cVRlbXBvcmFyeSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IC8vIFdlJ3ZlIGhpdCBhbiBlbXB0eSBzdHJ1Y3QgZGVjbGFyYXRpb24gd2l0aCBhIHF1YWxpZmll
ciwgZm9yIGV4YW1wbGUgbGlrZQotICAgICAgICAgICAgICAgICAgICAvLyB0aGlzOgotICAgICAg
ICAgICAgICAgICAgICAvLyBjb25zdCBzdHJ1Y3QgYSB7IGludCBpOyB9OwotICAgICAgICAgICAg
ICAgICAgICAvLyBOVklESUEgR0wgZHJpdmVyIHZlcnNpb24gMzY3LjI3IGRvZXNuJ3QgYWNjZXB0
IHRoaXMga2luZCBvZiBkZWNsYXJhdGlvbnMsIHNvCi0gICAgICAgICAgICAgICAgICAgIC8vIHdl
IGNvbnZlcnQgdGhlIGRlY2xhcmF0aW9uIHRvIGEgcmVndWxhciBzdHJ1Y3QgZGVjbGFyYXRpb24u
IFRoaXMgaXMgb2theSwKLSAgICAgICAgICAgICAgICAgICAgLy8gc2luY2UgRVNTTCAxLjAwIHNw
ZWMgc2VjdGlvbiA0LjEuOCBzYXlzIGFib3V0IHN0cnVjdHMgdGhhdCAiVGhlIG9wdGlvbmFsCi0g
ICAgICAgICAgICAgICAgICAgIC8vIHF1YWxpZmllcnMgb25seSBhcHBseSB0byBhbnkgZGVjbGFy
YXRvcnMsIGFuZCBhcmUgbm90IHBhcnQgb2YgdGhlIHR5cGUgYmVpbmcKLSAgICAgICAgICAgICAg
ICAgICAgLy8gZGVmaW5lZCBmb3IgbmFtZS4iCisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlIGlmIChzeW0tPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSAhPSBFdnFHbG9iYWwgJiYKKyAg
ICAgICAgICAgICAgICAgICAgIHN5bS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpICE9IEV2cVRl
bXBvcmFyeSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBXZSd2ZSBoaXQgYW4g
ZW1wdHkgc3RydWN0IGRlY2xhcmF0aW9uIHdpdGggYSBxdWFsaWZpZXIsIGZvciBleGFtcGxlIGxp
a2UKKyAgICAgICAgICAgICAgICAvLyB0aGlzOgorICAgICAgICAgICAgICAgIC8vIGNvbnN0IHN0
cnVjdCBhIHsgaW50IGk7IH07CisgICAgICAgICAgICAgICAgLy8gTlZJRElBIEdMIGRyaXZlciB2
ZXJzaW9uIDM2Ny4yNyBkb2Vzbid0IGFjY2VwdCB0aGlzIGtpbmQgb2YgZGVjbGFyYXRpb25zLCBz
bworICAgICAgICAgICAgICAgIC8vIHdlIGNvbnZlcnQgdGhlIGRlY2xhcmF0aW9uIHRvIGEgcmVn
dWxhciBzdHJ1Y3QgZGVjbGFyYXRpb24uIFRoaXMgaXMgb2theSwKKyAgICAgICAgICAgICAgICAv
LyBzaW5jZSBFU1NMIDEuMDAgc3BlYyBzZWN0aW9uIDQuMS44IHNheXMgYWJvdXQgc3RydWN0cyB0
aGF0ICJUaGUgb3B0aW9uYWwKKyAgICAgICAgICAgICAgICAvLyBxdWFsaWZpZXJzIG9ubHkgYXBw
bHkgdG8gYW55IGRlY2xhcmF0b3JzLCBhbmQgYXJlIG5vdCBwYXJ0IG9mIHRoZSB0eXBlIGJlaW5n
CisgICAgICAgICAgICAgICAgLy8gZGVmaW5lZCBmb3IgbmFtZS4iCiAKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKG1Jbkdsb2JhbFNjb3BlKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzeW0tPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFH
bG9iYWwpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgc3ltLT5nZXRU
eXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxVGVtcG9yYXJ5KTsKLSAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtSW5HbG9iYWxTY29wZSkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN5bS0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVh
bGlmaWVyKEV2cUdsb2JhbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN5bS0+Z2V0VHlwZVBv
aW50ZXIoKS0+c2V0UXVhbGlmaWVyKEV2cVRlbXBvcmFyeSk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0g
ICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi19IC8vIG5hbWVzcGFjZQor
fSAgLy8gbmFtZXNwYWNlCiAKIHZvaWQgUHJ1bmVFbXB0eURlY2xhcmF0aW9ucyhUSW50ZXJtTm9k
ZSAqcm9vdCkKIHsKICAgICBQcnVuZUVtcHR5RGVjbGFyYXRpb25zVHJhdmVyc2VyOjphcHBseShy
b290KTsKIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QcnVuZUVtcHR5RGVjbGFyYXRpb25z
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QcnVu
ZUVtcHR5RGVjbGFyYXRpb25zLmgKaW5kZXggMTIyZTgzMDkwMjJjMDY4NmQwNzMwNDYxMWFlYjhj
Mjg3NGVmZTJjMC4uZjkyODk3ODAxMDVlODMzNjI4NDhjYTg2OTkzZGYxNmI1M2VjYzliMiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
UHJ1bmVFbXB0eURlY2xhcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1BydW5lRW1wdHlEZWNsYXJhdGlvbnMuaApAQCAtMywxMyAr
MywxNyBAQAogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
IC8vCi0vLyBUaGUgUHJ1bmVFbXB0eURlY2xhcmF0aW9ucyBmdW5jdGlvbiBwcnVuZXMgdW5uZWNl
c3NhcnkgZW1wdHkgZGVjbGFyYXRpb25zIGFuZCBkZWNsYXJhdG9ycyBmcm9tIHRoZSBBU1QuCisv
LyBUaGUgUHJ1bmVFbXB0eURlY2xhcmF0aW9ucyBmdW5jdGlvbiBwcnVuZXMgdW5uZWNlc3Nhcnkg
ZW1wdHkgZGVjbGFyYXRpb25zIGFuZCBkZWNsYXJhdG9ycyBmcm9tCisvLyB0aGUgQVNULgogCiAj
aWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfUFJVTkVFTVBUWURFQ0xBUkFUSU9OU19IXwogI2Rl
ZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX1BSVU5FRU1QVFlERUNMQVJBVElPTlNfSF8KIAorbmFt
ZXNwYWNlIHNoCit7CiBjbGFzcyBUSW50ZXJtTm9kZTsKIAogdm9pZCBQcnVuZUVtcHR5RGVjbGFy
YXRpb25zKFRJbnRlcm1Ob2RlICpyb290KTsKK30KIAogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFO
U0xBVE9SX1BSVU5FRU1QVFlERUNMQVJBVElPTlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BydW5lUHVyZUxpdGVyYWxTdGF0
ZW1lbnRzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1BydW5lUHVyZUxpdGVyYWxTdGF0ZW1lbnRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZGVmNWEwZmIy
MjU0MmQ1NGQyNjkwMzE1NmQ5M2IwNDc5NjY0YTRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUHJ1bmVQdXJlTGl0ZXJh
bFN0YXRlbWVudHMuY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIw
MTcgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gUHJ1bmVQ
dXJlTGl0ZXJhbFN0YXRlbWVudHMuY3BwOiBSZW1vdmVzIHN0YXRlbWVudHMgdGhhdCBhcmUgbGl0
ZXJhbHMgYW5kIG5vdGhpbmcgZWxzZS4KKworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3Iv
UHJ1bmVQdXJlTGl0ZXJhbFN0YXRlbWVudHMuaCIKKworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvSW50ZXJtTm9kZS5oIgorCituYW1lc3BhY2Ugc2gKK3sKKworbmFtZXNwYWNlCit7CisK
K2NsYXNzIFBydW5lUHVyZUxpdGVyYWxTdGF0ZW1lbnRzVHJhdmVyc2VyIDogcHVibGljIFRJbnRl
cm1UcmF2ZXJzZXIKK3sKKyAgcHVibGljOgorICAgIFBydW5lUHVyZUxpdGVyYWxTdGF0ZW1lbnRz
VHJhdmVyc2VyKCkgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSkge30KKwor
ICAgIGJvb2wgdmlzaXRCbG9jayhWaXNpdCB2aXNpdCwgVEludGVybUJsb2NrICpub2RlKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgVEludGVybVNlcXVlbmNlICpzdGF0ZW1lbnRzID0gbm9kZS0+
Z2V0U2VxdWVuY2UoKTsKKyAgICAgICAgaWYgKHN0YXRlbWVudHMgPT0gbnVsbHB0cikKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLy8g
RW1wdHkgY2FzZSBzdGF0ZW1lbnRzIGF0IHRoZSBlbmQgb2YgYSBzd2l0Y2ggYXJlIGludmFsaWQ6
IGlmIHRoZSBsYXN0IHN0YXRlbWVudHMKKyAgICAgICAgLy8gb2YgYSBibG9jayB3YXMgYSBwdXJl
IGxpdGVyYWwsIGFsc28gZGVsZXRlIGFsbCB0aGUgY2FzZSBzdGF0ZW1lbnRzIGRpcmVjdGx5IHBy
ZWNlZGluZyBpdC4KKyAgICAgICAgYm9vbCBkZWxldGVDYXNlU3RhdGVtZW50cyA9IGZhbHNlOwor
ICAgICAgICBmb3IgKGludCBpID0gc3RhdGljX2Nhc3Q8aW50PihzdGF0ZW1lbnRzLT5zaXplKCkp
OyBpLS0gPiAwOykKKyAgICAgICAgeworICAgICAgICAgICAgVEludGVybU5vZGUgKnN0YXRlbWVu
dCA9ICgqc3RhdGVtZW50cylbaV07CisKKyAgICAgICAgICAgIGlmIChzdGF0ZW1lbnQtPmdldEFz
Q29uc3RhbnRVbmlvbigpICE9IG51bGxwdHIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgVEludGVybVNlcXVlbmNlIGVtcHR5UmVwbGFjZW1lbnQ7CisgICAgICAgICAgICAgICAgbU11
bHRpUmVwbGFjZW1lbnRzLnB1c2hfYmFjaygKKyAgICAgICAgICAgICAgICAgICAgTm9kZVJlcGxh
Y2VXaXRoTXVsdGlwbGVFbnRyeShub2RlLCBzdGF0ZW1lbnQsIGVtcHR5UmVwbGFjZW1lbnQpKTsK
KworICAgICAgICAgICAgICAgIGlmIChpID09IHN0YXRpY19jYXN0PGludD4oc3RhdGVtZW50cy0+
c2l6ZSgpKSAtIDEpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBkZWxl
dGVDYXNlU3RhdGVtZW50cyA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChkZWxldGVD
YXNlU3RhdGVtZW50cykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdGVt
ZW50LT5nZXRBc0Nhc2VOb2RlKCkgIT0gbnVsbHB0cikKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBlbXB0eVJlcGxhY2VtZW50OworICAgICAg
ICAgICAgICAgICAgICBtTXVsdGlSZXBsYWNlbWVudHMucHVzaF9iYWNrKAorICAgICAgICAgICAg
ICAgICAgICAgICAgTm9kZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRyeShub2RlLCBzdGF0ZW1lbnQs
IGVtcHR5UmVwbGFjZW1lbnQpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlQ2FzZVN0
YXRlbWVudHMgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIHZpc2l0TG9v
cChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AgKmxvb3ApIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBUSW50ZXJtVHlwZWQgKmV4cHIgPSBsb29wLT5nZXRFeHByZXNzaW9uKCk7CisgICAgICAgIGlm
IChleHByICE9IG51bGxwdHIgJiYgZXhwci0+Z2V0QXNDb25zdGFudFVuaW9uKCkgIT0gbnVsbHB0
cikKKyAgICAgICAgeworICAgICAgICAgICAgbG9vcC0+c2V0RXhwcmVzc2lvbihudWxscHRyKTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK307CisKK30gIC8vIG5h
bWVzcGFjZQorCit2b2lkIFBydW5lUHVyZUxpdGVyYWxTdGF0ZW1lbnRzKFRJbnRlcm1Ob2RlICpy
b290KQoreworICAgIFBydW5lUHVyZUxpdGVyYWxTdGF0ZW1lbnRzVHJhdmVyc2VyIHBydW5lOwor
ICAgIHJvb3QtPnRyYXZlcnNlKCZwcnVuZSk7CisgICAgcHJ1bmUudXBkYXRlVHJlZSgpOworfQor
Cit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BydW5lUHVyZUxpdGVyYWxTdGF0ZW1lbnRzLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QcnVuZVB1cmVM
aXRlcmFsU3RhdGVtZW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVmOTU2YzA2OWY2ZTI3OTljM2RkMmI5NTI2
NzZjODg5ODFiODI3Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QcnVuZVB1cmVMaXRlcmFsU3RhdGVtZW50cy5oCkBA
IC0wLDAgKzEsMTggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gUHJ1bmVQdXJlTGl0ZXJhbFN0YXRlbWVu
dHMuaDogUmVtb3ZlcyBzdGF0ZW1lbnRzIHRoYXQgYXJlIGxpdGVyYWxzIGFuZCBub3RoaW5nIGVs
c2UuCisKKyNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9QUlVORVBVUkVMSVRFUkFMU1RBVEVN
RU5UU19IXworI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX1BSVU5FUFVSRUxJVEVSQUxTVEFU
RU1FTlRTX0hfCisKK25hbWVzcGFjZSBzaAoreworY2xhc3MgVEludGVybU5vZGU7CisKK3ZvaWQg
UHJ1bmVQdXJlTGl0ZXJhbFN0YXRlbWVudHMoVEludGVybU5vZGUgKnJvb3QpOworfQorCisjZW5k
aWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUFJVTkVQVVJFTElURVJBTFNUQVRFTUVOVFNfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1F1YWxpZmllclR5cGVzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1F1YWxpZmllclR5cGVzLmNwcAppbmRleCAzMGQ4YzRlZWQwOGJlZWI5
NWJiODc5MWM5MjU1OWE1MGM1YTk2ZGQ0Li5hNzBmZjk3ZDJhMjAxYjYxN2QyYzlhMjE5MWNmMjhh
ZjM5Zjk2NzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9RdWFsaWZpZXJUeXBlcy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUXVhbGlmaWVyVHlwZXMuY3BwCkBAIC0xMiw0
NSArMTIsNiBAQAogCiBuYW1lc3BhY2Ugc2gKIHsKLVRMYXlvdXRRdWFsaWZpZXIgSm9pbkxheW91
dFF1YWxpZmllcnMoVExheW91dFF1YWxpZmllciBsZWZ0UXVhbGlmaWVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUTGF5b3V0UXVhbGlmaWVyIHJpZ2h0UXVhbGlmaWVy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9j
ICZyaWdodFF1YWxpZmllckxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKQotewotICAgIFRMYXlvdXRRdWFsaWZp
ZXIgam9pbmVkUXVhbGlmaWVyID0gbGVmdFF1YWxpZmllcjsKLQotICAgIGlmIChyaWdodFF1YWxp
Zmllci5sb2NhdGlvbiAhPSAtMSkKLSAgICB7Ci0gICAgICAgIGpvaW5lZFF1YWxpZmllci5sb2Nh
dGlvbiA9IHJpZ2h0UXVhbGlmaWVyLmxvY2F0aW9uOwotICAgICAgICArK2pvaW5lZFF1YWxpZmll
ci5sb2NhdGlvbnNTcGVjaWZpZWQ7Ci0gICAgfQotICAgIGlmIChyaWdodFF1YWxpZmllci5tYXRy
aXhQYWNraW5nICE9IEVtcFVuc3BlY2lmaWVkKQotICAgIHsKLSAgICAgICAgam9pbmVkUXVhbGlm
aWVyLm1hdHJpeFBhY2tpbmcgPSByaWdodFF1YWxpZmllci5tYXRyaXhQYWNraW5nOwotICAgIH0K
LSAgICBpZiAocmlnaHRRdWFsaWZpZXIuYmxvY2tTdG9yYWdlICE9IEVic1Vuc3BlY2lmaWVkKQot
ICAgIHsKLSAgICAgICAgam9pbmVkUXVhbGlmaWVyLmJsb2NrU3RvcmFnZSA9IHJpZ2h0UXVhbGlm
aWVyLmJsb2NrU3RvcmFnZTsKLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMHU7IGkgPCBy
aWdodFF1YWxpZmllci5sb2NhbFNpemUuc2l6ZSgpOyArK2kpCi0gICAgewotICAgICAgICBpZiAo
cmlnaHRRdWFsaWZpZXIubG9jYWxTaXplW2ldICE9IC0xKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoam9pbmVkUXVhbGlmaWVyLmxvY2FsU2l6ZVtpXSAhPSAtMSAmJgotICAgICAgICAgICAg
ICAgIGpvaW5lZFF1YWxpZmllci5sb2NhbFNpemVbaV0gIT0gcmlnaHRRdWFsaWZpZXIubG9jYWxT
aXplW2ldKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRpYWdub3N0aWNzLT5lcnJv
cihyaWdodFF1YWxpZmllckxvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiQ2Fubm90IGhhdmUgbXVsdGlwbGUgZGlmZmVyZW50IHdvcmsgZ3JvdXAgc2l6ZSBzcGVj
aWZpZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0V29ya0dyb3Vw
U2l6ZVN0cmluZyhpKSwgIiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgam9pbmVkUXVh
bGlmaWVyLmxvY2FsU2l6ZVtpXSA9IHJpZ2h0UXVhbGlmaWVyLmxvY2FsU2l6ZVtpXTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIHJldHVybiBqb2luZWRRdWFsaWZpZXI7Ci19Ci19ICAvLyBuYW1l
c3BhY2Ugc2gKIAogbmFtZXNwYWNlCiB7CkBAIC02Myw3ICsyNCw2IEBAIGJvb2wgQXJlVHlwZVF1
YWxpZmllckNoZWNrc1JlbGF4ZWQoaW50IHNoYWRlclZlcnNpb24pCiAgICAgcmV0dXJuIHNoYWRl
clZlcnNpb24gPj0gMzEwOwogfQogCi0jaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfQVNTRVJUUykK
IGJvb2wgSXNTY29wZVF1YWxpZmllcihUUXVhbGlmaWVyIHF1YWxpZmllcikKIHsKICAgICByZXR1
cm4gcXVhbGlmaWVyID09IEV2cUdsb2JhbCB8fCBxdWFsaWZpZXIgPT0gRXZxVGVtcG9yYXJ5OwpA
QCAtODYsNyArNDYsNiBAQCBib29sIElzSW52YXJpYW50Q29ycmVjdChjb25zdCBUVHlwZVF1YWxp
ZmllckJ1aWxkZXI6OlF1YWxpZmllclNlcXVlbmNlICZxdWFsaWZpZQogICAgIC8vIFRoZSBmaXJz
dCBxdWFsaWZpZXIgYWx3YXlzIHRlbGxzIHRoZSBzY29wZS4KICAgICByZXR1cm4gcXVhbGlmaWVy
cy5zaXplKCkgPj0gMSAmJiBJc1Njb3BlUXVhbGlmaWVyV3JhcHBlcihxdWFsaWZpZXJzWzBdKTsK
IH0KLSNlbmRpZgogCiAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIHF1YWxpZmllcnMgd2hp
Y2ggaGF2ZSBiZWVuIHNwZWNpZmllZCBtdWx0aXBsZSB0aW1lcwogLy8gSWYgYXJlUXVhbGlmaWVy
Q2hlY2tzUmVsYXhlZCBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiBsYXlvdXQgcXVhbGlmaWVyIHJlcGV0
aXRpb24gaXMgYWxsb3dlZC4KQEAgLTE5MSw2ICsxNTAsMzEgQEAgYm9vbCBIYXNSZXBlYXRpbmdR
dWFsaWZpZXJzKGNvbnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRlcjo6UXVhbGlmaWVyU2VxdWVuY2Ug
JnF1YWwKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBjYXNlIFF0TWVtb3J5OgorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIC8vIEdvIG92ZXIgYWxsIG9mIHRoZSBtZW1vcnkgcXVhbGlmaWVycyB1cCB1bnRp
bCB0aGUgY3VycmVudCBvbmUgYW5kIGNoZWNrIGZvcgorICAgICAgICAgICAgICAgIC8vIHJlcGV0
aXRpb25zLgorICAgICAgICAgICAgICAgIC8vIEhhdmluZyBib3RoIHJlYWRvbmx5IGFuZCB3cml0
ZW9ubHkgaW4gYSBzZXF1ZW5jZSBpcyB2YWxpZC4KKyAgICAgICAgICAgICAgICAvLyBHTFNMIEVT
IDMuMTAgUmV2aXNpb24gNCwgNC45IE1lbW9yeSBBY2Nlc3MgUXVhbGlmaWVycworICAgICAgICAg
ICAgICAgIFRRdWFsaWZpZXIgY3VycmVudFF1YWxpZmllciA9CisgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PGNvbnN0IFRNZW1vcnlRdWFsaWZpZXJXcmFwcGVyICo+KHF1YWxpZmllcnNb
aV0pLT5nZXRRdWFsaWZpZXIoKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMTsg
aiA8IGk7ICsraikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlmIChx
dWFsaWZpZXJzW2pdLT5nZXRUeXBlKCkgPT0gUXRNZW1vcnkpCisgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRNZW1vcnlRdWFsaWZpZXJXcmFwcGVy
ICpwcmV2aW91c1F1YWxpZmllcldyYXBwZXIgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PGNvbnN0IFRNZW1vcnlRdWFsaWZpZXJXcmFwcGVyICo+KHF1YWxpZmllcnNb
al0pOworICAgICAgICAgICAgICAgICAgICAgICAgVFF1YWxpZmllciBwcmV2aW91c1F1YWxpZmll
ciA9IHByZXZpb3VzUXVhbGlmaWVyV3JhcHBlci0+Z2V0UXVhbGlmaWVyKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoY3VycmVudFF1YWxpZmllciA9PSBwcmV2aW91c1F1YWxpZmllcikK
KyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
ZXJyb3JNZXNzYWdlID0gcHJldmlvdXNRdWFsaWZpZXJXcmFwcGVyLT5nZXRRdWFsaWZpZXJTdHJp
bmcoKS5jX3N0cigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICplcnJvck1lc3NhZ2Ug
Kz0gIiBzcGVjaWZpZWQgbXVsdGlwbGUgdGltZXMiOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOwogICAgICAgICB9CkBAIC0yNjMsNiArMjQ3LDEzIEBAIGJvb2wgQXJlUXVhbGlmaWVy
c0luT3JkZXIoY29uc3QgVFR5cGVRdWFsaWZpZXJCdWlsZGVyOjpRdWFsaWZpZXJTZXF1ZW5jZSAm
cXVhbGlmCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGZvdW5kU3RvcmFnZSA9
IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFF0TWVtb3J5
OgorICAgICAgICAgICAgICAgIGlmIChmb3VuZFByZWNpc2lvbikKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgICplcnJvck1lc3NhZ2UgPSAiUHJlY2lzaW9uIHF1YWxpZmll
cnMgaGF2ZSB0byBiZSBhZnRlciBtZW1vcnkgcXVhbGlmaWVycy4iOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBRdFByZWNpc2lvbjoKICAgICAgICAgICAgICAgICBmb3Vu
ZFByZWNpc2lvbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zOTIsNiArMzgz
LDM0IEBAIGJvb2wgSm9pblBhcmFtZXRlclN0b3JhZ2VRdWFsaWZpZXIoVFF1YWxpZmllciAqam9p
bmVkUXVhbGlmaWVyLCBUUXVhbGlmaWVyIHN0b3JhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jv
b2wgSm9pbk1lbW9yeVF1YWxpZmllcihUTWVtb3J5UXVhbGlmaWVyICpqb2luZWRNZW1vcnlRdWFs
aWZpZXIsIFRRdWFsaWZpZXIgbWVtb3J5UXVhbGlmaWVyKQoreworICAgIHN3aXRjaCAobWVtb3J5
UXVhbGlmaWVyKQorICAgIHsKKyAgICAgICAgY2FzZSBFdnFSZWFkT25seToKKyAgICAgICAgICAg
IGpvaW5lZE1lbW9yeVF1YWxpZmllci0+cmVhZG9ubHkgPSB0cnVlOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRXZxV3JpdGVPbmx5OgorICAgICAgICAgICAgam9pbmVkTWVtb3J5
UXVhbGlmaWVyLT53cml0ZW9ubHkgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRXZxQ29oZXJlbnQ6CisgICAgICAgICAgICBqb2luZWRNZW1vcnlRdWFsaWZpZXItPmNv
aGVyZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV2cVJlc3Ry
aWN0OgorICAgICAgICAgICAgam9pbmVkTWVtb3J5UXVhbGlmaWVyLT5yZXN0cmljdFF1YWxpZmll
ciA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFdnFWb2xhdGlsZToK
KyAgICAgICAgICAgIC8vIFZhcmlhYmxlcyBoYXZpbmcgdGhlIHZvbGF0aWxlIHF1YWxpZmllciBh
cmUgYXV0b21hdGNhbGx5IHRyZWF0ZWQgYXMgY29oZXJlbnQgYXMgd2VsbC4KKyAgICAgICAgICAg
IC8vIEdMU0wgRVMgMy4xMCwgUmV2aXNpb24gNCwgNC45IE1lbW9yeSBBY2Nlc3MgUXVhbGlmaWVy
cworICAgICAgICAgICAgam9pbmVkTWVtb3J5UXVhbGlmaWVyLT52b2xhdGlsZVF1YWxpZmllciA9
IHRydWU7CisgICAgICAgICAgICBqb2luZWRNZW1vcnlRdWFsaWZpZXItPmNvaGVyZW50ICAgICAg
ICAgID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIFRUeXBl
UXVhbGlmaWVyIEdldFZhcmlhYmxlVHlwZVF1YWxpZmllckZyb21Tb3J0ZWRTZXF1ZW5jZSgKICAg
ICBjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXI6OlF1YWxpZmllclNlcXVlbmNlICZzb3J0ZWRT
ZXF1ZW5jZSwKICAgICBURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKQpAQCAtNDQ1LDYgKzQ2NCwx
MSBAQCBUVHlwZVF1YWxpZmllciBHZXRWYXJpYWJsZVR5cGVRdWFsaWZpZXJGcm9tU29ydGVkU2Vx
dWVuY2UoCiAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFRQcmVjaXNpb25R
dWFsaWZpZXJXcmFwcGVyICo+KHF1YWxpZmllciktPmdldFF1YWxpZmllcigpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVCh0eXBlUXVhbGlmaWVyLnByZWNpc2lvbiAhPSBFYnBVbmRlZmluZWQpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBRdE1lbW9yeToKKyAgICAg
ICAgICAgICAgICBpc1F1YWxpZmllclZhbGlkID0gSm9pbk1lbW9yeVF1YWxpZmllcigKKyAgICAg
ICAgICAgICAgICAgICAgJnR5cGVRdWFsaWZpZXIubWVtb3J5UXVhbGlmaWVyLAorICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBUTWVtb3J5UXVhbGlmaWVyV3JhcHBlciAqPihx
dWFsaWZpZXIpLT5nZXRRdWFsaWZpZXIoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAg
IH0KQEAgLTQ1Miw3ICs0NzYsNyBAQCBUVHlwZVF1YWxpZmllciBHZXRWYXJpYWJsZVR5cGVRdWFs
aWZpZXJGcm9tU29ydGVkU2VxdWVuY2UoCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFRT
dHJpbmcgJnF1YWxpZmllclN0cmluZyA9IHF1YWxpZmllci0+Z2V0UXVhbGlmaWVyU3RyaW5nKCk7
CiAgICAgICAgICAgICBkaWFnbm9zdGljcy0+ZXJyb3IocXVhbGlmaWVyLT5nZXRMaW5lKCksICJp
bnZhbGlkIHF1YWxpZmllciBjb21iaW5hdGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcXVhbGlmaWVyU3RyaW5nLmNfc3RyKCksICIiKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBxdWFsaWZpZXJTdHJpbmcuY19zdHIoKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KQEAgLTQ3NCw2ICs0OTgsMTEgQEAgVFR5cGVRdWFsaWZpZXIgR2V0
UGFyYW1ldGVyVHlwZVF1YWxpZmllckZyb21Tb3J0ZWRTZXF1ZW5jZSgKICAgICAgICAgICAgIGNh
c2UgUXRJbnRlcnBvbGF0aW9uOgogICAgICAgICAgICAgY2FzZSBRdExheW91dDoKICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUXRNZW1vcnk6CisgICAgICAgICAgICAg
ICAgaXNRdWFsaWZpZXJWYWxpZCA9IEpvaW5NZW1vcnlRdWFsaWZpZXIoCisgICAgICAgICAgICAg
ICAgICAgICZ0eXBlUXVhbGlmaWVyLm1lbW9yeVF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8Y29uc3QgVE1lbW9yeVF1YWxpZmllcldyYXBwZXIgKj4ocXVhbGlmaWVy
KS0+Z2V0UXVhbGlmaWVyKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
Y2FzZSBRdFN0b3JhZ2U6CiAgICAgICAgICAgICAgICAgaXNRdWFsaWZpZXJWYWxpZCA9IEpvaW5Q
YXJhbWV0ZXJTdG9yYWdlUXVhbGlmaWVyKAogICAgICAgICAgICAgICAgICAgICAmdHlwZVF1YWxp
Zmllci5xdWFsaWZpZXIsCkBAIC00OTIsNyArNTIxLDcgQEAgVFR5cGVRdWFsaWZpZXIgR2V0UGFy
YW1ldGVyVHlwZVF1YWxpZmllckZyb21Tb3J0ZWRTZXF1ZW5jZSgKICAgICAgICAgewogICAgICAg
ICAgICAgY29uc3QgVFN0cmluZyAmcXVhbGlmaWVyU3RyaW5nID0gcXVhbGlmaWVyLT5nZXRRdWFs
aWZpZXJTdHJpbmcoKTsKICAgICAgICAgICAgIGRpYWdub3N0aWNzLT5lcnJvcihxdWFsaWZpZXIt
PmdldExpbmUoKSwgImludmFsaWQgcGFyYW1ldGVyIHF1YWxpZmllciIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcXVhbGlmaWVyU3RyaW5nLmNfc3RyKCksICIiKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBxdWFsaWZpZXJTdHJpbmcuY19zdHIoKSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KQEAgLTUxMywxMiArNTQyLDY5IEBAIFRUeXBl
UXVhbGlmaWVyIEdldFBhcmFtZXRlclR5cGVRdWFsaWZpZXJGcm9tU29ydGVkU2VxdWVuY2UoCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGRpYWdub3N0
aWNzLT5lcnJvcihzb3J0ZWRTZXF1ZW5jZVswXS0+Z2V0TGluZSgpLCAiSW52YWxpZCBwYXJhbWV0
ZXIgcXVhbGlmaWVyICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UXVhbGlm
aWVyU3RyaW5nKHR5cGVRdWFsaWZpZXIucXVhbGlmaWVyKSwgIiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdldFF1YWxpZmllclN0cmluZyh0eXBlUXVhbGlmaWVyLnF1YWxpZmll
cikpOwogICAgIH0KICAgICByZXR1cm4gdHlwZVF1YWxpZmllcjsKIH0KIH0gIC8vIG5hbWVzcGFj
ZQogCitUTGF5b3V0UXVhbGlmaWVyIEpvaW5MYXlvdXRRdWFsaWZpZXJzKFRMYXlvdXRRdWFsaWZp
ZXIgbGVmdFF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VExheW91dFF1YWxpZmllciByaWdodFF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmcmlnaHRRdWFsaWZpZXJMb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVERpYWdub3N0aWNzICpkaWFn
bm9zdGljcykKK3sKKyAgICBUTGF5b3V0UXVhbGlmaWVyIGpvaW5lZFF1YWxpZmllciA9IGxlZnRR
dWFsaWZpZXI7CisKKyAgICBpZiAocmlnaHRRdWFsaWZpZXIubG9jYXRpb24gIT0gLTEpCisgICAg
eworICAgICAgICBqb2luZWRRdWFsaWZpZXIubG9jYXRpb24gPSByaWdodFF1YWxpZmllci5sb2Nh
dGlvbjsKKyAgICAgICAgKytqb2luZWRRdWFsaWZpZXIubG9jYXRpb25zU3BlY2lmaWVkOworICAg
IH0KKyAgICBpZiAocmlnaHRRdWFsaWZpZXIueXV2ICE9IGZhbHNlKQorICAgIHsKKyAgICAgICAg
am9pbmVkUXVhbGlmaWVyLnl1diA9IHJpZ2h0UXVhbGlmaWVyLnl1djsKKyAgICB9CisgICAgaWYg
KHJpZ2h0UXVhbGlmaWVyLmJpbmRpbmcgIT0gLTEpCisgICAgeworICAgICAgICBqb2luZWRRdWFs
aWZpZXIuYmluZGluZyA9IHJpZ2h0UXVhbGlmaWVyLmJpbmRpbmc7CisgICAgfQorICAgIGlmIChy
aWdodFF1YWxpZmllci5tYXRyaXhQYWNraW5nICE9IEVtcFVuc3BlY2lmaWVkKQorICAgIHsKKyAg
ICAgICAgam9pbmVkUXVhbGlmaWVyLm1hdHJpeFBhY2tpbmcgPSByaWdodFF1YWxpZmllci5tYXRy
aXhQYWNraW5nOworICAgIH0KKyAgICBpZiAocmlnaHRRdWFsaWZpZXIuYmxvY2tTdG9yYWdlICE9
IEVic1Vuc3BlY2lmaWVkKQorICAgIHsKKyAgICAgICAgam9pbmVkUXVhbGlmaWVyLmJsb2NrU3Rv
cmFnZSA9IHJpZ2h0UXVhbGlmaWVyLmJsb2NrU3RvcmFnZTsKKyAgICB9CisKKyAgICBmb3IgKHNp
emVfdCBpID0gMHU7IGkgPCByaWdodFF1YWxpZmllci5sb2NhbFNpemUuc2l6ZSgpOyArK2kpCisg
ICAgeworICAgICAgICBpZiAocmlnaHRRdWFsaWZpZXIubG9jYWxTaXplW2ldICE9IC0xKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoam9pbmVkUXVhbGlmaWVyLmxvY2FsU2l6ZVtpXSAhPSAt
MSAmJgorICAgICAgICAgICAgICAgIGpvaW5lZFF1YWxpZmllci5sb2NhbFNpemVbaV0gIT0gcmln
aHRRdWFsaWZpZXIubG9jYWxTaXplW2ldKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGRpYWdub3N0aWNzLT5lcnJvcihyaWdodFF1YWxpZmllckxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IGhhdmUgbXVsdGlwbGUgZGlmZmVyZW50IHdv
cmsgZ3JvdXAgc2l6ZSBzcGVjaWZpZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2V0V29ya0dyb3VwU2l6ZVN0cmluZyhpKSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBqb2luZWRRdWFsaWZpZXIubG9jYWxTaXplW2ldID0gcmlnaHRRdWFsaWZpZXIubG9jYWxT
aXplW2ldOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHJpZ2h0UXVhbGlmaWVyLm51bVZp
ZXdzICE9IC0xKQorICAgIHsKKyAgICAgICAgam9pbmVkUXVhbGlmaWVyLm51bVZpZXdzID0gcmln
aHRRdWFsaWZpZXIubnVtVmlld3M7CisgICAgfQorCisgICAgaWYgKHJpZ2h0UXVhbGlmaWVyLmlt
YWdlSW50ZXJuYWxGb3JtYXQgIT0gRWlpZlVuc3BlY2lmaWVkKQorICAgIHsKKyAgICAgICAgam9p
bmVkUXVhbGlmaWVyLmltYWdlSW50ZXJuYWxGb3JtYXQgPSByaWdodFF1YWxpZmllci5pbWFnZUlu
dGVybmFsRm9ybWF0OworICAgIH0KKworICAgIHJldHVybiBqb2luZWRRdWFsaWZpZXI7Cit9CisK
IHVuc2lnbmVkIGludCBUSW52YXJpYW50UXVhbGlmaWVyV3JhcHBlcjo6Z2V0UmFuaygpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIDB1OwpAQCAtNTQ4LDYgKzYzNCwxMSBAQCB1bnNpZ25lZCBpbnQgVFN0
b3JhZ2VRdWFsaWZpZXJXcmFwcGVyOjpnZXRSYW5rKCkgY29uc3QKICAgICB9CiB9CiAKK3Vuc2ln
bmVkIGludCBUTWVtb3J5UXVhbGlmaWVyV3JhcHBlcjo6Z2V0UmFuaygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIDR1OworfQorCiB1bnNpZ25lZCBpbnQgVFByZWNpc2lvblF1YWxpZmllcldyYXBwZXI6
OmdldFJhbmsoKSBjb25zdAogewogICAgIHJldHVybiA1dTsKQEAgLTU1NSw2ICs2NDYsNyBAQCB1
bnNpZ25lZCBpbnQgVFByZWNpc2lvblF1YWxpZmllcldyYXBwZXI6OmdldFJhbmsoKSBjb25zdAog
CiBUVHlwZVF1YWxpZmllcjo6VFR5cGVRdWFsaWZpZXIoVFF1YWxpZmllciBzY29wZSwgY29uc3Qg
VFNvdXJjZUxvYyAmbG9jKQogICAgIDogbGF5b3V0UXVhbGlmaWVyKFRMYXlvdXRRdWFsaWZpZXI6
OmNyZWF0ZSgpKSwKKyAgICAgIG1lbW9yeVF1YWxpZmllcihUTWVtb3J5UXVhbGlmaWVyOjpjcmVh
dGUoKSksCiAgICAgICBwcmVjaXNpb24oRWJwVW5kZWZpbmVkKSwKICAgICAgIHF1YWxpZmllcihz
Y29wZSksCiAgICAgICBpbnZhcmlhbnQoZmFsc2UpLApAQCAtNTgyLDE1ICs2NzQsMTMgQEAgYm9v
bCBUVHlwZVF1YWxpZmllckJ1aWxkZXI6OmNoZWNrU2VxdWVuY2VJc1ZhbGlkKFREaWFnbm9zdGlj
cyAqZGlhZ25vc3RpY3MpIGNvbnMKICAgICBzdGQ6OnN0cmluZyBlcnJvck1lc3NhZ2U7CiAgICAg
aWYgKEhhc1JlcGVhdGluZ1F1YWxpZmllcnMobVF1YWxpZmllcnMsIGFyZVF1YWxpZmllckNoZWNr
c1JlbGF4ZWQsICZlcnJvck1lc3NhZ2UpKQogICAgIHsKLSAgICAgICAgZGlhZ25vc3RpY3MtPmVy
cm9yKG1RdWFsaWZpZXJzWzBdLT5nZXRMaW5lKCksICJxdWFsaWZpZXIgc2VxdWVuY2UiLCBlcnJv
ck1lc3NhZ2UuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIiKTsKKyAgICAg
ICAgZGlhZ25vc3RpY3MtPmVycm9yKG1RdWFsaWZpZXJzWzBdLT5nZXRMaW5lKCksIGVycm9yTWVz
c2FnZS5jX3N0cigpLCAicXVhbGlmaWVyIHNlcXVlbmNlIik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKICAgICBpZiAoIWFyZVF1YWxpZmllckNoZWNrc1JlbGF4ZWQgJiYgIUFyZVF1
YWxpZmllcnNJbk9yZGVyKG1RdWFsaWZpZXJzLCAmZXJyb3JNZXNzYWdlKSkKICAgICB7Ci0gICAg
ICAgIGRpYWdub3N0aWNzLT5lcnJvcihtUXVhbGlmaWVyc1swXS0+Z2V0TGluZSgpLCAicXVhbGlm
aWVyIHNlcXVlbmNlIiwgZXJyb3JNZXNzYWdlLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAiIik7CisgICAgICAgIGRpYWdub3N0aWNzLT5lcnJvcihtUXVhbGlmaWVyc1swXS0+
Z2V0TGluZSgpLCBlcnJvck1lc3NhZ2UuY19zdHIoKSwgInF1YWxpZmllciBzZXF1ZW5jZSIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC02NDQsMyArNzM0LDUgQEAgVFR5cGVR
dWFsaWZpZXIgVFR5cGVRdWFsaWZpZXJCdWlsZGVyOjpnZXRWYXJpYWJsZVR5cGVRdWFsaWZpZXIo
VERpYWdub3N0aWNzICpkaWEKICAgICB9CiAgICAgcmV0dXJuIEdldFZhcmlhYmxlVHlwZVF1YWxp
ZmllckZyb21Tb3J0ZWRTZXF1ZW5jZShtUXVhbGlmaWVycywgZGlhZ25vc3RpY3MpOwogfQorCit9
ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1F1YWxpZmllclR5cGVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9RdWFsaWZpZXJUeXBlcy5oCmluZGV4IDBi
Y2MzOWExNmU0MzcwZGE5OTg0YTc3OWY0YmRhODA4YzNkODdkMjIuLjEwYmRlZWQ4OWRiZDY4NTYz
MWQyOWFlMTQ0NmVmYTdkZWQ4NzA1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1F1YWxpZmllclR5cGVzLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUXVhbGlmaWVyVHlwZXMu
aApAQCAtMTEsMTUgKzExLDE0IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9CYXNl
VHlwZXMuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1R5cGVzLmgiCiAKLWNsYXNz
IFREaWFnbm9zdGljczsKLQogbmFtZXNwYWNlIHNoCiB7CitjbGFzcyBURGlhZ25vc3RpY3M7CisK
IFRMYXlvdXRRdWFsaWZpZXIgSm9pbkxheW91dFF1YWxpZmllcnMoVExheW91dFF1YWxpZmllciBs
ZWZ0UXVhbGlmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUTGF5
b3V0UXVhbGlmaWVyIHJpZ2h0UXVhbGlmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZyaWdodFF1YWxpZmllckxvY2F0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWdub3N0
aWNzKTsKLX0gIC8vIG5hbWVzcGFjZSBzaAogCiBlbnVtIFRRdWFsaWZpZXJUeXBlCiB7CkBAIC0y
Nyw3ICsyNiw4IEBAIGVudW0gVFF1YWxpZmllclR5cGUKICAgICBRdEludGVycG9sYXRpb24sCiAg
ICAgUXRMYXlvdXQsCiAgICAgUXRTdG9yYWdlLAotICAgIFF0UHJlY2lzaW9uCisgICAgUXRQcmVj
aXNpb24sCisgICAgUXRNZW1vcnkKIH07CiAKIGNsYXNzIFRRdWFsaWZpZXJXcmFwcGVyQmFzZSA6
IGFuZ2xlOjpOb25Db3B5YWJsZQpAQCAtNjUsNyArNjUsNyBAQCBjbGFzcyBUSW50ZXJwb2xhdGlv
blF1YWxpZmllcldyYXBwZXIgZmluYWwgOiBwdWJsaWMgVFF1YWxpZmllcldyYXBwZXJCYXNlCiAg
ICAgflRJbnRlcnBvbGF0aW9uUXVhbGlmaWVyV3JhcHBlcigpIHt9CiAKICAgICBUUXVhbGlmaWVy
VHlwZSBnZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gUXRJbnRlcnBvbGF0aW9uOyB9Ci0gICAgVFN0
cmluZyBnZXRRdWFsaWZpZXJTdHJpbmcoKSBjb25zdCB7IHJldHVybiA6OmdldFF1YWxpZmllclN0
cmluZyhtSW50ZXJwb2xhdGlvblF1YWxpZmllcik7IH0KKyAgICBUU3RyaW5nIGdldFF1YWxpZmll
clN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHNoOjpnZXRRdWFsaWZpZXJTdHJpbmcobUludGVycG9s
YXRpb25RdWFsaWZpZXIpOyB9CiAgICAgVFF1YWxpZmllciBnZXRRdWFsaWZpZXIoKSBjb25zdCB7
IHJldHVybiBtSW50ZXJwb2xhdGlvblF1YWxpZmllcjsgfQogICAgIHVuc2lnbmVkIGludCBnZXRS
YW5rKCkgY29uc3Q7CiAKQEAgLTEwMSw3ICsxMDEsNyBAQCBjbGFzcyBUU3RvcmFnZVF1YWxpZmll
cldyYXBwZXIgZmluYWwgOiBwdWJsaWMgVFF1YWxpZmllcldyYXBwZXJCYXNlCiAgICAgflRTdG9y
YWdlUXVhbGlmaWVyV3JhcHBlcigpIHt9CiAKICAgICBUUXVhbGlmaWVyVHlwZSBnZXRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gUXRTdG9yYWdlOyB9Ci0gICAgVFN0cmluZyBnZXRRdWFsaWZpZXJTdHJp
bmcoKSBjb25zdCB7IHJldHVybiA6OmdldFF1YWxpZmllclN0cmluZyhtU3RvcmFnZVF1YWxpZmll
cik7IH0KKyAgICBUU3RyaW5nIGdldFF1YWxpZmllclN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHNo
OjpnZXRRdWFsaWZpZXJTdHJpbmcobVN0b3JhZ2VRdWFsaWZpZXIpOyB9CiAgICAgVFF1YWxpZmll
ciBnZXRRdWFsaWZpZXIoKSBjb25zdCB7IHJldHVybiBtU3RvcmFnZVF1YWxpZmllcjsgfQogICAg
IHVuc2lnbmVkIGludCBnZXRSYW5rKCkgY29uc3Q7CiAKQEAgLTExOSw3ICsxMTksNyBAQCBjbGFz
cyBUUHJlY2lzaW9uUXVhbGlmaWVyV3JhcHBlciBmaW5hbCA6IHB1YmxpYyBUUXVhbGlmaWVyV3Jh
cHBlckJhc2UKICAgICB+VFByZWNpc2lvblF1YWxpZmllcldyYXBwZXIoKSB7fQogCiAgICAgVFF1
YWxpZmllclR5cGUgZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFF0UHJlY2lzaW9uOyB9Ci0gICAg
VFN0cmluZyBnZXRRdWFsaWZpZXJTdHJpbmcoKSBjb25zdCB7IHJldHVybiA6OmdldFByZWNpc2lv
blN0cmluZyhtUHJlY2lzaW9uUXVhbGlmaWVyKTsgfQorICAgIFRTdHJpbmcgZ2V0UXVhbGlmaWVy
U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gc2g6OmdldFByZWNpc2lvblN0cmluZyhtUHJlY2lzaW9u
UXVhbGlmaWVyKTsgfQogICAgIFRQcmVjaXNpb24gZ2V0UXVhbGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbVByZWNpc2lvblF1YWxpZmllcjsgfQogICAgIHVuc2lnbmVkIGludCBnZXRSYW5rKCkgY29u
c3Q7CiAKQEAgLTEyNyw2ICsxMjcsMjQgQEAgY2xhc3MgVFByZWNpc2lvblF1YWxpZmllcldyYXBw
ZXIgZmluYWwgOiBwdWJsaWMgVFF1YWxpZmllcldyYXBwZXJCYXNlCiAgICAgVFByZWNpc2lvbiBt
UHJlY2lzaW9uUXVhbGlmaWVyOwogfTsKIAorY2xhc3MgVE1lbW9yeVF1YWxpZmllcldyYXBwZXIg
ZmluYWwgOiBwdWJsaWMgVFF1YWxpZmllcldyYXBwZXJCYXNlCit7CisgIHB1YmxpYzoKKyAgICBU
TWVtb3J5UXVhbGlmaWVyV3JhcHBlcihUUXVhbGlmaWVyIG1lbW9yeVF1YWxpZmllciwgY29uc3Qg
VFNvdXJjZUxvYyAmbGluZSkKKyAgICAgICAgOiBUUXVhbGlmaWVyV3JhcHBlckJhc2UobGluZSks
IG1NZW1vcnlRdWFsaWZpZXIobWVtb3J5UXVhbGlmaWVyKQorICAgIHsKKyAgICB9CisgICAgflRN
ZW1vcnlRdWFsaWZpZXJXcmFwcGVyKCkge30KKworICAgIFRRdWFsaWZpZXJUeXBlIGdldFR5cGUo
KSBjb25zdCB7IHJldHVybiBRdE1lbW9yeTsgfQorICAgIFRTdHJpbmcgZ2V0UXVhbGlmaWVyU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gc2g6OmdldFF1YWxpZmllclN0cmluZyhtTWVtb3J5UXVhbGlm
aWVyKTsgfQorICAgIFRRdWFsaWZpZXIgZ2V0UXVhbGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbU1l
bW9yeVF1YWxpZmllcjsgfQorICAgIHVuc2lnbmVkIGludCBnZXRSYW5rKCkgY29uc3Q7CisKKyAg
cHJpdmF0ZToKKyAgICBUUXVhbGlmaWVyIG1NZW1vcnlRdWFsaWZpZXI7Cit9OworCiAvLyBUVHlw
ZVF1YWxpZmllciB0aWdodGx5IGNvdmVycyB0eXBlX3F1YWxpZmllciBmcm9tIHRoZSBncmFtbWFy
CiBzdHJ1Y3QgVFR5cGVRdWFsaWZpZXIKIHsKQEAgLTEzNCw2ICsxNTIsNyBAQCBzdHJ1Y3QgVFR5
cGVRdWFsaWZpZXIKICAgICBUVHlwZVF1YWxpZmllcihUUXVhbGlmaWVyIHNjb3BlLCBjb25zdCBU
U291cmNlTG9jICZsb2MpOwogCiAgICAgVExheW91dFF1YWxpZmllciBsYXlvdXRRdWFsaWZpZXI7
CisgICAgVE1lbW9yeVF1YWxpZmllciBtZW1vcnlRdWFsaWZpZXI7CiAgICAgVFByZWNpc2lvbiBw
cmVjaXNpb247CiAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7CiAgICAgYm9vbCBpbnZhcmlhbnQ7
CkBAIC0xNjcsNCArMTg2LDYgQEAgY2xhc3MgVFR5cGVRdWFsaWZpZXJCdWlsZGVyIDogYW5nbGU6
Ok5vbkNvcHlhYmxlCiAgICAgaW50IG1TaGFkZXJWZXJzaW9uOwogfTsKIAorfSAgLy8gbmFtZXNw
YWNlIHNoCisKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9RVUFMSUZJRVJfVFlQRVNf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1JlY29yZENvbnN0YW50UHJlY2lzaW9uLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlY29yZENvbnN0YW50UHJlY2lzaW9uLmNwcApp
bmRleCA2ZWNhMjI5ZDg3ZjFmYzE5NzIyNDk2ZTFkN2Y0NGZiYmQ4NTI2ZGQyLi41MTA2ZjllZTM1
YmU3NDMxZGNlZWI3ODVhZDI3MWQ2ZGRmOWE3N2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZWNvcmRDb25zdGFudFByZWNpc2lv
bi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24uY3BwCkBAIC0zLDE0ICszLDE1IEBACiAvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KLS8vIER1cmluZyBw
YXJzaW5nLCBhbGwgY29uc3RhbnQgZXhwcmVzc2lvbnMgYXJlIGZvbGRlZCB0byBjb25zdGFudCB1
bmlvbiBub2Rlcy4gVGhlIGV4cHJlc3Npb25zIHRoYXQgaGF2ZSBiZWVuCi0vLyBmb2xkZWQgbWF5
IGhhdmUgaGFkIHByZWNpc2lvbiBxdWFsaWZpZXJzLCB3aGljaCBzaG91bGQgYWZmZWN0IHRoZSBw
cmVjaXNpb24gb2YgdGhlIGNvbnN1bWluZyBvcGVyYXRpb24uCi0vLyBJZiB0aGUgZm9sZGVkIGNv
bnN0YW50IHVuaW9uIG5vZGVzIGFyZSB3cml0dGVuIHRvIG91dHB1dCBhcyBzdWNoIHRoZXkgd29u
J3QgaGF2ZSBhbnkgcHJlY2lzaW9uIHF1YWxpZmllcnMsCi0vLyBhbmQgdGhlaXIgZWZmZWN0IG9u
IHRoZSBwcmVjaXNpb24gb2YgdGhlIGNvbnN1bWluZyBvcGVyYXRpb24gaXMgbG9zdC4KKy8vIER1
cmluZyBwYXJzaW5nLCBhbGwgY29uc3RhbnQgZXhwcmVzc2lvbnMgYXJlIGZvbGRlZCB0byBjb25z
dGFudCB1bmlvbiBub2Rlcy4gVGhlIGV4cHJlc3Npb25zIHRoYXQKKy8vIGhhdmUgYmVlbiBmb2xk
ZWQgbWF5IGhhdmUgaGFkIHByZWNpc2lvbiBxdWFsaWZpZXJzLCB3aGljaCBzaG91bGQgYWZmZWN0
IHRoZSBwcmVjaXNpb24gb2YgdGhlCisvLyBjb25zdW1pbmcgb3BlcmF0aW9uLiBJZiB0aGUgZm9s
ZGVkIGNvbnN0YW50IHVuaW9uIG5vZGVzIGFyZSB3cml0dGVuIHRvIG91dHB1dCBhcyBzdWNoIHRo
ZXkgd29uJ3QKKy8vIGhhdmUgYW55IHByZWNpc2lvbiBxdWFsaWZpZXJzLCBhbmQgdGhlaXIgZWZm
ZWN0IG9uIHRoZSBwcmVjaXNpb24gb2YgdGhlIGNvbnN1bWluZyBvcGVyYXRpb24gaXMKKy8vIGxv
c3QuCiAvLwotLy8gUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24gaXMgYW4gQVNUIHRyYXZlcnNlciB0
aGF0IGluc3BlY3RzIHRoZSBwcmVjaXNpb24gcXVhbGlmaWVycyBvZiBjb25zdGFudHMgYW5kIGhv
aXN0cwotLy8gdGhlIGNvbnN0YW50cyBvdXRzaWRlIHRoZSBjb250YWluaW5nIGV4cHJlc3Npb24g
YXMgcHJlY2lzaW9uIHF1YWxpZmllZCBuYW1lZCB2YXJpYWJsZXMgaW4gY2FzZSB0aGF0IGlzCi0v
LyByZXF1aXJlZCBmb3IgY29ycmVjdCBwcmVjaXNpb24gcHJvcGFnYXRpb24uCisvLyBSZWNvcmRD
b25zdGFudFByZWNpc2lvbiBpcyBhbiBBU1QgdHJhdmVyc2VyIHRoYXQgaW5zcGVjdHMgdGhlIHBy
ZWNpc2lvbiBxdWFsaWZpZXJzIG9mIGNvbnN0YW50cworLy8gYW5kIGhvaXN0cyB0aGUgY29uc3Rh
bnRzIG91dHNpZGUgdGhlIGNvbnRhaW5pbmcgZXhwcmVzc2lvbiBhcyBwcmVjaXNpb24gcXVhbGlm
aWVkIG5hbWVkIHZhcmlhYmxlcworLy8gaW4gY2FzZSB0aGF0IGlzIHJlcXVpcmVkIGZvciBjb3Jy
ZWN0IHByZWNpc2lvbiBwcm9wYWdhdGlvbi4KIC8vCiAKICNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL1JlY29yZENvbnN0YW50UHJlY2lzaW9uLmgiCkBAIC0xOCw2ICsxOSw5IEBACiAjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbmZvU2luay5oIgogI2luY2x1ZGUgImNvbXBpbGVy
L3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogbmFtZXNwYWNl
CiB7CiAKQEAgLTM4LDggKzQyLDcgQEAgY2xhc3MgUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25UcmF2
ZXJzZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogfTsKIAogUmVjb3JkQ29uc3RhbnRQcmVj
aXNpb25UcmF2ZXJzZXI6OlJlY29yZENvbnN0YW50UHJlY2lzaW9uVHJhdmVyc2VyKCkKLSAgICA6
IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIHRydWUpLAotICAgICAgbUZvdW5kSGlnaGVy
UHJlY2lzaW9uQ29uc3RhbnQoZmFsc2UpCisgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZh
bHNlLCB0cnVlKSwgbUZvdW5kSGlnaGVyUHJlY2lzaW9uQ29uc3RhbnQoZmFsc2UpCiB7CiB9CiAK
QEAgLTU3LDE1ICs2MCwxNSBAQCBib29sIFJlY29yZENvbnN0YW50UHJlY2lzaW9uVHJhdmVyc2Vy
OjpvcGVyYW5kQWZmZWN0c1BhcmVudE9wZXJhdGlvblByZWNpc2lvbihUSQogICAgICAgICAvLyBp
dHMgcHJlY2lzaW9uIGhhcyBubyBlZmZlY3QuCiAgICAgICAgIHN3aXRjaCAocGFyZW50QXNCaW5h
cnktPmdldE9wKCkpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIEVPcEluaXRpYWxpemU6Ci0g
ICAgICAgICAgY2FzZSBFT3BBc3NpZ246Ci0gICAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdDoK
LSAgICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0U3RydWN0OgotICAgICAgICAgIGNhc2UgRU9w
SW5kZXhEaXJlY3RJbnRlcmZhY2VCbG9jazoKLSAgICAgICAgICBjYXNlIEVPcEluZGV4SW5kaXJl
Y3Q6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFT3BJbml0aWFsaXplOgorICAgICAgICAg
ICAgY2FzZSBFT3BBc3NpZ246CisgICAgICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0OgorICAg
ICAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdFN0cnVjdDoKKyAgICAgICAgICAgIGNhc2UgRU9w
SW5kZXhEaXJlY3RJbnRlcmZhY2VCbG9jazoKKyAgICAgICAgICAgIGNhc2UgRU9wSW5kZXhJbmRp
cmVjdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgVEludGVybVR5
cGVkICpvdGhlck9wZXJhbmQgPSBwYXJlbnRBc0JpbmFyeS0+Z2V0UmlnaHQoKTsKQEAgLTczLDkg
Kzc2LDEwIEBAIGJvb2wgUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25UcmF2ZXJzZXI6Om9wZXJhbmRB
ZmZlY3RzUGFyZW50T3BlcmF0aW9uUHJlY2lzaW9uKFRJCiAgICAgICAgIHsKICAgICAgICAgICAg
IG90aGVyT3BlcmFuZCA9IHBhcmVudEFzQmluYXJ5LT5nZXRMZWZ0KCk7CiAgICAgICAgIH0KLSAg
ICAgICAgLy8gSWYgdGhlIHByZWNpc2lvbiBvZiB0aGUgb3RoZXIgY2hpbGQgaXMgYXQgbGVhc3Qg
YXMgaGlnaCBhcyB0aGUgcHJlY2lzaW9uIG9mIHRoZSBjb25zdGFudCwgdGhlIHByZWNpc2lvbiBv
ZgotICAgICAgICAvLyB0aGUgY29uc3RhbnQgaGFzIG5vIGVmZmVjdC4KLSAgICAgICAgaWYgKG90
aGVyT3BlcmFuZC0+Z2V0QXNDb25zdGFudFVuaW9uKCkgPT0gbnVsbHB0ciAmJiBvdGhlck9wZXJh
bmQtPmdldFByZWNpc2lvbigpID49IG9wZXJhbmQtPmdldFByZWNpc2lvbigpKQorICAgICAgICAv
LyBJZiB0aGUgcHJlY2lzaW9uIG9mIHRoZSBvdGhlciBjaGlsZCBpcyBhdCBsZWFzdCBhcyBoaWdo
IGFzIHRoZSBwcmVjaXNpb24gb2YgdGhlIGNvbnN0YW50LAorICAgICAgICAvLyB0aGUgcHJlY2lz
aW9uIG9mIHRoZSBjb25zdGFudCBoYXMgbm8gZWZmZWN0LgorICAgICAgICBpZiAob3RoZXJPcGVy
YW5kLT5nZXRBc0NvbnN0YW50VW5pb24oKSA9PSBudWxscHRyICYmCisgICAgICAgICAgICBvdGhl
ck9wZXJhbmQtPmdldFByZWNpc2lvbigpID49IG9wZXJhbmQtPmdldFByZWNpc2lvbigpKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTk3LDE0ICsx
MDEsMTUgQEAgYm9vbCBSZWNvcmRDb25zdGFudFByZWNpc2lvblRyYXZlcnNlcjo6b3BlcmFuZEFm
ZmVjdHNQYXJlbnRPcGVyYXRpb25QcmVjaXNpb24oVEkKICAgICAgICAgewogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIC8vIElmIHRoZSBwcmVjaXNpb24gb2Yg
b3BlcmFuZHMgZG9lcyBhZmZlY3QgdGhlIHJlc3VsdCwgYnV0IHRoZSBwcmVjaXNpb24gb2YgYW55
IG9mIHRoZSBvdGhlciBjaGlsZHJlbgotICAgICAgICAvLyBoYXMgYSBwcmVjaXNpb24gdGhhdCdz
IGF0IGxlYXN0IGFzIGhpZ2ggYXMgdGhlIHByZWNpc2lvbiBvZiB0aGUgY29uc3RhbnQsIHRoZSBw
cmVjaXNpb24gb2YgdGhlIGNvbnN0YW50Ci0gICAgICAgIC8vIGhhcyBubyBlZmZlY3QuCisgICAg
ICAgIC8vIElmIHRoZSBwcmVjaXNpb24gb2Ygb3BlcmFuZHMgZG9lcyBhZmZlY3QgdGhlIHJlc3Vs
dCwgYnV0IHRoZSBwcmVjaXNpb24gb2YgYW55IG9mIHRoZQorICAgICAgICAvLyBvdGhlciBjaGls
ZHJlbiBoYXMgYSBwcmVjaXNpb24gdGhhdCdzIGF0IGxlYXN0IGFzIGhpZ2ggYXMgdGhlIHByZWNp
c2lvbiBvZiB0aGUgY29uc3RhbnQsCisgICAgICAgIC8vIHRoZSBwcmVjaXNpb24gb2YgdGhlIGNv
bnN0YW50IGhhcyBubyBlZmZlY3QuCiAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqcGFyYW1ldGVy
cyA9IHBhcmVudEFzQWdncmVnYXRlLT5nZXRTZXF1ZW5jZSgpOwogICAgICAgICBmb3IgKFRJbnRl
cm1Ob2RlICpwYXJhbWV0ZXIgOiAqcGFyYW1ldGVycykKICAgICAgICAgewogICAgICAgICAgICAg
Y29uc3QgVEludGVybVR5cGVkICp0eXBlZFBhcmFtZXRlciA9IHBhcmFtZXRlci0+Z2V0QXNUeXBl
ZCgpOwotICAgICAgICAgICAgaWYgKHBhcmFtZXRlciAhPSBvcGVyYW5kICYmIHR5cGVkUGFyYW1l
dGVyICE9IG51bGxwdHIgJiYgcGFyYW1ldGVyLT5nZXRBc0NvbnN0YW50VW5pb24oKSA9PSBudWxs
cHRyICYmCisgICAgICAgICAgICBpZiAocGFyYW1ldGVyICE9IG9wZXJhbmQgJiYgdHlwZWRQYXJh
bWV0ZXIgIT0gbnVsbHB0ciAmJgorICAgICAgICAgICAgICAgIHBhcmFtZXRlci0+Z2V0QXNDb25z
dGFudFVuaW9uKCkgPT0gbnVsbHB0ciAmJgogICAgICAgICAgICAgICAgIHR5cGVkUGFyYW1ldGVy
LT5nZXRQcmVjaXNpb24oKSA+PSBvcGVyYW5kLT5nZXRQcmVjaXNpb24oKSkKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTksMTcgKzEyNCwxOCBAQCB2
b2lkIFJlY29yZENvbnN0YW50UHJlY2lzaW9uVHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24o
VEludGVybUNvbnN0YW50VW5pb24gKgogICAgIGlmIChtRm91bmRIaWdoZXJQcmVjaXNpb25Db25z
dGFudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gSWYgdGhlIGNvbnN0YW50IGhhcyBsb3dw
IG9yIHVuZGVmaW5lZCBwcmVjaXNpb24sIGl0IGNhbid0IGluY3JlYXNlIHRoZSBwcmVjaXNpb24g
b2YgY29uc3VtaW5nIG9wZXJhdGlvbnMuCisgICAgLy8gSWYgdGhlIGNvbnN0YW50IGhhcyBsb3dw
IG9yIHVuZGVmaW5lZCBwcmVjaXNpb24sIGl0IGNhbid0IGluY3JlYXNlIHRoZSBwcmVjaXNpb24g
b2YgY29uc3VtaW5nCisgICAgLy8gb3BlcmF0aW9ucy4KICAgICBpZiAobm9kZS0+Z2V0UHJlY2lz
aW9uKCkgPCBFYnBNZWRpdW0pCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEl0J3MgcG9zc2li
bGUgdGhlIG5vZGUgaGFzIG5vIGVmZmVjdCBvbiB0aGUgcHJlY2lzaW9uIG9mIHRoZSBjb25zdW1p
bmcgZXhwcmVzc2lvbiwgZGVwZW5kaW5nIG9uIHRoZQotICAgIC8vIGNvbnN1bWluZyBleHByZXNz
aW9uLCBhbmQgdGhlIHByZWNpc2lvbiBvZiB0aGUgb3RoZXIgcGFyYW1ldGVycyBvZiB0aGUgZXhw
cmVzc2lvbi4KKyAgICAvLyBJdCdzIHBvc3NpYmxlIHRoZSBub2RlIGhhcyBubyBlZmZlY3Qgb24g
dGhlIHByZWNpc2lvbiBvZiB0aGUgY29uc3VtaW5nIGV4cHJlc3Npb24sIGRlcGVuZGluZworICAg
IC8vIG9uIHRoZSBjb25zdW1pbmcgZXhwcmVzc2lvbiwgYW5kIHRoZSBwcmVjaXNpb24gb2YgdGhl
IG90aGVyIHBhcmFtZXRlcnMgb2YgdGhlIGV4cHJlc3Npb24uCiAgICAgaWYgKCFvcGVyYW5kQWZm
ZWN0c1BhcmVudE9wZXJhdGlvblByZWNpc2lvbihub2RlKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgLy8gTWFrZSB0aGUgY29uc3RhbnQgYSBwcmVjaXNpb24tcXVhbGlmaWVkIG5hbWVkIHZhcmlh
YmxlIHRvIG1ha2Ugc3VyZSBpdCBhZmZlY3RzIHRoZSBwcmVjaXNpb24gb2YgdGhlIGNvbnN1bWlu
ZwotICAgIC8vIGV4cHJlc3Npb24uCisgICAgLy8gTWFrZSB0aGUgY29uc3RhbnQgYSBwcmVjaXNp
b24tcXVhbGlmaWVkIG5hbWVkIHZhcmlhYmxlIHRvIG1ha2Ugc3VyZSBpdCBhZmZlY3RzIHRoZSBw
cmVjaXNpb24KKyAgICAvLyBvZiB0aGUgY29uc3VtaW5nIGV4cHJlc3Npb24uCiAgICAgVEludGVy
bVNlcXVlbmNlIGluc2VydGlvbnM7CiAgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soY3JlYXRlVGVt
cEluaXREZWNsYXJhdGlvbihub2RlLCBFdnFDb25zdCkpOwogICAgIGluc2VydFN0YXRlbWVudHNJ
blBhcmVudEJsb2NrKGluc2VydGlvbnMpOwpAQCAtMTQzLDcgKzE0OSw3IEBAIHZvaWQgUmVjb3Jk
Q29uc3RhbnRQcmVjaXNpb25UcmF2ZXJzZXI6Om5leHRJdGVyYXRpb24oKQogICAgIG1Gb3VuZEhp
Z2hlclByZWNpc2lvbkNvbnN0YW50ID0gZmFsc2U7CiB9CiAKLX0gLy8gbmFtZXNwYWNlCit9ICAv
LyBuYW1lc3BhY2UKIAogdm9pZCBSZWNvcmRDb25zdGFudFByZWNpc2lvbihUSW50ZXJtTm9kZSAq
cm9vdCwgdW5zaWduZWQgaW50ICp0ZW1wb3JhcnlJbmRleCkKIHsKQEAgLTE1Nyw2ICsxNjMsNyBA
QCB2b2lkIFJlY29yZENvbnN0YW50UHJlY2lzaW9uKFRJbnRlcm1Ob2RlICpyb290LCB1bnNpZ25l
ZCBpbnQgKnRlbXBvcmFyeUluZGV4KQogICAgICAgICByb290LT50cmF2ZXJzZSgmdHJhdmVyc2Vy
KTsKICAgICAgICAgaWYgKHRyYXZlcnNlci5mb3VuZEhpZ2hlclByZWNpc2lvbkNvbnN0YW50KCkp
CiAgICAgICAgICAgICB0cmF2ZXJzZXIudXBkYXRlVHJlZSgpOwotICAgIH0KLSAgICB3aGlsZSAo
dHJhdmVyc2VyLmZvdW5kSGlnaGVyUHJlY2lzaW9uQ29uc3RhbnQoKSk7CisgICAgfSB3aGlsZSAo
dHJhdmVyc2VyLmZvdW5kSGlnaGVyUHJlY2lzaW9uQ29uc3RhbnQoKSk7CiB9CisKK30gIC8vIG5h
bWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24uaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlY29yZENvbnN0YW50UHJlY2lzaW9u
LmgKaW5kZXggMmNkNDAxYjQxODE3ZGE1ZmUzMWZmNDhjM2M5ZGU4MzU0NWZmMDcwOC4uY2JlOTJk
NGJhZmYxODVhNTg2NGUxZTQzMDYyMjE1Nzk3NjgwNjE0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVjb3JkQ29uc3RhbnRQcmVj
aXNpb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9SZWNvcmRDb25zdGFudFByZWNpc2lvbi5oCkBAIC0zLDIxICszLDI1IEBACiAvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KLS8vIER1cmluZyBw
YXJzaW5nLCBhbGwgY29uc3RhbnQgZXhwcmVzc2lvbnMgYXJlIGZvbGRlZCB0byBjb25zdGFudCB1
bmlvbiBub2Rlcy4gVGhlIGV4cHJlc3Npb25zIHRoYXQgaGF2ZSBiZWVuCi0vLyBmb2xkZWQgbWF5
IGhhdmUgaGFkIHByZWNpc2lvbiBxdWFsaWZpZXJzLCB3aGljaCBzaG91bGQgYWZmZWN0IHRoZSBw
cmVjaXNpb24gb2YgdGhlIGNvbnN1bWluZyBvcGVyYXRpb24uCi0vLyBJZiB0aGUgZm9sZGVkIGNv
bnN0YW50IHVuaW9uIG5vZGVzIGFyZSB3cml0dGVuIHRvIG91dHB1dCBhcyBzdWNoIHRoZXkgd29u
J3QgaGF2ZSBhbnkgcHJlY2lzaW9uIHF1YWxpZmllcnMsCi0vLyBhbmQgdGhlaXIgZWZmZWN0IG9u
IHRoZSBwcmVjaXNpb24gb2YgdGhlIGNvbnN1bWluZyBvcGVyYXRpb24gaXMgbG9zdC4KKy8vIER1
cmluZyBwYXJzaW5nLCBhbGwgY29uc3RhbnQgZXhwcmVzc2lvbnMgYXJlIGZvbGRlZCB0byBjb25z
dGFudCB1bmlvbiBub2Rlcy4gVGhlIGV4cHJlc3Npb25zIHRoYXQKKy8vIGhhdmUgYmVlbiBmb2xk
ZWQgbWF5IGhhdmUgaGFkIHByZWNpc2lvbiBxdWFsaWZpZXJzLCB3aGljaCBzaG91bGQgYWZmZWN0
IHRoZSBwcmVjaXNpb24gb2YgdGhlCisvLyBjb25zdW1pbmcgb3BlcmF0aW9uLiBJZiB0aGUgZm9s
ZGVkIGNvbnN0YW50IHVuaW9uIG5vZGVzIGFyZSB3cml0dGVuIHRvIG91dHB1dCBhcyBzdWNoIHRo
ZXkgd29uJ3QKKy8vIGhhdmUgYW55IHByZWNpc2lvbiBxdWFsaWZpZXJzLCBhbmQgdGhlaXIgZWZm
ZWN0IG9uIHRoZSBwcmVjaXNpb24gb2YgdGhlIGNvbnN1bWluZyBvcGVyYXRpb24gaXMKKy8vIGxv
c3QuCiAvLwotLy8gUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24gaXMgYW4gQVNUIHRyYXZlcnNlciB0
aGF0IGluc3BlY3RzIHRoZSBwcmVjaXNpb24gcXVhbGlmaWVycyBvZiBjb25zdGFudHMgYW5kIGhv
aXN0cwotLy8gdGhlIGNvbnN0YW50cyBvdXRzaWRlIHRoZSBjb250YWluaW5nIGV4cHJlc3Npb24g
YXMgcHJlY2lzaW9uIHF1YWxpZmllZCBuYW1lZCB2YXJpYWJsZXMgaW4gY2FzZSB0aGF0IGlzCi0v
LyByZXF1aXJlZCBmb3IgY29ycmVjdCBwcmVjaXNpb24gcHJvcGFnYXRpb24uCisvLyBSZWNvcmRD
b25zdGFudFByZWNpc2lvbiBpcyBhbiBBU1QgdHJhdmVyc2VyIHRoYXQgaW5zcGVjdHMgdGhlIHBy
ZWNpc2lvbiBxdWFsaWZpZXJzIG9mIGNvbnN0YW50cworLy8gYW5kIGhvaXN0cyB0aGUgY29uc3Rh
bnRzIG91dHNpZGUgdGhlIGNvbnRhaW5pbmcgZXhwcmVzc2lvbiBhcyBwcmVjaXNpb24gcXVhbGlm
aWVkIG5hbWVkIHZhcmlhYmxlcworLy8gaW4gY2FzZSB0aGF0IGlzIHJlcXVpcmVkIGZvciBjb3Jy
ZWN0IHByZWNpc2lvbiBwcm9wYWdhdGlvbi4KIC8vCiAKICNpZm5kZWYgQ09NUElMRVJfVFJBTlNM
QVRPUl9SRUNPUkRDT05TVEFOVFBSRUNJU0lPTl9IXwogI2RlZmluZSBDT01QSUxFUl9UUkFOU0xB
VE9SX1JFQ09SRENPTlNUQU5UUFJFQ0lTSU9OX0hfCiAKK25hbWVzcGFjZSBzaAorewogY2xhc3Mg
VEludGVybU5vZGU7CiAKIHZvaWQgUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24oVEludGVybU5vZGUg
KnJvb3QsIHVuc2lnbmVkIGludCAqdGVtcG9yYXJ5SW5kZXgpOworfSAgLy8gbmFtZXNwYWNlIHNo
CiAKLSNlbmRpZiAgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUkVDT1JEQ09OU1RBTlRQUkVDSVNJ
T05fSF8KKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9SRUNPUkRDT05TVEFOVFBSRUNJ
U0lPTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvUmVnZW5lcmF0ZVN0cnVjdE5hbWVzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlZ2VuZXJhdGVTdHJ1Y3ROYW1lcy5jcHAK
aW5kZXggMWE3ZDhhYWY4ZTA5NmFiNmMxZTI0ZDk1ZDAxNmIzNDM4MjRkZDIxNS4uMTYxMzAwODA0
YTBkMzA0OWJmNDg3OTUwODZlNzg2NGQ2MjZmODkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVnZW5lcmF0ZVN0cnVjdE5hbWVz
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9SZWdlbmVyYXRlU3RydWN0TmFtZXMuY3BwCkBAIC03LDYgKzcsOSBAQAogI2luY2x1ZGUgImNv
bW1vbi9kZWJ1Zy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUmVnZW5lcmF0ZVN0
cnVjdE5hbWVzLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiB2b2lkIFJlZ2VuZXJhdGVTdHJ1Y3RO
YW1lczo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqc3ltYm9sKQogewogICAgIEFTU0VSVChz
eW1ib2wpOwpAQCAtNTMsNyArNTYsNyBAQCB2b2lkIFJlZ2VuZXJhdGVTdHJ1Y3ROYW1lczo6dmlz
aXRTeW1ib2woVEludGVybVN5bWJvbCAqc3ltYm9sKQogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIHN0ZDo6c3RyaW5nIGlkID0gU3RyKHVuaXF1ZUlkKTsKLSAgICBUU3RyaW5nIHRtcCA9IGtQ
cmVmaXggKyBUU3RyaW5nKGlkLmNfc3RyKCkpOworICAgIFRTdHJpbmcgdG1wICAgID0ga1ByZWZp
eCArIFRTdHJpbmcoaWQuY19zdHIoKSk7CiAgICAgdG1wICs9ICJfIiArIHVzZXJUeXBlLT5uYW1l
KCk7CiAgICAgdXNlclR5cGUtPnNldE5hbWUodG1wKTsKIH0KQEAgLTY5LDMgKzcyLDUgQEAgYm9v
bCBSZWdlbmVyYXRlU3RydWN0TmFtZXM6OnZpc2l0QmxvY2soVmlzaXQsIFRJbnRlcm1CbG9jayAq
YmxvY2spCiAgICAgLS1tU2NvcGVEZXB0aDsKICAgICByZXR1cm4gZmFsc2U7CiB9CisKK30gIC8v
IG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvUmVnZW5lcmF0ZVN0cnVjdE5hbWVzLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZWdlbmVyYXRlU3RydWN0TmFtZXMu
aAppbmRleCBhOTEwMTM1MWVjMDg4NzZmNmI4YTVkODk5MTY4NTVhZDI2ODkwNGI0Li5lNGZjNjdl
NjUyNDkzN2YxNzk0YzVjOTkxM2FiNTczY2VjNzY2MDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZWdlbmVyYXRlU3RydWN0TmFt
ZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9SZWdlbmVyYXRlU3RydWN0TmFtZXMuaApAQCAtMTIsMTUgKzEyLDE5IEBACiAKICNpbmNsdWRl
IDxzZXQ+CiAKK25hbWVzcGFjZSBzaAoreworCiBjbGFzcyBSZWdlbmVyYXRlU3RydWN0TmFtZXMg
OiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogewogICBwdWJsaWM6Ci0gICAgUmVnZW5lcmF0ZVN0
cnVjdE5hbWVzKGNvbnN0IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uKQorICAgIFJlZ2VuZXJhdGVTdHJ1Y3ROYW1l
cyhjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLCBpbnQgc2hhZGVyVmVyc2lvbikKICAg
ICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksCiAgICAgICAgICAg
bVN5bWJvbFRhYmxlKHN5bWJvbFRhYmxlKSwKICAgICAgICAgICBtU2hhZGVyVmVyc2lvbihzaGFk
ZXJWZXJzaW9uKSwKLSAgICAgICAgICBtU2NvcGVEZXB0aCgwKSB7fQorICAgICAgICAgIG1TY29w
ZURlcHRoKDApCisgICAgeworICAgIH0KIAogICBwcm90ZWN0ZWQ6CiAgICAgdm9pZCB2aXNpdFN5
bWJvbChUSW50ZXJtU3ltYm9sICopIG92ZXJyaWRlOwpAQCAtMzgsNCArNDIsNiBAQCBjbGFzcyBS
ZWdlbmVyYXRlU3RydWN0TmFtZXMgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgIHN0ZDo6
c2V0PGludD4gbURlY2xhcmVkR2xvYmFsU3RydWN0czsKIH07CiAKK30gIC8vIG5hbWVzcGFjZSBz
aAorCiAjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUkVHRU5FUkFURVNUUlVDVE5BTUVT
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9SZW1vdmVEeW5hbWljSW5kZXhpbmcuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlRHluYW1pY0luZGV4aW5nLmNwcAppbmRl
eCA5OTRhZTMxM2E0MzhlYTdlOGJhMmFhNTI4NTRiMzJmMjAyMzc5Y2FiLi5hOGY2YjUxYzU0MDhi
ZGUzNzNhMGQyMjM3MGE1YjI2MGMzNGM2OTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVEeW5hbWljSW5kZXhpbmcuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jl
bW92ZUR5bmFtaWNJbmRleGluZy5jcHAKQEAgLTE0LDEwICsxNCwxMyBAQAogI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyLmgiCiAjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwog
bmFtZXNwYWNlCiB7CiAKLVROYW1lIEdldEluZGV4RnVuY3Rpb25OYW1lKGNvbnN0IFRUeXBlICZ0
eXBlLCBib29sIHdyaXRlKQorc3RkOjpzdHJpbmcgR2V0SW5kZXhGdW5jdGlvbk5hbWUoY29uc3Qg
VFR5cGUgJnR5cGUsIGJvb2wgd3JpdGUpCiB7CiAgICAgVEluZm9TaW5rQmFzZSBuYW1lU2luazsK
ICAgICBuYW1lU2luayA8PCAiZHluX2luZGV4XyI7CkBAIC01MCwxMCArNTMsNyBAQCBUTmFtZSBH
ZXRJbmRleEZ1bmN0aW9uTmFtZShjb25zdCBUVHlwZSAmdHlwZSwgYm9vbCB3cml0ZSkKICAgICAg
ICAgfQogICAgICAgICBuYW1lU2luayA8PCB0eXBlLmdldE5vbWluYWxTaXplKCk7CiAgICAgfQot
ICAgIFRTdHJpbmcgbmFtZVN0cmluZyA9IFRGdW5jdGlvbjo6bWFuZ2xlTmFtZShuYW1lU2luay5j
X3N0cigpKTsKLSAgICBUTmFtZSBuYW1lKG5hbWVTdHJpbmcpOwotICAgIG5hbWUuc2V0SW50ZXJu
YWwodHJ1ZSk7Ci0gICAgcmV0dXJuIG5hbWU7CisgICAgcmV0dXJuIG5hbWVTaW5rLnN0cigpOwog
fQogCiBUSW50ZXJtU3ltYm9sICpDcmVhdGVCYXNlU3ltYm9sKGNvbnN0IFRUeXBlICZ0eXBlLCBU
UXVhbGlmaWVyIHF1YWxpZmllcikKQEAgLTEwOCwxMSArMTA4LDkgQEAgVEludGVybVR5cGVkICpF
bnN1cmVTaWduZWRJbnQoVEludGVybVR5cGVkICpub2RlKQogICAgIGlmIChub2RlLT5nZXRCYXNp
Y1R5cGUoKSA9PSBFYnRJbnQpCiAgICAgICAgIHJldHVybiBub2RlOwogCi0gICAgVEludGVybUFn
Z3JlZ2F0ZSAqY29udmVydGVkTm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcENvbnN0cnVj
dEludCk7Ci0gICAgY29udmVydGVkTm9kZS0+c2V0VHlwZShUVHlwZShFYnRJbnQpKTsKLSAgICBj
b252ZXJ0ZWROb2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sobm9kZSk7Ci0gICAgY29udmVy
dGVkTm9kZS0+c2V0UHJlY2lzaW9uRnJvbUNoaWxkcmVuKCk7Ci0gICAgcmV0dXJuIGNvbnZlcnRl
ZE5vZGU7CisgICAgVEludGVybVNlcXVlbmNlICphcmd1bWVudHMgPSBuZXcgVEludGVybVNlcXVl
bmNlKCk7CisgICAgYXJndW1lbnRzLT5wdXNoX2JhY2sobm9kZSk7CisgICAgcmV0dXJuIFRJbnRl
cm1BZ2dyZWdhdGU6OkNyZWF0ZUNvbnN0cnVjdG9yKFRUeXBlKEVidEludCksIEVPcENvbnN0cnVj
dEludCwgYXJndW1lbnRzKTsKIH0KIAogVFR5cGUgR2V0RmllbGRUeXBlKGNvbnN0IFRUeXBlICZp
bmRleGVkVHlwZSkKQEAgLTE3Miw3ICsxNzAsOSBAQCBUVHlwZSBHZXRGaWVsZFR5cGUoY29uc3Qg
VFR5cGUgJmluZGV4ZWRUeXBlKQogLy8gICAgYmFzZVsxXSA9IHZhbHVlOwogLy8gfQogLy8gTm90
ZSB0aGF0IGVsc2UgaXMgbm90IHVzZWQgaW4gYWJvdmUgZnVuY3Rpb25zIHRvIGF2b2lkIHRoZSBS
ZXdyaXRlRWxzZUJsb2NrcyB0cmFuc2Zvcm1hdGlvbi4KLVRJbnRlcm1GdW5jdGlvbkRlZmluaXRp
b24gKkdldEluZGV4RnVuY3Rpb25EZWZpbml0aW9uKFRUeXBlIHR5cGUsIGJvb2wgd3JpdGUpCitU
SW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpHZXRJbmRleEZ1bmN0aW9uRGVmaW5pdGlvbihUVHlw
ZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCB3cml0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2xVbmlxdWVJZCAmZnVuY3Rpb25JZCkKIHsKICAg
ICBBU1NFUlQoIXR5cGUuaXNBcnJheSgpKTsKICAgICAvLyBDb25zZXJ2YXRpdmVseSB1c2UgaGln
aHAgaGVyZSwgZXZlbiBpZiB0aGUgaW5kZXhlZCB0eXBlIGlzIG5vdCBoaWdocC4gVGhhdCB3YXkg
dGhlIGNvZGUgY2FuJ3QKQEAgLTE4Miw3ICsxODIsNyBAQCBUSW50ZXJtRnVuY3Rpb25EZWZpbml0
aW9uICpHZXRJbmRleEZ1bmN0aW9uRGVmaW5pdGlvbihUVHlwZSB0eXBlLCBib29sIHdyaXRlKQog
ICAgIHR5cGUuc2V0UHJlY2lzaW9uKEVicEhpZ2gpOwogCiAgICAgVFR5cGUgZmllbGRUeXBlID0g
R2V0RmllbGRUeXBlKHR5cGUpOwotICAgIGludCBudW1DYXNlcyA9IDA7CisgICAgaW50IG51bUNh
c2VzICAgID0gMDsKICAgICBpZiAodHlwZS5pc01hdHJpeCgpKQogICAgIHsKICAgICAgICAgbnVt
Q2FzZXMgPSB0eXBlLmdldENvbHMoKTsKQEAgLTE5MiwxOCArMTkyLDI3IEBAIFRJbnRlcm1GdW5j
dGlvbkRlZmluaXRpb24gKkdldEluZGV4RnVuY3Rpb25EZWZpbml0aW9uKFRUeXBlIHR5cGUsIGJv
b2wgd3JpdGUpCiAgICAgICAgIG51bUNhc2VzID0gdHlwZS5nZXROb21pbmFsU2l6ZSgpOwogICAg
IH0KIAotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcmFtc05vZGUgPSBuZXcgVEludGVybUFnZ3Jl
Z2F0ZShFT3BQYXJhbWV0ZXJzKTsKLSAgICBUUXVhbGlmaWVyIGJhc2VRdWFsaWZpZXIgPSBFdnFJ
bk91dDsKKyAgICBUVHlwZSByZXR1cm5UeXBlKEVidFZvaWQpOworICAgIGlmICghd3JpdGUpCisg
ICAgeworICAgICAgICByZXR1cm5UeXBlID0gZmllbGRUeXBlOworICAgIH0KKworICAgIHN0ZDo6
c3RyaW5nIGZ1bmN0aW9uTmFtZSAgICAgICAgICAgICAgICA9IEdldEluZGV4RnVuY3Rpb25OYW1l
KHR5cGUsIHdyaXRlKTsKKyAgICBUSW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKnByb3RvdHlwZU5v
ZGUgPSBUSW50ZXJtVHJhdmVyc2VyOjpDcmVhdGVJbnRlcm5hbEZ1bmN0aW9uUHJvdG90eXBlTm9k
ZSgKKyAgICAgICAgcmV0dXJuVHlwZSwgZnVuY3Rpb25OYW1lLmNfc3RyKCksIGZ1bmN0aW9uSWQp
OworCisgICAgVFF1YWxpZmllciBiYXNlUXVhbGlmaWVyICAgICA9IEV2cUluT3V0OwogICAgIGlm
ICghd3JpdGUpCiAgICAgICAgIGJhc2VRdWFsaWZpZXIgICAgICAgID0gRXZxSW47CiAgICAgVElu
dGVybVN5bWJvbCAqYmFzZVBhcmFtID0gQ3JlYXRlQmFzZVN5bWJvbCh0eXBlLCBiYXNlUXVhbGlm
aWVyKTsKLSAgICBwYXJhbXNOb2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soYmFzZVBhcmFt
KTsKKyAgICBwcm90b3R5cGVOb2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soYmFzZVBhcmFt
KTsKICAgICBUSW50ZXJtU3ltYm9sICppbmRleFBhcmFtID0gQ3JlYXRlSW5kZXhTeW1ib2woKTsK
LSAgICBwYXJhbXNOb2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soaW5kZXhQYXJhbSk7Cisg
ICAgcHJvdG90eXBlTm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGluZGV4UGFyYW0pOwog
ICAgIGlmICh3cml0ZSkKICAgICB7CiAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnZhbHVlUGFyYW0g
PSBDcmVhdGVWYWx1ZVN5bWJvbChmaWVsZFR5cGUpOwotICAgICAgICBwYXJhbXNOb2RlLT5nZXRT
ZXF1ZW5jZSgpLT5wdXNoX2JhY2sodmFsdWVQYXJhbSk7CisgICAgICAgIHByb3RvdHlwZU5vZGUt
PmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayh2YWx1ZVBhcmFtKTsKICAgICB9CiAKICAgICBUSW50
ZXJtQmxvY2sgKnN0YXRlbWVudExpc3QgPSBuZXcgVEludGVybUJsb2NrKCk7CkBAIC0yNzMsMTYg
KzI4Miw4IEBAIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKkdldEluZGV4RnVuY3Rpb25EZWZp
bml0aW9uKFRUeXBlIHR5cGUsIGJvb2wgd3JpdGUpCiAgICAgYm9keU5vZGUtPmdldFNlcXVlbmNl
KCktPnB1c2hfYmFjayhpZk5vZGUpOwogICAgIGJvZHlOb2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNo
X2JhY2sodXNlTGFzdEJsb2NrKTsKIAotICAgIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKmlu
ZGV4aW5nRnVuY3Rpb24gPSBudWxscHRyOwotICAgIGlmICh3cml0ZSkKLSAgICB7Ci0gICAgICAg
IGluZGV4aW5nRnVuY3Rpb24gPSBuZXcgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbihUVHlwZShF
YnRWb2lkKSwgcGFyYW1zTm9kZSwgYm9keU5vZGUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewot
ICAgICAgICBpbmRleGluZ0Z1bmN0aW9uID0gbmV3IFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24o
ZmllbGRUeXBlLCBwYXJhbXNOb2RlLCBib2R5Tm9kZSk7Ci0gICAgfQotICAgIGluZGV4aW5nRnVu
Y3Rpb24tPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5zZXROYW1lT2JqKEdldEluZGV4RnVuY3Rp
b25OYW1lKHR5cGUsIHdyaXRlKSk7CisgICAgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqaW5k
ZXhpbmdGdW5jdGlvbiA9CisgICAgICAgIG5ldyBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uKHBy
b3RvdHlwZU5vZGUsIGJvZHlOb2RlKTsKICAgICByZXR1cm4gaW5kZXhpbmdGdW5jdGlvbjsKIH0K
IApAQCAtMzAwLDEwICszMDEsMTEgQEAgY2xhc3MgUmVtb3ZlRHluYW1pY0luZGV4aW5nVHJhdmVy
c2VyIDogcHVibGljIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcgogICAgIGJvb2wgdXNlZFRyZWVJ
bnNlcnRpb24oKSBjb25zdCB7IHJldHVybiBtVXNlZFRyZWVJbnNlcnRpb247IH0KIAogICBwcm90
ZWN0ZWQ6Ci0gICAgLy8gU2V0cyBvZiB0eXBlcyB0aGF0IGFyZSBpbmRleGVkLiBOb3RlIHRoYXQg
dGhlc2UgY2FuIG5vdCBzdG9yZSBtdWx0aXBsZSB2YXJpYW50cwotICAgIC8vIG9mIHRoZSBzYW1l
IHR5cGUgd2l0aCBkaWZmZXJlbnQgcHJlY2lzaW9ucyAtIG9ubHkgb25lIHByZWNpc2lvbiBnZXRz
IHN0b3JlZC4KLSAgICBzdGQ6OnNldDxUVHlwZT4gbUluZGV4ZWRWZWNBbmRNYXRyaXhUeXBlczsK
LSAgICBzdGQ6OnNldDxUVHlwZT4gbVdyaXR0ZW5WZWNBbmRNYXRyaXhUeXBlczsKKyAgICAvLyBN
YXBzIG9mIHR5cGVzIHRoYXQgYXJlIGluZGV4ZWQgdG8gdGhlIGluZGV4aW5nIGZ1bmN0aW9uIGlk
cyB1c2VkIGZvciB0aGVtLiBOb3RlIHRoYXQgdGhlc2UKKyAgICAvLyBjYW4gbm90IHN0b3JlIG11
bHRpcGxlIHZhcmlhbnRzIG9mIHRoZSBzYW1lIHR5cGUgd2l0aCBkaWZmZXJlbnQgcHJlY2lzaW9u
cyAtIG9ubHkgb25lCisgICAgLy8gcHJlY2lzaW9uIGdldHMgc3RvcmVkLgorICAgIHN0ZDo6bWFw
PFRUeXBlLCBUU3ltYm9sVW5pcXVlSWQ+IG1JbmRleGVkVmVjQW5kTWF0cml4VHlwZXM7CisgICAg
c3RkOjptYXA8VFR5cGUsIFRTeW1ib2xVbmlxdWVJZD4gbVdyaXR0ZW5WZWNBbmRNYXRyaXhUeXBl
czsKIAogICAgIGJvb2wgbVVzZWRUcmVlSW5zZXJ0aW9uOwogCkBAIC0zMjcsNDkgKzMyOSw1MSBA
QCB2b2lkIFJlbW92ZUR5bmFtaWNJbmRleGluZ1RyYXZlcnNlcjo6aW5zZXJ0SGVscGVyRGVmaW5p
dGlvbnMoVEludGVybU5vZGUgKnJvb3QpCiAgICAgVEludGVybUJsb2NrICpyb290QmxvY2sgPSBy
b290LT5nZXRBc0Jsb2NrKCk7CiAgICAgQVNTRVJUKHJvb3RCbG9jayAhPSBudWxscHRyKTsKICAg
ICBUSW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9uczsKLSAgICBmb3IgKFRUeXBlIHR5cGUgOiBtSW5k
ZXhlZFZlY0FuZE1hdHJpeFR5cGVzKQorICAgIGZvciAoYXV0byAmdHlwZSA6IG1JbmRleGVkVmVj
QW5kTWF0cml4VHlwZXMpCiAgICAgewotICAgICAgICBpbnNlcnRpb25zLnB1c2hfYmFjayhHZXRJ
bmRleEZ1bmN0aW9uRGVmaW5pdGlvbih0eXBlLCBmYWxzZSkpOworICAgICAgICBpbnNlcnRpb25z
LnB1c2hfYmFjayhHZXRJbmRleEZ1bmN0aW9uRGVmaW5pdGlvbih0eXBlLmZpcnN0LCBmYWxzZSwg
dHlwZS5zZWNvbmQpKTsKICAgICB9Ci0gICAgZm9yIChUVHlwZSB0eXBlIDogbVdyaXR0ZW5WZWNB
bmRNYXRyaXhUeXBlcykKKyAgICBmb3IgKGF1dG8gJnR5cGUgOiBtV3JpdHRlblZlY0FuZE1hdHJp
eFR5cGVzKQogICAgIHsKLSAgICAgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soR2V0SW5kZXhGdW5j
dGlvbkRlZmluaXRpb24odHlwZSwgdHJ1ZSkpOworICAgICAgICBpbnNlcnRpb25zLnB1c2hfYmFj
ayhHZXRJbmRleEZ1bmN0aW9uRGVmaW5pdGlvbih0eXBlLmZpcnN0LCB0cnVlLCB0eXBlLnNlY29u
ZCkpOwogICAgIH0KICAgICBtSW5zZXJ0aW9ucy5wdXNoX2JhY2soTm9kZUluc2VydE11bHRpcGxl
RW50cnkocm9vdEJsb2NrLCAwLCBpbnNlcnRpb25zLCBUSW50ZXJtU2VxdWVuY2UoKSkpOwogfQog
CiAvLyBDcmVhdGUgYSBjYWxsIHRvIGR5bl9pbmRleF8qKCkgYmFzZWQgb24gYW4gaW5kaXJlY3Qg
aW5kZXhpbmcgb3Agbm9kZQogVEludGVybUFnZ3JlZ2F0ZSAqQ3JlYXRlSW5kZXhGdW5jdGlvbkNh
bGwoVEludGVybUJpbmFyeSAqbm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXhlZE5vZGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmluZGV4KQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbmRleCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2xVbmlxdWVJ
ZCAmZnVuY3Rpb25JZCkKIHsKICAgICBBU1NFUlQobm9kZS0+Z2V0T3AoKSA9PSBFT3BJbmRleElu
ZGlyZWN0KTsKLSAgICBUSW50ZXJtQWdncmVnYXRlICppbmRleGluZ0NhbGwgPSBuZXcgVEludGVy
bUFnZ3JlZ2F0ZShFT3BGdW5jdGlvbkNhbGwpOworICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1l
bnRzID0gbmV3IFRJbnRlcm1TZXF1ZW5jZSgpOworICAgIGFyZ3VtZW50cy0+cHVzaF9iYWNrKG5v
ZGUtPmdldExlZnQoKSk7CisgICAgYXJndW1lbnRzLT5wdXNoX2JhY2soaW5kZXgpOworCisgICAg
VFR5cGUgZmllbGRUeXBlICAgICAgICAgICAgICAgID0gR2V0RmllbGRUeXBlKG5vZGUtPmdldExl
ZnQoKS0+Z2V0VHlwZSgpKTsKKyAgICBzdGQ6OnN0cmluZyBmdW5jdGlvbk5hbWUgICAgICAgPSBH
ZXRJbmRleEZ1bmN0aW9uTmFtZShub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKSwgZmFsc2UpOwor
ICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmluZGV4aW5nQ2FsbCA9IFRJbnRlcm1UcmF2ZXJzZXI6OkNy
ZWF0ZUludGVybmFsRnVuY3Rpb25DYWxsTm9kZSgKKyAgICAgICAgZmllbGRUeXBlLCBmdW5jdGlv
bk5hbWUuY19zdHIoKSwgZnVuY3Rpb25JZCwgYXJndW1lbnRzKTsKICAgICBpbmRleGluZ0NhbGwt
PnNldExpbmUobm9kZS0+Z2V0TGluZSgpKTsKLSAgICBpbmRleGluZ0NhbGwtPnNldFVzZXJEZWZp
bmVkKCk7Ci0gICAgaW5kZXhpbmdDYWxsLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+c2V0TmFt
ZU9iaigKLSAgICAgICAgR2V0SW5kZXhGdW5jdGlvbk5hbWUoaW5kZXhlZE5vZGUtPmdldFR5cGUo
KSwgZmFsc2UpKTsKLSAgICBpbmRleGluZ0NhbGwtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhp
bmRleGVkTm9kZSk7Ci0gICAgaW5kZXhpbmdDYWxsLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2so
aW5kZXgpOwotCi0gICAgVFR5cGUgZmllbGRUeXBlID0gR2V0RmllbGRUeXBlKGluZGV4ZWROb2Rl
LT5nZXRUeXBlKCkpOwotICAgIGluZGV4aW5nQ2FsbC0+c2V0VHlwZShmaWVsZFR5cGUpOwogICAg
IHJldHVybiBpbmRleGluZ0NhbGw7CiB9CiAKIFRJbnRlcm1BZ2dyZWdhdGUgKkNyZWF0ZUluZGV4
ZWRXcml0ZUZ1bmN0aW9uQ2FsbChUSW50ZXJtQmluYXJ5ICpub2RlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5
cGVkICp3cml0dGVuVmFsdWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVEludGVybVR5cGVkICp3cml0dGVuVmFsdWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN5bWJvbFVuaXF1ZUlkICZm
dW5jdGlvbklkKQogewotICAgIC8vIERlZXAgY29weSB0aGUgbGVmdCBub2RlIHNvIHRoYXQgdHdv
IHBvaW50ZXJzIHRvIHRoZSBzYW1lIG5vZGUgZG9uJ3QgZW5kIHVwIGluIHRoZSB0cmVlLgotICAg
IFRJbnRlcm1Ob2RlICpsZWZ0Q29weSA9IG5vZGUtPmdldExlZnQoKS0+ZGVlcENvcHkoKTsKLSAg
ICBBU1NFUlQobGVmdENvcHkgIT0gbnVsbHB0ciAmJiBsZWZ0Q29weS0+Z2V0QXNUeXBlZCgpICE9
IG51bGxwdHIpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmluZGV4ZWRXcml0ZUNhbGwgPQotICAg
ICAgICBDcmVhdGVJbmRleEZ1bmN0aW9uQ2FsbChub2RlLCBsZWZ0Q29weS0+Z2V0QXNUeXBlZCgp
LCBpbmRleCk7Ci0gICAgaW5kZXhlZFdyaXRlQ2FsbC0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCkt
PnNldE5hbWVPYmooCi0gICAgICAgIEdldEluZGV4RnVuY3Rpb25OYW1lKG5vZGUtPmdldExlZnQo
KS0+Z2V0VHlwZSgpLCB0cnVlKSk7Ci0gICAgaW5kZXhlZFdyaXRlQ2FsbC0+c2V0VHlwZShUVHlw
ZShFYnRWb2lkKSk7Ci0gICAgaW5kZXhlZFdyaXRlQ2FsbC0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9i
YWNrKHdyaXR0ZW5WYWx1ZSk7CisgICAgQVNTRVJUKG5vZGUtPmdldE9wKCkgPT0gRU9wSW5kZXhJ
bmRpcmVjdCk7CisgICAgVEludGVybVNlcXVlbmNlICphcmd1bWVudHMgPSBuZXcgVEludGVybVNl
cXVlbmNlKCk7CisgICAgLy8gRGVlcCBjb3B5IHRoZSBjaGlsZCBub2RlcyBzbyB0aGF0IHR3byBw
b2ludGVycyB0byB0aGUgc2FtZSBub2RlIGRvbid0IGVuZCB1cCBpbiB0aGUgdHJlZS4KKyAgICBh
cmd1bWVudHMtPnB1c2hfYmFjayhub2RlLT5nZXRMZWZ0KCktPmRlZXBDb3B5KCkpOworICAgIGFy
Z3VtZW50cy0+cHVzaF9iYWNrKGluZGV4LT5kZWVwQ29weSgpKTsKKyAgICBhcmd1bWVudHMtPnB1
c2hfYmFjayh3cml0dGVuVmFsdWUpOworCisgICAgc3RkOjpzdHJpbmcgZnVuY3Rpb25OYW1lICAg
ICAgICAgICA9IEdldEluZGV4RnVuY3Rpb25OYW1lKG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgp
LCB0cnVlKTsKKyAgICBUSW50ZXJtQWdncmVnYXRlICppbmRleGVkV3JpdGVDYWxsID0gVEludGVy
bVRyYXZlcnNlcjo6Q3JlYXRlSW50ZXJuYWxGdW5jdGlvbkNhbGxOb2RlKAorICAgICAgICBUVHlw
ZShFYnRWb2lkKSwgZnVuY3Rpb25OYW1lLmNfc3RyKCksIGZ1bmN0aW9uSWQsIGFyZ3VtZW50cyk7
CisgICAgaW5kZXhlZFdyaXRlQ2FsbC0+c2V0TGluZShub2RlLT5nZXRMaW5lKCkpOwogICAgIHJl
dHVybiBpbmRleGVkV3JpdGVDYWxsOwogfQogCkBAIC0zOTAsNyArMzk0LDcgQEAgYm9vbCBSZW1v
dmVEeW5hbWljSW5kZXhpbmdUcmF2ZXJzZXI6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50
ZXJtQmluYXJ5ICpub2QKICAgICAgICAgICAgIC8vIE5vdyB2X2V4cHJbczBdIGNhbiBiZSBzYWZl
bHkgZXhlY3V0ZWQgc2V2ZXJhbCB0aW1lcyB3aXRob3V0IHVuaW50ZW5kZWQgc2lkZSBlZmZlY3Rz
LgogCiAgICAgICAgICAgICAvLyBJbml0IHRoZSB0ZW1wIHZhcmlhYmxlIGhvbGRpbmcgdGhlIGlu
ZGV4Ci0gICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICppbml0SW5kZXggPSBjcmVhdGVUZW1w
SW5pdERlY2xhcmF0aW9uKG5vZGUtPmdldFJpZ2h0KCkpOworICAgICAgICAgICAgVEludGVybURl
Y2xhcmF0aW9uICppbml0SW5kZXggPSBjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKG5vZGUtPmdl
dFJpZ2h0KCkpOwogICAgICAgICAgICAgaW5zZXJ0U3RhdGVtZW50SW5QYXJlbnRCbG9jayhpbml0
SW5kZXgpOwogICAgICAgICAgICAgbVVzZWRUcmVlSW5zZXJ0aW9uID0gdHJ1ZTsKIApAQCAtNDEw
LDggKzQxNCwxNiBAQCBib29sIFJlbW92ZUR5bmFtaWNJbmRleGluZ1RyYXZlcnNlcjo6dmlzaXRC
aW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZAogICAgICAgICAgICAgQVNTRVJU
KG1hdGNoZXIubWF0Y2gobm9kZSwgZ2V0UGFyZW50Tm9kZSgpLCBpc0xWYWx1ZVJlcXVpcmVkSGVy
ZSgpKSA9PSB3cml0ZSk7CiAjZW5kaWYKIAotICAgICAgICAgICAgVFR5cGUgdHlwZSA9IG5vZGUt
PmdldExlZnQoKS0+Z2V0VHlwZSgpOwotICAgICAgICAgICAgbUluZGV4ZWRWZWNBbmRNYXRyaXhU
eXBlcy5pbnNlcnQodHlwZSk7CisgICAgICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSA9IG5vZGUt
PmdldExlZnQoKS0+Z2V0VHlwZSgpOworICAgICAgICAgICAgVFN5bWJvbFVuaXF1ZUlkIGluZGV4
aW5nRnVuY3Rpb25JZDsKKyAgICAgICAgICAgIGlmIChtSW5kZXhlZFZlY0FuZE1hdHJpeFR5cGVz
LmZpbmQodHlwZSkgPT0gbUluZGV4ZWRWZWNBbmRNYXRyaXhUeXBlcy5lbmQoKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBtSW5kZXhlZFZlY0FuZE1hdHJpeFR5cGVzW3R5cGVdID0g
aW5kZXhpbmdGdW5jdGlvbklkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGluZGV4aW5nRnVuY3Rpb25JZCA9IG1JbmRleGVk
VmVjQW5kTWF0cml4VHlwZXNbdHlwZV07CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
ICh3cml0ZSkKICAgICAgICAgICAgIHsKQEAgLTQzMCwxMCArNDQyLDMwIEBAIGJvb2wgUmVtb3Zl
RHluYW1pY0luZGV4aW5nVHJhdmVyc2VyOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVy
bUJpbmFyeSAqbm9kCiAgICAgICAgICAgICAgICAgICAgIG1SZW1vdmVJbmRleFNpZGVFZmZlY3Rz
SW5TdWJ0cmVlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgVEludGVybUJpbmFyeSAqbGVmdEJpbmFy
eSA9IG5vZGUtPmdldExlZnQoKS0+Z2V0QXNCaW5hcnlOb2RlKCk7CisgICAgICAgICAgICAgICAg
aWYgKGxlZnRCaW5hcnkgIT0gbnVsbHB0ciAmJgorICAgICAgICAgICAgICAgICAgICBJbnRlcm1O
b2RlUGF0dGVybk1hdGNoZXI6OklzRHluYW1pY0luZGV4aW5nT2ZWZWN0b3JPck1hdHJpeChsZWZ0
QmluYXJ5KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMg
aXMgYSBjYXNlIGxpa2U6CisgICAgICAgICAgICAgICAgICAgIC8vIG1hdDIgbTsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gbVthXVtiXSsrOworICAgICAgICAgICAgICAgICAgICAvLyBQcm9jZXNz
IHRoZSBjaGlsZCBub2RlIG1bYV0gZmlyc3QuCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIC8vIFRPRE8ob2V0dWFo
b0BudmlkaWEuY29tKTogVGhpcyBpcyBub3Qgb3B0aW1hbCBpZiB0aGUgZXhwcmVzc2lvbiB1c2lu
ZyB0aGUgdmFsdWUKICAgICAgICAgICAgICAgICAvLyBvbmx5IHdyaXRlcyBpdCBhbmQgZG9lc24n
dCBuZWVkIHRoZSBwcmV2aW91cyB2YWx1ZS4gaHR0cDovL2FuZ2xlYnVnLmNvbS8xMTE2CiAKLSAg
ICAgICAgICAgICAgICBtV3JpdHRlblZlY0FuZE1hdHJpeFR5cGVzLmluc2VydCh0eXBlKTsKKyAg
ICAgICAgICAgICAgICBUU3ltYm9sVW5pcXVlSWQgaW5kZXhlZFdyaXRlRnVuY3Rpb25JZDsKKyAg
ICAgICAgICAgICAgICBpZiAobVdyaXR0ZW5WZWNBbmRNYXRyaXhUeXBlcy5maW5kKHR5cGUpID09
IG1Xcml0dGVuVmVjQW5kTWF0cml4VHlwZXMuZW5kKCkpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBtV3JpdHRlblZlY0FuZE1hdHJpeFR5cGVzW3R5cGVdID0gaW5kZXhl
ZFdyaXRlRnVuY3Rpb25JZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXhlZFdyaXRlRnVu
Y3Rpb25JZCA9IG1Xcml0dGVuVmVjQW5kTWF0cml4VHlwZXNbdHlwZV07CisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIFRUeXBlIGZpZWxkVHlwZSA9IEdldEZpZWxkVHlwZSh0eXBl
KTsKIAogICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zQmVmb3JlOwpA
QCAtNDQxLDIzICs0NzMsMjMgQEAgYm9vbCBSZW1vdmVEeW5hbWljSW5kZXhpbmdUcmF2ZXJzZXI6
OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2QKIAogICAgICAgICAg
ICAgICAgIC8vIFN0b3JlIHRoZSBpbmRleCBpbiBhIHRlbXBvcmFyeSBzaWduZWQgaW50IHZhcmlh
YmxlLgogICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXhJbml0aWFsaXplciA9IEVu
c3VyZVNpZ25lZEludChub2RlLT5nZXRSaWdodCgpKTsKLSAgICAgICAgICAgICAgICBUSW50ZXJt
QWdncmVnYXRlICppbml0SW5kZXggPSBjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKGluZGV4SW5p
dGlhbGl6ZXIpOworICAgICAgICAgICAgICAgIFRJbnRlcm1EZWNsYXJhdGlvbiAqaW5pdEluZGV4
ICA9IGNyZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24oaW5kZXhJbml0aWFsaXplcik7CiAgICAgICAg
ICAgICAgICAgaW5pdEluZGV4LT5zZXRMaW5lKG5vZGUtPmdldExpbmUoKSk7CiAgICAgICAgICAg
ICAgICAgaW5zZXJ0aW9uc0JlZm9yZS5wdXNoX2JhY2soaW5pdEluZGV4KTsKIAotICAgICAgICAg
ICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmluZGV4aW5nQ2FsbCA9IENyZWF0ZUluZGV4RnVuY3Rp
b25DYWxsKAotICAgICAgICAgICAgICAgICAgICBub2RlLCBub2RlLT5nZXRMZWZ0KCksIGNyZWF0
ZVRlbXBTeW1ib2woaW5kZXhJbml0aWFsaXplci0+Z2V0VHlwZSgpKSk7Ci0KICAgICAgICAgICAg
ICAgICAvLyBDcmVhdGUgYSBub2RlIGZvciByZWZlcnJpbmcgdG8gdGhlIGluZGV4IGFmdGVyIHRo
ZSBuZXh0VGVtcG9yYXJ5SW5kZXgoKSBjYWxsCiAgICAgICAgICAgICAgICAgLy8gYmVsb3cuCiAg
ICAgICAgICAgICAgICAgVEludGVybVN5bWJvbCAqdGVtcEluZGV4ID0gY3JlYXRlVGVtcFN5bWJv
bChpbmRleEluaXRpYWxpemVyLT5nZXRUeXBlKCkpOwogCisgICAgICAgICAgICAgICAgVEludGVy
bUFnZ3JlZ2F0ZSAqaW5kZXhpbmdDYWxsID0KKyAgICAgICAgICAgICAgICAgICAgQ3JlYXRlSW5k
ZXhGdW5jdGlvbkNhbGwobm9kZSwgdGVtcEluZGV4LCBpbmRleGluZ0Z1bmN0aW9uSWQpOworCiAg
ICAgICAgICAgICAgICAgbmV4dFRlbXBvcmFyeUluZGV4KCk7ICAvLyBGcm9tIG5vdyBvbiwgY3Jl
YXRpbmcgdGVtcG9yYXJ5IHN5bWJvbHMgdGhhdCByZWZlciB0byB0aGUKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZpZWxkIHZhbHVlLgogICAgICAgICAgICAgICAg
IGluc2VydGlvbnNCZWZvcmUucHVzaF9iYWNrKGNyZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24oaW5k
ZXhpbmdDYWxsKSk7CiAKLSAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICppbmRleGVk
V3JpdGVDYWxsID0KLSAgICAgICAgICAgICAgICAgICAgQ3JlYXRlSW5kZXhlZFdyaXRlRnVuY3Rp
b25DYWxsKG5vZGUsIHRlbXBJbmRleCwgY3JlYXRlVGVtcFN5bWJvbChmaWVsZFR5cGUpKTsKKyAg
ICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICppbmRleGVkV3JpdGVDYWxsID0gQ3JlYXRl
SW5kZXhlZFdyaXRlRnVuY3Rpb25DYWxsKAorICAgICAgICAgICAgICAgICAgICBub2RlLCB0ZW1w
SW5kZXgsIGNyZWF0ZVRlbXBTeW1ib2woZmllbGRUeXBlKSwgaW5kZXhlZFdyaXRlRnVuY3Rpb25J
ZCk7CiAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uc0FmdGVyLnB1c2hfYmFjayhpbmRleGVkV3Jp
dGVDYWxsKTsKICAgICAgICAgICAgICAgICBpbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRCbG9jayhp
bnNlcnRpb25zQmVmb3JlLCBpbnNlcnRpb25zQWZ0ZXIpOwogICAgICAgICAgICAgICAgIHF1ZXVl
UmVwbGFjZW1lbnQobm9kZSwgY3JlYXRlVGVtcFN5bWJvbChmaWVsZFR5cGUpLCBPcmlnaW5hbE5v
ZGU6OklTX0RST1BQRUQpOwpAQCAtNDcyLDcgKzUwNCw3IEBAIGJvb2wgUmVtb3ZlRHluYW1pY0lu
ZGV4aW5nVHJhdmVyc2VyOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAq
bm9kCiAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGluZGV4X2V4cHIgaXMgdW5zaWduZWQsIHdl
J2xsIGNvbnZlcnQgaXQgdG8gc2lnbmVkLgogICAgICAgICAgICAgICAgIEFTU0VSVCghbVJlbW92
ZUluZGV4U2lkZUVmZmVjdHNJblN1YnRyZWUpOwogICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dy
ZWdhdGUgKmluZGV4aW5nQ2FsbCA9IENyZWF0ZUluZGV4RnVuY3Rpb25DYWxsKAotICAgICAgICAg
ICAgICAgICAgICBub2RlLCBub2RlLT5nZXRMZWZ0KCksIEVuc3VyZVNpZ25lZEludChub2RlLT5n
ZXRSaWdodCgpKSk7CisgICAgICAgICAgICAgICAgICAgIG5vZGUsIEVuc3VyZVNpZ25lZEludChu
b2RlLT5nZXRSaWdodCgpKSwgaW5kZXhpbmdGdW5jdGlvbklkKTsKICAgICAgICAgICAgICAgICBx
dWV1ZVJlcGxhY2VtZW50KG5vZGUsIGluZGV4aW5nQ2FsbCwgT3JpZ2luYWxOb2RlOjpJU19EUk9Q
UEVEKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTAzLDYgKzUzNSwxMyBAQCB2b2lk
IFJlbW92ZUR5bmFtaWNJbmRleGluZyhUSW50ZXJtTm9kZSAqcm9vdCwKICAgICAgICAgcm9vdC0+
dHJhdmVyc2UoJnRyYXZlcnNlcik7CiAgICAgICAgIHRyYXZlcnNlci51cGRhdGVUcmVlKCk7CiAg
ICAgfSB3aGlsZSAodHJhdmVyc2VyLnVzZWRUcmVlSW5zZXJ0aW9uKCkpOworICAgIC8vIFRPT0Qo
b2V0dWFob0BudmlkaWEuY29tKTogSXQgbWlnaHQgYmUgbmljZXIgdG8gYWRkIHRoZSBoZWxwZXIg
ZGVmaW5pdGlvbnMgYWxzbyBpbiB0aGUgbWlkZGxlCisgICAgLy8gb2YgdHJhdmVyc2FsLiBOb3cg
dGhlIHRyZWUgZW5kcyB1cCBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUgaW4gdGhlIG1pZGRsZSwg
c2luY2UgdGhlcmUgYXJlCisgICAgLy8gZnVuY3Rpb24gY2FsbCBub2RlcyB3aXRoIG5vIGNvcnJl
c3BvbmRpbmcgZGVmaW5pdGlvbiBub2Rlcy4gVGhpcyBuZWVkcyBzcGVjaWFsIGhhbmRsaW5nIGlu
CisgICAgLy8gVEludGVybUxWYWx1ZVRyYWNraW5nVHJhdmVyc2VyLCBhbmQgY3JlYXRlcyBpbnRy
aWNhY2llcyB0aGF0IGFyZSBub3QgZWFzaWx5IGFwcGFyZW50IGZyb20gYQorICAgIC8vIHN1cGVy
ZmljaWFsIHJlYWRpbmcgb2YgdGhlIGNvZGUuCiAgICAgdHJhdmVyc2VyLmluc2VydEhlbHBlckRl
ZmluaXRpb25zKHJvb3QpOwogICAgIHRyYXZlcnNlci51cGRhdGVUcmVlKCk7CiB9CisKK30gIC8v
IG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlRHluYW1pY0luZGV4aW5nLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVEeW5hbWljSW5kZXhpbmcu
aAppbmRleCBhZTNhOTNjOWIxNDNkMmMwYTQ1MjQyYzY1OTViNzY1ODU0ZjQ0NmFkLi4wNjMwNWQw
ZjgyODcxZmY4NGFlZDNlMjIxZWYwZTBmZWEyOWY4MTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVEeW5hbWljSW5kZXhp
bmcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9SZW1vdmVEeW5hbWljSW5kZXhpbmcuaApAQCAtMTAsNiArMTAsOSBAQAogI2lmbmRlZiBDT01Q
SUxFUl9UUkFOU0xBVE9SX1JFTU9WRURZTkFNSUNJTkRFWElOR19IXwogI2RlZmluZSBDT01QSUxF
Ul9UUkFOU0xBVE9SX1JFTU9WRURZTkFNSUNJTkRFWElOR19IXwogCituYW1lc3BhY2Ugc2gKK3sK
KwogY2xhc3MgVEludGVybU5vZGU7CiBjbGFzcyBUU3ltYm9sVGFibGU7CiAKQEAgLTE4LDQgKzIx
LDYgQEAgdm9pZCBSZW1vdmVEeW5hbWljSW5kZXhpbmcoVEludGVybU5vZGUgKnJvb3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24pOwogCit9ICAvLyBu
YW1lc3BhY2Ugc2gKKwogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1JFTU9WRURZTkFN
SUNJTkRFWElOR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24uY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlSW52YXJpYW50
RGVjbGFyYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1ZTEyYmFiYzc3YTE2NjE4MGQzMWRjOGRjZDQ1
ODM3MDZiNDBiYmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVJbnZhcmlhbnREZWNsYXJhdGlvbi5jcHAKQEAg
LTAsMCArMSw0MyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL1JlbW92ZUludmFyaWFudERlY2xhcmF0aW9uLmgiCisKKyNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKKworbmFtZXNwYWNlIHNoCit7CisKK25hbWVzcGFjZQor
eworCisvLyBBbiBBU1QgdHJhdmVyc2VyIHRoYXQgcmVtb3ZlcyBpbnZhcmlhbnQgZGVjbGFyYXRp
b24gZm9yIGlucHV0IGluIGZyYWdtZW50IHNoYWRlcgorLy8gd2hlbiBHTFNMID49IDQuMjAgYW5k
IGZvciBvdXRwdXQgaW4gdmVydGV4IHNoYWRlciB3aGVuIEdMU0wgPCA0LjIuCitjbGFzcyBSZW1v
dmVJbnZhcmlhbnREZWNsYXJhdGlvblRyYXZlcnNlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2Vy
Cit7CisgIHB1YmxpYzoKKyAgICBSZW1vdmVJbnZhcmlhbnREZWNsYXJhdGlvblRyYXZlcnNlcigp
IDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpIHt9CisKKyAgcHJpdmF0ZToK
KyAgICBib29sIHZpc2l0SW52YXJpYW50RGVjbGFyYXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1J
bnZhcmlhbnREZWNsYXJhdGlvbiAqbm9kZSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFRJbnRl
cm1TZXF1ZW5jZSBlbXB0eVJlcGxhY2VtZW50OworICAgICAgICBtTXVsdGlSZXBsYWNlbWVudHMu
cHVzaF9iYWNrKAorICAgICAgICAgICAgTm9kZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRyeShnZXRQ
YXJlbnROb2RlKCktPmdldEFzQmxvY2soKSwgbm9kZSwgZW1wdHlSZXBsYWNlbWVudCkpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfTsKKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFj
ZQorCit2b2lkIFJlbW92ZUludmFyaWFudERlY2xhcmF0aW9uKFRJbnRlcm1Ob2RlICpyb290KQor
eworICAgIFJlbW92ZUludmFyaWFudERlY2xhcmF0aW9uVHJhdmVyc2VyIHRyYXZlcnNlcjsKKyAg
ICByb290LT50cmF2ZXJzZSgmdHJhdmVyc2VyKTsKKyAgICB0cmF2ZXJzZXIudXBkYXRlVHJlZSgp
OworfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlbW92ZUludmFyaWFudERlY2xhcmF0aW9u
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1v
dmVJbnZhcmlhbnREZWNsYXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNmOWQ0YWE0YzI3ODQ3MjY0Y2Jh
OTM2YzA3YzVhYTM1OTMxZGMzNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVJbnZhcmlhbnREZWNsYXJhdGlv
bi5oCkBAIC0wLDAgKzEsMTggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaWZuZGVmIENPTVBJTEVSX1RS
QU5TTEFUT1JfUkVNT1ZFSU5WQVJJQU5UREVDTEFSQVRJT05fSF8KKyNkZWZpbmUgQ09NUElMRVJf
VFJBTlNMQVRPUl9SRU1PVkVJTlZBUklBTlRERUNMQVJBVElPTl9IXworCitjbGFzcyBUSW50ZXJt
Tm9kZTsKK25hbWVzcGFjZSBzaAoreworCit2b2lkIFJlbW92ZUludmFyaWFudERlY2xhcmF0aW9u
KFRJbnRlcm1Ob2RlICpyb290KTsKKworfSAgLy8gbmFtZXNwYWNlIHNoCisKKyNlbmRpZiAgLy8g
Q09NUElMRVJfVFJBTlNMQVRPUl9SRU1PVkVJTlZBUklBTlRERUNMQVJBVElPTl9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVt
b3ZlUG93LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1JlbW92ZVBvdy5jcHAKaW5kZXggNGIwZmU2OTQ4ODZhOGU2ZGM5OGU5ZTNjMGM1Y2Y4MjAy
ZTkyMjMxMy4uY2E3ZDA4ZGZmOWYzNTNkYTA1NzBkNDE5Y2Y0OGQwN2UwOTM0YzIwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVt
b3ZlUG93LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9SZW1vdmVQb3cuY3BwCkBAIC0xMyw2ICsxMyw5IEBACiAjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9JbmZvU2luay5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3Iv
SW50ZXJtTm9kZS5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogbmFtZXNwYWNlCiB7CiAKQEAgLTQz
LDggKzQ2LDcgQEAgY2xhc3MgUmVtb3ZlUG93VHJhdmVyc2VyIDogcHVibGljIFRJbnRlcm1UcmF2
ZXJzZXIKIH07CiAKIFJlbW92ZVBvd1RyYXZlcnNlcjo6UmVtb3ZlUG93VHJhdmVyc2VyKCkKLSAg
ICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwKLSAgICAgIG1OZWVkQW5v
dGhlckl0ZXJhdGlvbihmYWxzZSkKKyAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2Us
IGZhbHNlKSwgbU5lZWRBbm90aGVySXRlcmF0aW9uKGZhbHNlKQogewogfQogCkBAIC03OCw3ICs4
MCw3IEBAIGJvb2wgUmVtb3ZlUG93VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNp
dCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotfSAvLyBu
YW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZQogCiB2b2lkIFJlbW92ZVBvdyhUSW50ZXJtTm9kZSAq
cm9vdCkKIHsKQEAgLTg5LDYgKzkxLDcgQEAgdm9pZCBSZW1vdmVQb3coVEludGVybU5vZGUgKnJv
b3QpCiAgICAgICAgIHRyYXZlcnNlci5uZXh0SXRlcmF0aW9uKCk7CiAgICAgICAgIHJvb3QtPnRy
YXZlcnNlKCZ0cmF2ZXJzZXIpOwogICAgICAgICB0cmF2ZXJzZXIudXBkYXRlVHJlZSgpOwotICAg
IH0KLSAgICB3aGlsZSAodHJhdmVyc2VyLm5lZWRBbm90aGVySXRlcmF0aW9uKCkpOworICAgIH0g
d2hpbGUgKHRyYXZlcnNlci5uZWVkQW5vdGhlckl0ZXJhdGlvbigpKTsKIH0KKworfSAgLy8gbmFt
ZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9SZW1vdmVQb3cuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1JlbW92ZVBvdy5oCmluZGV4IDQwZjlkNjcyYjI0YzVlNzY0NjZk
ZDMxOTNhY2MxZDNmMmEyNDlmZjIuLjNjZDg0OTg4YTk5ZDRlOWExOTQyZWQ2ZmE4NDVhNGFhNGYz
MjI2MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1JlbW92ZVBvdy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1JlbW92ZVBvdy5oCkBAIC0xMSw4ICsxMSwxMSBAQAogI2lmbmRl
ZiBDT01QSUxFUl9UUkFOU0xBVE9SX1JFTU9WRVBPV19IXwogI2RlZmluZSBDT01QSUxFUl9UUkFO
U0xBVE9SX1JFTU9WRVBPV19IXwogCituYW1lc3BhY2Ugc2gKK3sKIGNsYXNzIFRJbnRlcm1Ob2Rl
OwogCiB2b2lkIFJlbW92ZVBvdyhUSW50ZXJtTm9kZSAqcm9vdCk7Cit9ICAvLyBuYW1lc3BhY2Ug
c2gKIAotI2VuZGlmICAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9SRU1PVkVQT1dfSF8KKyNlbmRp
ZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9SRU1PVkVQT1dfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlbW92ZVN3aXRjaEZh
bGxUaHJvdWdoLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1JlbW92ZVN3aXRjaEZhbGxUaHJvdWdoLmNwcAppbmRleCBkZjhjZTFlMWYzNmViY2Nj
ZTUxNTEzMGQ0NTJjOWE0ZWYwYzVmNTA4Li42YzEwOGExMmQ5YmYwMGNiMDFkM2E2ZmE5OTcxMjYw
ZWVmYTdmYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9SZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaC5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlU3dpdGNoRmFsbFRo
cm91Z2guY3BwCkBAIC02LDEzICs2LDE2IEBACiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL1JlbW92ZVN3aXRjaEZhbGxUaHJvdWdoLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBUSW50
ZXJtQmxvY2sgKlJlbW92ZVN3aXRjaEZhbGxUaHJvdWdoOjpyZW1vdmVGYWxsVGhyb3VnaChUSW50
ZXJtQmxvY2sgKnN0YXRlbWVudExpc3QpCiB7CiAgICAgUmVtb3ZlU3dpdGNoRmFsbFRocm91Z2gg
cm0oc3RhdGVtZW50TGlzdCk7CiAgICAgQVNTRVJUKHN0YXRlbWVudExpc3QpOwogICAgIHN0YXRl
bWVudExpc3QtPnRyYXZlcnNlKCZybSk7CiAgICAgYm9vbCBsYXN0U3RhdGVtZW50V2FzQnJlYWsg
PSBybS5tTGFzdFN0YXRlbWVudFdhc0JyZWFrOwotICAgIHJtLm1MYXN0U3RhdGVtZW50V2FzQnJl
YWsgPSB0cnVlOworICAgIHJtLm1MYXN0U3RhdGVtZW50V2FzQnJlYWsgID0gdHJ1ZTsKICAgICBy
bS5oYW5kbGVQcmV2aW91c0Nhc2UoKTsKICAgICBpZiAoIWxhc3RTdGF0ZW1lbnRXYXNCcmVhaykK
ICAgICB7CkBAIC0xMTQsMTYgKzExNywxNiBAQCB2b2lkIFJlbW92ZVN3aXRjaEZhbGxUaHJvdWdo
OjpoYW5kbGVQcmV2aW91c0Nhc2UoKQogICAgICAgICAgICAgICAgIC8vIEluY2x1ZGUgYWxsIHRo
ZSBzdGF0ZW1lbnRzIHRoYXQgdGhpcyBjYXNlIGNhbiBmYWxsIHRocm91Z2ggdW5kZXIgdGhlIHNh
bWUgbGFiZWwuCiAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IGk7IGogPCBtQ2FzZXNT
aGFyaW5nQnJlYWsuc2l6ZSgpOyArK2opCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgc3RhcnRJbmRleCA9IGogPiBpID8gMSA6IDA7IC8vIEFkZCB0aGUgbGFi
ZWwgb25seSBmcm9tIHRoZSBmaXJzdCBzZXF1ZW5jZS4KKyAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHN0YXJ0SW5kZXggPQorICAgICAgICAgICAgICAgICAgICAgICAgaiA+IGkgPyAxIDogMDsg
IC8vIEFkZCB0aGUgbGFiZWwgb25seSBmcm9tIHRoZSBmaXJzdCBzZXF1ZW5jZS4KICAgICAgICAg
ICAgICAgICAgICAgb3V0cHV0U2VxdWVuY2UobUNhc2VzU2hhcmluZ0JyZWFrLmF0KGopLT5nZXRT
ZXF1ZW5jZSgpLCBzdGFydEluZGV4KTsKLQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgICAgICBtQ2FzZXNTaGFyaW5nQnJlYWsuY2xlYXIoKTsKICAgICB9
CiAgICAgbUxhc3RTdGF0ZW1lbnRXYXNCcmVhayA9IGZhbHNlOwotICAgIG1QcmV2aW91c0Nhc2Ug
PSBudWxscHRyOworICAgIG1QcmV2aW91c0Nhc2UgICAgICAgICAgPSBudWxscHRyOwogfQogCiBi
b29sIFJlbW92ZVN3aXRjaEZhbGxUaHJvdWdoOjp2aXNpdENhc2UoVmlzaXQsIFRJbnRlcm1DYXNl
ICpub2RlKQpAQCAtMTY3LDMgKzE3MCw1IEBAIGJvb2wgUmVtb3ZlU3dpdGNoRmFsbFRocm91Z2g6
OnZpc2l0QnJhbmNoKFZpc2l0LCBUSW50ZXJtQnJhbmNoICpub2RlKQogICAgIG1MYXN0U3RhdGVt
ZW50V2FzQnJlYWsgPSB0cnVlOwogICAgIHJldHVybiBmYWxzZTsKIH0KKworfSAgLy8gbmFtZXNw
YWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9SZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaC5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlU3dpdGNoRmFsbFRocm91Z2guaApp
bmRleCAxNzFjNTFiZjNhNDgzNTkzNDE5ZmY4MDI1Y2MwYTEyM2YwMWI3OGJlLi5hMTljNDM3NjMx
ZmE0ZDQ1YTU1YmVkOWRmODY5YThmMTZkNjgxODBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVTd2l0Y2hGYWxsVGhyb3Vn
aC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1JlbW92ZVN3aXRjaEZhbGxUaHJvdWdoLmgKQEAgLTksNiArOSw5IEBACiAKICNpbmNsdWRlICJj
b21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKIAorbmFtZXNwYWNlIHNoCit7CisKIGNs
YXNzIFJlbW92ZVN3aXRjaEZhbGxUaHJvdWdoIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKIHsK
ICAgcHVibGljOgpAQCAtNDIsNCArNDUsNiBAQCBjbGFzcyBSZW1vdmVTd2l0Y2hGYWxsVGhyb3Vn
aCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgc3RkOjp2ZWN0b3I8VEludGVybUJsb2Nr
ICo+IG1DYXNlc1NoYXJpbmdCcmVhazsKIH07CiAKLSNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xB
VE9SX1JFTU9WRVNXSVRDSEZBTExUSFJPVUdIX0hfCit9ICAvLyBuYW1lc3BhY2Ugc2gKKworI2Vu
ZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1JFTU9WRVNXSVRDSEZBTExUSFJPVUdIX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9SZXdyaXRlRG9XaGlsZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9SZXdyaXRlRG9XaGlsZS5jcHAKaW5kZXggOWNjNTUxYmI3OWM5MzliNWIx
ZWRjZWJmNjM1ZDFkNmFkNmE2M2Y5NS4uNzk5OWNiZjQ5MGY0OGMxM2Q0YTliNTRjMzY5MjgyNjhl
MDc1MWVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvUmV3cml0ZURvV2hpbGUuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVEb1doaWxlLmNwcApAQCAtMTEsNiAr
MTEsOSBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCiAK
K25hbWVzcGFjZSBzaAoreworCiBuYW1lc3BhY2UKIHsKIApAQCAtNjcsNyArNzAsNyBAQCBjbGFz
cyBEb1doaWxlUmV3cml0ZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgICAgICAgICAg
VFR5cGUgYm9vbFR5cGUgPSBUVHlwZShFYnRCb29sKTsKIAogICAgICAgICAgICAgLy8gYm9vbCB0
ZW1wID0gZmFsc2U7Ci0gICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICp0ZW1wRGVjbGFyYXRp
b24gPSBudWxscHRyOworICAgICAgICAgICAgVEludGVybURlY2xhcmF0aW9uICp0ZW1wRGVjbGFy
YXRpb24gPSBudWxscHRyOwogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFRDb25zdGFu
dFVuaW9uICpmYWxzZUNvbnN0YW50ID0gbmV3IFRDb25zdGFudFVuaW9uKCk7CiAgICAgICAgICAg
ICAgICAgZmFsc2VDb25zdGFudC0+c2V0QkNvbnN0KGZhbHNlKTsKQEAgLTE1MiwzICsxNTUsNSBA
QCB2b2lkIFJld3JpdGVEb1doaWxlKFRJbnRlcm1Ob2RlICpyb290LCB1bnNpZ25lZCBpbnQgKnRl
bXBvcmFyeUluZGV4KQogCiAgICAgcm9vdC0+dHJhdmVyc2UoJnJld3JpdGVyKTsKIH0KKworfSAg
Ly8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlRG9XaGlsZS5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZURvV2hpbGUuaAppbmRleCBmNmVj
MWNhZjA2NzEzOTk3N2E3NzUyMDkwZTU1NDUzZjdiMjA0YTZlLi45MWE3OTU4YzAwNmUzMDdlMTBl
YzdmODJkNWIyYTRhMTczMmExNjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlRG9XaGlsZS5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVEb1doaWxlLmgK
QEAgLTEwLDcgKzEwLDEwIEBACiAjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfUkVXUklURURP
V0hJTEVfSF8KICNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9SRVdSSVRFRE9XSElMRV9IXwog
CituYW1lc3BhY2Ugc2gKK3sKIGNsYXNzIFRJbnRlcm1Ob2RlOwogdm9pZCBSZXdyaXRlRG9XaGls
ZShUSW50ZXJtTm9kZSAqcm9vdCwgdW5zaWduZWQgaW50ICp0ZW1wb3JhcnlJbmRleCk7Cit9ICAv
LyBuYW1lc3BhY2Ugc2gKIAogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1JFV1JJVEVE
T1dISUxFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9SZXdyaXRlRWxzZUJsb2Nrcy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlRWxzZUJsb2Nrcy5jcHAKaW5kZXgg
YWFmYjg2ZjFjOTY0ZmNhYmUxOTJmNjlkM2E0NDA1ZThlMWM4NTM2Mi4uMTVhZWQ0Y2RkMWNjM2Q1
NDJkNDYwMjZiOTQzZjU4NTA0OTQ2NzJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZUVsc2VCbG9ja3MuY3BwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVF
bHNlQmxvY2tzLmNwcApAQCAtMzQsMTUgKzM0LDE0IEBAIGNsYXNzIEVsc2VCbG9ja1Jld3JpdGVy
IDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICBUSW50ZXJtTm9kZSAqcmV3cml0ZUlmRWxz
ZShUSW50ZXJtSWZFbHNlICppZkVsc2UpOwogfTsKIAotRWxzZUJsb2NrUmV3cml0ZXI6OkVsc2VC
bG9ja1Jld3JpdGVyKCkKLSAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIHRydWUp
LAotICAgICAgbUZ1bmN0aW9uVHlwZShOVUxMKQote30KK0Vsc2VCbG9ja1Jld3JpdGVyOjpFbHNl
QmxvY2tSZXdyaXRlcigpIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgdHJ1ZSksIG1G
dW5jdGlvblR5cGUoTlVMTCkKK3sKK30KIAogYm9vbCBFbHNlQmxvY2tSZXdyaXRlcjo6dmlzaXRG
dW5jdGlvbkRlZmluaXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24g
Km5vZGUpCiB7CiAgICAgLy8gU3RvcmUgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY29udGV4dCAoc2Vl
IGNvbW1lbnQgYmVsb3cpCi0gICAgbUZ1bmN0aW9uVHlwZSA9ICgodmlzaXQgPT0gUHJlVmlzaXQp
ID8gJm5vZGUtPmdldFR5cGUoKSA6IG51bGxwdHIpOworICAgIG1GdW5jdGlvblR5cGUgPSAoKHZp
c2l0ID09IFByZVZpc2l0KSA/ICZub2RlLT5nZXRGdW5jdGlvblByb3RvdHlwZSgpLT5nZXRUeXBl
KCkgOiBudWxscHRyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzAsOCArNjksNyBAQCBU
SW50ZXJtTm9kZSAqRWxzZUJsb2NrUmV3cml0ZXI6OnJld3JpdGVJZkVsc2UoVEludGVybUlmRWxz
ZSAqaWZFbHNlKQogCiAgICAgbmV4dFRlbXBvcmFyeUluZGV4KCk7CiAKLSAgICBUSW50ZXJtVHlw
ZWQgKnR5cGVkQ29uZGl0aW9uICAgICA9IGlmRWxzZS0+Z2V0Q29uZGl0aW9uKCktPmdldEFzVHlw
ZWQoKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlICpzdG9yZUNvbmRpdGlvbiA9IGNyZWF0ZVRlbXBJ
bml0RGVjbGFyYXRpb24odHlwZWRDb25kaXRpb24pOworICAgIFRJbnRlcm1EZWNsYXJhdGlvbiAq
c3RvcmVDb25kaXRpb24gPSBjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKGlmRWxzZS0+Z2V0Q29u
ZGl0aW9uKCkpOwogCiAgICAgVEludGVybUJsb2NrICpmYWxzZUJsb2NrID0gbnVsbHB0cjsKIApA
QCAtODYsOSArODQsOSBAQCBUSW50ZXJtTm9kZSAqRWxzZUJsb2NrUmV3cml0ZXI6OnJld3JpdGVJ
ZkVsc2UoVEludGVybUlmRWxzZSAqaWZFbHNlKQogICAgICAgICAvLyByZXR1cm5zICh0aGF0IGFy
ZSB1bnJlYWNoYWJsZSkgd2UgY2FuIHNpbGVuY2UgdGhpcyBjb21waWxlIGVycm9yLgogICAgICAg
ICBpZiAobUZ1bmN0aW9uVHlwZSAmJiBtRnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBF
YnRWb2lkKQogICAgICAgICB7Ci0gICAgICAgICAgICBUU3RyaW5nIHR5cGVTdHJpbmcgPSBtRnVu
Y3Rpb25UeXBlLT5nZXRTdHJ1Y3QoKSA/IG1GdW5jdGlvblR5cGUtPmdldFN0cnVjdCgpLT5uYW1l
KCkgOgotICAgICAgICAgICAgICAgIG1GdW5jdGlvblR5cGUtPmdldEJhc2ljU3RyaW5nKCk7Ci0g
ICAgICAgICAgICBUU3RyaW5nIHJhd1RleHQgPSAicmV0dXJuICgiICsgdHlwZVN0cmluZyArICIp
MCI7CisgICAgICAgICAgICBUU3RyaW5nIHR5cGVTdHJpbmcgPSBtRnVuY3Rpb25UeXBlLT5nZXRT
dHJ1Y3QoKSA/IG1GdW5jdGlvblR5cGUtPmdldFN0cnVjdCgpLT5uYW1lKCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbUZ1bmN0
aW9uVHlwZS0+Z2V0QmFzaWNTdHJpbmcoKTsKKyAgICAgICAgICAgIFRTdHJpbmcgcmF3VGV4dCAg
ICAgICAgPSAicmV0dXJuICgiICsgdHlwZVN0cmluZyArICIpMCI7CiAgICAgICAgICAgICBUSW50
ZXJtUmF3ICpyZXR1cm5Ob2RlID0gbmV3IFRJbnRlcm1SYXcoKm1GdW5jdGlvblR5cGUsIHJhd1Rl
eHQpOwogICAgICAgICAgICAgbmVnYXRlZEVsc2UgICAgICAgICAgICA9IG5ldyBUSW50ZXJtQmxv
Y2soKTsKICAgICAgICAgICAgIG5lZ2F0ZWRFbHNlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2so
cmV0dXJuTm9kZSk7CkBAIC0xMTEsNyArMTA5LDYgQEAgVEludGVybU5vZGUgKkVsc2VCbG9ja1Jl
d3JpdGVyOjpyZXdyaXRlSWZFbHNlKFRJbnRlcm1JZkVsc2UgKmlmRWxzZSkKIAogICAgIHJldHVy
biBibG9jazsKIH0KLQogfQogCiB2b2lkIFJld3JpdGVFbHNlQmxvY2tzKFRJbnRlcm1Ob2RlICpu
b2RlLCB1bnNpZ25lZCBpbnQgKnRlbXBvcmFyeUluZGV4KQpAQCAtMTIwLDUgKzExNyw0IEBAIHZv
aWQgUmV3cml0ZUVsc2VCbG9ja3MoVEludGVybU5vZGUgKm5vZGUsIHVuc2lnbmVkIGludCAqdGVt
cG9yYXJ5SW5kZXgpCiAgICAgcmV3cml0ZXIudXNlVGVtcG9yYXJ5SW5kZXgodGVtcG9yYXJ5SW5k
ZXgpOwogICAgIG5vZGUtPnRyYXZlcnNlKCZyZXdyaXRlcik7CiB9Ci0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVF
bHNlQmxvY2tzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9SZXdyaXRlRWxzZUJsb2Nrcy5oCmluZGV4IDI0YTQyNWU2NmQ1MjMxZjM1NmYzYmJkZDY0
MTIwOWVlMGYwMmI5OTkuLjA1YTg2MzRiZWQwNGNiNmJiMDA2MDAyMjY3YmEwMzllMWEzYmNiZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1Jld3JpdGVFbHNlQmxvY2tzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZUVsc2VCbG9ja3MuaApAQCAtMTYsNyArMTYsNiBA
QCBuYW1lc3BhY2Ugc2gKIHsKIAogdm9pZCBSZXdyaXRlRWxzZUJsb2NrcyhUSW50ZXJtTm9kZSAq
bm9kZSwgdW5zaWduZWQgaW50ICp0ZW1wb3JhcnlJbmRleCk7Ci0KIH0KIAotI2VuZGlmIC8vIENP
TVBJTEVSX1RSQU5TTEFUT1JfUkVXUklURUVMU0VCTE9DS1NfSF8KKyNlbmRpZiAgLy8gQ09NUElM
RVJfVFJBTlNMQVRPUl9SRVdSSVRFRUxTRUJMT0NLU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hP
ZmZzZXQuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuY3BwCmluZGV4IDZkMGM4NjZmODI4ZjE3ZmFkN2Nh
ZjFiZDhkMjNkNWFlMDFkMzUwN2MuLjU1NGIwNDRlY2Y3NWZlZDhkNWUxNGNiODVhMTQyZjIxNDJi
MDU3NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1Jld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVGV4ZWxGZXRjaE9mZnNl
dC5jcHAKQEAgLTIxLDkgKzIxLDcgQEAgbmFtZXNwYWNlCiBjbGFzcyBUcmF2ZXJzZXIgOiBwdWJs
aWMgVEludGVybVRyYXZlcnNlcgogewogICBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgQXBwbHko
VEludGVybU5vZGUgKnJvb3QsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN5bWJvbFRh
YmxlICZzeW1ib2xUYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lv
bik7CisgICAgc3RhdGljIHZvaWQgQXBwbHkoVEludGVybU5vZGUgKnJvb3QsIGNvbnN0IFRTeW1i
b2xUYWJsZSAmc3ltYm9sVGFibGUsIGludCBzaGFkZXJWZXJzaW9uKTsKIAogICBwcml2YXRlOgog
ICAgIFRyYXZlcnNlcihjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLCBpbnQgc2hhZGVy
VmVyc2lvbik7CkBAIC00MSw5ICszOSw3IEBAIFRyYXZlcnNlcjo6VHJhdmVyc2VyKGNvbnN0IFRT
eW1ib2xUYWJsZSAmc3ltYm9sVGFibGUsIGludCBzaGFkZXJWZXJzaW9uKQogfQogCiAvLyBzdGF0
aWMKLXZvaWQgVHJhdmVyc2VyOjpBcHBseShUSW50ZXJtTm9kZSAqcm9vdCwKLSAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLAotICAgICAgICAgICAg
ICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uKQordm9pZCBUcmF2ZXJzZXI6OkFwcGx5KFRJbnRl
cm1Ob2RlICpyb290LCBjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLCBpbnQgc2hhZGVy
VmVyc2lvbikKIHsKICAgICBUcmF2ZXJzZXIgdHJhdmVyc2VyKHN5bWJvbFRhYmxlLCBzaGFkZXJW
ZXJzaW9uKTsKICAgICBkbwpAQCAtNzAsMTIgKzY2LDEyIEBAIGJvb2wgVHJhdmVyc2VyOjp2aXNp
dEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKICAgICB9CiAK
ICAgICAvLyBEZWNpZGUgaWYgdGhlIG5vZGUgcmVwcmVzZW50cyB0aGUgY2FsbCBvZiB0ZXhlbEZl
dGNoT2Zmc2V0LgotICAgIGlmIChub2RlLT5nZXRPcCgpICE9IEVPcEZ1bmN0aW9uQ2FsbCB8fCBu
b2RlLT5pc1VzZXJEZWZpbmVkKCkpCisgICAgaWYgKG5vZGUtPmdldE9wKCkgIT0gRU9wQ2FsbEJ1
aWx0SW5GdW5jdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAg
IGlmIChub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZSgpLmNvbXBhcmUoMCwg
MTYsICJ0ZXhlbEZldGNoT2Zmc2V0IikgIT0gMCkKKyAgICBpZiAobm9kZS0+Z2V0RnVuY3Rpb25T
eW1ib2xJbmZvKCktPmdldE5hbWUoKSAhPSAidGV4ZWxGZXRjaE9mZnNldCIpCiAgICAgewogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC04NCwyOCArODAsMTggQEAgYm9vbCBUcmF2ZXJz
ZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQog
ICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVuY2UgPSBub2RlLT5nZXRTZXF1ZW5jZSgp
OwogICAgIEFTU0VSVChzZXF1ZW5jZS0+c2l6ZSgpID09IDR1KTsKIAotICAgIC8vIERlY2lkZSBp
ZiB0aGVyZSBpcyBhIDJEQXJyYXkgc2FtcGxlci4KLSAgICBib29sIGlzMkRBcnJheSA9IG5vZGUt
PmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lKCkuZmluZCgiczJhMSIpICE9IFRTdHJp
bmc6Om5wb3M7Ci0KLSAgICAvLyBDcmVhdGUgbmV3IGFyZ3VtZW50IGxpc3QgZnJvbSBub2RlLT5n
ZXROYW1lKCkuCi0gICAgLy8gZS5nLiBHZXQgIihpczJhMTt2aTM7aTE7IiBmcm9tICJ0ZXhlbEZl
dGNoT2Zmc2V0KGlzMmExO3ZpMztpMTt2aTI7IgotICAgIFRTdHJpbmcgbmV3QXJncyA9IG5vZGUt
PmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lKCkuc3Vic3RyKAotICAgICAgICAxNiwg
bm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWUoKS5sZW5ndGgoKSAtIDIwKTsK
LSAgICBUU3RyaW5nIG5ld05hbWUgICAgICAgICAgID0gInRleGVsRmV0Y2giICsgbmV3QXJnczsK
LSAgICBUU3ltYm9sICp0ZXhlbEZldGNoU3ltYm9sID0gc3ltYm9sVGFibGUtPmZpbmRCdWlsdElu
KG5ld05hbWUsIHNoYWRlclZlcnNpb24pOwotICAgIEFTU0VSVCh0ZXhlbEZldGNoU3ltYm9sKTsK
LSAgICBpbnQgdW5pcXVlSWQgPSB0ZXhlbEZldGNoU3ltYm9sLT5nZXRVbmlxdWVJZCgpOworICAg
IC8vIERlY2lkZSBpZiB0aGUgc2FtcGxlciBpcyBhIDJEQXJyYXkgc2FtcGxlci4gSW4gdGhhdCBj
YXNlIHBvc2l0aW9uIGlzIGl2ZWMzIGFuZCBvZmZzZXQgaXMKKyAgICAvLyBpdmVjMi4KKyAgICBi
b29sIGlzMkRBcnJheSA9IHNlcXVlbmNlLT5hdCgxKS0+Z2V0QXNUeXBlZCgpLT5nZXROb21pbmFs
U2l6ZSgpID09IDMgJiYKKyAgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlLT5hdCgzKS0+Z2V0
QXNUeXBlZCgpLT5nZXROb21pbmFsU2l6ZSgpID09IDI7CiAKICAgICAvLyBDcmVhdGUgbmV3IG5v
ZGUgdGhhdCByZXByZXNlbnRzIHRoZSBjYWxsIG9mIGZ1bmN0aW9uIHRleGVsRmV0Y2guCiAgICAg
Ly8gSXRzIGFyZ3VtZW50IGxpc3Qgd2lsbCBiZTogdGV4ZWxGZXRjaChzYW1wbGVyLCBQb3NpdGlv
bitvZmZzZXQsIGxvZCkuCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAqdGV4ZWxGZXRjaE5vZGUgPSBu
ZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BGdW5jdGlvbkNhbGwpOwotICAgIHRleGVsRmV0Y2hOb2Rl
LT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+c2V0TmFtZShuZXdOYW1lKTsKLSAgICB0ZXhlbEZl
dGNoTm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPnNldElkKHVuaXF1ZUlkKTsKLSAgICB0
ZXhlbEZldGNoTm9kZS0+c2V0VHlwZShub2RlLT5nZXRUeXBlKCkpOwotICAgIHRleGVsRmV0Y2hO
b2RlLT5zZXRMaW5lKG5vZGUtPmdldExpbmUoKSk7CisKKyAgICBUSW50ZXJtU2VxdWVuY2UgKnRl
eGVsRmV0Y2hBcmd1bWVudHMgPSBuZXcgVEludGVybVNlcXVlbmNlKCk7CiAKICAgICAvLyBzYW1w
bGVyCi0gICAgdGV4ZWxGZXRjaE5vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhzZXF1ZW5j
ZS0+YXQoMCkpOworICAgIHRleGVsRmV0Y2hBcmd1bWVudHMtPnB1c2hfYmFjayhzZXF1ZW5jZS0+
YXQoMCkpOwogCiAgICAgLy8gUG9zaXRpb24KICAgICBUSW50ZXJtVHlwZWQgKnRleENvb3JkTm9k
ZSA9IHNlcXVlbmNlLT5hdCgxKS0+Z2V0QXNUeXBlZCgpOwpAQCAtMTE4LDIwICsxMDQsMTUgQEAg
Ym9vbCBUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVn
YXRlICpub2RlKQogICAgIHsKICAgICAgICAgLy8gRm9yIDJEQXJyYXkgc2FtcGxlcnMsIFBvc2l0
aW9uIGlzIGl2ZWMzIGFuZCBvZmZzZXQgaXMgaXZlYzI7CiAgICAgICAgIC8vIFNvIG9mZnNldCBt
dXN0IGJlIGNvbnZlcnRlZCBpbnRvIGFuIGl2ZWMzIGJlZm9yZSBiZWluZyBhZGRlZCB0byBQb3Np
dGlvbi4KLSAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqY29uc3RydWN0SVZlYzNOb2RlID0gbmV3
IFRJbnRlcm1BZ2dyZWdhdGUoRU9wQ29uc3RydWN0SVZlYzMpOwotICAgICAgICBjb25zdHJ1Y3RJ
VmVjM05vZGUtPnNldExpbmUodGV4Q29vcmROb2RlLT5nZXRMaW5lKCkpOwotICAgICAgICBjb25z
dHJ1Y3RJVmVjM05vZGUtPnNldFR5cGUodGV4Q29vcmROb2RlLT5nZXRUeXBlKCkpOwotCi0gICAg
ICAgIGNvbnN0cnVjdElWZWMzTm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKHNlcXVlbmNl
LT5hdCgzKS0+Z2V0QXNUeXBlZCgpKTsKKyAgICAgICAgVEludGVybVNlcXVlbmNlICpjb25zdHJ1
Y3RPZmZzZXRJdmVjQXJndW1lbnRzID0gbmV3IFRJbnRlcm1TZXF1ZW5jZSgpOworICAgICAgICBj
b25zdHJ1Y3RPZmZzZXRJdmVjQXJndW1lbnRzLT5wdXNoX2JhY2soc2VxdWVuY2UtPmF0KDMpLT5n
ZXRBc1R5cGVkKCkpOwogCi0gICAgICAgIFRDb25zdGFudFVuaW9uICp6ZXJvID0gbmV3IFRDb25z
dGFudFVuaW9uKCk7Ci0gICAgICAgIHplcm8tPnNldElDb25zdCgwKTsKLSAgICAgICAgVFR5cGUg
KmludFR5cGUgPSBuZXcgVFR5cGUoRWJ0SW50KTsKKyAgICAgICAgVEludGVybVR5cGVkICp6ZXJv
Tm9kZSA9IFRJbnRlcm1UeXBlZDo6Q3JlYXRlWmVybyhUVHlwZShFYnRJbnQpKTsKKyAgICAgICAg
Y29uc3RydWN0T2Zmc2V0SXZlY0FyZ3VtZW50cy0+cHVzaF9iYWNrKHplcm9Ob2RlKTsKIAotICAg
ICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqemVyb05vZGUgPSBuZXcgVEludGVybUNvbnN0YW50
VW5pb24oemVybywgKmludFR5cGUpOwotICAgICAgICBjb25zdHJ1Y3RJVmVjM05vZGUtPmdldFNl
cXVlbmNlKCktPnB1c2hfYmFjayh6ZXJvTm9kZSk7Ci0KLSAgICAgICAgb2Zmc2V0Tm9kZSA9IGNv
bnN0cnVjdElWZWMzTm9kZTsKKyAgICAgICAgb2Zmc2V0Tm9kZSA9IFRJbnRlcm1BZ2dyZWdhdGU6
OkNyZWF0ZUNvbnN0cnVjdG9yKHRleENvb3JkTm9kZS0+Z2V0VHlwZSgpLCBFT3BDb25zdHJ1Y3RJ
VmVjMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0cnVjdE9mZnNldEl2ZWNBcmd1bWVudHMpOworICAgICAgICBvZmZzZXROb2Rl
LT5zZXRMaW5lKHRleENvb3JkTm9kZS0+Z2V0TGluZSgpKTsKICAgICB9CiAgICAgZWxzZQogICAg
IHsKQEAgLTE0MSwxMiArMTIyLDIxIEBAIGJvb2wgVHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShW
aXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKICAgICAvLyBQb3NpdGlvbitvZmZz
ZXQKICAgICBUSW50ZXJtQmluYXJ5ICphZGQgPSBuZXcgVEludGVybUJpbmFyeShFT3BBZGQsIHRl
eENvb3JkTm9kZSwgb2Zmc2V0Tm9kZSk7CiAgICAgYWRkLT5zZXRMaW5lKHRleENvb3JkTm9kZS0+
Z2V0TGluZSgpKTsKLSAgICB0ZXhlbEZldGNoTm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNr
KGFkZCk7CisgICAgdGV4ZWxGZXRjaEFyZ3VtZW50cy0+cHVzaF9iYWNrKGFkZCk7CiAKICAgICAv
LyBsb2QKLSAgICB0ZXhlbEZldGNoTm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKHNlcXVl
bmNlLT5hdCgyKSk7CisgICAgdGV4ZWxGZXRjaEFyZ3VtZW50cy0+cHVzaF9iYWNrKHNlcXVlbmNl
LT5hdCgyKSk7CisKKyAgICBBU1NFUlQodGV4ZWxGZXRjaEFyZ3VtZW50cy0+c2l6ZSgpID09IDN1
KTsKIAotICAgIEFTU0VSVCh0ZXhlbEZldGNoTm9kZS0+Z2V0U2VxdWVuY2UoKS0+c2l6ZSgpID09
IDN1KTsKKyAgICAvLyBHZXQgdGhlIHN5bWJvbCBvZiB0aGUgdGV4ZWwgZmV0Y2ggZnVuY3Rpb24g
dG8gdXNlLgorICAgIFRTdHJpbmcgbWFuZ2xlZE5hbWUgPSBURnVuY3Rpb246OkdldE1hbmdsZWRO
YW1lRnJvbUNhbGwoInRleGVsRmV0Y2giLCAqdGV4ZWxGZXRjaEFyZ3VtZW50cyk7CisgICAgVFN5
bWJvbCAqdGV4ZWxGZXRjaFN5bWJvbCA9IHN5bWJvbFRhYmxlLT5maW5kQnVpbHRJbihtYW5nbGVk
TmFtZSwgc2hhZGVyVmVyc2lvbik7CisgICAgQVNTRVJUKHRleGVsRmV0Y2hTeW1ib2wgJiYgdGV4
ZWxGZXRjaFN5bWJvbC0+aXNGdW5jdGlvbigpKTsKKworICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnRl
eGVsRmV0Y2hOb2RlID0gVEludGVybUFnZ3JlZ2F0ZTo6Q3JlYXRlQnVpbHRJbkZ1bmN0aW9uQ2Fs
bCgKKyAgICAgICAgKnN0YXRpY19jYXN0PGNvbnN0IFRGdW5jdGlvbiAqPih0ZXhlbEZldGNoU3lt
Ym9sKSwgdGV4ZWxGZXRjaEFyZ3VtZW50cyk7CisgICAgdGV4ZWxGZXRjaE5vZGUtPnNldExpbmUo
bm9kZS0+Z2V0TGluZSgpKTsKIAogICAgIC8vIFJlcGxhY2UgdGhlIG9sZCBub2RlIGJ5IHRoaXMg
bmV3IG5vZGUuCiAgICAgcXVldWVSZXBsYWNlbWVudChub2RlLCB0ZXhlbEZldGNoTm9kZSwgT3Jp
Z2luYWxOb2RlOjpJU19EUk9QUEVEKTsKQEAgLTE1Niw5ICsxNDYsNyBAQCBib29sIFRyYXZlcnNl
cjo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCiAK
IH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotdm9pZCBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNl
dChUSW50ZXJtTm9kZSAqcm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHNoYWRlclZlcnNpb24pCit2b2lkIFJld3JpdGVUZXhlbEZldGNoT2Zmc2V0KFRJbnRlcm1O
b2RlICpyb290LCBjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLCBpbnQgc2hhZGVyVmVy
c2lvbikKIHsKICAgICAvLyB0ZXhlbEZldGNoT2Zmc2V0IGlzIG9ubHkgdmFsaWQgaW4gR0xTTCAz
LjAgYW5kIGxhdGVyLgogICAgIGlmIChzaGFkZXJWZXJzaW9uIDwgMzAwKQpAQCAtMTY3LDQgKzE1
NSw0IEBAIHZvaWQgUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQoVEludGVybU5vZGUgKnJvb3QsCiAg
ICAgVHJhdmVyc2VyOjpBcHBseShyb290LCBzeW1ib2xUYWJsZSwgc2hhZGVyVmVyc2lvbik7CiB9
CiAKLX0gIC8vIG5hbWVzcGFjZSBzaAorfSAgLy8gbmFtZXNwYWNlIHNoClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVUZXhlbEZldGNoT2Zm
c2V0LmgKaW5kZXggYzZkYjY2NDU3MjVmYWMyZDk4YTIzZmY3ZWFhYzdiMjdhNWIzMDQyNS4uNjk0
ZDcwOWY4ZTY3YmE5NmRmZTEzOTIwYzA4OWVhMjQ1MjlhNTdiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0
Y2hPZmZzZXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9SZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5oCkBAIC0yMSwxMCArMjEsOCBAQCBjbGFz
cyBUU3ltYm9sVGFibGU7CiBuYW1lc3BhY2Ugc2gKIHsKIAotdm9pZCBSZXdyaXRlVGV4ZWxGZXRj
aE9mZnNldChUSW50ZXJtTm9kZSAqcm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHNoYWRlclZlcnNpb24pOwordm9pZCBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldChU
SW50ZXJtTm9kZSAqcm9vdCwgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwgaW50IHNo
YWRlclZlcnNpb24pOwogCiB9ICAvLyBuYW1lc3BhY2Ugc2gKIAotI2VuZGlmICAvLyBDT01QSUxF
Ul9UUkFOU0xBVE9SX1JFV1JJVEVfVEVYRUxGRVRDSE9GRlNFVF9IXworI2VuZGlmICAvLyBDT01Q
SUxFUl9UUkFOU0xBVE9SX1JFV1JJVEVfVEVYRUxGRVRDSE9GRlNFVF9IXwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVW5h
cnlNaW51c09wZXJhdG9yRmxvYXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEzNTBjNWU4NTM5NGI4ZDI4MmEz
MDk4ZTE4NzliZTBjYTU5MTIwMDYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJhdG9y
RmxvYXQuY3BwCkBAIC0wLDAgKzEsOTMgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJhdG9yRmxvYXQuaCIKKworI2lu
Y2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgorCituYW1lc3BhY2Ugc2gK
K3sKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIFRyYXZlcnNlciA6IHB1YmxpYyBUSW50ZXJtVHJh
dmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBBcHBseShUSW50ZXJtTm9kZSAq
cm9vdCk7CisKKyAgcHJpdmF0ZToKKyAgICBUcmF2ZXJzZXIoKTsKKyAgICBib29sIHZpc2l0VW5h
cnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1VbmFyeSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBu
ZXh0SXRlcmF0aW9uKCk7CisKKyAgICBib29sIG1Gb3VuZCA9IGZhbHNlOworfTsKKworLy8gc3Rh
dGljCit2b2lkIFRyYXZlcnNlcjo6QXBwbHkoVEludGVybU5vZGUgKnJvb3QpCit7CisgICAgVHJh
dmVyc2VyIHRyYXZlcnNlcjsKKyAgICBkbworICAgIHsKKyAgICAgICAgdHJhdmVyc2VyLm5leHRJ
dGVyYXRpb24oKTsKKyAgICAgICAgcm9vdC0+dHJhdmVyc2UoJnRyYXZlcnNlcik7CisgICAgICAg
IGlmICh0cmF2ZXJzZXIubUZvdW5kKQorICAgICAgICB7CisgICAgICAgICAgICB0cmF2ZXJzZXIu
dXBkYXRlVHJlZSgpOworICAgICAgICB9CisgICAgfSB3aGlsZSAodHJhdmVyc2VyLm1Gb3VuZCk7
Cit9CisKK1RyYXZlcnNlcjo6VHJhdmVyc2VyKCkgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZh
bHNlLCBmYWxzZSkKK3sKK30KKwordm9pZCBUcmF2ZXJzZXI6Om5leHRJdGVyYXRpb24oKQorewor
ICAgIG1Gb3VuZCA9IGZhbHNlOworfQorCitib29sIFRyYXZlcnNlcjo6dmlzaXRVbmFyeShWaXNp
dCB2aXNpdCwgVEludGVybVVuYXJ5ICpub2RlKQoreworICAgIGlmIChtRm91bmQpCisgICAgewor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gRGV0ZWN0IGlmIHRoZSBjdXJy
ZW50IG9wZXJhdG9yIGlzIHVuYXJ5IG1pbnVzIG9wZXJhdG9yLgorICAgIGlmIChub2RlLT5nZXRP
cCgpICE9IEVPcE5lZ2F0aXZlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgLy8gRGV0ZWN0IGlmIHRoZSBjdXJyZW50IG9wZXJhbmQgaXMgYSBmbG9hdCB2YXJpYWJs
ZS4KKyAgICBUSW50ZXJtVHlwZWQgKmZWYWx1ZSA9IG5vZGUtPmdldE9wZXJhbmQoKTsKKyAgICBp
ZiAoIWZWYWx1ZS0+Z2V0VHlwZSgpLmlzU2NhbGFyRmxvYXQoKSkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIC8vIDAuMCAtIGZsb2F0CisgICAgVEludGVybVR5cGVk
ICp6ZXJvID0gVEludGVybVR5cGVkOjpDcmVhdGVaZXJvKGZWYWx1ZS0+Z2V0VHlwZSgpKTsKKyAg
ICB6ZXJvLT5zZXRMaW5lKGZWYWx1ZS0+Z2V0TGluZSgpKTsKKyAgICBUSW50ZXJtQmluYXJ5ICpz
dWIgPSBuZXcgVEludGVybUJpbmFyeShFT3BTdWIsIHplcm8sIGZWYWx1ZSk7CisgICAgc3ViLT5z
ZXRMaW5lKGZWYWx1ZS0+Z2V0TGluZSgpKTsKKworICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwg
c3ViLCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOworCisgICAgbUZvdW5kID0gdHJ1ZTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKwordm9pZCBS
ZXdyaXRlVW5hcnlNaW51c09wZXJhdG9yRmxvYXQoVEludGVybU5vZGUgKnJvb3QpCit7CisgICAg
VHJhdmVyc2VyOjpBcHBseShyb290KTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdy
aXRlVW5hcnlNaW51c09wZXJhdG9yRmxvYXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNjYmZiY2JkOWU1MWNhMTEyOGJjMzZiY2Q4NzI1MDhjZjEwNzZmYzcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJhdG9yRmxvYXQuaApAQCAtMCwwICsxLDE5IEBACisv
LyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworLy8gUmV3cml0ZSAiLWZsb2F0IiB0byAiMC4wIC0gZmxvYXQiIHRvIHdvcmsgYXJv
dW5kIHVuYXJ5IG1pbnVzIG9wZXJhdG9yIG9uIGZsb2F0IGlzc3VlIG9uIEludGVsIE1hYworLy8g
T1NYIDEwLjExLgorCisjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfUkVXUklURVVOQVJZTUlO
VVNPUEVSQVRPUkZMT0FUX0hfCisjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfUkVXUklURVVO
QVJZTUlOVVNPUEVSQVRPUkZMT0FUX0hfCisKK2NsYXNzIFRJbnRlcm1Ob2RlOworbmFtZXNwYWNl
IHNoCit7CisKK3ZvaWQgUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckZsb2F0KFRJbnRlcm1Ob2Rl
ICpyb290KTsKKworfSAgLy8gbmFtZXNwYWNlIHNoCisKKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJB
TlNMQVRPUl9SRVdSSVRFVU5BUllNSU5VU09QRVJBVE9SRkxPQVRfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVVbmFy
eU1pbnVzT3BlcmF0b3JJbnQuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5jcHAKaW5kZXggZDIw
NTgwNTA3YjAxYmJjZjE0NzY3YmEwNGI0OGZhODk2YWRiODM5Ni4uZWY3MDhjYjJlMmUzZDU4ZTBi
ODYzNzcxOGFkYmIxN2Q2YjgxOGRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
UmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5jcHAKQEAgLTEwOSw0ICsxMDksNCBAQCB2b2lk
IFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQoVEludGVybU5vZGUgKnJvb3QpCiAgICAgVHJh
dmVyc2VyOjpBcHBseShyb290KTsKIH0KIAotfSAgLy8gbmFtZXNwYWNlIHNoCit9ICAvLyBuYW1l
c3BhY2Ugc2gKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51
c09wZXJhdG9ySW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmgKaW5kZXggODAyZWQ1NzQ4ZjEy
MzI0NjM3YjcwMjYzMGFiNmVkN2EyNmZkMGYxMy4uNTBmMGM0NDJhNzMzYjAxZTA1ZGY5ZmZhZmE1
NTUzY2I2NzY0MmY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVVbmFy
eU1pbnVzT3BlcmF0b3JJbnQuaApAQCAtMTcsNCArMTcsNCBAQCB2b2lkIFJld3JpdGVVbmFyeU1p
bnVzT3BlcmF0b3JJbnQoVEludGVybU5vZGUgKnJvb3QpOwogCiB9ICAvLyBuYW1lc3BhY2Ugc2gK
IAotI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1JFV1JJVEVVTkFSWU1JTlVTT1BFUkFU
T1JJTlRfSF8KKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9SRVdSSVRFVU5BUllNSU5V
U09QRVJBVE9SSU5UX0hfClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2NhbGFyaXpl
VmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1NjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5j
cHAKaW5kZXggOTY3ODliZGNmNjQ3MDNmZmRlZGVkNDFiMTkyOTYzZjkyNjFjZjY3ZS4uOGEyOTI5
ZWYyY2MwOWM3OGFlMWVlNDA3NDc1NzFhM2ZkYzI5ODAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2NhbGFyaXplVmVjQW5kTWF0
Q29uc3RydWN0b3JBcmdzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9TY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3MuY3BwCkBA
IC0zLDYgKzMsMTAgQEAKIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCiAvLworLy8gU2NhbGFyaXplIHZlY3RvciBhbmQgbWF0cml4IGNvbnN0cnVjdG9yIGFy
Z3MsIHNvIHRoYXQgdmVjdG9ycyBidWlsdCBmcm9tIGNvbXBvbmVudHMgZG9uJ3QgaGF2ZQorLy8g
bWF0cml4IGFyZ3VtZW50cywgYW5kIG1hdHJpY2VzIGJ1aWx0IGZyb20gY29tcG9uZW50cyBkb24n
dCBoYXZlIHZlY3RvciBhcmd1bWVudHMuIFRoaXMgYXZvaWRzCisvLyBkcml2ZXIgYnVncyBhcm91
bmQgdmVjdG9yIGFuZCBtYXRyaXggY29uc3RydWN0b3JzLgorLy8KIAogI2luY2x1ZGUgImNvbW1v
bi9kZWJ1Zy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU2NhbGFyaXplVmVjQW5k
TWF0Q29uc3RydWN0b3JBcmdzLmgiCkBAIC0xMSw2ICsxNSwxMCBAQAogCiAjaW5jbHVkZSAiYW5n
bGVfZ2wuaCIKICNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgorCituYW1lc3BhY2Ugc2gKK3sKIAogbmFtZXNw
YWNlCiB7CkBAIC00Miw1NiArNTAsODkgQEAgVEludGVybUJpbmFyeSAqQ29uc3RydWN0VmVjdG9y
SW5kZXhCaW5hcnlOb2RlKFRJbnRlcm1TeW1ib2wgKnN5bWJvbE5vZGUsIGludCBpbmQKICAgICBy
ZXR1cm4gbmV3IFRJbnRlcm1CaW5hcnkoRU9wSW5kZXhEaXJlY3QsIHN5bWJvbE5vZGUsIFRJbnRl
cm1UeXBlZDo6Q3JlYXRlSW5kZXhOb2RlKGluZGV4KSk7CiB9CiAKLVRJbnRlcm1CaW5hcnkgKkNv
bnN0cnVjdE1hdHJpeEluZGV4QmluYXJ5Tm9kZSgKLSAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2xO
b2RlLCBpbnQgY29sSW5kZXgsIGludCByb3dJbmRleCkKK1RJbnRlcm1CaW5hcnkgKkNvbnN0cnVj
dE1hdHJpeEluZGV4QmluYXJ5Tm9kZShUSW50ZXJtU3ltYm9sICpzeW1ib2xOb2RlLCBpbnQgY29s
SW5kZXgsIGludCByb3dJbmRleCkKIHsKLSAgICBUSW50ZXJtQmluYXJ5ICpjb2xWZWN0b3JOb2Rl
ID0KLSAgICAgICAgQ29uc3RydWN0VmVjdG9ySW5kZXhCaW5hcnlOb2RlKHN5bWJvbE5vZGUsIGNv
bEluZGV4KTsKKyAgICBUSW50ZXJtQmluYXJ5ICpjb2xWZWN0b3JOb2RlID0gQ29uc3RydWN0VmVj
dG9ySW5kZXhCaW5hcnlOb2RlKHN5bWJvbE5vZGUsIGNvbEluZGV4KTsKIAogICAgIHJldHVybiBu
ZXcgVEludGVybUJpbmFyeShFT3BJbmRleERpcmVjdCwgY29sVmVjdG9yTm9kZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkOjpDcmVhdGVJbmRleE5vZGUocm93SW5k
ZXgpKTsKIH0KIAotfSAgLy8gbmFtZXNwYWNlIGFub255bW91cworY2xhc3MgU2NhbGFyaXplQXJn
c1RyYXZlcnNlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICBT
Y2FsYXJpemVBcmdzVHJhdmVyc2VyKHNoOjpHTGVudW0gc2hhZGVyVHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgZnJhZ21lbnRQcmVjaXNpb25IaWdoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICp0ZW1wb3JhcnlJbmRleCkKKyAgICAgICAgOiBU
SW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksCisgICAgICAgICAgbVNoYWRlclR5
cGUoc2hhZGVyVHlwZSksCisgICAgICAgICAgbUZyYWdtZW50UHJlY2lzaW9uSGlnaChmcmFnbWVu
dFByZWNpc2lvbkhpZ2gpCisgICAgeworICAgICAgICB1c2VUZW1wb3JhcnlJbmRleCh0ZW1wb3Jh
cnlJbmRleCk7CisgICAgfQorCisgIHByb3RlY3RlZDoKKyAgICBib29sIHZpc2l0QWdncmVnYXRl
KFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKSBvdmVycmlkZTsKKyAgICBib29s
IHZpc2l0QmxvY2soVmlzaXQgdmlzaXQsIFRJbnRlcm1CbG9jayAqbm9kZSkgb3ZlcnJpZGU7CisK
KyAgcHJpdmF0ZToKKyAgICB2b2lkIHNjYWxhcml6ZUFyZ3MoVEludGVybUFnZ3JlZ2F0ZSAqYWdn
cmVnYXRlLCBib29sIHNjYWxhcml6ZVZlY3RvciwgYm9vbCBzY2FsYXJpemVNYXRyaXgpOworCisg
ICAgLy8gSWYgd2UgaGF2ZSB0aGUgZm9sbG93aW5nIGNvZGU6CisgICAgLy8gICBtYXQ0IG0oMCk7
CisgICAgLy8gICB2ZWM0IHYoMSwgbSk7CisgICAgLy8gV2Ugd2lsbCByZXdyaXRlIHRvOgorICAg
IC8vICAgbWF0NCBtKDApOworICAgIC8vICAgbWF0NCBzMCA9IG07CisgICAgLy8gICB2ZWM0IHYo
MSwgczBbMF1bMF0sIHMwWzBdWzFdLCBzMFswXVsyXSk7CisgICAgLy8gVGhpcyBmdW5jdGlvbiBp
cyB0byBjcmVhdGUgbm9kZXMgZm9yICJtYXQ0IHMwID0gbTsiIGFuZCBpbnNlcnQgaXQgdG8gdGhl
IGNvZGUgc2VxdWVuY2UuIFRoaXMKKyAgICAvLyB3YXkgdGhlIHBvc3NpYmxlIHNpZGUgZWZmZWN0
cyBvZiB0aGUgY29uc3RydWN0b3IgYXJndW1lbnQgd2lsbCBvbmx5IGJlIGV2YWx1YXRlZCBvbmNl
LgorICAgIHZvaWQgY3JlYXRlVGVtcFZhcmlhYmxlKFRJbnRlcm1UeXBlZCAqb3JpZ2luYWwpOwog
Ci1ib29sIFNjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJnczo6dmlzaXRBZ2dyZWdhdGUo
VmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCisgICAgc3RkOjp2ZWN0b3I8VElu
dGVybVNlcXVlbmNlPiBtQmxvY2tTdGFjazsKKworICAgIHNoOjpHTGVudW0gbVNoYWRlclR5cGU7
CisgICAgYm9vbCBtRnJhZ21lbnRQcmVjaXNpb25IaWdoOworfTsKKworYm9vbCBTY2FsYXJpemVB
cmdzVHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0
ZSAqbm9kZSkKIHsKICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCiAgICAgewogICAgICAgICBz
d2l0Y2ggKG5vZGUtPmdldE9wKCkpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIEVPcENvbnN0
cnVjdFZlYzI6Ci0gICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMzOgotICAgICAgICAgIGNh
c2UgRU9wQ29uc3RydWN0VmVjNDoKLSAgICAgICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWMyOgot
ICAgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0QlZlYzM6Ci0gICAgICAgICAgY2FzZSBFT3BDb25z
dHJ1Y3RCVmVjNDoKLSAgICAgICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWMyOgotICAgICAgICAg
IGNhc2UgRU9wQ29uc3RydWN0SVZlYzM6Ci0gICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RJVmVj
NDoKLSAgICAgICAgICAgIGlmIChDb250YWluc01hdHJpeE5vZGUoKihub2RlLT5nZXRTZXF1ZW5j
ZSgpKSkpCi0gICAgICAgICAgICAgICAgc2NhbGFyaXplQXJncyhub2RlLCBmYWxzZSwgdHJ1ZSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDI6Ci0g
ICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyeDM6Ci0gICAgICAgICAgY2FzZSBFT3BDb25z
dHJ1Y3RNYXQyeDQ6Ci0gICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzeDI6Ci0gICAgICAg
ICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzOgotICAgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0
M3g0OgotICAgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NHgyOgotICAgICAgICAgIGNhc2Ug
RU9wQ29uc3RydWN0TWF0NHgzOgotICAgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NDoKLSAg
ICAgICAgICAgIGlmIChDb250YWluc1ZlY3Rvck5vZGUoKihub2RlLT5nZXRTZXF1ZW5jZSgpKSkp
Ci0gICAgICAgICAgICAgICAgc2NhbGFyaXplQXJncyhub2RlLCB0cnVlLCBmYWxzZSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIEVPcENvbnN0cnVjdFZlYzI6CisgICAgICAgICAgICBjYXNlIEVPcENv
bnN0cnVjdFZlYzM6CisgICAgICAgICAgICBjYXNlIEVPcENvbnN0cnVjdFZlYzQ6CisgICAgICAg
ICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWMyOgorICAgICAgICAgICAgY2FzZSBFT3BDb25zdHJ1
Y3RCVmVjMzoKKyAgICAgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0QlZlYzQ6CisgICAgICAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdElWZWMyOgorICAgICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RJ
VmVjMzoKKyAgICAgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0SVZlYzQ6CisgICAgICAgICAgICAg
ICAgaWYgKENvbnRhaW5zTWF0cml4Tm9kZSgqKG5vZGUtPmdldFNlcXVlbmNlKCkpKSkKKyAgICAg
ICAgICAgICAgICAgICAgc2NhbGFyaXplQXJncyhub2RlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDI6CisgICAg
ICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDJ4MzoKKyAgICAgICAgICAgIGNhc2UgRU9wQ29u
c3RydWN0TWF0Mng0OgorICAgICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzeDI6CisgICAg
ICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDM6CisgICAgICAgICAgICBjYXNlIEVPcENvbnN0
cnVjdE1hdDN4NDoKKyAgICAgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NHgyOgorICAgICAg
ICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0eDM6CisgICAgICAgICAgICBjYXNlIEVPcENvbnN0
cnVjdE1hdDQ6CisgICAgICAgICAgICAgICAgaWYgKENvbnRhaW5zVmVjdG9yTm9kZSgqKG5vZGUt
PmdldFNlcXVlbmNlKCkpKSkKKyAgICAgICAgICAgICAgICAgICAgc2NhbGFyaXplQXJncyhub2Rl
LCB0cnVlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIFNjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJnczo6dmlz
aXRCbG9jayhWaXNpdCB2aXNpdCwgVEludGVybUJsb2NrICpub2RlKQorYm9vbCBTY2FsYXJpemVB
cmdzVHJhdmVyc2VyOjp2aXNpdEJsb2NrKFZpc2l0IHZpc2l0LCBUSW50ZXJtQmxvY2sgKm5vZGUp
CiB7CiAgICAgbUJsb2NrU3RhY2sucHVzaF9iYWNrKFRJbnRlcm1TZXF1ZW5jZSgpKTsKICAgICB7
CkBAIC0xMTEsNDkgKzE1Miw1MCBAQCBib29sIFNjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9y
QXJnczo6dmlzaXRCbG9jayhWaXNpdCB2aXNpdCwgVEludGVybUJsb2NrICpubwogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBTY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3M6OnNj
YWxhcml6ZUFyZ3MoCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlLCBib29sIHNjYWxh
cml6ZVZlY3RvciwgYm9vbCBzY2FsYXJpemVNYXRyaXgpCit2b2lkIFNjYWxhcml6ZUFyZ3NUcmF2
ZXJzZXI6OnNjYWxhcml6ZUFyZ3MoVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2NhbGFyaXplVmVjdG9y
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2NhbGFy
aXplTWF0cml4KQogewogICAgIEFTU0VSVChhZ2dyZWdhdGUpOwogICAgIGludCBzaXplID0gMDsK
ICAgICBzd2l0Y2ggKGFnZ3JlZ2F0ZS0+Z2V0T3AoKSkKICAgICB7Ci0gICAgICBjYXNlIEVPcENv
bnN0cnVjdFZlYzI6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWMyOgotICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RJVmVjMjoKLSAgICAgICAgc2l6ZSA9IDI7Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMzOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVjMzoK
LSAgICAgIGNhc2UgRU9wQ29uc3RydWN0SVZlYzM6Ci0gICAgICAgIHNpemUgPSAzOwotICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjNDoKLSAgICAgIGNhc2UgRU9wQ29u
c3RydWN0QlZlYzQ6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWM0OgotICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RNYXQyOgotICAgICAgICBzaXplID0gNDsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcENvbnN0cnVjdE1hdDJ4MzoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0M3gy
OgotICAgICAgICBzaXplID0gNjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcENvbnN0
cnVjdE1hdDJ4NDoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NHgyOgotICAgICAgICBzaXpl
ID0gODsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDM6Ci0gICAg
ICAgIHNpemUgPSA5OwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0
M3g0OgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0eDM6Ci0gICAgICAgIHNpemUgPSAxMjsK
LSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDQ6Ci0gICAgICAgIHNp
emUgPSAxNjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMyOgorICAgICAgICBjYXNlIEVPcENvbnN0cnVj
dEJWZWMyOgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWMyOgorICAgICAgICAgICAgc2l6
ZSA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMz
OgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWMzOgorICAgICAgICBjYXNlIEVPcENvbnN0
cnVjdElWZWMzOgorICAgICAgICAgICAgc2l6ZSA9IDM7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWM0OgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdEJW
ZWM0OgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWM0OgorICAgICAgICBjYXNlIEVPcENv
bnN0cnVjdE1hdDI6CisgICAgICAgICAgICBzaXplID0gNDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDJ4MzoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1
Y3RNYXQzeDI6CisgICAgICAgICAgICBzaXplID0gNjsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDJ4NDoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RN
YXQ0eDI6CisgICAgICAgICAgICBzaXplID0gODsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdE1hdDM6CisgICAgICAgICAgICBzaXplID0gOTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4NDoKKyAgICAgICAgY2Fz
ZSBFT3BDb25zdHJ1Y3RNYXQ0eDM6CisgICAgICAgICAgICBzaXplID0gMTI7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0OgorICAgICAgICAgICAgc2l6
ZSA9IDE2OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9IGFnZ3JlZ2F0
ZS0+Z2V0U2VxdWVuY2UoKTsKICAgICBUSW50ZXJtU2VxdWVuY2Ugb3JpZ2luYWwoKnNlcXVlbmNl
KTsKQEAgLTE2MywxMiArMjA1LDEwIEBAIHZvaWQgU2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0
b3JBcmdzOjpzY2FsYXJpemVBcmdzKAogICAgICAgICBBU1NFUlQoc2l6ZSA+IDApOwogICAgICAg
ICBUSW50ZXJtVHlwZWQgKm5vZGUgPSBvcmlnaW5hbFtpaV0tPmdldEFzVHlwZWQoKTsKICAgICAg
ICAgQVNTRVJUKG5vZGUpOwotICAgICAgICBUU3RyaW5nIHZhck5hbWUgPSBjcmVhdGVUZW1wVmFy
aWFibGUobm9kZSk7CisgICAgICAgIGNyZWF0ZVRlbXBWYXJpYWJsZShub2RlKTsKICAgICAgICAg
aWYgKG5vZGUtPmlzU2NhbGFyKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRJbnRlcm1TeW1i
b2wgKnN5bWJvbE5vZGUgPQotICAgICAgICAgICAgICAgIG5ldyBUSW50ZXJtU3ltYm9sKC0xLCB2
YXJOYW1lLCBub2RlLT5nZXRUeXBlKCkpOwotICAgICAgICAgICAgc2VxdWVuY2UtPnB1c2hfYmFj
ayhzeW1ib2xOb2RlKTsKKyAgICAgICAgICAgIHNlcXVlbmNlLT5wdXNoX2JhY2soY3JlYXRlVGVt
cFN5bWJvbChub2RlLT5nZXRUeXBlKCkpKTsKICAgICAgICAgICAgIHNpemUtLTsKICAgICAgICAg
fQogICAgICAgICBlbHNlIGlmIChub2RlLT5pc1ZlY3RvcigpKQpAQCAtMTc5LDE3ICsyMTksMTQg
QEAgdm9pZCBTY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3M6OnNjYWxhcml6ZUFyZ3Mo
CiAgICAgICAgICAgICAgICAgc2l6ZSAtPSByZXBlYXQ7CiAgICAgICAgICAgICAgICAgZm9yIChp
bnQgaW5kZXggPSAwOyBpbmRleCA8IHJlcGVhdDsgKytpbmRleCkKICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbE5vZGUgPQotICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3IFRJbnRlcm1TeW1ib2woLTEsIHZhck5hbWUsIG5vZGUtPmdl
dFR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKm5ld05vZGUgPSBD
b25zdHJ1Y3RWZWN0b3JJbmRleEJpbmFyeU5vZGUoCi0gICAgICAgICAgICAgICAgICAgICAgICBz
eW1ib2xOb2RlLCBpbmRleCk7CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5
bWJvbE5vZGUgPSBjcmVhdGVUZW1wU3ltYm9sKG5vZGUtPmdldFR5cGUoKSk7CisgICAgICAgICAg
ICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKm5ld05vZGUgICAgPSBDb25zdHJ1Y3RWZWN0b3JJbmRl
eEJpbmFyeU5vZGUoc3ltYm9sTm9kZSwgaW5kZXgpOwogICAgICAgICAgICAgICAgICAgICBzZXF1
ZW5jZS0+cHVzaF9iYWNrKG5ld05vZGUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBUSW50
ZXJtU3ltYm9sICpzeW1ib2xOb2RlID0KLSAgICAgICAgICAgICAgICAgICAgbmV3IFRJbnRlcm1T
eW1ib2woLTEsIHZhck5hbWUsIG5vZGUtPmdldFR5cGUoKSk7CisgICAgICAgICAgICAgICAgVElu
dGVybVN5bWJvbCAqc3ltYm9sTm9kZSA9IGNyZWF0ZVRlbXBTeW1ib2wobm9kZS0+Z2V0VHlwZSgp
KTsKICAgICAgICAgICAgICAgICBzZXF1ZW5jZS0+cHVzaF9iYWNrKHN5bWJvbE5vZGUpOwogICAg
ICAgICAgICAgICAgIHNpemUgLT0gbm9kZS0+Z2V0Tm9taW5hbFNpemUoKTsKICAgICAgICAgICAg
IH0KQEAgLTIwNCwxMCArMjQxLDkgQEAgdm9pZCBTY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3Rv
ckFyZ3M6OnNjYWxhcml6ZUFyZ3MoCiAgICAgICAgICAgICAgICAgc2l6ZSAtPSByZXBlYXQ7CiAg
ICAgICAgICAgICAgICAgd2hpbGUgKHJlcGVhdCA+IDApCiAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2xOb2RlID0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIG5ldyBUSW50ZXJtU3ltYm9sKC0xLCB2YXJOYW1lLCBub2RlLT5nZXRUeXBl
KCkpOwotICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQmluYXJ5ICpuZXdOb2RlID0gQ29uc3Ry
dWN0TWF0cml4SW5kZXhCaW5hcnlOb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9s
Tm9kZSwgY29sSW5kZXgsIHJvd0luZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgVEludGVybVN5
bWJvbCAqc3ltYm9sTm9kZSA9IGNyZWF0ZVRlbXBTeW1ib2wobm9kZS0+Z2V0VHlwZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgVEludGVybUJpbmFyeSAqbmV3Tm9kZSA9CisgICAgICAgICAgICAg
ICAgICAgICAgICBDb25zdHJ1Y3RNYXRyaXhJbmRleEJpbmFyeU5vZGUoc3ltYm9sTm9kZSwgY29s
SW5kZXgsIHJvd0luZGV4KTsKICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2UtPnB1c2hfYmFj
ayhuZXdOb2RlKTsKICAgICAgICAgICAgICAgICAgICAgcm93SW5kZXgrKzsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHJvd0luZGV4ID49IG5vZGUtPmdldFJvd3MoKSkKQEAgLTIyMCw4ICsyNTYs
NyBAQCB2b2lkIFNjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJnczo6c2NhbGFyaXplQXJn
cygKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2xOb2RlID0KLSAgICAgICAgICAgICAgICAg
ICAgbmV3IFRJbnRlcm1TeW1ib2woLTEsIHZhck5hbWUsIG5vZGUtPmdldFR5cGUoKSk7CisgICAg
ICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sTm9kZSA9IGNyZWF0ZVRlbXBTeW1ib2wo
bm9kZS0+Z2V0VHlwZSgpKTsKICAgICAgICAgICAgICAgICBzZXF1ZW5jZS0+cHVzaF9iYWNrKHN5
bWJvbE5vZGUpOwogICAgICAgICAgICAgICAgIHNpemUgLT0gbm9kZS0+Z2V0Q29scygpICogbm9k
ZS0+Z2V0Um93cygpOwogICAgICAgICAgICAgfQpAQCAtMjI5LDQ4ICsyNjQsMzkgQEAgdm9pZCBT
Y2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3M6OnNjYWxhcml6ZUFyZ3MoCiAgICAgfQog
fQogCi1UU3RyaW5nIFNjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJnczo6Y3JlYXRlVGVt
cFZhcmlhYmxlKFRJbnRlcm1UeXBlZCAqb3JpZ2luYWwpCit2b2lkIFNjYWxhcml6ZUFyZ3NUcmF2
ZXJzZXI6OmNyZWF0ZVRlbXBWYXJpYWJsZShUSW50ZXJtVHlwZWQgKm9yaWdpbmFsKQogewotICAg
IFRTdHJpbmcgdGVtcFZhck5hbWUgPSAiX3dlYmdsX3RtcF8iOwotICAgIGlmIChvcmlnaW5hbC0+
aXNTY2FsYXIoKSkKLSAgICB7Ci0gICAgICAgIHRlbXBWYXJOYW1lICs9ICJzY2FsYXJfIjsKLSAg
ICB9Ci0gICAgZWxzZSBpZiAob3JpZ2luYWwtPmlzVmVjdG9yKCkpCi0gICAgewotICAgICAgICB0
ZW1wVmFyTmFtZSArPSAidmVjXyI7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChvcmlnaW5hbC0+aXNNYXRyaXgoKSk7Ci0gICAgICAgIHRlbXBWYXJOYW1lICs9ICJtYXRf
IjsKLSAgICB9Ci0gICAgdGVtcFZhck5hbWUgKz0gU3RyKG1UZW1wVmFyQ291bnQpLmNfc3RyKCk7
Ci0gICAgbVRlbXBWYXJDb3VudCsrOwotCiAgICAgQVNTRVJUKG9yaWdpbmFsKTsKLSAgICBUVHlw
ZSB0eXBlID0gb3JpZ2luYWwtPmdldFR5cGUoKTsKLSAgICB0eXBlLnNldFF1YWxpZmllcihFdnFU
ZW1wb3JhcnkpOworICAgIG5leHRUZW1wb3JhcnlJbmRleCgpOworICAgIFRJbnRlcm1EZWNsYXJh
dGlvbiAqZGVjbCA9IGNyZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24ob3JpZ2luYWwpOwogCi0gICAg
aWYgKG1TaGFkZXJUeXBlID09IEdMX0ZSQUdNRU5UX1NIQURFUiAmJgotICAgICAgICB0eXBlLmdl
dEJhc2ljVHlwZSgpID09IEVidEZsb2F0ICYmCisgICAgVFR5cGUgdHlwZSA9IG9yaWdpbmFsLT5n
ZXRUeXBlKCk7CisgICAgaWYgKG1TaGFkZXJUeXBlID09IEdMX0ZSQUdNRU5UX1NIQURFUiAmJiB0
eXBlLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0ICYmCiAgICAgICAgIHR5cGUuZ2V0UHJlY2lz
aW9uKCkgPT0gRWJwVW5kZWZpbmVkKQogICAgIHsKICAgICAgICAgLy8gV2UgdXNlIHRoZSBoaWdo
ZXN0IGF2YWlsYWJsZSBwcmVjaXNpb24gZm9yIHRoZSB0ZW1wb3JhcnkgdmFyaWFibGUKICAgICAg
ICAgLy8gdG8gYXZvaWQgY29tcHV0aW5nIHRoZSBhY3R1YWwgcHJlY2lzaW9uIHVzaW5nIHRoZSBy
dWxlcyBkZWZpbmVkCiAgICAgICAgIC8vIGluIEdMU0wgRVMgMS4wIFNlY3Rpb24gNC41LjIuCi0g
ICAgICAgIHR5cGUuc2V0UHJlY2lzaW9uKG1GcmFnbWVudFByZWNpc2lvbkhpZ2ggPyBFYnBIaWdo
IDogRWJwTWVkaXVtKTsKKyAgICAgICAgVEludGVybUJpbmFyeSAqaW5pdCA9IGRlY2wtPmdldFNl
cXVlbmNlKCktPmF0KDApLT5nZXRBc0JpbmFyeU5vZGUoKTsKKyAgICAgICAgaW5pdC0+Z2V0VHlw
ZVBvaW50ZXIoKS0+c2V0UHJlY2lzaW9uKG1GcmFnbWVudFByZWNpc2lvbkhpZ2ggPyBFYnBIaWdo
IDogRWJwTWVkaXVtKTsKKyAgICAgICAgaW5pdC0+Z2V0TGVmdCgpLT5nZXRUeXBlUG9pbnRlcigp
LT5zZXRQcmVjaXNpb24obUZyYWdtZW50UHJlY2lzaW9uSGlnaCA/IEVicEhpZ2gKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA6IEVicE1lZGl1bSk7CiAgICAgfQogCi0gICAgVEludGVybVN5bWJvbCAq
c3ltYm9sTm9kZSA9IG5ldyBUSW50ZXJtU3ltYm9sKC0xLCB0ZW1wVmFyTmFtZSwgdHlwZSk7Ci0g
ICAgVEludGVybUJpbmFyeSAqaW5pdCAgICAgICA9IG5ldyBUSW50ZXJtQmluYXJ5KEVPcEluaXRp
YWxpemUsIHN5bWJvbE5vZGUsIG9yaWdpbmFsKTsKLQotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmRl
Y2wgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BEZWNsYXJhdGlvbik7Ci0gICAgZGVjbC0+Z2V0
U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGluaXQpOwotCiAgICAgQVNTRVJUKG1CbG9ja1N0YWNrLnNp
emUoKSA+IDApOwogICAgIFRJbnRlcm1TZXF1ZW5jZSAmc2VxdWVuY2UgPSBtQmxvY2tTdGFjay5i
YWNrKCk7CiAgICAgc2VxdWVuY2UucHVzaF9iYWNrKGRlY2wpOworfQorCit9ICAvLyBuYW1lc3Bh
Y2UgYW5vbnltb3VzCiAKLSAgICByZXR1cm4gdGVtcFZhck5hbWU7Cit2b2lkIFNjYWxhcml6ZVZl
Y0FuZE1hdENvbnN0cnVjdG9yQXJncyhUSW50ZXJtQmxvY2sgKnJvb3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaDo6R0xlbnVtIHNoYWRlclR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZyYWdtZW50UHJlY2lzaW9uSGln
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAq
dGVtcG9yYXJ5SW5kZXgpCit7CisgICAgU2NhbGFyaXplQXJnc1RyYXZlcnNlciBzY2FsYXJpemVy
KHNoYWRlclR5cGUsIGZyYWdtZW50UHJlY2lzaW9uSGlnaCwgdGVtcG9yYXJ5SW5kZXgpOworICAg
IHJvb3QtPnRyYXZlcnNlKCZzY2FsYXJpemVyKTsKIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9TY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVj
dG9yQXJncy5oCmluZGV4IGVhYzYxMjVhNjZkZTBjMGI2MzQ2YmU3YjE0YzYxMGU0NTdhMzJhM2Iu
LjE0YmJiZTEzZTJhMjlhYjdhZTkyNmE1MTBhMjkxN2FlZWIxMTA5MzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NjYWxhcml6ZVZl
Y0FuZE1hdENvbnN0cnVjdG9yQXJncy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1NjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5o
CkBAIC0zLDQ3ICszLDI0IEBACiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgogLy8KKy8vIFNjYWxhcml6ZSB2ZWN0b3IgYW5kIG1hdHJpeCBjb25zdHJ1Y3Rv
ciBhcmdzLCBzbyB0aGF0IHZlY3RvcnMgYnVpbHQgZnJvbSBjb21wb25lbnRzIGRvbid0IGhhdmUK
Ky8vIG1hdHJpeCBhcmd1bWVudHMsIGFuZCBtYXRyaWNlcyBidWlsdCBmcm9tIGNvbXBvbmVudHMg
ZG9uJ3QgaGF2ZSB2ZWN0b3IgYXJndW1lbnRzLiBUaGlzIGF2b2lkcworLy8gZHJpdmVyIGJ1Z3Mg
YXJvdW5kIHZlY3RvciBhbmQgbWF0cml4IGNvbnN0cnVjdG9ycy4KKy8vCiAKICNpZm5kZWYgQ09N
UElMRVJfVFJBTlNMQVRPUl9TQ0FMQVJJWkVWRUNBTkRNQVRDT05TVFJVQ1RPUkFSR1NfSF8KICNk
ZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9TQ0FMQVJJWkVWRUNBTkRNQVRDT05TVFJVQ1RPUkFS
R1NfSF8KIAotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgorI2lu
Y2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgogCi1jbGFzcyBTY2FsYXJpemVWZWNBbmRNYXRD
b25zdHJ1Y3RvckFyZ3MgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgorbmFtZXNwYWNlIHNoCiB7
Ci0gIHB1YmxpYzoKLSAgICBTY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3Moc2g6OkdM
ZW51bSBzaGFkZXJUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGZyYWdtZW50UHJlY2lzaW9uSGlnaCkKLSAgICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRy
dWUsIGZhbHNlLCBmYWxzZSksCi0gICAgICAgICAgbVRlbXBWYXJDb3VudCgwKSwKLSAgICAgICAg
ICBtU2hhZGVyVHlwZShzaGFkZXJUeXBlKSwKLSAgICAgICAgICBtRnJhZ21lbnRQcmVjaXNpb25I
aWdoKGZyYWdtZW50UHJlY2lzaW9uSGlnaCkge30KLQotICBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCB2
aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCB2aXNpdEJsb2NrKFZpc2l0IHZpc2l0LCBUSW50ZXJtQmxvY2sgKm5vZGUp
IG92ZXJyaWRlOwotCi0gIHByaXZhdGU6Ci0gICAgdm9pZCBzY2FsYXJpemVBcmdzKFRJbnRlcm1B
Z2dyZWdhdGUgKmFnZ3JlZ2F0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzY2FsYXJp
emVWZWN0b3IsIGJvb2wgc2NhbGFyaXplTWF0cml4KTsKLQotICAgIC8vIElmIHdlIGhhdmUgdGhl
IGZvbGxvd2luZyBjb2RlOgotICAgIC8vICAgbWF0NCBtKDApOwotICAgIC8vICAgdmVjNCB2KDEs
IG0pOwotICAgIC8vIFdlIHdpbGwgcmV3cml0ZSB0bzoKLSAgICAvLyAgIG1hdDQgbSgwKTsKLSAg
ICAvLyAgIG1hdDQgX3dlYmdsX3RtcF9tYXRfMCA9IG07Ci0gICAgLy8gICB2ZWM0IHYoMSwgX3dl
YmdsX3RtcF9tYXRfMFswXVswXSwgX3dlYmdsX3RtcF9tYXRfMFswXVsxXSwgX3dlYmdsX3RtcF9t
YXRfMFswXVsyXSk7Ci0gICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB0byBjcmVhdGUgbm9kZXMgZm9y
ICJtYXQ0IF93ZWJnbF90bXBfbWF0XzAgPSBtOyIgYW5kIGluc2VydCBpdCB0bwotICAgIC8vIHRo
ZSBjb2RlIHNlcXVlbmNlLgotICAgIC8vIFJldHVybiB0aGUgdGVtcG9yYXJ5IHZhcmlhYmxlIG5h
bWUuCi0gICAgVFN0cmluZyBjcmVhdGVUZW1wVmFyaWFibGUoVEludGVybVR5cGVkICpvcmlnaW5h
bCk7Ci0KLSAgICBzdGQ6OnZlY3RvcjxUSW50ZXJtU2VxdWVuY2U+IG1CbG9ja1N0YWNrOwotICAg
IGludCBtVGVtcFZhckNvdW50OworY2xhc3MgVEludGVybUJsb2NrOwogCi0gICAgc2g6OkdMZW51
bSBtU2hhZGVyVHlwZTsKLSAgICBib29sIG1GcmFnbWVudFByZWNpc2lvbkhpZ2g7Ci19Owordm9p
ZCBTY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3MoVEludGVybUJsb2NrICpyb290LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkdMZW51bSBzaGFkZXJU
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmcmFnbWVu
dFByZWNpc2lvbkhpZ2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgKnRlbXBvcmFyeUluZGV4KTsKK30gIC8vIG5hbWVzcGFjZSBzaAogCiAjZW5k
aWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfU0NBTEFSSVpFVkVDQU5ETUFUQ09OU1RSVUNUT1JB
UkdTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9TZWFyY2hTeW1ib2wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VhcmNoU3ltYm9sLmNwcAppbmRleCBjY2NkNGQzZmYwMTI4
ZjRiYmIzODliOTYzZjMyZWI1Njc3MDI0NjI5Li4zNGM2NDRkMDI4NDUxODIzZGMzYTgyYjg0Nzdi
OWRhZjk2NzQzZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9TZWFyY2hTeW1ib2wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NlYXJjaFN5bWJvbC5jcHAKQEAgLTEzLDgg
KzEzLDcgQEAKIG5hbWVzcGFjZSBzaAogewogU2VhcmNoU3ltYm9sOjpTZWFyY2hTeW1ib2woY29u
c3QgVFN0cmluZyAmc3ltYm9sKQotICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwg
ZmFsc2UpLAotICAgICAgbVN5bWJvbChzeW1ib2wpCisgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRy
dWUsIGZhbHNlLCBmYWxzZSksIG1TeW1ib2woc3ltYm9sKQogewogICAgIG1hdGNoID0gZmFsc2U7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9TZWFyY2hTeW1ib2wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1NlYXJjaFN5bWJvbC5oCmluZGV4IDFlNWUxNzAwZDE1ZmNmYmJjODc4
ZTI4NDA0NjAxZGNjMmZjN2UyNDcuLjRmYmVhOGNlZjc4MmM2ODQ5Y2Y2NmFlYzE3MWYyY2E0ZDk2
MjNhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1NlYXJjaFN5bWJvbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1NlYXJjaFN5bWJvbC5oCkBAIC0zMCw0ICszMCw0IEBAIGNs
YXNzIFNlYXJjaFN5bWJvbCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiB9OwogfQogCi0jZW5k
aWYgICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1NFQVJDSFNZTUJPTF9IXworI2VuZGlmICAvLyBD
T01QSUxFUl9UUkFOU0xBVE9SX1NFQVJDSFNZTUJPTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVBcnJheUluaXRp
YWxpemF0aW9uLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1NlcGFyYXRlQXJyYXlJbml0aWFsaXphdGlvbi5jcHAKaW5kZXggOGNkMWZhMTA5NmMw
ZGVlZmE5MmY4NDZmNTk5MTQzMTk1YTVkMmI4ZC4uZmUyNTgyM2UzOGE0Y2Y1NjM0NDk5M2ZkNmRl
MGUxMmZiOTBlOWQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVBcnJheUluaXRpYWxpemF0aW9uLmNwcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZUFy
cmF5SW5pdGlhbGl6YXRpb24uY3BwCkBAIC0zLDcgKzMsOCBAQAogLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQog
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCi0vLyBUaGUgU2VwYXJhdGVBcnJheUlu
aXRpYWxpemF0aW9uIGZ1bmN0aW9uIHNwbGl0cyBlYWNoIGFycmF5IGluaXRpYWxpemF0aW9uIGlu
dG8gYSBkZWNsYXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudC4KKy8vIFRoZSBTZXBhcmF0ZUFycmF5
SW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gc3BsaXRzIGVhY2ggYXJyYXkgaW5pdGlhbGl6YXRpb24g
aW50byBhIGRlY2xhcmF0aW9uIGFuZAorLy8gYW4gYXNzaWdubWVudC4KIC8vIEV4YW1wbGU6CiAv
LyAgICAgdHlwZVtuXSBhID0gaW5pdGlhbGl6ZXI7CiAvLyB3aWxsIGVmZmVjdGl2ZWx5IGJlY29t
ZQpAQCAtMjAsNiArMjEsOSBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJt
Tm9kZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5oIgogCitu
YW1lc3BhY2Ugc2gKK3sKKwogbmFtZXNwYWNlCiB7CiAKQEAgLTI3LDkgKzMxLDEwIEBAIGNsYXNz
IFNlcGFyYXRlQXJyYXlJbml0VHJhdmVyc2VyIDogcHJpdmF0ZSBUSW50ZXJtVHJhdmVyc2VyCiB7
CiAgIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBhcHBseShUSW50ZXJtTm9kZSAqcm9vdCk7CisK
ICAgcHJpdmF0ZToKICAgICBTZXBhcmF0ZUFycmF5SW5pdFRyYXZlcnNlcigpOwotICAgIGJvb2wg
dmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlOwor
ICAgIGJvb2wgdmlzaXREZWNsYXJhdGlvbihWaXNpdCwgVEludGVybURlY2xhcmF0aW9uICpub2Rl
KSBvdmVycmlkZTsKIH07CiAKIHZvaWQgU2VwYXJhdGVBcnJheUluaXRUcmF2ZXJzZXI6OmFwcGx5
KFRJbnRlcm1Ob2RlICpyb290KQpAQCAtMzksNTMgKzQ0LDQ5IEBAIHZvaWQgU2VwYXJhdGVBcnJh
eUluaXRUcmF2ZXJzZXI6OmFwcGx5KFRJbnRlcm1Ob2RlICpyb290KQogICAgIHNlcGFyYXRlSW5p
dC51cGRhdGVUcmVlKCk7CiB9CiAKLVNlcGFyYXRlQXJyYXlJbml0VHJhdmVyc2VyOjpTZXBhcmF0
ZUFycmF5SW5pdFRyYXZlcnNlcigpCi0gICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNl
LCBmYWxzZSkKK1NlcGFyYXRlQXJyYXlJbml0VHJhdmVyc2VyOjpTZXBhcmF0ZUFycmF5SW5pdFRy
YXZlcnNlcigpIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpCiB7CiB9CiAK
LWJvb2wgU2VwYXJhdGVBcnJheUluaXRUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0LCBU
SW50ZXJtQWdncmVnYXRlICpub2RlKQorYm9vbCBTZXBhcmF0ZUFycmF5SW5pdFRyYXZlcnNlcjo6
dmlzaXREZWNsYXJhdGlvbihWaXNpdCwgVEludGVybURlY2xhcmF0aW9uICpub2RlKQogewotICAg
IGlmIChub2RlLT5nZXRPcCgpID09IEVPcERlY2xhcmF0aW9uKQorICAgIFRJbnRlcm1TZXF1ZW5j
ZSAqc2VxdWVuY2UgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOworICAgIFRJbnRlcm1CaW5hcnkgKmlu
aXROb2RlICAgPSBzZXF1ZW5jZS0+YmFjaygpLT5nZXRBc0JpbmFyeU5vZGUoKTsKKyAgICBpZiAo
aW5pdE5vZGUgIT0gbnVsbHB0ciAmJiBpbml0Tm9kZS0+Z2V0T3AoKSA9PSBFT3BJbml0aWFsaXpl
KQogICAgIHsKLSAgICAgICAgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9IG5vZGUtPmdldFNl
cXVlbmNlKCk7Ci0gICAgICAgIFRJbnRlcm1CaW5hcnkgKmluaXROb2RlID0gc2VxdWVuY2UtPmJh
Y2soKS0+Z2V0QXNCaW5hcnlOb2RlKCk7Ci0gICAgICAgIGlmIChpbml0Tm9kZSAhPSBudWxscHRy
ICYmIGluaXROb2RlLT5nZXRPcCgpID09IEVPcEluaXRpYWxpemUpCisgICAgICAgIFRJbnRlcm1U
eXBlZCAqaW5pdGlhbGl6ZXIgPSBpbml0Tm9kZS0+Z2V0UmlnaHQoKTsKKyAgICAgICAgaWYgKGlu
aXRpYWxpemVyLT5pc0FycmF5KCkgJiYgIXNoOjpPdXRwdXRITFNMOjpjYW5Xcml0ZUFzSExTTExp
dGVyYWwoaW5pdGlhbGl6ZXIpKQogICAgICAgICB7Ci0gICAgICAgICAgICBUSW50ZXJtVHlwZWQg
KmluaXRpYWxpemVyID0gaW5pdE5vZGUtPmdldFJpZ2h0KCk7Ci0gICAgICAgICAgICBpZiAoaW5p
dGlhbGl6ZXItPmlzQXJyYXkoKSAmJiAhc2g6Ok91dHB1dEhMU0w6OmNhbldyaXRlQXNITFNMTGl0
ZXJhbChpbml0aWFsaXplcikpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ug
cmVseSBvbiB0aGF0IGFycmF5IGRlY2xhcmF0aW9ucyBoYXZlIGJlZW4gaXNvbGF0ZWQgdG8gc2lu
Z2xlIGRlY2xhcmF0aW9ucy4KLSAgICAgICAgICAgICAgICBBU1NFUlQoc2VxdWVuY2UtPnNpemUo
KSA9PSAxKTsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnN5bWJvbCA9IGluaXROb2Rl
LT5nZXRMZWZ0KCk7Ci0gICAgICAgICAgICAgICAgVEludGVybUJsb2NrICpwYXJlbnRCbG9jayA9
IGdldFBhcmVudE5vZGUoKS0+Z2V0QXNCbG9jaygpOwotICAgICAgICAgICAgICAgIEFTU0VSVChw
YXJlbnRCbG9jayAhPSBudWxscHRyKTsKLQotICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5j
ZSByZXBsYWNlbWVudHM7Ci0KLSAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpyZXBs
YWNlbWVudERlY2xhcmF0aW9uID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGU7Ci0gICAgICAgICAgICAg
ICAgcmVwbGFjZW1lbnREZWNsYXJhdGlvbi0+c2V0T3AoRU9wRGVjbGFyYXRpb24pOwotICAgICAg
ICAgICAgICAgIHJlcGxhY2VtZW50RGVjbGFyYXRpb24tPmdldFNlcXVlbmNlKCktPnB1c2hfYmFj
ayhzeW1ib2wpOwotICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50RGVjbGFyYXRpb24tPnNldExp
bmUoc3ltYm9sLT5nZXRMaW5lKCkpOwotICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50cy5wdXNo
X2JhY2socmVwbGFjZW1lbnREZWNsYXJhdGlvbik7Ci0KLSAgICAgICAgICAgICAgICBUSW50ZXJt
QmluYXJ5ICpyZXBsYWNlbWVudEFzc2lnbm1lbnQgPQotICAgICAgICAgICAgICAgICAgICBuZXcg
VEludGVybUJpbmFyeShFT3BBc3NpZ24sIHN5bWJvbCwgaW5pdGlhbGl6ZXIpOwotICAgICAgICAg
ICAgICAgIHJlcGxhY2VtZW50QXNzaWdubWVudC0+c2V0TGluZShzeW1ib2wtPmdldExpbmUoKSk7
Ci0gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLnB1c2hfYmFjayhyZXBsYWNlbWVudEFzc2ln
bm1lbnQpOwotCi0gICAgICAgICAgICAgICAgbU11bHRpUmVwbGFjZW1lbnRzLnB1c2hfYmFjaygK
LSAgICAgICAgICAgICAgICAgICAgTm9kZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRyeShwYXJlbnRC
bG9jaywgbm9kZSwgcmVwbGFjZW1lbnRzKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAv
LyBXZSByZWx5IG9uIHRoYXQgYXJyYXkgZGVjbGFyYXRpb25zIGhhdmUgYmVlbiBpc29sYXRlZCB0
byBzaW5nbGUgZGVjbGFyYXRpb25zLgorICAgICAgICAgICAgQVNTRVJUKHNlcXVlbmNlLT5zaXpl
KCkgPT0gMSk7CisgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnN5bWJvbCAgICAgID0gaW5pdE5v
ZGUtPmdldExlZnQoKTsKKyAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqcGFyZW50QmxvY2sgPSBn
ZXRQYXJlbnROb2RlKCktPmdldEFzQmxvY2soKTsKKyAgICAgICAgICAgIEFTU0VSVChwYXJlbnRC
bG9jayAhPSBudWxscHRyKTsKKworICAgICAgICAgICAgVEludGVybVNlcXVlbmNlIHJlcGxhY2Vt
ZW50czsKKworICAgICAgICAgICAgVEludGVybURlY2xhcmF0aW9uICpyZXBsYWNlbWVudERlY2xh
cmF0aW9uID0gbmV3IFRJbnRlcm1EZWNsYXJhdGlvbigpOworICAgICAgICAgICAgcmVwbGFjZW1l
bnREZWNsYXJhdGlvbi0+YXBwZW5kRGVjbGFyYXRvcihzeW1ib2wpOworICAgICAgICAgICAgcmVw
bGFjZW1lbnREZWNsYXJhdGlvbi0+c2V0TGluZShzeW1ib2wtPmdldExpbmUoKSk7CisgICAgICAg
ICAgICByZXBsYWNlbWVudHMucHVzaF9iYWNrKHJlcGxhY2VtZW50RGVjbGFyYXRpb24pOworCisg
ICAgICAgICAgICBUSW50ZXJtQmluYXJ5ICpyZXBsYWNlbWVudEFzc2lnbm1lbnQgPQorICAgICAg
ICAgICAgICAgIG5ldyBUSW50ZXJtQmluYXJ5KEVPcEFzc2lnbiwgc3ltYm9sLCBpbml0aWFsaXpl
cik7CisgICAgICAgICAgICByZXBsYWNlbWVudEFzc2lnbm1lbnQtPnNldExpbmUoc3ltYm9sLT5n
ZXRMaW5lKCkpOworICAgICAgICAgICAgcmVwbGFjZW1lbnRzLnB1c2hfYmFjayhyZXBsYWNlbWVu
dEFzc2lnbm1lbnQpOworCisgICAgICAgICAgICBtTXVsdGlSZXBsYWNlbWVudHMucHVzaF9iYWNr
KAorICAgICAgICAgICAgICAgIE5vZGVSZXBsYWNlV2l0aE11bHRpcGxlRW50cnkocGFyZW50Qmxv
Y2ssIG5vZGUsIHJlcGxhY2VtZW50cykpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi19IC8v
IG5hbWVzcGFjZQorfSAgLy8gbmFtZXNwYWNlCiAKIHZvaWQgU2VwYXJhdGVBcnJheUluaXRpYWxp
emF0aW9uKFRJbnRlcm1Ob2RlICpyb290KQogewogICAgIFNlcGFyYXRlQXJyYXlJbml0VHJhdmVy
c2VyOjphcHBseShyb290KTsKIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZUFy
cmF5SW5pdGlhbGl6YXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1NlcGFyYXRlQXJyYXlJbml0aWFsaXphdGlvbi5oCmluZGV4IGQxNjM1N2Ez
YWZkOGU1YjkyYzU5MGIwNmUxYWQ2OGZlM2FhNzIxODIuLjNhOWJiNTVkZDEyZWMwY2M3MjE2ZDNh
OGE3Mjg5NDZmN2Q5MWRmZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlQXJyYXlJbml0aWFsaXphdGlvbi5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRl
QXJyYXlJbml0aWFsaXphdGlvbi5oCkBAIC0zLDcgKzMsOCBAQAogLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQog
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCi0vLyBUaGUgU2VwYXJhdGVBcnJheUlu
aXRpYWxpemF0aW9uIGZ1bmN0aW9uIHNwbGl0cyBlYWNoIGFycmF5IGluaXRpYWxpemF0aW9uIGlu
dG8gYSBkZWNsYXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudC4KKy8vIFRoZSBTZXBhcmF0ZUFycmF5
SW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gc3BsaXRzIGVhY2ggYXJyYXkgaW5pdGlhbGl6YXRpb24g
aW50byBhIGRlY2xhcmF0aW9uIGFuZAorLy8gYW4gYXNzaWdubWVudC4KIC8vIEV4YW1wbGU6CiAv
LyAgICAgdHlwZVtuXSBhID0gaW5pdGlhbGl6ZXI7CiAvLyB3aWxsIGVmZmVjdGl2ZWx5IGJlY29t
ZQpAQCAtMTgsOCArMTksMTEgQEAKICNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9TRVBBUkFU
RUFSUkFZSU5JVElBTElaQVRJT05fSF8KICNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9TRVBB
UkFURUFSUkFZSU5JVElBTElaQVRJT05fSF8KIAorbmFtZXNwYWNlIHNoCit7CiBjbGFzcyBUSW50
ZXJtTm9kZTsKIAogdm9pZCBTZXBhcmF0ZUFycmF5SW5pdGlhbGl6YXRpb24oVEludGVybU5vZGUg
KnJvb3QpOworfSAgLy8gbmFtZXNwYWNlIHNoCiAKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNM
QVRPUl9TRVBBUkFURUFSUkFZSU5JVElBTElaQVRJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlRGVjbGFyYXRp
b25zLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1NlcGFyYXRlRGVjbGFyYXRpb25zLmNwcAppbmRleCBjYzMzOWVhNjRlYWFjZjkzZDY1Yzc3N2M5
NmRmMmExNWZkYWRlMjJiLi45M2M4YjM4Y2M2ZjY2ZjZiZTM3ZTQxMDU2NDI2ZDQ5MTZjZTQxODBk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9TZXBhcmF0ZURlY2xhcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVEZWNsYXJhdGlvbnMuY3BwCkBAIC01
LDggKzUsOCBAQAogLy8KIC8vIFRoZSBTZXBhcmF0ZURlY2xhcmF0aW9ucyBmdW5jdGlvbiBwcm9j
ZXNzZXMgZGVjbGFyYXRpb25zLCBzbyB0aGF0IGluIHRoZSBlbmQgZWFjaCBkZWNsYXJhdGlvbgog
Ly8gY29udGFpbnMgb25seSBvbmUgZGVjbGFyYXRvci4KLS8vIFRoaXMgaXMgdXNlZnVsIGFzIGFu
IGludGVybWVkaWF0ZSBzdGVwIHdoZW4gaW5pdGlhbGl6YXRpb24gbmVlZHMgdG8gYmUgc2VwYXJh
dGVkIGZyb20gZGVjbGFyYXRpb24sCi0vLyBvciB3aGVuIHRoaW5ncyBuZWVkIHRvIGJlIHVuZm9s
ZGVkIG91dCBvZiB0aGUgaW5pdGlhbGl6ZXIuCisvLyBUaGlzIGlzIHVzZWZ1bCBhcyBhbiBpbnRl
cm1lZGlhdGUgc3RlcCB3aGVuIGluaXRpYWxpemF0aW9uIG5lZWRzIHRvIGJlIHNlcGFyYXRlZCBm
cm9tCisvLyBkZWNsYXJhdGlvbiwgb3Igd2hlbiB0aGluZ3MgbmVlZCB0byBiZSB1bmZvbGRlZCBv
dXQgb2YgdGhlIGluaXRpYWxpemVyLgogLy8gRXhhbXBsZToKIC8vICAgICBpbnQgYVsxXSA9IGlu
dFsxXSgxKSwgYlsxXSA9IGludFsxXSgyKTsKIC8vIGdldHMgdHJhbnNmb3JtZWQgd2hlbiBydW4g
dGhyb3VnaCB0aGlzIGNsYXNzIGludG8gdGhlIEFTVCBlcXVpdmFsZW50IG9mOgpAQCAtMTcsNiAr
MTcsOSBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCiAK
K25hbWVzcGFjZSBzaAoreworCiBuYW1lc3BhY2UKIHsKIApAQCAtMjQsOSArMjcsMTAgQEAgY2xh
c3MgU2VwYXJhdGVEZWNsYXJhdGlvbnNUcmF2ZXJzZXIgOiBwcml2YXRlIFRJbnRlcm1UcmF2ZXJz
ZXIKIHsKICAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGFwcGx5KFRJbnRlcm1Ob2RlICpyb290
KTsKKwogICBwcml2YXRlOgogICAgIFNlcGFyYXRlRGVjbGFyYXRpb25zVHJhdmVyc2VyKCk7Ci0g
ICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3Zl
cnJpZGU7CisgICAgYm9vbCB2aXNpdERlY2xhcmF0aW9uKFZpc2l0LCBUSW50ZXJtRGVjbGFyYXRp
b24gKm5vZGUpIG92ZXJyaWRlOwogfTsKIAogdm9pZCBTZXBhcmF0ZURlY2xhcmF0aW9uc1RyYXZl
cnNlcjo6YXBwbHkoVEludGVybU5vZGUgKnJvb3QpCkBAIC00MSwzOCArNDUsMzUgQEAgU2VwYXJh
dGVEZWNsYXJhdGlvbnNUcmF2ZXJzZXI6OlNlcGFyYXRlRGVjbGFyYXRpb25zVHJhdmVyc2VyKCkK
IHsKIH0KIAotYm9vbCBTZXBhcmF0ZURlY2xhcmF0aW9uc1RyYXZlcnNlcjo6dmlzaXRBZ2dyZWdh
dGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCitib29sIFNlcGFyYXRlRGVjbGFyYXRp
b25zVHJhdmVyc2VyOjp2aXNpdERlY2xhcmF0aW9uKFZpc2l0LCBUSW50ZXJtRGVjbGFyYXRpb24g
Km5vZGUpCiB7Ci0gICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wRGVjbGFyYXRpb24pCisgICAg
VEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7CisgICAgaWYg
KHNlcXVlbmNlLT5zaXplKCkgPiAxKQogICAgIHsKLSAgICAgICAgVEludGVybVNlcXVlbmNlICpz
ZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7Ci0gICAgICAgIGlmIChzZXF1ZW5jZS0+c2l6
ZSgpID4gMSkKLSAgICAgICAgewotICAgICAgICAgICAgVEludGVybUJsb2NrICpwYXJlbnRCbG9j
ayA9IGdldFBhcmVudE5vZGUoKS0+Z2V0QXNCbG9jaygpOwotICAgICAgICAgICAgQVNTRVJUKHBh
cmVudEJsb2NrICE9IG51bGxwdHIpOworICAgICAgICBUSW50ZXJtQmxvY2sgKnBhcmVudEJsb2Nr
ID0gZ2V0UGFyZW50Tm9kZSgpLT5nZXRBc0Jsb2NrKCk7CisgICAgICAgIEFTU0VSVChwYXJlbnRC
bG9jayAhPSBudWxscHRyKTsKIAotICAgICAgICAgICAgVEludGVybVNlcXVlbmNlIHJlcGxhY2Vt
ZW50RGVjbGFyYXRpb25zOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaWkgPSAwOyBpaSA8IHNl
cXVlbmNlLT5zaXplKCk7ICsraWkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVElu
dGVybUFnZ3JlZ2F0ZSAqcmVwbGFjZW1lbnREZWNsYXJhdGlvbiA9IG5ldyBUSW50ZXJtQWdncmVn
YXRlOwotCi0gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnREZWNsYXJhdGlvbi0+c2V0T3AoRU9w
RGVjbGFyYXRpb24pOwotICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50RGVjbGFyYXRpb24tPmdl
dFNlcXVlbmNlKCktPnB1c2hfYmFjayhzZXF1ZW5jZS0+YXQoaWkpKTsKLSAgICAgICAgICAgICAg
ICByZXBsYWNlbWVudERlY2xhcmF0aW9uLT5zZXRMaW5lKHNlcXVlbmNlLT5hdChpaSktPmdldExp
bmUoKSk7Ci0gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnREZWNsYXJhdGlvbnMucHVzaF9iYWNr
KHJlcGxhY2VtZW50RGVjbGFyYXRpb24pOwotICAgICAgICAgICAgfQorICAgICAgICBUSW50ZXJt
U2VxdWVuY2UgcmVwbGFjZW1lbnREZWNsYXJhdGlvbnM7CisgICAgICAgIGZvciAoc2l6ZV90IGlp
ID0gMDsgaWkgPCBzZXF1ZW5jZS0+c2l6ZSgpOyArK2lpKQorICAgICAgICB7CisgICAgICAgICAg
ICBUSW50ZXJtRGVjbGFyYXRpb24gKnJlcGxhY2VtZW50RGVjbGFyYXRpb24gPSBuZXcgVEludGVy
bURlY2xhcmF0aW9uKCk7CiAKLSAgICAgICAgICAgIG1NdWx0aVJlcGxhY2VtZW50cy5wdXNoX2Jh
Y2soCi0gICAgICAgICAgICAgICAgTm9kZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRyeShwYXJlbnRC
bG9jaywgbm9kZSwgcmVwbGFjZW1lbnREZWNsYXJhdGlvbnMpKTsKKyAgICAgICAgICAgIHJlcGxh
Y2VtZW50RGVjbGFyYXRpb24tPmFwcGVuZERlY2xhcmF0b3Ioc2VxdWVuY2UtPmF0KGlpKS0+Z2V0
QXNUeXBlZCgpKTsKKyAgICAgICAgICAgIHJlcGxhY2VtZW50RGVjbGFyYXRpb24tPnNldExpbmUo
c2VxdWVuY2UtPmF0KGlpKS0+Z2V0TGluZSgpKTsKKyAgICAgICAgICAgIHJlcGxhY2VtZW50RGVj
bGFyYXRpb25zLnB1c2hfYmFjayhyZXBsYWNlbWVudERlY2xhcmF0aW9uKTsKICAgICAgICAgfQot
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbU11bHRpUmVwbGFjZW1lbnRzLnB1c2hf
YmFjaygKKyAgICAgICAgICAgIE5vZGVSZXBsYWNlV2l0aE11bHRpcGxlRW50cnkocGFyZW50Qmxv
Y2ssIG5vZGUsIHJlcGxhY2VtZW50RGVjbGFyYXRpb25zKSk7CiAgICAgfQotICAgIHJldHVybiB0
cnVlOworICAgIHJldHVybiBmYWxzZTsKIH0KIAotfSAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVz
cGFjZQogCiB2b2lkIFNlcGFyYXRlRGVjbGFyYXRpb25zKFRJbnRlcm1Ob2RlICpyb290KQogewog
ICAgIFNlcGFyYXRlRGVjbGFyYXRpb25zVHJhdmVyc2VyOjphcHBseShyb290KTsKIH0KKworfSAg
Ly8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZURlY2xhcmF0aW9ucy5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVEZWNsYXJhdGlvbnMu
aAppbmRleCA3NzkxM2FiOGJiYzE3MTg3NmQ4MzEzNTgyNTlhNTU1MmUzYWZhMDYxLi44MTQyZmFl
YTFjYzgxMGI0OGEyNDhjZmZhZmVmZTZkZDRhYjZiMWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZURlY2xhcmF0aW9u
cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1NlcGFyYXRlRGVjbGFyYXRpb25zLmgKQEAgLTUsOCArNSw4IEBACiAvLwogLy8gVGhlIFNlcGFy
YXRlRGVjbGFyYXRpb25zIGZ1bmN0aW9uIHByb2Nlc3NlcyBkZWNsYXJhdGlvbnMsIHNvIHRoYXQg
aW4gdGhlIGVuZCBlYWNoIGRlY2xhcmF0aW9uCiAvLyBjb250YWlucyBvbmx5IG9uZSBkZWNsYXJh
dG9yLgotLy8gVGhpcyBpcyB1c2VmdWwgYXMgYW4gaW50ZXJtZWRpYXRlIHN0ZXAgd2hlbiBpbml0
aWFsaXphdGlvbiBuZWVkcyB0byBiZSBzZXBhcmF0ZWQgZnJvbSBkZWNsYXJhdGlvbiwKLS8vIG9y
IHdoZW4gdGhpbmdzIG5lZWQgdG8gYmUgdW5mb2xkZWQgb3V0IG9mIHRoZSBpbml0aWFsaXplci4K
Ky8vIFRoaXMgaXMgdXNlZnVsIGFzIGFuIGludGVybWVkaWF0ZSBzdGVwIHdoZW4gaW5pdGlhbGl6
YXRpb24gbmVlZHMgdG8gYmUgc2VwYXJhdGVkIGZyb20KKy8vIGRlY2xhcmF0aW9uLCBvciB3aGVu
IHRoaW5ncyBuZWVkIHRvIGJlIHVuZm9sZGVkIG91dCBvZiB0aGUgaW5pdGlhbGl6ZXIuCiAvLyBF
eGFtcGxlOgogLy8gICAgIGludCBhWzFdID0gaW50WzFdKDEpLCBiWzFdID0gaW50WzFdKDIpOwog
Ly8gZ2V0cyB0cmFuc2Zvcm1lZCB3aGVuIHJ1biB0aHJvdWdoIHRoaXMgY2xhc3MgaW50byB0aGUg
QVNUIGVxdWl2YWxlbnQgb2Y6CkBAIC0xNiw4ICsxNiwxMSBAQAogI2lmbmRlZiBDT01QSUxFUl9U
UkFOU0xBVE9SX1NFUEFSQVRFREVDTEFSQVRJT05TX0hfCiAjZGVmaW5lIENPTVBJTEVSX1RSQU5T
TEFUT1JfU0VQQVJBVEVERUNMQVJBVElPTlNfSF8KIAorbmFtZXNwYWNlIHNoCit7CiBjbGFzcyBU
SW50ZXJtTm9kZTsKIAogdm9pZCBTZXBhcmF0ZURlY2xhcmF0aW9ucyhUSW50ZXJtTm9kZSAqcm9v
dCk7Cit9ICAvLyBuYW1lc3BhY2Ugc2gKIAogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9S
X1NFUEFSQVRFREVDTEFSQVRJT05TX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5n
QXJyYXlzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1NlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJheXMuY3BwCmluZGV4IDQ0YmY1NTRl
NGI4MjViNzI4MmVmZThkYzE1YTAxM2E4NmVmOWQ0YzYuLjFlNzAwMGI0Y2RmNDA2MGI3NjYwMTYw
YWI4M2IxZWQ0NjMwZWQ5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJheXMu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1NlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJheXMuY3BwCkBAIC0zLDggKzMsOCBAQAog
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCi0vLyBT
ZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzIHNwbGl0cyBhcnJheS1yZXR1cm5pbmcg
ZXhwcmVzc2lvbnMgdGhhdCBhcmUgbm90IGFycmF5IG5hbWVzIGZyb20gbW9yZSBjb21wbGV4Ci0v
LyBleHByZXNzaW9ucywgYXNzaWduaW5nIHRoZW0gdG8gYSB0ZW1wb3JhcnkgdmFyaWFibGUgYSMu
CisvLyBTZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzIHNwbGl0cyBhcnJheS1yZXR1
cm5pbmcgZXhwcmVzc2lvbnMgdGhhdCBhcmUgbm90IGFycmF5IG5hbWVzCisvLyBmcm9tIG1vcmUg
Y29tcGxleCBleHByZXNzaW9ucywgYXNzaWduaW5nIHRoZW0gdG8gYSB0ZW1wb3JhcnkgdmFyaWFi
bGUgYSMuCiAvLyBFeGFtcGxlcyB3aGVyZSBhLCBiIGFuZCBjIGFyZSBhbGwgYXJyYXlzOgogLy8g
KGEgPSBiKSA9PSAoYSA9IGMpIGlzIHNwbGl0IGludG8gYSA9IGI7IHR5cGVbbl0gYTEgPSBhOyBh
ID0gYzsgdHlwZVtuXSBhMiA9IGE7IGExID09IGEyOwogLy8gdHlwZSBkID0gdHlwZVtuXSguLi4p
W2ldOyBpcyBzcGxpdCBpbnRvIHR5cGVbbl0gYTEgPSB0eXBlW25dKC4uLik7IHR5cGUgZCA9IGEx
W2ldOwpAQCAtMTQsNiArMTQsOSBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50
ZXJtTm9kZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZVBhdHRl
cm5NYXRjaGVyLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBuYW1lc3BhY2UKIHsKIApAQCAtMzAs
OCArMzMsOCBAQCBjbGFzcyBTZXBhcmF0ZUV4cHJlc3Npb25zVHJhdmVyc2VyIDogcHVibGljIFRJ
bnRlcm1UcmF2ZXJzZXIKICAgICBib29sIGZvdW5kQXJyYXlFeHByZXNzaW9uKCkgY29uc3QgeyBy
ZXR1cm4gbUZvdW5kQXJyYXlFeHByZXNzaW9uOyB9CiAKICAgcHJvdGVjdGVkOgotICAgIC8vIE1h
cmtlZCB0byB0cnVlIG9uY2UgYW4gb3BlcmF0aW9uIHRoYXQgbmVlZHMgdG8gYmUgaG9pc3RlZCBv
dXQgb2YgdGhlIGV4cHJlc3Npb24gaGFzIGJlZW4gZm91bmQuCi0gICAgLy8gQWZ0ZXIgdGhhdCwg
bm8gbW9yZSBBU1QgdXBkYXRlcyBhcmUgcGVyZm9ybWVkIG9uIHRoYXQgdHJhdmVyc2FsLgorICAg
IC8vIE1hcmtlZCB0byB0cnVlIG9uY2UgYW4gb3BlcmF0aW9uIHRoYXQgbmVlZHMgdG8gYmUgaG9p
c3RlZCBvdXQgb2YgdGhlIGV4cHJlc3Npb24gaGFzIGJlZW4KKyAgICAvLyBmb3VuZC4gQWZ0ZXIg
dGhhdCwgbm8gbW9yZSBBU1QgdXBkYXRlcyBhcmUgcGVyZm9ybWVkIG9uIHRoYXQgdHJhdmVyc2Fs
LgogICAgIGJvb2wgbUZvdW5kQXJyYXlFeHByZXNzaW9uOwogCiAgICAgSW50ZXJtTm9kZVBhdHRl
cm5NYXRjaGVyIG1QYXR0ZXJuVG9TZXBhcmF0ZU1hdGNoZXI7CkBAIC01MiwyMSArNTUsNiBAQCBU
SW50ZXJtQmluYXJ5ICpDb3B5QXNzaWdubWVudE5vZGUoVEludGVybUJpbmFyeSAqbm9kZSkKICAg
ICByZXR1cm4gbmV3IFRJbnRlcm1CaW5hcnkobm9kZS0+Z2V0T3AoKSwgbm9kZS0+Z2V0TGVmdCgp
LCBub2RlLT5nZXRSaWdodCgpKTsKIH0KIAotLy8gUGVyZm9ybXMgYSBzaGFsbG93IGNvcHkgb2Yg
YSBjb25zdHJ1Y3Rvci9mdW5jdGlvbiBjYWxsIG5vZGUuCi1USW50ZXJtQWdncmVnYXRlICpDb3B5
QWdncmVnYXRlTm9kZShUSW50ZXJtQWdncmVnYXRlICpub2RlKQotewotICAgIFRJbnRlcm1BZ2dy
ZWdhdGUgKmNvcHlOb2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUobm9kZS0+Z2V0T3AoKSk7Ci0g
ICAgVEludGVybVNlcXVlbmNlICpjb3B5U2VxID0gY29weU5vZGUtPmdldFNlcXVlbmNlKCk7Ci0g
ICAgY29weVNlcS0+aW5zZXJ0KGNvcHlTZXEtPmJlZ2luKCksIG5vZGUtPmdldFNlcXVlbmNlKCkt
PmJlZ2luKCksIG5vZGUtPmdldFNlcXVlbmNlKCktPmVuZCgpKTsKLSAgICBjb3B5Tm9kZS0+c2V0
VHlwZShub2RlLT5nZXRUeXBlKCkpOwotICAgICpjb3B5Tm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJ
bmZvKCkgPSAqbm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCk7Ci0gICAgaWYgKG5vZGUtPmlz
VXNlckRlZmluZWQoKSkKLSAgICB7Ci0gICAgICAgIGNvcHlOb2RlLT5zZXRVc2VyRGVmaW5lZCgp
OwotICAgIH0KLSAgICByZXR1cm4gY29weU5vZGU7Ci19Ci0KIGJvb2wgU2VwYXJhdGVFeHByZXNz
aW9uc1RyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5v
ZGUpCiB7CiAgICAgaWYgKG1Gb3VuZEFycmF5RXhwcmVzc2lvbikKQEAgLTk2LDE3ICs4NCwxNyBA
QCBib29sIFNlcGFyYXRlRXhwcmVzc2lvbnNUcmF2ZXJzZXI6OnZpc2l0QmluYXJ5KFZpc2l0IHZp
c2l0LCBUSW50ZXJtQmluYXJ5ICpub2RlKQogYm9vbCBTZXBhcmF0ZUV4cHJlc3Npb25zVHJhdmVy
c2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkK
IHsKICAgICBpZiAobUZvdW5kQXJyYXlFeHByZXNzaW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7
IC8vIE5vIG5lZWQgdG8gdHJhdmVyc2UgZnVydGhlcgorICAgICAgICByZXR1cm4gZmFsc2U7ICAv
LyBObyBuZWVkIHRvIHRyYXZlcnNlIGZ1cnRoZXIKIAogICAgIGlmICghbVBhdHRlcm5Ub1NlcGFy
YXRlTWF0Y2hlci5tYXRjaChub2RlLCBnZXRQYXJlbnROb2RlKCkpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIEFTU0VSVChub2RlLT5pc0NvbnN0cnVjdG9yKCkgfHwgbm9kZS0+Z2V0T3Ao
KSA9PSBFT3BGdW5jdGlvbkNhbGwpOworICAgIEFTU0VSVChub2RlLT5pc0NvbnN0cnVjdG9yKCkg
fHwgbm9kZS0+Z2V0T3AoKSA9PSBFT3BDYWxsRnVuY3Rpb25JbkFTVCk7CiAKICAgICBtRm91bmRB
cnJheUV4cHJlc3Npb24gPSB0cnVlOwogCiAgICAgVEludGVybVNlcXVlbmNlIGluc2VydGlvbnM7
Ci0gICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soY3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihDb3B5
QWdncmVnYXRlTm9kZShub2RlKSkpOworICAgIGluc2VydGlvbnMucHVzaF9iYWNrKGNyZWF0ZVRl
bXBJbml0RGVjbGFyYXRpb24obm9kZS0+c2hhbGxvd0NvcHkoKSkpOwogICAgIGluc2VydFN0YXRl
bWVudHNJblBhcmVudEJsb2NrKGluc2VydGlvbnMpOwogCiAgICAgcXVldWVSZXBsYWNlbWVudChu
b2RlLCBjcmVhdGVUZW1wU3ltYm9sKG5vZGUtPmdldFR5cGUoKSksIE9yaWdpbmFsTm9kZTo6SVNf
RFJPUFBFRCk7CkBAIC0xMjAsNyArMTA4LDcgQEAgdm9pZCBTZXBhcmF0ZUV4cHJlc3Npb25zVHJh
dmVyc2VyOjpuZXh0SXRlcmF0aW9uKCkKICAgICBuZXh0VGVtcG9yYXJ5SW5kZXgoKTsKIH0KIAot
fSAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZQogCiB2b2lkIFNlcGFyYXRlRXhwcmVzc2lv
bnNSZXR1cm5pbmdBcnJheXMoVEludGVybU5vZGUgKnJvb3QsIHVuc2lnbmVkIGludCAqdGVtcG9y
YXJ5SW5kZXgpCiB7CkBAIC0xMzQsNiArMTIyLDcgQEAgdm9pZCBTZXBhcmF0ZUV4cHJlc3Npb25z
UmV0dXJuaW5nQXJyYXlzKFRJbnRlcm1Ob2RlICpyb290LCB1bnNpZ25lZCBpbnQgKnRlbXBvcmEK
ICAgICAgICAgcm9vdC0+dHJhdmVyc2UoJnRyYXZlcnNlcik7CiAgICAgICAgIGlmICh0cmF2ZXJz
ZXIuZm91bmRBcnJheUV4cHJlc3Npb24oKSkKICAgICAgICAgICAgIHRyYXZlcnNlci51cGRhdGVU
cmVlKCk7Ci0gICAgfQotICAgIHdoaWxlICh0cmF2ZXJzZXIuZm91bmRBcnJheUV4cHJlc3Npb24o
KSk7CisgICAgfSB3aGlsZSAodHJhdmVyc2VyLmZvdW5kQXJyYXlFeHByZXNzaW9uKCkpOwogfQor
Cit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJh
eXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Nl
cGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJheXMuaAppbmRleCBiMTc4ZWJiM2VjNDRkYmMz
MTJlOGMzYWQxMzNlZWRkZGIwMThlNGY2Li4xZWQ1MGEwNzdkYTk2YzAwZDE5MDBhNzc5OTNkNWI0
ZDg0ZGY5NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9TZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVF
eHByZXNzaW9uc1JldHVybmluZ0FycmF5cy5oCkBAIC0zLDggKzMsOCBAQAogLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCi0vLyBTZXBhcmF0ZUV4cHJl
c3Npb25zUmV0dXJuaW5nQXJyYXlzIHNwbGl0cyBhcnJheS1yZXR1cm5pbmcgZXhwcmVzc2lvbnMg
dGhhdCBhcmUgbm90IGFycmF5IG5hbWVzIGZyb20gbW9yZSBjb21wbGV4Ci0vLyBleHByZXNzaW9u
cywgYXNzaWduaW5nIHRoZW0gdG8gYSB0ZW1wb3JhcnkgdmFyaWFibGUgYSMuCisvLyBTZXBhcmF0
ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzIHNwbGl0cyBhcnJheS1yZXR1cm5pbmcgZXhwcmVz
c2lvbnMgdGhhdCBhcmUgbm90IGFycmF5IG5hbWVzCisvLyBmcm9tIG1vcmUgY29tcGxleCBleHBy
ZXNzaW9ucywgYXNzaWduaW5nIHRoZW0gdG8gYSB0ZW1wb3JhcnkgdmFyaWFibGUgYSMuCiAvLyBF
eGFtcGxlcyB3aGVyZSBhLCBiIGFuZCBjIGFyZSBhbGwgYXJyYXlzOgogLy8gKGEgPSBiKSA9PSAo
YSA9IGMpIGlzIHNwbGl0IGludG8gYSA9IGI7IHR5cGVbbl0gYTEgPSBhOyBhID0gYzsgdHlwZVtu
XSBhMiA9IGE7IGExID09IGEyOwogLy8gdHlwZSBkID0gdHlwZVtuXSguLi4pW2ldOyBpcyBzcGxp
dCBpbnRvIHR5cGVbbl0gYTEgPSB0eXBlW25dKC4uLik7IHR5cGUgZCA9IGExW2ldOwpAQCAtMTIs
OCArMTIsMTEgQEAKICNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9TRVBBUkFURUVYUFJFU1NJ
T05TUkVUVVJOSU5HQVJSQVlTX0hfCiAjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfU0VQQVJB
VEVFWFBSRVNTSU9OU1JFVFVSTklOR0FSUkFZU19IXwogCituYW1lc3BhY2Ugc2gKK3sKIGNsYXNz
IFRJbnRlcm1Ob2RlOwogCiB2b2lkIFNlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJheXMo
VEludGVybU5vZGUgKnJvb3QsIHVuc2lnbmVkIGludCAqdGVtcG9yYXJ5SW5kZXgpOworfSAgLy8g
bmFtZXNwYWNlIHNoCiAKLSNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1NFUEFSQVRFRVhQ
UkVTU0lPTlNSRVRVUk5JTkdBUlJBWVNfSF8KKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRP
Ul9TRVBBUkFURUVYUFJFU1NJT05TUkVUVVJOSU5HQVJSQVlTX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZXZlcml0eS5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2V2ZXJpdHku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi40NzgwOGExNmE3ZDg2YWZjMGIwNGFlOGFkZDZiOGJiNjFmY2NkNmQ3Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvU2V2ZXJpdHkuaApAQCAtMCwwICsxLDIyIEBACisvLworLy8gQ29weXJpZ2h0IChj
KSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2lm
bmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX1NFVkVSSVRZX0hfCisjZGVmaW5lIENPTVBJTEVSX1RS
QU5TTEFUT1JfU0VWRVJJVFlfSF8KKworbmFtZXNwYWNlIHNoCit7CisKKy8vIFNldmVyaXR5IGlz
IHVzZWQgdG8gY2xhc3NpZnkgaW5mbyBsb2cgbWVzc2FnZXMuCitlbnVtIFNldmVyaXR5Cit7Cisg
ICAgU0hfV0FSTklORywKKyAgICBTSF9FUlJPUgorfTsKKworfSAgLy8gbmFtZXNwYWNlIHNoCisK
KyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9TRVZFUklUWV9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2hhZGVyTGFu
Zy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9T
aGFkZXJMYW5nLmNwcAppbmRleCAzN2IxMTE0YTJiYjM0NjYzM2RlMzdlZDQ2ODc4YWMyNTliYWFi
NjM0Li4xMWI4M2YzMDE1ZmE0ZGUzMDNiZGY2NjgyMzg4NjBkOWE1ZDdiNGViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaGFkZXJM
YW5nLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9TaGFkZXJMYW5nLmNwcApAQCAtMTYsMTAgKzE2LDEzIEBACiAjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9sZW5ndGhfbGltaXRzLmgiCiAjaWZkZWYgQU5HTEVfRU5BQkxFX0hMU0wK
ICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmgiCi0jZW5kaWYg
Ly8gQU5HTEVfRU5BQkxFX0hMU0wKKyNlbmRpZiAgLy8gQU5HTEVfRU5BQkxFX0hMU0wKICNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL1ZhcmlhYmxlUGFja2VyLmgiCiAjaW5jbHVkZSAiYW5n
bGVfZ2wuaCIKIAorbmFtZXNwYWNlIHNoCit7CisKIG5hbWVzcGFjZQogewogCkBAIC0zNCwzMSAr
MzcsMzEgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFZhclQ+CiBjb25zdCBzdGQ6OnZlY3RvcjxWYXJU
PiAqR2V0VmFyaWFibGVMaXN0KGNvbnN0IFRDb21waWxlciAqY29tcGlsZXIpOwogCiB0ZW1wbGF0
ZSA8PgotY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlVuaWZvcm0+ICpHZXRWYXJpYWJsZUxpc3QoY29u
c3QgVENvbXBpbGVyICpjb21waWxlcikKK2NvbnN0IHN0ZDo6dmVjdG9yPFVuaWZvcm0+ICpHZXRW
YXJpYWJsZUxpc3QoY29uc3QgVENvbXBpbGVyICpjb21waWxlcikKIHsKICAgICByZXR1cm4gJmNv
bXBpbGVyLT5nZXRVbmlmb3JtcygpOwogfQogCiB0ZW1wbGF0ZSA8PgotY29uc3Qgc3RkOjp2ZWN0
b3I8c2g6OlZhcnlpbmc+ICpHZXRWYXJpYWJsZUxpc3QoY29uc3QgVENvbXBpbGVyICpjb21waWxl
cikKK2NvbnN0IHN0ZDo6dmVjdG9yPFZhcnlpbmc+ICpHZXRWYXJpYWJsZUxpc3QoY29uc3QgVENv
bXBpbGVyICpjb21waWxlcikKIHsKICAgICByZXR1cm4gJmNvbXBpbGVyLT5nZXRWYXJ5aW5ncygp
OwogfQogCiB0ZW1wbGF0ZSA8PgotY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gKkdl
dFZhcmlhYmxlTGlzdChjb25zdCBUQ29tcGlsZXIgKmNvbXBpbGVyKQorY29uc3Qgc3RkOjp2ZWN0
b3I8QXR0cmlidXRlPiAqR2V0VmFyaWFibGVMaXN0KGNvbnN0IFRDb21waWxlciAqY29tcGlsZXIp
CiB7CiAgICAgcmV0dXJuICZjb21waWxlci0+Z2V0QXR0cmlidXRlcygpOwogfQogCiB0ZW1wbGF0
ZSA8PgotY29uc3Qgc3RkOjp2ZWN0b3I8c2g6Ok91dHB1dFZhcmlhYmxlPiAqR2V0VmFyaWFibGVM
aXN0KGNvbnN0IFRDb21waWxlciAqY29tcGlsZXIpCitjb25zdCBzdGQ6OnZlY3RvcjxPdXRwdXRW
YXJpYWJsZT4gKkdldFZhcmlhYmxlTGlzdChjb25zdCBUQ29tcGlsZXIgKmNvbXBpbGVyKQogewog
ICAgIHJldHVybiAmY29tcGlsZXItPmdldE91dHB1dFZhcmlhYmxlcygpOwogfQogCiB0ZW1wbGF0
ZSA8PgotY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPiAqR2V0VmFyaWFibGVM
aXN0KGNvbnN0IFRDb21waWxlciAqY29tcGlsZXIpCitjb25zdCBzdGQ6OnZlY3RvcjxJbnRlcmZh
Y2VCbG9jaz4gKkdldFZhcmlhYmxlTGlzdChjb25zdCBUQ29tcGlsZXIgKmNvbXBpbGVyKQogewog
ICAgIHJldHVybiAmY29tcGlsZXItPmdldEludGVyZmFjZUJsb2NrcygpOwogfQpAQCAtNzEsOCAr
NzQsOCBAQCBjb25zdCBzdGQ6OnZlY3RvcjxWYXJUPiAqR2V0U2hhZGVyVmFyaWFibGVzKGNvbnN0
IFNoSGFuZGxlIGhhbmRsZSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgVFNo
SGFuZGxlQmFzZSogYmFzZSA9IHN0YXRpY19jYXN0PFRTaEhhbmRsZUJhc2UqPihoYW5kbGUpOwot
ICAgIFRDb21waWxlciogY29tcGlsZXIgPSBiYXNlLT5nZXRBc0NvbXBpbGVyKCk7CisgICAgVFNo
SGFuZGxlQmFzZSAqYmFzZSA9IHN0YXRpY19jYXN0PFRTaEhhbmRsZUJhc2UgKj4oaGFuZGxlKTsK
KyAgICBUQ29tcGlsZXIgKmNvbXBpbGVyID0gYmFzZS0+Z2V0QXNDb21waWxlcigpOwogICAgIGlm
ICghY29tcGlsZXIpCiAgICAgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTk3LDcgKzEwMCw3
IEBAIFRyYW5zbGF0b3JITFNMICpHZXRUcmFuc2xhdG9ySExTTEZyb21IYW5kbGUoU2hIYW5kbGUg
aGFuZGxlKQogICAgIFRTaEhhbmRsZUJhc2UgKmJhc2UgPSBzdGF0aWNfY2FzdDxUU2hIYW5kbGVC
YXNlICo+KGhhbmRsZSk7CiAgICAgcmV0dXJuIGJhc2UtPmdldEFzVHJhbnNsYXRvckhMU0woKTsK
IH0KLSNlbmRpZiAvLyBBTkdMRV9FTkFCTEVfSExTTAorI2VuZGlmICAvLyBBTkdMRV9FTkFCTEVf
SExTTAogCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKQEAgLTEwNSw3ICsxMDgsNyBAQCBU
cmFuc2xhdG9ySExTTCAqR2V0VHJhbnNsYXRvckhMU0xGcm9tSGFuZGxlKFNoSGFuZGxlIGhhbmRs
ZSkKIC8vIERyaXZlciBtdXN0IGNhbGwgdGhpcyBmaXJzdCwgb25jZSwgYmVmb3JlIGRvaW5nIGFu
eSBvdGhlciBjb21waWxlciBvcGVyYXRpb25zLgogLy8gU3Vic2VxdWVudCBjYWxscyB0byB0aGlz
IGZ1bmN0aW9uIGFyZSBuby1vcC4KIC8vCi1ib29sIFNoSW5pdGlhbGl6ZSgpCitib29sIEluaXRp
YWxpemUoKQogewogICAgIGlmICghaXNJbml0aWFsaXplZCkKICAgICB7CkBAIC0xMTcsNyArMTIw
LDcgQEAgYm9vbCBTaEluaXRpYWxpemUoKQogLy8KIC8vIENsZWFudXAgc3ltYm9sIHRhYmxlcwog
Ly8KLWJvb2wgU2hGaW5hbGl6ZSgpCitib29sIEZpbmFsaXplKCkKIHsKICAgICBpZiAoaXNJbml0
aWFsaXplZCkKICAgICB7CkBAIC0xMzAsMzUgKzEzMywzNyBAQCBib29sIFNoRmluYWxpemUoKQog
Ly8KIC8vIEluaXRpYWxpemUgYnVpbHQtaW4gcmVzb3VyY2VzIHdpdGggbWluaW11bSBleHBlY3Rl
ZCB2YWx1ZXMuCiAvLwotdm9pZCBTaEluaXRCdWlsdEluUmVzb3VyY2VzKFNoQnVpbHRJblJlc291
cmNlcyogcmVzb3VyY2VzKQordm9pZCBJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0SW5SZXNv
dXJjZXMgKnJlc291cmNlcykKIHsKICAgICAvLyBNYWtlIGNvbXBhcmFibGUuCiAgICAgbWVtc2V0
KHJlc291cmNlcywgMCwgc2l6ZW9mKCpyZXNvdXJjZXMpKTsKIAogICAgIC8vIENvbnN0YW50cy4K
LSAgICByZXNvdXJjZXMtPk1heFZlcnRleEF0dHJpYnMgPSA4OwotICAgIHJlc291cmNlcy0+TWF4
VmVydGV4VW5pZm9ybVZlY3RvcnMgPSAxMjg7Ci0gICAgcmVzb3VyY2VzLT5NYXhWYXJ5aW5nVmVj
dG9ycyA9IDg7Ci0gICAgcmVzb3VyY2VzLT5NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyA9IDA7
CisgICAgcmVzb3VyY2VzLT5NYXhWZXJ0ZXhBdHRyaWJzICAgICAgICAgICAgID0gODsKKyAgICBy
ZXNvdXJjZXMtPk1heFZlcnRleFVuaWZvcm1WZWN0b3JzICAgICAgPSAxMjg7CisgICAgcmVzb3Vy
Y2VzLT5NYXhWYXJ5aW5nVmVjdG9ycyAgICAgICAgICAgID0gODsKKyAgICByZXNvdXJjZXMtPk1h
eFZlcnRleFRleHR1cmVJbWFnZVVuaXRzICAgPSAwOwogICAgIHJlc291cmNlcy0+TWF4Q29tYmlu
ZWRUZXh0dXJlSW1hZ2VVbml0cyA9IDg7Ci0gICAgcmVzb3VyY2VzLT5NYXhUZXh0dXJlSW1hZ2VV
bml0cyA9IDg7Ci0gICAgcmVzb3VyY2VzLT5NYXhGcmFnbWVudFVuaWZvcm1WZWN0b3JzID0gMTY7
Ci0gICAgcmVzb3VyY2VzLT5NYXhEcmF3QnVmZmVycyA9IDE7CisgICAgcmVzb3VyY2VzLT5NYXhU
ZXh0dXJlSW1hZ2VVbml0cyAgICAgICAgID0gODsKKyAgICByZXNvdXJjZXMtPk1heEZyYWdtZW50
VW5pZm9ybVZlY3RvcnMgICAgPSAxNjsKKyAgICByZXNvdXJjZXMtPk1heERyYXdCdWZmZXJzICAg
ICAgICAgICAgICAgPSAxOwogCiAgICAgLy8gRXh0ZW5zaW9ucy4KLSAgICByZXNvdXJjZXMtPk9F
U19zdGFuZGFyZF9kZXJpdmF0aXZlcyA9IDA7Ci0gICAgcmVzb3VyY2VzLT5PRVNfRUdMX2ltYWdl
X2V4dGVybmFsID0gMDsKKyAgICByZXNvdXJjZXMtPk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyAg
ICAgICAgPSAwOworICAgIHJlc291cmNlcy0+T0VTX0VHTF9pbWFnZV9leHRlcm5hbCAgICAgICAg
ICA9IDA7CiAgICAgcmVzb3VyY2VzLT5PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzICAgID0g
MDsKICAgICByZXNvdXJjZXMtPk5WX0VHTF9zdHJlYW1fY29uc3VtZXJfZXh0ZXJuYWwgPSAwOwot
ICAgIHJlc291cmNlcy0+QVJCX3RleHR1cmVfcmVjdGFuZ2xlID0gMDsKLSAgICByZXNvdXJjZXMt
PkVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkICAgICAgPSAwOwotICAgIHJlc291cmNlcy0+RVhUX2Ry
YXdfYnVmZmVycyA9IDA7Ci0gICAgcmVzb3VyY2VzLT5FWFRfZnJhZ19kZXB0aCA9IDA7Ci0gICAg
cmVzb3VyY2VzLT5FWFRfc2hhZGVyX3RleHR1cmVfbG9kID0gMDsKLSAgICByZXNvdXJjZXMtPldF
QkdMX2RlYnVnX3NoYWRlcl9wcmVjaXNpb24gPSAwOwotICAgIHJlc291cmNlcy0+RVhUX3NoYWRl
cl9mcmFtZWJ1ZmZlcl9mZXRjaCA9IDA7Ci0gICAgcmVzb3VyY2VzLT5OVl9zaGFkZXJfZnJhbWVi
dWZmZXJfZmV0Y2ggPSAwOwotICAgIHJlc291cmNlcy0+QVJNX3NoYWRlcl9mcmFtZWJ1ZmZlcl9m
ZXRjaCA9IDA7CisgICAgcmVzb3VyY2VzLT5BUkJfdGV4dHVyZV9yZWN0YW5nbGUgICAgICAgICAg
ID0gMDsKKyAgICByZXNvdXJjZXMtPkVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkICAgICAgICAgPSAw
OworICAgIHJlc291cmNlcy0+RVhUX2RyYXdfYnVmZmVycyAgICAgICAgICAgICAgICA9IDA7Cisg
ICAgcmVzb3VyY2VzLT5FWFRfZnJhZ19kZXB0aCAgICAgICAgICAgICAgICAgID0gMDsKKyAgICBy
ZXNvdXJjZXMtPkVYVF9zaGFkZXJfdGV4dHVyZV9sb2QgICAgICAgICAgPSAwOworICAgIHJlc291
cmNlcy0+V0VCR0xfZGVidWdfc2hhZGVyX3ByZWNpc2lvbiAgICA9IDA7CisgICAgcmVzb3VyY2Vz
LT5FWFRfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoICAgID0gMDsKKyAgICByZXNvdXJjZXMtPk5W
X3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCAgICAgPSAwOworICAgIHJlc291cmNlcy0+QVJNX3No
YWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCAgICA9IDA7CisgICAgcmVzb3VyY2VzLT5PVlJfbXVsdGl2
aWV3ICAgICAgICAgICAgICAgICAgID0gMDsKKyAgICByZXNvdXJjZXMtPkVYVF9ZVVZfdGFyZ2V0
ICAgICAgICAgICAgICAgICAgPSAwOwogCiAgICAgcmVzb3VyY2VzLT5OVl9kcmF3X2J1ZmZlcnMg
PSAwOwogCkBAIC0xNjYsMTQgKzE3MSwxNiBAQCB2b2lkIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMo
U2hCdWlsdEluUmVzb3VyY2VzKiByZXNvdXJjZXMpCiAgICAgcmVzb3VyY2VzLT5GcmFnbWVudFBy
ZWNpc2lvbkhpZ2ggPSAwOwogCiAgICAgLy8gR0xTTCBFUyAzLjAgY29uc3RhbnRzLgotICAgIHJl
c291cmNlcy0+TWF4VmVydGV4T3V0cHV0VmVjdG9ycyA9IDE2OworICAgIHJlc291cmNlcy0+TWF4
VmVydGV4T3V0cHV0VmVjdG9ycyAgPSAxNjsKICAgICByZXNvdXJjZXMtPk1heEZyYWdtZW50SW5w
dXRWZWN0b3JzID0gMTU7Ci0gICAgcmVzb3VyY2VzLT5NaW5Qcm9ncmFtVGV4ZWxPZmZzZXQgPSAt
ODsKLSAgICByZXNvdXJjZXMtPk1heFByb2dyYW1UZXhlbE9mZnNldCA9IDc7CisgICAgcmVzb3Vy
Y2VzLT5NaW5Qcm9ncmFtVGV4ZWxPZmZzZXQgICA9IC04OworICAgIHJlc291cmNlcy0+TWF4UHJv
Z3JhbVRleGVsT2Zmc2V0ICAgPSA3OwogCiAgICAgLy8gRXh0ZW5zaW9ucyBjb25zdGFudHMuCiAg
ICAgcmVzb3VyY2VzLT5NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnMgPSAwOwogCisgICAgcmVzb3Vy
Y2VzLT5NYXhWaWV3c09WUiA9IDI7CisKICAgICAvLyBEaXNhYmxlIG5hbWUgaGFzaGluZyBieSBk
ZWZhdWx0LgogICAgIHJlc291cmNlcy0+SGFzaEZ1bmN0aW9uID0gTlVMTDsKIApAQCAtMTkwLDYg
KzE5Nyw4IEBAIHZvaWQgU2hJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0SW5SZXNvdXJjZXMq
IHJlc291cmNlcykKICAgICByZXNvdXJjZXMtPk1heENvbXB1dGVJbWFnZVVuaWZvcm1zICA9IDQ7
CiAgICAgcmVzb3VyY2VzLT5NYXhDb21iaW5lZEltYWdlVW5pZm9ybXMgPSA0OwogCisgICAgcmVz
b3VyY2VzLT5NYXhVbmlmb3JtTG9jYXRpb25zID0gMTAyNDsKKwogICAgIHJlc291cmNlcy0+TWF4
Q29tYmluZWRTaGFkZXJPdXRwdXRSZXNvdXJjZXMgPSA0OwogCiAgICAgcmVzb3VyY2VzLT5NYXhD
b21wdXRlV29ya0dyb3VwQ291bnRbMF0gPSA2NTUzNTsKQEAgLTIxOCw0MyArMjI3LDQ1IEBAIHZv
aWQgU2hJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0SW5SZXNvdXJjZXMqIHJlc291cmNlcykK
IC8vCiAvLyBEcml2ZXIgY2FsbHMgdGhlc2UgdG8gY3JlYXRlIGFuZCBkZXN0cm95IGNvbXBpbGVy
IG9iamVjdHMuCiAvLwotU2hIYW5kbGUgU2hDb25zdHJ1Y3RDb21waWxlcihzaDo6R0xlbnVtIHR5
cGUsIFNoU2hhZGVyU3BlYyBzcGVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaFNo
YWRlck91dHB1dCBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNo
QnVpbHRJblJlc291cmNlcyogcmVzb3VyY2VzKQorU2hIYW5kbGUgQ29uc3RydWN0Q29tcGlsZXIo
c2g6OkdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJTcGVj
IHNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTaFNoYWRlck91dHB1dCBvdXRwdXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMgKnJl
c291cmNlcykKIHsKLSAgICBUU2hIYW5kbGVCYXNlKiBiYXNlID0gc3RhdGljX2Nhc3Q8VFNoSGFu
ZGxlQmFzZSo+KENvbnN0cnVjdENvbXBpbGVyKHR5cGUsIHNwZWMsIG91dHB1dCkpOworICAgIFRT
aEhhbmRsZUJhc2UgKmJhc2UgPSBzdGF0aWNfY2FzdDxUU2hIYW5kbGVCYXNlICo+KENvbnN0cnVj
dENvbXBpbGVyKHR5cGUsIHNwZWMsIG91dHB1dCkpOwogICAgIGlmIChiYXNlID09IG51bGxwdHIp
CiAgICAgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBUQ29tcGlsZXIqIGNvbXBp
bGVyID0gYmFzZS0+Z2V0QXNDb21waWxlcigpOworICAgIFRDb21waWxlciAqY29tcGlsZXIgPSBi
YXNlLT5nZXRBc0NvbXBpbGVyKCk7CiAgICAgaWYgKGNvbXBpbGVyID09IG51bGxwdHIpCiAgICAg
ewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICAvLyBHZW5lcmF0ZSBidWlsdC1pbiBz
eW1ib2wgdGFibGUuCi0gICAgaWYgKCFjb21waWxlci0+SW5pdCgqcmVzb3VyY2VzKSkgewotICAg
ICAgICBTaERlc3RydWN0KGJhc2UpOworICAgIGlmICghY29tcGlsZXItPkluaXQoKnJlc291cmNl
cykpCisgICAgeworICAgICAgICBEZXN0cnVjdChiYXNlKTsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCi0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGJhc2UpOworICAgIHJl
dHVybiByZWludGVycHJldF9jYXN0PHZvaWQgKj4oYmFzZSk7CiB9CiAKLXZvaWQgU2hEZXN0cnVj
dChTaEhhbmRsZSBoYW5kbGUpCit2b2lkIERlc3RydWN0KFNoSGFuZGxlIGhhbmRsZSkKIHsKICAg
ICBpZiAoaGFuZGxlID09IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIFRTaEhhbmRsZUJhc2Uq
IGJhc2UgPSBzdGF0aWNfY2FzdDxUU2hIYW5kbGVCYXNlKj4oaGFuZGxlKTsKKyAgICBUU2hIYW5k
bGVCYXNlICpiYXNlID0gc3RhdGljX2Nhc3Q8VFNoSGFuZGxlQmFzZSAqPihoYW5kbGUpOwogCiAg
ICAgaWYgKGJhc2UtPmdldEFzQ29tcGlsZXIoKSkKICAgICAgICAgRGVsZXRlQ29tcGlsZXIoYmFz
ZS0+Z2V0QXNDb21waWxlcigpKTsKIH0KIAotY29uc3Qgc3RkOjpzdHJpbmcgJlNoR2V0QnVpbHRJ
blJlc291cmNlc1N0cmluZyhjb25zdCBTaEhhbmRsZSBoYW5kbGUpCitjb25zdCBzdGQ6OnN0cmlu
ZyAmR2V0QnVpbHRJblJlc291cmNlc1N0cmluZyhjb25zdCBTaEhhbmRsZSBoYW5kbGUpCiB7CiAg
ICAgVENvbXBpbGVyICpjb21waWxlciA9IEdldENvbXBpbGVyRnJvbUhhbmRsZShoYW5kbGUpOwog
ICAgIEFTU0VSVChjb21waWxlcik7CkBAIC0yNjgsMTAgKzI3OSwxMCBAQCBjb25zdCBzdGQ6OnN0
cmluZyAmU2hHZXRCdWlsdEluUmVzb3VyY2VzU3RyaW5nKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSkK
IC8vIFJldHVybjogIFRoZSByZXR1cm4gdmFsdWUgb2YgU2hDb21waWxlIGlzIHJlYWxseSBib29s
ZWFuLCBpbmRpY2F0aW5nCiAvLyBzdWNjZXNzIG9yIGZhaWx1cmUuCiAvLwotYm9vbCBTaENvbXBp
bGUoY29uc3QgU2hIYW5kbGUgaGFuZGxlLAotICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29u
c3Qgc2hhZGVyU3RyaW5nc1tdLAotICAgICAgICAgICAgICAgc2l6ZV90IG51bVN0cmluZ3MsCi0g
ICAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zKQorYm9vbCBDb21w
aWxlKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKKyAgICAgICAgICAgICBjb25zdCBjaGFyICpjb25z
dCBzaGFkZXJTdHJpbmdzW10sCisgICAgICAgICAgICAgc2l6ZV90IG51bVN0cmluZ3MsCisgICAg
ICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykKIHsKICAgICBUQ29tcGls
ZXIgKmNvbXBpbGVyID0gR2V0Q29tcGlsZXJGcm9tSGFuZGxlKGhhbmRsZSk7CiAgICAgQVNTRVJU
KGNvbXBpbGVyKTsKQEAgLTI3OSwyMyArMjkwLDIzIEBAIGJvb2wgU2hDb21waWxlKGNvbnN0IFNo
SGFuZGxlIGhhbmRsZSwKICAgICByZXR1cm4gY29tcGlsZXItPmNvbXBpbGUoc2hhZGVyU3RyaW5n
cywgbnVtU3RyaW5ncywgY29tcGlsZU9wdGlvbnMpOwogfQogCi12b2lkIFNoQ2xlYXJSZXN1bHRz
KGNvbnN0IFNoSGFuZGxlIGhhbmRsZSkKK3ZvaWQgQ2xlYXJSZXN1bHRzKGNvbnN0IFNoSGFuZGxl
IGhhbmRsZSkKIHsKICAgICBUQ29tcGlsZXIgKmNvbXBpbGVyID0gR2V0Q29tcGlsZXJGcm9tSGFu
ZGxlKGhhbmRsZSk7CiAgICAgQVNTRVJUKGNvbXBpbGVyKTsKICAgICBjb21waWxlci0+Y2xlYXJS
ZXN1bHRzKCk7CiB9CiAKLWludCBTaEdldFNoYWRlclZlcnNpb24oY29uc3QgU2hIYW5kbGUgaGFu
ZGxlKQoraW50IEdldFNoYWRlclZlcnNpb24oY29uc3QgU2hIYW5kbGUgaGFuZGxlKQogewotICAg
IFRDb21waWxlciogY29tcGlsZXIgPSBHZXRDb21waWxlckZyb21IYW5kbGUoaGFuZGxlKTsKKyAg
ICBUQ29tcGlsZXIgKmNvbXBpbGVyID0gR2V0Q29tcGlsZXJGcm9tSGFuZGxlKGhhbmRsZSk7CiAg
ICAgQVNTRVJUKGNvbXBpbGVyKTsKICAgICByZXR1cm4gY29tcGlsZXItPmdldFNoYWRlclZlcnNp
b24oKTsKIH0KIAotU2hTaGFkZXJPdXRwdXQgU2hHZXRTaGFkZXJPdXRwdXRUeXBlKGNvbnN0IFNo
SGFuZGxlIGhhbmRsZSkKK1NoU2hhZGVyT3V0cHV0IEdldFNoYWRlck91dHB1dFR5cGUoY29uc3Qg
U2hIYW5kbGUgaGFuZGxlKQogewotICAgIFRDb21waWxlciogY29tcGlsZXIgPSBHZXRDb21waWxl
ckZyb21IYW5kbGUoaGFuZGxlKTsKKyAgICBUQ29tcGlsZXIgKmNvbXBpbGVyID0gR2V0Q29tcGls
ZXJGcm9tSGFuZGxlKGhhbmRsZSk7CiAgICAgQVNTRVJUKGNvbXBpbGVyKTsKICAgICByZXR1cm4g
Y29tcGlsZXItPmdldE91dHB1dFR5cGUoKTsKIH0KQEAgLTMwMyw3ICszMTQsNyBAQCBTaFNoYWRl
ck91dHB1dCBTaEdldFNoYWRlck91dHB1dFR5cGUoY29uc3QgU2hIYW5kbGUgaGFuZGxlKQogLy8K
IC8vIFJldHVybiBhbnkgY29tcGlsZXIgbG9nIG9mIG1lc3NhZ2VzIGZvciB0aGUgYXBwbGljYXRp
b24uCiAvLwotY29uc3Qgc3RkOjpzdHJpbmcgJlNoR2V0SW5mb0xvZyhjb25zdCBTaEhhbmRsZSBo
YW5kbGUpCitjb25zdCBzdGQ6OnN0cmluZyAmR2V0SW5mb0xvZyhjb25zdCBTaEhhbmRsZSBoYW5k
bGUpCiB7CiAgICAgVENvbXBpbGVyICpjb21waWxlciA9IEdldENvbXBpbGVyRnJvbUhhbmRsZSho
YW5kbGUpOwogICAgIEFTU0VSVChjb21waWxlcik7CkBAIC0zMTUsNyArMzI2LDcgQEAgY29uc3Qg
c3RkOjpzdHJpbmcgJlNoR2V0SW5mb0xvZyhjb25zdCBTaEhhbmRsZSBoYW5kbGUpCiAvLwogLy8g
UmV0dXJuIGFueSBvYmplY3QgY29kZS4KIC8vCi1jb25zdCBzdGQ6OnN0cmluZyAmU2hHZXRPYmpl
Y3RDb2RlKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSkKK2NvbnN0IHN0ZDo6c3RyaW5nICZHZXRPYmpl
Y3RDb2RlKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSkKIHsKICAgICBUQ29tcGlsZXIgKmNvbXBpbGVy
ID0gR2V0Q29tcGlsZXJGcm9tSGFuZGxlKGhhbmRsZSk7CiAgICAgQVNTRVJUKGNvbXBpbGVyKTsK
QEAgLTMyNCw0MCArMzM1LDM5IEBAIGNvbnN0IHN0ZDo6c3RyaW5nICZTaEdldE9iamVjdENvZGUo
Y29uc3QgU2hIYW5kbGUgaGFuZGxlKQogICAgIHJldHVybiBpbmZvU2luay5vYmouc3RyKCk7CiB9
CiAKLWNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4gKlNoR2V0TmFtZUhh
c2hpbmdNYXAoCi0gICAgY29uc3QgU2hIYW5kbGUgaGFuZGxlKQorY29uc3Qgc3RkOjptYXA8c3Rk
OjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiAqR2V0TmFtZUhhc2hpbmdNYXAoY29uc3QgU2hIYW5kbGUg
aGFuZGxlKQogewogICAgIFRDb21waWxlciAqY29tcGlsZXIgPSBHZXRDb21waWxlckZyb21IYW5k
bGUoaGFuZGxlKTsKICAgICBBU1NFUlQoY29tcGlsZXIpOwogICAgIHJldHVybiAmKGNvbXBpbGVy
LT5nZXROYW1lTWFwKCkpOwogfQogCi1jb25zdCBzdGQ6OnZlY3RvcjxzaDo6VW5pZm9ybT4gKlNo
R2V0VW5pZm9ybXMoY29uc3QgU2hIYW5kbGUgaGFuZGxlKQorY29uc3Qgc3RkOjp2ZWN0b3I8VW5p
Zm9ybT4gKkdldFVuaWZvcm1zKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSkKIHsKLSAgICByZXR1cm4g
R2V0U2hhZGVyVmFyaWFibGVzPHNoOjpVbmlmb3JtPihoYW5kbGUpOworICAgIHJldHVybiBHZXRT
aGFkZXJWYXJpYWJsZXM8VW5pZm9ybT4oaGFuZGxlKTsKIH0KIAotY29uc3Qgc3RkOjp2ZWN0b3I8
c2g6OlZhcnlpbmc+ICpTaEdldFZhcnlpbmdzKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSkKK2NvbnN0
IHN0ZDo6dmVjdG9yPFZhcnlpbmc+ICpHZXRWYXJ5aW5ncyhjb25zdCBTaEhhbmRsZSBoYW5kbGUp
CiB7Ci0gICAgcmV0dXJuIEdldFNoYWRlclZhcmlhYmxlczxzaDo6VmFyeWluZz4oaGFuZGxlKTsK
KyAgICByZXR1cm4gR2V0U2hhZGVyVmFyaWFibGVzPFZhcnlpbmc+KGhhbmRsZSk7CiB9CiAKLWNv
bnN0IHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGU+ICpTaEdldEF0dHJpYnV0ZXMoY29uc3QgU2hI
YW5kbGUgaGFuZGxlKQorY29uc3Qgc3RkOjp2ZWN0b3I8QXR0cmlidXRlPiAqR2V0QXR0cmlidXRl
cyhjb25zdCBTaEhhbmRsZSBoYW5kbGUpCiB7Ci0gICAgcmV0dXJuIEdldFNoYWRlclZhcmlhYmxl
czxzaDo6QXR0cmlidXRlPihoYW5kbGUpOworICAgIHJldHVybiBHZXRTaGFkZXJWYXJpYWJsZXM8
QXR0cmlidXRlPihoYW5kbGUpOwogfQogCi1jb25zdCBzdGQ6OnZlY3RvcjxzaDo6T3V0cHV0VmFy
aWFibGU+ICpTaEdldE91dHB1dFZhcmlhYmxlcyhjb25zdCBTaEhhbmRsZSBoYW5kbGUpCitjb25z
dCBzdGQ6OnZlY3RvcjxPdXRwdXRWYXJpYWJsZT4gKkdldE91dHB1dFZhcmlhYmxlcyhjb25zdCBT
aEhhbmRsZSBoYW5kbGUpCiB7Ci0gICAgcmV0dXJuIEdldFNoYWRlclZhcmlhYmxlczxzaDo6T3V0
cHV0VmFyaWFibGU+KGhhbmRsZSk7CisgICAgcmV0dXJuIEdldFNoYWRlclZhcmlhYmxlczxPdXRw
dXRWYXJpYWJsZT4oaGFuZGxlKTsKIH0KIAotY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFj
ZUJsb2NrPiAqU2hHZXRJbnRlcmZhY2VCbG9ja3MoY29uc3QgU2hIYW5kbGUgaGFuZGxlKQorY29u
c3Qgc3RkOjp2ZWN0b3I8SW50ZXJmYWNlQmxvY2s+ICpHZXRJbnRlcmZhY2VCbG9ja3MoY29uc3Qg
U2hIYW5kbGUgaGFuZGxlKQogewotICAgIHJldHVybiBHZXRTaGFkZXJWYXJpYWJsZXM8c2g6Oklu
dGVyZmFjZUJsb2NrPihoYW5kbGUpOworICAgIHJldHVybiBHZXRTaGFkZXJWYXJpYWJsZXM8SW50
ZXJmYWNlQmxvY2s+KGhhbmRsZSk7CiB9CiAKLXNoOjpXb3JrR3JvdXBTaXplIFNoR2V0Q29tcHV0
ZVNoYWRlckxvY2FsR3JvdXBTaXplKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSkKK1dvcmtHcm91cFNp
emUgR2V0Q29tcHV0ZVNoYWRlckxvY2FsR3JvdXBTaXplKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSkK
IHsKICAgICBBU1NFUlQoaGFuZGxlKTsKIApAQCAtMzY4LDE2ICszNzgsMjUgQEAgc2g6OldvcmtH
cm91cFNpemUgU2hHZXRDb21wdXRlU2hhZGVyTG9jYWxHcm91cFNpemUoY29uc3QgU2hIYW5kbGUg
aGFuZGxlKQogICAgIHJldHVybiBjb21waWxlci0+Z2V0Q29tcHV0ZVNoYWRlckxvY2FsU2l6ZSgp
OwogfQogCi1ib29sIFNoQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKGludCBtYXhW
ZWN0b3JzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnZlY3RvcjxzaDo6U2hhZGVyVmFyaWFibGU+ICZ2YXJpYWJsZXMpCitpbnQgR2V0VmVydGV4
U2hhZGVyTnVtVmlld3MoY29uc3QgU2hIYW5kbGUgaGFuZGxlKQoreworICAgIEFTU0VSVChoYW5k
bGUpOworICAgIFRTaEhhbmRsZUJhc2UgKmJhc2UgPSBzdGF0aWNfY2FzdDxUU2hIYW5kbGVCYXNl
ICo+KGhhbmRsZSk7CisgICAgVENvbXBpbGVyICpjb21waWxlciA9IGJhc2UtPmdldEFzQ29tcGls
ZXIoKTsKKyAgICBBU1NFUlQoY29tcGlsZXIpOworCisgICAgcmV0dXJuIGNvbXBpbGVyLT5nZXRO
dW1WaWV3cygpOworfQorCitib29sIENoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyhp
bnQgbWF4VmVjdG9ycywgY29uc3Qgc3RkOjp2ZWN0b3I8U2hhZGVyVmFyaWFibGU+ICZ2YXJpYWJs
ZXMpCiB7CiAgICAgVmFyaWFibGVQYWNrZXIgcGFja2VyOwogICAgIHJldHVybiBwYWNrZXIuQ2hl
Y2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKG1heFZlY3RvcnMsIHZhcmlhYmxlcyk7CiB9
CiAKLWJvb2wgU2hHZXRJbnRlcmZhY2VCbG9ja1JlZ2lzdGVyKGNvbnN0IFNoSGFuZGxlIGhhbmRs
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZp
bnRlcmZhY2VCbG9ja05hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgKmluZGV4T3V0KQorYm9vbCBHZXRJbnRlcmZhY2VCbG9ja1JlZ2lzdGVyKGNvbnN0
IFNoSGFuZGxlIGhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyAmaW50ZXJmYWNlQmxvY2tOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCAqaW5kZXhPdXQpCiB7CiAjaWZkZWYgQU5HTEVfRU5BQkxFX0hM
U0wKICAgICBBU1NFUlQoaW5kZXhPdXQpOwpAQCAtMzk0LDEwICs0MTMsMTAgQEAgYm9vbCBTaEdl
dEludGVyZmFjZUJsb2NrUmVnaXN0ZXIoY29uc3QgU2hIYW5kbGUgaGFuZGxlLAogICAgIHJldHVy
biB0cnVlOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYgLy8gQU5HTEVfRU5BQkxF
X0hMU0wKKyNlbmRpZiAgLy8gQU5HTEVfRU5BQkxFX0hMU0wKIH0KIAotY29uc3Qgc3RkOjptYXA8
c3RkOjpzdHJpbmcsIHVuc2lnbmVkIGludD4gKlNoR2V0VW5pZm9ybVJlZ2lzdGVyTWFwKGNvbnN0
IFNoSGFuZGxlIGhhbmRsZSkKK2NvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1bnNpZ25lZCBp
bnQ+ICpHZXRVbmlmb3JtUmVnaXN0ZXJNYXAoY29uc3QgU2hIYW5kbGUgaGFuZGxlKQogewogI2lm
ZGVmIEFOR0xFX0VOQUJMRV9ITFNMCiAgICAgVHJhbnNsYXRvckhMU0wgKnRyYW5zbGF0b3IgPSBH
ZXRUcmFuc2xhdG9ySExTTEZyb21IYW5kbGUoaGFuZGxlKTsKQEAgLTQwOCwzICs0MjcsNSBAQCBj
b25zdCBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgdW5zaWduZWQgaW50PiAqU2hHZXRVbmlmb3JtUmVn
aXN0ZXJNYXAoY29uc3QgU2hIYW5kbAogICAgIHJldHVybiBudWxscHRyOwogI2VuZGlmICAvLyBB
TkdMRV9FTkFCTEVfSExTTAogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NoYWRlclZhcnMu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2hh
ZGVyVmFycy5jcHAKaW5kZXggOGUyMTdmMWMwZGEzYjMzYjVjNGE2YWZmYTI3ZGFhZjA0MjdlYTA5
ZC4uODRhNGUzZDUzNmU3YzAwYjU5NWJhZTFmYzFiZDI0ZDkxYjEwMmU4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2hhZGVyVmFy
cy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvU2hhZGVyVmFycy5jcHAKQEAgLTIxLDcgKzIxLDYgQEAgSW50ZXJwb2xhdGlvblR5cGUgR2V0
Tm9uQXV4aWxpYXJ5SW50ZXJwb2xhdGlvblR5cGUoSW50ZXJwb2xhdGlvblR5cGUgaW50ZXJwb2xh
dGkKIHsKICAgICByZXR1cm4gKGludGVycG9sYXRpb24gPT0gSU5URVJQT0xBVElPTl9DRU5UUk9J
RCA/IElOVEVSUE9MQVRJT05fU01PT1RIIDogaW50ZXJwb2xhdGlvbik7CiB9Ci0KIH0KIC8vIFRo
ZSBFUyAzLjAgc3BlYyBpcyBub3QgY2xlYXIgb24gdGhpcyBwb2ludCwgYnV0IHRoZSBFUyAzLjEg
c3BlYywgYW5kIGRpc2N1c3Npb24KIC8vIG9uIEtocm9ub3Mub3JnLCBjbGFyaWZpZXMgdGhhdCBh
IHNtb290aC9mbGF0IG1pc21hdGNoIHByb2R1Y2VzIGEgbGluayBlcnJvciwKQEAgLTMxLDIyICsz
MCwxOCBAQCBib29sIEludGVycG9sYXRpb25UeXBlc01hdGNoKEludGVycG9sYXRpb25UeXBlIGEs
IEludGVycG9sYXRpb25UeXBlIGIpCiAgICAgcmV0dXJuIChHZXROb25BdXhpbGlhcnlJbnRlcnBv
bGF0aW9uVHlwZShhKSA9PSBHZXROb25BdXhpbGlhcnlJbnRlcnBvbGF0aW9uVHlwZShiKSk7CiB9
CiAKLVNoYWRlclZhcmlhYmxlOjpTaGFkZXJWYXJpYWJsZSgpCi0gICAgOiB0eXBlKDApLAotICAg
ICAgcHJlY2lzaW9uKDApLAotICAgICAgYXJyYXlTaXplKDApLAotICAgICAgc3RhdGljVXNlKGZh
bHNlKQote30KK1NoYWRlclZhcmlhYmxlOjpTaGFkZXJWYXJpYWJsZSgpIDogdHlwZSgwKSwgcHJl
Y2lzaW9uKDApLCBhcnJheVNpemUoMCksIHN0YXRpY1VzZShmYWxzZSkKK3sKK30KIAogU2hhZGVy
VmFyaWFibGU6OlNoYWRlclZhcmlhYmxlKEdMZW51bSB0eXBlSW4sIHVuc2lnbmVkIGludCBhcnJh
eVNpemVJbikKLSAgICA6IHR5cGUodHlwZUluKSwKLSAgICAgIHByZWNpc2lvbigwKSwKLSAgICAg
IGFycmF5U2l6ZShhcnJheVNpemVJbiksCi0gICAgICBzdGF0aWNVc2UoZmFsc2UpCi17fQorICAg
IDogdHlwZSh0eXBlSW4pLCBwcmVjaXNpb24oMCksIGFycmF5U2l6ZShhcnJheVNpemVJbiksIHN0
YXRpY1VzZShmYWxzZSkKK3sKK30KIAogU2hhZGVyVmFyaWFibGU6On5TaGFkZXJWYXJpYWJsZSgp
Ci17fQoreworfQogCiBTaGFkZXJWYXJpYWJsZTo6U2hhZGVyVmFyaWFibGUoY29uc3QgU2hhZGVy
VmFyaWFibGUgJm90aGVyKQogICAgIDogdHlwZShvdGhlci50eXBlKSwKQEAgLTU3LDMwICs1Miwy
NyBAQCBTaGFkZXJWYXJpYWJsZTo6U2hhZGVyVmFyaWFibGUoY29uc3QgU2hhZGVyVmFyaWFibGUg
Jm90aGVyKQogICAgICAgc3RhdGljVXNlKG90aGVyLnN0YXRpY1VzZSksCiAgICAgICBmaWVsZHMo
b3RoZXIuZmllbGRzKSwKICAgICAgIHN0cnVjdE5hbWUob3RoZXIuc3RydWN0TmFtZSkKLXt9Cit7
Cit9CiAKIFNoYWRlclZhcmlhYmxlICZTaGFkZXJWYXJpYWJsZTo6b3BlcmF0b3I9KGNvbnN0IFNo
YWRlclZhcmlhYmxlICZvdGhlcikKIHsKLSAgICB0eXBlID0gb3RoZXIudHlwZTsKLSAgICBwcmVj
aXNpb24gPSBvdGhlci5wcmVjaXNpb247Ci0gICAgbmFtZSA9IG90aGVyLm5hbWU7CisgICAgdHlw
ZSAgICAgICA9IG90aGVyLnR5cGU7CisgICAgcHJlY2lzaW9uICA9IG90aGVyLnByZWNpc2lvbjsK
KyAgICBuYW1lICAgICAgID0gb3RoZXIubmFtZTsKICAgICBtYXBwZWROYW1lID0gb3RoZXIubWFw
cGVkTmFtZTsKLSAgICBhcnJheVNpemUgPSBvdGhlci5hcnJheVNpemU7Ci0gICAgc3RhdGljVXNl
ID0gb3RoZXIuc3RhdGljVXNlOwotICAgIGZpZWxkcyA9IG90aGVyLmZpZWxkczsKKyAgICBhcnJh
eVNpemUgID0gb3RoZXIuYXJyYXlTaXplOworICAgIHN0YXRpY1VzZSAgPSBvdGhlci5zdGF0aWNV
c2U7CisgICAgZmllbGRzICAgICA9IG90aGVyLmZpZWxkczsKICAgICBzdHJ1Y3ROYW1lID0gb3Ro
ZXIuc3RydWN0TmFtZTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKIGJvb2wgU2hhZGVyVmFyaWFi
bGU6Om9wZXJhdG9yPT0oY29uc3QgU2hhZGVyVmFyaWFibGUgJm90aGVyKSBjb25zdAogewotICAg
IGlmICh0eXBlICE9IG90aGVyLnR5cGUgfHwKLSAgICAgICAgcHJlY2lzaW9uICE9IG90aGVyLnBy
ZWNpc2lvbiB8fAotICAgICAgICBuYW1lICE9IG90aGVyLm5hbWUgfHwKLSAgICAgICAgbWFwcGVk
TmFtZSAhPSBvdGhlci5tYXBwZWROYW1lIHx8Ci0gICAgICAgIGFycmF5U2l6ZSAhPSBvdGhlci5h
cnJheVNpemUgfHwKLSAgICAgICAgc3RhdGljVXNlICE9IG90aGVyLnN0YXRpY1VzZSB8fAotICAg
ICAgICBmaWVsZHMuc2l6ZSgpICE9IG90aGVyLmZpZWxkcy5zaXplKCkgfHwKKyAgICBpZiAodHlw
ZSAhPSBvdGhlci50eXBlIHx8IHByZWNpc2lvbiAhPSBvdGhlci5wcmVjaXNpb24gfHwgbmFtZSAh
PSBvdGhlci5uYW1lIHx8CisgICAgICAgIG1hcHBlZE5hbWUgIT0gb3RoZXIubWFwcGVkTmFtZSB8
fCBhcnJheVNpemUgIT0gb3RoZXIuYXJyYXlTaXplIHx8CisgICAgICAgIHN0YXRpY1VzZSAhPSBv
dGhlci5zdGF0aWNVc2UgfHwgZmllbGRzLnNpemUoKSAhPSBvdGhlci5maWVsZHMuc2l6ZSgpIHx8
CiAgICAgICAgIHN0cnVjdE5hbWUgIT0gb3RoZXIuc3RydWN0TmFtZSkKICAgICB7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTkzLDkgKzg1LDkgQEAgYm9vbCBTaGFkZXJWYXJpYWJsZTo6b3Bl
cmF0b3I9PShjb25zdCBTaGFkZXJWYXJpYWJsZSAmb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWJvb2wgU2hhZGVyVmFyaWFibGU6OmZpbmRJbmZvQnlNYXBwZWROYW1lKAotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZtYXBwZWRGdWxsTmFtZSwKLSAgICBjb25zdCBTaGFkZXJWYXJp
YWJsZSAqKmxlYWZWYXIsIHN0ZDo6c3RyaW5nICpvcmlnaW5hbEZ1bGxOYW1lKSBjb25zdAorYm9v
bCBTaGFkZXJWYXJpYWJsZTo6ZmluZEluZm9CeU1hcHBlZE5hbWUoY29uc3Qgc3RkOjpzdHJpbmcg
Jm1hcHBlZEZ1bGxOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU2hhZGVyVmFyaWFibGUgKipsZWFmVmFyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKm9yaWdpbmFsRnVsbE5hbWUpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKGxlYWZWYXIgJiYgb3JpZ2luYWxGdWxsTmFtZSk7CiAgICAgLy8gVGhl
cmUgYXJlIHRocmVlIGNhc2VzOgpAQCAtMTEwLDcgKzEwMiw3IEBAIGJvb2wgU2hhZGVyVmFyaWFi
bGU6OmZpbmRJbmZvQnlNYXBwZWROYW1lKAogICAgICAgICBpZiAobWFwcGVkRnVsbE5hbWUgIT0g
dGhpcy0+bWFwcGVkTmFtZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgKm9y
aWdpbmFsRnVsbE5hbWUgPSB0aGlzLT5uYW1lOwotICAgICAgICAqbGVhZlZhciA9IHRoaXM7Cisg
ICAgICAgICpsZWFmVmFyICAgICAgICAgID0gdGhpczsKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogICAgIGVsc2UKQEAgLTEzMSwxMyArMTIzLDEzIEBAIGJvb2wgU2hhZGVyVmFyaWFibGU6
OmZpbmRJbmZvQnlNYXBwZWROYW1lKAogICAgICAgICAgICAgaWYgKGNsb3NlUG9zICsgMSA9PSBt
YXBwZWRGdWxsTmFtZS5zaXplKCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgKm9y
aWdpbmFsRnVsbE5hbWUgPSBvcmlnaW5hbE5hbWU7Ci0gICAgICAgICAgICAgICAgKmxlYWZWYXIg
PSB0aGlzOworICAgICAgICAgICAgICAgICpsZWFmVmFyICAgICAgICAgID0gdGhpczsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvLyBJbiB0aGUgZm9ybSBvZiAnYVswXS5i
Jywgc28gYWZ0ZXIgJ10nLCAnLicgaXMgZXhwZWN0ZWQuCi0gICAgICAgICAgICAgICAgaWYgKG1h
cHBlZEZ1bGxOYW1lW2Nsb3NlUG9zICsgMV0gICE9ICcuJykKKyAgICAgICAgICAgICAgICBpZiAo
bWFwcGVkRnVsbE5hbWVbY2xvc2VQb3MgKyAxXSAhPSAnLicpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICByZW1haW5pbmcgPSBtYXBwZWRGdWxsTmFt
ZS5zdWJzdHIoY2xvc2VQb3MgKyAyKTsgIC8vIFNraXAgIl0uIgogICAgICAgICAgICAgfQpAQCAt
MTUxLDEyICsxNDMsMTEgQEAgYm9vbCBTaGFkZXJWYXJpYWJsZTo6ZmluZEluZm9CeU1hcHBlZE5h
bWUoCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IFNoYWRlclZhcmlhYmxlICpmaWVsZFZh
ciA9IE5VTEw7CiAgICAgICAgICAgICBzdGQ6OnN0cmluZyBvcmlnaW5hbEZpZWxkTmFtZTsKLSAg
ICAgICAgICAgIGJvb2wgZm91bmQgPSBmaWVsZHNbaWldLmZpbmRJbmZvQnlNYXBwZWROYW1lKAot
ICAgICAgICAgICAgICAgIHJlbWFpbmluZywgJmZpZWxkVmFyLCAmb3JpZ2luYWxGaWVsZE5hbWUp
OworICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZpZWxkc1tpaV0uZmluZEluZm9CeU1hcHBlZE5h
bWUocmVtYWluaW5nLCAmZmllbGRWYXIsICZvcmlnaW5hbEZpZWxkTmFtZSk7CiAgICAgICAgICAg
ICBpZiAoZm91bmQpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgKm9yaWdpbmFsRnVs
bE5hbWUgPSBvcmlnaW5hbE5hbWUgKyAiLiIgKyBvcmlnaW5hbEZpZWxkTmFtZTsKLSAgICAgICAg
ICAgICAgICAqbGVhZlZhciA9IGZpZWxkVmFyOworICAgICAgICAgICAgICAgICpsZWFmVmFyICAg
ICAgICAgID0gZmllbGRWYXI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KQEAgLTE2NCw4ICsxNTUsOCBAQCBib29sIFNoYWRlclZhcmlhYmxl
OjpmaW5kSW5mb0J5TWFwcGVkTmFtZSgKICAgICB9CiB9CiAKLWJvb2wgU2hhZGVyVmFyaWFibGU6
OmlzU2FtZVZhcmlhYmxlQXRMaW5rVGltZSgKLSAgICBjb25zdCBTaGFkZXJWYXJpYWJsZSAmb3Ro
ZXIsIGJvb2wgbWF0Y2hQcmVjaXNpb24pIGNvbnN0Citib29sIFNoYWRlclZhcmlhYmxlOjppc1Nh
bWVWYXJpYWJsZUF0TGlua1RpbWUoY29uc3QgU2hhZGVyVmFyaWFibGUgJm90aGVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbWF0Y2hQcmVjaXNp
b24pIGNvbnN0CiB7CiAgICAgaWYgKHR5cGUgIT0gb3RoZXIudHlwZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTgwLDggKzE3MSw3IEBAIGJvb2wgU2hhZGVyVmFyaWFibGU6OmlzU2FtZVZh
cmlhYmxlQXRMaW5rVGltZSgKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGZvciAoc2l6ZV90
IGlpID0gMDsgaWkgPCBmaWVsZHMuc2l6ZSgpOyArK2lpKQogICAgIHsKLSAgICAgICAgaWYgKCFm
aWVsZHNbaWldLmlzU2FtZVZhcmlhYmxlQXRMaW5rVGltZShvdGhlci5maWVsZHNbaWldLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoUHJlY2lz
aW9uKSkKKyAgICAgICAgaWYgKCFmaWVsZHNbaWldLmlzU2FtZVZhcmlhYmxlQXRMaW5rVGltZShv
dGhlci5maWVsZHNbaWldLCBtYXRjaFByZWNpc2lvbikpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTkxLDUzICsxODEsNjYgQEAgYm9vbCBTaGFk
ZXJWYXJpYWJsZTo6aXNTYW1lVmFyaWFibGVBdExpbmtUaW1lKAogICAgIHJldHVybiB0cnVlOwog
fQogCi1Vbmlmb3JtOjpVbmlmb3JtKCkKLXt9CitVbmlmb3JtOjpVbmlmb3JtKCkgOiBiaW5kaW5n
KC0xKQoreworfQogCiBVbmlmb3JtOjp+VW5pZm9ybSgpCi17fQoreworfQogCi1Vbmlmb3JtOjpV
bmlmb3JtKGNvbnN0IFVuaWZvcm0gJm90aGVyKQotICAgIDogU2hhZGVyVmFyaWFibGUob3RoZXIp
Ci17fQorVW5pZm9ybTo6VW5pZm9ybShjb25zdCBVbmlmb3JtICZvdGhlcikgOiBWYXJpYWJsZVdp
dGhMb2NhdGlvbihvdGhlciksIGJpbmRpbmcob3RoZXIuYmluZGluZykKK3sKK30KIAogVW5pZm9y
bSAmVW5pZm9ybTo6b3BlcmF0b3I9KGNvbnN0IFVuaWZvcm0gJm90aGVyKQogewotICAgIFNoYWRl
clZhcmlhYmxlOjpvcGVyYXRvcj0ob3RoZXIpOworICAgIFZhcmlhYmxlV2l0aExvY2F0aW9uOjpv
cGVyYXRvcj0ob3RoZXIpOworICAgIGJpbmRpbmcgICAgICAgICAgICAgICAgID0gb3RoZXIuYmlu
ZGluZzsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKIGJvb2wgVW5pZm9ybTo6b3BlcmF0b3I9PShj
b25zdCBVbmlmb3JtICZvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gU2hhZGVyVmFyaWFibGU6
Om9wZXJhdG9yPT0ob3RoZXIpOworICAgIHJldHVybiBWYXJpYWJsZVdpdGhMb2NhdGlvbjo6b3Bl
cmF0b3I9PShvdGhlcikgJiYgYmluZGluZyA9PSBvdGhlci5iaW5kaW5nOwogfQogCiBib29sIFVu
aWZvcm06OmlzU2FtZVVuaWZvcm1BdExpbmtUaW1lKGNvbnN0IFVuaWZvcm0gJm90aGVyKSBjb25z
dAogewotICAgIHJldHVybiBTaGFkZXJWYXJpYWJsZTo6aXNTYW1lVmFyaWFibGVBdExpbmtUaW1l
KG90aGVyLCB0cnVlKTsKKyAgICBpZiAoYmluZGluZyAhPSAtMSAmJiBvdGhlci5iaW5kaW5nICE9
IC0xICYmIGJpbmRpbmcgIT0gb3RoZXIuYmluZGluZykKKyAgICB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgaWYgKGxvY2F0aW9uICE9IC0xICYmIG90aGVyLmxvY2F0aW9uICE9
IC0xICYmIGxvY2F0aW9uICE9IG90aGVyLmxvY2F0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gVmFyaWFibGVXaXRoTG9jYXRpb246OmlzU2FtZVZh
cmlhYmxlQXRMaW5rVGltZShvdGhlciwgdHJ1ZSk7CiB9CiAKLUludGVyZmFjZVZhcmlhYmxlOjpJ
bnRlcmZhY2VWYXJpYWJsZSgpIDogbG9jYXRpb24oLTEpCi17fQorVmFyaWFibGVXaXRoTG9jYXRp
b246OlZhcmlhYmxlV2l0aExvY2F0aW9uKCkgOiBsb2NhdGlvbigtMSkKK3sKK30KIAotSW50ZXJm
YWNlVmFyaWFibGU6On5JbnRlcmZhY2VWYXJpYWJsZSgpCi17fQorVmFyaWFibGVXaXRoTG9jYXRp
b246On5WYXJpYWJsZVdpdGhMb2NhdGlvbigpCit7Cit9CiAKLUludGVyZmFjZVZhcmlhYmxlOjpJ
bnRlcmZhY2VWYXJpYWJsZShjb25zdCBJbnRlcmZhY2VWYXJpYWJsZSAmb3RoZXIpCitWYXJpYWJs
ZVdpdGhMb2NhdGlvbjo6VmFyaWFibGVXaXRoTG9jYXRpb24oY29uc3QgVmFyaWFibGVXaXRoTG9j
YXRpb24gJm90aGVyKQogICAgIDogU2hhZGVyVmFyaWFibGUob3RoZXIpLCBsb2NhdGlvbihvdGhl
ci5sb2NhdGlvbikKLXt9Cit7Cit9CiAKLUludGVyZmFjZVZhcmlhYmxlICZJbnRlcmZhY2VWYXJp
YWJsZTo6b3BlcmF0b3I9KGNvbnN0IEludGVyZmFjZVZhcmlhYmxlICZvdGhlcikKK1ZhcmlhYmxl
V2l0aExvY2F0aW9uICZWYXJpYWJsZVdpdGhMb2NhdGlvbjo6b3BlcmF0b3I9KGNvbnN0IFZhcmlh
YmxlV2l0aExvY2F0aW9uICZvdGhlcikKIHsKICAgICBTaGFkZXJWYXJpYWJsZTo6b3BlcmF0b3I9
KG90aGVyKTsKLSAgICBsb2NhdGlvbiA9IG90aGVyLmxvY2F0aW9uOworICAgIGxvY2F0aW9uICAg
ICAgICAgICAgICAgID0gb3RoZXIubG9jYXRpb247CiAgICAgcmV0dXJuICp0aGlzOwogfQogCi1i
b29sIEludGVyZmFjZVZhcmlhYmxlOjpvcGVyYXRvcj09KGNvbnN0IEludGVyZmFjZVZhcmlhYmxl
ICZvdGhlcikgY29uc3QKK2Jvb2wgVmFyaWFibGVXaXRoTG9jYXRpb246Om9wZXJhdG9yPT0oY29u
c3QgVmFyaWFibGVXaXRoTG9jYXRpb24gJm90aGVyKSBjb25zdAogewotICAgIHJldHVybiAoU2hh
ZGVyVmFyaWFibGU6Om9wZXJhdG9yPT0ob3RoZXIpICYmCi0gICAgICAgICAgICBsb2NhdGlvbiA9
PSBvdGhlci5sb2NhdGlvbik7CisgICAgcmV0dXJuIChTaGFkZXJWYXJpYWJsZTo6b3BlcmF0b3I9
PShvdGhlcikgJiYgbG9jYXRpb24gPT0gb3RoZXIubG9jYXRpb24pOwogfQogCiBBdHRyaWJ1dGU6
OkF0dHJpYnV0ZSgpCkBAIC0yNDgsMTkgKzI1MSwxOSBAQCBBdHRyaWJ1dGU6On5BdHRyaWJ1dGUo
KQogewogfQogCi1BdHRyaWJ1dGU6OkF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUgJm90aGVyKSA6
IEludGVyZmFjZVZhcmlhYmxlKG90aGVyKQorQXR0cmlidXRlOjpBdHRyaWJ1dGUoY29uc3QgQXR0
cmlidXRlICZvdGhlcikgOiBWYXJpYWJsZVdpdGhMb2NhdGlvbihvdGhlcikKIHsKIH0KIAogQXR0
cmlidXRlICZBdHRyaWJ1dGU6Om9wZXJhdG9yPShjb25zdCBBdHRyaWJ1dGUgJm90aGVyKQogewot
ICAgIEludGVyZmFjZVZhcmlhYmxlOjpvcGVyYXRvcj0ob3RoZXIpOworICAgIFZhcmlhYmxlV2l0
aExvY2F0aW9uOjpvcGVyYXRvcj0ob3RoZXIpOwogICAgIHJldHVybiAqdGhpczsKIH0KIAogYm9v
bCBBdHRyaWJ1dGU6Om9wZXJhdG9yPT0oY29uc3QgQXR0cmlidXRlICZvdGhlcikgY29uc3QKIHsK
LSAgICByZXR1cm4gSW50ZXJmYWNlVmFyaWFibGU6Om9wZXJhdG9yPT0ob3RoZXIpOworICAgIHJl
dHVybiBWYXJpYWJsZVdpdGhMb2NhdGlvbjo6b3BlcmF0b3I9PShvdGhlcik7CiB9CiAKIE91dHB1
dFZhcmlhYmxlOjpPdXRwdXRWYXJpYWJsZSgpCkBAIC0yNzEsNDQgKzI3NCw0NCBAQCBPdXRwdXRW
YXJpYWJsZTo6fk91dHB1dFZhcmlhYmxlKCkKIHsKIH0KIAotT3V0cHV0VmFyaWFibGU6Ok91dHB1
dFZhcmlhYmxlKGNvbnN0IE91dHB1dFZhcmlhYmxlICZvdGhlcikgOiBJbnRlcmZhY2VWYXJpYWJs
ZShvdGhlcikKK091dHB1dFZhcmlhYmxlOjpPdXRwdXRWYXJpYWJsZShjb25zdCBPdXRwdXRWYXJp
YWJsZSAmb3RoZXIpIDogVmFyaWFibGVXaXRoTG9jYXRpb24ob3RoZXIpCiB7CiB9CiAKIE91dHB1
dFZhcmlhYmxlICZPdXRwdXRWYXJpYWJsZTo6b3BlcmF0b3I9KGNvbnN0IE91dHB1dFZhcmlhYmxl
ICZvdGhlcikKIHsKLSAgICBJbnRlcmZhY2VWYXJpYWJsZTo6b3BlcmF0b3I9KG90aGVyKTsKKyAg
ICBWYXJpYWJsZVdpdGhMb2NhdGlvbjo6b3BlcmF0b3I9KG90aGVyKTsKICAgICByZXR1cm4gKnRo
aXM7CiB9CiAKIGJvb2wgT3V0cHV0VmFyaWFibGU6Om9wZXJhdG9yPT0oY29uc3QgT3V0cHV0VmFy
aWFibGUgJm90aGVyKSBjb25zdAogewotICAgIHJldHVybiBJbnRlcmZhY2VWYXJpYWJsZTo6b3Bl
cmF0b3I9PShvdGhlcik7CisgICAgcmV0dXJuIFZhcmlhYmxlV2l0aExvY2F0aW9uOjpvcGVyYXRv
cj09KG90aGVyKTsKIH0KIAotSW50ZXJmYWNlQmxvY2tGaWVsZDo6SW50ZXJmYWNlQmxvY2tGaWVs
ZCgpCi0gICAgOiBpc1Jvd01ham9yTGF5b3V0KGZhbHNlKQote30KK0ludGVyZmFjZUJsb2NrRmll
bGQ6OkludGVyZmFjZUJsb2NrRmllbGQoKSA6IGlzUm93TWFqb3JMYXlvdXQoZmFsc2UpCit7Cit9
CiAKIEludGVyZmFjZUJsb2NrRmllbGQ6On5JbnRlcmZhY2VCbG9ja0ZpZWxkKCkKLXt9Cit7Cit9
CiAKIEludGVyZmFjZUJsb2NrRmllbGQ6OkludGVyZmFjZUJsb2NrRmllbGQoY29uc3QgSW50ZXJm
YWNlQmxvY2tGaWVsZCAmb3RoZXIpCi0gICAgOiBTaGFkZXJWYXJpYWJsZShvdGhlciksCi0gICAg
ICBpc1Jvd01ham9yTGF5b3V0KG90aGVyLmlzUm93TWFqb3JMYXlvdXQpCi17fQorICAgIDogU2hh
ZGVyVmFyaWFibGUob3RoZXIpLCBpc1Jvd01ham9yTGF5b3V0KG90aGVyLmlzUm93TWFqb3JMYXlv
dXQpCit7Cit9CiAKIEludGVyZmFjZUJsb2NrRmllbGQgJkludGVyZmFjZUJsb2NrRmllbGQ6Om9w
ZXJhdG9yPShjb25zdCBJbnRlcmZhY2VCbG9ja0ZpZWxkICZvdGhlcikKIHsKICAgICBTaGFkZXJW
YXJpYWJsZTo6b3BlcmF0b3I9KG90aGVyKTsKLSAgICBpc1Jvd01ham9yTGF5b3V0ID0gb3RoZXIu
aXNSb3dNYWpvckxheW91dDsKKyAgICBpc1Jvd01ham9yTGF5b3V0ICAgICAgICA9IG90aGVyLmlz
Um93TWFqb3JMYXlvdXQ7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCiBib29sIEludGVyZmFjZUJs
b2NrRmllbGQ6Om9wZXJhdG9yPT0oY29uc3QgSW50ZXJmYWNlQmxvY2tGaWVsZCAmb3RoZXIpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIChTaGFkZXJWYXJpYWJsZTo6b3BlcmF0b3I9PShvdGhlcikgJiYK
LSAgICAgICAgICAgIGlzUm93TWFqb3JMYXlvdXQgPT0gb3RoZXIuaXNSb3dNYWpvckxheW91dCk7
CisgICAgcmV0dXJuIChTaGFkZXJWYXJpYWJsZTo6b3BlcmF0b3I9PShvdGhlcikgJiYgaXNSb3dN
YWpvckxheW91dCA9PSBvdGhlci5pc1Jvd01ham9yTGF5b3V0KTsKIH0KIAogYm9vbCBJbnRlcmZh
Y2VCbG9ja0ZpZWxkOjppc1NhbWVJbnRlcmZhY2VCbG9ja0ZpZWxkQXRMaW5rVGltZSgKQEAgLTMx
OCwzMiArMzIxLDMwIEBAIGJvb2wgSW50ZXJmYWNlQmxvY2tGaWVsZDo6aXNTYW1lSW50ZXJmYWNl
QmxvY2tGaWVsZEF0TGlua1RpbWUoCiAgICAgICAgICAgICBpc1Jvd01ham9yTGF5b3V0ID09IG90
aGVyLmlzUm93TWFqb3JMYXlvdXQpOwogfQogCi1WYXJ5aW5nOjpWYXJ5aW5nKCkKLSAgICA6IGlu
dGVycG9sYXRpb24oSU5URVJQT0xBVElPTl9TTU9PVEgpLAotICAgICAgaXNJbnZhcmlhbnQoZmFs
c2UpCi17fQorVmFyeWluZzo6VmFyeWluZygpIDogaW50ZXJwb2xhdGlvbihJTlRFUlBPTEFUSU9O
X1NNT09USCksIGlzSW52YXJpYW50KGZhbHNlKQoreworfQogCiBWYXJ5aW5nOjp+VmFyeWluZygp
Ci17fQoreworfQogCiBWYXJ5aW5nOjpWYXJ5aW5nKGNvbnN0IFZhcnlpbmcgJm90aGVyKQotICAg
IDogU2hhZGVyVmFyaWFibGUob3RoZXIpLAotICAgICAgaW50ZXJwb2xhdGlvbihvdGhlci5pbnRl
cnBvbGF0aW9uKSwKLSAgICAgIGlzSW52YXJpYW50KG90aGVyLmlzSW52YXJpYW50KQote30KKyAg
ICA6IFNoYWRlclZhcmlhYmxlKG90aGVyKSwgaW50ZXJwb2xhdGlvbihvdGhlci5pbnRlcnBvbGF0
aW9uKSwgaXNJbnZhcmlhbnQob3RoZXIuaXNJbnZhcmlhbnQpCit7Cit9CiAKIFZhcnlpbmcgJlZh
cnlpbmc6Om9wZXJhdG9yPShjb25zdCBWYXJ5aW5nICZvdGhlcikKIHsKICAgICBTaGFkZXJWYXJp
YWJsZTo6b3BlcmF0b3I9KG90aGVyKTsKLSAgICBpbnRlcnBvbGF0aW9uID0gb3RoZXIuaW50ZXJw
b2xhdGlvbjsKLSAgICBpc0ludmFyaWFudCA9IG90aGVyLmlzSW52YXJpYW50OworICAgIGludGVy
cG9sYXRpb24gICAgICAgICAgID0gb3RoZXIuaW50ZXJwb2xhdGlvbjsKKyAgICBpc0ludmFyaWFu
dCAgICAgICAgICAgICA9IG90aGVyLmlzSW52YXJpYW50OwogICAgIHJldHVybiAqdGhpczsKIH0K
IAogYm9vbCBWYXJ5aW5nOjpvcGVyYXRvcj09KGNvbnN0IFZhcnlpbmcgJm90aGVyKSBjb25zdAog
ewotICAgIHJldHVybiAoU2hhZGVyVmFyaWFibGU6Om9wZXJhdG9yPT0ob3RoZXIpICYmCi0gICAg
ICAgICAgICBpbnRlcnBvbGF0aW9uID09IG90aGVyLmludGVycG9sYXRpb24gJiYKKyAgICByZXR1
cm4gKFNoYWRlclZhcmlhYmxlOjpvcGVyYXRvcj09KG90aGVyKSAmJiBpbnRlcnBvbGF0aW9uID09
IG90aGVyLmludGVycG9sYXRpb24gJiYKICAgICAgICAgICAgIGlzSW52YXJpYW50ID09IG90aGVy
LmlzSW52YXJpYW50KTsKIH0KIApAQCAtMzYwLDE0ICszNjEsMTMgQEAgYm9vbCBWYXJ5aW5nOjpp
c1NhbWVWYXJ5aW5nQXRMaW5rVGltZShjb25zdCBWYXJ5aW5nICZvdGhlciwgaW50IHNoYWRlclZl
cnNpb24pIGMKIH0KIAogSW50ZXJmYWNlQmxvY2s6OkludGVyZmFjZUJsb2NrKCkKLSAgICA6IGFy
cmF5U2l6ZSgwKSwKLSAgICAgIGxheW91dChCTE9DS0xBWU9VVF9QQUNLRUQpLAotICAgICAgaXNS
b3dNYWpvckxheW91dChmYWxzZSksCi0gICAgICBzdGF0aWNVc2UoZmFsc2UpCi17fQorICAgIDog
YXJyYXlTaXplKDApLCBsYXlvdXQoQkxPQ0tMQVlPVVRfUEFDS0VEKSwgaXNSb3dNYWpvckxheW91
dChmYWxzZSksIHN0YXRpY1VzZShmYWxzZSkKK3sKK30KIAogSW50ZXJmYWNlQmxvY2s6On5JbnRl
cmZhY2VCbG9jaygpCi17fQoreworfQogCiBJbnRlcmZhY2VCbG9jazo6SW50ZXJmYWNlQmxvY2so
Y29uc3QgSW50ZXJmYWNlQmxvY2sgJm90aGVyKQogICAgIDogbmFtZShvdGhlci5uYW1lKSwKQEAg
LTM3OCwxOCArMzc4LDE5IEBAIEludGVyZmFjZUJsb2NrOjpJbnRlcmZhY2VCbG9jayhjb25zdCBJ
bnRlcmZhY2VCbG9jayAmb3RoZXIpCiAgICAgICBpc1Jvd01ham9yTGF5b3V0KG90aGVyLmlzUm93
TWFqb3JMYXlvdXQpLAogICAgICAgc3RhdGljVXNlKG90aGVyLnN0YXRpY1VzZSksCiAgICAgICBm
aWVsZHMob3RoZXIuZmllbGRzKQote30KK3sKK30KIAogSW50ZXJmYWNlQmxvY2sgJkludGVyZmFj
ZUJsb2NrOjpvcGVyYXRvcj0oY29uc3QgSW50ZXJmYWNlQmxvY2sgJm90aGVyKQogewotICAgIG5h
bWUgPSBvdGhlci5uYW1lOwotICAgIG1hcHBlZE5hbWUgPSBvdGhlci5tYXBwZWROYW1lOwotICAg
IGluc3RhbmNlTmFtZSA9IG90aGVyLmluc3RhbmNlTmFtZTsKLSAgICBhcnJheVNpemUgPSBvdGhl
ci5hcnJheVNpemU7Ci0gICAgbGF5b3V0ID0gb3RoZXIubGF5b3V0OworICAgIG5hbWUgICAgICAg
ICAgICAgPSBvdGhlci5uYW1lOworICAgIG1hcHBlZE5hbWUgICAgICAgPSBvdGhlci5tYXBwZWRO
YW1lOworICAgIGluc3RhbmNlTmFtZSAgICAgPSBvdGhlci5pbnN0YW5jZU5hbWU7CisgICAgYXJy
YXlTaXplICAgICAgICA9IG90aGVyLmFycmF5U2l6ZTsKKyAgICBsYXlvdXQgICAgICAgICAgID0g
b3RoZXIubGF5b3V0OwogICAgIGlzUm93TWFqb3JMYXlvdXQgPSBvdGhlci5pc1Jvd01ham9yTGF5
b3V0OwotICAgIHN0YXRpY1VzZSA9IG90aGVyLnN0YXRpY1VzZTsKLSAgICBmaWVsZHMgPSBvdGhl
ci5maWVsZHM7CisgICAgc3RhdGljVXNlICAgICAgICA9IG90aGVyLnN0YXRpY1VzZTsKKyAgICBm
aWVsZHMgICAgICAgICAgID0gb3RoZXIuZmllbGRzOwogICAgIHJldHVybiAqdGhpczsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvU2ltcGxpZnlMb29wQ29uZGl0aW9ucy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaW1wbGlmeUxvb3BDb25kaXRpb25zLmNwcAppbmRleCBi
OGNjOTc2ZWE4NmY3YTljNjYyOGY2NDBhZThlMThmMjQ5ZjdlNDliLi5hMmVkN2YzODQ2YjFmOGM5
NmIxNzlkNTBkMDNiNzY5NmJhYWY1YzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaW1wbGlmeUxvb3BDb25kaXRpb25zLmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaW1w
bGlmeUxvb3BDb25kaXRpb25zLmNwcApAQCAtMTMsNiArMTMsOSBAQAogI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBuYW1l
c3BhY2UKIHsKIApAQCAtMzcsNiArNDAsNyBAQCBjbGFzcyBTaW1wbGlmeUxvb3BDb25kaXRpb25z
VHJhdmVyc2VyIDogcHVibGljIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcgogICAgIGJvb2wgdmlz
aXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpIG92ZXJyaWRlOwogICAg
IGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUp
IG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRUZXJuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVGVy
bmFyeSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdERlY2xhcmF0aW9uKFZpc2l0IHZp
c2l0LCBUSW50ZXJtRGVjbGFyYXRpb24gKm5vZGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBuZXh0
SXRlcmF0aW9uKCk7CiAgICAgYm9vbCBmb3VuZExvb3BUb0NoYW5nZSgpIGNvbnN0IHsgcmV0dXJu
IG1Gb3VuZExvb3BUb0NoYW5nZTsgfQpAQCAtNDUsNyArNDksNyBAQCBjbGFzcyBTaW1wbGlmeUxv
b3BDb25kaXRpb25zVHJhdmVyc2VyIDogcHVibGljIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcgog
ICAgIC8vIE1hcmtlZCB0byB0cnVlIG9uY2UgYW4gb3BlcmF0aW9uIHRoYXQgbmVlZHMgdG8gYmUg
aG9pc3RlZCBvdXQgb2YgdGhlIGV4cHJlc3Npb24gaGFzIGJlZW4KICAgICAvLyBmb3VuZC4gQWZ0
ZXIgdGhhdCwgbm8gbW9yZSBBU1QgdXBkYXRlcyBhcmUgcGVyZm9ybWVkIG9uIHRoYXQgdHJhdmVy
c2FsLgogICAgIGJvb2wgbUZvdW5kTG9vcFRvQ2hhbmdlOwotICAgIGJvb2wgbUluc2lkZUxvb3BD
b25kaXRpb25PckV4cHJlc3Npb247CisgICAgYm9vbCBtSW5zaWRlTG9vcEluaXRDb25kaXRpb25P
ckV4cHJlc3Npb247CiAgICAgSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyIG1Db25kaXRpb25zVG9T
aW1wbGlmeTsKIH07CiAKQEAgLTU1LDMyICs1OSwzMyBAQCBTaW1wbGlmeUxvb3BDb25kaXRpb25z
VHJhdmVyc2VyOjpTaW1wbGlmeUxvb3BDb25kaXRpb25zVHJhdmVyc2VyKAogICAgIGludCBzaGFk
ZXJWZXJzaW9uKQogICAgIDogVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBm
YWxzZSwgc3ltYm9sVGFibGUsIHNoYWRlclZlcnNpb24pLAogICAgICAgbUZvdW5kTG9vcFRvQ2hh
bmdlKGZhbHNlKSwKLSAgICAgIG1JbnNpZGVMb29wQ29uZGl0aW9uT3JFeHByZXNzaW9uKGZhbHNl
KSwKKyAgICAgIG1JbnNpZGVMb29wSW5pdENvbmRpdGlvbk9yRXhwcmVzc2lvbihmYWxzZSksCiAg
ICAgICBtQ29uZGl0aW9uc1RvU2ltcGxpZnkoY29uZGl0aW9uc1RvU2ltcGxpZnlNYXNrKQogewog
fQogCiB2b2lkIFNpbXBsaWZ5TG9vcENvbmRpdGlvbnNUcmF2ZXJzZXI6Om5leHRJdGVyYXRpb24o
KQogewotICAgIG1Gb3VuZExvb3BUb0NoYW5nZSAgICAgICAgICAgICAgID0gZmFsc2U7Ci0gICAg
bUluc2lkZUxvb3BDb25kaXRpb25PckV4cHJlc3Npb24gPSBmYWxzZTsKKyAgICBtRm91bmRMb29w
VG9DaGFuZ2UgICAgICAgICAgICAgICAgICAgPSBmYWxzZTsKKyAgICBtSW5zaWRlTG9vcEluaXRD
b25kaXRpb25PckV4cHJlc3Npb24gPSBmYWxzZTsKICAgICBuZXh0VGVtcG9yYXJ5SW5kZXgoKTsK
IH0KIAorLy8gVGhlIHZpc2l0IGZ1bmN0aW9ucyBvcGVyYXRlIGluIHRocmVlIG1vZGVzOgorLy8g
MS4gSWYgYSBtYXRjaGluZyBleHByZXNzaW9uIGhhcyBhbHJlYWR5IGJlZW4gZm91bmQsIHdlIHJl
dHVybiBlYXJseSBzaW5jZSBvbmx5IG9uZSBsb29wIGNhbgorLy8gICAgYmUgdHJhbnNmb3JtZWQg
b24gb25lIHRyYXZlcnNhbC4KKy8vIDIuIFdlIHRyeSB0byBmaW5kIGxvb3BzLiBJbiBjYXNlIGEg
bm9kZSBpcyBub3QgaW5zaWRlIGEgbG9vcCBhbmQgY2FuIG5vdCBjb250YWluIGxvb3BzLCB3ZQor
Ly8gICAgc3RvcCB0cmF2ZXJzaW5nIHRoZSBzdWJ0cmVlLgorLy8gMy4gSWYgd2UncmUgaW5zaWRl
IGEgbG9vcCBpbml0aWFsaXphdGlvbiwgY29uZGl0aW9uIG9yIGV4cHJlc3Npb24sIHdlIGNoZWNr
IGZvciBleHByZXNzaW9ucworLy8gICAgdGhhdCBzaG91bGQgYmUgbW92ZWQgb3V0IG9mIHRoZSBs
b29wIGNvbmRpdGlvbiBvciBleHByZXNzaW9uLiBJZiBvbmUgaXMgZm91bmQsIHRoZSBsb29wCisv
LyAgICBpcyBwcm9jZXNzZWQuCiBib29sIFNpbXBsaWZ5TG9vcENvbmRpdGlvbnNUcmF2ZXJzZXI6
OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2RlKQogewotICAgIC8v
IFRoZSB2aXNpdCBmdW5jdGlvbnMgb3BlcmF0ZSBpbiB0aHJlZSBtb2RlczoKLSAgICAvLyAxLiBJ
ZiBhIG1hdGNoaW5nIGV4cHJlc3Npb24gaGFzIGFscmVhZHkgYmVlbiBmb3VuZCwgd2UgcmV0dXJu
IGVhcmx5IHNpbmNlIG9ubHkgb25lIGxvb3AgY2FuCi0gICAgLy8gICAgYmUgdHJhbnNmb3JtZWQg
b24gb25lIHRyYXZlcnNhbC4KLSAgICAvLyAyLiBXZSB0cnkgdG8gZmluZCBsb29wcy4gSW4gY2Fz
ZSBhIG5vZGUgaXMgbm90IGluc2lkZSBhIGxvb3AgYW5kIGNhbiBub3QgY29udGFpbiBsb29wcywg
d2UKLSAgICAvLyAgICBzdG9wIHRyYXZlcnNpbmcgdGhlIHN1YnRyZWUuCi0gICAgLy8gMy4gSWYg
d2UncmUgaW5zaWRlIGEgbG9vcCBjb25kaXRpb24gb3IgZXhwcmVzc2lvbiwgd2UgY2hlY2sgZm9y
IGV4cHJlc3Npb25zIHRoYXQgc2hvdWxkIGJlCi0gICAgLy8gICAgbW92ZWQgb3V0IG9mIHRoZSBs
b29wIGNvbmRpdGlvbiBvciBleHByZXNzaW9uLiBJZiBvbmUgaXMgZm91bmQsIHRoZSBsb29wIGlz
IHByb2Nlc3NlZC4KIAogICAgIGlmIChtRm91bmRMb29wVG9DaGFuZ2UpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmICghbUluc2lkZUxvb3BDb25kaXRpb25PckV4cHJlc3Npb24pCisg
ICAgaWYgKCFtSW5zaWRlTG9vcEluaXRDb25kaXRpb25PckV4cHJlc3Npb24pCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIG1Gb3VuZExvb3BUb0NoYW5nZSA9IG1Db25kaXRpb25zVG9TaW1w
bGlmeS5tYXRjaChub2RlLCBnZXRQYXJlbnROb2RlKCksIGlzTFZhbHVlUmVxdWlyZWRIZXJlKCkp
OwpAQCAtOTIsOCArOTcsNyBAQCBib29sIFNpbXBsaWZ5TG9vcENvbmRpdGlvbnNUcmF2ZXJzZXI6
OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYQogICAgIGlmIChtRm91
bmRMb29wVG9DaGFuZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vIElmIHdlJ3Jl
IG91dHNpZGUgYSBsb29wIGNvbmRpdGlvbiwgd2Ugb25seSBuZWVkIHRvIHRyYXZlcnNlIG5vZGVz
IHRoYXQgbWF5IGNvbnRhaW4gbG9vcHMuCi0gICAgaWYgKCFtSW5zaWRlTG9vcENvbmRpdGlvbk9y
RXhwcmVzc2lvbikKKyAgICBpZiAoIW1JbnNpZGVMb29wSW5pdENvbmRpdGlvbk9yRXhwcmVzc2lv
bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbUZvdW5kTG9vcFRvQ2hhbmdlID0gbUNv
bmRpdGlvbnNUb1NpbXBsaWZ5Lm1hdGNoKG5vZGUsIGdldFBhcmVudE5vZGUoKSk7CkBAIC0xMDUs
OCArMTA5LDE5IEBAIGJvb2wgU2ltcGxpZnlMb29wQ29uZGl0aW9uc1RyYXZlcnNlcjo6dmlzaXRU
ZXJuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVGVybmFyeSAqCiAgICAgaWYgKG1Gb3VuZExvb3BU
b0NoYW5nZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gRG9uJ3QgdHJhdmVyc2Ug
dGVybmFyeSBvcGVyYXRvcnMgb3V0c2lkZSBsb29wIGNvbmRpdGlvbnMuCi0gICAgaWYgKCFtSW5z
aWRlTG9vcENvbmRpdGlvbk9yRXhwcmVzc2lvbikKKyAgICBpZiAoIW1JbnNpZGVMb29wSW5pdENv
bmRpdGlvbk9yRXhwcmVzc2lvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbUZvdW5k
TG9vcFRvQ2hhbmdlID0gbUNvbmRpdGlvbnNUb1NpbXBsaWZ5Lm1hdGNoKG5vZGUpOworICAgIHJl
dHVybiAhbUZvdW5kTG9vcFRvQ2hhbmdlOworfQorCitib29sIFNpbXBsaWZ5TG9vcENvbmRpdGlv
bnNUcmF2ZXJzZXI6OnZpc2l0RGVjbGFyYXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1EZWNsYXJh
dGlvbiAqbm9kZSkKK3sKKyAgICBpZiAobUZvdW5kTG9vcFRvQ2hhbmdlKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoIW1JbnNpZGVMb29wSW5pdENvbmRpdGlvbk9yRXhwcmVzc2lv
bikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbUZvdW5kTG9vcFRvQ2hhbmdlID0gbUNv
bmRpdGlvbnNUb1NpbXBsaWZ5Lm1hdGNoKG5vZGUpOwpAQCAtMTIwLDE0MiArMTM1LDE1MSBAQCB2
b2lkIFNpbXBsaWZ5TG9vcENvbmRpdGlvbnNUcmF2ZXJzZXI6OnRyYXZlcnNlTG9vcChUSW50ZXJt
TG9vcCAqbm9kZSkKIAogICAgIC8vIE1hcmsgdGhhdCB3ZSdyZSBpbnNpZGUgYSBsb29wIGNvbmRp
dGlvbiBvciBleHByZXNzaW9uLCBhbmQgdHJhbnNmb3JtIHRoZSBsb29wIGlmIG5lZWRlZC4KIAot
ICAgIGluY3JlbWVudERlcHRoKG5vZGUpOworICAgIFNjb3BlZE5vZGVJblRyYXZlcnNhbFBhdGgg
YWRkVG9QYXRoKHRoaXMsIG5vZGUpOwogCi0gICAgLy8gTm90ZTogTm8gbmVlZCB0byB0cmF2ZXJz
ZSB0aGUgbG9vcCBpbml0IG5vZGUuCisgICAgbUluc2lkZUxvb3BJbml0Q29uZGl0aW9uT3JFeHBy
ZXNzaW9uID0gdHJ1ZTsKKyAgICBUTG9vcFR5cGUgbG9vcFR5cGUgICAgICAgICAgICAgICAgICAg
PSBub2RlLT5nZXRUeXBlKCk7CiAKLSAgICBtSW5zaWRlTG9vcENvbmRpdGlvbk9yRXhwcmVzc2lv
biA9IHRydWU7Ci0gICAgVExvb3BUeXBlIGxvb3BUeXBlICAgICAgICAgICAgICAgPSBub2RlLT5n
ZXRUeXBlKCk7CisgICAgaWYgKCFtRm91bmRMb29wVG9DaGFuZ2UgJiYgbm9kZS0+Z2V0SW5pdCgp
KQorICAgIHsKKyAgICAgICAgbm9kZS0+Z2V0SW5pdCgpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICB9
CiAKLSAgICBpZiAobm9kZS0+Z2V0Q29uZGl0aW9uKCkpCisgICAgaWYgKCFtRm91bmRMb29wVG9D
aGFuZ2UgJiYgbm9kZS0+Z2V0Q29uZGl0aW9uKCkpCiAgICAgewogICAgICAgICBub2RlLT5nZXRD
b25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7CisgICAgfQogCi0gICAgICAgIGlmIChtRm91bmRM
b29wVG9DaGFuZ2UpCisgICAgaWYgKCFtRm91bmRMb29wVG9DaGFuZ2UgJiYgbm9kZS0+Z2V0RXhw
cmVzc2lvbigpKQorICAgIHsKKyAgICAgICAgbm9kZS0+Z2V0RXhwcmVzc2lvbigpLT50cmF2ZXJz
ZSh0aGlzKTsKKyAgICB9CisKKyAgICBpZiAobUZvdW5kTG9vcFRvQ2hhbmdlKQorICAgIHsKKyAg
ICAgICAgLy8gUmVwbGFjZSB0aGUgbG9vcCBjb25kaXRpb24gd2l0aCBhIGJvb2xlYW4gdmFyaWFi
bGUgdGhhdCdzIHVwZGF0ZWQgb24gZWFjaCBpdGVyYXRpb24uCisgICAgICAgIGlmIChsb29wVHlw
ZSA9PSBFTG9vcFdoaWxlKQogICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBs
b29wIGNvbmRpdGlvbiB3aXRoIGEgYm9vbGVhbiB2YXJpYWJsZSB0aGF0J3MgdXBkYXRlZCBvbiBl
YWNoIGl0ZXJhdGlvbi4KLSAgICAgICAgICAgIGlmIChsb29wVHlwZSA9PSBFTG9vcFdoaWxlKQor
ICAgICAgICAgICAgLy8gVHJhbnNmb3JtOgorICAgICAgICAgICAgLy8gICB3aGlsZSAoZXhwcikg
eyBib2R5OyB9CisgICAgICAgICAgICAvLyBpbnRvCisgICAgICAgICAgICAvLyAgIGJvb2wgczAg
PSBleHByOworICAgICAgICAgICAgLy8gICB3aGlsZSAoczApIHsgeyBib2R5OyB9IHMwID0gZXhw
cjsgfQorICAgICAgICAgICAgVEludGVybVNlcXVlbmNlIHRlbXBJbml0U2VxOworICAgICAgICAg
ICAgdGVtcEluaXRTZXEucHVzaF9iYWNrKGNyZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24obm9kZS0+
Z2V0Q29uZGl0aW9uKCktPmRlZXBDb3B5KCkpKTsKKyAgICAgICAgICAgIGluc2VydFN0YXRlbWVu
dHNJblBhcmVudEJsb2NrKHRlbXBJbml0U2VxKTsKKworICAgICAgICAgICAgVEludGVybUJsb2Nr
ICpuZXdCb2R5ID0gbmV3IFRJbnRlcm1CbG9jaygpOworICAgICAgICAgICAgaWYgKG5vZGUtPmdl
dEJvZHkoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBUcmFuc2Zvcm06Ci0g
ICAgICAgICAgICAgICAgLy8gICB3aGlsZSAoZXhwcikgeyBib2R5OyB9Ci0gICAgICAgICAgICAg
ICAgLy8gaW50bwotICAgICAgICAgICAgICAgIC8vICAgYm9vbCBzMCA9IGV4cHI7Ci0gICAgICAg
ICAgICAgICAgLy8gICB3aGlsZSAoczApIHsgeyBib2R5OyB9IHMwID0gZXhwcjsgfQotICAgICAg
ICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSB0ZW1wSW5pdFNlcTsKLSAgICAgICAgICAgICAgICB0
ZW1wSW5pdFNlcS5wdXNoX2JhY2soY3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihub2RlLT5nZXRD
b25kaXRpb24oKS0+ZGVlcENvcHkoKSkpOwotICAgICAgICAgICAgICAgIGluc2VydFN0YXRlbWVu
dHNJblBhcmVudEJsb2NrKHRlbXBJbml0U2VxKTsKLQotICAgICAgICAgICAgICAgIFRJbnRlcm1C
bG9jayAqbmV3Qm9keSA9IG5ldyBUSW50ZXJtQmxvY2soKTsKLSAgICAgICAgICAgICAgICBpZiAo
bm9kZS0+Z2V0Qm9keSgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
bmV3Qm9keS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKG5vZGUtPmdldEJvZHkoKSk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5ld0JvZHktPmdldFNlcXVlbmNlKCktPnB1
c2hfYmFjaygKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlVGVtcEFzc2lnbm1lbnQobm9kZS0+
Z2V0Q29uZGl0aW9uKCktPmRlZXBDb3B5KCkpKTsKKyAgICAgICAgICAgICAgICBuZXdCb2R5LT5n
ZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sobm9kZS0+Z2V0Qm9keSgpKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIG5ld0JvZHktPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjaygKKyAgICAgICAg
ICAgICAgICBjcmVhdGVUZW1wQXNzaWdubWVudChub2RlLT5nZXRDb25kaXRpb24oKS0+ZGVlcENv
cHkoKSkpOworCisgICAgICAgICAgICAvLyBDYW4ndCB1c2UgcXVldWVSZXBsYWNlbWVudCB0byBy
ZXBsYWNlIG9sZCBib2R5LCBzaW5jZSBpdCBtYXkgaGF2ZSBiZWVuIG51bGxwdHIuCisgICAgICAg
ICAgICAvLyBJdCdzIHNhZmUgdG8gZG8gdGhlIHJlcGxhY2VtZW50cyBpbiBwbGFjZSBoZXJlIC0g
dGhpcyBub2RlIHdvbid0IGJlIHRyYXZlcnNlZAorICAgICAgICAgICAgLy8gZnVydGhlci4KKyAg
ICAgICAgICAgIG5vZGUtPnNldEJvZHkobmV3Qm9keSk7CisgICAgICAgICAgICBub2RlLT5zZXRD
b25kaXRpb24oY3JlYXRlVGVtcFN5bWJvbChub2RlLT5nZXRDb25kaXRpb24oKS0+Z2V0VHlwZSgp
KSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobG9vcFR5cGUgPT0gRUxvb3BEb1doaWxl
KQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUcmFuc2Zvcm06CisgICAgICAgICAgICAvLyAg
IGRvIHsKKyAgICAgICAgICAgIC8vICAgICBib2R5OworICAgICAgICAgICAgLy8gICB9IHdoaWxl
IChleHByKTsKKyAgICAgICAgICAgIC8vIGludG8KKyAgICAgICAgICAgIC8vICAgYm9vbCBzMCA9
IHRydWU7CisgICAgICAgICAgICAvLyAgIGRvIHsKKyAgICAgICAgICAgIC8vICAgICB7IGJvZHk7
IH0KKyAgICAgICAgICAgIC8vICAgICBzMCA9IGV4cHI7CisgICAgICAgICAgICAvLyAgIH0gd2hp
bGUgKHMwKTsKKyAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSB0ZW1wSW5pdFNlcTsKKyAgICAg
ICAgICAgIHRlbXBJbml0U2VxLnB1c2hfYmFjayhjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKENy
ZWF0ZUJvb2xDb25zdGFudE5vZGUodHJ1ZSkpKTsKKyAgICAgICAgICAgIGluc2VydFN0YXRlbWVu
dHNJblBhcmVudEJsb2NrKHRlbXBJbml0U2VxKTsKKworICAgICAgICAgICAgVEludGVybUJsb2Nr
ICpuZXdCb2R5ID0gbmV3IFRJbnRlcm1CbG9jaygpOworICAgICAgICAgICAgaWYgKG5vZGUtPmdl
dEJvZHkoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBuZXdCb2R5LT5nZXRTZXF1
ZW5jZSgpLT5wdXNoX2JhY2sobm9kZS0+Z2V0Qm9keSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIG5ld0JvZHktPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjaygKKyAgICAgICAgICAgICAg
ICBjcmVhdGVUZW1wQXNzaWdubWVudChub2RlLT5nZXRDb25kaXRpb24oKS0+ZGVlcENvcHkoKSkp
OworCisgICAgICAgICAgICAvLyBDYW4ndCB1c2UgcXVldWVSZXBsYWNlbWVudCB0byByZXBsYWNl
IG9sZCBib2R5LCBzaW5jZSBpdCBtYXkgaGF2ZSBiZWVuIG51bGxwdHIuCisgICAgICAgICAgICAv
LyBJdCdzIHNhZmUgdG8gZG8gdGhlIHJlcGxhY2VtZW50cyBpbiBwbGFjZSBoZXJlIC0gdGhpcyBu
b2RlIHdvbid0IGJlIHRyYXZlcnNlZAorICAgICAgICAgICAgLy8gZnVydGhlci4KKyAgICAgICAg
ICAgIG5vZGUtPnNldEJvZHkobmV3Qm9keSk7CisgICAgICAgICAgICBub2RlLT5zZXRDb25kaXRp
b24oY3JlYXRlVGVtcFN5bWJvbChub2RlLT5nZXRDb25kaXRpb24oKS0+Z2V0VHlwZSgpKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobG9vcFR5cGUgPT0gRUxvb3BGb3IpCisgICAgICAg
IHsKKyAgICAgICAgICAgIC8vIE1vdmUgdGhlIGxvb3AgY29uZGl0aW9uIGluc2lkZSB0aGUgbG9v
cC4KKyAgICAgICAgICAgIC8vIFRyYW5zZm9ybToKKyAgICAgICAgICAgIC8vICAgZm9yIChpbml0
OyBleHByOyBleHByQikgeyBib2R5OyB9CisgICAgICAgICAgICAvLyBpbnRvCisgICAgICAgICAg
ICAvLyAgIHsKKyAgICAgICAgICAgIC8vICAgICBpbml0OworICAgICAgICAgICAgLy8gICAgIGJv
b2wgczAgPSBleHByOworICAgICAgICAgICAgLy8gICAgIHdoaWxlIChzMCkgeworICAgICAgICAg
ICAgLy8gICAgICAgeyBib2R5OyB9CisgICAgICAgICAgICAvLyAgICAgICBleHByQjsKKyAgICAg
ICAgICAgIC8vICAgICAgIHMwID0gZXhwcjsKKyAgICAgICAgICAgIC8vICAgICB9CisgICAgICAg
ICAgICAvLyAgIH0KKyAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqbG9vcFNjb3BlICAgICAgICAg
ICAgPSBuZXcgVEludGVybUJsb2NrKCk7CisgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKmxv
b3BTY29wZVNlcXVlbmNlID0gbG9vcFNjb3BlLT5nZXRTZXF1ZW5jZSgpOworCisgICAgICAgICAg
ICAvLyBJbnNlcnQgImluaXQ7IgorICAgICAgICAgICAgaWYgKG5vZGUtPmdldEluaXQoKSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsb29wU2NvcGVTZXF1ZW5jZS0+cHVzaF9iYWNr
KG5vZGUtPmdldEluaXQoKSk7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAvLyBD
YW4ndCB1c2UgcXVldWVSZXBsYWNlbWVudCB0byByZXBsYWNlIG9sZCBib2R5LCBzaW5jZSBpdCBt
YXkgaGF2ZSBiZWVuIG51bGxwdHIuCi0gICAgICAgICAgICAgICAgLy8gSXQncyBzYWZlIHRvIGRv
IHRoZSByZXBsYWNlbWVudHMgaW4gcGxhY2UgaGVyZSAtIHRoaXMgbm9kZSB3b24ndCBiZSB0cmF2
ZXJzZWQKLSAgICAgICAgICAgICAgICAvLyBmdXJ0aGVyLgotICAgICAgICAgICAgICAgIG5vZGUt
PnNldEJvZHkobmV3Qm9keSk7Ci0gICAgICAgICAgICAgICAgbm9kZS0+c2V0Q29uZGl0aW9uKGNy
ZWF0ZVRlbXBTeW1ib2wobm9kZS0+Z2V0Q29uZGl0aW9uKCktPmdldFR5cGUoKSkpOworICAgICAg
ICAgICAgLy8gSW5zZXJ0ICJib29sIHMwID0gZXhwcjsiIGlmIGFwcGxpY2FibGUsICJib29sIHMw
ID0gdHJ1ZTsiIG90aGVyd2lzZQorICAgICAgICAgICAgVEludGVybVR5cGVkICpjb25kaXRpb25J
bml0aWFsaXplciA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAobm9kZS0+Z2V0Q29uZGl0aW9u
KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uZGl0aW9uSW5pdGlhbGl6ZXIg
PSBub2RlLT5nZXRDb25kaXRpb24oKS0+ZGVlcENvcHkoKTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGVsc2UgaWYgKGxvb3BUeXBlID09IEVMb29wRG9XaGlsZSkKKyAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBUcmFuc2Zvcm06Ci0gICAgICAg
ICAgICAgICAgLy8gICBkbyB7Ci0gICAgICAgICAgICAgICAgLy8gICAgIGJvZHk7Ci0gICAgICAg
ICAgICAgICAgLy8gICB9IHdoaWxlIChleHByKTsKLSAgICAgICAgICAgICAgICAvLyBpbnRvCi0g
ICAgICAgICAgICAgICAgLy8gICBib29sIHMwID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAvLyAg
IGRvIHsKLSAgICAgICAgICAgICAgICAvLyAgICAgeyBib2R5OyB9Ci0gICAgICAgICAgICAgICAg
Ly8gICAgIHMwID0gZXhwcjsKLSAgICAgICAgICAgICAgICAvLyAgIHdoaWxlIChzMCk7Ci0gICAg
ICAgICAgICAgICAgVEludGVybVNlcXVlbmNlIHRlbXBJbml0U2VxOwotICAgICAgICAgICAgICAg
IHRlbXBJbml0U2VxLnB1c2hfYmFjayhjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKENyZWF0ZUJv
b2xDb25zdGFudE5vZGUodHJ1ZSkpKTsKLSAgICAgICAgICAgICAgICBpbnNlcnRTdGF0ZW1lbnRz
SW5QYXJlbnRCbG9jayh0ZW1wSW5pdFNlcSk7Ci0KLSAgICAgICAgICAgICAgICBUSW50ZXJtQmxv
Y2sgKm5ld0JvZHkgPSBuZXcgVEludGVybUJsb2NrKCk7Ci0gICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmdldEJvZHkoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG5l
d0JvZHktPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhub2RlLT5nZXRCb2R5KCkpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuZXdCb2R5LT5nZXRTZXF1ZW5jZSgpLT5wdXNo
X2JhY2soCi0gICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRlbXBBc3NpZ25tZW50KG5vZGUtPmdl
dENvbmRpdGlvbigpLT5kZWVwQ29weSgpKSk7CisgICAgICAgICAgICAgICAgY29uZGl0aW9uSW5p
dGlhbGl6ZXIgPSBUSW50ZXJtVHlwZWQ6OkNyZWF0ZUJvb2wodHJ1ZSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBsb29wU2NvcGVTZXF1ZW5jZS0+cHVzaF9iYWNrKGNyZWF0ZVRlbXBJbml0
RGVjbGFyYXRpb24oY29uZGl0aW9uSW5pdGlhbGl6ZXIpKTsKIAotICAgICAgICAgICAgICAgIC8v
IENhbid0IHVzZSBxdWV1ZVJlcGxhY2VtZW50IHRvIHJlcGxhY2Ugb2xkIGJvZHksIHNpbmNlIGl0
IG1heSBoYXZlIGJlZW4gbnVsbHB0ci4KLSAgICAgICAgICAgICAgICAvLyBJdCdzIHNhZmUgdG8g
ZG8gdGhlIHJlcGxhY2VtZW50cyBpbiBwbGFjZSBoZXJlIC0gdGhpcyBub2RlIHdvbid0IGJlIHRy
YXZlcnNlZAotICAgICAgICAgICAgICAgIC8vIGZ1cnRoZXIuCi0gICAgICAgICAgICAgICAgbm9k
ZS0+c2V0Qm9keShuZXdCb2R5KTsKLSAgICAgICAgICAgICAgICBub2RlLT5zZXRDb25kaXRpb24o
Y3JlYXRlVGVtcFN5bWJvbChub2RlLT5nZXRDb25kaXRpb24oKS0+Z2V0VHlwZSgpKSk7CisgICAg
ICAgICAgICAvLyBJbnNlcnQgInsgYm9keTsgfSIgaW4gdGhlIHdoaWxlIGxvb3AKKyAgICAgICAg
ICAgIFRJbnRlcm1CbG9jayAqd2hpbGVMb29wQm9keSA9IG5ldyBUSW50ZXJtQmxvY2soKTsKKyAg
ICAgICAgICAgIGlmIChub2RlLT5nZXRCb2R5KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgd2hpbGVMb29wQm9keS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKG5vZGUtPmdldEJv
ZHkoKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChsb29wVHlwZSA9PSBF
TG9vcEZvcikKKyAgICAgICAgICAgIC8vIEluc2VydCAiZXhwckI7IiBpbiB0aGUgd2hpbGUgbG9v
cAorICAgICAgICAgICAgaWYgKG5vZGUtPmdldEV4cHJlc3Npb24oKSkKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAvLyBNb3ZlIHRoZSBsb29wIGNvbmRpdGlvbiBpbnNpZGUgdGhlIGxv
b3AuCi0gICAgICAgICAgICAgICAgLy8gVHJhbnNmb3JtOgotICAgICAgICAgICAgICAgIC8vICAg
Zm9yIChpbml0OyBleHByOyBleHByQikgeyBib2R5OyB9Ci0gICAgICAgICAgICAgICAgLy8gaW50
bwotICAgICAgICAgICAgICAgIC8vICAgewotICAgICAgICAgICAgICAgIC8vICAgICBpbml0Owot
ICAgICAgICAgICAgICAgIC8vICAgICBib29sIHMwID0gZXhwcjsKLSAgICAgICAgICAgICAgICAv
LyAgICAgd2hpbGUgKHMwKSB7IHsgYm9keTsgfSBleHByQjsgczAgPSBleHByOyB9Ci0gICAgICAg
ICAgICAgICAgLy8gICB9Ci0gICAgICAgICAgICAgICAgVEludGVybUJsb2NrICpsb29wU2NvcGUg
PSBuZXcgVEludGVybUJsb2NrKCk7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldEluaXQo
KSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGxvb3BTY29wZS0+Z2V0
U2VxdWVuY2UoKS0+cHVzaF9iYWNrKG5vZGUtPmdldEluaXQoKSk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGxvb3BTY29wZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKAot
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKG5vZGUtPmdldENv
bmRpdGlvbigpLT5kZWVwQ29weSgpKSk7Ci0KLSAgICAgICAgICAgICAgICBUSW50ZXJtQmxvY2sg
KndoaWxlTG9vcEJvZHkgPSBuZXcgVEludGVybUJsb2NrKCk7Ci0gICAgICAgICAgICAgICAgaWYg
KG5vZGUtPmdldEJvZHkoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IHdoaWxlTG9vcEJvZHktPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhub2RlLT5nZXRCb2R5KCkp
OwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB3aGlsZUxvb3BCb2R5LT5nZXRT
ZXF1ZW5jZSgpLT5wdXNoX2JhY2sobm9kZS0+Z2V0RXhwcmVzc2lvbigpKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIC8vIEluc2VydCAiczAgPSBleHByOyIgaW4gdGhlIHdoaWxlIGxvb3AK
KyAgICAgICAgICAgIGlmIChub2RlLT5nZXRDb25kaXRpb24oKSkKKyAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICB3aGlsZUxvb3BCb2R5LT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soCiAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRlbXBBc3NpZ25tZW50KG5vZGUtPmdldENvbmRpdGlv
bigpLT5kZWVwQ29weSgpKSk7Ci0gICAgICAgICAgICAgICAgVEludGVybUxvb3AgKndoaWxlTG9v
cCA9IG5ldyBUSW50ZXJtTG9vcCgKLSAgICAgICAgICAgICAgICAgICAgRUxvb3BXaGlsZSwgbnVs
bHB0ciwgY3JlYXRlVGVtcFN5bWJvbChub2RlLT5nZXRDb25kaXRpb24oKS0+Z2V0VHlwZSgpKSwg
bnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgd2hpbGVMb29wQm9keSk7Ci0gICAgICAgICAg
ICAgICAgbG9vcFNjb3BlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sod2hpbGVMb29wKTsKLSAg
ICAgICAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50V2l0aFBhcmVudChnZXRBbmNlc3Rvck5vZGUo
MSksIG5vZGUsIGxvb3BTY29wZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOwogICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQogCi0gICAgaWYgKCFtRm91bmRMb29wVG9DaGFuZ2UgJiYgbm9kZS0+Z2V0RXhw
cmVzc2lvbigpKQotICAgIHsKLSAgICAgICAgbm9kZS0+Z2V0RXhwcmVzc2lvbigpLT50cmF2ZXJz
ZSh0aGlzKTsKLQotICAgICAgICBpZiAobUZvdW5kTG9vcFRvQ2hhbmdlKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBBU1NFUlQobG9vcFR5cGUgPT0gRUxvb3BGb3IpOwotICAgICAgICAgICAgLy8g
TW92ZSB0aGUgbG9vcCBleHByZXNzaW9uIHRvIGluc2lkZSB0aGUgbG9vcC4KLSAgICAgICAgICAg
IC8vIFRyYW5zZm9ybToKLSAgICAgICAgICAgIC8vICAgZm9yIChpbml0OyBleHByOyBleHByQikg
eyBib2R5OyB9Ci0gICAgICAgICAgICAvLyBpbnRvCi0gICAgICAgICAgICAvLyAgIGZvciAoaW5p
dDsgZXhwcjsgKSB7IHsgYm9keTsgfSBleHByQjsgfQotICAgICAgICAgICAgVEludGVybVR5cGVk
ICpsb29wRXhwcmVzc2lvbiA9IG5vZGUtPmdldEV4cHJlc3Npb24oKTsKLSAgICAgICAgICAgIG5v
ZGUtPnNldEV4cHJlc3Npb24obnVsbHB0cik7Ci0gICAgICAgICAgICBUSW50ZXJtQmxvY2sgKm9s
ZEJvZHkgPSBub2RlLT5nZXRCb2R5KCk7Ci0gICAgICAgICAgICBub2RlLT5zZXRCb2R5KG5ldyBU
SW50ZXJtQmxvY2soKSk7Ci0gICAgICAgICAgICBpZiAob2xkQm9keSAhPSBudWxscHRyKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIG5vZGUtPmdldEJvZHkoKS0+Z2V0U2VxdWVuY2Uo
KS0+cHVzaF9iYWNrKG9sZEJvZHkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbm9kZS0+
Z2V0Qm9keSgpLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sobG9vcEV4cHJlc3Npb24pOworICAg
ICAgICAgICAgLy8gQ3JlYXRlICJ3aGlsZShzMCkgeyB3aGlsZUxvb3BCb2R5IH0iCisgICAgICAg
ICAgICBUSW50ZXJtTG9vcCAqd2hpbGVMb29wID0gbmV3IFRJbnRlcm1Mb29wKAorICAgICAgICAg
ICAgICAgIEVMb29wV2hpbGUsIG51bGxwdHIsIGNyZWF0ZVRlbXBTeW1ib2woY29uZGl0aW9uSW5p
dGlhbGl6ZXItPmdldFR5cGUoKSksIG51bGxwdHIsCisgICAgICAgICAgICAgICAgd2hpbGVMb29w
Qm9keSk7CisgICAgICAgICAgICBsb29wU2NvcGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayh3
aGlsZUxvb3ApOworICAgICAgICAgICAgcXVldWVSZXBsYWNlbWVudChub2RlLCBsb29wU2NvcGUs
IE9yaWdpbmFsTm9kZTo6SVNfRFJPUFBFRCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtSW5z
aWRlTG9vcENvbmRpdGlvbk9yRXhwcmVzc2lvbiA9IGZhbHNlOworICAgIG1JbnNpZGVMb29wSW5p
dENvbmRpdGlvbk9yRXhwcmVzc2lvbiA9IGZhbHNlOwogCiAgICAgaWYgKCFtRm91bmRMb29wVG9D
aGFuZ2UgJiYgbm9kZS0+Z2V0Qm9keSgpKQogICAgICAgICBub2RlLT5nZXRCb2R5KCktPnRyYXZl
cnNlKHRoaXMpOwotCi0gICAgZGVjcmVtZW50RGVwdGgoKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNl
CkBAIC0yNzgsMyArMzAyLDUgQEAgdm9pZCBTaW1wbGlmeUxvb3BDb25kaXRpb25zKFRJbnRlcm1O
b2RlICpyb290LAogICAgICAgICAgICAgdHJhdmVyc2VyLnVwZGF0ZVRyZWUoKTsKICAgICB9IHdo
aWxlICh0cmF2ZXJzZXIuZm91bmRMb29wVG9DaGFuZ2UoKSk7CiB9CisKK30gIC8vIG5hbWVzcGFj
ZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvU2ltcGxpZnlMb29wQ29uZGl0aW9ucy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2ltcGxpZnlMb29wQ29uZGl0aW9ucy5oCmluZGV4
IGI4ODAyYWExMWFmM2NmYzAxMDU4MzEzNDQwNjZhYWUwYWQwOTBiNjQuLjk2ODA4OWQ1NDE3YWRj
ZjY5ODllODM1YzRiOTljZTQ2MDM3YWYxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NpbXBsaWZ5TG9vcENvbmRpdGlvbnMuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaW1w
bGlmeUxvb3BDb25kaXRpb25zLmgKQEAgLTExLDYgKzExLDggQEAKICNpZm5kZWYgQ09NUElMRVJf
VFJBTlNMQVRPUl9TSU1QTElGWUxPT1BDT05ESVRJT05TX0hfCiAjZGVmaW5lIENPTVBJTEVSX1RS
QU5TTEFUT1JfU0lNUExJRllMT09QQ09ORElUSU9OU19IXwogCituYW1lc3BhY2Ugc2gKK3sKIGNs
YXNzIFRJbnRlcm1Ob2RlOwogY2xhc3MgVFN5bWJvbFRhYmxlOwogCkBAIC0xOSw1ICsyMSw2IEBA
IHZvaWQgU2ltcGxpZnlMb29wQ29uZGl0aW9ucyhUSW50ZXJtTm9kZSAqcm9vdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnRlbXBvcmFyeUluZGV4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24pOworfSAgLy8gbmFt
ZXNwYWNlIHNoCiAKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9TSU1QTElGWUxPT1BD
T05ESVRJT05TX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9TcGxpdFNlcXVlbmNlT3BlcmF0b3IuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU3BsaXRTZXF1ZW5jZU9wZXJhdG9y
LmNwcAppbmRleCBlMGQyOGI5Y2Q2ZjM2Mjg1ZTdjOTZmYmI4NjhiNTI0NTEyNGQ0OTZjLi40YzYz
YjU5ZjdiNWQxMWUyNThjNTFlOTE1ZDY0Y2JhNDdjYTk4NjkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TcGxpdFNlcXVlbmNlT3Bl
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1NwbGl0U2VxdWVuY2VPcGVyYXRvci5jcHAKQEAgLTE0LDYgKzE0LDkgQEAKICNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKICNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL0ludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5oIgogCituYW1lc3BhY2Ugc2gK
K3sKKwogbmFtZXNwYWNlCiB7CiAKQEAgLTE1MSwzICsxNTQsNSBAQCB2b2lkIFNwbGl0U2VxdWVu
Y2VPcGVyYXRvcihUSW50ZXJtTm9kZSAqcm9vdCwKICAgICAgICAgICAgIHRyYXZlcnNlci51cGRh
dGVUcmVlKCk7CiAgICAgfSB3aGlsZSAodHJhdmVyc2VyLmZvdW5kRXhwcmVzc2lvblRvU3BsaXQo
KSk7CiB9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU3BsaXRTZXF1ZW5jZU9wZXJhdG9yLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TcGxpdFNl
cXVlbmNlT3BlcmF0b3IuaAppbmRleCA0YTQ2ZmUzNmMwYTlkN2EyYWI1NmJiMTg5NzIzN2NjYjQz
MTA1YTk1Li42ZGY5ZDQ1OGVjMTFhNWQ3NDU5MjA2Zjg5MjY0NzJjYjE5ZjU3ZDQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TcGxp
dFNlcXVlbmNlT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9TcGxpdFNlcXVlbmNlT3BlcmF0b3IuaApAQCAtMTIsNiArMTIsOSBA
QAogI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX1NQTElUU0VRVUVOQ0VPUEVSQVRPUl9IXwog
I2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX1NQTElUU0VRVUVOQ0VPUEVSQVRPUl9IXwogCitu
YW1lc3BhY2Ugc2gKK3sKKwogY2xhc3MgVEludGVybU5vZGU7CiBjbGFzcyBUU3ltYm9sVGFibGU7
CiAKQEAgLTIxLDQgKzI0LDYgQEAgdm9pZCBTcGxpdFNlcXVlbmNlT3BlcmF0b3IoVEludGVybU5v
ZGUgKnJvb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sVGFibGUg
JnN5bWJvbFRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNp
b24pOwogCit9ICAvLyBuYW1lc3BhY2Ugc2gKKwogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xB
VE9SX1NQTElUU0VRVUVOQ0VPUEVSQVRPUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU3RydWN0dXJlSExTTC5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TdHJ1Y3R1cmVITFNM
LmNwcAppbmRleCA5M2UwYmE1NzM3MTA3NGM1ODFiZTRkYjkxNjRhOTkzNjhjMWFhZmJmLi5mZDE0
MGFlOTc2NThhNGQxYmJjOWUwM2FjZjY5MTQzMzZhZGFiYjU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TdHJ1Y3R1cmVITFNMLmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9T
dHJ1Y3R1cmVITFNMLmNwcApAQCAtMTksMjEgKzE5LDIxIEBAIG5hbWVzcGFjZSBzaAogCiBTdGQx
NDBQYWRkaW5nSGVscGVyOjpTdGQxNDBQYWRkaW5nSGVscGVyKGNvbnN0IHN0ZDo6bWFwPFRTdHJp
bmcsIGludD4gJnN0cnVjdEVsZW1lbnRJbmRleGVzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCAqdW5pcXVlQ291bnRlcikKLSAgICA6IG1QYWRkaW5n
Q291bnRlcih1bmlxdWVDb3VudGVyKSwKLSAgICAgIG1FbGVtZW50SW5kZXgoMCksCi0gICAgICBt
U3RydWN0RWxlbWVudEluZGV4ZXMoJnN0cnVjdEVsZW1lbnRJbmRleGVzKQote30KKyAgICA6IG1Q
YWRkaW5nQ291bnRlcih1bmlxdWVDb3VudGVyKSwgbUVsZW1lbnRJbmRleCgwKSwgbVN0cnVjdEVs
ZW1lbnRJbmRleGVzKCZzdHJ1Y3RFbGVtZW50SW5kZXhlcykKK3sKK30KIAogU3RkMTQwUGFkZGlu
Z0hlbHBlcjo6U3RkMTQwUGFkZGluZ0hlbHBlcihjb25zdCBTdGQxNDBQYWRkaW5nSGVscGVyICZv
dGhlcikKICAgICA6IG1QYWRkaW5nQ291bnRlcihvdGhlci5tUGFkZGluZ0NvdW50ZXIpLAogICAg
ICAgbUVsZW1lbnRJbmRleChvdGhlci5tRWxlbWVudEluZGV4KSwKICAgICAgIG1TdHJ1Y3RFbGVt
ZW50SW5kZXhlcyhvdGhlci5tU3RydWN0RWxlbWVudEluZGV4ZXMpCi17fQoreworfQogCiBTdGQx
NDBQYWRkaW5nSGVscGVyICZTdGQxNDBQYWRkaW5nSGVscGVyOjpvcGVyYXRvcj0oY29uc3QgU3Rk
MTQwUGFkZGluZ0hlbHBlciAmb3RoZXIpCiB7Ci0gICAgbVBhZGRpbmdDb3VudGVyID0gb3RoZXIu
bVBhZGRpbmdDb3VudGVyOwotICAgIG1FbGVtZW50SW5kZXggPSBvdGhlci5tRWxlbWVudEluZGV4
OworICAgIG1QYWRkaW5nQ291bnRlciAgICAgICA9IG90aGVyLm1QYWRkaW5nQ291bnRlcjsKKyAg
ICBtRWxlbWVudEluZGV4ICAgICAgICAgPSBvdGhlci5tRWxlbWVudEluZGV4OwogICAgIG1TdHJ1
Y3RFbGVtZW50SW5kZXhlcyA9IG90aGVyLm1TdHJ1Y3RFbGVtZW50SW5kZXhlczsKICAgICByZXR1
cm4gKnRoaXM7CiB9CkBAIC01Myw3ICs1Myw3IEBAIGludCBTdGQxNDBQYWRkaW5nSGVscGVyOjpw
cmVQYWRkaW5nKGNvbnN0IFRUeXBlICZ0eXBlKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
LSAgICBjb25zdCBHTGVudW0gZ2xUeXBlID0gR0xWYXJpYWJsZVR5cGUodHlwZSk7CisgICAgY29u
c3QgR0xlbnVtIGdsVHlwZSAgICAgPSBHTFZhcmlhYmxlVHlwZSh0eXBlKTsKICAgICBjb25zdCBp
bnQgbnVtQ29tcG9uZW50cyA9IGdsOjpWYXJpYWJsZUNvbXBvbmVudENvdW50KGdsVHlwZSk7CiAK
ICAgICBpZiAobnVtQ29tcG9uZW50cyA+PSA0KQpAQCAtNzAsOSArNzAsOSBAQCBpbnQgU3RkMTQw
UGFkZGluZ0hlbHBlcjo6cHJlUGFkZGluZyhjb25zdCBUVHlwZSAmdHlwZSkKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgfQogCi0gICAgY29uc3QgaW50IGFsaWdubWVudCA9IG51bUNvbXBvbmVudHMg
PT0gMyA/IDQgOiBudW1Db21wb25lbnRzOworICAgIGNvbnN0IGludCBhbGlnbm1lbnQgICAgID0g
bnVtQ29tcG9uZW50cyA9PSAzID8gNCA6IG51bUNvbXBvbmVudHM7CiAgICAgY29uc3QgaW50IHBh
ZGRpbmdPZmZzZXQgPSAobUVsZW1lbnRJbmRleCAlIGFsaWdubWVudCk7Ci0gICAgY29uc3QgaW50
IHBhZGRpbmdDb3VudCA9IChwYWRkaW5nT2Zmc2V0ICE9IDAgPyAoYWxpZ25tZW50IC0gcGFkZGlu
Z09mZnNldCkgOiAwKTsKKyAgICBjb25zdCBpbnQgcGFkZGluZ0NvdW50ICA9IChwYWRkaW5nT2Zm
c2V0ICE9IDAgPyAoYWxpZ25tZW50IC0gcGFkZGluZ09mZnNldCkgOiAwKTsKIAogICAgIG1FbGVt
ZW50SW5kZXggKz0gcGFkZGluZ0NvdW50OwogICAgIG1FbGVtZW50SW5kZXggKz0gbnVtQ29tcG9u
ZW50czsKQEAgLTEwMiwyNSArMTAyLDI2IEBAIFRTdHJpbmcgU3RkMTQwUGFkZGluZ0hlbHBlcjo6
cG9zdFBhZGRpbmdTdHJpbmcoY29uc3QgVFR5cGUgJnR5cGUsIGJvb2wgdXNlSExTTFJvCiAgICAg
ICAgIHJldHVybiAiIjsKICAgICB9CiAKLSAgICBpbnQgbnVtQ29tcG9uZW50cyA9IDA7CisgICAg
aW50IG51bUNvbXBvbmVudHMgICAgID0gMDsKICAgICBUU3RydWN0dXJlICpzdHJ1Y3R1cmUgPSB0
eXBlLmdldFN0cnVjdCgpOwogCiAgICAgaWYgKHR5cGUuaXNNYXRyaXgoKSkKICAgICB7Ci0gICAg
ICAgIC8vIFRoaXMgbWV0aG9kIGNhbiBhbHNvIGJlIGNhbGxlZCBmcm9tIHN0cnVjdHVyZVN0cmlu
Zywgd2hpY2ggZG9lcyBub3QgdXNlIGxheW91dCBxdWFsaWZpZXJzLgorICAgICAgICAvLyBUaGlz
IG1ldGhvZCBjYW4gYWxzbyBiZSBjYWxsZWQgZnJvbSBzdHJ1Y3R1cmVTdHJpbmcsIHdoaWNoIGRv
ZXMgbm90IHVzZSBsYXlvdXQKKyAgICAgICAgLy8gcXVhbGlmaWVycy4KICAgICAgICAgLy8gVGh1
cywgdXNlIHRoZSBtZXRob2QgcGFyYW1ldGVyIGZvciBkZXRlcm1pbmluZyB0aGUgbWF0cml4IHBh
Y2tpbmcuCiAgICAgICAgIC8vCiAgICAgICAgIC8vIE5vdGUgSExTTCByb3cgbWFqb3IgcGFja2lu
ZyBjb3JyZXNwb25kcyB0byBHTCBBUEkgY29sdW1uLW1ham9yLCBhbmQgdmljZS12ZXJzYSwgc2lu
Y2Ugd2UKICAgICAgICAgLy8gd2lzaCB0byBhbHdheXMgdHJhbnNwb3NlIEdMIG1hdHJpY2VzIHRv
IHBsYXkgd2VsbCB3aXRoIEhMU0wncyBtYXRyaXggYXJyYXkgaW5kZXhpbmcuCiAgICAgICAgIC8v
CiAgICAgICAgIGNvbnN0IGJvb2wgaXNSb3dNYWpvck1hdHJpeCA9ICF1c2VITFNMUm93TWFqb3JQ
YWNraW5nOwotICAgICAgICBjb25zdCBHTGVudW0gZ2xUeXBlID0gR0xWYXJpYWJsZVR5cGUodHlw
ZSk7Ci0gICAgICAgIG51bUNvbXBvbmVudHMgPSBnbDo6TWF0cml4Q29tcG9uZW50Q291bnQoZ2xU
eXBlLCBpc1Jvd01ham9yTWF0cml4KTsKKyAgICAgICAgY29uc3QgR0xlbnVtIGdsVHlwZSAgICAg
ICAgID0gR0xWYXJpYWJsZVR5cGUodHlwZSk7CisgICAgICAgIG51bUNvbXBvbmVudHMgICAgICAg
ICAgICAgICA9IGdsOjpNYXRyaXhDb21wb25lbnRDb3VudChnbFR5cGUsIGlzUm93TWFqb3JNYXRy
aXgpOwogICAgIH0KICAgICBlbHNlIGlmIChzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBjb25z
dCBUU3RyaW5nICZzdHJ1Y3ROYW1lID0gUXVhbGlmaWVkU3RydWN0TmFtZVN0cmluZygqc3RydWN0
dXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1c2VITFNMUm93TWFqb3JQYWNraW5nLCB0cnVlKTsKKyAgICAgICAgY29uc3Qg
VFN0cmluZyAmc3RydWN0TmFtZSA9CisgICAgICAgICAgICBRdWFsaWZpZWRTdHJ1Y3ROYW1lU3Ry
aW5nKCpzdHJ1Y3R1cmUsIHVzZUhMU0xSb3dNYWpvclBhY2tpbmcsIHRydWUpOwogICAgICAgICBu
dW1Db21wb25lbnRzID0gbVN0cnVjdEVsZW1lbnRJbmRleGVzLT5maW5kKHN0cnVjdE5hbWUpLT5z
ZWNvbmQ7CiAKICAgICAgICAgaWYgKG51bUNvbXBvbmVudHMgPT0gMCkKQEAgLTEzMSw3ICsxMzIs
NyBAQCBUU3RyaW5nIFN0ZDE0MFBhZGRpbmdIZWxwZXI6OnBvc3RQYWRkaW5nU3RyaW5nKGNvbnN0
IFRUeXBlICZ0eXBlLCBib29sIHVzZUhMU0xSbwogICAgIGVsc2UKICAgICB7CiAgICAgICAgIGNv
bnN0IEdMZW51bSBnbFR5cGUgPSBHTFZhcmlhYmxlVHlwZSh0eXBlKTsKLSAgICAgICAgbnVtQ29t
cG9uZW50cyA9IGdsOjpWYXJpYWJsZUNvbXBvbmVudENvdW50KGdsVHlwZSk7CisgICAgICAgIG51
bUNvbXBvbmVudHMgICAgICAgPSBnbDo6VmFyaWFibGVDb21wb25lbnRDb3VudChnbFR5cGUpOwog
ICAgIH0KIAogICAgIFRTdHJpbmcgcGFkZGluZzsKQEAgLTE0MiwxNiArMTQzLDE4IEBAIFRTdHJp
bmcgU3RkMTQwUGFkZGluZ0hlbHBlcjo6cG9zdFBhZGRpbmdTdHJpbmcoY29uc3QgVFR5cGUgJnR5
cGUsIGJvb2wgdXNlSExTTFJvCiAgICAgcmV0dXJuIHBhZGRpbmc7CiB9CiAKLVN0cnVjdHVyZUhM
U0w6OlN0cnVjdHVyZUhMU0woKQotICAgIDogbVVuaXF1ZVBhZGRpbmdDb3VudGVyKDApCi17fQor
U3RydWN0dXJlSExTTDo6U3RydWN0dXJlSExTTCgpIDogbVVuaXF1ZVBhZGRpbmdDb3VudGVyKDAp
Cit7Cit9CiAKIFN0ZDE0MFBhZGRpbmdIZWxwZXIgU3RydWN0dXJlSExTTDo6Z2V0UGFkZGluZ0hl
bHBlcigpCiB7CiAgICAgcmV0dXJuIFN0ZDE0MFBhZGRpbmdIZWxwZXIobVN0ZDE0MFN0cnVjdEVs
ZW1lbnRJbmRleGVzLCAmbVVuaXF1ZVBhZGRpbmdDb3VudGVyKTsKIH0KIAotVFN0cmluZyBTdHJ1
Y3R1cmVITFNMOjpkZWZpbmVRdWFsaWZpZWQoY29uc3QgVFN0cnVjdHVyZSAmc3RydWN0dXJlLCBi
b29sIHVzZUhMU0xSb3dNYWpvclBhY2tpbmcsIGJvb2wgdXNlU3RkMTQwUGFja2luZykKK1RTdHJp
bmcgU3RydWN0dXJlSExTTDo6ZGVmaW5lUXVhbGlmaWVkKGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVj
dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlSExT
TFJvd01ham9yUGFja2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgdXNlU3RkMTQwUGFja2luZykKIHsKICAgICBpZiAodXNlU3RkMTQwUGFja2luZykKICAg
ICB7CkBAIC0xNjksMTcgKzE3MiwyMCBAQCBUU3RyaW5nIFN0cnVjdHVyZUhMU0w6OmRlZmluZU5h
bWVsZXNzKGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdHVyZSkKICAgICByZXR1cm4gZGVmaW5lKHN0
cnVjdHVyZSwgZmFsc2UsIGZhbHNlLCBOVUxMKTsKIH0KIAotVFN0cmluZyBTdHJ1Y3R1cmVITFNM
OjpkZWZpbmUoY29uc3QgVFN0cnVjdHVyZSAmc3RydWN0dXJlLCBib29sIHVzZUhMU0xSb3dNYWpv
clBhY2tpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVzZVN0ZDE0MFBh
Y2tpbmcsIFN0ZDE0MFBhZGRpbmdIZWxwZXIgKnBhZEhlbHBlcikKK1RTdHJpbmcgU3RydWN0dXJl
SExTTDo6ZGVmaW5lKGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdHVyZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgdXNlSExTTFJvd01ham9yUGFja2luZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlU3RkMTQwUGFja2luZywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFN0ZDE0MFBhZGRpbmdIZWxwZXIgKnBhZEhlbHBlcikKIHsKICAgICBj
b25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSBzdHJ1Y3R1cmUuZmllbGRzKCk7Ci0gICAgY29uc3Qg
Ym9vbCBpc05hbWVsZXNzID0gKHN0cnVjdHVyZS5uYW1lKCkgPT0gIiIpOwotICAgIGNvbnN0IFRT
dHJpbmcgJnN0cnVjdE5hbWUgPSBRdWFsaWZpZWRTdHJ1Y3ROYW1lU3RyaW5nKHN0cnVjdHVyZSwg
dXNlSExTTFJvd01ham9yUGFja2luZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VTdGQxNDBQYWNraW5nKTsKKyAgICBjb25zdCBi
b29sIGlzTmFtZWxlc3MgICAgPSAoc3RydWN0dXJlLm5hbWUoKSA9PSAiIik7CisgICAgY29uc3Qg
VFN0cmluZyAmc3RydWN0TmFtZSA9CisgICAgICAgIFF1YWxpZmllZFN0cnVjdE5hbWVTdHJpbmco
c3RydWN0dXJlLCB1c2VITFNMUm93TWFqb3JQYWNraW5nLCB1c2VTdGQxNDBQYWNraW5nKTsKICAg
ICBjb25zdCBUU3RyaW5nIGRlY2xhcmVTdHJpbmcgPSAoaXNOYW1lbGVzcyA/ICJzdHJ1Y3QiIDog
InN0cnVjdCAiICsgc3RydWN0TmFtZSk7CiAKICAgICBUU3RyaW5nIHN0cmluZzsKLSAgICBzdHJp
bmcgKz0gZGVjbGFyZVN0cmluZyArICJcbiIKKyAgICBzdHJpbmcgKz0gZGVjbGFyZVN0cmluZyAr
CisgICAgICAgICAgICAgICJcbiIKICAgICAgICAgICAgICAgIntcbiI7CiAKICAgICBmb3IgKGNv
bnN0IFRGaWVsZCAqZmllbGQgOiBmaWVsZHMpCkBAIC0yMDgsNyArMjE0LDggQEAgVFN0cmluZyBT
dHJ1Y3R1cmVITFNMOjpkZWZpbmUoY29uc3QgVFN0cnVjdHVyZSAmc3RydWN0dXJlLCBib29sIHVz
ZUhMU0xSb3dNYWpvclAKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIE5hbWVsZXNzIHN0cnVj
dHMgZG8gbm90IGZpbmlzaCB3aXRoIGEgc2VtaWNvbG9uIGFuZCBuZXdsaW5lLCB0byBsZWF2ZSBy
b29tIGZvciBhbiBpbnN0YW5jZSB2YXJpYWJsZQorICAgIC8vIE5hbWVsZXNzIHN0cnVjdHMgZG8g
bm90IGZpbmlzaCB3aXRoIGEgc2VtaWNvbG9uIGFuZCBuZXdsaW5lLCB0byBsZWF2ZSByb29tIGZv
ciBhbiBpbnN0YW5jZQorICAgIC8vIHZhcmlhYmxlCiAgICAgc3RyaW5nICs9IChpc05hbWVsZXNz
ID8gIn0gIiA6ICJ9O1xuIik7CiAKICAgICByZXR1cm4gc3RyaW5nOwpAQCAtMjM4LDcgKzI0NSw3
IEBAIFRTdHJpbmcgU3RydWN0dXJlSExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3QgVFR5cGUgJnR5
cGUsCiAKICAgICBUU3RyaW5nIGNvbnN0cnVjdG9yRnVuY3Rpb25OYW1lOwogCi0gICAgY29uc3Qg
VFN0cnVjdHVyZSogc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICBjb25zdCBUU3Ry
dWN0dXJlICpzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOwogICAgIGlmIChzdHJ1Y3R1cmUp
CiAgICAgewogICAgICAgICBtU3RydWN0TmFtZXMuaW5zZXJ0KG5hbWUpOwpAQCAtMjQ5LDE3ICsy
NTYsMTggQEAgVFN0cmluZyBTdHJ1Y3R1cmVITFNMOjphZGRDb25zdHJ1Y3Rvcihjb25zdCBUVHlw
ZSAmdHlwZSwKIAogICAgICAgICBjb25zdCBUU3RyaW5nICZzdHJ1Y3RTdHJpbmcgPSBkZWZpbmVR
dWFsaWZpZWQoKnN0cnVjdHVyZSwgZmFsc2UsIGZhbHNlKTsKIAotICAgICAgICBpZiAoc3RkOjpm
aW5kKG1TdHJ1Y3REZWNsYXJhdGlvbnMuYmVnaW4oKSwgbVN0cnVjdERlY2xhcmF0aW9ucy5lbmQo
KSwgc3RydWN0U3RyaW5nKSA9PSBtU3RydWN0RGVjbGFyYXRpb25zLmVuZCgpKQorICAgICAgICBp
ZiAoc3RkOjpmaW5kKG1TdHJ1Y3REZWNsYXJhdGlvbnMuYmVnaW4oKSwgbVN0cnVjdERlY2xhcmF0
aW9ucy5lbmQoKSwgc3RydWN0U3RyaW5nKSA9PQorICAgICAgICAgICAgbVN0cnVjdERlY2xhcmF0
aW9ucy5lbmQoKSkKICAgICAgICAgewogICAgICAgICAgICAgLy8gQWRkIHJvdy1tYWpvciBwYWNr
ZWQgc3RydWN0IGZvciBpbnRlcmZhY2UgYmxvY2tzCiAgICAgICAgICAgICBUU3RyaW5nIHJvd01h
am9yU3RyaW5nID0gIiNwcmFnbWEgcGFja19tYXRyaXgocm93X21ham9yKVxuIiArCi0gICAgICAg
ICAgICAgICAgZGVmaW5lUXVhbGlmaWVkKCpzdHJ1Y3R1cmUsIHRydWUsIGZhbHNlKSArCi0gICAg
ICAgICAgICAgICAgIiNwcmFnbWEgcGFja19tYXRyaXgoY29sdW1uX21ham9yKVxuIjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVRdWFsaWZpZWQoKnN0cnVjdHVy
ZSwgdHJ1ZSwgZmFsc2UpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
I3ByYWdtYSBwYWNrX21hdHJpeChjb2x1bW5fbWFqb3IpXG4iOwogCi0gICAgICAgICAgICBUU3Ry
aW5nIHN0ZDE0MFN0cmluZyA9IGRlZmluZVF1YWxpZmllZCgqc3RydWN0dXJlLCBmYWxzZSwgdHJ1
ZSk7CisgICAgICAgICAgICBUU3RyaW5nIHN0ZDE0MFN0cmluZyAgICAgICAgID0gZGVmaW5lUXVh
bGlmaWVkKCpzdHJ1Y3R1cmUsIGZhbHNlLCB0cnVlKTsKICAgICAgICAgICAgIFRTdHJpbmcgc3Rk
MTQwUm93TWFqb3JTdHJpbmcgPSAiI3ByYWdtYSBwYWNrX21hdHJpeChyb3dfbWFqb3IpXG4iICsK
LSAgICAgICAgICAgICAgICBkZWZpbmVRdWFsaWZpZWQoKnN0cnVjdHVyZSwgdHJ1ZSwgdHJ1ZSkg
KwotICAgICAgICAgICAgICAgICIjcHJhZ21hIHBhY2tfbWF0cml4KGNvbHVtbl9tYWpvcilcbiI7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lUXVhbGlm
aWVkKCpzdHJ1Y3R1cmUsIHRydWUsIHRydWUpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiI3ByYWdtYSBwYWNrX21hdHJpeChjb2x1bW5fbWFqb3IpXG4iOwog
CiAgICAgICAgICAgICBtU3RydWN0RGVjbGFyYXRpb25zLnB1c2hfYmFjayhzdHJ1Y3RTdHJpbmcp
OwogICAgICAgICAgICAgbVN0cnVjdERlY2xhcmF0aW9ucy5wdXNoX2JhY2socm93TWFqb3JTdHJp
bmcpOwpAQCAtMjg3LDcgKzI5NSw4IEBAIFRTdHJpbmcgU3RydWN0dXJlSExTTDo6YWRkQ29uc3Ry
dWN0b3IoY29uc3QgVFR5cGUgJnR5cGUsCiAgICAgICAgIH0KICAgICAgICAgY29uc3RydWN0b3JG
dW5jdGlvbk5hbWUgPSBUU3RyaW5nKG5hbWUpICsgRGlzYW1iaWd1YXRlRnVuY3Rpb25OYW1lKHBh
cmFtZXRlcnMpOwogICAgIH0KLSAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisgICAgZWxzZQorICAg
ICAgICBVTlJFQUNIQUJMRSgpOwogCiAgICAgVFN0cmluZyBjb25zdHJ1Y3RvcjsKIApAQCAtMjk1
LDcgKzMwNCw3IEBAIFRTdHJpbmcgU3RydWN0dXJlSExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3Qg
VFR5cGUgJnR5cGUsCiAgICAgewogICAgICAgICBjb25zdHJ1Y3RvciArPSBuYW1lICsgIiAiICsg
bmFtZSArICJfY3RvcigiOwogICAgIH0KLSAgICBlbHNlICAgLy8gQnVpbHQtaW4gdHlwZQorICAg
IGVsc2UgIC8vIEJ1aWx0LWluIHR5cGUKICAgICB7CiAgICAgICAgIGNvbnN0cnVjdG9yICs9IFR5
cGVTdHJpbmcoY3RvclR5cGUpICsgIiAiICsgY29uc3RydWN0b3JGdW5jdGlvbk5hbWUgKyAiKCI7
CiAgICAgfQpAQCAtMzEyLDggKzMyMSw5IEBAIFRTdHJpbmcgU3RydWN0dXJlSExTTDo6YWRkQ29u
c3RydWN0b3IoY29uc3QgVFR5cGUgJnR5cGUsCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjb25z
dHJ1Y3RvciArPSAiKVxuIgotICAgICAgICAgICAgICAgICAgICJ7XG4iOworICAgIGNvbnN0cnVj
dG9yICs9CisgICAgICAgICIpXG4iCisgICAgICAgICJ7XG4iOwogCiAgICAgaWYgKGN0b3JUeXBl
LmdldFN0cnVjdCgpKQogICAgIHsKQEAgLTMzNCw4ICszNDQsOCBAQCBUU3RyaW5nIFN0cnVjdHVy
ZUhMU0w6OmFkZENvbnN0cnVjdG9yKGNvbnN0IFRUeXBlICZ0eXBlLAogCiAgICAgaWYgKGN0b3JU
eXBlLmlzTWF0cml4KCkgJiYgY3RvclBhcmFtZXRlcnMuc2l6ZSgpID09IDEpCiAgICAgewotICAg
ICAgICBpbnQgcm93cyA9IGN0b3JUeXBlLmdldFJvd3MoKTsKLSAgICAgICAgaW50IGNvbHMgPSBj
dG9yVHlwZS5nZXRDb2xzKCk7CisgICAgICAgIGludCByb3dzICAgICAgICAgICAgICAgPSBjdG9y
VHlwZS5nZXRSb3dzKCk7CisgICAgICAgIGludCBjb2xzICAgICAgICAgICAgICAgPSBjdG9yVHlw
ZS5nZXRDb2xzKCk7CiAgICAgICAgIGNvbnN0IFRUeXBlICZwYXJhbWV0ZXIgPSBjdG9yUGFyYW1l
dGVyc1swXTsKIAogICAgICAgICBpZiAocGFyYW1ldGVyLmlzU2NhbGFyKCkpCkBAIC0zNzcsNyAr
Mzg3LDggQEAgVFN0cmluZyBTdHJ1Y3R1cmVITFNMOjphZGRDb25zdHJ1Y3Rvcihjb25zdCBUVHlw
ZSAmdHlwZSwKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAg
IEFTU0VSVChyb3dzID09IDIgJiYgY29scyA9PSAyICYmIHBhcmFtZXRlci5pc1ZlY3RvcigpICYm
IHBhcmFtZXRlci5nZXROb21pbmFsU2l6ZSgpID09IDQpOworICAgICAgICAgICAgQVNTRVJUKHJv
d3MgPT0gMiAmJiBjb2xzID09IDIgJiYgcGFyYW1ldGVyLmlzVmVjdG9yKCkgJiYKKyAgICAgICAg
ICAgICAgICAgICBwYXJhbWV0ZXIuZ2V0Tm9taW5hbFNpemUoKSA9PSA0KTsKIAogICAgICAgICAg
ICAgY29uc3RydWN0b3IgKz0gIngwIjsKICAgICAgICAgfQpAQCAtMzk3LDkgKzQwOCw5IEBAIFRT
dHJpbmcgU3RydWN0dXJlSExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3QgVFR5cGUgJnR5cGUsCiAK
ICAgICAgICAgd2hpbGUgKHJlbWFpbmluZ0NvbXBvbmVudHMgPiAwKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb25zdCBUVHlwZSAmcGFyYW1ldGVyID0gY3RvclBhcmFtZXRlcnNbcGFyYW1ldGVy
SW5kZXhdOworICAgICAgICAgICAgY29uc3QgVFR5cGUgJnBhcmFtZXRlciAgICAgPSBjdG9yUGFy
YW1ldGVyc1twYXJhbWV0ZXJJbmRleF07CiAgICAgICAgICAgICBjb25zdCBzaXplX3QgcGFyYW1l
dGVyU2l6ZSA9IHBhcmFtZXRlci5nZXRPYmplY3RTaXplKCk7Ci0gICAgICAgICAgICBib29sIG1v
cmVQYXJhbWV0ZXJzID0gcGFyYW1ldGVySW5kZXggKyAxIDwgY3RvclBhcmFtZXRlcnMuc2l6ZSgp
OworICAgICAgICAgICAgYm9vbCBtb3JlUGFyYW1ldGVycyAgICAgICAgPSBwYXJhbWV0ZXJJbmRl
eCArIDEgPCBjdG9yUGFyYW1ldGVycy5zaXplKCk7CiAKICAgICAgICAgICAgIGNvbnN0cnVjdG9y
ICs9ICJ4IiArIHN0cihwYXJhbWV0ZXJJbmRleCk7CiAKQEAgLTQyNCwxNiArNDM1LDI2IEBAIFRT
dHJpbmcgU3RydWN0dXJlSExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3QgVFR5cGUgJnR5cGUsCiAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlbWFpbmluZ0Nv
bXBvbmVudHMpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICBj
YXNlIDE6IGNvbnN0cnVjdG9yICs9ICIueCI7ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgMjogY29uc3RydWN0b3IgKz0gIi54eSI7ICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAzOiBjb25zdHJ1Y3RvciArPSAiLnh5eiI7ICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIDQ6IGNvbnN0cnVjdG9yICs9ICIueHl6dyI7IGJyZWFrOwotICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0
b3IgKz0gIi54IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dHJ1Y3RvciArPSAiLnh5IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdHJ1Y3RvciArPSAiLnh5eiI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3RydWN0b3IgKz0gIi54eXp3IjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZ0NvbXBvbmVudHMgPSAwOwogICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgZWxzZSBpZiAocGFyYW1ldGVyLmlzTWF0cml4KCkpCiAgICAgICAg
ICAgICB7CkBAIC00NDYsMTAgKzQ2NywxNyBAQCBUU3RyaW5nIFN0cnVjdHVyZUhMU0w6OmFkZENv
bnN0cnVjdG9yKGNvbnN0IFRUeXBlICZ0eXBlLAogICAgICAgICAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlbWFpbmluZ0NvbXBvbmVudHMpCiAgICAgICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTogIGNv
bnN0cnVjdG9yICs9ICIueCI7ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlIDI6ICBjb25zdHJ1Y3RvciArPSAiLnh5IjsgICBicmVhazsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAzOiAgY29uc3RydWN0b3IgKz0gIi54eXoiOyAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdHJ1Y3RvciArPSAiLngiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yICs9ICIueHkiOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yICs9ICIueHl6IjsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
ICAgICAgICAgcmVtYWluaW5nQ29tcG9uZW50cyA9IDA7CkBAIC00NjcsNyArNDk1LDggQEAgVFN0
cmluZyBTdHJ1Y3R1cmVITFNMOjphZGRDb25zdHJ1Y3Rvcihjb25zdCBUVHlwZSAmdHlwZSwKICAg
ICAgICAgICAgICAgICAgICAgY29sdW1uKys7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAKICAgICAgICAgICAgIGlmIChtb3JlUGFy
YW1ldGVycykKICAgICAgICAgICAgIHsKQEAgLTQ5Myw4ICs1MjIsOSBAQCBUU3RyaW5nIFN0cnVj
dHVyZUhMU0w6OmFkZENvbnN0cnVjdG9yKGNvbnN0IFRUeXBlICZ0eXBlLAogICAgIH0KICAgICBl
bHNlCiAgICAgewotICAgICAgICBjb25zdHJ1Y3RvciArPSAiKTtcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgIn1cbiI7CisgICAgICAgIGNvbnN0cnVjdG9yICs9CisgICAgICAgICAgICAiKTtc
biIKKyAgICAgICAgICAgICJ9XG4iOwogICAgIH0KIAogICAgIG1Db25zdHJ1Y3RvcnMuaW5zZXJ0
KGNvbnN0cnVjdG9yKTsKQEAgLTUxMiw4ICs1NDIsNyBAQCBzdGQ6OnN0cmluZyBTdHJ1Y3R1cmVI
TFNMOjpzdHJ1Y3RzSGVhZGVyKCkgY29uc3QKICAgICB9CiAKICAgICBmb3IgKENvbnN0cnVjdG9y
czo6Y29uc3RfaXRlcmF0b3IgY29uc3RydWN0b3IgPSBtQ29uc3RydWN0b3JzLmJlZ2luKCk7Ci0g
ICAgICAgICBjb25zdHJ1Y3RvciAhPSBtQ29uc3RydWN0b3JzLmVuZCgpOwotICAgICAgICAgY29u
c3RydWN0b3IrKykKKyAgICAgICAgIGNvbnN0cnVjdG9yICE9IG1Db25zdHJ1Y3RvcnMuZW5kKCk7
IGNvbnN0cnVjdG9yKyspCiAgICAgewogICAgICAgICBvdXQgPDwgKmNvbnN0cnVjdG9yOwogICAg
IH0KQEAgLTUyMSwxOSArNTUwLDIwIEBAIHN0ZDo6c3RyaW5nIFN0cnVjdHVyZUhMU0w6OnN0cnVj
dHNIZWFkZXIoKSBjb25zdAogICAgIHJldHVybiBvdXQuc3RyKCk7CiB9CiAKLXZvaWQgU3RydWN0
dXJlSExTTDo6c3RvcmVTdGQxNDBFbGVtZW50SW5kZXgoY29uc3QgVFN0cnVjdHVyZSAmc3RydWN0
dXJlLCBib29sIHVzZUhMU0xSb3dNYWpvclBhY2tpbmcpCit2b2lkIFN0cnVjdHVyZUhMU0w6OnN0
b3JlU3RkMTQwRWxlbWVudEluZGV4KGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdHVyZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VITFNMUm93TWFq
b3JQYWNraW5nKQogewogICAgIFN0ZDE0MFBhZGRpbmdIZWxwZXIgcGFkSGVscGVyID0gZ2V0UGFk
ZGluZ0hlbHBlcigpOwotICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IHN0cnVjdHVyZS5m
aWVsZHMoKTsKKyAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgICAgICA9IHN0cnVjdHVyZS5m
aWVsZHMoKTsKIAogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZmllbGRzLnNpemUo
KTsgaSsrKQogICAgIHsKICAgICAgICAgcGFkSGVscGVyLnByZVBhZGRpbmcoKmZpZWxkc1tpXS0+
dHlwZSgpKTsKICAgICB9CiAKLSAgICAvLyBBZGQgcmVtYWluaW5nIGVsZW1lbnQgaW5kZXggdG8g
dGhlIGdsb2JhbCBtYXAsIGZvciB1c2Ugd2l0aCBuZXN0ZWQgc3RydWN0cyBpbiBzdGFuZGFyZCBs
YXlvdXRzCisgICAgLy8gQWRkIHJlbWFpbmluZyBlbGVtZW50IGluZGV4IHRvIHRoZSBnbG9iYWwg
bWFwLCBmb3IgdXNlIHdpdGggbmVzdGVkIHN0cnVjdHMgaW4gc3RhbmRhcmQKKyAgICAvLyBsYXlv
dXRzCiAgICAgY29uc3QgVFN0cmluZyAmc3RydWN0TmFtZSA9IFF1YWxpZmllZFN0cnVjdE5hbWVT
dHJpbmcoc3RydWN0dXJlLCB1c2VITFNMUm93TWFqb3JQYWNraW5nLCB0cnVlKTsKICAgICBtU3Rk
MTQwU3RydWN0RWxlbWVudEluZGV4ZXNbc3RydWN0TmFtZV0gPSBwYWRIZWxwZXIuZWxlbWVudElu
ZGV4KCk7CiB9Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1N0cnVjdHVyZUhMU0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1N0cnVjdHVyZUhMU0wuaAppbmRleCA5NjEzOWVj
OWE3Y2U5OWIxNjExNGIwNzVmZTdhODFkYTM0ODhkZjgzLi5iOGM2ZDYyNTU1ZGZjNWJhMmYyNDc1
ZmIyMDIzOTYwYmY1N2MyMjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9TdHJ1Y3R1cmVITFNMLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU3RydWN0dXJlSExTTC5oCkBAIC01
Niw3ICs1Niw5IEBAIGNsYXNzIFN0cnVjdHVyZUhMU0wgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAqcGFyYW1ldGVy
cyk7CiAgICAgc3RkOjpzdHJpbmcgc3RydWN0c0hlYWRlcigpIGNvbnN0OwogCi0gICAgVFN0cmlu
ZyBkZWZpbmVRdWFsaWZpZWQoY29uc3QgVFN0cnVjdHVyZSAmc3RydWN0dXJlLCBib29sIHVzZUhM
U0xSb3dNYWpvclBhY2tpbmcsIGJvb2wgdXNlU3RkMTQwUGFja2luZyk7CisgICAgVFN0cmluZyBk
ZWZpbmVRdWFsaWZpZWQoY29uc3QgVFN0cnVjdHVyZSAmc3RydWN0dXJlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgdXNlSExTTFJvd01ham9yUGFja2luZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIHVzZVN0ZDE0MFBhY2tpbmcpOwogICAgIHN0YXRpYyBUU3Ry
aW5nIGRlZmluZU5hbWVsZXNzKGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdHVyZSk7CiAKICAgICBT
dGQxNDBQYWRkaW5nSGVscGVyIGdldFBhZGRpbmdIZWxwZXIoKTsKQEAgLTc2LDEwICs3OCwxMSBA
QCBjbGFzcyBTdHJ1Y3R1cmVITFNMIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgU3RydWN0RGVj
bGFyYXRpb25zIG1TdHJ1Y3REZWNsYXJhdGlvbnM7CiAKICAgICB2b2lkIHN0b3JlU3RkMTQwRWxl
bWVudEluZGV4KGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdHVyZSwgYm9vbCB1c2VITFNMUm93TWFq
b3JQYWNraW5nKTsKLSAgICBzdGF0aWMgVFN0cmluZyBkZWZpbmUoY29uc3QgVFN0cnVjdHVyZSAm
c3RydWN0dXJlLCBib29sIHVzZUhMU0xSb3dNYWpvclBhY2tpbmcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCB1c2VTdGQxNDBQYWNraW5nLCBTdGQxNDBQYWRkaW5nSGVscGVyICpwYWRI
ZWxwZXIpOworICAgIHN0YXRpYyBUU3RyaW5nIGRlZmluZShjb25zdCBUU3RydWN0dXJlICZzdHJ1
Y3R1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlSExTTFJvd01ham9yUGFj
a2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VTdGQxNDBQYWNraW5nLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBTdGQxNDBQYWRkaW5nSGVscGVyICpwYWRIZWxwZXIp
OwogfTsKLQogfQogCi0jZW5kaWYgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9TVFJVQ1RVUkVITFNM
X0hfCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfU1RSVUNUVVJFSExTTF9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
U3ltYm9sVGFibGUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvU3ltYm9sVGFibGUuY3BwCmluZGV4IGFhMjM3NzZiOTcyMzBlYmMxZjI5ZDBkOTNl
MDI3NGZkZjdkYmE3YzMuLmE3ZjdlOGY1NDE1MWU0MGIxOGNiMzk1YmJmMDlmZGMwODU4MDc0NjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1N5bWJvbFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5jcHAKQEAgLTEwLDE3ICsxMCw0MiBAQAogLy8K
IAogI2lmIGRlZmluZWQoX01TQ19WRVIpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDcxOCkK
KyNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDcxOCkKICNlbmRpZgogCiAjaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgorCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJh
bnNsYXRvci9DYWNoZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9k
ZS5oIgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKK25hbWVz
cGFjZSBzaAoreworCituYW1lc3BhY2UKK3sKKworc3RhdGljIGNvbnN0IGNoYXIga0Z1bmN0aW9u
TWFuZ2xlZE5hbWVTZXBhcmF0b3IgPSAnKCc7CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UK
KwogaW50IFRTeW1ib2xUYWJsZTo6dW5pcXVlSWRDb3VudGVyID0gMDsKIAorVFN5bWJvbFVuaXF1
ZUlkOjpUU3ltYm9sVW5pcXVlSWQoKSA6IG1JZChUU3ltYm9sVGFibGU6Om5leHRVbmlxdWVJZCgp
KQoreworfQorCitUU3ltYm9sVW5pcXVlSWQ6OlRTeW1ib2xVbmlxdWVJZChjb25zdCBUU3ltYm9s
ICZzeW1ib2wpIDogbUlkKHN5bWJvbC5nZXRVbmlxdWVJZCgpKQoreworfQorCitpbnQgVFN5bWJv
bFVuaXF1ZUlkOjpnZXQoKSBjb25zdAoreworICAgIHJldHVybiBtSWQ7Cit9CisKIFRTeW1ib2w6
OlRTeW1ib2woY29uc3QgVFN0cmluZyAqbikgOiB1bmlxdWVJZChUU3ltYm9sVGFibGU6Om5leHRV
bmlxdWVJZCgpKSwgbmFtZShuKQogewogfQpAQCAtNTIsMTYgKzc3LDI5IEBAIHZvaWQgVEZ1bmN0
aW9uOjpzd2FwUGFyYW1ldGVycyhjb25zdCBURnVuY3Rpb24gJnBhcmFtZXRlcnNTb3VyY2UpCiAK
IGNvbnN0IFRTdHJpbmcgKlRGdW5jdGlvbjo6YnVpbGRNYW5nbGVkTmFtZSgpIGNvbnN0CiB7Ci0g
ICAgc3RkOjpzdHJpbmcgbmV3TmFtZSA9IG1hbmdsZU5hbWUoZ2V0TmFtZSgpKS5jX3N0cigpOwor
ICAgIHN0ZDo6c3RyaW5nIG5ld05hbWUgPSBnZXROYW1lKCkuY19zdHIoKTsKKyAgICBuZXdOYW1l
ICs9IGtGdW5jdGlvbk1hbmdsZWROYW1lU2VwYXJhdG9yOwogCiAgICAgZm9yIChjb25zdCBhdXRv
ICZwIDogcGFyYW1ldGVycykKICAgICB7CiAgICAgICAgIG5ld05hbWUgKz0gcC50eXBlLT5nZXRN
YW5nbGVkTmFtZSgpLmNfc3RyKCk7CiAgICAgfQotCiAgICAgcmV0dXJuIE5ld1Bvb2xUU3RyaW5n
KG5ld05hbWUuY19zdHIoKSk7CiB9CiAKK2NvbnN0IFRTdHJpbmcgJlRGdW5jdGlvbjo6R2V0TWFu
Z2xlZE5hbWVGcm9tQ2FsbChjb25zdCBUU3RyaW5nICZmdW5jdGlvbk5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVEludGVybVNlcXVl
bmNlICZhcmd1bWVudHMpCit7CisgICAgc3RkOjpzdHJpbmcgbmV3TmFtZSA9IGZ1bmN0aW9uTmFt
ZS5jX3N0cigpOworICAgIG5ld05hbWUgKz0ga0Z1bmN0aW9uTWFuZ2xlZE5hbWVTZXBhcmF0b3I7
CisKKyAgICBmb3IgKFRJbnRlcm1Ob2RlICphcmd1bWVudCA6IGFyZ3VtZW50cykKKyAgICB7Cisg
ICAgICAgIG5ld05hbWUgKz0gYXJndW1lbnQtPmdldEFzVHlwZWQoKS0+Z2V0VHlwZSgpLmdldE1h
bmdsZWROYW1lKCkuY19zdHIoKTsKKyAgICB9CisgICAgcmV0dXJuICpOZXdQb29sVFN0cmluZyhu
ZXdOYW1lLmNfc3RyKCkpOworfQorCiAvLwogLy8gU3ltYm9sIHRhYmxlIGxldmVscyBhcmUgYSBt
YXAgb2YgcG9pbnRlcnMgdG8gc3ltYm9scyB0aGF0IGhhdmUgdG8gYmUgZGVsZXRlZC4KIC8vCkBA
IC05Niw4ICsxMzQsMTAgQEAgVFN5bWJvbCAqVFN5bWJvbFRhYmxlTGV2ZWw6OmZpbmQoY29uc3Qg
VFN0cmluZyAmbmFtZSkgY29uc3QKICAgICAgICAgcmV0dXJuICgqaXQpLnNlY29uZDsKIH0KIAot
VFN5bWJvbCAqVFN5bWJvbFRhYmxlOjpmaW5kKGNvbnN0IFRTdHJpbmcgJm5hbWUsIGludCBzaGFk
ZXJWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmJ1aWx0SW4sIGJv
b2wgKnNhbWVTY29wZSkgY29uc3QKK1RTeW1ib2wgKlRTeW1ib2xUYWJsZTo6ZmluZChjb25zdCBU
U3RyaW5nICZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJz
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgKmJ1aWx0SW4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCAqc2FtZVNjb3BlKSBjb25zdAogewogICAgIGludCBs
ZXZlbCA9IGN1cnJlbnRMZXZlbCgpOwogICAgIFRTeW1ib2wgKnN5bWJvbDsKQEAgLTExMiw4ICsx
NTIsNyBAQCBUU3ltYm9sICpUU3ltYm9sVGFibGU6OmZpbmQoY29uc3QgVFN0cmluZyAmbmFtZSwg
aW50IHNoYWRlclZlcnNpb24sCiAgICAgICAgICAgICBsZXZlbC0tOwogCiAgICAgICAgIHN5bWJv
bCA9IHRhYmxlW2xldmVsXS0+ZmluZChuYW1lKTsKLSAgICB9Ci0gICAgd2hpbGUgKHN5bWJvbCA9
PSAwICYmIC0tbGV2ZWwgPj0gMCk7CisgICAgfSB3aGlsZSAoc3ltYm9sID09IDAgJiYgLS1sZXZl
bCA+PSAwKTsKIAogICAgIGlmIChidWlsdEluKQogICAgICAgICAqYnVpbHRJbiA9IChsZXZlbCA8
PSBMQVNUX0JVSUxUSU5fTEVWRUwpOwpAQCAtMTIzLDggKzE2MiwxMyBAQCBUU3ltYm9sICpUU3lt
Ym9sVGFibGU6OmZpbmQoY29uc3QgVFN0cmluZyAmbmFtZSwgaW50IHNoYWRlclZlcnNpb24sCiAg
ICAgcmV0dXJuIHN5bWJvbDsKIH0KIAotVFN5bWJvbCAqVFN5bWJvbFRhYmxlOjpmaW5kQnVpbHRJ
bigKLSAgICBjb25zdCBUU3RyaW5nICZuYW1lLCBpbnQgc2hhZGVyVmVyc2lvbikgY29uc3QKK1RT
eW1ib2wgKlRTeW1ib2xUYWJsZTo6ZmluZEdsb2JhbChjb25zdCBUU3RyaW5nICZuYW1lKSBjb25z
dAoreworICAgIEFTU0VSVCh0YWJsZS5zaXplKCkgPiBHTE9CQUxfTEVWRUwpOworICAgIHJldHVy
biB0YWJsZVtHTE9CQUxfTEVWRUxdLT5maW5kKG5hbWUpOworfQorCitUU3ltYm9sICpUU3ltYm9s
VGFibGU6OmZpbmRCdWlsdEluKGNvbnN0IFRTdHJpbmcgJm5hbWUsIGludCBzaGFkZXJWZXJzaW9u
KSBjb25zdAogewogICAgIGZvciAoaW50IGxldmVsID0gTEFTVF9CVUlMVElOX0xFVkVMOyBsZXZl
bCA+PSAwOyBsZXZlbC0tKQogICAgIHsKQEAgLTE1NSw3ICsxOTksOCBAQCBib29sIElzR2VuVHlw
ZShjb25zdCBUVHlwZSAqdHlwZSkKICAgICBpZiAodHlwZSkKICAgICB7CiAgICAgICAgIFRCYXNp
Y1R5cGUgYmFzaWNUeXBlID0gdHlwZS0+Z2V0QmFzaWNUeXBlKCk7Ci0gICAgICAgIHJldHVybiBi
YXNpY1R5cGUgPT0gRWJ0R2VuVHlwZSB8fCBiYXNpY1R5cGUgPT0gRWJ0R2VuSVR5cGUgfHwgYmFz
aWNUeXBlID09IEVidEdlblVUeXBlIHx8IGJhc2ljVHlwZSA9PSBFYnRHZW5CVHlwZTsKKyAgICAg
ICAgcmV0dXJuIGJhc2ljVHlwZSA9PSBFYnRHZW5UeXBlIHx8IGJhc2ljVHlwZSA9PSBFYnRHZW5J
VHlwZSB8fCBiYXNpY1R5cGUgPT0gRWJ0R2VuVVR5cGUgfHwKKyAgICAgICAgICAgICAgIGJhc2lj
VHlwZSA9PSBFYnRHZW5CVHlwZTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjYs
NyArMjExLDggQEAgYm9vbCBJc1ZlY1R5cGUoY29uc3QgVFR5cGUgKnR5cGUpCiAgICAgaWYgKHR5
cGUpCiAgICAgewogICAgICAgICBUQmFzaWNUeXBlIGJhc2ljVHlwZSA9IHR5cGUtPmdldEJhc2lj
VHlwZSgpOwotICAgICAgICByZXR1cm4gYmFzaWNUeXBlID09IEVidFZlYyB8fCBiYXNpY1R5cGUg
PT0gRWJ0SVZlYyB8fCBiYXNpY1R5cGUgPT0gRWJ0VVZlYyB8fCBiYXNpY1R5cGUgPT0gRWJ0QlZl
YzsKKyAgICAgICAgcmV0dXJuIGJhc2ljVHlwZSA9PSBFYnRWZWMgfHwgYmFzaWNUeXBlID09IEVi
dElWZWMgfHwgYmFzaWNUeXBlID09IEVidFVWZWMgfHwKKyAgICAgICAgICAgICAgIGJhc2ljVHlw
ZSA9PSBFYnRCVmVjOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTE4MywxMyArMjI5
LDE5IEBAIGNvbnN0IFRUeXBlICpTcGVjaWZpY1R5cGUoY29uc3QgVFR5cGUgKnR5cGUsIGludCBz
aXplKQogCiAgICAgQVNTRVJUKCFJc1ZlY1R5cGUodHlwZSkpOwogCi0gICAgc3dpdGNoKHR5cGUt
PmdldEJhc2ljVHlwZSgpKQorICAgIHN3aXRjaCAodHlwZS0+Z2V0QmFzaWNUeXBlKCkpCiAgICAg
ewotICAgICAgY2FzZSBFYnRHZW5UeXBlOiAgcmV0dXJuIFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9h
dCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc2l6ZSkpOwotICAgICAgY2FzZSBFYnRHZW5J
VHlwZTogcmV0dXJuIFRDYWNoZTo6Z2V0VHlwZShFYnRJbnQsIHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KHNpemUpKTsKLSAgICAgIGNhc2UgRWJ0R2VuVVR5cGU6IHJldHVybiBUQ2FjaGU6Omdl
dFR5cGUoRWJ0VUludCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc2l6ZSkpOwotICAgICAg
Y2FzZSBFYnRHZW5CVHlwZTogcmV0dXJuIFRDYWNoZTo6Z2V0VHlwZShFYnRCb29sLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihzaXplKSk7Ci0gICAgICBkZWZhdWx0OiByZXR1cm4gdHlwZTsK
KyAgICAgICAgY2FzZSBFYnRHZW5UeXBlOgorICAgICAgICAgICAgcmV0dXJuIFRDYWNoZTo6Z2V0
VHlwZShFYnRGbG9hdCwgdHlwZS0+Z2V0UXVhbGlmaWVyKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNpemUpKTsKKyAgICAg
ICAgY2FzZSBFYnRHZW5JVHlwZToKKyAgICAgICAgICAgIHJldHVybiBUQ2FjaGU6OmdldFR5cGUo
RWJ0SW50LCB0eXBlLT5nZXRRdWFsaWZpZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4o
c2l6ZSkpOworICAgICAgICBjYXNlIEVidEdlblVUeXBlOgorICAgICAgICAgICAgcmV0dXJuIFRD
YWNoZTo6Z2V0VHlwZShFYnRVSW50LCB0eXBlLT5nZXRRdWFsaWZpZXIoKSwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcj4oc2l6ZSkpOworICAgICAgICBjYXNlIEVidEdlbkJUeXBlOgorICAgICAg
ICAgICAgcmV0dXJuIFRDYWNoZTo6Z2V0VHlwZShFYnRCb29sLCB0eXBlLT5nZXRRdWFsaWZpZXIo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc2l6ZSkpOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgcmV0dXJuIHR5cGU7CiAgICAgfQogfQogCkBAIC0yMDQsNjcgKzI1NiwxNDgg
QEAgY29uc3QgVFR5cGUgKlZlY3RvclR5cGUoY29uc3QgVFR5cGUgKnR5cGUsIGludCBzaXplKQog
CiAgICAgQVNTRVJUKCFJc0dlblR5cGUodHlwZSkpOwogCi0gICAgc3dpdGNoKHR5cGUtPmdldEJh
c2ljVHlwZSgpKQorICAgIHN3aXRjaCAodHlwZS0+Z2V0QmFzaWNUeXBlKCkpCiAgICAgewotICAg
ICAgY2FzZSBFYnRWZWM6ICByZXR1cm4gVENhY2hlOjpnZXRUeXBlKEVidEZsb2F0LCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBjaGFyPihzaXplKSk7Ci0gICAgICBjYXNlIEVidElWZWM6IHJldHVybiBU
Q2FjaGU6OmdldFR5cGUoRWJ0SW50LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzaXplKSk7
Ci0gICAgICBjYXNlIEVidFVWZWM6IHJldHVybiBUQ2FjaGU6OmdldFR5cGUoRWJ0VUludCwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc2l6ZSkpOwotICAgICAgY2FzZSBFYnRCVmVjOiByZXR1
cm4gVENhY2hlOjpnZXRUeXBlKEVidEJvb2wsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNp
emUpKTsKLSAgICAgIGRlZmF1bHQ6IHJldHVybiB0eXBlOworICAgICAgICBjYXNlIEVidFZlYzoK
KyAgICAgICAgICAgIHJldHVybiBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGNoYXI+KHNpemUpKTsKKyAgICAgICAgY2FzZSBFYnRJVmVjOgorICAgICAgICAg
ICAgcmV0dXJuIFRDYWNoZTo6Z2V0VHlwZShFYnRJbnQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNo
YXI+KHNpemUpKTsKKyAgICAgICAgY2FzZSBFYnRVVmVjOgorICAgICAgICAgICAgcmV0dXJuIFRD
YWNoZTo6Z2V0VHlwZShFYnRVSW50LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzaXplKSk7
CisgICAgICAgIGNhc2UgRWJ0QlZlYzoKKyAgICAgICAgICAgIHJldHVybiBUQ2FjaGU6OmdldFR5
cGUoRWJ0Qm9vbCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc2l6ZSkpOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHR5cGU7CiAgICAgfQogfQogCi12b2lkIFRTeW1i
b2xUYWJsZTo6aW5zZXJ0QnVpbHRJbihFU3ltYm9sTGV2ZWwgbGV2ZWwsIFRPcGVyYXRvciBvcCwg
Y29uc3QgY2hhciAqZXh0LCBjb25zdCBUVHlwZSAqcnZhbHVlLCBjb25zdCBjaGFyICpuYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnB0eXBlMSwgY29u
c3QgVFR5cGUgKnB0eXBlMiwgY29uc3QgVFR5cGUgKnB0eXBlMywgY29uc3QgVFR5cGUgKnB0eXBl
NCwgY29uc3QgVFR5cGUgKnB0eXBlNSkKK3ZvaWQgVFN5bWJvbFRhYmxlOjppbnNlcnRCdWlsdElu
KEVTeW1ib2xMZXZlbCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRP
cGVyYXRvciBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
KmV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpydmFs
dWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnB0eXBlMSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcHR5cGUzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnB0eXBlNCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTUpCiB7CiAgICAgaWYg
KHB0eXBlMS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0R1NhbXBsZXIyRCkKICAgICB7Ci0gICAgICAg
IGluc2VydFVubWFuZ2xlZEJ1aWx0SW4obmFtZSk7CisgICAgICAgIGluc2VydFVubWFuZ2xlZEJ1
aWx0SW5OYW1lKG5hbWUsIGxldmVsKTsKICAgICAgICAgYm9vbCBndmVjNCA9IChydmFsdWUtPmdl
dEJhc2ljVHlwZSgpID09IEVidEdWZWM0KTsKLSAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwg
Z3ZlYzQgPyBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIDQpIDogcnZhbHVlLCBuYW1lLCBUQ2Fj
aGU6OmdldFR5cGUoRWJ0U2FtcGxlcjJEKSwgcHR5cGUyLCBwdHlwZTMsIHB0eXBlNCwgcHR5cGU1
KTsKLSAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgZ3ZlYzQgPyBUQ2FjaGU6OmdldFR5cGUo
RWJ0SW50LCA0KSA6IHJ2YWx1ZSwgbmFtZSwgVENhY2hlOjpnZXRUeXBlKEVidElTYW1wbGVyMkQp
LCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOwotICAgICAgICBpbnNlcnRCdWlsdElu
KGxldmVsLCBndmVjNCA/IFRDYWNoZTo6Z2V0VHlwZShFYnRVSW50LCA0KSA6IHJ2YWx1ZSwgbmFt
ZSwgVENhY2hlOjpnZXRUeXBlKEVidFVTYW1wbGVyMkQpLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0
LCBwdHlwZTUpOworICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBndmVjNCA/IFRDYWNoZTo6
Z2V0VHlwZShFYnRGbG9hdCwgNCkgOiBydmFsdWUsIG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgVENhY2hlOjpnZXRUeXBlKEVidFNhbXBsZXIyRCksIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQs
IHB0eXBlNSk7CisgICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIGd2ZWM0ID8gVENhY2hlOjpn
ZXRUeXBlKEVidEludCwgNCkgOiBydmFsdWUsIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg
VENhY2hlOjpnZXRUeXBlKEVidElTYW1wbGVyMkQpLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBw
dHlwZTUpOworICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBndmVjNCA/IFRDYWNoZTo6Z2V0
VHlwZShFYnRVSW50LCA0KSA6IHJ2YWx1ZSwgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBU
Q2FjaGU6OmdldFR5cGUoRWJ0VVNhbXBsZXIyRCksIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0
eXBlNSk7CiAgICAgfQogICAgIGVsc2UgaWYgKHB0eXBlMS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0
R1NhbXBsZXIzRCkKICAgICB7Ci0gICAgICAgIGluc2VydFVubWFuZ2xlZEJ1aWx0SW4obmFtZSk7
CisgICAgICAgIGluc2VydFVubWFuZ2xlZEJ1aWx0SW5OYW1lKG5hbWUsIGxldmVsKTsKICAgICAg
ICAgYm9vbCBndmVjNCA9IChydmFsdWUtPmdldEJhc2ljVHlwZSgpID09IEVidEdWZWM0KTsKLSAg
ICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgZ3ZlYzQgPyBUQ2FjaGU6OmdldFR5cGUoRWJ0Rmxv
YXQsIDQpIDogcnZhbHVlLCBuYW1lLCBUQ2FjaGU6OmdldFR5cGUoRWJ0U2FtcGxlcjNEKSwgcHR5
cGUyLCBwdHlwZTMsIHB0eXBlNCwgcHR5cGU1KTsKLSAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZl
bCwgZ3ZlYzQgPyBUQ2FjaGU6OmdldFR5cGUoRWJ0SW50LCA0KSA6IHJ2YWx1ZSwgbmFtZSwgVENh
Y2hlOjpnZXRUeXBlKEVidElTYW1wbGVyM0QpLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlw
ZTUpOwotICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBndmVjNCA/IFRDYWNoZTo6Z2V0VHlw
ZShFYnRVSW50LCA0KSA6IHJ2YWx1ZSwgbmFtZSwgVENhY2hlOjpnZXRUeXBlKEVidFVTYW1wbGVy
M0QpLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOworICAgICAgICBpbnNlcnRCdWls
dEluKGxldmVsLCBndmVjNCA/IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgNCkgOiBydmFsdWUs
IG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgVENhY2hlOjpnZXRUeXBlKEVidFNhbXBsZXIz
RCksIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7CisgICAgICAgIGluc2VydEJ1aWx0
SW4obGV2ZWwsIGd2ZWM0ID8gVENhY2hlOjpnZXRUeXBlKEVidEludCwgNCkgOiBydmFsdWUsIG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgVENhY2hlOjpnZXRUeXBlKEVidElTYW1wbGVyM0Qp
LCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOworICAgICAgICBpbnNlcnRCdWlsdElu
KGxldmVsLCBndmVjNCA/IFRDYWNoZTo6Z2V0VHlwZShFYnRVSW50LCA0KSA6IHJ2YWx1ZSwgbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICBUQ2FjaGU6OmdldFR5cGUoRWJ0VVNhbXBsZXIzRCks
IHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7CiAgICAgfQogICAgIGVsc2UgaWYgKHB0
eXBlMS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0R1NhbXBsZXJDdWJlKQogICAgIHsKLSAgICAgICAg
aW5zZXJ0VW5tYW5nbGVkQnVpbHRJbihuYW1lKTsKKyAgICAgICAgaW5zZXJ0VW5tYW5nbGVkQnVp
bHRJbk5hbWUobmFtZSwgbGV2ZWwpOwogICAgICAgICBib29sIGd2ZWM0ID0gKHJ2YWx1ZS0+Z2V0
QmFzaWNUeXBlKCkgPT0gRWJ0R1ZlYzQpOwotICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBn
dmVjNCA/IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgNCkgOiBydmFsdWUsIG5hbWUsIFRDYWNo
ZTo6Z2V0VHlwZShFYnRTYW1wbGVyQ3ViZSksIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBl
NSk7Ci0gICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIGd2ZWM0ID8gVENhY2hlOjpnZXRUeXBl
KEVidEludCwgNCkgOiBydmFsdWUsIG5hbWUsIFRDYWNoZTo6Z2V0VHlwZShFYnRJU2FtcGxlckN1
YmUpLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOwotICAgICAgICBpbnNlcnRCdWls
dEluKGxldmVsLCBndmVjNCA/IFRDYWNoZTo6Z2V0VHlwZShFYnRVSW50LCA0KSA6IHJ2YWx1ZSwg
bmFtZSwgVENhY2hlOjpnZXRUeXBlKEVidFVTYW1wbGVyQ3ViZSksIHB0eXBlMiwgcHR5cGUzLCBw
dHlwZTQsIHB0eXBlNSk7CisgICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIGd2ZWM0ID8gVENh
Y2hlOjpnZXRUeXBlKEVidEZsb2F0LCA0KSA6IHJ2YWx1ZSwgbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBUQ2FjaGU6OmdldFR5cGUoRWJ0U2FtcGxlckN1YmUpLCBwdHlwZTIsIHB0eXBlMywg
cHR5cGU0LCBwdHlwZTUpOworICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBndmVjNCA/IFRD
YWNoZTo6Z2V0VHlwZShFYnRJbnQsIDQpIDogcnZhbHVlLCBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgIFRDYWNoZTo6Z2V0VHlwZShFYnRJU2FtcGxlckN1YmUpLCBwdHlwZTIsIHB0eXBlMywg
cHR5cGU0LCBwdHlwZTUpOworICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBndmVjNCA/IFRD
YWNoZTo6Z2V0VHlwZShFYnRVSW50LCA0KSA6IHJ2YWx1ZSwgbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBUQ2FjaGU6OmdldFR5cGUoRWJ0VVNhbXBsZXJDdWJlKSwgcHR5cGUyLCBwdHlwZTMs
IHB0eXBlNCwgcHR5cGU1KTsKICAgICB9CiAgICAgZWxzZSBpZiAocHR5cGUxLT5nZXRCYXNpY1R5
cGUoKSA9PSBFYnRHU2FtcGxlcjJEQXJyYXkpCiAgICAgewotICAgICAgICBpbnNlcnRVbm1hbmds
ZWRCdWlsdEluKG5hbWUpOworICAgICAgICBpbnNlcnRVbm1hbmdsZWRCdWlsdEluTmFtZShuYW1l
LCBsZXZlbCk7CiAgICAgICAgIGJvb2wgZ3ZlYzQgPSAocnZhbHVlLT5nZXRCYXNpY1R5cGUoKSA9
PSBFYnRHVmVjNCk7Ci0gICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIGd2ZWM0ID8gVENhY2hl
OjpnZXRUeXBlKEVidEZsb2F0LCA0KSA6IHJ2YWx1ZSwgbmFtZSwgVENhY2hlOjpnZXRUeXBlKEVi
dFNhbXBsZXIyREFycmF5KSwgcHR5cGUyLCBwdHlwZTMsIHB0eXBlNCwgcHR5cGU1KTsKLSAgICAg
ICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgZ3ZlYzQgPyBUQ2FjaGU6OmdldFR5cGUoRWJ0SW50LCA0
KSA6IHJ2YWx1ZSwgbmFtZSwgVENhY2hlOjpnZXRUeXBlKEVidElTYW1wbGVyMkRBcnJheSksIHB0
eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7Ci0gICAgICAgIGluc2VydEJ1aWx0SW4obGV2
ZWwsIGd2ZWM0ID8gVENhY2hlOjpnZXRUeXBlKEVidFVJbnQsIDQpIDogcnZhbHVlLCBuYW1lLCBU
Q2FjaGU6OmdldFR5cGUoRWJ0VVNhbXBsZXIyREFycmF5KSwgcHR5cGUyLCBwdHlwZTMsIHB0eXBl
NCwgcHR5cGU1KTsKKyAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgZ3ZlYzQgPyBUQ2FjaGU6
OmdldFR5cGUoRWJ0RmxvYXQsIDQpIDogcnZhbHVlLCBuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgIFRDYWNoZTo6Z2V0VHlwZShFYnRTYW1wbGVyMkRBcnJheSksIHB0eXBlMiwgcHR5cGUzLCBw
dHlwZTQsIHB0eXBlNSk7CisgICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIGd2ZWM0ID8gVENh
Y2hlOjpnZXRUeXBlKEVidEludCwgNCkgOiBydmFsdWUsIG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgVENhY2hlOjpnZXRUeXBlKEVidElTYW1wbGVyMkRBcnJheSksIHB0eXBlMiwgcHR5cGUz
LCBwdHlwZTQsIHB0eXBlNSk7CisgICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIGd2ZWM0ID8g
VENhY2hlOjpnZXRUeXBlKEVidFVJbnQsIDQpIDogcnZhbHVlLCBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgIFRDYWNoZTo6Z2V0VHlwZShFYnRVU2FtcGxlcjJEQXJyYXkpLCBwdHlwZTIsIHB0
eXBlMywgcHR5cGU0LCBwdHlwZTUpOwogICAgIH0KLSAgICBlbHNlIGlmIChJc0dlblR5cGUocnZh
bHVlKSB8fCBJc0dlblR5cGUocHR5cGUxKSB8fCBJc0dlblR5cGUocHR5cGUyKSB8fCBJc0dlblR5
cGUocHR5cGUzKSkKKyAgICBlbHNlIGlmIChwdHlwZTEtPmdldEJhc2ljVHlwZSgpID09IEVidEdT
YW1wbGVyMkRNUykKICAgICB7Ci0gICAgICAgIEFTU0VSVCghcHR5cGU0ICYmICFwdHlwZTUpOwot
ICAgICAgICBpbnNlcnRVbm1hbmdsZWRCdWlsdEluKG5hbWUpOwotICAgICAgICBpbnNlcnRCdWls
dEluKGxldmVsLCBvcCwgZXh0LCBTcGVjaWZpY1R5cGUocnZhbHVlLCAxKSwgbmFtZSwgU3BlY2lm
aWNUeXBlKHB0eXBlMSwgMSksIFNwZWNpZmljVHlwZShwdHlwZTIsIDEpLCBTcGVjaWZpY1R5cGUo
cHR5cGUzLCAxKSk7Ci0gICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIG9wLCBleHQsIFNwZWNp
ZmljVHlwZShydmFsdWUsIDIpLCBuYW1lLCBTcGVjaWZpY1R5cGUocHR5cGUxLCAyKSwgU3BlY2lm
aWNUeXBlKHB0eXBlMiwgMiksIFNwZWNpZmljVHlwZShwdHlwZTMsIDIpKTsKLSAgICAgICAgaW5z
ZXJ0QnVpbHRJbihsZXZlbCwgb3AsIGV4dCwgU3BlY2lmaWNUeXBlKHJ2YWx1ZSwgMyksIG5hbWUs
IFNwZWNpZmljVHlwZShwdHlwZTEsIDMpLCBTcGVjaWZpY1R5cGUocHR5cGUyLCAzKSwgU3BlY2lm
aWNUeXBlKHB0eXBlMywgMykpOwotICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBvcCwgZXh0
LCBTcGVjaWZpY1R5cGUocnZhbHVlLCA0KSwgbmFtZSwgU3BlY2lmaWNUeXBlKHB0eXBlMSwgNCks
IFNwZWNpZmljVHlwZShwdHlwZTIsIDQpLCBTcGVjaWZpY1R5cGUocHR5cGUzLCA0KSk7CisgICAg
ICAgIGluc2VydFVubWFuZ2xlZEJ1aWx0SW5OYW1lKG5hbWUsIGxldmVsKTsKKyAgICAgICAgYm9v
bCBndmVjNCA9IChydmFsdWUtPmdldEJhc2ljVHlwZSgpID09IEVidEdWZWM0KTsKKyAgICAgICAg
aW5zZXJ0QnVpbHRJbihsZXZlbCwgZ3ZlYzQgPyBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIDQp
IDogcnZhbHVlLCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIFRDYWNoZTo6Z2V0VHlwZShF
YnRTYW1wbGVyMkRNUyksIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7CisgICAgICAg
IGluc2VydEJ1aWx0SW4obGV2ZWwsIGd2ZWM0ID8gVENhY2hlOjpnZXRUeXBlKEVidEludCwgNCkg
OiBydmFsdWUsIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgVENhY2hlOjpnZXRUeXBlKEVi
dElTYW1wbGVyMkRNUyksIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7CisgICAgICAg
IGluc2VydEJ1aWx0SW4obGV2ZWwsIGd2ZWM0ID8gVENhY2hlOjpnZXRUeXBlKEVidFVJbnQsIDQp
IDogcnZhbHVlLCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIFRDYWNoZTo6Z2V0VHlwZShF
YnRVU2FtcGxlcjJETVMpLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOworICAgIH0K
KyAgICBlbHNlIGlmIChJc0dJbWFnZShwdHlwZTEtPmdldEJhc2ljVHlwZSgpKSkKKyAgICB7Cisg
ICAgICAgIGluc2VydFVubWFuZ2xlZEJ1aWx0SW5OYW1lKG5hbWUsIGxldmVsKTsKKworICAgICAg
ICBjb25zdCBUVHlwZSAqZmxvYXRUeXBlICAgID0gVENhY2hlOjpnZXRUeXBlKEVidEZsb2F0LCA0
KTsKKyAgICAgICAgY29uc3QgVFR5cGUgKmludFR5cGUgICAgICA9IFRDYWNoZTo6Z2V0VHlwZShF
YnRJbnQsIDQpOworICAgICAgICBjb25zdCBUVHlwZSAqdW5zaWduZWRUeXBlID0gVENhY2hlOjpn
ZXRUeXBlKEVidFVJbnQsIDQpOworCisgICAgICAgIGNvbnN0IFRUeXBlICpmbG9hdEltYWdlID0K
KyAgICAgICAgICAgIFRDYWNoZTo6Z2V0VHlwZShjb252ZXJ0R0ltYWdlVG9GbG9hdEltYWdlKHB0
eXBlMS0+Z2V0QmFzaWNUeXBlKCkpKTsKKyAgICAgICAgY29uc3QgVFR5cGUgKmludEltYWdlID0g
VENhY2hlOjpnZXRUeXBlKGNvbnZlcnRHSW1hZ2VUb0ludEltYWdlKHB0eXBlMS0+Z2V0QmFzaWNU
eXBlKCkpKTsKKyAgICAgICAgY29uc3QgVFR5cGUgKnVuc2lnbmVkSW1hZ2UgPQorICAgICAgICAg
ICAgVENhY2hlOjpnZXRUeXBlKGNvbnZlcnRHSW1hZ2VUb1Vuc2lnbmVkSW1hZ2UocHR5cGUxLT5n
ZXRCYXNpY1R5cGUoKSkpOworCisgICAgICAgIC8vIEdMU0wgRVMgMy4xMCwgUmV2aXNpb24gNCwg
OC4xMiBJbWFnZSBGdW5jdGlvbnMKKyAgICAgICAgaWYgKHJ2YWx1ZS0+Z2V0QmFzaWNUeXBlKCkg
PT0gRWJ0R1ZlYzQpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIGltYWdlTG9hZAorICAgICAg
ICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgZmxvYXRUeXBlLCBuYW1lLCBmbG9hdEltYWdlLCBw
dHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOworICAgICAgICAgICAgaW5zZXJ0QnVpbHRJ
bihsZXZlbCwgaW50VHlwZSwgbmFtZSwgaW50SW1hZ2UsIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQs
IHB0eXBlNSk7CisgICAgICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCB1bnNpZ25lZFR5cGUs
IG5hbWUsIHVuc2lnbmVkSW1hZ2UsIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocnZhbHVlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRW
b2lkKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBpbWFnZVN0b3JlCisgICAgICAgICAgICBp
bnNlcnRCdWlsdEluKGxldmVsLCBydmFsdWUsIG5hbWUsIGZsb2F0SW1hZ2UsIHB0eXBlMiwgZmxv
YXRUeXBlLCBwdHlwZTQsIHB0eXBlNSk7CisgICAgICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVs
LCBydmFsdWUsIG5hbWUsIGludEltYWdlLCBwdHlwZTIsIGludFR5cGUsIHB0eXBlNCwgcHR5cGU1
KTsKKyAgICAgICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIHJ2YWx1ZSwgbmFtZSwgdW5zaWdu
ZWRJbWFnZSwgcHR5cGUyLCB1bnNpZ25lZFR5cGUsIHB0eXBlNCwgcHR5cGU1KTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIGltYWdlU2l6ZQorICAg
ICAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgcnZhbHVlLCBuYW1lLCBmbG9hdEltYWdlLCBw
dHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOworICAgICAgICAgICAgaW5zZXJ0QnVpbHRJ
bihsZXZlbCwgcnZhbHVlLCBuYW1lLCBpbnRJbWFnZSwgcHR5cGUyLCBwdHlwZTMsIHB0eXBlNCwg
cHR5cGU1KTsKKyAgICAgICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIHJ2YWx1ZSwgbmFtZSwg
dW5zaWduZWRJbWFnZSwgcHR5cGUyLCBwdHlwZTMsIHB0eXBlNCwgcHR5cGU1KTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBlbHNlIGlmIChJc0dlblR5cGUocnZhbHVlKSB8fCBJc0dlblR5cGUocHR5
cGUxKSB8fCBJc0dlblR5cGUocHR5cGUyKSB8fCBJc0dlblR5cGUocHR5cGUzKSB8fAorICAgICAg
ICAgICAgIElzR2VuVHlwZShwdHlwZTQpKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFwdHlwZTUp
OworICAgICAgICBpbnNlcnRVbm1hbmdsZWRCdWlsdEluTmFtZShuYW1lLCBsZXZlbCk7CisgICAg
ICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIG9wLCBleHQsIFNwZWNpZmljVHlwZShydmFsdWUsIDEp
LCBuYW1lLCBTcGVjaWZpY1R5cGUocHR5cGUxLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICBT
cGVjaWZpY1R5cGUocHR5cGUyLCAxKSwgU3BlY2lmaWNUeXBlKHB0eXBlMywgMSksIFNwZWNpZmlj
VHlwZShwdHlwZTQsIDEpKTsKKyAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgb3AsIGV4dCwg
U3BlY2lmaWNUeXBlKHJ2YWx1ZSwgMiksIG5hbWUsIFNwZWNpZmljVHlwZShwdHlwZTEsIDIpLAor
ICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmljVHlwZShwdHlwZTIsIDIpLCBTcGVjaWZpY1R5
cGUocHR5cGUzLCAyKSwgU3BlY2lmaWNUeXBlKHB0eXBlNCwgMikpOworICAgICAgICBpbnNlcnRC
dWlsdEluKGxldmVsLCBvcCwgZXh0LCBTcGVjaWZpY1R5cGUocnZhbHVlLCAzKSwgbmFtZSwgU3Bl
Y2lmaWNUeXBlKHB0eXBlMSwgMyksCisgICAgICAgICAgICAgICAgICAgICAgU3BlY2lmaWNUeXBl
KHB0eXBlMiwgMyksIFNwZWNpZmljVHlwZShwdHlwZTMsIDMpLCBTcGVjaWZpY1R5cGUocHR5cGU0
LCAzKSk7CisgICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIG9wLCBleHQsIFNwZWNpZmljVHlw
ZShydmFsdWUsIDQpLCBuYW1lLCBTcGVjaWZpY1R5cGUocHR5cGUxLCA0KSwKKyAgICAgICAgICAg
ICAgICAgICAgICBTcGVjaWZpY1R5cGUocHR5cGUyLCA0KSwgU3BlY2lmaWNUeXBlKHB0eXBlMywg
NCksIFNwZWNpZmljVHlwZShwdHlwZTQsIDQpKTsKICAgICB9CiAgICAgZWxzZSBpZiAoSXNWZWNU
eXBlKHJ2YWx1ZSkgfHwgSXNWZWNUeXBlKHB0eXBlMSkgfHwgSXNWZWNUeXBlKHB0eXBlMikgfHwg
SXNWZWNUeXBlKHB0eXBlMykpCiAgICAgewogICAgICAgICBBU1NFUlQoIXB0eXBlNCAmJiAhcHR5
cGU1KTsKLSAgICAgICAgaW5zZXJ0VW5tYW5nbGVkQnVpbHRJbihuYW1lKTsKLSAgICAgICAgaW5z
ZXJ0QnVpbHRJbihsZXZlbCwgb3AsIGV4dCwgVmVjdG9yVHlwZShydmFsdWUsIDIpLCBuYW1lLCBW
ZWN0b3JUeXBlKHB0eXBlMSwgMiksIFZlY3RvclR5cGUocHR5cGUyLCAyKSwgVmVjdG9yVHlwZShw
dHlwZTMsIDIpKTsKLSAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgb3AsIGV4dCwgVmVjdG9y
VHlwZShydmFsdWUsIDMpLCBuYW1lLCBWZWN0b3JUeXBlKHB0eXBlMSwgMyksIFZlY3RvclR5cGUo
cHR5cGUyLCAzKSwgVmVjdG9yVHlwZShwdHlwZTMsIDMpKTsKLSAgICAgICAgaW5zZXJ0QnVpbHRJ
bihsZXZlbCwgb3AsIGV4dCwgVmVjdG9yVHlwZShydmFsdWUsIDQpLCBuYW1lLCBWZWN0b3JUeXBl
KHB0eXBlMSwgNCksIFZlY3RvclR5cGUocHR5cGUyLCA0KSwgVmVjdG9yVHlwZShwdHlwZTMsIDQp
KTsKKyAgICAgICAgaW5zZXJ0VW5tYW5nbGVkQnVpbHRJbk5hbWUobmFtZSwgbGV2ZWwpOworICAg
ICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBvcCwgZXh0LCBWZWN0b3JUeXBlKHJ2YWx1ZSwgMiks
IG5hbWUsIFZlY3RvclR5cGUocHR5cGUxLCAyKSwKKyAgICAgICAgICAgICAgICAgICAgICBWZWN0
b3JUeXBlKHB0eXBlMiwgMiksIFZlY3RvclR5cGUocHR5cGUzLCAyKSk7CisgICAgICAgIGluc2Vy
dEJ1aWx0SW4obGV2ZWwsIG9wLCBleHQsIFZlY3RvclR5cGUocnZhbHVlLCAzKSwgbmFtZSwgVmVj
dG9yVHlwZShwdHlwZTEsIDMpLAorICAgICAgICAgICAgICAgICAgICAgIFZlY3RvclR5cGUocHR5
cGUyLCAzKSwgVmVjdG9yVHlwZShwdHlwZTMsIDMpKTsKKyAgICAgICAgaW5zZXJ0QnVpbHRJbihs
ZXZlbCwgb3AsIGV4dCwgVmVjdG9yVHlwZShydmFsdWUsIDQpLCBuYW1lLCBWZWN0b3JUeXBlKHB0
eXBlMSwgNCksCisgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yVHlwZShwdHlwZTIsIDQpLCBW
ZWN0b3JUeXBlKHB0eXBlMywgNCkpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMjkyLDEx
ICs0MjUsNTAgQEAgdm9pZCBUU3ltYm9sVGFibGU6Omluc2VydEJ1aWx0SW4oRVN5bWJvbExldmVs
IGxldmVsLCBUT3BlcmF0b3Igb3AsIGNvbnN0IGNoYXIgKmUKICAgICAgICAgICAgIGZ1bmN0aW9u
LT5hZGRQYXJhbWV0ZXIoVENvbnN0UGFyYW1ldGVyKHB0eXBlNSkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgQVNTRVJUKGhhc1VubWFuZ2xlZEJ1aWx0SW4obmFtZSkpOworICAgICAgICBBU1NFUlQo
aGFzVW5tYW5nbGVkQnVpbHRJbkF0TGV2ZWwobmFtZSwgbGV2ZWwpKTsKICAgICAgICAgaW5zZXJ0
KGxldmVsLCBmdW5jdGlvbik7CiAgICAgfQogfQogCit2b2lkIFRTeW1ib2xUYWJsZTo6aW5zZXJ0
QnVpbHRJbk9wKEVTeW1ib2xMZXZlbCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVE9wZXJhdG9yIG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUVHlwZSAqcnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUVHlwZSAqcHR5cGUxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUVHlwZSAqcHR5cGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUVHlwZSAqcHR5cGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUVHlwZSAqcHR5cGU0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUVHlwZSAqcHR5cGU1KQoreworICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBHZXRPcGVy
YXRvclN0cmluZyhvcCk7CisgICAgQVNTRVJUKHN0cmxlbihuYW1lKSA+IDApOworICAgIGluc2Vy
dFVubWFuZ2xlZEJ1aWx0SW5OYW1lKG5hbWUsIGxldmVsKTsKKyAgICBpbnNlcnRCdWlsdEluKGxl
dmVsLCBvcCwgIiIsIHJ2YWx1ZSwgbmFtZSwgcHR5cGUxLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0
LCBwdHlwZTUpOworfQorCit2b2lkIFRTeW1ib2xUYWJsZTo6aW5zZXJ0QnVpbHRJbk9wKEVTeW1i
b2xMZXZlbCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE9wZXJh
dG9yIG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpydmFs
dWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwdHlw
ZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwdHlw
ZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwdHlw
ZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwdHlw
ZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwdHlw
ZTUpCit7CisgICAgY29uc3QgY2hhciAqbmFtZSA9IEdldE9wZXJhdG9yU3RyaW5nKG9wKTsKKyAg
ICBpbnNlcnRVbm1hbmdsZWRCdWlsdEluTmFtZShuYW1lLCBsZXZlbCk7CisgICAgaW5zZXJ0QnVp
bHRJbihsZXZlbCwgb3AsIGV4dCwgcnZhbHVlLCBuYW1lLCBwdHlwZTEsIHB0eXBlMiwgcHR5cGUz
LCBwdHlwZTQsIHB0eXBlNSk7Cit9CisKK3ZvaWQgVFN5bWJvbFRhYmxlOjppbnNlcnRCdWlsdElu
RnVuY3Rpb25Ob1BhcmFtZXRlcnMoRVN5bWJvbExldmVsIGxldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUT3BlcmF0b3Igb3AsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRU
eXBlICpydmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgaW5zZXJ0VW5tYW5nbGVkQnVpbHRJ
bk5hbWUobmFtZSwgbGV2ZWwpOworICAgIGluc2VydChsZXZlbCwgbmV3IFRGdW5jdGlvbihOZXdQ
b29sVFN0cmluZyhuYW1lKSwgcnZhbHVlLCBvcCkpOworfQorCiBUUHJlY2lzaW9uIFRTeW1ib2xU
YWJsZTo6Z2V0RGVmYXVsdFByZWNpc2lvbihUQmFzaWNUeXBlIHR5cGUpIGNvbnN0CiB7CiAgICAg
aWYgKCFTdXBwb3J0c1ByZWNpc2lvbih0eXBlKSkKQEAgLTMwNiw3ICs0NzgsNyBAQCBUUHJlY2lz
aW9uIFRTeW1ib2xUYWJsZTo6Z2V0RGVmYXVsdFByZWNpc2lvbihUQmFzaWNUeXBlIHR5cGUpIGNv
bnN0CiAgICAgVEJhc2ljVHlwZSBiYXNlVHlwZSA9ICh0eXBlID09IEVidFVJbnQpID8gRWJ0SW50
IDogdHlwZTsKIAogICAgIGludCBsZXZlbCA9IHN0YXRpY19jYXN0PGludD4ocHJlY2lzaW9uU3Rh
Y2suc2l6ZSgpKSAtIDE7Ci0gICAgYXNzZXJ0KGxldmVsID49IDApOyAvLyBKdXN0IHRvIGJlIHNh
ZmUuIFNob3VsZCBub3QgaGFwcGVuLgorICAgIGFzc2VydChsZXZlbCA+PSAwKTsgIC8vIEp1c3Qg
dG8gYmUgc2FmZS4gU2hvdWxkIG5vdCBoYXBwZW4uCiAgICAgLy8gSWYgd2UgZG9udCBmaW5kIGFu
eXRoaW5nIHdlIHJldHVybiB0aGlzLiBTb21lIHR5cGVzIGRvbid0IGhhdmUgcHJlZGVmaW5lZCBk
ZWZhdWx0IHByZWNpc2lvbi4KICAgICBUUHJlY2lzaW9uIHByZWMgPSBFYnBVbmRlZmluZWQ7CiAg
ICAgd2hpbGUgKGxldmVsID49IDApCkBAIC0zMjEsMyArNDkzLDQ0IEBAIFRQcmVjaXNpb24gVFN5
bWJvbFRhYmxlOjpnZXREZWZhdWx0UHJlY2lzaW9uKFRCYXNpY1R5cGUgdHlwZSkgY29uc3QKICAg
ICB9CiAgICAgcmV0dXJuIHByZWM7CiB9CisKK3ZvaWQgVFN5bWJvbFRhYmxlOjppbnNlcnRVbm1h
bmdsZWRCdWlsdEluTmFtZShjb25zdCBjaGFyICpuYW1lLCBFU3ltYm9sTGV2ZWwgbGV2ZWwpCit7
CisgICAgQVNTRVJUKGxldmVsID49IDAgJiYgbGV2ZWwgPCBzdGF0aWNfY2FzdDxFU3ltYm9sTGV2
ZWw+KHRhYmxlLnNpemUoKSkpOworICAgIHRhYmxlW2xldmVsXS0+aW5zZXJ0VW5tYW5nbGVkQnVp
bHRJbk5hbWUoc3RkOjpzdHJpbmcobmFtZSkpOworfQorCitib29sIFRTeW1ib2xUYWJsZTo6aGFz
VW5tYW5nbGVkQnVpbHRJbkF0TGV2ZWwoY29uc3QgY2hhciAqbmFtZSwgRVN5bWJvbExldmVsIGxl
dmVsKQoreworICAgIEFTU0VSVChsZXZlbCA+PSAwICYmIGxldmVsIDwgc3RhdGljX2Nhc3Q8RVN5
bWJvbExldmVsPih0YWJsZS5zaXplKCkpKTsKKyAgICByZXR1cm4gdGFibGVbbGV2ZWxdLT5oYXNV
bm1hbmdsZWRCdWlsdEluKHN0ZDo6c3RyaW5nKG5hbWUpKTsKK30KKworYm9vbCBUU3ltYm9sVGFi
bGU6Omhhc1VubWFuZ2xlZEJ1aWx0SW5Gb3JTaGFkZXJWZXJzaW9uKGNvbnN0IGNoYXIgKm5hbWUs
IGludCBzaGFkZXJWZXJzaW9uKQoreworICAgIEFTU0VSVChzdGF0aWNfY2FzdDxFU3ltYm9sTGV2
ZWw+KHRhYmxlLnNpemUoKSkgPiBMQVNUX0JVSUxUSU5fTEVWRUwpOworCisgICAgZm9yIChpbnQg
bGV2ZWwgPSBMQVNUX0JVSUxUSU5fTEVWRUw7IGxldmVsID49IDA7IC0tbGV2ZWwpCisgICAgewor
ICAgICAgICBpZiAobGV2ZWwgPT0gRVNTTDNfMV9CVUlMVElOUyAmJiBzaGFkZXJWZXJzaW9uICE9
IDMxMCkKKyAgICAgICAgeworICAgICAgICAgICAgLS1sZXZlbDsKKyAgICAgICAgfQorICAgICAg
ICBpZiAobGV2ZWwgPT0gRVNTTDNfQlVJTFRJTlMgJiYgc2hhZGVyVmVyc2lvbiA8IDMwMCkKKyAg
ICAgICAgeworICAgICAgICAgICAgLS1sZXZlbDsKKyAgICAgICAgfQorICAgICAgICBpZiAobGV2
ZWwgPT0gRVNTTDFfQlVJTFRJTlMgJiYgc2hhZGVyVmVyc2lvbiAhPSAxMDApCisgICAgICAgIHsK
KyAgICAgICAgICAgIC0tbGV2ZWw7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGFibGVbbGV2
ZWxdLT5oYXNVbm1hbmdsZWRCdWlsdEluKG5hbWUpKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30g
IC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFibGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmgKaW5kZXggNTFhODJmNzI0
Y2EwNjc0ODU4ZGRhOGIxNDkyYWRiMDkwMzkxMTk2Ny4uYzM0ODk0MzE0YjYwNzhiNDc4NDdmMDk1
MGUyNDdhNDI3OTcwY2UwYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFibGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oCkBAIC0xOCw3ICsx
OCw3IEBACiAvLyAgIHNvIHRoYXQgc3ltYm9sIHRhYmxlIGxvb2t1cHMgYXJlIG5ldmVyIGFtYmln
dW91cy4gIFRoaXMgYWxsb3dzCiAvLyAgIGEgc2ltcGxlciBzeW1ib2wgdGFibGUgc3RydWN0dXJl
LgogLy8KLS8vICogUHVzaGluZyBhbmQgcG9wcGluZyBvZiBzY29wZSwgc28gc3ltYm9sIHRhYmxl
IHdpbGwgcmVhbGx5IGJlIGEgc3RhY2sgCisvLyAqIFB1c2hpbmcgYW5kIHBvcHBpbmcgb2Ygc2Nv
cGUsIHNvIHN5bWJvbCB0YWJsZSB3aWxsIHJlYWxseSBiZSBhIHN0YWNrCiAvLyAgIG9mIHN5bWJv
bCB0YWJsZXMuICBTZWFyY2hlZCBmcm9tIHRoZSB0b3AsIHdpdGggbmV3IGluc2VydHMgZ29pbmcg
aW50bwogLy8gICB0aGUgdG9wLgogLy8KQEAgLTM4LDYgKzM4LDI1IEBACiAjaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci9JbmZvU2luay5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvSW50ZXJtTm9kZS5oIgogCituYW1lc3BhY2Ugc2gKK3sKKworLy8gRW5jYXBzdWxhdGVzIGEg
dW5pcXVlIGlkIGZvciBhIHN5bWJvbC4KK2NsYXNzIFRTeW1ib2xVbmlxdWVJZAoreworICBwdWJs
aWM6CisgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURSgpOworICAgIFRTeW1ib2xVbmlxdWVJ
ZCgpOworICAgIFRTeW1ib2xVbmlxdWVJZChjb25zdCBUU3ltYm9sICZzeW1ib2wpOworICAgIFRT
eW1ib2xVbmlxdWVJZChjb25zdCBUU3ltYm9sVW5pcXVlSWQgJikgPSBkZWZhdWx0OworICAgIFRT
eW1ib2xVbmlxdWVJZCAmb3BlcmF0b3I9KGNvbnN0IFRTeW1ib2xVbmlxdWVJZCAmKSA9IGRlZmF1
bHQ7CisKKyAgICBpbnQgZ2V0KCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBpbnQgbUlkOwor
fTsKKwogLy8gU3ltYm9sIGJhc2UgY2xhc3MuIChDYW4gYnVpbGQgZnVuY3Rpb25zIG9yIHZhcmlh
YmxlcyBvdXQgb2YgdGhlc2UuLi4pCiBjbGFzcyBUU3ltYm9sIDogYW5nbGU6Ok5vbkNvcHlhYmxl
CiB7CkBAIC01MCwzNCArNjksMTMgQEAgY2xhc3MgVFN5bWJvbCA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQogICAgICAgICAvLyBkb24ndCBkZWxldGUgbmFtZSwgaXQncyBmcm9tIHRoZSBwb29sCiAgICAg
fQogCi0gICAgY29uc3QgVFN0cmluZyAmZ2V0TmFtZSgpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gKm5hbWU7Ci0gICAgfQotICAgIHZpcnR1YWwgY29uc3QgVFN0cmluZyAmZ2V0TWFuZ2xl
ZE5hbWUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGdldE5hbWUoKTsKLSAgICB9Ci0g
ICAgdmlydHVhbCBib29sIGlzRnVuY3Rpb24oKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNWYXJpYWJsZSgpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGludCBnZXRVbmlxdWVJZCgpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdW5pcXVlSWQ7Ci0gICAgfQotICAgIHZvaWQgcmVs
YXRlVG9FeHRlbnNpb24oY29uc3QgVFN0cmluZyAmZXh0KQotICAgIHsKLSAgICAgICAgZXh0ZW5z
aW9uID0gZXh0OwotICAgIH0KLSAgICBjb25zdCBUU3RyaW5nICZnZXRFeHRlbnNpb24oKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIGV4dGVuc2lvbjsKLSAgICB9CisgICAgY29uc3QgVFN0
cmluZyAmZ2V0TmFtZSgpIGNvbnN0IHsgcmV0dXJuICpuYW1lOyB9CisgICAgdmlydHVhbCBjb25z
dCBUU3RyaW5nICZnZXRNYW5nbGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIGdldE5hbWUoKTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNWYXJpYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
aW50IGdldFVuaXF1ZUlkKCkgY29uc3QgeyByZXR1cm4gdW5pcXVlSWQ7IH0KKyAgICB2b2lkIHJl
bGF0ZVRvRXh0ZW5zaW9uKGNvbnN0IFRTdHJpbmcgJmV4dCkgeyBleHRlbnNpb24gPSBleHQ7IH0K
KyAgICBjb25zdCBUU3RyaW5nICZnZXRFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBleHRlbnNp
b247IH0KIAogICBwcml2YXRlOgogICAgIGNvbnN0IGludCB1bmlxdWVJZDsKQEAgLTg2LDQxICs4
NCwyNiBAQCBjbGFzcyBUU3ltYm9sIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB9OwogCiAvLyBWYXJp
YWJsZSBjbGFzcywgbWVhbmluZyBhIHN5bWJvbCB0aGF0J3Mgbm90IGEgZnVuY3Rpb24uCi0vLyAK
Ky8vCiAvLyBUaGVyZSBjb3VsZCBiZSBhIHNlcGFyYXRlIGNsYXNzIGhlaXJhcmNoeSBmb3IgQ29u
c3RhbnQgdmFyaWFibGVzOwogLy8gT25seSBvbmUgb2YgaW50LCBib29sLCBvciBmbG9hdCwgKG9y
IG5vbmUpIGlzIGNvcnJlY3QgZm9yCiAvLyBhbnkgcGFydGljdWxhciB1c2UsIGJ1dCBpdCdzIGVh
c3kgdG8gZG8gdGhpcyB3YXksIGFuZCBkb2Vzbid0CiAvLyBzZWVtIHdvcnRoIGhhdmluZyBzZXBh
cmF0ZSBjbGFzc2VzLCBhbmQgImdldENvbnN0IiBjYW4ndCBzaW1wbHkgcmV0dXJuCi0vLyBkaWZm
ZXJlbnQgdmFsdWVzIGZvciBkaWZmZXJlbnQgdHlwZXMgcG9seW1vcnBoaWNhbGx5LCBzbyB0aGlz
IGlzIAorLy8gZGlmZmVyZW50IHZhbHVlcyBmb3IgZGlmZmVyZW50IHR5cGVzIHBvbHltb3JwaGlj
YWxseSwgc28gdGhpcyBpcwogLy8ganVzdCBzaW1wbGUgYW5kIHByYWdtYXRpYy4KIGNsYXNzIFRW
YXJpYWJsZSA6IHB1YmxpYyBUU3ltYm9sCiB7CiAgIHB1YmxpYzoKICAgICBUVmFyaWFibGUoY29u
c3QgVFN0cmluZyAqbmFtZSwgY29uc3QgVFR5cGUgJnQsIGJvb2wgdVQgPSBmYWxzZSkKLSAgICAg
ICAgOiBUU3ltYm9sKG5hbWUpLAotICAgICAgICAgIHR5cGUodCksCi0gICAgICAgICAgdXNlclR5
cGUodVQpLAotICAgICAgICAgIHVuaW9uQXJyYXkoMCkKKyAgICAgICAgOiBUU3ltYm9sKG5hbWUp
LCB0eXBlKHQpLCB1c2VyVHlwZSh1VCksIHVuaW9uQXJyYXkoMCkKICAgICB7CiAgICAgfQogICAg
IH5UVmFyaWFibGUoKSBvdmVycmlkZSB7fQogICAgIGJvb2wgaXNWYXJpYWJsZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICBUVHlwZSAmZ2V0VHlwZSgpCi0gICAgewotICAg
ICAgICByZXR1cm4gdHlwZTsKLSAgICB9Ci0gICAgY29uc3QgVFR5cGUgJmdldFR5cGUoKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGU7Ci0gICAgfQotICAgIGJvb2wgaXNVc2VyVHlw
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdXNlclR5cGU7Ci0gICAgfQotICAgIHZv
aWQgc2V0UXVhbGlmaWVyKFRRdWFsaWZpZXIgcXVhbGlmaWVyKQotICAgIHsKLSAgICAgICAgdHlw
ZS5zZXRRdWFsaWZpZXIocXVhbGlmaWVyKTsKLSAgICB9CisgICAgVFR5cGUgJmdldFR5cGUoKSB7
IHJldHVybiB0eXBlOyB9CisgICAgY29uc3QgVFR5cGUgJmdldFR5cGUoKSBjb25zdCB7IHJldHVy
biB0eXBlOyB9CisgICAgYm9vbCBpc1VzZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gdXNlclR5cGU7
IH0KKyAgICB2b2lkIHNldFF1YWxpZmllcihUUXVhbGlmaWVyIHF1YWxpZmllcikgeyB0eXBlLnNl
dFF1YWxpZmllcihxdWFsaWZpZXIpOyB9CiAKICAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAqZ2V0
Q29uc3RQb2ludGVyKCkgY29uc3QgeyByZXR1cm4gdW5pb25BcnJheTsgfQogCkBAIC0xMzcsMjkg
KzEyMCwxMyBAQCBjbGFzcyBUVmFyaWFibGUgOiBwdWJsaWMgVFN5bWJvbAogLy8gSW1tdXRhYmxl
IHZlcnNpb24gb2YgVFBhcmFtZXRlci4KIHN0cnVjdCBUQ29uc3RQYXJhbWV0ZXIKIHsKLSAgICBU
Q29uc3RQYXJhbWV0ZXIoKQotICAgICAgICA6IG5hbWUobnVsbHB0ciksCi0gICAgICAgICAgdHlw
ZShudWxscHRyKQotICAgIHsKLSAgICB9Ci0gICAgZXhwbGljaXQgVENvbnN0UGFyYW1ldGVyKGNv
bnN0IFRTdHJpbmcgKm4pCi0gICAgICAgIDogbmFtZShuKSwKLSAgICAgICAgICB0eXBlKG51bGxw
dHIpCi0gICAgewotICAgIH0KLSAgICBleHBsaWNpdCBUQ29uc3RQYXJhbWV0ZXIoY29uc3QgVFR5
cGUgKnQpCi0gICAgICAgIDogbmFtZShudWxscHRyKSwKLSAgICAgICAgICB0eXBlKHQpCi0gICAg
ewotICAgIH0KLSAgICBUQ29uc3RQYXJhbWV0ZXIoY29uc3QgVFN0cmluZyAqbiwgY29uc3QgVFR5
cGUgKnQpCi0gICAgICAgIDogbmFtZShuKSwKLSAgICAgICAgICB0eXBlKHQpCi0gICAgewotICAg
IH0KKyAgICBUQ29uc3RQYXJhbWV0ZXIoKSA6IG5hbWUobnVsbHB0ciksIHR5cGUobnVsbHB0cikg
e30KKyAgICBleHBsaWNpdCBUQ29uc3RQYXJhbWV0ZXIoY29uc3QgVFN0cmluZyAqbikgOiBuYW1l
KG4pLCB0eXBlKG51bGxwdHIpIHt9CisgICAgZXhwbGljaXQgVENvbnN0UGFyYW1ldGVyKGNvbnN0
IFRUeXBlICp0KSA6IG5hbWUobnVsbHB0ciksIHR5cGUodCkge30KKyAgICBUQ29uc3RQYXJhbWV0
ZXIoY29uc3QgVFN0cmluZyAqbiwgY29uc3QgVFR5cGUgKnQpIDogbmFtZShuKSwgdHlwZSh0KSB7
fQogCiAgICAgLy8gQm90aCBjb25zdHJ1Y3RvciBhcmd1bWVudHMgbXVzdCBiZSBjb25zdC4KLSAg
ICBUQ29uc3RQYXJhbWV0ZXIoVFN0cmluZyAqbiwgVFR5cGUgKnQpID0gZGVsZXRlOworICAgIFRD
b25zdFBhcmFtZXRlcihUU3RyaW5nICpuLCBUVHlwZSAqdCkgICAgICAgPSBkZWxldGU7CiAgICAg
VENvbnN0UGFyYW1ldGVyKGNvbnN0IFRTdHJpbmcgKm4sIFRUeXBlICp0KSA9IGRlbGV0ZTsKICAg
ICBUQ29uc3RQYXJhbWV0ZXIoVFN0cmluZyAqbiwgY29uc3QgVFR5cGUgKnQpID0gZGVsZXRlOwog
CkBAIC0xNzcsOSArMTQ0LDkgQEAgc3RydWN0IFRQYXJhbWV0ZXIKICAgICBUQ29uc3RQYXJhbWV0
ZXIgdHVyblRvQ29uc3QoKQogICAgIHsKICAgICAgICAgY29uc3QgVFN0cmluZyAqY29uc3ROYW1l
ID0gbmFtZTsKLSAgICAgICAgY29uc3QgVFR5cGUgKmNvbnN0VHlwZSA9IHR5cGU7Ci0gICAgICAg
IG5hbWUgPSBudWxscHRyOwotICAgICAgICB0eXBlID0gbnVsbHB0cjsKKyAgICAgICAgY29uc3Qg
VFR5cGUgKmNvbnN0VHlwZSAgID0gdHlwZTsKKyAgICAgICAgbmFtZSAgICAgICAgICAgICAgICAg
ICAgID0gbnVsbHB0cjsKKyAgICAgICAgdHlwZSAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0
cjsKICAgICAgICAgcmV0dXJuIFRDb25zdFBhcmFtZXRlcihjb25zdE5hbWUsIGNvbnN0VHlwZSk7
CiAgICAgfQogCkBAIC0xODcsNyArMTU0LDcgQEAgc3RydWN0IFRQYXJhbWV0ZXIKICAgICBUVHlw
ZSAqdHlwZTsKIH07CiAKLS8vIFRoZSBmdW5jdGlvbiBzdWItY2xhc3Mgb2YgYSBzeW1ib2wuICAK
Ky8vIFRoZSBmdW5jdGlvbiBzdWItY2xhc3Mgb2YgYSBzeW1ib2wuCiBjbGFzcyBURnVuY3Rpb24g
OiBwdWJsaWMgVFN5bWJvbAogewogICBwdWJsaWM6CkBAIC0yMDcsMTUgKzE3NCw2IEBAIGNsYXNz
IFRGdW5jdGlvbiA6IHB1YmxpYyBUU3ltYm9sCiAgICAgflRGdW5jdGlvbigpIG92ZXJyaWRlOwog
ICAgIGJvb2wgaXNGdW5jdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAot
ICAgIHN0YXRpYyBUU3RyaW5nIG1hbmdsZU5hbWUoY29uc3QgVFN0cmluZyAmbmFtZSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBuYW1lICsgJygnOwotICAgIH0KLSAgICBzdGF0aWMgVFN0cmluZyB1
bm1hbmdsZU5hbWUoY29uc3QgVFN0cmluZyAmbWFuZ2xlZE5hbWUpCi0gICAgewotICAgICAgICBy
ZXR1cm4gVFN0cmluZyhtYW5nbGVkTmFtZS5jX3N0cigpLCBtYW5nbGVkTmFtZS5maW5kX2ZpcnN0
X29mKCcoJykpOwotICAgIH0KLQogICAgIHZvaWQgYWRkUGFyYW1ldGVyKGNvbnN0IFRDb25zdFBh
cmFtZXRlciAmcCkKICAgICB7CiAgICAgICAgIHBhcmFtZXRlcnMucHVzaF9iYWNrKHApOwpAQCAt
MjMyLDI5ICsxOTAsMjEgQEAgY2xhc3MgVEZ1bmN0aW9uIDogcHVibGljIFRTeW1ib2wKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gKm1hbmdsZWROYW1lOwogICAgIH0KLSAgICBjb25zdCBUVHlw
ZSAmZ2V0UmV0dXJuVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKnJldHVyblR5
cGU7Ci0gICAgfQogCi0gICAgVE9wZXJhdG9yIGdldEJ1aWx0SW5PcCgpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gb3A7Ci0gICAgfQorICAgIHN0YXRpYyBjb25zdCBUU3RyaW5nICZHZXRN
YW5nbGVkTmFtZUZyb21DYWxsKGNvbnN0IFRTdHJpbmcgJmZ1bmN0aW9uTmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUSW50ZXJtU2Vx
dWVuY2UgJmFyZ3VtZW50cyk7CisKKyAgICBjb25zdCBUVHlwZSAmZ2V0UmV0dXJuVHlwZSgpIGNv
bnN0IHsgcmV0dXJuICpyZXR1cm5UeXBlOyB9CisKKyAgICBUT3BlcmF0b3IgZ2V0QnVpbHRJbk9w
KCkgY29uc3QgeyByZXR1cm4gb3A7IH0KIAogICAgIHZvaWQgc2V0RGVmaW5lZCgpIHsgZGVmaW5l
ZCA9IHRydWU7IH0KICAgICBib29sIGlzRGVmaW5lZCgpIHsgcmV0dXJuIGRlZmluZWQ7IH0KICAg
ICB2b2lkIHNldEhhc1Byb3RvdHlwZURlY2xhcmF0aW9uKCkgeyBtSGFzUHJvdG90eXBlRGVjbGFy
YXRpb24gPSB0cnVlOyB9CiAgICAgYm9vbCBoYXNQcm90b3R5cGVEZWNsYXJhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1IYXNQcm90b3R5cGVEZWNsYXJhdGlvbjsgfQogCi0gICAgc2l6ZV90IGdldFBh
cmFtQ291bnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnMuc2l6ZSgp
OwotICAgIH0KLSAgICBjb25zdCBUQ29uc3RQYXJhbWV0ZXIgJmdldFBhcmFtKHNpemVfdCBpKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnNbaV07Ci0gICAgfQorICAgIHNp
emVfdCBnZXRQYXJhbUNvdW50KCkgY29uc3QgeyByZXR1cm4gcGFyYW1ldGVycy5zaXplKCk7IH0K
KyAgICBjb25zdCBUQ29uc3RQYXJhbWV0ZXIgJmdldFBhcmFtKHNpemVfdCBpKSBjb25zdCB7IHJl
dHVybiBwYXJhbWV0ZXJzW2ldOyB9CiAKICAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyUGFyYW1l
dGVycygpOwpAQCAtMjc0LDE0ICsyMjQsOSBAQCBjbGFzcyBURnVuY3Rpb24gOiBwdWJsaWMgVFN5
bWJvbAogY2xhc3MgVEludGVyZmFjZUJsb2NrTmFtZSA6IHB1YmxpYyBUU3ltYm9sCiB7CiAgIHB1
YmxpYzoKLSAgICBUSW50ZXJmYWNlQmxvY2tOYW1lKGNvbnN0IFRTdHJpbmcgKm5hbWUpCi0gICAg
ICAgIDogVFN5bWJvbChuYW1lKQotICAgIHsKLSAgICB9CisgICAgVEludGVyZmFjZUJsb2NrTmFt
ZShjb25zdCBUU3RyaW5nICpuYW1lKSA6IFRTeW1ib2wobmFtZSkge30KIAotICAgIHZpcnR1YWwg
flRJbnRlcmZhY2VCbG9ja05hbWUoKQotICAgIHsKLSAgICB9CisgICAgdmlydHVhbCB+VEludGVy
ZmFjZUJsb2NrTmFtZSgpIHt9CiB9OwogCiBjbGFzcyBUU3ltYm9sVGFibGVMZXZlbApAQCAtMjky
LDEwICsyMzcsNyBAQCBjbGFzcyBUU3ltYm9sVGFibGVMZXZlbAogICAgIHR5cGVkZWYgY29uc3Qg
dExldmVsOjp2YWx1ZV90eXBlIHRMZXZlbFBhaXI7CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8dExl
dmVsOjppdGVyYXRvciwgYm9vbD4gdEluc2VydFJlc3VsdDsKIAotICAgIFRTeW1ib2xUYWJsZUxl
dmVsKCkKLSAgICAgICAgOiBtR2xvYmFsSW52YXJpYW50KGZhbHNlKQotICAgIHsKLSAgICB9Cisg
ICAgVFN5bWJvbFRhYmxlTGV2ZWwoKSA6IG1HbG9iYWxJbnZhcmlhbnQoZmFsc2UpIHt9CiAgICAg
flRTeW1ib2xUYWJsZUxldmVsKCk7CiAKICAgICBib29sIGluc2VydChUU3ltYm9sICpzeW1ib2wp
OwpAQCAtMzA1LDEwICsyNDcsNyBAQCBjbGFzcyBUU3ltYm9sVGFibGVMZXZlbAogCiAgICAgVFN5
bWJvbCAqZmluZChjb25zdCBUU3RyaW5nICZuYW1lKSBjb25zdDsKIAotICAgIHZvaWQgYWRkSW52
YXJpYW50VmFyeWluZyhjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkKLSAgICB7Ci0gICAgICAgIG1J
bnZhcmlhbnRWYXJ5aW5ncy5pbnNlcnQobmFtZSk7Ci0gICAgfQorICAgIHZvaWQgYWRkSW52YXJp
YW50VmFyeWluZyhjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgeyBtSW52YXJpYW50VmFyeWluZ3Mu
aW5zZXJ0KG5hbWUpOyB9CiAKICAgICBib29sIGlzVmFyeWluZ0ludmFyaWFudChjb25zdCBzdGQ6
OnN0cmluZyAmbmFtZSkKICAgICB7CkBAIC0zMTcsMTkgKzI1NiwzMiBAQCBjbGFzcyBUU3ltYm9s
VGFibGVMZXZlbAogCiAgICAgdm9pZCBzZXRHbG9iYWxJbnZhcmlhbnQoYm9vbCBpbnZhcmlhbnQp
IHsgbUdsb2JhbEludmFyaWFudCA9IGludmFyaWFudDsgfQogCisgICAgdm9pZCBpbnNlcnRVbm1h
bmdsZWRCdWlsdEluTmFtZShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkKKyAgICB7CisgICAgICAg
IG1Vbm1hbmdsZWRCdWlsdEluTmFtZXMuaW5zZXJ0KG5hbWUpOworICAgIH0KKworICAgIGJvb2wg
aGFzVW5tYW5nbGVkQnVpbHRJbihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBtVW5tYW5nbGVkQnVpbHRJbk5hbWVzLmNvdW50KG5hbWUpID4gMDsKKyAgICB9
CisKICAgcHJvdGVjdGVkOgogICAgIHRMZXZlbCBsZXZlbDsKICAgICBzdGQ6OnNldDxzdGQ6OnN0
cmluZz4gbUludmFyaWFudFZhcnlpbmdzOwogICAgIGJvb2wgbUdsb2JhbEludmFyaWFudDsKKwor
ICBwcml2YXRlOgorICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtVW5tYW5nbGVkQnVpbHRJbk5h
bWVzOwogfTsKIAogLy8gRGVmaW5lIEVTeW1ib2xMZXZlbCBhcyBpbnQgcmF0aGVyIHRoYW4gYW4g
ZW51bSBzaW5jZSBsZXZlbCBjYW4gZ28KIC8vIGFib3ZlIEdMT0JBTF9MRVZFTCBhbmQgY2F1c2Ug
YXRCdWlsdEluTGV2ZWwoKSB0byBmYWlsIGlmIHRoZQogLy8gY29tcGlsZXIgb3B0aW1pemVzIHRo
ZSA+PSBvZiB0aGUgbGFzdCBlbGVtZW50IHRvID09LgogdHlwZWRlZiBpbnQgRVN5bWJvbExldmVs
OwotY29uc3QgaW50IENPTU1PTl9CVUlMVElOUyA9IDA7Ci1jb25zdCBpbnQgRVNTTDFfQlVJTFRJ
TlMgPSAxOwotY29uc3QgaW50IEVTU0wzX0JVSUxUSU5TID0gMjsKK2NvbnN0IGludCBDT01NT05f
QlVJTFRJTlMgICAgPSAwOworY29uc3QgaW50IEVTU0wxX0JVSUxUSU5TICAgICA9IDE7Citjb25z
dCBpbnQgRVNTTDNfQlVJTFRJTlMgICAgID0gMjsKIGNvbnN0IGludCBFU1NMM18xX0JVSUxUSU5T
ICAgPSAzOwogY29uc3QgaW50IExBU1RfQlVJTFRJTl9MRVZFTCA9IEVTU0wzXzFfQlVJTFRJTlM7
CiBjb25zdCBpbnQgR0xPQkFMX0xFVkVMICAgICAgID0gNDsKQEAgLTM0OSwxOCArMzAxLDkgQEAg
Y2xhc3MgVFN5bWJvbFRhYmxlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgLy8gV2hlbiB0aGUg
c3ltYm9sIHRhYmxlIGlzIGluaXRpYWxpemVkIHdpdGggdGhlIGJ1aWx0LWlucywgdGhlcmUgc2hv
dWxkCiAgICAgLy8gJ3B1c2gnIGNhbGxzLCBzbyB0aGF0IGJ1aWx0LWlucyBhcmUgYXQgbGV2ZWwg
MCBhbmQgdGhlIHNoYWRlcgogICAgIC8vIGdsb2JhbHMgYXJlIGF0IGxldmVsIDEuCi0gICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZS5lbXB0eSgpOwot
ICAgIH0KLSAgICBib29sIGF0QnVpbHRJbkxldmVsKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBjdXJyZW50TGV2ZWwoKSA8PSBMQVNUX0JVSUxUSU5fTEVWRUw7Ci0gICAgfQotICAgIGJv
b2wgYXRHbG9iYWxMZXZlbCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gY3VycmVudExl
dmVsKCkgPT0gR0xPQkFMX0xFVkVMOwotICAgIH0KKyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiB0YWJsZS5lbXB0eSgpOyB9CisgICAgYm9vbCBhdEJ1aWx0SW5MZXZlbCgpIGNvbnN0
IHsgcmV0dXJuIGN1cnJlbnRMZXZlbCgpIDw9IExBU1RfQlVJTFRJTl9MRVZFTDsgfQorICAgIGJv
b2wgYXRHbG9iYWxMZXZlbCgpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRMZXZlbCgpID09IEdMT0JB
TF9MRVZFTDsgfQogICAgIHZvaWQgcHVzaCgpCiAgICAgewogICAgICAgICB0YWJsZS5wdXNoX2Jh
Y2sobmV3IFRTeW1ib2xUYWJsZUxldmVsKTsKQEAgLTM3NiwxNSArMzE5LDkgQEAgY2xhc3MgVFN5
bWJvbFRhYmxlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgIHByZWNpc2lvblN0YWNrLnBv
cF9iYWNrKCk7CiAgICAgfQogCi0gICAgYm9vbCBkZWNsYXJlKFRTeW1ib2wgKnN5bWJvbCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBpbnNlcnQoY3VycmVudExldmVsKCksIHN5bWJvbCk7Ci0gICAg
fQorICAgIGJvb2wgZGVjbGFyZShUU3ltYm9sICpzeW1ib2wpIHsgcmV0dXJuIGluc2VydChjdXJy
ZW50TGV2ZWwoKSwgc3ltYm9sKTsgfQogCi0gICAgYm9vbCBpbnNlcnQoRVN5bWJvbExldmVsIGxl
dmVsLCBUU3ltYm9sICpzeW1ib2wpCi0gICAgewotICAgICAgICByZXR1cm4gdGFibGVbbGV2ZWxd
LT5pbnNlcnQoc3ltYm9sKTsKLSAgICB9CisgICAgYm9vbCBpbnNlcnQoRVN5bWJvbExldmVsIGxl
dmVsLCBUU3ltYm9sICpzeW1ib2wpIHsgcmV0dXJuIHRhYmxlW2xldmVsXS0+aW5zZXJ0KHN5bWJv
bCk7IH0KIAogICAgIGJvb2wgaW5zZXJ0KEVTeW1ib2xMZXZlbCBsZXZlbCwgY29uc3QgY2hhciAq
ZXh0LCBUU3ltYm9sICpzeW1ib2wpCiAgICAgewpAQCAtNDMwLDM0ICszNjcsNzcgQEAgY2xhc3Mg
VFN5bWJvbFRhYmxlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgIHJldHVybiBpbnNlcnQo
bGV2ZWwsIGNvbnN0YW50SXZlYzMpOwogICAgIH0KIAotICAgIHZvaWQgaW5zZXJ0QnVpbHRJbihF
U3ltYm9sTGV2ZWwgbGV2ZWwsIFRPcGVyYXRvciBvcCwgY29uc3QgY2hhciAqZXh0LCBjb25zdCBU
VHlwZSAqcnZhbHVlLCBjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUVHlwZSAqcHR5cGUxLCBjb25zdCBUVHlwZSAqcHR5cGUyID0gMCwgY29uc3QgVFR5cGUg
KnB0eXBlMyA9IDAsIGNvbnN0IFRUeXBlICpwdHlwZTQgPSAwLCBjb25zdCBUVHlwZSAqcHR5cGU1
ID0gMCk7Ci0KLSAgICB2b2lkIGluc2VydEJ1aWx0SW4oRVN5bWJvbExldmVsIGxldmVsLCBjb25z
dCBUVHlwZSAqcnZhbHVlLCBjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUVHlwZSAqcHR5cGUxLCBjb25zdCBUVHlwZSAqcHR5cGUyID0gMCwgY29uc3QgVFR5
cGUgKnB0eXBlMyA9IDAsIGNvbnN0IFRUeXBlICpwdHlwZTQgPSAwLCBjb25zdCBUVHlwZSAqcHR5
cGU1ID0gMCkKLSAgICB7Ci0gICAgICAgIGluc2VydFVubWFuZ2xlZEJ1aWx0SW4obmFtZSk7Cisg
ICAgdm9pZCBpbnNlcnRCdWlsdEluKEVTeW1ib2xMZXZlbCBsZXZlbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgVE9wZXJhdG9yIG9wLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICpleHQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpydmFsdWUsCisgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRUeXBlICpwdHlwZTEsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRU
eXBlICpwdHlwZTIgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcHR5
cGUzID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnB0eXBlNCA9IDAs
CisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTUgPSAwKTsKKworICAg
IHZvaWQgaW5zZXJ0QnVpbHRJbihFU3ltYm9sTGV2ZWwgbGV2ZWwsCisgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRUeXBlICpydmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTEs
CisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTIgPSAwLAorICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcHR5cGUzID0gMCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFR5cGUgKnB0eXBlNCA9IDAsCisgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRUeXBlICpwdHlwZTUgPSAwKQorICAgIHsKKyAgICAgICAgaW5zZXJ0VW5tYW5nbGVk
QnVpbHRJbk5hbWUobmFtZSwgbGV2ZWwpOwogICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBF
T3BOdWxsLCAiIiwgcnZhbHVlLCBuYW1lLCBwdHlwZTEsIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQs
IHB0eXBlNSk7CiAgICAgfQogCi0gICAgdm9pZCBpbnNlcnRCdWlsdEluKEVTeW1ib2xMZXZlbCBs
ZXZlbCwgY29uc3QgY2hhciAqZXh0LCBjb25zdCBUVHlwZSAqcnZhbHVlLCBjb25zdCBjaGFyICpu
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcHR5cGUxLCBjb25zdCBU
VHlwZSAqcHR5cGUyID0gMCwgY29uc3QgVFR5cGUgKnB0eXBlMyA9IDAsIGNvbnN0IFRUeXBlICpw
dHlwZTQgPSAwLCBjb25zdCBUVHlwZSAqcHR5cGU1ID0gMCkKKyAgICB2b2lkIGluc2VydEJ1aWx0
SW4oRVN5bWJvbExldmVsIGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
ICpleHQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpydmFsdWUsCisgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRUeXBlICpwdHlwZTEsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRU
eXBlICpwdHlwZTIgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcHR5
cGUzID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnB0eXBlNCA9IDAs
CisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTUgPSAwKQogICAgIHsK
LSAgICAgICAgaW5zZXJ0VW5tYW5nbGVkQnVpbHRJbihuYW1lKTsKKyAgICAgICAgaW5zZXJ0VW5t
YW5nbGVkQnVpbHRJbk5hbWUobmFtZSwgbGV2ZWwpOwogICAgICAgICBpbnNlcnRCdWlsdEluKGxl
dmVsLCBFT3BOdWxsLCBleHQsIHJ2YWx1ZSwgbmFtZSwgcHR5cGUxLCBwdHlwZTIsIHB0eXBlMywg
cHR5cGU0LCBwdHlwZTUpOwogICAgIH0KIAotICAgIHZvaWQgaW5zZXJ0QnVpbHRJbihFU3ltYm9s
TGV2ZWwgbGV2ZWwsIFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUgKnJ2YWx1ZSwgY29uc3QgY2hh
ciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnB0eXBlMSwgY29u
c3QgVFR5cGUgKnB0eXBlMiA9IDAsIGNvbnN0IFRUeXBlICpwdHlwZTMgPSAwLCBjb25zdCBUVHlw
ZSAqcHR5cGU0ID0gMCwgY29uc3QgVFR5cGUgKnB0eXBlNSA9IDApCi0gICAgewotICAgICAgICBp
bnNlcnRVbm1hbmdsZWRCdWlsdEluKG5hbWUpOwotICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVs
LCBvcCwgIiIsIHJ2YWx1ZSwgbmFtZSwgcHR5cGUxLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBw
dHlwZTUpOwotICAgIH0KKyAgICB2b2lkIGluc2VydEJ1aWx0SW5PcChFU3ltYm9sTGV2ZWwgbGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgVE9wZXJhdG9yIG9wLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpydmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFR5cGUgKnB0eXBlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
VHlwZSAqcHR5cGUyID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAq
cHR5cGUzID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcHR5cGU0
ID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcHR5cGU1ID0gMCk7
CisKKyAgICB2b2lkIGluc2VydEJ1aWx0SW5PcChFU3ltYm9sTGV2ZWwgbGV2ZWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgVE9wZXJhdG9yIG9wLAorICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIgKmV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAq
cnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnB0eXBlMiA9IDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnB0eXBlMyA9IDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFR5cGUgKnB0eXBlNCA9IDAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFR5cGUgKnB0eXBlNSA9IDApOworCisgICAgdm9pZCBpbnNlcnRCdWlsdElu
RnVuY3Rpb25Ob1BhcmFtZXRlcnMoRVN5bWJvbExldmVsIGxldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcnZhbHVlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpOwor
CisgICAgVFN5bWJvbCAqZmluZChjb25zdCBUU3RyaW5nICZuYW1lLAorICAgICAgICAgICAgICAg
ICAgaW50IHNoYWRlclZlcnNpb24sCisgICAgICAgICAgICAgICAgICBib29sICpidWlsdEluICAg
PSBOVUxMLAorICAgICAgICAgICAgICAgICAgYm9vbCAqc2FtZVNjb3BlID0gTlVMTCkgY29uc3Q7
CisKKyAgICBUU3ltYm9sICpmaW5kR2xvYmFsKGNvbnN0IFRTdHJpbmcgJm5hbWUpIGNvbnN0Owog
Ci0gICAgVFN5bWJvbCAqZmluZChjb25zdCBUU3RyaW5nICZuYW1lLCBpbnQgc2hhZGVyVmVyc2lv
biwKLSAgICAgICAgICAgICAgICAgIGJvb2wgKmJ1aWx0SW4gPSBOVUxMLCBib29sICpzYW1lU2Nv
cGUgPSBOVUxMKSBjb25zdDsKICAgICBUU3ltYm9sICpmaW5kQnVpbHRJbihjb25zdCBUU3RyaW5n
ICZuYW1lLCBpbnQgc2hhZGVyVmVyc2lvbikgY29uc3Q7Ci0gICAgCisKICAgICBUU3ltYm9sVGFi
bGVMZXZlbCAqZ2V0T3V0ZXJMZXZlbCgpCiAgICAgewogICAgICAgICBhc3NlcnQoY3VycmVudExl
dmVsKCkgPj0gMSk7CkBAIC00NzMsNyArNDUzLDcgQEAgY2xhc3MgVFN5bWJvbFRhYmxlIDogYW5n
bGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFVJ
bnQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAvLyBFU1NMIDMuMDAuNCBzZWN0aW9uIDQu
NS40CiAgICAgICAgIGlmICh0eXBlLmlzQWdncmVnYXRlKCkpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7IC8vIE5vdCBhbGxvd2VkIHRvIHNldCBmb3IgYWdncmVnYXRlIHR5cGVzCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7ICAvLyBOb3QgYWxsb3dlZCB0byBzZXQgZm9yIGFnZ3JlZ2F0ZSB0
eXBlcwogICAgICAgICBpbnQgaW5kZXhPZkxhc3RFbGVtZW50ID0gc3RhdGljX2Nhc3Q8aW50Pihw
cmVjaXNpb25TdGFjay5zaXplKCkpIC0gMTsKICAgICAgICAgLy8gVXNlcyBtYXAgb3BlcmF0b3Ig
W10sIG92ZXJ3cml0ZXMgdGhlIGN1cnJlbnQgdmFsdWUKICAgICAgICAgKCpwcmVjaXNpb25TdGFj
a1tpbmRleE9mTGFzdEVsZW1lbnRdKVt0eXBlLmdldEJhc2ljVHlwZSgpXSA9IHByZWM7CkBAIC01
MDcsMzUgKzQ4NywyNyBAQCBjbGFzcyBUU3ltYm9sVGFibGUgOiBhbmdsZTo6Tm9uQ29weWFibGUK
ICAgICAgICAgdGFibGVbY3VycmVudExldmVsKCldLT5zZXRHbG9iYWxJbnZhcmlhbnQoaW52YXJp
YW50KTsKICAgICB9CiAKLSAgICBzdGF0aWMgaW50IG5leHRVbmlxdWVJZCgpCi0gICAgewotICAg
ICAgICByZXR1cm4gKyt1bmlxdWVJZENvdW50ZXI7Ci0gICAgfQorICAgIHN0YXRpYyBpbnQgbmV4
dFVuaXF1ZUlkKCkgeyByZXR1cm4gKyt1bmlxdWVJZENvdW50ZXI7IH0KIAotICAgIGJvb2wgaGFz
VW5tYW5nbGVkQnVpbHRJbihjb25zdCBjaGFyICpuYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1Vbm1hbmdsZWRCdWlsdGluTmFtZXMuY291bnQoc3RkOjpzdHJpbmcobmFtZSkpID4gMDsKLSAg
ICB9CisgICAgLy8gQ2hlY2tzIHdoZXRoZXIgdGhlcmUgaXMgYSBidWlsdC1pbiBhY2Nlc3NpYmxl
IGJ5IGEgc2hhZGVyIHdpdGggdGhlIHNwZWNpZmllZCB2ZXJzaW9uLgorICAgIGJvb2wgaGFzVW5t
YW5nbGVkQnVpbHRJbkZvclNoYWRlclZlcnNpb24oY29uc3QgY2hhciAqbmFtZSwgaW50IHNoYWRl
clZlcnNpb24pOwogCiAgIHByaXZhdGU6Ci0gICAgRVN5bWJvbExldmVsIGN1cnJlbnRMZXZlbCgp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RVN5bWJvbExldmVsPih0
YWJsZS5zaXplKCkgLSAxKTsKLSAgICB9CisgICAgRVN5bWJvbExldmVsIGN1cnJlbnRMZXZlbCgp
IGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVTeW1ib2xMZXZlbD4odGFibGUuc2l6ZSgpIC0g
MSk7IH0KIAotICAgIC8vIFVzZWQgdG8gaW5zZXJ0IHVubWFuZ2xlZCBmdW5jdGlvbnMgdG8gY2hl
Y2sgcmVkZWNsYXJhdGlvbiBvZiBidWlsdC1pbnMgaW4gRVNTTCAzLjAwLgotICAgIHZvaWQgaW5z
ZXJ0VW5tYW5nbGVkQnVpbHRJbihjb25zdCBjaGFyICpuYW1lKQotICAgIHsKLSAgICAgICAgbVVu
bWFuZ2xlZEJ1aWx0aW5OYW1lcy5pbnNlcnQoc3RkOjpzdHJpbmcobmFtZSkpOwotICAgIH0KKyAg
ICAvLyBVc2VkIHRvIGluc2VydCB1bm1hbmdsZWQgZnVuY3Rpb25zIHRvIGNoZWNrIHJlZGVjbGFy
YXRpb24gb2YgYnVpbHQtaW5zIGluIEVTU0wgMy4wMCBhbmQKKyAgICAvLyBhYm92ZS4KKyAgICB2
b2lkIGluc2VydFVubWFuZ2xlZEJ1aWx0SW5OYW1lKGNvbnN0IGNoYXIgKm5hbWUsIEVTeW1ib2xM
ZXZlbCBsZXZlbCk7CisKKyAgICBib29sIGhhc1VubWFuZ2xlZEJ1aWx0SW5BdExldmVsKGNvbnN0
IGNoYXIgKm5hbWUsIEVTeW1ib2xMZXZlbCBsZXZlbCk7CiAKICAgICBzdGQ6OnZlY3RvcjxUU3lt
Ym9sVGFibGVMZXZlbCAqPiB0YWJsZTsKICAgICB0eXBlZGVmIFRNYXA8VEJhc2ljVHlwZSwgVFBy
ZWNpc2lvbj4gUHJlY2lzaW9uU3RhY2tMZXZlbDsKLSAgICBzdGQ6OnZlY3RvcjwgUHJlY2lzaW9u
U3RhY2tMZXZlbCAqPiBwcmVjaXNpb25TdGFjazsKLQotICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5n
PiBtVW5tYW5nbGVkQnVpbHRpbk5hbWVzOworICAgIHN0ZDo6dmVjdG9yPFByZWNpc2lvblN0YWNr
TGV2ZWwgKj4gcHJlY2lzaW9uU3RhY2s7CiAKICAgICBzdGF0aWMgaW50IHVuaXF1ZUlkQ291bnRl
cjsKIH07CiAKLSNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1NZTUJPTFRBQkxFX0hfCit9
ICAvLyBuYW1lc3BhY2Ugc2gKKworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1NZTUJP
TFRBQkxFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9UZXh0dXJlRnVuY3Rpb25ITFNMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RleHR1cmVGdW5jdGlvbkhMU0wuY3BwCmlu
ZGV4IDMzZDA5ODUzMWQ0YzEzMWI4ODM2MTNkMzY5ODYwMzE1ZDk0N2QxMzIuLmJjNTM0NzMyNDQ4
YTUzNDU4NTg4NzdhYjc1YzMwMzEzZWE2NmIzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RleHR1cmVGdW5jdGlvbkhMU0wuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Rl
eHR1cmVGdW5jdGlvbkhMU0wuY3BwCkBAIC0yOTYsNyArMjk2LDEwIEBAIHZvaWQgT3V0cHV0VGV4
dHVyZUZ1bmN0aW9uQXJndW1lbnRMaXN0KFRJbmZvU2lua0Jhc2UgJm91dCwKICAgICAgICAgZWxz
ZQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQob3V0cHV0VHlwZSA9PSBTSF9ITFNMXzRf
MV9PVVRQVVQpOwotICAgICAgICAgICAgb3V0IDw8ICJjb25zdCB1aW50IHNhbXBsZXJJbmRleCI7
CisgICAgICAgICAgICAvLyBBIGJ1ZyBpbiB0aGUgRDNEIGNvbXBpbGVyIGNhdXNlcyBzb21lIG5l
c3RlZCBzYW1wbGluZyBvcGVyYXRpb25zIHRvIGZhaWwuCisgICAgICAgICAgICAvLyBTZWUgaHR0
cDovL2FuZ2xlYnVnLmNvbS8xOTIzCisgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBSZWlu
c3RhdGUgdGhlIGNvbnN0IGtleXdvcmQgd2hlbiBwb3NzaWJsZS4KKyAgICAgICAgICAgIG91dCA8
PCAvKiJjb25zdCIqLyAidWludCBzYW1wbGVySW5kZXgiOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0zMTksNiArMzIyLDggQEAgdm9pZCBPdXRwdXRUZXh0dXJlRnVuY3Rpb25Bcmd1bWVudExpc3Qo
VEluZm9TaW5rQmFzZSAmb3V0LAogICAgIHsKICAgICAgICAgc3dpdGNoICh0ZXh0dXJlRnVuY3Rp
b24uY29vcmRzKQogICAgICAgICB7CisgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAg
ICAgYnJlYWs7ICAvLyB0ZXh0dXJlU2l6ZShnU2FtcGxlcjJETVMgc2FtcGxlcikKICAgICAgICAg
ICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICBvdXQgPDwgIiwgaW50IGxvZCI7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7ICAvLyB0ZXh0dXJlU2l6ZSgpCkBAIC00NTcsNDggKzQ2Miw1NiBAQCB2
b2lkIE91dHB1dFRleHR1cmVTaXplRnVuY3Rpb25Cb2R5KFRJbmZvU2lua0Jhc2UgJm91dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmdGV4dHVyZVJl
ZmVyZW5jZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBnZXREaW1l
bnNpb25zSWdub3Jlc0Jhc2VMZXZlbCkKIHsKLSAgICBpZiAoZ2V0RGltZW5zaW9uc0lnbm9yZXNC
YXNlTGV2ZWwpCisgICAgaWYgKElzU2FtcGxlcjJETVModGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIp
KQogICAgIHsKLSAgICAgICAgb3V0IDw8ICJpbnQgYmFzZUxldmVsID0gc2FtcGxlck1ldGFkYXRh
W3NhbXBsZXJJbmRleF0uYmFzZUxldmVsO1xuIjsKKyAgICAgICAgb3V0IDw8ICIgICAgdWludCB3
aWR0aDsgdWludCBoZWlnaHQ7IHVpbnQgc2FtcGxlcztcbiIKKyAgICAgICAgICAgIDw8ICIgICAg
IiA8PCB0ZXh0dXJlUmVmZXJlbmNlIDw8ICIuR2V0RGltZW5zaW9ucyh3aWR0aCwgaGVpZ2h0LCBz
YW1wbGVzKTtcbiI7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIG91dCA8PCAiaW50
IGJhc2VMZXZlbCA9IDA7XG4iOwotICAgIH0KKyAgICAgICAgaWYgKGdldERpbWVuc2lvbnNJZ25v
cmVzQmFzZUxldmVsKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwgIiAgICBpbnQgYmFz
ZUxldmVsID0gc2FtcGxlck1ldGFkYXRhW3NhbXBsZXJJbmRleF0uYmFzZUxldmVsO1xuIjsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAiICAg
IGludCBiYXNlTGV2ZWwgPSAwO1xuIjsKKyAgICAgICAgfQogCi0gICAgaWYgKElzU2FtcGxlcjNE
KHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSB8fCBJc1NhbXBsZXJBcnJheSh0ZXh0dXJlRnVuY3Rp
b24uc2FtcGxlcikgfHwKLSAgICAgICAgKElzSW50ZWdlclNhbXBsZXIodGV4dHVyZUZ1bmN0aW9u
LnNhbXBsZXIpICYmIElzU2FtcGxlckN1YmUodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIpKSkKLSAg
ICB7Ci0gICAgICAgIC8vICJkZXB0aCIgc3RvcmVzIGVpdGhlciB0aGUgbnVtYmVyIG9mIGxheWVy
cyBpbiBhbiBhcnJheSB0ZXh0dXJlIG9yIDNEIGRlcHRoCi0gICAgICAgIG91dCA8PCAiICAgIHVp
bnQgd2lkdGg7IHVpbnQgaGVpZ2h0OyB1aW50IGRlcHRoOyB1aW50IG51bWJlck9mTGV2ZWxzO1xu
IgotICAgICAgICAgICAgPDwgIiAgICAiIDw8IHRleHR1cmVSZWZlcmVuY2UKLSAgICAgICAgICAg
IDw8ICIuR2V0RGltZW5zaW9ucyhiYXNlTGV2ZWwsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBudW1i
ZXJPZkxldmVscyk7XG4iCi0gICAgICAgICAgICA8PCAiICAgIHdpZHRoID0gbWF4KHdpZHRoID4+
IGxvZCwgMSk7XG4iCi0gICAgICAgICAgICA8PCAiICAgIGhlaWdodCA9IG1heChoZWlnaHQgPj4g
bG9kLCAxKTtcbiI7Ci0KLSAgICAgICAgaWYgKCFJc1NhbXBsZXJBcnJheSh0ZXh0dXJlRnVuY3Rp
b24uc2FtcGxlcikpCisgICAgICAgIGlmIChJc1NhbXBsZXIzRCh0ZXh0dXJlRnVuY3Rpb24uc2Ft
cGxlcikgfHwgSXNTYW1wbGVyQXJyYXkodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIpIHx8CisgICAg
ICAgICAgICAoSXNJbnRlZ2VyU2FtcGxlcih0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikgJiYgSXNT
YW1wbGVyQ3ViZSh0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikpKQorICAgICAgICB7CisgICAgICAg
ICAgICAvLyAiZGVwdGgiIHN0b3JlcyBlaXRoZXIgdGhlIG51bWJlciBvZiBsYXllcnMgaW4gYW4g
YXJyYXkgdGV4dHVyZSBvciAzRCBkZXB0aAorICAgICAgICAgICAgb3V0IDw8ICIgICAgdWludCB3
aWR0aDsgdWludCBoZWlnaHQ7IHVpbnQgZGVwdGg7IHVpbnQgbnVtYmVyT2ZMZXZlbHM7XG4iCisg
ICAgICAgICAgICAgICAgPDwgIiAgICAiIDw8IHRleHR1cmVSZWZlcmVuY2UKKyAgICAgICAgICAg
ICAgICA8PCAiLkdldERpbWVuc2lvbnMoYmFzZUxldmVsLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwg
bnVtYmVyT2ZMZXZlbHMpO1xuIgorICAgICAgICAgICAgICAgIDw8ICIgICAgd2lkdGggPSBtYXgo
d2lkdGggPj4gbG9kLCAxKTtcbiIKKyAgICAgICAgICAgICAgICA8PCAiICAgIGhlaWdodCA9IG1h
eChoZWlnaHQgPj4gbG9kLCAxKTtcbiI7CisKKyAgICAgICAgICAgIGlmICghSXNTYW1wbGVyQXJy
YXkodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIG91dCA8PCAiICAgIGRlcHRoID0gbWF4KGRlcHRoID4+IGxvZCwgMSk7XG4iOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKElzU2FtcGxlcjJEKHRleHR1cmVG
dW5jdGlvbi5zYW1wbGVyKSB8fCBJc1NhbXBsZXJDdWJlKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVy
KSkKICAgICAgICAgewotICAgICAgICAgICAgb3V0IDw8ICIgICAgZGVwdGggPSBtYXgoZGVwdGgg
Pj4gbG9kLCAxKTtcbiI7CisgICAgICAgICAgICBvdXQgPDwgIiAgICB1aW50IHdpZHRoOyB1aW50
IGhlaWdodDsgdWludCBudW1iZXJPZkxldmVscztcbiIKKyAgICAgICAgICAgICAgICA8PCAiICAg
ICIgPDwgdGV4dHVyZVJlZmVyZW5jZQorICAgICAgICAgICAgICAgIDw8ICIuR2V0RGltZW5zaW9u
cyhiYXNlTGV2ZWwsIHdpZHRoLCBoZWlnaHQsIG51bWJlck9mTGV2ZWxzKTtcbiIKKyAgICAgICAg
ICAgICAgICA8PCAiICAgIHdpZHRoID0gbWF4KHdpZHRoID4+IGxvZCwgMSk7XG4iCisgICAgICAg
ICAgICAgICAgPDwgIiAgICBoZWlnaHQgPSBtYXgoaGVpZ2h0ID4+IGxvZCwgMSk7XG4iOwogICAg
ICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQot
ICAgIGVsc2UgaWYgKElzU2FtcGxlcjJEKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSB8fCBJc1Nh
bXBsZXJDdWJlKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSkKLSAgICB7Ci0gICAgICAgIG91dCA8
PCAiICAgIHVpbnQgd2lkdGg7IHVpbnQgaGVpZ2h0OyB1aW50IG51bWJlck9mTGV2ZWxzO1xuIgot
ICAgICAgICAgICAgPDwgIiAgICAiIDw8IHRleHR1cmVSZWZlcmVuY2UKLSAgICAgICAgICAgIDw8
ICIuR2V0RGltZW5zaW9ucyhiYXNlTGV2ZWwsIHdpZHRoLCBoZWlnaHQsIG51bWJlck9mTGV2ZWxz
KTtcbiIKLSAgICAgICAgICAgIDw8ICIgICAgd2lkdGggPSBtYXgod2lkdGggPj4gbG9kLCAxKTtc
biIKLSAgICAgICAgICAgIDw8ICIgICAgaGVpZ2h0ID0gbWF4KGhlaWdodCA+PiBsb2QsIDEpO1xu
IjsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICBVTlJFQUNIQUJMRSgpOwogCiAgICAgaWYgKHN0
cmNtcCh0ZXh0dXJlRnVuY3Rpb24uZ2V0UmV0dXJuVHlwZSgpLCAiaW50MyIpID09IDApCiAgICAg
ewotICAgICAgICBvdXQgPDwgIiAgICByZXR1cm4gaW50Myh3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7
IjsKKyAgICAgICAgb3V0IDw8ICIgICAgcmV0dXJuIGludDMod2lkdGgsIGhlaWdodCwgZGVwdGgp
O1xuIjsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgb3V0IDw8ICIgICAgcmV0dXJu
IGludDIod2lkdGgsIGhlaWdodCk7IjsKKyAgICAgICAgb3V0IDw8ICIgICAgcmV0dXJuIGludDIo
d2lkdGgsIGhlaWdodCk7XG4iOwogICAgIH0KIH0KIApAQCAtMTA0OCw2ICsxMDYxLDkgQEAgY29u
c3QgY2hhciAqVGV4dHVyZUZ1bmN0aW9uSExTTDo6VGV4dHVyZUZ1bmN0aW9uOjpnZXRSZXR1cm5U
eXBlKCkgY29uc3QKICAgICAgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXJDdWJlOgogICAgICAgICAg
ICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzoKICAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxl
ckV4dGVybmFsT0VTOgorICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRNUzoKKyAgICAgICAg
ICAgIGNhc2UgRWJ0SVNhbXBsZXIyRE1TOgorICAgICAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJE
TVM6CiAgICAgICAgICAgICAgICAgcmV0dXJuICJpbnQyIjsKICAgICAgICAgICAgIGNhc2UgRWJ0
U2FtcGxlcjNEOgogICAgICAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjNEOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRv
ckVTU0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvVHJhbnNsYXRvckVTU0wuY3BwCmluZGV4IDEwOWIxNzAwZDVkMjMzOGFiMWIyMzhlOGEzYjdl
MGM2OTcxMmJlZDMuLmVmZDYwMzE0MTI0NGYwZTczZWFhMTFhMjc5NTM2NzU5OWUxMzUxNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1RyYW5zbGF0b3JFU1NMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5jcHAKQEAgLTYsMTkgKzYsMzcgQEAKIAog
I2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuaCIKIAorI2luY2x1
ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmgiCiAj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlUHJlY2lzaW9uLmgiCisjaW5jbHVk
ZSAiY29tcGlsZXIvdHJhbnNsYXRvci9QcnVuZVB1cmVMaXRlcmFsU3RhdGVtZW50cy5oIgogI2lu
Y2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24uaCIKICNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL091dHB1dEVTU0wuaCIKICNpbmNsdWRlICJhbmds
ZV9nbC5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogVHJhbnNsYXRvckVTU0w6OlRyYW5zbGF0b3JF
U1NMKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMpCiAgICAgOiBUQ29tcGlsZXIo
dHlwZSwgc3BlYywgU0hfRVNTTF9PVVRQVVQpCiB7CiB9CiAKK3ZvaWQgVHJhbnNsYXRvckVTU0w6
OmluaXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvcihCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqZW11
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoQ29t
cGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpCit7CisgICAgaWYgKGNvbXBpbGVPcHRpb25zICYg
U0hfRU1VTEFURV9BVEFOMl9GTE9BVF9GVU5DVElPTikKKyAgICB7CisgICAgICAgIEluaXRCdWls
dEluQXRhbkZ1bmN0aW9uRW11bGF0b3JGb3JHTFNMV29ya2Fyb3VuZHMoZW11KTsKKyAgICB9Cit9
CisKIHZvaWQgVHJhbnNsYXRvckVTU0w6OnRyYW5zbGF0ZShUSW50ZXJtTm9kZSAqcm9vdCwgU2hD
b21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykKIHsKLSAgICBUSW5mb1NpbmtCYXNlJiBzaW5r
ID0gZ2V0SW5mb1NpbmsoKS5vYmo7CisgICAgLy8gVGhlIEVTU0wgb3V0cHV0IGRvZXNuJ3QgZGVm
aW5lIGEgZGVmYXVsdCBwcmVjaXNpb24gZm9yIGZsb2F0LCBzbyBmbG9hdCBsaXRlcmFsIHN0YXRl
bWVudHMKKyAgICAvLyBlbmQgdXAgd2l0aCBubyBwcmVjaXNpb24gd2hpY2ggaXMgaW52YWxpZCBF
U1NMLgorICAgIFBydW5lUHVyZUxpdGVyYWxTdGF0ZW1lbnRzKHJvb3QpOworCisgICAgVEluZm9T
aW5rQmFzZSAmc2luayA9IGdldEluZm9TaW5rKCkub2JqOwogCiAgICAgaW50IHNoYWRlclZlciA9
IGdldFNoYWRlclZlcnNpb24oKTsKICAgICBpZiAoc2hhZGVyVmVyID4gMTAwKQpAQCAtMjcsMTMg
KzQ1LDE0IEBAIHZvaWQgVHJhbnNsYXRvckVTU0w6OnRyYW5zbGF0ZShUSW50ZXJtTm9kZSAqcm9v
dCwgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9uCiAgICAgfQogCiAgICAgLy8gV3JpdGUg
YnVpbHQtaW4gZXh0ZW5zaW9uIGJlaGF2aW9ycy4KLSAgICB3cml0ZUV4dGVuc2lvbkJlaGF2aW9y
KCk7CisgICAgd3JpdGVFeHRlbnNpb25CZWhhdmlvcihjb21waWxlT3B0aW9ucyk7CiAKICAgICAv
LyBXcml0ZSBwcmFnbWFzIGFmdGVyIGV4dGVuc2lvbnMgYmVjYXVzZSBzb21lIGRyaXZlcnMgY29u
c2lkZXIgcHJhZ21hcwogICAgIC8vIGxpa2Ugbm9uLXByZXByb2Nlc3NvciB0b2tlbnMuCiAgICAg
d3JpdGVQcmFnbWEoY29tcGlsZU9wdGlvbnMpOwogCi0gICAgYm9vbCBwcmVjaXNpb25FbXVsYXRp
b24gPSBnZXRSZXNvdXJjZXMoKS5XRUJHTF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9uICYmIGdldFBy
YWdtYSgpLmRlYnVnU2hhZGVyUHJlY2lzaW9uOworICAgIGJvb2wgcHJlY2lzaW9uRW11bGF0aW9u
ID0KKyAgICAgICAgZ2V0UmVzb3VyY2VzKCkuV0VCR0xfZGVidWdfc2hhZGVyX3ByZWNpc2lvbiAm
JiBnZXRQcmFnbWEoKS5kZWJ1Z1NoYWRlclByZWNpc2lvbjsKIAogICAgIGlmIChwcmVjaXNpb25F
bXVsYXRpb24pCiAgICAgewpAQCAtNDYsNyArNjUsNyBAQCB2b2lkIFRyYW5zbGF0b3JFU1NMOjp0
cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QsIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlv
bgogICAgIFJlY29yZENvbnN0YW50UHJlY2lzaW9uKHJvb3QsIGdldFRlbXBvcmFyeUluZGV4KCkp
OwogCiAgICAgLy8gV3JpdGUgZW11bGF0ZWQgYnVpbHQtaW4gZnVuY3Rpb25zIGlmIG5lZWRlZC4K
LSAgICBpZiAoIWdldEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKCkuSXNPdXRwdXRFbXB0eSgpKQor
ICAgIGlmICghZ2V0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IoKS5pc091dHB1dEVtcHR5KCkpCiAg
ICAgewogICAgICAgICBzaW5rIDw8ICIvLyBCRUdJTjogR2VuZXJhdGVkIGNvZGUgZm9yIGJ1aWx0
LWluIGZ1bmN0aW9uIGVtdWxhdGlvblxuXG4iOwogICAgICAgICBpZiAoZ2V0U2hhZGVyVHlwZSgp
ID09IEdMX0ZSQUdNRU5UX1NIQURFUikKQEAgLTYyLDcgKzgxLDcgQEAgdm9pZCBUcmFuc2xhdG9y
RVNTTDo6dHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBTaENvbXBpbGVPcHRpb25zIGNvbXBp
bGVPcHRpb24KICAgICAgICAgICAgIHNpbmsgPDwgIiNkZWZpbmUgd2ViZ2xfZW11X3ByZWNpc2lv
biBoaWdocFxuIjsKICAgICAgICAgfQogCi0gICAgICAgIGdldEJ1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yKCkuT3V0cHV0RW11bGF0ZWRGdW5jdGlvbnMoc2luayk7CisgICAgICAgIGdldEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yKCkub3V0cHV0RW11bGF0ZWRGdW5jdGlvbnMoc2luayk7CiAgICAgICAg
IHNpbmsgPDwgIi8vIEVORDogR2VuZXJhdGVkIGNvZGUgZm9yIGJ1aWx0LWluIGZ1bmN0aW9uIGVt
dWxhdGlvblxuXG4iOwogICAgIH0KIApAQCAtNzgsNyArOTcsMTYgQEAgdm9pZCBUcmFuc2xhdG9y
RVNTTDo6dHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBTaENvbXBpbGVPcHRpb25zIGNvbXBp
bGVPcHRpb24KIAogICAgIC8vIFdyaXRlIHRyYW5zbGF0ZWQgc2hhZGVyLgogICAgIFRPdXRwdXRF
U1NMIG91dHB1dEVTU0woc2luaywgZ2V0QXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3koKSwgZ2V0
SGFzaEZ1bmN0aW9uKCksIGdldE5hbWVNYXAoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdldFN5bWJvbFRhYmxlKCksIHNoYWRlclZlciwgcHJlY2lzaW9uRW11bGF0aW9uKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdldFN5bWJvbFRhYmxlKCksIGdldFNoYWRlclR5cGUoKSwg
c2hhZGVyVmVyLCBwcmVjaXNpb25FbXVsYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb21waWxlT3B0aW9ucyk7CisKKyAgICBpZiAoY29tcGlsZU9wdGlvbnMgJiBTSF9UUkFOU0xB
VEVfVklFV0lEX09WUl9UT19VTklGT1JNKQorICAgIHsKKyAgICAgICAgVE5hbWUgdW5pZm9ybU5h
bWUoVFN0cmluZygiVmlld0lEX09WUiIpKTsKKyAgICAgICAgdW5pZm9ybU5hbWUuc2V0SW50ZXJu
YWwodHJ1ZSk7CisgICAgICAgIHNpbmsgPDwgImhpZ2hwIHVuaWZvcm0gaW50ICIgPDwgb3V0cHV0
RVNTTC5oYXNoTmFtZSh1bmlmb3JtTmFtZSkgPDwgIjtcbiI7CisgICAgfQorCiAgICAgcm9vdC0+
dHJhdmVyc2UoJm91dHB1dEVTU0wpOwogfQogCkBAIC04OCwyMiArMTE2LDM5IEBAIGJvb2wgVHJh
bnNsYXRvckVTU0w6OnNob3VsZEZsYXR0ZW5QcmFnbWFTdGRnbEludmFyaWFudEFsbCgpCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFRyYW5zbGF0b3JFU1NMOjp3cml0ZUV4dGVuc2lvbkJl
aGF2aW9yKCkgewotICAgIFRJbmZvU2lua0Jhc2UmIHNpbmsgPSBnZXRJbmZvU2luaygpLm9iajsK
LSAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yID0gZ2V0RXh0ZW5zaW9u
QmVoYXZpb3IoKTsKLSAgICBmb3IgKFRFeHRlbnNpb25CZWhhdmlvcjo6Y29uc3RfaXRlcmF0b3Ig
aXRlciA9IGV4dEJlaGF2aW9yLmJlZ2luKCk7Ci0gICAgICAgICBpdGVyICE9IGV4dEJlaGF2aW9y
LmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgaWYgKGl0ZXItPnNlY29uZCAhPSBFQmhVbmRlZmlu
ZWQpIHsKLSAgICAgICAgICAgIGlmIChnZXRSZXNvdXJjZXMoKS5OVl9zaGFkZXJfZnJhbWVidWZm
ZXJfZmV0Y2ggJiYgaXRlci0+Zmlyc3QgPT0gIkdMX0VYVF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0
Y2giKSB7Cit2b2lkIFRyYW5zbGF0b3JFU1NMOjp3cml0ZUV4dGVuc2lvbkJlaGF2aW9yKFNoQ29t
cGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpCit7CisgICAgVEluZm9TaW5rQmFzZSAmc2luayAg
ICAgICAgICAgICAgICAgICA9IGdldEluZm9TaW5rKCkub2JqOworICAgIGNvbnN0IFRFeHRlbnNp
b25CZWhhdmlvciAmZXh0QmVoYXZpb3IgPSBnZXRFeHRlbnNpb25CZWhhdmlvcigpOworICAgIGZv
ciAoVEV4dGVuc2lvbkJlaGF2aW9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZXh0QmVoYXZpb3Iu
YmVnaW4oKTsgaXRlciAhPSBleHRCZWhhdmlvci5lbmQoKTsKKyAgICAgICAgICsraXRlcikKKyAg
ICB7CisgICAgICAgIGlmIChpdGVyLT5zZWNvbmQgIT0gRUJoVW5kZWZpbmVkKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoZ2V0UmVzb3VyY2VzKCkuTlZfc2hhZGVyX2ZyYW1lYnVmZmVyX2Zl
dGNoICYmCisgICAgICAgICAgICAgICAgaXRlci0+Zmlyc3QgPT0gIkdMX0VYVF9zaGFkZXJfZnJh
bWVidWZmZXJfZmV0Y2giKQorICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHNpbmsgPDwg
IiNleHRlbnNpb24gR0xfTlZfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoIDogIgogICAgICAgICAg
ICAgICAgICAgICAgPDwgZ2V0QmVoYXZpb3JTdHJpbmcoaXRlci0+c2Vjb25kKSA8PCAiXG4iOwot
ICAgICAgICAgICAgfSBlbHNlIGlmIChnZXRSZXNvdXJjZXMoKS5OVl9kcmF3X2J1ZmZlcnMgJiYg
aXRlci0+Zmlyc3QgPT0gIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKSB7Ci0gICAgICAgICAgICAgICAg
c2luayA8PCAiI2V4dGVuc2lvbiBHTF9OVl9kcmF3X2J1ZmZlcnMgOiAiCi0gICAgICAgICAgICAg
ICAgICAgICA8PCBnZXRCZWhhdmlvclN0cmluZyhpdGVyLT5zZWNvbmQpIDw8ICJcbiI7Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNpbmsgPDwgIiNleHRlbnNpb24gIiA8
PCBpdGVyLT5maXJzdCA8PCAiIDogIgotICAgICAgICAgICAgICAgICAgICAgPDwgZ2V0QmVoYXZp
b3JTdHJpbmcoaXRlci0+c2Vjb25kKSA8PCAiXG4iOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgZWxzZSBpZiAoZ2V0UmVzb3VyY2VzKCkuTlZfZHJhd19idWZmZXJzICYmIGl0ZXItPmZpcnN0
ID09ICJHTF9FWFRfZHJhd19idWZmZXJzIikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBzaW5rIDw8ICIjZXh0ZW5zaW9uIEdMX05WX2RyYXdfYnVmZmVycyA6ICIgPDwgZ2V0QmVoYXZp
b3JTdHJpbmcoaXRlci0+c2Vjb25kKQorICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNvbXBpbGVPcHRpb25zICYgU0hfVFJB
TlNMQVRFX1ZJRVdJRF9PVlJfVE9fVU5JRk9STSAmJgorICAgICAgICAgICAgICAgICAgICAgKGl0
ZXItPmZpcnN0ID09ICJHTF9PVlJfbXVsdGl2aWV3IiB8fCBpdGVyLT5maXJzdCA9PSAiR0xfT1ZS
X211bHRpdmlldzIiKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBObyBvdXRw
dXQKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzaW5rIDw8ICIjZXh0ZW5zaW9u
ICIgPDwgaXRlci0+Zmlyc3QgPDwgIiA6ICIgPDwgZ2V0QmVoYXZpb3JTdHJpbmcoaXRlci0+c2Vj
b25kKQorICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNs
YXRvckVTU0wuaAppbmRleCBmMTQ3Y2EwNjYxMGU1ZTcxM2IwMzc4YjQxMDY4OGY0ZGExOTViNDgx
Li5iNGU0OTFkZTE4YmYxYjczOGMwN2ZmN2QzYWQ3OWYwZTkxMjk4MjgzIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
RVNTTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1RyYW5zbGF0b3JFU1NMLmgKQEAgLTksMTcgKzksMjUgQEAKIAogI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuaCIKIAorbmFtZXNwYWNlIHNoCit7CisKIGNsYXNzIFRy
YW5zbGF0b3JFU1NMIDogcHVibGljIFRDb21waWxlcgogewogICBwdWJsaWM6CiAgICAgVHJhbnNs
YXRvckVTU0woc2g6OkdMZW51bSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYyk7CiAKICAgcHJvdGVj
dGVkOgorICAgIHZvaWQgaW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKEJ1aWx0SW5GdW5jdGlv
bkVtdWxhdG9yICplbXUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hD
b21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykgb3ZlcnJpZGU7CisKICAgICB2b2lkIHRyYW5z
bGF0ZShUSW50ZXJtTm9kZSAqcm9vdCwgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykg
b3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRGbGF0dGVuUHJhZ21hU3RkZ2xJbnZhcmlhbnRBbGwo
KSBvdmVycmlkZTsKIAogICBwcml2YXRlOgotICAgIHZvaWQgd3JpdGVFeHRlbnNpb25CZWhhdmlv
cigpOworICAgIHZvaWQgd3JpdGVFeHRlbnNpb25CZWhhdmlvcihTaENvbXBpbGVPcHRpb25zIGNv
bXBpbGVPcHRpb25zKTsKIH07CiAKK30gIC8vIG5hbWVzcGFjZSBzaAorCiAjZW5kaWYgIC8vIENP
TVBJTEVSX1RSQU5TTEFUT1JfVFJBTlNMQVRPUkVTU0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JHTFNMLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5z
bGF0b3JHTFNMLmNwcAppbmRleCBhMGVlMDFmNTViODUyMTg0NjU1MjI4YTE4OGU3ODQ2YzQ4Mjk4
OGI5Li4yNTNhNTc5ZDcyMzE2NWIzYWIxM2RiMjhhYTc4NGEyNzk1ZDMxNjg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xh
dG9yR0xTTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVHJhbnNsYXRvckdMU0wuY3BwCkBAIC0xMiwxMiArMTIsMTUgQEAKICNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL0V4dGVuc2lvbkdMU0wuaCIKICNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL091dHB1dEdMU0wuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L1Jld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9SZXdyaXRlVW5hcnlNaW51c09wZXJhdG9yRmxvYXQuaCIKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL1ZlcnNpb25HTFNMLmgiCiAKLVRyYW5zbGF0b3JHTFNMOjpUcmFuc2xhdG9yR0xT
TChzaDo6R0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hTaGFk
ZXJTcGVjIHNwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJPdXRw
dXQgb3V0cHV0KQotICAgIDogVENvbXBpbGVyKHR5cGUsIHNwZWMsIG91dHB1dCkgeworbmFtZXNw
YWNlIHNoCit7CisKK1RyYW5zbGF0b3JHTFNMOjpUcmFuc2xhdG9yR0xTTChzaDo6R0xlbnVtIHR5
cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBTaFNoYWRlck91dHB1dCBvdXRwdXQpCisgICAgOiBUQ29t
cGlsZXIodHlwZSwgc3BlYywgb3V0cHV0KQorewogfQogCiB2b2lkIFRyYW5zbGF0b3JHTFNMOjpp
bml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSwK
QEAgLTMzLDEzICszNiwxOCBAQCB2b2lkIFRyYW5zbGF0b3JHTFNMOjppbml0QnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3IoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSwKICAgICAgICAgSW5pdEJ1
aWx0SW5Jc25hbkZ1bmN0aW9uRW11bGF0b3JGb3JHTFNMV29ya2Fyb3VuZHMoZW11LCBnZXRTaGFk
ZXJWZXJzaW9uKCkpOwogICAgIH0KIAorICAgIGlmIChjb21waWxlT3B0aW9ucyAmIFNIX0VNVUxB
VEVfQVRBTjJfRkxPQVRfRlVOQ1RJT04pCisgICAgeworICAgICAgICBJbml0QnVpbHRJbkF0YW5G
dW5jdGlvbkVtdWxhdG9yRm9yR0xTTFdvcmthcm91bmRzKGVtdSk7CisgICAgfQorCiAgICAgaW50
IHRhcmdldEdMU0xWZXJzaW9uID0gU2hhZGVyT3V0cHV0VHlwZVRvR0xTTFZlcnNpb24oZ2V0T3V0
cHV0VHlwZSgpKTsKICAgICBJbml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JGb3JHTFNMTWlzc2lu
Z0Z1bmN0aW9ucyhlbXUsIGdldFNoYWRlclR5cGUoKSwgdGFyZ2V0R0xTTFZlcnNpb24pOwogfQog
CiB2b2lkIFRyYW5zbGF0b3JHTFNMOjp0cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QsIFNoQ29t
cGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpCiB7Ci0gICAgVEluZm9TaW5rQmFzZSYgc2luayA9
IGdldEluZm9TaW5rKCkub2JqOworICAgIFRJbmZvU2lua0Jhc2UgJnNpbmsgPSBnZXRJbmZvU2lu
aygpLm9iajsKIAogICAgIC8vIFdyaXRlIEdMU0wgdmVyc2lvbi4KICAgICB3cml0ZVZlcnNpb24o
cm9vdCk7CkBAIC01NSw5ICs2MywxMSBAQCB2b2lkIFRyYW5zbGF0b3JHTFNMOjp0cmFuc2xhdGUo
VEludGVybU5vZGUgKnJvb3QsIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbgogICAgIC8v
IHZhcmlhYmxlcy4gSXQgc2hvdWxkIGJlIGhhcm1sZXNzIHRvIGRvIHRoaXMgdHdpY2UgaW4gdGhl
IGNhc2UgdGhhdCB0aGUgc2hhZGVyIGFsc28gZXhwbGljaXRseQogICAgIC8vIGRpZCB0aGlzLiBI
b3dldmVyLCBpdCdzIGltcG9ydGFudCB0byBlbWl0IGludmFyaWFudCBxdWFsaWZpZXJzIG9ubHkg
Zm9yIHRob3NlIGJ1aWx0LWluCiAgICAgLy8gdmFyaWFibGVzIHRoYXQgYXJlIGFjdHVhbGx5IHVz
ZWQsIHRvIGF2b2lkIGFmZmVjdGluZyB0aGUgYmVoYXZpb3Igb2YgdGhlIHNoYWRlci4KLSAgICBp
ZiAoKGNvbXBpbGVPcHRpb25zICYgU0hfRkxBVFRFTl9QUkFHTUFfU1RER0xfSU5WQVJJQU5UX0FM
TCkgJiYgZ2V0UHJhZ21hKCkuc3RkZ2wuaW52YXJpYW50QWxsKQorICAgIGlmICgoY29tcGlsZU9w
dGlvbnMgJiBTSF9GTEFUVEVOX1BSQUdNQV9TVERHTF9JTlZBUklBTlRfQUxMKSAhPSAwICYmCisg
ICAgICAgIGdldFByYWdtYSgpLnN0ZGdsLmludmFyaWFudEFsbCAmJgorICAgICAgICAhc2g6OlJl
bW92ZUludmFyaWFudChnZXRTaGFkZXJUeXBlKCksIGdldFNoYWRlclZlcnNpb24oKSwgZ2V0T3V0
cHV0VHlwZSgpLCBjb21waWxlT3B0aW9ucykpCiAgICAgewotICAgICAgICBjb2xsZWN0VmFyaWFi
bGVzKHJvb3QpOworICAgICAgICBBU1NFUlQod2VyZVZhcmlhYmxlc0NvbGxlY3RlZCgpKTsKIAog
ICAgICAgICBzd2l0Y2ggKGdldFNoYWRlclR5cGUoKSkKICAgICAgICAgewpAQCAtODcsNyArOTcs
MTMgQEAgdm9pZCBUcmFuc2xhdG9yR0xTTDo6dHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBT
aENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb24KICAgICAgICAgc2g6OlJld3JpdGVUZXhlbEZl
dGNoT2Zmc2V0KHJvb3QsIGdldFN5bWJvbFRhYmxlKCksIGdldFNoYWRlclZlcnNpb24oKSk7CiAg
ICAgfQogCi0gICAgYm9vbCBwcmVjaXNpb25FbXVsYXRpb24gPSBnZXRSZXNvdXJjZXMoKS5XRUJH
TF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9uICYmIGdldFByYWdtYSgpLmRlYnVnU2hhZGVyUHJlY2lz
aW9uOworICAgIGlmICgoY29tcGlsZU9wdGlvbnMgJiBTSF9SRVdSSVRFX0ZMT0FUX1VOQVJZX01J
TlVTX09QRVJBVE9SKSAhPSAwKQorICAgIHsKKyAgICAgICAgc2g6OlJld3JpdGVVbmFyeU1pbnVz
T3BlcmF0b3JGbG9hdChyb290KTsKKyAgICB9CisKKyAgICBib29sIHByZWNpc2lvbkVtdWxhdGlv
biA9CisgICAgICAgIGdldFJlc291cmNlcygpLldFQkdMX2RlYnVnX3NoYWRlcl9wcmVjaXNpb24g
JiYgZ2V0UHJhZ21hKCkuZGVidWdTaGFkZXJQcmVjaXNpb247CiAKICAgICBpZiAocHJlY2lzaW9u
RW11bGF0aW9uKQogICAgIHsKQEAgLTk4LDExICsxMTQsMTEgQEAgdm9pZCBUcmFuc2xhdG9yR0xT
TDo6dHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVP
cHRpb24KICAgICB9CiAKICAgICAvLyBXcml0ZSBlbXVsYXRlZCBidWlsdC1pbiBmdW5jdGlvbnMg
aWYgbmVlZGVkLgotICAgIGlmICghZ2V0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IoKS5Jc091dHB1
dEVtcHR5KCkpCisgICAgaWYgKCFnZXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvcigpLmlzT3V0cHV0
RW1wdHkoKSkKICAgICB7CiAgICAgICAgIHNpbmsgPDwgIi8vIEJFR0lOOiBHZW5lcmF0ZWQgY29k
ZSBmb3IgYnVpbHQtaW4gZnVuY3Rpb24gZW11bGF0aW9uXG5cbiI7CiAgICAgICAgIHNpbmsgPDwg
IiNkZWZpbmUgd2ViZ2xfZW11X3ByZWNpc2lvblxuXG4iOwotICAgICAgICBnZXRCdWlsdEluRnVu
Y3Rpb25FbXVsYXRvcigpLk91dHB1dEVtdWxhdGVkRnVuY3Rpb25zKHNpbmspOworICAgICAgICBn
ZXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvcigpLm91dHB1dEVtdWxhdGVkRnVuY3Rpb25zKHNpbmsp
OwogICAgICAgICBzaW5rIDw8ICIvLyBFTkQ6IEdlbmVyYXRlZCBjb2RlIGZvciBidWlsdC1pbiBm
dW5jdGlvbiBlbXVsYXRpb25cblxuIjsKICAgICB9CiAKQEAgLTE4NSwxMyArMjAxLDE3IEBAIHZv
aWQgVHJhbnNsYXRvckdMU0w6OnRyYW5zbGF0ZShUSW50ZXJtTm9kZSAqcm9vdCwgU2hDb21waWxl
T3B0aW9ucyBjb21waWxlT3B0aW9uCiAgICAgfQogCiAgICAgLy8gV3JpdGUgdHJhbnNsYXRlZCBz
aGFkZXIuCi0gICAgVE91dHB1dEdMU0wgb3V0cHV0R0xTTChzaW5rLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2V0QXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3koKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdldEhhc2hGdW5jdGlvbigpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2V0TmFtZU1hcCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U3ltYm9s
VGFibGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFNoYWRlclZlcnNpb24oKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE91dHB1dFR5cGUoKSk7CisgICAgVE91dHB1
dEdMU0wgb3V0cHV0R0xTTChzaW5rLCBnZXRBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSgpLCBn
ZXRIYXNoRnVuY3Rpb24oKSwgZ2V0TmFtZU1hcCgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2V0U3ltYm9sVGFibGUoKSwgZ2V0U2hhZGVyVHlwZSgpLCBnZXRTaGFkZXJWZXJzaW9uKCks
IGdldE91dHB1dFR5cGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVPcHRp
b25zKTsKKworICAgIGlmIChjb21waWxlT3B0aW9ucyAmIFNIX1RSQU5TTEFURV9WSUVXSURfT1ZS
X1RPX1VOSUZPUk0pCisgICAgeworICAgICAgICBUTmFtZSB1bmlmb3JtTmFtZShUU3RyaW5nKCJW
aWV3SURfT1ZSIikpOworICAgICAgICB1bmlmb3JtTmFtZS5zZXRJbnRlcm5hbCh0cnVlKTsKKyAg
ICAgICAgc2luayA8PCAidW5pZm9ybSBpbnQgIiA8PCBvdXRwdXRHTFNMLmhhc2hOYW1lKHVuaWZv
cm1OYW1lKSA8PCAiO1xuIjsKKyAgICB9CisKICAgICByb290LT50cmF2ZXJzZSgmb3V0cHV0R0xT
TCk7CiB9CiAKQEAgLTIwMiw2ICsyMjIsMTIgQEAgYm9vbCBUcmFuc2xhdG9yR0xTTDo6c2hvdWxk
RmxhdHRlblByYWdtYVN0ZGdsSW52YXJpYW50QWxsKCkKICAgICByZXR1cm4gSXNHTFNMMTMwT3JO
ZXdlcihnZXRPdXRwdXRUeXBlKCkpOwogfQogCitib29sIFRyYW5zbGF0b3JHTFNMOjpzaG91bGRD
b2xsZWN0VmFyaWFibGVzKFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpCit7CisgICAg
cmV0dXJuIChjb21waWxlT3B0aW9ucyAmIFNIX0ZMQVRURU5fUFJBR01BX1NUREdMX0lOVkFSSUFO
VF9BTEwpIHx8CisgICAgICAgICAgIFRDb21waWxlcjo6c2hvdWxkQ29sbGVjdFZhcmlhYmxlcyhj
b21waWxlT3B0aW9ucyk7Cit9CisKIHZvaWQgVHJhbnNsYXRvckdMU0w6OndyaXRlVmVyc2lvbihU
SW50ZXJtTm9kZSAqcm9vdCkKIHsKICAgICBUVmVyc2lvbkdMU0wgdmVyc2lvbkdMU0woZ2V0U2hh
ZGVyVHlwZSgpLCBnZXRQcmFnbWEoKSwgZ2V0T3V0cHV0VHlwZSgpKTsKQEAgLTIxMSwxNSArMjM3
LDE1IEBAIHZvaWQgVHJhbnNsYXRvckdMU0w6OndyaXRlVmVyc2lvbihUSW50ZXJtTm9kZSAqcm9v
dCkKICAgICAvLyBJZiB0aGVyZSBpcyBubyB2ZXJzaW9uIGRpcmVjdGl2ZSBpbiB0aGUgc2hhZGVy
LCAxMTAgaXMgaW1wbGllZC4KICAgICBpZiAodmVyc2lvbiA+IDExMCkKICAgICB7Ci0gICAgICAg
IFRJbmZvU2lua0Jhc2UmIHNpbmsgPSBnZXRJbmZvU2luaygpLm9iajsKKyAgICAgICAgVEluZm9T
aW5rQmFzZSAmc2luayA9IGdldEluZm9TaW5rKCkub2JqOwogICAgICAgICBzaW5rIDw8ICIjdmVy
c2lvbiAiIDw8IHZlcnNpb24gPDwgIlxuIjsKICAgICB9CiB9CiAKIHZvaWQgVHJhbnNsYXRvckdM
U0w6OndyaXRlRXh0ZW5zaW9uQmVoYXZpb3IoVEludGVybU5vZGUgKnJvb3QpCiB7Ci0gICAgVElu
Zm9TaW5rQmFzZSYgc2luayA9IGdldEluZm9TaW5rKCkub2JqOwotICAgIGNvbnN0IFRFeHRlbnNp
b25CZWhhdmlvciYgZXh0QmVoYXZpb3IgPSBnZXRFeHRlbnNpb25CZWhhdmlvcigpOworICAgIFRJ
bmZvU2lua0Jhc2UgJnNpbmsgICAgICAgICAgICAgICAgICAgPSBnZXRJbmZvU2luaygpLm9iajsK
KyAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3IgJmV4dEJlaGF2aW9yID0gZ2V0RXh0ZW5zaW9u
QmVoYXZpb3IoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8gJml0ZXIgOiBleHRCZWhhdmlvcikKICAg
ICB7CiAgICAgICAgIGlmIChpdGVyLnNlY29uZCA9PSBFQmhVbmRlZmluZWQpCkBAIC0yNDYsMjYg
KzI3MiwyMSBAQCB2b2lkIFRyYW5zbGF0b3JHTFNMOjp3cml0ZUV4dGVuc2lvbkJlaGF2aW9yKFRJ
bnRlcm1Ob2RlICpyb290KQogICAgIH0KIAogICAgIC8vIEdMU0wgRVMgMyBleHBsaWNpdCBsb2Nh
dGlvbiBxdWFsaWZpZXJzIG5lZWQgdG8gdXNlIGFuIGV4dGVuc2lvbiBiZWZvcmUgR0xTTCAzMzAK
LSAgICBpZiAoZ2V0U2hhZGVyVmVyc2lvbigpID49IDMwMCAmJiBnZXRPdXRwdXRUeXBlKCkgPCBT
SF9HTFNMXzMzMF9DT1JFX09VVFBVVCkKKyAgICBpZiAoZ2V0U2hhZGVyVmVyc2lvbigpID49IDMw
MCAmJiBnZXRPdXRwdXRUeXBlKCkgPCBTSF9HTFNMXzMzMF9DT1JFX09VVFBVVCAmJgorICAgICAg
ICBnZXRTaGFkZXJUeXBlKCkgIT0gR0xfQ09NUFVURV9TSEFERVIpCiAgICAgewogICAgICAgICBz
aW5rIDw8ICIjZXh0ZW5zaW9uIEdMX0FSQl9leHBsaWNpdF9hdHRyaWJfbG9jYXRpb24gOiByZXF1
aXJlXG4iOwogICAgIH0KIAogICAgIC8vIE5lZWQgdG8gZW5hYmxlIGdwdV9zaGFkZXI1IHRvIGhh
dmUgaW5kZXggY29uc3RhbnQgc2FtcGxlciBhcnJheSBpbmRleGluZwotICAgIGlmIChnZXRPdXRw
dXRUeXBlKCkgIT0gU0hfRVNTTF9PVVRQVVQgJiYgZ2V0T3V0cHV0VHlwZSgpIDwgU0hfR0xTTF80
MDBfQ09SRV9PVVRQVVQpCisgICAgaWYgKGdldE91dHB1dFR5cGUoKSAhPSBTSF9FU1NMX09VVFBV
VCAmJiBnZXRPdXRwdXRUeXBlKCkgPCBTSF9HTFNMXzQwMF9DT1JFX09VVFBVVCAmJgorICAgICAg
ICBnZXRTaGFkZXJWZXJzaW9uKCkgPT0gMTAwKQogICAgIHsKLSAgICAgICAgc2luayA8PCAiI2V4
dGVuc2lvbiBHTF9BUkJfZ3B1X3NoYWRlcjUgOiAiOwotCi0gICAgICAgIC8vIERvbid0IHVzZSAi
cmVxdWlyZSIgb24gV2ViR0wgMSB0byBhdm9pZCBicmVha2luZyBXZWJHTCBvbiBkcml2ZXJzIHRo
YXQgc2lsZW50bHkKLSAgICAgICAgLy8gc3VwcG9ydCBpbmRleCBjb25zdGFudCBzYW1wbGVyIGFy
cmF5IGluZGV4aW5nLCBidXQgZG9uJ3QgaGF2ZSB0aGUgZXh0ZW5zaW9uLgotICAgICAgICBpZiAo
Z2V0U2hhZGVyVmVyc2lvbigpID49IDMwMCkKLSAgICAgICAgewotICAgICAgICAgICAgc2luayA8
PCAicmVxdWlyZVxuIjsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHNpbmsgPDwgImVuYWJsZVxuIjsKLSAgICAgICAgfQorICAgICAgICAvLyBEb24ndCB1
c2UgInJlcXVpcmUiIG9uIHRvIGF2b2lkIGJyZWFraW5nIFdlYkdMIDEgb24gZHJpdmVycyB0aGF0
IHNpbGVudGx5CisgICAgICAgIC8vIHN1cHBvcnQgaW5kZXggY29uc3RhbnQgc2FtcGxlciBhcnJh
eSBpbmRleGluZywgYnV0IGRvbid0IGhhdmUgdGhlIGV4dGVuc2lvbiBvcgorICAgICAgICAvLyBv
biBkcml2ZXJzIHRoYXQgZG9uJ3QgaGF2ZSB0aGUgZXh0ZW5zaW9uIGF0IGFsbCBhcyBpdCB3b3Vs
ZCBicmVhayBXZWJHTCAxIGZvcgorICAgICAgICAvLyBzb21lIHVzZXJzLgorICAgICAgICBzaW5r
IDw8ICIjZXh0ZW5zaW9uIEdMX0FSQl9ncHVfc2hhZGVyNSA6IGVuYWJsZVxuIjsKICAgICB9CiAK
ICAgICBURXh0ZW5zaW9uR0xTTCBleHRlbnNpb25HTFNMKGdldE91dHB1dFR5cGUoKSk7CkBAIC0y
ODksMyArMzEwLDUgQEAgdm9pZCBUcmFuc2xhdG9yR0xTTDo6Y29uZGl0aW9uYWxseU91dHB1dElu
dmFyaWFudERlY2xhcmF0aW9uKGNvbnN0IGNoYXIgKmJ1aWx0aW4KICAgICAgICAgc2luayA8PCAi
aW52YXJpYW50ICIgPDwgYnVpbHRpblZhcnlpbmdOYW1lIDw8ICI7XG4iOwogICAgIH0KIH0KKwor
fSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yR0xTTC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckdMU0wuaAppbmRleCBm
MjM0YzE4ZWNhMjZiMTdjOGUzMzIyZDZlMjQ0NmQ0OTRkOTZhMjI0Li5kNmY2OTQ4MjQ2OTg4MWUx
OGFiZmJkODU4NDFkNGIyNjI1ZWU5NjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yR0xTTC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JHTFNM
LmgKQEAgLTksNiArOSw5IEBACiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0NvbXBp
bGVyLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBjbGFzcyBUcmFuc2xhdG9yR0xTTCA6IHB1Ymxp
YyBUQ29tcGlsZXIKIHsKICAgcHVibGljOgpAQCAtMjAsNiArMjMsNyBAQCBjbGFzcyBUcmFuc2xh
dG9yR0xTTCA6IHB1YmxpYyBUQ29tcGlsZXIKIAogICAgIHZvaWQgdHJhbnNsYXRlKFRJbnRlcm1O
b2RlICpyb290LCBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zKSBvdmVycmlkZTsKICAg
ICBib29sIHNob3VsZEZsYXR0ZW5QcmFnbWFTdGRnbEludmFyaWFudEFsbCgpIG92ZXJyaWRlOwor
ICAgIGJvb2wgc2hvdWxkQ29sbGVjdFZhcmlhYmxlcyhTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVP
cHRpb25zKSBvdmVycmlkZTsKIAogICBwcml2YXRlOgogICAgIHZvaWQgd3JpdGVWZXJzaW9uKFRJ
bnRlcm1Ob2RlICpyb290KTsKQEAgLTI3LDQgKzMxLDYgQEAgY2xhc3MgVHJhbnNsYXRvckdMU0wg
OiBwdWJsaWMgVENvbXBpbGVyCiAgICAgdm9pZCBjb25kaXRpb25hbGx5T3V0cHV0SW52YXJpYW50
RGVjbGFyYXRpb24oY29uc3QgY2hhciAqYnVpbHRpblZhcnlpbmdOYW1lKTsKIH07CiAKK30gIC8v
IG5hbWVzcGFjZSBzaAorCiAjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfVFJBTlNMQVRP
UkdMU0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmNwcAppbmRleCBmYjAxMWRh
NzY2NzAwNjI5NTBjMWY0YTY5YmI0MjBjYzY2MGUxMWFlLi4zMGQ0MjcxZjQ4MjMxY2MyN2UwMjgw
NDdkNTFjMDEyOGZiNmM2Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9ySExTTC5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhMU0wuY3Bw
CkBAIC0yNCw2ICsyNCw5IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TcGxpdFNl
cXVlbmNlT3BlcmF0b3IuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNo
b3J0Q2lyY3VpdFRvSWYuaCIKIAorbmFtZXNwYWNlIHNoCit7CisKIFRyYW5zbGF0b3JITFNMOjpU
cmFuc2xhdG9ySExTTChzaDo6R0xlbnVtIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBTaFNoYWRl
ck91dHB1dCBvdXRwdXQpCiAgICAgOiBUQ29tcGlsZXIodHlwZSwgc3BlYywgb3V0cHV0KQogewpA
QCAtMzIsMjAgKzM1LDIzIEBAIFRyYW5zbGF0b3JITFNMOjpUcmFuc2xhdG9ySExTTChzaDo6R0xl
bnVtIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBTaFNoYWRlck91dHB1CiB2b2lkIFRyYW5zbGF0
b3JITFNMOjp0cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QsIFNoQ29tcGlsZU9wdGlvbnMgY29t
cGlsZU9wdGlvbnMpCiB7CiAgICAgY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzICZyZXNvdXJjZXMg
PSBnZXRSZXNvdXJjZXMoKTsKLSAgICBpbnQgbnVtUmVuZGVyVGFyZ2V0cyA9IHJlc291cmNlcy5F
WFRfZHJhd19idWZmZXJzID8gcmVzb3VyY2VzLk1heERyYXdCdWZmZXJzIDogMTsKKyAgICBpbnQg
bnVtUmVuZGVyVGFyZ2V0cyAgICAgICAgICAgICAgICA9IHJlc291cmNlcy5FWFRfZHJhd19idWZm
ZXJzID8gcmVzb3VyY2VzLk1heERyYXdCdWZmZXJzIDogMTsKIAogICAgIHNoOjpBZGREZWZhdWx0
UmV0dXJuU3RhdGVtZW50cyhyb290KTsKIAotICAgIFNlcGFyYXRlRGVjbGFyYXRpb25zKHJvb3Qp
OwotCiAgICAgLy8gTm90ZSB0aGF0IFNpbXBsaWZ5TG9vcENvbmRpdGlvbnMgbmVlZHMgdG8gYmUg
cnVuIGJlZm9yZSBhbnkgb3RoZXIgQVNUIHRyYW5zZm9ybWF0aW9ucyB0aGF0CiAgICAgLy8gbWF5
IG5lZWQgdG8gZ2VuZXJhdGUgbmV3IHN0YXRlbWVudHMgZnJvbSBsb29wIGNvbmRpdGlvbnMgb3Ig
bG9vcCBleHByZXNzaW9ucy4KICAgICBTaW1wbGlmeUxvb3BDb25kaXRpb25zKHJvb3QsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXI6OmtFeHByZXNz
aW9uUmV0dXJuaW5nQXJyYXkgfAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVy
bU5vZGVQYXR0ZXJuTWF0Y2hlcjo6a1VuZm9sZGVkU2hvcnRDaXJjdWl0RXhwcmVzc2lvbiB8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyOjpr
RHluYW1pY0luZGV4aW5nT2ZWZWN0b3JPck1hdHJpeEluTFZhbHVlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlcjo6a0R5bmFtaWNJbmRleGlu
Z09mVmVjdG9yT3JNYXRyaXhJbkxWYWx1ZSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyOjprTXVsdGlEZWNsYXJhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdldFRlbXBvcmFyeUluZGV4KCksIGdldFN5bWJvbFRhYmxlKCks
IGdldFNoYWRlclZlcnNpb24oKSk7CiAKKyAgICAvLyBOb3RlIHRoYXQgc2VwYXJhdGUgZGVjbGFy
YXRpb25zIG5lZWQgdG8gYmUgcnVuIGJlZm9yZSBvdGhlciBBU1QgdHJhbnNmb3JtYXRpb25zIHRo
YXQKKyAgICAvLyBnZW5lcmF0ZSBuZXcgc3RhdGVtZW50cyBmcm9tIGV4cHJlc3Npb25zLgorICAg
IFNlcGFyYXRlRGVjbGFyYXRpb25zKHJvb3QpOworCiAgICAgU3BsaXRTZXF1ZW5jZU9wZXJhdG9y
KHJvb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hl
cjo6a0V4cHJlc3Npb25SZXR1cm5pbmdBcnJheSB8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXI6OmtVbmZvbGRlZFNob3J0Q2lyY3VpdEV4cHJl
c3Npb24gfApAQCAtMTEyLDEyICsxMTgsMTMgQEAgdm9pZCBUcmFuc2xhdG9ySExTTDo6dHJhbnNs
YXRlKFRJbnRlcm1Ob2RlICpyb290LCBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb24KICAg
ICB9CiAKICAgICBzaDo6T3V0cHV0SExTTCBvdXRwdXRITFNMKGdldFNoYWRlclR5cGUoKSwgZ2V0
U2hhZGVyVmVyc2lvbigpLCBnZXRFeHRlbnNpb25CZWhhdmlvcigpLAotICAgICAgICBnZXRTb3Vy
Y2VQYXRoKCksIGdldE91dHB1dFR5cGUoKSwgbnVtUmVuZGVyVGFyZ2V0cywgZ2V0VW5pZm9ybXMo
KSwgY29tcGlsZU9wdGlvbnMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U291
cmNlUGF0aCgpLCBnZXRPdXRwdXRUeXBlKCksIG51bVJlbmRlclRhcmdldHMsIGdldFVuaWZvcm1z
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlT3B0aW9ucyk7CiAKICAg
ICBvdXRwdXRITFNMLm91dHB1dChyb290LCBnZXRJbmZvU2luaygpLm9iaik7CiAKICAgICBtSW50
ZXJmYWNlQmxvY2tSZWdpc3Rlck1hcCA9IG91dHB1dEhMU0wuZ2V0SW50ZXJmYWNlQmxvY2tSZWdp
c3Rlck1hcCgpOwotICAgIG1Vbmlmb3JtUmVnaXN0ZXJNYXAgPSBvdXRwdXRITFNMLmdldFVuaWZv
cm1SZWdpc3Rlck1hcCgpOworICAgIG1Vbmlmb3JtUmVnaXN0ZXJNYXAgICAgICAgID0gb3V0cHV0
SExTTC5nZXRVbmlmb3JtUmVnaXN0ZXJNYXAoKTsKIH0KIAogYm9vbCBUcmFuc2xhdG9ySExTTDo6
c2hvdWxkRmxhdHRlblByYWdtYVN0ZGdsSW52YXJpYW50QWxsKCkKQEAgLTE0MSwzICsxNDgsNSBA
QCBjb25zdCBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgdW5zaWduZWQgaW50PiAqVHJhbnNsYXRvckhM
U0w6OmdldFVuaWZvcm1SZWdpc3Rlck1hcAogewogICAgIHJldHVybiAmbVVuaWZvcm1SZWdpc3Rl
ck1hcDsKIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9ySExTTC5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckhM
U0wuaAppbmRleCBkMmFkZDE0ZTNkMGM2MmMyOGEyNzhlOGEzNzQ2Y2MwYTg5NmU1ZmMyLi44NmQ5
NjBmMmY2N2M5NGFhYWFmYzZmZmQyYjk0NGJkN2EyZDQ5NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9ySExTTC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Ry
YW5zbGF0b3JITFNMLmgKQEAgLTksMTMgKzksMTQgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvQ29tcGlsZXIuaCIKIAorbmFtZXNwYWNlIHNoCit7CisKIGNsYXNzIFRyYW5zbGF0
b3JITFNMIDogcHVibGljIFRDb21waWxlcgogewogICBwdWJsaWM6CiAgICAgVHJhbnNsYXRvckhM
U0woc2g6OkdMZW51bSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgU2hTaGFkZXJPdXRwdXQgb3V0
cHV0KTsKLSNpZmRlZiBBTkdMRV9FTkFCTEVfSExTTAotICAgIFRyYW5zbGF0b3JITFNMICpnZXRB
c1RyYW5zbGF0b3JITFNMKCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhpczsgfQotI2VuZGlmIC8vIEFO
R0xFX0VOQUJMRV9ITFNMCisgICAgVHJhbnNsYXRvckhMU0wgKmdldEFzVHJhbnNsYXRvckhMU0wo
KSB7IHJldHVybiB0aGlzOyB9CiAKICAgICBib29sIGhhc0ludGVyZmFjZUJsb2NrKGNvbnN0IHN0
ZDo6c3RyaW5nICZpbnRlcmZhY2VCbG9ja05hbWUpIGNvbnN0OwogICAgIHVuc2lnbmVkIGludCBn
ZXRJbnRlcmZhY2VCbG9ja1JlZ2lzdGVyKGNvbnN0IHN0ZDo6c3RyaW5nICZpbnRlcmZhY2VCbG9j
a05hbWUpIGNvbnN0OwpAQCAtMzMsNCArMzQsNiBAQCBjbGFzcyBUcmFuc2xhdG9ySExTTCA6IHB1
YmxpYyBUQ29tcGlsZXIKICAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgdW5zaWduZWQgaW50PiBt
VW5pZm9ybVJlZ2lzdGVyTWFwOwogfTsKIAorfSAgLy8gbmFtZXNwYWNlIHNoCisKICNlbmRpZiAg
Ly8gQ09NUElMRVJfVFJBTlNMQVRPUl9UUkFOU0xBVE9SSExTTF9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvclZ1
bGthbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9UcmFuc2xhdG9yVnVsa2FuLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YmM3ZWIwNDE0YzE5ODI0OWQ2YTA0
MmQ0MWQ3NTFhOGI3MjI4MzVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvclZ1bGthbi5jcHAKQEAgLTAs
MCArMSw3NyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBUcmFuc2xhdG9yVnVsa2FuOgorLy8gICBBIEdM
U0wtYmFzZWQgdHJhbnNsYXRvciB0aGF0IG91dHB1dHMgc2hhZGVycyB0aGF0IGZpdCBHTF9LSFJf
dnVsa2FuX2dsc2wuCisvLyAgIFRoZSBzaGFkZXJzIGFyZSB0aGVuIGZlZCBpbnRvIGdsc2xhbmcg
dG8gc3BpdCBvdXQgU1BJUi1WIChsaWJBTkdMRS1zaWRlKS4KKy8vICAgU2VlOiBodHRwczovL3d3
dy5raHJvbm9zLm9yZy9yZWdpc3RyeS92dWxrYW4vc3BlY3MvbWlzYy9HTF9LSFJfdnVsa2FuX2ds
c2wudHh0CisvLworCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yVnVs
a2FuLmgiCisKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvT3V0cHV0VnVsa2FuR0xTTC5oIgorCituYW1lc3BhY2Ugc2gKK3sKKworVHJhbnNsYXRv
clZ1bGthbjo6VHJhbnNsYXRvclZ1bGthbihzaDo6R0xlbnVtIHR5cGUsIFNoU2hhZGVyU3BlYyBz
cGVjKQorICAgIDogVENvbXBpbGVyKHR5cGUsIHNwZWMsIFNIX0dMU0xfNDUwX0NPUkVfT1VUUFVU
KQoreworfQorCit2b2lkIFRyYW5zbGF0b3JWdWxrYW46OnRyYW5zbGF0ZShUSW50ZXJtTm9kZSAq
cm9vdCwgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykKK3sKKyAgICBUSW5mb1NpbmtC
YXNlICZzaW5rID0gZ2V0SW5mb1NpbmsoKS5vYmo7CisKKyAgICBzaW5rIDw8ICIjdmVyc2lvbiA0
NTAgY29yZVxuIjsKKworICAgIC8vIERlY2xhcmUgZ2xfRnJhZ0NvbG9yIGFuZCBnbEZyYWdEYXRh
IGFzIHdlYmdsX0ZyYWdDb2xvciBhbmQgd2ViZ2xfRnJhZ0RhdGEKKyAgICAvLyBpZiBpdCdzIGNv
cmUgcHJvZmlsZSBzaGFkZXJzIGFuZCB0aGV5IGFyZSB1c2VkLgorICAgIGlmIChnZXRTaGFkZXJU
eXBlKCkgPT0gR0xfRlJBR01FTlRfU0hBREVSKQorICAgIHsKKyAgICAgICAgYm9vbCBoYXNHTEZy
YWdDb2xvciA9IGZhbHNlOworICAgICAgICBib29sIGhhc0dMRnJhZ0RhdGEgID0gZmFsc2U7CisK
KyAgICAgICAgZm9yIChjb25zdCBhdXRvICZvdXRwdXRWYXIgOiBvdXRwdXRWYXJpYWJsZXMpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChvdXRwdXRWYXIubmFtZSA9PSAiZ2xfRnJhZ0NvbG9y
IikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoIWhhc0dMRnJhZ0NvbG9y
KTsKKyAgICAgICAgICAgICAgICBoYXNHTEZyYWdDb2xvciA9IHRydWU7CisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChvdXRwdXRW
YXIubmFtZSA9PSAiZ2xfRnJhZ0RhdGEiKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IEFTU0VSVCghaGFzR0xGcmFnRGF0YSk7CisgICAgICAgICAgICAgICAgaGFzR0xGcmFnRGF0YSA9
IHRydWU7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgQVNTRVJUKCEoaGFzR0xGcmFnQ29sb3IgJiYgaGFzR0xGcmFnRGF0YSkpOwor
ICAgICAgICBpZiAoaGFzR0xGcmFnQ29sb3IpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNpbmsg
PDwgImxheW91dChsb2NhdGlvbiA9IDApIG91dCB2ZWM0IHdlYmdsX0ZyYWdDb2xvcjtcbiI7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGhhc0dMRnJhZ0RhdGEpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHNpbmsgPDwgImxheW91dChsb2NhdGlvbiA9IDApIG91dCB2ZWM0IHdlYmdsX0ZyYWdEYXRh
W2dsX01heERyYXdCdWZmZXJzXTtcbiI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBXcml0
ZSB0cmFuc2xhdGVkIHNoYWRlci4KKyAgICBUT3V0cHV0VnVsa2FuR0xTTCBvdXRwdXRHTFNMKHNp
bmssIGdldEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5KCksIGdldEhhc2hGdW5jdGlvbigpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TmFtZU1hcCgpLCBnZXRTeW1ib2xU
YWJsZSgpLCBnZXRTaGFkZXJUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZXRTaGFkZXJWZXJzaW9uKCksIGdldE91dHB1dFR5cGUoKSwgY29tcGlsZU9wdGlvbnMpOwor
ICAgIHJvb3QtPnRyYXZlcnNlKCZvdXRwdXRHTFNMKTsKK30KKworYm9vbCBUcmFuc2xhdG9yVnVs
a2FuOjpzaG91bGRGbGF0dGVuUHJhZ21hU3RkZ2xJbnZhcmlhbnRBbGwoKQoreworICAgIC8vIE5v
dCBuZWNlc3NhcnkuCisgICAgcmV0dXJuIGZhbHNlOworfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1RyYW5zbGF0b3JWdWxrYW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JWdWxrYW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YmNhMzk0YmI0
Mzk1NTkwNTk0NDA2OWQyZGVkZmJkYmVmYTVjM2JjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvclZ1bGth
bi5oCkBAIC0wLDAgKzEsMzIgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gVHJhbnNsYXRvclZ1bGthbjoK
Ky8vICAgQSBHTFNMLWJhc2VkIHRyYW5zbGF0b3IgdGhhdCBvdXRwdXRzIHNoYWRlcnMgdGhhdCBm
aXQgR0xfS0hSX3Z1bGthbl9nbHNsLgorLy8gICBUaGUgc2hhZGVycyBhcmUgdGhlbiBmZWQgaW50
byBnbHNsYW5nIHRvIHNwaXQgb3V0IFNQSVItViAobGliQU5HTEUtc2lkZSkuCisvLyAgIFNlZTog
aHR0cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvdnVsa2FuL3NwZWNzL21pc2MvR0xfS0hS
X3Z1bGthbl9nbHNsLnR4dAorLy8KKworI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX1RSQU5T
TEFUT1JWVUxLQU5fSF8KKyNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9UUkFOU0xBVE9SVlVM
S0FOX0hfCisKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0NvbXBpbGVyLmgiCisKK25h
bWVzcGFjZSBzaAoreworCitjbGFzcyBUcmFuc2xhdG9yVnVsa2FuIDogcHVibGljIFRDb21waWxl
cgoreworICBwdWJsaWM6CisgICAgVHJhbnNsYXRvclZ1bGthbihzaDo6R0xlbnVtIHR5cGUsIFNo
U2hhZGVyU3BlYyBzcGVjKTsKKworICBwcm90ZWN0ZWQ6CisgICAgdm9pZCB0cmFuc2xhdGUoVElu
dGVybU5vZGUgKnJvb3QsIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpIG92ZXJyaWRl
OworICAgIGJvb2wgc2hvdWxkRmxhdHRlblByYWdtYVN0ZGdsSW52YXJpYW50QWxsKCkgb3ZlcnJp
ZGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugc2gKKworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFO
U0xBVE9SX1RSQU5TTEFUT1JWVUxLQU5fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1R5cGVzLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1R5cGVzLmNwcAppbmRleCA1OThiZTI4
NzExMzM5OWI5MDBjZWYwNWQ5OGVlN2VkZmE5NmQ4ZGU2Li45NjY0NjIzZTNjODU2OWU4MjE2MGNi
YmE3YmE2NTdmNGE1ZDhmOWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9UeXBlcy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHlwZXMuY3BwCkBAIC01LDcgKzUsNyBAQAog
Ly8KIAogI2lmIGRlZmluZWQoX01TQ19WRVIpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDcx
OCkKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDcxOCkKICNlbmRpZgogCiAjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9UeXBlcy5oIgpAQCAtMTYsMzUgKzE2LDk4IEBACiAjaW5jbHVk
ZSA8YWxnb3JpdGhtPgogI2luY2x1ZGUgPGNsaW1pdHM+CiAKLWNvbnN0IGNoYXIqIGdldEJhc2lj
U3RyaW5nKFRCYXNpY1R5cGUgdCkKK25hbWVzcGFjZSBzaAoreworCitjb25zdCBjaGFyICpnZXRC
YXNpY1N0cmluZyhUQmFzaWNUeXBlIHQpCiB7CiAgICAgc3dpdGNoICh0KQogICAgIHsKLSAgICAg
ICAgY2FzZSBFYnRWb2lkOiAgICAgICAgICAgICAgICAgcmV0dXJuICJ2b2lkIjsKLSAgICAgICAg
Y2FzZSBFYnRGbG9hdDogICAgICAgICAgICAgICAgcmV0dXJuICJmbG9hdCI7Ci0gICAgICAgIGNh
c2UgRWJ0SW50OiAgICAgICAgICAgICAgICAgIHJldHVybiAiaW50IjsKLSAgICAgICAgY2FzZSBF
YnRVSW50OiAgICAgICAgICAgICAgICAgcmV0dXJuICJ1aW50IjsKLSAgICAgICAgY2FzZSBFYnRC
b29sOiAgICAgICAgICAgICAgICAgcmV0dXJuICJib29sIjsKLSAgICAgICAgY2FzZSBFYnRTYW1w
bGVyMkQ6ICAgICAgICAgICAgcmV0dXJuICJzYW1wbGVyMkQiOwotICAgICAgICBjYXNlIEVidFNh
bXBsZXIzRDogICAgICAgICAgICByZXR1cm4gInNhbXBsZXIzRCI7Ci0gICAgICAgIGNhc2UgRWJ0
U2FtcGxlckN1YmU6ICAgICAgICAgIHJldHVybiAic2FtcGxlckN1YmUiOwotICAgICAgICBjYXNl
IEVidFNhbXBsZXJFeHRlcm5hbE9FUzogICByZXR1cm4gInNhbXBsZXJFeHRlcm5hbE9FUyI7Ci0g
ICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEUmVjdDogICAgICAgIHJldHVybiAic2FtcGxlcjJEUmVj
dCI7Ci0gICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6ICAgICAgIHJldHVybiAic2FtcGxl
cjJEQXJyYXkiOwotICAgICAgICBjYXNlIEVidElTYW1wbGVyMkQ6ICAgICAgICAgICByZXR1cm4g
ImlzYW1wbGVyMkQiOwotICAgICAgICBjYXNlIEVidElTYW1wbGVyM0Q6ICAgICAgICAgICByZXR1
cm4gImlzYW1wbGVyM0QiOwotICAgICAgICBjYXNlIEVidElTYW1wbGVyQ3ViZTogICAgICAgICBy
ZXR1cm4gImlzYW1wbGVyQ3ViZSI7Ci0gICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyREFycmF5OiAg
ICAgIHJldHVybiAiaXNhbXBsZXIyREFycmF5IjsKLSAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJE
OiAgICAgICAgICAgcmV0dXJuICJ1c2FtcGxlcjJEIjsKLSAgICAgICAgY2FzZSBFYnRVU2FtcGxl
cjNEOiAgICAgICAgICAgcmV0dXJuICJ1c2FtcGxlcjNEIjsKLSAgICAgICAgY2FzZSBFYnRVU2Ft
cGxlckN1YmU6ICAgICAgICAgcmV0dXJuICJ1c2FtcGxlckN1YmUiOwotICAgICAgICBjYXNlIEVi
dFVTYW1wbGVyMkRBcnJheTogICAgICByZXR1cm4gInVzYW1wbGVyMkRBcnJheSI7Ci0gICAgICAg
IGNhc2UgRWJ0U2FtcGxlcjJEU2hhZG93OiAgICAgIHJldHVybiAic2FtcGxlcjJEU2hhZG93IjsK
LSAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzogICAgcmV0dXJuICJzYW1wbGVyQ3Vi
ZVNoYWRvdyI7Ci0gICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXlTaGFkb3c6IHJldHVybiAi
c2FtcGxlcjJEQXJyYXlTaGFkb3ciOwotICAgICAgICBjYXNlIEVidFN0cnVjdDogICAgICAgICAg
ICAgICByZXR1cm4gInN0cnVjdHVyZSI7Ci0gICAgICAgIGNhc2UgRWJ0SW50ZXJmYWNlQmxvY2s6
ICAgICAgIHJldHVybiAiaW50ZXJmYWNlIGJsb2NrIjsKLSAgICAgICAgZGVmYXVsdDogVU5SRUFD
SEFCTEUoKTsgICAgICAgcmV0dXJuICJ1bmtub3duIHR5cGUiOworICAgICAgICBjYXNlIEVidFZv
aWQ6CisgICAgICAgICAgICByZXR1cm4gInZvaWQiOworICAgICAgICBjYXNlIEVidEZsb2F0Ogor
ICAgICAgICAgICAgcmV0dXJuICJmbG9hdCI7CisgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAg
ICAgICAgcmV0dXJuICJpbnQiOworICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICBy
ZXR1cm4gInVpbnQiOworICAgICAgICBjYXNlIEVidEJvb2w6CisgICAgICAgICAgICByZXR1cm4g
ImJvb2wiOworICAgICAgICBjYXNlIEVidFl1dkNzY1N0YW5kYXJkRVhUOgorICAgICAgICAgICAg
cmV0dXJuICJ5dXZDc2NTdGFuZGFyZEVYVCI7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEOgor
ICAgICAgICAgICAgcmV0dXJuICJzYW1wbGVyMkQiOworICAgICAgICBjYXNlIEVidFNhbXBsZXIz
RDoKKyAgICAgICAgICAgIHJldHVybiAic2FtcGxlcjNEIjsKKyAgICAgICAgY2FzZSBFYnRTYW1w
bGVyQ3ViZToKKyAgICAgICAgICAgIHJldHVybiAic2FtcGxlckN1YmUiOworICAgICAgICBjYXNl
IEVidFNhbXBsZXJFeHRlcm5hbE9FUzoKKyAgICAgICAgICAgIHJldHVybiAic2FtcGxlckV4dGVy
bmFsT0VTIjsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWwyRFkyWUVYVDoKKyAgICAg
ICAgICAgIHJldHVybiAiX19zYW1wbGVyRXh0ZXJuYWwyRFkyWUVYVCI7CisgICAgICAgIGNhc2Ug
RWJ0U2FtcGxlcjJEUmVjdDoKKyAgICAgICAgICAgIHJldHVybiAic2FtcGxlcjJEUmVjdCI7Cisg
ICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6CisgICAgICAgICAgICByZXR1cm4gInNhbXBs
ZXIyREFycmF5IjsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRNUzoKKyAgICAgICAgICAgIHJl
dHVybiAic2FtcGxlcjJETVMiOworICAgICAgICBjYXNlIEVidElTYW1wbGVyMkQ6CisgICAgICAg
ICAgICByZXR1cm4gImlzYW1wbGVyMkQiOworICAgICAgICBjYXNlIEVidElTYW1wbGVyM0Q6Cisg
ICAgICAgICAgICByZXR1cm4gImlzYW1wbGVyM0QiOworICAgICAgICBjYXNlIEVidElTYW1wbGVy
Q3ViZToKKyAgICAgICAgICAgIHJldHVybiAiaXNhbXBsZXJDdWJlIjsKKyAgICAgICAgY2FzZSBF
YnRJU2FtcGxlcjJEQXJyYXk6CisgICAgICAgICAgICByZXR1cm4gImlzYW1wbGVyMkRBcnJheSI7
CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyRE1TOgorICAgICAgICAgICAgcmV0dXJuICJpc2Ft
cGxlcjJETVMiOworICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkQ6CisgICAgICAgICAgICByZXR1
cm4gInVzYW1wbGVyMkQiOworICAgICAgICBjYXNlIEVidFVTYW1wbGVyM0Q6CisgICAgICAgICAg
ICByZXR1cm4gInVzYW1wbGVyM0QiOworICAgICAgICBjYXNlIEVidFVTYW1wbGVyQ3ViZToKKyAg
ICAgICAgICAgIHJldHVybiAidXNhbXBsZXJDdWJlIjsKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxl
cjJEQXJyYXk6CisgICAgICAgICAgICByZXR1cm4gInVzYW1wbGVyMkRBcnJheSI7CisgICAgICAg
IGNhc2UgRWJ0VVNhbXBsZXIyRE1TOgorICAgICAgICAgICAgcmV0dXJuICJ1c2FtcGxlcjJETVMi
OworICAgICAgICBjYXNlIEVidFNhbXBsZXIyRFNoYWRvdzoKKyAgICAgICAgICAgIHJldHVybiAi
c2FtcGxlcjJEU2hhZG93IjsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzoKKyAg
ICAgICAgICAgIHJldHVybiAic2FtcGxlckN1YmVTaGFkb3ciOworICAgICAgICBjYXNlIEVidFNh
bXBsZXIyREFycmF5U2hhZG93OgorICAgICAgICAgICAgcmV0dXJuICJzYW1wbGVyMkRBcnJheVNo
YWRvdyI7CisgICAgICAgIGNhc2UgRWJ0U3RydWN0OgorICAgICAgICAgICAgcmV0dXJuICJzdHJ1
Y3R1cmUiOworICAgICAgICBjYXNlIEVidEludGVyZmFjZUJsb2NrOgorICAgICAgICAgICAgcmV0
dXJuICJpbnRlcmZhY2UgYmxvY2siOworICAgICAgICBjYXNlIEVidEltYWdlMkQ6CisgICAgICAg
ICAgICByZXR1cm4gImltYWdlMkQiOworICAgICAgICBjYXNlIEVidElJbWFnZTJEOgorICAgICAg
ICAgICAgcmV0dXJuICJpaW1hZ2UyRCI7CisgICAgICAgIGNhc2UgRWJ0VUltYWdlMkQ6CisgICAg
ICAgICAgICByZXR1cm4gInVpbWFnZTJEIjsKKyAgICAgICAgY2FzZSBFYnRJbWFnZTNEOgorICAg
ICAgICAgICAgcmV0dXJuICJpbWFnZTNEIjsKKyAgICAgICAgY2FzZSBFYnRJSW1hZ2UzRDoKKyAg
ICAgICAgICAgIHJldHVybiAiaWltYWdlM0QiOworICAgICAgICBjYXNlIEVidFVJbWFnZTNEOgor
ICAgICAgICAgICAgcmV0dXJuICJ1aW1hZ2UzRCI7CisgICAgICAgIGNhc2UgRWJ0SW1hZ2UyREFy
cmF5OgorICAgICAgICAgICAgcmV0dXJuICJpbWFnZTJEQXJyYXkiOworICAgICAgICBjYXNlIEVi
dElJbWFnZTJEQXJyYXk6CisgICAgICAgICAgICByZXR1cm4gImlpbWFnZTJEQXJyYXkiOworICAg
ICAgICBjYXNlIEVidFVJbWFnZTJEQXJyYXk6CisgICAgICAgICAgICByZXR1cm4gInVpbWFnZTJE
QXJyYXkiOworICAgICAgICBjYXNlIEVidEltYWdlQ3ViZToKKyAgICAgICAgICAgIHJldHVybiAi
aW1hZ2VDdWJlIjsKKyAgICAgICAgY2FzZSBFYnRJSW1hZ2VDdWJlOgorICAgICAgICAgICAgcmV0
dXJuICJpaW1hZ2VDdWJlIjsKKyAgICAgICAgY2FzZSBFYnRVSW1hZ2VDdWJlOgorICAgICAgICAg
ICAgcmV0dXJuICJ1aW1hZ2VDdWJlIjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gInVua25vd24gdHlwZSI7CiAgICAgfQog
fQogCkBAIC01Myw2ICsxMTYsNyBAQCBUVHlwZTo6VFR5cGUoY29uc3QgVFB1YmxpY1R5cGUgJnAp
CiAgICAgICBwcmVjaXNpb24ocC5wcmVjaXNpb24pLAogICAgICAgcXVhbGlmaWVyKHAucXVhbGlm
aWVyKSwKICAgICAgIGludmFyaWFudChwLmludmFyaWFudCksCisgICAgICBtZW1vcnlRdWFsaWZp
ZXIocC5tZW1vcnlRdWFsaWZpZXIpLAogICAgICAgbGF5b3V0UXVhbGlmaWVyKHAubGF5b3V0UXVh
bGlmaWVyKSwKICAgICAgIHByaW1hcnlTaXplKHAuZ2V0UHJpbWFyeVNpemUoKSksCiAgICAgICBz
ZWNvbmRhcnlTaXplKHAuZ2V0U2Vjb25kYXJ5U2l6ZSgpKSwKQEAgLTIyMCw3OCArMjg0LDEyOSBA
QCBUU3RyaW5nIFRUeXBlOjpidWlsZE1hbmdsZWROYW1lKCkgY29uc3QKIAogICAgIHN3aXRjaCAo
dHlwZSkKICAgICB7Ci0gICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICBtYW5nbGVkTmFtZSAr
PSAnZic7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgIG1hbmds
ZWROYW1lICs9ICdpJzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVidFVJbnQ6Ci0gICAg
ICAgIG1hbmdsZWROYW1lICs9ICd1JzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVidEJv
b2w6Ci0gICAgICAgIG1hbmdsZWROYW1lICs9ICdiJzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEVidFNhbXBsZXIyRDoKLSAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInMyIjsKLSAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIEVidFNhbXBsZXIzRDoKLSAgICAgICAgbWFuZ2xlZE5hbWUgKz0g
InMzIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVidFNhbXBsZXJDdWJlOgotICAgICAg
ICBtYW5nbGVkTmFtZSArPSAic0MiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0U2Ft
cGxlcjJEQXJyYXk6Ci0gICAgICAgIG1hbmdsZWROYW1lICs9ICJzMmEiOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRWJ0U2FtcGxlckV4dGVybmFsT0VTOgotICAgICAgICBtYW5nbGVkTmFt
ZSArPSAic2V4dCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRTYW1wbGVyMkRSZWN0
OgotICAgICAgICBtYW5nbGVkTmFtZSArPSAiczJyIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEVidElTYW1wbGVyMkQ6Ci0gICAgICAgIG1hbmdsZWROYW1lICs9ICJpczIiOwotICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgRWJ0SVNhbXBsZXIzRDoKLSAgICAgICAgbWFuZ2xlZE5hbWUg
Kz0gImlzMyI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRJU2FtcGxlckN1YmU6Ci0g
ICAgICAgIG1hbmdsZWROYW1lICs9ICJpc0MiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
RWJ0SVNhbXBsZXIyREFycmF5OgotICAgICAgICBtYW5nbGVkTmFtZSArPSAiaXMyYSI7Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEOgotICAgICAgICBtYW5nbGVkTmFt
ZSArPSAidXMyIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVidFVTYW1wbGVyM0Q6Ci0g
ICAgICAgIG1hbmdsZWROYW1lICs9ICJ1czMiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
RWJ0VVNhbXBsZXJDdWJlOgotICAgICAgICBtYW5nbGVkTmFtZSArPSAidXNDIjsKLSAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIEVidFVTYW1wbGVyMkRBcnJheToKLSAgICAgICAgbWFuZ2xlZE5h
bWUgKz0gInVzMmEiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEU2hh
ZG93OgotICAgICAgICBtYW5nbGVkTmFtZSArPSAiczJzIjsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVidFNhbXBsZXJDdWJlU2hhZG93OgotICAgICAgICBtYW5nbGVkTmFtZSArPSAic0Nz
IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5U2hhZG93Ogot
ICAgICAgICBtYW5nbGVkTmFtZSArPSAiczJhcyI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFYnRTdHJ1Y3Q6Ci0gICAgICAgIG1hbmdsZWROYW1lICs9IHN0cnVjdHVyZS0+bWFuZ2xlZE5h
bWUoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVidEludGVyZmFjZUJsb2NrOgotICAg
ICAgICBtYW5nbGVkTmFtZSArPSBpbnRlcmZhY2VCbG9jay0+bWFuZ2xlZE5hbWUoKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAvLyBFYnRWb2lkLCBFYnRBZGRyZXNz
IGFuZCBub24gdHlwZXMKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Cisg
ICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAnZic7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAnaSc7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgbWFuZ2xlZE5h
bWUgKz0gJ3UnOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0Qm9vbDoKKyAg
ICAgICAgICAgIG1hbmdsZWROYW1lICs9ICdiJzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEVidFl1dkNzY1N0YW5kYXJkRVhUOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0g
InljcyI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6Cisg
ICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAiczIiOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRWJ0U2FtcGxlcjNEOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInMzIjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidFNhbXBsZXJDdWJlOgorICAgICAg
ICAgICAgbWFuZ2xlZE5hbWUgKz0gInNDIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEVidFNhbXBsZXIyREFycmF5OgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInMyYSI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6
CisgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAic2V4dCI7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWwyRFkyWUVYVDoKKyAgICAgICAgICAgIG1h
bmdsZWROYW1lICs9ICJzZXh0MnkyeSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFYnRTYW1wbGVyMkRSZWN0OgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInMyciI7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRNUzoKKyAgICAgICAg
ICAgIG1hbmdsZWROYW1lICs9ICJzMm1zIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEVidElTYW1wbGVyMkQ6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAiaXMyIjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidElTYW1wbGVyM0Q6CisgICAgICAgICAg
ICBtYW5nbGVkTmFtZSArPSAiaXMzIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEVidElTYW1wbGVyQ3ViZToKKyAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICJpc0MiOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyREFycmF5OgorICAgICAg
ICAgICAgbWFuZ2xlZE5hbWUgKz0gImlzMmEiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRWJ0SVNhbXBsZXIyRE1TOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gImlzMm1z
IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkQ6CisgICAg
ICAgICAgICBtYW5nbGVkTmFtZSArPSAidXMyIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEVidFVTYW1wbGVyM0Q6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAidXMzIjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidFVTYW1wbGVyQ3ViZToKKyAgICAg
ICAgICAgIG1hbmdsZWROYW1lICs9ICJ1c0MiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRWJ0VVNhbXBsZXIyREFycmF5OgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInVz
MmEiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyRE1TOgor
ICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInVzMm1zIjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEVidFNhbXBsZXIyRFNoYWRvdzoKKyAgICAgICAgICAgIG1hbmdsZWROYW1l
ICs9ICJzMnMiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1
YmVTaGFkb3c6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAic0NzIjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5U2hhZG93OgorICAgICAgICAg
ICAgbWFuZ2xlZE5hbWUgKz0gInMyYXMiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRWJ0SW1hZ2UyRDoKKyAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICJpbTIiOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0SUltYWdlMkQ6CisgICAgICAgICAgICBtYW5n
bGVkTmFtZSArPSAiaWltMiI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRV
SW1hZ2UyRDoKKyAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICJ1aW0yIjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEVidEltYWdlM0Q6CisgICAgICAgICAgICBtYW5nbGVkTmFt
ZSArPSAiaW0zIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidElJbWFnZTNE
OgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gImlpbTMiOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRWJ0VUltYWdlM0Q6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAi
dWltMyI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRJbWFnZTJEQXJyYXk6
CisgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAiaW0yYSI7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFYnRJSW1hZ2UyREFycmF5OgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUg
Kz0gImlpbTJhIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidFVJbWFnZTJE
QXJyYXk6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAidWltMmEiOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRWJ0SW1hZ2VDdWJlOgorICAgICAgICAgICAgbWFuZ2xlZE5h
bWUgKz0gImltYyI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRJSW1hZ2VD
dWJlOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gImlpbWMiOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRWJ0VUltYWdlQ3ViZToKKyAgICAgICAgICAgIG1hbmdsZWROYW1l
ICs9ICJ1aW1jIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidFN0cnVjdDoK
KyAgICAgICAgICAgIG1hbmdsZWROYW1lICs9IHN0cnVjdHVyZS0+bWFuZ2xlZE5hbWUoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidEludGVyZmFjZUJsb2NrOgorICAgICAg
ICAgICAgbWFuZ2xlZE5hbWUgKz0gaW50ZXJmYWNlQmxvY2stPm1hbmdsZWROYW1lKCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIEVidFZvaWQs
IEVidEFkZHJlc3MgYW5kIG5vbiB0eXBlcworICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAg
ICAgaWYgKGlzTWF0cml4KCkpCkBAIC0zNDAsNiArNDU1LDM2IEBAIHNpemVfdCBUVHlwZTo6Z2V0
T2JqZWN0U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRvdGFsU2l6ZTsKIH0KIAoraW50IFRUeXBl
OjpnZXRMb2NhdGlvbkNvdW50KCkgY29uc3QKK3sKKyAgICBpbnQgY291bnQgPSAxOworCisgICAg
aWYgKGdldEJhc2ljVHlwZSgpID09IEVidFN0cnVjdCkKKyAgICB7CisgICAgICAgIGNvdW50ID0g
c3RydWN0dXJlLT5nZXRMb2NhdGlvbkNvdW50KCk7CisgICAgfQorCisgICAgaWYgKGlzQXJyYXko
KSkKKyAgICB7CisgICAgICAgIGlmIChjb3VudCA9PSAwKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIGludCBjdXJyZW50QXJy
YXlTaXplID0gZ2V0QXJyYXlTaXplKCk7CisgICAgICAgIGlmIChjdXJyZW50QXJyYXlTaXplID4g
c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgp
IC8gY291bnQpKQorICAgICAgICB7CisgICAgICAgICAgICBjb3VudCA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50Pjo6bWF4KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7Cisg
ICAgICAgICAgICBjb3VudCAqPSBzdGF0aWNfY2FzdDxpbnQ+KGN1cnJlbnRBcnJheVNpemUpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50OworfQorCiBUU3RydWN0dXJlOjpU
U3RydWN0dXJlKGNvbnN0IFRTdHJpbmcgKm5hbWUsIFRGaWVsZExpc3QgKmZpZWxkcykKICAgICA6
IFRGaWVsZExpc3RDb2xsZWN0aW9uKG5hbWUsIGZpZWxkcyksCiAgICAgICBtRGVlcGVzdE5lc3Rp
bmcoMCksCkBAIC0zODEsNiArNTI2LDE3IEBAIGJvb2wgVFN0cnVjdHVyZTo6Y29udGFpbnNTYW1w
bGVycygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFRTdHJ1Y3R1cmU6OmNv
bnRhaW5zSW1hZ2VzKCkgY29uc3QKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1GaWVs
ZHMtPnNpemUoKTsgKytpKQorICAgIHsKKyAgICAgICAgY29uc3QgVFR5cGUgKmZpZWxkVHlwZSA9
ICgqbUZpZWxkcylbaV0tPnR5cGUoKTsKKyAgICAgICAgaWYgKElzSW1hZ2UoZmllbGRUeXBlLT5n
ZXRCYXNpY1R5cGUoKSkgfHwgZmllbGRUeXBlLT5pc1N0cnVjdHVyZUNvbnRhaW5pbmdJbWFnZXMo
KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIHZvaWQgVFN0cnVjdHVyZTo6Y3JlYXRlU2FtcGxlclN5bWJvbHMoY29uc3QgVFN0cmluZyAm
c3RydWN0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFN0cmluZyAmc3RydWN0QVBJTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdW5zaWduZWQgaW50IGFycmF5T2ZTdHJ1Y3RzU2l6ZSwKQEAgLTQxNyw3ICs1
NzMsNyBAQCB2b2lkIFRTdHJ1Y3R1cmU6OmNyZWF0ZVNhbXBsZXJTeW1ib2xzKGNvbnN0IFRTdHJp
bmcgJnN0cnVjdE5hbWUsCiAKICAgICAgICAgICAgICAgICBpZiAob3V0cHV0U3ltYm9sc1RvQVBJ
TmFtZXMpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBUU3RyaW5nIGFw
aU5hbWUgPSBzdHJ1Y3RBUElOYW1lICsgIi4iICsgZmllbGQtPm5hbWUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgVFN0cmluZyBhcGlOYW1lICAgICAgICAgICAgICAgICAgICA9IHN0cnVjdEFQSU5h
bWUgKyAiLiIgKyBmaWVsZC0+bmFtZSgpOwogICAgICAgICAgICAgICAgICAgICAoKm91dHB1dFN5
bWJvbHNUb0FQSU5hbWVzKVtzeW1ib2xdID0gYXBpTmFtZTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CkBAIC00NjcsOSArNjIzLDkgQEAgVFN0cmluZyBURmllbGRMaXN0Q29sbGVj
dGlvbjo6YnVpbGRNYW5nbGVkTmFtZShjb25zdCBUU3RyaW5nICZtYW5nbGVkTmFtZVByZWZpeCkK
IHNpemVfdCBURmllbGRMaXN0Q29sbGVjdGlvbjo6Y2FsY3VsYXRlT2JqZWN0U2l6ZSgpIGNvbnN0
CiB7CiAgICAgc2l6ZV90IHNpemUgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUZp
ZWxkcy0+c2l6ZSgpOyArK2kpCisgICAgZm9yIChjb25zdCBURmllbGQgKmZpZWxkIDogKm1GaWVs
ZHMpCiAgICAgewotICAgICAgICBzaXplX3QgZmllbGRTaXplID0gKCptRmllbGRzKVtpXS0+dHlw
ZSgpLT5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIHNpemVfdCBmaWVsZFNpemUgPSBmaWVsZC0+
dHlwZSgpLT5nZXRPYmplY3RTaXplKCk7CiAgICAgICAgIGlmIChmaWVsZFNpemUgPiBJTlRfTUFY
IC0gc2l6ZSkKICAgICAgICAgICAgIHNpemUgPSBJTlRfTUFYOwogICAgICAgICBlbHNlCkBAIC00
NzgsNiArNjM0LDI0IEBAIHNpemVfdCBURmllbGRMaXN0Q29sbGVjdGlvbjo6Y2FsY3VsYXRlT2Jq
ZWN0U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHNpemU7CiB9CiAKK2ludCBURmllbGRMaXN0Q29s
bGVjdGlvbjo6Z2V0TG9jYXRpb25Db3VudCgpIGNvbnN0Cit7CisgICAgaW50IGNvdW50ID0gMDsK
KyAgICBmb3IgKGNvbnN0IFRGaWVsZCAqZmllbGQgOiAqbUZpZWxkcykKKyAgICB7CisgICAgICAg
IGludCBmaWVsZENvdW50ID0gZmllbGQtPnR5cGUoKS0+Z2V0TG9jYXRpb25Db3VudCgpOworICAg
ICAgICBpZiAoZmllbGRDb3VudCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkgLSBj
b3VudCkKKyAgICAgICAgeworICAgICAgICAgICAgY291bnQgPSBzdGQ6Om51bWVyaWNfbGltaXRz
PGludD46Om1heCgpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAg
ICAgICAgY291bnQgKz0gZmllbGRDb3VudDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4g
Y291bnQ7Cit9CisKIGludCBUU3RydWN0dXJlOjpjYWxjdWxhdGVEZWVwZXN0TmVzdGluZygpIGNv
bnN0CiB7CiAgICAgaW50IG1heE5lc3RpbmcgPSAwOwpAQCAtNDg1LDMgKzY1OSw1IEBAIGludCBU
U3RydWN0dXJlOjpjYWxjdWxhdGVEZWVwZXN0TmVzdGluZygpIGNvbnN0CiAgICAgICAgIG1heE5l
c3RpbmcgPSBzdGQ6Om1heChtYXhOZXN0aW5nLCAoKm1GaWVsZHMpW2ldLT50eXBlKCktPmdldERl
ZXBlc3RTdHJ1Y3ROZXN0aW5nKCkpOwogICAgIHJldHVybiAxICsgbWF4TmVzdGluZzsKIH0KKwor
fSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9UeXBlcy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHlwZXMuaAppbmRleCBhYjFiNmMzZmY3Nzc2NzA0OWZl
NGEzNzk2NDYwNjRmNzJlYTNmMTRkLi41MzBjODQwZTkwNWNjOGVjY2ZmN2I5NTgyNTg0MDY3NmQy
YTNlYmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9UeXBlcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1R5cGVzLmgKQEAgLTEzLDYgKzEzLDkgQEAKICNpbmNsdWRlICJjb21w
aWxlci90cmFuc2xhdG9yL0Jhc2VUeXBlcy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvQ29tbW9uLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBzdHJ1Y3QgVFB1YmxpY1R5cGU7CiBj
bGFzcyBUVHlwZTsKIGNsYXNzIFRTeW1ib2w7CkBAIC0yMywzMSArMjYsMTcgQEAgY2xhc3MgVEZp
ZWxkIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgIHB1YmxpYzoKICAgICBQT09MX0FMTE9DQVRPUl9O
RVdfREVMRVRFKCk7CiAgICAgVEZpZWxkKFRUeXBlICp0eXBlLCBUU3RyaW5nICpuYW1lLCBjb25z
dCBUU291cmNlTG9jICZsaW5lKQotICAgICAgICA6IG1UeXBlKHR5cGUpLAotICAgICAgICAgIG1O
YW1lKG5hbWUpLAotICAgICAgICAgIG1MaW5lKGxpbmUpCisgICAgICAgIDogbVR5cGUodHlwZSks
IG1OYW1lKG5hbWUpLCBtTGluZShsaW5lKQogICAgIHsKICAgICB9CiAKICAgICAvLyBUT0RPKGFs
b2twKTogV2Ugc2hvdWxkIG9ubHkgcmV0dXJuIGNvbnN0IHR5cGUuCiAgICAgLy8gRml4IGl0IGJ5
IHR3ZWFraW5nIGdyYW1tYXIuCi0gICAgVFR5cGUgKnR5cGUoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1UeXBlOwotICAgIH0KLSAgICBjb25zdCBUVHlwZSAqdHlwZSgpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gbVR5cGU7Ci0gICAgfQorICAgIFRUeXBlICp0eXBlKCkgeyByZXR1cm4g
bVR5cGU7IH0KKyAgICBjb25zdCBUVHlwZSAqdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1UeXBlOyB9
CiAKLSAgICBjb25zdCBUU3RyaW5nICZuYW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biAqbU5hbWU7Ci0gICAgfQotICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1MaW5lOwotICAgIH0KKyAgICBjb25zdCBUU3RyaW5nICZuYW1l
KCkgY29uc3QgeyByZXR1cm4gKm1OYW1lOyB9CisgICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSgp
IGNvbnN0IHsgcmV0dXJuIG1MaW5lOyB9CiAKICAgcHJpdmF0ZToKICAgICBUVHlwZSAqbVR5cGU7
CkBAIC01OSwzMyArNDgsMjggQEAgdHlwZWRlZiBUVmVjdG9yPFRGaWVsZCAqPiBURmllbGRMaXN0
OwogaW5saW5lIFRGaWVsZExpc3QgKk5ld1Bvb2xURmllbGRMaXN0KCkKIHsKICAgICB2b2lkICpt
ZW1vcnkgPSBHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCktPmFsbG9jYXRlKHNpemVvZihURmllbGRM
aXN0KSk7Ci0gICAgcmV0dXJuIG5ldyhtZW1vcnkpIFRGaWVsZExpc3Q7CisgICAgcmV0dXJuIG5l
dyAobWVtb3J5KSBURmllbGRMaXN0OwogfQogCiBjbGFzcyBURmllbGRMaXN0Q29sbGVjdGlvbiA6
IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6Ci0gICAgY29uc3QgVFN0cmluZyAmbmFt
ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKm1OYW1lOwotICAgIH0KLSAgICBjb25z
dCBURmllbGRMaXN0ICZmaWVsZHMoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICptRmll
bGRzOwotICAgIH0KKyAgICBjb25zdCBUU3RyaW5nICZuYW1lKCkgY29uc3QgeyByZXR1cm4gKm1O
YW1lOyB9CisgICAgY29uc3QgVEZpZWxkTGlzdCAmZmllbGRzKCkgY29uc3QgeyByZXR1cm4gKm1G
aWVsZHM7IH0KIAogICAgIHNpemVfdCBvYmplY3RTaXplKCkgY29uc3QKICAgICB7CiAgICAgICAg
IGlmIChtT2JqZWN0U2l6ZSA9PSAwKQogICAgICAgICAgICAgbU9iamVjdFNpemUgPSBjYWxjdWxh
dGVPYmplY3RTaXplKCk7CiAgICAgICAgIHJldHVybiBtT2JqZWN0U2l6ZTsKLSAgICB9OworICAg
IH0KKworICAgIC8vIEhvdyBtYW55IGxvY2F0aW9ucyB0aGUgZmllbGQgbGlzdCBjb25zdW1lcyBh
cyBhIHVuaWZvcm0uCisgICAgaW50IGdldExvY2F0aW9uQ291bnQoKSBjb25zdDsKIAogICBwcm90
ZWN0ZWQ6CiAgICAgVEZpZWxkTGlzdENvbGxlY3Rpb24oY29uc3QgVFN0cmluZyAqbmFtZSwgVEZp
ZWxkTGlzdCAqZmllbGRzKQotICAgICAgICA6IG1OYW1lKG5hbWUpLAotICAgICAgICAgIG1GaWVs
ZHMoZmllbGRzKSwKLSAgICAgICAgICBtT2JqZWN0U2l6ZSgwKQorICAgICAgICA6IG1OYW1lKG5h
bWUpLCBtRmllbGRzKGZpZWxkcyksIG1PYmplY3RTaXplKDApCiAgICAgewogICAgIH0KICAgICBU
U3RyaW5nIGJ1aWxkTWFuZ2xlZE5hbWUoY29uc3QgVFN0cmluZyAmbWFuZ2xlZE5hbWVQcmVmaXgp
IGNvbnN0OwpAQCAtMTE0LDYgKzk4LDcgQEAgY2xhc3MgVFN0cnVjdHVyZSA6IHB1YmxpYyBURmll
bGRMaXN0Q29sbGVjdGlvbgogICAgIGJvb2wgY29udGFpbnNBcnJheXMoKSBjb25zdDsKICAgICBi
b29sIGNvbnRhaW5zVHlwZShUQmFzaWNUeXBlIHQpIGNvbnN0OwogICAgIGJvb2wgY29udGFpbnNT
YW1wbGVycygpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNJbWFnZXMoKSBjb25zdDsKIAogICAg
IHZvaWQgY3JlYXRlU2FtcGxlclN5bWJvbHMoY29uc3QgVFN0cmluZyAmc3RydWN0TmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJnN0cnVjdEFQSU5hbWUs
CkBAIC0xMjMsMTAgKzEwOCw3IEBAIGNsYXNzIFRTdHJ1Y3R1cmUgOiBwdWJsaWMgVEZpZWxkTGlz
dENvbGxlY3Rpb24KIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IFRTdHJ1Y3R1cmUgJm90aGVyKSBj
b25zdDsKIAotICAgIHZvaWQgc2V0VW5pcXVlSWQoaW50IHVuaXF1ZUlkKQotICAgIHsKLSAgICAg
ICAgbVVuaXF1ZUlkID0gdW5pcXVlSWQ7Ci0gICAgfQorICAgIHZvaWQgc2V0VW5pcXVlSWQoaW50
IHVuaXF1ZUlkKSB7IG1VbmlxdWVJZCA9IHVuaXF1ZUlkOyB9CiAKICAgICBpbnQgdW5pcXVlSWQo
KSBjb25zdAogICAgIHsKQEAgLTEzNCwxNSArMTE2LDkgQEAgY2xhc3MgVFN0cnVjdHVyZSA6IHB1
YmxpYyBURmllbGRMaXN0Q29sbGVjdGlvbgogICAgICAgICByZXR1cm4gbVVuaXF1ZUlkOwogICAg
IH0KIAotICAgIHZvaWQgc2V0QXRHbG9iYWxTY29wZShib29sIGF0R2xvYmFsU2NvcGUpCi0gICAg
ewotICAgICAgICBtQXRHbG9iYWxTY29wZSA9IGF0R2xvYmFsU2NvcGU7Ci0gICAgfQorICAgIHZv
aWQgc2V0QXRHbG9iYWxTY29wZShib29sIGF0R2xvYmFsU2NvcGUpIHsgbUF0R2xvYmFsU2NvcGUg
PSBhdEdsb2JhbFNjb3BlOyB9CiAKLSAgICBib29sIGF0R2xvYmFsU2NvcGUoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIG1BdEdsb2JhbFNjb3BlOwotICAgIH0KKyAgICBib29sIGF0R2xv
YmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBtQXRHbG9iYWxTY29wZTsgfQogCiAgICAgY29uc3Qg
VFN0cmluZyAmbWFuZ2xlZE5hbWUoKSBjb25zdAogICAgIHsKQEAgLTE1OSw3ICsxMzUsNyBAQCBj
bGFzcyBUU3RydWN0dXJlIDogcHVibGljIFRGaWVsZExpc3RDb2xsZWN0aW9uCiAgICAgdm9pZCBz
ZXROYW1lKGNvbnN0IFRTdHJpbmcgJm5hbWUpCiAgICAgewogICAgICAgICBUU3RyaW5nICptdXRh
YmxlTmFtZSA9IGNvbnN0X2Nhc3Q8VFN0cmluZyAqPihtTmFtZSk7Ci0gICAgICAgICptdXRhYmxl
TmFtZSA9IG5hbWU7CisgICAgICAgICptdXRhYmxlTmFtZSAgICAgICAgID0gbmFtZTsKICAgICB9
CiAKICAgICBpbnQgY2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcoKSBjb25zdDsKQEAgLTE3Myw4ICsx
NDksMTEgQEAgY2xhc3MgVEludGVyZmFjZUJsb2NrIDogcHVibGljIFRGaWVsZExpc3RDb2xsZWN0
aW9uCiB7CiAgIHB1YmxpYzoKICAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7Ci0gICAg
VEludGVyZmFjZUJsb2NrKGNvbnN0IFRTdHJpbmcgKm5hbWUsIFRGaWVsZExpc3QgKmZpZWxkcywg
Y29uc3QgVFN0cmluZyAqaW5zdGFuY2VOYW1lLAotICAgICAgICAgICAgICAgICAgICBpbnQgYXJy
YXlTaXplLCBjb25zdCBUTGF5b3V0UXVhbGlmaWVyICZsYXlvdXRRdWFsaWZpZXIpCisgICAgVElu
dGVyZmFjZUJsb2NrKGNvbnN0IFRTdHJpbmcgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgIFRG
aWVsZExpc3QgKmZpZWxkcywKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAqaW5z
dGFuY2VOYW1lLAorICAgICAgICAgICAgICAgICAgICBpbnQgYXJyYXlTaXplLAorICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUTGF5b3V0UXVhbGlmaWVyICZsYXlvdXRRdWFsaWZpZXIpCiAgICAg
ICAgIDogVEZpZWxkTGlzdENvbGxlY3Rpb24obmFtZSwgZmllbGRzKSwKICAgICAgICAgICBtSW5z
dGFuY2VOYW1lKGluc3RhbmNlTmFtZSksCiAgICAgICAgICAgbUFycmF5U2l6ZShhcnJheVNpemUp
LApAQCAtMTgzLDMwICsxNjIsMTIgQEAgY2xhc3MgVEludGVyZmFjZUJsb2NrIDogcHVibGljIFRG
aWVsZExpc3RDb2xsZWN0aW9uCiAgICAgewogICAgIH0KIAotICAgIGNvbnN0IFRTdHJpbmcgJmlu
c3RhbmNlTmFtZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKm1JbnN0YW5jZU5hbWU7
Ci0gICAgfQotICAgIGJvb2wgaGFzSW5zdGFuY2VOYW1lKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBtSW5zdGFuY2VOYW1lICE9IE5VTEw7Ci0gICAgfQotICAgIGJvb2wgaXNBcnJheSgp
IGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbUFycmF5U2l6ZSA+IDA7Ci0gICAgfQotICAg
IGludCBhcnJheVNpemUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1BcnJheVNpemU7
Ci0gICAgfQotICAgIFRMYXlvdXRCbG9ja1N0b3JhZ2UgYmxvY2tTdG9yYWdlKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtQmxvY2tTdG9yYWdlOwotICAgIH0KLSAgICBUTGF5b3V0TWF0
cml4UGFja2luZyBtYXRyaXhQYWNraW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
TWF0cml4UGFja2luZzsKLSAgICB9CisgICAgY29uc3QgVFN0cmluZyAmaW5zdGFuY2VOYW1lKCkg
Y29uc3QgeyByZXR1cm4gKm1JbnN0YW5jZU5hbWU7IH0KKyAgICBib29sIGhhc0luc3RhbmNlTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1JbnN0YW5jZU5hbWUgIT0gTlVMTDsgfQorICAgIGJvb2wgaXNB
cnJheSgpIGNvbnN0IHsgcmV0dXJuIG1BcnJheVNpemUgPiAwOyB9CisgICAgaW50IGFycmF5U2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1BcnJheVNpemU7IH0KKyAgICBUTGF5b3V0QmxvY2tTdG9yYWdl
IGJsb2NrU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1CbG9ja1N0b3JhZ2U7IH0KKyAgICBUTGF5
b3V0TWF0cml4UGFja2luZyBtYXRyaXhQYWNraW5nKCkgY29uc3QgeyByZXR1cm4gbU1hdHJpeFBh
Y2tpbmc7IH0KICAgICBjb25zdCBUU3RyaW5nICZtYW5nbGVkTmFtZSgpIGNvbnN0CiAgICAgewog
ICAgICAgICBpZiAobU1hbmdsZWROYW1lLmVtcHR5KCkpCkBAIC0yMTUsOCArMTc2LDggQEAgY2xh
c3MgVEludGVyZmFjZUJsb2NrIDogcHVibGljIFRGaWVsZExpc3RDb2xsZWN0aW9uCiAgICAgfQog
CiAgIHByaXZhdGU6Ci0gICAgY29uc3QgVFN0cmluZyAqbUluc3RhbmNlTmFtZTsgLy8gZm9yIGlu
dGVyZmFjZSBibG9jayBpbnN0YW5jZSBuYW1lcwotICAgIGludCBtQXJyYXlTaXplOyAvLyAwIGlm
IG5vdCBhbiBhcnJheQorICAgIGNvbnN0IFRTdHJpbmcgKm1JbnN0YW5jZU5hbWU7ICAvLyBmb3Ig
aW50ZXJmYWNlIGJsb2NrIGluc3RhbmNlIG5hbWVzCisgICAgaW50IG1BcnJheVNpemU7ICAgICAg
ICAgICAgICAgIC8vIDAgaWYgbm90IGFuIGFycmF5CiAgICAgVExheW91dEJsb2NrU3RvcmFnZSBt
QmxvY2tTdG9yYWdlOwogICAgIFRMYXlvdXRNYXRyaXhQYWNraW5nIG1NYXRyaXhQYWNraW5nOwog
fTsKQEAgLTIyOSwxMCArMTkwLDE4IEBAIGNsYXNzIFRUeXBlCiAgIHB1YmxpYzoKICAgICBQT09M
X0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7CiAgICAgVFR5cGUoKQotICAgICAgICA6IHR5cGUoRWJ0
Vm9pZCksIHByZWNpc2lvbihFYnBVbmRlZmluZWQpLCBxdWFsaWZpZXIoRXZxR2xvYmFsKSwgaW52
YXJpYW50KGZhbHNlKSwKKyAgICAgICAgOiB0eXBlKEVidFZvaWQpLAorICAgICAgICAgIHByZWNp
c2lvbihFYnBVbmRlZmluZWQpLAorICAgICAgICAgIHF1YWxpZmllcihFdnFHbG9iYWwpLAorICAg
ICAgICAgIGludmFyaWFudChmYWxzZSksCisgICAgICAgICAgbWVtb3J5UXVhbGlmaWVyKFRNZW1v
cnlRdWFsaWZpZXI6OmNyZWF0ZSgpKSwKICAgICAgICAgICBsYXlvdXRRdWFsaWZpZXIoVExheW91
dFF1YWxpZmllcjo6Y3JlYXRlKCkpLAotICAgICAgICAgIHByaW1hcnlTaXplKDApLCBzZWNvbmRh
cnlTaXplKDApLCBhcnJheShmYWxzZSksIGFycmF5U2l6ZSgwKSwKLSAgICAgICAgICBpbnRlcmZh
Y2VCbG9jayhudWxscHRyKSwgc3RydWN0dXJlKG51bGxwdHIpCisgICAgICAgICAgcHJpbWFyeVNp
emUoMCksCisgICAgICAgICAgc2Vjb25kYXJ5U2l6ZSgwKSwKKyAgICAgICAgICBhcnJheShmYWxz
ZSksCisgICAgICAgICAgYXJyYXlTaXplKDApLAorICAgICAgICAgIGludGVyZmFjZUJsb2NrKG51
bGxwdHIpLAorICAgICAgICAgIHN0cnVjdHVyZShudWxscHRyKQogICAgIHsKICAgICB9CiAgICAg
ZXhwbGljaXQgVFR5cGUoVEJhc2ljVHlwZSB0LCB1bnNpZ25lZCBjaGFyIHBzID0gMSwgdW5zaWdu
ZWQgY2hhciBzcyA9IDEpCkBAIC0yNDAsNiArMjA5LDcgQEAgY2xhc3MgVFR5cGUKICAgICAgICAg
ICBwcmVjaXNpb24oRWJwVW5kZWZpbmVkKSwKICAgICAgICAgICBxdWFsaWZpZXIoRXZxR2xvYmFs
KSwKICAgICAgICAgICBpbnZhcmlhbnQoZmFsc2UpLAorICAgICAgICAgIG1lbW9yeVF1YWxpZmll
cihUTWVtb3J5UXVhbGlmaWVyOjpjcmVhdGUoKSksCiAgICAgICAgICAgbGF5b3V0UXVhbGlmaWVy
KFRMYXlvdXRRdWFsaWZpZXI6OmNyZWF0ZSgpKSwKICAgICAgICAgICBwcmltYXJ5U2l6ZShwcyks
CiAgICAgICAgICAgc2Vjb25kYXJ5U2l6ZShzcyksCkBAIC0yNDksMTIgKzIxOSwyNCBAQCBjbGFz
cyBUVHlwZQogICAgICAgICAgIHN0cnVjdHVyZSgwKQogICAgIHsKICAgICB9Ci0gICAgVFR5cGUo
VEJhc2ljVHlwZSB0LCBUUHJlY2lzaW9uIHAsIFRRdWFsaWZpZXIgcSA9IEV2cVRlbXBvcmFyeSwK
LSAgICAgICAgICB1bnNpZ25lZCBjaGFyIHBzID0gMSwgdW5zaWduZWQgY2hhciBzcyA9IDEsIGJv
b2wgYSA9IGZhbHNlKQotICAgICAgICA6IHR5cGUodCksIHByZWNpc2lvbihwKSwgcXVhbGlmaWVy
KHEpLCBpbnZhcmlhbnQoZmFsc2UpLAorICAgIFRUeXBlKFRCYXNpY1R5cGUgdCwKKyAgICAgICAg
ICBUUHJlY2lzaW9uIHAsCisgICAgICAgICAgVFF1YWxpZmllciBxICAgICA9IEV2cVRlbXBvcmFy
eSwKKyAgICAgICAgICB1bnNpZ25lZCBjaGFyIHBzID0gMSwKKyAgICAgICAgICB1bnNpZ25lZCBj
aGFyIHNzID0gMSwKKyAgICAgICAgICBib29sIGEgICAgICAgICAgID0gZmFsc2UpCisgICAgICAg
IDogdHlwZSh0KSwKKyAgICAgICAgICBwcmVjaXNpb24ocCksCisgICAgICAgICAgcXVhbGlmaWVy
KHEpLAorICAgICAgICAgIGludmFyaWFudChmYWxzZSksCisgICAgICAgICAgbWVtb3J5UXVhbGlm
aWVyKFRNZW1vcnlRdWFsaWZpZXI6OmNyZWF0ZSgpKSwKICAgICAgICAgICBsYXlvdXRRdWFsaWZp
ZXIoVExheW91dFF1YWxpZmllcjo6Y3JlYXRlKCkpLAotICAgICAgICAgIHByaW1hcnlTaXplKHBz
KSwgc2Vjb25kYXJ5U2l6ZShzcyksIGFycmF5KGEpLCBhcnJheVNpemUoMCksCi0gICAgICAgICAg
aW50ZXJmYWNlQmxvY2soMCksIHN0cnVjdHVyZSgwKQorICAgICAgICAgIHByaW1hcnlTaXplKHBz
KSwKKyAgICAgICAgICBzZWNvbmRhcnlTaXplKHNzKSwKKyAgICAgICAgICBhcnJheShhKSwKKyAg
ICAgICAgICBhcnJheVNpemUoMCksCisgICAgICAgICAgaW50ZXJmYWNlQmxvY2soMCksCisgICAg
ICAgICAgc3RydWN0dXJlKDApCiAgICAgewogICAgIH0KICAgICBleHBsaWNpdCBUVHlwZShjb25z
dCBUUHVibGljVHlwZSAmcCk7CkBAIC0yNjMsNiArMjQ1LDcgQEAgY2xhc3MgVFR5cGUKICAgICAg
ICAgICBwcmVjaXNpb24ocCksCiAgICAgICAgICAgcXVhbGlmaWVyKEV2cVRlbXBvcmFyeSksCiAg
ICAgICAgICAgaW52YXJpYW50KGZhbHNlKSwKKyAgICAgICAgICBtZW1vcnlRdWFsaWZpZXIoVE1l
bW9yeVF1YWxpZmllcjo6Y3JlYXRlKCkpLAogICAgICAgICAgIGxheW91dFF1YWxpZmllcihUTGF5
b3V0UXVhbGlmaWVyOjpjcmVhdGUoKSksCiAgICAgICAgICAgcHJpbWFyeVNpemUoMSksCiAgICAg
ICAgICAgc2Vjb25kYXJ5U2l6ZSgxKSwKQEAgLTI3MiwyMiArMjU1LDI5IEBAIGNsYXNzIFRUeXBl
CiAgICAgICAgICAgc3RydWN0dXJlKHVzZXJEZWYpCiAgICAgewogICAgIH0KLSAgICBUVHlwZShU
SW50ZXJmYWNlQmxvY2sgKmludGVyZmFjZUJsb2NrSW4sIFRRdWFsaWZpZXIgcXVhbGlmaWVySW4s
Ci0gICAgICAgICAgVExheW91dFF1YWxpZmllciBsYXlvdXRRdWFsaWZpZXJJbiwgaW50IGFycmF5
U2l6ZUluKQotICAgICAgICA6IHR5cGUoRWJ0SW50ZXJmYWNlQmxvY2spLCBwcmVjaXNpb24oRWJw
VW5kZWZpbmVkKSwgcXVhbGlmaWVyKHF1YWxpZmllckluKSwKLSAgICAgICAgICBpbnZhcmlhbnQo
ZmFsc2UpLCBsYXlvdXRRdWFsaWZpZXIobGF5b3V0UXVhbGlmaWVySW4pLAotICAgICAgICAgIHBy
aW1hcnlTaXplKDEpLCBzZWNvbmRhcnlTaXplKDEpLCBhcnJheShhcnJheVNpemVJbiA+IDApLCBh
cnJheVNpemUoYXJyYXlTaXplSW4pLAotICAgICAgICAgIGludGVyZmFjZUJsb2NrKGludGVyZmFj
ZUJsb2NrSW4pLCBzdHJ1Y3R1cmUoMCkKKyAgICBUVHlwZShUSW50ZXJmYWNlQmxvY2sgKmludGVy
ZmFjZUJsb2NrSW4sCisgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXJJbiwKKyAgICAgICAg
ICBUTGF5b3V0UXVhbGlmaWVyIGxheW91dFF1YWxpZmllckluLAorICAgICAgICAgIGludCBhcnJh
eVNpemVJbikKKyAgICAgICAgOiB0eXBlKEVidEludGVyZmFjZUJsb2NrKSwKKyAgICAgICAgICBw
cmVjaXNpb24oRWJwVW5kZWZpbmVkKSwKKyAgICAgICAgICBxdWFsaWZpZXIocXVhbGlmaWVySW4p
LAorICAgICAgICAgIGludmFyaWFudChmYWxzZSksCisgICAgICAgICAgbWVtb3J5UXVhbGlmaWVy
KFRNZW1vcnlRdWFsaWZpZXI6OmNyZWF0ZSgpKSwKKyAgICAgICAgICBsYXlvdXRRdWFsaWZpZXIo
bGF5b3V0UXVhbGlmaWVySW4pLAorICAgICAgICAgIHByaW1hcnlTaXplKDEpLAorICAgICAgICAg
IHNlY29uZGFyeVNpemUoMSksCisgICAgICAgICAgYXJyYXkoYXJyYXlTaXplSW4gPiAwKSwKKyAg
ICAgICAgICBhcnJheVNpemUoYXJyYXlTaXplSW4pLAorICAgICAgICAgIGludGVyZmFjZUJsb2Nr
KGludGVyZmFjZUJsb2NrSW4pLAorICAgICAgICAgIHN0cnVjdHVyZSgwKQogICAgIHsKICAgICB9
CiAKICAgICBUVHlwZShjb25zdCBUVHlwZSAmKSA9IGRlZmF1bHQ7CiAgICAgVFR5cGUgJm9wZXJh
dG9yPShjb25zdCBUVHlwZSAmKSA9IGRlZmF1bHQ7CiAKLSAgICBUQmFzaWNUeXBlIGdldEJhc2lj
VHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdHlwZTsKLSAgICB9CisgICAgVEJh
c2ljVHlwZSBnZXRCYXNpY1R5cGUoKSBjb25zdCB7IHJldHVybiB0eXBlOyB9CiAgICAgdm9pZCBz
ZXRCYXNpY1R5cGUoVEJhc2ljVHlwZSB0KQogICAgIHsKICAgICAgICAgaWYgKHR5cGUgIT0gdCkK
QEAgLTI5Nyw0OCArMjg3LDI0IEBAIGNsYXNzIFRUeXBlCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBUUHJlY2lzaW9uIGdldFByZWNpc2lvbigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
cHJlY2lzaW9uOwotICAgIH0KLSAgICB2b2lkIHNldFByZWNpc2lvbihUUHJlY2lzaW9uIHApCi0g
ICAgewotICAgICAgICBwcmVjaXNpb24gPSBwOwotICAgIH0KKyAgICBUUHJlY2lzaW9uIGdldFBy
ZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIHByZWNpc2lvbjsgfQorICAgIHZvaWQgc2V0UHJlY2lz
aW9uKFRQcmVjaXNpb24gcCkgeyBwcmVjaXNpb24gPSBwOyB9CiAKLSAgICBUUXVhbGlmaWVyIGdl
dFF1YWxpZmllcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcXVhbGlmaWVyOwotICAg
IH0KLSAgICB2b2lkIHNldFF1YWxpZmllcihUUXVhbGlmaWVyIHEpCi0gICAgewotICAgICAgICBx
dWFsaWZpZXIgPSBxOwotICAgIH0KKyAgICBUUXVhbGlmaWVyIGdldFF1YWxpZmllcigpIGNvbnN0
IHsgcmV0dXJuIHF1YWxpZmllcjsgfQorICAgIHZvaWQgc2V0UXVhbGlmaWVyKFRRdWFsaWZpZXIg
cSkgeyBxdWFsaWZpZXIgPSBxOyB9CiAKLSAgICBib29sIGlzSW52YXJpYW50KCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBpbnZhcmlhbnQ7Ci0gICAgfQorICAgIGJvb2wgaXNJbnZhcmlh
bnQoKSBjb25zdCB7IHJldHVybiBpbnZhcmlhbnQ7IH0KIAogICAgIHZvaWQgc2V0SW52YXJpYW50
KGJvb2wgaSkgeyBpbnZhcmlhbnQgPSBpOyB9CiAKLSAgICBUTGF5b3V0UXVhbGlmaWVyIGdldExh
eW91dFF1YWxpZmllcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbGF5b3V0UXVhbGlm
aWVyOwotICAgIH0KLSAgICB2b2lkIHNldExheW91dFF1YWxpZmllcihUTGF5b3V0UXVhbGlmaWVy
IGxxKQotICAgIHsKLSAgICAgICAgbGF5b3V0UXVhbGlmaWVyID0gbHE7Ci0gICAgfQorICAgIFRN
ZW1vcnlRdWFsaWZpZXIgZ2V0TWVtb3J5UXVhbGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbWVtb3J5
UXVhbGlmaWVyOyB9CisgICAgdm9pZCBzZXRNZW1vcnlRdWFsaWZpZXIoY29uc3QgVE1lbW9yeVF1
YWxpZmllciAmbXEpIHsgbWVtb3J5UXVhbGlmaWVyID0gbXE7IH0KIAotICAgIGludCBnZXROb21p
bmFsU2l6ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcHJpbWFyeVNpemU7Ci0gICAg
fQotICAgIGludCBnZXRTZWNvbmRhcnlTaXplKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBzZWNvbmRhcnlTaXplOwotICAgIH0KKyAgICBUTGF5b3V0UXVhbGlmaWVyIGdldExheW91dFF1
YWxpZmllcigpIGNvbnN0IHsgcmV0dXJuIGxheW91dFF1YWxpZmllcjsgfQorICAgIHZvaWQgc2V0
TGF5b3V0UXVhbGlmaWVyKFRMYXlvdXRRdWFsaWZpZXIgbHEpIHsgbGF5b3V0UXVhbGlmaWVyID0g
bHE7IH0KKworICAgIGludCBnZXROb21pbmFsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHByaW1hcnlT
aXplOyB9CisgICAgaW50IGdldFNlY29uZGFyeVNpemUoKSBjb25zdCB7IHJldHVybiBzZWNvbmRh
cnlTaXplOyB9CiAgICAgaW50IGdldENvbHMoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJU
KGlzTWF0cml4KCkpOwpAQCAtMzY5LDIyICszMzUsMTMgQEAgY2xhc3MgVFR5cGUKICAgICAvLyBG
dWxsIHNpemUgb2Ygc2luZ2xlIGluc3RhbmNlIG9mIHR5cGUKICAgICBzaXplX3QgZ2V0T2JqZWN0
U2l6ZSgpIGNvbnN0OwogCi0gICAgYm9vbCBpc01hdHJpeCgpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gcHJpbWFyeVNpemUgPiAxICYmIHNlY29uZGFyeVNpemUgPiAxOwotICAgIH0KLSAg
ICBib29sIGlzTm9uU3F1YXJlTWF0cml4KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBp
c01hdHJpeCgpICYmIHByaW1hcnlTaXplICE9IHNlY29uZGFyeVNpemU7Ci0gICAgfQotICAgIGJv
b2wgaXNBcnJheSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gYXJyYXk7Ci0gICAgfQot
ICAgIGJvb2wgaXNVbnNpemVkQXJyYXkoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGFy
cmF5ICYmIGFycmF5U2l6ZSA9PSAwdTsKLSAgICB9CisgICAgLy8gR2V0IGhvdyBtYW55IGxvY2F0
aW9ucyB0aGlzIHR5cGUgY29uc3VtZXMgYXMgYSB1bmlmb3JtLgorICAgIGludCBnZXRMb2NhdGlv
bkNvdW50KCkgY29uc3Q7CisKKyAgICBib29sIGlzTWF0cml4KCkgY29uc3QgeyByZXR1cm4gcHJp
bWFyeVNpemUgPiAxICYmIHNlY29uZGFyeVNpemUgPiAxOyB9CisgICAgYm9vbCBpc05vblNxdWFy
ZU1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIGlzTWF0cml4KCkgJiYgcHJpbWFyeVNpemUgIT0gc2Vj
b25kYXJ5U2l6ZTsgfQorICAgIGJvb2wgaXNBcnJheSgpIGNvbnN0IHsgcmV0dXJuIGFycmF5OyB9
CisgICAgYm9vbCBpc1Vuc2l6ZWRBcnJheSgpIGNvbnN0IHsgcmV0dXJuIGFycmF5ICYmIGFycmF5
U2l6ZSA9PSAwdTsgfQogICAgIHVuc2lnbmVkIGludCBnZXRBcnJheVNpemUoKSBjb25zdCB7IHJl
dHVybiBhcnJheVNpemU7IH0KICAgICB2b2lkIHNldEFycmF5U2l6ZSh1bnNpZ25lZCBpbnQgcykK
ICAgICB7CkBAIC00MDUsMTAgKzM2Miw3IEBAIGNsYXNzIFRUeXBlCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBUSW50ZXJmYWNlQmxvY2sgKmdldEludGVyZmFjZUJsb2NrKCkgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBpbnRlcmZhY2VCbG9jazsKLSAgICB9CisgICAgVEludGVyZmFjZUJs
b2NrICpnZXRJbnRlcmZhY2VCbG9jaygpIGNvbnN0IHsgcmV0dXJuIGludGVyZmFjZUJsb2NrOyB9
CiAgICAgdm9pZCBzZXRJbnRlcmZhY2VCbG9jayhUSW50ZXJmYWNlQmxvY2sgKmludGVyZmFjZUJs
b2NrSW4pCiAgICAgewogICAgICAgICBpZiAoaW50ZXJmYWNlQmxvY2sgIT0gaW50ZXJmYWNlQmxv
Y2tJbikKQEAgLTQxNywyOCArMzcxLDE0IEBAIGNsYXNzIFRUeXBlCiAgICAgICAgICAgICBpbnZh
bGlkYXRlTWFuZ2xlZE5hbWUoKTsKICAgICAgICAgfQogICAgIH0KLSAgICBib29sIGlzSW50ZXJm
YWNlQmxvY2soKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGUgPT0gRWJ0SW50ZXJm
YWNlQmxvY2s7Ci0gICAgfQorICAgIGJvb2wgaXNJbnRlcmZhY2VCbG9jaygpIGNvbnN0IHsgcmV0
dXJuIHR5cGUgPT0gRWJ0SW50ZXJmYWNlQmxvY2s7IH0KIAotICAgIGJvb2wgaXNWZWN0b3IoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHByaW1hcnlTaXplID4gMSAmJiBzZWNvbmRhcnlT
aXplID09IDE7Ci0gICAgfQotICAgIGJvb2wgaXNTY2FsYXIoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHByaW1hcnlTaXplID09IDEgJiYgc2Vjb25kYXJ5U2l6ZSA9PSAxICYmICFzdHJ1
Y3R1cmU7Ci0gICAgfQotICAgIGJvb2wgaXNTY2FsYXJJbnQoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGlzU2NhbGFyKCkgJiYgKHR5cGUgPT0gRWJ0SW50IHx8IHR5cGUgPT0gRWJ0VUlu
dCk7Ci0gICAgfQorICAgIGJvb2wgaXNWZWN0b3IoKSBjb25zdCB7IHJldHVybiBwcmltYXJ5U2l6
ZSA+IDEgJiYgc2Vjb25kYXJ5U2l6ZSA9PSAxOyB9CisgICAgYm9vbCBpc1NjYWxhcigpIGNvbnN0
IHsgcmV0dXJuIHByaW1hcnlTaXplID09IDEgJiYgc2Vjb25kYXJ5U2l6ZSA9PSAxICYmICFzdHJ1
Y3R1cmU7IH0KKyAgICBib29sIGlzU2NhbGFyRmxvYXQoKSBjb25zdCB7IHJldHVybiBpc1NjYWxh
cigpICYmIHR5cGUgPT0gRWJ0RmxvYXQ7IH0KKyAgICBib29sIGlzU2NhbGFySW50KCkgY29uc3Qg
eyByZXR1cm4gaXNTY2FsYXIoKSAmJiAodHlwZSA9PSBFYnRJbnQgfHwgdHlwZSA9PSBFYnRVSW50
KTsgfQogCi0gICAgVFN0cnVjdHVyZSAqZ2V0U3RydWN0KCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IHJldHVybiBzdHJ1Y3R1cmU7Ci0gICAgfQorICAgIFRTdHJ1Y3R1cmUgKmdldFN0cnVjdCgpIGNv
bnN0IHsgcmV0dXJuIHN0cnVjdHVyZTsgfQogICAgIHZvaWQgc2V0U3RydWN0KFRTdHJ1Y3R1cmUg
KnMpCiAgICAgewogICAgICAgICBpZiAoc3RydWN0dXJlICE9IHMpCkBAIC00NjEsMjQgKzQwMSwx
NyBAQCBjbGFzcyBUVHlwZQogCiAgICAgYm9vbCBzYW1lRWxlbWVudFR5cGUoY29uc3QgVFR5cGUg
JnJpZ2h0KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGUgPT0gcmlnaHQudHlwZSAm
JgotICAgICAgICAgICAgcHJpbWFyeVNpemUgPT0gcmlnaHQucHJpbWFyeVNpemUgJiYKLSAgICAg
ICAgICAgIHNlY29uZGFyeVNpemUgPT0gcmlnaHQuc2Vjb25kYXJ5U2l6ZSAmJgotICAgICAgICAg
ICAgc3RydWN0dXJlID09IHJpZ2h0LnN0cnVjdHVyZTsKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0g
cmlnaHQudHlwZSAmJiBwcmltYXJ5U2l6ZSA9PSByaWdodC5wcmltYXJ5U2l6ZSAmJgorICAgICAg
ICAgICAgICAgc2Vjb25kYXJ5U2l6ZSA9PSByaWdodC5zZWNvbmRhcnlTaXplICYmIHN0cnVjdHVy
ZSA9PSByaWdodC5zdHJ1Y3R1cmU7CiAgICAgfQogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBU
VHlwZSAmcmlnaHQpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gdHlwZSA9PSByaWdodC50
eXBlICYmCi0gICAgICAgICAgICBwcmltYXJ5U2l6ZSA9PSByaWdodC5wcmltYXJ5U2l6ZSAmJgot
ICAgICAgICAgICAgc2Vjb25kYXJ5U2l6ZSA9PSByaWdodC5zZWNvbmRhcnlTaXplICYmCi0gICAg
ICAgICAgICBhcnJheSA9PSByaWdodC5hcnJheSAmJiAoIWFycmF5IHx8IGFycmF5U2l6ZSA9PSBy
aWdodC5hcnJheVNpemUpICYmCi0gICAgICAgICAgICBzdHJ1Y3R1cmUgPT0gcmlnaHQuc3RydWN0
dXJlOworICAgICAgICByZXR1cm4gdHlwZSA9PSByaWdodC50eXBlICYmIHByaW1hcnlTaXplID09
IHJpZ2h0LnByaW1hcnlTaXplICYmCisgICAgICAgICAgICAgICBzZWNvbmRhcnlTaXplID09IHJp
Z2h0LnNlY29uZGFyeVNpemUgJiYgYXJyYXkgPT0gcmlnaHQuYXJyYXkgJiYKKyAgICAgICAgICAg
ICAgICghYXJyYXkgfHwgYXJyYXlTaXplID09IHJpZ2h0LmFycmF5U2l6ZSkgJiYgc3RydWN0dXJl
ID09IHJpZ2h0LnN0cnVjdHVyZTsKICAgICAgICAgLy8gZG9uJ3QgY2hlY2sgdGhlIHF1YWxpZmll
ciwgaXQncyBub3QgZXZlciB3aGF0J3MgYmVpbmcgc291Z2h0IGFmdGVyCiAgICAgfQotICAgIGJv
b2wgb3BlcmF0b3IhPShjb25zdCBUVHlwZSAmcmlnaHQpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gIW9wZXJhdG9yPT0ocmlnaHQpOwotICAgIH0KKyAgICBib29sIG9wZXJhdG9yIT0oY29u
c3QgVFR5cGUgJnJpZ2h0KSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShyaWdodCk7IH0KICAg
ICBib29sIG9wZXJhdG9yPChjb25zdCBUVHlwZSAmcmlnaHQpIGNvbnN0CiAgICAgewogICAgICAg
ICBpZiAodHlwZSAhPSByaWdodC50eXBlKQpAQCAtNDk3LDE5ICs0MzAsMTAgQEAgY2xhc3MgVFR5
cGUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IGNoYXIgKmdldEJh
c2ljU3RyaW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiA6OmdldEJhc2ljU3RyaW5n
KHR5cGUpOwotICAgIH0KKyAgICBjb25zdCBjaGFyICpnZXRCYXNpY1N0cmluZygpIGNvbnN0IHsg
cmV0dXJuIHNoOjpnZXRCYXNpY1N0cmluZyh0eXBlKTsgfQogCi0gICAgY29uc3QgY2hhciAqZ2V0
UHJlY2lzaW9uU3RyaW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiA6OmdldFByZWNp
c2lvblN0cmluZyhwcmVjaXNpb24pOwotICAgIH0KLSAgICBjb25zdCBjaGFyICpnZXRRdWFsaWZp
ZXJTdHJpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIDo6Z2V0UXVhbGlmaWVyU3Ry
aW5nKHF1YWxpZmllcik7Ci0gICAgfQorICAgIGNvbnN0IGNoYXIgKmdldFByZWNpc2lvblN0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIHNoOjpnZXRQcmVjaXNpb25TdHJpbmcocHJlY2lzaW9uKTsgfQor
ICAgIGNvbnN0IGNoYXIgKmdldFF1YWxpZmllclN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHNoOjpn
ZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKTsgfQogCiAgICAgY29uc3QgY2hhciAqZ2V0QnVp
bHRJblR5cGVOYW1lU3RyaW5nKCkgY29uc3Q7CiAKQEAgLTUyNywxMCArNDUxLDcgQEAgY2xhc3Mg
VFR5cGUKICAgICAvLyBGb3IgdHlwZSAibmVzdGluZzIiLCB0aGlzIG1ldGhvZCB3b3VsZCByZXR1
cm4gMiAtLSB0aGUgbnVtYmVyCiAgICAgLy8gb2Ygc3RydWN0dXJlcyB0aHJvdWdoIHdoaWNoIGlu
ZGlyZWN0aW9uIG11c3Qgb2NjdXIgdG8gcmVhY2ggdGhlCiAgICAgLy8gZGVlcGVzdCBmaWVsZCAo
bmVzdGluZzIuZmllbGQxLnBvc2l0aW9uKS4KLSAgICBpbnQgZ2V0RGVlcGVzdFN0cnVjdE5lc3Rp
bmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0cnVjdHVyZSA/IHN0cnVjdHVyZS0+
ZGVlcGVzdE5lc3RpbmcoKSA6IDA7Ci0gICAgfQorICAgIGludCBnZXREZWVwZXN0U3RydWN0TmVz
dGluZygpIGNvbnN0IHsgcmV0dXJuIHN0cnVjdHVyZSA/IHN0cnVjdHVyZS0+ZGVlcGVzdE5lc3Rp
bmcoKSA6IDA7IH0KIAogICAgIGJvb2wgaXNTdHJ1Y3R1cmVDb250YWluaW5nQXJyYXlzKCkgY29u
c3QKICAgICB7CkBAIC01NDcsNiArNDY4LDExIEBAIGNsYXNzIFRUeXBlCiAgICAgICAgIHJldHVy
biBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUtPmNvbnRhaW5zU2FtcGxlcnMoKSA6IGZhbHNlOwogICAg
IH0KIAorICAgIGJvb2wgaXNTdHJ1Y3R1cmVDb250YWluaW5nSW1hZ2VzKCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUtPmNvbnRhaW5zSW1hZ2VzKCkg
OiBmYWxzZTsKKyAgICB9CisKICAgICB2b2lkIGNyZWF0ZVNhbXBsZXJTeW1ib2xzKGNvbnN0IFRT
dHJpbmcgJnN0cnVjdE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
U3RyaW5nICZzdHJ1Y3RBUElOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdW5zaWduZWQgaW50IGFycmF5T2ZTdHJ1Y3RzU2l6ZSwKQEAgLTU1OSwyMyArNDg1LDIwIEBA
IGNsYXNzIFRUeXBlCiAgICAgfQogCiAgICAgLy8gSW5pdGlhbGl6ZXMgYWxsIGxhemlseS1pbml0
aWFsaXplZCBtZW1iZXJzLgotICAgIHZvaWQgcmVhbGl6ZSgpCi0gICAgewotICAgICAgICBnZXRN
YW5nbGVkTmFtZSgpOwotICAgIH0KKyAgICB2b2lkIHJlYWxpemUoKSB7IGdldE1hbmdsZWROYW1l
KCk7IH0KIAogICBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZU1hbmdsZWROYW1lKCkgeyBt
YW5nbGVkID0gIiI7IH0KICAgICBUU3RyaW5nIGJ1aWxkTWFuZ2xlZE5hbWUoKSBjb25zdDsKLSAg
ICBzaXplX3QgZ2V0U3RydWN0U2l6ZSgpIGNvbnN0OwogCiAgICAgVEJhc2ljVHlwZSB0eXBlOwog
ICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uOwogICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyOwogICAg
IGJvb2wgaW52YXJpYW50OworICAgIFRNZW1vcnlRdWFsaWZpZXIgbWVtb3J5UXVhbGlmaWVyOwog
ICAgIFRMYXlvdXRRdWFsaWZpZXIgbGF5b3V0UXVhbGlmaWVyOwotICAgIHVuc2lnbmVkIGNoYXIg
cHJpbWFyeVNpemU7IC8vIHNpemUgb2YgdmVjdG9yIG9yIGNvbHMgbWF0cml4Ci0gICAgdW5zaWdu
ZWQgY2hhciBzZWNvbmRhcnlTaXplOyAvLyByb3dzIG9mIGEgbWF0cml4CisgICAgdW5zaWduZWQg
Y2hhciBwcmltYXJ5U2l6ZTsgICAgLy8gc2l6ZSBvZiB2ZWN0b3Igb3IgY29scyBtYXRyaXgKKyAg
ICB1bnNpZ25lZCBjaGFyIHNlY29uZGFyeVNpemU7ICAvLyByb3dzIG9mIGEgbWF0cml4CiAgICAg
Ym9vbCBhcnJheTsKICAgICB1bnNpZ25lZCBpbnQgYXJyYXlTaXplOwogCkBAIC01OTMsOCArNTE2
LDggQEAgY2xhc3MgVFR5cGUKIHN0cnVjdCBUVHlwZVNwZWNpZmllck5vbkFycmF5CiB7CiAgICAg
VEJhc2ljVHlwZSB0eXBlOwotICAgIHVuc2lnbmVkIGNoYXIgcHJpbWFyeVNpemU7ICAgICAgICAg
IC8vIHNpemUgb2YgdmVjdG9yIG9yIGNvbHMgb2YgbWF0cml4Ci0gICAgdW5zaWduZWQgY2hhciBz
ZWNvbmRhcnlTaXplOyAgICAgICAgLy8gcm93cyBvZiBtYXRyaXgKKyAgICB1bnNpZ25lZCBjaGFy
IHByaW1hcnlTaXplOyAgICAvLyBzaXplIG9mIHZlY3RvciBvciBjb2xzIG9mIG1hdHJpeAorICAg
IHVuc2lnbmVkIGNoYXIgc2Vjb25kYXJ5U2l6ZTsgIC8vIHJvd3Mgb2YgbWF0cml4CiAgICAgVFR5
cGUgKnVzZXJEZWY7CiAgICAgVFNvdXJjZUxvYyBsaW5lOwogCkBAIC02MDMsMTggKzUyNiwxNSBA
QCBzdHJ1Y3QgVFR5cGVTcGVjaWZpZXJOb25BcnJheQogCiAgICAgdm9pZCBpbml0aWFsaXplKFRC
YXNpY1R5cGUgYnQsIGNvbnN0IFRTb3VyY2VMb2MgJmxuKQogICAgIHsKLSAgICAgICAgdHlwZSA9
IGJ0OwotICAgICAgICBwcmltYXJ5U2l6ZSA9IDE7Ci0gICAgICAgIHNlY29uZGFyeVNpemUgPSAx
OworICAgICAgICB0eXBlICAgICAgICAgICAgICA9IGJ0OworICAgICAgICBwcmltYXJ5U2l6ZSAg
ICAgICA9IDE7CisgICAgICAgIHNlY29uZGFyeVNpemUgICAgID0gMTsKICAgICAgICAgdXNlckRl
ZiAgICAgICAgICAgPSBudWxscHRyOwotICAgICAgICBsaW5lID0gbG47CisgICAgICAgIGxpbmUg
ICAgICAgICAgICAgID0gbG47CiAgICAgICAgIGlzU3RydWN0U3BlY2lmaWVyID0gZmFsc2U7CiAg
ICAgfQogCi0gICAgdm9pZCBzZXRBZ2dyZWdhdGUodW5zaWduZWQgY2hhciBzaXplKQotICAgIHsK
LSAgICAgICAgcHJpbWFyeVNpemUgPSBzaXplOwotICAgIH0KKyAgICB2b2lkIHNldEFnZ3JlZ2F0
ZSh1bnNpZ25lZCBjaGFyIHNpemUpIHsgcHJpbWFyeVNpemUgPSBzaXplOyB9CiAKICAgICB2b2lk
IHNldE1hdHJpeCh1bnNpZ25lZCBjaGFyIGNvbHVtbnMsIHVuc2lnbmVkIGNoYXIgcm93cykKICAg
ICB7CkBAIC02NDEsNiArNTYxLDcgQEAgc3RydWN0IFRQdWJsaWNUeXBlCiB7CiAgICAgVFR5cGVT
cGVjaWZpZXJOb25BcnJheSB0eXBlU3BlY2lmaWVyTm9uQXJyYXk7CiAgICAgVExheW91dFF1YWxp
ZmllciBsYXlvdXRRdWFsaWZpZXI7CisgICAgVE1lbW9yeVF1YWxpZmllciBtZW1vcnlRdWFsaWZp
ZXI7CiAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7CiAgICAgYm9vbCBpbnZhcmlhbnQ7CiAgICAg
VFByZWNpc2lvbiBwcmVjaXNpb247CkBAIC02NTEsNiArNTcyLDcgQEAgc3RydWN0IFRQdWJsaWNU
eXBlCiAgICAgewogICAgICAgICB0eXBlU3BlY2lmaWVyTm9uQXJyYXkgPSB0eXBlU3BlY2lmaWVy
OwogICAgICAgICBsYXlvdXRRdWFsaWZpZXIgICAgICAgPSBUTGF5b3V0UXVhbGlmaWVyOjpjcmVh
dGUoKTsKKyAgICAgICAgbWVtb3J5UXVhbGlmaWVyICAgICAgID0gVE1lbW9yeVF1YWxpZmllcjo6
Y3JlYXRlKCk7CiAgICAgICAgIHF1YWxpZmllciAgICAgICAgICAgICA9IHE7CiAgICAgICAgIGlu
dmFyaWFudCAgICAgICAgICAgICA9IGZhbHNlOwogICAgICAgICBwcmVjaXNpb24gICAgICAgICAg
ICAgPSBFYnBVbmRlZmluZWQ7CkBAIC02NTgsMTYgKzU4MCwyNSBAQCBzdHJ1Y3QgVFB1YmxpY1R5
cGUKICAgICAgICAgYXJyYXlTaXplICAgICAgICAgICAgID0gMDsKICAgICB9CiAKKyAgICB2b2lk
IGluaXRpYWxpemVCYXNpY1R5cGUoVEJhc2ljVHlwZSBiYXNpY1R5cGUpCisgICAgeworICAgICAg
ICB0eXBlU3BlY2lmaWVyTm9uQXJyYXkudHlwZSAgICAgICAgICA9IGJhc2ljVHlwZTsKKyAgICAg
ICAgdHlwZVNwZWNpZmllck5vbkFycmF5LnByaW1hcnlTaXplICAgPSAxOworICAgICAgICB0eXBl
U3BlY2lmaWVyTm9uQXJyYXkuc2Vjb25kYXJ5U2l6ZSA9IDE7CisgICAgICAgIGxheW91dFF1YWxp
ZmllciAgICAgICAgICAgICAgICAgICAgID0gVExheW91dFF1YWxpZmllcjo6Y3JlYXRlKCk7Cisg
ICAgICAgIG1lbW9yeVF1YWxpZmllciAgICAgICAgICAgICAgICAgICAgID0gVE1lbW9yeVF1YWxp
Zmllcjo6Y3JlYXRlKCk7CisgICAgICAgIHF1YWxpZmllciAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gRXZxVGVtcG9yYXJ5OworICAgICAgICBpbnZhcmlhbnQgICAgICAgICAgICAgICAgICAg
ICAgICAgICA9IGZhbHNlOworICAgICAgICBwcmVjaXNpb24gICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IEVicFVuZGVmaW5lZDsKKyAgICAgICAgYXJyYXkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBmYWxzZTsKKyAgICAgICAgYXJyYXlTaXplICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSAwOworICAgIH0KKwogICAgIFRCYXNpY1R5cGUgZ2V0QmFzaWNUeXBlKCkgY29uc3Qg
eyByZXR1cm4gdHlwZVNwZWNpZmllck5vbkFycmF5LnR5cGU7IH0KICAgICB2b2lkIHNldEJhc2lj
VHlwZShUQmFzaWNUeXBlIGJhc2ljVHlwZSkgeyB0eXBlU3BlY2lmaWVyTm9uQXJyYXkudHlwZSA9
IGJhc2ljVHlwZTsgfQogCiAgICAgdW5zaWduZWQgY2hhciBnZXRQcmltYXJ5U2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIHR5cGVTcGVjaWZpZXJOb25BcnJheS5wcmltYXJ5U2l6ZTsgfQogICAgIHVuc2ln
bmVkIGNoYXIgZ2V0U2Vjb25kYXJ5U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGVTcGVjaWZpZXJO
b25BcnJheS5zZWNvbmRhcnlTaXplOyB9Ci0gICAgdm9pZCBpbml0aWFsaXplU2l6ZUZvclNjYWxh
clR5cGVzKCkKLSAgICB7Ci0gICAgICAgIHR5cGVTcGVjaWZpZXJOb25BcnJheS5wcmltYXJ5U2l6
ZSAgID0gMTsKLSAgICAgICAgdHlwZVNwZWNpZmllck5vbkFycmF5LnNlY29uZGFyeVNpemUgPSAx
OwotICAgIH0KIAogICAgIGNvbnN0IFRUeXBlICpnZXRVc2VyRGVmKCkgY29uc3QgeyByZXR1cm4g
dHlwZVNwZWNpZmllck5vbkFycmF5LnVzZXJEZWY7IH0KICAgICBjb25zdCBUU291cmNlTG9jICZn
ZXRMaW5lKCkgY29uc3QgeyByZXR1cm4gdHlwZVNwZWNpZmllck5vbkFycmF5LmxpbmU7IH0KQEAg
LTcxMiw0ICs2NDMsNiBAQCBzdHJ1Y3QgVFB1YmxpY1R5cGUKICAgICB9CiB9OwogCi0jZW5kaWYg
Ly8gQ09NUElMRVJfVFJBTlNMQVRPUl9UWVBFU19IXworfSAgLy8gbmFtZXNwYWNlIHNoCisKKyNl
bmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9UWVBFU19IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJj
dWl0QVNULmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1VuZm9sZFNob3J0Q2lyY3VpdEFTVC5jcHAKaW5kZXggZTU3NjgxZWRhZDZkODk5NWViY2U3
OWEzMGEzMDFjNjBiMGVhN2RjYy4uZTZkOTUzYTAxNTI5OGE2ZWVkZGE0Zjk2M2I0NGZmODk0Y2Iy
ZGRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0QVNULmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuY3Bw
CkBAIC02LDYgKzYsOSBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRT
aG9ydENpcmN1aXRBU1QuaCIKIAorbmFtZXNwYWNlIHNoCit7CisKIG5hbWVzcGFjZQogewogCkBA
IC0xNCw4ICsxNyw4IEBAIFRJbnRlcm1UZXJuYXJ5ICpVbmZvbGRPUihUSW50ZXJtVHlwZWQgKngs
IFRJbnRlcm1UeXBlZCAqeSkKIHsKICAgICBUQ29uc3RhbnRVbmlvbiAqdSA9IG5ldyBUQ29uc3Rh
bnRVbmlvbjsKICAgICB1LT5zZXRCQ29uc3QodHJ1ZSk7Ci0gICAgVEludGVybUNvbnN0YW50VW5p
b24gKnRydWVOb2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKAotICAgICAgICB1LCBUVHlw
ZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0LCAxKSk7CisgICAgVEludGVybUNvbnN0
YW50VW5pb24gKnRydWVOb2RlID0KKyAgICAgICAgbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKHUs
IFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QsIDEpKTsKICAgICByZXR1cm4g
bmV3IFRJbnRlcm1UZXJuYXJ5KHgsIHRydWVOb2RlLCB5KTsKIH0KIApAQCAtMjQsOCArMjcsOCBA
QCBUSW50ZXJtVGVybmFyeSAqVW5mb2xkQU5EKFRJbnRlcm1UeXBlZCAqeCwgVEludGVybVR5cGVk
ICp5KQogewogICAgIFRDb25zdGFudFVuaW9uICp1ID0gbmV3IFRDb25zdGFudFVuaW9uOwogICAg
IHUtPnNldEJDb25zdChmYWxzZSk7Ci0gICAgVEludGVybUNvbnN0YW50VW5pb24gKmZhbHNlTm9k
ZSA9IG5ldyBUSW50ZXJtQ29uc3RhbnRVbmlvbigKLSAgICAgICAgdSwgVFR5cGUoRWJ0Qm9vbCwg
RWJwVW5kZWZpbmVkLCBFdnFDb25zdCwgMSkpOworICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpm
YWxzZU5vZGUgPQorICAgICAgICBuZXcgVEludGVybUNvbnN0YW50VW5pb24odSwgVFR5cGUoRWJ0
Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCwgMSkpOwogICAgIHJldHVybiBuZXcgVEludGVy
bVRlcm5hcnkoeCwgeSwgZmFsc2VOb2RlKTsKIH0KIApAQCAtMzcsMTQgKzQwLDE0IEBAIGJvb2wg
VW5mb2xkU2hvcnRDaXJjdWl0QVNUOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJp
bmFyeSAqbm9kZSkKIAogICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKICAgICB7Ci0gICAgICBj
YXNlIEVPcExvZ2ljYWxPcjoKLSAgICAgICAgcmVwbGFjZW1lbnQgPSBVbmZvbGRPUihub2RlLT5n
ZXRMZWZ0KCksIG5vZGUtPmdldFJpZ2h0KCkpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
RU9wTG9naWNhbEFuZDoKLSAgICAgICAgcmVwbGFjZW1lbnQgPSBVbmZvbGRBTkQobm9kZS0+Z2V0
TGVmdCgpLCBub2RlLT5nZXRSaWdodCgpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0
OgotICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6CisgICAgICAgICAg
ICByZXBsYWNlbWVudCA9IFVuZm9sZE9SKG5vZGUtPmdldExlZnQoKSwgbm9kZS0+Z2V0UmlnaHQo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BMb2dpY2FsQW5kOgorICAg
ICAgICAgICAgcmVwbGFjZW1lbnQgPSBVbmZvbGRBTkQobm9kZS0+Z2V0TGVmdCgpLCBub2RlLT5n
ZXRSaWdodCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGlmIChyZXBsYWNlbWVudCkKICAgICB7CkBAIC01Miwz
ICs1NSw1IEBAIGJvb2wgVW5mb2xkU2hvcnRDaXJjdWl0QVNUOjp2aXNpdEJpbmFyeShWaXNpdCB2
aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CisK
K30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0QVNULmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1
aXRBU1QuaAppbmRleCBiOTJhNGU5MTUyNmI1NTViNjNmMjIyZTMwYTJiMjA5Y2IyMTkzOTg5Li5m
ZTZkOGZkZjcyNTJjZWIxNDBlYjEyYmYzMTgwYTg2NzZjZjkzNjdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENp
cmN1aXRBU1QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuaApAQCAtMTMsNiArMTMsOSBAQAogI2luY2x1
ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9J
bnRlcm1Ob2RlLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiAvLyBUaGlzIHRyYXZlcnNlciBpZGVu
dGlmaWVzIGFsbCB0aGUgc2hvcnQgY2lyY3VpdCBiaW5hcnkgIG5vZGVzIHRoYXQgbmVlZCB0bwog
Ly8gYmUgcmVwbGFjZWQsIGFuZCBjcmVhdGVzIHRoZSBjb3JyZXNwb25kaW5nIHJlcGxhY2VtZW50
IG5vZGVzLiBIb3dldmVyLAogLy8gdGhlIGFjdHVhbCByZXBsYWNlbWVudHMgaGFwcGVuIGFmdGVy
IHRoZSB0cmF2ZXJzZSB0aHJvdWdoIHVwZGF0ZVRyZWUoKS4KQEAgLTIwLDEyICsyMywxMSBAQAog
Y2xhc3MgVW5mb2xkU2hvcnRDaXJjdWl0QVNUIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKIHsK
ICAgcHVibGljOgotICAgIFVuZm9sZFNob3J0Q2lyY3VpdEFTVCgpCi0gICAgICAgIDogVEludGVy
bVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpCi0gICAgewotICAgIH0KKyAgICBVbmZvbGRT
aG9ydENpcmN1aXRBU1QoKSA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSB7
fQogCiAgICAgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqKSBv
dmVycmlkZTsKIH07CiAKK30gIC8vIG5hbWVzcGFjZSBzaAorCiAjZW5kaWYgIC8vIENPTVBJTEVS
X1RSQU5TTEFUT1JfVU5GT0xEU0hPUlRDSVJDVUlUQVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1
aXRUb0lmLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1VuZm9sZFNob3J0Q2lyY3VpdFRvSWYuY3BwCmluZGV4IDcxMmY1OWFhZmRmZGQ2ZGYxNjc4
NzE2YWZhM2E4NTA3NTZkYmFiNzguLjM3NTExMjhhYTdkMmVkYjBjN2UxM2YzOTAwYTA5ZjkzNGQ0
ODJmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2lyY3VpdFRvSWYuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2lyY3VpdFRvSWYu
Y3BwCkBAIC0zLDcgKzMsOCBAQAogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KIC8vCi0vLyBVbmZvbGRTaG9ydENpcmN1aXRUb0lmIGlzIGFuIEFTVCB0cmF2
ZXJzZXIgdG8gY29udmVydCBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdG9ycyB0byBpZi1lbHNlIHN0
YXRlbWVudHMuCisvLyBVbmZvbGRTaG9ydENpcmN1aXRUb0lmIGlzIGFuIEFTVCB0cmF2ZXJzZXIg
dG8gY29udmVydCBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdG9ycyB0byBpZi1lbHNlCisvLyBzdGF0
ZW1lbnRzLgogLy8gVGhlIHJlc3VsdHMgYXJlIGFzc2lnbmVkIHRvIHMjIHRlbXBvcmFyaWVzLCB3
aGljaCBhcmUgdXNlZCBieSB0aGUgbWFpbiB0cmFuc2xhdG9yIGluc3RlYWQgb2YKIC8vIHRoZSBv
cmlnaW5hbCBleHByZXNzaW9uLgogLy8KQEAgLTEzLDYgKzE0LDkgQEAKICNpbmNsdWRlICJjb21w
aWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL0ludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogbmFt
ZXNwYWNlCiB7CiAKQEAgLTYzLDU4ICs2Nyw1OSBAQCBib29sIFVuZm9sZFNob3J0Q2lyY3VpdFRy
YXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpCiAK
ICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCiAgICAgewotICAgICAgY2FzZSBFT3BMb2dpY2Fs
T3I6Ci0gICAgICB7Ci0gICAgICAgICAgLy8gInggfHwgeSIgaXMgZXF1aXZhbGVudCB0byAieCA/
IHRydWUgOiB5Iiwgd2hpY2ggdW5mb2xkcyB0byAiYm9vbCBzOyBpZih4KSBzID0gdHJ1ZTsKLSAg
ICAgICAgICAvLyBlbHNlIHMgPSB5OyIsCi0gICAgICAgICAgLy8gYW5kIHRoZW4gZnVydGhlciBz
aW1wbGlmaWVzIGRvd24gdG8gImJvb2wgcyA9IHg7IGlmKCFzKSBzID0geTsiLgotCi0gICAgICAg
ICAgVEludGVybVNlcXVlbmNlIGluc2VydGlvbnM7Ci0gICAgICAgICAgVFR5cGUgYm9vbFR5cGUo
RWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFUZW1wb3JhcnkpOwotCi0gICAgICAgICAgQVNTRVJU
KG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpID09IGJvb2xUeXBlKTsKLSAgICAgICAgICBpbnNl
cnRpb25zLnB1c2hfYmFjayhjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKG5vZGUtPmdldExlZnQo
KSkpOwotCi0gICAgICAgICAgVEludGVybUJsb2NrICphc3NpZ25SaWdodEJsb2NrID0gbmV3IFRJ
bnRlcm1CbG9jaygpOwotICAgICAgICAgIEFTU0VSVChub2RlLT5nZXRSaWdodCgpLT5nZXRUeXBl
KCkgPT0gYm9vbFR5cGUpOwotICAgICAgICAgIGFzc2lnblJpZ2h0QmxvY2stPmdldFNlcXVlbmNl
KCktPnB1c2hfYmFjayhjcmVhdGVUZW1wQXNzaWdubWVudChub2RlLT5nZXRSaWdodCgpKSk7Ci0K
LSAgICAgICAgICBUSW50ZXJtVW5hcnkgKm5vdFRlbXBTeW1ib2wgPSBuZXcgVEludGVybVVuYXJ5
KEVPcExvZ2ljYWxOb3QsIGNyZWF0ZVRlbXBTeW1ib2woYm9vbFR5cGUpKTsKLSAgICAgICAgICBU
SW50ZXJtSWZFbHNlICppZk5vZGUgICAgICAgPSBuZXcgVEludGVybUlmRWxzZShub3RUZW1wU3lt
Ym9sLCBhc3NpZ25SaWdodEJsb2NrLCBudWxscHRyKTsKLSAgICAgICAgICBpbnNlcnRpb25zLnB1
c2hfYmFjayhpZk5vZGUpOwotCi0gICAgICAgICAgaW5zZXJ0U3RhdGVtZW50c0luUGFyZW50Qmxv
Y2soaW5zZXJ0aW9ucyk7Ci0KLSAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIGNyZWF0
ZVRlbXBTeW1ib2woYm9vbFR5cGUpLCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOwotICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGNhc2UgRU9wTG9naWNhbEFuZDoKLSAg
ICAgIHsKLSAgICAgICAgICAvLyAieCAmJiB5IiBpcyBlcXVpdmFsZW50IHRvICJ4ID8geSA6IGZh
bHNlIiwgd2hpY2ggdW5mb2xkcyB0byAiYm9vbCBzOyBpZih4KSBzID0geTsKLSAgICAgICAgICAv
LyBlbHNlIHMgPSBmYWxzZTsiLAotICAgICAgICAgIC8vIGFuZCB0aGVuIGZ1cnRoZXIgc2ltcGxp
ZmllcyBkb3duIHRvICJib29sIHMgPSB4OyBpZihzKSBzID0geTsiLgotICAgICAgICAgIFRJbnRl
cm1TZXF1ZW5jZSBpbnNlcnRpb25zOwotICAgICAgICAgIFRUeXBlIGJvb2xUeXBlKEVidEJvb2ws
IEVicFVuZGVmaW5lZCwgRXZxVGVtcG9yYXJ5KTsKLQotICAgICAgICAgIEFTU0VSVChub2RlLT5n
ZXRMZWZ0KCktPmdldFR5cGUoKSA9PSBib29sVHlwZSk7Ci0gICAgICAgICAgaW5zZXJ0aW9ucy5w
dXNoX2JhY2soY3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihub2RlLT5nZXRMZWZ0KCkpKTsKLQot
ICAgICAgICAgIFRJbnRlcm1CbG9jayAqYXNzaWduUmlnaHRCbG9jayA9IG5ldyBUSW50ZXJtQmxv
Y2soKTsKLSAgICAgICAgICBBU1NFUlQobm9kZS0+Z2V0UmlnaHQoKS0+Z2V0VHlwZSgpID09IGJv
b2xUeXBlKTsKLSAgICAgICAgICBhc3NpZ25SaWdodEJsb2NrLT5nZXRTZXF1ZW5jZSgpLT5wdXNo
X2JhY2soY3JlYXRlVGVtcEFzc2lnbm1lbnQobm9kZS0+Z2V0UmlnaHQoKSkpOwotCi0gICAgICAg
ICAgVEludGVybUlmRWxzZSAqaWZOb2RlID0KLSAgICAgICAgICAgICAgbmV3IFRJbnRlcm1JZkVs
c2UoY3JlYXRlVGVtcFN5bWJvbChib29sVHlwZSksIGFzc2lnblJpZ2h0QmxvY2ssIG51bGxwdHIp
OwotICAgICAgICAgIGluc2VydGlvbnMucHVzaF9iYWNrKGlmTm9kZSk7Ci0KLSAgICAgICAgICBp
bnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRCbG9jayhpbnNlcnRpb25zKTsKLQotICAgICAgICAgIHF1
ZXVlUmVwbGFjZW1lbnQobm9kZSwgY3JlYXRlVGVtcFN5bWJvbChib29sVHlwZSksIE9yaWdpbmFs
Tm9kZTo6SVNfRFJPUFBFRCk7Ci0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBjYXNlIEVPcExvZ2ljYWxPcjoKKyAgICAgICAgeworICAgICAgICAgICAg
Ly8gInggfHwgeSIgaXMgZXF1aXZhbGVudCB0byAieCA/IHRydWUgOiB5Iiwgd2hpY2ggdW5mb2xk
cyB0byAiYm9vbCBzOyBpZih4KSBzID0gdHJ1ZTsKKyAgICAgICAgICAgIC8vIGVsc2UgcyA9IHk7
IiwKKyAgICAgICAgICAgIC8vIGFuZCB0aGVuIGZ1cnRoZXIgc2ltcGxpZmllcyBkb3duIHRvICJi
b29sIHMgPSB4OyBpZighcykgcyA9IHk7Ii4KKworICAgICAgICAgICAgVEludGVybVNlcXVlbmNl
IGluc2VydGlvbnM7CisgICAgICAgICAgICBUVHlwZSBib29sVHlwZShFYnRCb29sLCBFYnBVbmRl
ZmluZWQsIEV2cVRlbXBvcmFyeSk7CisKKyAgICAgICAgICAgIEFTU0VSVChub2RlLT5nZXRMZWZ0
KCktPmdldFR5cGUoKSA9PSBib29sVHlwZSk7CisgICAgICAgICAgICBpbnNlcnRpb25zLnB1c2hf
YmFjayhjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKG5vZGUtPmdldExlZnQoKSkpOworCisgICAg
ICAgICAgICBUSW50ZXJtQmxvY2sgKmFzc2lnblJpZ2h0QmxvY2sgPSBuZXcgVEludGVybUJsb2Nr
KCk7CisgICAgICAgICAgICBBU1NFUlQobm9kZS0+Z2V0UmlnaHQoKS0+Z2V0VHlwZSgpID09IGJv
b2xUeXBlKTsKKyAgICAgICAgICAgIGFzc2lnblJpZ2h0QmxvY2stPmdldFNlcXVlbmNlKCktPnB1
c2hfYmFjayhjcmVhdGVUZW1wQXNzaWdubWVudChub2RlLT5nZXRSaWdodCgpKSk7CisKKyAgICAg
ICAgICAgIFRJbnRlcm1VbmFyeSAqbm90VGVtcFN5bWJvbCA9CisgICAgICAgICAgICAgICAgbmV3
IFRJbnRlcm1VbmFyeShFT3BMb2dpY2FsTm90LCBjcmVhdGVUZW1wU3ltYm9sKGJvb2xUeXBlKSk7
CisgICAgICAgICAgICBUSW50ZXJtSWZFbHNlICppZk5vZGUgPSBuZXcgVEludGVybUlmRWxzZShu
b3RUZW1wU3ltYm9sLCBhc3NpZ25SaWdodEJsb2NrLCBudWxscHRyKTsKKyAgICAgICAgICAgIGlu
c2VydGlvbnMucHVzaF9iYWNrKGlmTm9kZSk7CisKKyAgICAgICAgICAgIGluc2VydFN0YXRlbWVu
dHNJblBhcmVudEJsb2NrKGluc2VydGlvbnMpOworCisgICAgICAgICAgICBxdWV1ZVJlcGxhY2Vt
ZW50KG5vZGUsIGNyZWF0ZVRlbXBTeW1ib2woYm9vbFR5cGUpLCBPcmlnaW5hbE5vZGU6OklTX0RS
T1BQRUQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGNh
c2UgRU9wTG9naWNhbEFuZDoKKyAgICAgICAgeworICAgICAgICAgICAgLy8gInggJiYgeSIgaXMg
ZXF1aXZhbGVudCB0byAieCA/IHkgOiBmYWxzZSIsIHdoaWNoIHVuZm9sZHMgdG8gImJvb2wgczsg
aWYoeCkgcyA9IHk7CisgICAgICAgICAgICAvLyBlbHNlIHMgPSBmYWxzZTsiLAorICAgICAgICAg
ICAgLy8gYW5kIHRoZW4gZnVydGhlciBzaW1wbGlmaWVzIGRvd24gdG8gImJvb2wgcyA9IHg7IGlm
KHMpIHMgPSB5OyIuCisgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9uczsKKyAg
ICAgICAgICAgIFRUeXBlIGJvb2xUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxVGVtcG9y
YXJ5KTsKKworICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpID09
IGJvb2xUeXBlKTsKKyAgICAgICAgICAgIGluc2VydGlvbnMucHVzaF9iYWNrKGNyZWF0ZVRlbXBJ
bml0RGVjbGFyYXRpb24obm9kZS0+Z2V0TGVmdCgpKSk7CisKKyAgICAgICAgICAgIFRJbnRlcm1C
bG9jayAqYXNzaWduUmlnaHRCbG9jayA9IG5ldyBUSW50ZXJtQmxvY2soKTsKKyAgICAgICAgICAg
IEFTU0VSVChub2RlLT5nZXRSaWdodCgpLT5nZXRUeXBlKCkgPT0gYm9vbFR5cGUpOworICAgICAg
ICAgICAgYXNzaWduUmlnaHRCbG9jay0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGNyZWF0ZVRl
bXBBc3NpZ25tZW50KG5vZGUtPmdldFJpZ2h0KCkpKTsKKworICAgICAgICAgICAgVEludGVybUlm
RWxzZSAqaWZOb2RlID0KKyAgICAgICAgICAgICAgICBuZXcgVEludGVybUlmRWxzZShjcmVhdGVU
ZW1wU3ltYm9sKGJvb2xUeXBlKSwgYXNzaWduUmlnaHRCbG9jaywgbnVsbHB0cik7CisgICAgICAg
ICAgICBpbnNlcnRpb25zLnB1c2hfYmFjayhpZk5vZGUpOworCisgICAgICAgICAgICBpbnNlcnRT
dGF0ZW1lbnRzSW5QYXJlbnRCbG9jayhpbnNlcnRpb25zKTsKKworICAgICAgICAgICAgcXVldWVS
ZXBsYWNlbWVudChub2RlLCBjcmVhdGVUZW1wU3ltYm9sKGJvb2xUeXBlKSwgT3JpZ2luYWxOb2Rl
OjpJU19EUk9QUEVEKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIH0KIApAQCAtMTM0LDkgKzEzOSw3IEBAIGJvb2wgVW5mb2xkU2hv
cnRDaXJjdWl0VHJhdmVyc2VyOjp2aXNpdFRlcm5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1UZXJu
YXJ5ICpub2RlCiAgICAgLy8gVW5mb2xkICJiID8geCA6IHkiIGludG8gInR5cGUgczsgaWYoYikg
cyA9IHg7IGVsc2UgcyA9IHk7IgogICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zOwogCi0g
ICAgVEludGVybVN5bWJvbCAqdGVtcFN5bWJvbCAgICAgICAgID0gY3JlYXRlVGVtcFN5bWJvbChu
b2RlLT5nZXRUeXBlKCkpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnRlbXBEZWNsYXJhdGlvbiA9
IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcERlY2xhcmF0aW9uKTsKLSAgICB0ZW1wRGVjbGFyYXRp
b24tPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayh0ZW1wU3ltYm9sKTsKKyAgICBUSW50ZXJtRGVj
bGFyYXRpb24gKnRlbXBEZWNsYXJhdGlvbiA9IGNyZWF0ZVRlbXBEZWNsYXJhdGlvbihub2RlLT5n
ZXRUeXBlKCkpOwogICAgIGluc2VydGlvbnMucHVzaF9iYWNrKHRlbXBEZWNsYXJhdGlvbik7CiAK
ICAgICBUSW50ZXJtQmxvY2sgKnRydWVCbG9jayAgICAgICA9IG5ldyBUSW50ZXJtQmxvY2soKTsK
QEAgLTE2NSw3ICsxNjgsNyBAQCB2b2lkIFVuZm9sZFNob3J0Q2lyY3VpdFRyYXZlcnNlcjo6bmV4
dEl0ZXJhdGlvbigpCiAgICAgbmV4dFRlbXBvcmFyeUluZGV4KCk7CiB9CiAKLX0gLy8gbmFtZXNw
YWNlCit9ICAvLyBuYW1lc3BhY2UKIAogdm9pZCBVbmZvbGRTaG9ydENpcmN1aXRUb0lmKFRJbnRl
cm1Ob2RlICpyb290LCB1bnNpZ25lZCBpbnQgKnRlbXBvcmFyeUluZGV4KQogewpAQCAtMTc5LDYg
KzE4Miw3IEBAIHZvaWQgVW5mb2xkU2hvcnRDaXJjdWl0VG9JZihUSW50ZXJtTm9kZSAqcm9vdCwg
dW5zaWduZWQgaW50ICp0ZW1wb3JhcnlJbmRleCkKICAgICAgICAgcm9vdC0+dHJhdmVyc2UoJnRy
YXZlcnNlcik7CiAgICAgICAgIGlmICh0cmF2ZXJzZXIuZm91bmRTaG9ydENpcmN1aXQoKSkKICAg
ICAgICAgICAgIHRyYXZlcnNlci51cGRhdGVUcmVlKCk7Ci0gICAgfQotICAgIHdoaWxlICh0cmF2
ZXJzZXIuZm91bmRTaG9ydENpcmN1aXQoKSk7CisgICAgfSB3aGlsZSAodHJhdmVyc2VyLmZvdW5k
U2hvcnRDaXJjdWl0KCkpOwogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNob3J0
Q2lyY3VpdFRvSWYuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1VuZm9sZFNob3J0Q2lyY3VpdFRvSWYuaAppbmRleCAwZmUzN2I3MTQwMDkwMjQ2OTU0
NzA0NTAzNTgxM2FmMWFmOTlmYjQ3Li5iMWZmMDY0ZGQxMWRiMTM4ZjgzYjRiOTI4Yzk1NzU2N2Ji
YTc3NmY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXRUb0lmLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0VG9JZi5o
CkBAIC0zLDcgKzMsOCBAQAogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KIC8vCi0vLyBVbmZvbGRTaG9ydENpcmN1aXRUb0lmIGlzIGFuIEFTVCB0cmF2ZXJz
ZXIgdG8gY29udmVydCBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdG9ycyB0byBpZi1lbHNlIHN0YXRl
bWVudHMuCisvLyBVbmZvbGRTaG9ydENpcmN1aXRUb0lmIGlzIGFuIEFTVCB0cmF2ZXJzZXIgdG8g
Y29udmVydCBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdG9ycyB0byBpZi1lbHNlCisvLyBzdGF0ZW1l
bnRzLgogLy8gVGhlIHJlc3VsdHMgYXJlIGFzc2lnbmVkIHRvIHMjIHRlbXBvcmFyaWVzLCB3aGlj
aCBhcmUgdXNlZCBieSB0aGUgbWFpbiB0cmFuc2xhdG9yIGluc3RlYWQgb2YKIC8vIHRoZSBvcmln
aW5hbCBleHByZXNzaW9uLgogLy8KQEAgLTExLDggKzEyLDExIEBACiAjaWZuZGVmIENPTVBJTEVS
X1RSQU5TTEFUT1JfVU5GT0xEU0hPUlRDSVJDVUlUX0hfCiAjZGVmaW5lIENPTVBJTEVSX1RSQU5T
TEFUT1JfVU5GT0xEU0hPUlRDSVJDVUlUX0hfCiAKK25hbWVzcGFjZSBzaAorewogY2xhc3MgVElu
dGVybU5vZGU7CiAKIHZvaWQgVW5mb2xkU2hvcnRDaXJjdWl0VG9JZihUSW50ZXJtTm9kZSAqcm9v
dCwgdW5zaWduZWQgaW50ICp0ZW1wb3JhcnlJbmRleCk7Cit9ICAvLyBuYW1lc3BhY2Ugc2gKIAot
I2VuZGlmICAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9VTkZPTERTSE9SVENJUkNVSVRfSF8KKyNl
bmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9VTkZPTERTSE9SVENJUkNVSVRfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Vu
aWZvcm1ITFNMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1VuaWZvcm1ITFNMLmNwcAppbmRleCAzYTg1YzYwZmMxYjFmOTJmNGM1MjUxYTlhZGQ3
OGVmODE1NTJiMDA1Li5mMjczMzViZTQ4NTMyNDMxMTNkNzkyOGIzZmE3ZjI4M2ZmYmZlNjE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9Vbmlmb3JtSExTTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVW5pZm9ybUhMU0wuY3BwCkBAIC0zMiw3ICszMiw3IEBAIHN0YXRpYyBj
b25zdCBjaGFyICpVbmlmb3JtUmVnaXN0ZXJQcmVmaXgoY29uc3QgVFR5cGUgJnR5cGUpCiAKIHN0
YXRpYyBUU3RyaW5nIEludGVyZmFjZUJsb2NrRmllbGRUeXBlU3RyaW5nKGNvbnN0IFRGaWVsZCAm
ZmllbGQsIFRMYXlvdXRCbG9ja1N0b3JhZ2UgYmxvY2tTdG9yYWdlKQogewotICAgIGNvbnN0IFRU
eXBlICZmaWVsZFR5cGUgPSAqZmllbGQudHlwZSgpOworICAgIGNvbnN0IFRUeXBlICZmaWVsZFR5
cGUgICAgICAgICAgICAgICAgICAgPSAqZmllbGQudHlwZSgpOwogICAgIGNvbnN0IFRMYXlvdXRN
YXRyaXhQYWNraW5nIG1hdHJpeFBhY2tpbmcgPSBmaWVsZFR5cGUuZ2V0TGF5b3V0UXVhbGlmaWVy
KCkubWF0cml4UGFja2luZzsKICAgICBBU1NFUlQobWF0cml4UGFja2luZyAhPSBFbXBVbnNwZWNp
ZmllZCk7CiAgICAgVFN0cnVjdHVyZSAqc3RydWN0dXJlID0gZmllbGRUeXBlLmdldFN0cnVjdCgp
OwpAQCAtNDAsMTQgKzQwLDE1IEBAIHN0YXRpYyBUU3RyaW5nIEludGVyZmFjZUJsb2NrRmllbGRU
eXBlU3RyaW5nKGNvbnN0IFRGaWVsZCAmZmllbGQsIFRMYXlvdXRCbG9ja1N0CiAgICAgaWYgKGZp
ZWxkVHlwZS5pc01hdHJpeCgpKQogICAgIHsKICAgICAgICAgLy8gVXNlIEhMU0wgcm93LW1ham9y
IHBhY2tpbmcgZm9yIEdMU0wgY29sdW1uLW1ham9yIG1hdHJpY2VzCi0gICAgICAgIGNvbnN0IFRT
dHJpbmcgJm1hdHJpeFBhY2tTdHJpbmcgPSAobWF0cml4UGFja2luZyA9PSBFbXBSb3dNYWpvciA/
ICJjb2x1bW5fbWFqb3IiIDogInJvd19tYWpvciIpOworICAgICAgICBjb25zdCBUU3RyaW5nICZt
YXRyaXhQYWNrU3RyaW5nID0KKyAgICAgICAgICAgIChtYXRyaXhQYWNraW5nID09IEVtcFJvd01h
am9yID8gImNvbHVtbl9tYWpvciIgOiAicm93X21ham9yIik7CiAgICAgICAgIHJldHVybiBtYXRy
aXhQYWNrU3RyaW5nICsgIiAiICsgVHlwZVN0cmluZyhmaWVsZFR5cGUpOwogICAgIH0KICAgICBl
bHNlIGlmIChzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICAvLyBVc2UgSExTTCByb3ctbWFqb3Ig
cGFja2luZyBmb3IgR0xTTCBjb2x1bW4tbWFqb3IgbWF0cmljZXMKICAgICAgICAgcmV0dXJuIFF1
YWxpZmllZFN0cnVjdE5hbWVTdHJpbmcoKnN0cnVjdHVyZSwgbWF0cml4UGFja2luZyA9PSBFbXBD
b2x1bW5NYWpvciwKLSAgICAgICAgICAgIGJsb2NrU3RvcmFnZSA9PSBFYnNTdGQxNDApOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja1N0b3JhZ2UgPT0gRWJz
U3RkMTQwKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTYwLDE0ICs2MSwxNyBAQCBzdGF0
aWMgVFN0cmluZyBJbnRlcmZhY2VCbG9ja1N0cnVjdE5hbWUoY29uc3QgVEludGVyZmFjZUJsb2Nr
ICZpbnRlcmZhY2VCbG9jaykKICAgICByZXR1cm4gRGVjb3JhdGVQcml2YXRlKGludGVyZmFjZUJs
b2NrLm5hbWUoKSkgKyAiX3R5cGUiOwogfQogCi1Vbmlmb3JtSExTTDo6VW5pZm9ybUhMU0woU3Ry
dWN0dXJlSExTTCAqc3RydWN0dXJlSExTTCwgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSwgY29u
c3Qgc3RkOjp2ZWN0b3I8VW5pZm9ybT4gJnVuaWZvcm1zKQorVW5pZm9ybUhMU0w6OlVuaWZvcm1I
TFNMKFN0cnVjdHVyZUhMU0wgKnN0cnVjdHVyZUhMU0wsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxVbmlmb3JtPiAmdW5pZm9ybXMpCiAgICAgOiBtVW5pZm9ybVJlZ2lz
dGVyKDApLAogICAgICAgbUludGVyZmFjZUJsb2NrUmVnaXN0ZXIoMCksCiAgICAgICBtU2FtcGxl
clJlZ2lzdGVyKDApLAogICAgICAgbVN0cnVjdHVyZUhMU0woc3RydWN0dXJlSExTTCksCiAgICAg
ICBtT3V0cHV0VHlwZShvdXRwdXRUeXBlKSwKICAgICAgIG1Vbmlmb3Jtcyh1bmlmb3JtcykKLXt9
Cit7Cit9CiAKIHZvaWQgVW5pZm9ybUhMU0w6OnJlc2VydmVVbmlmb3JtUmVnaXN0ZXJzKHVuc2ln
bmVkIGludCByZWdpc3RlckNvdW50KQogewpAQCAtOTYsNyArMTAwLDggQEAgdW5zaWduZWQgaW50
IFVuaWZvcm1ITFNMOjphc3NpZ25Vbmlmb3JtUmVnaXN0ZXIoY29uc3QgVFR5cGUgJnR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3Ry
aW5nICZuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50ICpvdXRSZWdpc3RlckNvdW50KQogewotICAgIHVuc2lnbmVkIGludCBy
ZWdpc3RlckluZGV4ID0gKElzU2FtcGxlcih0eXBlLmdldEJhc2ljVHlwZSgpKSA/IG1TYW1wbGVy
UmVnaXN0ZXIgOiBtVW5pZm9ybVJlZ2lzdGVyKTsKKyAgICB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJJ
bmRleCA9CisgICAgICAgIChJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkgPyBtU2FtcGxl
clJlZ2lzdGVyIDogbVVuaWZvcm1SZWdpc3Rlcik7CiAKICAgICBjb25zdCBVbmlmb3JtICp1bmlm
b3JtID0gZmluZFVuaWZvcm1CeU5hbWUobmFtZSk7CiAgICAgQVNTRVJUKHVuaWZvcm0pOwpAQCAt
MTI2LDcgKzEzMSw3IEBAIHVuc2lnbmVkIGludCBVbmlmb3JtSExTTDo6YXNzaWduU2FtcGxlcklu
U3RydWN0VW5pZm9ybVJlZ2lzdGVyKGNvbnN0IFRUeXBlICZ0eXBlCiB7CiAgICAgLy8gU2FtcGxl
ciB0aGF0IGlzIGEgZmllbGQgb2YgYSB1bmlmb3JtIHN0cnVjdHVyZS4KICAgICBBU1NFUlQoSXNT
YW1wbGVyKHR5cGUuZ2V0QmFzaWNUeXBlKCkpKTsKLSAgICB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJJ
bmRleCA9IG1TYW1wbGVyUmVnaXN0ZXI7CisgICAgdW5zaWduZWQgaW50IHJlZ2lzdGVySW5kZXgg
ICAgICAgICAgICAgICAgICAgICA9IG1TYW1wbGVyUmVnaXN0ZXI7CiAgICAgbVVuaWZvcm1SZWdp
c3Rlck1hcFtzdGQ6OnN0cmluZyhuYW1lLmNfc3RyKCkpXSA9IHJlZ2lzdGVySW5kZXg7CiAgICAg
dW5zaWduZWQgaW50IHJlZ2lzdGVyQ291bnQgICAgICAgICAgICAgICAgICAgICA9IHR5cGUuaXNB
cnJheSgpID8gdHlwZS5nZXRBcnJheVNpemUoKSA6IDF1OwogICAgIG1TYW1wbGVyUmVnaXN0ZXIg
Kz0gcmVnaXN0ZXJDb3VudDsKQEAgLTE1Nyw3ICsxNjIsNyBAQCB2b2lkIFVuaWZvcm1ITFNMOjpv
dXRwdXRITFNMU2FtcGxlclVuaWZvcm1Hcm91cCgKIAogICAgICAgICAvLyBUaGUgdW5pZm9ybSBt
aWdodCBiZSBqdXN0IGEgcmVndWxhciBzYW1wbGVyIG9yIG9uZSBleHRyYWN0ZWQgZnJvbSBhIHN0
cnVjdC4KICAgICAgICAgdW5zaWduZWQgaW50IHNhbXBsZXJBcnJheUluZGV4ID0gMHU7Ci0gICAg
ICAgIGNvbnN0IFVuaWZvcm0gKnVuaWZvcm1CeU5hbWUgPSBmaW5kVW5pZm9ybUJ5TmFtZShuYW1l
KTsKKyAgICAgICAgY29uc3QgVW5pZm9ybSAqdW5pZm9ybUJ5TmFtZSAgID0gZmluZFVuaWZvcm1C
eU5hbWUobmFtZSk7CiAgICAgICAgIGlmICh1bmlmb3JtQnlOYW1lKQogICAgICAgICB7CiAgICAg
ICAgICAgICBzYW1wbGVyQXJyYXlJbmRleCA9IGFzc2lnblVuaWZvcm1SZWdpc3Rlcih0eXBlLCBu
YW1lLCAmcmVnaXN0ZXJDb3VudCk7CkBAIC0zNTYsMTAgKzM2MSwxMCBAQCBUU3RyaW5nIFVuaWZv
cm1ITFNMOjppbnRlcmZhY2VCbG9ja3NIZWFkZXIoY29uc3QgUmVmZXJlbmNlZFN5bWJvbHMgJnJl
ZmVyZW5jZWRJbgogICAgIGZvciAoUmVmZXJlbmNlZFN5bWJvbHM6OmNvbnN0X2l0ZXJhdG9yIGlu
dGVyZmFjZUJsb2NrSXQgPSByZWZlcmVuY2VkSW50ZXJmYWNlQmxvY2tzLmJlZ2luKCk7CiAgICAg
ICAgICBpbnRlcmZhY2VCbG9ja0l0ICE9IHJlZmVyZW5jZWRJbnRlcmZhY2VCbG9ja3MuZW5kKCk7
IGludGVyZmFjZUJsb2NrSXQrKykKICAgICB7Ci0gICAgICAgIGNvbnN0IFRUeXBlICZub2RlVHlw
ZSA9IGludGVyZmFjZUJsb2NrSXQtPnNlY29uZC0+Z2V0VHlwZSgpOworICAgICAgICBjb25zdCBU
VHlwZSAmbm9kZVR5cGUgICAgICAgICAgICAgICAgID0gaW50ZXJmYWNlQmxvY2tJdC0+c2Vjb25k
LT5nZXRUeXBlKCk7CiAgICAgICAgIGNvbnN0IFRJbnRlcmZhY2VCbG9jayAmaW50ZXJmYWNlQmxv
Y2sgPSAqbm9kZVR5cGUuZ2V0SW50ZXJmYWNlQmxvY2soKTsKIAotICAgICAgICB1bnNpZ25lZCBp
bnQgYXJyYXlTaXplID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihpbnRlcmZhY2VCbG9jay5h
cnJheVNpemUoKSk7CisgICAgICAgIHVuc2lnbmVkIGludCBhcnJheVNpemUgICAgICA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGludD4oaW50ZXJmYWNlQmxvY2suYXJyYXlTaXplKCkpOwogICAgICAg
ICB1bnNpZ25lZCBpbnQgYWN0aXZlUmVnaXN0ZXIgPSBtSW50ZXJmYWNlQmxvY2tSZWdpc3RlcjsK
IAogICAgICAgICBtSW50ZXJmYWNlQmxvY2tSZWdpc3Rlck1hcFtpbnRlcmZhY2VCbG9jay5uYW1l
KCkuY19zdHIoKV0gPSBhY3RpdmVSZWdpc3RlcjsKQEAgLTM3NiwyNSArMzgxLDMxIEBAIFRTdHJp
bmcgVW5pZm9ybUhMU0w6OmludGVyZmFjZUJsb2Nrc0hlYWRlcihjb25zdCBSZWZlcmVuY2VkU3lt
Ym9scyAmcmVmZXJlbmNlZEluCiAgICAgICAgIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aW50IGFycmF5SW5kZXggPSAwOyBhcnJheUluZGV4IDwgYXJyYXlTaXplOyBhcnJheUluZGV4Kysp
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50ZXJmYWNlQmxvY2tzICs9IGludGVy
ZmFjZUJsb2NrU3RyaW5nKGludGVyZmFjZUJsb2NrLCBhY3RpdmVSZWdpc3RlciArIGFycmF5SW5k
ZXgsIGFycmF5SW5kZXgpOworICAgICAgICAgICAgICAgIGludGVyZmFjZUJsb2NrcyArPQorICAg
ICAgICAgICAgICAgICAgICBpbnRlcmZhY2VCbG9ja1N0cmluZyhpbnRlcmZhY2VCbG9jaywgYWN0
aXZlUmVnaXN0ZXIgKyBhcnJheUluZGV4LCBhcnJheUluZGV4KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIGludGVyZmFjZUJs
b2NrcyArPSBpbnRlcmZhY2VCbG9ja1N0cmluZyhpbnRlcmZhY2VCbG9jaywgYWN0aXZlUmVnaXN0
ZXIsIEdMX0lOVkFMSURfSU5ERVgpOworICAgICAgICAgICAgaW50ZXJmYWNlQmxvY2tzICs9Cisg
ICAgICAgICAgICAgICAgaW50ZXJmYWNlQmxvY2tTdHJpbmcoaW50ZXJmYWNlQmxvY2ssIGFjdGl2
ZVJlZ2lzdGVyLCBHTF9JTlZBTElEX0lOREVYKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJl
dHVybiAoaW50ZXJmYWNlQmxvY2tzLmVtcHR5KCkgPyAiIiA6ICgiLy8gSW50ZXJmYWNlIEJsb2Nr
c1xuXG4iICsgaW50ZXJmYWNlQmxvY2tzKSk7CiB9CiAKLVRTdHJpbmcgVW5pZm9ybUhMU0w6Omlu
dGVyZmFjZUJsb2NrU3RyaW5nKGNvbnN0IFRJbnRlcmZhY2VCbG9jayAmaW50ZXJmYWNlQmxvY2ss
IHVuc2lnbmVkIGludCByZWdpc3RlckluZGV4LCB1bnNpZ25lZCBpbnQgYXJyYXlJbmRleCkKK1RT
dHJpbmcgVW5pZm9ybUhMU0w6OmludGVyZmFjZUJsb2NrU3RyaW5nKGNvbnN0IFRJbnRlcmZhY2VC
bG9jayAmaW50ZXJmYWNlQmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhcnJheUluZGV4KQogewotICAgIGNv
bnN0IFRTdHJpbmcgJmFycmF5SW5kZXhTdHJpbmcgPSAgKGFycmF5SW5kZXggIT0gR0xfSU5WQUxJ
RF9JTkRFWCA/IERlY29yYXRlKHN0cihhcnJheUluZGV4KSkgOiAiIik7CisgICAgY29uc3QgVFN0
cmluZyAmYXJyYXlJbmRleFN0cmluZyA9CisgICAgICAgIChhcnJheUluZGV4ICE9IEdMX0lOVkFM
SURfSU5ERVggPyBEZWNvcmF0ZShzdHIoYXJyYXlJbmRleCkpIDogIiIpOwogICAgIGNvbnN0IFRT
dHJpbmcgJmJsb2NrTmFtZSA9IGludGVyZmFjZUJsb2NrLm5hbWUoKSArIGFycmF5SW5kZXhTdHJp
bmc7CiAgICAgVFN0cmluZyBobHNsOwogCi0gICAgaGxzbCArPSAiY2J1ZmZlciAiICsgYmxvY2tO
YW1lICsgIiA6IHJlZ2lzdGVyKGIiICsgc3RyKHJlZ2lzdGVySW5kZXgpICsgIilcbiIKKyAgICBo
bHNsICs9ICJjYnVmZmVyICIgKyBibG9ja05hbWUgKyAiIDogcmVnaXN0ZXIoYiIgKyBzdHIocmVn
aXN0ZXJJbmRleCkgKworICAgICAgICAgICAgIilcbiIKICAgICAgICAgICAgICJ7XG4iOwogCiAg
ICAgaWYgKGludGVyZmFjZUJsb2NrLmhhc0luc3RhbmNlTmFtZSgpKQpAQCAtNDEzLDcgKzQyNCw4
IEBAIFRTdHJpbmcgVW5pZm9ybUhMU0w6OmludGVyZmFjZUJsb2NrU3RyaW5nKGNvbnN0IFRJbnRl
cmZhY2VCbG9jayAmaW50ZXJmYWNlQmxvY2ssCiAgICAgcmV0dXJuIGhsc2w7CiB9CiAKLVRTdHJp
bmcgVW5pZm9ybUhMU0w6OmludGVyZmFjZUJsb2NrSW5zdGFuY2VTdHJpbmcoY29uc3QgVEludGVy
ZmFjZUJsb2NrJiBpbnRlcmZhY2VCbG9jaywgdW5zaWduZWQgaW50IGFycmF5SW5kZXgpCitUU3Ry
aW5nIFVuaWZvcm1ITFNMOjppbnRlcmZhY2VCbG9ja0luc3RhbmNlU3RyaW5nKGNvbnN0IFRJbnRl
cmZhY2VCbG9jayAmaW50ZXJmYWNlQmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhcnJheUluZGV4KQogewogICAgIGlm
ICghaW50ZXJmYWNlQmxvY2suaGFzSW5zdGFuY2VOYW1lKCkpCiAgICAgewpAQCAtNDI5LDcgKzQ0
MSw4IEBAIFRTdHJpbmcgVW5pZm9ybUhMU0w6OmludGVyZmFjZUJsb2NrSW5zdGFuY2VTdHJpbmco
Y29uc3QgVEludGVyZmFjZUJsb2NrJiBpbnRlcmZhCiAgICAgfQogfQogCi1UU3RyaW5nIFVuaWZv
cm1ITFNMOjppbnRlcmZhY2VCbG9ja01lbWJlcnNTdHJpbmcoY29uc3QgVEludGVyZmFjZUJsb2Nr
ICZpbnRlcmZhY2VCbG9jaywgVExheW91dEJsb2NrU3RvcmFnZSBibG9ja1N0b3JhZ2UpCitUU3Ry
aW5nIFVuaWZvcm1ITFNMOjppbnRlcmZhY2VCbG9ja01lbWJlcnNTdHJpbmcoY29uc3QgVEludGVy
ZmFjZUJsb2NrICZpbnRlcmZhY2VCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUTGF5b3V0QmxvY2tTdG9yYWdlIGJsb2NrU3RvcmFnZSkKIHsK
ICAgICBUU3RyaW5nIGhsc2w7CiAKQEAgLTQzNyw3ICs0NTAsNyBAQCBUU3RyaW5nIFVuaWZvcm1I
TFNMOjppbnRlcmZhY2VCbG9ja01lbWJlcnNTdHJpbmcoY29uc3QgVEludGVyZmFjZUJsb2NrICZp
bnRlcmZhYwogCiAgICAgZm9yICh1bnNpZ25lZCBpbnQgdHlwZUluZGV4ID0gMDsgdHlwZUluZGV4
IDwgaW50ZXJmYWNlQmxvY2suZmllbGRzKCkuc2l6ZSgpOyB0eXBlSW5kZXgrKykKICAgICB7Ci0g
ICAgICAgIGNvbnN0IFRGaWVsZCAmZmllbGQgPSAqaW50ZXJmYWNlQmxvY2suZmllbGRzKClbdHlw
ZUluZGV4XTsKKyAgICAgICAgY29uc3QgVEZpZWxkICZmaWVsZCAgICA9ICppbnRlcmZhY2VCbG9j
ay5maWVsZHMoKVt0eXBlSW5kZXhdOwogICAgICAgICBjb25zdCBUVHlwZSAmZmllbGRUeXBlID0g
KmZpZWxkLnR5cGUoKTsKIAogICAgICAgICBpZiAoYmxvY2tTdG9yYWdlID09IEVic1N0ZDE0MCkK
QEAgLTQ0NiwxMyArNDU5LDE1IEBAIFRTdHJpbmcgVW5pZm9ybUhMU0w6OmludGVyZmFjZUJsb2Nr
TWVtYmVyc1N0cmluZyhjb25zdCBUSW50ZXJmYWNlQmxvY2sgJmludGVyZmFjCiAgICAgICAgICAg
ICBobHNsICs9IHBhZEhlbHBlci5wcmVQYWRkaW5nU3RyaW5nKGZpZWxkVHlwZSk7CiAgICAgICAg
IH0KIAotICAgICAgICBobHNsICs9ICIgICAgIiArIEludGVyZmFjZUJsb2NrRmllbGRUeXBlU3Ry
aW5nKGZpZWxkLCBibG9ja1N0b3JhZ2UpICsKLSAgICAgICAgICAgICAgICAiICIgKyBEZWNvcmF0
ZShmaWVsZC5uYW1lKCkpICsgQXJyYXlTdHJpbmcoZmllbGRUeXBlKSArICI7XG4iOworICAgICAg
ICBobHNsICs9ICIgICAgIiArIEludGVyZmFjZUJsb2NrRmllbGRUeXBlU3RyaW5nKGZpZWxkLCBi
bG9ja1N0b3JhZ2UpICsgIiAiICsKKyAgICAgICAgICAgICAgICBEZWNvcmF0ZShmaWVsZC5uYW1l
KCkpICsgQXJyYXlTdHJpbmcoZmllbGRUeXBlKSArICI7XG4iOwogCi0gICAgICAgIC8vIG11c3Qg
cGFkIG91dCBhZnRlciBtYXRyaWNlcyBhbmQgYXJyYXlzLCB3aGVyZSBITFNMIHVzdWFsbHkgYWxs
b3dzIGl0c2VsZiByb29tIHRvIHBhY2sgc3R1ZmYKKyAgICAgICAgLy8gbXVzdCBwYWQgb3V0IGFm
dGVyIG1hdHJpY2VzIGFuZCBhcnJheXMsIHdoZXJlIEhMU0wgdXN1YWxseSBhbGxvd3MgaXRzZWxm
IHJvb20gdG8gcGFjaworICAgICAgICAvLyBzdHVmZgogICAgICAgICBpZiAoYmxvY2tTdG9yYWdl
ID09IEVic1N0ZDE0MCkKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgYm9vbCB1c2VITFNM
Um93TWFqb3JQYWNraW5nID0gKGZpZWxkVHlwZS5nZXRMYXlvdXRRdWFsaWZpZXIoKS5tYXRyaXhQ
YWNraW5nID09IEVtcENvbHVtbk1ham9yKTsKKyAgICAgICAgICAgIGNvbnN0IGJvb2wgdXNlSExT
TFJvd01ham9yUGFja2luZyA9CisgICAgICAgICAgICAgICAgKGZpZWxkVHlwZS5nZXRMYXlvdXRR
dWFsaWZpZXIoKS5tYXRyaXhQYWNraW5nID09IEVtcENvbHVtbk1ham9yKTsKICAgICAgICAgICAg
IGhsc2wgKz0gcGFkSGVscGVyLnBvc3RQYWRkaW5nU3RyaW5nKGZpZWxkVHlwZSwgdXNlSExTTFJv
d01ham9yUGFja2luZyk7CiAgICAgICAgIH0KICAgICB9CkBAIC00NjQsMTAgKzQ3OSw5IEBAIFRT
dHJpbmcgVW5pZm9ybUhMU0w6OmludGVyZmFjZUJsb2NrU3RydWN0U3RyaW5nKGNvbnN0IFRJbnRl
cmZhY2VCbG9jayAmaW50ZXJmYWNlCiB7CiAgICAgY29uc3QgVExheW91dEJsb2NrU3RvcmFnZSBi
bG9ja1N0b3JhZ2UgPSBpbnRlcmZhY2VCbG9jay5ibG9ja1N0b3JhZ2UoKTsKIAotICAgIHJldHVy
biAic3RydWN0ICIgKyBJbnRlcmZhY2VCbG9ja1N0cnVjdE5hbWUoaW50ZXJmYWNlQmxvY2spICsg
IlxuIgorICAgIHJldHVybiAic3RydWN0ICIgKyBJbnRlcmZhY2VCbG9ja1N0cnVjdE5hbWUoaW50
ZXJmYWNlQmxvY2spICsKKyAgICAgICAgICAgIlxuIgogICAgICAgICAgICAie1xuIiArCi0gICAg
ICAgICAgIGludGVyZmFjZUJsb2NrTWVtYmVyc1N0cmluZyhpbnRlcmZhY2VCbG9jaywgYmxvY2tT
dG9yYWdlKSArCi0gICAgICAgICAgICJ9O1xuXG4iOworICAgICAgICAgICBpbnRlcmZhY2VCbG9j
a01lbWJlcnNTdHJpbmcoaW50ZXJmYWNlQmxvY2ssIGJsb2NrU3RvcmFnZSkgKyAifTtcblxuIjsK
IH0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvVW5pZm9ybUhMU0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1VuaWZvcm1ITFNMLmgKaW5kZXggYzAxYjkwZmUwMGQ0OWQ4NjIw
NmE5OWI0OTMxZmZmYmQ2ZWNkMjE4OC4uN2JiZjQxYjU4Zjc3YTM3MzY0ODdmYjI3YzVjNjgzZDk2
NGIzM2ZhMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvVW5pZm9ybUhMU0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9Vbmlmb3JtSExTTC5oCkBAIC0yMCw3ICsyMCw5IEBAIGNs
YXNzIFN0cnVjdHVyZUhMU0w7CiBjbGFzcyBVbmlmb3JtSExTTCA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQogewogICBwdWJsaWM6Ci0gICAgVW5pZm9ybUhMU0woU3RydWN0dXJlSExTTCAqc3RydWN0dXJl
SExTTCwgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSwgY29uc3Qgc3RkOjp2ZWN0b3I8VW5pZm9y
bT4gJnVuaWZvcm1zKTsKKyAgICBVbmlmb3JtSExTTChTdHJ1Y3R1cmVITFNMICpzdHJ1Y3R1cmVI
TFNMLAorICAgICAgICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dFR5cGUsCisgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VW5pZm9ybT4gJnVuaWZvcm1zKTsKIAogICAgIHZv
aWQgcmVzZXJ2ZVVuaWZvcm1SZWdpc3RlcnModW5zaWduZWQgaW50IHJlZ2lzdGVyQ291bnQpOwog
ICAgIHZvaWQgcmVzZXJ2ZUludGVyZmFjZUJsb2NrUmVnaXN0ZXJzKHVuc2lnbmVkIGludCByZWdp
c3RlckNvdW50KTsKQEAgLTM0LDcgKzM2LDggQEAgY2xhc3MgVW5pZm9ybUhMU0wgOiBhbmdsZTo6
Tm9uQ29weWFibGUKICAgICBUU3RyaW5nIGludGVyZmFjZUJsb2Nrc0hlYWRlcihjb25zdCBSZWZl
cmVuY2VkU3ltYm9scyAmcmVmZXJlbmNlZEludGVyZmFjZUJsb2Nrcyk7CiAKICAgICAvLyBVc2Vk
IGZvciBkaXJlY3QgaW5kZXggcmVmZXJlbmNlcwotICAgIHN0YXRpYyBUU3RyaW5nIGludGVyZmFj
ZUJsb2NrSW5zdGFuY2VTdHJpbmcoY29uc3QgVEludGVyZmFjZUJsb2NrJiBpbnRlcmZhY2VCbG9j
aywgdW5zaWduZWQgaW50IGFycmF5SW5kZXgpOworICAgIHN0YXRpYyBUU3RyaW5nIGludGVyZmFj
ZUJsb2NrSW5zdGFuY2VTdHJpbmcoY29uc3QgVEludGVyZmFjZUJsb2NrICZpbnRlcmZhY2VCbG9j
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBhcnJheUluZGV4KTsKIAogICAgIGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1
bnNpZ25lZCBpbnQ+ICZnZXRJbnRlcmZhY2VCbG9ja1JlZ2lzdGVyTWFwKCkgY29uc3QKICAgICB7
CkBAIC00Niw4ICs0OSwxMSBAQCBjbGFzcyBVbmlmb3JtSExTTCA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQogICAgIH0KIAogICBwcml2YXRlOgotICAgIFRTdHJpbmcgaW50ZXJmYWNlQmxvY2tTdHJpbmco
Y29uc3QgVEludGVyZmFjZUJsb2NrICZpbnRlcmZhY2VCbG9jaywgdW5zaWduZWQgaW50IHJlZ2lz
dGVySW5kZXgsIHVuc2lnbmVkIGludCBhcnJheUluZGV4KTsKLSAgICBUU3RyaW5nIGludGVyZmFj
ZUJsb2NrTWVtYmVyc1N0cmluZyhjb25zdCBUSW50ZXJmYWNlQmxvY2sgJmludGVyZmFjZUJsb2Nr
LCBUTGF5b3V0QmxvY2tTdG9yYWdlIGJsb2NrU3RvcmFnZSk7CisgICAgVFN0cmluZyBpbnRlcmZh
Y2VCbG9ja1N0cmluZyhjb25zdCBUSW50ZXJmYWNlQmxvY2sgJmludGVyZmFjZUJsb2NrLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHJlZ2lzdGVySW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJyYXlJbmRl
eCk7CisgICAgVFN0cmluZyBpbnRlcmZhY2VCbG9ja01lbWJlcnNTdHJpbmcoY29uc3QgVEludGVy
ZmFjZUJsb2NrICZpbnRlcmZhY2VCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUTGF5b3V0QmxvY2tTdG9yYWdlIGJsb2NrU3RvcmFnZSk7CiAgICAgVFN0cmlu
ZyBpbnRlcmZhY2VCbG9ja1N0cnVjdFN0cmluZyhjb25zdCBUSW50ZXJmYWNlQmxvY2sgJmludGVy
ZmFjZUJsb2NrKTsKICAgICBjb25zdCBVbmlmb3JtICpmaW5kVW5pZm9ybUJ5TmFtZShjb25zdCBU
U3RyaW5nICZuYW1lKSBjb25zdDsKIApAQCAtODYsNyArOTIsNiBAQCBjbGFzcyBVbmlmb3JtSExT
TCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1bnNpZ25l
ZCBpbnQ+IG1JbnRlcmZhY2VCbG9ja1JlZ2lzdGVyTWFwOwogICAgIHN0ZDo6bWFwPHN0ZDo6c3Ry
aW5nLCB1bnNpZ25lZCBpbnQ+IG1Vbmlmb3JtUmVnaXN0ZXJNYXA7CiB9OwotCiB9CiAKLSNlbmRp
ZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1VOSUZPUk1ITFNMX0hfCisjZW5kaWYgIC8vIENPTVBJ
TEVSX1RSQU5TTEFUT1JfVU5JRk9STUhMU0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VzZUludGVyZmFjZUJsb2NrRmllbGRz
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Vz
ZUludGVyZmFjZUJsb2NrRmllbGRzLmNwcAppbmRleCAyYTFhODEyZTJkMTQwZDcxZmVjMTgzZWQ0
OTQyZGQyNWM0NWNlZjgzLi4zOTBlMmIwOTJhY2FhMGM2NGM1YjI4ODJhNmMxOTY5MDFjNWUxYjZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9Vc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMuY3Bw
CkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Vc2VJbnRl
cmZhY2VCbG9ja0ZpZWxkcy5oIgogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRl
cm1Ob2RlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgog
I2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdXRpbC5oIgogCiBuYW1lc3BhY2Ugc2gKQEAg
LTIyLDkgKzIzLDEzIEBAIG5hbWVzcGFjZQogY2xhc3MgVXNlVW5pZm9ybUJsb2NrTWVtYmVycyA6
IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiB7CiAgIHB1YmxpYzoKLSAgICBVc2VVbmlmb3JtQmxv
Y2tNZW1iZXJzKGNvbnN0IEludGVyZmFjZUJsb2NrTGlzdCAmYmxvY2tzKQotICAgICAgICA6IFRJ
bnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwgbUJsb2NrcyhibG9ja3MpLCBtQ29k
ZUluc2VydGVkKGZhbHNlKQorICAgIFVzZVVuaWZvcm1CbG9ja01lbWJlcnMoY29uc3QgSW50ZXJm
YWNlQmxvY2tMaXN0ICZibG9ja3MsIGNvbnN0IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUpCisg
ICAgICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLAorICAgICAgICAg
IG1CbG9ja3MoYmxvY2tzKSwKKyAgICAgICAgICBtU3ltYm9sVGFibGUoc3ltYm9sVGFibGUpLAor
ICAgICAgICAgIG1Db2RlSW5zZXJ0ZWQoZmFsc2UpCiAgICAgeworICAgICAgICBBU1NFUlQobVN5
bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSk7CiAgICAgfQogCiAgIHByb3RlY3RlZDoKQEAgLTM2
LDYgKzQxLDcgQEAgY2xhc3MgVXNlVW5pZm9ybUJsb2NrTWVtYmVycyA6IHB1YmxpYyBUSW50ZXJt
VHJhdmVyc2VyCiAgICAgdm9pZCBBZGRGaWVsZFVzZVN0YXRlbWVudHMoY29uc3QgU2hhZGVyVmFy
aWFibGUgJnZhciwgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSk7CiAKICAgICBjb25zdCBJbnRl
cmZhY2VCbG9ja0xpc3QgJm1CbG9ja3M7CisgICAgY29uc3QgVFN5bWJvbFRhYmxlICZtU3ltYm9s
VGFibGU7CiAgICAgYm9vbCBtQ29kZUluc2VydGVkOwogfTsKIApAQCAtNTcsOCArNjMsNiBAQCB2
b2lkIFVzZVVuaWZvcm1CbG9ja01lbWJlcnM6OkFkZEZpZWxkVXNlU3RhdGVtZW50cyhjb25zdCBT
aGFkZXJWYXJpYWJsZSAmdmFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSkKIHsKICAgICBUU3RyaW5n
IG5hbWUgPSBUU3RyaW5nKHZhci5uYW1lLmNfc3RyKCkpOwotICAgIFRUeXBlIHR5cGUgICA9IEdl
dFNoYWRlclZhcmlhYmxlVHlwZSh2YXIpOwotCiAgICAgaWYgKHZhci5pc0FycmF5KCkpCiAgICAg
ewogICAgICAgICBzaXplX3QgcG9zID0gbmFtZS5maW5kX2xhc3Rfb2YoJ1snKTsKQEAgLTY2LDMz
ICs3MCwzNSBAQCB2b2lkIFVzZVVuaWZvcm1CbG9ja01lbWJlcnM6OkFkZEZpZWxkVXNlU3RhdGVt
ZW50cyhjb25zdCBTaGFkZXJWYXJpYWJsZSAmdmFyLAogICAgICAgICB7CiAgICAgICAgICAgICBu
YW1lID0gbmFtZS5zdWJzdHIoMCwgcG9zKTsKICAgICAgICAgfQotICAgICAgICBUVHlwZSBlbGVt
ZW50VHlwZSA9IHR5cGU7Ci0gICAgICAgIGVsZW1lbnRUeXBlLmNsZWFyQXJyYXluZXNzKCk7Cisg
ICAgfQorICAgIGNvbnN0IFRUeXBlICp0eXBlOworICAgIFRUeXBlIGJhc2ljVHlwZTsKKyAgICBp
ZiAodmFyLmlzU3RydWN0KCkpCisgICAgeworICAgICAgICBUVmFyaWFibGUgKnN0cnVjdEluZm8g
PSByZWludGVycHJldF9jYXN0PFRWYXJpYWJsZSAqPihtU3ltYm9sVGFibGUuZmluZEdsb2JhbChu
YW1lKSk7CisgICAgICAgIEFTU0VSVChzdHJ1Y3RJbmZvKTsKKyAgICAgICAgY29uc3QgVFR5cGUg
JnN0cnVjdFR5cGUgPSBzdHJ1Y3RJbmZvLT5nZXRUeXBlKCk7CisgICAgICAgIHR5cGUgICAgICAg
ICAgICAgICAgICAgID0gJnN0cnVjdFR5cGU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIGJhc2ljVHlwZSA9IHNoOjpHZXRTaGFkZXJWYXJpYWJsZUJhc2ljVHlwZSh2YXIpOworICAg
ICAgICB0eXBlICAgICAgPSAmYmFzaWNUeXBlOworICAgIH0KKyAgICBBU1NFUlQodHlwZSk7CiAK
LSAgICAgICAgVEludGVybVN5bWJvbCAqYXJyYXlTeW1ib2wgPSBuZXcgVEludGVybVN5bWJvbCgw
LCBuYW1lLCB0eXBlKTsKKyAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSBuZXcgVEludGVybVN5
bWJvbCgwLCBuYW1lLCAqdHlwZSk7CisgICAgaWYgKHZhci5pc0FycmF5KCkpCisgICAgewogICAg
ICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHZhci5hcnJheVNpemU7ICsraSkKICAg
ICAgICAgewogICAgICAgICAgICAgVEludGVybUJpbmFyeSAqZWxlbWVudCA9Ci0gICAgICAgICAg
ICAgICAgbmV3IFRJbnRlcm1CaW5hcnkoRU9wSW5kZXhEaXJlY3QsIGFycmF5U3ltYm9sLCBUSW50
ZXJtVHlwZWQ6OkNyZWF0ZUluZGV4Tm9kZShpKSk7Ci0KLSAgICAgICAgICAgIHNlcXVlbmNlLT5p
bnNlcnQoc2VxdWVuY2UtPmJlZ2luKCksIGVsZW1lbnQpOwotICAgICAgICB9Ci0gICAgfQotICAg
IGVsc2UgaWYgKHZhci5pc1N0cnVjdCgpKQotICAgIHsKLSAgICAgICAgVEludGVybVN5bWJvbCAq
c3RydWN0U3ltYm9sID0gbmV3IFRJbnRlcm1TeW1ib2woMCwgbmFtZSwgdHlwZSk7Ci0gICAgICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdmFyLmZpZWxkcy5zaXplKCk7ICsraSkKLSAg
ICAgICAgewotICAgICAgICAgICAgVEludGVybUJpbmFyeSAqZWxlbWVudCA9IG5ldyBUSW50ZXJt
QmluYXJ5KEVPcEluZGV4RGlyZWN0U3RydWN0LCBzdHJ1Y3RTeW1ib2wsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkOjpD
cmVhdGVJbmRleE5vZGUoaSkpOwotCisgICAgICAgICAgICAgICAgbmV3IFRJbnRlcm1CaW5hcnko
RU9wSW5kZXhEaXJlY3QsIHN5bWJvbCwgVEludGVybVR5cGVkOjpDcmVhdGVJbmRleE5vZGUoaSkp
OwogICAgICAgICAgICAgc2VxdWVuY2UtPmluc2VydChzZXF1ZW5jZS0+YmVnaW4oKSwgZWxlbWVu
dCk7CiAgICAgICAgIH0KICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgVEludGVybVN5
bWJvbCAqc3ltYm9sID0gbmV3IFRJbnRlcm1TeW1ib2woMCwgbmFtZSwgdHlwZSk7Ci0KICAgICAg
ICAgc2VxdWVuY2UtPmluc2VydChzZXF1ZW5jZS0+YmVnaW4oKSwgc3ltYm9sKTsKICAgICB9CiB9
CkBAIC0xMTAsOSArMTE2LDEwIEBAIHZvaWQgVXNlVW5pZm9ybUJsb2NrTWVtYmVyczo6aW5zZXJ0
VXNlQ29kZShUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlKQogICAgICAgICB9CiAgICAgICAgIGVs
c2UgaWYgKGJsb2NrLmFycmF5U2l6ZSA+IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRUeXBl
IHR5cGUgICAgICAgICAgICAgICAgID0gR2V0SW50ZXJmYWNlQmxvY2tUeXBlKGJsb2NrKTsKLSAg
ICAgICAgICAgIFRTdHJpbmcgbmFtZSAgICAgICAgICAgICAgID0gVFN0cmluZyhibG9jay5pbnN0
YW5jZU5hbWUuY19zdHIoKSk7Ci0gICAgICAgICAgICBUSW50ZXJtU3ltYm9sICphcnJheVN5bWJv
bCA9IG5ldyBUSW50ZXJtU3ltYm9sKDAsIG5hbWUsIHR5cGUpOworICAgICAgICAgICAgVFN0cmlu
ZyBuYW1lICAgICAgPSBUU3RyaW5nKGJsb2NrLmluc3RhbmNlTmFtZS5jX3N0cigpKTsKKyAgICAg
ICAgICAgIFRWYXJpYWJsZSAqdWJJbmZvID0gcmVpbnRlcnByZXRfY2FzdDxUVmFyaWFibGUgKj4o
bVN5bWJvbFRhYmxlLmZpbmRHbG9iYWwobmFtZSkpOworICAgICAgICAgICAgQVNTRVJUKHViSW5m
byk7CisgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICphcnJheVN5bWJvbCA9IG5ldyBUSW50ZXJt
U3ltYm9sKDAsIG5hbWUsIHViSW5mby0+Z2V0VHlwZSgpKTsKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgYmxvY2suYXJyYXlTaXplOyArK2kpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgVEludGVybUJpbmFyeSAqaW5zdGFuY2VTeW1ib2wgPSBuZXcgVElu
dGVybUJpbmFyeShFT3BJbmRleERpcmVjdCwgYXJyYXlTeW1ib2wsCkBAIC0xMjgsOSArMTM1LDEw
IEBAIHZvaWQgVXNlVW5pZm9ybUJsb2NrTWVtYmVyczo6aW5zZXJ0VXNlQ29kZShUSW50ZXJtU2Vx
dWVuY2UgKnNlcXVlbmNlKQogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAg
ICAgICAgICAgVFR5cGUgdHlwZSAgICAgICAgICAgICAgICAgPSBHZXRJbnRlcmZhY2VCbG9ja1R5
cGUoYmxvY2spOwotICAgICAgICAgICAgVFN0cmluZyBuYW1lICAgICAgICAgICAgICAgPSBUU3Ry
aW5nKGJsb2NrLmluc3RhbmNlTmFtZS5jX3N0cigpKTsKLSAgICAgICAgICAgIFRJbnRlcm1TeW1i
b2wgKmJsb2NrU3ltYm9sID0gbmV3IFRJbnRlcm1TeW1ib2woMCwgbmFtZSwgdHlwZSk7CisgICAg
ICAgICAgICBUU3RyaW5nIG5hbWUgICAgICA9IFRTdHJpbmcoYmxvY2suaW5zdGFuY2VOYW1lLmNf
c3RyKCkpOworICAgICAgICAgICAgVFZhcmlhYmxlICp1YkluZm8gPSByZWludGVycHJldF9jYXN0
PFRWYXJpYWJsZSAqPihtU3ltYm9sVGFibGUuZmluZEdsb2JhbChuYW1lKSk7CisgICAgICAgICAg
ICBBU1NFUlQodWJJbmZvKTsKKyAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKmJsb2NrU3ltYm9s
ID0gbmV3IFRJbnRlcm1TeW1ib2woMCwgbmFtZSwgdWJJbmZvLT5nZXRUeXBlKCkpOwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBibG9jay5maWVsZHMuc2l6ZSgpOyAr
K2kpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgVEludGVybUJpbmFyeSAqZWxlbWVu
dCA9IG5ldyBUSW50ZXJtQmluYXJ5KApAQCAtMTQ0LDkgKzE1MiwxMSBAQCB2b2lkIFVzZVVuaWZv
cm1CbG9ja01lbWJlcnM6Omluc2VydFVzZUNvZGUoVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSkK
IAogfSAgLy8gbmFtZXNwYWNlIGFub255bW91cwogCi12b2lkIFVzZUludGVyZmFjZUJsb2NrRmll
bGRzKFRJbnRlcm1Ob2RlICpyb290LCBjb25zdCBJbnRlcmZhY2VCbG9ja0xpc3QgJmJsb2NrcykK
K3ZvaWQgVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMoVEludGVybU5vZGUgKnJvb3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludGVyZmFjZUJsb2NrTGlzdCAmYmxvY2tzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRh
YmxlKQogewotICAgIFVzZVVuaWZvcm1CbG9ja01lbWJlcnMgdXNlVW5pZm9ybUJsb2NrKGJsb2Nr
cyk7CisgICAgVXNlVW5pZm9ybUJsb2NrTWVtYmVycyB1c2VVbmlmb3JtQmxvY2soYmxvY2tzLCBz
eW1ib2xUYWJsZSk7CiAgICAgcm9vdC0+dHJhdmVyc2UoJnVzZVVuaWZvcm1CbG9jayk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1VzZUludGVyZmFjZUJsb2NrRmllbGRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9Vc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcy5oCmluZGV4IDAy
NGJmZDRiMWQyZTg1ODliY2U1NTE3ZGNkY2MwMzlmMmI5M2Y3ZWEuLmE3ODliYjdlOWY2YjU4OGRi
M2NiYjkxMTcwNzQ0ZTQyNmMzYTYwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VzZUludGVyZmFjZUJsb2NrRmllbGRzLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVXNlSW50
ZXJmYWNlQmxvY2tGaWVsZHMuaApAQCAtMTcsOSArMTcsMTQgQEAgY2xhc3MgVEludGVybU5vZGU7
CiBuYW1lc3BhY2Ugc2gKIHsKIAorY2xhc3MgVFN5bWJvbFRhYmxlOworCiB1c2luZyBJbnRlcmZh
Y2VCbG9ja0xpc3QgPSBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNlQmxvY2s+OwogCi12b2lkIFVz
ZUludGVyZmFjZUJsb2NrRmllbGRzKFRJbnRlcm1Ob2RlICpyb290LCBjb25zdCBJbnRlcmZhY2VC
bG9ja0xpc3QgJmJsb2Nrcyk7Cit2b2lkIFVzZUludGVyZmFjZUJsb2NrRmllbGRzKFRJbnRlcm1O
b2RlICpyb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRlcmZhY2VC
bG9ja0xpc3QgJmJsb2NrcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN5
bWJvbFRhYmxlICZzeW1ib2xUYWJsZSk7CisKIH0gIC8vIG5hbWVzcGFjZSBzaAogCiAjZW5kaWYg
IC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfVVNFSU5URVJGQUNFQkxPQ0tGSUVMRFNfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1V0
aWxzSExTTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9VdGlsc0hMU0wuY3BwCmluZGV4IDIyMWQ1ZDliNTZhYjgwNWNlNTRiZmJmMDY3NDdhNDNm
Y2ViYWNjNTcuLmFjY2IzYjViYTc5NDZhMjg3MWY1MzZjOGYwNGUzZjNiMmJhZDhkNGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1V0
aWxzSExTTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVXRpbHNITFNMLmNwcApAQCAtNTMsNiArNTMsOCBAQCBITFNMVGV4dHVyZVNhbXBs
ZXJHcm91cCBUZXh0dXJlR3JvdXAoY29uc3QgVEJhc2ljVHlwZSB0eXBlKQogICAgICAgICAgICAg
cmV0dXJuIEhMU0xfVEVYVFVSRV8yRF9BUlJBWTsKICAgICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6
CiAgICAgICAgICAgICByZXR1cm4gSExTTF9URVhUVVJFXzNEOworICAgICAgICBjYXNlIEVidFNh
bXBsZXIyRE1TOgorICAgICAgICAgICAgcmV0dXJuIEhMU0xfVEVYVFVSRV8yRF9NUzsKICAgICAg
ICAgY2FzZSBFYnRJU2FtcGxlcjJEOgogICAgICAgICAgICAgcmV0dXJuIEhMU0xfVEVYVFVSRV8y
RF9JTlQ0OwogICAgICAgICBjYXNlIEVidElTYW1wbGVyM0Q6CkBAIC02MSw2ICs2Myw4IEBAIEhM
U0xUZXh0dXJlU2FtcGxlckdyb3VwIFRleHR1cmVHcm91cChjb25zdCBUQmFzaWNUeXBlIHR5cGUp
CiAgICAgICAgICAgICByZXR1cm4gSExTTF9URVhUVVJFXzJEX0FSUkFZX0lOVDQ7CiAgICAgICAg
IGNhc2UgRWJ0SVNhbXBsZXIyREFycmF5OgogICAgICAgICAgICAgcmV0dXJuIEhMU0xfVEVYVFVS
RV8yRF9BUlJBWV9JTlQ0OworICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRNUzoKKyAgICAgICAg
ICAgIHJldHVybiBITFNMX1RFWFRVUkVfMkRfTVNfSU5UNDsKICAgICAgICAgY2FzZSBFYnRVU2Ft
cGxlcjJEOgogICAgICAgICAgICAgcmV0dXJuIEhMU0xfVEVYVFVSRV8yRF9VSU5UNDsKICAgICAg
ICAgY2FzZSBFYnRVU2FtcGxlcjNEOgpAQCAtNjksNiArNzMsOCBAQCBITFNMVGV4dHVyZVNhbXBs
ZXJHcm91cCBUZXh0dXJlR3JvdXAoY29uc3QgVEJhc2ljVHlwZSB0eXBlKQogICAgICAgICAgICAg
cmV0dXJuIEhMU0xfVEVYVFVSRV8yRF9BUlJBWV9VSU5UNDsKICAgICAgICAgY2FzZSBFYnRVU2Ft
cGxlcjJEQXJyYXk6CiAgICAgICAgICAgICByZXR1cm4gSExTTF9URVhUVVJFXzJEX0FSUkFZX1VJ
TlQ0OworICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkRNUzoKKyAgICAgICAgICAgIHJldHVybiBI
TFNMX1RFWFRVUkVfMkRfTVNfVUlOVDQ7CiAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEU2hhZG93
OgogICAgICAgICAgICAgcmV0dXJuIEhMU0xfVEVYVFVSRV8yRF9DT01QQVJJU09OOwogICAgICAg
ICBjYXNlIEVidFNhbXBsZXJDdWJlU2hhZG93OgpAQCAtOTMsMTggKzk5LDI0IEBAIFRTdHJpbmcg
VGV4dHVyZVN0cmluZyhjb25zdCBITFNMVGV4dHVyZVNhbXBsZXJHcm91cCB0eXBlKQogICAgICAg
ICAgICAgcmV0dXJuICJUZXh0dXJlMkRBcnJheSI7CiAgICAgICAgIGNhc2UgSExTTF9URVhUVVJF
XzNEOgogICAgICAgICAgICAgcmV0dXJuICJUZXh0dXJlM0QiOworICAgICAgICBjYXNlIEhMU0xf
VEVYVFVSRV8yRF9NUzoKKyAgICAgICAgICAgIHJldHVybiAiVGV4dHVyZTJETVM8ZmxvYXQ0PiI7
CiAgICAgICAgIGNhc2UgSExTTF9URVhUVVJFXzJEX0lOVDQ6CiAgICAgICAgICAgICByZXR1cm4g
IlRleHR1cmUyRDxpbnQ0PiI7CiAgICAgICAgIGNhc2UgSExTTF9URVhUVVJFXzNEX0lOVDQ6CiAg
ICAgICAgICAgICByZXR1cm4gIlRleHR1cmUzRDxpbnQ0PiI7CiAgICAgICAgIGNhc2UgSExTTF9U
RVhUVVJFXzJEX0FSUkFZX0lOVDQ6CiAgICAgICAgICAgICByZXR1cm4gIlRleHR1cmUyREFycmF5
PGludDQ+IjsKKyAgICAgICAgY2FzZSBITFNMX1RFWFRVUkVfMkRfTVNfSU5UNDoKKyAgICAgICAg
ICAgIHJldHVybiAiVGV4dHVyZTJETVM8aW50ND4iOwogICAgICAgICBjYXNlIEhMU0xfVEVYVFVS
RV8yRF9VSU5UNDoKICAgICAgICAgICAgIHJldHVybiAiVGV4dHVyZTJEPHVpbnQ0PiI7CiAgICAg
ICAgIGNhc2UgSExTTF9URVhUVVJFXzNEX1VJTlQ0OgogICAgICAgICAgICAgcmV0dXJuICJUZXh0
dXJlM0Q8dWludDQ+IjsKICAgICAgICAgY2FzZSBITFNMX1RFWFRVUkVfMkRfQVJSQVlfVUlOVDQ6
CiAgICAgICAgICAgICByZXR1cm4gIlRleHR1cmUyREFycmF5PHVpbnQ0PiI7CisgICAgICAgIGNh
c2UgSExTTF9URVhUVVJFXzJEX01TX1VJTlQ0OgorICAgICAgICAgICAgcmV0dXJuICJUZXh0dXJl
MkRNUzx1aW50ND4iOwogICAgICAgICBjYXNlIEhMU0xfVEVYVFVSRV8yRF9DT01QQVJJU09OOgog
ICAgICAgICAgICAgcmV0dXJuICJUZXh0dXJlMkQiOwogICAgICAgICBjYXNlIEhMU0xfVEVYVFVS
RV9DVUJFX0NPTVBBUklTT046CkBAIC0xMzUsMTggKzE0NywyNCBAQCBUU3RyaW5nIFRleHR1cmVH
cm91cFN1ZmZpeChjb25zdCBITFNMVGV4dHVyZVNhbXBsZXJHcm91cCB0eXBlKQogICAgICAgICAg
ICAgcmV0dXJuICIyREFycmF5IjsKICAgICAgICAgY2FzZSBITFNMX1RFWFRVUkVfM0Q6CiAgICAg
ICAgICAgICByZXR1cm4gIjNEIjsKKyAgICAgICAgY2FzZSBITFNMX1RFWFRVUkVfMkRfTVM6Cisg
ICAgICAgICAgICByZXR1cm4gIjJETVMiOwogICAgICAgICBjYXNlIEhMU0xfVEVYVFVSRV8yRF9J
TlQ0OgogICAgICAgICAgICAgcmV0dXJuICIyRF9pbnQ0XyI7CiAgICAgICAgIGNhc2UgSExTTF9U
RVhUVVJFXzNEX0lOVDQ6CiAgICAgICAgICAgICByZXR1cm4gIjNEX2ludDRfIjsKICAgICAgICAg
Y2FzZSBITFNMX1RFWFRVUkVfMkRfQVJSQVlfSU5UNDoKICAgICAgICAgICAgIHJldHVybiAiMkRB
cnJheV9pbnQ0XyI7CisgICAgICAgIGNhc2UgSExTTF9URVhUVVJFXzJEX01TX0lOVDQ6CisgICAg
ICAgICAgICByZXR1cm4gIjJETVNfaW50NF8iOwogICAgICAgICBjYXNlIEhMU0xfVEVYVFVSRV8y
RF9VSU5UNDoKICAgICAgICAgICAgIHJldHVybiAiMkRfdWludDRfIjsKICAgICAgICAgY2FzZSBI
TFNMX1RFWFRVUkVfM0RfVUlOVDQ6CiAgICAgICAgICAgICByZXR1cm4gIjNEX3VpbnQ0XyI7CiAg
ICAgICAgIGNhc2UgSExTTF9URVhUVVJFXzJEX0FSUkFZX1VJTlQ0OgogICAgICAgICAgICAgcmV0
dXJuICIyREFycmF5X3VpbnQ0XyI7CisgICAgICAgIGNhc2UgSExTTF9URVhUVVJFXzJEX01TX1VJ
TlQ0OgorICAgICAgICAgICAgcmV0dXJuICIyRE1TX3VpbnQ0XyI7CiAgICAgICAgIGNhc2UgSExT
TF9URVhUVVJFXzJEX0NPTVBBUklTT046CiAgICAgICAgICAgICByZXR1cm4gIjJEX2NvbXBhcmlz
b24iOwogICAgICAgICBjYXNlIEhMU0xfVEVYVFVSRV9DVUJFX0NPTVBBUklTT046CkBAIC0yMjMs
MjkgKzI0MSwxNyBAQCBUU3RyaW5nIERlY29yYXRlSWZOZWVkZWQoY29uc3QgVE5hbWUgJm5hbWUp
CiAgICAgfQogfQogCi1UU3RyaW5nIERlY29yYXRlRnVuY3Rpb25JZk5lZWRlZChjb25zdCBUTmFt
ZSAmbmFtZSkKLXsKLSAgICBpZiAobmFtZS5pc0ludGVybmFsKCkpCi0gICAgewotICAgICAgICBy
ZXR1cm4gVEZ1bmN0aW9uOjp1bm1hbmdsZU5hbWUobmFtZS5nZXRTdHJpbmcoKSk7Ci0gICAgfQot
ICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiBEZWNvcmF0ZShURnVuY3Rpb246OnVubWFu
Z2xlTmFtZShuYW1lLmdldFN0cmluZygpKSk7Ci0gICAgfQotfQotCiBUU3RyaW5nIFR5cGVTdHJp
bmcoY29uc3QgVFR5cGUgJnR5cGUpCiB7Ci0gICAgY29uc3QgVFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICBjb25zdCBUU3RydWN0dXJlICpzdHJ1Y3R1cmUgPSB0
eXBlLmdldFN0cnVjdCgpOwogICAgIGlmIChzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBjb25z
dCBUU3RyaW5nJiB0eXBlTmFtZSA9IHN0cnVjdHVyZS0+bmFtZSgpOworICAgICAgICBjb25zdCBU
U3RyaW5nICZ0eXBlTmFtZSA9IHN0cnVjdHVyZS0+bmFtZSgpOwogICAgICAgICBpZiAodHlwZU5h
bWUgIT0gIiIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3ROYW1lU3RyaW5n
KCpzdHJ1Y3R1cmUpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgICAvLyBOYW1lbGVzcyBzdHJ1
Y3R1cmUsIGRlZmluZSBpbiBwbGFjZQorICAgICAgICBlbHNlICAvLyBOYW1lbGVzcyBzdHJ1Y3R1
cmUsIGRlZmluZSBpbiBwbGFjZQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3RydWN0
dXJlSExTTDo6ZGVmaW5lTmFtZWxlc3MoKnN0cnVjdHVyZSk7CiAgICAgICAgIH0KQEAgLTI2MCw1
NSArMjY2LDcxIEBAIFRTdHJpbmcgVHlwZVN0cmluZyhjb25zdCBUVHlwZSAmdHlwZSkKICAgICB7
CiAgICAgICAgIHN3aXRjaCAodHlwZS5nZXRCYXNpY1R5cGUoKSkKICAgICAgICAgewotICAgICAg
ICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0Tm9taW5hbFNp
emUoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gImZsb2F0
IjsKLSAgICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gImZsb2F0MiI7Ci0gICAgICAgICAgICAg
IGNhc2UgMzogcmV0dXJuICJmbG9hdDMiOwotICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiAi
ZmxvYXQ0IjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAg
ICAgIHN3aXRjaCAodHlwZS5nZXROb21pbmFsU2l6ZSgpKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICBjYXNlIDE6IHJldHVybiAiaW50IjsKLSAgICAgICAgICAgICAgY2FzZSAyOiByZXR1
cm4gImludDIiOwotICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiAiaW50MyI7Ci0gICAgICAg
ICAgICAgIGNhc2UgNDogcmV0dXJuICJpbnQ0IjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBj
YXNlIEVidFVJbnQ6Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0Tm9taW5hbFNpemUoKSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gInVpbnQiOwotICAg
ICAgICAgICAgICBjYXNlIDI6IHJldHVybiAidWludDIiOwotICAgICAgICAgICAgICBjYXNlIDM6
IHJldHVybiAidWludDMiOwotICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiAidWludDQiOwot
ICAgICAgICAgICAgfQotICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgIHN3aXRj
aCAodHlwZS5nZXROb21pbmFsU2l6ZSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBj
YXNlIDE6IHJldHVybiAiYm9vbCI7Ci0gICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuICJib29s
MiI7Ci0gICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuICJib29sMyI7Ci0gICAgICAgICAgICAg
IGNhc2UgNDogcmV0dXJuICJib29sNCI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgY2FzZSBF
YnRWb2lkOgotICAgICAgICAgICAgcmV0dXJuICJ2b2lkIjsKLSAgICAgICAgICBjYXNlIEVidFNh
bXBsZXIyRDoKLSAgICAgICAgICBjYXNlIEVidElTYW1wbGVyMkQ6Ci0gICAgICAgICAgY2FzZSBF
YnRVU2FtcGxlcjJEOgotICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6Ci0gICAgICAg
ICAgY2FzZSBFYnRJU2FtcGxlcjJEQXJyYXk6Ci0gICAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJE
QXJyYXk6Ci0gICAgICAgICAgICByZXR1cm4gInNhbXBsZXIyRCI7Ci0gICAgICAgICAgY2FzZSBF
YnRTYW1wbGVyQ3ViZToKLSAgICAgICAgICBjYXNlIEVidElTYW1wbGVyQ3ViZToKLSAgICAgICAg
ICBjYXNlIEVidFVTYW1wbGVyQ3ViZToKLSAgICAgICAgICAgIHJldHVybiAic2FtcGxlckNVQkUi
OwotICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlckV4dGVybmFsT0VTOgotICAgICAgICAgICAgcmV0
dXJuICJzYW1wbGVyMkQiOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBl
LmdldE5vbWluYWxTaXplKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImZsb2F0IjsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJm
bG9hdDIiOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gImZsb2F0MyI7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiAiZmxvYXQ0IjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0
Tm9taW5hbFNpemUoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgMToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiaW50IjsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJpbnQyIjsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICJpbnQzIjsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICJpbnQ0IjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBj
YXNlIEVidFVJbnQ6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlLmdldE5vbWluYWxTaXpl
KCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gInVpbnQiOworICAgICAgICAgICAgICAgICAgICBj
YXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInVpbnQyIjsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ1aW50
MyI7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAidWludDQiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgRWJ0
Qm9vbDoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0Tm9taW5hbFNpemUoKSkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAiYm9vbCI7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiYm9vbDIiOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImJvb2wzIjsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICJib29sNCI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBFYnRWb2lkOgor
ICAgICAgICAgICAgICAgIHJldHVybiAidm9pZCI7CisgICAgICAgICAgICBjYXNlIEVidFNhbXBs
ZXIyRDoKKyAgICAgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyRDoKKyAgICAgICAgICAgIGNhc2Ug
RWJ0VVNhbXBsZXIyRDoKKyAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6CisgICAg
ICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRBcnJheToKKyAgICAgICAgICAgIGNhc2UgRWJ0VVNh
bXBsZXIyREFycmF5OgorICAgICAgICAgICAgICAgIHJldHVybiAic2FtcGxlcjJEIjsKKyAgICAg
ICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6CisgICAgICAgICAgICBjYXNlIEVidElTYW1wbGVy
Q3ViZToKKyAgICAgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXJDdWJlOgorICAgICAgICAgICAgICAg
IHJldHVybiAic2FtcGxlckNVQkUiOworICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJu
YWxPRVM6CisgICAgICAgICAgICAgICAgcmV0dXJuICJzYW1wbGVyMkQiOworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MzMzLDcgKzM1NSw4IEBAIFRTdHJpbmcgU3RydWN0TmFtZVN0cmluZyhjb25zdCBUU3RydWN0dXJl
ICZzdHJ1Y3R1cmUpCiAgICAgcmV0dXJuICJzcyIgKyBzdHIoc3RydWN0dXJlLnVuaXF1ZUlkKCkp
ICsgIl8iICsgc3RydWN0dXJlLm5hbWUoKTsKIH0KIAotVFN0cmluZyBRdWFsaWZpZWRTdHJ1Y3RO
YW1lU3RyaW5nKGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdHVyZSwgYm9vbCB1c2VITFNMUm93TWFq
b3JQYWNraW5nLAorVFN0cmluZyBRdWFsaWZpZWRTdHJ1Y3ROYW1lU3RyaW5nKGNvbnN0IFRTdHJ1
Y3R1cmUgJnN0cnVjdHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IHVzZUhMU0xSb3dNYWpvclBhY2tpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCB1c2VTdGQxNDBQYWNraW5nKQogewogICAgIGlmIChzdHJ1Y3R1cmUubmFtZSgpID09
ICIiKQpAQCAtMzYzLDE3ICszODYsMjggQEAgVFN0cmluZyBJbnRlcnBvbGF0aW9uU3RyaW5nKFRR
dWFsaWZpZXIgcXVhbGlmaWVyKQogewogICAgIHN3aXRjaCAocXVhbGlmaWVyKQogICAgIHsKLSAg
ICAgIGNhc2UgRXZxVmFyeWluZ0luOiAgICAgICAgICAgcmV0dXJuICIiOwotICAgICAgY2FzZSBF
dnFGcmFnbWVudEluOiAgICAgICAgICByZXR1cm4gIiI7Ci0gICAgICBjYXNlIEV2cVNtb290aElu
OiAgICAgICAgICAgIHJldHVybiAibGluZWFyIjsKLSAgICAgIGNhc2UgRXZxRmxhdEluOiAgICAg
ICAgICAgICAgcmV0dXJuICJub2ludGVycG9sYXRpb24iOwotICAgICAgY2FzZSBFdnFDZW50cm9p
ZEluOiAgICAgICAgICByZXR1cm4gImNlbnRyb2lkIjsKLSAgICAgIGNhc2UgRXZxVmFyeWluZ091
dDogICAgICAgICAgcmV0dXJuICIiOwotICAgICAgY2FzZSBFdnFWZXJ0ZXhPdXQ6ICAgICAgICAg
ICByZXR1cm4gIiI7Ci0gICAgICBjYXNlIEV2cVNtb290aE91dDogICAgICAgICAgIHJldHVybiAi
bGluZWFyIjsKLSAgICAgIGNhc2UgRXZxRmxhdE91dDogICAgICAgICAgICAgcmV0dXJuICJub2lu
dGVycG9sYXRpb24iOwotICAgICAgY2FzZSBFdnFDZW50cm9pZE91dDogICAgICAgICByZXR1cm4g
ImNlbnRyb2lkIjsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIGNhc2Ug
RXZxVmFyeWluZ0luOgorICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICBjYXNlIEV2cUZy
YWdtZW50SW46CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIGNhc2UgRXZxU21vb3Ro
SW46CisgICAgICAgICAgICByZXR1cm4gImxpbmVhciI7CisgICAgICAgIGNhc2UgRXZxRmxhdElu
OgorICAgICAgICAgICAgcmV0dXJuICJub2ludGVycG9sYXRpb24iOworICAgICAgICBjYXNlIEV2
cUNlbnRyb2lkSW46CisgICAgICAgICAgICByZXR1cm4gImNlbnRyb2lkIjsKKyAgICAgICAgY2Fz
ZSBFdnFWYXJ5aW5nT3V0OgorICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICBjYXNlIEV2
cVZlcnRleE91dDoKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgY2FzZSBFdnFTbW9v
dGhPdXQ6CisgICAgICAgICAgICByZXR1cm4gImxpbmVhciI7CisgICAgICAgIGNhc2UgRXZxRmxh
dE91dDoKKyAgICAgICAgICAgIHJldHVybiAibm9pbnRlcnBvbGF0aW9uIjsKKyAgICAgICAgY2Fz
ZSBFdnFDZW50cm9pZE91dDoKKyAgICAgICAgICAgIHJldHVybiAiY2VudHJvaWQiOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9CiAKICAgICByZXR1
cm4gIiI7CkBAIC0zODMsMTEgKzQxNywxNyBAQCBUU3RyaW5nIFF1YWxpZmllclN0cmluZyhUUXVh
bGlmaWVyIHF1YWxpZmllcikKIHsKICAgICBzd2l0Y2ggKHF1YWxpZmllcikKICAgICB7Ci0gICAg
ICBjYXNlIEV2cUluOiAgICAgICAgICAgIHJldHVybiAiaW4iOwotICAgICAgY2FzZSBFdnFPdXQ6
ICAgICAgICAgICByZXR1cm4gImlub3V0IjsgLy8gJ291dCcgcmVzdWx0cyBpbiBhbiBITFNMIGVy
cm9yIGlmIG5vdCBhbGwgZmllbGRzIGFyZSB3cml0dGVuLCBmb3IgR0xTTCBpdCdzIHVuZGVmaW5l
ZAotICAgICAgY2FzZSBFdnFJbk91dDogICAgICAgICByZXR1cm4gImlub3V0IjsKLSAgICAgIGNh
c2UgRXZxQ29uc3RSZWFkT25seTogcmV0dXJuICJjb25zdCI7Ci0gICAgICBkZWZhdWx0OiBVTlJF
QUNIQUJMRSgpOworICAgICAgICBjYXNlIEV2cUluOgorICAgICAgICAgICAgcmV0dXJuICJpbiI7
CisgICAgICAgIGNhc2UgRXZxT3V0OgorICAgICAgICAgICAgcmV0dXJuICJpbm91dCI7ICAvLyAn
b3V0JyByZXN1bHRzIGluIGFuIEhMU0wgZXJyb3IgaWYgbm90IGFsbCBmaWVsZHMgYXJlIHdyaXR0
ZW4sIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHTFNMIGl0J3MgdW5kZWZp
bmVkCisgICAgICAgIGNhc2UgRXZxSW5PdXQ6CisgICAgICAgICAgICByZXR1cm4gImlub3V0IjsK
KyAgICAgICAgY2FzZSBFdnFDb25zdFJlYWRPbmx5OgorICAgICAgICAgICAgcmV0dXJuICJjb25z
dCI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgIH0K
IAogICAgIHJldHVybiAiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1V0aWxzSExTTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVXRpbHNITFNMLmgKaW5kZXggNzQ4YjM1MTNlNjk5
NWJkZGFkYjQxMTkzYjYzZGMxZDI1N2M1OWNjZC4uMzdlZGNlNDBlZGFjOTRhMDU4ZTdjMzg2NGQ2
NTViNWY0NGM1NmNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVXRpbHNITFNMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVXRpbHNITFNMLmgKQEAgLTMxLDEyICszMSwxNSBA
QCBlbnVtIEhMU0xUZXh0dXJlU2FtcGxlckdyb3VwCiAgICAgSExTTF9URVhUVVJFX0NVQkUsCiAg
ICAgSExTTF9URVhUVVJFXzJEX0FSUkFZLAogICAgIEhMU0xfVEVYVFVSRV8zRCwKKyAgICBITFNM
X1RFWFRVUkVfMkRfTVMsCiAgICAgSExTTF9URVhUVVJFXzJEX0lOVDQsCiAgICAgSExTTF9URVhU
VVJFXzNEX0lOVDQsCiAgICAgSExTTF9URVhUVVJFXzJEX0FSUkFZX0lOVDQsCisgICAgSExTTF9U
RVhUVVJFXzJEX01TX0lOVDQsCiAgICAgSExTTF9URVhUVVJFXzJEX1VJTlQ0LAogICAgIEhMU0xf
VEVYVFVSRV8zRF9VSU5UNCwKICAgICBITFNMX1RFWFRVUkVfMkRfQVJSQVlfVUlOVDQsCisgICAg
SExTTF9URVhUVVJFXzJEX01TX1VJTlQ0LAogCiAgICAgLy8gQ29tcGFyaXNvbiBzYW1wbGVycwog
CkBAIC02MiwxNCArNjUsMTMgQEAgVFN0cmluZyBTYW1wbGVyU3RyaW5nKEhMU0xUZXh0dXJlU2Ft
cGxlckdyb3VwIHR5cGUpOwogLy8gUHJlcGVuZHMgYW4gdW5kZXJzY29yZSB0byBhdm9pZCBuYW1p
bmcgY2xhc2hlcwogVFN0cmluZyBEZWNvcmF0ZShjb25zdCBUU3RyaW5nICZzdHJpbmcpOwogVFN0
cmluZyBEZWNvcmF0ZUlmTmVlZGVkKGNvbnN0IFROYW1lICZuYW1lKTsKLS8vIERlY29yYXRlcyBh
bmQgYWxzbyB1bm1hbmdsZXMgdGhlIGZ1bmN0aW9uIG5hbWUKLVRTdHJpbmcgRGVjb3JhdGVGdW5j
dGlvbklmTmVlZGVkKGNvbnN0IFROYW1lICZuYW1lKTsKIFRTdHJpbmcgRGVjb3JhdGVVbmlmb3Jt
KGNvbnN0IFROYW1lICZuYW1lLCBjb25zdCBUVHlwZSAmdHlwZSk7CiBUU3RyaW5nIERlY29yYXRl
RmllbGQoY29uc3QgVFN0cmluZyAmc3RyaW5nLCBjb25zdCBUU3RydWN0dXJlICZzdHJ1Y3R1cmUp
OwogVFN0cmluZyBEZWNvcmF0ZVByaXZhdGUoY29uc3QgVFN0cmluZyAmcHJpdmF0ZVRleHQpOwog
VFN0cmluZyBUeXBlU3RyaW5nKGNvbnN0IFRUeXBlICZ0eXBlKTsKIFRTdHJpbmcgU3RydWN0TmFt
ZVN0cmluZyhjb25zdCBUU3RydWN0dXJlICZzdHJ1Y3R1cmUpOwotVFN0cmluZyBRdWFsaWZpZWRT
dHJ1Y3ROYW1lU3RyaW5nKGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdHVyZSwgYm9vbCB1c2VITFNM
Um93TWFqb3JQYWNraW5nLAorVFN0cmluZyBRdWFsaWZpZWRTdHJ1Y3ROYW1lU3RyaW5nKGNvbnN0
IFRTdHJ1Y3R1cmUgJnN0cnVjdHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIHVzZUhMU0xSb3dNYWpvclBhY2tpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCB1c2VTdGQxNDBQYWNraW5nKTsKIFRTdHJpbmcgSW50ZXJwb2xhdGlvblN0
cmluZyhUUXVhbGlmaWVyIHF1YWxpZmllcik7CiBUU3RyaW5nIFF1YWxpZmllclN0cmluZyhUUXVh
bGlmaWVyIHF1YWxpZmllcik7CkBAIC03OCw0ICs4MCw0IEBAIFRTdHJpbmcgUXVhbGlmaWVyU3Ry
aW5nKFRRdWFsaWZpZXIgcXVhbGlmaWVyKTsKIFRTdHJpbmcgRGlzYW1iaWd1YXRlRnVuY3Rpb25O
YW1lKGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAqcGFyYW1ldGVycyk7CiB9CiAKLSNlbmRpZiAvLyBD
T01QSUxFUl9UUkFOU0xBVE9SX1VUSUxTSExTTF9IXworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFO
U0xBVE9SX1VUSUxTSExTTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplci5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUds
b2JhbEluaXRpYWxpemVyLmNwcAppbmRleCAyNDYxYjZhNDM4M2JmOTYxMWQ2OWUxNjJkODgzMDQ0
MjE1MTY5OTUyLi4xMGEzZTUxN2UyNzNkMWE4OTJhZjg0MTY4YjZlNjk5ZTg4NWM5MWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9W
YWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmNwcApA
QCAtOCw2ICs4LDkgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUGFyc2VDb250
ZXh0LmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBuYW1lc3BhY2UKIHsKIApAQCAtMzIsNyArMzUs
OCBAQCBjbGFzcyBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyVHJhdmVyc2VyIDogcHVibGljIFRJ
bnRlcm1UcmF2ZXJzZXIKIAogdm9pZCBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyVHJhdmVyc2Vy
Ojp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKQogewotICAgIGNvbnN0IFRTeW1ib2wg
KnN5bSA9IG1Db250ZXh0LT5zeW1ib2xUYWJsZS5maW5kKG5vZGUtPmdldFN5bWJvbCgpLCBtQ29u
dGV4dC0+Z2V0U2hhZGVyVmVyc2lvbigpKTsKKyAgICBjb25zdCBUU3ltYm9sICpzeW0gPQorICAg
ICAgICBtQ29udGV4dC0+c3ltYm9sVGFibGUuZmluZChub2RlLT5nZXRTeW1ib2woKSwgbUNvbnRl
eHQtPmdldFNoYWRlclZlcnNpb24oKSk7CiAgICAgaWYgKHN5bS0+aXNWYXJpYWJsZSgpKQogICAg
IHsKICAgICAgICAgLy8gRVNTTCAxLjAwIHNlY3Rpb24gNC4zIChvciBFU1NMIDMuMDAgc2VjdGlv
biA0LjMpOgpAQCAtNDAsMzMgKzQ0LDM2IEBAIHZvaWQgVmFsaWRhdGVHbG9iYWxJbml0aWFsaXpl
clRyYXZlcnNlcjo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkKICAgICAgICAgY29u
c3QgVFZhcmlhYmxlICp2YXIgPSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUgKj4oc3ltKTsK
ICAgICAgICAgc3dpdGNoICh2YXItPmdldFR5cGUoKS5nZXRRdWFsaWZpZXIoKSkKICAgICAgICAg
ewotICAgICAgICAgIGNhc2UgRXZxQ29uc3Q6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICBjYXNlIEV2cUdsb2JhbDoKLSAgICAgICAgICBjYXNlIEV2cVRlbXBvcmFyeToKLSAgICAgICAg
ICBjYXNlIEV2cVVuaWZvcm06Ci0gICAgICAgICAgICAvLyBXZSBhbGxvdyB0aGVzZSBjYXNlcyB0
byBiZSBjb21wYXRpYmxlIHdpdGggbGVnYWN5IEVTU0wgMS4wMCBjb250ZW50LgotICAgICAgICAg
ICAgLy8gSW1wbGVtZW50IHN0cmljdGVyIHJ1bGVzIGZvciBFU1NMIDMuMDAgc2luY2UgdGhlcmUn
cyBubyBsZWdhY3kgY29udGVudCB0byBkZWFsIHdpdGguCi0gICAgICAgICAgICBpZiAobUNvbnRl
eHQtPmdldFNoYWRlclZlcnNpb24oKSA+PSAzMDApCi0gICAgICAgICAgICB7CisgICAgICAgICAg
ICBjYXNlIEV2cUNvbnN0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBFdnFHbG9iYWw6CisgICAgICAgICAgICBjYXNlIEV2cVRlbXBvcmFyeToKKyAgICAgICAgICAg
IGNhc2UgRXZxVW5pZm9ybToKKyAgICAgICAgICAgICAgICAvLyBXZSBhbGxvdyB0aGVzZSBjYXNl
cyB0byBiZSBjb21wYXRpYmxlIHdpdGggbGVnYWN5IEVTU0wgMS4wMCBjb250ZW50LgorICAgICAg
ICAgICAgICAgIC8vIEltcGxlbWVudCBzdHJpY3RlciBydWxlcyBmb3IgRVNTTCAzLjAwIHNpbmNl
IHRoZXJlJ3Mgbm8gbGVnYWN5IGNvbnRlbnQgdG8gZGVhbAorICAgICAgICAgICAgICAgIC8vIHdp
dGguCisgICAgICAgICAgICAgICAgaWYgKG1Db250ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkgPj0g
MzAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbUlzVmFsaWQgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbUlzc3VlV2FybmluZyA9IHRydWU7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgICAgICBtSXNWYWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1Jc3N1ZVdhcm5p
bmcgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIG1Jc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9
CiB9CiAKIGJvb2wgVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplclRyYXZlcnNlcjo6dmlzaXRBZ2dy
ZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCiB7Ci0gICAgLy8gRGlz
YWxsb3cgY2FsbHMgdG8gdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyBhbmQgdGV4dHVyZSBsb29rdXAg
ZnVuY3Rpb25zIGluIGdsb2JhbCB2YXJpYWJsZSBpbml0aWFsaXplcnMuCi0gICAgLy8gVGhpcyBp
cyBkb25lIHNpbXBseSBieSBkaXNhYmxpbmcgYWxsIGZ1bmN0aW9uIGNhbGxzIC0gYnVpbHQtaW4g
bWF0aCBmdW5jdGlvbnMgZG9uJ3QgdXNlIEVPcEZ1bmN0aW9uQ2FsbC4KLSAgICBpZiAobm9kZS0+
Z2V0T3AoKSA9PSBFT3BGdW5jdGlvbkNhbGwpCisgICAgLy8gRGlzYWxsb3cgY2FsbHMgdG8gdXNl
ci1kZWZpbmVkIGZ1bmN0aW9ucyBhbmQgdGV4dHVyZSBsb29rdXAgZnVuY3Rpb25zIGluIGdsb2Jh
bCB2YXJpYWJsZQorICAgIC8vIGluaXRpYWxpemVycy4KKyAgICAvLyBUaGlzIGlzIGRvbmUgc2lt
cGx5IGJ5IGRpc2FibGluZyBhbGwgZnVuY3Rpb24gY2FsbHMgLSBidWlsdC1pbiBtYXRoIGZ1bmN0
aW9ucyBkb24ndCB1c2UKKyAgICAvLyB0aGUgZnVuY3Rpb24gY2FsbCBvcHMuCisgICAgaWYgKG5v
ZGUtPmlzRnVuY3Rpb25DYWxsKCkpCiAgICAgewogICAgICAgICBtSXNWYWxpZCA9IGZhbHNlOwog
ICAgIH0KQEAgLTkyLDE2ICs5OSwxNSBAQCBib29sIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXJU
cmF2ZXJzZXI6OnZpc2l0VW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1VbmFyeSAqbgogfQogCiBW
YWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyVHJhdmVyc2VyOjpWYWxpZGF0ZUdsb2JhbEluaXRpYWxp
emVyVHJhdmVyc2VyKGNvbnN0IFRQYXJzZUNvbnRleHQgKmNvbnRleHQpCi0gICAgOiBUSW50ZXJt
VHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksCi0gICAgICBtQ29udGV4dChjb250ZXh0KSwK
LSAgICAgIG1Jc1ZhbGlkKHRydWUpLAotICAgICAgbUlzc3VlV2FybmluZyhmYWxzZSkKKyAgICA6
IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwgbUNvbnRleHQoY29udGV4dCks
IG1Jc1ZhbGlkKHRydWUpLCBtSXNzdWVXYXJuaW5nKGZhbHNlKQogewogfQogCi19IC8vIG5hbWVz
cGFjZQorfSAgLy8gbmFtZXNwYWNlCiAKLWJvb2wgVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplcihU
SW50ZXJtVHlwZWQgKmluaXRpYWxpemVyLCBjb25zdCBUUGFyc2VDb250ZXh0ICpjb250ZXh0LCBi
b29sICp3YXJuaW5nKQorYm9vbCBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyKFRJbnRlcm1UeXBl
ZCAqaW5pdGlhbGl6ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFBh
cnNlQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
ICp3YXJuaW5nKQogewogICAgIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXJUcmF2ZXJzZXIgdmFs
aWRhdGUoY29udGV4dCk7CiAgICAgaW5pdGlhbGl6ZXItPnRyYXZlcnNlKCZ2YWxpZGF0ZSk7CkBA
IC0xMTAsMyArMTE2LDQgQEAgYm9vbCBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyKFRJbnRlcm1U
eXBlZCAqaW5pdGlhbGl6ZXIsIGNvbnN0IFRQYXJzZUNvbnRleHQgKmMKICAgICByZXR1cm4gdmFs
aWRhdGUuaXNWYWxpZCgpOwogfQogCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlR2xv
YmFsSW5pdGlhbGl6ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1ZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIuaAppbmRleCBjM2QyYTQ3ZWJhMjIw
YjJlYzJmZGEwODJmMjlkNWZiYmZjMWQ1M2RmLi4yZTc1NzA2NjdhNGFjMmIxMGFlNWFkYWY3YWQ2
YmExOWVmZjVjNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVHbG9iYWxJ
bml0aWFsaXplci5oCkBAIC03LDEwICs3LDE3IEBACiAjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFU
T1JfVkFMSURBVEVHTE9CQUxJTklUSUFMSVpFUl9IXwogI2RlZmluZSBDT01QSUxFUl9UUkFOU0xB
VE9SX1ZBTElEQVRFR0xPQkFMSU5JVElBTElaRVJfSF8KIAorbmFtZXNwYWNlIHNoCit7CisKIGNs
YXNzIFRJbnRlcm1UeXBlZDsKIGNsYXNzIFRQYXJzZUNvbnRleHQ7CiAKIC8vIFJldHVybnMgdHJ1
ZSBpZiB0aGUgaW5pdGlhbGl6ZXIgaXMgdmFsaWQuCi1ib29sIFZhbGlkYXRlR2xvYmFsSW5pdGlh
bGl6ZXIoVEludGVybVR5cGVkICppbml0aWFsaXplciwgY29uc3QgVFBhcnNlQ29udGV4dCAqY29u
dGV4dCwgYm9vbCAqd2FybmluZyk7Citib29sIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIoVElu
dGVybVR5cGVkICppbml0aWFsaXplciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUUGFyc2VDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgKndhcm5pbmcpOworCit9ICAvLyBuYW1lc3BhY2Ugc2gKIAotI2VuZGlmIC8vIENP
TVBJTEVSX1RSQU5TTEFUT1JfVkFMSURBVEVHTE9CQUxJTklUSUFMSVpFUl9IXworI2VuZGlmICAv
LyBDT01QSUxFUl9UUkFOU0xBVE9SX1ZBTElEQVRFR0xPQkFMSU5JVElBTElaRVJfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Zh
bGlkYXRlTGltaXRhdGlvbnMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVMaW1pdGF0aW9ucy5jcHAKaW5kZXggNWRjZmU2OWM1NjNm
OThmNzU2YmZjZmE4NzgwNjJkODYzOTE5NjMzYi4uM2ExNzYxNGZhMDIwOTdjMTU2N2VhNjI1NTE3
NjFhMTU0YjkyMGQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVMaW1pdGF0aW9ucy5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVMaW1pdGF0aW9u
cy5jcHAKQEAgLTUsMTQgKzUsMjggQEAKIC8vCiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL1ZhbGlkYXRlTGltaXRhdGlvbnMuaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L0luZm9TaW5rLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplUGFy
c2VDb250ZXh0LmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQu
aCIKKwogI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9EaWFnbm9zdGljcy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUGFyc2VDb250
ZXh0LmgiCisKK25hbWVzcGFjZSBzaAorewogCiBuYW1lc3BhY2UKIHsKIAoraW50IEdldExvb3BT
eW1ib2xJZChUSW50ZXJtTG9vcCAqbG9vcCkKK3sKKyAgICAvLyBIZXJlIHdlIGFzc3VtZSBhbGwg
dGhlIG9wZXJhdGlvbnMgYXJlIHZhbGlkLCBiZWNhdXNlIHRoZSBsb29wIG5vZGUgaXMKKyAgICAv
LyBhbHJlYWR5IHZhbGlkYXRlZCBiZWZvcmUgdGhpcyBjYWxsLgorICAgIFRJbnRlcm1TZXF1ZW5j
ZSAqZGVjbFNlcSA9IGxvb3AtPmdldEluaXQoKS0+Z2V0QXNEZWNsYXJhdGlvbk5vZGUoKS0+Z2V0
U2VxdWVuY2UoKTsKKyAgICBUSW50ZXJtQmluYXJ5ICpkZWNsSW5pdCAgPSAoKmRlY2xTZXEpWzBd
LT5nZXRBc0JpbmFyeU5vZGUoKTsKKyAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgICAgPSBkZWNs
SW5pdC0+Z2V0TGVmdCgpLT5nZXRBc1N5bWJvbE5vZGUoKTsKKworICAgIHJldHVybiBzeW1ib2wt
PmdldElkKCk7Cit9CisKIC8vIFRyYXZlcnNlcyBhIG5vZGUgdG8gY2hlY2sgaWYgaXQgcmVwcmVz
ZW50cyBhIGNvbnN0YW50IGluZGV4IGV4cHJlc3Npb24uCiAvLyBEZWZpbml0aW9uOgogLy8gY29u
c3RhbnQtaW5kZXgtZXhwcmVzc2lvbnMgYXJlIGEgc3VwZXJzZXQgb2YgY29uc3RhbnQtZXhwcmVz
c2lvbnMuCkBAIC0yNSwxMCArMzksOCBAQCBuYW1lc3BhY2UKIGNsYXNzIFZhbGlkYXRlQ29uc3RJ
bmRleEV4cHIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogewogICBwdWJsaWM6Ci0gICAgVmFs
aWRhdGVDb25zdEluZGV4RXhwcihUTG9vcFN0YWNrJiBzdGFjaykKLSAgICAgICAgOiBUSW50ZXJt
VHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksCi0gICAgICAgICAgbVZhbGlkKHRydWUpLAot
ICAgICAgICAgIG1Mb29wU3RhY2soc3RhY2spCisgICAgVmFsaWRhdGVDb25zdEluZGV4RXhwcihj
b25zdCBzdGQ6OnZlY3RvcjxpbnQ+ICZsb29wU3ltYm9scykKKyAgICAgICAgOiBUSW50ZXJtVHJh
dmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksIG1WYWxpZCh0cnVlKSwgbUxvb3BTeW1ib2xJZHMo
bG9vcFN5bWJvbHMpCiAgICAgewogICAgIH0KIApAQCAtNDEsOTMgKzUzLDkzIEBAIGNsYXNzIFZh
bGlkYXRlQ29uc3RJbmRleEV4cHIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgICAgICAv
LyBjb25zdGFudCBpbmRleCBleHByZXNzaW9uLgogICAgICAgICBpZiAobVZhbGlkKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBtVmFsaWQgPSAoc3ltYm9sLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFD
b25zdCkgfHwKLSAgICAgICAgICAgICAgICAgICAgIChtTG9vcFN0YWNrLmZpbmRMb29wKHN5bWJv
bCkpOworICAgICAgICAgICAgYm9vbCBpc0xvb3BTeW1ib2wgPSBzdGQ6OmZpbmQobUxvb3BTeW1i
b2xJZHMuYmVnaW4oKSwgbUxvb3BTeW1ib2xJZHMuZW5kKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wtPmdldElkKCkpICE9IG1Mb29wU3ltYm9sSWRz
LmVuZCgpOworICAgICAgICAgICAgbVZhbGlkID0gKHN5bWJvbC0+Z2V0UXVhbGlmaWVyKCkgPT0g
RXZxQ29uc3QpIHx8IGlzTG9vcFN5bWJvbDsKICAgICAgICAgfQogICAgIH0KIAogICBwcml2YXRl
OgogICAgIGJvb2wgbVZhbGlkOwotICAgIFRMb29wU3RhY2smIG1Mb29wU3RhY2s7CisgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8aW50PiBtTG9vcFN5bWJvbElkczsKIH07CiAKLX0gIC8vIG5hbWVzcGFj
ZSBhbm9ueW1vdXMKKy8vIFRyYXZlcnNlcyBpbnRlcm1lZGlhdGUgdHJlZSB0byBlbnN1cmUgdGhh
dCB0aGUgc2hhZGVyIGRvZXMgbm90IGV4Y2VlZCB0aGUKKy8vIG1pbmltdW0gZnVuY3Rpb25hbGl0
eSBtYW5kYXRlZCBpbiBHTFNMIDEuMCBzcGVjLCBBcHBlbmRpeCBBLgorY2xhc3MgVmFsaWRhdGVM
aW1pdGF0aW9uc1RyYXZlcnNlciA6IHB1YmxpYyBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXIKK3sK
KyAgcHVibGljOgorICAgIFZhbGlkYXRlTGltaXRhdGlvbnNUcmF2ZXJzZXIoc2g6OkdMZW51bSBz
aGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN5bWJv
bFRhYmxlICZzeW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBzaGFkZXJWZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVERpYWdu
b3N0aWNzICpkaWFnbm9zdGljcyk7CisKKyAgICB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1i
b2wgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQsIFRJbnRlcm1C
aW5hcnkgKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdExvb3AoVmlzaXQsIFRJbnRlcm1Mb29w
ICopIG92ZXJyaWRlOwogCi1WYWxpZGF0ZUxpbWl0YXRpb25zOjpWYWxpZGF0ZUxpbWl0YXRpb25z
KHNoOjpHTGVudW0gc2hhZGVyVHlwZSwgVEluZm9TaW5rQmFzZSAqc2luaykKLSAgICA6IFRJbnRl
cm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwKKyAgcHJpdmF0ZToKKyAgICB2b2lkIGVy
cm9yKFRTb3VyY2VMb2MgbG9jLCBjb25zdCBjaGFyICpyZWFzb24sIGNvbnN0IGNoYXIgKnRva2Vu
KTsKKworICAgIGJvb2wgd2l0aGluTG9vcEJvZHkoKSBjb25zdDsKKyAgICBib29sIGlzTG9vcElu
ZGV4KFRJbnRlcm1TeW1ib2wgKnN5bWJvbCk7CisgICAgYm9vbCB2YWxpZGF0ZUxvb3BUeXBlKFRJ
bnRlcm1Mb29wICpub2RlKTsKKworICAgIGJvb2wgdmFsaWRhdGVGb3JMb29wSGVhZGVyKFRJbnRl
cm1Mb29wICpub2RlKTsKKyAgICAvLyBJZiB2YWxpZCwgcmV0dXJuIHRoZSBpbmRleCBzeW1ib2wg
aWQ7IE90aGVyd2lzZSwgcmV0dXJuIC0xLgorICAgIGludCB2YWxpZGF0ZUZvckxvb3BJbml0KFRJ
bnRlcm1Mb29wICpub2RlKTsKKyAgICBib29sIHZhbGlkYXRlRm9yTG9vcENvbmQoVEludGVybUxv
b3AgKm5vZGUsIGludCBpbmRleFN5bWJvbElkKTsKKyAgICBib29sIHZhbGlkYXRlRm9yTG9vcEV4
cHIoVEludGVybUxvb3AgKm5vZGUsIGludCBpbmRleFN5bWJvbElkKTsKKworICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiBpbmRleGluZyBkb2VzIG5vdCBleGNlZWQgdGhlIG1pbmltdW0gZnVuY3Rpb25h
bGl0eQorICAgIC8vIG1hbmRhdGVkIGluIEdMU0wgMS4wIHNwZWMsIEFwcGVuZGl4IEEsIFNlY3Rp
b24gNS4KKyAgICBib29sIGlzQ29uc3RFeHByKFRJbnRlcm1Ob2RlICpub2RlKTsKKyAgICBib29s
IGlzQ29uc3RJbmRleEV4cHIoVEludGVybU5vZGUgKm5vZGUpOworICAgIGJvb2wgdmFsaWRhdGVJ
bmRleGluZyhUSW50ZXJtQmluYXJ5ICpub2RlKTsKKworICAgIHNoOjpHTGVudW0gbVNoYWRlclR5
cGU7CisgICAgVERpYWdub3N0aWNzICptRGlhZ25vc3RpY3M7CisgICAgc3RkOjp2ZWN0b3I8aW50
PiBtTG9vcFN5bWJvbElkczsKK307CisKK1ZhbGlkYXRlTGltaXRhdGlvbnNUcmF2ZXJzZXI6OlZh
bGlkYXRlTGltaXRhdGlvbnNUcmF2ZXJzZXIoc2g6OkdMZW51bSBzaGFkZXJUeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVERp
YWdub3N0aWNzICpkaWFnbm9zdGljcykKKyAgICA6IFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcih0
cnVlLCBmYWxzZSwgZmFsc2UsIHN5bWJvbFRhYmxlLCBzaGFkZXJWZXJzaW9uKSwKICAgICAgIG1T
aGFkZXJUeXBlKHNoYWRlclR5cGUpLAotICAgICAgbVNpbmsoc2luayksCi0gICAgICBtTnVtRXJy
b3JzKDApLAotICAgICAgbVZhbGlkYXRlSW5kZXhpbmcodHJ1ZSksCi0gICAgICBtVmFsaWRhdGVJ
bm5lckxvb3BzKHRydWUpCisgICAgICBtRGlhZ25vc3RpY3MoZGlhZ25vc3RpY3MpCiB7CisgICAg
QVNTRVJUKGRpYWdub3N0aWNzKTsKIH0KIAotLy8gc3RhdGljCi1ib29sIFZhbGlkYXRlTGltaXRh
dGlvbnM6OklzTGltaXRlZEZvckxvb3AoVEludGVybUxvb3AgKmxvb3ApCit2b2lkIFZhbGlkYXRl
TGltaXRhdGlvbnNUcmF2ZXJzZXI6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKm5vZGUpCiB7
Ci0gICAgLy8gVGhlIHNoYWRlciB0eXBlIGRvZXNuJ3QgbWF0dGVyIGluIHRoaXMgY2FzZS4KLSAg
ICBWYWxpZGF0ZUxpbWl0YXRpb25zIHZhbGlkYXRlKEdMX0ZSQUdNRU5UX1NIQURFUiwgbnVsbHB0
cik7Ci0gICAgdmFsaWRhdGUubVZhbGlkYXRlSW5kZXhpbmcgICA9IGZhbHNlOwotICAgIHZhbGlk
YXRlLm1WYWxpZGF0ZUlubmVyTG9vcHMgPSBmYWxzZTsKLSAgICBpZiAoIXZhbGlkYXRlLnZhbGlk
YXRlTG9vcFR5cGUobG9vcCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIXZhbGlk
YXRlLnZhbGlkYXRlRm9yTG9vcEhlYWRlcihsb29wKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIFRJbnRlcm1Ob2RlICpib2R5ID0gbG9vcC0+Z2V0Qm9keSgpOwotICAgIGlmIChib2R5ICE9
IG51bGxwdHIpCisgICAgaWYgKGlzTG9vcEluZGV4KG5vZGUpICYmIGlzTFZhbHVlUmVxdWlyZWRI
ZXJlKCkpCiAgICAgewotICAgICAgICB2YWxpZGF0ZS5tTG9vcFN0YWNrLnB1c2gobG9vcCk7Ci0g
ICAgICAgIGJvZHktPnRyYXZlcnNlKCZ2YWxpZGF0ZSk7Ci0gICAgICAgIHZhbGlkYXRlLm1Mb29w
U3RhY2sucG9wKCk7CisgICAgICAgIGVycm9yKG5vZGUtPmdldExpbmUoKSwKKyAgICAgICAgICAg
ICAgIkxvb3AgaW5kZXggY2Fubm90IGJlIHN0YXRpY2FsbHkgYXNzaWduZWQgdG8gd2l0aGluIHRo
ZSBib2R5IG9mIHRoZSBsb29wIiwKKyAgICAgICAgICAgICAgbm9kZS0+Z2V0U3ltYm9sKCkuY19z
dHIoKSk7CiAgICAgfQotICAgIHJldHVybiAodmFsaWRhdGUubU51bUVycm9ycyA9PSAwKTsKIH0K
IAotYm9vbCBWYWxpZGF0ZUxpbWl0YXRpb25zOjp2aXNpdEJpbmFyeShWaXNpdCwgVEludGVybUJp
bmFyeSAqbm9kZSkKK2Jvb2wgVmFsaWRhdGVMaW1pdGF0aW9uc1RyYXZlcnNlcjo6dmlzaXRCaW5h
cnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpCiB7Ci0gICAgLy8gQ2hlY2sgaWYgbG9vcCBp
bmRleCBpcyBtb2RpZmllZCBpbiB0aGUgbG9vcCBib2R5LgotICAgIHZhbGlkYXRlT3BlcmF0aW9u
KG5vZGUsIG5vZGUtPmdldExlZnQoKSk7Ci0KICAgICAvLyBDaGVjayBpbmRleGluZy4KICAgICBz
d2l0Y2ggKG5vZGUtPmdldE9wKCkpCiAgICAgewotICAgICAgY2FzZSBFT3BJbmRleERpcmVjdDoK
LSAgICAgIGNhc2UgRU9wSW5kZXhJbmRpcmVjdDoKLSAgICAgICAgICBpZiAobVZhbGlkYXRlSW5k
ZXhpbmcpCi0gICAgICAgICAgICAgIHZhbGlkYXRlSW5kZXhpbmcobm9kZSk7Ci0gICAgICAgICAg
YnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotYm9vbCBWYWxpZGF0ZUxpbWl0YXRpb25zOjp2aXNpdFVuYXJ5KFZpc2l0
LCBUSW50ZXJtVW5hcnkgKm5vZGUpCi17Ci0gICAgLy8gQ2hlY2sgaWYgbG9vcCBpbmRleCBpcyBt
b2RpZmllZCBpbiB0aGUgbG9vcCBib2R5LgotICAgIHZhbGlkYXRlT3BlcmF0aW9uKG5vZGUsIG5v
ZGUtPmdldE9wZXJhbmQoKSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBWYWxpZGF0
ZUxpbWl0YXRpb25zOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9k
ZSkKLXsKLSAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpIHsKLSAgICAgIGNhc2UgRU9wRnVuY3Rp
b25DYWxsOgotICAgICAgICB2YWxpZGF0ZUZ1bmN0aW9uQ2FsbChub2RlKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BJbmRl
eERpcmVjdDoKKyAgICAgICAgY2FzZSBFT3BJbmRleEluZGlyZWN0OgorICAgICAgICAgICAgdmFs
aWRhdGVJbmRleGluZyhub2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlTGltaXRhdGlvbnM6OnZpc2l0TG9vcChWaXNpdCwgVEludGVybUxvb3AgKm5vZGUp
Citib29sIFZhbGlkYXRlTGltaXRhdGlvbnNUcmF2ZXJzZXI6OnZpc2l0TG9vcChWaXNpdCwgVElu
dGVybUxvb3AgKm5vZGUpCiB7Ci0gICAgaWYgKCFtVmFsaWRhdGVJbm5lckxvb3BzKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQogICAgIGlmICghdmFsaWRhdGVMb29wVHlwZShub2RlKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xMzcsNTEgKzE0OSw0MyBAQCBib29sIFZhbGlkYXRlTGlt
aXRhdGlvbnM6OnZpc2l0TG9vcChWaXNpdCwgVEludGVybUxvb3AgKm5vZGUpCiAgICAgVEludGVy
bU5vZGUgKmJvZHkgPSBub2RlLT5nZXRCb2R5KCk7CiAgICAgaWYgKGJvZHkgIT0gTlVMTCkKICAg
ICB7Ci0gICAgICAgIG1Mb29wU3RhY2sucHVzaChub2RlKTsKKyAgICAgICAgbUxvb3BTeW1ib2xJ
ZHMucHVzaF9iYWNrKEdldExvb3BTeW1ib2xJZChub2RlKSk7CiAgICAgICAgIGJvZHktPnRyYXZl
cnNlKHRoaXMpOwotICAgICAgICBtTG9vcFN0YWNrLnBvcCgpOworICAgICAgICBtTG9vcFN5bWJv
bElkcy5wb3BfYmFjaygpOwogICAgIH0KIAogICAgIC8vIFRoZSBsb29wIGlzIGZ1bGx5IHByb2Nl
c3NlZCAtIG5vIG5lZWQgdG8gdmlzaXQgY2hpbGRyZW4uCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci12b2lkIFZhbGlkYXRlTGltaXRhdGlvbnM6OmVycm9yKFRTb3VyY2VMb2MgbG9jLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24sIGNvbnN0IGNoYXIg
KnRva2VuKQordm9pZCBWYWxpZGF0ZUxpbWl0YXRpb25zVHJhdmVyc2VyOjplcnJvcihUU291cmNl
TG9jIGxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyICp0b2tlbikKIHsKLSAgICBp
ZiAobVNpbmspCi0gICAgewotICAgICAgICBtU2luay0+cHJlZml4KEVQcmVmaXhFcnJvcik7Ci0g
ICAgICAgIG1TaW5rLT5sb2NhdGlvbihsb2MpOwotICAgICAgICAoKm1TaW5rKSA8PCAiJyIgPDwg
dG9rZW4gPDwgIicgOiAiIDw8IHJlYXNvbiA8PCAiXG4iOwotICAgIH0KLSAgICArK21OdW1FcnJv
cnM7CisgICAgbURpYWdub3N0aWNzLT5lcnJvcihsb2MsIHJlYXNvbiwgdG9rZW4pOwogfQogCi1i
b29sIFZhbGlkYXRlTGltaXRhdGlvbnM6OndpdGhpbkxvb3BCb2R5KCkgY29uc3QKK2Jvb2wgVmFs
aWRhdGVMaW1pdGF0aW9uc1RyYXZlcnNlcjo6d2l0aGluTG9vcEJvZHkoKSBjb25zdAogewotICAg
IHJldHVybiAhbUxvb3BTdGFjay5lbXB0eSgpOworICAgIHJldHVybiAhbUxvb3BTeW1ib2xJZHMu
ZW1wdHkoKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUxpbWl0YXRpb25zOjppc0xvb3BJbmRleChUSW50
ZXJtU3ltYm9sICpzeW1ib2wpCitib29sIFZhbGlkYXRlTGltaXRhdGlvbnNUcmF2ZXJzZXI6Omlz
TG9vcEluZGV4KFRJbnRlcm1TeW1ib2wgKnN5bWJvbCkKIHsKLSAgICByZXR1cm4gbUxvb3BTdGFj
ay5maW5kTG9vcChzeW1ib2wpICE9IE5VTEw7CisgICAgcmV0dXJuIHN0ZDo6ZmluZChtTG9vcFN5
bWJvbElkcy5iZWdpbigpLCBtTG9vcFN5bWJvbElkcy5lbmQoKSwgc3ltYm9sLT5nZXRJZCgpKSAh
PQorICAgICAgICAgICBtTG9vcFN5bWJvbElkcy5lbmQoKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUxp
bWl0YXRpb25zOjp2YWxpZGF0ZUxvb3BUeXBlKFRJbnRlcm1Mb29wICpub2RlKQorYm9vbCBWYWxp
ZGF0ZUxpbWl0YXRpb25zVHJhdmVyc2VyOjp2YWxpZGF0ZUxvb3BUeXBlKFRJbnRlcm1Mb29wICpu
b2RlKQogewogICAgIFRMb29wVHlwZSB0eXBlID0gbm9kZS0+Z2V0VHlwZSgpOwogICAgIGlmICh0
eXBlID09IEVMb29wRm9yKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFJlamVjdCB3
aGlsZSBhbmQgZG8td2hpbGUgbG9vcHMuCi0gICAgZXJyb3Iobm9kZS0+Z2V0TGluZSgpLAotICAg
ICAgICAgICJUaGlzIHR5cGUgb2YgbG9vcCBpcyBub3QgYWxsb3dlZCIsCi0gICAgICAgICAgdHlw
ZSA9PSBFTG9vcFdoaWxlID8gIndoaWxlIiA6ICJkbyIpOworICAgIGVycm9yKG5vZGUtPmdldExp
bmUoKSwgIlRoaXMgdHlwZSBvZiBsb29wIGlzIG5vdCBhbGxvd2VkIiwgdHlwZSA9PSBFTG9vcFdo
aWxlID8gIndoaWxlIiA6ICJkbyIpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZUxpbWl0YXRpb25zOjp2YWxpZGF0ZUZvckxvb3BIZWFkZXIoVEludGVybUxvb3AgKm5vZGUp
Citib29sIFZhbGlkYXRlTGltaXRhdGlvbnNUcmF2ZXJzZXI6OnZhbGlkYXRlRm9yTG9vcEhlYWRl
cihUSW50ZXJtTG9vcCAqbm9kZSkKIHsKICAgICBBU1NFUlQobm9kZS0+Z2V0VHlwZSgpID09IEVM
b29wRm9yKTsKIApAQCAtMjAwLDcgKzIwNCw3IEBAIGJvb2wgVmFsaWRhdGVMaW1pdGF0aW9uczo6
dmFsaWRhdGVGb3JMb29wSGVhZGVyKFRJbnRlcm1Mb29wICpub2RlKQogICAgIHJldHVybiB0cnVl
OwogfQogCi1pbnQgVmFsaWRhdGVMaW1pdGF0aW9uczo6dmFsaWRhdGVGb3JMb29wSW5pdChUSW50
ZXJtTG9vcCAqbm9kZSkKK2ludCBWYWxpZGF0ZUxpbWl0YXRpb25zVHJhdmVyc2VyOjp2YWxpZGF0
ZUZvckxvb3BJbml0KFRJbnRlcm1Mb29wICpub2RlKQogewogICAgIFRJbnRlcm1Ob2RlICppbml0
ID0gbm9kZS0+Z2V0SW5pdCgpOwogICAgIGlmIChpbml0ID09IE5VTEwpCkBAIC0yMTMsOCArMjE3
LDggQEAgaW50IFZhbGlkYXRlTGltaXRhdGlvbnM6OnZhbGlkYXRlRm9yTG9vcEluaXQoVEludGVy
bUxvb3AgKm5vZGUpCiAgICAgLy8gaW5pdC1kZWNsYXJhdGlvbiBoYXMgdGhlIGZvcm06CiAgICAg
Ly8gICAgIHR5cGUtc3BlY2lmaWVyIGlkZW50aWZpZXIgPSBjb25zdGFudC1leHByZXNzaW9uCiAg
ICAgLy8KLSAgICBUSW50ZXJtQWdncmVnYXRlICpkZWNsID0gaW5pdC0+Z2V0QXNBZ2dyZWdhdGUo
KTsKLSAgICBpZiAoKGRlY2wgPT0gTlVMTCkgfHwgKGRlY2wtPmdldE9wKCkgIT0gRU9wRGVjbGFy
YXRpb24pKQorICAgIFRJbnRlcm1EZWNsYXJhdGlvbiAqZGVjbCA9IGluaXQtPmdldEFzRGVjbGFy
YXRpb25Ob2RlKCk7CisgICAgaWYgKGRlY2wgPT0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGVy
cm9yKGluaXQtPmdldExpbmUoKSwgIkludmFsaWQgaW5pdCBkZWNsYXJhdGlvbiIsICJmb3IiKTsK
ICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjQwLDE2ICsyNDQsMTUgQEAgaW50IFZhbGlkYXRlTGlt
aXRhdGlvbnM6OnZhbGlkYXRlRm9yTG9vcEluaXQoVEludGVybUxvb3AgKm5vZGUpCiAgICAgfQog
ICAgIC8vIFRoZSBsb29wIGluZGV4IGhhcyB0eXBlIGludCBvciBmbG9hdC4KICAgICBUQmFzaWNU
eXBlIHR5cGUgPSBzeW1ib2wtPmdldEJhc2ljVHlwZSgpOwotICAgIGlmICgodHlwZSAhPSBFYnRJ
bnQpICYmICh0eXBlICE9IEVidFVJbnQpICYmICh0eXBlICE9IEVidEZsb2F0KSkgewotICAgICAg
ICBlcnJvcihzeW1ib2wtPmdldExpbmUoKSwKLSAgICAgICAgICAgICAgIkludmFsaWQgdHlwZSBm
b3IgbG9vcCBpbmRleCIsIGdldEJhc2ljU3RyaW5nKHR5cGUpKTsKKyAgICBpZiAoKHR5cGUgIT0g
RWJ0SW50KSAmJiAodHlwZSAhPSBFYnRVSW50KSAmJiAodHlwZSAhPSBFYnRGbG9hdCkpCisgICAg
eworICAgICAgICBlcnJvcihzeW1ib2wtPmdldExpbmUoKSwgIkludmFsaWQgdHlwZSBmb3IgbG9v
cCBpbmRleCIsIGdldEJhc2ljU3RyaW5nKHR5cGUpKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAg
IH0KICAgICAvLyBUaGUgbG9vcCBpbmRleCBpcyBpbml0aWFsaXplZCB3aXRoIGNvbnN0YW50IGV4
cHJlc3Npb24uCiAgICAgaWYgKCFpc0NvbnN0RXhwcihkZWNsSW5pdC0+Z2V0UmlnaHQoKSkpCiAg
ICAgewotICAgICAgICBlcnJvcihkZWNsSW5pdC0+Z2V0TGluZSgpLAotICAgICAgICAgICAgICAi
TG9vcCBpbmRleCBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQgd2l0aCBub24tY29uc3RhbnQgZXhwcmVz
c2lvbiIsCisgICAgICAgIGVycm9yKGRlY2xJbml0LT5nZXRMaW5lKCksICJMb29wIGluZGV4IGNh
bm5vdCBiZSBpbml0aWFsaXplZCB3aXRoIG5vbi1jb25zdGFudCBleHByZXNzaW9uIiwKICAgICAg
ICAgICAgICAgc3ltYm9sLT5nZXRTeW1ib2woKS5jX3N0cigpKTsKICAgICAgICAgcmV0dXJuIC0x
OwogICAgIH0KQEAgLTI1Nyw4ICsyNjAsNyBAQCBpbnQgVmFsaWRhdGVMaW1pdGF0aW9uczo6dmFs
aWRhdGVGb3JMb29wSW5pdChUSW50ZXJtTG9vcCAqbm9kZSkKICAgICByZXR1cm4gc3ltYm9sLT5n
ZXRJZCgpOwogfQogCi1ib29sIFZhbGlkYXRlTGltaXRhdGlvbnM6OnZhbGlkYXRlRm9yTG9vcENv
bmQoVEludGVybUxvb3AgKm5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IGluZGV4U3ltYm9sSWQpCitib29sIFZhbGlkYXRlTGltaXRhdGlvbnNU
cmF2ZXJzZXI6OnZhbGlkYXRlRm9yTG9vcENvbmQoVEludGVybUxvb3AgKm5vZGUsIGludCBpbmRl
eFN5bWJvbElkKQogewogICAgIFRJbnRlcm1Ob2RlICpjb25kID0gbm9kZS0+Z2V0Q29uZGl0aW9u
KCk7CiAgICAgaWYgKGNvbmQgPT0gTlVMTCkKQEAgLTI4NSwzMSArMjg3LDI4IEBAIGJvb2wgVmFs
aWRhdGVMaW1pdGF0aW9uczo6dmFsaWRhdGVGb3JMb29wQ29uZChUSW50ZXJtTG9vcCAqbm9kZSwK
ICAgICB9CiAgICAgaWYgKHN5bWJvbC0+Z2V0SWQoKSAhPSBpbmRleFN5bWJvbElkKQogICAgIHsK
LSAgICAgICAgZXJyb3Ioc3ltYm9sLT5nZXRMaW5lKCksCi0gICAgICAgICAgICAgICJFeHBlY3Rl
ZCBsb29wIGluZGV4Iiwgc3ltYm9sLT5nZXRTeW1ib2woKS5jX3N0cigpKTsKKyAgICAgICAgZXJy
b3Ioc3ltYm9sLT5nZXRMaW5lKCksICJFeHBlY3RlZCBsb29wIGluZGV4Iiwgc3ltYm9sLT5nZXRT
eW1ib2woKS5jX3N0cigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAvLyBS
ZWxhdGlvbmFsIG9wZXJhdG9yIGlzIG9uZSBvZjogPiA+PSA8IDw9ID09IG9yICE9LgogICAgIHN3
aXRjaCAoYmluT3AtPmdldE9wKCkpCiAgICAgewotICAgICAgY2FzZSBFT3BFcXVhbDoKLSAgICAg
IGNhc2UgRU9wTm90RXF1YWw6Ci0gICAgICBjYXNlIEVPcExlc3NUaGFuOgotICAgICAgY2FzZSBF
T3BHcmVhdGVyVGhhbjoKLSAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbDoKLSAgICAgIGNhc2Ug
RU9wR3JlYXRlclRoYW5FcXVhbDoKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAg
ICAgICBlcnJvcihiaW5PcC0+Z2V0TGluZSgpLAotICAgICAgICAgICAgICAiSW52YWxpZCByZWxh
dGlvbmFsIG9wZXJhdG9yIiwKLSAgICAgICAgICAgICAgR2V0T3BlcmF0b3JTdHJpbmcoYmluT3At
PmdldE9wKCkpKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wRXF1YWw6CisgICAg
ICAgIGNhc2UgRU9wTm90RXF1YWw6CisgICAgICAgIGNhc2UgRU9wTGVzc1RoYW46CisgICAgICAg
IGNhc2UgRU9wR3JlYXRlclRoYW46CisgICAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbDoKKyAg
ICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFsOgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBlcnJvcihiaW5PcC0+Z2V0TGluZSgpLCAiSW52YWxp
ZCByZWxhdGlvbmFsIG9wZXJhdG9yIiwKKyAgICAgICAgICAgICAgICAgIEdldE9wZXJhdG9yU3Ry
aW5nKGJpbk9wLT5nZXRPcCgpKSk7CisgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgLy8g
TG9vcCBpbmRleCBtdXN0IGJlIGNvbXBhcmVkIHdpdGggYSBjb25zdGFudC4KICAgICBpZiAoIWlz
Q29uc3RFeHByKGJpbk9wLT5nZXRSaWdodCgpKSkKICAgICB7Ci0gICAgICAgIGVycm9yKGJpbk9w
LT5nZXRMaW5lKCksCi0gICAgICAgICAgICAgICJMb29wIGluZGV4IGNhbm5vdCBiZSBjb21wYXJl
ZCB3aXRoIG5vbi1jb25zdGFudCBleHByZXNzaW9uIiwKKyAgICAgICAgZXJyb3IoYmluT3AtPmdl
dExpbmUoKSwgIkxvb3AgaW5kZXggY2Fubm90IGJlIGNvbXBhcmVkIHdpdGggbm9uLWNvbnN0YW50
IGV4cHJlc3Npb24iLAogICAgICAgICAgICAgICBzeW1ib2wtPmdldFN5bWJvbCgpLmNfc3RyKCkp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMzE3LDggKzMxNiw3IEBAIGJvb2wg
VmFsaWRhdGVMaW1pdGF0aW9uczo6dmFsaWRhdGVGb3JMb29wQ29uZChUSW50ZXJtTG9vcCAqbm9k
ZSwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUxpbWl0YXRpb25zOjp2YWxp
ZGF0ZUZvckxvb3BFeHByKFRJbnRlcm1Mb29wICpub2RlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleFN5bWJvbElkKQorYm9vbCBWYWxpZGF0
ZUxpbWl0YXRpb25zVHJhdmVyc2VyOjp2YWxpZGF0ZUZvckxvb3BFeHByKFRJbnRlcm1Mb29wICpu
b2RlLCBpbnQgaW5kZXhTeW1ib2xJZCkKIHsKICAgICBUSW50ZXJtTm9kZSAqZXhwciA9IG5vZGUt
PmdldEV4cHJlc3Npb24oKTsKICAgICBpZiAoZXhwciA9PSBOVUxMKQpAQCAtMzM2LDE5ICszMzQs
MTkgQEAgYm9vbCBWYWxpZGF0ZUxpbWl0YXRpb25zOjp2YWxpZGF0ZUZvckxvb3BFeHByKFRJbnRl
cm1Mb29wICpub2RlLAogICAgIC8vICAgICAtLWxvb3BfaW5kZXgKICAgICAvLyBUaGUgbGFzdCB0
d28gZm9ybXMgYXJlIG5vdCBzcGVjaWZpZWQgaW4gdGhlIHNwZWMsIGJ1dCBJIGFtIGFzc3VtaW5n
CiAgICAgLy8gaXRzIGFuIG92ZXJzaWdodC4KLSAgICBUSW50ZXJtVW5hcnkgKnVuT3AgPSBleHBy
LT5nZXRBc1VuYXJ5Tm9kZSgpOworICAgIFRJbnRlcm1VbmFyeSAqdW5PcCAgID0gZXhwci0+Z2V0
QXNVbmFyeU5vZGUoKTsKICAgICBUSW50ZXJtQmluYXJ5ICpiaW5PcCA9IHVuT3AgPyBOVUxMIDog
ZXhwci0+Z2V0QXNCaW5hcnlOb2RlKCk7CiAKLSAgICBUT3BlcmF0b3Igb3AgPSBFT3BOdWxsOwor
ICAgIFRPcGVyYXRvciBvcCAgICAgICAgICA9IEVPcE51bGw7CiAgICAgVEludGVybVN5bWJvbCAq
c3ltYm9sID0gTlVMTDsKICAgICBpZiAodW5PcCAhPSBOVUxMKQogICAgIHsKLSAgICAgICAgb3Ag
PSB1bk9wLT5nZXRPcCgpOworICAgICAgICBvcCAgICAgPSB1bk9wLT5nZXRPcCgpOwogICAgICAg
ICBzeW1ib2wgPSB1bk9wLT5nZXRPcGVyYW5kKCktPmdldEFzU3ltYm9sTm9kZSgpOwogICAgIH0K
ICAgICBlbHNlIGlmIChiaW5PcCAhPSBOVUxMKQogICAgIHsKLSAgICAgICAgb3AgPSBiaW5PcC0+
Z2V0T3AoKTsKKyAgICAgICAgb3AgICAgID0gYmluT3AtPmdldE9wKCk7CiAgICAgICAgIHN5bWJv
bCA9IGJpbk9wLT5nZXRMZWZ0KCktPmdldEFzU3ltYm9sTm9kZSgpOwogICAgIH0KIApAQCAtMzYw
LDI3ICszNTgsMjYgQEAgYm9vbCBWYWxpZGF0ZUxpbWl0YXRpb25zOjp2YWxpZGF0ZUZvckxvb3BF
eHByKFRJbnRlcm1Mb29wICpub2RlLAogICAgIH0KICAgICBpZiAoc3ltYm9sLT5nZXRJZCgpICE9
IGluZGV4U3ltYm9sSWQpCiAgICAgewotICAgICAgICBlcnJvcihzeW1ib2wtPmdldExpbmUoKSwK
LSAgICAgICAgICAgICAgIkV4cGVjdGVkIGxvb3AgaW5kZXgiLCBzeW1ib2wtPmdldFN5bWJvbCgp
LmNfc3RyKCkpOworICAgICAgICBlcnJvcihzeW1ib2wtPmdldExpbmUoKSwgIkV4cGVjdGVkIGxv
b3AgaW5kZXgiLCBzeW1ib2wtPmdldFN5bWJvbCgpLmNfc3RyKCkpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgLy8gVGhlIG9wZXJhdG9yIGlzIG9uZSBvZjogKysgLS0gKz0g
LT0uCiAgICAgc3dpdGNoIChvcCkKICAgICB7Ci0gICAgICBjYXNlIEVPcFBvc3RJbmNyZW1lbnQ6
Ci0gICAgICBjYXNlIEVPcFBvc3REZWNyZW1lbnQ6Ci0gICAgICBjYXNlIEVPcFByZUluY3JlbWVu
dDoKLSAgICAgIGNhc2UgRU9wUHJlRGVjcmVtZW50OgotICAgICAgICBBU1NFUlQoKHVuT3AgIT0g
TlVMTCkgJiYgKGJpbk9wID09IE5VTEwpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVP
cEFkZEFzc2lnbjoKLSAgICAgIGNhc2UgRU9wU3ViQXNzaWduOgotICAgICAgICBBU1NFUlQoKHVu
T3AgPT0gTlVMTCkgJiYgKGJpbk9wICE9IE5VTEwpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBk
ZWZhdWx0OgotICAgICAgICBlcnJvcihleHByLT5nZXRMaW5lKCksICJJbnZhbGlkIG9wZXJhdG9y
IiwgR2V0T3BlcmF0b3JTdHJpbmcob3ApKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBjYXNlIEVPcFBvc3RJbmNyZW1lbnQ6CisgICAgICAgIGNhc2UgRU9wUG9zdERlY3JlbWVudDoK
KyAgICAgICAgY2FzZSBFT3BQcmVJbmNyZW1lbnQ6CisgICAgICAgIGNhc2UgRU9wUHJlRGVjcmVt
ZW50OgorICAgICAgICAgICAgQVNTRVJUKCh1bk9wICE9IE5VTEwpICYmIChiaW5PcCA9PSBOVUxM
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BBZGRBc3NpZ246CisgICAg
ICAgIGNhc2UgRU9wU3ViQXNzaWduOgorICAgICAgICAgICAgQVNTRVJUKCh1bk9wID09IE5VTEwp
ICYmIChiaW5PcCAhPSBOVUxMKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIGVycm9yKGV4cHItPmdldExpbmUoKSwgIkludmFsaWQgb3BlcmF0b3Ii
LCBHZXRPcGVyYXRvclN0cmluZyhvcCkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIC8vIExvb3AgaW5kZXggbXVzdCBiZSBpbmNyZW1lbnRlZC9kZWNyZW1lbnRlZCB3
aXRoIGEgY29uc3RhbnQuCkBAIC0zODgsOCArMzg1LDcgQEAgYm9vbCBWYWxpZGF0ZUxpbWl0YXRp
b25zOjp2YWxpZGF0ZUZvckxvb3BFeHByKFRJbnRlcm1Mb29wICpub2RlLAogICAgIHsKICAgICAg
ICAgaWYgKCFpc0NvbnN0RXhwcihiaW5PcC0+Z2V0UmlnaHQoKSkpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGVycm9yKGJpbk9wLT5nZXRMaW5lKCksCi0gICAgICAgICAgICAgICAgICAiTG9vcCBp
bmRleCBjYW5ub3QgYmUgbW9kaWZpZWQgYnkgbm9uLWNvbnN0YW50IGV4cHJlc3Npb24iLAorICAg
ICAgICAgICAgZXJyb3IoYmluT3AtPmdldExpbmUoKSwgIkxvb3AgaW5kZXggY2Fubm90IGJlIG1v
ZGlmaWVkIGJ5IG5vbi1jb25zdGFudCBleHByZXNzaW9uIiwKICAgICAgICAgICAgICAgICAgIHN5
bWJvbC0+Z2V0U3ltYm9sKCkuY19zdHIoKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KQEAgLTM5OCw5NiArMzk0LDMxIEBAIGJvb2wgVmFsaWRhdGVMaW1pdGF0aW9uczo6
dmFsaWRhdGVGb3JMb29wRXhwcihUSW50ZXJtTG9vcCAqbm9kZSwKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBWYWxpZGF0ZUxpbWl0YXRpb25zOjp2YWxpZGF0ZUZ1bmN0aW9uQ2FsbChUSW50
ZXJtQWdncmVnYXRlICpub2RlKQotewotICAgIEFTU0VSVChub2RlLT5nZXRPcCgpID09IEVPcEZ1
bmN0aW9uQ2FsbCk7Ci0KLSAgICAvLyBJZiBub3Qgd2l0aGluIGxvb3AgYm9keSwgdGhlcmUgaXMg
bm90aGluZyB0byBjaGVjay4KLSAgICBpZiAoIXdpdGhpbkxvb3BCb2R5KCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgLy8gTGlzdCBvZiBwYXJhbSBpbmRpY2VzIGZvciB3aGljaCBsb29w
IGluZGljZXMgYXJlIHVzZWQgYXMgYXJndW1lbnQuCi0gICAgdHlwZWRlZiBzdGQ6OnZlY3Rvcjxz
aXplX3Q+IFBhcmFtSW5kZXg7Ci0gICAgUGFyYW1JbmRleCBwSW5kZXg7Ci0gICAgVEludGVybVNl
cXVlbmNlICpwYXJhbXMgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOwotICAgIGZvciAoVEludGVybVNl
cXVlbmNlOjpzaXplX3R5cGUgaSA9IDA7IGkgPCBwYXJhbXMtPnNpemUoKTsgKytpKQotICAgIHsK
LSAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gKCpwYXJhbXMpW2ldLT5nZXRBc1N5bWJv
bE5vZGUoKTsKLSAgICAgICAgaWYgKHN5bWJvbCAmJiBpc0xvb3BJbmRleChzeW1ib2wpKQotICAg
ICAgICAgICAgcEluZGV4LnB1c2hfYmFjayhpKTsKLSAgICB9Ci0gICAgLy8gSWYgbm9uZSBvZiB0
aGUgbG9vcCBpbmRpY2VzIGFyZSB1c2VkIGFzIGFyZ3VtZW50cywKLSAgICAvLyB0aGVyZSBpcyBu
b3RoaW5nIHRvIGNoZWNrLgotICAgIGlmIChwSW5kZXguZW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICBib29sIHZhbGlkID0gdHJ1ZTsKLSAgICBUU3ltYm9sVGFibGUmIHN5bWJv
bFRhYmxlID0gR2V0R2xvYmFsUGFyc2VDb250ZXh0KCktPnN5bWJvbFRhYmxlOwotICAgIFRTeW1i
b2wgKnN5bWJvbCAgICAgICAgICAgPSBzeW1ib2xUYWJsZS5maW5kKG5vZGUtPmdldEZ1bmN0aW9u
U3ltYm9sSW5mbygpLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHZXRHbG9iYWxQYXJzZUNvbnRleHQoKS0+Z2V0U2hhZGVyVmVyc2lvbigpKTsKLSAg
ICBBU1NFUlQoc3ltYm9sICYmIHN5bWJvbC0+aXNGdW5jdGlvbigpKTsKLSAgICBURnVuY3Rpb24g
KmZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uICo+KHN5bWJvbCk7Ci0gICAgZm9yIChQ
YXJhbUluZGV4Ojpjb25zdF9pdGVyYXRvciBpID0gcEluZGV4LmJlZ2luKCk7Ci0gICAgICAgICBp
ICE9IHBJbmRleC5lbmQoKTsgKytpKQotICAgIHsKLSAgICAgICAgY29uc3QgVENvbnN0UGFyYW1l
dGVyICZwYXJhbSA9IGZ1bmN0aW9uLT5nZXRQYXJhbSgqaSk7Ci0gICAgICAgIFRRdWFsaWZpZXIg
cXVhbCA9IHBhcmFtLnR5cGUtPmdldFF1YWxpZmllcigpOwotICAgICAgICBpZiAoKHF1YWwgPT0g
RXZxT3V0KSB8fCAocXVhbCA9PSBFdnFJbk91dCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVy
cm9yKCgqcGFyYW1zKVsqaV0tPmdldExpbmUoKSwKLSAgICAgICAgICAgICAgICAgICJMb29wIGlu
ZGV4IGNhbm5vdCBiZSB1c2VkIGFzIGFyZ3VtZW50IHRvIGEgZnVuY3Rpb24gb3V0IG9yIGlub3V0
IHBhcmFtZXRlciIsCi0gICAgICAgICAgICAgICAgICAoKnBhcmFtcylbKmldLT5nZXRBc1N5bWJv
bE5vZGUoKS0+Z2V0U3ltYm9sKCkuY19zdHIoKSk7Ci0gICAgICAgICAgICB2YWxpZCA9IGZhbHNl
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHZhbGlkOwotfQotCi1ib29sIFZhbGlk
YXRlTGltaXRhdGlvbnM6OnZhbGlkYXRlT3BlcmF0aW9uKFRJbnRlcm1PcGVyYXRvciAqbm9kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUq
IG9wZXJhbmQpCi17Ci0gICAgLy8gQ2hlY2sgaWYgbG9vcCBpbmRleCBpcyBtb2RpZmllZCBpbiB0
aGUgbG9vcCBib2R5LgotICAgIGlmICghd2l0aGluTG9vcEJvZHkoKSB8fCAhbm9kZS0+aXNBc3Np
Z25tZW50KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgVEludGVybVN5bWJvbCAqc3lt
Ym9sID0gb3BlcmFuZC0+Z2V0QXNTeW1ib2xOb2RlKCk7Ci0gICAgaWYgKHN5bWJvbCAmJiBpc0xv
b3BJbmRleChzeW1ib2wpKQotICAgIHsKLSAgICAgICAgZXJyb3Iobm9kZS0+Z2V0TGluZSgpLAot
ICAgICAgICAgICAgICAiTG9vcCBpbmRleCBjYW5ub3QgYmUgc3RhdGljYWxseSBhc3NpZ25lZCB0
byB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIGxvb3AiLAotICAgICAgICAgICAgICBzeW1ib2wtPmdl
dFN5bWJvbCgpLmNfc3RyKCkpOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBW
YWxpZGF0ZUxpbWl0YXRpb25zOjppc0NvbnN0RXhwcihUSW50ZXJtTm9kZSAqbm9kZSkKK2Jvb2wg
VmFsaWRhdGVMaW1pdGF0aW9uc1RyYXZlcnNlcjo6aXNDb25zdEV4cHIoVEludGVybU5vZGUgKm5v
ZGUpCiB7CiAgICAgQVNTRVJUKG5vZGUgIT0gbnVsbHB0cik7CiAgICAgcmV0dXJuIG5vZGUtPmdl
dEFzQ29uc3RhbnRVbmlvbigpICE9IG51bGxwdHIgJiYgbm9kZS0+Z2V0QXNUeXBlZCgpLT5nZXRR
dWFsaWZpZXIoKSA9PSBFdnFDb25zdDsKIH0KIAotYm9vbCBWYWxpZGF0ZUxpbWl0YXRpb25zOjpp
c0NvbnN0SW5kZXhFeHByKFRJbnRlcm1Ob2RlICpub2RlKQorYm9vbCBWYWxpZGF0ZUxpbWl0YXRp
b25zVHJhdmVyc2VyOjppc0NvbnN0SW5kZXhFeHByKFRJbnRlcm1Ob2RlICpub2RlKQogewogICAg
IEFTU0VSVChub2RlICE9IE5VTEwpOwogCi0gICAgVmFsaWRhdGVDb25zdEluZGV4RXhwciB2YWxp
ZGF0ZShtTG9vcFN0YWNrKTsKKyAgICBWYWxpZGF0ZUNvbnN0SW5kZXhFeHByIHZhbGlkYXRlKG1M
b29wU3ltYm9sSWRzKTsKICAgICBub2RlLT50cmF2ZXJzZSgmdmFsaWRhdGUpOwogICAgIHJldHVy
biB2YWxpZGF0ZS5pc1ZhbGlkKCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVMaW1pdGF0aW9uczo6dmFs
aWRhdGVJbmRleGluZyhUSW50ZXJtQmluYXJ5ICpub2RlKQorYm9vbCBWYWxpZGF0ZUxpbWl0YXRp
b25zVHJhdmVyc2VyOjp2YWxpZGF0ZUluZGV4aW5nKFRJbnRlcm1CaW5hcnkgKm5vZGUpCiB7Ci0g
ICAgQVNTRVJUKChub2RlLT5nZXRPcCgpID09IEVPcEluZGV4RGlyZWN0KSB8fAotICAgICAgICAg
ICAobm9kZS0+Z2V0T3AoKSA9PSBFT3BJbmRleEluZGlyZWN0KSk7CisgICAgQVNTRVJUKChub2Rl
LT5nZXRPcCgpID09IEVPcEluZGV4RGlyZWN0KSB8fCAobm9kZS0+Z2V0T3AoKSA9PSBFT3BJbmRl
eEluZGlyZWN0KSk7CiAKLSAgICBib29sIHZhbGlkID0gdHJ1ZTsKKyAgICBib29sIHZhbGlkICAg
ICAgICAgID0gdHJ1ZTsKICAgICBUSW50ZXJtVHlwZWQgKmluZGV4ID0gbm9kZS0+Z2V0UmlnaHQo
KTsKICAgICAvLyBUaGUgaW5kZXggZXhwZXNzaW9uIG11c3QgYmUgYSBjb25zdGFudC1pbmRleC1l
eHByZXNzaW9uIHVubGVzcwogICAgIC8vIHRoZSBvcGVyYW5kIGlzIGEgdW5pZm9ybSBpbiBhIHZl
cnRleCBzaGFkZXIuCiAgICAgVEludGVybVR5cGVkICpvcGVyYW5kID0gbm9kZS0+Z2V0TGVmdCgp
OwotICAgIGJvb2wgc2tpcCA9IChtU2hhZGVyVHlwZSA9PSBHTF9WRVJURVhfU0hBREVSKSAmJgot
ICAgICAgICAgICAgICAgIChvcGVyYW5kLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFVbmlmb3JtKTsK
KyAgICBib29sIHNraXAgPSAobVNoYWRlclR5cGUgPT0gR0xfVkVSVEVYX1NIQURFUikgJiYgKG9w
ZXJhbmQtPmdldFF1YWxpZmllcigpID09IEV2cVVuaWZvcm0pOwogICAgIGlmICghc2tpcCAmJiAh
aXNDb25zdEluZGV4RXhwcihpbmRleCkpCiAgICAgewogICAgICAgICBlcnJvcihpbmRleC0+Z2V0
TGluZSgpLCAiSW5kZXggZXhwcmVzc2lvbiBtdXN0IGJlIGNvbnN0YW50IiwgIltdIik7CkBAIC00
OTYsMyArNDI3LDE3IEBAIGJvb2wgVmFsaWRhdGVMaW1pdGF0aW9uczo6dmFsaWRhdGVJbmRleGlu
ZyhUSW50ZXJtQmluYXJ5ICpub2RlKQogICAgIHJldHVybiB2YWxpZDsKIH0KIAorfSAgLy8gbmFt
ZXNwYWNlIGFub255bW91cworCitib29sIFZhbGlkYXRlTGltaXRhdGlvbnMoVEludGVybU5vZGUg
KnJvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNoYWRlclR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKQoreworICAgIFZhbGlkYXRlTGlt
aXRhdGlvbnNUcmF2ZXJzZXIgdmFsaWRhdGUoc2hhZGVyVHlwZSwgc3ltYm9sVGFibGUsIHNoYWRl
clZlcnNpb24sIGRpYWdub3N0aWNzKTsKKyAgICByb290LT50cmF2ZXJzZSgmdmFsaWRhdGUpOwor
ICAgIHJldHVybiBkaWFnbm9zdGljcy0+bnVtRXJyb3JzKCkgPT0gMDsKK30KKworfSAgLy8gbmFt
ZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUxpbWl0YXRpb25zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUxpbWl0YXRpb25zLmgKaW5kZXgg
NjY2ZTM4ZmY1Yzg4NGJlNzNlOWUzMDg1ZGZmZDUwNDVkZTE2ZDNhNS4uNjk0N2ZkZWYyYmZkMGVi
MjQ3ZGY4MTNhMTE2NDAwYmFlNTAwMTJiNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVMaW1pdGF0aW9ucy5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRl
TGltaXRhdGlvbnMuaApAQCAtOCw1NiArOCwyMCBAQAogI2RlZmluZSBDT01QSUxFUl9UUkFOU0xB
VE9SX1ZBTElEQVRFTElNSVRBVElPTlNfSF8KIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvSW50ZXJtTm9kZS5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvTG9vcEluZm8u
aCIKIAotY2xhc3MgVEluZm9TaW5rQmFzZTsKLQotLy8gVHJhdmVyc2VzIGludGVybWVkaWF0ZSB0
cmVlIHRvIGVuc3VyZSB0aGF0IHRoZSBzaGFkZXIgZG9lcyBub3QgZXhjZWVkIHRoZQotLy8gbWlu
aW11bSBmdW5jdGlvbmFsaXR5IG1hbmRhdGVkIGluIEdMU0wgMS4wIHNwZWMsIEFwcGVuZGl4IEEu
Ci1jbGFzcyBWYWxpZGF0ZUxpbWl0YXRpb25zIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKK25h
bWVzcGFjZSBzaAogewotICBwdWJsaWM6Ci0gICAgVmFsaWRhdGVMaW1pdGF0aW9ucyhzaDo6R0xl
bnVtIHNoYWRlclR5cGUsIFRJbmZvU2lua0Jhc2UgKnNpbmspOwotCi0gICAgaW50IG51bUVycm9y
cygpIGNvbnN0IHsgcmV0dXJuIG1OdW1FcnJvcnM7IH0KLQotICAgIGJvb2wgdmlzaXRCaW5hcnko
VmlzaXQsIFRJbnRlcm1CaW5hcnkgKikgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNpdFVuYXJ5KFZp
c2l0LCBUSW50ZXJtVW5hcnkgKikgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShW
aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqKSBvdmVycmlkZTsKLSAgICBib29sIHZpc2l0TG9vcChW
aXNpdCwgVEludGVybUxvb3AgKikgb3ZlcnJpZGU7Ci0KLSAgICBzdGF0aWMgYm9vbCBJc0xpbWl0
ZWRGb3JMb29wKFRJbnRlcm1Mb29wICpub2RlKTsKLQotICBwcml2YXRlOgotICAgIHZvaWQgZXJy
b3IoVFNvdXJjZUxvYyBsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29uc3QgY2hhciAqdG9rZW4p
OwotCi0gICAgYm9vbCB3aXRoaW5Mb29wQm9keSgpIGNvbnN0OwotICAgIGJvb2wgaXNMb29wSW5k
ZXgoVEludGVybVN5bWJvbCAqc3ltYm9sKTsKLSAgICBib29sIHZhbGlkYXRlTG9vcFR5cGUoVElu
dGVybUxvb3AgKm5vZGUpOwotCi0gICAgYm9vbCB2YWxpZGF0ZUZvckxvb3BIZWFkZXIoVEludGVy
bUxvb3AgKm5vZGUpOwotICAgIC8vIElmIHZhbGlkLCByZXR1cm4gdGhlIGluZGV4IHN5bWJvbCBp
ZDsgT3RoZXJ3aXNlLCByZXR1cm4gLTEuCi0gICAgaW50IHZhbGlkYXRlRm9yTG9vcEluaXQoVElu
dGVybUxvb3AgKm5vZGUpOwotICAgIGJvb2wgdmFsaWRhdGVGb3JMb29wQ29uZChUSW50ZXJtTG9v
cCAqbm9kZSwgaW50IGluZGV4U3ltYm9sSWQpOwotICAgIGJvb2wgdmFsaWRhdGVGb3JMb29wRXhw
cihUSW50ZXJtTG9vcCAqbm9kZSwgaW50IGluZGV4U3ltYm9sSWQpOwogCi0gICAgLy8gUmV0dXJu
cyB0cnVlIGlmIG5vbmUgb2YgdGhlIGxvb3AgaW5kaWNlcyBpcyB1c2VkIGFzIHRoZSBhcmd1bWVu
dCB0bwotICAgIC8vIHRoZSBnaXZlbiBmdW5jdGlvbiBvdXQgb3IgaW5vdXQgcGFyYW1ldGVyLgot
ICAgIGJvb2wgdmFsaWRhdGVGdW5jdGlvbkNhbGwoVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSk7Ci0g
ICAgYm9vbCB2YWxpZGF0ZU9wZXJhdGlvbihUSW50ZXJtT3BlcmF0b3IgKm5vZGUsIFRJbnRlcm1O
b2RlICpvcGVyYW5kKTsKK2NsYXNzIFREaWFnbm9zdGljczsKIAotICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiBpbmRleGluZyBkb2VzIG5vdCBleGNlZWQgdGhlIG1pbmltdW0gZnVuY3Rpb25hbGl0eQot
ICAgIC8vIG1hbmRhdGVkIGluIEdMU0wgMS4wIHNwZWMsIEFwcGVuZGl4IEEsIFNlY3Rpb24gNS4K
LSAgICBib29sIGlzQ29uc3RFeHByKFRJbnRlcm1Ob2RlICpub2RlKTsKLSAgICBib29sIGlzQ29u
c3RJbmRleEV4cHIoVEludGVybU5vZGUgKm5vZGUpOwotICAgIGJvb2wgdmFsaWRhdGVJbmRleGlu
ZyhUSW50ZXJtQmluYXJ5ICpub2RlKTsKKy8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gc2hh
ZGVyIGRvZXMgbm90IGV4Y2VlZCB0aGUgbWluaW11bSBmdW5jdGlvbmFsaXR5IG1hbmRhdGVkIGlu
IEdMU0wgRVMKKy8vIDEuMDAgc3BlYyBBcHBlbmRpeCBBLgorYm9vbCBWYWxpZGF0ZUxpbWl0YXRp
b25zKFRJbnRlcm1Ob2RlICpyb290LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBz
aGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2xUYWJsZSAm
c3ltYm9sVGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgVERpYWdub3N0aWNzICpkaWFnbm9zdGljcyk7CiAK
LSAgICBzaDo6R0xlbnVtIG1TaGFkZXJUeXBlOwotICAgIFRJbmZvU2lua0Jhc2UgKm1TaW5rOwot
ICAgIGludCBtTnVtRXJyb3JzOwotICAgIFRMb29wU3RhY2sgbUxvb3BTdGFjazsKLSAgICBib29s
IG1WYWxpZGF0ZUluZGV4aW5nOwotICAgIGJvb2wgbVZhbGlkYXRlSW5uZXJMb29wczsKLX07Cit9
ICAvLyBuYW1lc3BhY2Ugc2gKIAotI2VuZGlmIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfVkFMSURB
VEVMSU1JVEFUSU9OU19IXworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1ZBTElEQVRF
TElNSVRBVElPTlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTWF4UGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU1heFBhcmFtZXRl
cnMuY3BwCmluZGV4IDAwYjNjOWI0NTFiYTFjMzc2ODkyNTY1MDliYjc2ZTZmODhkNTAxMDYuLjJk
MGIzZWJkMzM2MzkxOGMxMjUzMjg4MmM5ZGMxYzMzMjMwNTE5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTWF4UGFy
YW1ldGVycy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmNwcApAQCAtNywxOSArNywyMiBAQAogCiAj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU1heFBhcmFtZXRlcnMuaCIKIAor
bmFtZXNwYWNlIHNoCit7CisKIFZhbGlkYXRlTWF4UGFyYW1ldGVyczo6VmFsaWRhdGVNYXhQYXJh
bWV0ZXJzKHVuc2lnbmVkIGludCBtYXhQYXJhbWV0ZXJzKQogICAgIDogVEludGVybVRyYXZlcnNl
cih0cnVlLCBmYWxzZSwgZmFsc2UpLCBtTWF4UGFyYW1ldGVycyhtYXhQYXJhbWV0ZXJzKSwgbVZh
bGlkKHRydWUpCiB7CiB9CiAKLWJvb2wgVmFsaWRhdGVNYXhQYXJhbWV0ZXJzOjp2aXNpdEFnZ3Jl
Z2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKK2Jvb2wgVmFsaWRhdGVN
YXhQYXJhbWV0ZXJzOjp2aXNpdEZ1bmN0aW9uRGVmaW5pdGlvbihWaXNpdCB2aXNpdCwgVEludGVy
bUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kZSkKIHsKICAgICBpZiAoIW1WYWxpZCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBF
T3BQYXJhbWV0ZXJzICYmIG5vZGUtPmdldFNlcXVlbmNlKCktPnNpemUoKSA+IG1NYXhQYXJhbWV0
ZXJzKQorICAgIGlmIChub2RlLT5nZXRGdW5jdGlvblByb3RvdHlwZSgpLT5nZXRTZXF1ZW5jZSgp
LT5zaXplKCkgPiBtTWF4UGFyYW1ldGVycykKICAgICB7CiAgICAgICAgIG1WYWxpZCA9IGZhbHNl
OwogICAgIH0KQEAgLTMzLDMgKzM2LDUgQEAgYm9vbCBWYWxpZGF0ZU1heFBhcmFtZXRlcnM6OnZh
bGlkYXRlKFRJbnRlcm1Ob2RlICpyb290LCB1bnNpZ25lZCBpbnQgbWF4UGFyYW1ldGUKICAgICBy
b290LT50cmF2ZXJzZSgmYXJnc1RyYXZlcnNlcik7CiAgICAgcmV0dXJuIGFyZ3NUcmF2ZXJzZXIu
bVZhbGlkOwogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTWF4UGFyYW1ldGVy
cy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFs
aWRhdGVNYXhQYXJhbWV0ZXJzLmgKaW5kZXggODc5MTZhZmVmOGZkMjhjYzU5MjQyMjM5OTAwYjdk
YjA5MzlkMDMzMi4uN2M3MzM5MGE2NDMxYmI1ZmU1YzEzOTc0NjkxMDM1N2JmNTY1ZDJkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmgKQEAgLTEwLDYgKzEw
LDkgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgogCitu
YW1lc3BhY2Ugc2gKK3sKKwogY2xhc3MgVmFsaWRhdGVNYXhQYXJhbWV0ZXJzIDogcHVibGljIFRJ
bnRlcm1UcmF2ZXJzZXIKIHsKICAgcHVibGljOgpAQCAtMTcsNyArMjAsNyBAQCBjbGFzcyBWYWxp
ZGF0ZU1heFBhcmFtZXRlcnMgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgIHN0YXRpYyBi
b29sIHZhbGlkYXRlKFRJbnRlcm1Ob2RlICpyb290LCB1bnNpZ25lZCBpbnQgbWF4UGFyYW1ldGVy
cyk7CiAKICAgcHJvdGVjdGVkOgotICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQs
IFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRGdW5jdGlv
bkRlZmluaXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUp
IG92ZXJyaWRlOwogCiAgIHByaXZhdGU6CiAgICAgVmFsaWRhdGVNYXhQYXJhbWV0ZXJzKHVuc2ln
bmVkIGludCBtYXhQYXJhbWV0ZXJzKTsKQEAgLTI2LDQgKzI5LDYgQEAgY2xhc3MgVmFsaWRhdGVN
YXhQYXJhbWV0ZXJzIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICBib29sIG1WYWxpZDsK
IH07CiAKK30gIC8vIG5hbWVzcGFjZSBzaAorCiAjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFU
T1JfVkFMSURBVEVNQVhQQVJBTUVURVJTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU11bHRpdmlld1dlYkdMLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlk
YXRlTXVsdGl2aWV3V2ViR0wuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE2OWEzMmU5MTYwMWQxZDgyMDcwOTQ3
MTRkZGI1MDEyNDA5ZmFiNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU11bHRpdmlld1dlYkdMLmNwcApA
QCAtMCwwICsxLDQxNCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDE2IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFZhbGlkYXRlTXVsdGl2aWV3
V2ViR0wuY3BwOgorLy8gICBWYWxpZGF0ZSB0aGUgQVNUIGFjY29yZGluZyB0byBydWxlcyBpbiB0
aGUgV0VCR0xfbXVsdGl2aWV3IGV4dGVuc2lvbiBzcGVjLiBPbmx5IGNvdmVycyB0aG9zZQorLy8g
ICBydWxlcyBub3QgYWxyZWFkeSBjb3ZlcmVkIGluIFBhcnNlQ29udGV4dC4KKy8vCisKKyNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTXVsdGl2aWV3V2ViR0wuaCIKKworI2lu
Y2x1ZGUgPGFycmF5PgorCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL0RpYWdub3N0aWNzLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9GaW5kU3ltYm9sTm9kZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJt
Tm9kZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFibGUuaCIKKwor
bmFtZXNwYWNlIHNoCit7CisKK25hbWVzcGFjZQoreworCitjbGFzcyBWYWxpZGF0ZU11bHRpdmll
d1RyYXZlcnNlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCit7CisgIHB1YmxpYzoKKyAgICAv
LyBDaGVjayBmb3IgZXJyb3JzIGFuZCB3cml0ZSBlcnJvciBtZXNzYWdlcyB0byBkaWFnbm9zdGlj
cy4gUmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSBubworICAgIC8vIGVycm9ycy4KKyAgICBzdGF0
aWMgYm9vbCB2YWxpZGF0ZShUSW50ZXJtQmxvY2sgKnJvb3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHNoYWRlclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
c2hhZGVyVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG11bHRpdmlldzIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgVERpYWdub3N0aWNzICpkaWFnbm9zdGljcyk7CisK
KyAgICBib29sIGlzVmFsaWQoKSB7IHJldHVybiBtVmFsaWQ7IH0KKworICBwcm90ZWN0ZWQ6Cisg
ICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKSBvdmVycmlkZTsKKyAgICBi
b29sIHZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2RlKSBvdmVycmlk
ZTsKKyAgICBib29sIHZpc2l0VW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1VbmFyeSAqbm9kZSkg
b3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdElmRWxzZShWaXNpdCB2aXNpdCwgVEludGVybUlmRWxz
ZSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwg
VEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICBWYWxp
ZGF0ZU11bHRpdmlld1RyYXZlcnNlcihHTGVudW0gc2hhZGVyVHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgbXVsdGl2aWV3MiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKTsKKworICAgIHN0YXRpYyBib29s
IElzR0xQb3NpdGlvbihUSW50ZXJtTm9kZSAqbm9kZSk7CisgICAgc3RhdGljIGJvb2wgSXNHTFZp
ZXdJRE9WUihUSW50ZXJtTm9kZSAqbm9kZSk7CisgICAgc3RhdGljIGJvb2wgSXNTaW1wbGVBc3Np
Z25tZW50VG9HTFBvc2l0aW9uWChUSW50ZXJtQmluYXJ5ICpub2RlKTsKKyAgICBzdGF0aWMgYm9v
bCBJc1NpbXBsZUFzc2lnbm1lbnRUb0dMUG9zaXRpb24oVEludGVybUJpbmFyeSAqbm9kZSk7CisK
KyAgICB2b2lkIHZhbGlkYXRlQW5kVHJhdmVyc2VWaWV3SURDb25kaXRpb25hbEJsb2NrKFRJbnRl
cm1CbG9jayAqYmxvY2ssIGNvbnN0IGNoYXIgKnRva2VuKTsKKworICAgIGJvb2wgbVZhbGlkOwor
ICAgIGJvb2wgbU11bHRpdmlldzI7CisgICAgR0xlbnVtIG1TaGFkZXJUeXBlOworICAgIGNvbnN0
IFRTeW1ib2xUYWJsZSAmbVN5bWJvbFRhYmxlOworICAgIGNvbnN0IGludCBtU2hhZGVyVmVyc2lv
bjsKKworICAgIGJvb2wgbUluc2lkZVZpZXdJRENvbmRpdGlvbmFsOyAgLy8gT25seSBzZXQgaWYg
bU11bHRpdmlldzIgaXMgZmFsc2UuCisgICAgYm9vbCBtSW5zaWRlUmVzdHJpY3RlZEFzc2lnbm1l
bnQ7CisgICAgYm9vbCBtR0xQb3NpdGlvbkFsbG93ZWQ7CisgICAgYm9vbCBtVmlld0lET1ZSQWxs
b3dlZDsKKworICAgIFREaWFnbm9zdGljcyAqbURpYWdub3N0aWNzOworfTsKKworYm9vbCBWYWxp
ZGF0ZU11bHRpdmlld1RyYXZlcnNlcjo6dmFsaWRhdGUoVEludGVybUJsb2NrICpyb290LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNoYWRlclR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9s
VGFibGUgJnN5bWJvbFRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IHNoYWRlclZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIG11bHRpdmlldzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKQoreworICAgIFZhbGlkYXRl
TXVsdGl2aWV3VHJhdmVyc2VyIHZhbGlkYXRlKHNoYWRlclR5cGUsIHN5bWJvbFRhYmxlLCBzaGFk
ZXJWZXJzaW9uLCBtdWx0aXZpZXcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpYWdub3N0aWNzKTsKKyAgICBBU1NFUlQocm9vdCk7CisgICAgcm9vdC0+dHJhdmVy
c2UoJnZhbGlkYXRlKTsKKyAgICByZXR1cm4gdmFsaWRhdGUuaXNWYWxpZCgpOworfQorCitWYWxp
ZGF0ZU11bHRpdmlld1RyYXZlcnNlcjo6VmFsaWRhdGVNdWx0aXZpZXdUcmF2ZXJzZXIoR0xlbnVt
IHNoYWRlclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVy
c2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIG11bHRpdmlldzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVERpYWdub3N0aWNzICpkaWFnbm9zdGljcykKKyAgICA6IFRJ
bnRlcm1UcmF2ZXJzZXIodHJ1ZSwgdHJ1ZSwgdHJ1ZSksCisgICAgICBtVmFsaWQodHJ1ZSksCisg
ICAgICBtTXVsdGl2aWV3MihtdWx0aXZpZXcyKSwKKyAgICAgIG1TaGFkZXJUeXBlKHNoYWRlclR5
cGUpLAorICAgICAgbVN5bWJvbFRhYmxlKHN5bWJvbFRhYmxlKSwKKyAgICAgIG1TaGFkZXJWZXJz
aW9uKHNoYWRlclZlcnNpb24pLAorICAgICAgbUluc2lkZVZpZXdJRENvbmRpdGlvbmFsKGZhbHNl
KSwKKyAgICAgIG1JbnNpZGVSZXN0cmljdGVkQXNzaWdubWVudChmYWxzZSksCisgICAgICBtR0xQ
b3NpdGlvbkFsbG93ZWQobXVsdGl2aWV3MiksCisgICAgICBtVmlld0lET1ZSQWxsb3dlZChtdWx0
aXZpZXcyKSwKKyAgICAgIG1EaWFnbm9zdGljcyhkaWFnbm9zdGljcykKK3sKK30KKworYm9vbCBW
YWxpZGF0ZU11bHRpdmlld1RyYXZlcnNlcjo6SXNHTFBvc2l0aW9uKFRJbnRlcm1Ob2RlICpub2Rl
KQoreworICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbE5vZGUgPSBub2RlLT5nZXRBc1N5bWJvbE5v
ZGUoKTsKKyAgICByZXR1cm4gKHN5bWJvbE5vZGUgJiYgc3ltYm9sTm9kZS0+Z2V0TmFtZSgpLmdl
dFN0cmluZygpID09ICJnbF9Qb3NpdGlvbiIpOworfQorCitib29sIFZhbGlkYXRlTXVsdGl2aWV3
VHJhdmVyc2VyOjpJc0dMVmlld0lET1ZSKFRJbnRlcm1Ob2RlICpub2RlKQoreworICAgIFRJbnRl
cm1TeW1ib2wgKnN5bWJvbE5vZGUgPSBub2RlLT5nZXRBc1N5bWJvbE5vZGUoKTsKKyAgICByZXR1
cm4gKHN5bWJvbE5vZGUgJiYgc3ltYm9sTm9kZS0+Z2V0TmFtZSgpLmdldFN0cmluZygpID09ICJn
bF9WaWV3SURfT1ZSIik7Cit9CisKK2Jvb2wgVmFsaWRhdGVNdWx0aXZpZXdUcmF2ZXJzZXI6Oklz
U2ltcGxlQXNzaWdubWVudFRvR0xQb3NpdGlvblgoVEludGVybUJpbmFyeSAqbm9kZSkKK3sKKyAg
ICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BBc3NpZ24pCisgICAgeworICAgICAgICBUSW50ZXJt
U3dpenpsZSAqbGVmdEFzU3dpenpsZSA9IG5vZGUtPmdldExlZnQoKS0+Z2V0QXNTd2l6emxlTm9k
ZSgpOworICAgICAgICBpZiAobGVmdEFzU3dpenpsZSAmJiBJc0dMUG9zaXRpb24obGVmdEFzU3dp
enpsZS0+Z2V0T3BlcmFuZCgpKSAmJgorICAgICAgICAgICAgbGVmdEFzU3dpenpsZS0+b2Zmc2V0
c01hdGNoKDApKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgICAgICBUSW50ZXJtQmluYXJ5ICpsZWZ0QXNCaW5hcnkgPSBub2RlLT5nZXRMZWZ0KCkt
PmdldEFzQmluYXJ5Tm9kZSgpOworICAgICAgICBpZiAobGVmdEFzQmluYXJ5ICYmIGxlZnRBc0Jp
bmFyeS0+Z2V0T3AoKSA9PSBFT3BJbmRleERpcmVjdCAmJgorICAgICAgICAgICAgSXNHTFBvc2l0
aW9uKGxlZnRBc0JpbmFyeS0+Z2V0TGVmdCgpKSAmJgorICAgICAgICAgICAgbGVmdEFzQmluYXJ5
LT5nZXRSaWdodCgpLT5nZXRBc0NvbnN0YW50VW5pb24oKS0+Z2V0SUNvbnN0KDApID09IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBWYWxpZGF0ZU11bHRpdmlld1RyYXZlcnNlcjo6SXNT
aW1wbGVBc3NpZ25tZW50VG9HTFBvc2l0aW9uKFRJbnRlcm1CaW5hcnkgKm5vZGUpCit7CisgICAg
aWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wQXNzaWduKQorICAgIHsKKyAgICAgICAgaWYgKElzR0xQ
b3NpdGlvbihub2RlLT5nZXRMZWZ0KCkpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBUSW50ZXJtU3dpenpsZSAqbGVmdEFzU3dpenpsZSA9
IG5vZGUtPmdldExlZnQoKS0+Z2V0QXNTd2l6emxlTm9kZSgpOworICAgICAgICBpZiAobGVmdEFz
U3dpenpsZSAmJiBJc0dMUG9zaXRpb24obGVmdEFzU3dpenpsZS0+Z2V0T3BlcmFuZCgpKSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgVElu
dGVybUJpbmFyeSAqbGVmdEFzQmluYXJ5ID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRBc0JpbmFyeU5v
ZGUoKTsKKyAgICAgICAgaWYgKGxlZnRBc0JpbmFyeSAmJiBsZWZ0QXNCaW5hcnktPmdldE9wKCkg
PT0gRU9wSW5kZXhEaXJlY3QgJiYKKyAgICAgICAgICAgIElzR0xQb3NpdGlvbihsZWZ0QXNCaW5h
cnktPmdldExlZnQoKSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBWYWxpZGF0ZU11bHRp
dmlld1RyYXZlcnNlcjo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkKK3sKKyAgICBp
ZiAoSXNHTFBvc2l0aW9uKG5vZGUpICYmICFtR0xQb3NpdGlvbkFsbG93ZWQpCisgICAgeworICAg
ICAgICBBU1NFUlQoIW1NdWx0aXZpZXcyKTsKKyAgICAgICAgbURpYWdub3N0aWNzLT5lcnJvcihu
b2RlLT5nZXRMaW5lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpc2FsbG93ZWQg
dXNlIG9mIGdsX1Bvc2l0aW9uIHdoZW4gdXNpbmcgT1ZSX211bHRpdmlldyIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImdsX1Bvc2l0aW9uIik7CisgICAgICAgIG1WYWxpZCA9IGZhbHNl
OworICAgIH0KKyAgICBlbHNlIGlmIChJc0dMVmlld0lET1ZSKG5vZGUpICYmICFtVmlld0lET1ZS
QWxsb3dlZCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbU11bHRpdmlldzIpOworICAgICAgICBt
RGlhZ25vc3RpY3MtPmVycm9yKG5vZGUtPmdldExpbmUoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiRGlzYWxsb3dlZCB1c2Ugb2YgZ2xfVmlld0lEX09WUiB3aGVuIHVzaW5nIE9WUl9t
dWx0aXZpZXciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnbF9WaWV3SURfT1ZSIik7
CisgICAgICAgIG1WYWxpZCA9IGZhbHNlOworICAgIH0KKyAgICBlbHNlIGlmICghbU11bHRpdmll
dzIgJiYgbVNoYWRlclR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSKQorICAgIHsKKyAgICAgICAg
c3RkOjphcnJheTxjb25zdCBjaGFyICosIDM+IGRpc2FsbG93ZWRGcmFnbWVudFNoYWRlclN5bWJv
bHN7CisgICAgICAgICAgICB7ImdsX0ZyYWdDb29yZCIsICJnbF9Qb2ludENvb3JkIiwgImdsX0Zy
b250RmFjaW5nIn19OworICAgICAgICBmb3IgKGF1dG8gZGlzYWxsb3dlZFN5bWJvbCA6IGRpc2Fs
bG93ZWRGcmFnbWVudFNoYWRlclN5bWJvbHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChu
b2RlLT5nZXRTeW1ib2woKSA9PSBkaXNhbGxvd2VkU3ltYm9sKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+ZXJyb3IoCisgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPmdldExpbmUoKSwKKyAgICAgICAgICAgICAgICAgICAgIkRpc2FsbG93ZWQgdXNlIG9mIGEg
YnVpbHQtaW4gdmFyaWFibGUgd2hlbiB1c2luZyBPVlJfbXVsdGl2aWV3IiwKKyAgICAgICAgICAg
ICAgICAgICAgZGlzYWxsb3dlZFN5bWJvbCk7CisgICAgICAgICAgICAgICAgbVZhbGlkID0gZmFs
c2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgVmFsaWRhdGVN
dWx0aXZpZXdUcmF2ZXJzZXI6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5
ICpub2RlKQoreworICAgIGlmICghbU11bHRpdmlldzIgJiYgbVNoYWRlclR5cGUgPT0gR0xfVkVS
VEVYX1NIQURFUikKKyAgICB7CisgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKKyAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKCFtSW5zaWRlVmlld0lEQ29uZGl0aW9uYWwgfHwgbUlu
c2lkZVJlc3RyaWN0ZWRBc3NpZ25tZW50KTsKKyAgICAgICAgICAgIGlmIChub2RlLT5pc0Fzc2ln
bm1lbnQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAobUluc2lkZVJlc3Ry
aWN0ZWRBc3NpZ25tZW50KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
bURpYWdub3N0aWNzLT5lcnJvcihub2RlLT5nZXRMaW5lKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkRpc2FsbG93ZWQgYXNzaWdubWVudCBpbnNpZGUgYXNzaWdu
bWVudCB0byBnbF9Qb3NpdGlvbi54ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAid2hlbiB1c2luZyBPVlJfbXVsdGl2aWV3IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHZXRPcGVyYXRvclN0cmluZyhub2RlLT5nZXRPcCgpKSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1WYWxpZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBlbHNlIGlmIChJc1NpbXBsZUFzc2lnbm1lbnRUb0dMUG9zaXRpb25YKG5v
ZGUpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgRmluZFN5bWJvbE5vZGUobm9kZS0+Z2V0
UmlnaHQoKSwgImdsX1ZpZXdJRF9PVlIiLCBFYnRVSW50KSkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghZ2V0UGFyZW50Tm9kZSgpLT5nZXRBc0Jsb2NrKCkpCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1EaWFnbm9zdGlj
cy0+ZXJyb3Iobm9kZS0+Z2V0TGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRGlzYWxsb3dlZCB1c2Ugb2YgYXNzaWdubWVudCB0byBnbF9Qb3NpdGlv
bi54ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndoZW4g
dXNpbmcgT1ZSX211bHRpdmlldyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICI9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBtVmFsaWQgPSBmYWxzZTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtSW5zaWRlUmVzdHJp
Y3RlZEFzc2lnbm1lbnQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtVmlld0lET1ZSQWxs
b3dlZCAgICAgICAgICAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBub2RlLT5nZXRSaWdo
dCgpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgbUluc2lkZVJlc3RyaWN0
ZWRBc3NpZ25tZW50ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIG1WaWV3SURPVlJBbGxv
d2VkICAgICAgICAgICA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKElzU2ltcGxlQXNz
aWdubWVudFRvR0xQb3NpdGlvbihub2RlKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPmdldFJpZ2h0KCktPnRyYXZlcnNlKHRoaXMpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlTXVs
dGl2aWV3VHJhdmVyc2VyOjp2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVW5hcnkgKm5v
ZGUpCit7CisgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0ICYmICFtTXVsdGl2aWV3MiAmJiBtSW5z
aWRlUmVzdHJpY3RlZEFzc2lnbm1lbnQpCisgICAgeworICAgICAgICBpZiAobm9kZS0+aXNBc3Np
Z25tZW50KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+ZXJyb3Iobm9k
ZS0+Z2V0TGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGlzYWxsb3dl
ZCB1bmFyeSBvcGVyYXRvciBpbnNpZGUgYXNzaWdubWVudCB0byBnbF9Qb3NpdGlvbi54IHdoZW4g
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNpbmcgT1ZSX211bHRpdmlldyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldE9wZXJhdG9yU3RyaW5nKG5vZGUt
PmdldE9wKCkpKTsKKyAgICAgICAgICAgIG1WYWxpZCA9IGZhbHNlOworICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFZhbGlkYXRlTXVsdGl2aWV3VHJhdmVyc2Vy
Ojp2YWxpZGF0ZUFuZFRyYXZlcnNlVmlld0lEQ29uZGl0aW9uYWxCbG9jayhUSW50ZXJtQmxvY2sg
KmJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9rZW4pCit7CisgICAgaWYg
KGJsb2NrLT5nZXRTZXF1ZW5jZSgpLT5zaXplKCkgPiAxKQorICAgIHsKKyAgICAgICAgbURpYWdu
b3N0aWNzLT5lcnJvcihibG9jay0+Z2V0TGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJPbmx5IG9uZSBhc3NpZ25tZW50IHRvIGdsX1Bvc2l0aW9uIGFsbG93ZWQgaW5zaWRlIGlm
IGJsb2NrIGRlcGVuZGVudCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9uIGdsX1Zp
ZXdJRF9PVlIgd2hlbiB1c2luZyBPVlJfbXVsdGl2aWV3IiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0b2tlbik7CisgICAgICAgIG1WYWxpZCA9IGZhbHNlOworICAgIH0KKyAgICBlbHNl
IGlmIChibG9jay0+Z2V0U2VxdWVuY2UoKS0+c2l6ZSgpID09IDEpCisgICAgeworICAgICAgICBU
SW50ZXJtQmluYXJ5ICphc3NpZ25tZW50ID0gYmxvY2stPmdldFNlcXVlbmNlKCktPmF0KDApLT5n
ZXRBc0JpbmFyeU5vZGUoKTsKKyAgICAgICAgaWYgKGFzc2lnbm1lbnQgJiYgSXNTaW1wbGVBc3Np
Z25tZW50VG9HTFBvc2l0aW9uWChhc3NpZ25tZW50KSkKKyAgICAgICAgeworICAgICAgICAgICAg
bUluc2lkZVJlc3RyaWN0ZWRBc3NpZ25tZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIGFzc2lnbm1l
bnQtPmdldFJpZ2h0KCktPnRyYXZlcnNlKHRoaXMpOworICAgICAgICAgICAgbUluc2lkZVJlc3Ry
aWN0ZWRBc3NpZ25tZW50ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICB7CisgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPmVycm9yKGJsb2NrLT5nZXRMaW5lKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPbmx5IG9uZSBhc3NpZ25tZW50IHRvIGds
X1Bvc2l0aW9uLnggYWxsb3dlZCBpbnNpZGUgaWYgYmxvY2sgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZGVwZW5kZW50IG9uIGdsX1ZpZXdJRF9PVlIgd2hlbiB1c2luZyBPVlJf
bXVsdGl2aWV3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4pOworICAg
ICAgICAgICAgbVZhbGlkID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgVmFs
aWRhdGVNdWx0aXZpZXdUcmF2ZXJzZXI6OnZpc2l0SWZFbHNlKFZpc2l0IHZpc2l0LCBUSW50ZXJt
SWZFbHNlICpub2RlKQoreworICAgIGlmICghbU11bHRpdmlldzIgJiYgbVNoYWRlclR5cGUgPT0g
R0xfVkVSVEVYX1NIQURFUikKKyAgICB7CisgICAgICAgIEFTU0VSVCh2aXNpdCA9PSBQcmVWaXNp
dCk7CisKKyAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGlmIHN0YXRlbWVudCByZWZlcnMgdG8gZ2xf
Vmlld0lEX09WUiBhbmQgaWYgaXQgZG9lcyBzbyBjb3JyZWN0bHkKKyAgICAgICAgVEludGVybUJp
bmFyeSAqYmluYXJ5Q29uZGl0aW9uICAgICAgICAgICAgICA9IG5vZGUtPmdldENvbmRpdGlvbigp
LT5nZXRBc0JpbmFyeU5vZGUoKTsKKyAgICAgICAgYm9vbCBjb25kaXRpb25Jc0FsbG93ZWRDb21w
YXJpc29uV2l0aFZpZXdJRCA9IGZhbHNlOworICAgICAgICBpZiAoYmluYXJ5Q29uZGl0aW9uICYm
IGJpbmFyeUNvbmRpdGlvbi0+Z2V0T3AoKSA9PSBFT3BFcXVhbCkKKyAgICAgICAgeworICAgICAg
ICAgICAgY29uZGl0aW9uSXNBbGxvd2VkQ29tcGFyaXNvbldpdGhWaWV3SUQgPQorICAgICAgICAg
ICAgICAgIElzR0xWaWV3SURPVlIoYmluYXJ5Q29uZGl0aW9uLT5nZXRMZWZ0KCkpICYmCisgICAg
ICAgICAgICAgICAgYmluYXJ5Q29uZGl0aW9uLT5nZXRSaWdodCgpLT5nZXRBc0NvbnN0YW50VW5p
b24oKSAmJgorICAgICAgICAgICAgICAgIGJpbmFyeUNvbmRpdGlvbi0+Z2V0UmlnaHQoKS0+Z2V0
UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3Q7CisgICAgICAgICAgICBpZiAoIWNvbmRpdGlvbklzQWxs
b3dlZENvbXBhcmlzb25XaXRoVmlld0lEKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGNvbmRpdGlvbklzQWxsb3dlZENvbXBhcmlzb25XaXRoVmlld0lEID0KKyAgICAgICAgICAgICAg
ICAgICAgSXNHTFZpZXdJRE9WUihiaW5hcnlDb25kaXRpb24tPmdldFJpZ2h0KCkpICYmCisgICAg
ICAgICAgICAgICAgICAgIGJpbmFyeUNvbmRpdGlvbi0+Z2V0TGVmdCgpLT5nZXRBc0NvbnN0YW50
VW5pb24oKSAmJgorICAgICAgICAgICAgICAgICAgICBiaW5hcnlDb25kaXRpb24tPmdldExlZnQo
KS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3Q7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGNvbmRpdGlvbklzQWxsb3dlZENvbXBhcmlzb25XaXRoVmlld0lEKQorICAg
ICAgICB7CisgICAgICAgICAgICBtSW5zaWRlVmlld0lEQ29uZGl0aW9uYWwgPSB0cnVlOworICAg
ICAgICAgICAgaWYgKG5vZGUtPmdldFRydWVCbG9jaygpKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHZhbGlkYXRlQW5kVHJhdmVyc2VWaWV3SURDb25kaXRpb25hbEJsb2NrKG5vZGUt
PmdldFRydWVCbG9jaygpLCAiaWYiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPmVycm9yKG5vZGUt
PmdldExpbmUoKSwgIkV4cGVjdGVkIGFzc2lnbm1lbnQgdG8gZ2xfUG9zaXRpb24ueCIsICJpZiIp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGUtPmdldEZhbHNlQmxvY2soKSkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZUFuZFRyYXZlcnNlVmlld0lE
Q29uZGl0aW9uYWxCbG9jayhub2RlLT5nZXRGYWxzZUJsb2NrKCksICJlbHNlIik7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBtSW5zaWRlVmlld0lEQ29uZGl0aW9uYWwgPSBmYWxzZTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG5vZGUtPmdldENv
bmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAgICAgIGlmIChub2RlLT5nZXRUcnVl
QmxvY2soKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBub2RlLT5nZXRUcnVlQmxv
Y2soKS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobm9k
ZS0+Z2V0RmFsc2VCbG9jaygpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG5vZGUt
PmdldEZhbHNlQmxvY2soKS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
Ym9vbCBWYWxpZGF0ZU11bHRpdmlld1RyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlz
aXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCit7CisgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0
ICYmICFtTXVsdGl2aWV3MiAmJiBtSW5zaWRlUmVzdHJpY3RlZEFzc2lnbm1lbnQpCisgICAgewor
ICAgICAgICAvLyBDaGVjayBpZiB0aGUgbm9kZSBpcyBhbiB1c2VyLWRlZmluZWQgZnVuY3Rpb24g
Y2FsbCBvciBpZiBhbiBsLXZhbHVlIGlzIHJlcXVpcmVkLCBvciBpZgorICAgICAgICAvLyB0aGVy
ZSBhcmUgcG9zc2libGUgdmlzaWJsZSBzaWRlIGVmZmVjdHMsIHN1Y2ggYXMgaW1hZ2Ugd3JpdGVz
LgorICAgICAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BDYWxsRnVuY3Rpb25JbkFTVCkKKyAg
ICAgICAgeworICAgICAgICAgICAgbURpYWdub3N0aWNzLT5lcnJvcihub2RlLT5nZXRMaW5lKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEaXNhbGxvd2VkIHVzZXIgZGVmaW5l
ZCBmdW5jdGlvbiBjYWxsIGluc2lkZSBhc3NpZ25tZW50IHRvICIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImdsX1Bvc2l0aW9uLnggd2hlbiB1c2luZyBPVlJfbXVsdGl2aWV3IiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0T3BlcmF0b3JTdHJpbmcobm9kZS0+
Z2V0T3AoKSkpOworICAgICAgICAgICAgbVZhbGlkID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZSBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BDYWxsQnVpbHRJbkZ1bmN0aW9uICYmCisg
ICAgICAgICAgICAgICAgIG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lKCkg
PT0gImltYWdlU3RvcmUiKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUT0RPKG9ldHVhaG9A
bnZpZGlhLmNvbSk6IFJlY29yZCB3aGljaCBidWlsdC1pbiBmdW5jdGlvbnMgaGF2ZSBzaWRlIGVm
ZmVjdHMgaW4KKyAgICAgICAgICAgIC8vIHRoZSBzeW1ib2wgaW5mbyBpbnN0ZWFkLgorICAgICAg
ICAgICAgbURpYWdub3N0aWNzLT5lcnJvcihub2RlLT5nZXRMaW5lKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJEaXNhbGxvd2VkIGZ1bmN0aW9uIGNhbGwgd2l0aCBzaWRlIGVm
ZmVjdHMgaW5zaWRlIGFzc2lnbm1lbnQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAidG8gZ2xfUG9zaXRpb24ueCB3aGVuIHVzaW5nIE9WUl9tdWx0aXZpZXciLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHZXRPcGVyYXRvclN0cmluZyhub2RlLT5nZXRPcCgpKSk7
CisgICAgICAgICAgICBtVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlm
ICghbm9kZS0+aXNDb25zdHJ1Y3RvcigpKQorICAgICAgICB7CisgICAgICAgICAgICBURnVuY3Rp
b24gKmJ1aWx0SW5GdW5jID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uICo+KAorICAgICAgICAgICAg
ICAgIG1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihub2RlLT5nZXRTeW1ib2xUYWJsZU1hbmdsZWRO
YW1lKCksIG1TaGFkZXJWZXJzaW9uKSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBwYXJhbUlu
ZGV4ID0gMHU7IHBhcmFtSW5kZXggPCBidWlsdEluRnVuYy0+Z2V0UGFyYW1Db3VudCgpOyArK3Bh
cmFtSW5kZXgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgVFF1YWxpZmllciBxdWFs
aWZpZXIgPSBidWlsdEluRnVuYy0+Z2V0UGFyYW0ocGFyYW1JbmRleCkudHlwZS0+Z2V0UXVhbGlm
aWVyKCk7CisgICAgICAgICAgICAgICAgaWYgKHF1YWxpZmllciA9PSBFdnFPdXQgfHwgcXVhbGlm
aWVyID09IEV2cUluT3V0KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
bURpYWdub3N0aWNzLT5lcnJvcihub2RlLT5nZXRMaW5lKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkRpc2FsbG93ZWQgdXNlIG9mIGEgZnVuY3Rpb24gd2l0aCBh
biBvdXQgcGFyYW1ldGVyIGluc2lkZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImFzc2lnbm1lbnQgdG8gZ2xfUG9zaXRpb24ueCB3aGVuIHVzaW5nIE9WUl9tdWx0
aXZpZXciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldE9wZXJh
dG9yU3RyaW5nKG5vZGUtPmdldE9wKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgbVZhbGlkID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK2Jv
b2wgVmFsaWRhdGVNdWx0aXZpZXdXZWJHTChUSW50ZXJtQmxvY2sgKnJvb3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHNoYWRlclR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIG11bHRpdmlldzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVERpYWdu
b3N0aWNzICpkaWFnbm9zdGljcykKK3sKKyAgICBpZiAoc2hhZGVyVHlwZSA9PSBHTF9WRVJURVhf
U0hBREVSICYmICFGaW5kU3ltYm9sTm9kZShyb290LCAiZ2xfVmlld0lEX09WUiIsIEVidFVJbnQp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBWYWxpZGF0
ZU11bHRpdmlld1RyYXZlcnNlcjo6dmFsaWRhdGUocm9vdCwgc2hhZGVyVHlwZSwgc3ltYm9sVGFi
bGUsIHNoYWRlclZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtdWx0aXZpZXcyLCBkaWFnbm9zdGljcyk7Cit9CisKK30gIC8vIG5hbWVzcGFj
ZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVmFsaWRhdGVNdWx0aXZpZXdXZWJHTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVNdWx0aXZpZXdXZWJHTC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM3MWEwM2QxNzA3ZDE5ZTM0YTFhYjJkYzEyOWY0OTQyMjA2OWIxNWIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9WYWxpZGF0ZU11bHRpdmlld1dlYkdMLmgKQEAgLTAsMCArMSwzMyBAQAorLy8KKy8vIENvcHly
aWdodCAoYykgMjAwMi0yMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKy8vIFZhbGlkYXRlTXVsdGl2aWV3V2ViR0wuaDoKKy8vICAgVmFsaWRhdGUgdGhlIEFT
VCBhY2NvcmRpbmcgdG8gcnVsZXMgaW4gdGhlIFdFQkdMX211bHRpdmlldyBleHRlbnNpb24gc3Bl
Yy4gT25seSBjb3ZlcnMgdGhvc2UKKy8vICAgcnVsZXMgbm90IGFscmVhZHkgY292ZXJlZCBpbiBQ
YXJzZUNvbnRleHQuCisvLworCisjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfVkFMSURBVEVN
VUxUSVZJRVdXRUJHTF9IXworI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX1ZBTElEQVRFTVVM
VElWSUVXV0VCR0xfSF8KKworI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyVmFycy5oIgorCituYW1l
c3BhY2Ugc2gKK3sKK2NsYXNzIFREaWFnbm9zdGljczsKK2NsYXNzIFRJbnRlcm1CbG9jazsKK2Ns
YXNzIFRTeW1ib2xUYWJsZTsKKworLy8gQ2hlY2sgZm9yIGVycm9ycyBhbmQgb3V0cHV0IGVycm9y
IG1lc3NhZ2VzIHdpdGggZGlhZ25vc3RpY3MuCisvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJl
IG5vIGVycm9ycy4KK2Jvb2wgVmFsaWRhdGVNdWx0aXZpZXdXZWJHTChUSW50ZXJtQmxvY2sgKnJv
b3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkdMZW51bSBzaGFkZXJUeXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFi
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtdWx0aXZpZXcyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpOworCit9ICAvLyBuYW1lc3Bh
Y2Ugc2gKKworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1ZBTElEQVRFTVVMVElWSUVX
V0VCR0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1ZhbGlkYXRlT3V0cHV0cy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU91dHB1dHMuY3BwCmluZGV4IDlmNWY4
ZjU3N2QyMDZiMTIzNzEwNzU3ODhmNTE4ZWRhNzhlODcwYWEuLjI3YWI4MTQ2OWJlMTRkNmRjYmQ5
N2E1YzlkNzU1NTE3ZTc3MDQ5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlT3V0cHV0cy5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVPdXRwdXRz
LmNwcApAQCAtNiwxNyArNiwxNiBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9W
YWxpZGF0ZU91dHB1dHMuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5r
LmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplUGFyc2VDb250ZXh0
LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQuaCIKIAorbmFt
ZXNwYWNlIHNoCit7CisKIG5hbWVzcGFjZQogewotdm9pZCBlcnJvcihpbnQgKmVycm9yQ291bnQs
IFRJbmZvU2lua0Jhc2UgJnNpbmssIGNvbnN0IFRJbnRlcm1TeW1ib2wgJnN5bWJvbCwgY29uc3Qg
Y2hhciAqcmVhc29uKQordm9pZCBlcnJvcihjb25zdCBUSW50ZXJtU3ltYm9sICZzeW1ib2wsIGNv
bnN0IGNoYXIgKnJlYXNvbiwgVERpYWdub3N0aWNzICpkaWFnbm9zdGljcykKIHsKLSAgICBzaW5r
LnByZWZpeChFUHJlZml4RXJyb3IpOwotICAgIHNpbmsubG9jYXRpb24oc3ltYm9sLmdldExpbmUo
KSk7Ci0gICAgc2luayA8PCAiJyIgPDwgc3ltYm9sLmdldFN5bWJvbCgpIDw8ICInIDogIiA8PCBy
ZWFzb24gPDwgIlxuIjsKLSAgICAoKmVycm9yQ291bnQpKys7CisgICAgZGlhZ25vc3RpY3MtPmVy
cm9yKHN5bWJvbC5nZXRMaW5lKCksIHJlYXNvbiwgc3ltYm9sLmdldFN5bWJvbCgpLmNfc3RyKCkp
OwogfQogCiB9ICAvLyBuYW1lc3BhY2UKQEAgLTI1LDEzICsyNCwxNCBAQCBWYWxpZGF0ZU91dHB1
dHM6OlZhbGlkYXRlT3V0cHV0cyhjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3IgJmV4dEJlaGF2aW9y
LCBpbnQgbWF4RAogICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLAog
ICAgICAgbU1heERyYXdCdWZmZXJzKG1heERyYXdCdWZmZXJzKSwKICAgICAgIG1BbGxvd1Vuc3Bl
Y2lmaWVkT3V0cHV0TG9jYXRpb25SZXNvbHV0aW9uKAotICAgICAgICAgIElzRXh0ZW5zaW9uRW5h
YmxlZChleHRCZWhhdmlvciwgIkdMX0VYVF9ibGVuZF9mdW5jX2V4dGVuZGVkIikpCisgICAgICAg
ICAgSXNFeHRlbnNpb25FbmFibGVkKGV4dEJlaGF2aW9yLCAiR0xfRVhUX2JsZW5kX2Z1bmNfZXh0
ZW5kZWQiKSksCisgICAgICBtVXNlc0ZyYWdEZXB0aChmYWxzZSkKIHsKIH0KIAogdm9pZCBWYWxp
ZGF0ZU91dHB1dHM6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKnN5bWJvbCkKIHsKLSAgICBU
U3RyaW5nIG5hbWUgPSBzeW1ib2wtPmdldFN5bWJvbCgpOworICAgIFRTdHJpbmcgbmFtZSAgICAg
ICAgID0gc3ltYm9sLT5nZXRTeW1ib2woKTsKICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9IHN5
bWJvbC0+Z2V0UXVhbGlmaWVyKCk7CiAKICAgICBpZiAobVZpc2l0ZWRTeW1ib2xzLmNvdW50KG5h
bWUuY19zdHIoKSkgPT0gMSkKQEAgLTQxLDIxICs0MSwyOSBAQCB2b2lkIFZhbGlkYXRlT3V0cHV0
czo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqc3ltYm9sKQogCiAgICAgaWYgKHF1YWxpZmll
ciA9PSBFdnFGcmFnbWVudE91dCkKICAgICB7Ci0gICAgICAgIGlmIChzeW1ib2wtPmdldFR5cGUo
KS5nZXRMYXlvdXRRdWFsaWZpZXIoKS5sb2NhdGlvbiA9PSAtMSkKKyAgICAgICAgaWYgKHN5bWJv
bC0+Z2V0VHlwZSgpLmdldExheW91dFF1YWxpZmllcigpLmxvY2F0aW9uICE9IC0xKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBtVW5zcGVjaWZpZWRMb2NhdGlvbk91dHB1dHMucHVzaF9iYWNrKHN5
bWJvbCk7CisgICAgICAgICAgICBtT3V0cHV0cy5wdXNoX2JhY2soc3ltYm9sKTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlIGlmIChzeW1ib2wtPmdldFR5cGUoKS5nZXRMYXlvdXRRdWFsaWZpZXIo
KS55dXYgPT0gdHJ1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgbVl1dk91dHB1dHMucHVzaF9i
YWNrKHN5bWJvbCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAg
ICAgICBtT3V0cHV0cy5wdXNoX2JhY2soc3ltYm9sKTsKKyAgICAgICAgICAgIG1VbnNwZWNpZmll
ZExvY2F0aW9uT3V0cHV0cy5wdXNoX2JhY2soc3ltYm9sKTsKICAgICAgICAgfQogICAgIH0KKyAg
ICBlbHNlIGlmIChxdWFsaWZpZXIgPT0gRXZxRnJhZ0RlcHRoIHx8IHF1YWxpZmllciA9PSBFdnFG
cmFnRGVwdGhFWFQpCisgICAgeworICAgICAgICBtVXNlc0ZyYWdEZXB0aCA9IHRydWU7CisgICAg
fQogfQogCi1pbnQgVmFsaWRhdGVPdXRwdXRzOjp2YWxpZGF0ZUFuZENvdW50RXJyb3JzKFRJbmZv
U2lua0Jhc2UgJnNpbmspIGNvbnN0Cit2b2lkIFZhbGlkYXRlT3V0cHV0czo6dmFsaWRhdGUoVERp
YWdub3N0aWNzICpkaWFnbm9zdGljcykgY29uc3QKIHsKKyAgICBBU1NFUlQoZGlhZ25vc3RpY3Mp
OwogICAgIE91dHB1dFZlY3RvciB2YWxpZE91dHB1dHMobU1heERyYXdCdWZmZXJzKTsKLSAgICBp
bnQgZXJyb3JDb3VudCA9IDA7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8gJnN5bWJvbCA6IG1PdXRw
dXRzKQogICAgIHsKQEAgLTc1LDcgKzgzLDcgQEAgaW50IFZhbGlkYXRlT3V0cHV0czo6dmFsaWRh
dGVBbmRDb3VudEVycm9ycyhUSW5mb1NpbmtCYXNlICZzaW5rKSBjb25zdAogICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJzdHI7CiAgICAgICAgICAgICAgICAgICAgIHN0
cnN0ciA8PCAiY29uZmxpY3Rpbmcgb3V0cHV0IGxvY2F0aW9ucyB3aXRoIHByZXZpb3VzbHkgZGVm
aW5lZCBvdXRwdXQgJyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHZhbGlkT3V0cHV0
c1tvZmZzZXRMb2NhdGlvbl0tPmdldFN5bWJvbCgpIDw8ICInIjsKLSAgICAgICAgICAgICAgICAg
ICAgZXJyb3IoJmVycm9yQ291bnQsIHNpbmssICpzeW1ib2wsIHN0cnN0ci5zdHIoKS5jX3N0cigp
KTsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IoKnN5bWJvbCwgc3Ryc3RyLnN0cigpLmNfc3Ry
KCksIGRpYWdub3N0aWNzKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIHsKQEAgLTg3LDkgKzk1LDEwIEBAIGludCBWYWxpZGF0ZU91dHB1
dHM6OnZhbGlkYXRlQW5kQ291bnRFcnJvcnMoVEluZm9TaW5rQmFzZSAmc2luaykgY29uc3QKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKGVsZW1lbnRDb3VudCA+IDApCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgZXJyb3IoJmVycm9yQ291bnQsIHNpbmssICpzeW1ib2wsCisgICAg
ICAgICAgICAgICAgZXJyb3IoKnN5bWJvbCwKICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50
Q291bnQgPiAxID8gIm91dHB1dCBhcnJheSBsb2NhdGlvbnMgd291bGQgZXhjZWVkIE1BWF9EUkFX
X0JVRkZFUlMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJvdXRw
dXQgbG9jYXRpb24gbXVzdCBiZSA8IE1BWF9EUkFXX0JVRkZFUlMiKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogIm91dHB1dCBsb2NhdGlvbiBtdXN0IGJlIDwgTUFY
X0RSQVdfQlVGRkVSUyIsCisgICAgICAgICAgICAgICAgICAgICAgZGlhZ25vc3RpY3MpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMTAwLDkgKzEwOSwyMyBAQCBpbnQgVmFs
aWRhdGVPdXRwdXRzOjp2YWxpZGF0ZUFuZENvdW50RXJyb3JzKFRJbmZvU2lua0Jhc2UgJnNpbmsp
IGNvbnN0CiAgICAgewogICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJnN5bWJvbCA6IG1VbnNwZWNp
ZmllZExvY2F0aW9uT3V0cHV0cykKICAgICAgICAgewotICAgICAgICAgICAgZXJyb3IoJmVycm9y
Q291bnQsIHNpbmssICpzeW1ib2wsCi0gICAgICAgICAgICAgICAgICAibXVzdCBleHBsaWNpdGx5
IHNwZWNpZnkgYWxsIGxvY2F0aW9ucyB3aGVuIHVzaW5nIG11bHRpcGxlIGZyYWdtZW50IG91dHB1
dHMiKTsKKyAgICAgICAgICAgIGVycm9yKCpzeW1ib2wsCisgICAgICAgICAgICAgICAgICAibXVz
dCBleHBsaWNpdGx5IHNwZWNpZnkgYWxsIGxvY2F0aW9ucyB3aGVuIHVzaW5nIG11bHRpcGxlIGZy
YWdtZW50IG91dHB1dHMiLAorICAgICAgICAgICAgICAgICAgZGlhZ25vc3RpY3MpOworICAgICAg
ICB9CisgICAgfQorCisgICAgaWYgKCFtWXV2T3V0cHV0cy5lbXB0eSgpICYmIChtWXV2T3V0cHV0
cy5zaXplKCkgPiAxIHx8IG1Vc2VzRnJhZ0RlcHRoIHx8ICFtT3V0cHV0cy5lbXB0eSgpIHx8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbVVuc3BlY2lmaWVkTG9jYXRpb25PdXRw
dXRzLmVtcHR5KCkpKQorICAgIHsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvICZzeW1ib2wgOiBt
WXV2T3V0cHV0cykKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3IoKnN5bWJvbCwKKyAgICAg
ICAgICAgICAgICAgICJub3QgYWxsb3dlZCB0byBzcGVjaWZ5IHl1diBxdWFsaWZpZXIgd2hlbiB1
c2luZyBkZXB0aCBvciBtdWx0aXBsZSBjb2xvciAiCisgICAgICAgICAgICAgICAgICAiZnJhZ21l
bnQgb3V0cHV0cyIsCisgICAgICAgICAgICAgICAgICBkaWFnbm9zdGljcyk7CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgcmV0dXJuIGVycm9yQ291bnQ7CiB9CisKK30gIC8vIG5hbWVzcGFjZSBzaApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvVmFsaWRhdGVPdXRwdXRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU91dHB1dHMuaAppbmRleCAwMTIyY2EyNWZlMzliMGRjYWYw
YTZhNDRmOTI3Y2M5ZWRiMTExOGE2Li5jOTI4MmQyYmQ5Y2E3NDAzNWE4MDg1YzIyMWRkNWE4NTMx
YTJlYThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9WYWxpZGF0ZU91dHB1dHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU91dHB1dHMuaApAQCAtMTIsNiArMTIs
OSBAQAogCiAjaW5jbHVkZSA8c2V0PgogCituYW1lc3BhY2Ugc2gKK3sKKwogY2xhc3MgVEluZm9T
aW5rQmFzZTsKIAogY2xhc3MgVmFsaWRhdGVPdXRwdXRzIDogcHVibGljIFRJbnRlcm1UcmF2ZXJz
ZXIKQEAgLTE5LDE4ICsyMiwyMiBAQCBjbGFzcyBWYWxpZGF0ZU91dHB1dHMgOiBwdWJsaWMgVElu
dGVybVRyYXZlcnNlcgogICBwdWJsaWM6CiAgICAgVmFsaWRhdGVPdXRwdXRzKGNvbnN0IFRFeHRl
bnNpb25CZWhhdmlvciAmZXh0QmVoYXZpb3IsIGludCBtYXhEcmF3QnVmZmVycyk7CiAKLSAgICBp
bnQgdmFsaWRhdGVBbmRDb3VudEVycm9ycyhUSW5mb1NpbmtCYXNlICZzaW5rKSBjb25zdDsKKyAg
ICB2b2lkIHZhbGlkYXRlKFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpIGNvbnN0OwogCiAgICAg
dm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICopIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6
CiAgICAgaW50IG1NYXhEcmF3QnVmZmVyczsKICAgICBib29sIG1BbGxvd1Vuc3BlY2lmaWVkT3V0
cHV0TG9jYXRpb25SZXNvbHV0aW9uOworICAgIGJvb2wgbVVzZXNGcmFnRGVwdGg7CiAKICAgICB0
eXBlZGVmIHN0ZDo6dmVjdG9yPFRJbnRlcm1TeW1ib2wgKj4gT3V0cHV0VmVjdG9yOwogICAgIE91
dHB1dFZlY3RvciBtT3V0cHV0czsKICAgICBPdXRwdXRWZWN0b3IgbVVuc3BlY2lmaWVkTG9jYXRp
b25PdXRwdXRzOworICAgIE91dHB1dFZlY3RvciBtWXV2T3V0cHV0czsKICAgICBzdGQ6OnNldDxz
dGQ6OnN0cmluZz4gbVZpc2l0ZWRTeW1ib2xzOwogfTsKIAotI2VuZGlmIC8vIENPTVBJTEVSX1RS
QU5TTEFUT1JfVkFMSURBVEVPVVRQVVRTX0hfCit9ICAvLyBuYW1lc3BhY2Ugc2gKKworI2VuZGlm
ICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1ZBTElEQVRFT1VUUFVUU19IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVT
d2l0Y2guY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvVmFsaWRhdGVTd2l0Y2guY3BwCmluZGV4IDhmYmQ4MzI1YmIwOWNmZjI2OGVmMDA4N2IwNWMy
MjUxODVmMDcxY2YuLjYwOTFjNzIzOTNiMzJlNTExOTA5ZjM3ODg3NWJlYzY5MGY4NGM1ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1ZhbGlkYXRlU3dpdGNoLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZVN3aXRjaC5jcHAKQEAgLTYsMjMgKzYsNjkgQEAKIAog
I2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVTd2l0Y2guaCIKIAotI2luY2x1
ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUGFyc2VDb250ZXh0LmgiCisjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9EaWFnbm9zdGljcy5oIgorCituYW1lc3BhY2Ugc2gKK3sKKworbmFtZXNwYWNlCit7CisKK2Ns
YXNzIFZhbGlkYXRlU3dpdGNoIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKK3sKKyAgcHVibGlj
OgorICAgIHN0YXRpYyBib29sIHZhbGlkYXRlKFRCYXNpY1R5cGUgc3dpdGNoVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqc3RhdGVtZW50TGlzdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2MpOworCisgICAgdm9pZCB2aXNpdFN5
bWJvbChUSW50ZXJtU3ltYm9sICopIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXRDb25zdGFudFVu
aW9uKFRJbnRlcm1Db25zdGFudFVuaW9uICopIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRCaW5h
cnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkgKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdFVuYXJ5
KFZpc2l0LCBUSW50ZXJtVW5hcnkgKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdFRlcm5hcnko
VmlzaXQsIFRJbnRlcm1UZXJuYXJ5ICopIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRJZkVsc2Uo
VmlzaXQgdmlzaXQsIFRJbnRlcm1JZkVsc2UgKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdFN3
aXRjaChWaXNpdCwgVEludGVybVN3aXRjaCAqKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0Q2Fz
ZShWaXNpdCwgVEludGVybUNhc2UgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRBZ2dy
ZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNp
dExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wICopIG92ZXJyaWRlOworICAgIGJvb2wgdmlz
aXRCcmFuY2goVmlzaXQsIFRJbnRlcm1CcmFuY2ggKikgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToK
KyAgICBWYWxpZGF0ZVN3aXRjaChUQmFzaWNUeXBlIHN3aXRjaFR5cGUsIFREaWFnbm9zdGljcyAq
Y29udGV4dCk7CisKKyAgICBib29sIHZhbGlkYXRlSW50ZXJuYWwoY29uc3QgVFNvdXJjZUxvYyAm
bG9jKTsKKworICAgIFRCYXNpY1R5cGUgbVN3aXRjaFR5cGU7CisgICAgVERpYWdub3N0aWNzICpt
RGlhZ25vc3RpY3M7CisgICAgYm9vbCBtQ2FzZVR5cGVNaXNtYXRjaDsKKyAgICBib29sIG1GaXJz
dENhc2VGb3VuZDsKKyAgICBib29sIG1TdGF0ZW1lbnRCZWZvcmVDYXNlOworICAgIGJvb2wgbUxh
c3RTdGF0ZW1lbnRXYXNDYXNlOworICAgIGludCBtQ29udHJvbEZsb3dEZXB0aDsKKyAgICBib29s
IG1DYXNlSW5zaWRlQ29udHJvbEZsb3c7CisgICAgaW50IG1EZWZhdWx0Q291bnQ7CisgICAgc3Rk
OjpzZXQ8aW50PiBtQ2FzZXNTaWduZWQ7CisgICAgc3RkOjpzZXQ8dW5zaWduZWQgaW50PiBtQ2Fz
ZXNVbnNpZ25lZDsKKyAgICBib29sIG1EdXBsaWNhdGVDYXNlczsKK307CiAKIGJvb2wgVmFsaWRh
dGVTd2l0Y2g6OnZhbGlkYXRlKFRCYXNpY1R5cGUgc3dpdGNoVHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRQYXJzZUNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEludGVybUJsb2NrICpzdGF0ZW1lbnRMaXN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKQogewotICAgIFZhbGlkYXRl
U3dpdGNoIHZhbGlkYXRlKHN3aXRjaFR5cGUsIGNvbnRleHQpOworICAgIFZhbGlkYXRlU3dpdGNo
IHZhbGlkYXRlKHN3aXRjaFR5cGUsIGRpYWdub3N0aWNzKTsKICAgICBBU1NFUlQoc3RhdGVtZW50
TGlzdCk7CiAgICAgc3RhdGVtZW50TGlzdC0+dHJhdmVyc2UoJnZhbGlkYXRlKTsKICAgICByZXR1
cm4gdmFsaWRhdGUudmFsaWRhdGVJbnRlcm5hbChsb2MpOwogfQogCi1WYWxpZGF0ZVN3aXRjaDo6
VmFsaWRhdGVTd2l0Y2goVEJhc2ljVHlwZSBzd2l0Y2hUeXBlLCBUUGFyc2VDb250ZXh0ICpjb250
ZXh0KQorVmFsaWRhdGVTd2l0Y2g6OlZhbGlkYXRlU3dpdGNoKFRCYXNpY1R5cGUgc3dpdGNoVHlw
ZSwgVERpYWdub3N0aWNzICpkaWFnbm9zdGljcykKICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1
ZSwgZmFsc2UsIHRydWUpLAogICAgICAgbVN3aXRjaFR5cGUoc3dpdGNoVHlwZSksCi0gICAgICBt
Q29udGV4dChjb250ZXh0KSwKKyAgICAgIG1EaWFnbm9zdGljcyhkaWFnbm9zdGljcyksCiAgICAg
ICBtQ2FzZVR5cGVNaXNtYXRjaChmYWxzZSksCiAgICAgICBtRmlyc3RDYXNlRm91bmQoZmFsc2Up
LAogICAgICAgbVN0YXRlbWVudEJlZm9yZUNhc2UoZmFsc2UpLApAQCAtMzEsMTMgKzc3LDE0IEBA
IFZhbGlkYXRlU3dpdGNoOjpWYWxpZGF0ZVN3aXRjaChUQmFzaWNUeXBlIHN3aXRjaFR5cGUsIFRQ
YXJzZUNvbnRleHQgKmNvbnRleHQpCiAgICAgICBtQ2FzZUluc2lkZUNvbnRyb2xGbG93KGZhbHNl
KSwKICAgICAgIG1EZWZhdWx0Q291bnQoMCksCiAgICAgICBtRHVwbGljYXRlQ2FzZXMoZmFsc2Up
Ci17fQoreworfQogCiB2b2lkIFZhbGlkYXRlU3dpdGNoOjp2aXNpdFN5bWJvbChUSW50ZXJtU3lt
Ym9sICopCiB7CiAgICAgaWYgKCFtRmlyc3RDYXNlRm91bmQpCiAgICAgICAgIG1TdGF0ZW1lbnRC
ZWZvcmVDYXNlID0gdHJ1ZTsKLSAgICBtTGFzdFN0YXRlbWVudFdhc0Nhc2UgPSBmYWxzZTsKKyAg
ICBtTGFzdFN0YXRlbWVudFdhc0Nhc2UgICAgPSBmYWxzZTsKIH0KIAogdm9pZCBWYWxpZGF0ZVN3
aXRjaDo6dmlzaXRDb25zdGFudFVuaW9uKFRJbnRlcm1Db25zdGFudFVuaW9uICopCkBAIC00Niwx
NCArOTMsMTQgQEAgdm9pZCBWYWxpZGF0ZVN3aXRjaDo6dmlzaXRDb25zdGFudFVuaW9uKFRJbnRl
cm1Db25zdGFudFVuaW9uICopCiAgICAgLy8gQ291bGQgYmUganVzdCBhIHN0YXRlbWVudCBsaWtl
ICIwOyIKICAgICBpZiAoIW1GaXJzdENhc2VGb3VuZCkKICAgICAgICAgbVN0YXRlbWVudEJlZm9y
ZUNhc2UgPSB0cnVlOwotICAgIG1MYXN0U3RhdGVtZW50V2FzQ2FzZSA9IGZhbHNlOworICAgIG1M
YXN0U3RhdGVtZW50V2FzQ2FzZSAgICA9IGZhbHNlOwogfQogCiBib29sIFZhbGlkYXRlU3dpdGNo
Ojp2aXNpdEJpbmFyeShWaXNpdCwgVEludGVybUJpbmFyeSAqKQogewogICAgIGlmICghbUZpcnN0
Q2FzZUZvdW5kKQogICAgICAgICBtU3RhdGVtZW50QmVmb3JlQ2FzZSA9IHRydWU7Ci0gICAgbUxh
c3RTdGF0ZW1lbnRXYXNDYXNlID0gZmFsc2U7CisgICAgbUxhc3RTdGF0ZW1lbnRXYXNDYXNlICAg
ID0gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTY5LDcgKzExNiw3IEBAIGJvb2wg
VmFsaWRhdGVTd2l0Y2g6OnZpc2l0VGVybmFyeShWaXNpdCwgVEludGVybVRlcm5hcnkgKikKIHsK
ICAgICBpZiAoIW1GaXJzdENhc2VGb3VuZCkKICAgICAgICAgbVN0YXRlbWVudEJlZm9yZUNhc2Ug
PSB0cnVlOwotICAgIG1MYXN0U3RhdGVtZW50V2FzQ2FzZSA9IGZhbHNlOworICAgIG1MYXN0U3Rh
dGVtZW50V2FzQ2FzZSAgICA9IGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC04MSw3
ICsxMjgsNyBAQCBib29sIFZhbGlkYXRlU3dpdGNoOjp2aXNpdElmRWxzZShWaXNpdCB2aXNpdCwg
VEludGVybUlmRWxzZSAqKQogICAgICAgICAtLW1Db250cm9sRmxvd0RlcHRoOwogICAgIGlmICgh
bUZpcnN0Q2FzZUZvdW5kKQogICAgICAgICBtU3RhdGVtZW50QmVmb3JlQ2FzZSA9IHRydWU7Ci0g
ICAgbUxhc3RTdGF0ZW1lbnRXYXNDYXNlID0gZmFsc2U7CisgICAgbUxhc3RTdGF0ZW1lbnRXYXND
YXNlICAgID0gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTg5LDcgKzEzNiw3IEBA
IGJvb2wgVmFsaWRhdGVTd2l0Y2g6OnZpc2l0U3dpdGNoKFZpc2l0LCBUSW50ZXJtU3dpdGNoICop
CiB7CiAgICAgaWYgKCFtRmlyc3RDYXNlRm91bmQpCiAgICAgICAgIG1TdGF0ZW1lbnRCZWZvcmVD
YXNlID0gdHJ1ZTsKLSAgICBtTGFzdFN0YXRlbWVudFdhc0Nhc2UgPSBmYWxzZTsKKyAgICBtTGFz
dFN0YXRlbWVudFdhc0Nhc2UgICAgPSBmYWxzZTsKICAgICAvLyBEb24ndCBnbyBpbnRvIG5lc3Rl
ZCBzd2l0Y2ggc3RhdGVtZW50cwogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTk5LDE3ICsxNDYs
MTcgQEAgYm9vbCBWYWxpZGF0ZVN3aXRjaDo6dmlzaXRDYXNlKFZpc2l0LCBUSW50ZXJtQ2FzZSAq
bm9kZSkKICAgICBjb25zdCBjaGFyICpub2RlU3RyID0gbm9kZS0+aGFzQ29uZGl0aW9uKCkgPyAi
Y2FzZSIgOiAiZGVmYXVsdCI7CiAgICAgaWYgKG1Db250cm9sRmxvd0RlcHRoID4gMCkKICAgICB7
Ci0gICAgICAgIG1Db250ZXh0LT5lcnJvcihub2RlLT5nZXRMaW5lKCksICJsYWJlbCBzdGF0ZW1l
bnQgbmVzdGVkIGluc2lkZSBjb250cm9sIGZsb3ciLCBub2RlU3RyKTsKKyAgICAgICAgbURpYWdu
b3N0aWNzLT5lcnJvcihub2RlLT5nZXRMaW5lKCksICJsYWJlbCBzdGF0ZW1lbnQgbmVzdGVkIGlu
c2lkZSBjb250cm9sIGZsb3ciLCBub2RlU3RyKTsKICAgICAgICAgbUNhc2VJbnNpZGVDb250cm9s
RmxvdyA9IHRydWU7CiAgICAgfQotICAgIG1GaXJzdENhc2VGb3VuZCA9IHRydWU7CisgICAgbUZp
cnN0Q2FzZUZvdW5kICAgICAgID0gdHJ1ZTsKICAgICBtTGFzdFN0YXRlbWVudFdhc0Nhc2UgPSB0
cnVlOwogICAgIGlmICghbm9kZS0+aGFzQ29uZGl0aW9uKCkpCiAgICAgewogICAgICAgICArK21E
ZWZhdWx0Q291bnQ7CiAgICAgICAgIGlmIChtRGVmYXVsdENvdW50ID4gMSkKICAgICAgICAgewot
ICAgICAgICAgICAgbUNvbnRleHQtPmVycm9yKG5vZGUtPmdldExpbmUoKSwgImR1cGxpY2F0ZSBk
ZWZhdWx0IGxhYmVsIiwgbm9kZVN0cik7CisgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPmVycm9y
KG5vZGUtPmdldExpbmUoKSwgImR1cGxpY2F0ZSBkZWZhdWx0IGxhYmVsIiwgbm9kZVN0cik7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgZWxzZQpAQCAtMTIzLDggKzE3MCw5IEBAIGJvb2wgVmFsaWRh
dGVTd2l0Y2g6OnZpc2l0Q2FzZShWaXNpdCwgVEludGVybUNhc2UgKm5vZGUpCiAgICAgICAgIFRC
YXNpY1R5cGUgY29uZGl0aW9uVHlwZSA9IGNvbmRpdGlvbi0+Z2V0QmFzaWNUeXBlKCk7CiAgICAg
ICAgIGlmIChjb25kaXRpb25UeXBlICE9IG1Td2l0Y2hUeXBlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBtQ29udGV4dC0+ZXJyb3IoY29uZGl0aW9uLT5nZXRMaW5lKCksCi0gICAgICAgICAgICAg
ICAgImNhc2UgbGFiZWwgdHlwZSBkb2VzIG5vdCBtYXRjaCBzd2l0Y2ggaW5pdC1leHByZXNzaW9u
IHR5cGUiLCBub2RlU3RyKTsKKyAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+ZXJyb3IoY29uZGl0
aW9uLT5nZXRMaW5lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYXNlIGxh
YmVsIHR5cGUgZG9lcyBub3QgbWF0Y2ggc3dpdGNoIGluaXQtZXhwcmVzc2lvbiB0eXBlIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZVN0cik7CiAgICAgICAgICAgICBtQ2Fz
ZVR5cGVNaXNtYXRjaCA9IHRydWU7CiAgICAgICAgIH0KIApAQCAtMTMzLDcgKzE4MSw3IEBAIGJv
b2wgVmFsaWRhdGVTd2l0Y2g6OnZpc2l0Q2FzZShWaXNpdCwgVEludGVybUNhc2UgKm5vZGUpCiAg
ICAgICAgICAgICBpbnQgaUNvbnN0ID0gY29uZGl0aW9uLT5nZXRJQ29uc3QoMCk7CiAgICAgICAg
ICAgICBpZiAobUNhc2VzU2lnbmVkLmZpbmQoaUNvbnN0KSAhPSBtQ2FzZXNTaWduZWQuZW5kKCkp
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbUNvbnRleHQtPmVycm9yKGNvbmRpdGlv
bi0+Z2V0TGluZSgpLCAiZHVwbGljYXRlIGNhc2UgbGFiZWwiLCBub2RlU3RyKTsKKyAgICAgICAg
ICAgICAgICBtRGlhZ25vc3RpY3MtPmVycm9yKGNvbmRpdGlvbi0+Z2V0TGluZSgpLCAiZHVwbGlj
YXRlIGNhc2UgbGFiZWwiLCBub2RlU3RyKTsKICAgICAgICAgICAgICAgICBtRHVwbGljYXRlQ2Fz
ZXMgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQpAQCAtMTQ2LDcgKzE5
NCw3IEBAIGJvb2wgVmFsaWRhdGVTd2l0Y2g6OnZpc2l0Q2FzZShWaXNpdCwgVEludGVybUNhc2Ug
Km5vZGUpCiAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdUNvbnN0ID0gY29uZGl0aW9uLT5nZXRV
Q29uc3QoMCk7CiAgICAgICAgICAgICBpZiAobUNhc2VzVW5zaWduZWQuZmluZCh1Q29uc3QpICE9
IG1DYXNlc1Vuc2lnbmVkLmVuZCgpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1D
b250ZXh0LT5lcnJvcihjb25kaXRpb24tPmdldExpbmUoKSwgImR1cGxpY2F0ZSBjYXNlIGxhYmVs
Iiwgbm9kZVN0cik7CisgICAgICAgICAgICAgICAgbURpYWdub3N0aWNzLT5lcnJvcihjb25kaXRp
b24tPmdldExpbmUoKSwgImR1cGxpY2F0ZSBjYXNlIGxhYmVsIiwgbm9kZVN0cik7CiAgICAgICAg
ICAgICAgICAgbUR1cGxpY2F0ZUNhc2VzID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGVsc2UKQEAgLTE2OCw3ICsyMTYsNyBAQCBib29sIFZhbGlkYXRlU3dpdGNoOjp2aXNpdEFn
Z3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqKQogICAgICAgICAvLyBUaGlz
IGlzIG5vdCB0aGUgc3RhdGVtZW50TGlzdCBub2RlLCBidXQgc29tZSBvdGhlciBub2RlLgogICAg
ICAgICBpZiAoIW1GaXJzdENhc2VGb3VuZCkKICAgICAgICAgICAgIG1TdGF0ZW1lbnRCZWZvcmVD
YXNlID0gdHJ1ZTsKLSAgICAgICAgbUxhc3RTdGF0ZW1lbnRXYXNDYXNlID0gZmFsc2U7CisgICAg
ICAgIG1MYXN0U3RhdGVtZW50V2FzQ2FzZSAgICA9IGZhbHNlOwogICAgIH0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTE4MSw3ICsyMjksNyBAQCBib29sIFZhbGlkYXRlU3dpdGNoOjp2aXNpdExv
b3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wICopCiAgICAgICAgIC0tbUNvbnRyb2xGbG93RGVw
dGg7CiAgICAgaWYgKCFtRmlyc3RDYXNlRm91bmQpCiAgICAgICAgIG1TdGF0ZW1lbnRCZWZvcmVD
YXNlID0gdHJ1ZTsKLSAgICBtTGFzdFN0YXRlbWVudFdhc0Nhc2UgPSBmYWxzZTsKKyAgICBtTGFz
dFN0YXRlbWVudFdhc0Nhc2UgICAgPSBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MTg5LDcgKzIzNyw3IEBAIGJvb2wgVmFsaWRhdGVTd2l0Y2g6OnZpc2l0QnJhbmNoKFZpc2l0LCBU
SW50ZXJtQnJhbmNoICopCiB7CiAgICAgaWYgKCFtRmlyc3RDYXNlRm91bmQpCiAgICAgICAgIG1T
dGF0ZW1lbnRCZWZvcmVDYXNlID0gdHJ1ZTsKLSAgICBtTGFzdFN0YXRlbWVudFdhc0Nhc2UgPSBm
YWxzZTsKKyAgICBtTGFzdFN0YXRlbWVudFdhc0Nhc2UgICAgPSBmYWxzZTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIApAQCAtMTk3LDE0ICsyNDUsMjYgQEAgYm9vbCBWYWxpZGF0ZVN3aXRjaDo6dmFs
aWRhdGVJbnRlcm5hbChjb25zdCBUU291cmNlTG9jICZsb2MpCiB7CiAgICAgaWYgKG1TdGF0ZW1l
bnRCZWZvcmVDYXNlKQogICAgIHsKLSAgICAgICAgbUNvbnRleHQtPmVycm9yKGxvYywKLSAgICAg
ICAgICAgICJzdGF0ZW1lbnQgYmVmb3JlIHRoZSBmaXJzdCBsYWJlbCIsICJzd2l0Y2giKTsKKyAg
ICAgICAgbURpYWdub3N0aWNzLT5lcnJvcihsb2MsICJzdGF0ZW1lbnQgYmVmb3JlIHRoZSBmaXJz
dCBsYWJlbCIsICJzd2l0Y2giKTsKICAgICB9CiAgICAgaWYgKG1MYXN0U3RhdGVtZW50V2FzQ2Fz
ZSkKICAgICB7Ci0gICAgICAgIG1Db250ZXh0LT5lcnJvcihsb2MsCi0gICAgICAgICAgICAibm8g
c3RhdGVtZW50IGJldHdlZW4gdGhlIGxhc3QgbGFiZWwgYW5kIHRoZSBlbmQgb2YgdGhlIHN3aXRj
aCBzdGF0ZW1lbnQiLCAic3dpdGNoIik7CisgICAgICAgIG1EaWFnbm9zdGljcy0+ZXJyb3IoCisg
ICAgICAgICAgICBsb2MsICJubyBzdGF0ZW1lbnQgYmV0d2VlbiB0aGUgbGFzdCBsYWJlbCBhbmQg
dGhlIGVuZCBvZiB0aGUgc3dpdGNoIHN0YXRlbWVudCIsCisgICAgICAgICAgICAic3dpdGNoIik7
CiAgICAgfQogICAgIHJldHVybiAhbVN0YXRlbWVudEJlZm9yZUNhc2UgJiYgIW1MYXN0U3RhdGVt
ZW50V2FzQ2FzZSAmJiAhbUNhc2VJbnNpZGVDb250cm9sRmxvdyAmJgotICAgICAgICAhbUNhc2VU
eXBlTWlzbWF0Y2ggJiYgbURlZmF1bHRDb3VudCA8PSAxICYmICFtRHVwbGljYXRlQ2FzZXM7Cisg
ICAgICAgICAgICFtQ2FzZVR5cGVNaXNtYXRjaCAmJiBtRGVmYXVsdENvdW50IDw9IDEgJiYgIW1E
dXBsaWNhdGVDYXNlczsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitib29sIFZh
bGlkYXRlU3dpdGNoU3RhdGVtZW50TGlzdChUQmFzaWNUeXBlIHN3aXRjaFR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUJsb2NrICpzdGF0ZW1lbnRMaXN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9j
KQoreworICAgIHJldHVybiBWYWxpZGF0ZVN3aXRjaDo6dmFsaWRhdGUoc3dpdGNoVHlwZSwgZGlh
Z25vc3RpY3MsIHN0YXRlbWVudExpc3QsIGxvYyk7CiB9CisKK30gIC8vIG5hbWVzcGFjZSBzaApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvVmFsaWRhdGVTd2l0Y2guaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1ZhbGlkYXRlU3dpdGNoLmgKaW5kZXggOWM2ZGVlMjEyOGVkYTIzN2Q4ZTI1
NWZlMGM4ODZiZTBhZDhjZWFlNy4uNzU3ODIwYTE2NGU0N2JiYWE2ZWI5OWU0MDc4NzU2YzAxMGQy
ZjQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVmFsaWRhdGVTd2l0Y2guaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZVN3aXRjaC5oCkBAIC03LDQ5ICs3LDIxIEBA
CiAjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfVkFMSURBVEVTV0lUQ0hfSF8KICNkZWZpbmUg
Q09NUElMRVJfVFJBTlNMQVRPUl9WQUxJREFURVNXSVRDSF9IXwogCi0jaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9CYXNlVHlwZXMuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0NvbW1vbi5oIgog
Ci1jbGFzcyBUUGFyc2VDb250ZXh0OwotCi1jbGFzcyBWYWxpZGF0ZVN3aXRjaCA6IHB1YmxpYyBU
SW50ZXJtVHJhdmVyc2VyCituYW1lc3BhY2Ugc2gKIHsKLSAgcHVibGljOgotICAgIC8vIENoZWNr
IGZvciBlcnJvcnMgYW5kIG91dHB1dCBtZXNzYWdlcyBhbnkgcmVtYWluaW5nIGVycm9ycyBvbiB0
aGUgY29udGV4dC4KLSAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIG5vIGVycm9ycy4K
LSAgICBzdGF0aWMgYm9vbCB2YWxpZGF0ZShUQmFzaWNUeXBlIHN3aXRjaFR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgVFBhcnNlQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBUSW50ZXJtQmxvY2sgKnN0YXRlbWVudExpc3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKLQotICAgIHZvaWQgdmlzaXRTeW1ib2wo
VEludGVybVN5bWJvbCAqKSBvdmVycmlkZTsKLSAgICB2b2lkIHZpc2l0Q29uc3RhbnRVbmlvbihU
SW50ZXJtQ29uc3RhbnRVbmlvbiAqKSBvdmVycmlkZTsKLSAgICBib29sIHZpc2l0QmluYXJ5KFZp
c2l0LCBUSW50ZXJtQmluYXJ5ICopIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRVbmFyeShWaXNp
dCwgVEludGVybVVuYXJ5ICopIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRUZXJuYXJ5KFZpc2l0
LCBUSW50ZXJtVGVybmFyeSAqKSBvdmVycmlkZTsKLSAgICBib29sIHZpc2l0SWZFbHNlKFZpc2l0
IHZpc2l0LCBUSW50ZXJtSWZFbHNlICopIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRTd2l0Y2go
VmlzaXQsIFRJbnRlcm1Td2l0Y2ggKikgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNpdENhc2UoVmlz
aXQsIFRJbnRlcm1DYXNlICpub2RlKSBvdmVycmlkZTsKLSAgICBib29sIHZpc2l0QWdncmVnYXRl
KFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICopIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRMb29w
KFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCAqKSBvdmVycmlkZTsKLSAgICBib29sIHZpc2l0QnJh
bmNoKFZpc2l0LCBUSW50ZXJtQnJhbmNoICopIG92ZXJyaWRlOwotCi0gIHByaXZhdGU6Ci0gICAg
VmFsaWRhdGVTd2l0Y2goVEJhc2ljVHlwZSBzd2l0Y2hUeXBlLCBUUGFyc2VDb250ZXh0ICpjb250
ZXh0KTsKK2NsYXNzIFREaWFnbm9zdGljczsKK2NsYXNzIFRJbnRlcm1CbG9jazsKIAotICAgIGJv
b2wgdmFsaWRhdGVJbnRlcm5hbChjb25zdCBUU291cmNlTG9jICZsb2MpOworLy8gQ2hlY2sgZm9y
IGVycm9ycyBhbmQgb3V0cHV0IGVycm9yIG1lc3NhZ2VzIG9uIHRoZSBjb250ZXh0LgorLy8gUmV0
dXJucyB0cnVlIGlmIHRoZXJlIGFyZSBubyBlcnJvcnMuCitib29sIFZhbGlkYXRlU3dpdGNoU3Rh
dGVtZW50TGlzdChUQmFzaWNUeXBlIHN3aXRjaFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEludGVybUJsb2NrICpzdGF0ZW1lbnRMaXN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKIAotICAgIFRCYXNp
Y1R5cGUgbVN3aXRjaFR5cGU7Ci0gICAgVFBhcnNlQ29udGV4dCAqbUNvbnRleHQ7Ci0gICAgYm9v
bCBtQ2FzZVR5cGVNaXNtYXRjaDsKLSAgICBib29sIG1GaXJzdENhc2VGb3VuZDsKLSAgICBib29s
IG1TdGF0ZW1lbnRCZWZvcmVDYXNlOwotICAgIGJvb2wgbUxhc3RTdGF0ZW1lbnRXYXNDYXNlOwot
ICAgIGludCBtQ29udHJvbEZsb3dEZXB0aDsKLSAgICBib29sIG1DYXNlSW5zaWRlQ29udHJvbEZs
b3c7Ci0gICAgaW50IG1EZWZhdWx0Q291bnQ7Ci0gICAgc3RkOjpzZXQ8aW50PiBtQ2FzZXNTaWdu
ZWQ7Ci0gICAgc3RkOjpzZXQ8dW5zaWduZWQgaW50PiBtQ2FzZXNVbnNpZ25lZDsKLSAgICBib29s
IG1EdXBsaWNhdGVDYXNlczsKLX07Cit9ICAvLyBuYW1lc3BhY2Ugc2gKIAotI2VuZGlmIC8vIENP
TVBJTEVSX1RSQU5TTEFUT1JfVkFMSURBVEVTV0lUQ0hfSF8KKyNlbmRpZiAgLy8gQ09NUElMRVJf
VFJBTlNMQVRPUl9WQUxJREFURVNXSVRDSF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVJbmZvLmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhcmlhYmxlSW5mby5j
cHAKaW5kZXggN2UxZTVjZDgyYTExY2JlY2JjOGIwYWI2MDM5MTA0OTkyNTg0M2YyOC4uYTIwMWI0
YzZkZjM0ZWIxMTczMzJiNDYyZjU0ODEwZGVmZDc3ZDA0MyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVJbmZvLmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYXJp
YWJsZUluZm8uY3BwCkBAIC0yMCwxMCArMjAsMTUgQEAgQmxvY2tMYXlvdXRUeXBlIEdldEJsb2Nr
TGF5b3V0VHlwZShUTGF5b3V0QmxvY2tTdG9yYWdlIGJsb2NrU3RvcmFnZSkKIHsKICAgICBzd2l0
Y2ggKGJsb2NrU3RvcmFnZSkKICAgICB7Ci0gICAgICBjYXNlIEVic1BhY2tlZDogICAgICAgICBy
ZXR1cm4gQkxPQ0tMQVlPVVRfUEFDS0VEOwotICAgICAgY2FzZSBFYnNTaGFyZWQ6ICAgICAgICAg
cmV0dXJuIEJMT0NLTEFZT1VUX1NIQVJFRDsKLSAgICAgIGNhc2UgRWJzU3RkMTQwOiAgICAgICAg
IHJldHVybiBCTE9DS0xBWU9VVF9TVEFOREFSRDsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxF
KCk7IHJldHVybiBCTE9DS0xBWU9VVF9TSEFSRUQ7CisgICAgICAgIGNhc2UgRWJzUGFja2VkOgor
ICAgICAgICAgICAgcmV0dXJuIEJMT0NLTEFZT1VUX1BBQ0tFRDsKKyAgICAgICAgY2FzZSBFYnNT
aGFyZWQ6CisgICAgICAgICAgICByZXR1cm4gQkxPQ0tMQVlPVVRfU0hBUkVEOworICAgICAgICBj
YXNlIEVic1N0ZDE0MDoKKyAgICAgICAgICAgIHJldHVybiBCTE9DS0xBWU9VVF9TVEFOREFSRDsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAg
ICByZXR1cm4gQkxPQ0tMQVlPVVRfU0hBUkVEOwogICAgIH0KIH0KIApAQCAtNDAsMTcgKzQ1LDEz
IEBAIHZvaWQgRXhwYW5kVXNlckRlZmluZWRWYXJpYWJsZShjb25zdCBTaGFkZXJWYXJpYWJsZSAm
dmFyaWFibGUsCiAgICAgZm9yIChzaXplX3QgZmllbGRJbmRleCA9IDA7IGZpZWxkSW5kZXggPCBm
aWVsZHMuc2l6ZSgpOyBmaWVsZEluZGV4KyspCiAgICAgewogICAgICAgICBjb25zdCBTaGFkZXJW
YXJpYWJsZSAmZmllbGQgPSBmaWVsZHNbZmllbGRJbmRleF07Ci0gICAgICAgIEV4cGFuZFZhcmlh
YmxlKGZpZWxkLAotICAgICAgICAgICAgICAgICAgICAgICBuYW1lICsgIi4iICsgZmllbGQubmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgbWFwcGVkTmFtZSArICIuIiArIGZpZWxkLm1hcHBl
ZE5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIG1hcmtTdGF0aWNVc2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgIGV4cGFuZGVkKTsKKyAgICAgICAgRXhwYW5kVmFyaWFibGUoZmllbGQsIG5h
bWUgKyAiLiIgKyBmaWVsZC5uYW1lLCBtYXBwZWROYW1lICsgIi4iICsgZmllbGQubWFwcGVkTmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgbWFya1N0YXRpY1VzZSwgZXhwYW5kZWQpOwogICAg
IH0KIH0KIAogdGVtcGxhdGUgPGNsYXNzIFZhclQ+Ci1WYXJUICpGaW5kVmFyaWFibGUoY29uc3Qg
VFN0cmluZyAmbmFtZSwKLSAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPFZhclQ+ICppbmZv
TGlzdCkKK1ZhclQgKkZpbmRWYXJpYWJsZShjb25zdCBUU3RyaW5nICZuYW1lLCBzdGQ6OnZlY3Rv
cjxWYXJUPiAqaW5mb0xpc3QpCiB7CiAgICAgLy8gVE9ETyh6bW8pOiBvcHRpbWl6ZSB0aGlzIGZ1
bmN0aW9uLgogICAgIGZvciAoc2l6ZV90IGlpID0gMDsgaWkgPCBpbmZvTGlzdC0+c2l6ZSgpOyAr
K2lpKQpAQCAtNjEsNyArNjIsNiBAQCBWYXJUICpGaW5kVmFyaWFibGUoY29uc3QgVFN0cmluZyAm
bmFtZSwKIAogICAgIHJldHVybiBOVUxMOwogfQotCiB9CiAKIENvbGxlY3RWYXJpYWJsZXM6OkNv
bGxlY3RWYXJpYWJsZXMoc3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gKmF0dHJpYnMsCkBAIC0x
MDcsNyArMTA3LDcgQEAgQ29sbGVjdFZhcmlhYmxlczo6Q29sbGVjdFZhcmlhYmxlcyhzdGQ6OnZl
Y3RvcjxzaDo6QXR0cmlidXRlPiAqYXR0cmlicywKIHZvaWQgQ29sbGVjdFZhcmlhYmxlczo6dmlz
aXRTeW1ib2woVEludGVybVN5bWJvbCAqc3ltYm9sKQogewogICAgIEFTU0VSVChzeW1ib2wgIT0g
TlVMTCk7Ci0gICAgU2hhZGVyVmFyaWFibGUgKnZhciA9IE5VTEw7CisgICAgU2hhZGVyVmFyaWFi
bGUgKnZhciAgICAgICA9IE5VTEw7CiAgICAgY29uc3QgVFN0cmluZyAmc3ltYm9sTmFtZSA9IHN5
bWJvbC0+Z2V0U3ltYm9sKCk7CiAKICAgICBpZiAoSXNWYXJ5aW5nKHN5bWJvbC0+Z2V0UXVhbGlm
aWVyKCkpKQpAQCAtMTI2LDM5ICsxMjYsMzkgQEAgdm9pZCBDb2xsZWN0VmFyaWFibGVzOjp2aXNp
dFN5bWJvbChUSW50ZXJtU3ltYm9sICpzeW1ib2wpCiAgICAgICAgIHsKICAgICAgICAgICAgIFVu
aWZvcm0gaW5mbzsKICAgICAgICAgICAgIGNvbnN0IGNoYXIga05hbWVbXSA9ICJnbF9EZXB0aFJh
bmdlIjsKLSAgICAgICAgICAgIGluZm8ubmFtZSA9IGtOYW1lOwotICAgICAgICAgICAgaW5mby5t
YXBwZWROYW1lID0ga05hbWU7Ci0gICAgICAgICAgICBpbmZvLnR5cGUgPSBHTF9TVFJVQ1RfQU5H
TEVYOwotICAgICAgICAgICAgaW5mby5hcnJheVNpemUgPSAwOwotICAgICAgICAgICAgaW5mby5w
cmVjaXNpb24gPSBHTF9OT05FOwotICAgICAgICAgICAgaW5mby5zdGF0aWNVc2UgPSB0cnVlOwor
ICAgICAgICAgICAgaW5mby5uYW1lICAgICAgICAgID0ga05hbWU7CisgICAgICAgICAgICBpbmZv
Lm1hcHBlZE5hbWUgICAgPSBrTmFtZTsKKyAgICAgICAgICAgIGluZm8udHlwZSAgICAgICAgICA9
IEdMX1NUUlVDVF9BTkdMRVg7CisgICAgICAgICAgICBpbmZvLmFycmF5U2l6ZSAgICAgPSAwOwor
ICAgICAgICAgICAgaW5mby5wcmVjaXNpb24gICAgID0gR0xfTk9ORTsKKyAgICAgICAgICAgIGlu
Zm8uc3RhdGljVXNlICAgICA9IHRydWU7CiAKICAgICAgICAgICAgIFNoYWRlclZhcmlhYmxlIG5l
YXJJbmZvOwogICAgICAgICAgICAgY29uc3QgY2hhciBrTmVhck5hbWVbXSA9ICJuZWFyIjsKLSAg
ICAgICAgICAgIG5lYXJJbmZvLm5hbWUgPSBrTmVhck5hbWU7Ci0gICAgICAgICAgICBuZWFySW5m
by5tYXBwZWROYW1lID0ga05lYXJOYW1lOwotICAgICAgICAgICAgbmVhckluZm8udHlwZSA9IEdM
X0ZMT0FUOwotICAgICAgICAgICAgbmVhckluZm8uYXJyYXlTaXplID0gMDsKLSAgICAgICAgICAg
IG5lYXJJbmZvLnByZWNpc2lvbiA9IEdMX0hJR0hfRkxPQVQ7Ci0gICAgICAgICAgICBuZWFySW5m
by5zdGF0aWNVc2UgPSB0cnVlOworICAgICAgICAgICAgbmVhckluZm8ubmFtZSAgICAgICAgICA9
IGtOZWFyTmFtZTsKKyAgICAgICAgICAgIG5lYXJJbmZvLm1hcHBlZE5hbWUgICAgPSBrTmVhck5h
bWU7CisgICAgICAgICAgICBuZWFySW5mby50eXBlICAgICAgICAgID0gR0xfRkxPQVQ7CisgICAg
ICAgICAgICBuZWFySW5mby5hcnJheVNpemUgICAgID0gMDsKKyAgICAgICAgICAgIG5lYXJJbmZv
LnByZWNpc2lvbiAgICAgPSBHTF9ISUdIX0ZMT0FUOworICAgICAgICAgICAgbmVhckluZm8uc3Rh
dGljVXNlICAgICA9IHRydWU7CiAKICAgICAgICAgICAgIFNoYWRlclZhcmlhYmxlIGZhckluZm87
CiAgICAgICAgICAgICBjb25zdCBjaGFyIGtGYXJOYW1lW10gPSAiZmFyIjsKLSAgICAgICAgICAg
IGZhckluZm8ubmFtZSA9IGtGYXJOYW1lOwotICAgICAgICAgICAgZmFySW5mby5tYXBwZWROYW1l
ID0ga0Zhck5hbWU7Ci0gICAgICAgICAgICBmYXJJbmZvLnR5cGUgPSBHTF9GTE9BVDsKLSAgICAg
ICAgICAgIGZhckluZm8uYXJyYXlTaXplID0gMDsKLSAgICAgICAgICAgIGZhckluZm8ucHJlY2lz
aW9uID0gR0xfSElHSF9GTE9BVDsKLSAgICAgICAgICAgIGZhckluZm8uc3RhdGljVXNlID0gdHJ1
ZTsKKyAgICAgICAgICAgIGZhckluZm8ubmFtZSAgICAgICAgICA9IGtGYXJOYW1lOworICAgICAg
ICAgICAgZmFySW5mby5tYXBwZWROYW1lICAgID0ga0Zhck5hbWU7CisgICAgICAgICAgICBmYXJJ
bmZvLnR5cGUgICAgICAgICAgPSBHTF9GTE9BVDsKKyAgICAgICAgICAgIGZhckluZm8uYXJyYXlT
aXplICAgICA9IDA7CisgICAgICAgICAgICBmYXJJbmZvLnByZWNpc2lvbiAgICAgPSBHTF9ISUdI
X0ZMT0FUOworICAgICAgICAgICAgZmFySW5mby5zdGF0aWNVc2UgICAgID0gdHJ1ZTsKIAogICAg
ICAgICAgICAgU2hhZGVyVmFyaWFibGUgZGlmZkluZm87CiAgICAgICAgICAgICBjb25zdCBjaGFy
IGtEaWZmTmFtZVtdID0gImRpZmYiOwotICAgICAgICAgICAgZGlmZkluZm8ubmFtZSA9IGtEaWZm
TmFtZTsKLSAgICAgICAgICAgIGRpZmZJbmZvLm1hcHBlZE5hbWUgPSBrRGlmZk5hbWU7Ci0gICAg
ICAgICAgICBkaWZmSW5mby50eXBlID0gR0xfRkxPQVQ7Ci0gICAgICAgICAgICBkaWZmSW5mby5h
cnJheVNpemUgPSAwOwotICAgICAgICAgICAgZGlmZkluZm8ucHJlY2lzaW9uID0gR0xfSElHSF9G
TE9BVDsKLSAgICAgICAgICAgIGRpZmZJbmZvLnN0YXRpY1VzZSA9IHRydWU7CisgICAgICAgICAg
ICBkaWZmSW5mby5uYW1lICAgICAgICAgID0ga0RpZmZOYW1lOworICAgICAgICAgICAgZGlmZklu
Zm8ubWFwcGVkTmFtZSAgICA9IGtEaWZmTmFtZTsKKyAgICAgICAgICAgIGRpZmZJbmZvLnR5cGUg
ICAgICAgICAgPSBHTF9GTE9BVDsKKyAgICAgICAgICAgIGRpZmZJbmZvLmFycmF5U2l6ZSAgICAg
PSAwOworICAgICAgICAgICAgZGlmZkluZm8ucHJlY2lzaW9uICAgICA9IEdMX0hJR0hfRkxPQVQ7
CisgICAgICAgICAgICBkaWZmSW5mby5zdGF0aWNVc2UgICAgID0gdHJ1ZTsKIAogICAgICAgICAg
ICAgaW5mby5maWVsZHMucHVzaF9iYWNrKG5lYXJJbmZvKTsKICAgICAgICAgICAgIGluZm8uZmll
bGRzLnB1c2hfYmFjayhmYXJJbmZvKTsKQEAgLTE3MiwxOSArMTcyLDIwIEBAIHZvaWQgQ29sbGVj
dFZhcmlhYmxlczo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqc3ltYm9sKQogICAgIHsKICAg
ICAgICAgc3dpdGNoIChzeW1ib2wtPmdldFF1YWxpZmllcigpKQogICAgICAgICB7Ci0gICAgICAg
ICAgY2FzZSBFdnFBdHRyaWJ1dGU6Ci0gICAgICAgICAgY2FzZSBFdnFWZXJ0ZXhJbjoKLSAgICAg
ICAgICAgIHZhciA9IEZpbmRWYXJpYWJsZShzeW1ib2xOYW1lLCBtQXR0cmlicyk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEV2cUZyYWdtZW50T3V0OgotICAgICAgICAgICAg
dmFyID0gRmluZFZhcmlhYmxlKHN5bWJvbE5hbWUsIG1PdXRwdXRWYXJpYWJsZXMpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBFdnFVbmlmb3JtOgorICAgICAgICAgICAgY2Fz
ZSBFdnFBdHRyaWJ1dGU6CisgICAgICAgICAgICBjYXNlIEV2cVZlcnRleEluOgorICAgICAgICAg
ICAgICAgIHZhciA9IEZpbmRWYXJpYWJsZShzeW1ib2xOYW1lLCBtQXR0cmlicyk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEV2cUZyYWdtZW50T3V0OgorICAgICAg
ICAgICAgICAgIHZhciA9IEZpbmRWYXJpYWJsZShzeW1ib2xOYW1lLCBtT3V0cHV0VmFyaWFibGVz
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRXZxVW5pZm9ybToK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBjb25zdCBUSW50ZXJmYWNlQmxvY2sgKmlu
dGVyZmFjZUJsb2NrID0gc3ltYm9sLT5nZXRUeXBlKCkuZ2V0SW50ZXJmYWNlQmxvY2soKTsKICAg
ICAgICAgICAgICAgICBpZiAoaW50ZXJmYWNlQmxvY2spCiAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBJbnRlcmZhY2VCbG9jayAqbmFtZWRCbG9jayA9IEZpbmRWYXJpYWJs
ZShpbnRlcmZhY2VCbG9jay0+bmFtZSgpLCBtSW50ZXJmYWNlQmxvY2tzKTsKKyAgICAgICAgICAg
ICAgICAgICAgSW50ZXJmYWNlQmxvY2sgKm5hbWVkQmxvY2sgPQorICAgICAgICAgICAgICAgICAg
ICAgICAgRmluZFZhcmlhYmxlKGludGVyZmFjZUJsb2NrLT5uYW1lKCksIG1JbnRlcmZhY2VCbG9j
a3MpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobmFtZWRCbG9jayk7CiAgICAgICAgICAg
ICAgICAgICAgIHZhciA9IEZpbmRWYXJpYWJsZShzeW1ib2xOYW1lLCAmbmFtZWRCbG9jay0+Zmll
bGRzKTsKIApAQCAtMjAwLDI0MiArMjAxLDI0NSBAQCB2b2lkIENvbGxlY3RWYXJpYWJsZXM6OnZp
c2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKnN5bWJvbCkKICAgICAgICAgICAgICAgICBBU1NFUlQo
c3ltYm9sTmFtZS5jb21wYXJlKDAsIDMsICJnbF8iKSAhPSAwIHx8IHZhcik7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEV2cUZyYWdDb29yZDoKLSAg
ICAgICAgICAgIGlmICghbUZyYWdDb29yZEFkZGVkKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIFZhcnlpbmcgaW5mbzsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyIGtOYW1lW10g
PSAiZ2xfRnJhZ0Nvb3JkIjsKLSAgICAgICAgICAgICAgICBpbmZvLm5hbWUgPSBrTmFtZTsKLSAg
ICAgICAgICAgICAgICBpbmZvLm1hcHBlZE5hbWUgPSBrTmFtZTsKLSAgICAgICAgICAgICAgICBp
bmZvLnR5cGUgPSBHTF9GTE9BVF9WRUM0OwotICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXpl
ID0gMDsKLSAgICAgICAgICAgICAgICBpbmZvLnByZWNpc2lvbiA9IEdMX01FRElVTV9GTE9BVDsg
IC8vIERlZmluZWQgYnkgc3BlYy4KLSAgICAgICAgICAgICAgICBpbmZvLnN0YXRpY1VzZSA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgaW5mby5pc0ludmFyaWFudCA9IG1TeW1ib2xUYWJsZS5pc1Zh
cnlpbmdJbnZhcmlhbnQoa05hbWUpOwotICAgICAgICAgICAgICAgIG1WYXJ5aW5ncy0+cHVzaF9i
YWNrKGluZm8pOwotICAgICAgICAgICAgICAgIG1GcmFnQ29vcmRBZGRlZCA9IHRydWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgY2FzZSBFdnFGcm9udEZh
Y2luZzoKLSAgICAgICAgICAgIGlmICghbUZyb250RmFjaW5nQWRkZWQpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgVmFyeWluZyBpbmZvOwotICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIga05hbWVbXSA9ICJnbF9Gcm9udEZhY2luZyI7Ci0gICAgICAgICAgICAgICAgaW5mby5uYW1l
ID0ga05hbWU7Ci0gICAgICAgICAgICAgICAgaW5mby5tYXBwZWROYW1lID0ga05hbWU7Ci0gICAg
ICAgICAgICAgICAgaW5mby50eXBlID0gR0xfQk9PTDsKLSAgICAgICAgICAgICAgICBpbmZvLmFy
cmF5U2l6ZSA9IDA7Ci0gICAgICAgICAgICAgICAgaW5mby5wcmVjaXNpb24gPSBHTF9OT05FOwot
ICAgICAgICAgICAgICAgIGluZm8uc3RhdGljVXNlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBp
bmZvLmlzSW52YXJpYW50ID0gbVN5bWJvbFRhYmxlLmlzVmFyeWluZ0ludmFyaWFudChrTmFtZSk7
Ci0gICAgICAgICAgICAgICAgbVZhcnlpbmdzLT5wdXNoX2JhY2soaW5mbyk7Ci0gICAgICAgICAg
ICAgICAgbUZyb250RmFjaW5nQWRkZWQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgIGNhc2UgRXZxUG9pbnRDb29yZDoKLSAgICAgICAgICAgIGlm
ICghbVBvaW50Q29vcmRBZGRlZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBWYXJ5
aW5nIGluZm87Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciBrTmFtZVtdID0gImdsX1BvaW50
Q29vcmQiOwotICAgICAgICAgICAgICAgIGluZm8ubmFtZSA9IGtOYW1lOwotICAgICAgICAgICAg
ICAgIGluZm8ubWFwcGVkTmFtZSA9IGtOYW1lOwotICAgICAgICAgICAgICAgIGluZm8udHlwZSA9
IEdMX0ZMT0FUX1ZFQzI7Ci0gICAgICAgICAgICAgICAgaW5mby5hcnJheVNpemUgPSAwOwotICAg
ICAgICAgICAgICAgIGluZm8ucHJlY2lzaW9uID0gR0xfTUVESVVNX0ZMT0FUOyAgLy8gRGVmaW5l
ZCBieSBzcGVjLgotICAgICAgICAgICAgICAgIGluZm8uc3RhdGljVXNlID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICBpbmZvLmlzSW52YXJpYW50ID0gbVN5bWJvbFRhYmxlLmlzVmFyeWluZ0ludmFy
aWFudChrTmFtZSk7Ci0gICAgICAgICAgICAgICAgbVZhcnlpbmdzLT5wdXNoX2JhY2soaW5mbyk7
Ci0gICAgICAgICAgICAgICAgbVBvaW50Q29vcmRBZGRlZCA9IHRydWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgY2FzZSBFdnFJbnN0YW5jZUlEOgotICAg
ICAgICAgICAgaWYgKCFtSW5zdGFuY2VJREFkZGVkKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIEF0dHJpYnV0ZSBpbmZvOwotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIga05hbWVb
XSA9ICJnbF9JbnN0YW5jZUlEIjsKLSAgICAgICAgICAgICAgICBpbmZvLm5hbWUgPSBrTmFtZTsK
LSAgICAgICAgICAgICAgICBpbmZvLm1hcHBlZE5hbWUgPSBrTmFtZTsKLSAgICAgICAgICAgICAg
ICBpbmZvLnR5cGUgPSBHTF9JTlQ7Ci0gICAgICAgICAgICAgICAgaW5mby5hcnJheVNpemUgPSAw
OwotICAgICAgICAgICAgICAgIGluZm8ucHJlY2lzaW9uID0gR0xfSElHSF9JTlQ7ICAvLyBEZWZp
bmVkIGJ5IHNwZWMuCi0gICAgICAgICAgICAgICAgaW5mby5zdGF0aWNVc2UgPSB0cnVlOwotICAg
ICAgICAgICAgICAgIGluZm8ubG9jYXRpb24gPSAtMTsKLSAgICAgICAgICAgICAgICBtQXR0cmli
cy0+cHVzaF9iYWNrKGluZm8pOwotICAgICAgICAgICAgICAgIG1JbnN0YW5jZUlEQWRkZWQgPSB0
cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIGNhc2Ug
RXZxVmVydGV4SUQ6Ci0gICAgICAgICAgICAgIGlmICghbVZlcnRleElEQWRkZWQpCi0gICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSBpbmZvOwotICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciBrTmFtZVtdID0gImdsX1ZlcnRleElEIjsKLSAgICAgICAgICAgICAg
ICAgIGluZm8ubmFtZSAgICAgICAgICA9IGtOYW1lOwotICAgICAgICAgICAgICAgICAgaW5mby5t
YXBwZWROYW1lICAgID0ga05hbWU7Ci0gICAgICAgICAgICAgICAgICBpbmZvLnR5cGUgICAgICAg
ICAgPSBHTF9JTlQ7Ci0gICAgICAgICAgICAgICAgICBpbmZvLmFycmF5U2l6ZSAgICAgPSAwOwot
ICAgICAgICAgICAgICAgICAgaW5mby5wcmVjaXNpb24gICAgID0gR0xfSElHSF9JTlQ7ICAvLyBE
ZWZpbmVkIGJ5IHNwZWMuCi0gICAgICAgICAgICAgICAgICBpbmZvLnN0YXRpY1VzZSAgICAgPSB0
cnVlOwotICAgICAgICAgICAgICAgICAgaW5mby5sb2NhdGlvbiAgICAgID0gLTE7Ci0gICAgICAg
ICAgICAgICAgICBtQXR0cmlicy0+cHVzaF9iYWNrKGluZm8pOwotICAgICAgICAgICAgICAgICAg
bVZlcnRleElEQWRkZWQgPSB0cnVlOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICBjYXNlIEV2cVBvc2l0aW9uOgotICAgICAgICAgICAgaWYgKCFtUG9z
aXRpb25BZGRlZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBWYXJ5aW5nIGluZm87
Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciBrTmFtZVtdID0gImdsX1Bvc2l0aW9uIjsKLSAg
ICAgICAgICAgICAgICBpbmZvLm5hbWUgPSBrTmFtZTsKLSAgICAgICAgICAgICAgICBpbmZvLm1h
cHBlZE5hbWUgPSBrTmFtZTsKLSAgICAgICAgICAgICAgICBpbmZvLnR5cGUgPSBHTF9GTE9BVF9W
RUM0OwotICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplID0gMDsKLSAgICAgICAgICAgICAg
ICBpbmZvLnByZWNpc2lvbiA9IEdMX0hJR0hfRkxPQVQ7ICAvLyBEZWZpbmVkIGJ5IHNwZWMuCi0g
ICAgICAgICAgICAgICAgaW5mby5zdGF0aWNVc2UgPSB0cnVlOwotICAgICAgICAgICAgICAgIGlu
Zm8uaXNJbnZhcmlhbnQgPSBtU3ltYm9sVGFibGUuaXNWYXJ5aW5nSW52YXJpYW50KGtOYW1lKTsK
LSAgICAgICAgICAgICAgICBtVmFyeWluZ3MtPnB1c2hfYmFjayhpbmZvKTsKLSAgICAgICAgICAg
ICAgICBtUG9zaXRpb25BZGRlZCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgY2FzZSBFdnFQb2ludFNpemU6Ci0gICAgICAgICAgICBpZiAoIW1Q
b2ludFNpemVBZGRlZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBWYXJ5aW5nIGlu
Zm87Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciBrTmFtZVtdID0gImdsX1BvaW50U2l6ZSI7
Ci0gICAgICAgICAgICAgICAgaW5mby5uYW1lID0ga05hbWU7Ci0gICAgICAgICAgICAgICAgaW5m
by5tYXBwZWROYW1lID0ga05hbWU7Ci0gICAgICAgICAgICAgICAgaW5mby50eXBlID0gR0xfRkxP
QVQ7Ci0gICAgICAgICAgICAgICAgaW5mby5hcnJheVNpemUgPSAwOwotICAgICAgICAgICAgICAg
IGluZm8ucHJlY2lzaW9uID0gR0xfTUVESVVNX0ZMT0FUOyAgLy8gRGVmaW5lZCBieSBzcGVjLgot
ICAgICAgICAgICAgICAgIGluZm8uc3RhdGljVXNlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBp
bmZvLmlzSW52YXJpYW50ID0gbVN5bWJvbFRhYmxlLmlzVmFyeWluZ0ludmFyaWFudChrTmFtZSk7
Ci0gICAgICAgICAgICAgICAgbVZhcnlpbmdzLT5wdXNoX2JhY2soaW5mbyk7Ci0gICAgICAgICAg
ICAgICAgbVBvaW50U2l6ZUFkZGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICBjYXNlIEV2cUxhc3RGcmFnRGF0YToKLSAgICAgICAgICAgIGlm
ICghbUxhc3RGcmFnRGF0YUFkZGVkKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFZh
cnlpbmcgaW5mbzsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyIGtOYW1lW10gPSAiZ2xfTGFz
dEZyYWdEYXRhIjsKLSAgICAgICAgICAgICAgICBpbmZvLm5hbWUgPSBrTmFtZTsKLSAgICAgICAg
ICAgICAgICBpbmZvLm1hcHBlZE5hbWUgPSBrTmFtZTsKLSAgICAgICAgICAgICAgICBpbmZvLnR5
cGUgPSBHTF9GTE9BVF9WRUM0OwotICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgVFZhcmlhYmxlKj4obVN5bWJvbFRhYmxlLmZpbmRCdWlsdEluKCJnbF9N
YXhEcmF3QnVmZmVycyIsIDEwMCkpLT5nZXRDb25zdFBvaW50ZXIoKS0+Z2V0SUNvbnN0KCk7Ci0g
ICAgICAgICAgICAgICAgaW5mby5wcmVjaXNpb24gPSBHTF9NRURJVU1fRkxPQVQ7ICAvLyBEZWZp
bmVkIGJ5IHNwZWMuCi0gICAgICAgICAgICAgICAgaW5mby5zdGF0aWNVc2UgPSB0cnVlOwotICAg
ICAgICAgICAgICAgIGluZm8uaXNJbnZhcmlhbnQgPSBtU3ltYm9sVGFibGUuaXNWYXJ5aW5nSW52
YXJpYW50KGtOYW1lKTsKLSAgICAgICAgICAgICAgICBtVmFyeWluZ3MtPnB1c2hfYmFjayhpbmZv
KTsKLSAgICAgICAgICAgICAgICBtTGFzdEZyYWdEYXRhQWRkZWQgPSB0cnVlOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIGNhc2UgRXZxRnJhZ0NvbG9yOgot
ICAgICAgICAgICAgICBpZiAoIW1GcmFnQ29sb3JBZGRlZCkKLSAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgT3V0cHV0VmFyaWFibGUgaW5mbzsKLSAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIga05hbWVbXSA9ICJnbF9GcmFnQ29sb3IiOwotICAgICAgICAgICAgICAgICAgaW5m
by5uYW1lICAgICAgICAgID0ga05hbWU7Ci0gICAgICAgICAgICAgICAgICBpbmZvLm1hcHBlZE5h
bWUgICAgPSBrTmFtZTsKLSAgICAgICAgICAgICAgICAgIGluZm8udHlwZSAgICAgICAgICA9IEdM
X0ZMT0FUX1ZFQzQ7Ci0gICAgICAgICAgICAgICAgICBpbmZvLmFycmF5U2l6ZSAgICAgPSAwOwot
ICAgICAgICAgICAgICAgICAgaW5mby5wcmVjaXNpb24gICAgID0gR0xfTUVESVVNX0ZMT0FUOyAg
Ly8gRGVmaW5lZCBieSBzcGVjLgotICAgICAgICAgICAgICAgICAgaW5mby5zdGF0aWNVc2UgPSB0
cnVlOwotICAgICAgICAgICAgICAgICAgbU91dHB1dFZhcmlhYmxlcy0+cHVzaF9iYWNrKGluZm8p
OwotICAgICAgICAgICAgICAgICAgbUZyYWdDb2xvckFkZGVkID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgY2FzZSBFdnFGcmFnRGF0YToK
LSAgICAgICAgICAgICAgaWYgKCFtRnJhZ0RhdGFBZGRlZCkKLSAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgT3V0cHV0VmFyaWFibGUgaW5mbzsKLSAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIga05hbWVbXSA9ICJnbF9GcmFnRGF0YSI7Ci0gICAgICAgICAgICAgICAgICBpbmZv
Lm5hbWUgICAgICAgICAgPSBrTmFtZTsKLSAgICAgICAgICAgICAgICAgIGluZm8ubWFwcGVkTmFt
ZSAgICA9IGtOYW1lOwotICAgICAgICAgICAgICAgICAgaW5mby50eXBlICAgICAgICAgID0gR0xf
RkxPQVRfVkVDNDsKLSAgICAgICAgICAgICAgICAgIGlmICg6OklzRXh0ZW5zaW9uRW5hYmxlZCht
RXh0ZW5zaW9uQmVoYXZpb3IsICJHTF9FWFRfZHJhd19idWZmZXJzIikpCi0gICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgaW5mby5hcnJheVNpemUgPSBzdGF0aWNfY2Fz
dDxjb25zdCBUVmFyaWFibGUgKj4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbVN5bWJvbFRhYmxlLmZpbmRCdWlsdEluKCJnbF9NYXhEcmF3QnVmZmVycyIsIDEw
MCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5nZXRDb25z
dFBvaW50ZXIoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+
Z2V0SUNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgaW5mby5hcnJheVNp
emUgPSAxOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgaW5mby5wcmVj
aXNpb24gPSBHTF9NRURJVU1fRkxPQVQ7ICAvLyBEZWZpbmVkIGJ5IHNwZWMuCi0gICAgICAgICAg
ICAgICAgICBpbmZvLnN0YXRpY1VzZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICBtT3V0cHV0
VmFyaWFibGVzLT5wdXNoX2JhY2soaW5mbyk7Ci0gICAgICAgICAgICAgICAgICBtRnJhZ0RhdGFB
ZGRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgIGNhc2UgRXZxRnJhZ0RlcHRoRVhUOgotICAgICAgICAgICAgICBpZiAoIW1GcmFnRGVw
dGhFWFRBZGRlZCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgT3V0cHV0VmFy
aWFibGUgaW5mbzsKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIga05hbWVbXSA9ICJnbF9G
cmFnRGVwdGhFWFQiOwotICAgICAgICAgICAgICAgICAgaW5mby5uYW1lICAgICAgICAgID0ga05h
bWU7Ci0gICAgICAgICAgICAgICAgICBpbmZvLm1hcHBlZE5hbWUgICAgPSBrTmFtZTsKLSAgICAg
ICAgICAgICAgICAgIGluZm8udHlwZSAgICAgICAgICA9IEdMX0ZMT0FUOwotICAgICAgICAgICAg
ICAgICAgaW5mby5hcnJheVNpemUgPSAwOwotICAgICAgICAgICAgICAgICAgaW5mby5wcmVjaXNp
b24gPQotICAgICAgICAgICAgICAgICAgICAgIEdMVmFyaWFibGVQcmVjaXNpb24oc3RhdGljX2Nh
c3Q8Y29uc3QgVFZhcmlhYmxlICo+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbigiZ2xfRnJhZ0RlcHRoRVhUIiwg
MTAwKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmdl
dFR5cGUoKSk7Ci0gICAgICAgICAgICAgICAgICBpbmZvLnN0YXRpY1VzZSA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgICBtT3V0cHV0VmFyaWFibGVzLT5wdXNoX2JhY2soaW5mbyk7Ci0gICAgICAg
ICAgICAgICAgICBtRnJhZ0RlcHRoRVhUQWRkZWQgPSB0cnVlOwotICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICBjYXNlIEV2cUZyYWdEZXB0aDoKLSAgICAg
ICAgICAgICAgaWYgKCFtRnJhZ0RlcHRoQWRkZWQpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgIE91dHB1dFZhcmlhYmxlIGluZm87Ci0gICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyIGtOYW1lW10gPSAiZ2xfRnJhZ0RlcHRoIjsKLSAgICAgICAgICAgICAgICAgIGluZm8ubmFt
ZSAgICAgICAgICA9IGtOYW1lOwotICAgICAgICAgICAgICAgICAgaW5mby5tYXBwZWROYW1lICAg
ID0ga05hbWU7Ci0gICAgICAgICAgICAgICAgICBpbmZvLnR5cGUgICAgICAgICAgPSBHTF9GTE9B
VDsKLSAgICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplICAgICA9IDA7Ci0gICAgICAgICAg
ICAgICAgICBpbmZvLnByZWNpc2lvbiAgICAgPSBHTF9ISUdIX0ZMT0FUOwotICAgICAgICAgICAg
ICAgICAgaW5mby5zdGF0aWNVc2UgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgbU91dHB1dFZh
cmlhYmxlcy0+cHVzaF9iYWNrKGluZm8pOwotICAgICAgICAgICAgICAgICAgbUZyYWdEZXB0aEFk
ZGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgY2FzZSBFdnFTZWNvbmRhcnlGcmFnQ29sb3JFWFQ6Ci0gICAgICAgICAgICAgIGlmICgh
bVNlY29uZGFyeUZyYWdDb2xvckVYVEFkZGVkKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICBPdXRwdXRWYXJpYWJsZSBpbmZvOwotICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciBrTmFtZVtdID0gImdsX1NlY29uZGFyeUZyYWdDb2xvckVYVCI7Ci0gICAgICAgICAgICAgICAg
ICBpbmZvLm5hbWUgICAgICAgICAgPSBrTmFtZTsKLSAgICAgICAgICAgICAgICAgIGluZm8ubWFw
cGVkTmFtZSAgICA9IGtOYW1lOwotICAgICAgICAgICAgICAgICAgaW5mby50eXBlICAgICAgICAg
ID0gR0xfRkxPQVRfVkVDNDsKLSAgICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplICAgICA9
IDA7Ci0gICAgICAgICAgICAgICAgICBpbmZvLnByZWNpc2lvbiAgICAgPSBHTF9NRURJVU1fRkxP
QVQ7ICAvLyBEZWZpbmVkIGJ5IHNwZWMuCi0gICAgICAgICAgICAgICAgICBpbmZvLnN0YXRpY1Vz
ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICBtT3V0cHV0VmFyaWFibGVzLT5wdXNoX2JhY2so
aW5mbyk7Ci0gICAgICAgICAgICAgICAgICBtU2Vjb25kYXJ5RnJhZ0NvbG9yRVhUQWRkZWQgPSB0
cnVlOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICBj
YXNlIEV2cVNlY29uZGFyeUZyYWdEYXRhRVhUOgotICAgICAgICAgICAgICBpZiAoIW1TZWNvbmRh
cnlGcmFnRGF0YUVYVEFkZGVkKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBP
dXRwdXRWYXJpYWJsZSBpbmZvOwotICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciBrTmFtZVtd
ID0gImdsX1NlY29uZGFyeUZyYWdEYXRhRVhUIjsKLSAgICAgICAgICAgICAgICAgIGluZm8ubmFt
ZSAgICAgICAgICA9IGtOYW1lOwotICAgICAgICAgICAgICAgICAgaW5mby5tYXBwZWROYW1lICAg
ID0ga05hbWU7Ci0gICAgICAgICAgICAgICAgICBpbmZvLnR5cGUgICAgICAgICAgPSBHTF9GTE9B
VF9WRUM0OwotCi0gICAgICAgICAgICAgICAgICBjb25zdCBUVmFyaWFibGUgKm1heER1YWxTb3Vy
Y2VEcmF3QnVmZmVyc1ZhciA9IHN0YXRpY19jYXN0PGNvbnN0IFRWYXJpYWJsZSAqPigKLSAgICAg
ICAgICAgICAgICAgICAgICBtU3ltYm9sVGFibGUuZmluZEJ1aWx0SW4oImdsX01heER1YWxTb3Vy
Y2VEcmF3QnVmZmVyc0VYVCIsIDEwMCkpOwotICAgICAgICAgICAgICAgICAgaW5mby5hcnJheVNp
emUgPSBtYXhEdWFsU291cmNlRHJhd0J1ZmZlcnNWYXItPmdldENvbnN0UG9pbnRlcigpLT5nZXRJ
Q29uc3QoKTsKLSAgICAgICAgICAgICAgICAgIGluZm8ucHJlY2lzaW9uID0gR0xfTUVESVVNX0ZM
T0FUOyAgLy8gRGVmaW5lZCBieSBzcGVjLgotICAgICAgICAgICAgICAgICAgaW5mby5zdGF0aWNV
c2UgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgbU91dHB1dFZhcmlhYmxlcy0+cHVzaF9iYWNr
KGluZm8pOwotICAgICAgICAgICAgICAgICAgbVNlY29uZGFyeUZyYWdEYXRhRVhUQWRkZWQgPSB0
cnVlOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEV2cUZyYWdDb29y
ZDoKKyAgICAgICAgICAgICAgICBpZiAoIW1GcmFnQ29vcmRBZGRlZCkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIFZhcnlpbmcgaW5mbzsKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciBrTmFtZVtdID0gImdsX0ZyYWdDb29yZCI7CisgICAgICAgICAgICAgICAg
ICAgIGluZm8ubmFtZSAgICAgICAgICA9IGtOYW1lOworICAgICAgICAgICAgICAgICAgICBpbmZv
Lm1hcHBlZE5hbWUgICAgPSBrTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby50eXBlICAg
ICAgICAgID0gR0xfRkxPQVRfVkVDNDsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5hcnJheVNp
emUgICAgID0gMDsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5wcmVjaXNpb24gICAgID0gR0xf
TUVESVVNX0ZMT0FUOyAgLy8gRGVmaW5lZCBieSBzcGVjLgorICAgICAgICAgICAgICAgICAgICBp
bmZvLnN0YXRpY1VzZSAgICAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpbmZvLmlzSW52
YXJpYW50ICAgPSBtU3ltYm9sVGFibGUuaXNWYXJ5aW5nSW52YXJpYW50KGtOYW1lKTsKKyAgICAg
ICAgICAgICAgICAgICAgbVZhcnlpbmdzLT5wdXNoX2JhY2soaW5mbyk7CisgICAgICAgICAgICAg
ICAgICAgIG1GcmFnQ29vcmRBZGRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNhc2UgRXZxRnJvbnRGYWNpbmc6CisgICAg
ICAgICAgICAgICAgaWYgKCFtRnJvbnRGYWNpbmdBZGRlZCkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIFZhcnlpbmcgaW5mbzsKKyAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciBrTmFtZVtdID0gImdsX0Zyb250RmFjaW5nIjsKKyAgICAgICAgICAgICAgICAgICAg
aW5mby5uYW1lICAgICAgICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAgICAgIGluZm8ubWFw
cGVkTmFtZSAgICA9IGtOYW1lOworICAgICAgICAgICAgICAgICAgICBpbmZvLnR5cGUgICAgICAg
ICAgPSBHTF9CT09MOworICAgICAgICAgICAgICAgICAgICBpbmZvLmFycmF5U2l6ZSAgICAgPSAw
OworICAgICAgICAgICAgICAgICAgICBpbmZvLnByZWNpc2lvbiAgICAgPSBHTF9OT05FOworICAg
ICAgICAgICAgICAgICAgICBpbmZvLnN0YXRpY1VzZSAgICAgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICBpbmZvLmlzSW52YXJpYW50ICAgPSBtU3ltYm9sVGFibGUuaXNWYXJ5aW5nSW52YXJp
YW50KGtOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgbVZhcnlpbmdzLT5wdXNoX2JhY2soaW5m
byk7CisgICAgICAgICAgICAgICAgICAgIG1Gcm9udEZhY2luZ0FkZGVkID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2FzZSBF
dnFQb2ludENvb3JkOgorICAgICAgICAgICAgICAgIGlmICghbVBvaW50Q29vcmRBZGRlZCkKKyAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFZhcnlpbmcgaW5mbzsKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciBrTmFtZVtdID0gImdsX1BvaW50Q29vcmQiOworICAg
ICAgICAgICAgICAgICAgICBpbmZvLm5hbWUgICAgICAgICAgPSBrTmFtZTsKKyAgICAgICAgICAg
ICAgICAgICAgaW5mby5tYXBwZWROYW1lICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAgICAg
IGluZm8udHlwZSAgICAgICAgICA9IEdMX0ZMT0FUX1ZFQzI7CisgICAgICAgICAgICAgICAgICAg
IGluZm8uYXJyYXlTaXplICAgICA9IDA7CisgICAgICAgICAgICAgICAgICAgIGluZm8ucHJlY2lz
aW9uICAgICA9IEdMX01FRElVTV9GTE9BVDsgIC8vIERlZmluZWQgYnkgc3BlYy4KKyAgICAgICAg
ICAgICAgICAgICAgaW5mby5zdGF0aWNVc2UgICAgID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgaW5mby5pc0ludmFyaWFudCAgID0gbVN5bWJvbFRhYmxlLmlzVmFyeWluZ0ludmFyaWFudChr
TmFtZSk7CisgICAgICAgICAgICAgICAgICAgIG1WYXJ5aW5ncy0+cHVzaF9iYWNrKGluZm8pOwor
ICAgICAgICAgICAgICAgICAgICBtUG9pbnRDb29yZEFkZGVkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2FzZSBFdnFJbnN0
YW5jZUlEOgorICAgICAgICAgICAgICAgIGlmICghbUluc3RhbmNlSURBZGRlZCkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZSBpbmZvOworICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyIGtOYW1lW10gPSAiZ2xfSW5zdGFuY2VJRCI7CisgICAgICAg
ICAgICAgICAgICAgIGluZm8ubmFtZSAgICAgICAgICA9IGtOYW1lOworICAgICAgICAgICAgICAg
ICAgICBpbmZvLm1hcHBlZE5hbWUgICAgPSBrTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgaW5m
by50eXBlICAgICAgICAgID0gR0xfSU5UOworICAgICAgICAgICAgICAgICAgICBpbmZvLmFycmF5
U2l6ZSAgICAgPSAwOworICAgICAgICAgICAgICAgICAgICBpbmZvLnByZWNpc2lvbiAgICAgPSBH
TF9ISUdIX0lOVDsgIC8vIERlZmluZWQgYnkgc3BlYy4KKyAgICAgICAgICAgICAgICAgICAgaW5m
by5zdGF0aWNVc2UgICAgID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5sb2NhdGlv
biAgICAgID0gLTE7CisgICAgICAgICAgICAgICAgICAgIG1BdHRyaWJzLT5wdXNoX2JhY2soaW5m
byk7CisgICAgICAgICAgICAgICAgICAgIG1JbnN0YW5jZUlEQWRkZWQgPSB0cnVlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjYXNlIEV2
cVZlcnRleElEOgorICAgICAgICAgICAgICAgIGlmICghbVZlcnRleElEQWRkZWQpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUgaW5mbzsKKyAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciBrTmFtZVtdID0gImdsX1ZlcnRleElEIjsKKyAgICAgICAg
ICAgICAgICAgICAgaW5mby5uYW1lICAgICAgICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAg
ICAgIGluZm8ubWFwcGVkTmFtZSAgICA9IGtOYW1lOworICAgICAgICAgICAgICAgICAgICBpbmZv
LnR5cGUgICAgICAgICAgPSBHTF9JTlQ7CisgICAgICAgICAgICAgICAgICAgIGluZm8uYXJyYXlT
aXplICAgICA9IDA7CisgICAgICAgICAgICAgICAgICAgIGluZm8ucHJlY2lzaW9uICAgICA9IEdM
X0hJR0hfSU5UOyAgLy8gRGVmaW5lZCBieSBzcGVjLgorICAgICAgICAgICAgICAgICAgICBpbmZv
LnN0YXRpY1VzZSAgICAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpbmZvLmxvY2F0aW9u
ICAgICAgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgbUF0dHJpYnMtPnB1c2hfYmFjayhpbmZv
KTsKKyAgICAgICAgICAgICAgICAgICAgbVZlcnRleElEQWRkZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjYXNlIEV2cVBv
c2l0aW9uOgorICAgICAgICAgICAgICAgIGlmICghbVBvc2l0aW9uQWRkZWQpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBWYXJ5aW5nIGluZm87CisgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIga05hbWVbXSA9ICJnbF9Qb3NpdGlvbiI7CisgICAgICAgICAgICAg
ICAgICAgIGluZm8ubmFtZSAgICAgICAgICA9IGtOYW1lOworICAgICAgICAgICAgICAgICAgICBp
bmZvLm1hcHBlZE5hbWUgICAgPSBrTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby50eXBl
ICAgICAgICAgID0gR0xfRkxPQVRfVkVDNDsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5hcnJh
eVNpemUgICAgID0gMDsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5wcmVjaXNpb24gICAgID0g
R0xfSElHSF9GTE9BVDsgIC8vIERlZmluZWQgYnkgc3BlYy4KKyAgICAgICAgICAgICAgICAgICAg
aW5mby5zdGF0aWNVc2UgICAgID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5pc0lu
dmFyaWFudCAgID0gbVN5bWJvbFRhYmxlLmlzVmFyeWluZ0ludmFyaWFudChrTmFtZSk7CisgICAg
ICAgICAgICAgICAgICAgIG1WYXJ5aW5ncy0+cHVzaF9iYWNrKGluZm8pOworICAgICAgICAgICAg
ICAgICAgICBtUG9zaXRpb25BZGRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNhc2UgRXZxUG9pbnRTaXplOgorICAgICAg
ICAgICAgICAgIGlmICghbVBvaW50U2l6ZUFkZGVkKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgVmFyeWluZyBpbmZvOworICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyIGtOYW1lW10gPSAiZ2xfUG9pbnRTaXplIjsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5u
YW1lICAgICAgICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAgICAgIGluZm8ubWFwcGVkTmFt
ZSAgICA9IGtOYW1lOworICAgICAgICAgICAgICAgICAgICBpbmZvLnR5cGUgICAgICAgICAgPSBH
TF9GTE9BVDsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5hcnJheVNpemUgICAgID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgaW5mby5wcmVjaXNpb24gICAgID0gR0xfTUVESVVNX0ZMT0FUOyAg
Ly8gRGVmaW5lZCBieSBzcGVjLgorICAgICAgICAgICAgICAgICAgICBpbmZvLnN0YXRpY1VzZSAg
ICAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpbmZvLmlzSW52YXJpYW50ICAgPSBtU3lt
Ym9sVGFibGUuaXNWYXJ5aW5nSW52YXJpYW50KGtOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAg
bVZhcnlpbmdzLT5wdXNoX2JhY2soaW5mbyk7CisgICAgICAgICAgICAgICAgICAgIG1Qb2ludFNp
emVBZGRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIGNhc2UgRXZxTGFzdEZyYWdEYXRhOgorICAgICAgICAgICAgICAgIGlm
ICghbUxhc3RGcmFnRGF0YUFkZGVkKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgVmFyeWluZyBpbmZvOworICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyIGtOYW1l
W10gPSAiZ2xfTGFzdEZyYWdEYXRhIjsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5uYW1lICAg
ICAgICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAgICAgIGluZm8ubWFwcGVkTmFtZSAgICA9
IGtOYW1lOworICAgICAgICAgICAgICAgICAgICBpbmZvLnR5cGUgICAgICAgICAgPSBHTF9GTE9B
VF9WRUM0OworICAgICAgICAgICAgICAgICAgICBpbmZvLmFycmF5U2l6ZSAgICAgPSBzdGF0aWNf
Y2FzdDxjb25zdCBUVmFyaWFibGUgKj4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbigiZ2xfTWF4RHJhd0J1ZmZlcnMiLCAx
MDApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmdldENvbnN0
UG9pbnRlcigpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+Z2V0
SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgIGluZm8ucHJlY2lzaW9uICAgPSBHTF9NRURJ
VU1fRkxPQVQ7ICAvLyBEZWZpbmVkIGJ5IHNwZWMuCisgICAgICAgICAgICAgICAgICAgIGluZm8u
c3RhdGljVXNlICAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpbmZvLmlzSW52YXJpYW50
ID0gbVN5bWJvbFRhYmxlLmlzVmFyeWluZ0ludmFyaWFudChrTmFtZSk7CisgICAgICAgICAgICAg
ICAgICAgIG1WYXJ5aW5ncy0+cHVzaF9iYWNrKGluZm8pOworICAgICAgICAgICAgICAgICAgICBt
TGFzdEZyYWdEYXRhQWRkZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICBjYXNlIEV2cUZyYWdDb2xvcjoKKyAgICAgICAgICAg
ICAgICBpZiAoIW1GcmFnQ29sb3JBZGRlZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIE91dHB1dFZhcmlhYmxlIGluZm87CisgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIga05hbWVbXSA9ICJnbF9GcmFnQ29sb3IiOworICAgICAgICAgICAgICAgICAgICBpbmZv
Lm5hbWUgICAgICAgICAgPSBrTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5tYXBwZWRO
YW1lICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAgICAgIGluZm8udHlwZSAgICAgICAgICA9
IEdMX0ZMT0FUX1ZFQzQ7CisgICAgICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplICAgICA9
IDA7CisgICAgICAgICAgICAgICAgICAgIGluZm8ucHJlY2lzaW9uICAgICA9IEdMX01FRElVTV9G
TE9BVDsgIC8vIERlZmluZWQgYnkgc3BlYy4KKyAgICAgICAgICAgICAgICAgICAgaW5mby5zdGF0
aWNVc2UgICAgID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbU91dHB1dFZhcmlhYmxlcy0+
cHVzaF9iYWNrKGluZm8pOworICAgICAgICAgICAgICAgICAgICBtRnJhZ0NvbG9yQWRkZWQgPSB0
cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBjYXNlIEV2cUZyYWdEYXRhOgorICAgICAgICAgICAgICAgIGlmICghbUZyYWdEYXRhQWRk
ZWQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBPdXRwdXRWYXJpYWJs
ZSBpbmZvOworICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyIGtOYW1lW10gPSAiZ2xfRnJh
Z0RhdGEiOworICAgICAgICAgICAgICAgICAgICBpbmZvLm5hbWUgICAgICAgICAgPSBrTmFtZTsK
KyAgICAgICAgICAgICAgICAgICAgaW5mby5tYXBwZWROYW1lICAgID0ga05hbWU7CisgICAgICAg
ICAgICAgICAgICAgIGluZm8udHlwZSAgICAgICAgICA9IEdMX0ZMT0FUX1ZFQzQ7CisgICAgICAg
ICAgICAgICAgICAgIGlmICg6OklzRXh0ZW5zaW9uRW5hYmxlZChtRXh0ZW5zaW9uQmVoYXZpb3Is
ICJHTF9FWFRfZHJhd19idWZmZXJzIikpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplID0gc3RhdGljX2Nhc3Q8Y29uc3QgVFZhcmlh
YmxlICo+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN5
bWJvbFRhYmxlLmZpbmRCdWlsdEluKCJnbF9NYXhEcmF3QnVmZmVycyIsIDEwMCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmdldENvbnN0UG9pbnRlcigp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmdldElDb25z
dCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5hcnJheVNp
emUgPSAxOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGluZm8u
cHJlY2lzaW9uID0gR0xfTUVESVVNX0ZMT0FUOyAgLy8gRGVmaW5lZCBieSBzcGVjLgorICAgICAg
ICAgICAgICAgICAgICBpbmZvLnN0YXRpY1VzZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
IG1PdXRwdXRWYXJpYWJsZXMtPnB1c2hfYmFjayhpbmZvKTsKKyAgICAgICAgICAgICAgICAgICAg
bUZyYWdEYXRhQWRkZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICBjYXNlIEV2cUZyYWdEZXB0aEVYVDoKKyAgICAgICAgICAg
ICAgICBpZiAoIW1GcmFnRGVwdGhFWFRBZGRlZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIE91dHB1dFZhcmlhYmxlIGluZm87CisgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIga05hbWVbXSA9ICJnbF9GcmFnRGVwdGhFWFQiOworICAgICAgICAgICAgICAgICAg
ICBpbmZvLm5hbWUgICAgICAgICAgPSBrTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5t
YXBwZWROYW1lICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAgICAgIGluZm8udHlwZSAgICAg
ICAgICA9IEdMX0ZMT0FUOworICAgICAgICAgICAgICAgICAgICBpbmZvLmFycmF5U2l6ZSAgICAg
PSAwOworICAgICAgICAgICAgICAgICAgICBpbmZvLnByZWNpc2lvbiA9CisgICAgICAgICAgICAg
ICAgICAgICAgICBHTFZhcmlhYmxlUHJlY2lzaW9uKHN0YXRpY19jYXN0PGNvbnN0IFRWYXJpYWJs
ZSAqPigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1T
eW1ib2xUYWJsZS5maW5kQnVpbHRJbigiZ2xfRnJhZ0RlcHRoRVhUIiwgMTAwKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+Z2V0VHlwZSgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgaW5mby5zdGF0aWNVc2UgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICBtT3V0cHV0VmFyaWFibGVzLT5wdXNoX2JhY2soaW5mbyk7CisgICAgICAgICAgICAgICAg
ICAgIG1GcmFnRGVwdGhFWFRBZGRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNhc2UgRXZxRnJhZ0RlcHRoOgorICAgICAg
ICAgICAgICAgIGlmICghbUZyYWdEZXB0aEFkZGVkKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgT3V0cHV0VmFyaWFibGUgaW5mbzsKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciBrTmFtZVtdID0gImdsX0ZyYWdEZXB0aCI7CisgICAgICAgICAgICAgICAgICAg
IGluZm8ubmFtZSAgICAgICAgICA9IGtOYW1lOworICAgICAgICAgICAgICAgICAgICBpbmZvLm1h
cHBlZE5hbWUgICAgPSBrTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby50eXBlICAgICAg
ICAgID0gR0xfRkxPQVQ7CisgICAgICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplICAgICA9
IDA7CisgICAgICAgICAgICAgICAgICAgIGluZm8ucHJlY2lzaW9uICAgICA9IEdMX0hJR0hfRkxP
QVQ7CisgICAgICAgICAgICAgICAgICAgIGluZm8uc3RhdGljVXNlICAgICA9IHRydWU7CisgICAg
ICAgICAgICAgICAgICAgIG1PdXRwdXRWYXJpYWJsZXMtPnB1c2hfYmFjayhpbmZvKTsKKyAgICAg
ICAgICAgICAgICAgICAgbUZyYWdEZXB0aEFkZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2FzZSBFdnFTZWNvbmRhcnlG
cmFnQ29sb3JFWFQ6CisgICAgICAgICAgICAgICAgaWYgKCFtU2Vjb25kYXJ5RnJhZ0NvbG9yRVhU
QWRkZWQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBPdXRwdXRWYXJp
YWJsZSBpbmZvOworICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyIGtOYW1lW10gPSAiZ2xf
U2Vjb25kYXJ5RnJhZ0NvbG9yRVhUIjsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5uYW1lICAg
ICAgICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAgICAgIGluZm8ubWFwcGVkTmFtZSAgICA9
IGtOYW1lOworICAgICAgICAgICAgICAgICAgICBpbmZvLnR5cGUgICAgICAgICAgPSBHTF9GTE9B
VF9WRUM0OworICAgICAgICAgICAgICAgICAgICBpbmZvLmFycmF5U2l6ZSAgICAgPSAwOworICAg
ICAgICAgICAgICAgICAgICBpbmZvLnByZWNpc2lvbiAgICAgPSBHTF9NRURJVU1fRkxPQVQ7ICAv
LyBEZWZpbmVkIGJ5IHNwZWMuCisgICAgICAgICAgICAgICAgICAgIGluZm8uc3RhdGljVXNlICAg
ICA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1PdXRwdXRWYXJpYWJsZXMtPnB1c2hfYmFj
ayhpbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgbVNlY29uZGFyeUZyYWdDb2xvckVYVEFkZGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgY2FzZSBFdnFTZWNvbmRhcnlGcmFnRGF0YUVYVDoKKyAgICAgICAgICAgICAgICBp
ZiAoIW1TZWNvbmRhcnlGcmFnRGF0YUVYVEFkZGVkKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgT3V0cHV0VmFyaWFibGUgaW5mbzsKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciBrTmFtZVtdID0gImdsX1NlY29uZGFyeUZyYWdEYXRhRVhUIjsKKyAgICAgICAg
ICAgICAgICAgICAgaW5mby5uYW1lICAgICAgICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAg
ICAgIGluZm8ubWFwcGVkTmFtZSAgICA9IGtOYW1lOworICAgICAgICAgICAgICAgICAgICBpbmZv
LnR5cGUgICAgICAgICAgPSBHTF9GTE9BVF9WRUM0OworCisgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRWYXJpYWJsZSAqbWF4RHVhbFNvdXJjZURyYXdCdWZmZXJzVmFyID0gc3RhdGljX2Nhc3Q8
Y29uc3QgVFZhcmlhYmxlICo+KAorICAgICAgICAgICAgICAgICAgICAgICAgbVN5bWJvbFRhYmxl
LmZpbmRCdWlsdEluKCJnbF9NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnNFWFQiLCAxMDApKTsKKyAg
ICAgICAgICAgICAgICAgICAgaW5mby5hcnJheVNpemUgPSBtYXhEdWFsU291cmNlRHJhd0J1ZmZl
cnNWYXItPmdldENvbnN0UG9pbnRlcigpLT5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAg
ICAgaW5mby5wcmVjaXNpb24gPSBHTF9NRURJVU1fRkxPQVQ7ICAvLyBEZWZpbmVkIGJ5IHNwZWMu
CisgICAgICAgICAgICAgICAgICAgIGluZm8uc3RhdGljVXNlID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgbU91dHB1dFZhcmlhYmxlcy0+cHVzaF9iYWNrKGluZm8pOworICAgICAgICAgICAg
ICAgICAgICBtU2Vjb25kYXJ5RnJhZ0RhdGFFWFRBZGRlZCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHZhcikKQEAgLTQ0
NCwxNjkgKzQ0OCwxODQgQEAgdm9pZCBDb2xsZWN0VmFyaWFibGVzOjp2aXNpdFN5bWJvbChUSW50
ZXJtU3ltYm9sICpzeW1ib2wpCiAgICAgfQogfQogCi1jbGFzcyBOYW1lSGFzaGluZ1RyYXZlcnNl
ciA6IHB1YmxpYyBHZXRWYXJpYWJsZVRyYXZlcnNlcgordm9pZCBDb2xsZWN0VmFyaWFibGVzOjpz
ZXRDb21tb25WYXJpYWJsZVByb3BlcnRpZXMoY29uc3QgVFR5cGUgJnR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hhZGVyVmFyaWFibGUgKnZhcmlhYmxlT3V0KSBjb25zdAogewotICBwdWJsaWM6Ci0gICAgTmFt
ZUhhc2hpbmdUcmF2ZXJzZXIoU2hIYXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rpb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSkKLSAgICAg
ICAgOiBHZXRWYXJpYWJsZVRyYXZlcnNlcihzeW1ib2xUYWJsZSksCi0gICAgICAgICAgbUhhc2hG
dW5jdGlvbihoYXNoRnVuY3Rpb24pCi0gICAge30KLQotICBwcml2YXRlOgotICAgIHZvaWQgdmlz
aXRWYXJpYWJsZShTaGFkZXJWYXJpYWJsZSAqdmFyaWFibGUpIG92ZXJyaWRlCisgICAgQVNTRVJU
KHZhcmlhYmxlT3V0KTsKKworICAgIGNvbnN0IFRTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IHR5cGUu
Z2V0U3RydWN0KCk7CisKKyAgICBpZiAoIXN0cnVjdHVyZSkKICAgICB7Ci0gICAgICAgIFRTdHJp
bmcgc3RyaW5nTmFtZSA9IFRTdHJpbmcodmFyaWFibGUtPm5hbWUuY19zdHIoKSk7Ci0gICAgICAg
IHZhcmlhYmxlLT5tYXBwZWROYW1lID0gVEludGVybVRyYXZlcnNlcjo6aGFzaChzdHJpbmdOYW1l
LCBtSGFzaEZ1bmN0aW9uKS5jX3N0cigpOworICAgICAgICB2YXJpYWJsZU91dC0+dHlwZSAgICAg
ID0gR0xWYXJpYWJsZVR5cGUodHlwZSk7CisgICAgICAgIHZhcmlhYmxlT3V0LT5wcmVjaXNpb24g
PSBHTFZhcmlhYmxlUHJlY2lzaW9uKHR5cGUpOwogICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICAvLyBOb3RlOiB0aGlzIGVudW0gdmFsdWUgaXMgbm90IGV4cG9zZWQgb3V0c2lkZSBBTkdM
RQorICAgICAgICB2YXJpYWJsZU91dC0+dHlwZSAgICAgICA9IEdMX1NUUlVDVF9BTkdMRVg7Cisg
ICAgICAgIHZhcmlhYmxlT3V0LT5zdHJ1Y3ROYW1lID0gc3RydWN0dXJlLT5uYW1lKCkuY19zdHIo
KTsKKworICAgICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSBzdHJ1Y3R1cmUtPmZpZWxk
cygpOwogCi0gICAgU2hIYXNoRnVuY3Rpb242NCBtSGFzaEZ1bmN0aW9uOwotfTsKKyAgICAgICAg
Zm9yIChURmllbGQgKmZpZWxkIDogZmllbGRzKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBS
ZWdhcmRsZXNzIG9mIHRoZSB2YXJpYWJsZSB0eXBlICh1bmlmb3JtLCBpbi9vdXQgZXRjLikgaXRz
IGZpZWxkcyBhcmUgYWx3YXlzIHBsYWluCisgICAgICAgICAgICAvLyBTaGFkZXJWYXJpYWJsZSBv
YmplY3RzLgorICAgICAgICAgICAgU2hhZGVyVmFyaWFibGUgZmllbGRWYXJpYWJsZTsKKyAgICAg
ICAgICAgIHNldENvbW1vblZhcmlhYmxlUHJvcGVydGllcygqZmllbGQtPnR5cGUoKSwgZmllbGQt
Pm5hbWUoKSwgJmZpZWxkVmFyaWFibGUpOworICAgICAgICAgICAgdmFyaWFibGVPdXQtPmZpZWxk
cy5wdXNoX2JhY2soZmllbGRWYXJpYWJsZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgdmFyaWFi
bGVPdXQtPm5hbWUgICAgICAgPSBuYW1lLmNfc3RyKCk7CisgICAgdmFyaWFibGVPdXQtPm1hcHBl
ZE5hbWUgPSBUSW50ZXJtVHJhdmVyc2VyOjpoYXNoKG5hbWUsIG1IYXNoRnVuY3Rpb24pLmNfc3Ry
KCk7CisgICAgdmFyaWFibGVPdXQtPmFycmF5U2l6ZSAgPSB0eXBlLmdldEFycmF5U2l6ZSgpOwor
fQogCi0vLyBBdHRyaWJ1dGVzLCB3aGljaCBjYW5ub3QgaGF2ZSBzdHJ1Y3QgZmllbGRzLCBhcmUg
YSBzcGVjaWFsIGNhc2UKLXRlbXBsYXRlIDw+Ci12b2lkIENvbGxlY3RWYXJpYWJsZXM6OnZpc2l0
VmFyaWFibGUoY29uc3QgVEludGVybVN5bWJvbCAqdmFyaWFibGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8QXR0cmlidXRlPiAqaW5mb0xpc3QpIGNv
bnN0CitBdHRyaWJ1dGUgQ29sbGVjdFZhcmlhYmxlczo6cmVjb3JkQXR0cmlidXRlKGNvbnN0IFRJ
bnRlcm1TeW1ib2wgJnZhcmlhYmxlKSBjb25zdAogewotICAgIEFTU0VSVCh2YXJpYWJsZSk7Ci0g
ICAgY29uc3QgVFR5cGUgJnR5cGUgPSB2YXJpYWJsZS0+Z2V0VHlwZSgpOworICAgIGNvbnN0IFRU
eXBlICZ0eXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpOwogICAgIEFTU0VSVCghdHlwZS5nZXRTdHJ1
Y3QoKSk7CiAKICAgICBBdHRyaWJ1dGUgYXR0cmlidXRlOworICAgIHNldENvbW1vblZhcmlhYmxl
UHJvcGVydGllcyh0eXBlLCB2YXJpYWJsZS5nZXRTeW1ib2woKSwgJmF0dHJpYnV0ZSk7CiAKLSAg
ICBhdHRyaWJ1dGUudHlwZSA9IEdMVmFyaWFibGVUeXBlKHR5cGUpOwotICAgIGF0dHJpYnV0ZS5w
cmVjaXNpb24gPSBHTFZhcmlhYmxlUHJlY2lzaW9uKHR5cGUpOwotICAgIGF0dHJpYnV0ZS5uYW1l
ID0gdmFyaWFibGUtPmdldFN5bWJvbCgpLmNfc3RyKCk7Ci0gICAgYXR0cmlidXRlLmFycmF5U2l6
ZSAgPSB0eXBlLmdldEFycmF5U2l6ZSgpOwotICAgIGF0dHJpYnV0ZS5tYXBwZWROYW1lID0gVElu
dGVybVRyYXZlcnNlcjo6aGFzaCh2YXJpYWJsZS0+Z2V0U3ltYm9sKCksIG1IYXNoRnVuY3Rpb24p
LmNfc3RyKCk7Ci0gICAgYXR0cmlidXRlLmxvY2F0aW9uID0gdmFyaWFibGUtPmdldFR5cGUoKS5n
ZXRMYXlvdXRRdWFsaWZpZXIoKS5sb2NhdGlvbjsKLQotICAgIGluZm9MaXN0LT5wdXNoX2JhY2so
YXR0cmlidXRlKTsKKyAgICBhdHRyaWJ1dGUubG9jYXRpb24gPSB0eXBlLmdldExheW91dFF1YWxp
ZmllcigpLmxvY2F0aW9uOworICAgIHJldHVybiBhdHRyaWJ1dGU7CiB9CiAKLXRlbXBsYXRlIDw+
Ci12b2lkIENvbGxlY3RWYXJpYWJsZXM6OnZpc2l0VmFyaWFibGUoY29uc3QgVEludGVybVN5bWJv
bCAqdmFyaWFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2
ZWN0b3I8T3V0cHV0VmFyaWFibGU+ICppbmZvTGlzdCkgY29uc3QKK091dHB1dFZhcmlhYmxlIENv
bGxlY3RWYXJpYWJsZXM6OnJlY29yZE91dHB1dFZhcmlhYmxlKGNvbnN0IFRJbnRlcm1TeW1ib2wg
JnZhcmlhYmxlKSBjb25zdAogewotICAgIEFTU0VSVCh2YXJpYWJsZSk7Ci0gICAgY29uc3QgVFR5
cGUgJnR5cGUgPSB2YXJpYWJsZS0+Z2V0VHlwZSgpOworICAgIGNvbnN0IFRUeXBlICZ0eXBlID0g
dmFyaWFibGUuZ2V0VHlwZSgpOwogICAgIEFTU0VSVCghdHlwZS5nZXRTdHJ1Y3QoKSk7CiAKLSAg
ICBPdXRwdXRWYXJpYWJsZSBhdHRyaWJ1dGU7CisgICAgT3V0cHV0VmFyaWFibGUgb3V0cHV0VmFy
aWFibGU7CisgICAgc2V0Q29tbW9uVmFyaWFibGVQcm9wZXJ0aWVzKHR5cGUsIHZhcmlhYmxlLmdl
dFN5bWJvbCgpLCAmb3V0cHV0VmFyaWFibGUpOwogCi0gICAgYXR0cmlidXRlLnR5cGUgICAgICAg
PSBHTFZhcmlhYmxlVHlwZSh0eXBlKTsKLSAgICBhdHRyaWJ1dGUucHJlY2lzaW9uICA9IEdMVmFy
aWFibGVQcmVjaXNpb24odHlwZSk7Ci0gICAgYXR0cmlidXRlLm5hbWUgICAgICAgPSB2YXJpYWJs
ZS0+Z2V0U3ltYm9sKCkuY19zdHIoKTsKLSAgICBhdHRyaWJ1dGUuYXJyYXlTaXplICA9IHR5cGUu
Z2V0QXJyYXlTaXplKCk7Ci0gICAgYXR0cmlidXRlLm1hcHBlZE5hbWUgPSBUSW50ZXJtVHJhdmVy
c2VyOjpoYXNoKHZhcmlhYmxlLT5nZXRTeW1ib2woKSwgbUhhc2hGdW5jdGlvbikuY19zdHIoKTsK
LSAgICBhdHRyaWJ1dGUubG9jYXRpb24gICA9IHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0TGF5b3V0
UXVhbGlmaWVyKCkubG9jYXRpb247CisgICAgb3V0cHV0VmFyaWFibGUubG9jYXRpb24gPSB0eXBl
LmdldExheW91dFF1YWxpZmllcigpLmxvY2F0aW9uOworICAgIHJldHVybiBvdXRwdXRWYXJpYWJs
ZTsKK30KIAotICAgIGluZm9MaXN0LT5wdXNoX2JhY2soYXR0cmlidXRlKTsKK1ZhcnlpbmcgQ29s
bGVjdFZhcmlhYmxlczo6cmVjb3JkVmFyeWluZyhjb25zdCBUSW50ZXJtU3ltYm9sICZ2YXJpYWJs
ZSkgY29uc3QKK3sKKyAgICBjb25zdCBUVHlwZSAmdHlwZSA9IHZhcmlhYmxlLmdldFR5cGUoKTsK
KworICAgIFZhcnlpbmcgdmFyeWluZzsKKyAgICBzZXRDb21tb25WYXJpYWJsZVByb3BlcnRpZXMo
dHlwZSwgdmFyaWFibGUuZ2V0U3ltYm9sKCksICZ2YXJ5aW5nKTsKKworICAgIHN3aXRjaCAodHlw
ZS5nZXRRdWFsaWZpZXIoKSkKKyAgICB7CisgICAgICAgIGNhc2UgRXZxVmFyeWluZ0luOgorICAg
ICAgICBjYXNlIEV2cVZhcnlpbmdPdXQ6CisgICAgICAgIGNhc2UgRXZxVmVydGV4T3V0OgorICAg
ICAgICBjYXNlIEV2cVNtb290aE91dDoKKyAgICAgICAgY2FzZSBFdnFGbGF0T3V0OgorICAgICAg
ICBjYXNlIEV2cUNlbnRyb2lkT3V0OgorICAgICAgICAgICAgaWYgKG1TeW1ib2xUYWJsZS5pc1Zh
cnlpbmdJbnZhcmlhbnQoc3RkOjpzdHJpbmcodmFyaWFibGUuZ2V0U3ltYm9sKCkuY19zdHIoKSkp
IHx8CisgICAgICAgICAgICAgICAgdHlwZS5pc0ludmFyaWFudCgpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHZhcnlpbmcuaXNJbnZhcmlhbnQgPSB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICB2YXJ5aW5nLmludGVycG9sYXRpb24gPSBHZXRJbnRlcnBvbGF0aW9u
VHlwZSh0eXBlLmdldFF1YWxpZmllcigpKTsKKyAgICByZXR1cm4gdmFyeWluZzsKIH0KIAotdGVt
cGxhdGUgPD4KLXZvaWQgQ29sbGVjdFZhcmlhYmxlczo6dmlzaXRWYXJpYWJsZShjb25zdCBUSW50
ZXJtU3ltYm9sICp2YXJpYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6OnZlY3RvcjxJbnRlcmZhY2VCbG9jaz4gKmluZm9MaXN0KSBjb25zdAorSW50ZXJmYWNl
QmxvY2sgQ29sbGVjdFZhcmlhYmxlczo6cmVjb3JkSW50ZXJmYWNlQmxvY2soY29uc3QgVEludGVy
bVN5bWJvbCAmdmFyaWFibGUpIGNvbnN0CiB7Ci0gICAgSW50ZXJmYWNlQmxvY2sgaW50ZXJmYWNl
QmxvY2s7Ci0gICAgY29uc3QgVEludGVyZmFjZUJsb2NrICpibG9ja1R5cGUgPSB2YXJpYWJsZS0+
Z2V0VHlwZSgpLmdldEludGVyZmFjZUJsb2NrKCk7CisgICAgY29uc3QgVEludGVyZmFjZUJsb2Nr
ICpibG9ja1R5cGUgPSB2YXJpYWJsZS5nZXRUeXBlKCkuZ2V0SW50ZXJmYWNlQmxvY2soKTsKICAg
ICBBU1NFUlQoYmxvY2tUeXBlKTsKIAorICAgIEludGVyZmFjZUJsb2NrIGludGVyZmFjZUJsb2Nr
OwogICAgIGludGVyZmFjZUJsb2NrLm5hbWUgPSBibG9ja1R5cGUtPm5hbWUoKS5jX3N0cigpOwog
ICAgIGludGVyZmFjZUJsb2NrLm1hcHBlZE5hbWUgPQogICAgICAgICBUSW50ZXJtVHJhdmVyc2Vy
OjpoYXNoKGJsb2NrVHlwZS0+bmFtZSgpLmNfc3RyKCksIG1IYXNoRnVuY3Rpb24pLmNfc3RyKCk7
Ci0gICAgaW50ZXJmYWNlQmxvY2suaW5zdGFuY2VOYW1lID0gKGJsb2NrVHlwZS0+aGFzSW5zdGFu
Y2VOYW1lKCkgPyBibG9ja1R5cGUtPmluc3RhbmNlTmFtZSgpLmNfc3RyKCkgOiAiIik7Ci0gICAg
aW50ZXJmYWNlQmxvY2suYXJyYXlTaXplID0gdmFyaWFibGUtPmdldEFycmF5U2l6ZSgpOworICAg
IGludGVyZmFjZUJsb2NrLmluc3RhbmNlTmFtZSA9CisgICAgICAgIChibG9ja1R5cGUtPmhhc0lu
c3RhbmNlTmFtZSgpID8gYmxvY2tUeXBlLT5pbnN0YW5jZU5hbWUoKS5jX3N0cigpIDogIiIpOwor
ICAgIGludGVyZmFjZUJsb2NrLmFycmF5U2l6ZSAgICAgICAgPSB2YXJpYWJsZS5nZXRBcnJheVNp
emUoKTsKICAgICBpbnRlcmZhY2VCbG9jay5pc1Jvd01ham9yTGF5b3V0ID0gKGJsb2NrVHlwZS0+
bWF0cml4UGFja2luZygpID09IEVtcFJvd01ham9yKTsKLSAgICBpbnRlcmZhY2VCbG9jay5sYXlv
dXQgPSBHZXRCbG9ja0xheW91dFR5cGUoYmxvY2tUeXBlLT5ibG9ja1N0b3JhZ2UoKSk7CisgICAg
aW50ZXJmYWNlQmxvY2subGF5b3V0ICAgICAgICAgICA9IEdldEJsb2NrTGF5b3V0VHlwZShibG9j
a1R5cGUtPmJsb2NrU3RvcmFnZSgpKTsKIAogICAgIC8vIEdhdGhlciBmaWVsZCBpbmZvcm1hdGlv
bgogICAgIGZvciAoY29uc3QgVEZpZWxkICpmaWVsZCA6IGJsb2NrVHlwZS0+ZmllbGRzKCkpCiAg
ICAgewogICAgICAgICBjb25zdCBUVHlwZSAmZmllbGRUeXBlID0gKmZpZWxkLT50eXBlKCk7CiAK
LSAgICAgICAgTmFtZUhhc2hpbmdUcmF2ZXJzZXIgdHJhdmVyc2VyKG1IYXNoRnVuY3Rpb24sIG1T
eW1ib2xUYWJsZSk7Ci0gICAgICAgIHRyYXZlcnNlci50cmF2ZXJzZShmaWVsZFR5cGUsIGZpZWxk
LT5uYW1lKCksICZpbnRlcmZhY2VCbG9jay5maWVsZHMpOwotCi0gICAgICAgIGludGVyZmFjZUJs
b2NrLmZpZWxkcy5iYWNrKCkuaXNSb3dNYWpvckxheW91dCA9IChmaWVsZFR5cGUuZ2V0TGF5b3V0
UXVhbGlmaWVyKCkubWF0cml4UGFja2luZyA9PSBFbXBSb3dNYWpvcik7CisgICAgICAgIEludGVy
ZmFjZUJsb2NrRmllbGQgZmllbGRWYXJpYWJsZTsKKyAgICAgICAgc2V0Q29tbW9uVmFyaWFibGVQ
cm9wZXJ0aWVzKGZpZWxkVHlwZSwgZmllbGQtPm5hbWUoKSwgJmZpZWxkVmFyaWFibGUpOworICAg
ICAgICBmaWVsZFZhcmlhYmxlLmlzUm93TWFqb3JMYXlvdXQgPQorICAgICAgICAgICAgKGZpZWxk
VHlwZS5nZXRMYXlvdXRRdWFsaWZpZXIoKS5tYXRyaXhQYWNraW5nID09IEVtcFJvd01ham9yKTsK
KyAgICAgICAgaW50ZXJmYWNlQmxvY2suZmllbGRzLnB1c2hfYmFjayhmaWVsZFZhcmlhYmxlKTsK
ICAgICB9Ci0KLSAgICBpbmZvTGlzdC0+cHVzaF9iYWNrKGludGVyZmFjZUJsb2NrKTsKKyAgICBy
ZXR1cm4gaW50ZXJmYWNlQmxvY2s7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBWYXJUPgotdm9p
ZCBDb2xsZWN0VmFyaWFibGVzOjp2aXNpdFZhcmlhYmxlKGNvbnN0IFRJbnRlcm1TeW1ib2wgKnZh
cmlhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9y
PFZhclQ+ICppbmZvTGlzdCkgY29uc3QKK1VuaWZvcm0gQ29sbGVjdFZhcmlhYmxlczo6cmVjb3Jk
VW5pZm9ybShjb25zdCBUSW50ZXJtU3ltYm9sICZ2YXJpYWJsZSkgY29uc3QKIHsKLSAgICBOYW1l
SGFzaGluZ1RyYXZlcnNlciB0cmF2ZXJzZXIobUhhc2hGdW5jdGlvbiwgbVN5bWJvbFRhYmxlKTsK
LSAgICB0cmF2ZXJzZXIudHJhdmVyc2UodmFyaWFibGUtPmdldFR5cGUoKSwgdmFyaWFibGUtPmdl
dFN5bWJvbCgpLCBpbmZvTGlzdCk7CisgICAgVW5pZm9ybSB1bmlmb3JtOworICAgIHNldENvbW1v
blZhcmlhYmxlUHJvcGVydGllcyh2YXJpYWJsZS5nZXRUeXBlKCksIHZhcmlhYmxlLmdldFN5bWJv
bCgpLCAmdW5pZm9ybSk7CisgICAgdW5pZm9ybS5iaW5kaW5nID0gdmFyaWFibGUuZ2V0VHlwZSgp
LmdldExheW91dFF1YWxpZmllcigpLmJpbmRpbmc7CisgICAgdW5pZm9ybS5sb2NhdGlvbiA9IHZh
cmlhYmxlLmdldFR5cGUoKS5nZXRMYXlvdXRRdWFsaWZpZXIoKS5sb2NhdGlvbjsKKyAgICByZXR1
cm4gdW5pZm9ybTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFZhclQ+Ci12b2lkIENvbGxlY3RW
YXJpYWJsZXM6OnZpc2l0SW5mb0xpc3QoY29uc3QgVEludGVybVNlcXVlbmNlICZzZXF1ZW5jZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxWYXJUPiAq
aW5mb0xpc3QpIGNvbnN0Citib29sIENvbGxlY3RWYXJpYWJsZXM6OnZpc2l0RGVjbGFyYXRpb24o
VmlzaXQsIFRJbnRlcm1EZWNsYXJhdGlvbiAqbm9kZSkKIHsKLSAgICBmb3IgKHNpemVfdCBzZXFJ
bmRleCA9IDA7IHNlcUluZGV4IDwgc2VxdWVuY2Uuc2l6ZSgpOyBzZXFJbmRleCsrKQorICAgIGNv
bnN0IFRJbnRlcm1TZXF1ZW5jZSAmc2VxdWVuY2UgPSAqKG5vZGUtPmdldFNlcXVlbmNlKCkpOwor
ICAgIEFTU0VSVCghc2VxdWVuY2UuZW1wdHkoKSk7CisKKyAgICBjb25zdCBUSW50ZXJtVHlwZWQg
JnR5cGVkTm9kZSA9ICooc2VxdWVuY2UuZnJvbnQoKS0+Z2V0QXNUeXBlZCgpKTsKKyAgICBUUXVh
bGlmaWVyIHF1YWxpZmllciAgICAgICAgICA9IHR5cGVkTm9kZS5nZXRRdWFsaWZpZXIoKTsKKwor
ICAgIGJvb2wgaXNTaGFkZXJWYXJpYWJsZSA9IHF1YWxpZmllciA9PSBFdnFBdHRyaWJ1dGUgfHwg
cXVhbGlmaWVyID09IEV2cVZlcnRleEluIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cXVhbGlmaWVyID09IEV2cUZyYWdtZW50T3V0IHx8IHF1YWxpZmllciA9PSBFdnFVbmlmb3JtIHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXNWYXJ5aW5nKHF1YWxpZmllcik7CisKKyAg
ICBpZiAodHlwZWROb2RlLmdldEJhc2ljVHlwZSgpICE9IEVidEludGVyZmFjZUJsb2NrICYmICFp
c1NoYWRlclZhcmlhYmxlKQogICAgIHsKLSAgICAgICAgY29uc3QgVEludGVybVN5bWJvbCAqdmFy
aWFibGUgPSBzZXF1ZW5jZVtzZXFJbmRleF0tPmdldEFzU3ltYm9sTm9kZSgpOwotICAgICAgICAv
LyBUaGUgb25seSBjYXNlIGluIHdoaWNoIHRoZSBzZXF1ZW5jZSB3aWxsIG5vdCBjb250YWluIGEK
LSAgICAgICAgLy8gVEludGVybVN5bWJvbCBub2RlIGlzIGluaXRpYWxpemF0aW9uLiBJdCB3aWxs
IGNvbnRhaW4gYQotICAgICAgICAvLyBUSW50ZXJCaW5hcnkgbm9kZSBpbiB0aGF0IGNhc2UuIFNp
bmNlIGF0dHJpYnV0ZXMsIHVuaWZvcm1zLAotICAgICAgICAvLyBhbmQgdmFyeWluZ3MgY2Fubm90
IGJlIGluaXRpYWxpemVkIGluIGEgc2hhZGVyLCB3ZSBtdXN0IGhhdmUKLSAgICAgICAgLy8gb25s
eSBUSW50ZXJtU3ltYm9sIG5vZGVzIGluIHRoZSBzZXF1ZW5jZS4KLSAgICAgICAgQVNTRVJUKHZh
cmlhYmxlICE9IE5VTEwpOwotICAgICAgICB2aXNpdFZhcmlhYmxlKHZhcmlhYmxlLCBpbmZvTGlz
dCk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLX0KLQotYm9vbCBDb2xsZWN0VmFyaWFi
bGVzOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKLXsKLSAg
ICBib29sIHZpc2l0Q2hpbGRyZW4gPSB0cnVlOwogCi0gICAgc3dpdGNoIChub2RlLT5nZXRPcCgp
KQorICAgIGZvciAoVEludGVybU5vZGUgKnZhcmlhYmxlTm9kZSA6IHNlcXVlbmNlKQogICAgIHsK
LSAgICAgIGNhc2UgRU9wRGVjbGFyYXRpb246CisgICAgICAgIC8vIFRoZSBvbmx5IGNhc2UgaW4g
d2hpY2ggdGhlIHNlcXVlbmNlIHdpbGwgbm90IGNvbnRhaW4gYSBUSW50ZXJtU3ltYm9sIG5vZGUg
aXMKKyAgICAgICAgLy8gaW5pdGlhbGl6YXRpb24uIEl0IHdpbGwgY29udGFpbiBhIFRJbnRlckJp
bmFyeSBub2RlIGluIHRoYXQgY2FzZS4gU2luY2UgYXR0cmlidXRlcywKKyAgICAgICAgLy8gdW5p
Zm9ybXMsIHZhcnlpbmdzLCBvdXRwdXRzIGFuZCBpbnRlcmZhY2UgYmxvY2tzIGNhbm5vdCBiZSBp
bml0aWFsaXplZCBpbiBhIHNoYWRlciwgd2UKKyAgICAgICAgLy8gbXVzdCBoYXZlIG9ubHkgVElu
dGVybVN5bWJvbCBub2RlcyBpbiB0aGUgc2VxdWVuY2UgaW4gdGhlIGNhc2VzIHdlIGFyZSBpbnRl
cmVzdGVkIGluLgorICAgICAgICBjb25zdCBUSW50ZXJtU3ltYm9sICZ2YXJpYWJsZSA9ICp2YXJp
YWJsZU5vZGUtPmdldEFzU3ltYm9sTm9kZSgpOworICAgICAgICBpZiAodHlwZWROb2RlLmdldEJh
c2ljVHlwZSgpID09IEVidEludGVyZmFjZUJsb2NrKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b25zdCBUSW50ZXJtU2VxdWVuY2UgJnNlcXVlbmNlID0gKihub2RlLT5nZXRTZXF1ZW5jZSgpKTsK
LSAgICAgICAgICAgIEFTU0VSVCghc2VxdWVuY2UuZW1wdHkoKSk7Ci0KLSAgICAgICAgICAgIGNv
bnN0IFRJbnRlcm1UeXBlZCAmdHlwZWROb2RlID0gKihzZXF1ZW5jZS5mcm9udCgpLT5nZXRBc1R5
cGVkKCkpOwotICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSB0eXBlZE5vZGUuZ2V0
UXVhbGlmaWVyKCk7Ci0KLSAgICAgICAgICAgIGlmICh0eXBlZE5vZGUuZ2V0QmFzaWNUeXBlKCkg
PT0gRWJ0SW50ZXJmYWNlQmxvY2spCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmlz
aXRJbmZvTGlzdChzZXF1ZW5jZSwgbUludGVyZmFjZUJsb2Nrcyk7Ci0gICAgICAgICAgICAgICAg
dmlzaXRDaGlsZHJlbiA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBp
ZiAocXVhbGlmaWVyID09IEV2cUF0dHJpYnV0ZSB8fCBxdWFsaWZpZXIgPT0gRXZxVmVydGV4SW4g
fHwKLSAgICAgICAgICAgICAgICAgICAgIHF1YWxpZmllciA9PSBFdnFGcmFnbWVudE91dCB8fCBx
dWFsaWZpZXIgPT0gRXZxVW5pZm9ybSB8fAotICAgICAgICAgICAgICAgICAgICAgSXNWYXJ5aW5n
KHF1YWxpZmllcikpCisgICAgICAgICAgICBtSW50ZXJmYWNlQmxvY2tzLT5wdXNoX2JhY2socmVj
b3JkSW50ZXJmYWNlQmxvY2sodmFyaWFibGUpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAocXVhbGlmaWVyKQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHN3aXRjaCAocXVhbGlmaWVyKQotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgIGNhc2UgRXZxQXR0cmlidXRlOgotICAgICAgICAgICAgICAgICAgY2Fz
ZSBFdnFWZXJ0ZXhJbjoKLSAgICAgICAgICAgICAgICAgICAgdmlzaXRJbmZvTGlzdChzZXF1ZW5j
ZSwgbUF0dHJpYnMpOworICAgICAgICAgICAgICAgIGNhc2UgRXZxQXR0cmlidXRlOgorICAgICAg
ICAgICAgICAgIGNhc2UgRXZxVmVydGV4SW46CisgICAgICAgICAgICAgICAgICAgIG1BdHRyaWJz
LT5wdXNoX2JhY2socmVjb3JkQXR0cmlidXRlKHZhcmlhYmxlKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgY2FzZSBFdnFGcmFnbWVudE91dDoKLSAgICAg
ICAgICAgICAgICAgICAgdmlzaXRJbmZvTGlzdChzZXF1ZW5jZSwgbU91dHB1dFZhcmlhYmxlcyk7
CisgICAgICAgICAgICAgICAgY2FzZSBFdnFGcmFnbWVudE91dDoKKyAgICAgICAgICAgICAgICAg
ICAgbU91dHB1dFZhcmlhYmxlcy0+cHVzaF9iYWNrKHJlY29yZE91dHB1dFZhcmlhYmxlKHZhcmlh
YmxlKSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgY2Fz
ZSBFdnFVbmlmb3JtOgotICAgICAgICAgICAgICAgICAgICB2aXNpdEluZm9MaXN0KHNlcXVlbmNl
LCBtVW5pZm9ybXMpOworICAgICAgICAgICAgICAgIGNhc2UgRXZxVW5pZm9ybToKKyAgICAgICAg
ICAgICAgICAgICAgbVVuaWZvcm1zLT5wdXNoX2JhY2socmVjb3JkVW5pZm9ybSh2YXJpYWJsZSkp
OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgICAgICAgIHZpc2l0SW5mb0xpc3Qoc2VxdWVuY2UsIG1WYXJ5aW5ncyk7
CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgbVZhcnlpbmdz
LT5wdXNoX2JhY2socmVjb3JkVmFyeWluZyh2YXJpYWJsZSkpOwogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB2aXNpdENoaWxk
cmVuID0gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotICAgICAgZGVmYXVsdDogYnJlYWs7CiAgICAgfQogCi0gICAgcmV0dXJuIHZpc2l0Q2hpbGRy
ZW47CisgICAgLy8gTm9uZSBvZiB0aGUgcmVjb3JkZWQgdmFyaWFibGVzIGNhbiBoYXZlIGluaXRp
YWxpemVycywgc28gd2UgZG9uJ3QgbmVlZCB0byB0cmF2ZXJzZSB0aGUKKyAgICAvLyBkZWNsYXJh
dG9ycy4KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgQ29sbGVjdFZhcmlhYmxlczo6dmlz
aXRCaW5hcnkoVmlzaXQsIFRJbnRlcm1CaW5hcnkgKmJpbmFyeU5vZGUpCkBAIC02ODAsOCArNjk5
LDcgQEAgdm9pZCBFeHBhbmRWYXJpYWJsZShjb25zdCBTaGFkZXJWYXJpYWJsZSAmdmFyaWFibGUs
CiAgICAgfQogfQogCi12b2lkIEV4cGFuZFVuaWZvcm1zKGNvbnN0IHN0ZDo6dmVjdG9yPFVuaWZv
cm0+ICZjb21wYWN0LAotICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxTaGFkZXJWYXJp
YWJsZT4gKmV4cGFuZGVkKQordm9pZCBFeHBhbmRVbmlmb3Jtcyhjb25zdCBzdGQ6OnZlY3RvcjxV
bmlmb3JtPiAmY29tcGFjdCwgc3RkOjp2ZWN0b3I8U2hhZGVyVmFyaWFibGU+ICpleHBhbmRlZCkK
IHsKICAgICBmb3IgKHNpemVfdCB2YXJpYWJsZUluZGV4ID0gMDsgdmFyaWFibGVJbmRleCA8IGNv
bXBhY3Quc2l6ZSgpOyB2YXJpYWJsZUluZGV4KyspCiAgICAgewpAQCAtNjg5LDUgKzcwNyw0IEBA
IHZvaWQgRXhwYW5kVW5pZm9ybXMoY29uc3Qgc3RkOjp2ZWN0b3I8VW5pZm9ybT4gJmNvbXBhY3Qs
CiAgICAgICAgIEV4cGFuZFZhcmlhYmxlKHZhcmlhYmxlLCB2YXJpYWJsZS5uYW1lLCB2YXJpYWJs
ZS5tYXBwZWROYW1lLCB2YXJpYWJsZS5zdGF0aWNVc2UsIGV4cGFuZGVkKTsKICAgICB9CiB9Ci0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1ZhcmlhYmxlSW5mby5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVmFyaWFibGVJbmZvLmgKaW5kZXggZjc5MDM1ZDM4NDI0NThmNzYyODRl
ZWU4YmVkNTY5YWM0OGIzMGMwMC4uZjI0ZTJjODE2ZjA5M2ExMWIwY2U3NzM3NWZkOGJkZmY5YjRl
OGUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVmFyaWFibGVJbmZvLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVJbmZvLmgKQEAgLTMxLDE1ICszMSwxOSBAQCBj
bGFzcyBDb2xsZWN0VmFyaWFibGVzIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciAmZXh0ZW5zaW9uQmVoYXZpb3Ip
OwogCiAgICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpzeW1ib2wpIG92ZXJyaWRl
OwotICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUp
IG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXREZWNsYXJhdGlvbihWaXNpdCwgVEludGVybURlY2xh
cmF0aW9uICpub2RlKSBvdmVycmlkZTsKICAgICBib29sIHZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0
LCBUSW50ZXJtQmluYXJ5ICpiaW5hcnlOb2RlKSBvdmVycmlkZTsKIAogICBwcml2YXRlOgotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBWYXJUPgotICAgIHZvaWQgdmlzaXRWYXJpYWJsZShjb25zdCBU
SW50ZXJtU3ltYm9sICp2YXJpYWJsZSwgc3RkOjp2ZWN0b3I8VmFyVD4gKmluZm9MaXN0KSBjb25z
dDsKKyAgICB2b2lkIHNldENvbW1vblZhcmlhYmxlUHJvcGVydGllcyhjb25zdCBUVHlwZSAmdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclZhcmlhYmxl
ICp2YXJpYWJsZU91dCkgY29uc3Q7CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFyVD4KLSAg
ICB2b2lkIHZpc2l0SW5mb0xpc3QoY29uc3QgVEludGVybVNlcXVlbmNlICZzZXF1ZW5jZSwgc3Rk
Ojp2ZWN0b3I8VmFyVD4gKmluZm9MaXN0KSBjb25zdDsKKyAgICBBdHRyaWJ1dGUgcmVjb3JkQXR0
cmlidXRlKGNvbnN0IFRJbnRlcm1TeW1ib2wgJnZhcmlhYmxlKSBjb25zdDsKKyAgICBPdXRwdXRW
YXJpYWJsZSByZWNvcmRPdXRwdXRWYXJpYWJsZShjb25zdCBUSW50ZXJtU3ltYm9sICZ2YXJpYWJs
ZSkgY29uc3Q7CisgICAgVmFyeWluZyByZWNvcmRWYXJ5aW5nKGNvbnN0IFRJbnRlcm1TeW1ib2wg
JnZhcmlhYmxlKSBjb25zdDsKKyAgICBJbnRlcmZhY2VCbG9jayByZWNvcmRJbnRlcmZhY2VCbG9j
ayhjb25zdCBUSW50ZXJtU3ltYm9sICZ2YXJpYWJsZSkgY29uc3Q7CisgICAgVW5pZm9ybSByZWNv
cmRVbmlmb3JtKGNvbnN0IFRJbnRlcm1TeW1ib2wgJnZhcmlhYmxlKSBjb25zdDsKIAogICAgIHN0
ZDo6dmVjdG9yPEF0dHJpYnV0ZT4gKm1BdHRyaWJzOwogICAgIHN0ZDo6dmVjdG9yPE91dHB1dFZh
cmlhYmxlPiAqbU91dHB1dFZhcmlhYmxlczsKQEAgLTc5LDkgKzgzLDcgQEAgdm9pZCBFeHBhbmRW
YXJpYWJsZShjb25zdCBTaGFkZXJWYXJpYWJsZSAmdmFyaWFibGUsCiAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6dmVjdG9yPFNoYWRlclZhcmlhYmxlPiAqZXhwYW5kZWQpOwogCiAvLyBFeHBhbmQg
c3RydWN0IHVuaWZvcm1zIHRvIGZsYXR0ZW5lZCBsaXN0cyBvZiBzcGxpdCB2YXJpYWJsZXMKLXZv
aWQgRXhwYW5kVW5pZm9ybXMoY29uc3Qgc3RkOjp2ZWN0b3I8VW5pZm9ybT4gJmNvbXBhY3QsCi0g
ICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPFNoYWRlclZhcmlhYmxlPiAqZXhwYW5kZWQp
OwotCit2b2lkIEV4cGFuZFVuaWZvcm1zKGNvbnN0IHN0ZDo6dmVjdG9yPFVuaWZvcm0+ICZjb21w
YWN0LCBzdGQ6OnZlY3RvcjxTaGFkZXJWYXJpYWJsZT4gKmV4cGFuZGVkKTsKIH0KIAogI2VuZGlm
ICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1ZBUklBQkxFSU5GT19IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVQYWNr
ZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VmFyaWFibGVQYWNrZXIuY3BwCmluZGV4IGE5ODFjOGFlMGIzM2U1OTJmYzY1OTY2MTkyMjhhMzU1
NDNmNzMzNzUuLjljNGM5Mzc2YjU0MmMzY2ZmNDkwNGQ5N2VhNDZhY2NjNjE3ZWRmOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Zh
cmlhYmxlUGFja2VyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9WYXJpYWJsZVBhY2tlci5jcHAKQEAgLTE1LDMzICsxNSwzMyBAQCBpbnQg
VmFyaWFibGVQYWNrZXI6OkdldE51bUNvbXBvbmVudHNQZXJSb3coc2g6OkdMZW51bSB0eXBlKQog
ewogICAgIHN3aXRjaCAodHlwZSkKICAgICB7Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6Ci0g
ICAgICBjYXNlIEdMX0ZMT0FUX01BVDI6Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDJ4NDoKLSAg
ICAgIGNhc2UgR0xfRkxPQVRfTUFUM3g0OgotICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0eDI6Ci0g
ICAgICBjYXNlIEdMX0ZMT0FUX01BVDR4MzoKLSAgICAgIGNhc2UgR0xfRkxPQVRfVkVDNDoKLSAg
ICAgIGNhc2UgR0xfSU5UX1ZFQzQ6Ci0gICAgICBjYXNlIEdMX0JPT0xfVkVDNDoKLSAgICAgIGNh
c2UgR0xfVU5TSUdORURfSU5UX1ZFQzQ6Ci0gICAgICAgIHJldHVybiA0OwotICAgICAgY2FzZSBH
TF9GTE9BVF9NQVQzOgotICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyeDM6Ci0gICAgICBjYXNlIEdM
X0ZMT0FUX01BVDN4MjoKLSAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMzoKLSAgICAgIGNhc2UgR0xf
SU5UX1ZFQzM6Ci0gICAgICBjYXNlIEdMX0JPT0xfVkVDMzoKLSAgICAgIGNhc2UgR0xfVU5TSUdO
RURfSU5UX1ZFQzM6Ci0gICAgICAgIHJldHVybiAzOwotICAgICAgY2FzZSBHTF9GTE9BVF9WRUMy
OgotICAgICAgY2FzZSBHTF9JTlRfVkVDMjoKLSAgICAgIGNhc2UgR0xfQk9PTF9WRUMyOgotICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfVkVDMjoKLSAgICAgICAgcmV0dXJuIDI7Ci0gICAgICBk
ZWZhdWx0OgotICAgICAgICBBU1NFUlQoZ2w6OlZhcmlhYmxlQ29tcG9uZW50Q291bnQodHlwZSkg
PT0gMSk7Ci0gICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6Cisg
ICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjoKKyAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQyeDQ6
CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUM3g0OgorICAgICAgICBjYXNlIEdMX0ZMT0FUX01B
VDR4MjoKKyAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0eDM6CisgICAgICAgIGNhc2UgR0xfRkxP
QVRfVkVDNDoKKyAgICAgICAgY2FzZSBHTF9JTlRfVkVDNDoKKyAgICAgICAgY2FzZSBHTF9CT09M
X1ZFQzQ6CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX1ZFQzQ6CisgICAgICAgICAgICBy
ZXR1cm4gNDsKKyAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOgorICAgICAgICBjYXNlIEdMX0ZM
T0FUX01BVDJ4MzoKKyAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzeDI6CisgICAgICAgIGNhc2Ug
R0xfRkxPQVRfVkVDMzoKKyAgICAgICAgY2FzZSBHTF9JTlRfVkVDMzoKKyAgICAgICAgY2FzZSBH
TF9CT09MX1ZFQzM6CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX1ZFQzM6CisgICAgICAg
ICAgICByZXR1cm4gMzsKKyAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMyOgorICAgICAgICBjYXNl
IEdMX0lOVF9WRUMyOgorICAgICAgICBjYXNlIEdMX0JPT0xfVkVDMjoKKyAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9JTlRfVkVDMjoKKyAgICAgICAgICAgIHJldHVybiAyOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgQVNTRVJUKGdsOjpWYXJpYWJsZUNvbXBvbmVudENvdW50KHR5cGUp
ID09IDEpOworICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogfQogCkBAIC00OSwyMSArNDks
MjEgQEAgaW50IFZhcmlhYmxlUGFja2VyOjpHZXROdW1Sb3dzKHNoOjpHTGVudW0gdHlwZSkKIHsK
ICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgewotICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OgotICAg
ICAgY2FzZSBHTF9GTE9BVF9NQVQyeDQ6Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDN4NDoKLSAg
ICAgIGNhc2UgR0xfRkxPQVRfTUFUNHgzOgotICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0eDI6Ci0g
ICAgICAgIHJldHVybiA0OwotICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzOgotICAgICAgY2FzZSBH
TF9GTE9BVF9NQVQyeDM6Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDN4MjoKLSAgICAgICAgcmV0
dXJuIDM7Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDI6Ci0gICAgICAgIHJldHVybiAyOwotICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUKGdsOjpWYXJpYWJsZVJvd0NvdW50KHR5cGUpID09
IDEpOwotICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0OgorICAg
ICAgICBjYXNlIEdMX0ZMT0FUX01BVDJ4NDoKKyAgICAgICAgY2FzZSBHTF9GTE9BVF9NQVQzeDQ6
CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNHgzOgorICAgICAgICBjYXNlIEdMX0ZMT0FUX01B
VDR4MjoKKyAgICAgICAgICAgIHJldHVybiA0OworICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6
CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMngzOgorICAgICAgICBjYXNlIEdMX0ZMT0FUX01B
VDN4MjoKKyAgICAgICAgICAgIHJldHVybiAzOworICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDI6
CisgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFT
U0VSVChnbDo6VmFyaWFibGVSb3dDb3VudCh0eXBlKSA9PSAxKTsKKyAgICAgICAgICAgIHJldHVy
biAxOwogICAgIH0KIH0KIApAQCAtNzMsNyArNzMsOCBAQCBzdHJ1Y3QgVFZhcmlhYmxlSW5mb0Nv
bXBhcmVyCiAgICAgewogICAgICAgICBpbnQgbGhzU29ydE9yZGVyID0gZ2w6OlZhcmlhYmxlU29y
dE9yZGVyKGxocy50eXBlKTsKICAgICAgICAgaW50IHJoc1NvcnRPcmRlciA9IGdsOjpWYXJpYWJs
ZVNvcnRPcmRlcihyaHMudHlwZSk7Ci0gICAgICAgIGlmIChsaHNTb3J0T3JkZXIgIT0gcmhzU29y
dE9yZGVyKSB7CisgICAgICAgIGlmIChsaHNTb3J0T3JkZXIgIT0gcmhzU29ydE9yZGVyKQorICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbGhzU29ydE9yZGVyIDwgcmhzU29ydE9yZGVyOwog
ICAgICAgICB9CiAgICAgICAgIC8vIFNvcnQgYnkgbGFyZ2VzdCBmaXJzdC4KQEAgLTgzLDY2ICs4
NCw3NiBAQCBzdHJ1Y3QgVFZhcmlhYmxlSW5mb0NvbXBhcmVyCiAKIHVuc2lnbmVkIFZhcmlhYmxl
UGFja2VyOjptYWtlQ29sdW1uRmxhZ3MoaW50IGNvbHVtbiwgaW50IG51bUNvbXBvbmVudHNQZXJS
b3cpCiB7Ci0gICAgcmV0dXJuICgoa0NvbHVtbk1hc2sgPDwgKGtOdW1Db2x1bW5zIC0gbnVtQ29t
cG9uZW50c1BlclJvdykpICYKLSAgICAgICAgICAgICAgICAgICAga0NvbHVtbk1hc2spID4+IGNv
bHVtbjsKKyAgICByZXR1cm4gKChrQ29sdW1uTWFzayA8PCAoa051bUNvbHVtbnMgLSBudW1Db21w
b25lbnRzUGVyUm93KSkgJiBrQ29sdW1uTWFzaykgPj4gY29sdW1uOwogfQogCiB2b2lkIFZhcmlh
YmxlUGFja2VyOjpmaWxsQ29sdW1ucyhpbnQgdG9wUm93LCBpbnQgbnVtUm93cywgaW50IGNvbHVt
biwgaW50IG51bUNvbXBvbmVudHNQZXJSb3cpCiB7CiAgICAgdW5zaWduZWQgY29sdW1uRmxhZ3Mg
PSBtYWtlQ29sdW1uRmxhZ3MoY29sdW1uLCBudW1Db21wb25lbnRzUGVyUm93KTsKLSAgICBmb3Ig
KGludCByID0gMDsgciA8IG51bVJvd3M7ICsrcikgeworICAgIGZvciAoaW50IHIgPSAwOyByIDwg
bnVtUm93czsgKytyKQorICAgIHsKICAgICAgICAgaW50IHJvdyA9IHRvcFJvdyArIHI7CiAgICAg
ICAgIEFTU0VSVCgocm93c19bcm93XSAmIGNvbHVtbkZsYWdzKSA9PSAwKTsKICAgICAgICAgcm93
c19bcm93XSB8PSBjb2x1bW5GbGFnczsKICAgICB9CiB9CiAKLWJvb2wgVmFyaWFibGVQYWNrZXI6
OnNlYXJjaENvbHVtbihpbnQgY29sdW1uLCBpbnQgbnVtUm93cywgaW50KiBkZXN0Um93LCBpbnQq
IGRlc3RTaXplKQorYm9vbCBWYXJpYWJsZVBhY2tlcjo6c2VhcmNoQ29sdW1uKGludCBjb2x1bW4s
IGludCBudW1Sb3dzLCBpbnQgKmRlc3RSb3csIGludCAqZGVzdFNpemUpCiB7CiAgICAgQVNTRVJU
KGRlc3RSb3cpOwogCi0gICAgZm9yICg7IHRvcE5vbkZ1bGxSb3dfIDwgbWF4Um93c18gJiYgcm93
c19bdG9wTm9uRnVsbFJvd19dID09IGtDb2x1bW5NYXNrOwotICAgICAgICAgKyt0b3BOb25GdWxs
Um93XykgeworICAgIGZvciAoOyB0b3BOb25GdWxsUm93XyA8IG1heFJvd3NfICYmIHJvd3NfW3Rv
cE5vbkZ1bGxSb3dfXSA9PSBrQ29sdW1uTWFzazsgKyt0b3BOb25GdWxsUm93XykKKyAgICB7CiAg
ICAgfQogCi0gICAgZm9yICg7IGJvdHRvbU5vbkZ1bGxSb3dfID49IDAgJiYgcm93c19bYm90dG9t
Tm9uRnVsbFJvd19dID09IGtDb2x1bW5NYXNrOwotICAgICAgICAgLS1ib3R0b21Ob25GdWxsUm93
XykgeworICAgIGZvciAoOyBib3R0b21Ob25GdWxsUm93XyA+PSAwICYmIHJvd3NfW2JvdHRvbU5v
bkZ1bGxSb3dfXSA9PSBrQ29sdW1uTWFzazsgLS1ib3R0b21Ob25GdWxsUm93XykKKyAgICB7CiAg
ICAgfQogCi0gICAgaWYgKGJvdHRvbU5vbkZ1bGxSb3dfIC0gdG9wTm9uRnVsbFJvd18gKyAxIDwg
bnVtUm93cykgeworICAgIGlmIChib3R0b21Ob25GdWxsUm93XyAtIHRvcE5vbkZ1bGxSb3dfICsg
MSA8IG51bVJvd3MpCisgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAg
dW5zaWduZWQgY29sdW1uRmxhZ3MgPSBtYWtlQ29sdW1uRmxhZ3MoY29sdW1uLCAxKTsKLSAgICBp
bnQgdG9wR29vZFJvdyA9IDA7Ci0gICAgaW50IHNtYWxsZXN0R29vZFRvcCA9IC0xOworICAgIGlu
dCB0b3BHb29kUm93ICAgICAgID0gMDsKKyAgICBpbnQgc21hbGxlc3RHb29kVG9wICA9IC0xOwog
ICAgIGludCBzbWFsbGVzdEdvb2RTaXplID0gbWF4Um93c18gKyAxOwotICAgIGludCBib3R0b21S
b3cgPSBib3R0b21Ob25GdWxsUm93XyArIDE7Ci0gICAgYm9vbCBmb3VuZCA9IGZhbHNlOwotICAg
IGZvciAoaW50IHJvdyA9IHRvcE5vbkZ1bGxSb3dfOyByb3cgPD0gYm90dG9tUm93OyArK3Jvdykg
eworICAgIGludCBib3R0b21Sb3cgICAgICAgID0gYm90dG9tTm9uRnVsbFJvd18gKyAxOworICAg
IGJvb2wgZm91bmQgICAgICAgICAgID0gZmFsc2U7CisgICAgZm9yIChpbnQgcm93ID0gdG9wTm9u
RnVsbFJvd187IHJvdyA8PSBib3R0b21Sb3c7ICsrcm93KQorICAgIHsKICAgICAgICAgYm9vbCBy
b3dFbXB0eSA9IHJvdyA8IGJvdHRvbVJvdyA/ICgocm93c19bcm93XSAmIGNvbHVtbkZsYWdzKSA9
PSAwKSA6IGZhbHNlOwotICAgICAgICBpZiAocm93RW1wdHkpIHsKLSAgICAgICAgICAgIGlmICgh
Zm91bmQpIHsKKyAgICAgICAgaWYgKHJvd0VtcHR5KQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIWZvdW5kKQorICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHRvcEdvb2RSb3cgPSBy
b3c7Ci0gICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgIGZvdW5k
ICAgICAgPSB0cnVlOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgaWYgKGZvdW5kKSB7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoZm91bmQpCisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaW50IHNp
emUgPSByb3cgLSB0b3BHb29kUm93OwotICAgICAgICAgICAgICAgIGlmIChzaXplID49IG51bVJv
d3MgJiYgc2l6ZSA8IHNtYWxsZXN0R29vZFNpemUpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2l6
ZSA+PSBudW1Sb3dzICYmIHNpemUgPCBzbWFsbGVzdEdvb2RTaXplKQorICAgICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAgICAgc21hbGxlc3RHb29kU2l6ZSA9IHNpemU7Ci0gICAgICAg
ICAgICAgICAgICAgIHNtYWxsZXN0R29vZFRvcCA9IHRvcEdvb2RSb3c7CisgICAgICAgICAgICAg
ICAgICAgIHNtYWxsZXN0R29vZFRvcCAgPSB0b3BHb29kUm93OwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvdW5kID0gZmFsc2U7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgaWYgKHNtYWxsZXN0R29vZFRvcCA8IDApIHsKKyAgICBpZiAoc21hbGxlc3RHb29k
VG9wIDwgMCkKKyAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAqZGVz
dFJvdyA9IHNtYWxsZXN0R29vZFRvcDsKLSAgICBpZiAoZGVzdFNpemUpIHsKKyAgICBpZiAoZGVz
dFNpemUpCisgICAgewogICAgICAgICAqZGVzdFNpemUgPSBzbWFsbGVzdEdvb2RTaXplOwogICAg
IH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE1Myw4ICsxNjQsOCBAQCBib29sIFZhcmlhYmxlUGFj
a2VyOjpDaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMoCiAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8c2g6OlNoYWRlclZhcmlhYmxlPiAmaW5fdmFyaWFibGVzKQogewogICAgIEFTU0VSVCht
YXhWZWN0b3JzID4gMCk7Ci0gICAgbWF4Um93c18gPSBtYXhWZWN0b3JzOwotICAgIHRvcE5vbkZ1
bGxSb3dfID0gMDsKKyAgICBtYXhSb3dzXyAgICAgICAgICA9IG1heFZlY3RvcnM7CisgICAgdG9w
Tm9uRnVsbFJvd18gICAgPSAwOwogICAgIGJvdHRvbU5vbkZ1bGxSb3dfID0gbWF4Um93c18gLSAx
OwogICAgIHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4gdmFyaWFibGVzOwogCkBAIC0x
NjUsOSArMTc2LDExIEBAIGJvb2wgVmFyaWFibGVQYWNrZXI6OkNoZWNrVmFyaWFibGVzV2l0aGlu
UGFja2luZ0xpbWl0cygKICAgICB9CiAKICAgICAvLyBDaGVjayB3aGV0aGVyIGVhY2ggdmFyaWFi
bGUgZml0cyBpbiB0aGUgYXZhaWxhYmxlIHZlY3RvcnMuCi0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB2YXJpYWJsZXMuc2l6ZSgpOyBpKyspIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHZhcmlhYmxlcy5zaXplKCk7IGkrKykKKyAgICB7CiAgICAgICAgIGNvbnN0IHNoOjpTaGFkZXJW
YXJpYWJsZSAmdmFyaWFibGUgPSB2YXJpYWJsZXNbaV07Ci0gICAgICAgIGlmICh2YXJpYWJsZS5l
bGVtZW50Q291bnQoKSA+IG1heFZlY3RvcnMgLyBHZXROdW1Sb3dzKHZhcmlhYmxlLnR5cGUpKSB7
CisgICAgICAgIGlmICh2YXJpYWJsZS5lbGVtZW50Q291bnQoKSA+IG1heFZlY3RvcnMgLyBHZXRO
dW1Sb3dzKHZhcmlhYmxlLnR5cGUpKQorICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0xODAsODMgKzE5Myw5OCBAQCBib29sIFZhcmlhYmxl
UGFja2VyOjpDaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMoCiAKICAgICAvLyBQYWNr
cyB0aGUgNCBjb2x1bW4gdmFyaWFibGVzLgogICAgIHNpemVfdCBpaSA9IDA7Ci0gICAgZm9yICg7
IGlpIDwgdmFyaWFibGVzLnNpemUoKTsgKytpaSkgeworICAgIGZvciAoOyBpaSA8IHZhcmlhYmxl
cy5zaXplKCk7ICsraWkpCisgICAgewogICAgICAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUg
JnZhcmlhYmxlID0gdmFyaWFibGVzW2lpXTsKLSAgICAgICAgaWYgKEdldE51bUNvbXBvbmVudHNQ
ZXJSb3codmFyaWFibGUudHlwZSkgIT0gNCkgeworICAgICAgICBpZiAoR2V0TnVtQ29tcG9uZW50
c1BlclJvdyh2YXJpYWJsZS50eXBlKSAhPSA0KQorICAgICAgICB7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICB0b3BOb25GdWxsUm93XyArPSBHZXROdW1Sb3dzKHZhcmlh
YmxlLnR5cGUpICogdmFyaWFibGUuZWxlbWVudENvdW50KCk7CiAgICAgfQogCi0gICAgaWYgKHRv
cE5vbkZ1bGxSb3dfID4gbWF4Um93c18pIHsKKyAgICBpZiAodG9wTm9uRnVsbFJvd18gPiBtYXhS
b3dzXykKKyAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAvLyBQYWNr
cyB0aGUgMyBjb2x1bW4gdmFyaWFibGVzLgogICAgIGludCBudW0zQ29sdW1uUm93cyA9IDA7Ci0g
ICAgZm9yICg7IGlpIDwgdmFyaWFibGVzLnNpemUoKTsgKytpaSkgeworICAgIGZvciAoOyBpaSA8
IHZhcmlhYmxlcy5zaXplKCk7ICsraWkpCisgICAgewogICAgICAgICBjb25zdCBzaDo6U2hhZGVy
VmFyaWFibGUgJnZhcmlhYmxlID0gdmFyaWFibGVzW2lpXTsKLSAgICAgICAgaWYgKEdldE51bUNv
bXBvbmVudHNQZXJSb3codmFyaWFibGUudHlwZSkgIT0gMykgeworICAgICAgICBpZiAoR2V0TnVt
Q29tcG9uZW50c1BlclJvdyh2YXJpYWJsZS50eXBlKSAhPSAzKQorICAgICAgICB7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBudW0zQ29sdW1uUm93cyArPSBHZXROdW1S
b3dzKHZhcmlhYmxlLnR5cGUpICogdmFyaWFibGUuZWxlbWVudENvdW50KCk7CiAgICAgfQogCi0g
ICAgaWYgKHRvcE5vbkZ1bGxSb3dfICsgbnVtM0NvbHVtblJvd3MgPiBtYXhSb3dzXykgeworICAg
IGlmICh0b3BOb25GdWxsUm93XyArIG51bTNDb2x1bW5Sb3dzID4gbWF4Um93c18pCisgICAgewog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgZmlsbENvbHVtbnModG9wTm9uRnVs
bFJvd18sIG51bTNDb2x1bW5Sb3dzLCAwLCAzKTsKIAogICAgIC8vIFBhY2tzIHRoZSAyIGNvbHVt
biB2YXJpYWJsZXMuCi0gICAgaW50IHRvcDJDb2x1bW5Sb3cgPSB0b3BOb25GdWxsUm93XyArIG51
bTNDb2x1bW5Sb3dzOwotICAgIGludCB0d29Db2x1bW5Sb3dzQXZhaWxhYmxlID0gbWF4Um93c18g
LSB0b3AyQ29sdW1uUm93OworICAgIGludCB0b3AyQ29sdW1uUm93ICAgICAgICAgICAgPSB0b3BO
b25GdWxsUm93XyArIG51bTNDb2x1bW5Sb3dzOworICAgIGludCB0d29Db2x1bW5Sb3dzQXZhaWxh
YmxlICAgPSBtYXhSb3dzXyAtIHRvcDJDb2x1bW5Sb3c7CiAgICAgaW50IHJvd3NBdmFpbGFibGVJ
bkNvbHVtbnMwMSA9IHR3b0NvbHVtblJvd3NBdmFpbGFibGU7CiAgICAgaW50IHJvd3NBdmFpbGFi
bGVJbkNvbHVtbnMyMyA9IHR3b0NvbHVtblJvd3NBdmFpbGFibGU7Ci0gICAgZm9yICg7IGlpIDwg
dmFyaWFibGVzLnNpemUoKTsgKytpaSkgeworICAgIGZvciAoOyBpaSA8IHZhcmlhYmxlcy5zaXpl
KCk7ICsraWkpCisgICAgewogICAgICAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJnZhcmlh
YmxlID0gdmFyaWFibGVzW2lpXTsKLSAgICAgICAgaWYgKEdldE51bUNvbXBvbmVudHNQZXJSb3co
dmFyaWFibGUudHlwZSkgIT0gMikgeworICAgICAgICBpZiAoR2V0TnVtQ29tcG9uZW50c1BlclJv
dyh2YXJpYWJsZS50eXBlKSAhPSAyKQorICAgICAgICB7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICBpbnQgbnVtUm93cyA9IEdldE51bVJvd3ModmFyaWFibGUudHlwZSkg
KiB2YXJpYWJsZS5lbGVtZW50Q291bnQoKTsKLSAgICAgICAgaWYgKG51bVJvd3MgPD0gcm93c0F2
YWlsYWJsZUluQ29sdW1uczAxKSB7CisgICAgICAgIGlmIChudW1Sb3dzIDw9IHJvd3NBdmFpbGFi
bGVJbkNvbHVtbnMwMSkKKyAgICAgICAgewogICAgICAgICAgICAgcm93c0F2YWlsYWJsZUluQ29s
dW1uczAxIC09IG51bVJvd3M7Ci0gICAgICAgIH0gZWxzZSBpZiAobnVtUm93cyA8PSByb3dzQXZh
aWxhYmxlSW5Db2x1bW5zMjMpIHsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChudW1Sb3dz
IDw9IHJvd3NBdmFpbGFibGVJbkNvbHVtbnMyMykKKyAgICAgICAgewogICAgICAgICAgICAgcm93
c0F2YWlsYWJsZUluQ29sdW1uczIzIC09IG51bVJvd3M7Ci0gICAgICAgIH0gZWxzZSB7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpbnQgbnVtUm93c1VzZWRJbkNvbHVtbnMwMSA9Ci0g
ICAgICAgIHR3b0NvbHVtblJvd3NBdmFpbGFibGUgLSByb3dzQXZhaWxhYmxlSW5Db2x1bW5zMDE7
Ci0gICAgaW50IG51bVJvd3NVc2VkSW5Db2x1bW5zMjMgPQotICAgICAgICB0d29Db2x1bW5Sb3dz
QXZhaWxhYmxlIC0gcm93c0F2YWlsYWJsZUluQ29sdW1uczIzOworICAgIGludCBudW1Sb3dzVXNl
ZEluQ29sdW1uczAxID0gdHdvQ29sdW1uUm93c0F2YWlsYWJsZSAtIHJvd3NBdmFpbGFibGVJbkNv
bHVtbnMwMTsKKyAgICBpbnQgbnVtUm93c1VzZWRJbkNvbHVtbnMyMyA9IHR3b0NvbHVtblJvd3NB
dmFpbGFibGUgLSByb3dzQXZhaWxhYmxlSW5Db2x1bW5zMjM7CiAgICAgZmlsbENvbHVtbnModG9w
MkNvbHVtblJvdywgbnVtUm93c1VzZWRJbkNvbHVtbnMwMSwgMCwgMik7Ci0gICAgZmlsbENvbHVt
bnMobWF4Um93c18gLSBudW1Sb3dzVXNlZEluQ29sdW1uczIzLCBudW1Sb3dzVXNlZEluQ29sdW1u
czIzLAotICAgICAgICAgICAgICAgIDIsIDIpOworICAgIGZpbGxDb2x1bW5zKG1heFJvd3NfIC0g
bnVtUm93c1VzZWRJbkNvbHVtbnMyMywgbnVtUm93c1VzZWRJbkNvbHVtbnMyMywgMiwgMik7CiAK
ICAgICAvLyBQYWNrcyB0aGUgMSBjb2x1bW4gdmFyaWFibGVzLgotICAgIGZvciAoOyBpaSA8IHZh
cmlhYmxlcy5zaXplKCk7ICsraWkpIHsKKyAgICBmb3IgKDsgaWkgPCB2YXJpYWJsZXMuc2l6ZSgp
OyArK2lpKQorICAgIHsKICAgICAgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXJpYWJs
ZSA9IHZhcmlhYmxlc1tpaV07CiAgICAgICAgIEFTU0VSVCgxID09IEdldE51bUNvbXBvbmVudHNQ
ZXJSb3codmFyaWFibGUudHlwZSkpOwotICAgICAgICBpbnQgbnVtUm93cyA9IEdldE51bVJvd3Mo
dmFyaWFibGUudHlwZSkgKiB2YXJpYWJsZS5lbGVtZW50Q291bnQoKTsKKyAgICAgICAgaW50IG51
bVJvd3MgICAgICAgID0gR2V0TnVtUm93cyh2YXJpYWJsZS50eXBlKSAqIHZhcmlhYmxlLmVsZW1l
bnRDb3VudCgpOwogICAgICAgICBpbnQgc21hbGxlc3RDb2x1bW4gPSAtMTsKLSAgICAgICAgaW50
IHNtYWxsZXN0U2l6ZSA9IG1heFJvd3NfICsgMTsKLSAgICAgICAgaW50IHRvcFJvdyA9IC0xOwot
ICAgICAgICBmb3IgKGludCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBrTnVtQ29sdW1uczsgKytjb2x1
bW4pIHsKLSAgICAgICAgICAgIGludCByb3cgPSAwOworICAgICAgICBpbnQgc21hbGxlc3RTaXpl
ICAgPSBtYXhSb3dzXyArIDE7CisgICAgICAgIGludCB0b3BSb3cgICAgICAgICA9IC0xOworICAg
ICAgICBmb3IgKGludCBjb2x1bW4gPSAwOyBjb2x1bW4gPCBrTnVtQ29sdW1uczsgKytjb2x1bW4p
CisgICAgICAgIHsKKyAgICAgICAgICAgIGludCByb3cgID0gMDsKICAgICAgICAgICAgIGludCBz
aXplID0gMDsKLSAgICAgICAgICAgIGlmIChzZWFyY2hDb2x1bW4oY29sdW1uLCBudW1Sb3dzLCAm
cm93LCAmc2l6ZSkpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2l6ZSA8IHNtYWxsZXN0U2l6ZSkg
ewotICAgICAgICAgICAgICAgICAgICBzbWFsbGVzdFNpemUgPSBzaXplOworICAgICAgICAgICAg
aWYgKHNlYXJjaENvbHVtbihjb2x1bW4sIG51bVJvd3MsICZyb3csICZzaXplKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoc2l6ZSA8IHNtYWxsZXN0U2l6ZSkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHNtYWxsZXN0U2l6ZSAgID0gc2l6ZTsKICAg
ICAgICAgICAgICAgICAgICAgc21hbGxlc3RDb2x1bW4gPSBjb2x1bW47Ci0gICAgICAgICAgICAg
ICAgICAgIHRvcFJvdyA9IHJvdzsKKyAgICAgICAgICAgICAgICAgICAgdG9wUm93ICAgICAgICAg
PSByb3c7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKHNtYWxsZXN0Q29sdW1uIDwgMCkgeworICAgICAgICBpZiAoc21hbGxlc3RDb2x1
bW4gPCAwKQorICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvVmFyaWFibGVQYWNrZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1ZhcmlhYmxlUGFja2VyLmgKaW5kZXggNWYzOGEwYTk4ZGU3ODJhNTgz
NWEwZjRkYTE3MTYxNmEzNTE4NDEyNi4uYzZhMzIwNjQ5YzE0ZDljM2NmMjAwYTFkYzY5YWE5MGE1
MDc1MTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvVmFyaWFibGVQYWNrZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYXJpYWJsZVBhY2tlci5oCkBAIC0xMCwzMSArMTAs
MzIgQEAKICNpbmNsdWRlIDx2ZWN0b3I+CiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9W
YXJpYWJsZUluZm8uaCIKIAotY2xhc3MgVmFyaWFibGVQYWNrZXIgewotIHB1YmxpYzoKLSAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFzc2VkIGluIHZhcmlhYmxlcyBwYWNrIGluIG1heFZlY3Rv
cnMgZm9sbG93aW5nCi0gICAvLyB0aGUgcGFja2luZyBydWxlcyBmcm9tIHRoZSBHTFNMIDEuMDE3
IHNwZWMsIEFwcGVuZGl4IEEsIHNlY3Rpb24gNy4KLSAgIGJvb2wgQ2hlY2tWYXJpYWJsZXNXaXRo
aW5QYWNraW5nTGltaXRzKHVuc2lnbmVkIGludCBtYXhWZWN0b3JzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlNoYWRlclZh
cmlhYmxlPiAmaW5fdmFyaWFibGVzKTsKLQotICAgLy8gR2V0cyBob3cgbWFueSBjb21wb25lbnRz
IGluIGEgcm93IGEgZGF0YSB0eXBlIHRha2VzLgotICAgc3RhdGljIGludCBHZXROdW1Db21wb25l
bnRzUGVyUm93KHNoOjpHTGVudW0gdHlwZSk7Ci0KLSAgIC8vIEdldHMgaG93IG1hbnkgcm93cyBh
IGRhdGEgdHlwZSB0YWtlcy4KLSAgIHN0YXRpYyBpbnQgR2V0TnVtUm93cyhzaDo6R0xlbnVtIHR5
cGUpOwotCi0gcHJpdmF0ZToKLSAgIHN0YXRpYyBjb25zdCBpbnQga051bUNvbHVtbnMgICAgICA9
IDQ7Ci0gICBzdGF0aWMgY29uc3QgdW5zaWduZWQga0NvbHVtbk1hc2sgPSAoMSA8PCBrTnVtQ29s
dW1ucykgLSAxOwotCi0gICB1bnNpZ25lZCBtYWtlQ29sdW1uRmxhZ3MoaW50IGNvbHVtbiwgaW50
IG51bUNvbXBvbmVudHNQZXJSb3cpOwotICAgdm9pZCBmaWxsQ29sdW1ucyhpbnQgdG9wUm93LCBp
bnQgbnVtUm93cywgaW50IGNvbHVtbiwgaW50IG51bUNvbXBvbmVudHNQZXJSb3cpOwotICAgYm9v
bCBzZWFyY2hDb2x1bW4oaW50IGNvbHVtbiwgaW50IG51bVJvd3MsIGludCAqZGVzdFJvdywgaW50
ICpkZXN0U2l6ZSk7Ci0KLSAgIGludCB0b3BOb25GdWxsUm93XzsKLSAgIGludCBib3R0b21Ob25G
dWxsUm93XzsKLSAgIGludCBtYXhSb3dzXzsKLSAgIHN0ZDo6dmVjdG9yPHVuc2lnbmVkPiByb3dz
XzsKK2NsYXNzIFZhcmlhYmxlUGFja2VyCit7CisgIHB1YmxpYzoKKyAgICAvLyBSZXR1cm5zIHRy
dWUgaWYgdGhlIHBhc3NlZCBpbiB2YXJpYWJsZXMgcGFjayBpbiBtYXhWZWN0b3JzIGZvbGxvd2lu
ZworICAgIC8vIHRoZSBwYWNraW5nIHJ1bGVzIGZyb20gdGhlIEdMU0wgMS4wMTcgc3BlYywgQXBw
ZW5kaXggQSwgc2VjdGlvbiA3LgorICAgIGJvb2wgQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5n
TGltaXRzKHVuc2lnbmVkIGludCBtYXhWZWN0b3JzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4g
JmluX3ZhcmlhYmxlcyk7CisKKyAgICAvLyBHZXRzIGhvdyBtYW55IGNvbXBvbmVudHMgaW4gYSBy
b3cgYSBkYXRhIHR5cGUgdGFrZXMuCisgICAgc3RhdGljIGludCBHZXROdW1Db21wb25lbnRzUGVy
Um93KHNoOjpHTGVudW0gdHlwZSk7CisKKyAgICAvLyBHZXRzIGhvdyBtYW55IHJvd3MgYSBkYXRh
IHR5cGUgdGFrZXMuCisgICAgc3RhdGljIGludCBHZXROdW1Sb3dzKHNoOjpHTGVudW0gdHlwZSk7
CisKKyAgcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgaW50IGtOdW1Db2x1bW5zICAgICAgPSA0
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBrQ29sdW1uTWFzayA9ICgxIDw8IGtOdW1Db2x1
bW5zKSAtIDE7CisKKyAgICB1bnNpZ25lZCBtYWtlQ29sdW1uRmxhZ3MoaW50IGNvbHVtbiwgaW50
IG51bUNvbXBvbmVudHNQZXJSb3cpOworICAgIHZvaWQgZmlsbENvbHVtbnMoaW50IHRvcFJvdywg
aW50IG51bVJvd3MsIGludCBjb2x1bW4sIGludCBudW1Db21wb25lbnRzUGVyUm93KTsKKyAgICBi
b29sIHNlYXJjaENvbHVtbihpbnQgY29sdW1uLCBpbnQgbnVtUm93cywgaW50ICpkZXN0Um93LCBp
bnQgKmRlc3RTaXplKTsKKworICAgIGludCB0b3BOb25GdWxsUm93XzsKKyAgICBpbnQgYm90dG9t
Tm9uRnVsbFJvd187CisgICAgaW50IG1heFJvd3NfOworICAgIHN0ZDo6dmVjdG9yPHVuc2lnbmVk
PiByb3dzXzsKIH07CiAKLSNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1ZBUklBQkxFUEFD
S0VSX0hfCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfVkFSSUFCTEVQQUNLRVJfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1ZlcnNpb25HTFNMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1ZlcnNpb25HTFNMLmNwcAppbmRleCA1YzBjNTE5MTRmZGE4MTk1NDFlMzFl
NTRlMjc3MjM1NTU4YjFiY2NlLi45MzgzMjViMzVjOWIxZDJjYzk1ZDE1OWMyYmJlMjM3MmJlMTRk
MGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9WZXJzaW9uR0xTTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvVmVyc2lvbkdMU0wuY3BwCkBAIC02LDIyICs2LDQwIEBACiAK
ICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1ZlcnNpb25HTFNMLmgiCiAKKyNpbmNsdWRl
ICJhbmdsZV9nbC5oIgorCituYW1lc3BhY2Ugc2gKK3sKKwogaW50IFNoYWRlck91dHB1dFR5cGVU
b0dMU0xWZXJzaW9uKFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKIHsKICAgICBzd2l0Y2ggKG91dHB1
dCkKICAgICB7Ci0gICAgICBjYXNlIFNIX0dMU0xfMTMwX09VVFBVVDogICAgICAgICAgIHJldHVy
biBHTFNMX1ZFUlNJT05fMTMwOwotICAgICAgY2FzZSBTSF9HTFNMXzE0MF9PVVRQVVQ6ICAgICAg
ICAgICByZXR1cm4gR0xTTF9WRVJTSU9OXzE0MDsKLSAgICAgIGNhc2UgU0hfR0xTTF8xNTBfQ09S
RV9PVVRQVVQ6ICAgICAgcmV0dXJuIEdMU0xfVkVSU0lPTl8xNTA7Ci0gICAgICBjYXNlIFNIX0dM
U0xfMzMwX0NPUkVfT1VUUFVUOiAgICAgIHJldHVybiBHTFNMX1ZFUlNJT05fMzMwOwotICAgICAg
Y2FzZSBTSF9HTFNMXzQwMF9DT1JFX09VVFBVVDogICAgICByZXR1cm4gR0xTTF9WRVJTSU9OXzQw
MDsKLSAgICAgIGNhc2UgU0hfR0xTTF80MTBfQ09SRV9PVVRQVVQ6ICAgICAgcmV0dXJuIEdMU0xf
VkVSU0lPTl80MTA7Ci0gICAgICBjYXNlIFNIX0dMU0xfNDIwX0NPUkVfT1VUUFVUOiAgICAgIHJl
dHVybiBHTFNMX1ZFUlNJT05fNDIwOwotICAgICAgY2FzZSBTSF9HTFNMXzQzMF9DT1JFX09VVFBV
VDogICAgICByZXR1cm4gR0xTTF9WRVJTSU9OXzQzMDsKLSAgICAgIGNhc2UgU0hfR0xTTF80NDBf
Q09SRV9PVVRQVVQ6ICAgICAgcmV0dXJuIEdMU0xfVkVSU0lPTl80NDA7Ci0gICAgICBjYXNlIFNI
X0dMU0xfNDUwX0NPUkVfT1VUUFVUOiAgICAgIHJldHVybiBHTFNMX1ZFUlNJT05fNDUwOwotICAg
ICAgY2FzZSBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVUOiByZXR1cm4gR0xTTF9WRVJTSU9O
XzExMDsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIGNhc2UgU0hfR0xTTF8xMzBfT1VUUFVUOgorICAgICAgICAgICAgcmV0dXJuIEdM
U0xfVkVSU0lPTl8xMzA7CisgICAgICAgIGNhc2UgU0hfR0xTTF8xNDBfT1VUUFVUOgorICAgICAg
ICAgICAgcmV0dXJuIEdMU0xfVkVSU0lPTl8xNDA7CisgICAgICAgIGNhc2UgU0hfR0xTTF8xNTBf
Q09SRV9PVVRQVVQ6CisgICAgICAgICAgICByZXR1cm4gR0xTTF9WRVJTSU9OXzE1MDsKKyAgICAg
ICAgY2FzZSBTSF9HTFNMXzMzMF9DT1JFX09VVFBVVDoKKyAgICAgICAgICAgIHJldHVybiBHTFNM
X1ZFUlNJT05fMzMwOworICAgICAgICBjYXNlIFNIX0dMU0xfNDAwX0NPUkVfT1VUUFVUOgorICAg
ICAgICAgICAgcmV0dXJuIEdMU0xfVkVSU0lPTl80MDA7CisgICAgICAgIGNhc2UgU0hfR0xTTF80
MTBfQ09SRV9PVVRQVVQ6CisgICAgICAgICAgICByZXR1cm4gR0xTTF9WRVJTSU9OXzQxMDsKKyAg
ICAgICAgY2FzZSBTSF9HTFNMXzQyMF9DT1JFX09VVFBVVDoKKyAgICAgICAgICAgIHJldHVybiBH
TFNMX1ZFUlNJT05fNDIwOworICAgICAgICBjYXNlIFNIX0dMU0xfNDMwX0NPUkVfT1VUUFVUOgor
ICAgICAgICAgICAgcmV0dXJuIEdMU0xfVkVSU0lPTl80MzA7CisgICAgICAgIGNhc2UgU0hfR0xT
TF80NDBfQ09SRV9PVVRQVVQ6CisgICAgICAgICAgICByZXR1cm4gR0xTTF9WRVJTSU9OXzQ0MDsK
KyAgICAgICAgY2FzZSBTSF9HTFNMXzQ1MF9DT1JFX09VVFBVVDoKKyAgICAgICAgICAgIHJldHVy
biBHTFNMX1ZFUlNJT05fNDUwOworICAgICAgICBjYXNlIFNIX0dMU0xfQ09NUEFUSUJJTElUWV9P
VVRQVVQ6CisgICAgICAgICAgICByZXR1cm4gR0xTTF9WRVJTSU9OXzExMDsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiB9CiAKQEAgLTQyLDkgKzYwLDcgQEAgaW50IFNoYWRlck91dHB1dFR5cGVUb0dMU0xW
ZXJzaW9uKFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKIC8vICAgIEdMU0wgMS4yIHJlbGF4ZWQgdGhl
IHJlc3RyaWN0aW9uIG9uIGFycmF5cywgc2VjdGlvbiA1Ljg6ICJWYXJpYWJsZXMgdGhhdAogLy8g
ICAgYXJlIGJ1aWx0LWluIHR5cGVzLCBlbnRpcmUgc3RydWN0dXJlcyBvciBhcnJheXMuLi4gYXJl
IGFsbCBsLXZhbHVlcy4iCiAvLwotVFZlcnNpb25HTFNMOjpUVmVyc2lvbkdMU0woc2g6OkdMZW51
bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFByYWdtYSAmcHJhZ21h
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0KQorVFZl
cnNpb25HTFNMOjpUVmVyc2lvbkdMU0woc2g6OkdMZW51bSB0eXBlLCBjb25zdCBUUHJhZ21hICZw
cmFnbWEsIFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1
ZSwgZmFsc2UsIGZhbHNlKQogewogICAgIG1WZXJzaW9uID0gU2hhZGVyT3V0cHV0VHlwZVRvR0xT
TFZlcnNpb24ob3V0cHV0KTsKQEAgLTUyLDYgKzY4LDEwIEBAIFRWZXJzaW9uR0xTTDo6VFZlcnNp
b25HTFNMKHNoOjpHTGVudW0gdHlwZSwKICAgICB7CiAgICAgICAgIGVuc3VyZVZlcnNpb25Jc0F0
TGVhc3QoR0xTTF9WRVJTSU9OXzEyMCk7CiAgICAgfQorICAgIGlmICh0eXBlID09IEdMX0NPTVBV
VEVfU0hBREVSKQorICAgIHsKKyAgICAgICAgZW5zdXJlVmVyc2lvbklzQXRMZWFzdChHTFNMX1ZF
UlNJT05fNDMwKTsKKyAgICB9CiB9CiAKIHZvaWQgVFZlcnNpb25HTFNMOjp2aXNpdFN5bWJvbChU
SW50ZXJtU3ltYm9sICpub2RlKQpAQCAtNjIsNTQgKzgyLDU1IEBAIHZvaWQgVFZlcnNpb25HTFNM
Ojp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKQogICAgIH0KIH0KIAotYm9vbCBUVmVy
c2lvbkdMU0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQor
Ym9vbCBUVmVyc2lvbkdMU0w6OnZpc2l0RGVjbGFyYXRpb24oVmlzaXQsIFRJbnRlcm1EZWNsYXJh
dGlvbiAqbm9kZSkKIHsKLSAgICBib29sIHZpc2l0Q2hpbGRyZW4gPSB0cnVlOworICAgIGNvbnN0
IFRJbnRlcm1TZXF1ZW5jZSAmc2VxdWVuY2UgPSAqKG5vZGUtPmdldFNlcXVlbmNlKCkpOworICAg
IGlmIChzZXF1ZW5jZS5mcm9udCgpLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKS5pc0ludmFyaWFu
dCgpKQorICAgIHsKKyAgICAgICAgZW5zdXJlVmVyc2lvbklzQXRMZWFzdChHTFNMX1ZFUlNJT05f
MTIwKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICBzd2l0Y2ggKG5vZGUtPmdl
dE9wKCkpCitib29sIFRWZXJzaW9uR0xTTDo6dmlzaXRJbnZhcmlhbnREZWNsYXJhdGlvbihWaXNp
dCwgVEludGVybUludmFyaWFudERlY2xhcmF0aW9uICpub2RlKQoreworICAgIGVuc3VyZVZlcnNp
b25Jc0F0TGVhc3QoR0xTTF9WRVJTSU9OXzEyMCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgVFZlcnNpb25HTFNMOjp2aXNpdEZ1bmN0aW9uUHJvdG90eXBlKFZpc2l0LCBUSW50ZXJtRnVu
Y3Rpb25Qcm90b3R5cGUgKm5vZGUpCit7CisgICAgY29uc3QgVEludGVybVNlcXVlbmNlICZwYXJh
bXMgPSAqKG5vZGUtPmdldFNlcXVlbmNlKCkpOworICAgIGZvciAoVEludGVybVNlcXVlbmNlOjpj
b25zdF9pdGVyYXRvciBpdGVyID0gcGFyYW1zLmJlZ2luKCk7IGl0ZXIgIT0gcGFyYW1zLmVuZCgp
OyArK2l0ZXIpCiAgICAgewotICAgICAgY2FzZSBFT3BEZWNsYXJhdGlvbjoKKyAgICAgICAgY29u
c3QgVEludGVybVR5cGVkICpwYXJhbSA9ICgqaXRlciktPmdldEFzVHlwZWQoKTsKKyAgICAgICAg
aWYgKHBhcmFtLT5pc0FycmF5KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRJbnRl
cm1TZXF1ZW5jZSAmc2VxdWVuY2UgPSAqKG5vZGUtPmdldFNlcXVlbmNlKCkpOwotICAgICAgICAg
ICAgaWYgKHNlcXVlbmNlLmZyb250KCktPmdldEFzVHlwZWQoKS0+Z2V0VHlwZSgpLmlzSW52YXJp
YW50KCkpCisgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9IHBhcmFtLT5nZXRRdWFs
aWZpZXIoKTsKKyAgICAgICAgICAgIGlmICgocXVhbGlmaWVyID09IEV2cU91dCkgfHwgKHF1YWxp
ZmllciA9PSBFdnFJbk91dCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgZW5zdXJl
VmVyc2lvbklzQXRMZWFzdChHTFNMX1ZFUlNJT05fMTIwKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICBj
YXNlIEVPcEludmFyaWFudERlY2xhcmF0aW9uOgotICAgICAgICBlbnN1cmVWZXJzaW9uSXNBdExl
YXN0KEdMU0xfVkVSU0lPTl8xMjApOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wUGFy
YW1ldGVyczoKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVEludGVybVNlcXVlbmNlICZw
YXJhbXMgPSAqKG5vZGUtPmdldFNlcXVlbmNlKCkpOwotICAgICAgICAgICAgZm9yIChUSW50ZXJt
U2VxdWVuY2U6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwYXJhbXMuYmVnaW4oKTsKLSAgICAgICAg
ICAgICAgICAgaXRlciAhPSBwYXJhbXMuZW5kKCk7ICsraXRlcikKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjb25zdCBUSW50ZXJtVHlwZWQgKnBhcmFtID0gKCppdGVyKS0+Z2V0QXNU
eXBlZCgpOwotICAgICAgICAgICAgICAgIGlmIChwYXJhbS0+aXNBcnJheSgpKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBwYXJh
bS0+Z2V0UXVhbGlmaWVyKCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgocXVhbGlmaWVyID09
IEV2cU91dCkgfHwgKHF1YWxpZmllciA9PSAgRXZxSW5PdXQpKQotICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbnN1cmVWZXJzaW9uSXNBdExlYXN0KEdMU0xf
VkVSU0lPTl8xMjApOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAvLyBGdWxseSBwcm9jZXNzZWQuIE5vIG5lZWQgdG8gdmlzaXQgY2hpbGRyZW4uCi0gICAgICAg
ICAgICB2aXNpdENoaWxkcmVuID0gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RN
YXQyeDM6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDJ4NDoKLSAgICAgIGNhc2UgRU9wQ29u
c3RydWN0TWF0M3gyOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzOgotICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RNYXQzeDQ6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDR4MjoKLSAgICAg
IGNhc2UgRU9wQ29uc3RydWN0TWF0NHgzOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0Ogor
ICAgIH0KKyAgICAvLyBGdWxseSBwcm9jZXNzZWQuIE5vIG5lZWQgdG8gdmlzaXQgY2hpbGRyZW4u
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFRWZXJzaW9uR0xTTDo6dmlzaXRBZ2dyZWdh
dGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCit7CisgICAgc3dpdGNoIChub2RlLT5n
ZXRPcCgpKQorICAgIHsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyOgorICAgICAgICBj
YXNlIEVPcENvbnN0cnVjdE1hdDJ4MzoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyeDQ6
CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0M3gyOgorICAgICAgICBjYXNlIEVPcENvbnN0
cnVjdE1hdDM6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0M3g0OgorICAgICAgICBjYXNl
IEVPcENvbnN0cnVjdE1hdDR4MjoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0eDM6Cisg
ICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NDoKICAgICAgICAgewogICAgICAgICAgICAgY29u
c3QgVEludGVybVNlcXVlbmNlICZzZXF1ZW5jZSA9ICoobm9kZS0+Z2V0U2VxdWVuY2UoKSk7CiAg
ICAgICAgICAgICBpZiAoc2VxdWVuY2Uuc2l6ZSgpID09IDEpCkBAIC0xMjIsMTEgKzE0MywxMCBA
QCBib29sIFRWZXJzaW9uR0xTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdh
dGUgKm5vZGUpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQot
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBicmVhazsKICAgICB9Ci0KLSAgICByZXR1cm4gdmlzaXRDaGlsZHJlbjsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogdm9pZCBUVmVyc2lvbkdMU0w6OmVuc3VyZVZlcnNpb25Jc0F0TGVhc3Qo
aW50IHZlcnNpb24pCkBAIC0xMzQsMyArMTU0LDQgQEAgdm9pZCBUVmVyc2lvbkdMU0w6OmVuc3Vy
ZVZlcnNpb25Jc0F0TGVhc3QoaW50IHZlcnNpb24pCiAgICAgbVZlcnNpb24gPSBzdGQ6Om1heCh2
ZXJzaW9uLCBtVmVyc2lvbik7CiB9CiAKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmVyc2lvbkdM
U0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Zl
cnNpb25HTFNMLmgKaW5kZXggYzQxMDY5ZDQyZGZiNDQ4YTA0NjMwYzA4NTUyODE1NjliYjAwNWFl
My4uOWNmNzI3YzE0MjIzMDVkNDE0MDJkNmU3ZWM2OGNlNmMyMTFiNTM1YiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmVyc2lvbkdM
U0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9WZXJzaW9uR0xTTC5oCkBAIC0xMSw2ICsxMSw5IEBACiAKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL1ByYWdtYS5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogc3RhdGljIGNvbnN0IGlu
dCBHTFNMX1ZFUlNJT05fMTEwID0gMTEwOwogc3RhdGljIGNvbnN0IGludCBHTFNMX1ZFUlNJT05f
MTIwID0gMTIwOwogc3RhdGljIGNvbnN0IGludCBHTFNMX1ZFUlNJT05fMTMwID0gMTMwOwpAQCAt
NTYsOCArNTksMTEgQEAgY2xhc3MgVFZlcnNpb25HTFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJz
ZXIKICAgICAvLyAgIEVsc2UgMTEwIGlzIHJldHVybmVkLgogICAgIGludCBnZXRWZXJzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbVZlcnNpb247IH0KIAotICAgIHZvaWQgdmlzaXRTeW1ib2woVEludGVy
bVN5bWJvbCAqKSBvdmVycmlkZTsKLSAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50
ZXJtQWdncmVnYXRlICopIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5
bWJvbCAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCwgVElu
dGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEludmFyaWFudERl
Y2xhcmF0aW9uKFZpc2l0LCBUSW50ZXJtSW52YXJpYW50RGVjbGFyYXRpb24gKm5vZGUpIG92ZXJy
aWRlOworICAgIGJvb2wgdmlzaXRGdW5jdGlvblByb3RvdHlwZShWaXNpdCwgVEludGVybUZ1bmN0
aW9uUHJvdG90eXBlICpub2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0RGVjbGFyYXRpb24o
VmlzaXQsIFRJbnRlcm1EZWNsYXJhdGlvbiAqbm9kZSkgb3ZlcnJpZGU7CiAKICAgcHJpdmF0ZToK
ICAgICB2b2lkIGVuc3VyZVZlcnNpb25Jc0F0TGVhc3QoaW50IHZlcnNpb24pOwpAQCAtNjUsNCAr
NzEsNiBAQCBjbGFzcyBUVmVyc2lvbkdMU0wgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAg
IGludCBtVmVyc2lvbjsKIH07CiAKK30gIC8vIG5hbWVzcGFjZSBzaAorCiAjZW5kaWYgIC8vIENP
TVBJTEVSX1RSQU5TTEFUT1JfVkVSU0lPTkdMU0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2Jsb2NrbGF5b3V0LmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2Jsb2NrbGF5b3V0
LmNwcAppbmRleCBiYTYzMjI4NDhlN2Q1NTJlYWM3MzBlOWQ4ZWE1YWJlN2QyMGQxN2Q4Li4zMzA5
MGE5YmY1YWNhY2U0ZThkNWQ0ZDkxY2FkYWY1NTQzOTk0MWVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91dC5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvYmxv
Y2tsYXlvdXQuY3BwCkBAIC0xNSwxMiArMTUsMTMgQEAKIG5hbWVzcGFjZSBzaAogewogCi1CbG9j
a0xheW91dEVuY29kZXI6OkJsb2NrTGF5b3V0RW5jb2RlcigpCi0gICAgOiBtQ3VycmVudE9mZnNl
dCgwKQorQmxvY2tMYXlvdXRFbmNvZGVyOjpCbG9ja0xheW91dEVuY29kZXIoKSA6IG1DdXJyZW50
T2Zmc2V0KDApCiB7CiB9CiAKLUJsb2NrTWVtYmVySW5mbyBCbG9ja0xheW91dEVuY29kZXI6OmVu
Y29kZVR5cGUoR0xlbnVtIHR5cGUsIHVuc2lnbmVkIGludCBhcnJheVNpemUsIGJvb2wgaXNSb3dN
YWpvck1hdHJpeCkKK0Jsb2NrTWVtYmVySW5mbyBCbG9ja0xheW91dEVuY29kZXI6OmVuY29kZVR5
cGUoR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVuc2lnbmVkIGludCBhcnJheVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNSb3dNYWpvck1hdHJpeCkKIHsKICAgICBpbnQg
YXJyYXlTdHJpZGU7CiAgICAgaW50IG1hdHJpeFN0cmlkZTsKQEAgLTY4LDQ0ICs2OSw1MiBAQCB2
b2lkIFN0ZDE0MEJsb2NrRW5jb2Rlcjo6ZXhpdEFnZ3JlZ2F0ZVR5cGUoKQogICAgIG5leHRSZWdp
c3RlcigpOwogfQogCi12b2lkIFN0ZDE0MEJsb2NrRW5jb2Rlcjo6Z2V0QmxvY2tMYXlvdXRJbmZv
KEdMZW51bSB0eXBlLCB1bnNpZ25lZCBpbnQgYXJyYXlTaXplLCBib29sIGlzUm93TWFqb3JNYXRy
aXgsIGludCAqYXJyYXlTdHJpZGVPdXQsIGludCAqbWF0cml4U3RyaWRlT3V0KQordm9pZCBTdGQx
NDBCbG9ja0VuY29kZXI6OmdldEJsb2NrTGF5b3V0SW5mbyhHTGVudW0gdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGFycmF5U2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1Jv
d01ham9yTWF0cml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgKmFycmF5U3RyaWRlT3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgKm1hdHJpeFN0cmlkZU91dCkKIHsKICAgICAvLyBXZSBhc3N1bWUgd2Ug
YXJlIG9ubHkgZGVhbGluZyB3aXRoIDQgYnl0ZSBjb21wb25lbnRzIChubyBkb3VibGVzIG9yIGhh
bGYtd29yZHMgY3VycmVudGx5KQogICAgIEFTU0VSVChnbDo6VmFyaWFibGVDb21wb25lbnRTaXpl
KGdsOjpWYXJpYWJsZUNvbXBvbmVudFR5cGUodHlwZSkpID09IEJ5dGVzUGVyQ29tcG9uZW50KTsK
IAogICAgIHNpemVfdCBiYXNlQWxpZ25tZW50ID0gMDsKLSAgICBpbnQgbWF0cml4U3RyaWRlID0g
MDsKLSAgICBpbnQgYXJyYXlTdHJpZGUgPSAwOworICAgIGludCBtYXRyaXhTdHJpZGUgICAgID0g
MDsKKyAgICBpbnQgYXJyYXlTdHJpZGUgICAgICA9IDA7CiAKICAgICBpZiAoZ2w6OklzTWF0cml4
VHlwZSh0eXBlKSkKICAgICB7CiAgICAgICAgIGJhc2VBbGlnbm1lbnQgPSBDb21wb25lbnRzUGVy
UmVnaXN0ZXI7Ci0gICAgICAgIG1hdHJpeFN0cmlkZSA9IENvbXBvbmVudHNQZXJSZWdpc3RlcjsK
KyAgICAgICAgbWF0cml4U3RyaWRlICA9IENvbXBvbmVudHNQZXJSZWdpc3RlcjsKIAogICAgICAg
ICBpZiAoYXJyYXlTaXplID4gMCkKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgaW50IG51
bVJlZ2lzdGVycyA9IGdsOjpNYXRyaXhSZWdpc3RlckNvdW50KHR5cGUsIGlzUm93TWFqb3JNYXRy
aXgpOwotICAgICAgICAgICAgYXJyYXlTdHJpZGUgPSBDb21wb25lbnRzUGVyUmVnaXN0ZXIgKiBu
dW1SZWdpc3RlcnM7CisgICAgICAgICAgICBhcnJheVN0cmlkZSAgICAgICAgICAgID0gQ29tcG9u
ZW50c1BlclJlZ2lzdGVyICogbnVtUmVnaXN0ZXJzOwogICAgICAgICB9CiAgICAgfQogICAgIGVs
c2UgaWYgKGFycmF5U2l6ZSA+IDApCiAgICAgewogICAgICAgICBiYXNlQWxpZ25tZW50ID0gQ29t
cG9uZW50c1BlclJlZ2lzdGVyOwotICAgICAgICBhcnJheVN0cmlkZSA9IENvbXBvbmVudHNQZXJS
ZWdpc3RlcjsKKyAgICAgICAgYXJyYXlTdHJpZGUgICA9IENvbXBvbmVudHNQZXJSZWdpc3RlcjsK
ICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgY29uc3QgaW50IG51bUNvbXBvbmVudHMg
PSBnbDo6VmFyaWFibGVDb21wb25lbnRDb3VudCh0eXBlKTsKLSAgICAgICAgYmFzZUFsaWdubWVu
dCA9IChudW1Db21wb25lbnRzID09IDMgPyA0dSA6IHN0YXRpY19jYXN0PHNpemVfdD4obnVtQ29t
cG9uZW50cykpOworICAgICAgICBiYXNlQWxpZ25tZW50ICAgICAgICAgICA9IChudW1Db21wb25l
bnRzID09IDMgPyA0dSA6IHN0YXRpY19jYXN0PHNpemVfdD4obnVtQ29tcG9uZW50cykpOwogICAg
IH0KIAogICAgIG1DdXJyZW50T2Zmc2V0ID0gcng6OnJvdW5kVXAobUN1cnJlbnRPZmZzZXQsIGJh
c2VBbGlnbm1lbnQpOwogCiAgICAgKm1hdHJpeFN0cmlkZU91dCA9IG1hdHJpeFN0cmlkZTsKLSAg
ICAqYXJyYXlTdHJpZGVPdXQgPSBhcnJheVN0cmlkZTsKKyAgICAqYXJyYXlTdHJpZGVPdXQgID0g
YXJyYXlTdHJpZGU7CiB9CiAKLXZvaWQgU3RkMTQwQmxvY2tFbmNvZGVyOjphZHZhbmNlT2Zmc2V0
KEdMZW51bSB0eXBlLCB1bnNpZ25lZCBpbnQgYXJyYXlTaXplLCBib29sIGlzUm93TWFqb3JNYXRy
aXgsIGludCBhcnJheVN0cmlkZSwgaW50IG1hdHJpeFN0cmlkZSkKK3ZvaWQgU3RkMTQwQmxvY2tF
bmNvZGVyOjphZHZhbmNlT2Zmc2V0KEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGFycmF5U2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNSb3dNYWpvck1hdHJpeCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhcnJheVN0cmlkZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXRyaXhTdHJpZGUpCiB7CiAgICAg
aWYgKGFycmF5U2l6ZSA+IDApCiAgICAgewpAQCAtMTIyLDUgKzEzMSw0IEBAIHZvaWQgU3RkMTQw
QmxvY2tFbmNvZGVyOjphZHZhbmNlT2Zmc2V0KEdMZW51bSB0eXBlLCB1bnNpZ25lZCBpbnQgYXJy
YXlTaXplLCBib29sCiAgICAgICAgIG1DdXJyZW50T2Zmc2V0ICs9IGdsOjpWYXJpYWJsZUNvbXBv
bmVudENvdW50KHR5cGUpOwogICAgIH0KIH0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvYmxvY2tsYXlvdXQuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2Jsb2NrbGF5b3V0LmgK
aW5kZXggZGQ1ZmUwNzM3NmM4MWI0OGE3YmUzMGJlYTU5MDBlOGE2ZTVmMWQzMS4uY2FhODJlNjVl
YTgxOGVlN2Y0MTM0NzVkMTlhNmZiY2EyNmExYjI2NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvYmxvY2tsYXlvdXQuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91
dC5oCkBAIC0yNCw3ICsyNCw3IEBAIHN0cnVjdCBVbmlmb3JtOwogc3RydWN0IFZhcnlpbmc7CiBz
dHJ1Y3QgSW50ZXJmYWNlQmxvY2s7CiAKLXN0cnVjdCBDT01QSUxFUl9FWFBPUlQgQmxvY2tNZW1i
ZXJJbmZvCitzdHJ1Y3QgQmxvY2tNZW1iZXJJbmZvCiB7CiAgICAgQmxvY2tNZW1iZXJJbmZvKCkg
OiBvZmZzZXQoLTEpLCBhcnJheVN0cmlkZSgtMSksIG1hdHJpeFN0cmlkZSgtMSksIGlzUm93TWFq
b3JNYXRyaXgoZmFsc2UpIHt9CiAKQEAgLTMzLDIwICszMywxOCBAQCBzdHJ1Y3QgQ09NUElMRVJf
RVhQT1JUIEJsb2NrTWVtYmVySW5mbwogICAgICAgICAgIGFycmF5U3RyaWRlKGFycmF5U3RyaWRl
KSwKICAgICAgICAgICBtYXRyaXhTdHJpZGUobWF0cml4U3RyaWRlKSwKICAgICAgICAgICBpc1Jv
d01ham9yTWF0cml4KGlzUm93TWFqb3JNYXRyaXgpCi0gICAge30KLQotICAgIHN0YXRpYyBCbG9j
a01lbWJlckluZm8gZ2V0RGVmYXVsdEJsb2NrSW5mbygpCiAgICAgewotICAgICAgICByZXR1cm4g
QmxvY2tNZW1iZXJJbmZvKC0xLCAtMSwgLTEsIGZhbHNlKTsKICAgICB9CiAKKyAgICBzdGF0aWMg
QmxvY2tNZW1iZXJJbmZvIGdldERlZmF1bHRCbG9ja0luZm8oKSB7IHJldHVybiBCbG9ja01lbWJl
ckluZm8oLTEsIC0xLCAtMSwgZmFsc2UpOyB9CisKICAgICBpbnQgb2Zmc2V0OwogICAgIGludCBh
cnJheVN0cmlkZTsKICAgICBpbnQgbWF0cml4U3RyaWRlOwogICAgIGJvb2wgaXNSb3dNYWpvck1h
dHJpeDsKIH07CiAKLWNsYXNzIENPTVBJTEVSX0VYUE9SVCBCbG9ja0xheW91dEVuY29kZXIKK2Ns
YXNzIEJsb2NrTGF5b3V0RW5jb2RlcgogewogICBwdWJsaWM6CiAgICAgQmxvY2tMYXlvdXRFbmNv
ZGVyKCk7CkBAIC01Nyw5ICs1NSw5IEBAIGNsYXNzIENPTVBJTEVSX0VYUE9SVCBCbG9ja0xheW91
dEVuY29kZXIKICAgICBzaXplX3QgZ2V0QmxvY2tTaXplKCkgY29uc3QgeyByZXR1cm4gbUN1cnJl
bnRPZmZzZXQgKiBCeXRlc1BlckNvbXBvbmVudDsgfQogCiAgICAgdmlydHVhbCB2b2lkIGVudGVy
QWdncmVnYXRlVHlwZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZXhpdEFnZ3JlZ2F0ZVR5cGUo
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGV4aXRBZ2dyZWdhdGVUeXBlKCkgID0gMDsKIAotICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgQnl0ZXNQZXJDb21wb25lbnQgPSA0dTsKKyAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IEJ5dGVzUGVyQ29tcG9uZW50ICAgICAgICAgICA9IDR1OwogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBpbnQgQ29tcG9uZW50c1BlclJlZ2lzdGVyID0gNHU7CiAKICAgICBz
dGF0aWMgc2l6ZV90IGdldEJsb2NrUmVnaXN0ZXIoY29uc3QgQmxvY2tNZW1iZXJJbmZvICZpbmZv
KTsKQEAgLTcwLDE0ICs2OCwyMiBAQCBjbGFzcyBDT01QSUxFUl9FWFBPUlQgQmxvY2tMYXlvdXRF
bmNvZGVyCiAKICAgICB2b2lkIG5leHRSZWdpc3RlcigpOwogCi0gICAgdmlydHVhbCB2b2lkIGdl
dEJsb2NrTGF5b3V0SW5mbyhHTGVudW0gdHlwZSwgdW5zaWduZWQgaW50IGFycmF5U2l6ZSwgYm9v
bCBpc1Jvd01ham9yTWF0cml4LCBpbnQgKmFycmF5U3RyaWRlT3V0LCBpbnQgKm1hdHJpeFN0cmlk
ZU91dCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhZHZhbmNlT2Zmc2V0KEdMZW51bSB0eXBlLCB1
bnNpZ25lZCBpbnQgYXJyYXlTaXplLCBib29sIGlzUm93TWFqb3JNYXRyaXgsIGludCBhcnJheVN0
cmlkZSwgaW50IG1hdHJpeFN0cmlkZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRCbG9ja0xh
eW91dEluZm8oR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgYXJyYXlTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBpc1Jvd01ham9yTWF0cml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50ICphcnJheVN0cmlkZU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCAqbWF0cml4U3RyaWRlT3V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFk
dmFuY2VPZmZzZXQoR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IGFycmF5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGlzUm93TWFqb3JNYXRyaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IGFycmF5U3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXRyaXhT
dHJpZGUpID0gMDsKIH07CiAKIC8vIEJsb2NrIGxheW91dCBhY2NvcmRpbmcgdG8gdGhlIHN0ZDE0
MCBibG9jayBsYXlvdXQKIC8vIFNlZSAiU3RhbmRhcmQgVW5pZm9ybSBCbG9jayBMYXlvdXQiIGlu
IFNlY3Rpb24gMi4xMS42IG9mIHRoZSBPcGVuR0wgRVMgMy4wIHNwZWNpZmljYXRpb24KIAotY2xh
c3MgQ09NUElMRVJfRVhQT1JUIFN0ZDE0MEJsb2NrRW5jb2RlciA6IHB1YmxpYyBCbG9ja0xheW91
dEVuY29kZXIKK2NsYXNzIFN0ZDE0MEJsb2NrRW5jb2RlciA6IHB1YmxpYyBCbG9ja0xheW91dEVu
Y29kZXIKIHsKICAgcHVibGljOgogICAgIFN0ZDE0MEJsb2NrRW5jb2RlcigpOwpAQCAtOTcsNyAr
MTAzLDYgQEAgY2xhc3MgQ09NUElMRVJfRVhQT1JUIFN0ZDE0MEJsb2NrRW5jb2RlciA6IHB1Ymxp
YyBCbG9ja0xheW91dEVuY29kZXIKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFycmF5U3Ry
aWRlLAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF0cml4U3RyaWRlKSBvdmVycmlkZTsK
IH07Ci0KIH0KIAotI2VuZGlmIC8vIENPTU1PTl9CTE9DS0xBWU9VVF9IXworI2VuZGlmICAvLyBD
T01NT05fQkxPQ0tMQVlPVVRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL2Jsb2NrbGF5b3V0SExTTC5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91dEhMU0wuY3Bw
CmluZGV4IDQzMTE5MjQ4ZWI5MWUzNTkwYmJmNzk1NzZiZWM2ZGE3ZjcyZjFkMDkuLjM5YjFhNWJk
MzYzNWY1Mzk4YzBmOTU1OTMzYmFlZTA2ZDIzMDg2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2Jsb2NrbGF5b3V0SExTTC5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvYmxv
Y2tsYXlvdXRITFNMLmNwcApAQCAtMTUsOSArMTUsOCBAQAogbmFtZXNwYWNlIHNoCiB7CiAKLUhM
U0xCbG9ja0VuY29kZXI6OkhMU0xCbG9ja0VuY29kZXIoSExTTEJsb2NrRW5jb2RlclN0cmF0ZWd5
IHN0cmF0ZWd5KQotICAgIDogbUVuY29kZXJTdHJhdGVneShzdHJhdGVneSksCi0gICAgICBtVHJh
bnNwb3NlTWF0cmljZXMoZmFsc2UpCitITFNMQmxvY2tFbmNvZGVyOjpITFNMQmxvY2tFbmNvZGVy
KEhMU0xCbG9ja0VuY29kZXJTdHJhdGVneSBzdHJhdGVneSwgYm9vbCB0cmFuc3Bvc2VNYXRyaWNl
cykKKyAgICA6IG1FbmNvZGVyU3RyYXRlZ3koc3RyYXRlZ3kpLCBtVHJhbnNwb3NlTWF0cmljZXMo
dHJhbnNwb3NlTWF0cmljZXMpCiB7CiB9CiAKQEAgLTMwLDcgKzI5LDExIEBAIHZvaWQgSExTTEJs
b2NrRW5jb2Rlcjo6ZXhpdEFnZ3JlZ2F0ZVR5cGUoKQogewogfQogCi12b2lkIEhMU0xCbG9ja0Vu
Y29kZXI6OmdldEJsb2NrTGF5b3V0SW5mbyhHTGVudW0gdHlwZUluLCB1bnNpZ25lZCBpbnQgYXJy
YXlTaXplLCBib29sIGlzUm93TWFqb3JNYXRyaXgsIGludCAqYXJyYXlTdHJpZGVPdXQsIGludCAq
bWF0cml4U3RyaWRlT3V0KQordm9pZCBITFNMQmxvY2tFbmNvZGVyOjpnZXRCbG9ja0xheW91dElu
Zm8oR0xlbnVtIHR5cGVJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBhcnJheVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGlzUm93TWFqb3JNYXRyaXgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmFycmF5U3RyaWRlT3V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICptYXRyaXhTdHJpZGVPdXQpCiB7CiAg
ICAgR0xlbnVtIHR5cGUgPSAobVRyYW5zcG9zZU1hdHJpY2VzID8gZ2w6OlRyYW5zcG9zZU1hdHJp
eFR5cGUodHlwZUluKSA6IHR5cGVJbik7CiAKQEAgLTM4LDE0ICs0MSwxMiBAQCB2b2lkIEhMU0xC
bG9ja0VuY29kZXI6OmdldEJsb2NrTGF5b3V0SW5mbyhHTGVudW0gdHlwZUluLCB1bnNpZ25lZCBp
bnQgYXJyYXlTaXplLAogICAgIEFTU0VSVChnbDo6VmFyaWFibGVDb21wb25lbnRTaXplKGdsOjpW
YXJpYWJsZUNvbXBvbmVudFR5cGUodHlwZSkpID09IEJ5dGVzUGVyQ29tcG9uZW50KTsKIAogICAg
IGludCBtYXRyaXhTdHJpZGUgPSAwOwotICAgIGludCBhcnJheVN0cmlkZSA9IDA7CisgICAgaW50
IGFycmF5U3RyaWRlICA9IDA7CiAKICAgICAvLyBpZiB2YXJpYWJsZXMgYXJlIG5vdCB0byBiZSBw
YWNrZWQsIG9yIHdlJ3JlIGFib3V0IHRvCiAgICAgLy8gcGFjayBhIG1hdHJpeCBvciBhcnJheSwg
c2tpcCB0byB0aGUgc3RhcnQgb2YgdGhlIG5leHQKICAgICAvLyByZWdpc3RlcgotICAgIGlmICgh
aXNQYWNrZWQoKSB8fAotICAgICAgICBnbDo6SXNNYXRyaXhUeXBlKHR5cGUpIHx8Ci0gICAgICAg
IGFycmF5U2l6ZSA+IDApCisgICAgaWYgKCFpc1BhY2tlZCgpIHx8IGdsOjpJc01hdHJpeFR5cGUo
dHlwZSkgfHwgYXJyYXlTaXplID4gMCkKICAgICB7CiAgICAgICAgIG5leHRSZWdpc3RlcigpOwog
ICAgIH0KQEAgLTU3LDcgKzU4LDcgQEAgdm9pZCBITFNMQmxvY2tFbmNvZGVyOjpnZXRCbG9ja0xh
eW91dEluZm8oR0xlbnVtIHR5cGVJbiwgdW5zaWduZWQgaW50IGFycmF5U2l6ZSwKICAgICAgICAg
aWYgKGFycmF5U2l6ZSA+IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IGludCBudW1S
ZWdpc3RlcnMgPSBnbDo6TWF0cml4UmVnaXN0ZXJDb3VudCh0eXBlLCBpc1Jvd01ham9yTWF0cml4
KTsKLSAgICAgICAgICAgIGFycmF5U3RyaWRlID0gQ29tcG9uZW50c1BlclJlZ2lzdGVyICogbnVt
UmVnaXN0ZXJzOworICAgICAgICAgICAgYXJyYXlTdHJpZGUgICAgICAgICAgICA9IENvbXBvbmVu
dHNQZXJSZWdpc3RlciAqIG51bVJlZ2lzdGVyczsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNl
IGlmIChhcnJheVNpemUgPiAwKQpAQCAtNzQsMTAgKzc1LDE0IEBAIHZvaWQgSExTTEJsb2NrRW5j
b2Rlcjo6Z2V0QmxvY2tMYXlvdXRJbmZvKEdMZW51bSB0eXBlSW4sIHVuc2lnbmVkIGludCBhcnJh
eVNpemUsCiAgICAgfQogCiAgICAgKm1hdHJpeFN0cmlkZU91dCA9IG1hdHJpeFN0cmlkZTsKLSAg
ICAqYXJyYXlTdHJpZGVPdXQgPSBhcnJheVN0cmlkZTsKKyAgICAqYXJyYXlTdHJpZGVPdXQgID0g
YXJyYXlTdHJpZGU7CiB9CiAKLXZvaWQgSExTTEJsb2NrRW5jb2Rlcjo6YWR2YW5jZU9mZnNldChH
TGVudW0gdHlwZUluLCB1bnNpZ25lZCBpbnQgYXJyYXlTaXplLCBib29sIGlzUm93TWFqb3JNYXRy
aXgsIGludCBhcnJheVN0cmlkZSwgaW50IG1hdHJpeFN0cmlkZSkKK3ZvaWQgSExTTEJsb2NrRW5j
b2Rlcjo6YWR2YW5jZU9mZnNldChHTGVudW0gdHlwZUluLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhcnJheVNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1Jvd01ham9yTWF0cml4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhcnJheVN0cmlkZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF0cml4U3RyaWRlKQogewogICAgIEdMZW51bSB0
eXBlID0gKG1UcmFuc3Bvc2VNYXRyaWNlcyA/IGdsOjpUcmFuc3Bvc2VNYXRyaXhUeXBlKHR5cGVJ
bikgOiB0eXBlSW4pOwogCkBAIC04OSw3ICs5NCw3IEBAIHZvaWQgSExTTEJsb2NrRW5jb2Rlcjo6
YWR2YW5jZU9mZnNldChHTGVudW0gdHlwZUluLCB1bnNpZ25lZCBpbnQgYXJyYXlTaXplLCBib29s
CiAgICAgaWYgKGdsOjpJc01hdHJpeFR5cGUodHlwZSkpCiAgICAgewogICAgICAgICBBU1NFUlQo
bWF0cml4U3RyaWRlID09IENvbXBvbmVudHNQZXJSZWdpc3Rlcik7Ci0gICAgICAgIGNvbnN0IGlu
dCBudW1SZWdpc3RlcnMgPSBnbDo6TWF0cml4UmVnaXN0ZXJDb3VudCh0eXBlLCBpc1Jvd01ham9y
TWF0cml4KTsKKyAgICAgICAgY29uc3QgaW50IG51bVJlZ2lzdGVycyAgPSBnbDo6TWF0cml4UmVn
aXN0ZXJDb3VudCh0eXBlLCBpc1Jvd01ham9yTWF0cml4KTsKICAgICAgICAgY29uc3QgaW50IG51
bUNvbXBvbmVudHMgPSBnbDo6TWF0cml4Q29tcG9uZW50Q291bnQodHlwZSwgaXNSb3dNYWpvck1h
dHJpeCk7CiAgICAgICAgIG1DdXJyZW50T2Zmc2V0ICs9IENvbXBvbmVudHNQZXJSZWdpc3RlciAq
IChudW1SZWdpc3RlcnMgLSAxKTsKICAgICAgICAgbUN1cnJlbnRPZmZzZXQgKz0gbnVtQ29tcG9u
ZW50czsKQEAgLTEwOSw3ICsxMTQsOCBAQCB2b2lkIEhMU0xCbG9ja0VuY29kZXI6OnNraXBSZWdp
c3RlcnModW5zaWduZWQgaW50IG51bVJlZ2lzdGVycykKICAgICBtQ3VycmVudE9mZnNldCArPSAo
bnVtUmVnaXN0ZXJzICogQ29tcG9uZW50c1BlclJlZ2lzdGVyKTsKIH0KIAotSExTTEJsb2NrRW5j
b2Rlcjo6SExTTEJsb2NrRW5jb2RlclN0cmF0ZWd5IEhMU0xCbG9ja0VuY29kZXI6OkdldFN0cmF0
ZWd5Rm9yKFNoU2hhZGVyT3V0cHV0IG91dHB1dFR5cGUpCitITFNMQmxvY2tFbmNvZGVyOjpITFNM
QmxvY2tFbmNvZGVyU3RyYXRlZ3kgSExTTEJsb2NrRW5jb2Rlcjo6R2V0U3RyYXRlZ3lGb3IoCisg
ICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSkKIHsKICAgICBzd2l0Y2ggKG91dHB1dFR5cGUp
CiAgICAgewpAQCAtMTQ4LDI0ICsxNTQsMTMgQEAgdm9pZCBITFNMVmFyaWFibGVSZWdpc3RlckNv
dW50KGNvbnN0IFNoYWRlclZhclR5cGUgJnZhcmlhYmxlLCBITFNMQmxvY2tFbmNvZGVyICoKICAg
ICB9CiB9CiAKLXVuc2lnbmVkIGludCBITFNMVmFyaWFibGVSZWdpc3RlckNvdW50KGNvbnN0IFZh
cnlpbmcgJnZhcmlhYmxlLCBib29sIHRyYW5zcG9zZU1hdHJpY2VzKQotewotICAgIEhMU0xCbG9j
a0VuY29kZXIgZW5jb2RlcihITFNMQmxvY2tFbmNvZGVyOjpFTkNPREVfUEFDS0VEKTsKLSAgICBl
bmNvZGVyLnNldFRyYW5zcG9zZU1hdHJpY2VzKHRyYW5zcG9zZU1hdHJpY2VzKTsKLSAgICBITFNM
VmFyaWFibGVSZWdpc3RlckNvdW50KHZhcmlhYmxlLCAmZW5jb2Rlcik7Ci0KLSAgICBjb25zdCBz
aXplX3QgcmVnaXN0ZXJCeXRlcyA9IChlbmNvZGVyLkJ5dGVzUGVyQ29tcG9uZW50ICogZW5jb2Rl
ci5Db21wb25lbnRzUGVyUmVnaXN0ZXIpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBpbnQ+KHJ4Ojpyb3VuZFVwPHNpemVfdD4oZW5jb2Rlci5nZXRCbG9ja1NpemUoKSwgcmVnaXN0
ZXJCeXRlcykgLyByZWdpc3RlckJ5dGVzKTsKLX0KLQogdW5zaWduZWQgaW50IEhMU0xWYXJpYWJs
ZVJlZ2lzdGVyQ291bnQoY29uc3QgVW5pZm9ybSAmdmFyaWFibGUsIFNoU2hhZGVyT3V0cHV0IG91
dHB1dFR5cGUpCiB7Ci0gICAgSExTTEJsb2NrRW5jb2RlciBlbmNvZGVyKEhMU0xCbG9ja0VuY29k
ZXI6OkdldFN0cmF0ZWd5Rm9yKG91dHB1dFR5cGUpKTsKLSAgICBlbmNvZGVyLnNldFRyYW5zcG9z
ZU1hdHJpY2VzKHRydWUpOworICAgIEhMU0xCbG9ja0VuY29kZXIgZW5jb2RlcihITFNMQmxvY2tF
bmNvZGVyOjpHZXRTdHJhdGVneUZvcihvdXRwdXRUeXBlKSwgdHJ1ZSk7CiAgICAgSExTTFZhcmlh
YmxlUmVnaXN0ZXJDb3VudCh2YXJpYWJsZSwgJmVuY29kZXIpOwogCiAgICAgY29uc3Qgc2l6ZV90
IHJlZ2lzdGVyQnl0ZXMgPSAoZW5jb2Rlci5CeXRlc1BlckNvbXBvbmVudCAqIGVuY29kZXIuQ29t
cG9uZW50c1BlclJlZ2lzdGVyKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50
PihyeDo6cm91bmRVcDxzaXplX3Q+KGVuY29kZXIuZ2V0QmxvY2tTaXplKCksIHJlZ2lzdGVyQnl0
ZXMpIC8gcmVnaXN0ZXJCeXRlcyk7Ci19Ci0KKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50PihyeDo6cm91bmRVcDxzaXplX3Q+KGVuY29kZXIuZ2V0QmxvY2tTaXplKCksIHJlZ2lz
dGVyQnl0ZXMpIC8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rl
ckJ5dGVzKTsKIH0KK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvYmxvY2tsYXlvdXRITFNMLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91
dEhMU0wuaAppbmRleCBjNjFjYjFhZTU3NzUxODc4OTM3MGE4MWJiMTE5ZDAzYTU0M2RjYTQ1Li5h
MDIyMGRjY2I3MDZiYTVjZmQ4ODdkODU2Mzk4YmUyZTFlY2U1YzVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91dEhM
U0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9ibG9ja2xheW91dEhMU0wuaApAQCAtMjQsNyArMjQsNyBAQCBuYW1lc3BhY2Ugc2gKIC8vIFRo
ZSBzdHJhdGVneSBzaG91bGQgYmUgRU5DT0RFX0xPT1NFIGZvciBEM0Q5IGNvbnN0YW50IGJsb2Nr
cywgYW5kIEVOQ09ERV9QQUNLRUQKIC8vIGZvciBldmVyeXRoaW5nIGVsc2UgKEQzRDEwKyBjb25z
dGFudCBibG9ja3MgYW5kIGFsbCBhdHRyaWJ1dGVzL3ZhcnlpbmdzKS4KIAotY2xhc3MgQ09NUElM
RVJfRVhQT1JUIEhMU0xCbG9ja0VuY29kZXIgOiBwdWJsaWMgQmxvY2tMYXlvdXRFbmNvZGVyCitj
bGFzcyBITFNMQmxvY2tFbmNvZGVyIDogcHVibGljIEJsb2NrTGF5b3V0RW5jb2RlcgogewogICBw
dWJsaWM6CiAgICAgZW51bSBITFNMQmxvY2tFbmNvZGVyU3RyYXRlZ3kKQEAgLTMzLDMwICszMywz
NiBAQCBjbGFzcyBDT01QSUxFUl9FWFBPUlQgSExTTEJsb2NrRW5jb2RlciA6IHB1YmxpYyBCbG9j
a0xheW91dEVuY29kZXIKICAgICAgICAgRU5DT0RFX0xPT1NFCiAgICAgfTsKIAotICAgIEhMU0xC
bG9ja0VuY29kZXIoSExTTEJsb2NrRW5jb2RlclN0cmF0ZWd5IHN0cmF0ZWd5KTsKKyAgICBITFNM
QmxvY2tFbmNvZGVyKEhMU0xCbG9ja0VuY29kZXJTdHJhdGVneSBzdHJhdGVneSwgYm9vbCB0cmFu
c3Bvc2VNYXRyaWNlcyk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJBZ2dyZWdhdGVUeXBlKCk7
CiAgICAgdmlydHVhbCB2b2lkIGV4aXRBZ2dyZWdhdGVUeXBlKCk7CiAgICAgdm9pZCBza2lwUmVn
aXN0ZXJzKHVuc2lnbmVkIGludCBudW1SZWdpc3RlcnMpOwogCiAgICAgYm9vbCBpc1BhY2tlZCgp
IGNvbnN0IHsgcmV0dXJuIG1FbmNvZGVyU3RyYXRlZ3kgPT0gRU5DT0RFX1BBQ0tFRDsgfQotICAg
IHZvaWQgc2V0VHJhbnNwb3NlTWF0cmljZXMoYm9vbCBlbmFibGVkKSB7IG1UcmFuc3Bvc2VNYXRy
aWNlcyA9IGVuYWJsZWQ7IH0KIAogICAgIHN0YXRpYyBITFNMQmxvY2tFbmNvZGVyU3RyYXRlZ3kg
R2V0U3RyYXRlZ3lGb3IoU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSk7CiAKICAgcHJvdGVjdGVk
OgotICAgIHZpcnR1YWwgdm9pZCBnZXRCbG9ja0xheW91dEluZm8oR0xlbnVtIHR5cGUsIHVuc2ln
bmVkIGludCBhcnJheVNpemUsIGJvb2wgaXNSb3dNYWpvck1hdHJpeCwgaW50ICphcnJheVN0cmlk
ZU91dCwgaW50ICptYXRyaXhTdHJpZGVPdXQpOwotICAgIHZpcnR1YWwgdm9pZCBhZHZhbmNlT2Zm
c2V0KEdMZW51bSB0eXBlLCB1bnNpZ25lZCBpbnQgYXJyYXlTaXplLCBib29sIGlzUm93TWFqb3JN
YXRyaXgsIGludCBhcnJheVN0cmlkZSwgaW50IG1hdHJpeFN0cmlkZSk7CisgICAgdmlydHVhbCB2
b2lkIGdldEJsb2NrTGF5b3V0SW5mbyhHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhcnJheVNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzUm93TWFqb3JNYXRyaXgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmFycmF5U3RyaWRlT3V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICptYXRyaXhTdHJpZGVPdXQpOworICAgIHZpcnR1
YWwgdm9pZCBhZHZhbmNlT2Zmc2V0KEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBhcnJheVNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpc1Jvd01ham9yTWF0cml4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCBhcnJheVN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbWF0cml4U3RyaWRlKTsKIAogICAgIEhMU0xCbG9ja0VuY29kZXJTdHJhdGVneSBtRW5jb2Rl
clN0cmF0ZWd5OwogICAgIGJvb2wgbVRyYW5zcG9zZU1hdHJpY2VzOwogfTsKIAotLy8gVGhpcyBt
ZXRob2QgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHVzZWQgcmVnaXN0ZXJzIGZvciBhIFNoYWRlclZh
cmlhYmxlLiBJdCBpcyBkZXBlbmRlbnQgb24gdGhlIEhMU0xCbG9ja0VuY29kZXIKLS8vIGNsYXNz
IHRvIGNvdW50IHRoZSBudW1iZXIgb2YgdXNlZCByZWdpc3RlcnMgaW4gYSBzdHJ1Y3QgKHdoaWNo
IGFyZSBpbmRpdmlkdWFsbHkgcGFja2VkIGFjY29yZGluZyB0byB0aGUgc2FtZSBydWxlcykuCi1D
T01QSUxFUl9FWFBPUlQgdW5zaWduZWQgaW50IEhMU0xWYXJpYWJsZVJlZ2lzdGVyQ291bnQoY29u
c3QgVmFyeWluZyAmdmFyaWFibGUsIGJvb2wgdHJhbnNwb3NlTWF0cmljZXMpOwotQ09NUElMRVJf
RVhQT1JUIHVuc2lnbmVkIGludCBITFNMVmFyaWFibGVSZWdpc3RlckNvdW50KGNvbnN0IFVuaWZv
cm0gJnZhcmlhYmxlLCBTaFNoYWRlck91dHB1dCBvdXRwdXRUeXBlKTsKLQorLy8gVGhpcyBtZXRo
b2QgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHVzZWQgcmVnaXN0ZXJzIGZvciBhIFNoYWRlclZhcmlh
YmxlLiBJdCBpcyBkZXBlbmRlbnQgb24gdGhlCisvLyBITFNMQmxvY2tFbmNvZGVyIGNsYXNzIHRv
IGNvdW50IHRoZSBudW1iZXIgb2YgdXNlZCByZWdpc3RlcnMgaW4gYSBzdHJ1Y3QgKHdoaWNoIGFy
ZSBpbmRpdmlkdWFsbHkKKy8vIHBhY2tlZCBhY2NvcmRpbmcgdG8gdGhlIHNhbWUgcnVsZXMpLgor
dW5zaWduZWQgaW50IEhMU0xWYXJpYWJsZVJlZ2lzdGVyQ291bnQoY29uc3QgVW5pZm9ybSAmdmFy
aWFibGUsIFNoU2hhZGVyT3V0cHV0IG91dHB1dFR5cGUpOwogfQogCi0jZW5kaWYgLy8gQ09NTU9O
X0JMT0NLTEFZT1VUSExTTF9IXworI2VuZGlmICAvLyBDT01NT05fQkxPQ0tMQVlPVVRITFNMX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9nbHNsYW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9nbHNsYW5nLmgKaW5kZXggMDU1NWU5NmQ0NTAwMWVhNWMzOGQ0M2FmMWRhMmVkNDE2
Y2VhY2JlNy4uZTU0YzMxYmEzZTMyODY0NzhlYjYwYTQyYmJjYmJkMjc5NzRkNDY1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xz
bGFuZy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL2dsc2xhbmcuaApAQCAtNywxNCArNywxOCBAQAogI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xB
VE9SX0dMU0xBTkdfSF8KICNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9HTFNMQU5HX0hfCiAK
K25hbWVzcGFjZSBzaAorewogY2xhc3MgVFBhcnNlQ29udGV4dDsKLWV4dGVybiBpbnQgZ2xzbGFu
Z19pbml0aWFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpOwotZXh0ZXJuIGludCBnbHNsYW5n
X2ZpbmFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpOworfQorCitleHRlcm4gaW50IGdsc2xh
bmdfaW5pdGlhbGl6ZShzaDo6VFBhcnNlQ29udGV4dCAqY29udGV4dCk7CitleHRlcm4gaW50IGds
c2xhbmdfZmluYWxpemUoc2g6OlRQYXJzZUNvbnRleHQgKmNvbnRleHQpOwogCiBleHRlcm4gaW50
IGdsc2xhbmdfc2NhbihzaXplX3QgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyKiBjb25zdCBzdHJpbmdbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKmNvbnN0IHN0cmluZ1tdLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGxl
bmd0aFtdLAotICAgICAgICAgICAgICAgICAgICAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dCk7
Ci1leHRlcm4gaW50IGdsc2xhbmdfcGFyc2UoVFBhcnNlQ29udGV4dCogY29udGV4dCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzaDo6VFBhcnNlQ29udGV4dCAqY29udGV4dCk7CitleHRlcm4g
aW50IGdsc2xhbmdfcGFyc2Uoc2g6OlRQYXJzZUNvbnRleHQgKmNvbnRleHQpOwogCi0jZW5kaWYg
Ly8gQ09NUElMRVJfVFJBTlNMQVRPUl9HTFNMQU5HX0hfCisjZW5kaWYgIC8vIENPTVBJTEVSX1RS
QU5TTEFUT1JfR0xTTEFOR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZy5sIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZy5sCmluZGV4IDdmZTI4OTMwMjc1N2Fj
NDk2MTE1OWY5ZjFhMjNmNWU3N2M5ZTAwYTEuLmMxMjNiYzY1NGQxNGMxMzBkMjQ5MzBjMGZjZmE1
ZWQyMTY3ZjYzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL2dsc2xhbmcubAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nLmwKQEAgLTIyLDYgKzIyLDggQEAgV0hJQ0gg
R0VORVJBVEVTIFRIRSBHTFNMIEVTIExFWEVSIChnbHNsYW5nX2xleC5jcHApLgogCiAvLyBUaGlz
IGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2VuZXJhdGVfcGFyc2VyLnNoLiBETyBOT1QgRURJ
VCEKIAorLyogY2xhbmctZm9ybWF0IG9mZiAqLworCiAvLyBJZ25vcmUgZXJyb3JzIGluIGF1dG8t
Z2VuZXJhdGVkIGNvZGUuCiAjaWYgZGVmaW5lZChfX0dOVUNfXykKICNwcmFnbWEgR0NDIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtZnVuY3Rpb24iCkBAIC00NCw2ICs0Niw5IEBAIFdISUNI
IEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBMRVhFUiAoZ2xzbGFuZ19sZXguY3BwKS4KICNpbmNsdWRl
ICJjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCIKICNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL3V0aWwuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL2xlbmd0aF9saW1p
dHMuaCIKKwordXNpbmcgbmFtZXNwYWNlIHNoOworCiAjaW5jbHVkZSAiZ2xzbGFuZ190YWIuaCIK
IAogLyogd2luZG93cyBvbmx5IHByYWdtYSAqLwpAQCAtNzEsMTAgKzc2LDE1IEBAIHN0YXRpYyBp
bnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIGludCBFUzJfcmVz
ZXJ2ZWRfRVMzX2tleXdvcmQoVFBhcnNlQ29udGV4dCAqY29udGV4dCwgaW50IHRva2VuKTsKIHN0
YXRpYyBpbnQgRVMyX2tleXdvcmRfRVMzX3Jlc2VydmVkKFRQYXJzZUNvbnRleHQgKmNvbnRleHQs
IGludCB0b2tlbik7CiBzdGF0aWMgaW50IEVTMl9pZGVudF9FUzNfa2V5d29yZChUUGFyc2VDb250
ZXh0ICpjb250ZXh0LCBpbnQgdG9rZW4pOworc3RhdGljIGludCBFUzJfaWRlbnRfRVMzX3Jlc2Vy
dmVkX0VTM18xX2tleXdvcmQoVFBhcnNlQ29udGV4dCAqY29udGV4dCwgaW50IHRva2VuKTsKK3N0
YXRpYyBpbnQgRVMyX2FuZF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChUUGFyc2VDb250ZXh0
ICpjb250ZXh0LCBpbnQgdG9rZW4pOworc3RhdGljIGludCBFUzJfYW5kX0VTM19pZGVudF9FUzNf
MV9rZXl3b3JkKFRQYXJzZUNvbnRleHQgKmNvbnRleHQsIGludCB0b2tlbik7CitzdGF0aWMgaW50
IEVTM19leHRlbnNpb25fa2V5d29yZF9lbHNlX2lkZW50KFRQYXJzZUNvbnRleHQgKmNvbnRleHQs
IGNvbnN0IGNoYXIgKmV4dGVuc2lvbiwgaW50IHRva2VuKTsKIHN0YXRpYyBpbnQgdWludF9jb25z
dGFudChUUGFyc2VDb250ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyBpbnQgaW50X2NvbnN0YW50KFRQ
YXJzZUNvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIGludCBmbG9hdF9jb25zdGFudCh5eXNjYW5f
dCB5eXNjYW5uZXIpOwogc3RhdGljIGludCBmbG9hdHN1ZmZpeF9jaGVjayhUUGFyc2VDb250ZXh0
KiBjb250ZXh0KTsKK3N0YXRpYyBpbnQgeXV2Y3Njc3RhbmRhcmRleHRfY29uc3RhbnQoVFBhcnNl
Q29udGV4dCAqY29udGV4dCk7CiAlfQogCiAlb3B0aW9uIG5veXl3cmFwIG5vdW5wdXQgbmV2ZXIt
aW50ZXJhY3RpdmUKQEAgLTEyNCw2ICsxMzQsNyBAQCBPICAgICAgICAgICBbMC03XQogImluIiAg
ICAgICAgICAgeyByZXR1cm4gSU5fUVVBTDsgfQogIm91dCIgICAgICAgICAgeyByZXR1cm4gT1VU
X1FVQUw7IH0KICJpbm91dCIgICAgICAgIHsgcmV0dXJuIElOT1VUX1FVQUw7IH0KKyJzaGFyZWQi
ICAgICAgIHsgcmV0dXJuIEVTMl9hbmRfRVMzX2lkZW50X0VTM18xX2tleXdvcmQoY29udGV4dCwg
U0hBUkVEKTsgfQogCiAiZmxvYXQiICAgICAgICB7IHJldHVybiBGTE9BVF9UWVBFOyB9CiAiaW50
IiAgICAgICAgICB7IHJldHVybiBJTlRfVFlQRTsgfQpAQCAtMTcxLDI3ICsxODIsNTAgQEAgTyAg
ICAgICAgICAgWzAtN10KICJzYW1wbGVyM0RSZWN0IiAgICAgICAgeyByZXR1cm4gRVMyX3Jlc2Vy
dmVkX0VTM19rZXl3b3JkKGNvbnRleHQsIFNBTVBMRVIzRFJFQ1QpOyB9CiAic2FtcGxlcjJEUmVj
dCIgICAgICAgIHsgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KICJzYW1wbGVyMkRBcnJheSIgICAg
ICAgeyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3b3JkKGNvbnRleHQsIFNBTVBMRVIyREFSUkFZ
KTsgfQorInNhbXBsZXIyRE1TIiAgICAgICAgICB7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2Vy
dmVkX0VTM18xX2tleXdvcmQoY29udGV4dCwgU0FNUExFUjJETVMpOyB9CiAiaXNhbXBsZXIyRCIg
ICAgICAgICAgIHsgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBJU0FNUExF
UjJEKTsgfQogImlzYW1wbGVyM0QiICAgICAgICAgICB7IHJldHVybiBFUzJfaWRlbnRfRVMzX2tl
eXdvcmQoY29udGV4dCwgSVNBTVBMRVIzRCk7IH0KICJpc2FtcGxlckN1YmUiICAgICAgICAgeyBy
ZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3b3JkKGNvbnRleHQsIElTQU1QTEVSQ1VCRSk7IH0KICJp
c2FtcGxlcjJEQXJyYXkiICAgICAgeyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3b3JkKGNvbnRl
eHQsIElTQU1QTEVSMkRBUlJBWSk7IH0KKyJpc2FtcGxlcjJETVMiICAgICAgICAgeyByZXR1cm4g
RVMyX2lkZW50X0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRleHQsIElTQU1QTEVSMkRN
Uyk7IH0KICJ1c2FtcGxlcjJEIiAgICAgICAgICAgeyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3
b3JkKGNvbnRleHQsIFVTQU1QTEVSMkQpOyB9CiAidXNhbXBsZXIzRCIgICAgICAgICAgIHsgcmV0
dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBVU0FNUExFUjNEKTsgfQogInVzYW1w
bGVyQ3ViZSIgICAgICAgICB7IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwg
VVNBTVBMRVJDVUJFKTsgfQogInVzYW1wbGVyMkRBcnJheSIgICAgICB7IHJldHVybiBFUzJfaWRl
bnRfRVMzX2tleXdvcmQoY29udGV4dCwgVVNBTVBMRVIyREFSUkFZKTsgfQorInVzYW1wbGVyMkRN
UyIgICAgICAgICB7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tleXdvcmQo
Y29udGV4dCwgVVNBTVBMRVIyRE1TKTsgfQogInNhbXBsZXIyRFNoYWRvdyIgICAgICB7IHJldHVy
biBFUzJfcmVzZXJ2ZWRfRVMzX2tleXdvcmQoY29udGV4dCwgU0FNUExFUjJEU0hBRE9XKTsgfQog
InNhbXBsZXJDdWJlU2hhZG93IiAgICB7IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29u
dGV4dCwgU0FNUExFUkNVQkVTSEFET1cpOyB9CiAic2FtcGxlcjJEQXJyYXlTaGFkb3ciIHsgcmV0
dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBTQU1QTEVSMkRBUlJBWVNIQURPVyk7
IH0KKyJfX3NhbXBsZXJFeHRlcm5hbDJEWTJZRVhUIiAgIHsgcmV0dXJuIEVTM19leHRlbnNpb25f
a2V5d29yZF9lbHNlX2lkZW50KGNvbnRleHQsICJHTF9FWFRfWVVWX3RhcmdldCIsIFNBTVBMRVJF
WFRFUk5BTDJEWTJZRVhUKTsgfQogCiAic3RydWN0IiAgICAgICB7IHJldHVybiBTVFJVQ1Q7IH0K
IAogImxheW91dCIgIHsgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBMQVlP
VVQpOyB9CiAKKyJ5dXZDc2NTdGFuZGFyZEVYVCIgICAgeyByZXR1cm4gRVMzX2V4dGVuc2lvbl9r
ZXl3b3JkX2Vsc2VfaWRlbnQoY29udGV4dCwgIkdMX0VYVF9ZVVZfdGFyZ2V0IiwgWVVWQ1NDU1RB
TkRBUkRFWFQpOyB9CisiaXR1XzYwMSIgICAgICAgICAgICAgIHsgcmV0dXJuIHl1dmNzY3N0YW5k
YXJkZXh0X2NvbnN0YW50KGNvbnRleHQpOyB9CisiaXR1XzYwMV9mdWxsX3JhbmdlIiAgIHsgcmV0
dXJuIHl1dmNzY3N0YW5kYXJkZXh0X2NvbnN0YW50KGNvbnRleHQpOyB9CisiaXR1XzcwOSIgICAg
ICAgICAgICAgIHsgcmV0dXJuIHl1dmNzY3N0YW5kYXJkZXh0X2NvbnN0YW50KGNvbnRleHQpOyB9
CisKKyJpbWFnZTJEIiB7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tleXdv
cmQoY29udGV4dCwgSU1BR0UyRCk7IH0KKyJpaW1hZ2UyRCIgeyByZXR1cm4gRVMyX2lkZW50X0VT
M19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRleHQsIElJTUFHRTJEKTsgfQorInVpbWFnZTJE
IiB7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tleXdvcmQoY29udGV4dCwg
VUlNQUdFMkQpOyB9CisiaW1hZ2UyREFycmF5IiB7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2Vy
dmVkX0VTM18xX2tleXdvcmQoY29udGV4dCwgSU1BR0UyREFSUkFZKTsgfQorImlpbWFnZTJEQXJy
YXkiIHsgcmV0dXJuIEVTMl9pZGVudF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChjb250ZXh0
LCBJSU1BR0UyREFSUkFZKTsgfQorInVpbWFnZTJEQXJyYXkiIHsgcmV0dXJuIEVTMl9pZGVudF9F
UzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChjb250ZXh0LCBVSU1BR0UyREFSUkFZKTsgfQorImlt
YWdlM0QiICB7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tleXdvcmQoY29u
dGV4dCwgSU1BR0UzRCk7IH0KKyJ1aW1hZ2UzRCIgeyByZXR1cm4gRVMyX2lkZW50X0VTM19yZXNl
cnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRleHQsIFVJTUFHRTNEKTsgfQorImlpbWFnZTNEIiB7IHJl
dHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tleXdvcmQoY29udGV4dCwgSUlNQUdF
M0QpOyB9CisiaWltYWdlQ3ViZSIgeyByZXR1cm4gRVMyX2lkZW50X0VTM19yZXNlcnZlZF9FUzNf
MV9rZXl3b3JkKGNvbnRleHQsIElJTUFHRUNVQkUpOyB9CisidWltYWdlQ3ViZSIgeyByZXR1cm4g
RVMyX2lkZW50X0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRleHQsIFVJTUFHRUNVQkUp
OyB9CisiaW1hZ2VDdWJlIgl7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tl
eXdvcmQoY29udGV4dCwgSU1BR0VDVUJFKTsgfQorInJlYWRvbmx5IiB7IHJldHVybiBFUzJfaWRl
bnRfRVMzX3Jlc2VydmVkX0VTM18xX2tleXdvcmQoY29udGV4dCwgUkVBRE9OTFkpOyB9Cisid3Jp
dGVvbmx5IiB7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tleXdvcmQoY29u
dGV4dCwgV1JJVEVPTkxZKTsgfQorImNvaGVyZW50IiB7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jl
c2VydmVkX0VTM18xX2tleXdvcmQoY29udGV4dCwgQ09IRVJFTlQpOyB9CisicmVzdHJpY3QiIHsg
cmV0dXJuIEVTMl9pZGVudF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChjb250ZXh0LCBSRVNU
UklDVCk7IH0KKyJ2b2xhdGlsZSIgeyByZXR1cm4gRVMyX2FuZF9FUzNfcmVzZXJ2ZWRfRVMzXzFf
a2V5d29yZChjb250ZXh0LCBWT0xBVElMRSk7IH0KKwogICAgIC8qIFJlc2VydmVkIGtleXdvcmRz
IGZvciBHTFNMIEVTIDMuMDAgdGhhdCBhcmUgbm90IHJlc2VydmVkIGZvciBHTFNMIEVTIDEuMDAg
Ki8KLSJjb2hlcmVudCIgICAgICAgICAgfAotInJlc3RyaWN0IiAgICAgICAgICB8Ci0icmVhZG9u
bHkiICAgICAgICAgIHwKLSJ3cml0ZW9ubHkiICAgICAgICAgfAogInJlc291cmNlIiAgICAgICAg
ICB8CiAiYXRvbWljX3VpbnQiICAgICAgIHwKICJub3BlcnNwZWN0aXZlIiAgICAgfApAQCAtMjA0
LDIzICsyMzgsMTEgQEAgTyAgICAgICAgICAgWzAtN10KIAogImZpbHRlciIgICAgICAgICAgICB8
CiAiaW1hZ2UxRCIgICAgICAgICAgIHwKLSJpbWFnZTJEIiAgICAgICAgICAgfAotImltYWdlM0Qi
ICAgICAgICAgICB8Ci0iaW1hZ2VDdWJlIgkgICAgICAgIHwKICJpaW1hZ2UxRCIgICAgICAgICAg
fAotImlpbWFnZTJEIiAgICAgICAgICB8Ci0iaWltYWdlM0QiICAgICAgICAgIHwKLSJpaW1hZ2VD
dWJlIiAgICAgICAgfAogInVpbWFnZTFEIiAgICAgICAgICB8Ci0idWltYWdlMkQiICAgICAgICAg
IHwKLSJ1aW1hZ2UzRCIgICAgICAgICAgfAotInVpbWFnZUN1YmUiICAgICAgICB8CiAiaW1hZ2Ux
REFycmF5IiAgICAgIHwKLSJpbWFnZTJEQXJyYXkiICAgICAgfAogImlpbWFnZTFEQXJyYXkiICAg
ICB8Ci0iaWltYWdlMkRBcnJheSIgICAgIHwKICJ1aW1hZ2UxREFycmF5IiAgICAgfAotInVpbWFn
ZTJEQXJyYXkiICAgICB8CiAiaW1hZ2UxRFNoYWRvdyIgICAgIHwKICJpbWFnZTJEU2hhZG93IiAg
ICAgfAogImltYWdlMURBcnJheVNoYWRvdyIgfApAQCAtMjQwLDkgKzI2Miw2IEBAIE8gICAgICAg
ICAgIFswLTddCiAic2FtcGxlckJ1ZmZlciIgICAgIHwKICJpc2FtcGxlckJ1ZmZlciIgICAgfAog
InVzYW1wbGVyQnVmZmVyIiAgICB8Ci0ic2FtcGxlcjJETVMiICAgICAgIHwKLSJpc2FtcGxlcjJE
TVMiICAgICAgfAotInVzYW1wbGVyMkRNUyIgICAgICB8CiAic2FtcGxlcjJETVNBcnJheSIgIHwK
ICJpc2FtcGxlcjJETVNBcnJheSIgfAogInVzYW1wbGVyMkRNU0FycmF5IiB7IApAQCAtMjc4LDcg
KzI5Nyw2IEBAIE8gICAgICAgICAgIFswLTddCiAKICJpbmxpbmUiICAgICAgIHwKICJub2lubGlu
ZSIgICAgIHwKLSJ2b2xhdGlsZSIgICAgIHwKICJwdWJsaWMiICAgICAgIHwKICJzdGF0aWMiICAg
ICAgIHwKICJleHRlcm4iICAgICAgIHwKQEAgLTM5MSw3ICs0MDksNyBAQCBPICAgICAgICAgICBb
MC03XQogfQogPEZJRUxEUz5bIFx0XHZcZlxyXSB7fQogPEZJRUxEUz4uIHsKLSAgICB5eWV4dHJh
LT5lcnJvcigqeXlsbG9jLCAiSWxsZWdhbCBjaGFyYWN0ZXIgYXQgZmllbGRuYW1lIHN0YXJ0Iiwg
eXl0ZXh0LCAiIik7CisgICAgeXlleHRyYS0+ZXJyb3IoKnl5bGxvYywgIklsbGVnYWwgY2hhcmFj
dGVyIGF0IGZpZWxkbmFtZSBzdGFydCIsIHl5dGV4dCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAg
LTQzNSw3ICs0NTMsNyBAQCBpbnQgY2hlY2tfdHlwZSh5eXNjYW5fdCB5eXNjYW5uZXIpIHsKIGlu
dCByZXNlcnZlZF93b3JkKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogICAgIHN0cnVjdCB5eWd1dHNf
dCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIHl5c2Nhbm5lcjsKIAotICAgIHl5ZXh0cmEtPmVy
cm9yKCp5eWxsb2MsICJJbGxlZ2FsIHVzZSBvZiByZXNlcnZlZCB3b3JkIiwgeXl0ZXh0LCAiIik7
CisgICAgeXlleHRyYS0+ZXJyb3IoKnl5bGxvYywgIklsbGVnYWwgdXNlIG9mIHJlc2VydmVkIHdv
cmQiLCB5eXRleHQpOwogICAgIHJldHVybiAwOwogfQogCkBAIC00NjMsNiArNDgxLDI0IEBAIGlu
dCBFUzJfa2V5d29yZF9FUzNfcmVzZXJ2ZWQoVFBhcnNlQ29udGV4dCAqY29udGV4dCwgaW50IHRv
a2VuKQogICAgIHJldHVybiB0b2tlbjsKIH0KIAoraW50IEVTMl9pZGVudF9FUzNfcmVzZXJ2ZWRf
RVMzXzFfa2V5d29yZChUUGFyc2VDb250ZXh0ICpjb250ZXh0LCBpbnQgdG9rZW4pCit7CisgICAg
c3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190KikgY29udGV4dC0+Z2V0U2Nh
bm5lcigpOworICAgIHl5c2Nhbl90IHl5c2Nhbm5lciA9ICh5eXNjYW5fdCkgY29udGV4dC0+Z2V0
U2Nhbm5lcigpOworCisgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSA8IDMwMCkK
KyAgICB7CisgICAgICAgIHl5bHZhbC0+bGV4LnN0cmluZyA9IE5ld1Bvb2xUU3RyaW5nKHl5dGV4
dCk7CisgICAgICAgIHJldHVybiBjaGVja190eXBlKHl5c2Nhbm5lcik7CisgICAgfQorICAgIGVs
c2UgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSA9PSAzMDApCisgICAgeworICAgICAg
ICByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOworICAgIH0KKworICAgIHJldHVybiB0
b2tlbjsKK30KKwogaW50IEVTMl9pZGVudF9FUzNfa2V5d29yZChUUGFyc2VDb250ZXh0ICpjb250
ZXh0LCBpbnQgdG9rZW4pCiB7CiAgICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5
Z3V0c190KikgY29udGV4dC0+Z2V0U2Nhbm5lcigpOwpAQCAtNDc4LDE4ICs1MTQsNjAgQEAgaW50
IEVTMl9pZGVudF9FUzNfa2V5d29yZChUUGFyc2VDb250ZXh0ICpjb250ZXh0LCBpbnQgdG9rZW4p
CiAgICAgcmV0dXJuIHRva2VuOwogfQogCitpbnQgRVMyX2FuZF9FUzNfcmVzZXJ2ZWRfRVMzXzFf
a2V5d29yZChUUGFyc2VDb250ZXh0ICpjb250ZXh0LCBpbnQgdG9rZW4pCit7CisgICAgeXlzY2Fu
X3QgeXlzY2FubmVyID0gKHl5c2Nhbl90KSBjb250ZXh0LT5nZXRTY2FubmVyKCk7CisKKyAgICBp
ZiAoY29udGV4dC0+Z2V0U2hhZGVyVmVyc2lvbigpIDwgMzEwKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsKKyAgICB9CisKKyAgICByZXR1cm4gdG9rZW47
Cit9CisKK2ludCBFUzJfYW5kX0VTM19pZGVudF9FUzNfMV9rZXl3b3JkKFRQYXJzZUNvbnRleHQg
KmNvbnRleHQsIGludCB0b2tlbikKK3sKKyAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1
Y3QgeXlndXRzX3QqKSBjb250ZXh0LT5nZXRTY2FubmVyKCk7CisgICAgeXlzY2FuX3QgeXlzY2Fu
bmVyID0gKHl5c2Nhbl90KSBjb250ZXh0LT5nZXRTY2FubmVyKCk7CisKKyAgICAvLyBub3QgYSBy
ZXNlcnZlZCB3b3JkIGluIEdMU0wgRVMgMS4wMCBhbmQgR0xTTCBFUyAzLjAwLCBzbyBjb3VsZCBi
ZSB1c2VkIGFzIGFuIGlkZW50aWZpZXIvdHlwZSBuYW1lCisgICAgaWYgKGNvbnRleHQtPmdldFNo
YWRlclZlcnNpb24oKSA8IDMxMCkKKyAgICB7CisgICAgICAgIHl5bHZhbC0+bGV4LnN0cmluZyA9
IE5ld1Bvb2xUU3RyaW5nKHl5dGV4dCk7CisgICAgICAgIHJldHVybiBjaGVja190eXBlKHl5c2Nh
bm5lcik7CisgICAgfQorCisgICAgcmV0dXJuIHRva2VuOworfQorCitpbnQgRVMzX2V4dGVuc2lv
bl9rZXl3b3JkX2Vsc2VfaWRlbnQoVFBhcnNlQ29udGV4dCAqY29udGV4dCwgY29uc3QgY2hhciog
ZXh0ZW5zaW9uLCBpbnQgdG9rZW4pCit7CisgICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3Ry
dWN0IHl5Z3V0c190KikgY29udGV4dC0+Z2V0U2Nhbm5lcigpOworICAgIHl5c2Nhbl90IHl5c2Nh
bm5lciA9ICh5eXNjYW5fdCkgY29udGV4dC0+Z2V0U2Nhbm5lcigpOworCisgICAgLy8gYSByZXNl
cnZlZCB3b3JkIGluIEdMU0wgRVMgMy4wMCB3aXRoIGVuYWJsZWQgZXh0ZW5zaW9uLCBvdGhlcndp
c2UgY291bGQgYmUgdXNlZCBhcyBhbiBpZGVudGlmaWVyL3R5cGUgbmFtZQorICAgIGlmIChjb250
ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkgPj0gMzAwICYmIGNvbnRleHQtPmlzRXh0ZW5zaW9uRW5h
YmxlZChleHRlbnNpb24pKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRva2VuOworICAgIH0KKwor
ICAgIHl5bHZhbC0+bGV4LnN0cmluZyA9IE5ld1Bvb2xUU3RyaW5nKHl5dGV4dCk7CisgICAgcmV0
dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKK30KKwogaW50IHVpbnRfY29uc3RhbnQoVFBhcnNl
Q29udGV4dCAqY29udGV4dCkKIHsKICAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3Qg
eXlndXRzX3QqKSBjb250ZXh0LT5nZXRTY2FubmVyKCk7CiAKICAgICBpZiAoY29udGV4dC0+Z2V0
U2hhZGVyVmVyc2lvbigpIDwgMzAwKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+ZXJyb3IoKnl5
bGxvYywgIlVuc2lnbmVkIGludGVnZXJzIGFyZSB1bnN1cHBvcnRlZCBwcmlvciB0byBHTFNMIEVT
IDMuMDAiLCB5eXRleHQsICIiKTsKKyAgICAgICAgY29udGV4dC0+ZXJyb3IoKnl5bGxvYywgIlVu
c2lnbmVkIGludGVnZXJzIGFyZSB1bnN1cHBvcnRlZCBwcmlvciB0byBHTFNMIEVTIDMuMDAiLCB5
eXRleHQpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBpZiAoIWF0b2lfY2xhbXAo
eXl0ZXh0LCAmKHl5bHZhbC0+bGV4LnUpKSkKLSAgICAgICAgeXlleHRyYS0+ZXJyb3IoKnl5bGxv
YywgIkludGVnZXIgb3ZlcmZsb3ciLCB5eXRleHQsICIiKTsKKyAgICAgICAgeXlleHRyYS0+ZXJy
b3IoKnl5bGxvYywgIkludGVnZXIgb3ZlcmZsb3ciLCB5eXRleHQpOwogCiAgICAgcmV0dXJuIFVJ
TlRDT05TVEFOVDsKIH0KQEAgLTUwNyw3ICs1ODUsNyBAQCBpbnQgZmxvYXRzdWZmaXhfY2hlY2so
VFBhcnNlQ29udGV4dCogY29udGV4dCkKICAgICBzdGQ6OnN0cmluZyB0ZXh0ID0geXl0ZXh0Owog
ICAgIHRleHQucmVzaXplKHRleHQuc2l6ZSgpIC0gMSk7CiAgICAgaWYgKCFzdHJ0b2ZfY2xhbXAo
dGV4dCwgJih5eWx2YWwtPmxleC5mKSkpCi0gICAgICAgIHl5ZXh0cmEtPndhcm5pbmcoKnl5bGxv
YywgIkZsb2F0IG92ZXJmbG93IiwgeXl0ZXh0LCAiIik7CisgICAgICAgIHl5ZXh0cmEtPndhcm5p
bmcoKnl5bGxvYywgIkZsb2F0IG92ZXJmbG93IiwgeXl0ZXh0KTsKIAogICAgIHJldHVybihGTE9B
VENPTlNUQU5UKTsKIH0KQEAgLTUyMyw5ICs2MDEsOSBAQCBpbnQgaW50X2NvbnN0YW50KFRQYXJz
ZUNvbnRleHQgKmNvbnRleHQpIHsKICAgICBpZiAoIWF0b2lfY2xhbXAoeXl0ZXh0LCAmdSkpCiAg
ICAgewogICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVmVyc2lvbigpID49IDMwMCkKLSAg
ICAgICAgICAgIHl5ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJbnRlZ2VyIG92ZXJmbG93IiwgeXl0
ZXh0LCAiIik7CisgICAgICAgICAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAiSW50ZWdlciBv
dmVyZmxvdyIsIHl5dGV4dCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHl5ZXh0cmEtPndh
cm5pbmcoKnl5bGxvYywgIkludGVnZXIgb3ZlcmZsb3ciLCB5eXRleHQsICIiKTsKKyAgICAgICAg
ICAgIHl5ZXh0cmEtPndhcm5pbmcoKnl5bGxvYywgIkludGVnZXIgb3ZlcmZsb3ciLCB5eXRleHQp
OwogICAgIH0KICAgICB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50Pih1KTsKICAgICBy
ZXR1cm4gSU5UQ09OU1RBTlQ7CkBAIC01MzUsMTAgKzYxMywyNiBAQCBpbnQgZmxvYXRfY29uc3Rh
bnQoeXlzY2FuX3QgeXlzY2FubmVyKSB7CiAgICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3Ry
dWN0IHl5Z3V0c190KikgeXlzY2FubmVyOwogCiAgICAgaWYgKCFzdHJ0b2ZfY2xhbXAoeXl0ZXh0
LCAmKHl5bHZhbC0+bGV4LmYpKSkKLSAgICAgICAgeXlleHRyYS0+d2FybmluZygqeXlsbG9jLCAi
RmxvYXQgb3ZlcmZsb3ciLCB5eXRleHQsICIiKTsKKyAgICAgICAgeXlleHRyYS0+d2FybmluZygq
eXlsbG9jLCAiRmxvYXQgb3ZlcmZsb3ciLCB5eXRleHQpOwogICAgIHJldHVybiBGTE9BVENPTlNU
QU5UOwogfQogCitpbnQgeXV2Y3Njc3RhbmRhcmRleHRfY29uc3RhbnQoVFBhcnNlQ29udGV4dCAq
Y29udGV4dCkKK3sKKyAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3Qq
KSBjb250ZXh0LT5nZXRTY2FubmVyKCk7CisgICAgeXlzY2FuX3QgeXlzY2FubmVyID0gKHl5c2Nh
bl90KSBjb250ZXh0LT5nZXRTY2FubmVyKCk7CisKKyAgICAvLyBhIHJlc2VydmVkIHdvcmQgaW4g
R0xTTCBFUyAzLjAwIHdpdGggZW5hYmxlZCBleHRlbnNpb24sIG90aGVyd2lzZSBjb3VsZCBiZSB1
c2VkIGFzIGFuIGlkZW50aWZpZXIvdHlwZSBuYW1lCisgICAgaWYgKGNvbnRleHQtPmdldFNoYWRl
clZlcnNpb24oKSA+PSAzMDAgJiYgY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRf
WVVWX3RhcmdldCIpKQorICAgIHsKKyAgICAgICAgeXlsdmFsLT5sZXguc3RyaW5nID0gTmV3UG9v
bFRTdHJpbmcoeXl0ZXh0KTsKKyAgICAgICAgcmV0dXJuIFlVVkNTQ1NUQU5EQVJERVhUQ09OU1RB
TlQ7CisgICAgfQorCisgICAgeXlsdmFsLT5sZXguc3RyaW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0
ZXh0KTsKKyAgICByZXR1cm4gY2hlY2tfdHlwZSh5eXNjYW5uZXIpOworfQorCiBpbnQgZ2xzbGFu
Z19pbml0aWFsaXplKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpIHsKICAgICB5eXNjYW5fdCBzY2Fu
bmVyID0gTlVMTDsKICAgICBpZiAoeXlsZXhfaW5pdF9leHRyYShjb250ZXh0LCAmc2Nhbm5lcikp
CkBAIC01NzksOCArNjczLDcgQEAgaW50IGdsc2xhbmdfc2NhbihzaXplX3QgY291bnQsIGNvbnN0
IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10sCiAgICAgaWYgKGNvbnRl
eHQtPmdldEZyYWdtZW50UHJlY2lzaW9uSGlnaCgpKQogICAgICAgICBwcmVwcm9jZXNzb3ItPnBy
ZWRlZmluZU1hY3JvKCJHTF9GUkFHTUVOVF9QUkVDSVNJT05fSElHSCIsIDEpOwogCi0gICAgcHJl
cHJvY2Vzc29yLT5zZXRNYXhUb2tlblNpemUoR2V0R2xvYmFsTWF4VG9rZW5TaXplKGNvbnRleHQt
PmdldFNoYWRlclNwZWMoKSkpOworICAgIHByZXByb2Nlc3Nvci0+c2V0TWF4VG9rZW5TaXplKHNo
OjpHZXRHbG9iYWxNYXhUb2tlblNpemUoY29udGV4dC0+Z2V0U2hhZGVyU3BlYygpKSk7CiAKICAg
ICByZXR1cm4gMDsKIH0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZy55IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZy55CmluZGV4IDc0NzZmNjJjYjlhYjQyY2U2
YjBiNWE2OTRjOTM3NTZiMmFmYTZkYzEuLmQ2Nzc1MmMwM2VmNDVhODc4NDc3YjM1MWNjNmFjMDg1
NzcxZjEyZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL2dsc2xhbmcueQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nLnkKQEAgLTQ2LDYgKzQ2LDggQEAgV0hJQ0ggR0VO
RVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAoZ2xzbGFuZ190YWIuY3BwIEFORCBnbHNsYW5nX3Rh
Yi5oKS4KIAogI2RlZmluZSBZWUVOQUJMRV9OTFMgMAogCit1c2luZyBuYW1lc3BhY2Ugc2g7CisK
ICV9CiAlZXhwZWN0IDEgLyogT25lIHNoaWZ0IHJlZHVjZSBjb25mbGljdCBiZWNhdXNlIG9mIGlm
IHwgZWxzZSAqLwogJXBhcnNlLXBhcmFtIHtUUGFyc2VDb250ZXh0KiBjb250ZXh0fQpAQCAtNzIs
MTMgKzc0LDE2IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2xhbmdf
dGFiLmNwcCBBTkQgZ2xzbGFuZ190YWIuaCkuCiAgICAgc3RydWN0IHsKICAgICAgICAgVE9wZXJh
dG9yIG9wOwogICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJt
Tm9kZTsKKyAgICAgICAgICAgIFRJbnRlcm1Ob2RlICppbnRlcm1Ob2RlOwogICAgICAgICAgICAg
VEludGVybU5vZGVQYWlyIG5vZGVQYWlyOwotICAgICAgICAgICAgVEludGVybVR5cGVkKiBpbnRl
cm1UeXBlZE5vZGU7Ci0gICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlKiBpbnRlcm1BZ2dyZWdh
dGU7Ci0gICAgICAgICAgICBUSW50ZXJtQmxvY2sqIGludGVybUJsb2NrOwotICAgICAgICAgICAg
VEludGVybVN3aXRjaCogaW50ZXJtU3dpdGNoOwotICAgICAgICAgICAgVEludGVybUNhc2UqIGlu
dGVybUNhc2U7CisgICAgICAgICAgICBUSW50ZXJtRnVuY3Rpb25DYWxsT3JNZXRob2QgY2FsbE9y
TWV0aG9kUGFpcjsKKyAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW50ZXJtVHlwZWROb2RlOwor
ICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqaW50ZXJtQWdncmVnYXRlOworICAgICAgICAg
ICAgVEludGVybUJsb2NrICppbnRlcm1CbG9jazsKKyAgICAgICAgICAgIFRJbnRlcm1EZWNsYXJh
dGlvbiAqaW50ZXJtRGVjbGFyYXRpb247CisgICAgICAgICAgICBUSW50ZXJtRnVuY3Rpb25Qcm90
b3R5cGUgKmludGVybUZ1bmN0aW9uUHJvdG90eXBlOworICAgICAgICAgICAgVEludGVybVN3aXRj
aCAqaW50ZXJtU3dpdGNoOworICAgICAgICAgICAgVEludGVybUNhc2UgKmludGVybUNhc2U7CiAg
ICAgICAgIH07CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIFRUeXBlU3BlY2lmaWVyTm9u
QXJyYXkgdHlwZVNwZWNpZmllck5vbkFycmF5OwpAQCAtODYsMTIgKzkxLDEyIEBAIFdISUNIIEdF
TkVSQVRFUyBUSEUgR0xTTCBFUyBQQVJTRVIgKGdsc2xhbmdfdGFiLmNwcCBBTkQgZ2xzbGFuZ190
YWIuaCkuCiAgICAgICAgICAgICBUUHJlY2lzaW9uIHByZWNpc2lvbjsKICAgICAgICAgICAgIFRM
YXlvdXRRdWFsaWZpZXIgbGF5b3V0UXVhbGlmaWVyOwogICAgICAgICAgICAgVFF1YWxpZmllciBx
dWFsaWZpZXI7Ci0gICAgICAgICAgICBURnVuY3Rpb24qIGZ1bmN0aW9uOworICAgICAgICAgICAg
VEZ1bmN0aW9uICpmdW5jdGlvbjsKICAgICAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW07Ci0gICAg
ICAgICAgICBURmllbGQqIGZpZWxkOwotICAgICAgICAgICAgVEZpZWxkTGlzdCogZmllbGRMaXN0
OwotICAgICAgICAgICAgVFF1YWxpZmllcldyYXBwZXJCYXNlKiBxdWFsaWZpZXJXcmFwcGVyOwot
ICAgICAgICAgICAgVFR5cGVRdWFsaWZpZXJCdWlsZGVyKiB0eXBlUXVhbGlmaWVyQnVpbGRlcjsK
KyAgICAgICAgICAgIFRGaWVsZCAqZmllbGQ7CisgICAgICAgICAgICBURmllbGRMaXN0ICpmaWVs
ZExpc3Q7CisgICAgICAgICAgICBUUXVhbGlmaWVyV3JhcHBlckJhc2UgKnF1YWxpZmllcldyYXBw
ZXI7CisgICAgICAgICAgICBUVHlwZVF1YWxpZmllckJ1aWxkZXIgKnR5cGVRdWFsaWZpZXJCdWls
ZGVyOwogICAgICAgICB9OwogICAgIH0gaW50ZXJtOwogfQpAQCAtMTY2LDEyICsxNzEsMTggQEAg
ZXh0ZXJuIHZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQYXJzZUNvbnRleHQqIGNvbnRl
eHQsIHZvaWQgKnNjYW5uZXIsIGNvbnMKICV0b2tlbiA8bGV4PiBNQVRSSVgyIE1BVFJJWDMgTUFU
UklYNCBJTl9RVUFMIE9VVF9RVUFMIElOT1VUX1FVQUwgVU5JRk9STSBWQVJZSU5HCiAldG9rZW4g
PGxleD4gTUFUUklYMngzIE1BVFJJWDN4MiBNQVRSSVgyeDQgTUFUUklYNHgyIE1BVFJJWDN4NCBN
QVRSSVg0eDMKICV0b2tlbiA8bGV4PiBDRU5UUk9JRCBGTEFUIFNNT09USAorJXRva2VuIDxsZXg+
IFJFQURPTkxZIFdSSVRFT05MWSBDT0hFUkVOVCBSRVNUUklDVCBWT0xBVElMRSBTSEFSRUQKICV0
b2tlbiA8bGV4PiBTVFJVQ1QgVk9JRF9UWVBFIFdISUxFCiAldG9rZW4gPGxleD4gU0FNUExFUjJE
IFNBTVBMRVJDVUJFIFNBTVBMRVJfRVhURVJOQUxfT0VTIFNBTVBMRVIyRFJFQ1QgU0FNUExFUjJE
QVJSQVkKICV0b2tlbiA8bGV4PiBJU0FNUExFUjJEIElTQU1QTEVSM0QgSVNBTVBMRVJDVUJFIElT
QU1QTEVSMkRBUlJBWQogJXRva2VuIDxsZXg+IFVTQU1QTEVSMkQgVVNBTVBMRVIzRCBVU0FNUExF
UkNVQkUgVVNBTVBMRVIyREFSUkFZCisldG9rZW4gPGxleD4gU0FNUExFUjJETVMgSVNBTVBMRVIy
RE1TIFVTQU1QTEVSMkRNUwogJXRva2VuIDxsZXg+IFNBTVBMRVIzRCBTQU1QTEVSM0RSRUNUIFNB
TVBMRVIyRFNIQURPVyBTQU1QTEVSQ1VCRVNIQURPVyBTQU1QTEVSMkRBUlJBWVNIQURPVworJXRv
a2VuIDxsZXg+IFNBTVBMRVJFWFRFUk5BTDJEWTJZRVhUCisldG9rZW4gPGxleD4gSU1BR0UyRCBJ
SU1BR0UyRCBVSU1BR0UyRCBJTUFHRTNEIElJTUFHRTNEIFVJTUFHRTNEIElNQUdFMkRBUlJBWSBJ
SU1BR0UyREFSUkFZIFVJTUFHRTJEQVJSQVkKKyV0b2tlbiA8bGV4PiBJTUFHRUNVQkUgSUlNQUdF
Q1VCRSBVSU1BR0VDVUJFCiAldG9rZW4gPGxleD4gTEFZT1VUCisldG9rZW4gPGxleD4gWVVWQ1ND
U1RBTkRBUkRFWFQgWVVWQ1NDU1RBTkRBUkRFWFRDT05TVEFOVAogCiAldG9rZW4gPGxleD4gSURF
TlRJRklFUiBUWVBFX05BTUUgRkxPQVRDT05TVEFOVCBJTlRDT05TVEFOVCBVSU5UQ09OU1RBTlQg
Qk9PTENPTlNUQU5UCiAldG9rZW4gPGxleD4gRklFTERfU0VMRUNUSU9OCkBAIC0yMTUsOCArMjI2
LDggQEAgZXh0ZXJuIHZvaWQgeXllcnJvcihZWUxUWVBFKiB5eWxsb2MsIFRQYXJzZUNvbnRleHQq
IGNvbnRleHQsIHZvaWQgKnNjYW5uZXIsIGNvbnMKIAogJXR5cGUgPGludGVybS5wcmVjaXNpb24+
IHByZWNpc2lvbl9xdWFsaWZpZXIKICV0eXBlIDxpbnRlcm0ubGF5b3V0UXVhbGlmaWVyPiBsYXlv
dXRfcXVhbGlmaWVyCi0ldHlwZSA8aW50ZXJtLnF1YWxpZmllcj4gc3RvcmFnZV9xdWFsaWZpZXIg
aW50ZXJwb2xhdGlvbl9xdWFsaWZpZXIKLSV0eXBlIDxpbnRlcm0ucXVhbGlmaWVyV3JhcHBlcj4g
c2luZ2xlX3R5cGVfcXVhbGlmaWVyIGludmFyaWFudF9xdWFsaWZpZXIKKyV0eXBlIDxpbnRlcm0u
cXVhbGlmaWVyPiBpbnRlcnBvbGF0aW9uX3F1YWxpZmllcgorJXR5cGUgPGludGVybS5xdWFsaWZp
ZXJXcmFwcGVyPiBzdG9yYWdlX3F1YWxpZmllciBzaW5nbGVfdHlwZV9xdWFsaWZpZXIgaW52YXJp
YW50X3F1YWxpZmllcgogJXR5cGUgPGludGVybS50eXBlUXVhbGlmaWVyQnVpbGRlcj4gdHlwZV9x
dWFsaWZpZXIKIAogJXR5cGUgPGludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXk+IHR5cGVfc3Bl
Y2lmaWVyX25vbmFycmF5IHN0cnVjdF9zcGVjaWZpZXIKQEAgLTI3MSw2ICsyODIsMTQgQEAgcHJp
bWFyeV9leHByZXNzaW9uCiAgICAgICAgIHVuaW9uQXJyYXktPnNldEJDb25zdCgkMS5iKTsKICAg
ICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFy
cmF5LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgQDEpOwogICAgIH0K
KyAgICB8IFlVVkNTQ1NUQU5EQVJERVhUQ09OU1RBTlQgeworICAgICAgICBpZiAoIWNvbnRleHQt
PmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX1lVVl90YXJnZXQiKSkgeworICAgICAgICAgICBj
b250ZXh0LT5lcnJvcihAMSwgInVuc3VwcG9ydGVkIHZhbHVlIiwgJDEuc3RyaW5nLT5jX3N0cigp
KTsKKyAgICAgICAgfQorICAgICAgICBUQ29uc3RhbnRVbmlvbiAqdW5pb25BcnJheSA9IG5ldyBU
Q29uc3RhbnRVbmlvblsxXTsKKyAgICAgICAgdW5pb25BcnJheS0+c2V0WXV2Q3NjU3RhbmRhcmRF
WFRDb25zdChnZXRZdXZDc2NTdGFuZGFyZEVYVCgkMS5zdHJpbmctPmNfc3RyKCkpKTsKKyAgICAg
ICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbih1bmlvbkFycmF5
LCBUVHlwZShFYnRZdXZDc2NTdGFuZGFyZEVYVCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCksIEAx
KTsKKyAgICB9CiAgICAgfCBMRUZUX1BBUkVOIGV4cHJlc3Npb24gUklHSFRfUEFSRU4gewogICAg
ICAgICAkJCA9ICQyOwogICAgIH0KQEAgLTMwNiwyNCArMzI1LDE5IEBAIGludGVnZXJfZXhwcmVz
c2lvbgogCiBmdW5jdGlvbl9jYWxsCiAgICAgOiBmdW5jdGlvbl9jYWxsX29yX21ldGhvZCB7Ci0g
ICAgICAgIGJvb2wgZmF0YWxFcnJvciA9IGZhbHNlOwotICAgICAgICAkJCA9IGNvbnRleHQtPmFk
ZEZ1bmN0aW9uQ2FsbE9yTWV0aG9kKCQxLmZ1bmN0aW9uLCAkMS5ub2RlUGFpci5ub2RlMSwgJDEu
bm9kZVBhaXIubm9kZTIsIEAxLCAmZmF0YWxFcnJvcik7Ci0gICAgICAgIGlmIChmYXRhbEVycm9y
KQotICAgICAgICB7Ci0gICAgICAgICAgICBZWUVSUk9SOwotICAgICAgICB9CisgICAgICAgICQk
ID0gY29udGV4dC0+YWRkRnVuY3Rpb25DYWxsT3JNZXRob2QoJDEuZnVuY3Rpb24sICQxLmNhbGxP
ck1ldGhvZFBhaXIuYXJndW1lbnRzLCAkMS5jYWxsT3JNZXRob2RQYWlyLnRoaXNOb2RlLCBAMSk7
CiAgICAgfQogICAgIDsKIAogZnVuY3Rpb25fY2FsbF9vcl9tZXRob2QKICAgICA6IGZ1bmN0aW9u
X2NhbGxfZ2VuZXJpYyB7CiAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICQkLm5vZGVQYWlyLm5v
ZGUyID0gbnVsbHB0cjsKKyAgICAgICAgJCQuY2FsbE9yTWV0aG9kUGFpci50aGlzTm9kZSA9IG51
bGxwdHI7CiAgICAgfQogICAgIHwgcG9zdGZpeF9leHByZXNzaW9uIERPVCBmdW5jdGlvbl9jYWxs
X2dlbmVyaWMgewogICAgICAgICBFUzNfT1JfTkVXRVIoIiIsIEAzLCAibWV0aG9kcyIpOwogICAg
ICAgICAkJCA9ICQzOwotICAgICAgICAkJC5ub2RlUGFpci5ub2RlMiA9ICQxOworICAgICAgICAk
JC5jYWxsT3JNZXRob2RQYWlyLnRoaXNOb2RlID0gJDE7CiAgICAgfQogICAgIDsKIApAQCAtMzM5
LDI2ICszNTMsMjMgQEAgZnVuY3Rpb25fY2FsbF9nZW5lcmljCiBmdW5jdGlvbl9jYWxsX2hlYWRl
cl9ub19wYXJhbWV0ZXJzCiAgICAgOiBmdW5jdGlvbl9jYWxsX2hlYWRlciBWT0lEX1RZUEUgewog
ICAgICAgICAkJC5mdW5jdGlvbiA9ICQxOwotICAgICAgICAkJC5ub2RlUGFpci5ub2RlMSA9IG51
bGxwdHI7CisgICAgICAgICQkLmNhbGxPck1ldGhvZFBhaXIuYXJndW1lbnRzID0gY29udGV4dC0+
Y3JlYXRlRW1wdHlBcmd1bWVudHNMaXN0KCk7CiAgICAgfQogICAgIHwgZnVuY3Rpb25fY2FsbF9o
ZWFkZXIgewogICAgICAgICAkJC5mdW5jdGlvbiA9ICQxOwotICAgICAgICAkJC5ub2RlUGFpci5u
b2RlMSA9IG51bGxwdHI7CisgICAgICAgICQkLmNhbGxPck1ldGhvZFBhaXIuYXJndW1lbnRzID0g
Y29udGV4dC0+Y3JlYXRlRW1wdHlBcmd1bWVudHNMaXN0KCk7CiAgICAgfQogICAgIDsKIAogZnVu
Y3Rpb25fY2FsbF9oZWFkZXJfd2l0aF9wYXJhbWV0ZXJzCiAgICAgOiBmdW5jdGlvbl9jYWxsX2hl
YWRlciBhc3NpZ25tZW50X2V4cHJlc3Npb24gewotICAgICAgICBjb25zdCBUVHlwZSAqdHlwZSA9
IG5ldyBUVHlwZSgkMi0+Z2V0VHlwZSgpKTsKLSAgICAgICAgJDEtPmFkZFBhcmFtZXRlcihUQ29u
c3RQYXJhbWV0ZXIodHlwZSkpOworICAgICAgICAkJC5jYWxsT3JNZXRob2RQYWlyLmFyZ3VtZW50
cyA9IGNvbnRleHQtPmNyZWF0ZUVtcHR5QXJndW1lbnRzTGlzdCgpOwogICAgICAgICAkJC5mdW5j
dGlvbiA9ICQxOwotICAgICAgICAkJC5ub2RlUGFpci5ub2RlMSA9IFRJbnRlcm1lZGlhdGU6Ok1h
a2VBZ2dyZWdhdGUoJDIsIEAyKTsKKyAgICAgICAgJCQuY2FsbE9yTWV0aG9kUGFpci5hcmd1bWVu
dHMtPnB1c2hfYmFjaygkMik7CiAgICAgfQogICAgIHwgZnVuY3Rpb25fY2FsbF9oZWFkZXJfd2l0
aF9wYXJhbWV0ZXJzIENPTU1BIGFzc2lnbm1lbnRfZXhwcmVzc2lvbiB7Ci0gICAgICAgIGNvbnN0
IFRUeXBlICp0eXBlID0gbmV3IFRUeXBlKCQzLT5nZXRUeXBlKCkpOwotICAgICAgICAkMS5mdW5j
dGlvbi0+YWRkUGFyYW1ldGVyKFRDb25zdFBhcmFtZXRlcih0eXBlKSk7CiAgICAgICAgICQkLmZ1
bmN0aW9uID0gJDEuZnVuY3Rpb247Ci0gICAgICAgICQkLm5vZGVQYWlyLm5vZGUxID0gY29udGV4
dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgJDMsIEAyKTsKKyAg
ICAgICAgJCQuY2FsbE9yTWV0aG9kUGFpci5hcmd1bWVudHMtPnB1c2hfYmFjaygkMyk7CiAgICAg
fQogICAgIDsKIApAQCAtNjAzLDEwICs2MTQsNyBAQCBkZWNsYXJhdGlvbgogICAgICAgICAkJCA9
IGNvbnRleHQtPmFkZEZ1bmN0aW9uUHJvdG90eXBlRGVjbGFyYXRpb24oKigkMS5mdW5jdGlvbiks
IEAxKTsKICAgICB9CiAgICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBTRU1JQ09MT04gewotICAg
ICAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dOb2RlID0gJDEuaW50ZXJtQWdncmVnYXRlOwotICAg
ICAgICBpZiAoYWdnTm9kZSAmJiBhZ2dOb2RlLT5nZXRPcCgpID09IEVPcE51bGwpCi0gICAgICAg
ICAgICBhZ2dOb2RlLT5zZXRPcChFT3BEZWNsYXJhdGlvbik7Ci0gICAgICAgICQkID0gYWdnTm9k
ZTsKKyAgICAgICAgJCQgPSAkMS5pbnRlcm1EZWNsYXJhdGlvbjsKICAgICB9CiAgICAgfCBQUkVD
SVNJT04gcHJlY2lzaW9uX3F1YWxpZmllciB0eXBlX3NwZWNpZmllcl9ub19wcmVjIFNFTUlDT0xP
TiB7CiAgICAgICAgIGlmICgoJDIgPT0gRWJwSGlnaCkgJiYgKGNvbnRleHQtPmdldFNoYWRlclR5
cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpICYmICFjb250ZXh0LT5nZXRGcmFnbWVudFByZWNp
c2lvbkhpZ2goKSkgewpAQCAtNzU5LDY3ICs3NjcsNjEgQEAgaW5pdF9kZWNsYXJhdG9yX2xpc3QK
ICAgICB9CiAgICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBDT01NQSBpZGVudGlmaWVyIHsKICAg
ICAgICAgJCQgPSAkMTsKLSAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFy
c2VEZWNsYXJhdG9yKCQkLnR5cGUsICQxLmludGVybUFnZ3JlZ2F0ZSwgQDMsICokMy5zdHJpbmcp
OworICAgICAgICBjb250ZXh0LT5wYXJzZURlY2xhcmF0b3IoJCQudHlwZSwgQDMsICokMy5zdHJp
bmcsICQkLmludGVybURlY2xhcmF0aW9uKTsKICAgICB9CiAgICAgfCBpbml0X2RlY2xhcmF0b3Jf
bGlzdCBDT01NQSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNzaW9uIFJJ
R0hUX0JSQUNLRVQgewogICAgICAgICAkJCA9ICQxOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdh
dGUgPSBjb250ZXh0LT5wYXJzZUFycmF5RGVjbGFyYXRvcigkJC50eXBlLCAkMS5pbnRlcm1BZ2dy
ZWdhdGUsIEAzLCAqJDMuc3RyaW5nLCBANCwgJDUpOworICAgICAgICBjb250ZXh0LT5wYXJzZUFy
cmF5RGVjbGFyYXRvcigkJC50eXBlLCBAMywgKiQzLnN0cmluZywgQDQsICQ1LCAkJC5pbnRlcm1E
ZWNsYXJhdGlvbik7CiAgICAgfQogICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRl
bnRpZmllciBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCBFUVVBTCBpbml0aWFsaXplciB7CiAg
ICAgICAgIEVTM19PUl9ORVdFUigiW10iLCBAMywgImltcGxpY2l0bHkgc2l6ZWQgYXJyYXkiKTsK
ICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+
cGFyc2VBcnJheUluaXREZWNsYXJhdG9yKCQkLnR5cGUsICQxLmludGVybUFnZ3JlZ2F0ZSwgQDMs
ICokMy5zdHJpbmcsIEA0LCBudWxscHRyLCBANiwgJDcpOworICAgICAgICBjb250ZXh0LT5wYXJz
ZUFycmF5SW5pdERlY2xhcmF0b3IoJCQudHlwZSwgQDMsICokMy5zdHJpbmcsIEA0LCBudWxscHRy
LCBANiwgJDcsICQkLmludGVybURlY2xhcmF0aW9uKTsKICAgICB9CiAgICAgfCBpbml0X2RlY2xh
cmF0b3JfbGlzdCBDT01NQSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBjb25zdGFudF9leHByZXNz
aW9uIFJJR0hUX0JSQUNLRVQgRVFVQUwgaW5pdGlhbGl6ZXIgewogICAgICAgICBFUzNfT1JfTkVX
RVIoIj0iLCBANywgImZpcnN0LWNsYXNzIGFycmF5cyAoYXJyYXkgaW5pdGlhbGl6ZXIpIik7CiAg
ICAgICAgICQkID0gJDE7Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBh
cnNlQXJyYXlJbml0RGVjbGFyYXRvcigkJC50eXBlLCAkMS5pbnRlcm1BZ2dyZWdhdGUsIEAzLCAq
JDMuc3RyaW5nLCBANCwgJDUsIEA3LCAkOCk7CisgICAgICAgIGNvbnRleHQtPnBhcnNlQXJyYXlJ
bml0RGVjbGFyYXRvcigkJC50eXBlLCBAMywgKiQzLnN0cmluZywgQDQsICQ1LCBANywgJDgsICQk
LmludGVybURlY2xhcmF0aW9uKTsKICAgICB9CiAgICAgfCBpbml0X2RlY2xhcmF0b3JfbGlzdCBD
T01NQSBpZGVudGlmaWVyIEVRVUFMIGluaXRpYWxpemVyIHsKICAgICAgICAgJCQgPSAkMTsKLSAg
ICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VJbml0RGVjbGFyYXRvcigk
JC50eXBlLCAkMS5pbnRlcm1BZ2dyZWdhdGUsIEAzLCAqJDMuc3RyaW5nLCBANCwgJDUpOworICAg
ICAgICBjb250ZXh0LT5wYXJzZUluaXREZWNsYXJhdG9yKCQkLnR5cGUsIEAzLCAqJDMuc3RyaW5n
LCBANCwgJDUsICQkLmludGVybURlY2xhcmF0aW9uKTsKICAgICB9CiAgICAgOwogCiBzaW5nbGVf
ZGVjbGFyYXRpb24KICAgICA6IGZ1bGx5X3NwZWNpZmllZF90eXBlIHsKICAgICAgICAgJCQudHlw
ZSA9ICQxOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZVNpbmds
ZURlY2xhcmF0aW9uKCQkLnR5cGUsIEAxLCAiIik7CisgICAgICAgICQkLmludGVybURlY2xhcmF0
aW9uID0gY29udGV4dC0+cGFyc2VTaW5nbGVEZWNsYXJhdGlvbigkJC50eXBlLCBAMSwgIiIpOwog
ICAgIH0KICAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50aWZpZXIgewogICAgICAgICAk
JC50eXBlID0gJDE7Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNl
U2luZ2xlRGVjbGFyYXRpb24oJCQudHlwZSwgQDIsICokMi5zdHJpbmcpOworICAgICAgICAkJC5p
bnRlcm1EZWNsYXJhdGlvbiA9IGNvbnRleHQtPnBhcnNlU2luZ2xlRGVjbGFyYXRpb24oJCQudHlw
ZSwgQDIsICokMi5zdHJpbmcpOwogICAgIH0KICAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlk
ZW50aWZpZXIgTEVGVF9CUkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCB7
CiAgICAgICAgICQkLnR5cGUgPSAkMTsKLSAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+cGFyc2VTaW5nbGVBcnJheURlY2xhcmF0aW9uKCQkLnR5cGUsIEAyLCAqJDIuc3RyaW5n
LCBAMywgJDQpOworICAgICAgICAkJC5pbnRlcm1EZWNsYXJhdGlvbiA9IGNvbnRleHQtPnBhcnNl
U2luZ2xlQXJyYXlEZWNsYXJhdGlvbigkJC50eXBlLCBAMiwgKiQyLnN0cmluZywgQDMsICQ0KTsK
ICAgICB9CiAgICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIExFRlRfQlJBQ0tF
VCBSSUdIVF9CUkFDS0VUIEVRVUFMIGluaXRpYWxpemVyIHsKICAgICAgICAgRVMzX09SX05FV0VS
KCJbXSIsIEAzLCAiaW1wbGljaXRseSBzaXplZCBhcnJheSIpOwogICAgICAgICAkJC50eXBlID0g
JDE7Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlU2luZ2xlQXJy
YXlJbml0RGVjbGFyYXRpb24oJCQudHlwZSwgQDIsICokMi5zdHJpbmcsIEAzLCBudWxscHRyLCBA
NSwgJDYpOworICAgICAgICAkJC5pbnRlcm1EZWNsYXJhdGlvbiA9IGNvbnRleHQtPnBhcnNlU2lu
Z2xlQXJyYXlJbml0RGVjbGFyYXRpb24oJCQudHlwZSwgQDIsICokMi5zdHJpbmcsIEAzLCBudWxs
cHRyLCBANSwgJDYpOwogICAgIH0KICAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50aWZp
ZXIgTEVGVF9CUkFDS0VUIGNvbnN0YW50X2V4cHJlc3Npb24gUklHSFRfQlJBQ0tFVCBFUVVBTCBp
bml0aWFsaXplciB7CiAgICAgICAgIEVTM19PUl9ORVdFUigiPSIsIEA2LCAiZmlyc3QtY2xhc3Mg
YXJyYXlzIChhcnJheSBpbml0aWFsaXplcikiKTsKICAgICAgICAgJCQudHlwZSA9ICQxOwotICAg
ICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZVNpbmdsZUFycmF5SW5pdERl
Y2xhcmF0aW9uKCQkLnR5cGUsIEAyLCAqJDIuc3RyaW5nLCBAMywgJDQsIEA2LCAkNyk7CisgICAg
ICAgICQkLmludGVybURlY2xhcmF0aW9uID0gY29udGV4dC0+cGFyc2VTaW5nbGVBcnJheUluaXRE
ZWNsYXJhdGlvbigkJC50eXBlLCBAMiwgKiQyLnN0cmluZywgQDMsICQ0LCBANiwgJDcpOwogICAg
IH0KICAgICB8IGZ1bGx5X3NwZWNpZmllZF90eXBlIGlkZW50aWZpZXIgRVFVQUwgaW5pdGlhbGl6
ZXIgewogICAgICAgICAkJC50eXBlID0gJDE7Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9
IGNvbnRleHQtPnBhcnNlU2luZ2xlSW5pdERlY2xhcmF0aW9uKCQkLnR5cGUsIEAyLCAqJDIuc3Ry
aW5nLCBAMywgJDQpOworICAgICAgICAkJC5pbnRlcm1EZWNsYXJhdGlvbiA9IGNvbnRleHQtPnBh
cnNlU2luZ2xlSW5pdERlY2xhcmF0aW9uKCQkLnR5cGUsIEAyLCAqJDIuc3RyaW5nLCBAMywgJDQp
OwogICAgIH0KICAgICA7CiAKIGZ1bGx5X3NwZWNpZmllZF90eXBlCiAgICAgOiB0eXBlX3NwZWNp
ZmllciB7CisgICAgICAgIGNvbnRleHQtPmFkZEZ1bGx5U3BlY2lmaWVkVHlwZSgmJDEpOwogICAg
ICAgICAkJCA9ICQxOwotCi0gICAgICAgIGlmICgkMS5hcnJheSkgewotICAgICAgICAgICAgRVMz
X09SX05FV0VSKCJbXSIsIEAxLCAiZmlyc3QtY2xhc3MtYXJyYXkiKTsKLSAgICAgICAgICAgIGlm
IChjb250ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkgIT0gMzAwKSB7Ci0gICAgICAgICAgICAgICAg
JDEuY2xlYXJBcnJheW5lc3MoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgIH0KICAg
ICB8IHR5cGVfcXVhbGlmaWVyIHR5cGVfc3BlY2lmaWVyIHsKICAgICAgICAgJCQgPSBjb250ZXh0
LT5hZGRGdWxseVNwZWNpZmllZFR5cGUoKiQxLCAkMik7CkBAIC04NTQsMTEgKzg1Niw4IEBAIGlu
dmFyaWFudF9xdWFsaWZpZXIKIAogc2luZ2xlX3R5cGVfcXVhbGlmaWVyCiAgICAgOiBzdG9yYWdl
X3F1YWxpZmllciB7Ci0gICAgICAgIGlmICghY29udGV4dC0+ZGVjbGFyaW5nRnVuY3Rpb24oKSAm
JiAkMSAhPSBFdnFDb25zdCAmJiAhY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgIkxvY2FsIHZhcmlh
YmxlcyBjYW4gb25seSB1c2UgdGhlIGNvbnN0IHN0b3JhZ2UgcXVhbGlmaWVyLiIsIGdldFF1YWxp
ZmllclN0cmluZygkMSkpOwotICAgICAgICB9Ci0gICAgICAgICQkID0gbmV3IFRTdG9yYWdlUXVh
bGlmaWVyV3JhcHBlcigkMSwgQDEpOworICAgICAgICBjb250ZXh0LT5jaGVja0xvY2FsVmFyaWFi
bGVDb25zdFN0b3JhZ2VRdWFsaWZpZXIoKiQxKTsKKyAgICAgICAgJCQgPSAkMTsKICAgICB9CiAg
ICAgfCBsYXlvdXRfcXVhbGlmaWVyIHsKICAgICAgICAgY29udGV4dC0+Y2hlY2tJc0F0R2xvYmFs
TGV2ZWwoQDEsICJsYXlvdXQiKTsKQEAgLTg4Myw0MyArODgyLDQzIEBAIHN0b3JhZ2VfcXVhbGlm
aWVyCiAgICAgICAgIFZFUlRFWF9PTkxZKCJhdHRyaWJ1dGUiLCBAMSk7CiAgICAgICAgIEVTMl9P
TkxZKCJhdHRyaWJ1dGUiLCBAMSk7CiAgICAgICAgIGNvbnRleHQtPmNoZWNrSXNBdEdsb2JhbExl
dmVsKEAxLCAiYXR0cmlidXRlIik7Ci0gICAgICAgICQkID0gRXZxQXR0cmlidXRlOworICAgICAg
ICAkJCA9IG5ldyBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIoRXZxQXR0cmlidXRlLCBAMSk7CiAg
ICAgfQogICAgIHwgVkFSWUlORyB7CiAgICAgICAgIEVTMl9PTkxZKCJ2YXJ5aW5nIiwgQDEpOwog
ICAgICAgICBjb250ZXh0LT5jaGVja0lzQXRHbG9iYWxMZXZlbChAMSwgInZhcnlpbmciKTsKICAg
ICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9WRVJURVhfU0hBREVSKQot
ICAgICAgICAgICAgJCQgPSBFdnFWYXJ5aW5nT3V0OworICAgICAgICAgICAgJCQgPSBuZXcgVFN0
b3JhZ2VRdWFsaWZpZXJXcmFwcGVyKEV2cVZhcnlpbmdPdXQsIEAxKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgJCQgPSBFdnFWYXJ5aW5nSW47CisgICAgICAgICAgICAkJCA9IG5ldyBUU3Rv
cmFnZVF1YWxpZmllcldyYXBwZXIoRXZxVmFyeWluZ0luLCBAMSk7CiAgICAgfQogICAgIHwgQ09O
U1RfUVVBTCB7Ci0gICAgICAgICQkID0gRXZxQ29uc3Q7CisgICAgICAgICQkID0gbmV3IFRTdG9y
YWdlUXVhbGlmaWVyV3JhcHBlcihFdnFDb25zdCwgQDEpOwogICAgIH0KICAgICB8IElOX1FVQUwg
ewogICAgICAgICBpZiAoY29udGV4dC0+ZGVjbGFyaW5nRnVuY3Rpb24oKSkKICAgICAgICAgewot
ICAgICAgICAgICAgJCQgPSBFdnFJbjsKKyAgICAgICAgICAgICQkID0gbmV3IFRTdG9yYWdlUXVh
bGlmaWVyV3JhcHBlcihFdnFJbiwgQDEpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGNv
bnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEVTM19PUl9ORVdFUigiaW4iLCBAMSwgInN0b3JhZ2UgcXVhbGlmaWVyIik7
Ci0gICAgICAgICAgICAkJCA9IEV2cUZyYWdtZW50SW47CisgICAgICAgICAgICAkJCA9IG5ldyBU
U3RvcmFnZVF1YWxpZmllcldyYXBwZXIoRXZxRnJhZ21lbnRJbiwgQDEpOwogICAgICAgICB9CiAg
ICAgICAgIGVsc2UgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9WRVJURVhfU0hB
REVSKQogICAgICAgICB7CiAgICAgICAgICAgICBFUzNfT1JfTkVXRVIoImluIiwgQDEsICJzdG9y
YWdlIHF1YWxpZmllciIpOwotICAgICAgICAgICAgJCQgPSBFdnFWZXJ0ZXhJbjsKKyAgICAgICAg
ICAgICQkID0gbmV3IFRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlcihFdnFWZXJ0ZXhJbiwgQDEpOwog
ICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgJCQgPSBFdnFD
b21wdXRlSW47CisgICAgICAgICAgICAkJCA9IG5ldyBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIo
RXZxQ29tcHV0ZUluLCBAMSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBPVVRfUVVBTCB7CiAg
ICAgICAgIGlmIChjb250ZXh0LT5kZWNsYXJpbmdGdW5jdGlvbigpKQogICAgICAgICB7Ci0gICAg
ICAgICAgICAkJCA9IEV2cU91dDsKKyAgICAgICAgICAgICQkID0gbmV3IFRTdG9yYWdlUXVhbGlm
aWVyV3JhcHBlcihFdnFPdXQsIEAxKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAg
IHsKQEAgLTkyNywzOCArOTI2LDU1IEBAIHN0b3JhZ2VfcXVhbGlmaWVyCiAgICAgICAgICAgICBO
T05fQ09NUFVURV9PTkxZKCJvdXQiLCBAMSk7CiAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0
U2hhZGVyVHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUikKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAkJCA9IEV2cUZyYWdtZW50T3V0OworICAgICAgICAgICAgICAgICQkID0gbmV3
IFRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlcihFdnFGcmFnbWVudE91dCwgQDEpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICQk
ID0gRXZxVmVydGV4T3V0OworICAgICAgICAgICAgICAgICQkID0gbmV3IFRTdG9yYWdlUXVhbGlm
aWVyV3JhcHBlcihFdnFWZXJ0ZXhPdXQsIEAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KICAgICB8IElOT1VUX1FVQUwgewogICAgICAgICBpZiAoIWNvbnRleHQtPmRlY2xhcmlu
Z0Z1bmN0aW9uKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAi
aW52YWxpZCBpbm91dCBxdWFsaWZpZXIiLCAiJ2lub3V0JyBjYW4gYmUgb25seSB1c2VkIHdpdGgg
ZnVuY3Rpb24gcGFyYW1ldGVycyIpOworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJp
bnZhbGlkIHF1YWxpZmllcjogY2FuIGJlIG9ubHkgdXNlZCB3aXRoIGZ1bmN0aW9uIHBhcmFtZXRl
cnMiLCAiaW5vdXQiKTsKICAgICAgICAgfQotICAgICAgICAkJCA9IEV2cUluT3V0OworICAgICAg
ICAkJCA9IG5ldyBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIoRXZxSW5PdXQsIEAxKTsKICAgICB9
CiAgICAgfCBDRU5UUk9JRCB7CiAgICAgICAgIEVTM19PUl9ORVdFUigiY2VudHJvaWQiLCBAMSwg
InN0b3JhZ2UgcXVhbGlmaWVyIik7Ci0gICAgICAgICQkID0gRXZxQ2VudHJvaWQ7CisgICAgICAg
ICQkID0gbmV3IFRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlcihFdnFDZW50cm9pZCwgQDEpOwogICAg
IH0KICAgICB8IFVOSUZPUk0gewogICAgICAgICBjb250ZXh0LT5jaGVja0lzQXRHbG9iYWxMZXZl
bChAMSwgInVuaWZvcm0iKTsKLSAgICAgICAgJCQgPSBFdnFVbmlmb3JtOworICAgICAgICAkJCA9
IG5ldyBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIoRXZxVW5pZm9ybSwgQDEpOworICAgIH0KKyAg
ICB8IFJFQURPTkxZIHsKKyAgICAgICAgJCQgPSBuZXcgVE1lbW9yeVF1YWxpZmllcldyYXBwZXIo
RXZxUmVhZE9ubHksIEAxKTsKKyAgICB9CisgICAgfCBXUklURU9OTFkgeworICAgICAgICAkJCA9
IG5ldyBUTWVtb3J5UXVhbGlmaWVyV3JhcHBlcihFdnFXcml0ZU9ubHksIEAxKTsKKyAgICB9Cisg
ICAgfCBDT0hFUkVOVCB7CisgICAgICAgICQkID0gbmV3IFRNZW1vcnlRdWFsaWZpZXJXcmFwcGVy
KEV2cUNvaGVyZW50LCBAMSk7CisgICAgfQorICAgIHwgUkVTVFJJQ1QgeworICAgICAgICAkJCA9
IG5ldyBUTWVtb3J5UXVhbGlmaWVyV3JhcHBlcihFdnFSZXN0cmljdCwgQDEpOworICAgIH0KKyAg
ICB8IFZPTEFUSUxFIHsKKyAgICAgICAgJCQgPSBuZXcgVE1lbW9yeVF1YWxpZmllcldyYXBwZXIo
RXZxVm9sYXRpbGUsIEAxKTsKKyAgICB9CisgICAgfCBTSEFSRUQgeworICAgICAgICBjb250ZXh0
LT5jaGVja0lzQXRHbG9iYWxMZXZlbChAMSwgInNoYXJlZCIpOworICAgICAgICBDT01QVVRFX09O
TFkoInNoYXJlZCIsIEAxKTsKKyAgICAgICAgJCQgPSBuZXcgVFN0b3JhZ2VRdWFsaWZpZXJXcmFw
cGVyKEV2cVNoYXJlZCwgQDEpOwogICAgIH0KICAgICA7CiAKIHR5cGVfc3BlY2lmaWVyCiAgICAg
OiB0eXBlX3NwZWNpZmllcl9ub19wcmVjIHsKICAgICAgICAgJCQgPSAkMTsKLQotICAgICAgICBp
ZiAoJCQucHJlY2lzaW9uID09IEVicFVuZGVmaW5lZCkgewotICAgICAgICAgICAgJCQucHJlY2lz
aW9uID0gY29udGV4dC0+c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigkMS5nZXRCYXNp
Y1R5cGUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgJCQucHJlY2lzaW9uID0gY29udGV4dC0+c3lt
Ym9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigkMS5nZXRCYXNpY1R5cGUoKSk7CiAgICAgfQog
ICAgIDsKIApAQCAtMTAwMCw2ICsxMDE2LDkgQEAgbGF5b3V0X3F1YWxpZmllcl9pZAogICAgIHwg
SURFTlRJRklFUiBFUVVBTCBVSU5UQ09OU1RBTlQgewogICAgICAgICAkJCA9IGNvbnRleHQtPnBh
cnNlTGF5b3V0UXVhbGlmaWVyKCokMS5zdHJpbmcsIEAxLCAkMy5pLCBAMyk7CiAgICAgfQorICAg
IHwgU0hBUkVEIHsKKyAgICAgICAgJCQgPSBjb250ZXh0LT5wYXJzZUxheW91dFF1YWxpZmllcigi
c2hhcmVkIiwgQDEpOworICAgIH0KICAgICA7CiAKIHR5cGVfc3BlY2lmaWVyX25vX3ByZWMKQEAg
LTExMjEsNiArMTE0MCwxMiBAQCB0eXBlX3NwZWNpZmllcl9ub25hcnJheQogICAgICAgICAkJC5p
bml0aWFsaXplKEVidEZsb2F0LCBAMSk7CiAgICAgICAgICQkLnNldE1hdHJpeCg0LCAzKTsKICAg
ICB9CisgICAgfCBZVVZDU0NTVEFOREFSREVYVCB7CisgICAgICAgIGlmICghY29udGV4dC0+aXNF
eHRlbnNpb25FbmFibGVkKCJHTF9FWFRfWVVWX3RhcmdldCIpKSB7CisgICAgICAgICAgICBjb250
ZXh0LT5lcnJvcihAMSwgInVuc3VwcG9ydGVkIHR5cGUiLCAieXV2Q3NjU3RhbmRhcmRFWFQiKTsK
KyAgICAgICAgfQorICAgICAgICAkJC5pbml0aWFsaXplKEVidFl1dkNzY1N0YW5kYXJkRVhULCBA
MSk7CisgICAgfQogICAgIHwgU0FNUExFUjJEIHsKICAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRT
YW1wbGVyMkQsIEAxKTsKICAgICB9CkBAIC0xMTMzLDYgKzExNTgsOSBAQCB0eXBlX3NwZWNpZmll
cl9ub25hcnJheQogICAgIHwgU0FNUExFUjJEQVJSQVkgewogICAgICAgICAkJC5pbml0aWFsaXpl
KEVidFNhbXBsZXIyREFycmF5LCBAMSk7CiAgICAgfQorICAgIHwgU0FNUExFUjJETVMgeworICAg
ICAgICAkJC5pbml0aWFsaXplKEVidFNhbXBsZXIyRE1TLCBAMSk7CisgICAgfQogICAgIHwgSVNB
TVBMRVIyRCB7CiAgICAgICAgICQkLmluaXRpYWxpemUoRWJ0SVNhbXBsZXIyRCwgQDEpOwogICAg
IH0KQEAgLTExNDUsNiArMTE3Myw5IEBAIHR5cGVfc3BlY2lmaWVyX25vbmFycmF5CiAgICAgfCBJ
U0FNUExFUjJEQVJSQVkgewogICAgICAgICAkJC5pbml0aWFsaXplKEVidElTYW1wbGVyMkRBcnJh
eSwgQDEpOwogICAgIH0KKyAgICB8IElTQU1QTEVSMkRNUyB7CisgICAgICAgICQkLmluaXRpYWxp
emUoRWJ0SVNhbXBsZXIyRE1TLCBAMSk7CisgICAgfQogICAgIHwgVVNBTVBMRVIyRCB7CiAgICAg
ICAgICQkLmluaXRpYWxpemUoRWJ0VVNhbXBsZXIyRCwgQDEpOwogICAgIH0KQEAgLTExNTcsNiAr
MTE4OCw5IEBAIHR5cGVfc3BlY2lmaWVyX25vbmFycmF5CiAgICAgfCBVU0FNUExFUjJEQVJSQVkg
ewogICAgICAgICAkJC5pbml0aWFsaXplKEVidFVTYW1wbGVyMkRBcnJheSwgQDEpOwogICAgIH0K
KyAgICB8IFVTQU1QTEVSMkRNUyB7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0VVNhbXBsZXIy
RE1TLCBAMSk7CisgICAgfQogICAgIHwgU0FNUExFUjJEU0hBRE9XIHsKICAgICAgICAgJCQuaW5p
dGlhbGl6ZShFYnRTYW1wbGVyMkRTaGFkb3csIEAxKTsKICAgICB9CkBAIC0xMTczLDYgKzEyMDcs
MTIgQEAgdHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkKICAgICAgICAgfQogICAgICAgICAkJC5pbml0
aWFsaXplKEVidFNhbXBsZXJFeHRlcm5hbE9FUywgQDEpOwogICAgIH0KKyAgICB8IFNBTVBMRVJF
WFRFUk5BTDJEWTJZRVhUIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJs
ZWQoIkdMX0VYVF9ZVVZfdGFyZ2V0IikpIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAx
LCAidW5zdXBwb3J0ZWQgdHlwZSIsICJfX3NhbXBsZXJFeHRlcm5hbDJEWTJZRVhUIik7CisgICAg
ICAgIH0KKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRTYW1wbGVyRXh0ZXJuYWwyRFkyWUVYVCwg
QDEpOworICAgIH0KICAgICB8IFNBTVBMRVIyRFJFQ1QgewogICAgICAgICBpZiAoIWNvbnRleHQt
PnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfdGV4dHVyZV9yZWN0YW5nbGUiKSkgewogICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJ1bnN1cHBvcnRlZCB0eXBlIiwgInNhbXBsZXIyRFJl
Y3QiKTsKQEAgLTExODIsNiArMTIyMiw0MiBAQCB0eXBlX3NwZWNpZmllcl9ub25hcnJheQogICAg
IHwgc3RydWN0X3NwZWNpZmllciB7CiAgICAgICAgICQkID0gJDE7CiAgICAgfQorICAgIHwgSU1B
R0UyRCB7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0SW1hZ2UyRCwgQDEpOworICAgIH0KKyAg
ICB8IElJTUFHRTJEIHsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRJSW1hZ2UyRCwgQDEpOwor
ICAgIH0KKyAgICB8IFVJTUFHRTJEIHsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRVSW1hZ2Uy
RCwgQDEpOworICAgIH0KKyAgICB8IElNQUdFM0QgeworICAgICAgICAkJC5pbml0aWFsaXplKEVi
dEltYWdlM0QsIEAxKTsKKyAgICB9CisgICAgfCBJSU1BR0UzRCB7CisgICAgICAgICQkLmluaXRp
YWxpemUoRWJ0SUltYWdlM0QsIEAxKTsKKyAgICB9CisgICAgfCBVSU1BR0UzRCB7CisgICAgICAg
ICQkLmluaXRpYWxpemUoRWJ0VUltYWdlM0QsIEAxKTsKKyAgICB9CisgICAgfCBJTUFHRTJEQVJS
QVkgeworICAgICAgICAkJC5pbml0aWFsaXplKEVidEltYWdlMkRBcnJheSwgQDEpOworICAgIH0K
KyAgICB8IElJTUFHRTJEQVJSQVkgeworICAgICAgICAkJC5pbml0aWFsaXplKEVidElJbWFnZTJE
QXJyYXksIEAxKTsKKyAgICB9CisgICAgfCBVSU1BR0UyREFSUkFZIHsKKyAgICAgICAgJCQuaW5p
dGlhbGl6ZShFYnRVSW1hZ2UyREFycmF5LCBAMSk7CisgICAgfQorICAgIHwgSU1BR0VDVUJFIHsK
KyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRJbWFnZUN1YmUsIEAxKTsKKyAgICB9CisgICAgfCBJ
SU1BR0VDVUJFIHsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRJSW1hZ2VDdWJlLCBAMSk7Cisg
ICAgfQorICAgIHwgVUlNQUdFQ1VCRSB7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0VUltYWdl
Q3ViZSwgQDEpOworICAgIH0KICAgICB8IFRZUEVfTkFNRSB7CiAgICAgICAgIC8vCiAgICAgICAg
IC8vIFRoaXMgaXMgZm9yIHVzZXIgZGVmaW5lZCB0eXBlIG5hbWVzLiAgVGhlIGxleGljYWwgcGhh
c2UgbG9va2VkIHVwIHRoZQpAQCAtMTIwNywxNiArMTI4Myw3IEBAIHN0cnVjdF9kZWNsYXJhdGlv
bl9saXN0CiAgICAgICAgICQkID0gJDE7CiAgICAgfQogICAgIHwgc3RydWN0X2RlY2xhcmF0aW9u
X2xpc3Qgc3RydWN0X2RlY2xhcmF0aW9uIHsKLSAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCAkMi0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIFRGaWVs
ZCogZmllbGQgPSAoKiQyKVtpXTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwg
JCQtPnNpemUoKTsgKytqKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCgqJCQpW2pdLT5uYW1lKCkg
PT0gZmllbGQtPm5hbWUoKSkgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihA
MiwgImR1cGxpY2F0ZSBmaWVsZCBuYW1lIGluIHN0cnVjdHVyZToiLCAic3RydWN0IiwgZmllbGQt
Pm5hbWUoKS5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAkJC0+cHVzaF9iYWNrKGZpZWxkKTsKLSAgICAgICAgfQorICAgICAgICAkJCA9IGNv
bnRleHQtPmNvbWJpbmVTdHJ1Y3RGaWVsZExpc3RzKCQxLCAkMiwgQDIpOwogICAgIH0KICAgICA7
CiAKQEAgLTEzNzQsMTAgKzE0NDEsMTAgQEAgY29uZGl0aW9uCiAgICAgICAgIGNvbnRleHQtPmNo
ZWNrSXNTY2FsYXJCb29sKCQxLT5nZXRMaW5lKCksICQxKTsKICAgICB9CiAgICAgfCBmdWxseV9z
cGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIEVRVUFMIGluaXRpYWxpemVyIHsKLSAgICAgICAgVElu
dGVybU5vZGUgKmludGVybU5vZGU7CisgICAgICAgIFRJbnRlcm1CaW5hcnkgKmluaXROb2RlID0g
bnVsbHB0cjsKICAgICAgICAgY29udGV4dC0+Y2hlY2tJc1NjYWxhckJvb2woQDIsICQxKTsKIAot
ICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcihAMiwgKiQyLnN0cmluZywg
JDEsICQ0LCAmaW50ZXJtTm9kZSkpCisgICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0ZUluaXRp
YWxpemVyKEAyLCAqJDIuc3RyaW5nLCAkMSwgJDQsICZpbml0Tm9kZSkpCiAgICAgICAgICAgICAk
JCA9ICQ0OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICQkID0gMDsKQEAgLTE0NzcsMTAg
KzE1NDQsMTAgQEAgZXh0ZXJuYWxfZGVjbGFyYXRpb24KIAogZnVuY3Rpb25fZGVmaW5pdGlvbgog
ICAgIDogZnVuY3Rpb25fcHJvdG90eXBlIHsKLSAgICAgICAgY29udGV4dC0+cGFyc2VGdW5jdGlv
bkRlZmluaXRpb25IZWFkZXIoQDEsICYoJDEuZnVuY3Rpb24pLCAmJDEuaW50ZXJtQWdncmVnYXRl
KTsKKyAgICAgICAgY29udGV4dC0+cGFyc2VGdW5jdGlvbkRlZmluaXRpb25IZWFkZXIoQDEsICYo
JDEuZnVuY3Rpb24pLCAmKCQxLmludGVybUZ1bmN0aW9uUHJvdG90eXBlKSk7CiAgICAgfQogICAg
IGNvbXBvdW5kX3N0YXRlbWVudF9ub19uZXdfc2NvcGUgewotICAgICAgICAkJCA9IGNvbnRleHQt
PmFkZEZ1bmN0aW9uRGVmaW5pdGlvbigqKCQxLmZ1bmN0aW9uKSwgJDEuaW50ZXJtQWdncmVnYXRl
LCAkMywgQDEpOworICAgICAgICAkJCA9IGNvbnRleHQtPmFkZEZ1bmN0aW9uRGVmaW5pdGlvbigk
MS5pbnRlcm1GdW5jdGlvblByb3RvdHlwZSwgJDMsIEAxKTsKICAgICB9CiAgICAgOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9n
bHNsYW5nX2xleC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9nbHNsYW5nX2xleC5jcHAKaW5kZXggOGFkN2IxNDY0ZDQ2NDU1MzM1ZTlhYjJhZjgz
M2QzODMwOGYxZTQyZi4uNmQwMDcxMWQxOTI5OTY0YTU0ZGM1Y2U2ZWE3MWIyNGY2NzFmNDRiMiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvZ2xzbGFuZ19sZXguY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL2dsc2xhbmdfbGV4LmNwcApAQCAtNyw2ICs3LDggQEAKIAogLy8gVGhp
cyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlX3BhcnNlci5zaC4gRE8gTk9UIEVE
SVQhCiAKKy8qIGNsYW5nLWZvcm1hdCBvZmYgKi8KKwogLy8gSWdub3JlIGVycm9ycyBpbiBhdXRv
LWdlbmVyYXRlZCBjb2RlLgogI2lmIGRlZmluZWQoX19HTlVDX18pCiAjcHJhZ21hIEdDQyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLWZ1bmN0aW9uIgpAQCAtMjQsNyArMjYsNyBAQAogCiAK
IAotI2xpbmUgMjggIi4vZ2xzbGFuZ19sZXguY3BwIgorI2xpbmUgMzAgIi4vZ2xzbGFuZ19sZXgu
Y3BwIgogCiAjZGVmaW5lICBZWV9JTlRfQUxJR05FRCBzaG9ydCBpbnQKIApAQCAtMjIwLDcgKzIy
Miw3IEBAIHR5cGVkZWYgc2l6ZV90IHl5X3NpemVfdDsKICAgICAjZGVmaW5lICBZWV9MRVNTX0xJ
TkVOTyhuKSBcCiAgICAgICAgICAgICBkbyB7IFwKICAgICAgICAgICAgICAgICB5eV9zaXplX3Qg
eXlsO1wKLSAgICAgICAgICAgICAgICBmb3IgKCB5eWwgPSBuOyB5eWwgPCB5eWxlbmc7ICsreXls
IClcCisgICAgICAgICAgICAgICAgZm9yICggeXlsID0gbjsgeXlsIDwgc3RhdGljX2Nhc3Q8eXlf
c2l0ZV90Pih5eWxlbmcpOyArK3l5bCApXAogICAgICAgICAgICAgICAgICAgICBpZiAoIHl5dGV4
dFt5eWxdID09ICdcbicgKVwKICAgICAgICAgICAgICAgICAgICAgICAgIC0teXlsaW5lbm87XAog
ICAgICAgICAgICAgfXdoaWxlKDApCkBAIC0zOTUsMTMgKzM5NywxMyBAQCBzdGF0aWMgdm9pZCB5
eV9mYXRhbF9lcnJvciAoeXljb25zdCBjaGFyIG1zZ1tdICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsK
ICAqLwogI2RlZmluZSBZWV9ET19CRUZPUkVfQUNUSU9OIFwKIAl5eWctPnl5dGV4dF9wdHIgPSB5
eV9icDsgXAotCXl5bGVuZyA9ICh5eV9zaXplX3QpICh5eV9jcCAtIHl5X2JwKTsgXAorCXl5bGVu
ZyA9IChzaXplX3QpICh5eV9jcCAtIHl5X2JwKTsgXAogCXl5Zy0+eXlfaG9sZF9jaGFyID0gKnl5
X2NwOyBcCiAJKnl5X2NwID0gJ1wwJzsgXAogCXl5Zy0+eXlfY19idWZfcCA9IHl5X2NwOwogCi0j
ZGVmaW5lIFlZX05VTV9SVUxFUyAyNDAKLSNkZWZpbmUgWVlfRU5EX09GX0JVRkZFUiAyNDEKKyNk
ZWZpbmUgWVlfTlVNX1JVTEVTIDI0NgorI2RlZmluZSBZWV9FTkRfT0ZfQlVGRkVSIDI0NwogLyog
VGhpcyBzdHJ1Y3QgaXMgbm90IHVzZWQgaW4gdGhpcyBzY2FubmVyLAogICAgYnV0IGl0cyBwcmVz
ZW5jZSBpcyBuZWNlc3NhcnkuICovCiBzdHJ1Y3QgeXlfdHJhbnNfaW5mbwpAQCAtNDA5LDk4ICs0
MTEsMTA1IEBAIHN0cnVjdCB5eV90cmFuc19pbmZvCiAJZmxleF9pbnQzMl90IHl5X3ZlcmlmeTsK
IAlmbGV4X2ludDMyX3QgeXlfbnh0OwogCX07Ci1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3Qg
eXlfYWNjZXB0WzgyMF0gPQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2FjY2VwdFs4
ODZdID0KICAgICB7ICAgMCwKLSAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDI0MSwgIDIz
OSwgIDIzOCwgIDIzOCwgIDIyMiwgIDIyOCwKLSAgICAgIDIzMywgIDIxNywgIDIxOCwgIDIyNiwg
IDIyNSwgIDIxNCwgIDIyMywgIDIyMSwgIDIyNywgIDE4MCwKLSAgICAgIDE4MCwgIDIxNSwgIDIx
MSwgIDIyOSwgIDIxNiwgIDIzMCwgIDIzNCwgIDE3NywgIDIxOSwgIDIyMCwKLSAgICAgIDIzMiwg
IDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKLSAg
ICAgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3Nywg
IDE3NywKLSAgICAgIDE3NywgIDIxMiwgIDIzMSwgIDIxMywgIDIyNCwgIDIzNywgIDIzNiwgIDI0
MCwgIDIzNSwgIDIwOCwKLSAgICAgIDE5NCwgIDIxMywgIDIwMiwgIDE5NywgIDE5MiwgIDIwMCwg
IDE5MCwgIDIwMSwgIDE5MSwgIDE4NiwKLSAgICAgIDE5MywgIDE4NSwgIDE3OSwgIDE4MCwgICAg
MCwgIDE4MywgICAgMCwgIDIyMCwgIDIxMiwgIDIxOSwKLSAgICAgIDIwOSwgIDIwNSwgIDIwNywg
IDIwNiwgIDIxMCwgIDE3NywgIDE5OCwgIDIwNCwgIDE3NywgIDE3NywKLSAgICAgIDE3NywgIDE3
NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKLQotICAg
ICAgIDEyLCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgIDE1LCAgMTc3LCAgMTc3LCAgIDIz
LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTc3LCAgMTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3
LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAg
MTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTk5
LCAgMjAzLCAgMjM1LCAgICAwLCAgMTg5LCAgMTg1LCAgICAwLCAgMTg4LCAgMTgyLAotICAgICAg
ICAwLCAgMTg0LCAgMTc4LCAgMTk1LCAgMTk2LCAgMTc3LCAgMTM2LCAgMTc3LCAgMTc3LCAgMTc3
LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3
LCAgMTc3LCAgMTc3LCAgMTc3LAotICAgICAgIDEzLCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAotCi0gICAgICAxNzcsICAgMjcsICAxNzcsICAx
NzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAxNzcs
ICAxNzcsICAgMjQsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCi0gICAgICAx
NzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcs
Ci0gICAgICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAx
NzcsICAxNzcsCi0gICAgICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcs
ICAxNzcsICAgIDAsICAxODYsCi0gICAgICAgIDAsICAxODUsICAxODcsICAxODEsICAxNzcsICAx
NzcsICAxNzcsICAgMzAsICAxNzcsICAxNzcsCi0gICAgICAgMTgsICAxNzQsICAxNzcsICAxNzcs
ICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAxNzcsICAg
MTYsICAxMzksICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAgMjEsICAxNzcsCi0gICAgICAxNzcs
ICAxNDMsICAxNTUsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCi0g
ICAgICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNTIsICAgIDQsICAgMzUsICAgMzYs
ICAgMzcsCi0KLSAgICAgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3Nywg
IDE3NywgIDE3NywgIDE3NywKLSAgICAgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3
NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKLSAgICAgIDE3NywgIDE3NywgIDE3NywgIDE3Nywg
IDE0MiwgICAzMSwgIDE3NywgIDE3NywgICAyOCwgIDE3NywKLSAgICAgIDE3NywgIDE3NywgIDE3
NywgIDE3NywgIDE3NywgIDE3NywgICA0NywgICA0OCwgICA0OSwgICAyOSwKLSAgICAgIDE3Nywg
IDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgICAxMCwgICA1MywgICA1NCwgICA1NSwKLSAg
ICAgIDE3NywgIDEzNywgIDE3NywgIDE3NywgICAgNywgIDE3NywgIDE3NywgIDE3NywgIDE3Nywg
IDE2NCwKLSAgICAgIDE2NSwgIDE2NiwgIDE3NywgICAzMiwgIDE3NywgIDE1NiwgICAyNiwgIDE2
NywgIDE2OCwgIDE2OSwKLSAgICAgICAgMiwgIDE2MSwgIDE2MiwgIDE2MywgIDE3NywgIDE3Nywg
IDE3NywgICAyNSwgIDE1OSwgIDE3NywKLSAgICAgIDE3NywgIDE3NywgICA1MCwgICA1MSwgICA1
MiwgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKLSAgICAgIDE3NywgIDE3NywgIDE3Nywg
IDE3NywgIDE3NywgIDE3NywgICA4NiwgIDE3NywgIDE3NywgIDE3NywKLQotICAgICAgMTc3LCAg
MTc3LCAgMTc3LCAgMTc3LCAgMTUzLCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAotICAg
ICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTM4LCAgMTc3LCAgMTc3LCAg
MTc2LAotICAgICAgIDU2LCAgIDU3LCAgIDU4LCAgMTc3LCAgMTc3LCAgIDE0LCAgMTc3LCAgIDkx
LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgIDg5LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTU0LCAgMTQ5LCAgIDkyLCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3
LCAgMTQ0LCAgMTc3LCAgMTc3LCAgMTc3LCAgIDc4LAotICAgICAgIDM4LCAgIDQxLCAgIDQzLCAg
IDQyLCAgIDM5LCAgIDQ1LCAgIDQ0LCAgIDQ2LCAgIDQwLCAgMTc3LAotICAgICAgMTc3LCAgMTc3
LCAgMTc3LCAgMTYwLCAgMTM1LCAgMTc3LCAgMTc3LCAgMTQ3LCAgMTc3LCAgMTc3LAotICAgICAg
MTc3LCAgIDM0LCAgIDg3LCAgMTczLCAgIDIyLCAgMTQ4LCAgIDc3LCAgMTc3LCAgMTU4LCAgIDE3
LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgIDE5LCAgIDMzLCAgMTc3
LCAgMTc3LCAgMTc3LCAgMTc3LAotCi0gICAgICAxNzcsICAxNzcsICAgOTMsICAgOTQsICAgOTUs
ICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCi0gICAgICAgIDMsICAxNzcsICAxNzcsICAx
NzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAxNzcs
ICAxNDAsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAgIDgsICAxNzcsCi0gICAgICAx
NzcsICAgIDksICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAgMjAsICAgNzksICAgMTEsICAxNTAs
Ci0gICAgICAgOTcsICAgOTgsICAgOTksICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAx
NzcsICAxNzcsCi0gICAgICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNDUsICAxNzcs
ICAxNzcsICAxNzcsICAgODEsCi0gICAgICAgODMsICAgODAsICAxNzcsICAxNzcsICAxNzcsICAx
NzcsICAxNzcsICAxNzcsICAxNzcsICAxNDEsCi0gICAgICAxMDEsICAxMDIsICAxMDMsICAxNzcs
ICAxNzcsICAxNTcsICAxNzcsICAxNDYsICAxNzcsICAxNzcsCi0gICAgICAgIDYsICAxNzcsICAx
NzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCi0gICAgICAgOTYs
ICAxNTEsICAgIDEsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzUsICAxNzcsCi0K
LSAgICAgICA5MCwgICAgNSwgIDE3MCwgICA1OSwgICA2MiwgIDE3NywgIDE3NywgIDE3NywgIDE3
NywgIDE3NywKLSAgICAgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3Nywg
IDE3NywgICA4MiwgIDE3NywKLSAgICAgIDE3NywgIDE3NywgIDE3NywgIDEwMCwgIDE3NywgIDE3
NywgIDE3NywgIDE3NywgIDE3NywgIDEyMCwKLSAgICAgICA2NiwgICA2NywgIDE3NywgIDE3Nywg
IDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKLSAgICAgIDE3NywgIDE3NywgIDE3
NywgIDE3NywgIDE3NywgICA4OCwgIDE3NywgIDE3NywgIDE3NywgIDEwNCwKLSAgICAgIDEyMiwg
ICA3MCwgICA3MSwgIDE3NywgIDE3NywgICA4NCwgIDE3NywgIDE3NywgIDE3NywgIDE3NywKLSAg
ICAgIDE3NywgIDE3NywgIDE3NywgIDExNSwgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3Nywg
IDE3NywKLSAgICAgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDEyOSwgIDE3NywgIDE3NywgIDE3
NywgIDE3NywgICA2MCwKLSAgICAgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3Nywg
IDE3NywgIDE3NywgIDE3NywgIDE3NywKLSAgICAgIDE3NywgIDE3NywgIDExNiwgIDEwNSwgIDE3
NywgIDEwNiwgIDE3NywgIDE3NywgIDE3NywgIDEzMCwKLQotICAgICAgMTc3LCAgMTc3LCAgIDY4
LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAg
MTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTE3LCAgMTc3LCAgMTc3LCAgMTMxLAotICAg
ICAgMTc3LCAgMTc3LCAgIDcyLCAgMTA3LCAgMTA4LCAgMTc3LCAgMTExLCAgMTc3LCAgMTEyLCAg
MTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgIDg1LCAgMTc3LCAgMTc3LCAgMTc3
LCAgMTc3LCAgIDY0LAotICAgICAgMTc3LCAgIDYzLCAgMTI2LCAgMTc3LCAgMTc3LCAgMTA5LCAg
MTEwLCAgMTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3
LCAgMTc3LCAgMTc3LCAgMTI0LCAgMTI3LCAgMTE4LAotICAgICAgMTc3LCAgIDY1LCAgMTc3LCAg
MTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTI1LCAgMTI4
LCAgMTc3LCAgMTc3LCAgMTIxLCAgIDY5LCAgMTc3LCAgMTc3LCAgMTcxLCAgMTc3LAotICAgICAg
MTc3LCAgMTc3LCAgIDc0LCAgMTc3LCAgMTc3LCAgMTIzLCAgIDczLCAgMTc3LCAgMTc3LCAgMTc3
LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTMyLCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTc3LCAgMTc3LAotCi0gICAgICAxMzMsICAxNzcsICAxNzcsICAxNzcsICAgNzUsICAxNzcsICAx
MzQsICAxMTMsICAxMTQsICAxNzcsCi0gICAgICAxNzcsICAxNzcsICAgNjEsICAxNzcsICAxNzcs
ICAxNzIsICAxMTksICAgNzYsICAgIDAKKyAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDI0
NywgIDI0NSwgIDI0NCwgIDI0NCwgIDIyOCwgIDIzNCwKKyAgICAgIDIzOSwgIDIyMywgIDIyNCwg
IDIzMiwgIDIzMSwgIDIyMCwgIDIyOSwgIDIyNywgIDIzMywgIDE4NiwKKyAgICAgIDE4NiwgIDIy
MSwgIDIxNywgIDIzNSwgIDIyMiwgIDIzNiwgIDI0MCwgIDE4MywgIDIyNSwgIDIyNiwKKyAgICAg
IDIzOCwgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4
MywKKyAgICAgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4Mywg
IDE4MywgIDE4MywKKyAgICAgIDE4MywgIDE4MywgIDE4MywgIDIxOCwgIDIzNywgIDIxOSwgIDIz
MCwgIDI0MywgIDI0MiwgIDI0NiwKKyAgICAgIDI0MSwgIDIxNCwgIDIwMCwgIDIxOSwgIDIwOCwg
IDIwMywgIDE5OCwgIDIwNiwgIDE5NiwgIDIwNywKKyAgICAgIDE5NywgIDE5MiwgIDE5OSwgIDE5
MSwgIDE4NSwgIDE4NiwgICAgMCwgIDE4OSwgICAgMCwgIDIyNiwKKyAgICAgIDIxOCwgIDIyNSwg
IDIxNSwgIDIxMSwgIDIxMywgIDIxMiwgIDIxNiwgIDE4MywgIDIwNCwgIDIxMCwKKyAgICAgIDE4
MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywK
KworICAgICAgMTgzLCAgMTgzLCAgMTgzLCAgIDEyLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAg
MTgzLCAgMTgzLAorICAgICAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgz
LCAgIDE1LCAgMTgzLCAgMTgzLAorICAgICAgIDIzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAg
MTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLAorICAgICAgMTgzLCAgMTgzLCAgMTgzLCAgMTgz
LCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLAorICAgICAgMTgzLCAgMTgzLCAg
MTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLAorICAgICAgMTgz
LCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMjA1LCAgMjA5LCAgMjQxLCAgICAwLAor
ICAgICAgMTk1LCAgMTkxLCAgICAwLCAgMTk0LCAgMTg4LCAgICAwLCAgMTkwLCAgMTg0LCAgMjAx
LCAgMjAyLAorICAgICAgMTgzLCAgMTgzLCAgMTQzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAg
MTgzLCAgMTgzLCAgMTgzLAorICAgICAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgz
LCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLAorICAgICAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAg
MTgzLCAgMTgzLCAgIDEzLCAgMTgzLCAgMTgzLCAgMTgzLAorCisgICAgICAxODMsICAxODMsICAx
ODMsICAxODMsICAxODMsICAxODMsICAxODMsICAgMjgsICAxODMsICAxODMsCisgICAgICAxODMs
ICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsCisg
ICAgICAgMjQsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMs
ICAxODMsCisgICAgICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAx
ODMsICAxODMsICAxODMsCisgICAgICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMs
ICAxODMsICAxODMsICAxODMsICAxODMsCisgICAgICAxODMsICAxODMsICAxODMsICAxODMsICAx
ODMsICAxODMsICAxODMsICAgIDAsICAxOTIsICAgIDAsCisgICAgICAxOTEsICAxOTMsICAxODcs
ICAxODMsICAxODMsICAxODMsICAxODMsICAgMzEsICAxODMsICAxODMsCisgICAgICAgMTgsICAx
ODAsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsCisgICAg
ICAxODMsICAxODMsICAgMTYsICAxNDYsICAxODMsICAxODMsICAxODMsICAxODMsICAgMjEsICAx
ODMsCisgICAgICAxODMsICAxNTAsICAxNjEsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMs
ICAxODMsICAxODMsCisKKyAgICAgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4Mywg
IDE1OCwgICAgNCwgICAzNiwgICAzNywKKyAgICAgICAzOCwgIDE4MywgIDE4MywgIDE4MywgIDE4
MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywKKyAgICAgIDE4MywgIDE4MywgIDE4Mywg
IDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywKKyAgICAgIDE4MywgIDE4
MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE0OSwgICAzMiwgIDE4MywgIDE4MywKKyAgICAg
ICAyOSwgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgICA0OCwgICA0
OSwKKyAgICAgICA1MCwgICAzMCwgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4Mywg
IDE4MywgIDE4MywKKyAgICAgICAxMCwgICA1NCwgICA1NSwgICA1NiwgIDE4MywgIDE0NCwgIDE4
MywgIDE4MywgICAgNywgIDE4MywKKyAgICAgIDE4MywgIDE4MywgIDE4MywgIDE3MCwgIDE3MSwg
IDE3MiwgIDE4MywgICAzMywgIDE4MywgIDE2MiwKKyAgICAgICAyNywgIDE3MywgIDE3NCwgIDE3
NSwgICAgMiwgIDE2NywgIDE2OCwgIDE2OSwgIDE4MywgIDE4MywKKyAgICAgIDE4MywgICAyNSwg
IDE2NSwgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgICA1MSwgICA1MiwKKworICAgICAg
IDUzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgz
LAorICAgICAgMTgzLCAgMTgzLCAgMTA4LCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAg
MTgzLCAgMTgzLAorICAgICAgMTgzLCAgMTU5LCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgz
LCAgMTgzLCAgMTgzLCAgMTgzLAorICAgICAgMTgzLCAgMTgzLCAgMTgzLCAgMTQ1LCAgMTgzLCAg
MTgzLCAgMTgyLCAgIDU3LCAgIDU4LCAgIDU5LAorICAgICAgMTgzLCAgMTgzLCAgIDE0LCAgMTgz
LCAgMTgzLCAgMTgzLCAgMTEzLCAgMTgzLCAgMTgzLCAgMTgzLAorICAgICAgMTgzLCAgMTExLCAg
MTgzLCAgMTgzLCAgMTgzLCAgMTYwLCAgMTU1LCAgMTE0LCAgMTgzLCAgMTgzLAorICAgICAgMTgz
LCAgMTgzLCAgMTgzLCAgMTgzLCAgMTUxLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLAor
ICAgICAgIDgzLCAgIDM5LCAgIDQyLCAgIDQ0LCAgIDQzLCAgIDQwLCAgIDQ2LCAgIDQ1LCAgIDQ3
LCAgIDQxLAorICAgICAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTY2LCAgMTQyLCAgMTgzLCAg
MTgzLCAgMTUzLCAgMTgzLAorICAgICAgMTgzLCAgMTgzLCAgIDM1LCAgMTA5LCAgIDI2LCAgMTc5
LCAgIDIyLCAgMTU0LCAgIDgyLCAgMTgzLAorCisgICAgICAxNjQsICAgMTcsICAxODMsICAxODMs
ICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsCisgICAgICAxODMsICAxODMsICAx
ODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAgMTksICAgMzQsCisgICAgICAxODMs
ICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxMTUsICAgODgsICAgOTQsICAxODMsCisg
ICAgICAxODMsICAxODMsICAxODMsICAxODMsICAgODUsICAgODcsICAgIDMsICAxODMsICAxODMs
ICAxODMsCisgICAgICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAx
ODMsICAxNDcsICAxODMsCisgICAgICAxODMsICAxODMsICAxODMsICAxODMsICAgIDgsICAxODMs
ICAxODMsICAgIDksICAxODMsICAxODMsCisgICAgICAxODMsICAxODMsICAxODMsICAxODMsICAg
MjAsICAxMDIsICAgMTEsICAxNTYsICAxMTYsICAgODksCisgICAgICAgOTYsICAxODMsICAxODMs
ICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsCisgICAgICAxODMsICAx
ODMsICAxODMsICAxODMsICAxNTIsICAxODMsICAxODMsICAxODMsICAxMDAsICAxMDUsCisgICAg
ICAxMDMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxNDgsICAx
MTcsCisKKyAgICAgICA5MCwgICA5NSwgIDE4MywgIDE4MywgIDE2MywgIDE4MywgIDEwNCwgIDE4
MywgIDE4MywgIDE4MywKKyAgICAgIDE4MywgICAgNiwgIDE4MywgIDE4MywgIDE4MywgIDE4Mywg
IDE4MywgIDE4MywgIDE4MywgIDE4MywKKyAgICAgIDE4MywgICA5OSwgIDE1NywgICAgMSwgIDE4
MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywKKyAgICAgIDE4MSwgIDE4MywgIDExMiwg
ICAgNSwgIDE3NiwgICA2MCwgICA2MywgIDE4MywgIDE4MywgIDE4MywKKyAgICAgIDE4MywgIDE4
MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywKKyAgICAg
IDEwMSwgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgICA5NywgIDE4MywgIDE4
MywKKyAgICAgIDE4MywgIDE4MywgIDE4MywgIDEzMCwgICA2OCwgICA2OSwgIDE4MywgIDE4Mywg
IDE4MywgIDE4MywKKyAgICAgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4
MywgIDE4MywgIDE4MywgIDE4MywKKyAgICAgIDExMCwgIDE4MywgIDE4MywgIDE4MywgICA5OCwg
IDEzMiwgICA3MywgICA3NCwgIDE4MywgIDE4MywKKyAgICAgIDE4MywgIDE4MywgIDEwNiwgIDE4
MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywKKworICAgICAgMTI1LCAgMTgz
LCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLAorICAgICAg
MTgzLCAgMTgzLCAgIDY3LCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgIDYxLCAgMTgzLCAgMTgz
LAorICAgICAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAg
MTgzLCAgMTgzLAorICAgICAgMTgzLCAgMTgzLCAgMTI2LCAgMTE4LCAgMTgzLCAgIDkxLCAgMTgz
LCAgMTgzLCAgMTgzLCAgIDcyLAorICAgICAgMTgzLCAgMTgzLCAgIDcwLCAgMTgzLCAgMTgzLCAg
MTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLAorICAgICAgMTgzLCAgMTgzLCAgMTgzLCAgMTgz
LCAgMTgzLCAgMTgzLCAgMTgzLCAgMTI3LCAgMTgzLCAgMTgzLAorICAgICAgIDc3LCAgMTgzLCAg
MTgzLCAgIDc1LCAgMTgzLCAgMTgzLCAgMTE5LCAgIDkyLCAgMTgzLCAgMTIxLAorICAgICAgMTgz
LCAgMTIyLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTA3LCAgMTgzLAor
ICAgICAgMTgzLCAgMTgzLCAgMTgzLCAgIDY1LCAgMTgzLCAgIDY0LCAgMTM2LCAgMTgzLCAgMTgz
LCAgMTIwLAorICAgICAgIDkzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAg
MTgzLCAgMTgzLCAgMTgzLAorCisgICAgICAxODMsICAxODMsICAxODMsICAxMzQsICAxMzcsICAx
ODMsICAxMjgsICAxODMsICAgNjYsICAxODMsCisgICAgICAxODMsICAxODMsICAxODMsICAxODMs
ICAxODMsICAxODMsICAxODMsICAxMzUsICAxMzgsICAxODMsCisgICAgICAxODMsICAxODMsICAx
ODMsICAxMzEsICAgNzEsICAxODMsICAxODMsICAxODMsICAxNzcsICAxODMsCisgICAgICAxODMs
ICAxODMsICAgNzgsICAxODMsICAxODMsICAxMzMsICAgNzYsICAxODMsICAxODMsICAxODMsCisg
ICAgICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxMzksICAxODMsICAxODMs
ICAxODMsCisgICAgICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxNDAsICAxODMsICAx
ODMsICAxODMsICAxODMsCisgICAgICAgNzksICAxODMsICAxNDEsICAgODQsICAxODMsICAxMjMs
ICAxMjQsICAgODYsICAxODMsICAxODMsCisgICAgICAxODMsICAgNjIsICAxODMsICAxODMsICAx
ODMsICAxNzgsICAxODMsICAxMjksICAgODAsICAxODMsCisgICAgICAxODMsICAxODMsICAxODMs
ICAgODEsICAgIDAKICAgICB9IDsKIAogc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2Vj
WzI1Nl0gPQpAQCAtNTEwLDE1ICs1MTksMTUgQEAgc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90
IHl5X2VjWzI1Nl0gPQogICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLCAgICAxLCAgICAxLAogICAgICAgICAxLCAgICAyLCAgICA0LCAgICAxLCAgICAx
LCAgICAxLCAgICA1LCAgICA2LCAgICAxLCAgICA3LAogICAgICAgICA4LCAgICA5LCAgIDEwLCAg
IDExLCAgIDEyLCAgIDEzLCAgIDE0LCAgIDE1LCAgIDE2LCAgIDE3LAotICAgICAgIDE4LCAgIDE5
LCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIxLCAgIDIxLCAgIDIyLCAgIDIzLCAgIDI0LAotICAgICAg
IDI1LCAgIDI2LCAgIDI3LCAgICAxLCAgIDI4LCAgIDI5LCAgIDMwLCAgIDMxLCAgIDMyLCAgIDMz
LAotICAgICAgIDM0LCAgIDM0LCAgIDM0LCAgIDM0LCAgIDM0LCAgIDM0LCAgIDM1LCAgIDM0LCAg
IDM2LCAgIDM0LAotICAgICAgIDM0LCAgIDM3LCAgIDM4LCAgIDM0LCAgIDM5LCAgIDM0LCAgIDM0
LCAgIDQwLCAgIDM0LCAgIDM0LAotICAgICAgIDQxLCAgICAxLCAgIDQyLCAgIDQzLCAgIDQ0LCAg
ICAxLCAgIDQ1LCAgIDQ2LCAgIDQ3LCAgIDQ4LAotCi0gICAgICAgNDksICAgNTAsICAgNTEsICAg
NTIsICAgNTMsICAgMzQsICAgNTQsICAgNTUsICAgNTYsICAgNTcsCi0gICAgICAgNTgsICAgNTks
ICAgMzQsICAgNjAsICAgNjEsICAgNjIsICAgNjMsICAgNjQsICAgNjUsICAgNjYsCi0gICAgICAg
NjcsICAgNjgsICAgNjksICAgNzAsICAgNzEsICAgNzIsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
CisgICAgICAgMTgsICAgMTksICAgMjAsICAgMjEsICAgMjIsICAgMjMsICAgMjQsICAgMjUsICAg
MjYsICAgMjcsCisgICAgICAgMjgsICAgMjksICAgMzAsICAgIDEsICAgMzEsICAgMzIsICAgMzMs
ICAgMzQsICAgMzUsICAgMzYsCisgICAgICAgMzcsICAgMzcsICAgMzcsICAgMzcsICAgMzcsICAg
MzcsICAgMzgsICAgMzcsICAgMzksICAgMzcsCisgICAgICAgMzcsICAgNDAsICAgNDEsICAgNDIs
ICAgNDMsICAgMzcsICAgMzcsICAgNDQsICAgNDUsICAgMzcsCisgICAgICAgNDYsICAgIDEsICAg
NDcsICAgNDgsICAgNDksICAgIDEsICAgNTAsICAgNTEsICAgNTIsICAgNTMsCisKKyAgICAgICA1
NCwgICA1NSwgICA1NiwgICA1NywgICA1OCwgICAzNywgICA1OSwgICA2MCwgICA2MSwgICA2MiwK
KyAgICAgICA2MywgICA2NCwgICAzNywgICA2NSwgICA2NiwgICA2NywgICA2OCwgICA2OSwgICA3
MCwgICA3MSwKKyAgICAgICA3MiwgICA3MywgICA3NCwgICA3NSwgICA3NiwgICA3NywgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKQEAgLTUzNSwzMzIg
KzU0NCwzNTcgQEAgc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQogICAg
ICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxCiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0
IGZsZXhfaW50MzJfdCB5eV9tZXRhWzczXSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3Qg
eXlfbWV0YVs3OF0gPQogICAgIHsgICAwLAotICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLAotICAgICAgICAxLCAgICAxLCAgICAx
LCAgICAxLCAgICAyLCAgICAyLCAgICAyLCAgICAyLCAgICAyLCAgICAyLAotICAgICAgICAyLCAg
ICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAzLCAgICAzLCAgICAzLAotICAg
ICAgICAzLCAgICAyLCAgICAyLCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAg
ICA0LAotICAgICAgICAxLCAgICAxLCAgICAxLCAgICA0LCAgICAzLCAgICAzLCAgICAzLCAgICAz
LCAgICAyLCAgICAyLAotICAgICAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAg
ICA0LCAgICA0LCAgICA0LCAgICA0LAotICAgICAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0
LCAgICA0LCAgICA0LCAgICA0LCAgICAxLCAgICAxLAotICAgICAgICAxLCAgICAxCisgICAgICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDIs
CisgICAgICAgIDEsICAgIDIsICAgIDMsICAgIDEsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAg
IDQsICAgIDQsCisgICAgICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsCisgICAgICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDYsICAg
IDcsICAgIDgsICAgIDgsICAgIDgsICAgIDgsCisgICAgICAgIDgsICAgIDgsICAgIDksICAgIDgs
ICAgIDgsICAgIDEsICAgIDEsICAgIDEsICAgIDgsICAgIDUsCisgICAgICAgIDUsICAgIDUsICAg
IDUsICAgIDYsICAgIDcsICAgIDgsICAgIDgsICAgIDgsICAgIDgsICAgIDgsCisgICAgICAgIDgs
ICAgIDgsICAgIDgsICAgIDgsICAgIDgsICAgIDgsICAgIDgsICAgIDksICAgIDgsICAgIDgsCisg
ICAgICAgIDgsICAgIDgsICAgIDgsICAgIDEsICAgIDEsICAgIDEsICAgIDEKICAgICB9IDsKIAot
c3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Jhc2VbODI1XSA9CitzdGF0aWMgeXljb25z
dCBmbGV4X2ludDE2X3QgeXlfYmFzZVs4OTVdID0KICAgICB7ICAgMCwKLSAgICAgICAgMCwgICAg
MCwgICA3MiwgICAgMCwgMTAxNiwgMTAxNywgMTAxNywgMTAxNywgIDk5MCwgIDEyMCwKLSAgICAg
IDE0MSwgMTAxNywgMTAxNywgIDk4OSwgIDEzOCwgMTAxNywgIDEzNywgIDEzNSwgIDk4OCwgIDE1
NCwKLSAgICAgIDIwOCwgIDk4NiwgMTAxNywgIDE1NCwgIDk4NiwgIDEzMiwgMTAxNywgICAgMCwg
MTAxNywgMTAxNywKLSAgICAgIDEzOSwgIDEzMCwgIDEyMywgIDE0MCwgIDE0NywgIDEzMywgIDE3
NywgIDk1MiwgIDE4NiwgIDE1MSwKLSAgICAgIDEzOSwgIDExNiwgIDE2MSwgIDk0NiwgIDE3Mywg
IDk1OSwgIDE5MywgIDE5OSwgIDIwOCwgIDIxNSwKLSAgICAgIDEwOCwgMTAxNywgIDE4NCwgMTAx
NywgMTAxNywgMTAxNywgMTAxNywgMTAxNywgICAgMCwgMTAxNywKLSAgICAgMTAxNywgMTAxNywg
MTAxNywgMTAxNywgMTAxNywgMTAxNywgMTAxNywgMTAxNywgMTAxNywgIDIzMCwKLSAgICAgMTAx
NywgIDIzNSwgIDIzNSwgICAgMCwgIDI3MSwgMTAxNywgICAgMCwgMTAxNywgMTAxNywgMTAxNywK
LSAgICAgIDk4MiwgMTAxNywgMTAxNywgMTAxNywgIDk4MSwgICAgMCwgMTAxNywgMTAxNywgIDk0
MywgIDk0OCwKLSAgICAgIDE1MiwgIDk0NSwgIDk1MywgIDk1MiwgIDkzOSwgIDk0MiwgIDk1Mywg
IDI0MywgIDk0NywgIDkzNSwKLQotICAgICAgOTMyLCAgOTQ1LCAgOTMyLCAgOTI5LCAgOTI5LCAg
OTM1LCAgMTQ3LCAgMjQ4LCAgOTI5LCAgOTM5LAotICAgICAgOTI1LCAgOTMxLCAgOTM0LCAgOTM1
LCAgICAwLCAgOTI3LCAgOTM3LCAgMjQ5LCAgOTM2LCAgOTMxLAotICAgICAgOTEyLCAgMTc3LCAg
OTE2LCAgOTI5LCAgOTIwLCAgMTg0LCAgOTEzLCAgMjUwLCAgOTI1LCAgOTI3LAotICAgICAgMjU3
LCAgOTE2LCAgOTEzLCAgOTAyLCAgOTExLCAgMjQ5LCAgMjU3LCAgOTE1LCAgOTExLCAgOTEzLAot
ICAgICAgOTAyLCAgOTA1LCAgMTk2LCAgMjE3LCAgMjY5LCAgOTE0LCAgOTAyLCAgOTE0LCAgMjYy
LCAgOTA3LAotICAgICAgOTA2LCAxMDE3LCAxMDE3LCAgICAwLCAgMzExLCAxMDE3LCAgMjkyLCAg
MzI4LCAxMDE3LCAxMDE3LAotICAgICAgMzM1LCAgMzQyLCAgMjU3LCAxMDE3LCAxMDE3LCAgOTA1
LCAgICAwLCAgOTAxLCAgODk2LCAgOTAwLAotICAgICAgOTA5LCAgOTA2LCAgMzE1LCAgODkwLCAg
ODkwLCAgOTAxLCAgODkzLCAgMjE1LCAgOTAzLCAgOTAwLAotICAgICAgOTAwLCAgODk4LCAgODk1
LCAgODg3LCAgODkzLCAgODgwLCAgODc4LCAgODkwLCAgODc2LCAgODkyLAotICAgICAgICAwLCAg
ODg5LCAgODc3LCAgODg0LCAgODgxLCAgODg1LCAgODg2LCAgODc5LCAgODc2LCAgODY1LAotCi0g
ICAgICA4NjQsICA4NzcsICA4ODAsICA4NjgsICA4NzYsICA4NjQsICA4NzAsICA4NjEsICAzMTYs
ICA4NjYsCi0gICAgICA4NjksICA4NjAsICA4NjcsICA4NTYsICA4NjAsICA4NTEsICA4NjUsICA4
NjQsICA4NTUsICA4NjEsCi0gICAgICAzMDcsICA4NDUsICA4NDgsICA4NDYsICA4NTYsICA4NDYs
ICA4NDEsICA4MzksICA4NDEsICA4NTEsCi0gICAgICA4MzcsICA4MzksICA4MzYsICA4NDcsICA4
NDYsICA4NDksICA4MzEsICAzMTYsICA4MzksICA4MzUsCi0gICAgICA4MzMsICA4NDIsICA4MjEs
ICAzNTMsICA4MzksICA4NDEsICA4MzAsICA4MjIsICAzNjMsICAzNzAsCi0gICAgICAzNzgsICAz
ODksIDEwMTcsIDEwMTcsICA4MTksICA4MjksICA4MjgsICAgIDAsICA4MjYsICAzODMsCi0gICAg
ICAgIDAsICAgIDAsICA4MTksICA4MTcsICA4MTcsICA4MTgsICA4MTMsICA4MjEsICA4MTAsICA4
MjcsCi0gICAgICA4MTYsICAzOTQsICAgIDAsICAgIDAsICA4MTAsICA4MjAsICA4MTksICA4MTks
ICAgIDAsICA4MDQsCi0gICAgICAzOTcsICAgIDAsICAgIDAsICA4MDYsICA0MDAsICA4MTMsICA4
MTQsICA4MDUsICA3OTksICA3OTgsCi0gICAgICA3OTksICA3OTgsICA3OTgsICA0MDYsICA3OTMs
ICAgIDAsICAgIDAsICA3ODksICA3ODgsICA3ODcsCi0KLSAgICAgIDc4OSwgIDc5MCwgIDc5NSwg
IDc4OSwgIDc4NSwgIDc5OCwgIDc5MywgIDc5MywgIDc5MSwgIDc5MCwKLSAgICAgIDc4NCwgIDc3
OCwgIDc4MCwgIDc3OSwgIDc4MywgIDc3NSwgIDc3OCwgIDc3MywgIDc4MSwgIDc4NiwKLSAgICAg
IDc3NCwgIDc3MSwgIDc4MywgIDc3NCwgICAgMCwgICAgMCwgIDc4MCwgIDc3NiwgICAgMCwgIDc2
OCwKLSAgICAgIDc2OCwgIDc3MywgIDc2NCwgIDc3MSwgIDQwOSwgIDc2OCwgICAgMCwgICAgMCwg
ICAgMCwgICAgMCwKLSAgICAgIDc1OCwgIDc3MCwgIDc2OSwgIDc2OCwgIDc2OSwgIDc2OSwgICAg
MCwgICAgMCwgICAgMCwgICAgMCwKLSAgICAgIDc1NiwgICAgMCwgIDc2NCwgIDc1NSwgICAgMCwg
IDc1NCwgIDc1NSwgIDc0OSwgIDc1OSwgICAgMCwKLSAgICAgICAgMCwgICAgMCwgIDc1MCwgICAg
MCwgIDc0NiwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwKLSAgICAgICAgMCwgICAgMCwg
ICAgMCwgICAgMCwgIDc1NiwgIDQxMywgIDc1NSwgICAgMCwgICAgMCwgIDc1MywKLSAgICAgIDc0
OSwgIDc0NiwgICAgMCwgICAgMCwgICAgMCwgIDczOCwgIDQxNSwgIDQxOCwgIDQyNywgIDc0MywK
LSAgICAgIDczOSwgIDc0NCwgIDczNSwgIDczMywgIDc0NiwgIDczMSwgICAgMCwgIDczMSwgIDc0
NCwgIDczMywKLQotICAgICAgNzI5LCAgNzM1LCAgNzMwLCAgNzM3LCAgICAwLCAgNzM1LCAgNzMy
LCAgNzM2LCAgNzIwLCAgNzE4LAotICAgICAgNzIxLCAgNzI3LCAgNzMzLCAgNzI4LCAgNzI3LCAg
NzE1LCAgICAwLCAgNzE3LCAgNzE4LCAgICAwLAotICAgICAgICAwLCAgICAwLCAgICAwLCAgNzE1
LCAgNzE4LCAgICAwLCAgNzEyLCAgICAwLCAgNzI1LCAgNzA1LAotICAgICAgNzE0LCAgNzA5LCAg
ICAwLCAgNzAyLCAgNzAyLCAgNzE1LCAgICAwLCAgNzE3LCAgICAwLCAgNDMxLAotICAgICAgNzMw
LCAgNzI5LCAgNzI4LCAgNjk1LCAgNjk0LCAgICAwLCAgNzExLCAgNzEwLCAgNzA1LCAgICAwLAot
ICAgICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAw
LCAgNjk0LAotICAgICAgNzA3LCAgNjk0LCAgNjkxLCAgICAwLCAgICAwLCAgNjk2LCAgNjk1LCAg
ICAwLCAgNjkyLCAgNjk5LAotICAgICAgNjk4LCAgICAwLCAgNjg0LCAgICAwLCAgICAwLCAgICAw
LCAgICAwLCAgNjgxLCAgICAwLCAgICAwLAotICAgICAgNjgwLCAgNjkxLCAgNDM0LCAgNjg0LCAg
NjkwLCAgNjg5LCAgNjg2LCAgNjgxLCAgNjc4LCAgNjcxLAotICAgICAgNjcxLCAgNjg0LCAgNjY5
LCAgNjgxLCAgICAwLCAgICAwLCAgNjc0LCAgNjk3LCAgNjk2LCAgNjk1LAotCi0gICAgICA2NjIs
ICA2NjEsICA0MjcsICA0MjgsICAgIDAsICA2NzMsICA2NzYsICA2NzQsICA2NjMsICA2NTksCi0g
ICAgICAgIDAsICA2NzEsICA2NjgsICA2NjcsICA2NTcsICA2NTYsICA2NDYsICA2NjMsICA2NDks
ICA0NDEsCi0gICAgICA2NTcsICA2NjAsICAgIDAsICA2NzcsICA2NzYsICA2NzUsICA2NDIsICA2
NDEsICAgIDAsICA2NTUsCi0gICAgICA2NDIsICAgIDAsICA2NTIsICA2NDUsICA2NDYsICA2NDks
ICAgIDAsICAgIDAsICAgIDAsICAgIDAsCi0gICAgICA2NjksICA2NjgsICAgIDAsICA2NDUsICA2
NDgsICA2MzMsICA2NDAsICA2MzEsICA2MzgsICA2MzksCi0gICAgICA2MzksICA2MzgsICA2MjQs
ICA0NTEsICA2MzYsICAgIDAsICA2MzcsICA2MjYsICA2MjUsICAgIDAsCi0gICAgICAgIDAsICAg
IDAsICA2NTAsICA2NDksICA2NDgsICA2MTUsICA2MTQsICA2MTAsICA2MTgsICAgIDAsCi0gICAg
ICA2NDYsICA2NDUsICAgIDAsICA2MjIsICA2MjUsICAgIDAsICA0NTgsICAgIDAsICA2MDMsICA2
MTIsCi0gICAgICAgIDAsICA2MDgsICA2MDcsICA2MTYsICA2MTYsICA2MDQsICA2MTgsICA2MDIs
ICA2MTYsICA2MTEsCi0gICAgICAgIDAsICAgIDAsICAgIDAsICA2MjgsICA2MjcsICA2MjYsICA1
OTMsICA1OTIsICAgIDAsICA1OTIsCi0KLSAgICAgICAgMCwgICAgMCwgIDQzNCwgIDQ1NCwgIDYx
NiwgIDYwMiwgIDYwNSwgIDU4OCwgIDYwMCwgIDU4OCwKLSAgICAgIDU4NywgIDU5NiwgIDU5Niwg
IDYxMywgIDYxMiwgIDYxMSwgIDU3OCwgIDU3NywgICAgMCwgIDU3NywKLSAgICAgIDU3OCwgIDU3
NywgIDU4NywgICAgMCwgIDU5MCwgIDU4NiwgIDU4OCwgIDU4NCwgIDU3MSwgIDYwMiwKLSAgICAg
IDQ0OSwgICAgMCwgIDU3OSwgIDU4MiwgIDU3NCwgIDU2NiwgIDU3MywgIDU2NCwgIDU4NSwgIDU3
MywKLSAgICAgIDU2OSwgIDU3MSwgIDU2OSwgIDU2OSwgIDU2OCwgICAgMCwgIDU1NiwgIDU1NSwg
IDU2NSwgICAgMCwKLSAgICAgIDU4NSwgIDQ2MiwgICAgMCwgIDU2MiwgIDU2NSwgICAgMCwgIDU2
NSwgIDU2NCwgIDU0OCwgIDU0MCwKLSAgICAgIDU0OCwgIDUzOCwgIDU0NiwgICAgMCwgIDU0Mywg
IDU0MiwgIDU2MywgIDU1MSwgIDU0OSwgIDU0OSwKLSAgICAgIDUzMywgIDUzNiwgIDU1MCwgIDUz
NCwgIDU2NSwgIDU0NSwgIDU0NiwgIDU0MywgIDU0MCwgIDU1MCwKLSAgICAgIDUyNywgIDU0MSwg
IDU0MCwgIDUyNCwgIDUyMywgIDUyMiwgIDU0MywgIDUzMSwgIDUyOSwgIDUyOSwKLSAgICAgIDUx
MCwgIDUwOSwgICAgMCwgIDUzNywgIDUwOSwgIDUzNSwgIDUwNywgIDUxMSwgIDUxMCwgIDU0MSwK
LQotICAgICAgNTIxLCAgNTE4LCAgICAwLCAgNTE3LCAgNTIwLCAgNTE2LCAgNTE4LCAgNTAyLCAg
NDk5LCAgNTEyLAotICAgICAgNDk3LCAgNDk4LCAgNTA1LCAgNDk5LCAgNDg4LCAgNDg3LCAgICAw
LCAgNDkzLCAgNDkyLCAgNTIzLAotICAgICAgNTAzLCAgNTAwLCAgICAwLCAgICAwLCAgICAwLCAg
NDk2LCAgICAwLCAgNDk1LCAgICAwLCAgNTAxLAotICAgICAgNTAwLCAgNDg0LCAgNDgxLCAgNDgy
LCAgICAwLCAgNDc0LCAgNDgyLCAgNDcyLCAgNDc4LCAgNDk5LAotICAgICAgNDc4LCAgICAwLCAg
ICAwLCAgNDkwLCAgNDg5LCAgICAwLCAgICAwLCAgNDg4LCAgNDg3LCAgNDcxLAotICAgICAgNDY4
LCAgNDY5LCAgNDgzLCAgNDgyLCAgNDU5LCAgNDU4LCAgNDY0LCAgICAwLCAgICAwLCAgNDg1LAot
ICAgICAgNDU3LCAgNDgzLCAgNDc1LCAgNDY3LCAgNDUzLCAgMTMyLCAgMTYxLCAgMTc3LCAgMjE1
LCAgMjQ1LAotICAgICAgICAwLCAgICAwLCAgMjg4LCAgMjg5LCAgICAwLCAgICAwLCAgMjk0LCAg
MzE1LCAgICAwLCAgMzE2LAotICAgICAgMzA2LCAgMzMxLCAgICAwLCAgMzYzLCAgNDAyLCAgICAw
LCAgICAwLCAgMzk1LCAgMzgzLCAgMzk1LAotICAgICAgMzg3LCAgNDMzLCAgNDM0LCAgICAwLCAg
NDM1LCAgNDIwLCAgNDYxLCAgNDI3LCAgNDMwLCAgNDMxLAotCi0gICAgICAgIDAsICA0NTAsICA0
NTIsICA0NDMsICAgIDAsICA0NjQsICAgIDAsICAgIDAsICAgIDAsICA0NDUsCi0gICAgICA0NDYs
ICA0NDAsICAgIDAsICA0NDEsICA0NDIsICAgIDAsICAgIDAsICAgIDAsIDEwMTcsICA1MDYsCi0g
ICAgICA1MDksICA1MTIsICA1MTMsICA1MTQKKyAgICAgICAgMCwgICAgMCwgICA3NywgICAgMCwg
MTA4OSwgMTA5MCwgMTA5MCwgMTA5MCwgMTA2MCwgIDEyNywKKyAgICAgIDE1MSwgMTA5MCwgMTA5
MCwgMTA1OSwgIDE0OCwgMTA5MCwgIDE0NywgIDE0NSwgMTA1OCwgIDE2NywKKyAgICAgIDE1OCwg
MTA1NiwgMTA5MCwgIDE2NywgMTA1NiwgIDE0NSwgMTA5MCwgICAgMCwgMTA5MCwgMTA5MCwKKyAg
ICAgIDE0OSwgMTAzNCwgIDE0NywgIDEzNSwgIDE1NSwgIDE2MiwgIDE0NiwgIDE3NCwgMTAxOSwg
IDE3MiwKKyAgICAgIDE3OCwgIDE3OSwgIDE1MywgIDE5NiwgMTAxMywgIDE5OCwgMTAyNiwgIDIw
MCwgIDE5NywgIDIxMywKKyAgICAgIDIwMiwgIDExMywgMTAxMSwgMTA5MCwgIDE1MywgMTA5MCwg
MTA5MCwgMTA5MCwgMTA5MCwgMTA5MCwKKyAgICAgICAgMCwgMTA5MCwgMTA5MCwgMTA5MCwgMTA5
MCwgMTA5MCwgMTA5MCwgMTA5MCwgMTA5MCwgMTA5MCwKKyAgICAgMTA5MCwgIDIzNywgMTA5MCwg
IDI0MSwgIDIzNywgIDI3MSwgIDI0MywgMTA5MCwgICAgMCwgMTA5MCwKKyAgICAgMTA5MCwgMTA5
MCwgMTA1MCwgMTA5MCwgMTA5MCwgMTA5MCwgMTA0OSwgICAgMCwgMTA5MCwgMTA5MCwKKyAgICAg
MTAxMCwgMTAwOCwgMTAxMywgIDE1NiwgMTAxMCwgMTAxOCwgMTAxNywgMTAwNCwgMTAwNywgMTAx
OCwKKworICAgICAgMjI2LCAxMDEyLCAxMDAwLCAgOTk3LCAxMDEwLCAgOTk3LCAgOTk0LCAgOTk0
LCAxMDAwLCAgMTg5LAorICAgICAgMjM1LCAgOTk0LCAxMDA0LCAgOTkwLCAgOTk2LCAgOTk5LCAx
MDAwLCAgICAwLCAgOTkyLCAxMDAyLAorICAgICAgMjMwLCAxMDAxLCAgOTgyLCAgOTk1LCAgOTc2
LCAgMjE2LCAgOTgwLCAgOTkzLCAgOTg0LCAgMjQzLAorICAgICAgOTc3LCAgMjM3LCAgOTg5LCAg
OTkxLCAgMjUwLCAgOTgwLCAgMjU5LCAgOTY3LCAgOTc2LCAgMjUzLAorICAgICAgMjU5LCAgOTgw
LCAgOTc2LCAgOTc4LCAgOTY3LCAgOTcwLCAgMjUwLCAgMjU1LCAgMjY5LCAgOTc5LAorICAgICAg
OTY3LCAgOTc5LCAgMjY2LCAgOTcyLCAgOTcxLCAgOTU5LCAxMDkwLCAxMDkwLCAgICAwLCAgMzE4
LAorICAgICAxMDkwLCAgMjk2LCAgMzIzLCAxMDkwLCAxMDkwLCAgMzI1LCAgMzI0LCAgMjg2LCAx
MDkwLCAxMDkwLAorICAgICAgOTc3LCAgOTY4LCAgICAwLCAgOTY0LCAgOTU5LCAgOTYzLCAgOTcy
LCAgOTY5LCAgMjk4LCAgOTUzLAorICAgICAgOTUzLCAgOTY0LCAgOTU2LCAgMjcxLCAgOTY2LCAg
OTYzLCAgOTYzLCAgOTYxLCAgOTU4LCAgOTUwLAorICAgICAgOTU2LCAgOTQzLCAgOTQxLCAgOTUz
LCAgOTM5LCAgOTU1LCAgICAwLCAgOTUyLCAgOTQwLCAgOTQ3LAorCisgICAgICA5NDQsICA5NDgs
ICA5NDksICA5NDIsICA5MzksICA5MjgsICA5MjcsICA5NDAsICA5NDMsICA5MzEsCisgICAgICA5
NDIsICA5MzgsICA5MjYsICA5MzIsICA5MjMsICAzMzgsICA5MjgsICA5MzEsICA5MjIsICA5Mjks
CisgICAgICA5MTgsICA5MjIsICA5MTMsICA5MjcsICA5MjYsICA5MTcsICA5MjMsICAyOTUsICA5
MDcsICA5MTAsCisgICAgICA5MDgsICA5MDcsICA5MTcsICA5MDcsICA5MDIsICA5MDAsICA5MDIs
ICA5MTIsICA4OTgsICA5MDAsCisgICAgICA4OTcsICA5MDgsICA5MDcsICA5MTAsICA4OTIsICAy
OTgsICA5MDAsICA4OTYsICA4OTQsICA5MDMsCisgICAgICA4ODIsICAzNDksICA5MDAsICA5MDIs
ICA4OTEsICA4ODMsICA5MTYsICAzNTQsICAzNzAsICAzNjgsCisgICAgICAzODMsIDEwOTAsIDEw
OTAsICA4ODcsICA4NzgsICA4ODgsICA4ODcsICAgIDAsICA4ODUsICAzNzksCisgICAgICAgIDAs
ICAgIDAsICA4NzgsICA4NzYsICA4NzYsICA4NzcsICA4NzIsICA4ODAsICA4NjksICA4ODYsCisg
ICAgICA4NzUsICAzODIsICAgIDAsICAgIDAsICA4NjksICA4NzksICA4NzgsICA4NzgsICAgIDAs
ICA4NjMsCisgICAgICAzODUsICAgIDAsICAgIDAsICA4NjUsICAzOTAsICA4NzIsICA4NzMsICA4
NjQsICA4NTgsICA4NTcsCisKKyAgICAgIDg1OCwgIDg1NywgIDg1NywgIDM0MiwgIDM5MywgIDg1
MiwgICAgMCwgICAgMCwgIDg0OCwgIDg0NywKKyAgICAgIDg0NiwgIDg0OCwgIDg0OSwgIDg1NCwg
IDg0OCwgIDg0NCwgIDg1NywgIDg1MiwgIDg1MiwgIDg1MCwKKyAgICAgIDg0OSwgIDg0MywgIDgz
NywgIDgzOSwgIDgzOCwgIDg0MiwgIDg0NywgIDgzMywgIDgzNiwgIDgzMSwKKyAgICAgIDgzOSwg
IDg0NCwgIDgzMiwgIDgyOSwgIDg0MSwgIDgzMiwgICAgMCwgICAgMCwgIDgzOCwgIDgzNCwKKyAg
ICAgICAgMCwgIDgyNiwgIDgyNiwgIDgzMSwgIDgyMiwgIDgyOSwgIDM5NiwgIDgyNiwgICAgMCwg
ICAgMCwKKyAgICAgICAgMCwgICAgMCwgIDgxNiwgIDgyOCwgIDgyNywgIDgxNCwgIDgxNSwgIDgy
NCwgIDgyNSwgIDgyNSwKKyAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDgxMiwgICAgMCwg
IDgyMCwgIDgxMSwgICAgMCwgIDgxMCwKKyAgICAgIDgxMSwgIDgwNSwgIDgxNSwgICAgMCwgICAg
MCwgICAgMCwgIDgwNiwgICAgMCwgIDgwMiwgICAgMCwKKyAgICAgICAgMCwgICAgMCwgICAgMCwg
ICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDgxMiwgIDQwMCwKKyAgICAgIDgxMSwgICAg
MCwgICAgMCwgIDgwOSwgIDgwNSwgIDgwMiwgIDg0NiwgIDg0NSwgICAgMCwgICAgMCwKKworICAg
ICAgICAwLCAgNzkyLCAgNDAzLCAgNDA5LCAgNDEyLCAgNzk3LCAgNzkzLCAgNzk4LCAgNzg5LCAg
Nzg3LAorICAgICAgODAwLCAgNzg1LCAgICAwLCAgNzg1LCAgNzk4LCAgNzg3LCAgNzgzLCAgNzg5
LCAgNzg0LCAgNzkxLAorICAgICAgNzkxLCAgICAwLCAgNzg4LCAgNzg1LCAgNzg5LCAgNzczLCAg
NzcxLCAgNzc0LCAgNzgwLCAgNzg2LAorICAgICAgNzgxLCAgNzgwLCAgNzY4LCAgICAwLCAgNzcw
LCAgNzcxLCAgICAwLCAgICAwLCAgICAwLCAgICAwLAorICAgICAgNzY4LCAgNzcxLCAgICAwLCAg
NzY1LCAgNzc1LCAgNzY2LCAgICAwLCAgNzc2LCAgNzU2LCAgNzY1LAorICAgICAgNzYwLCAgICAw
LCAgNzUzLCAgNzUzLCAgNzY2LCAgICAwLCAgNzY4LCAgICAwLCAgNDE4LCAgNzgzLAorICAgICAg
NzgyLCAgNzgxLCAgNzQ2LCAgNzQ1LCAgICAwLCAgNzYyLCAgNzYxLCAgNzU2LCAgNzkzLCAgNzg0
LAorICAgICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAg
ICAwLCAgICAwLAorICAgICAgNzQzLCAgNzU2LCAgNzQzLCAgNzQwLCAgICAwLCAgICAwLCAgNzQ1
LCAgNzQ0LCAgICAwLCAgNzQxLAorICAgICAgNzQ4LCAgNzQ3LCAgICAwLCAgNzMzLCAgICAwLCAg
ICAwLCAgICAwLCAgICAwLCAgICAwLCAgNzMwLAorCisgICAgICAgIDAsICAgIDAsICA3MjksICA3
NDAsICA0MjMsICA3MzMsICA3MzksICA3MzgsICA3MzUsICA3MzAsCisgICAgICA3MjcsICA3NDcs
ICA3MzMsICA3MTgsICA3MTgsICA3MzEsICA3MTYsICA3MjgsICAgIDAsICAgIDAsCisgICAgICA3
MjEsICA3NDYsICA3NDUsICA3NDQsICA3MDksICA3MDgsICAyMzMsICA0MDYsICAgIDAsICA3MjAs
CisgICAgICA3MjMsICA3MjEsICA3MTAsICA3MDYsICA3MjEsICAgIDAsICAgIDAsICA3MTcsICA3
MTQsICA3MTMsCisgICAgICA3MDMsICA3MDIsICA2OTIsICA3MDksICA2OTUsICA0MjYsICA3MDMs
ICA3MDYsICAgIDAsICA3MjUsCisgICAgICA3MjQsICA3MjMsICA2ODgsICA2ODcsICAgIDAsICA3
MDEsICA2ODgsICAgIDAsICA2OTgsICA2OTEsCisgICAgICA2ODMsICA2ODQsICA2OTAsICA2OTMs
ICAgIDAsICAgIDAsICAgIDAsICAgIDAsICA3MTUsICA3MTQsCisgICAgICAgIDAsICA2ODksICA2
OTIsICA2NzcsICA2ODQsICA2NzUsICA2ODIsICA2ODMsICA2ODMsICA2ODIsCisgICAgICA2Njgs
ICA0MzYsICA2NzksICA2NzksICAgIDAsICA2ODAsICA2NjksICA2NjgsICAgIDAsICAgIDAsCisg
ICAgICAgIDAsICA2OTUsICA2OTQsICA2OTMsICA2NTgsICA2NTcsICA2NTMsICA2NjEsICAgIDAs
ICA2OTEsCisKKyAgICAgIDY5MCwgICAgMCwgIDY2NSwgIDY2OCwgICAgMCwgIDQ0NiwgICAgMCwg
IDY0NiwgIDY2NywgIDY4MSwKKyAgICAgIDY1MywgICAgMCwgIDY0OSwgIDY0OCwgIDY1NywgIDY1
NywgIDY0NSwgIDY1OSwgIDY0MywgIDY1NywKKyAgICAgIDY1MiwgICAgMCwgICAgMCwgICAgMCwg
IDY3MSwgIDY3MCwgIDY2OSwgIDYzNCwgIDYzMywgIDYzMiwKKyAgICAgICAgMCwgIDYzMiwgICAg
MCwgICAgMCwgIDQyNiwgIDQzNCwgIDY1OCwgIDY0MiwgIDY0NSwgIDYyOCwKKyAgICAgIDY0MCwg
IDYyOCwgIDYyNywgIDYzNiwgIDYzNiwgIDY1NSwgIDY1NCwgIDY1MywgIDYxOCwgIDYxNywKKyAg
ICAgICAgMCwgIDYyMiwgIDYxMiwgIDYxNSwgIDYxNiwgIDYxNSwgIDYyNSwgICAgMCwgIDYyOCwg
IDYyNCwKKyAgICAgIDYyNiwgIDYyMiwgIDYwOSwgIDY0MiwgIDQ0MiwgICAgMCwgIDYxNywgIDYy
MCwgIDYxMCwgIDYxMSwKKyAgICAgIDYwMywgIDYxMCwgIDYwMSwgIDYyNCwgIDYxMCwgIDYwNiwg
IDYwOCwgIDYwNiwgIDYwNiwgIDYwNSwKKyAgICAgICAgMCwgIDU5MywgIDU5MiwgIDYwMiwgICAg
MCwgIDYyNCwgIDQ0NSwgICAgMCwgIDU5OSwgIDYwMiwKKyAgICAgIDU5OSwgIDU4NCwgICAgMCwg
IDYwMCwgIDU5OSwgIDU4MywgIDU3NSwgIDU4MywgIDU3MywgIDU4MSwKKworICAgICAgICAwLCAg
NTc4LCAgNTc3LCAgNjAwLCAgNTg2LCAgNTg0LCAgNTg0LCAgNTc3LCAgNTY3LCAgNTcwLAorICAg
ICAgNTg0LCAgNTY4LCAgNjAxLCAgNTc5LCAgNTgwLCAgNTc3LCAgNTc0LCAgNTg2LCAgNTYxLCAg
NTc1LAorICAgICAgNTc0LCAgNTU4LCAgNTU3LCAgNTU2LCAgNTc5LCAgNTY1LCAgNTYzLCAgNTYz
LCAgNTY2LCAgNTYxLAorICAgICAgNTQyLCAgNTQxLCAgICAwLCAgNTcxLCAgNTQxLCAgNTY5LCAg
NTM5LCAgNTQzLCAgNTQyLCAgNTc1LAorICAgICAgNTUzLCAgNTUwLCAgICAwLCAgNTU0LCAgNTQ4
LCAgNTUxLCAgNTQ3LCAgNTQ5LCAgNTMyLCAgNTI3LAorICAgICAgNTM0LCAgNTE2LCAgNTE0LCAg
NTA3LCAgNTAxLCAgNDg5LCAgMTI0LCAgICAwLCAgMTYyLCAgMjUwLAorICAgICAgMjg5LCAgMzA3
LCAgMzI3LCAgICAwLCAgMzI5LCAgMzQwLCAgICAwLCAgICAwLCAgMzY2LCAgICAwLAorICAgICAg
MzY3LCAgICAwLCAgMzk1LCAgMzk2LCAgMzgzLCAgMzgyLCAgMzk1LCAgNDAxLCAgICAwLCAgMzk4
LAorICAgICAgNDA4LCAgNDA1LCAgNDE2LCAgNDQzLCAgNDIzLCAgICAwLCAgICAwLCAgNDM3LCAg
NDM4LCAgICAwLAorICAgICAgICAwLCAgNDM5LCAgNDQwLCAgNDI2LCAgNDI1LCAgNDI4LCAgNDQx
LCAgNDMzLCAgNDQ2LCAgNDQ3LAorCisgICAgICA0MjYsICA0MjcsICA0MzUsICAgIDAsICAgIDAs
ICA0NTEsICA0NjEsICA0MzMsICA0NjMsICA0NTUsCisgICAgICA0NDksICA0MzcsICA0NTUsICA0
NDksICA0MzgsICA0MzksICA0NDcsICAgIDAsICAgIDAsICA0NzgsCisgICAgICA0NjQsICA0NjIs
ICA0NjMsICAgIDAsICAgIDAsICA0NjcsICA0NTYsICA0NjIsICAgIDAsICA0NjMsCisgICAgICA0
NDksICA0NzIsICAgIDAsICA0NjAsICA0ODUsICAgIDAsICAgIDAsICA0NzUsICA0ODIsICA0Njcs
CisgICAgICA0NjUsICA0NjYsICA0NTgsICA0NzUsICA0ODIsICA0ODMsICAgIDAsICA0ODEsICA0
NjUsICA1MDEsCisgICAgICA0NjUsICA0OTYsICA1MjIsICA0NzAsICA0NzEsICAgIDAsICA0ODgs
ICA0OTAsICA0OTEsICA0ODIsCisgICAgICAgIDAsICA1MDUsICAgIDAsICAgIDAsICA1MTMsICAg
IDAsICAgIDAsICAgIDAsICA0ODUsICA0ODYsCisgICAgICA0ODAsICAgIDAsICA1MDYsICA0ODIs
ICA0ODMsICAgIDAsICA1MzcsICAgIDAsICAgIDAsICA1MTAsCisgICAgICA1MjEsICA1MTMsICA1
MTYsICAgIDAsIDEwOTAsICA1NTYsICA1NjIsICA1NjgsICA1NzQsICA1NzgsCisgICAgICA1ODQs
ICA1ODUsICA1OTEsICA1OTQKKwogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2
X3QgeXlfZGVmWzgyNV0gPQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2RlZls4OTVd
ID0KICAgICB7ICAgMCwKLSAgICAgIDgxOSwgICAgMSwgIDgxOSwgICAgMywgIDgxOSwgIDgxOSwg
IDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwg
IDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgyMCwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwKLSAgICAgIDgyMCwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwg
IDgyMSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwgIDgxOSwgIDgyMiwKLSAgICAgIDgxOSwgIDgyMywgICAyMCwgICAyMSwgIDgxOSwg
IDgxOSwgIDgyNCwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwgIDgyMCwgIDgxOSwgIDgxOSwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLQotICAgICAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODE5LCAg
ODE5LCAgODIxLCAgODE5LCAgODE5LCAgODIzLCAgODE5LCAgODE5LCAgODE5LAotICAgICAgODE5
LCAgODE5LCAgODI0LCAgODE5LCAgODE5LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAot
ICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0g
ICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAg
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsCi0KLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLQotICAgICAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAot
ICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLAotCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0g
ICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0KLSAg
ICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLQotICAgICAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAot
ICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLAotCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICAgIDAsICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTkK
KyAgICAgIDg4NSwgICAgMSwgIDg4NSwgICAgMywgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4
NSwgIDg4NSwKKyAgICAgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwg
IDg4NSwgIDg4NSwgIDg4NSwKKyAgICAgIDg4NiwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4
NSwgIDg4NSwgIDg4NywgIDg4NSwgIDg4NSwKKyAgICAgIDg4NSwgIDg4NywgIDg4NywgIDg4Nywg
IDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4
NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4Nywg
IDg4NywgIDg4NywgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwKKyAg
ICAgIDg4OCwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwg
IDg4NSwKKyAgICAgIDg4NSwgIDg4OSwgIDg4NSwgIDg5MCwgICAyMCwgIDg4NiwgIDg5MSwgIDg4
NSwgIDg5MiwgIDg4NSwKKyAgICAgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwg
IDg4NSwgIDg4NywgIDg4NSwgIDg4NSwKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4
NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKworICAgICAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAg
ODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAg
ICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAg
ODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAg
ODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg1LCAgODg1LCAgODg4LCAgODkzLAorICAgICAgODg1LCAgODkwLCAgODk0LCAg
ODg1LCAgODg1LCAgODg1LCAgODkxLCAgODkyLCAgODg1LCAgODg1LAorICAgICAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAg
ODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3
LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAg
ODg3LCAgODg3LAorCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4
ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4
ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4
ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcs
CisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODUsICA4
OTMsICA4ODUsCisgICAgICA4OTQsICA4ODUsICA4ODUsICA4ODcsICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4
ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4
ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisKKyAgICAgIDg4
NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywK
KyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4
NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4Nywg
IDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4
NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4Nywg
IDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4
NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4Nywg
IDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAg
ICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4Nywg
IDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4
NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4Nywg
IDg4NywgIDg4NywgIDg4NywgIDg4NywKKworICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAg
ODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAg
ODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAg
ICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAg
ODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAg
ODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAg
ODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAg
ODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3
LAorCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4
ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4
ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4
ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcs
CisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4
ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4
ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisKKyAgICAgIDg4NywgIDg4Nywg
IDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4
NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywK
KyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4
NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4Nywg
IDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4
NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4Nywg
IDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4
NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4Nywg
IDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAg
ICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4Nywg
IDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4
NywgIDg4NywgIDg4NywKKworICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAg
ODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAg
ODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAg
ICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAg
ODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAg
ODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAg
ODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorCisgICAg
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4
ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4
ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4
ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4
ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcs
CisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4
ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICAgIDAsICA4ODUsICA4ODUs
ICA4ODUsICA4ODUsICA4ODUsCisgICAgICA4ODUsICA4ODUsICA4ODUsICA4ODUKKwogICAgIH0g
OwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfbnh0WzEwOTBdID0KK3N0YXRpYyB5
eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9ueHRbMTE2OF0gPQogICAgIHsgICAwLAogICAgICAgICA2
LCAgICA3LCAgICA4LCAgICA5LCAgIDEwLCAgIDExLCAgIDEyLCAgIDEzLCAgIDE0LCAgIDE1LAog
ICAgICAgIDE2LCAgIDE3LCAgIDE4LCAgIDE5LCAgIDIwLCAgIDIxLCAgIDIxLCAgIDIxLCAgIDIx
LCAgIDIxLAotICAgICAgIDIxLCAgIDIyLCAgIDIzLCAgIDI0LCAgIDI1LCAgIDI2LCAgIDI3LCAg
IDI4LCAgIDI4LCAgIDI4LAorICAgICAgIDIxLCAgIDIxLCAgIDIxLCAgIDIxLCAgIDIyLCAgIDIz
LCAgIDI0LCAgIDI1LCAgIDI2LCAgIDI3LAogICAgICAgIDI4LCAgIDI4LCAgIDI4LCAgIDI4LCAg
IDI4LCAgIDI4LCAgIDI4LCAgIDI4LCAgIDI4LCAgIDI4LAotICAgICAgIDI5LCAgIDMwLCAgIDMx
LCAgIDI4LCAgIDMyLCAgIDMzLCAgIDM0LCAgIDM1LCAgIDM2LCAgIDM3LAotICAgICAgIDM4LCAg
IDM5LCAgIDQwLCAgIDI4LCAgIDQxLCAgIDQyLCAgIDQzLCAgIDQ0LCAgIDQ1LCAgIDQ2LAotICAg
ICAgIDQ3LCAgIDQ4LCAgIDQ5LCAgIDUwLCAgIDUxLCAgIDI4LCAgIDI4LCAgIDI4LCAgIDUyLCAg
IDUzLAotICAgICAgIDU0LCAgIDU1LCAgIDU2LCAgIDU3LCAgIDU4LCAgIDU2LCAgIDU2LCAgIDU2
LCAgIDU2LCAgIDU2LAotICAgICAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAg
IDU2LCAgIDU2LCAgIDU2LCAgIDU2LAotICAgICAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2
LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU5LAotCi0gICAgICAgNTksICAgNTksICAgNTks
ICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksCi0gICAgICAgNTksICAg
NTksICAgNTYsICAgNTYsICAgNTYsICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksCi0gICAg
ICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAg
NTksCi0gICAgICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTks
ICAgNTksICAgNTksCi0gICAgICAgNTYsICAgNTYsICAgNTYsICAgNTYsICAgNjEsICAgNjIsICAg
NjMsICAgNjYsICAgNjgsICAgNzAsCi0gICAgICAgNzAsICAgNzAsICAgNzAsICAgNzAsICAgNzAs
ICAgNzAsICAgODQsICAgODUsICAgNzksICAxNTAsCi0gICAgICAxMjMsICAgNjksICAgNjcsICAg
ODcsICAxMjQsICAgNjQsICAgNzIsICAxNTEsICAgNzMsICAgNzMsCi0gICAgICAgNzMsICAgNzMs
ICAgNzMsICAgNzMsICAgNzQsICAgODAsICAgODksICAgODEsICAgODIsICA3ODQsCi0gICAgICAg
OTIsICAgODgsICAgOTMsICAxMjEsICAgOTUsICAgNzUsICAgOTQsICAxMDMsICAgOTYsICAxMDQs
Ci0gICAgICAgOTAsICAgOTEsICAgNzYsICAgNzcsICAgOTcsICAgOTksICAxMjIsICAgOTgsICAx
MDUsICAxMDAsCi0KLSAgICAgIDExNSwgIDE4NywgICA3NSwgIDExNiwgIDEwMSwgIDEyNSwgIDEx
NywgIDExOCwgIDE1MiwgIDE2OCwKLSAgICAgIDEwMiwgIDExOSwgIDE4OCwgIDE2OSwgIDEyMCwg
IDc4NSwgICA3NiwgIDEyOCwgIDEyNiwgICA3NywKLSAgICAgICA3MiwgIDEwNiwgICA3NCwgICA3
NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgIDEwNywKLSAgICAgIDExMiwgIDEwOCwg
IDEyOSwgIDIwNywgIDEwOSwgIDEzMCwgIDIxMiwgIDEzMiwgIDExMywgICA3NSwKLSAgICAgIDEx
MCwgIDIwOCwgIDIxMywgIDc4NiwgIDEzMywgIDEzNCwgICA3NiwgIDEzOSwgIDEzNSwgIDExNCwK
LSAgICAgIDE0MCwgIDIzNiwgIDIzNywgIDE1MywgIDEzNiwgIDEzNywgICA3NSwgIDEzOCwgIDE0
MSwgIDE0NywKLSAgICAgIDE0MywgIDE1NSwgIDE1NiwgIDE0OCwgIDE0NCwgIDE0MiwgIDE1OCwg
IDE1OSwgIDE0NSwgIDIzOCwKLSAgICAgICA3NiwgIDE0NiwgIDE0OSwgIDE2MCwgIDgxOSwgIDI2
NywgIDI2OCwgIDIzOSwgIDE1NSwgIDE1NiwKLSAgICAgIDE2MSwgIDc4NywgIDE2MSwgIDE1OCwg
IDE1OSwgIDE2MiwgIDE2MiwgIDE2MiwgIDE2MiwgIDE2MiwKLSAgICAgIDE2MiwgIDE2MiwgIDE4
OSwgIDIyNywgIDE3NiwgIDI1NCwgIDIxNSwgIDE2MCwgIDE3NywgIDE3OCwKLQotICAgICAgODE5
LCAgMjIwLCAgMjI5LCAgMTk5LCAgNzg4LCAgMTkwLCAgMjAwLCAgMjAxLCAgMjI4LCAgMjE2LAot
ICAgICAgMjAyLCAgMjE3LCAgMjAzLCAgMjQwLCAgMjQ1LCAgMjMwLCAgMjQ2LCAgMjIxLCAgMjIy
LCAgMjU0LAotICAgICAgMjQ5LCAgMjQxLCAgMjQ5LCAgMTU4LCAgMTU5LCAgMjUwLCAgMjUwLCAg
MjUwLCAgMjUwLCAgMjUwLAotICAgICAgMjUwLCAgMjUwLCAgMjk4LCAgMjk5LCAgMzAwLCAgNzg5
LCAgNzkwLCAgMjUxLCAgNzkxLCAgMjUxLAotICAgICAgMTU4LCAgMTU5LCAgMjUyLCAgMjUyLCAg
MjUyLCAgMjUyLCAgMjUyLCAgMjUyLCAgMjUyLCAgMTYyLAotICAgICAgMTYyLCAgMTYyLCAgMTYy
LCAgMTYyLCAgMTYyLCAgMTYyLCAgMTYyLCAgMTYyLCAgMTYyLCAgMTYyLAotICAgICAgMTYyLCAg
MTYyLCAgMTYyLCAgMjYxLCAgMzEyLCAgMzMwLCAgNzkyLCAgNzkzLCAgMzEzLCAgMzM3LAotICAg
ICAgMzM4LCAgMzM5LCAgNzk0LCAgMzMxLCAgMjUzLCAgNzk1LCAgMjYyLCAgMjUwLCAgMjUwLCAg
MjUwLAotICAgICAgMjUwLCAgMjUwLCAgMjUwLCAgMjUwLCAgMjUwLCAgMjUwLCAgMjUwLCAgMjUw
LCAgMjUwLCAgMjUwLAotICAgICAgMjUwLCAgMjUzLCAgMjUyLCAgMjUyLCAgMjUyLCAgMjUyLCAg
MjUyLCAgMjUyLCAgMjUyLCAgMzQ4LAotCi0gICAgICAzNDksICAzNTAsICAxNTYsICAyNTIsICAy
NTIsICAyNTIsICAyNTIsICAyNTIsICAyNTIsICAyNTIsCi0gICAgICAzNjAsICAzNjEsICAzNjIs
ICAzNjgsICAzNjksICAzNzAsICAzNzIsICAzNzMsICAzNzQsICAxNTYsCi0gICAgICA3OTYsICAx
NTksICAzODMsICAzODQsICAzODUsICA0MjEsICA0MjIsICA0MjMsICA0NDEsICA0NDIsCi0gICAg
ICA0NDMsICA0NTEsICA0NTIsICA0NTMsICA0NTQsICA0NTUsICA0NTYsICA3OTcsICAxNTksICA3
OTgsCi0gICAgICA3OTksICA0NDQsICA0NDUsICA0NTcsICA0NTgsICA0NTksICA0OTgsICA0OTks
ICA1MDAsICA1MjQsCi0gICAgICA1MjUsICA1MjYsICA4MDAsICA4MDEsICA1NDYsICA1NDgsICA1
NjMsICA1NjQsICA1NjUsICA1MDEsCi0gICAgICA1MDIsICA2MzYsICA1MjcsICA1MjgsICA1NDcs
ICA1NDksICA1OTQsICA1OTUsICA1OTYsICA1NjYsCi0gICAgICA1NjcsICA2MzcsICA1NjgsICA2
MTQsICA2MTUsICA2MTYsICA2NjYsICA4MDIsICA4MDMsICA1OTcsCi0gICAgICA1OTgsICA2Mzgs
ICA4MDQsICA2NjcsICA4MDUsICA2NjgsICA2MTcsICA2MTgsICA2MzksICA2ODYsCi0gICAgICA2
NDAsICA2NDEsICA4MDYsICA4MDcsICA4MDgsICA4MDksICA2ODcsICA4MTAsICA2ODgsICA4MTEs
Ci0KLSAgICAgIDgxMiwgIDgxMywgIDgxNCwgIDgxNSwgIDgxNiwgIDgxNywgIDgxOCwgICA4Niwg
ICA4NiwgICA4NiwKLSAgICAgIDE1NCwgIDE1NCwgIDE1NCwgICA3MCwgIDE1NywgIDE2MywgIDE2
MywgIDc4MywgIDc4MiwgIDc4MSwKKyAgICAgICAyOCwgICAyOCwgICAyOCwgICAyOCwgICAyOCwg
ICAyOSwgICAzMCwgICAzMSwgICAzMiwgICAzMywKKyAgICAgICAzNCwgICAzNSwgICAzNiwgICAz
NywgICAzOCwgICAzOSwgICA0MCwgICA0MSwgICAyOCwgICA0MiwKKyAgICAgICA0MywgICA0NCwg
ICA0NSwgICA0NiwgICA0NywgICA0OCwgICA0OSwgICA1MCwgICA1MSwgICA1MiwKKyAgICAgICAy
OCwgICA1MywgICAyOCwgICA1NCwgICA1NSwgICA1NiwgICA1NywgICA1OCwgICA1OSwgICA2MCwK
KyAgICAgICA1OCwgICA1OCwgICA1OCwgICA1OCwgICA1OCwgICA1OCwgICA1OCwgICA1OCwgICA1
OCwgICA1OCwKKyAgICAgICA1OCwgICA1OCwgICA1OCwgICA1OCwgICA1OCwgICA1OCwgICA1OCwg
ICA1OCwgICA1OCwgICA1OCwKKworICAgICAgIDU4LCAgIDU4LCAgIDU4LCAgIDU4LCAgIDU4LCAg
IDU4LCAgIDU4LCAgIDYxLCAgIDYxLCAgIDYxLAorICAgICAgIDYxLCAgIDYxLCAgIDYxLCAgIDYx
LCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLAorICAgICAgIDYxLCAgIDYxLCAg
IDU4LCAgIDU4LCAgIDU4LCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLAorICAgICAgIDYx
LCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLAor
ICAgICAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYx
LCAgIDYxLAorICAgICAgIDU4LCAgIDU4LCAgIDU4LCAgIDU4LCAgIDYzLCAgIDY0LCAgIDY1LCAg
IDY4LCAgIDcwLCAgIDcyLAorICAgICAgIDcyLCAgIDcyLCAgIDcyLCAgIDcyLCAgIDcyLCAgIDcy
LCAgIDcyLCAgIDcyLCAgIDcyLCAgMTU0LAorICAgICAgIDc0LCAgIDgxLCAgIDg2LCAgIDg3LCAg
IDcxLCAgIDY5LCAgIDg5LCAgMTU1LCAgIDY2LCAgIDc0LAorICAgICAgMTU3LCAgIDc1LCAgIDc1
LCAgIDc1LCAgIDc1LCAgIDc1LCAgIDc1LCAgIDc1LCAgIDc1LCAgIDc2LAorICAgICAgIDc2LCAg
IDgyLCAgIDc3LCAgIDgzLCAgIDg0LCAgNzkxLCAgIDkwLCAgIDk1LCAgIDkyLCAgIDk2LAorCisg
ICAgICAgNzgsICAgNzcsICAxMjcsICAgOTcsICAgOTgsICAxMDYsICAxMjgsICAxMDcsICAgOTks
ICAgNzgsCisgICAgICAgNzksICAgNzcsICAgOTMsICAgOTQsICAxMDAsICAxMDIsICAxMDgsICAx
MDEsICAxNzQsICAxMDMsCisgICAgICAgNzcsICAxMTUsICAxNzUsICAxMDksICAxMDQsICAgNzgs
ICA3OTIsICAxNTgsICAxMjUsICAxMTYsCisgICAgICAxMDUsICAxMTAsICAxMTgsICAxMTEsICAg
NzgsICAxMTksICAxMTIsICAgNzksICAxMjAsICAxMjEsCisgICAgICAxMTcsICAxMjYsICAxMTMs
ICAxMjIsICAxMjMsICAxMjksICAxMjQsICAxMzIsICAxOTMsICAxMzYsCisgICAgICAxNDMsICAx
NTEsICAxNjYsICAxNDQsICAxNjYsICAxNTIsICAxMzcsICAxMzgsICAxMzAsICAxOTQsCisgICAg
ICAxMzksICAxNDUsICAxMzMsICA1NzQsICAxNTMsICAxMzQsICAxNDAsICAxNDEsICAxNDYsICAx
NDIsCisgICAgICAxNDcsICAxNjAsICAxNjEsICA1NzUsICAxNDgsICAxNjMsICAxNjQsICAyMTQs
ICAxNDksICAxNjUsCisgICAgICA4ODUsICAxNTAsICAxODIsICAgNzQsICAxOTUsICAyMTUsICAx
ODMsICAxODQsICAyMjIsICAyMDUsCisgICAgICAxNjAsICAxNjEsICAyMDYsICAyMDcsICAxNjMs
ICAxNjQsICAyMDgsICAxOTYsICAyMDksICAyMjcsCisKKyAgICAgIDIxOSwgIDIyMywgIDIzNSwg
IDIyNCwgIDE2NSwgICA3NywgIDIyMCwgIDg4NSwgIDIzMSwgIDIzNywKKyAgICAgIDI0NCwgIDI0
NSwgIDI0NiwgICA3OCwgIDc5MywgIDIyOCwgIDIyOSwgIDIzNiwgIDI0OCwgIDc5NCwKKyAgICAg
IDI0NywgIDIzMiwgIDIzOCwgIDI1MywgICA3NywgIDI1NCwgIDI0OSwgIDI1OCwgIDI2MywgIDI1
OCwKKyAgICAgIDE2MywgIDE2NCwgIDI2MCwgIDg4NSwgIDI2MCwgIDg4NSwgIDI3NywgIDI3OCwg
ICA3OCwgIDE2NywKKyAgICAgIDE2NywgIDE2NywgIDE2NywgIDE2NywgIDE2NywgIDE2NywgIDE2
NywgIDE2NywgIDE2NywgIDE2MywKKyAgICAgIDE2NCwgIDI3MSwgIDM0MiwgIDI2MywgIDMwOSwg
IDMxMCwgIDMxMSwgIDMyMywgIDc5NSwgIDI2MiwKKyAgICAgIDM0MywgIDMyNCwgIDM5NywgIDM5
OCwgIDI3MiwgIDM0OSwgIDM1MCwgIDM1MSwgIDI1OSwgIDI1OSwKKyAgICAgIDI1OSwgIDI1OSwg
IDI1OSwgIDI1OSwgIDI1OSwgIDI1OSwgIDI1OSwgIDI1OSwgIDI2MiwgIDg4NSwKKyAgICAgIDc5
NiwgIDg4NSwgIDI2MSwgIDI2MSwgIDI2MSwgIDI2MSwgIDI2MSwgIDI2MSwgIDI2MSwgIDI2MSwK
KyAgICAgIDI2MSwgIDI2MSwgIDg4NSwgIDc5NywgIDg4NSwgIDM2MiwgIDM2MywgIDM2NCwgIDM3
NCwgIDM3NSwKKworICAgICAgMzc2LCAgMzgyLCAgMzgzLCAgMzg0LCAgNzk4LCAgMTYxLCAgMzg2
LCAgMzg3LCAgMzg4LCAgMzk5LAorICAgICAgNDAwLCAgNDAxLCAgNDM4LCAgNDM5LCAgNDQwLCAg
NDYwLCAgNDYxLCAgNDYyLCAgMTY0LCAgNDcyLAorICAgICAgNDczLCAgNDc0LCAgNzk5LCAgODAw
LCAgMTYxLCAgNDc1LCAgNDc2LCAgNDc3LCAgNDc4LCAgNDc5LAorICAgICAgNDgwLCAgNDYzLCAg
NDY0LCAgNTIyLCAgNTIzLCAgNTI0LCAgNTc2LCAgMTY0LCAgNTUwLCAgNTUxLAorICAgICAgNTUy
LCAgNTkyLCAgNTkzLCAgNTk0LCAgODAxLCAgODAyLCAgNTc3LCAgODAzLCAgODA0LCAgNTI1LAor
ICAgICAgNTI2LCAgNjI1LCAgNjI2LCAgNjI3LCAgNTUzLCAgNTU0LCAgNjcxLCAgNTk1LCAgNTk2
LCAgODA1LAorICAgICAgNTk3LCAgNjQ2LCAgNjQ3LCAgNjQ4LCAgNjczLCAgODA2LCAgNjcyLCAg
NjI4LCAgNjI5LCAgODA3LAorICAgICAgODA4LCAgNjc0LCAgNzAzLCAgNjc1LCAgNjc2LCAgNzI0
LCAgODA5LCAgNjQ5LCAgNjUwLCAgNzA0LAorICAgICAgODEwLCAgNzA1LCAgNzI1LCAgODExLCAg
NzI2LCAgODEyLCAgODEzLCAgODE0LCAgODE1LCAgODE2LAorICAgICAgODE3LCAgODE4LCAgODE5
LCAgODIwLCAgODIxLCAgODIyLCAgODIzLCAgODI0LCAgODI1LCAgODI2LAorCisgICAgICA4Mjcs
ICA4MjgsICA4MjksICA4MzAsICA4MzEsICA4MzIsICA4MzMsICA4MzQsICA4MzUsICA4MzYsCisg
ICAgICA4MzcsICA4MzgsICA4MzksICA4NDAsICA4NDEsICA4NDIsICA4NDMsICA4NDQsICA4NDUs
ICA4NDYsCisgICAgICA4NDcsICA4NDgsICA4NDksICA4NTAsICA4NTEsICA4NTIsICA4NTMsICA4
NTQsICA4NTUsICA4NTYsCisgICAgICA4NTcsICA4NTgsICA4NTksICA4NjAsICA4NjEsICA4NjIs
ICA4NjMsICA4NjQsICA4NjUsICA4NjYsCisgICAgICA4NjcsICA4NjgsICA4NjksICA4NzAsICA4
NzEsICA4NzIsICA4NzMsICA4NzQsICA4NzUsICA4NzYsCisgICAgICA4NzcsICA4NzgsICA4Nzks
ICA4ODAsICA4ODEsICA4ODIsICA4ODMsICA4ODQsICAgNzYsICAgNzYsCisgICAgICA3OTAsICAg
NzYsICA3ODksICA3ODgsICAgNzYsICAgODgsICAgODgsICAgODgsICAgODgsICAgODgsCisgICAg
ICAgODgsICAxNTksICAxNTksICAxNTksICAxNTksICAxNTksICAxNTksICAgNzIsICA3ODcsICAg
NzIsCisgICAgICAgNzIsICAxNjIsICA3ODYsICAxNjIsICAxNjIsICAxNjcsICA3ODUsICAxNjcs
ICAxNjgsICAxNjgsCisgICAgICAxNjgsICAxNjgsICAyNTksICA3ODQsICAyNTksICAyNjEsICA3
ODMsICAyNjEsICA3ODIsICA3ODEsCisKICAgICAgIDc4MCwgIDc3OSwgIDc3OCwgIDc3NywgIDc3
NiwgIDc3NSwgIDc3NCwgIDc3MywgIDc3MiwgIDc3MSwKICAgICAgIDc3MCwgIDc2OSwgIDc2OCwg
IDc2NywgIDc2NiwgIDc2NSwgIDc2NCwgIDc2MywgIDc2MiwgIDc2MSwKICAgICAgIDc2MCwgIDc1
OSwgIDc1OCwgIDc1NywgIDc1NiwgIDc1NSwgIDc1NCwgIDc1MywgIDc1MiwgIDc1MSwKICAgICAg
IDc1MCwgIDc0OSwgIDc0OCwgIDc0NywgIDc0NiwgIDc0NSwgIDc0NCwgIDc0MywgIDc0MiwgIDc0
MSwKICAgICAgIDc0MCwgIDczOSwgIDczOCwgIDczNywgIDczNiwgIDczNSwgIDczNCwgIDczMywg
IDczMiwgIDczMSwKLSAgICAgIDczMCwgIDcyOSwgIDcyOCwgIDcyNywgIDcyNiwgIDcyNSwgIDcy
NCwgIDcyMywgIDcyMiwgIDcyMSwKLSAgICAgIDcyMCwgIDcxOSwgIDcxOCwgIDcxNywgIDcxNiwg
IDcxNSwgIDcxNCwgIDcxMywgIDcxMiwgIDcxMSwKLSAgICAgIDcxMCwgIDcwOSwgIDcwOCwgIDcw
NywgIDcwNiwgIDcwNSwgIDcwNCwgIDcwMywgIDcwMiwgIDcwMSwKLQotICAgICAgNzAwLCAgNjk5
LCAgNjk4LCAgNjk3LCAgNjk2LCAgNjk1LCAgNjk0LCAgNjkzLCAgNjkyLCAgNjkxLAotICAgICAg
NjkwLCAgNjg5LCAgNjg1LCAgNjg0LCAgNjgzLCAgNjgyLCAgNjgxLCAgNjgwLCAgNjc5LCAgNjc4
LAotICAgICAgNjc3LCAgNjc2LCAgNjc1LCAgNjc0LCAgNjczLCAgNjcyLCAgNjcxLCAgNjcwLCAg
NjY5LCAgNjY1LAotICAgICAgNjY0LCAgNjYzLCAgNjYyLCAgNjYxLCAgNjYwLCAgNjU5LCAgNjU4
LCAgNjU3LCAgNjU2LCAgNjU1LAotICAgICAgNjU0LCAgNjUzLCAgNjUyLCAgNjUxLCAgNjUwLCAg
NjQ5LCAgNjQ4LCAgNjQ3LCAgNjQ2LCAgNjQ1LAotICAgICAgNjQ0LCAgNjQzLCAgNjQyLCAgNjM1
LCAgNjM0LCAgNjMzLCAgNjMyLCAgNjMxLCAgNjMwLCAgNjI5LAotICAgICAgNjI4LCAgNjI3LCAg
NjI2LCAgNjI1LCAgNjI0LCAgNjIzLCAgNjIyLCAgNjIxLCAgNjIwLCAgNjE5LAotICAgICAgNjEz
LCAgNjEyLCAgNjExLCAgNjEwLCAgNjA5LCAgNjA4LCAgNjA3LCAgNjA2LCAgNjA1LCAgNjA0LAot
ICAgICAgNjAzLCAgNjAyLCAgNjAxLCAgNjAwLCAgNTk5LCAgNTkzLCAgNTkyLCAgNTkxLCAgNTkw
LCAgNTg5LAotICAgICAgNTg4LCAgNTg3LCAgNTg2LCAgNTg1LCAgNTg0LCAgNTgzLCAgNTgyLCAg
NTgxLCAgNTgwLCAgNTc5LAotCi0gICAgICA1NzgsICA1NzcsICA1NzYsICA1NzUsICA1NzQsICA1
NzMsICA1NzIsICA1NzEsICA1NzAsICA1NjksCi0gICAgICA1NjIsICA1NjEsICA1NjAsICA1NTks
ICA1NTgsICA1NTcsICA1NTYsICA1NTUsICA1NTQsICA1NTMsCi0gICAgICA1NTIsICA1NTEsICA1
NTAsICA1NDUsICA1NDQsICA1NDMsICA1NDIsICA1NDEsICA1NDAsICA1MzksCi0gICAgICA1Mzgs
ICA1MzcsICA1MzYsICA1MzUsICA1MzQsICA1MzMsICA1MzIsICA1MzEsICA1MzAsICA1MjksCi0g
ICAgICA1MjMsICA1MjIsICA1MjEsICA1MjAsICA1MTksICA1MTgsICA1MTcsICA1MTYsICA1MTUs
ICA1MTQsCi0gICAgICA1MTMsICA1MTIsICA1MTEsICA1MTAsICA1MDksICA1MDgsICA1MDcsICA1
MDYsICA1MDUsICA1MDQsCi0gICAgICA1MDMsICA0OTcsICA0OTYsICA0OTUsICA0OTQsICA0OTMs
ICA0OTIsICA0OTEsICA0OTAsICA0ODksCi0gICAgICA0ODgsICA0ODcsICA0ODYsICA0ODUsICA0
ODQsICA0ODMsICA0ODIsICA0ODEsICA0ODAsICA0NzksCi0gICAgICA0NzgsICA0NzcsICA0NzYs
ICA0NzUsICA0NzQsICA0NzMsICA0NzIsICA0NzEsICA0NzAsICA0NjksCi0gICAgICA0NjgsICA0
NjcsICA0NjYsICA0NjUsICA0NjQsICA0NjMsICA0NjIsICA0NjEsICA0NjAsICA0NTAsCi0KLSAg
ICAgIDQ0OSwgIDQ0OCwgIDQ0NywgIDQ0NiwgIDQ0MCwgIDQzOSwgIDQzOCwgIDQzNywgIDQzNiwg
IDQzNSwKLSAgICAgIDQzNCwgIDQzMywgIDQzMiwgIDQzMSwgIDQzMCwgIDQyOSwgIDQyOCwgIDQy
NywgIDQyNiwgIDQyNSwKLSAgICAgIDQyNCwgIDQyMCwgIDQxOSwgIDQxOCwgIDQxNywgIDQxNiwg
IDQxNSwgIDQxNCwgIDQxMywgIDQxMiwKKyAgICAgIDczMCwgIDcyOSwgIDcyOCwgIDcyNywgIDcy
MywgIDcyMiwgIDcyMSwgIDcyMCwgIDcxOSwgIDcxOCwKKyAgICAgIDcxNywgIDcxNiwgIDcxNSwg
IDcxNCwgIDcxMywgIDcxMiwgIDcxMSwgIDcxMCwgIDcwOSwgIDcwOCwKKyAgICAgIDcwNywgIDcw
NiwgIDcwMiwgIDcwMSwgIDcwMCwgIDY5OSwgIDY5OCwgIDY5NywgIDY5NiwgIDY5NSwKKyAgICAg
IDY5NCwgIDY5MywgIDY5MiwgIDY5MSwgIDY5MCwgIDY4OSwgIDY4OCwgIDY4NywgIDY4NiwgIDY4
NSwKKyAgICAgIDY4NCwgIDY4MywgIDY4MiwgIDY4MSwgIDY4MCwgIDY3OSwgIDY3OCwgIDY3Nywg
IDY3MCwgIDY2OSwKKworICAgICAgNjY4LCAgNjY3LCAgNjY2LCAgNjY1LCAgNjY0LCAgNjYzLCAg
NjYyLCAgNjYxLCAgNjYwLCAgNjU5LAorICAgICAgNjU4LCAgNjU3LCAgNjU2LCAgNjU1LCAgNjU0
LCAgNjUzLCAgNjUyLCAgNjUxLCAgNjQ1LCAgNjQ0LAorICAgICAgNjQzLCAgNjQyLCAgNjQxLCAg
NjQwLCAgNjM5LCAgNjM4LCAgNjM3LCAgNjM2LCAgNjM1LCAgNjM0LAorICAgICAgNjMzLCAgNjMy
LCAgNjMxLCAgNjMwLCAgNjI0LCAgNjIzLCAgNjIyLCAgNjIxLCAgNjIwLCAgNjE5LAorICAgICAg
NjE4LCAgNjE3LCAgNjE2LCAgNjE1LCAgNjE0LCAgNjEzLCAgNjEyLCAgNjExLCAgNjEwLCAgNjA5
LAorICAgICAgNjA4LCAgNjA3LCAgNjA2LCAgNjA1LCAgNjA0LCAgNjAzLCAgNjAyLCAgNjAxLCAg
NjAwLCAgNTk5LAorICAgICAgNTk4LCAgNTkxLCAgNTkwLCAgNTg5LCAgNTg4LCAgNTg3LCAgNTg2
LCAgNTg1LCAgNTg0LCAgNTgzLAorICAgICAgNTgyLCAgNTgxLCAgNTgwLCAgNTc5LCAgNTc4LCAg
NTczLCAgNTcyLCAgNTcxLCAgNTcwLCAgNTY5LAorICAgICAgNTY4LCAgNTY3LCAgNTY2LCAgNTY1
LCAgNTY0LCAgNTYzLCAgNTYyLCAgNTYxLCAgNTYwLCAgNTU5LAorICAgICAgNTU4LCAgNTU3LCAg
NTU2LCAgNTU1LCAgNTQ5LCAgNTQ4LCAgNTQ3LCAgNTQ2LCAgNTQ1LCAgNTQ0LAorCisgICAgICA1
NDMsICA1NDIsICA1NDEsICA1NDAsICA1MzksICA1MzgsICA1MzcsICA1MzYsICA1MzUsICA1MzQs
CisgICAgICA1MzMsICA1MzIsICA1MzEsICA1MzAsICA1MjksICA1MjgsICA1MjcsICA1MjEsICA1
MjAsICA1MTksCisgICAgICA1MTgsICA1MTcsICA1MTYsICA1MTUsICA1MTQsICA1MTMsICA1MTIs
ICA1MTEsICA1MTAsICA1MDksCisgICAgICA1MDgsICA1MDcsICA1MDYsICA1MDUsICA1MDQsICA1
MDMsICA1MDIsICA1MDEsICA1MDAsICA0OTksCisgICAgICA0OTgsICA0OTcsICA0OTYsICA0OTUs
ICA0OTQsICA0OTMsICA0OTIsICA0OTEsICA0OTAsICA0ODksCisgICAgICA0ODgsICA0ODcsICA0
ODYsICA0ODUsICA0ODQsICA0ODMsICA0ODIsICA0ODEsICA0NzEsICA0NzAsCisgICAgICA0Njks
ICA0NjgsICA0NjcsICA0NjYsICA0NjUsICA0NTksICA0NTgsICA0NTcsICA0NTYsICA0NTUsCisg
ICAgICA0NTQsICA0NTMsICA0NTIsICA0NTEsICA0NTAsICA0NDksICA0NDgsICA0NDcsICA0NDYs
ICA0NDUsCisgICAgICA0NDQsICA0NDMsICA0NDIsICA0NDEsICA0MzcsICA0MzYsICA0MzUsICA0
MzQsICA0MzMsICA0MzIsCisgICAgICA0MzEsICA0MzAsICA0MjksICA0MjgsICA0MjcsICA0MjYs
ICA0MjUsICA0MjQsICA0MjMsICA0MjIsCisKKyAgICAgIDQyMSwgIDQyMCwgIDQxOSwgIDQxOCwg
IDQxNywgIDQxNiwgIDQxNSwgIDQxNCwgIDQxMywgIDQxMiwKICAgICAgIDQxMSwgIDQxMCwgIDQw
OSwgIDQwOCwgIDQwNywgIDQwNiwgIDQwNSwgIDQwNCwgIDQwMywgIDQwMiwKLSAgICAgIDQwMSwg
IDQwMCwgIDM5OSwgIDM5OCwgIDM5NywgIDM5NiwgIDM5NSwgIDM5NCwgIDM5MywgIDM5MiwKLSAg
ICAgIDM5MSwgIDM5MCwgIDM4OSwgIDM4OCwgIDM4NywgIDM4NiwgIDM4MiwgIDM4MSwgIDM4MCwg
IDM3OSwKLSAgICAgIDM3OCwgIDM3NywgIDM3NiwgIDM3NSwgIDM3MSwgIDM2NywgIDM2NiwgIDM2
NSwgIDM2NCwgIDM2MywKLSAgICAgIDM1OSwgIDM1OCwgIDM1NywgIDM1NiwgIDM1NSwgIDM1NCwg
IDM1MywgIDM1MiwgIDM1MSwgIDM0NywKLSAgICAgIDM0NiwgIDM0NSwgIDM0NCwgIDM0MywgIDM0
MiwgIDM0MSwgIDM0MCwgIDMzNiwgIDMzNSwgIDMzNCwKLSAgICAgIDMzMywgIDMzMiwgIDMyOSwg
IDMyOCwgIDMyNywgIDMyNiwgIDMyNSwgIDMyNCwgIDMyMywgIDMyMiwKLQotICAgICAgMzIxLCAg
MzIwLCAgMzE5LCAgMzE4LCAgMzE3LCAgMzE2LCAgMzE1LCAgMzE0LCAgMzExLCAgMzEwLAotICAg
ICAgMzA5LCAgMzA4LCAgMzA3LCAgMzA2LCAgMzA1LCAgMzA0LCAgMzAzLCAgMzAyLCAgMzAxLCAg
Mjk3LAotICAgICAgMjk2LCAgMjk1LCAgMjk0LCAgMjkzLCAgMjkyLCAgMjkxLCAgMjkwLCAgMjg5
LCAgMjg4LCAgMjg3LAotICAgICAgMjg2LCAgMjg1LCAgMjg0LCAgMjgzLCAgMjgyLCAgMjgxLCAg
MjgwLCAgMjc5LCAgMjc4LCAgMjc3LAotICAgICAgMjc2LCAgMjc1LCAgMjc0LCAgMjczLCAgMjcy
LCAgMjcxLCAgMjcwLCAgMjY5LCAgMjY2LCAgMjY1LAotICAgICAgMjY0LCAgMjYzLCAgMjYwLCAg
MjU5LCAgMjU4LCAgMjU3LCAgMjU2LCAgMjU1LCAgMjQ4LCAgMjQ3LAotICAgICAgMjQ0LCAgMjQz
LCAgMjQyLCAgMjM1LCAgMjM0LCAgMjMzLCAgMjMyLCAgMjMxLCAgMjI2LCAgMjI1LAotICAgICAg
MjI0LCAgMjIzLCAgMjE5LCAgMjE4LCAgMjE0LCAgMjExLCAgMjEwLCAgMjA5LCAgMjA2LCAgMjA1
LAotICAgICAgMjA0LCAgMTk4LCAgMTk3LCAgMTk2LCAgMTk1LCAgMTk0LCAgMTkzLCAgMTkyLCAg
MTkxLCAgMTg2LAotICAgICAgMTg1LCAgMTg0LCAgMTgzLCAgMTgyLCAgMTgxLCAgMTgwLCAgMTc5
LCAgMTc1LCAgMTc0LCAgMTczLAotCi0gICAgICAxNzIsICAxNzEsICAxNzAsICAxNjcsICAxNjYs
ICAxNjUsICAxNjQsICAxMzEsICAxMjcsICAxMTEsCi0gICAgICAgODMsICAgNzgsICAgNzEsICAg
NjUsICAgNjAsICA4MTksICAgIDUsICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTks
ICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4
MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTks
Ci0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4
MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTks
ICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4
MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTks
ICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4
MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTkKKyAgICAgIDM5NiwgIDM5NSwg
IDM5NCwgIDM5MywgIDM5MiwgIDM5MSwgIDM5MCwgIDM4OSwgIDM4NSwgIDM4MSwKKyAgICAgIDM4
MCwgIDM3OSwgIDM3OCwgIDM3NywgIDM3MywgIDM3MiwgIDM3MSwgIDM3MCwgIDM2OSwgIDM2OCwK
KyAgICAgIDM2NywgIDM2NiwgIDM2NSwgIDM2MSwgIDM2MCwgIDM1OSwgIDM1OCwgIDM1NywgIDM1
NiwgIDM1NSwKKyAgICAgIDM1NCwgIDM1MywgIDM1MiwgIDM0OCwgIDM0NywgIDM0NiwgIDM0NSwg
IDM0NCwgIDM0MSwgIDM0MCwKKyAgICAgIDMzOSwgIDMzOCwgIDMzNywgIDMzNiwgIDMzNSwgIDMz
NCwgIDMzMywgIDMzMiwgIDMzMSwgIDMzMCwKKyAgICAgIDMyOSwgIDMyOCwgIDMyNywgIDMyNiwg
IDMyNSwgIDMyMiwgIDMyMSwgIDMyMCwgIDMxOSwgIDMxOCwKKyAgICAgIDMxNywgIDMxNiwgIDMx
NSwgIDMxNCwgIDMxMywgIDMxMiwgIDMwOCwgIDMwNywgIDMwNiwgIDMwNSwKKyAgICAgIDMwNCwg
IDMwMywgIDMwMiwgIDMwMSwgIDMwMCwgIDI5OSwgIDI5OCwgIDI5NywgIDI5NiwgIDI5NSwKKwor
ICAgICAgMjk0LCAgMjkzLCAgMjkyLCAgMjkxLCAgMjkwLCAgMjg5LCAgMjg4LCAgMjg3LCAgMjg2
LCAgMjg1LAorICAgICAgMjg0LCAgMjgzLCAgMjgyLCAgMjgxLCAgMjgwLCAgMjc5LCAgMjc2LCAg
Mjc1LCAgMjc0LCAgMjczLAorICAgICAgMjcwLCAgMjY5LCAgMjY4LCAgMjY3LCAgMjY2LCAgMjY1
LCAgMjY0LCAgMjU3LCAgMjU2LCAgMjU1LAorICAgICAgMjUyLCAgMjUxLCAgMjUwLCAgMjQzLCAg
MjQyLCAgMjQxLCAgMjQwLCAgMjM5LCAgMjM0LCAgMjMzLAorICAgICAgMjMwLCAgMjI2LCAgMjI1
LCAgMjIxLCAgMjE4LCAgMjE3LCAgMjE2LCAgMjEzLCAgMjEyLCAgMjExLAorICAgICAgMjEwLCAg
MjA0LCAgMjAzLCAgMjAyLCAgMjAxLCAgMjAwLCAgMTk5LCAgMTk4LCAgMTk3LCAgMTkyLAorICAg
ICAgMTkxLCAgMTkwLCAgMTg5LCAgMTg4LCAgMTg3LCAgMTg2LCAgMTg1LCAgMTgxLCAgMTgwLCAg
MTc5LAorICAgICAgMTc4LCAgMTc3LCAgMTc2LCAgMTczLCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5
LCAgMTU2LCAgMTM1LAorICAgICAgMTMxLCAgMTE0LCAgIDkxLCAgIDg1LCAgIDgwLCAgIDczLCAg
IDY3LCAgIDYyLCAgODg1LCAgICA1LAorICAgICAgODg1LCAgODg1LCAgODg1LCAgODg1LCAgODg1
LCAgODg1LCAgODg1LCAgODg1LCAgODg1LCAgODg1LAorCisgICAgICA4ODUsICA4ODUsICA4ODUs
ICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsCisgICAgICA4ODUsICA4
ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsCisgICAg
ICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4
ODUsCisgICAgICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUs
ICA4ODUsICA4ODUsCisgICAgICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4
ODUsICA4ODUsICA4ODUsICA4ODUsCisgICAgICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUs
ICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsCisgICAgICA4ODUsICA4ODUsICA4ODUsICA4
ODUsICA4ODUsICA4ODUsICA4ODUKICAgICB9IDsKIAotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQx
Nl90IHl5X2Noa1sxMDkwXSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzEx
NjhdID0KICAgICB7ICAgMCwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKQEAgLTg2OSw3ICs5MDMsNyBAQCBz
dGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzEwOTBdID0KICAgICAgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwKLSAgICAgICAgMSwgICAgMSwgICAgMywgICAgMywgICAgMywgICAgMywgICAg
MywgICAgMywgICAgMywgICAgMywKKyAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMywgICAgMywgICAgMywKICAgICAgICAgMywgICAgMywgICAgMywgICAg
MywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywKICAgICAgICAgMywgICAgMywg
ICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywKIApAQCAtODc3
LDExNCArOTExLDEyMyBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzEwOTBd
ID0KICAgICAgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywg
ICAgMywgICAgMywKICAgICAgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAg
MywgICAgMywgICAgMywgICAgMywKICAgICAgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywg
ICAgMywgICAgMywgICAgMywgICAgMywgICAgMywKKyAgICAgICAgMywgICAgMywgICAgMywgICAg
MywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywKICAgICAgICAgMywgICAgMywg
ICAgMywgICAgMywgICAxMCwgICAxMCwgICAxMSwgICAxNSwgICAxNywgICAxOCwKLSAgICAgICAx
OCwgICAxOCwgICAxOCwgICAxOCwgICAxOCwgICAxOCwgICAyNiwgICAyNiwgICAyNCwgICA1MSwK
LSAgICAgICA0MiwgICAxNywgICAxNSwgICAzMSwgICA0MiwgICAxMSwgICAyMCwgICA1MSwgICAy
MCwgICAyMCwKLSAgICAgICAyMCwgICAyMCwgICAyMCwgICAyMCwgICAyMCwgICAyNCwgICAzMiwg
ICAyNCwgICAyNCwgIDc2NiwKLSAgICAgICAzMywgICAzMSwgICAzMywgICA0MSwgICAzNCwgICAy
MCwgICAzMywgICAzNiwgICAzNCwgICAzNiwKLSAgICAgICAzMiwgICAzMiwgICAyMCwgICAyMCwg
ICAzNCwgICAzNSwgICA0MSwgICAzNCwgICAzNiwgICAzNSwKLQotICAgICAgIDQwLCAgMTA3LCAg
IDIwLCAgIDQwLCAgIDM1LCAgIDQzLCAgIDQwLCAgIDQwLCAgIDUzLCAgIDkxLAotICAgICAgIDM1
LCAgIDQwLCAgMTA3LCAgIDkxLCAgIDQwLCAgNzY3LCAgIDIwLCAgIDQ1LCAgIDQzLCAgIDIwLAot
ICAgICAgIDIxLCAgIDM3LCAgIDIxLCAgIDIxLCAgIDIxLCAgIDIxLCAgIDIxLCAgIDIxLCAgIDIx
LCAgIDM3LAotICAgICAgIDM5LCAgIDM3LCAgIDQ1LCAgMTIyLCAgIDM3LCAgIDQ1LCAgMTI2LCAg
IDQ3LCAgIDM5LCAgIDIxLAotICAgICAgIDM3LCAgMTIyLCAgMTI2LCAgNzY4LCAgIDQ3LCAgIDQ3
LCAgIDIxLCAgIDQ4LCAgIDQ3LCAgIDM5LAotICAgICAgIDQ4LCAgMTQzLCAgMTQzLCAgIDUzLCAg
IDQ3LCAgIDQ3LCAgIDIxLCAgIDQ3LCAgIDQ4LCAgIDUwLAotICAgICAgIDQ5LCAgIDcwLCAgIDcw
LCAgIDUwLCAgIDQ5LCAgIDQ4LCAgIDcyLCAgIDcyLCAgIDQ5LCAgMTQ0LAotICAgICAgIDIxLCAg
IDQ5LCAgIDUwLCAgIDczLCAgIDczLCAgMTc4LCAgMTc4LCAgMTQ0LCAgIDcwLCAgIDcwLAotICAg
ICAgIDc1LCAgNzY5LCAgIDc1LCAgIDcyLCAgIDcyLCAgIDc1LCAgIDc1LCAgIDc1LCAgIDc1LCAg
IDc1LAotICAgICAgIDc1LCAgIDc1LCAgMTA4LCAgMTM2LCAgIDk4LCAgMTYzLCAgMTI4LCAgIDcz
LCAgIDk4LCAgIDk4LAotCi0gICAgICAgNzMsICAxMzEsICAxMzcsICAxMTgsICA3NzAsICAxMDgs
ICAxMTgsICAxMTgsICAxMzYsICAxMjgsCi0gICAgICAxMTgsICAxMjgsICAxMTgsICAxNDUsICAx
NDksICAxMzcsICAxNDksICAxMzEsICAxMzEsICAxNjMsCi0gICAgICAxNTUsICAxNDUsICAxNTUs
ICAxNTcsICAxNTcsICAxNTUsICAxNTUsICAxNTUsICAxNTUsICAxNTUsCi0gICAgICAxNTUsICAx
NTUsICAyMDksICAyMDksICAyMDksICA3NzMsICA3NzQsICAxNTgsICA3NzcsICAxNTgsCi0gICAg
ICAxNTcsICAxNTcsICAxNTgsICAxNTgsICAxNTgsICAxNTgsICAxNTgsICAxNTgsICAxNTgsICAx
NjEsCi0gICAgICAxNjEsICAxNjEsICAxNjEsICAxNjEsICAxNjEsICAxNjEsICAxNjIsICAxNjIs
ICAxNjIsICAxNjIsCi0gICAgICAxNjIsICAxNjIsICAxNjIsICAxNzMsICAyMjEsICAyMzgsICA3
NzgsICA3ODAsICAyMjEsICAyNDQsCi0gICAgICAyNDQsICAyNDQsICA3ODEsICAyMzgsICAxNjIs
ICA3ODIsICAxNzMsICAyNDksICAyNDksICAyNDksCi0gICAgICAyNDksICAyNDksICAyNDksICAy
NDksICAyNTAsICAyNTAsICAyNTAsICAyNTAsICAyNTAsICAyNTAsCi0gICAgICAyNTAsICAxNjIs
ICAyNTEsICAyNTEsICAyNTEsICAyNTEsICAyNTEsICAyNTEsICAyNTEsICAyNjAsCi0KLSAgICAg
IDI2MCwgIDI2MCwgIDI1MCwgIDI1MiwgIDI1MiwgIDI1MiwgIDI1MiwgIDI1MiwgIDI1MiwgIDI1
MiwKLSAgICAgIDI3MiwgIDI3MiwgIDI3MiwgIDI4MSwgIDI4MSwgIDI4MSwgIDI4NSwgIDI4NSwg
IDI4NSwgIDI1MCwKLSAgICAgIDc4NCwgIDI1MiwgIDI5NCwgIDI5NCwgIDI5NCwgIDMzNSwgIDMz
NSwgIDMzNSwgIDM3NiwgIDM3NiwKLSAgICAgIDM3NiwgIDM4NywgIDM4NywgIDM4NywgIDM4OCwg
IDM4OCwgIDM4OCwgIDc4NSwgIDI1MiwgIDc4OCwKLSAgICAgIDc4OSwgIDM3NiwgIDM3NiwgIDM4
OSwgIDM4OSwgIDM4OSwgIDQ0MCwgIDQ0MCwgIDQ0MCwgIDQ4MywKLSAgICAgIDQ4MywgIDQ4Mywg
IDc5MCwgIDc5MSwgIDUwMywgIDUwNCwgIDUyMCwgIDUyMCwgIDUyMCwgIDQ0MCwKLSAgICAgIDQ0
MCwgIDYwMywgIDQ4MywgIDQ4MywgIDUwMywgIDUwNCwgIDU1NCwgIDU1NCwgIDU1NCwgIDUyMCwK
LSAgICAgIDUyMCwgIDYwMywgIDUyMCwgIDU3NywgIDU3NywgIDU3NywgIDYzMSwgIDc5MiwgIDc5
MywgIDU1NCwKLSAgICAgIDU1NCwgIDYwNCwgIDc5NSwgIDYzMSwgIDc5NiwgIDYzMSwgIDU3Nywg
IDU3NywgIDYwNCwgIDY1MiwKLSAgICAgIDYwNCwgIDYwNCwgIDc5NywgIDc5OCwgIDc5OSwgIDgw
MCwgIDY1MiwgIDgwMiwgIDY1MiwgIDgwMywKLQotICAgICAgODA0LCAgODA2LCAgODEwLCAgODEx
LCAgODEyLCAgODE0LCAgODE1LCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIxLCAgODIxLCAg
ODIxLCAgODIyLCAgODIzLCAgODI0LCAgODI0LCAgNzY1LCAgNzY0LCAgNzYzLAotICAgICAgNzYy
LCAgNzYxLCAgNzYwLCAgNzU3LCAgNzU2LCAgNzU1LCAgNzU0LCAgNzUzLCAgNzUyLCAgNzUxLAot
ICAgICAgNzUwLCAgNzQ5LCAgNzQ4LCAgNzQ1LCAgNzQ0LCAgNzQxLCAgNzQwLCAgNzM5LCAgNzM4
LCAgNzM3LAotICAgICAgNzM2LCAgNzM0LCAgNzMzLCAgNzMyLCAgNzMxLCAgNzMwLCAgNzI4LCAg
NzI2LCAgNzIyLCAgNzIxLAotICAgICAgNzIwLCAgNzE5LCAgNzE4LCAgNzE2LCAgNzE1LCAgNzE0
LCAgNzEzLCAgNzEyLCAgNzExLCAgNzEwLAotICAgICAgNzA5LCAgNzA4LCAgNzA3LCAgNzA2LCAg
NzA1LCAgNzA0LCAgNzAyLCAgNzAxLCAgNzAwLCAgNjk5LAotICAgICAgNjk4LCAgNjk3LCAgNjk2
LCAgNjk1LCAgNjk0LCAgNjkyLCAgNjkxLCAgNjkwLCAgNjg5LCAgNjg4LAotICAgICAgNjg3LCAg
Njg2LCAgNjg1LCAgNjg0LCAgNjgzLCAgNjgyLCAgNjgxLCAgNjgwLCAgNjc5LCAgNjc4LAotICAg
ICAgNjc3LCAgNjc2LCAgNjc1LCAgNjc0LCAgNjczLCAgNjcyLCAgNjcxLCAgNjcwLCAgNjY5LCAg
NjY4LAotCi0gICAgICA2NjcsICA2NjYsICA2NjUsICA2NjMsICA2NjIsICA2NjEsICA2NjAsICA2
NTksICA2NTgsICA2NTcsCi0gICAgICA2NTUsICA2NTQsICA2NTEsICA2NDksICA2NDgsICA2NDcs
ICA2NDUsICA2NDQsICA2NDMsICA2NDIsCi0gICAgICA2NDEsICA2NDAsICA2MzksICA2MzgsICA2
MzcsICA2MzYsICA2MzUsICA2MzQsICA2MzMsICA2MzAsCi0gICAgICA2MjksICA2MjgsICA2Mjcs
ICA2MjYsICA2MjUsICA2MjMsICA2MjIsICA2MjEsICA2MjAsICA2MTgsCi0gICAgICA2MTcsICA2
MTYsICA2MTUsICA2MTQsICA2MTMsICA2MTIsICA2MTEsICA2MTAsICA2MDksICA2MDgsCi0gICAg
ICA2MDcsICA2MDYsICA2MDUsICA2MDAsICA1OTgsICA1OTcsICA1OTYsICA1OTUsICA1OTQsICA1
OTAsCi0gICAgICA1ODksICA1ODgsICA1ODcsICA1ODYsICA1ODUsICA1ODQsICA1ODMsICA1ODIs
ICA1ODAsICA1NzksCi0gICAgICA1NzUsICA1NzQsICA1NzIsICA1NzEsICA1NjksICA1NjgsICA1
NjcsICA1NjYsICA1NjUsICA1NjQsCi0gICAgICA1NjMsICA1NTksICA1NTgsICA1NTcsICA1NTUs
ICA1NTMsICA1NTIsICA1NTEsICA1NTAsICA1NDksCi0gICAgICA1NDgsICA1NDcsICA1NDYsICA1
NDUsICA1NDQsICA1NDIsICA1NDEsICA1MzYsICA1MzUsICA1MzQsCi0KLSAgICAgIDUzMywgIDUz
MSwgIDUzMCwgIDUyOCwgIDUyNywgIDUyNiwgIDUyNSwgIDUyNCwgIDUyMiwgIDUyMSwKLSAgICAg
IDUxOSwgIDUxOCwgIDUxNywgIDUxNiwgIDUxNSwgIDUxNCwgIDUxMywgIDUxMiwgIDUxMCwgIDUw
OSwKLSAgICAgIDUwOCwgIDUwNywgIDUwNiwgIDUwMiwgIDUwMSwgIDUwMCwgIDQ5OSwgIDQ5OCwg
IDQ5NywgIDQ5NCwKLSAgICAgIDQ5MywgIDQ5MiwgIDQ5MSwgIDQ5MCwgIDQ4OSwgIDQ4OCwgIDQ4
NywgIDQ4NiwgIDQ4NSwgIDQ4NCwKLSAgICAgIDQ4MiwgIDQ4MSwgIDQ3OCwgIDQ3MywgIDQ3MSwg
IDQ3MCwgIDQ2OSwgIDQ2NywgIDQ2NiwgIDQ2MywKLSAgICAgIDQ2MiwgIDQ2MSwgIDQ2MCwgIDQ0
OSwgIDQ0OCwgIDQ0NywgIDQ0NSwgIDQ0NCwgIDQ0MywgIDQ0MiwKLSAgICAgIDQ0MSwgIDQzOCwg
IDQzNiwgIDQzNSwgIDQzNCwgIDQzMiwgIDQzMSwgIDQzMCwgIDQyOSwgIDQyNywKLSAgICAgIDQy
NSwgIDQyNCwgIDQxOSwgIDQxOCwgIDQxNiwgIDQxNSwgIDQxNCwgIDQxMywgIDQxMiwgIDQxMSwK
LSAgICAgIDQxMCwgIDQwOSwgIDQwOCwgIDQwNywgIDQwNiwgIDQwNCwgIDQwMywgIDQwMiwgIDQw
MSwgIDQwMCwKLSAgICAgIDM5OSwgIDM5OCwgIDM5NiwgIDM5NSwgIDM5NCwgIDM5MywgIDM5Miwg
IDM5MSwgIDM5MCwgIDM4NiwKLQotICAgICAgMzgyLCAgMzgxLCAgMzgwLCAgMzc3LCAgMzc1LCAg
MzY1LCAgMzYzLCAgMzU5LCAgMzU4LCAgMzU3LAotICAgICAgMzU2LCAgMzU0LCAgMzUzLCAgMzUx
LCAgMzQ2LCAgMzQ1LCAgMzQ0LCAgMzQzLCAgMzQyLCAgMzQxLAotICAgICAgMzM2LCAgMzM0LCAg
MzMzLCAgMzMyLCAgMzMxLCAgMzMwLCAgMzI4LCAgMzI3LCAgMzI0LCAgMzIzLAotICAgICAgMzIy
LCAgMzIxLCAgMzIwLCAgMzE5LCAgMzE4LCAgMzE3LCAgMzE2LCAgMzE1LCAgMzE0LCAgMzEzLAot
ICAgICAgMzEyLCAgMzExLCAgMzEwLCAgMzA5LCAgMzA4LCAgMzA3LCAgMzA2LCAgMzA1LCAgMzA0
LCAgMzAzLAotICAgICAgMzAyLCAgMzAxLCAgMzAwLCAgMjk5LCAgMjk4LCAgMjk1LCAgMjkzLCAg
MjkyLCAgMjkxLCAgMjkwLAotICAgICAgMjg5LCAgMjg4LCAgMjg3LCAgMjg2LCAgMjg0LCAgMjgw
LCAgMjc4LCAgMjc3LCAgMjc2LCAgMjc1LAotICAgICAgMjcxLCAgMjcwLCAgMjY5LCAgMjY4LCAg
MjY3LCAgMjY2LCAgMjY1LCAgMjY0LCAgMjYzLCAgMjU5LAotICAgICAgMjU3LCAgMjU2LCAgMjU1
LCAgMjQ4LCAgMjQ3LCAgMjQ2LCAgMjQ1LCAgMjQzLCAgMjQyLCAgMjQxLAotICAgICAgMjQwLCAg
MjM5LCAgMjM3LCAgMjM2LCAgMjM1LCAgMjM0LCAgMjMzLCAgMjMyLCAgMjMxLCAgMjMwLAotCi0g
ICAgICAyMjksICAyMjgsICAyMjcsICAyMjYsICAyMjUsICAyMjQsICAyMjMsICAyMjIsICAyMjAs
ICAyMTksCi0gICAgICAyMTgsICAyMTcsICAyMTYsICAyMTUsICAyMTQsICAyMTMsICAyMTIsICAy
MTEsICAyMTAsICAyMDgsCi0gICAgICAyMDcsICAyMDYsICAyMDUsICAyMDQsICAyMDMsICAyMDIs
ICAyMDEsICAyMDAsICAxOTksICAxOTgsCi0gICAgICAxOTcsICAxOTYsICAxOTUsICAxOTQsICAx
OTMsICAxOTIsICAxOTAsICAxODksICAxODgsICAxODcsCi0gICAgICAxODYsICAxODUsICAxODQs
ICAxODMsICAxODIsICAxODEsICAxODAsICAxNzksICAxNzcsICAxNzYsCi0gICAgICAxNzUsICAx
NzQsICAxNzIsICAxNzEsICAxNzAsICAxNjksICAxNjgsICAxNjYsICAxNTEsICAxNTAsCi0gICAg
ICAxNDgsICAxNDcsICAxNDYsICAxNDIsICAxNDEsICAxNDAsICAxMzksICAxMzgsICAxMzUsICAx
MzQsCi0gICAgICAxMzMsICAxMzIsICAxMzAsICAxMjksICAxMjcsICAxMjUsICAxMjQsICAxMjMs
ICAxMjEsICAxMjAsCi0gICAgICAxMTksICAxMTcsICAxMTYsICAxMTQsICAxMTMsICAxMTIsICAx
MTEsICAxMTAsICAxMDksICAxMDYsCi0gICAgICAxMDUsICAxMDQsICAxMDMsICAxMDIsICAxMDEs
ICAxMDAsICAgOTksICAgOTcsICAgOTYsICAgOTUsCi0KLSAgICAgICA5NCwgICA5MywgICA5Miwg
ICA5MCwgICA4OSwgICA4NSwgICA4MSwgICA0NiwgICA0NCwgICAzOCwKLSAgICAgICAyNSwgICAy
MiwgICAxOSwgICAxNCwgICAgOSwgICAgNSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAg
IDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgx
OSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwg
IDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwg
IDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwg
IDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgx
OSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOQorICAgICAg
IDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDUy
LAorICAgICAgIDIxLCAgIDI0LCAgIDI2LCAgIDI2LCAgIDE3LCAgIDE1LCAgIDMxLCAgIDUyLCAg
IDExLCAgIDIwLAorICAgICAgIDU1LCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIw
LCAgIDIwLCAgIDIwLCAgIDIwLAorICAgICAgIDIwLCAgIDI0LCAgIDIxLCAgIDI0LCAgIDI0LCAg
NzU3LCAgIDMxLCAgIDM0LCAgIDMzLCAgIDM0LAorCisgICAgICAgMjEsICAgMjAsICAgNDMsICAg
MzQsICAgMzUsICAgMzcsICAgNDMsICAgMzcsICAgMzUsICAgMjAsCisgICAgICAgMjAsICAgMjEs
ICAgMzMsICAgMzMsICAgMzUsICAgMzYsICAgMzcsICAgMzUsICAgOTQsICAgMzYsCisgICAgICAg
MjAsICAgNDAsICAgOTQsICAgMzgsICAgMzYsICAgMjEsICA3NTksICAgNTUsICAgNDIsICAgNDAs
CisgICAgICAgMzYsICAgMzgsICAgNDEsICAgMzgsICAgMjAsICAgNDEsICAgMzgsICAgMjAsICAg
NDEsICAgNDEsCisgICAgICAgNDAsICAgNDIsICAgMzgsICAgNDEsICAgNDEsICAgNDQsICAgNDEs
ICAgNDYsICAxMTAsICAgNDgsCisgICAgICAgNDksICAgNTEsICAgNzcsICAgNDksICAgNzcsICAg
NTEsICAgNDgsICAgNDgsICAgNDQsICAxMTAsCisgICAgICAgNDgsICAgNDksICAgNDYsICA1Mjcs
ICAgNTEsICAgNDYsICAgNDgsICAgNDgsICAgNDksICAgNDgsCisgICAgICAgNTAsICAgNzIsICAg
NzIsICA1MjcsICAgNTAsICAgNzQsICAgNzQsICAxMjYsICAgNTAsICAgNzUsCisgICAgICAgNzUs
ICAgNTAsICAxMDEsICAgNzYsICAxMTEsICAxMjYsICAxMDEsICAxMDEsICAxMzIsICAxMjEsCisg
ICAgICAgNzIsICAgNzIsICAxMjEsICAxMjEsICAgNzQsICAgNzQsICAxMjEsICAxMTEsICAxMjEs
ICAxMzUsCisKKyAgICAgIDEzMCwgIDEzMiwgIDE0MCwgIDEzMiwgICA3NSwgICA3NiwgIDEzMCwg
ICA3NSwgIDEzNywgIDE0MSwKKyAgICAgIDE0NywgIDE0NywgIDE0OCwgICA3NiwgIDc2MCwgIDEz
NSwgIDEzNSwgIDE0MCwgIDE0OSwgIDc2MSwKKyAgICAgIDE0OCwgIDEzNywgIDE0MSwgIDE1Mywg
ICA3NiwgIDE1MywgIDE0OSwgIDE2MCwgIDE2OCwgIDE2MCwKKyAgICAgIDE2MiwgIDE2MiwgIDE2
MywgIDE2NywgIDE2MywgIDE2NywgIDE4NCwgIDE4NCwgICA3NiwgIDE2NiwKKyAgICAgIDE2Niwg
IDE2NiwgIDE2NiwgIDE2NiwgIDE2NiwgIDE2NiwgIDE2NiwgIDE2NiwgIDE2NiwgIDE2MiwKKyAg
ICAgIDE2MiwgIDE3OSwgIDI0NiwgIDE2OCwgIDIxNiwgIDIxNiwgIDIxNiwgIDIyOCwgIDc2Miwg
IDE2NywKKyAgICAgIDI0NiwgIDIyOCwgIDMwNCwgIDMwNCwgIDE3OSwgIDI1MiwgIDI1MiwgIDI1
MiwgIDI1OCwgIDI1OCwKKyAgICAgIDI1OCwgIDI1OCwgIDI1OCwgIDI1OCwgIDI1OCwgIDI1OCwg
IDI1OCwgIDI1OCwgIDE2NywgIDI1OSwKKyAgICAgIDc2MywgIDI1OSwgIDI2MCwgIDI2MCwgIDI2
MCwgIDI2MCwgIDI2MCwgIDI2MCwgIDI2MCwgIDI2MCwKKyAgICAgIDI2MCwgIDI2MCwgIDI2MSwg
IDc2NSwgIDI2MSwgIDI3MCwgIDI3MCwgIDI3MCwgIDI4MiwgIDI4MiwKKworICAgICAgMjgyLCAg
MjkxLCAgMjkxLCAgMjkxLCAgNzY2LCAgMjU5LCAgMjk1LCAgMjk1LCAgMjk1LCAgMzA1LAorICAg
ICAgMzA1LCAgMzA1LCAgMzQ3LCAgMzQ3LCAgMzQ3LCAgMzkwLCAgMzkwLCAgMzkwLCAgMjYxLCAg
NDAzLAorICAgICAgNDAzLCAgNDAzLCAgNzY5LCAgNzcxLCAgMjU5LCAgNDA0LCAgNDA0LCAgNDA0
LCAgNDA1LCAgNDA1LAorICAgICAgNDA1LCAgMzkwLCAgMzkwLCAgNDU5LCAgNDU5LCAgNDU5LCAg
NTI4LCAgMjYxLCAgNTA1LCAgNTA1LAorICAgICAgNTA1LCAgNTQ2LCAgNTQ2LCAgNTQ2LCAgNzcz
LCAgNzc0LCAgNTI4LCAgNzc1LCAgNzc2LCAgNDU5LAorICAgICAgNDU5LCAgNTgyLCAgNTgyLCAg
NTgyLCAgNTA1LCAgNTA1LCAgNjM1LCAgNTQ2LCAgNTQ2LCAgNzc3LAorICAgICAgNTQ2LCAgNjA2
LCAgNjA2LCAgNjA2LCAgNjM2LCAgNzc4LCAgNjM1LCAgNTgyLCAgNTgyLCAgNzgwLAorICAgICAg
NzgxLCAgNjM2LCAgNjY1LCAgNjM2LCAgNjM2LCAgNjg3LCAgNzgyLCAgNjA2LCAgNjA2LCAgNjY1
LAorICAgICAgNzgzLCAgNjY1LCAgNjg3LCAgNzg0LCAgNjg3LCAgNzg1LCAgNzg4LCAgNzg5LCAg
NzkyLCAgNzkzLAorICAgICAgNzk0LCAgNzk1LCAgNzk2LCAgNzk3LCAgNzk4LCAgNzk5LCAgODAw
LCAgODAxLCAgODAyLCAgODAzLAorCisgICAgICA4MDYsICA4MDcsICA4MDgsICA4MDksICA4MTAs
ICA4MTEsICA4MTIsICA4MTMsICA4MTQsICA4MTUsCisgICAgICA4MTYsICA4MTcsICA4MjAsICA4
MjEsICA4MjIsICA4MjMsICA4MjYsICA4MjcsICA4MjgsICA4MzAsCisgICAgICA4MzEsICA4MzIs
ICA4MzQsICA4MzUsICA4MzgsICA4MzksICA4NDAsICA4NDEsICA4NDIsICA4NDMsCisgICAgICA4
NDQsICA4NDUsICA4NDYsICA4NDgsICA4NDksICA4NTAsICA4NTEsICA4NTIsICA4NTMsICA4NTQs
CisgICAgICA4NTUsICA4NTcsICA4NTgsICA4NTksICA4NjAsICA4NjIsICA4NjUsICA4NjksICA4
NzAsICA4NzEsCisgICAgICA4NzMsICA4NzQsICA4NzUsICA4NzcsICA4ODAsICA4ODEsICA4ODIs
ICA4ODMsICA4ODYsICA4ODYsCisgICAgICA3NTYsICA4ODYsICA3NTUsICA3NTQsICA4ODYsICA4
ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODgsICA4ODgsICA4ODgs
ICA4ODgsICA4ODgsICA4ODgsICA4ODksICA3NTMsICA4ODksCisgICAgICA4ODksICA4OTAsICA3
NTIsICA4OTAsICA4OTAsICA4OTEsICA3NTEsICA4OTEsICA4OTIsICA4OTIsCisgICAgICA4OTIs
ICA4OTIsICA4OTMsICA3NTAsICA4OTMsICA4OTQsICA3NDksICA4OTQsICA3NDgsICA3NDcsCisK
KyAgICAgIDc0NiwgIDc0NSwgIDc0NCwgIDc0MiwgIDc0MSwgIDc0MCwgIDczOSwgIDczOCwgIDcz
NywgIDczNiwKKyAgICAgIDczNSwgIDczNCwgIDczMiwgIDczMSwgIDczMCwgIDcyOSwgIDcyOCwg
IDcyNywgIDcyNiwgIDcyNSwKKyAgICAgIDcyNCwgIDcyMywgIDcyMiwgIDcyMSwgIDcyMCwgIDcx
OSwgIDcxOCwgIDcxNywgIDcxNiwgIDcxNSwKKyAgICAgIDcxNCwgIDcxMywgIDcxMiwgIDcxMSwg
IDcxMCwgIDcwOSwgIDcwOCwgIDcwNywgIDcwNiwgIDcwNSwKKyAgICAgIDcwNCwgIDcwMywgIDcw
MiwgIDcwMCwgIDY5OSwgIDY5OCwgIDY5NywgIDY5NiwgIDY5NSwgIDY5NCwKKyAgICAgIDY5Miwg
IDY5MSwgIDY5MCwgIDY4OSwgIDY4NiwgIDY4NCwgIDY4MywgIDY4MiwgIDY4MCwgIDY3OSwKKyAg
ICAgIDY3OCwgIDY3NywgIDY3NiwgIDY3NSwgIDY3NCwgIDY3MywgIDY3MiwgIDY3MSwgIDY3MCwg
IDY2OSwKKyAgICAgIDY2OCwgIDY2NywgIDY2NCwgIDY2MywgIDY2MiwgIDY2MSwgIDY2MCwgIDY1
OSwgIDY1NywgIDY1NiwKKyAgICAgIDY1NSwgIDY1NCwgIDY1MywgIDY1MiwgIDY1MCwgIDY0OSwg
IDY0OCwgIDY0NywgIDY0NiwgIDY0NSwKKyAgICAgIDY0NCwgIDY0MywgIDY0MiwgIDY0MSwgIDY0
MCwgIDYzOSwgIDYzOCwgIDYzNywgIDYzMiwgIDYzMCwKKworICAgICAgNjI5LCAgNjI4LCAgNjI3
LCAgNjI2LCAgNjI1LCAgNjIxLCAgNjIwLCAgNjE5LCAgNjE4LCAgNjE3LAorICAgICAgNjE2LCAg
NjE1LCAgNjE0LCAgNjEzLCAgNjExLCAgNjEwLCAgNjA5LCAgNjA4LCAgNjA0LCAgNjAzLAorICAg
ICAgNjAxLCAgNjAwLCAgNTk4LCAgNTk3LCAgNTk2LCAgNTk1LCAgNTk0LCAgNTkzLCAgNTkyLCAg
NTg4LAorICAgICAgNTg3LCAgNTg2LCAgNTg0LCAgNTgzLCAgNTgxLCAgNTgwLCAgNTc5LCAgNTc4
LCAgNTc3LCAgNTc2LAorICAgICAgNTc1LCAgNTc0LCAgNTczLCAgNTcyLCAgNTcwLCAgNTY5LCAg
NTY0LCAgNTYzLCAgNTYyLCAgNTYxLAorICAgICAgNTYwLCAgNTU5LCAgNTU3LCAgNTU2LCAgNTU0
LCAgNTUzLCAgNTUyLCAgNTUxLCAgNTUwLCAgNTQ4LAorICAgICAgNTQ3LCAgNTQ1LCAgNTQ0LCAg
NTQzLCAgNTQyLCAgNTQxLCAgNTQwLCAgNTM5LCAgNTM4LCAgNTM1LAorICAgICAgNTM0LCAgNTMz
LCAgNTMyLCAgNTMxLCAgNTMwLCAgNTI2LCAgNTI1LCAgNTI0LCAgNTIzLCAgNTIyLAorICAgICAg
NTIxLCAgNTE4LCAgNTE3LCAgNTE2LCAgNTE1LCAgNTE0LCAgNTEzLCAgNTEyLCAgNTExLCAgNTEw
LAorICAgICAgNTA5LCAgNTA4LCAgNTA3LCAgNTA2LCAgNTA0LCAgNTAzLCAgNTAwLCAgNDk0LCAg
NDkyLCAgNDkxLAorCisgICAgICA0OTAsICA0ODgsICA0ODcsICA0ODQsICA0ODMsICA0ODIsICA0
ODEsICA0NzAsICA0NjksICA0NjgsCisgICAgICA0NjcsICA0NjYsICA0NjQsICA0NjMsICA0NjIs
ICA0NjEsICA0NjAsICA0NTcsICA0NTUsICA0NTQsCisgICAgICA0NTMsICA0NTEsICA0NTAsICA0
NDksICA0NDgsICA0NDYsICA0NDUsICA0NDQsICA0NDIsICA0NDEsCisgICAgICA0MzYsICA0MzUs
ICA0MzMsICA0MzIsICA0MzEsICA0MzAsICA0MjksICA0MjgsICA0MjcsICA0MjYsCisgICAgICA0
MjUsICA0MjQsICA0MjMsICA0MjEsICA0MjAsICA0MTksICA0MTgsICA0MTcsICA0MTYsICA0MTUs
CisgICAgICA0MTQsICA0MTIsICA0MTEsICA0MTAsICA0MDksICA0MDgsICA0MDcsICA0MDYsICA0
MDIsICAzOTgsCisgICAgICAzOTcsICAzOTYsICAzOTUsICAzOTQsICAzOTEsICAzODksICAzNzks
ICAzNzcsICAzNzMsICAzNzIsCisgICAgICAzNzEsICAzNzAsICAzNjgsICAzNjcsICAzNjUsICAz
NjAsICAzNTksICAzNTgsICAzNTcsICAzNTYsCisgICAgICAzNTUsICAzNTQsICAzNTMsICAzNDgs
ICAzNDYsICAzNDUsICAzNDQsICAzNDMsICAzNDIsICAzNDAsCisgICAgICAzMzksICAzMzYsICAz
MzUsICAzMzQsICAzMzMsICAzMzIsICAzMzEsICAzMzAsICAzMjksICAzMjgsCisKKyAgICAgIDMy
NywgIDMyNiwgIDMyNSwgIDMyNCwgIDMyMywgIDMyMiwgIDMyMSwgIDMyMCwgIDMxOSwgIDMxOCwK
KyAgICAgIDMxNywgIDMxNiwgIDMxNSwgIDMxNCwgIDMxMywgIDMxMiwgIDMxMSwgIDMxMCwgIDMw
OSwgIDMwNiwKKyAgICAgIDMwMywgIDMwMiwgIDMwMSwgIDMwMCwgIDI5OSwgIDI5OCwgIDI5Nywg
IDI5NiwgIDI5NCwgIDI5MCwKKyAgICAgIDI4OCwgIDI4NywgIDI4NiwgIDI4NSwgIDI4MSwgIDI4
MCwgIDI3OSwgIDI3OCwgIDI3NywgIDI3NiwKKyAgICAgIDI3NSwgIDI3NCwgIDI3MywgIDI2OSwg
IDI2NywgIDI2NiwgIDI2NSwgIDI2NCwgIDI1NywgIDI1NiwKKyAgICAgIDI1NSwgIDI1NCwgIDI1
MywgIDI1MSwgIDI1MCwgIDI0OSwgIDI0OCwgIDI0NywgIDI0NSwgIDI0NCwKKyAgICAgIDI0Mywg
IDI0MiwgIDI0MSwgIDI0MCwgIDIzOSwgIDIzOCwgIDIzNywgIDIzNiwgIDIzNSwgIDIzNCwKKyAg
ICAgIDIzMywgIDIzMiwgIDIzMSwgIDIzMCwgIDIyOSwgIDIyNywgIDIyNiwgIDIyNSwgIDIyNCwg
IDIyMywKKyAgICAgIDIyMiwgIDIyMSwgIDIyMCwgIDIxOSwgIDIxOCwgIDIxNywgIDIxNSwgIDIx
NCwgIDIxMywgIDIxMiwKKyAgICAgIDIxMSwgIDIxMCwgIDIwOSwgIDIwOCwgIDIwNywgIDIwNiwg
IDIwNSwgIDIwNCwgIDIwMywgIDIwMiwKKworICAgICAgMjAxLCAgMjAwLCAgMTk5LCAgMTk4LCAg
MTk2LCAgMTk1LCAgMTk0LCAgMTkzLCAgMTkyLCAgMTkxLAorICAgICAgMTkwLCAgMTg5LCAgMTg4
LCAgMTg3LCAgMTg2LCAgMTg1LCAgMTgzLCAgMTgyLCAgMTgxLCAgMTgwLAorICAgICAgMTc4LCAg
MTc3LCAgMTc2LCAgMTc1LCAgMTc0LCAgMTcyLCAgMTcxLCAgMTU2LCAgMTU1LCAgMTU0LAorICAg
ICAgMTUyLCAgMTUxLCAgMTUwLCAgMTQ2LCAgMTQ1LCAgMTQ0LCAgMTQzLCAgMTQyLCAgMTM5LCAg
MTM4LAorICAgICAgMTM2LCAgMTM0LCAgMTMzLCAgMTMxLCAgMTI5LCAgMTI4LCAgMTI3LCAgMTI1
LCAgMTI0LCAgMTIzLAorICAgICAgMTIyLCAgMTIwLCAgMTE5LCAgMTE3LCAgMTE2LCAgMTE1LCAg
MTE0LCAgMTEzLCAgMTEyLCAgMTA5LAorICAgICAgMTA4LCAgMTA3LCAgMTA2LCAgMTA1LCAgMTA0
LCAgMTAzLCAgMTAyLCAgMTAwLCAgIDk5LCAgIDk4LAorICAgICAgIDk3LCAgIDk2LCAgIDk1LCAg
IDkzLCAgIDkyLCAgIDkxLCAgIDg3LCAgIDgzLCAgIDUzLCAgIDQ3LAorICAgICAgIDQ1LCAgIDM5
LCAgIDMyLCAgIDI1LCAgIDIyLCAgIDE5LCAgIDE0LCAgICA5LCAgICA1LCAgODg1LAorICAgICAg
ODg1LCAgODg1LCAgODg1LCAgODg1LCAgODg1LCAgODg1LCAgODg1LCAgODg1LCAgODg1LCAgODg1
LAorCisgICAgICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUs
ICA4ODUsICA4ODUsCisgICAgICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4
ODUsICA4ODUsICA4ODUsICA4ODUsCisgICAgICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUs
ICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsCisgICAgICA4ODUsICA4ODUsICA4ODUsICA4
ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsCisgICAgICA4ODUsICA4ODUs
ICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsCisgICAgICA4
ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUs
CisgICAgICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUKICAgICB9IDsK
IAogLyogVGFibGUgb2YgYm9vbGVhbnMsIHRydWUgaWYgcnVsZSBjb3VsZCBtYXRjaCBlb2wuICov
Ci1zdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfcnVsZV9jYW5fbWF0Y2hfZW9sWzI0MV0g
PQorc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X3J1bGVfY2FuX21hdGNoX2VvbFsyNDdd
ID0KICAgICB7ICAgMCwKIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtOTk3LDggKzEwNDAsOCBAQCBzdGF0aWMgeXlj
b25zdCBmbGV4X2ludDMyX3QgeXlfcnVsZV9jYW5fbWF0Y2hfZW9sWzI0MV0gPQogICAgIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAog
ICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIAotICAgIDAsICAgICB9OworICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAs
IDAsIDAsIDAsIDEsIDAsIDAsICAgICB9OwogCiAvKiBUaGUgaW50ZW50IGJlaGluZCB0aGlzIGRl
ZmluaXRpb24gaXMgdGhhdCBpdCdsbCBjYXRjaAogICogYW55IHVzZXMgb2YgUkVKRUNUIHdoaWNo
IGZsZXggbWlzc2VkLgpAQCAtMTAyNyw2ICsxMDcwLDkgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBH
TFNMIEVTIExFWEVSIChnbHNsYW5nX2xleC5jcHApLgogI2luY2x1ZGUgImNvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9Ub2tlbi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdXRpbC5oIgog
I2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvbGVuZ3RoX2xpbWl0cy5oIgorCit1c2luZyBu
YW1lc3BhY2Ugc2g7CisKICNpbmNsdWRlICJnbHNsYW5nX3RhYi5oIgogCiAvKiB3aW5kb3dzIG9u
bHkgcHJhZ21hICovCkBAIC0xMDU0LDEwICsxMTAwLDE1IEBAIHN0YXRpYyBpbnQgcmVzZXJ2ZWRf
d29yZCh5eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIGludCBFUzJfcmVzZXJ2ZWRfRVMzX2tl
eXdvcmQoVFBhcnNlQ29udGV4dCAqY29udGV4dCwgaW50IHRva2VuKTsKIHN0YXRpYyBpbnQgRVMy
X2tleXdvcmRfRVMzX3Jlc2VydmVkKFRQYXJzZUNvbnRleHQgKmNvbnRleHQsIGludCB0b2tlbik7
CiBzdGF0aWMgaW50IEVTMl9pZGVudF9FUzNfa2V5d29yZChUUGFyc2VDb250ZXh0ICpjb250ZXh0
LCBpbnQgdG9rZW4pOworc3RhdGljIGludCBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tl
eXdvcmQoVFBhcnNlQ29udGV4dCAqY29udGV4dCwgaW50IHRva2VuKTsKK3N0YXRpYyBpbnQgRVMy
X2FuZF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChUUGFyc2VDb250ZXh0ICpjb250ZXh0LCBp
bnQgdG9rZW4pOworc3RhdGljIGludCBFUzJfYW5kX0VTM19pZGVudF9FUzNfMV9rZXl3b3JkKFRQ
YXJzZUNvbnRleHQgKmNvbnRleHQsIGludCB0b2tlbik7CitzdGF0aWMgaW50IEVTM19leHRlbnNp
b25fa2V5d29yZF9lbHNlX2lkZW50KFRQYXJzZUNvbnRleHQgKmNvbnRleHQsIGNvbnN0IGNoYXIg
KmV4dGVuc2lvbiwgaW50IHRva2VuKTsKIHN0YXRpYyBpbnQgdWludF9jb25zdGFudChUUGFyc2VD
b250ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyBpbnQgaW50X2NvbnN0YW50KFRQYXJzZUNvbnRleHQg
KmNvbnRleHQpOwogc3RhdGljIGludCBmbG9hdF9jb25zdGFudCh5eXNjYW5fdCB5eXNjYW5uZXIp
Owogc3RhdGljIGludCBmbG9hdHN1ZmZpeF9jaGVjayhUUGFyc2VDb250ZXh0KiBjb250ZXh0KTsK
K3N0YXRpYyBpbnQgeXV2Y3Njc3RhbmRhcmRleHRfY29uc3RhbnQoVFBhcnNlQ29udGV4dCAqY29u
dGV4dCk7CiAKICNkZWZpbmUgSU5JVElBTCAwCiAjZGVmaW5lIEZJRUxEUyAxCkBAIC0xMzUwLDEz
ICsxNDAxLDEzIEBAIHl5X21hdGNoOgogCQkJd2hpbGUgKCB5eV9jaGtbeXlfYmFzZVt5eV9jdXJy
ZW50X3N0YXRlXSArIHl5X2NdICE9IHl5X2N1cnJlbnRfc3RhdGUgKQogCQkJCXsKIAkJCQl5eV9j
dXJyZW50X3N0YXRlID0gKGludCkgeXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQkJCWlmICgg
eXlfY3VycmVudF9zdGF0ZSA+PSA4MjAgKQorCQkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4
ODYgKQogCQkJCQl5eV9jID0geXlfbWV0YVsodW5zaWduZWQgaW50KSB5eV9jXTsKIAkJCQl9CiAJ
CQl5eV9jdXJyZW50X3N0YXRlID0geXlfbnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAo
dW5zaWduZWQgaW50KSB5eV9jXTsKIAkJCSsreXlfY3A7CiAJCQl9Ci0JCXdoaWxlICggeXlfY3Vy
cmVudF9zdGF0ZSAhPSA4MTkgKTsKKwkJd2hpbGUgKCB5eV9jdXJyZW50X3N0YXRlICE9IDg4NSAp
OwogCQl5eV9jcCA9IHl5Zy0+eXlfbGFzdF9hY2NlcHRpbmdfY3BvczsKIAkJeXlfY3VycmVudF9z
dGF0ZSA9IHl5Zy0+eXlfbGFzdF9hY2NlcHRpbmdfc3RhdGU7CiAKQEAgLTEzNjgsNyArMTQxOSw3
IEBAIHl5X2ZpbmRfYWN0aW9uOgogCQlpZiAoIHl5X2FjdCAhPSBZWV9FTkRfT0ZfQlVGRkVSICYm
IHl5X3J1bGVfY2FuX21hdGNoX2VvbFt5eV9hY3RdICkKIAkJCXsKIAkJCXl5X3NpemVfdCB5eWw7
Ci0JCQlmb3IgKCB5eWwgPSAwOyB5eWwgPCB5eWxlbmc7ICsreXlsICkKKwkJCWZvciAoIHl5bCA9
IDA7IHl5bCA8IHN0YXRpY19jYXN0PHl5X3NpemVfdD4oeXlsZW5nKTsgKyt5eWwgKQogCQkJCWlm
ICggeXl0ZXh0W3l5bF0gPT0gJ1xuJyApCiAJCQkJCSAgIAogICAgIGRveyB5eWxpbmVubysrOwpA
QCAtMTQ5MCwyNDMgKzE1NDEsMzIxIEBAIFlZX1JVTEVfU0VUVVAKIAlZWV9CUkVBSwogY2FzZSAy
NjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIEZMT0FUX1RZUEU7IH0KK3sgcmV0dXJuIEVTMl9h
bmRfRVMzX2lkZW50X0VTM18xX2tleXdvcmQoY29udGV4dCwgU0hBUkVEKTsgfQogCVlZX0JSRUFL
CiBjYXNlIDI3OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gSU5UX1RZUEU7IH0KK3sgcmV0dXJu
IEZMT0FUX1RZUEU7IH0KIAlZWV9CUkVBSwogY2FzZSAyODoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0
dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBVSU5UX1RZUEUpOyB9Cit7IHJldHVy
biBJTlRfVFlQRTsgfQogCVlZX0JSRUFLCiBjYXNlIDI5OgogWVlfUlVMRV9TRVRVUAoteyByZXR1
cm4gVk9JRF9UWVBFOyB9Cit7IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwg
VUlOVF9UWVBFKTsgfQogCVlZX0JSRUFLCiBjYXNlIDMwOgogWVlfUlVMRV9TRVRVUAoteyByZXR1
cm4gQk9PTF9UWVBFOyB9Cit7IHJldHVybiBWT0lEX1RZUEU7IH0KIAlZWV9CUkVBSwogY2FzZSAz
MToKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguYiA9IHRydWU7ICByZXR1cm4gQk9PTENP
TlNUQU5UOyB9Cit7IHJldHVybiBCT09MX1RZUEU7IH0KIAlZWV9CUkVBSwogY2FzZSAzMjoKIFlZ
X1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5sZXguYiA9IGZhbHNlOyByZXR1cm4gQk9PTENPTlNUQU5U
OyB9Cit7IHl5bHZhbC0+bGV4LmIgPSB0cnVlOyAgcmV0dXJuIEJPT0xDT05TVEFOVDsgfQogCVlZ
X0JSRUFLCiBjYXNlIDMzOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gRElTQ0FSRDsgfQoreyB5
eWx2YWwtPmxleC5iID0gZmFsc2U7IHJldHVybiBCT09MQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwog
Y2FzZSAzNDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIFJFVFVSTjsgfQoreyByZXR1cm4gRElT
Q0FSRDsgfQogCVlZX0JSRUFLCiBjYXNlIDM1OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gTUFU
UklYMjsgfQoreyByZXR1cm4gUkVUVVJOOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzY6CiBZWV9SVUxF
X1NFVFVQCi17IHJldHVybiBNQVRSSVgzOyB9Cit7IHJldHVybiBNQVRSSVgyOyB9CiAJWVlfQlJF
QUsKIGNhc2UgMzc6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBNQVRSSVg0OyB9Cit7IHJldHVy
biBNQVRSSVgzOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzg6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVy
biBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgTUFUUklYMik7IH0KK3sgcmV0dXJuIE1B
VFJJWDQ7IH0KIAlZWV9CUkVBSwogY2FzZSAzOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIEVT
Ml9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBNQVRSSVgzKTsgfQoreyByZXR1cm4gRVMyX2lk
ZW50X0VTM19rZXl3b3JkKGNvbnRleHQsIE1BVFJJWDIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDA6
CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwg
TUFUUklYNCk7IH0KK3sgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBNQVRS
SVgzKTsgfQogCVlZX0JSRUFLCiBjYXNlIDQxOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gRVMy
X2lkZW50X0VTM19rZXl3b3JkKGNvbnRleHQsIE1BVFJJWDJ4Myk7IH0KK3sgcmV0dXJuIEVTMl9p
ZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBNQVRSSVg0KTsgfQogCVlZX0JSRUFLCiBjYXNlIDQy
OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3b3JkKGNvbnRleHQs
IE1BVFJJWDN4Mik7IH0KK3sgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBN
QVRSSVgyeDMpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDM6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVy
biBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgTUFUUklYMng0KTsgfQoreyByZXR1cm4g
RVMyX2lkZW50X0VTM19rZXl3b3JkKGNvbnRleHQsIE1BVFJJWDN4Mik7IH0KIAlZWV9CUkVBSwog
Y2FzZSA0NDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChj
b250ZXh0LCBNQVRSSVg0eDIpOyB9Cit7IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29u
dGV4dCwgTUFUUklYMng0KTsgfQogCVlZX0JSRUFLCiBjYXNlIDQ1OgogWVlfUlVMRV9TRVRVUAot
eyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3b3JkKGNvbnRleHQsIE1BVFJJWDN4NCk7IH0KK3sg
cmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBNQVRSSVg0eDIpOyB9CiAJWVlf
QlJFQUsKIGNhc2UgNDY6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBFUzJfaWRlbnRfRVMzX2tl
eXdvcmQoY29udGV4dCwgTUFUUklYNHgzKTsgfQoreyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3
b3JkKGNvbnRleHQsIE1BVFJJWDN4NCk7IH0KIAlZWV9CUkVBSwogY2FzZSA0NzoKIFlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuIFZFQzI7IH0KK3sgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChj
b250ZXh0LCBNQVRSSVg0eDMpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDg6CiBZWV9SVUxFX1NFVFVQ
Ci17IHJldHVybiBWRUMzOyB9Cit7IHJldHVybiBWRUMyOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDk6
CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBWRUM0OyB9Cit7IHJldHVybiBWRUMzOyB9CiAJWVlf
QlJFQUsKIGNhc2UgNTA6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBJVkVDMjsgfQoreyByZXR1
cm4gVkVDNDsgfQogCVlZX0JSRUFLCiBjYXNlIDUxOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4g
SVZFQzM7IH0KK3sgcmV0dXJuIElWRUMyOyB9CiAJWVlfQlJFQUsKIGNhc2UgNTI6CiBZWV9SVUxF
X1NFVFVQCi17IHJldHVybiBJVkVDNDsgfQoreyByZXR1cm4gSVZFQzM7IH0KIAlZWV9CUkVBSwog
Y2FzZSA1MzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIEJWRUMyOyB9Cit7IHJldHVybiBJVkVD
NDsgfQogCVlZX0JSRUFLCiBjYXNlIDU0OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gQlZFQzM7
IH0KK3sgcmV0dXJuIEJWRUMyOyB9CiAJWVlfQlJFQUsKIGNhc2UgNTU6CiBZWV9SVUxFX1NFVFVQ
Ci17IHJldHVybiBCVkVDNDsgfQoreyByZXR1cm4gQlZFQzM7IH0KIAlZWV9CUkVBSwogY2FzZSA1
NjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0
LCBVVkVDMik7IH0KK3sgcmV0dXJuIEJWRUM0OyB9CiAJWVlfQlJFQUsKIGNhc2UgNTc6CiBZWV9S
VUxFX1NFVFVQCi17IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgVVZFQzMp
OyB9Cit7IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgVVZFQzIpOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgNTg6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBFUzJfaWRlbnRfRVMz
X2tleXdvcmQoY29udGV4dCwgVVZFQzQpOyB9Cit7IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdv
cmQoY29udGV4dCwgVVZFQzMpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNTk6CiBZWV9SVUxFX1NFVFVQ
Ci17IHJldHVybiBTQU1QTEVSMkQ7IH0KK3sgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChj
b250ZXh0LCBVVkVDNCk7IH0KIAlZWV9CUkVBSwogY2FzZSA2MDoKIFlZX1JVTEVfU0VUVVAKLXsg
cmV0dXJuIFNBTVBMRVJDVUJFOyB9Cit7IHJldHVybiBTQU1QTEVSMkQ7IH0KIAlZWV9CUkVBSwog
Y2FzZSA2MToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIFNBTVBMRVJfRVhURVJOQUxfT0VTOyB9
Cit7IHJldHVybiBTQU1QTEVSQ1VCRTsgfQogCVlZX0JSRUFLCiBjYXNlIDYyOgogWVlfUlVMRV9T
RVRVUAoteyByZXR1cm4gRVMyX3Jlc2VydmVkX0VTM19rZXl3b3JkKGNvbnRleHQsIFNBTVBMRVIz
RCk7IH0KK3sgcmV0dXJuIFNBTVBMRVJfRVhURVJOQUxfT0VTOyB9CiAJWVlfQlJFQUsKIGNhc2Ug
NjM6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBFUzJfcmVzZXJ2ZWRfRVMzX2tleXdvcmQoY29u
dGV4dCwgU0FNUExFUjNEUkVDVCk7IH0KK3sgcmV0dXJuIEVTMl9yZXNlcnZlZF9FUzNfa2V5d29y
ZChjb250ZXh0LCBTQU1QTEVSM0QpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNjQ6CiBZWV9SVUxFX1NF
VFVQCi17IHJldHVybiBTQU1QTEVSMkRSRUNUOyB9Cit7IHJldHVybiBFUzJfcmVzZXJ2ZWRfRVMz
X2tleXdvcmQoY29udGV4dCwgU0FNUExFUjNEUkVDVCk7IH0KIAlZWV9CUkVBSwogY2FzZSA2NToK
IFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBT
QU1QTEVSMkRBUlJBWSk7IH0KK3sgcmV0dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KIAlZWV9CUkVBSwog
Y2FzZSA2NjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChj
b250ZXh0LCBJU0FNUExFUjJEKTsgfQoreyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3b3JkKGNv
bnRleHQsIFNBTVBMRVIyREFSUkFZKTsgfQogCVlZX0JSRUFLCiBjYXNlIDY3OgogWVlfUlVMRV9T
RVRVUAoteyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3b3JkKGNvbnRleHQsIElTQU1QTEVSM0Qp
OyB9Cit7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tleXdvcmQoY29udGV4
dCwgU0FNUExFUjJETVMpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNjg6CiBZWV9SVUxFX1NFVFVQCi17
IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgSVNBTVBMRVJDVUJFKTsgfQor
eyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3b3JkKGNvbnRleHQsIElTQU1QTEVSMkQpOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgNjk6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBFUzJfaWRlbnRfRVMz
X2tleXdvcmQoY29udGV4dCwgSVNBTVBMRVIyREFSUkFZKTsgfQoreyByZXR1cm4gRVMyX2lkZW50
X0VTM19rZXl3b3JkKGNvbnRleHQsIElTQU1QTEVSM0QpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNzA6
CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwg
VVNBTVBMRVIyRCk7IH0KK3sgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBJ
U0FNUExFUkNVQkUpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNzE6CiBZWV9SVUxFX1NFVFVQCi17IHJl
dHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgVVNBTVBMRVIzRCk7IH0KK3sgcmV0
dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBJU0FNUExFUjJEQVJSQVkpOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgNzI6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBFUzJfaWRlbnRfRVMz
X2tleXdvcmQoY29udGV4dCwgVVNBTVBMRVJDVUJFKTsgfQoreyByZXR1cm4gRVMyX2lkZW50X0VT
M19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRleHQsIElTQU1QTEVSMkRNUyk7IH0KIAlZWV9C
UkVBSwogY2FzZSA3MzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5
d29yZChjb250ZXh0LCBVU0FNUExFUjJEQVJSQVkpOyB9Cit7IHJldHVybiBFUzJfaWRlbnRfRVMz
X2tleXdvcmQoY29udGV4dCwgVVNBTVBMRVIyRCk7IH0KIAlZWV9CUkVBSwogY2FzZSA3NDoKIFlZ
X1JVTEVfU0VUVVAKLXsgcmV0dXJuIEVTMl9yZXNlcnZlZF9FUzNfa2V5d29yZChjb250ZXh0LCBT
QU1QTEVSMkRTSEFET1cpOyB9Cit7IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4
dCwgVVNBTVBMRVIzRCk7IH0KIAlZWV9CUkVBSwogY2FzZSA3NToKIFlZX1JVTEVfU0VUVVAKLXsg
cmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBTQU1QTEVSQ1VCRVNIQURPVyk7
IH0KK3sgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBVU0FNUExFUkNVQkUp
OyB9CiAJWVlfQlJFQUsKIGNhc2UgNzY6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBFUzJfaWRl
bnRfRVMzX2tleXdvcmQoY29udGV4dCwgU0FNUExFUjJEQVJSQVlTSEFET1cpOyB9Cit7IHJldHVy
biBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgVVNBTVBMRVIyREFSUkFZKTsgfQogCVlZ
X0JSRUFLCiBjYXNlIDc3OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gU1RSVUNUOyB9Cit7IHJl
dHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tleXdvcmQoY29udGV4dCwgVVNBTVBM
RVIyRE1TKTsgfQogCVlZX0JSRUFLCiBjYXNlIDc4OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4g
RVMyX2lkZW50X0VTM19rZXl3b3JkKGNvbnRleHQsIExBWU9VVCk7IH0KK3sgcmV0dXJuIEVTMl9y
ZXNlcnZlZF9FUzNfa2V5d29yZChjb250ZXh0LCBTQU1QTEVSMkRTSEFET1cpOyB9CiAJWVlfQlJF
QUsKLS8qIFJlc2VydmVkIGtleXdvcmRzIGZvciBHTFNMIEVTIDMuMDAgdGhhdCBhcmUgbm90IHJl
c2VydmVkIGZvciBHTFNMIEVTIDEuMDAgKi8KIGNhc2UgNzk6CitZWV9SVUxFX1NFVFVQCit7IHJl
dHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgU0FNUExFUkNVQkVTSEFET1cpOyB9
CisJWVlfQlJFQUsKIGNhc2UgODA6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybiBFUzJfaWRlbnRf
RVMzX2tleXdvcmQoY29udGV4dCwgU0FNUExFUjJEQVJSQVlTSEFET1cpOyB9CisJWVlfQlJFQUsK
IGNhc2UgODE6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybiBFUzNfZXh0ZW5zaW9uX2tleXdvcmRf
ZWxzZV9pZGVudChjb250ZXh0LCAiR0xfRVhUX1lVVl90YXJnZXQiLCBTQU1QTEVSRVhURVJOQUwy
RFkyWUVYVCk7IH0KKwlZWV9CUkVBSwogY2FzZSA4MjoKK1lZX1JVTEVfU0VUVVAKK3sgcmV0dXJu
IFNUUlVDVDsgfQorCVlZX0JSRUFLCiBjYXNlIDgzOgorWVlfUlVMRV9TRVRVUAoreyByZXR1cm4g
RVMyX2lkZW50X0VTM19rZXl3b3JkKGNvbnRleHQsIExBWU9VVCk7IH0KKwlZWV9CUkVBSwogY2Fz
ZSA4NDoKK1lZX1JVTEVfU0VUVVAKK3sgcmV0dXJuIEVTM19leHRlbnNpb25fa2V5d29yZF9lbHNl
X2lkZW50KGNvbnRleHQsICJHTF9FWFRfWVVWX3RhcmdldCIsIFlVVkNTQ1NUQU5EQVJERVhUKTsg
fQorCVlZX0JSRUFLCiBjYXNlIDg1OgorWVlfUlVMRV9TRVRVUAoreyByZXR1cm4geXV2Y3Njc3Rh
bmRhcmRleHRfY29uc3RhbnQoY29udGV4dCk7IH0KKwlZWV9CUkVBSwogY2FzZSA4NjoKK1lZX1JV
TEVfU0VUVVAKK3sgcmV0dXJuIHl1dmNzY3N0YW5kYXJkZXh0X2NvbnN0YW50KGNvbnRleHQpOyB9
CisJWVlfQlJFQUsKIGNhc2UgODc6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybiB5dXZjc2NzdGFu
ZGFyZGV4dF9jb25zdGFudChjb250ZXh0KTsgfQorCVlZX0JSRUFLCiBjYXNlIDg4OgorWVlfUlVM
RV9TRVRVUAoreyByZXR1cm4gRVMyX2lkZW50X0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNv
bnRleHQsIElNQUdFMkQpOyB9CisJWVlfQlJFQUsKIGNhc2UgODk6CitZWV9SVUxFX1NFVFVQCit7
IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tleXdvcmQoY29udGV4dCwgSUlN
QUdFMkQpOyB9CisJWVlfQlJFQUsKIGNhc2UgOTA6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybiBF
UzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tleXdvcmQoY29udGV4dCwgVUlNQUdFMkQpOyB9
CisJWVlfQlJFQUsKIGNhc2UgOTE6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybiBFUzJfaWRlbnRf
RVMzX3Jlc2VydmVkX0VTM18xX2tleXdvcmQoY29udGV4dCwgSU1BR0UyREFSUkFZKTsgfQorCVlZ
X0JSRUFLCiBjYXNlIDkyOgorWVlfUlVMRV9TRVRVUAoreyByZXR1cm4gRVMyX2lkZW50X0VTM19y
ZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRleHQsIElJTUFHRTJEQVJSQVkpOyB9CisJWVlfQlJF
QUsKIGNhc2UgOTM6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2Vy
dmVkX0VTM18xX2tleXdvcmQoY29udGV4dCwgVUlNQUdFMkRBUlJBWSk7IH0KKwlZWV9CUkVBSwog
Y2FzZSA5NDoKK1lZX1JVTEVfU0VUVVAKK3sgcmV0dXJuIEVTMl9pZGVudF9FUzNfcmVzZXJ2ZWRf
RVMzXzFfa2V5d29yZChjb250ZXh0LCBJTUFHRTNEKTsgfQorCVlZX0JSRUFLCiBjYXNlIDk1Ogor
WVlfUlVMRV9TRVRVUAoreyByZXR1cm4gRVMyX2lkZW50X0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3
b3JkKGNvbnRleHQsIFVJTUFHRTNEKTsgfQorCVlZX0JSRUFLCiBjYXNlIDk2OgorWVlfUlVMRV9T
RVRVUAoreyByZXR1cm4gRVMyX2lkZW50X0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRl
eHQsIElJTUFHRTNEKTsgfQorCVlZX0JSRUFLCiBjYXNlIDk3OgorWVlfUlVMRV9TRVRVUAoreyBy
ZXR1cm4gRVMyX2lkZW50X0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRleHQsIElJTUFH
RUNVQkUpOyB9CisJWVlfQlJFQUsKIGNhc2UgOTg6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybiBF
UzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tleXdvcmQoY29udGV4dCwgVUlNQUdFQ1VCRSk7
IH0KKwlZWV9CUkVBSwogY2FzZSA5OToKK1lZX1JVTEVfU0VUVVAKK3sgcmV0dXJuIEVTMl9pZGVu
dF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChjb250ZXh0LCBJTUFHRUNVQkUpOyB9CisJWVlf
QlJFQUsKIGNhc2UgMTAwOgorWVlfUlVMRV9TRVRVUAoreyByZXR1cm4gRVMyX2lkZW50X0VTM19y
ZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRleHQsIFJFQURPTkxZKTsgfQorCVlZX0JSRUFLCiBj
YXNlIDEwMToKK1lZX1JVTEVfU0VUVVAKK3sgcmV0dXJuIEVTMl9pZGVudF9FUzNfcmVzZXJ2ZWRf
RVMzXzFfa2V5d29yZChjb250ZXh0LCBXUklURU9OTFkpOyB9CisJWVlfQlJFQUsKIGNhc2UgMTAy
OgorWVlfUlVMRV9TRVRVUAoreyByZXR1cm4gRVMyX2lkZW50X0VTM19yZXNlcnZlZF9FUzNfMV9r
ZXl3b3JkKGNvbnRleHQsIENPSEVSRU5UKTsgfQorCVlZX0JSRUFLCiBjYXNlIDEwMzoKK1lZX1JV
TEVfU0VUVVAKK3sgcmV0dXJuIEVTMl9pZGVudF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChj
b250ZXh0LCBSRVNUUklDVCk7IH0KKwlZWV9CUkVBSwogY2FzZSAxMDQ6CitZWV9SVUxFX1NFVFVQ
Cit7IHJldHVybiBFUzJfYW5kX0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRleHQsIFZP
TEFUSUxFKTsgfQorCVlZX0JSRUFLCisvKiBSZXNlcnZlZCBrZXl3b3JkcyBmb3IgR0xTTCBFUyAz
LjAwIHRoYXQgYXJlIG5vdCByZXNlcnZlZCBmb3IgR0xTTCBFUyAxLjAwICovCiBjYXNlIDEwNToK
IGNhc2UgMTA2OgogY2FzZSAxMDc6CkBAIC0xNzU3LDYgKzE4ODYsMTMgQEAgY2FzZSAxMzE6CiBj
YXNlIDEzMjoKIGNhc2UgMTMzOgogY2FzZSAxMzQ6CitjYXNlIDEzNToKK2Nhc2UgMTM2OgorY2Fz
ZSAxMzc6CitjYXNlIDEzODoKK2Nhc2UgMTM5OgorY2FzZSAxNDA6CitjYXNlIDE0MToKIFlZX1JV
TEVfU0VUVVAKIHsgCiAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSA8IDMwMCkg
ewpAQCAtMTc2Nyw3ICsxOTAzLDcgQEAgWVlfUlVMRV9TRVRVUAogfQogCVlZX0JSRUFLCiAvKiBS
ZXNlcnZlZCBrZXl3b3JkcyBpbiBHTFNMIEVTIDEuMDAgdGhhdCBhcmUgbm90IHJlc2VydmVkIGlu
IEdMU0wgRVMgMy4wMCAqLwotY2FzZSAxMzU6CitjYXNlIDE0MjoKIFlZX1JVTEVfU0VUVVAKIHsK
ICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVmVyc2lvbigpID49IDMwMCkKQEAgLTE3ODAsMTMg
KzE5MTYsNiBAQCBZWV9SVUxFX1NFVFVQCiB9CiAJWVlfQlJFQUsKIC8qIFJlc2VydmVkIGtleXdv
cmRzICovCi1jYXNlIDEzNjoKLWNhc2UgMTM3OgotY2FzZSAxMzg6Ci1jYXNlIDEzOToKLWNhc2Ug
MTQwOgotY2FzZSAxNDE6Ci1jYXNlIDE0MjoKIGNhc2UgMTQzOgogY2FzZSAxNDQ6CiBjYXNlIDE0
NToKQEAgLTE4MjEsMjQ1ICsxOTUwLDI1MSBAQCBjYXNlIDE3MzoKIGNhc2UgMTc0OgogY2FzZSAx
NzU6CiBjYXNlIDE3NjoKK2Nhc2UgMTc3OgorY2FzZSAxNzg6CitjYXNlIDE3OToKK2Nhc2UgMTgw
OgorY2FzZSAxODE6CitjYXNlIDE4MjoKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuIHJlc2VydmVk
X3dvcmQoeXlzY2FubmVyKTsgfQogCVlZX0JSRUFLCi1jYXNlIDE3NzoKK2Nhc2UgMTgzOgogWVlf
UlVMRV9TRVRVUAogewogICAgeXlsdmFsLT5sZXguc3RyaW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0
ZXh0KTsgCiAgICByZXR1cm4gY2hlY2tfdHlwZSh5eXNjYW5uZXIpOwogfQogCVlZX0JSRUFLCi1j
YXNlIDE3ODoKK2Nhc2UgMTg0OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gaW50X2NvbnN0YW50
KGNvbnRleHQpOyB9CiAJWVlfQlJFQUsKLWNhc2UgMTc5OgorY2FzZSAxODU6CiBZWV9SVUxFX1NF
VFVQCiB7IHJldHVybiBpbnRfY29uc3RhbnQoY29udGV4dCk7IH0KIAlZWV9CUkVBSwotY2FzZSAx
ODA6CitjYXNlIDE4NjoKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuIGludF9jb25zdGFudChjb250
ZXh0KTsgfQogCVlZX0JSRUFLCi1jYXNlIDE4MToKK2Nhc2UgMTg3OgogWVlfUlVMRV9TRVRVUAog
eyByZXR1cm4gdWludF9jb25zdGFudChjb250ZXh0KTsgfQogCVlZX0JSRUFLCi1jYXNlIDE4MjoK
K2Nhc2UgMTg4OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gdWludF9jb25zdGFudChjb250ZXh0
KTsgfQogCVlZX0JSRUFLCi1jYXNlIDE4MzoKK2Nhc2UgMTg5OgogWVlfUlVMRV9TRVRVUAogeyBy
ZXR1cm4gdWludF9jb25zdGFudChjb250ZXh0KTsgfQogCVlZX0JSRUFLCi1jYXNlIDE4NDoKK2Nh
c2UgMTkwOgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gZmxvYXRfY29uc3RhbnQoeXlzY2FubmVy
KTsgfQogCVlZX0JSRUFLCi1jYXNlIDE4NToKK2Nhc2UgMTkxOgogWVlfUlVMRV9TRVRVUAogeyBy
ZXR1cm4gZmxvYXRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQogCVlZX0JSRUFLCi1jYXNlIDE4NjoK
K2Nhc2UgMTkyOgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gZmxvYXRfY29uc3RhbnQoeXlzY2Fu
bmVyKTsgfQogCVlZX0JSRUFLCi1jYXNlIDE4NzoKK2Nhc2UgMTkzOgogWVlfUlVMRV9TRVRVUAog
eyByZXR1cm4gZmxvYXRzdWZmaXhfY2hlY2soY29udGV4dCk7IH0KIAlZWV9CUkVBSwotY2FzZSAx
ODg6CitjYXNlIDE5NDoKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuIGZsb2F0c3VmZml4X2NoZWNr
KGNvbnRleHQpOyB9CiAJWVlfQlJFQUsKLWNhc2UgMTg5OgorY2FzZSAxOTU6CiBZWV9SVUxFX1NF
VFVQCiB7IHJldHVybiBmbG9hdHN1ZmZpeF9jaGVjayhjb250ZXh0KTsgfQogCVlZX0JSRUFLCi1j
YXNlIDE5MDoKK2Nhc2UgMTk2OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gQUREX0FTU0lHTjsg
fQogCVlZX0JSRUFLCi1jYXNlIDE5MToKK2Nhc2UgMTk3OgogWVlfUlVMRV9TRVRVUAogeyByZXR1
cm4gU1VCX0FTU0lHTjsgfQogCVlZX0JSRUFLCi1jYXNlIDE5MjoKK2Nhc2UgMTk4OgogWVlfUlVM
RV9TRVRVUAogeyByZXR1cm4gTVVMX0FTU0lHTjsgfQogCVlZX0JSRUFLCi1jYXNlIDE5MzoKK2Nh
c2UgMTk5OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gRElWX0FTU0lHTjsgfQogCVlZX0JSRUFL
Ci1jYXNlIDE5NDoKK2Nhc2UgMjAwOgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gTU9EX0FTU0lH
TjsgfQogCVlZX0JSRUFLCi1jYXNlIDE5NToKK2Nhc2UgMjAxOgogWVlfUlVMRV9TRVRVUAogeyBy
ZXR1cm4gTEVGVF9BU1NJR047IH0KIAlZWV9CUkVBSwotY2FzZSAxOTY6CitjYXNlIDIwMjoKIFlZ
X1JVTEVfU0VUVVAKIHsgcmV0dXJuIFJJR0hUX0FTU0lHTjsgfQogCVlZX0JSRUFLCi1jYXNlIDE5
NzoKK2Nhc2UgMjAzOgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gQU5EX0FTU0lHTjsgfQogCVlZ
X0JSRUFLCi1jYXNlIDE5ODoKK2Nhc2UgMjA0OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gWE9S
X0FTU0lHTjsgfQogCVlZX0JSRUFLCi1jYXNlIDE5OToKK2Nhc2UgMjA1OgogWVlfUlVMRV9TRVRV
UAogeyByZXR1cm4gT1JfQVNTSUdOOyB9CiAJWVlfQlJFQUsKLWNhc2UgMjAwOgorY2FzZSAyMDY6
CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybiBJTkNfT1A7IH0KIAlZWV9CUkVBSwotY2FzZSAyMDE6
CitjYXNlIDIwNzoKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuIERFQ19PUDsgfQogCVlZX0JSRUFL
Ci1jYXNlIDIwMjoKK2Nhc2UgMjA4OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gQU5EX09QOyB9
CiAJWVlfQlJFQUsKLWNhc2UgMjAzOgorY2FzZSAyMDk6CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVy
biBPUl9PUDsgfQogCVlZX0JSRUFLCi1jYXNlIDIwNDoKK2Nhc2UgMjEwOgogWVlfUlVMRV9TRVRV
UAogeyByZXR1cm4gWE9SX09QOyB9CiAJWVlfQlJFQUsKLWNhc2UgMjA1OgorY2FzZSAyMTE6CiBZ
WV9SVUxFX1NFVFVQCiB7IHJldHVybiBMRV9PUDsgfQogCVlZX0JSRUFLCi1jYXNlIDIwNjoKK2Nh
c2UgMjEyOgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gR0VfT1A7IH0KIAlZWV9CUkVBSwotY2Fz
ZSAyMDc6CitjYXNlIDIxMzoKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuIEVRX09QOyB9CiAJWVlf
QlJFQUsKLWNhc2UgMjA4OgorY2FzZSAyMTQ6CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybiBORV9P
UDsgfQogCVlZX0JSRUFLCi1jYXNlIDIwOToKK2Nhc2UgMjE1OgogWVlfUlVMRV9TRVRVUAogeyBy
ZXR1cm4gTEVGVF9PUDsgfQogCVlZX0JSRUFLCi1jYXNlIDIxMDoKK2Nhc2UgMjE2OgogWVlfUlVM
RV9TRVRVUAogeyByZXR1cm4gUklHSFRfT1A7IH0KIAlZWV9CUkVBSwotY2FzZSAyMTE6CitjYXNl
IDIxNzoKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuIFNFTUlDT0xPTjsgfQogCVlZX0JSRUFLCi1j
YXNlIDIxMjoKK2Nhc2UgMjE4OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gTEVGVF9CUkFDRTsg
fQogCVlZX0JSRUFLCi1jYXNlIDIxMzoKK2Nhc2UgMjE5OgogWVlfUlVMRV9TRVRVUAogeyByZXR1
cm4gUklHSFRfQlJBQ0U7IH0KIAlZWV9CUkVBSwotY2FzZSAyMTQ6CitjYXNlIDIyMDoKIFlZX1JV
TEVfU0VUVVAKIHsgcmV0dXJuIENPTU1BOyB9CiAJWVlfQlJFQUsKLWNhc2UgMjE1OgorY2FzZSAy
MjE6CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybiBDT0xPTjsgfQogCVlZX0JSRUFLCi1jYXNlIDIx
NjoKK2Nhc2UgMjIyOgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gRVFVQUw7IH0KIAlZWV9CUkVB
SwotY2FzZSAyMTc6CitjYXNlIDIyMzoKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuIExFRlRfUEFS
RU47IH0KIAlZWV9CUkVBSwotY2FzZSAyMTg6CitjYXNlIDIyNDoKIFlZX1JVTEVfU0VUVVAKIHsg
cmV0dXJuIFJJR0hUX1BBUkVOOyB9CiAJWVlfQlJFQUsKLWNhc2UgMjE5OgorY2FzZSAyMjU6CiBZ
WV9SVUxFX1NFVFVQCiB7IHJldHVybiBMRUZUX0JSQUNLRVQ7IH0KIAlZWV9CUkVBSwotY2FzZSAy
MjA6CitjYXNlIDIyNjoKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuIFJJR0hUX0JSQUNLRVQ7IH0K
IAlZWV9CUkVBSwotY2FzZSAyMjE6CitjYXNlIDIyNzoKIFlZX1JVTEVfU0VUVVAKIHsgQkVHSU4o
RklFTERTKTsgcmV0dXJuIERPVDsgfQogCVlZX0JSRUFLCi1jYXNlIDIyMjoKK2Nhc2UgMjI4Ogog
WVlfUlVMRV9TRVRVUAogeyByZXR1cm4gQkFORzsgfQogCVlZX0JSRUFLCi1jYXNlIDIyMzoKK2Nh
c2UgMjI5OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gREFTSDsgfQogCVlZX0JSRUFLCi1jYXNl
IDIyNDoKK2Nhc2UgMjMwOgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gVElMREU7IH0KIAlZWV9C
UkVBSwotY2FzZSAyMjU6CitjYXNlIDIzMToKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuIFBMVVM7
IH0KIAlZWV9CUkVBSwotY2FzZSAyMjY6CitjYXNlIDIzMjoKIFlZX1JVTEVfU0VUVVAKIHsgcmV0
dXJuIFNUQVI7IH0KIAlZWV9CUkVBSwotY2FzZSAyMjc6CitjYXNlIDIzMzoKIFlZX1JVTEVfU0VU
VVAKIHsgcmV0dXJuIFNMQVNIOyB9CiAJWVlfQlJFQUsKLWNhc2UgMjI4OgorY2FzZSAyMzQ6CiBZ
WV9SVUxFX1NFVFVQCiB7IHJldHVybiBQRVJDRU5UOyB9CiAJWVlfQlJFQUsKLWNhc2UgMjI5Ogor
Y2FzZSAyMzU6CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybiBMRUZUX0FOR0xFOyB9CiAJWVlfQlJF
QUsKLWNhc2UgMjMwOgorY2FzZSAyMzY6CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybiBSSUdIVF9B
TkdMRTsgfQogCVlZX0JSRUFLCi1jYXNlIDIzMToKK2Nhc2UgMjM3OgogWVlfUlVMRV9TRVRVUAog
eyByZXR1cm4gVkVSVElDQUxfQkFSOyB9CiAJWVlfQlJFQUsKLWNhc2UgMjMyOgorY2FzZSAyMzg6
CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybiBDQVJFVDsgfQogCVlZX0JSRUFLCi1jYXNlIDIzMzoK
K2Nhc2UgMjM5OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gQU1QRVJTQU5EOyB9CiAJWVlfQlJF
QUsKLWNhc2UgMjM0OgorY2FzZSAyNDA6CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybiBRVUVTVElP
TjsgfQogCVlZX0JSRUFLCi1jYXNlIDIzNToKK2Nhc2UgMjQxOgogWVlfUlVMRV9TRVRVUAogewog
ICAgIEJFR0lOKElOSVRJQUwpOwpAQCAtMjA2NywxOSArMjIwMiwxOSBAQCBZWV9SVUxFX1NFVFVQ
CiAgICAgcmV0dXJuIEZJRUxEX1NFTEVDVElPTjsKIH0KIAlZWV9CUkVBSwotY2FzZSAyMzY6Citj
YXNlIDI0MjoKIFlZX1JVTEVfU0VUVVAKIHt9CiAJWVlfQlJFQUsKLWNhc2UgMjM3OgorY2FzZSAy
NDM6CiBZWV9SVUxFX1NFVFVQCiB7Ci0gICAgeXlleHRyYS0+ZXJyb3IoKnl5bGxvYywgIklsbGVn
YWwgY2hhcmFjdGVyIGF0IGZpZWxkbmFtZSBzdGFydCIsIHl5dGV4dCwgIiIpOworICAgIHl5ZXh0
cmEtPmVycm9yKCp5eWxsb2MsICJJbGxlZ2FsIGNoYXJhY3RlciBhdCBmaWVsZG5hbWUgc3RhcnQi
LCB5eXRleHQpOwogICAgIHJldHVybiAwOwogfQogCVlZX0JSRUFLCi1jYXNlIDIzODoKLS8qIHJ1
bGUgMjM4IGNhbiBtYXRjaCBlb2wgKi8KK2Nhc2UgMjQ0OgorLyogcnVsZSAyNDQgY2FuIG1hdGNo
IGVvbCAqLwogWVlfUlVMRV9TRVRVUAogeyB9CiAJWVlfQlJFQUsKQEAgLTIwODcsMTEgKzIyMjIs
MTEgQEAgY2FzZSBZWV9TVEFURV9FT0YoSU5JVElBTCk6CiBjYXNlIFlZX1NUQVRFX0VPRihGSUVM
RFMpOgogeyB5eXRlcm1pbmF0ZSgpOyB9CiAJWVlfQlJFQUsKLWNhc2UgMjM5OgorY2FzZSAyNDU6
CiBZWV9SVUxFX1NFVFVQCiB7IGFzc2VydChmYWxzZSk7IHJldHVybiAwOyB9CiAJWVlfQlJFQUsK
LWNhc2UgMjQwOgorY2FzZSAyNDY6CiBZWV9SVUxFX1NFVFVQCiBFQ0hPOwogCVlZX0JSRUFLCkBA
IC0yMzE3LDcgKzI0NTIsNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2Fu
X3QgeXlzY2FubmVyKQogCQkJeXlnLT55eV9jX2J1Zl9wID0gJmItPnl5X2NoX2J1Zlt5eV9jX2J1
Zl9wX29mZnNldF07CiAKIAkJCW51bV90b19yZWFkID0gWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVF
LT55eV9idWZfc2l6ZSAtCi0JCQkJCQludW1iZXJfdG9fbW92ZSAtIDE7CisJCQkJCQlzdGF0aWNf
Y2FzdDxpbnQ+KG51bWJlcl90b19tb3ZlKSAtIDE7CiAKIAkJCX0KIApAQCAtMjMyNSw4ICsyNDYw
LDEwIEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIp
CiAJCQludW1fdG9fcmVhZCA9IFlZX1JFQURfQlVGX1NJWkU7CiAKIAkJLyogUmVhZCBpbiBtb3Jl
IGRhdGEuICovCisgICAgICAgIHNpemVfdCByZXN1bHQgPSAwOwogCQlZWV9JTlBVVCggKCZZWV9D
VVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1ZltudW1iZXJfdG9fbW92ZV0pLAotCQkJeXln
LT55eV9uX2NoYXJzLCBudW1fdG9fcmVhZCApOworICAgICAgICAgICAgcmVzdWx0LCBudW1fdG9f
cmVhZCApOworICAgICAgICB5eWctPnl5X25fY2hhcnMgPSBzdGF0aWNfY2FzdDxpbnQ+KHJlc3Vs
dCk7CiAKIAkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9uX2NoYXJzID0geXlnLT55eV9u
X2NoYXJzOwogCQl9CkBAIC0yMzg4LDcgKzI1MjUsNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0
X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2FubmVyKQogCQl3aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5
X2N1cnJlbnRfc3RhdGVdICsgeXlfY10gIT0geXlfY3VycmVudF9zdGF0ZSApCiAJCQl7CiAJCQl5
eV9jdXJyZW50X3N0YXRlID0gKGludCkgeXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQkJaWYg
KCB5eV9jdXJyZW50X3N0YXRlID49IDgyMCApCisJCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUgPj0g
ODg2ICkKIAkJCQl5eV9jID0geXlfbWV0YVsodW5zaWduZWQgaW50KSB5eV9jXTsKIAkJCX0KIAkJ
eXlfY3VycmVudF9zdGF0ZSA9IHl5X254dFt5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgKHVu
c2lnbmVkIGludCkgeXlfY107CkBAIC0yNDE3LDExICsyNTU0LDExIEBAIHN0YXRpYyBpbnQgeXlf
Z2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCiAJd2hpbGUgKCB5eV9jaGtbeXlf
YmFzZVt5eV9jdXJyZW50X3N0YXRlXSArIHl5X2NdICE9IHl5X2N1cnJlbnRfc3RhdGUgKQogCQl7
CiAJCXl5X2N1cnJlbnRfc3RhdGUgPSAoaW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0J
CWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4MjAgKQorCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUg
Pj0gODg2ICkKIAkJCXl5X2MgPSB5eV9tZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQl9CiAJ
eXlfY3VycmVudF9zdGF0ZSA9IHl5X254dFt5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgKHVu
c2lnbmVkIGludCkgeXlfY107Ci0JeXlfaXNfamFtID0gKHl5X2N1cnJlbnRfc3RhdGUgPT0gODE5
KTsKKwl5eV9pc19qYW0gPSAoeXlfY3VycmVudF9zdGF0ZSA9PSA4ODUpOwogCiAJKHZvaWQpeXln
OwogCXJldHVybiB5eV9pc19qYW0gPyAwIDogeXlfY3VycmVudF9zdGF0ZTsKQEAgLTI3NjcsNyAr
MjkwNCw3IEBAIHN0YXRpYyB2b2lkIHl5ZW5zdXJlX2J1ZmZlcl9zdGFjayAoeXlzY2FuX3QgeXlz
Y2FubmVyKQogCQkvKiBJbmNyZWFzZSB0aGUgYnVmZmVyIHRvIHByZXBhcmUgZm9yIGEgcG9zc2li
bGUgcHVzaC4gKi8KIAkJaW50IGdyb3dfc2l6ZSA9IDggLyogYXJiaXRyYXJ5IGdyb3cgc2l6ZSAq
LzsKIAotCQludW1fdG9fYWxsb2MgPSB5eWctPnl5X2J1ZmZlcl9zdGFja19tYXggKyBncm93X3Np
emU7CisJCW51bV90b19hbGxvYyA9IHN0YXRpY19jYXN0PGludD4oeXlnLT55eV9idWZmZXJfc3Rh
Y2tfbWF4ICsgZ3Jvd19zaXplKTsKIAkJeXlnLT55eV9idWZmZXJfc3RhY2sgPSAoc3RydWN0IHl5
X2J1ZmZlcl9zdGF0ZSoqKXl5cmVhbGxvYwogCQkJCQkJCQkoeXlnLT55eV9idWZmZXJfc3RhY2ss
CiAJCQkJCQkJCW51bV90b19hbGxvYyAqIHNpemVvZihzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlKikK
QEAgLTI4MDEsNyArMjkzOCw3IEBAIFlZX0JVRkZFUl9TVEFURSB5eV9zY2FuX2J1ZmZlciAgKGNo
YXIgKiBiYXNlLCB5eV9zaXplX3QgIHNpemUgLCB5eXNjYW5fdCB5eXNjYW5uCiAJaWYgKCAhIGIg
KQogCQlZWV9GQVRBTF9FUlJPUiggIm91dCBvZiBkeW5hbWljIG1lbW9yeSBpbiB5eV9zY2FuX2J1
ZmZlcigpIiApOwogCi0JYi0+eXlfYnVmX3NpemUgPSBzaXplIC0gMjsJLyogIi0gMiIgdG8gdGFr
ZSBjYXJlIG9mIEVPQidzICovCisJYi0+eXlfYnVmX3NpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KHNp
emUpIC0gMjsJLyogIi0gMiIgdG8gdGFrZSBjYXJlIG9mIEVPQidzICovCiAJYi0+eXlfYnVmX3Bv
cyA9IGItPnl5X2NoX2J1ZiA9IGJhc2U7CiAJYi0+eXlfaXNfb3VyX2J1ZmZlciA9IDA7CiAJYi0+
eXlfaW5wdXRfZmlsZSA9IDA7CkBAIC0yODUwLDcgKzI5ODcsNyBAQCBZWV9CVUZGRVJfU1RBVEUg
eXlfc2Nhbl9ieXRlcyAgKHl5Y29uc3QgY2hhciAqIHl5Ynl0ZXMsIHl5X3NpemVfdCAgX3l5Ynl0
ZXNfbGVuCiAJaWYgKCAhIGJ1ZiApCiAJCVlZX0ZBVEFMX0VSUk9SKCAib3V0IG9mIGR5bmFtaWMg
bWVtb3J5IGluIHl5X3NjYW5fYnl0ZXMoKSIgKTsKIAotCWZvciAoIGkgPSAwOyBpIDwgX3l5Ynl0
ZXNfbGVuOyArK2kgKQorCWZvciAoIGkgPSAwOyBpIDwgc3RhdGljX2Nhc3Q8eXlfc2l6ZV90Pihf
eXlieXRlc19sZW4pOyArK2kgKQogCQlidWZbaV0gPSB5eWJ5dGVzW2ldOwogCiAJYnVmW195eWJ5
dGVzX2xlbl0gPSBidWZbX3l5Ynl0ZXNfbGVuKzFdID0gWVlfRU5EX09GX0JVRkZFUl9DSEFSOwpA
QCAtMzI3Myw3ICszNDEwLDcgQEAgaW50IGNoZWNrX3R5cGUoeXlzY2FuX3QgeXlzY2FubmVyKSB7
CiBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNjYW5uZXIpIHsKICAgICBzdHJ1Y3QgeXln
dXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSB5eXNjYW5uZXI7CiAKLSAgICB5eWV4dHJh
LT5lcnJvcigqeXlsbG9jLCAiSWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4dCwg
IiIpOworICAgIHl5ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJbGxlZ2FsIHVzZSBvZiByZXNlcnZl
ZCB3b3JkIiwgeXl0ZXh0KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMzMwMSw2ICszNDM4LDI0
IEBAIGludCBFUzJfa2V5d29yZF9FUzNfcmVzZXJ2ZWQoVFBhcnNlQ29udGV4dCAqY29udGV4dCwg
aW50IHRva2VuKQogICAgIHJldHVybiB0b2tlbjsKIH0KIAoraW50IEVTMl9pZGVudF9FUzNfcmVz
ZXJ2ZWRfRVMzXzFfa2V5d29yZChUUGFyc2VDb250ZXh0ICpjb250ZXh0LCBpbnQgdG9rZW4pCit7
CisgICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190KikgY29udGV4dC0+
Z2V0U2Nhbm5lcigpOworICAgIHl5c2Nhbl90IHl5c2Nhbm5lciA9ICh5eXNjYW5fdCkgY29udGV4
dC0+Z2V0U2Nhbm5lcigpOworCisgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSA8
IDMwMCkKKyAgICB7CisgICAgICAgIHl5bHZhbC0+bGV4LnN0cmluZyA9IE5ld1Bvb2xUU3RyaW5n
KHl5dGV4dCk7CisgICAgICAgIHJldHVybiBjaGVja190eXBlKHl5c2Nhbm5lcik7CisgICAgfQor
ICAgIGVsc2UgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSA9PSAzMDApCisgICAgewor
ICAgICAgICByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOworICAgIH0KKworICAgIHJl
dHVybiB0b2tlbjsKK30KKwogaW50IEVTMl9pZGVudF9FUzNfa2V5d29yZChUUGFyc2VDb250ZXh0
ICpjb250ZXh0LCBpbnQgdG9rZW4pCiB7CiAgICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3Ry
dWN0IHl5Z3V0c190KikgY29udGV4dC0+Z2V0U2Nhbm5lcigpOwpAQCAtMzMxNiwxOCArMzQ3MSw2
MCBAQCBpbnQgRVMyX2lkZW50X0VTM19rZXl3b3JkKFRQYXJzZUNvbnRleHQgKmNvbnRleHQsIGlu
dCB0b2tlbikKICAgICByZXR1cm4gdG9rZW47CiB9CiAKK2ludCBFUzJfYW5kX0VTM19yZXNlcnZl
ZF9FUzNfMV9rZXl3b3JkKFRQYXJzZUNvbnRleHQgKmNvbnRleHQsIGludCB0b2tlbikKK3sKKyAg
ICB5eXNjYW5fdCB5eXNjYW5uZXIgPSAoeXlzY2FuX3QpIGNvbnRleHQtPmdldFNjYW5uZXIoKTsK
KworICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkgPCAzMTApCisgICAgeworICAg
ICAgICByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNjYW5uZXIpOworICAgIH0KKworICAgIHJldHVy
biB0b2tlbjsKK30KKworaW50IEVTMl9hbmRfRVMzX2lkZW50X0VTM18xX2tleXdvcmQoVFBhcnNl
Q29udGV4dCAqY29udGV4dCwgaW50IHRva2VuKQoreworICAgIHN0cnVjdCB5eWd1dHNfdCogeXln
ID0gKHN0cnVjdCB5eWd1dHNfdCopIGNvbnRleHQtPmdldFNjYW5uZXIoKTsKKyAgICB5eXNjYW5f
dCB5eXNjYW5uZXIgPSAoeXlzY2FuX3QpIGNvbnRleHQtPmdldFNjYW5uZXIoKTsKKworICAgIC8v
IG5vdCBhIHJlc2VydmVkIHdvcmQgaW4gR0xTTCBFUyAxLjAwIGFuZCBHTFNMIEVTIDMuMDAsIHNv
IGNvdWxkIGJlIHVzZWQgYXMgYW4gaWRlbnRpZmllci90eXBlIG5hbWUKKyAgICBpZiAoY29udGV4
dC0+Z2V0U2hhZGVyVmVyc2lvbigpIDwgMzEwKQorICAgIHsKKyAgICAgICAgeXlsdmFsLT5sZXgu
c3RyaW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0KTsKKyAgICAgICAgcmV0dXJuIGNoZWNrX3R5
cGUoeXlzY2FubmVyKTsKKyAgICB9CisKKyAgICByZXR1cm4gdG9rZW47Cit9CisKK2ludCBFUzNf
ZXh0ZW5zaW9uX2tleXdvcmRfZWxzZV9pZGVudChUUGFyc2VDb250ZXh0ICpjb250ZXh0LCBjb25z
dCBjaGFyKiBleHRlbnNpb24sIGludCB0b2tlbikKK3sKKyAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5
ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSBjb250ZXh0LT5nZXRTY2FubmVyKCk7CisgICAgeXlzY2Fu
X3QgeXlzY2FubmVyID0gKHl5c2Nhbl90KSBjb250ZXh0LT5nZXRTY2FubmVyKCk7CisKKyAgICAv
LyBhIHJlc2VydmVkIHdvcmQgaW4gR0xTTCBFUyAzLjAwIHdpdGggZW5hYmxlZCBleHRlbnNpb24s
IG90aGVyd2lzZSBjb3VsZCBiZSB1c2VkIGFzIGFuIGlkZW50aWZpZXIvdHlwZSBuYW1lCisgICAg
aWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSA+PSAzMDAgJiYgY29udGV4dC0+aXNFeHRl
bnNpb25FbmFibGVkKGV4dGVuc2lvbikpCisgICAgeworICAgICAgICByZXR1cm4gdG9rZW47Cisg
ICAgfQorCisgICAgeXlsdmFsLT5sZXguc3RyaW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0KTsK
KyAgICByZXR1cm4gY2hlY2tfdHlwZSh5eXNjYW5uZXIpOworfQorCiBpbnQgdWludF9jb25zdGFu
dChUUGFyc2VDb250ZXh0ICpjb250ZXh0KQogewogICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0g
KHN0cnVjdCB5eWd1dHNfdCopIGNvbnRleHQtPmdldFNjYW5uZXIoKTsKIAogICAgIGlmIChjb250
ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkgPCAzMDApCiAgICAgewotICAgICAgICBjb250ZXh0LT5l
cnJvcigqeXlsbG9jLCAiVW5zaWduZWQgaW50ZWdlcnMgYXJlIHVuc3VwcG9ydGVkIHByaW9yIHRv
IEdMU0wgRVMgMy4wMCIsIHl5dGV4dCwgIiIpOworICAgICAgICBjb250ZXh0LT5lcnJvcigqeXls
bG9jLCAiVW5zaWduZWQgaW50ZWdlcnMgYXJlIHVuc3VwcG9ydGVkIHByaW9yIHRvIEdMU0wgRVMg
My4wMCIsIHl5dGV4dCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIGlmICghYXRv
aV9jbGFtcCh5eXRleHQsICYoeXlsdmFsLT5sZXgudSkpKQotICAgICAgICB5eWV4dHJhLT5lcnJv
cigqeXlsbG9jLCAiSW50ZWdlciBvdmVyZmxvdyIsIHl5dGV4dCwgIiIpOworICAgICAgICB5eWV4
dHJhLT5lcnJvcigqeXlsbG9jLCAiSW50ZWdlciBvdmVyZmxvdyIsIHl5dGV4dCk7CiAKICAgICBy
ZXR1cm4gVUlOVENPTlNUQU5UOwogfQpAQCAtMzM0NSw3ICszNTQyLDcgQEAgaW50IGZsb2F0c3Vm
Zml4X2NoZWNrKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpCiAgICAgc3RkOjpzdHJpbmcgdGV4dCA9
IHl5dGV4dDsKICAgICB0ZXh0LnJlc2l6ZSh0ZXh0LnNpemUoKSAtIDEpOwogICAgIGlmICghc3Ry
dG9mX2NsYW1wKHRleHQsICYoeXlsdmFsLT5sZXguZikpKQotICAgICAgICB5eWV4dHJhLT53YXJu
aW5nKCp5eWxsb2MsICJGbG9hdCBvdmVyZmxvdyIsIHl5dGV4dCwgIiIpOworICAgICAgICB5eWV4
dHJhLT53YXJuaW5nKCp5eWxsb2MsICJGbG9hdCBvdmVyZmxvdyIsIHl5dGV4dCk7CiAKICAgICBy
ZXR1cm4oRkxPQVRDT05TVEFOVCk7CiB9CkBAIC0zMzYxLDkgKzM1NTgsOSBAQCBpbnQgaW50X2Nv
bnN0YW50KFRQYXJzZUNvbnRleHQgKmNvbnRleHQpIHsKICAgICBpZiAoIWF0b2lfY2xhbXAoeXl0
ZXh0LCAmdSkpCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVmVyc2lvbigp
ID49IDMwMCkKLSAgICAgICAgICAgIHl5ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJbnRlZ2VyIG92
ZXJmbG93IiwgeXl0ZXh0LCAiIik7CisgICAgICAgICAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9j
LCAiSW50ZWdlciBvdmVyZmxvdyIsIHl5dGV4dCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHl5ZXh0cmEtPndhcm5pbmcoKnl5bGxvYywgIkludGVnZXIgb3ZlcmZsb3ciLCB5eXRleHQsICIi
KTsKKyAgICAgICAgICAgIHl5ZXh0cmEtPndhcm5pbmcoKnl5bGxvYywgIkludGVnZXIgb3ZlcmZs
b3ciLCB5eXRleHQpOwogICAgIH0KICAgICB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50
Pih1KTsKICAgICByZXR1cm4gSU5UQ09OU1RBTlQ7CkBAIC0zMzczLDEwICszNTcwLDI2IEBAIGlu
dCBmbG9hdF9jb25zdGFudCh5eXNjYW5fdCB5eXNjYW5uZXIpIHsKICAgICBzdHJ1Y3QgeXlndXRz
X3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSB5eXNjYW5uZXI7CiAKICAgICBpZiAoIXN0cnRv
Zl9jbGFtcCh5eXRleHQsICYoeXlsdmFsLT5sZXguZikpKQotICAgICAgICB5eWV4dHJhLT53YXJu
aW5nKCp5eWxsb2MsICJGbG9hdCBvdmVyZmxvdyIsIHl5dGV4dCwgIiIpOworICAgICAgICB5eWV4
dHJhLT53YXJuaW5nKCp5eWxsb2MsICJGbG9hdCBvdmVyZmxvdyIsIHl5dGV4dCk7CiAgICAgcmV0
dXJuIEZMT0FUQ09OU1RBTlQ7CiB9CiAKK2ludCB5dXZjc2NzdGFuZGFyZGV4dF9jb25zdGFudChU
UGFyc2VDb250ZXh0ICpjb250ZXh0KQoreworICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0
cnVjdCB5eWd1dHNfdCopIGNvbnRleHQtPmdldFNjYW5uZXIoKTsKKyAgICB5eXNjYW5fdCB5eXNj
YW5uZXIgPSAoeXlzY2FuX3QpIGNvbnRleHQtPmdldFNjYW5uZXIoKTsKKworICAgIC8vIGEgcmVz
ZXJ2ZWQgd29yZCBpbiBHTFNMIEVTIDMuMDAgd2l0aCBlbmFibGVkIGV4dGVuc2lvbiwgb3RoZXJ3
aXNlIGNvdWxkIGJlIHVzZWQgYXMgYW4gaWRlbnRpZmllci90eXBlIG5hbWUKKyAgICBpZiAoY29u
dGV4dC0+Z2V0U2hhZGVyVmVyc2lvbigpID49IDMwMCAmJiBjb250ZXh0LT5pc0V4dGVuc2lvbkVu
YWJsZWQoIkdMX0VYVF9ZVVZfdGFyZ2V0IikpCisgICAgeworICAgICAgICB5eWx2YWwtPmxleC5z
dHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOworICAgICAgICByZXR1cm4gWVVWQ1NDU1RB
TkRBUkRFWFRDT05TVEFOVDsKKyAgICB9CisKKyAgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQ
b29sVFN0cmluZyh5eXRleHQpOworICAgIHJldHVybiBjaGVja190eXBlKHl5c2Nhbm5lcik7Cit9
CisKIGludCBnbHNsYW5nX2luaXRpYWxpemUoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAg
IHl5c2Nhbl90IHNjYW5uZXIgPSBOVUxMOwogICAgIGlmICh5eWxleF9pbml0X2V4dHJhKGNvbnRl
eHQsJnNjYW5uZXIpKQpAQCAtMzQxNyw3ICszNjMwLDcgQEAgaW50IGdsc2xhbmdfc2NhbihzaXpl
X3QgY291bnQsIGNvbnN0IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10s
CiAgICAgaWYgKGNvbnRleHQtPmdldEZyYWdtZW50UHJlY2lzaW9uSGlnaCgpKQogICAgICAgICBw
cmVwcm9jZXNzb3ItPnByZWRlZmluZU1hY3JvKCJHTF9GUkFHTUVOVF9QUkVDSVNJT05fSElHSCIs
IDEpOwogCi0gICAgcHJlcHJvY2Vzc29yLT5zZXRNYXhUb2tlblNpemUoR2V0R2xvYmFsTWF4VG9r
ZW5TaXplKGNvbnRleHQtPmdldFNoYWRlclNwZWMoKSkpOworICAgIHByZXByb2Nlc3Nvci0+c2V0
TWF4VG9rZW5TaXplKHNoOjpHZXRHbG9iYWxNYXhUb2tlblNpemUoY29udGV4dC0+Z2V0U2hhZGVy
U3BlYygpKSk7CiAKICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdfdGFiLmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdfdGFiLmNw
cAppbmRleCAzZTUwZmJjNGI1MjM5MjdhNDY5NTg5ZTBiMjY3NDNjOWFjYTY1ZjYxLi4wNDg0ZTlm
NTIwYTIxMTdkNDQyZGRiMDYwNGM4OTFmMTQxYmQzODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX3RhYi5jcHAKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFu
Z190YWIuY3BwCkBAIC02MCwxMiArNjAsOCBAQAogLyogUHVsbCBwYXJzZXJzLiAgKi8KICNkZWZp
bmUgWVlQVUxMIDEKIAotCi0KLQogLyogQ29weSB0aGUgZmlyc3QgcGFydCBvZiB1c2VyIGRlY2xh
cmF0aW9ucy4gICovCiAKLQogLy8KIC8vIENvcHlyaWdodCAoYykgMjAwMi0yMDE0IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CkBAIC05OCw2ICs5NCw4IEBACiAKICNkZWZpbmUgWVlFTkFCTEVfTkxTIDAKIAordXNpbmcgbmFt
ZXNwYWNlIHNoOworCiAKIAogCkBAIC0xOTIsODAgKzE5MCwxMDQgQEAgZXh0ZXJuIGludCB5eWRl
YnVnOwogICAgIENFTlRST0lEID0gMzA2LAogICAgIEZMQVQgPSAzMDcsCiAgICAgU01PT1RIID0g
MzA4LAotICAgIFNUUlVDVCA9IDMwOSwKLSAgICBWT0lEX1RZUEUgPSAzMTAsCi0gICAgV0hJTEUg
PSAzMTEsCi0gICAgU0FNUExFUjJEID0gMzEyLAotICAgIFNBTVBMRVJDVUJFID0gMzEzLAotICAg
IFNBTVBMRVJfRVhURVJOQUxfT0VTID0gMzE0LAotICAgIFNBTVBMRVIyRFJFQ1QgPSAzMTUsCi0g
ICAgU0FNUExFUjJEQVJSQVkgPSAzMTYsCi0gICAgSVNBTVBMRVIyRCA9IDMxNywKLSAgICBJU0FN
UExFUjNEID0gMzE4LAotICAgIElTQU1QTEVSQ1VCRSA9IDMxOSwKLSAgICBJU0FNUExFUjJEQVJS
QVkgPSAzMjAsCi0gICAgVVNBTVBMRVIyRCA9IDMyMSwKLSAgICBVU0FNUExFUjNEID0gMzIyLAot
ICAgIFVTQU1QTEVSQ1VCRSA9IDMyMywKLSAgICBVU0FNUExFUjJEQVJSQVkgPSAzMjQsCi0gICAg
U0FNUExFUjNEID0gMzI1LAotICAgIFNBTVBMRVIzRFJFQ1QgPSAzMjYsCi0gICAgU0FNUExFUjJE
U0hBRE9XID0gMzI3LAotICAgIFNBTVBMRVJDVUJFU0hBRE9XID0gMzI4LAotICAgIFNBTVBMRVIy
REFSUkFZU0hBRE9XID0gMzI5LAotICAgIExBWU9VVCA9IDMzMCwKLSAgICBJREVOVElGSUVSID0g
MzMxLAotICAgIFRZUEVfTkFNRSA9IDMzMiwKLSAgICBGTE9BVENPTlNUQU5UID0gMzMzLAotICAg
IElOVENPTlNUQU5UID0gMzM0LAotICAgIFVJTlRDT05TVEFOVCA9IDMzNSwKLSAgICBCT09MQ09O
U1RBTlQgPSAzMzYsCi0gICAgRklFTERfU0VMRUNUSU9OID0gMzM3LAotICAgIExFRlRfT1AgPSAz
MzgsCi0gICAgUklHSFRfT1AgPSAzMzksCi0gICAgSU5DX09QID0gMzQwLAotICAgIERFQ19PUCA9
IDM0MSwKLSAgICBMRV9PUCA9IDM0MiwKLSAgICBHRV9PUCA9IDM0MywKLSAgICBFUV9PUCA9IDM0
NCwKLSAgICBORV9PUCA9IDM0NSwKLSAgICBBTkRfT1AgPSAzNDYsCi0gICAgT1JfT1AgPSAzNDcs
Ci0gICAgWE9SX09QID0gMzQ4LAotICAgIE1VTF9BU1NJR04gPSAzNDksCi0gICAgRElWX0FTU0lH
TiA9IDM1MCwKLSAgICBBRERfQVNTSUdOID0gMzUxLAotICAgIE1PRF9BU1NJR04gPSAzNTIsCi0g
ICAgTEVGVF9BU1NJR04gPSAzNTMsCi0gICAgUklHSFRfQVNTSUdOID0gMzU0LAotICAgIEFORF9B
U1NJR04gPSAzNTUsCi0gICAgWE9SX0FTU0lHTiA9IDM1NiwKLSAgICBPUl9BU1NJR04gPSAzNTcs
Ci0gICAgU1VCX0FTU0lHTiA9IDM1OCwKLSAgICBMRUZUX1BBUkVOID0gMzU5LAotICAgIFJJR0hU
X1BBUkVOID0gMzYwLAotICAgIExFRlRfQlJBQ0tFVCA9IDM2MSwKLSAgICBSSUdIVF9CUkFDS0VU
ID0gMzYyLAotICAgIExFRlRfQlJBQ0UgPSAzNjMsCi0gICAgUklHSFRfQlJBQ0UgPSAzNjQsCi0g
ICAgRE9UID0gMzY1LAotICAgIENPTU1BID0gMzY2LAotICAgIENPTE9OID0gMzY3LAotICAgIEVR
VUFMID0gMzY4LAotICAgIFNFTUlDT0xPTiA9IDM2OSwKLSAgICBCQU5HID0gMzcwLAotICAgIERB
U0ggPSAzNzEsCi0gICAgVElMREUgPSAzNzIsCi0gICAgUExVUyA9IDM3MywKLSAgICBTVEFSID0g
Mzc0LAotICAgIFNMQVNIID0gMzc1LAotICAgIFBFUkNFTlQgPSAzNzYsCi0gICAgTEVGVF9BTkdM
RSA9IDM3NywKLSAgICBSSUdIVF9BTkdMRSA9IDM3OCwKLSAgICBWRVJUSUNBTF9CQVIgPSAzNzks
Ci0gICAgQ0FSRVQgPSAzODAsCi0gICAgQU1QRVJTQU5EID0gMzgxLAotICAgIFFVRVNUSU9OID0g
MzgyCisgICAgUkVBRE9OTFkgPSAzMDksCisgICAgV1JJVEVPTkxZID0gMzEwLAorICAgIENPSEVS
RU5UID0gMzExLAorICAgIFJFU1RSSUNUID0gMzEyLAorICAgIFZPTEFUSUxFID0gMzEzLAorICAg
IFNIQVJFRCA9IDMxNCwKKyAgICBTVFJVQ1QgPSAzMTUsCisgICAgVk9JRF9UWVBFID0gMzE2LAor
ICAgIFdISUxFID0gMzE3LAorICAgIFNBTVBMRVIyRCA9IDMxOCwKKyAgICBTQU1QTEVSQ1VCRSA9
IDMxOSwKKyAgICBTQU1QTEVSX0VYVEVSTkFMX09FUyA9IDMyMCwKKyAgICBTQU1QTEVSMkRSRUNU
ID0gMzIxLAorICAgIFNBTVBMRVIyREFSUkFZID0gMzIyLAorICAgIElTQU1QTEVSMkQgPSAzMjMs
CisgICAgSVNBTVBMRVIzRCA9IDMyNCwKKyAgICBJU0FNUExFUkNVQkUgPSAzMjUsCisgICAgSVNB
TVBMRVIyREFSUkFZID0gMzI2LAorICAgIFVTQU1QTEVSMkQgPSAzMjcsCisgICAgVVNBTVBMRVIz
RCA9IDMyOCwKKyAgICBVU0FNUExFUkNVQkUgPSAzMjksCisgICAgVVNBTVBMRVIyREFSUkFZID0g
MzMwLAorICAgIFNBTVBMRVIyRE1TID0gMzMxLAorICAgIElTQU1QTEVSMkRNUyA9IDMzMiwKKyAg
ICBVU0FNUExFUjJETVMgPSAzMzMsCisgICAgU0FNUExFUjNEID0gMzM0LAorICAgIFNBTVBMRVIz
RFJFQ1QgPSAzMzUsCisgICAgU0FNUExFUjJEU0hBRE9XID0gMzM2LAorICAgIFNBTVBMRVJDVUJF
U0hBRE9XID0gMzM3LAorICAgIFNBTVBMRVIyREFSUkFZU0hBRE9XID0gMzM4LAorICAgIFNBTVBM
RVJFWFRFUk5BTDJEWTJZRVhUID0gMzM5LAorICAgIElNQUdFMkQgPSAzNDAsCisgICAgSUlNQUdF
MkQgPSAzNDEsCisgICAgVUlNQUdFMkQgPSAzNDIsCisgICAgSU1BR0UzRCA9IDM0MywKKyAgICBJ
SU1BR0UzRCA9IDM0NCwKKyAgICBVSU1BR0UzRCA9IDM0NSwKKyAgICBJTUFHRTJEQVJSQVkgPSAz
NDYsCisgICAgSUlNQUdFMkRBUlJBWSA9IDM0NywKKyAgICBVSU1BR0UyREFSUkFZID0gMzQ4LAor
ICAgIElNQUdFQ1VCRSA9IDM0OSwKKyAgICBJSU1BR0VDVUJFID0gMzUwLAorICAgIFVJTUFHRUNV
QkUgPSAzNTEsCisgICAgTEFZT1VUID0gMzUyLAorICAgIFlVVkNTQ1NUQU5EQVJERVhUID0gMzUz
LAorICAgIFlVVkNTQ1NUQU5EQVJERVhUQ09OU1RBTlQgPSAzNTQsCisgICAgSURFTlRJRklFUiA9
IDM1NSwKKyAgICBUWVBFX05BTUUgPSAzNTYsCisgICAgRkxPQVRDT05TVEFOVCA9IDM1NywKKyAg
ICBJTlRDT05TVEFOVCA9IDM1OCwKKyAgICBVSU5UQ09OU1RBTlQgPSAzNTksCisgICAgQk9PTENP
TlNUQU5UID0gMzYwLAorICAgIEZJRUxEX1NFTEVDVElPTiA9IDM2MSwKKyAgICBMRUZUX09QID0g
MzYyLAorICAgIFJJR0hUX09QID0gMzYzLAorICAgIElOQ19PUCA9IDM2NCwKKyAgICBERUNfT1Ag
PSAzNjUsCisgICAgTEVfT1AgPSAzNjYsCisgICAgR0VfT1AgPSAzNjcsCisgICAgRVFfT1AgPSAz
NjgsCisgICAgTkVfT1AgPSAzNjksCisgICAgQU5EX09QID0gMzcwLAorICAgIE9SX09QID0gMzcx
LAorICAgIFhPUl9PUCA9IDM3MiwKKyAgICBNVUxfQVNTSUdOID0gMzczLAorICAgIERJVl9BU1NJ
R04gPSAzNzQsCisgICAgQUREX0FTU0lHTiA9IDM3NSwKKyAgICBNT0RfQVNTSUdOID0gMzc2LAor
ICAgIExFRlRfQVNTSUdOID0gMzc3LAorICAgIFJJR0hUX0FTU0lHTiA9IDM3OCwKKyAgICBBTkRf
QVNTSUdOID0gMzc5LAorICAgIFhPUl9BU1NJR04gPSAzODAsCisgICAgT1JfQVNTSUdOID0gMzgx
LAorICAgIFNVQl9BU1NJR04gPSAzODIsCisgICAgTEVGVF9QQVJFTiA9IDM4MywKKyAgICBSSUdI
VF9QQVJFTiA9IDM4NCwKKyAgICBMRUZUX0JSQUNLRVQgPSAzODUsCisgICAgUklHSFRfQlJBQ0tF
VCA9IDM4NiwKKyAgICBMRUZUX0JSQUNFID0gMzg3LAorICAgIFJJR0hUX0JSQUNFID0gMzg4LAor
ICAgIERPVCA9IDM4OSwKKyAgICBDT01NQSA9IDM5MCwKKyAgICBDT0xPTiA9IDM5MSwKKyAgICBF
UVVBTCA9IDM5MiwKKyAgICBTRU1JQ09MT04gPSAzOTMsCisgICAgQkFORyA9IDM5NCwKKyAgICBE
QVNIID0gMzk1LAorICAgIFRJTERFID0gMzk2LAorICAgIFBMVVMgPSAzOTcsCisgICAgU1RBUiA9
IDM5OCwKKyAgICBTTEFTSCA9IDM5OSwKKyAgICBQRVJDRU5UID0gNDAwLAorICAgIExFRlRfQU5H
TEUgPSA0MDEsCisgICAgUklHSFRfQU5HTEUgPSA0MDIsCisgICAgVkVSVElDQUxfQkFSID0gNDAz
LAorICAgIENBUkVUID0gNDA0LAorICAgIEFNUEVSU0FORCA9IDQwNSwKKyAgICBRVUVTVElPTiA9
IDQwNgogICB9OwogI2VuZGlmCiAKQEAgLTI4OSwxMyArMzExLDE2IEBAIHVuaW9uIFlZU1RZUEUK
ICAgICBzdHJ1Y3QgewogICAgICAgICBUT3BlcmF0b3Igb3A7CiAgICAgICAgIHVuaW9uIHsKLSAg
ICAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOworICAgICAgICAgICAgVEludGVybU5v
ZGUgKmludGVybU5vZGU7CiAgICAgICAgICAgICBUSW50ZXJtTm9kZVBhaXIgbm9kZVBhaXI7Ci0g
ICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGludGVybVR5cGVkTm9kZTsKLSAgICAgICAgICAgIFRJ
bnRlcm1BZ2dyZWdhdGUqIGludGVybUFnZ3JlZ2F0ZTsKLSAgICAgICAgICAgIFRJbnRlcm1CbG9j
ayogaW50ZXJtQmxvY2s7Ci0gICAgICAgICAgICBUSW50ZXJtU3dpdGNoKiBpbnRlcm1Td2l0Y2g7
Ci0gICAgICAgICAgICBUSW50ZXJtQ2FzZSogaW50ZXJtQ2FzZTsKKyAgICAgICAgICAgIFRJbnRl
cm1GdW5jdGlvbkNhbGxPck1ldGhvZCBjYWxsT3JNZXRob2RQYWlyOworICAgICAgICAgICAgVElu
dGVybVR5cGVkICppbnRlcm1UeXBlZE5vZGU7CisgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRl
ICppbnRlcm1BZ2dyZWdhdGU7CisgICAgICAgICAgICBUSW50ZXJtQmxvY2sgKmludGVybUJsb2Nr
OworICAgICAgICAgICAgVEludGVybURlY2xhcmF0aW9uICppbnRlcm1EZWNsYXJhdGlvbjsKKyAg
ICAgICAgICAgIFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAqaW50ZXJtRnVuY3Rpb25Qcm90b3R5
cGU7CisgICAgICAgICAgICBUSW50ZXJtU3dpdGNoICppbnRlcm1Td2l0Y2g7CisgICAgICAgICAg
ICBUSW50ZXJtQ2FzZSAqaW50ZXJtQ2FzZTsKICAgICAgICAgfTsKICAgICAgICAgdW5pb24gewog
ICAgICAgICAgICAgVFR5cGVTcGVjaWZpZXJOb25BcnJheSB0eXBlU3BlY2lmaWVyTm9uQXJyYXk7
CkBAIC0zMDMsMTIgKzMyOCwxMiBAQCB1bmlvbiBZWVNUWVBFCiAgICAgICAgICAgICBUUHJlY2lz
aW9uIHByZWNpc2lvbjsKICAgICAgICAgICAgIFRMYXlvdXRRdWFsaWZpZXIgbGF5b3V0UXVhbGlm
aWVyOwogICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7Ci0gICAgICAgICAgICBURnVu
Y3Rpb24qIGZ1bmN0aW9uOworICAgICAgICAgICAgVEZ1bmN0aW9uICpmdW5jdGlvbjsKICAgICAg
ICAgICAgIFRQYXJhbWV0ZXIgcGFyYW07Ci0gICAgICAgICAgICBURmllbGQqIGZpZWxkOwotICAg
ICAgICAgICAgVEZpZWxkTGlzdCogZmllbGRMaXN0OwotICAgICAgICAgICAgVFF1YWxpZmllcldy
YXBwZXJCYXNlKiBxdWFsaWZpZXJXcmFwcGVyOwotICAgICAgICAgICAgVFR5cGVRdWFsaWZpZXJC
dWlsZGVyKiB0eXBlUXVhbGlmaWVyQnVpbGRlcjsKKyAgICAgICAgICAgIFRGaWVsZCAqZmllbGQ7
CisgICAgICAgICAgICBURmllbGRMaXN0ICpmaWVsZExpc3Q7CisgICAgICAgICAgICBUUXVhbGlm
aWVyV3JhcHBlckJhc2UgKnF1YWxpZmllcldyYXBwZXI7CisgICAgICAgICAgICBUVHlwZVF1YWxp
ZmllckJ1aWxkZXIgKnR5cGVRdWFsaWZpZXJCdWlsZGVyOwogICAgICAgICB9OwogICAgIH0gaW50
ZXJtOwogCkBAIC02NDYsMjMgKzY3MSwyMyBAQCB1bmlvbiB5eWFsbG9jCiAjZW5kaWYgLyogIVlZ
Q09QWV9ORUVERUQgKi8KIAogLyogWVlGSU5BTCAtLSBTdGF0ZSBudW1iZXIgb2YgdGhlIHRlcm1p
bmF0aW9uIHN0YXRlLiAgKi8KLSNkZWZpbmUgWVlGSU5BTCAgMTA5CisjZGVmaW5lIFlZRklOQUwg
IDEzMgogLyogWVlMQVNUIC0tIExhc3QgaW5kZXggaW4gWVlUQUJMRS4gICovCi0jZGVmaW5lIFlZ
TEFTVCAgIDI0MzIKKyNkZWZpbmUgWVlMQVNUICAgMjk5MwogCiAvKiBZWU5UT0tFTlMgLS0gTnVt
YmVyIG9mIHRlcm1pbmFscy4gICovCi0jZGVmaW5lIFlZTlRPS0VOUyAgMTI4CisjZGVmaW5lIFlZ
TlRPS0VOUyAgMTUyCiAvKiBZWU5OVFMgLS0gTnVtYmVyIG9mIG5vbnRlcm1pbmFscy4gICovCiAj
ZGVmaW5lIFlZTk5UUyAgOTQKIC8qIFlZTlJVTEVTIC0tIE51bWJlciBvZiBydWxlcy4gICovCi0j
ZGVmaW5lIFlZTlJVTEVTICAyNjkKKyNkZWZpbmUgWVlOUlVMRVMgIDI5NAogLyogWVlOU1RBVEVT
IC0tIE51bWJlciBvZiBzdGF0ZXMuICAqLwotI2RlZmluZSBZWU5TVEFURVMgIDQwNQorI2RlZmlu
ZSBZWU5TVEFURVMgIDQzMAogCiAvKiBZWVRSQU5TTEFURVtZWVhdIC0tIFN5bWJvbCBudW1iZXIg
Y29ycmVzcG9uZGluZyB0byBZWVggYXMgcmV0dXJuZWQKICAgIGJ5IHl5bGV4LCB3aXRoIG91dC1v
Zi1ib3VuZHMgY2hlY2tpbmcuICAqLwogI2RlZmluZSBZWVVOREVGVE9LICAyCi0jZGVmaW5lIFlZ
TUFYVVRPSyAgIDM4MgorI2RlZmluZSBZWU1BWFVUT0sgICA0MDYKIAogI2RlZmluZSBZWVRSQU5T
TEFURShZWVgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAogICAoKHVuc2lnbmVkIGludCkgKFlZWCkgPD0gWVlNQVhVVE9LID8geXl0cmFuc2xhdGVbWVlY
XSA6IFlZVU5ERUZUT0spCkBAIC03MDksNDAgKzczNCw0NSBAQCBzdGF0aWMgY29uc3QgeXl0eXBl
X3VpbnQ4IHl5dHJhbnNsYXRlW10gPQogICAgICAgOTUsICAgIDk2LCAgICA5NywgICAgOTgsICAg
IDk5LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsCiAgICAgIDEwNSwgICAxMDYs
ICAgMTA3LCAgIDEwOCwgICAxMDksICAgMTEwLCAgIDExMSwgICAxMTIsICAgMTEzLCAgIDExNCwK
ICAgICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgIDExOSwgICAxMjAsICAgMTIxLCAgIDEy
MiwgICAxMjMsICAgMTI0LAotICAgICAxMjUsICAgMTI2LCAgIDEyNworICAgICAxMjUsICAgMTI2
LCAgIDEyNywgICAxMjgsICAgMTI5LCAgIDEzMCwgICAxMzEsICAgMTMyLCAgIDEzMywgICAxMzQs
CisgICAgIDEzNSwgICAxMzYsICAgMTM3LCAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0MSwgICAx
NDIsICAgMTQzLCAgIDE0NCwKKyAgICAgMTQ1LCAgIDE0NiwgICAxNDcsICAgMTQ4LCAgIDE0OSwg
ICAxNTAsICAgMTUxCiB9OwogCiAjaWYgWVlERUJVRwogICAvKiBZWVJMSU5FW1lZTl0gLS0gU291
cmNlIGxpbmUgd2hlcmUgcnVsZSBudW1iZXIgWVlOIHdhcyBkZWZpbmVkLiAgKi8KIHN0YXRpYyBj
b25zdCB5eXR5cGVfdWludDE2IHl5cmxpbmVbXSA9CiB7Ci0gICAgICAgMCwgICAyMzcsICAgMjM3
LCAgIDIzOCwgICAyNDEsICAgMjUxLCAgIDI1NCwgICAyNTksICAgMjY0LCAgIDI2OSwKLSAgICAg
Mjc0LCAgIDI4MCwgICAyODMsICAgMjg2LCAgIDI4OSwgICAyOTIsICAgMjk1LCAgIDMwMSwgICAz
MDgsICAgMzE5LAotICAgICAzMjMsICAgMzMxLCAgIDMzNCwgICAzNDAsICAgMzQ0LCAgIDM1MSwg
ICAzNTcsICAgMzY2LCAgIDM3NCwgICAzODAsCi0gICAgIDM4NiwgICAzOTUsICAgMzk4LCAgIDQw
MSwgICA0MDQsICAgNDE0LCAgIDQxNSwgICA0MTYsICAgNDE3LCAgIDQyNSwKLSAgICAgNDI2LCAg
IDQyOSwgICA0MzIsICAgNDM5LCAgIDQ0MCwgICA0NDMsICAgNDQ5LCAgIDQ1MCwgICA0NTQsICAg
NDYxLAotICAgICA0NjIsICAgNDY1LCAgIDQ2OCwgICA0NzEsICAgNDc3LCAgIDQ3OCwgICA0ODEs
ICAgNDg3LCAgIDQ4OCwgICA0OTUsCi0gICAgIDQ5NiwgICA1MDMsICAgNTA0LCAgIDUxMSwgICA1
MTIsICAgNTE4LCAgIDUxOSwgICA1MjUsICAgNTI2LCAgIDUzMiwKLSAgICAgNTMzLCAgIDUzOSwg
ICA1NDAsICAgNTQ3LCAgIDU0OCwgICA1NDksICAgNTUwLCAgIDU1NCwgICA1NTUsICAgNTU2LAot
ICAgICA1NjAsICAgNTY0LCAgIDU2OCwgICA1NzIsICAgNTc5LCAgIDU4MiwgICA1ODgsICAgNTk1
LCAgIDYwMiwgICA2MDUsCi0gICAgIDYxMSwgICA2MjAsICAgNjI0LCAgIDYyOCwgICA2MzIsICAg
NjM2LCAgIDY0MywgICA2NTAsICAgNjUzLCAgIDY2MCwKLSAgICAgNjY4LCAgIDY4OCwgICA2OTgs
ICAgNzA2LCAgIDczMSwgICA3MzUsICAgNzM5LCAgIDc0MywgICA3NTAsICAgNzU3LAotICAgICA3
NjAsICAgNzY0LCAgIDc2OCwgICA3NzMsICAgNzc4LCAgIDc4NSwgICA3ODksICAgNzkzLCAgIDc5
NywgICA4MDIsCi0gICAgIDgwNywgICA4MTQsICAgODI0LCAgIDgzMCwgICA4MzMsICAgODM5LCAg
IDg0MywgICA4NTAsICAgODU2LCAgIDg2MywKLSAgICAgODY3LCAgIDg3MCwgICA4NzMsICAgODgy
LCAgIDg4OCwgICA4OTYsICAgODk5LCAgIDkxOSwgICA5MzgsICAgOTQ1LAotICAgICA5NDksICAg
OTU2LCAgIDk2NiwgICA5NjksICAgOTcyLCAgIDk3OCwgICA5ODUsICAgOTg4LCAgIDk5NCwgICA5
OTcsCi0gICAgMTAwMCwgIDEwMDYsICAxMDA5LCAgMTAxNCwgIDEwMjUsICAxMDI4LCAgMTAzMSwg
IDEwMzQsICAxMDM3LCAgMTA0MCwKLSAgICAxMDQ0LCAgMTA0OCwgIDEwNTIsICAxMDU2LCAgMTA2
MCwgIDEwNjQsICAxMDY4LCAgMTA3MiwgIDEwNzYsICAxMDgwLAotICAgIDEwODQsICAxMDg4LCAg
MTA5MiwgIDEwOTYsICAxMTAwLCAgMTEwNCwgIDExMDgsICAxMTEyLCAgMTExNiwgIDExMjAsCi0g
ICAgMTEyNCwgIDExMjcsICAxMTMwLCAgMTEzMywgIDExMzYsICAxMTM5LCAgMTE0MiwgIDExNDUs
ICAxMTQ4LCAgMTE1MSwKLSAgICAxMTU0LCAgMTE1NywgIDExNjAsICAxMTYzLCAgMTE2NiwgIDEx
NjksICAxMTc2LCAgMTE4MiwgIDExODUsICAxMTk3LAotICAgIDExOTcsICAxMjAwLCAgMTIwMCwg
IDEyMDYsICAxMjA5LCAgMTIyNCwgIDEyMjcsICAxMjM0LCAgMTIzOCwgIDEyNDQsCi0gICAgMTI1
MCwgIDEyNjIsICAxMjY2LCAgMTI3MCwgIDEyNzEsICAxMjc3LCAgMTI3OCwgIDEyNzksICAxMjgw
LCAgMTI4MSwKLSAgICAxMjgyLCAgMTI4MywgIDEyODcsICAxMjg4LCAgMTI4OCwgIDEyODgsICAx
Mjk3LCAgMTI5OCwgIDEzMDIsICAxMzAyLAotICAgIDEzMDMsICAxMzAzLCAgMTMwOCwgIDEzMTEs
ICAxMzIwLCAgMTMyNSwgIDEzMzIsICAxMzMzLCAgMTMzNywgIDEzNDQsCi0gICAgMTM0OCwgIDEz
NTUsICAxMzU1LCAgMTM2MiwgIDEzNjUsICAxMzcyLCAgMTM3NiwgIDEzODksICAxMzg5LCAgMTM5
NCwKLSAgICAxMzk0LCAgMTQwMCwgIDE0MDAsICAxNDA4LCAgMTQxMSwgIDE0MTcsICAxNDIwLCAg
MTQyNiwgIDE0MzAsICAxNDM3LAotICAgIDE0NDAsICAxNDQzLCAgMTQ0NiwgIDE0NDksICAxNDU4
LCAgMTQ2NCwgIDE0NzAsICAxNDczLCAgMTQ3OSwgIDE0NzkKKyAgICAgICAwLCAgIDI0OCwgICAy
NDgsICAgMjQ5LCAgIDI1MiwgICAyNjIsICAgMjY1LCAgIDI3MCwgICAyNzUsICAgMjgwLAorICAg
ICAyODUsICAgMjkzLCAgIDI5OSwgICAzMDIsICAgMzA1LCAgIDMwOCwgICAzMTEsICAgMzE0LCAg
IDMyMCwgICAzMjcsCisgICAgIDMzMywgICAzMzcsICAgMzQ1LCAgIDM0OCwgICAzNTQsICAgMzU4
LCAgIDM2NSwgICAzNzAsICAgMzc3LCAgIDM4NSwKKyAgICAgMzkxLCAgIDM5NywgICA0MDYsICAg
NDA5LCAgIDQxMiwgICA0MTUsICAgNDI1LCAgIDQyNiwgICA0MjcsICAgNDI4LAorICAgICA0MzYs
ICAgNDM3LCAgIDQ0MCwgICA0NDMsICAgNDUwLCAgIDQ1MSwgICA0NTQsICAgNDYwLCAgIDQ2MSwg
ICA0NjUsCisgICAgIDQ3MiwgICA0NzMsICAgNDc2LCAgIDQ3OSwgICA0ODIsICAgNDg4LCAgIDQ4
OSwgICA0OTIsICAgNDk4LCAgIDQ5OSwKKyAgICAgNTA2LCAgIDUwNywgICA1MTQsICAgNTE1LCAg
IDUyMiwgICA1MjMsICAgNTI5LCAgIDUzMCwgICA1MzYsICAgNTM3LAorICAgICA1NDMsICAgNTQ0
LCAgIDU1MCwgICA1NTEsICAgNTU4LCAgIDU1OSwgICA1NjAsICAgNTYxLCAgIDU2NSwgICA1NjYs
CisgICAgIDU2NywgICA1NzEsICAgNTc1LCAgIDU3OSwgICA1ODMsICAgNTkwLCAgIDU5MywgICA1
OTksICAgNjA2LCAgIDYxMywKKyAgICAgNjE2LCAgIDYxOSwgICA2MjgsICAgNjMyLCAgIDYzNiwg
ICA2NDAsICAgNjQ0LCAgIDY1MSwgICA2NTgsICAgNjYxLAorICAgICA2NjgsICAgNjc2LCAgIDY5
NiwgICA3MDYsICAgNzE0LCAgIDczOSwgICA3NDMsICAgNzQ3LCAgIDc1MSwgICA3NTgsCisgICAg
IDc2NSwgICA3NjgsICAgNzcyLCAgIDc3NiwgICA3ODEsICAgNzg2LCAgIDc5MywgICA3OTcsICAg
ODAxLCAgIDgwNSwKKyAgICAgODEwLCAgIDgxNSwgICA4MjIsICAgODI2LCAgIDgzMiwgICA4MzUs
ICAgODQxLCAgIDg0NSwgICA4NTIsICAgODU4LAorICAgICA4NjIsICAgODY2LCAgIDg2OSwgICA4
NzIsICAgODgxLCAgIDg4NywgICA4OTUsICAgODk4LCAgIDkxOCwgICA5MzcsCisgICAgIDk0NCwg
ICA5NDgsICAgOTUyLCAgIDk1NSwgICA5NTgsICAgOTYxLCAgIDk2NCwgICA5NjcsICAgOTc1LCAg
IDk4MiwKKyAgICAgOTg1LCAgIDk4OCwgICA5OTQsICAxMDAxLCAgMTAwNCwgIDEwMTAsICAxMDEz
LCAgMTAxNiwgIDEwMTksICAxMDI1LAorICAgIDEwMjgsICAxMDMzLCAgMTA0NCwgIDEwNDcsICAx
MDUwLCAgMTA1MywgIDEwNTYsICAxMDU5LCAgMTA2MywgIDEwNjcsCisgICAgMTA3MSwgIDEwNzUs
ICAxMDc5LCAgMTA4MywgIDEwODcsICAxMDkxLCAgMTA5NSwgIDEwOTksICAxMTAzLCAgMTEwNywK
KyAgICAxMTExLCAgMTExNSwgIDExMTksICAxMTIzLCAgMTEyNywgIDExMzEsICAxMTM1LCAgMTEz
OSwgIDExNDMsICAxMTQ5LAorICAgIDExNTIsICAxMTU1LCAgMTE1OCwgIDExNjEsICAxMTY0LCAg
MTE2NywgIDExNzAsICAxMTczLCAgMTE3NiwgIDExNzksCisgICAgMTE4MiwgIDExODUsICAxMTg4
LCAgMTE5MSwgIDExOTQsICAxMTk3LCAgMTIwMCwgIDEyMDMsICAxMjEwLCAgMTIxNiwKKyAgICAx
MjIyLCAgMTIyNSwgIDEyMjgsICAxMjMxLCAgMTIzNCwgIDEyMzcsICAxMjQwLCAgMTI0MywgIDEy
NDYsICAxMjQ5LAorICAgIDEyNTIsICAxMjU1LCAgMTI1OCwgIDEyNjEsICAxMjczLCAgMTI3Mywg
IDEyNzYsICAxMjc2LCAgMTI4MiwgIDEyODUsCisgICAgMTI5MSwgIDEyOTQsICAxMzAxLCAgMTMw
NSwgIDEzMTEsICAxMzE3LCAgMTMyOSwgIDEzMzMsICAxMzM3LCAgMTMzOCwKKyAgICAxMzQ0LCAg
MTM0NSwgIDEzNDYsICAxMzQ3LCAgMTM0OCwgIDEzNDksICAxMzUwLCAgMTM1NCwgIDEzNTUsICAx
MzU1LAorICAgIDEzNTUsICAxMzY0LCAgMTM2NSwgIDEzNjksICAxMzY5LCAgMTM3MCwgIDEzNzAs
ICAxMzc1LCAgMTM3OCwgIDEzODcsCisgICAgMTM5MiwgIDEzOTksICAxNDAwLCAgMTQwNCwgIDE0
MTEsICAxNDE1LCAgMTQyMiwgIDE0MjIsICAxNDI5LCAgMTQzMiwKKyAgICAxNDM5LCAgMTQ0Mywg
IDE0NTYsICAxNDU2LCAgMTQ2MSwgIDE0NjEsICAxNDY3LCAgMTQ2NywgIDE0NzUsICAxNDc4LAor
ICAgIDE0ODQsICAxNDg3LCAgMTQ5MywgIDE0OTcsICAxNTA0LCAgMTUwNywgIDE1MTAsICAxNTEz
LCAgMTUxNiwgIDE1MjUsCisgICAgMTUzMSwgIDE1MzcsICAxNTQwLCAgMTU0NiwgIDE1NDYKIH07
CiAjZW5kaWYKIApAQCAtNzU5LDI1ICs3ODksMzAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0
IHl5dG5hbWVbXSA9CiAgICJJVkVDNCIsICJWRUMyIiwgIlZFQzMiLCAiVkVDNCIsICJVVkVDMiIs
ICJVVkVDMyIsICJVVkVDNCIsICJNQVRSSVgyIiwKICAgIk1BVFJJWDMiLCAiTUFUUklYNCIsICJJ
Tl9RVUFMIiwgIk9VVF9RVUFMIiwgIklOT1VUX1FVQUwiLCAiVU5JRk9STSIsCiAgICJWQVJZSU5H
IiwgIk1BVFJJWDJ4MyIsICJNQVRSSVgzeDIiLCAiTUFUUklYMng0IiwgIk1BVFJJWDR4MiIsCi0g
ICJNQVRSSVgzeDQiLCAiTUFUUklYNHgzIiwgIkNFTlRST0lEIiwgIkZMQVQiLCAiU01PT1RIIiwg
IlNUUlVDVCIsCisgICJNQVRSSVgzeDQiLCAiTUFUUklYNHgzIiwgIkNFTlRST0lEIiwgIkZMQVQi
LCAiU01PT1RIIiwgIlJFQURPTkxZIiwKKyAgIldSSVRFT05MWSIsICJDT0hFUkVOVCIsICJSRVNU
UklDVCIsICJWT0xBVElMRSIsICJTSEFSRUQiLCAiU1RSVUNUIiwKICAgIlZPSURfVFlQRSIsICJX
SElMRSIsICJTQU1QTEVSMkQiLCAiU0FNUExFUkNVQkUiLCAiU0FNUExFUl9FWFRFUk5BTF9PRVMi
LAogICAiU0FNUExFUjJEUkVDVCIsICJTQU1QTEVSMkRBUlJBWSIsICJJU0FNUExFUjJEIiwgIklT
QU1QTEVSM0QiLAogICAiSVNBTVBMRVJDVUJFIiwgIklTQU1QTEVSMkRBUlJBWSIsICJVU0FNUExF
UjJEIiwgIlVTQU1QTEVSM0QiLAotICAiVVNBTVBMRVJDVUJFIiwgIlVTQU1QTEVSMkRBUlJBWSIs
ICJTQU1QTEVSM0QiLCAiU0FNUExFUjNEUkVDVCIsCi0gICJTQU1QTEVSMkRTSEFET1ciLCAiU0FN
UExFUkNVQkVTSEFET1ciLCAiU0FNUExFUjJEQVJSQVlTSEFET1ciLCAiTEFZT1VUIiwKLSAgIklE
RU5USUZJRVIiLCAiVFlQRV9OQU1FIiwgIkZMT0FUQ09OU1RBTlQiLCAiSU5UQ09OU1RBTlQiLAot
ICAiVUlOVENPTlNUQU5UIiwgIkJPT0xDT05TVEFOVCIsICJGSUVMRF9TRUxFQ1RJT04iLCAiTEVG
VF9PUCIsICJSSUdIVF9PUCIsCi0gICJJTkNfT1AiLCAiREVDX09QIiwgIkxFX09QIiwgIkdFX09Q
IiwgIkVRX09QIiwgIk5FX09QIiwgIkFORF9PUCIsCi0gICJPUl9PUCIsICJYT1JfT1AiLCAiTVVM
X0FTU0lHTiIsICJESVZfQVNTSUdOIiwgIkFERF9BU1NJR04iLAotICAiTU9EX0FTU0lHTiIsICJM
RUZUX0FTU0lHTiIsICJSSUdIVF9BU1NJR04iLCAiQU5EX0FTU0lHTiIsICJYT1JfQVNTSUdOIiwK
LSAgIk9SX0FTU0lHTiIsICJTVUJfQVNTSUdOIiwgIkxFRlRfUEFSRU4iLCAiUklHSFRfUEFSRU4i
LCAiTEVGVF9CUkFDS0VUIiwKLSAgIlJJR0hUX0JSQUNLRVQiLCAiTEVGVF9CUkFDRSIsICJSSUdI
VF9CUkFDRSIsICJET1QiLCAiQ09NTUEiLCAiQ09MT04iLAotICAiRVFVQUwiLCAiU0VNSUNPTE9O
IiwgIkJBTkciLCAiREFTSCIsICJUSUxERSIsICJQTFVTIiwgIlNUQVIiLCAiU0xBU0giLAotICAi
UEVSQ0VOVCIsICJMRUZUX0FOR0xFIiwgIlJJR0hUX0FOR0xFIiwgIlZFUlRJQ0FMX0JBUiIsICJD
QVJFVCIsCi0gICJBTVBFUlNBTkQiLCAiUVVFU1RJT04iLCAiJGFjY2VwdCIsICJpZGVudGlmaWVy
IiwgInZhcmlhYmxlX2lkZW50aWZpZXIiLAotICAicHJpbWFyeV9leHByZXNzaW9uIiwgInBvc3Rm
aXhfZXhwcmVzc2lvbiIsICJpbnRlZ2VyX2V4cHJlc3Npb24iLAotICAiZnVuY3Rpb25fY2FsbCIs
ICJmdW5jdGlvbl9jYWxsX29yX21ldGhvZCIsICJmdW5jdGlvbl9jYWxsX2dlbmVyaWMiLAotICAi
ZnVuY3Rpb25fY2FsbF9oZWFkZXJfbm9fcGFyYW1ldGVycyIsCisgICJVU0FNUExFUkNVQkUiLCAi
VVNBTVBMRVIyREFSUkFZIiwgIlNBTVBMRVIyRE1TIiwgIklTQU1QTEVSMkRNUyIsCisgICJVU0FN
UExFUjJETVMiLCAiU0FNUExFUjNEIiwgIlNBTVBMRVIzRFJFQ1QiLCAiU0FNUExFUjJEU0hBRE9X
IiwKKyAgIlNBTVBMRVJDVUJFU0hBRE9XIiwgIlNBTVBMRVIyREFSUkFZU0hBRE9XIiwgIlNBTVBM
RVJFWFRFUk5BTDJEWTJZRVhUIiwKKyAgIklNQUdFMkQiLCAiSUlNQUdFMkQiLCAiVUlNQUdFMkQi
LCAiSU1BR0UzRCIsICJJSU1BR0UzRCIsICJVSU1BR0UzRCIsCisgICJJTUFHRTJEQVJSQVkiLCAi
SUlNQUdFMkRBUlJBWSIsICJVSU1BR0UyREFSUkFZIiwgIklNQUdFQ1VCRSIsCisgICJJSU1BR0VD
VUJFIiwgIlVJTUFHRUNVQkUiLCAiTEFZT1VUIiwgIllVVkNTQ1NUQU5EQVJERVhUIiwKKyAgIllV
VkNTQ1NUQU5EQVJERVhUQ09OU1RBTlQiLCAiSURFTlRJRklFUiIsICJUWVBFX05BTUUiLCAiRkxP
QVRDT05TVEFOVCIsCisgICJJTlRDT05TVEFOVCIsICJVSU5UQ09OU1RBTlQiLCAiQk9PTENPTlNU
QU5UIiwgIkZJRUxEX1NFTEVDVElPTiIsCisgICJMRUZUX09QIiwgIlJJR0hUX09QIiwgIklOQ19P
UCIsICJERUNfT1AiLCAiTEVfT1AiLCAiR0VfT1AiLCAiRVFfT1AiLAorICAiTkVfT1AiLCAiQU5E
X09QIiwgIk9SX09QIiwgIlhPUl9PUCIsICJNVUxfQVNTSUdOIiwgIkRJVl9BU1NJR04iLAorICAi
QUREX0FTU0lHTiIsICJNT0RfQVNTSUdOIiwgIkxFRlRfQVNTSUdOIiwgIlJJR0hUX0FTU0lHTiIs
ICJBTkRfQVNTSUdOIiwKKyAgIlhPUl9BU1NJR04iLCAiT1JfQVNTSUdOIiwgIlNVQl9BU1NJR04i
LCAiTEVGVF9QQVJFTiIsICJSSUdIVF9QQVJFTiIsCisgICJMRUZUX0JSQUNLRVQiLCAiUklHSFRf
QlJBQ0tFVCIsICJMRUZUX0JSQUNFIiwgIlJJR0hUX0JSQUNFIiwgIkRPVCIsCisgICJDT01NQSIs
ICJDT0xPTiIsICJFUVVBTCIsICJTRU1JQ09MT04iLCAiQkFORyIsICJEQVNIIiwgIlRJTERFIiwg
IlBMVVMiLAorICAiU1RBUiIsICJTTEFTSCIsICJQRVJDRU5UIiwgIkxFRlRfQU5HTEUiLCAiUklH
SFRfQU5HTEUiLCAiVkVSVElDQUxfQkFSIiwKKyAgIkNBUkVUIiwgIkFNUEVSU0FORCIsICJRVUVT
VElPTiIsICIkYWNjZXB0IiwgImlkZW50aWZpZXIiLAorICAidmFyaWFibGVfaWRlbnRpZmllciIs
ICJwcmltYXJ5X2V4cHJlc3Npb24iLCAicG9zdGZpeF9leHByZXNzaW9uIiwKKyAgImludGVnZXJf
ZXhwcmVzc2lvbiIsICJmdW5jdGlvbl9jYWxsIiwgImZ1bmN0aW9uX2NhbGxfb3JfbWV0aG9kIiwK
KyAgImZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyIsICJmdW5jdGlvbl9jYWxsX2hlYWRlcl9ub19wYXJh
bWV0ZXJzIiwKICAgImZ1bmN0aW9uX2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1ldGVycyIsICJmdW5j
dGlvbl9jYWxsX2hlYWRlciIsCiAgICJmdW5jdGlvbl9pZGVudGlmaWVyIiwgInVuYXJ5X2V4cHJl
c3Npb24iLCAidW5hcnlfb3BlcmF0b3IiLAogICAibXVsdGlwbGljYXRpdmVfZXhwcmVzc2lvbiIs
ICJhZGRpdGl2ZV9leHByZXNzaW9uIiwgInNoaWZ0X2V4cHJlc3Npb24iLApAQCAtODI3LDE2ICs4
NjIsMTkgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXl0b2tudW1bXSA9CiAgICAgIDM0
NSwgICAzNDYsICAgMzQ3LCAgIDM0OCwgICAzNDksICAgMzUwLCAgIDM1MSwgICAzNTIsICAgMzUz
LCAgIDM1NCwKICAgICAgMzU1LCAgIDM1NiwgICAzNTcsICAgMzU4LCAgIDM1OSwgICAzNjAsICAg
MzYxLCAgIDM2MiwgICAzNjMsICAgMzY0LAogICAgICAzNjUsICAgMzY2LCAgIDM2NywgICAzNjgs
ICAgMzY5LCAgIDM3MCwgICAzNzEsICAgMzcyLCAgIDM3MywgICAzNzQsCi0gICAgIDM3NSwgICAz
NzYsICAgMzc3LCAgIDM3OCwgICAzNzksICAgMzgwLCAgIDM4MSwgICAzODIKKyAgICAgMzc1LCAg
IDM3NiwgICAzNzcsICAgMzc4LCAgIDM3OSwgICAzODAsICAgMzgxLCAgIDM4MiwgICAzODMsICAg
Mzg0LAorICAgICAzODUsICAgMzg2LCAgIDM4NywgICAzODgsICAgMzg5LCAgIDM5MCwgICAzOTEs
ICAgMzkyLCAgIDM5MywgICAzOTQsCisgICAgIDM5NSwgICAzOTYsICAgMzk3LCAgIDM5OCwgICAz
OTksICAgNDAwLCAgIDQwMSwgICA0MDIsICAgNDAzLCAgIDQwNCwKKyAgICAgNDA1LCAgIDQwNgog
fTsKICMgZW5kaWYKIAotI2RlZmluZSBZWVBBQ1RfTklORiAtMzQ4CisjZGVmaW5lIFlZUEFDVF9O
SU5GIC0zNjgKIAogI2RlZmluZSB5eXBhY3RfdmFsdWVfaXNfZGVmYXVsdChZeXN0YXRlKSBcCi0g
ICghISgoWXlzdGF0ZSkgPT0gKC0zNDgpKSkKKyAgKCEhKChZeXN0YXRlKSA9PSAoLTM2OCkpKQog
Ci0jZGVmaW5lIFlZVEFCTEVfTklORiAtMjI5CisjZGVmaW5lIFlZVEFCTEVfTklORiAtMjU0CiAK
ICNkZWZpbmUgeXl0YWJsZV92YWx1ZV9pc19lcnJvcihZeXRhYmxlX3ZhbHVlKSBcCiAgIDAKQEAg
LTg0NSw0NyArODgzLDQ5IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDE2IHl5dG9rbnVtW10g
PQogICAgICBTVEFURS1OVU0uICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXBhY3Rb
XSA9CiB7Ci0gICAgMjE0NCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAgMTQ0LCAgLTM0
OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwKLSAgICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAg
LTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LAotICAgIC0zNDgsICAtMzQ4
LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgs
Ci0gICAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0z
NDgsICAtMzQ4LCAgLTM0OCwKLSAgICAtMzQ4LCAgIC01MywgIC0zNDgsICAtMzQ4LCAgLTM0OCwg
IC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LAotICAgIC0zNDgsICAtMzQ4LCAgLTM0
OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsCi0gICAg
IC04MywgIC0zNDgsICAtMzQ4LCAgIC04OSwgICAtNzAsICAgLTgxLCAgMjIxOSwgICAtMjYsICAt
MzQ4LCAgICA2MCwKLSAgICAtMzQ4LCAgMTE2MywgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgs
ICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAgLTY2LAotICAgIC0zNDgsICAyMDY5LCAgLTM0OCwgIC0z
NDgsICAyMzU1LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgIC00MSwgICAgLTIsCi0gICAgLTM0OCwg
ICAtMzAsICAtMzQ4LCAgMjIxOSwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIDIyMTksICAgIDgwLCAg
ICA4MCwKLSAgICAtMzQ4LCAgIC0xNywgICAtNzUsICAgLTY1LCAgLTM0OCwgIDIyMTksICAtMzQ4
LCAgLTM0OCwgIDEyMzMsICAtMzQ4LAotICAgIC0zNDgsICAgLTE1LCAgMjIxOSwgIC0zNDgsICAg
LTEwLCAgIC04NSwgIC0zNDgsICAgMzg5LCAgLTM0OCwgIC0zNDgsCi0gICAgLTM0OCwgIC0zNDgs
ICAgICAxLCAgIC00OSwgIC0zNDgsICAxMzMxLCAgMTYyMiwgIC0zNDgsICAtMzQ4LCAgMjIxOSwK
LSAgICAgIDgwLCAgMTgxNCwgIC0zNDgsICAgIDE5LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0
OCwgIC0zNDgsICAxNjIyLAotICAgIDE2MjIsICAxNjIyLCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAg
LTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgICAtMjQsCi0gICAgLTM0OCwgIC0zNDgsICAtMzQ4
LCAgICAzNywgICAtMjIsICAxNzE3LCAgICA2NywgIC0zNDgsICAxNjIyLCAgICAzNCwKLSAgICAg
IDE0LCAgICA3NiwgICAtNDYsICAgIDcyLCAgICA1MSwgICAgNzUsICAgIDc4LCAgIDExMiwgICAx
MTMsICAgLTc3LAotICAgIC0zNDgsICAgIDk4LCAgLTM0OCwgIC0zNDgsICAxODk5LCAgMjIxOSwg
ICAgODQsICAtMzQ4LCAgICAtMiwgICAgOTQsCi0gICAgICA5NywgIC0zNDgsICAgMTA4LCAgIDEw
OSwgICAxMDAsICAxNDI5LCAgIDExNCwgIDE2MjIsICAgMTA0LCAgIDExNSwKLSAgICAgMTExLCAg
LTM0OCwgIC0zNDgsICAgMTkwLCAgLTM0OCwgIC0zNDgsICAgLTE5LCAgLTM0OCwgICAtODksICAg
MTE3LAotICAgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAgNTA1LCAgLTM0OCwgIC0zNDgs
ICAtMzQ4LCAgLTM0OCwgIC0zNDgsCi0gICAgLTM0OCwgIDE2MjIsICAxNTI0LCAgMTYyMiwgICAx
MTYsICAgMTEwLCAgLTM0OCwgIC0zNDgsICAgIDgwLCAgIDExOCwKLSAgICAgIDI3LCAgLTM0OCwg
ICAtNTgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAgIC01LCAgLTM0OCwgIC0zNDgsICAxNjIyLAot
ICAgIDIyODcsICAtMzQ4LCAgLTM0OCwgIDE2MjIsICAgMTIxLCAgLTM0OCwgIC0zNDgsICAtMzQ4
LCAgMTYyMiwgIDE2MjIsCi0gICAgMTYyMiwgIDE2MjIsICAxNjIyLCAgMTYyMiwgIDE2MjIsICAx
NjIyLCAgMTYyMiwgIDE2MjIsICAxNjIyLCAgMTYyMiwKLSAgICAxNjIyLCAgMTYyMiwgIDE2MjIs
ICAxNjIyLCAgMTYyMiwgIDE2MjIsICAxNjIyLCAgMTYyMiwgIC0zNDgsICAtMzQ4LAotICAgIDE5
ODQsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgICAxMTksICAtMzQ4LCAgMTYy
MiwgIC0zNDgsCi0gICAgLTM0OCwgICAgMzIsICAxNjIyLCAgIDEyMiwgIC0zNDgsICAtMzQ4LCAg
LTM0OCwgICA2MjEsICAtMzQ4LCAgLTM0OCwKLSAgICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4
LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAxNjIyLAotICAgIDE2MjIsICAt
MzQ4LCAgLTM0OCwgIC0zNDgsICAgMTI0LCAgIDEyMCwgICAxMjksICAtMzQ4LCAgMTYyMiwgICAx
MjUsCi0gICAgICAzMywgIDE2MjIsICAgIDgwLCAgLTM0OCwgICAtODcsICAtMzQ4LCAgLTM0OCwg
ICAxMzAsICAgMTI4LCAgLTM0OCwKLSAgICAgMTM2LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0
OCwgIC0zNDgsICAgIDM0LCAgICAzNCwgICAgMTQsICAgIDE0LAotICAgICAgNzYsICAgIDc2LCAg
ICA3NiwgICAgNzYsICAgLTQ2LCAgIC00NiwgICAgNzIsICAgIDUxLCAgICA3NSwgICAgNzgsCi0g
ICAgIDExMiwgICAxMTMsICAgIDU0LCAgLTM0OCwgICAxNjYsICAgLTMwLCAgIDg1MywgICA5Njks
ICAgIC0zLCAgLTM0OCwKLSAgICAgIC0xLCAgLTM0OCwgIDEwNjYsICAgNjIxLCAgLTM0OCwgIC0z
NDgsICAtMzQ4LCAgMTYyMiwgICAxMzIsICAtMzQ4LAotICAgIDE2MjIsICAtMzQ4LCAgIDEzNSwg
IC0zNDgsICAxNjIyLCAgLTM0OCwgIC0zNDgsICAxNjIyLCAgIDEzOSwgIC0zNDgsCi0gICAgLTM0
OCwgIC0zNDgsICAtMzQ4LCAgMTA2NiwgICAxMTksICAtMzQ4LCAgIDEyOCwgICAgODAsICAyMjE5
LCAgIDE0MSwKLSAgICAgMTQwLCAgLTM0OCwgIDE2MjIsICAtMzQ4LCAgLTM0OCwgICAxNDUsICAt
MzQ4LCAgMTYyMiwgIC0zNDgsICAgMTM0LAotICAgICAxNDYsICAgMjM2LCAgLTM0OCwgICAxNDcs
ICAgMTQzLCAgIDczNywgIC0zNDgsICAtMzQ4LCAgIDE0OCwgICAgMTcsCi0gICAgMTYyMiwgICA3
MzcsICAgMTE5LCAgLTM0OCwgIDE2MjIsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgIDE0
OSwKLSAgICAgMTI4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OAorICAgIDI2MDksICAtMzY4
LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgIDE0MiwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgs
CisgICAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0z
NjgsICAtMzY4LCAgLTM2OCwKKyAgICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwg
IC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LAorICAgIC0zNjgsICAtMzY4LCAgLTM2
OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsCisgICAg
LTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgICAtODAsICAt
MzY4LCAgLTM2OCwKKyAgICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgs
ICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LAorICAgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0z
NjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsCisgICAgLTM2OCwg
IC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAg
LTM2OCwKKyAgICAtMzY4LCAgLTM2OCwgICAtNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAgLTY5
LCAgIC01NiwgICAtNTAsICAyNzA4LAorICAgICAtOTUsICAtMzY4LCAgIC03NSwgIC0zNjgsICAx
MzY0LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsCisgICAgLTM2OCwgIC0zNjgs
ICAgLTM3LCAgLTM2OCwgIDI1MTAsICAtMzY4LCAgLTM2OCwgIDI4OTIsICAtMzY4LCAgLTM2OCwK
KyAgICAtMzY4LCAgIC0yMiwgICAtNDMsICAtMzY4LCAgIC0xNywgIC0zNjgsICAyNzA4LCAgLTM2
OCwgIC0zNjgsICAtMzY4LAorICAgIDI3MDgsICAgIDI5LCAgICAyOSwgIC0zNjgsICAgLTIwLCAg
LTEwMywgICAtOTYsICAtMzY4LCAgMjcwOCwgIC0zNjgsCisgICAgLTM2OCwgIDE0NTgsICAtMzY4
LCAgLTM2OCwgICAtMzIsICAyNzA4LCAgLTM2OCwgIC0zNjgsICAgLTE1LCAgIC02NSwKKyAgICAt
MzY4LCAgIDQyMiwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAgICA5LCAgIC05OSwgIC0z
NjgsICAxNTgwLAorICAgIDE5NDMsICAtMzY4LCAgLTM2OCwgIDI3MDgsICAgIDI5LCAgMjE4Mywg
IC0zNjgsICAtMzY4LCAgICAyNCwgIC0zNjgsCisgICAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2
OCwgIDE5NDMsICAxOTQzLCAgMTk0MywgIC0zNjgsICAtMzY4LCAgLTM2OCwKKyAgICAtMzY4LCAg
LTM2OCwgIC0zNjgsICAtMzY4LCAgIC0zOCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgICAgMzUsICAg
LTQ4LAorICAgIDIwNjIsICAgIDI2LCAgLTM2OCwgIDE5NDMsICAgICA2LCAgIC04OSwgICAgNDks
ICAgLTY3LCAgICAyMywgICAgMTgsCisgICAgICAyMiwgICAgMjcsICAgIDU3LCAgICA2MCwgICAt
OTMsICAtMzY4LCAgICA0NywgIC0zNjgsICAtMzY4LCAgMjI5MiwKKyAgICAyNzA4LCAgICA1NSwg
IC0zNjgsICAgLTQzLCAgICA0MSwgICAgNDIsICAtMzY4LCAgICA1MywgICAgNTYsICAgIDQ4LAor
ICAgIDE3MDIsICAgIDYxLCAgMTk0MywgICAgNTIsICAgIDYyLCAgICA1MCwgIC0zNjgsICAtMzY4
LCAgICA5OCwgIC0zNjgsCisgICAgLTM2OCwgICAtNzMsICAtMzY4LCAgIC02OSwgICAgNjQsICAt
MzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgIDU2MiwKKyAgICAtMzY4LCAgLTM2OCwgIC0zNjgs
ICAtMzY4LCAgLTM2OCwgIC0zNjgsICAxOTQzLCAgMTgyMSwgIDE5NDMsICAgIDU4LAorICAgICAg
NTQsICAtMzY4LCAgLTM2OCwgICAgMjksICAgIDYzLCAgIC01MiwgIC0zNjgsICAgLTgyLCAgLTM2
OCwgIC0zNjgsCisgICAgLTM2OCwgICAtNDcsICAtMzY4LCAgLTM2OCwgIDE5NDMsICAyODAwLCAg
LTM2OCwgIC0zNjgsICAxOTQzLCAgICA2NywKKyAgICAtMzY4LCAgLTM2OCwgIC0zNjgsICAxOTQz
LCAgMTk0MywgIDE5NDMsICAxOTQzLCAgMTk0MywgIDE5NDMsICAxOTQzLAorICAgIDE5NDMsICAx
OTQzLCAgMTk0MywgIDE5NDMsICAxOTQzLCAgMTk0MywgIDE5NDMsICAxOTQzLCAgMTk0MywgIDE5
NDMsCisgICAgMTk0MywgIDE5NDMsICAxOTQzLCAgLTM2OCwgIC0zNjgsICAyNDAxLCAgLTM2OCwg
IC0zNjgsICAtMzY4LCAgLTM2OCwKKyAgICAtMzY4LCAgICA2NSwgIC0zNjgsICAxOTQzLCAgLTM2
OCwgIC0zNjgsICAgLTQwLCAgMTk0MywgICAgNjYsICAtMzY4LAorICAgIC0zNjgsICAtMzY4LCAg
IDcwMiwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsCisg
ICAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIDE5NDMsICAxOTQzLCAgLTM2OCwgIC0zNjgs
ICAtMzY4LCAgICA3MCwKKyAgICAgIDY4LCAgICA3MiwgIC0zNjgsICAxOTQzLCAgICA2OSwgICAt
MTIsICAxOTQzLCAgICAyOSwgIC0zNjgsICAtMTA2LAorICAgIC0zNjgsICAtMzY4LCAgICA3Niwg
ICAgNzMsICAtMzY4LCAgICA4MywgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsCisgICAgLTM2
OCwgICAgIDYsICAgICA2LCAgIC04OSwgICAtODksICAgIDQ5LCAgICA0OSwgICAgNDksICAgIDQ5
LCAgIC02NywKKyAgICAgLTY3LCAgICAyMywgICAgMTgsICAgIDIyLCAgICAyNywgICAgNTcsICAg
IDYwLCAgICAyNSwgIC0zNjgsICAgMTUxLAorICAgICAtMTcsICAgOTgyLCAgMTEyMiwgICAtNDUs
ICAtMzY4LCAgIC0yNiwgIC0zNjgsICAxMjQzLCAgIDcwMiwgIC0zNjgsCisgICAgLTM2OCwgIC0z
NjgsICAxOTQzLCAgICA3OCwgIC0zNjgsICAxOTQzLCAgLTM2OCwgICAgOTUsICAtMzY4LCAgMTk0
MywKKyAgICAtMzY4LCAgLTM2OCwgIDE5NDMsICAgIDk5LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAg
LTM2OCwgIDEyNDMsICAgIDY1LAorICAgIC0zNjgsICAgIDczLCAgICAyOSwgIDI3MDgsICAgMTAx
LCAgIDEwMywgIC0zNjgsICAxOTQzLCAgLTM2OCwgIC0zNjgsCisgICAgIDEwNiwgIC0zNjgsICAx
OTQzLCAgLTM2OCwgICAgOTQsICAgMTA5LCAgIDIyMiwgIC0zNjgsICAgMTA4LCAgIDEwNSwKKyAg
ICAgODQyLCAgLTM2OCwgIC0zNjgsICAgMTA3LCAgIC0yNCwgIDE5NDMsICAgODQyLCAgICA2NSwg
IC0zNjgsICAxOTQzLAorICAgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAgMTEwLCAgICA3
MywgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgKIH07CiAKICAgLyogWVlERUZBQ1RbU1RBVEUt
TlVNXSAtLSBEZWZhdWx0IHJlZHVjdGlvbiBudW1iZXIgaW4gc3RhdGUgU1RBVEUtTlVNLgpAQCAt
ODkzLDc3ICs5MzMsNzkgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXBhY3RbXSA9CiAg
ICAgIG1lYW5zIHRoZSBkZWZhdWx0IGlzIGFuIGVycm9yLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5
cGVfdWludDE2IHl5ZGVmYWN0W10gPQogewotICAgICAgIDAsICAgMTI3LCAgIDE0MiwgICAxNDMs
ICAgMTQ0LCAgICAgMCwgICAxMzMsICAgMTM1LCAgIDE1OCwgICAxNTUsCi0gICAgIDE1NiwgICAx
NTcsICAgMTYyLCAgIDE2MywgICAxNjQsICAgMTY1LCAgIDE2NiwgICAxNjcsICAgMTU5LCAgIDE2
MCwKLSAgICAgMTYxLCAgIDE2OCwgICAxNjksICAgMTcwLCAgIDE3MSwgICAxNzIsICAgMTczLCAg
IDEzNiwgICAxMzcsICAgMTM4LAotICAgICAxNDAsICAgMTM0LCAgIDE3NCwgICAxNzUsICAgMTc2
LCAgIDE3NywgICAxNzgsICAgMTc5LCAgIDEzOSwgICAxMjQsCi0gICAgIDEyMywgICAgIDAsICAg
MTU0LCAgIDE4MCwgICAxODIsICAgMTk1LCAgIDE5NiwgICAxODMsICAgMTg0LCAgIDE4NSwKLSAg
ICAgMTg2LCAgIDE4NywgICAxODgsICAgMTg5LCAgIDE5MCwgICAxOTEsICAgMTgxLCAgIDE5Miwg
ICAxOTMsICAgMTk0LAotICAgICAgIDAsICAgMTk4LCAgIDI2NywgICAyNjgsICAgICAwLCAgICA5
OCwgICAgOTcsICAgICAwLCAgIDEwOSwgICAxMTUsCi0gICAgIDEzMSwgICAgIDAsICAgMTMyLCAg
IDEyNSwgICAxMjgsICAgMTIxLCAgIDEzMCwgICAxMjksICAgMTQxLCAgIDE1MSwKLSAgICAgMTk3
LCAgICAgMCwgICAyNjQsICAgMjY2LCAgICAgMCwgICAgIDIsICAgICAzLCAgIDIwMSwgICAgIDAs
ICAgICAwLAotICAgICAgODgsICAgICAwLCAgICA5NiwgICAgIDAsICAgMTA1LCAgICA5OSwgICAx
MDcsICAgICAwLCAgIDEwOCwgICAgIDAsCi0gICAgICA4OSwgICAgIDIsICAgMTE2LCAgICAgMCwg
ICAgOTQsICAgICAwLCAgIDEyNiwgICAxMjIsICAgICAwLCAgICAgMSwKLSAgICAgMjY1LCAgICAg
MCwgICAgIDAsICAgMTk5LCAgIDE0OCwgICAgIDAsICAgMTQ2LCAgICAgMCwgICAyNjksICAgMTAw
LAotICAgICAxMDQsICAgMTA2LCAgIDEwMiwgICAxMTAsICAgMTAxLCAgICAgMCwgICAgIDAsICAg
IDg3LCAgICA5NSwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgMjAzLCAgICAgNCwgICAgIDgs
ICAgICA2LCAgICAgNywgICAgIDksICAgIDMwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAx
NTIsICAgIDM3LCAgICAzNiwgICAgMzgsICAgIDM1LCAgICAgNSwgICAgMTEsICAgIDMxLAotICAg
ICAgMTMsICAgIDE4LCAgICAxOSwgICAgIDAsICAgICAwLCAgICAyNCwgICAgIDAsICAgIDM5LCAg
ICAgMCwgICAgNDMsCi0gICAgICA0NiwgICAgNDksICAgIDU0LCAgICA1NywgICAgNTksICAgIDYx
LCAgICA2MywgICAgNjUsICAgIDY3LCAgICA2OSwKLSAgICAgIDg2LCAgICAgMCwgICAgMjgsICAg
IDkwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0NSwgICAgIDAsICAgICAwLAotICAgICAgIDAs
ICAgMjQ5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsCi0gICAgIDIyMywgICAyMzIsICAgMjM2LCAgICAzOSwgICAgNzEsICAgIDg0LCAgICAg
MCwgICAyMTIsICAgICAwLCAgIDE0MSwKLSAgICAgMjE1LCAgIDIzNCwgICAyMTQsICAgMjEzLCAg
ICAgMCwgICAyMTYsICAgMjE3LCAgIDIxOCwgICAyMTksICAgMjIwLAotICAgICAyMjEsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAyMTEsICAgMTIwLCAgICAgMCwgICAyMDks
Ci0gICAgICAgMCwgICAyMDcsICAgICAwLCAgIDIwNCwgICAgMzIsICAgIDMzLCAgICAgMCwgICAg
MTUsICAgIDE2LCAgICAgMCwKLSAgICAgICAwLCAgICAyMiwgICAgMjEsICAgICAwLCAgIDE1NCwg
ICAgMjUsICAgIDI3LCAgICAzNCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgMTI4LCAgIDE0
OSwgICAxNTAsICAgMTUxLCAgICAgMCwgICAxMzQsICAgMTM2LCAgIDE2NiwgICAxNjMsCisgICAg
IDE2NCwgICAxNjUsICAgMTcwLCAgIDE3MSwgICAxNzIsICAgMTczLCAgIDE3NCwgICAxNzUsICAg
MTY3LCAgIDE2OCwKKyAgICAgMTY5LCAgIDE3NiwgICAxNzcsICAgMTc4LCAgIDE3OSwgICAxODAs
ICAgMTgxLCAgIDEzNywgICAxMzgsICAgMTM5LAorICAgICAxNDEsICAgMTM1LCAgIDE4MiwgICAx
ODMsICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3LCAgIDE0MCwgICAxMjUsCisgICAgIDEyNCwg
ICAxNDIsICAgMTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LCAgIDE0NywgICAgIDAsICAgMTYyLCAg
IDE4OSwKKyAgICAgMTkxLCAgIDIwNywgICAyMDksICAgMTkyLCAgIDE5NCwgICAxOTUsICAgMTk2
LCAgIDE5NywgICAxOTksICAgMjAwLAorICAgICAyMDEsICAgMjAyLCAgIDE5MywgICAxOTgsICAg
MjAzLCAgIDE5MCwgICAyMDQsICAgMjA1LCAgIDIwNiwgICAyMDgsCisgICAgIDIxMSwgICAyMTIs
ICAgMjEzLCAgIDIxNCwgICAyMTUsICAgMjE2LCAgIDIxNywgICAyMTgsICAgMjE5LCAgIDIyMCwK
KyAgICAgMjIxLCAgIDIyMiwgICAgIDAsICAgMTg4LCAgIDIyMywgICAyOTIsICAgMjkzLCAgICAg
MCwgICAgOTksICAgIDk4LAorICAgICAgIDAsICAgMTEwLCAgIDExNiwgICAxMzIsICAgICAwLCAg
IDEzMywgICAxMjYsICAgMTI5LCAgIDEyMiwgICAxMzEsCisgICAgIDEzMCwgICAxNDgsICAgMTU5
LCAgIDIxMCwgICAgIDAsICAgMjg5LCAgIDI5MSwgICAgIDAsICAgICAyLCAgICAgMywKKyAgICAg
MjI2LCAgICAgMCwgICAgIDAsICAgIDg5LCAgICAgMCwgICAgOTcsICAgICAwLCAgIDEwNiwgICAx
MDAsICAgMTA4LAorICAgICAgIDAsICAgMTA5LCAgICAgMCwgICAgOTAsICAgICAyLCAgIDExNywg
ICAgIDAsICAgIDk1LCAgICAgMCwgICAxMjcsCisgICAgIDEyMywgICAgIDAsICAgICAxLCAgIDI5
MCwgICAgIDAsICAgICAwLCAgIDIyNCwgICAxNTgsICAgMTU1LCAgICAgMCwKKyAgICAgMTUzLCAg
ICAgMCwgICAyOTQsICAgMTAxLCAgIDEwNSwgICAxMDcsICAgMTAzLCAgIDExMSwgICAxMDIsICAg
ICAwLAorICAgICAgIDAsICAgIDg4LCAgICA5NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAyMjgs
ICAgIDEwLCAgICAgNCwgICAgIDgsCisgICAgICAgNiwgICAgIDcsICAgICA5LCAgICAzMSwgICAg
IDAsICAgICAwLCAgICAgMCwgICAxNjAsICAgIDM4LCAgICAzNywKKyAgICAgIDM5LCAgICAzNiwg
ICAgIDUsICAgIDEyLCAgICAzMiwgICAgMTQsICAgIDE5LCAgICAyMCwgICAgIDAsICAgICAwLAor
ICAgICAgMjUsICAgICAwLCAgICA0MCwgICAgIDAsICAgIDQ0LCAgICA0NywgICAgNTAsICAgIDU1
LCAgICA1OCwgICAgNjAsCisgICAgICA2MiwgICAgNjQsICAgIDY2LCAgICA2OCwgICAgNzAsICAg
IDg3LCAgICAgMCwgICAgMjksICAgIDkxLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAxNTIs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgMjc0LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDI0OCwgICAyNTcsICAgMjYxLCAgICA0
MCwgICAgNzIsCisgICAgICA4NSwgICAgIDAsICAgMjM3LCAgICAgMCwgICAxNDgsICAgMjQwLCAg
IDI1OSwgICAyMzksICAgMjM4LCAgICAgMCwKKyAgICAgMjQxLCAgIDI0MiwgICAyNDMsICAgMjQ0
LCAgIDI0NSwgICAyNDYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAg
MjM2LCAgIDEyMSwgICAgIDAsICAgMjM0LCAgICAgMCwgICAyMzIsICAgICAwLCAgIDIyOSwgICAg
MzMsCisgICAgICAzNCwgICAgIDAsICAgIDE2LCAgICAxNywgICAgIDAsICAgICAwLCAgICAyMywg
ICAgMjIsICAgICAwLCAgIDE2MiwKKyAgICAgIDI2LCAgICAyOCwgICAgMzUsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0g
ICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMTUzLCAgIDIwMiwKLSAgICAgICAwLCAgIDE0OSwgICAxNTAsICAgMTQ3LCAgIDI2MCwgICAy
NTksICAgMjMwLCAgIDI1MSwgICAgIDAsICAgMjYzLAotICAgICAyNjEsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgMjQ0LCAgIDI0NywgICAyMjIsICAgICAwLCAgICA3NCwgICAgNzUsCi0gICAgICA3
NywgICAgNzYsICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLCAgICA4MywgICAgNzgsICAgIDcz
LCAgICAgMCwKLSAgICAgICAwLCAgIDIzNywgICAyMzMsICAgMjM1LCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDExNCwgICAgIDAsICAgMTE3LAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAyMDUs
ICAgICAwLCAgICA5MSwgICAgMTAsICAgICAwLCAgICAxNywgICAgMjksCi0gICAgICAxNCwgICAg
MjAsICAgIDI2LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0NSwgICAgNDQsICAgIDQ3LCAgICA0
OCwKLSAgICAgIDUyLCAgICA1MywgICAgNTAsICAgIDUxLCAgICA1NSwgICAgNTYsICAgIDU4LCAg
ICA2MCwgICAgNjIsICAgIDY0LAotICAgICAgNjYsICAgIDY4LCAgICAgMCwgICAyMDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAyNjIsCi0gICAgICAgMCwgICAyNDMsICAg
ICAwLCAgIDIyNCwgICAgNzIsICAgIDg1LCAgIDEwMywgICAgIDAsICAgMTExLCAgIDExOCwKLSAg
ICAgICAwLCAgIDIwNiwgICAgIDAsICAgMjA4LCAgICAgMCwgICAgOTIsICAgIDEyLCAgICAgMCwg
ICAgIDAsICAgMjI5LAotICAgICAyMzEsICAgMjU0LCAgIDI1MywgICAyNTYsICAgMjMwLCAgIDI0
MSwgICAyNDUsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAxMTIsICAgICAwLCAg
IDExOSwgICAyMTAsICAgICAwLCAgICA3MCwgICAgIDAsICAgMjU1LCAgICAgMCwKLSAgICAgICAw
LCAgIDI0MCwgICAyMzgsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjI1LCAgIDExMywgICAgIDAs
ICAgICAwLAotICAgICAyNTcsICAgICAwLCAgIDIzMCwgICAyNDIsICAgICAwLCAgIDIyNywgICAy
NDgsICAgMjI2LCAgICA5MywgICAgIDAsCi0gICAgIDI1OCwgICAyNTIsICAgMjM5LCAgIDI0Niwg
ICAyNTAKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMTYxLCAgIDIyNywgICAgIDAsICAgMTU2
LCAgIDE1NywgICAxNTQsICAgMjg1LAorICAgICAyODQsICAgMjU1LCAgIDI3NiwgICAgIDAsICAg
Mjg4LCAgIDI4NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAyNjksCisgICAgIDI3MiwgICAyNDcs
ICAgICAwLCAgICA3NSwgICAgNzYsICAgIDc4LCAgICA3NywgICAgODAsICAgIDgxLCAgICA4MiwK
KyAgICAgIDgzLCAgICA4NCwgICAgNzksICAgIDc0LCAgICAgMCwgICAgIDAsICAgMjYyLCAgIDI1
OCwgICAyNjAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgIDExNSwgICAgIDAsICAgMTE4LCAg
ICAgMCwgICAgIDAsICAgICAwLCAgIDIzMCwgICAgIDAsCisgICAgICA5MiwgICAgMTEsICAgICAw
LCAgICAxOCwgICAgMzAsICAgIDE1LCAgICAyMSwgICAgMjcsICAgIDQxLCAgICA0MiwKKyAgICAg
IDQzLCAgICA0NiwgICAgNDUsICAgIDQ4LCAgICA0OSwgICAgNTMsICAgIDU0LCAgICA1MSwgICAg
NTIsICAgIDU2LAorICAgICAgNTcsICAgIDU5LCAgICA2MSwgICAgNjMsICAgIDY1LCAgICA2Nywg
ICAgNjksICAgICAwLCAgIDIyNSwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAyODcsICAgICAwLCAgIDI2OCwgICAgIDAsICAgMjQ5LCAgICA3MywKKyAgICAgIDg2LCAg
IDEwNCwgICAgIDAsICAgMTEyLCAgIDExOSwgICAgIDAsICAgMjMxLCAgICAgMCwgICAyMzMsICAg
ICAwLAorICAgICAgOTMsICAgIDEzLCAgICAgMCwgICAgIDAsICAgMjU0LCAgIDI1NiwgICAyNzks
ICAgMjc4LCAgIDI4MSwgICAyNTUsCisgICAgIDI2NiwgICAyNzAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgIDExMywgICAgIDAsICAgMTIwLCAgIDIzNSwKKyAgICAgICAwLCAgICA3MSwg
ICAgIDAsICAgMjgwLCAgICAgMCwgICAgIDAsICAgMjY1LCAgIDI2MywgICAgIDAsICAgICAwLAor
ICAgICAgIDAsICAgMjUwLCAgIDExNCwgICAgIDAsICAgICAwLCAgIDI4MiwgICAgIDAsICAgMjU1
LCAgIDI2NywgICAgIDAsCisgICAgIDI1MiwgICAyNzMsICAgMjUxLCAgICA5NCwgICAgIDAsICAg
MjgzLCAgIDI3NywgICAyNjQsICAgMjcxLCAgIDI3NQogfTsKIAogICAvKiBZWVBHT1RPW05URVJN
LU5VTV0uICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXBnb3RvW10gPQogewotICAg
IC0zNDgsICAgLTQwLCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAg
ICAyOCwgIC0zNDgsCi0gICAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgIC02MCwgIC0zNDgsICAgLTcy
LCAgIC03MSwgIC0xMjcsICAgLTUyLCAgICAgOCwKLSAgICAgIDEyLCAgICAxNiwgICAgIDcsICAg
IDEwLCAgICAxMSwgIC0zNDgsICAgLTg2LCAgLTEyMiwgIC0zNDgsICAtMTMzLAotICAgICAtNzgs
ICAtMzQ4LCAgICAgOSwgICAgMTMsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAgMTY5LCAgIDE3Nywg
ICAxNzQsCi0gICAgLTM0OCwgIC0zNDgsICAtMzI2LCAgLTM0OCwgICAtNTksICAtMzQ4LCAgIC02
OSwgIC0zNDgsICAgLTYxLCAgIDI2OCwKLSAgICAtMzQ4LCAgLTM0OCwgICAgOTYsICAgICAwLCAg
LTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0xMDAsICAtMTIwLAotICAgICAgNTcsICAgLTIz
LCAgLTE0MCwgICAtNTcsICAtMTk4LCAgLTMyMiwgIC0xMDUsICAtMzQ4LCAgLTM0OCwgIC0xMTAs
Ci0gICAgLTM0NywgIC0zNDgsICAtMzQ4LCAgIC04OCwgICAgIDUsICAgLTQyLCAgLTM0OCwgIC0z
NDgsICAtMzQ4LCAgLTM0OCwKLSAgICAtMzQ4LCAgIC02NywgIC0zNDgsICAtMzQ4LCAgLTM0OCwg
IC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LAotICAgIC0zNDgsICAgMjE2LCAgLTM0
OCwgIC0zNDgKKyAgICAtMzY4LCAgIC00NiwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAt
MzY4LCAgLTM2OCwgICAgLTksICAtMzY4LAorICAgIC0zNjgsICAtMzY4LCAgLTM2OCwgICAgNDUs
ICAtMzY4LCAgLTEwNCwgIC0xMDIsICAtMTM5LCAgLTEwNSwgICAtMzMsCisgICAgIC0yNywgICAt
MjUsICAgLTI4LCAgIC0yMSwgICAtMjksICAtMzY4LCAgLTExMiwgIC0xNDEsICAtMzY4LCAgLTE1
NSwKKyAgICAtMTM1LCAgLTM2OCwgICAgMTAsICAgIDE3LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAg
IDEzNCwgICAxMzksICAgMTM4LAorICAgIC0zNjgsICAtMzY4LCAgLTMzOSwgIC0zNjgsICAgLTgx
LCAgLTM2OCwgICAtOTAsICAtMzY4LCAgIC04NywgICAyNTYsCisgICAgLTM2OCwgIC0zNjgsICAg
IDU5LCAgICAgMCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMTIyLCAgLTE0MCwKKyAg
ICAgIDIwLCAgIC02MywgIC0yMzIsICAgLTk3LCAgLTIyNCwgIC0zNDksICAtMTQyLCAgLTM2OCwg
IC0zNjgsICAtMTQ4LAorICAgIC0zNjcsICAtMzY4LCAgLTM2OCwgIC0xMTEsICAgLTMxLCAgIC05
MiwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsCisgICAgLTM2OCwgIC0xMTksICAtMzY4LCAg
LTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwKKyAgICAtMzY4
LCAgIDE2OCwgIC0zNjgsICAtMzY4CiB9OwogCiAgIC8qIFlZREVGR09UT1tOVEVSTS1OVU1dLiAg
Ki8KIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlkZWZnb3RvW10gPQogewotICAgICAgLTEs
ICAgMjE5LCAgIDE0NywgICAxNDgsICAgMTQ5LCAgIDMwNywgICAxNTAsICAgMTUxLCAgIDE1Miwg
ICAxNTMsCi0gICAgIDE1NCwgICAxNTUsICAgMTU2LCAgIDE5MywgICAxNTgsICAgMTU5LCAgIDE2
MCwgICAxNjEsICAgMTYyLCAgIDE2MywKLSAgICAgMTY0LCAgIDE2NSwgICAxNjYsICAgMTY3LCAg
IDE2OCwgICAxNjksICAgMTk0LCAgIDE5NSwgICAyODksICAgMTk2LAotICAgICAxNzEsICAgMTA1
LCAgIDE5NywgICAxOTgsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDk0LCAgICA5NSwgICAgOTYs
Ci0gICAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgNzEsICAgIDcyLCAgICA3MywgICAg
NzQsICAgIDc1LCAgICA3NiwKLSAgICAgIDc3LCAgIDExNSwgICAxMTYsICAgMTcyLCAgICA3OSwg
ICAgODAsICAgMTc1LCAgIDExMiwgICAxMzEsICAgMTMyLAotICAgICAyMjAsICAgMjIxLCAgIDIx
NywgICAyMDAsICAgMjAxLCAgIDIwMiwgICAyMDMsICAgMjc3LCAgIDM3MCwgICAzOTYsCi0gICAg
IDMzNCwgICAzMzUsICAgMzM2LCAgIDM5NywgICAyMDQsICAgMjA1LCAgIDIwNiwgICAzODIsICAg
MjA3LCAgIDM4MywKLSAgICAgMjA4LCAgIDM2OSwgICAyMDksICAgMzQyLCAgIDI2NiwgICAzMzcs
ICAgMzYzLCAgIDM3OSwgICAzODAsICAgMjEwLAotICAgICAgODEsICAgIDgyLCAgICA4MywgICAg
OTEKKyAgICAgIC0xLCAgIDI0NCwgICAxNzIsICAgMTczLCAgIDE3NCwgICAzMzIsICAgMTc1LCAg
IDE3NiwgICAxNzcsICAgMTc4LAorICAgICAxNzksICAgMTgwLCAgIDE4MSwgICAyMTgsICAgMTgz
LCAgIDE4NCwgICAxODUsICAgMTg2LCAgIDE4NywgICAxODgsCisgICAgIDE4OSwgICAxOTAsICAg
MTkxLCAgIDE5MiwgICAxOTMsICAgMTk0LCAgIDIxOSwgICAyMjAsICAgMzE0LCAgIDIyMSwKKyAg
ICAgMTk2LCAgIDEyOCwgICAyMjIsICAgMjIzLCAgICA4NywgICAgODgsICAgIDg5LCAgIDExNywg
ICAxMTgsICAgMTE5LAorICAgICAgOTAsICAgIDkxLCAgICA5MiwgICAgOTMsICAgIDk0LCAgICA5
NSwgICAgOTYsICAgIDk3LCAgICA5OCwgICAgOTksCisgICAgIDEwMCwgICAxMzksICAgMTQwLCAg
IDE5NywgICAxMDIsICAgMTAzLCAgIDIwMCwgICAxMzUsICAgMTU1LCAgIDE1NiwKKyAgICAgMjQ1
LCAgIDI0NiwgICAyNDIsICAgMjI1LCAgIDIyNiwgICAyMjcsICAgMjI4LCAgIDMwMiwgICAzOTUs
ICAgNDIxLAorICAgICAzNTksICAgMzYwLCAgIDM2MSwgICA0MjIsICAgMjI5LCAgIDIzMCwgICAy
MzEsICAgNDA3LCAgIDIzMiwgICA0MDgsCisgICAgIDIzMywgICAzOTQsICAgMjM0LCAgIDM2Nywg
ICAyOTEsICAgMzYyLCAgIDM4OCwgICA0MDQsICAgNDA1LCAgIDIzNSwKKyAgICAgMTA0LCAgIDEw
NSwgICAxMDYsICAgMTE0CiB9OwogCiAgIC8qIFlZVEFCTEVbWVlQQUNUW1NUQVRFLU5VTV1dIC0t
IFdoYXQgdG8gZG8gaW4gc3RhdGUgU1RBVEUtTlVNLiAgSWYKQEAgLTk3MSw0OTggKzEwMTMsNjEw
IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlkZWZnb3RvW10gPQogICAgICBudW1iZXIg
aXMgdGhlIG9wcG9zaXRlLiAgSWYgWVlUQUJMRV9OSU5GLCBzeW50YXggZXJyb3IuICAqLwogc3Rh
dGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXRhYmxlW10gPQogewotICAgICAgNzgsICAgIDg4LCAg
IDEwNiwgICAxMTgsICAgMjE2LCAgICA5OCwgICAyOTMsICAgIDk3LCAgIDIyNiwgICAgNjIsCi0g
ICAgIDEwNywgICAyMjMsICAgMTc0LCAgICA2MywgICAzNjAsICAgMjU2LCAgIDM2NywgICAzODEs
ICAgMzA0LCAgIDM1NCwKLSAgICAgMTc3LCAgICA4OSwgICAxNzAsICAgIDg1LCAgICA4NiwgICAg
OTAsICAgMTc4LCAgIDM1NSwgICAxMDYsICAgMTAyLAotICAgICAgOTMsICAgMTI1LCAgICA5OCwg
ICAyMzUsICAgIDk3LCAgICA5MiwgICAgOTgsICAgMzY3LCAgIDEyNiwgICAxNzAsCi0gICAgIDEw
OCwgICAyNDUsICAgMjQ2LCAgIDEyNywgICAxMzAsICAgNDAyLCAgIDEyOSwgICAyMTUsICAgMTU3
LCAgIDEyOCwKLSAgICAgMjU3LCAgIDEzMCwgICAyNzEsICAgMTI5LCAgIDIyMywgICAgODcsICAg
MzA1LCAgIDIxMiwgICAxMjIsICAgMTIzLAotICAgICAxMDYsICAgMjI3LCAgIDIyOCwgICAzOTUs
ICAgMjEzLCAgIDE1NywgICAgNzgsICAgMTEzLCAgIDIxOCwgICAzOTUsCi0gICAgIDEzMCwgICAg
NzgsICAgMTI5LCAgIDI5NywgICAxMTQsICAgMjYwLCAgIDI0NywgICAyNDgsICAgMTE3LCAgIDIy
NCwKLSAgICAgMjI1LCAgICA3OCwgICAyMjksICAgMjMyLCAgIDExMSwgICAgOTksICAgMjMwLCAg
IDEyNCwgICAxMDAsICAgMjMzLAotICAgICAgNjIsICAgMjE2LCAgIDI5MCwgICAgNzgsICAgIDYz
LCAgIDI5MSwgICAzMDgsICAgIDc4LCAgIDIzNywgICAxNzMsCi0gICAgIDMwNiwgICAxNzAsICAg
MzY0LCAgIDE3NiwgICAzNjUsICAgIDc4LCAgIDI5MCwgICAyMTEsICAgMjkwLCAgIDI3MywKLSAg
ICAgMjkwLCAgIDMxMiwgICAgNzgsICAgMTMwLCAgIDEzMCwgICAxMjksICAgMTI5LCAgIDE5OSwg
ICAzMjAsICAgMzIxLAotICAgICAzMjIsICAgMzIzLCAgIDM5OSwgICAtMjksICAgMzMyLCAgIDE3
MCwgICAxNzAsICAgMTU3LCAgIDI5MCwgICAgNzgsCi0gICAgIDI0MSwgICAgNzgsICAgMjQyLCAg
IDI5NCwgICAyOTYsICAgMzM4LCAgIDEwMSwgICAgODYsICAgMzAyLCAgIDM0MCwKLSAgICAgMjIz
LCAgIDMwMywgICAyMzEsICAgMjkwLCAgIDMwMiwgICAyOTMsICAgMzM5LCAgIDM1MSwgICAgIDIs
ICAgICAzLAotICAgICAgIDQsICAgMTU3LCAgIDE1NywgICAyMzgsICAgMjM5LCAgIDI0MCwgICAg
ODUsICAgIDg2LCAgIDM0OSwgICAyNDMsCi0gICAgIDI0NCwgICAyNDksICAgMjUwLCAgIDI2MSwg
ICAyNjIsICAgMjkwLCAgIDM1NywgICAzNDQsICAgMzQ1LCAgIDMxNiwKLSAgICAgMzE3LCAgIDIz
NiwgICAzMTgsICAgMzE5LCAgICA3OCwgICAgNzgsICAgMjE2LCAgIDI1MSwgICAzMTMsICAgMzE0
LAotICAgICAzMTUsICAgMTU3LCAgIDE1NywgICAxNTcsICAgMTU3LCAgIDE1NywgICAxNTcsICAg
MTU3LCAgIDE1NywgICAxNTcsCi0gICAgIDE1NywgICAxNTcsICAgMTU3LCAgIDE1NywgICAxNTcs
ICAgMTU3LCAgIDE1NywgICAzMjQsICAgMzI1LCAgIDEzMCwKLSAgICAgMjUyLCAgIDEyOSwgICAy
NTMsICAgMjU0LCAgIDE5OSwgICAyNTgsICAgMjU1LCAgIDM3MSwgICAyNjQsICAgMzY2LAotICAg
ICAzNzMsICAgMjY1LCAgIDI2NywgICAyNjgsICAgMjY5LCAgIDE3MCwgICAyNzQsICAgMjk5LCAg
IDI3MiwgICAyNzUsCi0gICAgIDI3NiwgICAtMjgsICAgMzU4LCAgIDM1MiwgICAzMDEsICAgMjE2
LCAgIC0yMywgIC0yMjgsICAgMjE2LCAgIDI5OCwKLSAgICAgMzY2LCAgIDM0NiwgICAzODcsICAg
MzQ3LCAgIDM0MSwgICAzNzYsICAgMzQ4LCAgIDM1NiwgICAzNTAsICAgMjkwLAotICAgICAtMzAs
ICAgMTU3LCAgIDM3NCwgICAzNzcsICAgMzg5LCAgIDM3MiwgICAzODUsICAgMzU5LCAgIDM5MCwg
ICAzODYsCi0gICAgIDIxNiwgICAzOTEsICAgMzg4LCAgIDM5MiwgICA0MDMsICAgMTkwLCAgIDM5
NCwgICA0MDAsICAgMzExLCAgIDMyNiwKLSAgICAgIDc4LCAgIDMyOSwgICAzOTgsICAgNDA0LCAg
IDMyNywgICAzMzAsICAgMTIwLCAgIDMzMSwgICAxNzAsICAgMzI4LAotICAgICAxMTksICAgMTIx
LCAgIDIxNiwgICAgODQsICAgMjYzLCAgIDMwMCwgICAzNzUsICAgMTk5LCAgIDM5MywgICAzNTMs
Ci0gICAgIDM2MSwgICA0MDEsICAgMzQzLCAgIDM2OCwgICAyNzgsICAgMjc5LCAgIDI4MCwgICAy
ODEsICAgMjgyLCAgIDI4MywKLSAgICAgMjg0LCAgIDI4NSwgICAyODYsICAgMjg3LCAgIDE1Nywg
ICAzNjIsICAgMzc4LCAgIDExMCwgICAgIDAsICAgMTA2LAotICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAyODgsICAgMzY4LCAgICAgMCwgICAgIDAsICAgMTA3LCAgICAgMCwgICAgIDAsCisgICAg
IDEwMSwgICAxMTEsICAgMTIxLCAgIDE0MiwgICAxMjksICAgMzE4LCAgIDMyMiwgICAxMzAsICAg
MTIwLCAgIDI0MSwKKyAgICAgIDg1LCAgIDI1MSwgICAzODUsICAgMTk5LCAgIDI0MCwgICAyNDgs
ICAgMTM3LCAgICA4NiwgICAzMjksICAgMTk1LAorICAgICAxMDgsICAgMTA5LCAgIDQwNiwgICAy
ODEsICAgMzc5LCAgIDEyNCwgICAxMDksICAgMTQ5LCAgIDM5MiwgICAxMjEsCisgICAgIDEyOSwg
ICAyMzcsICAgMzgwLCAgIDEyMSwgICAxNTAsICAgMTIwLCAgIDE1MSwgICAxOTUsICAgMjM4LCAg
IDI2MCwKKyAgICAgMTIyLCAgIDE1NCwgICAxNTIsICAgMTIzLCAgIDI3MCwgICAyNzEsICAgMTI1
LCAgIDE1MywgICAxNTQsICAgMzkyLAorICAgICA0MjcsICAgMjY2LCAgIDExMCwgICAyNjcsICAg
MTUzLCAgIDI5NiwgICAzMzAsICAgMTM4LCAgIDI4MiwgICAyNDgsCisgICAgIDExMiwgICA0MjAs
ICAgMzE1LCAgIDEyOSwgICAyMDIsICAgMzE2LCAgIDI0MywgICA0MjAsICAgMTU0LCAgIDExMywK
KyAgICAgMjAzLCAgIDI1MiwgICAyNTMsICAgMTE1LCAgIDE1MywgICAxNDYsICAgMTQ3LCAgIDI5
OCwgICAyODUsICAgMjcyLAorICAgICAyNzMsICAgMjU3LCAgIDMzMSwgICAzMjcsICAgMzg5LCAg
IDExNiwgICAzMjgsICAgMjU4LCAgIDMxNSwgICAxMDEsCisgICAgIDMxNSwgICAzNzQsICAgMjU0
LCAgIDEzMSwgICAxMDEsICAgMzE1LCAgIDI1NSwgICAyNDEsICAgMzY0LCAgIDMzMywKKyAgICAg
MTk1LCAgIDMxOSwgICAzMjEsICAgMzkwLCAgIDEwMSwgICA0MjQsICAgMTk4LCAgIDEzNCwgICAx
NDgsICAgMzE1LAorICAgICAxMzYsICAgMzE1LCAgIDE1NCwgICAxNTQsICAgIDg1LCAgIDE0MSwg
ICAxMDEsICAgMzM3LCAgIDE1MywgICAxNTMsCisgICAgIDEwMSwgICAgODYsICAgMjAxLCAgIDMy
NywgICAxOTUsICAgMTk1LCAgIDM3NiwgICAzNTcsICAgMTAxLCAgIDEwOCwKKyAgICAgMTA5LCAg
IDM0NSwgICAzNDYsICAgMzQ3LCAgIDM0OCwgICAxMDEsICAgMjc0LCAgIDI3NSwgICAzNjMsICAg
MjM2LAorICAgICAzOTYsICAgMjI0LCAgIDM2NSwgICAzOTgsICAgMzE4LCAgIDI0OCwgICAgIDIs
ICAgICAzLCAgICAgNCwgICAyNjMsCisgICAgIDI2NCwgICAyNjUsICAgLTMwLCAgIDEwMSwgICAy
NjEsICAgMTAxLCAgIDI2OCwgICAyNjksICAgMjg2LCAgIDI4NywKKyAgICAgMzE1LCAgIDM4Miwg
ICAzNDEsICAgMzQyLCAgIDI1NiwgICA0MTIsICAgMzQzLCAgIDM0NCwgICAyNzYsICAgMzQ5LAor
ICAgICAzNTAsICAgMjc3LCAgIDI3OSwgICAzNjksICAgMzcwLCAgIDI3OCwgICAxODIsICAgMjgw
LCAgIDI4MywgICAyODksCisgICAgIDI5MCwgICAyOTIsICAgMjQxLCAgIDMwMSwgICAyOTMsICAg
MzI0LCAgIDI5NCwgICA0MjgsICAgMjk5LCAgIDI5NywKKyAgICAgMzAwLCAgIDM3NywgICAtMjks
ICAgMzI2LCAgIDE4MiwgICAzMjMsICAgLTI0LCAgLTI1MywgICAxNTQsICAgMTAxLAorICAgICAx
MDEsICAgMzcxLCAgIDM2NiwgICAzNzMsICAgMTUzLCAgIDM3MiwgICAzNzUsICAgMzgxLCAgIDMx
NSwgICAyNDksCisgICAgIDI1MCwgICAtMzEsICAgMzkxLCAgIDM4MywgICAxOTUsICAgMzk3LCAg
IDMwMywgICAzMDQsICAgMzA1LCAgIDMwNiwKKyAgICAgMzA3LCAgIDMwOCwgICAzMDksICAgMzEw
LCAgIDMxMSwgICAzMTIsICAgMzk5LCAgIDQwMiwgICAyNjIsICAgMjI0LAorICAgICA0MTAsICAg
MjQxLCAgIDQxNSwgICAzOTEsICAgMjQxLCAgIDMxMywgICA0MTEsICAgNDEzLCAgIDQxNiwgICA0
MTcsCisgICAgIDIxNSwgICA0MDEsICAgNDE5LCAgIDM1MSwgICA0MDAsICAgNDIzLCAgIDMzNiwg
ICA0MTQsICAgNDI5LCAgIDM4NCwKKyAgICAgMzUyLCAgIDM1NCwgICAzNTYsICAgMzUzLCAgIDE0
NCwgICAxNDMsICAgMjQxLCAgIDE4MiwgICAxNDUsICAgMzU1LAorICAgICA0MjUsICAgMTA3LCAg
IDI4OCwgICAzMjUsICAgMzc4LCAgIDM4NiwgICA0MTgsICAgMTk1LCAgIDQyNiwgICA0MDMsCisg
ICAgIDM4NywgICAzNjgsICAgMTMzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMjQxLCAgICAgMCwKKyAgICAgICAwLCAgIDE4MiwgICAxODIsICAgICAwLCAgICAgMCwgICAx
MDEsICAgMzkzLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAzODQsICAgICAw
LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
MTk5LCAgIDE5OSwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgIDE5OSwgICAxOTks
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAg
IDAsICAgMjI0LCAgIDEyOSwgICAgIDAsICAgICAwLCAgIDEzMCwgICAzOTMsICAgMzM4LCAgIDMz
OSwKKyAgICAgMzQwLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAg
IDE4MiwgICAxODIsICAgMTgyLAorICAgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgy
LCAgIDE4MiwgICAxODIsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgMTk5LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgNzgsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICA0MDksICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxOTksICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLAotICAgICAgIDAsICAgMTk5LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAg
IDUsICAgICA2LCAgICAgNywgICAgIDgsCi0gICAgICAgOSwgICAgMTAsICAgIDExLCAgIDE3OSwg
ICAxODAsICAgMTgxLCAgICAgMCwgICAxODIsICAgMTgzLCAgIDE4NCwKLSAgICAgMTg1LCAgIDE4
NiwgICAxODcsICAgMTg4LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3
LAotICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgMjcsCi0gICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIs
ICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywKLSAgICAgIDM4LCAgICAzOSwgICAg
NDAsICAgIDQxLCAgICA0MiwgICAxODksICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LAotICAg
ICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAg
ICA1NSwgICAgNTYsCi0gICAgICAgMCwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgMTMz
LCAgICA2MSwgICAxMzQsICAgMTM1LCAgIDEzNiwKLSAgICAgMTM3LCAgIDEzOCwgICAgIDAsICAg
ICAwLCAgIDEzOSwgICAxNDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAs
ICAgMjI0LCAgIDIyNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjI0LCAgIDIyNCwg
ICAgIDAsCisgICAgICAgMCwgICAxODIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAyMjQsICAgICAwLAorICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAxMDEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
CiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQxLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgIDE5MCwgICAxOTEsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAxOTIsICAgMTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LCAgICAgMSwgICAgIDIsCi0gICAg
ICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAg
IDExLCAgIDE3OSwKLSAgICAgMTgwLCAgIDE4MSwgICAgIDAsICAgMTgyLCAgIDE4MywgICAxODQs
ICAgMTg1LCAgIDE4NiwgICAxODcsICAgMTg4LAotICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAg
MTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsCi0gICAgICAyMiwg
ICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAg
ICAzMSwKLSAgICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4
LCAgICAzOSwgICAgNDAsICAgIDQxLAotICAgICAgNDIsICAgMTg5LCAgICA0MywgICAgNDQsICAg
IDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsCi0gICAgICA1MSwgICAgNTIs
ICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2LCAgICAgMCwgICAgNTcsICAgIDU4LCAgICA1OSwK
LSAgICAgIDYwLCAgIDEzMywgICAgNjEsICAgMTM0LCAgIDEzNSwgICAxMzYsICAgMTM3LCAgIDEz
OCwgICAgIDAsICAgICAwLAotICAgICAxMzksICAgMTQwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MSwKLSAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTkwLCAgIDI5MiwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgMTkyLAotICAgICAxNDMsICAgMTQ0LCAgIDE0NSwgICAxNDYsICAgICAxLCAgICAgMiwg
ICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsCi0gICAgICAgNywgICAgIDgsICAgICA5LCAgICAx
MCwgICAgMTEsICAgMTc5LCAgIDE4MCwgICAxODEsICAgICAwLCAgIDE4MiwKLSAgICAgMTgzLCAg
IDE4NCwgICAxODUsICAgMTg2LCAgIDE4NywgICAxODgsICAgIDEyLCAgICAxMywgICAgMTQsICAg
IDE1LAotICAgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIs
ICAgIDIzLCAgICAyNCwgICAgMjUsCi0gICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAg
MzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwKLSAgICAgIDM2LCAgICAzNywg
ICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgIDE4OSwgICAgNDMsICAgIDQ0LAot
ICAgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUy
LCAgICA1MywgICAgNTQsCi0gICAgICA1NSwgICAgNTYsICAgICAwLCAgICA1NywgICAgNTgsICAg
IDU5LCAgICA2MCwgICAxMzMsICAgIDYxLCAgIDEzNCwKLSAgICAgMTM1LCAgIDEzNiwgICAxMzcs
ICAgMTM4LCAgICAgMCwgICAgIDAsICAgMTM5LCAgIDE0MCwgICAgIDAsICAgICAwLAorICAgICAy
MjQsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAyMjQsICAgICAwLCAgICAg
MCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxODIsICAgICAxLCAg
ICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwKKyAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5
LCAgICAxMCwgICAgMTEsICAgMjA0LCAgIDIwNSwgICAyMDYsICAgICAwLAorICAgICAyMDcsICAg
MjA4LCAgIDIwOSwgICAyMTAsICAgMjExLCAgIDIxMiwgICAyMTMsICAgIDEyLCAgICAxMywgICAg
MTQsCisgICAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwg
ICAgMjIsICAgIDIzLCAgICAyNCwKKyAgICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAy
OSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LAorICAgICAgMzUsICAgIDM2LCAg
ICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsCisg
ICAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAyMTQsICAgIDQ5LCAgICA1MCwgICAgNTEs
ICAgIDUyLCAgICA1MywKKyAgICAgIDU0LCAgICA1NSwgICAgNTYsICAgIDU3LCAgICA1OCwgICAg
NTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLAorICAgICAgNjQsICAgIDY1LCAgICAgMCwg
ICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICA3MSwgICAgNzIsCisgICAgICA3
MywgICAgNzQsICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgx
LCAgICA4MiwKKyAgICAgIDgzLCAgIDE1NywgICAxNTgsICAgIDg0LCAgIDE1OSwgICAxNjAsICAg
MTYxLCAgIDE2MiwgICAxNjMsICAgICAwLAorICAgICAgIDAsICAgMTY0LCAgIDE2NSwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgMTkwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgIDE5MiwgICAxNDMsICAgMTQ0LCAgIDE0NSwgICAxNDYsCi0gICAgICAgMSwgICAgIDIsICAg
ICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwKLSAg
ICAgIDExLCAgIDE3OSwgICAxODAsICAgMTgxLCAgICAgMCwgICAxODIsICAgMTgzLCAgIDE4NCwg
ICAxODUsICAgMTg2LAotICAgICAxODcsICAgMTg4LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAx
NSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAg
ICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwKLSAgICAgIDMw
LCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgs
ICAgIDM5LAotICAgICAgNDAsICAgIDQxLCAgICA0MiwgICAxODksICAgIDQzLCAgICA0NCwgICAg
NDUsICAgIDQ2LCAgICA0NywgICAgNDgsCi0gICAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1Miwg
ICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAgICAwLCAgICA1NywKLSAgICAgIDU4LCAgICA1
OSwgICAgNjAsICAgMTMzLCAgICA2MSwgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgMTM4
LAotICAgICAgIDAsICAgICAwLCAgIDEzOSwgICAxNDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsCisgICAgIDE2NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAyMTUs
ICAgMjE2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgMjE3LCAgIDE2OCwgICAx
NjksICAgMTcwLCAgIDE3MSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LAorICAg
ICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAyMDQsICAgMjA1LCAg
IDIwNiwgICAgIDAsCisgICAgIDIwNywgICAyMDgsICAgMjA5LCAgIDIxMCwgICAyMTEsICAgMjEy
LCAgIDIxMywgICAgMTIsICAgIDEzLCAgICAxNCwKKyAgICAgIDE1LCAgICAxNiwgICAgMTcsICAg
IDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LAorICAgICAgMjUs
ICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywg
ICAgMzQsCisgICAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0
MSwgICAgNDIsICAgIDQzLCAgICA0NCwKKyAgICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAg
IDIxNCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLAorICAgICAgNTQsICAgIDU1
LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMs
CisgICAgICA2NCwgICAgNjUsICAgICAwLCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAg
NzAsICAgIDcxLCAgICA3MiwKKyAgICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3Nywg
ICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLAorICAgICAgODMsICAgMTU3LCAgIDE1
OCwgICAgODQsICAgMTU5LCAgIDE2MCwgICAxNjEsICAgMTYyLCAgIDE2MywgICAgIDAsCisgICAg
ICAgMCwgICAxNjQsICAgMTY1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgMTQxLCAgICAgMCwgICAg
IDAsICAgICAwLCAgIDExNywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwg
ICAxOTIsICAgMTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LCAgICAgMSwgICAgIDIsICAgICAzLCAg
ICAgNCwKLSAgICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDEx
LCAgIDE3OSwgICAxODAsICAgMTgxLAotICAgICAgIDAsICAgMTgyLCAgIDE4MywgICAxODQsICAg
MTg1LCAgIDE4NiwgICAxODcsICAgMTg4LCAgICAxMiwgICAgMTMsCi0gICAgICAxNCwgICAgMTUs
ICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywK
LSAgICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIDMzLAotICAgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAg
ICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAxODksCi0gICAgICA0MywgICAgNDQsICAgIDQ1
LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwKLSAgICAg
IDUzLCAgICA1NCwgICAgNTUsICAgIDU2LCAgICAgMCwgICAgNTcsICAgIDU4LCAgICA1OSwgICAg
NjAsICAgMTMzLAotICAgICAgNjEsICAgMTM0LCAgIDEzNSwgICAxMzYsICAgMTM3LCAgIDEzOCwg
ICAgIDAsICAgICAwLCAgIDEzOSwgICAxNDAsCisgICAgIDE2NiwgICAgIDAsICAgICAwLCAgICAg
MCwgICAyMTUsICAgMzE3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgMjE3LCAg
IDE2OCwgICAxNjksICAgMTcwLCAgIDE3MSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAg
ICA1LAorICAgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAyMDQs
ICAgMjA1LCAgIDIwNiwgICAgIDAsCisgICAgIDIwNywgICAyMDgsICAgMjA5LCAgIDIxMCwgICAy
MTEsICAgMjEyLCAgIDIxMywgICAgMTIsICAgIDEzLCAgICAxNCwKKyAgICAgIDE1LCAgICAxNiwg
ICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LAor
ICAgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMy
LCAgICAzMywgICAgMzQsCisgICAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAg
IDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwKKyAgICAgIDQ1LCAgICA0NiwgICAgNDcs
ICAgIDQ4LCAgIDIxNCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLAorICAgICAg
NTQsICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2
MiwgICAgNjMsCisgICAgICA2NCwgICAgNjUsICAgICAwLCAgICA2NiwgICAgNjcsICAgIDY4LCAg
ICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwKKyAgICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2
LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLAorICAgICAgODMsICAg
MTU3LCAgIDE1OCwgICAgODQsICAgMTU5LCAgIDE2MCwgICAxNjEsICAgMTYyLCAgIDE2MywgICAg
IDAsCisgICAgICAgMCwgICAxNjQsICAgMTY1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQxLCAgICAgMCwgICAgIDAsCi0g
ICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxOTIs
ICAgMTQzLCAgIDE0NCwKLSAgICAgMTQ1LCAgIDE0NiwgICAgIDEsICAgICAyLCAgICAgMywgICAg
IDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LAotICAgICAgIDksICAgIDEwLCAgICAxMSwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2
LCAgICAxNywKLSAgICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAg
IDI0LCAgICAyNSwgICAgMjYsICAgIDI3LAotICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEs
ICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsCi0gICAgICAzOCwgICAg
MzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgICAwLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0
NiwKLSAgICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAg
ICA1NCwgICAgNTUsICAgIDU2LAotICAgICAgIDAsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYw
LCAgIDEzMywgICAgNjEsICAgMTM0LCAgIDEzNSwgICAxMzYsCi0gICAgIDEzNywgICAxMzgsICAg
ICAwLCAgICAgMCwgICAxMzksICAgMTQwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAxLAotICAgICAgIDIsICAgICAzLCAgICAgNCwgICAxNDEsICAgICA2LCAgICAg
NywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAg
IDE5MiwgICAxNDMsICAgMTQ0LCAgIDE0NSwgICAxNDYsICAgICAwLCAgICAgMCwKLSAgICAgICAw
LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTks
ICAgIDIwLAotICAgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwg
ICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwKLSAgICAgIDQxLCAgICA0
MiwgICAgIDAsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5
LAotICAgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAg
ICAwLCAgICA1NywgICAgNTgsCi0gICAgICA1OSwgICAgNjAsICAgMTMzLCAgICA2MSwgICAxMzQs
ICAgMTM1LCAgIDEzNiwgICAxMzcsICAgMTM4LCAgICAgMCwKLSAgICAgICAwLCAgIDEzOSwgICAx
NDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAg
ICAxNjYsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjE1LCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCisgICAgIDIxNywgICAxNjgsICAgMTY5LCAgIDE3MCwgICAxNzEsICAgICAx
LCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwKKyAgICAgICA2LCAgICAgNywgICAgIDgsICAg
ICA5LCAgICAxMCwgICAgMTEsICAgMjA0LCAgIDIwNSwgICAyMDYsICAgICAwLAorICAgICAyMDcs
ICAgMjA4LCAgIDIwOSwgICAyMTAsICAgMjExLCAgIDIxMiwgICAyMTMsICAgIDEyLCAgICAxMywg
ICAgMTQsCisgICAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAy
MSwgICAgMjIsICAgIDIzLCAgICAyNCwKKyAgICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAg
ICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LAorICAgICAgMzUsICAgIDM2
LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQs
CisgICAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAyMTQsICAgIDQ5LCAgICA1MCwgICAg
NTEsICAgIDUyLCAgICA1MywKKyAgICAgIDU0LCAgICA1NSwgICAgNTYsICAgIDU3LCAgICA1OCwg
ICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLAorICAgICAgNjQsICAgIDY1LCAgICAg
MCwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICA3MSwgICAgNzIsCisgICAg
ICA3MywgICAgNzQsICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsICAg
IDgxLCAgICA4MiwKKyAgICAgIDgzLCAgIDE1NywgICAxNTgsICAgIDg0LCAgIDE1OSwgICAxNjAs
ICAgMTYxLCAgIDE2MiwgICAxNjMsICAgICAwLAorICAgICAgIDAsICAgMTY0LCAgIDE2NSwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKKyAgICAgMTY2LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MSwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAyMTcsICAgMTY4LCAgIDE2OSwgICAxNzAsICAg
MTcxLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsCisgICAgICAgNiwgICAgIDcs
ICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgIDIwNCwgICAyMDUsICAgMjA2LCAgICAgMCwK
KyAgICAgMjA3LCAgIDIwOCwgICAyMDksICAgMjEwLCAgIDIxMSwgICAyMTIsICAgMjEzLCAgICAx
MiwgICAgMTMsICAgIDE0LAorICAgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsCisgICAgICAyNSwgICAgMjYsICAgIDI3
LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwKKyAgICAg
IDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAg
NDMsICAgIDQ0LAorICAgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgMjE0LCAgICA0OSwg
ICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsCisgICAgICA1NCwgICAgNTUsICAgIDU2LCAgICA1
NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywKKyAgICAgIDY0LCAg
ICA2NSwgICAgIDAsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgNzEsICAg
IDcyLAorICAgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzks
ICAgIDgwLCAgICA4MSwgICAgODIsCisgICAgICA4MywgICAxNTcsICAgMTU4LCAgICA4NCwgICAx
NTksICAgMTYwLCAgIDE2MSwgICAxNjIsICAgMTYzLCAgICAgMCwKKyAgICAgICAwLCAgIDE2NCwg
ICAxNjUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAor
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCisgICAgIDE2NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgMjE3LCAgIDE2OCwgICAxNjks
ICAgMTcwLCAgIDE3MSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LAorICAgICAg
IDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwKKyAgICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4
LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LAorICAgICAgMjUsICAg
IDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAg
MzQsCisgICAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwg
ICAgNDIsICAgIDQzLCAgICA0NCwKKyAgICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICAg
MCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLAorICAgICAgNTQsICAgIDU1LCAg
ICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsCisg
ICAgICA2NCwgICAgNjUsICAgICAwLCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAs
ICAgIDcxLCAgICA3MiwKKyAgICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAg
NzgsICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLAorICAgICAgODMsICAgMTU3LCAgIDE1OCwg
ICAgODQsICAgMTU5LCAgIDE2MCwgICAxNjEsICAgMTYyLCAgIDE2MywgICAgIDAsCisgICAgICAg
MCwgICAxNjQsICAgMTY1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAxLCAgICAgMiwgICAgIDMsICAgICA0LAotICAgICAxNDEsICAgICA2LCAgICAgNywgICAgIDgs
ICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAx
NDMsICAgMTQ0LCAgIDE0NSwgICAxNDYsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEyLCAgICAx
MywKKyAgICAgMTY2LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAg
ICAgMCwgICAgIDAsICAgICAwLAorICAgICAyMTcsICAgMTY4LCAgIDE2OSwgICAxNzAsICAgMTcx
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMiwgICAgMTMsCiAgICAgICAxNCwgICAgMTUsICAg
IDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywKICAg
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwg
ICAgMzIsICAgIDMzLAotICAgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAz
OSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgIDAsCi0gICAgICA0MywgICAgNDQsICAgIDQ1LCAg
ICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwKLSAgICAgIDUz
LCAgICA1NCwgICAgNTUsICAgIDU2LCAgICAgMCwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAs
ICAgMTAzLAotICAgICAgNjEsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAg
MTEsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEyLCAgICAxMywKLSAgICAgIDE0LCAgICAx
NSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIz
LAotICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
MTA0LCAgICAzMiwgICAgMzMsCi0gICAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgNDEsICAgIDQyLCAgICAgMCwKLSAgICAgIDQzLCAgICA0NCwgICAg
NDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLAotICAg
ICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAgICAwLCAgICA1NywgICAgNTgsICAgIDU5LCAg
ICAgMCwgICAxMzMsCi0gICAgICA2MSwgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgMTM4
LCAgICAgMCwgICAgIDAsICAgMTM5LCAgIDE0MCwKKyAgICAgIDM0LCAgICAzNSwgICAgMzYsICAg
IDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLAorICAgICAgNDQs
ICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICAgMCwgICAgNDksICAgIDUwLCAgICA1MSwg
ICAgNTIsCisgICAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1
OSwgICAgNjAsICAgIDYxLCAgICA2MiwKKyAgICAgIDYzLCAgICA2NCwgICAgNjUsICAgICAwLCAg
ICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLAorICAgICAgNzIsICAgIDcz
LCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEs
CisgICAgICA4MiwgICAgODMsICAgMTU3LCAgIDE1OCwgICAgODQsICAgMTU5LCAgIDE2MCwgICAx
NjEsICAgMTYyLCAgIDE2MywKKyAgICAgICAwLCAgICAgMCwgICAxNjQsICAgMTY1LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAxLCAgICAgMiwgICAgIDMsCisgICAg
ICAgNCwgICAxNjYsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAg
ICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAxNjgsICAgMTY5LCAgIDE3MCwgICAxNzEs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEyLAorICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAg
MTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCisgICAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAg
ICAzMiwKKyAgICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5
LCAgICA0MCwgICAgNDEsICAgIDQyLAorICAgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwgICAgIDAsICAgIDQ5LCAgICA1MCwgICAgNTEsCisgICAgICA1MiwgICAgNTMs
ICAgIDU0LCAgICA1NSwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwK
KyAgICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICAgMCwgICAgNjYsICAgIDY3LCAgICA2
OCwgICAgNjksICAgIDcwLAorICAgICAgNzEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAg
ICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsCisgICAgICA4MSwgICAgODIsICAgIDgz
LCAgICAgMCwgICAxMjYsICAgIDg0LCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwKKyAgICAg
IDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwg
ICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsCisgICAgICAxOSwgICAgMjAsICAgIDIxLCAgICAy
MiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAg
ICAgMCwgICAxMjcsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAg
ICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICA0NywgICAgNDgsCisgICAgICAgMCwgICAgNDksICAgIDUwLCAgICA1MSwgICAg
NTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2LCAgICA1NywKKyAgICAgIDU4LCAgICA1OSwg
ICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgIDAsICAgIDY2LAor
ICAgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwgICAgNzMsICAgIDc0
LCAgICA3NSwgICAgNzYsCisgICAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsICAg
ICAwLCAgICA4MywgICAxNTcsICAgMTU4LCAgICA4NCwKKyAgICAgMTU5LCAgIDE2MCwgICAxNjEs
ICAgMTYyLCAgIDE2MywgICAgIDAsICAgICAwLCAgIDE2NCwgICAxNjUsICAgICAwLAorICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
IDE2NiwgICAgIDAsICAgICAwLCAgIDE2NywKKyAgICAgICA4LCAgICAgOSwgICAgMTAsICAgIDEx
LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE2OCwgICAxNjksICAgMTcwLAorICAgICAxNzEsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAg
MTYsCisgICAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LAorICAgICAgMzcsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisg
ICAgICA0NywgICAgNDgsICAgICAwLCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMs
ICAgIDU0LCAgICA1NSwKKyAgICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAg
NjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LAorICAgICAgIDAsICAgIDY2LCAgICA2Nywg
ICAgNjgsICAgIDY5LCAgICA3MCwgICAgNzEsICAgIDcyLCAgICA3MywgICAgNzQsCisgICAgICA3
NSwgICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzksICAgIDgwLCAgICA4MSwgICAgIDAsICAgIDgz
LCAgIDE1NywKKyAgICAgMTU4LCAgICA4NCwgICAxNTksICAgMTYwLCAgIDE2MSwgICAxNjIsICAg
MTYzLCAgICAgMCwgICAgIDAsICAgMTY0LAorICAgICAxNjUsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTY2LCAgICAg
MCwKKyAgICAgICAwLCAgIDIzOSwgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgMTY4LAorICAgICAxNjksICAgMTcwLCAgIDE3MSwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgIDEyLCAgICAxMywgICAgMTQsCisgICAgICAxNSwgICAgMTYsICAg
IDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwKKyAg
ICAgIDI1LCAgICAyNiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAzMiwg
ICAgMzMsICAgIDM0LAorICAgICAgMzUsICAgIDM2LCAgICAzNywgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgIDQ3LCAg
ICA0OCwgICAgIDAsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywKKyAgICAgIDU0
LCAgICA1NSwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIs
ICAgIDYzLAorICAgICAgNjQsICAgIDY1LCAgICAgMCwgICAgNjYsICAgIDY3LCAgICA2OCwgICAg
NjksICAgIDcwLCAgICA3MSwgICAgNzIsCisgICAgICA3MywgICAgNzQsICAgIDc1LCAgICA3Niwg
ICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLCAgICAgMCwKKyAgICAgIDgzLCAgIDE1
NywgICAxNTgsICAgIDg0LCAgIDE1OSwgICAxNjAsICAgMTYxLCAgIDE2MiwgICAxNjMsICAgICAw
LAorICAgICAgIDAsICAgMTY0LCAgIDE2NSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MSwgICAgIDAsICAgICAwLAotICAg
ICAxNDIsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsICAgICAwLCAg
IDE0MywgICAxNDQsCi0gICAgIDE0NSwgICAxNDYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKKyAgICAgMTY2LCAgICAgOCwgICAgIDksICAg
IDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAyOTUs
ICAgMTY4LCAgIDE2OSwgICAxNzAsICAgMTcxLCAgICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwg
ICAgMTUsCiAgICAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAy
MiwgICAgMjMsICAgIDI0LCAgICAyNSwKICAgICAgIDI2LCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LAotICAgICAgMzYsICAgIDM3
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA0MSwgICAgNDIsICAgICAwLCAgICA0MywgICAgNDQs
Ci0gICAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAg
NTIsICAgIDUzLCAgICA1NCwKLSAgICAgIDU1LCAgICA1NiwgICAgIDAsICAgIDU3LCAgICA1OCwg
ICAgNTksICAgICAwLCAgIDEzMywgICAgNjEsICAgMTM0LAotICAgICAxMzUsICAgMTM2LCAgIDEz
NywgICAxMzgsICAgICAwLCAgICAgMCwgICAxMzksICAgMTQwLCAgICAgMCwgICAgIDAsCi0gICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDEs
ICAgICAwLCAgICAgMCwgICAyMTQsICAgICA4LAotICAgICAgIDksICAgIDEwLCAgICAxMSwgICAg
IDAsICAgICAwLCAgICAgMCwgICAxNDMsICAgMTQ0LCAgIDE0NSwgICAxNDYsCi0gICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAg
ICAxNywKLSAgICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0
LCAgICAyNSwgICAgMjYsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsCi0gICAgICAgMCwgICAgIDAs
ICAgICAwLCAgICA0MSwgICAgNDIsICAgICAwLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwK
LSAgICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1
NCwgICAgNTUsICAgIDU2LAotICAgICAgIDAsICAgIDU3LCAgICA1OCwgICAgNTksICAgICAwLCAg
IDEzMywgICAgNjEsICAgMTM0LCAgIDEzNSwgICAxMzYsCi0gICAgIDEzNywgICAxMzgsICAgICAw
LCAgICAgMCwgICAxMzksICAgMTQwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAg
IDM2LCAgICAzNywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAorICAgICAgIDAsICAgIDQ3LCAgICA0OCwgICAgIDAsICAgIDQ5LCAgICA1MCwg
ICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsCisgICAgICA1NSwgICAgNTYsICAgIDU3LCAgICA1
OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwKKyAgICAgIDY1LCAg
ICAgMCwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICA3MSwgICAgNzIsICAg
IDczLAorICAgICAgNzQsICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAs
ICAgIDgxLCAgICAgMCwgICAgODMsCisgICAgIDE1NywgICAxNTgsICAgIDg0LCAgIDE1OSwgICAx
NjAsICAgMTYxLCAgIDE2MiwgICAxNjMsICAgICAwLCAgICAgMCwKKyAgICAgMTY0LCAgIDE2NSwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAor
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAxNjYsCisgICAgICAgMCwgICAgIDAsICAgMzIwLCAgICAgOCwgICAgIDksICAg
IDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgMTY4LCAgIDE2OSwgICAxNzAs
ICAgMTcxLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsICAgIDEzLAorICAgICAg
MTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAy
MiwgICAgMjMsCisgICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDMyLCAgICAzMywKKyAgICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgNDcsICAgIDQ4LCAgICAgMCwgICAgNDksICAgIDUwLCAgICA1MSwgICAg
NTIsCisgICAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwg
ICAgNjAsICAgIDYxLCAgICA2MiwKKyAgICAgIDYzLCAgICA2NCwgICAgNjUsICAgICAwLCAgICA2
NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLAorICAgICAgNzIsICAgIDczLCAg
ICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsCisg
ICAgICAgMCwgICAgODMsICAgMTU3LCAgIDE1OCwgICAgODQsICAgMTU5LCAgIDE2MCwgICAxNjEs
ICAgMTYyLCAgIDE2MywKKyAgICAgICAwLCAgICAgMCwgICAxNjQsICAgMTY1LCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAg
MCwgICAgIDAsICAgICAwLCAgIDE0MSwgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgICAw
LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMjcwLCAgIDE0MywgICAxNDQsICAg
MTQ1LCAgIDE0NiwgICAgIDAsICAgIDEyLAotICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYs
ICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsCi0gICAgICAyMywgICAg
MjQsICAgIDI1LCAgICAyNiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAz
MiwKLSAgICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgNDEsICAgIDQyLAotICAgICAgIDAsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2
LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsCi0gICAgICA1MiwgICAgNTMsICAg
IDU0LCAgICA1NSwgICAgNTYsICAgICAwLCAgICA1NywgICAgNTgsICAgIDU5LCAgICAgMCwKLSAg
ICAgMTMzLCAgICA2MSwgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgMTM4LCAgICAgMCwg
ICAgIDAsICAgMTM5LAotICAgICAxNDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQxLCAgICAgMCwKLSAgICAgICAw
LCAgIDI5NSwgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMTQzLAotICAgICAxNDQsICAgMTQ1LCAgIDE0NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDEyLCAgICAxMywgICAgMTQsCisgICAgICAgMCwgICAxNjYsICAgICA4LCAgICAgOSwg
ICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAg
MCwgICAxNjgsICAgMTY5LCAgIDE3MCwgICAxNzEsICAgICAwLCAgICAxMiwgICAgMTMsICAgIDE0
LAogICAgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAg
IDIyLCAgICAyMywgICAgMjQsCiAgICAgICAyNSwgICAgMjYsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgMzIsICAgIDMzLCAgICAzNCwKLSAgICAgIDM1LCAgICAzNiwgICAg
MzcsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDQxLCAgICA0MiwgICAgIDAsICAgIDQzLAotICAg
ICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAg
ICA1MiwgICAgNTMsCi0gICAgICA1NCwgICAgNTUsICAgIDU2LCAgICAgMCwgICAgNTcsICAgIDU4
LCAgICA1OSwgICAgIDAsICAgMTMzLCAgICA2MSwKLSAgICAgMTM0LCAgIDEzNSwgICAxMzYsICAg
MTM3LCAgIDEzOCwgICAgIDAsICAgICAwLCAgIDEzOSwgICAxNDAsICAgICAwLAotICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0
MSwgICAgIDgsICAgICA5LCAgICAxMCwKLSAgICAgIDExLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgIDE0MywgICAxNDQsICAgMTQ1LAotICAgICAxNDYsICAgICAw
LCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTks
Ci0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAg
IDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgMzIsICAgIDMzLCAgICAzNCwg
ICAgMzUsICAgIDM2LCAgICAzNywgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgIDQxLCAgIDIz
NCwgICAgIDAsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsCi0gICAg
ICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAg
ICAwLCAgICA1NywKLSAgICAgIDU4LCAgICA1OSwgICAgIDAsICAgMTMzLCAgICA2MSwgICAxMzQs
ICAgMTM1LCAgIDEzNiwgICAxMzcsICAgMTM4LAotICAgICAgIDAsICAgICAwLCAgIDEzOSwgICAx
NDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDEsICAgICAyLCAg
ICAgMywKLSAgICAgICA0LCAgIDE0MSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEw
LCAgICAxMSwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgIDE0MywgICAxNDQsICAg
MTQ1LCAgIDE0NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsCi0gICAgICAxMywgICAgMTQs
ICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwK
LSAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgMzEsICAgIDMyLAotICAgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAg
ICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsCi0gICAgICAgMCwgICAgNDMsICAgIDQ0
LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwKLSAgICAg
IDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgIDAsICAgIDU3LCAgICA1OCwgICAg
NTksICAgIDYwLAotICAgICAgIDAsICAgIDYxLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAxLCAgICAg
MiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDYsICAgICA3LCAgICAgOCwKLSAgICAgICA5LCAg
ICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAyMjIsICAgIDEyLCAgICAxMywgICAgMTQs
ICAgIDE1LCAgICAxNiwgICAgMTcsCi0gICAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywKLSAgICAgIDI4LCAgICAyOSwg
ICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LAot
ICAgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICAgMCwgICAgNDMsICAgIDQ0
LCAgICA0NSwgICAgNDYsCi0gICAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAg
IDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwKLSAgICAgICAwLCAgICA1NywgICAgNTgs
ICAgIDU5LCAgICA2MCwgICAgIDAsICAgIDYxLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAxLCAgICAg
MiwgICAgIDMsCi0gICAgICAgNCwgICAgIDAsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAg
ICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAyNTksICAgIDEyLAotICAgICAgMTMsICAg
IDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsCi0gICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwg
ICAgMzAsICAgIDMxLCAgICAzMiwKLSAgICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAz
NywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLAotICAgICAgIDAsICAgIDQzLCAg
ICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsCi0g
ICAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAgICAwLCAgICA1NywgICAgNTgs
ICAgIDU5LCAgICA2MCwKLSAgICAgICAwLCAgICA2MSwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTA5LAotICAgICAgIDAsICAgICAwLCAgICAgMSwg
ICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsCi0gICAgICAg
OSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMzMzLCAgICAxMiwgICAgMTMsICAg
IDE0LCAgICAxNSwgICAgMTYsICAgIDE3LAotICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEs
ICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsCi0gICAgICAyOCwgICAg
MjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAz
NywKLSAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgIDAsICAgIDQzLCAg
ICA0NCwgICAgNDUsICAgIDQ2LAotICAgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUx
LCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsCi0gICAgICAgMCwgICAgNTcsICAg
IDU4LCAgICA1OSwgICAgNjAsICAgICAwLCAgICA2MSwgICAgIDEsICAgICAyLCAgICAgMywKLSAg
ICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwg
ICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsCi0gICAgICAxMywgICAgMTQsICAgIDE1LCAg
ICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKLSAgICAgIDIz
LCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEs
ICAgIDMyLAotICAgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAg
MzksICAgIDQwLCAgICA0MSwgICAgNDIsCi0gICAgICAgMCwgICAgNDMsICAgIDQ0LCAgICA0NSwg
ICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwKLSAgICAgIDUyLCAgICA1
MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgIDAsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYw
LAotICAgICAgIDAsICAgIDYxLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAg
ICA2LCAgICAgNywgICAgIDgsCisgICAgICAzNSwgICAgMzYsICAgIDM3LCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAg
NDcsICAgMjU5LCAgICAgMCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLAorICAg
ICAgNTQsICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAg
ICA2MiwgICAgNjMsCisgICAgICA2NCwgICAgNjUsICAgICAwLCAgICA2NiwgICAgNjcsICAgIDY4
LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwKKyAgICAgIDczLCAgICA3NCwgICAgNzUsICAg
IDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsICAgICAwLAorICAgICAgODMs
ICAgMTU3LCAgIDE1OCwgICAgODQsICAgMTU5LCAgIDE2MCwgICAxNjEsICAgMTYyLCAgIDE2Mywg
ICAgIDAsCisgICAgICAgMCwgICAxNjQsICAgMTY1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LAorICAgICAxNjYsICAgICA2
LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAs
CisgICAgICAgMCwgICAxNjgsICAgMTY5LCAgIDE3MCwgICAxNzEsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLAorICAgICAgMjQsICAgIDI1LCAgICAy
NiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsCisgICAg
ICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAg
IDQyLCAgICA0MywKKyAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgIDAs
ICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLAorICAgICAgNTMsICAgIDU0LCAgICA1NSwgICAg
NTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsCisgICAgICA2Mywg
ICAgNjQsICAgIDY1LCAgICAgMCwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAg
ICA3MSwKKyAgICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4
LCAgICA3OSwgICAgODAsICAgIDgxLAorICAgICAgODIsICAgIDgzLCAgICAgMCwgICAgIDAsICAg
IDg0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwK
KyAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAyNDcsICAgIDEyLCAgICAxMywgICAgMTQsCisgICAgICAxNSwgICAgMTYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwKKyAgICAg
IDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAg
MzMsICAgIDM0LAorICAgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwg
ICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsCisgICAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0
OCwgICAgIDAsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywKKyAgICAgIDU0LCAg
ICA1NSwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAg
IDYzLAorICAgICAgNjQsICAgIDY1LCAgICAgMCwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjks
ICAgIDcwLCAgICA3MSwgICAgNzIsCisgICAgICA3MywgICAgNzQsICAgIDc1LCAgICA3NiwgICAg
NzcsICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLCAgICA4MiwKKyAgICAgIDgzLCAgICAgMCwg
ICAgIDAsICAgIDg0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAor
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0
LCAgICAgMCwgICAgIDYsCisgICAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAyODQsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAorICAgICAg
MTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAy
NCwgICAgMjUsCisgICAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAg
ICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwKKyAgICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5
LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LAorICAgICAgNDYsICAg
IDQ3LCAgICA0OCwgICAgIDAsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAg
NTQsCisgICAgICA1NSwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwg
ICAgNjIsICAgIDYzLCAgICA2NCwKKyAgICAgIDY1LCAgICAgMCwgICAgNjYsICAgIDY3LCAgICA2
OCwgICAgNjksICAgIDcwLCAgICA3MSwgICAgNzIsICAgIDczLAorICAgICAgNzQsICAgIDc1LCAg
ICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLCAgICA4MiwgICAgODMsCisg
ICAgICAgMCwgICAgIDAsICAgIDg0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgMTMyLCAgICAgMCwgICAgIDAsICAgICAxLCAgICAgMiwgICAg
IDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LAorICAgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAzNTgsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1
LCAgICAxNiwKKyAgICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAg
IDIzLCAgICAyNCwgICAgMjUsICAgIDI2LAorICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsCisgICAgICAzNywgICAg
MzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0
NiwKKyAgICAgIDQ3LCAgICA0OCwgICAgIDAsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAg
ICA1MywgICAgNTQsICAgIDU1LAorICAgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYw
LCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgNjUsCisgICAgICAgMCwgICAgNjYsICAg
IDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICA3MSwgICAgNzIsICAgIDczLCAgICA3NCwKKyAg
ICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLCAgICA4Miwg
ICAgODMsICAgICAwLAorICAgICAgIDAsICAgIDg0LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAg
NCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsCiAgICAgICAgOSwgICAgMTAsICAgIDExLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYs
ICAgIDE3LAogICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAg
MjQsICAgIDI1LCAgICAyNiwgICAgMjcsCiAgICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwg
ICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywKLSAgICAgIDM4LCAgICAz
OSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgIDAsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2
LAotICAgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAg
IDU0LCAgICA1NSwgICAgNTYsCi0gICAgICAgMCwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAs
ICAgICAwLCAgICA2MSwgICAgIDgsICAgICA5LCAgICAxMCwKLSAgICAgIDExLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAg
ICAgIDAsICAgICAwLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAg
ICAxOCwgICAgMTksCi0gICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1
LCAgICAyNiwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgMzIsICAg
IDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgIDAsICAgICAwLAotICAgICAgIDAs
ICAgIDQxLCAgICA0MiwgICAgIDAsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0Nywg
ICAgNDgsCi0gICAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1
NSwgICAgNTYsICAgICAwLCAgICA1NywKLSAgICAgIDU4LCAgICA1OSwgICAgIDAsICAgMzA5LCAg
ICA2MSwgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgMzEwLAotICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
Ci0gICAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAg
MTksICAgIDIwLCAgICAyMSwKLSAgICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgMzIsICAgIDMzLCAgICAz
NCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgIDAsICAgICAwLCAgICAgMCwgICAgNDEsCi0gICAg
ICA0MiwgICAgIDAsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAg
IDQ5LCAgICA1MCwKLSAgICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYs
ICAgICAwLCAgICA1NywgICAgNTgsICAgIDU5LAotICAgICAgIDAsICAgICAwLCAgICA2MQorICAg
ICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAg
ICA0NiwgICAgNDcsCisgICAgICA0OCwgICAgIDAsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUy
LCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwKKyAgICAgIDU3LCAgICA1OCwgICAgNTksICAg
IDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgNjUsICAgICAwLAorICAgICAgNjYs
ICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICA3MSwgICAgNzIsICAgIDczLCAgICA3NCwg
ICAgNzUsCisgICAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLCAgICA4
MiwgICAgODMsICAgICAwLCAgICAgMCwKKyAgICAgIDg0LCAgICAgMSwgICAgIDIsICAgICAzLCAg
ICAgNCwgICAgIDAsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LAorICAgICAgMTAsICAgIDEx
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
CisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAg
MTYsICAgIDE3LCAgICAxOCwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsCisgICAg
ICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwKKyAgICAgICAwLCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMs
ICAgIDU0LCAgICA1NSwgICAgNTYsICAgIDU3LAorICAgICAgNTgsICAgIDU5LCAgICA2MCwgICAg
NjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICAgMCwgICAgNjYsCisgICAgICA2Nywg
ICAgNjgsICAgIDY5LCAgICA3MCwgICAgNzEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAg
ICA3NiwKKyAgICAgIDc3LCAgICA3OCwgICAgNzksICAgIDgwLCAgICA4MSwgICAgODIsICAgIDgz
LCAgICAgMCwgICAgIDAsICAgIDg0LAorICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwK
KyAgICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAy
NCwgICAgMjUsICAgIDI2LAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsCisgICAgICAzNywgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAg
IDQ3LCAgICA0OCwgICAgIDAsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAg
NTQsICAgIDU1LAorICAgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwg
ICAgNjIsICAgIDYzLCAgICA2NCwgICAgNjUsCisgICAgICAgMCwgICAgNjYsICAgIDY3LCAgICA2
OCwgICAgNjksICAgIDcwLCAgICA3MSwgICAgNzIsICAgIDczLCAgICA3NCwKKyAgICAgIDc1LCAg
ICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLCAgICAgMCwgICAgODMsICAg
ICAwLAorICAgICAzMzQsICAgIDg0LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAzMzUs
ICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwKKyAgICAgIDE1LCAgICAxNiwg
ICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LAor
ICAgICAgMjUsICAgIDI2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDMy
LCAgICAzMywgICAgMzQsCisgICAgICAzNSwgICAgMzYsICAgIDM3LCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgNDcs
ICAgIDQ4LCAgICAgMCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLAorICAgICAg
NTQsICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2
MiwgICAgNjMsCisgICAgICA2NCwgICAgNjUsICAgICAwLCAgICA2NiwgICAgNjcsICAgIDY4LCAg
ICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwKKyAgICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2
LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsICAgICAwLAorICAgICAgODMsICAg
ICAwLCAgICAgMCwgICAgODQKIH07CiAKIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXljaGVj
a1tdID0KIHsKLSAgICAgICAwLCAgICA0MSwgICAgNzEsICAgIDkxLCAgIDEyNiwgICAgNjYsICAg
MjA0LCAgICA2NiwgICAxNDEsICAgICAwLAotICAgICAgNzEsICAgMTMxLCAgIDExMiwgICAgIDAs
ICAgMzM2LCAgICA5MiwgICAzNDIsICAgMzY0LCAgICA3NiwgICAxMDYsCi0gICAgIDEwNSwgICAx
MDQsICAgMTA4LCAgICA3NiwgICAgNzcsICAgMTE0LCAgIDExMSwgICAxMTQsICAgIDk3LCAgICA2
OSwKLSAgICAgMTExLCAgIDEwNiwgICAgOTMsICAgMTU1LCAgICA5MywgICAxMDUsICAgIDk3LCAg
IDM2MywgICAxMTMsICAgMTI1LAotICAgICAxMDYsICAgIDg3LCAgICA4OCwgICAxMDgsICAgMTA1
LCAgIDM5MiwgICAxMDUsICAgMTI1LCAgIDEwOCwgICAxMTQsCi0gICAgIDEyNywgICAxMTIsICAg
MTg1LCAgIDExMiwgICAxNzQsICAgMTA4LCAgIDExNCwgICAxMDYsICAgIDk4LCAgICA5OSwKLSAg
ICAgMTI5LCAgICA4NSwgICAgODYsICAgMzg1LCAgIDExMywgICAxMjUsICAgIDY2LCAgIDEwOCwg
ICAxMjksICAgMzkxLAotICAgICAxMzEsICAgIDcxLCAgIDEzMSwgICAyMTMsICAgIDc2LCAgIDE3
NSwgICAxMjIsICAgMTIzLCAgIDEwOCwgICAxMzksCi0gICAgIDE0MCwgICAgODEsICAgMTA2LCAg
IDEwNSwgICAgODQsICAgMTExLCAgIDExMCwgICAxMDQsICAgMTE0LCAgIDExMSwKLSAgICAgIDgx
LCAgIDIxMywgICAxMTEsICAgIDkzLCAgICA4MSwgICAxMTQsICAgMjI5LCAgICA5NywgICAxNTgs
ICAgMTE0LAotICAgICAxMDUsICAgMTg3LCAgIDEwNSwgICAxMTMsICAgMTA1LCAgIDEwNSwgICAx
MTEsICAgMTA2LCAgIDExMSwgICAxODcsCi0gICAgIDExMSwgICAyMzMsICAgMTEyLCAgIDE3NCwg
ICAxNzUsICAgMTc0LCAgIDE3NSwgICAxMTcsICAgMjQ1LCAgIDI0NiwKLSAgICAgMjQ3LCAgIDI0
OCwgICAxMDUsICAgMTA0LCAgIDI1NywgICAyMTEsICAgMjEyLCAgIDE4NywgICAxMTEsICAgMTI5
LAotICAgICAxMTYsICAgMTMxLCAgIDExOCwgICAyMTEsICAgMjEyLCAgIDI2OCwgICAgNzYsICAg
IDc3LCAgIDExMSwgICAyNzIsCi0gICAgIDI2MCwgICAxMTQsICAgMTA1LCAgIDExMSwgICAxMTEs
ICAgMzQzLCAgIDExNCwgICAxMTQsICAgICA0LCAgICAgNSwKLSAgICAgICA2LCAgIDIxMSwgICAy
MTIsICAgMTE5LCAgIDEyMCwgICAxMjEsICAgIDc2LCAgICA3NywgICAyOTgsICAgIDgzLAotICAg
ICAgODQsICAgIDg5LCAgICA5MCwgICAgNzksICAgIDgwLCAgIDExMSwgICAxMTIsICAgMjg5LCAg
IDI5MCwgICAyNDEsCi0gICAgIDI0MiwgICAxMDQsICAgMjQzLCAgIDI0NCwgICAxNzQsICAgMTc1
LCAgIDI5OCwgICAxMjYsICAgMjM4LCAgIDIzOSwKLSAgICAgMjQwLCAgIDI0MSwgICAyNDIsICAg
MjQzLCAgIDI0NCwgICAyNDUsICAgMjQ2LCAgIDI0NywgICAyNDgsICAgMjQ5LAotICAgICAyNTAs
ICAgMjUxLCAgIDI1MiwgICAyNTMsICAgMjU0LCAgIDI1NSwgICAyNTYsICAgMjQ5LCAgIDI1MCwg
ICAyNjAsCi0gICAgIDEyNSwgICAyNjAsICAgMTI0LCAgICA5MSwgICAyMDQsICAgMTA3LCAgICA5
MywgICAzNDcsICAgMTE0LCAgIDM0MiwKLSAgICAgMzUwLCAgIDExNCwgICAxMDQsICAgMTA0LCAg
IDExNCwgICAzMDEsICAgMTEyLCAgIDEwNywgICAxMDQsICAgMTA0LAotICAgICAxMDksICAgMTA0
LCAgICA1NiwgICAzMDEsICAgMTA2LCAgIDM0NywgICAxMDUsICAgMTA4LCAgIDM1MCwgICAxMTMs
Ci0gICAgIDM2MywgICAxMDcsICAgMzcyLCAgIDExMywgICAxMTIsICAgMzU3LCAgIDEwNywgICAx
MDcsICAgMTEzLCAgIDExMSwKLSAgICAgMTA0LCAgIDMwMSwgICAxMDcsICAgMTA0LCAgIDM3Nywg
ICAxMTMsICAgMTA1LCAgIDMzNSwgICAxMTQsICAgMTA5LAotICAgICAzNzIsICAgMTA1LCAgIDEw
NywgICAgMTcsICAgMzk0LCAgIDEwOCwgICAxMTMsICAgMzkwLCAgIDIzMCwgICAyNTEsCi0gICAg
IDI2MCwgICAyNTQsICAgMTE0LCAgIDExNCwgICAyNTIsICAgMjU1LCAgICA5NywgICAyNTYsICAg
MzU0LCAgIDI1MywKLSAgICAgIDkzLCAgICA5NywgICAzOTQsICAgICA1LCAgIDE3OCwgICAyMTgs
ICAgMzU0LCAgIDI3NywgICAzODMsICAgMzAyLAotICAgICAzMzcsICAgMzkxLCAgIDI3NywgICAz
NDIsICAgIDk0LCAgICA5NSwgICAgOTYsICAgIDk3LCAgICA5OCwgICAgOTksCi0gICAgIDEwMCwg
ICAxMDEsICAgMTAyLCAgIDEwMywgICAzNTQsICAgMzM3LCAgIDM2MywgICAgODEsICAgIC0xLCAg
IDM2OCwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTEzLCAgIDM2MywgICAgLTEsICAgIC0x
LCAgIDM2OCwgICAgLTEsICAgIC0xLAorICAgICAgIDAsICAgIDQ3LCAgICA4OSwgICAxMTQsICAg
IDk0LCAgIDIyOSwgICAyMzgsICAgIDk0LCAgICA4OSwgICAxNTAsCisgICAgICAgMCwgICAxNjYs
ICAgMzYxLCAgIDEzNSwgICAxNDksICAgMTU1LCAgICA1OSwgICAgIDAsICAgMTAwLCAgIDEzMSwK
KyAgICAgMTAwLCAgIDEwMSwgICAzODksICAgMTE2LCAgIDEzMCwgICAxMDAsICAgMTAxLCAgIDEz
MCwgICAzNjcsICAgMTE2LAorICAgICAxMjAsICAgMTMwLCAgIDEzOCwgICAxMjAsICAgMTM3LCAg
IDExNiwgICAxMzIsICAgMTQ5LCAgIDEzNywgICAxODAsCisgICAgIDEzNSwgICAxMjgsICAgMTM4
LCAgIDEzOCwgICAxMTEsICAgMTEyLCAgICA5MiwgICAxMjgsICAgMTM1LCAgIDM4OCwKKyAgICAg
NDE3LCAgIDE0MCwgICAxMzIsICAgMTQyLCAgIDEzNSwgICAyMTAsICAgMTM4LCAgIDEwMCwgICAx
NTEsICAgMTk5LAorICAgICAxMjgsICAgNDEwLCAgIDEzNSwgICAxNTMsICAgMTI5LCAgIDEzOCwg
ICAxNTMsICAgNDE2LCAgIDE1NSwgICAxMzgsCisgICAgIDEzNSwgICAxMDksICAgMTEwLCAgIDEy
OSwgICAxNTUsICAgMTIxLCAgIDEyMiwgICAyMTIsICAgMjAwLCAgIDE0NiwKKyAgICAgMTQ3LCAg
IDEyOSwgICAxMjksICAgMTM1LCAgIDEyOSwgICAxMzUsICAgMTM4LCAgIDEzNSwgICAxMzUsICAg
IDg5LAorICAgICAxMzUsICAgMzIzLCAgIDEzMCwgICAxMzAsICAgIDk0LCAgIDEzNSwgICAxMzQs
ICAgMjM4LCAgIDEzOCwgICAyNTQsCisgICAgIDIxMiwgICAyMzYsICAgMjM3LCAgIDEyOSwgICAx
MDQsICAgMTI5LCAgIDEzOCwgICAxMDcsICAgMTI4LCAgIDEzNSwKKyAgICAgMTMyLCAgIDEzNSwg
ICAxOTksICAgMjAwLCAgIDEwNCwgICAxMzIsICAgMTE2LCAgIDI1OCwgICAxOTksICAgMjAwLAor
ICAgICAxMjAsICAgMTA0LCAgIDEzNywgICAxMzUsICAgMjM2LCAgIDIzNywgICAxMzgsICAgMjgy
LCAgIDEyOCwgICAxMDAsCisgICAgIDEwMSwgICAyNzAsICAgMjcxLCAgIDI3MiwgICAyNzMsICAg
MTM1LCAgIDExMywgICAxMTQsICAgMjkzLCAgIDEzMCwKKyAgICAgMzcyLCAgIDE0MSwgICAyOTcs
ICAgMzc1LCAgIDM2OCwgICAyODUsICAgICA0LCAgICAgNSwgICAgIDYsICAgMTQzLAorICAgICAx
NDQsICAgMTQ1LCAgIDEyOCwgICAxNTMsICAgMTI4LCAgIDE1NSwgICAxMDcsICAgMTA4LCAgIDEw
MywgICAxMDQsCisgICAgIDEzNSwgICAxMzYsICAgMjY2LCAgIDI2NywgICAxMjksICAgMzk3LCAg
IDI2OCwgICAyNjksICAgMTUwLCAgIDI3NCwKKyAgICAgMjc1LCAgIDE0OSwgICAxMTUsICAgMzE0
LCAgIDMxNSwgICAxNDgsICAgMTMxLCAgIDExNywgICAxMzEsICAgMTM4LAorICAgICAxMzgsICAg
MTI4LCAgIDMyMywgICAxMzMsICAgMTI4LCAgIDEzMSwgICAxMzgsICAgNDE5LCAgIDEzNiwgICAx
MjgsCisgICAgIDEyOCwgICAzMjYsICAgMTI4LCAgIDEzMCwgICAxNDksICAgMTM3LCAgIDEyOSwg
ICAxMzIsICAgMjg1LCAgIDE5OSwKKyAgICAgMjAwLCAgIDEzMSwgICAxMzYsICAgMTMxLCAgIDI4
NSwgICAxMzcsICAgMTM3LCAgIDEzMSwgICAxMzUsICAgMTY0LAorICAgICAxNjUsICAgMTI4LCAg
IDM2NywgICAgNjIsICAgMzI2LCAgIDEzNywgICAxMTgsICAgMTE5LCAgIDEyMCwgICAxMjEsCisg
ICAgIDEyMiwgICAxMjMsICAgMTI0LCAgIDEyNSwgICAxMjYsICAgMTI3LCAgIDEzMSwgICAxMjgs
ICAgMTgzLCAgIDIyOSwKKyAgICAgMTI5LCAgIDM3MiwgICAxMzgsICAgMzg4LCAgIDM3NSwgICAx
MzcsICAgMTMzLCAgIDEzMSwgICAxMjksICAgIDE3LAorICAgICAxMzIsICAgMzgyLCAgIDEzNywg
ICAyNzYsICAgMzc5LCAgIDEzOCwgICAyNTUsICAgNDAyLCAgIDEzOCwgICAzNjAsCisgICAgIDI3
NywgICAyNzksICAgMjgxLCAgIDI3OCwgICAxMjAsICAgMTE2LCAgIDM5NywgICAyMTIsICAgMTIw
LCAgIDI4MCwKKyAgICAgNDE1LCAgICAgNSwgICAyMDMsICAgMjQzLCAgIDMyNywgICAzNjIsICAg
NDA4LCAgIDM3OSwgICA0MTYsICAgMzg4LAorICAgICAzNjIsICAgMzAyLCAgIDEwNCwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDQxOSwgICAgLTEsCisgICAgICAtMSwgICAy
MzYsICAgMjM3LCAgICAtMSwgICAgLTEsICAgMjg1LCAgIDM2NywgICAgLTEsICAgIC0xLCAgICAt
MSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgMzY3LCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDMzNiwgICAzMzcsICAgIC0xLCAgICAtMSwKLSAg
ICAgIC0xLCAgICAtMSwgICAzNDIsICAgMzQzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgIDMwMiwgICAzOTMsICAgIC0xLCAgICAt
MSwgICAzOTMsICAgMzg4LCAgIDI2MywgICAyNjQsCisgICAgIDI2NSwgICAyNjYsICAgMjY3LCAg
IDI2OCwgICAyNjksICAgMjcwLCAgIDI3MSwgICAyNzIsICAgMjczLCAgIDI3NCwKKyAgICAgMjc1
LCAgIDI3NiwgICAyNzcsICAgMjc4LCAgIDI3OSwgICAyODAsICAgMjgxLCAgICAtMSwgICAgLTEs
ICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgIDM2Mywg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMzY4LCAgICAtMSwKKyAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMzkyLCAgICAtMSwgICAgLTEsICAgIC0x
LAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgMzg1LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgIDM5MSwgICAg
IDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLAotICAg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgLTEsICAgIDE4LCAg
ICAxOSwgICAgMjAsCi0gICAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2
LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKLSAgICAgIDMxLCAgICAzMiwgICAgMzMsICAg
IDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLAotICAgICAgNDEs
ICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwg
ICAgNTAsCi0gICAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2LCAgICA1
NywgICAgNTgsICAgIDU5LCAgICA2MCwKLSAgICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAg
ICA2NSwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLAotICAgICAgLTEsICAgIDcy
LCAgICA3MywgICAgNzQsICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAs
Ci0gICAgICA4MSwgICAgODIsICAgIC0xLCAgICAtMSwgICAgODUsICAgIDg2LCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgIDM2MSwgICAzNjIsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgIDM2NywgICAzNjgsICAgIC0xLAorICAgICAgLTEsICAgMzI2LCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
Mzg4LCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgMzkzLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgIDEwNCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDgsICAgMTA5LCAg
ICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTE0LCAgIDExNSwgICAxMTYsICAgMTE3
LCAgIDExOCwgICAgIDMsICAgICA0LAotICAgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAg
ICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsCi0gICAgICAxNSwgICAgMTYs
ICAgIC0xLCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwK
LSAgICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAz
MiwgICAgMzMsICAgIDM0LAotICAgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAg
ICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsCi0gICAgICA0NSwgICAgNDYsICAgIDQ3
LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwKLSAgICAg
IDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAg
NjMsICAgIDY0LAotICAgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwg
ICAgLTEsICAgIDcyLCAgICA3MywgICAgNzQsCi0gICAgICA3NSwgICAgNzYsICAgIDc3LCAgICA3
OCwgICAgNzksICAgIDgwLCAgICA4MSwgICAgODIsICAgIC0xLCAgICAtMSwKLSAgICAgIDg1LCAg
ICA4NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAxMDQsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgIDEwOCwgICAx
MDksICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDExNCwKLSAgICAgMTE1LCAgIDExNiwg
ICAxMTcsICAgMTE4LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LAot
ICAgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2
LCAgICAtMSwgICAgMTgsCi0gICAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAg
IDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwKLSAgICAgIDI5LCAgICAzMCwgICAgMzEs
ICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LAotICAgICAg
MzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0
NywgICAgNDgsCi0gICAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAg
ICA1NSwgICAgNTYsICAgIDU3LCAgICA1OCwKLSAgICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYy
LCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LAotICAgICAgNjksICAg
IDcwLCAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAg
NzgsCi0gICAgICA3OSwgICAgODAsICAgIDgxLCAgICA4MiwgICAgLTEsICAgIC0xLCAgICA4NSwg
ICAgODYsICAgIC0xLCAgICAtMSwKKyAgICAgNDEwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgNDE2LCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgMzc5LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsCisg
ICAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUs
ICAgIDE2LCAgICAtMSwKKyAgICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAg
MjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LAorICAgICAgMjgsICAgIDI5LCAgICAzMCwg
ICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsCisgICAgICAz
OCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2
LCAgICA0NywKKyAgICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAg
IDU0LCAgICA1NSwgICAgNTYsICAgIDU3LAorICAgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEs
ICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsCisgICAgICA2OCwgICAg
NjksICAgIDcwLCAgICA3MSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3
NywKKyAgICAgIDc4LCAgICA3OSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIDg0LCAg
ICA4NSwgICAgODYsICAgIDg3LAorICAgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgIDky
LCAgICA5MywgICAgOTQsICAgIDk1LCAgICA5NiwgICAgOTcsCisgICAgICA5OCwgICAgOTksICAg
MTAwLCAgIDEwMSwgICAxMDIsICAgMTAzLCAgIDEwNCwgICAxMDUsICAgMTA2LCAgICAtMSwKKyAg
ICAgIC0xLCAgIDEwOSwgICAxMTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgMTA0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDEwOCwKLSAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMTQsICAgMTE1LCAgIDExNiwgICAxMTcs
ICAgMTE4LAotICAgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAg
IDksICAgIDEwLCAgICAxMSwgICAgMTIsCi0gICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwg
ICAgLTEsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKLSAgICAgIDIzLCAgICAy
NCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMy
LAotICAgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAg
IDQwLCAgICA0MSwgICAgNDIsCi0gICAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcs
ICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwKLSAgICAgIDUzLCAgICA1NCwgICAg
NTUsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLAotICAg
ICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAg
ICAtMSwgICAgNzIsCi0gICAgICA3MywgICAgNzQsICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4
LCAgICA3OSwgICAgODAsICAgIDgxLCAgICA4MiwKLSAgICAgIC0xLCAgICAtMSwgICAgODUsICAg
IDg2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAxMjgs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTMyLCAgIDEzMywgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCisgICAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0MSwgICAxNDIsICAgICAzLCAgICAg
NCwgICAgIDUsICAgICA2LCAgICAgNywKKyAgICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAg
ICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIC0xLAorICAgICAgMTgsICAgIDE5
LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcs
CisgICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAg
MzUsICAgIDM2LCAgICAzNywKKyAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0Miwg
ICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LAorICAgICAgNDgsICAgIDQ5LCAgICA1
MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgNTcsCisgICAg
ICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgNjUsICAg
IDY2LCAgICA2NywKKyAgICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwgICAgNzMs
ICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LAorICAgICAgNzgsICAgIDc5LCAgICAtMSwgICAg
ODEsICAgIDgyLCAgICA4MywgICAgODQsICAgIDg1LCAgICA4NiwgICAgODcsCisgICAgICA4OCwg
ICAgODksICAgIDkwLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwgICAgOTUsICAgIDk2LCAg
ICA5NywKKyAgICAgIDk4LCAgICA5OSwgICAxMDAsICAgMTAxLCAgIDEwMiwgICAxMDMsICAgMTA0
LCAgIDEwNSwgICAxMDYsICAgIC0xLAorICAgICAgLTEsICAgMTA5LCAgIDExMCwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwK
LSAgICAgIC0xLCAgIDEwNCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDgsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgMTE0LCAgIDExNSwgICAxMTYsICAgMTE3LCAg
IDExOCwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsCi0gICAgICAgNywgICAgIDgsICAgICA5
LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwKLSAgICAg
IC0xLCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAg
MjUsICAgIDI2LAotICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwg
ICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsCi0gICAgICAzNywgICAgMzgsICAgIDM5LCAgICA0
MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwKLSAgICAgIDQ3LCAg
ICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAg
IDU2LAotICAgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMs
ICAgIDY0LCAgICA2NSwgICAgNjYsCi0gICAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAg
LTEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAgICA3NiwKLSAgICAgIDc3LCAgICA3OCwg
ICAgNzksICAgIDgwLCAgICA4MSwgICAgODIsICAgIC0xLCAgICAtMSwgICAgODUsICAgIDg2LAor
ICAgICAxMjgsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTMyLCAgIDEzMywgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsCisgICAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0MSwgICAxNDIsICAg
ICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKKyAgICAgICA4LCAgICAgOSwgICAgMTAs
ICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIC0xLAorICAgICAg
MTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAy
NiwgICAgMjcsCisgICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAg
ICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywKKyAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQx
LCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LAorICAgICAgNDgsICAg
IDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAg
NTcsCisgICAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwg
ICAgNjUsICAgIDY2LCAgICA2NywKKyAgICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3
MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LAorICAgICAgNzgsICAgIDc5LCAg
ICAtMSwgICAgODEsICAgIDgyLCAgICA4MywgICAgODQsICAgIDg1LCAgICA4NiwgICAgODcsCisg
ICAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwgICAgOTUs
ICAgIDk2LCAgICA5NywKKyAgICAgIDk4LCAgICA5OSwgICAxMDAsICAgMTAxLCAgIDEwMiwgICAx
MDMsICAgMTA0LCAgIDEwNSwgICAxMDYsICAgIC0xLAorICAgICAgLTEsICAgMTA5LCAgIDExMCwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgIDEwNCwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTE0LCAgIDExNSwgICAxMTYsCi0gICAgIDExNywgICAx
MTgsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAx
MCwKLSAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDI1
LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwgICAgMzIsICAg
IDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwKLSAg
ICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwg
ICAgNDksICAgIDUwLAotICAgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICAt
MSwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsCi0gICAgICA2MSwgICAgNjIsICAgIDYzLCAg
ICA2NCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwKLSAgICAgIC0x
LCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzks
ICAgIDgwLAotICAgICAgODEsICAgIDgyLCAgICAtMSwgICAgLTEsICAgIDg1LCAgICA4NiwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAgMywKLSAgICAgICA0LCAgICAg
NSwgICAgIDYsICAgMTA0LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEz
LAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMTQsICAgMTE1LCAgIDExNiwgICAxMTcsICAg
MTE4LCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywKLSAgICAgIDM0LCAgICAzNSwgICAg
MzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLAotICAg
ICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAg
ICA1MiwgICAgNTMsCi0gICAgICA1NCwgICAgNTUsICAgIC0xLCAgICA1NywgICAgNTgsICAgIDU5
LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywKLSAgICAgIDY0LCAgICA2NSwgICAgNjYsICAg
IDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICAtMSwgICAgNzIsICAgIDczLAotICAgICAgNzQs
ICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLCAgICA4Miwg
ICAgLTEsCi0gICAgICAtMSwgICAgODUsICAgIDg2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgMTI4LCAgICAtMSwgICAgLTEsICAgIC0xLCAg
IDEzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAxMzgsICAgMTM5
LCAgIDE0MCwgICAxNDEsICAgMTQyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcs
CisgICAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAg
MTUsICAgIDE2LCAgICAtMSwKKyAgICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwg
ICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LAorICAgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsCisgICAg
ICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAg
IDQ2LCAgICA0NywKKyAgICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMs
ICAgIDU0LCAgICA1NSwgICAgNTYsICAgIDU3LAorICAgICAgNTgsICAgIDU5LCAgICA2MCwgICAg
NjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsCisgICAgICA2OCwg
ICAgNjksICAgIDcwLCAgICA3MSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAg
ICA3NywKKyAgICAgIDc4LCAgICA3OSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIDg0
LCAgICA4NSwgICAgODYsICAgIDg3LAorICAgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAg
IDkyLCAgICA5MywgICAgOTQsICAgIDk1LCAgICA5NiwgICAgOTcsCisgICAgICA5OCwgICAgOTks
ICAgMTAwLCAgIDEwMSwgICAxMDIsICAgMTAzLCAgIDEwNCwgICAxMDUsICAgMTA2LCAgICAtMSwK
KyAgICAgIC0xLCAgIDEwOSwgICAxMTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgIDEyOCwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAxMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAg
MTM4LCAgIDEzOSwgICAxNDAsICAgMTQxLCAgIDE0MiwgICAgIDMsICAgICA0LCAgICAgNSwgICAg
IDYsICAgICA3LAorICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywg
ICAgMTQsICAgIDE1LCAgICAxNiwgICAgLTEsCisgICAgICAxOCwgICAgMTksICAgIDIwLCAgICAy
MSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywKKyAgICAgIDI4LCAg
ICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAg
IDM3LAorICAgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQs
ICAgIDQ1LCAgICA0NiwgICAgNDcsCisgICAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAg
NTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2LCAgICA1NywKKyAgICAgIDU4LCAgICA1OSwg
ICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LAor
ICAgICAgNjgsICAgIDY5LCAgICA3MCwgICAgNzEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1
LCAgICA3NiwgICAgNzcsCisgICAgICA3OCwgICAgNzksICAgIC0xLCAgICA4MSwgICAgODIsICAg
IDgzLCAgICA4NCwgICAgODUsICAgIDg2LCAgICA4NywKKyAgICAgIDg4LCAgICA4OSwgICAgOTAs
ICAgIDkxLCAgICA5MiwgICAgOTMsICAgIDk0LCAgICA5NSwgICAgOTYsICAgIDk3LAorICAgICAg
OTgsICAgIDk5LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAgMTA1LCAgIDEw
NiwgICAgLTEsCisgICAgICAtMSwgICAxMDksICAgMTEwLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAxMjgsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0MSwgICAxNDIsICAgICAzLCAgICAgNCwg
ICAgIDUsICAgICA2LCAgICAgNywKKyAgICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAx
MiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDI1LCAgICAyNiwgICAgMjcsCisg
ICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUs
ICAgIDM2LCAgICAzNywKKyAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAg
NDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LAorICAgICAgNDgsICAgIDQ5LCAgICA1MCwg
ICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgNTcsCisgICAgICA1
OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgLTEsICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2
LCAgICA2NywKKyAgICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwgICAgNzMsICAg
IDc0LCAgICA3NSwgICAgNzYsICAgIDc3LAorICAgICAgNzgsICAgIDc5LCAgICAtMSwgICAgODEs
ICAgIDgyLCAgICA4MywgICAgODQsICAgIDg1LCAgICA4NiwgICAgODcsCisgICAgICA4OCwgICAg
ODksICAgIDkwLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwgICAgOTUsICAgIDk2LCAgICA5
NywKKyAgICAgIDk4LCAgICA5OSwgICAxMDAsICAgMTAxLCAgIDEwMiwgICAxMDMsICAgMTA0LCAg
IDEwNSwgICAxMDYsICAgIC0xLAorICAgICAgLTEsICAgMTA5LCAgIDExMCwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwKLSAg
ICAgMTA0LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwg
ICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYsCisgICAgIDEyOCwgICAgIDgsICAgICA5LCAg
ICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgMTM4
LCAgIDEzOSwgICAxNDAsICAgMTQxLCAgIDE0MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjUs
ICAgIDI2LAogICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAg
MzMsICAgIDM0LCAgICAzNSwgICAgMzYsCiAgICAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwg
ICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwKLSAgICAgIDQ3LCAgICA0
OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIC0x
LAotICAgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAg
IDY0LCAgICA2NSwgICAgNjYsCi0gICAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgLTEs
ICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAgICA3NiwKLSAgICAgIDc3LCAgICAtMSwgICAg
LTEsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAyNSwgICAgMjYsCi0gICAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMy
LCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwKLSAgICAgIDM3LCAgICAzOCwgICAgMzksICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDExNCwgICAgNDUsICAgIDQ2LAotICAgICAgNDcs
ICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDU0LCAgICA1NSwg
ICAgLTEsCi0gICAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2
MywgICAgNjQsICAgIDY1LCAgICA2NiwKLSAgICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAg
ICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgLTEsICAgIDc2LAotICAgICAgNzcsICAgIDc4
LCAgICA3OSwgICAgODAsICAgIDgxLCAgICA4MiwgICAgLTEsICAgIC0xLCAgICA4NSwgICAgODYs
CisgICAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAg
NTQsICAgIDU1LCAgICA1NiwKKyAgICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwg
ICAgLTEsICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2LAorICAgICAgNjcsICAgIDY4LCAgICA2
OSwgICAgNzAsICAgIDcxLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsCisgICAg
ICA3NywgICAgNzgsICAgIDc5LCAgICAtMSwgICAgODEsICAgIDgyLCAgICA4MywgICAgODQsICAg
IDg1LCAgICA4NiwKKyAgICAgIDg3LCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIs
ICAgIDkzLCAgICA5NCwgICAgOTUsICAgIDk2LAorICAgICAgOTcsICAgIDk4LCAgICA5OSwgICAx
MDAsICAgMTAxLCAgIDEwMiwgICAxMDMsICAgMTA0LCAgIDEwNSwgICAxMDYsCisgICAgICAtMSwg
ICAgLTEsICAgMTA5LCAgIDExMCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAgMywgICAgIDQsICAgICA1LAorICAgICAgIDYsICAgMTI4LCAgICAgOCwgICAgIDksICAg
IDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEs
ICAgMTM5LCAgIDE0MCwgICAxNDEsICAgMTQyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwK
KyAgICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAz
MywgICAgMzQsICAgIDM1LAorICAgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAg
ICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsCisgICAgICA0NiwgICAgNDcsICAgIDQ4
LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwKKyAgICAg
IDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIC0xLCAgICA2MywgICAg
NjQsICAgIDY1LAorICAgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICA3MSwg
ICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsCisgICAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3
OSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIDg0LCAgICA4NSwKKyAgICAgIDg2LCAg
ICA4NywgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgIDkyLCAgICA5MywgICAgOTQsICAg
IDk1LAorICAgICAgOTYsICAgIDk3LCAgICA5OCwgICAgLTEsICAgMTAwLCAgIDEwMSwgICAgLTEs
ICAgIC0xLCAgICAxMCwgICAgMTEsCisgICAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLAor
ICAgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5
LCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgMTM4LCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNjAsICAgIDYxLAorICAgICAg
LTEsICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3
MCwgICAgNzEsCisgICAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LCAg
ICA3OCwgICAgNzksICAgIC0xLCAgICA4MSwKKyAgICAgIDgyLCAgICA4MywgICAgODQsICAgIDg1
LCAgICA4NiwgICAgODcsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLAorICAgICAgOTIsICAg
IDkzLCAgICA5NCwgICAgOTUsICAgIDk2LCAgICAtMSwgICAgOTgsICAgIDk5LCAgIDEwMCwgICAx
MDEsCisgICAgIDEwMiwgICAxMDMsICAgMTA0LCAgIDEwNSwgICAxMDYsICAgIC0xLCAgICAtMSwg
ICAxMDksICAgMTEwLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMjgsICAgIC0xLCAgICAtMSwgICAxMzEsCisg
ICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMzks
ICAgMTQwLCAgIDE0MSwKKyAgICAgMTQyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LAorICAgICAgMzAsICAgIDMxLCAgICAzMiwg
ICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksCisgICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4
LCAgICA0OSwKKyAgICAgIDUwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgNjAsICAgIDYxLCAgICAtMSwgICAgNjMs
ICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksCisgICAgICA3MCwgICAg
NzEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3
OSwKKyAgICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgzLCAgICA4NCwgICAgODUsICAgIDg2LCAg
ICA4NywgICAgODgsICAgIDg5LAorICAgICAgOTAsICAgIDkxLCAgICA5MiwgICAgOTMsICAgIDk0
LCAgICA5NSwgICAgOTYsICAgIC0xLCAgICA5OCwgICAgOTksCisgICAgIDEwMCwgICAxMDEsICAg
MTAyLCAgIDEwMywgICAxMDQsICAgMTA1LCAgIDEwNiwgICAgLTEsICAgIC0xLCAgIDEwOSwKKyAg
ICAgMTEwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgIDEyOCwgICAgLTEsCisgICAgICAtMSwgICAxMzEsICAgIDEwLCAg
ICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDEzOSwKKyAgICAgMTQw
LCAgIDE0MSwgICAxNDIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYs
ICAgIDI3LAorICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAg
MzQsICAgIDM1LCAgICAzNiwgICAgMzcsCisgICAgICAzOCwgICAgMzksICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgNDUsICAgIDQ2LCAgICA0NywKKyAgICAgIDQ4LCAgICA0
OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LAorICAgICAgLTEsICAgIC0xLCAgICA2MCwgICAgNjEsICAgIC0xLCAgICA2MywgICAgNjQsICAg
IDY1LCAgICA2NiwgICAgNjcsCisgICAgICA2OCwgICAgNjksICAgIDcwLCAgICA3MSwgICAgNzIs
ICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywKKyAgICAgIDc4LCAgICA3OSwgICAg
LTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIDg0LCAgICA4NSwgICAgODYsICAgIDg3LAorICAg
ICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgIDkyLCAgICA5MywgICAgOTQsICAgIDk1LCAg
ICA5NiwgICAgLTEsCisgICAgICA5OCwgICAgOTksICAgMTAwLCAgIDEwMSwgICAxMDIsICAgMTAz
LCAgIDEwNCwgICAxMDUsICAgMTA2LCAgICAtMSwKKyAgICAgIC0xLCAgIDEwOSwgICAxMTAsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAxMDQsICAgIC0xLCAgICAtMSwKLSAgICAgMTA3LCAgICAxMCwgICAgMTEsICAgIDEyLCAg
ICAxMywgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMTUsICAgMTE2LAotICAgICAxMTcsICAgMTE4
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgs
CisgICAgIDEyOCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwKKyAgICAgMTM4LCAgIDEzOSwgICAxNDAsICAgMTQxLCAgIDE0Miwg
ICAgLTEsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAogICAgICAgMjksICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsCiAgICAg
ICAzOSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwKLSAgICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNTQs
ICAgIDU1LCAgICAtMSwgICAgNTcsICAgIDU4LAotICAgICAgNTksICAgIDYwLCAgICA2MSwgICAg
NjIsICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsCi0gICAgICA2OSwg
ICAgNzAsICAgIC0xLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICAtMSwgICAgNzYsICAgIDc3LCAg
ICA3OCwKLSAgICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLCAgICAtMSwgICAgLTEsICAgIDg1
LCAgICA4NiwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTA0LCAgICAtMSwgICAgLTEsICAgMTA3LCAgICAxMCwK
LSAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTE1LCAgIDEx
NiwgICAxMTcsICAgMTE4LAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDI1LCAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwgICAgMzIsICAgIDMz
LCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwKLSAgICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIDUwLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNTQsICAgIDU1LCAgICAtMSwg
ICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsCi0gICAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2
NCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwKLSAgICAgIC0xLCAg
ICA3MiwgICAgNzMsICAgIDc0LCAgICAtMSwgICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzksICAg
IDgwLAotICAgICAgODEsICAgIDgyLCAgICAtMSwgICAgLTEsICAgIDg1LCAgICA4NiwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICA2MCwg
ICAgNjEsICAgIC0xLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LAor
ICAgICAgNjksICAgIDcwLCAgICA3MSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2
LCAgICA3NywgICAgNzgsCisgICAgICA3OSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAg
IDg0LCAgICA4NSwgICAgODYsICAgIDg3LCAgICA4OCwKKyAgICAgIDg5LCAgICA5MCwgICAgOTEs
ICAgIDkyLCAgICA5MywgICAgOTQsICAgIDk1LCAgICA5NiwgICAgLTEsICAgIDk4LAorICAgICAg
OTksICAgMTAwLCAgIDEwMSwgICAxMDIsICAgMTAzLCAgIDEwNCwgICAxMDUsICAgMTA2LCAgICAt
MSwgICAgLTEsCisgICAgIDEwOSwgICAxMTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTI4LAorICAgICAgLTEsICAg
IC0xLCAgIDEzMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgIDEzOSwgICAxNDAsICAgMTQxLCAgIDE0MiwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDI1LCAgICAyNiwKKyAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LAorICAgICAgMzcsICAgIDM4LCAg
ICAzOSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA0NSwgICAgNDYsCisg
ICAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDYwLCAgICA2MSwgICAg
LTEsICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2LAorICAgICAgNjcsICAgIDY4LCAgICA2OSwg
ICAgNzAsICAgIDcxLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsCisgICAgICA3
NywgICAgNzgsICAgIDc5LCAgICAtMSwgICAgODEsICAgIDgyLCAgICA4MywgICAgODQsICAgIDg1
LCAgICA4NiwKKyAgICAgIDg3LCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIsICAg
IDkzLCAgICA5NCwgICAgOTUsICAgIDk2LAorICAgICAgLTEsICAgIDk4LCAgICA5OSwgICAxMDAs
ICAgMTAxLCAgIDEwMiwgICAxMDMsICAgMTA0LCAgIDEwNSwgICAxMDYsCisgICAgICAtMSwgICAg
LTEsICAgMTA5LCAgIDExMCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDQsICAgIDEw
LCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAg
IC0xLCAgIDExNCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgIC0xLCAgICAyNSwKLSAg
ICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywg
ICAgMzQsICAgIDM1LAotICAgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNDUsCi0gICAgICA0NiwgICAgNDcsICAgIDQ4LCAg
ICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDU0LCAgICA1NSwKLSAgICAgIC0x
LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQs
ICAgIDY1LAotICAgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICAtMSwgICAg
NzIsICAgIDczLCAgICA3NCwgICAgLTEsCi0gICAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwg
ICAgODAsICAgIDgxLCAgICA4MiwgICAgLTEsICAgIC0xLCAgICA4NSwKLSAgICAgIDg2LCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgIDEwNCwgICAgLTEsCi0gICAgICAtMSwgICAxMDcsICAgIDEwLCAgICAxMSwgICAgMTIs
ICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDExNSwKLSAgICAgMTE2LCAgIDExNywgICAx
MTgsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYsICAgIDI3LAorICAg
ICAgLTEsICAgMTI4LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgMTM5LCAgIDE0MCwgICAxNDEsICAgMTQy
LCAgICAtMSwgICAgMjUsICAgIDI2LCAgICAyNywKICAgICAgIDI4LCAgICAyOSwgICAgMzAsICAg
IDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LAogICAgICAgMzgs
ICAgIDM5LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDQ1LCAgICA0Niwg
ICAgNDcsCi0gICAgICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA1
NCwgICAgNTUsICAgIC0xLCAgICA1NywKLSAgICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAg
ICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LAotICAgICAgNjgsICAgIDY5
LCAgICA3MCwgICAgLTEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIC0xLCAgICA3NiwgICAgNzcs
Ci0gICAgICA3OCwgICAgNzksICAgIDgwLCAgICA4MSwgICAgODIsICAgIC0xLCAgICAtMSwgICAg
ODUsICAgIDg2LCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDQsICAgIDEwLCAgICAxMSwgICAgMTIsCi0gICAg
ICAxMywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMTUsICAg
MTE2LCAgIDExNywKLSAgICAgMTE4LCAgICAtMSwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAotICAgICAgMzMsICAgIDM0LCAgICAzNSwgICAg
MzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwg
ICAgLTEsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAg
ICAtMSwKLSAgICAgIC0xLCAgICA1NCwgICAgNTUsICAgIC0xLCAgICA1NywgICAgNTgsICAgIDU5
LCAgICA2MCwgICAgNjEsICAgIDYyLAotICAgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAg
IDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICAtMSwgICAgNzIsCi0gICAgICA3MywgICAgNzQs
ICAgIC0xLCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLCAgICA4MiwK
LSAgICAgIC0xLCAgICAtMSwgICAgODUsICAgIDg2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgICAzLCAgICAgNCwgICAgIDUsCi0gICAgICAgNiwgICAxMDQsICAgICA4
LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwKLSAgICAg
IC0xLCAgICAtMSwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDI1LAotICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwg
ICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsCi0gICAgICAzNiwgICAgMzcsICAgIDM4LCAgICAz
OSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKLSAgICAgIDQ2LCAg
ICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAg
IDU1LAotICAgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIs
ICAgIDYzLCAgICA2NCwgICAgNjUsCi0gICAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAg
NzAsICAgIC0xLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwKLSAgICAgIC0xLCAgICA3Nywg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAot
ICAgICAgLTEsICAgIC0xLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgLTEsICAgICA4
LCAgICAgOSwgICAgMTAsCi0gICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgMTA5LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAotICAgICAg
MzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAz
OSwgICAgNDAsCi0gICAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAg
ICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwKLSAgICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0
LCAgICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLAotICAgICAgNjEsICAg
IDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAg
NzAsCi0gICAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIC0xLCAgICA3Nywg
ICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAgMywgICAgIDQsICAgICA1LAotICAgICAgIDYsICAgIC0xLCAg
ICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsCi0g
ICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgMTA5LCAgICAyNSwKLSAgICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAg
MzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LAotICAgICAgMzYsICAgIDM3LCAgICAzOCwg
ICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsCi0gICAgICA0
NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0
LCAgICA1NSwKLSAgICAgIC0xLCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAg
IDYyLCAgICA2MywgICAgNjQsICAgIDY1LAotICAgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjks
ICAgIDcwLCAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsCi0gICAgICAtMSwgICAg
NzcsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAg
MCwKLSAgICAgIC0xLCAgICAtMSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAg
ICAgOCwgICAgIDksICAgIDEwLAotICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAg
IC0xLCAgIDEwOSwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKLSAg
ICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwg
ICAgMzksICAgIDQwLAotICAgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0
NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsCi0gICAgICA1MSwgICAgNTIsICAgIDUzLCAg
ICA1NCwgICAgNTUsICAgIC0xLCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwKLSAgICAgIDYx
LCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjks
ICAgIDcwLAotICAgICAgLTEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAgICAtMSwgICAg
NzcsICAgICAzLCAgICAgNCwgICAgIDUsCi0gICAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwg
ICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDI1
LAotICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAg
IDMzLCAgICAzNCwgICAgMzUsCi0gICAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAs
ICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKLSAgICAgIDQ2LCAgICA0NywgICAg
NDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LAotICAg
ICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAg
ICA2NCwgICAgNjUsCi0gICAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIC0x
LCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwKLSAgICAgIC0xLCAgICA3NywgICAgIDMsICAg
ICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAgNDgs
ICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDYwLCAgICA2MSwgICAgLTEsICAgIDYzLCAgICA2
NCwgICAgNjUsICAgIDY2LCAgICA2NywKKyAgICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAg
ICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LAorICAgICAgNzgsICAgIDc5
LCAgICAtMSwgICAgODEsICAgIDgyLCAgICA4MywgICAgODQsICAgIDg1LCAgICA4NiwgICAgODcs
CisgICAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwgICAg
OTUsICAgIDk2LCAgICAtMSwKKyAgICAgIDk4LCAgICA5OSwgICAxMDAsICAgMTAxLCAgIDEwMiwg
ICAxMDMsICAgMTA0LCAgIDEwNSwgICAxMDYsICAgIC0xLAorICAgICAgLTEsICAgMTA5LCAgIDEx
MCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAgMywgICAgIDQsICAg
ICA1LCAgICAgNiwKKyAgICAgMTI4LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIs
ICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgMTM5LCAgIDE0MCwgICAx
NDEsICAgMTQyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYsCisgICAgICAyNywg
ICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAg
ICAzNiwKKyAgICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQz
LCAgICA0NCwgICAgNDUsICAgIDQ2LAorICAgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAg
IDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsCisgICAgICA1NywgICAgNTgs
ICAgIDU5LCAgICA2MCwgICAgNjEsICAgIC0xLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwK
KyAgICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICA3MSwgICAgNzIsICAgIDczLCAgICA3
NCwgICAgNzUsICAgIDc2LAorICAgICAgNzcsICAgIDc4LCAgICA3OSwgICAgLTEsICAgIDgxLCAg
ICA4MiwgICAgODMsICAgIDg0LCAgICA4NSwgICAgODYsCisgICAgICA4NywgICAgODgsICAgIDg5
LCAgICA5MCwgICAgOTEsICAgIDkyLCAgICA5MywgICAgOTQsICAgIDk1LCAgICA5NiwKKyAgICAg
IDk3LCAgICA5OCwgICAgLTEsICAgIC0xLCAgIDEwMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAgMywg
ICAgIDQsICAgICA1LCAgICAgNiwgICAgLTEsCisgICAgICAgOCwgICAgIDksICAgIDEwLCAgICAx
MSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTMzLCAgICAyNSwgICAgMjYsICAg
IDI3LAorICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQs
ICAgIDM1LCAgICAzNiwgICAgMzcsCisgICAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAg
NDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywKKyAgICAgIDQ4LCAgICA0OSwg
ICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAgIDU3LAor
ICAgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIC0xLCAgICA2MywgICAgNjQsICAgIDY1
LCAgICA2NiwgICAgNjcsCisgICAgICA2OCwgICAgNjksICAgIDcwLCAgICA3MSwgICAgNzIsICAg
IDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywKKyAgICAgIDc4LCAgICA3OSwgICAgLTEs
ICAgIDgxLCAgICA4MiwgICAgODMsICAgIDg0LCAgICA4NSwgICAgODYsICAgIDg3LAorICAgICAg
ODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgIDkyLCAgICA5MywgICAgOTQsICAgIDk1LCAgICA5
NiwgICAgOTcsCisgICAgICA5OCwgICAgLTEsICAgIC0xLCAgIDEwMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgLTEsICAgICA4LAorICAgICAgIDksICAg
IDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTMzLCAgICAyNSwg
ICAgMjYsICAgIDI3LCAgICAyOCwKKyAgICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAz
MywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LAorICAgICAgMzksICAgIDQwLCAg
ICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsCisg
ICAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYs
ICAgIDU3LCAgICA1OCwKKyAgICAgIDU5LCAgICA2MCwgICAgNjEsICAgIC0xLCAgICA2MywgICAg
NjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LAorICAgICAgNjksICAgIDcwLCAgICA3MSwg
ICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsCisgICAgICA3
OSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIDg0LCAgICA4NSwgICAgODYsICAgIDg3
LCAgICA4OCwKKyAgICAgIDg5LCAgICA5MCwgICAgOTEsICAgIDkyLCAgICA5MywgICAgOTQsICAg
IDk1LCAgICA5NiwgICAgOTcsICAgIDk4LAorICAgICAgLTEsICAgIC0xLCAgIDEwMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAgMCwgICAg
LTEsICAgIC0xLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAg
OSwKKyAgICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTMz
LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksCisgICAgICAzMCwgICAgMzEsICAg
IDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwKKyAg
ICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0Nywg
ICAgNDgsICAgIDQ5LAorICAgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1
NSwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksCisgICAgICA2MCwgICAgNjEsICAgIC0xLCAg
ICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwKKyAgICAgIDcw
LCAgICA3MSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgs
ICAgIDc5LAorICAgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIDg0LCAgICA4NSwgICAg
ODYsICAgIDg3LCAgICA4OCwgICAgODksCisgICAgICA5MCwgICAgOTEsICAgIDkyLCAgICA5Mywg
ICAgOTQsICAgIDk1LCAgICA5NiwgICAgOTcsICAgIDk4LCAgICAtMSwKKyAgICAgIC0xLCAgIDEw
MSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEw
LAogICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjUs
ICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKICAgICAgIDMxLCAgICAzMiwgICAg
MzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLAogICAg
ICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAg
ICA0OSwgICAgNTAsCi0gICAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIC0x
LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwKLSAgICAgIDYxLCAgICA2MiwgICAgNjMsICAg
IDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLAotICAgICAgLTEs
ICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAgICAtMSwgICAgNzcsICAgIDEwLCAgICAxMSwg
ICAgMTIsCi0gICAgICAxMywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgMjUsICAgIDI2LCAg
ICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAotICAgICAgMzMsICAgIDM0
LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIC0xLCAgICAtMSwgICAgLTEs
Ci0gICAgICAtMSwgICAgLTEsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAg
NTAsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICA1NCwgICAgNTUsICAgIC0xLCAgICA1Nywg
ICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLAotICAgICAgNjMsICAgIDY0LCAgICA2
NSwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICAtMSwgICAgNzIsCi0gICAg
ICA3MywgICAgNzQsICAgIC0xLCAgICA3NiwgICAgNzcsICAgIDEwLCAgICAxMSwgICAgMTIsICAg
IDEzLCAgICA4MiwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgMjUsICAgIDI2LCAgICAyNywgICAg
MjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsCi0gICAgICAzNSwg
ICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKLSAgICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDU0LAotICAgICAgNTUsICAgIC0xLCAgICA1NywgICAgNTgsICAg
IDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsCi0gICAgICA2NSwgICAgNjYs
ICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwK
LSAgICAgIC0xLCAgICAtMSwgICAgNzcKKyAgICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAg
ICA1NSwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLAorICAgICAgNjEsICAgIC0x
LCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAs
CisgICAgICA3MSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAg
NzgsICAgIDc5LCAgICAtMSwKKyAgICAgIDgxLCAgICA4MiwgICAgODMsICAgIDg0LCAgICA4NSwg
ICAgODYsICAgIDg3LCAgICA4OCwgICAgODksICAgIDkwLAorICAgICAgOTEsICAgIDkyLCAgICA5
MywgICAgOTQsICAgIDk1LCAgICA5NiwgICAgOTcsICAgIDk4LCAgICAtMSwgICAgLTEsCisgICAg
IDEwMSwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgIC0xLCAgICAgOCwgICAgIDksICAg
IDEwLCAgICAxMSwKKyAgICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
MjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsCisgICAgICAzMiwg
ICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAg
ICA0MSwKKyAgICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4
LCAgICA0OSwgICAgNTAsICAgIDUxLAorICAgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAg
IDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsCisgICAgICAtMSwgICAgNjMs
ICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICA3MSwK
KyAgICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3
OSwgICAgLTEsICAgIDgxLAorICAgICAgODIsICAgIDgzLCAgICA4NCwgICAgODUsICAgIDg2LCAg
ICA4NywgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsCisgICAgICA5MiwgICAgOTMsICAgIDk0
LCAgICA5NSwgICAgOTYsICAgIDk3LCAgICA5OCwgICAgLTEsICAgIC0xLCAgIDEwMSwKKyAgICAg
IDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwg
ICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksCisgICAgICAzMCwgICAgMzEsICAgIDMyLCAgICAz
MywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwKKyAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAg
IDQ5LAorICAgICAgNTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICA2MCwgICAgNjEsICAgIC0xLCAgICA2MywgICAg
NjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwKKyAgICAgIDcwLCAgICA3MSwg
ICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LAor
ICAgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIDg0LCAgICA4NSwgICAgODYsICAgIDg3
LCAgICA4OCwgICAgODksCisgICAgICA5MCwgICAgOTEsICAgIDkyLCAgICA5MywgICAgOTQsICAg
IDk1LCAgICA5NiwgICAgLTEsICAgIDk4LCAgICAtMSwKKyAgICAgMTAwLCAgIDEwMSwgICAgMTAs
ICAgIDExLCAgICAxMiwgICAgMTMsICAgMTA2LCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDI1LCAgICAy
NiwgICAgMjcsCisgICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAg
ICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywKKyAgICAgIDM4LCAgICAzOSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA0NSwgICAgNDYsICAgIDQ3LAorICAgICAgNDgsICAg
IDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgICAtMSwgICAgLTEsICAgIDYwLCAgICA2MSwgICAgLTEsICAgIDYzLCAgICA2NCwg
ICAgNjUsICAgIDY2LCAgICA2NywKKyAgICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3
MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LAorICAgICAgNzgsICAgIDc5LCAg
ICAtMSwgICAgODEsICAgIDgyLCAgICA4MywgICAgODQsICAgIDg1LCAgICA4NiwgICAgODcsCisg
ICAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwgICAgOTUs
ICAgIDk2LCAgICAtMSwKKyAgICAgIDk4LCAgICAtMSwgICAgLTEsICAgMTAxCiB9OwogCiAgIC8q
IFlZU1RPU1tTVEFURS1OVU1dIC0tIFRoZSAoaW50ZXJuYWwgbnVtYmVyIG9mIHRoZSkgYWNjZXNz
aW5nCkBAIC0xNDczLDEwNyArMTYyNywxMTUgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5
eXN0b3NbXSA9CiAgICAgICAxMiwgICAgMTMsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAg
ICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKICAgICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2
LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLAogICAgICAgNDMsICAg
IDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAg
NTIsCi0gICAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwg
ICAgNjEsICAgIDYyLCAgICA2MywKLSAgICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2
OCwgICAgNjksICAgIDcwLCAgICA3MiwgICAgNzMsICAgIDc0LAotICAgICAgNzUsICAgIDc3LCAg
IDE2MCwgICAxNjEsICAgMTYyLCAgIDE2MywgICAxNjQsICAgMTY4LCAgIDE2OSwgICAxNzAsCi0g
ICAgIDE3MSwgICAxNzIsICAgMTczLCAgIDE3NCwgICAxNzUsICAgMTc2LCAgIDE3NywgICAxNzgs
ICAgMTgxLCAgIDE4MiwKLSAgICAgMTgzLCAgIDIxOCwgICAyMTksICAgMjIwLCAgIDE3NywgICAg
NzYsICAgIDc3LCAgIDEwOCwgICAxMjksICAgMTA0LAotICAgICAxMTQsICAgMjIxLCAgIDEwNSwg
ICAxMTEsICAgMTY1LCAgIDE2NiwgICAxNjcsICAgMTcyLCAgIDE3NiwgICAxMTEsCi0gICAgIDEx
NCwgICAgNzYsICAgMTI5LCAgICA3NiwgICAxMTQsICAgMTU5LCAgIDE3NCwgICAxNzYsICAgMTA2
LCAgICAgMCwKLSAgICAgMjE5LCAgIDE4MSwgICAxODUsICAgMTA4LCAgICA3NiwgICAxNzksICAg
MTgwLCAgIDEwOCwgICAyMDEsICAgMTY2LAotICAgICAxNjUsICAgMTY3LCAgIDEyOSwgICAxMjks
ICAgMTA0LCAgIDEwNiwgICAxMTMsICAgMTA4LCAgIDExNCwgICAxNzIsCi0gICAgIDE3NiwgICAx
ODYsICAgMTg3LCAgICA3NiwgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLCAgICA4
NSwKLSAgICAgIDg2LCAgIDEwNCwgICAxMDcsICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAg
IDEzMCwgICAxMzEsICAgMTMyLAotICAgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgMTM4
LCAgIDEzOSwgICAxNDAsICAgMTQxLCAgIDE0MiwgICAxNDMsCi0gICAgIDE0NCwgICAxNDUsICAg
MTQ2LCAgIDE0NywgICAxNDgsICAgMTQ5LCAgIDE1MCwgICAxNTEsICAgMTUyLCAgIDE1MywKLSAg
ICAgMTU0LCAgIDE1OCwgICAxODEsICAgMTE0LCAgIDE4NiwgICAxODQsICAgMTEzLCAgIDEwNSwg
ICAxMTEsICAgIDE0LAotICAgICAgMTUsICAgIDE2LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAy
MSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgNTYsCi0gICAgIDEwOCwgICAxMDksICAgMTE0LCAg
IDE0MSwgICAxNTQsICAgMTU1LCAgIDE1NywgICAxNjAsICAgMTYxLCAgIDE4MSwKLSAgICAgMTkx
LCAgIDE5MiwgICAxOTMsICAgMTk0LCAgIDIwMiwgICAyMDMsICAgMjA0LCAgIDIwNiwgICAyMDgs
ICAgMjEwLAotICAgICAyMTcsICAgMTA2LCAgIDEwNiwgICAxMTMsICAgMTA3LCAgIDE1OCwgICAx
NTUsICAgMTkwLCAgIDE3NiwgICAxMjksCi0gICAgIDE4OCwgICAxODksICAgMTA5LCAgIDE4Nywg
ICAxNDEsICAgMTQxLCAgIDE1NywgICAgODUsICAgIDg2LCAgIDEwNiwKLSAgICAgMTEwLCAgIDEw
NSwgICAxMDUsICAgMTExLCAgICA1NSwgICAxNTUsICAgMTA0LCAgIDE0MSwgICAxMTksICAgMTIw
LAotICAgICAxMjEsICAgMTE2LCAgIDExOCwgICAgODMsICAgIDg0LCAgICA4NywgICAgODgsICAg
MTIyLCAgIDEyMywgICAgODksCi0gICAgICA5MCwgICAxMjYsICAgMTI1LCAgIDEyNCwgICAgOTEs
ICAgIDkzLCAgICA5MiwgICAxMjcsICAgMTA3LCAgIDEwOSwKLSAgICAgMTg2LCAgICA3OSwgICAg
ODAsICAgMTgwLCAgIDExNCwgICAxMTQsICAgMjEyLCAgIDEwNCwgICAxMDQsICAgMTE0LAotICAg
ICAxMTQsICAgMTU3LCAgIDEwNCwgICAxNTgsICAgMTEyLCAgIDEwNCwgICAxMDksICAgMTk1LCAg
ICA5NCwgICAgOTUsCi0gICAgICA5NiwgICAgOTcsICAgIDk4LCAgICA5OSwgICAxMDAsICAgMTAx
LCAgIDEwMiwgICAxMDMsICAgMTEzLCAgIDE1NiwKLSAgICAgMTExLCAgIDExNCwgICAxMDksICAg
MTkyLCAgIDE1OCwgICAxMDcsICAgMTU4LCAgIDE5MCwgICAxMTMsICAgMTA3LAotICAgICAxODgs
ICAgMTA2LCAgIDExMSwgICAxMTQsICAgIDc2LCAgIDExNCwgICAxMDUsICAgMTMzLCAgIDE1Nywg
ICAgNzYsCi0gICAgICA4MiwgICAxMzYsICAgMTU1LCAgIDE0MSwgICAxNDEsICAgMTQxLCAgIDE0
MywgICAxNDMsICAgMTQ0LCAgIDE0NCwKLSAgICAgMTQ1LCAgIDE0NSwgICAxNDUsICAgMTQ1LCAg
IDE0NiwgICAxNDYsICAgMTQ3LCAgIDE0OCwgICAxNDksICAgMTUwLAotICAgICAxNTEsICAgMTUy
LCAgIDE1NywgICAxMDksICAgMTk4LCAgIDE5OSwgICAyMDAsICAgMjEzLCAgIDE1NywgICAxMTQs
Ci0gICAgIDE1NywgICAxMTIsICAgMjExLCAgIDIwMiwgICAxNTUsICAgMTU1LCAgIDEwNywgICAx
MTMsICAgMTA3LCAgIDE5MCwKLSAgICAgMTEzLCAgIDExNCwgICAxNTgsICAgMTg5LCAgIDEwNiwg
ICAxMTQsICAgMTA3LCAgIDExMiwgICAgNTYsICAgMjAxLAotICAgICAxOTMsICAgMTkxLCAgIDIw
MywgICAyMTQsICAgMTA1LCAgIDEwNSwgICAxNTcsICAgMTcwLCAgIDE3MiwgICAyMDksCi0gICAg
IDE5NiwgICAxOTAsICAgMTEzLCAgIDE5MCwgICAxMDcsICAgMTU4LCAgIDE1NSwgICAxMDQsICAg
MjA5LCAgIDIxNSwKLSAgICAgMjE2LCAgIDE5OCwgICAyMDUsICAgMjA3LCAgIDEyOSwgICAxMDUs
ICAgMTA5LCAgIDE5MCwgICAxMDcsICAgMTU3LAotICAgICAxMTQsICAgMTA1LCAgICAxNywgICAx
OTQsICAgMTEzLCAgIDE5MywgICAxOTcsICAgMjAxLCAgIDExNCwgICAxMDUsCi0gICAgIDE1Nywg
ICAxOTcsICAgMTk4LCAgIDE5MCwgICAxMTQKKyAgICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2
LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYzLAorICAgICAgNjQsICAg
IDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwgICAg
NzMsCisgICAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MSwg
ICAgODIsICAgIDgzLCAgICA4NCwKKyAgICAgIDg1LCAgICA4NiwgICAgODcsICAgIDg4LCAgICA4
OSwgICAgOTAsICAgIDkxLCAgICA5MiwgICAgOTMsICAgIDk0LAorICAgICAgOTUsICAgIDk2LCAg
ICA5NywgICAgOTgsICAgMTAxLCAgIDE4NCwgICAxODUsICAgMTg2LCAgIDE4NywgICAxODgsCisg
ICAgIDE5MiwgICAxOTMsICAgMTk0LCAgIDE5NSwgICAxOTYsICAgMTk3LCAgIDE5OCwgICAxOTks
ICAgMjAwLCAgIDIwMSwKKyAgICAgMjAyLCAgIDIwNSwgICAyMDYsICAgMjA3LCAgIDI0MiwgICAy
NDMsICAgMjQ0LCAgIDIwMSwgICAxMDAsICAgMTAxLAorICAgICAxMzIsICAgMTUzLCAgIDEyOCwg
ICAxMzgsICAgMjQ1LCAgIDEyOSwgICAxMzUsICAgMTg5LCAgIDE5MCwgICAxOTEsCisgICAgIDE5
NiwgICAyMDAsICAgMTM1LCAgIDEzOCwgICAxMDAsICAgMTUzLCAgIDEwMCwgICAxMzgsICAgMTgz
LCAgIDE5OCwKKyAgICAgMjAwLCAgIDEzMCwgICAgIDAsICAgMjQzLCAgIDIwNSwgICAyMDksICAg
MTMyLCAgICA1OSwgICAxMDAsICAgMjAzLAorICAgICAyMDQsICAgMTMyLCAgIDIyNSwgICAxOTAs
ICAgMTg5LCAgIDE5MSwgICAxNTMsICAgMTUzLCAgIDEyOCwgICAxMzAsCisgICAgIDEzNywgICAx
MzIsICAgMTM4LCAgIDE5NiwgICAyMDAsICAgMjEwLCAgIDIxMSwgICAgOTksICAgMTAwLCAgIDEw
MiwKKyAgICAgMTAzLCAgIDEwNCwgICAxMDUsICAgMTA2LCAgIDEwOSwgICAxMTAsICAgMTI4LCAg
IDEzMSwgICAxMzksICAgMTQwLAorICAgICAxNDEsICAgMTQyLCAgIDE1NCwgICAxNTUsICAgMTU2
LCAgIDE1OCwgICAxNTksICAgMTYwLCAgIDE2MSwgICAxNjIsCisgICAgIDE2MywgICAxNjQsICAg
MTY1LCAgIDE2NiwgICAxNjcsICAgMTY4LCAgIDE2OSwgICAxNzAsICAgMTcxLCAgIDE3MiwKKyAg
ICAgMTczLCAgIDE3NCwgICAxNzUsICAgMTc2LCAgIDE3NywgICAxNzgsICAgMTgyLCAgIDIwNSwg
ICAxMzgsICAgMjEwLAorICAgICAyMDgsICAgMTM3LCAgIDEyOSwgICAxMzUsICAgIDE0LCAgICAx
NSwgICAgMTYsICAgIDE4LCAgICAxOSwgICAgMjAsCisgICAgICAyMSwgICAgMjIsICAgIDIzLCAg
ICAyNCwgICAgNjIsICAgMTMyLCAgIDEzMywgICAxMzgsICAgMTY1LCAgIDE3OCwKKyAgICAgMTc5
LCAgIDE4MSwgICAxODQsICAgMTg1LCAgIDIwNSwgICAyMTUsICAgMjE2LCAgIDIxNywgICAyMTgs
ICAgMjI2LAorICAgICAyMjcsICAgMjI4LCAgIDIzMCwgICAyMzIsICAgMjM0LCAgIDI0MSwgICAx
MzAsICAgMTMwLCAgIDEzNywgICAxMzEsCisgICAgIDE4MiwgICAxNzksICAgMjE0LCAgIDIwMCwg
ICAxNTMsICAgMjEyLCAgIDIxMywgICAxMzMsICAgMjExLCAgIDE2NSwKKyAgICAgMTY1LCAgIDE4
MSwgICAxMDksICAgMTEwLCAgIDEzMCwgICAxMzQsICAgMTI5LCAgIDEyOSwgICAxMzUsICAgIDYx
LAorICAgICAxNzksICAgMTI4LCAgIDE2NSwgICAxNDMsICAgMTQ0LCAgIDE0NSwgICAxNDAsICAg
MTQyLCAgIDEwNywgICAxMDgsCisgICAgIDExMSwgICAxMTIsICAgMTQ2LCAgIDE0NywgICAxMTMs
ICAgMTE0LCAgIDE1MCwgICAxNDksICAgMTQ4LCAgIDExNSwKKyAgICAgMTE3LCAgIDExNiwgICAx
NTEsICAgMTMxLCAgIDEzMywgICAyMTAsICAgMTAzLCAgIDEwNCwgICAyMDQsICAgMTM4LAorICAg
ICAxMzgsICAgMjM2LCAgIDEyOCwgICAxMjgsICAgMTM4LCAgIDEzOCwgICAxODEsICAgMTI4LCAg
IDE4MiwgICAxMzYsCisgICAgIDEyOCwgICAxMzMsICAgMjE5LCAgIDExOCwgICAxMTksICAgMTIw
LCAgIDEyMSwgICAxMjIsICAgMTIzLCAgIDEyNCwKKyAgICAgMTI1LCAgIDEyNiwgICAxMjcsICAg
MTM3LCAgIDE4MCwgICAxMzUsICAgMTM4LCAgIDEzMywgICAyMTYsICAgMTgyLAorICAgICAxMzEs
ICAgMTgyLCAgIDIxNCwgICAxMzcsICAgMTMxLCAgIDIxMiwgICAxMzAsICAgMTM1LCAgIDEzOCwg
ICAxMDAsCisgICAgIDEzOCwgICAxMjksICAgMTU3LCAgIDE4MSwgICAxMDAsICAgMTA2LCAgIDE2
MCwgICAxNzksICAgMTY1LCAgIDE2NSwKKyAgICAgMTY1LCAgIDE2NywgICAxNjcsICAgMTY4LCAg
IDE2OCwgICAxNjksICAgMTY5LCAgIDE2OSwgICAxNjksICAgMTcwLAorICAgICAxNzAsICAgMTcx
LCAgIDE3MiwgICAxNzMsICAgMTc0LCAgIDE3NSwgICAxNzYsICAgMTgxLCAgIDEzMywgICAyMjIs
CisgICAgIDIyMywgICAyMjQsICAgMjM3LCAgIDE4MSwgICAxMzgsICAgMTgxLCAgIDEzNiwgICAy
MzUsICAgMjI2LCAgIDE3OSwKKyAgICAgMTc5LCAgIDEzMSwgICAxMzcsICAgMTMxLCAgIDIxNCwg
ICAxMzcsICAgMTM4LCAgIDE4MiwgICAyMTMsICAgMTMwLAorICAgICAxMzgsICAgMTMxLCAgIDEz
NiwgICAgNjIsICAgMjI1LCAgIDIxNywgICAyMTUsICAgMjI3LCAgIDIzOCwgICAxMjksCisgICAg
IDEyOSwgICAxODEsICAgMTk0LCAgIDE5NiwgICAyMzMsICAgMjIwLCAgIDIxNCwgICAxMzcsICAg
MjE0LCAgIDEzMSwKKyAgICAgMTgyLCAgIDE3OSwgICAxMjgsICAgMjMzLCAgIDIzOSwgICAyNDAs
ICAgMjIyLCAgIDIyOSwgICAyMzEsICAgMTUzLAorICAgICAxMjksICAgMTMzLCAgIDIxNCwgICAx
MzEsICAgMTgxLCAgIDEzOCwgICAxMjksICAgIDE3LCAgIDIxOCwgICAxMzcsCisgICAgIDIxNywg
ICAyMjEsICAgMjI1LCAgIDEzOCwgICAxMjksICAgMTgxLCAgIDIyMSwgICAyMjIsICAgMjE0LCAg
IDEzOAogfTsKIAogICAvKiBZWVIxW1lZTl0gLS0gU3ltYm9sIG51bWJlciBvZiBzeW1ib2wgdGhh
dCBydWxlIFlZTiBkZXJpdmVzLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlyMVtd
ID0KIHsKLSAgICAgICAwLCAgIDEyOCwgICAxMjksICAgMTI5LCAgIDEzMCwgICAxMzEsICAgMTMx
LCAgIDEzMSwgICAxMzEsICAgMTMxLAotICAgICAxMzEsICAgMTMyLCAgIDEzMiwgICAxMzIsICAg
MTMyLCAgIDEzMiwgICAxMzIsICAgMTMzLCAgIDEzNCwgICAxMzUsCi0gICAgIDEzNSwgICAxMzYs
ICAgMTM2LCAgIDEzNywgICAxMzcsICAgMTM4LCAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0MCwK
LSAgICAgMTQwLCAgIDE0MSwgICAxNDEsICAgMTQxLCAgIDE0MSwgICAxNDIsICAgMTQyLCAgIDE0
MiwgICAxNDIsICAgMTQzLAotICAgICAxNDMsICAgMTQzLCAgIDE0MywgICAxNDQsICAgMTQ0LCAg
IDE0NCwgICAxNDUsICAgMTQ1LCAgIDE0NSwgICAxNDYsCi0gICAgIDE0NiwgICAxNDYsICAgMTQ2
LCAgIDE0NiwgICAxNDcsICAgMTQ3LCAgIDE0NywgICAxNDgsICAgMTQ4LCAgIDE0OSwKLSAgICAg
MTQ5LCAgIDE1MCwgICAxNTAsICAgMTUxLCAgIDE1MSwgICAxNTIsICAgMTUyLCAgIDE1MywgICAx
NTMsICAgMTU0LAotICAgICAxNTQsICAgMTU1LCAgIDE1NSwgICAxNTYsICAgMTU2LCAgIDE1Niwg
ICAxNTYsICAgMTU2LCAgIDE1NiwgICAxNTYsCi0gICAgIDE1NiwgICAxNTYsICAgMTU2LCAgIDE1
NiwgICAxNTcsICAgMTU3LCAgIDE1OCwgICAxNTksICAgMTYwLCAgIDE2MCwKLSAgICAgMTYwLCAg
IDE2MCwgICAxNjAsICAgMTYwLCAgIDE2MCwgICAxNjAsICAgMTYxLCAgIDE2MiwgICAxNjIsICAg
MTYzLAotICAgICAxNjMsICAgMTY0LCAgIDE2NSwgICAxNjUsICAgMTY2LCAgIDE2NiwgICAxNjYs
ICAgMTY2LCAgIDE2NywgICAxNjgsCi0gICAgIDE2OCwgICAxNjgsICAgMTY4LCAgIDE2OCwgICAx
NjgsICAgMTY5LCAgIDE2OSwgICAxNjksICAgMTY5LCAgIDE2OSwKLSAgICAgMTY5LCAgIDE3MCwg
ICAxNzAsICAgMTcxLCAgIDE3MSwgICAxNzIsICAgMTcyLCAgIDE3MywgICAxNzQsICAgMTc0LAot
ICAgICAxNzQsICAgMTc0LCAgIDE3NCwgICAxNzUsICAgMTc1LCAgIDE3NSwgICAxNzUsICAgMTc1
LCAgIDE3NSwgICAxNzUsCi0gICAgIDE3NSwgICAxNzYsICAgMTc3LCAgIDE3NywgICAxNzcsICAg
MTc4LCAgIDE3OSwgICAxNzksICAgMTgwLCAgIDE4MCwKLSAgICAgMTgwLCAgIDE4MSwgICAxODEs
ICAgMTgxLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLAotICAgICAx
ODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4
MiwgICAxODIsCi0gICAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAg
IDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwKLSAgICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgy
LCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLAotICAgICAxODIsICAg
MTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAx
ODQsCi0gICAgIDE4MywgICAxODUsICAgMTgzLCAgIDE4NiwgICAxODYsICAgMTg3LCAgIDE4Nywg
ICAxODgsICAgMTg4LCAgIDE4OSwKLSAgICAgMTg5LCAgIDE5MCwgICAxOTEsICAgMTkyLCAgIDE5
MiwgICAxOTMsICAgMTkzLCAgIDE5MywgICAxOTMsICAgMTkzLAotICAgICAxOTMsICAgMTkzLCAg
IDE5NCwgICAxOTUsICAgMTk2LCAgIDE5NCwgICAxOTcsICAgMTk3LCAgIDE5OSwgICAxOTgsCi0g
ICAgIDIwMCwgICAxOTgsICAgMjAxLCAgIDIwMSwgICAyMDIsICAgMjAyLCAgIDIwMywgICAyMDMs
ICAgMjA0LCAgIDIwNSwKLSAgICAgMjA1LCAgIDIwNywgICAyMDYsICAgMjA4LCAgIDIwOCwgICAy
MDksICAgMjA5LCAgIDIxMSwgICAyMTAsICAgMjEyLAotICAgICAyMTAsICAgMjEzLCAgIDIxMCwg
ICAyMTQsICAgMjE0LCAgIDIxNSwgICAyMTUsICAgMjE2LCAgIDIxNiwgICAyMTcsCi0gICAgIDIx
NywgICAyMTcsICAgMjE3LCAgIDIxNywgICAyMTgsICAgMjE4LCAgIDIxOSwgICAyMTksICAgMjIx
LCAgIDIyMAorICAgICAgIDAsICAgMTUyLCAgIDE1MywgICAxNTMsICAgMTU0LCAgIDE1NSwgICAx
NTUsICAgMTU1LCAgIDE1NSwgICAxNTUsCisgICAgIDE1NSwgICAxNTUsICAgMTU2LCAgIDE1Niwg
ICAxNTYsICAgMTU2LCAgIDE1NiwgICAxNTYsICAgMTU3LCAgIDE1OCwKKyAgICAgMTU5LCAgIDE1
OSwgICAxNjAsICAgMTYwLCAgIDE2MSwgICAxNjEsICAgMTYyLCAgIDE2MiwgICAxNjMsICAgMTY0
LAorICAgICAxNjQsICAgMTY0LCAgIDE2NSwgICAxNjUsICAgMTY1LCAgIDE2NSwgICAxNjYsICAg
MTY2LCAgIDE2NiwgICAxNjYsCisgICAgIDE2NywgICAxNjcsICAgMTY3LCAgIDE2NywgICAxNjgs
ICAgMTY4LCAgIDE2OCwgICAxNjksICAgMTY5LCAgIDE2OSwKKyAgICAgMTcwLCAgIDE3MCwgICAx
NzAsICAgMTcwLCAgIDE3MCwgICAxNzEsICAgMTcxLCAgIDE3MSwgICAxNzIsICAgMTcyLAorICAg
ICAxNzMsICAgMTczLCAgIDE3NCwgICAxNzQsICAgMTc1LCAgIDE3NSwgICAxNzYsICAgMTc2LCAg
IDE3NywgICAxNzcsCisgICAgIDE3OCwgICAxNzgsICAgMTc5LCAgIDE3OSwgICAxODAsICAgMTgw
LCAgIDE4MCwgICAxODAsICAgMTgwLCAgIDE4MCwKKyAgICAgMTgwLCAgIDE4MCwgICAxODAsICAg
MTgwLCAgIDE4MCwgICAxODEsICAgMTgxLCAgIDE4MiwgICAxODMsICAgMTg0LAorICAgICAxODQs
ICAgMTg0LCAgIDE4NCwgICAxODQsICAgMTg0LCAgIDE4NCwgICAxODQsICAgMTg1LCAgIDE4Niwg
ICAxODYsCisgICAgIDE4NywgICAxODcsICAgMTg4LCAgIDE4OSwgICAxODksICAgMTkwLCAgIDE5
MCwgICAxOTAsICAgMTkwLCAgIDE5MSwKKyAgICAgMTkyLCAgIDE5MiwgICAxOTIsICAgMTkyLCAg
IDE5MiwgICAxOTIsICAgMTkzLCAgIDE5MywgICAxOTMsICAgMTkzLAorICAgICAxOTMsICAgMTkz
LCAgIDE5NCwgICAxOTQsICAgMTk1LCAgIDE5NSwgICAxOTYsICAgMTk2LCAgIDE5NywgICAxOTgs
CisgICAgIDE5OCwgICAxOTgsICAgMTk4LCAgIDE5OCwgICAxOTksICAgMTk5LCAgIDE5OSwgICAx
OTksICAgMTk5LCAgIDE5OSwKKyAgICAgMTk5LCAgIDE5OSwgICAxOTksICAgMTk5LCAgIDE5OSwg
ICAxOTksICAgMTk5LCAgIDE5OSwgICAyMDAsICAgMjAxLAorICAgICAyMDEsICAgMjAxLCAgIDIw
MiwgICAyMDMsICAgMjAzLCAgIDIwNCwgICAyMDQsICAgMjA0LCAgIDIwNCwgICAyMDUsCisgICAg
IDIwNSwgICAyMDUsICAgMjA2LCAgIDIwNiwgICAyMDYsICAgMjA2LCAgIDIwNiwgICAyMDYsICAg
MjA2LCAgIDIwNiwKKyAgICAgMjA2LCAgIDIwNiwgICAyMDYsICAgMjA2LCAgIDIwNiwgICAyMDYs
ICAgMjA2LCAgIDIwNiwgICAyMDYsICAgMjA2LAorICAgICAyMDYsICAgMjA2LCAgIDIwNiwgICAy
MDYsICAgMjA2LCAgIDIwNiwgICAyMDYsICAgMjA2LCAgIDIwNiwgICAyMDYsCisgICAgIDIwNiwg
ICAyMDYsICAgMjA2LCAgIDIwNiwgICAyMDYsICAgMjA2LCAgIDIwNiwgICAyMDYsICAgMjA2LCAg
IDIwNiwKKyAgICAgMjA2LCAgIDIwNiwgICAyMDYsICAgMjA2LCAgIDIwNiwgICAyMDYsICAgMjA2
LCAgIDIwNiwgICAyMDYsICAgMjA2LAorICAgICAyMDYsICAgMjA2LCAgIDIwNiwgICAyMDYsICAg
MjA2LCAgIDIwNiwgICAyMDYsICAgMjA2LCAgIDIwNiwgICAyMDYsCisgICAgIDIwNiwgICAyMDYs
ICAgMjA2LCAgIDIwNiwgICAyMDgsICAgMjA3LCAgIDIwOSwgICAyMDcsICAgMjEwLCAgIDIxMCwK
KyAgICAgMjExLCAgIDIxMSwgICAyMTIsICAgMjEyLCAgIDIxMywgICAyMTMsICAgMjE0LCAgIDIx
NSwgICAyMTYsICAgMjE2LAorICAgICAyMTcsICAgMjE3LCAgIDIxNywgICAyMTcsICAgMjE3LCAg
IDIxNywgICAyMTcsICAgMjE4LCAgIDIxOSwgICAyMjAsCisgICAgIDIxOCwgICAyMjEsICAgMjIx
LCAgIDIyMywgICAyMjIsICAgMjI0LCAgIDIyMiwgICAyMjUsICAgMjI1LCAgIDIyNiwKKyAgICAg
MjI2LCAgIDIyNywgICAyMjcsICAgMjI4LCAgIDIyOSwgICAyMjksICAgMjMxLCAgIDIzMCwgICAy
MzIsICAgMjMyLAorICAgICAyMzMsICAgMjMzLCAgIDIzNSwgICAyMzQsICAgMjM2LCAgIDIzNCwg
ICAyMzcsICAgMjM0LCAgIDIzOCwgICAyMzgsCisgICAgIDIzOSwgICAyMzksICAgMjQwLCAgIDI0
MCwgICAyNDEsICAgMjQxLCAgIDI0MSwgICAyNDEsICAgMjQxLCAgIDI0MiwKKyAgICAgMjQyLCAg
IDI0MywgICAyNDMsICAgMjQ1LCAgIDI0NAogfTsKIAogICAvKiBZWVIyW1lZTl0gLS0gTnVtYmVy
IG9mIHN5bWJvbHMgb24gdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiBydWxlIFlZTi4gICovCiBzdGF0
aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cjJbXSA9CiB7CiAgICAgICAgMCwgICAgIDIsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKLSAgICAg
ICAzLCAgICAgMSwgICAgIDQsICAgICAxLCAgICAgMywgICAgIDIsICAgICAyLCAgICAgMSwgICAg
IDEsICAgICAxLAotICAgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAxLCAgICAgMiwg
ICAgIDMsICAgICAyLCAgICAgMSwgICAgIDEsCi0gICAgICAgMSwgICAgIDEsICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKLSAgICAgICAzLCAg
ICAgMywgICAgIDMsICAgICAxLCAgICAgMywgICAgIDMsICAgICAxLCAgICAgMywgICAgIDMsICAg
ICAxLAotICAgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAxLCAgICAgMywgICAgIDMs
ICAgICAxLCAgICAgMywgICAgIDEsCi0gICAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwgICAg
IDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwKLSAgICAgICA1LCAgICAgMSwg
ICAgIDMsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAot
ICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMywgICAgIDEsICAgICAy
LCAgICAgMiwgICAgIDIsCi0gICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgOSwgICAgIDIsICAg
ICAzLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMiwKLSAgICAgICAzLCAgICAgMywgICAgIDIs
ICAgICA1LCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLAotICAgICAg
IDMsICAgICA2LCAgICAgNywgICAgIDgsICAgICA1LCAgICAgMSwgICAgIDIsICAgICA1LCAgICAg
NiwgICAgIDcsCi0gICAgICAgNCwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAxLCAgICAgMywgICAgIDEsICAgICA0
LCAgICAgMSwgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDEsICAgICAxLAorICAgICAgIDEsICAg
ICAzLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgMiwgICAg
IDEsCisgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMSwg
ICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAxLCAgICAgMywgICAgIDMsICAgICAzLCAgICAg
MSwgICAgIDMsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAzLAorICAgICAgIDEsICAgICAzLCAg
ICAgMywgICAgIDMsICAgICAzLCAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMSwgICAgIDMsCisg
ICAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDMs
ICAgICAxLCAgICAgMywKKyAgICAgICAxLCAgICAgNSwgICAgIDEsICAgICAzLCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAorICAgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAxLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMiwgICAgIDIsCisgICAgICAg
MiwgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDksICAgICAyLCAgICAgMywgICAgIDIsICAgICAx
LCAgICAgMSwKKyAgICAgICAyLCAgICAgMywgICAgIDMsICAgICAyLCAgICAgNSwgICAgIDIsICAg
ICAxLCAgICAgMiwgICAgIDEsICAgICAxLAorICAgICAgIDEsICAgICAzLCAgICAgNiwgICAgIDcs
ICAgICA4LCAgICAgNSwgICAgIDEsICAgICAyLCAgICAgNSwgICAgIDYsCisgICAgICAgNywgICAg
IDQsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAg
MSwKKyAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAxLAorICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCisgICAgICAgMSwgICAgIDEsICAg
ICA0LCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDMsICAgICAxLCAgICAgMSwKKyAg
ICAgICAzLCAgICAgNCwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAxLAogICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCi0gICAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICA0LCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywKLSAgICAgICAz
LCAgICAgMSwgICAgIDMsICAgICA0LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAxLAogICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsCiAgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwKICAgICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAx
LAotICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDAsCi0gICAgICAgNiwgICAgIDAsICAgICA1LCAgICAgMSwgICAgIDIs
ICAgICAzLCAgICAgNCwgICAgIDEsICAgICAzLCAgICAgMSwKLSAgICAgICA0LCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAotICAg
ICAgIDEsICAgICAxLCAgICAgMiwgICAgIDAsICAgICAwLCAgICAgNSwgICAgIDEsICAgICAxLCAg
ICAgMCwgICAgIDIsCi0gICAgICAgMCwgICAgIDIsICAgICAyLCAgICAgMywgICAgIDEsICAgICAy
LCAgICAgMSwgICAgIDIsICAgICA1LCAgICAgMywKLSAgICAgICAxLCAgICAgMCwgICAgIDYsICAg
ICAzLCAgICAgMiwgICAgIDEsICAgICA0LCAgICAgMCwgICAgIDYsICAgICAwLAotICAgICAgIDgs
ICAgICAwLCAgICAgNywgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDAsICAgICAyLCAgICAgMywg
ICAgIDIsCi0gICAgICAgMiwgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAg
MSwgICAgIDEsICAgICAwLCAgICAgMworICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCisgICAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDAsICAgICA2LCAgICAgMCwgICAgIDUsICAgICAxLCAgICAgMiwK
KyAgICAgICAzLCAgICAgNCwgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDQsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLAorICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAyLCAgICAgMCwgICAgIDAsCisgICAgICAgNSwgICAgIDEsICAgICAx
LCAgICAgMCwgICAgIDIsICAgICAwLCAgICAgMiwgICAgIDIsICAgICAzLCAgICAgMSwKKyAgICAg
ICAyLCAgICAgMSwgICAgIDIsICAgICA1LCAgICAgMywgICAgIDEsICAgICAwLCAgICAgNiwgICAg
IDMsICAgICAyLAorICAgICAgIDEsICAgICA0LCAgICAgMCwgICAgIDYsICAgICAwLCAgICAgOCwg
ICAgIDAsICAgICA3LCAgICAgMSwgICAgIDEsCisgICAgICAgMSwgICAgIDAsICAgICAyLCAgICAg
MywgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMSwKKyAgICAgICAyLCAg
ICAgMSwgICAgIDEsICAgICAwLCAgICAgMwogfTsKIAogCkBAIC0yNDE1LDcgKzI1NzcsMTIgQEAg
eXlyZWR1Y2U6CiAgIGNhc2UgMTA6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFstMV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CisgICAg
ICAgIGlmICghY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfWVVWX3RhcmdldCIp
KSB7CisgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFswXSksICJ1bnN1cHBvcnRlZCB2
YWx1ZSIsICh5eXZzcFswXS5sZXgpLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgIH0KKyAgICAg
ICAgVENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bMV07Cisg
ICAgICAgIHVuaW9uQXJyYXktPnNldFl1dkNzY1N0YW5kYXJkRVhUQ29uc3QoZ2V0WXV2Q3NjU3Rh
bmRhcmRFWFQoKHl5dnNwWzBdLmxleCkuc3RyaW5nLT5jX3N0cigpKSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRDb25z
dGFudFVuaW9uKHVuaW9uQXJyYXksIFRUeXBlKEVidFl1dkNzY1N0YW5kYXJkRVhULCBFYnBVbmRl
ZmluZWQsIEV2cUNvbnN0KSwgKHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0y
NDIzLDcgKzI1OTAsNyBAQCB5eXJlZHVjZToKICAgY2FzZSAxMToKIAogICAgIHsKLSAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbLTFdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAt
MjQzMSw3ICsyNTk4LDcgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTI6CiAKICAgICB7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZEluZGV4RXhwcmVz
c2lvbigoeXl2c3BbLTNdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTJdKSwgKHl5
dnNwWy0xXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAg
ICB9CiAKICAgICBicmVhazsKQEAgLTI0MzksNyArMjYwNiw3IEBAIHl5cmVkdWNlOgogICBjYXNl
IDEzOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAo
eXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZEluZGV4RXhwcmVzc2lvbigoeXl2c3BbLTNd
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTJdKSwgKHl5dnNwWy0xXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0yNDQ3LDcgKzI2MTQs
NyBAQCB5eXJlZHVjZToKICAgY2FzZSAxNDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkRmllbGRTZWxlY3Rpb25FeHByZXNzaW9u
KCh5eXZzcFstMl0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFstMV0pLCAqKHl5dnNw
WzBdLmxleCkuc3RyaW5nLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIH0K
IAogICAgIGJyZWFrOwpAQCAtMjQ1NSw3ICsyNjIyLDcgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTU6
CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmFkZFVuYXJ5TWF0aExWYWx1ZShFT3BQb3N0SW5jcmVtZW50LCAoeXl2c3BbLTFdLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkRmllbGRTZWxlY3Rpb25FeHByZXNzaW9uKCh5
eXZzcFstMl0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFstMV0pLCAqKHl5dnNwWzBd
LmxleCkuc3RyaW5nLCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTI0NjMs
NyArMjYzMCw3IEBAIHl5cmVkdWNlOgogICBjYXNlIDE2OgogCiAgICAgewotICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRVbmFyeU1hdGhMVmFsdWUo
RU9wUG9zdERlY3JlbWVudCwgKHl5dnNwWy0xXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
bHNwWzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmFkZFVuYXJ5TWF0aExWYWx1ZShFT3BQb3N0SW5jcmVtZW50LCAoeXl2c3BbLTFdLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAg
LTI0NzEsOCArMjYzOCw3IEBAIHl5cmVkdWNlOgogICBjYXNlIDE3OgogCiAgICAgewotICAgICAg
ICBjb250ZXh0LT5jaGVja0lzU2NhbGFySW50ZWdlcigoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICJbXSIpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkg
PSAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CisgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZFVuYXJ5TWF0aExWYWx1ZShFT3BQb3N0
RGVjcmVtZW50LCAoeXl2c3BbLTFdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbMF0p
KTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTI0ODAsMTIgKzI2NDYsOCBAQCB5eXJlZHVjZToK
ICAgY2FzZSAxODoKIAogICAgIHsKLSAgICAgICAgYm9vbCBmYXRhbEVycm9yID0gZmFsc2U7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZEZ1bmN0
aW9uQ2FsbE9yTWV0aG9kKCh5eXZzcFswXS5pbnRlcm0pLmZ1bmN0aW9uLCAoeXl2c3BbMF0uaW50
ZXJtKS5ub2RlUGFpci5ub2RlMSwgKHl5dnNwWzBdLmludGVybSkubm9kZVBhaXIubm9kZTIsICh5
eWxzcFswXSksICZmYXRhbEVycm9yKTsKLSAgICAgICAgaWYgKGZhdGFsRXJyb3IpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIFlZRVJST1I7Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+Y2hl
Y2tJc1NjYWxhckludGVnZXIoKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAiW10i
KTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWzBdLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMjQ5Myw4ICsy
NjU1LDcgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTk6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0pID0gKHl5dnNwWzBdLmludGVybSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLm5vZGVQ
YWlyLm5vZGUyID0gbnVsbHB0cjsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+YWRkRnVuY3Rpb25DYWxsT3JNZXRob2QoKHl5dnNwWzBdLmludGVybSku
ZnVuY3Rpb24sICh5eXZzcFswXS5pbnRlcm0pLmNhbGxPck1ldGhvZFBhaXIuYXJndW1lbnRzLCAo
eXl2c3BbMF0uaW50ZXJtKS5jYWxsT3JNZXRob2RQYWlyLnRoaXNOb2RlLCAoeXlsc3BbMF0pKTsK
ICAgICB9CiAKICAgICBicmVhazsKQEAgLTI1MDIsOSArMjY2Myw4IEBAIHl5cmVkdWNlOgogICBj
YXNlIDIwOgogCiAgICAgewotICAgICAgICBFUzNfT1JfTkVXRVIoIiIsICh5eWxzcFswXSksICJt
ZXRob2RzIik7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWzBdLmludGVybSk7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0pLm5vZGVQYWlyLm5vZGUyID0gKHl5dnNwWy0yXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuY2FsbE9yTWV0aG9kUGFp
ci50aGlzTm9kZSA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0yNTEyLDcgKzI2
NzIsOSBAQCB5eXJlZHVjZToKICAgY2FzZSAyMToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmlu
dGVybSkgPSAoeXl2c3BbLTFdLmludGVybSk7CisgICAgICAgIEVTM19PUl9ORVdFUigiIiwgKHl5
bHNwWzBdKSwgIm1ldGhvZHMiKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbMF0u
aW50ZXJtKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuY2FsbE9yTWV0aG9kUGFpci50aGlzTm9k
ZSA9ICh5eXZzcFstMl0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgfQogCiAgICAgYnJl
YWs7CkBAIC0yNTI4LDggKzI2OTAsNyBAQCB5eXJlZHVjZToKICAgY2FzZSAyMzoKIAogICAgIHsK
LSAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rpb24gPSAoeXl2c3BbLTFdLmludGVybS5mdW5j
dGlvbik7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLm5vZGVQYWlyLm5vZGUxID0gbnVsbHB0cjsK
KyAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbLTFdLmludGVybSk7CiAgICAgfQogCiAg
ICAgYnJlYWs7CkBAIC0yNTM3LDggKzI2OTgsOCBAQCB5eXJlZHVjZToKICAgY2FzZSAyNDoKIAog
ICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rpb24gPSAoeXl2c3BbMF0uaW50ZXJt
LmZ1bmN0aW9uKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkubm9kZVBhaXIubm9kZTEgPSBudWxs
cHRyOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFstMV0uaW50ZXJt
LmZ1bmN0aW9uKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuY2FsbE9yTWV0aG9kUGFpci5hcmd1
bWVudHMgPSBjb250ZXh0LT5jcmVhdGVFbXB0eUFyZ3VtZW50c0xpc3QoKTsKICAgICB9CiAKICAg
ICBicmVhazsKQEAgLTI1NDYsMTAgKzI3MDcsOCBAQCB5eXJlZHVjZToKICAgY2FzZSAyNToKIAog
ICAgIHsKLSAgICAgICAgY29uc3QgVFR5cGUgKnR5cGUgPSBuZXcgVFR5cGUoKHl5dnNwWzBdLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLT5nZXRUeXBlKCkpOwotICAgICAgICAoeXl2c3BbLTFdLmlu
dGVybS5mdW5jdGlvbiktPmFkZFBhcmFtZXRlcihUQ29uc3RQYXJhbWV0ZXIodHlwZSkpOwotICAg
ICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFstMV0uaW50ZXJtLmZ1bmN0aW9u
KTsKLSAgICAgICAgKHl5dmFsLmludGVybSkubm9kZVBhaXIubm9kZTEgPSBUSW50ZXJtZWRpYXRl
OjpNYWtlQWdncmVnYXRlKCh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNw
WzBdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0gKHl5dnNwWzBdLmludGVy
bS5mdW5jdGlvbik7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmNhbGxPck1ldGhvZFBhaXIuYXJn
dW1lbnRzID0gY29udGV4dC0+Y3JlYXRlRW1wdHlBcmd1bWVudHNMaXN0KCk7CiAgICAgfQogCiAg
ICAgYnJlYWs7CkBAIC0yNTU3LDEwICsyNzE2LDkgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMjY6CiAK
ICAgICB7Ci0gICAgICAgIGNvbnN0IFRUeXBlICp0eXBlID0gbmV3IFRUeXBlKCh5eXZzcFswXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKS0+Z2V0VHlwZSgpKTsKLSAgICAgICAgKHl5dnNwWy0yXS5p
bnRlcm0pLmZ1bmN0aW9uLT5hZGRQYXJhbWV0ZXIoVENvbnN0UGFyYW1ldGVyKHR5cGUpKTsKLSAg
ICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rpb24gPSAoeXl2c3BbLTJdLmludGVybSkuZnVuY3Rp
b247Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLm5vZGVQYWlyLm5vZGUxID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoKHl5dnNwWy0yXS5pbnRlcm0pLmludGVybU5vZGUsICh5
eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0xXSkpOworICAgICAgICAo
eXl2YWwuaW50ZXJtKS5jYWxsT3JNZXRob2RQYWlyLmFyZ3VtZW50cyA9IGNvbnRleHQtPmNyZWF0
ZUVtcHR5QXJndW1lbnRzTGlzdCgpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9
ICh5eXZzcFstMV0uaW50ZXJtLmZ1bmN0aW9uKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuY2Fs
bE9yTWV0aG9kUGFpci5hcmd1bWVudHMtPnB1c2hfYmFjaygoeXl2c3BbMF0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMjU2OCw3ICsyNzI2LDggQEAg
eXlyZWR1Y2U6CiAgIGNhc2UgMjc6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uZnVu
Y3Rpb24pID0gKHl5dnNwWy0xXS5pbnRlcm0uZnVuY3Rpb24pOworICAgICAgICAoeXl2YWwuaW50
ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFstMl0uaW50ZXJtKS5mdW5jdGlvbjsKKyAgICAgICAgKHl5
dmFsLmludGVybSkuY2FsbE9yTWV0aG9kUGFpci5hcmd1bWVudHMtPnB1c2hfYmFjaygoeXl2c3Bb
MF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMjU3
NiwxMCArMjczNSw3IEBAIHl5cmVkdWNlOgogICBjYXNlIDI4OgogCiAgICAgewotICAgICAgICBp
ZiAoKHl5dnNwWzBdLmludGVybS50eXBlKS5hcnJheSkgewotICAgICAgICAgICAgRVMzX09SX05F
V0VSKCJbXSIsICh5eWxzcFswXSksICJhcnJheSBjb25zdHJ1Y3RvciIpOwotICAgICAgICB9Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gY29udGV4dC0+YWRkQ29uc3RydWN0b3JG
dW5jKCh5eXZzcFswXS5pbnRlcm0udHlwZSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0
aW9uKSA9ICh5eXZzcFstMV0uaW50ZXJtLmZ1bmN0aW9uKTsKICAgICB9CiAKICAgICBicmVhazsK
QEAgLTI1ODcsNyArMjc0MywxOCBAQCB5eXJlZHVjZToKICAgY2FzZSAyOToKIAogICAgIHsKLSAg
ICAgICAgY29udGV4dC0+Y2hlY2tJc05vdFJlc2VydmVkKCh5eWxzcFswXSksICooeXl2c3BbMF0u
bGV4KS5zdHJpbmcpOworICAgICAgICBpZiAoKHl5dnNwWzBdLmludGVybS50eXBlKS5hcnJheSkg
eworICAgICAgICAgICAgRVMzX09SX05FV0VSKCJbXSIsICh5eWxzcFswXSksICJhcnJheSBjb25z
dHJ1Y3RvciIpOworICAgICAgICB9CisgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0g
Y29udGV4dC0+YWRkQ29uc3RydWN0b3JGdW5jKCh5eXZzcFswXS5pbnRlcm0udHlwZSkpOworICAg
IH0KKworICAgIGJyZWFrOworCisgIGNhc2UgMzA6CisKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PmNoZWNrSXNOb3RSZXNlcnZlZCgoeXlsc3BbMF0pLCAqKHl5dnNwWzBdLmxleCkuc3RyaW5nKTsK
ICAgICAgICAgY29uc3QgVFR5cGUgKnR5cGUgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0Vm9pZCwgRWJw
VW5kZWZpbmVkKTsKICAgICAgICAgVEZ1bmN0aW9uICpmdW5jdGlvbiA9IG5ldyBURnVuY3Rpb24o
KHl5dnNwWzBdLmxleCkuc3RyaW5nLCB0eXBlKTsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5j
dGlvbikgPSBmdW5jdGlvbjsKQEAgLTI1OTUsNyArMjc2Miw3IEBAIHl5cmVkdWNlOgogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAzMDoKKyAgY2FzZSAzMToKIAogICAgIHsKICAgICAgICAgY29udGV4
dC0+Y2hlY2tJc05vdFJlc2VydmVkKCh5eWxzcFswXSksICooeXl2c3BbMF0ubGV4KS5zdHJpbmcp
OwpAQCAtMjYwNiw3ICsyNzczLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNl
IDMxOgorICBjYXNlIDMyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CkBAIC0yNjE0LDcg
KzI3ODEsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMzI6CisgIGNhc2Ug
MzM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmFkZFVuYXJ5TWF0aExWYWx1ZShFT3BQcmVJbmNyZW1lbnQsICh5eXZzcFswXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0xXSkpOwpAQCAtMjYyMiw3ICsyNzg5LDcgQEAg
eXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDMzOgorICBjYXNlIDM0OgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRV
bmFyeU1hdGhMVmFsdWUoRU9wUHJlRGVjcmVtZW50LCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eWxzcFstMV0pKTsKQEAgLTI2MzAsNyArMjc5Nyw3IEBAIHl5cmVkdWNlOgog
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzNDoKKyAgY2FzZSAzNToKIAogICAgIHsKICAgICAgICAg
aWYgKCh5eXZzcFstMV0uaW50ZXJtKS5vcCAhPSBFT3BOdWxsKSB7CkBAIC0yNjQxLDI1ICsyODA4
LDI1IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzNToKKyAgY2FzZSAzNjoK
IAogICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BQb3NpdGl2ZTsgfQogCiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAzNjoKKyAgY2FzZSAzNzoKIAogICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBF
T3BOZWdhdGl2ZTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAzNzoKKyAgY2FzZSAzODoKIAog
ICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BMb2dpY2FsTm90OyB9CiAKICAgICBicmVhazsK
IAotICBjYXNlIDM4OgorICBjYXNlIDM5OgogCiAgICAgewogICAgICAgICBFUzNfT1JfTkVXRVIo
In4iLCAoeXlsb2MpLCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKQEAgLTI2NjgsMTMgKzI4MzUsMTMg
QEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDM5OgorICBjYXNlIDQwOgogCiAg
ICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgNDA6CisgIGNhc2UgNDE6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRl
eHQtPmFkZEJpbmFyeU1hdGgoRU9wTXVsLCAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFstMV0pKTsKQEAg
LTI2ODIsNyArMjg0OSw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0MToK
KyAgY2FzZSA0MjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpID0gY29udGV4dC0+YWRkQmluYXJ5TWF0aChFT3BEaXYsICh5eXZzcFstMl0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNw
Wy0xXSkpOwpAQCAtMjY5MCw3ICsyODU3LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAot
ICBjYXNlIDQyOgorICBjYXNlIDQzOgogCiAgICAgewogICAgICAgICBFUzNfT1JfTkVXRVIoIiUi
LCAoeXlsc3BbLTFdKSwgImludGVnZXIgbW9kdWx1cyBvcGVyYXRvciIpOwpAQCAtMjY5OSwxMyAr
Mjg2NiwxMyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgNDM6CisgIGNhc2Ug
NDQ6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFswXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA0NDoKKyAg
Y2FzZSA0NToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+YWRkQmluYXJ5TWF0aChFT3BBZGQsICh5eXZzcFstMl0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0x
XSkpOwpAQCAtMjcxMyw3ICsyODgwLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBj
YXNlIDQ1OgorICBjYXNlIDQ2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRCaW5hcnlNYXRoKEVPcFN1YiwgKHl5dnNwWy0yXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXlsc3BbLTFdKSk7CkBAIC0yNzIxLDEzICsyODg4LDEzIEBAIHl5cmVkdWNlOgogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSA0NjoKKyAgY2FzZSA0NzoKIAogICAgIHsgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAK
ICAgICBicmVhazsKIAotICBjYXNlIDQ3OgorICBjYXNlIDQ4OgogCiAgICAgewogICAgICAgICBF
UzNfT1JfTkVXRVIoIjw8IiwgKHl5bHNwWy0xXSksICJiaXQtd2lzZSBvcGVyYXRvciIpOwpAQCAt
MjczNiw3ICsyOTAzLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDQ4Ogor
ICBjYXNlIDQ5OgogCiAgICAgewogICAgICAgICBFUzNfT1JfTkVXRVIoIj4+IiwgKHl5bHNwWy0x
XSksICJiaXQtd2lzZSBvcGVyYXRvciIpOwpAQCAtMjc0NSwxMyArMjkxMiwxMyBAQCB5eXJlZHVj
ZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgNDk6CisgIGNhc2UgNTA6CiAKICAgICB7ICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1MDoKKyAgY2FzZSA1MToKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQmlu
YXJ5TWF0aEJvb2xlYW5SZXN1bHQoRU9wTGVzc1RoYW4sICh5eXZzcFstMl0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0x
XSkpOwpAQCAtMjc1OSw3ICsyOTI2LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBj
YXNlIDUxOgorICBjYXNlIDUyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRCaW5hcnlNYXRoQm9vbGVhblJlc3VsdChFT3BHcmVh
dGVyVGhhbiwgKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWzBdLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTFdKSk7CkBAIC0yNzY3LDcgKzI5MzQsNyBA
QCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgNTI6CisgIGNhc2UgNTM6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFk
ZEJpbmFyeU1hdGhCb29sZWFuUmVzdWx0KEVPcExlc3NUaGFuRXF1YWwsICh5eXZzcFstMl0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5bHNwWy0xXSkpOwpAQCAtMjc3NSw3ICsyOTQyLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVh
azsKIAotICBjYXNlIDUzOgorICBjYXNlIDU0OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50
ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRCaW5hcnlNYXRoQm9vbGVhblJlc3Vs
dChFT3BHcmVhdGVyVGhhbkVxdWFsLCAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
LCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFstMV0pKTsKQEAgLTI3
ODMsMTMgKzI5NTAsMTMgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDU0Ogor
ICBjYXNlIDU1OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2Ug
NTU6CisgIGNhc2UgNTY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IGNvbnRleHQtPmFkZEJpbmFyeU1hdGhCb29sZWFuUmVzdWx0KEVPcEVxdWFsLCAo
eXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eWxzcFstMV0pKTsKQEAgLTI3OTcsNyArMjk2NCw3IEBAIHl5cmVkdWNl
OgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1NjoKKyAgY2FzZSA1NzoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQmluYXJ5TWF0
aEJvb2xlYW5SZXN1bHQoRU9wTm90RXF1YWwsICh5eXZzcFstMl0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0xXSkpOwpA
QCAtMjgwNSwxMyArMjk3MiwxMyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2Ug
NTc6CisgIGNhc2UgNTg6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9
ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogCiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA1ODoKKyAgY2FzZSA1OToKIAogICAgIHsKICAgICAgICAgRVMzX09SX05FV0VSKCImIiwg
KHl5bHNwWy0xXSksICJiaXQtd2lzZSBvcGVyYXRvciIpOwpAQCAtMjgyMCwxMyArMjk4NywxMyBA
QCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgNTk6CisgIGNhc2UgNjA6CiAKICAg
ICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA2MDoKKyAgY2FzZSA2MToK
IAogICAgIHsKICAgICAgICAgRVMzX09SX05FV0VSKCJeIiwgKHl5bHNwWy0xXSksICJiaXQtd2lz
ZSBvcGVyYXRvciIpOwpAQCAtMjgzNSwxMyArMzAwMiwxMyBAQCB5eXJlZHVjZToKIAogICAgIGJy
ZWFrOwogCi0gIGNhc2UgNjE6CisgIGNhc2UgNjI6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSA2MjoKKyAgY2FzZSA2MzoKIAogICAgIHsKICAgICAgICAgRVMz
X09SX05FV0VSKCJ8IiwgKHl5bHNwWy0xXSksICJiaXQtd2lzZSBvcGVyYXRvciIpOwpAQCAtMjg1
MCwxMyArMzAxNywxMyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgNjM6Cisg
IGNhc2UgNjQ6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA2
NDoKKyAgY2FzZSA2NToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+YWRkQmluYXJ5TWF0aEJvb2xlYW5SZXN1bHQoRU9wTG9naWNhbEFu
ZCwgKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWzBdLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTFdKSk7CkBAIC0yODY0LDEzICszMDMxLDEzIEBAIHl5
cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA2NToKKyAgY2FzZSA2NjoKIAogICAgIHsg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDY2OgorICBjYXNlIDY3OgogCiAg
ICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5h
ZGRCaW5hcnlNYXRoQm9vbGVhblJlc3VsdChFT3BMb2dpY2FsWG9yLCAoeXl2c3BbLTJdLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5
eWxzcFstMV0pKTsKQEAgLTI4NzgsMTMgKzMwNDUsMTMgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVh
azsKIAotICBjYXNlIDY3OgorICBjYXNlIDY4OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KIAogICAg
IGJyZWFrOwogCi0gIGNhc2UgNjg6CisgIGNhc2UgNjk6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZEJpbmFyeU1hdGhCb29sZWFu
UmVzdWx0KEVPcExvZ2ljYWxPciwgKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTFdKSk7CkBAIC0yODky
LDEzICszMDU5LDEzIEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA2OToKKyAg
Y2FzZSA3MDoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNw
WzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDcw
OgorICBjYXNlIDcxOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSBjb250ZXh0LT5hZGRUZXJuYXJ5U2VsZWN0aW9uKCh5eXZzcFstNF0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eXZzcFstMl0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZz
cFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0zXSkpOwpAQCAtMjkwNiwxMyAr
MzA3MywxMyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgNzE6CisgIGNhc2Ug
NzI6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFswXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3MjoKKyAg
Y2FzZSA3MzoKIAogICAgIHsKICAgICAgICAgY29udGV4dC0+Y2hlY2tDYW5CZUxWYWx1ZSgoeXls
c3BbLTFdKSwgImFzc2lnbiIsICh5eXZzcFstMl0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOwpA
QCAtMjkyMSwyNSArMzA4OCwyNSBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2Ug
NzM6CisgIGNhc2UgNzQ6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wQXNzaWduOyB9
CiAKICAgICBicmVhazsKIAotICBjYXNlIDc0OgorICBjYXNlIDc1OgogCiAgICAgeyAoeXl2YWwu
aW50ZXJtKS5vcCA9IEVPcE11bEFzc2lnbjsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3NToK
KyAgY2FzZSA3NjoKIAogICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BEaXZBc3NpZ247IH0K
IAogICAgIGJyZWFrOwogCi0gIGNhc2UgNzY6CisgIGNhc2UgNzc6CiAKICAgICB7CiAgICAgICAg
IEVTM19PUl9ORVdFUigiJT0iLCAoeXlsb2MpLCAiaW50ZWdlciBtb2R1bHVzIG9wZXJhdG9yIik7
CkBAIC0yOTQ4LDE5ICszMTE1LDE5IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA3NzoKKyAgY2FzZSA3ODoKIAogICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BBZGRBc3Np
Z247IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgNzg6CisgIGNhc2UgNzk6CiAKICAgICB7ICh5
eXZhbC5pbnRlcm0pLm9wID0gRU9wU3ViQXNzaWduOyB9CiAKICAgICBicmVhazsKIAotICBjYXNl
IDc5OgorICBjYXNlIDgwOgogCiAgICAgewogICAgICAgICBFUzNfT1JfTkVXRVIoIjw8PSIsICh5
eWxvYyksICJiaXQtd2lzZSBvcGVyYXRvciIpOwpAQCAtMjk2OSw3ICszMTM2LDcgQEAgeXlyZWR1
Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDgwOgorICBjYXNlIDgxOgogCiAgICAgewogICAg
ICAgICBFUzNfT1JfTkVXRVIoIj4+PSIsICh5eWxvYyksICJiaXQtd2lzZSBvcGVyYXRvciIpOwpA
QCAtMjk3OCw3ICszMTQ1LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDgx
OgorICBjYXNlIDgyOgogCiAgICAgewogICAgICAgICBFUzNfT1JfTkVXRVIoIiY9IiwgKHl5bG9j
KSwgImJpdC13aXNlIG9wZXJhdG9yIik7CkBAIC0yOTg3LDcgKzMxNTQsNyBAQCB5eXJlZHVjZToK
IAogICAgIGJyZWFrOwogCi0gIGNhc2UgODI6CisgIGNhc2UgODM6CiAKICAgICB7CiAgICAgICAg
IEVTM19PUl9ORVdFUigiXj0iLCAoeXlsb2MpLCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsKQEAgLTI5
OTYsNyArMzE2Myw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4MzoKKyAg
Y2FzZSA4NDoKIAogICAgIHsKICAgICAgICAgRVMzX09SX05FV0VSKCJ8PSIsICh5eWxvYyksICJi
aXQtd2lzZSBvcGVyYXRvciIpOwpAQCAtMzAwNSw3ICszMTcyLDcgQEAgeXlyZWR1Y2U6CiAKICAg
ICBicmVhazsKIAotICBjYXNlIDg0OgorICBjYXNlIDg1OgogCiAgICAgewogICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7CkBAIC0zMDEzLDcgKzMxODAsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0g
IGNhc2UgODU6CisgIGNhc2UgODY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZENvbW1hKCh5eXZzcFstMl0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0x
XSkpOwpAQCAtMzAyMSw3ICszMTg4LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBj
YXNlIDg2OgorICBjYXNlIDg3OgogCiAgICAgewogICAgICAgICBjb250ZXh0LT5jaGVja0lzQ29u
c3QoKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKQEAgLTMwMzAsNyArMzE5Nyw3
IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4NzoKKyAgY2FzZSA4ODoKIAog
ICAgIHsKICAgICAgICAgY29udGV4dC0+ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbigoeXlsc3BbLTFd
KSwgKih5eXZzcFstMV0ubGV4KS5zdHJpbmcpOwpAQCAtMzAzOSw3ICszMjA2LDcgQEAgeXlyZWR1
Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDg4OgorICBjYXNlIDg5OgogCiAgICAgewogICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+YWRkRnVuY3Rpb25Qcm90
b3R5cGVEZWNsYXJhdGlvbigqKCh5eXZzcFstMV0uaW50ZXJtKS5mdW5jdGlvbiksICh5eWxzcFst
MV0pKTsKQEAgLTMwNDcsMTggKzMyMTQsMTUgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAot
ICBjYXNlIDg5OgorICBjYXNlIDkwOgogCiAgICAgewotICAgICAgICBUSW50ZXJtQWdncmVnYXRl
ICphZ2dOb2RlID0gKHl5dnNwWy0xXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZTsKLSAgICAgICAg
aWYgKGFnZ05vZGUgJiYgYWdnTm9kZS0+Z2V0T3AoKSA9PSBFT3BOdWxsKQotICAgICAgICAgICAg
YWdnTm9kZS0+c2V0T3AoRU9wRGVjbGFyYXRpb24pOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gYWdnTm9kZTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
ICh5eXZzcFstMV0uaW50ZXJtKS5pbnRlcm1EZWNsYXJhdGlvbjsKICAgICB9CiAKICAgICBicmVh
azsKIAotICBjYXNlIDkwOgorICBjYXNlIDkxOgogCiAgICAgewogICAgICAgICBpZiAoKCh5eXZz
cFstMl0uaW50ZXJtLnByZWNpc2lvbikgPT0gRWJwSGlnaCkgJiYgKGNvbnRleHQtPmdldFNoYWRl
clR5cGUoKSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpICYmICFjb250ZXh0LT5nZXRGcmFnbWVudFBy
ZWNpc2lvbkhpZ2goKSkgewpAQCAtMzA3Miw3ICszMjM2LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBi
cmVhazsKIAotICBjYXNlIDkxOgorICBjYXNlIDkyOgogCiAgICAgewogICAgICAgICBFUzNfT1Jf
TkVXRVIoKHl5dnNwWy0zXS5sZXgpLnN0cmluZy0+Y19zdHIoKSwgKHl5bHNwWy00XSksICJpbnRl
cmZhY2UgYmxvY2tzIik7CkBAIC0zMDgxLDcgKzMyNDUsNyBAQCB5eXJlZHVjZToKIAogICAgIGJy
ZWFrOwogCi0gIGNhc2UgOTI6CisgIGNhc2UgOTM6CiAKICAgICB7CiAgICAgICAgIEVTM19PUl9O
RVdFUigoeXl2c3BbLTRdLmxleCkuc3RyaW5nLT5jX3N0cigpLCAoeXlsc3BbLTVdKSwgImludGVy
ZmFjZSBibG9ja3MiKTsKQEAgLTMwOTAsNyArMzI1NCw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJl
YWs7CiAKLSAgY2FzZSA5MzoKKyAgY2FzZSA5NDoKIAogICAgIHsKICAgICAgICAgRVMzX09SX05F
V0VSKCh5eXZzcFstN10ubGV4KS5zdHJpbmctPmNfc3RyKCksICh5eWxzcFstOF0pLCAiaW50ZXJm
YWNlIGJsb2NrcyIpOwpAQCAtMzA5OSw3ICszMjYzLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVh
azsKIAotICBjYXNlIDk0OgorICBjYXNlIDk1OgogCiAgICAgewogICAgICAgICBjb250ZXh0LT5w
YXJzZUdsb2JhbExheW91dFF1YWxpZmllcigqKHl5dnNwWy0xXS5pbnRlcm0udHlwZVF1YWxpZmll
ckJ1aWxkZXIpKTsKQEAgLTMxMDgsNyArMzI3Miw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA5NToKKyAgY2FzZSA5NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPnBhcnNlSW52YXJpYW50RGVjbGFyYXRpb24oKih5eXZz
cFstMl0uaW50ZXJtLnR5cGVRdWFsaWZpZXJCdWlsZGVyKSwgKHl5bHNwWy0xXSksICh5eXZzcFst
MV0ubGV4KS5zdHJpbmcsICh5eXZzcFstMV0ubGV4KS5zeW1ib2wpOwpAQCAtMzExNiw3ICszMjgw
LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDk2OgorICBjYXNlIDk3Ogog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5jdGlvbiA9IGNvbnRleHQtPnBhcnNl
RnVuY3Rpb25EZWNsYXJhdG9yKCh5eWxzcFswXSksICh5eXZzcFstMV0uaW50ZXJtLmZ1bmN0aW9u
KSk7CkBAIC0zMTI1LDcgKzMyODksNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNh
c2UgOTc6CisgIGNhc2UgOTg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rp
b24pID0gKHl5dnNwWzBdLmludGVybS5mdW5jdGlvbik7CkBAIC0zMTMzLDcgKzMyOTcsNyBAQCB5
eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgOTg6CisgIGNhc2UgOTk6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gKHl5dnNwWzBdLmludGVybS5mdW5j
dGlvbik7CkBAIC0zMTQxLDcgKzMzMDUsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0g
IGNhc2UgOTk6CisgIGNhc2UgMTAwOgogCiAgICAgewogICAgICAgICAvLyBBZGQgdGhlIHBhcmFt
ZXRlcgpAQCAtMzE1NCw3ICszMzE4LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBj
YXNlIDEwMDoKKyAgY2FzZSAxMDE6CiAKICAgICB7CiAgICAgICAgIC8vCkBAIC0zMTc2LDcgKzMz
NDAsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAxOgorICBjYXNlIDEw
MjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSBjb250ZXh0LT5w
YXJzZUZ1bmN0aW9uSGVhZGVyKCh5eXZzcFstMl0uaW50ZXJtLnR5cGUpLCAoeXl2c3BbLTFdLmxl
eCkuc3RyaW5nLCAoeXlsc3BbLTFdKSk7CkBAIC0zMTg3LDcgKzMzNTEsNyBAQCB5eXJlZHVjZToK
IAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAyOgorICBjYXNlIDEwMzoKIAogICAgIHsKICAgICAg
ICAgaWYgKCh5eXZzcFstMV0uaW50ZXJtLnR5cGUpLmdldEJhc2ljVHlwZSgpID09IEVidFZvaWQp
IHsKQEAgLTMyMDAsNyArMzM2NCw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxMDM6CisgIGNhc2UgMTA0OgogCiAgICAgewogICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGNh
biBtYWtlIGFuIGFycmF5IG91dCBvZiB0aGlzIHR5cGUKQEAgLTMyMTksNyArMzM4Myw3IEBAIHl5
cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDQ6CisgIGNhc2UgMTA1OgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFswXS5pbnRlcm0pOwpAQCAtMzIyOCw3
ICszMzkyLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDEwNToKKyAgY2Fz
ZSAxMDY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWzBdLmludGVy
bSk7CkBAIC0zMjM3LDcgKzM0MDEsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTA2OgorICBjYXNlIDEwNzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAo
eXl2c3BbMF0uaW50ZXJtKTsKQEAgLTMyNDYsNyArMzQxMCw3IEBAIHl5cmVkdWNlOgogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxMDc6CisgIGNhc2UgMTA4OgogCiAgICAgewogICAgICAgICAoeXl2
YWwuaW50ZXJtKSA9ICh5eXZzcFswXS5pbnRlcm0pOwpAQCAtMzI1NSw3ICszNDE5LDcgQEAgeXly
ZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDEwODoKKyAgY2FzZSAxMDk6CiAKICAgICB7
CiAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW0gPSB7IDAsIG5ldyBUVHlwZSgoeXl2c3BbMF0uaW50
ZXJtLnR5cGUpKSB9OwpAQCAtMzI2NCw3ICszNDI4LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVh
azsKIAotICBjYXNlIDEwOToKKyAgY2FzZSAxMTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0pID0gKHl5dnNwWzBdLmludGVybSk7CkBAIC0zMjcyLDEyNSArMzQzNiwxMTkgQEAgeXly
ZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDExMDoKKyAgY2FzZSAxMTE6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWy0yXS5pbnRlcm0pOwotICAgICAgICAo
eXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZURlY2xhcmF0b3Io
KHl5dmFsLmludGVybSkudHlwZSwgKHl5dnNwWy0yXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwg
KHl5bHNwWzBdKSwgKih5eXZzcFswXS5sZXgpLnN0cmluZyk7CisgICAgICAgIGNvbnRleHQtPnBh
cnNlRGVjbGFyYXRvcigoeXl2YWwuaW50ZXJtKS50eXBlLCAoeXlsc3BbMF0pLCAqKHl5dnNwWzBd
LmxleCkuc3RyaW5nLCAoeXl2YWwuaW50ZXJtKS5pbnRlcm1EZWNsYXJhdGlvbik7CiAgICAgfQog
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTE6CisgIGNhc2UgMTEyOgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFstNV0uaW50ZXJtKTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VBcnJheURlY2xhcmF0b3IoKHl5
dmFsLmludGVybSkudHlwZSwgKHl5dnNwWy01XS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgKHl5
bHNwWy0zXSksICooeXl2c3BbLTNdLmxleCkuc3RyaW5nLCAoeXlsc3BbLTJdKSwgKHl5dnNwWy0x
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7CisgICAgICAgIGNvbnRleHQtPnBhcnNlQXJyYXlE
ZWNsYXJhdG9yKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5eWxzcFstM10pLCAqKHl5dnNwWy0zXS5s
ZXgpLnN0cmluZywgKHl5bHNwWy0yXSksICh5eXZzcFstMV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZhbC5pbnRlcm0pLmludGVybURlY2xhcmF0aW9uKTsKICAgICB9CiAKICAgICBicmVh
azsKIAotICBjYXNlIDExMjoKKyAgY2FzZSAxMTM6CiAKICAgICB7CiAgICAgICAgIEVTM19PUl9O
RVdFUigiW10iLCAoeXlsc3BbLTRdKSwgImltcGxpY2l0bHkgc2l6ZWQgYXJyYXkiKTsKICAgICAg
ICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbLTZdLmludGVybSk7Ci0gICAgICAgICh5eXZhbC5p
bnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlQXJyYXlJbml0RGVjbGFyYXRv
cigoeXl2YWwuaW50ZXJtKS50eXBlLCAoeXl2c3BbLTZdLmludGVybSkuaW50ZXJtQWdncmVnYXRl
LCAoeXlsc3BbLTRdKSwgKih5eXZzcFstNF0ubGV4KS5zdHJpbmcsICh5eWxzcFstM10pLCBudWxs
cHRyLCAoeXlsc3BbLTFdKSwgKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKKyAg
ICAgICAgY29udGV4dC0+cGFyc2VBcnJheUluaXREZWNsYXJhdG9yKCh5eXZhbC5pbnRlcm0pLnR5
cGUsICh5eWxzcFstNF0pLCAqKHl5dnNwWy00XS5sZXgpLnN0cmluZywgKHl5bHNwWy0zXSksIG51
bGxwdHIsICh5eWxzcFstMV0pLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5
eXZhbC5pbnRlcm0pLmludGVybURlY2xhcmF0aW9uKTsKICAgICB9CiAKICAgICBicmVhazsKIAot
ICBjYXNlIDExMzoKKyAgY2FzZSAxMTQ6CiAKICAgICB7CiAgICAgICAgIEVTM19PUl9ORVdFUigi
PSIsICh5eWxzcFstMV0pLCAiZmlyc3QtY2xhc3MgYXJyYXlzIChhcnJheSBpbml0aWFsaXplciki
KTsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbLTddLmludGVybSk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlQXJyYXlJbml0
RGVjbGFyYXRvcigoeXl2YWwuaW50ZXJtKS50eXBlLCAoeXl2c3BbLTddLmludGVybSkuaW50ZXJt
QWdncmVnYXRlLCAoeXlsc3BbLTVdKSwgKih5eXZzcFstNV0ubGV4KS5zdHJpbmcsICh5eWxzcFst
NF0pLCAoeXl2c3BbLTNdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTFdKSwgKHl5
dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKKyAgICAgICAgY29udGV4dC0+cGFyc2VB
cnJheUluaXREZWNsYXJhdG9yKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5eWxzcFstNV0pLCAqKHl5
dnNwWy01XS5sZXgpLnN0cmluZywgKHl5bHNwWy00XSksICh5eXZzcFstM10uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSksICh5eWxzcFstMV0pLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSksICh5eXZhbC5pbnRlcm0pLmludGVybURlY2xhcmF0aW9uKTsKICAgICB9CiAKICAgICBicmVh
azsKIAotICBjYXNlIDExNDoKKyAgY2FzZSAxMTU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0pID0gKHl5dnNwWy00XS5pbnRlcm0pOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRl
cm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZUluaXREZWNsYXJhdG9yKCh5eXZhbC5pbnRlcm0p
LnR5cGUsICh5eXZzcFstNF0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsICh5eWxzcFstMl0pLCAq
KHl5dnNwWy0yXS5sZXgpLnN0cmluZywgKHl5bHNwWy0xXSksICh5eXZzcFswXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSk7CisgICAgICAgIGNvbnRleHQtPnBhcnNlSW5pdERlY2xhcmF0b3IoKHl5
dmFsLmludGVybSkudHlwZSwgKHl5bHNwWy0yXSksICooeXl2c3BbLTJdLmxleCkuc3RyaW5nLCAo
eXlsc3BbLTFdKSwgKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2YWwuaW50
ZXJtKS5pbnRlcm1EZWNsYXJhdGlvbik7CiAgICAgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
MTU6CisgIGNhc2UgMTE2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0g
KHl5dnNwWzBdLmludGVybS50eXBlKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdn
cmVnYXRlID0gY29udGV4dC0+cGFyc2VTaW5nbGVEZWNsYXJhdGlvbigoeXl2YWwuaW50ZXJtKS50
eXBlLCAoeXlsc3BbMF0pLCAiIik7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybURlY2xh
cmF0aW9uID0gY29udGV4dC0+cGFyc2VTaW5nbGVEZWNsYXJhdGlvbigoeXl2YWwuaW50ZXJtKS50
eXBlLCAoeXlsc3BbMF0pLCAiIik7CiAgICAgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTY6
CisgIGNhc2UgMTE3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5
dnNwWy0xXS5pbnRlcm0udHlwZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3Jl
Z2F0ZSA9IGNvbnRleHQtPnBhcnNlU2luZ2xlRGVjbGFyYXRpb24oKHl5dmFsLmludGVybSkudHlw
ZSwgKHl5bHNwWzBdKSwgKih5eXZzcFswXS5sZXgpLnN0cmluZyk7CisgICAgICAgICh5eXZhbC5p
bnRlcm0pLmludGVybURlY2xhcmF0aW9uID0gY29udGV4dC0+cGFyc2VTaW5nbGVEZWNsYXJhdGlv
bigoeXl2YWwuaW50ZXJtKS50eXBlLCAoeXlsc3BbMF0pLCAqKHl5dnNwWzBdLmxleCkuc3RyaW5n
KTsKICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDExNzoKKyAgY2FzZSAxMTg6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbLTRdLmludGVybS50eXBl
KTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFy
c2VTaW5nbGVBcnJheURlY2xhcmF0aW9uKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5eWxzcFstM10p
LCAqKHl5dnNwWy0zXS5sZXgpLnN0cmluZywgKHl5bHNwWy0yXSksICh5eXZzcFstMV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1EZWNsYXJh
dGlvbiA9IGNvbnRleHQtPnBhcnNlU2luZ2xlQXJyYXlEZWNsYXJhdGlvbigoeXl2YWwuaW50ZXJt
KS50eXBlLCAoeXlsc3BbLTNdKSwgKih5eXZzcFstM10ubGV4KS5zdHJpbmcsICh5eWxzcFstMl0p
LCAoeXl2c3BbLTFdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKICAgICB9CiAKICAgICBicmVh
azsKIAotICBjYXNlIDExODoKKyAgY2FzZSAxMTk6CiAKICAgICB7CiAgICAgICAgIEVTM19PUl9O
RVdFUigiW10iLCAoeXlsc3BbLTNdKSwgImltcGxpY2l0bHkgc2l6ZWQgYXJyYXkiKTsKICAgICAg
ICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFstNV0uaW50ZXJtLnR5cGUpOwotICAgICAg
ICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZVNpbmdsZUFy
cmF5SW5pdERlY2xhcmF0aW9uKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5eWxzcFstNF0pLCAqKHl5
dnNwWy00XS5sZXgpLnN0cmluZywgKHl5bHNwWy0zXSksIG51bGxwdHIsICh5eWxzcFstMV0pLCAo
eXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOworICAgICAgICAoeXl2YWwuaW50ZXJt
KS5pbnRlcm1EZWNsYXJhdGlvbiA9IGNvbnRleHQtPnBhcnNlU2luZ2xlQXJyYXlJbml0RGVjbGFy
YXRpb24oKHl5dmFsLmludGVybSkudHlwZSwgKHl5bHNwWy00XSksICooeXl2c3BbLTRdLmxleCku
c3RyaW5nLCAoeXlsc3BbLTNdKSwgbnVsbHB0ciwgKHl5bHNwWy0xXSksICh5eXZzcFswXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMTk6
CisgIGNhc2UgMTIwOgogCiAgICAgewogICAgICAgICBFUzNfT1JfTkVXRVIoIj0iLCAoeXlsc3Bb
LTFdKSwgImZpcnN0LWNsYXNzIGFycmF5cyAoYXJyYXkgaW5pdGlhbGl6ZXIpIik7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbLTZdLmludGVybS50eXBlKTsKLSAgICAgICAg
KHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VTaW5nbGVBcnJh
eUluaXREZWNsYXJhdGlvbigoeXl2YWwuaW50ZXJtKS50eXBlLCAoeXlsc3BbLTVdKSwgKih5eXZz
cFstNV0ubGV4KS5zdHJpbmcsICh5eWxzcFstNF0pLCAoeXl2c3BbLTNdLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAoeXlsc3BbLTFdKSwgKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
KTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtRGVjbGFyYXRpb24gPSBjb250ZXh0LT5w
YXJzZVNpbmdsZUFycmF5SW5pdERlY2xhcmF0aW9uKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5eWxz
cFstNV0pLCAqKHl5dnNwWy01XS5sZXgpLnN0cmluZywgKHl5bHNwWy00XSksICh5eXZzcFstM10u
aW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFstMV0pLCAoeXl2c3BbMF0uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkpOwogICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTIwOgorICBj
YXNlIDEyMToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5eXZzcFst
M10uaW50ZXJtLnR5cGUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUg
PSBjb250ZXh0LT5wYXJzZVNpbmdsZUluaXREZWNsYXJhdGlvbigoeXl2YWwuaW50ZXJtKS50eXBl
LCAoeXlsc3BbLTJdKSwgKih5eXZzcFstMl0ubGV4KS5zdHJpbmcsICh5eWxzcFstMV0pLCAoeXl2
c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5p
bnRlcm1EZWNsYXJhdGlvbiA9IGNvbnRleHQtPnBhcnNlU2luZ2xlSW5pdERlY2xhcmF0aW9uKCh5
eXZhbC5pbnRlcm0pLnR5cGUsICh5eWxzcFstMl0pLCAqKHl5dnNwWy0yXS5sZXgpLnN0cmluZywg
KHl5bHNwWy0xXSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7CiAgICAgfQog
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMjE6CisgIGNhc2UgMTIyOgogCiAgICAgeworICAgICAg
ICBjb250ZXh0LT5hZGRGdWxseVNwZWNpZmllZFR5cGUoJih5eXZzcFswXS5pbnRlcm0udHlwZSkp
OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWzBdLmludGVybS50eXBlKTsK
LQotICAgICAgICBpZiAoKHl5dnNwWzBdLmludGVybS50eXBlKS5hcnJheSkgewotICAgICAgICAg
ICAgRVMzX09SX05FV0VSKCJbXSIsICh5eWxzcFswXSksICJmaXJzdC1jbGFzcy1hcnJheSIpOwot
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSAhPSAzMDApIHsKLSAg
ICAgICAgICAgICAgICAoeXl2c3BbMF0uaW50ZXJtLnR5cGUpLmNsZWFyQXJyYXluZXNzKCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDEy
MjoKKyAgY2FzZSAxMjM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkgPSBj
b250ZXh0LT5hZGRGdWxseVNwZWNpZmllZFR5cGUoKih5eXZzcFstMV0uaW50ZXJtLnR5cGVRdWFs
aWZpZXJCdWlsZGVyKSwgKHl5dnNwWzBdLmludGVybS50eXBlKSk7CkBAIC0zMzk4LDcgKzM1NTYs
NyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTIzOgorICBjYXNlIDEyNDoK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxU21vb3RoOwpA
QCAtMzQwNiw3ICszNTY0LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDEy
NDoKKyAgY2FzZSAxMjU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVy
KSA9IEV2cUZsYXQ7CkBAIC0zNDE0LDcgKzM1NzIsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFr
OwogCi0gIGNhc2UgMTI1OgorICBjYXNlIDEyNjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlUXVhbGlmaWVyQnVpbGRlcikgPSBjb250ZXh0LT5jcmVhdGVUeXBlUXVhbGlmaWVy
QnVpbGRlcigoeXlsc3BbMF0pKTsKQEAgLTM0MjMsNyArMzU4MSw3IEBAIHl5cmVkdWNlOgogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxMjY6CisgIGNhc2UgMTI3OgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGVRdWFsaWZpZXJCdWlsZGVyKSA9ICh5eXZzcFstMV0uaW50ZXJtLnR5
cGVRdWFsaWZpZXJCdWlsZGVyKTsKQEAgLTM0MzIsNyArMzU5MCw3IEBAIHl5cmVkdWNlOgogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxMjc6CisgIGNhc2UgMTI4OgogCiAgICAgewogICAgICAgICAv
LyBlbXB0eQpAQCAtMzQ0MCwxOSArMzU5OCwxNiBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTI4OgorICBjYXNlIDEyOToKIAogICAgIHsKLSAgICAgICAgaWYgKCFjb250ZXh0
LT5kZWNsYXJpbmdGdW5jdGlvbigpICYmICh5eXZzcFswXS5pbnRlcm0ucXVhbGlmaWVyKSAhPSBF
dnFDb25zdCAmJiAhY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbMF0pLCAiTG9jYWwgdmFyaWFi
bGVzIGNhbiBvbmx5IHVzZSB0aGUgY29uc3Qgc3RvcmFnZSBxdWFsaWZpZXIuIiwgZ2V0UXVhbGlm
aWVyU3RyaW5nKCh5eXZzcFswXS5pbnRlcm0ucXVhbGlmaWVyKSkpOwotICAgICAgICB9Ci0gICAg
ICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyV3JhcHBlcikgPSBuZXcgVFN0b3JhZ2VRdWFsaWZp
ZXJXcmFwcGVyKCh5eXZzcFswXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5bHNwWzBdKSk7CisgICAg
ICAgIGNvbnRleHQtPmNoZWNrTG9jYWxWYXJpYWJsZUNvbnN0U3RvcmFnZVF1YWxpZmllcigqKHl5
dnNwWzBdLmludGVybS5xdWFsaWZpZXJXcmFwcGVyKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
cXVhbGlmaWVyV3JhcHBlcikgPSAoeXl2c3BbMF0uaW50ZXJtLnF1YWxpZmllcldyYXBwZXIpOwog
ICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTI5OgorICBjYXNlIDEzMDoKIAogICAgIHsK
ICAgICAgICAgY29udGV4dC0+Y2hlY2tJc0F0R2xvYmFsTGV2ZWwoKHl5bHNwWzBdKSwgImxheW91
dCIpOwpAQCAtMzQ2MSw3ICszNjE2LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBj
YXNlIDEzMDoKKyAgY2FzZSAxMzE6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVh
bGlmaWVyV3JhcHBlcikgPSBuZXcgVFByZWNpc2lvblF1YWxpZmllcldyYXBwZXIoKHl5dnNwWzBd
LmludGVybS5wcmVjaXNpb24pLCAoeXlsc3BbMF0pKTsKQEAgLTM0NjksNyArMzYyNCw3IEBAIHl5
cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMzE6CisgIGNhc2UgMTMyOgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcldyYXBwZXIpID0gbmV3IFRJbnRlcnBv
bGF0aW9uUXVhbGlmaWVyV3JhcHBlcigoeXl2c3BbMF0uaW50ZXJtLnF1YWxpZmllciksICh5eWxz
cFswXSkpOwpAQCAtMzQ3Nyw3ICszNjMyLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAot
ICBjYXNlIDEzMjoKKyAgY2FzZSAxMzM6CiAKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmNoZWNr
SXNBdEdsb2JhbExldmVsKCh5eWxzcFswXSksICJpbnZhcmlhbnQiKTsKQEAgLTM0ODYsNjkgKzM2
NDEsNjkgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDEzMzoKKyAgY2FzZSAx
MzQ6CiAKICAgICB7CiAgICAgICAgIFZFUlRFWF9PTkxZKCJhdHRyaWJ1dGUiLCAoeXlsc3BbMF0p
KTsKICAgICAgICAgRVMyX09OTFkoImF0dHJpYnV0ZSIsICh5eWxzcFswXSkpOwogICAgICAgICBj
b250ZXh0LT5jaGVja0lzQXRHbG9iYWxMZXZlbCgoeXlsc3BbMF0pLCAiYXR0cmlidXRlIik7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUF0dHJpYnV0ZTsKKyAgICAgICAg
KHl5dmFsLmludGVybS5xdWFsaWZpZXJXcmFwcGVyKSA9IG5ldyBUU3RvcmFnZVF1YWxpZmllcldy
YXBwZXIoRXZxQXR0cmlidXRlLCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKIAot
ICBjYXNlIDEzNDoKKyAgY2FzZSAxMzU6CiAKICAgICB7CiAgICAgICAgIEVTMl9PTkxZKCJ2YXJ5
aW5nIiwgKHl5bHNwWzBdKSk7CiAgICAgICAgIGNvbnRleHQtPmNoZWNrSXNBdEdsb2JhbExldmVs
KCh5eWxzcFswXSksICJ2YXJ5aW5nIik7CiAgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJU
eXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUikKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVh
bGlmaWVyKSA9IEV2cVZhcnlpbmdPdXQ7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxp
ZmllcldyYXBwZXIpID0gbmV3IFRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlcihFdnFWYXJ5aW5nT3V0
LCAoeXlsc3BbMF0pKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgKHl5dmFsLmludGVybS5x
dWFsaWZpZXIpID0gRXZxVmFyeWluZ0luOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5xdWFs
aWZpZXJXcmFwcGVyKSA9IG5ldyBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIoRXZxVmFyeWluZ0lu
LCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDEzNToKKyAgY2Fz
ZSAxMzY6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUNv
bnN0OworICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcldyYXBwZXIpID0gbmV3IFRTdG9y
YWdlUXVhbGlmaWVyV3JhcHBlcihFdnFDb25zdCwgKHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxMzY6CisgIGNhc2UgMTM3OgogCiAgICAgewogICAgICAgICBpZiAo
Y29udGV4dC0+ZGVjbGFyaW5nRnVuY3Rpb24oKSkKICAgICAgICAgewotICAgICAgICAgICAgKHl5
dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxSW47CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJt
LnF1YWxpZmllcldyYXBwZXIpID0gbmV3IFRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlcihFdnFJbiwg
KHl5bHNwWzBdKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoY29udGV4dC0+Z2V0U2hh
ZGVyVHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUikKICAgICAgICAgewogICAgICAgICAgICAg
RVMzX09SX05FV0VSKCJpbiIsICh5eWxzcFswXSksICJzdG9yYWdlIHF1YWxpZmllciIpOwotICAg
ICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxRnJhZ21lbnRJbjsKKyAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyV3JhcHBlcikgPSBuZXcgVFN0b3JhZ2VRdWFs
aWZpZXJXcmFwcGVyKEV2cUZyYWdtZW50SW4sICh5eWxzcFswXSkpOwogICAgICAgICB9CiAgICAg
ICAgIGVsc2UgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9WRVJURVhfU0hBREVS
KQogICAgICAgICB7CiAgICAgICAgICAgICBFUzNfT1JfTkVXRVIoImluIiwgKHl5bHNwWzBdKSwg
InN0b3JhZ2UgcXVhbGlmaWVyIik7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmll
cikgPSBFdnFWZXJ0ZXhJbjsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyV3Jh
cHBlcikgPSBuZXcgVFN0b3JhZ2VRdWFsaWZpZXJXcmFwcGVyKEV2cVZlcnRleEluLCAoeXlsc3Bb
MF0pKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cUNvbXB1dGVJbjsKKyAgICAgICAgICAgICh5eXZh
bC5pbnRlcm0ucXVhbGlmaWVyV3JhcHBlcikgPSBuZXcgVFN0b3JhZ2VRdWFsaWZpZXJXcmFwcGVy
KEV2cUNvbXB1dGVJbiwgKHl5bHNwWzBdKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBicmVh
azsKIAotICBjYXNlIDEzNzoKKyAgY2FzZSAxMzg6CiAKICAgICB7CiAgICAgICAgIGlmIChjb250
ZXh0LT5kZWNsYXJpbmdGdW5jdGlvbigpKQogICAgICAgICB7Ci0gICAgICAgICAgICAoeXl2YWwu
aW50ZXJtLnF1YWxpZmllcikgPSBFdnFPdXQ7CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnF1
YWxpZmllcldyYXBwZXIpID0gbmV3IFRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlcihFdnFPdXQsICh5
eWxzcFswXSkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewpAQCAtMzU1Niwz
NCArMzcxMSwyNSBAQCB5eXJlZHVjZToKICAgICAgICAgICAgIE5PTl9DT01QVVRFX09OTFkoIm91
dCIsICh5eWxzcFswXSkpOwogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUo
KSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
KHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxRnJhZ21lbnRPdXQ7CisgICAgICAgICAgICAg
ICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXJXcmFwcGVyKSA9IG5ldyBUU3RvcmFnZVF1YWxpZmll
cldyYXBwZXIoRXZxRnJhZ21lbnRPdXQsICh5eWxzcFswXSkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICh5eXZhbC5pbnRl
cm0ucXVhbGlmaWVyKSA9IEV2cVZlcnRleE91dDsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50
ZXJtLnF1YWxpZmllcldyYXBwZXIpID0gbmV3IFRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlcihFdnFW
ZXJ0ZXhPdXQsICh5eWxzcFswXSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMzg6CisgIGNhc2UgMTM5OgogCiAgICAgewogICAgICAg
ICBpZiAoIWNvbnRleHQtPmRlY2xhcmluZ0Z1bmN0aW9uKCkpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFswXSksICJpbnZhbGlkIGlub3V0IHF1YWxpZmllciIs
ICInaW5vdXQnIGNhbiBiZSBvbmx5IHVzZWQgd2l0aCBmdW5jdGlvbiBwYXJhbWV0ZXJzIik7Cisg
ICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXlsc3BbMF0pLCAiaW52YWxpZCBxdWFsaWZpZXI6
IGNhbiBiZSBvbmx5IHVzZWQgd2l0aCBmdW5jdGlvbiBwYXJhbWV0ZXJzIiwgImlub3V0Iik7CiAg
ICAgICAgIH0KLSAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxSW5PdXQ7Ci0g
ICAgfQotCi0gICAgYnJlYWs7Ci0KLSAgY2FzZSAxMzk6Ci0KLSAgICB7Ci0gICAgICAgIEVTM19P
Ul9ORVdFUigiY2VudHJvaWQiLCAoeXlsc3BbMF0pLCAic3RvcmFnZSBxdWFsaWZpZXIiKTsKLSAg
ICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxQ2VudHJvaWQ7CisgICAgICAgICh5
eXZhbC5pbnRlcm0ucXVhbGlmaWVyV3JhcHBlcikgPSBuZXcgVFN0b3JhZ2VRdWFsaWZpZXJXcmFw
cGVyKEV2cUluT3V0LCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM1OTEs
OCArMzczNyw4IEBAIHl5cmVkdWNlOgogICBjYXNlIDE0MDoKIAogICAgIHsKLSAgICAgICAgY29u
dGV4dC0+Y2hlY2tJc0F0R2xvYmFsTGV2ZWwoKHl5bHNwWzBdKSwgInVuaWZvcm0iKTsKLSAgICAg
ICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxVW5pZm9ybTsKKyAgICAgICAgRVMzX09S
X05FV0VSKCJjZW50cm9pZCIsICh5eWxzcFswXSksICJzdG9yYWdlIHF1YWxpZmllciIpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcldyYXBwZXIpID0gbmV3IFRTdG9yYWdlUXVhbGlm
aWVyV3JhcHBlcihFdnFDZW50cm9pZCwgKHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7
CkBAIC0zNjAwLDExICszNzQ2LDggQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTQxOgogCiAgICAgewot
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWzBdLmludGVybS50eXBlKTsKLQot
ICAgICAgICBpZiAoKHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNpb24gPT0gRWJwVW5kZWZpbmVk
KSB7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnByZWNpc2lvbiA9IGNvbnRleHQt
PnN5bWJvbFRhYmxlLmdldERlZmF1bHRQcmVjaXNpb24oKHl5dnNwWzBdLmludGVybS50eXBlKS5n
ZXRCYXNpY1R5cGUoKSk7Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+Y2hlY2tJc0F0R2xv
YmFsTGV2ZWwoKHl5bHNwWzBdKSwgInVuaWZvcm0iKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5x
dWFsaWZpZXJXcmFwcGVyKSA9IG5ldyBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIoRXZxVW5pZm9y
bSwgKHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zNjEyLDcgKzM3NTUsNyBA
QCB5eXJlZHVjZToKICAgY2FzZSAxNDI6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0u
cHJlY2lzaW9uKSA9IEVicEhpZ2g7CisgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyV3Jh
cHBlcikgPSBuZXcgVE1lbW9yeVF1YWxpZmllcldyYXBwZXIoRXZxUmVhZE9ubHksICh5eWxzcFsw
XSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzYyMCw3ICszNzYzLDcgQEAgeXlyZWR1Y2U6
CiAgIGNhc2UgMTQzOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLnByZWNpc2lvbikg
PSBFYnBNZWRpdW07CisgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyV3JhcHBlcikgPSBu
ZXcgVE1lbW9yeVF1YWxpZmllcldyYXBwZXIoRXZxV3JpdGVPbmx5LCAoeXlsc3BbMF0pKTsKICAg
ICB9CiAKICAgICBicmVhazsKQEAgLTM2MjgsNyArMzc3MSw3IEBAIHl5cmVkdWNlOgogICBjYXNl
IDE0NDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwTG93
OworICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcldyYXBwZXIpID0gbmV3IFRNZW1vcnlR
dWFsaWZpZXJXcmFwcGVyKEV2cUNvaGVyZW50LCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBi
cmVhazsKQEAgLTM2MzYsOCArMzc3OSw3IEBAIHl5cmVkdWNlOgogICBjYXNlIDE0NToKIAogICAg
IHsKLSAgICAgICAgRVMzX09SX05FV0VSKCJsYXlvdXQiLCAoeXlsc3BbLTNdKSwgInF1YWxpZmll
ciIpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLmxheW91dFF1YWxpZmllcikgPSAoeXl2c3BbLTFd
LmludGVybS5sYXlvdXRRdWFsaWZpZXIpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmll
cldyYXBwZXIpID0gbmV3IFRNZW1vcnlRdWFsaWZpZXJXcmFwcGVyKEV2cVJlc3RyaWN0LCAoeXls
c3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM2NDUsNyArMzc4Nyw3IEBAIHl5cmVk
dWNlOgogICBjYXNlIDE0NjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5sYXlvdXRR
dWFsaWZpZXIpID0gKHl5dnNwWzBdLmludGVybS5sYXlvdXRRdWFsaWZpZXIpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnF1YWxpZmllcldyYXBwZXIpID0gbmV3IFRNZW1vcnlRdWFsaWZpZXJXcmFw
cGVyKEV2cVZvbGF0aWxlLCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM2
NTMsNyArMzc5NSw5IEBAIHl5cmVkdWNlOgogICBjYXNlIDE0NzoKIAogICAgIHsKLSAgICAgICAg
KHl5dmFsLmludGVybS5sYXlvdXRRdWFsaWZpZXIpID0gY29udGV4dC0+am9pbkxheW91dFF1YWxp
ZmllcnMoKHl5dnNwWy0yXS5pbnRlcm0ubGF5b3V0UXVhbGlmaWVyKSwgKHl5dnNwWzBdLmludGVy
bS5sYXlvdXRRdWFsaWZpZXIpLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgY29udGV4dC0+Y2hlY2tJ
c0F0R2xvYmFsTGV2ZWwoKHl5bHNwWzBdKSwgInNoYXJlZCIpOworICAgICAgICBDT01QVVRFX09O
TFkoInNoYXJlZCIsICh5eWxzcFswXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmll
cldyYXBwZXIpID0gbmV3IFRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlcihFdnFTaGFyZWQsICh5eWxz
cFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzY2MSw3ICszODA1LDggQEAgeXlyZWR1
Y2U6CiAgIGNhc2UgMTQ4OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmxheW91dFF1
YWxpZmllcikgPSBjb250ZXh0LT5wYXJzZUxheW91dFF1YWxpZmllcigqKHl5dnNwWzBdLmxleCku
c3RyaW5nLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9ICh5eXZz
cFswXS5pbnRlcm0udHlwZSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZSkucHJlY2lzaW9u
ID0gY29udGV4dC0+c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFByZWNpc2lvbigoeXl2c3BbMF0uaW50
ZXJtLnR5cGUpLmdldEJhc2ljVHlwZSgpKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM2Njks
NyArMzgxNCw3IEBAIHl5cmVkdWNlOgogICBjYXNlIDE0OToKIAogICAgIHsKLSAgICAgICAgKHl5
dmFsLmludGVybS5sYXlvdXRRdWFsaWZpZXIpID0gY29udGV4dC0+cGFyc2VMYXlvdXRRdWFsaWZp
ZXIoKih5eXZzcFstMl0ubGV4KS5zdHJpbmcsICh5eWxzcFstMl0pLCAoeXl2c3BbMF0ubGV4KS5p
LCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwSGln
aDsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM2NzcsNyArMzgyMiw3IEBAIHl5cmVkdWNlOgog
ICBjYXNlIDE1MDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5sYXlvdXRRdWFsaWZp
ZXIpID0gY29udGV4dC0+cGFyc2VMYXlvdXRRdWFsaWZpZXIoKih5eXZzcFstMl0ubGV4KS5zdHJp
bmcsICh5eWxzcFstMl0pLCAoeXl2c3BbMF0ubGV4KS5pLCAoeXlsc3BbMF0pKTsKKyAgICAgICAg
KHl5dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwTWVkaXVtOwogICAgIH0KIAogICAgIGJyZWFr
OwpAQCAtMzY4NSw3ICszODMwLDcgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTUxOgogCiAgICAgewot
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLmluaXRpYWxpemUoKHl5dnNwWzBdLmludGVybS50
eXBlU3BlY2lmaWVyTm9uQXJyYXkpLCAoY29udGV4dC0+c3ltYm9sVGFibGUuYXRHbG9iYWxMZXZl
bCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5KSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
cHJlY2lzaW9uKSA9IEVicExvdzsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM2OTMsNiArMzgz
OCw3MSBAQCB5eXJlZHVjZToKICAgY2FzZSAxNTI6CiAKICAgICB7CisgICAgICAgIEVTM19PUl9O
RVdFUigibGF5b3V0IiwgKHl5bHNwWy0zXSksICJxdWFsaWZpZXIiKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS5sYXlvdXRRdWFsaWZpZXIpID0gKHl5dnNwWy0xXS5pbnRlcm0ubGF5b3V0UXVhbGlm
aWVyKTsKKyAgICB9CisKKyAgICBicmVhazsKKworICBjYXNlIDE1MzoKKworICAgIHsKKyAgICAg
ICAgKHl5dmFsLmludGVybS5sYXlvdXRRdWFsaWZpZXIpID0gKHl5dnNwWzBdLmludGVybS5sYXlv
dXRRdWFsaWZpZXIpOworICAgIH0KKworICAgIGJyZWFrOworCisgIGNhc2UgMTU0OgorCisgICAg
eworICAgICAgICAoeXl2YWwuaW50ZXJtLmxheW91dFF1YWxpZmllcikgPSBjb250ZXh0LT5qb2lu
TGF5b3V0UXVhbGlmaWVycygoeXl2c3BbLTJdLmludGVybS5sYXlvdXRRdWFsaWZpZXIpLCAoeXl2
c3BbMF0uaW50ZXJtLmxheW91dFF1YWxpZmllciksICh5eWxzcFswXSkpOworICAgIH0KKworICAg
IGJyZWFrOworCisgIGNhc2UgMTU1OgorCisgICAgeworICAgICAgICAoeXl2YWwuaW50ZXJtLmxh
eW91dFF1YWxpZmllcikgPSBjb250ZXh0LT5wYXJzZUxheW91dFF1YWxpZmllcigqKHl5dnNwWzBd
LmxleCkuc3RyaW5nLCAoeXlsc3BbMF0pKTsKKyAgICB9CisKKyAgICBicmVhazsKKworICBjYXNl
IDE1NjoKKworICAgIHsKKyAgICAgICAgKHl5dmFsLmludGVybS5sYXlvdXRRdWFsaWZpZXIpID0g
Y29udGV4dC0+cGFyc2VMYXlvdXRRdWFsaWZpZXIoKih5eXZzcFstMl0ubGV4KS5zdHJpbmcsICh5
eWxzcFstMl0pLCAoeXl2c3BbMF0ubGV4KS5pLCAoeXlsc3BbMF0pKTsKKyAgICB9CisKKyAgICBi
cmVhazsKKworICBjYXNlIDE1NzoKKworICAgIHsKKyAgICAgICAgKHl5dmFsLmludGVybS5sYXlv
dXRRdWFsaWZpZXIpID0gY29udGV4dC0+cGFyc2VMYXlvdXRRdWFsaWZpZXIoKih5eXZzcFstMl0u
bGV4KS5zdHJpbmcsICh5eWxzcFstMl0pLCAoeXl2c3BbMF0ubGV4KS5pLCAoeXlsc3BbMF0pKTsK
KyAgICB9CisKKyAgICBicmVhazsKKworICBjYXNlIDE1ODoKKworICAgIHsKKyAgICAgICAgKHl5
dmFsLmludGVybS5sYXlvdXRRdWFsaWZpZXIpID0gY29udGV4dC0+cGFyc2VMYXlvdXRRdWFsaWZp
ZXIoInNoYXJlZCIsICh5eWxzcFswXSkpOworICAgIH0KKworICAgIGJyZWFrOworCisgIGNhc2Ug
MTU5OgorCisgICAgeworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLmluaXRpYWxpemUoKHl5
dnNwWzBdLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLCAoY29udGV4dC0+c3ltYm9sVGFi
bGUuYXRHbG9iYWxMZXZlbCgpID8gRXZxR2xvYmFsIDogRXZxVGVtcG9yYXJ5KSk7CisgICAgfQor
CisgICAgYnJlYWs7CisKKyAgY2FzZSAxNjA6CisKKyAgICB7CiAgICAgICAgIEVTM19PUl9ORVdF
UigiW10iLCAoeXlsc3BbLTFdKSwgImltcGxpY2l0bHkgc2l6ZWQgYXJyYXkiKTsKICAgICAgICAg
KHl5dmFsLmludGVybS50eXBlKS5pbml0aWFsaXplKCh5eXZzcFstMl0uaW50ZXJtLnR5cGVTcGVj
aWZpZXJOb25BcnJheSksIChjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBF
dnFHbG9iYWwgOiBFdnFUZW1wb3JhcnkpKTsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKS5z
ZXRBcnJheVNpemUoMCk7CkBAIC0zNzAwLDcgKzM5MTAsNyBAQCB5eXJlZHVjZToKIAogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMTUzOgorICBjYXNlIDE2MToKIAogICAgIHsKICAgICAgICAgKHl5dmFs
LmludGVybS50eXBlKS5pbml0aWFsaXplKCh5eXZzcFstM10uaW50ZXJtLnR5cGVTcGVjaWZpZXJO
b25BcnJheSksIChjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9i
YWwgOiBFdnFUZW1wb3JhcnkpKTsKQEAgLTM3MTMsNyArMzkyMyw3IEBAIHl5cmVkdWNlOgogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxNTQ6CisgIGNhc2UgMTYyOgogCiAgICAgewogICAgICAgICAo
eXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRWb2lkLCAo
eXlsc3BbMF0pKTsKQEAgLTM3MjEsNyArMzkzMSw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAxNTU6CisgIGNhc2UgMTYzOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50
ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRGbG9hdCwgKHl5bHNwWzBd
KSk7CkBAIC0zNzI5LDcgKzM5MzksNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTU2OgorICBjYXNlIDE2NDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
U3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0SW50LCAoeXlsc3BbMF0pKTsKQEAgLTM3
MzcsNyArMzk0Nyw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNTc6Cisg
IGNhc2UgMTY1OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJO
b25BcnJheSkuaW5pdGlhbGl6ZShFYnRVSW50LCAoeXlsc3BbMF0pKTsKQEAgLTM3NDUsNyArMzk1
NSw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNTg6CisgIGNhc2UgMTY2
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSku
aW5pdGlhbGl6ZShFYnRCb29sLCAoeXlsc3BbMF0pKTsKQEAgLTM3NTMsNyArMzk2Myw3IEBAIHl5
cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNTk6CisgIGNhc2UgMTY3OgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6
ZShFYnRGbG9hdCwgKHl5bHNwWzBdKSk7CkBAIC0zNzYyLDcgKzM5NzIsNyBAQCB5eXJlZHVjZToK
IAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTYwOgorICBjYXNlIDE2ODoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0Rmxv
YXQsICh5eWxzcFswXSkpOwpAQCAtMzc3MSw3ICszOTgxLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBi
cmVhazsKIAotICBjYXNlIDE2MToKKyAgY2FzZSAxNjk6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEZsb2F0LCAoeXls
c3BbMF0pKTsKQEAgLTM3ODAsNyArMzk5MCw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAxNjI6CisgIGNhc2UgMTcwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRCb29sLCAoeXlsc3BbMF0pKTsK
QEAgLTM3ODksNyArMzk5OSw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
NjM6CisgIGNhc2UgMTcxOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVj
aWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRCb29sLCAoeXlsc3BbMF0pKTsKQEAgLTM3OTgs
NyArNDAwOCw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjQ6CisgIGNh
c2UgMTcyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25B
cnJheSkuaW5pdGlhbGl6ZShFYnRCb29sLCAoeXlsc3BbMF0pKTsKQEAgLTM4MDcsNyArNDAxNyw3
IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjU6CisgIGNhc2UgMTczOgog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5p
dGlhbGl6ZShFYnRJbnQsICh5eWxzcFswXSkpOwpAQCAtMzgxNiw3ICs0MDI2LDcgQEAgeXlyZWR1
Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE2NjoKKyAgY2FzZSAxNzQ6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVi
dEludCwgKHl5bHNwWzBdKSk7CkBAIC0zODI1LDcgKzQwMzUsNyBAQCB5eXJlZHVjZToKIAogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTY3OgorICBjYXNlIDE3NToKIAogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0SW50LCAoeXls
c3BbMF0pKTsKQEAgLTM4MzQsNyArNDA0NCw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAxNjg6CisgIGNhc2UgMTc2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRVSW50LCAoeXlsc3BbMF0pKTsK
QEAgLTM4NDMsNyArNDA1Myw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
Njk6CisgIGNhc2UgMTc3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVj
aWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRVSW50LCAoeXlsc3BbMF0pKTsKQEAgLTM4NTIs
NyArNDA2Miw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzA6CisgIGNh
c2UgMTc4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25B
cnJheSkuaW5pdGlhbGl6ZShFYnRVSW50LCAoeXlsc3BbMF0pKTsKQEAgLTM4NjEsNyArNDA3MSw3
IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzE6CisgIGNhc2UgMTc5Ogog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5p
dGlhbGl6ZShFYnRGbG9hdCwgKHl5bHNwWzBdKSk7CkBAIC0zODcwLDcgKzQwODAsNyBAQCB5eXJl
ZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTcyOgorICBjYXNlIDE4MDoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUo
RWJ0RmxvYXQsICh5eWxzcFswXSkpOwpAQCAtMzg3OSw3ICs0MDg5LDcgQEAgeXlyZWR1Y2U6CiAK
ICAgICBicmVhazsKIAotICBjYXNlIDE3MzoKKyAgY2FzZSAxODE6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEZsb2F0
LCAoeXlsc3BbMF0pKTsKQEAgLTM4ODgsNyArNDA5OCw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxNzQ6CisgIGNhc2UgMTgyOgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRGbG9hdCwgKHl5bHNw
WzBdKSk7CkBAIC0zODk3LDcgKzQxMDcsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTc1OgorICBjYXNlIDE4MzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS50
eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0RmxvYXQsICh5eWxzcFswXSkpOwpA
QCAtMzkwNiw3ICs0MTE2LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE3
NjoKKyAgY2FzZSAxODQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNp
Zmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEZsb2F0LCAoeXlsc3BbMF0pKTsKQEAgLTM5MTUs
NyArNDEyNSw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzc6CisgIGNh
c2UgMTg1OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25B
cnJheSkuaW5pdGlhbGl6ZShFYnRGbG9hdCwgKHl5bHNwWzBdKSk7CkBAIC0zOTI0LDcgKzQxMzQs
NyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc4OgorICBjYXNlIDE4NjoK
IAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmlu
aXRpYWxpemUoRWJ0RmxvYXQsICh5eWxzcFswXSkpOwpAQCAtMzkzMyw3ICs0MTQzLDcgQEAgeXly
ZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE3OToKKyAgY2FzZSAxODc6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXpl
KEVidEZsb2F0LCAoeXlsc3BbMF0pKTsKQEAgLTM5NDIsNyArNDE1MiwxOCBAQCB5eXJlZHVjZToK
IAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTgwOgorICBjYXNlIDE4ODoKKworICAgIHsKKyAgICAg
ICAgaWYgKCFjb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9ZVVZfdGFyZ2V0Iikp
IHsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFswXSksICJ1bnN1cHBvcnRlZCB0
eXBlIiwgInl1dkNzY1N0YW5kYXJkRVhUIik7CisgICAgICAgIH0KKyAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0WXV2Q3NjU3RhbmRhcmRF
WFQsICh5eWxzcFswXSkpOworICAgIH0KKworICAgIGJyZWFrOworCisgIGNhc2UgMTg5OgogCiAg
ICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlh
bGl6ZShFYnRTYW1wbGVyMkQsICh5eWxzcFswXSkpOwpAQCAtMzk1MCw3ICs0MTcxLDcgQEAgeXly
ZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE4MToKKyAgY2FzZSAxOTA6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXpl
KEVidFNhbXBsZXIzRCwgKHl5bHNwWzBdKSk7CkBAIC0zOTU4LDcgKzQxNzksNyBAQCB5eXJlZHVj
ZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTgyOgorICBjYXNlIDE5MToKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0
U2FtcGxlckN1YmUsICh5eWxzcFswXSkpOwpAQCAtMzk2Niw3ICs0MTg3LDcgQEAgeXlyZWR1Y2U6
CiAKICAgICBicmVhazsKIAotICBjYXNlIDE4MzoKKyAgY2FzZSAxOTI6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidFNh
bXBsZXIyREFycmF5LCAoeXlsc3BbMF0pKTsKQEAgLTM5NzQsNyArNDE5NSwxNSBAQCB5eXJlZHVj
ZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg0OgorICBjYXNlIDE5MzoKKworICAgIHsKKyAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0
U2FtcGxlcjJETVMsICh5eWxzcFswXSkpOworICAgIH0KKworICAgIGJyZWFrOworCisgIGNhc2Ug
MTk0OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJh
eSkuaW5pdGlhbGl6ZShFYnRJU2FtcGxlcjJELCAoeXlsc3BbMF0pKTsKQEAgLTM5ODIsNyArNDIx
MSw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODU6CisgIGNhc2UgMTk1
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSku
aW5pdGlhbGl6ZShFYnRJU2FtcGxlcjNELCAoeXlsc3BbMF0pKTsKQEAgLTM5OTAsNyArNDIxOSw3
IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODY6CisgIGNhc2UgMTk2Ogog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5p
dGlhbGl6ZShFYnRJU2FtcGxlckN1YmUsICh5eWxzcFswXSkpOwpAQCAtMzk5OCw3ICs0MjI3LDcg
QEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE4NzoKKyAgY2FzZSAxOTc6CiAK
ICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0
aWFsaXplKEVidElTYW1wbGVyMkRBcnJheSwgKHl5bHNwWzBdKSk7CkBAIC00MDA2LDcgKzQyMzUs
MTUgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE4ODoKKyAgY2FzZSAxOTg6
CisKKyAgICB7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5p
bml0aWFsaXplKEVidElTYW1wbGVyMkRNUywgKHl5bHNwWzBdKSk7CisgICAgfQorCisgICAgYnJl
YWs7CisKKyAgY2FzZSAxOTk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNw
ZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidFVTYW1wbGVyMkQsICh5eWxzcFswXSkpOwpA
QCAtNDAxNCw3ICs0MjUxLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE4
OToKKyAgY2FzZSAyMDA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNp
Zmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidFVTYW1wbGVyM0QsICh5eWxzcFswXSkpOwpAQCAt
NDAyMiw3ICs0MjU5LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE5MDoK
KyAgY2FzZSAyMDE6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmll
ck5vbkFycmF5KS5pbml0aWFsaXplKEVidFVTYW1wbGVyQ3ViZSwgKHl5bHNwWzBdKSk7CkBAIC00
MDMwLDcgKzQyNjcsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTkxOgor
ICBjYXNlIDIwMjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVy
Tm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0VVNhbXBsZXIyREFycmF5LCAoeXlsc3BbMF0pKTsKQEAg
LTQwMzgsNyArNDI3NSwxNSBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTky
OgorICBjYXNlIDIwMzoKKworICAgIHsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lm
aWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0VVNhbXBsZXIyRE1TLCAoeXlsc3BbMF0pKTsKKyAg
ICB9CisKKyAgICBicmVhazsKKworICBjYXNlIDIwNDoKIAogICAgIHsKICAgICAgICAgKHl5dmFs
LmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0U2FtcGxlcjJEU2hh
ZG93LCAoeXlsc3BbMF0pKTsKQEAgLTQwNDYsNyArNDI5MSw3IEBAIHl5cmVkdWNlOgogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxOTM6CisgIGNhc2UgMjA1OgogCiAgICAgewogICAgICAgICAoeXl2
YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRTYW1wbGVyQ3Vi
ZVNoYWRvdywgKHl5bHNwWzBdKSk7CkBAIC00MDU0LDcgKzQyOTksNyBAQCB5eXJlZHVjZToKIAog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTk0OgorICBjYXNlIDIwNjoKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0U2FtcGxl
cjJEQXJyYXlTaGFkb3csICh5eWxzcFswXSkpOwpAQCAtNDA2Miw3ICs0MzA3LDcgQEAgeXlyZWR1
Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE5NToKKyAgY2FzZSAyMDc6CiAKICAgICB7CiAg
ICAgICAgIGlmICghY29udGV4dC0+c3VwcG9ydHNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2Vf
ZXh0ZXJuYWwiKSAmJgpAQCAtNDA3NCw3ICs0MzE5LDE4IEBAIHl5cmVkdWNlOgogCiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxOTY6CisgIGNhc2UgMjA4OgorCisgICAgeworICAgICAgICBpZiAoIWNv
bnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX1lVVl90YXJnZXQiKSkgeworICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNwWzBdKSwgInVuc3VwcG9ydGVkIHR5cGUiLCAiX19z
YW1wbGVyRXh0ZXJuYWwyRFkyWUVYVCIpOworICAgICAgICB9CisgICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidFNhbXBsZXJFeHRlcm5hbDJE
WTJZRVhULCAoeXlsc3BbMF0pKTsKKyAgICB9CisKKyAgICBicmVhazsKKworICBjYXNlIDIwOToK
IAogICAgIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xfQVJC
X3RleHR1cmVfcmVjdGFuZ2xlIikpIHsKQEAgLTQwODUsNyArNDM0MSw3IEBAIHl5cmVkdWNlOgog
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTc6CisgIGNhc2UgMjEwOgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkgPSAoeXl2c3BbMF0uaW50ZXJt
LnR5cGVTcGVjaWZpZXJOb25BcnJheSk7CkBAIC00MDkzLDcgKzQzNDksMTAzIEBAIHl5cmVkdWNl
OgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTg6CisgIGNhc2UgMjExOgorCisgICAgeworICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRJ
bWFnZTJELCAoeXlsc3BbMF0pKTsKKyAgICB9CisKKyAgICBicmVhazsKKworICBjYXNlIDIxMjoK
KworICAgIHsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmlu
aXRpYWxpemUoRWJ0SUltYWdlMkQsICh5eWxzcFswXSkpOworICAgIH0KKworICAgIGJyZWFrOwor
CisgIGNhc2UgMjEzOgorCisgICAgeworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZp
ZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRVSW1hZ2UyRCwgKHl5bHNwWzBdKSk7CisgICAgfQor
CisgICAgYnJlYWs7CisKKyAgY2FzZSAyMTQ6CisKKyAgICB7CisgICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEltYWdlM0QsICh5eWxzcFsw
XSkpOworICAgIH0KKworICAgIGJyZWFrOworCisgIGNhc2UgMjE1OgorCisgICAgeworICAgICAg
ICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRJSW1h
Z2UzRCwgKHl5bHNwWzBdKSk7CisgICAgfQorCisgICAgYnJlYWs7CisKKyAgY2FzZSAyMTY6CisK
KyAgICB7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0
aWFsaXplKEVidFVJbWFnZTNELCAoeXlsc3BbMF0pKTsKKyAgICB9CisKKyAgICBicmVhazsKKwor
ICBjYXNlIDIxNzoKKworICAgIHsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVy
Tm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0SW1hZ2UyREFycmF5LCAoeXlsc3BbMF0pKTsKKyAgICB9
CisKKyAgICBicmVhazsKKworICBjYXNlIDIxODoKKworICAgIHsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0SUltYWdlMkRBcnJheSwg
KHl5bHNwWzBdKSk7CisgICAgfQorCisgICAgYnJlYWs7CisKKyAgY2FzZSAyMTk6CisKKyAgICB7
CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXpl
KEVidFVJbWFnZTJEQXJyYXksICh5eWxzcFswXSkpOworICAgIH0KKworICAgIGJyZWFrOworCisg
IGNhc2UgMjIwOgorCisgICAgeworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJO
b25BcnJheSkuaW5pdGlhbGl6ZShFYnRJbWFnZUN1YmUsICh5eWxzcFswXSkpOworICAgIH0KKwor
ICAgIGJyZWFrOworCisgIGNhc2UgMjIxOgorCisgICAgeworICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRJSW1hZ2VDdWJlLCAoeXlsc3Bb
MF0pKTsKKyAgICB9CisKKyAgICBicmVhazsKKworICBjYXNlIDIyMjoKKworICAgIHsKKyAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0VUlt
YWdlQ3ViZSwgKHl5bHNwWzBdKSk7CisgICAgfQorCisgICAgYnJlYWs7CisKKyAgY2FzZSAyMjM6
CiAKICAgICB7CiAgICAgICAgIC8vCkBAIC00MTA3LDEzICs0NDU5LDEzIEBAIHl5cmVkdWNlOgog
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTk6CisgIGNhc2UgMjI0OgogCiAgICAgeyBjb250ZXh0
LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eWxzcFstMV0pLCAqKHl5dnNwWy0xXS5sZXgpLnN0
cmluZyk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjAwOgorICBjYXNlIDIyNToKIAogICAg
IHsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpID0gY29udGV4
dC0+YWRkU3RydWN0dXJlKCh5eWxzcFstNV0pLCAoeXlsc3BbLTRdKSwgKHl5dnNwWy00XS5sZXgp
LnN0cmluZywgKHl5dnNwWy0xXS5pbnRlcm0uZmllbGRMaXN0KSk7CkBAIC00MTIxLDEzICs0NDcz
LDEzIEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMDE6CisgIGNhc2UgMjI2
OgogCiAgICAgeyBjb250ZXh0LT5lbnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eWxzcFswXSksICoo
eXl2c3BbMF0ubGV4KS5zdHJpbmcpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDIwMjoKKyAg
Y2FzZSAyMjc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5v
bkFycmF5KSA9IGNvbnRleHQtPmFkZFN0cnVjdHVyZSgoeXlsc3BbLTRdKSwgKHl5bG9jKSwgTmV3
UG9vbFRTdHJpbmcoIiIpLCAoeXl2c3BbLTFdLmludGVybS5maWVsZExpc3QpKTsKQEAgLTQxMzUs
NyArNDQ4Nyw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMDM6CisgIGNh
c2UgMjI4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSAoeXl2
c3BbMF0uaW50ZXJtLmZpZWxkTGlzdCk7CkBAIC00MTQzLDI0ICs0NDk1LDE1IEBAIHl5cmVkdWNl
OgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMDQ6CisgIGNhc2UgMjI5OgogCiAgICAgewotICAg
ICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSAoeXl2c3BbLTFdLmludGVybS5maWVsZExp
c3QpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICh5eXZzcFswXS5pbnRlcm0uZmll
bGRMaXN0KS0+c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIFRGaWVsZCogZmllbGQgPSAoKih5
eXZzcFswXS5pbnRlcm0uZmllbGRMaXN0KSlbaV07Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBq
ID0gMDsgaiA8ICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+c2l6ZSgpOyArK2opIHsKLSAgICAg
ICAgICAgICAgICBpZiAoKCooeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkpW2pdLT5uYW1lKCkgPT0g
ZmllbGQtPm5hbWUoKSkgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXls
c3BbMF0pLCAiZHVwbGljYXRlIGZpZWxkIG5hbWUgaW4gc3RydWN0dXJlOiIsICJzdHJ1Y3QiLCBm
aWVsZC0+bmFtZSgpLmNfc3RyKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KS0+cHVzaF9iYWNrKGZpZWxkKTsK
LSAgICAgICAgfQorICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSBjb250ZXh0LT5j
b21iaW5lU3RydWN0RmllbGRMaXN0cygoeXl2c3BbLTFdLmludGVybS5maWVsZExpc3QpLCAoeXl2
c3BbMF0uaW50ZXJtLmZpZWxkTGlzdCksICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFr
OwogCi0gIGNhc2UgMjA1OgorICBjYXNlIDIzMDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmlu
dGVybS5maWVsZExpc3QpID0gY29udGV4dC0+YWRkU3RydWN0RGVjbGFyYXRvckxpc3QoKHl5dnNw
Wy0yXS5pbnRlcm0udHlwZSksICh5eXZzcFstMV0uaW50ZXJtLmZpZWxkTGlzdCkpOwpAQCAtNDE2
OCw3ICs0NTExLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDIwNjoKKyAg
Y2FzZSAyMzE6CiAKICAgICB7CiAgICAgICAgIC8vIEVTMyBPbmx5LCBidXQgZXJyb3JzIHNob3Vs
ZCBiZSBoYW5kbGVkIGVsc2V3aGVyZQpAQCAtNDE3Nyw3ICs0NTIwLDcgQEAgeXlyZWR1Y2U6CiAK
ICAgICBicmVhazsKIAotICBjYXNlIDIwNzoKKyAgY2FzZSAyMzI6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSA9IE5ld1Bvb2xURmllbGRMaXN0KCk7CkBAIC00MTg2
LDcgKzQ1MjksNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjA4OgorICBj
YXNlIDIzMzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3QpLT5wdXNo
X2JhY2soKHl5dnNwWzBdLmludGVybS5maWVsZCkpOwpAQCAtNDE5NCw3ICs0NTM3LDcgQEAgeXly
ZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDIwOToKKyAgY2FzZSAyMzQ6CiAKICAgICB7
CiAgICAgICAgIGNvbnRleHQtPmNoZWNrSXNOb3RSZXNlcnZlZCgoeXlsc3BbMF0pLCAqKHl5dnNw
WzBdLmxleCkuc3RyaW5nKTsKQEAgLTQyMDUsNyArNDU0OCw3IEBAIHl5cmVkdWNlOgogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAyMTA6CisgIGNhc2UgMjM1OgogCiAgICAgewogICAgICAgICBjb250
ZXh0LT5jaGVja0lzTm90UmVzZXJ2ZWQoKHl5bHNwWy0zXSksICooeXl2c3BbLTNdLmxleCkuc3Ry
aW5nKTsKQEAgLTQyMTksOTEgKzQ1NjIsOTEgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAot
ICBjYXNlIDIxMToKKyAgY2FzZSAyMzY6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogCiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAyMTI6CisgIGNhc2UgMjM3OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKTsgfQogCiAgICAgYnJlYWs7
CiAKLSAgY2FzZSAyMTM6CisgIGNhc2UgMjM4OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1CbG9jayk7IH0KIAogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMjE0OgorICBjYXNlIDIzOToKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1O
b2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KIAogICAgIGJyZWFrOwogCi0g
IGNhc2UgMjE1OgorICBjYXNlIDI0MDoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2Rl
KSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNh
c2UgMjE2OgorICBjYXNlIDI0MToKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MjE3OgorICBjYXNlIDI0MjoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5
eXZzcFswXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjE4
OgorICBjYXNlIDI0MzoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZz
cFswXS5pbnRlcm0uaW50ZXJtU3dpdGNoKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMTk6
CisgIGNhc2UgMjQ0OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNw
WzBdLmludGVybS5pbnRlcm1DYXNlKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMjA6Cisg
IGNhc2UgMjQ1OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBd
LmludGVybS5pbnRlcm1Ob2RlKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMjE6CisgIGNh
c2UgMjQ2OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmlu
dGVybS5pbnRlcm1Ob2RlKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMjI6CisgIGNhc2Ug
MjQ3OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybUJsb2NrKSA9IDA7IH0KIAogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMjIzOgorICBjYXNlIDI0ODoKIAogICAgIHsgY29udGV4dC0+c3ltYm9s
VGFibGUucHVzaCgpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDIyNDoKKyAgY2FzZSAyNDk6
CiAKICAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOyB9CiAKICAgICBicmVhazsKIAot
ICBjYXNlIDIyNToKKyAgY2FzZSAyNTA6CiAKICAgICB7CiAgICAgICAgIGlmICgoeXl2c3BbLTJd
LmludGVybS5pbnRlcm1CbG9jaykgIT0gMCkgewpAQCAtNDMxNCw0MyArNDY1Nyw0MyBAQCB5eXJl
ZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjI2OgorICBjYXNlIDI1MToKIAogICAgIHsg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtQmxvY2sp
OyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDIyNzoKKyAgY2FzZSAyNTI6CiAKICAgICB7ICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybU5vZGUpOyB9
CiAKICAgICBicmVhazsKIAotICBjYXNlIDIyODoKKyAgY2FzZSAyNTM6CiAKICAgICB7IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMjk6Cisg
IGNhc2UgMjU0OgogCiAgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgKHl5dmFsLmlu
dGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtQmxvY2spOyB9CiAKICAg
ICBicmVhazsKIAotICBjYXNlIDIzMDoKKyAgY2FzZSAyNTU6CiAKICAgICB7IGNvbnRleHQtPnN5
bWJvbFRhYmxlLnB1c2goKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMzE6CisgIGNhc2Ug
MjU2OgogCiAgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgKHl5dmFsLmludGVybS5p
bnRlcm1Ob2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KIAogICAgIGJyZWFr
OwogCi0gIGNhc2UgMjMyOgorICBjYXNlIDI1NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmlu
dGVybS5pbnRlcm1CbG9jaykgPSAwOwpAQCAtNDM1OCw3ICs0NzAxLDcgQEAgeXlyZWR1Y2U6CiAK
ICAgICBicmVhazsKIAotICBjYXNlIDIzMzoKKyAgY2FzZSAyNTg6CiAKICAgICB7CiAgICAgICAg
IGlmICgoeXl2c3BbLTFdLmludGVybS5pbnRlcm1CbG9jaykpIHsKQEAgLTQzNjksNyArNDcxMiw3
IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMzQ6CisgIGNhc2UgMjU5Ogog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUJsb2NrKSA9IG5ldyBUSW50ZXJt
QmxvY2soKTsKQEAgLTQzNzksNyArNDcyMiw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAyMzU6CisgIGNhc2UgMjYwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybUJsb2NrKSA9ICh5eXZzcFstMV0uaW50ZXJtLmludGVybUJsb2NrKTsKQEAgLTQzODgs
MTkgKzQ3MzEsMTkgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDIzNjoKKyAg
Y2FzZSAyNjE6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAwOyB9CiAKICAg
ICBicmVhazsKIAotICBjYXNlIDIzNzoKKyAgY2FzZSAyNjI6CiAKICAgICB7ICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSBzdGF0aWNfY2FzdDxUSW50ZXJtTm9kZSo+KCh5eXZzcFstMV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSkpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDIzODoKKyAg
Y2FzZSAyNjM6CiAKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmNoZWNrSXNTY2FsYXJCb29sKCh5
eWxzcFstNF0pLCAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKQEAgLTQ0MDks
NyArNDc1Miw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMzk6CisgIGNh
c2UgMjY0OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9
ICh5eXZzcFstMl0uaW50ZXJtLmludGVybU5vZGUpOwpAQCAtNDQxOCw3ICs0NzYxLDcgQEAgeXly
ZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDI0MDoKKyAgY2FzZSAyNjU6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWzBdLmludGVy
bS5pbnRlcm1Ob2RlKTsKQEAgLTQ0MjcsMTMgKzQ3NzAsMTMgQEAgeXlyZWR1Y2U6CiAKICAgICBi
cmVhazsKIAotICBjYXNlIDI0MToKKyAgY2FzZSAyNjY6CiAKICAgICB7IGNvbnRleHQtPmluY3JT
d2l0Y2hOZXN0aW5nTGV2ZWwoKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDI6CisgIGNh
c2UgMjY3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVN3aXRjaCkgPSBj
b250ZXh0LT5hZGRTd2l0Y2goKHl5dnNwWy0zXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWzBdLmludGVybS5pbnRlcm1CbG9jayksICh5eWxzcFstNV0pKTsKQEAgLTQ0NDIsNyArNDc4
NSw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDM6CisgIGNhc2UgMjY4
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUNhc2UpID0gY29udGV4dC0+
YWRkQ2FzZSgoeXl2c3BbLTFdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTJdKSk7
CkBAIC00NDUwLDcgKzQ3OTMsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MjQ0OgorICBjYXNlIDI2OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1D
YXNlKSA9IGNvbnRleHQtPmFkZERlZmF1bHQoKHl5bHNwWy0xXSkpOwpAQCAtNDQ1OCw3ICs0ODAx
LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDI0NToKKyAgY2FzZSAyNzA6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKQEAgLTQ0NjcsMTMgKzQ4MTAsMTMgQEAgeXly
ZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDI0NjoKKyAgY2FzZSAyNzE6CiAKICAgICB7
Ci0gICAgICAgIFRJbnRlcm1Ob2RlICppbnRlcm1Ob2RlOworICAgICAgICBUSW50ZXJtQmluYXJ5
ICppbml0Tm9kZSA9IG51bGxwdHI7CiAgICAgICAgIGNvbnRleHQtPmNoZWNrSXNTY2FsYXJCb29s
KCh5eWxzcFstMl0pLCAoeXl2c3BbLTNdLmludGVybS50eXBlKSk7CiAKLSAgICAgICAgaWYgKCFj
b250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5bHNwWy0yXSksICooeXl2c3BbLTJdLmxleCku
c3RyaW5nLCAoeXl2c3BbLTNdLmludGVybS50eXBlKSwgKHl5dnNwWzBdLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpLCAmaW50ZXJtTm9kZSkpCisgICAgICAgIGlmICghY29udGV4dC0+ZXhlY3V0ZUlu
aXRpYWxpemVyKCh5eWxzcFstMl0pLCAqKHl5dnNwWy0yXS5sZXgpLnN0cmluZywgKHl5dnNwWy0z
XS5pbnRlcm0udHlwZSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgJmluaXRO
b2RlKSkKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZz
cFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAwOwpAQCAtNDQ4MiwxMyArNDgyNSwx
MyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjQ3OgorICBjYXNlIDI3MjoK
IAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyBjb250ZXh0LT5pbmNyTG9vcE5l
c3RpbmdMZXZlbCgpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDI0ODoKKyAgY2FzZSAyNzM6
CiAKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOwpAQCAtNDQ5OCwx
MyArNDg0MSwxMyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjQ5OgorICBj
YXNlIDI3NDoKIAogICAgIHsgY29udGV4dC0+aW5jckxvb3BOZXN0aW5nTGV2ZWwoKTsgfQogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAyNTA6CisgIGNhc2UgMjc1OgogCiAgICAgewogICAgICAgICBj
b250ZXh0LT5jaGVja0lzU2NhbGFyQm9vbCgoeXlsc3BbMF0pLCAoeXl2c3BbLTJdLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpKTsKQEAgLTQ1MTUsMTMgKzQ4NTgsMTMgQEAgeXlyZWR1Y2U6CiAKICAg
ICBicmVhazsKIAotICBjYXNlIDI1MToKKyAgY2FzZSAyNzY6CiAKICAgICB7IGNvbnRleHQtPnN5
bWJvbFRhYmxlLnB1c2goKTsgY29udGV4dC0+aW5jckxvb3BOZXN0aW5nTGV2ZWwoKTsgfQogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAyNTI6CisgIGNhc2UgMjc3OgogCiAgICAgewogICAgICAgICBj
b250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKQEAgLTQ1MzEsNyArNDg3NCw3IEBAIHl5cmVkdWNl
OgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNTM6CisgIGNhc2UgMjc4OgogCiAgICAgewogICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1O
b2RlKTsKQEAgLTQ1MzksNyArNDg4Miw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAyNTQ6CisgIGNhc2UgMjc5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKTsKQEAgLTQ1NDcsNyArNDg5
MCw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNTU6CisgIGNhc2UgMjgw
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2
c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CkBAIC00NTU1LDcgKzQ4OTgsNyBAQCB5eXJl
ZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjU2OgorICBjYXNlIDI4MToKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gMDsKQEAgLTQ1NjMsNyAr
NDkwNiw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNTc6CisgIGNhc2Ug
MjgyOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWlyKS5ub2RlMSA9ICh5
eXZzcFstMV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CkBAIC00NTcyLDcgKzQ5MTUsNyBAQCB5
eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjU4OgorICBjYXNlIDI4MzoKIAogICAg
IHsKICAgICAgICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTEgPSAoeXl2c3BbLTJdLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpOwpAQCAtNDU4MSw3ICs0OTI0LDcgQEAgeXlyZWR1Y2U6CiAK
ICAgICBicmVhazsKIAotICBjYXNlIDI1OToKKyAgY2FzZSAyODQ6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5hZGRCcmFuY2goRU9wQ29udGlu
dWUsICh5eWxzcFstMV0pKTsKQEAgLTQ1ODksNyArNDkzMiw3IEBAIHl5cmVkdWNlOgogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAyNjA6CisgIGNhc2UgMjg1OgogCiAgICAgewogICAgICAgICAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+YWRkQnJhbmNoKEVPcEJyZWFrLCAoeXls
c3BbLTFdKSk7CkBAIC00NTk3LDcgKzQ5NDAsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMjYxOgorICBjYXNlIDI4NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmFkZEJyYW5jaChFT3BSZXR1cm4sICh5eWxzcFstMV0p
KTsKQEAgLTQ2MDUsNyArNDk0OCw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAyNjI6CisgIGNhc2UgMjg3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVy
bU5vZGUpID0gY29udGV4dC0+YWRkQnJhbmNoKEVPcFJldHVybiwgKHl5dnNwWy0xXS5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0yXSkpOwpAQCAtNDYxMyw3ICs0OTU2LDcgQEAgeXly
ZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDI2MzoKKyAgY2FzZSAyODg6CiAKICAgICB7
CiAgICAgICAgIEZSQUdfT05MWSgiZGlzY2FyZCIsICh5eWxzcFstMV0pKTsKQEAgLTQ2MjIsNyAr
NDk2NSw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNjQ6CisgIGNhc2Ug
Mjg5OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUJsb2NrKSA9IG5ldyBU
SW50ZXJtQmxvY2soKTsKQEAgLTQ2MzMsNyArNDk3Niw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAyNjU6CisgIGNhc2UgMjkwOgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtLmludGVybUJsb2NrKS0+YXBwZW5kU3RhdGVtZW50KCh5eXZzcFswXS5pbnRlcm0uaW50
ZXJtTm9kZSkpOwpAQCAtNDY0MSw3ICs0OTg0LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsK
IAotICBjYXNlIDI2NjoKKyAgY2FzZSAyOTE6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybU5vZGUpOwpAQCAtNDY0OSw3
ICs0OTkyLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDI2NzoKKyAgY2Fz
ZSAyOTI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2
c3BbMF0uaW50ZXJtLmludGVybU5vZGUpOwpAQCAtNDY1NywxOCArNTAwMCwxOCBAQCB5eXJlZHVj
ZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjY4OgorICBjYXNlIDI5MzoKIAogICAgIHsKLSAg
ICAgICAgY29udGV4dC0+cGFyc2VGdW5jdGlvbkRlZmluaXRpb25IZWFkZXIoKHl5bHNwWzBdKSwg
JigoeXl2c3BbMF0uaW50ZXJtKS5mdW5jdGlvbiksICYoeXl2c3BbMF0uaW50ZXJtKS5pbnRlcm1B
Z2dyZWdhdGUpOworICAgICAgICBjb250ZXh0LT5wYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbkhlYWRl
cigoeXlsc3BbMF0pLCAmKCh5eXZzcFswXS5pbnRlcm0pLmZ1bmN0aW9uKSwgJigoeXl2c3BbMF0u
aW50ZXJtKS5pbnRlcm1GdW5jdGlvblByb3RvdHlwZSkpOwogICAgIH0KIAogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMjY5OgorICBjYXNlIDI5NDoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1Ob2RlKSA9IGNvbnRleHQtPmFkZEZ1bmN0aW9uRGVmaW5pdGlvbigqKCh5eXZzcFst
Ml0uaW50ZXJtKS5mdW5jdGlvbiksICh5eXZzcFstMl0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUs
ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtQmxvY2spLCAoeXlsc3BbLTJdKSk7CisgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5hZGRGdW5jdGlvbkRlZmluaXRpb24o
KHl5dnNwWy0yXS5pbnRlcm0pLmludGVybUZ1bmN0aW9uUHJvdG90eXBlLCAoeXl2c3BbMF0uaW50
ZXJtLmludGVybUJsb2NrKSwgKHl5bHNwWy0yXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
Z2xzbGFuZ190YWIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL2dsc2xhbmdfdGFiLmgKaW5kZXggNzRhNTZkYTA0YWYwOTg4MjU3NWVkZGI5MmYyMTM5
MWVhZGU0ODRiNC4uZGVmMDkyMTFhNzY3ZTI1YzY0NjQ4YmZiNmJlOWQwZGJmMzU1ZDI3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
Z2xzbGFuZ190YWIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9nbHNsYW5nX3RhYi5oCkBAIC0zMywxNjMgKzMzLDE4MyBAQAogICAgdmVyc2lv
biAyLjIgb2YgQmlzb24uICAqLwogCiAjaWZuZGVmIFlZX1lZX0dMU0xBTkdfVEFCX0hfSU5DTFVE
RUQKLSMgZGVmaW5lIFlZX1lZX0dMU0xBTkdfVEFCX0hfSU5DTFVERUQKKyNkZWZpbmUgWVlfWVlf
R0xTTEFOR19UQUJfSF9JTkNMVURFRAogLyogRGVidWcgdHJhY2VzLiAgKi8KICNpZm5kZWYgWVlE
RUJVRwotIyBkZWZpbmUgWVlERUJVRyAwCisjZGVmaW5lIFlZREVCVUcgMAogI2VuZGlmCiAjaWYg
WVlERUJVRwogZXh0ZXJuIGludCB5eWRlYnVnOwogI2VuZGlmCiAvKiAiJWNvZGUgcmVxdWlyZXMi
IGJsb2Nrcy4gICovCiAKLQogI2RlZmluZSBZWUxUWVBFIFRTb3VyY2VMb2MKICNkZWZpbmUgWVlM
VFlQRV9JU19ERUNMQVJFRCAxCiAKLQotCiAvKiBUb2tlbiB0eXBlLiAgKi8KICNpZm5kZWYgWVlU
T0tFTlRZUEUKLSMgZGVmaW5lIFlZVE9LRU5UWVBFCi0gIGVudW0geXl0b2tlbnR5cGUKLSAgewot
ICAgIElOVkFSSUFOVCA9IDI1OCwKLSAgICBISUdIX1BSRUNJU0lPTiA9IDI1OSwKLSAgICBNRURJ
VU1fUFJFQ0lTSU9OID0gMjYwLAotICAgIExPV19QUkVDSVNJT04gPSAyNjEsCi0gICAgUFJFQ0lT
SU9OID0gMjYyLAotICAgIEFUVFJJQlVURSA9IDI2MywKLSAgICBDT05TVF9RVUFMID0gMjY0LAot
ICAgIEJPT0xfVFlQRSA9IDI2NSwKLSAgICBGTE9BVF9UWVBFID0gMjY2LAotICAgIElOVF9UWVBF
ID0gMjY3LAotICAgIFVJTlRfVFlQRSA9IDI2OCwKLSAgICBCUkVBSyA9IDI2OSwKLSAgICBDT05U
SU5VRSA9IDI3MCwKLSAgICBETyA9IDI3MSwKLSAgICBFTFNFID0gMjcyLAotICAgIEZPUiA9IDI3
MywKLSAgICBJRiA9IDI3NCwKLSAgICBESVNDQVJEID0gMjc1LAotICAgIFJFVFVSTiA9IDI3NiwK
LSAgICBTV0lUQ0ggPSAyNzcsCi0gICAgQ0FTRSA9IDI3OCwKLSAgICBERUZBVUxUID0gMjc5LAot
ICAgIEJWRUMyID0gMjgwLAotICAgIEJWRUMzID0gMjgxLAotICAgIEJWRUM0ID0gMjgyLAotICAg
IElWRUMyID0gMjgzLAotICAgIElWRUMzID0gMjg0LAotICAgIElWRUM0ID0gMjg1LAotICAgIFZF
QzIgPSAyODYsCi0gICAgVkVDMyA9IDI4NywKLSAgICBWRUM0ID0gMjg4LAotICAgIFVWRUMyID0g
Mjg5LAotICAgIFVWRUMzID0gMjkwLAotICAgIFVWRUM0ID0gMjkxLAotICAgIE1BVFJJWDIgPSAy
OTIsCi0gICAgTUFUUklYMyA9IDI5MywKLSAgICBNQVRSSVg0ID0gMjk0LAotICAgIElOX1FVQUwg
PSAyOTUsCi0gICAgT1VUX1FVQUwgPSAyOTYsCi0gICAgSU5PVVRfUVVBTCA9IDI5NywKLSAgICBV
TklGT1JNID0gMjk4LAotICAgIFZBUllJTkcgPSAyOTksCi0gICAgTUFUUklYMngzID0gMzAwLAot
ICAgIE1BVFJJWDN4MiA9IDMwMSwKLSAgICBNQVRSSVgyeDQgPSAzMDIsCi0gICAgTUFUUklYNHgy
ID0gMzAzLAotICAgIE1BVFJJWDN4NCA9IDMwNCwKLSAgICBNQVRSSVg0eDMgPSAzMDUsCi0gICAg
Q0VOVFJPSUQgPSAzMDYsCi0gICAgRkxBVCA9IDMwNywKLSAgICBTTU9PVEggPSAzMDgsCi0gICAg
U1RSVUNUID0gMzA5LAotICAgIFZPSURfVFlQRSA9IDMxMCwKLSAgICBXSElMRSA9IDMxMSwKLSAg
ICBTQU1QTEVSMkQgPSAzMTIsCi0gICAgU0FNUExFUkNVQkUgPSAzMTMsCi0gICAgU0FNUExFUl9F
WFRFUk5BTF9PRVMgPSAzMTQsCi0gICAgU0FNUExFUjJEUkVDVCA9IDMxNSwKLSAgICBTQU1QTEVS
MkRBUlJBWSA9IDMxNiwKLSAgICBJU0FNUExFUjJEID0gMzE3LAotICAgIElTQU1QTEVSM0QgPSAz
MTgsCi0gICAgSVNBTVBMRVJDVUJFID0gMzE5LAotICAgIElTQU1QTEVSMkRBUlJBWSA9IDMyMCwK
LSAgICBVU0FNUExFUjJEID0gMzIxLAotICAgIFVTQU1QTEVSM0QgPSAzMjIsCi0gICAgVVNBTVBM
RVJDVUJFID0gMzIzLAotICAgIFVTQU1QTEVSMkRBUlJBWSA9IDMyNCwKLSAgICBTQU1QTEVSM0Qg
PSAzMjUsCi0gICAgU0FNUExFUjNEUkVDVCA9IDMyNiwKLSAgICBTQU1QTEVSMkRTSEFET1cgPSAz
MjcsCi0gICAgU0FNUExFUkNVQkVTSEFET1cgPSAzMjgsCi0gICAgU0FNUExFUjJEQVJSQVlTSEFE
T1cgPSAzMjksCi0gICAgTEFZT1VUID0gMzMwLAotICAgIElERU5USUZJRVIgPSAzMzEsCi0gICAg
VFlQRV9OQU1FID0gMzMyLAotICAgIEZMT0FUQ09OU1RBTlQgPSAzMzMsCi0gICAgSU5UQ09OU1RB
TlQgPSAzMzQsCi0gICAgVUlOVENPTlNUQU5UID0gMzM1LAotICAgIEJPT0xDT05TVEFOVCA9IDMz
NiwKLSAgICBGSUVMRF9TRUxFQ1RJT04gPSAzMzcsCi0gICAgTEVGVF9PUCA9IDMzOCwKLSAgICBS
SUdIVF9PUCA9IDMzOSwKLSAgICBJTkNfT1AgPSAzNDAsCi0gICAgREVDX09QID0gMzQxLAotICAg
IExFX09QID0gMzQyLAotICAgIEdFX09QID0gMzQzLAotICAgIEVRX09QID0gMzQ0LAotICAgIE5F
X09QID0gMzQ1LAotICAgIEFORF9PUCA9IDM0NiwKLSAgICBPUl9PUCA9IDM0NywKLSAgICBYT1Jf
T1AgPSAzNDgsCi0gICAgTVVMX0FTU0lHTiA9IDM0OSwKLSAgICBESVZfQVNTSUdOID0gMzUwLAot
ICAgIEFERF9BU1NJR04gPSAzNTEsCi0gICAgTU9EX0FTU0lHTiA9IDM1MiwKLSAgICBMRUZUX0FT
U0lHTiA9IDM1MywKLSAgICBSSUdIVF9BU1NJR04gPSAzNTQsCi0gICAgQU5EX0FTU0lHTiA9IDM1
NSwKLSAgICBYT1JfQVNTSUdOID0gMzU2LAotICAgIE9SX0FTU0lHTiA9IDM1NywKLSAgICBTVUJf
QVNTSUdOID0gMzU4LAotICAgIExFRlRfUEFSRU4gPSAzNTksCi0gICAgUklHSFRfUEFSRU4gPSAz
NjAsCi0gICAgTEVGVF9CUkFDS0VUID0gMzYxLAotICAgIFJJR0hUX0JSQUNLRVQgPSAzNjIsCi0g
ICAgTEVGVF9CUkFDRSA9IDM2MywKLSAgICBSSUdIVF9CUkFDRSA9IDM2NCwKLSAgICBET1QgPSAz
NjUsCi0gICAgQ09NTUEgPSAzNjYsCi0gICAgQ09MT04gPSAzNjcsCi0gICAgRVFVQUwgPSAzNjgs
Ci0gICAgU0VNSUNPTE9OID0gMzY5LAotICAgIEJBTkcgPSAzNzAsCi0gICAgREFTSCA9IDM3MSwK
LSAgICBUSUxERSA9IDM3MiwKLSAgICBQTFVTID0gMzczLAotICAgIFNUQVIgPSAzNzQsCi0gICAg
U0xBU0ggPSAzNzUsCi0gICAgUEVSQ0VOVCA9IDM3NiwKLSAgICBMRUZUX0FOR0xFID0gMzc3LAot
ICAgIFJJR0hUX0FOR0xFID0gMzc4LAotICAgIFZFUlRJQ0FMX0JBUiA9IDM3OSwKLSAgICBDQVJF
VCA9IDM4MCwKLSAgICBBTVBFUlNBTkQgPSAzODEsCi0gICAgUVVFU1RJT04gPSAzODIKLSAgfTsK
KyNkZWZpbmUgWVlUT0tFTlRZUEUKK2VudW0geXl0b2tlbnR5cGUKK3sKKyAgICBJTlZBUklBTlQg
ICAgICAgICAgICAgICAgID0gMjU4LAorICAgIEhJR0hfUFJFQ0lTSU9OICAgICAgICAgICAgPSAy
NTksCisgICAgTUVESVVNX1BSRUNJU0lPTiAgICAgICAgICA9IDI2MCwKKyAgICBMT1dfUFJFQ0lT
SU9OICAgICAgICAgICAgID0gMjYxLAorICAgIFBSRUNJU0lPTiAgICAgICAgICAgICAgICAgPSAy
NjIsCisgICAgQVRUUklCVVRFICAgICAgICAgICAgICAgICA9IDI2MywKKyAgICBDT05TVF9RVUFM
ICAgICAgICAgICAgICAgID0gMjY0LAorICAgIEJPT0xfVFlQRSAgICAgICAgICAgICAgICAgPSAy
NjUsCisgICAgRkxPQVRfVFlQRSAgICAgICAgICAgICAgICA9IDI2NiwKKyAgICBJTlRfVFlQRSAg
ICAgICAgICAgICAgICAgID0gMjY3LAorICAgIFVJTlRfVFlQRSAgICAgICAgICAgICAgICAgPSAy
NjgsCisgICAgQlJFQUsgICAgICAgICAgICAgICAgICAgICA9IDI2OSwKKyAgICBDT05USU5VRSAg
ICAgICAgICAgICAgICAgID0gMjcwLAorICAgIERPICAgICAgICAgICAgICAgICAgICAgICAgPSAy
NzEsCisgICAgRUxTRSAgICAgICAgICAgICAgICAgICAgICA9IDI3MiwKKyAgICBGT1IgICAgICAg
ICAgICAgICAgICAgICAgID0gMjczLAorICAgIElGICAgICAgICAgICAgICAgICAgICAgICAgPSAy
NzQsCisgICAgRElTQ0FSRCAgICAgICAgICAgICAgICAgICA9IDI3NSwKKyAgICBSRVRVUk4gICAg
ICAgICAgICAgICAgICAgID0gMjc2LAorICAgIFNXSVRDSCAgICAgICAgICAgICAgICAgICAgPSAy
NzcsCisgICAgQ0FTRSAgICAgICAgICAgICAgICAgICAgICA9IDI3OCwKKyAgICBERUZBVUxUICAg
ICAgICAgICAgICAgICAgID0gMjc5LAorICAgIEJWRUMyICAgICAgICAgICAgICAgICAgICAgPSAy
ODAsCisgICAgQlZFQzMgICAgICAgICAgICAgICAgICAgICA9IDI4MSwKKyAgICBCVkVDNCAgICAg
ICAgICAgICAgICAgICAgID0gMjgyLAorICAgIElWRUMyICAgICAgICAgICAgICAgICAgICAgPSAy
ODMsCisgICAgSVZFQzMgICAgICAgICAgICAgICAgICAgICA9IDI4NCwKKyAgICBJVkVDNCAgICAg
ICAgICAgICAgICAgICAgID0gMjg1LAorICAgIFZFQzIgICAgICAgICAgICAgICAgICAgICAgPSAy
ODYsCisgICAgVkVDMyAgICAgICAgICAgICAgICAgICAgICA9IDI4NywKKyAgICBWRUM0ICAgICAg
ICAgICAgICAgICAgICAgID0gMjg4LAorICAgIFVWRUMyICAgICAgICAgICAgICAgICAgICAgPSAy
ODksCisgICAgVVZFQzMgICAgICAgICAgICAgICAgICAgICA9IDI5MCwKKyAgICBVVkVDNCAgICAg
ICAgICAgICAgICAgICAgID0gMjkxLAorICAgIE1BVFJJWDIgICAgICAgICAgICAgICAgICAgPSAy
OTIsCisgICAgTUFUUklYMyAgICAgICAgICAgICAgICAgICA9IDI5MywKKyAgICBNQVRSSVg0ICAg
ICAgICAgICAgICAgICAgID0gMjk0LAorICAgIElOX1FVQUwgICAgICAgICAgICAgICAgICAgPSAy
OTUsCisgICAgT1VUX1FVQUwgICAgICAgICAgICAgICAgICA9IDI5NiwKKyAgICBJTk9VVF9RVUFM
ICAgICAgICAgICAgICAgID0gMjk3LAorICAgIFVOSUZPUk0gICAgICAgICAgICAgICAgICAgPSAy
OTgsCisgICAgVkFSWUlORyAgICAgICAgICAgICAgICAgICA9IDI5OSwKKyAgICBNQVRSSVgyeDMg
ICAgICAgICAgICAgICAgID0gMzAwLAorICAgIE1BVFJJWDN4MiAgICAgICAgICAgICAgICAgPSAz
MDEsCisgICAgTUFUUklYMng0ICAgICAgICAgICAgICAgICA9IDMwMiwKKyAgICBNQVRSSVg0eDIg
ICAgICAgICAgICAgICAgID0gMzAzLAorICAgIE1BVFJJWDN4NCAgICAgICAgICAgICAgICAgPSAz
MDQsCisgICAgTUFUUklYNHgzICAgICAgICAgICAgICAgICA9IDMwNSwKKyAgICBDRU5UUk9JRCAg
ICAgICAgICAgICAgICAgID0gMzA2LAorICAgIEZMQVQgICAgICAgICAgICAgICAgICAgICAgPSAz
MDcsCisgICAgU01PT1RIICAgICAgICAgICAgICAgICAgICA9IDMwOCwKKyAgICBSRUFET05MWSAg
ICAgICAgICAgICAgICAgID0gMzA5LAorICAgIFdSSVRFT05MWSAgICAgICAgICAgICAgICAgPSAz
MTAsCisgICAgQ09IRVJFTlQgICAgICAgICAgICAgICAgICA9IDMxMSwKKyAgICBSRVNUUklDVCAg
ICAgICAgICAgICAgICAgID0gMzEyLAorICAgIFZPTEFUSUxFICAgICAgICAgICAgICAgICAgPSAz
MTMsCisgICAgU0hBUkVEICAgICAgICAgICAgICAgICAgICA9IDMxNCwKKyAgICBTVFJVQ1QgICAg
ICAgICAgICAgICAgICAgID0gMzE1LAorICAgIFZPSURfVFlQRSAgICAgICAgICAgICAgICAgPSAz
MTYsCisgICAgV0hJTEUgICAgICAgICAgICAgICAgICAgICA9IDMxNywKKyAgICBTQU1QTEVSMkQg
ICAgICAgICAgICAgICAgID0gMzE4LAorICAgIFNBTVBMRVJDVUJFICAgICAgICAgICAgICAgPSAz
MTksCisgICAgU0FNUExFUl9FWFRFUk5BTF9PRVMgICAgICA9IDMyMCwKKyAgICBTQU1QTEVSMkRS
RUNUICAgICAgICAgICAgID0gMzIxLAorICAgIFNBTVBMRVIyREFSUkFZICAgICAgICAgICAgPSAz
MjIsCisgICAgSVNBTVBMRVIyRCAgICAgICAgICAgICAgICA9IDMyMywKKyAgICBJU0FNUExFUjNE
ICAgICAgICAgICAgICAgID0gMzI0LAorICAgIElTQU1QTEVSQ1VCRSAgICAgICAgICAgICAgPSAz
MjUsCisgICAgSVNBTVBMRVIyREFSUkFZICAgICAgICAgICA9IDMyNiwKKyAgICBVU0FNUExFUjJE
ICAgICAgICAgICAgICAgID0gMzI3LAorICAgIFVTQU1QTEVSM0QgICAgICAgICAgICAgICAgPSAz
MjgsCisgICAgVVNBTVBMRVJDVUJFICAgICAgICAgICAgICA9IDMyOSwKKyAgICBVU0FNUExFUjJE
QVJSQVkgICAgICAgICAgID0gMzMwLAorICAgIFNBTVBMRVIyRE1TICAgICAgICAgICAgICAgPSAz
MzEsCisgICAgSVNBTVBMRVIyRE1TICAgICAgICAgICAgICA9IDMzMiwKKyAgICBVU0FNUExFUjJE
TVMgICAgICAgICAgICAgID0gMzMzLAorICAgIFNBTVBMRVIzRCAgICAgICAgICAgICAgICAgPSAz
MzQsCisgICAgU0FNUExFUjNEUkVDVCAgICAgICAgICAgICA9IDMzNSwKKyAgICBTQU1QTEVSMkRT
SEFET1cgICAgICAgICAgID0gMzM2LAorICAgIFNBTVBMRVJDVUJFU0hBRE9XICAgICAgICAgPSAz
MzcsCisgICAgU0FNUExFUjJEQVJSQVlTSEFET1cgICAgICA9IDMzOCwKKyAgICBTQU1QTEVSRVhU
RVJOQUwyRFkyWUVYVCAgID0gMzM5LAorICAgIElNQUdFMkQgICAgICAgICAgICAgICAgICAgPSAz
NDAsCisgICAgSUlNQUdFMkQgICAgICAgICAgICAgICAgICA9IDM0MSwKKyAgICBVSU1BR0UyRCAg
ICAgICAgICAgICAgICAgID0gMzQyLAorICAgIElNQUdFM0QgICAgICAgICAgICAgICAgICAgPSAz
NDMsCisgICAgSUlNQUdFM0QgICAgICAgICAgICAgICAgICA9IDM0NCwKKyAgICBVSU1BR0UzRCAg
ICAgICAgICAgICAgICAgID0gMzQ1LAorICAgIElNQUdFMkRBUlJBWSAgICAgICAgICAgICAgPSAz
NDYsCisgICAgSUlNQUdFMkRBUlJBWSAgICAgICAgICAgICA9IDM0NywKKyAgICBVSU1BR0UyREFS
UkFZICAgICAgICAgICAgID0gMzQ4LAorICAgIElNQUdFQ1VCRSAgICAgICAgICAgICAgICAgPSAz
NDksCisgICAgSUlNQUdFQ1VCRSAgICAgICAgICAgICAgICA9IDM1MCwKKyAgICBVSU1BR0VDVUJF
ICAgICAgICAgICAgICAgID0gMzUxLAorICAgIExBWU9VVCAgICAgICAgICAgICAgICAgICAgPSAz
NTIsCisgICAgWVVWQ1NDU1RBTkRBUkRFWFQgICAgICAgICA9IDM1MywKKyAgICBZVVZDU0NTVEFO
REFSREVYVENPTlNUQU5UID0gMzU0LAorICAgIElERU5USUZJRVIgICAgICAgICAgICAgICAgPSAz
NTUsCisgICAgVFlQRV9OQU1FICAgICAgICAgICAgICAgICA9IDM1NiwKKyAgICBGTE9BVENPTlNU
QU5UICAgICAgICAgICAgID0gMzU3LAorICAgIElOVENPTlNUQU5UICAgICAgICAgICAgICAgPSAz
NTgsCisgICAgVUlOVENPTlNUQU5UICAgICAgICAgICAgICA9IDM1OSwKKyAgICBCT09MQ09OU1RB
TlQgICAgICAgICAgICAgID0gMzYwLAorICAgIEZJRUxEX1NFTEVDVElPTiAgICAgICAgICAgPSAz
NjEsCisgICAgTEVGVF9PUCAgICAgICAgICAgICAgICAgICA9IDM2MiwKKyAgICBSSUdIVF9PUCAg
ICAgICAgICAgICAgICAgID0gMzYzLAorICAgIElOQ19PUCAgICAgICAgICAgICAgICAgICAgPSAz
NjQsCisgICAgREVDX09QICAgICAgICAgICAgICAgICAgICA9IDM2NSwKKyAgICBMRV9PUCAgICAg
ICAgICAgICAgICAgICAgID0gMzY2LAorICAgIEdFX09QICAgICAgICAgICAgICAgICAgICAgPSAz
NjcsCisgICAgRVFfT1AgICAgICAgICAgICAgICAgICAgICA9IDM2OCwKKyAgICBORV9PUCAgICAg
ICAgICAgICAgICAgICAgID0gMzY5LAorICAgIEFORF9PUCAgICAgICAgICAgICAgICAgICAgPSAz
NzAsCisgICAgT1JfT1AgICAgICAgICAgICAgICAgICAgICA9IDM3MSwKKyAgICBYT1JfT1AgICAg
ICAgICAgICAgICAgICAgID0gMzcyLAorICAgIE1VTF9BU1NJR04gICAgICAgICAgICAgICAgPSAz
NzMsCisgICAgRElWX0FTU0lHTiAgICAgICAgICAgICAgICA9IDM3NCwKKyAgICBBRERfQVNTSUdO
ICAgICAgICAgICAgICAgID0gMzc1LAorICAgIE1PRF9BU1NJR04gICAgICAgICAgICAgICAgPSAz
NzYsCisgICAgTEVGVF9BU1NJR04gICAgICAgICAgICAgICA9IDM3NywKKyAgICBSSUdIVF9BU1NJ
R04gICAgICAgICAgICAgID0gMzc4LAorICAgIEFORF9BU1NJR04gICAgICAgICAgICAgICAgPSAz
NzksCisgICAgWE9SX0FTU0lHTiAgICAgICAgICAgICAgICA9IDM4MCwKKyAgICBPUl9BU1NJR04g
ICAgICAgICAgICAgICAgID0gMzgxLAorICAgIFNVQl9BU1NJR04gICAgICAgICAgICAgICAgPSAz
ODIsCisgICAgTEVGVF9QQVJFTiAgICAgICAgICAgICAgICA9IDM4MywKKyAgICBSSUdIVF9QQVJF
TiAgICAgICAgICAgICAgID0gMzg0LAorICAgIExFRlRfQlJBQ0tFVCAgICAgICAgICAgICAgPSAz
ODUsCisgICAgUklHSFRfQlJBQ0tFVCAgICAgICAgICAgICA9IDM4NiwKKyAgICBMRUZUX0JSQUNF
ICAgICAgICAgICAgICAgID0gMzg3LAorICAgIFJJR0hUX0JSQUNFICAgICAgICAgICAgICAgPSAz
ODgsCisgICAgRE9UICAgICAgICAgICAgICAgICAgICAgICA9IDM4OSwKKyAgICBDT01NQSAgICAg
ICAgICAgICAgICAgICAgID0gMzkwLAorICAgIENPTE9OICAgICAgICAgICAgICAgICAgICAgPSAz
OTEsCisgICAgRVFVQUwgICAgICAgICAgICAgICAgICAgICA9IDM5MiwKKyAgICBTRU1JQ09MT04g
ICAgICAgICAgICAgICAgID0gMzkzLAorICAgIEJBTkcgICAgICAgICAgICAgICAgICAgICAgPSAz
OTQsCisgICAgREFTSCAgICAgICAgICAgICAgICAgICAgICA9IDM5NSwKKyAgICBUSUxERSAgICAg
ICAgICAgICAgICAgICAgID0gMzk2LAorICAgIFBMVVMgICAgICAgICAgICAgICAgICAgICAgPSAz
OTcsCisgICAgU1RBUiAgICAgICAgICAgICAgICAgICAgICA9IDM5OCwKKyAgICBTTEFTSCAgICAg
ICAgICAgICAgICAgICAgID0gMzk5LAorICAgIFBFUkNFTlQgICAgICAgICAgICAgICAgICAgPSA0
MDAsCisgICAgTEVGVF9BTkdMRSAgICAgICAgICAgICAgICA9IDQwMSwKKyAgICBSSUdIVF9BTkdM
RSAgICAgICAgICAgICAgID0gNDAyLAorICAgIFZFUlRJQ0FMX0JBUiAgICAgICAgICAgICAgPSA0
MDMsCisgICAgQ0FSRVQgICAgICAgICAgICAgICAgICAgICA9IDQwNCwKKyAgICBBTVBFUlNBTkQg
ICAgICAgICAgICAgICAgID0gNDA1LAorICAgIFFVRVNUSU9OICAgICAgICAgICAgICAgICAgPSA0
MDYKK307CiAjZW5kaWYKIAogLyogVmFsdWUgdHlwZS4gICovCi0jaWYgISBkZWZpbmVkIFlZU1RZ
UEUgJiYgISBkZWZpbmVkIFlZU1RZUEVfSVNfREVDTEFSRUQKLQotdW5pb24gWVlTVFlQRQotewor
I2lmICFkZWZpbmVkIFlZU1RZUEUgJiYgIWRlZmluZWQgWVlTVFlQRV9JU19ERUNMQVJFRAogCit1
bmlvbiBZWVNUWVBFIHsKIAotICAgIHN0cnVjdCB7CisgICAgc3RydWN0CisgICAgewogICAgICAg
ICB1bmlvbiB7CiAgICAgICAgICAgICBUU3RyaW5nICpzdHJpbmc7CiAgICAgICAgICAgICBmbG9h
dCBmOwpAQCAtMTk3LDE3ICsyMTcsMjIgQEAgdW5pb24gWVlTVFlQRQogICAgICAgICAgICAgdW5z
aWduZWQgaW50IHU7CiAgICAgICAgICAgICBib29sIGI7CiAgICAgICAgIH07Ci0gICAgICAgIFRT
eW1ib2wqIHN5bWJvbDsKKyAgICAgICAgVFN5bWJvbCAqc3ltYm9sOwogICAgIH0gbGV4OwotICAg
IHN0cnVjdCB7CisgICAgc3RydWN0CisgICAgewogICAgICAgICBUT3BlcmF0b3Igb3A7CiAgICAg
ICAgIHVuaW9uIHsKLSAgICAgICAgICAgIFRJbnRlcm1Ob2RlKiBpbnRlcm1Ob2RlOworICAgICAg
ICAgICAgVEludGVybU5vZGUgKmludGVybU5vZGU7CiAgICAgICAgICAgICBUSW50ZXJtTm9kZVBh
aXIgbm9kZVBhaXI7Ci0gICAgICAgICAgICBUSW50ZXJtVHlwZWQqIGludGVybVR5cGVkTm9kZTsK
LSAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUqIGludGVybUFnZ3JlZ2F0ZTsKLSAgICAgICAg
ICAgIFRJbnRlcm1Td2l0Y2gqIGludGVybVN3aXRjaDsKLSAgICAgICAgICAgIFRJbnRlcm1DYXNl
KiBpbnRlcm1DYXNlOworICAgICAgICAgICAgVEludGVybUZ1bmN0aW9uQ2FsbE9yTWV0aG9kIGNh
bGxPck1ldGhvZFBhaXI7CisgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmludGVybVR5cGVkTm9k
ZTsKKyAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmludGVybUFnZ3JlZ2F0ZTsKKyAgICAg
ICAgICAgIFRJbnRlcm1CbG9jayAqaW50ZXJtQmxvY2s7CisgICAgICAgICAgICBUSW50ZXJtRGVj
bGFyYXRpb24gKmludGVybURlY2xhcmF0aW9uOworICAgICAgICAgICAgVEludGVybUZ1bmN0aW9u
UHJvdG90eXBlICppbnRlcm1GdW5jdGlvblByb3RvdHlwZTsKKyAgICAgICAgICAgIFRJbnRlcm1T
d2l0Y2ggKmludGVybVN3aXRjaDsKKyAgICAgICAgICAgIFRJbnRlcm1DYXNlICppbnRlcm1DYXNl
OwogICAgICAgICB9OwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUVHlwZVNwZWNpZmll
ck5vbkFycmF5IHR5cGVTcGVjaWZpZXJOb25BcnJheTsKQEAgLTIxNSwzOSArMjQwLDM1IEBAIHVu
aW9uIFlZU1RZUEUKICAgICAgICAgICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uOwogICAgICAgICAg
ICAgVExheW91dFF1YWxpZmllciBsYXlvdXRRdWFsaWZpZXI7CiAgICAgICAgICAgICBUUXVhbGlm
aWVyIHF1YWxpZmllcjsKLSAgICAgICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb247CisgICAgICAg
ICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uOwogICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTsK
LSAgICAgICAgICAgIFRGaWVsZCogZmllbGQ7Ci0gICAgICAgICAgICBURmllbGRMaXN0KiBmaWVs
ZExpc3Q7CisgICAgICAgICAgICBURmllbGQgKmZpZWxkOworICAgICAgICAgICAgVEZpZWxkTGlz
dCAqZmllbGRMaXN0OwogICAgICAgICAgICAgVFF1YWxpZmllcldyYXBwZXJCYXNlICpxdWFsaWZp
ZXJXcmFwcGVyOwogICAgICAgICAgICAgVFR5cGVRdWFsaWZpZXJCdWlsZGVyICp0eXBlUXVhbGlm
aWVyQnVpbGRlcjsKICAgICAgICAgfTsKICAgICB9IGludGVybTsKLQotCiB9OwogCiB0eXBlZGVm
IHVuaW9uIFlZU1RZUEUgWVlTVFlQRTsKLSMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCi0j
IGRlZmluZSBZWVNUWVBFX0lTX0RFQ0xBUkVEIDEKKyNkZWZpbmUgWVlTVFlQRV9JU19UUklWSUFM
IDEKKyNkZWZpbmUgWVlTVFlQRV9JU19ERUNMQVJFRCAxCiAjZW5kaWYKIAogLyogTG9jYXRpb24g
dHlwZS4gICovCi0jaWYgISBkZWZpbmVkIFlZTFRZUEUgJiYgISBkZWZpbmVkIFlZTFRZUEVfSVNf
REVDTEFSRUQKKyNpZiAhZGVmaW5lZCBZWUxUWVBFICYmICFkZWZpbmVkIFlZTFRZUEVfSVNfREVD
TEFSRUQKIHR5cGVkZWYgc3RydWN0IFlZTFRZUEUgWVlMVFlQRTsKIHN0cnVjdCBZWUxUWVBFCiB7
Ci0gIGludCBmaXJzdF9saW5lOwotICBpbnQgZmlyc3RfY29sdW1uOwotICBpbnQgbGFzdF9saW5l
OwotICBpbnQgbGFzdF9jb2x1bW47CisgICAgaW50IGZpcnN0X2xpbmU7CisgICAgaW50IGZpcnN0
X2NvbHVtbjsKKyAgICBpbnQgbGFzdF9saW5lOworICAgIGludCBsYXN0X2NvbHVtbjsKIH07Ci0j
IGRlZmluZSBZWUxUWVBFX0lTX0RFQ0xBUkVEIDEKLSMgZGVmaW5lIFlZTFRZUEVfSVNfVFJJVklB
TCAxCisjZGVmaW5lIFlZTFRZUEVfSVNfREVDTEFSRUQgMQorI2RlZmluZSBZWUxUWVBFX0lTX1RS
SVZJQUwgMQogI2VuZGlmCiAKLQotCi1pbnQgeXlwYXJzZSAoVFBhcnNlQ29udGV4dCogY29udGV4
dCwgdm9pZCAqc2Nhbm5lcik7CitpbnQgeXlwYXJzZShUUGFyc2VDb250ZXh0ICpjb250ZXh0LCB2
b2lkICpzY2FubmVyKTsKIAogI2VuZGlmIC8qICFZWV9ZWV9HTFNMQU5HX1RBQl9IX0lOQ0xVREVE
ICAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvaW50ZXJtT3V0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL2ludGVybU91dC5jcHAKaW5kZXggMzUyZmRlMzVhNTMxY2QzZWE1NmJh
NWU4ZmQ3ZDg0OTA0ZWRhNTQ4NC4uMmI3MWVmYTBlYWE2MTY0NDNjZjgzNzBmYzU1ODhjNDA2NzJl
ZDAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvaW50ZXJtT3V0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9pbnRlcm1PdXQuY3BwCkBAIC03LDYgKzcsOSBAQAogI2luY2x1
ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtZWRpYXRlLmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogbmFtZXNw
YWNlCiB7CiAKQEAgLTE0LDcgKzE3LDcgQEAgdm9pZCBPdXRwdXRGdW5jdGlvbihUSW5mb1NpbmtC
YXNlICZvdXQsIGNvbnN0IGNoYXIgKnN0ciwgVEZ1bmN0aW9uU3ltYm9sSW5mbyAqaW4KIHsKICAg
ICBjb25zdCBjaGFyICppbnRlcm5hbCA9IGluZm8tPmdldE5hbWVPYmooKS5pc0ludGVybmFsKCkg
PyAiIChpbnRlcm5hbCBmdW5jdGlvbikiIDogIiI7CiAgICAgb3V0IDw8IHN0ciA8PCBpbnRlcm5h
bCA8PCAiOiAiIDw8IGluZm8tPmdldE5hbWVPYmooKS5nZXRTdHJpbmcoKSA8PCAiIChzeW1ib2wg
aWQgIgotICAgICAgICA8PCBpbmZvLT5nZXRJZCgpIDw8ICIpIjsKKyAgICAgICAgPDwgaW5mby0+
Z2V0SWQoKS5nZXQoKSA8PCAiKSI7CiB9CiAKIC8vCkBAIC0zMywxMiArMzYsOCBAQCB2b2lkIE91
dHB1dEZ1bmN0aW9uKFRJbmZvU2lua0Jhc2UgJm91dCwgY29uc3QgY2hhciAqc3RyLCBURnVuY3Rp
b25TeW1ib2xJbmZvICppbgogY2xhc3MgVE91dHB1dFRyYXZlcnNlciA6IHB1YmxpYyBUSW50ZXJt
VHJhdmVyc2VyCiB7CiAgIHB1YmxpYzoKLSAgICBUT3V0cHV0VHJhdmVyc2VyKFRJbmZvU2lua0Jh
c2UgJmkpCi0gICAgICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLAot
ICAgICAgICAgIHNpbmsoaSkKLSAgICB7Ci0gICAgfQotICAgIFRJbmZvU2lua0Jhc2UmIHNpbms7
CisgICAgVE91dHB1dFRyYXZlcnNlcihUSW5mb1NpbmtCYXNlICZpKSA6IFRJbnRlcm1UcmF2ZXJz
ZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwgc2luayhpKSB7fQorICAgIFRJbmZvU2lua0Jhc2UgJnNp
bms7CiAKICAgcHJvdGVjdGVkOgogICAgIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAq
KSBvdmVycmlkZTsKQEAgLTUwLDkgKzQ5LDEyIEBAIGNsYXNzIFRPdXRwdXRUcmF2ZXJzZXIgOiBw
dWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgIGJvb2wgdmlzaXRJZkVsc2UoVmlzaXQgdmlzaXQs
IFRJbnRlcm1JZkVsc2UgKm5vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRTd2l0Y2goVmlz
aXQgdmlzaXQsIFRJbnRlcm1Td2l0Y2ggKm5vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRD
YXNlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQ2FzZSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2
aXNpdEZ1bmN0aW9uUHJvdG90eXBlKFZpc2l0IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25Qcm90b3R5
cGUgKm5vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRGdW5jdGlvbkRlZmluaXRpb24oVmlz
aXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUpIG92ZXJyaWRlOwogICAg
IGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKikgb3Zl
cnJpZGU7CiAgICAgYm9vbCB2aXNpdEJsb2NrKFZpc2l0IHZpc2l0LCBUSW50ZXJtQmxvY2sgKikg
b3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEludmFyaWFudERlY2xhcmF0aW9uKFZpc2l0IHZpc2l0
LCBUSW50ZXJtSW52YXJpYW50RGVjbGFyYXRpb24gKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wg
dmlzaXREZWNsYXJhdGlvbihWaXNpdCB2aXNpdCwgVEludGVybURlY2xhcmF0aW9uICpub2RlKSBv
dmVycmlkZTsKICAgICBib29sIHZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AgKikg
b3ZlcnJpZGU7CiAgICAgYm9vbCB2aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5j
aCAqKSBvdmVycmlkZTsKIH07CkBAIC02NCw3ICs2Niw3IEBAIHZvaWQgT3V0cHV0VHJlZVRleHQo
VEluZm9TaW5rQmFzZSAmc2luaywgVEludGVybU5vZGUgKm5vZGUsIGNvbnN0IGludCBkZXB0aCkK
IHsKICAgICBpbnQgaTsKIAotICAgIHNpbmsubG9jYXRpb24obm9kZS0+Z2V0TGluZSgpKTsKKyAg
ICBzaW5rLmxvY2F0aW9uKG5vZGUtPmdldExpbmUoKS5maXJzdF9maWxlLCBub2RlLT5nZXRMaW5l
KCkuZmlyc3RfbGluZSk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgZGVwdGg7ICsraSkKICAgICAg
ICAgc2luayA8PCAiICAiOwpAQCAtOTMsMTMgKzk1LDE4IEBAIGJvb2wgVE91dHB1dFRyYXZlcnNl
cjo6dmlzaXRTd2l6emxlKFZpc2l0IHZpc2l0LCBUSW50ZXJtU3dpenpsZSAqbm9kZSkKIHsKICAg
ICBUSW5mb1NpbmtCYXNlICZvdXQgPSBzaW5rOwogICAgIE91dHB1dFRyZWVUZXh0KG91dCwgbm9k
ZSwgbURlcHRoKTsKLSAgICBvdXQgPDwgInZlY3RvciBzd2l6emxlIjsKKyAgICBvdXQgPDwgInZl
Y3RvciBzd2l6emxlICgiOworICAgIG5vZGUtPndyaXRlT2Zmc2V0c0FzWFlaVygmb3V0KTsKKyAg
ICBvdXQgPDwgIikiOworCisgICAgb3V0IDw8ICIgKCIgPDwgbm9kZS0+Z2V0Q29tcGxldGVTdHJp
bmcoKSA8PCAiKSI7CisgICAgb3V0IDw8ICJcbiI7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJv
b2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5h
cnkgKm5vZGUpCiB7Ci0gICAgVEluZm9TaW5rQmFzZSYgb3V0ID0gc2luazsKKyAgICBUSW5mb1Np
bmtCYXNlICZvdXQgPSBzaW5rOwogCiAgICAgT3V0cHV0VHJlZVRleHQob3V0LCBub2RlLCBtRGVw
dGgpOwogCkBAIC0yNTYsOCArMjYzLDcgQEAgYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEJp
bmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkKICAgICAvLyBTcGVjaWFsIGhh
bmRsaW5nIGZvciBkaXJlY3QgaW5kZXhlcy4gQmVjYXVzZSBjb25zdGFudAogICAgIC8vIHVuaW9u
cyBhcmUgbm90IGF3YXJlIHRoZXkgYXJlIHN0cnVjdCBpbmRleGVzLCB0cmVhdCB0aGVtCiAgICAg
Ly8gaGVyZSB3aGVyZSB3ZSBoYXZlIHRoYXQgY29udGV4dHVhbCBrbm93bGVkZ2UuCi0gICAgaWYg
KG5vZGUtPmdldE9wKCkgPT0gRU9wSW5kZXhEaXJlY3RTdHJ1Y3QgfHwKLSAgICAgICAgbm9kZS0+
Z2V0T3AoKSA9PSBFT3BJbmRleERpcmVjdEludGVyZmFjZUJsb2NrKQorICAgIGlmIChub2RlLT5n
ZXRPcCgpID09IEVPcEluZGV4RGlyZWN0U3RydWN0IHx8IG5vZGUtPmdldE9wKCkgPT0gRU9wSW5k
ZXhEaXJlY3RJbnRlcmZhY2VCbG9jaykKICAgICB7CiAgICAgICAgIG1EZXB0aCsrOwogICAgICAg
ICBub2RlLT5nZXRMZWZ0KCktPnRyYXZlcnNlKHRoaXMpOwpAQCAtMjY5LDggKzI3NSw4IEBAIGJv
b2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5h
cnkgKm5vZGUpCiAgICAgICAgIE91dHB1dFRyZWVUZXh0KG91dCwgaW50ZXJtQ29uc3RhbnRVbmlv
biwgbURlcHRoICsgMSk7CiAKICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBjb2RlIGZpbmRzIHRo
ZSBmaWVsZCBuYW1lIGZyb20gdGhlIGNvbnN0YW50IHVuaW9uCi0gICAgICAgIGNvbnN0IFRDb25z
dGFudFVuaW9uICpjb25zdGFudFVuaW9uID0gaW50ZXJtQ29uc3RhbnRVbmlvbi0+Z2V0VW5pb25B
cnJheVBvaW50ZXIoKTsKLSAgICAgICAgY29uc3QgVFN0cnVjdHVyZSAqc3RydWN0dXJlID0gbm9k
ZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7CisgICAgICAgIGNvbnN0IFRDb25z
dGFudFVuaW9uICpjb25zdGFudFVuaW9uICAgPSBpbnRlcm1Db25zdGFudFVuaW9uLT5nZXRVbmlv
bkFycmF5UG9pbnRlcigpOworICAgICAgICBjb25zdCBUU3RydWN0dXJlICpzdHJ1Y3R1cmUgICAg
ICAgICAgID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0U3RydWN0KCk7CiAgICAgICAg
IGNvbnN0IFRJbnRlcmZhY2VCbG9jayAqaW50ZXJmYWNlQmxvY2sgPSBub2RlLT5nZXRMZWZ0KCkt
PmdldFR5cGUoKS5nZXRJbnRlcmZhY2VCbG9jaygpOwogICAgICAgICBBU1NFUlQoc3RydWN0dXJl
IHx8IGludGVyZmFjZUJsb2NrKTsKIApAQCAtMjg4LDg2ICsyOTQsNDcgQEAgYm9vbCBUT3V0cHV0
VHJhdmVyc2VyOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkK
IAogYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJt
VW5hcnkgKm5vZGUpCiB7Ci0gICAgVEluZm9TaW5rQmFzZSYgb3V0ID0gc2luazsKKyAgICBUSW5m
b1NpbmtCYXNlICZvdXQgPSBzaW5rOwogCiAgICAgT3V0cHV0VHJlZVRleHQob3V0LCBub2RlLCBt
RGVwdGgpOwogCiAgICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQogICAgIHsKLSAgICAgIGNhc2Ug
RU9wTmVnYXRpdmU6ICAgICAgIG91dCA8PCAiTmVnYXRlIHZhbHVlIjsgICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgRU9wUG9zaXRpdmU6ICAgICAgIG91dCA8PCAiUG9zaXRpdmUgc2lnbiI7ICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wVmVjdG9yTG9naWNhbE5vdDoKLSAgICAgIGNhc2Ug
RU9wTG9naWNhbE5vdDogICAgIG91dCA8PCAiTmVnYXRlIGNvbmRpdGlvbmFsIjsgICBicmVhazsK
LSAgICAgIGNhc2UgRU9wQml0d2lzZU5vdDogICAgIG91dCA8PCAiYml0LXdpc2Ugbm90IjsgICAg
ICAgICBicmVhazsKLQotICAgICAgY2FzZSBFT3BQb3N0SW5jcmVtZW50OiAgb3V0IDw8ICJQb3N0
LUluY3JlbWVudCI7ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BQb3N0RGVjcmVtZW50OiAg
b3V0IDw8ICJQb3N0LURlY3JlbWVudCI7ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BQcmVJ
bmNyZW1lbnQ6ICAgb3V0IDw8ICJQcmUtSW5jcmVtZW50IjsgICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFT3BQcmVEZWNyZW1lbnQ6ICAgb3V0IDw8ICJQcmUtRGVjcmVtZW50IjsgICAgICAgIGJy
ZWFrOwotCi0gICAgICBjYXNlIEVPcFJhZGlhbnM6ICAgICAgICBvdXQgPDwgInJhZGlhbnMiOyAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcERlZ3JlZXM6ICAgICAgICBvdXQgPDwg
ImRlZ3JlZXMiOyAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFNpbjogICAgICAg
ICAgICBvdXQgPDwgInNpbmUiOyAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVP
cENvczogICAgICAgICAgICBvdXQgPDwgImNvc2luZSI7ICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEVPcFRhbjogICAgICAgICAgICBvdXQgPDwgInRhbmdlbnQiOyAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEFzaW46ICAgICAgICAgICBvdXQgPDwgImFyYyBzaW5l
IjsgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEFjb3M6ICAgICAgICAgICBvdXQg
PDwgImFyYyBjb3NpbmUiOyAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEF0YW46ICAg
ICAgICAgICBvdXQgPDwgImFyYyB0YW5nZW50IjsgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNh
c2UgRU9wU2luaDogICAgICAgICAgIG91dCA8PCAiaHlwZXJib2xpYyBzaW5lIjsgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRU9wQ29zaDogICAgICAgICAgIG91dCA8PCAiaHlwZXJib2xpYyBjb3Np
bmUiOyAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wVGFuaDogICAgICAgICAgIG91dCA8PCAiaHlw
ZXJib2xpYyB0YW5nZW50IjsgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQXNpbmg6ICAgICAgICAg
IG91dCA8PCAiYXJjIGh5cGVyYm9saWMgc2luZSI7ICBicmVhazsKLSAgICAgIGNhc2UgRU9wQWNv
c2g6ICAgICAgICAgIG91dCA8PCAiYXJjIGh5cGVyYm9saWMgY29zaW5lIjsgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcEF0YW5oOiAgICAgICAgICBvdXQgPDwgImFyYyBoeXBlcmJvbGljIHRhbmdlbnQi
OyBicmVhazsKLQotICAgICAgY2FzZSBFT3BFeHA6ICAgICAgICAgICAgb3V0IDw8ICJleHAiOyAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BMb2c6ICAgICAgICAgICAgb3V0
IDw8ICJsb2ciOyAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BFeHAyOiAg
ICAgICAgICAgb3V0IDw8ICJleHAyIjsgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BMb2cyOiAgICAgICAgICAgb3V0IDw8ICJsb2cyIjsgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFT3BTcXJ0OiAgICAgICAgICAgb3V0IDw8ICJzcXJ0IjsgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BJbnZlcnNlU3FydDogICAgb3V0IDw8ICJpbnZl
cnNlIHNxcnQiOyAgICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcEFiczogICAgICAgICAg
ICBvdXQgPDwgIkFic29sdXRlIHZhbHVlIjsgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFNp
Z246ICAgICAgICAgICBvdXQgPDwgIlNpZ24iOyAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcEZsb29yOiAgICAgICAgICBvdXQgPDwgIkZsb29yIjsgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIEVPcFRydW5jOiAgICAgICAgICBvdXQgPDwgIlRydW5jYXRlIjsg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFJvdW5kOiAgICAgICAgICBvdXQgPDwg
IlJvdW5kIjsgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFJvdW5kRXZlbjog
ICAgICBvdXQgPDwgIlJvdW5kIGhhbGYgZXZlbiI7ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVP
cENlaWw6ICAgICAgICAgICBvdXQgPDwgIkNlaWxpbmciOyAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEVPcEZyYWN0OiAgICAgICAgICBvdXQgPDwgIkZyYWN0aW9uIjsgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcElzTmFuOiAgICAgICAgICBvdXQgPDwgIklzIG5vdCBh
IG51bWJlciI7ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcElzSW5mOiAgICAgICAgICBvdXQg
PDwgIklzIGluZmluaXR5IjsgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRU9wRmxvYXRC
aXRzVG9JbnQ6IG91dCA8PCAiZmxvYXQgYml0cyB0byBpbnQiOyAgICBicmVhazsKLSAgICAgIGNh
c2UgRU9wRmxvYXRCaXRzVG9VaW50OiBvdXQgPDwgImZsb2F0IGJpdHMgdG8gdWludCI7ICBicmVh
azsKLSAgICAgIGNhc2UgRU9wSW50Qml0c1RvRmxvYXQ6IG91dCA8PCAiaW50IGJpdHMgdG8gZmxv
YXQiOyAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wVWludEJpdHNUb0Zsb2F0OiBvdXQgPDwgInVp
bnQgYml0cyB0byBmbG9hdCI7ICBicmVhazsKLQotICAgICAgY2FzZSBFT3BQYWNrU25vcm0yeDE2
OiAgb3V0IDw8ICJwYWNrIFNub3JtIDJ4MTYiOyAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BQ
YWNrVW5vcm0yeDE2OiAgb3V0IDw8ICJwYWNrIFVub3JtIDJ4MTYiOyAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBFT3BQYWNrSGFsZjJ4MTY6ICAgb3V0IDw8ICJwYWNrIGhhbGYgMngxNiI7ICAgICAg
IGJyZWFrOwotCi0gICAgICBjYXNlIEVPcFVucGFja1Nub3JtMngxNjogb3V0IDw8ICJ1bnBhY2sg
U25vcm0gMngxNiI7ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFVucGFja1Vub3JtMngxNjogb3V0
IDw8ICJ1bnBhY2sgVW5vcm0gMngxNiI7ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFVucGFja0hh
bGYyeDE2OiAgb3V0IDw8ICJ1bnBhY2sgaGFsZiAyeDE2IjsgICAgYnJlYWs7Ci0KLSAgICAgIGNh
c2UgRU9wTGVuZ3RoOiAgICAgICAgIG91dCA8PCAibGVuZ3RoIjsgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRU9wTm9ybWFsaXplOiAgICAgIG91dCA8PCAibm9ybWFsaXplIjsgICAg
ICAgICAgICBicmVhazsKLSAgICAgIC8vIGNhc2UgRU9wRFBkeDogICAgICAgICAgIG91dCA8PCAi
ZFBkeCI7ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgIC8vIGNhc2UgRU9wRFBkeTogICAg
ICAgICAgIG91dCA8PCAiZFBkeSI7ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgIC8vIGNh
c2UgRU9wRndpZHRoOiAgICAgICAgIG91dCA8PCAiZndpZHRoIjsgICAgICAgICAgICAgICBicmVh
azsKLQotICAgICAgY2FzZSBFT3BEZXRlcm1pbmFudDogICAgb3V0IDw8ICJkZXRlcm1pbmFudCI7
ICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BUcmFuc3Bvc2U6ICAgICAgb3V0IDw8ICJ0
cmFuc3Bvc2UiOyAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BJbnZlcnNlOiAgICAg
ICAgb3V0IDw8ICJpbnZlcnNlIjsgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVP
cEFueTogICAgICAgICAgICBvdXQgPDwgImFueSI7ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEVPcEFsbDogICAgICAgICAgICBvdXQgPDwgImFsbCI7ICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIG91dC5wcmVmaXgoRVByZWZpeEVy
cm9yKTsKLSAgICAgICAgb3V0IDw8ICJCYWQgdW5hcnkgb3AiOworICAgICAgICAvLyBHaXZlIHZl
cmJvc2UgbmFtZXMgZm9yIG9wcyB0aGF0IGhhdmUgc3BlY2lhbCBzeW50YXggYW5kIHNvbWUgYnVp
bHQtaW4gZnVuY3Rpb25zIHRoYXQgYXJlCisgICAgICAgIC8vIGVhc3kgdG8gY29uZnVzZSB3aXRo
IG90aGVycywgYnV0IG1vc3RseSB1c2UgR0xTTCBuYW1lcyBmb3IgZnVuY3Rpb25zLgorICAgICAg
ICBjYXNlIEVPcE5lZ2F0aXZlOgorICAgICAgICAgICAgb3V0IDw8ICJOZWdhdGUgdmFsdWUiOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wUG9zaXRpdmU6CisgICAgICAgICAg
ICBvdXQgPDwgIlBvc2l0aXZlIHNpZ24iOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRU9wTG9naWNhbE5vdDoKKyAgICAgICAgICAgIG91dCA8PCAibmVnYXRpb24iOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQml0d2lzZU5vdDoKKyAgICAgICAgICAgIG91
dCA8PCAiYml0LXdpc2Ugbm90IjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
RU9wUG9zdEluY3JlbWVudDoKKyAgICAgICAgICAgIG91dCA8PCAiUG9zdC1JbmNyZW1lbnQiOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wUG9zdERlY3JlbWVudDoKKyAgICAg
ICAgICAgIG91dCA8PCAiUG9zdC1EZWNyZW1lbnQiOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRU9wUHJlSW5jcmVtZW50OgorICAgICAgICAgICAgb3V0IDw8ICJQcmUtSW5jcmVt
ZW50IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcFByZURlY3JlbWVudDoK
KyAgICAgICAgICAgIG91dCA8PCAiUHJlLURlY3JlbWVudCI7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIEVPcExvZ2ljYWxOb3RDb21wb25lbnRXaXNlOgorICAgICAgICAgICAg
b3V0IDw8ICJjb21wb25lbnQtd2lzZSBub3QiOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIG91dCA8PCBHZXRPcGVyYXRvclN0cmluZyhub2RlLT5n
ZXRPcCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIG91dCA8PCAiICgiIDw8
IG5vZGUtPmdldENvbXBsZXRlU3RyaW5nKCkgPDwgIikiOwpAQCAtMzgxLDggKzM0OCwyOCBAQCBi
b29sIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0RnVuY3Rpb25EZWZpbml0aW9uKFZpc2l0IHZpc2l0
LCBUSW50ZXJtRnVuY3Rpb25EZWZpbgogewogICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IHNpbms7
CiAgICAgT3V0cHV0VHJlZVRleHQob3V0LCBub2RlLCBtRGVwdGgpOwotICAgIE91dHB1dEZ1bmN0
aW9uKG91dCwgIkZ1bmN0aW9uIERlZmluaXRpb24iLCBub2RlLT5nZXRGdW5jdGlvblN5bWJvbElu
Zm8oKSk7CisgICAgb3V0IDw8ICJGdW5jdGlvbiBEZWZpbml0aW9uOlxuIjsKKyAgICBvdXQgPDwg
IlxuIjsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNp
dEludmFyaWFudERlY2xhcmF0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtSW52YXJpYW50RGVjbGFy
YXRpb24gKm5vZGUpCit7CisgICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gc2luazsKKyAgICBPdXRw
dXRUcmVlVGV4dChvdXQsIG5vZGUsIG1EZXB0aCk7CisgICAgb3V0IDw8ICJJbnZhcmlhbnQgRGVj
bGFyYXRpb246XG4iOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFRPdXRwdXRUcmF2ZXJz
ZXI6OnZpc2l0RnVuY3Rpb25Qcm90b3R5cGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvblBy
b3RvdHlwZSAqbm9kZSkKK3sKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBzaW5rOworCisgICAg
T3V0cHV0VHJlZVRleHQob3V0LCBub2RlLCBtRGVwdGgpOworICAgIE91dHB1dEZ1bmN0aW9uKG91
dCwgIkZ1bmN0aW9uIFByb3RvdHlwZSIsIG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpKTsK
KyAgICBvdXQgPDwgIiAoIiA8PCBub2RlLT5nZXRDb21wbGV0ZVN0cmluZygpIDw8ICIpIjsKICAg
ICBvdXQgPDwgIlxuIjsKKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zOTQsODkgKzM4MSw3
NSBAQCBib29sIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBU
SW50ZXJtQWdncmVnYXRlICpub2RlKQogCiAgICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wTnVs
bCkKICAgICB7Ci0gICAgICAgIG91dC5wcmVmaXgoRVByZWZpeEVycm9yKTsKKyAgICAgICAgb3V0
LnByZWZpeChTSF9FUlJPUik7CiAgICAgICAgIG91dCA8PCAibm9kZSBpcyBzdGlsbCBFT3BOdWxs
IVxuIjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0KLSAgICBzd2l0Y2ggKG5vZGUt
PmdldE9wKCkpCisgICAgaWYgKG5vZGUtPmlzQ29uc3RydWN0b3IoKSkKKyAgICB7CisgICAgICAg
IGlmIChub2RlLT5nZXRPcCgpID09IEVPcENvbnN0cnVjdFN0cnVjdCkKKyAgICAgICAgeworICAg
ICAgICAgICAgb3V0IDw8ICJDb25zdHJ1Y3Qgc3RydWN0dXJlIjsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAiQ29uc3RydWN0ICIgPDwgR2V0
T3BlcmF0b3JTdHJpbmcobm9kZS0+Z2V0T3AoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxz
ZQogICAgIHsKLSAgICAgIGNhc2UgRU9wRnVuY3Rpb25DYWxsOgotICAgICAgICAgIE91dHB1dEZ1
bmN0aW9uKG91dCwgIkZ1bmN0aW9uIENhbGwiLCBub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8o
KSk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFBhcmFtZXRlcnM6ICAgIG91dCA8
PCAiRnVuY3Rpb24gUGFyYW1ldGVyczogIjsgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BQcm90b3R5cGU6Ci0gICAgICAgICAgT3V0cHV0RnVuY3Rpb24ob3V0LCAiRnVuY3Rpb24g
UHJvdG90eXBlIiwgbm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCkpOwotICAgICAgICAgIGJy
ZWFrOwotCi0gICAgICBjYXNlIEVPcENvbnN0cnVjdEZsb2F0OiBvdXQgPDwgIkNvbnN0cnVjdCBm
bG9hdCI7IGJyZWFrOwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMyOiAgb3V0IDw8ICJDb25z
dHJ1Y3QgdmVjMiI7ICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjMzogIG91dCA8
PCAiQ29uc3RydWN0IHZlYzMiOyAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdFZlYzQ6
ICBvdXQgPDwgIkNvbnN0cnVjdCB2ZWM0IjsgIGJyZWFrOwotICAgICAgY2FzZSBFT3BDb25zdHJ1
Y3RCb29sOiAgb3V0IDw8ICJDb25zdHJ1Y3QgYm9vbCI7ICBicmVhazsKLSAgICAgIGNhc2UgRU9w
Q29uc3RydWN0QlZlYzI6IG91dCA8PCAiQ29uc3RydWN0IGJ2ZWMyIjsgYnJlYWs7Ci0gICAgICBj
YXNlIEVPcENvbnN0cnVjdEJWZWMzOiBvdXQgPDwgIkNvbnN0cnVjdCBidmVjMyI7IGJyZWFrOwot
ICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVjNDogb3V0IDw8ICJDb25zdHJ1Y3QgYnZlYzQiOyBi
cmVhazsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0SW50OiAgIG91dCA8PCAiQ29uc3RydWN0IGlu
dCI7ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWMyOiBvdXQgPDwgIkNvbnN0
cnVjdCBpdmVjMiI7IGJyZWFrOwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RJVmVjMzogb3V0IDw8
ICJDb25zdHJ1Y3QgaXZlYzMiOyBicmVhazsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0SVZlYzQ6
IG91dCA8PCAiQ29uc3RydWN0IGl2ZWM0IjsgYnJlYWs7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVj
dFVJbnQ6ICBvdXQgPDwgIkNvbnN0cnVjdCB1aW50IjsgIGJyZWFrOwotICAgICAgY2FzZSBFT3BD
b25zdHJ1Y3RVVmVjMjogb3V0IDw8ICJDb25zdHJ1Y3QgdXZlYzIiOyBicmVhazsKLSAgICAgIGNh
c2UgRU9wQ29uc3RydWN0VVZlYzM6IG91dCA8PCAiQ29uc3RydWN0IHV2ZWMzIjsgYnJlYWs7Ci0g
ICAgICBjYXNlIEVPcENvbnN0cnVjdFVWZWM0OiBvdXQgPDwgIkNvbnN0cnVjdCB1dmVjNCI7IGJy
ZWFrOwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyOiAgb3V0IDw8ICJDb25zdHJ1Y3QgbWF0
MiI7ICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MngzOiAgb3V0IDw8ICJDb25z
dHJ1Y3QgbWF0MngzIjsgIGJyZWFrOwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyeDQ6ICBv
dXQgPDwgIkNvbnN0cnVjdCBtYXQyeDQiOyAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVj
dE1hdDN4MjogIG91dCA8PCAiQ29uc3RydWN0IG1hdDN4MiI7ICBicmVhazsKLSAgICAgIGNhc2Ug
RU9wQ29uc3RydWN0TWF0MzogIG91dCA8PCAiQ29uc3RydWN0IG1hdDMiOyAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4NDogIG91dCA8PCAiQ29uc3RydWN0IG1hdDN4NCI7ICBi
cmVhazsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NHgyOiAgb3V0IDw8ICJDb25zdHJ1Y3Qg
bWF0NHgyIjsgIGJyZWFrOwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0eDM6ICBvdXQgPDwg
IkNvbnN0cnVjdCBtYXQ0eDMiOyAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDQ6
ICBvdXQgPDwgIkNvbnN0cnVjdCBtYXQ0IjsgIGJyZWFrOwotICAgICAgY2FzZSBFT3BDb25zdHJ1
Y3RTdHJ1Y3Q6ICBvdXQgPDwgIkNvbnN0cnVjdCBzdHJ1Y3R1cmUiOyAgYnJlYWs7Ci0KLSAgICAg
IGNhc2UgRU9wTGVzc1RoYW46ICAgICAgICAgb3V0IDw8ICJDb21wYXJlIExlc3MgVGhhbiI7ICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbjogICAgICBvdXQgPDwg
IkNvbXBhcmUgR3JlYXRlciBUaGFuIjsgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcExl
c3NUaGFuRXF1YWw6ICAgIG91dCA8PCAiQ29tcGFyZSBMZXNzIFRoYW4gb3IgRXF1YWwiOyAgICBi
cmVhazsKLSAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW5FcXVhbDogb3V0IDw8ICJDb21wYXJlIEdy
ZWF0ZXIgVGhhbiBvciBFcXVhbCI7IGJyZWFrOwotICAgICAgY2FzZSBFT3BWZWN0b3JFcXVhbDog
ICAgICBvdXQgPDwgIkVxdWFsIjsgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcFZlY3Rvck5vdEVxdWFsOiAgIG91dCA8PCAiTm90RXF1YWwiOyAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLQotICAgICAgY2FzZSBFT3BNb2Q6ICAgICAgICAgICBvdXQgPDwg
Im1vZCI7ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcE1vZGY6ICAgICAgICAgIG91dCA8
PCAibW9kZiI7ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wUG93OiAgICAgICAgICAgb3V0
IDw8ICJwb3ciOyAgICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcEF0YW46ICAgICAgICAg
IG91dCA8PCAiYXJjIHRhbmdlbnQiOyBicmVhazsKLQotICAgICAgY2FzZSBFT3BNaW46ICAgICAg
ICAgICBvdXQgPDwgIm1pbiI7ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcE1heDogICAg
ICAgICAgIG91dCA8PCAibWF4IjsgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ2xhbXA6
ICAgICAgICAgb3V0IDw8ICJjbGFtcCI7ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BNaXg6
ICAgICAgICAgICBvdXQgPDwgIm1peCI7ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFN0
ZXA6ICAgICAgICAgIG91dCA8PCAic3RlcCI7ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
U21vb3RoU3RlcDogICAgb3V0IDw8ICJzbW9vdGhzdGVwIjsgIGJyZWFrOwotCi0gICAgICBjYXNl
IEVPcERpc3RhbmNlOiAgICAgIG91dCA8PCAiZGlzdGFuY2UiOyAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRU9wRG90OiAgICAgICAgICAgb3V0IDw8ICJkb3QtcHJvZHVjdCI7ICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BDcm9zczogICAgICAgICBvdXQgPDwgImNy
b3NzLXByb2R1Y3QiOyAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEZhY2VGb3J3YXJk
OiAgIG91dCA8PCAiZmFjZS1mb3J3YXJkIjsgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
RU9wUmVmbGVjdDogICAgICAgb3V0IDw8ICJyZWZsZWN0IjsgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFT3BSZWZyYWN0OiAgICAgICBvdXQgPDwgInJlZnJhY3QiOyAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcE11bDogICAgICAgICAgIG91dCA8PCAiY29t
cG9uZW50LXdpc2UgbXVsdGlwbHkiOyBicmVhazsKLQotICAgICAgY2FzZSBFT3BPdXRlclByb2R1
Y3Q6ICBvdXQgPDwgIm91dGVyIHByb2R1Y3QiOyAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcERl
Y2xhcmF0aW9uOiAgIG91dCA8PCAiRGVjbGFyYXRpb246ICI7ICAgYnJlYWs7Ci0gICAgICBjYXNl
IEVPcEludmFyaWFudERlY2xhcmF0aW9uOiBvdXQgPDwgIkludmFyaWFudCBEZWNsYXJhdGlvbjog
IjsgYnJlYWs7Ci0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIG91dC5wcmVmaXgoRVByZWZpeEVy
cm9yKTsKLSAgICAgICAgb3V0IDw8ICJCYWQgYWdncmVnYXRpb24gb3AiOworICAgICAgICAvLyBH
aXZlIHZlcmJvc2UgbmFtZXMgZm9yIHNvbWUgYnVpbHQtaW4gZnVuY3Rpb25zIHRoYXQgYXJlIGVh
c3kgdG8gY29uZnVzZSB3aXRoIG90aGVycywgYnV0CisgICAgICAgIC8vIG1vc3RseSB1c2UgR0xT
TCBuYW1lcyBmb3IgZnVuY3Rpb25zLgorICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgRU9wQ2FsbEZ1bmN0aW9uSW5BU1Q6CisgICAgICAg
ICAgICAgICAgT3V0cHV0RnVuY3Rpb24ob3V0LCAiQ2FsbCBhbiB1c2VyLWRlZmluZWQgZnVuY3Rp
b24iLCBub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIEVPcENhbGxJbnRlcm5hbFJhd0Z1bmN0aW9uOgorICAgICAg
ICAgICAgICAgIE91dHB1dEZ1bmN0aW9uKG91dCwgIkNhbGwgYW4gaW50ZXJuYWwgZnVuY3Rpb24g
d2l0aCByYXcgaW1wbGVtZW50YXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgRU9wQ2FsbEJ1aWx0SW5GdW5jdGlvbjoKKyAgICAgICAgICAgICAg
ICBPdXRwdXRGdW5jdGlvbihvdXQsICJDYWxsIGEgYnVpbHQtaW4gZnVuY3Rpb24iLCBub2RlLT5n
ZXRGdW5jdGlvblN5bWJvbEluZm8oKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgIGNhc2UgRU9wRXF1YWxDb21wb25lbnRXaXNlOgorICAgICAgICAgICAgICAgIG91dCA8
PCAiY29tcG9uZW50LXdpc2UgZXF1YWwiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBFT3BOb3RFcXVhbENvbXBvbmVudFdpc2U6CisgICAgICAgICAgICAgICAgb3V0
IDw8ICJjb21wb25lbnQtd2lzZSBub3QgZXF1YWwiOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBFT3BMZXNzVGhhbkNvbXBvbmVudFdpc2U6CisgICAgICAgICAgICAg
ICAgb3V0IDw8ICJjb21wb25lbnQtd2lzZSBsZXNzIHRoYW4iOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkNvbXBvbmVudFdpc2U6CisgICAg
ICAgICAgICAgICAgb3V0IDw8ICJjb21wb25lbnQtd2lzZSBncmVhdGVyIHRoYW4iOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFsQ29tcG9u
ZW50V2lzZToKKyAgICAgICAgICAgICAgICBvdXQgPDwgImNvbXBvbmVudC13aXNlIGxlc3MgdGhh
biBvciBlcXVhbCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVP
cEdyZWF0ZXJUaGFuRXF1YWxDb21wb25lbnRXaXNlOgorICAgICAgICAgICAgICAgIG91dCA8PCAi
Y29tcG9uZW50LXdpc2UgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIjsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgY2FzZSBFT3BEb3Q6CisgICAgICAgICAgICAgICAgb3V0IDw8
ICJkb3QgcHJvZHVjdCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IEVPcENyb3NzOgorICAgICAgICAgICAgICAgIG91dCA8PCAiY3Jvc3MgcHJvZHVjdCI7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVPcE11bE1hdHJpeENvbXBvbmVu
dFdpc2U6CisgICAgICAgICAgICAgICAgb3V0IDw8ICJjb21wb25lbnQtd2lzZSBtdWx0aXBseSI7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgb3V0IDw8IEdldE9wZXJhdG9yU3RyaW5nKG5vZGUtPmdldE9wKCkpOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG5vZGUtPmdldE9w
KCkgIT0gRU9wUGFyYW1ldGVycykKLSAgICAgICAgb3V0IDw8ICIgKCIgPDwgbm9kZS0+Z2V0Q29t
cGxldGVTdHJpbmcoKSA8PCAiKSI7CisgICAgb3V0IDw8ICIgKCIgPDwgbm9kZS0+Z2V0Q29tcGxl
dGVTdHJpbmcoKSA8PCAiKSI7CiAKICAgICBvdXQgPDwgIlxuIjsKIApAQCAtNDkzLDYgKzQ2Niwx
NiBAQCBib29sIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0QmxvY2soVmlzaXQgdmlzaXQsIFRJbnRl
cm1CbG9jayAqbm9kZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBUT3V0cHV0VHJhdmVy
c2VyOjp2aXNpdERlY2xhcmF0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtRGVjbGFyYXRpb24gKm5v
ZGUpCit7CisgICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gc2luazsKKworICAgIE91dHB1dFRyZWVU
ZXh0KG91dCwgbm9kZSwgbURlcHRoKTsKKyAgICBvdXQgPDwgIkRlY2xhcmF0aW9uXG4iOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRUZXJuYXJ5
KFZpc2l0IHZpc2l0LCBUSW50ZXJtVGVybmFyeSAqbm9kZSkKIHsKICAgICBUSW5mb1NpbmtCYXNl
ICZvdXQgPSBzaW5rOwpAQCAtNjAzLDMwICs1ODYsMzggQEAgdm9pZCBUT3V0cHV0VHJhdmVyc2Vy
Ojp2aXNpdENvbnN0YW50VW5pb24oVEludGVybUNvbnN0YW50VW5pb24gKm5vZGUpCiAgICAgICAg
IE91dHB1dFRyZWVUZXh0KG91dCwgbm9kZSwgbURlcHRoKTsKICAgICAgICAgc3dpdGNoIChub2Rl
LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpW2ldLmdldFR5cGUoKSkKICAgICAgICAgewotICAgICAg
ICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgIGlmIChub2RlLT5nZXRVbmlvbkFycmF5UG9p
bnRlcigpW2ldLmdldEJDb25zdCgpKQotICAgICAgICAgICAgICAgIG91dCA8PCAidHJ1ZSI7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgb3V0IDw8ICJmYWxzZSI7Ci0KLSAgICAg
ICAgICAgIG91dCA8PCAiICgiIDw8ICJjb25zdCBib29sIiA8PCAiKSI7Ci0gICAgICAgICAgICBv
dXQgPDwgIlxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6
Ci0gICAgICAgICAgICBvdXQgPDwgbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVtpXS5nZXRG
Q29uc3QoKTsKLSAgICAgICAgICAgIG91dCA8PCAiIChjb25zdCBmbG9hdClcbiI7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAgIG91dCA8PCBu
b2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpW2ldLmdldElDb25zdCgpOwotICAgICAgICAgICAg
b3V0IDw8ICIgKGNvbnN0IGludClcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBj
YXNlIEVidFVJbnQ6Ci0gICAgICAgICAgICBvdXQgPDwgbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50
ZXIoKVtpXS5nZXRVQ29uc3QoKTsKLSAgICAgICAgICAgIG91dCA8PCAiIChjb25zdCB1aW50KVxu
IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBv
dXQubWVzc2FnZShFUHJlZml4SW50ZXJuYWxFcnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiVW5rbm93
biBjb25zdGFudCIpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVidEJv
b2w6CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKClbaV0u
Z2V0QkNvbnN0KCkpCisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAidHJ1ZSI7CisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBvdXQgPDwgImZhbHNlIjsKKworICAg
ICAgICAgICAgICAgIG91dCA8PCAiICgiCisgICAgICAgICAgICAgICAgICAgIDw8ICJjb25zdCBi
b29sIgorICAgICAgICAgICAgICAgICAgICA8PCAiKSI7CisgICAgICAgICAgICAgICAgb3V0IDw8
ICJcbiI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVidEZsb2F0
OgorICAgICAgICAgICAgICAgIG91dCA8PCBub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpW2ld
LmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgIG91dCA8PCAiIChjb25zdCBmbG9hdClcbiI7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAg
ICAgICAgICAgICBvdXQgPDwgbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVtpXS5nZXRJQ29u
c3QoKTsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiAoY29uc3QgaW50KVxuIjsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAg
ICBvdXQgPDwgbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVtpXS5nZXRVQ29uc3QoKTsKKyAg
ICAgICAgICAgICAgICBvdXQgPDwgIiAoY29uc3QgdWludClcbiI7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIEVidFl1dkNzY1N0YW5kYXJkRVhUOgorICAgICAgICAg
ICAgICAgIG91dCA8PCBnZXRZdXZDc2NTdGFuZGFyZEVYVFN0cmluZygKKyAgICAgICAgICAgICAg
ICAgICAgbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVtpXS5nZXRZdXZDc2NTdGFuZGFyZEVY
VENvbnN0KCkpOworICAgICAgICAgICAgICAgIG91dCA8PCAiIChjb25zdCB5dXZDc2NTdGFuZGFy
ZEVYVClcbiI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIG91dC5wcmVmaXgoU0hfRVJST1IpOworICAgICAgICAgICAgICAgIG91
dCA8PCAiVW5rbm93biBjb25zdGFudFxuIjsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTY4NiwxMSArNjc3LDIxIEBAIGJvb2wgVE91dHB1dFRyYXZlcnNl
cjo6dmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2ggKm5vZGUpCiAKICAgICBz
d2l0Y2ggKG5vZGUtPmdldEZsb3dPcCgpKQogICAgIHsKLSAgICAgIGNhc2UgRU9wS2lsbDogICAg
ICBvdXQgPDwgIkJyYW5jaDogS2lsbCI7ICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
QnJlYWs6ICAgICBvdXQgPDwgIkJyYW5jaDogQnJlYWsiOyAgICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgRU9wQ29udGludWU6ICBvdXQgPDwgIkJyYW5jaDogQ29udGludWUiOyAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRU9wUmV0dXJuOiAgICBvdXQgPDwgIkJyYW5jaDogUmV0dXJuIjsgICAg
ICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6ICAgICAgICAgICBvdXQgPDwgIkJyYW5jaDogVW5r
bm93biBCcmFuY2giOyBicmVhazsKKyAgICAgICAgY2FzZSBFT3BLaWxsOgorICAgICAgICAgICAg
b3V0IDw8ICJCcmFuY2g6IEtpbGwiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RU9wQnJlYWs6CisgICAgICAgICAgICBvdXQgPDwgIkJyYW5jaDogQnJlYWsiOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQ29udGludWU6CisgICAgICAgICAgICBvdXQgPDwg
IkJyYW5jaDogQ29udGludWUiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9w
UmV0dXJuOgorICAgICAgICAgICAgb3V0IDw8ICJCcmFuY2g6IFJldHVybiI7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIG91dCA8PCAiQnJhbmNoOiBV
bmtub3duIEJyYW5jaCI7CisgICAgICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBpZiAobm9k
ZS0+Z2V0RXhwcmVzc2lvbigpKQpAQCAtNzIxLDMgKzcyMiw1IEBAIHZvaWQgVEludGVybWVkaWF0
ZTo6b3V0cHV0VHJlZShUSW50ZXJtTm9kZSAqcm9vdCwgVEluZm9TaW5rQmFzZSAmaW5mb1Npbmsp
CiAKICAgICByb290LT50cmF2ZXJzZSgmaXQpOwogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L2xlbmd0aF9saW1pdHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL2xlbmd0aF9saW1pdHMuaAppbmRleCA4ODYzNDM4MWZhZjVhZGFlMTJlMzVhYmFi
ZDJmNGNkMGQ5OTljYjM2Li5mY2RhNjM5ZDcxYWMzNjdiYmEwZWZmYmU1ZDNkYzBjZjMwNGNhYWJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9sZW5ndGhfbGltaXRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvbGVuZ3RoX2xpbWl0cy5oCkBAIC0xNiw2ICsxNiwxMSBAQAogLy8g
VGhlc2UgY29uc3RhbnRzIGFyZSBmYWN0b3JlZCBvdXQgZnJvbSB0aGUgcmVzdCBvZiB0aGUgaGVh
ZGVycyB0bwogLy8gbWFrZSBpdCBlYXNpZXIgdG8gcmVmZXJlbmNlIHRoZW0gZnJvbSB0aGUgY29t
cGlsZXIgc291cmNlcy4KIAorbmFtZXNwYWNlIHNoCit7CisKIHNpemVfdCBHZXRHbG9iYWxNYXhU
b2tlblNpemUoU2hTaGFkZXJTcGVjIHNwZWMpOwogCi0jZW5kaWYgLy8gQ09NUElMRVJfVFJBTlNM
QVRPUl9MRU5HVEhMSU1JVFNfSF8KK30gIC8vIG5hbWVzcGFjZSBzaAorCisjZW5kaWYgIC8vIENP
TVBJTEVSX1RSQU5TTEFUT1JfTEVOR1RITElNSVRTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3V0aWwuY3BwCmluZGV4IDU4
NGQ2NTM3N2I4ZDliMmUxY2M4NGViYWNhMzYyNDQyYmU1MTdmOGUuLjZhMmY5ZmFhODkwNjRhODYy
YTNkNWMzMWFjMzFiZWY1ZjhjODg0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3V0aWwuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3V0aWwuY3BwCkBAIC04LDE3ICs4LDkg
QEAKIAogI2luY2x1ZGUgPGxpbWl0cz4KIAorI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIK
ICNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvbnVtZXJpY19sZXguaCIKICNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmgiCi0jaW5jbHVkZSAiY29tbW9uL3V0
aWxpdGllcy5oIgotCi1ib29sIHN0cnRvZl9jbGFtcChjb25zdCBzdGQ6OnN0cmluZyAmc3RyLCBm
bG9hdCAqdmFsdWUpCi17Ci0gICAgYm9vbCBzdWNjZXNzID0gcHA6Om51bWVyaWNfbGV4X2Zsb2F0
KHN0ciwgdmFsdWUpOwotICAgIGlmICghc3VjY2VzcykKLSAgICAgICAgKnZhbHVlID0gc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpOwotICAgIHJldHVybiBzdWNjZXNzOwotfQogCiBi
b29sIGF0b2lfY2xhbXAoY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgKnZhbHVlKQogewpA
QCAtMzEsNiArMjMsMTY1IEBAIGJvb2wgYXRvaV9jbGFtcChjb25zdCBjaGFyICpzdHIsIHVuc2ln
bmVkIGludCAqdmFsdWUpCiBuYW1lc3BhY2Ugc2gKIHsKIAorZmxvYXQgTnVtZXJpY0xleEZsb2F0
MzJPdXRPZlJhbmdlVG9JbmZpbml0eShjb25zdCBzdGQ6OnN0cmluZyAmc3RyKQoreworICAgIC8v
IFBhcnNlcyBhIGRlY2ltYWwgc3RyaW5nIHVzaW5nIHNjaWVudGlmaWMgbm90YXRpb24gaW50byBh
IGZsb2F0aW5nIHBvaW50IG51bWJlci4KKyAgICAvLyBPdXQtb2YtcmFuZ2UgdmFsdWVzIGFyZSBj
b252ZXJ0ZWQgdG8gaW5maW5pdHkuIFZhbHVlcyB0aGF0IGFyZSB0b28gc21hbGwgdG8gYmUKKyAg
ICAvLyByZXByZXNlbnRlZCBhcmUgY29udmVydGVkIHRvIHplcm8uCisKKyAgICAvLyBUaGUgbWFu
dGlzc2EgaW4gZGVjaW1hbCBzY2llbnRpZmljIG5vdGF0aW9uLiBUaGUgbWFnbml0dWRlIG9mIHRo
ZSBtYW50aXNzYSBpbnRlZ2VyIGRvZXMgbm90CisgICAgLy8gbWF0dGVyLgorICAgIHVuc2lnbmVk
IGludCBkZWNpbWFsTWFudGlzc2EgPSAwOworICAgIHNpemVfdCBpICAgICAgICAgICAgICAgICAg
ICAgPSAwOworICAgIGJvb2wgZGVjaW1hbFBvaW50U2VlbiAgICAgICAgPSBmYWxzZTsKKyAgICBi
b29sIG5vblplcm9TZWVuSW5NYW50aXNzYSAgID0gZmFsc2U7CisKKyAgICAvLyBUaGUgZXhwb25l
bnQgb2Zmc2V0IHJlZmxlY3RzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZGVjaW1hbCBwb2ludC4KKyAg
ICBpbnQgZXhwb25lbnRPZmZzZXQgPSAtMTsKKyAgICB3aGlsZSAoaSA8IHN0ci5sZW5ndGgoKSkK
KyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIgYyA9IHN0cltpXTsKKyAgICAgICAgaWYgKGMgPT0g
J2UnIHx8IGMgPT0gJ0UnKQorICAgICAgICB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBpZiAoYyA9PSAnLicpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlY2ltYWxQ
b2ludFNlZW4gPSB0cnVlOworICAgICAgICAgICAgKytpOworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBpbnQgZGlnaXQgPSBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBpbnQ+KGMgLSAnMCcpOworICAgICAgICBBU1NFUlQoZGlnaXQgPCAxMHUpOworICAg
ICAgICBpZiAoZGlnaXQgIT0gMHUpCisgICAgICAgIHsKKyAgICAgICAgICAgIG5vblplcm9TZWVu
SW5NYW50aXNzYSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vblplcm9TZWVuSW5N
YW50aXNzYSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gQWRkIGJpdHMgdG8gdGhlIG1hbnRp
c3NhIHVudGlsIHNwYWNlIHJ1bnMgb3V0IGluIDMyLWJpdCBpbnQuIFRoaXMgc2hvdWxkIGJlCisg
ICAgICAgICAgICAvLyBlbm91Z2ggcHJlY2lzaW9uIHRvIG1ha2UgdGhlIHJlc3VsdGluZyBiaW5h
cnkgbWFudGlzc2EgYWNjdXJhdGUgdG8gMSBVTFAuCisgICAgICAgICAgICBpZiAoZGVjaW1hbE1h
bnRpc3NhIDw9IChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGludD46Om1heCgpIC0gOXUp
IC8gMTB1KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlY2ltYWxNYW50aXNzYSA9
IGRlY2ltYWxNYW50aXNzYSAqIDEwdSArIGRpZ2l0OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKCFkZWNpbWFsUG9pbnRTZWVuKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICsrZXhwb25lbnRPZmZzZXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSBpZiAoZGVjaW1hbFBvaW50U2VlbikKKyAgICAgICAgeworICAgICAgICAgICAgLS1leHBvbmVu
dE9mZnNldDsKKyAgICAgICAgfQorICAgICAgICArK2k7CisgICAgfQorICAgIGlmIChkZWNpbWFs
TWFudGlzc2EgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiAwLjBmOworICAgIH0KKyAgICBp
bnQgZXhwb25lbnQgPSAwOworICAgIGlmIChpIDwgc3RyLmxlbmd0aCgpKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHN0cltpXSA9PSAnZScgfHwgc3RyW2ldID09ICdFJyk7CisgICAgICAgICsraTsK
KyAgICAgICAgYm9vbCBleHBvbmVudE91dE9mUmFuZ2UgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBu
ZWdhdGl2ZUV4cG9uZW50ICAgPSBmYWxzZTsKKyAgICAgICAgaWYgKHN0cltpXSA9PSAnLScpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG5lZ2F0aXZlRXhwb25lbnQgPSB0cnVlOworICAgICAgICAg
ICAgKytpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHN0cltpXSA9PSAnKycpCisgICAg
ICAgIHsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoaSA8IHN0
ci5sZW5ndGgoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgY2hhciBjICAgICAgID0g
c3RyW2ldOworICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpZ2l0ID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50PihjIC0gJzAnKTsKKyAgICAgICAgICAgIEFTU0VSVChkaWdpdCA8IDEwdSk7Cisg
ICAgICAgICAgICBpZiAoZXhwb25lbnQgPD0gKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4
KCkgLSA5KSAvIDEwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV4cG9uZW50ID0g
ZXhwb25lbnQgKiAxMCArIGRpZ2l0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGV4cG9uZW50T3V0T2ZSYW5nZSA9IHRydWU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2k7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KG5lZ2F0aXZlRXhwb25lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGV4cG9uZW50ID0gLWV4
cG9uZW50OworICAgICAgICB9CisgICAgICAgIGlmIChleHBvbmVudE91dE9mUmFuZ2UpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChuZWdhdGl2ZUV4cG9uZW50KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHJldHVybiAwLjBmOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6aW5maW5pdHkoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKyAgICAvLyBEbyB0aGUgY2FsY3VsYXRpb24gaW4gNjQtYml0IHRvIGF2b2lkIG92ZXJmbG93
LgorICAgIGxvbmcgbG9uZyBleHBvbmVudExvbmcgPQorICAgICAgICBzdGF0aWNfY2FzdDxsb25n
IGxvbmc+KGV4cG9uZW50KSArIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4oZXhwb25lbnRPZmZzZXQp
OworICAgIGlmIChleHBvbmVudExvbmcgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4
X2V4cG9uZW50MTApCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxm
bG9hdD46OmluZmluaXR5KCk7CisgICAgfQorICAgIGVsc2UgaWYgKGV4cG9uZW50TG9uZyA8IHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptaW5fZXhwb25lbnQxMCkKKyAgICB7CisgICAgICAg
IHJldHVybiAwLjBmOworICAgIH0KKyAgICAvLyBUaGUgZXhwb25lbnQgaXMgaW4gcmFuZ2UsIHNv
IHdlIG5lZWQgdG8gYWN0dWFsbHkgZXZhbHVhdGUgdGhlIGZsb2F0LgorICAgIGV4cG9uZW50ICAg
ICA9IHN0YXRpY19jYXN0PGludD4oZXhwb25lbnRMb25nKTsKKyAgICBkb3VibGUgdmFsdWUgPSBk
ZWNpbWFsTWFudGlzc2E7CisKKyAgICAvLyBDYWxjdWxhdGUgdGhlIGV4cG9uZW50IG9mZnNldCB0
byBub3JtYWxpemUgdGhlIG1hbnRpc3NhLgorICAgIGludCBub3JtYWxpemF0aW9uRXhwb25lbnRP
ZmZzZXQgPSAwOworICAgIHdoaWxlIChkZWNpbWFsTWFudGlzc2EgPj0gMTB1KQorICAgIHsKKyAg
ICAgICAgLS1ub3JtYWxpemF0aW9uRXhwb25lbnRPZmZzZXQ7CisgICAgICAgIGRlY2ltYWxNYW50
aXNzYSAvPSAxMHU7CisgICAgfQorICAgIC8vIEFwcGx5IHRoZSBleHBvbmVudC4KKyAgICB2YWx1
ZSAqPSBzdGQ6OnBvdygxMC4wLCBzdGF0aWNfY2FzdDxkb3VibGU+KGV4cG9uZW50ICsgbm9ybWFs
aXphdGlvbkV4cG9uZW50T2Zmc2V0KSk7CisgICAgaWYgKHZhbHVlID4gc3RhdGljX2Nhc3Q8ZG91
YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOworICAgIH0KKyAg
ICBpZiAodmFsdWUgPCBzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjptaW4oKSkpCisgICAgeworICAgICAgICByZXR1cm4gMC4wZjsKKyAgICB9CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSk7Cit9CisKK2Jvb2wgc3RydG9mX2NsYW1wKGNv
bnN0IHN0ZDo6c3RyaW5nICZzdHIsIGZsb2F0ICp2YWx1ZSkKK3sKKyAgICAvLyBUcnkgdGhlIHN0
YW5kYXJkIGZsb2F0IHBhcnNpbmcgcGF0aCBmaXJzdC4KKyAgICBib29sIHN1Y2Nlc3MgPSBwcDo6
bnVtZXJpY19sZXhfZmxvYXQoc3RyLCB2YWx1ZSk7CisKKyAgICAvLyBJZiB0aGUgc3RhbmRhcmQg
cGF0aCBkb2Vzbid0IHN1Y2NlZWQsIHRha2UgdGhlIHBhdGggdGhhdCBjYW4gaGFuZGxlIHRoZSBm
b2xsb3dpbmcgY29ybmVyCisgICAgLy8gY2FzZXM6CisgICAgLy8gICAxLiBUaGUgZGVjaW1hbCBt
YW50aXNzYSBpcyB2ZXJ5IHNtYWxsIGJ1dCB0aGUgZXhwb25lbnQgaXMgdmVyeSBsYXJnZSwgcHV0
dGluZyB0aGUgcmVzdWx0aW5nCisgICAgLy8gICBudW1iZXIgaW5zaWRlIHRoZSBmbG9hdCByYW5n
ZS4KKyAgICAvLyAgIDIuIFRoZSBkZWNpbWFsIG1hbnRpc3NhIGlzIHZlcnkgbGFyZ2UgYnV0IHRo
ZSBleHBvbmVudCBpcyB2ZXJ5IHNtYWxsLCBwdXR0aW5nIHRoZSByZXN1bHRpbmcKKyAgICAvLyAg
IG51bWJlciBpbnNpZGUgdGhlIGZsb2F0IHJhbmdlLgorICAgIC8vICAgMy4gVGhlIHZhbHVlIGlz
IG91dC1vZi1yYW5nZSBhbmQgc2hvdWxkIGJlIGV2YWx1YXRlZCBhcyBpbmZpbml0eS4KKyAgICAv
LyAgIDQuIFRoZSB2YWx1ZSBpcyB0b28gc21hbGwgYW5kIHNob3VsZCBiZSBldmFsdWF0ZWQgYXMg
emVyby4KKyAgICAvLyBTZWUgRVNTTCAzLjAwLjYgc2VjdGlvbiA0LjEuNCBmb3IgdGhlIHJlbGV2
YW50IHNwZWNpZmljYXRpb24uCisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICAqdmFsdWUgPSBO
dW1lcmljTGV4RmxvYXQzMk91dE9mUmFuZ2VUb0luZmluaXR5KHN0cik7CisgICAgcmV0dXJuICFn
bDo6aXNJbmYoKnZhbHVlKTsKK30KKwogR0xlbnVtIEdMVmFyaWFibGVUeXBlKGNvbnN0IFRUeXBl
ICZ0eXBlKQogewogICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidEZsb2F0KQpAQCAt
NDMsNDcgKzE5NCw2NSBAQCBHTGVudW0gR0xWYXJpYWJsZVR5cGUoY29uc3QgVFR5cGUgJnR5cGUp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHN3aXRjaCAodHlwZS5nZXROb21pbmFsU2l6ZSgpKQog
ICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIDI6IHJldHVybiBHTF9GTE9BVF9WRUMy
OwotICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiBHTF9GTE9BVF9WRUMzOwotICAgICAgICAg
ICAgICBjYXNlIDQ6IHJldHVybiBHTF9GTE9BVF9WRUM0OwotICAgICAgICAgICAgICBkZWZhdWx0
OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEdMX0ZMT0FUX1ZFQzI7CisgICAgICAgICAgICAgICAgY2FzZSAzOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gR0xfRkxPQVRfVkVDMzsKKyAgICAgICAgICAgICAgICBj
YXNlIDQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9GTE9BVF9WRUM0OworICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAodHlwZS5pc01hdHJpeCgp
KQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0Q29scygpKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICAgICAgc3dpdGNoICh0
eXBlLmdldFJvd3MoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBjYXNl
IDI6IHJldHVybiBHTF9GTE9BVF9NQVQyOwotICAgICAgICAgICAgICAgICAgY2FzZSAzOiByZXR1
cm4gR0xfRkxPQVRfTUFUMngzOwotICAgICAgICAgICAgICAgICAgY2FzZSA0OiByZXR1cm4gR0xf
RkxPQVRfTUFUMng0OwotICAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsK
LSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAg
ICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0Um93cygpKQorICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEdMX0ZMT0FUX01BVDI7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUX01BVDJ4MzsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gR0xfRkxPQVRfTUFUMng0OworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgICAgIHN3
aXRjaCAodHlwZS5nZXRSb3dzKCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgY2FzZSAyOiByZXR1cm4gR0xfRkxPQVRfTUFUM3gyOwotICAgICAgICAgICAgICAgICAgY2Fz
ZSAzOiByZXR1cm4gR0xfRkxPQVRfTUFUMzsKLSAgICAgICAgICAgICAgICAgIGNhc2UgNDogcmV0
dXJuIEdMX0ZMT0FUX01BVDN4NDsKLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hB
QkxFKCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlLmdldFJvd3MoKSkKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBHTF9GTE9BVF9NQVQzeDI7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUX01B
VDM7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUX01BVDN4NDsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAg
ICAgICBzd2l0Y2ggKHR5cGUuZ2V0Um93cygpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgIGNhc2UgMjogcmV0dXJuIEdMX0ZMT0FUX01BVDR4MjsKLSAgICAgICAgICAgICAg
ICAgIGNhc2UgMzogcmV0dXJuIEdMX0ZMT0FUX01BVDR4MzsKLSAgICAgICAgICAgICAgICAgIGNh
c2UgNDogcmV0dXJuIEdMX0ZMT0FUX01BVDQ7Ci0gICAgICAgICAgICAgICAgICBkZWZhdWx0OiBV
TlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIDQ6
CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZS5nZXRSb3dzKCkpCisgICAgICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gR0xfRkxPQVRfTUFUNHgyOworICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9G
TE9BVF9NQVQ0eDM7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUX01BVDQ7CisgICAgICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJF
QUNIQUJMRSgpOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBV
TlJFQUNIQUJMRSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwog
ICAgIH0KICAgICBlbHNlIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidEludCkKICAgICB7
CkBAIC05NSwxMyArMjY0LDE4IEBAIEdMZW51bSBHTFZhcmlhYmxlVHlwZShjb25zdCBUVHlwZSAm
dHlwZSkKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoICh0eXBlLmdldE5vbWluYWxTaXpl
KCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIEdMX0lOVF9W
RUMyOwotICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiBHTF9JTlRfVkVDMzsKLSAgICAgICAg
ICAgICAgY2FzZSA0OiByZXR1cm4gR0xfSU5UX1ZFQzQ7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gR0xfSU5UX1ZFQzI7CisgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gR0xfSU5UX1ZFQzM7CisgICAgICAgICAgICAgICAgY2FzZSA0
OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfSU5UX1ZFQzQ7CisgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQogICAgIGVsc2UgaWYgKHR5cGUu
Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0VUludCkKICAgICB7CkBAIC0xMTMsMTMgKzI4NywxOCBAQCBH
TGVudW0gR0xWYXJpYWJsZVR5cGUoY29uc3QgVFR5cGUgJnR5cGUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHN3aXRjaCAodHlwZS5nZXROb21pbmFsU2l6ZSgpKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICBjYXNlIDI6IHJldHVybiBHTF9VTlNJR05FRF9JTlRfVkVDMjsKLSAgICAgICAg
ICAgICAgY2FzZSAzOiByZXR1cm4gR0xfVU5TSUdORURfSU5UX1ZFQzM7Ci0gICAgICAgICAgICAg
IGNhc2UgNDogcmV0dXJuIEdMX1VOU0lHTkVEX0lOVF9WRUM0OwotICAgICAgICAgICAgICBkZWZh
dWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX0lOVF9WRUMyOworICAgICAgICAgICAgICAgIGNh
c2UgMzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX0lOVF9WRUMzOwor
ICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX1VO
U0lHTkVEX0lOVF9WRUM0OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAg
ZWxzZSBVTlJFQUNIQUJMRSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOwogICAgIH0KICAgICBlbHNlIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidEJvb2wp
CiAgICAgewpAQCAtMTMxLDM1ICszMTAsOTAgQEAgR0xlbnVtIEdMVmFyaWFibGVUeXBlKGNvbnN0
IFRUeXBlICZ0eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0Tm9t
aW5hbFNpemUoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4g
R0xfQk9PTF9WRUMyOwotICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiBHTF9CT09MX1ZFQzM7
Ci0gICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIEdMX0JPT0xfVkVDNDsKLSAgICAgICAgICAg
ICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHTF9CT09MX1ZFQzI7CisgICAgICAgICAgICAgICAgY2Fz
ZSAzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfQk9PTF9WRUMzOworICAgICAgICAg
ICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0JPT0xfVkVDNDsK
KyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9CiAKICAg
ICBzd2l0Y2ggKHR5cGUuZ2V0QmFzaWNUeXBlKCkpCiAgICAgewotICAgICAgY2FzZSBFYnRTYW1w
bGVyMkQ6ICAgICAgICAgICAgcmV0dXJuIEdMX1NBTVBMRVJfMkQ7Ci0gICAgICBjYXNlIEVidFNh
bXBsZXIzRDogICAgICAgICAgICByZXR1cm4gR0xfU0FNUExFUl8zRDsKLSAgICAgIGNhc2UgRWJ0
U2FtcGxlckN1YmU6ICAgICAgICAgIHJldHVybiBHTF9TQU1QTEVSX0NVQkU7Ci0gICAgICBjYXNl
IEVidFNhbXBsZXJFeHRlcm5hbE9FUzogICByZXR1cm4gR0xfU0FNUExFUl9FWFRFUk5BTF9PRVM7
Ci0gICAgICBjYXNlIEVidFNhbXBsZXIyRFJlY3Q6ICAgICAgICByZXR1cm4gR0xfU0FNUExFUl8y
RF9SRUNUX0FSQjsKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6ICAgICAgIHJldHVybiBH
TF9TQU1QTEVSXzJEX0FSUkFZOwotICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEOiAgICAgICAgICAg
cmV0dXJuIEdMX0lOVF9TQU1QTEVSXzJEOwotICAgICAgY2FzZSBFYnRJU2FtcGxlcjNEOiAgICAg
ICAgICAgcmV0dXJuIEdMX0lOVF9TQU1QTEVSXzNEOwotICAgICAgY2FzZSBFYnRJU2FtcGxlckN1
YmU6ICAgICAgICAgcmV0dXJuIEdMX0lOVF9TQU1QTEVSX0NVQkU7Ci0gICAgICBjYXNlIEVidElT
YW1wbGVyMkRBcnJheTogICAgICByZXR1cm4gR0xfSU5UX1NBTVBMRVJfMkRfQVJSQVk7Ci0gICAg
ICBjYXNlIEVidFVTYW1wbGVyMkQ6ICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfSU5UX1NB
TVBMRVJfMkQ7Ci0gICAgICBjYXNlIEVidFVTYW1wbGVyM0Q6ICAgICAgICAgICByZXR1cm4gR0xf
VU5TSUdORURfSU5UX1NBTVBMRVJfM0Q7Ci0gICAgICBjYXNlIEVidFVTYW1wbGVyQ3ViZTogICAg
ICAgICByZXR1cm4gR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfQ1VCRTsKLSAgICAgIGNhc2UgRWJ0
VVNhbXBsZXIyREFycmF5OiAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8yRF9B
UlJBWTsKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEU2hhZG93OiAgICAgIHJldHVybiBHTF9TQU1Q
TEVSXzJEX1NIQURPVzsKLSAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmVTaGFkb3c6ICAgIHJldHVy
biBHTF9TQU1QTEVSX0NVQkVfU0hBRE9XOwotICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheVNo
YWRvdzogcmV0dXJuIEdMX1NBTVBMRVJfMkRfQVJSQVlfU0hBRE9XOwotICAgICAgZGVmYXVsdDog
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6CisgICAgICAgICAgICBy
ZXR1cm4gR0xfU0FNUExFUl8yRDsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6CisgICAgICAg
ICAgICByZXR1cm4gR0xfU0FNUExFUl8zRDsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZToK
KyAgICAgICAgICAgIHJldHVybiBHTF9TQU1QTEVSX0NVQkU7CisgICAgICAgIGNhc2UgRWJ0U2Ft
cGxlckV4dGVybmFsT0VTOgorICAgICAgICAgICAgcmV0dXJuIEdMX1NBTVBMRVJfRVhURVJOQUxf
T0VTOworICAgICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbDJEWTJZRVhUOgorICAgICAgICAg
ICAgcmV0dXJuIEdMX1NBTVBMRVJfRVhURVJOQUxfMkRfWTJZX0VYVDsKKyAgICAgICAgY2FzZSBF
YnRTYW1wbGVyMkRSZWN0OgorICAgICAgICAgICAgcmV0dXJuIEdMX1NBTVBMRVJfMkRfUkVDVF9B
UkI7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6CisgICAgICAgICAgICByZXR1cm4g
R0xfU0FNUExFUl8yRF9BUlJBWTsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRNUzoKKyAgICAg
ICAgICAgIHJldHVybiBHTF9TQU1QTEVSXzJEX01VTFRJU0FNUExFOworICAgICAgICBjYXNlIEVi
dElTYW1wbGVyMkQ6CisgICAgICAgICAgICByZXR1cm4gR0xfSU5UX1NBTVBMRVJfMkQ7CisgICAg
ICAgIGNhc2UgRWJ0SVNhbXBsZXIzRDoKKyAgICAgICAgICAgIHJldHVybiBHTF9JTlRfU0FNUExF
Ul8zRDsKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlckN1YmU6CisgICAgICAgICAgICByZXR1cm4g
R0xfSU5UX1NBTVBMRVJfQ1VCRTsKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEQXJyYXk6Cisg
ICAgICAgICAgICByZXR1cm4gR0xfSU5UX1NBTVBMRVJfMkRfQVJSQVk7CisgICAgICAgIGNhc2Ug
RWJ0SVNhbXBsZXIyRE1TOgorICAgICAgICAgICAgcmV0dXJuIEdMX0lOVF9TQU1QTEVSXzJEX01V
TFRJU0FNUExFOworICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkQ6CisgICAgICAgICAgICByZXR1
cm4gR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfMkQ7CisgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIz
RDoKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8zRDsKKyAgICAg
ICAgY2FzZSBFYnRVU2FtcGxlckN1YmU6CisgICAgICAgICAgICByZXR1cm4gR0xfVU5TSUdORURf
SU5UX1NBTVBMRVJfQ1VCRTsKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEQXJyYXk6CisgICAg
ICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfMkRfQVJSQVk7CisgICAgICAg
IGNhc2UgRWJ0VVNhbXBsZXIyRE1TOgorICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX0lO
VF9TQU1QTEVSXzJEX01VTFRJU0FNUExFOworICAgICAgICBjYXNlIEVidFNhbXBsZXIyRFNoYWRv
dzoKKyAgICAgICAgICAgIHJldHVybiBHTF9TQU1QTEVSXzJEX1NIQURPVzsKKyAgICAgICAgY2Fz
ZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzoKKyAgICAgICAgICAgIHJldHVybiBHTF9TQU1QTEVSX0NV
QkVfU0hBRE9XOworICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5U2hhZG93OgorICAgICAg
ICAgICAgcmV0dXJuIEdMX1NBTVBMRVJfMkRfQVJSQVlfU0hBRE9XOworICAgICAgICBjYXNlIEVi
dEltYWdlMkQ6CisgICAgICAgICAgICByZXR1cm4gR0xfSU1BR0VfMkQ7CisgICAgICAgIGNhc2Ug
RWJ0SUltYWdlMkQ6CisgICAgICAgICAgICByZXR1cm4gR0xfSU5UX0lNQUdFXzJEOworICAgICAg
ICBjYXNlIEVidFVJbWFnZTJEOgorICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX0lOVF9J
TUFHRV8yRDsKKyAgICAgICAgY2FzZSBFYnRJbWFnZTJEQXJyYXk6CisgICAgICAgICAgICByZXR1
cm4gR0xfSU1BR0VfMkRfQVJSQVk7CisgICAgICAgIGNhc2UgRWJ0SUltYWdlMkRBcnJheToKKyAg
ICAgICAgICAgIHJldHVybiBHTF9JTlRfSU1BR0VfMkRfQVJSQVk7CisgICAgICAgIGNhc2UgRWJ0
VUltYWdlMkRBcnJheToKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlRfSU1BR0Vf
MkRfQVJSQVk7CisgICAgICAgIGNhc2UgRWJ0SW1hZ2UzRDoKKyAgICAgICAgICAgIHJldHVybiBH
TF9JTUFHRV8zRDsKKyAgICAgICAgY2FzZSBFYnRJSW1hZ2UzRDoKKyAgICAgICAgICAgIHJldHVy
biBHTF9JTlRfSU1BR0VfM0Q7CisgICAgICAgIGNhc2UgRWJ0VUltYWdlM0Q6CisgICAgICAgICAg
ICByZXR1cm4gR0xfVU5TSUdORURfSU5UX0lNQUdFXzNEOworICAgICAgICBjYXNlIEVidEltYWdl
Q3ViZToKKyAgICAgICAgICAgIHJldHVybiBHTF9JTUFHRV9DVUJFOworICAgICAgICBjYXNlIEVi
dElJbWFnZUN1YmU6CisgICAgICAgICAgICByZXR1cm4gR0xfSU5UX0lNQUdFX0NVQkU7CisgICAg
ICAgIGNhc2UgRWJ0VUltYWdlQ3ViZToKKyAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9J
TlRfSU1BR0VfQ1VCRTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CiAgICAgfQogCiAgICAgcmV0dXJuIEdMX05PTkU7CkBAIC0xNzEsMzIgKzQwNSwzMiBAQCBH
TGVudW0gR0xWYXJpYWJsZVByZWNpc2lvbihjb25zdCBUVHlwZSAmdHlwZSkKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAodHlwZS5nZXRQcmVjaXNpb24oKSkKICAgICAgICAgewotICAgICAgICAgIGNh
c2UgRWJwSGlnaDoKLSAgICAgICAgICAgIHJldHVybiBHTF9ISUdIX0ZMT0FUOwotICAgICAgICAg
IGNhc2UgRWJwTWVkaXVtOgotICAgICAgICAgICAgcmV0dXJuIEdMX01FRElVTV9GTE9BVDsKLSAg
ICAgICAgICBjYXNlIEVicExvdzoKLSAgICAgICAgICAgIHJldHVybiBHTF9MT1dfRkxPQVQ7Ci0g
ICAgICAgICAgY2FzZSBFYnBVbmRlZmluZWQ6Ci0gICAgICAgICAgLy8gU2hvdWxkIGJlIGRlZmlu
ZWQgYXMgdGhlIGRlZmF1bHQgcHJlY2lzaW9uIGJ5IHRoZSBwYXJzZXIKLSAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGNhc2UgRWJwSGln
aDoKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xfSElHSF9GTE9BVDsKKyAgICAgICAgICAgIGNh
c2UgRWJwTWVkaXVtOgorICAgICAgICAgICAgICAgIHJldHVybiBHTF9NRURJVU1fRkxPQVQ7Cisg
ICAgICAgICAgICBjYXNlIEVicExvdzoKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xfTE9XX0ZM
T0FUOworICAgICAgICAgICAgY2FzZSBFYnBVbmRlZmluZWQ6CisgICAgICAgICAgICAvLyBTaG91
bGQgYmUgZGVmaW5lZCBhcyB0aGUgZGVmYXVsdCBwcmVjaXNpb24gYnkgdGhlIHBhcnNlcgorICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAg
ICB9CiAgICAgfQogICAgIGVsc2UgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50IHx8
IHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0VUludCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAo
dHlwZS5nZXRQcmVjaXNpb24oKSkKICAgICAgICAgewotICAgICAgICAgIGNhc2UgRWJwSGlnaDoK
LSAgICAgICAgICAgIHJldHVybiBHTF9ISUdIX0lOVDsKLSAgICAgICAgICBjYXNlIEVicE1lZGl1
bToKLSAgICAgICAgICAgIHJldHVybiBHTF9NRURJVU1fSU5UOwotICAgICAgICAgIGNhc2UgRWJw
TG93OgotICAgICAgICAgICAgcmV0dXJuIEdMX0xPV19JTlQ7Ci0gICAgICAgICAgY2FzZSBFYnBV
bmRlZmluZWQ6Ci0gICAgICAgICAgLy8gU2hvdWxkIGJlIGRlZmluZWQgYXMgdGhlIGRlZmF1bHQg
cHJlY2lzaW9uIGJ5IHRoZSBwYXJzZXIKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGNhc2UgRWJwSGlnaDoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gR0xfSElHSF9JTlQ7CisgICAgICAgICAgICBjYXNlIEVicE1lZGl1bToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gR0xfTUVESVVNX0lOVDsKKyAgICAgICAgICAgIGNhc2UgRWJwTG93
OgorICAgICAgICAgICAgICAgIHJldHVybiBHTF9MT1dfSU5UOworICAgICAgICAgICAgY2FzZSBF
YnBVbmRlZmluZWQ6CisgICAgICAgICAgICAvLyBTaG91bGQgYmUgZGVmaW5lZCBhcyB0aGUgZGVm
YXVsdCBwcmVjaXNpb24gYnkgdGhlIHBhcnNlcgorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMTgsMTQg
KzQ1MiwxNSBAQCBib29sIElzVmFyeWluZ091dChUUXVhbGlmaWVyIHF1YWxpZmllcikKIHsKICAg
ICBzd2l0Y2ggKHF1YWxpZmllcikKICAgICB7Ci0gICAgICBjYXNlIEV2cVZhcnlpbmdPdXQ6Ci0g
ICAgICBjYXNlIEV2cVNtb290aE91dDoKLSAgICAgIGNhc2UgRXZxRmxhdE91dDoKLSAgICAgIGNh
c2UgRXZxQ2VudHJvaWRPdXQ6Ci0gICAgICBjYXNlIEV2cVZlcnRleE91dDoKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAgICAgICBjYXNlIEV2cVZhcnlp
bmdPdXQ6CisgICAgICAgIGNhc2UgRXZxU21vb3RoT3V0OgorICAgICAgICBjYXNlIEV2cUZsYXRP
dXQ6CisgICAgICAgIGNhc2UgRXZxQ2VudHJvaWRPdXQ6CisgICAgICAgIGNhc2UgRXZxVmVydGV4
T3V0OgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKQEAgLTIzNSwxNCArNDcw
LDE1IEBAIGJvb2wgSXNWYXJ5aW5nSW4oVFF1YWxpZmllciBxdWFsaWZpZXIpCiB7CiAgICAgc3dp
dGNoIChxdWFsaWZpZXIpCiAgICAgewotICAgICAgY2FzZSBFdnFWYXJ5aW5nSW46Ci0gICAgICBj
YXNlIEV2cVNtb290aEluOgotICAgICAgY2FzZSBFdnFGbGF0SW46Ci0gICAgICBjYXNlIEV2cUNl
bnRyb2lkSW46Ci0gICAgICBjYXNlIEV2cUZyYWdtZW50SW46Ci0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgICBkZWZhdWx0OiBicmVhazsKKyAgICAgICAgY2FzZSBFdnFWYXJ5aW5nSW46Cisg
ICAgICAgIGNhc2UgRXZxU21vb3RoSW46CisgICAgICAgIGNhc2UgRXZxRmxhdEluOgorICAgICAg
ICBjYXNlIEV2cUNlbnRyb2lkSW46CisgICAgICAgIGNhc2UgRXZxRnJhZ21lbnRJbjoKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVh
azsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNTcsNDYgKzQ5MywyNiBAQCBJbnRl
cnBvbGF0aW9uVHlwZSBHZXRJbnRlcnBvbGF0aW9uVHlwZShUUXVhbGlmaWVyIHF1YWxpZmllcikK
IHsKICAgICBzd2l0Y2ggKHF1YWxpZmllcikKICAgICB7Ci0gICAgICBjYXNlIEV2cUZsYXRJbjoK
LSAgICAgIGNhc2UgRXZxRmxhdE91dDoKLSAgICAgICAgcmV0dXJuIElOVEVSUE9MQVRJT05fRkxB
VDsKLQotICAgICAgY2FzZSBFdnFTbW9vdGhJbjoKLSAgICAgIGNhc2UgRXZxU21vb3RoT3V0Ogot
ICAgICAgY2FzZSBFdnFWZXJ0ZXhPdXQ6Ci0gICAgICBjYXNlIEV2cUZyYWdtZW50SW46Ci0gICAg
ICBjYXNlIEV2cVZhcnlpbmdJbjoKLSAgICAgIGNhc2UgRXZxVmFyeWluZ091dDoKLSAgICAgICAg
cmV0dXJuIElOVEVSUE9MQVRJT05fU01PT1RIOwotCi0gICAgICBjYXNlIEV2cUNlbnRyb2lkSW46
Ci0gICAgICBjYXNlIEV2cUNlbnRyb2lkT3V0OgotICAgICAgICByZXR1cm4gSU5URVJQT0xBVElP
Tl9DRU5UUk9JRDsKLQotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0
dXJuIElOVEVSUE9MQVRJT05fU01PT1RIOwotICAgIH0KLX0KKyAgICAgICAgY2FzZSBFdnFGbGF0
SW46CisgICAgICAgIGNhc2UgRXZxRmxhdE91dDoKKyAgICAgICAgICAgIHJldHVybiBJTlRFUlBP
TEFUSU9OX0ZMQVQ7CisKKyAgICAgICAgY2FzZSBFdnFTbW9vdGhJbjoKKyAgICAgICAgY2FzZSBF
dnFTbW9vdGhPdXQ6CisgICAgICAgIGNhc2UgRXZxVmVydGV4T3V0OgorICAgICAgICBjYXNlIEV2
cUZyYWdtZW50SW46CisgICAgICAgIGNhc2UgRXZxVmFyeWluZ0luOgorICAgICAgICBjYXNlIEV2
cVZhcnlpbmdPdXQ6CisgICAgICAgICAgICByZXR1cm4gSU5URVJQT0xBVElPTl9TTU9PVEg7CisK
KyAgICAgICAgY2FzZSBFdnFDZW50cm9pZEluOgorICAgICAgICBjYXNlIEV2cUNlbnRyb2lkT3V0
OgorICAgICAgICAgICAgcmV0dXJuIElOVEVSUE9MQVRJT05fQ0VOVFJPSUQ7CiAKLVRUeXBlIEdl
dEludGVyZmFjZUJsb2NrVHlwZShjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmJsb2NrKQotewot
ICAgIFRUeXBlIHR5cGU7Ci0gICAgVEZpZWxkTGlzdCAqZmllbGRzID0gbmV3IFRGaWVsZExpc3Q7
Ci0gICAgVFNvdXJjZUxvYyBsb2M7Ci0gICAgZm9yIChjb25zdCBhdXRvICZmaWVsZCA6IGJsb2Nr
LmZpZWxkcykKLSAgICB7Ci0gICAgICAgIFRUeXBlICpmaWVsZFR5cGUgPSBuZXcgVFR5cGUoR2V0
U2hhZGVyVmFyaWFibGVUeXBlKGZpZWxkKSk7Ci0gICAgICAgIGZpZWxkcy0+cHVzaF9iYWNrKG5l
dyBURmllbGQoZmllbGRUeXBlLCBuZXcgVFN0cmluZyhmaWVsZC5uYW1lLmNfc3RyKCkpLCBsb2Mp
KTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAg
ICAgICByZXR1cm4gSU5URVJQT0xBVElPTl9TTU9PVEg7CiAgICAgfQotCi0gICAgVEludGVyZmFj
ZUJsb2NrICppbnRlcmZhY2VCbG9jayA9IG5ldyBUSW50ZXJmYWNlQmxvY2soCi0gICAgICAgIG5l
dyBUU3RyaW5nKGJsb2NrLm5hbWUuY19zdHIoKSksIGZpZWxkcywgbmV3IFRTdHJpbmcoYmxvY2su
aW5zdGFuY2VOYW1lLmNfc3RyKCkpLAotICAgICAgICBibG9jay5hcnJheVNpemUsIFRMYXlvdXRR
dWFsaWZpZXI6OmNyZWF0ZSgpKTsKLQotICAgIHR5cGUuc2V0QmFzaWNUeXBlKEVidEludGVyZmFj
ZUJsb2NrKTsKLSAgICB0eXBlLnNldEludGVyZmFjZUJsb2NrKGludGVyZmFjZUJsb2NrKTsKLSAg
ICB0eXBlLnNldEFycmF5U2l6ZShibG9jay5hcnJheVNpemUpOwotICAgIHJldHVybiB0eXBlOwog
fQogCiBUVHlwZSBHZXRTaGFkZXJWYXJpYWJsZUJhc2ljVHlwZShjb25zdCBzaDo6U2hhZGVyVmFy
aWFibGUgJnZhcikKQEAgLTM1OSwzNSArNTc1LDYgQEAgVFR5cGUgR2V0U2hhZGVyVmFyaWFibGVC
YXNpY1R5cGUoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXIpCiAgICAgfQogfQogCi1UVHlw
ZSBHZXRTaGFkZXJWYXJpYWJsZVR5cGUoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXIpCi17
Ci0gICAgVFR5cGUgdHlwZTsKLSAgICBpZiAodmFyLmlzU3RydWN0KCkpCi0gICAgewotICAgICAg
ICBURmllbGRMaXN0ICpmaWVsZHMgPSBuZXcgVEZpZWxkTGlzdDsKLSAgICAgICAgVFNvdXJjZUxv
YyBsb2M7Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byAmZmllbGQgOiB2YXIuZmllbGRzKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBUVHlwZSAqZmllbGRUeXBlID0gbmV3IFRUeXBlKEdldFNoYWRl
clZhcmlhYmxlVHlwZShmaWVsZCkpOwotICAgICAgICAgICAgZmllbGRzLT5wdXNoX2JhY2sobmV3
IFRGaWVsZChmaWVsZFR5cGUsIG5ldyBUU3RyaW5nKGZpZWxkLm5hbWUuY19zdHIoKSksIGxvYykp
OwotICAgICAgICB9Ci0gICAgICAgIFRTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IG5ldyBUU3RydWN0
dXJlKG5ldyBUU3RyaW5nKHZhci5zdHJ1Y3ROYW1lLmNfc3RyKCkpLCBmaWVsZHMpOwotCi0gICAg
ICAgIHR5cGUuc2V0QmFzaWNUeXBlKEVidFN0cnVjdCk7Ci0gICAgICAgIHR5cGUuc2V0U3RydWN0
KHN0cnVjdHVyZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHR5cGUgPSBHZXRT
aGFkZXJWYXJpYWJsZUJhc2ljVHlwZSh2YXIpOwotICAgIH0KLQotICAgIGlmICh2YXIuaXNBcnJh
eSgpKQotICAgIHsKLSAgICAgICAgdHlwZS5zZXRBcnJheVNpemUodmFyLmVsZW1lbnRDb3VudCgp
KTsKLSAgICB9Ci0gICAgcmV0dXJuIHR5cGU7Ci19Ci0KIFRPcGVyYXRvciBUeXBlVG9Db25zdHJ1
Y3Rvck9wZXJhdG9yKGNvbnN0IFRUeXBlICZ0eXBlKQogewogICAgIHN3aXRjaCAodHlwZS5nZXRC
YXNpY1R5cGUoKSkKQEAgLTUxNiw4NSArNzAzLDYgQEAgVE9wZXJhdG9yIFR5cGVUb0NvbnN0cnVj
dG9yT3BlcmF0b3IoY29uc3QgVFR5cGUgJnR5cGUpCiAgICAgcmV0dXJuIEVPcE51bGw7CiB9CiAK
LUdldFZhcmlhYmxlVHJhdmVyc2VyOjpHZXRWYXJpYWJsZVRyYXZlcnNlcihjb25zdCBUU3ltYm9s
VGFibGUgJnN5bWJvbFRhYmxlKQotICAgIDogbVN5bWJvbFRhYmxlKHN5bWJvbFRhYmxlKQotewot
fQotCi10ZW1wbGF0ZSB2b2lkIEdldFZhcmlhYmxlVHJhdmVyc2VyOjpzZXRUeXBlU3BlY2lmaWNJ
bmZvKAotICAgIGNvbnN0IFRUeXBlICZ0eXBlLCBjb25zdCBUU3RyaW5nJiBuYW1lLCBJbnRlcmZh
Y2VCbG9ja0ZpZWxkICp2YXJpYWJsZSk7Ci10ZW1wbGF0ZSB2b2lkIEdldFZhcmlhYmxlVHJhdmVy
c2VyOjpzZXRUeXBlU3BlY2lmaWNJbmZvKAotICAgIGNvbnN0IFRUeXBlICZ0eXBlLCBjb25zdCBU
U3RyaW5nJiBuYW1lLCBTaGFkZXJWYXJpYWJsZSAqdmFyaWFibGUpOwotdGVtcGxhdGUgdm9pZCBH
ZXRWYXJpYWJsZVRyYXZlcnNlcjo6c2V0VHlwZVNwZWNpZmljSW5mbygKLSAgICBjb25zdCBUVHlw
ZSAmdHlwZSwgY29uc3QgVFN0cmluZyYgbmFtZSwgVW5pZm9ybSAqdmFyaWFibGUpOwotCi10ZW1w
bGF0ZTw+Ci12b2lkIEdldFZhcmlhYmxlVHJhdmVyc2VyOjpzZXRUeXBlU3BlY2lmaWNJbmZvKAot
ICAgIGNvbnN0IFRUeXBlICZ0eXBlLCBjb25zdCBUU3RyaW5nJiBuYW1lLCBWYXJ5aW5nICp2YXJp
YWJsZSkKLXsKLSAgICBBU1NFUlQodmFyaWFibGUpOwotICAgIHN3aXRjaCAodHlwZS5nZXRRdWFs
aWZpZXIoKSkKLSAgICB7Ci0gICAgICBjYXNlIEV2cVZhcnlpbmdJbjoKLSAgICAgIGNhc2UgRXZx
VmFyeWluZ091dDoKLSAgICAgIGNhc2UgRXZxVmVydGV4T3V0OgotICAgICAgY2FzZSBFdnFTbW9v
dGhPdXQ6Ci0gICAgICBjYXNlIEV2cUZsYXRPdXQ6Ci0gICAgICBjYXNlIEV2cUNlbnRyb2lkT3V0
OgotICAgICAgICBpZiAobVN5bWJvbFRhYmxlLmlzVmFyeWluZ0ludmFyaWFudChzdGQ6OnN0cmlu
ZyhuYW1lLmNfc3RyKCkpKSB8fCB0eXBlLmlzSW52YXJpYW50KCkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHZhcmlhYmxlLT5pc0ludmFyaWFudCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAg
YnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICB2YXJp
YWJsZS0+aW50ZXJwb2xhdGlvbiA9IEdldEludGVycG9sYXRpb25UeXBlKHR5cGUuZ2V0UXVhbGlm
aWVyKCkpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVmFyVD4KLXZvaWQgR2V0VmFyaWFibGVU
cmF2ZXJzZXI6OnRyYXZlcnNlKGNvbnN0IFRUeXBlICZ0eXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPFZhclQ+ICpvdXRwdXQpCi17Ci0gICAgY29u
c3QgVFN0cnVjdHVyZSAqc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKLQotICAgIFZhclQg
dmFyaWFibGU7Ci0gICAgdmFyaWFibGUubmFtZSA9IG5hbWUuY19zdHIoKTsKLSAgICB2YXJpYWJs
ZS5hcnJheVNpemUgPSB0eXBlLmdldEFycmF5U2l6ZSgpOwotCi0gICAgaWYgKCFzdHJ1Y3R1cmUp
Ci0gICAgewotICAgICAgICB2YXJpYWJsZS50eXBlID0gR0xWYXJpYWJsZVR5cGUodHlwZSk7Ci0g
ICAgICAgIHZhcmlhYmxlLnByZWNpc2lvbiA9IEdMVmFyaWFibGVQcmVjaXNpb24odHlwZSk7Ci0g
ICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIC8vIE5vdGU6IHRoaXMgZW51bSB2YWx1ZSBp
cyBub3QgZXhwb3NlZCBvdXRzaWRlIEFOR0xFCi0gICAgICAgIHZhcmlhYmxlLnR5cGUgPSBHTF9T
VFJVQ1RfQU5HTEVYOwotICAgICAgICB2YXJpYWJsZS5zdHJ1Y3ROYW1lID0gc3RydWN0dXJlLT5u
YW1lKCkuY19zdHIoKTsKLQotICAgICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSBzdHJ1
Y3R1cmUtPmZpZWxkcygpOwotCi0gICAgICAgIGZvciAoc2l6ZV90IGZpZWxkSW5kZXggPSAwOyBm
aWVsZEluZGV4IDwgZmllbGRzLnNpemUoKTsgZmllbGRJbmRleCsrKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBURmllbGQgKmZpZWxkID0gZmllbGRzW2ZpZWxkSW5kZXhdOwotICAgICAgICAgICAg
dHJhdmVyc2UoKmZpZWxkLT50eXBlKCksIGZpZWxkLT5uYW1lKCksICZ2YXJpYWJsZS5maWVsZHMp
OwotICAgICAgICB9Ci0gICAgfQotICAgIHNldFR5cGVTcGVjaWZpY0luZm8odHlwZSwgbmFtZSwg
JnZhcmlhYmxlKTsKLSAgICB2aXNpdFZhcmlhYmxlKCZ2YXJpYWJsZSk7Ci0KLSAgICBBU1NFUlQo
b3V0cHV0KTsKLSAgICBvdXRwdXQtPnB1c2hfYmFjayh2YXJpYWJsZSk7Ci19Ci0KLXRlbXBsYXRl
IHZvaWQgR2V0VmFyaWFibGVUcmF2ZXJzZXI6OnRyYXZlcnNlKGNvbnN0IFRUeXBlICYsIGNvbnN0
IFRTdHJpbmcgJiwgc3RkOjp2ZWN0b3I8SW50ZXJmYWNlQmxvY2tGaWVsZD4gKik7Ci10ZW1wbGF0
ZSB2b2lkIEdldFZhcmlhYmxlVHJhdmVyc2VyOjp0cmF2ZXJzZShjb25zdCBUVHlwZSAmLCBjb25z
dCBUU3RyaW5nICYsIHN0ZDo6dmVjdG9yPFNoYWRlclZhcmlhYmxlPiAqKTsKLXRlbXBsYXRlIHZv
aWQgR2V0VmFyaWFibGVUcmF2ZXJzZXI6OnRyYXZlcnNlKGNvbnN0IFRUeXBlICYsIGNvbnN0IFRT
dHJpbmcgJiwgc3RkOjp2ZWN0b3I8VW5pZm9ybT4gKik7Ci10ZW1wbGF0ZSB2b2lkIEdldFZhcmlh
YmxlVHJhdmVyc2VyOjp0cmF2ZXJzZShjb25zdCBUVHlwZSAmLCBjb25zdCBUU3RyaW5nICYsIHN0
ZDo6dmVjdG9yPFZhcnlpbmc+ICopOwotCiAvLyBHTFNMIEVTIDEuMC4xNyA0LjYuMSBUaGUgSW52
YXJpYW50IFF1YWxpZmllcgogYm9vbCBDYW5CZUludmFyaWFudEVTU0wxKFRRdWFsaWZpZXIgcXVh
bGlmaWVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvdXRpbC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvdXRpbC5oCmluZGV4IGI1MjY4OTE2NTFmOWViZGM1ZGI1N2YyN2YyYjhl
MzI4ZGVlMzdjY2IuLjM1ZGI4OGIxZmJmOTc5YjI2Zjc2NjFiZmFlYzg1MjQwZmE4NzBhNzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L3V0aWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci91dGlsLmgKQEAgLTE1LDIwICsxNSwyMyBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvT3BlcmF0b3IuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1R5cGVzLmgi
CiAKLS8vIHN0cnRvZl9jbGFtcCBpcyBsaWtlIHN0cnRvZiBidXQKLS8vICAgMS4gaXQgZm9yY2Vz
IEMgbG9jYWxlLCBpLmUuIGZvcmNpbmcgJy4nIGFzIGRlY2ltYWwgcG9pbnQuCi0vLyAgIDIuIGl0
IGNsYW1wcyB0aGUgdmFsdWUgdG8gLUZMVF9NQVggb3IgRkxUX01BWCBpZiBvdmVyZmxvdyBoYXBw
ZW5zLgotLy8gUmV0dXJuIGZhbHNlIGlmIG92ZXJmbG93IGhhcHBlbnMuCi1ib29sIHN0cnRvZl9j
bGFtcChjb25zdCBzdGQ6OnN0cmluZyAmc3RyLCBmbG9hdCAqdmFsdWUpOwotCiAvLyBJZiBvdmVy
ZmxvdyBoYXBwZW5zLCBjbGFtcCB0aGUgdmFsdWUgdG8gVUlOVF9NSU4gb3IgVUlOVF9NQVguCiAv
LyBSZXR1cm4gZmFsc2UgaWYgb3ZlcmZsb3cgaGFwcGVucy4KIGJvb2wgYXRvaV9jbGFtcChjb25z
dCBjaGFyICpzdHIsIHVuc2lnbmVkIGludCAqdmFsdWUpOwogCi1jbGFzcyBUU3ltYm9sVGFibGU7
Ci0KIG5hbWVzcGFjZSBzaAogeworY2xhc3MgVFN5bWJvbFRhYmxlOworCitmbG9hdCBOdW1lcmlj
TGV4RmxvYXQzMk91dE9mUmFuZ2VUb0luZmluaXR5KGNvbnN0IHN0ZDo6c3RyaW5nICZzdHIpOwor
CisvLyBzdHJ0b2ZfY2xhbXAgaXMgbGlrZSBzdHJ0b2YgYnV0CisvLyAgIDEuIGl0IGZvcmNlcyBD
IGxvY2FsZSwgaS5lLiBmb3JjaW5nICcuJyBhcyBkZWNpbWFsIHBvaW50LgorLy8gICAyLiBpdCBz
ZXRzIHRoZSB2YWx1ZSB0byBpbmZpbml0eSBpZiBvdmVyZmxvdyBoYXBwZW5zLgorLy8gICAzLiBz
dHIgc2hvdWxkIGJlIGd1YXJhbnRlZWQgdG8gYmUgaW4gdGhlIHZhbGlkIGZvcm1hdCBmb3IgYSBm
bG9hdGluZyBwb2ludCBudW1iZXIgYXMgZGVmaW5lZAorLy8gICAgICBieSB0aGUgZ3JhbW1hciBp
biB0aGUgRVNTTCAzLjAwLjYgc3BlYyBzZWN0aW9uIDQuMS40LgorLy8gUmV0dXJuIGZhbHNlIGlm
IG92ZXJmbG93IGhhcHBlbnMuCitib29sIHN0cnRvZl9jbGFtcChjb25zdCBzdGQ6OnN0cmluZyAm
c3RyLCBmbG9hdCAqdmFsdWUpOwogCiBHTGVudW0gR0xWYXJpYWJsZVR5cGUoY29uc3QgVFR5cGUg
JnR5cGUpOwogR0xlbnVtIEdMVmFyaWFibGVQcmVjaXNpb24oY29uc3QgVFR5cGUgJnR5cGUpOwpA
QCAtMzgsMzkgKzQxLDE0IEBAIGJvb2wgSXNWYXJ5aW5nKFRRdWFsaWZpZXIgcXVhbGlmaWVyKTsK
IEludGVycG9sYXRpb25UeXBlIEdldEludGVycG9sYXRpb25UeXBlKFRRdWFsaWZpZXIgcXVhbGlm
aWVyKTsKIFRTdHJpbmcgQXJyYXlTdHJpbmcoY29uc3QgVFR5cGUgJnR5cGUpOwogCi1UVHlwZSBH
ZXRJbnRlcmZhY2VCbG9ja1R5cGUoY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZibG9jayk7CiBU
VHlwZSBHZXRTaGFkZXJWYXJpYWJsZUJhc2ljVHlwZShjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUg
JnZhcik7Ci1UVHlwZSBHZXRTaGFkZXJWYXJpYWJsZVR5cGUoY29uc3Qgc2g6OlNoYWRlclZhcmlh
YmxlICZ2YXIpOwogCiBUT3BlcmF0b3IgVHlwZVRvQ29uc3RydWN0b3JPcGVyYXRvcihjb25zdCBU
VHlwZSAmdHlwZSk7CiAKLWNsYXNzIEdldFZhcmlhYmxlVHJhdmVyc2VyIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCi17Ci0gIHB1YmxpYzoKLSAgICBHZXRWYXJpYWJsZVRyYXZlcnNlcihjb25zdCBUU3lt
Ym9sVGFibGUgJnN5bWJvbFRhYmxlKTsKLSAgICB2aXJ0dWFsIH5HZXRWYXJpYWJsZVRyYXZlcnNl
cigpIHt9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFyVD4KLSAgICB2b2lkIHRyYXZlcnNl
KGNvbnN0IFRUeXBlICZ0eXBlLCBjb25zdCBUU3RyaW5nICZuYW1lLCBzdGQ6OnZlY3RvcjxWYXJU
PiAqb3V0cHV0KTsKLQotICBwcm90ZWN0ZWQ6Ci0gICAgLy8gTWF5IGJlIG92ZXJsb2FkZWQKLSAg
ICB2aXJ0dWFsIHZvaWQgdmlzaXRWYXJpYWJsZShTaGFkZXJWYXJpYWJsZSAqbmV3VmFyKSB7fQot
Ci0gIHByaXZhdGU6Ci0gICAgLy8gSGVscGVyIGZ1bmN0aW9uIGNhbGxlZCBieSB0cmF2ZXJzZSgp
IHRvIGZpbGwgc3BlY2lmaWMgZmllbGRzCi0gICAgLy8gZm9yIGF0dHJpYnV0ZXMvdmFyeWluZ3Mv
dW5pZm9ybXMuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZhclQ+Ci0gICAgdm9pZCBzZXRUeXBl
U3BlY2lmaWNJbmZvKAotICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSwgY29uc3QgVFN0cmluZyAm
bmFtZSwgVmFyVCAqdmFyaWFibGUpIHt9Ci0KLSAgICBjb25zdCBUU3ltYm9sVGFibGUgJm1TeW1i
b2xUYWJsZTsKLX07Ci0KIGJvb2wgSXNCdWlsdGluT3V0cHV0VmFyaWFibGUoVFF1YWxpZmllciBx
dWFsaWZpZXIpOwogYm9vbCBJc0J1aWx0aW5GcmFnbWVudElucHV0VmFyaWFibGUoVFF1YWxpZmll
ciBxdWFsaWZpZXIpOwogYm9vbCBDYW5CZUludmFyaWFudEVTU0wxKFRRdWFsaWZpZXIgcXVhbGlm
aWVyKTsKIGJvb2wgQ2FuQmVJbnZhcmlhbnRFU1NMM09yR3JlYXRlcihUUXVhbGlmaWVyIHF1YWxp
Zmllcik7Ci19Cit9ICAvLyBuYW1lc3BhY2Ugc2gKIAotI2VuZGlmIC8vIENPTVBJTEVSX1RSQU5T
TEFUT1JfVVRJTF9IXworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1VUSUxfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3Rl
bUluZm8uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lz
dGVtSW5mby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQzODRjNjZkNzQxZjZlMjUyNWUxMDQyYjM4NGFlNWQ1
ZWEwMDZhNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9n
cHVfaW5mb191dGlsL1N5c3RlbUluZm8uY3BwCkBAIC0wLDAgKzEsMTU5IEBACisvLworLy8gQ29w
eXJpZ2h0IChjKSAyMDEzLTIwMTcgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworCisvLyBTeXN0ZW1JbmZvLmNwcDogaW1wbGVtZW50YXRpb24gb2YgdGhlIHN5c3Rl
bS1hZ25vc3RpYyBwYXJ0cyBvZiBTeXN0ZW1JbmZvLmgKKworI2luY2x1ZGUgImdwdV9pbmZvX3V0
aWwvU3lzdGVtSW5mby5oIgorCisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxzc3RyZWFt
PgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAiY29tbW9uL3N0cmluZ191
dGlscy5oIgorCituYW1lc3BhY2UgYW5nbGUKK3sKKworYm9vbCBJc0FNRChWZW5kb3JJRCB2ZW5k
b3JJZCkKK3sKKyAgICByZXR1cm4gdmVuZG9ySWQgPT0ga1ZlbmRvcklEX0FNRDsKK30KKworYm9v
bCBJc0ludGVsKFZlbmRvcklEIHZlbmRvcklkKQoreworICAgIHJldHVybiB2ZW5kb3JJZCA9PSBr
VmVuZG9ySURfSW50ZWw7Cit9CisKK2Jvb2wgSXNOdmlkaWEoVmVuZG9ySUQgdmVuZG9ySWQpCit7
CisgICAgcmV0dXJuIHZlbmRvcklkID09IGtWZW5kb3JJRF9OdmlkaWE7Cit9CisKK2Jvb2wgSXNR
dWFsY29tbShWZW5kb3JJRCB2ZW5kb3JJZCkKK3sKKyAgICByZXR1cm4gdmVuZG9ySWQgPT0ga1Zl
bmRvcklEX1F1YWxjb21tOworfQorCitib29sIFBhcnNlQU1EQnJhaG1hRHJpdmVyVmVyc2lvbihj
b25zdCBzdGQ6OnN0cmluZyAmY29udGVudCwgc3RkOjpzdHJpbmcgKnZlcnNpb24pCit7CisgICAg
Y29uc3Qgc2l6ZV90IGJlZ2luID0gY29udGVudC5maW5kX2ZpcnN0X29mKCIwMTIzNDU2Nzg5Iik7
CisgICAgaWYgKGJlZ2luID09IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IHNpemVfdCBlbmQgPSBjb250ZW50LmZpbmRf
Zmlyc3Rfbm90X29mKCIwMTIzNDU2Nzg5LiIsIGJlZ2luKTsKKyAgICBpZiAoZW5kID09IHN0ZDo6
c3RyaW5nOjpucG9zKQorICAgIHsKKyAgICAgICAgKnZlcnNpb24gPSBjb250ZW50LnN1YnN0cihi
ZWdpbik7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgICp2ZXJzaW9uID0gY29udGVu
dC5zdWJzdHIoYmVnaW4sIGVuZCAtIGJlZ2luKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgUGFyc2VBTURDYXRhbHlzdERyaXZlclZlcnNpb24oY29uc3Qgc3RkOjpzdHJpbmcg
JmNvbnRlbnQsIHN0ZDo6c3RyaW5nICp2ZXJzaW9uKQoreworICAgIHN0ZDo6aXN0cmluZ3N0cmVh
bSBzdHJlYW0oY29udGVudCk7CisKKyAgICBzdGQ6OnN0cmluZyBsaW5lOworICAgIHdoaWxlIChz
dGQ6OmdldGxpbmUoc3RyZWFtLCBsaW5lKSkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBj
aGFyIGtSZWxlYXNlVmVyc2lvbltdID0gIlJlbGVhc2VWZXJzaW9uPSI7CisgICAgICAgIGlmIChs
aW5lLmNvbXBhcmUoMCwgc3RkOjpzdHJsZW4oa1JlbGVhc2VWZXJzaW9uKSwga1JlbGVhc2VWZXJz
aW9uKSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChQYXJzZUFNREJyYWhtYURyaXZlclZlcnNpb24obGluZSwgdmVyc2lvbikp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBQYXJzZU1hY01hY2hpbmVNb2RlbChjb25zdCBz
dGQ6OnN0cmluZyAmaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpz
dHJpbmcgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgKm1ham9yLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICptaW5vcikKK3sKKyAgICBzaXplX3Qg
bnVtYmVyTG9jID0gaWRlbnRpZmllci5maW5kX2ZpcnN0X29mKCIwMTIzNDU2Nzg5Iik7CisgICAg
aWYgKG51bWJlckxvYyA9PSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBzaXplX3QgY29tbWFMb2MgPSBpZGVudGlmaWVyLmZpbmQo
JywnLCBudW1iZXJMb2MpOworICAgIGlmIChjb21tYUxvYyA9PSBzdGQ6OnN0cmluZzo6bnBvcyB8
fCBjb21tYUxvYyA+PSBpZGVudGlmaWVyLnNpemUoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyICpudW1iZXJQdHIgPSAmaWRlbnRpZmllcltu
dW1iZXJMb2NdOworICAgIGNvbnN0IGNoYXIgKmNvbW1hUHRyICA9ICZpZGVudGlmaWVyW2NvbW1h
TG9jICsgMV07CisgICAgY2hhciAqZW5kUHRyICAgICAgICAgID0gbnVsbHB0cjsKKworICAgIGlu
dDMyX3QgbWFqb3JUbXAgPSBzdGQ6OnN0cnRvbChudW1iZXJQdHIsICZlbmRQdHIsIDEwKTsKKyAg
ICBpZiAoZW5kUHRyID09IG51bWJlclB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBpbnQzMl90IG1pbm9yVG1wID0gc3RkOjpzdHJ0b2woY29tbWFQdHIsICZl
bmRQdHIsIDEwKTsKKyAgICBpZiAoZW5kUHRyID09IGNvbW1hUHRyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgICptYWpvciA9IG1ham9yVG1wOworICAgICptaW5v
ciA9IG1pbm9yVG1wOworICAgICp0eXBlICA9IGlkZW50aWZpZXIuc3Vic3RyKDAsIG51bWJlckxv
Yyk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBDTURldmljZUlEVG9EZXZpY2VBbmRW
ZW5kb3JJRChjb25zdCBzdGQ6OnN0cmluZyAmaWQsIHVpbnQzMl90ICp2ZW5kb3JJZCwgdWludDMy
X3QgKmRldmljZUlkKQoreworICAgIHVuc2lnbmVkIGludCB2ZW5kb3IgPSAwOworICAgIHVuc2ln
bmVkIGludCBkZXZpY2UgPSAwOworCisgICAgYm9vbCBzdWNjZXNzID0gaWQubGVuZ3RoKCkgPj0g
MjEgJiYgSGV4U3RyaW5nVG9VSW50KGlkLnN1YnN0cig4LCA0KSwgJnZlbmRvcikgJiYKKyAgICAg
ICAgICAgICAgICAgICBIZXhTdHJpbmdUb1VJbnQoaWQuc3Vic3RyKDE3LCA0KSwgJmRldmljZSk7
CisKKyAgICAqdmVuZG9ySWQgPSB2ZW5kb3I7CisgICAgKmRldmljZUlkID0gZGV2aWNlOworICAg
IHJldHVybiBzdWNjZXNzOworfQorCit2b2lkIEZpbmRQcmltYXJ5R1BVKFN5c3RlbUluZm8gKmlu
Zm8pCit7CisgICAgQVNTRVJUKCFpbmZvLT5ncHVzLmVtcHR5KCkpOworCisgICAgLy8gT24gZHVh
bC1HUFUgc3lzdGVtcyB3ZSBhc3N1bWUgdGhlIG5vbi1JbnRlbCBHUFUgaXMgdGhlIHByaW1hcnkg
b25lLgorICAgIGludCBwcmltYXJ5ICAgPSAwOworICAgIGJvb2wgaGFzSW50ZWwgPSBmYWxzZTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluZm8tPmdwdXMuc2l6ZSgpOyArK2kpCisgICAg
eworICAgICAgICBpZiAoSXNJbnRlbChpbmZvLT5ncHVzW2ldLnZlbmRvcklkKSkKKyAgICAgICAg
eworICAgICAgICAgICAgaGFzSW50ZWwgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChJ
c0ludGVsKGluZm8tPmdwdXNbcHJpbWFyeV0udmVuZG9ySWQpKQorICAgICAgICB7CisgICAgICAg
ICAgICBwcmltYXJ5ID0gc3RhdGljX2Nhc3Q8aW50PihpKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8vIEFzc3VtZSB0aGF0IGEgY29tYmluYXRpb24gb2YgQU1EIG9yIE52aWRpYSB3aXRoIElu
dGVsIG1lYW5zIE9wdGltdXMgb3IgQU1EIFN3aXRjaGFibGUKKyAgICBpbmZvLT5wcmltYXJ5R1BV
SW5kZXggPSBwcmltYXJ5OworICAgIGluZm8tPmlzT3B0aW11cyAgICAgICA9IGhhc0ludGVsICYm
IElzTnZpZGlhKGluZm8tPmdwdXNbcHJpbWFyeV0udmVuZG9ySWQpOworICAgIGluZm8tPmlzQU1E
U3dpdGNoYWJsZSA9IGhhc0ludGVsICYmIElzQU1EKGluZm8tPmdwdXNbcHJpbWFyeV0udmVuZG9y
SWQpOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm8uaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm8uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
YmRhNWM5YWFkNWE0NWEyYzYyNzUzOGIyM2E2MWVmY2UzNDllODg2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mby5o
CkBAIC0wLDAgKzEsNTkgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNyBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN5c3RlbUluZm8uaDog
Z2F0aGVycyBpbmZvcm1hdGlvbiBhdmFpbGFibGUgd2l0aG91dCBzdGFydGluZyBhIEdQVSBkcml2
ZXIuCisKKyNpZm5kZWYgR1BVX0lORk9fVVRJTF9TWVNURU1fSU5GT19IXworI2RlZmluZSBHUFVf
SU5GT19VVElMX1NZU1RFTV9JTkZPX0hfCisKKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUg
PHN0cmluZz4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKK25hbWVzcGFjZSBhbmdsZQoreworCit1c2lu
ZyBWZW5kb3JJRCA9IHVpbnQzMl90OwordXNpbmcgRGV2aWNlSUQgPSB1aW50MzJfdDsKKworY29u
c3RleHByIFZlbmRvcklEIGtWZW5kb3JJRF9BTUQgICAgICA9IDB4MTAwMjsKK2NvbnN0ZXhwciBW
ZW5kb3JJRCBrVmVuZG9ySURfSW50ZWwgICAgPSAweDgwODY7Citjb25zdGV4cHIgVmVuZG9ySUQg
a1ZlbmRvcklEX052aWRpYSAgID0gMHgxMERFOworY29uc3RleHByIFZlbmRvcklEIGtWZW5kb3JJ
RF9RdWFsY29tbSA9IDB4NTE0MzsKKworc3RydWN0IEdQVURldmljZUluZm8KK3sKKyAgICBWZW5k
b3JJRCB2ZW5kb3JJZCA9IDA7CisgICAgRGV2aWNlSUQgZGV2aWNlSWQgPSAwOworCisgICAgc3Rk
OjpzdHJpbmcgZHJpdmVyVmVuZG9yOworICAgIHN0ZDo6c3RyaW5nIGRyaXZlclZlcnNpb247Cisg
ICAgc3RkOjpzdHJpbmcgZHJpdmVyRGF0ZTsKK307CisKK3N0cnVjdCBTeXN0ZW1JbmZvCit7Cisg
ICAgc3RkOjp2ZWN0b3I8R1BVRGV2aWNlSW5mbz4gZ3B1czsKKyAgICBpbnQgcHJpbWFyeUdQVUlu
ZGV4ID0gLTE7CisgICAgaW50IGFjdGl2ZUdQVUluZGV4ICA9IC0xOworCisgICAgYm9vbCBpc09w
dGltdXMgICAgICAgPSBmYWxzZTsKKyAgICBib29sIGlzQU1EU3dpdGNoYWJsZSA9IGZhbHNlOwor
CisgICAgc3RkOjpzdHJpbmcgbWFjaGluZU1vZGVsTmFtZTsKKyAgICBzdGQ6OnN0cmluZyBtYWNo
aW5lTW9kZWxWZXJzaW9uOworfTsKKworYm9vbCBHZXRTeXN0ZW1JbmZvKFN5c3RlbUluZm8gKmlu
Zm8pOworCitib29sIElzQU1EKFZlbmRvcklEIHZlbmRvcklkKTsKK2Jvb2wgSXNJbnRlbChWZW5k
b3JJRCB2ZW5kb3JJZCk7Citib29sIElzTnZpZGlhKFZlbmRvcklEIHZlbmRvcklkKTsKK2Jvb2wg
SXNRdWFsY29tbShWZW5kb3JJRCB2ZW5kb3JJZCk7CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQor
CisjZW5kaWYgIC8vIEdQVV9JTkZPX1VUSUxfU1lTVEVNX0lORk9fSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm9faW50ZXJu
YWwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUlu
Zm9faW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMmY2MTI0NjYyMWY5NWExMjg2YTEwYmNmZGJmODBh
ZjliYjhmOWFmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb19pbnRlcm5hbC5oCkBAIC0wLDAgKzEsMzggQEAKKy8v
CisvLyBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisKKy8vIFN5c3RlbUluZm9faW50ZXJuYWwuaDogRnVuY3Rpb25zIHVz
ZWQgYnkgdGhlIFN5c3RlbUluZm9fKiBmaWxlcyBhbmQgdW5pdHRlc3RzCisKKyNpZm5kZWYgR1BV
X0lORk9fVVRJTF9TWVNURU1fSU5GT19JTlRFUk5BTF9IXworI2RlZmluZSBHUFVfSU5GT19VVElM
X1NZU1RFTV9JTkZPX0lOVEVSTkFMX0hfCisKKyNpbmNsdWRlICJncHVfaW5mb191dGlsL1N5c3Rl
bUluZm8uaCIKKworbmFtZXNwYWNlIGFuZ2xlCit7CisKKy8vIERlZmluZWQgaW4gU3lzdGVtSW5m
b19saWJwY2kgd2hlbiBHUFVfSU5GT19VU0VfTElCUENJIGlzIGRlZmluZWQuCitib29sIEdldFBD
SURldmljZXNXaXRoTGliUENJKHN0ZDo6dmVjdG9yPEdQVURldmljZUluZm8+ICpkZXZpY2VzKTsK
Ky8vIERlZmluZWQgaW4gU3lzdGVtSW5mb194MTEgd2hlbiBHUFVfSU5GT19VU0VfWDExIGlzIGRl
ZmluZWQuCitib29sIEdldE52aWRpYURyaXZlclZlcnNpb25XaXRoWE5WQ3RybChzdGQ6OnN0cmlu
ZyAqdmVyc2lvbik7CisKKy8vIFRhcmdldCBzcGVjaWZpYyBoZWxwZXIgZnVuY3Rpb25zIHRoYXQg
Y2FuIGJlIGNvbXBpbGVkIG9uIGFsbCB0YXJnZXRzCisvLyBMaXZlIGluIFN5c3RlbUluZm8uY3Bw
Citib29sIFBhcnNlQU1EQnJhaG1hRHJpdmVyVmVyc2lvbihjb25zdCBzdGQ6OnN0cmluZyAmY29u
dGVudCwgc3RkOjpzdHJpbmcgKnZlcnNpb24pOworYm9vbCBQYXJzZUFNRENhdGFseXN0RHJpdmVy
VmVyc2lvbihjb25zdCBzdGQ6OnN0cmluZyAmY29udGVudCwgc3RkOjpzdHJpbmcgKnZlcnNpb24p
OworYm9vbCBQYXJzZU1hY01hY2hpbmVNb2RlbChjb25zdCBzdGQ6OnN0cmluZyAmaWRlbnRpZmll
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludDMyX3QgKm1ham9yLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQzMl90ICptaW5vcik7Citib29sIENNRGV2aWNlSURUb0RldmljZUFuZFZlbmRvcklE
KGNvbnN0IHN0ZDo6c3RyaW5nICZpZCwgdWludDMyX3QgKnZlbmRvcklkLCB1aW50MzJfdCAqZGV2
aWNlSWQpOworCisvLyBJbiB0aGUgY2FzZSB0aGVyZSBhcmUgbXVsdGlwbGUgR1BVcywgdGhpcyBm
aW5kcyB0aGUgcHJpbWFyeSBvbmUgYW5kIHNldHMgT3B0aW11cyBvciBBTUQKKy8vIFN3aXRjaGFi
bGUKK3ZvaWQgRmluZFByaW1hcnlHUFUoU3lzdGVtSW5mbyAqaW5mbyk7CisKK30gIC8vIG5hbWVz
cGFjZSBhbmdsZQorCisjZW5kaWYgIC8vIEdQVV9JTkZPX1VUSUxfU1lTVEVNX0lORk9fSU5URVJO
QUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191
dGlsL1N5c3RlbUluZm9fbGlicGNpLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9n
cHVfaW5mb191dGlsL1N5c3RlbUluZm9fbGlicGNpLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZWY4OWQ2MWJl
ZTM2NDA2ODcxMDM5ZTY4YThhZmNkYWU3M2IxZWE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb19saWJwY2kuY3Bw
CkBAIC0wLDAgKzEsMTMyIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEzLTIwMTcgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTeXN0ZW1JbmZvX2xp
YnBjaS5jcHA6IGltcGxlbWVudGF0aW9uIG9mIHRoZSBsaWJQQ0ktc3BlY2lmaWMgcGFydHMgb2Yg
U3lzdGVtSW5mby5oCisKKyNpbmNsdWRlICJncHVfaW5mb191dGlsL1N5c3RlbUluZm9faW50ZXJu
YWwuaCIKKworI2luY2x1ZGUgPGRsZmNuLmg+CisjaW5jbHVkZSA8cGNpL3BjaS5oPgorI2luY2x1
ZGUgPHVuaXN0ZC5oPgorCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRl
ICJjb21tb24vZGVidWcuaCIKKworI2lmICFkZWZpbmVkKEdQVV9JTkZPX1VTRV9MSUJQQ0kpCisj
ZXJyb3IgU3lzdGVtSW5mb19saWJwY2kuY3BwIGNvbXBpbGVkIHdpdGhvdXQgR1BVX0lORk9fVVNF
X0xJQlBDSQorI2VuZGlmCisKK25hbWVzcGFjZSBhbmdsZQoreworCituYW1lc3BhY2UKK3sKKwor
c3RydWN0IExpYlBDSSA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICAgIExpYlBDSSgpCisgICAg
eworICAgICAgICBpZiAoYWNjZXNzKCIvc3lzL2J1cy9wY2kvIiwgRl9PSykgIT0gMCAmJiBhY2Nl
c3MoIi9zeXMvYnMvcGNpX2V4cHJlc3MvIiwgRl9PSykgIT0gMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbUhhbmRsZSA9IGRsb3BlbigibGli
cGNpLnNvLjMiLCBSVExEX0xBWlkpOworCisgICAgICAgIGlmIChtSGFuZGxlID09IG51bGxwdHIp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1IYW5kbGUgPSBkbG9wZW4oImxpYnBjaS5zbyIsIFJU
TERfTEFaWSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobUhhbmRsZSA9PSBudWxscHRyKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBtVmFs
aWQgPQorICAgICAgICAgICAgKEFsbG9jID0gcmVpbnRlcnByZXRfY2FzdDxkZWNsdHlwZShBbGxv
Yyk+KGRsc3ltKG1IYW5kbGUsICJwY2lfYWxsb2MiKSkpICE9IG51bGxwdHIgJiYKKyAgICAgICAg
ICAgIChJbml0ID0gcmVpbnRlcnByZXRfY2FzdDxkZWNsdHlwZShJbml0KT4oZGxzeW0obUhhbmRs
ZSwgInBjaV9pbml0IikpKSAhPSBudWxscHRyICYmCisgICAgICAgICAgICAoQ2xlYW51cCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8ZGVjbHR5cGUoQ2xlYW51cCk+KGRsc3ltKG1IYW5kbGUsICJwY2lfY2xl
YW51cCIpKSkgIT0KKyAgICAgICAgICAgICAgICBudWxscHRyICYmCisgICAgICAgICAgICAoU2Nh
bkJ1cyA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZGVjbHR5cGUoU2NhbkJ1cyk+KGRsc3ltKG1IYW5kbGUs
ICJwY2lfc2Nhbl9idXMiKSkpICE9CisgICAgICAgICAgICAgICAgbnVsbHB0ciAmJgorICAgICAg
ICAgICAgKEZpbGxJbmZvID0gcmVpbnRlcnByZXRfY2FzdDxkZWNsdHlwZShGaWxsSW5mbyk+KGRs
c3ltKG1IYW5kbGUsICJwY2lfZmlsbF9pbmZvIikpKSAhPQorICAgICAgICAgICAgICAgIG51bGxw
dHIgJiYKKyAgICAgICAgICAgIChMb29rdXBOYW1lID0gcmVpbnRlcnByZXRfY2FzdDxkZWNsdHlw
ZShMb29rdXBOYW1lKT4oCisgICAgICAgICAgICAgICAgIGRsc3ltKG1IYW5kbGUsICJwY2lfbG9v
a3VwX25hbWUiKSkpICE9IG51bGxwdHI7CisgICAgfQorCisgICAgYm9vbCBJc1ZhbGlkKCkgY29u
c3QgeyByZXR1cm4gbVZhbGlkOyB9CisKKyAgICB+TGliUENJKCkKKyAgICB7CisgICAgICAgIGlm
IChtSGFuZGxlICE9IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRsY2xvc2UobUhh
bmRsZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBkZWNsdHlwZSgmOjpwY2lfYWxsb2MpIEFs
bG9jICAgICAgICAgICAgPSBudWxscHRyOworICAgIGRlY2x0eXBlKCY6OnBjaV9pbml0KSBJbml0
ICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgZGVjbHR5cGUoJjo6cGNpX2NsZWFudXApIENs
ZWFudXAgICAgICAgID0gbnVsbHB0cjsKKyAgICBkZWNsdHlwZSgmOjpwY2lfc2Nhbl9idXMpIFNj
YW5CdXMgICAgICAgPSBudWxscHRyOworICAgIGRlY2x0eXBlKCY6OnBjaV9maWxsX2luZm8pIEZp
bGxJbmZvICAgICA9IG51bGxwdHI7CisgICAgZGVjbHR5cGUoJjo6cGNpX2xvb2t1cF9uYW1lKSBM
b29rdXBOYW1lID0gbnVsbHB0cjsKKworICBwcml2YXRlOgorICAgIHZvaWQgKm1IYW5kbGUgPSBu
dWxscHRyOworICAgIGJvb2wgbVZhbGlkICAgPSBmYWxzZTsKK307CisKK30gIC8vIGFub255bW91
cyBuYW1lc3BhY2UKKworLy8gQWRkcyBhbiBlbnRyeSBwZXIgUENJIEdQVSBmb3VuZCBhbmQgZmls
bHMgdGhlIGRldmljZSBhbmQgdmVuZG9yIElELgorYm9vbCBHZXRQQ0lEZXZpY2VzV2l0aExpYlBD
SShzdGQ6OnZlY3RvcjxHUFVEZXZpY2VJbmZvPiAqZGV2aWNlcykKK3sKKyAgICBMaWJQQ0kgcGNp
OworICAgIGlmICghcGNpLklzVmFsaWQoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBwY2lfYWNjZXNzICphY2Nlc3MgPSBwY2kuQWxsb2MoKTsKKyAgICBBU1NF
UlQoYWNjZXNzICE9IG51bGxwdHIpOworICAgIHBjaS5Jbml0KGFjY2Vzcyk7CisgICAgcGNpLlNj
YW5CdXMoYWNjZXNzKTsKKworICAgIGZvciAocGNpX2RldiAqZGV2aWNlID0gYWNjZXNzLT5kZXZp
Y2VzOyBkZXZpY2UgIT0gbnVsbHB0cjsgZGV2aWNlID0gZGV2aWNlLT5uZXh0KQorICAgIHsKKyAg
ICAgICAgcGNpLkZpbGxJbmZvKGRldmljZSwgUENJX0ZJTExfSURFTlQgfCBQQ0lfRklMTF9DTEFT
Uyk7CisKKyAgICAgICAgLy8gU2tpcCBub24tR1BVIGRldmljZXMKKyAgICAgICAgc3dpdGNoIChk
ZXZpY2UtPmRldmljZV9jbGFzcykKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBQQ0lfQ0xB
U1NfRElTUExBWV9WR0E6CisgICAgICAgICAgICBjYXNlIFBDSV9DTEFTU19ESVNQTEFZX1hHQToK
KyAgICAgICAgICAgIGNhc2UgUENJX0NMQVNTX0RJU1BMQVlfM0Q6CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gU2tpcCB1bmtub3duIGRldmljZXMKKyAgICAgICAgaWYg
KGRldmljZS0+dmVuZG9yX2lkID09IDAgfHwgZGV2aWNlLT5kZXZpY2VfaWQgPT0gMCkKKyAgICAg
ICAgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBHUFVEZXZp
Y2VJbmZvIGluZm87CisgICAgICAgIGluZm8udmVuZG9ySWQgPSBkZXZpY2UtPnZlbmRvcl9pZDsK
KyAgICAgICAgaW5mby5kZXZpY2VJZCA9IGRldmljZS0+ZGV2aWNlX2lkOworCisgICAgICAgIGRl
dmljZXMtPnB1c2hfYmFjayhpbmZvKTsKKyAgICB9CisKKyAgICBwY2kuQ2xlYW51cChhY2Nlc3Mp
OworCisgICAgcmV0dXJuIHRydWU7Cit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvZ3B1X2luZm9fdXRpbC9TeXN0ZW1JbmZvX2xpbnV4LmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm9fbGludXguY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjk4ZjAwMGIwNjk2NDU0MzlkYjZlMzNjNTU2ZjBlZjBiMDVkZWJlNjYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvZ3B1X2luZm9fdXRpbC9T
eXN0ZW1JbmZvX2xpbnV4LmNwcApAQCAtMCwwICsxLDE0NCBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAxMy0yMDE3IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gU3lzdGVtSW5mb19saW51eC5jcHA6IGltcGxlbWVudGF0aW9uIG9mIHRoZSBMaW51eC1z
cGVjaWZpYyBwYXJ0cyBvZiBTeXN0ZW1JbmZvLmgKKworI2luY2x1ZGUgImdwdV9pbmZvX3V0aWwv
U3lzdGVtSW5mb19pbnRlcm5hbC5oIgorCisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDxm
c3RyZWFtPgorCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJjb21t
b24vZGVidWcuaCIKKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK25hbWVzcGFjZQoreworCitib29s
IFJlYWRXaG9sZUZpbGUoY29uc3QgY2hhciAqZmlsZW5hbWUsIHN0ZDo6c3RyaW5nICpjb250ZW50
KQoreworICAgIHN0ZDo6aWZzdHJlYW0gZmlsZShmaWxlbmFtZSk7CisKKyAgICBpZiAoIWZpbGUp
CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgKmNvbnRlbnQgPSBz
dGQ6OnN0cmluZyhzdGQ6OmlzdHJlYW1idWZfaXRlcmF0b3I8Y2hhcj4oZmlsZSksIHN0ZDo6aXN0
cmVhbWJ1Zl9pdGVyYXRvcjxjaGFyPigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gU2Nh
biAvc3lzL21vZHVsZS9hbWRncHUvdmVyc2lvbi4KK2Jvb2wgR2V0QU1EQnJhaG1hRHJpdmVyVmVy
c2lvbihzdGQ6OnN0cmluZyAqdmVyc2lvbikKK3sKKyAgICAqdmVyc2lvbiA9ICIiOworICAgIHN0
ZDo6c3RyaW5nIGNvbnRlbnQ7CisKKyAgICByZXR1cm4gUmVhZFdob2xlRmlsZSgiL3N5cy9tb2R1
bGUvYW1kZ3B1L3ZlcnNpb24iLCAmY29udGVudCkgJiYKKyAgICAgICAgICAgUGFyc2VBTURCcmFo
bWFEcml2ZXJWZXJzaW9uKGNvbnRlbnQsIHZlcnNpb24pOworfQorCisvLyBTY2FuIC9ldGMvYXRp
L2FtZHBjc2RiLmRlZmF1bHQgZm9yICJSZWxlYXNlVmVyc2lvbiIuCitib29sIEdldEFNRENhdGFs
eXN0RHJpdmVyVmVyc2lvbihzdGQ6OnN0cmluZyAqdmVyc2lvbikKK3sKKyAgICAqdmVyc2lvbiA9
ICIiOworICAgIHN0ZDo6c3RyaW5nIGNvbnRlbnQ7CisKKyAgICByZXR1cm4gUmVhZFdob2xlRmls
ZSgiL2V0Yy9hdGkvYW1kcGNzZGIuZGVmYXVsdCIsICZjb250ZW50KSAmJgorICAgICAgICAgICBQ
YXJzZUFNRENhdGFseXN0RHJpdmVyVmVyc2lvbihjb250ZW50LCB2ZXJzaW9uKTsKK30KKworfSAg
Ly8gYW5vbnltb3VzIG5hbWVzcGFjZQorCisjaWYgIWRlZmluZWQoR1BVX0lORk9fVVNFX1gxMSkK
K2Jvb2wgR2V0TnZpZGlhRHJpdmVyVmVyc2lvbldpdGhYTlZDdHJsKHN0ZDo6c3RyaW5nICp2ZXJz
aW9uKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCisjaWYgIWRlZmluZWQoR1BV
X0lORk9fVVNFX0xJQlBDSSkKK2Jvb2wgR2V0UENJRGV2aWNlc1dpdGhMaWJQQ0koc3RkOjp2ZWN0
b3I8R1BVRGV2aWNlSW5mbz4gKmRldmljZXMpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2Vu
ZGlmCisKK2Jvb2wgR2V0U3lzdGVtSW5mbyhTeXN0ZW1JbmZvICppbmZvKQoreworICAgIGlmICgh
R2V0UENJRGV2aWNlc1dpdGhMaWJQQ0koJihpbmZvLT5ncHVzKSkpCisgICAgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGluZm8tPmdwdXMuc2l6ZSgpID09IDApCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgRmluZFByaW1hcnlHUFUo
aW5mbyk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluZm8tPmdwdXMuc2l6ZSgpOyAr
K2kpCisgICAgeworICAgICAgICBHUFVEZXZpY2VJbmZvICpncHUgPSAmaW5mby0+Z3B1c1tpXTsK
KworICAgICAgICAvLyBOZXcgR1BVcyBtaWdodCBiZSBhZGRlZCBpbnNpZGUgdGhpcyBsb29wLCBk
b24ndCBxdWVyeSBmb3IgdGhlaXIgZHJpdmVyIHZlcnNpb24gYWdhaW4KKyAgICAgICAgaWYgKCFn
cHUtPmRyaXZlclZlbmRvci5lbXB0eSgpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChJc0FNRChncHUtPnZlbmRvcklkKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgdmVyc2lvbjsKKyAgICAgICAgICAgIGlmIChH
ZXRBTURCcmFobWFEcml2ZXJWZXJzaW9uKCZ2ZXJzaW9uKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBncHUtPmRyaXZlclZlbmRvciAgPSAiQU1EIChCcmFobWEpIjsKKyAgICAgICAg
ICAgICAgICBncHUtPmRyaXZlclZlcnNpb24gPSBzdGQ6Om1vdmUodmVyc2lvbik7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChHZXRBTURDYXRhbHlzdERyaXZlclZlcnNpb24o
JnZlcnNpb24pKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdwdS0+ZHJpdmVyVmVu
ZG9yICA9ICJBTUQgKENhdGFseXN0KSI7CisgICAgICAgICAgICAgICAgZ3B1LT5kcml2ZXJWZXJz
aW9uID0gc3RkOjptb3ZlKHZlcnNpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgaWYgKElzTnZpZGlhKGdwdS0+dmVuZG9ySWQpKQorICAgICAgICB7CisgICAgICAgICAg
ICBzdGQ6OnN0cmluZyB2ZXJzaW9uOworICAgICAgICAgICAgaWYgKEdldE52aWRpYURyaXZlclZl
cnNpb25XaXRoWE5WQ3RybCgmdmVyc2lvbikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgZ3B1LT5kcml2ZXJWZW5kb3IgID0gIk52aWRpYSI7CisgICAgICAgICAgICAgICAgZ3B1LT5k
cml2ZXJWZXJzaW9uID0gc3RkOjptb3ZlKHZlcnNpb24pOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgLy8gSW4gZHVhbC1HUFUgY2FzZXMgdGhlIFBDSSBzY2FuIHNvbWV0aW1l
cyBvbmx5IGdpdmVzIHVzIHRoZSBJbnRlbCBHUFUuCisgICAgICAgIC8vIElmIHdlIGFyZSBhYmxl
IHRvIHF1ZXJ5IGZvciB0aGUgTnZpZGlhIGRyaXZlciB2ZXJzaW9uLCBpdCBtZWFucyB0aGVyZQor
ICAgICAgICAvLyB3YXMgaGlkZGVuIE52aWRpYSBHUFUsIHNvIHdlIGFkZCBpdCB0byB0aGUgbGlz
dCBhbmQgbWFrZSBpdCBwcmltYXJ5LgorICAgICAgICBpZiAoSXNJbnRlbChncHUtPnZlbmRvcklk
KSAmJiBpbmZvLT5ncHVzLnNpemUoKSA9PSAxKQorICAgICAgICB7CisgICAgICAgICAgICBzdGQ6
OnN0cmluZyB2ZXJzaW9uOworICAgICAgICAgICAgaWYgKEdldE52aWRpYURyaXZlclZlcnNpb25X
aXRoWE5WQ3RybCgmdmVyc2lvbikpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgR1BV
RGV2aWNlSW5mbyBudmlkaWFJbmZvOworICAgICAgICAgICAgICAgIG52aWRpYUluZm8udmVuZG9y
SWQgPSBrVmVuZG9ySURfTnZpZGlhOworICAgICAgICAgICAgICAgIG52aWRpYUluZm8uZGV2aWNl
SWQgPSAwOworICAgICAgICAgICAgICAgIGdwdS0+ZHJpdmVyVmVuZG9yICAgPSAiTnZpZGlhIjsK
KyAgICAgICAgICAgICAgICBncHUtPmRyaXZlclZlcnNpb24gID0gc3RkOjptb3ZlKHZlcnNpb24p
OworCisgICAgICAgICAgICAgICAgaW5mby0+Z3B1cy5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKG52
aWRpYUluZm8pKTsKKyAgICAgICAgICAgICAgICBpbmZvLT5pc09wdGltdXMgPSB0cnVlOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30g
IC8vIG5hbWVzcGFjZSBhbmdsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb19tYWMubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvZ3B1X2luZm9fdXRpbC9TeXN0ZW1JbmZvX21hYy5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTdh
NjJkMTcwZmU0M2QzYWU0ODY3ZTRkNzQ0Mzk4ZmQ1OGM3YTEzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb19tYWMu
bW0KQEAgLTAsMCArMSwxNzAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTeXN0ZW1JbmZvX21hYy5j
cHA6IGltcGxlbWVudGF0aW9uIG9mIHRoZSBNYWMtc3BlY2lmaWMgcGFydHMgb2YgU3lzdGVtSW5m
by5oCisKKyNpbmNsdWRlICJncHVfaW5mb191dGlsL1N5c3RlbUluZm9faW50ZXJuYWwuaCIKKwor
I2ltcG9ydCA8Q29jb2EvQ29jb2EuaD4KKyNpbXBvcnQgPElPS2l0L0lPS2l0TGliLmg+CisKK25h
bWVzcGFjZSBhbmdsZQoreworCituYW1lc3BhY2UKK3sKKworc3RkOjpzdHJpbmcgR2V0TWFjaGlu
ZU1vZGVsKCkKK3sKKyAgICBpb19zZXJ2aWNlX3QgcGxhdGZvcm1FeHBlcnQgPSBJT1NlcnZpY2VH
ZXRNYXRjaGluZ1NlcnZpY2UoCisgICAgICAgIGtJT01hc3RlclBvcnREZWZhdWx0LCBJT1NlcnZp
Y2VNYXRjaGluZygiSU9QbGF0Zm9ybUV4cGVydERldmljZSIpKTsKKworICAgIGlmIChwbGF0Zm9y
bUV4cGVydCA9PSBJT19PQkpFQ1RfTlVMTCkKKyAgICB7CisgICAgICAgIHJldHVybiAiIjsKKyAg
ICB9CisKKyAgICBDRkRhdGFSZWYgbW9kZWxEYXRhID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPigK
KyAgICAgICAgSU9SZWdpc3RyeUVudHJ5Q3JlYXRlQ0ZQcm9wZXJ0eShwbGF0Zm9ybUV4cGVydCwg
Q0ZTVFIoIm1vZGVsIiksIGtDRkFsbG9jYXRvckRlZmF1bHQsIDApKTsKKyAgICBpZiAobW9kZWxE
YXRhID09IG51bGxwdHIpCisgICAgeworICAgICAgICBJT09iamVjdFJlbGVhc2UocGxhdGZvcm1F
eHBlcnQpOworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorCisgICAgc3RkOjpzdHJpbmcgcmVz
dWx0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KENGRGF0YUdldEJ5dGVQdHIobW9k
ZWxEYXRhKSk7CisKKyAgICBJT09iamVjdFJlbGVhc2UocGxhdGZvcm1FeHBlcnQpOworICAgIENG
UmVsZWFzZShtb2RlbERhdGEpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gRXh0cmFj
dHMgb25lIGludGVnZXIgcHJvcGVydHkgZnJvbSBhIHJlZ2lzdHJ5IGVudHJ5LgorYm9vbCBHZXRF
bnRyeVByb3BlcnR5KGlvX3JlZ2lzdHJ5X2VudHJ5X3QgZW50cnksIENGU3RyaW5nUmVmIG5hbWUs
IHVpbnQzMl90ICp2YWx1ZSkKK3sKKyAgICAqdmFsdWUgPSAwOworCisgICAgQ0ZEYXRhUmVmIGRh
dGEgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KAorICAgICAgICBJT1JlZ2lzdHJ5RW50cnlTZWFy
Y2hDRlByb3BlcnR5KGVudHJ5LCBrSU9TZXJ2aWNlUGxhbmUsIG5hbWUsIGtDRkFsbG9jYXRvckRl
ZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0lPUmVnaXN0
cnlJdGVyYXRlUmVjdXJzaXZlbHkgfCBrSU9SZWdpc3RyeUl0ZXJhdGVQYXJlbnRzKSk7CisKKyAg
ICBpZiAoZGF0YSA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGNvbnN0IHVpbnQzMl90ICp2YWx1ZVB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDMyX3QgKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7CisKKyAgICBpZiAodmFsdWVQ
dHIgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIENGUmVsZWFzZShkYXRhKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgICp2YWx1ZSA9ICp2YWx1ZVB0cjsKKyAgICBDRlJl
bGVhc2UoZGF0YSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIENHRGlzcGxheUlPU2Vydmlj
ZVBvcnQgaXMgZGVwcmVjYXRlZCBhcyBvZiBtYWNPUyAxMC45LCBidXQgaGFzIG5vIHJlcGxhY2Vt
ZW50LCBzZWUKKy8vIGh0dHBzOi8vY3JidWcuY29tLzY1MDgzNworI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0
ZWQtZGVjbGFyYXRpb25zIgorCisvLyBGaW5kIHRoZSBpbmZvIG9mIHRoZSBjdXJyZW50IEdQVS4K
K2Jvb2wgR2V0QWN0aXZlR1BVKFZlbmRvcklEICp2ZW5kb3JJZCwgRGV2aWNlSUQgKmRldmljZUlk
KQoreworICAgIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgcG9ydCA9IENHRGlzcGxheUlPU2VydmljZVBv
cnQoa0NHRGlyZWN0TWFpbkRpc3BsYXkpOworCisgICAgcmV0dXJuIEdldEVudHJ5UHJvcGVydHko
cG9ydCwgQ0ZTVFIoInZlbmRvci1pZCIpLCB2ZW5kb3JJZCkgJiYKKyAgICAgICAgICAgR2V0RW50
cnlQcm9wZXJ0eShwb3J0LCBDRlNUUigiZGV2aWNlLWlkIiksIGRldmljZUlkKTsKK30KKworI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorCisvLyBHYXRoZXJzIHRoZSB2ZW5kb3IgYW5kIGRl
dmljZSBJRHMgZm9yIHRoZSBQQ0kgR1BVcworYm9vbCBHZXRQQ0lEZXZpY2VzKHN0ZDo6dmVjdG9y
PEdQVURldmljZUluZm8+ICpkZXZpY2VzKQoreworICAgIC8vIG1hdGNoRGljdGlvbmFyeSB3aWxs
IGJlIGNvbnN1bWVkIGJ5IElPU2VydmljZUdldE1hdGNoaW5nU2VydmljZXMsIG5vIG5lZWQgdG8g
cmVsZWFzZSBpdC4KKyAgICBDRk11dGFibGVEaWN0aW9uYXJ5UmVmIG1hdGNoRGljdGlvbmFyeSA9
IElPU2VydmljZU1hdGNoaW5nKCJJT1BDSURldmljZSIpOworCisgICAgaW9faXRlcmF0b3JfdCBl
bnRyeUl0ZXJhdG9yOworICAgIGlmIChJT1NlcnZpY2VHZXRNYXRjaGluZ1NlcnZpY2VzKGtJT01h
c3RlclBvcnREZWZhdWx0LCBtYXRjaERpY3Rpb25hcnksICZlbnRyeUl0ZXJhdG9yKSAhPQorICAg
ICAgICBrSU9SZXR1cm5TdWNjZXNzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgZW50cnkgPSBJT19PQkpFQ1RfTlVMTDsKKwor
ICAgIHdoaWxlICgoZW50cnkgPSBJT0l0ZXJhdG9yTmV4dChlbnRyeUl0ZXJhdG9yKSkgIT0gSU9f
T0JKRUNUX05VTEwpCisgICAgeworICAgICAgICBjb25zdGV4cHIgdWludDMyX3Qga0NsYXNzQ29k
ZURpc3BsYXlWR0EgPSAweDMwMDAwOworICAgICAgICB1aW50MzJfdCBjbGFzc0NvZGU7CisgICAg
ICAgIEdQVURldmljZUluZm8gaW5mbzsKKworICAgICAgICBpZiAoR2V0RW50cnlQcm9wZXJ0eShl
bnRyeSwgQ0ZTVFIoImNsYXNzLWNvZGUiKSwgJmNsYXNzQ29kZSkgJiYKKyAgICAgICAgICAgIGNs
YXNzQ29kZSA9PSBrQ2xhc3NDb2RlRGlzcGxheVZHQSAmJgorICAgICAgICAgICAgR2V0RW50cnlQ
cm9wZXJ0eShlbnRyeSwgQ0ZTVFIoInZlbmRvci1pZCIpLCAmaW5mby52ZW5kb3JJZCkgJiYKKyAg
ICAgICAgICAgIEdldEVudHJ5UHJvcGVydHkoZW50cnksIENGU1RSKCJkZXZpY2UtaWQiKSwgJmlu
Zm8uZGV2aWNlSWQpKQorICAgICAgICB7CisgICAgICAgICAgICBkZXZpY2VzLT5wdXNoX2JhY2so
aW5mbyk7CisgICAgICAgIH0KKworICAgICAgICBJT09iamVjdFJlbGVhc2UoZW50cnkpOworICAg
IH0KKyAgICBJT09iamVjdFJlbGVhc2UoZW50cnlJdGVyYXRvcik7CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitib29sIEdldFN5c3RlbUluZm8o
U3lzdGVtSW5mbyAqaW5mbykKK3sKKyAgICB7CisgICAgICAgIGludDMyX3QgbWFqb3IgPSAwOwor
ICAgICAgICBpbnQzMl90IG1pbm9yID0gMDsKKyAgICAgICAgUGFyc2VNYWNNYWNoaW5lTW9kZWwo
R2V0TWFjaGluZU1vZGVsKCksICZpbmZvLT5tYWNoaW5lTW9kZWxOYW1lLCAmbWFqb3IsICZtaW5v
cik7CisgICAgICAgIGluZm8tPm1hY2hpbmVNb2RlbFZlcnNpb24gPSBzdGQ6OnRvX3N0cmluZyht
YWpvcikgKyAiLiIgKyBzdGQ6OnRvX3N0cmluZyhtaW5vcik7CisgICAgfQorCisgICAgaWYgKCFH
ZXRQQ0lEZXZpY2VzKCYoaW5mby0+Z3B1cykpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIGlmIChpbmZvLT5ncHVzLmVtcHR5KCkpCisgICAgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gRmluZCB0aGUgYWN0aXZlIEdQVQorICAgIHsK
KyAgICAgICAgVmVuZG9ySUQgYWN0aXZlVmVuZG9yOworICAgICAgICBEZXZpY2VJRCBhY3RpdmVE
ZXZpY2U7CisgICAgICAgIGlmICghR2V0QWN0aXZlR1BVKCZhY3RpdmVWZW5kb3IsICZhY3RpdmVE
ZXZpY2UpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluZm8tPmdwdXMuc2l6ZSgpOyArK2kp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpbmZvLT5ncHVzW2ldLnZlbmRvcklkID09IGFj
dGl2ZVZlbmRvciAmJiBpbmZvLT5ncHVzW2ldLmRldmljZUlkID09IGFjdGl2ZURldmljZSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbmZvLT5hY3RpdmVHUFVJbmRleCA9IGk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBGaW5kUHJpbWFyeUdQVShpbmZvKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit9ICAv
LyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm9fdW5pdHRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb191bml0dGVzdC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMzdkMTM4NDVkYjRmZTY3MGMwNTE5MjNjYTFmNTg4MDAxMGFjYmI3MwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3Rl
bUluZm9fdW5pdHRlc3QuY3BwCkBAIC0wLDAgKzEsMTMxIEBACisvLworLy8gQ29weXJpZ2h0IDIw
MTcgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gU3lzdGVt
SW5mb191bml0dGVzdC5jcHA6IFVuaXQgdGVzdHMgZm9yIFN5c3RlbUluZm8qIGhlbHBlciBmdW5j
dGlvbnMuCisvLworCisjaW5jbHVkZSAiZ3B1X2luZm9fdXRpbC9TeXN0ZW1JbmZvX2ludGVybmFs
LmgiCisKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7
CisKK25hbWVzcGFjZQoreworCisvLyBUZXN0IEFNRCBCcmFobWEgZHJpdmVyIHZlcnNpb24gcGFy
c2luZworVEVTVChTeXN0ZW1JbmZvVGVzdCwgQU1EQnJhaG1hVmVyc2lvblBhcnNpbmcpCit7Cisg
ICAgc3RkOjpzdHJpbmcgdmVyc2lvbjsKKworICAgIC8vIENoZWNrIHBhcnNpbmcgZmFpbHMgd2hl
biBubyB2ZXJzaW9uIHN0cmluZyBpcyBwcmVzZW50LgorICAgIEFTU0VSVF9GQUxTRShQYXJzZUFN
REJyYWhtYURyaXZlclZlcnNpb24oIkkgYW0gYSBsdW1iZXJqYWNrLiIsICZ2ZXJzaW9uKSk7Cisg
ICAgQVNTRVJUX0VRKCIiLCB2ZXJzaW9uKTsKKworICAgIC8vIENoZWNrIHBhcnNpbmcgd2hlbiB0
aGUgc3RyaW5nIGlzIGp1c3QgdGhlIHZlcnNpb24gc3RyaW5nLCB3aXRoIGFuZCB3aXRob3V0IGRv
dHMKKyAgICBBU1NFUlRfVFJVRShQYXJzZUFNREJyYWhtYURyaXZlclZlcnNpb24oIjQyIiwgJnZl
cnNpb24pKTsKKyAgICBBU1NFUlRfRVEoIjQyIiwgdmVyc2lvbik7CisgICAgQVNTRVJUX1RSVUUo
UGFyc2VBTURCcmFobWFEcml2ZXJWZXJzaW9uKCI0Mi4wLjU2IiwgJnZlcnNpb24pKTsKKyAgICBB
U1NFUlRfRVEoIjQyLjAuNTYiLCB2ZXJzaW9uKTsKKworICAgIC8vIENoZWNrIHBhcnNpbmcgd2l0
aCBwcmVmaXggLyBzdWZmaXgKKyAgICBBU1NFUlRfVFJVRShQYXJzZUFNREJyYWhtYURyaXZlclZl
cnNpb24oIlZlcnNpb249NDIuMC41NiIsICZ2ZXJzaW9uKSk7CisgICAgQVNTRVJUX0VRKCI0Mi4w
LjU2IiwgdmVyc2lvbik7CisgICAgQVNTRVJUX1RSVUUoUGFyc2VBTURCcmFobWFEcml2ZXJWZXJz
aW9uKCI0Mi4wLjU2IGlzIHRoZSB2ZXJzaW9uIiwgJnZlcnNpb24pKTsKKyAgICBBU1NFUlRfRVEo
IjQyLjAuNTYiLCB2ZXJzaW9uKTsKKyAgICBBU1NFUlRfVFJVRShQYXJzZUFNREJyYWhtYURyaXZl
clZlcnNpb24oIjQyLjAuNTYgaXMgdGhlIHZlcnNpb24sIDExMSIsICZ2ZXJzaW9uKSk7CisgICAg
QVNTRVJUX0VRKCI0Mi4wLjU2IiwgdmVyc2lvbik7Cit9CisKKy8vIFRlc3QgQU1EIENhdGFseXN0
IHZlcnNpb24gcGFyc2luZworVEVTVChTeXN0ZW1JbmZvVGVzdCwgQU1EQ2F0YWx5c3RWZXJzaW9u
UGFyc2luZykKK3sKKyAgICBzdGQ6OnN0cmluZyB2ZXJzaW9uOworCisgICAgLy8gQ2hlY2sgcGFy
c2luZyBmYWlscyB3aGVuIG5vIHZlcnNpb24gc3RyaW5nIGlzIHByZXNlbnQuCisgICAgQVNTRVJU
X0ZBTFNFKFBhcnNlQU1EQ2F0YWx5c3REcml2ZXJWZXJzaW9uKCJJIGFtIGEgbHVtYmVyamFjay5c
blJlbGVhc2VWZXJzaW9uPSIsICZ2ZXJzaW9uKSk7CisgICAgQVNTRVJUX0VRKCIiLCB2ZXJzaW9u
KTsKKworICAgIC8vIENoZWNrIHBhcnNpbmcgZmFpbHMgd2hlbiBSZWxlYXNlVmVyc2lvbj0gaXMg
cHJlc2VudCBidXQgbm8gbnVtYmVyIGFwcGVhcnMgaW4gdGhlIGxpbmUKKyAgICBBU1NFUlRfRkFM
U0UoUGFyc2VBTURDYXRhbHlzdERyaXZlclZlcnNpb24oIjExXG5SZWxlYXNlVmVyc2lvbj1cbjEy
IiwgJnZlcnNpb24pKTsKKyAgICBBU1NFUlRfRVEoIiIsIHZlcnNpb24pOworCisgICAgLy8gQ2hl
Y2sgcGFyc2luZyB3b3JrcyBvbiB0aGUgc2ltcGxlIGNhc2UKKyAgICBBU1NFUlRfVFJVRShQYXJz
ZUFNRENhdGFseXN0RHJpdmVyVmVyc2lvbigiUmVsZWFzZVZlcnNpb249NDIuMC41NiIsICZ2ZXJz
aW9uKSk7CisgICAgQVNTRVJUX0VRKCI0Mi4wLjU2IiwgdmVyc2lvbik7CisKKyAgICAvLyBDaGVj
ayBwYXJzaW5nIHdvcmtzIGlmIHRoZXJlIGFyZSBvdGhlciBsaW5lcworICAgIEFTU0VSVF9UUlVF
KFBhcnNlQU1EQ2F0YWx5c3REcml2ZXJWZXJzaW9uKCIxMVxuUmVsZWFzZVZlcnNpb249NDIuMC41
NlxuMTIiLCAmdmVyc2lvbikpOworICAgIEFTU0VSVF9FUSgiNDIuMC41NiIsIHZlcnNpb24pOwor
CisgICAgLy8gQ2hlY2sgcGFyc2luZyBnZXQgdGhlIGZpcnN0IHZlcnNpb24gc3RyaW5nCisgICAg
QVNTRVJUX1RSVUUoCisgICAgICAgIFBhcnNlQU1EQ2F0YWx5c3REcml2ZXJWZXJzaW9uKCJSZWxl
YXNlVmVyc2lvbj00Mi4wLjU2XG5SZWxlYXNlVmVyc2lvbj0wIiwgJnZlcnNpb24pKTsKKyAgICBB
U1NFUlRfRVEoIjQyLjAuNTYiLCB2ZXJzaW9uKTsKKworICAgIC8vIENoZWNrIHBhcnNpbmcgd2l0
aCBwcmVmaXggLyBzdWZmaXgKKyAgICBBU1NFUlRfVFJVRShQYXJzZUFNRENhdGFseXN0RHJpdmVy
VmVyc2lvbigiUmVsZWFzZVZlcnNpb249dmVyc2lvbiBpcyA0Mi4wLjU2IiwgJnZlcnNpb24pKTsK
KyAgICBBU1NFUlRfRVEoIjQyLjAuNTYiLCB2ZXJzaW9uKTsKKyAgICBBU1NFUlRfVFJVRShQYXJz
ZUFNRENhdGFseXN0RHJpdmVyVmVyc2lvbigiUmVsZWFzZVZlcnNpb249NDIuMC41NiBpcyB0aGUg
dmVyc2lvbiIsICZ2ZXJzaW9uKSk7CisgICAgQVNTRVJUX0VRKCI0Mi4wLjU2IiwgdmVyc2lvbik7
Cit9CisKKy8vIFRlc3QgTWFjIG1hY2hpbmUgbW9kZWwgcGFyc2luZworVEVTVChTeXN0ZW1JbmZv
VGVzdCwgTWFjTWFjaGluZU1vZGVsUGFyc2luZykKK3sKKyAgICBzdGQ6OnN0cmluZyBtb2RlbDsK
KyAgICBpbnQzMl90IG1ham9yID0gMSwgbWlub3IgPSAyOworCisgICAgLy8gVGVzdCBvbiB0aGUg
ZW1wdHkgc3RyaW5nLCB0aGF0IGlzIHJldHVybmVkIGJ5IEdldE1hY2hpbmVNb2RlbCBvbiBhbiBl
cnJvcgorICAgIEVYUEVDVF9GQUxTRShQYXJzZU1hY01hY2hpbmVNb2RlbCgiIiwgJm1vZGVsLCAm
bWFqb3IsICZtaW5vcikpOworICAgIEVYUEVDVF9FUSgwVSwgbW9kZWwubGVuZ3RoKCkpOworICAg
IEVYUEVDVF9FUSgxLCBtYWpvcik7CisgICAgRVhQRUNUX0VRKDIsIG1pbm9yKTsKKworICAgIC8v
IFRlc3Qgb24gYW4gaW52YWxpZCBzdHJpbmcKKyAgICBFWFBFQ1RfRkFMU0UoUGFyc2VNYWNNYWNo
aW5lTW9kZWwoIkZvb0JhciIsICZtb2RlbCwgJm1ham9yLCAmbWlub3IpKTsKKworICAgIC8vIFRl
c3Qgb24gYSBNYWNQcm8gbW9kZWwKKyAgICBFWFBFQ1RfVFJVRShQYXJzZU1hY01hY2hpbmVNb2Rl
bCgiTWFjUHJvNCwxIiwgJm1vZGVsLCAmbWFqb3IsICZtaW5vcikpOworICAgIEVYUEVDVF9FUSgi
TWFjUHJvIiwgbW9kZWwpOworICAgIEVYUEVDVF9FUSg0LCBtYWpvcik7CisgICAgRVhQRUNUX0VR
KDEsIG1pbm9yKTsKKworICAgIC8vIFRlc3Qgb24gYSBNYWNCb29rUHJvIG1vZGVsCisgICAgRVhQ
RUNUX1RSVUUoUGFyc2VNYWNNYWNoaW5lTW9kZWwoIk1hY0Jvb2tQcm82LDIiLCAmbW9kZWwsICZt
YWpvciwgJm1pbm9yKSk7CisgICAgRVhQRUNUX0VRKCJNYWNCb29rUHJvIiwgbW9kZWwpOworICAg
IEVYUEVDVF9FUSg2LCBtYWpvcik7CisgICAgRVhQRUNUX0VRKDIsIG1pbm9yKTsKK30KKworLy8g
VGVzdCBXaW5kb3dzIENNIERldmljZSBJRCBwYXJzaW5nCitURVNUKFN5c3RlbUluZm9UZXN0LCBD
TURldmljZUlEVG9EZXZpY2VBbmRWZW5kb3JJRCkKK3sKKyAgICB1aW50MzJfdCB2ZW5kb3IgPSAw
OworICAgIHVpbnQzMl90IGRldmljZSA9IDA7CisKKyAgICAvLyBUZXN0IG9uIGEgcmVhbC1saWZl
IENNIERldmljZSBJRAorICAgIEVYUEVDVF9UUlVFKENNRGV2aWNlSURUb0RldmljZUFuZFZlbmRv
cklEKAorICAgICAgICAiUENJXFxWRU5fMTBERSZERVZfMEZGQSZTVUJTWVNfMDk0QjEwREUmUkVW
X0ExXFw0Jjk1NjczQyYwJjAwMTgiLCAmdmVuZG9yLCAmZGV2aWNlKSk7CisgICAgRVhQRUNUX0VR
KDB4MTBkZXUsIHZlbmRvcik7CisgICAgRVhQRUNUX0VRKDB4MGZmYXUsIGRldmljZSk7CisKKyAg
ICAvLyBUZXN0IG9uIGEgc3RyaXBwZWQtZG93biBidXQgdmFsaWQgQ00gRGV2aWNlIElEIHN0cmlu
ZworICAgIEVYUEVDVF9UUlVFKENNRGV2aWNlSURUb0RldmljZUFuZFZlbmRvcklEKCJQQ0lcXFZF
Tl8xMERFJkRFVl8wRkZBIiwgJnZlbmRvciwgJmRldmljZSkpOworICAgIEVYUEVDVF9FUSgweDEw
ZGV1LCB2ZW5kb3IpOworICAgIEVYUEVDVF9FUSgweDBmZmF1LCBkZXZpY2UpOworCisgICAgLy8g
VGVzdCBvbiBhIHN0cmluZyB0aGF0IGlzIHRvbyBzbWFsbAorICAgIEVYUEVDVF9GQUxTRShDTURl
dmljZUlEVG9EZXZpY2VBbmRWZW5kb3JJRCgiXFxWRU5fMTBERSZERVZfMEZGQSIsICZ2ZW5kb3Is
ICZkZXZpY2UpKTsKKyAgICBFWFBFQ1RfRVEoMHUsIHZlbmRvcik7CisgICAgRVhQRUNUX0VRKDB1
LCBkZXZpY2UpOworCisgICAgLy8gVGVzdCB3aXRoIGludmFsaWQgbnVtYmVyCisgICAgRVhQRUNU
X0ZBTFNFKENNRGV2aWNlSURUb0RldmljZUFuZFZlbmRvcklEKCJQQ0lcXFZFTl9YWFhYJkRFVl9Y
WFhYIiwgJnZlbmRvciwgJmRldmljZSkpOworICAgIEVYUEVDVF9FUSgwdSwgdmVuZG9yKTsKKyAg
ICBFWFBFQ1RfRVEoMHUsIGRldmljZSk7Cit9CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5
c3RlbUluZm9fd2luLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191
dGlsL1N5c3RlbUluZm9fd2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMDczODIyNGJmMjk2NGViYmJlNTAy
ZTJlYjBhYWE4MmI2ZGZhZGFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb193aW4uY3BwCkBAIC0wLDAgKzEsMjA0
IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEzLTIwMTcgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBTeXN0ZW1JbmZvX3dpbi5jcHA6IGltcGxlbWVu
dGF0aW9uIG9mIHRoZSBXaW5kb3dzLXNwZWNpZmljIHBhcnRzIG9mIFN5c3RlbUluZm8uaAorCisj
aW5jbHVkZSAiZ3B1X2luZm9fdXRpbC9TeXN0ZW1JbmZvX2ludGVybmFsLmgiCisKKy8vIFdpbmRv
d3MuaCBuZWVkcyB0byBiZSBpbmNsdWRlZCBmaXJzdAorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKwor
I2lmIGRlZmluZWQoR1BVX0lORk9fVVNFX1NFVFVQQVBJKQorI2luY2x1ZGUgPGNmZ21ncjMyLmg+
CisjaW5jbHVkZSA8c2V0dXBhcGkuaD4KKyNlbGlmIGRlZmluZWQoR1BVX0lORk9fVVNFX0RYR0kp
CisjaW5jbHVkZSA8ZHhnaS5oPgorI2luY2x1ZGUgPGQzZDEwLmg+CisjZWxzZQorI2Vycm9yICJT
eXN0ZW1JbmZvX3dpbiBuZWVkcyBhdCBsZWFzdCBHUFVfSU5GT19VU0VfU0VUVVBBUEkgb3IgR1BV
X0lORk9fVVNFX0RYR0kgZGVmaW5lZCIKKyNlbmRpZgorCisjaW5jbHVkZSA8YXJyYXk+CisjaW5j
bHVkZSA8c3N0cmVhbT4KKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK25hbWVzcGFjZQoreworCisj
aWYgZGVmaW5lZChHUFVfSU5GT19VU0VfU0VUVVBBUEkpCisKK3N0ZDo6c3RyaW5nIEdldFJlZ2lz
dHJ5U3RyaW5nVmFsdWUoSEtFWSBrZXksIGNvbnN0IGNoYXIgKnZhbHVlTmFtZSkKK3sKKyAgICBz
dGQ6OmFycmF5PGNoYXIsIDI1NT4gdmFsdWU7CisgICAgRFdPUkQgdmFsdWVTaXplID0gc2l6ZW9m
KHZhbHVlKTsKKyAgICBpZiAoUmVnUXVlcnlWYWx1ZUV4QShrZXksIHZhbHVlTmFtZSwgbnVsbHB0
ciwgbnVsbHB0ciwgcmVpbnRlcnByZXRfY2FzdDxMUEJZVEU+KHZhbHVlLmRhdGEoKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgJnZhbHVlU2l6ZSkgPT0gRVJST1JfU1VDQ0VTUykKKyAgICB7
CisgICAgICAgIHJldHVybiB2YWx1ZS5kYXRhKCk7CisgICAgfQorICAgIHJldHVybiAiIjsKK30K
KworLy8gR2F0aGVycyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGV2aWNlcyBmcm9tIHRoZSByZWdp
c3RyeS4gVGhlIHJlYXNvbiB3aHkgd2UgYXJlbid0IHVzaW5nCisvLyBhIGRlZGljYXRlZCBBUEkg
c3VjaCBhcyBEWEdJIGlzIHRoYXQgd2UgbmVlZCBpbmZvcm1hdGlvbiBsaWtlIHRoZSBkcml2ZXIg
dmVuZG9yIGFuZCBkYXRlLgorLy8gRFhHSSBkb2Vzbid0IHByb3ZpZGUgYSB3YXkgdG8ga25vdyB0
aGUgZGV2aWNlIHJlZ2lzdHJ5IGtleSBmcm9tIGFuIElEWEdJQWRhcHRlci4KK2Jvb2wgR2V0RGV2
aWNlc0Zyb21SZWdpc3RyeShzdGQ6OnZlY3RvcjxHUFVEZXZpY2VJbmZvPiAqZGV2aWNlcykKK3sK
KyAgICAvLyBEaXNwbGF5IGFkYXB0ZXIgY2xhc3MgR1VJRCBmcm9tCisgICAgLy8gaHR0cHM6Ly9t
c2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2hhcmR3YXJlL2ZmNTUzNDI2
JTI4dj12cy44NSUyOS5hc3B4CisgICAgR1VJRCBkaXNwbGF5Q2xhc3MgPSB7CisgICAgICAgIDB4
NGQzNmU5NjgsIDB4ZTMyNSwgMHgxMWNlLCB7MHhiZiwgMHhjMSwgMHgwOCwgMHgwMCwgMHgyYiwg
MHhlMSwgMHgwMywgMHgxOH19OworCisgICAgSERFVklORk8gZGV2aWNlSW5mbyA9IFNldHVwRGlH
ZXRDbGFzc0RldnNXKCZkaXNwbGF5Q2xhc3MsIG51bGxwdHIsIG51bGxwdHIsIERJR0NGX1BSRVNF
TlQpOworCisgICAgaWYgKGRldmljZUluZm8gPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gVGhpcyBpdGVyYXRlcyBv
dmVyIHRoZSBkZXZpY2VzIG9mIHRoZSAiRGlzcGxheSBhZGFwdGVyIiBjbGFzcworICAgIERXT1JE
IGRldmljZUluZGV4ID0gMDsKKyAgICBTUF9ERVZJTkZPX0RBVEEgZGV2aWNlRGF0YTsKKyAgICBk
ZXZpY2VEYXRhLmNiU2l6ZSA9IHNpemVvZihkZXZpY2VEYXRhKTsKKyAgICB3aGlsZSAoU2V0dXBE
aUVudW1EZXZpY2VJbmZvKGRldmljZUluZm8sIGRldmljZUluZGV4KyssICZkZXZpY2VEYXRhKSkK
KyAgICB7CisgICAgICAgIC8vIFRoZSBkZXZpY2UgYW5kIHZlbmRvciBJRHMgY2FuIGJlIGdhdGhl
cmVkIGRpcmVjdGx5LCBidXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRyaXZlcgorICAgICAgICAv
LyByZXF1aXJlcyBzb21lIHJlZ2lzdHJ5IGRpZ2dpbmcKKyAgICAgICAgY2hhciBmdWxsRGV2aWNl
SURbTUFYX0RFVklDRV9JRF9MRU5dOworICAgICAgICBpZiAoQ01fR2V0X0RldmljZV9JREEoZGV2
aWNlRGF0YS5EZXZJbnN0LCBmdWxsRGV2aWNlSUQsIE1BWF9ERVZJQ0VfSURfTEVOLCAwKSAhPSBD
Ul9TVUNDRVNTKQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
CisgICAgICAgIEdQVURldmljZUluZm8gZGV2aWNlOworCisgICAgICAgIGlmICghQ01EZXZpY2VJ
RFRvRGV2aWNlQW5kVmVuZG9ySUQoZnVsbERldmljZUlELCAmZGV2aWNlLnZlbmRvcklkLCAmZGV2
aWNlLmRldmljZUlkKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKworICAgICAgICAvLyBUaGUgZHJpdmVyIGtleSB3aWxsIGVuZCB3aXRoIHNvbWV0aGluZyBs
aWtlIHs8ZGlzcGxheUNsYXNzPn0vPDQgZGlnaXQgbnVtYmVyPi4KKyAgICAgICAgc3RkOjphcnJh
eTxXQ0hBUiwgMjU1PiB2YWx1ZTsKKyAgICAgICAgaWYgKCFTZXR1cERpR2V0RGV2aWNlUmVnaXN0
cnlQcm9wZXJ0eVcoZGV2aWNlSW5mbywgJmRldmljZURhdGEsIFNQRFJQX0RSSVZFUiwgbnVsbHB0
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxQQllURT4odmFsdWUuZGF0YSgpKSwgc2l6ZW9mKHZhbHVlKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cikpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgc3RkOjp3c3Ry
aW5nIGRyaXZlcktleSA9IEwiU3lzdGVtXFxDdXJyZW50Q29udHJvbFNldFxcQ29udHJvbFxcQ2xh
c3NcXCI7CisgICAgICAgIGRyaXZlcktleSArPSB2YWx1ZS5kYXRhKCk7CisKKyAgICAgICAgSEtF
WSBrZXk7CisgICAgICAgIGlmIChSZWdPcGVuS2V5RXhXKEhLRVlfTE9DQUxfTUFDSElORSwgZHJp
dmVyS2V5LmNfc3RyKCksIDAsIEtFWV9RVUVSWV9WQUxVRSwgJmtleSkgIT0KKyAgICAgICAgICAg
IEVSUk9SX1NVQ0NFU1MpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisKKyAgICAgICAgZGV2aWNlLmRyaXZlclZlcnNpb24gPSBHZXRSZWdpc3RyeVN0cmluZ1Zh
bHVlKGtleSwgIkRyaXZlclZlcnNpb24iKTsKKyAgICAgICAgZGV2aWNlLmRyaXZlckRhdGUgICAg
PSBHZXRSZWdpc3RyeVN0cmluZ1ZhbHVlKGtleSwgIkRyaXZlckRhdGUiKTsKKyAgICAgICAgZGV2
aWNlLmRyaXZlclZlbmRvciAgPSBHZXRSZWdpc3RyeVN0cmluZ1ZhbHVlKGtleSwgIlByb3ZpZGVy
TmFtZSIpOworCisgICAgICAgIFJlZ0Nsb3NlS2V5KGtleSk7CisKKyAgICAgICAgZGV2aWNlcy0+
cHVzaF9iYWNrKGRldmljZSk7CisgICAgfQorCisgICAgU2V0dXBEaURlc3Ryb3lEZXZpY2VJbmZv
TGlzdChkZXZpY2VJbmZvKTsKKworICAgIHJldHVybiB0cnVlOworfQorCisjZWxpZiBkZWZpbmVk
KEdQVV9JTkZPX1VTRV9EWEdJKQorCitib29sIEdldERldmljZXNGcm9tRFhHSShzdGQ6OnZlY3Rv
cjxHUFVEZXZpY2VJbmZvPiAqZGV2aWNlcykKK3sKKyAgICBJRFhHSUZhY3RvcnkgKmZhY3Rvcnk7
CisgICAgaWYgKCFTVUNDRUVERUQoQ3JlYXRlRFhHSUZhY3RvcnkoX191dWlkb2YoSURYR0lGYWN0
b3J5KSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkICoqPigmZmFjdG9yeSkpKSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBVSU5UIGkgICAgICAgICAgICAgICAgPSAw
OworICAgIElEWEdJQWRhcHRlciAqYWRhcHRlciA9IG51bGxwdHI7CisgICAgd2hpbGUgKGZhY3Rv
cnktPkVudW1BZGFwdGVycyhpKyssICZhZGFwdGVyKSAhPSBEWEdJX0VSUk9SX05PVF9GT1VORCkK
KyAgICB7CisgICAgICAgIERYR0lfQURBUFRFUl9ERVNDIGRlc2M7CisgICAgICAgIGFkYXB0ZXIt
PkdldERlc2MoJmRlc2MpOworCisgICAgICAgIExBUkdFX0lOVEVHRVIgdW1kVmVyc2lvbjsKKyAg
ICAgICAgaWYgKGFkYXB0ZXItPkNoZWNrSW50ZXJmYWNlU3VwcG9ydChfX3V1aWRvZihJRDNEMTBE
ZXZpY2UpLCAmdW1kVmVyc2lvbikgPT0KKyAgICAgICAgICAgIERYR0lfRVJST1JfVU5TVVBQT1JU
RUQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFkYXB0ZXItPlJlbGVhc2UoKTsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGhlIFVNRCBkcml2ZXIgdmVy
c2lvbiBoZXJlIGlzIHRoZSBzYW1lIGFzIGluIHRoZSByZWdpc3RyeSBleGNlcHQgZm9yIHRoZSBs
YXN0IG51bWJlci4KKyAgICAgICAgdWludDY0X3QgaW50VmVyc2lvbiA9IHVtZFZlcnNpb24uUXVh
ZFBhcnQ7CisgICAgICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBvOworCisgICAgICAgIGNvbnN0IHVp
bnQ2NF90IGtNYXNrID0gMHhGRjsKKyAgICAgICAgbyA8PCAoKGludFZlcnNpb24gPj4gNDgpICYg
a01hc2spIDw8ICIuIjsKKyAgICAgICAgbyA8PCAoKGludFZlcnNpb24gPj4gMzIpICYga01hc2sp
IDw8ICIuIjsKKyAgICAgICAgbyA8PCAoKGludFZlcnNpb24gPj4gMTYpICYga01hc2spIDw8ICIu
IjsKKyAgICAgICAgbyA8PCAoaW50VmVyc2lvbiAmIGtNYXNrKTsKKworICAgICAgICBHUFVEZXZp
Y2VJbmZvIGRldmljZTsKKyAgICAgICAgZGV2aWNlLnZlbmRvcklkICAgICAgPSBkZXNjLlZlbmRv
cklkOworICAgICAgICBkZXZpY2UuZGV2aWNlSWQgICAgICA9IGRlc2MuRGV2aWNlSWQ7CisgICAg
ICAgIGRldmljZS5kcml2ZXJWZXJzaW9uID0gby5zdHIoKTsKKworICAgICAgICBkZXZpY2VzLT5w
dXNoX2JhY2soZGV2aWNlKTsKKworICAgICAgICBhZGFwdGVyLT5SZWxlYXNlKCk7CisgICAgfQor
CisgICAgZmFjdG9yeS0+UmVsZWFzZSgpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNlbHNl
CisjZXJyb3IKKyNlbmRpZgorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK2Jvb2wgR2V0
U3lzdGVtSW5mbyhTeXN0ZW1JbmZvICppbmZvKQoreworI2lmIGRlZmluZWQoR1BVX0lORk9fVVNF
X1NFVFVQQVBJKQorICAgIGlmICghR2V0RGV2aWNlc0Zyb21SZWdpc3RyeSgmaW5mby0+Z3B1cykp
CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VsaWYgZGVmaW5lZChHUFVf
SU5GT19VU0VfRFhHSSkKKyAgICBpZiAoIUdldERldmljZXNGcm9tRFhHSSgmaW5mby0+Z3B1cykp
CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2Vsc2UKKyNlcnJvcgorI2Vu
ZGlmCisKKyAgICBpZiAoaW5mby0+Z3B1cy5zaXplKCkgPT0gMCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBGaW5kUHJpbWFyeUdQVShpbmZvKTsKKworICAgIC8v
IG52ZDNkOXdyYXAuZGxsIGlzIGxvYWRlZCBpbnRvIGFsbCBwcm9jZXNzZXMgd2hlbiBPcHRpbXVz
IGlzIGVuYWJsZWQuCisgICAgSE1PRFVMRSBudmQzZDl3cmFwID0gR2V0TW9kdWxlSGFuZGxlVyhM
Im52ZDNkOXdyYXAuZGxsIik7CisgICAgaW5mby0+aXNPcHRpbXVzICAgID0gbnZkM2Q5d3JhcCAh
PSBudWxscHRyOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmds
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwv
U3lzdGVtSW5mb194MTEuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZv
X3V0aWwvU3lzdGVtSW5mb194MTEuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjY2RjZWFhNjgwMGQ5MGI4NmFj
YmUzYmQzMjNkOTJhNWMzYzc1NDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvZ3B1X2luZm9fdXRpbC9TeXN0ZW1JbmZvX3gxMS5jcHAKQEAgLTAsMCArMSw1
MyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMy0yMDE3IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gU3lzdGVtSW5mb194MTEuY3BwOiBpbXBsZW1l
bnRhdGlvbiBvZiB0aGUgWDExLXNwZWNpZmljIHBhcnRzIG9mIFN5c3RlbUluZm8uaAorCisjaW5j
bHVkZSAiZ3B1X2luZm9fdXRpbC9TeXN0ZW1JbmZvX2ludGVybmFsLmgiCisKKyNpbmNsdWRlIDxY
MTEvWGxpYi5oPgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAidGhpcmRf
cGFydHkvbGliWE5WQ3RybC9OVkN0cmwuaCIKKyNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJYTlZD
dHJsL05WQ3RybExpYi5oIgorCisjaWYgIWRlZmluZWQoR1BVX0lORk9fVVNFX1gxMSkKKyNlcnJv
ciBTeXN0ZW1JbmZvX3gxMS5jcHAgY29tcGlsZWQgd2l0aG91dCBHUFVfSU5GT19VU0VfWDExCisj
ZW5kaWYKKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK2Jvb2wgR2V0TnZpZGlhRHJpdmVyVmVyc2lv
bldpdGhYTlZDdHJsKHN0ZDo6c3RyaW5nICp2ZXJzaW9uKQoreworICAgICp2ZXJzaW9uID0gIiI7
CisKKyAgICBpbnQgZXZlbnRCYXNlID0gMDsKKyAgICBpbnQgZXJyb3JCYXNlID0gMDsKKworICAg
IERpc3BsYXkgKmRpc3BsYXkgPSBYT3BlbkRpc3BsYXkoTlVMTCk7CisKKyAgICBpZiAoWE5WQ1RS
TFF1ZXJ5RXh0ZW5zaW9uKGRpc3BsYXksICZldmVudEJhc2UsICZlcnJvckJhc2UpKQorICAgIHsK
KyAgICAgICAgaW50IHNjcmVlbkNvdW50ID0gU2NyZWVuQ291bnQoZGlzcGxheSk7CisgICAgICAg
IGZvciAoaW50IHNjcmVlbiA9IDA7IHNjcmVlbiA8IHNjcmVlbkNvdW50OyArK3NjcmVlbikKKyAg
ICAgICAgeworICAgICAgICAgICAgY2hhciAqYnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgICAg
IGlmIChYTlZDVFJMSXNOdlNjcmVlbihkaXNwbGF5LCBzY3JlZW4pICYmCisgICAgICAgICAgICAg
ICAgWE5WQ1RSTFF1ZXJ5U3RyaW5nQXR0cmlidXRlKGRpc3BsYXksIHNjcmVlbiwgMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlZfQ1RSTF9TVFJJTkdfTlZJ
RElBX0RSSVZFUl9WRVJTSU9OLCAmYnVmZmVyKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoYnVmZmVyICE9IG51bGxwdHIpOworICAgICAgICAgICAgICAgICp2ZXJzaW9u
ID0gYnVmZmVyOworICAgICAgICAgICAgICAgIFhGcmVlKGJ1ZmZlcik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9p
bWFnZV91dGlsL2xvYWRpbWFnZS5oCmluZGV4IDU5OGU4NTJmMTg1M2VjZGUyNjM1ZDY4MTZmNDdl
ODA3Mzg4NzY3ODUuLjNlOGFhYzc5YzIzMTMxMmY1MDZlN2VkYzYxMWFlZDY3MDkxYjJiYTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2xvYWRpbWFn
ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2xvYWRpbWFn
ZS5oCkBAIC01NjEsNiArNTYxLDE2IEBAIHZvaWQgTG9hZEVUQzJSR0I4VG9SR0JBOChzaXplX3Qg
d2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAog
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKIAordm9p
ZCBMb2FkRVRDMlJHQjhUb0JDMShzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpv
dXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCiB2b2lkIExv
YWRFVEMyU1JHQjhUb1JHQkE4KHNpemVfdCB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRo
LApAQCAtNTcxLDYgKzU4MSwxNiBAQCB2b2lkIExvYWRFVEMyU1JHQjhUb1JHQkE4KHNpemVfdCB3
aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CiAKK3Zv
aWQgTG9hZEVUQzJTUkdCOFRvQkMxKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVp
bnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRSb3dQ
aXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsK
Kwogdm9pZCBMb2FkRVRDMlJHQjhBMVRvUkdCQTgoc2l6ZV90IHdpZHRoLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBkZXB0aCwKQEAgLTU4MSw2ICs2MDEsMTYgQEAgdm9pZCBMb2FkRVRDMlJHQjhBMVRv
UkdCQTgoc2l6ZV90IHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91
dHB1dFJvd1BpdGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERl
cHRoUGl0Y2gpOwogCit2b2lkIExvYWRFVEMyUkdCOEExVG9CQzEoc2l6ZV90IHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNo
LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKIHZvaWQgTG9hZEVUQzJTUkdCOEExVG9SR0JBOChz
aXplX3Qgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCkBAIC01OTEsNiArNjIx
LDE2IEBAIHZvaWQgTG9hZEVUQzJTUkdCOEExVG9SR0JBOChzaXplX3Qgd2lkdGgsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKIAordm9pZCBMb2FkRVRD
MlNSR0I4QTFUb0JDMShzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRw
dXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRo
UGl0Y2gpOworCiB2b2lkIExvYWRFVEMyUkdCQThUb1JHQkE4KHNpemVfdCB3aWR0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGRlcHRoLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2ltYWdlX3V0aWwvbG9hZGltYWdlX2V0Yy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvaW1hZ2VfdXRpbC9sb2FkaW1hZ2VfZXRjLmNwcAppbmRleCBiMDg4MWY3Mjg3ODU5NzJj
Y2QwNzdjYTAyN2U5ZDUzYzNmYjk3Yzk5Li43YzdlOGRkNWU3YTQwNzBkZTcwZDZhYWQxZWZlNGNh
YTc5OWQxMWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvaW1hZ2Vf
dXRpbC9sb2FkaW1hZ2VfZXRjLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
aW1hZ2VfdXRpbC9sb2FkaW1hZ2VfZXRjLmNwcApAQCAtNTI4LDggKzUyOCw5IEBAIHN0cnVjdCBF
VEMyQmxvY2sKICAgICAgICAgaW50IGIyID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLkhCMik7CiAK
ICAgICAgICAgc3RhdGljIGNvbnN0IGludCBkaXN0YW5jZVs4XSA9IHszLCA2LCAxMSwgMTYsIDIz
LCAzMiwgNDEsIDY0fTsKLSAgICAgICAgY29uc3QgaW50IGQgICAgICAgICAgICAgICAgICA9IGRp
c3RhbmNlWyhibG9jay5IZGEgPDwgMikgfCAoYmxvY2suSGRiIDw8IDEpIHwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoKHIxIDw8IDE2IHwgZzEgPDwgOCB8IGIxKSA+PSAocjIgPDwg
MTYgfCBnMiA8PCA4IHwgYjIpID8gMSA6IDApXTsKKyAgICAgICAgY29uc3QgaW50IG9yZGVyaW5n
VHJpY2tCaXQgPQorICAgICAgICAgICAgKChyMSA8PCAxNiB8IGcxIDw8IDggfCBiMSkgPj0gKHIy
IDw8IDE2IHwgZzIgPDwgOCB8IGIyKSA/IDEgOiAwKTsKKyAgICAgICAgY29uc3QgaW50IGQgPSBk
aXN0YW5jZVsoYmxvY2suSGRhIDw8IDIpIHwgKGJsb2NrLkhkYiA8PCAxKSB8IG9yZGVyaW5nVHJp
Y2tCaXRdOwogCiAgICAgICAgIGNvbnN0IFI4RzhCOEE4IHBhaW50Q29sb3JzWzRdID0gewogICAg
ICAgICAgICAgY3JlYXRlUkdCQShyMSArIGQsIGcxICsgZCwgYjEgKyBkKSwgY3JlYXRlUkdCQShy
MSAtIGQsIGcxIC0gZCwgYjEgLSBkKSwKQEAgLTExMjksOCArMTEzMCw0OCBAQCBzdHJ1Y3QgRVRD
MkJsb2NrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90IGFscGhh
VmFsdWVzWzRdWzRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBub25PcGFx
dWVQdW5jaFRocm91Z2hBbHBoYSkgY29uc3QKICAgICB7Ci0gICAgICAgIC8vIFRPRE8gKG1nb25n
KTogV2lsbCBiZSBpbXBsZW1lbnRlZCBzb29uCi0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBrTnVtQ29sb3JzID0gNDsKKworICAgICAgICAvLyBU
YWJsZSBDLjgsIGRpc3RhbmNlIGluZGV4IGZvciBUIGFuZCBIIG1vZGVzCisgICAgICAgIGNvbnN0
IGF1dG8gJmJsb2NrID0gdS5pZGh0Lm1vZGUudG07CisKKyAgICAgICAgaW50IHIxID0gZXh0ZW5k
XzR0bzhiaXRzKGJsb2NrLlRSMWEgPDwgMiB8IGJsb2NrLlRSMWIpOworICAgICAgICBpbnQgZzEg
PSBleHRlbmRfNHRvOGJpdHMoYmxvY2suVEcxKTsKKyAgICAgICAgaW50IGIxID0gZXh0ZW5kXzR0
bzhiaXRzKGJsb2NrLlRCMSk7CisgICAgICAgIGludCByMiA9IGV4dGVuZF80dG84Yml0cyhibG9j
ay5UUjIpOworICAgICAgICBpbnQgZzIgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suVEcyKTsKKyAg
ICAgICAgaW50IGIyID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLlRCMik7CisKKyAgICAgICAgc3Rh
dGljIGludCBkaXN0YW5jZVs4XSA9IHszLCA2LCAxMSwgMTYsIDIzLCAzMiwgNDEsIDY0fTsKKyAg
ICAgICAgY29uc3QgaW50IGQgICAgICAgICAgICA9IGRpc3RhbmNlW2Jsb2NrLlRkYSA8PCAxIHwg
YmxvY2suVGRiXTsKKworICAgICAgICAvLyBJbiBFVEMgb3BhcXVlIHB1bmNoIHRocm91Z2ggZm9y
bWF0cywgaW5kZXggPT0gMiBtZWFucyB0cmFuc3BhcmVudCBwaXhlbC4KKyAgICAgICAgLy8gVGh1
cyB3ZSBkb24ndCBuZWVkIHRvIGNvbXB1dGUgaXRzIGNvbG9yLCBqdXN0IGFzc2lnbiBpdCBhcyBi
bGFjay4KKyAgICAgICAgY29uc3QgUjhHOEI4QTggcGFpbnRDb2xvcnNba051bUNvbG9yc10gPSB7
CisgICAgICAgICAgICBjcmVhdGVSR0JBKHIxLCBnMSwgYjEpLCBjcmVhdGVSR0JBKHIyICsgZCwg
ZzIgKyBkLCBiMiArIGQpLAorICAgICAgICAgICAgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEg
PyBjcmVhdGVSR0JBKDAsIDAsIDAsIDApIDogY3JlYXRlUkdCQShyMiwgZzIsIGIyKSwKKyAgICAg
ICAgICAgIGNyZWF0ZVJHQkEocjIgLSBkLCBnMiAtIGQsIGIyIC0gZCksCisgICAgICAgIH07CisK
KyAgICAgICAgaW50IHBpeGVsSW5kaWNlc1trTnVtUGl4ZWxzSW5CbG9ja107CisgICAgICAgIGlu
dCBwaXhlbEluZGV4Q291bnRzW2tOdW1Db2xvcnNdID0gezB9OworICAgICAgICBmb3IgKHNpemVf
dCBqID0gMDsgaiA8IDQ7IGorKykKKyAgICAgICAgeworICAgICAgICAgICAgaW50ICpyb3cgPSAm
cGl4ZWxJbmRpY2VzW2ogKiA0XTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
NDsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBwaXhl
bEluZGV4ID0gZ2V0SW5kZXgoaSwgaik7CisgICAgICAgICAgICAgICAgcm93W2ldICAgICAgICAg
ICAgICAgICAgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVsSW5kZXgpOworICAgICAgICAgICAgICAg
IHBpeGVsSW5kZXhDb3VudHNbcGl4ZWxJbmRleF0rKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIGludCBtaW5Db2xvckluZGV4LCBtYXhDb2xvckluZGV4OworICAgICAgICBz
ZWxlY3RFbmRQb2ludFBDQShwaXhlbEluZGV4Q291bnRzLCBwYWludENvbG9ycywga051bUNvbG9y
cywgJm1pbkNvbG9ySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICZtYXhDb2xvcklu
ZGV4KTsKKworICAgICAgICBwYWNrQkMxKGRlc3QsIHBpeGVsSW5kaWNlcywgcGl4ZWxJbmRleENv
dW50cywgcGFpbnRDb2xvcnMsIGtOdW1Db2xvcnMsIG1pbkNvbG9ySW5kZXgsCisgICAgICAgICAg
ICAgICAgbWF4Q29sb3JJbmRleCwgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpOwogICAgIH0K
IAogICAgIHZvaWQgdHJhbnNjb2RlSEJsb2NrVG9CQzEodWludDhfdCAqZGVzdCwKQEAgLTExNDEs
OCArMTE4Miw1MSBAQCBzdHJ1Y3QgRVRDMkJsb2NrCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1aW50OF90IGFscGhhVmFsdWVzWzRdWzRdLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSkgY29uc3QKICAgICB7
Ci0gICAgICAgIC8vIFRPRE8gKG1nb25nKTogV2lsbCBiZSBpbXBsZW1lbnRlZCBzb29uCi0gICAg
ICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBrTnVtQ29s
b3JzID0gNDsKKworICAgICAgICAvLyBUYWJsZSBDLjgsIGRpc3RhbmNlIGluZGV4IGZvciBUIGFu
ZCBIIG1vZGVzCisgICAgICAgIGNvbnN0IGF1dG8gJmJsb2NrID0gdS5pZGh0Lm1vZGUuaG07CisK
KyAgICAgICAgaW50IHIxID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLkhSMSk7CisgICAgICAgIGlu
dCBnMSA9IGV4dGVuZF80dG84Yml0cyhibG9jay5IRzFhIDw8IDEgfCBibG9jay5IRzFiKTsKKyAg
ICAgICAgaW50IGIxID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLkhCMWEgPDwgMyB8IGJsb2NrLkhC
MWIgPDwgMSB8IGJsb2NrLkhCMWMpOworICAgICAgICBpbnQgcjIgPSBleHRlbmRfNHRvOGJpdHMo
YmxvY2suSFIyKTsKKyAgICAgICAgaW50IGcyID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLkhHMmEg
PDwgMSB8IGJsb2NrLkhHMmIpOworICAgICAgICBpbnQgYjIgPSBleHRlbmRfNHRvOGJpdHMoYmxv
Y2suSEIyKTsKKworICAgICAgICBzdGF0aWMgY29uc3QgaW50IGRpc3RhbmNlWzhdID0gezMsIDYs
IDExLCAxNiwgMjMsIDMyLCA0MSwgNjR9OworICAgICAgICBjb25zdCBpbnQgb3JkZXJpbmdUcmlj
a0JpdCA9CisgICAgICAgICAgICAoKHIxIDw8IDE2IHwgZzEgPDwgOCB8IGIxKSA+PSAocjIgPDwg
MTYgfCBnMiA8PCA4IHwgYjIpID8gMSA6IDApOworICAgICAgICBjb25zdCBpbnQgZCA9IGRpc3Rh
bmNlWyhibG9jay5IZGEgPDwgMikgfCAoYmxvY2suSGRiIDw8IDEpIHwgb3JkZXJpbmdUcmlja0Jp
dF07CisKKyAgICAgICAgLy8gSW4gRVRDIG9wYXF1ZSBwdW5jaCB0aHJvdWdoIGZvcm1hdHMsIGlu
ZGV4ID09IDIgbWVhbnMgdHJhbnNwYXJlbnQgcGl4ZWwuCisgICAgICAgIC8vIFRodXMgd2UgZG9u
J3QgbmVlZCB0byBjb21wdXRlIGl0cyBjb2xvciwganVzdCBhc3NpZ24gaXQgYXMgYmxhY2suCisg
ICAgICAgIGNvbnN0IFI4RzhCOEE4IHBhaW50Q29sb3JzW2tOdW1Db2xvcnNdID0geworICAgICAg
ICAgICAgY3JlYXRlUkdCQShyMSArIGQsIGcxICsgZCwgYjEgKyBkKSwgY3JlYXRlUkdCQShyMSAt
IGQsIGcxIC0gZCwgYjEgLSBkKSwKKyAgICAgICAgICAgIG5vbk9wYXF1ZVB1bmNoVGhyb3VnaEFs
cGhhID8gY3JlYXRlUkdCQSgwLCAwLCAwLCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiBjcmVhdGVSR0JBKHIyICsgZCwgZzIgKyBkLCBiMiArIGQpLAorICAgICAg
ICAgICAgY3JlYXRlUkdCQShyMiAtIGQsIGcyIC0gZCwgYjIgLSBkKSwKKyAgICAgICAgfTsKKwor
ICAgICAgICBpbnQgcGl4ZWxJbmRpY2VzW2tOdW1QaXhlbHNJbkJsb2NrXTsKKyAgICAgICAgaW50
IHBpeGVsSW5kZXhDb3VudHNba051bUNvbG9yc10gPSB7MH07CisgICAgICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwgNDsgaisrKQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgKnJvdyA9ICZw
aXhlbEluZGljZXNbaiAqIDRdOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA0
OyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3Qgc2l6ZV90IHBpeGVs
SW5kZXggPSBnZXRJbmRleChpLCBqKTsKKyAgICAgICAgICAgICAgICByb3dbaV0gICAgICAgICAg
ICAgICAgICA9IHN0YXRpY19jYXN0PGludD4ocGl4ZWxJbmRleCk7CisgICAgICAgICAgICAgICAg
cGl4ZWxJbmRleENvdW50c1twaXhlbEluZGV4XSsrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgaW50IG1pbkNvbG9ySW5kZXgsIG1heENvbG9ySW5kZXg7CisgICAgICAgIHNl
bGVjdEVuZFBvaW50UENBKHBpeGVsSW5kZXhDb3VudHMsIHBhaW50Q29sb3JzLCBrTnVtQ29sb3Jz
LCAmbWluQ29sb3JJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm1heENvbG9ySW5k
ZXgpOworCisgICAgICAgIHBhY2tCQzEoZGVzdCwgcGl4ZWxJbmRpY2VzLCBwaXhlbEluZGV4Q291
bnRzLCBwYWludENvbG9ycywga051bUNvbG9ycywgbWluQ29sb3JJbmRleCwKKyAgICAgICAgICAg
ICAgICBtYXhDb2xvckluZGV4LCBub25PcGFxdWVQdW5jaFRocm91Z2hBbHBoYSk7CiAgICAgfQog
CiAgICAgdm9pZCB0cmFuc2NvZGVQbGFuYXJCbG9ja1RvQkMxKHVpbnQ4X3QgKmRlc3QsCkBAIC0x
MTUyLDggKzEyMzYsMjIgQEAgc3RydWN0IEVUQzJCbG9jawogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSkgY29uc3QKICAgICB7Ci0gICAgICAg
IC8vIFRPRE8gKG1nb25nKTogV2lsbCBiZSBpbXBsZW1lbnRlZCBzb29uCi0gICAgICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBrTnVtQ29sb3JzID0ga051
bVBpeGVsc0luQmxvY2s7CisKKyAgICAgICAgUjhHOEI4QTggcmdiYUJsb2NrW2tOdW1Db2xvcnNd
OworICAgICAgICBkZWNvZGVQbGFuYXJCbG9jayhyZWludGVycHJldF9jYXN0PHVpbnQ4X3QgKj4o
cmdiYUJsb2NrKSwgeCwgeSwgdywgaCwgc2l6ZW9mKFI4RzhCOEE4KSAqIDQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFscGhhVmFsdWVzKTsKKworICAgICAgICAvLyBQbGFuYXIgYmxvY2sg
ZG9lc24ndCBoYXZlIGEgY29sb3IgdGFibGUsIGZpbGwgaW5kaWNlcyBhcyBmdWxsCisgICAgICAg
IGludCBwaXhlbEluZGljZXNba051bVBpeGVsc0luQmxvY2tdID0gezAsIDEsIDIsICAzLCAgNCwg
IDUsICA2LCAgNywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNX07CisgICAgICAgIGludCBwaXhlbEluZGV4
Q291bnRzW2tOdW1Db2xvcnNdID0gezEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEs
IDEsIDEsIDEsIDF9OworCisgICAgICAgIGludCBtaW5Db2xvckluZGV4LCBtYXhDb2xvckluZGV4
OworICAgICAgICBzZWxlY3RFbmRQb2ludFBDQShwaXhlbEluZGV4Q291bnRzLCByZ2JhQmxvY2ss
IGtOdW1Db2xvcnMsICZtaW5Db2xvckluZGV4LCAmbWF4Q29sb3JJbmRleCk7CisKKyAgICAgICAg
cGFja0JDMShkZXN0LCBwaXhlbEluZGljZXMsIHBpeGVsSW5kZXhDb3VudHMsIHJnYmFCbG9jaywg
a051bUNvbG9ycywgbWluQ29sb3JJbmRleCwKKyAgICAgICAgICAgICAgICBtYXhDb2xvckluZGV4
LCBmYWxzZSk7CiAgICAgfQogCiAgICAgLy8gU2luZ2xlIGNoYW5uZWwgdXRpbGl0eSBmdW5jdGlv
bnMKQEAgLTE0OTksNiArMTU5NywyMCBAQCB2b2lkIExvYWRFVEMyUkdCOFRvUkdCQTgoc2l6ZV90
IHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERl
cHRoUGl0Y2gsIGZhbHNlKTsKIH0KIAordm9pZCBMb2FkRVRDMlJHQjhUb0JDMShzaXplX3Qgd2lk
dGgsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNo
LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91
dHB1dERlcHRoUGl0Y2gpCit7CisgICAgTG9hZEVUQzJSR0I4VG9CQzEod2lkdGgsIGhlaWdodCwg
ZGVwdGgsIGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91dHB1dCwKKyAg
ICAgICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCwgZmFs
c2UpOworfQorCiB2b2lkIExvYWRFVEMyU1JHQjhUb1JHQkE4KHNpemVfdCB3aWR0aCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGRlcHRoLApAQCAtMTUxMyw2ICsxNjI1LDIwIEBAIHZvaWQgTG9hZEVUQzJT
UkdCOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0
Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gsIGZhbHNlKTsKIH0KIAordm9pZCBMb2FkRVRDMlNS
R0I4VG9CQzEoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhl
aWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0
LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgTG9hZEVU
QzJSR0I4VG9CQzEod2lkdGgsIGhlaWdodCwgZGVwdGgsIGlucHV0LCBpbnB1dFJvd1BpdGNoLCBp
bnB1dERlcHRoUGl0Y2gsIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQ
aXRjaCwgb3V0cHV0RGVwdGhQaXRjaCwgZmFsc2UpOworfQorCiB2b2lkIExvYWRFVEMyUkdCOEEx
VG9SR0JBOChzaXplX3Qgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLApAQCAtMTUy
Nyw2ICsxNjUzLDIwIEBAIHZvaWQgTG9hZEVUQzJSR0I4QTFUb1JHQkE4KHNpemVfdCB3aWR0aCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNo
LCB0cnVlKTsKIH0KIAordm9pZCBMb2FkRVRDMlJHQjhBMVRvQkMxKHNpemVfdCB3aWR0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICppbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRSb3dQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgTG9hZEVUQzJSR0I4VG9CQzEod2lkdGgs
IGhlaWdodCwgZGVwdGgsIGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91
dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQ
aXRjaCwgdHJ1ZSk7Cit9CisKIHZvaWQgTG9hZEVUQzJTUkdCOEExVG9SR0JBOChzaXplX3Qgd2lk
dGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCkBAIC0xNTQxLDYgKzE2ODEsMjAgQEAg
dm9pZCBMb2FkRVRDMlNSR0I4QTFUb1JHQkE4KHNpemVfdCB3aWR0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoLCB0cnVlKTsKIH0KIAor
dm9pZCBMb2FkRVRDMlNSR0I4QTFUb0JDMShzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG91dHB1dERlcHRoUGl0Y2gpCit7CisgICAgTG9hZEVUQzJSR0I4VG9CQzEod2lkdGgsIGhlaWdo
dCwgZGVwdGgsIGlucHV0LCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsIG91dHB1dCwK
KyAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRjaCwg
dHJ1ZSk7Cit9CisKIHZvaWQgTG9hZEVUQzJSR0JBOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgZGVwdGgsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvQXR0cmlidXRlTWFwLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9BdHRyaWJ1dGVNYXAuY3BwCmluZGV4IDczZDk0OTI0ZDMzM2E0NDc3NjY2
MWFmNjhjNzk4NGI4YzU2NDM2NGEuLmRjNDUwYjgxYmM0MDgwZDFhYjc0ZWU0ZTczNTIzNTlkMDQ0
ZmRiMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9B
dHRyaWJ1dGVNYXAuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9BdHRyaWJ1dGVNYXAuY3BwCkBAIC0yNSwxNCArMjUsMTMgQEAgYm9vbCBBdHRyaWJ1dGVNYXA6
OmNvbnRhaW5zKEVHTEF0dHJpYiBrZXkpIGNvbnN0CiAKIEVHTEF0dHJpYiBBdHRyaWJ1dGVNYXA6
OmdldChFR0xBdHRyaWIga2V5LCBFR0xBdHRyaWIgZGVmYXVsdFZhbHVlKSBjb25zdAogewotICAg
IHN0ZDo6bWFwPEVHTEF0dHJpYiwgRUdMQXR0cmliPjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1B
dHRyaWJ1dGVzLmZpbmQoa2V5KTsKKyAgICBhdXRvIGl0ZXIgPSBtQXR0cmlidXRlcy5maW5kKGtl
eSk7CiAgICAgcmV0dXJuIChtQXR0cmlidXRlcy5maW5kKGtleSkgIT0gbUF0dHJpYnV0ZXMuZW5k
KCkpID8gaXRlci0+c2Vjb25kIDogZGVmYXVsdFZhbHVlOwogfQogCiBFR0xpbnQgQXR0cmlidXRl
TWFwOjpnZXRBc0ludChFR0xBdHRyaWIga2V5LCBFR0xpbnQgZGVmYXVsdFZhbHVlKSBjb25zdAog
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFR0xpbnQ+KAotICAgICAgICBnZXQoc3RhdGljX2Nh
c3Q8RUdMQXR0cmliPihrZXkpLCBzdGF0aWNfY2FzdDxFR0xBdHRyaWI+KGRlZmF1bHRWYWx1ZSkp
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RUdMaW50PihnZXQoa2V5LCBzdGF0aWNfY2FzdDxF
R0xBdHRyaWI+KGRlZmF1bHRWYWx1ZSkpKTsKIH0KIAogYm9vbCBBdHRyaWJ1dGVNYXA6OmlzRW1w
dHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL0J1ZmZlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQnVm
ZmVyLmNwcAppbmRleCA3ZmQ1MjQ0MjdmYzQzYzYxNjNlZTE0YWZhOGQxMDYyNmE5NWNmMTljLi5i
YjJmOWZkYWVkYzMyODYzNzNlZDFhZWQ0ZjEzZTc1MjFlY2Y2M2YzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQnVmZmVyLmNwcApAQCAtOSwxMTAgKzksMTQ4
IEBACiAvLyBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAyLjkgcGFnZSAyMS4KIAogI2luY2x1
ZGUgImxpYkFOR0xFL0J1ZmZlci5oIgorCisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0J1ZmZlckltcGwuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9HTEltcGxGYWN0b3J5LmgiCiAKIG5hbWVzcGFjZSBnbAogewogCi1CdWZm
ZXI6OkJ1ZmZlcihyeDo6QnVmZmVySW1wbCAqaW1wbCwgR0x1aW50IGlkKQotICAgIDogUmVmQ291
bnRPYmplY3QoaWQpLAotICAgICAgbUJ1ZmZlcihpbXBsKSwKLSAgICAgIG1MYWJlbCgpLAorQnVm
ZmVyU3RhdGU6OkJ1ZmZlclN0YXRlKCkKKyAgICA6IG1MYWJlbCgpLAogICAgICAgbVVzYWdlKEdM
X1NUQVRJQ19EUkFXKSwKICAgICAgIG1TaXplKDApLAogICAgICAgbUFjY2Vzc0ZsYWdzKDApLAog
ICAgICAgbUFjY2VzcyhHTF9XUklURV9PTkxZX09FUyksCiAgICAgICBtTWFwcGVkKEdMX0ZBTFNF
KSwKLSAgICAgIG1NYXBQb2ludGVyKE5VTEwpLAorICAgICAgbU1hcFBvaW50ZXIobnVsbHB0ciks
CiAgICAgICBtTWFwT2Zmc2V0KDApLAogICAgICAgbU1hcExlbmd0aCgwKQogewogfQogCitCdWZm
ZXJTdGF0ZTo6fkJ1ZmZlclN0YXRlKCkKK3sKK30KKworQnVmZmVyOjpCdWZmZXIocng6OkdMSW1w
bEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBpZCkKKyAgICA6IFJlZkNvdW50T2JqZWN0KGlkKSwg
bUltcGwoZmFjdG9yeS0+Y3JlYXRlQnVmZmVyKG1TdGF0ZSkpCit7Cit9CisKIEJ1ZmZlcjo6fkJ1
ZmZlcigpCiB7Ci0gICAgU2FmZURlbGV0ZShtQnVmZmVyKTsKKyAgICBTYWZlRGVsZXRlKG1JbXBs
KTsKK30KKwordm9pZCBCdWZmZXI6OmRlc3Ryb3koY29uc3QgQ29udGV4dCAqY29udGV4dCkKK3sK
KyAgICAvLyBJbiB0ZXN0cywgbUltcGwgbWlnaHQgYmUgbnVsbC4KKyAgICBpZiAobUltcGwpCisg
ICAgICAgIG1JbXBsLT5kZXN0cm95KHJ4OjpTYWZlR2V0SW1wbChjb250ZXh0KSk7CiB9CiAKIHZv
aWQgQnVmZmVyOjpzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAmbGFiZWwpCiB7Ci0gICAgbUxh
YmVsID0gbGFiZWw7CisgICAgbVN0YXRlLm1MYWJlbCA9IGxhYmVsOwogfQogCiBjb25zdCBzdGQ6
OnN0cmluZyAmQnVmZmVyOjpnZXRMYWJlbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1MYWJlbDsK
KyAgICByZXR1cm4gbVN0YXRlLm1MYWJlbDsKIH0KIAotRXJyb3IgQnVmZmVyOjpidWZmZXJEYXRh
KEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEsIEdMc2l6ZWlwdHIgc2l6ZSwgR0xlbnVt
IHVzYWdlKQorRXJyb3IgQnVmZmVyOjpidWZmZXJEYXRhKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWlwdHIgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdXNhZ2UpCiB7
Ci0gICAgQU5HTEVfVFJZKG1CdWZmZXItPnNldERhdGEodGFyZ2V0LCBkYXRhLCBzaXplLCB1c2Fn
ZSkpOworICAgIGNvbnN0IHZvaWQgKmRhdGFGb3JJbXBsID0gZGF0YTsKKworICAgIC8vIElmIHdl
IGFyZSB1c2luZyByb2J1c3QgcmVzb3VyY2UgaW5pdCwgbWFrZSBzdXJlIHRoZSBidWZmZXIgc3Rh
cnRzIGNsZWFyZWQuCisgICAgLy8gVE9ETyhqbWFkaWxsKTogSW52ZXN0aWdhdGUgbGF6aWVyIGNs
ZWFyaW5nLgorICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQtPmdldEdMU3RhdGUoKS5pc1JvYnVz
dFJlc291cmNlSW5pdEVuYWJsZWQoKSAmJiBkYXRhID09IG51bGxwdHIpCisgICAgeworICAgICAg
ICBhbmdsZTo6TWVtb3J5QnVmZmVyICpzY3JhdGNoQnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAg
QU5HTEVfVFJZKGNvbnRleHQtPmdldFNjcmF0Y2hCdWZmZXIoc3RhdGljX2Nhc3Q8c2l6ZV90Pihz
aXplKSwgJnNjcmF0Y2hCdWZmZXIpKTsKKyAgICAgICAgc3RkOjpmaWxsKHNjcmF0Y2hCdWZmZXIt
PmRhdGEoKSwgc2NyYXRjaEJ1ZmZlci0+ZGF0YSgpICsgc2l6ZSwgc3RhdGljX2Nhc3Q8dWludDhf
dD4oMCkpOworICAgICAgICBkYXRhRm9ySW1wbCA9IHNjcmF0Y2hCdWZmZXItPmRhdGEoKTsKKyAg
ICB9CisKKyAgICBBTkdMRV9UUlkobUltcGwtPnNldERhdGEocng6OlNhZmVHZXRJbXBsKGNvbnRl
eHQpLCB0YXJnZXQsIGRhdGFGb3JJbXBsLCBzaXplLCB1c2FnZSkpOwogCiAgICAgbUluZGV4UmFu
Z2VDYWNoZS5jbGVhcigpOwotICAgIG1Vc2FnZSA9IHVzYWdlOwotICAgIG1TaXplID0gc2l6ZTsK
KyAgICBtU3RhdGUubVVzYWdlID0gdXNhZ2U7CisgICAgbVN0YXRlLm1TaXplICA9IHNpemU7CiAK
ICAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCi1FcnJvciBCdWZmZXI6OmJ1ZmZlclN1YkRhdGEo
R0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgR0xzaXplaXB0ciBzaXplLCBHTGludHB0
ciBvZmZzZXQpCitFcnJvciBCdWZmZXI6OmJ1ZmZlclN1YkRhdGEoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50cHRyIG9mZnNldCkKIHsKLSAgICBBTkdMRV9UUlkobUJ1ZmZlci0+c2V0U3ViRGF0YSh0
YXJnZXQsIGRhdGEsIHNpemUsIG9mZnNldCkpOworICAgIEFOR0xFX1RSWShtSW1wbC0+c2V0U3Vi
RGF0YShyeDo6U2FmZUdldEltcGwoY29udGV4dCksIHRhcmdldCwgZGF0YSwgc2l6ZSwgb2Zmc2V0
KSk7CiAKICAgICBtSW5kZXhSYW5nZUNhY2hlLmludmFsaWRhdGVSYW5nZShzdGF0aWNfY2FzdDx1
bnNpZ25lZCBpbnQ+KG9mZnNldCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc2l6ZSkpOwog
CiAgICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0KIAotRXJyb3IgQnVmZmVyOjpjb3B5QnVmZmVyU3Vi
RGF0YShCdWZmZXIqIHNvdXJjZSwgR0xpbnRwdHIgc291cmNlT2Zmc2V0LCBHTGludHB0ciBkZXN0
T2Zmc2V0LCBHTHNpemVpcHRyIHNpemUpCitFcnJvciBCdWZmZXI6OmNvcHlCdWZmZXJTdWJEYXRh
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEJ1ZmZlciAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0
ciBzb3VyY2VPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRy
IGRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIg
c2l6ZSkKIHsKLSAgICBBTkdMRV9UUlkobUJ1ZmZlci0+Y29weVN1YkRhdGEoc291cmNlLT5nZXRJ
bXBsZW1lbnRhdGlvbigpLCBzb3VyY2VPZmZzZXQsIGRlc3RPZmZzZXQsIHNpemUpKTsKKyAgICBB
TkdMRV9UUlkobUltcGwtPmNvcHlTdWJEYXRhKHJ4OjpTYWZlR2V0SW1wbChjb250ZXh0KSwgc291
cmNlLT5nZXRJbXBsZW1lbnRhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc291cmNlT2Zmc2V0LCBkZXN0T2Zmc2V0LCBzaXplKSk7CiAKICAgICBtSW5kZXhSYW5nZUNh
Y2hlLmludmFsaWRhdGVSYW5nZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGRlc3RPZmZzZXQp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHNpemUpKTsKIAogICAgIHJldHVybiBOb0Vycm9y
KCk7CiB9CiAKLUVycm9yIEJ1ZmZlcjo6bWFwKEdMZW51bSBhY2Nlc3MpCitFcnJvciBCdWZmZXI6
Om1hcChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gYWNjZXNzKQogewotICAgIEFTU0VS
VCghbU1hcHBlZCk7CisgICAgQVNTRVJUKCFtU3RhdGUubU1hcHBlZCk7CiAKLSAgICBFcnJvciBl
cnJvciA9IG1CdWZmZXItPm1hcChhY2Nlc3MsICZtTWFwUG9pbnRlcik7Ci0gICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIG1NYXBQb2ludGVyID0gTlVMTDsKLSAgICAgICAg
cmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBtU3RhdGUubU1hcFBvaW50ZXIgPSBudWxscHRyOwor
ICAgIEFOR0xFX1RSWShtSW1wbC0+bWFwKHJ4OjpTYWZlR2V0SW1wbChjb250ZXh0KSwgYWNjZXNz
LCAmbVN0YXRlLm1NYXBQb2ludGVyKSk7CiAKICAgICBBU1NFUlQoYWNjZXNzID09IEdMX1dSSVRF
X09OTFlfT0VTKTsKIAotICAgIG1NYXBwZWQgPSBHTF9UUlVFOwotICAgIG1NYXBPZmZzZXQgPSAw
OwotICAgIG1NYXBMZW5ndGggPSBtU2l6ZTsKLSAgICBtQWNjZXNzID0gYWNjZXNzOwotICAgIG1B
Y2Nlc3NGbGFncyA9IEdMX01BUF9XUklURV9CSVQ7CisgICAgbVN0YXRlLm1NYXBwZWQgICAgICA9
IEdMX1RSVUU7CisgICAgbVN0YXRlLm1NYXBPZmZzZXQgICA9IDA7CisgICAgbVN0YXRlLm1NYXBM
ZW5ndGggICA9IG1TdGF0ZS5tU2l6ZTsKKyAgICBtU3RhdGUubUFjY2VzcyAgICAgID0gYWNjZXNz
OworICAgIG1TdGF0ZS5tQWNjZXNzRmxhZ3MgPSBHTF9NQVBfV1JJVEVfQklUOwogICAgIG1JbmRl
eFJhbmdlQ2FjaGUuY2xlYXIoKTsKIAotICAgIHJldHVybiBlcnJvcjsKKyAgICByZXR1cm4gTm9F
cnJvcigpOwogfQogCi1FcnJvciBCdWZmZXI6Om1hcFJhbmdlKEdMaW50cHRyIG9mZnNldCwgR0xz
aXplaXB0ciBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzKQorRXJyb3IgQnVmZmVyOjptYXBSYW5n
ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0
ciBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIGFjY2VzcykKIHsKLSAgICBBU1NFUlQoIW1N
YXBwZWQpOwotICAgIEFTU0VSVChvZmZzZXQgKyBsZW5ndGggPD0gbVNpemUpOworICAgIEFTU0VS
VCghbVN0YXRlLm1NYXBwZWQpOworICAgIEFTU0VSVChvZmZzZXQgKyBsZW5ndGggPD0gbVN0YXRl
Lm1TaXplKTsKIAotICAgIEVycm9yIGVycm9yID0gbUJ1ZmZlci0+bWFwUmFuZ2Uob2Zmc2V0LCBs
ZW5ndGgsIGFjY2VzcywgJm1NYXBQb2ludGVyKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQot
ICAgIHsKLSAgICAgICAgbU1hcFBvaW50ZXIgPSBOVUxMOwotICAgICAgICByZXR1cm4gZXJyb3I7
Ci0gICAgfQorICAgIG1TdGF0ZS5tTWFwUG9pbnRlciA9IG51bGxwdHI7CisgICAgQU5HTEVfVFJZ
KAorICAgICAgICBtSW1wbC0+bWFwUmFuZ2Uocng6OlNhZmVHZXRJbXBsKGNvbnRleHQpLCBvZmZz
ZXQsIGxlbmd0aCwgYWNjZXNzLCAmbVN0YXRlLm1NYXBQb2ludGVyKSk7CiAKLSAgICBtTWFwcGVk
ID0gR0xfVFJVRTsKLSAgICBtTWFwT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8R0xpbnQ2ND4ob2Zmc2V0
KTsKLSAgICBtTWFwTGVuZ3RoID0gc3RhdGljX2Nhc3Q8R0xpbnQ2ND4obGVuZ3RoKTsKLSAgICBt
QWNjZXNzID0gR0xfV1JJVEVfT05MWV9PRVM7Ci0gICAgbUFjY2Vzc0ZsYWdzID0gYWNjZXNzOwor
ICAgIG1TdGF0ZS5tTWFwcGVkICAgICAgPSBHTF9UUlVFOworICAgIG1TdGF0ZS5tTWFwT2Zmc2V0
ICAgPSBzdGF0aWNfY2FzdDxHTGludDY0PihvZmZzZXQpOworICAgIG1TdGF0ZS5tTWFwTGVuZ3Ro
ICAgPSBzdGF0aWNfY2FzdDxHTGludDY0PihsZW5ndGgpOworICAgIG1TdGF0ZS5tQWNjZXNzICAg
ICAgPSBHTF9XUklURV9PTkxZX09FUzsKKyAgICBtU3RhdGUubUFjY2Vzc0ZsYWdzID0gYWNjZXNz
OwogCiAgICAgLy8gVGhlIE9FU19tYXBidWZmZXIgZXh0ZW5zaW9uIHN0YXRlcyB0aGF0IEdMX1dS
SVRFX09OTFlfT0VTIGlzIHRoZSBvbmx5IHZhbGlkCiAgICAgLy8gdmFsdWUgZm9yIEdMX0JVRkZF
Ul9BQ0NFU1NfT0VTIGJlY2F1c2UgaXQgd2FzIHdyaXR0ZW4gYWdhaW5zdCBFUzIuICBTaW5jZSB0
aGVyZSBpcwpAQCAtMTI0LDI4ICsxNjIsMjQgQEAgRXJyb3IgQnVmZmVyOjptYXBSYW5nZShHTGlu
dHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgbGVuZ3RoLCBHTGJpdGZpZWxkIGFjY2VzcykKICAgICAg
ICAgbUluZGV4UmFuZ2VDYWNoZS5pbnZhbGlkYXRlUmFuZ2Uoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50PihvZmZzZXQpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGxlbmd0aCkpOwogICAgIH0K
IAotICAgIHJldHVybiBlcnJvcjsKKyAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCi1FcnJvciBC
dWZmZXI6OnVubWFwKEdMYm9vbGVhbiAqcmVzdWx0KQorRXJyb3IgQnVmZmVyOjp1bm1hcChjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBHTGJvb2xlYW4gKnJlc3VsdCkKIHsKLSAgICBBU1NFUlQobU1h
cHBlZCk7CisgICAgQVNTRVJUKG1TdGF0ZS5tTWFwcGVkKTsKIAotICAgIEVycm9yIGVycm9yID0g
bUJ1ZmZlci0+dW5tYXAocmVzdWx0KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsK
LSAgICAgICAgKnJlc3VsdCA9IEdMX0ZBTFNFOwotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAg
fQorICAgICpyZXN1bHQgPSBHTF9GQUxTRTsKKyAgICBBTkdMRV9UUlkobUltcGwtPnVubWFwKHJ4
OjpTYWZlR2V0SW1wbChjb250ZXh0KSwgcmVzdWx0KSk7CiAKLSAgICBtTWFwcGVkID0gR0xfRkFM
U0U7Ci0gICAgbU1hcFBvaW50ZXIgPSBOVUxMOwotICAgIG1NYXBPZmZzZXQgPSAwOwotICAgIG1N
YXBMZW5ndGggPSAwOwotICAgIG1BY2Nlc3MgPSBHTF9XUklURV9PTkxZX09FUzsKLSAgICBtQWNj
ZXNzRmxhZ3MgPSAwOworICAgIG1TdGF0ZS5tTWFwcGVkICAgICAgPSBHTF9GQUxTRTsKKyAgICBt
U3RhdGUubU1hcFBvaW50ZXIgID0gbnVsbHB0cjsKKyAgICBtU3RhdGUubU1hcE9mZnNldCAgID0g
MDsKKyAgICBtU3RhdGUubU1hcExlbmd0aCAgID0gMDsKKyAgICBtU3RhdGUubUFjY2VzcyAgICAg
ID0gR0xfV1JJVEVfT05MWV9PRVM7CisgICAgbVN0YXRlLm1BY2Nlc3NGbGFncyA9IDA7CiAKLSAg
ICByZXR1cm4gZXJyb3I7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0KIAogdm9pZCBCdWZmZXI6
Om9uVHJhbnNmb3JtRmVlZGJhY2soKQpAQCAtMTY5LDcgKzIwMyw3IEBAIEVycm9yIEJ1ZmZlcjo6
Z2V0SW5kZXhSYW5nZShHTGVudW0gdHlwZSwKICAgICAgICAgcmV0dXJuIE5vRXJyb3IoKTsKICAg
ICB9CiAKLSAgICBBTkdMRV9UUlkobUJ1ZmZlci0+Z2V0SW5kZXhSYW5nZSh0eXBlLCBvZmZzZXQs
IGNvdW50LCBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCwgb3V0UmFuZ2UpKTsKKyAgICBBTkdMRV9U
UlkobUltcGwtPmdldEluZGV4UmFuZ2UodHlwZSwgb2Zmc2V0LCBjb3VudCwgcHJpbWl0aXZlUmVz
dGFydEVuYWJsZWQsIG91dFJhbmdlKSk7CiAKICAgICBtSW5kZXhSYW5nZUNhY2hlLmFkZFJhbmdl
KHR5cGUsIG9mZnNldCwgY291bnQsIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkLCAqb3V0UmFuZ2Up
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQnVm
ZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQnVmZmVyLmgKaW5k
ZXggYWQ1ZjJlOTE5MzNjZmIyZWYzMzhmOTRjZTcyMzI1MmY2MmUwY2ViNS4uZWQ5ODBkZTc2NTEx
MjA3MGM3YjY1ZTllN2ExN2EwNzdmMDU0MTIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL0J1ZmZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9CdWZmZXIuaApAQCAtMjAsMzUgKzIwLDIxIEBACiBuYW1lc3BhY2Ug
cngKIHsKIGNsYXNzIEJ1ZmZlckltcGw7CitjbGFzcyBHTEltcGxGYWN0b3J5OwogfTsKIAogbmFt
ZXNwYWNlIGdsCiB7CitjbGFzcyBCdWZmZXI7CitjbGFzcyBDb250ZXh0OwogCi1jbGFzcyBCdWZm
ZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRPYmplY3QsIHB1YmxpYyBMYWJlbGVkT2JqZWN0Citj
bGFzcyBCdWZmZXJTdGF0ZSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6
Ci0gICAgQnVmZmVyKHJ4OjpCdWZmZXJJbXBsICppbXBsLCBHTHVpbnQgaWQpOwotICAgIHZpcnR1
YWwgfkJ1ZmZlcigpOwotCi0gICAgdm9pZCBzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAmbGFi
ZWwpIG92ZXJyaWRlOwotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRMYWJlbCgpIGNvbnN0IG92
ZXJyaWRlOwotCi0gICAgRXJyb3IgYnVmZmVyRGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lk
ICpkYXRhLCBHTHNpemVpcHRyIHNpemUsIEdMZW51bSB1c2FnZSk7Ci0gICAgRXJyb3IgYnVmZmVy
U3ViRGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpkYXRhLCBHTHNpemVpcHRyIHNpemUs
IEdMaW50cHRyIG9mZnNldCk7Ci0gICAgRXJyb3IgY29weUJ1ZmZlclN1YkRhdGEoQnVmZmVyKiBz
b3VyY2UsIEdMaW50cHRyIHNvdXJjZU9mZnNldCwgR0xpbnRwdHIgZGVzdE9mZnNldCwgR0xzaXpl
aXB0ciBzaXplKTsKLSAgICBFcnJvciBtYXAoR0xlbnVtIGFjY2Vzcyk7Ci0gICAgRXJyb3IgbWFw
UmFuZ2UoR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nl
c3MpOwotICAgIEVycm9yIHVubWFwKEdMYm9vbGVhbiAqcmVzdWx0KTsKKyAgICBCdWZmZXJTdGF0
ZSgpOworICAgIH5CdWZmZXJTdGF0ZSgpOwogCi0gICAgdm9pZCBvblRyYW5zZm9ybUZlZWRiYWNr
KCk7Ci0gICAgdm9pZCBvblBpeGVsVW5wYWNrKCk7Ci0KLSAgICBFcnJvciBnZXRJbmRleFJhbmdl
KEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgcHJpbWl0aXZlUmVzdGFydEVuYWJsZWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBJbmRleFJhbmdlICpvdXRSYW5nZSkgY29uc3Q7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdl
dExhYmVsKCk7CiAKICAgICBHTGVudW0gZ2V0VXNhZ2UoKSBjb25zdCB7IHJldHVybiBtVXNhZ2U7
IH0KICAgICBHTGJpdGZpZWxkIGdldEFjY2Vzc0ZsYWdzKCkgY29uc3QgeyByZXR1cm4gbUFjY2Vz
c0ZsYWdzOyB9CkBAIC01OSwxMCArNDUsOCBAQCBjbGFzcyBCdWZmZXIgZmluYWwgOiBwdWJsaWMg
UmVmQ291bnRPYmplY3QsIHB1YmxpYyBMYWJlbGVkT2JqZWN0CiAgICAgR0xpbnQ2NCBnZXRNYXBM
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtTWFwTGVuZ3RoOyB9CiAgICAgR0xpbnQ2NCBnZXRTaXpl
KCkgY29uc3QgeyByZXR1cm4gbVNpemU7IH0KIAotICAgIHJ4OjpCdWZmZXJJbXBsICpnZXRJbXBs
ZW1lbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1CdWZmZXI7IH0KLQogICBwcml2YXRlOgotICAg
IHJ4OjpCdWZmZXJJbXBsICptQnVmZmVyOworICAgIGZyaWVuZCBjbGFzcyBCdWZmZXI7CiAKICAg
ICBzdGQ6OnN0cmluZyBtTGFiZWw7CiAKQEAgLTc0LDEwICs1OCw2NCBAQCBjbGFzcyBCdWZmZXIg
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRPYmplY3QsIHB1YmxpYyBMYWJlbGVkT2JqZWN0CiAgICAg
R0x2b2lkICptTWFwUG9pbnRlcjsKICAgICBHTGludDY0IG1NYXBPZmZzZXQ7CiAgICAgR0xpbnQ2
NCBtTWFwTGVuZ3RoOworfTsKKworY2xhc3MgQnVmZmVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50
T2JqZWN0LCBwdWJsaWMgTGFiZWxlZE9iamVjdAoreworICBwdWJsaWM6CisgICAgQnVmZmVyKHJ4
OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgaWQpOworICAgIH5CdWZmZXIoKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGRlc3Ryb3koY29uc3QgQ29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGU7
CisKKyAgICB2b2lkIHNldExhYmVsKGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJlbCkgb3ZlcnJpZGU7
CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldExhYmVsKCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAg
ICBFcnJvciBidWZmZXJEYXRhKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq
ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB1c2FnZSk7CisgICAgRXJyb3IgYnVmZmVyU3ViRGF0YShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpcHRyIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dHB0ciBvZmZzZXQpOworICAgIEVycm9yIGNvcHlCdWZmZXJTdWJEYXRhKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyICpzb3VyY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgc291cmNlT2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIGRlc3RPZmZzZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKTsKKyAgICBFcnJvciBtYXAoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIGFjY2Vzcyk7CisgICAgRXJyb3IgbWFwUmFuZ2UoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIGxlbmd0aCwgR0xi
aXRmaWVsZCBhY2Nlc3MpOworICAgIEVycm9yIHVubWFwKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMYm9vbGVhbiAqcmVzdWx0KTsKKworICAgIHZvaWQgb25UcmFuc2Zvcm1GZWVkYmFjaygpOwor
ICAgIHZvaWQgb25QaXhlbFVucGFjaygpOworCisgICAgRXJyb3IgZ2V0SW5kZXhSYW5nZShHTGVu
dW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgSW5k
ZXhSYW5nZSAqb3V0UmFuZ2UpIGNvbnN0OworCisgICAgR0xlbnVtIGdldFVzYWdlKCkgY29uc3Qg
eyByZXR1cm4gbVN0YXRlLm1Vc2FnZTsgfQorICAgIEdMYml0ZmllbGQgZ2V0QWNjZXNzRmxhZ3Mo
KSBjb25zdCB7IHJldHVybiBtU3RhdGUubUFjY2Vzc0ZsYWdzOyB9CisgICAgR0xlbnVtIGdldEFj
Y2VzcygpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5tQWNjZXNzOyB9CisgICAgR0xib29sZWFuIGlz
TWFwcGVkKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLm1NYXBwZWQ7IH0KKyAgICBHTHZvaWQgKmdl
dE1hcFBvaW50ZXIoKSBjb25zdCB7IHJldHVybiBtU3RhdGUubU1hcFBvaW50ZXI7IH0KKyAgICBH
TGludDY0IGdldE1hcE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5tTWFwT2Zmc2V0OyB9
CisgICAgR0xpbnQ2NCBnZXRNYXBMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtU3RhdGUubU1hcExl
bmd0aDsgfQorICAgIEdMaW50NjQgZ2V0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5tU2l6
ZTsgfQorCisgICAgcng6OkJ1ZmZlckltcGwgKmdldEltcGxlbWVudGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbUltcGw7IH0KKworICBwcml2YXRlOgorICAgIEJ1ZmZlclN0YXRlIG1TdGF0ZTsKKyAg
ICByeDo6QnVmZmVySW1wbCAqbUltcGw7CiAKICAgICBtdXRhYmxlIEluZGV4UmFuZ2VDYWNoZSBt
SW5kZXhSYW5nZUNhY2hlOwogfTsKIAotfQorfSAgLy8gbmFtZXNwYWNlIGdsCiAKICNlbmRpZiAg
IC8vIExJQkFOR0xFX0JVRkZFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL0NhcHMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL0NhcHMuY3BwCmluZGV4IDc2NjgzMWZkMGQ1YzhkMDIzYWM1YjQ2ZDZmY2MwZmJlNmE1
MDMzZjYuLjdjYTgxODk0OTU3YTFkM2U4MDI1MzdlYWIyOTM3YzFjMjdmZTEzZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9DYXBzLmNwcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ2Fwcy5jcHAKQEAgLTUsOSArNSwx
MiBAQAogLy8KIAogI2luY2x1ZGUgImxpYkFOR0xFL0NhcHMuaCIKKwogI2luY2x1ZGUgImNvbW1v
bi9kZWJ1Zy5oIgogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCiAKKyNpbmNsdWRlICJs
aWJBTkdMRS9mb3JtYXR1dGlscy5oIgorCiAjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKIAogI2luY2x1
ZGUgPGFsZ29yaXRobT4KQEAgLTU2LDYgKzU5LDIyIEBAIEdMdWludCBUZXh0dXJlQ2Fwczo6Z2V0
TmVhcmVzdFNhbXBsZXMoR0x1aW50IHJlcXVlc3RlZFNhbXBsZXMpIGNvbnN0CiAgICAgcmV0dXJu
IDA7CiB9CiAKK1RleHR1cmVDYXBzIEdlbmVyYXRlTWluaW11bVRleHR1cmVDYXBzKEdMZW51bSBp
bnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFZlcnNpb24gJmNsaWVudFZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zKQoreworICAgIFRleHR1cmVD
YXBzIGNhcHM7CisKKyAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAmaW50ZXJuYWxGb3JtYXRJbmZv
ID0gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0KTsKKyAgICBjYXBzLnRleHR1
cmFibGUgPSBpbnRlcm5hbEZvcm1hdEluZm8udGV4dHVyZVN1cHBvcnQoY2xpZW50VmVyc2lvbiwg
ZXh0ZW5zaW9ucyk7CisgICAgY2Fwcy5yZW5kZXJhYmxlID0gaW50ZXJuYWxGb3JtYXRJbmZvLnJl
bmRlclN1cHBvcnQoY2xpZW50VmVyc2lvbiwgZXh0ZW5zaW9ucyk7CisgICAgY2Fwcy5maWx0ZXJh
YmxlID0gaW50ZXJuYWxGb3JtYXRJbmZvLmZpbHRlclN1cHBvcnQoY2xpZW50VmVyc2lvbiwgZXh0
ZW5zaW9ucyk7CisKKyAgICBjYXBzLnNhbXBsZUNvdW50cy5pbnNlcnQoMCk7CisKKyAgICByZXR1
cm4gY2FwczsKK30KKwogdm9pZCBUZXh0dXJlQ2Fwc01hcDo6aW5zZXJ0KEdMZW51bSBpbnRlcm5h
bEZvcm1hdCwgY29uc3QgVGV4dHVyZUNhcHMgJmNhcHMpCiB7CiAgICAgbUNhcHNNYXBbaW50ZXJu
YWxGb3JtYXRdID0gY2FwczsKQEAgLTc3LDEwICs5Niw4IEBAIHZvaWQgVGV4dHVyZUNhcHNNYXA6
OmNsZWFyKCkKIAogY29uc3QgVGV4dHVyZUNhcHMgJlRleHR1cmVDYXBzTWFwOjpnZXQoR0xlbnVt
IGludGVybmFsRm9ybWF0KSBjb25zdAogewotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gK
LSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9y
cyIKICAgICBzdGF0aWMgVGV4dHVyZUNhcHMgZGVmYXVsdFVuc3VwcG9ydGVkVGV4dHVyZTsKLSNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKwogICAgIEludGVybmFsRm9ybWF0VG9DYXBzTWFw
Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbUNhcHNNYXAuZmluZChpbnRlcm5hbEZvcm1hdCk7CiAg
ICAgcmV0dXJuIChpdGVyICE9IG1DYXBzTWFwLmVuZCgpKSA/IGl0ZXItPnNlY29uZCA6IGRlZmF1
bHRVbnN1cHBvcnRlZFRleHR1cmU7CiB9CkBAIC0xMDAsNiArMTE3LDIwIEBAIHNpemVfdCBUZXh0
dXJlQ2Fwc01hcDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1DYXBzTWFwLnNpemUoKTsKIH0K
IAorVGV4dHVyZUNhcHNNYXAgR2VuZXJhdGVNaW5pbXVtVGV4dHVyZUNhcHNNYXAoY29uc3QgVmVy
c2lvbiAmY2xpZW50VmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMpCit7CisgICAgVGV4dHVyZUNh
cHNNYXAgY2Fwc01hcDsKKworICAgIGZvciAoR0xlbnVtIGludGVybmFsRm9ybWF0IDogR2V0QWxs
U2l6ZWRJbnRlcm5hbEZvcm1hdHMoKSkKKyAgICB7CisgICAgICAgIGNhcHNNYXAuaW5zZXJ0KGlu
dGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pbmltdW1UZXh0
dXJlQ2FwcyhpbnRlcm5hbEZvcm1hdCwgY2xpZW50VmVyc2lvbiwgZXh0ZW5zaW9ucykpOworICAg
IH0KKworICAgIHJldHVybiBjYXBzTWFwOworfQorCiBFeHRlbnNpb25zOjpFeHRlbnNpb25zKCkK
ICAgICA6IGVsZW1lbnRJbmRleFVpbnQoZmFsc2UpLAogICAgICAgcGFja2VkRGVwdGhTdGVuY2ls
KGZhbHNlKSwKQEAgLTExOSwxNiArMTUwLDE4IEBAIEV4dGVuc2lvbnM6OkV4dGVuc2lvbnMoKQog
ICAgICAgdGV4dHVyZUNvbXByZXNzaW9uRFhUMShmYWxzZSksCiAgICAgICB0ZXh0dXJlQ29tcHJl
c3Npb25EWFQzKGZhbHNlKSwKICAgICAgIHRleHR1cmVDb21wcmVzc2lvbkRYVDUoZmFsc2UpLAor
ICAgICAgdGV4dHVyZUNvbXByZXNzaW9uUzNUQ3NSR0IoZmFsc2UpLAogICAgICAgdGV4dHVyZUNv
bXByZXNzaW9uQVNUQ0hEUihmYWxzZSksCiAgICAgICB0ZXh0dXJlQ29tcHJlc3Npb25BU1RDTERS
KGZhbHNlKSwKICAgICAgIGNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmUoZmFsc2UpLAorICAgICAg
c1JHQihmYWxzZSksCiAgICAgICBkZXB0aFRleHR1cmVzKGZhbHNlKSwKICAgICAgIGRlcHRoMzIo
ZmFsc2UpLAogICAgICAgdGV4dHVyZVN0b3JhZ2UoZmFsc2UpLAogICAgICAgdGV4dHVyZU5QT1Qo
ZmFsc2UpLAogICAgICAgZHJhd0J1ZmZlcnMoZmFsc2UpLAogICAgICAgdGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljKGZhbHNlKSwKLSAgICAgIG1heFRleHR1cmVBbmlzb3Ryb3B5KGZhbHNlKSwKKyAg
ICAgIG1heFRleHR1cmVBbmlzb3Ryb3B5KDAuMGYpLAogICAgICAgb2NjbHVzaW9uUXVlcnlCb29s
ZWFuKGZhbHNlKSwKICAgICAgIGZlbmNlKGZhbHNlKSwKICAgICAgIHRpbWVyUXVlcnkoZmFsc2Up
LApAQCAtMTcxLDEzICsyMDQsMTkgQEAgRXh0ZW5zaW9uczo6RXh0ZW5zaW9ucygpCiAgICAgICBj
b3B5VGV4dHVyZShmYWxzZSksCiAgICAgICBjb3B5Q29tcHJlc3NlZFRleHR1cmUoZmFsc2UpLAog
ICAgICAgd2ViZ2xDb21wYXRpYmlsaXR5KGZhbHNlKSwKKyAgICAgIHJlcXVlc3RFeHRlbnNpb24o
ZmFsc2UpLAogICAgICAgYmluZEdlbmVyYXRlc1Jlc291cmNlKGZhbHNlKSwKICAgICAgIHJvYnVz
dENsaWVudE1lbW9yeShmYWxzZSksCisgICAgICB0ZXh0dXJlU1JHQkRlY29kZShmYWxzZSksCisg
ICAgICBzUkdCV3JpdGVDb250cm9sKGZhbHNlKSwKICAgICAgIGNvbG9yQnVmZmVyRmxvYXQoZmFs
c2UpLAogICAgICAgbXVsdGlzYW1wbGVDb21wYXRpYmlsaXR5KGZhbHNlKSwKICAgICAgIGZyYW1l
YnVmZmVyTWl4ZWRTYW1wbGVzKGZhbHNlKSwKICAgICAgIHRleHR1cmVOb3JtMTYoZmFsc2UpLAot
ICAgICAgcGF0aFJlbmRlcmluZyhmYWxzZSkKKyAgICAgIHBhdGhSZW5kZXJpbmcoZmFsc2UpLAor
ICAgICAgc3VyZmFjZWxlc3NDb250ZXh0KGZhbHNlKSwKKyAgICAgIGNsaWVudEFycmF5cyhmYWxz
ZSksCisgICAgICByb2J1c3RSZXNvdXJjZUluaXRpYWxpemF0aW9uKGZhbHNlKQogewogfQogCkBA
IC0zNjIsNiArNDAxLDE4IEBAIHN0YXRpYyBib29sIERldGVybWluZURYVDVUZXh0dXJlU3VwcG9y
dChjb25zdCBUZXh0dXJlQ2Fwc01hcCAmdGV4dHVyZUNhcHMpCiAgICAgcmV0dXJuIEdldEZvcm1h
dFN1cHBvcnQodGV4dHVyZUNhcHMsIHJlcXVpcmVkRm9ybWF0cywgdHJ1ZSwgdHJ1ZSwgZmFsc2Up
OwogfQogCisvLyBDaGVjayBmb3IgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdi
CitzdGF0aWMgYm9vbCBEZXRlcm1pbmVTM1RDc1JHQlRleHR1cmVTdXBwb3J0KGNvbnN0IFRleHR1
cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcykKK3sKKyAgICBzdGQ6OnZlY3RvcjxHTGVudW0+IHJlcXVp
cmVkRm9ybWF0czsKKyAgICByZXF1aXJlZEZvcm1hdHMucHVzaF9iYWNrKEdMX0NPTVBSRVNTRURf
U1JHQl9TM1RDX0RYVDFfRVhUKTsKKyAgICByZXF1aXJlZEZvcm1hdHMucHVzaF9iYWNrKEdMX0NP
TVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUKTsKKyAgICByZXF1aXJlZEZvcm1hdHMu
cHVzaF9iYWNrKEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUKTsKKyAgICBy
ZXF1aXJlZEZvcm1hdHMucHVzaF9iYWNrKEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RY
VDVfRVhUKTsKKworICAgIHJldHVybiBHZXRGb3JtYXRTdXBwb3J0KHRleHR1cmVDYXBzLCByZXF1
aXJlZEZvcm1hdHMsIHRydWUsIHRydWUsIGZhbHNlKTsKK30KKwogLy8gQ2hlY2sgZm9yIEdMX0tI
Ul90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyIGFuZCBHTF9LSFJfdGV4dHVyZV9jb21wcmVz
c2lvbl9hc3RjX2xkcgogc3RhdGljIGJvb2wgRGV0ZXJtaW5lQVNUQ1RleHR1cmVTdXBwb3J0KGNv
bnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcykKIHsKQEAgLTQ5Miw2ICs1NDMsNyBAQCB2
b2lkIEV4dGVuc2lvbnM6OnNldFRleHR1cmVFeHRlbnNpb25TdXBwb3J0KGNvbnN0IFRleHR1cmVD
YXBzTWFwICZ0ZXh0dXJlQ2FwcykKICAgICB0ZXh0dXJlQ29tcHJlc3Npb25EWFQxID0gRGV0ZXJt
aW5lRFhUMVRleHR1cmVTdXBwb3J0KHRleHR1cmVDYXBzKTsKICAgICB0ZXh0dXJlQ29tcHJlc3Np
b25EWFQzID0gRGV0ZXJtaW5lRFhUM1RleHR1cmVTdXBwb3J0KHRleHR1cmVDYXBzKTsKICAgICB0
ZXh0dXJlQ29tcHJlc3Npb25EWFQ1ID0gRGV0ZXJtaW5lRFhUNVRleHR1cmVTdXBwb3J0KHRleHR1
cmVDYXBzKTsKKyAgICB0ZXh0dXJlQ29tcHJlc3Npb25TM1RDc1JHQiA9IERldGVybWluZVMzVENz
UkdCVGV4dHVyZVN1cHBvcnQodGV4dHVyZUNhcHMpOwogICAgIHRleHR1cmVDb21wcmVzc2lvbkFT
VENIRFIgPSBEZXRlcm1pbmVBU1RDVGV4dHVyZVN1cHBvcnQodGV4dHVyZUNhcHMpOwogICAgIHRl
eHR1cmVDb21wcmVzc2lvbkFTVENMRFIgPSB0ZXh0dXJlQ29tcHJlc3Npb25BU1RDSERSOwogICAg
IGNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmUgPSBEZXRlcm1pbmVFVEMxUkdCOFRleHR1cmVTdXBw
b3J0KHRleHR1cmVDYXBzKTsKQEAgLTUwNyw3ICs1NTksNyBAQCBjb25zdCBFeHRlbnNpb25JbmZv
TWFwICZHZXRFeHRlbnNpb25JbmZvTWFwKCkKICAgICBhdXRvIGJ1aWxkRXh0ZW5zaW9uSW5mb01h
cCA9IFtdKCkgewogICAgICAgICBhdXRvIGVuYWJsZWFibGVFeHRlbnNpb24gPSBbXShFeHRlbnNp
b25JbmZvOjpFeHRlbnNpb25Cb29sIG1lbWJlcikgewogICAgICAgICAgICAgRXh0ZW5zaW9uSW5m
byBpbmZvOwotICAgICAgICAgICAgaW5mby5FbmFibGVhYmxlICAgICAgID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGluZm8uUmVxdWVzdGFibGUgICAgICA9IHRydWU7CiAgICAgICAgICAgICBpbmZvLkV4
dGVuc2lvbnNNZW1iZXIgPSBtZW1iZXI7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfTsKQEAgLTUzOCw2ICs1OTAsNyBAQCBjb25zdCBFeHRlbnNpb25JbmZvTWFwICZHZXRFeHRl
bnNpb25JbmZvTWFwKCkKICAgICAgICAgbWFwWyJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9k
eHQxIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkRY
VDEpOwogICAgICAgICBtYXBbIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MyJdID0g
ZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25EWFQzKTsKICAg
ICAgICAgbWFwWyJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiXSA9IGVzT25seUV4
dGVuc2lvbigmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uRFhUNSk7CisgICAgICAgIG1h
cFsiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiIl0gPSBlc09ubHlFeHRlbnNp
b24oJkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvblMzVENzUkdCKTsKICAgICAgICAgbWFw
WyJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkciJdID0gZXNPbmx5RXh0ZW5zaW9u
KCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25BU1RDSERSKTsKICAgICAgICAgbWFwWyJH
TF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciJdID0gZXNPbmx5RXh0ZW5zaW9uKCZF
eHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25BU1RDTERSKTsKICAgICAgICAgbWFwWyJHTF9P
RVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRl
bnNpb25zOjpjb21wcmVzc2VkRVRDMVJHQjhUZXh0dXJlKTsKQEAgLTU0NSw5ICs1OTgsOSBAQCBj
b25zdCBFeHRlbnNpb25JbmZvTWFwICZHZXRFeHRlbnNpb25JbmZvTWFwKCkKICAgICAgICAgbWFw
WyJHTF9BTkdMRV9kZXB0aF90ZXh0dXJlIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6
OmRlcHRoVGV4dHVyZXMpOwogICAgICAgICBtYXBbIkdMX09FU19kZXB0aDMyIl0gPSBlc09ubHlF
eHRlbnNpb24oJkV4dGVuc2lvbnM6OmRlcHRoMzIpOwogICAgICAgICBtYXBbIkdMX0VYVF90ZXh0
dXJlX3N0b3JhZ2UiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6dGV4dHVyZVN0b3Jh
Z2UpOwotICAgICAgICBtYXBbIkdMX09FU190ZXh0dXJlX25wb3QiXSA9IGVzT25seUV4dGVuc2lv
bigmRXh0ZW5zaW9uczo6dGV4dHVyZU5QT1QpOwotICAgICAgICBtYXBbIkdMX0VYVF9kcmF3X2J1
ZmZlcnMiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6ZHJhd0J1ZmZlcnMpOwotICAg
ICAgICBtYXBbIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJdID0gZXNPbmx5RXh0
ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlRmlsdGVyQW5pc290cm9waWMpOworICAgICAgICBt
YXBbIkdMX09FU190ZXh0dXJlX25wb3QiXSA9IGVuYWJsZWFibGVFeHRlbnNpb24oJkV4dGVuc2lv
bnM6OnRleHR1cmVOUE9UKTsKKyAgICAgICAgbWFwWyJHTF9FWFRfZHJhd19idWZmZXJzIl0gPSBl
bmFibGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpkcmF3QnVmZmVycyk7CisgICAgICAgIG1h
cFsiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl0gPSBlbmFibGVhYmxlRXh0ZW5z
aW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlRmlsdGVyQW5pc290cm9waWMpOwogICAgICAgICBtYXBb
IkdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRl
bnNpb25zOjpvY2NsdXNpb25RdWVyeUJvb2xlYW4pOwogICAgICAgICBtYXBbIkdMX05WX2ZlbmNl
Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OmZlbmNlKTsKICAgICAgICAgbWFwWyJH
TF9BTkdMRV90aW1lcl9xdWVyeSJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0aW1l
clF1ZXJ5KTsKQEAgLTU4Niw1NiArNjM5LDU4IEBAIGNvbnN0IEV4dGVuc2lvbkluZm9NYXAgJkdl
dEV4dGVuc2lvbkluZm9NYXAoKQogICAgICAgICBtYXBbIkdMX0NIUk9NSVVNX2NvcHlfdGV4dHVy
ZSJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpjb3B5VGV4dHVyZSk7CiAgICAgICAg
IG1hcFsiR0xfQ0hST01JVU1fY29weV9jb21wcmVzc2VkX3RleHR1cmUiXSA9IGVzT25seUV4dGVu
c2lvbigmRXh0ZW5zaW9uczo6Y29weUNvbXByZXNzZWRUZXh0dXJlKTsKICAgICAgICAgbWFwWyJH
TF9BTkdMRV93ZWJnbF9jb21wYXRpYmlsaXR5Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lv
bnM6OndlYmdsQ29tcGF0aWJpbGl0eSk7CisgICAgICAgIG1hcFsiR0xfQU5HTEVfcmVxdWVzdF9l
eHRlbnNpb24iXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6cmVxdWVzdEV4dGVuc2lv
bik7CiAgICAgICAgIG1hcFsiR0xfQ0hST01JVU1fYmluZF9nZW5lcmF0ZXNfcmVzb3VyY2UiXSA9
IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6YmluZEdlbmVyYXRlc1Jlc291cmNlKTsKICAg
ICAgICAgbWFwWyJHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeSJdID0gZXNPbmx5RXh0ZW5z
aW9uKCZFeHRlbnNpb25zOjpyb2J1c3RDbGllbnRNZW1vcnkpOworICAgICAgICBtYXBbIkdMX0VY
VF90ZXh0dXJlX3NSR0JfZGVjb2RlIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnRl
eHR1cmVTUkdCRGVjb2RlKTsKKyAgICAgICAgbWFwWyJHTF9FWFRfc1JHQl93cml0ZV9jb250cm9s
Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnNSR0JXcml0ZUNvbnRyb2wpOwogICAg
ICAgICBtYXBbIkdMX0VYVF9tdWx0aXNhbXBsZV9jb21wYXRpYmlsaXR5Il0gPSBlc09ubHlFeHRl
bnNpb24oJkV4dGVuc2lvbnM6Om11bHRpc2FtcGxlQ29tcGF0aWJpbGl0eSk7CiAgICAgICAgIG1h
cFsiR0xfQ0hST01JVU1fZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcyJdID0gZXNPbmx5RXh0ZW5z
aW9uKCZFeHRlbnNpb25zOjpmcmFtZWJ1ZmZlck1peGVkU2FtcGxlcyk7CiAgICAgICAgIG1hcFsi
R0xfRVhUX3RleHR1cmVfbm9ybTE2Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnRl
eHR1cmVOb3JtMTYpOwogICAgICAgICBtYXBbIkdMX0NIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIl0g
PSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnBhdGhSZW5kZXJpbmcpOworICAgICAgICBt
YXBbIkdMX09FU19zdXJmYWNlbGVzc19jb250ZXh0Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVu
c2lvbnM6OnN1cmZhY2VsZXNzQ29udGV4dCk7CisgICAgICAgIG1hcFsiR0xfQU5HTEVfY2xpZW50
X2FycmF5cyJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpjbGllbnRBcnJheXMpOwor
ICAgICAgICBtYXBbIkdMX0FOR0xFX3JvYnVzdF9yZXNvdXJjZV9pbml0aWFsaXphdGlvbiJdID0g
ZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpyb2J1c3RSZXNvdXJjZUluaXRpYWxpemF0aW9u
KTsKICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCiAKICAgICAgICAgcmV0dXJuIG1hcDsKICAg
ICB9OwogCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgogICAgIHN0YXRpYyBjb25z
dCBFeHRlbnNpb25JbmZvTWFwIGV4dGVuc2lvbkluZm8gPSBidWlsZEV4dGVuc2lvbkluZm9NYXAo
KTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICAgICByZXR1cm4gZXh0ZW5zaW9uSW5m
bzsKIH0KIAotVHlwZVByZWNpc2lvbjo6VHlwZVByZWNpc2lvbigpCitUeXBlUHJlY2lzaW9uOjpU
eXBlUHJlY2lzaW9uKCkgOiByYW5nZSh7ezAsIDB9fSksIHByZWNpc2lvbigwKQogewotICAgIHJh
bmdlWzBdID0gMDsKLSAgICByYW5nZVsxXSA9IDA7Ci0gICAgcHJlY2lzaW9uID0gMDsKIH0KIAog
dm9pZCBUeXBlUHJlY2lzaW9uOjpzZXRJRUVFRmxvYXQoKQogewotICAgIHJhbmdlWzBdID0gMTI3
OwotICAgIHJhbmdlWzFdID0gMTI3OworICAgIHJhbmdlICAgICA9IHt7MTI3LCAxMjd9fTsKICAg
ICBwcmVjaXNpb24gPSAyMzsKIH0KIAogdm9pZCBUeXBlUHJlY2lzaW9uOjpzZXRUd29zQ29tcGxl
bWVudEludCh1bnNpZ25lZCBpbnQgYml0cykKIHsKLSAgICByYW5nZVswXSA9IEdMaW50KGJpdHMp
IC0gMTsKLSAgICByYW5nZVsxXSA9IEdMaW50KGJpdHMpIC0gMjsKKyAgICByYW5nZSAgICAgPSB7
e3N0YXRpY19jYXN0PEdMaW50PihiaXRzKSAtIDEsIHN0YXRpY19jYXN0PEdMaW50PihiaXRzKSAt
IDJ9fTsKICAgICBwcmVjaXNpb24gPSAwOwogfQogCit2b2lkIFR5cGVQcmVjaXNpb246OnNldFNp
bXVsYXRlZEZsb2F0KHVuc2lnbmVkIGludCByLCB1bnNpZ25lZCBpbnQgcCkKK3sKKyAgICByYW5n
ZSAgICAgPSB7e3N0YXRpY19jYXN0PEdMaW50PihyKSwgc3RhdGljX2Nhc3Q8R0xpbnQ+KHIpfX07
CisgICAgcHJlY2lzaW9uID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KHApOworfQorCiB2b2lkIFR5cGVQ
cmVjaXNpb246OnNldFNpbXVsYXRlZEludCh1bnNpZ25lZCBpbnQgcikKIHsKLSAgICByYW5nZVsw
XSA9IEdMaW50KHIpOwotICAgIHJhbmdlWzFdID0gR0xpbnQocik7CisgICAgcmFuZ2UgICAgID0g
e3tzdGF0aWNfY2FzdDxHTGludD4ociksIHN0YXRpY19jYXN0PEdMaW50PihyKX19OwogICAgIHBy
ZWNpc2lvbiA9IDA7CiB9CiAKIHZvaWQgVHlwZVByZWNpc2lvbjo6Z2V0KEdMaW50ICpyZXR1cm5S
YW5nZSwgR0xpbnQgKnJldHVyblByZWNpc2lvbikgY29uc3QKIHsKLSAgICByZXR1cm5SYW5nZVsw
XSA9IHJhbmdlWzBdOwotICAgIHJldHVyblJhbmdlWzFdID0gcmFuZ2VbMV07CisgICAgc3RkOjpj
b3B5KHJhbmdlLmJlZ2luKCksIHJhbmdlLmVuZCgpLCByZXR1cm5SYW5nZSk7CiAgICAgKnJldHVy
blByZWNpc2lvbiA9IHByZWNpc2lvbjsKIH0KIApAQCAtNzUzLDYgKzgwOCwxOTUgQEAgQ2Fwczo6
Q2FwcygpCiAgICAgfQogfQogCitDYXBzIEdlbmVyYXRlTWluaW11bUNhcHMoY29uc3QgVmVyc2lv
biAmY2xpZW50VmVyc2lvbikKK3sKKyAgICBDYXBzIGNhcHM7CisKKyAgICBpZiAoY2xpZW50VmVy
c2lvbiA+PSBWZXJzaW9uKDIsIDApKQorICAgIHsKKyAgICAgICAgLy8gVGFibGUgNi4xOAorICAg
ICAgICBjYXBzLm1heDJEVGV4dHVyZVNpemUgICAgICA9IDY0OworICAgICAgICBjYXBzLm1heEN1
YmVNYXBUZXh0dXJlU2l6ZSA9IDE2OworICAgICAgICBjYXBzLm1heFZpZXdwb3J0V2lkdGggICAg
ICA9IGNhcHMubWF4MkRUZXh0dXJlU2l6ZTsKKyAgICAgICAgY2Fwcy5tYXhWaWV3cG9ydEhlaWdo
dCAgICAgPSBjYXBzLm1heDJEVGV4dHVyZVNpemU7CisgICAgICAgIGNhcHMubWluQWxpYXNlZFBv
aW50U2l6ZSAgID0gMTsKKyAgICAgICAgY2Fwcy5tYXhBbGlhc2VkUG9pbnRTaXplICAgPSAxOwor
ICAgICAgICBjYXBzLm1pbkFsaWFzZWRMaW5lV2lkdGggICA9IDE7CisgICAgICAgIGNhcHMubWF4
QWxpYXNlZExpbmVXaWR0aCAgID0gMTsKKworICAgICAgICAvLyBUYWJsZSA2LjE5CisgICAgICAg
IGNhcHMudmVydGV4SGlnaHBGbG9hdC5zZXRTaW11bGF0ZWRGbG9hdCg2MiwgMTYpOworICAgICAg
ICBjYXBzLnZlcnRleE1lZGl1bXBGbG9hdC5zZXRTaW11bGF0ZWRGbG9hdCgxNCwgMTApOworICAg
ICAgICBjYXBzLnZlcnRleExvd3BGbG9hdC5zZXRTaW11bGF0ZWRGbG9hdCgxLCA4KTsKKyAgICAg
ICAgY2Fwcy52ZXJ0ZXhIaWdocEludC5zZXRTaW11bGF0ZWRJbnQoMTYpOworICAgICAgICBjYXBz
LnZlcnRleE1lZGl1bXBJbnQuc2V0U2ltdWxhdGVkSW50KDEwKTsKKyAgICAgICAgY2Fwcy52ZXJ0
ZXhMb3dwSW50LnNldFNpbXVsYXRlZEludCg4KTsKKyAgICAgICAgY2Fwcy5mcmFnbWVudEhpZ2hw
RmxvYXQuc2V0U2ltdWxhdGVkRmxvYXQoNjIsIDE2KTsKKyAgICAgICAgY2Fwcy5mcmFnbWVudE1l
ZGl1bXBGbG9hdC5zZXRTaW11bGF0ZWRGbG9hdCgxNCwgMTApOworICAgICAgICBjYXBzLmZyYWdt
ZW50TG93cEZsb2F0LnNldFNpbXVsYXRlZEZsb2F0KDEsIDgpOworICAgICAgICBjYXBzLmZyYWdt
ZW50SGlnaHBJbnQuc2V0U2ltdWxhdGVkSW50KDE2KTsKKyAgICAgICAgY2Fwcy5mcmFnbWVudE1l
ZGl1bXBJbnQuc2V0U2ltdWxhdGVkSW50KDEwKTsKKyAgICAgICAgY2Fwcy5mcmFnbWVudExvd3BJ
bnQuc2V0U2ltdWxhdGVkSW50KDgpOworCisgICAgICAgIC8vIFRhYmxlIDYuMjAKKyAgICAgICAg
Y2Fwcy5tYXhWZXJ0ZXhBdHRyaWJ1dGVzICAgICAgICAgID0gODsKKyAgICAgICAgY2Fwcy5tYXhW
ZXJ0ZXhVbmlmb3JtVmVjdG9ycyAgICAgID0gMTI4OworICAgICAgICBjYXBzLm1heFZhcnlpbmdW
ZWN0b3JzICAgICAgICAgICAgPSA4OworICAgICAgICBjYXBzLm1heENvbWJpbmVkVGV4dHVyZUlt
YWdlVW5pdHMgPSA4OworICAgICAgICBjYXBzLm1heFRleHR1cmVJbWFnZVVuaXRzICAgICAgICAg
PSA4OworICAgICAgICBjYXBzLm1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgICAgPSAxNjsKKyAg
ICAgICAgY2Fwcy5tYXhSZW5kZXJidWZmZXJTaXplICAgICAgICAgID0gMTsKKyAgICB9CisKKyAg
ICBpZiAoY2xpZW50VmVyc2lvbiA+PSBWZXJzaW9uKDMsIDApKQorICAgIHsKKyAgICAgICAgLy8g
VGFibGUgNi4yOAorICAgICAgICBjYXBzLm1heEVsZW1lbnRJbmRleCAgICAgICA9ICgxIDw8IDI0
KSAtIDE7CisgICAgICAgIGNhcHMubWF4M0RUZXh0dXJlU2l6ZSAgICAgID0gMjU2OworICAgICAg
ICBjYXBzLm1heDJEVGV4dHVyZVNpemUgICAgICA9IDIwNDg7CisgICAgICAgIGNhcHMubWF4QXJy
YXlUZXh0dXJlTGF5ZXJzID0gMjU2OworICAgICAgICBjYXBzLm1heExPREJpYXMgICAgICAgICAg
ICA9IDIuMGY7CisgICAgICAgIGNhcHMubWF4Q3ViZU1hcFRleHR1cmVTaXplID0gMjA0ODsKKyAg
ICAgICAgY2Fwcy5tYXhSZW5kZXJidWZmZXJTaXplICAgPSAyMDQ4OworICAgICAgICBjYXBzLm1h
eERyYXdCdWZmZXJzICAgICAgICA9IDQ7CisgICAgICAgIGNhcHMubWF4Q29sb3JBdHRhY2htZW50
cyAgID0gNDsKKyAgICAgICAgY2Fwcy5tYXhWaWV3cG9ydFdpZHRoICAgICAgPSBjYXBzLm1heDJE
VGV4dHVyZVNpemU7CisgICAgICAgIGNhcHMubWF4Vmlld3BvcnRIZWlnaHQgICAgID0gY2Fwcy5t
YXgyRFRleHR1cmVTaXplOworCisgICAgICAgIC8vIFRhYmxlIDYuMjkKKyAgICAgICAgY2Fwcy5j
b21wcmVzc2VkVGV4dHVyZUZvcm1hdHMucHVzaF9iYWNrKEdMX0NPTVBSRVNTRURfUjExX0VBQyk7
CisgICAgICAgIGNhcHMuY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzLnB1c2hfYmFjayhHTF9DT01Q
UkVTU0VEX1NJR05FRF9SMTFfRUFDKTsKKyAgICAgICAgY2Fwcy5jb21wcmVzc2VkVGV4dHVyZUZv
cm1hdHMucHVzaF9iYWNrKEdMX0NPTVBSRVNTRURfUkcxMV9FQUMpOworICAgICAgICBjYXBzLmNv
bXByZXNzZWRUZXh0dXJlRm9ybWF0cy5wdXNoX2JhY2soR0xfQ09NUFJFU1NFRF9TSUdORURfUkcx
MV9FQUMpOworICAgICAgICBjYXBzLmNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5wdXNoX2JhY2so
R0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIpOworICAgICAgICBjYXBzLmNvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0cy5wdXNoX2JhY2soR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyKTsKKyAgICAgICAgY2Fw
cy5jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMucHVzaF9iYWNrKEdMX0NPTVBSRVNTRURfUkdCOF9Q
VU5DSFRIUk9VR0hfQUxQSEExX0VUQzIpOworICAgICAgICBjYXBzLmNvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0cy5wdXNoX2JhY2soR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEEx
X0VUQzIpOworICAgICAgICBjYXBzLmNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5wdXNoX2JhY2so
R0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyk7CisgICAgICAgIGNhcHMuY29tcHJlc3NlZFRl
eHR1cmVGb3JtYXRzLnB1c2hfYmFjayhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VB
Qyk7CisgICAgICAgIGNhcHMudmVydGV4SGlnaHBGbG9hdC5zZXRJRUVFRmxvYXQoKTsKKyAgICAg
ICAgY2Fwcy52ZXJ0ZXhIaWdocEludC5zZXRUd29zQ29tcGxlbWVudEludCgzMik7CisgICAgICAg
IGNhcHMudmVydGV4TWVkaXVtcEludC5zZXRUd29zQ29tcGxlbWVudEludCgxNik7CisgICAgICAg
IGNhcHMudmVydGV4TG93cEludC5zZXRUd29zQ29tcGxlbWVudEludCg4KTsKKyAgICAgICAgY2Fw
cy5mcmFnbWVudEhpZ2hwRmxvYXQuc2V0SUVFRUZsb2F0KCk7CisgICAgICAgIGNhcHMuZnJhZ21l
bnRIaWdocEludC5zZXRTaW11bGF0ZWRJbnQoMzIpOworICAgICAgICBjYXBzLmZyYWdtZW50TWVk
aXVtcEludC5zZXRUd29zQ29tcGxlbWVudEludCgxNik7CisgICAgICAgIGNhcHMuZnJhZ21lbnRM
b3dwSW50LnNldFR3b3NDb21wbGVtZW50SW50KDgpOworICAgICAgICBjYXBzLm1heFNlcnZlcldh
aXRUaW1lb3V0ID0gMDsKKworICAgICAgICAvLyBUYWJsZSA2LjMxCisgICAgICAgIGNhcHMubWF4
VmVydGV4QXR0cmlidXRlcyAgICAgICAgPSAxNjsKKyAgICAgICAgY2Fwcy5tYXhWZXJ0ZXhVbmlm
b3JtQ29tcG9uZW50cyA9IDEwMjQ7CisgICAgICAgIGNhcHMubWF4VmVydGV4VW5pZm9ybVZlY3Rv
cnMgICAgPSAyNTY7CisgICAgICAgIGNhcHMubWF4VmVydGV4VW5pZm9ybUJsb2NrcyAgICAgPSAx
MjsKKyAgICAgICAgY2Fwcy5tYXhWZXJ0ZXhPdXRwdXRDb21wb25lbnRzICA9IDY0OworICAgICAg
ICBjYXBzLm1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzID0gMTY7CisKKyAgICAgICAgLy8gVGFi
bGUgNi4zMgorICAgICAgICBjYXBzLm1heEZyYWdtZW50VW5pZm9ybUNvbXBvbmVudHMgPSA4OTY7
CisgICAgICAgIGNhcHMubWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyAgICA9IDIyNDsKKyAgICAg
ICAgY2Fwcy5tYXhGcmFnbWVudFVuaWZvcm1CbG9ja3MgICAgID0gMTI7CisgICAgICAgIGNhcHMu
bWF4RnJhZ21lbnRJbnB1dENvbXBvbmVudHMgICA9IDYwOworICAgICAgICBjYXBzLm1heFRleHR1
cmVJbWFnZVVuaXRzICAgICAgICAgPSAxNjsKKyAgICAgICAgY2Fwcy5taW5Qcm9ncmFtVGV4ZWxP
ZmZzZXQgICAgICAgID0gLTg7CisgICAgICAgIGNhcHMubWF4UHJvZ3JhbVRleGVsT2Zmc2V0ICAg
ICAgICA9IDc7CisKKyAgICAgICAgLy8gVGFibGUgNi4zMworICAgICAgICBjYXBzLm1heFVuaWZv
cm1CdWZmZXJCaW5kaW5ncyAgICAgPSAyNDsKKyAgICAgICAgY2Fwcy5tYXhVbmlmb3JtQmxvY2tT
aXplICAgICAgICAgID0gMTYzODQ7CisgICAgICAgIGNhcHMudW5pZm9ybUJ1ZmZlck9mZnNldEFs
aWdubWVudCA9IDI1NjsKKyAgICAgICAgY2Fwcy5tYXhDb21iaW5lZFVuaWZvcm1CbG9ja3MgICAg
ID0gMjQ7CisgICAgICAgIGNhcHMubWF4Q29tYmluZWRWZXJ0ZXhVbmlmb3JtQ29tcG9uZW50cyA9
CisgICAgICAgICAgICBjYXBzLm1heFZlcnRleFVuaWZvcm1CbG9ja3MgKiAoY2Fwcy5tYXhVbmlm
b3JtQmxvY2tTaXplIC8gNCkgKworICAgICAgICAgICAgY2Fwcy5tYXhWZXJ0ZXhVbmlmb3JtQ29t
cG9uZW50czsKKyAgICAgICAgY2Fwcy5tYXhDb21iaW5lZEZyYWdtZW50VW5pZm9ybUNvbXBvbmVu
dHMgPQorICAgICAgICAgICAgY2Fwcy5tYXhGcmFnbWVudFVuaWZvcm1CbG9ja3MgKiAoY2Fwcy5t
YXhVbmlmb3JtQmxvY2tTaXplIC8gNCkgKworICAgICAgICAgICAgY2Fwcy5tYXhGcmFnbWVudFVu
aWZvcm1Db21wb25lbnRzOworICAgICAgICBjYXBzLm1heFZhcnlpbmdDb21wb25lbnRzICAgICAg
ICAgPSA2MDsKKyAgICAgICAgY2Fwcy5tYXhWYXJ5aW5nVmVjdG9ycyAgICAgICAgICAgID0gMTU7
CisgICAgICAgIGNhcHMubWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyA9IDMyOworCisgICAg
ICAgIC8vIFRhYmxlIDYuMzQKKyAgICAgICAgY2Fwcy5tYXhUcmFuc2Zvcm1GZWVkYmFja0ludGVy
bGVhdmVkQ29tcG9uZW50cyA9IDY0OworICAgICAgICBjYXBzLm1heFRyYW5zZm9ybUZlZWRiYWNr
U2VwYXJhdGVBdHRyaWJ1dGVzICAgID0gNDsKKyAgICAgICAgY2Fwcy5tYXhUcmFuc2Zvcm1GZWVk
YmFja1NlcGFyYXRlQ29tcG9uZW50cyAgICA9IDQ7CisKKyAgICAgICAgLy8gVGFibGUgMy4zNQor
ICAgICAgICBjYXBzLm1heFNhbXBsZXMgPSA0OworICAgIH0KKworICAgIGlmIChjbGllbnRWZXJz
aW9uID49IFZlcnNpb24oMywgMSkpCisgICAgeworICAgICAgICAvLyBUYWJsZSAyMC40MAorICAg
ICAgICBjYXBzLm1heEZyYW1lYnVmZmVyV2lkdGggICAgPSAyMDQ4OworICAgICAgICBjYXBzLm1h
eEZyYW1lYnVmZmVySGVpZ2h0ICAgPSAyMDQ4OworICAgICAgICBjYXBzLm1heEZyYW1lYnVmZmVy
U2FtcGxlcyAgPSA0OworICAgICAgICBjYXBzLm1heFNhbXBsZU1hc2tXb3JkcyAgICAgPSAxOwor
ICAgICAgICBjYXBzLm1heENvbG9yVGV4dHVyZVNhbXBsZXMgPSAxOworICAgICAgICBjYXBzLm1h
eERlcHRoVGV4dHVyZVNhbXBsZXMgPSAxOworICAgICAgICBjYXBzLm1heEludGVnZXJTYW1wbGVz
ICAgICAgPSAxOworCisgICAgICAgIC8vIFRhYmxlIDIwLjQxCisgICAgICAgIGNhcHMubWF4VmVy
dGV4QXR0cmliUmVsYXRpdmVPZmZzZXQgPSAyMDQ3OworICAgICAgICBjYXBzLm1heFZlcnRleEF0
dHJpYkJpbmRpbmdzICAgICAgID0gMTY7CisgICAgICAgIGNhcHMubWF4VmVydGV4QXR0cmliU3Ry
aWRlICAgICAgICAgPSAyMDQ4OworCisgICAgICAgIC8vIFRhYmxlIDIwLjQzCisgICAgICAgIGNh
cHMubWF4VmVydGV4QXRvbWljQ291bnRlckJ1ZmZlcnMgPSAwOworICAgICAgICBjYXBzLm1heFZl
cnRleEF0b21pY0NvdW50ZXJzICAgICAgID0gMDsKKyAgICAgICAgY2Fwcy5tYXhWZXJ0ZXhJbWFn
ZVVuaWZvcm1zICAgICAgICA9IDA7CisgICAgICAgIGNhcHMubWF4VmVydGV4U2hhZGVyU3RvcmFn
ZUJsb2NrcyAgPSAwOworCisgICAgICAgIC8vIFRhYmxlIDIwLjQ0CisgICAgICAgIGNhcHMubWF4
RnJhZ21lbnRVbmlmb3JtQ29tcG9uZW50cyAgICA9IDEwMjQ7CisgICAgICAgIGNhcHMubWF4RnJh
Z21lbnRVbmlmb3JtVmVjdG9ycyAgICAgICA9IDI1NjsKKyAgICAgICAgY2Fwcy5tYXhGcmFnbWVu
dEF0b21pY0NvdW50ZXJCdWZmZXJzID0gMDsKKyAgICAgICAgY2Fwcy5tYXhGcmFnbWVudEF0b21p
Y0NvdW50ZXJzICAgICAgID0gMDsKKyAgICAgICAgY2Fwcy5tYXhGcmFnbWVudEltYWdlVW5pZm9y
bXMgICAgICAgID0gMDsKKyAgICAgICAgY2Fwcy5tYXhGcmFnbWVudFNoYWRlclN0b3JhZ2VCbG9j
a3MgID0gMDsKKyAgICAgICAgY2Fwcy5taW5Qcm9ncmFtVGV4dHVyZUdhdGhlck9mZnNldCAgID0g
MDsKKyAgICAgICAgY2Fwcy5tYXhQcm9ncmFtVGV4dHVyZUdhdGhlck9mZnNldCAgID0gMDsKKwor
ICAgICAgICAvLyBUYWJsZSAyMC40NQorICAgICAgICBjYXBzLm1heENvbXB1dGVXb3JrR3JvdXBD
b3VudCAgICAgICA9IHt7NjU1MzUsIDY1NTM1LCA2NTUzNX19OworICAgICAgICBjYXBzLm1heENv
bXB1dGVXb3JrR3JvdXBTaXplICAgICAgICA9IHt7MTI4LCAxMjgsIDY0fX07CisgICAgICAgIGNh
cHMubWF4Q29tcHV0ZVdvcmtHcm91cEludm9jYXRpb25zID0gMTI7CisgICAgICAgIGNhcHMubWF4
Q29tcHV0ZVVuaWZvcm1CbG9ja3MgICAgICAgID0gMTI7CisgICAgICAgIGNhcHMubWF4Q29tcHV0
ZVRleHR1cmVJbWFnZVVuaXRzICAgID0gMTY7CisgICAgICAgIGNhcHMubWF4Q29tcHV0ZVNoYXJl
ZE1lbW9yeVNpemUgICAgID0gMTYzODQ7CisgICAgICAgIGNhcHMubWF4Q29tcHV0ZVVuaWZvcm1D
b21wb25lbnRzICAgID0gMTAyNDsKKyAgICAgICAgY2Fwcy5tYXhDb21wdXRlQXRvbWljQ291bnRl
ckJ1ZmZlcnMgPSAxOworICAgICAgICBjYXBzLm1heENvbXB1dGVBdG9taWNDb3VudGVycyAgICAg
ICA9IDg7CisgICAgICAgIGNhcHMubWF4Q29tcHV0ZUltYWdlVW5pZm9ybXMgICAgICAgID0gNDsK
KyAgICAgICAgY2Fwcy5tYXhDb21iaW5lZENvbXB1dGVVbmlmb3JtQ29tcG9uZW50cyA9CisgICAg
ICAgICAgICBjYXBzLm1heENvbXB1dGVVbmlmb3JtQmxvY2tzICogc3RhdGljX2Nhc3Q8R0x1aW50
PihjYXBzLm1heFVuaWZvcm1CbG9ja1NpemUgLyA0KSArCisgICAgICAgICAgICBjYXBzLm1heENv
bXB1dGVVbmlmb3JtQ29tcG9uZW50czsKKyAgICAgICAgY2Fwcy5tYXhDb21wdXRlU2hhZGVyU3Rv
cmFnZUJsb2NrcyA9IDQ7CisKKyAgICAgICAgLy8gVGFibGUgMjAuNDYKKyAgICAgICAgY2Fwcy5t
YXhVbmlmb3JtQnVmZmVyQmluZGluZ3MgPSAzNjsKKyAgICAgICAgY2Fwcy5tYXhDb21iaW5lZEZy
YWdtZW50VW5pZm9ybUNvbXBvbmVudHMgPQorICAgICAgICAgICAgY2Fwcy5tYXhGcmFnbWVudFVu
aWZvcm1CbG9ja3MgKiAoY2Fwcy5tYXhVbmlmb3JtQmxvY2tTaXplIC8gNCkgKworICAgICAgICAg
ICAgY2Fwcy5tYXhGcmFnbWVudFVuaWZvcm1Db21wb25lbnRzOworICAgICAgICBjYXBzLm1heENv
bWJpbmVkVGV4dHVyZUltYWdlVW5pdHMgICAgID0gNDg7CisgICAgICAgIGNhcHMubWF4Q29tYmlu
ZWRTaGFkZXJPdXRwdXRSZXNvdXJjZXMgPSA0OworCisgICAgICAgIC8vIFRhYmxlIDIwLjQ3Cisg
ICAgICAgIGNhcHMubWF4VW5pZm9ybUxvY2F0aW9ucyAgICAgICAgICAgICAgICA9IDEwMjQ7Cisg
ICAgICAgIGNhcHMubWF4QXRvbWljQ291bnRlckJ1ZmZlckJpbmRpbmdzICAgICA9IDE7CisgICAg
ICAgIGNhcHMubWF4QXRvbWljQ291bnRlckJ1ZmZlclNpemUgICAgICAgICA9IDMyOworICAgICAg
ICBjYXBzLm1heENvbWJpbmVkQXRvbWljQ291bnRlckJ1ZmZlcnMgICAgPSAxOworICAgICAgICBj
YXBzLm1heENvbWJpbmVkQXRvbWljQ291bnRlcnMgICAgICAgICAgPSA4OworICAgICAgICBjYXBz
Lm1heEltYWdlVW5pdHMgICAgICAgICAgICAgICAgICAgICAgPSA0OworICAgICAgICBjYXBzLm1h
eENvbWJpbmVkSW1hZ2VVbmlmb3JtcyAgICAgICAgICAgPSA0OworICAgICAgICBjYXBzLm1heFNo
YWRlclN0b3JhZ2VCdWZmZXJCaW5kaW5ncyAgICAgPSA0OworICAgICAgICBjYXBzLm1heFNoYWRl
clN0b3JhZ2VCbG9ja1NpemUgICAgICAgICAgPSAxIDw8IDI3OworICAgICAgICBjYXBzLm1heENv
bWJpbmVkU2hhZGVyU3RvcmFnZUJsb2NrcyAgICAgPSA0OworICAgICAgICBjYXBzLnNoYWRlclN0
b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQgPSAyNTY7CisgICAgfQorCisgICAgcmV0dXJuIGNh
cHM7Cit9CiB9CiAKIG5hbWVzcGFjZSBlZ2wKQEAgLTc2Niw2ICsxMDEwLDcgQEAgQ2Fwczo6Q2Fw
cygpCiBEaXNwbGF5RXh0ZW5zaW9uczo6RGlzcGxheUV4dGVuc2lvbnMoKQogICAgIDogY3JlYXRl
Q29udGV4dFJvYnVzdG5lc3MoZmFsc2UpLAogICAgICAgZDNkU2hhcmVIYW5kbGVDbGllbnRCdWZm
ZXIoZmFsc2UpLAorICAgICAgZDNkVGV4dHVyZUNsaWVudEJ1ZmZlcihmYWxzZSksCiAgICAgICBz
dXJmYWNlRDNEVGV4dHVyZTJEU2hhcmVIYW5kbGUoZmFsc2UpLAogICAgICAgcXVlcnlTdXJmYWNl
UG9pbnRlcihmYWxzZSksCiAgICAgICB3aW5kb3dGaXhlZFNpemUoZmFsc2UpLApAQCAtNzkxLDcg
KzEwMzYsMTMgQEAgRGlzcGxheUV4dGVuc2lvbnM6OkRpc3BsYXlFeHRlbnNpb25zKCkKICAgICAg
IHN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTIoZmFsc2UpLAogICAgICAgY3JlYXRlQ29udGV4
dFdlYkdMQ29tcGF0aWJpbGl0eShmYWxzZSksCiAgICAgICBjcmVhdGVDb250ZXh0QmluZEdlbmVy
YXRlc1Jlc291cmNlKGZhbHNlKSwKLSAgICAgIGdldFN5bmNWYWx1ZXMoZmFsc2UpCisgICAgICBn
ZXRTeW5jVmFsdWVzKGZhbHNlKSwKKyAgICAgIHN3YXBCdWZmZXJzV2l0aERhbWFnZShmYWxzZSks
CisgICAgICBwaXhlbEZvcm1hdEZsb2F0KGZhbHNlKSwKKyAgICAgIHN1cmZhY2VsZXNzQ29udGV4
dChmYWxzZSksCisgICAgICBkaXNwbGF5VGV4dHVyZVNoYXJlR3JvdXAoZmFsc2UpLAorICAgICAg
Y3JlYXRlQ29udGV4dENsaWVudEFycmF5cyhmYWxzZSksCisgICAgICBjcmVhdGVDb250ZXh0Um9i
dXN0UmVzb3VyY2VJbml0aWFsaXphdGlvbihmYWxzZSkKIHsKIH0KIApAQCAtODAzLDYgKzEwNTQs
NyBAQCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gRGlzcGxheUV4dGVuc2lvbnM6OmdldFN0cmlu
Z3MoKSBjb25zdAogICAgIC8vICAgICAgICAgICAgICAgICAgIHwgRXh0ZW5zaW9uIG5hbWUgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRlZCBmbGFnICAgICAg
ICAgICAgICAgICAgICB8IE91dHB1dCB2ZWN0b3IgICB8CiAgICAgSW5zZXJ0RXh0ZW5zaW9uU3Ry
aW5nKCJFR0xfRVhUX2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3MiLCAgICAgICAgICAgICAgICAg
ICBjcmVhdGVDb250ZXh0Um9idXN0bmVzcywgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7
CiAgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfZDNkX3NoYXJlX2hhbmRsZV9j
bGllbnRfYnVmZmVyIiwgICAgICAgICAgICBkM2RTaGFyZUhhbmRsZUNsaWVudEJ1ZmZlciwgICAg
ICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xf
QU5HTEVfZDNkX3RleHR1cmVfY2xpZW50X2J1ZmZlciIsICAgICAgICAgICAgICAgICBkM2RUZXh0
dXJlQ2xpZW50QnVmZmVyLCAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAgSW5z
ZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfc3VyZmFjZV9kM2RfdGV4dHVyZV8yZF9zaGFy
ZV9oYW5kbGUiLCAgICAgICBzdXJmYWNlRDNEVGV4dHVyZTJEU2hhcmVIYW5kbGUsICAgICAmZXh0
ZW5zaW9uU3RyaW5ncyk7CiAgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfcXVl
cnlfc3VyZmFjZV9wb2ludGVyIiwgICAgICAgICAgICAgICAgICAgICBxdWVyeVN1cmZhY2VQb2lu
dGVyLCAgICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAgSW5zZXJ0RXh0ZW5z
aW9uU3RyaW5nKCJFR0xfQU5HTEVfd2luZG93X2ZpeGVkX3NpemUiLCAgICAgICAgICAgICAgICAg
ICAgICAgICB3aW5kb3dGaXhlZFNpemUsICAgICAgICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3Ry
aW5ncyk7CkBAIC04MjgsNiArMTA4MCwxMiBAQCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gRGlz
cGxheUV4dGVuc2lvbnM6OmdldFN0cmluZ3MoKSBjb25zdAogICAgIEluc2VydEV4dGVuc2lvblN0
cmluZygiRUdMX0FOR0xFX2NyZWF0ZV9jb250ZXh0X3dlYmdsX2NvbXBhdGliaWxpdHkiLCAgICAg
ICAgY3JlYXRlQ29udGV4dFdlYkdMQ29tcGF0aWJpbGl0eSwgICAgJmV4dGVuc2lvblN0cmluZ3Mp
OwogICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0NIUk9NSVVNX2NyZWF0ZV9jb250ZXh0
X2JpbmRfZ2VuZXJhdGVzX3Jlc291cmNlIiwgY3JlYXRlQ29udGV4dEJpbmRHZW5lcmF0ZXNSZXNv
dXJjZSwgJmV4dGVuc2lvblN0cmluZ3MpOwogICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdM
X0NIUk9NSVVNX3N5bmNfY29udHJvbCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U3lu
Y1ZhbHVlcywgICAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIElu
c2VydEV4dGVuc2lvblN0cmluZygiRUdMX0VYVF9zd2FwX2J1ZmZlcnNfd2l0aF9kYW1hZ2UiLCAg
ICAgICAgICAgICAgICAgICAgc3dhcEJ1ZmZlcnNXaXRoRGFtYWdlLCAgICAgICAgICAgICAgJmV4
dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0VYVF9waXhl
bF9mb3JtYXRfZmxvYXQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxGb3JtYXRGbG9h
dCwgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVu
c2lvblN0cmluZygiRUdMX0tIUl9zdXJmYWNlbGVzc19jb250ZXh0IiwgICAgICAgICAgICAgICAg
ICAgICAgICAgc3VyZmFjZWxlc3NDb250ZXh0LCAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0
cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX2Rpc3BsYXlfdGV4
dHVyZV9zaGFyZV9ncm91cCIsICAgICAgICAgICAgICAgZGlzcGxheVRleHR1cmVTaGFyZUdyb3Vw
LCAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmlu
ZygiRUdMX0FOR0xFX2NyZWF0ZV9jb250ZXh0X2NsaWVudF9hcnJheXMiLCAgICAgICAgICAgICAg
Y3JlYXRlQ29udGV4dENsaWVudEFycmF5cywgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwor
ICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX2NyZWF0ZV9jb250ZXh0X3JvYnVz
dF9yZXNvdXJjZV9pbml0aWFsaXphdGlvbiIsIGNyZWF0ZUNvbnRleHRSb2J1c3RSZXNvdXJjZUlu
aXRpYWxpemF0aW9uLCAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAgLy8gVE9ETyhqbWFkaWxsKTog
RW5hYmxlIHRoaXMgd2hlbiBjb21wbGV0ZS4KICAgICAvL0luc2VydEV4dGVuc2lvblN0cmluZygi
S0hSX2NyZWF0ZV9jb250ZXh0X25vX2Vycm9yIiwgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZUNvbnRleHROb0Vycm9yLCAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKICAgICAv
LyBjbGFuZy1mb3JtYXQgb24KQEAgLTg1Nyw2ICsxMTE1LDcgQEAgQ2xpZW50RXh0ZW5zaW9uczo6
Q2xpZW50RXh0ZW5zaW9ucygpCiAgICAgICBwbGF0Zm9ybUFOR0xFKGZhbHNlKSwKICAgICAgIHBs
YXRmb3JtQU5HTEVEM0QoZmFsc2UpLAogICAgICAgcGxhdGZvcm1BTkdMRU9wZW5HTChmYWxzZSks
CisgICAgICBwbGF0Zm9ybUFOR0xFVnVsa2FuKGZhbHNlKSwKICAgICAgIGRldmljZUNyZWF0aW9u
KGZhbHNlKSwKICAgICAgIGRldmljZUNyZWF0aW9uRDNEMTEoZmFsc2UpLAogICAgICAgeDExVmlz
dWFsKGZhbHNlKSwKQEAgLTg3OCw2ICsxMTM3LDcgQEAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
IENsaWVudEV4dGVuc2lvbnM6OmdldFN0cmluZ3MoKSBjb25zdAogICAgIEluc2VydEV4dGVuc2lv
blN0cmluZygiRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX2QzZCIsICAgICAgICAgIHBsYXRmb3Jt
QU5HTEVEM0QsICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKICAgICBJbnNlcnRFeHRlbnNp
b25TdHJpbmcoIkVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9vcGVuZ2wiLCAgICAgICBwbGF0Zm9y
bUFOR0xFT3BlbkdMLCAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAgSW5zZXJ0RXh0ZW5z
aW9uU3RyaW5nKCJFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfbnVsbCIsICAgICAgICAgcGxhdGZv
cm1BTkdMRU5VTEwsICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVu
c2lvblN0cmluZygiRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX3Z1bGthbiIsICAgICAgIHBsYXRm
b3JtQU5HTEVWdWxrYW4sICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKICAgICBJbnNlcnRFeHRl
bnNpb25TdHJpbmcoIkVHTF9BTkdMRV9kZXZpY2VfY3JlYXRpb24iLCAgICAgICAgICAgICBkZXZp
Y2VDcmVhdGlvbiwgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAgSW5zZXJ0RXh0
ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfZGV2aWNlX2NyZWF0aW9uX2QzZDExIiwgICAgICAgZGV2
aWNlQ3JlYXRpb25EM0QxMSwgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwogICAgIEluc2VydEV4
dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX3gxMV92aXN1YWwiLCAgICAgICAgICAgICAgICAgIHgx
MVZpc3VhbCwgICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9DYXBzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ2Fwcy5oCmluZGV4IGMxY2EwMzk2OWU5MWFiOTc0
NjMxNzg2MTQ5OWUzMWQ5ZmM3OGUwMjAuLjg3Y2RkZmNkYTBiMjlkOWEyYzA2ZDNmY2JlODY3Mjhi
M2UyNmM3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9DYXBzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NhcHMu
aApAQCAtOSw2ICs5LDcgQEAKIAogI2luY2x1ZGUgImFuZ2xlX2dsLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvYW5nbGV0eXBlcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1ZlcnNpb24uaCIKIAogI2lu
Y2x1ZGUgPG1hcD4KICNpbmNsdWRlIDxzZXQ+CkBAIC0xOSw2ICsyMCw4IEBACiBuYW1lc3BhY2Ug
Z2wKIHsKIAorc3RydWN0IEV4dGVuc2lvbnM7CisKIHR5cGVkZWYgc3RkOjpzZXQ8R0x1aW50PiBT
dXBwb3J0ZWRTYW1wbGVTZXQ7CiAKIHN0cnVjdCBUZXh0dXJlQ2FwcwpAQCAtNDUsNiArNDgsMTAg
QEAgc3RydWN0IFRleHR1cmVDYXBzCiAgICAgR0x1aW50IGdldE5lYXJlc3RTYW1wbGVzKEdMdWlu
dCByZXF1ZXN0ZWRTYW1wbGVzKSBjb25zdDsKIH07CiAKK1RleHR1cmVDYXBzIEdlbmVyYXRlTWlu
aW11bVRleHR1cmVDYXBzKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnNpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFeHRlbnNpb25zICZleHRl
bnNpb25zKTsKKwogY2xhc3MgVGV4dHVyZUNhcHNNYXAKIHsKICAgcHVibGljOgpAQCAtNjYsNiAr
NzMsOSBAQCBjbGFzcyBUZXh0dXJlQ2Fwc01hcAogICAgIEludGVybmFsRm9ybWF0VG9DYXBzTWFw
IG1DYXBzTWFwOwogfTsKIAorVGV4dHVyZUNhcHNNYXAgR2VuZXJhdGVNaW5pbXVtVGV4dHVyZUNh
cHNNYXAoY29uc3QgVmVyc2lvbiAmY2xpZW50VmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMpOwor
CiBzdHJ1Y3QgRXh0ZW5zaW9ucwogewogICAgIEV4dGVuc2lvbnMoKTsKQEAgLTE0NCwxMiArMTU0
LDE4IEBAIHN0cnVjdCBFeHRlbnNpb25zCiAgICAgYm9vbCB0ZXh0dXJlUkc7CiAKICAgICAvLyBH
TF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxLCBHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNz
aW9uX2R4dDMgYW5kIEdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Npb25fZHh0NQotICAgIC8vIElt
cGxpZXMgdGhhdCBUZXh0dXJlQ2FwcyBmb3IgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VY
VCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQKKyAgICAvLyBJbXBsaWVzIHRoYXQg
VGV4dHVyZUNhcHMgZXhpc3QgZm9yIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQsIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUCiAgICAgLy8gR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUM19BTkdMRSBhbmQgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRQog
ICAgIGJvb2wgdGV4dHVyZUNvbXByZXNzaW9uRFhUMTsKICAgICBib29sIHRleHR1cmVDb21wcmVz
c2lvbkRYVDM7CiAgICAgYm9vbCB0ZXh0dXJlQ29tcHJlc3Npb25EWFQ1OwogCisgICAgLy8gR0xf
RVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiCisgICAgLy8gSW1wbGllcyB0aGF0IFRl
eHR1cmVDYXBzIGV4aXN0IGZvciBHTF9DT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVCwKKyAg
ICAvLyBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVCwgR0xfQ09NUFJFU1NF
RF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQsIGFuZAorICAgIC8vIEdMX0NPTVBSRVNTRURfU1JH
Ql9BTFBIQV9TM1RDX0RYVDVfRVhUCisgICAgYm9vbCB0ZXh0dXJlQ29tcHJlc3Npb25TM1RDc1JH
QjsKKwogICAgIC8vIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyCiAgICAgYm9v
bCB0ZXh0dXJlQ29tcHJlc3Npb25BU1RDSERSOwogCkBAIC0yOTksMTIgKzMxNSwyMSBAQCBzdHJ1
Y3QgRXh0ZW5zaW9ucwogICAgIC8vIEdMX0FOR0xFX3dlYmdsX2NvbXBhdGliaWxpdHkKICAgICBi
b29sIHdlYmdsQ29tcGF0aWJpbGl0eTsKIAorICAgIC8vIEdMX0FOR0xFX3JlcXVlc3RfZXh0ZW5z
aW9uCisgICAgYm9vbCByZXF1ZXN0RXh0ZW5zaW9uOworCiAgICAgLy8gR0xfQ0hST01JVU1fYmlu
ZF9nZW5lcmF0ZXNfcmVzb3VyY2UKICAgICBib29sIGJpbmRHZW5lcmF0ZXNSZXNvdXJjZTsKIAog
ICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAgICAgYm9vbCByb2J1c3RDbGll
bnRNZW1vcnk7CiAKKyAgICAvLyBHTF9FWFRfdGV4dHVyZV9zUkdCX2RlY29kZQorICAgIGJvb2wg
dGV4dHVyZVNSR0JEZWNvZGU7CisKKyAgICAvLyBHTF9FWFRfc1JHQl93cml0ZV9jb250cm9sCisg
ICAgYm9vbCBzUkdCV3JpdGVDb250cm9sOworCiAgICAgLy8gRVMzIEV4dGVuc2lvbiBzdXBwb3J0
CiAKICAgICAvLyBHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0CkBAIC0zMjMsMTIgKzM0OCwyMSBA
QCBzdHJ1Y3QgRXh0ZW5zaW9ucwogCiAgICAgLy8gR0xfQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcK
ICAgICBib29sIHBhdGhSZW5kZXJpbmc7CisKKyAgICAvLyBHTF9PRVNfc3VyZmFjZWxlc3NfY29u
dGV4dAorICAgIGJvb2wgc3VyZmFjZWxlc3NDb250ZXh0OworCisgICAgLy8gR0xfQU5HTEVfY2xp
ZW50X2FycmF5cworICAgIGJvb2wgY2xpZW50QXJyYXlzOworCisgICAgLy8gR0xfQU5HTEVfcm9i
dXN0X3Jlc291cmNlX2luaXRpYWxpemF0aW9uCisgICAgYm9vbCByb2J1c3RSZXNvdXJjZUluaXRp
YWxpemF0aW9uOwogfTsKIAogc3RydWN0IEV4dGVuc2lvbkluZm8KIHsKLSAgICAvLyBJZiB0aGlz
IGV4dGVuc2lvbiBjYW4gYmUgZW5hYmxlZCB3aXRoIGdsRW5hYmxlRXh0ZW5zaW9uIChHTF9BTkdM
RV93ZWJnbF9jb21wYXRpYmlsaXR5KQotICAgIGJvb2wgRW5hYmxlYWJsZSA9IGZhbHNlOworICAg
IC8vIElmIHRoaXMgZXh0ZW5zaW9uIGNhbiBiZSBlbmFibGVkIHdpdGggZ2xSZXF1ZXN0RXh0ZW5z
aW9uIChHTF9BTkdMRV9yZXF1ZXN0X2V4dGVuc2lvbikKKyAgICBib29sIFJlcXVlc3RhYmxlID0g
ZmFsc2U7CiAKICAgICAvLyBQb2ludGVyIHRvIGEgYm9vbGVhbiBtZW1iZXIgb2YgdGhlIEV4dGVu
c2lvbnMgc3RydWN0CiAgICAgdHlwZWRlZiBib29sKEV4dGVuc2lvbnM6OipFeHRlbnNpb25Cb29s
KTsKQEAgLTM2OCwxMSArNDAyLDEyIEBAIHN0cnVjdCBUeXBlUHJlY2lzaW9uCiAKICAgICB2b2lk
IHNldElFRUVGbG9hdCgpOwogICAgIHZvaWQgc2V0VHdvc0NvbXBsZW1lbnRJbnQodW5zaWduZWQg
aW50IGJpdHMpOworICAgIHZvaWQgc2V0U2ltdWxhdGVkRmxvYXQodW5zaWduZWQgaW50IHJhbmdl
LCB1bnNpZ25lZCBpbnQgcHJlY2lzaW9uKTsKICAgICB2b2lkIHNldFNpbXVsYXRlZEludCh1bnNp
Z25lZCBpbnQgcmFuZ2UpOwogCiAgICAgdm9pZCBnZXQoR0xpbnQgKnJldHVyblJhbmdlLCBHTGlu
dCAqcmV0dXJuUHJlY2lzaW9uKSBjb25zdDsKIAotICAgIEdMaW50IHJhbmdlWzJdOworICAgIHN0
ZDo6YXJyYXk8R0xpbnQsIDI+IHJhbmdlOwogICAgIEdMaW50IHByZWNpc2lvbjsKIH07CiAKQEAg
LTQwOSw3ICs0NDQsNyBAQCBzdHJ1Y3QgQ2FwcwogCiAgICAgLy8gRVMgMy4xIChBcHJpbCAyOSwg
MjAxNSkgVGFibGUgMjAuNDE6IEltcGxlbWVudGF0aW9uIGRlcGVuZGVudCB2YWx1ZXMgKGNvbnQu
KQogICAgIEdMaW50IG1heFZlcnRleEF0dHJpYlJlbGF0aXZlT2Zmc2V0OwotICAgIEdMaW50IG1h
eFZlcnRleEF0dHJpYkJpbmRpbmdzOworICAgIEdMdWludCBtYXhWZXJ0ZXhBdHRyaWJCaW5kaW5n
czsKICAgICBHTGludCBtYXhWZXJ0ZXhBdHRyaWJTdHJpZGU7CiAgICAgR0x1aW50IG1heEVsZW1l
bnRzSW5kaWNlczsKICAgICBHTHVpbnQgbWF4RWxlbWVudHNWZXJ0aWNlczsKQEAgLTUwNCw2ICs1
MzksNyBAQCBzdHJ1Y3QgQ2FwcwogICAgIEdMdWludCBtYXhTYW1wbGVzOwogfTsKIAorQ2FwcyBH
ZW5lcmF0ZU1pbmltdW1DYXBzKGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnNpb24pOwogfQogCiBu
YW1lc3BhY2UgZWdsCkBAIC01MzAsNiArNTY2LDkgQEAgc3RydWN0IERpc3BsYXlFeHRlbnNpb25z
CiAgICAgLy8gRUdMX0FOR0xFX2QzZF9zaGFyZV9oYW5kbGVfY2xpZW50X2J1ZmZlcgogICAgIGJv
b2wgZDNkU2hhcmVIYW5kbGVDbGllbnRCdWZmZXI7CiAKKyAgICAvLyBFR0xfQU5HTEVfZDNkX3Rl
eHR1cmVfY2xpZW50X2J1ZmZlcgorICAgIGJvb2wgZDNkVGV4dHVyZUNsaWVudEJ1ZmZlcjsKKwog
ICAgIC8vIEVHTF9BTkdMRV9zdXJmYWNlX2QzZF90ZXh0dXJlXzJkX3NoYXJlX2hhbmRsZQogICAg
IGJvb2wgc3VyZmFjZUQzRFRleHR1cmUyRFNoYXJlSGFuZGxlOwogCkBAIC02MDcsNiArNjQ2LDI0
IEBAIHN0cnVjdCBEaXNwbGF5RXh0ZW5zaW9ucwogCiAgICAgLy8gRUdMX0NIUk9NSVVNX2dldF9z
eW5jX3ZhbHVlcwogICAgIGJvb2wgZ2V0U3luY1ZhbHVlczsKKworICAgIC8vIEVHTF9FWFRfc3dh
cF9idWZmZXJzX3dpdGhfZGFtYWdlCisgICAgYm9vbCBzd2FwQnVmZmVyc1dpdGhEYW1hZ2U7CisK
KyAgICAvLyBFR0xfRVhUX3BpeGVsX2Zvcm1hdF9mbG9hdAorICAgIGJvb2wgcGl4ZWxGb3JtYXRG
bG9hdDsKKworICAgIC8vIEVHTF9LSFJfc3VyZmFjZWxlc3NfY29udGV4dAorICAgIGJvb2wgc3Vy
ZmFjZWxlc3NDb250ZXh0OworCisgICAgLy8gRUdMX0FOR0xFX2Rpc3BsYXlfdGV4dHVyZV9zaGFy
ZV9ncm91cAorICAgIGJvb2wgZGlzcGxheVRleHR1cmVTaGFyZUdyb3VwOworCisgICAgLy8gRUdM
X0FOR0xFX2NyZWF0ZV9jb250ZXh0X2NsaWVudF9hcnJheXMKKyAgICBib29sIGNyZWF0ZUNvbnRl
eHRDbGllbnRBcnJheXM7CisKKyAgICAvLyBFR0xfQU5HTEVfY3JlYXRlX2NvbnRleHRfcm9idXN0
X3Jlc291cmNlX2luaXRpYWxpemF0aW9uCisgICAgYm9vbCBjcmVhdGVDb250ZXh0Um9idXN0UmVz
b3VyY2VJbml0aWFsaXphdGlvbjsKIH07CiAKIHN0cnVjdCBEZXZpY2VFeHRlbnNpb25zCkBAIC02
NDgsNiArNzA1LDkgQEAgc3RydWN0IENsaWVudEV4dGVuc2lvbnMKICAgICAvLyBFR0xfQU5HTEVf
cGxhdGZvcm1fYW5nbGVfbnVsbAogICAgIGJvb2wgcGxhdGZvcm1BTkdMRU5VTEw7CiAKKyAgICAv
LyBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfdnVsa2FuCisgICAgYm9vbCBwbGF0Zm9ybUFOR0xF
VnVsa2FuOworCiAgICAgLy8gRUdMX0FOR0xFX2RldmljZV9jcmVhdGlvbgogICAgIGJvb2wgZGV2
aWNlQ3JlYXRpb247CiAKQEAgLTY2NCw2ICs3MjQsNiBAQCBzdHJ1Y3QgQ2xpZW50RXh0ZW5zaW9u
cwogICAgIGJvb2wgY2xpZW50R2V0QWxsUHJvY0FkZHJlc3NlczsKIH07CiAKLX0KK30gIC8vIG5h
bWVzcGFjZSBlZ2wKIAogI2VuZGlmIC8vIExJQkFOR0xFX0NBUFNfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db21waWxlci5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29tcGlsZXIuY3BwCmluZGV4IGI3NDU4ODhm
Mjc1NzE3NDRlNTBlZGRiYjU2NzI0ZTE1YTI2NmNjZjEuLjIzODU0ZDJlNDgwY2ZiMjg5YzM2ZjEx
ZDFmN2M4NGRlMmY3YmQxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9Db21waWxlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL0NvbXBpbGVyLmNwcApAQCAtMTksMzEgKzE5LDMzIEBAIG5hbWVzcGFjZSBnbAog
bmFtZXNwYWNlCiB7CiAKLS8vIEdsb2JhbCBjb3VudCBvZiBhY3RpdmUgc2hhZGVyIGNvbXBpbGVy
IGhhbmRsZXMuIE5lZWRlZCB0byBrbm93IHdoZW4gdG8gY2FsbCBTaEluaXRpYWxpemUgYW5kCi0v
LyBTaEZpbmFsaXplLgorLy8gR2xvYmFsIGNvdW50IG9mIGFjdGl2ZSBzaGFkZXIgY29tcGlsZXIg
aGFuZGxlcy4gTmVlZGVkIHRvIGtub3cgd2hlbiB0byBjYWxsIHNoOjpJbml0aWFsaXplIGFuZAor
Ly8gc2g6OkZpbmFsaXplLgogc2l6ZV90IGFjdGl2ZUNvbXBpbGVySGFuZGxlcyA9IDA7CiAKLVNo
U2hhZGVyU3BlYyBTZWxlY3RTaGFkZXJTcGVjKEdMaW50IG1ham9yVmVyc2lvbiwgR0xpbnQgbWlu
b3JWZXJzaW9uKQorU2hTaGFkZXJTcGVjIFNlbGVjdFNoYWRlclNwZWMoR0xpbnQgbWFqb3JWZXJz
aW9uLCBHTGludCBtaW5vclZlcnNpb24sIGJvb2wgaXNXZWJHTCkKIHsKICAgICBpZiAobWFqb3JW
ZXJzaW9uID49IDMpCiAgICAgewogICAgICAgICBpZiAobWlub3JWZXJzaW9uID09IDEpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTSF9HTEVTM18xX1NQRUM7CisgICAgICAgICAgICBy
ZXR1cm4gaXNXZWJHTCA/IFNIX1dFQkdMM19TUEVDIDogU0hfR0xFUzNfMV9TUEVDOwogICAgICAg
ICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFNIX0dMRVMz
X1NQRUM7CisgICAgICAgICAgICByZXR1cm4gaXNXZWJHTCA/IFNIX1dFQkdMMl9TUEVDIDogU0hf
R0xFUzNfU1BFQzsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gU0hfR0xFUzJfU1BFQzsK
KyAgICByZXR1cm4gaXNXZWJHTCA/IFNIX1dFQkdMX1NQRUMgOiBTSF9HTEVTMl9TUEVDOwogfQog
CiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIENvbXBpbGVyOjpDb21waWxlcihyeDo6R0xJ
bXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksIGNvbnN0IENvbnRleHRTdGF0ZSAmc3RhdGUpCiAgICAg
OiBtSW1wbGVtZW50YXRpb24oaW1wbEZhY3RvcnktPmNyZWF0ZUNvbXBpbGVyKCkpLAotICAgICAg
bVNwZWMoU2VsZWN0U2hhZGVyU3BlYyhzdGF0ZS5nZXRDbGllbnRNYWpvclZlcnNpb24oKSwgc3Rh
dGUuZ2V0Q2xpZW50TWlub3JWZXJzaW9uKCkpKSwKKyAgICAgIG1TcGVjKFNlbGVjdFNoYWRlclNw
ZWMoc3RhdGUuZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRlLmdldENsaWVudE1pbm9yVmVyc2lvbigpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0ZS5nZXRFeHRlbnNpb25zKCkud2ViZ2xDb21wYXRpYmlsaXR5KSksCiAg
ICAgICBtT3V0cHV0VHlwZShtSW1wbGVtZW50YXRpb24tPmdldFRyYW5zbGF0b3JPdXRwdXRUeXBl
KCkpLAogICAgICAgbVJlc291cmNlcygpLAogICAgICAgbUZyYWdtZW50Q29tcGlsZXIobnVsbHB0
ciksCkBAIC01NSw3ICs1Nyw3IEBAIENvbXBpbGVyOjpDb21waWxlcihyeDo6R0xJbXBsRmFjdG9y
eSAqaW1wbEZhY3RvcnksIGNvbnN0IENvbnRleHRTdGF0ZSAmc3RhdGUpCiAgICAgY29uc3QgZ2w6
OkNhcHMgJmNhcHMgICAgICAgICAgICAgPSBzdGF0ZS5nZXRDYXBzKCk7CiAgICAgY29uc3QgZ2w6
OkV4dGVuc2lvbnMgJmV4dGVuc2lvbnMgPSBzdGF0ZS5nZXRFeHRlbnNpb25zKCk7CiAKLSAgICBT
aEluaXRCdWlsdEluUmVzb3VyY2VzKCZtUmVzb3VyY2VzKTsKKyAgICBzaDo6SW5pdEJ1aWx0SW5S
ZXNvdXJjZXMoJm1SZXNvdXJjZXMpOwogICAgIG1SZXNvdXJjZXMuTWF4VmVydGV4QXR0cmlicyAg
ICAgICAgICAgICA9IGNhcHMubWF4VmVydGV4QXR0cmlidXRlczsKICAgICBtUmVzb3VyY2VzLk1h
eFZlcnRleFVuaWZvcm1WZWN0b3JzICAgICAgPSBjYXBzLm1heFZlcnRleFVuaWZvcm1WZWN0b3Jz
OwogICAgIG1SZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3RvcnMgICAgICAgICAgICA9IGNhcHMubWF4
VmFyeWluZ1ZlY3RvcnM7CkBAIC04MCwxMyArODIsMTQgQEAgQ29tcGlsZXI6OkNvbXBpbGVyKHJ4
OjpHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwgY29uc3QgQ29udGV4dFN0YXRlICZzdGF0ZSkK
ICAgICBtUmVzb3VyY2VzLk1pblByb2dyYW1UZXhlbE9mZnNldCAgID0gY2Fwcy5taW5Qcm9ncmFt
VGV4ZWxPZmZzZXQ7CiAgICAgbVJlc291cmNlcy5NYXhQcm9ncmFtVGV4ZWxPZmZzZXQgICA9IGNh
cHMubWF4UHJvZ3JhbVRleGVsT2Zmc2V0OwogCi0gICAgLy8gR0xTTCBFUyAzLjEgY29tcHV0ZSBz
aGFkZXIgY29uc3RhbnRzCisgICAgLy8gR0xTTCBFUyAzLjEgY29uc3RhbnRzCiAgICAgbVJlc291
cmNlcy5NYXhJbWFnZVVuaXRzICAgICAgICAgICAgICAgICAgICA9IGNhcHMubWF4SW1hZ2VVbml0
czsKICAgICBtUmVzb3VyY2VzLk1heFZlcnRleEltYWdlVW5pZm9ybXMgICAgICAgICAgID0gY2Fw
cy5tYXhWZXJ0ZXhJbWFnZVVuaWZvcm1zOwogICAgIG1SZXNvdXJjZXMuTWF4RnJhZ21lbnRJbWFn
ZVVuaWZvcm1zICAgICAgICAgPSBjYXBzLm1heEZyYWdtZW50SW1hZ2VVbmlmb3JtczsKICAgICBt
UmVzb3VyY2VzLk1heENvbXB1dGVJbWFnZVVuaWZvcm1zICAgICAgICAgID0gY2Fwcy5tYXhDb21w
dXRlSW1hZ2VVbmlmb3JtczsKICAgICBtUmVzb3VyY2VzLk1heENvbWJpbmVkSW1hZ2VVbmlmb3Jt
cyAgICAgICAgID0gY2Fwcy5tYXhDb21iaW5lZEltYWdlVW5pZm9ybXM7CiAgICAgbVJlc291cmNl
cy5NYXhDb21iaW5lZFNoYWRlck91dHB1dFJlc291cmNlcyA9IGNhcHMubWF4Q29tYmluZWRTaGFk
ZXJPdXRwdXRSZXNvdXJjZXM7CisgICAgbVJlc291cmNlcy5NYXhVbmlmb3JtTG9jYXRpb25zICAg
ICAgICAgICAgICA9IGNhcHMubWF4VW5pZm9ybUxvY2F0aW9uczsKIAogICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMHU7IGluZGV4IDwgM3U7ICsraW5kZXgpCiAgICAgewpAQCAtMTA4LDYgKzExMSwx
MSBAQCBDb21waWxlcjo6Q29tcGlsZXIocng6OkdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LCBj
b25zdCBDb250ZXh0U3RhdGUgJnN0YXRlKQogICAgIG1SZXNvdXJjZXMuTWF4RnJhZ21lbnRBdG9t
aWNDb3VudGVyQnVmZmVycyA9IGNhcHMubWF4RnJhZ21lbnRBdG9taWNDb3VudGVyQnVmZmVyczsK
ICAgICBtUmVzb3VyY2VzLk1heENvbWJpbmVkQXRvbWljQ291bnRlckJ1ZmZlcnMgPSBjYXBzLm1h
eENvbWJpbmVkQXRvbWljQ291bnRlckJ1ZmZlcnM7CiAgICAgbVJlc291cmNlcy5NYXhBdG9taWND
b3VudGVyQnVmZmVyU2l6ZSAgICAgID0gY2Fwcy5tYXhBdG9taWNDb3VudGVyQnVmZmVyU2l6ZTsK
KworICAgIGlmIChzdGF0ZS5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA9PSAyICYmICFleHRlbnNp
b25zLmRyYXdCdWZmZXJzKQorICAgIHsKKyAgICAgICAgbVJlc291cmNlcy5NYXhEcmF3QnVmZmVy
cyA9IDE7CisgICAgfQogfQogCiBDb21waWxlcjo6fkNvbXBpbGVyKCkKQEAgLTEyMCw3ICsxMjgs
NyBAQCBFcnJvciBDb21waWxlcjo6cmVsZWFzZSgpCiB7CiAgICAgaWYgKG1GcmFnbWVudENvbXBp
bGVyKQogICAgIHsKLSAgICAgICAgU2hEZXN0cnVjdChtRnJhZ21lbnRDb21waWxlcik7CisgICAg
ICAgIHNoOjpEZXN0cnVjdChtRnJhZ21lbnRDb21waWxlcik7CiAgICAgICAgIG1GcmFnbWVudENv
bXBpbGVyID0gbnVsbHB0cjsKIAogICAgICAgICBBU1NFUlQoYWN0aXZlQ29tcGlsZXJIYW5kbGVz
ID4gMCk7CkBAIC0xMjksNyArMTM3LDcgQEAgRXJyb3IgQ29tcGlsZXI6OnJlbGVhc2UoKQogCiAg
ICAgaWYgKG1WZXJ0ZXhDb21waWxlcikKICAgICB7Ci0gICAgICAgIFNoRGVzdHJ1Y3QobVZlcnRl
eENvbXBpbGVyKTsKKyAgICAgICAgc2g6OkRlc3RydWN0KG1WZXJ0ZXhDb21waWxlcik7CiAgICAg
ICAgIG1WZXJ0ZXhDb21waWxlciA9IG51bGxwdHI7CiAKICAgICAgICAgQVNTRVJUKGFjdGl2ZUNv
bXBpbGVySGFuZGxlcyA+IDApOwpAQCAtMTM4LDcgKzE0Niw3IEBAIEVycm9yIENvbXBpbGVyOjpy
ZWxlYXNlKCkKIAogICAgIGlmIChtQ29tcHV0ZUNvbXBpbGVyKQogICAgIHsKLSAgICAgICAgU2hE
ZXN0cnVjdChtQ29tcHV0ZUNvbXBpbGVyKTsKKyAgICAgICAgc2g6OkRlc3RydWN0KG1Db21wdXRl
Q29tcGlsZXIpOwogICAgICAgICBtQ29tcHV0ZUNvbXBpbGVyID0gbnVsbHB0cjsKIAogICAgICAg
ICBBU1NFUlQoYWN0aXZlQ29tcGlsZXJIYW5kbGVzID4gMCk7CkBAIC0xNDcsMTIgKzE1NSwxMiBA
QCBFcnJvciBDb21waWxlcjo6cmVsZWFzZSgpCiAKICAgICBpZiAoYWN0aXZlQ29tcGlsZXJIYW5k
bGVzID09IDApCiAgICAgewotICAgICAgICBTaEZpbmFsaXplKCk7CisgICAgICAgIHNoOjpGaW5h
bGl6ZSgpOwogICAgIH0KIAogICAgIG1JbXBsZW1lbnRhdGlvbi0+cmVsZWFzZSgpOwogCi0gICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CiB9CiAKIFNoSGFuZGxlIENvbXBpbGVyOjpnZXRDb21waWxlckhhbmRsZShHTGVudW0gdHlwZSkK
QEAgLTE3OSwxMCArMTg3LDExIEBAIFNoSGFuZGxlIENvbXBpbGVyOjpnZXRDb21waWxlckhhbmRs
ZShHTGVudW0gdHlwZSkKICAgICB7CiAgICAgICAgIGlmIChhY3RpdmVDb21waWxlckhhbmRsZXMg
PT0gMCkKICAgICAgICAgewotICAgICAgICAgICAgU2hJbml0aWFsaXplKCk7CisgICAgICAgICAg
ICBzaDo6SW5pdGlhbGl6ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgKmNvbXBpbGVyID0gU2hD
b25zdHJ1Y3RDb21waWxlcih0eXBlLCBtU3BlYywgbU91dHB1dFR5cGUsICZtUmVzb3VyY2VzKTsK
KyAgICAgICAgKmNvbXBpbGVyID0gc2g6OkNvbnN0cnVjdENvbXBpbGVyKHR5cGUsIG1TcGVjLCBt
T3V0cHV0VHlwZSwgJm1SZXNvdXJjZXMpOworICAgICAgICBBU1NFUlQoKmNvbXBpbGVyKTsKICAg
ICAgICAgYWN0aXZlQ29tcGlsZXJIYW5kbGVzKys7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29uZmlnLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db25maWcuY3BwCmluZGV4IDgyMjUxOGVmNjE1NmU2
OTgzMmMzNTYwODA2NjRkYWEyNmY3ODI3NDIuLmUwMjY4ZDAzOGQzMWEzMzk0OWEyNTQxZGI2MDBk
MGU5YjczODljNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9Db25maWcuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9Db25maWcuY3BwCkBAIC01OCw3ICs1OCw4IEBAIENvbmZpZzo6Q29uZmlnKCkKICAgICAgIHRy
YW5zcGFyZW50UmVkVmFsdWUoMCksCiAgICAgICB0cmFuc3BhcmVudEdyZWVuVmFsdWUoMCksCiAg
ICAgICB0cmFuc3BhcmVudEJsdWVWYWx1ZSgwKSwKLSAgICAgIG9wdGltYWxPcmllbnRhdGlvbigw
KQorICAgICAgb3B0aW1hbE9yaWVudGF0aW9uKDApLAorICAgICAgY29sb3JDb21wb25lbnRUeXBl
KEVHTF9DT0xPUl9DT01QT05FTlRfVFlQRV9GSVhFRF9FWFQpCiB7CiB9CiAKQEAgLTEzNCw2ICsx
MzUsMTAgQEAgY2xhc3MgQ29uZmlnU29ydGVyCiAgICAgICAgIHN0YXRpY19hc3NlcnQoRUdMX05P
TkUgPCBFR0xfU0xPV19DT05GSUcgJiYgRUdMX1NMT1dfQ09ORklHIDwgRUdMX05PTl9DT05GT1JN
QU5UX0NPTkZJRywgIlVuZXhwZWN0ZWQgRUdMIGVudW0gdmFsdWUuIik7CiAgICAgICAgIFNPUlQo
Y29uZmlnQ2F2ZWF0KTsKIAorICAgICAgICBzdGF0aWNfYXNzZXJ0KEVHTF9DT0xPUl9DT01QT05F
TlRfVFlQRV9GSVhFRF9FWFQgPCBFR0xfQ09MT1JfQ09NUE9ORU5UX1RZUEVfRkxPQVRfRVhULAor
ICAgICAgICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIG9yZGVyIG9mIEVHTCBlbnVtcy4iKTsK
KyAgICAgICAgU09SVChjb2xvckNvbXBvbmVudFR5cGUpOworCiAgICAgICAgIHN0YXRpY19hc3Nl
cnQoRUdMX1JHQl9CVUZGRVIgPCBFR0xfTFVNSU5BTkNFX0JVRkZFUiwgIlVuZXhwZWN0ZWQgRUdM
IGVudW0gdmFsdWUuIik7CiAgICAgICAgIFNPUlQoY29sb3JCdWZmZXJUeXBlKTsKIApAQCAtMjU1
LDYgKzI2MCw5IEBAIHN0ZDo6dmVjdG9yPGNvbnN0IENvbmZpZyo+IENvbmZpZ1NldDo6ZmlsdGVy
KGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlidXRlTWFwKSBjCiAgICAgICAgICAgICAgIGNhc2Ug
RUdMX09QVElNQUxfU1VSRkFDRV9PUklFTlRBVElPTl9BTkdMRToKICAgICAgICAgICAgICAgICAg
IG1hdGNoID0gY29uZmlnLm9wdGltYWxPcmllbnRhdGlvbiA9PSBhdHRyaWJ1dGVWYWx1ZTsKICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9DT0xPUl9DT01Q
T05FTlRfVFlQRV9FWFQ6CisgICAgICAgICAgICAgICAgICBtYXRjaCA9IGNvbmZpZy5jb2xvckNv
bXBvbmVudFR5cGUgPT0gc3RhdGljX2Nhc3Q8RUdMZW51bT4oYXR0cmlidXRlVmFsdWUpOworICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxF
KCk7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9Db25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9Db25maWcuaAppbmRleCAwMGY1NjczYjU5NjgxNWFlOWZlZTVmMjFiZDZlMWE1Yzk4ZDEz
NDUwLi5mYjAxNDdlNjk4YmUzMzAwMWM2MzVhY2M4ZjNhZDY3YTYyOGY4N2EyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29uZmlnLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbmZpZy5oCkBAIC02NSw2ICs2NSw3
IEBAIHN0cnVjdCBDb25maWcKICAgICBFR0xpbnQgdHJhbnNwYXJlbnRHcmVlblZhbHVlOyAgIC8v
IFRyYW5zcGFyZW50IGdyZWVuIHZhbHVlCiAgICAgRUdMaW50IHRyYW5zcGFyZW50Qmx1ZVZhbHVl
OyAgICAvLyBUcmFuc3BhcmVudCBibHVlIHZhbHVlCiAgICAgRUdMaW50IG9wdGltYWxPcmllbnRh
dGlvbjsgICAgICAvLyBPcHRpbWFsIHdpbmRvdyBzdXJmYWNlIG9yaWVudGF0aW9uCisgICAgRUdM
ZW51bSBjb2xvckNvbXBvbmVudFR5cGU7ICAgICAvLyBDb2xvciBjb21wb25lbnQgdHlwZQogfTsK
IAogY2xhc3MgQ29uZmlnU2V0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvQ29uc3RhbnRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvQ29uc3RhbnRzLmgKaW5kZXggZGM4Zjk1NTViODNhN2RkNzhmNWZlNDJhOWEzNTkyY2Vm
MWQ3MGI2YS4uZjlhMDI3OTk3M2Q2MjBiNjBiYjY4ZWUzMTg2MTIyODM4YzUzZmI0ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnN0YW50cy5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db25zdGFudHMuaApAQCAt
MTQsMzEgKzE0LDMzIEBAIG5hbWVzcGFjZSBnbAogCiBlbnVtCiB7Ci0gICAgTUFYX1ZFUlRFWF9B
VFRSSUJTID0gMTYsCisgICAgTUFYX1ZFUlRFWF9BVFRSSUJTICAgICAgICAgPSAxNiwKKyAgICBN
QVhfVkVSVEVYX0FUVFJJQl9CSU5ESU5HUyA9IDE2LAogCiAgICAgLy8gSW1wbGVtZW50YXRpb24g
dXBwZXIgbGltaXRzLCByZWFsIG1heGltdW1zIGRlcGVuZCBvbiB0aGUgaGFyZHdhcmUKICAgICBJ
TVBMRU1FTlRBVElPTl9NQVhfVkFSWUlOR19WRUNUT1JTID0gMzIsCi0gICAgSU1QTEVNRU5UQVRJ
T05fTUFYX0RSQVdfQlVGRkVSUyA9IDgsCi0gICAgSU1QTEVNRU5UQVRJT05fTUFYX0ZSQU1FQlVG
RkVSX0FUVEFDSE1FTlRTID0gSU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUyArIDIsIC8v
IDIgZXh0cmEgZm9yIGRlcHRoIGFuZC9vciBzdGVuY2lsIGJ1ZmZlcnMKKyAgICBJTVBMRU1FTlRB
VElPTl9NQVhfRFJBV19CVUZGRVJTICAgID0gOCwKKyAgICBJTVBMRU1FTlRBVElPTl9NQVhfRlJB
TUVCVUZGRVJfQVRUQUNITUVOVFMgPQorICAgICAgICBJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19C
VUZGRVJTICsgMiwgIC8vIDIgZXh0cmEgZm9yIGRlcHRoIGFuZC9vciBzdGVuY2lsIGJ1ZmZlcnMK
IAotICAgIElNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfU0hBREVSX1VOSUZPUk1fQlVGRkVSUyA9
IDE2LAorICAgIElNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfU0hBREVSX1VOSUZPUk1fQlVGRkVS
UyAgID0gMTYsCiAgICAgSU1QTEVNRU5UQVRJT05fTUFYX0ZSQUdNRU5UX1NIQURFUl9VTklGT1JN
X0JVRkZFUlMgPSAxNiwKLSAgICBJTVBMRU1FTlRBVElPTl9NQVhfQ09NQklORURfU0hBREVSX1VO
SUZPUk1fQlVGRkVSUyA9IElNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfU0hBREVSX1VOSUZPUk1f
QlVGRkVSUyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJTVBMRU1FTlRBVElPTl9NQVhfRlJBR01FTlRfU0hBREVSX1VOSUZPUk1fQlVG
RkVSUywKKyAgICBJTVBMRU1FTlRBVElPTl9NQVhfQ09NQklORURfU0hBREVSX1VOSUZPUk1fQlVG
RkVSUyA9CisgICAgICAgIElNUExFTUVOVEFUSU9OX01BWF9WRVJURVhfU0hBREVSX1VOSUZPUk1f
QlVGRkVSUyArCisgICAgICAgIElNUExFTUVOVEFUSU9OX01BWF9GUkFHTUVOVF9TSEFERVJfVU5J
Rk9STV9CVUZGRVJTLAogCiAgICAgSU1QTEVNRU5UQVRJT05fTUFYX1RSQU5TRk9STV9GRUVEQkFD
S19CVUZGRVJTID0gNCwKIAogICAgIC8vIFRoZXNlIGFyZSB0aGUgbWF4aW11bXMgdGhlIGltcGxl
bWVudGF0aW9uIGNhbiBzdXBwb3J0CiAgICAgLy8gVGhlIGFjdHVhbCBHTCBjYXBzIGFyZSBsaW1p
dGVkIGJ5IHRoZSBkZXZpY2UgY2FwcwogICAgIC8vIGFuZCBzaG91bGQgYmUgcXVlcmllZCBmcm9t
IHRoZSBDb250ZXh0Ci0gICAgSU1QTEVNRU5UQVRJT05fTUFYXzJEX1RFWFRVUkVfU0laRSA9IDE2
Mzg0LAotICAgIElNUExFTUVOVEFUSU9OX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUgPSAxNjM4
NCwKLSAgICBJTVBMRU1FTlRBVElPTl9NQVhfM0RfVEVYVFVSRV9TSVpFID0gMjA0OCwKKyAgICBJ
TVBMRU1FTlRBVElPTl9NQVhfMkRfVEVYVFVSRV9TSVpFICAgICAgICAgPSAxNjM4NCwKKyAgICBJ
TVBMRU1FTlRBVElPTl9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFICAgPSAxNjM4NCwKKyAgICBJ
TVBMRU1FTlRBVElPTl9NQVhfM0RfVEVYVFVSRV9TSVpFICAgICAgICAgPSAyMDQ4LAogICAgIElN
UExFTUVOVEFUSU9OX01BWF8yRF9BUlJBWV9URVhUVVJFX0xBWUVSUyA9IDIwNDgsCiAKLSAgICBJ
TVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMgPSAxNSAgIC8vIDErbG9nMiBvZiBNQVhf
VEVYVFVSRV9TSVpFCisgICAgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTID0gMTUg
IC8vIDErbG9nMiBvZiBNQVhfVEVYVFVSRV9TSVpFCiB9OwotCiB9CiAKICNlbmRpZiAvLyBMSUJB
TkdMRV9DT05TVEFOVFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9Db250ZXh0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9Db250ZXh0LmNwcAppbmRleCBhNmFiNDcyZWIzMTUyMzY1NTE4YmRhMDc3M2JkZjk4YmVi
ZmJjYzczLi5mNTk5YjA3NTkwMjg0NzI1OGJhOThjNjI2OWVjMzU4MGRjYzc0ZGE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHQuY3BwCkBAIC0x
NywxNSArMTcsMTYgQEAKICNpbmNsdWRlICJjb21tb24vbWF0cml4X3V0aWxzLmgiCiAjaW5jbHVk
ZSAiY29tbW9uL3BsYXRmb3JtLmgiCiAjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgorI2lu
Y2x1ZGUgImNvbW1vbi92ZXJzaW9uLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQnVmZmVyLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvQ29tcGlsZXIuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9EaXNwbGF5
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRmVuY2UuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFt
ZWJ1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL1BhdGguaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFtLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvUXVlcnkuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9xdWVyeXV0
aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUmVuZGVyYnVmZmVyLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvUmVzb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvU2FtcGxlci5oIgpA
QCAtNDUsNyArNDYsNyBAQCBuYW1lc3BhY2UKIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1z
dGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiBHYXRoZXJQYXRocyhnbDo6UmVzb3VyY2VNYW5hZ2VyICZy
ZXNvdXJjZU1hbmFnZXIsCitzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiBHYXRoZXJQYXRocyhnbDo6
UGF0aE1hbmFnZXIgJnJlc291cmNlTWFuYWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB2b2lkICpwYXRocywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBwYXRoQmFzZSkKQEAgLTY1LDcgKzY2LDcgQEAgc3RkOjp2ZWN0b3I8Z2w6
OlBhdGggKj4gR2F0aGVyUGF0aHMoZ2w6OlJlc291cmNlTWFuYWdlciAmcmVzb3VyY2VNYW5hZ2Vy
LAogICAgIHJldHVybiByZXQ7CiB9CiAKLXN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+IEdhdGhlclBh
dGhzKGdsOjpSZXNvdXJjZU1hbmFnZXIgJnJlc291cmNlTWFuYWdlciwKK3N0ZDo6dmVjdG9yPGds
OjpQYXRoICo+IEdhdGhlclBhdGhzKGdsOjpQYXRoTWFuYWdlciAmcmVzb3VyY2VNYW5hZ2VyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRocywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKQEAg
LTE0OSw2ICsxNTAsMTEgQEAgRUdMaW50IEdldENsaWVudE1pbm9yVmVyc2lvbihjb25zdCBlZ2w6
OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RUdMaW50Pihh
dHRyaWJzLmdldChFR0xfQ09OVEVYVF9NSU5PUl9WRVJTSU9OLCAwKSk7CiB9CiAKK2dsOjpWZXJz
aW9uIEdldENsaWVudFZlcnNpb24oY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7
CisgICAgcmV0dXJuIGdsOjpWZXJzaW9uKEdldENsaWVudE1ham9yVmVyc2lvbihhdHRyaWJzKSwg
R2V0Q2xpZW50TWlub3JWZXJzaW9uKGF0dHJpYnMpKTsKK30KKwogR0xlbnVtIEdldFJlc2V0U3Ry
YXRlZ3koY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7CiAgICAgRUdMQXR0cmli
IGF0dHJpYiA9IGF0dHJpYnMuZ2V0KEVHTF9DT05URVhUX09QRU5HTF9SRVNFVF9OT1RJRklDQVRJ
T05fU1RSQVRFR1lfRVhULApAQCAtMTY3LDEyICsxNzMsMTUgQEAgR0xlbnVtIEdldFJlc2V0U3Ry
YXRlZ3koY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiAKIGJvb2wgR2V0Um9idXN0
QWNjZXNzKGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewotICAgIHJldHVybiAo
YXR0cmlicy5nZXQoRUdMX0NPTlRFWFRfT1BFTkdMX1JPQlVTVF9BQ0NFU1NfRVhULCBFR0xfRkFM
U0UpID09IEVHTF9UUlVFKTsKKyAgICByZXR1cm4gKGF0dHJpYnMuZ2V0KEVHTF9DT05URVhUX09Q
RU5HTF9ST0JVU1RfQUNDRVNTX0VYVCwgRUdMX0ZBTFNFKSA9PSBFR0xfVFJVRSkgfHwKKyAgICAg
ICAgICAgKChhdHRyaWJzLmdldChFR0xfQ09OVEVYVF9GTEFHU19LSFIsIDApICYgRUdMX0NPTlRF
WFRfT1BFTkdMX1JPQlVTVF9BQ0NFU1NfQklUX0tIUikgIT0KKyAgICAgICAgICAgIDApOwogfQog
CiBib29sIEdldERlYnVnKGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewotICAg
IHJldHVybiAoYXR0cmlicy5nZXQoRUdMX0NPTlRFWFRfT1BFTkdMX0RFQlVHLCBFR0xfRkFMU0Up
ID09IEVHTF9UUlVFKTsKKyAgICByZXR1cm4gKGF0dHJpYnMuZ2V0KEVHTF9DT05URVhUX09QRU5H
TF9ERUJVRywgRUdMX0ZBTFNFKSA9PSBFR0xfVFJVRSkgfHwKKyAgICAgICAgICAgKChhdHRyaWJz
LmdldChFR0xfQ09OVEVYVF9GTEFHU19LSFIsIDApICYgRUdMX0NPTlRFWFRfT1BFTkdMX0RFQlVH
X0JJVF9LSFIpICE9IDApOwogfQogCiBib29sIEdldE5vRXJyb3IoY29uc3QgZWdsOjpBdHRyaWJ1
dGVNYXAgJmF0dHJpYnMpCkBAIC0xOTAsNiArMTk5LDE2IEBAIGJvb2wgR2V0QmluZEdlbmVyYXRl
c1Jlc291cmNlKGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogICAgIHJldHVybiAo
YXR0cmlicy5nZXQoRUdMX0NPTlRFWFRfQklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU0s
IEVHTF9UUlVFKSA9PSBFR0xfVFJVRSk7CiB9CiAKK2Jvb2wgR2V0Q2xpZW50QXJyYXlzRW5hYmxl
ZChjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyAgICByZXR1cm4gKGF0dHJp
YnMuZ2V0KEVHTF9DT05URVhUX0NMSUVOVF9BUlJBWVNfRU5BQkxFRF9BTkdMRSwgRUdMX1RSVUUp
ID09IEVHTF9UUlVFKTsKK30KKworYm9vbCBHZXRSb2J1c3RSZXNvdXJjZUluaXQoY29uc3QgZWds
OjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7CisgICAgcmV0dXJuIChhdHRyaWJzLmdldChFR0xf
Q09OVEVYVF9ST0JVU1RfUkVTT1VSQ0VfSU5JVElBTElaQVRJT05fQU5HTEUsIEVHTF9GQUxTRSkg
PT0gRUdMX1RSVUUpOworfQorCiBzdGQ6OnN0cmluZyBHZXRPYmplY3RMYWJlbEZyb21Qb2ludGVy
KEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKmxhYmVsKQogewogICAgIHN0ZDo6c3RyaW5n
IGxhYmVsTmFtZTsKQEAgLTIyOCwyMSArMjQ3LDIxIEBAIG5hbWVzcGFjZSBnbAogQ29udGV4dDo6
Q29udGV4dChyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAogICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAogICAgICAgICAgICAgICAgICBjb25zdCBDb250
ZXh0ICpzaGFyZUNvbnRleHQsCi0gICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRl
TWFwICZhdHRyaWJzKQorICAgICAgICAgICAgICAgICBUZXh0dXJlTWFuYWdlciAqc2hhcmVUZXh0
dXJlcywKKyAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMs
CisgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgJmRpc3BsYXlF
eHRlbnNpb25zKQogCi0gICAgOiBWYWxpZGF0aW9uQ29udGV4dChHZXRDbGllbnRNYWpvclZlcnNp
b24oYXR0cmlicyksCi0gICAgICAgICAgICAgICAgICAgICAgICBHZXRDbGllbnRNaW5vclZlcnNp
b24oYXR0cmlicyksCisgICAgOiBWYWxpZGF0aW9uQ29udGV4dChzaGFyZUNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzaGFyZVRleHR1cmVzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgR2V0Q2xpZW50VmVyc2lvbihhdHRyaWJzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICZt
R0xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIG1DYXBzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgbVRleHR1cmVDYXBzLAogICAgICAgICAgICAgICAgICAgICAgICAgbUV4dGVuc2lv
bnMsCi0gICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgbUxpbWl0YXRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgR2V0Tm9FcnJvcihh
dHRyaWJzKSksCiAgICAgICBtSW1wbGVtZW50YXRpb24oaW1wbEZhY3RvcnktPmNyZWF0ZUNvbnRl
eHQobVN0YXRlKSksCiAgICAgICBtQ29tcGlsZXIobnVsbHB0ciksCi0gICAgICBtQ2xpZW50TWFq
b3JWZXJzaW9uKEdldENsaWVudE1ham9yVmVyc2lvbihhdHRyaWJzKSksCi0gICAgICBtQ2xpZW50
TWlub3JWZXJzaW9uKEdldENsaWVudE1pbm9yVmVyc2lvbihhdHRyaWJzKSksCiAgICAgICBtQ29u
ZmlnKGNvbmZpZyksCiAgICAgICBtQ2xpZW50VHlwZShFR0xfT1BFTkdMX0VTX0FQSSksCiAgICAg
ICBtSGFzQmVlbkN1cnJlbnQoZmFsc2UpLApAQCAtMjUyLDMwICsyNzEsMjQgQEAgQ29udGV4dDo6
Q29udGV4dChyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAogICAgICAgbVJlc2V0U3Ry
YXRlZ3koR2V0UmVzZXRTdHJhdGVneShhdHRyaWJzKSksCiAgICAgICBtUm9idXN0QWNjZXNzKEdl
dFJvYnVzdEFjY2VzcyhhdHRyaWJzKSksCiAgICAgICBtQ3VycmVudFN1cmZhY2UobnVsbHB0ciks
Ci0gICAgICBtUmVzb3VyY2VNYW5hZ2VyKG51bGxwdHIpCisgICAgICBtU3VyZmFjZWxlc3NGcmFt
ZWJ1ZmZlcihudWxscHRyKSwKKyAgICAgIG1XZWJHTENvbnRleHQoR2V0V2ViR0xDb250ZXh0KGF0
dHJpYnMpKSwKKyAgICAgIG1TY3JhdGNoQnVmZmVyKDEwMDB1KQogewotICAgIEFTU0VSVCghbVJv
YnVzdEFjY2Vzcyk7ICAvLyBVbmltcGxlbWVudGVkCisgICAgaWYgKG1Sb2J1c3RBY2Nlc3MpCisg
ICAgeworICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQogCi0gICAgaW5pdENhcHMoR2V0
V2ViR0xDb250ZXh0KGF0dHJpYnMpKTsKKyAgICBpbml0Q2FwcyhkaXNwbGF5RXh0ZW5zaW9ucyk7
CiAgICAgaW5pdFdvcmthcm91bmRzKCk7CiAKLSAgICBtR0xTdGF0ZS5pbml0aWFsaXplKG1DYXBz
LCBtRXh0ZW5zaW9ucywgbUNsaWVudE1ham9yVmVyc2lvbiwgR2V0RGVidWcoYXR0cmlicyksCi0g
ICAgICAgICAgICAgICAgICAgICAgICBHZXRCaW5kR2VuZXJhdGVzUmVzb3VyY2UoYXR0cmlicykp
OworICAgIG1HTFN0YXRlLmluaXRpYWxpemUobUNhcHMsIG1FeHRlbnNpb25zLCBnZXRDbGllbnRW
ZXJzaW9uKCksIEdldERlYnVnKGF0dHJpYnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgR2V0
QmluZEdlbmVyYXRlc1Jlc291cmNlKGF0dHJpYnMpLCBHZXRDbGllbnRBcnJheXNFbmFibGVkKGF0
dHJpYnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgR2V0Um9idXN0UmVzb3VyY2VJbml0KGF0
dHJpYnMpKTsKIAogICAgIG1GZW5jZU5WSGFuZGxlQWxsb2NhdG9yLnNldEJhc2VIYW5kbGUoMCk7
CiAKLSAgICBpZiAoc2hhcmVDb250ZXh0ICE9IG51bGxwdHIpCi0gICAgewotICAgICAgICBtUmVz
b3VyY2VNYW5hZ2VyID0gc2hhcmVDb250ZXh0LT5tUmVzb3VyY2VNYW5hZ2VyOwotICAgICAgICBt
UmVzb3VyY2VNYW5hZ2VyLT5hZGRSZWYoKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAg
ICAgbVJlc291cmNlTWFuYWdlciA9IG5ldyBSZXNvdXJjZU1hbmFnZXIoKTsKLSAgICB9Ci0KLSAg
ICBtU3RhdGUubVJlc291cmNlTWFuYWdlciA9IG1SZXNvdXJjZU1hbmFnZXI7Ci0KICAgICAvLyBb
T3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAzLjcgcGFnZSA4MzoKICAgICAvLyBJbiB0aGUgaW5p
dGlhbCBzdGF0ZSwgVEVYVFVSRV8yRCBhbmQgVEVYVFVSRV9DVUJFX01BUCBoYXZlIHR3b2RpbWVu
c2lvbmFsCiAgICAgLy8gYW5kIGN1YmUgbWFwIHRleHR1cmUgc3RhdGUgdmVjdG9ycyByZXNwZWN0
aXZlbHkgYXNzb2NpYXRlZCB3aXRoIHRoZW0uCkBAIC0yODgsNyArMzAxLDcgQEAgQ29udGV4dDo6
Q29udGV4dChyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAogICAgIFRleHR1cmUgKnpl
cm9UZXh0dXJlQ3ViZSA9IG5ldyBUZXh0dXJlKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgMCwgR0xf
VEVYVFVSRV9DVUJFX01BUCk7CiAgICAgbVplcm9UZXh0dXJlc1tHTF9URVhUVVJFX0NVQkVfTUFQ
XS5zZXQoemVyb1RleHR1cmVDdWJlKTsKIAotICAgIGlmIChtQ2xpZW50TWFqb3JWZXJzaW9uID49
IDMpCisgICAgaWYgKGdldENsaWVudFZlcnNpb24oKSA+PSBWZXJzaW9uKDMsIDApKQogICAgIHsK
ICAgICAgICAgLy8gVE9ETzogVGhlc2UgY291bGQgYWxzbyBiZSBlbmFibGVkIHZpYSBleHRlbnNp
b24KICAgICAgICAgVGV4dHVyZSAqemVyb1RleHR1cmUzRCA9IG5ldyBUZXh0dXJlKG1JbXBsZW1l
bnRhdGlvbi5nZXQoKSwgMCwgR0xfVEVYVFVSRV8zRCk7CkBAIC0yOTcsNiArMzEwLDI0IEBAIENv
bnRleHQ6OkNvbnRleHQocng6OkVHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwKICAgICAgICAg
VGV4dHVyZSAqemVyb1RleHR1cmUyREFycmF5ID0gbmV3IFRleHR1cmUobUltcGxlbWVudGF0aW9u
LmdldCgpLCAwLCBHTF9URVhUVVJFXzJEX0FSUkFZKTsKICAgICAgICAgbVplcm9UZXh0dXJlc1tH
TF9URVhUVVJFXzJEX0FSUkFZXS5zZXQoemVyb1RleHR1cmUyREFycmF5KTsKICAgICB9CisgICAg
aWYgKGdldENsaWVudFZlcnNpb24oKSA+PSBWZXJzaW9uKDMsIDEpKQorICAgIHsKKyAgICAgICAg
VGV4dHVyZSAqemVyb1RleHR1cmUyRE11bHRpc2FtcGxlID0KKyAgICAgICAgICAgIG5ldyBUZXh0
dXJlKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgMCwgR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRSk7
CisgICAgICAgIG1aZXJvVGV4dHVyZXNbR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV0uc2V0KHpl
cm9UZXh0dXJlMkRNdWx0aXNhbXBsZSk7CisKKyAgICAgICAgYmluZEdlbmVyaWNBdG9taWNDb3Vu
dGVyQnVmZmVyKDApOworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG1DYXBz
Lm1heEF0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5nczsgaSsrKQorICAgICAgICB7CisgICAgICAg
ICAgICBiaW5kSW5kZXhlZEF0b21pY0NvdW50ZXJCdWZmZXIoMCwgaSwgMCwgMCk7CisgICAgICAg
IH0KKworICAgICAgICBiaW5kR2VuZXJpY1NoYWRlclN0b3JhZ2VCdWZmZXIoMCk7CisgICAgICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbUNhcHMubWF4U2hhZGVyU3RvcmFnZUJ1ZmZl
ckJpbmRpbmdzOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGJpbmRJbmRleGVkU2hhZGVy
U3RvcmFnZUJ1ZmZlcigwLCBpLCAwLCAwKTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIGlmICht
RXh0ZW5zaW9ucy5lZ2xJbWFnZUV4dGVybmFsIHx8IG1FeHRlbnNpb25zLmVnbFN0cmVhbUNvbnN1
bWVyRXh0ZXJuYWwpCiAgICAgewpAQCAtMzA5LDEyICszNDAsMTMgQEAgQ29udGV4dDo6Q29udGV4
dChyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAogCiAgICAgYmluZFZlcnRleEFycmF5
KDApOwogICAgIGJpbmRBcnJheUJ1ZmZlcigwKTsKKyAgICBiaW5kRHJhd0luZGlyZWN0QnVmZmVy
KDApOwogICAgIGJpbmRFbGVtZW50QXJyYXlCdWZmZXIoMCk7CiAKLSAgICBiaW5kUmVuZGVyYnVm
ZmVyKDApOworICAgIGJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCAwKTsKIAogICAg
IGJpbmRHZW5lcmljVW5pZm9ybUJ1ZmZlcigwKTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IG1DYXBzLm1heENvbWJpbmVkVW5pZm9ybUJsb2NrczsgaSsrKQorICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgbUNhcHMubWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdzOyBpKysp
CiAgICAgewogICAgICAgICBiaW5kSW5kZXhlZFVuaWZvcm1CdWZmZXIoMCwgaSwgMCwgLTEpOwog
ICAgIH0KQEAgLTMyNCw3ICszNTYsNyBAQCBDb250ZXh0OjpDb250ZXh0KHJ4OjpFR0xJbXBsRmFj
dG9yeSAqaW1wbEZhY3RvcnksCiAgICAgYmluZFBpeGVsUGFja0J1ZmZlcigwKTsKICAgICBiaW5k
UGl4ZWxVbnBhY2tCdWZmZXIoMCk7CiAKLSAgICBpZiAobUNsaWVudE1ham9yVmVyc2lvbiA+PSAz
KQorICAgIGlmIChnZXRDbGllbnRWZXJzaW9uKCkgPj0gVmVyc2lvbigzLCAwKSkKICAgICB7CiAg
ICAgICAgIC8vIFtPcGVuR0wgRVMgMy4wLjJdIHNlY3Rpb24gMi4xNC4xIHBnIDg1OgogICAgICAg
ICAvLyBJbiB0aGUgaW5pdGlhbCBzdGF0ZSwgYSBkZWZhdWx0IHRyYW5zZm9ybSBmZWVkYmFjayBv
YmplY3QgaXMgYm91bmQgYW5kIHRyZWF0ZWQgYXMKQEAgLTM3MCwyNCArNDAyLDE2IEBAIENvbnRl
eHQ6OkNvbnRleHQocng6OkVHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwKIAogICAgIG1CbGl0
RGlydHlCaXRzLnNldChTdGF0ZTo6RElSVFlfQklUX1NDSVNTT1JfVEVTVF9FTkFCTEVEKTsKICAg
ICBtQmxpdERpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9TQ0lTU09SKTsKKyAgICBtQmxp
dERpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9GUkFNRUJVRkZFUl9TUkdCKTsKICAgICBt
QmxpdERpcnR5T2JqZWN0cy5zZXQoU3RhdGU6OkRJUlRZX09CSkVDVF9SRUFEX0ZSQU1FQlVGRkVS
KTsKICAgICBtQmxpdERpcnR5T2JqZWN0cy5zZXQoU3RhdGU6OkRJUlRZX09CSkVDVF9EUkFXX0ZS
QU1FQlVGRkVSKTsKIAogICAgIGhhbmRsZUVycm9yKG1JbXBsZW1lbnRhdGlvbi0+aW5pdGlhbGl6
ZSgpKTsKIH0KIAotQ29udGV4dDo6fkNvbnRleHQoKQordm9pZCBDb250ZXh0OjpkZXN0cm95KGVn
bDo6RGlzcGxheSAqZGlzcGxheSkKIHsKLSAgICBtR0xTdGF0ZS5yZXNldCgpOwotCi0gICAgZm9y
IChhdXRvIGZyYW1lYnVmZmVyIDogbUZyYW1lYnVmZmVyTWFwKQotICAgIHsKLSAgICAgICAgLy8g
RGVmYXVsdCBmcmFtZWJ1ZmZlciBhcmUgb3duZWQgYnkgdGhlaXIgcmVzcGVjdGl2ZSBTdXJmYWNl
Ci0gICAgICAgIGlmIChmcmFtZWJ1ZmZlci5zZWNvbmQgIT0gbnVsbHB0ciAmJiBmcmFtZWJ1ZmZl
ci5zZWNvbmQtPmlkKCkgIT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgU2FmZURlbGV0ZShm
cmFtZWJ1ZmZlci5zZWNvbmQpOwotICAgICAgICB9Ci0gICAgfQorICAgIG1HTFN0YXRlLnJlc2V0
KHRoaXMpOwogCiAgICAgZm9yIChhdXRvIGZlbmNlIDogbUZlbmNlTlZNYXApCiAgICAgewpAQCAt
NDExLDcgKzQzNSw3IEBAIENvbnRleHQ6On5Db250ZXh0KCkKICAgICB7CiAgICAgICAgIGlmICh0
cmFuc2Zvcm1GZWVkYmFjay5zZWNvbmQgIT0gbnVsbHB0cikKICAgICAgICAgewotICAgICAgICAg
ICAgdHJhbnNmb3JtRmVlZGJhY2suc2Vjb25kLT5yZWxlYXNlKCk7CisgICAgICAgICAgICB0cmFu
c2Zvcm1GZWVkYmFjay5zZWNvbmQtPnJlbGVhc2UodGhpcyk7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTQyMSwzMCArNDQ1LDQ0IEBAIENvbnRleHQ6On5Db250ZXh0KCkKICAgICB9CiAgICAgbVpl
cm9UZXh0dXJlcy5jbGVhcigpOwogCi0gICAgaWYgKG1DdXJyZW50U3VyZmFjZSAhPSBudWxscHRy
KQotICAgIHsKLSAgICAgICAgcmVsZWFzZVN1cmZhY2UoKTsKLSAgICB9CisgICAgU2FmZURlbGV0
ZShtU3VyZmFjZWxlc3NGcmFtZWJ1ZmZlcik7CiAKLSAgICBpZiAobVJlc291cmNlTWFuYWdlcikK
LSAgICB7Ci0gICAgICAgIG1SZXNvdXJjZU1hbmFnZXItPnJlbGVhc2UoKTsKLSAgICB9CisgICAg
cmVsZWFzZVN1cmZhY2UoZGlzcGxheSk7CiAKICAgICBTYWZlRGVsZXRlKG1Db21waWxlcik7CisK
KyAgICBtU3RhdGUubUJ1ZmZlcnMtPnJlbGVhc2UodGhpcyk7CisgICAgbVN0YXRlLm1TaGFkZXJQ
cm9ncmFtcy0+cmVsZWFzZSh0aGlzKTsKKyAgICBtU3RhdGUubVRleHR1cmVzLT5yZWxlYXNlKHRo
aXMpOworICAgIG1TdGF0ZS5tUmVuZGVyYnVmZmVycy0+cmVsZWFzZSh0aGlzKTsKKyAgICBtU3Rh
dGUubVNhbXBsZXJzLT5yZWxlYXNlKHRoaXMpOworICAgIG1TdGF0ZS5tRmVuY2VTeW5jcy0+cmVs
ZWFzZSh0aGlzKTsKKyAgICBtU3RhdGUubVBhdGhzLT5yZWxlYXNlKHRoaXMpOworICAgIG1TdGF0
ZS5tRnJhbWVidWZmZXJzLT5yZWxlYXNlKHRoaXMpOwogfQogCi12b2lkIENvbnRleHQ6Om1ha2VD
dXJyZW50KGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKK0NvbnRleHQ6On5Db250ZXh0KCkKIHsKLSAg
ICBBU1NFUlQoc3VyZmFjZSAhPSBudWxscHRyKTsKK30KIAordm9pZCBDb250ZXh0OjptYWtlQ3Vy
cmVudChlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKK3sKICAg
ICBpZiAoIW1IYXNCZWVuQ3VycmVudCkKICAgICB7CiAgICAgICAgIGluaXRSZW5kZXJlclN0cmlu
ZygpOworICAgICAgICBpbml0VmVyc2lvblN0cmluZ3MoKTsKICAgICAgICAgaW5pdEV4dGVuc2lv
blN0cmluZ3MoKTsKIAotICAgICAgICBtR0xTdGF0ZS5zZXRWaWV3cG9ydFBhcmFtcygwLCAwLCBz
dXJmYWNlLT5nZXRXaWR0aCgpLCBzdXJmYWNlLT5nZXRIZWlnaHQoKSk7Ci0gICAgICAgIG1HTFN0
YXRlLnNldFNjaXNzb3JQYXJhbXMoMCwgMCwgc3VyZmFjZS0+Z2V0V2lkdGgoKSwgc3VyZmFjZS0+
Z2V0SGVpZ2h0KCkpOworICAgICAgICBpbnQgd2lkdGggID0gMDsKKyAgICAgICAgaW50IGhlaWdo
dCA9IDA7CisgICAgICAgIGlmIChzdXJmYWNlICE9IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHdpZHRoICA9IHN1cmZhY2UtPmdldFdpZHRoKCk7CisgICAgICAgICAgICBoZWlnaHQg
PSBzdXJmYWNlLT5nZXRIZWlnaHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1HTFN0YXRlLnNl
dFZpZXdwb3J0UGFyYW1zKDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBtR0xTdGF0ZS5z
ZXRTY2lzc29yUGFyYW1zKDAsIDAsIHdpZHRoLCBoZWlnaHQpOwogCiAgICAgICAgIG1IYXNCZWVu
Q3VycmVudCA9IHRydWU7CiAgICAgfQpAQCAtNDUyLDE3ICs0OTAsMjggQEAgdm9pZCBDb250ZXh0
OjptYWtlQ3VycmVudChlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCiAgICAgLy8gVE9ETyhqbWFkaWxs
KTogUmV3b3JrIHRoaXMgd2hlbiB3ZSBzdXBwb3J0IENvbnRleHRJbXBsCiAgICAgbUdMU3RhdGUu
c2V0QWxsRGlydHlCaXRzKCk7CiAKLSAgICBpZiAobUN1cnJlbnRTdXJmYWNlKQorICAgIHJlbGVh
c2VTdXJmYWNlKGRpc3BsYXkpOworCisgICAgRnJhbWVidWZmZXIgKm5ld0RlZmF1bHQgPSBudWxs
cHRyOworICAgIGlmIChzdXJmYWNlICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBzdXJmYWNl
LT5zZXRJc0N1cnJlbnQoZGlzcGxheSwgdHJ1ZSk7CisgICAgICAgIG1DdXJyZW50U3VyZmFjZSA9
IHN1cmZhY2U7CisgICAgICAgIG5ld0RlZmF1bHQgICAgICA9IHN1cmZhY2UtPmdldERlZmF1bHRG
cmFtZWJ1ZmZlcigpOworICAgIH0KKyAgICBlbHNlCiAgICAgewotICAgICAgICByZWxlYXNlU3Vy
ZmFjZSgpOworICAgICAgICBpZiAobVN1cmZhY2VsZXNzRnJhbWVidWZmZXIgPT0gbnVsbHB0cikK
KyAgICAgICAgeworICAgICAgICAgICAgbVN1cmZhY2VsZXNzRnJhbWVidWZmZXIgPSBuZXcgRnJh
bWVidWZmZXIobUltcGxlbWVudGF0aW9uLmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIG5l
d0RlZmF1bHQgPSBtU3VyZmFjZWxlc3NGcmFtZWJ1ZmZlcjsKICAgICB9Ci0gICAgc3VyZmFjZS0+
c2V0SXNDdXJyZW50KHRydWUpOwotICAgIG1DdXJyZW50U3VyZmFjZSA9IHN1cmZhY2U7CiAKICAg
ICAvLyBVcGRhdGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciwgdGhlIGJpbmRpbmcgb2YgdGhlIHByZXZp
b3VzIGRlZmF1bHQKICAgICAvLyBmcmFtZWJ1ZmZlciAob3IgbGFjayBvZikgd2lsbCBoYXZlIGEg
bnVsbHB0ci4KICAgICB7Ci0gICAgICAgIEZyYW1lYnVmZmVyICpuZXdEZWZhdWx0ID0gc3VyZmFj
ZS0+Z2V0RGVmYXVsdEZyYW1lYnVmZmVyKCk7CiAgICAgICAgIGlmIChtR0xTdGF0ZS5nZXRSZWFk
RnJhbWVidWZmZXIoKSA9PSBudWxscHRyKQogICAgICAgICB7CiAgICAgICAgICAgICBtR0xTdGF0
ZS5zZXRSZWFkRnJhbWVidWZmZXJCaW5kaW5nKG5ld0RlZmF1bHQpOwpAQCAtNDcxLDcxICs1MjAs
NzggQEAgdm9pZCBDb250ZXh0OjptYWtlQ3VycmVudChlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIG1HTFN0YXRlLnNldERyYXdGcmFtZWJ1ZmZlckJpbmRpbmco
bmV3RGVmYXVsdCk7CiAgICAgICAgIH0KLSAgICAgICAgbUZyYW1lYnVmZmVyTWFwWzBdID0gbmV3
RGVmYXVsdDsKKyAgICAgICAgbVN0YXRlLm1GcmFtZWJ1ZmZlcnMtPnNldERlZmF1bHRGcmFtZWJ1
ZmZlcihuZXdEZWZhdWx0KTsKICAgICB9CiAKICAgICAvLyBOb3RpZnkgdGhlIHJlbmRlcmVyIG9m
IGEgY29udGV4dCBzd2l0Y2gKICAgICBtSW1wbGVtZW50YXRpb24tPm9uTWFrZUN1cnJlbnQobVN0
YXRlKTsKIH0KIAotdm9pZCBDb250ZXh0OjpyZWxlYXNlU3VyZmFjZSgpCit2b2lkIENvbnRleHQ6
OnJlbGVhc2VTdXJmYWNlKGVnbDo6RGlzcGxheSAqZGlzcGxheSkKIHsKLSAgICBBU1NFUlQobUN1
cnJlbnRTdXJmYWNlICE9IG51bGxwdHIpOwotCiAgICAgLy8gUmVtb3ZlIHRoZSBkZWZhdWx0IGZy
YW1lYnVmZmVyCisgICAgRnJhbWVidWZmZXIgKmN1cnJlbnREZWZhdWx0ID0gbnVsbHB0cjsKKyAg
ICBpZiAobUN1cnJlbnRTdXJmYWNlICE9IG51bGxwdHIpCiAgICAgewotICAgICAgICBGcmFtZWJ1
ZmZlciAqY3VycmVudERlZmF1bHQgPSBtQ3VycmVudFN1cmZhY2UtPmdldERlZmF1bHRGcmFtZWJ1
ZmZlcigpOwotICAgICAgICBpZiAobUdMU3RhdGUuZ2V0UmVhZEZyYW1lYnVmZmVyKCkgPT0gY3Vy
cmVudERlZmF1bHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1HTFN0YXRlLnNldFJlYWRGcmFt
ZWJ1ZmZlckJpbmRpbmcobnVsbHB0cik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1HTFN0YXRl
LmdldERyYXdGcmFtZWJ1ZmZlcigpID09IGN1cnJlbnREZWZhdWx0KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBtR0xTdGF0ZS5zZXREcmF3RnJhbWVidWZmZXJCaW5kaW5nKG51bGxwdHIpOwotICAg
ICAgICB9Ci0gICAgICAgIG1GcmFtZWJ1ZmZlck1hcC5lcmFzZSgwKTsKKyAgICAgICAgY3VycmVu
dERlZmF1bHQgPSBtQ3VycmVudFN1cmZhY2UtPmdldERlZmF1bHRGcmFtZWJ1ZmZlcigpOworICAg
IH0KKyAgICBlbHNlIGlmIChtU3VyZmFjZWxlc3NGcmFtZWJ1ZmZlciAhPSBudWxscHRyKQorICAg
IHsKKyAgICAgICAgY3VycmVudERlZmF1bHQgPSBtU3VyZmFjZWxlc3NGcmFtZWJ1ZmZlcjsKKyAg
ICB9CisKKyAgICBpZiAobUdMU3RhdGUuZ2V0UmVhZEZyYW1lYnVmZmVyKCkgPT0gY3VycmVudERl
ZmF1bHQpCisgICAgeworICAgICAgICBtR0xTdGF0ZS5zZXRSZWFkRnJhbWVidWZmZXJCaW5kaW5n
KG51bGxwdHIpOwogICAgIH0KKyAgICBpZiAobUdMU3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCkg
PT0gY3VycmVudERlZmF1bHQpCisgICAgeworICAgICAgICBtR0xTdGF0ZS5zZXREcmF3RnJhbWVi
dWZmZXJCaW5kaW5nKG51bGxwdHIpOworICAgIH0KKyAgICBtU3RhdGUubUZyYW1lYnVmZmVycy0+
c2V0RGVmYXVsdEZyYW1lYnVmZmVyKG51bGxwdHIpOwogCi0gICAgbUN1cnJlbnRTdXJmYWNlLT5z
ZXRJc0N1cnJlbnQoZmFsc2UpOwotICAgIG1DdXJyZW50U3VyZmFjZSA9IG51bGxwdHI7CisgICAg
aWYgKG1DdXJyZW50U3VyZmFjZSkKKyAgICB7CisgICAgICAgIG1DdXJyZW50U3VyZmFjZS0+c2V0
SXNDdXJyZW50KGRpc3BsYXksIGZhbHNlKTsKKyAgICAgICAgbUN1cnJlbnRTdXJmYWNlID0gbnVs
bHB0cjsKKyAgICB9CiB9CiAKIEdMdWludCBDb250ZXh0OjpjcmVhdGVCdWZmZXIoKQogewotICAg
IHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVCdWZmZXIoKTsKKyAgICByZXR1cm4gbVN0
YXRlLm1CdWZmZXJzLT5jcmVhdGVCdWZmZXIoKTsKIH0KIAogR0x1aW50IENvbnRleHQ6OmNyZWF0
ZVByb2dyYW0oKQogewotICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVQcm9ncmFt
KG1JbXBsZW1lbnRhdGlvbi5nZXQoKSk7CisgICAgcmV0dXJuIG1TdGF0ZS5tU2hhZGVyUHJvZ3Jh
bXMtPmNyZWF0ZVByb2dyYW0obUltcGxlbWVudGF0aW9uLmdldCgpKTsKIH0KIAogR0x1aW50IENv
bnRleHQ6OmNyZWF0ZVNoYWRlcihHTGVudW0gdHlwZSkKIHsKLSAgICByZXR1cm4gbVJlc291cmNl
TWFuYWdlci0+Y3JlYXRlU2hhZGVyKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1JbXBsZW1lbnRhdGlvbi0+Z2V0TmF0aXZl
TGltaXRhdGlvbnMoKSwgdHlwZSk7CisgICAgcmV0dXJuIG1TdGF0ZS5tU2hhZGVyUHJvZ3JhbXMt
PmNyZWF0ZVNoYWRlcihtSW1wbGVtZW50YXRpb24uZ2V0KCksIG1MaW1pdGF0aW9ucywgdHlwZSk7
CiB9CiAKIEdMdWludCBDb250ZXh0OjpjcmVhdGVUZXh0dXJlKCkKIHsKLSAgICByZXR1cm4gbVJl
c291cmNlTWFuYWdlci0+Y3JlYXRlVGV4dHVyZSgpOworICAgIHJldHVybiBtU3RhdGUubVRleHR1
cmVzLT5jcmVhdGVUZXh0dXJlKCk7CiB9CiAKIEdMdWludCBDb250ZXh0OjpjcmVhdGVSZW5kZXJi
dWZmZXIoKQogewotICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVSZW5kZXJidWZm
ZXIoKTsKKyAgICByZXR1cm4gbVN0YXRlLm1SZW5kZXJidWZmZXJzLT5jcmVhdGVSZW5kZXJidWZm
ZXIoKTsKIH0KIAogR0xzeW5jIENvbnRleHQ6OmNyZWF0ZUZlbmNlU3luYygpCiB7Ci0gICAgR0x1
aW50IGhhbmRsZSA9IG1SZXNvdXJjZU1hbmFnZXItPmNyZWF0ZUZlbmNlU3luYyhtSW1wbGVtZW50
YXRpb24uZ2V0KCkpOworICAgIEdMdWludCBoYW5kbGUgPSBtU3RhdGUubUZlbmNlU3luY3MtPmNy
ZWF0ZUZlbmNlU3luYyhtSW1wbGVtZW50YXRpb24uZ2V0KCkpOwogCiAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8R0xzeW5jPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGhhbmRsZSkpOwogfQog
CiBHTHVpbnQgQ29udGV4dDo6Y3JlYXRlUGF0aHMoR0xzaXplaSByYW5nZSkKIHsKLSAgICBhdXRv
IHJlc3VsdE9yRXJyb3IgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVQYXRocyhtSW1wbGVtZW50
YXRpb24uZ2V0KCksIHJhbmdlKTsKKyAgICBhdXRvIHJlc3VsdE9yRXJyb3IgPSBtU3RhdGUubVBh
dGhzLT5jcmVhdGVQYXRocyhtSW1wbGVtZW50YXRpb24uZ2V0KCksIHJhbmdlKTsKICAgICBpZiAo
cmVzdWx0T3JFcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAgICAgICBoYW5kbGVFcnJvcihyZXN1
bHRPckVycm9yLmdldEVycm9yKCkpOwpAQCAtNTUzLDcgKzYwOSw3IEBAIEdMdWludCBDb250ZXh0
OjpjcmVhdGVWZXJ0ZXhBcnJheSgpCiAKIEdMdWludCBDb250ZXh0OjpjcmVhdGVTYW1wbGVyKCkK
IHsKLSAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Y3JlYXRlU2FtcGxlcigpOworICAgIHJl
dHVybiBtU3RhdGUubVNhbXBsZXJzLT5jcmVhdGVTYW1wbGVyKCk7CiB9CiAKIEdMdWludCBDb250
ZXh0OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCkBAIC01NjYsMTEgKzYyMiw3IEBAIEdMdWlu
dCBDb250ZXh0OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCiAvLyBSZXR1cm5zIGFuIHVudXNl
ZCBmcmFtZWJ1ZmZlciBuYW1lCiBHTHVpbnQgQ29udGV4dDo6Y3JlYXRlRnJhbWVidWZmZXIoKQog
ewotICAgIEdMdWludCBoYW5kbGUgPSBtRnJhbWVidWZmZXJIYW5kbGVBbGxvY2F0b3IuYWxsb2Nh
dGUoKTsKLQotICAgIG1GcmFtZWJ1ZmZlck1hcFtoYW5kbGVdID0gTlVMTDsKLQotICAgIHJldHVy
biBoYW5kbGU7CisgICAgcmV0dXJuIG1TdGF0ZS5tRnJhbWVidWZmZXJzLT5jcmVhdGVGcmFtZWJ1
ZmZlcigpOwogfQogCiBHTHVpbnQgQ29udGV4dDo6Y3JlYXRlRmVuY2VOVigpCkBAIC01OTQsNDIg
KzY0Niw0MiBAQCBHTHVpbnQgQ29udGV4dDo6Y3JlYXRlUXVlcnkoKQogCiB2b2lkIENvbnRleHQ6
OmRlbGV0ZUJ1ZmZlcihHTHVpbnQgYnVmZmVyKQogewotICAgIGlmIChtUmVzb3VyY2VNYW5hZ2Vy
LT5nZXRCdWZmZXIoYnVmZmVyKSkKKyAgICBpZiAobVN0YXRlLm1CdWZmZXJzLT5nZXRCdWZmZXIo
YnVmZmVyKSkKICAgICB7CiAgICAgICAgIGRldGFjaEJ1ZmZlcihidWZmZXIpOwogICAgIH0KIAot
ICAgIG1SZXNvdXJjZU1hbmFnZXItPmRlbGV0ZUJ1ZmZlcihidWZmZXIpOworICAgIG1TdGF0ZS5t
QnVmZmVycy0+ZGVsZXRlT2JqZWN0KHRoaXMsIGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29udGV4dDo6
ZGVsZXRlU2hhZGVyKEdMdWludCBzaGFkZXIpCiB7Ci0gICAgbVJlc291cmNlTWFuYWdlci0+ZGVs
ZXRlU2hhZGVyKHNoYWRlcik7CisgICAgbVN0YXRlLm1TaGFkZXJQcm9ncmFtcy0+ZGVsZXRlU2hh
ZGVyKHRoaXMsIHNoYWRlcik7CiB9CiAKIHZvaWQgQ29udGV4dDo6ZGVsZXRlUHJvZ3JhbShHTHVp
bnQgcHJvZ3JhbSkKIHsKLSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5kZWxldGVQcm9ncmFtKHByb2dy
YW0pOworICAgIG1TdGF0ZS5tU2hhZGVyUHJvZ3JhbXMtPmRlbGV0ZVByb2dyYW0odGhpcywgcHJv
Z3JhbSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6ZGVsZXRlVGV4dHVyZShHTHVpbnQgdGV4dHVyZSkK
IHsKLSAgICBpZiAobVJlc291cmNlTWFuYWdlci0+Z2V0VGV4dHVyZSh0ZXh0dXJlKSkKKyAgICBp
ZiAobVN0YXRlLm1UZXh0dXJlcy0+Z2V0VGV4dHVyZSh0ZXh0dXJlKSkKICAgICB7CiAgICAgICAg
IGRldGFjaFRleHR1cmUodGV4dHVyZSk7CiAgICAgfQogCi0gICAgbVJlc291cmNlTWFuYWdlci0+
ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICBtU3RhdGUubVRleHR1cmVzLT5kZWxldGVPYmpl
Y3QodGhpcywgdGV4dHVyZSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6ZGVsZXRlUmVuZGVyYnVmZmVy
KEdMdWludCByZW5kZXJidWZmZXIpCiB7Ci0gICAgaWYgKG1SZXNvdXJjZU1hbmFnZXItPmdldFJl
bmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpKQorICAgIGlmIChtU3RhdGUubVJlbmRlcmJ1ZmZlcnMt
PmdldFJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpKQogICAgIHsKICAgICAgICAgZGV0YWNoUmVu
ZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CiAgICAgfQogCi0gICAgbVJlc291cmNlTWFuYWdlci0+
ZGVsZXRlUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CisgICAgbVN0YXRlLm1SZW5kZXJidWZm
ZXJzLT5kZWxldGVPYmplY3QodGhpcywgcmVuZGVyYnVmZmVyKTsKIH0KIAogdm9pZCBDb250ZXh0
OjpkZWxldGVGZW5jZVN5bmMoR0xzeW5jIGZlbmNlU3luYykKQEAgLTYzOCwxNyArNjkwLDE4IEBA
IHZvaWQgQ29udGV4dDo6ZGVsZXRlRmVuY2VTeW5jKEdMc3luYyBmZW5jZVN5bmMpCiAgICAgLy8g
d2FpdCBjb21tYW5kcyBmaW5pc2guIEhvd2V2ZXIsIHNpbmNlIHRoZSBuYW1lIGJlY29tZXMgaW52
YWxpZCwgd2UgY2Fubm90IHF1ZXJ5IHRoZSBmZW5jZSwKICAgICAvLyBhbmQgc2luY2Ugb3VyIEFQ
SSBpcyBjdXJyZW50bHkgZGVzaWduZWQgZm9yIGJlaW5nIGNhbGxlZCBmcm9tIGEgc2luZ2xlIHRo
cmVhZCwgd2UgY2FuIGRlbGV0ZQogICAgIC8vIHRoZSBmZW5jZSBpbW1lZGlhdGVseS4KLSAgICBt
UmVzb3VyY2VNYW5hZ2VyLT5kZWxldGVGZW5jZVN5bmMoc3RhdGljX2Nhc3Q8R0x1aW50PihyZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZmVuY2VTeW5jKSkpOworICAgIG1TdGF0ZS5tRmVuY2VT
eW5jcy0+ZGVsZXRlT2JqZWN0KHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZmVu
Y2VTeW5jKSkpOwogfQogCiB2b2lkIENvbnRleHQ6OmRlbGV0ZVBhdGhzKEdMdWludCBmaXJzdCwg
R0xzaXplaSByYW5nZSkKIHsKLSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5kZWxldGVQYXRocyhmaXJz
dCwgcmFuZ2UpOworICAgIG1TdGF0ZS5tUGF0aHMtPmRlbGV0ZVBhdGhzKGZpcnN0LCByYW5nZSk7
CiB9CiAKIGJvb2wgQ29udGV4dDo6aGFzUGF0aERhdGEoR0x1aW50IHBhdGgpIGNvbnN0CiB7Ci0g
ICAgY29uc3QgYXV0byAqcGF0aE9iaiA9IG1SZXNvdXJjZU1hbmFnZXItPmdldFBhdGgocGF0aCk7
CisgICAgY29uc3QgYXV0byAqcGF0aE9iaiA9IG1TdGF0ZS5tUGF0aHMtPmdldFBhdGgocGF0aCk7
CiAgICAgaWYgKHBhdGhPYmogPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC02NTcsNyArNzEwLDcgQEAgYm9vbCBDb250ZXh0OjpoYXNQYXRoRGF0YShHTHVpbnQgcGF0aCkg
Y29uc3QKIAogYm9vbCBDb250ZXh0OjpoYXNQYXRoKEdMdWludCBwYXRoKSBjb25zdAogewotICAg
IHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5oYXNQYXRoKHBhdGgpOworICAgIHJldHVybiBtU3Rh
dGUubVBhdGhzLT5oYXNQYXRoKHBhdGgpOwogfQogCiB2b2lkIENvbnRleHQ6OnNldFBhdGhDb21t
YW5kcyhHTHVpbnQgcGF0aCwKQEAgLTY2NywxNCArNzIwLDE0IEBAIHZvaWQgQ29udGV4dDo6c2V0
UGF0aENvbW1hbmRzKEdMdWludCBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGNvb3JkVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKmNvb3JkcykKIHsKLSAgICBhdXRvICpwYXRoT2JqZWN0ID0gbVJlc291cmNlTWFuYWdlci0+
Z2V0UGF0aChwYXRoKTsKKyAgICBhdXRvICpwYXRoT2JqZWN0ID0gbVN0YXRlLm1QYXRocy0+Z2V0
UGF0aChwYXRoKTsKIAogICAgIGhhbmRsZUVycm9yKHBhdGhPYmplY3QtPnNldENvbW1hbmRzKG51
bUNvbW1hbmRzLCBjb21tYW5kcywgbnVtQ29vcmRzLCBjb29yZFR5cGUsIGNvb3JkcykpOwogfQog
CiB2b2lkIENvbnRleHQ6OnNldFBhdGhQYXJhbWV0ZXJmKEdMdWludCBwYXRoLCBHTGVudW0gcG5h
bWUsIEdMZmxvYXQgdmFsdWUpCiB7Ci0gICAgYXV0byAqcGF0aE9iaiA9IG1SZXNvdXJjZU1hbmFn
ZXItPmdldFBhdGgocGF0aCk7CisgICAgYXV0byAqcGF0aE9iaiA9IG1TdGF0ZS5tUGF0aHMtPmdl
dFBhdGgocGF0aCk7CiAKICAgICBzd2l0Y2ggKHBuYW1lKQogICAgIHsKQEAgLTcwMSw3ICs3NTQs
NyBAQCB2b2lkIENvbnRleHQ6OnNldFBhdGhQYXJhbWV0ZXJmKEdMdWludCBwYXRoLCBHTGVudW0g
cG5hbWUsIEdMZmxvYXQgdmFsdWUpCiAKIHZvaWQgQ29udGV4dDo6Z2V0UGF0aFBhcmFtZXRlcmZ2
KEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnZhbHVlKSBjb25zdAogewotICAg
IGNvbnN0IGF1dG8gKnBhdGhPYmogPSBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRQYXRoKHBhdGgpOwor
ICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBtU3RhdGUubVBhdGhzLT5nZXRQYXRoKHBhdGgpOwog
CiAgICAgc3dpdGNoIChwbmFtZSkKICAgICB7CkBAIC03NTAsMTYgKzgwMywyMSBAQCB2b2lkIENv
bnRleHQ6OmRlbGV0ZVZlcnRleEFycmF5KEdMdWludCB2ZXJ0ZXhBcnJheSkKIAogdm9pZCBDb250
ZXh0OjpkZWxldGVTYW1wbGVyKEdMdWludCBzYW1wbGVyKQogewotICAgIGlmIChtUmVzb3VyY2VN
YW5hZ2VyLT5nZXRTYW1wbGVyKHNhbXBsZXIpKQorICAgIGlmIChtU3RhdGUubVNhbXBsZXJzLT5n
ZXRTYW1wbGVyKHNhbXBsZXIpKQogICAgIHsKICAgICAgICAgZGV0YWNoU2FtcGxlcihzYW1wbGVy
KTsKICAgICB9CiAKLSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5kZWxldGVTYW1wbGVyKHNhbXBsZXIp
OworICAgIG1TdGF0ZS5tU2FtcGxlcnMtPmRlbGV0ZU9iamVjdCh0aGlzLCBzYW1wbGVyKTsKIH0K
IAogdm9pZCBDb250ZXh0OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhHTHVpbnQgdHJhbnNmb3Jt
RmVlZGJhY2spCiB7CisgICAgaWYgKHRyYW5zZm9ybUZlZWRiYWNrID09IDApCisgICAgeworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgYXV0byBpdGVyID0gbVRyYW5zZm9ybUZlZWRiYWNr
TWFwLmZpbmQodHJhbnNmb3JtRmVlZGJhY2spOwogICAgIGlmIChpdGVyICE9IG1UcmFuc2Zvcm1G
ZWVkYmFja01hcC5lbmQoKSkKICAgICB7CkBAIC03NjcsNyArODI1LDcgQEAgdm9pZCBDb250ZXh0
OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhHTHVpbnQgdHJhbnNmb3JtRmVlZGJhY2spCiAgICAg
ICAgIGlmICh0cmFuc2Zvcm1GZWVkYmFja09iamVjdCAhPSBudWxscHRyKQogICAgICAgICB7CiAg
ICAgICAgICAgICBkZXRhY2hUcmFuc2Zvcm1GZWVkYmFjayh0cmFuc2Zvcm1GZWVkYmFjayk7Ci0g
ICAgICAgICAgICB0cmFuc2Zvcm1GZWVkYmFja09iamVjdC0+cmVsZWFzZSgpOworICAgICAgICAg
ICAgdHJhbnNmb3JtRmVlZGJhY2tPYmplY3QtPnJlbGVhc2UodGhpcyk7CiAgICAgICAgIH0KIAog
ICAgICAgICBtVHJhbnNmb3JtRmVlZGJhY2tNYXAuZXJhc2UoaXRlcik7CkBAIC03NzcsMTYgKzgz
NSwxMiBAQCB2b2lkIENvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKEdMdWludCB0cmFu
c2Zvcm1GZWVkYmFjaykKIAogdm9pZCBDb250ZXh0OjpkZWxldGVGcmFtZWJ1ZmZlcihHTHVpbnQg
ZnJhbWVidWZmZXIpCiB7Ci0gICAgYXV0byBmcmFtZWJ1ZmZlck9iamVjdCA9IG1GcmFtZWJ1ZmZl
ck1hcC5maW5kKGZyYW1lYnVmZmVyKTsKLQotICAgIGlmIChmcmFtZWJ1ZmZlck9iamVjdCAhPSBt
RnJhbWVidWZmZXJNYXAuZW5kKCkpCisgICAgaWYgKG1TdGF0ZS5tRnJhbWVidWZmZXJzLT5nZXRG
cmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcikpCiAgICAgewogICAgICAgICBkZXRhY2hGcmFtZWJ1ZmZl
cihmcmFtZWJ1ZmZlcik7Ci0KLSAgICAgICAgbUZyYW1lYnVmZmVySGFuZGxlQWxsb2NhdG9yLnJl
bGVhc2UoZnJhbWVidWZmZXJPYmplY3QtPmZpcnN0KTsKLSAgICAgICAgZGVsZXRlIGZyYW1lYnVm
ZmVyT2JqZWN0LT5zZWNvbmQ7Ci0gICAgICAgIG1GcmFtZWJ1ZmZlck1hcC5lcmFzZShmcmFtZWJ1
ZmZlck9iamVjdCk7CiAgICAgfQorCisgICAgbVN0YXRlLm1GcmFtZWJ1ZmZlcnMtPmRlbGV0ZU9i
amVjdCh0aGlzLCBmcmFtZWJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29udGV4dDo6ZGVsZXRlRmVuY2VO
VihHTHVpbnQgZmVuY2UpCkBAIC04MTcsMjIgKzg3MSwyMyBAQCB2b2lkIENvbnRleHQ6OmRlbGV0
ZVF1ZXJ5KEdMdWludCBxdWVyeSkKIAogQnVmZmVyICpDb250ZXh0OjpnZXRCdWZmZXIoR0x1aW50
IGhhbmRsZSkgY29uc3QKIHsKLSAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Z2V0QnVmZmVy
KGhhbmRsZSk7CisgICAgcmV0dXJuIG1TdGF0ZS5tQnVmZmVycy0+Z2V0QnVmZmVyKGhhbmRsZSk7
CiB9CiAKIFRleHR1cmUgKkNvbnRleHQ6OmdldFRleHR1cmUoR0x1aW50IGhhbmRsZSkgY29uc3QK
IHsKLSAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Z2V0VGV4dHVyZShoYW5kbGUpOworICAg
IHJldHVybiBtU3RhdGUubVRleHR1cmVzLT5nZXRUZXh0dXJlKGhhbmRsZSk7CiB9CiAKIFJlbmRl
cmJ1ZmZlciAqQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyKEdMdWludCBoYW5kbGUpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1SZXNvdXJjZU1hbmFnZXItPmdldFJlbmRlcmJ1ZmZlcihoYW5kbGUpOwor
ICAgIHJldHVybiBtU3RhdGUubVJlbmRlcmJ1ZmZlcnMtPmdldFJlbmRlcmJ1ZmZlcihoYW5kbGUp
OwogfQogCiBGZW5jZVN5bmMgKkNvbnRleHQ6OmdldEZlbmNlU3luYyhHTHN5bmMgaGFuZGxlKSBj
b25zdAogewotICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRGZW5jZVN5bmMoc3RhdGlj
X2Nhc3Q8R0x1aW50PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaGFuZGxlKSkpOworICAg
IHJldHVybiBtU3RhdGUubUZlbmNlU3luY3MtPmdldEZlbmNlU3luYygKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8R0x1aW50PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaGFuZGxlKSkpOwogfQog
CiBWZXJ0ZXhBcnJheSAqQ29udGV4dDo6Z2V0VmVydGV4QXJyYXkoR0x1aW50IGhhbmRsZSkgY29u
c3QKQEAgLTg0Myw3ICs4OTgsNyBAQCBWZXJ0ZXhBcnJheSAqQ29udGV4dDo6Z2V0VmVydGV4QXJy
YXkoR0x1aW50IGhhbmRsZSkgY29uc3QKIAogU2FtcGxlciAqQ29udGV4dDo6Z2V0U2FtcGxlcihH
THVpbnQgaGFuZGxlKSBjb25zdAogewotICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRT
YW1wbGVyKGhhbmRsZSk7CisgICAgcmV0dXJuIG1TdGF0ZS5tU2FtcGxlcnMtPmdldFNhbXBsZXIo
aGFuZGxlKTsKIH0KIAogVHJhbnNmb3JtRmVlZGJhY2sgKkNvbnRleHQ6OmdldFRyYW5zZm9ybUZl
ZWRiYWNrKEdMdWludCBoYW5kbGUpIGNvbnN0CkBAIC05MzIsMTkgKzk4NywyNSBAQCB2b2lkIENv
bnRleHQ6OmdldE9iamVjdFB0ckxhYmVsKGNvbnN0IHZvaWQgKnB0ciwKIAogYm9vbCBDb250ZXh0
Ojppc1NhbXBsZXIoR0x1aW50IHNhbXBsZXJOYW1lKSBjb25zdAogewotICAgIHJldHVybiBtUmVz
b3VyY2VNYW5hZ2VyLT5pc1NhbXBsZXIoc2FtcGxlck5hbWUpOworICAgIHJldHVybiBtU3RhdGUu
bVNhbXBsZXJzLT5pc1NhbXBsZXIoc2FtcGxlck5hbWUpOwogfQogCiB2b2lkIENvbnRleHQ6OmJp
bmRBcnJheUJ1ZmZlcihHTHVpbnQgYnVmZmVySGFuZGxlKQogewotICAgIEJ1ZmZlciAqYnVmZmVy
ID0gbVJlc291cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlv
bi5nZXQoKSwgYnVmZmVySGFuZGxlKTsKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IG1TdGF0ZS5tQnVm
ZmVycy0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgYnVmZmVy
SGFuZGxlKTsKICAgICBtR0xTdGF0ZS5zZXRBcnJheUJ1ZmZlckJpbmRpbmcoYnVmZmVyKTsKIH0K
IAordm9pZCBDb250ZXh0OjpiaW5kRHJhd0luZGlyZWN0QnVmZmVyKEdMdWludCBidWZmZXJIYW5k
bGUpCit7CisgICAgQnVmZmVyICpidWZmZXIgPSBtU3RhdGUubUJ1ZmZlcnMtPmNoZWNrQnVmZmVy
QWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7CisgICAgbUdM
U3RhdGUuc2V0RHJhd0luZGlyZWN0QnVmZmVyQmluZGluZyhidWZmZXIpOworfQorCiB2b2lkIENv
bnRleHQ6OmJpbmRFbGVtZW50QXJyYXlCdWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSkKIHsKLSAg
ICBCdWZmZXIgKmJ1ZmZlciA9IG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlv
bihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7Ci0gICAgbUdMU3RhdGUuZ2V0
VmVydGV4QXJyYXkoKS0+c2V0RWxlbWVudEFycmF5QnVmZmVyKGJ1ZmZlcik7CisgICAgQnVmZmVy
ICpidWZmZXIgPSBtU3RhdGUubUJ1ZmZlcnMtPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1wbGVt
ZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7CisgICAgbUdMU3RhdGUuc2V0RWxlbWVudEFy
cmF5QnVmZmVyKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29udGV4dDo6YmluZFRleHR1cmUoR0xlbnVt
IHRhcmdldCwgR0x1aW50IGhhbmRsZSkKQEAgLTk1Nyw3ICsxMDE4LDcgQEAgdm9pZCBDb250ZXh0
OjpiaW5kVGV4dHVyZShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaGFuZGxlKQogICAgIH0KICAgICBl
bHNlCiAgICAgewotICAgICAgICB0ZXh0dXJlID0gbVJlc291cmNlTWFuYWdlci0+Y2hlY2tUZXh0
dXJlQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGhhbmRsZSwgdGFyZ2V0KTsKKyAg
ICAgICAgdGV4dHVyZSA9IG1TdGF0ZS5tVGV4dHVyZXMtPmNoZWNrVGV4dHVyZUFsbG9jYXRpb24o
bUltcGxlbWVudGF0aW9uLmdldCgpLCBoYW5kbGUsIHRhcmdldCk7CiAgICAgfQogCiAgICAgQVNT
RVJUKHRleHR1cmUpOwpAQCAtOTY2LDQwICsxMDI3LDQ0IEBAIHZvaWQgQ29udGV4dDo6YmluZFRl
eHR1cmUoR0xlbnVtIHRhcmdldCwgR0x1aW50IGhhbmRsZSkKIAogdm9pZCBDb250ZXh0OjpiaW5k
UmVhZEZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlckhhbmRsZSkKIHsKLSAgICBGcmFtZWJ1
ZmZlciAqZnJhbWVidWZmZXIgPSBjaGVja0ZyYW1lYnVmZmVyQWxsb2NhdGlvbihmcmFtZWJ1ZmZl
ckhhbmRsZSk7CisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbVN0YXRlLm1GcmFtZWJ1
ZmZlcnMtPmNoZWNrRnJhbWVidWZmZXJBbGxvY2F0aW9uKAorICAgICAgICBtSW1wbGVtZW50YXRp
b24uZ2V0KCksIG1DYXBzLCBmcmFtZWJ1ZmZlckhhbmRsZSk7CiAgICAgbUdMU3RhdGUuc2V0UmVh
ZEZyYW1lYnVmZmVyQmluZGluZyhmcmFtZWJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29udGV4dDo6Ymlu
ZERyYXdGcmFtZWJ1ZmZlcihHTHVpbnQgZnJhbWVidWZmZXJIYW5kbGUpCiB7Ci0gICAgRnJhbWVi
dWZmZXIgKmZyYW1lYnVmZmVyID0gY2hlY2tGcmFtZWJ1ZmZlckFsbG9jYXRpb24oZnJhbWVidWZm
ZXJIYW5kbGUpOworICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IG1TdGF0ZS5tRnJhbWVi
dWZmZXJzLT5jaGVja0ZyYW1lYnVmZmVyQWxsb2NhdGlvbigKKyAgICAgICAgbUltcGxlbWVudGF0
aW9uLmdldCgpLCBtQ2FwcywgZnJhbWVidWZmZXJIYW5kbGUpOwogICAgIG1HTFN0YXRlLnNldERy
YXdGcmFtZWJ1ZmZlckJpbmRpbmcoZnJhbWVidWZmZXIpOwogfQogCi12b2lkIENvbnRleHQ6OmJp
bmRSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlckhhbmRsZSkKLXsKLSAgICBSZW5kZXJi
dWZmZXIgKnJlbmRlcmJ1ZmZlciA9Ci0gICAgICAgIG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrUmVu
ZGVyYnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIHJlbmRlcmJ1ZmZlckhh
bmRsZSk7Ci0gICAgbUdMU3RhdGUuc2V0UmVuZGVyYnVmZmVyQmluZGluZyhyZW5kZXJidWZmZXIp
OwotfQotCiB2b2lkIENvbnRleHQ6OmJpbmRWZXJ0ZXhBcnJheShHTHVpbnQgdmVydGV4QXJyYXlI
YW5kbGUpCiB7CiAgICAgVmVydGV4QXJyYXkgKnZlcnRleEFycmF5ID0gY2hlY2tWZXJ0ZXhBcnJh
eUFsbG9jYXRpb24odmVydGV4QXJyYXlIYW5kbGUpOwogICAgIG1HTFN0YXRlLnNldFZlcnRleEFy
cmF5QmluZGluZyh2ZXJ0ZXhBcnJheSk7CiB9CiAKK3ZvaWQgQ29udGV4dDo6YmluZFZlcnRleEJ1
ZmZlcihHTHVpbnQgYmluZGluZ0luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBidWZmZXJIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnRwdHIgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3Ry
aWRlKQoreworICAgIEJ1ZmZlciAqYnVmZmVyID0gbVN0YXRlLm1CdWZmZXJzLT5jaGVja0J1ZmZl
ckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZmZXJIYW5kbGUpOworICAgIG1H
TFN0YXRlLmJpbmRWZXJ0ZXhCdWZmZXIoYmluZGluZ0luZGV4LCBidWZmZXIsIG9mZnNldCwgc3Ry
aWRlKTsKK30KKwogdm9pZCBDb250ZXh0OjpiaW5kU2FtcGxlcihHTHVpbnQgdGV4dHVyZVVuaXQs
IEdMdWludCBzYW1wbGVySGFuZGxlKQogewogICAgIEFTU0VSVCh0ZXh0dXJlVW5pdCA8IG1DYXBz
Lm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOwogICAgIFNhbXBsZXIgKnNhbXBsZXIgPQot
ICAgICAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja1NhbXBsZXJBbGxvY2F0aW9uKG1JbXBsZW1l
bnRhdGlvbi5nZXQoKSwgc2FtcGxlckhhbmRsZSk7CisgICAgICAgIG1TdGF0ZS5tU2FtcGxlcnMt
PmNoZWNrU2FtcGxlckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBzYW1wbGVySGFu
ZGxlKTsKICAgICBtR0xTdGF0ZS5zZXRTYW1wbGVyQmluZGluZyh0ZXh0dXJlVW5pdCwgc2FtcGxl
cik7CiB9CiAKIHZvaWQgQ29udGV4dDo6YmluZEdlbmVyaWNVbmlmb3JtQnVmZmVyKEdMdWludCBi
dWZmZXJIYW5kbGUpCiB7Ci0gICAgQnVmZmVyICpidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5j
aGVja0J1ZmZlckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZmZXJIYW5kbGUp
OworICAgIEJ1ZmZlciAqYnVmZmVyID0gbVN0YXRlLm1CdWZmZXJzLT5jaGVja0J1ZmZlckFsbG9j
YXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZmZXJIYW5kbGUpOwogICAgIG1HTFN0YXRl
LnNldEdlbmVyaWNVbmlmb3JtQnVmZmVyQmluZGluZyhidWZmZXIpOwogfQogCkBAIC0xMDA4LDEz
ICsxMDczLDEzIEBAIHZvaWQgQ29udGV4dDo6YmluZEluZGV4ZWRVbmlmb3JtQnVmZmVyKEdMdWlu
dCBidWZmZXJIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpcHRyIHNpemUpCiB7Ci0gICAgQnVmZmVyICpidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2Vy
LT5jaGVja0J1ZmZlckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZmZXJIYW5k
bGUpOworICAgIEJ1ZmZlciAqYnVmZmVyID0gbVN0YXRlLm1CdWZmZXJzLT5jaGVja0J1ZmZlckFs
bG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZmZXJIYW5kbGUpOwogICAgIG1HTFN0
YXRlLnNldEluZGV4ZWRVbmlmb3JtQnVmZmVyQmluZGluZyhpbmRleCwgYnVmZmVyLCBvZmZzZXQs
IHNpemUpOwogfQogCiB2b2lkIENvbnRleHQ6OmJpbmRHZW5lcmljVHJhbnNmb3JtRmVlZGJhY2tC
dWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSkKIHsKLSAgICBCdWZmZXIgKmJ1ZmZlciA9IG1SZXNv
dXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCks
IGJ1ZmZlckhhbmRsZSk7CisgICAgQnVmZmVyICpidWZmZXIgPSBtU3RhdGUubUJ1ZmZlcnMtPmNo
ZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7
CiAgICAgbUdMU3RhdGUuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCktPmJpbmRHZW5lcmlj
QnVmZmVyKGJ1ZmZlcik7CiB9CiAKQEAgLTEwMjMsMzcgKzEwODgsNjcgQEAgdm9pZCBDb250ZXh0
OjpiaW5kSW5kZXhlZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRw
dHIgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWlwdHIgc2l6ZSkKIHsKLSAgICBCdWZmZXIgKmJ1ZmZlciA9IG1SZXNvdXJjZU1h
bmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZl
ckhhbmRsZSk7CisgICAgQnVmZmVyICpidWZmZXIgPSBtU3RhdGUubUJ1ZmZlcnMtPmNoZWNrQnVm
ZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7CiAgICAg
bUdMU3RhdGUuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCktPmJpbmRJbmRleGVkQnVmZmVy
KGluZGV4LCBidWZmZXIsIG9mZnNldCwgc2l6ZSk7CiB9CiAKK3ZvaWQgQ29udGV4dDo6YmluZEdl
bmVyaWNBdG9taWNDb3VudGVyQnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUpCit7CisgICAgQnVm
ZmVyICpidWZmZXIgPSBtU3RhdGUubUJ1ZmZlcnMtPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1w
bGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7CisgICAgbUdMU3RhdGUuc2V0R2VuZXJp
Y0F0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5nKGJ1ZmZlcik7Cit9CisKK3ZvaWQgQ29udGV4dDo6
YmluZEluZGV4ZWRBdG9taWNDb3VudGVyQnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZz
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
cHRyIHNpemUpCit7CisgICAgQnVmZmVyICpidWZmZXIgPSBtU3RhdGUubUJ1ZmZlcnMtPmNoZWNr
QnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7Cisg
ICAgbUdMU3RhdGUuc2V0SW5kZXhlZEF0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5nKGluZGV4LCBi
dWZmZXIsIG9mZnNldCwgc2l6ZSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6YmluZEdlbmVyaWNTaGFk
ZXJTdG9yYWdlQnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUpCit7CisgICAgQnVmZmVyICpidWZm
ZXIgPSBtU3RhdGUubUJ1ZmZlcnMtPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRp
b24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7CisgICAgbUdMU3RhdGUuc2V0R2VuZXJpY1NoYWRlclN0
b3JhZ2VCdWZmZXJCaW5kaW5nKGJ1ZmZlcik7Cit9CisKK3ZvaWQgQ29udGV4dDo6YmluZEluZGV4
ZWRTaGFkZXJTdG9yYWdlQnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUp
Cit7CisgICAgQnVmZmVyICpidWZmZXIgPSBtU3RhdGUubUJ1ZmZlcnMtPmNoZWNrQnVmZmVyQWxs
b2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7CisgICAgbUdMU3Rh
dGUuc2V0SW5kZXhlZFNoYWRlclN0b3JhZ2VCdWZmZXJCaW5kaW5nKGluZGV4LCBidWZmZXIsIG9m
ZnNldCwgc2l6ZSk7Cit9CisKIHZvaWQgQ29udGV4dDo6YmluZENvcHlSZWFkQnVmZmVyKEdMdWlu
dCBidWZmZXJIYW5kbGUpCiB7Ci0gICAgQnVmZmVyICpidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2Vy
LT5jaGVja0J1ZmZlckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZmZXJIYW5k
bGUpOworICAgIEJ1ZmZlciAqYnVmZmVyID0gbVN0YXRlLm1CdWZmZXJzLT5jaGVja0J1ZmZlckFs
bG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZmZXJIYW5kbGUpOwogICAgIG1HTFN0
YXRlLnNldENvcHlSZWFkQnVmZmVyQmluZGluZyhidWZmZXIpOwogfQogCiB2b2lkIENvbnRleHQ6
OmJpbmRDb3B5V3JpdGVCdWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSkKIHsKLSAgICBCdWZmZXIg
KmJ1ZmZlciA9IG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1wbGVt
ZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7CisgICAgQnVmZmVyICpidWZmZXIgPSBtU3Rh
dGUubUJ1ZmZlcnMtPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCks
IGJ1ZmZlckhhbmRsZSk7CiAgICAgbUdMU3RhdGUuc2V0Q29weVdyaXRlQnVmZmVyQmluZGluZyhi
dWZmZXIpOwogfQogCiB2b2lkIENvbnRleHQ6OmJpbmRQaXhlbFBhY2tCdWZmZXIoR0x1aW50IGJ1
ZmZlckhhbmRsZSkKIHsKLSAgICBCdWZmZXIgKmJ1ZmZlciA9IG1SZXNvdXJjZU1hbmFnZXItPmNo
ZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7
CisgICAgQnVmZmVyICpidWZmZXIgPSBtU3RhdGUubUJ1ZmZlcnMtPmNoZWNrQnVmZmVyQWxsb2Nh
dGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7CiAgICAgbUdMU3RhdGUu
c2V0UGl4ZWxQYWNrQnVmZmVyQmluZGluZyhidWZmZXIpOwogfQogCiB2b2lkIENvbnRleHQ6OmJp
bmRQaXhlbFVucGFja0J1ZmZlcihHTHVpbnQgYnVmZmVySGFuZGxlKQogewotICAgIEJ1ZmZlciAq
YnVmZmVyID0gbVJlc291cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKG1JbXBsZW1l
bnRhdGlvbi5nZXQoKSwgYnVmZmVySGFuZGxlKTsKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IG1TdGF0
ZS5tQnVmZmVycy0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwg
YnVmZmVySGFuZGxlKTsKICAgICBtR0xTdGF0ZS5zZXRQaXhlbFVucGFja0J1ZmZlckJpbmRpbmco
YnVmZmVyKTsKIH0KIAogdm9pZCBDb250ZXh0Ojp1c2VQcm9ncmFtKEdMdWludCBwcm9ncmFtKQog
ewotICAgIG1HTFN0YXRlLnNldFByb2dyYW0oZ2V0UHJvZ3JhbShwcm9ncmFtKSk7CisgICAgbUdM
U3RhdGUuc2V0UHJvZ3JhbSh0aGlzLCBnZXRQcm9ncmFtKHByb2dyYW0pKTsKIH0KIAogdm9pZCBD
b250ZXh0OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0x1aW50IHRyYW5zZm9ybUZlZWRiYWNrSGFu
ZGxlKQpAQCAtMTA3OCw3ICsxMTczLDcgQEAgRXJyb3IgQ29udGV4dDo6YmVnaW5RdWVyeShHTGVu
dW0gdGFyZ2V0LCBHTHVpbnQgcXVlcnkpCiAgICAgLy8gc2V0IHF1ZXJ5IGFzIGFjdGl2ZSBmb3Ig
c3BlY2lmaWVkIHRhcmdldCBvbmx5IGlmIGJlZ2luIHN1Y2NlZWRlZAogICAgIG1HTFN0YXRlLnNl
dEFjdGl2ZVF1ZXJ5KHRhcmdldCwgcXVlcnlPYmplY3QpOwogCi0gICAgcmV0dXJuIEVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCiBFcnJvciBDb250ZXh0Ojpl
bmRRdWVyeShHTGVudW0gdGFyZ2V0KQpAQCAtMTE1MiwxMCArMTI0Nyw5IEBAIHZvaWQgQ29udGV4
dDo6Z2V0UXVlcnlPYmplY3R1aTY0dihHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50NjQg
KnBhcmFtcykKICAgICBoYW5kbGVFcnJvcihHZXRRdWVyeU9iamVjdFBhcmFtZXRlcihnZXRRdWVy
eShpZCksIHBuYW1lLCBwYXJhbXMpKTsKIH0KIAotRnJhbWVidWZmZXIgKkNvbnRleHQ6OmdldEZy
YW1lYnVmZmVyKHVuc2lnbmVkIGludCBoYW5kbGUpIGNvbnN0CitGcmFtZWJ1ZmZlciAqQ29udGV4
dDo6Z2V0RnJhbWVidWZmZXIoR0x1aW50IGhhbmRsZSkgY29uc3QKIHsKLSAgICBhdXRvIGZyYW1l
YnVmZmVySXQgPSBtRnJhbWVidWZmZXJNYXAuZmluZChoYW5kbGUpOwotICAgIHJldHVybiAoKGZy
YW1lYnVmZmVySXQgPT0gbUZyYW1lYnVmZmVyTWFwLmVuZCgpKSA/IG51bGxwdHIgOiBmcmFtZWJ1
ZmZlckl0LT5zZWNvbmQpOworICAgIHJldHVybiBtU3RhdGUubUZyYW1lYnVmZmVycy0+Z2V0RnJh
bWVidWZmZXIoaGFuZGxlKTsKIH0KIAogRmVuY2VOViAqQ29udGV4dDo6Z2V0RmVuY2VOVih1bnNp
Z25lZCBpbnQgaGFuZGxlKQpAQCAtMTIxMyw3ICsxMzA3LDcgQEAgQ29tcGlsZXIgKkNvbnRleHQ6
OmdldENvbXBpbGVyKCkgY29uc3QKICAgICByZXR1cm4gbUNvbXBpbGVyOwogfQogCi12b2lkIENv
bnRleHQ6OmdldEJvb2xlYW52KEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpwYXJhbXMpCit2b2lk
IENvbnRleHQ6OmdldEJvb2xlYW52SW1wbChHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1z
KQogewogICAgIHN3aXRjaCAocG5hbWUpCiAgICAgewpAQCAtMTIyNSw3ICsxMzE5LDcgQEAgdm9p
ZCBDb250ZXh0OjpnZXRCb29sZWFudihHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1zKQog
ICAgIH0KIH0KIAotdm9pZCBDb250ZXh0OjpnZXRGbG9hdHYoR0xlbnVtIHBuYW1lLCBHTGZsb2F0
ICpwYXJhbXMpCit2b2lkIENvbnRleHQ6OmdldEZsb2F0dkltcGwoR0xlbnVtIHBuYW1lLCBHTGZs
b2F0ICpwYXJhbXMpCiB7CiAgICAgLy8gUXVlcmllcyBhYm91dCBjb250ZXh0IGNhcGFiaWxpdGll
cyBhbmQgbWF4aW11bXMgYXJlIGFuc3dlcmVkIGJ5IENvbnRleHQuCiAgICAgLy8gUXVlcmllcyBh
Ym91dCBjdXJyZW50IEdMIHN0YXRlIHZhbHVlcyBhcmUgYW5zd2VyZWQgYnkgU3RhdGUuCkBAIC0x
MjYyLDcgKzEzNTYsNyBAQCB2b2lkIENvbnRleHQ6OmdldEZsb2F0dihHTGVudW0gcG5hbWUsIEdM
ZmxvYXQgKnBhcmFtcykKICAgICB9CiB9CiAKLXZvaWQgQ29udGV4dDo6Z2V0SW50ZWdlcnYoR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQordm9pZCBDb250ZXh0OjpnZXRJbnRlZ2VydkltcGwo
R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogewogICAgIC8vIFF1ZXJpZXMgYWJvdXQgY29u
dGV4dCBjYXBhYmlsaXRpZXMgYW5kIG1heGltdW1zIGFyZSBhbnN3ZXJlZCBieSBDb250ZXh0Lgog
ICAgIC8vIFF1ZXJpZXMgYWJvdXQgY3VycmVudCBHTCBzdGF0ZSB2YWx1ZXMgYXJlIGFuc3dlcmVk
IGJ5IFN0YXRlLgpAQCAtMTI5OCwxMCArMTM5MiwxMCBAQCB2b2lkIENvbnRleHQ6OmdldEludGVn
ZXJ2KEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKICAgICAgIGNhc2UgR0xfTUlOX1BST0dS
QU1fVEVYRUxfT0ZGU0VUOiAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1pblByb2dy
YW1UZXhlbE9mZnNldDsgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgY2Fz
ZSBHTF9NQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQ6ICAgICAgICAgICAgICAgICAqcGFyYW1zID0g
bUNhcHMubWF4UHJvZ3JhbVRleGVsT2Zmc2V0OyAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICBjYXNlIEdMX01BSk9SX1ZFUlNJT046Ci0gICAgICAgICAgKnBhcmFtcyA9IG1D
bGllbnRNYWpvclZlcnNpb247CisgICAgICAgICAgKnBhcmFtcyA9IGdldENsaWVudFZlcnNpb24o
KS5tYWpvcjsKICAgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfTUlOT1JfVkVSU0lPTjoK
LSAgICAgICAgICAqcGFyYW1zID0gbUNsaWVudE1pbm9yVmVyc2lvbjsKKyAgICAgICAgICAqcGFy
YW1zID0gZ2V0Q2xpZW50VmVyc2lvbigpLm1pbm9yOwogICAgICAgICAgIGJyZWFrOwogICAgICAg
Y2FzZSBHTF9NQVhfRUxFTUVOVFNfSU5ESUNFUzogICAgICAgICAgICAgICAgICAgICAqcGFyYW1z
ID0gbUNhcHMubWF4RWxlbWVudHNJbmRpY2VzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICBjYXNlIEdMX01BWF9FTEVNRU5UU19WRVJUSUNFUzogICAgICAgICAgICAg
ICAgICAgICpwYXJhbXMgPSBtQ2Fwcy5tYXhFbGVtZW50c1ZlcnRpY2VzOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKQEAgLTE0ODIsNyArMTU3Niw3IEBAIHZvaWQgQ29udGV4dDo6
Z2V0SW50ZWdlcnYoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogICAgICAgICAgICpwYXJh
bXMgPSBtQ2Fwcy5zaGFkZXJTdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50OwogICAgICAgICAg
IGJyZWFrOwogICAgICAgZGVmYXVsdDoKLSAgICAgICAgICBtR0xTdGF0ZS5nZXRJbnRlZ2Vydiht
U3RhdGUsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgIG1HTFN0YXRlLmdldEludGVnZXJ2KHRo
aXMsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTE1MzYs
NyArMTYzMCw2IEBAIHZvaWQgQ29udGV4dDo6Z2V0SW50ZWdlcmlfdihHTGVudW0gdGFyZ2V0LCBH
THVpbnQgaW5kZXgsIEdMaW50ICpkYXRhKQogICAgIEdMZW51bSBuYXRpdmVUeXBlOwogICAgIHVu
c2lnbmVkIGludCBudW1QYXJhbXM7CiAgICAgYm9vbCBxdWVyeVN0YXR1cyA9IGdldEluZGV4ZWRR
dWVyeVBhcmFtZXRlckluZm8odGFyZ2V0LCAmbmF0aXZlVHlwZSwgJm51bVBhcmFtcyk7Ci0gICAg
VU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShxdWVyeVN0YXR1cyk7CiAgICAgQVNTRVJUKHF1ZXJ5
U3RhdHVzKTsKIAogICAgIGlmIChuYXRpdmVUeXBlID09IEdMX0lOVCkKQEAgLTE1NjksNyArMTY2
Miw2IEBAIHZvaWQgQ29udGV4dDo6Z2V0SW50ZWdlcjY0aV92KEdMZW51bSB0YXJnZXQsIEdMdWlu
dCBpbmRleCwgR0xpbnQ2NCAqZGF0YSkKICAgICBHTGVudW0gbmF0aXZlVHlwZTsKICAgICB1bnNp
Z25lZCBpbnQgbnVtUGFyYW1zOwogICAgIGJvb2wgcXVlcnlTdGF0dXMgPSBnZXRJbmRleGVkUXVl
cnlQYXJhbWV0ZXJJbmZvKHRhcmdldCwgJm5hdGl2ZVR5cGUsICZudW1QYXJhbXMpOwotICAgIFVO
VVNFRF9BU1NFUlRJT05fVkFSSUFCTEUocXVlcnlTdGF0dXMpOwogICAgIEFTU0VSVChxdWVyeVN0
YXR1cyk7CiAKICAgICBpZiAobmF0aXZlVHlwZSA9PSBHTF9JTlRfNjRfQU5HTEVYKQpAQCAtMTU5
MCw3ICsxNjgyLDYgQEAgdm9pZCBDb250ZXh0OjpnZXRCb29sZWFuaV92KEdMZW51bSB0YXJnZXQs
IEdMdWludCBpbmRleCwgR0xib29sZWFuICpkYXRhKQogICAgIEdMZW51bSBuYXRpdmVUeXBlOwog
ICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXM7CiAgICAgYm9vbCBxdWVyeVN0YXR1cyA9IGdldElu
ZGV4ZWRRdWVyeVBhcmFtZXRlckluZm8odGFyZ2V0LCAmbmF0aXZlVHlwZSwgJm51bVBhcmFtcyk7
Ci0gICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShxdWVyeVN0YXR1cyk7CiAgICAgQVNTRVJU
KHF1ZXJ5U3RhdHVzKTsKIAogICAgIGlmIChuYXRpdmVUeXBlID09IEdMX0JPT0wpCkBAIC0xNjAz
LDY2ICsxNjk0LDEzOSBAQCB2b2lkIENvbnRleHQ6OmdldEJvb2xlYW5pX3YoR0xlbnVtIHRhcmdl
dCwgR0x1aW50IGluZGV4LCBHTGJvb2xlYW4gKmRhdGEpCiAgICAgfQogfQogCi1FcnJvciBDb250
ZXh0OjpkcmF3QXJyYXlzKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCkK
K3ZvaWQgQ29udGV4dDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IHBuYW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIEJ1ZmZlciAqYnVmZmVyID0gbUdMU3RhdGUu
Z2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CisgICAgUXVlcnlCdWZmZXJQYXJhbWV0ZXJpdihidWZm
ZXIsIHBuYW1lLCBwYXJhbXMpOworfQorCit2b2lkIENvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0
YWNobWVudFBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpw
YXJhbXMpCit7CisgICAgY29uc3QgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbUdMU3RhdGUu
Z2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsKKyAgICBRdWVyeUZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcml2KGZyYW1lYnVmZmVyLCBhdHRhY2htZW50LCBwbmFtZSwgcGFyYW1zKTsK
K30KKwordm9pZCBDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAgUmVuZGVyYnVmZmVyICpy
ZW5kZXJidWZmZXIgPSBtR0xTdGF0ZS5nZXRDdXJyZW50UmVuZGVyYnVmZmVyKCk7CisgICAgUXVl
cnlSZW5kZXJidWZmZXJpdih0aGlzLCByZW5kZXJidWZmZXIsIHBuYW1lLCBwYXJhbXMpOworfQor
Cit2b2lkIENvbnRleHQ6OmdldFRleFBhcmFtZXRlcmZ2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xmbG9hdCAqcGFyYW1zKQoreworICAgIFRleHR1cmUgKnRleHR1cmUgPSBnZXRUYXJn
ZXRUZXh0dXJlKHRhcmdldCk7CisgICAgUXVlcnlUZXhQYXJhbWV0ZXJmdih0ZXh0dXJlLCBwbmFt
ZSwgcGFyYW1zKTsKK30KKwordm9pZCBDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXJpdihHTGVudW0g
dGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAgVGV4dHVyZSAqdGV4
dHVyZSA9IGdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKKyAgICBRdWVyeVRleFBhcmFtZXRlcml2
KHRleHR1cmUsIHBuYW1lLCBwYXJhbXMpOworfQordm9pZCBDb250ZXh0Ojp0ZXhQYXJhbWV0ZXJm
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKK3sKKyAgICBUZXh0
dXJlICp0ZXh0dXJlID0gZ2V0VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOworICAgIFNldFRleFBhcmFt
ZXRlcmYodGV4dHVyZSwgcG5hbWUsIHBhcmFtKTsKK30KKwordm9pZCBDb250ZXh0Ojp0ZXhQYXJh
bWV0ZXJmdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFt
cykKK3sKKyAgICBUZXh0dXJlICp0ZXh0dXJlID0gZ2V0VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOwor
ICAgIFNldFRleFBhcmFtZXRlcmZ2KHRleHR1cmUsIHBuYW1lLCBwYXJhbXMpOworfQorCit2b2lk
IENvbnRleHQ6OnRleFBhcmFtZXRlcmkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCBwYXJhbSkKK3sKKyAgICBUZXh0dXJlICp0ZXh0dXJlID0gZ2V0VGFyZ2V0VGV4dHVyZSh0YXJn
ZXQpOworICAgIFNldFRleFBhcmFtZXRlcmkodGV4dHVyZSwgcG5hbWUsIHBhcmFtKTsKK30KKwor
dm9pZCBDb250ZXh0Ojp0ZXhQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs
IGNvbnN0IEdMaW50ICpwYXJhbXMpCit7CisgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGdldFRhcmdl
dFRleHR1cmUodGFyZ2V0KTsKKyAgICBTZXRUZXhQYXJhbWV0ZXJpdih0ZXh0dXJlLCBwbmFtZSwg
cGFyYW1zKTsKK30KKwordm9pZCBDb250ZXh0OjpkcmF3QXJyYXlzKEdMZW51bSBtb2RlLCBHTGlu
dCBmaXJzdCwgR0xzaXplaSBjb3VudCkKIHsKICAgICBzeW5jUmVuZGVyZXJTdGF0ZSgpOwotICAg
IEFOR0xFX1RSWShtSW1wbGVtZW50YXRpb24tPmRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50
KSk7Ci0gICAgTWFya1RyYW5zZm9ybUZlZWRiYWNrQnVmZmVyVXNhZ2UobUdMU3RhdGUuZ2V0Q3Vy
cmVudFRyYW5zZm9ybUZlZWRiYWNrKCkpOworICAgIGF1dG8gZXJyb3IgPSBtSW1wbGVtZW50YXRp
b24tPmRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsKKyAgICBoYW5kbGVFcnJvcihlcnJv
cik7CisgICAgaWYgKCFlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBNYXJrVHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXJVc2FnZShtR0xTdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJh
Y2soKSk7CisgICAgfQorfQogCi0gICAgcmV0dXJuIE5vRXJyb3IoKTsKK3ZvaWQgQ29udGV4dDo6
ZHJhd0FycmF5c0luc3RhbmNlZChHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291
bnQsIEdMc2l6ZWkgaW5zdGFuY2VDb3VudCkKK3sKKyAgICBzeW5jUmVuZGVyZXJTdGF0ZSgpOwor
ICAgIGF1dG8gZXJyb3IgPSBtSW1wbGVtZW50YXRpb24tPmRyYXdBcnJheXNJbnN0YW5jZWQobW9k
ZSwgZmlyc3QsIGNvdW50LCBpbnN0YW5jZUNvdW50KTsKKyAgICBoYW5kbGVFcnJvcihlcnJvcik7
CisgICAgaWYgKCFlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBNYXJrVHJhbnNmb3Jt
RmVlZGJhY2tCdWZmZXJVc2FnZShtR0xTdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2so
KSk7CisgICAgfQogfQogCi1FcnJvciBDb250ZXh0OjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdMZW51
bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZUNvdW50
KQordm9pZCBDb250ZXh0OjpkcmF3RWxlbWVudHMoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmlu
ZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbmRleFJhbmdlICZpbmRl
eFJhbmdlKQogewogICAgIHN5bmNSZW5kZXJlclN0YXRlKCk7Ci0gICAgQU5HTEVfVFJZKG1JbXBs
ZW1lbnRhdGlvbi0+ZHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIGluc3Rh
bmNlQ291bnQpKTsKLSAgICBNYXJrVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJVc2FnZShtR0xTdGF0
ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKSk7CisgICAgaGFuZGxlRXJyb3IobUltcGxl
bWVudGF0aW9uLT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIGluZGV4
UmFuZ2UpKTsKK30KIAotICAgIHJldHVybiBOb0Vycm9yKCk7Cit2b2lkIENvbnRleHQ6OmRyYXdF
bGVtZW50c0luc3RhbmNlZChHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgSW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKK3sKKyAgICBzeW5jUmVuZGVyZXJTdGF0ZSgp
OworICAgIGhhbmRsZUVycm9yKAorICAgICAgICBtSW1wbGVtZW50YXRpb24tPmRyYXdFbGVtZW50
c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgaW5zdGFuY2VzLCBpbmRleFJh
bmdlKSk7CiB9CiAKLUVycm9yIENvbnRleHQ6OmRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJ
bmRleFJhbmdlICZpbmRleFJhbmdlKQordm9pZCBDb250ZXh0OjpkcmF3UmFuZ2VFbGVtZW50cyhH
TGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBJbmRleFJhbmdlICZpbmRleFJhbmdlKQogewogICAgIHN5bmNSZW5kZXJlclN0YXRl
KCk7Ci0gICAgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbi0+ZHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50
LCB0eXBlLCBpbmRpY2VzLCBpbmRleFJhbmdlKTsKKyAgICBoYW5kbGVFcnJvcigKKyAgICAgICAg
bUltcGxlbWVudGF0aW9uLT5kcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBjb3Vu
dCwgdHlwZSwgaW5kaWNlcywgaW5kZXhSYW5nZSkpOwogfQogCi1FcnJvciBDb250ZXh0OjpkcmF3
RWxlbWVudHNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHZvaWQgKmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBpbnN0YW5jZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgSW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKK3ZvaWQgQ29udGV4dDo6ZHJhd0Fy
cmF5c0luZGlyZWN0KEdMZW51bSBtb2RlLCBjb25zdCBHTHZvaWQgKmluZGlyZWN0KQogewogICAg
IHN5bmNSZW5kZXJlclN0YXRlKCk7Ci0gICAgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbi0+ZHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbnN0YW5jZXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4UmFu
Z2UpOworICAgIGhhbmRsZUVycm9yKG1JbXBsZW1lbnRhdGlvbi0+ZHJhd0FycmF5c0luZGlyZWN0
KG1vZGUsIGluZGlyZWN0KSk7CiB9CiAKLUVycm9yIENvbnRleHQ6OmRyYXdSYW5nZUVsZW1lbnRz
KEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0
YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVuZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpCit2b2lkIENvbnRleHQ6OmRy
YXdFbGVtZW50c0luZGlyZWN0KEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lk
ICppbmRpcmVjdCkKIHsKICAgICBzeW5jUmVuZGVyZXJTdGF0ZSgpOwotICAgIHJldHVybiBtSW1w
bGVtZW50YXRpb24tPmRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0
eXBlLCBpbmRpY2VzLCBpbmRleFJhbmdlKTsKKyAgICBoYW5kbGVFcnJvcihtSW1wbGVtZW50YXRp
b24tPmRyYXdFbGVtZW50c0luZGlyZWN0KG1vZGUsIHR5cGUsIGluZGlyZWN0KSk7CiB9CiAKLUVy
cm9yIENvbnRleHQ6OmZsdXNoKCkKK3ZvaWQgQ29udGV4dDo6Zmx1c2goKQogewotICAgIHJldHVy
biBtSW1wbGVtZW50YXRpb24tPmZsdXNoKCk7CisgICAgaGFuZGxlRXJyb3IobUltcGxlbWVudGF0
aW9uLT5mbHVzaCgpKTsKIH0KIAotRXJyb3IgQ29udGV4dDo6ZmluaXNoKCkKK3ZvaWQgQ29udGV4
dDo6ZmluaXNoKCkKIHsKLSAgICByZXR1cm4gbUltcGxlbWVudGF0aW9uLT5maW5pc2goKTsKKyAg
ICBoYW5kbGVFcnJvcihtSW1wbGVtZW50YXRpb24tPmZpbmlzaCgpKTsKIH0KIAogdm9pZCBDb250
ZXh0OjppbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2Vy
KQpAQCAtMTcxMSw3ICsxODc1LDcgQEAgdm9pZCBDb250ZXh0Ojpsb2FkUGF0aFJlbmRlcmluZ0lk
ZW50aXR5TWF0cml4KEdMZW51bSBtYXRyaXhNb2RlKQogCiB2b2lkIENvbnRleHQ6OnN0ZW5jaWxG
aWxsUGF0aChHTHVpbnQgcGF0aCwgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQgbWFzaykKIHsKLSAg
ICBjb25zdCBhdXRvICpwYXRoT2JqID0gbVJlc291cmNlTWFuYWdlci0+Z2V0UGF0aChwYXRoKTsK
KyAgICBjb25zdCBhdXRvICpwYXRoT2JqID0gbVN0YXRlLm1QYXRocy0+Z2V0UGF0aChwYXRoKTsK
ICAgICBpZiAoIXBhdGhPYmopCiAgICAgICAgIHJldHVybjsKIApAQCAtMTcyMyw3ICsxODg3LDcg
QEAgdm9pZCBDb250ZXh0OjpzdGVuY2lsRmlsbFBhdGgoR0x1aW50IHBhdGgsIEdMZW51bSBmaWxs
TW9kZSwgR0x1aW50IG1hc2spCiAKIHZvaWQgQ29udGV4dDo6c3RlbmNpbFN0cm9rZVBhdGgoR0x1
aW50IHBhdGgsIEdMaW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2spCiB7Ci0gICAgY29uc3QgYXV0
byAqcGF0aE9iaiA9IG1SZXNvdXJjZU1hbmFnZXItPmdldFBhdGgocGF0aCk7CisgICAgY29uc3Qg
YXV0byAqcGF0aE9iaiA9IG1TdGF0ZS5tUGF0aHMtPmdldFBhdGgocGF0aCk7CiAgICAgaWYgKCFw
YXRoT2JqKQogICAgICAgICByZXR1cm47CiAKQEAgLTE3MzUsNyArMTg5OSw3IEBAIHZvaWQgQ29u
dGV4dDo6c3RlbmNpbFN0cm9rZVBhdGgoR0x1aW50IHBhdGgsIEdMaW50IHJlZmVyZW5jZSwgR0x1
aW50IG1hc2spCiAKIHZvaWQgQ29udGV4dDo6Y292ZXJGaWxsUGF0aChHTHVpbnQgcGF0aCwgR0xl
bnVtIGNvdmVyTW9kZSkKIHsKLSAgICBjb25zdCBhdXRvICpwYXRoT2JqID0gbVJlc291cmNlTWFu
YWdlci0+Z2V0UGF0aChwYXRoKTsKKyAgICBjb25zdCBhdXRvICpwYXRoT2JqID0gbVN0YXRlLm1Q
YXRocy0+Z2V0UGF0aChwYXRoKTsKICAgICBpZiAoIXBhdGhPYmopCiAgICAgICAgIHJldHVybjsK
IApAQCAtMTc0Nyw3ICsxOTExLDcgQEAgdm9pZCBDb250ZXh0Ojpjb3ZlckZpbGxQYXRoKEdMdWlu
dCBwYXRoLCBHTGVudW0gY292ZXJNb2RlKQogCiB2b2lkIENvbnRleHQ6OmNvdmVyU3Ryb2tlUGF0
aChHTHVpbnQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkKIHsKLSAgICBjb25zdCBhdXRvICpwYXRo
T2JqID0gbVJlc291cmNlTWFuYWdlci0+Z2V0UGF0aChwYXRoKTsKKyAgICBjb25zdCBhdXRvICpw
YXRoT2JqID0gbVN0YXRlLm1QYXRocy0+Z2V0UGF0aChwYXRoKTsKICAgICBpZiAoIXBhdGhPYmop
CiAgICAgICAgIHJldHVybjsKIApAQCAtMTc1OSw3ICsxOTIzLDcgQEAgdm9pZCBDb250ZXh0Ojpj
b3ZlclN0cm9rZVBhdGgoR0x1aW50IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpCiAKIHZvaWQgQ29u
dGV4dDo6c3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoKEdMdWludCBwYXRoLCBHTGVudW0gZmlsbE1v
ZGUsIEdMdWludCBtYXNrLCBHTGVudW0gY292ZXJNb2RlKQogewotICAgIGNvbnN0IGF1dG8gKnBh
dGhPYmogPSBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRQYXRoKHBhdGgpOworICAgIGNvbnN0IGF1dG8g
KnBhdGhPYmogPSBtU3RhdGUubVBhdGhzLT5nZXRQYXRoKHBhdGgpOwogICAgIGlmICghcGF0aE9i
aikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzc0LDcgKzE5MzgsNyBAQCB2b2lkIENvbnRleHQ6
OnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoKEdMdWludCBwYXRoLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkKIHsKLSAgICBjb25zdCBh
dXRvICpwYXRoT2JqID0gbVJlc291cmNlTWFuYWdlci0+Z2V0UGF0aChwYXRoKTsKKyAgICBjb25z
dCBhdXRvICpwYXRoT2JqID0gbVN0YXRlLm1QYXRocy0+Z2V0UGF0aChwYXRoKTsKICAgICBpZiAo
IXBhdGhPYmopCiAgICAgICAgIHJldHVybjsKIApAQCAtMTc5Miw4ICsxOTU2LDcgQEAgdm9pZCBD
b250ZXh0Ojpjb3ZlckZpbGxQYXRoSW5zdGFuY2VkKEdMc2l6ZWkgbnVtUGF0aHMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3Jt
VmFsdWVzKQogewotICAgIGNvbnN0IGF1dG8gJnBhdGhPYmplY3RzID0KLSAgICAgICAgR2F0aGVy
UGF0aHMoKm1SZXNvdXJjZU1hbmFnZXIsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBw
YXRoQmFzZSk7CisgICAgY29uc3QgYXV0byAmcGF0aE9iamVjdHMgPSBHYXRoZXJQYXRocygqbVN0
YXRlLm1QYXRocywgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlKTsKIAog
ICAgIC8vIFRPRE8oc3ZhaXNhbmVuQG52aWRpYS5jb20pOiBtYXliZSBzeW5jIG9ubHkgc3RhdGUg
cmVxdWlyZWQgZm9yIHBhdGggcmVuZGVyaW5nPwogICAgIHN5bmNSZW5kZXJlclN0YXRlKCk7CkBA
IC0xODA5LDggKzE5NzIsNyBAQCB2b2lkIENvbnRleHQ6OmNvdmVyU3Ryb2tlUGF0aEluc3RhbmNl
ZChHTHNpemVpIG51bVBhdGhzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCiB7Ci0gICAgY29uc3QgYXV0
byAmcGF0aE9iamVjdHMgPQotICAgICAgICBHYXRoZXJQYXRocygqbVJlc291cmNlTWFuYWdlciwg
bnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlKTsKKyAgICBjb25zdCBhdXRv
ICZwYXRoT2JqZWN0cyA9IEdhdGhlclBhdGhzKCptU3RhdGUubVBhdGhzLCBudW1QYXRocywgcGF0
aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UpOwogCiAgICAgLy8gVE9ETyhzdmFpc2FuZW5AbnZp
ZGlhLmNvbSk6IG1heWJlIHN5bmMgb25seSBzdGF0ZSByZXF1aXJlZCBmb3IgcGF0aCByZW5kZXJp
bmc/CiAgICAgc3luY1JlbmRlcmVyU3RhdGUoKTsKQEAgLTE4MjgsOCArMTk5MCw3IEBAIHZvaWQg
Q29udGV4dDo6c3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkKEdMc2l6ZWkgbnVtUGF0aHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcykKIHsKLSAgICBjb25zdCBhdXRvICZwYXRoT2JqZWN0cyA9Ci0gICAgICAg
IEdhdGhlclBhdGhzKCptUmVzb3VyY2VNYW5hZ2VyLCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBw
YXRocywgcGF0aEJhc2UpOworICAgIGNvbnN0IGF1dG8gJnBhdGhPYmplY3RzID0gR2F0aGVyUGF0
aHMoKm1TdGF0ZS5tUGF0aHMsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFz
ZSk7CiAKICAgICAvLyBUT0RPKHN2YWlzYW5lbkBudmlkaWEuY29tKTogbWF5YmUgc3luYyBvbmx5
IHN0YXRlIHJlcXVpcmVkIGZvciBwYXRoIHJlbmRlcmluZz8KICAgICBzeW5jUmVuZGVyZXJTdGF0
ZSgpOwpAQCAtMTg0Nyw4ICsyMDA4LDcgQEAgdm9pZCBDb250ZXh0OjpzdGVuY2lsU3Ryb2tlUGF0
aEluc3RhbmNlZChHTHNpemVpIG51bVBhdGhzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQogewot
ICAgIGNvbnN0IGF1dG8gJnBhdGhPYmplY3RzID0KLSAgICAgICAgR2F0aGVyUGF0aHMoKm1SZXNv
dXJjZU1hbmFnZXIsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSk7Cisg
ICAgY29uc3QgYXV0byAmcGF0aE9iamVjdHMgPSBHYXRoZXJQYXRocygqbVN0YXRlLm1QYXRocywg
bnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlKTsKIAogICAgIC8vIFRPRE8o
c3ZhaXNhbmVuQG52aWRpYS5jb20pOiBtYXliZSBzeW5jIG9ubHkgc3RhdGUgcmVxdWlyZWQgZm9y
IHBhdGggcmVuZGVyaW5nPwogICAgIHN5bmNSZW5kZXJlclN0YXRlKCk7CkBAIC0xODY3LDggKzIw
MjcsNyBAQCB2b2lkIENvbnRleHQ6OnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZChH
THNpemVpIG51bVBhdGhzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCiB7
Ci0gICAgY29uc3QgYXV0byAmcGF0aE9iamVjdHMgPQotICAgICAgICBHYXRoZXJQYXRocygqbVJl
c291cmNlTWFuYWdlciwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlKTsK
KyAgICBjb25zdCBhdXRvICZwYXRoT2JqZWN0cyA9IEdhdGhlclBhdGhzKCptU3RhdGUubVBhdGhz
LCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UpOwogCiAgICAgLy8gVE9E
TyhzdmFpc2FuZW5AbnZpZGlhLmNvbSk6IG1heWJlIHN5bmMgb25seSBzdGF0ZSByZXF1aXJlZCBm
b3IgcGF0aCByZW5kZXJpbmc/CiAgICAgc3luY1JlbmRlcmVyU3RhdGUoKTsKQEAgLTE4ODcsOCAr
MjA0Niw3IEBAIHZvaWQgQ29udGV4dDo6c3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5j
ZWQoR0xzaXplaSBudW1QYXRocywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZh
bHVlcykKIHsKLSAgICBjb25zdCBhdXRvICZwYXRoT2JqZWN0cyA9Ci0gICAgICAgIEdhdGhlclBh
dGhzKCptUmVzb3VyY2VNYW5hZ2VyLCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0
aEJhc2UpOworICAgIGNvbnN0IGF1dG8gJnBhdGhPYmplY3RzID0gR2F0aGVyUGF0aHMoKm1TdGF0
ZS5tUGF0aHMsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSk7CiAKICAg
ICAvLyBUT0RPKHN2YWlzYW5lbkBudmlkaWEuY29tKTogbWF5YmUgc3luYyBvbmx5IHN0YXRlIHJl
cXVpcmVkIGZvciBwYXRoIHJlbmRlcmluZz8KICAgICBzeW5jUmVuZGVyZXJTdGF0ZSgpOwpAQCAt
MTkxNSw2ICsyMDczLDIzIEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVBhdGhGcmFnbWVudElucHV0
R2VuKEdMdWludCBwcm9ncmFtLAogICAgIHByb2dyYW1PYmplY3QtPnBhdGhGcmFnbWVudElucHV0
R2VuKGxvY2F0aW9uLCBnZW5Nb2RlLCBjb21wb25lbnRzLCBjb2VmZnMpOwogfQogCitHTHVpbnQg
Q29udGV4dDo6Z2V0UHJvZ3JhbVJlc291cmNlSW5kZXgoR0x1aW50IHByb2dyYW0sIEdMZW51bSBw
cm9ncmFtSW50ZXJmYWNlLCBjb25zdCBHTGNoYXIgKm5hbWUpCit7CisgICAgY29uc3QgYXV0byAq
cHJvZ3JhbU9iamVjdCA9IGdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgcmV0dXJuIFF1ZXJ5UHJv
Z3JhbVJlc291cmNlSW5kZXgocHJvZ3JhbU9iamVjdCwgcHJvZ3JhbUludGVyZmFjZSwgbmFtZSk7
Cit9CisKK3ZvaWQgQ29udGV4dDo6Z2V0UHJvZ3JhbVJlc291cmNlTmFtZShHTHVpbnQgcHJvZ3Jh
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUlu
dGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm5hbWUpCit7Cisg
ICAgY29uc3QgYXV0byAqcHJvZ3JhbU9iamVjdCA9IGdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAg
UXVlcnlQcm9ncmFtUmVzb3VyY2VOYW1lKHByb2dyYW1PYmplY3QsIHByb2dyYW1JbnRlcmZhY2Us
IGluZGV4LCBidWZTaXplLCBsZW5ndGgsIG5hbWUpOworfQorCiB2b2lkIENvbnRleHQ6OmhhbmRs
ZUVycm9yKGNvbnN0IEVycm9yICZlcnJvcikKIHsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQpA
QCAtMjAyNSwxOSArMjIwMCwxNSBAQCBFR0xlbnVtIENvbnRleHQ6OmdldENsaWVudFR5cGUoKSBj
b25zdAogCiBFR0xlbnVtIENvbnRleHQ6OmdldFJlbmRlckJ1ZmZlcigpIGNvbnN0CiB7Ci0gICAg
YXV0byBmcmFtZWJ1ZmZlckl0ID0gbUZyYW1lYnVmZmVyTWFwLmZpbmQoMCk7Ci0gICAgaWYgKGZy
YW1lYnVmZmVySXQgIT0gbUZyYW1lYnVmZmVyTWFwLmVuZCgpKQotICAgIHsKLSAgICAgICAgY29u
c3QgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyICAgICAgICAgICAgICA9IGZyYW1lYnVmZmVySXQt
PnNlY29uZDsKLSAgICAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpiYWNrQXR0YWNo
bWVudCA9IGZyYW1lYnVmZmVyLT5nZXRBdHRhY2htZW50KEdMX0JBQ0spOwotCi0gICAgICAgIEFT
U0VSVChiYWNrQXR0YWNobWVudCAhPSBudWxscHRyKTsKLSAgICAgICAgcmV0dXJuIGJhY2tBdHRh
Y2htZW50LT5nZXRTdXJmYWNlKCktPmdldFJlbmRlckJ1ZmZlcigpOwotICAgIH0KLSAgICBlbHNl
CisgICAgY29uc3QgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbVN0YXRlLm1GcmFtZWJ1ZmZl
cnMtPmdldEZyYW1lYnVmZmVyKDApOworICAgIGlmIChmcmFtZWJ1ZmZlciA9PSBudWxscHRyKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIEVHTF9OT05FOwogICAgIH0KKworICAgIGNvbnN0IEZyYW1l
YnVmZmVyQXR0YWNobWVudCAqYmFja0F0dGFjaG1lbnQgPSBmcmFtZWJ1ZmZlci0+Z2V0QXR0YWNo
bWVudChHTF9CQUNLKTsKKyAgICBBU1NFUlQoYmFja0F0dGFjaG1lbnQgIT0gbnVsbHB0cik7Cisg
ICAgcmV0dXJuIGJhY2tBdHRhY2htZW50LT5nZXRTdXJmYWNlKCktPmdldFJlbmRlckJ1ZmZlcigp
OwogfQogCiBWZXJ0ZXhBcnJheSAqQ29udGV4dDo6Y2hlY2tWZXJ0ZXhBcnJheUFsbG9jYXRpb24o
R0x1aW50IHZlcnRleEFycmF5SGFuZGxlKQpAQCAtMjA0Niw3ICsyMjE3LDggQEAgVmVydGV4QXJy
YXkgKkNvbnRleHQ6OmNoZWNrVmVydGV4QXJyYXlBbGxvY2F0aW9uKEdMdWludCB2ZXJ0ZXhBcnJh
eUhhbmRsZSkKICAgICBWZXJ0ZXhBcnJheSAqdmVydGV4QXJyYXkgPSBnZXRWZXJ0ZXhBcnJheSh2
ZXJ0ZXhBcnJheUhhbmRsZSk7CiAgICAgaWYgKCF2ZXJ0ZXhBcnJheSkKICAgICB7Ci0gICAgICAg
IHZlcnRleEFycmF5ID0gbmV3IFZlcnRleEFycmF5KG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgdmVy
dGV4QXJyYXlIYW5kbGUsIE1BWF9WRVJURVhfQVRUUklCUyk7CisgICAgICAgIHZlcnRleEFycmF5
ID0gbmV3IFZlcnRleEFycmF5KG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgdmVydGV4QXJyYXlIYW5k
bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1DYXBzLm1heFZlcnRl
eEF0dHJpYnV0ZXMsIG1DYXBzLm1heFZlcnRleEF0dHJpYkJpbmRpbmdzKTsKIAogICAgICAgICBt
VmVydGV4QXJyYXlNYXBbdmVydGV4QXJyYXlIYW5kbGVdID0gdmVydGV4QXJyYXk7CiAgICAgfQpA
QCAtMjA2OSw0OCArMjI0MSw2IEBAIFRyYW5zZm9ybUZlZWRiYWNrICpDb250ZXh0OjpjaGVja1Ry
YW5zZm9ybUZlZWRiYWNrQWxsb2NhdGlvbihHTHVpbnQgdHJhbnNmb3JtRmVlCiAgICAgcmV0dXJu
IHRyYW5zZm9ybUZlZWRiYWNrOwogfQogCi1GcmFtZWJ1ZmZlciAqQ29udGV4dDo6Y2hlY2tGcmFt
ZWJ1ZmZlckFsbG9jYXRpb24oR0x1aW50IGZyYW1lYnVmZmVyKQotewotICAgIC8vIENhbiBiZSBj
YWxsZWQgZnJvbSBCaW5kIHdpdGhvdXQgYSBwcmlvciBjYWxsIHRvIEdlbi4KLSAgICBhdXRvIGZy
YW1lYnVmZmVySXQgPSBtRnJhbWVidWZmZXJNYXAuZmluZChmcmFtZWJ1ZmZlcik7Ci0gICAgYm9v
bCBuZXZlckNyZWF0ZWQgPSBmcmFtZWJ1ZmZlckl0ID09IG1GcmFtZWJ1ZmZlck1hcC5lbmQoKTsK
LSAgICBpZiAobmV2ZXJDcmVhdGVkIHx8IGZyYW1lYnVmZmVySXQtPnNlY29uZCA9PSBudWxscHRy
KQotICAgIHsKLSAgICAgICAgRnJhbWVidWZmZXIgKm5ld0ZCTyA9IG5ldyBGcmFtZWJ1ZmZlciht
Q2FwcywgbUltcGxlbWVudGF0aW9uLmdldCgpLCBmcmFtZWJ1ZmZlcik7Ci0gICAgICAgIGlmIChu
ZXZlckNyZWF0ZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1GcmFtZWJ1ZmZlckhhbmRsZUFs
bG9jYXRvci5yZXNlcnZlKGZyYW1lYnVmZmVyKTsKLSAgICAgICAgICAgIG1GcmFtZWJ1ZmZlck1h
cFtmcmFtZWJ1ZmZlcl0gPSBuZXdGQk87Ci0gICAgICAgICAgICByZXR1cm4gbmV3RkJPOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZnJhbWVidWZmZXJJdC0+c2Vjb25kID0gbmV3RkJPOwotICAgIH0K
LQotICAgIHJldHVybiBmcmFtZWJ1ZmZlckl0LT5zZWNvbmQ7Ci19Ci0KLWJvb2wgQ29udGV4dDo6
aXNUZXh0dXJlR2VuZXJhdGVkKEdMdWludCB0ZXh0dXJlKSBjb25zdAotewotICAgIHJldHVybiBt
UmVzb3VyY2VNYW5hZ2VyLT5pc1RleHR1cmVHZW5lcmF0ZWQodGV4dHVyZSk7Ci19Ci0KLWJvb2wg
Q29udGV4dDo6aXNCdWZmZXJHZW5lcmF0ZWQoR0x1aW50IGJ1ZmZlcikgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbVJlc291cmNlTWFuYWdlci0+aXNCdWZmZXJHZW5lcmF0ZWQoYnVmZmVyKTsKLX0KLQot
Ym9vbCBDb250ZXh0Ojppc1JlbmRlcmJ1ZmZlckdlbmVyYXRlZChHTHVpbnQgcmVuZGVyYnVmZmVy
KSBjb25zdAotewotICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5pc1JlbmRlcmJ1ZmZlckdl
bmVyYXRlZChyZW5kZXJidWZmZXIpOwotfQotCi1ib29sIENvbnRleHQ6OmlzRnJhbWVidWZmZXJH
ZW5lcmF0ZWQoR0x1aW50IGZyYW1lYnVmZmVyKSBjb25zdAotewotICAgIEFTU0VSVChtRnJhbWVi
dWZmZXJNYXAuZmluZCgwKSAhPSBtRnJhbWVidWZmZXJNYXAuZW5kKCkpOwotICAgIHJldHVybiBt
RnJhbWVidWZmZXJNYXAuZmluZChmcmFtZWJ1ZmZlcikgIT0gbUZyYW1lYnVmZmVyTWFwLmVuZCgp
OwotfQotCiBib29sIENvbnRleHQ6OmlzVmVydGV4QXJyYXlHZW5lcmF0ZWQoR0x1aW50IHZlcnRl
eEFycmF5KQogewogICAgIEFTU0VSVChtVmVydGV4QXJyYXlNYXAuZmluZCgwKSAhPSBtVmVydGV4
QXJyYXlNYXAuZW5kKCkpOwpAQCAtMjEyOSw3ICsyMjU5LDcgQEAgdm9pZCBDb250ZXh0OjpkZXRh
Y2hUZXh0dXJlKEdMdWludCB0ZXh0dXJlKQogICAgIC8vIGFsbG9jYXRpb24gbWFwIG1hbmFnZW1l
bnQgZWl0aGVyIGhlcmUgb3IgaW4gdGhlIHJlc291cmNlIG1hbmFnZXIgYXQgZGV0YWNoIHRpbWUu
CiAgICAgLy8gWmVybyB0ZXh0dXJlcyBhcmUgaGVsZCBieSB0aGUgQ29udGV4dCwgYW5kIHdlIGRv
bid0IGF0dGVtcHQgdG8gcmVxdWVzdCB0aGVtIGZyb20KICAgICAvLyB0aGUgU3RhdGUuCi0gICAg
bUdMU3RhdGUuZGV0YWNoVGV4dHVyZShtWmVyb1RleHR1cmVzLCB0ZXh0dXJlKTsKKyAgICBtR0xT
dGF0ZS5kZXRhY2hUZXh0dXJlKHRoaXMsIG1aZXJvVGV4dHVyZXMsIHRleHR1cmUpOwogfQogCiB2
b2lkIENvbnRleHQ6OmRldGFjaEJ1ZmZlcihHTHVpbnQgYnVmZmVyKQpAQCAtMjE2OCw3ICsyMjk4
LDcgQEAgdm9pZCBDb250ZXh0OjpkZXRhY2hGcmFtZWJ1ZmZlcihHTHVpbnQgZnJhbWVidWZmZXIp
CiAKIHZvaWQgQ29udGV4dDo6ZGV0YWNoUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIp
CiB7Ci0gICAgbUdMU3RhdGUuZGV0YWNoUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CisgICAg
bUdMU3RhdGUuZGV0YWNoUmVuZGVyYnVmZmVyKHRoaXMsIHJlbmRlcmJ1ZmZlcik7CiB9CiAKIHZv
aWQgQ29udGV4dDo6ZGV0YWNoVmVydGV4QXJyYXkoR0x1aW50IHZlcnRleEFycmF5KQpAQCAtMjIx
NCw1MiArMjM0NCw0OSBAQCB2b2lkIENvbnRleHQ6OnNldFZlcnRleEF0dHJpYkRpdmlzb3IoR0x1
aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcikKIHZvaWQgQ29udGV4dDo6c2FtcGxlclBhcmFtZXRl
cmkoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiB7CiAgICAgU2Ft
cGxlciAqc2FtcGxlck9iamVjdCA9Ci0gICAgICAgIG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrU2Ft
cGxlckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBzYW1wbGVyKTsKKyAgICAgICAg
bVN0YXRlLm1TYW1wbGVycy0+Y2hlY2tTYW1wbGVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24u
Z2V0KCksIHNhbXBsZXIpOwogICAgIFNldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXJPYmplY3Qs
IHBuYW1lLCBwYXJhbSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6c2FtcGxlclBhcmFtZXRlcml2KEdM
dWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbSkKIHsKICAgICBT
YW1wbGVyICpzYW1wbGVyT2JqZWN0ID0KLSAgICAgICAgbVJlc291cmNlTWFuYWdlci0+Y2hlY2tT
YW1wbGVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIHNhbXBsZXIpOworICAgICAg
ICBtU3RhdGUubVNhbXBsZXJzLT5jaGVja1NhbXBsZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlv
bi5nZXQoKSwgc2FtcGxlcik7CiAgICAgU2V0U2FtcGxlclBhcmFtZXRlcml2KHNhbXBsZXJPYmpl
Y3QsIHBuYW1lLCBwYXJhbSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6c2FtcGxlclBhcmFtZXRlcmYo
R0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKIHsKICAgICBTYW1w
bGVyICpzYW1wbGVyT2JqZWN0ID0KLSAgICAgICAgbVJlc291cmNlTWFuYWdlci0+Y2hlY2tTYW1w
bGVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIHNhbXBsZXIpOworICAgICAgICBt
U3RhdGUubVNhbXBsZXJzLT5jaGVja1NhbXBsZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlvbi5n
ZXQoKSwgc2FtcGxlcik7CiAgICAgU2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlck9iamVjdCwg
cG5hbWUsIHBhcmFtKTsKIH0KIAogdm9pZCBDb250ZXh0OjpzYW1wbGVyUGFyYW1ldGVyZnYoR0x1
aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW0pCiB7CiAgICAg
U2FtcGxlciAqc2FtcGxlck9iamVjdCA9Ci0gICAgICAgIG1SZXNvdXJjZU1hbmFnZXItPmNoZWNr
U2FtcGxlckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBzYW1wbGVyKTsKKyAgICAg
ICAgbVN0YXRlLm1TYW1wbGVycy0+Y2hlY2tTYW1wbGVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRp
b24uZ2V0KCksIHNhbXBsZXIpOwogICAgIFNldFNhbXBsZXJQYXJhbWV0ZXJmdihzYW1wbGVyT2Jq
ZWN0LCBwbmFtZSwgcGFyYW0pOwogfQogCiB2b2lkIENvbnRleHQ6OmdldFNhbXBsZXJQYXJhbWV0
ZXJpdihHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogewogICAg
IGNvbnN0IFNhbXBsZXIgKnNhbXBsZXJPYmplY3QgPQotICAgICAgICBtUmVzb3VyY2VNYW5hZ2Vy
LT5jaGVja1NhbXBsZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgc2FtcGxlcik7
CisgICAgICAgIG1TdGF0ZS5tU2FtcGxlcnMtPmNoZWNrU2FtcGxlckFsbG9jYXRpb24obUltcGxl
bWVudGF0aW9uLmdldCgpLCBzYW1wbGVyKTsKICAgICBRdWVyeVNhbXBsZXJQYXJhbWV0ZXJpdihz
YW1wbGVyT2JqZWN0LCBwbmFtZSwgcGFyYW1zKTsKIH0KIAogdm9pZCBDb250ZXh0OjpnZXRTYW1w
bGVyUGFyYW1ldGVyZnYoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFy
YW1zKQogewogICAgIGNvbnN0IFNhbXBsZXIgKnNhbXBsZXJPYmplY3QgPQotICAgICAgICBtUmVz
b3VyY2VNYW5hZ2VyLT5jaGVja1NhbXBsZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlvbi5nZXQo
KSwgc2FtcGxlcik7CisgICAgICAgIG1TdGF0ZS5tU2FtcGxlcnMtPmNoZWNrU2FtcGxlckFsbG9j
YXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBzYW1wbGVyKTsKICAgICBRdWVyeVNhbXBsZXJQ
YXJhbWV0ZXJmdihzYW1wbGVyT2JqZWN0LCBwbmFtZSwgcGFyYW1zKTsKIH0KIAogdm9pZCBDb250
ZXh0Ojpwcm9ncmFtUGFyYW1ldGVyaShHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGlu
dCB2YWx1ZSkKIHsKICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGdldFByb2dyYW0o
cHJvZ3JhbSk7Ci0gICAgQVNTRVJUKHByb2dyYW1PYmplY3QgIT0gbnVsbHB0cik7Ci0KLSAgICBB
U1NFUlQocG5hbWUgPT0gR0xfUFJPR1JBTV9CSU5BUllfUkVUUklFVkFCTEVfSElOVCk7Ci0gICAg
cHJvZ3JhbU9iamVjdC0+c2V0QmluYXJ5UmV0cmlldmFibGVIaW50KHZhbHVlICE9IEdMX0ZBTFNF
KTsKKyAgICBTZXRQcm9ncmFtUGFyYW1ldGVyaShwcm9ncmFtT2JqZWN0LCBwbmFtZSwgdmFsdWUp
OwogfQogCiB2b2lkIENvbnRleHQ6OmluaXRSZW5kZXJlclN0cmluZygpCkBAIC0yMjcyLDMyICsy
Mzk5LDk2IEBAIHZvaWQgQ29udGV4dDo6aW5pdFJlbmRlcmVyU3RyaW5nKCkKICAgICBtUmVuZGVy
ZXJTdHJpbmcgPSBNYWtlU3RhdGljU3RyaW5nKHJlbmRlcmVyU3RyaW5nLnN0cigpKTsKIH0KIAot
Y29uc3QgY2hhciAqQ29udGV4dDo6Z2V0UmVuZGVyZXJTdHJpbmcoKSBjb25zdAordm9pZCBDb250
ZXh0Ojppbml0VmVyc2lvblN0cmluZ3MoKQogewotICAgIHJldHVybiBtUmVuZGVyZXJTdHJpbmc7
CisgICAgY29uc3QgVmVyc2lvbiAmY2xpZW50VmVyc2lvbiA9IGdldENsaWVudFZlcnNpb24oKTsK
KworICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSB2ZXJzaW9uU3RyaW5nOworICAgIHZlcnNpb25TdHJp
bmcgPDwgIk9wZW5HTCBFUyAiIDw8IGNsaWVudFZlcnNpb24ubWFqb3IgPDwgIi4iIDw8IGNsaWVu
dFZlcnNpb24ubWlub3IgPDwgIiAoQU5HTEUgIgorICAgICAgICAgICAgICAgICAgPDwgQU5HTEVf
VkVSU0lPTl9TVFJJTkcgPDwgIikiOworICAgIG1WZXJzaW9uU3RyaW5nID0gTWFrZVN0YXRpY1N0
cmluZyh2ZXJzaW9uU3RyaW5nLnN0cigpKTsKKworICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBzaGFk
aW5nTGFuZ3VhZ2VWZXJzaW9uU3RyaW5nOworICAgIHNoYWRpbmdMYW5ndWFnZVZlcnNpb25TdHJp
bmcgPDwgIk9wZW5HTCBFUyBHTFNMIEVTICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8IChjbGllbnRWZXJzaW9uLm1ham9yID09IDIgPyAxIDogY2xpZW50VmVyc2lvbi5tYWpv
cikgPDwgIi4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBjbGllbnRWZXJz
aW9uLm1pbm9yIDw8ICIwIChBTkdMRSAiIDw8IEFOR0xFX1ZFUlNJT05fU1RSSU5HCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiKSI7CisgICAgbVNoYWRpbmdMYW5ndWFnZVN0
cmluZyA9IE1ha2VTdGF0aWNTdHJpbmcoc2hhZGluZ0xhbmd1YWdlVmVyc2lvblN0cmluZy5zdHIo
KSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6aW5pdEV4dGVuc2lvblN0cmluZ3MoKQogeworICAgIGF1
dG8gbWVyZ2VFeHRlbnNpb25TdHJpbmdzID0gW10oY29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3QgY2hh
ciAqPiAmc3RyaW5ncykgeworICAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gY29tYmluZWRTdHJp
bmdTdHJlYW07CisgICAgICAgIHN0ZDo6Y29weShzdHJpbmdzLmJlZ2luKCksIHN0cmluZ3MuZW5k
KCksCisgICAgICAgICAgICAgICAgICBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8Y29uc3QgY2hhciAq
Pihjb21iaW5lZFN0cmluZ1N0cmVhbSwgIiAiKSk7CisgICAgICAgIHJldHVybiBNYWtlU3RhdGlj
U3RyaW5nKGNvbWJpbmVkU3RyaW5nU3RyZWFtLnN0cigpKTsKKyAgICB9OworCisgICAgbUV4dGVu
c2lvblN0cmluZ3MuY2xlYXIoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8gJmV4dGVuc2lvblN0cmlu
ZyA6IG1FeHRlbnNpb25zLmdldFN0cmluZ3MoKSkKICAgICB7CiAgICAgICAgIG1FeHRlbnNpb25T
dHJpbmdzLnB1c2hfYmFjayhNYWtlU3RhdGljU3RyaW5nKGV4dGVuc2lvblN0cmluZykpOwogICAg
IH0KKyAgICBtRXh0ZW5zaW9uU3RyaW5nID0gbWVyZ2VFeHRlbnNpb25TdHJpbmdzKG1FeHRlbnNp
b25TdHJpbmdzKTsKKworICAgIGNvbnN0IGdsOjpFeHRlbnNpb25zICZuYXRpdmVFeHRlbnNpb25z
ID0gbUltcGxlbWVudGF0aW9uLT5nZXROYXRpdmVFeHRlbnNpb25zKCk7CiAKLSAgICBzdGQ6Om9z
dHJpbmdzdHJlYW0gY29tYmluZWRTdHJpbmdTdHJlYW07Ci0gICAgc3RkOjpjb3B5KG1FeHRlbnNp
b25TdHJpbmdzLmJlZ2luKCksIG1FeHRlbnNpb25TdHJpbmdzLmVuZCgpLAotICAgICAgICAgICAg
ICBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8Y29uc3QgY2hhciAqPihjb21iaW5lZFN0cmluZ1N0cmVh
bSwgIiAiKSk7Ci0gICAgbUV4dGVuc2lvblN0cmluZyA9IE1ha2VTdGF0aWNTdHJpbmcoY29tYmlu
ZWRTdHJpbmdTdHJlYW0uc3RyKCkpOworICAgIG1SZXF1ZXN0YWJsZUV4dGVuc2lvblN0cmluZ3Mu
Y2xlYXIoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJmV4dGVuc2lvbkluZm8gOiBHZXRFeHRlbnNp
b25JbmZvTWFwKCkpCisgICAgeworICAgICAgICBpZiAoZXh0ZW5zaW9uSW5mby5zZWNvbmQuUmVx
dWVzdGFibGUgJiYKKyAgICAgICAgICAgICEobUV4dGVuc2lvbnMuKihleHRlbnNpb25JbmZvLnNl
Y29uZC5FeHRlbnNpb25zTWVtYmVyKSkgJiYKKyAgICAgICAgICAgIG5hdGl2ZUV4dGVuc2lvbnMu
KihleHRlbnNpb25JbmZvLnNlY29uZC5FeHRlbnNpb25zTWVtYmVyKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgbVJlcXVlc3RhYmxlRXh0ZW5zaW9uU3RyaW5ncy5wdXNoX2JhY2soTWFrZVN0YXRp
Y1N0cmluZyhleHRlbnNpb25JbmZvLmZpcnN0KSk7CisgICAgICAgIH0KKyAgICB9CisgICAgbVJl
cXVlc3RhYmxlRXh0ZW5zaW9uU3RyaW5nID0gbWVyZ2VFeHRlbnNpb25TdHJpbmdzKG1SZXF1ZXN0
YWJsZUV4dGVuc2lvblN0cmluZ3MpOwogfQogCi1jb25zdCBjaGFyICpDb250ZXh0OjpnZXRFeHRl
bnNpb25TdHJpbmcoKSBjb25zdAorY29uc3QgR0x1Ynl0ZSAqQ29udGV4dDo6Z2V0U3RyaW5nKEdM
ZW51bSBuYW1lKSBjb25zdAogewotICAgIHJldHVybiBtRXh0ZW5zaW9uU3RyaW5nOworICAgIHN3
aXRjaCAobmFtZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVkVORE9SOgorICAgICAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSAqPigiR29vZ2xlIEluYy4iKTsK
KworICAgICAgICBjYXNlIEdMX1JFTkRFUkVSOgorICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSAqPihtUmVuZGVyZXJTdHJpbmcpOworCisgICAgICAgIGNh
c2UgR0xfVkVSU0lPTjoKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0
IEdMdWJ5dGUgKj4obVZlcnNpb25TdHJpbmcpOworCisgICAgICAgIGNhc2UgR0xfU0hBRElOR19M
QU5HVUFHRV9WRVJTSU9OOgorICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0x1Ynl0ZSAqPihtU2hhZGluZ0xhbmd1YWdlU3RyaW5nKTsKKworICAgICAgICBjYXNlIEdM
X0VYVEVOU0lPTlM6CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBH
THVieXRlICo+KG1FeHRlbnNpb25TdHJpbmcpOworCisgICAgICAgIGNhc2UgR0xfUkVRVUVTVEFC
TEVfRVhURU5TSU9OU19BTkdMRToKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IEdMdWJ5dGUgKj4obVJlcXVlc3RhYmxlRXh0ZW5zaW9uU3RyaW5nKTsKKworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KIH0KIAotY29uc3QgY2hhciAqQ29udGV4dDo6Z2V0RXh0ZW5zaW9u
U3RyaW5nKHNpemVfdCBpZHgpIGNvbnN0Citjb25zdCBHTHVieXRlICpDb250ZXh0OjpnZXRTdHJp
bmdpKEdMZW51bSBuYW1lLCBHTHVpbnQgaW5kZXgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1FeHRl
bnNpb25TdHJpbmdzW2lkeF07CisgICAgc3dpdGNoIChuYW1lKQorICAgIHsKKyAgICAgICAgY2Fz
ZSBHTF9FWFRFTlNJT05TOgorICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgR0x1Ynl0ZSAqPihtRXh0ZW5zaW9uU3RyaW5nc1tpbmRleF0pOworCisgICAgICAgIGNhc2Ug
R0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRToKKyAgICAgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUgKj4obVJlcXVlc3RhYmxlRXh0ZW5zaW9uU3RyaW5n
c1tpbmRleF0pOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogfQogCiBzaXplX3QgQ29udGV4
dDo6Z2V0RXh0ZW5zaW9uU3RyaW5nQ291bnQoKSBjb25zdApAQCAtMjMwNSwxMyArMjQ5Niw1MCBA
QCBzaXplX3QgQ29udGV4dDo6Z2V0RXh0ZW5zaW9uU3RyaW5nQ291bnQoKSBjb25zdAogICAgIHJl
dHVybiBtRXh0ZW5zaW9uU3RyaW5ncy5zaXplKCk7CiB9CiAKK3ZvaWQgQ29udGV4dDo6cmVxdWVz
dEV4dGVuc2lvbihjb25zdCBjaGFyICpuYW1lKQoreworICAgIGNvbnN0IEV4dGVuc2lvbkluZm9N
YXAgJmV4dGVuc2lvbkluZm9zID0gR2V0RXh0ZW5zaW9uSW5mb01hcCgpOworICAgIEFTU0VSVChl
eHRlbnNpb25JbmZvcy5maW5kKG5hbWUpICE9IGV4dGVuc2lvbkluZm9zLmVuZCgpKTsKKyAgICBj
b25zdCBhdXRvICZleHRlbnNpb24gPSBleHRlbnNpb25JbmZvcy5hdChuYW1lKTsKKyAgICBBU1NF
UlQoZXh0ZW5zaW9uLlJlcXVlc3RhYmxlKTsKKworICAgIGlmIChtRXh0ZW5zaW9ucy4qKGV4dGVu
c2lvbi5FeHRlbnNpb25zTWVtYmVyKSkKKyAgICB7CisgICAgICAgIC8vIEV4dGVuc2lvbiBhbHJl
YWR5IGVuYWJsZWQKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1FeHRlbnNpb25zLioo
ZXh0ZW5zaW9uLkV4dGVuc2lvbnNNZW1iZXIpID0gdHJ1ZTsKKyAgICB1cGRhdGVDYXBzKCk7Cisg
ICAgaW5pdEV4dGVuc2lvblN0cmluZ3MoKTsKKworICAgIC8vIFJlLWNyZWF0ZSB0aGUgY29tcGls
ZXIgd2l0aCB0aGUgcmVxdWVzdGVkIGV4dGVuc2lvbnMgZW5hYmxlZC4KKyAgICBTYWZlRGVsZXRl
KG1Db21waWxlcik7CisgICAgbUNvbXBpbGVyID0gbmV3IENvbXBpbGVyKG1JbXBsZW1lbnRhdGlv
bi5nZXQoKSwgbVN0YXRlKTsKKworICAgIC8vIEludmFsaWRhdGUgYWxsIGNhY2hlZCBjb21wbGV0
ZW5lc3NlcyBmb3IgdGV4dHVyZXMgYW5kIGZyYW1lYnVmZmVyLiBTb21lIGV4dGVuc2lvbnMgbWFr
ZSBuZXcKKyAgICAvLyBmb3JtYXRzIHJlbmRlcmFibGUgb3Igc2FtcGxlYWJsZS4KKyAgICBtU3Rh
dGUubVRleHR1cmVzLT5pbnZhbGlkYXRlVGV4dHVyZUNvbXBsZW5lc3NDYWNoZSgpOworICAgIGZv
ciAoYXV0byAmemVyb1RleHR1cmUgOiBtWmVyb1RleHR1cmVzKQorICAgIHsKKyAgICAgICAgemVy
b1RleHR1cmUuc2Vjb25kLT5pbnZhbGlkYXRlQ29tcGxldGVuZXNzQ2FjaGUoKTsKKyAgICB9CisK
KyAgICBtU3RhdGUubUZyYW1lYnVmZmVycy0+aW52YWxpZGF0ZUZyYW1lYnVmZmVyQ29tcGxlbmVz
c0NhY2hlKCk7Cit9CisKK3NpemVfdCBDb250ZXh0OjpnZXRSZXF1ZXN0YWJsZUV4dGVuc2lvblN0
cmluZ0NvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJlcXVlc3RhYmxlRXh0ZW5zaW9uU3Ry
aW5ncy5zaXplKCk7Cit9CisKIHZvaWQgQ29udGV4dDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhH
TGVudW0gcHJpbWl0aXZlTW9kZSkKIHsKICAgICBUcmFuc2Zvcm1GZWVkYmFjayAqdHJhbnNmb3Jt
RmVlZGJhY2sgPSBtR0xTdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKTsKICAgICBB
U1NFUlQodHJhbnNmb3JtRmVlZGJhY2sgIT0gbnVsbHB0cik7CiAgICAgQVNTRVJUKCF0cmFuc2Zv
cm1GZWVkYmFjay0+aXNQYXVzZWQoKSk7CiAKLSAgICB0cmFuc2Zvcm1GZWVkYmFjay0+YmVnaW4o
cHJpbWl0aXZlTW9kZSwgbUdMU3RhdGUuZ2V0UHJvZ3JhbSgpKTsKKyAgICB0cmFuc2Zvcm1GZWVk
YmFjay0+YmVnaW4odGhpcywgcHJpbWl0aXZlTW9kZSwgbUdMU3RhdGUuZ2V0UHJvZ3JhbSgpKTsK
IH0KIAogYm9vbCBDb250ZXh0OjpoYXNBY3RpdmVUcmFuc2Zvcm1GZWVkYmFjayhHTHVpbnQgcHJv
Z3JhbSkgY29uc3QKQEAgLTIzMjYsNyArMjU1NCw3IEBAIGJvb2wgQ29udGV4dDo6aGFzQWN0aXZl
VHJhbnNmb3JtRmVlZGJhY2soR0x1aW50IHByb2dyYW0pIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIENvbnRleHQ6OmluaXRDYXBzKGJvb2wgd2ViR0xDb250ZXh0KQordm9pZCBD
b250ZXh0Ojppbml0Q2Fwcyhjb25zdCBlZ2w6OkRpc3BsYXlFeHRlbnNpb25zICZkaXNwbGF5RXh0
ZW5zaW9ucykKIHsKICAgICBtQ2FwcyA9IG1JbXBsZW1lbnRhdGlvbi0+Z2V0TmF0aXZlQ2Fwcygp
OwogCkBAIC0yMzM0LDcgKzI1NjIsNyBAQCB2b2lkIENvbnRleHQ6OmluaXRDYXBzKGJvb2wgd2Vi
R0xDb250ZXh0KQogCiAgICAgbUxpbWl0YXRpb25zID0gbUltcGxlbWVudGF0aW9uLT5nZXROYXRp
dmVMaW1pdGF0aW9ucygpOwogCi0gICAgaWYgKG1DbGllbnRNYWpvclZlcnNpb24gPCAzKQorICAg
IGlmIChnZXRDbGllbnRWZXJzaW9uKCkgPCBWZXJzaW9uKDMsIDApKQogICAgIHsKICAgICAgICAg
Ly8gRGlzYWJsZSBFUzMrIGV4dGVuc2lvbnMKICAgICAgICAgbUV4dGVuc2lvbnMuY29sb3JCdWZm
ZXJGbG9hdCA9IGZhbHNlOwpAQCAtMjM0Miw3ICsyNTcwLDcgQEAgdm9pZCBDb250ZXh0Ojppbml0
Q2Fwcyhib29sIHdlYkdMQ29udGV4dCkKICAgICAgICAgbUV4dGVuc2lvbnMudGV4dHVyZU5vcm0x
NiAgICAgICAgID0gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKG1DbGllbnRNYWpvclZlcnNpb24g
PiAyKQorICAgIGlmIChnZXRDbGllbnRWZXJzaW9uKCkgPiBWZXJzaW9uKDIsIDApKQogICAgIHsK
ICAgICAgICAgLy8gRklYTUUoZ2VvZmZsYW5nKTogRG9uJ3Qgc3VwcG9ydCBFWFRfc1JHQiBpbiBu
b24tRVMyIGNvbnRleHRzCiAgICAgICAgIC8vbUV4dGVuc2lvbnMuc1JHQiA9IGZhbHNlOwpAQCAt
MjM1MiwxMCArMjU4MCwxNSBAQCB2b2lkIENvbnRleHQ6OmluaXRDYXBzKGJvb2wgd2ViR0xDb250
ZXh0KQogICAgIG1FeHRlbnNpb25zLmJpbmRVbmlmb3JtTG9jYXRpb24gPSB0cnVlOwogICAgIG1F
eHRlbnNpb25zLnZlcnRleEFycmF5T2JqZWN0ICAgPSB0cnVlOwogICAgIG1FeHRlbnNpb25zLmJp
bmRHZW5lcmF0ZXNSZXNvdXJjZSA9IHRydWU7CisgICAgbUV4dGVuc2lvbnMuY2xpZW50QXJyYXlz
ICAgICAgICAgID0gdHJ1ZTsKKyAgICBtRXh0ZW5zaW9ucy5yZXF1ZXN0RXh0ZW5zaW9uICAgICAg
PSB0cnVlOwogCiAgICAgLy8gRW5hYmxlIHRoZSBubyBlcnJvciBleHRlbnNpb24gaWYgdGhlIGNv
bnRleHQgd2FzIGNyZWF0ZWQgd2l0aCB0aGUgZmxhZy4KICAgICBtRXh0ZW5zaW9ucy5ub0Vycm9y
ID0gbVNraXBWYWxpZGF0aW9uOwogCisgICAgLy8gRW5hYmxlIHN1cmZhY2VsZXNzIHRvIGFkdmVy
dGlzZSB3ZSdsbCBoYXZlIHRoZSBjb3JyZWN0IGJlaGF2aW9yIHdoZW4gdGhlcmUgaXMgbm8gZGVm
YXVsdCBGQk8KKyAgICBtRXh0ZW5zaW9ucy5zdXJmYWNlbGVzc0NvbnRleHQgPSBkaXNwbGF5RXh0
ZW5zaW9ucy5zdXJmYWNlbGVzc0NvbnRleHQ7CisKICAgICAvLyBFeHBsaWNpdGx5IGVuYWJsZSBH
TF9LSFJfZGVidWcKICAgICBtRXh0ZW5zaW9ucy5kZWJ1ZyAgICAgICAgICAgICAgICAgICA9IHRy
dWU7CiAgICAgbUV4dGVuc2lvbnMubWF4RGVidWdNZXNzYWdlTGVuZ3RoICAgPSAxMDI0OwpAQCAt
MjM2NiwxOSArMjU5OSwyOCBAQCB2b2lkIENvbnRleHQ6OmluaXRDYXBzKGJvb2wgd2ViR0xDb250
ZXh0KQogICAgIC8vIEV4cGxpY2l0bHkgZW5hYmxlIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVt
b3J5CiAgICAgbUV4dGVuc2lvbnMucm9idXN0Q2xpZW50TWVtb3J5ID0gdHJ1ZTsKIAorICAgIC8v
IERldGVybWluZSByb2J1c3QgcmVzb3VyY2UgaW5pdCBhdmFpbGFiaWxpdHkgZnJvbSBFR0wuCisg
ICAgbUV4dGVuc2lvbnMucm9idXN0UmVzb3VyY2VJbml0aWFsaXphdGlvbiA9CisgICAgICAgIGRp
c3BsYXlFeHRlbnNpb25zLmNyZWF0ZUNvbnRleHRSb2J1c3RSZXNvdXJjZUluaXRpYWxpemF0aW9u
OworCiAgICAgLy8gQXBwbHkgaW1wbGVtZW50YXRpb24gbGltaXRzCiAgICAgbUNhcHMubWF4VmVy
dGV4QXR0cmlidXRlcyA9IHN0ZDo6bWluPEdMdWludD4obUNhcHMubWF4VmVydGV4QXR0cmlidXRl
cywgTUFYX1ZFUlRFWF9BVFRSSUJTKTsKKyAgICBtQ2Fwcy5tYXhWZXJ0ZXhBdHRyaWJCaW5kaW5n
cyA9CisgICAgICAgIGdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMQorICAgICAgICAgICAgPyBt
Q2Fwcy5tYXhWZXJ0ZXhBdHRyaWJ1dGVzCisgICAgICAgICAgICA6IHN0ZDo6bWluPEdMdWludD4o
bUNhcHMubWF4VmVydGV4QXR0cmliQmluZGluZ3MsIE1BWF9WRVJURVhfQVRUUklCX0JJTkRJTkdT
KTsKKwogICAgIG1DYXBzLm1heFZlcnRleFVuaWZvcm1CbG9ja3MgPSBzdGQ6Om1pbjxHTHVpbnQ+
KG1DYXBzLm1heFZlcnRleFVuaWZvcm1CbG9ja3MsIElNUExFTUVOVEFUSU9OX01BWF9WRVJURVhf
U0hBREVSX1VOSUZPUk1fQlVGRkVSUyk7CiAgICAgbUNhcHMubWF4VmVydGV4T3V0cHV0Q29tcG9u
ZW50cyA9IHN0ZDo6bWluPEdMdWludD4obUNhcHMubWF4VmVydGV4T3V0cHV0Q29tcG9uZW50cywg
SU1QTEVNRU5UQVRJT05fTUFYX1ZBUllJTkdfVkVDVE9SUyAqIDQpOwogCiAgICAgbUNhcHMubWF4
RnJhZ21lbnRJbnB1dENvbXBvbmVudHMgPSBzdGQ6Om1pbjxHTHVpbnQ+KG1DYXBzLm1heEZyYWdt
ZW50SW5wdXRDb21wb25lbnRzLCBJTVBMRU1FTlRBVElPTl9NQVhfVkFSWUlOR19WRUNUT1JTICog
NCk7CiAKICAgICAvLyBXZWJHTCBjb21wYXRpYmlsaXR5Ci0gICAgbUV4dGVuc2lvbnMud2ViZ2xD
b21wYXRpYmlsaXR5ID0gd2ViR0xDb250ZXh0OworICAgIG1FeHRlbnNpb25zLndlYmdsQ29tcGF0
aWJpbGl0eSA9IG1XZWJHTENvbnRleHQ7CiAgICAgZm9yIChjb25zdCBhdXRvICZleHRlbnNpb25J
bmZvIDogR2V0RXh0ZW5zaW9uSW5mb01hcCgpKQogICAgIHsKICAgICAgICAgLy8gSWYgdGhpcyBj
b250ZXh0IGlzIGZvciBXZWJHTCwgZGlzYWJsZSBhbGwgZW5hYmxlYWJsZSBleHRlbnNpb25zCi0g
ICAgICAgIGlmICh3ZWJHTENvbnRleHQgJiYgZXh0ZW5zaW9uSW5mby5zZWNvbmQuRW5hYmxlYWJs
ZSkKKyAgICAgICAgaWYgKG1XZWJHTENvbnRleHQgJiYgZXh0ZW5zaW9uSW5mby5zZWNvbmQuUmVx
dWVzdGFibGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1FeHRlbnNpb25zLiooZXh0ZW5zaW9u
SW5mby5zZWNvbmQuRXh0ZW5zaW9uc01lbWJlcikgPSBmYWxzZTsKICAgICAgICAgfQpAQCAtMjM5
MywxMSArMjYzNSwxMCBAQCB2b2lkIENvbnRleHQ6OnVwZGF0ZUNhcHMoKQogICAgIG1DYXBzLmNv
bXByZXNzZWRUZXh0dXJlRm9ybWF0cy5jbGVhcigpOwogICAgIG1UZXh0dXJlQ2Fwcy5jbGVhcigp
OwogCi0gICAgY29uc3QgVGV4dHVyZUNhcHNNYXAgJnJlbmRlcmVyRm9ybWF0cyA9IG1JbXBsZW1l
bnRhdGlvbi0+Z2V0TmF0aXZlVGV4dHVyZUNhcHMoKTsKLSAgICBmb3IgKFRleHR1cmVDYXBzTWFw
Ojpjb25zdF9pdGVyYXRvciBpID0gcmVuZGVyZXJGb3JtYXRzLmJlZ2luKCk7IGkgIT0gcmVuZGVy
ZXJGb3JtYXRzLmVuZCgpOyBpKyspCisgICAgZm9yIChhdXRvIGNhcHNJdCA6IG1JbXBsZW1lbnRh
dGlvbi0+Z2V0TmF0aXZlVGV4dHVyZUNhcHMoKSkKICAgICB7Ci0gICAgICAgIEdMZW51bSBmb3Jt
YXQgPSBpLT5maXJzdDsKLSAgICAgICAgVGV4dHVyZUNhcHMgZm9ybWF0Q2FwcyA9IGktPnNlY29u
ZDsKKyAgICAgICAgR0xlbnVtIGZvcm1hdCAgICAgICAgICA9IGNhcHNJdC5maXJzdDsKKyAgICAg
ICAgVGV4dHVyZUNhcHMgZm9ybWF0Q2FwcyA9IGNhcHNJdC5zZWNvbmQ7CiAKICAgICAgICAgY29u
c3QgSW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8oZm9y
bWF0KTsKIApAQCAtMjQwNSwxNCArMjY0NiwxNyBAQCB2b2lkIENvbnRleHQ6OnVwZGF0ZUNhcHMo
KQogICAgICAgICAvLyBDYXBzIGFyZSBBTkQnZCB3aXRoIHRoZSByZW5kZXJlciBjYXBzIGJlY2F1
c2Ugc29tZSBjb3JlIGZvcm1hdHMgYXJlIHN0aWxsIHVuc3VwcG9ydGVkIGluCiAgICAgICAgIC8v
IEVTMy4KICAgICAgICAgZm9ybWF0Q2Fwcy50ZXh0dXJhYmxlID0KLSAgICAgICAgICAgIGZvcm1h
dENhcHMudGV4dHVyYWJsZSAmJiBmb3JtYXRJbmZvLnRleHR1cmVTdXBwb3J0KG1DbGllbnRNYWpv
clZlcnNpb24sIG1FeHRlbnNpb25zKTsKKyAgICAgICAgICAgIGZvcm1hdENhcHMudGV4dHVyYWJs
ZSAmJiBmb3JtYXRJbmZvLnRleHR1cmVTdXBwb3J0KGdldENsaWVudFZlcnNpb24oKSwgbUV4dGVu
c2lvbnMpOwogICAgICAgICBmb3JtYXRDYXBzLnJlbmRlcmFibGUgPQotICAgICAgICAgICAgZm9y
bWF0Q2Fwcy5yZW5kZXJhYmxlICYmIGZvcm1hdEluZm8ucmVuZGVyU3VwcG9ydChtQ2xpZW50TWFq
b3JWZXJzaW9uLCBtRXh0ZW5zaW9ucyk7CisgICAgICAgICAgICBmb3JtYXRDYXBzLnJlbmRlcmFi
bGUgJiYgZm9ybWF0SW5mby5yZW5kZXJTdXBwb3J0KGdldENsaWVudFZlcnNpb24oKSwgbUV4dGVu
c2lvbnMpOwogICAgICAgICBmb3JtYXRDYXBzLmZpbHRlcmFibGUgPQotICAgICAgICAgICAgZm9y
bWF0Q2Fwcy5maWx0ZXJhYmxlICYmIGZvcm1hdEluZm8uZmlsdGVyU3VwcG9ydChtQ2xpZW50TWFq
b3JWZXJzaW9uLCBtRXh0ZW5zaW9ucyk7CisgICAgICAgICAgICBmb3JtYXRDYXBzLmZpbHRlcmFi
bGUgJiYgZm9ybWF0SW5mby5maWx0ZXJTdXBwb3J0KGdldENsaWVudFZlcnNpb24oKSwgbUV4dGVu
c2lvbnMpOwogCi0gICAgICAgIC8vIE9wZW5HTCBFUyBkb2VzIG5vdCBzdXBwb3J0IG11bHRpc2Ft
cGxpbmcgd2l0aCBpbnRlZ2VyIGZvcm1hdHMKLSAgICAgICAgaWYgKCFmb3JtYXRJbmZvLnJlbmRl
clN1cHBvcnQgfHwgZm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX0lOVCB8fCBmb3JtYXRJ
bmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfVU5TSUdORURfSU5UKQorICAgICAgICAvLyBPcGVuR0wg
RVMgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXNhbXBsaW5nIHdpdGggbm9uLXJlbmRlcmVyYWJsZSBm
b3JtYXRzCisgICAgICAgIC8vIE9wZW5HTCBFUyAzLjAgb3IgcHJpb3IgZG9lcyBub3Qgc3VwcG9y
dCBtdWx0aXNhbXBsaW5nIHdpdGggaW50ZWdlciBmb3JtYXRzCisgICAgICAgIGlmICghZm9ybWF0
SW5mby5yZW5kZXJTdXBwb3J0IHx8CisgICAgICAgICAgICAoZ2V0Q2xpZW50VmVyc2lvbigpIDwg
RVNfM18xICYmCisgICAgICAgICAgICAgKGZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9J
TlQgfHwgZm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX1VOU0lHTkVEX0lOVCkpKQogICAg
ICAgICB7CiAgICAgICAgICAgICBmb3JtYXRDYXBzLnNhbXBsZUNvdW50cy5jbGVhcigpOwogICAg
ICAgICB9CkBAIC0yNDM2LDE5ICsyNjgwLDE4IEBAIHZvaWQgQ29udGV4dDo6aW5pdFdvcmthcm91
bmRzKCkKIHZvaWQgQ29udGV4dDo6c3luY1JlbmRlcmVyU3RhdGUoKQogewogICAgIGNvbnN0IFN0
YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cyA9IG1HTFN0YXRlLmdldERpcnR5Qml0cygpOwotICAg
IG1JbXBsZW1lbnRhdGlvbi0+c3luY1N0YXRlKG1HTFN0YXRlLCBkaXJ0eUJpdHMpOworICAgIG1J
bXBsZW1lbnRhdGlvbi0+c3luY1N0YXRlKGRpcnR5Qml0cyk7CiAgICAgbUdMU3RhdGUuY2xlYXJE
aXJ0eUJpdHMoKTsKLSAgICBtR0xTdGF0ZS5zeW5jRGlydHlPYmplY3RzKCk7CisgICAgbUdMU3Rh
dGUuc3luY0RpcnR5T2JqZWN0cyh0aGlzKTsKIH0KIAogdm9pZCBDb250ZXh0OjpzeW5jUmVuZGVy
ZXJTdGF0ZShjb25zdCBTdGF0ZTo6RGlydHlCaXRzICZiaXRNYXNrLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBTdGF0ZTo6RGlydHlPYmplY3RzICZvYmplY3RNYXNrKQog
ewogICAgIGNvbnN0IFN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cyA9IChtR0xTdGF0ZS5nZXRE
aXJ0eUJpdHMoKSAmIGJpdE1hc2spOwotICAgIG1JbXBsZW1lbnRhdGlvbi0+c3luY1N0YXRlKG1H
TFN0YXRlLCBkaXJ0eUJpdHMpOworICAgIG1JbXBsZW1lbnRhdGlvbi0+c3luY1N0YXRlKGRpcnR5
Qml0cyk7CiAgICAgbUdMU3RhdGUuY2xlYXJEaXJ0eUJpdHMoZGlydHlCaXRzKTsKLQotICAgIG1H
TFN0YXRlLnN5bmNEaXJ0eU9iamVjdHMob2JqZWN0TWFzayk7CisgICAgbUdMU3RhdGUuc3luY0Rp
cnR5T2JqZWN0cyh0aGlzLCBvYmplY3RNYXNrKTsKIH0KIAogdm9pZCBDb250ZXh0OjpibGl0RnJh
bWVidWZmZXIoR0xpbnQgc3JjWDAsCkBAIC0yNTQ5LDE0ICsyNzkyLDE0IEBAIHZvaWQgQ29udGV4
dDo6Y29weVRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgYm9yZGVyKQogewogICAgIC8vIE9ubHkgc3luYyB0aGUgcmVhZCBGQk8KLSAg
ICBtR0xTdGF0ZS5zeW5jRGlydHlPYmplY3QoR0xfUkVBRF9GUkFNRUJVRkZFUik7CisgICAgbUdM
U3RhdGUuc3luY0RpcnR5T2JqZWN0KHRoaXMsIEdMX1JFQURfRlJBTUVCVUZGRVIpOwogCiAgICAg
UmVjdGFuZ2xlIHNvdXJjZUFyZWEoeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAKICAgICBjb25zdCBG
cmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBtR0xTdGF0ZS5nZXRSZWFkRnJhbWVidWZmZXIoKTsK
ICAgICBUZXh0dXJlICp0ZXh0dXJlID0KICAgICAgICAgZ2V0VGFyZ2V0VGV4dHVyZShJc0N1YmVN
YXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkgPyBHTF9URVhUVVJFX0NVQkVfTUFQIDogdGFyZ2V0KTsK
LSAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5jb3B5SW1hZ2UodGFyZ2V0LCBsZXZlbCwgc291cmNl
QXJlYSwgaW50ZXJuYWxmb3JtYXQsIGZyYW1lYnVmZmVyKSk7CisgICAgaGFuZGxlRXJyb3IodGV4
dHVyZS0+Y29weUltYWdlKHRoaXMsIHRhcmdldCwgbGV2ZWwsIHNvdXJjZUFyZWEsIGludGVybmFs
Zm9ybWF0LCBmcmFtZWJ1ZmZlcikpOwogfQogCiB2b2lkIENvbnRleHQ6OmNvcHlUZXhTdWJJbWFn
ZTJEKEdMZW51bSB0YXJnZXQsCkBAIC0yNTc0LDcgKzI4MTcsNyBAQCB2b2lkIENvbnRleHQ6OmNv
cHlUZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsCiAgICAgfQogCiAgICAgLy8gT25seSBzeW5j
IHRoZSByZWFkIEZCTwotICAgIG1HTFN0YXRlLnN5bmNEaXJ0eU9iamVjdChHTF9SRUFEX0ZSQU1F
QlVGRkVSKTsKKyAgICBtR0xTdGF0ZS5zeW5jRGlydHlPYmplY3QodGhpcywgR0xfUkVBRF9GUkFN
RUJVRkZFUik7CiAKICAgICBPZmZzZXQgZGVzdE9mZnNldCh4b2Zmc2V0LCB5b2Zmc2V0LCAwKTsK
ICAgICBSZWN0YW5nbGUgc291cmNlQXJlYSh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKQEAgLTI1ODIs
NyArMjgyNSw3IEBAIHZvaWQgQ29udGV4dDo6Y29weVRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdl
dCwKICAgICBjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBtR0xTdGF0ZS5nZXRSZWFk
RnJhbWVidWZmZXIoKTsKICAgICBUZXh0dXJlICp0ZXh0dXJlID0KICAgICAgICAgZ2V0VGFyZ2V0
VGV4dHVyZShJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkgPyBHTF9URVhUVVJFX0NVQkVf
TUFQIDogdGFyZ2V0KTsKLSAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5jb3B5U3ViSW1hZ2UodGFy
Z2V0LCBsZXZlbCwgZGVzdE9mZnNldCwgc291cmNlQXJlYSwgZnJhbWVidWZmZXIpKTsKKyAgICBo
YW5kbGVFcnJvcih0ZXh0dXJlLT5jb3B5U3ViSW1hZ2UodGhpcywgdGFyZ2V0LCBsZXZlbCwgZGVz
dE9mZnNldCwgc291cmNlQXJlYSwgZnJhbWVidWZmZXIpKTsKIH0KIAogdm9pZCBDb250ZXh0Ojpj
b3B5VGV4U3ViSW1hZ2UzRChHTGVudW0gdGFyZ2V0LApAQCAtMjYwMSwxNCArMjg0NCwxNCBAQCB2
b2lkIENvbnRleHQ6OmNvcHlUZXhTdWJJbWFnZTNEKEdMZW51bSB0YXJnZXQsCiAgICAgfQogCiAg
ICAgLy8gT25seSBzeW5jIHRoZSByZWFkIEZCTwotICAgIG1HTFN0YXRlLnN5bmNEaXJ0eU9iamVj
dChHTF9SRUFEX0ZSQU1FQlVGRkVSKTsKKyAgICBtR0xTdGF0ZS5zeW5jRGlydHlPYmplY3QodGhp
cywgR0xfUkVBRF9GUkFNRUJVRkZFUik7CiAKICAgICBPZmZzZXQgZGVzdE9mZnNldCh4b2Zmc2V0
LCB5b2Zmc2V0LCB6b2Zmc2V0KTsKICAgICBSZWN0YW5nbGUgc291cmNlQXJlYSh4LCB5LCB3aWR0
aCwgaGVpZ2h0KTsKIAogICAgIGNvbnN0IEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IG1HTFN0
YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigpOwogICAgIFRleHR1cmUgKnRleHR1cmUgICAgICAgICAg
ICAgICA9IGdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKLSAgICBoYW5kbGVFcnJvcih0ZXh0dXJl
LT5jb3B5U3ViSW1hZ2UodGFyZ2V0LCBsZXZlbCwgZGVzdE9mZnNldCwgc291cmNlQXJlYSwgZnJh
bWVidWZmZXIpKTsKKyAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5jb3B5U3ViSW1hZ2UodGhpcywg
dGFyZ2V0LCBsZXZlbCwgZGVzdE9mZnNldCwgc291cmNlQXJlYSwgZnJhbWVidWZmZXIpKTsKIH0K
IAogdm9pZCBDb250ZXh0OjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHTGVudW0gdGFyZ2V0LApAQCAt
MjYzMCwxNyArMjg3MywyMiBAQCB2b2lkIENvbnRleHQ6OmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdM
ZW51bSB0YXJnZXQsCiAgICAgICAgIHsKICAgICAgICAgICAgIGluZGV4ID0gSW1hZ2VJbmRleDo6
TWFrZTJEKGxldmVsKTsKICAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh0ZXh0YXJnZXQgPT0g
R0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KGxldmVsID09IDApOworICAgICAgICAgICAgaW5kZXggPSBJbWFnZUluZGV4OjpNYWtlMkRNdWx0
aXNhbXBsZSgpOworICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAg
ICAgQVNTRVJUKElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGV4dGFyZ2V0KSk7CiAgICAgICAgICAg
ICBpbmRleCA9IEltYWdlSW5kZXg6Ok1ha2VDdWJlKHRleHRhcmdldCwgbGV2ZWwpOwogICAgICAg
ICB9CiAKLSAgICAgICAgZnJhbWVidWZmZXItPnNldEF0dGFjaG1lbnQoR0xfVEVYVFVSRSwgYXR0
YWNobWVudCwgaW5kZXgsIHRleHR1cmVPYmopOworICAgICAgICBmcmFtZWJ1ZmZlci0+c2V0QXR0
YWNobWVudCh0aGlzLCBHTF9URVhUVVJFLCBhdHRhY2htZW50LCBpbmRleCwgdGV4dHVyZU9iaik7
CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGZyYW1lYnVmZmVyLT5yZXNldEF0dGFj
aG1lbnQoYXR0YWNobWVudCk7CisgICAgICAgIGZyYW1lYnVmZmVyLT5yZXNldEF0dGFjaG1lbnQo
dGhpcywgYXR0YWNobWVudCk7CiAgICAgfQogCiAgICAgbUdMU3RhdGUuc2V0T2JqZWN0RGlydHko
dGFyZ2V0KTsKQEAgLTI2NTcsMTIgKzI5MDUsMTMgQEAgdm9pZCBDb250ZXh0OjpmcmFtZWJ1ZmZl
clJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0LAogICAgIGlmIChyZW5kZXJidWZmZXIgIT0gMCkK
ICAgICB7CiAgICAgICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyT2JqZWN0ID0gZ2V0UmVu
ZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgIGZyYW1lYnVmZmVyLT5zZXRBdHRhY2ht
ZW50KEdMX1JFTkRFUkJVRkZFUiwgYXR0YWNobWVudCwgZ2w6OkltYWdlSW5kZXg6Ok1ha2VJbnZh
bGlkKCksCisKKyAgICAgICAgZnJhbWVidWZmZXItPnNldEF0dGFjaG1lbnQodGhpcywgR0xfUkVO
REVSQlVGRkVSLCBhdHRhY2htZW50LCBnbDo6SW1hZ2VJbmRleDo6TWFrZUludmFsaWQoKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyYnVmZmVyT2JqZWN0KTsKICAg
ICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgZnJhbWVidWZmZXItPnJlc2V0QXR0YWNobWVu
dChhdHRhY2htZW50KTsKKyAgICAgICAgZnJhbWVidWZmZXItPnJlc2V0QXR0YWNobWVudCh0aGlz
LCBhdHRhY2htZW50KTsKICAgICB9CiAKICAgICBtR0xTdGF0ZS5zZXRPYmplY3REaXJ0eSh0YXJn
ZXQpOwpAQCAtMjY5MywxMSArMjk0MiwxMSBAQCB2b2lkIENvbnRleHQ6OmZyYW1lYnVmZmVyVGV4
dHVyZUxheWVyKEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICBpbmRleCA9IEltYWdlSW5kZXg6
Ok1ha2UyREFycmF5KGxldmVsLCBsYXllcik7CiAgICAgICAgIH0KIAotICAgICAgICBmcmFtZWJ1
ZmZlci0+c2V0QXR0YWNobWVudChHTF9URVhUVVJFLCBhdHRhY2htZW50LCBpbmRleCwgdGV4dHVy
ZU9iamVjdCk7CisgICAgICAgIGZyYW1lYnVmZmVyLT5zZXRBdHRhY2htZW50KHRoaXMsIEdMX1RF
WFRVUkUsIGF0dGFjaG1lbnQsIGluZGV4LCB0ZXh0dXJlT2JqZWN0KTsKICAgICB9CiAgICAgZWxz
ZQogICAgIHsKLSAgICAgICAgZnJhbWVidWZmZXItPnJlc2V0QXR0YWNobWVudChhdHRhY2htZW50
KTsKKyAgICAgICAgZnJhbWVidWZmZXItPnJlc2V0QXR0YWNobWVudCh0aGlzLCBhdHRhY2htZW50
KTsKICAgICB9CiAKICAgICBtR0xTdGF0ZS5zZXRPYmplY3REaXJ0eSh0YXJnZXQpOwpAQCAtMjcy
MSw3ICsyOTcwLDcgQEAgdm9pZCBDb250ZXh0OjpyZWFkQnVmZmVyKEdMZW51bSBtb2RlKQogdm9p
ZCBDb250ZXh0OjpkaXNjYXJkRnJhbWVidWZmZXIoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW1B
dHRhY2htZW50cywgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykKIHsKICAgICAvLyBPbmx5IHN5
bmMgdGhlIEZCTwotICAgIG1HTFN0YXRlLnN5bmNEaXJ0eU9iamVjdCh0YXJnZXQpOworICAgIG1H
TFN0YXRlLnN5bmNEaXJ0eU9iamVjdCh0aGlzLCB0YXJnZXQpOwogCiAgICAgRnJhbWVidWZmZXIg
KmZyYW1lYnVmZmVyID0gbUdMU3RhdGUuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsKICAg
ICBBU1NFUlQoZnJhbWVidWZmZXIpOwpAQCAtMjczNiwxMiArMjk4NSwxMiBAQCB2b2lkIENvbnRl
eHQ6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykKIHsKICAgICAv
LyBPbmx5IHN5bmMgdGhlIEZCTwotICAgIG1HTFN0YXRlLnN5bmNEaXJ0eU9iamVjdCh0YXJnZXQp
OworICAgIG1HTFN0YXRlLnN5bmNEaXJ0eU9iamVjdCh0aGlzLCB0YXJnZXQpOwogCiAgICAgRnJh
bWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbUdMU3RhdGUuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFy
Z2V0KTsKICAgICBBU1NFUlQoZnJhbWVidWZmZXIpOwogCi0gICAgaWYgKGZyYW1lYnVmZmVyLT5j
aGVja1N0YXR1cyhtU3RhdGUpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgIGlmIChm
cmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXModGhpcykgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUp
CiAgICAgewogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjc1OCwxMiArMzAwNywxMiBAQCB2
b2lkIENvbnRleHQ6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHTGVudW0gdGFyZ2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpCiB7CiAg
ICAgLy8gT25seSBzeW5jIHRoZSBGQk8KLSAgICBtR0xTdGF0ZS5zeW5jRGlydHlPYmplY3QodGFy
Z2V0KTsKKyAgICBtR0xTdGF0ZS5zeW5jRGlydHlPYmplY3QodGhpcywgdGFyZ2V0KTsKIAogICAg
IEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IG1HTFN0YXRlLmdldFRhcmdldEZyYW1lYnVmZmVy
KHRhcmdldCk7CiAgICAgQVNTRVJUKGZyYW1lYnVmZmVyKTsKIAotICAgIGlmIChmcmFtZWJ1ZmZl
ci0+Y2hlY2tTdGF0dXMobVN0YXRlKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICBp
ZiAoZnJhbWVidWZmZXItPmNoZWNrU3RhdHVzKHRoaXMpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBM
RVRFKQogICAgIHsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI3ODcsOCArMzAzNiw4IEBA
IHZvaWQgQ29udGV4dDo6dGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LAogICAgIEV4dGVudHMgc2l6
ZSh3aWR0aCwgaGVpZ2h0LCAxKTsKICAgICBUZXh0dXJlICp0ZXh0dXJlID0KICAgICAgICAgZ2V0
VGFyZ2V0VGV4dHVyZShJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkgPyBHTF9URVhUVVJF
X0NVQkVfTUFQIDogdGFyZ2V0KTsKLSAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5zZXRJbWFnZSht
R0xTdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwg
c2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihwaXhlbHMpKSk7CisgICAgaGFuZGxlRXJy
b3IodGV4dHVyZS0+c2V0SW1hZ2UodGhpcywgbUdMU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZSwgZm9ybWF0LCB0eXBlLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3Qg
Kj4ocGl4ZWxzKSkpOwogfQogCiB2b2lkIENvbnRleHQ6OnRleEltYWdlM0QoR0xlbnVtIHRhcmdl
dCwKQEAgLTI4MDYsOCArMzA1NSw4IEBAIHZvaWQgQ29udGV4dDo6dGV4SW1hZ2UzRChHTGVudW0g
dGFyZ2V0LAogCiAgICAgRXh0ZW50cyBzaXplKHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKICAgICBU
ZXh0dXJlICp0ZXh0dXJlID0gZ2V0VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOwotICAgIGhhbmRsZUVy
cm9yKHRleHR1cmUtPnNldEltYWdlKG1HTFN0YXRlLmdldFVucGFja1N0YXRlKCksIHRhcmdldCwg
bGV2ZWwsIGludGVybmFsZm9ybWF0LCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvcm1hdCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KHBp
eGVscykpKTsKKyAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5zZXRJbWFnZSh0aGlzLCBtR0xTdGF0
ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLCBmb3JtYXQsIHR5cGUsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihwaXhlbHMpKSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6
dGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LApAQCAtMjgzMSw4ICszMDgwLDggQEAgdm9pZCBD
b250ZXh0Ojp0ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsCiAgICAgQm94IGFyZWEoeG9mZnNl
dCwgeW9mZnNldCwgMCwgd2lkdGgsIGhlaWdodCwgMSk7CiAgICAgVGV4dHVyZSAqdGV4dHVyZSA9
CiAgICAgICAgIGdldFRhcmdldFRleHR1cmUoSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQp
ID8gR0xfVEVYVFVSRV9DVUJFX01BUCA6IHRhcmdldCk7Ci0gICAgaGFuZGxlRXJyb3IodGV4dHVy
ZS0+c2V0U3ViSW1hZ2UobUdMU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFyZ2V0LCBsZXZlbCwg
YXJlYSwgZm9ybWF0LCB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihwaXhlbHMpKSk7CisgICAgaGFuZGxl
RXJyb3IodGV4dHVyZS0+c2V0U3ViSW1hZ2UodGhpcywgbUdMU3RhdGUuZ2V0VW5wYWNrU3RhdGUo
KSwgdGFyZ2V0LCBsZXZlbCwgYXJlYSwgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihwaXhl
bHMpKSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6dGV4U3ViSW1hZ2UzRChHTGVudW0gdGFyZ2V0LApA
QCAtMjg1Nyw4ICszMTA2LDggQEAgdm9pZCBDb250ZXh0Ojp0ZXhTdWJJbWFnZTNEKEdMZW51bSB0
YXJnZXQsCiAKICAgICBCb3ggYXJlYSh4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwg
aGVpZ2h0LCBkZXB0aCk7CiAgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGdldFRhcmdldFRleHR1cmUo
dGFyZ2V0KTsKLSAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5zZXRTdWJJbWFnZShtR0xTdGF0ZS5n
ZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQsIGxldmVsLCBhcmVhLCBmb3JtYXQsIHR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90ICo+KHBpeGVscykpKTsKKyAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5zZXRTdWJJbWFn
ZSh0aGlzLCBtR0xTdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQsIGxldmVsLCBhcmVhLCBm
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KHBpeGVscykpKTsKIH0KIAogdm9pZCBDb250ZXh0
Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LApAQCAtMjg3NSw3ICszMTI0LDcg
QEAgdm9pZCBDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LAogICAg
IEV4dGVudHMgc2l6ZSh3aWR0aCwgaGVpZ2h0LCAxKTsKICAgICBUZXh0dXJlICp0ZXh0dXJlID0K
ICAgICAgICAgZ2V0VGFyZ2V0VGV4dHVyZShJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkg
PyBHTF9URVhUVVJFX0NVQkVfTUFQIDogdGFyZ2V0KTsKLSAgICBoYW5kbGVFcnJvcih0ZXh0dXJl
LT5zZXRDb21wcmVzc2VkSW1hZ2UobUdMU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFyZ2V0LCBs
ZXZlbCwKKyAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5zZXRDb21wcmVzc2VkSW1hZ2UodGhpcywg
bUdMU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFyZ2V0LCBsZXZlbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQsIHNpemUsIGltYWdl
U2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KGRhdGEpKSk7CiB9CkBAIC0yODk0LDcgKzMxNDMs
NyBAQCB2b2lkIENvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdMZW51bSB0YXJnZXQsCiAK
ICAgICBFeHRlbnRzIHNpemUod2lkdGgsIGhlaWdodCwgZGVwdGgpOwogICAgIFRleHR1cmUgKnRl
eHR1cmUgPSBnZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7Ci0gICAgaGFuZGxlRXJyb3IodGV4dHVy
ZS0+c2V0Q29tcHJlc3NlZEltYWdlKG1HTFN0YXRlLmdldFVucGFja1N0YXRlKCksIHRhcmdldCwg
bGV2ZWwsCisgICAgaGFuZGxlRXJyb3IodGV4dHVyZS0+c2V0Q29tcHJlc3NlZEltYWdlKHRoaXMs
IG1HTFN0YXRlLmdldFVucGFja1N0YXRlKCksIHRhcmdldCwgbGV2ZWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsZm9ybWF0LCBzaXplLCBpbWFn
ZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihkYXRhKSkpOwogfQpAQCAtMjkxNCw3ICszMTYz
LDcgQEAgdm9pZCBDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0
LAogICAgIEJveCBhcmVhKHhvZmZzZXQsIHlvZmZzZXQsIDAsIHdpZHRoLCBoZWlnaHQsIDEpOwog
ICAgIFRleHR1cmUgKnRleHR1cmUgPQogICAgICAgICBnZXRUYXJnZXRUZXh0dXJlKElzQ3ViZU1h
cFRleHR1cmVUYXJnZXQodGFyZ2V0KSA/IEdMX1RFWFRVUkVfQ1VCRV9NQVAgOiB0YXJnZXQpOwot
ICAgIGhhbmRsZUVycm9yKHRleHR1cmUtPnNldENvbXByZXNzZWRTdWJJbWFnZShtR0xTdGF0ZS5n
ZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQsIGxldmVsLCBhcmVhLAorICAgIGhhbmRsZUVycm9yKHRl
eHR1cmUtPnNldENvbXByZXNzZWRTdWJJbWFnZSh0aGlzLCBtR0xTdGF0ZS5nZXRVbnBhY2tTdGF0
ZSgpLCB0YXJnZXQsIGxldmVsLCBhcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmb3JtYXQsIGltYWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
ICo+KGRhdGEpKSk7CiB9CkBAIC0yOTQxLDcgKzMxOTAsNyBAQCB2b2lkIENvbnRleHQ6OmNvbXBy
ZXNzZWRUZXhTdWJJbWFnZTNEKEdMZW51bSB0YXJnZXQsCiAKICAgICBCb3ggYXJlYSh4b2Zmc2V0
LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CiAgICAgVGV4dHVyZSAq
dGV4dHVyZSA9IGdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKLSAgICBoYW5kbGVFcnJvcih0ZXh0
dXJlLT5zZXRDb21wcmVzc2VkU3ViSW1hZ2UobUdMU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFy
Z2V0LCBsZXZlbCwgYXJlYSwKKyAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5zZXRDb21wcmVzc2Vk
U3ViSW1hZ2UodGhpcywgbUdMU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFyZ2V0LCBsZXZlbCwg
YXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y
bWF0LCBpbWFnZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihkYXRhKSkpOwogfQpAQCAt
Mjk0OSw1NCArMzE5OCwzNCBAQCB2b2lkIENvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNE
KEdMZW51bSB0YXJnZXQsCiB2b2lkIENvbnRleHQ6OmdlbmVyYXRlTWlwbWFwKEdMZW51bSB0YXJn
ZXQpCiB7CiAgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsK
LSAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5nZW5lcmF0ZU1pcG1hcCgpKTsKKyAgICBoYW5kbGVF
cnJvcih0ZXh0dXJlLT5nZW5lcmF0ZU1pcG1hcCh0aGlzKSk7CiB9CiAKLUdMYm9vbGVhbiBDb250
ZXh0OjplbmFibGVFeHRlbnNpb24oY29uc3QgY2hhciAqbmFtZSkKK3ZvaWQgQ29udGV4dDo6Y29w
eVRleHR1cmVDSFJPTUlVTShHTHVpbnQgc291cmNlSWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgc291cmNlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGRlc3RUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGRlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBkZXN0TGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
aW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGRlc3RUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1
bnBhY2tGbGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdW5wYWNrVW5tdWx0aXBseUFscGhhKQogewotICAgIGNvbnN0IEV4dGVuc2lv
bkluZm9NYXAgJmV4dGVuc2lvbkluZm9zID0gR2V0RXh0ZW5zaW9uSW5mb01hcCgpOwotICAgIEFT
U0VSVChleHRlbnNpb25JbmZvcy5maW5kKG5hbWUpICE9IGV4dGVuc2lvbkluZm9zLmVuZCgpKTsK
LSAgICBjb25zdCBhdXRvICZleHRlbnNpb24gPSBleHRlbnNpb25JbmZvcy5hdChuYW1lKTsKLSAg
ICBBU1NFUlQoZXh0ZW5zaW9uLkVuYWJsZWFibGUpOwotCi0gICAgaWYgKG1FeHRlbnNpb25zLioo
ZXh0ZW5zaW9uLkV4dGVuc2lvbnNNZW1iZXIpKQotICAgIHsKLSAgICAgICAgLy8gRXh0ZW5zaW9u
IGFscmVhZHkgZW5hYmxlZAotICAgICAgICByZXR1cm4gR0xfVFJVRTsKLSAgICB9Ci0KLSAgICBj
b25zdCBhdXRvICZuYXRpdmVFeHRlbnNpb25zID0gbUltcGxlbWVudGF0aW9uLT5nZXROYXRpdmVF
eHRlbnNpb25zKCk7Ci0gICAgaWYgKCEobmF0aXZlRXh0ZW5zaW9ucy4qKGV4dGVuc2lvbi5FeHRl
bnNpb25zTWVtYmVyKSkpCi0gICAgewotICAgICAgICAvLyBVbmRlcmx5aW5nIGltcGxlbWVudGF0
aW9uIGRvZXMgbm90IHN1cHBvcnQgdGhpcyB2YWxpZCBleHRlbnNpb24KLSAgICAgICAgcmV0dXJu
IEdMX0ZBTFNFOwotICAgIH0KLQotICAgIG1FeHRlbnNpb25zLiooZXh0ZW5zaW9uLkV4dGVuc2lv
bnNNZW1iZXIpID0gdHJ1ZTsKLSAgICB1cGRhdGVDYXBzKCk7Ci0gICAgaW5pdEV4dGVuc2lvblN0
cmluZ3MoKTsKLSAgICByZXR1cm4gR0xfVFJVRTsKLX0KLQotdm9pZCBDb250ZXh0Ojpjb3B5VGV4
dHVyZUNIUk9NSVVNKEdMdWludCBzb3VyY2VJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgZGVzdElkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBkZXN0VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gdW5wYWNrRmxpcFksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHVucGFja1VubXVsdGlwbHlBbHBoYSkKLXsKLSAgICBzeW5jU3Rh
dGVGb3JUZXhJbWFnZSgpOworICAgIHN5bmNTdGF0ZUZvclRleEltYWdlKCk7CiAKICAgICBnbDo6
VGV4dHVyZSAqc291cmNlVGV4dHVyZSA9IGdldFRleHR1cmUoc291cmNlSWQpOwogICAgIGdsOjpU
ZXh0dXJlICpkZXN0VGV4dHVyZSAgID0gZ2V0VGV4dHVyZShkZXN0SWQpOwotICAgIGhhbmRsZUVy
cm9yKGRlc3RUZXh0dXJlLT5jb3B5VGV4dHVyZShpbnRlcm5hbEZvcm1hdCwgZGVzdFR5cGUsIHVu
cGFja0ZsaXBZID09IEdMX1RSVUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVucGFja1ByZW11bHRpcGx5QWxwaGEgPT0gR0xfVFJVRSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wYWNrVW5tdWx0aXBseUFscGhhID09IEdMX1RS
VUUsIHNvdXJjZVRleHR1cmUpKTsKKyAgICBoYW5kbGVFcnJvcihkZXN0VGV4dHVyZS0+Y29weVRl
eHR1cmUoCisgICAgICAgIHRoaXMsIGRlc3RUYXJnZXQsIGRlc3RMZXZlbCwgaW50ZXJuYWxGb3Jt
YXQsIGRlc3RUeXBlLCBzb3VyY2VMZXZlbCwgdW5wYWNrRmxpcFkgPT0gR0xfVFJVRSwKKyAgICAg
ICAgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSA9PSBHTF9UUlVFLCB1bnBhY2tVbm11bHRpcGx5QWxw
aGEgPT0gR0xfVFJVRSwgc291cmNlVGV4dHVyZSkpOwogfQogCiB2b2lkIENvbnRleHQ6OmNvcHlT
dWJUZXh0dXJlQ0hST01JVU0oR0x1aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHNvdXJjZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0VGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBkZXN0SWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgZGVzdExldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHhvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB4LApAQCAtMzAxOSw5ICszMjQ4LDkgQEAgdm9pZCBDb250ZXh0Ojpjb3B5U3ViVGV4
dHVyZUNIUk9NSVVNKEdMdWludCBzb3VyY2VJZCwKICAgICBnbDo6VGV4dHVyZSAqZGVzdFRleHR1
cmUgICA9IGdldFRleHR1cmUoZGVzdElkKTsKICAgICBPZmZzZXQgb2Zmc2V0KHhvZmZzZXQsIHlv
ZmZzZXQsIDApOwogICAgIFJlY3RhbmdsZSBhcmVhKHgsIHksIHdpZHRoLCBoZWlnaHQpOwotICAg
IGhhbmRsZUVycm9yKGRlc3RUZXh0dXJlLT5jb3B5U3ViVGV4dHVyZShvZmZzZXQsIGFyZWEsIHVu
cGFja0ZsaXBZID09IEdMX1RSVUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVucGFja1ByZW11bHRpcGx5QWxwaGEgPT0gR0xfVFJVRSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wYWNrVW5tdWx0aXBseUFscGhhID09
IEdMX1RSVUUsIHNvdXJjZVRleHR1cmUpKTsKKyAgICBoYW5kbGVFcnJvcihkZXN0VGV4dHVyZS0+
Y29weVN1YlRleHR1cmUoCisgICAgICAgIHRoaXMsIGRlc3RUYXJnZXQsIGRlc3RMZXZlbCwgb2Zm
c2V0LCBzb3VyY2VMZXZlbCwgYXJlYSwgdW5wYWNrRmxpcFkgPT0gR0xfVFJVRSwKKyAgICAgICAg
dW5wYWNrUHJlbXVsdGlwbHlBbHBoYSA9PSBHTF9UUlVFLCB1bnBhY2tVbm11bHRpcGx5QWxwaGEg
PT0gR0xfVFJVRSwgc291cmNlVGV4dHVyZSkpOwogfQogCiB2b2lkIENvbnRleHQ6OmNvbXByZXNz
ZWRDb3B5VGV4dHVyZUNIUk9NSVVNKEdMdWludCBzb3VyY2VJZCwgR0x1aW50IGRlc3RJZCkKQEAg
LTMwMzAsNyArMzI1OSw3IEBAIHZvaWQgQ29udGV4dDo6Y29tcHJlc3NlZENvcHlUZXh0dXJlQ0hS
T01JVU0oR0x1aW50IHNvdXJjZUlkLCBHTHVpbnQgZGVzdElkKQogCiAgICAgZ2w6OlRleHR1cmUg
KnNvdXJjZVRleHR1cmUgPSBnZXRUZXh0dXJlKHNvdXJjZUlkKTsKICAgICBnbDo6VGV4dHVyZSAq
ZGVzdFRleHR1cmUgICA9IGdldFRleHR1cmUoZGVzdElkKTsKLSAgICBoYW5kbGVFcnJvcihkZXN0
VGV4dHVyZS0+Y29weUNvbXByZXNzZWRUZXh0dXJlKHNvdXJjZVRleHR1cmUpKTsKKyAgICBoYW5k
bGVFcnJvcihkZXN0VGV4dHVyZS0+Y29weUNvbXByZXNzZWRUZXh0dXJlKHRoaXMsIHNvdXJjZVRl
eHR1cmUpKTsKIH0KIAogdm9pZCBDb250ZXh0OjpnZXRCdWZmZXJQb2ludGVydihHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMpCkBAIC0zMDQ2LDcgKzMyNzUsNyBAQCBH
THZvaWQgKkNvbnRleHQ6Om1hcEJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTGVudW0gYWNjZXNzKQog
ICAgIEJ1ZmZlciAqYnVmZmVyID0gbUdMU3RhdGUuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CiAg
ICAgQVNTRVJUKGJ1ZmZlcik7CiAKLSAgICBFcnJvciBlcnJvciA9IGJ1ZmZlci0+bWFwKGFjY2Vz
cyk7CisgICAgRXJyb3IgZXJyb3IgPSBidWZmZXItPm1hcCh0aGlzLCBhY2Nlc3MpOwogICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAgICAgICBoYW5kbGVFcnJvcihlcnJvcik7CkBA
IC0zMDYyLDcgKzMyOTEsNyBAQCBHTGJvb2xlYW4gQ29udGV4dDo6dW5tYXBCdWZmZXIoR0xlbnVt
IHRhcmdldCkKICAgICBBU1NFUlQoYnVmZmVyKTsKIAogICAgIEdMYm9vbGVhbiByZXN1bHQ7Ci0g
ICAgRXJyb3IgZXJyb3IgPSBidWZmZXItPnVubWFwKCZyZXN1bHQpOworICAgIEVycm9yIGVycm9y
ID0gYnVmZmVyLT51bm1hcCh0aGlzLCAmcmVzdWx0KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQogICAgIHsKICAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IpOwpAQCAtMzA4MCw3ICszMzA5LDcg
QEAgR0x2b2lkICpDb250ZXh0OjptYXBCdWZmZXJSYW5nZShHTGVudW0gdGFyZ2V0LAogICAgIEJ1
ZmZlciAqYnVmZmVyID0gbUdMU3RhdGUuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CiAgICAgQVNT
RVJUKGJ1ZmZlcik7CiAKLSAgICBFcnJvciBlcnJvciA9IGJ1ZmZlci0+bWFwUmFuZ2Uob2Zmc2V0
LCBsZW5ndGgsIGFjY2Vzcyk7CisgICAgRXJyb3IgZXJyb3IgPSBidWZmZXItPm1hcFJhbmdlKHRo
aXMsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAg
ICAgewogICAgICAgICBoYW5kbGVFcnJvcihlcnJvcik7CkBAIC0zMTI1LDExICszMzU0LDIxIEBA
IHZvaWQgQ29udGV4dDo6YmxlbmRDb2xvcihHTGNsYW1wZiByZWQsIEdMY2xhbXBmIGdyZWVuLCBH
TGNsYW1wZiBibHVlLCBHTGNsYW1wZiBhCiAgICAgbUdMU3RhdGUuc2V0QmxlbmRDb2xvcihjbGFt
cDAxKHJlZCksIGNsYW1wMDEoZ3JlZW4pLCBjbGFtcDAxKGJsdWUpLCBjbGFtcDAxKGFscGhhKSk7
CiB9CiAKK3ZvaWQgQ29udGV4dDo6YmxlbmRFcXVhdGlvbihHTGVudW0gbW9kZSkKK3sKKyAgICBt
R0xTdGF0ZS5zZXRCbGVuZEVxdWF0aW9uKG1vZGUsIG1vZGUpOworfQorCiB2b2lkIENvbnRleHQ6
OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSkK
IHsKICAgICBtR0xTdGF0ZS5zZXRCbGVuZEVxdWF0aW9uKG1vZGVSR0IsIG1vZGVBbHBoYSk7CiB9
CiAKK3ZvaWQgQ29udGV4dDo6YmxlbmRGdW5jKEdMZW51bSBzZmFjdG9yLCBHTGVudW0gZGZhY3Rv
cikKK3sKKyAgICBtR0xTdGF0ZS5zZXRCbGVuZEZhY3RvcnMoc2ZhY3RvciwgZGZhY3Rvciwgc2Zh
Y3RvciwgZGZhY3Rvcik7Cit9CisKIHZvaWQgQ29udGV4dDo6YmxlbmRGdW5jU2VwYXJhdGUoR0xl
bnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhhLCBHTGVudW0gZHN0QWxw
aGEpCiB7CiAgICAgbUdMU3RhdGUuc2V0QmxlbmRGYWN0b3JzKHNyY1JHQiwgZHN0UkdCLCBzcmNB
bHBoYSwgZHN0QWxwaGEpOwpAQCAtMzM5Nyw2ICszNjM2LDM0IEBAIHZvaWQgQ29udGV4dDo6dmVy
dGV4QXR0cmliUG9pbnRlcihHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbm9ybWFsaXplZCA9PSBHTF9UUlVFLCBmYWxzZSwgc3RyaWRlLCBwdHIpOwogfQog
Cit2b2lkIENvbnRleHQ6OnZlcnRleEF0dHJpYkZvcm1hdChHTHVpbnQgYXR0cmliSW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCByZWxhdGl2ZU9mZnNldCkKK3sKKyAgICBtR0xTdGF0ZS5zZXRWZXJ0
ZXhBdHRyaWJGb3JtYXQoYXR0cmliSW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQgPT0gR0xf
VFJVRSwgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aXZl
T2Zmc2V0KTsKK30KKwordm9pZCBDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJRm9ybWF0KEdMdWludCBh
dHRyaWJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCByZWxhdGl2ZU9mZnNldCkKK3sKKyAg
ICBtR0xTdGF0ZS5zZXRWZXJ0ZXhBdHRyaWJGb3JtYXQoYXR0cmliSW5kZXgsIHNpemUsIHR5cGUs
IGZhbHNlLCB0cnVlLCByZWxhdGl2ZU9mZnNldCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6dmVydGV4
QXR0cmliQmluZGluZyhHTHVpbnQgYXR0cmliSW5kZXgsIEdMdWludCBiaW5kaW5nSW5kZXgpCit7
CisgICAgbUdMU3RhdGUuc2V0VmVydGV4QXR0cmliQmluZGluZyhhdHRyaWJJbmRleCwgYmluZGlu
Z0luZGV4KTsKK30KKwordm9pZCBDb250ZXh0OjpzZXRWZXJ0ZXhCaW5kaW5nRGl2aXNvcihHTHVp
bnQgYmluZGluZ0luZGV4LCBHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBtR0xTdGF0ZS5zZXRWZXJ0
ZXhCaW5kaW5nRGl2aXNvcihiaW5kaW5nSW5kZXgsIGRpdmlzb3IpOworfQorCiB2b2lkIENvbnRl
eHQ6OnZpZXdwb3J0KEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0KQogewogICAgIG1HTFN0YXRlLnNldFZpZXdwb3J0UGFyYW1zKHgsIHksIHdpZHRoLCBoZWln
aHQpOwpAQCAtMzQzNCw2ICszNzAxLDQ4IEBAIHZvaWQgQ29udGV4dDo6dmVydGV4QXR0cmliSTR1
aXYoR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpCiAgICAgbUdMU3RhdGUuc2V0VmVydGV4
QXR0cmlidShpbmRleCwgdik7CiB9CiAKK3ZvaWQgQ29udGV4dDo6Z2V0VmVydGV4QXR0cmliaXYo
R0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAgY29uc3Qg
VmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlcyA9CisgICAgICAgIGdl
dEdMU3RhdGUoKS5nZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWUoaW5kZXgpOworICAgIGNvbnN0
IFZlcnRleEFycmF5ICp2YW8gPSBnZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXJyYXkoKTsKKyAgICBR
dWVyeVZlcnRleEF0dHJpYml2KHZhby0+Z2V0VmVydGV4QXR0cmlidXRlKGluZGV4KSwgdmFvLT5n
ZXRCaW5kaW5nRnJvbUF0dHJpYkluZGV4KGluZGV4KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRWYWx1ZXMsIHBuYW1lLCBwYXJhbXMpOworfQorCit2b2lkIENvbnRleHQ6OmdldFZl
cnRleEF0dHJpYmZ2KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMp
Cit7CisgICAgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVl
cyA9CisgICAgICAgIGdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWUoaW5k
ZXgpOworICAgIGNvbnN0IFZlcnRleEFycmF5ICp2YW8gPSBnZXRHTFN0YXRlKCkuZ2V0VmVydGV4
QXJyYXkoKTsKKyAgICBRdWVyeVZlcnRleEF0dHJpYmZ2KHZhby0+Z2V0VmVydGV4QXR0cmlidXRl
KGluZGV4KSwgdmFvLT5nZXRCaW5kaW5nRnJvbUF0dHJpYkluZGV4KGluZGV4KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZXMsIHBuYW1lLCBwYXJhbXMpOworfQorCit2b2lk
IENvbnRleHQ6OmdldFZlcnRleEF0dHJpYklpdihHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwg
R0xpbnQgKnBhcmFtcykKK3sKKyAgICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRh
ICZjdXJyZW50VmFsdWVzID0KKyAgICAgICAgZ2V0R0xTdGF0ZSgpLmdldFZlcnRleEF0dHJpYkN1
cnJlbnRWYWx1ZShpbmRleCk7CisgICAgY29uc3QgVmVydGV4QXJyYXkgKnZhbyA9IGdldEdMU3Rh
dGUoKS5nZXRWZXJ0ZXhBcnJheSgpOworICAgIFF1ZXJ5VmVydGV4QXR0cmliSWl2KHZhby0+Z2V0
VmVydGV4QXR0cmlidXRlKGluZGV4KSwgdmFvLT5nZXRCaW5kaW5nRnJvbUF0dHJpYkluZGV4KGlu
ZGV4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWVzLCBwbmFtZSwgcGFy
YW1zKTsKK30KKwordm9pZCBDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJJdWl2KEdMdWludCBpbmRl
eCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcykKK3sKKyAgICBjb25zdCBWZXJ0ZXhBdHRy
aWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWVzID0KKyAgICAgICAgZ2V0R0xTdGF0ZSgp
LmdldFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZShpbmRleCk7CisgICAgY29uc3QgVmVydGV4QXJy
YXkgKnZhbyA9IGdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgpOworICAgIFF1ZXJ5VmVydGV4
QXR0cmliSXVpdih2YW8tPmdldFZlcnRleEF0dHJpYnV0ZShpbmRleCksIHZhby0+Z2V0QmluZGlu
Z0Zyb21BdHRyaWJJbmRleChpbmRleCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJl
bnRWYWx1ZXMsIHBuYW1lLCBwYXJhbXMpOworfQorCit2b2lkIENvbnRleHQ6OmdldFZlcnRleEF0
dHJpYlBvaW50ZXJ2KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHZvaWQgKipwb2ludGVy
KQoreworICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0gZ2V0R0xTdGF0ZSgpLmdl
dFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0ZShpbmRleCk7CisgICAgUXVlcnlWZXJ0
ZXhBdHRyaWJQb2ludGVydihhdHRyaWIsIHBuYW1lLCBwb2ludGVyKTsKK30KKwogdm9pZCBDb250
ZXh0OjpkZWJ1Z01lc3NhZ2VDb250cm9sKEdMZW51bSBzb3VyY2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHNldmVyaXR5LApAQCAtMzQ5MCw3ICszNzk5LDcgQEAgdm9pZCBDb250
ZXh0OjpidWZmZXJEYXRhKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29uc3QgR0x2
b2lkICpkYXRhLCBHTGUKIHsKICAgICBCdWZmZXIgKmJ1ZmZlciA9IG1HTFN0YXRlLmdldFRhcmdl
dEJ1ZmZlcih0YXJnZXQpOwogICAgIEFTU0VSVChidWZmZXIpOwotICAgIGhhbmRsZUVycm9yKGJ1
ZmZlci0+YnVmZmVyRGF0YSh0YXJnZXQsIGRhdGEsIHNpemUsIHVzYWdlKSk7CisgICAgaGFuZGxl
RXJyb3IoYnVmZmVyLT5idWZmZXJEYXRhKHRoaXMsIHRhcmdldCwgZGF0YSwgc2l6ZSwgdXNhZ2Up
KTsKIH0KIAogdm9pZCBDb250ZXh0OjpidWZmZXJTdWJEYXRhKEdMZW51bSB0YXJnZXQsIEdMaW50
cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCBHTHZvaWQgKmRhdGEpCkBAIC0zNTAy
LDEzICszODExLDEzIEBAIHZvaWQgQ29udGV4dDo6YnVmZmVyU3ViRGF0YShHTGVudW0gdGFyZ2V0
LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29uCiAKICAgICBCdWZmZXIgKmJ1
ZmZlciA9IG1HTFN0YXRlLmdldFRhcmdldEJ1ZmZlcih0YXJnZXQpOwogICAgIEFTU0VSVChidWZm
ZXIpOwotICAgIGhhbmRsZUVycm9yKGJ1ZmZlci0+YnVmZmVyU3ViRGF0YSh0YXJnZXQsIGRhdGEs
IHNpemUsIG9mZnNldCkpOworICAgIGhhbmRsZUVycm9yKGJ1ZmZlci0+YnVmZmVyU3ViRGF0YSh0
aGlzLCB0YXJnZXQsIGRhdGEsIHNpemUsIG9mZnNldCkpOwogfQogCiB2b2lkIENvbnRleHQ6OmF0
dGFjaFNoYWRlcihHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRlcikKIHsKLSAgICBhdXRvIHBy
b2dyYW1PYmplY3QgPSBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRQcm9ncmFtKHByb2dyYW0pOwotICAg
IGF1dG8gc2hhZGVyT2JqZWN0ICA9IG1SZXNvdXJjZU1hbmFnZXItPmdldFNoYWRlcihzaGFkZXIp
OworICAgIGF1dG8gcHJvZ3JhbU9iamVjdCA9IG1TdGF0ZS5tU2hhZGVyUHJvZ3JhbXMtPmdldFBy
b2dyYW0ocHJvZ3JhbSk7CisgICAgYXV0byBzaGFkZXJPYmplY3QgID0gbVN0YXRlLm1TaGFkZXJQ
cm9ncmFtcy0+Z2V0U2hhZGVyKHNoYWRlcik7CiAgICAgQVNTRVJUKHByb2dyYW1PYmplY3QgJiYg
c2hhZGVyT2JqZWN0KTsKICAgICBwcm9ncmFtT2JqZWN0LT5hdHRhY2hTaGFkZXIoc2hhZGVyT2Jq
ZWN0KTsKIH0KQEAgLTM1MTgsNCArMzgyNyw3OTMgQEAgY29uc3QgV29ya2Fyb3VuZHMgJkNvbnRl
eHQ6OmdldFdvcmthcm91bmRzKCkgY29uc3QKICAgICByZXR1cm4gbVdvcmthcm91bmRzOwogfQog
Cit2b2lkIENvbnRleHQ6OmNvcHlCdWZmZXJTdWJEYXRhKEdMZW51bSByZWFkVGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gd3JpdGVUYXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIHJlYWRPZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIHdyaXRlT2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUpCit7CisgICAgLy8gaWYgc2l6ZSBp
cyB6ZXJvLCB0aGUgY29weSBpcyBhIHN1Y2Nlc3NmdWwgbm8tb3AKKyAgICBpZiAoc2l6ZSA9PSAw
KQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFRPRE8oam1hZGlsbCk6
IGNhY2hlIHRoZXNlLgorICAgIEJ1ZmZlciAqcmVhZEJ1ZmZlciAgPSBtR0xTdGF0ZS5nZXRUYXJn
ZXRCdWZmZXIocmVhZFRhcmdldCk7CisgICAgQnVmZmVyICp3cml0ZUJ1ZmZlciA9IG1HTFN0YXRl
LmdldFRhcmdldEJ1ZmZlcih3cml0ZVRhcmdldCk7CisKKyAgICBoYW5kbGVFcnJvcih3cml0ZUJ1
ZmZlci0+Y29weUJ1ZmZlclN1YkRhdGEodGhpcywgcmVhZEJ1ZmZlciwgcmVhZE9mZnNldCwgd3Jp
dGVPZmZzZXQsIHNpemUpKTsKK30KKwordm9pZCBDb250ZXh0OjpiaW5kQXR0cmliTG9jYXRpb24o
R0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgY29uc3QgR0xjaGFyICpuYW1lKQoreworICAg
IFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBnZXRQcm9ncmFtKHByb2dyYW0pOworICAgIC8vIFRP
RE8oam1hZGlsbCk6IFJlLXVzZSB0aGlzIGZyb20gdGhlIHZhbGlkYXRpb24gaWYgcG9zc2libGUu
CisgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOworICAgIHByb2dyYW1PYmplY3QtPmJpbmRBdHRy
aWJ1dGVMb2NhdGlvbihpbmRleCwgbmFtZSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6YmluZEJ1ZmZl
cihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgYnVmZmVyKQoreworICAgIHN3aXRjaCAodGFyZ2V0KQor
ICAgIHsKKyAgICAgICAgY2FzZSBHTF9BUlJBWV9CVUZGRVI6CisgICAgICAgICAgICBiaW5kQXJy
YXlCdWZmZXIoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0VM
RU1FTlRfQVJSQVlfQlVGRkVSOgorICAgICAgICAgICAgYmluZEVsZW1lbnRBcnJheUJ1ZmZlcihi
dWZmZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQ09QWV9SRUFEX0JV
RkZFUjoKKyAgICAgICAgICAgIGJpbmRDb3B5UmVhZEJ1ZmZlcihidWZmZXIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQ09QWV9XUklURV9CVUZGRVI6CisgICAgICAgICAg
ICBiaW5kQ29weVdyaXRlQnVmZmVyKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBHTF9QSVhFTF9QQUNLX0JVRkZFUjoKKyAgICAgICAgICAgIGJpbmRQaXhlbFBhY2tC
dWZmZXIoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1BJWEVM
X1VOUEFDS19CVUZGRVI6CisgICAgICAgICAgICBiaW5kUGl4ZWxVbnBhY2tCdWZmZXIoYnVmZmVy
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQlVGRkVSOgor
ICAgICAgICAgICAgYmluZEdlbmVyaWNVbmlmb3JtQnVmZmVyKGJ1ZmZlcik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSOgorICAg
ICAgICAgICAgYmluZEdlbmVyaWNUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcihidWZmZXIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSOgor
ICAgICAgICAgICAgYmluZEdlbmVyaWNBdG9taWNDb3VudGVyQnVmZmVyKGJ1ZmZlcik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVI6Cisg
ICAgICAgICAgICBiaW5kR2VuZXJpY1NoYWRlclN0b3JhZ2VCdWZmZXIoYnVmZmVyKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSOgorICAg
ICAgICAgICAgYmluZERyYXdJbmRpcmVjdEJ1ZmZlcihidWZmZXIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSOgorICAgICAgICAg
ICAgaWYgKGJ1ZmZlciAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEJp
bmRpbmcgYnVmZmVycyB0byB0aGlzIGJpbmRpbmcgcG9pbnQgaXMgbm90IGltcGxlbWVudGVkIHll
dC4KKyAgICAgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBDb250ZXh0OjpiaW5k
QnVmZmVyQmFzZShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMdWludCBidWZmZXIpCit7
CisgICAgYmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgMCwgMCk7Cit9CisK
K3ZvaWQgQ29udGV4dDo6YmluZEJ1ZmZlclJhbmdlKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnRwdHIgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBz
aXplKQoreworICAgIHN3aXRjaCAodGFyZ2V0KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9UUkFO
U0ZPUk1fRkVFREJBQ0tfQlVGRkVSOgorICAgICAgICAgICAgYmluZEluZGV4ZWRUcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlcihidWZmZXIsIGluZGV4LCBvZmZzZXQsIHNpemUpOworICAgICAgICAgICAg
YmluZEdlbmVyaWNUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcihidWZmZXIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgR0xfVU5JRk9STV9CVUZGRVI6CisgICAgICAgICAgICBiaW5k
SW5kZXhlZFVuaWZvcm1CdWZmZXIoYnVmZmVyLCBpbmRleCwgb2Zmc2V0LCBzaXplKTsKKyAgICAg
ICAgICAgIGJpbmRHZW5lcmljVW5pZm9ybUJ1ZmZlcihidWZmZXIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSOgorICAgICAgICAgICAg
YmluZEluZGV4ZWRBdG9taWNDb3VudGVyQnVmZmVyKGJ1ZmZlciwgaW5kZXgsIG9mZnNldCwgc2l6
ZSk7CisgICAgICAgICAgICBiaW5kR2VuZXJpY0F0b21pY0NvdW50ZXJCdWZmZXIoYnVmZmVyKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZF
UjoKKyAgICAgICAgICAgIGJpbmRJbmRleGVkU2hhZGVyU3RvcmFnZUJ1ZmZlcihidWZmZXIsIGlu
ZGV4LCBvZmZzZXQsIHNpemUpOworICAgICAgICAgICAgYmluZEdlbmVyaWNTaGFkZXJTdG9yYWdl
QnVmZmVyKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisK
K3ZvaWQgQ29udGV4dDo6YmluZEZyYW1lYnVmZmVyKEdMZW51bSB0YXJnZXQsIEdMdWludCBmcmFt
ZWJ1ZmZlcikKK3sKKyAgICBpZiAodGFyZ2V0ID09IEdMX1JFQURfRlJBTUVCVUZGRVIgfHwgdGFy
Z2V0ID09IEdMX0ZSQU1FQlVGRkVSKQorICAgIHsKKyAgICAgICAgYmluZFJlYWRGcmFtZWJ1ZmZl
cihmcmFtZWJ1ZmZlcik7CisgICAgfQorCisgICAgaWYgKHRhcmdldCA9PSBHTF9EUkFXX0ZSQU1F
QlVGRkVSIHx8IHRhcmdldCA9PSBHTF9GUkFNRUJVRkZFUikKKyAgICB7CisgICAgICAgIGJpbmRE
cmF3RnJhbWVidWZmZXIoZnJhbWVidWZmZXIpOworICAgIH0KK30KKwordm9pZCBDb250ZXh0Ojpi
aW5kUmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpCit7Cisg
ICAgQVNTRVJUKHRhcmdldCA9PSBHTF9SRU5ERVJCVUZGRVIpOworICAgIFJlbmRlcmJ1ZmZlciAq
b2JqZWN0ID0KKyAgICAgICAgbVN0YXRlLm1SZW5kZXJidWZmZXJzLT5jaGVja1JlbmRlcmJ1ZmZl
ckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCByZW5kZXJidWZmZXIpOworICAgIG1H
TFN0YXRlLnNldFJlbmRlcmJ1ZmZlckJpbmRpbmcob2JqZWN0KTsKK30KKwordm9pZCBDb250ZXh0
Ojp0ZXhTdG9yYWdlMkRNdWx0aXNhbXBsZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBmaXhlZHNhbXBsZWxvY2F0aW9ucykKK3sK
KyAgICBFeHRlbnRzIHNpemUod2lkdGgsIGhlaWdodCwgMSk7CisgICAgVGV4dHVyZSAqdGV4dHVy
ZSA9IGdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKKyAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5z
ZXRTdG9yYWdlTXVsdGlzYW1wbGUodGhpcywgdGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1h
dCwgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zml4ZWRzYW1wbGVsb2NhdGlvbnMpKTsKK30KKwordm9pZCBDb250ZXh0OjpnZXRNdWx0aXNhbXBs
ZWZ2KEdMZW51bSBwbmFtZSwgR0x1aW50IGluZGV4LCBHTGZsb2F0ICp2YWwpCit7CisgICAgbUdM
U3RhdGUuc3luY0RpcnR5T2JqZWN0KHRoaXMsIEdMX1JFQURfRlJBTUVCVUZGRVIpOworICAgIGNv
bnN0IEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IG1HTFN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZl
cigpOworCisgICAgc3dpdGNoIChwbmFtZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfU0FNUExF
X1BPU0lUSU9OOgorICAgICAgICAgICAgaGFuZGxlRXJyb3IoZnJhbWVidWZmZXItPmdldFNhbXBs
ZVBvc2l0aW9uKGluZGV4LCB2YWwpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4
dDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQoreworICAgIC8vIEhhY2sgZm9yIHRoZSBzcGVjaWFs
IFdlYkdMIDEgIkRFUFRIX1NURU5DSUwiIGludGVybmFsIGZvcm1hdC4KKyAgICBHTGVudW0gY29u
dmVydGVkSW50ZXJuYWxGb3JtYXQgPSBnZXRDb252ZXJ0ZWRSZW5kZXJidWZmZXJGb3JtYXQoaW50
ZXJuYWxmb3JtYXQpOworCisgICAgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIgPSBtR0xTdGF0
ZS5nZXRDdXJyZW50UmVuZGVyYnVmZmVyKCk7CisgICAgaGFuZGxlRXJyb3IocmVuZGVyYnVmZmVy
LT5zZXRTdG9yYWdlKGNvbnZlcnRlZEludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSk7Cit9
CisKK3ZvaWQgQ29udGV4dDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpCit7CisgICAgLy8gSGFjayBmb3IgdGhl
IHNwZWNpYWwgV2ViR0wgMSAiREVQVEhfU1RFTkNJTCIgaW50ZXJuYWwgZm9ybWF0LgorICAgIEdM
ZW51bSBjb252ZXJ0ZWRJbnRlcm5hbEZvcm1hdCA9IGdldENvbnZlcnRlZFJlbmRlcmJ1ZmZlckZv
cm1hdChpbnRlcm5hbGZvcm1hdCk7CisKKyAgICBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciA9
IG1HTFN0YXRlLmdldEN1cnJlbnRSZW5kZXJidWZmZXIoKTsKKyAgICBoYW5kbGVFcnJvcigKKyAg
ICAgICAgcmVuZGVyYnVmZmVyLT5zZXRTdG9yYWdlTXVsdGlzYW1wbGUoc2FtcGxlcywgY29udmVy
dGVkSW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsKK30KKwordm9pZCBDb250ZXh0Ojpn
ZXRTeW5jaXYoR0xzeW5jIHN5bmMsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsIEdMaW50ICp2YWx1ZXMpCit7CisgICAgY29uc3QgRmVuY2VTeW5jICpzeW5j
T2JqZWN0ID0gZ2V0RmVuY2VTeW5jKHN5bmMpOworICAgIGhhbmRsZUVycm9yKFF1ZXJ5U3luY2l2
KHN5bmNPYmplY3QsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHZhbHVlcykpOworfQorCit2b2lk
IENvbnRleHQ6OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IHBuYW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9
IG1HTFN0YXRlLmdldFRhcmdldEZyYW1lYnVmZmVyKHRhcmdldCk7CisgICAgUXVlcnlGcmFtZWJ1
ZmZlclBhcmFtZXRlcml2KGZyYW1lYnVmZmVyLCBwbmFtZSwgcGFyYW1zKTsKK30KKwordm9pZCBD
b250ZXh0OjpzZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcmkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu
YW1lLCBHTGludCBwYXJhbSkKK3sKKyAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBtR0xT
dGF0ZS5nZXRUYXJnZXRGcmFtZWJ1ZmZlcih0YXJnZXQpOworICAgIFNldEZyYW1lYnVmZmVyUGFy
YW1ldGVyaShmcmFtZWJ1ZmZlciwgcG5hbWUsIHBhcmFtKTsKK30KKworRXJyb3IgQ29udGV4dDo6
Z2V0U2NyYXRjaEJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6ZSwgYW5nbGU6Ok1lbW9yeUJ1ZmZl
ciAqKnNjcmF0Y2hCdWZmZXJPdXQpIGNvbnN0Cit7CisgICAgaWYgKCFtU2NyYXRjaEJ1ZmZlci5n
ZXQocmVxdWVzdGVkU2l6ZSwgc2NyYXRjaEJ1ZmZlck91dCkpCisgICAgeworICAgICAgICByZXR1
cm4gZ2w6Ok91dE9mTWVtb3J5KCkgPDwgIkZhaWxlZCB0byBhbGxvY2F0ZSBpbnRlcm5hbCBidWZm
ZXIuIjsKKyAgICB9CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK3ZvaWQgQ29udGV4
dDo6ZGlzcGF0Y2hDb21wdXRlKEdMdWludCBudW1Hcm91cHNYLCBHTHVpbnQgbnVtR3JvdXBzWSwg
R0x1aW50IG51bUdyb3Vwc1opCit7CisgICAgaWYgKG51bUdyb3Vwc1ggPT0gMHUgfHwgbnVtR3Jv
dXBzWSA9PSAwdSB8fCBudW1Hcm91cHNaID09IDB1KQorICAgIHsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1JbXBsZW1lbnRhdGlvbi0+ZGlzcGF0Y2hDb21wdXRlKG51bUdyb3Vwc1gs
IG51bUdyb3Vwc1ksIG51bUdyb3Vwc1opOworfQorCitHTGVudW0gQ29udGV4dDo6Y2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhHTGVudW0gdGFyZ2V0KQoreworICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1
ZmZlciA9IG1HTFN0YXRlLmdldFRhcmdldEZyYW1lYnVmZmVyKHRhcmdldCk7CisgICAgQVNTRVJU
KGZyYW1lYnVmZmVyKTsKKworICAgIHJldHVybiBmcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXModGhp
cyk7Cit9CisKK3ZvaWQgQ29udGV4dDo6Y29tcGlsZVNoYWRlcihHTHVpbnQgc2hhZGVyKQorewor
ICAgIFNoYWRlciAqc2hhZGVyT2JqZWN0ID0gR2V0VmFsaWRTaGFkZXIodGhpcywgc2hhZGVyKTsK
KyAgICBpZiAoIXNoYWRlck9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgc2hhZGVyT2JqZWN0LT5jb21waWxlKHRoaXMpOworfQorCit2b2lkIENvbnRleHQ6OmRlbGV0
ZUJ1ZmZlcnMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmJ1ZmZlcnMpCit7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgeworICAgICAgICBkZWxldGVCdWZmZXIoYnVmZmVy
c1tpXSk7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmRlbGV0ZUZyYW1lYnVmZmVycyhHTHNp
emVpIG4sIGNvbnN0IEdMdWludCAqZnJhbWVidWZmZXJzKQoreworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbjsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKGZyYW1lYnVmZmVyc1tpXSAhPSAwKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWxldGVGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcnNbaV0p
OworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmRlbGV0ZVJlbmRlcmJ1ZmZl
cnMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMpCit7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgeworICAgICAgICBkZWxldGVSZW5kZXJidWZmZXIo
cmVuZGVyYnVmZmVyc1tpXSk7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmRlbGV0ZVRleHR1
cmVzKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICp0ZXh0dXJlcykKK3sKKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG47IGkrKykKKyAgICB7CisgICAgICAgIGlmICh0ZXh0dXJlc1tpXSAhPSAwKQor
ICAgICAgICB7CisgICAgICAgICAgICBkZWxldGVUZXh0dXJlKHRleHR1cmVzW2ldKTsKKyAgICAg
ICAgfQorICAgIH0KK30KKwordm9pZCBDb250ZXh0OjpkZXRhY2hTaGFkZXIoR0x1aW50IHByb2dy
YW0sIEdMdWludCBzaGFkZXIpCit7CisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGdldFBy
b2dyYW0ocHJvZ3JhbSk7CisgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOworCisgICAgU2hhZGVy
ICpzaGFkZXJPYmplY3QgPSBnZXRTaGFkZXIoc2hhZGVyKTsKKyAgICBBU1NFUlQoc2hhZGVyT2Jq
ZWN0KTsKKworICAgIHByb2dyYW1PYmplY3QtPmRldGFjaFNoYWRlcih0aGlzLCBzaGFkZXJPYmpl
Y3QpOworfQorCit2b2lkIENvbnRleHQ6OmdlbkJ1ZmZlcnMoR0xzaXplaSBuLCBHTHVpbnQgKmJ1
ZmZlcnMpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgeworICAgICAg
ICBidWZmZXJzW2ldID0gY3JlYXRlQnVmZmVyKCk7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6
OmdlbkZyYW1lYnVmZmVycyhHTHNpemVpIG4sIEdMdWludCAqZnJhbWVidWZmZXJzKQoreworICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQorICAgIHsKKyAgICAgICAgZnJhbWVidWZmZXJz
W2ldID0gY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6Z2Vu
UmVuZGVyYnVmZmVycyhHTHNpemVpIG4sIEdMdWludCAqcmVuZGVyYnVmZmVycykKK3sKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKKyAgICB7CisgICAgICAgIHJlbmRlcmJ1ZmZlcnNb
aV0gPSBjcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4dDo6Z2Vu
VGV4dHVyZXMoR0xzaXplaSBuLCBHTHVpbnQgKnRleHR1cmVzKQoreworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbjsgaSsrKQorICAgIHsKKyAgICAgICAgdGV4dHVyZXNbaV0gPSBjcmVhdGVUZXh0
dXJlKCk7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmdldEFjdGl2ZUF0dHJpYihHTHVpbnQg
cHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmc2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50ICpzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lKQor
eworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBnZXRQcm9ncmFtKHByb2dyYW0pOworICAg
IEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKKyAgICBwcm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVBdHRy
aWJ1dGUoaW5kZXgsIGJ1ZnNpemUsIGxlbmd0aCwgc2l6ZSwgdHlwZSwgbmFtZSk7Cit9CisKK3Zv
aWQgQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9ybShHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lKQoreworICAgIFByb2dyYW0g
KnByb2dyYW1PYmplY3QgPSBnZXRQcm9ncmFtKHByb2dyYW0pOworICAgIEFTU0VSVChwcm9ncmFt
T2JqZWN0KTsKKyAgICBwcm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVVbmlmb3JtKGluZGV4LCBidWZz
aXplLCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUpOworfQorCit2b2lkIENvbnRleHQ6OmdldEF0
dGFjaGVkU2hhZGVycyhHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBtYXhjb3VudCwgR0xzaXplaSAq
Y291bnQsIEdMdWludCAqc2hhZGVycykKK3sKKyAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0g
Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKyAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CisgICAgcHJv
Z3JhbU9iamVjdC0+Z2V0QXR0YWNoZWRTaGFkZXJzKG1heGNvdW50LCBjb3VudCwgc2hhZGVycyk7
Cit9CisKK0dMaW50IENvbnRleHQ6OmdldEF0dHJpYkxvY2F0aW9uKEdMdWludCBwcm9ncmFtLCBj
b25zdCBHTGNoYXIgKm5hbWUpCit7CisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGdldFBy
b2dyYW0ocHJvZ3JhbSk7CisgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOworICAgIHJldHVybiBw
cm9ncmFtT2JqZWN0LT5nZXRBdHRyaWJ1dGVMb2NhdGlvbihuYW1lKTsKK30KKwordm9pZCBDb250
ZXh0OjpnZXRCb29sZWFudihHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1zKQoreworICAg
IEdMZW51bSBuYXRpdmVUeXBlOworICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXMgPSAwOworICAg
IGdldFF1ZXJ5UGFyYW1ldGVySW5mbyhwbmFtZSwgJm5hdGl2ZVR5cGUsICZudW1QYXJhbXMpOwor
CisgICAgaWYgKG5hdGl2ZVR5cGUgPT0gR0xfQk9PTCkKKyAgICB7CisgICAgICAgIGdldEJvb2xl
YW52SW1wbChwbmFtZSwgcGFyYW1zKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg
Q2FzdFN0YXRlVmFsdWVzKHRoaXMsIG5hdGl2ZVR5cGUsIHBuYW1lLCBudW1QYXJhbXMsIHBhcmFt
cyk7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmdldEZsb2F0dihHTGVudW0gcG5hbWUsIEdM
ZmxvYXQgKnBhcmFtcykKK3sKKyAgICBHTGVudW0gbmF0aXZlVHlwZTsKKyAgICB1bnNpZ25lZCBp
bnQgbnVtUGFyYW1zID0gMDsKKyAgICBnZXRRdWVyeVBhcmFtZXRlckluZm8ocG5hbWUsICZuYXRp
dmVUeXBlLCAmbnVtUGFyYW1zKTsKKworICAgIGlmIChuYXRpdmVUeXBlID09IEdMX0ZMT0FUKQor
ICAgIHsKKyAgICAgICAgZ2V0RmxvYXR2SW1wbChwbmFtZSwgcGFyYW1zKTsKKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgQ2FzdFN0YXRlVmFsdWVzKHRoaXMsIG5hdGl2ZVR5cGUsIHBu
YW1lLCBudW1QYXJhbXMsIHBhcmFtcyk7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmdldElu
dGVnZXJ2KEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBHTGVudW0gbmF0aXZl
VHlwZTsKKyAgICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zID0gMDsKKyAgICBnZXRRdWVyeVBhcmFt
ZXRlckluZm8ocG5hbWUsICZuYXRpdmVUeXBlLCAmbnVtUGFyYW1zKTsKKworICAgIGlmIChuYXRp
dmVUeXBlID09IEdMX0lOVCkKKyAgICB7CisgICAgICAgIGdldEludGVnZXJ2SW1wbChwbmFtZSwg
cGFyYW1zKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgQ2FzdFN0YXRlVmFsdWVz
KHRoaXMsIG5hdGl2ZVR5cGUsIHBuYW1lLCBudW1QYXJhbXMsIHBhcmFtcyk7CisgICAgfQorfQor
Cit2b2lkIENvbnRleHQ6OmdldFByb2dyYW1pdihHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1l
LCBHTGludCAqcGFyYW1zKQoreworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBnZXRQcm9n
cmFtKHByb2dyYW0pOworICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKKyAgICBRdWVyeVByb2dy
YW1pdihwcm9ncmFtT2JqZWN0LCBwbmFtZSwgcGFyYW1zKTsKK30KKwordm9pZCBDb250ZXh0Ojpn
ZXRJbmZvTG9nKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkgKmxlbmd0
aCwgR0xjaGFyICppbmZvbG9nKQoreworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBnZXRQ
cm9ncmFtKHByb2dyYW0pOworICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKKyAgICBwcm9ncmFt
T2JqZWN0LT5nZXRJbmZvTG9nKGJ1ZnNpemUsIGxlbmd0aCwgaW5mb2xvZyk7Cit9CisKK3ZvaWQg
Q29udGV4dDo6Z2V0U2hhZGVyaXYoR0x1aW50IHNoYWRlciwgR0xlbnVtIHBuYW1lLCBHTGludCAq
cGFyYW1zKQoreworICAgIFNoYWRlciAqc2hhZGVyT2JqZWN0ID0gZ2V0U2hhZGVyKHNoYWRlcik7
CisgICAgQVNTRVJUKHNoYWRlck9iamVjdCk7CisgICAgUXVlcnlTaGFkZXJpdihzaGFkZXJPYmpl
Y3QsIHBuYW1lLCBwYXJhbXMpOworfQorCit2b2lkIENvbnRleHQ6OmdldFNoYWRlckluZm9Mb2co
R0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAq
aW5mb2xvZykKK3sKKyAgICBTaGFkZXIgKnNoYWRlck9iamVjdCA9IGdldFNoYWRlcihzaGFkZXIp
OworICAgIEFTU0VSVChzaGFkZXJPYmplY3QpOworICAgIHNoYWRlck9iamVjdC0+Z2V0SW5mb0xv
ZyhidWZzaXplLCBsZW5ndGgsIGluZm9sb2cpOworfQorCit2b2lkIENvbnRleHQ6OmdldFNoYWRl
clByZWNpc2lvbkZvcm1hdChHTGVudW0gc2hhZGVydHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcmVjaXNpb250eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnJhbmdlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnByZWNpc2lvbikKK3sKKyAgICAvLyBUT0RPKGpt
YWRpbGwpOiBDb21wdXRlIHNoYWRlcnMuCisKKyAgICBzd2l0Y2ggKHNoYWRlcnR5cGUpCisgICAg
eworICAgICAgICBjYXNlIEdMX1ZFUlRFWF9TSEFERVI6CisgICAgICAgICAgICBzd2l0Y2ggKHBy
ZWNpc2lvbnR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9MT1df
RkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIG1DYXBzLnZlcnRleExvd3BGbG9hdC5nZXQocmFu
Z2UsIHByZWNpc2lvbik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgR0xfTUVESVVNX0ZMT0FUOgorICAgICAgICAgICAgICAgICAgICBtQ2Fwcy52ZXJ0
ZXhNZWRpdW1wRmxvYXQuZ2V0KHJhbmdlLCBwcmVjaXNpb24pOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0hJR0hfRkxPQVQ6CisgICAgICAgICAg
ICAgICAgICAgIG1DYXBzLnZlcnRleEhpZ2hwRmxvYXQuZ2V0KHJhbmdlLCBwcmVjaXNpb24pOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgR0xfTE9X
X0lOVDoKKyAgICAgICAgICAgICAgICAgICAgbUNhcHMudmVydGV4TG93cEludC5nZXQocmFuZ2Us
IHByZWNpc2lvbik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGNhc2UgR0xfTUVESVVNX0lOVDoKKyAgICAgICAgICAgICAgICAgICAgbUNhcHMudmVydGV4TWVk
aXVtcEludC5nZXQocmFuZ2UsIHByZWNpc2lvbik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGNhc2UgR0xfSElHSF9JTlQ6CisgICAgICAgICAgICAgICAgICAg
IG1DYXBzLnZlcnRleEhpZ2hwSW50LmdldChyYW5nZSwgcHJlY2lzaW9uKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0ZSQUdNRU5U
X1NIQURFUjoKKyAgICAgICAgICAgIHN3aXRjaCAocHJlY2lzaW9udHlwZSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0xPV19GTE9BVDoKKyAgICAgICAgICAgICAgICAg
ICAgbUNhcHMuZnJhZ21lbnRMb3dwRmxvYXQuZ2V0KHJhbmdlLCBwcmVjaXNpb24pOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX01FRElVTV9GTE9B
VDoKKyAgICAgICAgICAgICAgICAgICAgbUNhcHMuZnJhZ21lbnRNZWRpdW1wRmxvYXQuZ2V0KHJh
bmdlLCBwcmVjaXNpb24pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIEdMX0hJR0hfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIG1DYXBzLmZyYWdt
ZW50SGlnaHBGbG9hdC5nZXQocmFuZ2UsIHByZWNpc2lvbik7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBHTF9MT1dfSU5UOgorICAgICAgICAgICAg
ICAgICAgICBtQ2Fwcy5mcmFnbWVudExvd3BJbnQuZ2V0KHJhbmdlLCBwcmVjaXNpb24pOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX01FRElVTV9J
TlQ6CisgICAgICAgICAgICAgICAgICAgIG1DYXBzLmZyYWdtZW50TWVkaXVtcEludC5nZXQocmFu
Z2UsIHByZWNpc2lvbik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGNhc2UgR0xfSElHSF9JTlQ6CisgICAgICAgICAgICAgICAgICAgIG1DYXBzLmZyYWdtZW50
SGlnaHBJbnQuZ2V0KHJhbmdlLCBwcmVjaXNpb24pOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwordm9pZCBDb250ZXh0Ojpn
ZXRTaGFkZXJTb3VyY2UoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpICps
ZW5ndGgsIEdMY2hhciAqc291cmNlKQoreworICAgIFNoYWRlciAqc2hhZGVyT2JqZWN0ID0gZ2V0
U2hhZGVyKHNoYWRlcik7CisgICAgQVNTRVJUKHNoYWRlck9iamVjdCk7CisgICAgc2hhZGVyT2Jq
ZWN0LT5nZXRTb3VyY2UoYnVmc2l6ZSwgbGVuZ3RoLCBzb3VyY2UpOworfQorCit2b2lkIENvbnRl
eHQ6OmdldFVuaWZvcm1mdihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQg
KnBhcmFtcykKK3sKKyAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gZ2V0UHJvZ3JhbShwcm9n
cmFtKTsKKyAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CisgICAgcHJvZ3JhbU9iamVjdC0+Z2V0
VW5pZm9ybWZ2KGxvY2F0aW9uLCBwYXJhbXMpOworfQorCit2b2lkIENvbnRleHQ6OmdldFVuaWZv
cm1pdihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50ICpwYXJhbXMpCit7Cisg
ICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgQVNT
RVJUKHByb2dyYW1PYmplY3QpOworICAgIHByb2dyYW1PYmplY3QtPmdldFVuaWZvcm1pdihsb2Nh
dGlvbiwgcGFyYW1zKTsKK30KKworR0xpbnQgQ29udGV4dDo6Z2V0VW5pZm9ybUxvY2F0aW9uKEdM
dWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpCit7CisgICAgUHJvZ3JhbSAqcHJvZ3Jh
bU9iamVjdCA9IGdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgQVNTRVJUKHByb2dyYW1PYmplY3Qp
OworICAgIHJldHVybiBwcm9ncmFtT2JqZWN0LT5nZXRVbmlmb3JtTG9jYXRpb24obmFtZSk7Cit9
CisKK0dMYm9vbGVhbiBDb250ZXh0Ojppc0J1ZmZlcihHTHVpbnQgYnVmZmVyKQoreworICAgIGlm
IChidWZmZXIgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9GQUxTRTsKKyAgICB9CisK
KyAgICByZXR1cm4gKGdldEJ1ZmZlcihidWZmZXIpID8gR0xfVFJVRSA6IEdMX0ZBTFNFKTsKK30K
KworR0xib29sZWFuIENvbnRleHQ6OmlzRW5hYmxlZChHTGVudW0gY2FwKQoreworICAgIHJldHVy
biBtR0xTdGF0ZS5nZXRFbmFibGVGZWF0dXJlKGNhcCk7Cit9CisKK0dMYm9vbGVhbiBDb250ZXh0
Ojppc0ZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlcikKK3sKKyAgICBpZiAoZnJhbWVidWZm
ZXIgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9GQUxTRTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gKGdldEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKSA/IEdMX1RSVUUgOiBHTF9GQUxTRSk7
Cit9CisKK0dMYm9vbGVhbiBDb250ZXh0Ojppc1Byb2dyYW0oR0x1aW50IHByb2dyYW0pCit7Cisg
ICAgaWYgKHByb2dyYW0gPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9GQUxTRTsKKyAg
ICB9CisKKyAgICByZXR1cm4gKGdldFByb2dyYW0ocHJvZ3JhbSkgPyBHTF9UUlVFIDogR0xfRkFM
U0UpOworfQorCitHTGJvb2xlYW4gQ29udGV4dDo6aXNSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRl
cmJ1ZmZlcikKK3sKKyAgICBpZiAocmVuZGVyYnVmZmVyID09IDApCisgICAgeworICAgICAgICBy
ZXR1cm4gR0xfRkFMU0U7CisgICAgfQorCisgICAgcmV0dXJuIChnZXRSZW5kZXJidWZmZXIocmVu
ZGVyYnVmZmVyKSA/IEdMX1RSVUUgOiBHTF9GQUxTRSk7Cit9CisKK0dMYm9vbGVhbiBDb250ZXh0
Ojppc1NoYWRlcihHTHVpbnQgc2hhZGVyKQoreworICAgIGlmIChzaGFkZXIgPT0gMCkKKyAgICB7
CisgICAgICAgIHJldHVybiBHTF9GQUxTRTsKKyAgICB9CisKKyAgICByZXR1cm4gKGdldFNoYWRl
cihzaGFkZXIpID8gR0xfVFJVRSA6IEdMX0ZBTFNFKTsKK30KKworR0xib29sZWFuIENvbnRleHQ6
OmlzVGV4dHVyZShHTHVpbnQgdGV4dHVyZSkKK3sKKyAgICBpZiAodGV4dHVyZSA9PSAwKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOworICAgIH0KKworICAgIHJldHVybiAoZ2V0VGV4
dHVyZSh0ZXh0dXJlKSA/IEdMX1RSVUUgOiBHTF9GQUxTRSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6
bGlua1Byb2dyYW0oR0x1aW50IHByb2dyYW0pCit7CisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVj
dCA9IGdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOworICAg
IGhhbmRsZUVycm9yKHByb2dyYW1PYmplY3QtPmxpbmsodGhpcykpOworfQorCit2b2lkIENvbnRl
eHQ6OnJlbGVhc2VTaGFkZXJDb21waWxlcigpCit7CisgICAgaGFuZGxlRXJyb3IobUNvbXBpbGVy
LT5yZWxlYXNlKCkpOworfQorCit2b2lkIENvbnRleHQ6OnNoYWRlckJpbmFyeShHTHNpemVpIG4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnNoYWRlcnMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmluYXJ5Zm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpiaW5hcnksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGxlbmd0aCkKK3sKKyAgICAvLyBObyBiaW5hcnkgc2hhZGVyIGZvcm1h
dHMgYXJlIHN1cHBvcnRlZC4KKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgQ29udGV4
dDo6c2hhZGVyU291cmNlKEdMdWludCBzaGFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFy
ICpjb25zdCAqc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQg
Kmxlbmd0aCkKK3sKKyAgICBTaGFkZXIgKnNoYWRlck9iamVjdCA9IGdldFNoYWRlcihzaGFkZXIp
OworICAgIEFTU0VSVChzaGFkZXJPYmplY3QpOworICAgIHNoYWRlck9iamVjdC0+c2V0U291cmNl
KGNvdW50LCBzdHJpbmcsIGxlbmd0aCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6c3RlbmNpbEZ1bmMo
R0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spCit7CisgICAgc3RlbmNpbEZ1bmNT
ZXBhcmF0ZShHTF9GUk9OVF9BTkRfQkFDSywgZnVuYywgcmVmLCBtYXNrKTsKK30KKwordm9pZCBD
b250ZXh0OjpzdGVuY2lsTWFzayhHTHVpbnQgbWFzaykKK3sKKyAgICBzdGVuY2lsTWFza1NlcGFy
YXRlKEdMX0ZST05UX0FORF9CQUNLLCBtYXNrKTsKK30KKwordm9pZCBDb250ZXh0OjpzdGVuY2ls
T3AoR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKQoreworICAgIHN0ZW5j
aWxPcFNlcGFyYXRlKEdMX0ZST05UX0FORF9CQUNLLCBmYWlsLCB6ZmFpbCwgenBhc3MpOworfQor
Cit2b2lkIENvbnRleHQ6OnVuaWZvcm0xZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4KQorewor
ICAgIFByb2dyYW0gKnByb2dyYW0gPSBtR0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3Jh
bS0+c2V0VW5pZm9ybTFmdihsb2NhdGlvbiwgMSwgJngpOworfQorCit2b2lkIENvbnRleHQ6OnVu
aWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYp
Cit7CisgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IG1HTFN0YXRlLmdldFByb2dyYW0oKTsKKyAgICBw
cm9ncmFtLT5zZXRVbmlmb3JtMWZ2KGxvY2F0aW9uLCBjb3VudCwgdik7Cit9CisKK3ZvaWQgQ29u
dGV4dDo6dW5pZm9ybTFpKEdMaW50IGxvY2F0aW9uLCBHTGludCB4KQoreworICAgIFByb2dyYW0g
KnByb2dyYW0gPSBtR0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5pZm9y
bTFpdihsb2NhdGlvbiwgMSwgJngpOworfQorCit2b2lkIENvbnRleHQ6OnVuaWZvcm0xaXYoR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQoreworICAgIFByb2dy
YW0gKnByb2dyYW0gPSBtR0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5p
Zm9ybTFpdihsb2NhdGlvbiwgY291bnQsIHYpOworfQorCit2b2lkIENvbnRleHQ6OnVuaWZvcm0y
ZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpCit7CisgICAgR0xmbG9hdCB4
eVsyXSAgICA9IHt4LCB5fTsKKyAgICBQcm9ncmFtICpwcm9ncmFtID0gbUdMU3RhdGUuZ2V0UHJv
Z3JhbSgpOworICAgIHByb2dyYW0tPnNldFVuaWZvcm0yZnYobG9jYXRpb24sIDEsIHh5KTsKK30K
Kwordm9pZCBDb250ZXh0Ojp1bmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGZsb2F0ICp2KQoreworICAgIFByb2dyYW0gKnByb2dyYW0gPSBtR0xTdGF0ZS5n
ZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTJmdihsb2NhdGlvbiwgY291bnQs
IHYpOworfQorCit2b2lkIENvbnRleHQ6OnVuaWZvcm0yaShHTGludCBsb2NhdGlvbiwgR0xpbnQg
eCwgR0xpbnQgeSkKK3sKKyAgICBHTGludCB4eVsyXSAgICAgID0ge3gsIHl9OworICAgIFByb2dy
YW0gKnByb2dyYW0gPSBtR0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5p
Zm9ybTJpdihsb2NhdGlvbiwgMSwgeHkpOworfQorCit2b2lkIENvbnRleHQ6OnVuaWZvcm0yaXYo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQoreworICAgIFBy
b2dyYW0gKnByb2dyYW0gPSBtR0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0
VW5pZm9ybTJpdihsb2NhdGlvbiwgY291bnQsIHYpOworfQorCit2b2lkIENvbnRleHQ6OnVuaWZv
cm0zZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeikKK3sK
KyAgICBHTGZsb2F0IHh5elszXSAgID0ge3gsIHksIHp9OworICAgIFByb2dyYW0gKnByb2dyYW0g
PSBtR0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTNmdihsb2Nh
dGlvbiwgMSwgeHl6KTsKK30KKwordm9pZCBDb250ZXh0Ojp1bmlmb3JtM2Z2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQoreworICAgIFByb2dyYW0gKnBy
b2dyYW0gPSBtR0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTNm
dihsb2NhdGlvbiwgY291bnQsIHYpOworfQorCit2b2lkIENvbnRleHQ6OnVuaWZvcm0zaShHTGlu
dCBsb2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeikKK3sKKyAgICBHTGludCB4eXpb
M10gICAgID0ge3gsIHksIHp9OworICAgIFByb2dyYW0gKnByb2dyYW0gPSBtR0xTdGF0ZS5nZXRQ
cm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTNpdihsb2NhdGlvbiwgMSwgeHl6KTsK
K30KKwordm9pZCBDb250ZXh0Ojp1bmlmb3JtM2l2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGludCAqdikKK3sKKyAgICBQcm9ncmFtICpwcm9ncmFtID0gbUdMU3RhdGUu
Z2V0UHJvZ3JhbSgpOworICAgIHByb2dyYW0tPnNldFVuaWZvcm0zaXYobG9jYXRpb24sIGNvdW50
LCB2KTsKK30KKwordm9pZCBDb250ZXh0Ojp1bmlmb3JtNGYoR0xpbnQgbG9jYXRpb24sIEdMZmxv
YXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdykKK3sKKyAgICBHTGZsb2F0IHh5
endbNF0gID0ge3gsIHksIHosIHd9OworICAgIFByb2dyYW0gKnByb2dyYW0gPSBtR0xTdGF0ZS5n
ZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTRmdihsb2NhdGlvbiwgMSwgeHl6
dyk7Cit9CisKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTRmdihHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKK3sKKyAgICBQcm9ncmFtICpwcm9ncmFtID0gbUdM
U3RhdGUuZ2V0UHJvZ3JhbSgpOworICAgIHByb2dyYW0tPnNldFVuaWZvcm00ZnYobG9jYXRpb24s
IGNvdW50LCB2KTsKK30KKwordm9pZCBDb250ZXh0Ojp1bmlmb3JtNGkoR0xpbnQgbG9jYXRpb24s
IEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpCit7CisgICAgR0xpbnQgeHl6d1s0
XSAgICA9IHt4LCB5LCB6LCB3fTsKKyAgICBQcm9ncmFtICpwcm9ncmFtID0gbUdMU3RhdGUuZ2V0
UHJvZ3JhbSgpOworICAgIHByb2dyYW0tPnNldFVuaWZvcm00aXYobG9jYXRpb24sIDEsIHh5encp
OworfQorCit2b2lkIENvbnRleHQ6OnVuaWZvcm00aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMaW50ICp2KQoreworICAgIFByb2dyYW0gKnByb2dyYW0gPSBtR0xTdGF0
ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTRpdihsb2NhdGlvbiwgY291
bnQsIHYpOworfQorCit2b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXgyZnYoR0xpbnQgbG9jYXRp
b24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIFByb2dy
YW0gKnByb2dyYW0gPSBtR0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5p
Zm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworfQorCit2
b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXgzZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIFByb2dyYW0gKnByb2dyYW0gPSBt
R0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDNmdihs
b2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworfQorCit2b2lkIENvbnRleHQ6OnVu
aWZvcm1NYXRyaXg0ZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlKQoreworICAgIFByb2dyYW0gKnByb2dyYW0gPSBtR0xTdGF0ZS5nZXRQcm9n
cmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpOworfQorCit2b2lkIENvbnRleHQ6OnZhbGlkYXRlUHJvZ3JhbShH
THVpbnQgcHJvZ3JhbSkKK3sKKyAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gZ2V0UHJvZ3Jh
bShwcm9ncmFtKTsKKyAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CisgICAgcHJvZ3JhbU9iamVj
dC0+dmFsaWRhdGUobUNhcHMpOworfQorCiB9ICAvLyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0LmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dC5oCmluZGV4IDhlMzlhYjU1MjFi
MWM3MDUxMmI1YTg5M2Y4ODk2ZGJkMzYwNGQ2MzkuLmYzOTkzMDQ3MThhN2Y4MzQyMjc5Yjc0Yjli
ZDJlNjk4ZWZjOGIxODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9Db250ZXh0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL0NvbnRleHQuaApAQCAtMTQsMTMgKzE0LDE0IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogCiAj
aW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJjb21tb24vTWVtb3J5QnVmZmVyLmgiCiAj
aW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9SZWZDb3Vu
dE9iamVjdC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NhcHMuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9Db25zdGFudHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0U3RhdGUuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9FcnJvci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0hhbmRsZUFsbG9jYXRv
ci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1JlZkNvdW50T2JqZWN0LmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvVmVydGV4QXR0cmlidXRlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvV29ya2Fyb3VuZHMu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCkBAIC00OSw3ICs1MCw2IEBAIGNs
YXNzIFJlbmRlcmJ1ZmZlcjsKIGNsYXNzIEZlbmNlTlY7CiBjbGFzcyBGZW5jZVN5bmM7CiBjbGFz
cyBRdWVyeTsKLWNsYXNzIFJlc291cmNlTWFuYWdlcjsKIGNsYXNzIEJ1ZmZlcjsKIHN0cnVjdCBW
ZXJ0ZXhBdHRyaWJ1dGU7CiBjbGFzcyBWZXJ0ZXhBcnJheTsKQEAgLTYyLDEyICs2MiwxNSBAQCBj
bGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIFZhbGlkYXRpb25Db250ZXh0CiAgICAgQ29udGV4
dChyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAogICAgICAgICAgICAgY29uc3QgZWds
OjpDb25maWcgKmNvbmZpZywKICAgICAgICAgICAgIGNvbnN0IENvbnRleHQgKnNoYXJlQ29udGV4
dCwKLSAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKTsKKyAgICAg
ICAgICAgIFRleHR1cmVNYW5hZ2VyICpzaGFyZVRleHR1cmVzLAorICAgICAgICAgICAgY29uc3Qg
ZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMsCisgICAgICAgICAgICBjb25zdCBlZ2w6OkRpc3Bs
YXlFeHRlbnNpb25zICZkaXNwbGF5RXh0ZW5zaW9ucyk7CiAKLSAgICB2aXJ0dWFsIH5Db250ZXh0
KCk7CisgICAgdm9pZCBkZXN0cm95KGVnbDo6RGlzcGxheSAqZGlzcGxheSk7CisgICAgfkNvbnRl
eHQoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgbWFrZUN1cnJlbnQoZWdsOjpTdXJmYWNlICpzdXJm
YWNlKTsKLSAgICB2b2lkIHJlbGVhc2VTdXJmYWNlKCk7CisgICAgdm9pZCBtYWtlQ3VycmVudChl
Z2w6OkRpc3BsYXkgKmRpc3BsYXksIGVnbDo6U3VyZmFjZSAqc3VyZmFjZSk7CisgICAgdm9pZCBy
ZWxlYXNlU3VyZmFjZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpOwogCiAgICAgLy8gVGhlc2UgY3Jl
YXRlICBhbmQgZGVzdHJveSBtZXRob2RzIGFyZSBtZXJlbHkgcGFzcy10aHJvdWdocyB0bwogICAg
IC8vIFJlc291cmNlTWFuYWdlciwgd2hpY2ggb3ducyB0aGVzZSBvYmplY3QgdHlwZXMKQEAgLTEy
NSw4ICsxMjgsMTEgQEAgY2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBWYWxpZGF0aW9uQ29u
dGV4dAogICAgIHZvaWQgYmluZFRleHR1cmUoR0xlbnVtIHRhcmdldCwgR0x1aW50IGhhbmRsZSk7
CiAgICAgdm9pZCBiaW5kUmVhZEZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlckhhbmRsZSk7
CiAgICAgdm9pZCBiaW5kRHJhd0ZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlckhhbmRsZSk7
Ci0gICAgdm9pZCBiaW5kUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXJIYW5kbGUpOwog
ICAgIHZvaWQgYmluZFZlcnRleEFycmF5KEdMdWludCB2ZXJ0ZXhBcnJheUhhbmRsZSk7CisgICAg
dm9pZCBiaW5kVmVydGV4QnVmZmVyKEdMdWludCBiaW5kaW5nSW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBidWZmZXJIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBz
dHJpZGUpOwogICAgIHZvaWQgYmluZFNhbXBsZXIoR0x1aW50IHRleHR1cmVVbml0LCBHTHVpbnQg
c2FtcGxlckhhbmRsZSk7CiAgICAgdm9pZCBiaW5kR2VuZXJpY1VuaWZvcm1CdWZmZXIoR0x1aW50
IGJ1ZmZlckhhbmRsZSk7CiAgICAgdm9pZCBiaW5kSW5kZXhlZFVuaWZvcm1CdWZmZXIoR0x1aW50
IGJ1ZmZlckhhbmRsZSwKQEAgLTEzOCwxMiArMTQ0LDIzIEBAIGNsYXNzIENvbnRleHQgZmluYWwg
OiBwdWJsaWMgVmFsaWRhdGlvbkNvbnRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSk7CisgICAgdm9pZCBiaW5kR2Vu
ZXJpY0F0b21pY0NvdW50ZXJCdWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSk7CisgICAgdm9pZCBi
aW5kSW5kZXhlZEF0b21pY0NvdW50ZXJCdWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSk7CisgICAg
dm9pZCBiaW5kR2VuZXJpY1NoYWRlclN0b3JhZ2VCdWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSk7
CisgICAgdm9pZCBiaW5kSW5kZXhlZFNoYWRlclN0b3JhZ2VCdWZmZXIoR0x1aW50IGJ1ZmZlckhh
bmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIg
c2l6ZSk7CiAgICAgdm9pZCBiaW5kQ29weVJlYWRCdWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSk7
CiAgICAgdm9pZCBiaW5kQ29weVdyaXRlQnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUpOwogICAg
IHZvaWQgYmluZFBpeGVsUGFja0J1ZmZlcihHTHVpbnQgYnVmZmVySGFuZGxlKTsKICAgICB2b2lk
IGJpbmRQaXhlbFVucGFja0J1ZmZlcihHTHVpbnQgYnVmZmVySGFuZGxlKTsKICAgICB2b2lkIHVz
ZVByb2dyYW0oR0x1aW50IHByb2dyYW0pOwogICAgIHZvaWQgYmluZFRyYW5zZm9ybUZlZWRiYWNr
KEdMdWludCB0cmFuc2Zvcm1GZWVkYmFja0hhbmRsZSk7CisgICAgdm9pZCBiaW5kRHJhd0luZGly
ZWN0QnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUpOwogCiAgICAgRXJyb3IgYmVnaW5RdWVyeShH
TGVudW0gdGFyZ2V0LCBHTHVpbnQgcXVlcnkpOwogICAgIEVycm9yIGVuZFF1ZXJ5KEdMZW51bSB0
YXJnZXQpOwpAQCAtMTU1LDYgKzE3MiwyMSBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGlj
IFZhbGlkYXRpb25Db250ZXh0CiAgICAgdm9pZCBnZXRRdWVyeU9iamVjdHVpNjR2KEdMdWludCBp
ZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQ2NCAqcGFyYW1zKTsKIAogICAgIHZvaWQgc2V0VmVydGV4
QXR0cmliRGl2aXNvcihHTHVpbnQgaW5kZXgsIEdMdWludCBkaXZpc29yKTsKKyAgICB2b2lkIHNl
dFZlcnRleEJpbmRpbmdEaXZpc29yKEdMdWludCBiaW5kaW5nSW5kZXgsIEdMdWludCBkaXZpc29y
KTsKKworICAgIHZvaWQgZ2V0QnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IHBuYW1lLCBHTGludCAqcGFyYW1zKTsKKyAgICB2b2lkIGdldEZyYW1lYnVmZmVyQXR0YWNobWVu
dFBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCAqcGFyYW1zKTsKKworICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVyZnYoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0VGV4UGFyYW1ldGVy
aXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKKyAgICB2b2lk
IHRleFBhcmFtZXRlcmYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFt
KTsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmZ2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwg
Y29uc3QgR0xmbG9hdCAqcGFyYW1zKTsKKyAgICB2b2lkIHRleFBhcmFtZXRlcmkoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CisgICAgdm9pZCB0ZXhQYXJhbWV0ZXJp
dihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwogCiAg
ICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaShHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBH
TGludCBwYXJhbSk7CiAgICAgdm9pZCBzYW1wbGVyUGFyYW1ldGVyaXYoR0x1aW50IHNhbXBsZXIs
IEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtKTsKQEAgLTE2Niw2ICsxOTgsMTQgQEAg
Y2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBWYWxpZGF0aW9uQ29udGV4dAogCiAgICAgdm9p
ZCBwcm9ncmFtUGFyYW1ldGVyaShHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCB2
YWx1ZSk7CiAKKyAgICBHTHVpbnQgZ2V0UHJvZ3JhbVJlc291cmNlSW5kZXgoR0x1aW50IHByb2dy
YW0sIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBjb25zdCBHTGNoYXIgKm5hbWUpOworICAgIHZv
aWQgZ2V0UHJvZ3JhbVJlc291cmNlTmFtZShHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hh
ciAqbmFtZSk7CisKICAgICBCdWZmZXIgKmdldEJ1ZmZlcihHTHVpbnQgaGFuZGxlKSBjb25zdDsK
ICAgICBGZW5jZU5WICpnZXRGZW5jZU5WKEdMdWludCBoYW5kbGUpOwogICAgIEZlbmNlU3luYyAq
Z2V0RmVuY2VTeW5jKEdMc3luYyBoYW5kbGUpIGNvbnN0OwpAQCAtMTkzLDE2ICsyMzMsMTUgQEAg
Y2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBWYWxpZGF0aW9uQ29udGV4dAogCiAgICAgYm9v
bCBpc1NhbXBsZXIoR0x1aW50IHNhbXBsZXJOYW1lKSBjb25zdDsKIAotICAgIGJvb2wgaXNUZXh0
dXJlR2VuZXJhdGVkKEdMdWludCB0ZXh0dXJlKSBjb25zdDsKLSAgICBib29sIGlzQnVmZmVyR2Vu
ZXJhdGVkKEdMdWludCBidWZmZXIpIGNvbnN0OwotICAgIGJvb2wgaXNSZW5kZXJidWZmZXJHZW5l
cmF0ZWQoR0x1aW50IHJlbmRlcmJ1ZmZlcikgY29uc3Q7Ci0gICAgYm9vbCBpc0ZyYW1lYnVmZmVy
R2VuZXJhdGVkKEdMdWludCBmcmFtZWJ1ZmZlcikgY29uc3Q7CiAgICAgYm9vbCBpc1ZlcnRleEFy
cmF5R2VuZXJhdGVkKEdMdWludCB2ZXJ0ZXhBcnJheSk7CiAgICAgYm9vbCBpc1RyYW5zZm9ybUZl
ZWRiYWNrR2VuZXJhdGVkKEdMdWludCB2ZXJ0ZXhBcnJheSk7CiAKICAgICB2b2lkIGdldEJvb2xl
YW52KEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpwYXJhbXMpOworICAgIHZvaWQgZ2V0Qm9vbGVh
bnZJbXBsKEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpwYXJhbXMpOwogICAgIHZvaWQgZ2V0Rmxv
YXR2KEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKKyAgICB2b2lkIGdldEZsb2F0dklt
cGwoR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOwogICAgIHZvaWQgZ2V0SW50ZWdlcnYo
R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKKyAgICB2b2lkIGdldEludGVnZXJ2SW1wbChH
TGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwogICAgIHZvaWQgZ2V0SW50ZWdlcjY0dihHTGVu
dW0gcG5hbWUsIEdMaW50NjQgKnBhcmFtcyk7CiAgICAgdm9pZCBnZXRQb2ludGVydihHTGVudW0g
cG5hbWUsIHZvaWQgKipwYXJhbXMpIGNvbnN0OwogICAgIHZvaWQgZ2V0Qm9vbGVhbmlfdihHTGVu
dW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiAqZGF0YSk7CkBAIC0yMTEsNyArMjUw
LDkgQEAgY2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBWYWxpZGF0aW9uQ29udGV4dAogCiAg
ICAgdm9pZCBhY3RpdmVUZXh0dXJlKEdMZW51bSB0ZXh0dXJlKTsKICAgICB2b2lkIGJsZW5kQ29s
b3IoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwgR0xjbGFtcGYg
YWxwaGEpOworICAgIHZvaWQgYmxlbmRFcXVhdGlvbihHTGVudW0gbW9kZSk7CiAgICAgdm9pZCBi
bGVuZEVxdWF0aW9uU2VwYXJhdGUoR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpOwor
ICAgIHZvaWQgYmxlbmRGdW5jKEdMZW51bSBzZmFjdG9yLCBHTGVudW0gZGZhY3Rvcik7CiAgICAg
dm9pZCBibGVuZEZ1bmNTZXBhcmF0ZShHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVu
dW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSk7CiAgICAgdm9pZCBjbGVhckNvbG9yKEdMY2xh
bXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBmIGFscGhhKTsK
ICAgICB2b2lkIGNsZWFyRGVwdGhmKEdMY2xhbXBmIGRlcHRoKTsKQEAgLTI0MywyMyArMjg0LDM1
IEBAIGNsYXNzIENvbnRleHQgZmluYWwgOiBwdWJsaWMgVmFsaWRhdGlvbkNvbnRleHQKICAgICB2
b2lkIHZlcnRleEF0dHJpYjNmdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcyk7
CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZihHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9h
dCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWI0ZnYoR0x1
aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpOworICAgIHZvaWQgdmVydGV4QXR0cmli
Rm9ybWF0KEdMdWludCBhdHRyaWJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCByZWxhdGl2ZU9mZnNldCk7CisgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJJRm9ybWF0KEdMdWludCBhdHRyaWJJbmRleCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5
cGUsIEdMdWludCByZWxhdGl2ZU9mZnNldCk7CisgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJCaW5kaW5n
KEdMdWludCBhdHRyaWJJbmRleCwgR0x1aW50IGJpbmRpbmdJbmRleCk7CiAgICAgdm9pZCB2ZXJ0
ZXhBdHRyaWJQb2ludGVyKEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwdHIpOwotICAgIHZvaWQgdmlld3BvcnQoR0xp
bnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotCiAgICAgdm9p
ZCB2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcG9pbnRlcik7Cisg
ICAgdm9pZCB2aWV3cG9ydChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCk7CisKICAgICB2b2lkIHZlcnRleEF0dHJpYkk0aShHTHVpbnQgaW5kZXgsIEdMaW50
IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpOwogICAgIHZvaWQgdmVydGV4QXR0cmliSTR1
aShHTHVpbnQgaW5kZXgsIEdMdWludCB4LCBHTHVpbnQgeSwgR0x1aW50IHosIEdMdWludCB3KTsK
ICAgICB2b2lkIHZlcnRleEF0dHJpYkk0aXYoR0x1aW50IGluZGV4LCBjb25zdCBHTGludCAqdik7
CiAgICAgdm9pZCB2ZXJ0ZXhBdHRyaWJJNHVpdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMdWludCAq
dik7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJpdihHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFt
ZSwgR0xpbnQgKnBhcmFtcyk7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJmdihHTHVpbnQgaW5k
ZXgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKKyAgICB2b2lkIGdldFZlcnRleEF0
dHJpYklpdihHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CisgICAg
dm9pZCBnZXRWZXJ0ZXhBdHRyaWJJdWl2KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHVp
bnQgKnBhcmFtcyk7CisgICAgdm9pZCBnZXRWZXJ0ZXhBdHRyaWJQb2ludGVydihHTHVpbnQgaW5k
ZXgsIEdMZW51bSBwbmFtZSwgR0x2b2lkICoqcG9pbnRlcik7CiAKICAgICB2b2lkIGRlYnVnTWVz
c2FnZUNvbnRyb2woR0xlbnVtIHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCkBAIC0yOTEsMjcgKzM0NCwyOSBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDog
cHVibGljIFZhbGlkYXRpb25Db250ZXh0CiAgICAgdm9pZCBjbGVhckJ1ZmZlcml2KEdMZW51bSBi
dWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIGNvbnN0IEdMaW50ICp2YWx1ZXMpOwogICAgIHZvaWQg
Y2xlYXJCdWZmZXJmaShHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3YnVmZmVyLCBHTGZsb2F0IGRl
cHRoLCBHTGludCBzdGVuY2lsKTsKIAotICAgIEVycm9yIGRyYXdBcnJheXMoR0xlbnVtIG1vZGUs
IEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KTsKLSAgICBFcnJvciBkcmF3QXJyYXlzSW5zdGFu
Y2VkKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0
YW5jZUNvdW50KTsKLQotICAgIEVycm9yIGRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNl
cywKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW5kZXhSYW5nZSAmaW5kZXhSYW5nZSk7
Ci0gICAgRXJyb3IgZHJhd0VsZW1lbnRzSW5zdGFuY2VkKEdMZW51bSBtb2RlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGluc3RhbmNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgSW5kZXhSYW5nZSAmaW5kZXhSYW5nZSk7Ci0gICAgRXJyb3IgZHJhd1JhbmdlRWxlbWVudHMo
R0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0YXJ0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBlbmQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmlu
ZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW5kZXhSYW5nZSAmaW5k
ZXhSYW5nZSk7CisgICAgdm9pZCBkcmF3QXJyYXlzKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwg
R0xzaXplaSBjb3VudCk7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5zdGFuY2VkKEdMZW51bSBtb2Rl
LCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZUNvdW50KTsKKwor
ICAgIHZvaWQgZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpOworICAgIHZvaWQgZHJhd0VsZW1l
bnRzSW5zdGFuY2VkKEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2Vz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEluZGV4UmFuZ2UgJmluZGV4UmFuZ2Up
OworICAgIHZvaWQgZHJhd1JhbmdlRWxlbWVudHMoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgSW5kZXhSYW5nZSAmaW5kZXhSYW5nZSk7CisgICAgdm9pZCBkcmF3QXJyYXlzSW5k
aXJlY3QoR0xlbnVtIG1vZGUsIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpOworICAgIHZvaWQgZHJh
d0VsZW1lbnRzSW5kaXJlY3QoR0xlbnVtIG1vZGUsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQg
KmluZGlyZWN0KTsKIAogICAgIHZvaWQgYmxpdEZyYW1lYnVmZmVyKEdMaW50IHNyY1gwLAogICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1kwLApAQCAtNDY3LDE0ICs1MjIsMjAgQEAg
Y2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBWYWxpZGF0aW9uQ29udGV4dAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbWFnZVNpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmRhdGEpOwogICAgIHZvaWQgY29weVRl
eHR1cmVDSFJPTUlVTShHTHVpbnQgc291cmNlSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHNvdXJjZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZGVzdFRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRlc3RJ
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZGVzdExldmVsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gdW5wYWNrRmxpcFksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrVW5tdWx0aXBseUFscGhhKTsKICAgICB2b2lkIGNv
cHlTdWJUZXh0dXJlQ0hST01JVU0oR0x1aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBzb3VyY2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGRlc3RUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBkZXN0SWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IGRlc3RMZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKQEAgLTQ4OCwxMCArNTQ5LDggQEAg
Y2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBWYWxpZGF0aW9uQ29udGV4dAogCiAgICAgdm9p
ZCBnZW5lcmF0ZU1pcG1hcChHTGVudW0gdGFyZ2V0KTsKIAotICAgIEdMYm9vbGVhbiBlbmFibGVF
eHRlbnNpb24oY29uc3QgY2hhciAqbmFtZSk7Ci0KLSAgICBFcnJvciBmbHVzaCgpOwotICAgIEVy
cm9yIGZpbmlzaCgpOworICAgIHZvaWQgZmx1c2goKTsKKyAgICB2b2lkIGZpbmlzaCgpOwogCiAg
ICAgdm9pZCBnZXRCdWZmZXJQb2ludGVydihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIHZv
aWQgKipwYXJhbXMpOwogICAgIEdMdm9pZCAqbWFwQnVmZmVyKEdMZW51bSB0YXJnZXQsIEdMZW51
bSBhY2Nlc3MpOwpAQCAtNTA4LDYgKzU2NywxNCBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVi
bGljIFZhbGlkYXRpb25Db250ZXh0CiAgICAgdm9pZCBwb3BHcm91cE1hcmtlcigpOwogCiAgICAg
dm9pZCBiaW5kVW5pZm9ybUxvY2F0aW9uKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwg
Y29uc3QgR0xjaGFyICpuYW1lKTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xlbnVt
IHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCk7CisgICAgdm9pZCByZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNh
bXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlu
dGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBoZWlnaHQpOworCisgICAgdm9pZCBnZXRTeW5jaXYoR0xzeW5jIHN5bmMsIEdMZW51bSBw
bmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICp2YWx1ZXMpOwog
CiAgICAgLy8gQ0hST01JVU1fZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcwogICAgIHZvaWQgc2V0
Q292ZXJhZ2VNb2R1bGF0aW9uKEdMZW51bSBjb21wb25lbnRzKTsKQEAgLTU3OSw2ICs2NDYsMTEy
IEBAIGNsYXNzIENvbnRleHQgZmluYWwgOiBwdWJsaWMgVmFsaWRhdGlvbkNvbnRleHQKICAgICB2
b2lkIGJ1ZmZlckRhdGEoR0xlbnVtIHRhcmdldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCBHTHZv
aWQgKmRhdGEsIEdMZW51bSB1c2FnZSk7CiAgICAgdm9pZCBidWZmZXJTdWJEYXRhKEdMZW51bSB0
YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCBHTHZvaWQgKmRh
dGEpOwogICAgIHZvaWQgYXR0YWNoU2hhZGVyKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVy
KTsKKyAgICB2b2lkIGJpbmRBdHRyaWJMb2NhdGlvbihHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGlu
ZGV4LCBjb25zdCBHTGNoYXIgKm5hbWUpOworICAgIHZvaWQgYmluZEJ1ZmZlcihHTGVudW0gdGFy
Z2V0LCBHTHVpbnQgYnVmZmVyKTsKKyAgICB2b2lkIGJpbmRCdWZmZXJCYXNlKEdMZW51bSB0YXJn
ZXQsIEdMdWludCBpbmRleCwgR0x1aW50IGJ1ZmZlcik7CisgICAgdm9pZCBiaW5kQnVmZmVyUmFu
Z2UoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZmZlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaXB0ciBzaXplKTsKKyAgICB2b2lkIGJpbmRGcmFtZWJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBH
THVpbnQgZnJhbWVidWZmZXIpOworICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcihHTGVudW0gdGFy
Z2V0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKTsKKworICAgIHZvaWQgdGV4U3RvcmFnZTJETXVsdGlz
YW1wbGUoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
d2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBmaXhlZHNhbXBsZWxv
Y2F0aW9ucyk7CisKKyAgICB2b2lkIGdldE11bHRpc2FtcGxlZnYoR0xlbnVtIHBuYW1lLCBHTHVp
bnQgaW5kZXgsIEdMZmxvYXQgKnZhbCk7CisKKyAgICB2b2lkIGNvcHlCdWZmZXJTdWJEYXRhKEdM
ZW51bSByZWFkVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHdyaXRl
VGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgcmVhZE9mZnNldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIHdyaXRlT2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKTsKKworICAgIEdMZW51bSBjaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKEdMZW51bSB0YXJnZXQpOworICAgIHZvaWQgY29tcGlsZVNoYWRl
cihHTHVpbnQgc2hhZGVyKTsKKyAgICB2b2lkIGRlbGV0ZUJ1ZmZlcnMoR0xzaXplaSBuLCBjb25z
dCBHTHVpbnQgKmJ1ZmZlcnMpOworICAgIHZvaWQgZGVsZXRlRnJhbWVidWZmZXJzKEdMc2l6ZWkg
biwgY29uc3QgR0x1aW50ICpmcmFtZWJ1ZmZlcnMpOworICAgIHZvaWQgZGVsZXRlUmVuZGVyYnVm
ZmVycyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqcmVuZGVyYnVmZmVycyk7CisgICAgdm9pZCBk
ZWxldGVUZXh0dXJlcyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqdGV4dHVyZXMpOworICAgIHZv
aWQgZGV0YWNoU2hhZGVyKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKTsKKyAgICB2b2lk
IGdlbkJ1ZmZlcnMoR0xzaXplaSBuLCBHTHVpbnQgKmJ1ZmZlcnMpOworICAgIHZvaWQgZ2VuRnJh
bWVidWZmZXJzKEdMc2l6ZWkgbiwgR0x1aW50ICpmcmFtZWJ1ZmZlcnMpOworICAgIHZvaWQgZ2Vu
UmVuZGVyYnVmZmVycyhHTHNpemVpIG4sIEdMdWludCAqcmVuZGVyYnVmZmVycyk7CisgICAgdm9p
ZCBnZW5UZXh0dXJlcyhHTHNpemVpIG4sIEdMdWludCAqdGV4dHVyZXMpOworICAgIHZvaWQgZ2V0
QWN0aXZlQXR0cmliKEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZnNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50ICpzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAq
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm5hbWUpOworICAgIHZvaWQg
Z2V0QWN0aXZlVW5pZm9ybShHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZnNp
emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgKnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lKTsK
KyAgICB2b2lkIGdldEF0dGFjaGVkU2hhZGVycyhHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBtYXhj
b3VudCwgR0xzaXplaSAqY291bnQsIEdMdWludCAqc2hhZGVycyk7CisgICAgR0xpbnQgZ2V0QXR0
cmliTG9jYXRpb24oR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciAqbmFtZSk7CisgICAgdm9p
ZCBnZXRQcm9ncmFtaXYoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFt
cyk7CisgICAgdm9pZCBnZXRJbmZvTG9nKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZnNpemUs
IEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICppbmZvbG9nKTsKKyAgICB2b2lkIGdldFNoYWRlcml2
KEdMdWludCBzaGFkZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CisgICAgdm9pZCBn
ZXRTaGFkZXJJbmZvTG9nKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSAq
bGVuZ3RoLCBHTGNoYXIgKmluZm9sb2cpOworICAgIHZvaWQgZ2V0U2hhZGVyUHJlY2lzaW9uRm9y
bWF0KEdMZW51bSBzaGFkZXJ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwcmVjaXNpb250eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50ICpyYW5nZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cHJlY2lzaW9uKTsKKyAgICB2b2lkIGdldFNoYWRlclNvdXJjZShHTHVpbnQgc2hhZGVyLCBHTHNp
emVpIGJ1ZnNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpzb3VyY2UpOworICAgIHZvaWQg
Z2V0VW5pZm9ybWZ2KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCAqcGFy
YW1zKTsKKyAgICB2b2lkIGdldFVuaWZvcm1pdihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRp
b24sIEdMaW50ICpwYXJhbXMpOworICAgIEdMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihHTHVpbnQg
cHJvZ3JhbSwgY29uc3QgR0xjaGFyICpuYW1lKTsKKyAgICBHTGJvb2xlYW4gaXNCdWZmZXIoR0x1
aW50IGJ1ZmZlcik7CisgICAgR0xib29sZWFuIGlzRW5hYmxlZChHTGVudW0gY2FwKTsKKyAgICBH
TGJvb2xlYW4gaXNGcmFtZWJ1ZmZlcihHTHVpbnQgZnJhbWVidWZmZXIpOworICAgIEdMYm9vbGVh
biBpc1Byb2dyYW0oR0x1aW50IHByb2dyYW0pOworICAgIEdMYm9vbGVhbiBpc1JlbmRlcmJ1ZmZl
cihHTHVpbnQgcmVuZGVyYnVmZmVyKTsKKyAgICBHTGJvb2xlYW4gaXNTaGFkZXIoR0x1aW50IHNo
YWRlcik7CisgICAgR0xib29sZWFuIGlzVGV4dHVyZShHTHVpbnQgdGV4dHVyZSk7CisgICAgdm9p
ZCBsaW5rUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSk7CisgICAgdm9pZCByZWxlYXNlU2hhZGVyQ29t
cGlsZXIoKTsKKyAgICB2b2lkIHNoYWRlckJpbmFyeShHTHNpemVpIG4sCisgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x1aW50ICpzaGFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBiaW5hcnlmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpi
aW5hcnksCisgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgpOworICAgIHZvaWQg
c2hhZGVyU291cmNlKEdMdWludCBzaGFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmNvbnN0ICpzdHJp
bmcsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKmxlbmd0aCk7CisgICAgdm9p
ZCBzdGVuY2lsRnVuYyhHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzayk7CisgICAg
dm9pZCBzdGVuY2lsTWFzayhHTHVpbnQgbWFzayk7CisgICAgdm9pZCBzdGVuY2lsT3AoR0xlbnVt
IGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKTsKKyAgICB2b2lkIHVuaWZvcm0xZihH
TGludCBsb2NhdGlvbiwgR0xmbG9hdCB4KTsKKyAgICB2b2lkIHVuaWZvcm0xZnYoR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpOworICAgIHZvaWQgdW5pZm9y
bTFpKEdMaW50IGxvY2F0aW9uLCBHTGludCB4KTsKKyAgICB2b2lkIHVuaWZvcm0xaXYoR0xpbnQg
bG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KTsKKyAgICB2b2lkIHVuaWZv
cm0yZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpOworICAgIHZvaWQgdW5p
Zm9ybTJmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7
CisgICAgdm9pZCB1bmlmb3JtMmkoR0xpbnQgbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHkpOwor
ICAgIHZvaWQgdW5pZm9ybTJpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0xpbnQgKnYpOworICAgIHZvaWQgdW5pZm9ybTNmKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgs
IEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKKyAgICB2b2lkIHVuaWZvcm0zZnYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpOworICAgIHZvaWQgdW5pZm9ybTNp
KEdMaW50IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KTsKKyAgICB2b2lkIHVu
aWZvcm0zaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KTsK
KyAgICB2b2lkIHVuaWZvcm00ZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHks
IEdMZmxvYXQgeiwgR0xmbG9hdCB3KTsKKyAgICB2b2lkIHVuaWZvcm00ZnYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpOworICAgIHZvaWQgdW5pZm9ybTRp
KEdMaW50IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KTsKKyAg
ICB2b2lkIHVuaWZvcm00aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
aW50ICp2KTsKKyAgICB2b2lkIHVuaWZvcm1NYXRyaXgyZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKKyAg
ICB2b2lkIHVuaWZvcm1NYXRyaXgzZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKKyAgICB2b2lkIHVuaWZv
cm1NYXRyaXg0ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKKyAgICB2b2lkIHZhbGlkYXRlUHJvZ3JhbShH
THVpbnQgcHJvZ3JhbSk7CiAKICAgICB2b2lkIGhhbmRsZUVycm9yKGNvbnN0IEVycm9yICZlcnJv
cikgb3ZlcnJpZGU7CiAKQEAgLTU5MiwxNSArNzY1LDI0IEBAIGNsYXNzIENvbnRleHQgZmluYWwg
OiBwdWJsaWMgVmFsaWRhdGlvbkNvbnRleHQKICAgICBFR0xlbnVtIGdldENsaWVudFR5cGUoKSBj
b25zdDsKICAgICBFR0xlbnVtIGdldFJlbmRlckJ1ZmZlcigpIGNvbnN0OwogCi0gICAgY29uc3Qg
Y2hhciAqZ2V0UmVuZGVyZXJTdHJpbmcoKSBjb25zdDsKKyAgICBjb25zdCBHTHVieXRlICpnZXRT
dHJpbmcoR0xlbnVtIG5hbWUpIGNvbnN0OworICAgIGNvbnN0IEdMdWJ5dGUgKmdldFN0cmluZ2ko
R0xlbnVtIG5hbWUsIEdMdWludCBpbmRleCkgY29uc3Q7CiAKLSAgICBjb25zdCBjaGFyICpnZXRF
eHRlbnNpb25TdHJpbmcoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyICpnZXRFeHRlbnNpb25TdHJp
bmcoc2l6ZV90IGlkeCkgY29uc3Q7CiAgICAgc2l6ZV90IGdldEV4dGVuc2lvblN0cmluZ0NvdW50
KCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcXVlc3RFeHRlbnNpb24oY29uc3QgY2hhciAqbmFtZSk7
CisgICAgc2l6ZV90IGdldFJlcXVlc3RhYmxlRXh0ZW5zaW9uU3RyaW5nQ291bnQoKSBjb25zdDsK
KwogICAgIHJ4OjpDb250ZXh0SW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKSBjb25zdCB7IHJldHVy
biBtSW1wbGVtZW50YXRpb24uZ2V0KCk7IH0KICAgICBjb25zdCBXb3JrYXJvdW5kcyAmZ2V0V29y
a2Fyb3VuZHMoKSBjb25zdDsKIAorICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpdihH
TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworICAgIHZvaWQgc2V0
RnJhbWVidWZmZXJQYXJhbWV0ZXJpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQg
cGFyYW0pOworCisgICAgRXJyb3IgZ2V0U2NyYXRjaEJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6
ZSwgYW5nbGU6Ok1lbW9yeUJ1ZmZlciAqKnNjcmF0Y2hCdWZmZXJPdXQpIGNvbnN0OworCisgICAg
dm9pZCBkaXNwYXRjaENvbXB1dGUoR0x1aW50IG51bUdyb3Vwc1gsIEdMdWludCBudW1Hcm91cHNZ
LCBHTHVpbnQgbnVtR3JvdXBzWik7CisKICAgcHJpdmF0ZToKICAgICB2b2lkIHN5bmNSZW5kZXJl
clN0YXRlKCk7CiAgICAgdm9pZCBzeW5jUmVuZGVyZXJTdGF0ZShjb25zdCBTdGF0ZTo6RGlydHlC
aXRzICZiaXRNYXNrLCBjb25zdCBTdGF0ZTo6RGlydHlPYmplY3RzICZvYmplY3RNYXNrKTsKQEAg
LTYxMCw3ICs3OTIsNiBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIFZhbGlkYXRpb25D
b250ZXh0CiAgICAgdm9pZCBzeW5jU3RhdGVGb3JCbGl0KCk7CiAgICAgVmVydGV4QXJyYXkgKmNo
ZWNrVmVydGV4QXJyYXlBbGxvY2F0aW9uKEdMdWludCB2ZXJ0ZXhBcnJheUhhbmRsZSk7CiAgICAg
VHJhbnNmb3JtRmVlZGJhY2sgKmNoZWNrVHJhbnNmb3JtRmVlZGJhY2tBbGxvY2F0aW9uKEdMdWlu
dCB0cmFuc2Zvcm1GZWVkYmFjayk7Ci0gICAgRnJhbWVidWZmZXIgKmNoZWNrRnJhbWVidWZmZXJB
bGxvY2F0aW9uKEdMdWludCBmcmFtZWJ1ZmZlckhhbmRsZSk7CiAKICAgICB2b2lkIGRldGFjaEJ1
ZmZlcihHTHVpbnQgYnVmZmVyKTsKICAgICB2b2lkIGRldGFjaFRleHR1cmUoR0x1aW50IHRleHR1
cmUpOwpAQCAtNjIxLDkgKzgwMiwxMCBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIFZh
bGlkYXRpb25Db250ZXh0CiAgICAgdm9pZCBkZXRhY2hTYW1wbGVyKEdMdWludCBzYW1wbGVyKTsK
IAogICAgIHZvaWQgaW5pdFJlbmRlcmVyU3RyaW5nKCk7CisgICAgdm9pZCBpbml0VmVyc2lvblN0
cmluZ3MoKTsKICAgICB2b2lkIGluaXRFeHRlbnNpb25TdHJpbmdzKCk7CiAKLSAgICB2b2lkIGlu
aXRDYXBzKGJvb2wgd2ViR0xDb250ZXh0KTsKKyAgICB2b2lkIGluaXRDYXBzKGNvbnN0IGVnbDo6
RGlzcGxheUV4dGVuc2lvbnMgJmRpc3BsYXlFeHRlbnNpb25zKTsKICAgICB2b2lkIHVwZGF0ZUNh
cHMoKTsKICAgICB2b2lkIGluaXRXb3JrYXJvdW5kcygpOwogCkBAIC02NDMsMTcgKzgyNSwxMSBA
QCBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIFZhbGlkYXRpb25Db250ZXh0CiAKICAgICBT
dGF0ZSBtR0xTdGF0ZTsKIAotICAgIGludCBtQ2xpZW50TWFqb3JWZXJzaW9uOwotICAgIGludCBt
Q2xpZW50TWlub3JWZXJzaW9uOwotCiAgICAgY29uc3QgZWdsOjpDb25maWcgKm1Db25maWc7CiAg
ICAgRUdMZW51bSBtQ2xpZW50VHlwZTsKIAogICAgIFRleHR1cmVNYXAgbVplcm9UZXh0dXJlczsK
IAotICAgIFJlc291cmNlTWFwPEZyYW1lYnVmZmVyPiBtRnJhbWVidWZmZXJNYXA7Ci0gICAgSGFu
ZGxlQWxsb2NhdG9yIG1GcmFtZWJ1ZmZlckhhbmRsZUFsbG9jYXRvcjsKLQogICAgIFJlc291cmNl
TWFwPEZlbmNlTlY+IG1GZW5jZU5WTWFwOwogICAgIEhhbmRsZUFsbG9jYXRvciBtRmVuY2VOVkhh
bmRsZUFsbG9jYXRvcjsKIApAQCAtNjY2LDkgKzg0MiwxMyBAQCBjbGFzcyBDb250ZXh0IGZpbmFs
IDogcHVibGljIFZhbGlkYXRpb25Db250ZXh0CiAgICAgUmVzb3VyY2VNYXA8VHJhbnNmb3JtRmVl
ZGJhY2s+IG1UcmFuc2Zvcm1GZWVkYmFja01hcDsKICAgICBIYW5kbGVBbGxvY2F0b3IgbVRyYW5z
Zm9ybUZlZWRiYWNrQWxsb2NhdG9yOwogCisgICAgY29uc3QgY2hhciAqbVZlcnNpb25TdHJpbmc7
CisgICAgY29uc3QgY2hhciAqbVNoYWRpbmdMYW5ndWFnZVN0cmluZzsKICAgICBjb25zdCBjaGFy
ICptUmVuZGVyZXJTdHJpbmc7CiAgICAgY29uc3QgY2hhciAqbUV4dGVuc2lvblN0cmluZzsKICAg
ICBzdGQ6OnZlY3Rvcjxjb25zdCBjaGFyICo+IG1FeHRlbnNpb25TdHJpbmdzOworICAgIGNvbnN0
IGNoYXIgKm1SZXF1ZXN0YWJsZUV4dGVuc2lvblN0cmluZzsKKyAgICBzdGQ6OnZlY3Rvcjxjb25z
dCBjaGFyICo+IG1SZXF1ZXN0YWJsZUV4dGVuc2lvblN0cmluZ3M7CiAKICAgICAvLyBSZWNvcmRl
ZCBlcnJvcnMKICAgICB0eXBlZGVmIHN0ZDo6c2V0PEdMZW51bT4gRXJyb3JTZXQ7CkBAIC02ODIs
OCArODYyLDggQEAgY2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBWYWxpZGF0aW9uQ29udGV4
dAogICAgIEdMZW51bSBtUmVzZXRTdHJhdGVneTsKICAgICBib29sIG1Sb2J1c3RBY2Nlc3M7CiAg
ICAgZWdsOjpTdXJmYWNlICptQ3VycmVudFN1cmZhY2U7Ci0KLSAgICBSZXNvdXJjZU1hbmFnZXIg
Km1SZXNvdXJjZU1hbmFnZXI7CisgICAgRnJhbWVidWZmZXIgKm1TdXJmYWNlbGVzc0ZyYW1lYnVm
ZmVyOworICAgIGJvb2wgbVdlYkdMQ29udGV4dDsKIAogICAgIFN0YXRlOjpEaXJ0eUJpdHMgbVRl
eEltYWdlRGlydHlCaXRzOwogICAgIFN0YXRlOjpEaXJ0eU9iamVjdHMgbVRleEltYWdlRGlydHlP
YmplY3RzOwpAQCAtNjk1LDYgKzg3NSw5IEBAIGNsYXNzIENvbnRleHQgZmluYWwgOiBwdWJsaWMg
VmFsaWRhdGlvbkNvbnRleHQKICAgICBTdGF0ZTo6RGlydHlPYmplY3RzIG1CbGl0RGlydHlPYmpl
Y3RzOwogCiAgICAgV29ya2Fyb3VuZHMgbVdvcmthcm91bmRzOworCisgICAgLy8gTm90IHJlYWxs
eSBhIHByb3BlcnR5IG9mIGNvbnRleHQgc3RhdGUuIFRoZSBzaXplIGFuZCBjb250ZXh0cyBjaGFu
Z2UgcGVyLWFwaS1jYWxsLgorICAgIG11dGFibGUgYW5nbGU6OlNjcmF0Y2hCdWZmZXIgbVNjcmF0
Y2hCdWZmZXI7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0U3RhdGUuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHRTdGF0ZS5jcHAKaW5kZXggZGFlMzE5
YzA4ZjM2Mjc5YTkzZTI5MTQ5NTdmOWIzMzdkNmMwNzJiZC4uNDUwZTBlZjcyNjRhYWRlYTgzNjJk
NmE0Mjg1NDk0ZTlmYjFiNjMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0NvbnRleHRTdGF0ZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL0NvbnRleHRTdGF0ZS5jcHAKQEAgLTE0LDI4ICsxNCw5MyBAQAogbmFt
ZXNwYWNlIGdsCiB7CiAKLUNvbnRleHRTdGF0ZTo6Q29udGV4dFN0YXRlKHVpbnRwdHJfdCBjb250
ZXh0SW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjbGllbnRNYWpvclZlcnNp
b25JbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNsaWVudE1pbm9yVmVyc2lv
bkluLAorbmFtZXNwYWNlCit7CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgordXNpbmcgQ29udGV4
dFN0YXRlTWVtYmVyID0gVCAqKENvbnRleHRTdGF0ZTo6Kik7CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorVCAqQWxsb2NhdGVPckdldFNoYXJlZFJlc291cmNlTWFuYWdlcihjb25zdCBDb250ZXh0
U3RhdGUgKnNoYXJlQ29udGV4dFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb250ZXh0U3RhdGVNZW1iZXI8VD4gbWVtYmVyKQoreworICAgIGlmIChzaGFyZUNv
bnRleHRTdGF0ZSkKKyAgICB7CisgICAgICAgIFQgKnJlc291cmNlTWFuYWdlciA9ICgqc2hhcmVD
b250ZXh0U3RhdGUpLiptZW1iZXI7CisgICAgICAgIHJlc291cmNlTWFuYWdlci0+YWRkUmVmKCk7
CisgICAgICAgIHJldHVybiByZXNvdXJjZU1hbmFnZXI7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIHJldHVybiBuZXcgVCgpOworICAgIH0KK30KKworVGV4dHVyZU1hbmFnZXIgKkFs
bG9jYXRlT3JHZXRTaGFyZWRUZXh0dXJlTWFuYWdlcihjb25zdCBDb250ZXh0U3RhdGUgKnNoYXJl
Q29udGV4dFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXh0dXJlTWFuYWdlciAqc2hhcmVUZXh0dXJlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dFN0YXRlTWVtYmVyPFRleHR1
cmVNYW5hZ2VyPiBtZW1iZXIpCit7CisgICAgaWYgKHNoYXJlQ29udGV4dFN0YXRlKQorICAgIHsK
KyAgICAgICAgVGV4dHVyZU1hbmFnZXIgKnRleHR1cmVNYW5hZ2VyID0gKCpzaGFyZUNvbnRleHRT
dGF0ZSkuKm1lbWJlcjsKKyAgICAgICAgQVNTRVJUKHNoYXJlVGV4dHVyZXMgPT0gbnVsbHB0ciB8
fCB0ZXh0dXJlTWFuYWdlciA9PSBzaGFyZVRleHR1cmVzKTsKKyAgICAgICAgdGV4dHVyZU1hbmFn
ZXItPmFkZFJlZigpOworICAgICAgICByZXR1cm4gdGV4dHVyZU1hbmFnZXI7CisgICAgfQorICAg
IGVsc2UgaWYgKHNoYXJlVGV4dHVyZXMpCisgICAgeworICAgICAgICBUZXh0dXJlTWFuYWdlciAq
dGV4dHVyZU1hbmFnZXIgPSBzaGFyZVRleHR1cmVzOworICAgICAgICB0ZXh0dXJlTWFuYWdlci0+
YWRkUmVmKCk7CisgICAgICAgIHJldHVybiB0ZXh0dXJlTWFuYWdlcjsKKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBUZXh0dXJlTWFuYWdlcigpOworICAgIH0KK30K
KworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitDb250ZXh0U3RhdGU6OkNvbnRleHRTdGF0
ZShDb250ZXh0SUQgY29udGV4dEluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Q29udGV4dFN0YXRlICpzaGFyZUNvbnRleHRTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRleHR1cmVNYW5hZ2VyICpzaGFyZVRleHR1cmVzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVmVyc2lvbiAmY2xpZW50VmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFN0YXRlICpzdGF0ZUluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Q2FwcyAmY2Fwc0luLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZUNh
cHNNYXAgJnRleHR1cmVDYXBzSW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBF
eHRlbnNpb25zICZleHRlbnNpb25zSW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBSZXNvdXJjZU1hbmFnZXIgKnJlc291cmNlTWFuYWdlckluLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgTGltaXRhdGlvbnMgJmxpbWl0YXRpb25zSW4pCi0gICAgOiBtR0xWZXJz
aW9uKGNsaWVudE1ham9yVmVyc2lvbkluLCBjbGllbnRNaW5vclZlcnNpb25JbiksCisgICAgOiBt
Q2xpZW50VmVyc2lvbihjbGllbnRWZXJzaW9uKSwKICAgICAgIG1Db250ZXh0KGNvbnRleHRJbiks
CiAgICAgICBtU3RhdGUoc3RhdGVJbiksCiAgICAgICBtQ2FwcyhjYXBzSW4pLAogICAgICAgbVRl
eHR1cmVDYXBzKHRleHR1cmVDYXBzSW4pLAogICAgICAgbUV4dGVuc2lvbnMoZXh0ZW5zaW9uc0lu
KSwKLSAgICAgIG1SZXNvdXJjZU1hbmFnZXIocmVzb3VyY2VNYW5hZ2VySW4pLAotICAgICAgbUxp
bWl0YXRpb25zKGxpbWl0YXRpb25zSW4pCisgICAgICBtTGltaXRhdGlvbnMobGltaXRhdGlvbnNJ
biksCisgICAgICBtQnVmZmVycyhBbGxvY2F0ZU9yR2V0U2hhcmVkUmVzb3VyY2VNYW5hZ2VyKHNo
YXJlQ29udGV4dFN0YXRlLCAmQ29udGV4dFN0YXRlOjptQnVmZmVycykpLAorICAgICAgbVNoYWRl
clByb2dyYW1zKAorICAgICAgICAgIEFsbG9jYXRlT3JHZXRTaGFyZWRSZXNvdXJjZU1hbmFnZXIo
c2hhcmVDb250ZXh0U3RhdGUsICZDb250ZXh0U3RhdGU6Om1TaGFkZXJQcm9ncmFtcykpLAorICAg
ICAgbVRleHR1cmVzKEFsbG9jYXRlT3JHZXRTaGFyZWRUZXh0dXJlTWFuYWdlcihzaGFyZUNvbnRl
eHRTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2hhcmVUZXh0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJkNvbnRleHRTdGF0ZTo6bVRleHR1cmVzKSksCisgICAgICBtUmVuZGVyYnVm
ZmVycygKKyAgICAgICAgICBBbGxvY2F0ZU9yR2V0U2hhcmVkUmVzb3VyY2VNYW5hZ2VyKHNoYXJl
Q29udGV4dFN0YXRlLCAmQ29udGV4dFN0YXRlOjptUmVuZGVyYnVmZmVycykpLAorICAgICAgbVNh
bXBsZXJzKEFsbG9jYXRlT3JHZXRTaGFyZWRSZXNvdXJjZU1hbmFnZXIoc2hhcmVDb250ZXh0U3Rh
dGUsICZDb250ZXh0U3RhdGU6Om1TYW1wbGVycykpLAorICAgICAgbUZlbmNlU3luY3MoCisgICAg
ICAgICAgQWxsb2NhdGVPckdldFNoYXJlZFJlc291cmNlTWFuYWdlcihzaGFyZUNvbnRleHRTdGF0
ZSwgJkNvbnRleHRTdGF0ZTo6bUZlbmNlU3luY3MpKSwKKyAgICAgIG1QYXRocyhBbGxvY2F0ZU9y
R2V0U2hhcmVkUmVzb3VyY2VNYW5hZ2VyKHNoYXJlQ29udGV4dFN0YXRlLCAmQ29udGV4dFN0YXRl
OjptUGF0aHMpKSwKKyAgICAgIG1GcmFtZWJ1ZmZlcnMobmV3IEZyYW1lYnVmZmVyTWFuYWdlcigp
KQogewogfQogCiBDb250ZXh0U3RhdGU6On5Db250ZXh0U3RhdGUoKQogeworICAgIC8vIEhhbmRs
ZXMgYXJlIHJlbGVhc2VkIGJ5IHRoZSBDb250ZXh0LgorfQorCitib29sIENvbnRleHRTdGF0ZTo6
aXNXZWJHTDEoKSBjb25zdAoreworICAgIHJldHVybiAobUV4dGVuc2lvbnMud2ViZ2xDb21wYXRp
YmlsaXR5ICYmIG1DbGllbnRWZXJzaW9uLm1ham9yID09IDIpOwogfQogCiBjb25zdCBUZXh0dXJl
Q2FwcyAmQ29udGV4dFN0YXRlOjpnZXRUZXh0dXJlQ2FwKEdMZW51bSBpbnRlcm5hbEZvcm1hdCkg
Y29uc3QKQEAgLTQzLDM3ICsxMDgsMzEgQEAgY29uc3QgVGV4dHVyZUNhcHMgJkNvbnRleHRTdGF0
ZTo6Z2V0VGV4dHVyZUNhcChHTGVudW0gaW50ZXJuYWxGb3JtYXQpIGNvbnN0CiAgICAgcmV0dXJu
IG1UZXh0dXJlQ2Fwcy5nZXQoaW50ZXJuYWxGb3JtYXQpOwogfQogCi1WYWxpZGF0aW9uQ29udGV4
dDo6VmFsaWRhdGlvbkNvbnRleHQoR0xpbnQgY2xpZW50TWFqb3JWZXJzaW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNsaWVudE1pbm9yVmVyc2lvbiwKK1Zh
bGlkYXRpb25Db250ZXh0OjpWYWxpZGF0aW9uQ29udGV4dChjb25zdCBWYWxpZGF0aW9uQ29udGV4
dCAqc2hhcmVDb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
eHR1cmVNYW5hZ2VyICpzaGFyZVRleHR1cmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnNpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU3RhdGUgKnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IENhcHMgJmNhcHMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZUNhcHNNYXAgJnRleHR1cmVDYXBzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lv
bnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VN
YW5hZ2VyICpyZXNvdXJjZU1hbmFnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgTGltaXRhdGlvbnMgJmxpbWl0YXRpb25zLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgc2tpcFZhbGlkYXRpb24pCi0gICAgOiBtU3RhdGUocmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpLAotICAgICAgICAgICAgIGNsaWVudE1ham9y
VmVyc2lvbiwKLSAgICAgICAgICAgICBjbGllbnRNaW5vclZlcnNpb24sCisgICAgOiBtU3RhdGUo
cmVpbnRlcnByZXRfY2FzdDxDb250ZXh0SUQ+KHRoaXMpLAorICAgICAgICAgICAgIHNoYXJlQ29u
dGV4dCA/ICZzaGFyZUNvbnRleHQtPm1TdGF0ZSA6IG51bGxwdHIsCisgICAgICAgICAgICAgc2hh
cmVUZXh0dXJlcywKKyAgICAgICAgICAgICBjbGllbnRWZXJzaW9uLAogICAgICAgICAgICAgIHN0
YXRlLAogICAgICAgICAgICAgIGNhcHMsCiAgICAgICAgICAgICAgdGV4dHVyZUNhcHMsCiAgICAg
ICAgICAgICAgZXh0ZW5zaW9ucywKLSAgICAgICAgICAgICByZXNvdXJjZU1hbmFnZXIsCiAgICAg
ICAgICAgICAgbGltaXRhdGlvbnMpLAotICAgICAgbVNraXBWYWxpZGF0aW9uKHNraXBWYWxpZGF0
aW9uKQorICAgICAgbVNraXBWYWxpZGF0aW9uKHNraXBWYWxpZGF0aW9uKSwKKyAgICAgIG1EaXNw
bGF5VGV4dHVyZVNoYXJlR3JvdXAoc2hhcmVUZXh0dXJlcyAhPSBudWxscHRyKQogewogfQogCiBi
b29sIFZhbGlkYXRpb25Db250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlckluZm8oR0xlbnVtIHBuYW1l
LCBHTGVudW0gKnR5cGUsIHVuc2lnbmVkIGludCAqbnVtUGFyYW1zKQogewotICAgIGlmIChwbmFt
ZSA+PSBHTF9EUkFXX0JVRkZFUjBfRVhUICYmIHBuYW1lIDw9IEdMX0RSQVdfQlVGRkVSMTVfRVhU
KQotICAgIHsKLSAgICAgICAgKnR5cGUgICAgICA9IEdMX0lOVDsKLSAgICAgICAgKm51bVBhcmFt
cyA9IDE7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQogICAgIC8vIFBsZWFzZSBub3Rl
OiB0aGUgcXVlcnkgdHlwZSByZXR1cm5lZCBmb3IgREVQVEhfQ0xFQVJfVkFMVUUgaW4gdGhpcyBp
bXBsZW1lbnRhdGlvbgogICAgIC8vIGlzIEZMT0FUIHJhdGhlciB0aGFuIElOVCwgYXMgd291bGQg
YmUgc3VnZ2VzdGVkIGJ5IHRoZSBHTCBFUyAyLjAgc3BlYy4gVGhpcyBpcyBkdWUKICAgICAvLyB0
byB0aGUgZmFjdCB0aGF0IGl0IGlzIHN0b3JlZCBpbnRlcm5hbGx5IGFzIGEgZmxvYXQsIGFuZCBz
byB3b3VsZCByZXF1aXJlIGNvbnZlcnNpb24KQEAgLTExMCw4ICsxNjksNiBAQCBib29sIFZhbGlk
YXRpb25Db250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlckluZm8oR0xlbnVtIHBuYW1lLCBHTGVudW0g
KnR5cGUsIHVuc2lnbgogICAgICAgICBjYXNlIEdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTOgog
ICAgICAgICBjYXNlIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlM6CiAgICAgICAgIGNh
c2UgR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFOgotICAgICAgICBjYXNlIEdMX01BWF9DT0xPUl9B
VFRBQ0hNRU5UU19FWFQ6Ci0gICAgICAgIGNhc2UgR0xfTUFYX0RSQVdfQlVGRkVSU19FWFQ6CiAg
ICAgICAgIGNhc2UgR0xfTlVNX1NIQURFUl9CSU5BUllfRk9STUFUUzoKICAgICAgICAgY2FzZSBH
TF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFM6CiAgICAgICAgIGNhc2UgR0xfQVJSQVlf
QlVGRkVSX0JJTkRJTkc6CkBAIC0xNzMsOSArMjMwLDEwIEBAIGJvb2wgVmFsaWRhdGlvbkNvbnRl
eHQ6OmdldFF1ZXJ5UGFyYW1ldGVySW5mbyhHTGVudW0gcG5hbWUsIEdMZW51bSAqdHlwZSwgdW5z
aWduCiAgICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgR0xfTUFYX1NBTVBMRVNfQU5HTEU6CisgICAgICAg
IGNhc2UgR0xfTUFYX0RSQVdfQlVGRkVSU19FWFQ6CisgICAgICAgIGNhc2UgR0xfTUFYX0NPTE9S
X0FUVEFDSE1FTlRTX0VYVDoKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFnZXRFeHRlbnNp
b25zKCkuZnJhbWVidWZmZXJNdWx0aXNhbXBsZSkKKyAgICAgICAgICAgIGlmICgoZ2V0Q2xpZW50
TWFqb3JWZXJzaW9uKCkgPCAzKSAmJiAhZ2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJzKQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
QEAgLTI0Nyw3ICszMDUsNyBAQCBib29sIFZhbGlkYXRpb25Db250ZXh0OjpnZXRRdWVyeVBhcmFt
ZXRlckluZm8oR0xlbnVtIHBuYW1lLCBHTGVudW0gKnR5cGUsIHVuc2lnbgogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9NQVhf
QU5JU09UUk9QWV9FWFQ6Ci0gICAgICAgICAgICBpZiAoIWdldEV4dGVuc2lvbnMoKS5tYXhUZXh0
dXJlQW5pc290cm9weSkKKyAgICAgICAgICAgIGlmICghZ2V0RXh0ZW5zaW9ucygpLnRleHR1cmVG
aWx0ZXJBbmlzb3Ryb3BpYykKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB9CkBAIC0zNDYsNiArNDA0LDM2IEBAIGJvb2wgVmFsaWRhdGlv
bkNvbnRleHQ6OmdldFF1ZXJ5UGFyYW1ldGVySW5mbyhHTGVudW0gcG5hbWUsIEdMZW51bSAqdHlw
ZSwgdW5zaWduCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAoZ2V0RXh0ZW5zaW9ucygpLmNs
aWVudEFycmF5cykKKyAgICB7CisgICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNhc2UgR0xfQ0xJRU5UX0FSUkFZU19BTkdMRToKKyAgICAgICAgICAgICAgICAq
dHlwZSAgICAgID0gR0xfQk9PTDsKKyAgICAgICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChn
ZXRFeHRlbnNpb25zKCkuc1JHQldyaXRlQ29udHJvbCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
cG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfU1JHQl9F
WFQ6CisgICAgICAgICAgICAgICAgKnR5cGUgICAgICA9IEdMX0JPT0w7CisgICAgICAgICAgICAg
ICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAoZ2V0RXh0ZW5zaW9ucygpLnJvYnVzdFJlc291cmNlSW5pdGlh
bGl6YXRpb24gJiYKKyAgICAgICAgcG5hbWUgPT0gR0xfQ09OVEVYVF9ST0JVU1RfUkVTT1VSQ0Vf
SU5JVElBTElaQVRJT05fQU5HTEUpCisgICAgeworICAgICAgICAqdHlwZSAgICAgID0gR0xfQk9P
TDsKKyAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KwogICAgIC8vIENoZWNrIGZvciBFUzMuMCsgcGFyYW1ldGVyIG5hbWVzIHdoaWNoIGFyZSBhbHNv
IGV4cG9zZWQgYXMgRVMyIGV4dGVuc2lvbnMKICAgICBzd2l0Y2ggKHBuYW1lKQogICAgIHsKQEAg
LTM4NiwxMSArNDc0LDMyIEBAIGJvb2wgVmFsaWRhdGlvbkNvbnRleHQ6OmdldFF1ZXJ5UGFyYW1l
dGVySW5mbyhHTGVudW0gcG5hbWUsIEdMZW51bSAqdHlwZSwgdW5zaWduCiAgICAgICAgICAgICAq
dHlwZSAgICAgID0gR0xfSU5UOwogICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBHTF9NQVhfU0FNUExFUzoKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChHTF9NQVhfU0FNUExFU19BTkdMRSA9PSBHTF9N
QVhfU0FNUExFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkdMX01BWF9TQU1QTEVTX0FO
R0xFIG5vdCBlcXVhbCB0byBHTF9NQVhfU0FNUExFUyIpOworICAgICAgICAgICAgaWYgKChnZXRD
bGllbnRNYWpvclZlcnNpb24oKSA8IDMpICYmICFnZXRFeHRlbnNpb25zKCkuZnJhbWVidWZmZXJN
dWx0aXNhbXBsZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfSU5UOworICAgICAg
ICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQogICAgIH0KIAotICAgIGNvbnN0IEdMVmVyc2lvbiAmZ2xWZXJzaW9uID0gbVN0YXRlLmdldEdM
VmVyc2lvbigpOworICAgIGlmIChwbmFtZSA+PSBHTF9EUkFXX0JVRkZFUjBfRVhUICYmIHBuYW1l
IDw9IEdMX0RSQVdfQlVGRkVSMTVfRVhUKQorICAgIHsKKyAgICAgICAgaWYgKChnZXRDbGllbnRW
ZXJzaW9uKCkgPCBWZXJzaW9uKDMsIDApKSAmJiAhZ2V0RXh0ZW5zaW9ucygpLmRyYXdCdWZmZXJz
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAg
ICAgKnR5cGUgICAgICA9IEdMX0lOVDsKKyAgICAgICAgKm51bVBhcmFtcyA9IDE7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KIAotICAgIGlmICghZ2xWZXJzaW9uLmlzRVMzT3JHcmVhdGVy
KCkpCisgICAgaWYgKGdldENsaWVudFZlcnNpb24oKSA8IFZlcnNpb24oMywgMCkpCiAgICAgewog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNDY2LDEzICs1NzUsMjYgQEAgYm9vbCBW
YWxpZGF0aW9uQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXJJbmZvKEdMZW51bSBwbmFtZSwgR0xl
bnVtICp0eXBlLCB1bnNpZ24KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghZ2xWZXJzaW9u
LmlzRVMzMSgpKQorICAgIGlmIChnZXRFeHRlbnNpb25zKCkucmVxdWVzdEV4dGVuc2lvbikKKyAg
ICB7CisgICAgICAgIHN3aXRjaCAocG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2Ug
R0xfTlVNX1JFUVVFU1RBQkxFX0VYVEVOU0lPTlNfQU5HTEU6CisgICAgICAgICAgICAgICAgKnR5
cGUgICAgICA9IEdMX0lOVDsKKyAgICAgICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChnZXRD
bGllbnRWZXJzaW9uKCkgPCBWZXJzaW9uKDMsIDEpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAogICAgIHN3aXRjaCAocG5hbWUpCiAgICAgeworICAgICAgICBjYXNlIEdM
X0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICBjYXNlIEdMX0RSQVdfSU5E
SVJFQ1RfQlVGRkVSX0JJTkRJTkc6CiAgICAgICAgIGNhc2UgR0xfTUFYX0ZSQU1FQlVGRkVSX1dJ
RFRIOgogICAgICAgICBjYXNlIEdMX01BWF9GUkFNRUJVRkZFUl9IRUlHSFQ6CiAgICAgICAgIGNh
c2UgR0xfTUFYX0ZSQU1FQlVGRkVSX1NBTVBMRVM6CkBAIC01MTMsNiArNjM1LDcgQEAgYm9vbCBW
YWxpZGF0aW9uQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXJJbmZvKEdMZW51bSBwbmFtZSwgR0xl
bnVtICp0eXBlLCB1bnNpZ24KICAgICAgICAgY2FzZSBHTF9NQVhfQ09NQklORURfSU1BR0VfVU5J
Rk9STVM6CiAgICAgICAgIGNhc2UgR0xfTUFYX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5H
UzoKICAgICAgICAgY2FzZSBHTF9NQVhfQ09NQklORURfU0hBREVSX1NUT1JBR0VfQkxPQ0tTOgor
ICAgICAgICBjYXNlIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HOgogICAgICAgICBj
YXNlIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5UOgogICAgICAgICAg
ICAgKnR5cGUgICAgICA9IEdMX0lOVDsKICAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOwpAQCAt
NTMwLDkgKzY1Myw3IEBAIGJvb2wgVmFsaWRhdGlvbkNvbnRleHQ6OmdldEluZGV4ZWRRdWVyeVBh
cmFtZXRlckluZm8oR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICp0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKm51bVBhcmFt
cykKIHsKLQotICAgIGNvbnN0IEdMVmVyc2lvbiAmZ2xWZXJzaW9uID0gbVN0YXRlLmdldEdMVmVy
c2lvbigpOwotICAgIGlmICghZ2xWZXJzaW9uLmlzRVMzT3JHcmVhdGVyKCkpCisgICAgaWYgKGdl
dENsaWVudFZlcnNpb24oKSA8IFZlcnNpb24oMywgMCkpCiAgICAgewogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQpAQCAtNTU3LDcgKzY3OCw3IEBAIGJvb2wgVmFsaWRhdGlvbkNvbnRleHQ6
OmdldEluZGV4ZWRRdWVyeVBhcmFtZXRlckluZm8oR0xlbnVtIHRhcmdldCwKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGlmICghZ2xWZXJzaW9uLmlzRVMzMSgpKQorICAgIGlmIChnZXRDbGllbnRW
ZXJzaW9uKCkgPCBWZXJzaW9uKDMsIDEpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KQEAgLTU2NiwxMSArNjg3LDI2IEBAIGJvb2wgVmFsaWRhdGlvbkNvbnRleHQ6OmdldElu
ZGV4ZWRRdWVyeVBhcmFtZXRlckluZm8oR0xlbnVtIHRhcmdldCwKICAgICB7CiAgICAgICAgIGNh
c2UgR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9DT1VOVDoKICAgICAgICAgY2FzZSBHTF9NQVhf
Q09NUFVURV9XT1JLX0dST1VQX1NJWkU6CisgICAgICAgIGNhc2UgR0xfQVRPTUlDX0NPVU5URVJf
QlVGRkVSX0JJTkRJTkc6CisgICAgICAgIGNhc2UgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJ
TkRJTkc6CisgICAgICAgIGNhc2UgR0xfVkVSVEVYX0JJTkRJTkdfQlVGRkVSOgorICAgICAgICBj
YXNlIEdMX1ZFUlRFWF9CSU5ESU5HX0RJVklTT1I6CisgICAgICAgIGNhc2UgR0xfVkVSVEVYX0JJ
TkRJTkdfT0ZGU0VUOgorICAgICAgICBjYXNlIEdMX1ZFUlRFWF9CSU5ESU5HX1NUUklERToKICAg
ICAgICAgewogICAgICAgICAgICAgKnR5cGUgICAgICA9IEdMX0lOVDsKICAgICAgICAgICAgICpu
dW1QYXJhbXMgPSAxOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU1RBUlQ6CisgICAgICAgIGNhc2UgR0xf
QVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkU6CisgICAgICAgIGNhc2UgR0xfU0hBREVSX1NUT1JB
R0VfQlVGRkVSX1NUQVJUOgorICAgICAgICBjYXNlIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9T
SVpFOgorICAgICAgICB7CisgICAgICAgICAgICAqdHlwZSAgICAgID0gR0xfSU5UXzY0X0FOR0xF
WDsKKyAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC01NzgsMTIgKzcxNCw0
NSBAQCBib29sIFZhbGlkYXRpb25Db250ZXh0OjpnZXRJbmRleGVkUXVlcnlQYXJhbWV0ZXJJbmZv
KEdMZW51bSB0YXJnZXQsCiAKIFByb2dyYW0gKlZhbGlkYXRpb25Db250ZXh0OjpnZXRQcm9ncmFt
KEdMdWludCBoYW5kbGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1TdGF0ZS5tUmVzb3VyY2VNYW5h
Z2VyLT5nZXRQcm9ncmFtKGhhbmRsZSk7CisgICAgcmV0dXJuIG1TdGF0ZS5tU2hhZGVyUHJvZ3Jh
bXMtPmdldFByb2dyYW0oaGFuZGxlKTsKIH0KIAogU2hhZGVyICpWYWxpZGF0aW9uQ29udGV4dDo6
Z2V0U2hhZGVyKEdMdWludCBoYW5kbGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1TdGF0ZS5tUmVz
b3VyY2VNYW5hZ2VyLT5nZXRTaGFkZXIoaGFuZGxlKTsKKyAgICByZXR1cm4gbVN0YXRlLm1TaGFk
ZXJQcm9ncmFtcy0+Z2V0U2hhZGVyKGhhbmRsZSk7Cit9CisKK2Jvb2wgVmFsaWRhdGlvbkNvbnRl
eHQ6OmlzVGV4dHVyZUdlbmVyYXRlZChHTHVpbnQgdGV4dHVyZSkgY29uc3QKK3sKKyAgICByZXR1
cm4gbVN0YXRlLm1UZXh0dXJlcy0+aXNUZXh0dXJlR2VuZXJhdGVkKHRleHR1cmUpOworfQorCiti
b29sIFZhbGlkYXRpb25Db250ZXh0Ojppc0J1ZmZlckdlbmVyYXRlZChHTHVpbnQgYnVmZmVyKSBj
b25zdAoreworICAgIHJldHVybiBtU3RhdGUubUJ1ZmZlcnMtPmlzQnVmZmVyR2VuZXJhdGVkKGJ1
ZmZlcik7Cit9CisKK2Jvb2wgVmFsaWRhdGlvbkNvbnRleHQ6OmlzUmVuZGVyYnVmZmVyR2VuZXJh
dGVkKEdMdWludCByZW5kZXJidWZmZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5tUmVu
ZGVyYnVmZmVycy0+aXNSZW5kZXJidWZmZXJHZW5lcmF0ZWQocmVuZGVyYnVmZmVyKTsKK30KKwor
Ym9vbCBWYWxpZGF0aW9uQ29udGV4dDo6aXNGcmFtZWJ1ZmZlckdlbmVyYXRlZChHTHVpbnQgZnJh
bWVidWZmZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5tRnJhbWVidWZmZXJzLT5pc0Zy
YW1lYnVmZmVyR2VuZXJhdGVkKGZyYW1lYnVmZmVyKTsKK30KKworYm9vbCBWYWxpZGF0aW9uQ29u
dGV4dDo6dXNpbmdEaXNwbGF5VGV4dHVyZVNoYXJlR3JvdXAoKSBjb25zdAoreworICAgIHJldHVy
biBtRGlzcGxheVRleHR1cmVTaGFyZUdyb3VwOworfQorCitHTGVudW0gVmFsaWRhdGlvbkNvbnRl
eHQ6OmdldENvbnZlcnRlZFJlbmRlcmJ1ZmZlckZvcm1hdChHTGVudW0gaW50ZXJuYWxmb3JtYXQp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5tRXh0ZW5zaW9ucy53ZWJnbENvbXBhdGliaWxp
dHkgJiYgbVN0YXRlLm1DbGllbnRWZXJzaW9uLm1ham9yID09IDIgJiYKKyAgICAgICAgICAgICAg
ICAgICBpbnRlcm5hbGZvcm1hdCA9PSBHTF9ERVBUSF9TVEVOQ0lMCisgICAgICAgICAgICAgICA/
IEdMX0RFUFRIMjRfU1RFTkNJTDgKKyAgICAgICAgICAgICAgIDogaW50ZXJuYWxmb3JtYXQ7CiB9
CiAKIH0gIC8vIG5hbWVzcGFjZSBnbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL0NvbnRleHRTdGF0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0NvbnRleHRTdGF0ZS5oCmluZGV4IDI0ZjZjZTljMzcyNjgzNWE0MjkxZmMw
NDhiNThhMmNjM2I3MGViYzkuLjRjNTBiNTk2NzhkY2YxODZhMDhhMjlkZTJlZTJhOWNmZjZmMTY4
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250
ZXh0U3RhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29u
dGV4dFN0YXRlLmgKQEAgLTExLDg0ICsxMSw4OSBAQAogCiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xl
dXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9TdGF0ZS5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L1ZlcnNpb24uaCIKIAogbmFtZXNwYWNlIGdsCiB7Ci1jbGFzcyBWYWxpZGF0aW9uQ29udGV4dDsK
K2NsYXNzIEJ1ZmZlck1hbmFnZXI7CiBjbGFzcyBDb250ZXh0U3RhdGU7CitjbGFzcyBGZW5jZVN5
bmNNYW5hZ2VyOworY2xhc3MgRnJhbWVidWZmZXJNYW5hZ2VyOworY2xhc3MgUGF0aE1hbmFnZXI7
CitjbGFzcyBSZW5kZXJidWZmZXJNYW5hZ2VyOworY2xhc3MgU2FtcGxlck1hbmFnZXI7CitjbGFz
cyBTaGFkZXJQcm9ncmFtTWFuYWdlcjsKK2NsYXNzIFRleHR1cmVNYW5hZ2VyOworY2xhc3MgVmFs
aWRhdGlvbkNvbnRleHQ7CiAKLWNsYXNzIEdMVmVyc2lvbiBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5
YWJsZQotewotICBwdWJsaWM6Ci0gICAgR0xWZXJzaW9uKEdMaW50IGNsaWVudE1ham9yVmVyc2lv
biwgR0xpbnQgY2xpZW50TWlub3JWZXJzaW9uKQotICAgICAgICA6IG1DbGllbnRNYWpvclZlcnNp
b24oY2xpZW50TWFqb3JWZXJzaW9uKSwgbUNsaWVudE1pbm9yVmVyc2lvbihjbGllbnRNaW5vclZl
cnNpb24pCi0gICAgewotICAgIH0KLQotICAgIEdMaW50IGdldENsaWVudE1ham9yVmVyc2lvbigp
IGNvbnN0IHsgcmV0dXJuIG1DbGllbnRNYWpvclZlcnNpb247IH0KLSAgICBHTGludCBnZXRDbGll
bnRNaW5vclZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtQ2xpZW50TWlub3JWZXJzaW9uOyB9Ci0K
LSAgICBib29sIGlzRVMyKCkgY29uc3QgeyByZXR1cm4gbUNsaWVudE1ham9yVmVyc2lvbiA9PSAy
OyB9Ci0gICAgYm9vbCBpc0VTMygpIGNvbnN0IHsgcmV0dXJuIG1DbGllbnRNYWpvclZlcnNpb24g
PT0gMyAmJiBtQ2xpZW50TWlub3JWZXJzaW9uID09IDA7IH0KLSAgICBib29sIGlzRVMzMSgpIGNv
bnN0IHsgcmV0dXJuIG1DbGllbnRNYWpvclZlcnNpb24gPT0gMyAmJiBtQ2xpZW50TWlub3JWZXJz
aW9uID09IDE7IH0KLSAgICBib29sIGlzRVMzT3JHcmVhdGVyKCkgY29uc3QgeyByZXR1cm4gbUNs
aWVudE1ham9yVmVyc2lvbiA+PSAzOyB9CitzdGF0aWMgY29uc3RleHByIFZlcnNpb24gRVNfMl8w
ID0gVmVyc2lvbigyLCAwKTsKK3N0YXRpYyBjb25zdGV4cHIgVmVyc2lvbiBFU18zXzAgPSBWZXJz
aW9uKDMsIDApOworc3RhdGljIGNvbnN0ZXhwciBWZXJzaW9uIEVTXzNfMSA9IFZlcnNpb24oMywg
MSk7CiAKLSAgcHJpdmF0ZToKLSAgICBHTGludCBtQ2xpZW50TWFqb3JWZXJzaW9uOwotICAgIEdM
aW50IG1DbGllbnRNaW5vclZlcnNpb247Ci19OwordXNpbmcgQ29udGV4dElEID0gdWludHB0cl90
OwogCiBjbGFzcyBDb250ZXh0U3RhdGUgZmluYWwgOiBwdWJsaWMgYW5nbGU6Ok5vbkNvcHlhYmxl
CiB7CiAgIHB1YmxpYzoKLSAgICBDb250ZXh0U3RhdGUodWludHB0cl90IGNvbnRleHQsCi0gICAg
ICAgICAgICAgICAgIEdMaW50IGNsaWVudE1ham9yVmVyc2lvbiwKLSAgICAgICAgICAgICAgICAg
R0xpbnQgY2xpZW50TWlub3JWZXJzaW9uLAorICAgIENvbnRleHRTdGF0ZShDb250ZXh0SUQgY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgY29uc3QgQ29udGV4dFN0YXRlICpzaGFyZUNvbnRleHRT
dGF0ZSwKKyAgICAgICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXIgKnNoYXJlVGV4dHVyZXMsCisg
ICAgICAgICAgICAgICAgIGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnNpb24sCiAgICAgICAgICAg
ICAgICAgIFN0YXRlICpzdGF0ZSwKICAgICAgICAgICAgICAgICAgY29uc3QgQ2FwcyAmY2FwcywK
ICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZUNhcHNNYXAgJnRleHR1cmVDYXBzLAogICAg
ICAgICAgICAgICAgICBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zLAotICAgICAgICAgICAg
ICAgICBjb25zdCBSZXNvdXJjZU1hbmFnZXIgKnJlc291cmNlTWFuYWdlciwKICAgICAgICAgICAg
ICAgICAgY29uc3QgTGltaXRhdGlvbnMgJmxpbWl0YXRpb25zKTsKICAgICB+Q29udGV4dFN0YXRl
KCk7CiAKLSAgICB1aW50cHRyX3QgZ2V0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1Db250ZXh0
OyB9Ci0gICAgR0xpbnQgZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbUdM
VmVyc2lvbi5nZXRDbGllbnRNYWpvclZlcnNpb24oKTsgfQotICAgIEdMaW50IGdldENsaWVudE1p
bm9yVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1HTFZlcnNpb24uZ2V0Q2xpZW50TWlub3JWZXJz
aW9uKCk7IH0KLSAgICBjb25zdCBHTFZlcnNpb24gJmdldEdMVmVyc2lvbigpIGNvbnN0IHsgcmV0
dXJuIG1HTFZlcnNpb247IH0KKyAgICBDb250ZXh0SUQgZ2V0Q29udGV4dElEKCkgY29uc3QgeyBy
ZXR1cm4gbUNvbnRleHQ7IH0KKyAgICBHTGludCBnZXRDbGllbnRNYWpvclZlcnNpb24oKSBjb25z
dCB7IHJldHVybiBtQ2xpZW50VmVyc2lvbi5tYWpvcjsgfQorICAgIEdMaW50IGdldENsaWVudE1p
bm9yVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1DbGllbnRWZXJzaW9uLm1pbm9yOyB9CisgICAg
Y29uc3QgVmVyc2lvbiAmZ2V0Q2xpZW50VmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1DbGllbnRW
ZXJzaW9uOyB9CiAgICAgY29uc3QgU3RhdGUgJmdldFN0YXRlKCkgY29uc3QgeyByZXR1cm4gKm1T
dGF0ZTsgfQogICAgIGNvbnN0IENhcHMgJmdldENhcHMoKSBjb25zdCB7IHJldHVybiBtQ2Fwczsg
fQogICAgIGNvbnN0IFRleHR1cmVDYXBzTWFwICZnZXRUZXh0dXJlQ2FwcygpIGNvbnN0IHsgcmV0
dXJuIG1UZXh0dXJlQ2FwczsgfQogICAgIGNvbnN0IEV4dGVuc2lvbnMgJmdldEV4dGVuc2lvbnMo
KSBjb25zdCB7IHJldHVybiBtRXh0ZW5zaW9uczsgfQotICAgIGNvbnN0IFJlc291cmNlTWFuYWdl
ciAmZ2V0UmVzb3VyY2VNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gKm1SZXNvdXJjZU1hbmFnZXI7
IH0KICAgICBjb25zdCBMaW1pdGF0aW9ucyAmZ2V0TGltaXRhdGlvbnMoKSBjb25zdCB7IHJldHVy
biBtTGltaXRhdGlvbnM7IH0KIAogICAgIGNvbnN0IFRleHR1cmVDYXBzICZnZXRUZXh0dXJlQ2Fw
KEdMZW51bSBpbnRlcm5hbEZvcm1hdCkgY29uc3Q7CiAKKyAgICBib29sIHVzaW5nRGlzcGxheVRl
eHR1cmVTaGFyZUdyb3VwKCkgY29uc3Q7CisKKyAgICBib29sIGlzV2ViR0wxKCkgY29uc3Q7CisK
ICAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29udGV4dDsKICAgICBmcmllbmQgY2xhc3Mg
VmFsaWRhdGlvbkNvbnRleHQ7CiAKLSAgICBHTFZlcnNpb24gbUdMVmVyc2lvbjsKLSAgICB1aW50
cHRyX3QgbUNvbnRleHQ7CisgICAgVmVyc2lvbiBtQ2xpZW50VmVyc2lvbjsKKyAgICBDb250ZXh0
SUQgbUNvbnRleHQ7CiAgICAgU3RhdGUgKm1TdGF0ZTsKICAgICBjb25zdCBDYXBzICZtQ2FwczsK
ICAgICBjb25zdCBUZXh0dXJlQ2Fwc01hcCAmbVRleHR1cmVDYXBzOwogICAgIGNvbnN0IEV4dGVu
c2lvbnMgJm1FeHRlbnNpb25zOwotICAgIGNvbnN0IFJlc291cmNlTWFuYWdlciAqbVJlc291cmNl
TWFuYWdlcjsKICAgICBjb25zdCBMaW1pdGF0aW9ucyAmbUxpbWl0YXRpb25zOworCisgICAgQnVm
ZmVyTWFuYWdlciAqbUJ1ZmZlcnM7CisgICAgU2hhZGVyUHJvZ3JhbU1hbmFnZXIgKm1TaGFkZXJQ
cm9ncmFtczsKKyAgICBUZXh0dXJlTWFuYWdlciAqbVRleHR1cmVzOworICAgIFJlbmRlcmJ1ZmZl
ck1hbmFnZXIgKm1SZW5kZXJidWZmZXJzOworICAgIFNhbXBsZXJNYW5hZ2VyICptU2FtcGxlcnM7
CisgICAgRmVuY2VTeW5jTWFuYWdlciAqbUZlbmNlU3luY3M7CisgICAgUGF0aE1hbmFnZXIgKm1Q
YXRoczsKKyAgICBGcmFtZWJ1ZmZlck1hbmFnZXIgKm1GcmFtZWJ1ZmZlcnM7CiB9OwogCiBjbGFz
cyBWYWxpZGF0aW9uQ29udGV4dCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6Ci0g
ICAgVmFsaWRhdGlvbkNvbnRleHQoR0xpbnQgY2xpZW50TWFqb3JWZXJzaW9uLAotICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGNsaWVudE1pbm9yVmVyc2lvbiwKKyAgICBWYWxpZGF0aW9uQ29u
dGV4dChjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqc2hhcmVDb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVNYW5hZ2VyICpzaGFyZVRleHR1cmVzLAorICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgU3RhdGUgKnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhcHMgJmNhcHMs
CiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZUNhcHNNYXAgJnRleHR1cmVDYXBz
LAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMsCi0g
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VNYW5hZ2VyICpyZXNvdXJjZU1hbmFn
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGltaXRhdGlvbnMgJmxpbWl0YXRpb25z
LAogICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2tpcFZhbGlkYXRpb24pOwogICAgIHZpcnR1
YWwgflZhbGlkYXRpb25Db250ZXh0KCkge30KQEAgLTk2LDkgKzEwMSw5IEBAIGNsYXNzIFZhbGlk
YXRpb25Db250ZXh0IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZUVycm9yKGNvbnN0IEVycm9yICZlcnJvcikgPSAwOwogCiAgICAgY29uc3QgQ29udGV4dFN0YXRl
ICZnZXRDb250ZXh0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtU3RhdGU7IH0KLSAgICBpbnQgZ2V0
Q2xpZW50TWFqb3JWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLmdldENsaWVudE1ham9y
VmVyc2lvbigpOyB9Ci0gICAgaW50IGdldENsaWVudE1pbm9yVmVyc2lvbigpIGNvbnN0IHsgcmV0
dXJuIG1TdGF0ZS5nZXRDbGllbnRNaW5vclZlcnNpb24oKTsgfQotICAgIGNvbnN0IEdMVmVyc2lv
biAmZ2V0R0xWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLm1HTFZlcnNpb247IH0KKyAg
ICBHTGludCBnZXRDbGllbnRNYWpvclZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtU3RhdGUuZ2V0
Q2xpZW50TWFqb3JWZXJzaW9uKCk7IH0KKyAgICBHTGludCBnZXRDbGllbnRNaW5vclZlcnNpb24o
KSBjb25zdCB7IHJldHVybiBtU3RhdGUuZ2V0Q2xpZW50TWlub3JWZXJzaW9uKCk7IH0KKyAgICBj
b25zdCBWZXJzaW9uICZnZXRDbGllbnRWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLmdl
dENsaWVudFZlcnNpb24oKTsgfQogICAgIGNvbnN0IFN0YXRlICZnZXRHTFN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbVN0YXRlLmdldFN0YXRlKCk7IH0KICAgICBjb25zdCBDYXBzICZnZXRDYXBzKCkg
Y29uc3QgeyByZXR1cm4gbVN0YXRlLmdldENhcHMoKTsgfQogICAgIGNvbnN0IFRleHR1cmVDYXBz
TWFwICZnZXRUZXh0dXJlQ2FwcygpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5nZXRUZXh0dXJlQ2Fw
cygpOyB9CkBAIC0xMTMsOSArMTE4LDIyIEBAIGNsYXNzIFZhbGlkYXRpb25Db250ZXh0IDogYW5n
bGU6Ok5vbkNvcHlhYmxlCiAgICAgUHJvZ3JhbSAqZ2V0UHJvZ3JhbShHTHVpbnQgaGFuZGxlKSBj
b25zdDsKICAgICBTaGFkZXIgKmdldFNoYWRlcihHTHVpbnQgaGFuZGxlKSBjb25zdDsKIAorICAg
IGJvb2wgaXNUZXh0dXJlR2VuZXJhdGVkKEdMdWludCB0ZXh0dXJlKSBjb25zdDsKKyAgICBib29s
IGlzQnVmZmVyR2VuZXJhdGVkKEdMdWludCBidWZmZXIpIGNvbnN0OworICAgIGJvb2wgaXNSZW5k
ZXJidWZmZXJHZW5lcmF0ZWQoR0x1aW50IHJlbmRlcmJ1ZmZlcikgY29uc3Q7CisgICAgYm9vbCBp
c0ZyYW1lYnVmZmVyR2VuZXJhdGVkKEdMdWludCBmcmFtZWJ1ZmZlcikgY29uc3Q7CisKKyAgICBi
b29sIHVzaW5nRGlzcGxheVRleHR1cmVTaGFyZUdyb3VwKCkgY29uc3Q7CisKKyAgICAvLyBIYWNr
IGZvciB0aGUgc3BlY2lhbCBXZWJHTCAxICJERVBUSF9TVEVOQ0lMIiBpbnRlcm5hbCBmb3JtYXQu
CisgICAgR0xlbnVtIGdldENvbnZlcnRlZFJlbmRlcmJ1ZmZlckZvcm1hdChHTGVudW0gaW50ZXJu
YWxmb3JtYXQpIGNvbnN0OworCisgICAgYm9vbCBpc1dlYkdMMSgpIGNvbnN0IHsgcmV0dXJuIG1T
dGF0ZS5pc1dlYkdMMSgpOyB9CisKICAgcHJvdGVjdGVkOgogICAgIENvbnRleHRTdGF0ZSBtU3Rh
dGU7CiAgICAgYm9vbCBtU2tpcFZhbGlkYXRpb247CisgICAgYm9vbCBtRGlzcGxheVRleHR1cmVT
aGFyZUdyb3VwOwogfTsKIH0gIC8vIG5hbWVzcGFjZSBnbAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGV2aWNlLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9EZXZpY2UuY3BwCmluZGV4IDlhNjJmODIwZTY2Nzc0ODll
NmIzN2I1MTNjYmE4M2U3OTYxZTJkMzYuLmViMzBiMjAyM2ZmOWMyYTdhZWZjNjMwODkxMTI1YmI0
MmMxZGJlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9EZXZpY2UuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9E
ZXZpY2UuY3BwCkBAIC0zOCwxMCArMzgsNyBAQCBzdGF0aWMgc3RkOjpzdHJpbmcgR2VuZXJhdGVF
eHRlbnNpb25zU3RyaW5nKGNvbnN0IFQgJmV4dGVuc2lvbnMpCiB0eXBlZGVmIHN0ZDo6c2V0PGVn
bDo6RGV2aWNlICo+IERldmljZVNldDsKIHN0YXRpYyBEZXZpY2VTZXQgKkdldERldmljZVNldCgp
CiB7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgogICAgIHN0YXRpYyBEZXZpY2VT
ZXQgZGV2aWNlczsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICAgICByZXR1cm4gJmRl
dmljZXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9EaXNwbGF5LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9E
aXNwbGF5LmNwcAppbmRleCA4NzAyZGEyNWJkNzRkM2RlMTAyOTcwYmU0ZDljMjc0ZGZmNDgyOGM2
Li4zMDIzYTI5ZGY4ODAyN2I3YmQ1MzkzNGQwZTFkMGZjYTAyOGY5YzUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGlzcGxheS5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Rpc3BsYXkuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvSW1hZ2UuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9T
dXJmYWNlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvU3RyZWFtLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvUmVzb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRGlzcGxh
eUltcGwuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9JbWFnZUltcGwuaCIKICNpbmNs
dWRlICJ0aGlyZF9wYXJ0eS90cmFjZV9ldmVudC90cmFjZV9ldmVudC5oIgpAQCAtNTUsNyArNTYs
MTEgQEAKIAogI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX05VTEwpCiAjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvbnVsbC9EaXNwbGF5TlVMTC5oIgotI2VuZGlmCisjZW5kaWYgIC8vIGRlZmlu
ZWQoQU5HTEVfRU5BQkxFX05VTEwpCisKKyNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9WVUxLQU4p
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3BsYXlWay5oIgorI2VuZGlm
ICAvLyBkZWZpbmVkKEFOR0xFX0VOQUJMRV9WVUxLQU4pCiAKIG5hbWVzcGFjZSBlZ2wKIHsKQEAg
LTYzLDYxICs2OCwzMCBAQCBuYW1lc3BhY2UgZWdsCiBuYW1lc3BhY2UKIHsKIAotY2xhc3MgRGVm
YXVsdFBsYXRmb3JtIDogcHVibGljIGFuZ2xlOjpQbGF0Zm9ybQotewotcHVibGljOgotICAgIERl
ZmF1bHRQbGF0Zm9ybSgpIHt9Ci0gICAgfkRlZmF1bHRQbGF0Zm9ybSgpIG92ZXJyaWRlIHt9Ci19
OwotCi1EZWZhdWx0UGxhdGZvcm0gKmRlZmF1bHRQbGF0Zm9ybSA9IG51bGxwdHI7Ci0KLXZvaWQg
SW5pdERlZmF1bHRQbGF0Zm9ybUltcGwoKQotewotICAgIGlmIChBTkdMRVBsYXRmb3JtQ3VycmVu
dCgpID09IG51bGxwdHIpCi0gICAgewotICAgICAgICBpZiAoZGVmYXVsdFBsYXRmb3JtID09IG51
bGxwdHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlZmF1bHRQbGF0Zm9ybSA9IG5ldyBEZWZh
dWx0UGxhdGZvcm0oKTsKLSAgICAgICAgfQotCi0gICAgICAgIEFOR0xFUGxhdGZvcm1Jbml0aWFs
aXplKGRlZmF1bHRQbGF0Zm9ybSk7Ci0gICAgfQotfQotCiB0eXBlZGVmIHN0ZDo6bWFwPEVHTE5h
dGl2ZVdpbmRvd1R5cGUsIFN1cmZhY2UqPiBXaW5kb3dTdXJmYWNlTWFwOwogLy8gR2V0IGEgbWFw
IG9mIGFsbCBFR0wgd2luZG93IHN1cmZhY2VzIHRvIHZhbGlkYXRlIHRoYXQgbm8gd2luZG93IGhh
cyBtb3JlIHRoYW4gb25lIEVHTCBzdXJmYWNlCiAvLyBhc3NvY2lhdGVkIHdpdGggaXQuCiBzdGF0
aWMgV2luZG93U3VyZmFjZU1hcCAqR2V0V2luZG93U3VyZmFjZXMoKQogewotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4
aXQtdGltZS1kZXN0cnVjdG9ycyIKICAgICBzdGF0aWMgV2luZG93U3VyZmFjZU1hcCB3aW5kb3dT
dXJmYWNlczsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICAgICByZXR1cm4gJndpbmRv
d1N1cmZhY2VzOwogfQogCiB0eXBlZGVmIHN0ZDo6bWFwPEVHTE5hdGl2ZURpc3BsYXlUeXBlLCBE
aXNwbGF5ICo+IEFOR0xFUGxhdGZvcm1EaXNwbGF5TWFwOwogc3RhdGljIEFOR0xFUGxhdGZvcm1E
aXNwbGF5TWFwICpHZXRBTkdMRVBsYXRmb3JtRGlzcGxheU1hcCgpCiB7Ci0jcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZXhp
dC10aW1lLWRlc3RydWN0b3JzIgogICAgIHN0YXRpYyBBTkdMRVBsYXRmb3JtRGlzcGxheU1hcCBk
aXNwbGF5czsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICAgICByZXR1cm4gJmRpc3Bs
YXlzOwogfQogCiB0eXBlZGVmIHN0ZDo6bWFwPERldmljZSAqLCBEaXNwbGF5ICo+IERldmljZVBs
YXRmb3JtRGlzcGxheU1hcDsKIHN0YXRpYyBEZXZpY2VQbGF0Zm9ybURpc3BsYXlNYXAgKkdldERl
dmljZVBsYXRmb3JtRGlzcGxheU1hcCgpCiB7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVz
aAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0
b3JzIgogICAgIHN0YXRpYyBEZXZpY2VQbGF0Zm9ybURpc3BsYXlNYXAgZGlzcGxheXM7Ci0jcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAgICAgcmV0dXJuICZkaXNwbGF5czsKIH0KIAotcng6
OkRpc3BsYXlJbXBsICpDcmVhdGVEaXNwbGF5RnJvbURldmljZShEZXZpY2UgKmVnbERldmljZSkK
K3J4OjpEaXNwbGF5SW1wbCAqQ3JlYXRlRGlzcGxheUZyb21EZXZpY2UoRGV2aWNlICplZ2xEZXZp
Y2UsIGNvbnN0IERpc3BsYXlTdGF0ZSAmc3RhdGUpCiB7CiAgICAgcng6OkRpc3BsYXlJbXBsICpp
bXBsID0gbnVsbHB0cjsKIApAQCAtMTI1LDcgKzk5LDcgQEAgcng6OkRpc3BsYXlJbXBsICpDcmVh
dGVEaXNwbGF5RnJvbURldmljZShEZXZpY2UgKmVnbERldmljZSkKICAgICB7CiAjaWYgZGVmaW5l
ZChBTkdMRV9FTkFCTEVfRDNEMTEpCiAgICAgICAgIGNhc2UgRUdMX0QzRDExX0RFVklDRV9BTkdM
RToKLSAgICAgICAgICAgIGltcGwgPSBuZXcgcng6OkRpc3BsYXlEM0QoKTsKKyAgICAgICAgICAg
IGltcGwgPSBuZXcgcng6OkRpc3BsYXlEM0Qoc3RhdGUpOwogICAgICAgICAgICAgYnJlYWs7CiAj
ZW5kaWYKICNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0Q5KQpAQCAtMTQ4LDEwNyArMTIyLDE0
NyBAQCByeDo6RGlzcGxheUltcGwgKkNyZWF0ZURpc3BsYXlGcm9tRGV2aWNlKERldmljZSAqZWds
RGV2aWNlKQogICAgIHJldHVybiBpbXBsOwogfQogCi1yeDo6RGlzcGxheUltcGwgKkNyZWF0ZURp
c3BsYXlGcm9tQXR0cmlicyhjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYk1hcCkKK3J4OjpEaXNw
bGF5SW1wbCAqQ3JlYXRlRGlzcGxheUZyb21BdHRyaWJzKGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0
cmliTWFwLCBjb25zdCBEaXNwbGF5U3RhdGUgJnN0YXRlKQogewogICAgIHJ4OjpEaXNwbGF5SW1w
bCAqaW1wbCA9IG51bGxwdHI7CiAgICAgRUdMQXR0cmliIGRpc3BsYXlUeXBlID0KICAgICAgICAg
YXR0cmliTWFwLmdldChFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSwgRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfREVGQVVMVF9BTkdMRSk7CiAgICAgc3dpdGNoIChkaXNwbGF5VHlwZSkKICAg
ICB7Ci0gICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0RFRkFVTFRfQU5HTEU6Cisg
ICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfREVGQVVMVF9BTkdMRToKICNpZiBk
ZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0Q5KSB8fCBkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0QxMSkK
LSAgICAgICAgLy8gRGVmYXVsdCB0byBEM0QgZGlzcGxheXMKLSAgICAgICAgaW1wbCA9IG5ldyBy
eDo6RGlzcGxheUQzRCgpOworICAgICAgICAgICAgLy8gRGVmYXVsdCB0byBEM0QgZGlzcGxheXMK
KyAgICAgICAgICAgIGltcGwgPSBuZXcgcng6OkRpc3BsYXlEM0Qoc3RhdGUpOwogI2VsaWYgZGVm
aW5lZChBTkdMRV9VU0VfWDExKQotICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5R0xYKCk7
CisgICAgICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5R0xYKHN0YXRlKTsKICNlbGlmIGRl
ZmluZWQoQU5HTEVfUExBVEZPUk1fQVBQTEUpCi0gICAgICAgIGltcGwgPSBuZXcgcng6OkRpc3Bs
YXlDR0woKTsKKyAgICAgICAgICAgIGltcGwgPSBuZXcgcng6OkRpc3BsYXlDR0woc3RhdGUpOwog
I2VsaWYgZGVmaW5lZChBTkdMRV9VU0VfT1pPTkUpCi0gICAgICAgIGltcGwgPSBuZXcgcng6OkRp
c3BsYXlPem9uZSgpOworICAgICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheU96b25lKHN0
YXRlKTsKICNlbGlmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQU5EUk9JRCkKLSAgICAgICAgaW1w
bCA9IG5ldyByeDo6RGlzcGxheUFuZHJvaWQoKTsKKyAgICAgICAgICAgIGltcGwgPSBuZXcgcng6
OkRpc3BsYXlBbmRyb2lkKHN0YXRlKTsKICNlbHNlCi0gICAgICAgIC8vIE5vIGRpc3BsYXkgYXZh
aWxhYmxlCi0gICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAvLyBObyBkaXNwbGF5
IGF2YWlsYWJsZQorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICNlbmRpZgotICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdM
RV9UWVBFX0QzRDlfQU5HTEU6Ci0gICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0Qz
RDExX0FOR0xFOgorICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDlfQU5H
TEU6CisgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEU6CiAj
aWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNEOSkgfHwgZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNE
MTEpCi0gICAgICAgIGltcGwgPSBuZXcgcng6OkRpc3BsYXlEM0QoKTsKKyAgICAgICAgICAgIGlt
cGwgPSBuZXcgcng6OkRpc3BsYXlEM0Qoc3RhdGUpOwogI2Vsc2UKLSAgICAgICAgLy8gQSBEM0Qg
ZGlzcGxheSB3YXMgcmVxdWVzdGVkIG9uIGEgcGxhdGZvcm0gdGhhdCBkb2Vzbid0IHN1cHBvcnQg
aXQKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIC8vIEEgRDNEIGRpc3BsYXkg
d2FzIHJlcXVlc3RlZCBvbiBhIHBsYXRmb3JtIHRoYXQgZG9lc24ndCBzdXBwb3J0IGl0CisgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOwogI2VuZGlmCi0gICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FO
R0xFOgorICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRToK
ICNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9PUEVOR0wpCiAjaWYgZGVmaW5lZChBTkdMRV9QTEFU
Rk9STV9XSU5ET1dTKQotICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5V0dMKCk7CisgICAg
ICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5V0dMKHN0YXRlKTsKICNlbGlmIGRlZmluZWQo
QU5HTEVfVVNFX1gxMSkKLSAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheUdMWCgpOworICAg
ICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheUdMWChzdGF0ZSk7CiAjZWxpZiBkZWZpbmVk
KEFOR0xFX1BMQVRGT1JNX0FQUExFKQotICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5Q0dM
KCk7CisgICAgICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5Q0dMKHN0YXRlKTsKICNlbGlm
IGRlZmluZWQoQU5HTEVfVVNFX09aT05FKQotICAgICAgICAvLyBUaGlzIG1pZ2h0IHdvcmsgYnV0
IGhhcyBuZXZlciBiZWVuIHRyaWVkLCBzbyBkaXNhbGxvdyBmb3Igbm93LgotICAgICAgICBpbXBs
ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIC8vIFRoaXMgbWlnaHQgd29yayBidXQgaGFzIG5ldmVy
IGJlZW4gdHJpZWQsIHNvIGRpc2FsbG93IGZvciBub3cuCisgICAgICAgICAgICBpbXBsID0gbnVs
bHB0cjsKICNlbGlmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQU5EUk9JRCkKLSAgICAgICAgLy8g
Tm8gR0wgc3VwcG9ydCBvbiB0aGlzIHBsYXRmb3JtLCBmYWlsIGRpc3BsYXkgY3JlYXRpb24uCi0g
ICAgICAgIGltcGwgPSBudWxscHRyOworICAgICAgICAgICAgLy8gTm8gR0wgc3VwcG9ydCBvbiB0
aGlzIHBsYXRmb3JtLCBmYWlsIGRpc3BsYXkgY3JlYXRpb24uCisgICAgICAgICAgICBpbXBsID0g
bnVsbHB0cjsKICNlbHNlCiAjZXJyb3IgVW5zdXBwb3J0ZWQgT3BlbkdMIHBsYXRmb3JtLgogI2Vu
ZGlmCiAjZWxzZQotICAgICAgICBVTlJFQUNIQUJMRSgpOwotI2VuZGlmCi0gICAgICAgIGJyZWFr
OworICAgICAgICAgICAgLy8gTm8gZGlzcGxheSBhdmFpbGFibGUKKyAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisjZW5kaWYgIC8vIGRlZmluZWQoQU5HTEVfRU5BQkxFX09QRU5HTCkKKyAgICAg
ICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BF
TkdMRVNfQU5HTEU6CiAjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfT1BFTkdMKQotICAgICAgY2Fz
ZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRToKICNpZiBkZWZpbmVkKEFO
R0xFX1BMQVRGT1JNX1dJTkRPV1MpCi0gICAgICAgIGltcGwgPSBuZXcgcng6OkRpc3BsYXlXR0wo
KTsKKyAgICAgICAgICAgIGltcGwgPSBuZXcgcng6OkRpc3BsYXlXR0woc3RhdGUpOwogI2VsaWYg
ZGVmaW5lZChBTkdMRV9VU0VfWDExKQotICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5R0xY
KCk7CisgICAgICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5R0xYKHN0YXRlKTsKICNlbGlm
IGRlZmluZWQoQU5HTEVfVVNFX09aT05FKQotICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5
T3pvbmUoKTsKKyAgICAgICAgICAgIGltcGwgPSBuZXcgcng6OkRpc3BsYXlPem9uZShzdGF0ZSk7
CiAjZWxpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FORFJPSUQpCi0gICAgICAgIGltcGwgPSBu
ZXcgcng6OkRpc3BsYXlBbmRyb2lkKCk7CisgICAgICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNw
bGF5QW5kcm9pZChzdGF0ZSk7CiAjZWxzZQotICAgICAgICAvLyBObyBHTEVTIHN1cHBvcnQgb24g
dGhpcyBwbGF0Zm9ybSwgZmFpbCBkaXNwbGF5IGNyZWF0aW9uLgotICAgICAgICBpbXBsID0gbnVs
bHB0cjsKLSNlbmRpZgotICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8vIE5vIEdMRVMgc3Vw
cG9ydCBvbiB0aGlzIHBsYXRmb3JtLCBmYWlsIGRpc3BsYXkgY3JlYXRpb24uCisgICAgICAgICAg
ICBpbXBsID0gbnVsbHB0cjsKICNlbmRpZgorI2VuZGlmICAvLyBkZWZpbmVkKEFOR0xFX0VOQUJM
RV9PUEVOR0wpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX1ZVTEtBTl9BTkdMRToKKyNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9WVUxL
QU4pCisgICAgICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5Vmsoc3RhdGUpOworI2Vsc2UK
KyAgICAgICAgICAgIC8vIE5vIGRpc3BsYXkgYXZhaWxhYmxlCisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworI2VuZGlmICAvLyBkZWZpbmVkKEFOR0xFX0VOQUJMRV9WVUxLQU4pCisgICAgICAg
ICAgICBicmVhazsKIAorICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX05VTExf
QU5HTEU6CiAjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfTlVMTCkKLSAgICAgIGNhc2UgRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfTlVMTF9BTkdMRToKLSAgICAgICAgICBpbXBsID0gbmV3IHJ4OjpE
aXNwbGF5TlVMTCgpOwotICAgICAgICAgIGJyZWFrOwotI2VuZGlmCisgICAgICAgICAgICBpbXBs
ID0gbmV3IHJ4OjpEaXNwbGF5TlVMTChzdGF0ZSk7CisjZWxzZQorICAgICAgICAgICAgLy8gTm8g
ZGlzcGxheSBhdmFpbGFibGUKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisjZW5kaWYgIC8v
IGRlZmluZWQoQU5HTEVfRU5BQkxFX05VTEwpCisgICAgICAgICAgICBicmVhazsKIAotICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgfQogCiAgICAgcmV0dXJuIGltcGw7CiB9CiAKK3ZvaWQgRGlzcGxheV9sb2dFcnJvcihh
bmdsZTo6UGxhdGZvcm1NZXRob2RzICpwbGF0Zm9ybSwgY29uc3QgY2hhciAqZXJyb3JNZXNzYWdl
KQoreworICAgIGdsOjpUcmFjZShnbDo6TE9HX0VSUiwgZXJyb3JNZXNzYWdlKTsKIH0KIAotRGlz
cGxheSAqRGlzcGxheTo6R2V0RGlzcGxheUZyb21BdHRyaWJzKHZvaWQgKm5hdGl2ZV9kaXNwbGF5
LCBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYk1hcCkKK3ZvaWQgRGlzcGxheV9sb2dXYXJuaW5n
KGFuZ2xlOjpQbGF0Zm9ybU1ldGhvZHMgKnBsYXRmb3JtLCBjb25zdCBjaGFyICp3YXJuaW5nTWVz
c2FnZSkKIHsKLSAgICAvLyBJbml0aWFsaXplIHRoZSBnbG9iYWwgcGxhdGZvcm0gaWYgbm90IGFs
cmVhZHkKLSAgICBJbml0RGVmYXVsdFBsYXRmb3JtSW1wbCgpOworICAgIGdsOjpUcmFjZShnbDo6
TE9HX1dBUk4sIHdhcm5pbmdNZXNzYWdlKTsKK30KIAotICAgIERpc3BsYXkgKmRpc3BsYXkgPSBu
dWxscHRyOwordm9pZCBEaXNwbGF5X2xvZ0luZm8oYW5nbGU6OlBsYXRmb3JtTWV0aG9kcyAqcGxh
dGZvcm0sIGNvbnN0IGNoYXIgKmluZm9NZXNzYWdlKQoreworICAgIC8vIFVuY29tbWVudCB0byBn
ZXQgaW5mbyBzcGFtCisgICAgLy8gZ2w6OlRyYWNlKGdsOjpMT0dfV0FSTiwgaW5mb01lc3NhZ2Up
OworfQorCit2b2lkIEFOR0xFU2V0RGVmYXVsdERpc3BsYXlQbGF0Zm9ybShhbmdsZTo6RUdMRGlz
cGxheVR5cGUgZGlzcGxheSkKK3sKKyAgICBhbmdsZTo6UGxhdGZvcm1NZXRob2RzICpwbGF0Zm9y
bU1ldGhvZHMgPSBBTkdMRVBsYXRmb3JtQ3VycmVudCgpOworICAgIGlmIChwbGF0Zm9ybU1ldGhv
ZHMtPmxvZ0Vycm9yICE9IGFuZ2xlOjpBTkdMRV9sb2dFcnJvcikKKyAgICB7CisgICAgICAgIC8v
IERvbid0IHJlc2V0IHByZS1zZXQgUGxhdGZvcm0gdG8gRGVmYXVsdAorICAgICAgICByZXR1cm47
CisgICAgfQogCi0gICAgRUdMTmF0aXZlRGlzcGxheVR5cGUgZGlzcGxheUlkID0gcmVpbnRlcnBy
ZXRfY2FzdDxFR0xOYXRpdmVEaXNwbGF5VHlwZT4obmF0aXZlX2Rpc3BsYXkpOworICAgIEFOR0xF
UmVzZXREaXNwbGF5UGxhdGZvcm0oZGlzcGxheSk7CisgICAgcGxhdGZvcm1NZXRob2RzLT5sb2dF
cnJvciAgID0gRGlzcGxheV9sb2dFcnJvcjsKKyAgICBwbGF0Zm9ybU1ldGhvZHMtPmxvZ1dhcm5p
bmcgPSBEaXNwbGF5X2xvZ1dhcm5pbmc7CisgICAgcGxhdGZvcm1NZXRob2RzLT5sb2dJbmZvICAg
ID0gRGlzcGxheV9sb2dJbmZvOworfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK0Rp
c3BsYXkgKkRpc3BsYXk6OkdldERpc3BsYXlGcm9tTmF0aXZlRGlzcGxheShFR0xOYXRpdmVEaXNw
bGF5VHlwZSBuYXRpdmVEaXNwbGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmliTWFwKQoreworICAgIERpc3Bs
YXkgKmRpc3BsYXkgPSBudWxscHRyOwogCiAgICAgQU5HTEVQbGF0Zm9ybURpc3BsYXlNYXAgKmRp
c3BsYXlzICAgICAgICAgICAgPSBHZXRBTkdMRVBsYXRmb3JtRGlzcGxheU1hcCgpOwotICAgIEFO
R0xFUGxhdGZvcm1EaXNwbGF5TWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZGlzcGxheXMtPmZp
bmQoZGlzcGxheUlkKTsKKyAgICBBTkdMRVBsYXRmb3JtRGlzcGxheU1hcDo6Y29uc3RfaXRlcmF0
b3IgaXRlciA9IGRpc3BsYXlzLT5maW5kKG5hdGl2ZURpc3BsYXkpOwogICAgIGlmIChpdGVyICE9
IGRpc3BsYXlzLT5lbmQoKSkKICAgICB7CiAgICAgICAgIGRpc3BsYXkgPSBpdGVyLT5zZWNvbmQ7
CkBAIC0yNTcsMTkgKzI3MSwxOSBAQCBEaXNwbGF5ICpEaXNwbGF5OjpHZXREaXNwbGF5RnJvbUF0
dHJpYnModm9pZCAqbmF0aXZlX2Rpc3BsYXksIGNvbnN0IEF0dHJpYnV0ZU1hcAogICAgIGlmIChk
aXNwbGF5ID09IG51bGxwdHIpCiAgICAgewogICAgICAgICAvLyBWYWxpZGF0ZSB0aGUgbmF0aXZl
IGRpc3BsYXkKLSAgICAgICAgaWYgKCFEaXNwbGF5Ojppc1ZhbGlkTmF0aXZlRGlzcGxheShkaXNw
bGF5SWQpKQorICAgICAgICBpZiAoIURpc3BsYXk6OmlzVmFsaWROYXRpdmVEaXNwbGF5KG5hdGl2
ZURpc3BsYXkpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAg
fQogCi0gICAgICAgIGRpc3BsYXkgPSBuZXcgRGlzcGxheShFR0xfUExBVEZPUk1fQU5HTEVfQU5H
TEUsIGRpc3BsYXlJZCwgbnVsbHB0cik7Ci0gICAgICAgIGRpc3BsYXlzLT5pbnNlcnQoc3RkOjpt
YWtlX3BhaXIoZGlzcGxheUlkLCBkaXNwbGF5KSk7CisgICAgICAgIGRpc3BsYXkgPSBuZXcgRGlz
cGxheShFR0xfUExBVEZPUk1fQU5HTEVfQU5HTEUsIG5hdGl2ZURpc3BsYXksIG51bGxwdHIpOwor
ICAgICAgICBkaXNwbGF5cy0+aW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKG5hdGl2ZURpc3BsYXksIGRp
c3BsYXkpKTsKICAgICB9CiAKICAgICAvLyBBcHBseSBuZXcgYXR0cmlidXRlcyBpZiB0aGUgZGlz
cGxheSBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LgogICAgIGlmICghZGlzcGxheS0+aXNJbml0aWFs
aXplZCgpKQogICAgIHsKLSAgICAgICAgcng6OkRpc3BsYXlJbXBsICppbXBsID0gQ3JlYXRlRGlz
cGxheUZyb21BdHRyaWJzKGF0dHJpYk1hcCk7CisgICAgICAgIHJ4OjpEaXNwbGF5SW1wbCAqaW1w
bCA9IENyZWF0ZURpc3BsYXlGcm9tQXR0cmlicyhhdHRyaWJNYXAsIGRpc3BsYXktPmdldFN0YXRl
KCkpOwogICAgICAgICBpZiAoaW1wbCA9PSBudWxscHRyKQogICAgICAgICB7CiAgICAgICAgICAg
ICAvLyBObyB2YWxpZCBkaXNwbGF5IGltcGxlbWVudGF0aW9uIGZvciB0aGVzZSBhdHRyaWJ1dGVz
CkBAIC0yODIsMTUgKzI5NiwxMSBAQCBEaXNwbGF5ICpEaXNwbGF5OjpHZXREaXNwbGF5RnJvbUF0
dHJpYnModm9pZCAqbmF0aXZlX2Rpc3BsYXksIGNvbnN0IEF0dHJpYnV0ZU1hcAogICAgIHJldHVy
biBkaXNwbGF5OwogfQogCi1EaXNwbGF5ICpEaXNwbGF5OjpHZXREaXNwbGF5RnJvbURldmljZSh2
b2lkICpuYXRpdmVfZGlzcGxheSkKK0Rpc3BsYXkgKkRpc3BsYXk6OkdldERpc3BsYXlGcm9tRGV2
aWNlKERldmljZSAqZGV2aWNlKQogewotICAgIC8vIEluaXRpYWxpemUgdGhlIGdsb2JhbCBwbGF0
Zm9ybSBpZiBub3QgYWxyZWFkeQotICAgIEluaXREZWZhdWx0UGxhdGZvcm1JbXBsKCk7Ci0KICAg
ICBEaXNwbGF5ICpkaXNwbGF5ID0gbnVsbHB0cjsKIAotICAgIERldmljZSAqZWdsRGV2aWNlID0g
cmVpbnRlcnByZXRfY2FzdDxEZXZpY2UgKj4obmF0aXZlX2Rpc3BsYXkpOwotICAgIEFTU0VSVChE
ZXZpY2U6OklzVmFsaWREZXZpY2UoZWdsRGV2aWNlKSk7CisgICAgQVNTRVJUKERldmljZTo6SXNW
YWxpZERldmljZShkZXZpY2UpKTsKIAogICAgIEFOR0xFUGxhdGZvcm1EaXNwbGF5TWFwICphbmds
ZVBsYXRmb3JtRGlzcGxheXMgICA9IEdldEFOR0xFUGxhdGZvcm1EaXNwbGF5TWFwKCk7CiAgICAg
RGV2aWNlUGxhdGZvcm1EaXNwbGF5TWFwICpkZXZpY2VQbGF0Zm9ybURpc3BsYXlzID0gR2V0RGV2
aWNlUGxhdGZvcm1EaXNwbGF5TWFwKCk7CkBAIC0yOTksNyArMzA5LDcgQEAgRGlzcGxheSAqRGlz
cGxheTo6R2V0RGlzcGxheUZyb21EZXZpY2Uodm9pZCAqbmF0aXZlX2Rpc3BsYXkpCiAgICAgZm9y
IChhdXRvICZkaXNwbGF5TWFwRW50cnkgOiAqYW5nbGVQbGF0Zm9ybURpc3BsYXlzKQogICAgIHsK
ICAgICAgICAgZWdsOjpEaXNwbGF5ICppdGVyRGlzcGxheSA9IGRpc3BsYXlNYXBFbnRyeS5zZWNv
bmQ7Ci0gICAgICAgIGlmIChpdGVyRGlzcGxheS0+Z2V0RGV2aWNlKCkgPT0gZWdsRGV2aWNlKQor
ICAgICAgICBpZiAoaXRlckRpc3BsYXktPmdldERldmljZSgpID09IGRldmljZSkKICAgICAgICAg
ewogICAgICAgICAgICAgZGlzcGxheSA9IGl0ZXJEaXNwbGF5OwogICAgICAgICB9CkBAIC0zMDgs
NyArMzE4LDcgQEAgRGlzcGxheSAqRGlzcGxheTo6R2V0RGlzcGxheUZyb21EZXZpY2Uodm9pZCAq
bmF0aXZlX2Rpc3BsYXkpCiAgICAgaWYgKGRpc3BsYXkgPT0gbnVsbHB0cikKICAgICB7CiAgICAg
ICAgIC8vIFNlZSBpZiB0aGUgZWdsRGV2aWNlIGlzIGluIHVzZSBieSBhIERpc3BsYXkgY3JlYXRl
ZCB1c2luZyB0aGUgREVWSUNFIHBsYXRmb3JtCi0gICAgICAgIERldmljZVBsYXRmb3JtRGlzcGxh
eU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGRldmljZVBsYXRmb3JtRGlzcGxheXMtPmZpbmQo
ZWdsRGV2aWNlKTsKKyAgICAgICAgRGV2aWNlUGxhdGZvcm1EaXNwbGF5TWFwOjpjb25zdF9pdGVy
YXRvciBpdGVyID0gZGV2aWNlUGxhdGZvcm1EaXNwbGF5cy0+ZmluZChkZXZpY2UpOwogICAgICAg
ICBpZiAoaXRlciAhPSBkZXZpY2VQbGF0Zm9ybURpc3BsYXlzLT5lbmQoKSkKICAgICAgICAgewog
ICAgICAgICAgICAgZGlzcGxheSA9IGl0ZXItPnNlY29uZDsKQEAgLTMxOCwxNCArMzI4LDE0IEBA
IERpc3BsYXkgKkRpc3BsYXk6OkdldERpc3BsYXlGcm9tRGV2aWNlKHZvaWQgKm5hdGl2ZV9kaXNw
bGF5KQogICAgIGlmIChkaXNwbGF5ID09IG51bGxwdHIpCiAgICAgewogICAgICAgICAvLyBPdGhl
cndpc2UgY3JlYXRlIGEgbmV3IERpc3BsYXkKLSAgICAgICAgZGlzcGxheSA9IG5ldyBEaXNwbGF5
KEVHTF9QTEFURk9STV9ERVZJQ0VfRVhULCAwLCBlZ2xEZXZpY2UpOwotICAgICAgICBkZXZpY2VQ
bGF0Zm9ybURpc3BsYXlzLT5pbnNlcnQoc3RkOjptYWtlX3BhaXIoZWdsRGV2aWNlLCBkaXNwbGF5
KSk7CisgICAgICAgIGRpc3BsYXkgPSBuZXcgRGlzcGxheShFR0xfUExBVEZPUk1fREVWSUNFX0VY
VCwgMCwgZGV2aWNlKTsKKyAgICAgICAgZGV2aWNlUGxhdGZvcm1EaXNwbGF5cy0+aW5zZXJ0KHN0
ZDo6bWFrZV9wYWlyKGRldmljZSwgZGlzcGxheSkpOwogICAgIH0KIAogICAgIC8vIEFwcGx5IG5l
dyBhdHRyaWJ1dGVzIGlmIHRoZSBkaXNwbGF5IGlzIG5vdCBpbml0aWFsaXplZCB5ZXQuCiAgICAg
aWYgKCFkaXNwbGF5LT5pc0luaXRpYWxpemVkKCkpCiAgICAgewotICAgICAgICByeDo6RGlzcGxh
eUltcGwgKmltcGwgPSBDcmVhdGVEaXNwbGF5RnJvbURldmljZShlZ2xEZXZpY2UpOworICAgICAg
ICByeDo6RGlzcGxheUltcGwgKmltcGwgPSBDcmVhdGVEaXNwbGF5RnJvbURldmljZShkZXZpY2Us
IGRpc3BsYXktPmdldFN0YXRlKCkpOwogICAgICAgICBkaXNwbGF5LT5zZXRBdHRyaWJ1dGVzKGlt
cGwsIGVnbDo6QXR0cmlidXRlTWFwKCkpOwogICAgIH0KIApAQCAtMzQ2LDcgKzM1Niw5IEBAIERp
c3BsYXk6OkRpc3BsYXkoRUdMZW51bSBwbGF0Zm9ybSwgRUdMTmF0aXZlRGlzcGxheVR5cGUgZGlz
cGxheUlkLCBEZXZpY2UgKmVnbERlCiAgICAgICBtRGlzcGxheUV4dGVuc2lvblN0cmluZygpLAog
ICAgICAgbVZlbmRvclN0cmluZygpLAogICAgICAgbURldmljZShlZ2xEZXZpY2UpLAotICAgICAg
bVBsYXRmb3JtKHBsYXRmb3JtKQorICAgICAgbVBsYXRmb3JtKHBsYXRmb3JtKSwKKyAgICAgIG1U
ZXh0dXJlTWFuYWdlcihudWxscHRyKSwKKyAgICAgIG1HbG9iYWxUZXh0dXJlU2hhcmVHcm91cFVz
ZXJzKDApCiB7CiB9CiAKQEAgLTM5NCw4ICs0MDYsMTAgQEAgdm9pZCBEaXNwbGF5OjpzZXRBdHRy
aWJ1dGVzKHJ4OjpEaXNwbGF5SW1wbCAqaW1wbCwgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJN
YXAKIAogRXJyb3IgRGlzcGxheTo6aW5pdGlhbGl6ZSgpCiB7Ci0gICAgLy8gUmUtaW5pdGlhbGl6
ZSBkZWZhdWx0IHBsYXRmb3JtIGlmIGl0J3MgbmVlZGVkCi0gICAgSW5pdERlZmF1bHRQbGF0Zm9y
bUltcGwoKTsKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBTdG9yZSBQbGF0Zm9ybSBpbiBEaXNwbGF5
IGFuZCBpbml0IGhlcmUuCisgICAgQU5HTEVTZXREZWZhdWx0RGlzcGxheVBsYXRmb3JtKHRoaXMp
OworCisgICAgZ2w6OkluaXRpYWxpemVEZWJ1Z0Fubm90YXRpb25zKCZtQW5ub3RhdG9yKTsKIAog
ICAgIFNDT1BFRF9BTkdMRV9ISVNUT0dSQU1fVElNRVIoIkdQVS5BTkdMRS5EaXNwbGF5SW5pdGlh
bGl6ZU1TIik7CiAgICAgVFJBQ0VfRVZFTlQwKCJncHUuYW5nbGUiLCAiZWdsOjpEaXNwbGF5Ojpp
bml0aWFsaXplIik7CkBAIC00MTEsMTAgKzQyNSw3IEBAIEVycm9yIERpc3BsYXk6OmluaXRpYWxp
emUoKQogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAgICAgICAvLyBMb2cgZXh0
ZW5kZWQgZXJyb3IgbWVzc2FnZSBoZXJlCi0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGVycm9y
U3RyZWFtOwotICAgICAgICBlcnJvclN0cmVhbSA8PCAiQU5HTEUgRGlzcGxheTo6aW5pdGlhbGl6
ZSBlcnJvciAiIDw8IGVycm9yLmdldElEKCkgPDwgIjogIgotICAgICAgICAgICAgICAgICAgICA8
PCBlcnJvci5nZXRNZXNzYWdlKCk7Ci0gICAgICAgIEFOR0xFUGxhdGZvcm1DdXJyZW50KCktPmxv
Z0Vycm9yKGVycm9yU3RyZWFtLnN0cigpLmNfc3RyKCkpOworICAgICAgICBFUlIoKSA8PCAiQU5H
TEUgRGlzcGxheTo6aW5pdGlhbGl6ZSBlcnJvciAiIDw8IGVycm9yLmdldElEKCkgPDwgIjogIiA8
PCBlcnJvci5nZXRNZXNzYWdlKCk7CiAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CiAKQEAg
LTQ2NSw2ICs0NzYsOSBAQCB2b2lkIERpc3BsYXk6OnRlcm1pbmF0ZSgpCiAgICAgICAgIGRlc3Ry
b3lDb250ZXh0KCptQ29udGV4dFNldC5iZWdpbigpKTsKICAgICB9CiAKKyAgICAvLyBUaGUgZ2xv
YmFsIHRleHR1cmUgbWFuYWdlciBzaG91bGQgYmUgZGVsZXRlZCB3aXRoIHRoZSBsYXN0IGNvbnRl
eHQgdGhhdCB1c2VzIGl0LgorICAgIEFTU0VSVChtR2xvYmFsVGV4dHVyZVNoYXJlR3JvdXBVc2Vy
cyA9PSAwICYmIG1UZXh0dXJlTWFuYWdlciA9PSBudWxscHRyKTsKKwogICAgIHdoaWxlICghbUlt
YWdlU2V0LmVtcHR5KCkpCiAgICAgewogICAgICAgICBkZXN0cm95SW1hZ2UoKm1JbWFnZVNldC5i
ZWdpbigpKTsKQEAgLTQ3NSw5ICs0ODksOSBAQCB2b2lkIERpc3BsYXk6OnRlcm1pbmF0ZSgpCiAg
ICAgICAgIGRlc3Ryb3lTdHJlYW0oKm1TdHJlYW1TZXQuYmVnaW4oKSk7CiAgICAgfQogCi0gICAg
d2hpbGUgKCFtSW1wbGVtZW50YXRpb24tPmdldFN1cmZhY2VTZXQoKS5lbXB0eSgpKQorICAgIHdo
aWxlICghbVN0YXRlLnN1cmZhY2VTZXQuZW1wdHkoKSkKICAgICB7Ci0gICAgICAgIGRlc3Ryb3lT
dXJmYWNlKCptSW1wbGVtZW50YXRpb24tPmdldFN1cmZhY2VTZXQoKS5iZWdpbigpKTsKKyAgICAg
ICAgZGVzdHJveVN1cmZhY2UoKm1TdGF0ZS5zdXJmYWNlU2V0LmJlZ2luKCkpOwogICAgIH0KIAog
ICAgIG1Db25maWdTZXQuY2xlYXIoKTsKQEAgLTQ5MSw5ICs1MDUsMTQgQEAgdm9pZCBEaXNwbGF5
Ojp0ZXJtaW5hdGUoKQogCiAgICAgbUltcGxlbWVudGF0aW9uLT50ZXJtaW5hdGUoKTsKIAorICAg
IG1EZXZpY2VMb3N0ID0gZmFsc2U7CisKICAgICBtSW5pdGlhbGl6ZWQgPSBmYWxzZTsKIAotICAg
IC8vIE5ldmVyIGRlLWluaXQgZGVmYXVsdCBwbGF0Zm9ybS4uIHRlcm1pbmF0ZSBpcyBub3QgdGhh
dCBmaW5hbC4KKyAgICBnbDo6VW5pbml0aWFsaXplRGVidWdBbm5vdGF0aW9ucygpOworCisgICAg
Ly8gVE9ETyhqbWFkaWxsKTogU3RvcmUgUGxhdGZvcm0gaW4gRGlzcGxheSBhbmQgZGVpbml0IGhl
cmUuCisgICAgQU5HTEVSZXNldERpc3BsYXlQbGF0Zm9ybSh0aGlzKTsKIH0KIAogc3RkOjp2ZWN0
b3I8Y29uc3QgQ29uZmlnKj4gRGlzcGxheTo6Z2V0Q29uZmlncyhjb25zdCBlZ2w6OkF0dHJpYnV0
ZU1hcCAmYXR0cmlicykgY29uc3QKQEAgLTUwMSw1OSArNTIwLDYgQEAgc3RkOjp2ZWN0b3I8Y29u
c3QgQ29uZmlnKj4gRGlzcGxheTo6Z2V0Q29uZmlncyhjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAm
YXR0cmlicykKICAgICByZXR1cm4gbUNvbmZpZ1NldC5maWx0ZXIoYXR0cmlicyk7CiB9CiAKLWJv
b2wgRGlzcGxheTo6Z2V0Q29uZmlnQXR0cmliKGNvbnN0IENvbmZpZyAqY29uZmlndXJhdGlvbiwg
RUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50ICp2YWx1ZSkKLXsKLSAgICBzd2l0Y2ggKGF0dHJpYnV0
ZSkKLSAgICB7Ci0gICAgICBjYXNlIEVHTF9CVUZGRVJfU0laRTogICAgICAgICAgICAgICAqdmFs
dWUgPSBjb25maWd1cmF0aW9uLT5idWZmZXJTaXplOyAgICAgICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgRUdMX0FMUEhBX1NJWkU6ICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRp
b24tPmFscGhhU2l6ZTsgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfQkxVRV9T
SVpFOiAgICAgICAgICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+Ymx1ZVNpemU7ICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVHTF9HUkVFTl9TSVpFOiAgICAgICAgICAg
ICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5ncmVlblNpemU7ICAgICAgICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRUdMX1JFRF9TSVpFOiAgICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNv
bmZpZ3VyYXRpb24tPnJlZFNpemU7ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBF
R0xfREVQVEhfU0laRTogICAgICAgICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+ZGVw
dGhTaXplOyAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVHTF9TVEVOQ0lMX1NJWkU6
ICAgICAgICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5zdGVuY2lsU2l6ZTsgICAgICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRUdMX0NPTkZJR19DQVZFQVQ6ICAgICAgICAgICAgICp2
YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPmNvbmZpZ0NhdmVhdDsgICAgICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBFR0xfQ09ORklHX0lEOiAgICAgICAgICAgICAgICAgKnZhbHVlID0gY29uZmlndXJh
dGlvbi0+Y29uZmlnSUQ7ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVHTF9MRVZF
TDogICAgICAgICAgICAgICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5sZXZlbDsgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRUdMX05BVElWRV9SRU5ERVJBQkxFOiAg
ICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm5hdGl2ZVJlbmRlcmFibGU7ICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFR0xfTkFUSVZFX1ZJU1VBTF9JRDogICAgICAgICAgKnZhbHVlID0g
Y29uZmlndXJhdGlvbi0+bmF0aXZlVmlzdWFsSUQ7ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IEVHTF9OQVRJVkVfVklTVUFMX1RZUEU6ICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5u
YXRpdmVWaXN1YWxUeXBlOyAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRUdMX1NBTVBMRVM6ICAg
ICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPnNhbXBsZXM7ICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfU0FNUExFX0JVRkZFUlM6ICAgICAgICAgICAg
KnZhbHVlID0gY29uZmlndXJhdGlvbi0+c2FtcGxlQnVmZmVyczsgICAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEVHTF9TVVJGQUNFX1RZUEU6ICAgICAgICAgICAgICAqdmFsdWUgPSBjb25maWd1
cmF0aW9uLT5zdXJmYWNlVHlwZTsgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRUdMX1RS
QU5TUEFSRU5UX1RZUEU6ICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPnRyYW5zcGFy
ZW50VHlwZTsgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfVFJBTlNQQVJFTlRfQkxVRV9W
QUxVRTogICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+dHJhbnNwYXJlbnRCbHVlVmFsdWU7ICAg
YnJlYWs7Ci0gICAgICBjYXNlIEVHTF9UUkFOU1BBUkVOVF9HUkVFTl9WQUxVRTogICAqdmFsdWUg
PSBjb25maWd1cmF0aW9uLT50cmFuc3BhcmVudEdyZWVuVmFsdWU7ICBicmVhazsKLSAgICAgIGNh
c2UgRUdMX1RSQU5TUEFSRU5UX1JFRF9WQUxVRTogICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24t
PnRyYW5zcGFyZW50UmVkVmFsdWU7ICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfQklORF9UT19U
RVhUVVJFX1JHQjogICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+YmluZFRvVGV4dHVyZVJH
QjsgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVHTF9CSU5EX1RPX1RFWFRVUkVfUkdCQTogICAg
ICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5iaW5kVG9UZXh0dXJlUkdCQTsgICAgICBicmVhazsK
LSAgICAgIGNhc2UgRUdMX01JTl9TV0FQX0lOVEVSVkFMOiAgICAgICAgICp2YWx1ZSA9IGNvbmZp
Z3VyYXRpb24tPm1pblN3YXBJbnRlcnZhbDsgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xf
TUFYX1NXQVBfSU5URVJWQUw6ICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bWF4U3dh
cEludGVydmFsOyAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVHTF9MVU1JTkFOQ0VfU0laRTog
ICAgICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5sdW1pbmFuY2VTaXplOyAgICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgRUdMX0FMUEhBX01BU0tfU0laRTogICAgICAgICAgICp2YWx1
ZSA9IGNvbmZpZ3VyYXRpb24tPmFscGhhTWFza1NpemU7ICAgICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFR0xfQ09MT1JfQlVGRkVSX1RZUEU6ICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlv
bi0+Y29sb3JCdWZmZXJUeXBlOyAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVHTF9SRU5ERVJB
QkxFX1RZUEU6ICAgICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5yZW5kZXJhYmxlVHlw
ZTsgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRUdMX01BVENIX05BVElWRV9QSVhNQVA6ICAg
ICAgICp2YWx1ZSA9IGZhbHNlOyBVTklNUExFTUVOVEVEKCk7ICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFR0xfQ09ORk9STUFOVDogICAgICAgICAgICAgICAgKnZhbHVlID0gY29u
ZmlndXJhdGlvbi0+Y29uZm9ybWFudDsgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVH
TF9NQVhfUEJVRkZFUl9XSURUSDogICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tYXhQ
QnVmZmVyV2lkdGg7ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRUdMX01BWF9QQlVGRkVSX0hF
SUdIVDogICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1heFBCdWZmZXJIZWlnaHQ7ICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfTUFYX1BCVUZGRVJfUElYRUxTOiAgICAgICAgKnZh
bHVlID0gY29uZmlndXJhdGlvbi0+bWF4UEJ1ZmZlclBpeGVsczsgICAgICAgYnJlYWs7Ci0KLSAg
ICAgIGNhc2UgRUdMX09QVElNQUxfU1VSRkFDRV9PUklFTlRBVElPTl9BTkdMRToKLSAgICAgICAg
ICBpZiAoIWdldEV4dGVuc2lvbnMoKS5zdXJmYWNlT3JpZW50YXRpb24pCi0gICAgICAgICAgewot
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICAgICp2YWx1
ZSA9IGNvbmZpZ3VyYXRpb24tPm9wdGltYWxPcmllbnRhdGlvbjsKLSAgICAgICAgICBicmVhazsK
LQotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJl
dHVybiB0cnVlOwotfQotCiBFcnJvciBEaXNwbGF5OjpjcmVhdGVXaW5kb3dTdXJmYWNlKGNvbnN0
IENvbmZpZyAqY29uZmlndXJhdGlvbiwgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIGNvbnN0
IEF0dHJpYnV0ZU1hcCAmYXR0cmlicywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU3VyZmFjZSAqKm91dFN1cmZhY2UpCiB7CkBAIC01NjQsMTEgKzUzMCwxMSBAQCBFcnJvciBE
aXNwbGF5OjpjcmVhdGVXaW5kb3dTdXJmYWNlKGNvbnN0IENvbmZpZyAqY29uZmlndXJhdGlvbiwg
RUdMTmF0aXZlV2luZG93VAogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN1cmZhY2U+IHN1cmZhY2Uo
CiAgICAgICAgIG5ldyBXaW5kb3dTdXJmYWNlKG1JbXBsZW1lbnRhdGlvbiwgY29uZmlndXJhdGlv
biwgd2luZG93LCBhdHRyaWJzKSk7Ci0gICAgQU5HTEVfVFJZKHN1cmZhY2UtPmluaXRpYWxpemUo
KSk7CisgICAgQU5HTEVfVFJZKHN1cmZhY2UtPmluaXRpYWxpemUoKnRoaXMpKTsKIAogICAgIEFT
U0VSVChvdXRTdXJmYWNlICE9IG51bGxwdHIpOwogICAgICpvdXRTdXJmYWNlID0gc3VyZmFjZS5y
ZWxlYXNlKCk7Ci0gICAgbUltcGxlbWVudGF0aW9uLT5nZXRTdXJmYWNlU2V0KCkuaW5zZXJ0KCpv
dXRTdXJmYWNlKTsKKyAgICBtU3RhdGUuc3VyZmFjZVNldC5pbnNlcnQoKm91dFN1cmZhY2UpOwog
CiAgICAgV2luZG93U3VyZmFjZU1hcCAqd2luZG93U3VyZmFjZXMgPSBHZXRXaW5kb3dTdXJmYWNl
cygpOwogICAgIEFTU0VSVCh3aW5kb3dTdXJmYWNlcyAmJiB3aW5kb3dTdXJmYWNlcy0+ZmluZCh3
aW5kb3cpID09IHdpbmRvd1N1cmZhY2VzLT5lbmQoKSk7CkBAIC01ODcsMTcgKzU1MywyMCBAQCBF
cnJvciBEaXNwbGF5OjpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBDb25maWcgKmNvbmZpZ3Vy
YXRpb24sIGNvbnN0IEF0dHJpYnV0ZQogICAgIH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXJm
YWNlPiBzdXJmYWNlKG5ldyBQYnVmZmVyU3VyZmFjZShtSW1wbGVtZW50YXRpb24sIGNvbmZpZ3Vy
YXRpb24sIGF0dHJpYnMpKTsKLSAgICBBTkdMRV9UUlkoc3VyZmFjZS0+aW5pdGlhbGl6ZSgpKTsK
KyAgICBBTkdMRV9UUlkoc3VyZmFjZS0+aW5pdGlhbGl6ZSgqdGhpcykpOwogCiAgICAgQVNTRVJU
KG91dFN1cmZhY2UgIT0gbnVsbHB0cik7CiAgICAgKm91dFN1cmZhY2UgPSBzdXJmYWNlLnJlbGVh
c2UoKTsKLSAgICBtSW1wbGVtZW50YXRpb24tPmdldFN1cmZhY2VTZXQoKS5pbnNlcnQoKm91dFN1
cmZhY2UpOworICAgIG1TdGF0ZS5zdXJmYWNlU2V0Lmluc2VydCgqb3V0U3VyZmFjZSk7CiAKICAg
ICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKLUVycm9yIERpc3BsYXk6OmNy
ZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IENvbmZpZyAqY29uZmlndXJhdGlvbiwg
RUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJzLCBTdXJmYWNlICoq
b3V0U3VyZmFjZSkKK0Vycm9yIERpc3BsYXk6OmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVy
KGNvbnN0IENvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1
dGVNYXAgJmF0dHJpYnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTdXJmYWNlICoqb3V0U3VyZmFjZSkKIHsKICAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgp
KTsKIApAQCAtNjA3LDEyICs1NzYsMTIgQEAgRXJyb3IgRGlzcGxheTo6Y3JlYXRlUGJ1ZmZlckZy
b21DbGllbnRCdWZmZXIoY29uc3QgQ29uZmlnICpjb25maWd1cmF0aW9uLCBFR0xDbGkKICAgICB9
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VyZmFjZT4gc3VyZmFjZSgKLSAgICAgICAgbmV3IFBi
dWZmZXJTdXJmYWNlKG1JbXBsZW1lbnRhdGlvbiwgY29uZmlndXJhdGlvbiwgc2hhcmVIYW5kbGUs
IGF0dHJpYnMpKTsKLSAgICBBTkdMRV9UUlkoc3VyZmFjZS0+aW5pdGlhbGl6ZSgpKTsKKyAgICAg
ICAgbmV3IFBidWZmZXJTdXJmYWNlKG1JbXBsZW1lbnRhdGlvbiwgY29uZmlndXJhdGlvbiwgYnVm
dHlwZSwgY2xpZW50QnVmZmVyLCBhdHRyaWJzKSk7CisgICAgQU5HTEVfVFJZKHN1cmZhY2UtPmlu
aXRpYWxpemUoKnRoaXMpKTsKIAogICAgIEFTU0VSVChvdXRTdXJmYWNlICE9IG51bGxwdHIpOwog
ICAgICpvdXRTdXJmYWNlID0gc3VyZmFjZS5yZWxlYXNlKCk7Ci0gICAgbUltcGxlbWVudGF0aW9u
LT5nZXRTdXJmYWNlU2V0KCkuaW5zZXJ0KCpvdXRTdXJmYWNlKTsKKyAgICBtU3RhdGUuc3VyZmFj
ZVNldC5pbnNlcnQoKm91dFN1cmZhY2UpOwogCiAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NV
Q0NFU1MpOwogfQpAQCAtNjI5LDExICs1OTgsMTEgQEAgRXJyb3IgRGlzcGxheTo6Y3JlYXRlUGl4
bWFwU3VyZmFjZShjb25zdCBDb25maWcgKmNvbmZpZ3VyYXRpb24sIE5hdGl2ZVBpeG1hcFR5cGUK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXJmYWNlPiBzdXJmYWNlKAogICAgICAgICBuZXcgUGl4
bWFwU3VyZmFjZShtSW1wbGVtZW50YXRpb24sIGNvbmZpZ3VyYXRpb24sIG5hdGl2ZVBpeG1hcCwg
YXR0cmlicykpOwotICAgIEFOR0xFX1RSWShzdXJmYWNlLT5pbml0aWFsaXplKCkpOworICAgIEFO
R0xFX1RSWShzdXJmYWNlLT5pbml0aWFsaXplKCp0aGlzKSk7CiAKICAgICBBU1NFUlQob3V0U3Vy
ZmFjZSAhPSBudWxscHRyKTsKICAgICAqb3V0U3VyZmFjZSA9IHN1cmZhY2UucmVsZWFzZSgpOwot
ICAgIG1JbXBsZW1lbnRhdGlvbi0+Z2V0U3VyZmFjZVNldCgpLmluc2VydCgqb3V0U3VyZmFjZSk7
CisgICAgbVN0YXRlLnN1cmZhY2VTZXQuaW5zZXJ0KCpvdXRTdXJmYWNlKTsKIAogICAgIHJldHVy
biBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0KQEAgLTcwOCw3ICs2NzcsMjUgQEAgRXJyb3Ig
RGlzcGxheTo6Y3JlYXRlQ29udGV4dChjb25zdCBDb25maWcgKmNvbmZpZ3VyYXRpb24sIGdsOjpD
b250ZXh0ICpzaGFyZUNvbnQKICAgICAgICAgQU5HTEVfVFJZKHJlc3RvcmVMb3N0RGV2aWNlKCkp
OwogICAgIH0KIAotICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gbmV3IGdsOjpDb250ZXh0KG1J
bXBsZW1lbnRhdGlvbiwgY29uZmlndXJhdGlvbiwgc2hhcmVDb250ZXh0LCBhdHRyaWJzKTsKKyAg
ICAvLyBUaGlzIGRpc3BsYXkgdGV4dHVyZSBzaGFyaW5nIHdpbGwgYWxsb3cgdGhlIGZpcnN0IGNv
bnRleHQgdG8gY3JlYXRlIHRoZSB0ZXh0dXJlIHNoYXJlIGdyb3VwLgorICAgIGJvb2wgdXNpbmdE
aXNwbGF5VGV4dHVyZVNoYXJlR3JvdXAgPQorICAgICAgICBhdHRyaWJzLmdldChFR0xfRElTUExB
WV9URVhUVVJFX1NIQVJFX0dST1VQX0FOR0xFLCBFR0xfRkFMU0UpID09IEVHTF9UUlVFOworICAg
IGdsOjpUZXh0dXJlTWFuYWdlciAqc2hhcmVUZXh0dXJlcyA9IG51bGxwdHI7CisKKyAgICBpZiAo
dXNpbmdEaXNwbGF5VGV4dHVyZVNoYXJlR3JvdXApCisgICAgeworICAgICAgICBBU1NFUlQoKG1U
ZXh0dXJlTWFuYWdlciA9PSBudWxscHRyKSA9PSAobUdsb2JhbFRleHR1cmVTaGFyZUdyb3VwVXNl
cnMgPT0gMCkpOworICAgICAgICBpZiAobVRleHR1cmVNYW5hZ2VyID09IG51bGxwdHIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1UZXh0dXJlTWFuYWdlciA9IG5ldyBnbDo6VGV4dHVyZU1hbmFn
ZXIoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1HbG9iYWxUZXh0dXJlU2hhcmVHcm91cFVzZXJz
Kys7CisgICAgICAgIHNoYXJlVGV4dHVyZXMgPSBtVGV4dHVyZU1hbmFnZXI7CisgICAgfQorCisg
ICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBuZXcgZ2w6OkNvbnRleHQobUltcGxlbWVudGF0aW9u
LCBjb25maWd1cmF0aW9uLCBzaGFyZUNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2hhcmVUZXh0dXJlcywgYXR0cmlicywgbURpc3BsYXlFeHRlbnNp
b25zKTsKIAogICAgIEFTU0VSVChjb250ZXh0ICE9IG51bGxwdHIpOwogICAgIG1Db250ZXh0U2V0
Lmluc2VydChjb250ZXh0KTsKQEAgLTcyMiwxMCArNzA5LDEwIEBAIEVycm9yIERpc3BsYXk6Om1h
a2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsIGVnbDo6U3VyZmFjZSAqcmVhZFN1
cmZhY2UsCiB7CiAgICAgQU5HTEVfVFJZKG1JbXBsZW1lbnRhdGlvbi0+bWFrZUN1cnJlbnQoZHJh
d1N1cmZhY2UsIHJlYWRTdXJmYWNlLCBjb250ZXh0KSk7CiAKLSAgICBpZiAoY29udGV4dCAhPSBu
dWxscHRyICYmIGRyYXdTdXJmYWNlICE9IG51bGxwdHIpCisgICAgaWYgKGNvbnRleHQgIT0gbnVs
bHB0cikKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWFkU3VyZmFjZSA9PSBkcmF3U3VyZmFjZSk7
Ci0gICAgICAgIGNvbnRleHQtPm1ha2VDdXJyZW50KGRyYXdTdXJmYWNlKTsKKyAgICAgICAgY29u
dGV4dC0+bWFrZUN1cnJlbnQodGhpcywgZHJhd1N1cmZhY2UpOwogICAgIH0KIAogICAgIHJldHVy
biBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKQEAgLTc2NCwxMCArNzUxLDEwIEBAIHZvaWQgRGlz
cGxheTo6ZGVzdHJveVN1cmZhY2UoU3VyZmFjZSAqc3VyZmFjZSkKICAgICAgICAgfQogCiAgICAg
ICAgIEFTU0VSVChzdXJmYWNlUmVtb3ZlZCk7Ci0gICAgICAgIFVOVVNFRF9BU1NFUlRJT05fVkFS
SUFCTEUoc3VyZmFjZVJlbW92ZWQpOwogICAgIH0KIAotICAgIG1JbXBsZW1lbnRhdGlvbi0+ZGVz
dHJveVN1cmZhY2Uoc3VyZmFjZSk7CisgICAgbVN0YXRlLnN1cmZhY2VTZXQuZXJhc2Uoc3VyZmFj
ZSk7CisgICAgc3VyZmFjZS0+b25EZXN0cm95KHRoaXMpOwogfQogCiB2b2lkIERpc3BsYXk6OmRl
c3Ryb3lJbWFnZShlZ2w6OkltYWdlICppbWFnZSkKQEAgLTc4Niw2ICs3NzMsMjAgQEAgdm9pZCBE
aXNwbGF5OjpkZXN0cm95U3RyZWFtKGVnbDo6U3RyZWFtICpzdHJlYW0pCiAKIHZvaWQgRGlzcGxh
eTo6ZGVzdHJveUNvbnRleHQoZ2w6OkNvbnRleHQgKmNvbnRleHQpCiB7CisgICAgaWYgKGNvbnRl
eHQtPnVzaW5nRGlzcGxheVRleHR1cmVTaGFyZUdyb3VwKCkpCisgICAgeworICAgICAgICBBU1NF
UlQobUdsb2JhbFRleHR1cmVTaGFyZUdyb3VwVXNlcnMgPj0gMSAmJiBtVGV4dHVyZU1hbmFnZXIg
IT0gbnVsbHB0cik7CisgICAgICAgIGlmIChtR2xvYmFsVGV4dHVyZVNoYXJlR3JvdXBVc2VycyA9
PSAxKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSBsYXN0IGNvbnRl
eHQgdXNpbmcgdGhlIGdsb2JhbCBzaGFyZSBncm91cCwgZGVzdHJveSB0aGUgZ2xvYmFsIHRleHR1
cmUKKyAgICAgICAgICAgIC8vIG1hbmFnZXIgc28gdGhhdCB0aGUgdGV4dHVyZXMgY2FuIGJlIGRl
c3Ryb3llZCB3aGlsZSBhIGNvbnRleHQgc3RpbGwgZXhpc3RzCisgICAgICAgICAgICBtVGV4dHVy
ZU1hbmFnZXItPnJlbGVhc2UoY29udGV4dCk7CisgICAgICAgICAgICBtVGV4dHVyZU1hbmFnZXIg
PSBudWxscHRyOworICAgICAgICB9CisgICAgICAgIG1HbG9iYWxUZXh0dXJlU2hhcmVHcm91cFVz
ZXJzLS07CisgICAgfQorCisgICAgY29udGV4dC0+ZGVzdHJveSh0aGlzKTsKICAgICBtQ29udGV4
dFNldC5lcmFzZShjb250ZXh0KTsKICAgICBTYWZlRGVsZXRlKGNvbnRleHQpOwogfQpAQCAtODQ4
LDE0ICs4NDksMTQgQEAgYm9vbCBEaXNwbGF5Ojppc1ZhbGlkQ29uZmlnKGNvbnN0IENvbmZpZyAq
Y29uZmlnKSBjb25zdAogICAgIHJldHVybiBtQ29uZmlnU2V0LmNvbnRhaW5zKGNvbmZpZyk7CiB9
CiAKLWJvb2wgRGlzcGxheTo6aXNWYWxpZENvbnRleHQoZ2w6OkNvbnRleHQgKmNvbnRleHQpIGNv
bnN0Citib29sIERpc3BsYXk6OmlzVmFsaWRDb250ZXh0KGNvbnN0IGdsOjpDb250ZXh0ICpjb250
ZXh0KSBjb25zdAogewotICAgIHJldHVybiBtQ29udGV4dFNldC5maW5kKGNvbnRleHQpICE9IG1D
b250ZXh0U2V0LmVuZCgpOworICAgIHJldHVybiBtQ29udGV4dFNldC5maW5kKGNvbnN0X2Nhc3Q8
Z2w6OkNvbnRleHQgKj4oY29udGV4dCkpICE9IG1Db250ZXh0U2V0LmVuZCgpOwogfQogCi1ib29s
IERpc3BsYXk6OmlzVmFsaWRTdXJmYWNlKFN1cmZhY2UgKnN1cmZhY2UpIGNvbnN0Citib29sIERp
c3BsYXk6OmlzVmFsaWRTdXJmYWNlKGNvbnN0IFN1cmZhY2UgKnN1cmZhY2UpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbi0+Z2V0U3VyZmFjZVNldCgpLmZpbmQoc3VyZmFjZSkg
IT0gbUltcGxlbWVudGF0aW9uLT5nZXRTdXJmYWNlU2V0KCkuZW5kKCk7CisgICAgcmV0dXJuIG1T
dGF0ZS5zdXJmYWNlU2V0LmZpbmQoY29uc3RfY2FzdDxTdXJmYWNlICo+KHN1cmZhY2UpKSAhPSBt
U3RhdGUuc3VyZmFjZVNldC5lbmQoKTsKIH0KIAogYm9vbCBEaXNwbGF5Ojppc1ZhbGlkSW1hZ2Uo
Y29uc3QgSW1hZ2UgKmltYWdlKSBjb25zdApAQCAtOTAzLDYgKzkwNCwxMCBAQCBzdGF0aWMgQ2xp
ZW50RXh0ZW5zaW9ucyBHZW5lcmF0ZUNsaWVudEV4dGVuc2lvbnMoKQogICAgIGV4dGVuc2lvbnMu
ZXhwZXJpbWVudGFsUHJlc2VudFBhdGggPSB0cnVlOwogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEFO
R0xFX0VOQUJMRV9WVUxLQU4pCisgICAgZXh0ZW5zaW9ucy5wbGF0Zm9ybUFOR0xFVnVsa2FuID0g
dHJ1ZTsKKyNlbmRpZgorCiAjaWYgZGVmaW5lZChBTkdMRV9VU0VfWDExKQogICAgIGV4dGVuc2lv
bnMueDExVmlzdWFsID0gdHJ1ZTsKICNlbmRpZgpAQCAtOTMwLDEwICs5MzUsNyBAQCBjb25zdCBD
bGllbnRFeHRlbnNpb25zICZEaXNwbGF5OjpnZXRDbGllbnRFeHRlbnNpb25zKCkKIAogY29uc3Qg
c3RkOjpzdHJpbmcgJkRpc3BsYXk6OmdldENsaWVudEV4dGVuc2lvblN0cmluZygpCiB7Ci0jcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgogICAgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmlu
ZyBjbGllbnRFeHRlbnNpb25zU3RyaW5nID0gR2VuZXJhdGVFeHRlbnNpb25zU3RyaW5nKGdldENs
aWVudEV4dGVuc2lvbnMoKSk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAgICAgcmV0
dXJuIGNsaWVudEV4dGVuc2lvbnNTdHJpbmc7CiB9CiAKQEAgLTk0Niw2ICs5NDgsOCBAQCB2b2lk
IERpc3BsYXk6OmluaXREaXNwbGF5RXh0ZW5zaW9ucygpCiAgICAgbURpc3BsYXlFeHRlbnNpb25z
LmNyZWF0ZUNvbnRleHROb0Vycm9yID0gdHJ1ZTsKICAgICBtRGlzcGxheUV4dGVuc2lvbnMuY3Jl
YXRlQ29udGV4dFdlYkdMQ29tcGF0aWJpbGl0eSA9IHRydWU7CiAgICAgbURpc3BsYXlFeHRlbnNp
b25zLmNyZWF0ZUNvbnRleHRCaW5kR2VuZXJhdGVzUmVzb3VyY2UgPSB0cnVlOworICAgIG1EaXNw
bGF5RXh0ZW5zaW9ucy5jcmVhdGVDb250ZXh0Q2xpZW50QXJyYXlzICAgICAgICAgID0gdHJ1ZTsK
KyAgICBtRGlzcGxheUV4dGVuc2lvbnMucGl4ZWxGb3JtYXRGbG9hdCAgICAgICAgICAgICAgICAg
ICA9IHRydWU7CiAKICAgICAvLyBGb3JjZSBFR0xfS0hSX2dldF9hbGxfcHJvY19hZGRyZXNzZXMg
b24uCiAgICAgbURpc3BsYXlFeHRlbnNpb25zLmdldEFsbFByb2NBZGRyZXNzZXMgPSB0cnVlOwpA
QCAtOTU4LDYgKzk2MiwxNCBAQCBib29sIERpc3BsYXk6OmlzVmFsaWROYXRpdmVXaW5kb3coRUdM
TmF0aXZlV2luZG93VHlwZSB3aW5kb3cpIGNvbnN0CiAgICAgcmV0dXJuIG1JbXBsZW1lbnRhdGlv
bi0+aXNWYWxpZE5hdGl2ZVdpbmRvdyh3aW5kb3cpOwogfQogCitFcnJvciBEaXNwbGF5Ojp2YWxp
ZGF0ZUNsaWVudEJ1ZmZlcihjb25zdCBDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZhdHRy
aWJzKQoreworICAgIHJldHVybiBtSW1wbGVtZW50YXRpb24tPnZhbGlkYXRlQ2xpZW50QnVmZmVy
KGNvbmZpZ3VyYXRpb24sIGJ1ZnR5cGUsIGNsaWVudEJ1ZmZlciwgYXR0cmlicyk7Cit9CisKIGJv
b2wgRGlzcGxheTo6aXNWYWxpZERpc3BsYXkoY29uc3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQog
ewogICAgIGNvbnN0IEFOR0xFUGxhdGZvcm1EaXNwbGF5TWFwICphbmdsZVBsYXRmb3JtRGlzcGxh
eU1hcCA9IEdldEFOR0xFUGxhdGZvcm1EaXNwbGF5TWFwKCk7CkBAIC0xMDMxLDQgKzEwNDMsNCBA
QCBnbDo6VmVyc2lvbiBEaXNwbGF5OjpnZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdAog
ewogICAgIHJldHVybiBtSW1wbGVtZW50YXRpb24tPmdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigp
OwogfQotfQorfSAgLy8gbmFtZXNwYWNlIGVnbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Rpc3BsYXkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9EaXNwbGF5LmgKaW5kZXggYzBkYWZiOTBmM2JmMmE3ZTEzYjQ3ZTE5ZDZm
NTZlOWY2Y2ExOGRmOC4uNGZiZjU0MWNhMmJmZTlmMmRkMTU0ZTdkNWZlODNkN2RhYTYyZTFlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Rpc3BsYXku
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGlzcGxheS5oCkBA
IC0xOCwxMSArMTgsMTMgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9DYXBzLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvQ29uZmlnLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRXJyb3IuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9Mb2dnaW5nQW5ub3RhdG9yLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvVmVyc2lv
bi5oIgogCiBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENvbnRleHQ7CitjbGFzcyBUZXh0dXJlTWFu
YWdlcjsKIH0KIAogbmFtZXNwYWNlIHJ4CkBAIC0zNyw2ICszOSwxMyBAQCBjbGFzcyBJbWFnZTsK
IGNsYXNzIFN1cmZhY2U7CiBjbGFzcyBTdHJlYW07CiAKK3VzaW5nIFN1cmZhY2VTZXQgPSBzdGQ6
OnNldDxTdXJmYWNlICo+OworCitzdHJ1Y3QgRGlzcGxheVN0YXRlIGZpbmFsIDogYW5nbGU6Ok5v
bkNvcHlhYmxlCit7CisgICAgU3VyZmFjZVNldCBzdXJmYWNlU2V0OworfTsKKwogY2xhc3MgRGlz
cGxheSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6CkBAIC00NSwxOSAr
NTQsMjIgQEAgY2xhc3MgRGlzcGxheSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIEVy
cm9yIGluaXRpYWxpemUoKTsKICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogCi0gICAgc3RhdGljIGVn
bDo6RGlzcGxheSAqR2V0RGlzcGxheUZyb21EZXZpY2Uodm9pZCAqbmF0aXZlX2Rpc3BsYXkpOwot
ICAgIHN0YXRpYyBlZ2w6OkRpc3BsYXkgKkdldERpc3BsYXlGcm9tQXR0cmlicyh2b2lkICpuYXRp
dmVfZGlzcGxheSwgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJNYXApOworICAgIHN0YXRpYyBl
Z2w6OkRpc3BsYXkgKkdldERpc3BsYXlGcm9tRGV2aWNlKERldmljZSAqZGV2aWNlKTsKKyAgICBz
dGF0aWMgZWdsOjpEaXNwbGF5ICpHZXREaXNwbGF5RnJvbU5hdGl2ZURpc3BsYXkoRUdMTmF0aXZl
RGlzcGxheVR5cGUgbmF0aXZlRGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJNYXApOwog
CiAgICAgc3RhdGljIGNvbnN0IENsaWVudEV4dGVuc2lvbnMgJmdldENsaWVudEV4dGVuc2lvbnMo
KTsKICAgICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgJmdldENsaWVudEV4dGVuc2lvblN0cmlu
ZygpOwogCiAgICAgc3RkOjp2ZWN0b3I8Y29uc3QgQ29uZmlnKj4gZ2V0Q29uZmlncyhjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgY29uc3Q7Ci0gICAgYm9vbCBnZXRDb25maWdBdHRy
aWIoY29uc3QgQ29uZmlnICpjb25maWd1cmF0aW9uLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQg
KnZhbHVlKTsKIAogICAgIEVycm9yIGNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgQ29uZmlnICpj
b25maWd1cmF0aW9uLCBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgY29uc3QgQXR0cmlidXRl
TWFwICZhdHRyaWJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VyZmFjZSAqKm91
dFN1cmZhY2UpOwogICAgIEVycm9yIGNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IENvbmZpZyAq
Y29uZmlndXJhdGlvbiwgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJzLCBTdXJmYWNlICoqb3V0
U3VyZmFjZSk7Ci0gICAgRXJyb3IgY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3Qg
Q29uZmlnICpjb25maWd1cmF0aW9uLCBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsIGNvbnN0
IEF0dHJpYnV0ZU1hcCAmYXR0cmlicywKKyAgICBFcnJvciBjcmVhdGVQYnVmZmVyRnJvbUNsaWVu
dEJ1ZmZlcihjb25zdCBDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZh
dHRyaWJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1cmZhY2Ug
KipvdXRTdXJmYWNlKTsKICAgICBFcnJvciBjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IENvbmZp
ZyAqY29uZmlndXJhdGlvbiwgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVQaXhtYXAsIGNvbnN0IEF0
dHJpYnV0ZU1hcCAmYXR0cmlicywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1cmZh
Y2UgKipvdXRTdXJmYWNlKTsKQEAgLTgyLDEyICs5NCwxNyBAQCBjbGFzcyBEaXNwbGF5IGZpbmFs
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdDsK
ICAgICBib29sIGlzVmFsaWRDb25maWcoY29uc3QgQ29uZmlnICpjb25maWcpIGNvbnN0OwotICAg
IGJvb2wgaXNWYWxpZENvbnRleHQoZ2w6OkNvbnRleHQgKmNvbnRleHQpIGNvbnN0OwotICAgIGJv
b2wgaXNWYWxpZFN1cmZhY2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKSBjb25zdDsKKyAgICBib29s
IGlzVmFsaWRDb250ZXh0KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KSBjb25zdDsKKyAgICBi
b29sIGlzVmFsaWRTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkgY29uc3Q7CiAg
ICAgYm9vbCBpc1ZhbGlkSW1hZ2UoY29uc3QgSW1hZ2UgKmltYWdlKSBjb25zdDsKICAgICBib29s
IGlzVmFsaWRTdHJlYW0oY29uc3QgU3RyZWFtICpzdHJlYW0pIGNvbnN0OwogICAgIGJvb2wgaXNW
YWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3Q7CiAKKyAg
ICBFcnJvciB2YWxpZGF0ZUNsaWVudEJ1ZmZlcihjb25zdCBDb25maWcgKmNvbmZpZ3VyYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJz
KTsKKwogICAgIHN0YXRpYyBib29sIGlzVmFsaWREaXNwbGF5KGNvbnN0IGVnbDo6RGlzcGxheSAq
ZGlzcGxheSk7CiAgICAgc3RhdGljIGJvb2wgaXNWYWxpZE5hdGl2ZURpc3BsYXkoRUdMTmF0aXZl
RGlzcGxheVR5cGUgZGlzcGxheSk7CiAgICAgc3RhdGljIGJvb2wgaGFzRXhpc3RpbmdXaW5kb3dT
dXJmYWNlKEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KTsKQEAgLTEwOCwxMiArMTI1LDE0IEBA
IGNsYXNzIERpc3BsYXkgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBjb25zdCBBdHRy
aWJ1dGVNYXAgJmdldEF0dHJpYnV0ZU1hcCgpIGNvbnN0IHsgcmV0dXJuIG1BdHRyaWJ1dGVNYXA7
IH0KICAgICBFR0xOYXRpdmVEaXNwbGF5VHlwZSBnZXROYXRpdmVEaXNwbGF5SWQoKSBjb25zdCB7
IHJldHVybiBtRGlzcGxheUlkOyB9CiAKLSAgICByeDo6RGlzcGxheUltcGwgKmdldEltcGxlbWVu
dGF0aW9uKCkgeyByZXR1cm4gbUltcGxlbWVudGF0aW9uOyB9CisgICAgcng6OkRpc3BsYXlJbXBs
ICpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbjsgfQog
ICAgIERldmljZSAqZ2V0RGV2aWNlKCkgY29uc3Q7CiAgICAgRUdMZW51bSBnZXRQbGF0Zm9ybSgp
IGNvbnN0IHsgcmV0dXJuIG1QbGF0Zm9ybTsgfQogCiAgICAgZ2w6OlZlcnNpb24gZ2V0TWF4U3Vw
cG9ydGVkRVNWZXJzaW9uKCkgY29uc3Q7CiAKKyAgICBjb25zdCBEaXNwbGF5U3RhdGUgJmdldFN0
YXRlKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlOyB9CisKICAgcHJpdmF0ZToKICAgICBEaXNwbGF5
KEVHTGVudW0gcGxhdGZvcm0sIEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRpc3BsYXlJZCwgRGV2aWNl
ICplZ2xEZXZpY2UpOwogCkBAIC0xMjQsNiArMTQzLDcgQEAgY2xhc3MgRGlzcGxheSBmaW5hbCA6
IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHZvaWQgaW5pdERpc3BsYXlFeHRlbnNpb25zKCk7CiAg
ICAgdm9pZCBpbml0VmVuZG9yU3RyaW5nKCk7CiAKKyAgICBEaXNwbGF5U3RhdGUgbVN0YXRlOwog
ICAgIHJ4OjpEaXNwbGF5SW1wbCAqbUltcGxlbWVudGF0aW9uOwogCiAgICAgRUdMTmF0aXZlRGlz
cGxheVR5cGUgbURpc3BsYXlJZDsKQEAgLTE1Miw4ICsxNzIsMTIgQEAgY2xhc3MgRGlzcGxheSBm
aW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgRGV2aWNlICptRGV2aWNlOwogICAgIEVH
TGVudW0gbVBsYXRmb3JtOworICAgIGFuZ2xlOjpMb2dnaW5nQW5ub3RhdG9yIG1Bbm5vdGF0b3I7
CisKKyAgICBnbDo6VGV4dHVyZU1hbmFnZXIgKm1UZXh0dXJlTWFuYWdlcjsKKyAgICBzaXplX3Qg
bUdsb2JhbFRleHR1cmVTaGFyZUdyb3VwVXNlcnM7CiB9OwogCi19Cit9ICAvLyBuYW1lc3BhY2Ug
ZWdsCiAKICNlbmRpZiAgIC8vIExJQkFOR0xFX0RJU1BMQVlfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9FcnJvci5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRXJyb3IuY3BwCmluZGV4IGZlZDE1OTQ5NzJjYjFiNTE2
OGI3ZjBmYzI2Mzk0NGNkMGIzNDg5MGYuLjMzY2FiOTg0ODVmZTg2N2M2YzM5YWM1NmM3OWY5NmQx
NTM2NWY1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9FcnJvci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Vy
cm9yLmNwcApAQCAtMTAsMTIgKzEwLDE4IEBACiAjaW5jbHVkZSAibGliQU5HTEUvRXJyb3IuaCIK
IAogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL2RlYnVn
LmgiCiAKICNpbmNsdWRlIDxjc3RkYXJnPgogCiBuYW1lc3BhY2UgZ2wKIHsKIAorRXJyb3I6OkVy
cm9yKEdMZW51bSBlcnJvckNvZGUsIHN0ZDo6c3RyaW5nICYmbWVzc2FnZSkKKyAgICA6IG1Db2Rl
KGVycm9yQ29kZSksIG1JRChlcnJvckNvZGUpLCBtTWVzc2FnZShuZXcgc3RkOjpzdHJpbmcoc3Rk
Ojptb3ZlKG1lc3NhZ2UpKSkKK3sKK30KKwogRXJyb3I6OkVycm9yKEdMZW51bSBlcnJvckNvZGUs
IGNvbnN0IGNoYXIgKm1zZywgLi4uKSA6IG1Db2RlKGVycm9yQ29kZSksIG1JRChlcnJvckNvZGUp
CiB7CiAgICAgdmFfbGlzdCB2YXJhcmc7CkBAIC02NCw4ICs3MCwzMiBAQCBib29sIEVycm9yOjpv
cGVyYXRvciE9KGNvbnN0IEVycm9yICZvdGhlcikgY29uc3QKIHsKICAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7CiB9CisKK3N0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0g
Jm9zLCBjb25zdCBFcnJvciAmZXJyKQoreworICAgIHJldHVybiBnbDo6Rm10SGV4U2hvcnQob3Ms
IGVyci5nZXRDb2RlKCkpOworfQorCituYW1lc3BhY2UgcHJpdgorewordGVtcGxhdGUgPEdMZW51
bSBFbnVtVD4KK0Vycm9yU3RyZWFtPEVudW1UPjo6RXJyb3JTdHJlYW0oKQoreworfQorCit0ZW1w
bGF0ZSA8R0xlbnVtIEVudW1UPgorRXJyb3JTdHJlYW08RW51bVQ+OjpvcGVyYXRvciBnbDo6RXJy
b3IoKQoreworICAgIHJldHVybiBFcnJvcihFbnVtVCwgbUVycm9yU3RyZWFtLnN0cigpLmNfc3Ry
KCkpOwogfQogCit0ZW1wbGF0ZSBjbGFzcyBFcnJvclN0cmVhbTxHTF9PVVRfT0ZfTUVNT1JZPjsK
K3RlbXBsYXRlIGNsYXNzIEVycm9yU3RyZWFtPEdMX0lOVkFMSURfT1BFUkFUSU9OPjsKKworfSAg
Ly8gbmFtZXNwYWNlIHByaXYKKworfSAgLy8gbmFtZXNwYWNlIGdsCisKIG5hbWVzcGFjZSBlZ2wK
IHsKIApAQCAtODcsNiArMTE3LDExIEBAIEVycm9yOjpFcnJvcihFR0xpbnQgZXJyb3JDb2RlLCBF
R0xpbnQgaWQsIGNvbnN0IGNoYXIgKm1zZywgLi4uKSA6IG1Db2RlKGVycm9yQ29kCiAgICAgdmFf
ZW5kKHZhcmFyZyk7CiB9CiAKK0Vycm9yOjpFcnJvcihFR0xpbnQgZXJyb3JDb2RlLCBFR0xpbnQg
aWQsIGNvbnN0IHN0ZDo6c3RyaW5nICZtc2cpCisgICAgOiBtQ29kZShlcnJvckNvZGUpLCBtSUQo
aWQpLCBtTWVzc2FnZShuZXcgc3RkOjpzdHJpbmcobXNnKSkKK3sKK30KKwogdm9pZCBFcnJvcjo6
Y3JlYXRlTWVzc2FnZVN0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFtTWVzc2FnZSkKQEAgLTEw
MSw0ICsxMzYsOCBAQCBjb25zdCBzdGQ6OnN0cmluZyAmRXJyb3I6OmdldE1lc3NhZ2UoKSBjb25z
dAogICAgIHJldHVybiAqbU1lc3NhZ2U7CiB9CiAKK3N0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChz
dGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBFcnJvciAmZXJyKQoreworICAgIHJldHVybiBnbDo6Rm10
SGV4U2hvcnQob3MsIGVyci5nZXRDb2RlKCkpOworfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Vycm9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvRXJyb3IuaAppbmRleCBkZTNhNTBlYjAzMGI1MGUxMGVhZjUxZDFi
MDk0YzZmODllYWEyZWFlLi5iY2U0Y2QyZjY1NzVmZDFiZWRjODQ0NDE0MjUyODk5NTQzYjhhNzJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRXJyb3Iu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRXJyb3IuaApAQCAt
MTAsMTAgKzEwLDM3IEBACiAjZGVmaW5lIExJQkFOR0xFX0VSUk9SX0hfCiAKICNpbmNsdWRlICJh
bmdsZV9nbC5oIgorI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCiAjaW5jbHVkZSA8RUdM
L2VnbC5oPgogCi0jaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPG1lbW9yeT4KKyNpbmNsdWRl
IDxvc3RyZWFtPgorI2luY2x1ZGUgPHN0cmluZz4KKworbmFtZXNwYWNlIGFuZ2xlCit7Cit0ZW1w
bGF0ZSA8dHlwZW5hbWUgRXJyb3JULCB0eXBlbmFtZSBSZXN1bHRULCB0eXBlbmFtZSBFcnJvckJh
c2VULCBFcnJvckJhc2VUIE5vRXJyb3JWYWw+CitjbGFzcyBFcnJvck9yUmVzdWx0QmFzZQorewor
ICBwdWJsaWM6CisgICAgRXJyb3JPclJlc3VsdEJhc2UoY29uc3QgRXJyb3JUICZlcnJvcikgOiBt
RXJyb3IoZXJyb3IpIHt9CisgICAgRXJyb3JPclJlc3VsdEJhc2UoRXJyb3JUICYmZXJyb3IpIDog
bUVycm9yKHN0ZDo6bW92ZShlcnJvcikpIHt9CisKKyAgICBFcnJvck9yUmVzdWx0QmFzZShSZXN1
bHRUICYmcmVzdWx0KSA6IG1FcnJvcihOb0Vycm9yVmFsKSwgbVJlc3VsdChzdGQ6OmZvcndhcmQ8
UmVzdWx0VD4ocmVzdWx0KSkKKyAgICB7CisgICAgfQorCisgICAgRXJyb3JPclJlc3VsdEJhc2Uo
Y29uc3QgUmVzdWx0VCAmcmVzdWx0KSA6IG1FcnJvcihOb0Vycm9yVmFsKSwgbVJlc3VsdChyZXN1
bHQpIHt9CisKKyAgICBib29sIGlzRXJyb3IoKSBjb25zdCB7IHJldHVybiBtRXJyb3IuaXNFcnJv
cigpOyB9CisgICAgY29uc3QgRXJyb3JUICZnZXRFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1FcnJv
cjsgfQorICAgIFJlc3VsdFQgJiZnZXRSZXN1bHQoKSB7IHJldHVybiBzdGQ6Om1vdmUobVJlc3Vs
dCk7IH0KKworICBwcml2YXRlOgorICAgIEVycm9yVCBtRXJyb3I7CisgICAgUmVzdWx0VCBtUmVz
dWx0OworfTsKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQogCiBuYW1lc3BhY2UgZ2wKIHsKQEAgLTIy
LDYgKzQ5LDcgQEAgY2xhc3MgRXJyb3IgZmluYWwKIHsKICAgcHVibGljOgogICAgIGV4cGxpY2l0
IGlubGluZSBFcnJvcihHTGVudW0gZXJyb3JDb2RlKTsKKyAgICBFcnJvcihHTGVudW0gZXJyb3JD
b2RlLCBzdGQ6OnN0cmluZyAmJm1zZyk7CiAgICAgRXJyb3IoR0xlbnVtIGVycm9yQ29kZSwgY29u
c3QgY2hhciAqbXNnLCAuLi4pOwogICAgIEVycm9yKEdMZW51bSBlcnJvckNvZGUsIEdMdWludCBp
ZCwgY29uc3QgY2hhciAqbXNnLCAuLi4pOwogICAgIGlubGluZSBFcnJvcihjb25zdCBFcnJvciAm
b3RoZXIpOwpAQCAtNDMsMzcgKzcxLDczIEBAIGNsYXNzIEVycm9yIGZpbmFsCiAgIHByaXZhdGU6
CiAgICAgdm9pZCBjcmVhdGVNZXNzYWdlU3RyaW5nKCkgY29uc3Q7CiAKKyAgICBmcmllbmQgc3Rk
Ojpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IEVycm9yICZlcnIp
OworCiAgICAgR0xlbnVtIG1Db2RlOwogICAgIEdMdWludCBtSUQ7CiAgICAgbXV0YWJsZSBzdGQ6
OnVuaXF1ZV9wdHI8c3RkOjpzdHJpbmc+IG1NZXNzYWdlOwogfTsKIAotdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1jbGFzcyBFcnJvck9yUmVzdWx0Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzdWx0VD4K
K3VzaW5nIEVycm9yT3JSZXN1bHQgPSBhbmdsZTo6RXJyb3JPclJlc3VsdEJhc2U8RXJyb3IsIFJl
c3VsdFQsIEdMZW51bSwgR0xfTk9fRVJST1I+OworCituYW1lc3BhY2UgcHJpdgorewordGVtcGxh
dGUgPEdMZW51bSBFbnVtVD4KK2NsYXNzIEVycm9yU3RyZWFtIDogYW5nbGU6Ok5vbkNvcHlhYmxl
CiB7CiAgIHB1YmxpYzoKLSAgICBFcnJvck9yUmVzdWx0KGNvbnN0IGdsOjpFcnJvciAmZXJyb3Ip
IDogbUVycm9yKGVycm9yKSB7fQotICAgIEVycm9yT3JSZXN1bHQoZ2w6OkVycm9yICYmZXJyb3Ip
IDogbUVycm9yKHN0ZDo6bW92ZShlcnJvcikpIHt9CisgICAgRXJyb3JTdHJlYW0oKTsKIAotICAg
IEVycm9yT3JSZXN1bHQoVCAmJnJlc3VsdCkKLSAgICAgICAgOiBtRXJyb3IoR0xfTk9fRVJST1Ip
LCBtUmVzdWx0KHN0ZDo6Zm9yd2FyZDxUPihyZXN1bHQpKQotICAgIHsKLSAgICB9CisgICAgdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgRXJyb3JTdHJlYW0gJm9wZXJhdG9yPDwoVCB2YWx1ZSk7
CiAKLSAgICBFcnJvck9yUmVzdWx0KGNvbnN0IFQgJnJlc3VsdCkKLSAgICAgICAgOiBtRXJyb3Io
R0xfTk9fRVJST1IpLCBtUmVzdWx0KHJlc3VsdCkKKyAgICBvcGVyYXRvciBFcnJvcigpOworCisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgb3BlcmF0b3IgRXJyb3JPclJlc3VsdDxUPigp
CiAgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXJyb3I+KCp0aGlzKTsKICAgICB9
CiAKLSAgICBib29sIGlzRXJyb3IoKSBjb25zdCB7IHJldHVybiBtRXJyb3IuaXNFcnJvcigpOyB9
Ci0gICAgY29uc3QgZ2w6OkVycm9yICZnZXRFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1FcnJvcjsg
fQotICAgIFQgJiZnZXRSZXN1bHQoKSB7IHJldHVybiBzdGQ6Om1vdmUobVJlc3VsdCk7IH0KLQog
ICBwcml2YXRlOgotICAgIEVycm9yIG1FcnJvcjsKLSAgICBUIG1SZXN1bHQ7CisgICAgc3RkOjpv
c3RyaW5nc3RyZWFtIG1FcnJvclN0cmVhbTsKIH07CiAKKy8vIFRoZXNlIGNvbnZpZW5jZSBtZXRo
b2RzIGZvciBIUkVTVUxUUyAocmVhbGx5IGxvbmcpIGFyZSB1c2VkIGFsbCBvdmVyIHRoZSBwbGFj
ZSBpbiB0aGUgRDNECisvLyBiYWNrLWVuZHMuCisjaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9X
SU5ET1dTKQordGVtcGxhdGUgPD4KK3RlbXBsYXRlIDw+CitpbmxpbmUgRXJyb3JTdHJlYW08R0xf
T1VUX09GX01FTU9SWT4gJkVycm9yU3RyZWFtPEdMX09VVF9PRl9NRU1PUlk+OjpvcGVyYXRvcjw8
KEhSRVNVTFQgaHJlc3VsdCkKK3sKKyAgICBtRXJyb3JTdHJlYW0gPDwgIkhSRVNVTFQ6IDB4IiA8
PCBzdGQ6Omlvczo6aGV4IDw8IGhyZXN1bHQ7CisgICAgcmV0dXJuICp0aGlzOworfQorCit0ZW1w
bGF0ZSA8PgordGVtcGxhdGUgPD4KK2lubGluZSBFcnJvclN0cmVhbTxHTF9JTlZBTElEX09QRVJB
VElPTj4gJkVycm9yU3RyZWFtPEdMX0lOVkFMSURfT1BFUkFUSU9OPjo6b3BlcmF0b3I8PCgKKyAg
ICBIUkVTVUxUIGhyZXN1bHQpCit7CisgICAgbUVycm9yU3RyZWFtIDw8ICJIUkVTVUxUOiAweCIg
PDwgc3RkOjppb3M6OmhleCA8PCBocmVzdWx0OworICAgIHJldHVybiAqdGhpczsKK30KKyNlbmRp
ZiAgLy8gZGVmaW5lZChBTkdMRV9QTEFURk9STV9XSU5ET1dTKQorCit0ZW1wbGF0ZSA8R0xlbnVt
IEVudW1UPgordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitFcnJvclN0cmVhbTxFbnVtVD4gJkVycm9y
U3RyZWFtPEVudW1UPjo6b3BlcmF0b3I8PChUIHZhbHVlKQoreworICAgIG1FcnJvclN0cmVhbSA8
PCB2YWx1ZTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBwcml2CisK
K3VzaW5nIE91dE9mTWVtb3J5ICAgPSBwcml2OjpFcnJvclN0cmVhbTxHTF9PVVRfT0ZfTUVNT1JZ
PjsKK3VzaW5nIEludGVybmFsRXJyb3IgPSBwcml2OjpFcnJvclN0cmVhbTxHTF9JTlZBTElEX09Q
RVJBVElPTj47CisKIGlubGluZSBFcnJvciBOb0Vycm9yKCkKIHsKICAgICByZXR1cm4gRXJyb3Io
R0xfTk9fRVJST1IpOwpAQCAtOTAsNiArMTU0LDcgQEAgY2xhc3MgRXJyb3IgZmluYWwKICAgICBl
eHBsaWNpdCBpbmxpbmUgRXJyb3IoRUdMaW50IGVycm9yQ29kZSk7CiAgICAgRXJyb3IoRUdMaW50
IGVycm9yQ29kZSwgY29uc3QgY2hhciAqbXNnLCAuLi4pOwogICAgIEVycm9yKEVHTGludCBlcnJv
ckNvZGUsIEVHTGludCBpZCwgY29uc3QgY2hhciAqbXNnLCAuLi4pOworICAgIEVycm9yKEVHTGlu
dCBlcnJvckNvZGUsIEVHTGludCBpZCwgY29uc3Qgc3RkOjpzdHJpbmcgJm1zZyk7CiAgICAgaW5s
aW5lIEVycm9yKGNvbnN0IEVycm9yICZvdGhlcik7CiAgICAgaW5saW5lIEVycm9yKEVycm9yICYm
b3RoZXIpOwogCkBAIC0xMDUsMTEgKzE3MCwyMSBAQCBjbGFzcyBFcnJvciBmaW5hbAogICBwcml2
YXRlOgogICAgIHZvaWQgY3JlYXRlTWVzc2FnZVN0cmluZygpIGNvbnN0OwogCisgICAgZnJpZW5k
IHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBFcnJvciAm
ZXJyKTsKKwogICAgIEVHTGludCBtQ29kZTsKICAgICBFR0xpbnQgbUlEOwogICAgIG11dGFibGUg
c3RkOjp1bmlxdWVfcHRyPHN0ZDo6c3RyaW5nPiBtTWVzc2FnZTsKIH07CiAKK2lubGluZSBFcnJv
ciBOb0Vycm9yKCkKK3sKKyAgICByZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgUmVzdWx0VD4KK3VzaW5nIEVycm9yT3JSZXN1bHQgPSBhbmdsZTo6RXJy
b3JPclJlc3VsdEJhc2U8RXJyb3IsIFJlc3VsdFQsIEVHTGludCwgRUdMX1NVQ0NFU1M+OworCiB9
ICAvLyBuYW1lc3BhY2UgZWdsCiAKICNkZWZpbmUgQU5HTEVfQ09OQ0FUMSh4LCB5KSB4IyN5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRmVuY2UuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZlbmNlLmNwcAppbmRleCBl
NWYzYmE2OWEyZmJkMzk0NTllNDA1ZmRiMjNjZWU3ZWY2MDQ2OTVmLi4yZTFjNTkwM2RjNmE5ZWY2
MWQ2OTMwMGQ3ZDIwYjRlYzY3NTQzZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvRmVuY2UuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9GZW5jZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgRXJyb3IgRmVuY2VOVjo6
c2V0KEdMZW51bSBjb25kaXRpb24pCiAgICAgbVN0YXR1cyA9IEdMX0ZBTFNFOwogICAgIG1Jc1Nl
dCA9IHRydWU7CiAKLSAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBO
b0Vycm9yKCk7CiB9CiAKIEVycm9yIEZlbmNlTlY6OnRlc3QoR0xib29sZWFuICpvdXRSZXN1bHQp
CkBAIC01Niw3ICs1Niw3IEBAIEVycm9yIEZlbmNlTlY6OnRlc3QoR0xib29sZWFuICpvdXRSZXN1
bHQpCiAgICAgfQogCiAgICAgKm91dFJlc3VsdCA9IG1TdGF0dXM7Ci0gICAgcmV0dXJuIEVycm9y
KEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCiBFcnJvciBGZW5jZU5W
OjpmaW5pc2goKQpAQCAtNzEsMTEgKzcxLDExIEBAIEVycm9yIEZlbmNlTlY6OmZpbmlzaCgpCiAK
ICAgICBtU3RhdHVzID0gR0xfVFJVRTsKIAotICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7
CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0KIAogRmVuY2VTeW5jOjpGZW5jZVN5bmMocng6OkZl
bmNlU3luY0ltcGwgKmltcGwsIEdMdWludCBpZCkKLSAgICA6IFJlZkNvdW50T2JqZWN0KGlkKSwg
bUZlbmNlKGltcGwpLCBtTGFiZWwoKSwgbUNvbmRpdGlvbihHTF9OT05FKSwgbUZsYWdzKDApCisg
ICAgOiBSZWZDb3VudE9iamVjdChpZCksIG1GZW5jZShpbXBsKSwgbUxhYmVsKCksIG1Db25kaXRp
b24oR0xfU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUpLCBtRmxhZ3MoMCkKIHsKIH0KIApAQCAt
MTA0LDcgKzEwNCw3IEBAIEVycm9yIEZlbmNlU3luYzo6c2V0KEdMZW51bSBjb25kaXRpb24sIEdM
Yml0ZmllbGQgZmxhZ3MpCiAKICAgICBtQ29uZGl0aW9uID0gY29uZGl0aW9uOwogICAgIG1GbGFn
cyA9IGZsYWdzOwotICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIE5v
RXJyb3IoKTsKIH0KIAogRXJyb3IgRmVuY2VTeW5jOjpjbGllbnRXYWl0KEdMYml0ZmllbGQgZmxh
Z3MsIEdMdWludDY0IHRpbWVvdXQsIEdMZW51bSAqb3V0UmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZlbmNlLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRmVuY2UuaAppbmRleCBiMmRhZWQ2ZjBlOTk1OTg3ZDQ3
YzI0MDg3OWY3MWY5ZDdhOWRmNThlLi4zYjI1MGEyNWEyYTQ4YzU5ZDlkYjhjMTE4MjgxMmVhNDgw
OTg2NzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
RmVuY2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRmVuY2Uu
aApAQCAtNTQsNiArNTQsOCBAQCBjbGFzcyBGZW5jZVN5bmMgZmluYWwgOiBwdWJsaWMgUmVmQ291
bnRPYmplY3QsIHB1YmxpYyBMYWJlbGVkT2JqZWN0CiAgICAgRmVuY2VTeW5jKHJ4OjpGZW5jZVN5
bmNJbXBsICppbXBsLCBHTHVpbnQgaWQpOwogICAgIHZpcnR1YWwgfkZlbmNlU3luYygpOwogCisg
ICAgdm9pZCBkZXN0cm95KGNvbnN0IENvbnRleHQgKmNvbnRleHQpIG92ZXJyaWRlIHt9CisKICAg
ICB2b2lkIHNldExhYmVsKGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJlbCkgb3ZlcnJpZGU7CiAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJmdldExhYmVsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GZW5jZV91bml0dGVzdC5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRmVuY2VfdW5pdHRlc3Qu
Y3BwCmluZGV4IDM3YjNlNmY1NjNiZGViZmE1MGUzYTZmMTAyY2ViMDMyODg5OTFmYTMuLmY3ZmQy
MTVlNTRhNDAyZDBlMmY3Njc1YjFlMGQ4OGY1NDljNDIwZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GZW5jZV91bml0dGVzdC5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZlbmNlX3VuaXR0ZXN0LmNwcApAQCAt
NjcsMTggKzY3LDE0IEBAIFRFU1RfRihGZW5jZU5WVGVzdCwgRGVzdHJ1Y3Rpb25EZWxldGVzSW1w
bCkKIAogVEVTVF9GKEZlbmNlTlZUZXN0LCBTZXRBbmRUZXN0QmVoYXZpb3IpCiB7Ci0gICAgRVhQ
RUNUX0NBTEwoKm1JbXBsLCBzZXQoXykpCi0gICAgICAgIC5XaWxsT25jZShSZXR1cm4oZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKSkpCi0gICAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CisgICAg
RVhQRUNUX0NBTEwoKm1JbXBsLCBzZXQoXykpLldpbGxPbmNlKFJldHVybihnbDo6Tm9FcnJvcigp
KSkuUmV0aXJlc09uU2F0dXJhdGlvbigpOwogICAgIEVYUEVDVF9GQUxTRShtRmVuY2UtPmlzU2V0
KCkpOwogICAgIG1GZW5jZS0+c2V0KEdMX0FMTF9DT01QTEVURURfTlYpOwogICAgIEVYUEVDVF9U
UlVFKG1GZW5jZS0+aXNTZXQoKSk7CiAgICAgLy8gRmFrZSB0aGUgYmVoYXZpb3Igb2YgdGVzdGlu
ZyB0aGUgZmVuY2UgYmVmb3JlIGFuZCBhZnRlciBpdCdzIHBhc3NlZC4KICAgICBFWFBFQ1RfQ0FM
TCgqbUltcGwsIHRlc3QoXykpCi0gICAgICAgIC5XaWxsT25jZShEb0FsbChTZXRBcmd1bWVudFBv
aW50ZWU8MD4oR0xfRkFMU0UpLAotICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuKGdsOjpF
cnJvcihHTF9OT19FUlJPUikpKSkKLSAgICAgICAgLldpbGxPbmNlKERvQWxsKFNldEFyZ3VtZW50
UG9pbnRlZTwwPihHTF9UUlVFKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybihnbDo6
RXJyb3IoR0xfTk9fRVJST1IpKSkpCisgICAgICAgIC5XaWxsT25jZShEb0FsbChTZXRBcmd1bWVu
dFBvaW50ZWU8MD4oR0xfRkFMU0UpLCBSZXR1cm4oZ2w6Ok5vRXJyb3IoKSkpKQorICAgICAgICAu
V2lsbE9uY2UoRG9BbGwoU2V0QXJndW1lbnRQb2ludGVlPDA+KEdMX1RSVUUpLCBSZXR1cm4oZ2w6
Ok5vRXJyb3IoKSkpKQogICAgICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOwogICAgIEdMYm9v
bGVhbiBvdXQ7CiAgICAgbUZlbmNlLT50ZXN0KCZvdXQpOwpAQCAtMTQxLDE3ICsxMzcsMTMgQEAg
VEVTVF9GKEZlbmNlU3luY1Rlc3QsIERlc3RydWN0aW9uRGVsZXRlc0ltcGwpCiAKIFRFU1RfRihG
ZW5jZVN5bmNUZXN0LCBTZXRBbmRHZXRTdGF0dXNCZWhhdmlvcikKIHsKLSAgICBFWFBFQ1RfQ0FM
TCgqbUltcGwsIHNldChfLCBfKSkKLSAgICAgICAgLldpbGxPbmNlKFJldHVybihnbDo6RXJyb3Io
R0xfTk9fRVJST1IpKSkKLSAgICAgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKKyAgICBFWFBF
Q1RfQ0FMTCgqbUltcGwsIHNldChfLCBfKSkuV2lsbE9uY2UoUmV0dXJuKGdsOjpOb0Vycm9yKCkp
KS5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CiAgICAgbUZlbmNlLT5zZXQoR0xfU1lOQ19HUFVfQ09N
TUFORFNfQ09NUExFVEUsIDApOwogICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTGVudW0+KEdM
X1NZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFKSwgbUZlbmNlLT5nZXRDb25kaXRpb24oKSk7CiAg
ICAgLy8gRmFrZSB0aGUgYmVoYXZpb3Igb2YgdGVzdGluZyB0aGUgZmVuY2UgYmVmb3JlIGFuZCBh
ZnRlciBpdCdzIHBhc3NlZC4KICAgICBFWFBFQ1RfQ0FMTCgqbUltcGwsIGdldFN0YXR1cyhfKSkK
LSAgICAgICAgLldpbGxPbmNlKERvQWxsKFNldEFyZ3VtZW50UG9pbnRlZTwwPihHTF9VTlNJR05B
TEVEKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybihnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpKSkpCi0gICAgICAgIC5XaWxsT25jZShEb0FsbChTZXRBcmd1bWVudFBvaW50ZWU8MD4oR0xf
U0lHTkFMRUQpLAotICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuKGdsOjpFcnJvcihHTF9O
T19FUlJPUikpKSkKKyAgICAgICAgLldpbGxPbmNlKERvQWxsKFNldEFyZ3VtZW50UG9pbnRlZTww
PihHTF9VTlNJR05BTEVEKSwgUmV0dXJuKGdsOjpOb0Vycm9yKCkpKSkKKyAgICAgICAgLldpbGxP
bmNlKERvQWxsKFNldEFyZ3VtZW50UG9pbnRlZTwwPihHTF9TSUdOQUxFRCksIFJldHVybihnbDo6
Tm9FcnJvcigpKSkpCiAgICAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CiAgICAgR0xpbnQg
b3V0OwogICAgIG1GZW5jZS0+Z2V0U3RhdHVzKCZvdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlci5jcHAKaW5kZXggNGJiMjEzODU0
OTEzODA2MTEzMzJkZGRiODdlNjNiNzMxZDcxNzRlOC4uYjdkNWZjNTFlYzkwNDVlNDljZDY1OTM1
MjY0NjBiODYzMmQ1MmYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL0ZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvRnJhbWVidWZmZXIuY3BwCkBAIC05LDEwICs5LDEyIEBACiAKICNpbmNsdWRl
ICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgogCisjaW5jbHVkZSAiY29tbW9uL2JpdHNldF91dGls
cy5oIgogI2luY2x1ZGUgImNvbW1vbi9PcHRpb25hbC5oIgogI2luY2x1ZGUgImNvbW1vbi91dGls
aXRpZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Db25maWcuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9Db250ZXh0LmgiCisjaW5jbHVkZSAibGliQU5HTEUvRGlzcGxheS5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1JlbmRl
cmJ1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKQEAgLTMyLDI3ICszNCw0
MCBAQCBuYW1lc3BhY2UgZ2wKIG5hbWVzcGFjZQogewogCi12b2lkIEJpbmRSZXNvdXJjZUNoYW5u
ZWwoQ2hhbm5lbEJpbmRpbmcgKmJpbmRpbmcsIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdCAq
cmVzb3VyY2UpCit2b2lkIEJpbmRSZXNvdXJjZUNoYW5uZWwoT25BdHRhY2htZW50RGlydHlCaW5k
aW5nICpiaW5kaW5nLCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3QgKnJlc291cmNlKQogewog
ICAgIGJpbmRpbmctPmJpbmQocmVzb3VyY2UgPyByZXNvdXJjZS0+Z2V0RGlydHlDaGFubmVsKCkg
OiBudWxscHRyKTsKIH0KIAogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCisvLyBUaGlzIGNv
bnN0cnVjdG9yIGlzIG9ubHkgdXNlZCBmb3IgZGVmYXVsdCBmcmFtZWJ1ZmZlcnMuCiBGcmFtZWJ1
ZmZlclN0YXRlOjpGcmFtZWJ1ZmZlclN0YXRlKCkKICAgICA6IG1MYWJlbCgpLAogICAgICAgbUNv
bG9yQXR0YWNobWVudHMoMSksCi0gICAgICBtRHJhd0J1ZmZlclN0YXRlcygxLCBHTF9OT05FKSwK
LSAgICAgIG1SZWFkQnVmZmVyU3RhdGUoR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUKQorICAgICAg
bURyYXdCdWZmZXJTdGF0ZXMoSU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUywgR0xfTk9O
RSksCisgICAgICBtUmVhZEJ1ZmZlclN0YXRlKEdMX0JBQ0spLAorICAgICAgbURlZmF1bHRXaWR0
aCgwKSwKKyAgICAgIG1EZWZhdWx0SGVpZ2h0KDApLAorICAgICAgbURlZmF1bHRTYW1wbGVzKDAp
LAorICAgICAgbURlZmF1bHRGaXhlZFNhbXBsZUxvY2F0aW9ucyhHTF9GQUxTRSksCisgICAgICBt
V2ViR0xEZXB0aFN0ZW5jaWxDb25zaXN0ZW50KHRydWUpCiB7Ci0gICAgbURyYXdCdWZmZXJTdGF0
ZXNbMF0gPSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQ7CisgICAgQVNTRVJUKG1EcmF3QnVmZmVy
U3RhdGVzLnNpemUoKSA+IDApOworICAgIG1EcmF3QnVmZmVyU3RhdGVzWzBdID0gR0xfQkFDSzsK
KyAgICBtRW5hYmxlZERyYXdCdWZmZXJzLnNldCgwKTsKIH0KIAogRnJhbWVidWZmZXJTdGF0ZTo6
RnJhbWVidWZmZXJTdGF0ZShjb25zdCBDYXBzICZjYXBzKQogICAgIDogbUxhYmVsKCksCiAgICAg
ICBtQ29sb3JBdHRhY2htZW50cyhjYXBzLm1heENvbG9yQXR0YWNobWVudHMpLAogICAgICAgbURy
YXdCdWZmZXJTdGF0ZXMoY2Fwcy5tYXhEcmF3QnVmZmVycywgR0xfTk9ORSksCi0gICAgICBtUmVh
ZEJ1ZmZlclN0YXRlKEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVCkKKyAgICAgIG1SZWFkQnVmZmVy
U3RhdGUoR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUKSwKKyAgICAgIG1EZWZhdWx0V2lkdGgoMCks
CisgICAgICBtRGVmYXVsdEhlaWdodCgwKSwKKyAgICAgIG1EZWZhdWx0U2FtcGxlcygwKSwKKyAg
ICAgIG1EZWZhdWx0Rml4ZWRTYW1wbGVMb2NhdGlvbnMoR0xfRkFMU0UpLAorICAgICAgbVdlYkdM
RGVwdGhTdGVuY2lsQ29uc2lzdGVudCh0cnVlKQogewogICAgIEFTU0VSVChtRHJhd0J1ZmZlclN0
YXRlcy5zaXplKCkgPiAwKTsKICAgICBtRHJhd0J1ZmZlclN0YXRlc1swXSA9IEdMX0NPTE9SX0FU
VEFDSE1FTlQwX0VYVDsKQEAgLTk2LDEyICsxMTEsMjYgQEAgY29uc3QgRnJhbWVidWZmZXJBdHRh
Y2htZW50ICpGcmFtZWJ1ZmZlclN0YXRlOjpnZXRBdHRhY2htZW50KEdMZW51bSBhdHRhY2htZW50
KQogCiBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVmZmVyU3RhdGU6OmdldFJl
YWRBdHRhY2htZW50KCkgY29uc3QKIHsKKyAgICBpZiAobVJlYWRCdWZmZXJTdGF0ZSA9PSBHTF9O
T05FKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAgIEFTU0VSVCht
UmVhZEJ1ZmZlclN0YXRlID09IEdMX0JBQ0sgfHwgKG1SZWFkQnVmZmVyU3RhdGUgPj0gR0xfQ09M
T1JfQVRUQUNITUVOVDAgJiYgbVJlYWRCdWZmZXJTdGF0ZSA8PSBHTF9DT0xPUl9BVFRBQ0hNRU5U
MTUpKTsKICAgICBzaXplX3QgcmVhZEluZGV4ID0gKG1SZWFkQnVmZmVyU3RhdGUgPT0gR0xfQkFD
SyA/IDAgOiBzdGF0aWNfY2FzdDxzaXplX3Q+KG1SZWFkQnVmZmVyU3RhdGUgLSBHTF9DT0xPUl9B
VFRBQ0hNRU5UMCkpOwogICAgIEFTU0VSVChyZWFkSW5kZXggPCBtQ29sb3JBdHRhY2htZW50cy5z
aXplKCkpOwogICAgIHJldHVybiBtQ29sb3JBdHRhY2htZW50c1tyZWFkSW5kZXhdLmlzQXR0YWNo
ZWQoKSA/ICZtQ29sb3JBdHRhY2htZW50c1tyZWFkSW5kZXhdIDogbnVsbHB0cjsKIH0KIAorY29u
c3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpGcmFtZWJ1ZmZlclN0YXRlOjpnZXRGaXJzdE5vbk51
bGxBdHRhY2htZW50KCkgY29uc3QKK3sKKyAgICBhdXRvICpjb2xvckF0dGFjaG1lbnQgPSBnZXRG
aXJzdENvbG9yQXR0YWNobWVudCgpOworICAgIGlmIChjb2xvckF0dGFjaG1lbnQpCisgICAgewor
ICAgICAgICByZXR1cm4gY29sb3JBdHRhY2htZW50OworICAgIH0KKyAgICByZXR1cm4gZ2V0RGVw
dGhPclN0ZW5jaWxBdHRhY2htZW50KCk7Cit9CisKIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVu
dCAqRnJhbWVidWZmZXJTdGF0ZTo6Z2V0Rmlyc3RDb2xvckF0dGFjaG1lbnQoKSBjb25zdAogewog
ICAgIGZvciAoY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICZjb2xvckF0dGFjaG1lbnQgOiBt
Q29sb3JBdHRhY2htZW50cykKQEAgLTEyOCw2ICsxNTcsMTUgQEAgY29uc3QgRnJhbWVidWZmZXJB
dHRhY2htZW50ICpGcmFtZWJ1ZmZlclN0YXRlOjpnZXREZXB0aE9yU3RlbmNpbEF0dGFjaG1lbnQo
KSBjb24KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorY29uc3QgRnJhbWVidWZmZXJBdHRhY2ht
ZW50ICpGcmFtZWJ1ZmZlclN0YXRlOjpnZXRTdGVuY2lsT3JEZXB0aFN0ZW5jaWxBdHRhY2htZW50
KCkgY29uc3QKK3sKKyAgICBpZiAobVN0ZW5jaWxBdHRhY2htZW50LmlzQXR0YWNoZWQoKSkKKyAg
ICB7CisgICAgICAgIHJldHVybiAmbVN0ZW5jaWxBdHRhY2htZW50OworICAgIH0KKyAgICByZXR1
cm4gZ2V0RGVwdGhTdGVuY2lsQXR0YWNobWVudCgpOworfQorCiBjb25zdCBGcmFtZWJ1ZmZlckF0
dGFjaG1lbnQgKkZyYW1lYnVmZmVyU3RhdGU6OmdldENvbG9yQXR0YWNobWVudChzaXplX3QgY29s
b3JBdHRhY2htZW50KSBjb25zdAogewogICAgIEFTU0VSVChjb2xvckF0dGFjaG1lbnQgPCBtQ29s
b3JBdHRhY2htZW50cy5zaXplKCkpOwpAQCAtMTUxLDggKzE4OSw3IEBAIGNvbnN0IEZyYW1lYnVm
ZmVyQXR0YWNobWVudCAqRnJhbWVidWZmZXJTdGF0ZTo6Z2V0RGVwdGhTdGVuY2lsQXR0YWNobWVu
dCgpIGNvbnN0CiAgICAgLy8gQSB2YWxpZCBkZXB0aC1zdGVuY2lsIGF0dGFjaG1lbnQgaGFzIHRo
ZSBzYW1lIHJlc291cmNlIGJvdW5kIHRvIGJvdGggdGhlCiAgICAgLy8gZGVwdGggYW5kIHN0ZW5j
aWwgYXR0YWNobWVudCBwb2ludHMuCiAgICAgaWYgKG1EZXB0aEF0dGFjaG1lbnQuaXNBdHRhY2hl
ZCgpICYmIG1TdGVuY2lsQXR0YWNobWVudC5pc0F0dGFjaGVkKCkgJiYKLSAgICAgICAgbURlcHRo
QXR0YWNobWVudC50eXBlKCkgPT0gbVN0ZW5jaWxBdHRhY2htZW50LnR5cGUoKSAmJgotICAgICAg
ICBtRGVwdGhBdHRhY2htZW50LmlkKCkgPT0gbVN0ZW5jaWxBdHRhY2htZW50LmlkKCkpCisgICAg
ICAgIG1EZXB0aEF0dGFjaG1lbnQgPT0gbVN0ZW5jaWxBdHRhY2htZW50KQogICAgIHsKICAgICAg
ICAgcmV0dXJuICZtRGVwdGhBdHRhY2htZW50OwogICAgIH0KQEAgLTI2MSwyNCArMjk4LDQ3IEBA
IEZyYW1lYnVmZmVyOjpGcmFtZWJ1ZmZlcihjb25zdCBDYXBzICZjYXBzLCByeDo6R0xJbXBsRmFj
dG9yeSAqZmFjdG9yeSwgR0x1aW50IGlkCiAgICAgQVNTRVJUKG1JbXBsICE9IG51bGxwdHIpOwog
ICAgIEFTU0VSVChtU3RhdGUubUNvbG9yQXR0YWNobWVudHMuc2l6ZSgpID09IHN0YXRpY19jYXN0
PHNpemVfdD4oY2Fwcy5tYXhDb2xvckF0dGFjaG1lbnRzKSk7CiAKLSAgICBmb3IgKHNpemVfdCBj
b2xvckluZGV4ID0gMDsgY29sb3JJbmRleCA8IG1TdGF0ZS5tQ29sb3JBdHRhY2htZW50cy5zaXpl
KCk7ICsrY29sb3JJbmRleCkKKyAgICBmb3IgKHVpbnQzMl90IGNvbG9ySW5kZXggPSAwOworICAg
ICAgICAgY29sb3JJbmRleCA8IHN0YXRpY19jYXN0PHVpbnQzMl90PihtU3RhdGUubUNvbG9yQXR0
YWNobWVudHMuc2l6ZSgpKTsgKytjb2xvckluZGV4KQogICAgIHsKLSAgICAgICAgbURpcnR5Q29s
b3JBdHRhY2htZW50QmluZGluZ3MucHVzaF9iYWNrKENoYW5uZWxCaW5kaW5nKAotICAgICAgICAg
ICAgdGhpcywgc3RhdGljX2Nhc3Q8U2lnbmFsVG9rZW4+KERJUlRZX0JJVF9DT0xPUl9BVFRBQ0hN
RU5UXzAgKyBjb2xvckluZGV4KSkpOworICAgICAgICBtRGlydHlDb2xvckF0dGFjaG1lbnRCaW5k
aW5ncy5lbXBsYWNlX2JhY2sodGhpcywgRElSVFlfQklUX0NPTE9SX0FUVEFDSE1FTlRfMCArIGNv
bG9ySW5kZXgpOwogICAgIH0KIH0KIAotRnJhbWVidWZmZXI6OkZyYW1lYnVmZmVyKHJ4OjpTdXJm
YWNlSW1wbCAqc3VyZmFjZSkKK0ZyYW1lYnVmZmVyOjpGcmFtZWJ1ZmZlcihlZ2w6OlN1cmZhY2Ug
KnN1cmZhY2UpCiAgICAgOiBtU3RhdGUoKSwKLSAgICAgIG1JbXBsKHN1cmZhY2UtPmNyZWF0ZURl
ZmF1bHRGcmFtZWJ1ZmZlcihtU3RhdGUpKSwKKyAgICAgIG1JbXBsKHN1cmZhY2UtPmdldEltcGxl
bWVudGF0aW9uKCktPmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihtU3RhdGUpKSwKICAgICAgIG1J
ZCgwKSwKICAgICAgIG1DYWNoZWRTdGF0dXMoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpLAogICAg
ICAgbURpcnR5RGVwdGhBdHRhY2htZW50QmluZGluZyh0aGlzLCBESVJUWV9CSVRfREVQVEhfQVRU
QUNITUVOVCksCiAgICAgICBtRGlydHlTdGVuY2lsQXR0YWNobWVudEJpbmRpbmcodGhpcywgRElS
VFlfQklUX1NURU5DSUxfQVRUQUNITUVOVCkKIHsKICAgICBBU1NFUlQobUltcGwgIT0gbnVsbHB0
cik7Ci0gICAgbURpcnR5Q29sb3JBdHRhY2htZW50QmluZGluZ3MucHVzaF9iYWNrKAotICAgICAg
ICBDaGFubmVsQmluZGluZyh0aGlzLCBzdGF0aWNfY2FzdDxTaWduYWxUb2tlbj4oRElSVFlfQklU
X0NPTE9SX0FUVEFDSE1FTlRfMCkpKTsKKyAgICBtRGlydHlDb2xvckF0dGFjaG1lbnRCaW5kaW5n
cy5lbXBsYWNlX2JhY2sodGhpcywgRElSVFlfQklUX0NPTE9SX0FUVEFDSE1FTlRfMCk7CisKKyAg
ICBzZXRBdHRhY2htZW50SW1wbChHTF9GUkFNRUJVRkZFUl9ERUZBVUxULCBHTF9CQUNLLCBnbDo6
SW1hZ2VJbmRleDo6TWFrZUludmFsaWQoKSwgc3VyZmFjZSk7CisKKyAgICBpZiAoc3VyZmFjZS0+
Z2V0Q29uZmlnKCktPmRlcHRoU2l6ZSA+IDApCisgICAgeworICAgICAgICBzZXRBdHRhY2htZW50
SW1wbChHTF9GUkFNRUJVRkZFUl9ERUZBVUxULCBHTF9ERVBUSCwgZ2w6OkltYWdlSW5kZXg6Ok1h
a2VJbnZhbGlkKCksIHN1cmZhY2UpOworICAgIH0KKworICAgIGlmIChzdXJmYWNlLT5nZXRDb25m
aWcoKS0+c3RlbmNpbFNpemUgPiAwKQorICAgIHsKKyAgICAgICAgc2V0QXR0YWNobWVudEltcGwo
R0xfRlJBTUVCVUZGRVJfREVGQVVMVCwgR0xfU1RFTkNJTCwgZ2w6OkltYWdlSW5kZXg6Ok1ha2VJ
bnZhbGlkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cmZhY2UpOworICAgIH0KK30K
KworRnJhbWVidWZmZXI6OkZyYW1lYnVmZmVyKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5KQor
ICAgIDogbVN0YXRlKCksCisgICAgICBtSW1wbChmYWN0b3J5LT5jcmVhdGVGcmFtZWJ1ZmZlciht
U3RhdGUpKSwKKyAgICAgIG1JZCgwKSwKKyAgICAgIG1DYWNoZWRTdGF0dXMoR0xfRlJBTUVCVUZG
RVJfVU5ERUZJTkVEX09FUyksCisgICAgICBtRGlydHlEZXB0aEF0dGFjaG1lbnRCaW5kaW5nKHRo
aXMsIERJUlRZX0JJVF9ERVBUSF9BVFRBQ0hNRU5UKSwKKyAgICAgIG1EaXJ0eVN0ZW5jaWxBdHRh
Y2htZW50QmluZGluZyh0aGlzLCBESVJUWV9CSVRfU1RFTkNJTF9BVFRBQ0hNRU5UKQoreworICAg
IG1EaXJ0eUNvbG9yQXR0YWNobWVudEJpbmRpbmdzLmVtcGxhY2VfYmFjayh0aGlzLCBESVJUWV9C
SVRfQ09MT1JfQVRUQUNITUVOVF8wKTsKIH0KIAogRnJhbWVidWZmZXI6On5GcmFtZWJ1ZmZlcigp
CkBAIC0yODYsNiArMzQ2LDE2IEBAIEZyYW1lYnVmZmVyOjp+RnJhbWVidWZmZXIoKQogICAgIFNh
ZmVEZWxldGUobUltcGwpOwogfQogCit2b2lkIEZyYW1lYnVmZmVyOjpkZXN0cm95KGNvbnN0IENv
bnRleHQgKmNvbnRleHQpCit7CisgICAgbUltcGwtPmRlc3Ryb3kocng6OlNhZmVHZXRJbXBsKGNv
bnRleHQpKTsKK30KKwordm9pZCBGcmFtZWJ1ZmZlcjo6ZGVzdHJveURlZmF1bHQoY29uc3QgZWds
OjpEaXNwbGF5ICpkaXNwbGF5KQoreworICAgIG1JbXBsLT5kZXN0cm95RGVmYXVsdChyeDo6U2Fm
ZUdldEltcGwoZGlzcGxheSkpOworfQorCiB2b2lkIEZyYW1lYnVmZmVyOjpzZXRMYWJlbChjb25z
dCBzdGQ6OnN0cmluZyAmbGFiZWwpCiB7CiAgICAgbVN0YXRlLm1MYWJlbCA9IGxhYmVsOwpAQCAt
Mjk2LDE3ICszNjYsMTcgQEAgY29uc3Qgc3RkOjpzdHJpbmcgJkZyYW1lYnVmZmVyOjpnZXRMYWJl
bCgpIGNvbnN0CiAgICAgcmV0dXJuIG1TdGF0ZS5tTGFiZWw7CiB9CiAKLXZvaWQgRnJhbWVidWZm
ZXI6OmRldGFjaFRleHR1cmUoR0x1aW50IHRleHR1cmVJZCkKK3ZvaWQgRnJhbWVidWZmZXI6OmRl
dGFjaFRleHR1cmUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHRleHR1cmVJZCkKIHsK
LSAgICBkZXRhY2hSZXNvdXJjZUJ5SWQoR0xfVEVYVFVSRSwgdGV4dHVyZUlkKTsKKyAgICBkZXRh
Y2hSZXNvdXJjZUJ5SWQoY29udGV4dCwgR0xfVEVYVFVSRSwgdGV4dHVyZUlkKTsKIH0KIAotdm9p
ZCBGcmFtZWJ1ZmZlcjo6ZGV0YWNoUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXJJZCkK
K3ZvaWQgRnJhbWVidWZmZXI6OmRldGFjaFJlbmRlcmJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgcmVuZGVyYnVmZmVySWQpCiB7Ci0gICAgZGV0YWNoUmVzb3VyY2VCeUlkKEdM
X1JFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVySWQpOworICAgIGRldGFjaFJlc291cmNlQnlJZChj
b250ZXh0LCBHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcklkKTsKIH0KIAotdm9pZCBGcmFt
ZWJ1ZmZlcjo6ZGV0YWNoUmVzb3VyY2VCeUlkKEdMZW51bSByZXNvdXJjZVR5cGUsIEdMdWludCBy
ZXNvdXJjZUlkKQordm9pZCBGcmFtZWJ1ZmZlcjo6ZGV0YWNoUmVzb3VyY2VCeUlkKGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSByZXNvdXJjZVR5cGUsIEdMdWludCByZXNvdXJjZUlkKQog
ewogICAgIGZvciAoc2l6ZV90IGNvbG9ySW5kZXggPSAwOyBjb2xvckluZGV4IDwgbVN0YXRlLm1D
b2xvckF0dGFjaG1lbnRzLnNpemUoKTsgKytjb2xvckluZGV4KQogICAgIHsKQEAgLTMxNCwxMCAr
Mzg0LDI3IEBAIHZvaWQgRnJhbWVidWZmZXI6OmRldGFjaFJlc291cmNlQnlJZChHTGVudW0gcmVz
b3VyY2VUeXBlLCBHTHVpbnQgcmVzb3VyY2VJZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERJUlRZX0JJVF9DT0xPUl9BVFRBQ0hNRU5UXzAgKyBjb2xvckluZGV4KTsKICAgICB9
CiAKLSAgICBkZXRhY2hNYXRjaGluZ0F0dGFjaG1lbnQoJm1TdGF0ZS5tRGVwdGhBdHRhY2htZW50
LCByZXNvdXJjZVR5cGUsIHJlc291cmNlSWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERJUlRZX0JJVF9ERVBUSF9BVFRBQ0hNRU5UKTsKLSAgICBkZXRhY2hNYXRjaGluZ0F0dGFjaG1l
bnQoJm1TdGF0ZS5tU3RlbmNpbEF0dGFjaG1lbnQsIHJlc291cmNlVHlwZSwgcmVzb3VyY2VJZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRElSVFlfQklUX1NURU5DSUxfQVRUQUNITUVO
VCk7CisgICAgaWYgKGNvbnRleHQtPmlzV2ViR0wxKCkpCisgICAgeworICAgICAgICBjb25zdCBz
dGQ6OmFycmF5PEZyYW1lYnVmZmVyQXR0YWNobWVudCAqLCAzPiBhdHRhY2htZW50cyA9IHsKKyAg
ICAgICAgICAgIHsmbVN0YXRlLm1XZWJHTERlcHRoU3RlbmNpbEF0dGFjaG1lbnQsICZtU3RhdGUu
bVdlYkdMRGVwdGhBdHRhY2htZW50LAorICAgICAgICAgICAgICZtU3RhdGUubVdlYkdMU3RlbmNp
bEF0dGFjaG1lbnR9fTsKKyAgICAgICAgZm9yIChGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFj
aG1lbnQgOiBhdHRhY2htZW50cykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGF0dGFjaG1l
bnQtPmlzQXR0YWNoZWQoKSAmJiBhdHRhY2htZW50LT50eXBlKCkgPT0gcmVzb3VyY2VUeXBlICYm
CisgICAgICAgICAgICAgICAgYXR0YWNobWVudC0+aWQoKSA9PSByZXNvdXJjZUlkKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHJlc2V0QXR0YWNobWVudChjb250ZXh0LCBhdHRhY2ht
ZW50LT5nZXRCaW5kaW5nKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIGRldGFjaE1hdGNoaW5nQXR0YWNobWVudCgmbVN0YXRlLm1E
ZXB0aEF0dGFjaG1lbnQsIHJlc291cmNlVHlwZSwgcmVzb3VyY2VJZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERJUlRZX0JJVF9ERVBUSF9BVFRBQ0hNRU5UKTsKKyAgICAgICAg
ZGV0YWNoTWF0Y2hpbmdBdHRhY2htZW50KCZtU3RhdGUubVN0ZW5jaWxBdHRhY2htZW50LCByZXNv
dXJjZVR5cGUsIHJlc291cmNlSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
SVJUWV9CSVRfU1RFTkNJTF9BVFRBQ0hNRU5UKTsKKyAgICB9CiB9CiAKIHZvaWQgRnJhbWVidWZm
ZXI6OmRldGFjaE1hdGNoaW5nQXR0YWNobWVudChGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFj
aG1lbnQsCkBAIC0zNTcsNiArNDQ0LDExIEBAIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAq
RnJhbWVidWZmZXI6OmdldERlcHRoT3JTdGVuY2lsYnVmZmVyKCkgY29uc3QKICAgICByZXR1cm4g
bVN0YXRlLmdldERlcHRoT3JTdGVuY2lsQXR0YWNobWVudCgpOwogfQogCitjb25zdCBGcmFtZWJ1
ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVmZmVyOjpnZXRTdGVuY2lsT3JEZXB0aFN0ZW5jaWxBdHRh
Y2htZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRlLmdldFN0ZW5jaWxPckRlcHRoU3Rl
bmNpbEF0dGFjaG1lbnQoKTsKK30KKwogY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpGcmFt
ZWJ1ZmZlcjo6Z2V0UmVhZENvbG9yYnVmZmVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbVN0YXRl
LmdldFJlYWRBdHRhY2htZW50KCk7CkBAIC00MDIsNiArNDk0LDE1IEBAIHZvaWQgRnJhbWVidWZm
ZXI6OnNldERyYXdCdWZmZXJzKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICpidWZmZXJzKQog
ICAgIHN0ZDo6Y29weShidWZmZXJzLCBidWZmZXJzICsgY291bnQsIGRyYXdTdGF0ZXMuYmVnaW4o
KSk7CiAgICAgc3RkOjpmaWxsKGRyYXdTdGF0ZXMuYmVnaW4oKSArIGNvdW50LCBkcmF3U3RhdGVz
LmVuZCgpLCBHTF9OT05FKTsKICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfRFJBV19CVUZG
RVJTKTsKKworICAgIG1TdGF0ZS5tRW5hYmxlZERyYXdCdWZmZXJzLnJlc2V0KCk7CisgICAgZm9y
IChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KQorICAgIHsKKyAgICAg
ICAgaWYgKGRyYXdTdGF0ZXNbaW5kZXhdICE9IEdMX05PTkUgJiYgbVN0YXRlLm1Db2xvckF0dGFj
aG1lbnRzW2luZGV4XS5pc0F0dGFjaGVkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1TdGF0
ZS5tRW5hYmxlZERyYXdCdWZmZXJzLnNldChpbmRleCk7CisgICAgICAgIH0KKyAgICB9CiB9CiAK
IGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIo
c2l6ZV90IGRyYXdCdWZmZXIpIGNvbnN0CkBAIC00NjUsMzAgKzU2Niw0NiBAQCBib29sIEZyYW1l
YnVmZmVyOjp1c2luZ0V4dGVuZGVkRHJhd0J1ZmZlcnMoKSBjb25zdAogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotR0xlbnVtIEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1cyhjb25zdCBDb250ZXh0U3Rh
dGUgJnN0YXRlKQordm9pZCBGcmFtZWJ1ZmZlcjo6aW52YWxpZGF0ZUNvbXBsZXRlbmVzc0NhY2hl
KCkKIHsKLSAgICAvLyBUaGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciAqbXVzdCogYWx3YXlzIGJlIGNv
bXBsZXRlLCB0aG91Z2ggaXQgbWF5IG5vdCBiZQotICAgIC8vIHN1YmplY3QgdG8gdGhlIHNhbWUg
cnVsZXMgYXMgYXBwbGljYXRpb24gRkJPcy4gaWUsIGl0IGNvdWxkIGhhdmUgMHgwIHNpemUuCisg
ICAgaWYgKG1JZCAhPSAwKQorICAgIHsKKyAgICAgICAgbUNhY2hlZFN0YXR1cy5yZXNldCgpOwor
ICAgIH0KK30KKworR0xlbnVtIEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1cyhjb25zdCBDb250ZXh0
ICpjb250ZXh0KQoreworICAgIC8vIFRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGlzIGFsd2F5cyBj
b21wbGV0ZSBleGNlcHQgd2hlbiBpdCBpcyBzdXJmYWNlbGVzcyBpbiB3aGljaAorICAgIC8vIGNh
c2UgaXQgaXMgYWx3YXlzIHVuc3VwcG9ydGVkLiBXZSByZXR1cm4gZWFybHkgYmVjYXVzZSB0aGUg
ZGVmYXVsdCBmcmFtZWJ1ZmZlciBtYXkKKyAgICAvLyBub3QgYmUgc3ViamVjdCB0byB0aGUgc2Ft
ZSBydWxlcyBhcyBhcHBsaWNhdGlvbiBGQk9zLiBpZSwgaXQgY291bGQgaGF2ZSAweDAgc2l6ZS4K
ICAgICBpZiAobUlkID09IDApCiAgICAgewotICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJf
Q09NUExFVEU7CisgICAgICAgIEFTU0VSVChtQ2FjaGVkU3RhdHVzLnZhbGlkKCkpOworICAgICAg
ICBBU1NFUlQobUNhY2hlZFN0YXR1cy52YWx1ZSgpID09IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRF
IHx8CisgICAgICAgICAgICAgICBtQ2FjaGVkU3RhdHVzLnZhbHVlKCkgPT0gR0xfRlJBTUVCVUZG
RVJfVU5ERUZJTkVEX09FUyk7CisgICAgICAgIHJldHVybiBtQ2FjaGVkU3RhdHVzLnZhbHVlKCk7
CiAgICAgfQogCiAgICAgaWYgKGhhc0FueURpcnR5Qml0KCkgfHwgIW1DYWNoZWRTdGF0dXMudmFs
aWQoKSkKICAgICB7Ci0gICAgICAgIG1DYWNoZWRTdGF0dXMgPSBjaGVja1N0YXR1c0ltcGwoc3Rh
dGUpOworICAgICAgICBtQ2FjaGVkU3RhdHVzID0gY2hlY2tTdGF0dXNJbXBsKGNvbnRleHQpOwog
ICAgIH0KIAogICAgIHJldHVybiBtQ2FjaGVkU3RhdHVzLnZhbHVlKCk7CiB9CiAKLUdMZW51bSBG
cmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0dXNJbXBsKGNvbnN0IENvbnRleHRTdGF0ZSAmc3RhdGUpCitH
TGVudW0gRnJhbWVidWZmZXI6OmNoZWNrU3RhdHVzSW1wbChjb25zdCBDb250ZXh0ICpjb250ZXh0
KQogeworICAgIGNvbnN0IENvbnRleHRTdGF0ZSAmc3RhdGUgPSBjb250ZXh0LT5nZXRDb250ZXh0
U3RhdGUoKTsKKwogICAgIEFTU0VSVChtSWQgIT0gMCk7CiAKICAgICB1bnNpZ25lZCBpbnQgY29s
b3JidWZmZXJTaXplID0gMDsKICAgICBpbnQgc2FtcGxlcyA9IC0xOwogICAgIGJvb2wgbWlzc2lu
Z0F0dGFjaG1lbnQgPSB0cnVlOworICAgIE9wdGlvbmFsPEdMYm9vbGVhbj4gZml4ZWRTYW1wbGVM
b2NhdGlvbnM7CisgICAgYm9vbCBoYXNSZW5kZXJidWZmZXIgPSBmYWxzZTsKIAogICAgIGZvciAo
Y29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICZjb2xvckF0dGFjaG1lbnQgOiBtU3RhdGUubUNv
bG9yQXR0YWNobWVudHMpCiAgICAgewpAQCAtNTMwLDkgKzY0NywyMyBAQCBHTGVudW0gRnJhbWVi
dWZmZXI6OmNoZWNrU3RhdHVzSW1wbChjb25zdCBDb250ZXh0U3RhdGUgJnN0YXRlKQogICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lO
Q09NUExFVEVfQVRUQUNITUVOVDsKICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAvLyBFUzMuMSAoc2VjdGlvbiA5LjQpIHJlcXVpcmVzIHRoYXQgdGhlIHZhbHVlIG9mIFRFWFRV
UkVfRklYRURfU0FNUExFX0xPQ0FUSU9OUworICAgICAgICAgICAgICAgIC8vIHNob3VsZCBiZSB0
aGUgc2FtZSBmb3IgYWxsIGF0dGFjaGVkIHRleHR1cmVzLgorICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiBmaXhlZFNhbXBsZWxvYyA9IGNvbG9yQXR0YWNobWVudC5nZXRUZXh0dXJlKCktPmdldEZp
eGVkU2FtcGxlTG9jYXRpb25zKAorICAgICAgICAgICAgICAgICAgICBjb2xvckF0dGFjaG1lbnQu
Z2V0VGV4dHVyZUltYWdlSW5kZXgoKS50eXBlLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAoZml4
ZWRTYW1wbGVMb2NhdGlvbnMudmFsaWQoKSAmJiBmaXhlZFNhbXBsZWxvYyAhPSBmaXhlZFNhbXBs
ZUxvY2F0aW9ucy52YWx1ZSgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEU7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIGZpeGVkU2FtcGxlTG9jYXRpb25zID0gZml4ZWRTYW1wbGVsb2M7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoY29s
b3JBdHRhY2htZW50LnR5cGUoKSA9PSBHTF9SRU5ERVJCVUZGRVIpCiAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgaGFzUmVuZGVyYnVmZmVyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBp
ZiAoIWZvcm1hdENhcHMucmVuZGVyYWJsZSB8fCBmb3JtYXQuaW5mby0+ZGVwdGhCaXRzID4gMCB8
fAogICAgICAgICAgICAgICAgICAgICBmb3JtYXQuaW5mby0+c3RlbmNpbEJpdHMgPiAwKQogICAg
ICAgICAgICAgICAgIHsKQEAgLTU2MSw3ICs2OTIsNyBAQCBHTGVudW0gRnJhbWVidWZmZXI6OmNo
ZWNrU3RhdHVzSW1wbChjb25zdCBDb250ZXh0U3RhdGUgJnN0YXRlKQogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHNhbXBsZXMg
PSBjb2xvckF0dGFjaG1lbnQuZ2V0U2FtcGxlcygpOworICAgICAgICAgICAgICAgIHNhbXBsZXMg
ICAgICAgICAgID0gY29sb3JBdHRhY2htZW50LmdldFNhbXBsZXMoKTsKICAgICAgICAgICAgICAg
ICBjb2xvcmJ1ZmZlclNpemUgICA9IGZvcm1hdC5pbmZvLT5waXhlbEJ5dGVzOwogICAgICAgICAg
ICAgICAgIG1pc3NpbmdBdHRhY2htZW50ID0gZmFsc2U7CiAgICAgICAgICAgICB9CkBAIC01ODEs
MTIgKzcxMiw2IEBAIEdMZW51bSBGcmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0dXNJbXBsKGNvbnN0IENv
bnRleHRTdGF0ZSAmc3RhdGUpCiAgICAgICAgIGNvbnN0IFRleHR1cmVDYXBzICZmb3JtYXRDYXBz
ID0gc3RhdGUuZ2V0VGV4dHVyZUNhcChmb3JtYXQuYXNTaXplZCgpKTsKICAgICAgICAgaWYgKGRl
cHRoQXR0YWNobWVudC50eXBlKCkgPT0gR0xfVEVYVFVSRSkKICAgICAgICAgewotICAgICAgICAg
ICAgLy8gZGVwdGggdGV4dHVyZSBhdHRhY2htZW50cyByZXF1aXJlIE9FUy9BTkdMRV9kZXB0aF90
ZXh0dXJlCi0gICAgICAgICAgICBpZiAoIXN0YXRlLmdldEV4dGVuc2lvbnMoKS5kZXB0aFRleHR1
cmVzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZF
Ul9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIGlm
ICghZm9ybWF0Q2Fwcy5yZW5kZXJhYmxlKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CkBAIC02MzksMTMg
Kzc2NCw2IEBAIEdMZW51bSBGcmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0dXNJbXBsKGNvbnN0IENvbnRl
eHRTdGF0ZSAmc3RhdGUpCiAgICAgICAgIGNvbnN0IFRleHR1cmVDYXBzICZmb3JtYXRDYXBzID0g
c3RhdGUuZ2V0VGV4dHVyZUNhcChmb3JtYXQuYXNTaXplZCgpKTsKICAgICAgICAgaWYgKHN0ZW5j
aWxBdHRhY2htZW50LnR5cGUoKSA9PSBHTF9URVhUVVJFKQogICAgICAgICB7Ci0gICAgICAgICAg
ICAvLyB0ZXh0dXJlIHN0ZW5jaWwgYXR0YWNobWVudHMgY29tZSBhbG9uZyBhcyBwYXJ0Ci0gICAg
ICAgICAgICAvLyBvZiBPRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwgKyBPRVMvQU5HTEVfZGVwdGhf
dGV4dHVyZQotICAgICAgICAgICAgaWYgKCFzdGF0ZS5nZXRFeHRlbnNpb25zKCkuZGVwdGhUZXh0
dXJlcykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZG
RVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBp
ZiAoIWZvcm1hdENhcHMucmVuZGVyYWJsZSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOwpAQCAtNjkwLDgg
KzgwOCw0MiBAQCBHTGVudW0gRnJhbWVidWZmZXI6OmNoZWNrU3RhdHVzSW1wbChjb25zdCBDb250
ZXh0U3RhdGUgJnN0YXRlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gd2UgbmVlZCB0byBo
YXZlIGF0IGxlYXN0IG9uZSBhdHRhY2htZW50IHRvIGJlIGNvbXBsZXRlCi0gICAgaWYgKG1pc3Np
bmdBdHRhY2htZW50KQorICAgIC8vIFNwZWNpYWwgYWRkaXRpb25hbCB2YWxpZGF0aW9uIGZvciBX
ZWJHTCAxIERFUFRIL1NURU5DSUwvREVQVEhfU1RFTkNJTC4KKyAgICBpZiAoc3RhdGUuaXNXZWJH
TDEoKSkKKyAgICB7CisgICAgICAgIGlmICghbVN0YXRlLm1XZWJHTERlcHRoU3RlbmNpbENvbnNp
c3RlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9VTlNV
UFBPUlRFRDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtU3RhdGUubVdlYkdMRGVwdGhTdGVu
Y2lsQXR0YWNobWVudC5pc0F0dGFjaGVkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICht
U3RhdGUubVdlYkdMRGVwdGhTdGVuY2lsQXR0YWNobWVudC5nZXREZXB0aFNpemUoKSA9PSAwIHx8
CisgICAgICAgICAgICAgICAgbVN0YXRlLm1XZWJHTERlcHRoU3RlbmNpbEF0dGFjaG1lbnQuZ2V0
U3RlbmNpbFNpemUoKSA9PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVy
biBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobVN0YXRlLm1TdGVuY2lsQXR0YWNobWVudC5pc0F0
dGFjaGVkKCkgJiYKKyAgICAgICAgICAgICAgICAgbVN0YXRlLm1TdGVuY2lsQXR0YWNobWVudC5n
ZXREZXB0aFNpemUoKSA+IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBHTF9GUkFN
RUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBp
ZiAobVN0YXRlLm1EZXB0aEF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpICYmCisgICAgICAgICAgICAg
ICAgIG1TdGF0ZS5tRGVwdGhBdHRhY2htZW50LmdldFN0ZW5jaWxTaXplKCkgPiAwKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hN
RU5UOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRVMzLjEoc2VjdGlvbiA5LjQpIHJlcXVp
cmVzIHRoYXQgaWYgbm8gaW1hZ2UgaXMgYXR0YWNoZWQgdG8gdGhlCisgICAgLy8gZnJhbWVidWZm
ZXIsIGFuZCBlaXRoZXIgdGhlIHZhbHVlIG9mIHRoZSBmcmFtZWJ1ZmZlcidzIEZSQU1FQlVGRkVS
X0RFRkFVTFRfV0lEVEgKKyAgICAvLyBvciBGUkFNRUJVRkZFUl9ERUZBVUxUX0hFSUdIVCBwYXJh
bWV0ZXJzIGlzIHplcm8sIHRoZSBmcmFtZWJ1ZmZlciBpcworICAgIC8vIGNvbnNpZGVyZWQgaW5j
b21wbGV0ZS4KKyAgICBHTGludCBkZWZhdWx0V2lkdGggID0gbVN0YXRlLmdldERlZmF1bHRXaWR0
aCgpOworICAgIEdMaW50IGRlZmF1bHRIZWlnaHQgPSBtU3RhdGUuZ2V0RGVmYXVsdEhlaWdodCgp
OworCisgICAgaWYgKG1pc3NpbmdBdHRhY2htZW50ICYmIChkZWZhdWx0V2lkdGggPT0gMCB8fCBk
ZWZhdWx0SGVpZ2h0ID09IDApKQogICAgIHsKICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVS
X0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UOwogICAgIH0KQEAgLTcwMyw3ICs4NTUsMTUg
QEAgR0xlbnVtIEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1c0ltcGwoY29uc3QgQ29udGV4dFN0YXRl
ICZzdGF0ZSkKICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5T
SU9OUzsKICAgICB9CiAKLSAgICBzeW5jU3RhdGUoKTsKKyAgICAvLyBFUzMuMShzZWN0aW9uIDku
NCkgcmVxdWlyZXMgdGhhdCBpZiB0aGUgYXR0YWNoZWQgaW1hZ2VzIGFyZSBhIG1peCBvZiByZW5k
ZXJidWZmZXJzCisgICAgLy8gYW5kIHRleHR1cmVzLCB0aGUgdmFsdWUgb2YgVEVYVFVSRV9GSVhF
RF9TQU1QTEVfTE9DQVRJT05TIG11c3QgYmUgVFJVRSBmb3IgYWxsCisgICAgLy8gYXR0YWNoZWQg
dGV4dHVyZXMuCisgICAgaWYgKGZpeGVkU2FtcGxlTG9jYXRpb25zLnZhbGlkKCkgJiYgaGFzUmVu
ZGVyYnVmZmVyICYmICFmaXhlZFNhbXBsZUxvY2F0aW9ucy52YWx1ZSgpKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEU7CisgICAgfQor
CisgICAgc3luY1N0YXRlKGNvbnRleHQpOwogICAgIGlmICghbUltcGwtPmNoZWNrU3RhdHVzKCkp
CiAgICAgewogICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7CkBAIC04
MjMsMTIgKzk4MywzNiBAQCBFcnJvciBGcmFtZWJ1ZmZlcjo6YmxpdChyeDo6Q29udGV4dEltcGwg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIG1hc2ssCiAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyKQogewotICAgIHJldHVybiBtSW1wbC0+
YmxpdChjb250ZXh0LCBzb3VyY2VBcmVhLCBkZXN0QXJlYSwgbWFzaywgZmlsdGVyKTsKKyAgICBH
TGJpdGZpZWxkIGJsaXRNYXNrID0gbWFzazsKKworICAgIC8vIE5vdGUgdGhhdCBibGl0dGluZyBp
cyBjYWxsZWQgYWdhaW5zdCBkcmF3IGZyYW1lYnVmZmVyLgorICAgIC8vIFNlZSB0aGUgY29kZSBp
biBnbDo6Q29udGV4dDo6YmxpdEZyYW1lYnVmZmVyLgorICAgIGlmICgobWFzayAmIEdMX0NPTE9S
X0JVRkZFUl9CSVQpICYmICFoYXNFbmFibGVkRHJhd0J1ZmZlcigpKQorICAgIHsKKyAgICAgICAg
YmxpdE1hc2sgJj0gfkdMX0NPTE9SX0JVRkZFUl9CSVQ7CisgICAgfQorCisgICAgaWYgKChtYXNr
ICYgR0xfU1RFTkNJTF9CVUZGRVJfQklUKSAmJiBtU3RhdGUuZ2V0U3RlbmNpbEF0dGFjaG1lbnQo
KSA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgYmxpdE1hc2sgJj0gfkdMX1NURU5DSUxfQlVG
RkVSX0JJVDsKKyAgICB9CisKKyAgICBpZiAoKG1hc2sgJiBHTF9ERVBUSF9CVUZGRVJfQklUKSAm
JiBtU3RhdGUuZ2V0RGVwdGhBdHRhY2htZW50KCkgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAg
IGJsaXRNYXNrICY9IH5HTF9ERVBUSF9CVUZGRVJfQklUOworICAgIH0KKworICAgIGlmICghYmxp
dE1hc2spCisgICAgeworICAgICAgICByZXR1cm4gTm9FcnJvcigpOworICAgIH0KKworICAgIHJl
dHVybiBtSW1wbC0+YmxpdChjb250ZXh0LCBzb3VyY2VBcmVhLCBkZXN0QXJlYSwgYmxpdE1hc2ss
IGZpbHRlcik7CiB9CiAKLWludCBGcmFtZWJ1ZmZlcjo6Z2V0U2FtcGxlcyhjb25zdCBDb250ZXh0
U3RhdGUgJnN0YXRlKQoraW50IEZyYW1lYnVmZmVyOjpnZXRTYW1wbGVzKGNvbnN0IENvbnRleHQg
KmNvbnRleHQpCiB7Ci0gICAgaWYgKGNvbXBsZXRlKHN0YXRlKSkKKyAgICBpZiAoY29tcGxldGUo
Y29udGV4dCkpCiAgICAgewogICAgICAgICAvLyBGb3IgYSBjb21wbGV0ZSBmcmFtZWJ1ZmZlciwg
YWxsIGF0dGFjaG1lbnRzIG11c3QgaGF2ZSB0aGUgc2FtZSBzYW1wbGUgY291bnQuCiAgICAgICAg
IC8vIEluIHRoaXMgY2FzZSByZXR1cm4gdGhlIGZpcnN0IG5vbnplcm8gc2FtcGxlIHNpemUuCkBA
IC04NDMsMTYgKzEwMjcsMTIxIEBAIGludCBGcmFtZWJ1ZmZlcjo6Z2V0U2FtcGxlcyhjb25zdCBD
b250ZXh0U3RhdGUgJnN0YXRlKQogICAgIHJldHVybiAwOwogfQogCitFcnJvciBGcmFtZWJ1ZmZl
cjo6Z2V0U2FtcGxlUG9zaXRpb24oc2l6ZV90IGluZGV4LCBHTGZsb2F0ICp4eSkgY29uc3QKK3sK
KyAgICBBTkdMRV9UUlkobUltcGwtPmdldFNhbXBsZVBvc2l0aW9uKGluZGV4LCB4eSkpOworICAg
IHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCiBib29sIEZyYW1lYnVmZmVyOjpoYXNWYWxpZERl
cHRoU3RlbmNpbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1TdGF0ZS5nZXREZXB0aFN0ZW5jaWxB
dHRhY2htZW50KCkgIT0gbnVsbHB0cjsKIH0KIAotdm9pZCBGcmFtZWJ1ZmZlcjo6c2V0QXR0YWNo
bWVudChHTGVudW0gdHlwZSwKK3ZvaWQgRnJhbWVidWZmZXI6OnNldEF0dGFjaG1lbnQoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBiaW5kaW5nLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbWFnZUluZGV4ICZ0ZXh0dXJl
SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVyQXR0YWNo
bWVudE9iamVjdCAqcmVzb3VyY2UpCiB7CisgICAgLy8gQ29udGV4dCBtYXkgYmUgbnVsbCBpbiB1
bml0IHRlc3RzLgorICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+aXNXZWJHTDEoKSkKKyAg
ICB7CisgICAgICAgIHNldEF0dGFjaG1lbnRJbXBsKHR5cGUsIGJpbmRpbmcsIHRleHR1cmVJbmRl
eCwgcmVzb3VyY2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3dpdGNoIChiaW5k
aW5nKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMOgorICAgICAgICBjYXNl
IEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAgIG1TdGF0ZS5tV2ViR0xE
ZXB0aFN0ZW5jaWxBdHRhY2htZW50LmF0dGFjaCh0eXBlLCBiaW5kaW5nLCB0ZXh0dXJlSW5kZXgs
IHJlc291cmNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0RFUFRIOgor
ICAgICAgICBjYXNlIEdMX0RFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICBtU3RhdGUubVdl
YkdMRGVwdGhBdHRhY2htZW50LmF0dGFjaCh0eXBlLCBiaW5kaW5nLCB0ZXh0dXJlSW5kZXgsIHJl
c291cmNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1NURU5DSUw6Cisg
ICAgICAgIGNhc2UgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgbVN0YXRlLm1X
ZWJHTFN0ZW5jaWxBdHRhY2htZW50LmF0dGFjaCh0eXBlLCBiaW5kaW5nLCB0ZXh0dXJlSW5kZXgs
IHJlc291cmNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgc2V0QXR0YWNobWVudEltcGwodHlwZSwgYmluZGluZywgdGV4dHVyZUluZGV4LCByZXNv
dXJjZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29tbWl0V2ViR0wxRGVw
dGhTdGVuY2lsSWZDb25zaXN0ZW50KCk7Cit9CisKK3ZvaWQgRnJhbWVidWZmZXI6OmNvbW1pdFdl
YkdMMURlcHRoU3RlbmNpbElmQ29uc2lzdGVudCgpCit7CisgICAgaW50IGNvdW50ID0gMDsKKwor
ICAgIHN0ZDo6YXJyYXk8RnJhbWVidWZmZXJBdHRhY2htZW50ICosIDM+IGF0dGFjaG1lbnRzID0g
e3smbVN0YXRlLm1XZWJHTERlcHRoU3RlbmNpbEF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtU3RhdGUubVdlYkdM
RGVwdGhBdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmbVN0YXRlLm1XZWJHTFN0ZW5jaWxBdHRhY2htZW50fX07Cisg
ICAgZm9yIChGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1lbnQgOiBhdHRhY2htZW50cykK
KyAgICB7CisgICAgICAgIGlmIChhdHRhY2htZW50LT5pc0F0dGFjaGVkKCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtU3RhdGUubVdl
YkdMRGVwdGhTdGVuY2lsQ29uc2lzdGVudCA9IChjb3VudCA8PSAxKTsKKyAgICBpZiAoIW1TdGF0
ZS5tV2ViR0xEZXB0aFN0ZW5jaWxDb25zaXN0ZW50KQorICAgIHsKKyAgICAgICAgLy8gSW5jb25z
aXN0ZW50LgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBnZXRJbWFnZUluZGV4
SWZUZXh0dXJlQXR0YWNobWVudCA9IFtdKGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAmYXR0
YWNobWVudCkgeworICAgICAgICBpZiAoYXR0YWNobWVudC50eXBlKCkgPT0gR0xfVEVYVFVSRSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnQuZ2V0VGV4dHVyZUltYWdl
SW5kZXgoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBJbWFnZUluZGV4OjpNYWtlSW52YWxpZCgpOworICAgICAgICB9CisgICAgfTsKKwor
ICAgIGlmIChtU3RhdGUubVdlYkdMRGVwdGhBdHRhY2htZW50LmlzQXR0YWNoZWQoKSkKKyAgICB7
CisgICAgICAgIGNvbnN0IGF1dG8gJmRlcHRoID0gbVN0YXRlLm1XZWJHTERlcHRoQXR0YWNobWVu
dDsKKyAgICAgICAgc2V0QXR0YWNobWVudEltcGwoZGVwdGgudHlwZSgpLCBHTF9ERVBUSF9BVFRB
Q0hNRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRJbWFnZUluZGV4SWZUZXh0dXJl
QXR0YWNobWVudChkZXB0aCksIGRlcHRoLmdldFJlc291cmNlKCkpOworICAgICAgICBzZXRBdHRh
Y2htZW50SW1wbChHTF9OT05FLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEltYWdlSW5kZXg6Ok1h
a2VJbnZhbGlkKCksIG51bGxwdHIpOworICAgIH0KKyAgICBlbHNlIGlmIChtU3RhdGUubVdlYkdM
U3RlbmNpbEF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpKQorICAgIHsKKyAgICAgICAgY29uc3QgYXV0
byAmc3RlbmNpbCA9IG1TdGF0ZS5tV2ViR0xTdGVuY2lsQXR0YWNobWVudDsKKyAgICAgICAgc2V0
QXR0YWNobWVudEltcGwoR0xfTk9ORSwgR0xfREVQVEhfQVRUQUNITUVOVCwgSW1hZ2VJbmRleDo6
TWFrZUludmFsaWQoKSwgbnVsbHB0cik7CisgICAgICAgIHNldEF0dGFjaG1lbnRJbXBsKHN0ZW5j
aWwudHlwZSgpLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdldEltYWdlSW5kZXhJZlRleHR1cmVBdHRhY2htZW50KHN0ZW5jaWwpLCBzdGVuY2lsLmdl
dFJlc291cmNlKCkpOworICAgIH0KKyAgICBlbHNlIGlmIChtU3RhdGUubVdlYkdMRGVwdGhTdGVu
Y2lsQXR0YWNobWVudC5pc0F0dGFjaGVkKCkpCisgICAgeworICAgICAgICBjb25zdCBhdXRvICZk
ZXB0aFN0ZW5jaWwgPSBtU3RhdGUubVdlYkdMRGVwdGhTdGVuY2lsQXR0YWNobWVudDsKKyAgICAg
ICAgc2V0QXR0YWNobWVudEltcGwoZGVwdGhTdGVuY2lsLnR5cGUoKSwgR0xfREVQVEhfQVRUQUNI
TUVOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW1hZ2VJbmRleElmVGV4dHVyZUF0
dGFjaG1lbnQoZGVwdGhTdGVuY2lsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhT
dGVuY2lsLmdldFJlc291cmNlKCkpOworICAgICAgICBzZXRBdHRhY2htZW50SW1wbChkZXB0aFN0
ZW5jaWwudHlwZSgpLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdldEltYWdlSW5kZXhJZlRleHR1cmVBdHRhY2htZW50KGRlcHRoU3RlbmNpbCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNpbC5nZXRSZXNvdXJjZSgpKTsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc2V0QXR0YWNobWVudEltcGwoR0xfTk9ORSwg
R0xfREVQVEhfQVRUQUNITUVOVCwgSW1hZ2VJbmRleDo6TWFrZUludmFsaWQoKSwgbnVsbHB0cik7
CisgICAgICAgIHNldEF0dGFjaG1lbnRJbXBsKEdMX05PTkUsIEdMX1NURU5DSUxfQVRUQUNITUVO
VCwgSW1hZ2VJbmRleDo6TWFrZUludmFsaWQoKSwgbnVsbHB0cik7CisgICAgfQorfQorCit2b2lk
IEZyYW1lYnVmZmVyOjpzZXRBdHRhY2htZW50SW1wbChHTGVudW0gdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBiaW5kaW5nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW1hZ2VJbmRleCAmdGV4dHVyZUluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJBdHRhY2htZW50T2Jq
ZWN0ICpyZXNvdXJjZSkKK3sKICAgICBpZiAoYmluZGluZyA9PSBHTF9ERVBUSF9TVEVOQ0lMIHx8
IGJpbmRpbmcgPT0gR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKQogICAgIHsKICAgICAgICAg
Ly8gZW5zdXJlIHRoaXMgaXMgYSBsZWdpdGltYXRlIGRlcHRoK3N0ZW5jaWwgZm9ybWF0CkBAIC04
NzQsNjUgKzExNjMsMjEzIEBAIHZvaWQgRnJhbWVidWZmZXI6OnNldEF0dGFjaG1lbnQoR0xlbnVt
IHR5cGUsCiAgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9TVEVOQ0lMX0FUVEFDSE1F
TlQpOwogICAgICAgICBCaW5kUmVzb3VyY2VDaGFubmVsKCZtRGlydHlEZXB0aEF0dGFjaG1lbnRC
aW5kaW5nLCByZXNvdXJjZSk7CiAgICAgICAgIEJpbmRSZXNvdXJjZUNoYW5uZWwoJm1EaXJ0eVN0
ZW5jaWxBdHRhY2htZW50QmluZGluZywgcmVzb3VyY2UpOworICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGVsc2UKKworICAgIHN3aXRjaCAoYmluZGluZykKICAgICB7Ci0gICAgICAgIHN3aXRj
aCAoYmluZGluZykKLSAgICAgICAgewotICAgICAgICAgICAgY2FzZSBHTF9ERVBUSDoKLSAgICAg
ICAgICAgIGNhc2UgR0xfREVQVEhfQVRUQUNITUVOVDoKLSAgICAgICAgICAgICAgICBtU3RhdGUu
bURlcHRoQXR0YWNobWVudC5hdHRhY2godHlwZSwgYmluZGluZywgdGV4dHVyZUluZGV4LCByZXNv
dXJjZSk7Ci0gICAgICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0RFUFRIX0FU
VEFDSE1FTlQpOwotICAgICAgICAgICAgICAgIEJpbmRSZXNvdXJjZUNoYW5uZWwoJm1EaXJ0eURl
cHRoQXR0YWNobWVudEJpbmRpbmcsIHJlc291cmNlKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgR0xfU1RFTkNJTDoKLSAgICAgICAgICAgIGNhc2UgR0xfU1RFTkNJ
TF9BVFRBQ0hNRU5UOgotICAgICAgICAgICAgICAgIG1TdGF0ZS5tU3RlbmNpbEF0dGFjaG1lbnQu
YXR0YWNoKHR5cGUsIGJpbmRpbmcsIHRleHR1cmVJbmRleCwgcmVzb3VyY2UpOwotICAgICAgICAg
ICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9TVEVOQ0lMX0FUVEFDSE1FTlQpOwotICAg
ICAgICAgICAgICAgIEJpbmRSZXNvdXJjZUNoYW5uZWwoJm1EaXJ0eVN0ZW5jaWxBdHRhY2htZW50
QmluZGluZywgcmVzb3VyY2UpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBHTF9CQUNLOgotICAgICAgICAgICAgICAgIG1TdGF0ZS5tQ29sb3JBdHRhY2htZW50c1sw
XS5hdHRhY2godHlwZSwgYmluZGluZywgdGV4dHVyZUluZGV4LCByZXNvdXJjZSk7Ci0gICAgICAg
ICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0NPTE9SX0FUVEFDSE1FTlRfMCk7Ci0g
ICAgICAgICAgICAgICAgLy8gTm8gbmVlZCBmb3IgYSByZXNvdXJjZSBiaW5kaW5nIGZvciB0aGUg
ZGVmYXVsdCBGQk8sIGl0J3MgYWx3YXlzIGNvbXBsZXRlLgotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBz
aXplX3QgY29sb3JJbmRleCA9IGJpbmRpbmcgLSBHTF9DT0xPUl9BVFRBQ0hNRU5UMDsKLSAgICAg
ICAgICAgICAgICBBU1NFUlQoY29sb3JJbmRleCA8IG1TdGF0ZS5tQ29sb3JBdHRhY2htZW50cy5z
aXplKCkpOwotICAgICAgICAgICAgICAgIG1TdGF0ZS5tQ29sb3JBdHRhY2htZW50c1tjb2xvcklu
ZGV4XS5hdHRhY2godHlwZSwgYmluZGluZywgdGV4dHVyZUluZGV4LCByZXNvdXJjZSk7Ci0gICAg
ICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0NPTE9SX0FUVEFDSE1FTlRfMCAr
IGNvbG9ySW5kZXgpOwotICAgICAgICAgICAgICAgIEJpbmRSZXNvdXJjZUNoYW5uZWwoJm1EaXJ0
eUNvbG9yQXR0YWNobWVudEJpbmRpbmdzW2NvbG9ySW5kZXhdLCByZXNvdXJjZSk7Ci0gICAgICAg
ICAgICB9CisgICAgICAgIGNhc2UgR0xfREVQVEg6CisgICAgICAgIGNhc2UgR0xfREVQVEhfQVRU
QUNITUVOVDoKKyAgICAgICAgICAgIG1TdGF0ZS5tRGVwdGhBdHRhY2htZW50LmF0dGFjaCh0eXBl
LCBiaW5kaW5nLCB0ZXh0dXJlSW5kZXgsIHJlc291cmNlKTsKKyAgICAgICAgICAgIG1EaXJ0eUJp
dHMuc2V0KERJUlRZX0JJVF9ERVBUSF9BVFRBQ0hNRU5UKTsKKyAgICAgICAgICAgIEJpbmRSZXNv
dXJjZUNoYW5uZWwoJm1EaXJ0eURlcHRoQXR0YWNobWVudEJpbmRpbmcsIHJlc291cmNlKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1NURU5DSUw6CisgICAgICAgIGNhc2Ug
R0xfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgbVN0YXRlLm1TdGVuY2lsQXR0YWNo
bWVudC5hdHRhY2godHlwZSwgYmluZGluZywgdGV4dHVyZUluZGV4LCByZXNvdXJjZSk7CisgICAg
ICAgICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfU1RFTkNJTF9BVFRBQ0hNRU5UKTsKKyAg
ICAgICAgICAgIEJpbmRSZXNvdXJjZUNoYW5uZWwoJm1EaXJ0eVN0ZW5jaWxBdHRhY2htZW50Qmlu
ZGluZywgcmVzb3VyY2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQkFD
SzoKKyAgICAgICAgICAgIG1TdGF0ZS5tQ29sb3JBdHRhY2htZW50c1swXS5hdHRhY2godHlwZSwg
YmluZGluZywgdGV4dHVyZUluZGV4LCByZXNvdXJjZSk7CisgICAgICAgICAgICBtRGlydHlCaXRz
LnNldChESVJUWV9CSVRfQ09MT1JfQVRUQUNITUVOVF8wKTsKKyAgICAgICAgICAgIC8vIE5vIG5l
ZWQgZm9yIGEgcmVzb3VyY2UgYmluZGluZyBmb3IgdGhlIGRlZmF1bHQgRkJPLCBpdCdzIGFsd2F5
cyBjb21wbGV0ZS4KICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICB7CisgICAgICAgICAgICBzaXplX3QgY29sb3JJbmRleCA9IGJpbmRpbmcgLSBHTF9DT0xPUl9B
VFRBQ0hNRU5UMDsKKyAgICAgICAgICAgIEFTU0VSVChjb2xvckluZGV4IDwgbVN0YXRlLm1Db2xv
ckF0dGFjaG1lbnRzLnNpemUoKSk7CisgICAgICAgICAgICBtU3RhdGUubUNvbG9yQXR0YWNobWVu
dHNbY29sb3JJbmRleF0uYXR0YWNoKHR5cGUsIGJpbmRpbmcsIHRleHR1cmVJbmRleCwgcmVzb3Vy
Y2UpOworICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0NPTE9SX0FUVEFDSE1F
TlRfMCArIGNvbG9ySW5kZXgpOworICAgICAgICAgICAgQmluZFJlc291cmNlQ2hhbm5lbCgmbURp
cnR5Q29sb3JBdHRhY2htZW50QmluZGluZ3NbY29sb3JJbmRleF0sIHJlc291cmNlKTsKKworICAg
ICAgICAgICAgYm9vbCBlbmFibGVkID0gKHR5cGUgIT0gR0xfTk9ORSAmJiBnZXREcmF3QnVmZmVy
U3RhdGUoY29sb3JJbmRleCkgIT0gR0xfTk9ORSk7CisgICAgICAgICAgICBtU3RhdGUubUVuYWJs
ZWREcmF3QnVmZmVycy5zZXQoY29sb3JJbmRleCwgZW5hYmxlZCk7CiAgICAgICAgIH0KKyAgICAg
ICAgYnJlYWs7CiAgICAgfQogfQogCi12b2lkIEZyYW1lYnVmZmVyOjpyZXNldEF0dGFjaG1lbnQo
R0xlbnVtIGJpbmRpbmcpCit2b2lkIEZyYW1lYnVmZmVyOjpyZXNldEF0dGFjaG1lbnQoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIGJpbmRpbmcpCiB7Ci0gICAgc2V0QXR0YWNobWVudChH
TF9OT05FLCBiaW5kaW5nLCBJbWFnZUluZGV4OjpNYWtlSW52YWxpZCgpLCBudWxscHRyKTsKKyAg
ICBzZXRBdHRhY2htZW50KGNvbnRleHQsIEdMX05PTkUsIGJpbmRpbmcsIEltYWdlSW5kZXg6Ok1h
a2VJbnZhbGlkKCksIG51bGxwdHIpOwogfQogCi12b2lkIEZyYW1lYnVmZmVyOjpzeW5jU3RhdGUo
KQordm9pZCBGcmFtZWJ1ZmZlcjo6c3luY1N0YXRlKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7
CiAgICAgaWYgKG1EaXJ0eUJpdHMuYW55KCkpCiAgICAgewotICAgICAgICBtSW1wbC0+c3luY1N0
YXRlKG1EaXJ0eUJpdHMpOworICAgICAgICBtSW1wbC0+c3luY1N0YXRlKHJ4OjpTYWZlR2V0SW1w
bChjb250ZXh0KSwgbURpcnR5Qml0cyk7CiAgICAgICAgIG1EaXJ0eUJpdHMucmVzZXQoKTsKLSAg
ICAgICAgbUNhY2hlZFN0YXR1cy5yZXNldCgpOworICAgICAgICBpZiAobUlkICE9IDApCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1DYWNoZWRTdGF0dXMucmVzZXQoKTsKKyAgICAgICAgfQogICAg
IH0KIH0KIAotdm9pZCBGcmFtZWJ1ZmZlcjo6c2lnbmFsKFNpZ25hbFRva2VuIHRva2VuKQordm9p
ZCBGcmFtZWJ1ZmZlcjo6c2lnbmFsKHVpbnQzMl90IHRva2VuKQogewogICAgIC8vIFRPT0Qoam1h
ZGlsbCk6IE1ha2UgdGhpcyBvbmx5IHVwZGF0ZSBpbmRpdmlkdWFsIGF0dGFjaG1lbnRzIHRvIGRv
IGxlc3Mgd29yay4KICAgICBtQ2FjaGVkU3RhdHVzLnJlc2V0KCk7CiB9CiAKLWJvb2wgRnJhbWVi
dWZmZXI6OmNvbXBsZXRlKGNvbnN0IENvbnRleHRTdGF0ZSAmc3RhdGUpCitib29sIEZyYW1lYnVm
ZmVyOjpjb21wbGV0ZShjb25zdCBDb250ZXh0ICpjb250ZXh0KQoreworICAgIHJldHVybiAoY2hl
Y2tTdGF0dXMoY29udGV4dCkgPT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpOworfQorCitib29s
IEZyYW1lYnVmZmVyOjpjYWNoZWRDb21wbGV0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtQ2Fj
aGVkU3RhdHVzLnZhbGlkKCkgJiYgbUNhY2hlZFN0YXR1cyA9PSBHTF9GUkFNRUJVRkZFUl9DT01Q
TEVURSk7Cit9CisKK2Jvb2wgRnJhbWVidWZmZXI6OmZvcm1zUmVuZGVyaW5nRmVlZGJhY2tMb29w
V2l0aChjb25zdCBTdGF0ZSAmc3RhdGUpIGNvbnN0Cit7CisgICAgY29uc3QgUHJvZ3JhbSAqcHJv
Z3JhbSA9IHN0YXRlLmdldFByb2dyYW0oKTsKKworICAgIC8vIFRPRE8oam1hZGlsbCk6IERlZmF1
bHQgZnJhbWVidWZmZXIgZmVlZGJhY2sgbG9vcHMuCisgICAgaWYgKG1JZCA9PSAwKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFRoZSBiaXRzZXQgd2lsbCBz
a2lwIGluYWN0aXZlIGRyYXcgYnVmZmVycy4KKyAgICBmb3IgKHNpemVfdCBkcmF3SW5kZXggOiBh
bmdsZTo6SXRlcmF0ZUJpdFNldChtU3RhdGUubUVuYWJsZWREcmF3QnVmZmVycykpCisgICAgewor
ICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1lbnQgPSBnZXREcmF3
QnVmZmVyKGRyYXdJbmRleCk7CisgICAgICAgIGlmIChhdHRhY2htZW50ICYmIGF0dGFjaG1lbnQt
PnR5cGUoKSA9PSBHTF9URVhUVVJFKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBWYWxpZGF0
ZSB0aGUgZmVlZGJhY2sgbG9vcC4KKyAgICAgICAgICAgIGlmIChwcm9ncmFtLT5zYW1wbGVzRnJv
bVRleHR1cmUoc3RhdGUsIGF0dGFjaG1lbnQtPmlkKCkpKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgLy8gVmFsaWRhdGUgZGVwdGgtc3RlbmNpbCBmZWVkYmFjayBsb29wLgorICAgIGNvbnN0
IGF1dG8gJmRzU3RhdGUgPSBzdGF0ZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgpOworCisgICAgLy8g
V2UgY2FuIHNraXAgdGhlIGZlZWRiYWNrIGxvb3AgY2hlY2tzIGlmIGRlcHRoL3N0ZW5jaWwgaXMg
bWFza2VkIG91dCBvciBkaXNhYmxlZC4KKyAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQg
KmRlcHRoID0gZ2V0RGVwdGhidWZmZXIoKTsKKyAgICBpZiAoZGVwdGggJiYgZGVwdGgtPnR5cGUo
KSA9PSBHTF9URVhUVVJFICYmIGRzU3RhdGUuZGVwdGhUZXN0ICYmIGRzU3RhdGUuZGVwdGhNYXNr
KQorICAgIHsKKyAgICAgICAgaWYgKHByb2dyYW0tPnNhbXBsZXNGcm9tVGV4dHVyZShzdGF0ZSwg
ZGVwdGgtPmlkKCkpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIC8vIE5vdGU6IHdlIGFzc3VtZSB0aGUgZnJvbnQgYW5kIGJhY2sg
bWFza3MgYXJlIHRoZSBzYW1lIGZvciBXZWJHTC4KKyAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQgKnN0ZW5jaWwgPSBnZXRTdGVuY2lsYnVmZmVyKCk7CisgICAgQVNTRVJUKGRzU3RhdGUu
c3RlbmNpbEJhY2tXcml0ZW1hc2sgPT0gZHNTdGF0ZS5zdGVuY2lsV3JpdGVtYXNrKTsKKyAgICBp
ZiAoc3RlbmNpbCAmJiBzdGVuY2lsLT50eXBlKCkgPT0gR0xfVEVYVFVSRSAmJiBkc1N0YXRlLnN0
ZW5jaWxUZXN0ICYmCisgICAgICAgIGRzU3RhdGUuc3RlbmNpbFdyaXRlbWFzayAhPSAwKQorICAg
IHsKKyAgICAgICAgLy8gU2tpcCB0aGUgZmVlZGJhY2sgbG9vcCBjaGVjayBpZiBkZXB0aC9zdGVu
Y2lsIHBvaW50IHRvIHRoZSBzYW1lIHJlc291cmNlLgorICAgICAgICBpZiAoIWRlcHRoIHx8ICpz
dGVuY2lsICE9ICpkZXB0aCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHByb2dyYW0tPnNh
bXBsZXNGcm9tVGV4dHVyZShzdGF0ZSwgc3RlbmNpbC0+aWQoKSkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRnJhbWVidWZmZXI6OmZvcm1zQ29w
eWluZ0ZlZWRiYWNrTG9vcFdpdGgoR0x1aW50IGNvcHlUZXh0dXJlSUQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvcHlUZXh0dXJlTGV2ZWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNv
cHlUZXh0dXJlTGF5ZXIpIGNvbnN0Cit7CisgICAgaWYgKG1JZCA9PSAwKQorICAgIHsKKyAgICAg
ICAgLy8gSXQgc2VlbXMgaW1wb3NzaWJsZSB0byBmb3JtIGEgdGV4dHVyZSBjb3B5aW5nIGZlZWRi
YWNrIGxvb3Agd2l0aCB0aGUgZGVmYXVsdCBGQk8uCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnJlYWRBdHRhY2htZW50ID0g
Z2V0UmVhZENvbG9yYnVmZmVyKCk7CisgICAgQVNTRVJUKHJlYWRBdHRhY2htZW50KTsKKworICAg
IGlmIChyZWFkQXR0YWNobWVudC0+aXNUZXh0dXJlV2l0aElkKGNvcHlUZXh0dXJlSUQpKQorICAg
IHsKKyAgICAgICAgY29uc3QgYXV0byAmaW1hZ2VJbmRleCA9IHJlYWRBdHRhY2htZW50LT5nZXRU
ZXh0dXJlSW1hZ2VJbmRleCgpOworICAgICAgICBpZiAoaW1hZ2VJbmRleC5taXBJbmRleCA9PSBj
b3B5VGV4dHVyZUxldmVsKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBDaGVjayAzRC9BcnJh
eSB0ZXh0dXJlIGxheWVycy4KKyAgICAgICAgICAgIHJldHVybiBpbWFnZUluZGV4LmxheWVySW5k
ZXggPT0gSW1hZ2VJbmRleDo6RU5USVJFX0xFVkVMIHx8CisgICAgICAgICAgICAgICAgICAgY29w
eVRleHR1cmVMYXllciA9PSBJbWFnZUluZGV4OjpFTlRJUkVfTEVWRUwgfHwKKyAgICAgICAgICAg
ICAgICAgICBpbWFnZUluZGV4LmxheWVySW5kZXggPT0gY29weVRleHR1cmVMYXllcjsKKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0dMaW50IEZyYW1lYnVmZmVyOjpn
ZXREZWZhdWx0V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtU3RhdGUuZ2V0RGVmYXVsdFdp
ZHRoKCk7Cit9CisKK0dMaW50IEZyYW1lYnVmZmVyOjpnZXREZWZhdWx0SGVpZ2h0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbVN0YXRlLmdldERlZmF1bHRIZWlnaHQoKTsKK30KKworR0xpbnQgRnJh
bWVidWZmZXI6OmdldERlZmF1bHRTYW1wbGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRl
LmdldERlZmF1bHRTYW1wbGVzKCk7Cit9CisKK0dMYm9vbGVhbiBGcmFtZWJ1ZmZlcjo6Z2V0RGVm
YXVsdEZpeGVkU2FtcGxlTG9jYXRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRlLmdl
dERlZmF1bHRGaXhlZFNhbXBsZUxvY2F0aW9ucygpOworfQorCit2b2lkIEZyYW1lYnVmZmVyOjpz
ZXREZWZhdWx0V2lkdGgoR0xpbnQgZGVmYXVsdFdpZHRoKQoreworICAgIG1TdGF0ZS5tRGVmYXVs
dFdpZHRoID0gZGVmYXVsdFdpZHRoOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9ERUZB
VUxUX1dJRFRIKTsKK30KKwordm9pZCBGcmFtZWJ1ZmZlcjo6c2V0RGVmYXVsdEhlaWdodChHTGlu
dCBkZWZhdWx0SGVpZ2h0KQoreworICAgIG1TdGF0ZS5tRGVmYXVsdEhlaWdodCA9IGRlZmF1bHRI
ZWlnaHQ7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0RFRkFVTFRfSEVJR0hUKTsKK30K
Kwordm9pZCBGcmFtZWJ1ZmZlcjo6c2V0RGVmYXVsdFNhbXBsZXMoR0xpbnQgZGVmYXVsdFNhbXBs
ZXMpCit7CisgICAgbVN0YXRlLm1EZWZhdWx0U2FtcGxlcyA9IGRlZmF1bHRTYW1wbGVzOworICAg
IG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9ERUZBVUxUX1NBTVBMRVMpOworfQorCit2b2lkIEZy
YW1lYnVmZmVyOjpzZXREZWZhdWx0Rml4ZWRTYW1wbGVMb2NhdGlvbnMoR0xib29sZWFuIGRlZmF1
bHRGaXhlZFNhbXBsZUxvY2F0aW9ucykKK3sKKyAgICBtU3RhdGUubURlZmF1bHRGaXhlZFNhbXBs
ZUxvY2F0aW9ucyA9IGRlZmF1bHRGaXhlZFNhbXBsZUxvY2F0aW9uczsKKyAgICBtRGlydHlCaXRz
LnNldChESVJUWV9CSVRfREVGQVVMVF9GSVhFRF9TQU1QTEVfTE9DQVRJT05TKTsKK30KKworLy8g
VE9ETyhqbWFkaWxsKTogUmVtb3ZlIHRoaXMga2x1ZGdlLgorR0xlbnVtIEZyYW1lYnVmZmVyOjpj
aGVja1N0YXR1cyhjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCkKK3sKKyAgICByZXR1
cm4gY2hlY2tTdGF0dXMoc3RhdGljX2Nhc3Q8Y29uc3QgQ29udGV4dCAqPihjb250ZXh0KSk7Cit9
CisKK2ludCBGcmFtZWJ1ZmZlcjo6Z2V0U2FtcGxlcyhjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCkKIHsKLSAgICByZXR1cm4gKGNoZWNrU3RhdHVzKHN0YXRlKSA9PSBHTF9GUkFNRUJV
RkZFUl9DT01QTEVURSk7CisgICAgcmV0dXJuIGdldFNhbXBsZXMoc3RhdGljX2Nhc3Q8Y29uc3Qg
Q29udGV4dCAqPihjb250ZXh0KSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBnbApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZmZXIuaAppbmRleCBk
YjBkNjIxNWYzNzk1NTU3YjBjMzFmZGY3ZjJjMDk5OWI0MGYzMzhiLi5jNGNhY2Y5OTlmYjFmMjIx
NTYyZmRhOGQ5YzJiMzhlYjIzODhmNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZmZXIuaApAQCAtMzIsMTkgKzMyLDIxIEBAIGNsYXNz
IFN1cmZhY2VJbXBsOwogCiBuYW1lc3BhY2UgZWdsCiB7CitjbGFzcyBEaXNwbGF5OwogY2xhc3Mg
U3VyZmFjZTsKIH0KIAogbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBDb250ZXh0OworY2xhc3MgQ29u
dGV4dFN0YXRlOwogY2xhc3MgRnJhbWVidWZmZXI7CiBjbGFzcyBSZW5kZXJidWZmZXI7CiBjbGFz
cyBTdGF0ZTsKIGNsYXNzIFRleHR1cmU7CiBjbGFzcyBUZXh0dXJlQ2Fwc01hcDsKK2NsYXNzIFZh
bGlkYXRpb25Db250ZXh0Owogc3RydWN0IENhcHM7Ci1jbGFzcyBDb250ZXh0U3RhdGU7CiBzdHJ1
Y3QgRXh0ZW5zaW9uczsKIHN0cnVjdCBJbWFnZUluZGV4Owogc3RydWN0IFJlY3RhbmdsZTsKQEAg
LTYwLDggKzYyLDEwIEBAIGNsYXNzIEZyYW1lYnVmZmVyU3RhdGUgZmluYWwgOiBhbmdsZTo6Tm9u
Q29weWFibGUKIAogICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqZ2V0QXR0YWNobWVu
dChHTGVudW0gYXR0YWNobWVudCkgY29uc3Q7CiAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2ht
ZW50ICpnZXRSZWFkQXR0YWNobWVudCgpIGNvbnN0OworICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0
YWNobWVudCAqZ2V0Rmlyc3ROb25OdWxsQXR0YWNobWVudCgpIGNvbnN0OwogICAgIGNvbnN0IEZy
YW1lYnVmZmVyQXR0YWNobWVudCAqZ2V0Rmlyc3RDb2xvckF0dGFjaG1lbnQoKSBjb25zdDsKICAg
ICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmdldERlcHRoT3JTdGVuY2lsQXR0YWNobWVu
dCgpIGNvbnN0OworICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqZ2V0U3RlbmNpbE9y
RGVwdGhTdGVuY2lsQXR0YWNobWVudCgpIGNvbnN0OwogICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0
YWNobWVudCAqZ2V0Q29sb3JBdHRhY2htZW50KHNpemVfdCBjb2xvckF0dGFjaG1lbnQpIGNvbnN0
OwogICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqZ2V0RGVwdGhBdHRhY2htZW50KCkg
Y29uc3Q7CiAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXRTdGVuY2lsQXR0YWNo
bWVudCgpIGNvbnN0OwpAQCAtODAsNiArODQsMTEgQEAgY2xhc3MgRnJhbWVidWZmZXJTdGF0ZSBm
aW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVu
dCAqZ2V0RHJhd0J1ZmZlcihzaXplX3QgZHJhd0J1ZmZlcklkeCkgY29uc3Q7CiAgICAgc2l6ZV90
IGdldERyYXdCdWZmZXJDb3VudCgpIGNvbnN0OwogCisgICAgR0xpbnQgZ2V0RGVmYXVsdFdpZHRo
KCkgY29uc3QgeyByZXR1cm4gbURlZmF1bHRXaWR0aDsgfTsKKyAgICBHTGludCBnZXREZWZhdWx0
SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbURlZmF1bHRIZWlnaHQ7IH07CisgICAgR0xpbnQgZ2V0
RGVmYXVsdFNhbXBsZXMoKSBjb25zdCB7IHJldHVybiBtRGVmYXVsdFNhbXBsZXM7IH07CisgICAg
R0xib29sZWFuIGdldERlZmF1bHRGaXhlZFNhbXBsZUxvY2F0aW9ucygpIGNvbnN0IHsgcmV0dXJu
IG1EZWZhdWx0Rml4ZWRTYW1wbGVMb2NhdGlvbnM7IH07CisKICAgcHJpdmF0ZToKICAgICBmcmll
bmQgY2xhc3MgRnJhbWVidWZmZXI7CiAKQEAgLTkxLDE0ICsxMDAsMzcgQEAgY2xhc3MgRnJhbWVi
dWZmZXJTdGF0ZSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgc3RkOjp2ZWN0b3I8
R0xlbnVtPiBtRHJhd0J1ZmZlclN0YXRlczsKICAgICBHTGVudW0gbVJlYWRCdWZmZXJTdGF0ZTsK
KyAgICBzdGQ6OmJpdHNldDxJTVBMRU1FTlRBVElPTl9NQVhfRFJBV19CVUZGRVJTPiBtRW5hYmxl
ZERyYXdCdWZmZXJzOworCisgICAgR0xpbnQgbURlZmF1bHRXaWR0aDsKKyAgICBHTGludCBtRGVm
YXVsdEhlaWdodDsKKyAgICBHTGludCBtRGVmYXVsdFNhbXBsZXM7CisgICAgR0xib29sZWFuIG1E
ZWZhdWx0Rml4ZWRTYW1wbGVMb2NhdGlvbnM7CisKKyAgICAvLyBJdCdzIG5lY2Vzc2FyeSB0byBz
dG9yZSBhbGwgdGhpcyBleHRyYSBzdGF0ZSBzbyB3ZSBjYW4gcmVzdG9yZSBhdHRhY2htZW50cwor
ICAgIC8vIHdoZW4gREVQVEhfU1RFTkNJTC9ERVBUSC9TVEVOQ0lMIGlzIHVuYm91bmQgaW4gV2Vi
R0wgMS4KKyAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgbVdlYkdMRGVwdGhTdGVuY2lsQXR0YWNo
bWVudDsKKyAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgbVdlYkdMRGVwdGhBdHRhY2htZW50Owor
ICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudCBtV2ViR0xTdGVuY2lsQXR0YWNobWVudDsKKyAgICBi
b29sIG1XZWJHTERlcHRoU3RlbmNpbENvbnNpc3RlbnQ7CiB9OwogCi1jbGFzcyBGcmFtZWJ1ZmZl
ciBmaW5hbCA6IHB1YmxpYyBMYWJlbGVkT2JqZWN0LCBwdWJsaWMgYW5nbGU6OlNpZ25hbFJlY2Vp
dmVyCit1c2luZyBPbkF0dGFjaG1lbnREaXJ0eVJlY2VpdmVyID0gYW5nbGU6OlNpZ25hbFJlY2Vp
dmVyPD47Cit1c2luZyBPbkF0dGFjaG1lbnREaXJ0eUJpbmRpbmcgID0gYW5nbGU6OkNoYW5uZWxC
aW5kaW5nPD47CisKK2NsYXNzIEZyYW1lYnVmZmVyIGZpbmFsIDogcHVibGljIExhYmVsZWRPYmpl
Y3QsIHB1YmxpYyBPbkF0dGFjaG1lbnREaXJ0eVJlY2VpdmVyCiB7CiAgIHB1YmxpYzoKKyAgICAv
LyBDb25zdHJ1Y3RvciB0byBidWlsZCBhcHBsaWNhdGlvbi1kZWZpbmVkIGZyYW1lYnVmZmVycwog
ICAgIEZyYW1lYnVmZmVyKGNvbnN0IENhcHMgJmNhcHMsIHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0
b3J5LCBHTHVpbnQgaWQpOwotICAgIEZyYW1lYnVmZmVyKHJ4OjpTdXJmYWNlSW1wbCAqc3VyZmFj
ZSk7CisgICAgLy8gQ29uc3RydWN0b3IgdG8gYnVpbGQgZGVmYXVsdCBmcmFtZWJ1ZmZlcnMgZm9y
IGEgc3VyZmFjZQorICAgIEZyYW1lYnVmZmVyKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSk7CisgICAg
Ly8gQ29uc3RydWN0b3IgdG8gYnVpbGQgYSBmYWtlIGRlZmF1bHQgZnJhbWVidWZmZXIgd2hlbiBz
dXJmYWNlbGVzcworICAgIEZyYW1lYnVmZmVyKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5KTsK
KwogICAgIHZpcnR1YWwgfkZyYW1lYnVmZmVyKCk7CisgICAgdm9pZCBkZXN0cm95KGNvbnN0IENv
bnRleHQgKmNvbnRleHQpOworICAgIHZvaWQgZGVzdHJveURlZmF1bHQoY29uc3QgZWdsOjpEaXNw
bGF5ICpkaXNwbGF5KTsKIAogICAgIHZvaWQgc2V0TGFiZWwoY29uc3Qgc3RkOjpzdHJpbmcgJmxh
YmVsKSBvdmVycmlkZTsKICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZ2V0TGFiZWwoKSBjb25zdCBv
dmVycmlkZTsKQEAgLTEwNywyMCArMTM5LDIyIEBAIGNsYXNzIEZyYW1lYnVmZmVyIGZpbmFsIDog
cHVibGljIExhYmVsZWRPYmplY3QsIHB1YmxpYyBhbmdsZTo6U2lnbmFsUmVjZWl2ZXIKIAogICAg
IEdMdWludCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1JZDsgfQogCi0gICAgdm9pZCBzZXRBdHRhY2ht
ZW50KEdMZW51bSB0eXBlLAorICAgIHZvaWQgc2V0QXR0YWNobWVudChjb25zdCBDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGJpbmRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEltYWdlSW5kZXggJnRleHR1cmVJbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVi
dWZmZXJBdHRhY2htZW50T2JqZWN0ICpyZXNvdXJjZSk7Ci0gICAgdm9pZCByZXNldEF0dGFjaG1l
bnQoR0xlbnVtIGJpbmRpbmcpOworICAgIHZvaWQgcmVzZXRBdHRhY2htZW50KGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBiaW5kaW5nKTsKIAotICAgIHZvaWQgZGV0YWNoVGV4dHVyZShH
THVpbnQgdGV4dHVyZSk7Ci0gICAgdm9pZCBkZXRhY2hSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRl
cmJ1ZmZlcik7CisgICAgdm9pZCBkZXRhY2hUZXh0dXJlKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMdWludCB0ZXh0dXJlKTsKKyAgICB2b2lkIGRldGFjaFJlbmRlcmJ1ZmZlcihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKTsKIAogICAgIGNvbnN0IEZyYW1lYnVm
ZmVyQXR0YWNobWVudCAqZ2V0Q29sb3JidWZmZXIoc2l6ZV90IGNvbG9yQXR0YWNobWVudCkgY29u
c3Q7CiAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXREZXB0aGJ1ZmZlcigpIGNv
bnN0OwogICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqZ2V0U3RlbmNpbGJ1ZmZlcigp
IGNvbnN0OwogICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqZ2V0RGVwdGhTdGVuY2ls
QnVmZmVyKCkgY29uc3Q7CiAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXREZXB0
aE9yU3RlbmNpbGJ1ZmZlcigpIGNvbnN0OworICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVu
dCAqZ2V0U3RlbmNpbE9yRGVwdGhTdGVuY2lsQXR0YWNobWVudCgpIGNvbnN0OwogICAgIGNvbnN0
IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqZ2V0UmVhZENvbG9yYnVmZmVyKCkgY29uc3Q7CiAgICAg
R0xlbnVtIGdldFJlYWRDb2xvcmJ1ZmZlclR5cGUoKSBjb25zdDsKICAgICBjb25zdCBGcmFtZWJ1
ZmZlckF0dGFjaG1lbnQgKmdldEZpcnN0Q29sb3JidWZmZXIoKSBjb25zdDsKQEAgLTE0NCwxMSAr
MTc4LDMwIEBAIGNsYXNzIEZyYW1lYnVmZmVyIGZpbmFsIDogcHVibGljIExhYmVsZWRPYmplY3Qs
IHB1YmxpYyBhbmdsZTo6U2lnbmFsUmVjZWl2ZXIKICAgICBib29sIHVzaW5nRXh0ZW5kZWREcmF3
QnVmZmVycygpIGNvbnN0OwogCiAgICAgLy8gVGhpcyBtZXRob2QgY2FsbHMgY2hlY2tTdGF0dXMu
Ci0gICAgaW50IGdldFNhbXBsZXMoY29uc3QgQ29udGV4dFN0YXRlICZzdGF0ZSk7Ci0gICAgR0xl
bnVtIGNoZWNrU3RhdHVzKGNvbnN0IENvbnRleHRTdGF0ZSAmc3RhdGUpOworICAgIGludCBnZXRT
YW1wbGVzKGNvbnN0IENvbnRleHQgKmNvbnRleHQpOworCisgICAgRXJyb3IgZ2V0U2FtcGxlUG9z
aXRpb24oc2l6ZV90IGluZGV4LCBHTGZsb2F0ICp4eSkgY29uc3Q7CisKKyAgICBHTGludCBnZXRE
ZWZhdWx0V2lkdGgoKSBjb25zdDsKKyAgICBHTGludCBnZXREZWZhdWx0SGVpZ2h0KCkgY29uc3Q7
CisgICAgR0xpbnQgZ2V0RGVmYXVsdFNhbXBsZXMoKSBjb25zdDsKKyAgICBHTGJvb2xlYW4gZ2V0
RGVmYXVsdEZpeGVkU2FtcGxlTG9jYXRpb25zKCkgY29uc3Q7CisgICAgdm9pZCBzZXREZWZhdWx0
V2lkdGgoR0xpbnQgZGVmYXVsdFdpZHRoKTsKKyAgICB2b2lkIHNldERlZmF1bHRIZWlnaHQoR0xp
bnQgZGVmYXVsdEhlaWdodCk7CisgICAgdm9pZCBzZXREZWZhdWx0U2FtcGxlcyhHTGludCBkZWZh
dWx0U2FtcGxlcyk7CisgICAgdm9pZCBzZXREZWZhdWx0Rml4ZWRTYW1wbGVMb2NhdGlvbnMoR0xi
b29sZWFuIGRlZmF1bHRGaXhlZFNhbXBsZUxvY2F0aW9ucyk7CisKKyAgICB2b2lkIGludmFsaWRh
dGVDb21wbGV0ZW5lc3NDYWNoZSgpOworCisgICAgR0xlbnVtIGNoZWNrU3RhdHVzKGNvbnN0IENv
bnRleHQgKmNvbnRleHQpOworCisgICAgLy8gVE9ETyhqbWFkaWxsKTogUmVtb3ZlIHRoaXMga2x1
ZGdlLgorICAgIEdMZW51bSBjaGVja1N0YXR1cyhjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29u
dGV4dCk7CisgICAgaW50IGdldFNhbXBsZXMoY29uc3QgVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRl
eHQpOwogCiAgICAgLy8gSGVscGVyIGZvciBjaGVja1N0YXR1cyA9PSBHTF9GUkFNRUJVRkZFUl9D
T01QTEVURS4KLSAgICBib29sIGNvbXBsZXRlKGNvbnN0IENvbnRleHRTdGF0ZSAmc3RhdGUpOwor
ICAgIGJvb2wgY29tcGxldGUoY29uc3QgQ29udGV4dCAqY29udGV4dCk7CisgICAgYm9vbCBjYWNo
ZWRDb21wbGV0ZSgpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNWYWxpZERlcHRoU3RlbmNpbCgpIGNv
bnN0OwogCkBAIC0xODksNyArMjQyLDcgQEAgY2xhc3MgRnJhbWVidWZmZXIgZmluYWwgOiBwdWJs
aWMgTGFiZWxlZE9iamVjdCwgcHVibGljIGFuZ2xlOjpTaWduYWxSZWNlaXZlcgogICAgICAgICAg
ICAgICAgR0xiaXRmaWVsZCBtYXNrLAogICAgICAgICAgICAgICAgR0xlbnVtIGZpbHRlcik7CiAK
LSAgICBlbnVtIERpcnR5Qml0VHlwZQorICAgIGVudW0gRGlydHlCaXRUeXBlIDogdWludDMyX3QK
ICAgICB7CiAgICAgICAgIERJUlRZX0JJVF9DT0xPUl9BVFRBQ0hNRU5UXzAsCiAgICAgICAgIERJ
UlRZX0JJVF9DT0xPUl9BVFRBQ0hNRU5UX01BWCA9CkBAIC0xOTgsMzQgKzI1MSw0OSBAQCBjbGFz
cyBGcmFtZWJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBMYWJlbGVkT2JqZWN0LCBwdWJsaWMgYW5nbGU6
OlNpZ25hbFJlY2VpdmVyCiAgICAgICAgIERJUlRZX0JJVF9TVEVOQ0lMX0FUVEFDSE1FTlQsCiAg
ICAgICAgIERJUlRZX0JJVF9EUkFXX0JVRkZFUlMsCiAgICAgICAgIERJUlRZX0JJVF9SRUFEX0JV
RkZFUiwKKyAgICAgICAgRElSVFlfQklUX0RFRkFVTFRfV0lEVEgsCisgICAgICAgIERJUlRZX0JJ
VF9ERUZBVUxUX0hFSUdIVCwKKyAgICAgICAgRElSVFlfQklUX0RFRkFVTFRfU0FNUExFUywKKyAg
ICAgICAgRElSVFlfQklUX0RFRkFVTFRfRklYRURfU0FNUExFX0xPQ0FUSU9OUywKICAgICAgICAg
RElSVFlfQklUX1VOS05PV04sCi0gICAgICAgIERJUlRZX0JJVF9NQVggPSBESVJUWV9CSVRfVU5L
Tk9XTiwKKyAgICAgICAgRElSVFlfQklUX01BWCA9IERJUlRZX0JJVF9VTktOT1dOCiAgICAgfTsK
IAogICAgIHR5cGVkZWYgc3RkOjpiaXRzZXQ8RElSVFlfQklUX01BWD4gRGlydHlCaXRzOwogICAg
IGJvb2wgaGFzQW55RGlydHlCaXQoKSBjb25zdCB7IHJldHVybiBtRGlydHlCaXRzLmFueSgpOyB9
CiAKLSAgICB2b2lkIHN5bmNTdGF0ZSgpOworICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQpOwogCiAgICAgLy8gYW5nbGU6OlNpZ25hbFJlY2VpdmVyIGltcGxlbWVudGF0
aW9uCi0gICAgdm9pZCBzaWduYWwoYW5nbGU6OlNpZ25hbFRva2VuIHRva2VuKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNpZ25hbCh1aW50MzJfdCB0b2tlbikgb3ZlcnJpZGU7CisKKyAgICBib29sIGZv
cm1zUmVuZGVyaW5nRmVlZGJhY2tMb29wV2l0aChjb25zdCBTdGF0ZSAmc3RhdGUpIGNvbnN0Owor
ICAgIGJvb2wgZm9ybXNDb3B5aW5nRmVlZGJhY2tMb29wV2l0aChHTHVpbnQgY29weVRleHR1cmVJ
RCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29weVRleHR1
cmVMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29w
eVRleHR1cmVMYXllcikgY29uc3Q7CiAKICAgcHJpdmF0ZToKLSAgICB2b2lkIGRldGFjaFJlc291
cmNlQnlJZChHTGVudW0gcmVzb3VyY2VUeXBlLCBHTHVpbnQgcmVzb3VyY2VJZCk7CisgICAgdm9p
ZCBkZXRhY2hSZXNvdXJjZUJ5SWQoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHJlc291
cmNlVHlwZSwgR0x1aW50IHJlc291cmNlSWQpOwogICAgIHZvaWQgZGV0YWNoTWF0Y2hpbmdBdHRh
Y2htZW50KEZyYW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNobWVudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gbWF0Y2hUeXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBtYXRjaElkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBkaXJ0eUJpdCk7Ci0gICAgR0xlbnVtIGNoZWNrU3RhdHVzSW1wbChj
b25zdCBDb250ZXh0U3RhdGUgJnN0YXRlKTsKKyAgICBHTGVudW0gY2hlY2tTdGF0dXNJbXBsKGNv
bnN0IENvbnRleHQgKmNvbnRleHQpOworICAgIHZvaWQgY29tbWl0V2ViR0wxRGVwdGhTdGVuY2ls
SWZDb25zaXN0ZW50KCk7CisKKyAgICB2b2lkIHNldEF0dGFjaG1lbnRJbXBsKEdMZW51bSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJpbmRpbmcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBJbWFnZUluZGV4ICZ0ZXh0dXJlSW5kZXgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3QgKnJlc291cmNl
KTsKIAogICAgIEZyYW1lYnVmZmVyU3RhdGUgbVN0YXRlOwogICAgIHJ4OjpGcmFtZWJ1ZmZlcklt
cGwgKm1JbXBsOwogICAgIEdMdWludCBtSWQ7CiAKICAgICBPcHRpb25hbDxHTGVudW0+IG1DYWNo
ZWRTdGF0dXM7Ci0gICAgc3RkOjp2ZWN0b3I8YW5nbGU6OkNoYW5uZWxCaW5kaW5nPiBtRGlydHlD
b2xvckF0dGFjaG1lbnRCaW5kaW5nczsKLSAgICBhbmdsZTo6Q2hhbm5lbEJpbmRpbmcgbURpcnR5
RGVwdGhBdHRhY2htZW50QmluZGluZzsKLSAgICBhbmdsZTo6Q2hhbm5lbEJpbmRpbmcgbURpcnR5
U3RlbmNpbEF0dGFjaG1lbnRCaW5kaW5nOworICAgIHN0ZDo6dmVjdG9yPE9uQXR0YWNobWVudERp
cnR5QmluZGluZz4gbURpcnR5Q29sb3JBdHRhY2htZW50QmluZGluZ3M7CisgICAgT25BdHRhY2ht
ZW50RGlydHlCaW5kaW5nIG1EaXJ0eURlcHRoQXR0YWNobWVudEJpbmRpbmc7CisgICAgT25BdHRh
Y2htZW50RGlydHlCaW5kaW5nIG1EaXJ0eVN0ZW5jaWxBdHRhY2htZW50QmluZGluZzsKIAogICAg
IERpcnR5Qml0cyBtRGlydHlCaXRzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5jcHAKaW5k
ZXggMzdhZjI1NGYyNDEzMWM5MTA1YzQ4Y2VmZjIxNGUzMWVjYjIyOTM3NS4uZDhlZWU1NTY0YmM0
M2ZkMmNhNjNkYzc5MTY5MTlkZGQ1NmViZTVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5j
cHAKQEAgLTk5LDE3ICs5OSwyMSBAQCB2b2lkIEZyYW1lYnVmZmVyQXR0YWNobWVudDo6YXR0YWNo
KEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJ
bWFnZUluZGV4ICZ0ZXh0dXJlSW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdCAqcmVzb3VyY2UpCiB7CisgICAgaWYgKHJl
c291cmNlID09IG51bGxwdHIpCisgICAgeworICAgICAgICBkZXRhY2goKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIG1UeXBlID0gdHlwZTsKICAgICBtVGFyZ2V0ID0gVGFyZ2V0KGJp
bmRpbmcsIHRleHR1cmVJbmRleCk7CisgICAgcmVzb3VyY2UtPm9uQXR0YWNoKCk7CiAKLSAgICBp
ZiAocmVzb3VyY2UpCi0gICAgewotICAgICAgICByZXNvdXJjZS0+b25BdHRhY2goKTsKLSAgICB9
CiAgICAgaWYgKG1SZXNvdXJjZSAhPSBudWxscHRyKQogICAgIHsKICAgICAgICAgbVJlc291cmNl
LT5vbkRldGFjaCgpOwogICAgIH0KKwogICAgIG1SZXNvdXJjZSA9IHJlc291cmNlOwogfQogCkBA
IC0yMDYsNiArMjEwLDExIEBAIGNvbnN0IGVnbDo6U3VyZmFjZSAqRnJhbWVidWZmZXJBdHRhY2ht
ZW50OjpnZXRTdXJmYWNlKCkgY29uc3QKICAgICByZXR1cm4gcng6OkdldEFzPGVnbDo6U3VyZmFj
ZT4obVJlc291cmNlKTsKIH0KIAorRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0ICpGcmFtZWJ1
ZmZlckF0dGFjaG1lbnQ6OmdldFJlc291cmNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJlc291
cmNlOworfQorCiBib29sIEZyYW1lYnVmZmVyQXR0YWNobWVudDo6b3BlcmF0b3I9PShjb25zdCBG
cmFtZWJ1ZmZlckF0dGFjaG1lbnQgJm90aGVyKSBjb25zdAogewogICAgIGlmIChtUmVzb3VyY2Ug
IT0gb3RoZXIubVJlc291cmNlIHx8IG1UeXBlICE9IG90aGVyLm1UeXBlKQpAQCAtMjMzLDcgKzI0
Miw3IEBAIEVycm9yIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdDo6Z2V0QXR0YWNobWVudFJl
bmRlclRhcmdldCgKICAgICByZXR1cm4gZ2V0QXR0YWNobWVudEltcGwoKS0+Z2V0QXR0YWNobWVu
dFJlbmRlclRhcmdldCh0YXJnZXQsIHJ0T3V0KTsKIH0KIAotYW5nbGU6OkJyb2FkY2FzdENoYW5u
ZWwgKkZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdDo6Z2V0RGlydHlDaGFubmVsKCkKK2FuZ2xl
OjpCcm9hZGNhc3RDaGFubmVsPD4gKkZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdDo6Z2V0RGly
dHlDaGFubmVsKCkKIHsKICAgICByZXR1cm4gJm1EaXJ0eUNoYW5uZWw7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZmZXJBdHRhY2ht
ZW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZmZXJB
dHRhY2htZW50LmgKaW5kZXggNDE1MDI3MzdkZTlkZDM3NDBmMjliYWFlZjU2YjA3YTVjYTM4MDFj
ZS4uNWUyOGZiOTljYjEyNTgxMDZiMTVhYTI2YTQ0YTFlNWU4ZDczNzU3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVu
dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQuaApAQCAtMTI2LDIzICsxMjYsMjMgQEAgY2xhc3MgRnJhbWVidWZmZXJBdHRh
Y2htZW50IGZpbmFsCiAgICAgUmVuZGVyYnVmZmVyICpnZXRSZW5kZXJidWZmZXIoKSBjb25zdDsK
ICAgICBUZXh0dXJlICpnZXRUZXh0dXJlKCkgY29uc3Q7CiAgICAgY29uc3QgZWdsOjpTdXJmYWNl
ICpnZXRTdXJmYWNlKCkgY29uc3Q7CisgICAgRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0ICpn
ZXRSZXNvdXJjZSgpIGNvbnN0OwogCiAgICAgLy8gIlQiIG11c3QgYmUgc3RhdGljX2Nhc3RhYmxl
IGZyb20gRnJhbWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0CiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CiAgICAgZ2w6OkVycm9yIGdldFJlbmRlclRhcmdldChUICoqcnRPdXQpIGNvbnN0
CiAgICAgewotICAgICAgICAvLyBDYXN0IHRocm91Z2ggdGhlIHBvaW50ZXItdG8tcG9pbnRlciB0
eXBlCi0gICAgICAgIHJ4OjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKnJ0UHRy
ID0gbnVsbHB0cjsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0UmVuZGVyVGFyZ2V0KCZy
dFB0cik7Ci0gICAgICAgICpydE91dCA9IHN0YXRpY19jYXN0PFQqPihydFB0cik7Ci0gICAgICAg
IHJldHVybiBlcnJvcjsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Y8cng6
OkZyYW1lYnVmZmVyQXR0YWNobWVudFJlbmRlclRhcmdldCwgVD4oKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAiSW52YWxpZCBSZW5kZXJUYXJnZXQgY2xhc3MuIik7CisgICAgICAgIHJldHVybiBn
ZXRSZW5kZXJUYXJnZXRJbXBsKAorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxyeDo6RnJh
bWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqPihydE91dCkpOwogICAgIH0KIAogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJm90aGVyKSBjb25z
dDsKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICZvdGhl
cikgY29uc3Q7CiAKICAgcHJpdmF0ZToKLSAgICBnbDo6RXJyb3IgZ2V0UmVuZGVyVGFyZ2V0KHJ4
OjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkgY29uc3Q7CisgICAg
Z2w6OkVycm9yIGdldFJlbmRlclRhcmdldEltcGwocng6OkZyYW1lYnVmZmVyQXR0YWNobWVudFJl
bmRlclRhcmdldCAqKnJ0T3V0KSBjb25zdDsKIAogICAgIEdMZW51bSBtVHlwZTsKICAgICBUYXJn
ZXQgbVRhcmdldDsKQEAgLTE2OCwzMSArMTY4LDM2IEBAIGNsYXNzIEZyYW1lYnVmZmVyQXR0YWNo
bWVudE9iamVjdAogICAgIEVycm9yIGdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQoY29uc3QgRnJh
bWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ4OjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipy
dE91dCkgY29uc3Q7CiAKLSAgICBhbmdsZTo6QnJvYWRjYXN0Q2hhbm5lbCAqZ2V0RGlydHlDaGFu
bmVsKCk7CisgICAgYW5nbGU6OkJyb2FkY2FzdENoYW5uZWw8PiAqZ2V0RGlydHlDaGFubmVsKCk7
CiAKICAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgcng6OkZyYW1lYnVmZmVyQXR0YWNobWVudE9i
amVjdEltcGwgKmdldEF0dGFjaG1lbnRJbXBsKCkgY29uc3QgPSAwOwogCi0gICAgYW5nbGU6OkJy
b2FkY2FzdENoYW5uZWwgbURpcnR5Q2hhbm5lbDsKKyAgICBhbmdsZTo6QnJvYWRjYXN0Q2hhbm5l
bDw+IG1EaXJ0eUNoYW5uZWw7CiB9OwogCiBpbmxpbmUgRXh0ZW50cyBGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQ6OmdldFNpemUoKSBjb25zdAogeworICAgIEFTU0VSVChtUmVzb3VyY2UpOwogICAgIHJl
dHVybiBtUmVzb3VyY2UtPmdldEF0dGFjaG1lbnRTaXplKG1UYXJnZXQpOwogfQogCiBpbmxpbmUg
Y29uc3QgRm9ybWF0ICZGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OmdldEZvcm1hdCgpIGNvbnN0CiB7
CisgICAgQVNTRVJUKG1SZXNvdXJjZSk7CiAgICAgcmV0dXJuIG1SZXNvdXJjZS0+Z2V0QXR0YWNo
bWVudEZvcm1hdChtVGFyZ2V0KTsKIH0KIAogaW5saW5lIEdMc2l6ZWkgRnJhbWVidWZmZXJBdHRh
Y2htZW50OjpnZXRTYW1wbGVzKCkgY29uc3QKIHsKKyAgICBBU1NFUlQobVJlc291cmNlKTsKICAg
ICByZXR1cm4gbVJlc291cmNlLT5nZXRBdHRhY2htZW50U2FtcGxlcyhtVGFyZ2V0KTsKIH0KIAot
aW5saW5lIGdsOjpFcnJvciBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OmdldFJlbmRlclRhcmdldChy
eDo6RnJhbWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpIGNvbnN0Citpbmxp
bmUgZ2w6OkVycm9yIEZyYW1lYnVmZmVyQXR0YWNobWVudDo6Z2V0UmVuZGVyVGFyZ2V0SW1wbCgK
KyAgICByeDo6RnJhbWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpIGNvbnN0
CiB7CisgICAgQVNTRVJUKG1SZXNvdXJjZSk7CiAgICAgcmV0dXJuIG1SZXNvdXJjZS0+Z2V0QXR0
YWNobWVudFJlbmRlclRhcmdldChtVGFyZ2V0LCBydE91dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9IYW5kbGVSYW5nZUFsbG9jYXRvci5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxv
Y2F0b3IuY3BwCmluZGV4IDM4MzFhY2ExMzM3NzIwNDEwMmJjMmM3YWNiNTM2ODI0YTQ5MWE5OGQu
LjUwMGE3OTYyOWNkODMzYzQxMTQ0OWRlZDA3MGJmZTdjM2ZlYmJhMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9IYW5kbGVSYW5nZUFsbG9jYXRvci5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdl
QWxsb2NhdG9yLmNwcApAQCAtNDksNyArNDksNiBAQCBHTHVpbnQgSGFuZGxlUmFuZ2VBbGxvY2F0
b3I6OmFsbG9jYXRlQXRPckFib3ZlKEdMdWludCB3YW50ZWQpCiAgICAgfQogCiAgICAgR0x1aW50
IGZpcnN0SWQgPSBjdXJyZW50LT5maXJzdDsKLSAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxF
KGZpcnN0SWQpOwogICAgIEdMdWludCBsYXN0SWQgPSBjdXJyZW50LT5zZWNvbmQ7CiAgICAgQVNT
RVJUKHdhbnRlZCA+PSBmaXJzdElkKTsKIApAQCAtMjIzLDQgKzIyMiw0IEBAIGJvb2wgSGFuZGxl
UmFuZ2VBbGxvY2F0b3I6OmlzVXNlZChHTHVpbnQgaGFuZGxlKSBjb25zdAogICAgIHJldHVybiBj
dXJyZW50LT5zZWNvbmQgPj0gaGFuZGxlOwogfQogCi19ICAvLyBuYW1lc3BhY2UgZ2wKK30gIC8v
IG5hbWVzcGFjZSBnbApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9JbWFnZS5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2UuY3BwCmluZGV4IDgyOGY4NjIzODk1YTdk
ZTQzNGUwYjlhMzIyN2JkODdjYmZlNzNkNDIuLjcxODQ4MGIyYmFiYmE3MTU1YjAyN2EzZDRlNmNh
ZmMxOTkwMTlhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9JbWFnZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L0ltYWdlLmNwcApAQCAtNjUsNyArNjUsNyBAQCBnbDo6RXJyb3IgSW1hZ2VTaWJsaW5nOjpvcnBo
YW5JbWFnZXMoKQogICAgICAgICBtU291cmNlc09mLmNsZWFyKCk7CiAgICAgfQogCi0gICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9
CiAKIHZvaWQgSW1hZ2VTaWJsaW5nOjphZGRJbWFnZVNvdXJjZShlZ2w6OkltYWdlICppbWFnZVNv
dXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9J
bWFnZUluZGV4LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9JbWFn
ZUluZGV4LmNwcAppbmRleCBmNzRjZTE5ZDkwZGRhY2VmMzE3YzZlMGZmNjZjYzExODdjODkyYjFi
Li4yMzE4NTQxZDkyYzQyOTI4ZGQ3YTVmMzg4NWRlZjExNjA2NmFlYTY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2VJbmRleC5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdlSW5kZXguY3BwCkBAIC0x
LDMgKzEsNCBAQAorI2luY2x1ZGUgIkltYWdlSW5kZXguaCIKIC8vCiAvLyBDb3B5cmlnaHQgMjAx
NCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQpAQCAtNjIsNiArNjMsMTEgQEAgSW1hZ2VJbmRleCBJbWFnZUluZGV4OjpNYWtl
R2VuZXJpYyhHTGVudW0gdGFyZ2V0LCBHTGludCBtaXBJbmRleCkKICAgICByZXR1cm4gSW1hZ2VJ
bmRleCh0YXJnZXQsIG1pcEluZGV4LCBsYXllckluZGV4KTsKIH0KIAorSW1hZ2VJbmRleCBJbWFn
ZUluZGV4OjpNYWtlMkRNdWx0aXNhbXBsZSgpCit7CisgICAgcmV0dXJuIEltYWdlSW5kZXgoR0xf
VEVYVFVSRV8yRF9NVUxUSVNBTVBMRSwgMCwgRU5USVJFX0xFVkVMKTsKK30KKwogSW1hZ2VJbmRl
eCBJbWFnZUluZGV4OjpNYWtlSW52YWxpZCgpCiB7CiAgICAgcmV0dXJuIEltYWdlSW5kZXgoR0xf
Tk9ORSwgLTEsIC0xKTsKQEAgLTEwMiwxOCArMTA4LDIxIEBAIEltYWdlSW5kZXg6OkltYWdlSW5k
ZXgoR0xlbnVtIHR5cGVJbiwgR0xpbnQgbWlwSW5kZXhJbiwgR0xpbnQgbGF5ZXJJbmRleEluKQog
SW1hZ2VJbmRleEl0ZXJhdG9yIEltYWdlSW5kZXhJdGVyYXRvcjo6TWFrZTJEKEdMaW50IG1pbk1p
cCwgR0xpbnQgbWF4TWlwKQogewogICAgIHJldHVybiBJbWFnZUluZGV4SXRlcmF0b3IoR0xfVEVY
VFVSRV8yRCwgUmFuZ2U8R0xpbnQ+KG1pbk1pcCwgbWF4TWlwKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJhbmdlPEdMaW50PihJbWFnZUluZGV4OjpFTlRJUkVfTEVWRUwsIEltYWdl
SW5kZXg6OkVOVElSRV9MRVZFTCksIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUmFuZ2U8R0xpbnQ+KEltYWdlSW5kZXg6OkVOVElSRV9MRVZFTCwgSW1hZ2VJbmRleDo6RU5U
SVJFX0xFVkVMKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogfQog
CiBJbWFnZUluZGV4SXRlcmF0b3IgSW1hZ2VJbmRleEl0ZXJhdG9yOjpNYWtlQ3ViZShHTGludCBt
aW5NaXAsIEdMaW50IG1heE1pcCkKIHsKLSAgICByZXR1cm4gSW1hZ2VJbmRleEl0ZXJhdG9yKEdM
X1RFWFRVUkVfQ1VCRV9NQVAsIFJhbmdlPEdMaW50PihtaW5NaXAsIG1heE1pcCksIFJhbmdlPEdM
aW50PigwLCA2KSwgTlVMTCk7CisgICAgcmV0dXJuIEltYWdlSW5kZXhJdGVyYXRvcihHTF9URVhU
VVJFX0NVQkVfTUFQLCBSYW5nZTxHTGludD4obWluTWlwLCBtYXhNaXApLCBSYW5nZTxHTGludD4o
MCwgNiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKIH0KIAogSW1h
Z2VJbmRleEl0ZXJhdG9yIEltYWdlSW5kZXhJdGVyYXRvcjo6TWFrZTNEKEdMaW50IG1pbk1pcCwg
R0xpbnQgbWF4TWlwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IG1pbkxheWVyLCBHTGludCBtYXhMYXllcikKIHsKLSAgICByZXR1cm4gSW1hZ2VJ
bmRleEl0ZXJhdG9yKEdMX1RFWFRVUkVfM0QsIFJhbmdlPEdMaW50PihtaW5NaXAsIG1heE1pcCks
IFJhbmdlPEdMaW50PihtaW5MYXllciwgbWF4TGF5ZXIpLCBOVUxMKTsKKyAgICByZXR1cm4gSW1h
Z2VJbmRleEl0ZXJhdG9yKEdMX1RFWFRVUkVfM0QsIFJhbmdlPEdMaW50PihtaW5NaXAsIG1heE1p
cCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5nZTxHTGludD4obWluTGF5ZXIs
IG1heExheWVyKSwgbnVsbHB0cik7CiB9CiAKIEltYWdlSW5kZXhJdGVyYXRvciBJbWFnZUluZGV4
SXRlcmF0b3I6Ok1ha2UyREFycmF5KEdMaW50IG1pbk1pcCwgR0xpbnQgbWF4TWlwLApAQCAtMTIz
LDYgKzEzMiwxMyBAQCBJbWFnZUluZGV4SXRlcmF0b3IgSW1hZ2VJbmRleEl0ZXJhdG9yOjpNYWtl
MkRBcnJheShHTGludCBtaW5NaXAsIEdMaW50IG1heE1pcCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJhbmdlPEdMaW50PigwLCBJTVBMRU1FTlRBVElPTl9NQVhfMkRfQVJSQVlfVEVY
VFVSRV9MQVlFUlMpLCBsYXllckNvdW50cyk7CiB9CiAKK0ltYWdlSW5kZXhJdGVyYXRvciBJbWFn
ZUluZGV4SXRlcmF0b3I6Ok1ha2UyRE11bHRpc2FtcGxlKCkKK3sKKyAgICByZXR1cm4gSW1hZ2VJ
bmRleEl0ZXJhdG9yKEdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUsIFJhbmdlPEdMaW50PigwLCAw
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlPEdMaW50PihJbWFnZUluZGV4
OjpFTlRJUkVfTEVWRUwsIEltYWdlSW5kZXg6OkVOVElSRV9MRVZFTCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyKTsKK30KKwogSW1hZ2VJbmRleEl0ZXJhdG9yOjpJbWFn
ZUluZGV4SXRlcmF0b3IoR0xlbnVtIHR5cGUsIGNvbnN0IFJhbmdlPEdMaW50PiAmbWlwUmFuZ2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSYW5nZTxHTGlu
dD4gJmxheWVyUmFuZ2UsIGNvbnN0IEdMc2l6ZWkgKmxheWVyQ291bnRzKQogICAgIDogbVR5cGUo
dHlwZSksCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
SW1hZ2VJbmRleC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdl
SW5kZXguaAppbmRleCA1OTYxZjBjYjA0NjkyYzlmMDAwMTNhMWE3NGIwZTZkZTJhNWY0ZWUwLi41
OTkyNzg0NDUyYzk5NDBkMWUzNWIyMDQzMmYwYTE0MTIwNzRlMTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2VJbmRleC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9JbWFnZUluZGV4LmgKQEAgLTM1LDYgKzM1
LDcgQEAgc3RydWN0IEltYWdlSW5kZXgKICAgICBzdGF0aWMgSW1hZ2VJbmRleCBNYWtlMkRBcnJh
eShHTGludCBtaXBJbmRleCwgR0xpbnQgbGF5ZXJJbmRleCk7CiAgICAgc3RhdGljIEltYWdlSW5k
ZXggTWFrZTNEKEdMaW50IG1pcEluZGV4LCBHTGludCBsYXllckluZGV4ID0gRU5USVJFX0xFVkVM
KTsKICAgICBzdGF0aWMgSW1hZ2VJbmRleCBNYWtlR2VuZXJpYyhHTGVudW0gdGFyZ2V0LCBHTGlu
dCBtaXBJbmRleCk7CisgICAgc3RhdGljIEltYWdlSW5kZXggTWFrZTJETXVsdGlzYW1wbGUoKTsK
IAogICAgIHN0YXRpYyBJbWFnZUluZGV4IE1ha2VJbnZhbGlkKCk7CiAKQEAgLTU3LDYgKzU4LDcg
QEAgY2xhc3MgSW1hZ2VJbmRleEl0ZXJhdG9yCiAgICAgc3RhdGljIEltYWdlSW5kZXhJdGVyYXRv
ciBNYWtlQ3ViZShHTGludCBtaW5NaXAsIEdMaW50IG1heE1pcCk7CiAgICAgc3RhdGljIEltYWdl
SW5kZXhJdGVyYXRvciBNYWtlM0QoR0xpbnQgbWluTWlwLCBHTGludCBtYXhNaXAsIEdMaW50IG1p
bkxheWVyLCBHTGludCBtYXhMYXllcik7CiAgICAgc3RhdGljIEltYWdlSW5kZXhJdGVyYXRvciBN
YWtlMkRBcnJheShHTGludCBtaW5NaXAsIEdMaW50IG1heE1pcCwgY29uc3QgR0xzaXplaSAqbGF5
ZXJDb3VudHMpOworICAgIHN0YXRpYyBJbWFnZUluZGV4SXRlcmF0b3IgTWFrZTJETXVsdGlzYW1w
bGUoKTsKIAogICAgIEltYWdlSW5kZXggbmV4dCgpOwogICAgIEltYWdlSW5kZXggY3VycmVudCgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L0ltYWdlX3VuaXR0ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9JbWFnZV91bml0dGVzdC5jcHAKaW5kZXggMDk3OGFjNjc4NDBkYzJiOGRhYjYzZGM4NTk1MjRl
OTcwYjc2YTdmZC4uMWI4NDNiZTRmMGUwMmJlMjQ4OGVmM2JlMGFhNzk2YWI2OGZlOGM4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdlX3VuaXR0
ZXN0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2Vf
dW5pdHRlc3QuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFRFU1QoSW1hZ2VUZXN0LCBSZWZDb3VudGlu
ZykKICAgICByZW5kZXJidWZmZXItPmFkZFJlZigpOwogCiAgICAgRVhQRUNUX0NBTEwoKnJlbmRl
cmJ1ZmZlckltcGwsIHNldFN0b3JhZ2VFR0xJbWFnZVRhcmdldChfKSkKLSAgICAgICAgLldpbGxP
bmNlKFJldHVybihnbDo6RXJyb3IoR0xfTk9fRVJST1IpKSkKKyAgICAgICAgLldpbGxPbmNlKFJl
dHVybihnbDo6Tm9FcnJvcigpKSkKICAgICAgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKICAg
ICByZW5kZXJidWZmZXItPnNldFN0b3JhZ2VFR0xJbWFnZVRhcmdldChpbWFnZSk7CiAKQEAgLTcz
LDkgKzczLDcgQEAgVEVTVChJbWFnZVRlc3QsIFJlZkNvdW50aW5nKQogCiAgICAgLy8gU2ltdWxh
dGUgZGVsZXRpb24gb2YgdGhlIHJlbmRlcmJ1ZmZlciBhbmQgdmVyaWZ5IHRoYXQgdGhlIGRlbGV0
aW9uIGNhc2NhZGVzIHRvIGFsbCBvYmplY3RzCiAgICAgRVhQRUNUX0NBTEwoKmltYWdlSW1wbCwg
ZGVzdHJ1Y3RvcigpKS5UaW1lcygxKS5SZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci0gICAgRVhQRUNU
X0NBTEwoKmltYWdlSW1wbCwgb3JwaGFuKF8pKQotICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKGds
OjpFcnJvcihHTF9OT19FUlJPUikpKQotICAgICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOwor
ICAgIEVYUEVDVF9DQUxMKCppbWFnZUltcGwsIG9ycGhhbihfKSkuV2lsbE9uY2UoUmV0dXJuKGds
OjpOb0Vycm9yKCkpKS5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CiAKICAgICBFWFBFQ1RfQ0FMTCgq
dGV4dHVyZUltcGwsIGRlc3RydWN0b3IoKSkuVGltZXMoMSkuUmV0aXJlc09uU2F0dXJhdGlvbigp
OwogICAgIEVYUEVDVF9DQUxMKCpyZW5kZXJidWZmZXJJbXBsLCBkZXN0cnVjdG9yKCkpLlRpbWVz
KDEpLlJldGlyZXNPblNhdHVyYXRpb24oKTsKQEAgLTk1LDExICs5MywxMSBAQCBURVNUKEltYWdl
VGVzdCwgUmVzcGVjaWZpY2F0aW9uUmVsZWFzZXNSZWZlcmVuY2VzKQogCiAgICAgZ2w6OlBpeGVs
VW5wYWNrU3RhdGUgZGVmYXVsdFVucGFja1N0YXRlOwogCi0gICAgRVhQRUNUX0NBTEwoKnRleHR1
cmVJbXBsLCBzZXRJbWFnZShfLCBfLCBfLCBfLCBfLCBfLCBfLCBfKSkKLSAgICAgICAgLldpbGxP
bmNlKFJldHVybihnbDo6RXJyb3IoR0xfTk9fRVJST1IpKSkKKyAgICBFWFBFQ1RfQ0FMTCgqdGV4
dHVyZUltcGwsIHNldEltYWdlKF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8sIF8pKQorICAgICAgICAu
V2lsbE9uY2UoUmV0dXJuKGdsOjpOb0Vycm9yKCkpKQogICAgICAgICAuUmV0aXJlc09uU2F0dXJh
dGlvbigpOwotICAgIHRleHR1cmUtPnNldEltYWdlKGRlZmF1bHRVbnBhY2tTdGF0ZSwgR0xfVEVY
VFVSRV8yRCwgMCwgR0xfUkdCQTgsIGdsOjpFeHRlbnRzKDEsIDEsIDEpLCBHTF9SR0JBLAotICAg
ICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOworICAgIHRleHR1
cmUtPnNldEltYWdlKG51bGxwdHIsIGRlZmF1bHRVbnBhY2tTdGF0ZSwgR0xfVEVYVFVSRV8yRCwg
MCwgR0xfUkdCQTgsIGdsOjpFeHRlbnRzKDEsIDEsIDEpLAorICAgICAgICAgICAgICAgICAgICAg
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwogCiAgICAgcng6Ok1vY2tJbWFn
ZUltcGwgKmltYWdlSW1wbCA9IG5ldyByeDo6TW9ja0ltYWdlSW1wbCgpOwogICAgIGVnbDo6SW1h
Z2UgKmltYWdlID0gbmV3IGVnbDo6SW1hZ2UoaW1hZ2VJbXBsLCBFR0xfR0xfVEVYVFVSRV8yRCwg
dGV4dHVyZSwgZWdsOjpBdHRyaWJ1dGVNYXAoKSk7CkBAIC0xMTEsMTUgKzEwOSwxMyBAQCBURVNU
KEltYWdlVGVzdCwgUmVzcGVjaWZpY2F0aW9uUmVsZWFzZXNSZWZlcmVuY2VzKQogICAgIEVYUEVD
VF9FUShpbWFnZS0+Z2V0UmVmQ291bnQoKSwgMXUpOwogCiAgICAgLy8gUmVzcGVjaWZ5IHRoZSB0
ZXh0dXJlIGFuZCB2ZXJpZnkgdGhhdCB0aGUgaW1hZ2UgcmVsZWFzZXMgaXRzIHJlZmVyZW5jZQot
ICAgIEVYUEVDVF9DQUxMKCppbWFnZUltcGwsIG9ycGhhbihfKSkKLSAgICAgICAgLldpbGxPbmNl
KFJldHVybihnbDo6RXJyb3IoR0xfTk9fRVJST1IpKSkKLSAgICAgICAgLlJldGlyZXNPblNhdHVy
YXRpb24oKTsKLSAgICBFWFBFQ1RfQ0FMTCgqdGV4dHVyZUltcGwsIHNldEltYWdlKF8sIF8sIF8s
IF8sIF8sIF8sIF8sIF8pKQotICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKGdsOjpFcnJvcihHTF9O
T19FUlJPUikpKQorICAgIEVYUEVDVF9DQUxMKCppbWFnZUltcGwsIG9ycGhhbihfKSkuV2lsbE9u
Y2UoUmV0dXJuKGdsOjpOb0Vycm9yKCkpKS5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CisgICAgRVhQ
RUNUX0NBTEwoKnRleHR1cmVJbXBsLCBzZXRJbWFnZShfLCBfLCBfLCBfLCBfLCBfLCBfLCBfLCBf
KSkKKyAgICAgICAgLldpbGxPbmNlKFJldHVybihnbDo6Tm9FcnJvcigpKSkKICAgICAgICAgLlJl
dGlyZXNPblNhdHVyYXRpb24oKTsKIAotICAgIHRleHR1cmUtPnNldEltYWdlKGRlZmF1bHRVbnBh
Y2tTdGF0ZSwgR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTgsIGdsOjpFeHRlbnRzKDEsIDEsIDEp
LCBHTF9SR0JBLAotICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxw
dHIpOworICAgIHRleHR1cmUtPnNldEltYWdlKG51bGxwdHIsIGRlZmF1bHRVbnBhY2tTdGF0ZSwg
R0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTgsIGdsOjpFeHRlbnRzKDEsIDEsIDEpLAorICAgICAg
ICAgICAgICAgICAgICAgIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwogCiAg
ICAgRVhQRUNUX0VRKHRleHR1cmUtPmdldFJlZkNvdW50KCksIDF1KTsKICAgICBFWFBFQ1RfRVEo
aW1hZ2UtPmdldFJlZkNvdW50KCksIDF1KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9Mb2dnaW5nQW5ub3RhdG9yLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Mb2dnaW5nQW5ub3RhdG9yLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
YTc5Y2UwNzY5NjU2YzE2MDkxYjgwMmEwMmJjZGY4ZmQzNDg5OGY5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0xvZ2dpbmdBbm5vdGF0b3Iu
Y3BwCkBAIC0wLDAgKzEsMzkgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBMb2dnaW5nQW5ub3RhdG9yLmNwcDog
RGVidWdBbm5vdGF0b3IgaW1wbGVtZW50aW5nIGxvZ2dpbmcKKy8vCisKKyNpbmNsdWRlICJsaWJB
TkdMRS9Mb2dnaW5nQW5ub3RhdG9yLmgiCisKKyNpbmNsdWRlIDxwbGF0Zm9ybS9QbGF0Zm9ybS5o
PgorCituYW1lc3BhY2UgYW5nbGUKK3sKKwordm9pZCBMb2dnaW5nQW5ub3RhdG9yOjpsb2dNZXNz
YWdlKGNvbnN0IGdsOjpMb2dNZXNzYWdlICZtc2cpIGNvbnN0Cit7CisgICAgYXV0byAqcGxhdCA9
IEFOR0xFUGxhdGZvcm1DdXJyZW50KCk7CisgICAgaWYgKHBsYXQgIT0gbnVsbHB0cikKKyAgICB7
CisgICAgICAgIHN3aXRjaCAobXNnLmdldFNldmVyaXR5KCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNhc2UgZ2w6OkxPR19FUlI6CisgICAgICAgICAgICAgICAgcGxhdC0+bG9nRXJyb3IocGxh
dCwgbXNnLmdldE1lc3NhZ2UoKS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgZ2w6OkxPR19XQVJOOgorICAgICAgICAgICAgICAgIHBsYXQtPmxvZ1dh
cm5pbmcocGxhdCwgbXNnLmdldE1lc3NhZ2UoKS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBnbDo6VHJhY2Uo
bXNnLmdldFNldmVyaXR5KCksIG1zZy5nZXRNZXNzYWdlKCkuY19zdHIoKSk7CisgICAgfQorfQor
Cit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9Mb2dnaW5nQW5ub3RhdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvTG9nZ2luZ0Fubm90YXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2MTdkZDVi
MDJlOTQ3YWU0OWUyODdkMzQ1MGU2MWVhYzFmMjYwMTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvTG9nZ2luZ0Fubm90YXRvci5oCkBAIC0w
LDAgKzEsMzEgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBMb2dnaW5nQW5ub3RhdG9yLmg6IERlYnVnQW5ub3Rh
dG9yIGltcGxlbWVudGluZyBsb2dnaW5nCisvLworCisjaWZuZGVmIExJQkFOR0xFX0xPR0dJTkdB
Tk5PVEFUT1JfSF8KKyNkZWZpbmUgTElCQU5HTEVfTE9HR0lOR0FOTk9UQVRPUl9IXworCisjaW5j
bHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSBhbmdsZQoreworCitjbGFzcyBMb2dn
aW5nQW5ub3RhdG9yIDogcHVibGljIGdsOjpEZWJ1Z0Fubm90YXRvcgoreworICBwdWJsaWM6Cisg
ICAgTG9nZ2luZ0Fubm90YXRvcigpe307CisgICAgfkxvZ2dpbmdBbm5vdGF0b3IoKSBvdmVycmlk
ZXt9OworICAgIHZvaWQgYmVnaW5FdmVudChjb25zdCB3Y2hhcl90ICpldmVudE5hbWUpIG92ZXJy
aWRlIHt9CisgICAgdm9pZCBlbmRFdmVudCgpIG92ZXJyaWRlIHt9CisgICAgdm9pZCBzZXRNYXJr
ZXIoY29uc3Qgd2NoYXJfdCAqbWFya2VyTmFtZSkgb3ZlcnJpZGUge30KKyAgICBib29sIGdldFN0
YXR1cygpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBsb2dNZXNzYWdlKGNv
bnN0IGdsOjpMb2dNZXNzYWdlICZtc2cpIGNvbnN0IG92ZXJyaWRlOworfTsKKworfSAgLy8gbmFt
ZXNwYWNlIGFuZ2xlCisKKyNlbmRpZiAgLy8gTElCQU5HTEVfTE9HR0lOR0FOTk9UQVRPUl9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1BhdGguaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9QYXRoLmgKaW5kZXggODVmNDlj
MTU2MjJmNDIwNDdiMmRmN2ZhZjRmZDBkZjY4ZGRjNjcxOS4uYjEwM2M4NDYwNzA1ZTBkYjA1NzI2
YjUzY2QxN2JhZWFjZTNmZGIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL1BhdGguaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvUGF0aC5oCkBAIC02OCw0ICs2OCw0IEBAIGNsYXNzIFBhdGggZmluYWwgOiBhbmdsZTo6
Tm9uQ29weWFibGUKIAogfSAgLy8gbmFtZXNwYWNlIGdsCiAKLSNlbmRpZiAgLy8gTElCQU5HTEVf
UEFUSF9IXworI2VuZGlmICAvLyBMSUJBTkdMRV9QQVRIX0hfClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L1BsYXRmb3JtLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9QbGF0
Zm9ybS5jcHAKaW5kZXggYmZjZGIxNDk0ZWE4MWZiZGM4ZmQzMzIzNTM3NWEwOGVkNTcwMGQ4Yi4u
NmNiYmQxZTgwZGQxNTZmMDUyNzUxMWQ2NDFmZjJjYjg3MjY4YjEwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1BsYXRmb3JtLmNwcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUGxhdGZvcm0uY3BwCkBAIC04LDI4ICs4
LDU4IEBACiAKICNpbmNsdWRlIDxwbGF0Zm9ybS9QbGF0Zm9ybS5oPgogCisjaW5jbHVkZSA8Y3N0
cmluZz4KKwogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogCiBuYW1lc3BhY2UKIHsKLWFuZ2xl
OjpQbGF0Zm9ybSAqY3VycmVudFBsYXRmb3JtID0gbnVsbHB0cjsKLX0KKy8vIFRPRE8oam1hZGls
bCk6IE1ha2UgbWV0aG9kcyBvd25lZCBieSBlZ2w6OkRpc3BsYXkuCithbmdsZTo6UGxhdGZvcm1N
ZXRob2RzIGdfcGxhdGZvcm1NZXRob2RzOworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi0v
LyBzdGF0aWMKLWFuZ2xlOjpQbGF0Zm9ybSAqQU5HTEVfQVBJRU5UUlkgQU5HTEVQbGF0Zm9ybUN1
cnJlbnQoKQorYW5nbGU6OlBsYXRmb3JtTWV0aG9kcyAqQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKQog
ewotICAgIHJldHVybiBjdXJyZW50UGxhdGZvcm07CisgICAgcmV0dXJuICZnX3BsYXRmb3JtTWV0
aG9kczsKIH0KIAotLy8gc3RhdGljCi12b2lkIEFOR0xFX0FQSUVOVFJZIEFOR0xFUGxhdGZvcm1J
bml0aWFsaXplKGFuZ2xlOjpQbGF0Zm9ybSAqcGxhdGZvcm1JbXBsKQorYm9vbCBBTkdMRV9BUElF
TlRSWSBBTkdMRUdldERpc3BsYXlQbGF0Zm9ybShhbmdsZTo6RUdMRGlzcGxheVR5cGUgZGlzcGxh
eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqY29uc3QgbWV0aG9kTmFtZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IG1ldGhvZE5hbWVDb3VudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcGxhdGZvcm1NZXRob2RzKQog
ewotICAgIEFTU0VSVChwbGF0Zm9ybUltcGwgIT0gbnVsbHB0cik7Ci0gICAgY3VycmVudFBsYXRm
b3JtID0gcGxhdGZvcm1JbXBsOworICAgIGFuZ2xlOjpQbGF0Zm9ybU1ldGhvZHMgKipwbGF0Zm9y
bU1ldGhvZHNPdXQgPQorICAgICAgICByZWludGVycHJldF9jYXN0PGFuZ2xlOjpQbGF0Zm9ybU1l
dGhvZHMgKio+KHBsYXRmb3JtTWV0aG9kcyk7CisKKyAgICAvLyBXZSBhbGxvdyBmb3IgYSBsb3dl
ciBpbnB1dCBjb3VudCBvZiBpbXBsIHBsYXRmb3JtIG1ldGhvZHMgaWYgdGhlIHN1YnNldCBpcyBj
b3JyZWN0LgorICAgIGlmIChtZXRob2ROYW1lQ291bnQgPiBhbmdsZTo6Z19OdW1QbGF0Zm9ybU1l
dGhvZHMpCisgICAgeworICAgICAgICBFUlIoKSA8PCAiSW52YWxpZCBwbGF0Zm9ybSBtZXRob2Qg
Y291bnQ6ICIgPDwgbWV0aG9kTmFtZUNvdW50IDw8ICIsIGV4cGVjdGVkICIKKyAgICAgICAgICAg
ICAgPDwgYW5nbGU6OmdfTnVtUGxhdGZvcm1NZXRob2RzIDw8ICIuIjsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIGZvciAodW5zaWduZWQgaW50IG5hbWVJbmRleCA9IDA7IG5h
bWVJbmRleCA8IG1ldGhvZE5hbWVDb3VudDsgKytuYW1lSW5kZXgpCisgICAgeworICAgICAgICBj
b25zdCBjaGFyICpleHBlY3RlZE5hbWUgPSBhbmdsZTo6Z19QbGF0Zm9ybU1ldGhvZE5hbWVzW25h
bWVJbmRleF07CisgICAgICAgIGNvbnN0IGNoYXIgKmFjdHVhbE5hbWUgICA9IG1ldGhvZE5hbWVz
W25hbWVJbmRleF07CisgICAgICAgIGlmIChzdHJjbXAoZXhwZWN0ZWROYW1lLCBhY3R1YWxOYW1l
KSAhPSAwKQorICAgICAgICB7CisgICAgICAgICAgICBFUlIoKSA8PCAiSW52YWxpZCBwbGF0Zm9y
bSBtZXRob2QgbmFtZTogIiA8PCBhY3R1YWxOYW1lIDw8ICIsIGV4cGVjdGVkICIgPDwgZXhwZWN0
ZWROYW1lCisgICAgICAgICAgICAgICAgICA8PCAiLiI7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBTdG9yZSBwbGF0
Zm9ybSBtZXRob2RzIGluIGRpc3BsYXkuCisgICAgZ19wbGF0Zm9ybU1ldGhvZHMuY29udGV4dCA9
IGNvbnRleHQ7CisgICAgKnBsYXRmb3JtTWV0aG9kc091dCAgICAgICA9ICZnX3BsYXRmb3JtTWV0
aG9kczsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLy8gc3RhdGljCi12b2lkIEFOR0xFX0FQSUVO
VFJZIEFOR0xFUGxhdGZvcm1TaHV0ZG93bigpCit2b2lkIEFOR0xFX0FQSUVOVFJZIEFOR0xFUmVz
ZXREaXNwbGF5UGxhdGZvcm0oYW5nbGU6OkVHTERpc3BsYXlUeXBlIGRpc3BsYXkpCiB7Ci0gICAg
Y3VycmVudFBsYXRmb3JtID0gbnVsbHB0cjsKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBTdG9yZSBw
bGF0Zm9ybSBtZXRob2RzIGluIGRpc3BsYXkuCisgICAgZ19wbGF0Zm9ybU1ldGhvZHMgPSBhbmds
ZTo6UGxhdGZvcm1NZXRob2RzKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvUHJvZ3JhbS5jcHAKaW5kZXggMzYyOWYwNWU3ZjRkNzMxYzhmNjRlZTAxYzUy
N2IxMjc5ZDNhNTcwOS4uMjY4MDc0MWQxNDZlNGZkNGNhZmJjYzdjOWUyYWY2M2ZlN2IyMjVkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dyYW0u
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Qcm9ncmFtLmNw
cApAQCAtMTEsMTkgKzExLDIxIEBACiAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKLSNpbmNsdWRl
ICJjb21tb24vQml0U2V0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJjb21tb24vYml0c2V0X3V0aWxz
LmgiCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCiAjaW5jbHVkZSAiY29tbW9uL3BsYXRmb3Jt
LmgiCiAjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgogI2luY2x1ZGUgImNvbW1vbi92ZXJz
aW9uLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91dC5oIgotI2lu
Y2x1ZGUgImxpYkFOR0xFL0NvbnRleHRTdGF0ZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRl
eHQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9mZWF0dXJlcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0dMSW1wbEZh
Y3RvcnkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbC5oIgorI2lu
Y2x1ZGUgImxpYkFOR0xFL1ZhcnlpbmdQYWNraW5nLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcXVl
cnljb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1VuaWZvcm0uaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9Vbmlmb3JtTGlua2VyLmgiCiAKIG5hbWVzcGFjZSBnbAogewpAQCAtMTI0LDE0
ICsxMjYsOTEgQEAgdm9pZCBVbmlmb3JtU3RhdGVRdWVyeUNhc3RMb29wKERlc3RUICpkYXRhT3V0
LCBjb25zdCB1aW50OF90ICpzcmNQb2ludGVyLCBpbnQgY28KICAgICB9CiB9CiAKLWJvb2wgVW5p
Zm9ybUluTGlzdChjb25zdCBzdGQ6OnZlY3RvcjxMaW5rZWRVbmlmb3JtPiAmbGlzdCwgY29uc3Qg
c3RkOjpzdHJpbmcgJm5hbWUpCisvLyB0cnVlIGlmIHZhcnlpbmcgeCBoYXMgYSBoaWdoZXIgcHJp
b3JpdHkgaW4gcGFja2luZyB0aGFuIHkKK2Jvb2wgQ29tcGFyZVBhY2tlZFZhcnlpbmcoY29uc3Qg
UGFja2VkVmFyeWluZyAmeCwgY29uc3QgUGFja2VkVmFyeWluZyAmeSkKIHsKLSAgICBmb3IgKGNv
bnN0IExpbmtlZFVuaWZvcm0gJnVuaWZvcm0gOiBsaXN0KQorICAgIC8vIElmIHRoZSBQYWNrZWRW
YXJ5aW5nICd4JyBvciAneScgdG8gYmUgY29tcGFyZWQgaXMgYW4gYXJyYXkgZWxlbWVudCwgdGhp
cyBjbG9uZXMgYW4gZXF1aXZhbGVudAorICAgIC8vIG5vbi1hcnJheSBzaGFkZXIgdmFyaWFibGUg
J3Z4JyBvciAndnknIGZvciBhY3R1YWwgY29tcGFyaXNvbiBpbnN0ZWFkLgorICAgIHNoOjpTaGFk
ZXJWYXJpYWJsZSB2eCwgdnk7CisgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICpweCwgKnB5
OworICAgIGlmICh4LmlzQXJyYXlFbGVtZW50KCkpCiAgICAgewotICAgICAgICBpZiAodW5pZm9y
bS5uYW1lID09IG5hbWUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgdnggICAg
ICAgICAgID0gKngudmFyeWluZzsKKyAgICAgICAgdnguYXJyYXlTaXplID0gMDsKKyAgICAgICAg
cHggICAgICAgICAgID0gJnZ4OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBweCA9
IHgudmFyeWluZzsKKyAgICB9CisKKyAgICBpZiAoeS5pc0FycmF5RWxlbWVudCgpKQorICAgIHsK
KyAgICAgICAgdnkgICAgICAgICAgID0gKnkudmFyeWluZzsKKyAgICAgICAgdnkuYXJyYXlTaXpl
ID0gMDsKKyAgICAgICAgcHkgICAgICAgICAgID0gJnZ5OworICAgIH0KKyAgICBlbHNlCisgICAg
eworICAgICAgICBweSA9IHkudmFyeWluZzsKKyAgICB9CisKKyAgICByZXR1cm4gZ2w6OkNvbXBh
cmVTaGFkZXJWYXIoKnB4LCAqcHkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFyVD4KK0dM
dWludCBHZXRSZXNvdXJjZUluZGV4RnJvbU5hbWUoY29uc3Qgc3RkOjp2ZWN0b3I8VmFyVD4gJmxp
c3QsIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKQoreworICAgIHNpemVfdCBzdWJzY3JpcHQgICAg
ID0gR0xfSU5WQUxJRF9JTkRFWDsKKyAgICBzdGQ6OnN0cmluZyBiYXNlTmFtZSA9IFBhcnNlUmVz
b3VyY2VOYW1lKG5hbWUsICZzdWJzY3JpcHQpOworCisgICAgLy8gVGhlIGFwcCBpcyBub3QgYWxs
b3dlZCB0byBzcGVjaWZ5IGFycmF5IGluZGljZXMgb3RoZXIgdGhhbiAwIGZvciBhcnJheXMgb2Yg
YmFzaWMgdHlwZXMKKyAgICBpZiAoc3Vic2NyaXB0ICE9IDAgJiYgc3Vic2NyaXB0ICE9IEdMX0lO
VkFMSURfSU5ERVgpCisgICAgeworICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9JTkRFWDsKKyAg
ICB9CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbGlzdC5zaXplKCk7IGlu
ZGV4KyspCisgICAgeworICAgICAgICBjb25zdCBWYXJUICZyZXNvdXJjZSA9IGxpc3RbaW5kZXhd
OworICAgICAgICBpZiAocmVzb3VyY2UubmFtZSA9PSBiYXNlTmFtZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKHJlc291cmNlLmlzQXJyYXkoKSB8fCBzdWJzY3JpcHQgPT0gR0xfSU5WQUxJ
RF9JTkRFWCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8R0x1aW50PihpbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gR0xfSU5WQUxJRF9JTkRFWDsKK30KKwordm9pZCBDb3B5U3RyaW5nVG9CdWZmZXIo
R0xjaGFyICpidWZmZXIsIGNvbnN0IHN0ZDo6c3RyaW5nICZzdHJpbmcsIEdMc2l6ZWkgYnVmU2l6
ZSwgR0xzaXplaSAqbGVuZ3RoKQoreworICAgIEFTU0VSVChidWZTaXplID4gMCk7CisgICAgc3Ry
bmNweShidWZmZXIsIHN0cmluZy5jX3N0cigpLCBidWZTaXplKTsKKyAgICBidWZmZXJbYnVmU2l6
ZSAtIDFdID0gJ1wwJzsKKworICAgIGlmIChsZW5ndGgpCisgICAgeworICAgICAgICAqbGVuZ3Ro
ID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4oc3RybGVuKGJ1ZmZlcikpOwogICAgIH0KK30KIAorYm9v
bCBJbmNsdWRlU2FtZUFycmF5RWxlbWVudChjb25zdCBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gJm5h
bWVTZXQsIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKQoreworICAgIHNpemVfdCBzdWJzY3JpcHQg
ICAgID0gR0xfSU5WQUxJRF9JTkRFWDsKKyAgICBzdGQ6OnN0cmluZyBiYXNlTmFtZSA9IFBhcnNl
UmVzb3VyY2VOYW1lKG5hbWUsICZzdWJzY3JpcHQpOworICAgIGZvciAoYXV0byBpdCA9IG5hbWVT
ZXQuYmVnaW4oKTsgaXQgIT0gbmFtZVNldC5lbmQoKTsgKytpdCkKKyAgICB7CisgICAgICAgIHNp
emVfdCBhcnJheUluZGV4ICAgICA9IEdMX0lOVkFMSURfSU5ERVg7CisgICAgICAgIHN0ZDo6c3Ry
aW5nIGFycmF5TmFtZSA9IFBhcnNlUmVzb3VyY2VOYW1lKCppdCwgJmFycmF5SW5kZXgpOworICAg
ICAgICBpZiAoYmFzZU5hbWUgPT0gYXJyYXlOYW1lICYmIChzdWJzY3JpcHQgPT0gR0xfSU5WQUxJ
RF9JTkRFWCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheUlu
ZGV4ID09IEdMX0lOVkFMSURfSU5ERVggfHwgc3Vic2NyaXB0ID09IGFycmF5SW5kZXgpKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTIzOSw2ICszMTgsNyBAQCBQcm9ncmFtU3RhdGU6OlByb2dy
YW1TdGF0ZSgpCiAgICAgICBtQXR0YWNoZWRWZXJ0ZXhTaGFkZXIobnVsbHB0ciksCiAgICAgICBt
QXR0YWNoZWRDb21wdXRlU2hhZGVyKG51bGxwdHIpLAogICAgICAgbVRyYW5zZm9ybUZlZWRiYWNr
QnVmZmVyTW9kZShHTF9JTlRFUkxFQVZFRF9BVFRSSUJTKSwKKyAgICAgIG1TYW1wbGVyVW5pZm9y
bVJhbmdlKDAsIDApLAogICAgICAgbUJpbmFyeVJldHJpZXZlYWJsZUhpbnQoZmFsc2UpCiB7CiAg
ICAgbUNvbXB1dGVTaGFkZXJMb2NhbFNpemUuZmlsbCgxKTsKQEAgLTI0NiwyMCArMzI2LDcgQEAg
UHJvZ3JhbVN0YXRlOjpQcm9ncmFtU3RhdGUoKQogCiBQcm9ncmFtU3RhdGU6On5Qcm9ncmFtU3Rh
dGUoKQogewotICAgIGlmIChtQXR0YWNoZWRWZXJ0ZXhTaGFkZXIgIT0gbnVsbHB0cikKLSAgICB7
Ci0gICAgICAgIG1BdHRhY2hlZFZlcnRleFNoYWRlci0+cmVsZWFzZSgpOwotICAgIH0KLQotICAg
IGlmIChtQXR0YWNoZWRGcmFnbWVudFNoYWRlciAhPSBudWxscHRyKQotICAgIHsKLSAgICAgICAg
bUF0dGFjaGVkRnJhZ21lbnRTaGFkZXItPnJlbGVhc2UoKTsKLSAgICB9Ci0KLSAgICBpZiAobUF0
dGFjaGVkQ29tcHV0ZVNoYWRlciAhPSBudWxscHRyKQotICAgIHsKLSAgICAgICAgbUF0dGFjaGVk
Q29tcHV0ZVNoYWRlci0+cmVsZWFzZSgpOwotICAgIH0KKyAgICBBU1NFUlQoIW1BdHRhY2hlZFZl
cnRleFNoYWRlciAmJiAhbUF0dGFjaGVkRnJhZ21lbnRTaGFkZXIgJiYgIW1BdHRhY2hlZENvbXB1
dGVTaGFkZXIpOwogfQogCiBjb25zdCBzdGQ6OnN0cmluZyAmUHJvZ3JhbVN0YXRlOjpnZXRMYWJl
bCgpCkBAIC0yNjcsMjMgKzMzNCwxMCBAQCBjb25zdCBzdGQ6OnN0cmluZyAmUHJvZ3JhbVN0YXRl
OjpnZXRMYWJlbCgpCiAgICAgcmV0dXJuIG1MYWJlbDsKIH0KIAotY29uc3QgTGlua2VkVW5pZm9y
bSAqUHJvZ3JhbVN0YXRlOjpnZXRVbmlmb3JtQnlOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1l
KSBjb25zdAotewotICAgIGZvciAoY29uc3QgTGlua2VkVW5pZm9ybSAmbGlua2VkVW5pZm9ybSA6
IG1Vbmlmb3JtcykKLSAgICB7Ci0gICAgICAgIGlmIChsaW5rZWRVbmlmb3JtLm5hbWUgPT0gbmFt
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICZsaW5rZWRVbmlmb3JtOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KIEdMaW50IFByb2dyYW1TdGF0
ZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdAogewog
ICAgIHNpemVfdCBzdWJzY3JpcHQgICAgID0gR0xfSU5WQUxJRF9JTkRFWDsKLSAgICBzdGQ6OnN0
cmluZyBiYXNlTmFtZSA9IGdsOjpQYXJzZVVuaWZvcm1OYW1lKG5hbWUsICZzdWJzY3JpcHQpOwor
ICAgIHN0ZDo6c3RyaW5nIGJhc2VOYW1lID0gUGFyc2VSZXNvdXJjZU5hbWUobmFtZSwgJnN1YnNj
cmlwdCk7CiAKICAgICBmb3IgKHNpemVfdCBsb2NhdGlvbiA9IDA7IGxvY2F0aW9uIDwgbVVuaWZv
cm1Mb2NhdGlvbnMuc2l6ZSgpOyArK2xvY2F0aW9uKQogICAgIHsKQEAgLTMxOCw0MSArMzcyLDQ3
IEBAIEdMaW50IFByb2dyYW1TdGF0ZTo6Z2V0VW5pZm9ybUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3Ry
aW5nICZuYW1lKSBjb25zdAogICAgIHJldHVybiAtMTsKIH0KIAotR0x1aW50IFByb2dyYW1TdGF0
ZTo6Z2V0VW5pZm9ybUluZGV4KGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdAorR0x1aW50
IFByb2dyYW1TdGF0ZTo6Z2V0VW5pZm9ybUluZGV4RnJvbU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcg
Jm5hbWUpIGNvbnN0CiB7Ci0gICAgc2l6ZV90IHN1YnNjcmlwdCAgICAgPSBHTF9JTlZBTElEX0lO
REVYOwotICAgIHN0ZDo6c3RyaW5nIGJhc2VOYW1lID0gZ2w6OlBhcnNlVW5pZm9ybU5hbWUobmFt
ZSwgJnN1YnNjcmlwdCk7CisgICAgcmV0dXJuIEdldFJlc291cmNlSW5kZXhGcm9tTmFtZShtVW5p
Zm9ybXMsIG5hbWUpOworfQogCi0gICAgLy8gVGhlIGFwcCBpcyBub3QgYWxsb3dlZCB0byBzcGVj
aWZ5IGFycmF5IGluZGljZXMgb3RoZXIgdGhhbiAwIGZvciBhcnJheXMgb2YgYmFzaWMgdHlwZXMK
LSAgICBpZiAoc3Vic2NyaXB0ICE9IDAgJiYgc3Vic2NyaXB0ICE9IEdMX0lOVkFMSURfSU5ERVgp
Ci0gICAgewotICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9JTkRFWDsKLSAgICB9CitHTHVpbnQg
UHJvZ3JhbVN0YXRlOjpnZXRVbmlmb3JtSW5kZXhGcm9tTG9jYXRpb24oR0xpbnQgbG9jYXRpb24p
IGNvbnN0Cit7CisgICAgQVNTRVJUKGxvY2F0aW9uID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90
Pihsb2NhdGlvbikgPCBtVW5pZm9ybUxvY2F0aW9ucy5zaXplKCkpOworICAgIHJldHVybiBtVW5p
Zm9ybUxvY2F0aW9uc1tsb2NhdGlvbl0uaW5kZXg7Cit9CiAKLSAgICBmb3IgKHNpemVfdCBpbmRl
eCA9IDA7IGluZGV4IDwgbVVuaWZvcm1zLnNpemUoKTsgaW5kZXgrKykKK09wdGlvbmFsPEdMdWlu
dD4gUHJvZ3JhbVN0YXRlOjpnZXRTYW1wbGVySW5kZXgoR0xpbnQgbG9jYXRpb24pIGNvbnN0Cit7
CisgICAgR0x1aW50IGluZGV4ID0gZ2V0VW5pZm9ybUluZGV4RnJvbUxvY2F0aW9uKGxvY2F0aW9u
KTsKKyAgICBpZiAoIWlzU2FtcGxlclVuaWZvcm1JbmRleChpbmRleCkpCiAgICAgewotICAgICAg
ICBjb25zdCBMaW5rZWRVbmlmb3JtICZ1bmlmb3JtID0gbVVuaWZvcm1zW2luZGV4XTsKLSAgICAg
ICAgaWYgKHVuaWZvcm0ubmFtZSA9PSBiYXNlTmFtZSkKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKHVuaWZvcm0uaXNBcnJheSgpIHx8IHN1YnNjcmlwdCA9PSBHTF9JTlZBTElEX0lOREVYKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTHVpbnQ+
KGluZGV4KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICByZXR1cm4gT3B0aW9u
YWw8R0x1aW50Pjo6SW52YWxpZCgpOwogICAgIH0KIAotICAgIHJldHVybiBHTF9JTlZBTElEX0lO
REVYOworICAgIHJldHVybiBnZXRTYW1wbGVySW5kZXhGcm9tVW5pZm9ybUluZGV4KGluZGV4KTsK
IH0KIAotUHJvZ3JhbTo6UHJvZ3JhbShyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgUmVzb3Vy
Y2VNYW5hZ2VyICptYW5hZ2VyLCBHTHVpbnQgaGFuZGxlKQorYm9vbCBQcm9ncmFtU3RhdGU6Omlz
U2FtcGxlclVuaWZvcm1JbmRleChHTHVpbnQgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlu
ZGV4ID49IG1TYW1wbGVyVW5pZm9ybVJhbmdlLnN0YXJ0ICYmIGluZGV4IDwgbVNhbXBsZXJVbmlm
b3JtUmFuZ2UuZW5kOworfQorCitHTHVpbnQgUHJvZ3JhbVN0YXRlOjpnZXRTYW1wbGVySW5kZXhG
cm9tVW5pZm9ybUluZGV4KEdMdWludCB1bmlmb3JtSW5kZXgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KGlzU2FtcGxlclVuaWZvcm1JbmRleCh1bmlmb3JtSW5kZXgpKTsKKyAgICByZXR1cm4gdW5pZm9y
bUluZGV4IC0gbVNhbXBsZXJVbmlmb3JtUmFuZ2Uuc3RhcnQ7Cit9CisKK1Byb2dyYW06OlByb2dy
YW0ocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksIFNoYWRlclByb2dyYW1NYW5hZ2VyICptYW5h
Z2VyLCBHTHVpbnQgaGFuZGxlKQogICAgIDogbVByb2dyYW0oZmFjdG9yeS0+Y3JlYXRlUHJvZ3Jh
bShtU3RhdGUpKSwKICAgICAgIG1WYWxpZGF0ZWQoZmFsc2UpLAogICAgICAgbUxpbmtlZChmYWxz
ZSksCiAgICAgICBtRGVsZXRlU3RhdHVzKGZhbHNlKSwKICAgICAgIG1SZWZDb3VudCgwKSwKICAg
ICAgIG1SZXNvdXJjZU1hbmFnZXIobWFuYWdlciksCi0gICAgICBtSGFuZGxlKGhhbmRsZSksCi0g
ICAgICBtU2FtcGxlclVuaWZvcm1SYW5nZSgwLCAwKQorICAgICAgbUhhbmRsZShoYW5kbGUpCiB7
CiAgICAgQVNTRVJUKG1Qcm9ncmFtKTsKIApAQCAtMzYyLDExICs0MjIsMzQgQEAgUHJvZ3JhbTo6
UHJvZ3JhbShyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgUmVzb3VyY2VNYW5hZ2VyICptYW5h
Z2VyLCBHTHVpbnQgaGEKIAogUHJvZ3JhbTo6flByb2dyYW0oKQogewotICAgIHVubGluayh0cnVl
KTsKLQorICAgIEFTU0VSVCghbVN0YXRlLm1BdHRhY2hlZFZlcnRleFNoYWRlciAmJiAhbVN0YXRl
Lm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyICYmCisgICAgICAgICAgICFtU3RhdGUubUF0dGFjaGVk
Q29tcHV0ZVNoYWRlcik7CiAgICAgU2FmZURlbGV0ZShtUHJvZ3JhbSk7CiB9CiAKK3ZvaWQgUHJv
Z3JhbTo6ZGVzdHJveShjb25zdCBDb250ZXh0ICpjb250ZXh0KQoreworICAgIGlmIChtU3RhdGUu
bUF0dGFjaGVkVmVydGV4U2hhZGVyICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBtU3RhdGUu
bUF0dGFjaGVkVmVydGV4U2hhZGVyLT5yZWxlYXNlKGNvbnRleHQpOworICAgICAgICBtU3RhdGUu
bUF0dGFjaGVkVmVydGV4U2hhZGVyID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAobVN0YXRl
Lm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBtU3Rh
dGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXItPnJlbGVhc2UoY29udGV4dCk7CisgICAgICAgIG1T
dGF0ZS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlciA9IG51bGxwdHI7CisgICAgfQorCisgICAgaWYg
KG1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVyICE9IG51bGxwdHIpCisgICAgeworICAgICAg
ICBtU3RhdGUubUF0dGFjaGVkQ29tcHV0ZVNoYWRlci0+cmVsZWFzZShjb250ZXh0KTsKKyAgICAg
ICAgbVN0YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXIgPSBudWxscHRyOworICAgIH0KKworICAg
IG1Qcm9ncmFtLT5kZXN0cm95KHJ4OjpTYWZlR2V0SW1wbChjb250ZXh0KSk7Cit9CisKIHZvaWQg
UHJvZ3JhbTo6c2V0TGFiZWwoY29uc3Qgc3RkOjpzdHJpbmcgJmxhYmVsKQogewogICAgIG1TdGF0
ZS5tTGFiZWwgPSBsYWJlbDsKQEAgLTQwNyw0OCArNDkwLDM0IEBAIHZvaWQgUHJvZ3JhbTo6YXR0
YWNoU2hhZGVyKFNoYWRlciAqc2hhZGVyKQogICAgIH0KIH0KIAotYm9vbCBQcm9ncmFtOjpkZXRh
Y2hTaGFkZXIoU2hhZGVyICpzaGFkZXIpCit2b2lkIFByb2dyYW06OmRldGFjaFNoYWRlcihjb25z
dCBDb250ZXh0ICpjb250ZXh0LCBTaGFkZXIgKnNoYWRlcikKIHsKICAgICBzd2l0Y2ggKHNoYWRl
ci0+Z2V0VHlwZSgpKQogICAgIHsKICAgICAgICAgY2FzZSBHTF9WRVJURVhfU0hBREVSOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAobVN0YXRlLm1BdHRhY2hlZFZlcnRleFNoYWRlciAhPSBz
aGFkZXIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBzaGFkZXItPnJlbGVhc2UoKTsKKyAgICAgICAgICAg
IEFTU0VSVChtU3RhdGUubUF0dGFjaGVkVmVydGV4U2hhZGVyID09IHNoYWRlcik7CisgICAgICAg
ICAgICBzaGFkZXItPnJlbGVhc2UoY29udGV4dCk7CiAgICAgICAgICAgICBtU3RhdGUubUF0dGFj
aGVkVmVydGV4U2hhZGVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgR0xfRlJBR01FTlRfU0hBREVSOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAobVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyICE9IHNoYWRlcikKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIHNoYWRlci0+cmVsZWFzZSgpOworICAgICAgICAgICAgQVNTRVJUKG1TdGF0ZS5t
QXR0YWNoZWRGcmFnbWVudFNoYWRlciA9PSBzaGFkZXIpOworICAgICAgICAgICAgc2hhZGVyLT5y
ZWxlYXNlKGNvbnRleHQpOwogICAgICAgICAgICAgbVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hh
ZGVyID0gbnVsbHB0cjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgR0xfQ09NUFVURV9TSEFERVI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtU3RhdGUu
bUF0dGFjaGVkQ29tcHV0ZVNoYWRlciAhPSBzaGFkZXIpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzaGFk
ZXItPnJlbGVhc2UoKTsKKyAgICAgICAgICAgIEFTU0VSVChtU3RhdGUubUF0dGFjaGVkQ29tcHV0
ZVNoYWRlciA9PSBzaGFkZXIpOworICAgICAgICAgICAgc2hhZGVyLT5yZWxlYXNlKGNvbnRleHQp
OwogICAgICAgICAgICAgbVN0YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXIgPSBudWxscHRyOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQotCi0gICAgcmV0dXJuIHRydWU7CiB9CiAKIGludCBQ
cm9ncmFtOjpnZXRBdHRhY2hlZFNoYWRlcnNDb3VudCgpIGNvbnN0CkBAIC00NjUsNyArNTM0LDcg
QEAgdm9pZCBQcm9ncmFtOjpiaW5kQXR0cmlidXRlTG9jYXRpb24oR0x1aW50IGluZGV4LCBjb25z
dCBjaGFyICpuYW1lKQogdm9pZCBQcm9ncmFtOjpiaW5kVW5pZm9ybUxvY2F0aW9uKEdMdWludCBp
bmRleCwgY29uc3QgY2hhciAqbmFtZSkKIHsKICAgICAvLyBCaW5kIHRoZSBiYXNlIHVuaWZvcm0g
bmFtZSBvbmx5IHNpbmNlIGFycmF5IGluZGljZXMgb3RoZXIgdGhhbiAwIGNhbm5vdCBiZSBib3Vu
ZAotICAgIG1Vbmlmb3JtQmluZGluZ3MuYmluZExvY2F0aW9uKGluZGV4LCBQYXJzZVVuaWZvcm1O
YW1lKG5hbWUsIG51bGxwdHIpKTsKKyAgICBtVW5pZm9ybUxvY2F0aW9uQmluZGluZ3MuYmluZExv
Y2F0aW9uKGluZGV4LCBQYXJzZVJlc291cmNlTmFtZShuYW1lLCBudWxscHRyKSk7CiB9CiAKIHZv
aWQgUHJvZ3JhbTo6YmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbihHTGludCBpbmRleCwgY29uc3Qg
Y2hhciAqbmFtZSkKQEAgLTU0NywxOCArNjE2LDIzIEBAIHZvaWQgUHJvZ3JhbTo6cGF0aEZyYWdt
ZW50SW5wdXRHZW4oR0xpbnQgaW5kZXgsCiAvLyBUaGUgYXR0YWNoZWQgc2hhZGVycyBhcmUgY2hl
Y2tlZCBmb3IgbGlua2luZyBlcnJvcnMgYnkgbWF0Y2hpbmcgdXAgdGhlaXIgdmFyaWFibGVzLgog
Ly8gVW5pZm9ybSwgaW5wdXQgYW5kIG91dHB1dCB2YXJpYWJsZXMgZ2V0IGNvbGxlY3RlZC4KIC8v
IFRoZSBjb2RlIGdldHMgY29tcGlsZWQgaW50byBiaW5hcmllcy4KLUVycm9yIFByb2dyYW06Omxp
bmsoY29uc3QgQ29udGV4dFN0YXRlICZkYXRhKQorRXJyb3IgUHJvZ3JhbTo6bGluayhjb25zdCBn
bDo6Q29udGV4dCAqY29udGV4dCkKIHsKLSAgICB1bmxpbmsoZmFsc2UpOworICAgIGNvbnN0IGF1
dG8gJmRhdGEgPSBjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKTsKKworICAgIHVubGluaygpOwog
CiAgICAgbUluZm9Mb2cucmVzZXQoKTsKICAgICByZXNldFVuaWZvcm1CbG9ja0JpbmRpbmdzKCk7
CiAKICAgICBjb25zdCBDYXBzICZjYXBzID0gZGF0YS5nZXRDYXBzKCk7CiAKLSAgICBib29sIGlz
Q29tcHV0ZVNoYWRlckF0dGFjaGVkID0gKG1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVyICE9
IG51bGxwdHIpOwotICAgIGJvb2wgbm9uQ29tcHV0ZVNoYWRlcnNBdHRhY2hlZCA9Ci0gICAgICAg
IChtU3RhdGUubUF0dGFjaGVkVmVydGV4U2hhZGVyICE9IG51bGxwdHIgfHwgbVN0YXRlLm1BdHRh
Y2hlZEZyYWdtZW50U2hhZGVyICE9IG51bGxwdHIpOworICAgIGF1dG8gdmVydGV4U2hhZGVyICAg
PSBtU3RhdGUubUF0dGFjaGVkVmVydGV4U2hhZGVyOworICAgIGF1dG8gZnJhZ21lbnRTaGFkZXIg
PSBtU3RhdGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXI7CisgICAgYXV0byBjb21wdXRlU2hhZGVy
ICA9IG1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVyOworCisgICAgYm9vbCBpc0NvbXB1dGVT
aGFkZXJBdHRhY2hlZCAgID0gKGNvbXB1dGVTaGFkZXIgIT0gbnVsbHB0cik7CisgICAgYm9vbCBu
b25Db21wdXRlU2hhZGVyc0F0dGFjaGVkID0gKHZlcnRleFNoYWRlciAhPSBudWxscHRyIHx8IGZy
YWdtZW50U2hhZGVyICE9IG51bGxwdHIpOwogICAgIC8vIENoZWNrIHdoZXRoZXIgd2UgYm90aCBo
YXZlIGEgY29tcHV0ZSBhbmQgbm9uLWNvbXB1dGUgc2hhZGVycyBhdHRhY2hlZC4KICAgICAvLyBJ
ZiB0aGVyZSBhcmUgb2YgYm90aCB0eXBlcyBhdHRhY2hlZCwgdGhlbiBsaW5raW5nIHNob3VsZCBm
YWlsLgogICAgIC8vIE9wZW5HTCBFUyAzLjEwLCA3LjMgUHJvZ3JhbSBPYmplY3RzLCB1bmRlciBM
aW5rUHJvZ3JhbQpAQCAtNTY4LDE2ICs2NDIsMTYgQEAgRXJyb3IgUHJvZ3JhbTo6bGluayhjb25z
dCBDb250ZXh0U3RhdGUgJmRhdGEpCiAgICAgICAgIHJldHVybiBOb0Vycm9yKCk7CiAgICAgfQog
Ci0gICAgaWYgKG1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVyKQorICAgIGlmIChjb21wdXRl
U2hhZGVyKQogICAgIHsKLSAgICAgICAgaWYgKCFtU3RhdGUubUF0dGFjaGVkQ29tcHV0ZVNoYWRl
ci0+aXNDb21waWxlZCgpKQorICAgICAgICBpZiAoIWNvbXB1dGVTaGFkZXItPmlzQ29tcGlsZWQo
KSkKICAgICAgICAgewogICAgICAgICAgICAgbUluZm9Mb2cgPDwgIkF0dGFjaGVkIGNvbXB1dGUg
c2hhZGVyIGlzIG5vdCBjb21waWxlZC4iOwogICAgICAgICAgICAgcmV0dXJuIE5vRXJyb3IoKTsK
ICAgICAgICAgfQotICAgICAgICBBU1NFUlQobVN0YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXIt
PmdldFR5cGUoKSA9PSBHTF9DT01QVVRFX1NIQURFUik7CisgICAgICAgIEFTU0VSVChjb21wdXRl
U2hhZGVyLT5nZXRUeXBlKCkgPT0gR0xfQ09NUFVURV9TSEFERVIpOwogCi0gICAgICAgIG1TdGF0
ZS5tQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZSA9IG1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVy
LT5nZXRXb3JrR3JvdXBTaXplKCk7CisgICAgICAgIG1TdGF0ZS5tQ29tcHV0ZVNoYWRlckxvY2Fs
U2l6ZSA9IGNvbXB1dGVTaGFkZXItPmdldFdvcmtHcm91cFNpemUoKTsKIAogICAgICAgICAvLyBH
TFNMIEVTIDMuMTAsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCiAgICAgICAgIC8vIElm
IHRoZSB3b3JrIGdyb3VwIHNpemUgaXMgbm90IHNwZWNpZmllZCwgYSBsaW5rIHRpbWUgZXJyb3Ig
c2hvdWxkIG9jY3VyLgpAQCAtNTg3LDcgKzY2MSw3IEBAIEVycm9yIFByb2dyYW06OmxpbmsoY29u
c3QgQ29udGV4dFN0YXRlICZkYXRhKQogICAgICAgICAgICAgcmV0dXJuIE5vRXJyb3IoKTsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmICghbGlua1VuaWZvcm1zKG1JbmZvTG9nLCBjYXBzLCBtVW5p
Zm9ybUJpbmRpbmdzKSkKKyAgICAgICAgaWYgKCFsaW5rVW5pZm9ybXMobUluZm9Mb2csIGNhcHMs
IG1Vbmlmb3JtTG9jYXRpb25CaW5kaW5ncykpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
biBOb0Vycm9yKCk7CiAgICAgICAgIH0KQEAgLTU5Nyw0NSArNjcxLDQ1IEBAIEVycm9yIFByb2dy
YW06OmxpbmsoY29uc3QgQ29udGV4dFN0YXRlICZkYXRhKQogICAgICAgICAgICAgcmV0dXJuIE5v
RXJyb3IoKTsKICAgICAgICAgfQogCi0gICAgICAgIHJ4OjpMaW5rUmVzdWx0IHJlc3VsdCA9IG1Q
cm9ncmFtLT5saW5rKGRhdGEsIG1JbmZvTG9nKTsKLQotICAgICAgICBpZiAocmVzdWx0LmVycm9y
LmlzRXJyb3IoKSB8fCAhcmVzdWx0LmxpbmtTdWNjZXNzKQorICAgICAgICBnbDo6VmFyeWluZ1Bh
Y2tpbmcgbm9QYWNraW5nKDAsIFBhY2tNb2RlOjpBTkdMRV9SRUxBWEVEKTsKKyAgICAgICAgQU5H
TEVfVFJZX1JFU1VMVChtUHJvZ3JhbS0+bGluayhjb250ZXh0LT5nZXRJbXBsZW1lbnRhdGlvbigp
LCBub1BhY2tpbmcsIG1JbmZvTG9nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtTGlua2Vk
KTsKKyAgICAgICAgaWYgKCFtTGlua2VkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
cmVzdWx0LmVycm9yOworICAgICAgICAgICAgcmV0dXJuIE5vRXJyb3IoKTsKICAgICAgICAgfQog
ICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBpZiAoIW1TdGF0ZS5tQXR0YWNoZWRGcmFn
bWVudFNoYWRlciB8fCAhbVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyLT5pc0NvbXBpbGVk
KCkpCisgICAgICAgIGlmICghZnJhZ21lbnRTaGFkZXIgfHwgIWZyYWdtZW50U2hhZGVyLT5pc0Nv
bXBpbGVkKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBOb0Vycm9yKCk7CiAgICAg
ICAgIH0KLSAgICAgICAgQVNTRVJUKG1TdGF0ZS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlci0+Z2V0
VHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUik7CisgICAgICAgIEFTU0VSVChmcmFnbWVudFNo
YWRlci0+Z2V0VHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUik7CiAKLSAgICAgICAgaWYgKCFt
U3RhdGUubUF0dGFjaGVkVmVydGV4U2hhZGVyIHx8ICFtU3RhdGUubUF0dGFjaGVkVmVydGV4U2hh
ZGVyLT5pc0NvbXBpbGVkKCkpCisgICAgICAgIGlmICghdmVydGV4U2hhZGVyIHx8ICF2ZXJ0ZXhT
aGFkZXItPmlzQ29tcGlsZWQoKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIE5vRXJy
b3IoKTsKICAgICAgICAgfQotICAgICAgICBBU1NFUlQobVN0YXRlLm1BdHRhY2hlZFZlcnRleFNo
YWRlci0+Z2V0VHlwZSgpID09IEdMX1ZFUlRFWF9TSEFERVIpOworICAgICAgICBBU1NFUlQodmVy
dGV4U2hhZGVyLT5nZXRUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUik7CiAKLSAgICAgICAgaWYg
KG1TdGF0ZS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlci0+Z2V0U2hhZGVyVmVyc2lvbigpICE9Ci0g
ICAgICAgICAgICBtU3RhdGUubUF0dGFjaGVkVmVydGV4U2hhZGVyLT5nZXRTaGFkZXJWZXJzaW9u
KCkpCisgICAgICAgIGlmIChmcmFnbWVudFNoYWRlci0+Z2V0U2hhZGVyVmVyc2lvbigpICE9IHZl
cnRleFNoYWRlci0+Z2V0U2hhZGVyVmVyc2lvbigpKQogICAgICAgICB7CiAgICAgICAgICAgICBt
SW5mb0xvZyA8PCAiRnJhZ21lbnQgc2hhZGVyIHZlcnNpb24gZG9lcyBub3QgbWF0Y2ggdmVydGV4
IHNoYWRlciB2ZXJzaW9uLiI7CiAgICAgICAgICAgICByZXR1cm4gTm9FcnJvcigpOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKCFsaW5rQXR0cmlidXRlcyhkYXRhLCBtSW5mb0xvZywgbUF0dHJp
YnV0ZUJpbmRpbmdzLCBtU3RhdGUubUF0dGFjaGVkVmVydGV4U2hhZGVyKSkKKyAgICAgICAgaWYg
KCFsaW5rQXR0cmlidXRlcyhkYXRhLCBtSW5mb0xvZykpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBOb0Vycm9yKCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWxpbmtWYXJ5aW5n
cyhtSW5mb0xvZywgbVN0YXRlLm1BdHRhY2hlZFZlcnRleFNoYWRlciwgbVN0YXRlLm1BdHRhY2hl
ZEZyYWdtZW50U2hhZGVyKSkKKyAgICAgICAgaWYgKCFsaW5rVmFyeWluZ3MobUluZm9Mb2cpKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gTm9FcnJvcigpOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKCFsaW5rVW5pZm9ybXMobUluZm9Mb2csIGNhcHMsIG1Vbmlmb3JtQmluZGluZ3Mp
KQorICAgICAgICBpZiAoIWxpbmtVbmlmb3JtcyhtSW5mb0xvZywgY2FwcywgbVVuaWZvcm1Mb2Nh
dGlvbkJpbmRpbmdzKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIE5vRXJyb3IoKTsK
ICAgICAgICAgfQpAQCAtNjQ3LDYwICs3MjEsNTcgQEAgRXJyb3IgUHJvZ3JhbTo6bGluayhjb25z
dCBDb250ZXh0U3RhdGUgJmRhdGEpCiAKICAgICAgICAgY29uc3QgYXV0byAmbWVyZ2VkVmFyeWlu
Z3MgPSBnZXRNZXJnZWRWYXJ5aW5ncygpOwogCi0gICAgICAgIGlmICghbGlua1ZhbGlkYXRlVHJh
bnNmb3JtRmVlZGJhY2sobUluZm9Mb2csIG1lcmdlZFZhcnlpbmdzLCBjYXBzKSkKKyAgICAgICAg
aWYgKCFsaW5rVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFjayhjb250ZXh0LCBtSW5mb0xvZywgbWVy
Z2VkVmFyeWluZ3MsIGNhcHMpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gTm9FcnJv
cigpOwogICAgICAgICB9CiAKICAgICAgICAgbGlua091dHB1dFZhcmlhYmxlcygpOwogCi0gICAg
ICAgIHJ4OjpMaW5rUmVzdWx0IHJlc3VsdCA9IG1Qcm9ncmFtLT5saW5rKGRhdGEsIG1JbmZvTG9n
KTsKLSAgICAgICAgaWYgKHJlc3VsdC5lcnJvci5pc0Vycm9yKCkgfHwgIXJlc3VsdC5saW5rU3Vj
Y2VzcykKKyAgICAgICAgLy8gVmFsaWRhdGUgd2UgY2FuIHBhY2sgdGhlIHZhcnlpbmdzLgorICAg
ICAgICBzdGQ6OnZlY3RvcjxQYWNrZWRWYXJ5aW5nPiBwYWNrZWRWYXJ5aW5ncyA9IGdldFBhY2tl
ZFZhcnlpbmdzKG1lcmdlZFZhcnlpbmdzKTsKKworICAgICAgICAvLyBNYXAgdGhlIHZhcnlpbmdz
IHRvIHRoZSByZWdpc3RlciBmaWxlCisgICAgICAgIC8vIEluIFdlYkdMLCB3ZSB1c2UgYSBzbGln
aHRseSBkaWZmZXJlbnQgaGFuZGxpbmcgZm9yIHBhY2tpbmcgdmFyaWFibGVzLgorICAgICAgICBh
dXRvIHBhY2tNb2RlID0gZGF0YS5nZXRFeHRlbnNpb25zKCkud2ViZ2xDb21wYXRpYmlsaXR5ID8g
UGFja01vZGU6OldFQkdMX1NUUklDVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogUGFja01vZGU6OkFOR0xFX1JFTEFYRUQ7
CisgICAgICAgIFZhcnlpbmdQYWNraW5nIHZhcnlpbmdQYWNraW5nKGRhdGEuZ2V0Q2FwcygpLm1h
eFZhcnlpbmdWZWN0b3JzLCBwYWNrTW9kZSk7CisgICAgICAgIGlmICghdmFyeWluZ1BhY2tpbmcu
cGFja1VzZXJWYXJ5aW5ncyhtSW5mb0xvZywgcGFja2VkVmFyeWluZ3MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0VHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5nTmFtZXMoKSkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQu
ZXJyb3I7CisgICAgICAgICAgICByZXR1cm4gTm9FcnJvcigpOworICAgICAgICB9CisKKyAgICAg
ICAgQU5HTEVfVFJZX1JFU1VMVChtUHJvZ3JhbS0+bGluayhjb250ZXh0LT5nZXRJbXBsZW1lbnRh
dGlvbigpLCB2YXJ5aW5nUGFja2luZywgbUluZm9Mb2cpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIG1MaW5rZWQpOworICAgICAgICBpZiAoIW1MaW5rZWQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBOb0Vycm9yKCk7CiAgICAgICAgIH0KIAogICAgICAgICBnYXRoZXJUcmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdzKG1lcmdlZFZhcnlpbmdzKTsKICAgICB9CiAKKyAgICBzZXRVbmlm
b3JtVmFsdWVzRnJvbUJpbmRpbmdRdWFsaWZpZXJzKCk7CisKICAgICBnYXRoZXJJbnRlcmZhY2VC
bG9ja0luZm8oKTsKIAotICAgIG1MaW5rZWQgPSB0cnVlOwogICAgIHJldHVybiBOb0Vycm9yKCk7
CiB9CiAKIC8vIFJldHVybnMgdGhlIHByb2dyYW0gb2JqZWN0IHRvIGFuIHVubGlua2VkIHN0YXRl
LCBiZWZvcmUgcmUtbGlua2luZywgb3IgYXQgZGVzdHJ1Y3Rpb24KLXZvaWQgUHJvZ3JhbTo6dW5s
aW5rKGJvb2wgZGVzdHJveSkKK3ZvaWQgUHJvZ3JhbTo6dW5saW5rKCkKIHsKLSAgICBpZiAoZGVz
dHJveSkgICAvLyBPYmplY3QgYmVpbmcgZGVzdHJ1Y3RlZAotICAgIHsKLSAgICAgICAgaWYgKG1T
dGF0ZS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlcikKLSAgICAgICAgewotICAgICAgICAgICAgbVN0
YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyLT5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBtU3Rh
dGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXIgPSBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKG1TdGF0ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXIpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIG1TdGF0ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXItPnJlbGVhc2UoKTsKLSAgICAgICAgICAg
IG1TdGF0ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXIgPSBudWxscHRyOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKG1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVyKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBtU3RhdGUubUF0dGFjaGVkQ29tcHV0ZVNoYWRlci0+cmVsZWFzZSgpOwotICAgICAg
ICAgICAgbVN0YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXIgPSBudWxscHRyOwotICAgICAgICB9
Ci0gICAgfQotCiAgICAgbVN0YXRlLm1BdHRyaWJ1dGVzLmNsZWFyKCk7CiAgICAgbVN0YXRlLm1B
Y3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrLnJlc2V0KCk7Ci0gICAgbVN0YXRlLm1UcmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmdWYXJzLmNsZWFyKCk7CisgICAgbVN0YXRlLm1MaW5rZWRUcmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmdzLmNsZWFyKCk7CiAgICAgbVN0YXRlLm1Vbmlmb3Jtcy5jbGVhcigpOwog
ICAgIG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9ucy5jbGVhcigpOwogICAgIG1TdGF0ZS5tVW5pZm9y
bUJsb2Nrcy5jbGVhcigpOwogICAgIG1TdGF0ZS5tT3V0cHV0VmFyaWFibGVzLmNsZWFyKCk7Cisg
ICAgbVN0YXRlLm1PdXRwdXRMb2NhdGlvbnMuY2xlYXIoKTsKICAgICBtU3RhdGUubUNvbXB1dGVT
aGFkZXJMb2NhbFNpemUuZmlsbCgxKTsKKyAgICBtU3RhdGUubVNhbXBsZXJCaW5kaW5ncy5jbGVh
cigpOwogCiAgICAgbVZhbGlkYXRlZCA9IGZhbHNlOwogCkBAIC03MTIsMzYgKzc4Myw0MSBAQCBi
b29sIFByb2dyYW06OmlzTGlua2VkKCkgY29uc3QKICAgICByZXR1cm4gbUxpbmtlZDsKIH0KIAot
RXJyb3IgUHJvZ3JhbTo6bG9hZEJpbmFyeShHTGVudW0gYmluYXJ5Rm9ybWF0LCBjb25zdCB2b2lk
ICpiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKQorRXJyb3IgUHJvZ3JhbTo6bG9hZEJpbmFyeShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmlu
YXJ5Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpiaW5hcnks
CisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoKQogewotICAgIHVubGlu
ayhmYWxzZSk7CisgICAgdW5saW5rKCk7CiAKICNpZiBBTkdMRV9QUk9HUkFNX0JJTkFSWV9MT0FE
ICE9IEFOR0xFX0VOQUJMRUQKLSAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJl
dHVybiBOb0Vycm9yKCk7CiAjZWxzZQogICAgIEFTU0VSVChiaW5hcnlGb3JtYXQgPT0gR0xfUFJP
R1JBTV9CSU5BUllfQU5HTEUpOwogICAgIGlmIChiaW5hcnlGb3JtYXQgIT0gR0xfUFJPR1JBTV9C
SU5BUllfQU5HTEUpCiAgICAgewogICAgICAgICBtSW5mb0xvZyA8PCAiSW52YWxpZCBwcm9ncmFt
IGJpbmFyeSBmb3JtYXQuIjsKLSAgICAgICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICAgICAgcmV0dXJuIE5vRXJyb3IoKTsKICAgICB9CiAKICAgICBCaW5hcnlJbnB1dFN0cmVhbSBz
dHJlYW0oYmluYXJ5LCBsZW5ndGgpOwogCi0gICAgaW50IG1ham9yVmVyc2lvbiA9IHN0cmVhbS5y
ZWFkSW50PGludD4oKTsKLSAgICBpbnQgbWlub3JWZXJzaW9uID0gc3RyZWFtLnJlYWRJbnQ8aW50
PigpOwotICAgIGlmIChtYWpvclZlcnNpb24gIT0gQU5HTEVfTUFKT1JfVkVSU0lPTiB8fCBtaW5v
clZlcnNpb24gIT0gQU5HTEVfTUlOT1JfVkVSU0lPTikKKyAgICB1bnNpZ25lZCBjaGFyIGNvbW1p
dFN0cmluZ1tBTkdMRV9DT01NSVRfSEFTSF9TSVpFXTsKKyAgICBzdHJlYW0ucmVhZEJ5dGVzKGNv
bW1pdFN0cmluZywgQU5HTEVfQ09NTUlUX0hBU0hfU0laRSk7CisgICAgaWYgKG1lbWNtcChjb21t
aXRTdHJpbmcsIEFOR0xFX0NPTU1JVF9IQVNILCBzaXplb2YodW5zaWduZWQgY2hhcikgKiBBTkdM
RV9DT01NSVRfSEFTSF9TSVpFKSAhPQorICAgICAgICAwKQogICAgIHsKICAgICAgICAgbUluZm9M
b2cgPDwgIkludmFsaWQgcHJvZ3JhbSBiaW5hcnkgdmVyc2lvbi4iOwotICAgICAgICByZXR1cm4g
RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gTm9FcnJvcigpOwogICAgIH0KIAot
ICAgIHVuc2lnbmVkIGNoYXIgY29tbWl0U3RyaW5nW0FOR0xFX0NPTU1JVF9IQVNIX1NJWkVdOwot
ICAgIHN0cmVhbS5yZWFkQnl0ZXMoY29tbWl0U3RyaW5nLCBBTkdMRV9DT01NSVRfSEFTSF9TSVpF
KTsKLSAgICBpZiAobWVtY21wKGNvbW1pdFN0cmluZywgQU5HTEVfQ09NTUlUX0hBU0gsIHNpemVv
Zih1bnNpZ25lZCBjaGFyKSAqIEFOR0xFX0NPTU1JVF9IQVNIX1NJWkUpICE9IDApCisgICAgaW50
IG1ham9yVmVyc2lvbiA9IHN0cmVhbS5yZWFkSW50PGludD4oKTsKKyAgICBpbnQgbWlub3JWZXJz
aW9uID0gc3RyZWFtLnJlYWRJbnQ8aW50PigpOworICAgIGlmIChtYWpvclZlcnNpb24gIT0gY29u
dGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgfHwKKyAgICAgICAgbWlub3JWZXJzaW9uICE9
IGNvbnRleHQtPmdldENsaWVudE1pbm9yVmVyc2lvbigpKQogICAgIHsKLSAgICAgICAgbUluZm9M
b2cgPDwgIkludmFsaWQgcHJvZ3JhbSBiaW5hcnkgdmVyc2lvbi4iOwotICAgICAgICByZXR1cm4g
RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICBtSW5mb0xvZyA8PCAiQ2Fubm90IGxvYWQgcHJv
Z3JhbSBiaW5hcmllcyBhY3Jvc3MgZGlmZmVyZW50IEVTIGNvbnRleHQgdmVyc2lvbnMuIjsKKyAg
ICAgICAgcmV0dXJuIE5vRXJyb3IoKTsKICAgICB9CiAKICAgICBtU3RhdGUubUNvbXB1dGVTaGFk
ZXJMb2NhbFNpemVbMF0gPSBzdHJlYW0ucmVhZEludDxpbnQ+KCk7CkBAIC04MTUsOCArODkxLDE2
IEBAIEVycm9yIFByb2dyYW06OmxvYWRCaW5hcnkoR0xlbnVtIGJpbmFyeUZvcm1hdCwgY29uc3Qg
dm9pZCAqYmluYXJ5LCBHTHNpemVpIGxlbmd0CiAgICAgICAgIG1TdGF0ZS5tVW5pZm9ybUJsb2Nr
cy5wdXNoX2JhY2sodW5pZm9ybUJsb2NrKTsKICAgICB9CiAKKyAgICBmb3IgKEdMdWludCBiaW5k
aW5nSW5kZXggPSAwOyBiaW5kaW5nSW5kZXggPCBtU3RhdGUubVVuaWZvcm1CbG9ja0JpbmRpbmdz
LnNpemUoKTsKKyAgICAgICAgICsrYmluZGluZ0luZGV4KQorICAgIHsKKyAgICAgICAgc3RyZWFt
LnJlYWRJbnQoJm1TdGF0ZS5tVW5pZm9ybUJsb2NrQmluZGluZ3NbYmluZGluZ0luZGV4XSk7Cisg
ICAgICAgIG1TdGF0ZS5tQWN0aXZlVW5pZm9ybUJsb2NrQmluZGluZ3Muc2V0KGJpbmRpbmdJbmRl
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRl
Lm1Vbmlmb3JtQmxvY2tCaW5kaW5nc1tiaW5kaW5nSW5kZXhdICE9IDApOworICAgIH0KKwogICAg
IHVuc2lnbmVkIGludCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdDb3VudCA9IHN0cmVhbS5yZWFk
SW50PHVuc2lnbmVkIGludD4oKTsKLSAgICBBU1NFUlQobVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFj
a1ZhcnlpbmdWYXJzLmVtcHR5KCkpOworICAgIEFTU0VSVChtU3RhdGUubUxpbmtlZFRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3MuZW1wdHkoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgdHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5nSW5kZXggPSAwOwogICAgICAgICB0cmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdJbmRleCA8IHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ0NvdW50OwogICAgICAgICArK3Ry
YW5zZm9ybUZlZWRiYWNrVmFyeWluZ0luZGV4KQpAQCAtODI2LDExICs5MTAsMjMgQEAgRXJyb3Ig
UHJvZ3JhbTo6bG9hZEJpbmFyeShHTGVudW0gYmluYXJ5Rm9ybWF0LCBjb25zdCB2b2lkICpiaW5h
cnksIEdMc2l6ZWkgbGVuZ3QKICAgICAgICAgc3RyZWFtLnJlYWRJbnQoJnZhcnlpbmcudHlwZSk7
CiAgICAgICAgIHN0cmVhbS5yZWFkU3RyaW5nKCZ2YXJ5aW5nLm5hbWUpOwogCi0gICAgICAgIG1T
dGF0ZS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFycy5wdXNoX2JhY2sodmFyeWluZyk7Cisg
ICAgICAgIEdMdWludCBhcnJheUluZGV4ID0gc3RyZWFtLnJlYWRJbnQ8R0x1aW50PigpOworCisg
ICAgICAgIG1TdGF0ZS5tTGlua2VkVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncy5lbXBsYWNlX2Jh
Y2sodmFyeWluZywgYXJyYXlJbmRleCk7CiAgICAgfQogCiAgICAgc3RyZWFtLnJlYWRJbnQoJm1T
dGF0ZS5tVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKTsKIAorICAgIHVuc2lnbmVkIGludCBv
dXRwdXRDb3VudCA9IHN0cmVhbS5yZWFkSW50PHVuc2lnbmVkIGludD4oKTsKKyAgICBBU1NFUlQo
bVN0YXRlLm1PdXRwdXRWYXJpYWJsZXMuZW1wdHkoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQg
b3V0cHV0SW5kZXggPSAwOyBvdXRwdXRJbmRleCA8IG91dHB1dENvdW50OyArK291dHB1dEluZGV4
KQorICAgIHsKKyAgICAgICAgc2g6Ok91dHB1dFZhcmlhYmxlIG91dHB1dDsKKyAgICAgICAgTG9h
ZFNoYWRlclZhcigmc3RyZWFtLCAmb3V0cHV0KTsKKyAgICAgICAgb3V0cHV0LmxvY2F0aW9uID0g
c3RyZWFtLnJlYWRJbnQ8aW50PigpOworICAgICAgICBtU3RhdGUubU91dHB1dFZhcmlhYmxlcy5w
dXNoX2JhY2sob3V0cHV0KTsKKyAgICB9CisKICAgICB1bnNpZ25lZCBpbnQgb3V0cHV0VmFyQ291
bnQgPSBzdHJlYW0ucmVhZEludDx1bnNpZ25lZCBpbnQ+KCk7CiAgICAgZm9yICh1bnNpZ25lZCBp
bnQgb3V0cHV0SW5kZXggPSAwOyBvdXRwdXRJbmRleCA8IG91dHB1dFZhckNvdW50OyArK291dHB1
dEluZGV4KQogICAgIHsKQEAgLTgzOSwyNCArOTM1LDMxIEBAIEVycm9yIFByb2dyYW06OmxvYWRC
aW5hcnkoR0xlbnVtIGJpbmFyeUZvcm1hdCwgY29uc3Qgdm9pZCAqYmluYXJ5LCBHTHNpemVpIGxl
bmd0CiAgICAgICAgIHN0cmVhbS5yZWFkSW50KCZsb2NhdGlvbkRhdGEuZWxlbWVudCk7CiAgICAg
ICAgIHN0cmVhbS5yZWFkSW50KCZsb2NhdGlvbkRhdGEuaW5kZXgpOwogICAgICAgICBzdHJlYW0u
cmVhZFN0cmluZygmbG9jYXRpb25EYXRhLm5hbWUpOwotICAgICAgICBtU3RhdGUubU91dHB1dFZh
cmlhYmxlc1tsb2NhdGlvbkluZGV4XSA9IGxvY2F0aW9uRGF0YTsKKyAgICAgICAgbVN0YXRlLm1P
dXRwdXRMb2NhdGlvbnNbbG9jYXRpb25JbmRleF0gPSBsb2NhdGlvbkRhdGE7CiAgICAgfQogCi0g
ICAgc3RyZWFtLnJlYWRJbnQoJm1TYW1wbGVyVW5pZm9ybVJhbmdlLnN0YXJ0KTsKLSAgICBzdHJl
YW0ucmVhZEludCgmbVNhbXBsZXJVbmlmb3JtUmFuZ2UuZW5kKTsKKyAgICBzdHJlYW0ucmVhZElu
dCgmbVN0YXRlLm1TYW1wbGVyVW5pZm9ybVJhbmdlLnN0YXJ0KTsKKyAgICBzdHJlYW0ucmVhZElu
dCgmbVN0YXRlLm1TYW1wbGVyVW5pZm9ybVJhbmdlLmVuZCk7CiAKLSAgICByeDo6TGlua1Jlc3Vs
dCByZXN1bHQgPSBtUHJvZ3JhbS0+bG9hZChtSW5mb0xvZywgJnN0cmVhbSk7Ci0gICAgaWYgKHJl
c3VsdC5lcnJvci5pc0Vycm9yKCkgfHwgIXJlc3VsdC5saW5rU3VjY2VzcykKKyAgICB1bnNpZ25l
ZCBpbnQgc2FtcGxlckNvdW50ID0gc3RyZWFtLnJlYWRJbnQ8dW5zaWduZWQgaW50PigpOworICAg
IGZvciAodW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCA9IDA7IHNhbXBsZXJJbmRleCA8IHNhbXBs
ZXJDb3VudDsgKytzYW1wbGVySW5kZXgpCiAgICAgewotICAgICAgICByZXR1cm4gcmVzdWx0LmVy
cm9yOworICAgICAgICBHTGVudW0gdGV4dHVyZVR5cGUgID0gc3RyZWFtLnJlYWRJbnQ8R0xlbnVt
PigpOworICAgICAgICBzaXplX3QgYmluZGluZ0NvdW50ID0gc3RyZWFtLnJlYWRJbnQ8c2l6ZV90
PigpOworICAgICAgICBtU3RhdGUubVNhbXBsZXJCaW5kaW5ncy5lbXBsYWNlX2JhY2soU2FtcGxl
ckJpbmRpbmcodGV4dHVyZVR5cGUsIGJpbmRpbmdDb3VudCkpOwogICAgIH0KIAotICAgIG1MaW5r
ZWQgPSB0cnVlOwotICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7Ci0jZW5kaWYgLy8gI2lm
IEFOR0xFX1BST0dSQU1fQklOQVJZX0xPQUQgPT0gQU5HTEVfRU5BQkxFRAorICAgIEFOR0xFX1RS
WV9SRVNVTFQobVByb2dyYW0tPmxvYWQoY29udGV4dC0+Z2V0SW1wbGVtZW50YXRpb24oKSwgbUlu
Zm9Mb2csICZzdHJlYW0pLCBtTGlua2VkKTsKKworICAgIHJldHVybiBOb0Vycm9yKCk7CisjZW5k
aWYgIC8vICNpZiBBTkdMRV9QUk9HUkFNX0JJTkFSWV9MT0FEID09IEFOR0xFX0VOQUJMRUQKIH0K
IAotRXJyb3IgUHJvZ3JhbTo6c2F2ZUJpbmFyeShHTGVudW0gKmJpbmFyeUZvcm1hdCwgdm9pZCAq
YmluYXJ5LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCkgY29uc3QKK0Vycm9yIFBy
b2dyYW06OnNhdmVCaW5hcnkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtICpiaW5hcnlGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZvaWQgKmJpbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZT
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgpIGNvbnN0CiB7
CiAgICAgaWYgKGJpbmFyeUZvcm1hdCkKICAgICB7CkBAIC04NjUsMTAgKzk2OCwyMCBAQCBFcnJv
ciBQcm9ncmFtOjpzYXZlQmluYXJ5KEdMZW51bSAqYmluYXJ5Rm9ybWF0LCB2b2lkICpiaW5hcnks
IEdMc2l6ZWkgYnVmU2l6ZSwgRwogCiAgICAgQmluYXJ5T3V0cHV0U3RyZWFtIHN0cmVhbTsKIAot
ICAgIHN0cmVhbS53cml0ZUludChBTkdMRV9NQUpPUl9WRVJTSU9OKTsKLSAgICBzdHJlYW0ud3Jp
dGVJbnQoQU5HTEVfTUlOT1JfVkVSU0lPTik7CiAgICAgc3RyZWFtLndyaXRlQnl0ZXMocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4oQU5HTEVfQ09NTUlUX0hBU0gpLCBBTkdM
RV9DT01NSVRfSEFTSF9TSVpFKTsKIAorICAgIC8vIG51bGxwdHIgY29udGV4dCBpcyBzdXBwb3J0
ZWQgd2hlbiBjb21wdXRpbmcgYmluYXJ5IGxlbmd0aC4KKyAgICBpZiAoY29udGV4dCkKKyAgICB7
CisgICAgICAgIHN0cmVhbS53cml0ZUludChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkubWFq
b3IpOworICAgICAgICBzdHJlYW0ud3JpdGVJbnQoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigp
Lm1pbm9yKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc3RyZWFtLndyaXRlSW50
KDIpOworICAgICAgICBzdHJlYW0ud3JpdGVJbnQoMCk7CisgICAgfQorCiAgICAgc3RyZWFtLndy
aXRlSW50KG1TdGF0ZS5tQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZVswXSk7CiAgICAgc3RyZWFtLndy
aXRlSW50KG1TdGF0ZS5tQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZVsxXSk7CiAgICAgc3RyZWFtLndy
aXRlSW50KG1TdGF0ZS5tQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZVsyXSk7CkBAIC04ODMsNyArOTk2
LDcgQEAgRXJyb3IgUHJvZ3JhbTo6c2F2ZUJpbmFyeShHTGVudW0gKmJpbmFyeUZvcm1hdCwgdm9p
ZCAqYmluYXJ5LCBHTHNpemVpIGJ1ZlNpemUsIEcKICAgICB9CiAKICAgICBzdHJlYW0ud3JpdGVJ
bnQobVN0YXRlLm1Vbmlmb3Jtcy5zaXplKCkpOwotICAgIGZvciAoY29uc3QgZ2w6OkxpbmtlZFVu
aWZvcm0gJnVuaWZvcm0gOiBtU3RhdGUubVVuaWZvcm1zKQorICAgIGZvciAoY29uc3QgTGlua2Vk
VW5pZm9ybSAmdW5pZm9ybSA6IG1TdGF0ZS5tVW5pZm9ybXMpCiAgICAgewogICAgICAgICBXcml0
ZVNoYWRlclZhcigmc3RyZWFtLCB1bmlmb3JtKTsKIApAQCAtOTI0LDE4ICsxMDM3LDMyIEBAIEVy
cm9yIFByb2dyYW06OnNhdmVCaW5hcnkoR0xlbnVtICpiaW5hcnlGb3JtYXQsIHZvaWQgKmJpbmFy
eSwgR0xzaXplaSBidWZTaXplLCBHCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdHJlYW0ud3Jp
dGVJbnQobVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJzLnNpemUoKSk7Ci0gICAg
Zm9yIChjb25zdCBzaDo6VmFyeWluZyAmdmFyeWluZyA6IG1TdGF0ZS5tVHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5nVmFycykKKyAgICBmb3IgKEdMdWludCBiaW5kaW5nIDogbVN0YXRlLm1Vbmlmb3Jt
QmxvY2tCaW5kaW5ncykKKyAgICB7CisgICAgICAgIHN0cmVhbS53cml0ZUludChiaW5kaW5nKTsK
KyAgICB9CisKKyAgICBzdHJlYW0ud3JpdGVJbnQobVN0YXRlLm1MaW5rZWRUcmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmdzLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRvICZ2YXIgOiBtU3RhdGUu
bUxpbmtlZFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpCiAgICAgewotICAgICAgICBzdHJlYW0u
d3JpdGVJbnQodmFyeWluZy5hcnJheVNpemUpOwotICAgICAgICBzdHJlYW0ud3JpdGVJbnQodmFy
eWluZy50eXBlKTsKLSAgICAgICAgc3RyZWFtLndyaXRlU3RyaW5nKHZhcnlpbmcubmFtZSk7Cisg
ICAgICAgIHN0cmVhbS53cml0ZUludCh2YXIuYXJyYXlTaXplKTsKKyAgICAgICAgc3RyZWFtLndy
aXRlSW50KHZhci50eXBlKTsKKyAgICAgICAgc3RyZWFtLndyaXRlU3RyaW5nKHZhci5uYW1lKTsK
KworICAgICAgICBzdHJlYW0ud3JpdGVJbnRPck5lZ09uZSh2YXIuYXJyYXlJbmRleCk7CiAgICAg
fQogCiAgICAgc3RyZWFtLndyaXRlSW50KG1TdGF0ZS5tVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJN
b2RlKTsKIAogICAgIHN0cmVhbS53cml0ZUludChtU3RhdGUubU91dHB1dFZhcmlhYmxlcy5zaXpl
KCkpOwotICAgIGZvciAoY29uc3QgYXV0byAmb3V0cHV0UGFpciA6IG1TdGF0ZS5tT3V0cHV0VmFy
aWFibGVzKQorICAgIGZvciAoY29uc3Qgc2g6Ok91dHB1dFZhcmlhYmxlICZvdXRwdXQgOiBtU3Rh
dGUubU91dHB1dFZhcmlhYmxlcykKKyAgICB7CisgICAgICAgIFdyaXRlU2hhZGVyVmFyKCZzdHJl
YW0sIG91dHB1dCk7CisgICAgICAgIHN0cmVhbS53cml0ZUludChvdXRwdXQubG9jYXRpb24pOwor
ICAgIH0KKworICAgIHN0cmVhbS53cml0ZUludChtU3RhdGUubU91dHB1dExvY2F0aW9ucy5zaXpl
KCkpOworICAgIGZvciAoY29uc3QgYXV0byAmb3V0cHV0UGFpciA6IG1TdGF0ZS5tT3V0cHV0TG9j
YXRpb25zKQogICAgIHsKICAgICAgICAgc3RyZWFtLndyaXRlSW50KG91dHB1dFBhaXIuZmlyc3Qp
OwogICAgICAgICBzdHJlYW0ud3JpdGVJbnRPck5lZ09uZShvdXRwdXRQYWlyLnNlY29uZC5lbGVt
ZW50KTsKQEAgLTk0MywxNSArMTA3MCwxOCBAQCBFcnJvciBQcm9ncmFtOjpzYXZlQmluYXJ5KEdM
ZW51bSAqYmluYXJ5Rm9ybWF0LCB2b2lkICpiaW5hcnksIEdMc2l6ZWkgYnVmU2l6ZSwgRwogICAg
ICAgICBzdHJlYW0ud3JpdGVTdHJpbmcob3V0cHV0UGFpci5zZWNvbmQubmFtZSk7CiAgICAgfQog
Ci0gICAgc3RyZWFtLndyaXRlSW50KG1TYW1wbGVyVW5pZm9ybVJhbmdlLnN0YXJ0KTsKLSAgICBz
dHJlYW0ud3JpdGVJbnQobVNhbXBsZXJVbmlmb3JtUmFuZ2UuZW5kKTsKKyAgICBzdHJlYW0ud3Jp
dGVJbnQobVN0YXRlLm1TYW1wbGVyVW5pZm9ybVJhbmdlLnN0YXJ0KTsKKyAgICBzdHJlYW0ud3Jp
dGVJbnQobVN0YXRlLm1TYW1wbGVyVW5pZm9ybVJhbmdlLmVuZCk7CiAKLSAgICBnbDo6RXJyb3Ig
ZXJyb3IgPSBtUHJvZ3JhbS0+c2F2ZSgmc3RyZWFtKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQorICAgIHN0cmVhbS53cml0ZUludChtU3RhdGUubVNhbXBsZXJCaW5kaW5ncy5zaXplKCkpOwor
ICAgIGZvciAoY29uc3QgYXV0byAmc2FtcGxlckJpbmRpbmcgOiBtU3RhdGUubVNhbXBsZXJCaW5k
aW5ncykKICAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgc3RyZWFtLndyaXRl
SW50KHNhbXBsZXJCaW5kaW5nLnRleHR1cmVUeXBlKTsKKyAgICAgICAgc3RyZWFtLndyaXRlSW50
KHNhbXBsZXJCaW5kaW5nLmJvdW5kVGV4dHVyZVVuaXRzLnNpemUoKSk7CiAgICAgfQogCisgICAg
QU5HTEVfVFJZKG1Qcm9ncmFtLT5zYXZlKCZzdHJlYW0pKTsKKwogICAgIEdMc2l6ZWkgc3RyZWFt
TGVuZ3RoICAgPSBzdGF0aWNfY2FzdDxHTHNpemVpPihzdHJlYW0ubGVuZ3RoKCkpOwogICAgIGNv
bnN0IHZvaWQgKnN0cmVhbVN0YXRlID0gc3RyZWFtLmRhdGEoKTsKIApAQCAtOTgzLDEzICsxMTEz
LDEzIEBAIEVycm9yIFByb2dyYW06OnNhdmVCaW5hcnkoR0xlbnVtICpiaW5hcnlGb3JtYXQsIHZv
aWQgKmJpbmFyeSwgR0xzaXplaSBidWZTaXplLCBHCiAgICAgICAgICpsZW5ndGggPSBzdHJlYW1M
ZW5ndGg7CiAgICAgfQogCi0gICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1
cm4gTm9FcnJvcigpOwogfQogCiBHTGludCBQcm9ncmFtOjpnZXRCaW5hcnlMZW5ndGgoKSBjb25z
dAogewogICAgIEdMaW50IGxlbmd0aDsKLSAgICBFcnJvciBlcnJvciA9IHNhdmVCaW5hcnkobnVs
bHB0ciwgbnVsbHB0ciwgc3RkOjpudW1lcmljX2xpbWl0czxHTGludD46Om1heCgpLCAmbGVuZ3Ro
KTsKKyAgICBFcnJvciBlcnJvciA9IHNhdmVCaW5hcnkobnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgc3RkOjpudW1lcmljX2xpbWl0czxHTGludD46Om1heCgpLCAmbGVuZ3RoKTsKICAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQogICAgIHsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMDEwLDEzICsx
MTQwLDI4IEBAIGJvb2wgUHJvZ3JhbTo6Z2V0QmluYXJ5UmV0cmlldmFibGVIaW50KCkgY29uc3QK
ICAgICByZXR1cm4gbVN0YXRlLm1CaW5hcnlSZXRyaWV2ZWFibGVIaW50OwogfQogCi12b2lkIFBy
b2dyYW06OnJlbGVhc2UoKQordm9pZCBQcm9ncmFtOjpzZXRTZXBhcmFibGUoYm9vbCBzZXBhcmFi
bGUpCit7CisgICAgLy8gVE9ETyh5dW5jaGFvKSA6IHJlcGxhY2Ugd2l0aCBkaXJ0eSBiaXRzCisg
ICAgaWYgKG1TdGF0ZS5tU2VwYXJhYmxlICE9IHNlcGFyYWJsZSkKKyAgICB7CisgICAgICAgIG1Q
cm9ncmFtLT5zZXRTZXBhcmFibGUoc2VwYXJhYmxlKTsKKyAgICAgICAgbVN0YXRlLm1TZXBhcmFi
bGUgPSBzZXBhcmFibGU7CisgICAgfQorfQorCitib29sIFByb2dyYW06OmlzU2VwYXJhYmxlKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRlLm1TZXBhcmFibGU7Cit9CisKK3ZvaWQgUHJvZ3Jh
bTo6cmVsZWFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0KQogewogICAgIG1SZWZDb3VudC0tOwog
CiAgICAgaWYgKG1SZWZDb3VudCA9PSAwICYmIG1EZWxldGVTdGF0dXMpCiAgICAgewotICAgICAg
ICBtUmVzb3VyY2VNYW5hZ2VyLT5kZWxldGVQcm9ncmFtKG1IYW5kbGUpOworICAgICAgICBtUmVz
b3VyY2VNYW5hZ2VyLT5kZWxldGVQcm9ncmFtKGNvbnRleHQsIG1IYW5kbGUpOwogICAgIH0KIH0K
IApAQCAtMTA4MSw3ICsxMjI2LDcgQEAgR0x1aW50IFByb2dyYW06OmdldEF0dHJpYnV0ZUxvY2F0
aW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdAogewogICAgIGZvciAoY29uc3Qgc2g6
OkF0dHJpYnV0ZSAmYXR0cmlidXRlIDogbVN0YXRlLm1BdHRyaWJ1dGVzKQogICAgIHsKLSAgICAg
ICAgaWYgKGF0dHJpYnV0ZS5uYW1lID09IG5hbWUgJiYgYXR0cmlidXRlLnN0YXRpY1VzZSkKKyAg
ICAgICAgaWYgKGF0dHJpYnV0ZS5uYW1lID09IG5hbWUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBhdHRyaWJ1dGUubG9jYXRpb247CiAgICAgICAgIH0KQEAgLTEwOTYsNyArMTI0MSwx
MiBAQCBib29sIFByb2dyYW06OmlzQXR0cmliTG9jYXRpb25BY3RpdmUoc2l6ZV90IGF0dHJpYkxv
Y2F0aW9uKSBjb25zdAogICAgIHJldHVybiBtU3RhdGUubUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01h
c2tbYXR0cmliTG9jYXRpb25dOwogfQogCi12b2lkIFByb2dyYW06OmdldEFjdGl2ZUF0dHJpYnV0
ZShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAq
c2l6ZSwgR0xlbnVtICp0eXBlLCBHTGNoYXIgKm5hbWUpCit2b2lkIFByb2dyYW06OmdldEFjdGl2
ZUF0dHJpYnV0ZShHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqc2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbmFtZSkgY29uc3QKIHsKICAgICBp
ZiAoIW1MaW5rZWQpCiAgICAgewpAQCAtMTExNSwzNSArMTI2NSwxMiBAQCB2b2lkIFByb2dyYW06
OmdldEFjdGl2ZUF0dHJpYnV0ZShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXpl
aSAqbGVuZ3RoLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2l6ZV90IGF0dHJpYnV0
ZUluZGV4ID0gMDsKLQotICAgIGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmlidXRlIDog
bVN0YXRlLm1BdHRyaWJ1dGVzKQotICAgIHsKLSAgICAgICAgLy8gU2tpcCBvdmVyIGluYWN0aXZl
IGF0dHJpYnV0ZXMKLSAgICAgICAgaWYgKGF0dHJpYnV0ZS5zdGF0aWNVc2UpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA9PSBhdHRyaWJ1dGVJ
bmRleCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGF0dHJpYnV0ZUluZGV4Kys7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBBU1NFUlQoaW5kZXggPT0gYXR0cmlidXRlSW5kZXggJiYgYXR0cmlidXRlSW5kZXggPCBtU3Rh
dGUubUF0dHJpYnV0ZXMuc2l6ZSgpKTsKLSAgICBjb25zdCBzaDo6QXR0cmlidXRlICZhdHRyaWIg
PSBtU3RhdGUubUF0dHJpYnV0ZXNbYXR0cmlidXRlSW5kZXhdOworICAgIEFTU0VSVChpbmRleCA8
IG1TdGF0ZS5tQXR0cmlidXRlcy5zaXplKCkpOworICAgIGNvbnN0IHNoOjpBdHRyaWJ1dGUgJmF0
dHJpYiA9IG1TdGF0ZS5tQXR0cmlidXRlc1tpbmRleF07CiAKICAgICBpZiAoYnVmc2l6ZSA+IDAp
CiAgICAgewotICAgICAgICBjb25zdCBjaGFyICpzdHJpbmcgPSBhdHRyaWIubmFtZS5jX3N0cigp
OwotCi0gICAgICAgIHN0cm5jcHkobmFtZSwgc3RyaW5nLCBidWZzaXplKTsKLSAgICAgICAgbmFt
ZVtidWZzaXplIC0gMV0gPSAnXDAnOwotCi0gICAgICAgIGlmIChsZW5ndGgpCi0gICAgICAgIHsK
LSAgICAgICAgICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDxHTHNpemVpPihzdHJsZW4obmFtZSkp
OwotICAgICAgICB9CisgICAgICAgIENvcHlTdHJpbmdUb0J1ZmZlcihuYW1lLCBhdHRyaWIubmFt
ZSwgYnVmc2l6ZSwgbGVuZ3RoKTsKICAgICB9CiAKICAgICAvLyBBbHdheXMgYSBzaW5nbGUgJ3R5
cGUnIGluc3RhbmNlCkBAIC0xMTU4LDE0ICsxMjg1LDcgQEAgR0xpbnQgUHJvZ3JhbTo6Z2V0QWN0
aXZlQXR0cmlidXRlQ291bnQoKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAg
ICBHTGludCBjb3VudCA9IDA7Ci0KLSAgICBmb3IgKGNvbnN0IHNoOjpBdHRyaWJ1dGUgJmF0dHJp
YiA6IG1TdGF0ZS5tQXR0cmlidXRlcykKLSAgICB7Ci0gICAgICAgIGNvdW50ICs9IChhdHRyaWIu
c3RhdGljVXNlID8gMSA6IDApOwotICAgIH0KLQotICAgIHJldHVybiBjb3VudDsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KG1TdGF0ZS5tQXR0cmlidXRlcy5zaXplKCkpOwogfQogCiBH
TGludCBQcm9ncmFtOjpnZXRBY3RpdmVBdHRyaWJ1dGVNYXhMZW5ndGgoKSBjb25zdApAQCAtMTE3
OSwyMCArMTI5OSw3OSBAQCBHTGludCBQcm9ncmFtOjpnZXRBY3RpdmVBdHRyaWJ1dGVNYXhMZW5n
dGgoKSBjb25zdAogCiAgICAgZm9yIChjb25zdCBzaDo6QXR0cmlidXRlICZhdHRyaWIgOiBtU3Rh
dGUubUF0dHJpYnV0ZXMpCiAgICAgewotICAgICAgICBpZiAoYXR0cmliLnN0YXRpY1VzZSkKKyAg
ICAgICAgbWF4TGVuZ3RoID0gc3RkOjptYXgoYXR0cmliLm5hbWUubGVuZ3RoKCkgKyAxLCBtYXhM
ZW5ndGgpOworICAgIH0KKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGludD4obWF4TGVuZ3Ro
KTsKK30KKworR0x1aW50IFByb2dyYW06OmdldElucHV0UmVzb3VyY2VJbmRleChjb25zdCBHTGNo
YXIgKm5hbWUpIGNvbnN0Cit7CisgICAgZm9yIChHTHVpbnQgYXR0cmlidXRlSW5kZXggPSAwOyBh
dHRyaWJ1dGVJbmRleCA8IG1TdGF0ZS5tQXR0cmlidXRlcy5zaXplKCk7ICsrYXR0cmlidXRlSW5k
ZXgpCisgICAgeworICAgICAgICBjb25zdCBzaDo6QXR0cmlidXRlICZhdHRyaWJ1dGUgPSBtU3Rh
dGUubUF0dHJpYnV0ZXNbYXR0cmlidXRlSW5kZXhdOworICAgICAgICBpZiAoYXR0cmlidXRlLm5h
bWUgPT0gbmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgbWF4TGVuZ3RoID0gc3RkOjptYXgo
YXR0cmliLm5hbWUubGVuZ3RoKCkgKyAxLCBtYXhMZW5ndGgpOworICAgICAgICAgICAgcmV0dXJu
IGF0dHJpYnV0ZUluZGV4OwogICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiBHTF9JTlZBTElE
X0lOREVYOworfQogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50PihtYXhMZW5ndGgpOwor
R0x1aW50IFByb2dyYW06OmdldE91dHB1dFJlc291cmNlSW5kZXgoY29uc3QgR0xjaGFyICpuYW1l
KSBjb25zdAoreworICAgIHJldHVybiBHZXRSZXNvdXJjZUluZGV4RnJvbU5hbWUobVN0YXRlLm1P
dXRwdXRWYXJpYWJsZXMsIHN0ZDo6c3RyaW5nKG5hbWUpKTsKK30KKworc2l6ZV90IFByb2dyYW06
OmdldE91dHB1dFJlc291cmNlQ291bnQoKSBjb25zdAoreworICAgIHJldHVybiAobUxpbmtlZCA/
IG1TdGF0ZS5tT3V0cHV0VmFyaWFibGVzLnNpemUoKSA6IDApOworfQorCit2b2lkIFByb2dyYW06
OmdldElucHV0UmVzb3VyY2VOYW1lKEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMY2hhciAqbmFtZSkgY29uc3QKK3sKKyAgICBHTGludCBzaXplOworICAgIEdMZW51
bSB0eXBlOworICAgIGdldEFjdGl2ZUF0dHJpYnV0ZShpbmRleCwgYnVmU2l6ZSwgbGVuZ3RoLCAm
c2l6ZSwgJnR5cGUsIG5hbWUpOworfQorCit2b2lkIFByb2dyYW06OmdldE91dHB1dFJlc291cmNl
TmFtZShHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIg
Km5hbWUpIGNvbnN0Cit7CisgICAgaWYgKGxlbmd0aCkKKyAgICB7CisgICAgICAgICpsZW5ndGgg
PSAwOworICAgIH0KKworICAgIGlmICghbUxpbmtlZCkKKyAgICB7CisgICAgICAgIGlmIChidWZT
aXplID4gMCkKKyAgICAgICAgeworICAgICAgICAgICAgbmFtZVswXSA9ICdcMCc7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBBU1NFUlQoaW5kZXggPCBtU3RhdGUubU91
dHB1dFZhcmlhYmxlcy5zaXplKCkpOworICAgIGNvbnN0IGF1dG8gJm91dHB1dCA9IG1TdGF0ZS5t
T3V0cHV0VmFyaWFibGVzW2luZGV4XTsKKworICAgIGlmIChidWZTaXplID4gMCkKKyAgICB7Cisg
ICAgICAgIHN0ZDo6c3RyaW5nIG5hbWVXaXRoQXJyYXkgPSAob3V0cHV0LmlzQXJyYXkoKSA/IG91
dHB1dC5uYW1lICsgIlswXSIgOiBvdXRwdXQubmFtZSk7CisKKyAgICAgICAgQ29weVN0cmluZ1Rv
QnVmZmVyKG5hbWUsIG5hbWVXaXRoQXJyYXksIGJ1ZlNpemUsIGxlbmd0aCk7CisgICAgfQogfQog
CiBHTGludCBQcm9ncmFtOjpnZXRGcmFnRGF0YUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZu
YW1lKSBjb25zdAogewogICAgIHN0ZDo6c3RyaW5nIGJhc2VOYW1lKG5hbWUpOwogICAgIHVuc2ln
bmVkIGludCBhcnJheUluZGV4ID0gUGFyc2VBbmRTdHJpcEFycmF5SW5kZXgoJmJhc2VOYW1lKTsK
LSAgICBmb3IgKGF1dG8gb3V0cHV0UGFpciA6IG1TdGF0ZS5tT3V0cHV0VmFyaWFibGVzKQorICAg
IGZvciAoYXV0byBvdXRwdXRQYWlyIDogbVN0YXRlLm1PdXRwdXRMb2NhdGlvbnMpCiAgICAgewog
ICAgICAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZvdXRwdXRWYXJpYWJsZSA9IG91dHB1dFBh
aXIuc2Vjb25kOwogICAgICAgICBpZiAob3V0cHV0VmFyaWFibGUubmFtZSA9PSBiYXNlTmFtZSAm
JiAoYXJyYXlJbmRleCA9PSBHTF9JTlZBTElEX0lOREVYIHx8IGFycmF5SW5kZXggPT0gb3V0cHV0
VmFyaWFibGUuZWxlbWVudCkpCkBAIC0xMjIzLDE0ICsxNDAyLDcgQEAgdm9pZCBQcm9ncmFtOjpn
ZXRBY3RpdmVVbmlmb3JtKEdMdWludCBpbmRleCwKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICBzdHJpbmcgKz0gIlswXSI7CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN0cm5j
cHkobmFtZSwgc3RyaW5nLmNfc3RyKCksIGJ1ZnNpemUpOwotICAgICAgICAgICAgbmFtZVtidWZz
aXplIC0gMV0gPSAnXDAnOwotCi0gICAgICAgICAgICBpZiAobGVuZ3RoKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDxHTHNpemVpPihzdHJsZW4o
bmFtZSkpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQ29weVN0cmluZ1RvQnVmZmVyKG5h
bWUsIHN0cmluZywgYnVmc2l6ZSwgbGVuZ3RoKTsKICAgICAgICAgfQogCiAgICAgICAgICpzaXpl
ID0gdW5pZm9ybS5lbGVtZW50Q291bnQoKTsKQEAgLTEyOTEsNyArMTQ2Myw3IEBAIEdMaW50IFBy
b2dyYW06OmdldEFjdGl2ZVVuaWZvcm1NYXhMZW5ndGgoKSBjb25zdAogR0xpbnQgUHJvZ3JhbTo6
Z2V0QWN0aXZlVW5pZm9ybWkoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpIDwgbVN0YXRlLm1Vbmlmb3Jtcy5z
aXplKCkpOwotICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlmb3JtICZ1bmlmb3JtID0gbVN0YXRlLm1V
bmlmb3Jtc1tpbmRleF07CisgICAgY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9ybSA9IG1TdGF0
ZS5tVW5pZm9ybXNbaW5kZXhdOwogICAgIHN3aXRjaCAocG5hbWUpCiAgICAgewogICAgICAgY2Fz
ZSBHTF9VTklGT1JNX1RZUEU6ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50Pih1bmlm
b3JtLnR5cGUpOwpAQCAtMTMxNiwxNTUgKzE0ODgsMTYzIEBAIGJvb2wgUHJvZ3JhbTo6aXNWYWxp
ZFVuaWZvcm1Mb2NhdGlvbihHTGludCBsb2NhdGlvbikgY29uc3QKICAgICAgICAgICAgIG1TdGF0
ZS5tVW5pZm9ybUxvY2F0aW9uc1tzdGF0aWNfY2FzdDxzaXplX3Q+KGxvY2F0aW9uKV0udXNlZCk7
CiB9CiAKLWJvb2wgUHJvZ3JhbTo6aXNJZ25vcmVkVW5pZm9ybUxvY2F0aW9uKEdMaW50IGxvY2F0
aW9uKSBjb25zdAotewotICAgIC8vIExvY2F0aW9uIGlzIGlnbm9yZWQgaWYgaXQgaXMgLTEgb3Ig
aXQgd2FzIGJvdW5kIGJ1dCBub24tZXhpc3RhbnQgaW4gdGhlIHNoYWRlciBvciBvcHRpbWl6ZWQK
LSAgICAvLyBvdXQKLSAgICByZXR1cm4gbG9jYXRpb24gPT0gLTEgfHwKLSAgICAgICAgICAgKGxv
Y2F0aW9uID49IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pihsb2NhdGlvbikgPCBtU3RhdGUubVVu
aWZvcm1Mb2NhdGlvbnMuc2l6ZSgpICYmCi0gICAgICAgICAgICBtU3RhdGUubVVuaWZvcm1Mb2Nh
dGlvbnNbc3RhdGljX2Nhc3Q8c2l6ZV90Pihsb2NhdGlvbildLmlnbm9yZWQpOwotfQotCiBjb25z
dCBMaW5rZWRVbmlmb3JtICZQcm9ncmFtOjpnZXRVbmlmb3JtQnlMb2NhdGlvbihHTGludCBsb2Nh
dGlvbikgY29uc3QKIHsKICAgICBBU1NFUlQobG9jYXRpb24gPj0gMCAmJiBzdGF0aWNfY2FzdDxz
aXplX3Q+KGxvY2F0aW9uKSA8IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9ucy5zaXplKCkpOwotICAg
IHJldHVybiBtU3RhdGUubVVuaWZvcm1zW21TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tsb2NhdGlv
bl0uaW5kZXhdOworICAgIHJldHVybiBtU3RhdGUubVVuaWZvcm1zW21TdGF0ZS5nZXRVbmlmb3Jt
SW5kZXhGcm9tTG9jYXRpb24obG9jYXRpb24pXTsKIH0KIAotR0xpbnQgUHJvZ3JhbTo6Z2V0VW5p
Zm9ybUxvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdAorY29uc3QgVmFyaWFi
bGVMb2NhdGlvbiAmUHJvZ3JhbTo6Z2V0VW5pZm9ybUxvY2F0aW9uKEdMaW50IGxvY2F0aW9uKSBj
b25zdAogewotICAgIHJldHVybiBtU3RhdGUuZ2V0VW5pZm9ybUxvY2F0aW9uKG5hbWUpOworICAg
IEFTU0VSVChsb2NhdGlvbiA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4obG9jYXRpb24pIDwg
bVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zLnNpemUoKSk7CisgICAgcmV0dXJuIG1TdGF0ZS5tVW5p
Zm9ybUxvY2F0aW9uc1tsb2NhdGlvbl07CiB9CiAKLUdMdWludCBQcm9ncmFtOjpnZXRVbmlmb3Jt
SW5kZXgoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0Citjb25zdCBzdGQ6OnZlY3RvcjxW
YXJpYWJsZUxvY2F0aW9uPiAmUHJvZ3JhbTo6Z2V0VW5pZm9ybUxvY2F0aW9ucygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1TdGF0ZS5nZXRVbmlmb3JtSW5kZXgobmFtZSk7CisgICAgcmV0dXJuIG1T
dGF0ZS5tVW5pZm9ybUxvY2F0aW9uczsKIH0KIAotdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtMWZ2
KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQorY29uc3Qg
TGlua2VkVW5pZm9ybSAmUHJvZ3JhbTo6Z2V0VW5pZm9ybUJ5SW5kZXgoR0x1aW50IGluZGV4KSBj
b25zdAogewotICAgIHNldFVuaWZvcm1JbnRlcm5hbChsb2NhdGlvbiwgY291bnQgKiAxLCB2KTsK
LSAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTFmdihsb2NhdGlvbiwgY291bnQsIHYpOworICAgIEFT
U0VSVChpbmRleCA8IHN0YXRpY19jYXN0PHNpemVfdD4obVN0YXRlLm1Vbmlmb3Jtcy5zaXplKCkp
KTsKKyAgICByZXR1cm4gbVN0YXRlLm1Vbmlmb3Jtc1tpbmRleF07Cit9CisKK0dMaW50IFByb2dy
YW06OmdldFVuaWZvcm1Mb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3QKK3sK
KyAgICByZXR1cm4gbVN0YXRlLmdldFVuaWZvcm1Mb2NhdGlvbihuYW1lKTsKK30KKworR0x1aW50
IFByb2dyYW06OmdldFVuaWZvcm1JbmRleChjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3QK
K3sKKyAgICByZXR1cm4gbVN0YXRlLmdldFVuaWZvcm1JbmRleEZyb21OYW1lKG5hbWUpOworfQor
Cit2b2lkIFByb2dyYW06OnNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIGNvbnN0IEdMZmxvYXQgKnYpCit7CisgICAgR0xzaXplaSBjbGFtcGVkQ291bnQgPSBzZXRV
bmlmb3JtSW50ZXJuYWwobG9jYXRpb24sIGNvdW50LCAxLCB2KTsKKyAgICBtUHJvZ3JhbS0+c2V0
VW5pZm9ybTFmdihsb2NhdGlvbiwgY2xhbXBlZENvdW50LCB2KTsKIH0KIAogdm9pZCBQcm9ncmFt
OjpzZXRVbmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZs
b2F0ICp2KQogewotICAgIHNldFVuaWZvcm1JbnRlcm5hbChsb2NhdGlvbiwgY291bnQgKiAyLCB2
KTsKLSAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTJmdihsb2NhdGlvbiwgY291bnQsIHYpOworICAg
IEdMc2l6ZWkgY2xhbXBlZENvdW50ID0gc2V0VW5pZm9ybUludGVybmFsKGxvY2F0aW9uLCBjb3Vu
dCwgMiwgdik7CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm0yZnYobG9jYXRpb24sIGNsYW1wZWRD
b3VudCwgdik7CiB9CiAKIHZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTNmdihHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKIHsKLSAgICBzZXRVbmlmb3JtSW50
ZXJuYWwobG9jYXRpb24sIGNvdW50ICogMywgdik7Ci0gICAgbVByb2dyYW0tPnNldFVuaWZvcm0z
ZnYobG9jYXRpb24sIGNvdW50LCB2KTsKKyAgICBHTHNpemVpIGNsYW1wZWRDb3VudCA9IHNldFVu
aWZvcm1JbnRlcm5hbChsb2NhdGlvbiwgY291bnQsIDMsIHYpOworICAgIG1Qcm9ncmFtLT5zZXRV
bmlmb3JtM2Z2KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQsIHYpOwogfQogCiB2b2lkIFByb2dyYW06
OnNldFVuaWZvcm00ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxv
YXQgKnYpCiB7Ci0gICAgc2V0VW5pZm9ybUludGVybmFsKGxvY2F0aW9uLCBjb3VudCAqIDQsIHYp
OwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtNGZ2KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAg
R0xzaXplaSBjbGFtcGVkQ291bnQgPSBzZXRVbmlmb3JtSW50ZXJuYWwobG9jYXRpb24sIGNvdW50
LCA0LCB2KTsKKyAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTRmdihsb2NhdGlvbiwgY2xhbXBlZENv
dW50LCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtMWl2KEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKIHsKLSAgICBzZXRVbmlmb3JtSW50ZXJu
YWwobG9jYXRpb24sIGNvdW50ICogMSwgdik7Ci0gICAgbVByb2dyYW0tPnNldFVuaWZvcm0xaXYo
bG9jYXRpb24sIGNvdW50LCB2KTsKKyAgICBHTHNpemVpIGNsYW1wZWRDb3VudCA9IHNldFVuaWZv
cm1JbnRlcm5hbChsb2NhdGlvbiwgY291bnQsIDEsIHYpOworICAgIG1Qcm9ncmFtLT5zZXRVbmlm
b3JtMWl2KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQsIHYpOwogfQogCiB2b2lkIFByb2dyYW06OnNl
dFVuaWZvcm0yaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2
KQogewotICAgIHNldFVuaWZvcm1JbnRlcm5hbChsb2NhdGlvbiwgY291bnQgKiAyLCB2KTsKLSAg
ICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTJpdihsb2NhdGlvbiwgY291bnQsIHYpOworICAgIEdMc2l6
ZWkgY2xhbXBlZENvdW50ID0gc2V0VW5pZm9ybUludGVybmFsKGxvY2F0aW9uLCBjb3VudCwgMiwg
dik7CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm0yaXYobG9jYXRpb24sIGNsYW1wZWRDb3VudCwg
dik7CiB9CiAKIHZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTNpdihHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCiB7Ci0gICAgc2V0VW5pZm9ybUludGVybmFsKGxv
Y2F0aW9uLCBjb3VudCAqIDMsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtM2l2KGxvY2F0
aW9uLCBjb3VudCwgdik7CisgICAgR0xzaXplaSBjbGFtcGVkQ291bnQgPSBzZXRVbmlmb3JtSW50
ZXJuYWwobG9jYXRpb24sIGNvdW50LCAzLCB2KTsKKyAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTNp
dihsb2NhdGlvbiwgY2xhbXBlZENvdW50LCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtOjpzZXRVbmlm
b3JtNGl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKIHsK
LSAgICBzZXRVbmlmb3JtSW50ZXJuYWwobG9jYXRpb24sIGNvdW50ICogNCwgdik7Ci0gICAgbVBy
b2dyYW0tPnNldFVuaWZvcm00aXYobG9jYXRpb24sIGNvdW50LCB2KTsKKyAgICBHTHNpemVpIGNs
YW1wZWRDb3VudCA9IHNldFVuaWZvcm1JbnRlcm5hbChsb2NhdGlvbiwgY291bnQsIDQsIHYpOwor
ICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtNGl2KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQsIHYpOwog
fQogCiB2b2lkIFByb2dyYW06OnNldFVuaWZvcm0xdWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTHVpbnQgKnYpCiB7Ci0gICAgc2V0VW5pZm9ybUludGVybmFsKGxvY2F0
aW9uLCBjb3VudCAqIDEsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtMXVpdihsb2NhdGlv
biwgY291bnQsIHYpOworICAgIEdMc2l6ZWkgY2xhbXBlZENvdW50ID0gc2V0VW5pZm9ybUludGVy
bmFsKGxvY2F0aW9uLCBjb3VudCwgMSwgdik7CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm0xdWl2
KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQsIHYpOwogfQogCiB2b2lkIFByb2dyYW06OnNldFVuaWZv
cm0ydWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYpCiB7
Ci0gICAgc2V0VW5pZm9ybUludGVybmFsKGxvY2F0aW9uLCBjb3VudCAqIDIsIHYpOwotICAgIG1Q
cm9ncmFtLT5zZXRVbmlmb3JtMnVpdihsb2NhdGlvbiwgY291bnQsIHYpOworICAgIEdMc2l6ZWkg
Y2xhbXBlZENvdW50ID0gc2V0VW5pZm9ybUludGVybmFsKGxvY2F0aW9uLCBjb3VudCwgMiwgdik7
CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm0ydWl2KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQsIHYp
OwogfQogCiB2b2lkIFByb2dyYW06OnNldFVuaWZvcm0zdWl2KEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYpCiB7Ci0gICAgc2V0VW5pZm9ybUludGVybmFsKGxv
Y2F0aW9uLCBjb3VudCAqIDMsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtM3Vpdihsb2Nh
dGlvbiwgY291bnQsIHYpOworICAgIEdMc2l6ZWkgY2xhbXBlZENvdW50ID0gc2V0VW5pZm9ybUlu
dGVybmFsKGxvY2F0aW9uLCBjb3VudCwgMywgdik7CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm0z
dWl2KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQsIHYpOwogfQogCiB2b2lkIFByb2dyYW06OnNldFVu
aWZvcm00dWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYp
CiB7Ci0gICAgc2V0VW5pZm9ybUludGVybmFsKGxvY2F0aW9uLCBjb3VudCAqIDQsIHYpOwotICAg
IG1Qcm9ncmFtLT5zZXRVbmlmb3JtNHVpdihsb2NhdGlvbiwgY291bnQsIHYpOworICAgIEdMc2l6
ZWkgY2xhbXBlZENvdW50ID0gc2V0VW5pZm9ybUludGVybmFsKGxvY2F0aW9uLCBjb3VudCwgNCwg
dik7CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm00dWl2KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQs
IHYpOwogfQogCiB2b2lkIFByb2dyYW06OnNldFVuaWZvcm1NYXRyaXgyZnYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnYp
CiB7Ci0gICAgc2V0TWF0cml4VW5pZm9ybUludGVybmFsPDIsIDI+KGxvY2F0aW9uLCBjb3VudCwg
dHJhbnNwb3NlLCB2KTsKLSAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlv
biwgY291bnQsIHRyYW5zcG9zZSwgdik7CisgICAgR0xzaXplaSBjbGFtcGVkQ291bnQgPSBzZXRN
YXRyaXhVbmlmb3JtSW50ZXJuYWw8MiwgMj4obG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHYp
OworICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBjbGFtcGVkQ291
bnQsIHRyYW5zcG9zZSwgdik7CiB9CiAKIHZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJpeDNm
dihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29u
c3QgR0xmbG9hdCAqdikKIHsKLSAgICBzZXRNYXRyaXhVbmlmb3JtSW50ZXJuYWw8MywgMz4obG9j
YXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0
cml4M2Z2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKKyAgICBHTHNpemVpIGNsYW1w
ZWRDb3VudCA9IHNldE1hdHJpeFVuaWZvcm1JbnRlcm5hbDwzLCAzPihsb2NhdGlvbiwgY291bnQs
IHRyYW5zcG9zZSwgdik7CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm1NYXRyaXgzZnYobG9jYXRp
b24sIGNsYW1wZWRDb3VudCwgdHJhbnNwb3NlLCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtOjpzZXRV
bmlmb3JtTWF0cml4NGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2KQogewotICAgIHNldE1hdHJpeFVuaWZvcm1JbnRl
cm5hbDw0LCA0Pihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdik7Ci0gICAgbVByb2dyYW0t
PnNldFVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHYpOworICAg
IEdMc2l6ZWkgY2xhbXBlZENvdW50ID0gc2V0TWF0cml4VW5pZm9ybUludGVybmFsPDQsIDQ+KGxv
Y2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKKyAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1h
dHJpeDRmdihsb2NhdGlvbiwgY2xhbXBlZENvdW50LCB0cmFuc3Bvc2UsIHYpOwogfQogCiB2b2lk
IFByb2dyYW06OnNldFVuaWZvcm1NYXRyaXgyeDNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdikKIHsKLSAgICBzZXRN
YXRyaXhVbmlmb3JtSW50ZXJuYWw8MiwgMz4obG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHYp
OwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4MngzZnYobG9jYXRpb24sIGNvdW50LCB0
cmFuc3Bvc2UsIHYpOworICAgIEdMc2l6ZWkgY2xhbXBlZENvdW50ID0gc2V0TWF0cml4VW5pZm9y
bUludGVybmFsPDIsIDM+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKKyAgICBtUHJv
Z3JhbS0+c2V0VW5pZm9ybU1hdHJpeDJ4M2Z2KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQsIHRyYW5z
cG9zZSwgdik7CiB9CiAKIHZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJpeDJ4NGZ2KEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZs
b2F0ICp2KQogewotICAgIHNldE1hdHJpeFVuaWZvcm1JbnRlcm5hbDwyLCA0Pihsb2NhdGlvbiwg
Y291bnQsIHRyYW5zcG9zZSwgdik7Ci0gICAgbVByb2dyYW0tPnNldFVuaWZvcm1NYXRyaXgyeDRm
dihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdik7CisgICAgR0xzaXplaSBjbGFtcGVkQ291
bnQgPSBzZXRNYXRyaXhVbmlmb3JtSW50ZXJuYWw8MiwgND4obG9jYXRpb24sIGNvdW50LCB0cmFu
c3Bvc2UsIHYpOworICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4Mng0ZnYobG9jYXRpb24s
IGNsYW1wZWRDb3VudCwgdHJhbnNwb3NlLCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtOjpzZXRVbmlm
b3JtTWF0cml4M3gyZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0
cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnYpCiB7Ci0gICAgc2V0TWF0cml4VW5pZm9ybUludGVy
bmFsPDMsIDI+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKLSAgICBtUHJvZ3JhbS0+
c2V0VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKKyAg
ICBHTHNpemVpIGNsYW1wZWRDb3VudCA9IHNldE1hdHJpeFVuaWZvcm1JbnRlcm5hbDwzLCAyPihs
b2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdik7CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm1N
YXRyaXgzeDJmdihsb2NhdGlvbiwgY2xhbXBlZENvdW50LCB0cmFuc3Bvc2UsIHYpOwogfQogCiB2
b2lkIFByb2dyYW06OnNldFVuaWZvcm1NYXRyaXgzeDRmdihHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdikKIHsKLSAgICBz
ZXRNYXRyaXhVbmlmb3JtSW50ZXJuYWw8MywgND4obG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2Us
IHYpOwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4M3g0ZnYobG9jYXRpb24sIGNvdW50
LCB0cmFuc3Bvc2UsIHYpOworICAgIEdMc2l6ZWkgY2xhbXBlZENvdW50ID0gc2V0TWF0cml4VW5p
Zm9ybUludGVybmFsPDMsIDQ+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKKyAgICBt
UHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDN4NGZ2KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQsIHRy
YW5zcG9zZSwgdik7CiB9CiAKIHZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybU1hdHJpeDR4MmZ2KEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBH
TGZsb2F0ICp2KQogewotICAgIHNldE1hdHJpeFVuaWZvcm1JbnRlcm5hbDw0LCAyPihsb2NhdGlv
biwgY291bnQsIHRyYW5zcG9zZSwgdik7Ci0gICAgbVByb2dyYW0tPnNldFVuaWZvcm1NYXRyaXg0
eDJmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdik7CisgICAgR0xzaXplaSBjbGFtcGVk
Q291bnQgPSBzZXRNYXRyaXhVbmlmb3JtSW50ZXJuYWw8NCwgMj4obG9jYXRpb24sIGNvdW50LCB0
cmFuc3Bvc2UsIHYpOworICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4NHgyZnYobG9jYXRp
b24sIGNsYW1wZWRDb3VudCwgdHJhbnNwb3NlLCB2KTsKIH0KIAogdm9pZCBQcm9ncmFtOjpzZXRV
bmlmb3JtTWF0cml4NHgzZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnYpCiB7Ci0gICAgc2V0TWF0cml4VW5pZm9ybUlu
dGVybmFsPDQsIDM+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKLSAgICBtUHJvZ3Jh
bS0+c2V0VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsK
KyAgICBHTHNpemVpIGNsYW1wZWRDb3VudCA9IHNldE1hdHJpeFVuaWZvcm1JbnRlcm5hbDw0LCAz
Pihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdik7CisgICAgbVByb2dyYW0tPnNldFVuaWZv
cm1NYXRyaXg0eDNmdihsb2NhdGlvbiwgY2xhbXBlZENvdW50LCB0cmFuc3Bvc2UsIHYpOwogfQog
CiB2b2lkIFByb2dyYW06OmdldFVuaWZvcm1mdihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCAqdikg
Y29uc3QKQEAgLTE1MjcsMjIgKzE3MDcsMTIgQEAgYm9vbCBQcm9ncmFtOjp2YWxpZGF0ZVNhbXBs
ZXJzKEluZm9Mb2cgKmluZm9Mb2csIGNvbnN0IENhcHMgJmNhcHMpCiAgICAgLy8gaWYgYW55IHR3
byBhY3RpdmUgc2FtcGxlcnMgaW4gYSBwcm9ncmFtIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMsIGJ1
dCByZWZlciB0byB0aGUgc2FtZQogICAgIC8vIHRleHR1cmUgaW1hZ2UgdW5pdCwgYW5kIHRoaXMg
aXMgdGhlIGN1cnJlbnQgcHJvZ3JhbSwgdGhlbiBWYWxpZGF0ZVByb2dyYW0gd2lsbCBmYWlsLCBh
bmQKICAgICAvLyBEcmF3QXJyYXlzIGFuZCBEcmF3RWxlbWVudHMgd2lsbCBpc3N1ZSB0aGUgSU5W
QUxJRF9PUEVSQVRJT04gZXJyb3IuCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4
ID0gbVNhbXBsZXJVbmlmb3JtUmFuZ2Uuc3RhcnQ7Ci0gICAgICAgICBzYW1wbGVySW5kZXggPCBt
U2FtcGxlclVuaWZvcm1SYW5nZS5lbmQ7ICsrc2FtcGxlckluZGV4KQorICAgIGZvciAoY29uc3Qg
YXV0byAmc2FtcGxlckJpbmRpbmcgOiBtU3RhdGUubVNhbXBsZXJCaW5kaW5ncykKICAgICB7Ci0g
ICAgICAgIGNvbnN0IExpbmtlZFVuaWZvcm0gJnVuaWZvcm0gPSBtU3RhdGUubVVuaWZvcm1zW3Nh
bXBsZXJJbmRleF07Ci0gICAgICAgIEFTU0VSVCh1bmlmb3JtLmlzU2FtcGxlcigpKTsKLQotICAg
ICAgICBpZiAoIXVuaWZvcm0uc3RhdGljVXNlKQotICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIEdMZW51bSB0ZXh0dXJlVHlwZSA9IHNhbXBsZXJCaW5kaW5nLnRleHR1cmVUeXBlOwogCi0g
ICAgICAgIGNvbnN0IEdMdWludCAqZGF0YVB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1
aW50ICo+KHVuaWZvcm0uZ2V0RGF0YVB0clRvRWxlbWVudCgwKSk7Ci0gICAgICAgIEdMZW51bSB0
ZXh0dXJlVHlwZSAgICA9IFNhbXBsZXJUeXBlVG9UZXh0dXJlVHlwZSh1bmlmb3JtLnR5cGUpOwot
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGFycmF5RWxlbWVudCA9IDA7IGFycmF5RWxlbWVu
dCA8IHVuaWZvcm0uZWxlbWVudENvdW50KCk7ICsrYXJyYXlFbGVtZW50KQorICAgICAgICBmb3Ig
KEdMdWludCB0ZXh0dXJlVW5pdCA6IHNhbXBsZXJCaW5kaW5nLmJvdW5kVGV4dHVyZVVuaXRzKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBHTHVpbnQgdGV4dHVyZVVuaXQgPSBkYXRhUHRyW2FycmF5
RWxlbWVudF07Ci0KICAgICAgICAgICAgIGlmICh0ZXh0dXJlVW5pdCA+PSBjYXBzLm1heENvbWJp
bmVkVGV4dHVyZUltYWdlVW5pdHMpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYg
KGluZm9Mb2cpCkBAIC0xNjA4LDE0ICsxNzc4LDcgQEAgdm9pZCBQcm9ncmFtOjpnZXRBY3RpdmVV
bmlmb3JtQmxvY2tOYW1lKEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0xzaXplaSBidWZTaXoK
ICAgICAgICAgewogICAgICAgICAgICAgc3RyaW5nICs9IEFycmF5U3RyaW5nKHVuaWZvcm1CbG9j
ay5hcnJheUVsZW1lbnQpOwogICAgICAgICB9Ci0KLSAgICAgICAgc3RybmNweSh1bmlmb3JtQmxv
Y2tOYW1lLCBzdHJpbmcuY19zdHIoKSwgYnVmU2l6ZSk7Ci0gICAgICAgIHVuaWZvcm1CbG9ja05h
bWVbYnVmU2l6ZSAtIDFdID0gJ1wwJzsKLQotICAgICAgICBpZiAobGVuZ3RoKQotICAgICAgICB7
Ci0gICAgICAgICAgICAqbGVuZ3RoID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4oc3RybGVuKHVuaWZv
cm1CbG9ja05hbWUpKTsKLSAgICAgICAgfQorICAgICAgICBDb3B5U3RyaW5nVG9CdWZmZXIodW5p
Zm9ybUJsb2NrTmFtZSwgc3RyaW5nLCBidWZTaXplLCBsZW5ndGgpOwogICAgIH0KIH0KIApAQCAt
MTY0NywxMiArMTgxMCwxMiBAQCBHTGludCBQcm9ncmFtOjpnZXRBY3RpdmVVbmlmb3JtQmxvY2tN
YXhMZW5ndGgoKSBjb25zdAogR0x1aW50IFByb2dyYW06OmdldFVuaWZvcm1CbG9ja0luZGV4KGNv
bnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdAogewogICAgIHNpemVfdCBzdWJzY3JpcHQgICAg
ID0gR0xfSU5WQUxJRF9JTkRFWDsKLSAgICBzdGQ6OnN0cmluZyBiYXNlTmFtZSA9IGdsOjpQYXJz
ZVVuaWZvcm1OYW1lKG5hbWUsICZzdWJzY3JpcHQpOworICAgIHN0ZDo6c3RyaW5nIGJhc2VOYW1l
ID0gUGFyc2VSZXNvdXJjZU5hbWUobmFtZSwgJnN1YnNjcmlwdCk7CiAKICAgICB1bnNpZ25lZCBp
bnQgbnVtVW5pZm9ybUJsb2NrcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obVN0YXRlLm1V
bmlmb3JtQmxvY2tzLnNpemUoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgYmxvY2tJbmRleCA9
IDA7IGJsb2NrSW5kZXggPCBudW1Vbmlmb3JtQmxvY2tzOyBibG9ja0luZGV4KyspCiAgICAgewot
ICAgICAgICBjb25zdCBnbDo6VW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxvY2sgPSBtU3RhdGUubVVu
aWZvcm1CbG9ja3NbYmxvY2tJbmRleF07CisgICAgICAgIGNvbnN0IFVuaWZvcm1CbG9jayAmdW5p
Zm9ybUJsb2NrID0gbVN0YXRlLm1Vbmlmb3JtQmxvY2tzW2Jsb2NrSW5kZXhdOwogICAgICAgICBp
ZiAodW5pZm9ybUJsb2NrLm5hbWUgPT0gYmFzZU5hbWUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGNvbnN0IGJvb2wgYXJyYXlFbGVtZW50WmVybyA9CkBAIC0xNjc3LDYgKzE4NDAsNyBAQCBjb25z
dCBVbmlmb3JtQmxvY2sgJlByb2dyYW06OmdldFVuaWZvcm1CbG9ja0J5SW5kZXgoR0x1aW50IGlu
ZGV4KSBjb25zdAogdm9pZCBQcm9ncmFtOjpiaW5kVW5pZm9ybUJsb2NrKEdMdWludCB1bmlmb3Jt
QmxvY2tJbmRleCwgR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpCiB7CiAgICAgbVN0YXRlLm1V
bmlmb3JtQmxvY2tCaW5kaW5nc1t1bmlmb3JtQmxvY2tJbmRleF0gPSB1bmlmb3JtQmxvY2tCaW5k
aW5nOworICAgIG1TdGF0ZS5tQWN0aXZlVW5pZm9ybUJsb2NrQmluZGluZ3Muc2V0KHVuaWZvcm1C
bG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5nICE9IDApOwogICAgIG1Qcm9ncmFtLT5zZXRV
bmlmb3JtQmxvY2tCaW5kaW5nKHVuaWZvcm1CbG9ja0luZGV4LCB1bmlmb3JtQmxvY2tCaW5kaW5n
KTsKIH0KIApAQCAtMTcwOSwyNCArMTg3MywyNSBAQCB2b2lkIFByb2dyYW06OmdldFRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZyhHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaQog
ewogICAgIGlmIChtTGlua2VkKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGluZGV4IDwgbVN0YXRl
Lm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJzLnNpemUoKSk7Ci0gICAgICAgIGNvbnN0IHNo
OjpWYXJ5aW5nICZ2YXJ5aW5nID0gbVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJz
W2luZGV4XTsKLSAgICAgICAgR0xzaXplaSBsYXN0TmFtZUlkeCA9IHN0ZDo6bWluKGJ1ZlNpemUg
LSAxLCBzdGF0aWNfY2FzdDxHTHNpemVpPih2YXJ5aW5nLm5hbWUubGVuZ3RoKCkpKTsKKyAgICAg
ICAgQVNTRVJUKGluZGV4IDwgbVN0YXRlLm1MaW5rZWRUcmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmdz
LnNpemUoKSk7CisgICAgICAgIGNvbnN0IGF1dG8gJnZhciAgICAgPSBtU3RhdGUubUxpbmtlZFRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZ3NbaW5kZXhdOworICAgICAgICBzdGQ6OnN0cmluZyB2YXJO
YW1lID0gdmFyLm5hbWVXaXRoQXJyYXlJbmRleCgpOworICAgICAgICBHTHNpemVpIGxhc3ROYW1l
SWR4ID0gc3RkOjptaW4oYnVmU2l6ZSAtIDEsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHZhck5hbWUu
bGVuZ3RoKCkpKTsKICAgICAgICAgaWYgKGxlbmd0aCkKICAgICAgICAgewogICAgICAgICAgICAg
Kmxlbmd0aCA9IGxhc3ROYW1lSWR4OwogICAgICAgICB9CiAgICAgICAgIGlmIChzaXplKQogICAg
ICAgICB7Ci0gICAgICAgICAgICAqc2l6ZSA9IHZhcnlpbmcuZWxlbWVudENvdW50KCk7CisgICAg
ICAgICAgICAqc2l6ZSA9IHZhci5zaXplKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHR5cGUp
CiAgICAgICAgIHsKLSAgICAgICAgICAgICp0eXBlID0gdmFyeWluZy50eXBlOworICAgICAgICAg
ICAgKnR5cGUgPSB2YXIudHlwZTsKICAgICAgICAgfQogICAgICAgICBpZiAobmFtZSkKICAgICAg
ICAgewotICAgICAgICAgICAgbWVtY3B5KG5hbWUsIHZhcnlpbmcubmFtZS5jX3N0cigpLCBsYXN0
TmFtZUlkeCk7CisgICAgICAgICAgICBtZW1jcHkobmFtZSwgdmFyTmFtZS5jX3N0cigpLCBsYXN0
TmFtZUlkeCk7CiAgICAgICAgICAgICBuYW1lW2xhc3ROYW1lSWR4XSA9ICdcMCc7CiAgICAgICAg
IH0KICAgICB9CkBAIC0xNzM2LDcgKzE5MDEsNyBAQCBHTHNpemVpIFByb2dyYW06OmdldFRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ0NvdW50KCkgY29uc3QKIHsKICAgICBpZiAobUxpbmtlZCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTHNpemVpPihtU3RhdGUubVRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ1ZhcnMuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEdMc2l6ZWk+KG1TdGF0ZS5tTGlua2VkVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncy5zaXplKCkp
OwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMTc0OSw5ICsxOTE0LDEwIEBAIEdMc2l6ZWkg
UHJvZ3JhbTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTWF4TGVuZ3RoKCkgY29uc3QKICAg
ICBpZiAobUxpbmtlZCkKICAgICB7CiAgICAgICAgIEdMc2l6ZWkgbWF4U2l6ZSA9IDA7Ci0gICAg
ICAgIGZvciAoY29uc3Qgc2g6OlZhcnlpbmcgJnZhcnlpbmcgOiBtU3RhdGUubVRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZ1ZhcnMpCisgICAgICAgIGZvciAoY29uc3QgYXV0byAmdmFyIDogbVN0YXRl
Lm1MaW5rZWRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBtYXhTaXplID0gc3RkOjptYXgobWF4U2l6ZSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4odmFyeWlu
Zy5uYW1lLmxlbmd0aCgpICsgMSkpOworICAgICAgICAgICAgbWF4U2l6ZSA9CisgICAgICAgICAg
ICAgICAgc3RkOjptYXgobWF4U2l6ZSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4odmFyLm5hbWVXaXRo
QXJyYXlJbmRleCgpLmxlbmd0aCgpICsgMSkpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJu
IG1heFNpemU7CkBAIC0xNzY3LDEwICsxOTMzLDExIEBAIEdMZW51bSBQcm9ncmFtOjpnZXRUcmFu
c2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSBjb25zdAogICAgIHJldHVybiBtU3RhdGUubVRyYW5z
Zm9ybUZlZWRiYWNrQnVmZmVyTW9kZTsKIH0KIAotYm9vbCBQcm9ncmFtOjpsaW5rVmFyeWluZ3Mo
SW5mb0xvZyAmaW5mb0xvZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRl
ciAqdmVydGV4U2hhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVy
ICpmcmFnbWVudFNoYWRlcikgY29uc3QKK2Jvb2wgUHJvZ3JhbTo6bGlua1ZhcnlpbmdzKEluZm9M
b2cgJmluZm9Mb2cpIGNvbnN0CiB7CisgICAgY29uc3QgU2hhZGVyICp2ZXJ0ZXhTaGFkZXIgICA9
IG1TdGF0ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXI7CisgICAgY29uc3QgU2hhZGVyICpmcmFnbWVu
dFNoYWRlciA9IG1TdGF0ZS5tQXR0YWNoZWRGcmFnbWVudFNoYWRlcjsKKwogICAgIEFTU0VSVCh2
ZXJ0ZXhTaGFkZXItPmdldFNoYWRlclZlcnNpb24oKSA9PSBmcmFnbWVudFNoYWRlci0+Z2V0U2hh
ZGVyVmVyc2lvbigpKTsKIAogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpWYXJ5aW5nPiAmdmVy
dGV4VmFyeWluZ3MgICA9IHZlcnRleFNoYWRlci0+Z2V0VmFyeWluZ3MoKTsKQEAgLTE4MzUsMTU5
ICsyMDAyLDUyIEBAIGJvb2wgUHJvZ3JhbTo6bGlua1ZhcnlpbmdzKEluZm9Mb2cgJmluZm9Mb2cs
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBUT0RPKGptYWRpbGwpOiB2ZXJpZnkgbm8gdW5t
YXRjaGVkIHZlcnRleCB2YXJ5aW5ncz8KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFBy
b2dyYW06OnZhbGlkYXRlVmVydGV4QW5kRnJhZ21lbnRVbmlmb3JtcyhJbmZvTG9nICZpbmZvTG9n
KSBjb25zdAotewotICAgIC8vIENoZWNrIHRoYXQgdW5pZm9ybXMgZGVmaW5lZCBpbiB0aGUgdmVy
dGV4IGFuZCBmcmFnbWVudCBzaGFkZXJzIGFyZSBpZGVudGljYWwKLSAgICBzdGQ6Om1hcDxzdGQ6
OnN0cmluZywgTGlua2VkVW5pZm9ybT4gbGlua2VkVW5pZm9ybXM7Ci0gICAgY29uc3Qgc3RkOjp2
ZWN0b3I8c2g6OlVuaWZvcm0+ICZ2ZXJ0ZXhVbmlmb3JtcyA9IG1TdGF0ZS5tQXR0YWNoZWRWZXJ0
ZXhTaGFkZXItPmdldFVuaWZvcm1zKCk7Ci0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlVuaWZv
cm0+ICZmcmFnbWVudFVuaWZvcm1zID0KLSAgICAgICAgbVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50
U2hhZGVyLT5nZXRVbmlmb3JtcygpOwotCi0gICAgZm9yIChjb25zdCBzaDo6VW5pZm9ybSAmdmVy
dGV4VW5pZm9ybSA6IHZlcnRleFVuaWZvcm1zKQorICAgIGlmICghbGlua1ZhbGlkYXRlQnVpbHRJ
blZhcnlpbmdzKGluZm9Mb2cpKQogICAgIHsKLSAgICAgICAgbGlua2VkVW5pZm9ybXNbdmVydGV4
VW5pZm9ybS5uYW1lXSA9IExpbmtlZFVuaWZvcm0odmVydGV4VW5pZm9ybSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBmb3IgKGNvbnN0IHNoOjpVbmlmb3JtICZmcmFnbWVu
dFVuaWZvcm0gOiBmcmFnbWVudFVuaWZvcm1zKQotICAgIHsKLSAgICAgICAgYXV0byBlbnRyeSA9
IGxpbmtlZFVuaWZvcm1zLmZpbmQoZnJhZ21lbnRVbmlmb3JtLm5hbWUpOwotICAgICAgICBpZiAo
ZW50cnkgIT0gbGlua2VkVW5pZm9ybXMuZW5kKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIExp
bmtlZFVuaWZvcm0gKnZlcnRleFVuaWZvcm0gICA9ICZlbnRyeS0+c2Vjb25kOwotICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnVuaWZvcm1OYW1lID0gInVuaWZvcm0gJyIgKyB2ZXJ0ZXhV
bmlmb3JtLT5uYW1lICsgIiciOwotICAgICAgICAgICAgaWYgKCFsaW5rVmFsaWRhdGVVbmlmb3Jt
cyhpbmZvTG9nLCB1bmlmb3JtTmFtZSwgKnZlcnRleFVuaWZvcm0sIGZyYWdtZW50VW5pZm9ybSkp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQorICAgIC8vIFRPRE8oam1hZGlsbCk6IHZlcmlmeSBubyB1
bm1hdGNoZWQgdmVydGV4IHZhcnlpbmdzPworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
UHJvZ3JhbTo6bGlua1VuaWZvcm1zKGdsOjpJbmZvTG9nICZpbmZvTG9nLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkNhcHMgJmNhcHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBCaW5kaW5ncyAmdW5pZm9ybUJpbmRpbmdzKQorYm9vbCBQcm9ncmFtOjps
aW5rVW5pZm9ybXMoSW5mb0xvZyAmaW5mb0xvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IENhcHMgJmNhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCaW5k
aW5ncyAmdW5pZm9ybUxvY2F0aW9uQmluZGluZ3MpCiB7Ci0gICAgaWYgKG1TdGF0ZS5tQXR0YWNo
ZWRWZXJ0ZXhTaGFkZXIgJiYgbVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyKQotICAgIHsK
LSAgICAgICAgQVNTRVJUKG1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVyID09IG51bGxwdHIp
OwotICAgICAgICBpZiAoIXZhbGlkYXRlVmVydGV4QW5kRnJhZ21lbnRVbmlmb3JtcyhpbmZvTG9n
KSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgLy8gRmxhdHRlbiB0aGUgdW5pZm9ybXMgbGlzdCAobmVzdGVkIGZpZWxkcykgaW50
byBhIHNpbXBsZSBsaXN0IChubyBuZXN0aW5nKS4KLSAgICAvLyBBbHNvIGNoZWNrIHRoZSBtYXhp
bXVtIHVuaWZvcm0gdmVjdG9yIGFuZCBzYW1wbGVyIGNvdW50cy4KLSAgICBpZiAoIWZsYXR0ZW5V
bmlmb3Jtc0FuZENoZWNrQ2FwcyhjYXBzLCBpbmZvTG9nKSkKKyAgICBVbmlmb3JtTGlua2VyIGxp
bmtlcihtU3RhdGUpOworICAgIGlmICghbGlua2VyLmxpbmsoaW5mb0xvZywgY2FwcywgdW5pZm9y
bUxvY2F0aW9uQmluZGluZ3MpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGlmICghaW5kZXhVbmlmb3JtcyhpbmZvTG9nLCBjYXBzLCB1bmlmb3JtQmluZGluZ3Mp
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBsaW5rZXIuZ2V0UmVz
dWx0cygmbVN0YXRlLm1Vbmlmb3JtcywgJm1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9ucyk7CisKKyAg
ICBsaW5rU2FtcGxlckJpbmRpbmdzKCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBQ
cm9ncmFtOjppbmRleFVuaWZvcm1zKGdsOjpJbmZvTG9nICZpbmZvTG9nLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpDYXBzICZjYXBzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEJpbmRpbmdzICZ1bmlmb3JtQmluZGluZ3MpCit2b2lkIFByb2dyYW06
OmxpbmtTYW1wbGVyQmluZGluZ3MoKQogewotICAgIC8vIFVuaWZvcm1zIGF3YWl0aW5nIGEgbG9j
YXRpb24KLSAgICBzdGQ6OnZlY3RvcjxWYXJpYWJsZUxvY2F0aW9uPiB1bmJvdW5kVW5pZm9ybXM7
Ci0gICAgc3RkOjptYXA8R0x1aW50LCBWYXJpYWJsZUxvY2F0aW9uPiBib3VuZFVuaWZvcm1zOwot
ICAgIGludCBtYXhVbmlmb3JtTG9jYXRpb24gPSAtMTsKLQotICAgIC8vIEdhdGhlciBib3VuZCBh
bmQgdW5ib3VuZCB1bmlmb3JtcwotICAgIGZvciAoc2l6ZV90IHVuaWZvcm1JbmRleCA9IDA7IHVu
aWZvcm1JbmRleCA8IG1TdGF0ZS5tVW5pZm9ybXMuc2l6ZSgpOyB1bmlmb3JtSW5kZXgrKykKLSAg
ICB7Ci0gICAgICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlmb3JtICZ1bmlmb3JtID0gbVN0YXRlLm1V
bmlmb3Jtc1t1bmlmb3JtSW5kZXhdOwotCi0gICAgICAgIGlmICh1bmlmb3JtLmlzQnVpbHRJbigp
KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAg
IGludCBiaW5kaW5nTG9jYXRpb24gPSB1bmlmb3JtQmluZGluZ3MuZ2V0QmluZGluZyh1bmlmb3Jt
Lm5hbWUpOwotCi0gICAgICAgIC8vIFZlcmlmeSB0aGF0IHRoaXMgbG9jYXRpb24gaXNuJ3QgYm91
bmQgdHdpY2UKLSAgICAgICAgaWYgKGJpbmRpbmdMb2NhdGlvbiAhPSAtMSAmJiBib3VuZFVuaWZv
cm1zLmZpbmQoYmluZGluZ0xvY2F0aW9uKSAhPSBib3VuZFVuaWZvcm1zLmVuZCgpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpbmZvTG9nIDw8ICJNdWx0aXBsZSB1bmlmb3JtcyBib3VuZCB0byBs
b2NhdGlvbiAiIDw8IGJpbmRpbmdMb2NhdGlvbiA8PCAiLiI7Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBhcnJheUluZGV4
ID0gMDsgYXJyYXlJbmRleCA8IHVuaWZvcm0uZWxlbWVudENvdW50KCk7IGFycmF5SW5kZXgrKykK
LSAgICAgICAgewotICAgICAgICAgICAgVmFyaWFibGVMb2NhdGlvbiBsb2NhdGlvbih1bmlmb3Jt
Lm5hbWUsIGFycmF5SW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4odW5pZm9ybUluZGV4KSk7Ci0KLSAgICAgICAgICAg
IGlmIChhcnJheUluZGV4ID09IDAgJiYgYmluZGluZ0xvY2F0aW9uICE9IC0xKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGJvdW5kVW5pZm9ybXNbYmluZGluZ0xvY2F0aW9uXSA9IGxv
Y2F0aW9uOwotICAgICAgICAgICAgICAgIG1heFVuaWZvcm1Mb2NhdGlvbiAgICAgICAgICAgICA9
IHN0ZDo6bWF4KG1heFVuaWZvcm1Mb2NhdGlvbiwgYmluZGluZ0xvY2F0aW9uKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB1
bmJvdW5kVW5pZm9ybXMucHVzaF9iYWNrKGxvY2F0aW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQotICAgIC8vIEdhdGhlciB0aGUgcmVzZXJ2ZWQgYmluZGluZ3MsIG9uZXMg
dGhhdCBhcmUgYm91bmQgYnV0IG5vdCByZWZlcmVuY2VkLiAgT3RoZXIgdW5pZm9ybXMgc2hvdWxk
Ci0gICAgLy8gbm90IGJlIGFzc2lnbmVkIHRvIHRob3NlIGxvY2F0aW9ucy4KLSAgICBzdGQ6OnNl
dDxHTHVpbnQ+IHJlc2VydmVkTG9jYXRpb25zOwotICAgIGZvciAoY29uc3QgYXV0byAmYmluZGlu
ZyA6IHVuaWZvcm1CaW5kaW5ncykKLSAgICB7Ci0gICAgICAgIEdMdWludCBsb2NhdGlvbiA9IGJp
bmRpbmcuc2Vjb25kOwotICAgICAgICBpZiAoYm91bmRVbmlmb3Jtcy5maW5kKGxvY2F0aW9uKSA9
PSBib3VuZFVuaWZvcm1zLmVuZCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXNlcnZlZExv
Y2F0aW9ucy5pbnNlcnQobG9jYXRpb24pOwotICAgICAgICAgICAgbWF4VW5pZm9ybUxvY2F0aW9u
ID0gc3RkOjptYXgobWF4VW5pZm9ybUxvY2F0aW9uLCBzdGF0aWNfY2FzdDxpbnQ+KGxvY2F0aW9u
KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBNYWtlIGVub3VnaCBzcGFjZSBmb3IgYWxs
IHVuaWZvcm1zLCBib3VuZCBhbmQgdW5ib3VuZAotICAgIG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9u
cy5yZXNpemUoCi0gICAgICAgIHN0ZDo6bWF4KHVuYm91bmRVbmlmb3Jtcy5zaXplKCkgKyBib3Vu
ZFVuaWZvcm1zLnNpemUoKSArIHJlc2VydmVkTG9jYXRpb25zLnNpemUoKSwKLSAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90PihtYXhVbmlmb3JtTG9jYXRpb24gKyAxKSkpOwotCi0g
ICAgLy8gQXNzaWduIGJvdW5kIHVuaWZvcm1zCi0gICAgZm9yIChjb25zdCBhdXRvICZib3VuZFVu
aWZvcm0gOiBib3VuZFVuaWZvcm1zKQorICAgIG1TdGF0ZS5tU2FtcGxlclVuaWZvcm1SYW5nZS5l
bmQgICA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obVN0YXRlLm1Vbmlmb3Jtcy5zaXplKCkp
OworICAgIG1TdGF0ZS5tU2FtcGxlclVuaWZvcm1SYW5nZS5zdGFydCA9IG1TdGF0ZS5tU2FtcGxl
clVuaWZvcm1SYW5nZS5lbmQ7CisgICAgYXV0byBzYW1wbGVySXRlciAgICAgICAgICAgICAgICAg
ID0gbVN0YXRlLm1Vbmlmb3Jtcy5yYmVnaW4oKTsKKyAgICB3aGlsZSAoc2FtcGxlckl0ZXIgIT0g
bVN0YXRlLm1Vbmlmb3Jtcy5yZW5kKCkgJiYgc2FtcGxlckl0ZXItPmlzU2FtcGxlcigpKQogICAg
IHsKLSAgICAgICAgbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zW2JvdW5kVW5pZm9ybS5maXJzdF0g
PSBib3VuZFVuaWZvcm0uc2Vjb25kOworICAgICAgICAtLW1TdGF0ZS5tU2FtcGxlclVuaWZvcm1S
YW5nZS5zdGFydDsKKyAgICAgICAgKytzYW1wbGVySXRlcjsKICAgICB9Ci0KLSAgICAvLyBBc3Np
Z24gcmVzZXJ2ZWQgdW5pZm9ybXMKLSAgICBmb3IgKGNvbnN0IGF1dG8gJnJlc2VydmVkTG9jYXRp
b24gOiByZXNlcnZlZExvY2F0aW9ucykKKyAgICAvLyBJZiB1bmlmb3JtIGlzIGEgc2FtcGxlciB0
eXBlLCBpbnNlcnQgaXQgaW50byB0aGUgbVNhbXBsZXJCaW5kaW5ncyBhcnJheS4KKyAgICBmb3Ig
KHVuc2lnbmVkIGludCBzYW1wbGVySW5kZXggPSBtU3RhdGUubVNhbXBsZXJVbmlmb3JtUmFuZ2Uu
c3RhcnQ7CisgICAgICAgICBzYW1wbGVySW5kZXggPCBtU3RhdGUubVVuaWZvcm1zLnNpemUoKTsg
KytzYW1wbGVySW5kZXgpCiAgICAgewotICAgICAgICBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNb
cmVzZXJ2ZWRMb2NhdGlvbl0uaWdub3JlZCA9IHRydWU7CisgICAgICAgIGNvbnN0IGF1dG8gJnNh
bXBsZXJVbmlmb3JtID0gbVN0YXRlLm1Vbmlmb3Jtc1tzYW1wbGVySW5kZXhdOworICAgICAgICBH
TGVudW0gdGV4dHVyZVR5cGUgICAgICAgICA9IFNhbXBsZXJUeXBlVG9UZXh0dXJlVHlwZShzYW1w
bGVyVW5pZm9ybS50eXBlKTsKKyAgICAgICAgbVN0YXRlLm1TYW1wbGVyQmluZGluZ3MuZW1wbGFj
ZV9iYWNrKAorICAgICAgICAgICAgU2FtcGxlckJpbmRpbmcodGV4dHVyZVR5cGUsIHNhbXBsZXJV
bmlmb3JtLmVsZW1lbnRDb3VudCgpKSk7CiAgICAgfQotCi0gICAgLy8gQXNzaWduIHVuYm91bmQg
dW5pZm9ybXMKLSAgICBzaXplX3QgbmV4dFVuaWZvcm1Mb2NhdGlvbiA9IDA7Ci0gICAgZm9yIChj
b25zdCBhdXRvICZ1bmJvdW5kVW5pZm9ybSA6IHVuYm91bmRVbmlmb3JtcykKLSAgICB7Ci0gICAg
ICAgIHdoaWxlIChtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbmV4dFVuaWZvcm1Mb2NhdGlvbl0u
dXNlZCB8fAotICAgICAgICAgICAgICAgbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zW25leHRVbmlm
b3JtTG9jYXRpb25dLmlnbm9yZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5leHRVbmlmb3Jt
TG9jYXRpb24rKzsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVChuZXh0VW5pZm9ybUxvY2F0
aW9uIDwgbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zLnNpemUoKSk7Ci0gICAgICAgIG1TdGF0ZS5t
VW5pZm9ybUxvY2F0aW9uc1tuZXh0VW5pZm9ybUxvY2F0aW9uXSA9IHVuYm91bmRVbmlmb3JtOwot
ICAgICAgICBuZXh0VW5pZm9ybUxvY2F0aW9uKys7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7
CiB9CiAKIGJvb2wgUHJvZ3JhbTo6bGlua1ZhbGlkYXRlSW50ZXJmYWNlQmxvY2tGaWVsZHMoSW5m
b0xvZyAmaW5mb0xvZywKQEAgLTIwMTAsMTIgKzIwNzAsMTEgQEAgYm9vbCBQcm9ncmFtOjpsaW5r
VmFsaWRhdGVJbnRlcmZhY2VCbG9ja0ZpZWxkcyhJbmZvTG9nICZpbmZvTG9nLAogICAgIHJldHVy
biB0cnVlOwogfQogCi0vLyBEZXRlcm1pbmVzIHRoZSBtYXBwaW5nIGJldHdlZW4gR0wgYXR0cmli
dXRlcyBhbmQgRGlyZWN0M0QgOSB2ZXJ0ZXggc3RyZWFtIHVzYWdlIGluZGljZXMKLWJvb2wgUHJv
Z3JhbTo6bGlua0F0dHJpYnV0ZXMoY29uc3QgQ29udGV4dFN0YXRlICZkYXRhLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJbmZvTG9nICZpbmZvTG9nLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBCaW5kaW5ncyAmYXR0cmlidXRlQmluZGluZ3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlciAqdmVydGV4U2hhZGVyKQorLy8gQXNzaWdu
cyBsb2NhdGlvbnMgdG8gYWxsIGF0dHJpYnV0ZXMgZnJvbSB0aGUgYmluZGluZ3MgYW5kIHByb2dy
YW0gbG9jYXRpb25zLgorYm9vbCBQcm9ncmFtOjpsaW5rQXR0cmlidXRlcyhjb25zdCBDb250ZXh0
U3RhdGUgJmRhdGEsIEluZm9Mb2cgJmluZm9Mb2cpCiB7CisgICAgY29uc3QgYXV0byAqdmVydGV4
U2hhZGVyID0gbVN0YXRlLmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCk7CisKICAgICB1bnNpZ25l
ZCBpbnQgdXNlZExvY2F0aW9ucyA9IDA7CiAgICAgbVN0YXRlLm1BdHRyaWJ1dGVzICAgICAgICAg
PSB2ZXJ0ZXhTaGFkZXItPmdldEFjdGl2ZUF0dHJpYnV0ZXMoKTsKICAgICBHTHVpbnQgbWF4QXR0
cmlicyAgICAgICAgICA9IGRhdGEuZ2V0Q2FwcygpLm1heFZlcnRleEF0dHJpYnV0ZXM7CkBAIC0y
MDMyLDEwICsyMDkxLDcgQEAgYm9vbCBQcm9ncmFtOjpsaW5rQXR0cmlidXRlcyhjb25zdCBDb250
ZXh0U3RhdGUgJmRhdGEsCiAgICAgLy8gTGluayBhdHRyaWJ1dGVzIHRoYXQgaGF2ZSBhIGJpbmRp
bmcgbG9jYXRpb24KICAgICBmb3IgKHNoOjpBdHRyaWJ1dGUgJmF0dHJpYnV0ZSA6IG1TdGF0ZS5t
QXR0cmlidXRlcykKICAgICB7Ci0gICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IGRvIHN0YXRpY1Vz
ZSBmaWx0ZXJpbmcgc3RlcCBoZXJlLCBvciBub3QgYXQgYWxsCi0gICAgICAgIEFTU0VSVChhdHRy
aWJ1dGUuc3RhdGljVXNlKTsKLQotICAgICAgICBpbnQgYmluZGluZ0xvY2F0aW9uID0gYXR0cmli
dXRlQmluZGluZ3MuZ2V0QmluZGluZyhhdHRyaWJ1dGUubmFtZSk7CisgICAgICAgIGludCBiaW5k
aW5nTG9jYXRpb24gPSBtQXR0cmlidXRlQmluZGluZ3MuZ2V0QmluZGluZyhhdHRyaWJ1dGUubmFt
ZSk7CiAgICAgICAgIGlmIChhdHRyaWJ1dGUubG9jYXRpb24gPT0gLTEgJiYgYmluZGluZ0xvY2F0
aW9uICE9IC0xKQogICAgICAgICB7CiAgICAgICAgICAgICBhdHRyaWJ1dGUubG9jYXRpb24gPSBi
aW5kaW5nTG9jYXRpb247CkBAIC0yMDg0LDggKzIxNDAsNiBAQCBib29sIFByb2dyYW06OmxpbmtB
dHRyaWJ1dGVzKGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAvLyBMaW5rIGF0dHJpYnV0
ZXMgdGhhdCBkb24ndCBoYXZlIGEgYmluZGluZyBsb2NhdGlvbgogICAgIGZvciAoc2g6OkF0dHJp
YnV0ZSAmYXR0cmlidXRlIDogbVN0YXRlLm1BdHRyaWJ1dGVzKQogICAgIHsKLSAgICAgICAgQVNT
RVJUKGF0dHJpYnV0ZS5zdGF0aWNVc2UpOwotCiAgICAgICAgIC8vIE5vdCBzZXQgYnkgZ2xCaW5k
QXR0cmliTG9jYXRpb24gb3IgYnkgbG9jYXRpb24gbGF5b3V0IHF1YWxpZmllcgogICAgICAgICBp
ZiAoYXR0cmlidXRlLmxvY2F0aW9uID09IC0xKQogICAgICAgICB7CkBAIC0yMTA0LDcgKzIxNTgs
NiBAQCBib29sIFByb2dyYW06OmxpbmtBdHRyaWJ1dGVzKGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0
YSwKIAogICAgIGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmlidXRlIDogbVN0YXRlLm1B
dHRyaWJ1dGVzKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZS5zdGF0aWNVc2UpOwog
ICAgICAgICBBU1NFUlQoYXR0cmlidXRlLmxvY2F0aW9uICE9IC0xKTsKICAgICAgICAgaW50IHJl
Z3MgPSBWYXJpYWJsZVJlZ2lzdGVyQ291bnQoYXR0cmlidXRlLnR5cGUpOwogCkBAIC0yMjEyLDcg
KzIyNjUsNyBAQCBib29sIFByb2dyYW06OmxpbmtVbmlmb3JtQmxvY2tzKEluZm9Mb2cgJmluZm9M
b2csIGNvbnN0IENhcHMgJmNhcHMpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgUHJvZ3Jh
bTo6YXJlTWF0Y2hpbmdJbnRlcmZhY2VCbG9ja3MoZ2w6OkluZm9Mb2cgJmluZm9Mb2csCitib29s
IFByb2dyYW06OmFyZU1hdGNoaW5nSW50ZXJmYWNlQmxvY2tzKEluZm9Mb2cgJmluZm9Mb2csCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNoOjpJbnRlcmZh
Y2VCbG9jayAmdmVydGV4SW50ZXJmYWNlQmxvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmZnJhZ21lbnRJbnRlcmZh
Y2VCbG9jaykgY29uc3QKIHsKQEAgLTIzMTAsMjIgKzIzNjMsNiBAQCBib29sIFByb2dyYW06Omxp
bmtWYWxpZGF0ZVZhcmlhYmxlc0Jhc2UoSW5mb0xvZyAmaW5mb0xvZywgY29uc3Qgc3RkOjpzdHJp
bmcgJnZhcgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFByb2dyYW06OmxpbmtWYWxpZGF0
ZVVuaWZvcm1zKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IHN0ZDo6c3RyaW5nICZ1bmlmb3JtTmFt
ZSwgY29uc3Qgc2g6OlVuaWZvcm0gJnZlcnRleFVuaWZvcm0sIGNvbnN0IHNoOjpVbmlmb3JtICZm
cmFnbWVudFVuaWZvcm0pCi17Ci0jaWYgQU5HTEVfUFJPR1JBTV9MSU5LX1ZBTElEQVRFX1VOSUZP
Uk1fUFJFQ0lTSU9OID09IEFOR0xFX0VOQUJMRUQKLSAgICBjb25zdCBib29sIHZhbGlkYXRlUHJl
Y2lzaW9uID0gdHJ1ZTsKLSNlbHNlCi0gICAgY29uc3QgYm9vbCB2YWxpZGF0ZVByZWNpc2lvbiA9
IGZhbHNlOwotI2VuZGlmCi0KLSAgICBpZiAoIWxpbmtWYWxpZGF0ZVZhcmlhYmxlc0Jhc2UoaW5m
b0xvZywgdW5pZm9ybU5hbWUsIHZlcnRleFVuaWZvcm0sIGZyYWdtZW50VW5pZm9ybSwgdmFsaWRh
dGVQcmVjaXNpb24pKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IHJldHVybiB0cnVlOwotfQotCiBib29sIFByb2dyYW06OmxpbmtWYWxpZGF0ZVZhcnlpbmdzKElu
Zm9Mb2cgJmluZm9Mb2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZ2YXJ5aW5nTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc2g6OlZhcnlpbmcgJnZlcnRleFZhcnlpbmcsCkBAIC0yMzU0LDggKzIzOTEs
ODAgQEAgYm9vbCBQcm9ncmFtOjpsaW5rVmFsaWRhdGVWYXJ5aW5ncyhJbmZvTG9nICZpbmZvTG9n
LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFByb2dyYW06OmxpbmtWYWxpZGF0ZVRyYW5z
Zm9ybUZlZWRiYWNrKEluZm9Mb2cgJmluZm9Mb2csCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNvbnN0IHNoOjpWYXJ5aW5nICo+
ICZ2YXJ5aW5ncywKK2Jvb2wgUHJvZ3JhbTo6bGlua1ZhbGlkYXRlQnVpbHRJblZhcnlpbmdzKElu
Zm9Mb2cgJmluZm9Mb2cpIGNvbnN0Cit7CisgICAgY29uc3QgU2hhZGVyICp2ZXJ0ZXhTaGFkZXIg
ICAgICAgICAgICAgICAgICAgICAgID0gbVN0YXRlLm1BdHRhY2hlZFZlcnRleFNoYWRlcjsKKyAg
ICBjb25zdCBTaGFkZXIgKmZyYWdtZW50U2hhZGVyICAgICAgICAgICAgICAgICAgICAgPSBtU3Rh
dGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXI7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlZh
cnlpbmc+ICZ2ZXJ0ZXhWYXJ5aW5ncyAgID0gdmVydGV4U2hhZGVyLT5nZXRWYXJ5aW5ncygpOwor
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpWYXJ5aW5nPiAmZnJhZ21lbnRWYXJ5aW5ncyA9IGZy
YWdtZW50U2hhZGVyLT5nZXRWYXJ5aW5ncygpOworICAgIGludCBzaGFkZXJWZXJzaW9uICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA9IHZlcnRleFNoYWRlci0+Z2V0U2hhZGVyVmVyc2lv
bigpOworCisgICAgaWYgKHNoYWRlclZlcnNpb24gIT0gMTAwKQorICAgIHsKKyAgICAgICAgLy8g
T25seSBFU1NMIDEuMCBoYXMgcmVzdHJpY3Rpb25zIG9uIG1hdGNoaW5nIGlucHV0IGFuZCBvdXRw
dXQgaW52YXJpYW5jZQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIGds
UG9zaXRpb25Jc0ludmFyaWFudCAgID0gZmFsc2U7CisgICAgYm9vbCBnbFBvaW50U2l6ZUlzSW52
YXJpYW50ICA9IGZhbHNlOworICAgIGJvb2wgZ2xGcmFnQ29vcmRJc0ludmFyaWFudCAgPSBmYWxz
ZTsKKyAgICBib29sIGdsUG9pbnRDb29yZElzSW52YXJpYW50ID0gZmFsc2U7CisKKyAgICBmb3Ig
KGNvbnN0IHNoOjpWYXJ5aW5nICZ2YXJ5aW5nIDogdmVydGV4VmFyeWluZ3MpCisgICAgeworICAg
ICAgICBpZiAoIXZhcnlpbmcuaXNCdWlsdEluKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YXJ5aW5nLm5hbWUuY29tcGFyZSgiZ2xf
UG9zaXRpb24iKSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBnbFBvc2l0aW9uSXNJbnZh
cmlhbnQgPSB2YXJ5aW5nLmlzSW52YXJpYW50OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYg
KHZhcnlpbmcubmFtZS5jb21wYXJlKCJnbF9Qb2ludFNpemUiKSA9PSAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICBnbFBvaW50U2l6ZUlzSW52YXJpYW50ID0gdmFyeWluZy5pc0ludmFyaWFudDsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAoY29uc3Qgc2g6OlZhcnlpbmcgJnZhcnlpbmcg
OiBmcmFnbWVudFZhcnlpbmdzKQorICAgIHsKKyAgICAgICAgaWYgKCF2YXJ5aW5nLmlzQnVpbHRJ
bigpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAodmFyeWluZy5uYW1lLmNvbXBhcmUoImdsX0ZyYWdDb29yZCIpID09IDApCisgICAgICAg
IHsKKyAgICAgICAgICAgIGdsRnJhZ0Nvb3JkSXNJbnZhcmlhbnQgPSB2YXJ5aW5nLmlzSW52YXJp
YW50OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHZhcnlpbmcubmFtZS5jb21wYXJlKCJn
bF9Qb2ludENvb3JkIikgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xQb2ludENvb3Jk
SXNJbnZhcmlhbnQgPSB2YXJ5aW5nLmlzSW52YXJpYW50OworICAgICAgICB9CisgICAgfQorCisg
ICAgLy8gVGhlcmUgaXMgc29tZSBhbWJpZ3VpdHkgaW4gRVNTTCAxLjAwLjE3IHBhcmFncmFwaCA0
LjYuNCBpbnRlcnByZXRhdGlvbiwKKyAgICAvLyBmb3IgZXhhbXBsZSwgaHR0cHM6Ly9jdnMua2hy
b25vcy5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTEzODQyLgorICAgIC8vIE5vdCByZXF1
aXJpbmcgaW52YXJpYW5jZSB0byBtYXRjaCBpcyBzdXBwb3J0ZWQgYnk6CisgICAgLy8gZEVRUCwg
V2ViR0wgQ1RTLCBOZXh1cyA1WCBHTEVTCisgICAgaWYgKGdsRnJhZ0Nvb3JkSXNJbnZhcmlhbnQg
JiYgIWdsUG9zaXRpb25Jc0ludmFyaWFudCkKKyAgICB7CisgICAgICAgIGluZm9Mb2cgPDwgImds
X0ZyYWdDb29yZCBjYW4gb25seSBiZSBkZWNsYXJlZCBpbnZhcmlhbnQgaWYgYW5kIG9ubHkgaWYg
Z2xfUG9zaXRpb24gaXMgIgorICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZCBpbnZhcmlhbnQu
IjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoZ2xQb2ludENvb3JkSXNJ
bnZhcmlhbnQgJiYgIWdsUG9pbnRTaXplSXNJbnZhcmlhbnQpCisgICAgeworICAgICAgICBpbmZv
TG9nIDw8ICJnbF9Qb2ludENvb3JkIGNhbiBvbmx5IGJlIGRlY2xhcmVkIGludmFyaWFudCBpZiBh
bmQgb25seSBpZiBnbF9Qb2ludFNpemUgaXMgIgorICAgICAgICAgICAgICAgICAgICJkZWNsYXJl
ZCBpbnZhcmlhbnQuIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIFByb2dyYW06OmxpbmtWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNr
KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJbmZvTG9nICZpbmZvTG9nLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtOjpNZXJnZWRWYXJ5aW5ncyAmdmFy
eWluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENhcHMgJmNhcHMpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHRvdGFsQ29tcG9uZW50cyA9IDA7CkBA
IC0yMzY1LDkgKzI0NzQsMTQgQEAgYm9vbCBQcm9ncmFtOjpsaW5rVmFsaWRhdGVUcmFuc2Zvcm1G
ZWVkYmFjayhJbmZvTG9nICZpbmZvTG9nLAogICAgIGZvciAoY29uc3Qgc3RkOjpzdHJpbmcgJnRm
VmFyeWluZ05hbWUgOiBtU3RhdGUubVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzKQogICAg
IHsKICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwotICAgICAgICBmb3IgKGNvbnN0IHNoOjpW
YXJ5aW5nICp2YXJ5aW5nIDogdmFyeWluZ3MpCisgICAgICAgIHNpemVfdCBzdWJzY3JpcHQgICAg
ID0gR0xfSU5WQUxJRF9JTkRFWDsKKyAgICAgICAgc3RkOjpzdHJpbmcgYmFzZU5hbWUgPSBQYXJz
ZVJlc291cmNlTmFtZSh0ZlZhcnlpbmdOYW1lLCAmc3Vic2NyaXB0KTsKKworICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8gJnJlZiA6IHZhcnlpbmdzKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
dGZWYXJ5aW5nTmFtZSA9PSB2YXJ5aW5nLT5uYW1lKQorICAgICAgICAgICAgY29uc3Qgc2g6OlZh
cnlpbmcgKnZhcnlpbmcgPSByZWYuc2Vjb25kLmdldCgpOworCisgICAgICAgICAgICBpZiAoYmFz
ZU5hbWUgPT0gdmFyeWluZy0+bmFtZSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBp
ZiAodW5pcXVlTmFtZXMuY291bnQodGZWYXJ5aW5nTmFtZSkgPiAwKQogICAgICAgICAgICAgICAg
IHsKQEAgLTIzNzUsMTYgKzI0ODksMjkgQEAgYm9vbCBQcm9ncmFtOjpsaW5rVmFsaWRhdGVUcmFu
c2Zvcm1GZWVkYmFjayhJbmZvTG9nICZpbmZvTG9nLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8IHRmVmFyeWluZ05hbWUgPDwgIikuIjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB1bmlxdWVOYW1lcy5p
bnNlcnQodGZWYXJ5aW5nTmFtZSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAodmFyeWluZy0+aXNB
cnJheSgpKQorICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkg
Pj0gVmVyc2lvbigzLCAxKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChJbmNsdWRlU2FtZUFycmF5RWxlbWVudCh1bmlxdWVOYW1lcywgdGZWYXJ5aW5nTmFtZSkp
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm9Mb2cK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiVHdvIHRyYW5zZm9ybSBmZWVkYmFjayB2
YXJ5aW5ncyBpbmNsdWRlIHRoZSBzYW1lIGFycmF5IGVsZW1lbnQgKCIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA8PCB0ZlZhcnlpbmdOYW1lIDw8ICIpLiI7CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFyeWluZy0+aXNBcnJheSgpKQogICAg
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaW5mb0xvZyA8PCAiQ2FwdHVyZSBv
ZiBhcnJheXMgaXMgdW5kZWZpbmVkIGFuZCBub3Qgc3VwcG9ydGVkLiI7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAg
ICB1bmlxdWVOYW1lcy5pbnNlcnQodGZWYXJ5aW5nTmFtZSk7CisKICAgICAgICAgICAgICAgICAv
LyBUT0RPKGptYWRpbGwpOiBJbnZlc3RpZ2F0ZSBpbXBsZW1lbnRhdGlvbiBsaW1pdHMgb24gRDNE
MTEKLSAgICAgICAgICAgICAgICBzaXplX3QgY29tcG9uZW50Q291bnQgPSBnbDo6VmFyaWFibGVD
b21wb25lbnRDb3VudCh2YXJ5aW5nLT50eXBlKTsKKyAgICAgICAgICAgICAgICBzaXplX3QgZWxl
bWVudENvdW50ID0KKyAgICAgICAgICAgICAgICAgICAgKCh2YXJ5aW5nLT5pc0FycmF5KCkgJiYg
c3Vic2NyaXB0ID09IEdMX0lOVkFMSURfSU5ERVgpID8gdmFyeWluZy0+ZWxlbWVudENvdW50KCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDogMSk7CisgICAgICAgICAgICAgICAgc2l6ZV90IGNvbXBvbmVu
dENvdW50ID0gVmFyaWFibGVDb21wb25lbnRDb3VudCh2YXJ5aW5nLT50eXBlKSAqIGVsZW1lbnRD
b3VudDsKICAgICAgICAgICAgICAgICBpZiAobVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZl
ck1vZGUgPT0gR0xfU0VQQVJBVEVfQVRUUklCUyAmJgogICAgICAgICAgICAgICAgICAgICBjb21w
b25lbnRDb3VudCA+IGNhcHMubWF4VHJhbnNmb3JtRmVlZGJhY2tTZXBhcmF0ZUNvbXBvbmVudHMp
CiAgICAgICAgICAgICAgICAgewpAQCAtMjM5OSwxNiArMjUyNiwxNCBAQCBib29sIFByb2dyYW06
OmxpbmtWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNrKEluZm9Mb2cgJmluZm9Mb2csCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQotICAgICAgICBpZiAo
dGZWYXJ5aW5nTmFtZS5maW5kKCdbJykgIT0gc3RkOjpzdHJpbmc6Om5wb3MpCisgICAgICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBWZXJzaW9uKDMsIDEpICYmCisgICAgICAg
ICAgICB0ZlZhcnlpbmdOYW1lLmZpbmQoJ1snKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykKICAgICAg
ICAgewogICAgICAgICAgICAgaW5mb0xvZyA8PCAiQ2FwdHVyZSBvZiBhcnJheSBlbGVtZW50cyBp
cyB1bmRlZmluZWQgYW5kIG5vdCBzdXBwb3J0ZWQuIjsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQotCiAgICAgICAgIC8vIEFsbCB0cmFuc2Zvcm0gZmVlZGJhY2sgdmFyeWlu
Z3MgYXJlIGV4cGVjdGVkIHRvIGV4aXN0IHNpbmNlIHBhY2tWYXJ5aW5ncyBjaGVja3MgZm9yIHRo
ZW0uCiAgICAgICAgIEFTU0VSVChmb3VuZCk7Ci0gICAgICAgIFVOVVNFRF9BU1NFUlRJT05fVkFS
SUFCTEUoZm91bmQpOwogICAgIH0KIAogICAgIGlmIChtU3RhdGUubVRyYW5zZm9ybUZlZWRiYWNr
QnVmZmVyTW9kZSA9PSBHTF9JTlRFUkxFQVZFRF9BVFRSSUJTICYmCkBAIC0yNDIzLDQ3ICsyNTQ4
LDExNiBAQCBib29sIFByb2dyYW06OmxpbmtWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNrKEluZm9M
b2cgJmluZm9Mb2csCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUHJvZ3JhbTo6Z2F0aGVy
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhjb25zdCBzdGQ6OnZlY3Rvcjxjb25zdCBzaDo6VmFy
eWluZyAqPiAmdmFyeWluZ3MpCit2b2lkIFByb2dyYW06OmdhdGhlclRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ3MoY29uc3QgUHJvZ3JhbTo6TWVyZ2VkVmFyeWluZ3MgJnZhcnlpbmdzKQogewogICAg
IC8vIEdhdGhlciB0aGUgbGlua2VkIHZhcnlpbmdzIHRoYXQgYXJlIHVzZWQgZm9yIHRyYW5zZm9y
bSBmZWVkYmFjaywgdGhleSBzaG91bGQgYWxsIGV4aXN0LgotICAgIG1TdGF0ZS5tVHJhbnNmb3Jt
RmVlZGJhY2tWYXJ5aW5nVmFycy5jbGVhcigpOworICAgIG1TdGF0ZS5tTGlua2VkVHJhbnNmb3Jt
RmVlZGJhY2tWYXJ5aW5ncy5jbGVhcigpOwogICAgIGZvciAoY29uc3Qgc3RkOjpzdHJpbmcgJnRm
VmFyeWluZ05hbWUgOiBtU3RhdGUubVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzKQogICAg
IHsKLSAgICAgICAgZm9yIChjb25zdCBzaDo6VmFyeWluZyAqdmFyeWluZyA6IHZhcnlpbmdzKQor
ICAgICAgICBzaXplX3Qgc3Vic2NyaXB0ICAgICA9IEdMX0lOVkFMSURfSU5ERVg7CisgICAgICAg
IHN0ZDo6c3RyaW5nIGJhc2VOYW1lID0gUGFyc2VSZXNvdXJjZU5hbWUodGZWYXJ5aW5nTmFtZSwg
JnN1YnNjcmlwdCk7CisgICAgICAgIGZvciAoY29uc3QgYXV0byAmcmVmIDogdmFyeWluZ3MpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0ZlZhcnlpbmdOYW1lID09IHZhcnlpbmctPm5hbWUp
CisgICAgICAgICAgICBjb25zdCBzaDo6VmFyeWluZyAqdmFyeWluZyA9IHJlZi5zZWNvbmQuZ2V0
KCk7CisgICAgICAgICAgICBpZiAoYmFzZU5hbWUgPT0gdmFyeWluZy0+bmFtZSkKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBtU3RhdGUubVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ1Zh
cnMucHVzaF9iYWNrKCp2YXJ5aW5nKTsKKyAgICAgICAgICAgICAgICBtU3RhdGUubUxpbmtlZFRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MuZW1wbGFjZV9iYWNrKAorICAgICAgICAgICAgICAgICAg
ICAqdmFyeWluZywgc3RhdGljX2Nhc3Q8R0x1aW50PihzdWJzY3JpcHQpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0KIAotc3RkOjp2
ZWN0b3I8Y29uc3Qgc2g6OlZhcnlpbmcgKj4gUHJvZ3JhbTo6Z2V0TWVyZ2VkVmFyeWluZ3MoKSBj
b25zdAorUHJvZ3JhbTo6TWVyZ2VkVmFyeWluZ3MgUHJvZ3JhbTo6Z2V0TWVyZ2VkVmFyeWluZ3Mo
KSBjb25zdAogewotICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiB1bmlxdWVOYW1lczsKLSAgICBz
dGQ6OnZlY3Rvcjxjb25zdCBzaDo6VmFyeWluZyAqPiB2YXJ5aW5nczsKKyAgICBNZXJnZWRWYXJ5
aW5ncyBtZXJnZWQ7CiAKICAgICBmb3IgKGNvbnN0IHNoOjpWYXJ5aW5nICZ2YXJ5aW5nIDogbVN0
YXRlLm1BdHRhY2hlZFZlcnRleFNoYWRlci0+Z2V0VmFyeWluZ3MoKSkKICAgICB7Ci0gICAgICAg
IGlmICh1bmlxdWVOYW1lcy5jb3VudCh2YXJ5aW5nLm5hbWUpID09IDApCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHVuaXF1ZU5hbWVzLmluc2VydCh2YXJ5aW5nLm5hbWUpOwotICAgICAgICAgICAg
dmFyeWluZ3MucHVzaF9iYWNrKCZ2YXJ5aW5nKTsKLSAgICAgICAgfQorICAgICAgICBtZXJnZWRb
dmFyeWluZy5uYW1lXS52ZXJ0ZXggPSAmdmFyeWluZzsKICAgICB9CiAKICAgICBmb3IgKGNvbnN0
IHNoOjpWYXJ5aW5nICZ2YXJ5aW5nIDogbVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyLT5n
ZXRWYXJ5aW5ncygpKQogICAgIHsKLSAgICAgICAgaWYgKHVuaXF1ZU5hbWVzLmNvdW50KHZhcnlp
bmcubmFtZSkgPT0gMCkKKyAgICAgICAgbWVyZ2VkW3ZhcnlpbmcubmFtZV0uZnJhZ21lbnQgPSAm
dmFyeWluZzsKKyAgICB9CisKKyAgICByZXR1cm4gbWVyZ2VkOworfQorCitzdGQ6OnZlY3RvcjxQ
YWNrZWRWYXJ5aW5nPiBQcm9ncmFtOjpnZXRQYWNrZWRWYXJ5aW5ncygKKyAgICBjb25zdCBQcm9n
cmFtOjpNZXJnZWRWYXJ5aW5ncyAmbWVyZ2VkVmFyeWluZ3MpIGNvbnN0Cit7CisgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+ICZ0ZlZhcnlpbmdzID0gbVN0YXRlLmdldFRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ05hbWVzKCk7CisgICAgc3RkOjp2ZWN0b3I8UGFja2VkVmFyeWluZz4g
cGFja2VkVmFyeWluZ3M7CisgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHVuaXF1ZUZ1bGxOYW1l
czsKKworICAgIGZvciAoY29uc3QgYXV0byAmcmVmIDogbWVyZ2VkVmFyeWluZ3MpCisgICAgewor
ICAgICAgICBjb25zdCBzaDo6VmFyeWluZyAqaW5wdXQgID0gcmVmLnNlY29uZC52ZXJ0ZXg7Cisg
ICAgICAgIGNvbnN0IHNoOjpWYXJ5aW5nICpvdXRwdXQgPSByZWYuc2Vjb25kLmZyYWdtZW50Owor
CisgICAgICAgIC8vIE9ubHkgcGFjayB2YXJ5aW5ncyB0aGF0IGhhdmUgYSBtYXRjaGVkIGlucHV0
IG9yIG91dHB1dCwgcGx1cyBzcGVjaWFsIGJ1aWx0aW5zLgorICAgICAgICBpZiAoKGlucHV0ICYm
IG91dHB1dCkgfHwgKG91dHB1dCAmJiBvdXRwdXQtPmlzQnVpbHRJbigpKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgLy8gV2lsbCBnZXQgdGhlIHZlcnRleCBzaGFkZXIgaW50ZXJwb2xhdGlvbiBi
eSBkZWZhdWx0LgorICAgICAgICAgICAgYXV0byBpbnRlcnBvbGF0aW9uID0gcmVmLnNlY29uZC5n
ZXQoKS0+aW50ZXJwb2xhdGlvbjsKKworICAgICAgICAgICAgLy8gSW50ZXJwb2xhdGlvbiBxdWFs
aWZpZXJzIG11c3QgbWF0Y2guCisgICAgICAgICAgICBpZiAob3V0cHV0LT5pc1N0cnVjdCgpKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEFTU0VSVCghb3V0cHV0LT5pc0FycmF5KCkp
OworICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byAmZmllbGQgOiBvdXRwdXQtPmZpZWxk
cykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZmllbGQu
aXNTdHJ1Y3QoKSAmJiAhZmllbGQuaXNBcnJheSgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGFj
a2VkVmFyeWluZ3MucHVzaF9iYWNrKFBhY2tlZFZhcnlpbmcoZmllbGQsIGludGVycG9sYXRpb24s
IG91dHB1dC0+bmFtZSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwYWNrZWRWYXJ5aW5n
cy5wdXNoX2JhY2soUGFja2VkVmFyeWluZygqb3V0cHV0LCBpbnRlcnBvbGF0aW9uKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IEtlZXAgVHJhbnNmb3JtIEZCIHZhcnlpbmdzIGluIHRoZSBtZXJnZWQgbGlzdCBhbHdheXMuCisg
ICAgICAgIGlmICghaW5wdXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHVuaXF1ZU5hbWVzLmlu
c2VydCh2YXJ5aW5nLm5hbWUpOwotICAgICAgICAgICAgdmFyeWluZ3MucHVzaF9iYWNrKCZ2YXJ5
aW5nKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChj
b25zdCBzdGQ6OnN0cmluZyAmdGZWYXJ5aW5nIDogdGZWYXJ5aW5ncykKKyAgICAgICAgeworICAg
ICAgICAgICAgc2l6ZV90IHN1YnNjcmlwdCAgICAgPSBHTF9JTlZBTElEX0lOREVYOworICAgICAg
ICAgICAgc3RkOjpzdHJpbmcgYmFzZU5hbWUgPSBQYXJzZVJlc291cmNlTmFtZSh0ZlZhcnlpbmcs
ICZzdWJzY3JpcHQpOworICAgICAgICAgICAgaWYgKHVuaXF1ZUZ1bGxOYW1lcy5jb3VudCh0ZlZh
cnlpbmcpID4gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChiYXNlTmFtZSA9PSBpbnB1dC0+bmFtZSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBUcmFuc2Zvcm0gZmVlZGJhY2sgZm9yIHZh
cnlpbmcgc3RydWN0cyBpcyB1bmRlcnNwZWNpZmllZC4KKyAgICAgICAgICAgICAgICAvLyBTZWUg
S2hyb25vcyBidWcgOTg1Ni4KKyAgICAgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBGaWd1
cmUgb3V0IGhvdyB0byBiZSBzcGVjLWNvbXBsaWFudCBoZXJlLgorICAgICAgICAgICAgICAgIGlm
ICghaW5wdXQtPmlzU3RydWN0KCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBwYWNrZWRWYXJ5aW5ncy5wdXNoX2JhY2soUGFja2VkVmFyeWluZygqaW5wdXQsIGlucHV0
LT5pbnRlcnBvbGF0aW9uKSk7CisgICAgICAgICAgICAgICAgICAgIHBhY2tlZFZhcnlpbmdzLmJh
Y2soKS52ZXJ0ZXhPbmx5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgcGFja2VkVmFyeWlu
Z3MuYmFjaygpLmFycmF5SW5kZXggPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KHN1YnNjcmlwdCk7Cisg
ICAgICAgICAgICAgICAgICAgIHVuaXF1ZUZ1bGxOYW1lcy5pbnNlcnQodGZWYXJ5aW5nKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHN1YnNjcmlwdCA9PSBHTF9JTlZB
TElEX0lOREVYKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0g
ICAgcmV0dXJuIHZhcnlpbmdzOworICAgIHN0ZDo6c29ydChwYWNrZWRWYXJ5aW5ncy5iZWdpbigp
LCBwYWNrZWRWYXJ5aW5ncy5lbmQoKSwgQ29tcGFyZVBhY2tlZFZhcnlpbmcpOworCisgICAgcmV0
dXJuIHBhY2tlZFZhcnlpbmdzOwogfQogCiB2b2lkIFByb2dyYW06OmxpbmtPdXRwdXRWYXJpYWJs
ZXMoKQpAQCAtMjQ3NSwxNCArMjY2OSwxMyBAQCB2b2lkIFByb2dyYW06OmxpbmtPdXRwdXRWYXJp
YWJsZXMoKQogICAgIGlmIChmcmFnbWVudFNoYWRlci0+Z2V0U2hhZGVyVmVyc2lvbigpID09IDEw
MCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgY29uc3QgYXV0byAmc2hhZGVyT3V0cHV0VmFycyA9
IGZyYWdtZW50U2hhZGVyLT5nZXRBY3RpdmVPdXRwdXRWYXJpYWJsZXMoKTsKLQorICAgIG1TdGF0
ZS5tT3V0cHV0VmFyaWFibGVzID0gZnJhZ21lbnRTaGFkZXItPmdldEFjdGl2ZU91dHB1dFZhcmlh
YmxlcygpOwogICAgIC8vIFRPRE8oam1hZGlsbCk6IGFueSBjYXBzIHZhbGlkYXRpb24gaGVyZT8K
IAotICAgIGZvciAodW5zaWduZWQgaW50IG91dHB1dFZhcmlhYmxlSW5kZXggPSAwOyBvdXRwdXRW
YXJpYWJsZUluZGV4IDwgc2hhZGVyT3V0cHV0VmFycy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25l
ZCBpbnQgb3V0cHV0VmFyaWFibGVJbmRleCA9IDA7IG91dHB1dFZhcmlhYmxlSW5kZXggPCBtU3Rh
dGUubU91dHB1dFZhcmlhYmxlcy5zaXplKCk7CiAgICAgICAgICBvdXRwdXRWYXJpYWJsZUluZGV4
KyspCiAgICAgewotICAgICAgICBjb25zdCBzaDo6T3V0cHV0VmFyaWFibGUgJm91dHB1dFZhcmlh
YmxlID0gc2hhZGVyT3V0cHV0VmFyc1tvdXRwdXRWYXJpYWJsZUluZGV4XTsKKyAgICAgICAgY29u
c3Qgc2g6Ok91dHB1dFZhcmlhYmxlICZvdXRwdXRWYXJpYWJsZSA9IG1TdGF0ZS5tT3V0cHV0VmFy
aWFibGVzW291dHB1dFZhcmlhYmxlSW5kZXhdOwogCiAgICAgICAgIC8vIERvbid0IHN0b3JlIG91
dHB1dHMgZm9yIGdsX0ZyYWdEZXB0aCwgZ2xfRnJhZ0NvbG9yLCBldGMuCiAgICAgICAgIGlmIChv
dXRwdXRWYXJpYWJsZS5pc0J1aWx0SW4oKSkKQEAgLTI0OTEsMTU4ICsyNjg0LDM4IEBAIHZvaWQg
UHJvZ3JhbTo6bGlua091dHB1dFZhcmlhYmxlcygpCiAgICAgICAgIC8vIFNpbmNlIG11bHRpcGxl
IG91dHB1dCBsb2NhdGlvbnMgbXVzdCBiZSBzcGVjaWZpZWQsIHVzZSAwIGZvciBub24tc3BlY2lm
aWVkIGxvY2F0aW9ucy4KICAgICAgICAgaW50IGJhc2VMb2NhdGlvbiA9IChvdXRwdXRWYXJpYWJs
ZS5sb2NhdGlvbiA9PSAtMSA/IDAgOiBvdXRwdXRWYXJpYWJsZS5sb2NhdGlvbik7CiAKLSAgICAg
ICAgQVNTRVJUKG91dHB1dFZhcmlhYmxlLnN0YXRpY1VzZSk7Ci0KICAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnQgZWxlbWVudEluZGV4ID0gMDsgZWxlbWVudEluZGV4IDwgb3V0cHV0VmFyaWFibGUu
ZWxlbWVudENvdW50KCk7CiAgICAgICAgICAgICAgZWxlbWVudEluZGV4KyspCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGNvbnN0IGludCBsb2NhdGlvbiA9IGJhc2VMb2NhdGlvbiArIGVsZW1lbnRJ
bmRleDsKLSAgICAgICAgICAgIEFTU0VSVChtU3RhdGUubU91dHB1dFZhcmlhYmxlcy5jb3VudChs
b2NhdGlvbikgPT0gMCk7CisgICAgICAgICAgICBBU1NFUlQobVN0YXRlLm1PdXRwdXRMb2NhdGlv
bnMuY291bnQobG9jYXRpb24pID09IDApOwogICAgICAgICAgICAgdW5zaWduZWQgaW50IGVsZW1l
bnQgPSBvdXRwdXRWYXJpYWJsZS5pc0FycmF5KCkgPyBlbGVtZW50SW5kZXggOiBHTF9JTlZBTElE
X0lOREVYOwotICAgICAgICAgICAgbVN0YXRlLm1PdXRwdXRWYXJpYWJsZXNbbG9jYXRpb25dID0K
KyAgICAgICAgICAgIG1TdGF0ZS5tT3V0cHV0TG9jYXRpb25zW2xvY2F0aW9uXSA9CiAgICAgICAg
ICAgICAgICAgVmFyaWFibGVMb2NhdGlvbihvdXRwdXRWYXJpYWJsZS5uYW1lLCBlbGVtZW50LCBv
dXRwdXRWYXJpYWJsZUluZGV4KTsKICAgICAgICAgfQogICAgIH0KIH0KIAotYm9vbCBQcm9ncmFt
OjpmbGF0dGVuVW5pZm9ybXNBbmRDaGVja0NhcHNGb3JTaGFkZXIoY29uc3QgZ2w6OlNoYWRlciAm
c2hhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG1heFVuaWZvcm1Db21wb25lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1heFRleHR1cmVJbWFnZVVuaXRzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJmNvbXBvbmVudHNFcnJvck1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2FtcGxl
ckVycm9yTWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6dmVjdG9yPExpbmtlZFVuaWZvcm0+ICZzYW1wbGVyVW5pZm9ybXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmZvTG9n
ICZpbmZvTG9nKQordm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtVmFsdWVzRnJvbUJpbmRpbmdRdWFs
aWZpZXJzKCkKIHsKLSAgICBWZWN0b3JBbmRTYW1wbGVyQ291bnQgdmFzQ291bnQ7Ci0gICAgZm9y
IChjb25zdCBzaDo6VW5pZm9ybSAmdW5pZm9ybSA6IHNoYWRlci5nZXRVbmlmb3JtcygpKQorICAg
IGZvciAodW5zaWduZWQgaW50IHNhbXBsZXJJbmRleCA9IG1TdGF0ZS5tU2FtcGxlclVuaWZvcm1S
YW5nZS5zdGFydDsKKyAgICAgICAgIHNhbXBsZXJJbmRleCA8IG1TdGF0ZS5tU2FtcGxlclVuaWZv
cm1SYW5nZS5lbmQ7ICsrc2FtcGxlckluZGV4KQogICAgIHsKLSAgICAgICAgaWYgKHVuaWZvcm0u
c3RhdGljVXNlKQorICAgICAgICBjb25zdCBhdXRvICZzYW1wbGVyVW5pZm9ybSA9IG1TdGF0ZS5t
VW5pZm9ybXNbc2FtcGxlckluZGV4XTsKKyAgICAgICAgaWYgKHNhbXBsZXJVbmlmb3JtLmJpbmRp
bmcgIT0gLTEpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhc0NvdW50ICs9IGZsYXR0ZW5Vbmlm
b3JtKHVuaWZvcm0sIHVuaWZvcm0ubmFtZSwgJnNhbXBsZXJVbmlmb3Jtcyk7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBpZiAodmFzQ291bnQudmVjdG9yQ291bnQgPiBtYXhVbmlmb3JtQ29tcG9u
ZW50cykKLSAgICB7Ci0gICAgICAgIGluZm9Mb2cgPDwgY29tcG9uZW50c0Vycm9yTWVzc2FnZSA8
PCBtYXhVbmlmb3JtQ29tcG9uZW50cyA8PCAiKS4iOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgaWYgKHZhc0NvdW50LnNhbXBsZXJDb3VudCA+IG1heFRleHR1cmVJbWFnZVVu
aXRzKQotICAgIHsKLSAgICAgICAgaW5mb0xvZyA8PCBzYW1wbGVyRXJyb3JNZXNzYWdlIDw8IG1h
eFRleHR1cmVJbWFnZVVuaXRzIDw8ICIpLiI7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBQcm9ncmFtOjpmbGF0dGVuVW5pZm9ybXNB
bmRDaGVja0NhcHMoY29uc3QgQ2FwcyAmY2FwcywgSW5mb0xvZyAmaW5mb0xvZykKLXsKLSAgICBz
dGQ6OnZlY3RvcjxMaW5rZWRVbmlmb3JtPiBzYW1wbGVyVW5pZm9ybXM7Ci0KLSAgICBpZiAobVN0
YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXIpCi0gICAgewotICAgICAgICBjb25zdCBnbDo6U2hh
ZGVyICpjb21wdXRlU2hhZGVyID0gbVN0YXRlLmdldEF0dGFjaGVkQ29tcHV0ZVNoYWRlcigpOwot
Ci0gICAgICAgIC8vIFRPRE8gKG1yYWRldik6IGNoZWNrIHdoZXRoZXIgd2UgbmVlZCBmaW5lci1n
cmFpbmVkIGNvbXBvbmVudCBjb3VudGluZwotICAgICAgICBpZiAoIWZsYXR0ZW5Vbmlmb3Jtc0Fu
ZENoZWNrQ2Fwc0ZvclNoYWRlcigKLSAgICAgICAgICAgICAgICAqY29tcHV0ZVNoYWRlciwgY2Fw
cy5tYXhDb21wdXRlVW5pZm9ybUNvbXBvbmVudHMgLyA0LAotICAgICAgICAgICAgICAgIGNhcHMu
bWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzLAotICAgICAgICAgICAgICAgICJDb21wdXRlIHNo
YWRlciBhY3RpdmUgdW5pZm9ybXMgZXhjZWVkIE1BWF9DT01QVVRFX1VOSUZPUk1fQ09NUE9ORU5U
UyAoIiwKLSAgICAgICAgICAgICAgICAiQ29tcHV0ZSBzaGFkZXIgc2FtcGxlciBjb3VudCBleGNl
ZWRzIE1BWF9DT01QVVRFX1RFWFRVUkVfSU1BR0VfVU5JVFMgKCIsCi0gICAgICAgICAgICAgICAg
c2FtcGxlclVuaWZvcm1zLCBpbmZvTG9nKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGNvbnN0
IGdsOjpTaGFkZXIgKnZlcnRleFNoYWRlciA9IG1TdGF0ZS5nZXRBdHRhY2hlZFZlcnRleFNoYWRl
cigpOwotCi0gICAgICAgIGlmICghZmxhdHRlblVuaWZvcm1zQW5kQ2hlY2tDYXBzRm9yU2hhZGVy
KAotICAgICAgICAgICAgICAgICp2ZXJ0ZXhTaGFkZXIsIGNhcHMubWF4VmVydGV4VW5pZm9ybVZl
Y3RvcnMsIGNhcHMubWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMsCi0gICAgICAgICAgICAgICAg
IlZlcnRleCBzaGFkZXIgYWN0aXZlIHVuaWZvcm1zIGV4Y2VlZCBNQVhfVkVSVEVYX1VOSUZPUk1f
VkVDVE9SUyAoIiwKLSAgICAgICAgICAgICAgICAiVmVydGV4IHNoYWRlciBzYW1wbGVyIGNvdW50
IGV4Y2VlZHMgTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTICgiLAotICAgICAgICAgICAg
ICAgIHNhbXBsZXJVbmlmb3JtcywgaW5mb0xvZykpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBjb25zdCBnbDo6U2hhZGVyICpmcmFnbWVu
dFNoYWRlciA9IG1TdGF0ZS5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCk7Ci0KLSAgICAgICAg
aWYgKCFmbGF0dGVuVW5pZm9ybXNBbmRDaGVja0NhcHNGb3JTaGFkZXIoCi0gICAgICAgICAgICAg
ICAgKmZyYWdtZW50U2hhZGVyLCBjYXBzLm1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMsIGNhcHMu
bWF4VGV4dHVyZUltYWdlVW5pdHMsCi0gICAgICAgICAgICAgICAgIkZyYWdtZW50IHNoYWRlciBh
Y3RpdmUgdW5pZm9ybXMgZXhjZWVkIE1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMgKCIsCi0g
ICAgICAgICAgICAgICAgIkZyYWdtZW50IHNoYWRlciBzYW1wbGVyIGNvdW50IGV4Y2VlZHMgTUFY
X1RFWFRVUkVfSU1BR0VfVU5JVFMgKCIsIHNhbXBsZXJVbmlmb3JtcywKLSAgICAgICAgICAgICAg
ICBpbmZvTG9nKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgbVNhbXBsZXJVbmlmb3JtUmFuZ2Uuc3RhcnQgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KG1TdGF0ZS5tVW5pZm9ybXMuc2l6ZSgpKTsKLSAgICBtU2FtcGxlclVu
aWZvcm1SYW5nZS5lbmQgPQotICAgICAgICBtU2FtcGxlclVuaWZvcm1SYW5nZS5zdGFydCArIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc2FtcGxlclVuaWZvcm1zLnNpemUoKSk7Ci0KLSAgICBt
U3RhdGUubVVuaWZvcm1zLmluc2VydChtU3RhdGUubVVuaWZvcm1zLmVuZCgpLCBzYW1wbGVyVW5p
Zm9ybXMuYmVnaW4oKSwgc2FtcGxlclVuaWZvcm1zLmVuZCgpKTsKLQotICAgIHJldHVybiB0cnVl
OwotfQotCi1Qcm9ncmFtOjpWZWN0b3JBbmRTYW1wbGVyQ291bnQgUHJvZ3JhbTo6ZmxhdHRlblVu
aWZvcm0oY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ1bmlmb3JtLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZmdWxsTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnZlY3RvcjxMaW5rZWRVbmlmb3JtPiAqc2FtcGxlclVuaWZvcm1zKQot
ewotICAgIFZlY3RvckFuZFNhbXBsZXJDb3VudCB2ZWN0b3JBbmRTYW1wbGVyQ291bnQ7Ci0KLSAg
ICBpZiAodW5pZm9ybS5pc1N0cnVjdCgpKQotICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnQgZWxlbWVudEluZGV4ID0gMDsgZWxlbWVudEluZGV4IDwgdW5pZm9ybS5lbGVtZW50Q291bnQo
KTsgZWxlbWVudEluZGV4KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZlbGVtZW50U3RyaW5nID0gKHVuaWZvcm0uaXNBcnJheSgpID8gQXJyYXlTdHJpbmcoZWxl
bWVudEluZGV4KSA6ICIiKTsKLQotICAgICAgICAgICAgZm9yIChzaXplX3QgZmllbGRJbmRleCA9
IDA7IGZpZWxkSW5kZXggPCB1bmlmb3JtLmZpZWxkcy5zaXplKCk7IGZpZWxkSW5kZXgrKykKKyAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uID0gbVN0YXRlLmdldFVuaWZvcm1Mb2NhdGlvbihzYW1w
bGVyVW5pZm9ybS5uYW1lKTsKKyAgICAgICAgICAgIEFTU0VSVChsb2NhdGlvbiAhPSAtMSk7Cisg
ICAgICAgICAgICBzdGQ6OnZlY3RvcjxHTGludD4gYm91bmRUZXh0dXJlVW5pdHM7CisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGludCBlbGVtZW50SW5kZXggPSAwOyBlbGVtZW50SW5kZXggPCBz
YW1wbGVyVW5pZm9ybS5lbGVtZW50Q291bnQoKTsKKyAgICAgICAgICAgICAgICAgKytlbGVtZW50
SW5kZXgpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3Qgc2g6OlNoYWRlclZh
cmlhYmxlICZmaWVsZCAgPSB1bmlmb3JtLmZpZWxkc1tmaWVsZEluZGV4XTsKLSAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZmllbGRGdWxsTmFtZSA9IChmdWxsTmFtZSArIGVsZW1l
bnRTdHJpbmcgKyAiLiIgKyBmaWVsZC5uYW1lKTsKLQotICAgICAgICAgICAgICAgIHZlY3RvckFu
ZFNhbXBsZXJDb3VudCArPSBmbGF0dGVuVW5pZm9ybShmaWVsZCwgZmllbGRGdWxsTmFtZSwgc2Ft
cGxlclVuaWZvcm1zKTsKKyAgICAgICAgICAgICAgICBib3VuZFRleHR1cmVVbml0cy5wdXNoX2Jh
Y2soc2FtcGxlclVuaWZvcm0uYmluZGluZyArIGVsZW1lbnRJbmRleCk7CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICBzZXRVbmlmb3JtMWl2KGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxHTHNpemVp
Pihib3VuZFRleHR1cmVVbml0cy5zaXplKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBi
b3VuZFRleHR1cmVVbml0cy5kYXRhKCkpOwogICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHZl
Y3RvckFuZFNhbXBsZXJDb3VudDsKICAgICB9Ci0KLSAgICAvLyBOb3QgYSBzdHJ1Y3QKLSAgICBi
b29sIGlzU2FtcGxlciA9IElzU2FtcGxlclR5cGUodW5pZm9ybS50eXBlKTsKLSAgICBpZiAoIVVu
aWZvcm1Jbkxpc3QobVN0YXRlLmdldFVuaWZvcm1zKCksIGZ1bGxOYW1lKSAmJgotICAgICAgICAh
VW5pZm9ybUluTGlzdCgqc2FtcGxlclVuaWZvcm1zLCBmdWxsTmFtZSkpCi0gICAgewotICAgICAg
ICBnbDo6TGlua2VkVW5pZm9ybSBsaW5rZWRVbmlmb3JtKHVuaWZvcm0udHlwZSwgdW5pZm9ybS5w
cmVjaXNpb24sIGZ1bGxOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuaWZvcm0uYXJyYXlTaXplLCAtMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaDo6QmxvY2tNZW1iZXJJbmZvOjpnZXREZWZhdWx0QmxvY2tJbmZvKCkpOwot
ICAgICAgICBsaW5rZWRVbmlmb3JtLnN0YXRpY1VzZSA9IHRydWU7Ci0KLSAgICAgICAgLy8gU3Rv
cmUgc2FtcGxlciB1bmlmb3JtcyBzZXBhcmF0ZWx5LCBzbyB3ZSdsbCBhcHBlbmQgdGhlbSB0byB0
aGUgZW5kIG9mIHRoZSBsaXN0LgotICAgICAgICBpZiAoaXNTYW1wbGVyKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBzYW1wbGVyVW5pZm9ybXMtPnB1c2hfYmFjayhsaW5rZWRVbmlmb3JtKTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1TdGF0ZS5tVW5p
Zm9ybXMucHVzaF9iYWNrKGxpbmtlZFVuaWZvcm0pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
dW5zaWduZWQgaW50IGVsZW1lbnRDb3VudCAgICAgICAgICA9IHVuaWZvcm0uZWxlbWVudENvdW50
KCk7Ci0KLSAgICAvLyBTYW1wbGVycyBhcmVuJ3QgInJlYWwiIHVuaWZvcm1zLCBzbyB0aGV5IGRv
bid0IGNvdW50IHRvd2FyZHMgcmVnaXN0ZXIgdXNhZ2UuCi0gICAgLy8gTGlrZXdpc2UsIGRvbid0
IGNvdW50ICJyZWFsIiB1bmlmb3JtcyB0b3dhcmRzIHNhbXBsZXIgY291bnQuCi0gICAgdmVjdG9y
QW5kU2FtcGxlckNvdW50LnZlY3RvckNvdW50ID0KLSAgICAgICAgKGlzU2FtcGxlciA/IDAgOiAo
VmFyaWFibGVSZWdpc3RlckNvdW50KHVuaWZvcm0udHlwZSkgKiBlbGVtZW50Q291bnQpKTsKLSAg
ICB2ZWN0b3JBbmRTYW1wbGVyQ291bnQuc2FtcGxlckNvdW50ID0gKGlzU2FtcGxlciA/IGVsZW1l
bnRDb3VudCA6IDApOwotCi0gICAgcmV0dXJuIHZlY3RvckFuZFNhbXBsZXJDb3VudDsKIH0KIAog
dm9pZCBQcm9ncmFtOjpnYXRoZXJJbnRlcmZhY2VCbG9ja0luZm8oKQpAQCAtMjY1MSw3ICsyNzI0
LDcgQEAgdm9pZCBQcm9ncmFtOjpnYXRoZXJJbnRlcmZhY2VCbG9ja0luZm8oKQogCiAgICAgaWYg
KG1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVyKQogICAgIHsKLSAgICAgICAgY29uc3QgZ2w6
OlNoYWRlciAqY29tcHV0ZVNoYWRlciA9IG1TdGF0ZS5nZXRBdHRhY2hlZENvbXB1dGVTaGFkZXIo
KTsKKyAgICAgICAgY29uc3QgU2hhZGVyICpjb21wdXRlU2hhZGVyID0gbVN0YXRlLmdldEF0dGFj
aGVkQ29tcHV0ZVNoYWRlcigpOwogCiAgICAgICAgIGZvciAoY29uc3Qgc2g6OkludGVyZmFjZUJs
b2NrICZjb21wdXRlQmxvY2sgOiBjb21wdXRlU2hhZGVyLT5nZXRJbnRlcmZhY2VCbG9ja3MoKSkK
ICAgICAgICAgewpAQCAtMjY2MCw3ICsyNzMzLDcgQEAgdm9pZCBQcm9ncmFtOjpnYXRoZXJJbnRl
cmZhY2VCbG9ja0luZm8oKQogICAgICAgICAgICAgaWYgKCFjb21wdXRlQmxvY2suc3RhdGljVXNl
ICYmIGNvbXB1dGVCbG9jay5sYXlvdXQgPT0gc2g6OkJMT0NLTEFZT1VUX1BBQ0tFRCkKICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgZm9yIChnbDo6VW5pZm9ybUJsb2Nr
ICZibG9jayA6IG1TdGF0ZS5tVW5pZm9ybUJsb2NrcykKKyAgICAgICAgICAgIGZvciAoVW5pZm9y
bUJsb2NrICZibG9jayA6IG1TdGF0ZS5tVW5pZm9ybUJsb2NrcykKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBpZiAoYmxvY2submFtZSA9PSBjb21wdXRlQmxvY2submFtZSkKICAgICAg
ICAgICAgICAgICB7CkBAIC0yNjc1LDcgKzI3NDgsNyBAQCB2b2lkIFByb2dyYW06OmdhdGhlcklu
dGVyZmFjZUJsb2NrSW5mbygpCiAKICAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gdmlzaXRlZExp
c3Q7CiAKLSAgICBjb25zdCBnbDo6U2hhZGVyICp2ZXJ0ZXhTaGFkZXIgPSBtU3RhdGUuZ2V0QXR0
YWNoZWRWZXJ0ZXhTaGFkZXIoKTsKKyAgICBjb25zdCBTaGFkZXIgKnZlcnRleFNoYWRlciA9IG1T
dGF0ZS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpOwogCiAgICAgZm9yIChjb25zdCBzaDo6SW50
ZXJmYWNlQmxvY2sgJnZlcnRleEJsb2NrIDogdmVydGV4U2hhZGVyLT5nZXRJbnRlcmZhY2VCbG9j
a3MoKSkKICAgICB7CkBAIC0yNjkwLDcgKzI3NjMsNyBAQCB2b2lkIFByb2dyYW06OmdhdGhlcklu
dGVyZmFjZUJsb2NrSW5mbygpCiAgICAgICAgIHZpc2l0ZWRMaXN0Lmluc2VydCh2ZXJ0ZXhCbG9j
ay5uYW1lKTsKICAgICB9CiAKLSAgICBjb25zdCBnbDo6U2hhZGVyICpmcmFnbWVudFNoYWRlciA9
IG1TdGF0ZS5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCk7CisgICAgY29uc3QgU2hhZGVyICpm
cmFnbWVudFNoYWRlciA9IG1TdGF0ZS5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCk7CiAKICAg
ICBmb3IgKGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmZnJhZ21lbnRCbG9jayA6IGZyYWdtZW50
U2hhZGVyLT5nZXRJbnRlcmZhY2VCbG9ja3MoKSkKICAgICB7CkBAIC0yNzAwLDcgKzI3NzMsNyBA
QCB2b2lkIFByb2dyYW06OmdhdGhlckludGVyZmFjZUJsb2NrSW5mbygpCiAKICAgICAgICAgaWYg
KHZpc2l0ZWRMaXN0LmNvdW50KGZyYWdtZW50QmxvY2submFtZSkgPiAwKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBmb3IgKGdsOjpVbmlmb3JtQmxvY2sgJmJsb2NrIDogbVN0YXRlLm1Vbmlmb3Jt
QmxvY2tzKQorICAgICAgICAgICAgZm9yIChVbmlmb3JtQmxvY2sgJmJsb2NrIDogbVN0YXRlLm1V
bmlmb3JtQmxvY2tzKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmIChibG9jay5u
YW1lID09IGZyYWdtZW50QmxvY2submFtZSkKICAgICAgICAgICAgICAgICB7CkBAIC0yNzQzLDcg
KzI4MTYsNyBAQCB2b2lkIFByb2dyYW06OmRlZmluZVVuaWZvcm1CbG9ja01lbWJlcnMoY29uc3Qg
c3RkOjp2ZWN0b3I8VmFyVD4gJmZpZWxkcywKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgTGlua2VkVW5pZm9ybSBuZXdVbmlmb3JtKGZpZWxk
LnR5cGUsIGZpZWxkLnByZWNpc2lvbiwgZnVsbE5hbWUsIGZpZWxkLmFycmF5U2l6ZSwKKyAgICAg
ICAgICAgIExpbmtlZFVuaWZvcm0gbmV3VW5pZm9ybShmaWVsZC50eXBlLCBmaWVsZC5wcmVjaXNp
b24sIGZ1bGxOYW1lLCBmaWVsZC5hcnJheVNpemUsIC0xLCAtMSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBibG9ja0luZGV4LCBtZW1iZXJJbmZvKTsKIAogICAgICAgICAg
ICAgLy8gU2luY2UgYmxvY2sgdW5pZm9ybXMgaGF2ZSBubyBsb2NhdGlvbiwgd2UgZG9uJ3QgbmVl
ZCB0byBzdG9yZSB0aGVtIGluIHRoZSB1bmlmb3JtCkBAIC0yNzU5LDcgKzI4MzIsMTMgQEAgdm9p
ZCBQcm9ncmFtOjpkZWZpbmVVbmlmb3JtQmxvY2soY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZp
bnRlcmZhY2VCbG9jaywgR0xlbnUKICAgICBzaXplX3QgYmxvY2tTaXplID0gMDsKIAogICAgIC8v
IERvbid0IGRlZmluZSB0aGlzIGJsb2NrIGF0IGFsbCBpZiBpdCdzIG5vdCBhY3RpdmUgaW4gdGhl
IGltcGxlbWVudGF0aW9uLgotICAgIGlmICghbVByb2dyYW0tPmdldFVuaWZvcm1CbG9ja1NpemUo
aW50ZXJmYWNlQmxvY2submFtZSwgJmJsb2NrU2l6ZSkpCisgICAgc3RkOjpzdHJpbmdzdHJlYW0g
YmxvY2tOYW1lU3RyOworICAgIGJsb2NrTmFtZVN0ciA8PCBpbnRlcmZhY2VCbG9jay5uYW1lOwor
ICAgIGlmIChpbnRlcmZhY2VCbG9jay5hcnJheVNpemUgPiAwKQorICAgIHsKKyAgICAgICAgYmxv
Y2tOYW1lU3RyIDw8ICJbMF0iOworICAgIH0KKyAgICBpZiAoIW1Qcm9ncmFtLT5nZXRVbmlmb3Jt
QmxvY2tTaXplKGJsb2NrTmFtZVN0ci5zdHIoKSwgJmJsb2NrU2l6ZSkpCiAgICAgewogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMjgwNSwxNSArMjg4NCwxMCBAQCB2b2lkIFByb2dyYW06OmRl
ZmluZVVuaWZvcm1CbG9jayhjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmludGVyZmFjZUJsb2Nr
LCBHTGVudQogICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBEZXRlcm1pbmUgaWYgd2UgY2FuIGV2
ZXIgaGF2ZSBhbiBpbmFjdGl2ZSBhcnJheSBlbGVtZW50IGJsb2NrLgotICAgICAgICAgICAgc2l6
ZV90IGJsb2NrRWxlbWVudFNpemUgPSAwOwotICAgICAgICAgICAgaWYgKCFtUHJvZ3JhbS0+Z2V0
VW5pZm9ybUJsb2NrU2l6ZShibG9jay5uYW1lV2l0aEFycmF5SW5kZXgoKSwgJmJsb2NrRWxlbWVu
dFNpemUpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBBU1NFUlQoYmxvY2tFbGVtZW50U2l6ZSA9PSBibG9ja1Np
emUpOwotICAgICAgICAgICAgYmxvY2suZGF0YVNpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KGJsb2NrRWxlbWVudFNpemUpOworICAgICAgICAgICAgLy8gU2luY2UgYWxsIGJsb2NrIGVs
ZW1lbnRzIGluIGFuIGFycmF5IHNoYXJlIHRoZSBzYW1lIGFjdGl2ZSB1bmlmb3JtcywgdGhleSB3
aWxsIGFsbCBiZQorICAgICAgICAgICAgLy8gYWN0aXZlIG9uY2UgYW55IHVuaWZvcm0gbWVtYmVy
IGlzIHVzZWQuIFNvLCBzaW5jZSBpbnRlcmZhY2VCbG9jay5uYW1lWzBdIHdhcyBhY3RpdmUsCisg
ICAgICAgICAgICAvLyBoZXJlIHdlIHdpbGwgYWRkIGV2ZXJ5IGJsb2NrIGVsZW1lbnQgaW4gdGhl
IGFycmF5LgorICAgICAgICAgICAgYmxvY2suZGF0YVNpemUgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBpbnQ+KGJsb2NrU2l6ZSk7CiAgICAgICAgICAgICBtU3RhdGUubVVuaWZvcm1CbG9ja3MucHVz
aF9iYWNrKGJsb2NrKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI4NDgsNTIgKzI5MjIsOTUgQEAg
dm9pZCBQcm9ncmFtOjpkZWZpbmVVbmlmb3JtQmxvY2soY29uc3Qgc2g6OkludGVyZmFjZUJsb2Nr
ICZpbnRlcmZhY2VCbG9jaywgR0xlbnUKICAgICB9CiB9CiAKK3RlbXBsYXRlIDw+Cit2b2lkIFBy
b2dyYW06OnVwZGF0ZVNhbXBsZXJVbmlmb3JtKGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0
aW9uSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCAqZGVzdFBvaW50ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY2xhbXBlZENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGludCAqdikKK3sKKyAgICAvLyBJbnZhbGlkYXRlIHRoZSB2YWxpZGF0aW9uIGNhY2hlIG9u
bHkgaWYgd2UgbW9kaWZ5IHRoZSBzYW1wbGVyIGRhdGEuCisgICAgaWYgKG1TdGF0ZS5pc1NhbXBs
ZXJVbmlmb3JtSW5kZXgobG9jYXRpb25JbmZvLmluZGV4KSAmJgorICAgICAgICBtZW1jbXAoZGVz
dFBvaW50ZXIsIHYsIHNpemVvZihHTGludCkgKiBjbGFtcGVkQ291bnQpICE9IDApCisgICAgewor
ICAgICAgICBHTHVpbnQgc2FtcGxlckluZGV4ID0gbVN0YXRlLmdldFNhbXBsZXJJbmRleEZyb21V
bmlmb3JtSW5kZXgobG9jYXRpb25JbmZvLmluZGV4KTsKKyAgICAgICAgc3RkOjp2ZWN0b3I8R0x1
aW50PiAqYm91bmRUZXh0dXJlVW5pdHMgPQorICAgICAgICAgICAgJm1TdGF0ZS5tU2FtcGxlckJp
bmRpbmdzW3NhbXBsZXJJbmRleF0uYm91bmRUZXh0dXJlVW5pdHM7CisKKyAgICAgICAgc3RkOjpj
b3B5KHYsIHYgKyBjbGFtcGVkQ291bnQsIGJvdW5kVGV4dHVyZVVuaXRzLT5iZWdpbigpICsgbG9j
YXRpb25JbmZvLmVsZW1lbnQpOworICAgICAgICBtQ2FjaGVkVmFsaWRhdGVTYW1wbGVyc1Jlc3Vs
dC5yZXNldCgpOworICAgIH0KK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIFByb2dy
YW06OnNldFVuaWZvcm1JbnRlcm5hbChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgVCAqdikKK3ZvaWQgUHJvZ3JhbTo6dXBkYXRlU2FtcGxlclVuaWZvcm0oY29uc3QgVmFyaWFi
bGVMb2NhdGlvbiAmbG9jYXRpb25JbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1aW50OF90ICpkZXN0UG9pbnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjbGFtcGVkQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFQgKnYpCit7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgor
R0xzaXplaSBQcm9ncmFtOjpzZXRVbmlmb3JtSW50ZXJuYWwoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnRJbiwgaW50IHZlY3RvclNpemUsIGNvbnN0IFQgKnYpCiB7CiAgICAgY29uc3QgVmFy
aWFibGVMb2NhdGlvbiAmbG9jYXRpb25JbmZvID0gbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zW2xv
Y2F0aW9uXTsKICAgICBMaW5rZWRVbmlmb3JtICpsaW5rZWRVbmlmb3JtICAgICAgICAgPSAmbVN0
YXRlLm1Vbmlmb3Jtc1tsb2NhdGlvbkluZm8uaW5kZXhdOwogICAgIHVpbnQ4X3QgKmRlc3RQb2lu
dGVyICAgICAgICAgICAgICAgICA9IGxpbmtlZFVuaWZvcm0tPmdldERhdGFQdHJUb0VsZW1lbnQo
bG9jYXRpb25JbmZvLmVsZW1lbnQpOwogCisgICAgLy8gT3BlbkdMIEVTIDMuMC40IHNwZWMgcGcg
Njc6ICJWYWx1ZXMgZm9yIGFueSBhcnJheSBlbGVtZW50IHRoYXQgZXhjZWVkcyB0aGUgaGlnaGVz
dCBhcnJheQorICAgIC8vIGVsZW1lbnQgaW5kZXggdXNlZCwgYXMgcmVwb3J0ZWQgYnkgR2V0QWN0
aXZlVW5pZm9ybSwgd2lsbCBiZSBpZ25vcmVkIGJ5IHRoZSBHTC4iCisgICAgdW5zaWduZWQgaW50
IHJlbWFpbmluZ0VsZW1lbnRzID0gbGlua2VkVW5pZm9ybS0+ZWxlbWVudENvdW50KCkgLSBsb2Nh
dGlvbkluZm8uZWxlbWVudDsKKyAgICBHTHNpemVpIG1heEVsZW1lbnRDb3VudCA9CisgICAgICAg
IHN0YXRpY19jYXN0PEdMc2l6ZWk+KHJlbWFpbmluZ0VsZW1lbnRzICogbGlua2VkVW5pZm9ybS0+
Z2V0RWxlbWVudENvbXBvbmVudHMoKSk7CisKKyAgICBHTHNpemVpIGNvdW50ICAgICAgICA9IGNv
dW50SW47CisgICAgR0xzaXplaSBjbGFtcGVkQ291bnQgPSBjb3VudCAqIHZlY3RvclNpemU7Cisg
ICAgaWYgKGNsYW1wZWRDb3VudCA+IG1heEVsZW1lbnRDb3VudCkKKyAgICB7CisgICAgICAgIGNs
YW1wZWRDb3VudCA9IG1heEVsZW1lbnRDb3VudDsKKyAgICAgICAgY291bnQgICAgICAgID0gbWF4
RWxlbWVudENvdW50IC8gdmVjdG9yU2l6ZTsKKyAgICB9CisKICAgICBpZiAoVmFyaWFibGVDb21w
b25lbnRUeXBlKGxpbmtlZFVuaWZvcm0tPnR5cGUpID09IEdMX0JPT0wpCiAgICAgewogICAgICAg
ICAvLyBEbyBhIGNhc3QgY29udmVyc2lvbiBmb3IgYm9vbGVhbiB0eXBlcy4gRnJvbSB0aGUgc3Bl
YzoKICAgICAgICAgLy8gIlRoZSB1bmlmb3JtIGlzIHNldCB0byBGQUxTRSBpZiB0aGUgaW5wdXQg
dmFsdWUgaXMgMCBvciAwLjBmLCBhbmQgc2V0IHRvIFRSVUUgb3RoZXJ3aXNlLiIKICAgICAgICAg
R0xpbnQgKmRlc3RBc0ludCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQgKj4oZGVzdFBvaW50ZXIp
OwotICAgICAgICBmb3IgKEdMc2l6ZWkgY29tcG9uZW50ID0gMDsgY29tcG9uZW50IDwgY291bnQ7
ICsrY29tcG9uZW50KQorICAgICAgICBmb3IgKEdMc2l6ZWkgY29tcG9uZW50ID0gMDsgY29tcG9u
ZW50IDwgY2xhbXBlZENvdW50OyArK2NvbXBvbmVudCkKICAgICAgICAgewogICAgICAgICAgICAg
ZGVzdEFzSW50W2NvbXBvbmVudF0gPSAodltjb21wb25lbnRdICE9IHN0YXRpY19jYXN0PFQ+KDAp
ID8gR0xfVFJVRSA6IEdMX0ZBTFNFKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCiAgICAg
ewotICAgICAgICAvLyBJbnZhbGlkZSB0aGUgdmFsaWRhdGlvbiBjYWNoZSBpZiB3ZSBtb2RpZnkg
dGhlIHNhbXBsZXIgZGF0YS4KLSAgICAgICAgaWYgKGxpbmtlZFVuaWZvcm0tPmlzU2FtcGxlcigp
ICYmIG1lbWNtcChkZXN0UG9pbnRlciwgdiwgc2l6ZW9mKFQpICogY291bnQpICE9IDApCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIG1DYWNoZWRWYWxpZGF0ZVNhbXBsZXJzUmVzdWx0LnJlc2V0KCk7
Ci0gICAgICAgIH0KLQotICAgICAgICBtZW1jcHkoZGVzdFBvaW50ZXIsIHYsIHNpemVvZihUKSAq
IGNvdW50KTsKKyAgICAgICAgdXBkYXRlU2FtcGxlclVuaWZvcm0obG9jYXRpb25JbmZvLCBkZXN0
UG9pbnRlciwgY2xhbXBlZENvdW50LCB2KTsKKyAgICAgICAgbWVtY3B5KGRlc3RQb2ludGVyLCB2
LCBzaXplb2YoVCkgKiBjbGFtcGVkQ291bnQpOwogICAgIH0KKworICAgIHJldHVybiBjb3VudDsK
IH0KIAogdGVtcGxhdGUgPHNpemVfdCBjb2xzLCBzaXplX3Qgcm93cywgdHlwZW5hbWUgVD4KLXZv
aWQgUHJvZ3JhbTo6c2V0TWF0cml4VW5pZm9ybUludGVybmFsKEdMaW50IGxvY2F0aW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUICp2KQorR0xzaXpl
aSBQcm9ncmFtOjpzZXRNYXRyaXhVbmlmb3JtSW50ZXJuYWwoR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9z
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQgKnYp
CiB7CiAgICAgaWYgKCF0cmFuc3Bvc2UpCiAgICAgewotICAgICAgICBzZXRVbmlmb3JtSW50ZXJu
YWwobG9jYXRpb24sIGNvdW50ICogY29scyAqIHJvd3MsIHYpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBzZXRVbmlmb3JtSW50ZXJuYWwobG9jYXRpb24sIGNvdW50LCBjb2xzICog
cm93cywgdik7CiAgICAgfQogCiAgICAgLy8gUGVyZm9ybSBhIHRyYW5zcG9zaW5nIGNvcHkuCiAg
ICAgY29uc3QgVmFyaWFibGVMb2NhdGlvbiAmbG9jYXRpb25JbmZvID0gbVN0YXRlLm1Vbmlmb3Jt
TG9jYXRpb25zW2xvY2F0aW9uXTsKICAgICBMaW5rZWRVbmlmb3JtICpsaW5rZWRVbmlmb3JtICAg
ICAgICAgPSAmbVN0YXRlLm1Vbmlmb3Jtc1tsb2NhdGlvbkluZm8uaW5kZXhdOwogICAgIFQgKmRl
c3RQdHIgPSByZWludGVycHJldF9jYXN0PFQgKj4obGlua2VkVW5pZm9ybS0+Z2V0RGF0YVB0clRv
RWxlbWVudChsb2NhdGlvbkluZm8uZWxlbWVudCkpOwotICAgIGZvciAoR0xzaXplaSBlbGVtZW50
ID0gMDsgZWxlbWVudCA8IGNvdW50OyArK2VsZW1lbnQpCisKKyAgICAvLyBPcGVuR0wgRVMgMy4w
LjQgc3BlYyBwZyA2NzogIlZhbHVlcyBmb3IgYW55IGFycmF5IGVsZW1lbnQgdGhhdCBleGNlZWRz
IHRoZSBoaWdoZXN0IGFycmF5CisgICAgLy8gZWxlbWVudCBpbmRleCB1c2VkLCBhcyByZXBvcnRl
ZCBieSBHZXRBY3RpdmVVbmlmb3JtLCB3aWxsIGJlIGlnbm9yZWQgYnkgdGhlIEdMLiIKKyAgICB1
bnNpZ25lZCBpbnQgcmVtYWluaW5nRWxlbWVudHMgPSBsaW5rZWRVbmlmb3JtLT5lbGVtZW50Q291
bnQoKSAtIGxvY2F0aW9uSW5mby5lbGVtZW50OworICAgIEdMc2l6ZWkgY2xhbXBlZENvdW50ICAg
ICAgICAgICA9IHN0ZDo6bWluKGNvdW50LCBzdGF0aWNfY2FzdDxHTHNpemVpPihyZW1haW5pbmdF
bGVtZW50cykpOworCisgICAgZm9yIChHTHNpemVpIGVsZW1lbnQgPSAwOyBlbGVtZW50IDwgY2xh
bXBlZENvdW50OyArK2VsZW1lbnQpCiAgICAgewogICAgICAgICBzaXplX3QgZWxlbWVudE9mZnNl
dCA9IGVsZW1lbnQgKiByb3dzICogY29sczsKIApAQCAtMjkwNSw2ICszMDIyLDggQEAgdm9pZCBQ
cm9ncmFtOjpzZXRNYXRyaXhVbmlmb3JtSW50ZXJuYWwoR0xpbnQgbG9jYXRpb24sCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CisKKyAgICByZXR1cm4gY2xhbXBlZENvdW50OwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVzdFQ+CkBAIC0yOTQyLDQgKzMwNjEsMjcgQEAgdm9pZCBQ
cm9ncmFtOjpnZXRVbmlmb3JtSW50ZXJuYWwoR0xpbnQgbG9jYXRpb24sIERlc3RUICpkYXRhT3V0
KSBjb25zdAogICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9CiB9CisKK2Jvb2wgUHJv
Z3JhbTo6c2FtcGxlc0Zyb21UZXh0dXJlKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIEdMdWludCB0
ZXh0dXJlSUQpIGNvbnN0Cit7CisgICAgLy8gTXVzdCBiZSBjYWxsZWQgYWZ0ZXIgc2FtcGxlcnMg
YXJlIHZhbGlkYXRlZC4KKyAgICBBU1NFUlQobUNhY2hlZFZhbGlkYXRlU2FtcGxlcnNSZXN1bHQu
dmFsaWQoKSAmJiBtQ2FjaGVkVmFsaWRhdGVTYW1wbGVyc1Jlc3VsdC52YWx1ZSgpKTsKKworICAg
IGZvciAoY29uc3QgYXV0byAmYmluZGluZyA6IG1TdGF0ZS5tU2FtcGxlckJpbmRpbmdzKQorICAg
IHsKKyAgICAgICAgR0xlbnVtIHRleHR1cmVUeXBlID0gYmluZGluZy50ZXh0dXJlVHlwZTsKKyAg
ICAgICAgZm9yIChjb25zdCBhdXRvICZ1bml0IDogYmluZGluZy5ib3VuZFRleHR1cmVVbml0cykK
KyAgICAgICAgeworICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1UZXh0dXJlSUQgPSBzdGF0ZS5n
ZXRTYW1wbGVyVGV4dHVyZUlkKHVuaXQsIHRleHR1cmVUeXBlKTsKKyAgICAgICAgICAgIGlmIChw
cm9ncmFtVGV4dHVyZUlEID09IHRleHR1cmVJRCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAvLyBUT0RPKGptYWRpbGwpOiBDaGVjayBmb3IgYXBwcm9wcmlhdGUgb3ZlcmxhcC4KKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiBmYWxzZTsKIH0KKworfSAgLy8gbmFtZXNwYWNlIGdsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUHJvZ3JhbS5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dyYW0uaAppbmRleCA1YTE3ZTky
ZTNhNjJlOGYxZTY3OWRkNmU5NDg2NDM0MjdhM2YwMDE4Li4xOWRmYzU3YWExN2JkOWRjMzEwMTk5
M2Q5OWQwMTA2ZTYyOWE4Mzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9Qcm9ncmFtLmgKQEAgLTExLDggKzExLDEwIEBACiAjZGVmaW5lIExJQkFOR0xFX1BS
T0dSQU1fSF8KIAogI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgotI2luY2x1ZGUgPEdMU0xBTkcvU2hh
ZGVyTGFuZy5oPgorI2luY2x1ZGUgPEdMU0xBTkcvU2hhZGVyVmFycy5oPgogCisjaW5jbHVkZSA8
YXJyYXk+CisjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDxzc3RyZWFt
PgogI2luY2x1ZGUgPHN0cmluZz4KQEAgLTM4LDE0ICs0MCwxNyBAQCBzdHJ1Y3QgVHJhbnNsYXRl
ZEF0dHJpYnV0ZTsKIG5hbWVzcGFjZSBnbAogewogc3RydWN0IENhcHM7CitjbGFzcyBDb250ZXh0
OwogY2xhc3MgQ29udGV4dFN0YXRlOwotY2xhc3MgUmVzb3VyY2VNYW5hZ2VyOwogY2xhc3MgU2hh
ZGVyOworY2xhc3MgU2hhZGVyUHJvZ3JhbU1hbmFnZXI7CitjbGFzcyBTdGF0ZTsKIGNsYXNzIElu
Zm9Mb2c7CiBjbGFzcyBCdWZmZXI7CiBjbGFzcyBGcmFtZWJ1ZmZlcjsKIHN0cnVjdCBVbmlmb3Jt
QmxvY2s7CiBzdHJ1Y3QgTGlua2VkVW5pZm9ybTsKK3N0cnVjdCBQYWNrZWRWYXJ5aW5nOwogCiBl
eHRlcm4gY29uc3QgY2hhciAqIGNvbnN0IGdfZmFrZXBhdGg7CiAKQEAgLTE1NSw2ICsxNjAsNDQg
QEAgc3RydWN0IEJpbmRpbmdJbmZvCiAgICAgYm9vbCB2YWxpZDsKIH07CiAKKy8vIFRoaXMgc21h
bGwgc3RydWN0dXJlIGVuY2Fwc3VsYXRlcyBiaW5kaW5nIHNhbXBsZXIgdW5pZm9ybXMgdG8gYWN0
aXZlIEdMIHRleHR1cmVzLgorc3RydWN0IFNhbXBsZXJCaW5kaW5nCit7CisgICAgU2FtcGxlckJp
bmRpbmcoR0xlbnVtIHRleHR1cmVUeXBlSW4sIHNpemVfdCBlbGVtZW50Q291bnQpCisgICAgICAg
IDogdGV4dHVyZVR5cGUodGV4dHVyZVR5cGVJbiksIGJvdW5kVGV4dHVyZVVuaXRzKGVsZW1lbnRD
b3VudCwgMCkKKyAgICB7CisgICAgfQorCisgICAgLy8gTmVjZXNzYXJ5IGZvciByZXRyaWV2aW5n
IGFjdGl2ZSB0ZXh0dXJlcyBmcm9tIHRoZSBHTCBzdGF0ZS4KKyAgICBHTGVudW0gdGV4dHVyZVR5
cGU7CisKKyAgICAvLyBMaXN0IG9mIGFsbCB0ZXh0dXJlcyBib3VuZCB0byB0aGlzIHNhbXBsZXIs
IG9mIHR5cGUgdGV4dHVyZVR5cGUuCisgICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBib3VuZFRleHR1
cmVVbml0czsKK307CisKKy8vIEEgdmFyeWluZyB3aXRoIHRyYW5mb3JtIGZlZWRiYWNrIGVuYWJs
ZWQuIElmIGl0J3MgYW4gYXJyYXksIGVpdGhlciB0aGUgd2hvbGUgYXJyYXkgb3Igb25lIG9mIGl0
cworLy8gZWxlbWVudHMgc3BlY2lmaWVkIGJ5ICdhcnJheUluZGV4JyBjYW4gc2V0IHRvIGJlIGVu
YWJsZWQuCitzdHJ1Y3QgVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nIDogcHVibGljIHNoOjpWYXJ5
aW5nCit7CisgICAgVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKGNvbnN0IHNoOjpWYXJ5aW5nICZ2
YXJ5aW5nSW4sIEdMdWludCBpbmRleCkKKyAgICAgICAgOiBzaDo6VmFyeWluZyh2YXJ5aW5nSW4p
LCBhcnJheUluZGV4KGluZGV4KQorICAgIHsKKyAgICB9CisgICAgc3RkOjpzdHJpbmcgbmFtZVdp
dGhBcnJheUluZGV4KCkgY29uc3QKKyAgICB7CisgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGZ1
bGxOYW1lU3RyOworICAgICAgICBmdWxsTmFtZVN0ciA8PCBuYW1lOworICAgICAgICBpZiAoYXJy
YXlJbmRleCAhPSBHTF9JTlZBTElEX0lOREVYKQorICAgICAgICB7CisgICAgICAgICAgICBmdWxs
TmFtZVN0ciA8PCAiWyIgPDwgYXJyYXlJbmRleCA8PCAiXSI7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIGZ1bGxOYW1lU3RyLnN0cigpOworICAgIH0KKyAgICBHTHNpemVpIHNpemUoKSBjb25z
dCB7IHJldHVybiAoYXJyYXlJbmRleCA9PSBHTF9JTlZBTElEX0lOREVYID8gZWxlbWVudENvdW50
KCkgOiAxKTsgfQorCisgICAgR0x1aW50IGFycmF5SW5kZXg7Cit9OworCiBjbGFzcyBQcm9ncmFt
U3RhdGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgpAQCAtMTg1LDE0
ICsyMjgsMTggQEAgY2xhc3MgUHJvZ3JhbVN0YXRlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxl
CiAgICAgewogICAgICAgICByZXR1cm4gbUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2s7CiAgICAg
fQotICAgIGNvbnN0IHN0ZDo6bWFwPGludCwgVmFyaWFibGVMb2NhdGlvbj4gJmdldE91dHB1dFZh
cmlhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1PdXRwdXRWYXJpYWJsZXM7IH0KKyAgICBjb25zdCBz
dGQ6Om1hcDxpbnQsIFZhcmlhYmxlTG9jYXRpb24+ICZnZXRPdXRwdXRMb2NhdGlvbnMoKSBjb25z
dCB7IHJldHVybiBtT3V0cHV0TG9jYXRpb25zOyB9CiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8TGlu
a2VkVW5pZm9ybT4gJmdldFVuaWZvcm1zKCkgY29uc3QgeyByZXR1cm4gbVVuaWZvcm1zOyB9CiAg
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmFyaWFibGVMb2NhdGlvbj4gJmdldFVuaWZvcm1Mb2NhdGlv
bnMoKSBjb25zdCB7IHJldHVybiBtVW5pZm9ybUxvY2F0aW9uczsgfQogICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPFVuaWZvcm1CbG9jaz4gJmdldFVuaWZvcm1CbG9ja3MoKSBjb25zdCB7IHJldHVybiBt
VW5pZm9ybUJsb2NrczsgfQorICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFNhbXBsZXJCaW5kaW5nPiAm
Z2V0U2FtcGxlckJpbmRpbmdzKCkgY29uc3QgeyByZXR1cm4gbVNhbXBsZXJCaW5kaW5nczsgfQog
Ci0gICAgY29uc3QgTGlua2VkVW5pZm9ybSAqZ2V0VW5pZm9ybUJ5TmFtZShjb25zdCBzdGQ6OnN0
cmluZyAmbmFtZSkgY29uc3Q7CiAgICAgR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKGNvbnN0IHN0
ZDo6c3RyaW5nICZuYW1lKSBjb25zdDsKLSAgICBHTHVpbnQgZ2V0VW5pZm9ybUluZGV4KGNvbnN0
IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0VW5pZm9ybUluZGV4RnJv
bU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0OworICAgIEdMdWludCBnZXRVbmlm
b3JtSW5kZXhGcm9tTG9jYXRpb24oR0xpbnQgbG9jYXRpb24pIGNvbnN0OworICAgIE9wdGlvbmFs
PEdMdWludD4gZ2V0U2FtcGxlckluZGV4KEdMaW50IGxvY2F0aW9uKSBjb25zdDsKKyAgICBib29s
IGlzU2FtcGxlclVuaWZvcm1JbmRleChHTHVpbnQgaW5kZXgpIGNvbnN0OworICAgIEdMdWludCBn
ZXRTYW1wbGVySW5kZXhGcm9tVW5pZm9ybUluZGV4KEdMdWludCB1bmlmb3JtSW5kZXgpIGNvbnN0
OwogCiAgIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFByb2dyYW07CkBAIC0yMDYsMTAgKzI1
MywxMCBAQCBjbGFzcyBQcm9ncmFtU3RhdGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAg
ICBTaGFkZXIgKm1BdHRhY2hlZENvbXB1dGVTaGFkZXI7CiAKICAgICBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gbVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzOwotICAgIHN0ZDo6dmVjdG9y
PHNoOjpWYXJ5aW5nPiBtVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFyczsKKyAgICBzdGQ6OnZl
Y3RvcjxUcmFuc2Zvcm1GZWVkYmFja1Zhcnlpbmc+IG1MaW5rZWRUcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzOwogICAgIEdMZW51bSBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlOwogCi0gICAg
R0x1aW50IG1Vbmlmb3JtQmxvY2tCaW5kaW5nc1tJTVBMRU1FTlRBVElPTl9NQVhfQ09NQklORURf
U0hBREVSX1VOSUZPUk1fQlVGRkVSU107CisgICAgc3RkOjphcnJheTxHTHVpbnQsIElNUExFTUVO
VEFUSU9OX01BWF9DT01CSU5FRF9TSEFERVJfVU5JRk9STV9CVUZGRVJTPiBtVW5pZm9ybUJsb2Nr
QmluZGluZ3M7CiAgICAgVW5pZm9ybUJsb2NrQmluZGluZ01hc2sgbUFjdGl2ZVVuaWZvcm1CbG9j
a0JpbmRpbmdzOwogCiAgICAgc3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gbUF0dHJpYnV0ZXM7
CkBAIC0yMjMsMTggKzI3MCwyNSBAQCBjbGFzcyBQcm9ncmFtU3RhdGUgZmluYWwgOiBhbmdsZTo6
Tm9uQ29weWFibGUKICAgICBzdGQ6OnZlY3RvcjxMaW5rZWRVbmlmb3JtPiBtVW5pZm9ybXM7CiAg
ICAgc3RkOjp2ZWN0b3I8VmFyaWFibGVMb2NhdGlvbj4gbVVuaWZvcm1Mb2NhdGlvbnM7CiAgICAg
c3RkOjp2ZWN0b3I8VW5pZm9ybUJsb2NrPiBtVW5pZm9ybUJsb2NrczsKKyAgICBSYW5nZVVJIG1T
YW1wbGVyVW5pZm9ybVJhbmdlOwogCisgICAgLy8gQW4gYXJyYXkgb2YgdGhlIHNhbXBsZXJzIHRo
YXQgYXJlIHVzZWQgYnkgdGhlIHByb2dyYW0KKyAgICBzdGQ6OnZlY3RvcjxnbDo6U2FtcGxlckJp
bmRpbmc+IG1TYW1wbGVyQmluZGluZ3M7CisKKyAgICBzdGQ6OnZlY3RvcjxzaDo6T3V0cHV0VmFy
aWFibGU+IG1PdXRwdXRWYXJpYWJsZXM7CiAgICAgLy8gVE9ETyhqbWFkaWxsKTogdXNlIHVub3Jk
ZXJlZC9oYXNoIG1hcCB3aGVuIGF2YWlsYWJsZQotICAgIHN0ZDo6bWFwPGludCwgVmFyaWFibGVM
b2NhdGlvbj4gbU91dHB1dFZhcmlhYmxlczsKKyAgICBzdGQ6Om1hcDxpbnQsIFZhcmlhYmxlTG9j
YXRpb24+IG1PdXRwdXRMb2NhdGlvbnM7CiAKICAgICBib29sIG1CaW5hcnlSZXRyaWV2ZWFibGVI
aW50OworICAgIGJvb2wgbVNlcGFyYWJsZTsKIH07CiAKIGNsYXNzIFByb2dyYW0gZmluYWwgOiBh
bmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBMYWJlbGVkT2JqZWN0CiB7CiAgIHB1YmxpYzoKLSAg
ICBQcm9ncmFtKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBSZXNvdXJjZU1hbmFnZXIgKm1h
bmFnZXIsIEdMdWludCBoYW5kbGUpOworICAgIFByb2dyYW0ocng6OkdMSW1wbEZhY3RvcnkgKmZh
Y3RvcnksIFNoYWRlclByb2dyYW1NYW5hZ2VyICptYW5hZ2VyLCBHTHVpbnQgaGFuZGxlKTsKICAg
ICB+UHJvZ3JhbSgpOworICAgIHZvaWQgZGVzdHJveShjb25zdCBDb250ZXh0ICpjb250ZXh0KTsK
IAogICAgIEdMdWludCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1IYW5kbGU7IH0KIApAQCAtMjQ0LDcg
KzI5OCw3IEBAIGNsYXNzIFByb2dyYW0gZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUsIHB1Ymxp
YyBMYWJlbGVkT2JqZWN0CiAgICAgcng6OlByb2dyYW1JbXBsICpnZXRJbXBsZW1lbnRhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1Qcm9ncmFtOyB9CiAKICAgICB2b2lkIGF0dGFjaFNoYWRlcihTaGFk
ZXIgKnNoYWRlcik7Ci0gICAgYm9vbCBkZXRhY2hTaGFkZXIoU2hhZGVyICpzaGFkZXIpOworICAg
IHZvaWQgZGV0YWNoU2hhZGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFNoYWRlciAqc2hhZGVy
KTsKICAgICBpbnQgZ2V0QXR0YWNoZWRTaGFkZXJzQ291bnQoKSBjb25zdDsKIAogICAgIGNvbnN0
IFNoYWRlciAqZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKSBjb25zdCB7IHJldHVybiBtU3RhdGUu
bUF0dGFjaGVkVmVydGV4U2hhZGVyOyB9CkBAIC0yNjIsMTUgKzMxNiwyNSBAQCBjbGFzcyBQcm9n
cmFtIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVjdAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcyk7CiAKLSAgICBFcnJvciBs
aW5rKGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0YSk7CisgICAgRXJyb3IgbGluayhjb25zdCBnbDo6
Q29udGV4dCAqY29udGV4dCk7CiAgICAgYm9vbCBpc0xpbmtlZCgpIGNvbnN0OwogCi0gICAgRXJy
b3IgbG9hZEJpbmFyeShHTGVudW0gYmluYXJ5Rm9ybWF0LCBjb25zdCB2b2lkICpiaW5hcnksIEdM
c2l6ZWkgbGVuZ3RoKTsKLSAgICBFcnJvciBzYXZlQmluYXJ5KEdMZW51bSAqYmluYXJ5Rm9ybWF0
LCB2b2lkICpiaW5hcnksIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoKSBjb25zdDsK
KyAgICBFcnJvciBsb2FkQmluYXJ5KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gYmluYXJ5Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqYmluYXJ5LAorICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgpOwor
ICAgIEVycm9yIHNhdmVCaW5hcnkoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSAqYmluYXJ5Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAqYmluYXJ5LAorICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoKSBjb25zdDsKICAgICBHTGludCBnZXRCaW5h
cnlMZW5ndGgoKSBjb25zdDsKICAgICB2b2lkIHNldEJpbmFyeVJldHJpZXZhYmxlSGludChib29s
IHJldHJpZXZhYmxlKTsKICAgICBib29sIGdldEJpbmFyeVJldHJpZXZhYmxlSGludCgpIGNvbnN0
OwogCisgICAgdm9pZCBzZXRTZXBhcmFibGUoYm9vbCBzZXBhcmFibGUpOworICAgIGJvb2wgaXNT
ZXBhcmFibGUoKSBjb25zdDsKKwogICAgIGludCBnZXRJbmZvTG9nTGVuZ3RoKCkgY29uc3Q7CiAg
ICAgdm9pZCBnZXRJbmZvTG9nKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFy
ICppbmZvTG9nKSBjb25zdDsKICAgICB2b2lkIGdldEF0dGFjaGVkU2hhZGVycyhHTHNpemVpIG1h
eENvdW50LCBHTHNpemVpICpjb3VudCwgR0x1aW50ICpzaGFkZXJzKSBjb25zdDsKQEAgLTI3OCwx
MiArMzQyLDE4IEBAIGNsYXNzIFByb2dyYW0gZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUsIHB1
YmxpYyBMYWJlbGVkT2JqZWN0CiAgICAgR0x1aW50IGdldEF0dHJpYnV0ZUxvY2F0aW9uKGNvbnN0
IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdDsKICAgICBib29sIGlzQXR0cmliTG9jYXRpb25BY3Rp
dmUoc2l6ZV90IGF0dHJpYkxvY2F0aW9uKSBjb25zdDsKIAotICAgIHZvaWQgZ2V0QWN0aXZlQXR0
cmlidXRlKEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpICpsZW5ndGgsIEdM
aW50ICpzaXplLCBHTGVudW0gKnR5cGUsIEdMY2hhciAqbmFtZSk7CisgICAgdm9pZCBnZXRBY3Rp
dmVBdHRyaWJ1dGUoR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMY2hhciAqbmFtZSkgY29uc3Q7CiAgICAgR0xpbnQgZ2V0QWN0aXZlQXR0cmlidXRlQ291
bnQoKSBjb25zdDsKICAgICBHTGludCBnZXRBY3RpdmVBdHRyaWJ1dGVNYXhMZW5ndGgoKSBjb25z
dDsKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiAmZ2V0QXR0cmlidXRlcygp
IGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5tQXR0cmlidXRlczsgfQogCiAgICAgR0xpbnQgZ2V0RnJh
Z0RhdGFMb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3Q7CisgICAgc2l6ZV90
IGdldE91dHB1dFJlc291cmNlQ291bnQoKSBjb25zdDsKIAogICAgIHZvaWQgZ2V0QWN0aXZlVW5p
Zm9ybShHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
c2l6ZSwKQEAgLTI5NSw4ICszNjUsMTAgQEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFuZ2xlOjpO
b25Db3B5YWJsZSwgcHVibGljIExhYmVsZWRPYmplY3QKICAgICBHTGludCBnZXRBY3RpdmVVbmlm
b3JtTWF4TGVuZ3RoKCkgY29uc3Q7CiAgICAgR0xpbnQgZ2V0QWN0aXZlVW5pZm9ybWkoR0x1aW50
IGluZGV4LCBHTGVudW0gcG5hbWUpIGNvbnN0OwogICAgIGJvb2wgaXNWYWxpZFVuaWZvcm1Mb2Nh
dGlvbihHTGludCBsb2NhdGlvbikgY29uc3Q7Ci0gICAgYm9vbCBpc0lnbm9yZWRVbmlmb3JtTG9j
YXRpb24oR0xpbnQgbG9jYXRpb24pIGNvbnN0OwogICAgIGNvbnN0IExpbmtlZFVuaWZvcm0gJmdl
dFVuaWZvcm1CeUxvY2F0aW9uKEdMaW50IGxvY2F0aW9uKSBjb25zdDsKKyAgICBjb25zdCBWYXJp
YWJsZUxvY2F0aW9uICZnZXRVbmlmb3JtTG9jYXRpb24oR0xpbnQgbG9jYXRpb24pIGNvbnN0Owor
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZhcmlhYmxlTG9jYXRpb24+ICZnZXRVbmlmb3JtTG9jYXRp
b25zKCkgY29uc3Q7CisgICAgY29uc3QgTGlua2VkVW5pZm9ybSAmZ2V0VW5pZm9ybUJ5SW5kZXgo
R0x1aW50IGluZGV4KSBjb25zdDsKIAogICAgIEdMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihjb25z
dCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3Q7CiAgICAgR0x1aW50IGdldFVuaWZvcm1JbmRleChj
b25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3Q7CkBAIC0zNDMsMTEgKzQxNSwxMCBAQCBjbGFz
cyBQcm9ncmFtIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVj
dAogICAgIEdMc2l6ZWkgZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTWF4TGVuZ3RoKCkgY29u
c3Q7CiAgICAgR0xlbnVtIGdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSgpIGNvbnN0Owog
Ci0gICAgc3RhdGljIGJvb2wgbGlua1ZhbGlkYXRlVW5pZm9ybXMoSW5mb0xvZyAmaW5mb0xvZywg
Y29uc3Qgc3RkOjpzdHJpbmcgJnVuaWZvcm1OYW1lLCBjb25zdCBzaDo6VW5pZm9ybSAmdmVydGV4
VW5pZm9ybSwgY29uc3Qgc2g6OlVuaWZvcm0gJmZyYWdtZW50VW5pZm9ybSk7CiAgICAgc3RhdGlj
IGJvb2wgbGlua1ZhbGlkYXRlSW50ZXJmYWNlQmxvY2tGaWVsZHMoSW5mb0xvZyAmaW5mb0xvZywg
Y29uc3Qgc3RkOjpzdHJpbmcgJnVuaWZvcm1OYW1lLCBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2tG
aWVsZCAmdmVydGV4VW5pZm9ybSwgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrRmllbGQgJmZyYWdt
ZW50VW5pZm9ybSk7CiAKICAgICB2b2lkIGFkZFJlZigpOwotICAgIHZvaWQgcmVsZWFzZSgpOwor
ICAgIHZvaWQgcmVsZWFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0KTsKICAgICB1bnNpZ25lZCBp
bnQgZ2V0UmVmQ291bnQoKSBjb25zdDsKICAgICB2b2lkIGZsYWdGb3JEZWxldGlvbigpOwogICAg
IGJvb2wgaXNGbGFnZ2VkRm9yRGVsZXRpb24oKSBjb25zdDsKQEAgLTM1NSwxMyArNDI2LDMwIEBA
IGNsYXNzIFByb2dyYW0gZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBMYWJlbGVk
T2JqZWN0CiAgICAgdm9pZCB2YWxpZGF0ZShjb25zdCBDYXBzICZjYXBzKTsKICAgICBib29sIHZh
bGlkYXRlU2FtcGxlcnMoSW5mb0xvZyAqaW5mb0xvZywgY29uc3QgQ2FwcyAmY2Fwcyk7CiAgICAg
Ym9vbCBpc1ZhbGlkYXRlZCgpIGNvbnN0OworICAgIGJvb2wgc2FtcGxlc0Zyb21UZXh0dXJlKGNv
bnN0IGdsOjpTdGF0ZSAmc3RhdGUsIEdMdWludCB0ZXh0dXJlSUQpIGNvbnN0OwogCiAgICAgY29u
c3QgQXR0cmlidXRlc01hc2sgJmdldEFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2soKSBjb25zdAog
ICAgIHsKICAgICAgICAgcmV0dXJuIG1TdGF0ZS5tQWN0aXZlQXR0cmliTG9jYXRpb25zTWFzazsK
ICAgICB9CiAKLSAgcHJpdmF0ZToKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxTYW1wbGVyQmluZGlu
Zz4gJmdldFNhbXBsZXJCaW5kaW5ncygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbVN0
YXRlLm1TYW1wbGVyQmluZGluZ3M7CisgICAgfQorICAgIGNvbnN0IFByb2dyYW1TdGF0ZSAmZ2V0
U3RhdGUoKSBjb25zdCB7IHJldHVybiBtU3RhdGU7IH0KKworICAgIHN0YXRpYyBib29sIGxpbmtW
YWxpZGF0ZVZhcmlhYmxlc0Jhc2UoSW5mb0xvZyAmaW5mb0xvZywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2YXJpYWJsZU5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaDo6U2hh
ZGVyVmFyaWFibGUgJnZlcnRleFZhcmlhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZmcmFnbWVudFZhcmlhYmxl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB2YWxpZGF0
ZVByZWNpc2lvbik7CisKKyAgICBHTHVpbnQgZ2V0SW5wdXRSZXNvdXJjZUluZGV4KGNvbnN0IEdM
Y2hhciAqbmFtZSkgY29uc3Q7CisgICAgR0x1aW50IGdldE91dHB1dFJlc291cmNlSW5kZXgoY29u
c3QgR0xjaGFyICpuYW1lKSBjb25zdDsKKyAgICB2b2lkIGdldElucHV0UmVzb3VyY2VOYW1lKEdM
dWludCBpbmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqbmFt
ZSkgY29uc3Q7CisgICAgdm9pZCBnZXRPdXRwdXRSZXNvdXJjZU5hbWUoR0x1aW50IGluZGV4LCBH
THNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpuYW1lKSBjb25zdDsKKwog
ICAgIGNsYXNzIEJpbmRpbmdzIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgewogICAg
ICAgcHVibGljOgpAQCAtMzc2LDEzICs0NjQsMjEgQEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFu
Z2xlOjpOb25Db3B5YWJsZSwgcHVibGljIExhYmVsZWRPYmplY3QKICAgICAgICAgc3RkOjp1bm9y
ZGVyZWRfbWFwPHN0ZDo6c3RyaW5nLCBHTHVpbnQ+IG1CaW5kaW5nczsKICAgICB9OwogCi0gICAg
dm9pZCB1bmxpbmsoYm9vbCBkZXN0cm95ID0gZmFsc2UpOworICBwcml2YXRlOgorICAgIHN0cnVj
dCBWYXJ5aW5nUmVmCisgICAgeworICAgICAgICBjb25zdCBzaDo6VmFyeWluZyAqZ2V0KCkgY29u
c3QgeyByZXR1cm4gdmVydGV4ID8gdmVydGV4IDogZnJhZ21lbnQ7IH0KKworICAgICAgICBjb25z
dCBzaDo6VmFyeWluZyAqdmVydGV4ICAgPSBudWxscHRyOworICAgICAgICBjb25zdCBzaDo6VmFy
eWluZyAqZnJhZ21lbnQgPSBudWxscHRyOworICAgIH07CisKKyAgICB1c2luZyBNZXJnZWRWYXJ5
aW5ncyA9IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBWYXJ5aW5nUmVmPjsKKworICAgIHZvaWQgdW5s
aW5rKCk7CiAgICAgdm9pZCByZXNldFVuaWZvcm1CbG9ja0JpbmRpbmdzKCk7CiAKLSAgICBib29s
IGxpbmtBdHRyaWJ1dGVzKGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0YSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIEluZm9Mb2cgJmluZm9Mb2csCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBCaW5kaW5ncyAmYXR0cmlidXRlQmluZGluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBTaGFkZXIgKnZlcnRleFNoYWRlcik7CisgICAgYm9vbCBsaW5rQXR0cmlidXRlcyhjb25z
dCBDb250ZXh0U3RhdGUgJmRhdGEsIEluZm9Mb2cgJmluZm9Mb2cpOwogICAgIGJvb2wgdmFsaWRh
dGVVbmlmb3JtQmxvY2tzQ291bnQoR0x1aW50IG1heFVuaWZvcm1CbG9ja3MsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNl
QmxvY2s+ICZibG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZlcnJvck1lc3NhZ2UsCkBAIC0zOTIsNjUgKzQ4OCwzMyBAQCBjbGFzcyBQ
cm9ncmFtIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVjdAog
ICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNlQmxvY2s+ICZmcmFnbWVudElu
dGVyZmFjZUJsb2NrcywKICAgICAgICAgSW5mb0xvZyAmaW5mb0xvZykgY29uc3Q7CiAgICAgYm9v
bCBsaW5rVW5pZm9ybUJsb2NrcyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBDYXBzICZjYXBzKTsK
LSAgICBib29sIGxpbmtWYXJ5aW5ncyhJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBTaGFkZXIgKnZl
cnRleFNoYWRlciwgY29uc3QgU2hhZGVyICpmcmFnbWVudFNoYWRlcikgY29uc3Q7Ci0gICAgYm9v
bCB2YWxpZGF0ZVZlcnRleEFuZEZyYWdtZW50VW5pZm9ybXMoSW5mb0xvZyAmaW5mb0xvZykgY29u
c3Q7Ci0gICAgYm9vbCBsaW5rVW5pZm9ybXMoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IGds
OjpDYXBzICZjYXBzLCBjb25zdCBCaW5kaW5ncyAmdW5pZm9ybUJpbmRpbmdzKTsKLSAgICBib29s
IGluZGV4VW5pZm9ybXMoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IGdsOjpDYXBzICZjYXBz
LCBjb25zdCBCaW5kaW5ncyAmdW5pZm9ybUJpbmRpbmdzKTsKLSAgICBib29sIGFyZU1hdGNoaW5n
SW50ZXJmYWNlQmxvY2tzKGdsOjpJbmZvTG9nICZpbmZvTG9nLAorICAgIGJvb2wgbGlua1Zhcnlp
bmdzKEluZm9Mb2cgJmluZm9Mb2cpIGNvbnN0OworCisgICAgYm9vbCBsaW5rVW5pZm9ybXMoSW5m
b0xvZyAmaW5mb0xvZywgY29uc3QgQ2FwcyAmY2FwcywgY29uc3QgQmluZGluZ3MgJnVuaWZvcm1M
b2NhdGlvbkJpbmRpbmdzKTsKKyAgICB2b2lkIGxpbmtTYW1wbGVyQmluZGluZ3MoKTsKKworICAg
IGJvb2wgYXJlTWF0Y2hpbmdJbnRlcmZhY2VCbG9ja3MoSW5mb0xvZyAmaW5mb0xvZywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAm
dmVydGV4SW50ZXJmYWNlQmxvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmZyYWdtZW50SW50ZXJmYWNlQmxvY2spIGNvbnN0
OwogCi0gICAgc3RhdGljIGJvb2wgbGlua1ZhbGlkYXRlVmFyaWFibGVzQmFzZShJbmZvTG9nICZp
bmZvTG9nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnZhcmlhYmxlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmdmVydGV4VmFyaWFibGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaDo6U2hhZGVy
VmFyaWFibGUgJmZyYWdtZW50VmFyaWFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHZhbGlkYXRlUHJlY2lzaW9uKTsKLQogICAgIHN0YXRpYyBib29s
IGxpbmtWYWxpZGF0ZVZhcnlpbmdzKEluZm9Mb2cgJmluZm9Mb2csCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZhcnlpbmdOYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNoOjpWYXJ5aW5nICZ2ZXJ0
ZXhWYXJ5aW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNo
OjpWYXJ5aW5nICZmcmFnbWVudFZhcnlpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHNoYWRlclZlcnNpb24pOwotICAgIGJvb2wgbGlua1ZhbGlkYXRlVHJhbnNm
b3JtRmVlZGJhY2soSW5mb0xvZyAmaW5mb0xvZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNvbnN0IHNoOjpWYXJ5aW5nICo+ICZsaW5r
ZWRWYXJ5aW5ncywKKyAgICBib29sIGxpbmtWYWxpZGF0ZUJ1aWx0SW5WYXJ5aW5ncyhJbmZvTG9n
ICZpbmZvTG9nKSBjb25zdDsKKyAgICBib29sIGxpbmtWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNr
KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW5mb0xvZyAmaW5mb0xvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IE1lcmdlZFZhcnlpbmdzICZsaW5rZWRWYXJ5aW5ncywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhcHMgJmNhcHMpIGNvbnN0
OwogCi0gICAgdm9pZCBnYXRoZXJUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKGNvbnN0IHN0ZDo6
dmVjdG9yPGNvbnN0IHNoOjpWYXJ5aW5nICo+ICZ2YXJ5aW5ncyk7Ci0gICAgYm9vbCBhc3NpZ25V
bmlmb3JtQmxvY2tSZWdpc3RlcihJbmZvTG9nICZpbmZvTG9nLCBVbmlmb3JtQmxvY2sgKnVuaWZv
cm1CbG9jaywgR0xlbnVtIHNoYWRlciwgdW5zaWduZWQgaW50IHJlZ2lzdGVySW5kZXgsIGNvbnN0
IENhcHMgJmNhcHMpOwotICAgIHZvaWQgZGVmaW5lT3V0cHV0VmFyaWFibGVzKFNoYWRlciAqZnJh
Z21lbnRTaGFkZXIpOworICAgIHZvaWQgZ2F0aGVyVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhj
b25zdCBNZXJnZWRWYXJ5aW5ncyAmdmFyeWluZ3MpOwogCi0gICAgc3RkOjp2ZWN0b3I8Y29uc3Qg
c2g6OlZhcnlpbmcgKj4gZ2V0TWVyZ2VkVmFyeWluZ3MoKSBjb25zdDsKKyAgICBNZXJnZWRWYXJ5
aW5ncyBnZXRNZXJnZWRWYXJ5aW5ncygpIGNvbnN0OworICAgIHN0ZDo6dmVjdG9yPFBhY2tlZFZh
cnlpbmc+IGdldFBhY2tlZFZhcnlpbmdzKGNvbnN0IE1lcmdlZFZhcnlpbmdzICZtZXJnZWRWYXJ5
aW5ncykgY29uc3Q7CiAgICAgdm9pZCBsaW5rT3V0cHV0VmFyaWFibGVzKCk7CiAKLSAgICBib29s
IGZsYXR0ZW5Vbmlmb3Jtc0FuZENoZWNrQ2Fwc0ZvclNoYWRlcihjb25zdCBnbDo6U2hhZGVyICZz
aGFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IG1heFVuaWZvcm1Db21wb25lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBtYXhUZXh0dXJlSW1hZ2VVbml0cywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmY29t
cG9uZW50c0Vycm9yTWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2FtcGxlckVycm9yTWVzc2FnZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxMaW5r
ZWRVbmlmb3JtPiAmc2FtcGxlclVuaWZvcm1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEluZm9Mb2cgJmluZm9Mb2cpOwotICAgIGJvb2wgZmxhdHRlblVu
aWZvcm1zQW5kQ2hlY2tDYXBzKGNvbnN0IENhcHMgJmNhcHMsIEluZm9Mb2cgJmluZm9Mb2cpOwot
Ci0gICAgc3RydWN0IFZlY3RvckFuZFNhbXBsZXJDb3VudAotICAgIHsKLSAgICAgICAgVmVjdG9y
QW5kU2FtcGxlckNvdW50KCkgOiB2ZWN0b3JDb3VudCgwKSwgc2FtcGxlckNvdW50KDApIHt9Ci0g
ICAgICAgIFZlY3RvckFuZFNhbXBsZXJDb3VudChjb25zdCBWZWN0b3JBbmRTYW1wbGVyQ291bnQg
Jm90aGVyKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFZlY3RvckFuZFNhbXBsZXJDb3VudCAmb3BlcmF0
b3I9KGNvbnN0IFZlY3RvckFuZFNhbXBsZXJDb3VudCAmb3RoZXIpID0gZGVmYXVsdDsKLQotICAg
ICAgICBWZWN0b3JBbmRTYW1wbGVyQ291bnQgJm9wZXJhdG9yKz0oY29uc3QgVmVjdG9yQW5kU2Ft
cGxlckNvdW50ICZvdGhlcikKLSAgICAgICAgewotICAgICAgICAgICAgdmVjdG9yQ291bnQgKz0g
b3RoZXIudmVjdG9yQ291bnQ7Ci0gICAgICAgICAgICBzYW1wbGVyQ291bnQgKz0gb3RoZXIuc2Ft
cGxlckNvdW50OwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdW5zaWduZWQgaW50IHZlY3RvckNvdW50OwotICAgICAgICB1bnNpZ25lZCBpbnQgc2FtcGxl
ckNvdW50OwotICAgIH07Ci0KLSAgICBWZWN0b3JBbmRTYW1wbGVyQ291bnQgZmxhdHRlblVuaWZv
cm0oY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ1bmlmb3JtLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnVsbE5hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPExpbmtlZFVu
aWZvcm0+ICpzYW1wbGVyVW5pZm9ybXMpOworICAgIHZvaWQgc2V0VW5pZm9ybVZhbHVlc0Zyb21C
aW5kaW5nUXVhbGlmaWVycygpOwogCiAgICAgdm9pZCBnYXRoZXJJbnRlcmZhY2VCbG9ja0luZm8o
KTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFyVD4KQEAgLTQ2MCwxMSArNTI0LDIwIEBAIGNs
YXNzIFByb2dyYW0gZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBMYWJlbGVkT2Jq
ZWN0CiAKICAgICB2b2lkIGRlZmluZVVuaWZvcm1CbG9jayhjb25zdCBzaDo6SW50ZXJmYWNlQmxv
Y2sgJmludGVyZmFjZUJsb2NrLCBHTGVudW0gc2hhZGVyVHlwZSk7CiAKKyAgICAvLyBCb3RoIHRo
ZXNlIGZ1bmN0aW9uIHVwZGF0ZSB0aGUgY2FjaGVkIHVuaWZvcm0gdmFsdWVzIGFuZCByZXR1cm4g
YSBtb2RpZmllZCAiY291bnQiCisgICAgLy8gc28gdGhhdCB0aGUgdW5pZm9ybSB1cGRhdGUgZG9l
c24ndCBvdmVyZmxvdyB0aGUgdW5pZm9ybS4KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAg
ICB2b2lkIHNldFVuaWZvcm1JbnRlcm5hbChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgVCAqdik7Ci0KKyAgICBHTHNpemVpIHNldFVuaWZvcm1JbnRlcm5hbChHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgaW50IHZlY3RvclNpemUsIGNvbnN0IFQgKnYpOwogICAgIHRl
bXBsYXRlIDxzaXplX3QgY29scywgc2l6ZV90IHJvd3MsIHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBz
ZXRNYXRyaXhVbmlmb3JtSW50ZXJuYWwoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IFQgKnYpOworICAgIEdMc2l6ZWkgc2V0TWF0cml4VW5p
Zm9ybUludGVybmFsKEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUICp2KTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lk
IHVwZGF0ZVNhbXBsZXJVbmlmb3JtKGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJmxvY2F0aW9uSW5m
bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmRlc3RQb2lu
dGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjbGFtcGVkQ291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUICp2KTsKIAogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBEZXN0VD4KICAgICB2b2lkIGdldFVuaWZvcm1JbnRlcm5hbChHTGludCBs
b2NhdGlvbiwgRGVzdFQgKmRhdGFPdXQpIGNvbnN0OwpAQCAtNDc1LDcgKzU0OCwxMCBAQCBjbGFz
cyBQcm9ncmFtIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVj
dAogICAgIGJvb2wgbVZhbGlkYXRlZDsKIAogICAgIEJpbmRpbmdzIG1BdHRyaWJ1dGVCaW5kaW5n
czsKLSAgICBCaW5kaW5ncyBtVW5pZm9ybUJpbmRpbmdzOworCisgICAgLy8gTm90ZSB0aGF0IHRo
aXMgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBiaW5kaW5nIGxheW91dCBxdWFsaWZpZXJzIHRoYXQg
Y2FuIGJlIHNldCBmb3Igc29tZQorICAgIC8vIHVuaWZvcm1zIGluIEdMRVMzLjErLiBJdCBpcyB1
c2VkIHRvIHByZS1zZXQgdGhlIGxvY2F0aW9uIG9mIHVuaWZvcm1zLgorICAgIEJpbmRpbmdzIG1V
bmlmb3JtTG9jYXRpb25CaW5kaW5nczsKIAogICAgIC8vIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5n
CiAgICAgQmluZGluZ3MgbUZyYWdtZW50SW5wdXRCaW5kaW5nczsKQEAgLTQ4NSw3ICs1NjEsNyBA
QCBjbGFzcyBQcm9ncmFtIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxl
ZE9iamVjdAogCiAgICAgdW5zaWduZWQgaW50IG1SZWZDb3VudDsKIAotICAgIFJlc291cmNlTWFu
YWdlciAqbVJlc291cmNlTWFuYWdlcjsKKyAgICBTaGFkZXJQcm9ncmFtTWFuYWdlciAqbVJlc291
cmNlTWFuYWdlcjsKICAgICBjb25zdCBHTHVpbnQgbUhhbmRsZTsKIAogICAgIEluZm9Mb2cgbUlu
Zm9Mb2c7CkBAIC00OTMsOCArNTY5LDcgQEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFuZ2xlOjpO
b25Db3B5YWJsZSwgcHVibGljIExhYmVsZWRPYmplY3QKICAgICAvLyBDYWNoZSBmb3Igc2FtcGxl
ciB2YWxpZGF0aW9uCiAgICAgT3B0aW9uYWw8Ym9vbD4gbUNhY2hlZFZhbGlkYXRlU2FtcGxlcnNS
ZXN1bHQ7CiAgICAgc3RkOjp2ZWN0b3I8R0xlbnVtPiBtVGV4dHVyZVVuaXRUeXBlc0NhY2hlOwot
ICAgIFJhbmdlVUkgbVNhbXBsZXJVbmlmb3JtUmFuZ2U7CiB9OwotfQorfSAgLy8gbmFtZXNwYWNl
IGdsCiAKICNlbmRpZiAgIC8vIExJQkFOR0xFX1BST0dSQU1fSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZWZDb3VudE9iamVjdC5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1JlZkNvdW50T2JqZWN0LmgKaW5kZXggODZl
NmQ3ODhiNTFlYjdlYmZmMDA1ODNjZjBkMDQ0YzY1MmYwODBhZi4uMTEyMzEyZTc1YWJjYzMwOTY2
YTY2M2YxOGMwOGEwZWIyYzllZWY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1JlZkNvdW50T2JqZWN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL1JlZkNvdW50T2JqZWN0LmgKQEAgLTE4LDEwICsxOCwxNSBAQAog
CiAjaW5jbHVkZSA8Y3N0ZGRlZj4KIAotY2xhc3MgUmVmQ291bnRPYmplY3QgOiBhbmdsZTo6Tm9u
Q29weWFibGUKK25hbWVzcGFjZSBnbAoreworY2xhc3MgQ29udGV4dDsKK30KKworY2xhc3MgUmVm
Q291bnRPYmplY3ROb0lEIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7CiAgIHB1YmxpYzoKLSAgICBl
eHBsaWNpdCBSZWZDb3VudE9iamVjdChHTHVpbnQgaWQpIDogbUlkKGlkKSwgbVJlZkNvdW50KDAp
IHt9CisgICAgUmVmQ291bnRPYmplY3ROb0lEKCkgOiBtUmVmQ291bnQoMCkge30KIAogICAgIHZv
aWQgYWRkUmVmKCkgY29uc3QgeyArK21SZWZDb3VudDsgfQogCkBAIC0zNSwxOSArNDAsNDEgQEAg
Y2xhc3MgUmVmQ291bnRPYmplY3QgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgfQogICAg
IH0KIAotICAgIEdMdWludCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1JZDsgfQorICAgIC8vIEEgc3Bl
Y2lhbGl6ZWQgcmVsZWFzZSBtZXRob2QgZm9yIG9iamVjdHMgd2hpY2ggbmVlZCBhIGRlc3Ryb3kg
Y29udGV4dC4KKyAgICB2b2lkIHJlbGVhc2UoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCisg
ICAgeworICAgICAgICBBU1NFUlQobVJlZkNvdW50ID4gMCk7CisgICAgICAgIGlmICgtLW1SZWZD
b3VudCA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBkZXN0cm95KGNvbnRleHQpOworICAg
ICAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBzaXplX3QgZ2V0
UmVmQ291bnQoKSBjb25zdCB7IHJldHVybiBtUmVmQ291bnQ7IH0KIAogICBwcm90ZWN0ZWQ6Ci0g
ICAgdmlydHVhbCB+UmVmQ291bnRPYmplY3QoKSB7IEFTU0VSVChtUmVmQ291bnQgPT0gMCk7IH0K
KyAgICB2aXJ0dWFsIH5SZWZDb3VudE9iamVjdE5vSUQoKSB7IEFTU0VSVChtUmVmQ291bnQgPT0g
MCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4
dCkge30KIAogICBwcml2YXRlOgotICAgIEdMdWludCBtSWQ7Ci0KICAgICBtdXRhYmxlIHN0ZDo6
c2l6ZV90IG1SZWZDb3VudDsKIH07CiAKK2NsYXNzIFJlZkNvdW50T2JqZWN0IDogcHVibGljIFJl
ZkNvdW50T2JqZWN0Tm9JRAoreworICBwdWJsaWM6CisgICAgZXhwbGljaXQgUmVmQ291bnRPYmpl
Y3QoR0x1aW50IGlkKSA6IG1JZChpZCkge30KKworICAgIEdMdWludCBpZCgpIGNvbnN0IHsgcmV0
dXJuIG1JZDsgfQorCisgIHByb3RlY3RlZDoKKyAgICB+UmVmQ291bnRPYmplY3QoKSBvdmVycmlk
ZSB7fQorCisgIHByaXZhdGU6CisgICAgR0x1aW50IG1JZDsKK307CisKIHRlbXBsYXRlIDxjbGFz
cyBPYmplY3RUeXBlPgogY2xhc3MgQmluZGluZ1BvaW50ZXIKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZW5kZXJidWZmZXIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZW5kZXJidWZmZXIuaAppbmRleCA1N2NjMDgy
Nzk5ODFmMjRmMGZlMjdkNzMyMDg5MDAyM2M5Y2M4ZjZhLi4yYmY1YmVkZGEzYTI4ZDcxZWM3YThm
ODViNWQzNjA4NWI0Y2RmODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvUmVuZGVyYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL1JlbmRlcmJ1ZmZlci5oCkBAIC0zNSw2ICszNSw4IEBAIGNsYXNzIFJlbmRl
cmJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBlZ2w6OkltYWdlU2libGluZywKICAgICBSZW5kZXJidWZm
ZXIocng6OlJlbmRlcmJ1ZmZlckltcGwgKmltcGwsIEdMdWludCBpZCk7CiAgICAgdmlydHVhbCB+
UmVuZGVyYnVmZmVyKCk7CiAKKyAgICB2b2lkIGRlc3Ryb3koY29uc3QgQ29udGV4dCAqY29udGV4
dCkgb3ZlcnJpZGUge30KKwogICAgIHZvaWQgc2V0TGFiZWwoY29uc3Qgc3RkOjpzdHJpbmcgJmxh
YmVsKSBvdmVycmlkZTsKICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZ2V0TGFiZWwoKSBjb25zdCBv
dmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL1Jlc291cmNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvUmVzb3VyY2VNYW5hZ2VyLmNwcAppbmRleCBkM2RjMTAyM2NjNTFhNTM4YzNlMzdhNWE5
ODRhMDU3MTVhZDdkNzQ1Li5mNTFiZWQyMThjMzYyMDZkOTAzNjc2YjllMmE5MGFmY2U5NmJkMTE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVzb3Vy
Y2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
UmVzb3VyY2VNYW5hZ2VyLmNwcApAQCAtMSwxMSArMSwxMSBAQAogLy8KLS8vIENvcHlyaWdodCAo
YykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KIC8vCiAKLS8vIFJlc291cmNlTWFuYWdlci5jcHA6IEltcGxlbWVudHMg
dGhlIGdsOjpSZXNvdXJjZU1hbmFnZXIgY2xhc3MsIHdoaWNoIHRyYWNrcyBhbmQKLS8vIHJldHJp
ZXZlcyBvYmplY3RzIHdoaWNoIG1heSBiZSBzaGFyZWQgYnkgbXVsdGlwbGUgQ29udGV4dHMuCisv
LyBSZXNvdXJjZU1hbmFnZXIuY3BwOiBJbXBsZW1lbnRzIHRoZSB0aGUgUmVzb3VyY2VNYW5hZ2Vy
IGNsYXNzZXMsIHdoaWNoIGhhbmRsZSBhbGxvY2F0aW9uIGFuZAorLy8gbGlmZXRpbWUgb2YgR0wg
b2JqZWN0cy4KIAogI2luY2x1ZGUgImxpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5oIgogCkBAIC0y
MSw1NDIgKzIxLDUwMiBAQAogCiBuYW1lc3BhY2UgZ2wKIHsKLVJlc291cmNlTWFuYWdlcjo6UmVz
b3VyY2VNYW5hZ2VyKCkgOiBtUmVmQ291bnQoMSkKLXsKLX0KIAotUmVzb3VyY2VNYW5hZ2VyOjp+
UmVzb3VyY2VNYW5hZ2VyKCkKK25hbWVzcGFjZQogewotICAgIHdoaWxlICghbUJ1ZmZlck1hcC5l
bXB0eSgpKQotICAgIHsKLSAgICAgICAgZGVsZXRlQnVmZmVyKG1CdWZmZXJNYXAuYmVnaW4oKS0+
Zmlyc3QpOwotICAgIH0KLQotICAgIHdoaWxlICghbVByb2dyYW1NYXAuZW1wdHkoKSkKLSAgICB7
Ci0gICAgICAgIGRlbGV0ZVByb2dyYW0obVByb2dyYW1NYXAuYmVnaW4oKS0+Zmlyc3QpOwotICAg
IH0KLQotICAgIHdoaWxlICghbVNoYWRlck1hcC5lbXB0eSgpKQotICAgIHsKLSAgICAgICAgZGVs
ZXRlU2hhZGVyKG1TaGFkZXJNYXAuYmVnaW4oKS0+Zmlyc3QpOwotICAgIH0KLQotICAgIHdoaWxl
ICghbVJlbmRlcmJ1ZmZlck1hcC5lbXB0eSgpKQotICAgIHsKLSAgICAgICAgZGVsZXRlUmVuZGVy
YnVmZmVyKG1SZW5kZXJidWZmZXJNYXAuYmVnaW4oKS0+Zmlyc3QpOwotICAgIH0KIAotICAgIHdo
aWxlICghbVRleHR1cmVNYXAuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZVRleHR1cmUo
bVRleHR1cmVNYXAuYmVnaW4oKS0+Zmlyc3QpOwotICAgIH0KK3RlbXBsYXRlIDx0eXBlbmFtZSBS
ZXNvdXJjZVR5cGU+CitHTHVpbnQgQWxsb2NhdGVFbXB0eU9iamVjdChIYW5kbGVBbGxvY2F0b3Ig
KmhhbmRsZUFsbG9jYXRvciwgUmVzb3VyY2VNYXA8UmVzb3VyY2VUeXBlPiAqb2JqZWN0TWFwKQor
eworICAgIEdMdWludCBoYW5kbGUgICAgICAgID0gaGFuZGxlQWxsb2NhdG9yLT5hbGxvY2F0ZSgp
OworICAgICgqb2JqZWN0TWFwKVtoYW5kbGVdID0gbnVsbHB0cjsKKyAgICByZXR1cm4gaGFuZGxl
OworfQogCi0gICAgd2hpbGUgKCFtU2FtcGxlck1hcC5lbXB0eSgpKQotICAgIHsKLSAgICAgICAg
ZGVsZXRlU2FtcGxlcihtU2FtcGxlck1hcC5iZWdpbigpLT5maXJzdCk7Ci0gICAgfQordGVtcGxh
dGUgPHR5cGVuYW1lIFJlc291cmNlVHlwZT4KK1Jlc291cmNlVHlwZSAqR2V0T2JqZWN0KGNvbnN0
IFJlc291cmNlTWFwPFJlc291cmNlVHlwZT4gJm9iamVjdE1hcCwgR0x1aW50IGhhbmRsZSkKK3sK
KyAgICBhdXRvIGl0ZXIgPSBvYmplY3RNYXAuZmluZChoYW5kbGUpOworICAgIHJldHVybiBpdGVy
ICE9IG9iamVjdE1hcC5lbmQoKSA/IGl0ZXItPnNlY29uZCA6IG51bGxwdHI7Cit9CiAKLSAgICB3
aGlsZSAoIW1GZW5jZVN5bmNNYXAuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZUZlbmNl
U3luYyhtRmVuY2VTeW5jTWFwLmJlZ2luKCktPmZpcnN0KTsKLSAgICB9Cit9ICAvLyBhbm9ueW1v
dXMgbmFtZXNwYWNlCiAKLSAgICBmb3IgKGF1dG8gaXQgPSBtUGF0aE1hcC5iZWdpbigpOyBpdCAh
PSBtUGF0aE1hcC5lbmQoKTsgKytpdCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IGF1dG8gKnAgPSBp
dC0+c2Vjb25kOwotICAgICAgICBkZWxldGUgcDsKLSAgICB9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUg
SGFuZGxlQWxsb2NhdG9yVHlwZT4KK1Jlc291cmNlTWFuYWdlckJhc2U8SGFuZGxlQWxsb2NhdG9y
VHlwZT46OlJlc291cmNlTWFuYWdlckJhc2UoKSA6IG1SZWZDb3VudCgxKQorewogfQogCi12b2lk
IFJlc291cmNlTWFuYWdlcjo6YWRkUmVmKCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBIYW5kbGVBbGxv
Y2F0b3JUeXBlPgordm9pZCBSZXNvdXJjZU1hbmFnZXJCYXNlPEhhbmRsZUFsbG9jYXRvclR5cGU+
OjphZGRSZWYoKQogewogICAgIG1SZWZDb3VudCsrOwogfQogCi12b2lkIFJlc291cmNlTWFuYWdl
cjo6cmVsZWFzZSgpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFuZGxlQWxsb2NhdG9yVHlwZT4KK3Zv
aWQgUmVzb3VyY2VNYW5hZ2VyQmFzZTxIYW5kbGVBbGxvY2F0b3JUeXBlPjo6cmVsZWFzZShjb25z
dCBDb250ZXh0ICpjb250ZXh0KQogewogICAgIGlmICgtLW1SZWZDb3VudCA9PSAwKQogICAgIHsK
KyAgICAgICAgcmVzZXQoY29udGV4dCk7CiAgICAgICAgIGRlbGV0ZSB0aGlzOwogICAgIH0KIH0K
IAotLy8gUmV0dXJucyBhbiB1bnVzZWQgYnVmZmVyIG5hbWUKLUdMdWludCBSZXNvdXJjZU1hbmFn
ZXI6OmNyZWF0ZUJ1ZmZlcigpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzb3VyY2VUeXBlLCB0eXBl
bmFtZSBIYW5kbGVBbGxvY2F0b3JUeXBlLCB0eXBlbmFtZSBJbXBsVD4KK1R5cGVkUmVzb3VyY2VN
YW5hZ2VyPFJlc291cmNlVHlwZSwgSGFuZGxlQWxsb2NhdG9yVHlwZSwgSW1wbFQ+Ojp+VHlwZWRS
ZXNvdXJjZU1hbmFnZXIoKQogewotICAgIEdMdWludCBoYW5kbGUgPSBtQnVmZmVySGFuZGxlQWxs
b2NhdG9yLmFsbG9jYXRlKCk7Ci0KLSAgICBtQnVmZmVyTWFwW2hhbmRsZV0gPSBudWxscHRyOwot
Ci0gICAgcmV0dXJuIGhhbmRsZTsKKyAgICBBU1NFUlQobU9iamVjdE1hcC5lbXB0eSgpKTsKIH0K
IAotLy8gUmV0dXJucyBhbiB1bnVzZWQgc2hhZGVyL3Byb2dyYW0gbmFtZQotR0x1aW50IFJlc291
cmNlTWFuYWdlcjo6Y3JlYXRlU2hhZGVyKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpMaW1pdGF0aW9ucyAm
cmVuZGVyZXJMaW1pdGF0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZXNvdXJjZVR5cGUsIHR5cGVuYW1l
IEhhbmRsZUFsbG9jYXRvclR5cGUsIHR5cGVuYW1lIEltcGxUPgordm9pZCBUeXBlZFJlc291cmNl
TWFuYWdlcjxSZXNvdXJjZVR5cGUsIEhhbmRsZUFsbG9jYXRvclR5cGUsIEltcGxUPjo6cmVzZXQo
Y29uc3QgQ29udGV4dCAqY29udGV4dCkKIHsKLSAgICBBU1NFUlQodHlwZSA9PSBHTF9WRVJURVhf
U0hBREVSIHx8IHR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSIHx8IHR5cGUgPT0gR0xfQ09NUFVU
RV9TSEFERVIpOwotICAgIEdMdWludCBoYW5kbGUgPSBtUHJvZ3JhbVNoYWRlckhhbmRsZUFsbG9j
YXRvci5hbGxvY2F0ZSgpOwotCi0gICAgbVNoYWRlck1hcFtoYW5kbGVdID0gbmV3IFNoYWRlcih0
aGlzLCBmYWN0b3J5LCByZW5kZXJlckxpbWl0YXRpb25zLCB0eXBlLCBoYW5kbGUpOwotCi0gICAg
cmV0dXJuIGhhbmRsZTsKKyAgICB3aGlsZSAoIW1PYmplY3RNYXAuZW1wdHkoKSkKKyAgICB7Cisg
ICAgICAgIGRlbGV0ZU9iamVjdChjb250ZXh0LCBtT2JqZWN0TWFwLmJlZ2luKCktPmZpcnN0KTsK
KyAgICB9CisgICAgbU9iamVjdE1hcC5jbGVhcigpOwogfQogCi0vLyBSZXR1cm5zIGFuIHVudXNl
ZCBwcm9ncmFtL3NoYWRlciBuYW1lCi1HTHVpbnQgUmVzb3VyY2VNYW5hZ2VyOjpjcmVhdGVQcm9n
cmFtKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5KQordGVtcGxhdGUgPHR5cGVuYW1lIFJlc291
cmNlVHlwZSwgdHlwZW5hbWUgSGFuZGxlQWxsb2NhdG9yVHlwZSwgdHlwZW5hbWUgSW1wbFQ+Cit2
b2lkIFR5cGVkUmVzb3VyY2VNYW5hZ2VyPFJlc291cmNlVHlwZSwgSGFuZGxlQWxsb2NhdG9yVHlw
ZSwgSW1wbFQ+OjpkZWxldGVPYmplY3QoCisgICAgY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICBHTHVpbnQgaGFuZGxlKQogewotICAgIEdMdWludCBoYW5kbGUgPSBtUHJvZ3JhbVNoYWRlckhh
bmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOworICAgIGF1dG8gb2JqZWN0SXRlciA9IG1PYmplY3RN
YXAuZmluZChoYW5kbGUpOworICAgIGlmIChvYmplY3RJdGVyID09IG1PYmplY3RNYXAuZW5kKCkp
CisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgbVByb2dyYW1NYXBbaGFuZGxl
XSA9IG5ldyBQcm9ncmFtKGZhY3RvcnksIHRoaXMsIGhhbmRsZSk7CisgICAgaWYgKG9iamVjdEl0
ZXItPnNlY29uZCAhPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgb2JqZWN0SXRlci0+c2Vjb25k
LT5kZXN0cm95KGNvbnRleHQpOworICAgICAgICBJbXBsVDo6RGVsZXRlT2JqZWN0KG9iamVjdEl0
ZXItPnNlY29uZCk7CisgICAgfQogCi0gICAgcmV0dXJuIGhhbmRsZTsKKyAgICAvLyBSZXF1aXJl
cyBhbiBleHBsaWNpdCB0aGlzLT4gYmVjYXVzZSBvZiBDKysgdGVtcGxhdGUgcnVsZXMuCisgICAg
dGhpcy0+bUhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKG9iamVjdEl0ZXItPmZpcnN0KTsKKyAgICBt
T2JqZWN0TWFwLmVyYXNlKG9iamVjdEl0ZXIpOwogfQogCi0vLyBSZXR1cm5zIGFuIHVudXNlZCB0
ZXh0dXJlIG5hbWUKLUdMdWludCBSZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZVRleHR1cmUoKQordGVt
cGxhdGUgPHR5cGVuYW1lIFJlc291cmNlVHlwZSwgdHlwZW5hbWUgSGFuZGxlQWxsb2NhdG9yVHlw
ZSwgdHlwZW5hbWUgSW1wbFQ+Cit0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJnVHlwZXM+CitSZXNv
dXJjZVR5cGUgKlR5cGVkUmVzb3VyY2VNYW5hZ2VyPFJlc291cmNlVHlwZSwgSGFuZGxlQWxsb2Nh
dG9yVHlwZSwgSW1wbFQ+OjphbGxvY2F0ZU9iamVjdCgKKyAgICB0eXBlbmFtZSBSZXNvdXJjZU1h
cDxSZXNvdXJjZVR5cGU+OjppdGVyYXRvciAmb2JqZWN0TWFwSXRlciwKKyAgICByeDo6R0xJbXBs
RmFjdG9yeSAqZmFjdG9yeSwKKyAgICBHTHVpbnQgaGFuZGxlLAorICAgIEFyZ1R5cGVzLi4uIGFy
Z3MpCiB7Ci0gICAgR0x1aW50IGhhbmRsZSA9IG1UZXh0dXJlSGFuZGxlQWxsb2NhdG9yLmFsbG9j
YXRlKCk7Ci0KLSAgICBtVGV4dHVyZU1hcFtoYW5kbGVdID0gbnVsbHB0cjsKKyAgICBSZXNvdXJj
ZVR5cGUgKm9iamVjdCA9IEltcGxUOjpBbGxvY2F0ZU5ld09iamVjdChmYWN0b3J5LCBoYW5kbGUs
IGFyZ3MuLi4pOwogCi0gICAgcmV0dXJuIGhhbmRsZTsKKyAgICBpZiAob2JqZWN0TWFwSXRlciAh
PSBtT2JqZWN0TWFwLmVuZCgpKQorICAgIHsKKyAgICAgICAgb2JqZWN0TWFwSXRlci0+c2Vjb25k
ID0gb2JqZWN0OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICB0aGlzLT5tSGFuZGxl
QWxsb2NhdG9yLnJlc2VydmUoaGFuZGxlKTsKKyAgICAgICAgbU9iamVjdE1hcFtoYW5kbGVdID0g
b2JqZWN0OworICAgIH0KKworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK3RlbXBsYXRlIGNsYXNz
IFJlc291cmNlTWFuYWdlckJhc2U8SGFuZGxlQWxsb2NhdG9yPjsKK3RlbXBsYXRlIGNsYXNzIFJl
c291cmNlTWFuYWdlckJhc2U8SGFuZGxlUmFuZ2VBbGxvY2F0b3I+OwordGVtcGxhdGUgY2xhc3Mg
VHlwZWRSZXNvdXJjZU1hbmFnZXI8QnVmZmVyLCBIYW5kbGVBbGxvY2F0b3IsIEJ1ZmZlck1hbmFn
ZXI+OwordGVtcGxhdGUgQnVmZmVyICpUeXBlZFJlc291cmNlTWFuYWdlcjxCdWZmZXIsIEhhbmRs
ZUFsbG9jYXRvciwgQnVmZmVyTWFuYWdlcj46OmFsbG9jYXRlT2JqZWN0KAorICAgIFJlc291cmNl
TWFwPEJ1ZmZlcj46Oml0ZXJhdG9yICYsCisgICAgcng6OkdMSW1wbEZhY3RvcnkgKiwKKyAgICBH
THVpbnQpOwordGVtcGxhdGUgY2xhc3MgVHlwZWRSZXNvdXJjZU1hbmFnZXI8VGV4dHVyZSwgSGFu
ZGxlQWxsb2NhdG9yLCBUZXh0dXJlTWFuYWdlcj47Cit0ZW1wbGF0ZSBUZXh0dXJlICpUeXBlZFJl
c291cmNlTWFuYWdlcjxUZXh0dXJlLCBIYW5kbGVBbGxvY2F0b3IsIFRleHR1cmVNYW5hZ2VyPjo6
YWxsb2NhdGVPYmplY3QoCisgICAgUmVzb3VyY2VNYXA8VGV4dHVyZT46Oml0ZXJhdG9yICYsCisg
ICAgcng6OkdMSW1wbEZhY3RvcnkgKiwKKyAgICBHTHVpbnQsCisgICAgR0xlbnVtKTsKK3RlbXBs
YXRlIGNsYXNzIFR5cGVkUmVzb3VyY2VNYW5hZ2VyPFJlbmRlcmJ1ZmZlciwgSGFuZGxlQWxsb2Nh
dG9yLCBSZW5kZXJidWZmZXJNYW5hZ2VyPjsKK3RlbXBsYXRlIFJlbmRlcmJ1ZmZlciAqCitUeXBl
ZFJlc291cmNlTWFuYWdlcjxSZW5kZXJidWZmZXIsIEhhbmRsZUFsbG9jYXRvciwgUmVuZGVyYnVm
ZmVyTWFuYWdlcj46OmFsbG9jYXRlT2JqZWN0KAorICAgIFJlc291cmNlTWFwPFJlbmRlcmJ1ZmZl
cj46Oml0ZXJhdG9yICYsCisgICAgcng6OkdMSW1wbEZhY3RvcnkgKiwKKyAgICBHTHVpbnQpOwor
dGVtcGxhdGUgY2xhc3MgVHlwZWRSZXNvdXJjZU1hbmFnZXI8U2FtcGxlciwgSGFuZGxlQWxsb2Nh
dG9yLCBTYW1wbGVyTWFuYWdlcj47Cit0ZW1wbGF0ZSBTYW1wbGVyICpUeXBlZFJlc291cmNlTWFu
YWdlcjxTYW1wbGVyLCBIYW5kbGVBbGxvY2F0b3IsIFNhbXBsZXJNYW5hZ2VyPjo6YWxsb2NhdGVP
YmplY3QoCisgICAgUmVzb3VyY2VNYXA8U2FtcGxlcj46Oml0ZXJhdG9yICYsCisgICAgcng6OkdM
SW1wbEZhY3RvcnkgKiwKKyAgICBHTHVpbnQpOwordGVtcGxhdGUgY2xhc3MgVHlwZWRSZXNvdXJj
ZU1hbmFnZXI8RmVuY2VTeW5jLCBIYW5kbGVBbGxvY2F0b3IsIEZlbmNlU3luY01hbmFnZXI+Owor
dGVtcGxhdGUgY2xhc3MgVHlwZWRSZXNvdXJjZU1hbmFnZXI8RnJhbWVidWZmZXIsIEhhbmRsZUFs
bG9jYXRvciwgRnJhbWVidWZmZXJNYW5hZ2VyPjsKK3RlbXBsYXRlIEZyYW1lYnVmZmVyICoKK1R5
cGVkUmVzb3VyY2VNYW5hZ2VyPEZyYW1lYnVmZmVyLCBIYW5kbGVBbGxvY2F0b3IsIEZyYW1lYnVm
ZmVyTWFuYWdlcj46OmFsbG9jYXRlT2JqZWN0KAorICAgIFJlc291cmNlTWFwPEZyYW1lYnVmZmVy
Pjo6aXRlcmF0b3IgJiwKKyAgICByeDo6R0xJbXBsRmFjdG9yeSAqLAorICAgIEdMdWludCwKKyAg
ICBjb25zdCBDYXBzICYpOworCisvLyBCdWZmZXJNYW5hZ2VyIEltcGxlbWVudGF0aW9uLgorCisv
LyBzdGF0aWMKK0J1ZmZlciAqQnVmZmVyTWFuYWdlcjo6QWxsb2NhdGVOZXdPYmplY3Qocng6OkdM
SW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBoYW5kbGUpCit7CisgICAgQnVmZmVyICpidWZm
ZXIgPSBuZXcgQnVmZmVyKGZhY3RvcnksIGhhbmRsZSk7CisgICAgYnVmZmVyLT5hZGRSZWYoKTsK
KyAgICByZXR1cm4gYnVmZmVyOwogfQogCi0vLyBSZXR1cm5zIGFuIHVudXNlZCByZW5kZXJidWZm
ZXIgbmFtZQotR0x1aW50IFJlc291cmNlTWFuYWdlcjo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKKy8v
IHN0YXRpYwordm9pZCBCdWZmZXJNYW5hZ2VyOjpEZWxldGVPYmplY3QoQnVmZmVyICpidWZmZXIp
CiB7Ci0gICAgR0x1aW50IGhhbmRsZSA9IG1SZW5kZXJidWZmZXJIYW5kbGVBbGxvY2F0b3IuYWxs
b2NhdGUoKTsKLQotICAgIG1SZW5kZXJidWZmZXJNYXBbaGFuZGxlXSA9IG51bGxwdHI7Ci0KLSAg
ICByZXR1cm4gaGFuZGxlOworICAgIGJ1ZmZlci0+cmVsZWFzZSgpOwogfQogCi0vLyBSZXR1cm5z
IGFuIHVudXNlZCBzYW1wbGVyIG5hbWUKLUdMdWludCBSZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZVNh
bXBsZXIoKQorR0x1aW50IEJ1ZmZlck1hbmFnZXI6OmNyZWF0ZUJ1ZmZlcigpCiB7Ci0gICAgR0x1
aW50IGhhbmRsZSA9IG1TYW1wbGVySGFuZGxlQWxsb2NhdG9yLmFsbG9jYXRlKCk7Ci0KLSAgICBt
U2FtcGxlck1hcFtoYW5kbGVdID0gbnVsbHB0cjsKLQotICAgIHJldHVybiBoYW5kbGU7CisgICAg
cmV0dXJuIEFsbG9jYXRlRW1wdHlPYmplY3QoJm1IYW5kbGVBbGxvY2F0b3IsICZtT2JqZWN0TWFw
KTsKIH0KIAotLy8gUmV0dXJucyB0aGUgbmV4dCB1bnVzZWQgZmVuY2UgbmFtZSwgYW5kIGFsbG9j
YXRlcyB0aGUgZmVuY2UKLUdMdWludCBSZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZUZlbmNlU3luYyhy
eDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSkKK0J1ZmZlciAqQnVmZmVyTWFuYWdlcjo6Z2V0QnVm
ZmVyKEdMdWludCBoYW5kbGUpIGNvbnN0CiB7Ci0gICAgR0x1aW50IGhhbmRsZSA9IG1GZW5jZVN5
bmNIYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKLQotICAgIEZlbmNlU3luYyAqZmVuY2VTeW5j
ID0gbmV3IEZlbmNlU3luYyhmYWN0b3J5LT5jcmVhdGVGZW5jZVN5bmMoKSwgaGFuZGxlKTsKLSAg
ICBmZW5jZVN5bmMtPmFkZFJlZigpOwotICAgIG1GZW5jZVN5bmNNYXBbaGFuZGxlXSA9IGZlbmNl
U3luYzsKLQotICAgIHJldHVybiBoYW5kbGU7CisgICAgcmV0dXJuIEdldE9iamVjdChtT2JqZWN0
TWFwLCBoYW5kbGUpOwogfQogCi1FcnJvck9yUmVzdWx0PEdMdWludD4gUmVzb3VyY2VNYW5hZ2Vy
OjpjcmVhdGVQYXRocyhyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0xzaXplaSByYW5nZSkK
K2Jvb2wgQnVmZmVyTWFuYWdlcjo6aXNCdWZmZXJHZW5lcmF0ZWQoR0x1aW50IGJ1ZmZlcikgY29u
c3QKIHsKLSAgICAvLyBBbGxvY2F0ZSBjbGllbnQgc2lkZSBoYW5kbGVzLgotICAgIGNvbnN0IEdM
dWludCBjbGllbnQgPSBtUGF0aEhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZVJhbmdlKHN0YXRpY19j
YXN0PEdMdWludD4ocmFuZ2UpKTsKLSAgICBpZiAoY2xpZW50ID09IEhhbmRsZVJhbmdlQWxsb2Nh
dG9yOjprSW52YWxpZEhhbmRsZSkKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLCAiRmFpbGVkIHRvIGFsbG9jYXRlIHBhdGggaGFuZGxlIHJhbmdlLiIpOwotCi0gICAg
Y29uc3QgYXV0byAmcGF0aHMgPSBmYWN0b3J5LT5jcmVhdGVQYXRocyhyYW5nZSk7Ci0gICAgaWYg
KHBhdGhzLmVtcHR5KCkpCi0gICAgewotICAgICAgICBtUGF0aEhhbmRsZUFsbG9jYXRvci5yZWxl
YXNlUmFuZ2UoY2xpZW50LCByYW5nZSk7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VU
X09GX01FTU9SWSwgIkZhaWxlZCB0byBhbGxvY2F0ZSBwYXRoIG9iamVjdHMuIik7Ci0gICAgfQor
ICAgIHJldHVybiBidWZmZXIgPT0gMCB8fCBtT2JqZWN0TWFwLmZpbmQoYnVmZmVyKSAhPSBtT2Jq
ZWN0TWFwLmVuZCgpOworfQogCi0gICAgYXV0byBoaW50ID0gbVBhdGhNYXAuYmVnaW4oKTsKKy8v
IFNoYWRlclByb2dyYW1NYW5hZ2VyIEltcGxlbWVudGF0aW9uLgogCi0gICAgZm9yIChHTHNpemVp
IGkgPSAwOyBpIDwgcmFuZ2U7ICsraSkKLSAgICB7Ci0gICAgICAgIGNvbnN0IGF1dG8gaW1wbCA9
IHBhdGhzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihpKV07Ci0gICAgICAgIGNvbnN0IGF1dG8gaWQg
ICA9IGNsaWVudCArIGk7Ci0gICAgICAgIGhpbnQgICAgICAgICAgICA9IG1QYXRoTWFwLmluc2Vy
dChoaW50LCBzdGQ6Om1ha2VfcGFpcihpZCwgbmV3IFBhdGgoaW1wbCkpKTsKLSAgICB9Ci0gICAg
cmV0dXJuIGNsaWVudDsKK1NoYWRlclByb2dyYW1NYW5hZ2VyOjp+U2hhZGVyUHJvZ3JhbU1hbmFn
ZXIoKQoreworICAgIEFTU0VSVChtUHJvZ3JhbXMuZW1wdHkoKSk7CisgICAgQVNTRVJUKG1TaGFk
ZXJzLmVtcHR5KCkpOwogfQogCi12b2lkIFJlc291cmNlTWFuYWdlcjo6ZGVsZXRlQnVmZmVyKEdM
dWludCBidWZmZXIpCit2b2lkIFNoYWRlclByb2dyYW1NYW5hZ2VyOjpyZXNldChjb25zdCBDb250
ZXh0ICpjb250ZXh0KQogewotICAgIGF1dG8gYnVmZmVyT2JqZWN0ID0gbUJ1ZmZlck1hcC5maW5k
KGJ1ZmZlcik7Ci0KLSAgICBpZiAoYnVmZmVyT2JqZWN0ICE9IG1CdWZmZXJNYXAuZW5kKCkpCisg
ICAgd2hpbGUgKCFtUHJvZ3JhbXMuZW1wdHkoKSkKICAgICB7Ci0gICAgICAgIG1CdWZmZXJIYW5k
bGVBbGxvY2F0b3IucmVsZWFzZShidWZmZXJPYmplY3QtPmZpcnN0KTsKLSAgICAgICAgaWYgKGJ1
ZmZlck9iamVjdC0+c2Vjb25kKSBidWZmZXJPYmplY3QtPnNlY29uZC0+cmVsZWFzZSgpOwotICAg
ICAgICBtQnVmZmVyTWFwLmVyYXNlKGJ1ZmZlck9iamVjdCk7CisgICAgICAgIGRlbGV0ZVByb2dy
YW0oY29udGV4dCwgbVByb2dyYW1zLmJlZ2luKCktPmZpcnN0KTsKICAgICB9Ci19Ci0KLXZvaWQg
UmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVTaGFkZXIoR0x1aW50IHNoYWRlcikKLXsKLSAgICBhdXRv
IHNoYWRlck9iamVjdCA9IG1TaGFkZXJNYXAuZmluZChzaGFkZXIpOwotCi0gICAgaWYgKHNoYWRl
ck9iamVjdCAhPSBtU2hhZGVyTWFwLmVuZCgpKQorICAgIG1Qcm9ncmFtcy5jbGVhcigpOworICAg
IHdoaWxlICghbVNoYWRlcnMuZW1wdHkoKSkKICAgICB7Ci0gICAgICAgIGlmIChzaGFkZXJPYmpl
Y3QtPnNlY29uZC0+Z2V0UmVmQ291bnQoKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBt
UHJvZ3JhbVNoYWRlckhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKHNoYWRlck9iamVjdC0+Zmlyc3Qp
OwotICAgICAgICAgICAgZGVsZXRlIHNoYWRlck9iamVjdC0+c2Vjb25kOwotICAgICAgICAgICAg
bVNoYWRlck1hcC5lcmFzZShzaGFkZXJPYmplY3QpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgewotICAgICAgICAgICAgc2hhZGVyT2JqZWN0LT5zZWNvbmQtPmZsYWdGb3JEZWxl
dGlvbigpOwotICAgICAgICB9CisgICAgICAgIGRlbGV0ZVNoYWRlcihjb250ZXh0LCBtU2hhZGVy
cy5iZWdpbigpLT5maXJzdCk7CiAgICAgfQorICAgIG1TaGFkZXJzLmNsZWFyKCk7CiB9CiAKLXZv
aWQgUmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVQcm9ncmFtKEdMdWludCBwcm9ncmFtKQorR0x1aW50
IFNoYWRlclByb2dyYW1NYW5hZ2VyOjpjcmVhdGVTaGFkZXIocng6OkdMSW1wbEZhY3RvcnkgKmZh
Y3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6TGltaXRhdGlvbnMgJnJlbmRlcmVyTGltaXRhdGlvbnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSkKIHsKLSAgICBhdXRvIHByb2dyYW1P
YmplY3QgPSBtUHJvZ3JhbU1hcC5maW5kKHByb2dyYW0pOwotCi0gICAgaWYgKHByb2dyYW1PYmpl
Y3QgIT0gbVByb2dyYW1NYXAuZW5kKCkpCi0gICAgewotICAgICAgICBpZiAocHJvZ3JhbU9iamVj
dC0+c2Vjb25kLT5nZXRSZWZDb3VudCgpID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1Q
cm9ncmFtU2hhZGVySGFuZGxlQWxsb2NhdG9yLnJlbGVhc2UocHJvZ3JhbU9iamVjdC0+Zmlyc3Qp
OwotICAgICAgICAgICAgZGVsZXRlIHByb2dyYW1PYmplY3QtPnNlY29uZDsKLSAgICAgICAgICAg
IG1Qcm9ncmFtTWFwLmVyYXNlKHByb2dyYW1PYmplY3QpOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgewotICAgICAgICAgICAgcHJvZ3JhbU9iamVjdC0+c2Vjb25kLT5mbGFnRm9y
RGVsZXRpb24oKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBBU1NFUlQodHlwZSA9PSBHTF9WRVJU
RVhfU0hBREVSIHx8IHR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSIHx8IHR5cGUgPT0gR0xfQ09N
UFVURV9TSEFERVIpOworICAgIEdMdWludCBoYW5kbGUgICAgPSBtSGFuZGxlQWxsb2NhdG9yLmFs
bG9jYXRlKCk7CisgICAgbVNoYWRlcnNbaGFuZGxlXSA9IG5ldyBTaGFkZXIodGhpcywgZmFjdG9y
eSwgcmVuZGVyZXJMaW1pdGF0aW9ucywgdHlwZSwgaGFuZGxlKTsKKyAgICByZXR1cm4gaGFuZGxl
OwogfQogCi12b2lkIFJlc291cmNlTWFuYWdlcjo6ZGVsZXRlVGV4dHVyZShHTHVpbnQgdGV4dHVy
ZSkKK3ZvaWQgU2hhZGVyUHJvZ3JhbU1hbmFnZXI6OmRlbGV0ZVNoYWRlcihjb25zdCBDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgc2hhZGVyKQogewotICAgIGF1dG8gdGV4dHVyZU9iamVjdCA9IG1U
ZXh0dXJlTWFwLmZpbmQodGV4dHVyZSk7Ci0KLSAgICBpZiAodGV4dHVyZU9iamVjdCAhPSBtVGV4
dHVyZU1hcC5lbmQoKSkKLSAgICB7Ci0gICAgICAgIG1UZXh0dXJlSGFuZGxlQWxsb2NhdG9yLnJl
bGVhc2UodGV4dHVyZU9iamVjdC0+Zmlyc3QpOwotICAgICAgICBpZiAodGV4dHVyZU9iamVjdC0+
c2Vjb25kKSB0ZXh0dXJlT2JqZWN0LT5zZWNvbmQtPnJlbGVhc2UoKTsKLSAgICAgICAgbVRleHR1
cmVNYXAuZXJhc2UodGV4dHVyZU9iamVjdCk7Ci0gICAgfQorICAgIGRlbGV0ZU9iamVjdChjb250
ZXh0LCAmbVNoYWRlcnMsIHNoYWRlcik7CiB9CiAKLXZvaWQgUmVzb3VyY2VNYW5hZ2VyOjpkZWxl
dGVSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcikKK1NoYWRlciAqU2hhZGVyUHJvZ3Jh
bU1hbmFnZXI6OmdldFNoYWRlcihHTHVpbnQgaGFuZGxlKSBjb25zdAogewotICAgIGF1dG8gcmVu
ZGVyYnVmZmVyT2JqZWN0ID0gbVJlbmRlcmJ1ZmZlck1hcC5maW5kKHJlbmRlcmJ1ZmZlcik7Ci0K
LSAgICBpZiAocmVuZGVyYnVmZmVyT2JqZWN0ICE9IG1SZW5kZXJidWZmZXJNYXAuZW5kKCkpCi0g
ICAgewotICAgICAgICBtUmVuZGVyYnVmZmVySGFuZGxlQWxsb2NhdG9yLnJlbGVhc2UocmVuZGVy
YnVmZmVyT2JqZWN0LT5maXJzdCk7Ci0gICAgICAgIGlmIChyZW5kZXJidWZmZXJPYmplY3QtPnNl
Y29uZCkgcmVuZGVyYnVmZmVyT2JqZWN0LT5zZWNvbmQtPnJlbGVhc2UoKTsKLSAgICAgICAgbVJl
bmRlcmJ1ZmZlck1hcC5lcmFzZShyZW5kZXJidWZmZXJPYmplY3QpOwotICAgIH0KKyAgICByZXR1
cm4gR2V0T2JqZWN0KG1TaGFkZXJzLCBoYW5kbGUpOwogfQogCi12b2lkIFJlc291cmNlTWFuYWdl
cjo6ZGVsZXRlU2FtcGxlcihHTHVpbnQgc2FtcGxlcikKK0dMdWludCBTaGFkZXJQcm9ncmFtTWFu
YWdlcjo6Y3JlYXRlUHJvZ3JhbShyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSkKIHsKLSAgICBh
dXRvIHNhbXBsZXJPYmplY3QgPSBtU2FtcGxlck1hcC5maW5kKHNhbXBsZXIpOwotCi0gICAgaWYg
KHNhbXBsZXJPYmplY3QgIT0gbVNhbXBsZXJNYXAuZW5kKCkpCi0gICAgewotICAgICAgICBtU2Ft
cGxlckhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKHNhbXBsZXJPYmplY3QtPmZpcnN0KTsKLSAgICAg
ICAgaWYgKHNhbXBsZXJPYmplY3QtPnNlY29uZCkgc2FtcGxlck9iamVjdC0+c2Vjb25kLT5yZWxl
YXNlKCk7Ci0gICAgICAgIG1TYW1wbGVyTWFwLmVyYXNlKHNhbXBsZXJPYmplY3QpOwotICAgIH0K
KyAgICBHTHVpbnQgaGFuZGxlICAgICA9IG1IYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKKyAg
ICBtUHJvZ3JhbXNbaGFuZGxlXSA9IG5ldyBQcm9ncmFtKGZhY3RvcnksIHRoaXMsIGhhbmRsZSk7
CisgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAotdm9pZCBSZXNvdXJjZU1hbmFnZXI6OmRlbGV0ZUZl
bmNlU3luYyhHTHVpbnQgZmVuY2VTeW5jKQordm9pZCBTaGFkZXJQcm9ncmFtTWFuYWdlcjo6ZGVs
ZXRlUHJvZ3JhbShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0pCiB7
Ci0gICAgYXV0byBmZW5jZU9iamVjdEl0ID0gbUZlbmNlU3luY01hcC5maW5kKGZlbmNlU3luYyk7
Ci0KLSAgICBpZiAoZmVuY2VPYmplY3RJdCAhPSBtRmVuY2VTeW5jTWFwLmVuZCgpKQotICAgIHsK
LSAgICAgICAgbUZlbmNlU3luY0hhbmRsZUFsbG9jYXRvci5yZWxlYXNlKGZlbmNlT2JqZWN0SXQt
PmZpcnN0KTsKLSAgICAgICAgaWYgKGZlbmNlT2JqZWN0SXQtPnNlY29uZCkgZmVuY2VPYmplY3RJ
dC0+c2Vjb25kLT5yZWxlYXNlKCk7Ci0gICAgICAgIG1GZW5jZVN5bmNNYXAuZXJhc2UoZmVuY2VP
YmplY3RJdCk7Ci0gICAgfQorICAgIGRlbGV0ZU9iamVjdChjb250ZXh0LCAmbVByb2dyYW1zLCBw
cm9ncmFtKTsKIH0KIAotdm9pZCBSZXNvdXJjZU1hbmFnZXI6OmRlbGV0ZVBhdGhzKEdMdWludCBm
aXJzdCwgR0xzaXplaSByYW5nZSkKK1Byb2dyYW0gKlNoYWRlclByb2dyYW1NYW5hZ2VyOjpnZXRQ
cm9ncmFtKEdMdWludCBoYW5kbGUpIGNvbnN0CiB7Ci0gICAgZm9yIChHTHNpemVpIGkgPSAwOyBp
IDwgcmFuZ2U7ICsraSkKLSAgICB7Ci0gICAgICAgIGNvbnN0IGF1dG8gaWQgPSBmaXJzdCArIGk7
Ci0gICAgICAgIGNvbnN0IGF1dG8gaXQgPSBtUGF0aE1hcC5maW5kKGlkKTsKLSAgICAgICAgaWYg
KGl0ID09IG1QYXRoTWFwLmVuZCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFBh
dGggKnAgPSBpdC0+c2Vjb25kOwotICAgICAgICBkZWxldGUgcDsKLSAgICAgICAgbVBhdGhNYXAu
ZXJhc2UoaXQpOwotICAgIH0KLSAgICBtUGF0aEhhbmRsZUFsbG9jYXRvci5yZWxlYXNlUmFuZ2Uo
Zmlyc3QsIHN0YXRpY19jYXN0PEdMdWludD4ocmFuZ2UpKTsKKyAgICByZXR1cm4gR2V0T2JqZWN0
KG1Qcm9ncmFtcywgaGFuZGxlKTsKIH0KIAotQnVmZmVyICpSZXNvdXJjZU1hbmFnZXI6OmdldEJ1
ZmZlcih1bnNpZ25lZCBpbnQgaGFuZGxlKQordGVtcGxhdGUgPHR5cGVuYW1lIE9iamVjdFR5cGU+
Cit2b2lkIFNoYWRlclByb2dyYW1NYW5hZ2VyOjpkZWxldGVPYmplY3QoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJj
ZU1hcDxPYmplY3RUeXBlPiAqb2JqZWN0TWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBpZCkKIHsKLSAgICBhdXRvIGJ1ZmZlciA9IG1CdWZmZXJNYXAu
ZmluZChoYW5kbGUpOwotCi0gICAgaWYgKGJ1ZmZlciA9PSBtQnVmZmVyTWFwLmVuZCgpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIGVsc2UKKyAgICBhdXRvIGl0
ZXIgPSBvYmplY3RNYXAtPmZpbmQoaWQpOworICAgIGlmIChpdGVyID09IG9iamVjdE1hcC0+ZW5k
KCkpCiAgICAgewotICAgICAgICByZXR1cm4gYnVmZmVyLT5zZWNvbmQ7CisgICAgICAgIHJldHVy
bjsKICAgICB9Ci19Ci0KLVNoYWRlciAqUmVzb3VyY2VNYW5hZ2VyOjpnZXRTaGFkZXIodW5zaWdu
ZWQgaW50IGhhbmRsZSkgY29uc3QKLXsKLSAgICBhdXRvIHNoYWRlciA9IG1TaGFkZXJNYXAuZmlu
ZChoYW5kbGUpOwogCi0gICAgaWYgKHNoYWRlciA9PSBtU2hhZGVyTWFwLmVuZCgpKQorICAgIGF1
dG8gb2JqZWN0ID0gaXRlci0+c2Vjb25kOworICAgIGlmIChvYmplY3QtPmdldFJlZkNvdW50KCkg
PT0gMCkKICAgICB7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBtSGFuZGxlQWxs
b2NhdG9yLnJlbGVhc2UoaWQpOworICAgICAgICBvYmplY3QtPmRlc3Ryb3koY29udGV4dCk7Cisg
ICAgICAgIFNhZmVEZWxldGUob2JqZWN0KTsKKyAgICAgICAgb2JqZWN0TWFwLT5lcmFzZShpdGVy
KTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgcmV0dXJuIHNoYWRlci0+c2Vjb25k
OworICAgICAgICBvYmplY3QtPmZsYWdGb3JEZWxldGlvbigpOwogICAgIH0KIH0KIAotVGV4dHVy
ZSAqUmVzb3VyY2VNYW5hZ2VyOjpnZXRUZXh0dXJlKHVuc2lnbmVkIGludCBoYW5kbGUpCi17Ci0g
ICAgaWYgKGhhbmRsZSA9PSAwKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGF1dG8g
dGV4dHVyZSA9IG1UZXh0dXJlTWFwLmZpbmQoaGFuZGxlKTsKKy8vIFRleHR1cmVNYW5hZ2VyIElt
cGxlbWVudGF0aW9uLgogCi0gICAgaWYgKHRleHR1cmUgPT0gbVRleHR1cmVNYXAuZW5kKCkpCi0g
ICAgewotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRleHR1cmUtPnNlY29uZDsKLSAgICB9CisvLyBzdGF0aWMKK1RleHR1cmUg
KlRleHR1cmVNYW5hZ2VyOjpBbGxvY2F0ZU5ld09iamVjdChyeDo6R0xJbXBsRmFjdG9yeSAqZmFj
dG9yeSwgR0x1aW50IGhhbmRsZSwgR0xlbnVtIHRhcmdldCkKK3sKKyAgICBUZXh0dXJlICp0ZXh0
dXJlID0gbmV3IFRleHR1cmUoZmFjdG9yeSwgaGFuZGxlLCB0YXJnZXQpOworICAgIHRleHR1cmUt
PmFkZFJlZigpOworICAgIHJldHVybiB0ZXh0dXJlOwogfQogCi1Qcm9ncmFtICpSZXNvdXJjZU1h
bmFnZXI6OmdldFByb2dyYW0odW5zaWduZWQgaW50IGhhbmRsZSkgY29uc3QKKy8vIHN0YXRpYwor
dm9pZCBUZXh0dXJlTWFuYWdlcjo6RGVsZXRlT2JqZWN0KFRleHR1cmUgKnRleHR1cmUpCiB7Ci0g
ICAgYXV0byBwcm9ncmFtID0gbVByb2dyYW1NYXAuZmluZChoYW5kbGUpOwotCi0gICAgaWYgKHBy
b2dyYW0gPT0gbVByb2dyYW1NYXAuZW5kKCkpCi0gICAgewotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHByb2dyYW0tPnNlY29u
ZDsKLSAgICB9CisgICAgdGV4dHVyZS0+cmVsZWFzZSgpOwogfQogCi1SZW5kZXJidWZmZXIgKlJl
c291cmNlTWFuYWdlcjo6Z2V0UmVuZGVyYnVmZmVyKHVuc2lnbmVkIGludCBoYW5kbGUpCitHTHVp
bnQgVGV4dHVyZU1hbmFnZXI6OmNyZWF0ZVRleHR1cmUoKQogewotICAgIGF1dG8gcmVuZGVyYnVm
ZmVyID0gbVJlbmRlcmJ1ZmZlck1hcC5maW5kKGhhbmRsZSk7CisgICAgcmV0dXJuIEFsbG9jYXRl
RW1wdHlPYmplY3QoJm1IYW5kbGVBbGxvY2F0b3IsICZtT2JqZWN0TWFwKTsKK30KIAotICAgIGlm
IChyZW5kZXJidWZmZXIgPT0gbVJlbmRlcmJ1ZmZlck1hcC5lbmQoKSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBudWxscHRyOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm4g
cmVuZGVyYnVmZmVyLT5zZWNvbmQ7Ci0gICAgfQorVGV4dHVyZSAqVGV4dHVyZU1hbmFnZXI6Omdl
dFRleHR1cmUoR0x1aW50IGhhbmRsZSkgY29uc3QKK3sKKyAgICBBU1NFUlQoR2V0T2JqZWN0KG1P
YmplY3RNYXAsIDApID09IG51bGxwdHIpOworICAgIHJldHVybiBHZXRPYmplY3QobU9iamVjdE1h
cCwgaGFuZGxlKTsKIH0KIAotU2FtcGxlciAqUmVzb3VyY2VNYW5hZ2VyOjpnZXRTYW1wbGVyKHVu
c2lnbmVkIGludCBoYW5kbGUpCitib29sIFRleHR1cmVNYW5hZ2VyOjppc1RleHR1cmVHZW5lcmF0
ZWQoR0x1aW50IHRleHR1cmUpIGNvbnN0CiB7Ci0gICAgYXV0byBzYW1wbGVyID0gbVNhbXBsZXJN
YXAuZmluZChoYW5kbGUpOworICAgIHJldHVybiB0ZXh0dXJlID09IDAgfHwgbU9iamVjdE1hcC5m
aW5kKHRleHR1cmUpICE9IG1PYmplY3RNYXAuZW5kKCk7Cit9CiAKLSAgICBpZiAoc2FtcGxlciA9
PSBtU2FtcGxlck1hcC5lbmQoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAg
IH0KLSAgICBlbHNlCit2b2lkIFRleHR1cmVNYW5hZ2VyOjppbnZhbGlkYXRlVGV4dHVyZUNvbXBs
ZW5lc3NDYWNoZSgpCit7CisgICAgZm9yIChhdXRvICZ0ZXh0dXJlIDogbU9iamVjdE1hcCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzYW1wbGVyLT5zZWNvbmQ7CisgICAgICAgIGlmICh0ZXh0dXJl
LnNlY29uZCkKKyAgICAgICAgeworICAgICAgICAgICAgdGV4dHVyZS5zZWNvbmQtPmludmFsaWRh
dGVDb21wbGV0ZW5lc3NDYWNoZSgpOworICAgICAgICB9CiAgICAgfQogfQogCi1GZW5jZVN5bmMg
KlJlc291cmNlTWFuYWdlcjo6Z2V0RmVuY2VTeW5jKHVuc2lnbmVkIGludCBoYW5kbGUpCisvLyBS
ZW5kZXJidWZmZXJNYW5hZ2VyIEltcGxlbWVudGF0aW9uLgorCisvLyBzdGF0aWMKK1JlbmRlcmJ1
ZmZlciAqUmVuZGVyYnVmZmVyTWFuYWdlcjo6QWxsb2NhdGVOZXdPYmplY3Qocng6OkdMSW1wbEZh
Y3RvcnkgKmZhY3RvcnksIEdMdWludCBoYW5kbGUpCiB7Ci0gICAgYXV0byBmZW5jZU9iamVjdEl0
ID0gbUZlbmNlU3luY01hcC5maW5kKGhhbmRsZSk7CisgICAgUmVuZGVyYnVmZmVyICpyZW5kZXJi
dWZmZXIgPSBuZXcgUmVuZGVyYnVmZmVyKGZhY3RvcnktPmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLCBo
YW5kbGUpOworICAgIHJlbmRlcmJ1ZmZlci0+YWRkUmVmKCk7CisgICAgcmV0dXJuIHJlbmRlcmJ1
ZmZlcjsKK30KIAotICAgIGlmIChmZW5jZU9iamVjdEl0ID09IG1GZW5jZVN5bmNNYXAuZW5kKCkp
Ci0gICAgewotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGZlbmNlT2JqZWN0SXQtPnNlY29uZDsKLSAgICB9CisvLyBzdGF0aWMK
K3ZvaWQgUmVuZGVyYnVmZmVyTWFuYWdlcjo6RGVsZXRlT2JqZWN0KFJlbmRlcmJ1ZmZlciAqcmVu
ZGVyYnVmZmVyKQoreworICAgIHJlbmRlcmJ1ZmZlci0+cmVsZWFzZSgpOwogfQogCi1jb25zdCBQ
YXRoICpSZXNvdXJjZU1hbmFnZXI6OmdldFBhdGgoR0x1aW50IGhhbmRsZSkgY29uc3QKK0dMdWlu
dCBSZW5kZXJidWZmZXJNYW5hZ2VyOjpjcmVhdGVSZW5kZXJidWZmZXIoKQogewotICAgIGF1dG8g
aXQgPSBtUGF0aE1hcC5maW5kKGhhbmRsZSk7Ci0gICAgaWYgKGl0ID09IHN0ZDo6ZW5kKG1QYXRo
TWFwKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIGl0LT5zZWNvbmQ7Cisg
ICAgcmV0dXJuIEFsbG9jYXRlRW1wdHlPYmplY3QoJm1IYW5kbGVBbGxvY2F0b3IsICZtT2JqZWN0
TWFwKTsKIH0KIAotUGF0aCAqUmVzb3VyY2VNYW5hZ2VyOjpnZXRQYXRoKEdMdWludCBoYW5kbGUp
CitSZW5kZXJidWZmZXIgKlJlbmRlcmJ1ZmZlck1hbmFnZXI6OmdldFJlbmRlcmJ1ZmZlcihHTHVp
bnQgaGFuZGxlKQogewotICAgIGF1dG8gaXQgPSBtUGF0aE1hcC5maW5kKGhhbmRsZSk7Ci0gICAg
aWYgKGl0ID09IHN0ZDo6ZW5kKG1QYXRoTWFwKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgcmV0dXJuIEdldE9iamVjdChtT2JqZWN0TWFwLCBoYW5kbGUpOworfQogCi0gICAgcmV0dXJu
IGl0LT5zZWNvbmQ7Citib29sIFJlbmRlcmJ1ZmZlck1hbmFnZXI6OmlzUmVuZGVyYnVmZmVyR2Vu
ZXJhdGVkKEdMdWludCByZW5kZXJidWZmZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlbmRlcmJ1
ZmZlciA9PSAwIHx8IG1PYmplY3RNYXAuZmluZChyZW5kZXJidWZmZXIpICE9IG1PYmplY3RNYXAu
ZW5kKCk7CiB9CiAKLWJvb2wgUmVzb3VyY2VNYW5hZ2VyOjpoYXNQYXRoKEdMdWludCBoYW5kbGUp
IGNvbnN0CisvLyBTYW1wbGVyTWFuYWdlciBJbXBsZW1lbnRhdGlvbi4KKworLy8gc3RhdGljCitT
YW1wbGVyICpTYW1wbGVyTWFuYWdlcjo6QWxsb2NhdGVOZXdPYmplY3Qocng6OkdMSW1wbEZhY3Rv
cnkgKmZhY3RvcnksIEdMdWludCBoYW5kbGUpCiB7Ci0gICAgcmV0dXJuIG1QYXRoSGFuZGxlQWxs
b2NhdG9yLmlzVXNlZChoYW5kbGUpOworICAgIFNhbXBsZXIgKnNhbXBsZXIgPSBuZXcgU2FtcGxl
cihmYWN0b3J5LCBoYW5kbGUpOworICAgIHNhbXBsZXItPmFkZFJlZigpOworICAgIHJldHVybiBz
YW1wbGVyOwogfQogCi12b2lkIFJlc291cmNlTWFuYWdlcjo6c2V0UmVuZGVyYnVmZmVyKEdMdWlu
dCBoYW5kbGUsIFJlbmRlcmJ1ZmZlciAqYnVmZmVyKQorLy8gc3RhdGljCit2b2lkIFNhbXBsZXJN
YW5hZ2VyOjpEZWxldGVPYmplY3QoU2FtcGxlciAqc2FtcGxlcikKIHsKLSAgICBtUmVuZGVyYnVm
ZmVyTWFwW2hhbmRsZV0gPSBidWZmZXI7CisgICAgc2FtcGxlci0+cmVsZWFzZSgpOwogfQogCi1C
dWZmZXIgKlJlc291cmNlTWFuYWdlcjo6Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKHJ4OjpHTEltcGxG
YWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgaGFuZGxlKQorR0x1aW50IFNhbXBsZXJNYW5hZ2VyOjpj
cmVhdGVTYW1wbGVyKCkKIHsKLSAgICBpZiAoaGFuZGxlID09IDApCi0gICAgewotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgcmV0dXJuIEFsbG9jYXRlRW1wdHlPYmplY3QoJm1I
YW5kbGVBbGxvY2F0b3IsICZtT2JqZWN0TWFwKTsKK30KIAotICAgIGF1dG8gYnVmZmVyTWFwSXQg
ICAgID0gbUJ1ZmZlck1hcC5maW5kKGhhbmRsZSk7Ci0gICAgYm9vbCBoYW5kbGVBbGxvY2F0ZWQg
PSAoYnVmZmVyTWFwSXQgIT0gbUJ1ZmZlck1hcC5lbmQoKSk7CitTYW1wbGVyICpTYW1wbGVyTWFu
YWdlcjo6Z2V0U2FtcGxlcihHTHVpbnQgaGFuZGxlKQoreworICAgIHJldHVybiBHZXRPYmplY3Qo
bU9iamVjdE1hcCwgaGFuZGxlKTsKK30KIAotICAgIGlmIChoYW5kbGVBbGxvY2F0ZWQgJiYgYnVm
ZmVyTWFwSXQtPnNlY29uZCAhPSBudWxscHRyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJ1ZmZl
ck1hcEl0LT5zZWNvbmQ7Ci0gICAgfQorYm9vbCBTYW1wbGVyTWFuYWdlcjo6aXNTYW1wbGVyKEdM
dWludCBzYW1wbGVyKQoreworICAgIHJldHVybiBtT2JqZWN0TWFwLmZpbmQoc2FtcGxlcikgIT0g
bU9iamVjdE1hcC5lbmQoKTsKK30KIAotICAgIEJ1ZmZlciAqYnVmZmVyID0gbmV3IEJ1ZmZlcihm
YWN0b3J5LT5jcmVhdGVCdWZmZXIoKSwgaGFuZGxlKTsKLSAgICBidWZmZXItPmFkZFJlZigpOwor
Ly8gRmVuY2VTeW5jTWFuYWdlciBJbXBsZW1lbnRhdGlvbi4KIAotICAgIGlmIChoYW5kbGVBbGxv
Y2F0ZWQpCi0gICAgewotICAgICAgICBidWZmZXJNYXBJdC0+c2Vjb25kID0gYnVmZmVyOwotICAg
IH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBtQnVmZmVySGFuZGxlQWxsb2NhdG9yLnJlc2Vy
dmUoaGFuZGxlKTsKLSAgICAgICAgbUJ1ZmZlck1hcFtoYW5kbGVdID0gYnVmZmVyOwotICAgIH0K
Ky8vIHN0YXRpYwordm9pZCBGZW5jZVN5bmNNYW5hZ2VyOjpEZWxldGVPYmplY3QoRmVuY2VTeW5j
ICpmZW5jZVN5bmMpCit7CisgICAgZmVuY2VTeW5jLT5yZWxlYXNlKCk7Cit9CiAKLSAgICByZXR1
cm4gYnVmZmVyOworR0x1aW50IEZlbmNlU3luY01hbmFnZXI6OmNyZWF0ZUZlbmNlU3luYyhyeDo6
R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSkKK3sKKyAgICBHTHVpbnQgaGFuZGxlICAgICAgICA9IG1I
YW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKKyAgICBGZW5jZVN5bmMgKmZlbmNlU3luYyA9IG5l
dyBGZW5jZVN5bmMoZmFjdG9yeS0+Y3JlYXRlRmVuY2VTeW5jKCksIGhhbmRsZSk7CisgICAgZmVu
Y2VTeW5jLT5hZGRSZWYoKTsKKyAgICBtT2JqZWN0TWFwW2hhbmRsZV0gPSBmZW5jZVN5bmM7Cisg
ICAgcmV0dXJuIGhhbmRsZTsKIH0KIAotVGV4dHVyZSAqUmVzb3VyY2VNYW5hZ2VyOjpjaGVja1Rl
eHR1cmVBbGxvY2F0aW9uKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoYW5kbGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUp
CitGZW5jZVN5bmMgKkZlbmNlU3luY01hbmFnZXI6OmdldEZlbmNlU3luYyhHTHVpbnQgaGFuZGxl
KQogewotICAgIGlmIChoYW5kbGUgPT0gMCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBudWxscHRy
OwotICAgIH0KKyAgICByZXR1cm4gR2V0T2JqZWN0KG1PYmplY3RNYXAsIGhhbmRsZSk7Cit9CiAK
LSAgICBhdXRvIHRleHR1cmVNYXBJdCAgICA9IG1UZXh0dXJlTWFwLmZpbmQoaGFuZGxlKTsKLSAg
ICBib29sIGhhbmRsZUFsbG9jYXRlZCA9ICh0ZXh0dXJlTWFwSXQgIT0gbVRleHR1cmVNYXAuZW5k
KCkpOworLy8gUGF0aE1hbmFnZXIgSW1wbGVtZW50YXRpb24uCiAKLSAgICBpZiAoaGFuZGxlQWxs
b2NhdGVkICYmIHRleHR1cmVNYXBJdC0+c2Vjb25kICE9IG51bGxwdHIpCitFcnJvck9yUmVzdWx0
PEdMdWludD4gUGF0aE1hbmFnZXI6OmNyZWF0ZVBhdGhzKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0
b3J5LCBHTHNpemVpIHJhbmdlKQoreworICAgIC8vIEFsbG9jYXRlIGNsaWVudCBzaWRlIGhhbmRs
ZXMuCisgICAgY29uc3QgR0x1aW50IGNsaWVudCA9IG1IYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGVS
YW5nZShzdGF0aWNfY2FzdDxHTHVpbnQ+KHJhbmdlKSk7CisgICAgaWYgKGNsaWVudCA9PSBIYW5k
bGVSYW5nZUFsbG9jYXRvcjo6a0ludmFsaWRIYW5kbGUpCisgICAgICAgIHJldHVybiBFcnJvcihH
TF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGFsbG9jYXRlIHBhdGggaGFuZGxlIHJhbmdlLiIp
OworCisgICAgY29uc3QgYXV0byAmcGF0aHMgPSBmYWN0b3J5LT5jcmVhdGVQYXRocyhyYW5nZSk7
CisgICAgaWYgKHBhdGhzLmVtcHR5KCkpCiAgICAgewotICAgICAgICByZXR1cm4gdGV4dHVyZU1h
cEl0LT5zZWNvbmQ7CisgICAgICAgIG1IYW5kbGVBbGxvY2F0b3IucmVsZWFzZVJhbmdlKGNsaWVu
dCwgcmFuZ2UpOworICAgICAgICByZXR1cm4gRXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxl
ZCB0byBhbGxvY2F0ZSBwYXRoIG9iamVjdHMuIik7CiAgICAgfQogCi0gICAgVGV4dHVyZSAqdGV4
dHVyZSA9IG5ldyBUZXh0dXJlKGZhY3RvcnksIGhhbmRsZSwgdHlwZSk7Ci0gICAgdGV4dHVyZS0+
YWRkUmVmKCk7CisgICAgYXV0byBoaW50ID0gbVBhdGhzLmJlZ2luKCk7CiAKLSAgICBpZiAoaGFu
ZGxlQWxsb2NhdGVkKQotICAgIHsKLSAgICAgICAgdGV4dHVyZU1hcEl0LT5zZWNvbmQgPSB0ZXh0
dXJlOwotICAgIH0KLSAgICBlbHNlCisgICAgZm9yIChHTHNpemVpIGkgPSAwOyBpIDwgcmFuZ2U7
ICsraSkKICAgICB7Ci0gICAgICAgIG1UZXh0dXJlSGFuZGxlQWxsb2NhdG9yLnJlc2VydmUoaGFu
ZGxlKTsKLSAgICAgICAgbVRleHR1cmVNYXBbaGFuZGxlXSA9IHRleHR1cmU7CisgICAgICAgIGNv
bnN0IGF1dG8gaW1wbCA9IHBhdGhzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihpKV07CisgICAgICAg
IGNvbnN0IGF1dG8gaWQgICA9IGNsaWVudCArIGk7CisgICAgICAgIGhpbnQgICAgICAgICAgICA9
IG1QYXRocy5pbnNlcnQoaGludCwgc3RkOjptYWtlX3BhaXIoaWQsIG5ldyBQYXRoKGltcGwpKSk7
CiAgICAgfQotCi0gICAgcmV0dXJuIHRleHR1cmU7CisgICAgcmV0dXJuIGNsaWVudDsKIH0KIAot
UmVuZGVyYnVmZmVyICpSZXNvdXJjZU1hbmFnZXI6OmNoZWNrUmVuZGVyYnVmZmVyQWxsb2NhdGlv
bihyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGhhbmRsZSkKK3ZvaWQgUGF0
aE1hbmFnZXI6OmRlbGV0ZVBhdGhzKEdMdWludCBmaXJzdCwgR0xzaXplaSByYW5nZSkKIHsKLSAg
ICBpZiAoaGFuZGxlID09IDApCi0gICAgewotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
Ci0KLSAgICBhdXRvIHJlbmRlcmJ1ZmZlck1hcEl0ID0gbVJlbmRlcmJ1ZmZlck1hcC5maW5kKGhh
bmRsZSk7Ci0gICAgYm9vbCBoYW5kbGVBbGxvY2F0ZWQgICA9IChyZW5kZXJidWZmZXJNYXBJdCAh
PSBtUmVuZGVyYnVmZmVyTWFwLmVuZCgpKTsKLQotICAgIGlmIChoYW5kbGVBbGxvY2F0ZWQgJiYg
cmVuZGVyYnVmZmVyTWFwSXQtPnNlY29uZCAhPSBudWxscHRyKQorICAgIGZvciAoR0xzaXplaSBp
ID0gMDsgaSA8IHJhbmdlOyArK2kpCiAgICAgewotICAgICAgICByZXR1cm4gcmVuZGVyYnVmZmVy
TWFwSXQtPnNlY29uZDsKKyAgICAgICAgY29uc3QgYXV0byBpZCA9IGZpcnN0ICsgaTsKKyAgICAg
ICAgY29uc3QgYXV0byBpdCA9IG1QYXRocy5maW5kKGlkKTsKKyAgICAgICAgaWYgKGl0ID09IG1Q
YXRocy5lbmQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBQYXRoICpwID0gaXQt
PnNlY29uZDsKKyAgICAgICAgZGVsZXRlIHA7CisgICAgICAgIG1QYXRocy5lcmFzZShpdCk7CiAg
ICAgfQorICAgIG1IYW5kbGVBbGxvY2F0b3IucmVsZWFzZVJhbmdlKGZpcnN0LCBzdGF0aWNfY2Fz
dDxHTHVpbnQ+KHJhbmdlKSk7Cit9CiAKLSAgICBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciA9
IG5ldyBSZW5kZXJidWZmZXIoZmFjdG9yeS0+Y3JlYXRlUmVuZGVyYnVmZmVyKCksIGhhbmRsZSk7
Ci0gICAgcmVuZGVyYnVmZmVyLT5hZGRSZWYoKTsKK1BhdGggKlBhdGhNYW5hZ2VyOjpnZXRQYXRo
KEdMdWludCBoYW5kbGUpIGNvbnN0Cit7CisgICAgYXV0byBpdGVyID0gbVBhdGhzLmZpbmQoaGFu
ZGxlKTsKKyAgICByZXR1cm4gaXRlciAhPSBtUGF0aHMuZW5kKCkgPyBpdGVyLT5zZWNvbmQgOiBu
dWxscHRyOworfQogCi0gICAgaWYgKGhhbmRsZUFsbG9jYXRlZCkKLSAgICB7Ci0gICAgICAgIHJl
bmRlcmJ1ZmZlck1hcEl0LT5zZWNvbmQgPSByZW5kZXJidWZmZXI7Ci0gICAgfQotICAgIGVsc2UK
LSAgICB7Ci0gICAgICAgIG1SZW5kZXJidWZmZXJIYW5kbGVBbGxvY2F0b3IucmVzZXJ2ZShoYW5k
bGUpOwotICAgICAgICBtUmVuZGVyYnVmZmVyTWFwW2hhbmRsZV0gPSByZW5kZXJidWZmZXI7Ci0g
ICAgfQorYm9vbCBQYXRoTWFuYWdlcjo6aGFzUGF0aChHTHVpbnQgaGFuZGxlKSBjb25zdAorewor
ICAgIHJldHVybiBtSGFuZGxlQWxsb2NhdG9yLmlzVXNlZChoYW5kbGUpOworfQogCi0gICAgcmV0
dXJuIHJlbmRlcmJ1ZmZlcjsKK1BhdGhNYW5hZ2VyOjp+UGF0aE1hbmFnZXIoKQoreworICAgIEFT
U0VSVChtUGF0aHMuZW1wdHkoKSk7CiB9CiAKLVNhbXBsZXIgKlJlc291cmNlTWFuYWdlcjo6Y2hl
Y2tTYW1wbGVyQWxsb2NhdGlvbihyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50IHNh
bXBsZXJIYW5kbGUpCit2b2lkIFBhdGhNYW5hZ2VyOjpyZXNldChjb25zdCBDb250ZXh0ICpjb250
ZXh0KQogewotICAgIC8vIFNhbXBsZXJzIGNhbm5vdCBiZSBjcmVhdGVkIHZpYSBCaW5kCi0gICAg
aWYgKHNhbXBsZXJIYW5kbGUgPT0gMCkKKyAgICBmb3IgKGF1dG8gcGF0aCA6IG1QYXRocykKICAg
ICB7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBTYWZlRGVsZXRlKHBhdGguc2Vj
b25kKTsKICAgICB9CisgICAgbVBhdGhzLmNsZWFyKCk7Cit9CiAKLSAgICBTYW1wbGVyICpzYW1w
bGVyID0gZ2V0U2FtcGxlcihzYW1wbGVySGFuZGxlKTsKKy8vIEZyYW1lYnVmZmVyTWFuYWdlciBJ
bXBsZW1lbnRhdGlvbi4KIAotICAgIGlmICghc2FtcGxlcikKKy8vIHN0YXRpYworRnJhbWVidWZm
ZXIgKkZyYW1lYnVmZmVyTWFuYWdlcjo6QWxsb2NhdGVOZXdPYmplY3Qocng6OkdMSW1wbEZhY3Rv
cnkgKmZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQ2FwcyAmY2FwcykKK3sKKyAgICByZXR1cm4gbmV3IEZy
YW1lYnVmZmVyKGNhcHMsIGZhY3RvcnksIGhhbmRsZSk7Cit9CisKKy8vIHN0YXRpYwordm9pZCBG
cmFtZWJ1ZmZlck1hbmFnZXI6OkRlbGV0ZU9iamVjdChGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIp
Cit7CisgICAgLy8gRGVmYXVsdCBmcmFtZWJ1ZmZlciBhcmUgb3duZWQgYnkgdGhlaXIgcmVzcGVj
dGl2ZSBTdXJmYWNlCisgICAgaWYgKGZyYW1lYnVmZmVyLT5pZCgpICE9IDApCiAgICAgewotICAg
ICAgICBzYW1wbGVyICAgICAgICAgICAgICAgICAgICA9IG5ldyBTYW1wbGVyKGZhY3RvcnksIHNh
bXBsZXJIYW5kbGUpOwotICAgICAgICBtU2FtcGxlck1hcFtzYW1wbGVySGFuZGxlXSA9IHNhbXBs
ZXI7Ci0gICAgICAgIHNhbXBsZXItPmFkZFJlZigpOworICAgICAgICBkZWxldGUgZnJhbWVidWZm
ZXI7CiAgICAgfQorfQogCi0gICAgcmV0dXJuIHNhbXBsZXI7CitHTHVpbnQgRnJhbWVidWZmZXJN
YW5hZ2VyOjpjcmVhdGVGcmFtZWJ1ZmZlcigpCit7CisgICAgcmV0dXJuIEFsbG9jYXRlRW1wdHlP
YmplY3QoJm1IYW5kbGVBbGxvY2F0b3IsICZtT2JqZWN0TWFwKTsKIH0KIAotYm9vbCBSZXNvdXJj
ZU1hbmFnZXI6OmlzU2FtcGxlcihHTHVpbnQgc2FtcGxlcikKK0ZyYW1lYnVmZmVyICpGcmFtZWJ1
ZmZlck1hbmFnZXI6OmdldEZyYW1lYnVmZmVyKEdMdWludCBoYW5kbGUpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1TYW1wbGVyTWFwLmZpbmQoc2FtcGxlcikgIT0gbVNhbXBsZXJNYXAuZW5kKCk7Cisg
ICAgcmV0dXJuIEdldE9iamVjdChtT2JqZWN0TWFwLCBoYW5kbGUpOwogfQogCi1ib29sIFJlc291
cmNlTWFuYWdlcjo6aXNUZXh0dXJlR2VuZXJhdGVkKEdMdWludCB0ZXh0dXJlKSBjb25zdAordm9p
ZCBGcmFtZWJ1ZmZlck1hbmFnZXI6OnNldERlZmF1bHRGcmFtZWJ1ZmZlcihGcmFtZWJ1ZmZlciAq
ZnJhbWVidWZmZXIpCiB7Ci0gICAgcmV0dXJuIHRleHR1cmUgPT0gMCB8fCBtVGV4dHVyZU1hcC5m
aW5kKHRleHR1cmUpICE9IG1UZXh0dXJlTWFwLmVuZCgpOworICAgIEFTU0VSVChmcmFtZWJ1ZmZl
ciA9PSBudWxscHRyIHx8IGZyYW1lYnVmZmVyLT5pZCgpID09IDApOworICAgIG1PYmplY3RNYXBb
MF0gPSBmcmFtZWJ1ZmZlcjsKIH0KIAotYm9vbCBSZXNvdXJjZU1hbmFnZXI6OmlzQnVmZmVyR2Vu
ZXJhdGVkKEdMdWludCBidWZmZXIpIGNvbnN0Citib29sIEZyYW1lYnVmZmVyTWFuYWdlcjo6aXNG
cmFtZWJ1ZmZlckdlbmVyYXRlZChHTHVpbnQgZnJhbWVidWZmZXIpCiB7Ci0gICAgcmV0dXJuIGJ1
ZmZlciA9PSAwIHx8IG1CdWZmZXJNYXAuZmluZChidWZmZXIpICE9IG1CdWZmZXJNYXAuZW5kKCk7
CisgICAgQVNTRVJUKG1PYmplY3RNYXAuZmluZCgwKSAhPSBtT2JqZWN0TWFwLmVuZCgpKTsKKyAg
ICByZXR1cm4gbU9iamVjdE1hcC5maW5kKGZyYW1lYnVmZmVyKSAhPSBtT2JqZWN0TWFwLmVuZCgp
OwogfQogCi1ib29sIFJlc291cmNlTWFuYWdlcjo6aXNSZW5kZXJidWZmZXJHZW5lcmF0ZWQoR0x1
aW50IHJlbmRlcmJ1ZmZlcikgY29uc3QKK3ZvaWQgRnJhbWVidWZmZXJNYW5hZ2VyOjppbnZhbGlk
YXRlRnJhbWVidWZmZXJDb21wbGVuZXNzQ2FjaGUoKQogewotICAgIHJldHVybiByZW5kZXJidWZm
ZXIgPT0gMCB8fCBtUmVuZGVyYnVmZmVyTWFwLmZpbmQocmVuZGVyYnVmZmVyKSAhPSBtUmVuZGVy
YnVmZmVyTWFwLmVuZCgpOworICAgIGZvciAoYXV0byAmZnJhbWVidWZmZXIgOiBtT2JqZWN0TWFw
KQorICAgIHsKKyAgICAgICAgaWYgKGZyYW1lYnVmZmVyLnNlY29uZCkKKyAgICAgICAgeworICAg
ICAgICAgICAgZnJhbWVidWZmZXIuc2Vjb25kLT5pbnZhbGlkYXRlQ29tcGxldGVuZXNzQ2FjaGUo
KTsKKyAgICAgICAgfQorICAgIH0KIH0KIAogfSAgLy8gbmFtZXNwYWNlIGdsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyLmgK
aW5kZXggZjZhMDAwMmVkMThlMTgxYjhjYzZmOGI4ODA4OTA5MjA0YmExYTAzZC4uODJkMjMwNzky
Zjg2MzIwNDQxMzU4MDEyYzczODgxYTg2NmUzNGRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuaApAQCAtMSwxMSAr
MSwxMSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
NiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCiAKLS8vIFJlc291
cmNlTWFuYWdlci5oIDogRGVmaW5lcyB0aGUgUmVzb3VyY2VNYW5hZ2VyIGNsYXNzLCB3aGljaCB0
cmFja3Mgb2JqZWN0cwotLy8gc2hhcmVkIGJ5IG11bHRpcGxlIEdMIGNvbnRleHRzLgorLy8gUmVz
b3VyY2VNYW5hZ2VyLmggOiBEZWZpbmVzIHRoZSBSZXNvdXJjZU1hbmFnZXIgY2xhc3Nlcywgd2hp
Y2ggaGFuZGxlIGFsbG9jYXRpb24gYW5kIGxpZmV0aW1lIG9mCisvLyBHTCBvYmplY3RzLgogCiAj
aWZuZGVmIExJQkFOR0xFX1JFU09VUkNFTUFOQUdFUl9IXwogI2RlZmluZSBMSUJBTkdMRV9SRVNP
VVJDRU1BTkFHRVJfSF8KQEAgLTI1LDcgKzI1LDEwIEBAIGNsYXNzIEdMSW1wbEZhY3Rvcnk7CiBu
YW1lc3BhY2UgZ2wKIHsKIGNsYXNzIEJ1ZmZlcjsKK3N0cnVjdCBDYXBzOworY2xhc3MgQ29udGV4
dDsKIGNsYXNzIEZlbmNlU3luYzsKK2NsYXNzIEZyYW1lYnVmZmVyOwogc3RydWN0IExpbWl0YXRp
b25zOwogY2xhc3MgUGF0aDsKIGNsYXNzIFByb2dyYW07CkBAIC0zNCw4OSArMzcsMjI1IEBAIGNs
YXNzIFNhbXBsZXI7CiBjbGFzcyBTaGFkZXI7CiBjbGFzcyBUZXh0dXJlOwogCi1jbGFzcyBSZXNv
dXJjZU1hbmFnZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3RlbXBsYXRlIDx0eXBlbmFtZSBIYW5k
bGVBbGxvY2F0b3JUeXBlPgorY2xhc3MgUmVzb3VyY2VNYW5hZ2VyQmFzZSA6IGFuZ2xlOjpOb25D
b3B5YWJsZQogewogICBwdWJsaWM6Ci0gICAgUmVzb3VyY2VNYW5hZ2VyKCk7Ci0gICAgflJlc291
cmNlTWFuYWdlcigpOworICAgIFJlc291cmNlTWFuYWdlckJhc2UoKTsKIAogICAgIHZvaWQgYWRk
UmVmKCk7Ci0gICAgdm9pZCByZWxlYXNlKCk7CisgICAgdm9pZCByZWxlYXNlKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQpOwogCisgIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoY29u
c3QgQ29udGV4dCAqY29udGV4dCkgPSAwOworICAgIHZpcnR1YWwgflJlc291cmNlTWFuYWdlckJh
c2UoKSB7fQorCisgICAgSGFuZGxlQWxsb2NhdG9yVHlwZSBtSGFuZGxlQWxsb2NhdG9yOworCisg
IHByaXZhdGU6CisgICAgc2l6ZV90IG1SZWZDb3VudDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBSZXNvdXJjZVR5cGUsIHR5cGVuYW1lIEhhbmRsZUFsbG9jYXRvclR5cGUsIHR5cGVuYW1lIElt
cGxUPgorY2xhc3MgVHlwZWRSZXNvdXJjZU1hbmFnZXIgOiBwdWJsaWMgUmVzb3VyY2VNYW5hZ2Vy
QmFzZTxIYW5kbGVBbGxvY2F0b3JUeXBlPgoreworICBwdWJsaWM6CisgICAgVHlwZWRSZXNvdXJj
ZU1hbmFnZXIoKSB7fQorCisgICAgdm9pZCBkZWxldGVPYmplY3QoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGhhbmRsZSk7CisKKyAgcHJvdGVjdGVkOgorICAgIH5UeXBlZFJlc291cmNl
TWFuYWdlcigpIG92ZXJyaWRlOworCisgICAgLy8gSW5saW5lZCBpbiB0aGUgaGVhZGVyIGZvciBw
ZXJmb3JtYW5jZS4KKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJnVHlwZXM+CisgICAgUmVz
b3VyY2VUeXBlICpjaGVja09iamVjdEFsbG9jYXRpb24ocng6OkdMSW1wbEZhY3RvcnkgKmZhY3Rv
cnksIEdMdWludCBoYW5kbGUsIEFyZ1R5cGVzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBhdXRv
IG9iamVjdE1hcEl0ZXIgPSBtT2JqZWN0TWFwLmZpbmQoaGFuZGxlKTsKKworICAgICAgICBpZiAo
b2JqZWN0TWFwSXRlciAhPSBtT2JqZWN0TWFwLmVuZCgpICYmIG9iamVjdE1hcEl0ZXItPnNlY29u
ZCAhPSBudWxscHRyKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0TWFwSXRl
ci0+c2Vjb25kOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGhhbmRsZSA9PSAwKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBhbGxvY2F0ZU9iamVjdDxBcmdUeXBlcy4uLj4ob2JqZWN0TWFwSXRlciwgZmFjdG9yeSwg
aGFuZGxlLCBhcmdzLi4uKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJn
VHlwZXM+CisgICAgUmVzb3VyY2VUeXBlICphbGxvY2F0ZU9iamVjdCh0eXBlbmFtZSBSZXNvdXJj
ZU1hcDxSZXNvdXJjZVR5cGU+OjppdGVyYXRvciAmb2JqZWN0TWFwSXRlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGhhbmRsZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFyZ1R5cGVzLi4uIGFyZ3MpOworCisgICAgdm9pZCByZXNldChj
b25zdCBDb250ZXh0ICpjb250ZXh0KSBvdmVycmlkZTsKKworICAgIFJlc291cmNlTWFwPFJlc291
cmNlVHlwZT4gbU9iamVjdE1hcDsKK307CisKK2NsYXNzIEJ1ZmZlck1hbmFnZXIgOiBwdWJsaWMg
VHlwZWRSZXNvdXJjZU1hbmFnZXI8QnVmZmVyLCBIYW5kbGVBbGxvY2F0b3IsIEJ1ZmZlck1hbmFn
ZXI+Cit7CisgIHB1YmxpYzoKICAgICBHTHVpbnQgY3JlYXRlQnVmZmVyKCk7CisgICAgQnVmZmVy
ICpnZXRCdWZmZXIoR0x1aW50IGhhbmRsZSkgY29uc3Q7CisgICAgYm9vbCBpc0J1ZmZlckdlbmVy
YXRlZChHTHVpbnQgYnVmZmVyKSBjb25zdDsKKworICAgIEJ1ZmZlciAqY2hlY2tCdWZmZXJBbGxv
Y2F0aW9uKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgaGFuZGxlKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGNoZWNrT2JqZWN0QWxsb2NhdGlvbihmYWN0b3J5LCBoYW5kbGUpOwor
ICAgIH0KKworICAgIC8vIFRPRE8oam1hZGlsbCk6IEludmVzdGlnYXRlIGRlc2lnbiB3aGljaCBk
b2Vzbid0IGV4cG9zZSB0aGVzZSBtZXRob2RzIHB1YmxpY2x5LgorICAgIHN0YXRpYyBCdWZmZXIg
KkFsbG9jYXRlTmV3T2JqZWN0KHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgaGFu
ZGxlKTsKKyAgICBzdGF0aWMgdm9pZCBEZWxldGVPYmplY3QoQnVmZmVyICpidWZmZXIpOworCisg
IHByb3RlY3RlZDoKKyAgICB+QnVmZmVyTWFuYWdlcigpIG92ZXJyaWRlIHt9Cit9OworCitjbGFz
cyBTaGFkZXJQcm9ncmFtTWFuYWdlciA6IHB1YmxpYyBSZXNvdXJjZU1hbmFnZXJCYXNlPEhhbmRs
ZUFsbG9jYXRvcj4KK3sKKyAgcHVibGljOgogICAgIEdMdWludCBjcmVhdGVTaGFkZXIocng6OkdM
SW1wbEZhY3RvcnkgKmZhY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
TGltaXRhdGlvbnMgJnJlbmRlcmVyTGltaXRhdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBMaW1pdGF0aW9ucyAmcmVuZGVyZXJMaW1pdGF0aW9ucywKICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlKTsKKyAgICB2b2lkIGRlbGV0ZVNoYWRlcihjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTHVpbnQgc2hhZGVyKTsKKyAgICBTaGFkZXIgKmdldFNoYWRlcihHTHVp
bnQgaGFuZGxlKSBjb25zdDsKKwogICAgIEdMdWludCBjcmVhdGVQcm9ncmFtKHJ4OjpHTEltcGxG
YWN0b3J5ICpmYWN0b3J5KTsKKyAgICB2b2lkIGRlbGV0ZVByb2dyYW0oY29uc3QgQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IHByb2dyYW0pOworICAgIFByb2dyYW0gKmdldFByb2dyYW0oR0x1aW50
IGhhbmRsZSkgY29uc3Q7CisKKyAgcHJvdGVjdGVkOgorICAgIH5TaGFkZXJQcm9ncmFtTWFuYWdl
cigpIG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9iamVj
dFR5cGU+CisgICAgdm9pZCBkZWxldGVPYmplY3QoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUmVz
b3VyY2VNYXA8T2JqZWN0VHlwZT4gKm9iamVjdE1hcCwgR0x1aW50IGlkKTsKKworICAgIHZvaWQg
cmVzZXQoY29uc3QgQ29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGU7CisKKyAgICBSZXNvdXJjZU1h
cDxTaGFkZXI+IG1TaGFkZXJzOworICAgIFJlc291cmNlTWFwPFByb2dyYW0+IG1Qcm9ncmFtczsK
K307CisKK2NsYXNzIFRleHR1cmVNYW5hZ2VyIDogcHVibGljIFR5cGVkUmVzb3VyY2VNYW5hZ2Vy
PFRleHR1cmUsIEhhbmRsZUFsbG9jYXRvciwgVGV4dHVyZU1hbmFnZXI+Cit7CisgIHB1YmxpYzoK
ICAgICBHTHVpbnQgY3JlYXRlVGV4dHVyZSgpOwotICAgIEdMdWludCBjcmVhdGVSZW5kZXJidWZm
ZXIoKTsKLSAgICBHTHVpbnQgY3JlYXRlU2FtcGxlcigpOwotICAgIEdMdWludCBjcmVhdGVGZW5j
ZVN5bmMocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnkpOwotICAgIEVycm9yT3JSZXN1bHQ8R0x1
aW50PiBjcmVhdGVQYXRocyhyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0xzaXplaSByYW5n
ZSk7CisgICAgVGV4dHVyZSAqZ2V0VGV4dHVyZShHTHVpbnQgaGFuZGxlKSBjb25zdDsKKyAgICBi
b29sIGlzVGV4dHVyZUdlbmVyYXRlZChHTHVpbnQgdGV4dHVyZSkgY29uc3Q7CiAKLSAgICB2b2lk
IGRlbGV0ZUJ1ZmZlcihHTHVpbnQgYnVmZmVyKTsKLSAgICB2b2lkIGRlbGV0ZVNoYWRlcihHTHVp
bnQgc2hhZGVyKTsKLSAgICB2b2lkIGRlbGV0ZVByb2dyYW0oR0x1aW50IHByb2dyYW0pOwotICAg
IHZvaWQgZGVsZXRlVGV4dHVyZShHTHVpbnQgdGV4dHVyZSk7Ci0gICAgdm9pZCBkZWxldGVSZW5k
ZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcik7Ci0gICAgdm9pZCBkZWxldGVTYW1wbGVyKEdM
dWludCBzYW1wbGVyKTsKLSAgICB2b2lkIGRlbGV0ZUZlbmNlU3luYyhHTHVpbnQgZmVuY2VTeW5j
KTsKLSAgICB2b2lkIGRlbGV0ZVBhdGhzKEdMdWludCBmaXJzdCwgR0xzaXplaSByYW5nZSk7Cisg
ICAgdm9pZCBpbnZhbGlkYXRlVGV4dHVyZUNvbXBsZW5lc3NDYWNoZSgpOwogCi0gICAgQnVmZmVy
ICpnZXRCdWZmZXIoR0x1aW50IGhhbmRsZSk7Ci0gICAgU2hhZGVyICpnZXRTaGFkZXIoR0x1aW50
IGhhbmRsZSkgY29uc3Q7Ci0gICAgUHJvZ3JhbSAqZ2V0UHJvZ3JhbShHTHVpbnQgaGFuZGxlKSBj
b25zdDsKLSAgICBUZXh0dXJlICpnZXRUZXh0dXJlKEdMdWludCBoYW5kbGUpOworICAgIFRleHR1
cmUgKmNoZWNrVGV4dHVyZUFsbG9jYXRpb24ocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksIEdM
dWludCBoYW5kbGUsIEdMZW51bSB0YXJnZXQpCisgICAgeworICAgICAgICByZXR1cm4gY2hlY2tP
YmplY3RBbGxvY2F0aW9uKGZhY3RvcnksIGhhbmRsZSwgdGFyZ2V0KTsKKyAgICB9CisKKyAgICBz
dGF0aWMgVGV4dHVyZSAqQWxsb2NhdGVOZXdPYmplY3Qocng6OkdMSW1wbEZhY3RvcnkgKmZhY3Rv
cnksIEdMdWludCBoYW5kbGUsIEdMZW51bSB0YXJnZXQpOworICAgIHN0YXRpYyB2b2lkIERlbGV0
ZU9iamVjdChUZXh0dXJlICp0ZXh0dXJlKTsKKworICBwcm90ZWN0ZWQ6CisgICAgflRleHR1cmVN
YW5hZ2VyKCkgb3ZlcnJpZGUge30KK307CisKK2NsYXNzIFJlbmRlcmJ1ZmZlck1hbmFnZXIKKyAg
ICA6IHB1YmxpYyBUeXBlZFJlc291cmNlTWFuYWdlcjxSZW5kZXJidWZmZXIsIEhhbmRsZUFsbG9j
YXRvciwgUmVuZGVyYnVmZmVyTWFuYWdlcj4KK3sKKyAgcHVibGljOgorICAgIEdMdWludCBjcmVh
dGVSZW5kZXJidWZmZXIoKTsKICAgICBSZW5kZXJidWZmZXIgKmdldFJlbmRlcmJ1ZmZlcihHTHVp
bnQgaGFuZGxlKTsKLSAgICBTYW1wbGVyICpnZXRTYW1wbGVyKEdMdWludCBoYW5kbGUpOwotICAg
IEZlbmNlU3luYyAqZ2V0RmVuY2VTeW5jKEdMdWludCBoYW5kbGUpOworICAgIGJvb2wgaXNSZW5k
ZXJidWZmZXJHZW5lcmF0ZWQoR0x1aW50IHJlbmRlcmJ1ZmZlcikgY29uc3Q7CiAKLSAgICAvLyBD
SFJPTUlVTV9wYXRoX3JlbmRlcmluZwotICAgIGNvbnN0IFBhdGggKmdldFBhdGgoR0x1aW50IHBh
dGgpIGNvbnN0OwotICAgIFBhdGggKmdldFBhdGgoR0x1aW50IHBhdGgpOwotICAgIGJvb2wgaGFz
UGF0aChHTHVpbnQgcGF0aCkgY29uc3Q7CisgICAgUmVuZGVyYnVmZmVyICpjaGVja1JlbmRlcmJ1
ZmZlckFsbG9jYXRpb24ocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBoYW5kbGUp
CisgICAgeworICAgICAgICByZXR1cm4gY2hlY2tPYmplY3RBbGxvY2F0aW9uKGZhY3RvcnksIGhh
bmRsZSk7CisgICAgfQogCi0gICAgdm9pZCBzZXRSZW5kZXJidWZmZXIoR0x1aW50IGhhbmRsZSwg
UmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIpOworICAgIHN0YXRpYyBSZW5kZXJidWZmZXIgKkFs
bG9jYXRlTmV3T2JqZWN0KHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgaGFuZGxl
KTsKKyAgICBzdGF0aWMgdm9pZCBEZWxldGVPYmplY3QoUmVuZGVyYnVmZmVyICpyZW5kZXJidWZm
ZXIpOwogCi0gICAgQnVmZmVyICpjaGVja0J1ZmZlckFsbG9jYXRpb24ocng6OkdMSW1wbEZhY3Rv
cnkgKmZhY3RvcnksIEdMdWludCBoYW5kbGUpOwotICAgIFRleHR1cmUgKmNoZWNrVGV4dHVyZUFs
bG9jYXRpb24ocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBoYW5kbGUsIEdMZW51
bSB0eXBlKTsKLSAgICBSZW5kZXJidWZmZXIgKmNoZWNrUmVuZGVyYnVmZmVyQWxsb2NhdGlvbihy
eDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50IGhhbmRsZSk7Ci0gICAgU2FtcGxlciAq
Y2hlY2tTYW1wbGVyQWxsb2NhdGlvbihyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50
IHNhbXBsZXJIYW5kbGUpOworICBwcm90ZWN0ZWQ6CisgICAgflJlbmRlcmJ1ZmZlck1hbmFnZXIo
KSBvdmVycmlkZSB7fQorfTsKIAorY2xhc3MgU2FtcGxlck1hbmFnZXIgOiBwdWJsaWMgVHlwZWRS
ZXNvdXJjZU1hbmFnZXI8U2FtcGxlciwgSGFuZGxlQWxsb2NhdG9yLCBTYW1wbGVyTWFuYWdlcj4K
K3sKKyAgcHVibGljOgorICAgIEdMdWludCBjcmVhdGVTYW1wbGVyKCk7CisgICAgU2FtcGxlciAq
Z2V0U2FtcGxlcihHTHVpbnQgaGFuZGxlKTsKICAgICBib29sIGlzU2FtcGxlcihHTHVpbnQgc2Ft
cGxlcik7CiAKLSAgICAvLyBHTF9DSFJPTUlVTV9iaW5kX2dlbmVyYXRlc19yZXNvdXJjZQotICAg
IGJvb2wgaXNUZXh0dXJlR2VuZXJhdGVkKEdMdWludCB0ZXh0dXJlKSBjb25zdDsKLSAgICBib29s
IGlzQnVmZmVyR2VuZXJhdGVkKEdMdWludCBidWZmZXIpIGNvbnN0OwotICAgIGJvb2wgaXNSZW5k
ZXJidWZmZXJHZW5lcmF0ZWQoR0x1aW50IHJlbmRlcmJ1ZmZlcikgY29uc3Q7CisgICAgU2FtcGxl
ciAqY2hlY2tTYW1wbGVyQWxsb2NhdGlvbihyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1
aW50IGhhbmRsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjaGVja09iamVjdEFsbG9jYXRpb24o
ZmFjdG9yeSwgaGFuZGxlKTsKKyAgICB9CiAKLSAgcHJpdmF0ZToKLSAgICB2b2lkIGNyZWF0ZVRl
eHR1cmVJbnRlcm5hbChHTHVpbnQgaGFuZGxlKTsKKyAgICBzdGF0aWMgU2FtcGxlciAqQWxsb2Nh
dGVOZXdPYmplY3Qocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBoYW5kbGUpOwor
ICAgIHN0YXRpYyB2b2lkIERlbGV0ZU9iamVjdChTYW1wbGVyICpzYW1wbGVyKTsKIAotICAgIHN0
ZDo6c2l6ZV90IG1SZWZDb3VudDsKKyAgcHJvdGVjdGVkOgorICAgIH5TYW1wbGVyTWFuYWdlcigp
IG92ZXJyaWRlIHt9Cit9OwogCi0gICAgUmVzb3VyY2VNYXA8QnVmZmVyPiBtQnVmZmVyTWFwOwot
ICAgIEhhbmRsZUFsbG9jYXRvciBtQnVmZmVySGFuZGxlQWxsb2NhdG9yOworY2xhc3MgRmVuY2VT
eW5jTWFuYWdlciA6IHB1YmxpYyBUeXBlZFJlc291cmNlTWFuYWdlcjxGZW5jZVN5bmMsIEhhbmRs
ZUFsbG9jYXRvciwgRmVuY2VTeW5jTWFuYWdlcj4KK3sKKyAgcHVibGljOgorICAgIEdMdWludCBj
cmVhdGVGZW5jZVN5bmMocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnkpOworICAgIEZlbmNlU3lu
YyAqZ2V0RmVuY2VTeW5jKEdMdWludCBoYW5kbGUpOwogCi0gICAgUmVzb3VyY2VNYXA8U2hhZGVy
PiBtU2hhZGVyTWFwOworICAgIHN0YXRpYyB2b2lkIERlbGV0ZU9iamVjdChGZW5jZVN5bmMgKmZl
bmNlU3luYyk7CiAKLSAgICBSZXNvdXJjZU1hcDxQcm9ncmFtPiBtUHJvZ3JhbU1hcDsKLSAgICBI
YW5kbGVBbGxvY2F0b3IgbVByb2dyYW1TaGFkZXJIYW5kbGVBbGxvY2F0b3I7CisgIHByb3RlY3Rl
ZDoKKyAgICB+RmVuY2VTeW5jTWFuYWdlcigpIG92ZXJyaWRlIHt9Cit9OwogCi0gICAgUmVzb3Vy
Y2VNYXA8VGV4dHVyZT4gbVRleHR1cmVNYXA7Ci0gICAgSGFuZGxlQWxsb2NhdG9yIG1UZXh0dXJl
SGFuZGxlQWxsb2NhdG9yOworY2xhc3MgUGF0aE1hbmFnZXIgOiBwdWJsaWMgUmVzb3VyY2VNYW5h
Z2VyQmFzZTxIYW5kbGVSYW5nZUFsbG9jYXRvcj4KK3sKKyAgcHVibGljOgorICAgIEVycm9yT3JS
ZXN1bHQ8R0x1aW50PiBjcmVhdGVQYXRocyhyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0xz
aXplaSByYW5nZSk7CisgICAgdm9pZCBkZWxldGVQYXRocyhHTHVpbnQgZmlyc3QsIEdMc2l6ZWkg
cmFuZ2UpOworICAgIFBhdGggKmdldFBhdGgoR0x1aW50IGhhbmRsZSkgY29uc3Q7CisgICAgYm9v
bCBoYXNQYXRoKEdMdWludCBoYW5kbGUpIGNvbnN0OworCisgIHByb3RlY3RlZDoKKyAgICB+UGF0
aE1hbmFnZXIoKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlc2V0KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQpIG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgUmVzb3VyY2VNYXA8UGF0aD4gbVBhdGhz
OworfTsKKworY2xhc3MgRnJhbWVidWZmZXJNYW5hZ2VyCisgICAgOiBwdWJsaWMgVHlwZWRSZXNv
dXJjZU1hbmFnZXI8RnJhbWVidWZmZXIsIEhhbmRsZUFsbG9jYXRvciwgRnJhbWVidWZmZXJNYW5h
Z2VyPgoreworICBwdWJsaWM6CisgICAgR0x1aW50IGNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAg
RnJhbWVidWZmZXIgKmdldEZyYW1lYnVmZmVyKEdMdWludCBoYW5kbGUpIGNvbnN0OworICAgIHZv
aWQgc2V0RGVmYXVsdEZyYW1lYnVmZmVyKEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlcik7CisgICAg
Ym9vbCBpc0ZyYW1lYnVmZmVyR2VuZXJhdGVkKEdMdWludCBmcmFtZWJ1ZmZlcik7CiAKLSAgICBS
ZXNvdXJjZU1hcDxSZW5kZXJidWZmZXI+IG1SZW5kZXJidWZmZXJNYXA7Ci0gICAgSGFuZGxlQWxs
b2NhdG9yIG1SZW5kZXJidWZmZXJIYW5kbGVBbGxvY2F0b3I7CisgICAgdm9pZCBpbnZhbGlkYXRl
RnJhbWVidWZmZXJDb21wbGVuZXNzQ2FjaGUoKTsKIAotICAgIFJlc291cmNlTWFwPFNhbXBsZXI+
IG1TYW1wbGVyTWFwOwotICAgIEhhbmRsZUFsbG9jYXRvciBtU2FtcGxlckhhbmRsZUFsbG9jYXRv
cjsKKyAgICBGcmFtZWJ1ZmZlciAqY2hlY2tGcmFtZWJ1ZmZlckFsbG9jYXRpb24ocng6OkdMSW1w
bEZhY3RvcnkgKmZhY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IENhcHMgJmNhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBoYW5kbGUpCisgICAgeworICAgICAgICByZXR1cm4gY2hlY2tP
YmplY3RBbGxvY2F0aW9uPGNvbnN0IENhcHMgJj4oZmFjdG9yeSwgaGFuZGxlLCBjYXBzKTsKKyAg
ICB9CiAKLSAgICBSZXNvdXJjZU1hcDxGZW5jZVN5bmM+IG1GZW5jZVN5bmNNYXA7Ci0gICAgSGFu
ZGxlQWxsb2NhdG9yIG1GZW5jZVN5bmNIYW5kbGVBbGxvY2F0b3I7CisgICAgc3RhdGljIEZyYW1l
YnVmZmVyICpBbGxvY2F0ZU5ld09iamVjdChyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoYW5kbGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDYXBzICZjYXBz
KTsKKyAgICBzdGF0aWMgdm9pZCBEZWxldGVPYmplY3QoRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVy
KTsKIAotICAgIFJlc291cmNlTWFwPFBhdGg+IG1QYXRoTWFwOwotICAgIEhhbmRsZVJhbmdlQWxs
b2NhdG9yIG1QYXRoSGFuZGxlQWxsb2NhdG9yOworICBwcm90ZWN0ZWQ6CisgICAgfkZyYW1lYnVm
ZmVyTWFuYWdlcigpIG92ZXJyaWRlIHt9CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgZ2wKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1hbmFn
ZXJfdW5pdHRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Jl
c291cmNlTWFuYWdlcl91bml0dGVzdC5jcHAKaW5kZXggZGVkMmRjNTM4OWM1MWI1ODZiNTBhMzcy
ZWZiMmJiNTA3MDAyYTMyMS4uMDNjYTk0YTU3ZDYyYTM5YmJhMGMwYmFmNGM2YzY4ZGE4YzdjMmUy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Jlc291
cmNlTWFuYWdlcl91bml0dGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlcl91bml0dGVzdC5jcHAKQEAgLTI1LDMzICsyNSwzOSBA
QCBjbGFzcyBSZXNvdXJjZU1hbmFnZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QKICAgcHJv
dGVjdGVkOgogICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgbVJlc291
cmNlTWFuYWdlciA9IG5ldyBSZXNvdXJjZU1hbmFnZXIoKTsKKyAgICAgICAgbVRleHR1cmVNYW5h
Z2VyICAgICAgPSBuZXcgVGV4dHVyZU1hbmFnZXIoKTsKKyAgICAgICAgbUJ1ZmZlck1hbmFnZXIg
ICAgICAgPSBuZXcgQnVmZmVyTWFuYWdlcigpOworICAgICAgICBtUmVuZGVyYnVmZmVybWFuYWdl
ciA9IG5ldyBSZW5kZXJidWZmZXJNYW5hZ2VyKCk7CiAgICAgfQogCiAgICAgdm9pZCBUZWFyRG93
bigpIG92ZXJyaWRlCiAgICAgewotICAgICAgICBTYWZlRGVsZXRlKG1SZXNvdXJjZU1hbmFnZXIp
OworICAgICAgICBtVGV4dHVyZU1hbmFnZXItPnJlbGVhc2UobnVsbHB0cik7CisgICAgICAgIG1C
dWZmZXJNYW5hZ2VyLT5yZWxlYXNlKG51bGxwdHIpOworICAgICAgICBtUmVuZGVyYnVmZmVybWFu
YWdlci0+cmVsZWFzZShudWxscHRyKTsKICAgICB9CiAKICAgICBNb2NrR0xGYWN0b3J5IG1Nb2Nr
RmFjdG9yeTsKLSAgICBSZXNvdXJjZU1hbmFnZXIgKm1SZXNvdXJjZU1hbmFnZXI7CisgICAgVGV4
dHVyZU1hbmFnZXIgKm1UZXh0dXJlTWFuYWdlcjsKKyAgICBCdWZmZXJNYW5hZ2VyICptQnVmZmVy
TWFuYWdlcjsKKyAgICBSZW5kZXJidWZmZXJNYW5hZ2VyICptUmVuZGVyYnVmZmVybWFuYWdlcjsK
IH07CiAKIFRFU1RfRihSZXNvdXJjZU1hbmFnZXJUZXN0LCBSZWFsbG9jYXRlQm91bmRUZXh0dXJl
KQogewogICAgIEVYUEVDVF9DQUxMKG1Nb2NrRmFjdG9yeSwgY3JlYXRlVGV4dHVyZShfKSkuVGlt
ZXMoMSkuUmV0aXJlc09uU2F0dXJhdGlvbigpOwogCi0gICAgbVJlc291cmNlTWFuYWdlci0+Y2hl
Y2tUZXh0dXJlQWxsb2NhdGlvbigmbU1vY2tGYWN0b3J5LCAxLCBHTF9URVhUVVJFXzJEKTsKLSAg
ICBHTHVpbnQgbmV3VGV4dHVyZSA9IG1SZXNvdXJjZU1hbmFnZXItPmNyZWF0ZVRleHR1cmUoKTsK
KyAgICBtVGV4dHVyZU1hbmFnZXItPmNoZWNrVGV4dHVyZUFsbG9jYXRpb24oJm1Nb2NrRmFjdG9y
eSwgMSwgR0xfVEVYVFVSRV8yRCk7CisgICAgR0x1aW50IG5ld1RleHR1cmUgPSBtVGV4dHVyZU1h
bmFnZXItPmNyZWF0ZVRleHR1cmUoKTsKICAgICBFWFBFQ1RfTkUoMXUsIG5ld1RleHR1cmUpOwog
fQogCiBURVNUX0YoUmVzb3VyY2VNYW5hZ2VyVGVzdCwgUmVhbGxvY2F0ZUJvdW5kQnVmZmVyKQog
ewotICAgIEVYUEVDVF9DQUxMKG1Nb2NrRmFjdG9yeSwgY3JlYXRlQnVmZmVyKCkpLlRpbWVzKDEp
LlJldGlyZXNPblNhdHVyYXRpb24oKTsKKyAgICBFWFBFQ1RfQ0FMTChtTW9ja0ZhY3RvcnksIGNy
ZWF0ZUJ1ZmZlcihfKSkuVGltZXMoMSkuUmV0aXJlc09uU2F0dXJhdGlvbigpOwogCi0gICAgbVJl
c291cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKCZtTW9ja0ZhY3RvcnksIDEpOwot
ICAgIEdMdWludCBuZXdCdWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVCdWZmZXIoKTsK
KyAgICBtQnVmZmVyTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKCZtTW9ja0ZhY3Rvcnks
IDEpOworICAgIEdMdWludCBuZXdCdWZmZXIgPSBtQnVmZmVyTWFuYWdlci0+Y3JlYXRlQnVmZmVy
KCk7CiAgICAgRVhQRUNUX05FKDF1LCBuZXdCdWZmZXIpOwogfQogCkBAIC01OSw4ICs2NSw4IEBA
IFRFU1RfRihSZXNvdXJjZU1hbmFnZXJUZXN0LCBSZWFsbG9jYXRlQm91bmRSZW5kZXJidWZmZXIp
CiB7CiAgICAgRVhQRUNUX0NBTEwobU1vY2tGYWN0b3J5LCBjcmVhdGVSZW5kZXJidWZmZXIoKSku
VGltZXMoMSkuUmV0aXJlc09uU2F0dXJhdGlvbigpOwogCi0gICAgbVJlc291cmNlTWFuYWdlci0+
Y2hlY2tSZW5kZXJidWZmZXJBbGxvY2F0aW9uKCZtTW9ja0ZhY3RvcnksIDEpOwotICAgIEdMdWlu
dCBuZXdSZW5kZXJidWZmZXIgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVSZW5kZXJidWZmZXIo
KTsKKyAgICBtUmVuZGVyYnVmZmVybWFuYWdlci0+Y2hlY2tSZW5kZXJidWZmZXJBbGxvY2F0aW9u
KCZtTW9ja0ZhY3RvcnksIDEpOworICAgIEdMdWludCBuZXdSZW5kZXJidWZmZXIgPSBtUmVuZGVy
YnVmZmVybWFuYWdlci0+Y3JlYXRlUmVuZGVyYnVmZmVyKCk7CiAgICAgRVhQRUNUX05FKDF1LCBu
ZXdSZW5kZXJidWZmZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvU2FtcGxlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvU2FtcGxlci5jcHAKaW5kZXggZTJjMDE4YWNhOTM4Zjc5NzI0YzI4NThmMmI5YWEx
Yzg3YTFlYmIwNS4uMzY5YzNjYmFhZDYxZjk5YmRkYzdmM2VhMTc0OGYyYmU4NmQ2ZDE3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1NhbXBsZXIuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TYW1wbGVyLmNwcApA
QCAtMTM1LDYgKzEzNSwxNiBAQCBHTGVudW0gU2FtcGxlcjo6Z2V0Q29tcGFyZUZ1bmMoKSBjb25z
dAogICAgIHJldHVybiBtU2FtcGxlclN0YXRlLmNvbXBhcmVGdW5jOwogfQogCit2b2lkIFNhbXBs
ZXI6OnNldFNSR0JEZWNvZGUoR0xlbnVtIHNSR0JEZWNvZGUpCit7CisgICAgbVNhbXBsZXJTdGF0
ZS5zUkdCRGVjb2RlID0gc1JHQkRlY29kZTsKK30KKworR0xlbnVtIFNhbXBsZXI6OmdldFNSR0JE
ZWNvZGUoKSBjb25zdAoreworICAgIHJldHVybiBtU2FtcGxlclN0YXRlLnNSR0JEZWNvZGU7Cit9
CisKIGNvbnN0IFNhbXBsZXJTdGF0ZSAmU2FtcGxlcjo6Z2V0U2FtcGxlclN0YXRlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbVNhbXBsZXJTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TYW1wbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvU2FtcGxlci5oCmluZGV4IGVlMTMzZWQyZDZkYzFjY2NiMTNmMmI0MzFi
M2EwNDk4MDRkM2E0ZmIuLjBlNWZmOGFkZDMyYzE0YTEwODMwNTI1N2ZiOTZlOTI0ZjI4NDg2Mzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TYW1wbGVy
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1NhbXBsZXIuaApA
QCAtMjksNiArMjksOCBAQCBjbGFzcyBTYW1wbGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50T2Jq
ZWN0LCBwdWJsaWMgTGFiZWxlZE9iamVjdAogICAgIFNhbXBsZXIocng6OkdMSW1wbEZhY3Rvcnkg
KmZhY3RvcnksIEdMdWludCBpZCk7CiAgICAgflNhbXBsZXIoKSBvdmVycmlkZTsKIAorICAgIHZv
aWQgZGVzdHJveShjb25zdCBDb250ZXh0ICpjb250ZXh0KSBvdmVycmlkZSB7fQorCiAgICAgdm9p
ZCBzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAmbGFiZWwpIG92ZXJyaWRlOwogICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZnZXRMYWJlbCgpIGNvbnN0IG92ZXJyaWRlOwogCkBAIC02Miw2ICs2NCw5
IEBAIGNsYXNzIFNhbXBsZXIgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRPYmplY3QsIHB1YmxpYyBM
YWJlbGVkT2JqZWN0CiAgICAgdm9pZCBzZXRDb21wYXJlRnVuYyhHTGVudW0gY29tcGFyZUZ1bmMp
OwogICAgIEdMZW51bSBnZXRDb21wYXJlRnVuYygpIGNvbnN0OwogCisgICAgdm9pZCBzZXRTUkdC
RGVjb2RlKEdMZW51bSBzUkdCRGVjb2RlKTsKKyAgICBHTGVudW0gZ2V0U1JHQkRlY29kZSgpIGNv
bnN0OworCiAgICAgY29uc3QgU2FtcGxlclN0YXRlICZnZXRTYW1wbGVyU3RhdGUoKSBjb25zdDsK
IAogICAgIHJ4OjpTYW1wbGVySW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TaGFkZXIuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1NoYWRlci5jcHAKaW5kZXggZTAw
ODc3MmQ3NTM4Zjc3NTY5YjQzMzA5NTY3MzBiZDAyMzA1NTRiOC4uNmJkMDdhMjg2NzJiMWEyMjM3
NDAyYTk0ZWY3MDY2M2I1YmNlOTQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1NoYWRlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL1NoYWRlci5jcHAKQEAgLTIwLDYgKzIwLDcgQEAKICNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9HTEltcGxGYWN0b3J5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvU2hhZGVySW1wbC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKIAogbmFtZXNwYWNlIGdsCiB7CkBAIC04Miw3
ICs4Myw3IEBAIFNoYWRlclN0YXRlOjp+U2hhZGVyU3RhdGUoKQogewogfQogCi1TaGFkZXI6OlNo
YWRlcihSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIsCitTaGFkZXI6OlNoYWRlcihTaGFkZXJQcm9n
cmFtTWFuYWdlciAqbWFuYWdlciwKICAgICAgICAgICAgICAgIHJ4OjpHTEltcGxGYWN0b3J5ICpp
bXBsRmFjdG9yeSwKICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpMaW1pdGF0aW9ucyAmcmVuZGVy
ZXJMaW1pdGF0aW9ucywKICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLApAQCAtMjI3LDcgKzIy
OCw3IEBAIHZvaWQgU2hhZGVyOjpnZXRUcmFuc2xhdGVkU291cmNlV2l0aERlYnVnSW5mbyhHTHNp
emVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwKICAgICBnZXRTb3VyY2VJbXBsKGRlYnVnSW5m
bywgYnVmU2l6ZSwgbGVuZ3RoLCBidWZmZXIpOwogfQogCi12b2lkIFNoYWRlcjo6Y29tcGlsZShD
b21waWxlciAqY29tcGlsZXIpCit2b2lkIFNoYWRlcjo6Y29tcGlsZShjb25zdCBDb250ZXh0ICpj
b250ZXh0KQogewogICAgIG1TdGF0ZS5tVHJhbnNsYXRlZFNvdXJjZS5jbGVhcigpOwogICAgIG1J
bmZvTG9nLmNsZWFyKCk7CkBAIC0yMzgsNiArMjM5LDcgQEAgdm9pZCBTaGFkZXI6OmNvbXBpbGUo
Q29tcGlsZXIgKmNvbXBpbGVyKQogICAgIG1TdGF0ZS5tQWN0aXZlQXR0cmlidXRlcy5jbGVhcigp
OwogICAgIG1TdGF0ZS5tQWN0aXZlT3V0cHV0VmFyaWFibGVzLmNsZWFyKCk7CiAKKyAgICBDb21w
aWxlciAqY29tcGlsZXIgPSBjb250ZXh0LT5nZXRDb21waWxlcigpOwogICAgIFNoSGFuZGxlIGNv
bXBpbGVySGFuZGxlID0gY29tcGlsZXItPmdldENvbXBpbGVySGFuZGxlKG1TdGF0ZS5tU2hhZGVy
VHlwZSk7CiAKICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzb3VyY2VTdHJlYW07CkBAIC0yNDcsNiAr
MjQ5LDE1IEBAIHZvaWQgU2hhZGVyOjpjb21waWxlKENvbXBpbGVyICpjb21waWxlcikKICAgICAg
ICAgbUltcGxlbWVudGF0aW9uLT5wcmVwYXJlU291cmNlQW5kUmV0dXJuT3B0aW9ucygmc291cmNl
U3RyZWFtLCAmc291cmNlUGF0aCk7CiAgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9u
cyA9IChTSF9PQkpFQ1RfQ09ERSB8IFNIX1ZBUklBQkxFUyB8IGFkZGl0aW9uYWxPcHRpb25zKTsK
IAorICAgIC8vIEFkZCBkZWZhdWx0IG9wdGlvbnMgdG8gV2ViR0wgc2hhZGVycyB0byBwcmV2ZW50
IHVuZXhwZWN0ZWQgYmVoYXZpb3IgZHVyaW5nIGNvbXBpbGF0aW9uLgorICAgIGlmIChjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkud2ViZ2xDb21wYXRpYmlsaXR5KQorICAgIHsKKyAgICAgICAgY29t
cGlsZU9wdGlvbnMgfD0gU0hfSU5JVF9HTF9QT1NJVElPTjsKKyAgICAgICAgY29tcGlsZU9wdGlv
bnMgfD0gU0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSDsKKyAgICAgICAgY29tcGlsZU9wdGlvbnMg
fD0gU0hfTElNSVRfRVhQUkVTU0lPTl9DT01QTEVYSVRZOworICAgICAgICBjb21waWxlT3B0aW9u
cyB8PSBTSF9FTkZPUkNFX1BBQ0tJTkdfUkVTVFJJQ1RJT05TOworICAgIH0KKwogICAgIC8vIFNv
bWUgdGFyZ2V0cyAoZWcgRDNEMTEgRmVhdHVyZSBMZXZlbCA5XzMgYW5kIGJlbG93KSBkbyBub3Qg
c3VwcG9ydCBub24tY29uc3RhbnQgbG9vcCBpbmRleGVzCiAgICAgLy8gaW4gZnJhZ21lbnQgc2hh
ZGVycy4gU2hhZGVyIGNvbXBpbGF0aW9uIHdpbGwgZmFpbC4gVG8gcHJvdmlkZSBhIGJldHRlciBl
cnJvciBtZXNzYWdlIHdlIGNhbgogICAgIC8vIGluc3RydWN0IHRoZSBjb21waWxlciB0byBwcmUt
dmFsaWRhdGUuCkBAIC0yNjYsMTcgKzI3NywxNyBAQCB2b2lkIFNoYWRlcjo6Y29tcGlsZShDb21w
aWxlciAqY29tcGlsZXIpCiAgICAgc291cmNlQ1N0cmluZ3MucHVzaF9iYWNrKHNvdXJjZVN0cmlu
Zy5jX3N0cigpKTsKIAogICAgIGJvb2wgcmVzdWx0ID0KLSAgICAgICAgU2hDb21waWxlKGNvbXBp
bGVySGFuZGxlLCAmc291cmNlQ1N0cmluZ3NbMF0sIHNvdXJjZUNTdHJpbmdzLnNpemUoKSwgY29t
cGlsZU9wdGlvbnMpOworICAgICAgICBzaDo6Q29tcGlsZShjb21waWxlckhhbmRsZSwgJnNvdXJj
ZUNTdHJpbmdzWzBdLCBzb3VyY2VDU3RyaW5ncy5zaXplKCksIGNvbXBpbGVPcHRpb25zKTsKIAog
ICAgIGlmICghcmVzdWx0KQogICAgIHsKLSAgICAgICAgbUluZm9Mb2cgPSBTaEdldEluZm9Mb2co
Y29tcGlsZXJIYW5kbGUpOwotICAgICAgICBUUkFDRSgiXG4lcyIsIG1JbmZvTG9nLmNfc3RyKCkp
OworICAgICAgICBtSW5mb0xvZyA9IHNoOjpHZXRJbmZvTG9nKGNvbXBpbGVySGFuZGxlKTsKKyAg
ICAgICAgV0FSTigpIDw8IHN0ZDo6ZW5kbCA8PCBtSW5mb0xvZzsKICAgICAgICAgbUNvbXBpbGVk
ID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtU3RhdGUubVRyYW5zbGF0
ZWRTb3VyY2UgPSBTaEdldE9iamVjdENvZGUoY29tcGlsZXJIYW5kbGUpOworICAgIG1TdGF0ZS5t
VHJhbnNsYXRlZFNvdXJjZSA9IHNoOjpHZXRPYmplY3RDb2RlKGNvbXBpbGVySGFuZGxlKTsKIAog
I2lmbmRlZiBOREVCVUcKICAgICAvLyBQcmVmaXggdHJhbnNsYXRlZCBzaGFkZXIgd2l0aCBjb21t
ZW50ZWQgb3V0IHVuLXRyYW5zbGF0ZWQgc2hhZGVyLgpAQCAtMjg1LDE1ICsyOTYsMTQgQEAgdm9p
ZCBTaGFkZXI6OmNvbXBpbGUoQ29tcGlsZXIgKmNvbXBpbGVyKQogICAgIHNoYWRlclN0cmVhbSA8
PCAiLy8gR0xTTFxuIjsKICAgICBzaGFkZXJTdHJlYW0gPDwgIi8vXG4iOwogCi0gICAgc2l6ZV90
IGN1clBvcyA9IDA7Ci0gICAgd2hpbGUgKGN1clBvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKyAg
ICBzdGQ6OmlzdHJpbmdzdHJlYW0gaW5wdXRTb3VyY2VTdHJlYW0obVN0YXRlLm1Tb3VyY2UpOwor
ICAgIHN0ZDo6c3RyaW5nIGxpbmU7CisgICAgd2hpbGUgKHN0ZDo6Z2V0bGluZShpbnB1dFNvdXJj
ZVN0cmVhbSwgbGluZSkpCiAgICAgewotICAgICAgICBzaXplX3QgbmV4dExpbmUgPSBtU3RhdGUu
bVNvdXJjZS5maW5kKCJcbiIsIGN1clBvcyk7Ci0gICAgICAgIHNpemVfdCBsZW4gICAgICA9IChu
ZXh0TGluZSA9PSBzdGQ6OnN0cmluZzo6bnBvcykgPyBzdGQ6OnN0cmluZzo6bnBvcyA6IChuZXh0
TGluZSAtIGN1clBvcyArIDEpOwotCi0gICAgICAgIHNoYWRlclN0cmVhbSA8PCAiLy8gIiA8PCBt
U3RhdGUubVNvdXJjZS5zdWJzdHIoY3VyUG9zLCBsZW4pOworICAgICAgICAvLyBSZW1vdmUgbnVs
bCBjaGFyYWN0ZXJzIGZyb20gdGhlIHNvdXJjZSBsaW5lCisgICAgICAgIGxpbmUuZXJhc2Uoc3Rk
OjpyZW1vdmUobGluZS5iZWdpbigpLCBsaW5lLmVuZCgpLCAnXDAnKSwgbGluZS5lbmQoKSk7CiAK
LSAgICAgICAgY3VyUG9zID0gKG5leHRMaW5lID09IHN0ZDo6c3RyaW5nOjpucG9zKSA/IHN0ZDo6
c3RyaW5nOjpucG9zIDogKG5leHRMaW5lICsgMSk7CisgICAgICAgIHNoYWRlclN0cmVhbSA8PCAi
Ly8gIiA8PCBsaW5lOwogICAgIH0KICAgICBzaGFkZXJTdHJlYW0gPDwgIlxuXG4iOwogICAgIHNo
YWRlclN0cmVhbSA8PCBtU3RhdGUubVRyYW5zbGF0ZWRTb3VyY2U7CkBAIC0zMDEsMjIgKzMxMSwy
MiBAQCB2b2lkIFNoYWRlcjo6Y29tcGlsZShDb21waWxlciAqY29tcGlsZXIpCiAjZW5kaWYKIAog
ICAgIC8vIEdhdGhlciB0aGUgc2hhZGVyIGluZm9ybWF0aW9uCi0gICAgbVN0YXRlLm1TaGFkZXJW
ZXJzaW9uID0gU2hHZXRTaGFkZXJWZXJzaW9uKGNvbXBpbGVySGFuZGxlKTsKKyAgICBtU3RhdGUu
bVNoYWRlclZlcnNpb24gPSBzaDo6R2V0U2hhZGVyVmVyc2lvbihjb21waWxlckhhbmRsZSk7CiAK
LSAgICBtU3RhdGUubVZhcnlpbmdzICAgICAgICA9IEdldFNoYWRlclZhcmlhYmxlcyhTaEdldFZh
cnlpbmdzKGNvbXBpbGVySGFuZGxlKSk7Ci0gICAgbVN0YXRlLm1Vbmlmb3JtcyAgICAgICAgPSBH
ZXRTaGFkZXJWYXJpYWJsZXMoU2hHZXRVbmlmb3Jtcyhjb21waWxlckhhbmRsZSkpOwotICAgIG1T
dGF0ZS5tSW50ZXJmYWNlQmxvY2tzID0gR2V0U2hhZGVyVmFyaWFibGVzKFNoR2V0SW50ZXJmYWNl
QmxvY2tzKGNvbXBpbGVySGFuZGxlKSk7CisgICAgbVN0YXRlLm1WYXJ5aW5ncyAgICAgICAgPSBH
ZXRTaGFkZXJWYXJpYWJsZXMoc2g6OkdldFZhcnlpbmdzKGNvbXBpbGVySGFuZGxlKSk7CisgICAg
bVN0YXRlLm1Vbmlmb3JtcyAgICAgICAgPSBHZXRTaGFkZXJWYXJpYWJsZXMoc2g6OkdldFVuaWZv
cm1zKGNvbXBpbGVySGFuZGxlKSk7CisgICAgbVN0YXRlLm1JbnRlcmZhY2VCbG9ja3MgPSBHZXRT
aGFkZXJWYXJpYWJsZXMoc2g6OkdldEludGVyZmFjZUJsb2Nrcyhjb21waWxlckhhbmRsZSkpOwog
CiAgICAgc3dpdGNoIChtU3RhdGUubVNoYWRlclR5cGUpCiAgICAgewogICAgICAgICBjYXNlIEdM
X0NPTVBVVEVfU0hBREVSOgogICAgICAgICB7Ci0gICAgICAgICAgICBtU3RhdGUubUxvY2FsU2l6
ZSA9IFNoR2V0Q29tcHV0ZVNoYWRlckxvY2FsR3JvdXBTaXplKGNvbXBpbGVySGFuZGxlKTsKKyAg
ICAgICAgICAgIG1TdGF0ZS5tTG9jYWxTaXplID0gc2g6OkdldENvbXB1dGVTaGFkZXJMb2NhbEdy
b3VwU2l6ZShjb21waWxlckhhbmRsZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEdMX1ZFUlRFWF9TSEFERVI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIG1T
dGF0ZS5tQWN0aXZlQXR0cmlidXRlcyA9IEdldEFjdGl2ZVNoYWRlclZhcmlhYmxlcyhTaEdldEF0
dHJpYnV0ZXMoY29tcGlsZXJIYW5kbGUpKTsKKyAgICAgICAgICAgIG1TdGF0ZS5tQWN0aXZlQXR0
cmlidXRlcyA9IEdldEFjdGl2ZVNoYWRlclZhcmlhYmxlcyhzaDo6R2V0QXR0cmlidXRlcyhjb21w
aWxlckhhbmRsZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBHTF9GUkFHTUVOVF9TSEFERVI6CkBAIC0zMjQsNyArMzM0LDcgQEAgdm9pZCBTaGFkZXI6OmNv
bXBpbGUoQ29tcGlsZXIgKmNvbXBpbGVyKQogICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTog
RmlndXJlIG91dCB3aHkgd2Ugb25seSBzb3J0IGluIHRoZSBGUywgYW5kIGlmIHdlIG5lZWQgdG8u
CiAgICAgICAgICAgICBzdGQ6OnNvcnQobVN0YXRlLm1WYXJ5aW5ncy5iZWdpbigpLCBtU3RhdGUu
bVZhcnlpbmdzLmVuZCgpLCBDb21wYXJlU2hhZGVyVmFyKTsKICAgICAgICAgICAgIG1TdGF0ZS5t
QWN0aXZlT3V0cHV0VmFyaWFibGVzID0KLSAgICAgICAgICAgICAgICBHZXRBY3RpdmVTaGFkZXJW
YXJpYWJsZXMoU2hHZXRPdXRwdXRWYXJpYWJsZXMoY29tcGlsZXJIYW5kbGUpKTsKKyAgICAgICAg
ICAgICAgICBHZXRBY3RpdmVTaGFkZXJWYXJpYWJsZXMoc2g6OkdldE91dHB1dFZhcmlhYmxlcyhj
b21waWxlckhhbmRsZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAg
ZGVmYXVsdDoKQEAgLTM0MSwxMyArMzUxLDEzIEBAIHZvaWQgU2hhZGVyOjphZGRSZWYoKQogICAg
IG1SZWZDb3VudCsrOwogfQogCi12b2lkIFNoYWRlcjo6cmVsZWFzZSgpCit2b2lkIFNoYWRlcjo6
cmVsZWFzZShjb25zdCBDb250ZXh0ICpjb250ZXh0KQogewogICAgIG1SZWZDb3VudC0tOwogCiAg
ICAgaWYgKG1SZWZDb3VudCA9PSAwICYmIG1EZWxldGVTdGF0dXMpCiAgICAgewotICAgICAgICBt
UmVzb3VyY2VNYW5hZ2VyLT5kZWxldGVTaGFkZXIobUhhbmRsZSk7CisgICAgICAgIG1SZXNvdXJj
ZU1hbmFnZXItPmRlbGV0ZVNoYWRlcihjb250ZXh0LCBtSGFuZGxlKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TaGFkZXIuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TaGFkZXIuaAppbmRleCA3YTY3
NGE4OGYwOWZhM2NmMDkzODQ4YTYwYTI3NjU4OTY1M2Q3YTJmLi4zOWY3Yjk0YzFjNmJlNDkxNDU0
YWEzNzhkZjNmZjBiMzU0NDRhYzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvU2hhZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1NoYWRlci5oCkBAIC0zNSw3ICszNSw4IEBAIG5hbWVzcGFjZSBnbAogY2xhc3Mg
Q29tcGlsZXI7CiBjbGFzcyBDb250ZXh0U3RhdGU7CiBzdHJ1Y3QgTGltaXRhdGlvbnM7Ci1jbGFz
cyBSZXNvdXJjZU1hbmFnZXI7CitjbGFzcyBTaGFkZXJQcm9ncmFtTWFuYWdlcjsKK2NsYXNzIENv
bnRleHQ7CiAKIGNsYXNzIFNoYWRlclN0YXRlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7
CkBAIC04MiwxMiArODMsMTMgQEAgY2xhc3MgU2hhZGVyU3RhdGUgZmluYWwgOiBhbmdsZTo6Tm9u
Q29weWFibGUKIGNsYXNzIFNoYWRlciBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVibGlj
IExhYmVsZWRPYmplY3QKIHsKICAgcHVibGljOgotICAgIFNoYWRlcihSZXNvdXJjZU1hbmFnZXIg
Km1hbmFnZXIsCisgICAgU2hhZGVyKFNoYWRlclByb2dyYW1NYW5hZ2VyICptYW5hZ2VyLAogICAg
ICAgICAgICByeDo6R0xJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksCiAgICAgICAgICAgIGNvbnN0
IGdsOjpMaW1pdGF0aW9ucyAmcmVuZGVyZXJMaW1pdGF0aW9ucywKICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCiAgICAgICAgICAgIEdMdWludCBoYW5kbGUpOwogCisgICAgdm9pZCBkZXN0cm95KGNv
bnN0IENvbnRleHQgKmNvbnRleHQpIHt9CiAgICAgdmlydHVhbCB+U2hhZGVyKCk7CiAKICAgICB2
b2lkIHNldExhYmVsKGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJlbCkgb3ZlcnJpZGU7CkBAIC0xMTAs
MTEgKzExMiwxMSBAQCBjbGFzcyBTaGFkZXIgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUsIHB1
YmxpYyBMYWJlbGVkT2JqZWN0CiAgICAgdm9pZCBnZXRUcmFuc2xhdGVkU291cmNlKEdMc2l6ZWkg
YnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZmZXIpIGNvbnN0OwogICAgIHZvaWQg
Z2V0VHJhbnNsYXRlZFNvdXJjZVdpdGhEZWJ1Z0luZm8oR0xzaXplaSBidWZTaXplLCBHTHNpemVp
ICpsZW5ndGgsIGNoYXIgKmJ1ZmZlcikgY29uc3Q7CiAKLSAgICB2b2lkIGNvbXBpbGUoQ29tcGls
ZXIgKmNvbXBpbGVyKTsKKyAgICB2b2lkIGNvbXBpbGUoY29uc3QgQ29udGV4dCAqY29udGV4dCk7
CiAgICAgYm9vbCBpc0NvbXBpbGVkKCkgY29uc3QgeyByZXR1cm4gbUNvbXBpbGVkOyB9CiAKICAg
ICB2b2lkIGFkZFJlZigpOwotICAgIHZvaWQgcmVsZWFzZSgpOworICAgIHZvaWQgcmVsZWFzZShj
b25zdCBDb250ZXh0ICpjb250ZXh0KTsKICAgICB1bnNpZ25lZCBpbnQgZ2V0UmVmQ291bnQoKSBj
b25zdDsKICAgICBib29sIGlzRmxhZ2dlZEZvckRlbGV0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBm
bGFnRm9yRGVsZXRpb24oKTsKQEAgLTE0NCw3ICsxNDYsNyBAQCBjbGFzcyBTaGFkZXIgZmluYWwg
OiBhbmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBMYWJlbGVkT2JqZWN0CiAgICAgYm9vbCBtQ29t
cGlsZWQ7ICAgICAgICAgICAgIC8vIEluZGljYXRlcyBpZiB0aGlzIHNoYWRlciBoYXMgYmVlbiBz
dWNjZXNzZnVsbHkgY29tcGlsZWQKICAgICBzdGQ6OnN0cmluZyBtSW5mb0xvZzsKIAotICAgIFJl
c291cmNlTWFuYWdlciAqbVJlc291cmNlTWFuYWdlcjsKKyAgICBTaGFkZXJQcm9ncmFtTWFuYWdl
ciAqbVJlc291cmNlTWFuYWdlcjsKIH07CiAKIGJvb2wgQ29tcGFyZVNoYWRlclZhcihjb25zdCBz
aDo6U2hhZGVyVmFyaWFibGUgJngsIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmeSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3RhdGUuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N0YXRlLmNwcAppbmRleCBmN2Q0
ODUwOWYzZGM4ZjY4YWIwMTIwYjIwNjU2YjQ1ZDU4NDcyODFiLi40MDhhYTI2YjhiNzFmNmNiNjBi
MTY0YzdiYjZkMTFhMjM2MjA1M2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9TdGF0ZS5jcHAKQEAgLTExLDcgKzExLDcgQEAKICNpbmNsdWRlIDxsaW1pdHM+
CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKLSNpbmNsdWRlICJjb21tb24vQml0U2V0SXRlcmF0b3Iu
aCIKKyNpbmNsdWRlICJjb21tb24vYml0c2V0X3V0aWxzLmgiCiAjaW5jbHVkZSAiY29tbW9uL21h
dHJpeF91dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL0NvbnRleHQuaCIKQEAgLTUxLDYgKzUxLDcgQEAgU3RhdGU6OlN0YXRlKCkKICAgICAg
IG1HZW5lcmF0ZU1pcG1hcEhpbnQoR0xfTk9ORSksCiAgICAgICBtRnJhZ21lbnRTaGFkZXJEZXJp
dmF0aXZlSGludChHTF9OT05FKSwKICAgICAgIG1CaW5kR2VuZXJhdGVzUmVzb3VyY2UodHJ1ZSks
CisgICAgICBtQ2xpZW50QXJyYXlzRW5hYmxlZCh0cnVlKSwKICAgICAgIG1OZWFyWigwKSwKICAg
ICAgIG1GYXJaKDApLAogICAgICAgbVJlYWRGcmFtZWJ1ZmZlcihudWxscHRyKSwKQEAgLTYwLDIw
ICs2MSwyMyBAQCBTdGF0ZTo6U3RhdGUoKQogICAgICAgbUFjdGl2ZVNhbXBsZXIoMCksCiAgICAg
ICBtUHJpbWl0aXZlUmVzdGFydChmYWxzZSksCiAgICAgICBtTXVsdGlTYW1wbGluZyhmYWxzZSks
Ci0gICAgICBtU2FtcGxlQWxwaGFUb09uZShmYWxzZSkKKyAgICAgIG1TYW1wbGVBbHBoYVRvT25l
KGZhbHNlKSwKKyAgICAgIG1GcmFtZWJ1ZmZlclNSR0IodHJ1ZSksCisgICAgICBtUm9idXN0UmVz
b3VyY2VJbml0KGZhbHNlKQogewogfQogCiBTdGF0ZTo6flN0YXRlKCkKIHsKLSAgICByZXNldCgp
OwogfQogCiB2b2lkIFN0YXRlOjppbml0aWFsaXplKGNvbnN0IENhcHMgJmNhcHMsCiAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMsCi0gICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBjbGllbnRWZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBWZXJzaW9uICZjbGllbnRWZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGRlYnVnLAotICAgICAgICAgICAgICAgICAgICAgICBib29sIGJpbmRHZW5lcmF0ZXNSZXNv
dXJjZSkKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBiaW5kR2VuZXJhdGVzUmVzb3VyY2Us
CisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2xpZW50QXJyYXlzRW5hYmxlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCByb2J1c3RSZXNvdXJjZUluaXQpCiB7CiAgICAgbU1heERy
YXdCdWZmZXJzID0gY2Fwcy5tYXhEcmF3QnVmZmVyczsKICAgICBtTWF4Q29tYmluZWRUZXh0dXJl
SW1hZ2VVbml0cyA9IGNhcHMubWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0czsKQEAgLTE0MCw2
ICsxNDQsNyBAQCB2b2lkIFN0YXRlOjppbml0aWFsaXplKGNvbnN0IENhcHMgJmNhcHMsCiAgICAg
bUZyYWdtZW50U2hhZGVyRGVyaXZhdGl2ZUhpbnQgPSBHTF9ET05UX0NBUkU7CiAKICAgICBtQmlu
ZEdlbmVyYXRlc1Jlc291cmNlID0gYmluZEdlbmVyYXRlc1Jlc291cmNlOworICAgIG1DbGllbnRB
cnJheXNFbmFibGVkICAgPSBjbGllbnRBcnJheXNFbmFibGVkOwogCiAgICAgbUxpbmVXaWR0aCA9
IDEuMGY7CiAKQEAgLTE1OSwxNiArMTY0LDIzIEBAIHZvaWQgU3RhdGU6OmluaXRpYWxpemUoY29u
c3QgQ2FwcyAmY2FwcywKIAogICAgIG1WZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVzLnJlc2l6ZShj
YXBzLm1heFZlcnRleEF0dHJpYnV0ZXMpOwogCi0gICAgbVVuaWZvcm1CdWZmZXJzLnJlc2l6ZShj
YXBzLm1heENvbWJpbmVkVW5pZm9ybUJsb2Nrcyk7CisgICAgbVVuaWZvcm1CdWZmZXJzLnJlc2l6
ZShjYXBzLm1heFVuaWZvcm1CdWZmZXJCaW5kaW5ncyk7CiAKICAgICBtU2FtcGxlclRleHR1cmVz
W0dMX1RFWFRVUkVfMkRdLnJlc2l6ZShjYXBzLm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMp
OwogICAgIG1TYW1wbGVyVGV4dHVyZXNbR0xfVEVYVFVSRV9DVUJFX01BUF0ucmVzaXplKGNhcHMu
bWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgaWYgKGNsaWVudFZlcnNpb24gPj0g
MykKKyAgICBpZiAoY2xpZW50VmVyc2lvbiA+PSBWZXJzaW9uKDMsIDApKQogICAgIHsKICAgICAg
ICAgLy8gVE9ETzogVGhlc2UgY291bGQgYWxzbyBiZSBlbmFibGVkIHZpYSBleHRlbnNpb24KICAg
ICAgICAgbVNhbXBsZXJUZXh0dXJlc1tHTF9URVhUVVJFXzJEX0FSUkFZXS5yZXNpemUoY2Fwcy5t
YXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKICAgICAgICAgbVNhbXBsZXJUZXh0dXJlc1tH
TF9URVhUVVJFXzNEXS5yZXNpemUoY2Fwcy5tYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsK
ICAgICB9CisgICAgaWYgKGNsaWVudFZlcnNpb24gPj0gVmVyc2lvbigzLCAxKSkKKyAgICB7Cisg
ICAgICAgIG1TYW1wbGVyVGV4dHVyZXNbR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV0ucmVzaXpl
KGNhcHMubWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyk7CisKKyAgICAgICAgbUF0b21pY0Nv
dW50ZXJCdWZmZXJzLnJlc2l6ZShjYXBzLm1heEF0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5ncyk7
CisgICAgICAgIG1TaGFkZXJTdG9yYWdlQnVmZmVycy5yZXNpemUoY2Fwcy5tYXhTaGFkZXJTdG9y
YWdlQnVmZmVyQmluZGluZ3MpOworICAgIH0KICAgICBpZiAoZXh0ZW5zaW9ucy5lZ2xJbWFnZUV4
dGVybmFsIHx8IGV4dGVuc2lvbnMuZWdsU3RyZWFtQ29uc3VtZXJFeHRlcm5hbCkKICAgICB7CiAg
ICAgICAgIG1TYW1wbGVyVGV4dHVyZXNbR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVNdLnJlc2l6ZShj
YXBzLm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOwpAQCAtMjA1LDkgKzIxNywxMSBAQCB2
b2lkIFN0YXRlOjppbml0aWFsaXplKGNvbnN0IENhcHMgJmNhcHMsCiAgICAgbVBhdGhTdGVuY2ls
RnVuYyA9IEdMX0FMV0FZUzsKICAgICBtUGF0aFN0ZW5jaWxSZWYgID0gMDsKICAgICBtUGF0aFN0
ZW5jaWxNYXNrID0gc3RkOjpudW1lcmljX2xpbWl0czxHTHVpbnQ+OjptYXgoKTsKKworICAgIG1S
b2J1c3RSZXNvdXJjZUluaXQgPSByb2J1c3RSZXNvdXJjZUluaXQ7CiB9CiAKLXZvaWQgU3RhdGU6
OnJlc2V0KCkKK3ZvaWQgU3RhdGU6OnJlc2V0KGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7CiAg
ICAgZm9yIChUZXh0dXJlQmluZGluZ01hcDo6aXRlcmF0b3IgYmluZGluZ1ZlYyA9IG1TYW1wbGVy
VGV4dHVyZXMuYmVnaW4oKTsgYmluZGluZ1ZlYyAhPSBtU2FtcGxlclRleHR1cmVzLmVuZCgpOyBi
aW5kaW5nVmVjKyspCiAgICAgewpAQCAtMjIzLDExICsyMzcsMTIgQEAgdm9pZCBTdGF0ZTo6cmVz
ZXQoKQogICAgIH0KIAogICAgIG1BcnJheUJ1ZmZlci5zZXQoTlVMTCk7CisgICAgbURyYXdJbmRp
cmVjdEJ1ZmZlci5zZXQoTlVMTCk7CiAgICAgbVJlbmRlcmJ1ZmZlci5zZXQoTlVMTCk7CiAKICAg
ICBpZiAobVByb2dyYW0pCiAgICAgewotICAgICAgICBtUHJvZ3JhbS0+cmVsZWFzZSgpOworICAg
ICAgICBtUHJvZ3JhbS0+cmVsZWFzZShjb250ZXh0KTsKICAgICB9CiAgICAgbVByb2dyYW0gPSBO
VUxMOwogCkBAIC0yNTAsNiArMjY1LDE4IEBAIHZvaWQgU3RhdGU6OnJlc2V0KCkKICAgICBtUGFj
ay5waXhlbEJ1ZmZlci5zZXQoTlVMTCk7CiAgICAgbVVucGFjay5waXhlbEJ1ZmZlci5zZXQoTlVM
TCk7CiAKKyAgICBtR2VuZXJpY0F0b21pY0NvdW50ZXJCdWZmZXIuc2V0KG51bGxwdHIpOworICAg
IGZvciAoYXV0byAmYnVmIDogbUF0b21pY0NvdW50ZXJCdWZmZXJzKQorICAgIHsKKyAgICAgICAg
YnVmLnNldChudWxscHRyKTsKKyAgICB9CisKKyAgICBtR2VuZXJpY1NoYWRlclN0b3JhZ2VCdWZm
ZXIuc2V0KG51bGxwdHIpOworICAgIGZvciAoYXV0byAmYnVmIDogbVNoYWRlclN0b3JhZ2VCdWZm
ZXJzKQorICAgIHsKKyAgICAgICAgYnVmLnNldChudWxscHRyKTsKKyAgICB9CisKICAgICBtUHJv
Z3JhbSA9IE5VTEw7CiAKICAgICBhbmdsZTo6TWF0cml4PEdMZmxvYXQ+OjpzZXRUb0lkZW50aXR5
KG1QYXRoTWF0cml4UHJvaik7CkBAIC02MzEsMTIgKzY1OCwyMiBAQCB2b2lkIFN0YXRlOjpzZXRF
bmFibGVGZWF0dXJlKEdMZW51bSBmZWF0dXJlLCBib29sIGVuYWJsZWQpCiAgICAgICBjYXNlIEdM
X0RJVEhFUjogICAgICAgICAgICAgICAgICAgICAgICBzZXREaXRoZXIoZW5hYmxlZCk7ICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9J
TkRFWDogc2V0UHJpbWl0aXZlUmVzdGFydChlbmFibGVkKTsgICAgICBicmVhazsKICAgICAgIGNh
c2UgR0xfUkFTVEVSSVpFUl9ESVNDQVJEOiAgICAgICAgICAgIHNldFJhc3Rlcml6ZXJEaXNjYXJk
KGVuYWJsZWQpOyAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1NBTVBMRV9NQVNLOgorICAgICAg
ICAgIGlmIChlbmFibGVkKQorICAgICAgICAgIHsKKyAgICAgICAgICAgICAgLy8gRW5hYmxpbmcg
dGhpcyBmZWF0dXJlIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgICAgICAgICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdM
X0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUzoKICAgICAgICAgICBtRGVidWcuc2V0T3V0cHV0U3lu
Y2hyb25vdXMoZW5hYmxlZCk7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX0RFQlVH
X09VVFBVVDoKICAgICAgICAgICBtRGVidWcuc2V0T3V0cHV0RW5hYmxlZChlbmFibGVkKTsKICAg
ICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQ6CisgICAg
ICAgICAgc2V0RnJhbWVidWZmZXJTUkdCKGVuYWJsZWQpOworICAgICAgICAgIGJyZWFrOwogICAg
ICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
ICAgICB9CiB9CkBAIC02NTgsMTIgKzY5NSwyMSBAQCBib29sIFN0YXRlOjpnZXRFbmFibGVGZWF0
dXJlKEdMZW51bSBmZWF0dXJlKSBjb25zdAogICAgICAgY2FzZSBHTF9ESVRIRVI6ICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGlzRGl0aGVyRW5hYmxlZCgpOwogICAgICAgY2FzZSBHTF9Q
UklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWDogcmV0dXJuIGlzUHJpbWl0aXZlUmVzdGFydEVu
YWJsZWQoKTsKICAgICAgIGNhc2UgR0xfUkFTVEVSSVpFUl9ESVNDQVJEOiAgICAgICAgICAgIHJl
dHVybiBpc1Jhc3Rlcml6ZXJEaXNjYXJkRW5hYmxlZCgpOworICAgICAgY2FzZSBHTF9TQU1QTEVf
TUFTSzoKKyAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgY2FzZSBHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVM6CiAgICAgICAgICAgcmV0
dXJuIG1EZWJ1Zy5pc091dHB1dFN5bmNocm9ub3VzKCk7CiAgICAgICBjYXNlIEdMX0RFQlVHX09V
VFBVVDoKICAgICAgICAgICByZXR1cm4gbURlYnVnLmlzT3V0cHV0RW5hYmxlZCgpOwogICAgICAg
Y2FzZSBHTF9CSU5EX0dFTkVSQVRFU19SRVNPVVJDRV9DSFJPTUlVTToKICAgICAgICAgICByZXR1
cm4gaXNCaW5kR2VuZXJhdGVzUmVzb3VyY2VFbmFibGVkKCk7CisgICAgICBjYXNlIEdMX0NMSUVO
VF9BUlJBWVNfQU5HTEU6CisgICAgICAgICAgcmV0dXJuIGFyZUNsaWVudEFycmF5c0VuYWJsZWQo
KTsKKyAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQ6CisgICAgICAgICAgcmV0dXJu
IGdldEZyYW1lYnVmZmVyU1JHQigpOworICAgICAgY2FzZSBHTF9DT05URVhUX1JPQlVTVF9SRVNP
VVJDRV9JTklUSUFMSVpBVElPTl9BTkdMRToKKyAgICAgICAgICByZXR1cm4gbVJvYnVzdFJlc291
cmNlSW5pdDsKICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7IHJldHVybiBmYWxzZTsKICAgICB9CiB9CkBAIC02OTksNiArNzQ1LDExIEBA
IGJvb2wgU3RhdGU6OmlzQmluZEdlbmVyYXRlc1Jlc291cmNlRW5hYmxlZCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1CaW5kR2VuZXJhdGVzUmVzb3VyY2U7CiB9CiAKK2Jvb2wgU3RhdGU6OmFyZUNsaWVu
dEFycmF5c0VuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtQ2xpZW50QXJyYXlzRW5hYmxl
ZDsKK30KKwogdm9pZCBTdGF0ZTo6c2V0Vmlld3BvcnRQYXJhbXMoR0xpbnQgeCwgR0xpbnQgeSwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCiB7CiAgICAgbVZpZXdwb3J0LnggPSB4OwpA
QCAtNzQ5LDcgKzgwMCw3IEBAIEdMdWludCBTdGF0ZTo6Z2V0U2FtcGxlclRleHR1cmVJZCh1bnNp
Z25lZCBpbnQgc2FtcGxlciwgR0xlbnVtIHR5cGUpIGNvbnN0CiAgICAgcmV0dXJuIGl0LT5zZWNv
bmRbc2FtcGxlcl0uaWQoKTsKIH0KIAotdm9pZCBTdGF0ZTo6ZGV0YWNoVGV4dHVyZShjb25zdCBU
ZXh0dXJlTWFwICZ6ZXJvVGV4dHVyZXMsIEdMdWludCB0ZXh0dXJlKQordm9pZCBTdGF0ZTo6ZGV0
YWNoVGV4dHVyZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBUZXh0dXJlTWFwICZ6ZXJv
VGV4dHVyZXMsIEdMdWludCB0ZXh0dXJlKQogewogICAgIC8vIFRleHR1cmVzIGhhdmUgYSBkZXRh
Y2ggbWV0aG9kIG9uIFN0YXRlIHJhdGhlciB0aGFuIGEgc2ltcGxlCiAgICAgLy8gcmVtb3ZlQmlu
ZGluZywgYmVjYXVzZSB0aGUgemVyby9udWxsIHRleHR1cmUgb2JqZWN0cyBhcmUgbWFuYWdlZApA
QCAtNzg0LDEyICs4MzUsMTIgQEAgdm9pZCBTdGF0ZTo6ZGV0YWNoVGV4dHVyZShjb25zdCBUZXh0
dXJlTWFwICZ6ZXJvVGV4dHVyZXMsIEdMdWludCB0ZXh0dXJlKQogCiAgICAgaWYgKG1SZWFkRnJh
bWVidWZmZXIpCiAgICAgewotICAgICAgICBtUmVhZEZyYW1lYnVmZmVyLT5kZXRhY2hUZXh0dXJl
KHRleHR1cmUpOworICAgICAgICBtUmVhZEZyYW1lYnVmZmVyLT5kZXRhY2hUZXh0dXJlKGNvbnRl
eHQsIHRleHR1cmUpOwogICAgIH0KIAogICAgIGlmIChtRHJhd0ZyYW1lYnVmZmVyKQogICAgIHsK
LSAgICAgICAgbURyYXdGcmFtZWJ1ZmZlci0+ZGV0YWNoVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAg
ICAgbURyYXdGcmFtZWJ1ZmZlci0+ZGV0YWNoVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlKTsKICAg
ICB9CiB9CiAKQEAgLTg1Myw3ICs5MDQsNyBAQCBSZW5kZXJidWZmZXIgKlN0YXRlOjpnZXRDdXJy
ZW50UmVuZGVyYnVmZmVyKCkgY29uc3QKICAgICByZXR1cm4gbVJlbmRlcmJ1ZmZlci5nZXQoKTsK
IH0KIAotdm9pZCBTdGF0ZTo6ZGV0YWNoUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIp
Cit2b2lkIFN0YXRlOjpkZXRhY2hSZW5kZXJidWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwg
R0x1aW50IHJlbmRlcmJ1ZmZlcikKIHsKICAgICAvLyBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlv
biA0LjQgcGFnZSAxMDk6CiAgICAgLy8gSWYgYSByZW5kZXJidWZmZXIgdGhhdCBpcyBjdXJyZW50
bHkgYm91bmQgdG8gUkVOREVSQlVGRkVSIGlzIGRlbGV0ZWQsIGl0IGlzIGFzIHRob3VnaCBCaW5k
UmVuZGVyYnVmZmVyCkBAIC04NzQsMTIgKzkyNSwxMiBAQCB2b2lkIFN0YXRlOjpkZXRhY2hSZW5k
ZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcikKIAogICAgIGlmIChyZWFkRnJhbWVidWZmZXIp
CiAgICAgewotICAgICAgICByZWFkRnJhbWVidWZmZXItPmRldGFjaFJlbmRlcmJ1ZmZlcihyZW5k
ZXJidWZmZXIpOworICAgICAgICByZWFkRnJhbWVidWZmZXItPmRldGFjaFJlbmRlcmJ1ZmZlcihj
b250ZXh0LCByZW5kZXJidWZmZXIpOwogICAgIH0KIAogICAgIGlmIChkcmF3RnJhbWVidWZmZXIg
JiYgZHJhd0ZyYW1lYnVmZmVyICE9IHJlYWRGcmFtZWJ1ZmZlcikKICAgICB7Ci0gICAgICAgIGRy
YXdGcmFtZWJ1ZmZlci0+ZGV0YWNoUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CisgICAgICAg
IGRyYXdGcmFtZWJ1ZmZlci0+ZGV0YWNoUmVuZGVyYnVmZmVyKGNvbnRleHQsIHJlbmRlcmJ1ZmZl
cik7CiAgICAgfQogCiB9CkBAIC05OTcsMTMgKzEwNDgsNTIgQEAgYm9vbCBTdGF0ZTo6cmVtb3Zl
VmVydGV4QXJyYXlCaW5kaW5nKEdMdWludCB2ZXJ0ZXhBcnJheSkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgU3RhdGU6OnNldFByb2dyYW0oUHJvZ3JhbSAqbmV3UHJvZ3JhbSkKK3ZvaWQg
U3RhdGU6OnNldEVsZW1lbnRBcnJheUJ1ZmZlcihCdWZmZXIgKmJ1ZmZlcikKK3sKKyAgICBnZXRW
ZXJ0ZXhBcnJheSgpLT5zZXRFbGVtZW50QXJyYXlCdWZmZXIoYnVmZmVyKTsKKyAgICBtRGlydHlP
YmplY3RzLnNldChESVJUWV9PQkpFQ1RfVkVSVEVYX0FSUkFZKTsKK30KKwordm9pZCBTdGF0ZTo6
YmluZFZlcnRleEJ1ZmZlcihHTHVpbnQgYmluZGluZ0luZGV4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBCdWZmZXIgKmJvdW5kQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludHB0ciBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgc3RyaWRlKQoreworICAgIGdldFZlcnRleEFycmF5KCktPmJpbmRWZXJ0ZXhCdWZmZXIoYmlu
ZGluZ0luZGV4LCBib3VuZEJ1ZmZlciwgb2Zmc2V0LCBzdHJpZGUpOworICAgIG1EaXJ0eU9iamVj
dHMuc2V0KERJUlRZX09CSkVDVF9WRVJURVhfQVJSQVkpOworfQorCit2b2lkIFN0YXRlOjpzZXRW
ZXJ0ZXhBdHRyaWJCaW5kaW5nKEdMdWludCBhdHRyaWJJbmRleCwgR0x1aW50IGJpbmRpbmdJbmRl
eCkKK3sKKyAgICBnZXRWZXJ0ZXhBcnJheSgpLT5zZXRWZXJ0ZXhBdHRyaWJCaW5kaW5nKGF0dHJp
YkluZGV4LCBiaW5kaW5nSW5kZXgpOworICAgIG1EaXJ0eU9iamVjdHMuc2V0KERJUlRZX09CSkVD
VF9WRVJURVhfQVJSQVkpOworfQorCit2b2lkIFN0YXRlOjpzZXRWZXJ0ZXhBdHRyaWJGb3JtYXQo
R0x1aW50IGF0dHJpYkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBub3JtYWxpemVkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHVyZUludGVnZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJlbGF0aXZlT2Zmc2V0KQoreworICAg
IGdldFZlcnRleEFycmF5KCktPnNldFZlcnRleEF0dHJpYkZvcm1hdChhdHRyaWJJbmRleCwgc2l6
ZSwgdHlwZSwgbm9ybWFsaXplZCwgcHVyZUludGVnZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlT2Zmc2V0KTsKKyAgICBtRGlydHlPYmplY3Rz
LnNldChESVJUWV9PQkpFQ1RfVkVSVEVYX0FSUkFZKTsKK30KKwordm9pZCBTdGF0ZTo6c2V0VmVy
dGV4QmluZGluZ0Rpdmlzb3IoR0x1aW50IGJpbmRpbmdJbmRleCwgR0x1aW50IGRpdmlzb3IpCit7
CisgICAgZ2V0VmVydGV4QXJyYXkoKS0+c2V0VmVydGV4QmluZGluZ0Rpdmlzb3IoYmluZGluZ0lu
ZGV4LCBkaXZpc29yKTsKKyAgICBtRGlydHlPYmplY3RzLnNldChESVJUWV9PQkpFQ1RfVkVSVEVY
X0FSUkFZKTsKK30KKwordm9pZCBTdGF0ZTo6c2V0UHJvZ3JhbShjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBQcm9ncmFtICpuZXdQcm9ncmFtKQogewogICAgIGlmIChtUHJvZ3JhbSAhPSBuZXdQcm9n
cmFtKQogICAgIHsKICAgICAgICAgaWYgKG1Qcm9ncmFtKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBtUHJvZ3JhbS0+cmVsZWFzZSgpOworICAgICAgICAgICAgbVByb2dyYW0tPnJlbGVhc2UoY29u
dGV4dCk7CiAgICAgICAgIH0KIAogICAgICAgICBtUHJvZ3JhbSA9IG5ld1Byb2dyYW07CkBAIC0x
MTA1LDYgKzExOTUsMTIgQEAgR0x1aW50IFN0YXRlOjpnZXRBcnJheUJ1ZmZlcklkKCkgY29uc3QK
ICAgICByZXR1cm4gbUFycmF5QnVmZmVyLmlkKCk7CiB9CiAKK3ZvaWQgU3RhdGU6OnNldERyYXdJ
bmRpcmVjdEJ1ZmZlckJpbmRpbmcoQnVmZmVyICpidWZmZXIpCit7CisgICAgbURyYXdJbmRpcmVj
dEJ1ZmZlci5zZXQoYnVmZmVyKTsKKyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfRFJBV19J
TkRJUkVDVF9CVUZGRVJfQklORElORyk7Cit9CisKIHZvaWQgU3RhdGU6OnNldEdlbmVyaWNVbmlm
b3JtQnVmZmVyQmluZGluZyhCdWZmZXIgKmJ1ZmZlcikKIHsKICAgICBtR2VuZXJpY1VuaWZvcm1C
dWZmZXIuc2V0KGJ1ZmZlcik7CkBAIC0xMTIxLDYgKzEyMTcsNDYgQEAgY29uc3QgT2Zmc2V0Qmlu
ZGluZ1BvaW50ZXI8QnVmZmVyPiAmU3RhdGU6OmdldEluZGV4ZWRVbmlmb3JtQnVmZmVyKHNpemVf
dCBpbmRleCkKICAgICByZXR1cm4gbVVuaWZvcm1CdWZmZXJzW2luZGV4XTsKIH0KIAordm9pZCBT
dGF0ZTo6c2V0R2VuZXJpY0F0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5nKEJ1ZmZlciAqYnVmZmVy
KQoreworICAgIG1HZW5lcmljQXRvbWljQ291bnRlckJ1ZmZlci5zZXQoYnVmZmVyKTsKK30KKwor
dm9pZCBTdGF0ZTo6c2V0SW5kZXhlZEF0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5nKEdMdWludCBp
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
dWZmZXIgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKQoreworICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDxzaXplX3Q+KGluZGV4KSA8IG1BdG9taWNDb3VudGVyQnVmZmVycy5zaXplKCkpOworICAg
IG1BdG9taWNDb3VudGVyQnVmZmVyc1tpbmRleF0uc2V0KGJ1ZmZlciwgb2Zmc2V0LCBzaXplKTsK
K30KKworY29uc3QgT2Zmc2V0QmluZGluZ1BvaW50ZXI8QnVmZmVyPiAmU3RhdGU6OmdldEluZGV4
ZWRBdG9taWNDb3VudGVyQnVmZmVyKHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtQXRvbWljQ291bnRlckJ1ZmZlcnMuc2l6ZSgp
KTsKKyAgICByZXR1cm4gbUF0b21pY0NvdW50ZXJCdWZmZXJzW2luZGV4XTsKK30KKwordm9pZCBT
dGF0ZTo6c2V0R2VuZXJpY1NoYWRlclN0b3JhZ2VCdWZmZXJCaW5kaW5nKEJ1ZmZlciAqYnVmZmVy
KQoreworICAgIG1HZW5lcmljU2hhZGVyU3RvcmFnZUJ1ZmZlci5zZXQoYnVmZmVyKTsKK30KKwor
dm9pZCBTdGF0ZTo6c2V0SW5kZXhlZFNoYWRlclN0b3JhZ2VCdWZmZXJCaW5kaW5nKEdMdWludCBp
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBC
dWZmZXIgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKQoreworICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDxzaXplX3Q+KGluZGV4KSA8IG1TaGFkZXJTdG9yYWdlQnVmZmVycy5zaXplKCkpOworICAg
IG1TaGFkZXJTdG9yYWdlQnVmZmVyc1tpbmRleF0uc2V0KGJ1ZmZlciwgb2Zmc2V0LCBzaXplKTsK
K30KKworY29uc3QgT2Zmc2V0QmluZGluZ1BvaW50ZXI8QnVmZmVyPiAmU3RhdGU6OmdldEluZGV4
ZWRTaGFkZXJTdG9yYWdlQnVmZmVyKHNpemVfdCBpbmRleCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtU2hhZGVyU3RvcmFnZUJ1ZmZlcnMuc2l6ZSgp
KTsKKyAgICByZXR1cm4gbVNoYWRlclN0b3JhZ2VCdWZmZXJzW2luZGV4XTsKK30KKwogdm9pZCBT
dGF0ZTo6c2V0Q29weVJlYWRCdWZmZXJCaW5kaW5nKEJ1ZmZlciAqYnVmZmVyKQogewogICAgIG1D
b3B5UmVhZEJ1ZmZlci5zZXQoYnVmZmVyKTsKQEAgLTExNTUsMTUgKzEyOTEsMjIgQEAgQnVmZmVy
ICpTdGF0ZTo6Z2V0VGFyZ2V0QnVmZmVyKEdMZW51bSB0YXJnZXQpIGNvbnN0CiAgICAgICBjYXNl
IEdMX1BJWEVMX1VOUEFDS19CVUZGRVI6ICAgICAgIHJldHVybiBtVW5wYWNrLnBpeGVsQnVmZmVy
LmdldCgpOwogICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSOiByZXR1cm4g
bVRyYW5zZm9ybUZlZWRiYWNrLT5nZXRHZW5lcmljQnVmZmVyKCkuZ2V0KCk7CiAgICAgICBjYXNl
IEdMX1VOSUZPUk1fQlVGRkVSOiAgICAgICAgICAgIHJldHVybiBtR2VuZXJpY1VuaWZvcm1CdWZm
ZXIuZ2V0KCk7CisgICAgICBjYXNlIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUjoKKyAgICAgICAg
ICByZXR1cm4gbUdlbmVyaWNBdG9taWNDb3VudGVyQnVmZmVyLmdldCgpOworICAgICAgY2FzZSBH
TF9TSEFERVJfU1RPUkFHRV9CVUZGRVI6CisgICAgICAgICAgcmV0dXJuIG1HZW5lcmljU2hhZGVy
U3RvcmFnZUJ1ZmZlci5nZXQoKTsKKyAgICAgIGNhc2UgR0xfRFJBV19JTkRJUkVDVF9CVUZGRVI6
CisgICAgICAgICAgcmV0dXJuIG1EcmF3SW5kaXJlY3RCdWZmZXIuZ2V0KCk7CiAgICAgICBkZWZh
dWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIH0KIAog
dm9pZCBTdGF0ZTo6ZGV0YWNoQnVmZmVyKEdMdWludCBidWZmZXJOYW1lKQogewotICAgIEJpbmRp
bmdQb2ludGVyPEJ1ZmZlcj4gKmJ1ZmZlcnNbXSA9IHsmbUFycmF5QnVmZmVyLCAgICAgICAgJm1D
b3B5UmVhZEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jm1Db3B5V3JpdGVCdWZmZXIsICAgICZtUGFjay5waXhlbEJ1ZmZlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1VbnBhY2sucGl4ZWxCdWZmZXIsICZtR2VuZXJp
Y1VuaWZvcm1CdWZmZXJ9OworICAgIEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gKmJ1ZmZlcnNbXSA9
IHsKKyAgICAgICAgJm1BcnJheUJ1ZmZlciwgICAgICAgICZtR2VuZXJpY0F0b21pY0NvdW50ZXJC
dWZmZXIsICZtQ29weVJlYWRCdWZmZXIsCisgICAgICAgICZtQ29weVdyaXRlQnVmZmVyLCAgICAm
bURyYXdJbmRpcmVjdEJ1ZmZlciwgICAgICAgICAmbVBhY2sucGl4ZWxCdWZmZXIsCisgICAgICAg
ICZtVW5wYWNrLnBpeGVsQnVmZmVyLCAmbUdlbmVyaWNVbmlmb3JtQnVmZmVyLCAgICAgICAmbUdl
bmVyaWNTaGFkZXJTdG9yYWdlQnVmZmVyfTsKICAgICBmb3IgKGF1dG8gYnVmZmVyIDogYnVmZmVy
cykKICAgICB7CiAgICAgICAgIGlmIChidWZmZXItPmlkKCkgPT0gYnVmZmVyTmFtZSkKQEAgLTE0
NTYsNiArMTU5OSwxNyBAQCBHTHVpbnQgU3RhdGU6OmdldFBhdGhTdGVuY2lsTWFzaygpIGNvbnN0
CiAgICAgcmV0dXJuIG1QYXRoU3RlbmNpbE1hc2s7CiB9CiAKK3ZvaWQgU3RhdGU6OnNldEZyYW1l
YnVmZmVyU1JHQihib29sIHNSR0IpCit7CisgICAgbUZyYW1lYnVmZmVyU1JHQiA9IHNSR0I7Cisg
ICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0ZSQU1FQlVGRkVSX1NSR0IpOworfQorCitib29s
IFN0YXRlOjpnZXRGcmFtZWJ1ZmZlclNSR0IoKSBjb25zdAoreworICAgIHJldHVybiBtRnJhbWVi
dWZmZXJTUkdCOworfQorCiB2b2lkIFN0YXRlOjpnZXRCb29sZWFudihHTGVudW0gcG5hbWUsIEdM
Ym9vbGVhbiAqcGFyYW1zKQogewogICAgIHN3aXRjaCAocG5hbWUpCkBAIC0xNTAwLDYgKzE2NTQs
MTUgQEAgdm9pZCBTdGF0ZTo6Z2V0Qm9vbGVhbnYoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnBh
cmFtcykKICAgICAgIGNhc2UgR0xfQklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU06CiAg
ICAgICAgICAgKnBhcmFtcyA9IGlzQmluZEdlbmVyYXRlc1Jlc291cmNlRW5hYmxlZCgpID8gR0xf
VFJVRSA6IEdMX0ZBTFNFOwogICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9DTElFTlRf
QVJSQVlTX0FOR0xFOgorICAgICAgICAgICpwYXJhbXMgPSBhcmVDbGllbnRBcnJheXNFbmFibGVk
KCkgPyBHTF9UUlVFIDogR0xfRkFMU0U7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdM
X0ZSQU1FQlVGRkVSX1NSR0JfRVhUOgorICAgICAgICAgICpwYXJhbXMgPSBnZXRGcmFtZWJ1ZmZl
clNSR0IoKSA/IEdMX1RSVUUgOiBHTF9GQUxTRTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNh
c2UgR0xfQ09OVEVYVF9ST0JVU1RfUkVTT1VSQ0VfSU5JVElBTElaQVRJT05fQU5HTEU6CisgICAg
ICAgICAgKnBhcmFtcyA9IG1Sb2J1c3RSZXNvdXJjZUluaXQgPyBHTF9UUlVFIDogR0xfRkFMU0U7
CisgICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OgogICAgICAgICBVTlJFQUNIQUJMRSgp
OwogICAgICAgICBicmVhazsKQEAgLTE1NDksNyArMTcxMiw3IEBAIHZvaWQgU3RhdGU6OmdldEZs
b2F0dihHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykKICAgICB9CiB9CiAKLXZvaWQgU3Rh
dGU6OmdldEludGVnZXJ2KGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0YSwgR0xlbnVtIHBuYW1lLCBH
TGludCAqcGFyYW1zKQordm9pZCBTdGF0ZTo6Z2V0SW50ZWdlcnYoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogewogICAgIGlmIChwbmFtZSA+PSBH
TF9EUkFXX0JVRkZFUjBfRVhUICYmIHBuYW1lIDw9IEdMX0RSQVdfQlVGRkVSMTVfRVhUKQogICAg
IHsKQEAgLTE1NjgsNiArMTczMSw5IEBAIHZvaWQgU3RhdGU6OmdldEludGVnZXJ2KGNvbnN0IENv
bnRleHRTdGF0ZSAmZGF0YSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogICAgIHN3aXRj
aCAocG5hbWUpCiAgICAgewogICAgICAgY2FzZSBHTF9BUlJBWV9CVUZGRVJfQklORElORzogICAg
ICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbUFycmF5QnVmZmVyLmlkKCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0RSQVdfSU5ESVJFQ1RfQlVG
RkVSX0JJTkRJTkc6CisgICAgICAgICAgKnBhcmFtcyA9IG1EcmF3SW5kaXJlY3RCdWZmZXIuaWQo
KTsKKyAgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJf
QklORElORzogICAgICAgICAgICAgKnBhcmFtcyA9IGdldFZlcnRleEFycmF5KCktPmdldEVsZW1l
bnRBcnJheUJ1ZmZlcigpLmlkKCk7IGJyZWFrOwogICAgICAgICAvL2Nhc2UgR0xfRlJBTUVCVUZG
RVJfQklORElORzogICAgICAgICAgICAgICAgICAgIC8vIG5vdyBlcXVpdmFsZW50IHRvIEdMX0RS
QVdfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRQogICAgICAgY2FzZSBHTF9EUkFXX0ZSQU1FQlVG
RkVSX0JJTkRJTkdfQU5HTEU6ICAgICAgICAgICAqcGFyYW1zID0gbURyYXdGcmFtZWJ1ZmZlci0+
aWQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNjMzLDE0ICsxNzk5LDE0
IEBAIHZvaWQgU3RhdGU6OmdldEludGVnZXJ2KGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0YSwgR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogICAgICAgY2FzZSBHTF9TQU1QTEVTOgogICAgICAg
ICB7CiAgICAgICAgICAgICBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbURyYXdGcmFt
ZWJ1ZmZlcjsKLSAgICAgICAgICAgIGlmIChmcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXMoZGF0YSkg
PT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgICAgICAgICBpZiAoZnJhbWVidWZmZXIt
PmNoZWNrU3RhdHVzKGNvbnRleHQpID09IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQogICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgIHN3aXRjaCAocG5hbWUpCiAgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgY2FzZSBHTF9TQU1QTEVfQlVGRkVSUzoKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKGRhdGEpICE9IDApCi0gICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICpwYXJhbXMgPSAxOworICAg
ICAgICAgICAgICAgICAgICAgIGlmIChmcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcyhjb250ZXh0KSAh
PSAwKQorICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
KnBhcmFtcyA9IDE7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgICAgICB7CkBAIC0xNjQ4LDggKzE4MTQsOCBAQCB2b2lkIFN0
YXRlOjpnZXRJbnRlZ2Vydihjb25zdCBDb250ZXh0U3RhdGUgJmRhdGEsIEdMZW51bSBwbmFtZSwg
R0xpbnQgKnBhcmFtcykKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfU0FNUExFUzoKLSAgICAgICAgICAg
ICAgICAgICAgKnBhcmFtcyA9IGZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKGRhdGEpOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gZnJh
bWVidWZmZXItPmdldFNhbXBsZXMoY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQpA
QCAtMTc5NCw2ICsxOTYwLDEyIEBAIHZvaWQgU3RhdGU6OmdldEludGVnZXJ2KGNvbnN0IENvbnRl
eHRTdGF0ZSAmZGF0YSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogICAgICAgY2FzZSBH
TF9DT1ZFUkFHRV9NT0RVTEFUSU9OX0NIUk9NSVVNOgogICAgICAgICAgICpwYXJhbXMgPSBzdGF0
aWNfY2FzdDxHTGludD4obUNvdmVyYWdlTW9kdWxhdGlvbik7CiAgICAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICAgICpw
YXJhbXMgPSBtR2VuZXJpY0F0b21pY0NvdW50ZXJCdWZmZXIuaWQoKTsKKyAgICAgICAgICBicmVh
azsKKyAgICAgIGNhc2UgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkc6CisgICAgICAg
ICAgKnBhcmFtcyA9IG1HZW5lcmljU2hhZGVyU3RvcmFnZUJ1ZmZlci5pZCgpOworICAgICAgICAg
IGJyZWFrOwogICAgICAgZGVmYXVsdDoKICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAg
YnJlYWs7CkBAIC0xODIxLDE3ICsxOTkzLDM3IEBAIHZvaWQgU3RhdGU6OmdldEludGVnZXJpX3Yo
R0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGludCAqZGF0YSkKICAgICBzd2l0Y2ggKHRh
cmdldCkKICAgICB7CiAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklO
RElORzoKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpIDwgbVRyYW5zZm9y
bUZlZWRiYWNrLT5nZXRJbmRleGVkQnVmZmVyQ291bnQoKSkKLSAgICAgICAgewotICAgICAgICAg
ICAgKmRhdGEgPSBtVHJhbnNmb3JtRmVlZGJhY2stPmdldEluZGV4ZWRCdWZmZXIoaW5kZXgpLmlk
KCk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7CisgICAgICAgICAgQVNTRVJUKHN0YXRpY19j
YXN0PHNpemVfdD4oaW5kZXgpIDwgbVRyYW5zZm9ybUZlZWRiYWNrLT5nZXRJbmRleGVkQnVmZmVy
Q291bnQoKSk7CisgICAgICAgICAgKmRhdGEgPSBtVHJhbnNmb3JtRmVlZGJhY2stPmdldEluZGV4
ZWRCdWZmZXIoaW5kZXgpLmlkKCk7CisgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX1VO
SUZPUk1fQlVGRkVSX0JJTkRJTkc6Ci0gICAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGlu
ZGV4KSA8IG1Vbmlmb3JtQnVmZmVycy5zaXplKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgICpk
YXRhID0gbVVuaWZvcm1CdWZmZXJzW2luZGV4XS5pZCgpOwotICAgICAgICB9Ci0gICAgICAgIGJy
ZWFrOworICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1Vbmlm
b3JtQnVmZmVycy5zaXplKCkpOworICAgICAgICAgICpkYXRhID0gbVVuaWZvcm1CdWZmZXJzW2lu
ZGV4XS5pZCgpOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9BVE9NSUNfQ09VTlRF
Ul9CVUZGRVJfQklORElORzoKKyAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90Pihp
bmRleCkgPCBtQXRvbWljQ291bnRlckJ1ZmZlcnMuc2l6ZSgpKTsKKyAgICAgICAgICAqZGF0YSA9
IG1BdG9taWNDb3VudGVyQnVmZmVyc1tpbmRleF0uaWQoKTsKKyAgICAgICAgICBicmVhazsKKyAg
ICAgIGNhc2UgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkc6CisgICAgICAgICAgQVNT
RVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpIDwgbVNoYWRlclN0b3JhZ2VCdWZmZXJzLnNp
emUoKSk7CisgICAgICAgICAgKmRhdGEgPSBtU2hhZGVyU3RvcmFnZUJ1ZmZlcnNbaW5kZXhdLmlk
KCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1ZFUlRFWF9CSU5ESU5HX0JVRkZF
UjoKKyAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtVmVydGV4
QXJyYXktPmdldE1heEJpbmRpbmdzKCkpOworICAgICAgICAgICpkYXRhID0gbVZlcnRleEFycmF5
LT5nZXRWZXJ0ZXhCaW5kaW5nKGluZGV4KS5idWZmZXIuaWQoKTsKKyAgICAgICAgICBicmVhazsK
KyAgICAgIGNhc2UgR0xfVkVSVEVYX0JJTkRJTkdfRElWSVNPUjoKKyAgICAgICAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtVmVydGV4QXJyYXktPmdldE1heEJpbmRpbmdz
KCkpOworICAgICAgICAgICpkYXRhID0gbVZlcnRleEFycmF5LT5nZXRWZXJ0ZXhCaW5kaW5nKGlu
ZGV4KS5kaXZpc29yOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9WRVJURVhfQklO
RElOR19PRkZTRVQ6CisgICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgp
IDwgbVZlcnRleEFycmF5LT5nZXRNYXhCaW5kaW5ncygpKTsKKyAgICAgICAgICAqZGF0YSA9IHN0
YXRpY19jYXN0PEdMdWludD4obVZlcnRleEFycmF5LT5nZXRWZXJ0ZXhCaW5kaW5nKGluZGV4KS5v
ZmZzZXQpOworICAgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9WRVJURVhfQklORElOR19T
VFJJREU6CisgICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpIDwgbVZl
cnRleEFycmF5LT5nZXRNYXhCaW5kaW5ncygpKTsKKyAgICAgICAgICAqZGF0YSA9IG1WZXJ0ZXhB
cnJheS0+Z2V0VmVydGV4QmluZGluZyhpbmRleCkuc3RyaWRlOworICAgICAgICAgIGJyZWFrOwog
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgIGJyZWFr
OwpAQCAtMTg0MywyOSArMjAzNSwzNyBAQCB2b2lkIFN0YXRlOjpnZXRJbnRlZ2VyNjRpX3YoR0xl
bnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGludDY0ICpkYXRhKQogICAgIHN3aXRjaCAodGFy
Z2V0KQogICAgIHsKICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFS
VDoKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpIDwgbVRyYW5zZm9ybUZl
ZWRiYWNrLT5nZXRJbmRleGVkQnVmZmVyQ291bnQoKSkKLSAgICAgICAgewotICAgICAgICAgICAg
KmRhdGEgPSBtVHJhbnNmb3JtRmVlZGJhY2stPmdldEluZGV4ZWRCdWZmZXIoaW5kZXgpLmdldE9m
ZnNldCgpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgIEFTU0VSVChzdGF0
aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1UcmFuc2Zvcm1GZWVkYmFjay0+Z2V0SW5kZXhlZEJ1
ZmZlckNvdW50KCkpOworICAgICAgICAgICpkYXRhID0gbVRyYW5zZm9ybUZlZWRiYWNrLT5nZXRJ
bmRleGVkQnVmZmVyKGluZGV4KS5nZXRPZmZzZXQoKTsKKyAgICAgICAgICBicmVhazsKICAgICAg
IGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TSVpFOgotICAgICAgICBpZiAoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtVHJhbnNmb3JtRmVlZGJhY2stPmdldEluZGV4ZWRC
dWZmZXJDb3VudCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICAqZGF0YSA9IG1UcmFuc2Zvcm1G
ZWVkYmFjay0+Z2V0SW5kZXhlZEJ1ZmZlcihpbmRleCkuZ2V0U2l6ZSgpOwotICAgICAgICB9Ci0g
ICAgICAgIGJyZWFrOworICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4
KSA8IG1UcmFuc2Zvcm1GZWVkYmFjay0+Z2V0SW5kZXhlZEJ1ZmZlckNvdW50KCkpOworICAgICAg
ICAgICpkYXRhID0gbVRyYW5zZm9ybUZlZWRiYWNrLT5nZXRJbmRleGVkQnVmZmVyKGluZGV4KS5n
ZXRTaXplKCk7CisgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX1VOSUZPUk1fQlVGRkVS
X1NUQVJUOgotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtVW5pZm9y
bUJ1ZmZlcnMuc2l6ZSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICAqZGF0YSA9IG1Vbmlmb3Jt
QnVmZmVyc1tpbmRleF0uZ2V0T2Zmc2V0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpIDwgbVVuaWZvcm1CdWZm
ZXJzLnNpemUoKSk7CisgICAgICAgICAgKmRhdGEgPSBtVW5pZm9ybUJ1ZmZlcnNbaW5kZXhdLmdl
dE9mZnNldCgpOworICAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHTF9VTklGT1JNX0JVRkZF
Ul9TSVpFOgotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtVW5pZm9y
bUJ1ZmZlcnMuc2l6ZSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICAqZGF0YSA9IG1Vbmlmb3Jt
QnVmZmVyc1tpbmRleF0uZ2V0U2l6ZSgpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAg
ICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1Vbmlmb3JtQnVmZmVy
cy5zaXplKCkpOworICAgICAgICAgICpkYXRhID0gbVVuaWZvcm1CdWZmZXJzW2luZGV4XS5nZXRT
aXplKCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0FUT01JQ19DT1VOVEVSX0JV
RkZFUl9TVEFSVDoKKyAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkg
PCBtQXRvbWljQ291bnRlckJ1ZmZlcnMuc2l6ZSgpKTsKKyAgICAgICAgICAqZGF0YSA9IG1BdG9t
aWNDb3VudGVyQnVmZmVyc1tpbmRleF0uZ2V0T2Zmc2V0KCk7CisgICAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFOgorICAgICAgICAgIEFTU0VS
VChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1BdG9taWNDb3VudGVyQnVmZmVycy5zaXpl
KCkpOworICAgICAgICAgICpkYXRhID0gbUF0b21pY0NvdW50ZXJCdWZmZXJzW2luZGV4XS5nZXRT
aXplKCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1NIQURFUl9TVE9SQUdFX0JV
RkZFUl9TVEFSVDoKKyAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkg
PCBtU2hhZGVyU3RvcmFnZUJ1ZmZlcnMuc2l6ZSgpKTsKKyAgICAgICAgICAqZGF0YSA9IG1TaGFk
ZXJTdG9yYWdlQnVmZmVyc1tpbmRleF0uZ2V0T2Zmc2V0KCk7CisgICAgICAgICAgYnJlYWs7Cisg
ICAgICBjYXNlIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TSVpFOgorICAgICAgICAgIEFTU0VS
VChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1TaGFkZXJTdG9yYWdlQnVmZmVycy5zaXpl
KCkpOworICAgICAgICAgICpkYXRhID0gbVNoYWRlclN0b3JhZ2VCdWZmZXJzW2luZGV4XS5nZXRT
aXplKCk7CisgICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OgogICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CiAgICAgICAgICAgYnJlYWs7CkBAIC0xODgxLDEzICsyMDgxLDE0IEBAIGJvb2wg
U3RhdGU6Omhhc01hcHBlZEJ1ZmZlcihHTGVudW0gdGFyZ2V0KSBjb25zdAogewogICAgIGlmICh0
YXJnZXQgPT0gR0xfQVJSQVlfQlVGRkVSKQogICAgIHsKLSAgICAgICAgY29uc3QgVmVydGV4QXJy
YXkgKnZhbyA9IGdldFZlcnRleEFycmF5KCk7CisgICAgICAgIGNvbnN0IFZlcnRleEFycmF5ICp2
YW8gICAgID0gZ2V0VmVydGV4QXJyYXkoKTsKICAgICAgICAgY29uc3QgYXV0byAmdmVydGV4QXR0
cmlicyA9IHZhby0+Z2V0VmVydGV4QXR0cmlidXRlcygpOworICAgICAgICBjb25zdCBhdXRvICZ2
ZXJ0ZXhCaW5kaW5ncyA9IHZhby0+Z2V0VmVydGV4QmluZGluZ3MoKTsKICAgICAgICAgc2l6ZV90
IG1heEVuYWJsZWRBdHRyaWIgPSB2YW8tPmdldE1heEVuYWJsZWRBdHRyaWJ1dGUoKTsKICAgICAg
ICAgZm9yIChzaXplX3QgYXR0cmliSW5kZXggPSAwOyBhdHRyaWJJbmRleCA8IG1heEVuYWJsZWRB
dHRyaWI7IGF0dHJpYkluZGV4KyspCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IGdsOjpW
ZXJ0ZXhBdHRyaWJ1dGUgJnZlcnRleEF0dHJpYiA9IHZlcnRleEF0dHJpYnNbYXR0cmliSW5kZXhd
OwotICAgICAgICAgICAgZ2w6OkJ1ZmZlciAqYm91bmRCdWZmZXIgPSB2ZXJ0ZXhBdHRyaWIuYnVm
ZmVyLmdldCgpOworICAgICAgICAgICAgYXV0byAqYm91bmRCdWZmZXIgPSB2ZXJ0ZXhCaW5kaW5n
c1t2ZXJ0ZXhBdHRyaWIuYmluZGluZ0luZGV4XS5idWZmZXIuZ2V0KCk7CiAgICAgICAgICAgICBp
ZiAodmVydGV4QXR0cmliLmVuYWJsZWQgJiYgYm91bmRCdWZmZXIgJiYgYm91bmRCdWZmZXItPmlz
TWFwcGVkKCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBA
IC0xOTAzLDE1ICsyMTA0LDE1IEBAIGJvb2wgU3RhdGU6Omhhc01hcHBlZEJ1ZmZlcihHTGVudW0g
dGFyZ2V0KSBjb25zdAogICAgIH0KIH0KIAotdm9pZCBTdGF0ZTo6c3luY0RpcnR5T2JqZWN0cygp
Cit2b2lkIFN0YXRlOjpzeW5jRGlydHlPYmplY3RzKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7
CiAgICAgaWYgKCFtRGlydHlPYmplY3RzLmFueSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBz
eW5jRGlydHlPYmplY3RzKG1EaXJ0eU9iamVjdHMpOworICAgIHN5bmNEaXJ0eU9iamVjdHMoY29u
dGV4dCwgbURpcnR5T2JqZWN0cyk7CiB9CiAKLXZvaWQgU3RhdGU6OnN5bmNEaXJ0eU9iamVjdHMo
Y29uc3QgRGlydHlPYmplY3RzICZiaXRzZXQpCit2b2lkIFN0YXRlOjpzeW5jRGlydHlPYmplY3Rz
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IERpcnR5T2JqZWN0cyAmYml0c2V0KQogewog
ICAgIGZvciAoYXV0byBkaXJ0eU9iamVjdCA6IGFuZ2xlOjpJdGVyYXRlQml0U2V0KGJpdHNldCkp
CiAgICAgewpAQCAtMTkxOSwxNSArMjEyMCwxNSBAQCB2b2lkIFN0YXRlOjpzeW5jRGlydHlPYmpl
Y3RzKGNvbnN0IERpcnR5T2JqZWN0cyAmYml0c2V0KQogICAgICAgICB7CiAgICAgICAgICAgICBj
YXNlIERJUlRZX09CSkVDVF9SRUFEX0ZSQU1FQlVGRkVSOgogICAgICAgICAgICAgICAgIEFTU0VS
VChtUmVhZEZyYW1lYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBtUmVhZEZyYW1lYnVmZmVyLT5z
eW5jU3RhdGUoKTsKKyAgICAgICAgICAgICAgICBtUmVhZEZyYW1lYnVmZmVyLT5zeW5jU3RhdGUo
Y29udGV4dCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIERJUlRZ
X09CSkVDVF9EUkFXX0ZSQU1FQlVGRkVSOgogICAgICAgICAgICAgICAgIEFTU0VSVChtRHJhd0Zy
YW1lYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBtRHJhd0ZyYW1lYnVmZmVyLT5zeW5jU3RhdGUo
KTsKKyAgICAgICAgICAgICAgICBtRHJhd0ZyYW1lYnVmZmVyLT5zeW5jU3RhdGUoY29udGV4dCk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIERJUlRZX09CSkVDVF9W
RVJURVhfQVJSQVk6CiAgICAgICAgICAgICAgICAgQVNTRVJUKG1WZXJ0ZXhBcnJheSk7Ci0gICAg
ICAgICAgICAgICAgbVZlcnRleEFycmF5LT5zeW5jSW1wbFN0YXRlKCk7CisgICAgICAgICAgICAg
ICAgbVZlcnRleEFycmF5LT5zeW5jSW1wbFN0YXRlKGNvbnRleHQpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBESVJUWV9PQkpFQ1RfUFJPR1JBTToKICAgICAgICAg
ICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBpbXBsZW1lbnQgdGhpcwpAQCAtMTk0MSw3ICsyMTQy
LDcgQEAgdm9pZCBTdGF0ZTo6c3luY0RpcnR5T2JqZWN0cyhjb25zdCBEaXJ0eU9iamVjdHMgJmJp
dHNldCkKICAgICBtRGlydHlPYmplY3RzICY9IH5iaXRzZXQ7CiB9CiAKLXZvaWQgU3RhdGU6OnN5
bmNEaXJ0eU9iamVjdChHTGVudW0gdGFyZ2V0KQordm9pZCBTdGF0ZTo6c3luY0RpcnR5T2JqZWN0
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpCiB7CiAgICAgRGlydHlPYmpl
Y3RzIGxvY2FsU2V0OwogCkBAIC0xOTY1LDcgKzIxNjYsNyBAQCB2b2lkIFN0YXRlOjpzeW5jRGly
dHlPYmplY3QoR0xlbnVtIHRhcmdldCkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAg
IHN5bmNEaXJ0eU9iamVjdHMobG9jYWxTZXQpOworICAgIHN5bmNEaXJ0eU9iamVjdHMoY29udGV4
dCwgbG9jYWxTZXQpOwogfQogCiB2b2lkIFN0YXRlOjpzZXRPYmplY3REaXJ0eShHTGVudW0gdGFy
Z2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N0
YXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3RhdGUuaAppbmRl
eCA1ZWZmZjE4MWJmNTU4ZjVhYTdlYWQ0OWNhZjA0Y2MyY2Q2NjU5ZjI3Li5jN2U2OTRiYTBmZTQw
ODlkZTQxOTNjZDY4NDI1NGViNzA0MGFkYWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvU3RhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvU3RhdGUuaApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImxpYkFO
R0xFL1NhbXBsZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9UZXh0dXJlLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvVHJhbnNmb3JtRmVlZGJhY2suaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9WZXJzaW9u
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvVmVydGV4QXR0cmlidXRlLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvYW5nbGV0eXBlcy5oIgogCkBAIC00MSwxMCArNDIsMTIgQEAgY2xhc3MgU3RhdGUgOiBh
bmdsZTo6Tm9uQ29weWFibGUKIAogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBDYXBzICZjYXBz
LAogICAgICAgICAgICAgICAgICAgICBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zLAotICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgY2xpZW50VmVyc2lvbiwKKyAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVmVyc2lvbiAmY2xpZW50VmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgYm9v
bCBkZWJ1ZywKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBiaW5kR2VuZXJhdGVzUmVzb3VyY2Up
OwotICAgIHZvaWQgcmVzZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBiaW5kR2VuZXJh
dGVzUmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgIGJvb2wgY2xpZW50QXJyYXlzRW5hYmxl
ZCwKKyAgICAgICAgICAgICAgICAgICAgYm9vbCByb2J1c3RSZXNvdXJjZUluaXQpOworICAgIHZv
aWQgcmVzZXQoY29uc3QgQ29udGV4dCAqY29udGV4dCk7CiAKICAgICAvLyBTdGF0ZSBjaHVuayBn
ZXR0ZXJzCiAgICAgY29uc3QgUmFzdGVyaXplclN0YXRlICZnZXRSYXN0ZXJpemVyU3RhdGUoKSBj
b25zdDsKQEAgLTE1MSw2ICsxNTQsOSBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQogICAgIC8vIEdMX0NIUk9NSVVNX2JpbmRfZ2VuZXJhdGVzX3Jlc291cmNlCiAgICAgYm9vbCBp
c0JpbmRHZW5lcmF0ZXNSZXNvdXJjZUVuYWJsZWQoKSBjb25zdDsKIAorICAgIC8vIEdMX0FOR0xF
X2NsaWVudF9hcnJheXMKKyAgICBib29sIGFyZUNsaWVudEFycmF5c0VuYWJsZWQoKSBjb25zdDsK
KwogICAgIC8vIFZpZXdwb3J0IHN0YXRlIHNldHRlci9nZXR0ZXIKICAgICB2b2lkIHNldFZpZXdw
b3J0UGFyYW1zKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
KTsKICAgICBjb25zdCBSZWN0YW5nbGUgJmdldFZpZXdwb3J0KCkgY29uc3Q7CkBAIC0xNjIsNyAr
MTY4LDcgQEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBUZXh0dXJlICpn
ZXRUYXJnZXRUZXh0dXJlKEdMZW51bSB0YXJnZXQpIGNvbnN0OwogICAgIFRleHR1cmUgKmdldFNh
bXBsZXJUZXh0dXJlKHVuc2lnbmVkIGludCBzYW1wbGVyLCBHTGVudW0gdHlwZSkgY29uc3Q7CiAg
ICAgR0x1aW50IGdldFNhbXBsZXJUZXh0dXJlSWQodW5zaWduZWQgaW50IHNhbXBsZXIsIEdMZW51
bSB0eXBlKSBjb25zdDsKLSAgICB2b2lkIGRldGFjaFRleHR1cmUoY29uc3QgVGV4dHVyZU1hcCAm
emVyb1RleHR1cmVzLCBHTHVpbnQgdGV4dHVyZSk7CisgICAgdm9pZCBkZXRhY2hUZXh0dXJlKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IFRleHR1cmVNYXAgJnplcm9UZXh0dXJlcywgR0x1
aW50IHRleHR1cmUpOwogICAgIHZvaWQgaW5pdGlhbGl6ZVplcm9UZXh0dXJlcyhjb25zdCBUZXh0
dXJlTWFwICZ6ZXJvVGV4dHVyZXMpOwogCiAgICAgLy8gU2FtcGxlciBvYmplY3QgYmluZGluZyBt
YW5pcHVsYXRpb24KQEAgLTE3NSw3ICsxODEsNyBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25D
b3B5YWJsZQogICAgIHZvaWQgc2V0UmVuZGVyYnVmZmVyQmluZGluZyhSZW5kZXJidWZmZXIgKnJl
bmRlcmJ1ZmZlcik7CiAgICAgR0x1aW50IGdldFJlbmRlcmJ1ZmZlcklkKCkgY29uc3Q7CiAgICAg
UmVuZGVyYnVmZmVyICpnZXRDdXJyZW50UmVuZGVyYnVmZmVyKCkgY29uc3Q7Ci0gICAgdm9pZCBk
ZXRhY2hSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcik7CisgICAgdm9pZCBkZXRhY2hS
ZW5kZXJidWZmZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHJlbmRlcmJ1ZmZlcik7
CiAKICAgICAvLyBGcmFtZWJ1ZmZlciBiaW5kaW5nIG1hbmlwdWxhdGlvbgogICAgIHZvaWQgc2V0
UmVhZEZyYW1lYnVmZmVyQmluZGluZyhGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIpOwpAQCAtMTkz
LDcgKzE5OSw3IEBAIGNsYXNzIFN0YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgYm9vbCBy
ZW1vdmVWZXJ0ZXhBcnJheUJpbmRpbmcoR0x1aW50IHZlcnRleEFycmF5KTsKIAogICAgIC8vIFBy
b2dyYW0gYmluZGluZyBtYW5pcHVsYXRpb24KLSAgICB2b2lkIHNldFByb2dyYW0oUHJvZ3JhbSAq
bmV3UHJvZ3JhbSk7CisgICAgdm9pZCBzZXRQcm9ncmFtKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IFByb2dyYW0gKm5ld1Byb2dyYW0pOwogICAgIFByb2dyYW0gKmdldFByb2dyYW0oKSBjb25zdDsK
IAogICAgIC8vIFRyYW5zZm9ybSBmZWVkYmFjayBvYmplY3QgKG5vdCBidWZmZXIpIGJpbmRpbmcg
bWFuaXB1bGF0aW9uCkBAIC0yMTQsMTEgKzIyMCwzMCBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpO
b25Db3B5YWJsZQogICAgIHZvaWQgc2V0QXJyYXlCdWZmZXJCaW5kaW5nKEJ1ZmZlciAqYnVmZmVy
KTsKICAgICBHTHVpbnQgZ2V0QXJyYXlCdWZmZXJJZCgpIGNvbnN0OwogCisgICAgdm9pZCBzZXRE
cmF3SW5kaXJlY3RCdWZmZXJCaW5kaW5nKEJ1ZmZlciAqYnVmZmVyKTsKKyAgICBCdWZmZXIgKmdl
dERyYXdJbmRpcmVjdEJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1EcmF3SW5kaXJlY3RCdWZmZXIu
Z2V0KCk7IH0KKwogICAgIC8vIEdMX1VOSUZPUk1fQlVGRkVSIC0gQm90aCBpbmRleGVkIGFuZCBn
ZW5lcmljIHRhcmdldHMKICAgICB2b2lkIHNldEdlbmVyaWNVbmlmb3JtQnVmZmVyQmluZGluZyhC
dWZmZXIgKmJ1ZmZlcik7CiAgICAgdm9pZCBzZXRJbmRleGVkVW5pZm9ybUJ1ZmZlckJpbmRpbmco
R0x1aW50IGluZGV4LCBCdWZmZXIgKmJ1ZmZlciwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRy
IHNpemUpOwogICAgIGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gJmdldEluZGV4
ZWRVbmlmb3JtQnVmZmVyKHNpemVfdCBpbmRleCkgY29uc3Q7CiAKKyAgICAvLyBHTF9BVE9NSUNf
Q09VTlRFUl9CVUZGRVIgLSBCb3RoIGluZGV4ZWQgYW5kIGdlbmVyaWMgdGFyZ2V0cworICAgIHZv
aWQgc2V0R2VuZXJpY0F0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5nKEJ1ZmZlciAqYnVmZmVyKTsK
KyAgICB2b2lkIHNldEluZGV4ZWRBdG9taWNDb3VudGVyQnVmZmVyQmluZGluZyhHTHVpbnQgaW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVy
ICpidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnRwdHIgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSk7CisgICAgY29uc3QgT2Zmc2V0QmluZGluZ1BvaW50ZXI8
QnVmZmVyPiAmZ2V0SW5kZXhlZEF0b21pY0NvdW50ZXJCdWZmZXIoc2l6ZV90IGluZGV4KSBjb25z
dDsKKworICAgIC8vIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUiAtIEJvdGggaW5kZXhlZCBhbmQg
Z2VuZXJpYyB0YXJnZXRzCisgICAgdm9pZCBzZXRHZW5lcmljU2hhZGVyU3RvcmFnZUJ1ZmZlckJp
bmRpbmcoQnVmZmVyICpidWZmZXIpOworICAgIHZvaWQgc2V0SW5kZXhlZFNoYWRlclN0b3JhZ2VC
dWZmZXJCaW5kaW5nKEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCdWZmZXIgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKTsKKyAgICBjb25z
dCBPZmZzZXRCaW5kaW5nUG9pbnRlcjxCdWZmZXI+ICZnZXRJbmRleGVkU2hhZGVyU3RvcmFnZUJ1
ZmZlcihzaXplX3QgaW5kZXgpIGNvbnN0OworCiAgICAgLy8gR0xfQ09QWV9bUkVBRC9XUklURV1f
QlVGRkVSCiAgICAgdm9pZCBzZXRDb3B5UmVhZEJ1ZmZlckJpbmRpbmcoQnVmZmVyICpidWZmZXIp
OwogICAgIHZvaWQgc2V0Q29weVdyaXRlQnVmZmVyQmluZGluZyhCdWZmZXIgKmJ1ZmZlcik7CkBA
IC0yMzQsNiArMjU5LDcgQEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKIAogICAg
IC8vIFZlcnRleCBhdHRyaWIgbWFuaXB1bGF0aW9uCiAgICAgdm9pZCBzZXRFbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheSh1bnNpZ25lZCBpbnQgYXR0cmliTnVtLCBib29sIGVuYWJsZWQpOworICAgIHZv
aWQgc2V0RWxlbWVudEFycmF5QnVmZmVyKEJ1ZmZlciAqYnVmZmVyKTsKICAgICB2b2lkIHNldFZl
cnRleEF0dHJpYmYoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0IHZhbHVlc1s0XSk7CiAgICAg
dm9pZCBzZXRWZXJ0ZXhBdHRyaWJ1KEdMdWludCBpbmRleCwgY29uc3QgR0x1aW50IHZhbHVlc1s0
XSk7CiAgICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJpKEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQg
dmFsdWVzWzRdKTsKQEAgLTI0Miw2ICsyNjgsMTggQEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9u
Q29weWFibGUKICAgICB2b2lkIHNldFZlcnRleEF0dHJpYkRpdmlzb3IoR0x1aW50IGluZGV4LCBH
THVpbnQgZGl2aXNvcik7CiAgICAgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAm
Z2V0VmVydGV4QXR0cmliQ3VycmVudFZhbHVlKHVuc2lnbmVkIGludCBhdHRyaWJOdW0pIGNvbnN0
OwogICAgIGNvbnN0IHZvaWQgKmdldFZlcnRleEF0dHJpYlBvaW50ZXIodW5zaWduZWQgaW50IGF0
dHJpYk51bSkgY29uc3Q7CisgICAgdm9pZCBiaW5kVmVydGV4QnVmZmVyKEdMdWludCBiaW5kaW5n
SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlciAqYm91bmRCdWZmZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUpOworICAgIHZvaWQgc2V0VmVydGV4QXR0cmliRm9y
bWF0KEdMdWludCBhdHRyaWJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9ybWFsaXplZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHB1cmVJbnRlZ2VyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCByZWxhdGl2ZU9mZnNldCk7CisgICAgdm9pZCBzZXRWZXJ0
ZXhBdHRyaWJCaW5kaW5nKEdMdWludCBhdHRyaWJJbmRleCwgR0x1aW50IGJpbmRpbmdJbmRleCk7
CisgICAgdm9pZCBzZXRWZXJ0ZXhCaW5kaW5nRGl2aXNvcihHTHVpbnQgYmluZGluZ0luZGV4LCBH
THVpbnQgZGl2aXNvcik7CiAKICAgICAvLyBQaXhlbCBwYWNrIHN0YXRlIG1hbmlwdWxhdGlvbgog
ICAgIHZvaWQgc2V0UGFja0FsaWdubWVudChHTGludCBhbGlnbm1lbnQpOwpAQCAtMjkwLDE2ICsz
MjgsMjEgQEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBHTGludCBnZXRQ
YXRoU3RlbmNpbFJlZigpIGNvbnN0OwogICAgIEdMdWludCBnZXRQYXRoU3RlbmNpbE1hc2soKSBj
b25zdDsKIAorICAgIC8vIEdMX0VYVF9zUkdCX3dyaXRlX2NvbnRyb2wKKyAgICB2b2lkIHNldEZy
YW1lYnVmZmVyU1JHQihib29sIHNSR0IpOworICAgIGJvb2wgZ2V0RnJhbWVidWZmZXJTUkdCKCkg
Y29uc3Q7CisKICAgICAvLyBTdGF0ZSBxdWVyeSBmdW5jdGlvbnMKICAgICB2b2lkIGdldEJvb2xl
YW52KEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpwYXJhbXMpOwogICAgIHZvaWQgZ2V0RmxvYXR2
KEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKLSAgICB2b2lkIGdldEludGVnZXJ2KGNv
bnN0IENvbnRleHRTdGF0ZSAmZGF0YSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKKyAg
ICB2b2lkIGdldEludGVnZXJ2KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwg
R0xpbnQgKnBhcmFtcyk7CiAgICAgdm9pZCBnZXRQb2ludGVydihHTGVudW0gcG5hbWUsIHZvaWQg
KipwYXJhbXMpIGNvbnN0OwogICAgIHZvaWQgZ2V0SW50ZWdlcmlfdihHTGVudW0gdGFyZ2V0LCBH
THVpbnQgaW5kZXgsIEdMaW50ICpkYXRhKTsKICAgICB2b2lkIGdldEludGVnZXI2NGlfdihHTGVu
dW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50NjQgKmRhdGEpOwogICAgIHZvaWQgZ2V0Qm9v
bGVhbmlfdihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiAqZGF0YSk7CiAK
ICAgICBib29sIGhhc01hcHBlZEJ1ZmZlcihHTGVudW0gdGFyZ2V0KSBjb25zdDsKKyAgICBib29s
IGlzUm9idXN0UmVzb3VyY2VJbml0RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1Sb2J1c3RSZXNv
dXJjZUluaXQ7IH0KIAogICAgIGVudW0gRGlydHlCaXRUeXBlCiAgICAgewpAQCAtMzU2LDYgKzM5
OSw3IEBAIGNsYXNzIFN0YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgIERJUlRZX0JJ
VF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkcsCiAgICAgICAgIERJUlRZX0JJVF9SRU5ERVJCVUZG
RVJfQklORElORywKICAgICAgICAgRElSVFlfQklUX1ZFUlRFWF9BUlJBWV9CSU5ESU5HLAorICAg
ICAgICBESVJUWV9CSVRfRFJBV19JTkRJUkVDVF9CVUZGRVJfQklORElORywKICAgICAgICAgRElS
VFlfQklUX1BST0dSQU1fQklORElORywKICAgICAgICAgRElSVFlfQklUX01VTFRJU0FNUExJTkcs
CiAgICAgICAgIERJUlRZX0JJVF9TQU1QTEVfQUxQSEFfVE9fT05FLApAQCAtMzYzLDYgKzQwNyw3
IEBAIGNsYXNzIFN0YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgIERJUlRZX0JJVF9Q
QVRIX1JFTkRFUklOR19NQVRSSVhfTVYsICAgIC8vIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIHBh
dGggbW9kZWwgdmlldyBtYXRyaXgKICAgICAgICAgRElSVFlfQklUX1BBVEhfUkVOREVSSU5HX01B
VFJJWF9QUk9KLCAgLy8gQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcgcGF0aCBwcm9qZWN0aW9uIG1h
dHJpeAogICAgICAgICBESVJUWV9CSVRfUEFUSF9SRU5ERVJJTkdfU1RFTkNJTF9TVEFURSwKKyAg
ICAgICAgRElSVFlfQklUX0ZSQU1FQlVGRkVSX1NSR0IsICAvLyBHTF9FWFRfc1JHQl93cml0ZV9j
b250cm9sCiAgICAgICAgIERJUlRZX0JJVF9DVVJSRU5UX1ZBTFVFXzAsCiAgICAgICAgIERJUlRZ
X0JJVF9DVVJSRU5UX1ZBTFVFX01BWCA9IERJUlRZX0JJVF9DVVJSRU5UX1ZBTFVFXzAgKyBNQVhf
VkVSVEVYX0FUVFJJQlMsCiAgICAgICAgIERJUlRZX0JJVF9JTlZBTElEICAgICAgICAgICA9IERJ
UlRZX0JJVF9DVVJSRU5UX1ZBTFVFX01BWCwKQEAgLTM4OSw5ICs0MzQsOSBAQCBjbGFzcyBTdGF0
ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHR5cGVkZWYgc3RkOjpiaXRzZXQ8RElSVFlfT0JK
RUNUX01BWD4gRGlydHlPYmplY3RzOwogICAgIHZvaWQgY2xlYXJEaXJ0eU9iamVjdHMoKSB7IG1E
aXJ0eU9iamVjdHMucmVzZXQoKTsgfQogICAgIHZvaWQgc2V0QWxsRGlydHlPYmplY3RzKCkgeyBt
RGlydHlPYmplY3RzLnNldCgpOyB9Ci0gICAgdm9pZCBzeW5jRGlydHlPYmplY3RzKCk7Ci0gICAg
dm9pZCBzeW5jRGlydHlPYmplY3RzKGNvbnN0IERpcnR5T2JqZWN0cyAmYml0c2V0KTsKLSAgICB2
b2lkIHN5bmNEaXJ0eU9iamVjdChHTGVudW0gdGFyZ2V0KTsKKyAgICB2b2lkIHN5bmNEaXJ0eU9i
amVjdHMoY29uc3QgQ29udGV4dCAqY29udGV4dCk7CisgICAgdm9pZCBzeW5jRGlydHlPYmplY3Rz
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0IERpcnR5T2JqZWN0cyAmYml0c2V0KTsKKyAg
ICB2b2lkIHN5bmNEaXJ0eU9iamVjdChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFy
Z2V0KTsKICAgICB2b2lkIHNldE9iamVjdERpcnR5KEdMZW51bSB0YXJnZXQpOwogCiAgIHByaXZh
dGU6CkBAIC00MjMsMTIgKzQ2OCwxNCBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQogICAgIEdMZW51bSBtRnJhZ21lbnRTaGFkZXJEZXJpdmF0aXZlSGludDsKIAogICAgIGJvb2wg
bUJpbmRHZW5lcmF0ZXNSZXNvdXJjZTsKKyAgICBib29sIG1DbGllbnRBcnJheXNFbmFibGVkOwog
CiAgICAgUmVjdGFuZ2xlIG1WaWV3cG9ydDsKICAgICBmbG9hdCBtTmVhclo7CiAgICAgZmxvYXQg
bUZhclo7CiAKICAgICBCaW5kaW5nUG9pbnRlcjxCdWZmZXI+IG1BcnJheUJ1ZmZlcjsKKyAgICBC
aW5kaW5nUG9pbnRlcjxCdWZmZXI+IG1EcmF3SW5kaXJlY3RCdWZmZXI7CiAgICAgRnJhbWVidWZm
ZXIgKm1SZWFkRnJhbWVidWZmZXI7CiAgICAgRnJhbWVidWZmZXIgKm1EcmF3RnJhbWVidWZmZXI7
CiAgICAgQmluZGluZ1BvaW50ZXI8UmVuZGVyYnVmZmVyPiBtUmVuZGVyYnVmZmVyOwpAQCAtNDU3
LDYgKzUwNCwxMiBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgQmlu
ZGluZ1BvaW50ZXI8VHJhbnNmb3JtRmVlZGJhY2s+IG1UcmFuc2Zvcm1GZWVkYmFjazsKIAorICAg
IEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gbUdlbmVyaWNBdG9taWNDb3VudGVyQnVmZmVyOworICAg
IEJ1ZmZlclZlY3RvciBtQXRvbWljQ291bnRlckJ1ZmZlcnM7CisKKyAgICBCaW5kaW5nUG9pbnRl
cjxCdWZmZXI+IG1HZW5lcmljU2hhZGVyU3RvcmFnZUJ1ZmZlcjsKKyAgICBCdWZmZXJWZWN0b3Ig
bVNoYWRlclN0b3JhZ2VCdWZmZXJzOworCiAgICAgQmluZGluZ1BvaW50ZXI8QnVmZmVyPiBtQ29w
eVJlYWRCdWZmZXI7CiAgICAgQmluZGluZ1BvaW50ZXI8QnVmZmVyPiBtQ29weVdyaXRlQnVmZmVy
OwogCkBAIC00NzksNiArNTMyLDEyIEBAIGNsYXNzIFN0YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxl
CiAgICAgR0xpbnQgbVBhdGhTdGVuY2lsUmVmOwogICAgIEdMdWludCBtUGF0aFN0ZW5jaWxNYXNr
OwogCisgICAgLy8gR0xfRVhUX3NSR0Jfd3JpdGVfY29udHJvbAorICAgIGJvb2wgbUZyYW1lYnVm
ZmVyU1JHQjsKKworICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9yZXNvdXJjZV9pbnRpYWxpemF0aW9u
CisgICAgYm9vbCBtUm9idXN0UmVzb3VyY2VJbml0OworCiAgICAgRGlydHlCaXRzIG1EaXJ0eUJp
dHM7CiAgICAgRGlydHlPYmplY3RzIG1EaXJ0eU9iamVjdHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N1cmZhY2UuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N1cmZhY2UuY3BwCmluZGV4IDg2OGRkOGRmODVl
MjVlYTk0NjdmMDU3NzZkOWM1N2NjNmJjNTBmZjYuLmU2YTk0OWM0MTNmYTQ2ODgyY2M5MWJjOTdh
MDQyNTA4ZGM5NWQwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9TdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvU3VyZmFjZS5jcHAKQEAgLTE1LDYgKzE1LDcgQEAKICNpbmNsdWRlIDxpb3N0cmVhbT4K
IAogI2luY2x1ZGUgImxpYkFOR0xFL0NvbmZpZy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0Rpc3Bs
YXkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL1RleHR1cmUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgpAQCAtMjMs
MTcgKzI0LDE4IEBACiBuYW1lc3BhY2UgZWdsCiB7CiAKLVN1cmZhY2VTdGF0ZTo6U3VyZmFjZVN0
YXRlKCkgOiBkZWZhdWx0RnJhbWVidWZmZXIobnVsbHB0cikKK1N1cmZhY2VTdGF0ZTo6U3VyZmFj
ZVN0YXRlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWdJbikKKyAgICA6IGRlZmF1bHRGcmFtZWJ1
ZmZlcihudWxscHRyKSwgY29uZmlnKGNvbmZpZ0luKQogewogfQogCiBTdXJmYWNlOjpTdXJmYWNl
KEVHTGludCBzdXJmYWNlVHlwZSwgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywgY29uc3QgQXR0
cmlidXRlTWFwICZhdHRyaWJ1dGVzKQogICAgIDogRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0
KCksCisgICAgICBtU3RhdGUoY29uZmlnKSwKICAgICAgIG1JbXBsZW1lbnRhdGlvbihudWxscHRy
KSwKICAgICAgIG1DdXJyZW50Q291bnQoMCksCiAgICAgICBtRGVzdHJveWVkKGZhbHNlKSwKICAg
ICAgIG1UeXBlKHN1cmZhY2VUeXBlKSwKLSAgICAgIG1Db25maWcoY29uZmlnKSwKICAgICAgIG1Q
b3N0U3ViQnVmZmVyUmVxdWVzdGVkKGZhbHNlKSwKICAgICAgIG1GaXhlZFNpemUoZmFsc2UpLAog
ICAgICAgbUZpeGVkV2lkdGgoMCksCkBAIC04Nyw5ICs4OSwyMiBAQCBTdXJmYWNlOjp+U3VyZmFj
ZSgpCiAgICAgU2FmZURlbGV0ZShtSW1wbGVtZW50YXRpb24pOwogfQogCi1FcnJvciBTdXJmYWNl
Ojppbml0aWFsaXplKCkKK3ZvaWQgU3VyZmFjZTo6ZGVzdHJveShjb25zdCBEaXNwbGF5ICpkaXNw
bGF5KQogewotICAgIEFOR0xFX1RSWShtSW1wbGVtZW50YXRpb24tPmluaXRpYWxpemUoKSk7Cisg
ICAgaWYgKG1TdGF0ZS5kZWZhdWx0RnJhbWVidWZmZXIpCisgICAgeworICAgICAgICBtU3RhdGUu
ZGVmYXVsdEZyYW1lYnVmZmVyLT5kZXN0cm95RGVmYXVsdChkaXNwbGF5KTsKKyAgICB9CisgICAg
aWYgKG1JbXBsZW1lbnRhdGlvbikKKyAgICB7CisgICAgICAgIG1JbXBsZW1lbnRhdGlvbi0+ZGVz
dHJveShyeDo6U2FmZUdldEltcGwoZGlzcGxheSkpOworICAgIH0KKyAgICBkZWxldGUgdGhpczsK
K30KKworRXJyb3IgU3VyZmFjZTo6aW5pdGlhbGl6ZShjb25zdCBEaXNwbGF5ICZkaXNwbGF5KQor
eworICAgIEFOR0xFX1RSWShtSW1wbGVtZW50YXRpb24tPmluaXRpYWxpemUoZGlzcGxheS5nZXRJ
bXBsZW1lbnRhdGlvbigpKSk7CiAKICAgICAvLyBJbml0aWFsaXplZCBoZXJlIHNpbmNlIGltcGwg
aXMgbnVsbHB0ciBpbiB0aGUgY29uc3RydWN0b3IuCiAgICAgLy8gTXVzdCBoYXBwZW4gYWZ0ZXIg
aW1wbGVtZW50YXRpb24gaW5pdGlhbGl6ZSBmb3IgQW5kcm9pZC4KQEAgLTEwMiwyOSArMTE3LDI4
IEBAIEVycm9yIFN1cmZhY2U6OmluaXRpYWxpemUoKQogICAgIHJldHVybiBFcnJvcihFR0xfU1VD
Q0VTUyk7CiB9CiAKLXZvaWQgU3VyZmFjZTo6c2V0SXNDdXJyZW50KGJvb2wgaXNDdXJyZW50KQor
dm9pZCBTdXJmYWNlOjpzZXRJc0N1cnJlbnQoRGlzcGxheSAqZGlzcGxheSwgYm9vbCBpc0N1cnJl
bnQpCiB7CiAgICAgaWYgKGlzQ3VycmVudCkKICAgICB7CiAgICAgICAgIG1DdXJyZW50Q291bnQr
KzsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBlbHNlCisKKyAgICBBU1NFUlQobUN1cnJl
bnRDb3VudCA+IDApOworICAgIG1DdXJyZW50Q291bnQtLTsKKyAgICBpZiAobUN1cnJlbnRDb3Vu
dCA9PSAwICYmIG1EZXN0cm95ZWQpCiAgICAgewotICAgICAgICBBU1NFUlQobUN1cnJlbnRDb3Vu
dCA+IDApOwotICAgICAgICBtQ3VycmVudENvdW50LS07Ci0gICAgICAgIGlmIChtQ3VycmVudENv
dW50ID09IDAgJiYgbURlc3Ryb3llZCkKLSAgICAgICAgewotICAgICAgICAgICAgZGVsZXRlIHRo
aXM7Ci0gICAgICAgIH0KKyAgICAgICAgZGVzdHJveShkaXNwbGF5KTsKICAgICB9CiB9CiAKLXZv
aWQgU3VyZmFjZTo6b25EZXN0cm95KCkKK3ZvaWQgU3VyZmFjZTo6b25EZXN0cm95KERpc3BsYXkg
KmRpc3BsYXkpCiB7CiAgICAgbURlc3Ryb3llZCA9IHRydWU7CiAgICAgaWYgKG1DdXJyZW50Q291
bnQgPT0gMCkKICAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOworICAgICAgICBkZXN0cm95KGRp
c3BsYXkpOwogICAgIH0KIH0KIApAQCAtMTMzLDkgKzE0NywxNCBAQCBFR0xpbnQgU3VyZmFjZTo6
Z2V0VHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1UeXBlOwogfQogCi1FcnJvciBTdXJmYWNlOjpz
d2FwKCkKK0Vycm9yIFN1cmZhY2U6OnN3YXAoY29uc3QgRGlzcGxheSAmZGlzcGxheSkKK3sKKyAg
ICByZXR1cm4gbUltcGxlbWVudGF0aW9uLT5zd2FwKGRpc3BsYXkuZ2V0SW1wbGVtZW50YXRpb24o
KSk7Cit9CisKK0Vycm9yIFN1cmZhY2U6OnN3YXBXaXRoRGFtYWdlKEVHTGludCAqcmVjdHMsIEVH
TGludCBuX3JlY3RzKQogewotICAgIHJldHVybiBtSW1wbGVtZW50YXRpb24tPnN3YXAoKTsKKyAg
ICByZXR1cm4gbUltcGxlbWVudGF0aW9uLT5zd2FwV2l0aERhbWFnZShyZWN0cywgbl9yZWN0cyk7
CiB9CiAKIEVycm9yIFN1cmZhY2U6OnBvc3RTdWJCdWZmZXIoRUdMaW50IHgsIEVHTGludCB5LCBF
R0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpCkBAIC0xNjAsNyArMTc5LDcgQEAgdm9pZCBTdXJm
YWNlOjpzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFsKQogCiBjb25zdCBDb25maWcgKlN1
cmZhY2U6OmdldENvbmZpZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1Db25maWc7CisgICAgcmV0
dXJuIG1TdGF0ZS5jb25maWc7CiB9CiAKIEVHTGludCBTdXJmYWNlOjpnZXRQaXhlbEFzcGVjdFJh
dGlvKCkgY29uc3QKQEAgLTIwNiwxOSArMjI1LDIzIEBAIEVHTGludCBTdXJmYWNlOjpnZXRIZWln
aHQoKSBjb25zdAogRXJyb3IgU3VyZmFjZTo6YmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0
dXJlLCBFR0xpbnQgYnVmZmVyKQogewogICAgIEFTU0VSVCghbVRleHR1cmUuZ2V0KCkpOworICAg
IEFOR0xFX1RSWShtSW1wbGVtZW50YXRpb24tPmJpbmRUZXhJbWFnZSh0ZXh0dXJlLCBidWZmZXIp
KTsKIAogICAgIHRleHR1cmUtPmJpbmRUZXhJbWFnZUZyb21TdXJmYWNlKHRoaXMpOwogICAgIG1U
ZXh0dXJlLnNldCh0ZXh0dXJlKTsKLSAgICByZXR1cm4gbUltcGxlbWVudGF0aW9uLT5iaW5kVGV4
SW1hZ2UodGV4dHVyZSwgYnVmZmVyKTsKKworICAgIHJldHVybiBFcnJvcihFR0xfU1VDQ0VTUyk7
CiB9CiAKIEVycm9yIFN1cmZhY2U6OnJlbGVhc2VUZXhJbWFnZShFR0xpbnQgYnVmZmVyKQogewor
ICAgIEFOR0xFX1RSWShtSW1wbGVtZW50YXRpb24tPnJlbGVhc2VUZXhJbWFnZShidWZmZXIpKTsK
KwogICAgIEFTU0VSVChtVGV4dHVyZS5nZXQoKSk7CiAgICAgbVRleHR1cmUtPnJlbGVhc2VUZXhJ
bWFnZUZyb21TdXJmYWNlKCk7CiAgICAgbVRleHR1cmUuc2V0KG51bGxwdHIpOwogCi0gICAgcmV0
dXJuIG1JbXBsZW1lbnRhdGlvbi0+cmVsZWFzZVRleEltYWdlKGJ1ZmZlcik7CisgICAgcmV0dXJu
IEVycm9yKEVHTF9TVUNDRVNTKTsKIH0KIAogRXJyb3IgU3VyZmFjZTo6Z2V0U3luY1ZhbHVlcyhF
R0x1aW50NjRLSFIgKnVzdCwgRUdMdWludDY0S0hSICptc2MsIEVHTHVpbnQ2NEtIUiAqc2JjKQpA
QCAtMjU2LDI4ICsyNzksNyBAQCBHTHVpbnQgU3VyZmFjZTo6Z2V0SWQoKSBjb25zdAogCiBnbDo6
RnJhbWVidWZmZXIgKlN1cmZhY2U6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcigpCiB7Ci0gICAg
Z2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IG5ldyBnbDo6RnJhbWVidWZmZXIobUltcGxl
bWVudGF0aW9uKTsKLQotICAgIEdMZW51bSBkcmF3QnVmZmVyU3RhdGUgPSBHTF9CQUNLOwotICAg
IGZyYW1lYnVmZmVyLT5zZXREcmF3QnVmZmVycygxLCAmZHJhd0J1ZmZlclN0YXRlKTsKLSAgICBm
cmFtZWJ1ZmZlci0+c2V0UmVhZEJ1ZmZlcihHTF9CQUNLKTsKLQotICAgIGZyYW1lYnVmZmVyLT5z
ZXRBdHRhY2htZW50KEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFQsIEdMX0JBQ0ssIGdsOjpJbWFnZUlu
ZGV4OjpNYWtlSW52YWxpZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMp
OwotCi0gICAgaWYgKG1Db25maWctPmRlcHRoU2l6ZSA+IDApCi0gICAgewotICAgICAgICBmcmFt
ZWJ1ZmZlci0+c2V0QXR0YWNobWVudChHTF9GUkFNRUJVRkZFUl9ERUZBVUxULCBHTF9ERVBUSCwg
Z2w6OkltYWdlSW5kZXg6Ok1ha2VJbnZhbGlkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMpOwotICAgIH0KLQotICAgIGlmIChtQ29uZmlnLT5zdGVuY2lsU2l6ZSA+
IDApCi0gICAgewotICAgICAgICBmcmFtZWJ1ZmZlci0+c2V0QXR0YWNobWVudChHTF9GUkFNRUJV
RkZFUl9ERUZBVUxULCBHTF9TVEVOQ0lMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnbDo6SW1hZ2VJbmRleDo6TWFrZUludmFsaWQoKSwgdGhpcyk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGZyYW1lYnVmZmVyOworICAgIHJldHVybiBuZXcgZ2w6OkZyYW1lYnVmZmVyKHRoaXMp
OwogfQogCiBXaW5kb3dTdXJmYWNlOjpXaW5kb3dTdXJmYWNlKHJ4OjpFR0xJbXBsRmFjdG9yeSAq
aW1wbEZhY3RvcnksCkBAIC0yODYsNyArMjg4LDcgQEAgV2luZG93U3VyZmFjZTo6V2luZG93U3Vy
ZmFjZShyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiAgICAgOiBTdXJmYWNlKEVH
TF9XSU5ET1dfQklULCBjb25maWcsIGF0dHJpYnMpCiB7Ci0gICAgbUltcGxlbWVudGF0aW9uID0g
aW1wbEZhY3RvcnktPmNyZWF0ZVdpbmRvd1N1cmZhY2UobVN0YXRlLCBjb25maWcsIHdpbmRvdywg
YXR0cmlicyk7CisgICAgbUltcGxlbWVudGF0aW9uID0gaW1wbEZhY3RvcnktPmNyZWF0ZVdpbmRv
d1N1cmZhY2UobVN0YXRlLCB3aW5kb3csIGF0dHJpYnMpOwogfQogCiBXaW5kb3dTdXJmYWNlOjp+
V2luZG93U3VyZmFjZSgpCkBAIC0yOTgsMTcgKzMwMCwxOCBAQCBQYnVmZmVyU3VyZmFjZTo6UGJ1
ZmZlclN1cmZhY2Uocng6OkVHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiAgICAgOiBT
dXJmYWNlKEVHTF9QQlVGRkVSX0JJVCwgY29uZmlnLCBhdHRyaWJzKQogewotICAgIG1JbXBsZW1l
bnRhdGlvbiA9IGltcGxGYWN0b3J5LT5jcmVhdGVQYnVmZmVyU3VyZmFjZShtU3RhdGUsIGNvbmZp
ZywgYXR0cmlicyk7CisgICAgbUltcGxlbWVudGF0aW9uID0gaW1wbEZhY3RvcnktPmNyZWF0ZVBi
dWZmZXJTdXJmYWNlKG1TdGF0ZSwgYXR0cmlicyk7CiB9CiAKIFBidWZmZXJTdXJmYWNlOjpQYnVm
ZmVyU3VyZmFjZShyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbmZpZyAqY29uZmlnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiAgICAgOiBTdXJm
YWNlKEVHTF9QQlVGRkVSX0JJVCwgY29uZmlnLCBhdHRyaWJzKQogewogICAgIG1JbXBsZW1lbnRh
dGlvbiA9Ci0gICAgICAgIGltcGxGYWN0b3J5LT5jcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZl
cihtU3RhdGUsIGNvbmZpZywgc2hhcmVIYW5kbGUsIGF0dHJpYnMpOworICAgICAgICBpbXBsRmFj
dG9yeS0+Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIobVN0YXRlLCBidWZ0eXBlLCBjbGll
bnRCdWZmZXIsIGF0dHJpYnMpOwogfQogCiBQYnVmZmVyU3VyZmFjZTo6flBidWZmZXJTdXJmYWNl
KCkKQEAgLTMyMSw3ICszMjQsNyBAQCBQaXhtYXBTdXJmYWNlOjpQaXhtYXBTdXJmYWNlKHJ4OjpF
R0xJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlicykKICAgICA6IFN1cmZhY2UoRUdMX1BJWE1BUF9C
SVQsIGNvbmZpZywgYXR0cmlicykKIHsKLSAgICBtSW1wbGVtZW50YXRpb24gPSBpbXBsRmFjdG9y
eS0+Y3JlYXRlUGl4bWFwU3VyZmFjZShtU3RhdGUsIGNvbmZpZywgbmF0aXZlUGl4bWFwLCBhdHRy
aWJzKTsKKyAgICBtSW1wbGVtZW50YXRpb24gPSBpbXBsRmFjdG9yeS0+Y3JlYXRlUGl4bWFwU3Vy
ZmFjZShtU3RhdGUsIG5hdGl2ZVBpeG1hcCwgYXR0cmlicyk7CiB9CiAKIFBpeG1hcFN1cmZhY2U6
On5QaXhtYXBTdXJmYWNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9TdXJmYWNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvU3VyZmFjZS5oCmluZGV4IDFiYzMxZDFhOWJhODU1NGExOTZiM2VkMmRiZjdkODFkY2I3ZTAz
ZWUuLjg4YjRkMGYxZjQ3ZmIwZGVkYjM4ZWY4ZDA4MWY0YjRlNzVjNTJhNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdXJmYWNlLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N1cmZhY2UuaApAQCAtMzksOSArMzks
MTAgQEAgc3RydWN0IENvbmZpZzsKIAogc3RydWN0IFN1cmZhY2VTdGF0ZSBmaW5hbCA6IGFuZ2xl
OjpOb25Db3B5YWJsZQogewotICAgIFN1cmZhY2VTdGF0ZSgpOworICAgIFN1cmZhY2VTdGF0ZShj
b25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnSW4pOwogCiAgICAgZ2w6OkZyYW1lYnVmZmVyICpkZWZh
dWx0RnJhbWVidWZmZXI7CisgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZzsKIH07CiAKIGNs
YXNzIFN1cmZhY2UgOiBwdWJsaWMgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdApAQCAt
NTMsOCArNTQsOSBAQCBjbGFzcyBTdXJmYWNlIDogcHVibGljIGdsOjpGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRPYmplY3QKIAogICAgIEVHTGludCBnZXRUeXBlKCkgY29uc3Q7CiAKLSAgICBFcnJvciBp
bml0aWFsaXplKCk7Ci0gICAgRXJyb3Igc3dhcCgpOworICAgIEVycm9yIGluaXRpYWxpemUoY29u
c3QgRGlzcGxheSAmZGlzcGxheSk7CisgICAgRXJyb3Igc3dhcChjb25zdCBEaXNwbGF5ICZkaXNw
bGF5KTsKKyAgICBFcnJvciBzd2FwV2l0aERhbWFnZShFR0xpbnQgKnJlY3RzLCBFR0xpbnQgbl9y
ZWN0cyk7CiAgICAgRXJyb3IgcG9zdFN1YkJ1ZmZlcihFR0xpbnQgeCwgRUdMaW50IHksIEVHTGlu
dCB3aWR0aCwgRUdMaW50IGhlaWdodCk7CiAgICAgRXJyb3IgcXVlcnlTdXJmYWNlUG9pbnRlckFO
R0xFKEVHTGludCBhdHRyaWJ1dGUsIHZvaWQgKip2YWx1ZSk7CiAgICAgRXJyb3IgYmluZFRleElt
YWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVyKTsKQEAgLTY1LDggKzY3LDgg
QEAgY2xhc3MgU3VyZmFjZSA6IHB1YmxpYyBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0
CiAgICAgRUdMaW50IGlzUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCgpIGNvbnN0OwogCiAgICAgdm9p
ZCBzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFsKTsKLSAgICB2b2lkIHNldElzQ3VycmVu
dChib29sIGlzQ3VycmVudCk7Ci0gICAgdm9pZCBvbkRlc3Ryb3koKTsKKyAgICB2b2lkIHNldElz
Q3VycmVudChEaXNwbGF5ICpkaXNwbGF5LCBib29sIGlzQ3VycmVudCk7CisgICAgdm9pZCBvbkRl
c3Ryb3koRGlzcGxheSAqZGlzcGxheSk7CiAKICAgICBjb25zdCBDb25maWcgKmdldENvbmZpZygp
IGNvbnN0OwogCkBAIC0xMTksOCArMTIxLDYgQEAgY2xhc3MgU3VyZmFjZSA6IHB1YmxpYyBnbDo6
RnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0CiAKICAgICBFR0xpbnQgbVR5cGU7CiAKLSAgICBj
b25zdCBlZ2w6OkNvbmZpZyAqbUNvbmZpZzsKLQogICAgIGJvb2wgbVBvc3RTdWJCdWZmZXJSZXF1
ZXN0ZWQ7CiAgICAgYm9vbCBtRmxleGlibGVTdXJmYWNlQ29tcGF0aWJpbGl0eVJlcXVlc3RlZDsK
IApAQCAtMTQzLDYgKzE0Myw5IEBAIGNsYXNzIFN1cmZhY2UgOiBwdWJsaWMgZ2w6OkZyYW1lYnVm
ZmVyQXR0YWNobWVudE9iamVjdAogCiAgICAgZ2w6OkZvcm1hdCBtQmFja0Zvcm1hdDsKICAgICBn
bDo6Rm9ybWF0IG1EU0Zvcm1hdDsKKworICBwcml2YXRlOgorICAgIHZvaWQgZGVzdHJveShjb25z
dCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpOwogfTsKIAogY2xhc3MgV2luZG93U3VyZmFjZSBmaW5h
bCA6IHB1YmxpYyBTdXJmYWNlCkBAIC0xNjMsNyArMTY2LDggQEAgY2xhc3MgUGJ1ZmZlclN1cmZh
Y2UgZmluYWwgOiBwdWJsaWMgU3VyZmFjZQogICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJp
YnV0ZU1hcCAmYXR0cmlicyk7CiAgICAgUGJ1ZmZlclN1cmZhY2Uocng6OkVHTEltcGxGYWN0b3J5
ICppbXBsRmFjdG9yeSwKICAgICAgICAgICAgICAgICAgICBjb25zdCBDb25maWcgKmNvbmZpZywK
LSAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCisgICAgICAg
ICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAgIEVHTENsaWVu
dEJ1ZmZlciBjbGllbnRCdWZmZXIsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRl
TWFwICZhdHRyaWJzKTsKICAgICB+UGJ1ZmZlclN1cmZhY2UoKSBvdmVycmlkZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3VyZmFjZV91bml0
dGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3VyZmFjZV91
bml0dGVzdC5jcHAKaW5kZXggMmI3ZmIwYTJiMmI3YTYzOTg2NzNmMmU4ZWE0Y2QzOGU4MWQ0MTFk
ZS4uN2VhZmY1OTkxNjE4YjA2YTZjMmNmMmM5YThmMjIwNzY4MTg2NGFlYiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N1cmZhY2VfdW5pdHRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdXJmYWNlX3VuaXR0
ZXN0LmNwcApAQCAtMjUsMTIgKzI1LDE0IEBAIG5hbWVzcGFjZQogY2xhc3MgTW9ja1N1cmZhY2VJ
bXBsIDogcHVibGljIHJ4OjpTdXJmYWNlSW1wbAogewogICBwdWJsaWM6Ci0gICAgTW9ja1N1cmZh
Y2VJbXBsKCkgOiBTdXJmYWNlSW1wbChtb2NrU3RhdGUpIHt9Ci0gICAgdmlydHVhbCB+TW9ja1N1
cmZhY2VJbXBsKCkgeyBkZXN0cm95KCk7IH0KKyAgICBNb2NrU3VyZmFjZUltcGwoKSA6IFN1cmZh
Y2VJbXBsKG1vY2tTdGF0ZSksIG1vY2tTdGF0ZShudWxscHRyKSB7fQorICAgIHZpcnR1YWwgfk1v
Y2tTdXJmYWNlSW1wbCgpIHsgZGVzdHJ1Y3RvcigpOyB9CiAKLSAgICBNT0NLX01FVEhPRDAoaW5p
dGlhbGl6ZSwgZWdsOjpFcnJvcigpKTsKKyAgICBNT0NLX01FVEhPRDEoZGVzdHJveSwgdm9pZChj
b25zdCBEaXNwbGF5SW1wbCAqKSk7CisgICAgTU9DS19NRVRIT0QxKGluaXRpYWxpemUsIGVnbDo6
RXJyb3IoY29uc3QgRGlzcGxheUltcGwgKikpOwogICAgIE1PQ0tfTUVUSE9EMShjcmVhdGVEZWZh
dWx0RnJhbWVidWZmZXIsIHJ4OjpGcmFtZWJ1ZmZlckltcGwgKihjb25zdCBnbDo6RnJhbWVidWZm
ZXJTdGF0ZSAmZGF0YSkpOwotICAgIE1PQ0tfTUVUSE9EMChzd2FwLCBlZ2w6OkVycm9yKCkpOwor
ICAgIE1PQ0tfTUVUSE9EMShzd2FwLCBlZ2w6OkVycm9yKGNvbnN0IERpc3BsYXlJbXBsICopKTsK
KyAgICBNT0NLX01FVEhPRDIoc3dhcFdpdGhEYW1hZ2UsIGVnbDo6RXJyb3IoRUdMaW50ICosIEVH
TGludCkpOwogICAgIE1PQ0tfTUVUSE9ENChwb3N0U3ViQnVmZmVyLCBlZ2w6OkVycm9yKEVHTGlu
dCwgRUdMaW50LCBFR0xpbnQsIEVHTGludCkpOwogICAgIE1PQ0tfTUVUSE9EMihxdWVyeVN1cmZh
Y2VQb2ludGVyQU5HTEUsIGVnbDo6RXJyb3IoRUdMaW50LCB2b2lkKiopKTsKICAgICBNT0NLX01F
VEhPRDIoYmluZFRleEltYWdlLCBlZ2w6OkVycm9yKGdsOjpUZXh0dXJlKiwgRUdMaW50KSk7CkBA
IC00Myw3ICs0NSw3IEBAIGNsYXNzIE1vY2tTdXJmYWNlSW1wbCA6IHB1YmxpYyByeDo6U3VyZmFj
ZUltcGwKICAgICBNT0NLX0NPTlNUX01FVEhPRDAoZ2V0U3dhcEJlaGF2aW9yLCBFR0xpbnQodm9p
ZCkpOwogICAgIE1PQ0tfTUVUSE9EMihnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0LCBnbDo6RXJy
b3IoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICYsIHJ4OjpGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKiopKTsKIAotICAgIE1PQ0tfTUVUSE9EMChkZXN0
cm95LCB2b2lkKCkpOworICAgIE1PQ0tfTUVUSE9EMChkZXN0cnVjdG9yLCB2b2lkKCkpOwogCiAg
ICAgZWdsOjpTdXJmYWNlU3RhdGUgbW9ja1N0YXRlOwogfTsKQEAgLTUzLDE1ICs1NSwxNiBAQCBU
RVNUKFN1cmZhY2VUZXN0LCBEZXN0cnVjdGlvbkRlbGV0ZXNJbXBsKQogICAgIE5pY2VNb2NrPE1v
Y2tFR0xGYWN0b3J5PiBmYWN0b3J5OwogCiAgICAgTW9ja1N1cmZhY2VJbXBsICppbXBsID0gbmV3
IE1vY2tTdXJmYWNlSW1wbDsKLSAgICBFWFBFQ1RfQ0FMTChmYWN0b3J5LCBjcmVhdGVXaW5kb3dT
dXJmYWNlKF8sIF8sIF8sIF8pKS5XaWxsT25jZShSZXR1cm4oaW1wbCkpOworICAgIEVYUEVDVF9D
QUxMKGZhY3RvcnksIGNyZWF0ZVdpbmRvd1N1cmZhY2UoXywgXywgXykpLldpbGxPbmNlKFJldHVy
bihpbXBsKSk7CiAKICAgICBlZ2w6OkNvbmZpZyBjb25maWc7CiAgICAgZWdsOjpTdXJmYWNlICpz
dXJmYWNlID0gbmV3IGVnbDo6V2luZG93U3VyZmFjZSgKICAgICAgICAgJmZhY3RvcnksICZjb25m
aWcsIHN0YXRpY19jYXN0PEVHTE5hdGl2ZVdpbmRvd1R5cGU+KDApLCBlZ2w6OkF0dHJpYnV0ZU1h
cCgpKTsKIAotICAgIEVYUEVDVF9DQUxMKCppbXBsLCBkZXN0cm95KCkpLlRpbWVzKDEpLlJldGly
ZXNPblNhdHVyYXRpb24oKTsKKyAgICBFWFBFQ1RfQ0FMTCgqaW1wbCwgZGVzdHJveShfKSkuVGlt
ZXMoMSkuUmV0aXJlc09uU2F0dXJhdGlvbigpOworICAgIEVYUEVDVF9DQUxMKCppbXBsLCBkZXN0
cnVjdG9yKCkpLlRpbWVzKDEpLlJldGlyZXNPblNhdHVyYXRpb24oKTsKIAotICAgIHN1cmZhY2Ut
Pm9uRGVzdHJveSgpOworICAgIHN1cmZhY2UtPm9uRGVzdHJveShudWxscHRyKTsKIAogICAgIC8v
IE9ubHkgbmVlZGVkIGJlY2F1c2UgdGhlIG1vY2sgaXMgbGVha2VkIGlmIGJ1Z3MgYXJlIHByZXNl
bnQsCiAgICAgLy8gd2hpY2ggbG9ncyBhbiBlcnJvciwgYnV0IGRvZXMgbm90IGNhdXNlIHRoZSB0
ZXN0IHRvIGZhaWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvVGV4dHVyZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
VGV4dHVyZS5jcHAKaW5kZXggMzJhNmU0MjQ2YzE4NjhmMTg3MTcyMTIyNDU3NjEyNTM0NzkwMGZm
MC4uZjZkYWJhMjIwYWQwNGE1YWI3OTg2YmY5MTliYmUzMGJiNGRjMmRjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RleHR1cmUuY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UZXh0dXJlLmNwcApAQCAtMjQsNyAr
MjQsNyBAQCBuYW1lc3BhY2UgZ2wKIAogbmFtZXNwYWNlCiB7Ci1ib29sIElzUG9pbnRTYW1wbGVk
KGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSkKK2Jvb2wgSXNQb2ludFNhbXBs
ZWQoY29uc3QgU2FtcGxlclN0YXRlICZzYW1wbGVyU3RhdGUpCiB7CiAgICAgcmV0dXJuIChzYW1w
bGVyU3RhdGUubWFnRmlsdGVyID09IEdMX05FQVJFU1QgJiYKICAgICAgICAgICAgIChzYW1wbGVy
U3RhdGUubWluRmlsdGVyID09IEdMX05FQVJFU1QgfHwKQEAgLTM4LDIwICszOCwyMSBAQCBzaXpl
X3QgR2V0SW1hZ2VEZXNjSW5kZXgoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsKQogfQogfSAg
Ly8gbmFtZXNwYWNlCiAKLWJvb2wgSXNNaXBtYXBGaWx0ZXJlZChjb25zdCBnbDo6U2FtcGxlclN0
YXRlICZzYW1wbGVyU3RhdGUpCitib29sIElzTWlwbWFwRmlsdGVyZWQoY29uc3QgU2FtcGxlclN0
YXRlICZzYW1wbGVyU3RhdGUpCiB7CiAgICAgc3dpdGNoIChzYW1wbGVyU3RhdGUubWluRmlsdGVy
KQogICAgIHsKLSAgICAgIGNhc2UgR0xfTkVBUkVTVDoKLSAgICAgIGNhc2UgR0xfTElORUFSOgot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBjYXNlIEdMX05FQVJFU1RfTUlQTUFQX05FQVJF
U1Q6Ci0gICAgICBjYXNlIEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVDoKLSAgICAgIGNhc2UgR0xf
TkVBUkVTVF9NSVBNQVBfTElORUFSOgotICAgICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQX0xJTkVB
UjoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgR0xfTkVBUkVTVDoKKyAgICAgICAg
Y2FzZSBHTF9MSU5FQVI6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2Ug
R0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVDoKKyAgICAgICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQ
X05FQVJFU1Q6CisgICAgICAgIGNhc2UgR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSOgorICAgICAg
ICBjYXNlIEdMX0xJTkVBUl9NSVBNQVBfTElORUFSOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KIApAQCAtOTEsNiArOTIsNyBAQCBUZXh0dXJlU3Rh
dGU6OlRleHR1cmVTdGF0ZShHTGVudW0gdGFyZ2V0KQogICAgICAgbVNhbXBsZXJTdGF0ZShTYW1w
bGVyU3RhdGU6OkNyZWF0ZURlZmF1bHRGb3JUYXJnZXQodGFyZ2V0KSksCiAgICAgICBtQmFzZUxl
dmVsKDApLAogICAgICAgbU1heExldmVsKDEwMDApLAorICAgICAgbURlcHRoU3RlbmNpbFRleHR1
cmVNb2RlKEdMX0RFUFRIX0NPTVBPTkVOVCksCiAgICAgICBtSW1tdXRhYmxlRm9ybWF0KGZhbHNl
KSwKICAgICAgIG1JbW11dGFibGVMZXZlbHMoMCksCiAgICAgICBtVXNhZ2UoR0xfTk9ORSksCkBA
IC0xMTYsNyArMTE4LDcgQEAgR0x1aW50IFRleHR1cmVTdGF0ZTo6Z2V0RWZmZWN0aXZlQmFzZUxl
dmVsKCkgY29uc3QKICAgICAvLyBlZmZlY3RpdmUgYmFzZSBsZXZlbCB0byBtYXggbGV2ZWxzIHRo
ZXNlIGFycmF5cyBuZWVkIGp1c3Qgb25lIGV4dHJhIGl0ZW0gdG8gc3RvcmUgcHJvcGVydGllcwog
ICAgIC8vIHRoYXQgc2hvdWxkIGJlIHJldHVybmVkIGZvciBhbGwgb3V0LW9mLXJhbmdlIGJhc2Ug
bGV2ZWwgdmFsdWVzLCBpbnN0ZWFkIG9mIG5lZWRpbmcgc3BlY2lhbAogICAgIC8vIGhhbmRsaW5n
IGZvciBvdXQtb2YtcmFuZ2UgYmFzZSBsZXZlbHMuCi0gICAgcmV0dXJuIHN0ZDo6bWluKG1CYXNl
TGV2ZWwsIHN0YXRpY19jYXN0PEdMdWludD4oZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJF
X0xFVkVMUykpOworICAgIHJldHVybiBzdGQ6Om1pbihtQmFzZUxldmVsLCBzdGF0aWNfY2FzdDxH
THVpbnQ+KElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUykpOwogfQogCiBHTHVpbnQg
VGV4dHVyZVN0YXRlOjpnZXRFZmZlY3RpdmVNYXhMZXZlbCgpIGNvbnN0CkBAIC0xMzQsNyArMTM2
LDcgQEAgR0x1aW50IFRleHR1cmVTdGF0ZTo6Z2V0RWZmZWN0aXZlTWF4TGV2ZWwoKSBjb25zdAog
R0x1aW50IFRleHR1cmVTdGF0ZTo6Z2V0TWlwbWFwTWF4TGV2ZWwoKSBjb25zdAogewogICAgIGNv
bnN0IEltYWdlRGVzYyAmYmFzZUltYWdlRGVzYyA9IGdldEltYWdlRGVzYyhnZXRCYXNlSW1hZ2VU
YXJnZXQoKSwgZ2V0RWZmZWN0aXZlQmFzZUxldmVsKCkpOwotICAgIEdMdWludCBleHBlY3RlZE1p
cExldmVscyA9IDA7CisgICAgR0x1aW50IGV4cGVjdGVkTWlwTGV2ZWxzICAgICAgID0gMDsKICAg
ICBpZiAobVRhcmdldCA9PSBHTF9URVhUVVJFXzNEKQogICAgIHsKICAgICAgICAgY29uc3QgaW50
IG1heERpbSA9IHN0ZDo6bWF4KHN0ZDo6bWF4KGJhc2VJbWFnZURlc2Muc2l6ZS53aWR0aCwgYmFz
ZUltYWdlRGVzYy5zaXplLmhlaWdodCksCkBAIC0xNTQsOCArMTU2LDggQEAgYm9vbCBUZXh0dXJl
U3RhdGU6OnNldEJhc2VMZXZlbChHTHVpbnQgYmFzZUxldmVsKQogewogICAgIGlmIChtQmFzZUxl
dmVsICE9IGJhc2VMZXZlbCkKICAgICB7Ci0gICAgICAgIG1CYXNlTGV2ZWwgICAgICAgICAgICAg
ICAgICAgID0gYmFzZUxldmVsOwotICAgICAgICBtQ29tcGxldGVuZXNzQ2FjaGUuY2FjaGVWYWxp
ZCA9IGZhbHNlOworICAgICAgICBtQmFzZUxldmVsID0gYmFzZUxldmVsOworICAgICAgICBpbnZh
bGlkYXRlQ29tcGxldGVuZXNzQ2FjaGUoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
ICAgIHJldHVybiBmYWxzZTsKQEAgLTE2NSw4ICsxNjcsOCBAQCB2b2lkIFRleHR1cmVTdGF0ZTo6
c2V0TWF4TGV2ZWwoR0x1aW50IG1heExldmVsKQogewogICAgIGlmIChtTWF4TGV2ZWwgIT0gbWF4
TGV2ZWwpCiAgICAgewotICAgICAgICBtTWF4TGV2ZWwgICAgICAgICAgICAgICAgICAgICA9IG1h
eExldmVsOwotICAgICAgICBtQ29tcGxldGVuZXNzQ2FjaGUuY2FjaGVWYWxpZCA9IGZhbHNlOwor
ICAgICAgICBtTWF4TGV2ZWwgPSBtYXhMZXZlbDsKKyAgICAgICAgaW52YWxpZGF0ZUNvbXBsZXRl
bmVzc0NhY2hlKCk7CiAgICAgfQogfQogCkBAIC0xOTgsMjEgKzIwMCwzMCBAQCBib29sIFRleHR1
cmVTdGF0ZTo6aXNDdWJlQ29tcGxldGUoKSBjb25zdAogYm9vbCBUZXh0dXJlU3RhdGU6OmlzU2Ft
cGxlckNvbXBsZXRlKGNvbnN0IFNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0YSkgY29u
c3QKIHsKLSAgICBjb25zdCBJbWFnZURlc2MgJmJhc2VJbWFnZURlc2MgPSBnZXRJbWFnZURlc2Mo
Z2V0QmFzZUltYWdlVGFyZ2V0KCksIGdldEVmZmVjdGl2ZUJhc2VMZXZlbCgpKTsKLSAgICBjb25z
dCBUZXh0dXJlQ2FwcyAmdGV4dHVyZUNhcHMgPSBkYXRhLmdldFRleHR1cmVDYXAoYmFzZUltYWdl
RGVzYy5mb3JtYXQuYXNTaXplZCgpKTsKLSAgICBpZiAoIW1Db21wbGV0ZW5lc3NDYWNoZS5jYWNo
ZVZhbGlkIHx8IG1Db21wbGV0ZW5lc3NDYWNoZS5zYW1wbGVyU3RhdGUgIT0gc2FtcGxlclN0YXRl
IHx8Ci0gICAgICAgIG1Db21wbGV0ZW5lc3NDYWNoZS5maWx0ZXJhYmxlICE9IHRleHR1cmVDYXBz
LmZpbHRlcmFibGUgfHwKLSAgICAgICAgbUNvbXBsZXRlbmVzc0NhY2hlLmNsaWVudFZlcnNpb24g
IT0gZGF0YS5nZXRDbGllbnRNYWpvclZlcnNpb24oKSB8fAotICAgICAgICBtQ29tcGxldGVuZXNz
Q2FjaGUuc3VwcG9ydHNOUE9UICE9IGRhdGEuZ2V0RXh0ZW5zaW9ucygpLnRleHR1cmVOUE9UKQor
ICAgIGJvb2wgbmV3RW50cnkgID0gZmFsc2U7CisgICAgYXV0byBjYWNoZUl0ZXIgPSBtQ29tcGxl
dGVuZXNzQ2FjaGUuZmluZChkYXRhLmdldENvbnRleHRJRCgpKTsKKyAgICBpZiAoY2FjaGVJdGVy
ID09IG1Db21wbGV0ZW5lc3NDYWNoZS5lbmQoKSkKKyAgICB7CisgICAgICAgIC8vIEFkZCBhIG5l
dyBjYWNoZSBlbnRyeQorICAgICAgICBjYWNoZUl0ZXIgPSBtQ29tcGxldGVuZXNzQ2FjaGUKKyAg
ICAgICAgICAgICAgICAgICAgICAgIC5pbnNlcnQoc3RkOjptYWtlX3BhaXIoZGF0YS5nZXRDb250
ZXh0SUQoKSwgU2FtcGxlckNvbXBsZXRlbmVzc0NhY2hlKCkpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgLmZpcnN0OworICAgICAgICBuZXdFbnRyeSA9IHRydWU7CisgICAgfQorCisgICAgU2Ft
cGxlckNvbXBsZXRlbmVzc0NhY2hlICpjYWNoZUVudHJ5ID0gJmNhY2hlSXRlci0+c2Vjb25kOwor
ICAgIGlmIChuZXdFbnRyeSB8fCBjYWNoZUVudHJ5LT5zYW1wbGVyU3RhdGUgIT0gc2FtcGxlclN0
YXRlKQogICAgIHsKLSAgICAgICAgbUNvbXBsZXRlbmVzc0NhY2hlLmNhY2hlVmFsaWQgICAgICA9
IHRydWU7Ci0gICAgICAgIG1Db21wbGV0ZW5lc3NDYWNoZS5zYW1wbGVyU3RhdGUgICAgPSBzYW1w
bGVyU3RhdGU7Ci0gICAgICAgIG1Db21wbGV0ZW5lc3NDYWNoZS5maWx0ZXJhYmxlICAgICAgPSB0
ZXh0dXJlQ2Fwcy5maWx0ZXJhYmxlOwotICAgICAgICBtQ29tcGxldGVuZXNzQ2FjaGUuY2xpZW50
VmVyc2lvbiAgID0gZGF0YS5nZXRDbGllbnRNYWpvclZlcnNpb24oKTsKLSAgICAgICAgbUNvbXBs
ZXRlbmVzc0NhY2hlLnN1cHBvcnRzTlBPVCAgICA9IGRhdGEuZ2V0RXh0ZW5zaW9ucygpLnRleHR1
cmVOUE9UOwotICAgICAgICBtQ29tcGxldGVuZXNzQ2FjaGUuc2FtcGxlckNvbXBsZXRlID0gY29t
cHV0ZVNhbXBsZXJDb21wbGV0ZW5lc3Moc2FtcGxlclN0YXRlLCBkYXRhKTsKKyAgICAgICAgY2Fj
aGVFbnRyeS0+c2FtcGxlclN0YXRlICAgID0gc2FtcGxlclN0YXRlOworICAgICAgICBjYWNoZUVu
dHJ5LT5zYW1wbGVyQ29tcGxldGUgPSBjb21wdXRlU2FtcGxlckNvbXBsZXRlbmVzcyhzYW1wbGVy
U3RhdGUsIGRhdGEpOwogICAgIH0KLSAgICByZXR1cm4gbUNvbXBsZXRlbmVzc0NhY2hlLnNhbXBs
ZXJDb21wbGV0ZTsKKworICAgIHJldHVybiBjYWNoZUVudHJ5LT5zYW1wbGVyQ29tcGxldGU7Cit9
CisKK3ZvaWQgVGV4dHVyZVN0YXRlOjppbnZhbGlkYXRlQ29tcGxldGVuZXNzQ2FjaGUoKQorewor
ICAgIG1Db21wbGV0ZW5lc3NDYWNoZS5jbGVhcigpOwogfQogCiBib29sIFRleHR1cmVTdGF0ZTo6
Y29tcHV0ZVNhbXBsZXJDb21wbGV0ZW5lc3MoY29uc3QgU2FtcGxlclN0YXRlICZzYW1wbGVyU3Rh
dGUsCkBAIC0yMzAsNyArMjQxLDcgQEAgYm9vbCBUZXh0dXJlU3RhdGU6OmNvbXB1dGVTYW1wbGVy
Q29tcGxldGVuZXNzKGNvbnN0IFNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlLAogICAgIH0KICAg
ICAvLyBUaGUgY2FzZXMgd2hlcmUgdGhlIHRleHR1cmUgaXMgaW5jb21wbGV0ZSBiZWNhdXNlIGJh
c2UgbGV2ZWwgaXMgb3V0IG9mIHJhbmdlIHNob3VsZCBiZQogICAgIC8vIGhhbmRsZWQgYnkgdGhl
IGFib3ZlIGNvbmRpdGlvbi4KLSAgICBBU1NFUlQobUJhc2VMZXZlbCA8IGdsOjpJTVBMRU1FTlRB
VElPTl9NQVhfVEVYVFVSRV9MRVZFTFMgfHwgbUltbXV0YWJsZUZvcm1hdCk7CisgICAgQVNTRVJU
KG1CYXNlTGV2ZWwgPCBJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMgfHwgbUltbXV0
YWJsZUZvcm1hdCk7CiAKICAgICBpZiAobVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQICYm
IGJhc2VJbWFnZURlc2Muc2l6ZS53aWR0aCAhPSBiYXNlSW1hZ2VEZXNjLnNpemUuaGVpZ2h0KQog
ICAgIHsKQEAgLTI0NSw4ICsyNTYsOCBAQCBib29sIFRleHR1cmVTdGF0ZTo6Y29tcHV0ZVNhbXBs
ZXJDb21wbGV0ZW5lc3MoY29uc3QgU2FtcGxlclN0YXRlICZzYW1wbGVyU3RhdGUsCiAgICAgYm9v
bCBucG90U3VwcG9ydCA9IGRhdGEuZ2V0RXh0ZW5zaW9ucygpLnRleHR1cmVOUE9UIHx8IGRhdGEu
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMzsKICAgICBpZiAoIW5wb3RTdXBwb3J0KQogICAg
IHsKLSAgICAgICAgaWYgKChzYW1wbGVyU3RhdGUud3JhcFMgIT0gR0xfQ0xBTVBfVE9fRURHRSAm
JiAhZ2w6OmlzUG93MihiYXNlSW1hZ2VEZXNjLnNpemUud2lkdGgpKSB8fAotICAgICAgICAgICAg
KHNhbXBsZXJTdGF0ZS53cmFwVCAhPSBHTF9DTEFNUF9UT19FREdFICYmICFnbDo6aXNQb3cyKGJh
c2VJbWFnZURlc2Muc2l6ZS5oZWlnaHQpKSkKKyAgICAgICAgaWYgKChzYW1wbGVyU3RhdGUud3Jh
cFMgIT0gR0xfQ0xBTVBfVE9fRURHRSAmJiAhaXNQb3cyKGJhc2VJbWFnZURlc2Muc2l6ZS53aWR0
aCkpIHx8CisgICAgICAgICAgICAoc2FtcGxlclN0YXRlLndyYXBUICE9IEdMX0NMQU1QX1RPX0VE
R0UgJiYgIWlzUG93MihiYXNlSW1hZ2VEZXNjLnNpemUuaGVpZ2h0KSkpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMjU2LDcgKzI2Nyw3IEBAIGJv
b2wgVGV4dHVyZVN0YXRlOjpjb21wdXRlU2FtcGxlckNvbXBsZXRlbmVzcyhjb25zdCBTYW1wbGVy
U3RhdGUgJnNhbXBsZXJTdGF0ZSwKICAgICB7CiAgICAgICAgIGlmICghbnBvdFN1cHBvcnQpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghZ2w6OmlzUG93MihiYXNlSW1hZ2VEZXNjLnNpemUu
d2lkdGgpIHx8ICFnbDo6aXNQb3cyKGJhc2VJbWFnZURlc2Muc2l6ZS5oZWlnaHQpKQorICAgICAg
ICAgICAgaWYgKCFpc1BvdzIoYmFzZUltYWdlRGVzYy5zaXplLndpZHRoKSB8fCAhaXNQb3cyKGJh
c2VJbWFnZURlc2Muc2l6ZS5oZWlnaHQpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KQEAgLTQxMiwxMSArNDIzLDIwIEBAIEdMZW51
bSBUZXh0dXJlU3RhdGU6OmdldEJhc2VJbWFnZVRhcmdldCgpIGNvbnN0CiAgICAgcmV0dXJuIG1U
YXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCA/IEZpcnN0Q3ViZU1hcFRleHR1cmVUYXJnZXQg
OiBtVGFyZ2V0OwogfQogCi1JbWFnZURlc2M6OkltYWdlRGVzYygpIDogSW1hZ2VEZXNjKEV4dGVu
dHMoMCwgMCwgMCksIEZvcm1hdDo6SW52YWxpZCgpKQorSW1hZ2VEZXNjOjpJbWFnZURlc2MoKSA6
IEltYWdlRGVzYyhFeHRlbnRzKDAsIDAsIDApLCBGb3JtYXQ6OkludmFsaWQoKSwgMCwgR0xfVFJV
RSkKIHsKIH0KIAotSW1hZ2VEZXNjOjpJbWFnZURlc2MoY29uc3QgRXh0ZW50cyAmc2l6ZSwgY29u
c3QgRm9ybWF0ICZmb3JtYXQpIDogc2l6ZShzaXplKSwgZm9ybWF0KGZvcm1hdCkKK0ltYWdlRGVz
Yzo6SW1hZ2VEZXNjKGNvbnN0IEV4dGVudHMgJnNpemUsIGNvbnN0IEZvcm1hdCAmZm9ybWF0KQor
ICAgIDogc2l6ZShzaXplKSwgZm9ybWF0KGZvcm1hdCksIHNhbXBsZXMoMCksIGZpeGVkU2FtcGxl
TG9jYXRpb25zKEdMX1RSVUUpCit7Cit9CisKK0ltYWdlRGVzYzo6SW1hZ2VEZXNjKGNvbnN0IEV4
dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBGb3JtYXQgJmZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMYm9vbGVhbiBmaXhlZFNhbXBsZUxvY2F0aW9ucykKKyAgICA6IHNp
emUoc2l6ZSksIGZvcm1hdChmb3JtYXQpLCBzYW1wbGVzKHNhbXBsZXMpLCBmaXhlZFNhbXBsZUxv
Y2F0aW9ucyhmaXhlZFNhbXBsZUxvY2F0aW9ucykKIHsKIH0KIApAQCAtNDMxLDggKzQ1MSw4IEBA
IHZvaWQgVGV4dHVyZVN0YXRlOjpzZXRJbWFnZURlc2MoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxl
dmVsLCBjb25zdCBJbWFnZURlc2MgJmRlCiB7CiAgICAgc2l6ZV90IGRlc2NJbmRleCA9IEdldElt
YWdlRGVzY0luZGV4KHRhcmdldCwgbGV2ZWwpOwogICAgIEFTU0VSVChkZXNjSW5kZXggPCBtSW1h
Z2VEZXNjcy5zaXplKCkpOwotICAgIG1JbWFnZURlc2NzW2Rlc2NJbmRleF0gICAgICAgID0gZGVz
YzsKLSAgICBtQ29tcGxldGVuZXNzQ2FjaGUuY2FjaGVWYWxpZCA9IGZhbHNlOworICAgIG1JbWFn
ZURlc2NzW2Rlc2NJbmRleF0gPSBkZXNjOworICAgIGludmFsaWRhdGVDb21wbGV0ZW5lc3NDYWNo
ZSgpOwogfQogCiB2b2lkIFRleHR1cmVTdGF0ZTo6c2V0SW1hZ2VEZXNjQ2hhaW4oR0x1aW50IGJh
c2VMZXZlbCwKQEAgLTQ2NCw2ICs0ODQsMTYgQEAgdm9pZCBUZXh0dXJlU3RhdGU6OnNldEltYWdl
RGVzY0NoYWluKEdMdWludCBiYXNlTGV2ZWwsCiAgICAgfQogfQogCit2b2lkIFRleHR1cmVTdGF0
ZTo6c2V0SW1hZ2VEZXNjQ2hhaW5NdWx0aXNhbXBsZShFeHRlbnRzIGJhc2VTaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9ybWF0ICZm
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlvbnMpCit7CisgICAgQVNTRVJUKG1U
YXJnZXQgPT0gR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRSk7CisgICAgSW1hZ2VEZXNjIGxldmVs
SW5mbyhiYXNlU2l6ZSwgZm9ybWF0LCBzYW1wbGVzLCBmaXhlZFNhbXBsZUxvY2F0aW9ucyk7Cisg
ICAgc2V0SW1hZ2VEZXNjKG1UYXJnZXQsIDAsIGxldmVsSW5mbyk7Cit9CisKIHZvaWQgVGV4dHVy
ZVN0YXRlOjpjbGVhckltYWdlRGVzYyhHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpCiB7CiAg
ICAgc2V0SW1hZ2VEZXNjKHRhcmdldCwgbGV2ZWwsIEltYWdlRGVzYygpKTsKQEAgLTQ3NSwxNiAr
NTA1LDExIEBAIHZvaWQgVGV4dHVyZVN0YXRlOjpjbGVhckltYWdlRGVzY3MoKQogICAgIHsKICAg
ICAgICAgbUltYWdlRGVzY3NbZGVzY0luZGV4XSA9IEltYWdlRGVzYygpOwogICAgIH0KLSAgICBt
Q29tcGxldGVuZXNzQ2FjaGUuY2FjaGVWYWxpZCA9IGZhbHNlOworICAgIGludmFsaWRhdGVDb21w
bGV0ZW5lc3NDYWNoZSgpOwogfQogCiBUZXh0dXJlU3RhdGU6OlNhbXBsZXJDb21wbGV0ZW5lc3ND
YWNoZTo6U2FtcGxlckNvbXBsZXRlbmVzc0NhY2hlKCkKLSAgICA6IGNhY2hlVmFsaWQoZmFsc2Up
LAotICAgICAgc2FtcGxlclN0YXRlKCksCi0gICAgICBmaWx0ZXJhYmxlKGZhbHNlKSwKLSAgICAg
IGNsaWVudFZlcnNpb24oMCksCi0gICAgICBzdXBwb3J0c05QT1QoZmFsc2UpLAotICAgICAgc2Ft
cGxlckNvbXBsZXRlKGZhbHNlKQorICAgIDogc2FtcGxlclN0YXRlKCksIHNhbXBsZXJDb21wbGV0
ZShmYWxzZSkKIHsKIH0KIApAQCAtNjgzLDYgKzcwOCwxNyBAQCBHTGVudW0gVGV4dHVyZTo6Z2V0
Q29tcGFyZUZ1bmMoKSBjb25zdAogICAgIHJldHVybiBtU3RhdGUubVNhbXBsZXJTdGF0ZS5jb21w
YXJlRnVuYzsKIH0KIAordm9pZCBUZXh0dXJlOjpzZXRTUkdCRGVjb2RlKEdMZW51bSBzUkdCRGVj
b2RlKQoreworICAgIG1TdGF0ZS5tU2FtcGxlclN0YXRlLnNSR0JEZWNvZGUgPSBzUkdCRGVjb2Rl
OworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9TUkdCX0RFQ09ERSk7Cit9CisKK0dMZW51
bSBUZXh0dXJlOjpnZXRTUkdCRGVjb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRlLm1T
YW1wbGVyU3RhdGUuc1JHQkRlY29kZTsKK30KKwogY29uc3QgU2FtcGxlclN0YXRlICZUZXh0dXJl
OjpnZXRTYW1wbGVyU3RhdGUoKSBjb25zdAogewogICAgIHJldHVybiBtU3RhdGUubVNhbXBsZXJT
dGF0ZTsKQEAgLTcxMyw2ICs3NDksMjMgQEAgR0x1aW50IFRleHR1cmU6OmdldE1heExldmVsKCkg
Y29uc3QKICAgICByZXR1cm4gbVN0YXRlLm1NYXhMZXZlbDsKIH0KIAordm9pZCBUZXh0dXJlOjpz
ZXREZXB0aFN0ZW5jaWxUZXh0dXJlTW9kZShHTGVudW0gbW9kZSkKK3sKKyAgICBpZiAobW9kZSAh
PSBtU3RhdGUubURlcHRoU3RlbmNpbFRleHR1cmVNb2RlKQorICAgIHsKKyAgICAgICAgLy8gQ2hh
bmdpbmcgdGhlIG1vZGUgZnJvbSB0aGUgZGVmYXVsdCBzdGF0ZSAoR0xfREVQVEhfQ09NUE9ORU5U
KSBpcyBub3QgaW1wbGVtZW50ZWQgeWV0CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB9
CisKKyAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IGFkZCBkaXJ0eSBiaXRzCisgICAgbVN0YXRlLm1E
ZXB0aFN0ZW5jaWxUZXh0dXJlTW9kZSA9IG1vZGU7Cit9CisKK0dMZW51bSBUZXh0dXJlOjpnZXRE
ZXB0aFN0ZW5jaWxUZXh0dXJlTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5tRGVw
dGhTdGVuY2lsVGV4dHVyZU1vZGU7Cit9CisKIGJvb2wgVGV4dHVyZTo6Z2V0SW1tdXRhYmxlRm9y
bWF0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbVN0YXRlLm1JbW11dGFibGVGb3JtYXQ7CkBAIC03
NjcsNiArODIwLDIwIEBAIGNvbnN0IEZvcm1hdCAmVGV4dHVyZTo6Z2V0Rm9ybWF0KEdMZW51bSB0
YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3QKICAgICByZXR1cm4gbVN0YXRlLmdldEltYWdlRGVz
Yyh0YXJnZXQsIGxldmVsKS5mb3JtYXQ7CiB9CiAKK0dMc2l6ZWkgVGV4dHVyZTo6Z2V0U2FtcGxl
cyhHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNvbnN0Cit7CisgICAgQVNTRVJUKHRhcmdl
dCA9PSBtU3RhdGUubVRhcmdldCB8fAorICAgICAgICAgICAobVN0YXRlLm1UYXJnZXQgPT0gR0xf
VEVYVFVSRV9DVUJFX01BUCAmJiBJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpKTsKKyAg
ICByZXR1cm4gbVN0YXRlLmdldEltYWdlRGVzYyh0YXJnZXQsIGxldmVsKS5zYW1wbGVzOworfQor
CitHTGJvb2xlYW4gVGV4dHVyZTo6Z2V0Rml4ZWRTYW1wbGVMb2NhdGlvbnMoR0xlbnVtIHRhcmdl
dCwgc2l6ZV90IGxldmVsKSBjb25zdAoreworICAgIEFTU0VSVCh0YXJnZXQgPT0gbVN0YXRlLm1U
YXJnZXQgfHwKKyAgICAgICAgICAgKG1TdGF0ZS5tVGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9N
QVAgJiYgSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpKSk7CisgICAgcmV0dXJuIG1TdGF0
ZS5nZXRJbWFnZURlc2ModGFyZ2V0LCBsZXZlbCkuZml4ZWRTYW1wbGVMb2NhdGlvbnM7Cit9CisK
IGJvb2wgVGV4dHVyZTo6aXNNaXBtYXBDb21wbGV0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1T
dGF0ZS5jb21wdXRlTWlwbWFwQ29tcGxldGVuZXNzKCk7CkBAIC03ODIsNyArODQ5LDE0IEBAIGVn
bDo6U3RyZWFtICpUZXh0dXJlOjpnZXRCb3VuZFN0cmVhbSgpIGNvbnN0CiAgICAgcmV0dXJuIG1C
b3VuZFN0cmVhbTsKIH0KIAotRXJyb3IgVGV4dHVyZTo6c2V0SW1hZ2UoY29uc3QgUGl4ZWxVbnBh
Y2tTdGF0ZSAmdW5wYWNrU3RhdGUsCit2b2lkIFRleHR1cmU6OmludmFsaWRhdGVDb21wbGV0ZW5l
c3NDYWNoZSgpCit7CisgICAgbVN0YXRlLmludmFsaWRhdGVDb21wbGV0ZW5lc3NDYWNoZSgpOwor
ICAgIG1EaXJ0eUNoYW5uZWwuc2lnbmFsKCk7Cit9CisKK0Vycm9yIFRleHR1cmU6OnNldEltYWdl
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQ
aXhlbFVucGFja1N0YXRlICZ1bnBhY2tTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCkBAIC03OTgsOCArODcy
LDggQEAgRXJyb3IgVGV4dHVyZTo6c2V0SW1hZ2UoY29uc3QgUGl4ZWxVbnBhY2tTdGF0ZSAmdW5w
YWNrU3RhdGUsCiAgICAgcmVsZWFzZVRleEltYWdlSW50ZXJuYWwoKTsKICAgICBvcnBoYW5JbWFn
ZXMoKTsKIAotICAgIEFOR0xFX1RSWSgKLSAgICAgICAgbVRleHR1cmUtPnNldEltYWdlKHRhcmdl
dCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBzaXplLCBmb3JtYXQsIHR5cGUsIHVucGFja1N0YXRl
LCBwaXhlbHMpKTsKKyAgICBBTkdMRV9UUlkobVRleHR1cmUtPnNldEltYWdlKHJ4OjpTYWZlR2V0
SW1wbChjb250ZXh0KSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHR5cGUsIHVucGFja1N0YXRlLCBw
aXhlbHMpKTsKIAogICAgIG1TdGF0ZS5zZXRJbWFnZURlc2ModGFyZ2V0LCBsZXZlbCwgSW1hZ2VE
ZXNjKHNpemUsIEZvcm1hdChpbnRlcm5hbEZvcm1hdCwgZm9ybWF0LCB0eXBlKSkpOwogICAgIG1E
aXJ0eUNoYW5uZWwuc2lnbmFsKCk7CkBAIC04MDcsNyArODgxLDggQEAgRXJyb3IgVGV4dHVyZTo6
c2V0SW1hZ2UoY29uc3QgUGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrU3RhdGUsCiAgICAgcmV0dXJu
IE5vRXJyb3IoKTsKIH0KIAotRXJyb3IgVGV4dHVyZTo6c2V0U3ViSW1hZ2UoY29uc3QgUGl4ZWxV
bnBhY2tTdGF0ZSAmdW5wYWNrU3RhdGUsCitFcnJvciBUZXh0dXJlOjpzZXRTdWJJbWFnZShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGl4
ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQm94ICZhcmVhLApAQCAtODE3LDEwICs4
OTIsMTIgQEAgRXJyb3IgVGV4dHVyZTo6c2V0U3ViSW1hZ2UoY29uc3QgUGl4ZWxVbnBhY2tTdGF0
ZSAmdW5wYWNrU3RhdGUsCiB7CiAgICAgQVNTRVJUKHRhcmdldCA9PSBtU3RhdGUubVRhcmdldCB8
fAogICAgICAgICAgICAobVN0YXRlLm1UYXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCAmJiBJ
c0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpKTsKLSAgICByZXR1cm4gbVRleHR1cmUtPnNl
dFN1YkltYWdlKHRhcmdldCwgbGV2ZWwsIGFyZWEsIGZvcm1hdCwgdHlwZSwgdW5wYWNrU3RhdGUs
IHBpeGVscyk7CisgICAgcmV0dXJuIG1UZXh0dXJlLT5zZXRTdWJJbWFnZShyeDo6U2FmZUdldElt
cGwoY29udGV4dCksIHRhcmdldCwgbGV2ZWwsIGFyZWEsIGZvcm1hdCwgdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVucGFja1N0YXRlLCBwaXhlbHMpOwogfQogCi1FcnJv
ciBUZXh0dXJlOjpzZXRDb21wcmVzc2VkSW1hZ2UoY29uc3QgUGl4ZWxVbnBhY2tTdGF0ZSAmdW5w
YWNrU3RhdGUsCitFcnJvciBUZXh0dXJlOjpzZXRDb21wcmVzc2VkSW1hZ2UoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQaXhl
bFVucGFja1N0YXRlICZ1bnBhY2tTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxGb3JtYXQsCkBAIC04MzUsOCArOTEyLDggQEAgRXJyb3IgVGV4dHVyZTo6c2V0Q29tcHJl
c3NlZEltYWdlKGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFja1N0YXRlLAogICAgIHJlbGVh
c2VUZXhJbWFnZUludGVybmFsKCk7CiAgICAgb3JwaGFuSW1hZ2VzKCk7CiAKLSAgICBBTkdMRV9U
UlkobVRleHR1cmUtPnNldENvbXByZXNzZWRJbWFnZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZv
cm1hdCwgc2l6ZSwgdW5wYWNrU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW1hZ2VTaXplLCBwaXhlbHMpKTsKKyAgICBBTkdMRV9UUlkobVRleHR1cmUt
PnNldENvbXByZXNzZWRJbWFnZShyeDo6U2FmZUdldEltcGwoY29udGV4dCksIHRhcmdldCwgbGV2
ZWwsIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemUsIHVucGFja1N0YXRlLCBpbWFnZVNpemUsIHBpeGVscykpOwogCiAgICAgbVN0
YXRlLnNldEltYWdlRGVzYyh0YXJnZXQsIGxldmVsLCBJbWFnZURlc2Moc2l6ZSwgRm9ybWF0KGlu
dGVybmFsRm9ybWF0KSkpOwogICAgIG1EaXJ0eUNoYW5uZWwuc2lnbmFsKCk7CkBAIC04NDQsNyAr
OTIxLDggQEAgRXJyb3IgVGV4dHVyZTo6c2V0Q29tcHJlc3NlZEltYWdlKGNvbnN0IFBpeGVsVW5w
YWNrU3RhdGUgJnVucGFja1N0YXRlLAogICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKLUVycm9y
IFRleHR1cmU6OnNldENvbXByZXNzZWRTdWJJbWFnZShjb25zdCBQaXhlbFVucGFja1N0YXRlICZ1
bnBhY2tTdGF0ZSwKK0Vycm9yIFRleHR1cmU6OnNldENvbXByZXNzZWRTdWJJbWFnZShjb25zdCBD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFja1N0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEJveCAmYXJlYSwKQEAgLTg1NSwxMSArOTMzLDE1IEBAIEVycm9yIFRleHR1
cmU6OnNldENvbXByZXNzZWRTdWJJbWFnZShjb25zdCBQaXhlbFVucGFja1N0YXRlICZ1bnBhY2tT
dGF0ZSwKICAgICBBU1NFUlQodGFyZ2V0ID09IG1TdGF0ZS5tVGFyZ2V0IHx8CiAgICAgICAgICAg
IChtU3RhdGUubVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQICYmIElzQ3ViZU1hcFRleHR1
cmVUYXJnZXQodGFyZ2V0KSkpOwogCi0gICAgcmV0dXJuIG1UZXh0dXJlLT5zZXRDb21wcmVzc2Vk
U3ViSW1hZ2UodGFyZ2V0LCBsZXZlbCwgYXJlYSwgZm9ybWF0LCB1bnBhY2tTdGF0ZSwgaW1hZ2VT
aXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVscyk7
CisgICAgcmV0dXJuIG1UZXh0dXJlLT5zZXRDb21wcmVzc2VkU3ViSW1hZ2Uocng6OlNhZmVHZXRJ
bXBsKGNvbnRleHQpLCB0YXJnZXQsIGxldmVsLCBhcmVhLCBmb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wYWNrU3RhdGUsIGltYWdlU2l6ZSwgcGl4
ZWxzKTsKIH0KIAotRXJyb3IgVGV4dHVyZTo6Y29weUltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVf
dCBsZXZlbCwgY29uc3QgUmVjdGFuZ2xlICZzb3VyY2VBcmVhLCBHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsCitFcnJvciBUZXh0dXJlOjpjb3B5SW1hZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWN0
YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVy
bmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyICpz
b3VyY2UpCiB7CiAgICAgQVNTRVJUKHRhcmdldCA9PSBtU3RhdGUubVRhcmdldCB8fApAQCAtODY5
LDcgKzk1MSw4IEBAIEVycm9yIFRleHR1cmU6OmNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXpl
X3QgbGV2ZWwsIGNvbnN0IFJlY3RhbmdsZSAmc291cmNlQXJlCiAgICAgcmVsZWFzZVRleEltYWdl
SW50ZXJuYWwoKTsKICAgICBvcnBoYW5JbWFnZXMoKTsKIAotICAgIEFOR0xFX1RSWShtVGV4dHVy
ZS0+Y29weUltYWdlKHRhcmdldCwgbGV2ZWwsIHNvdXJjZUFyZWEsIGludGVybmFsRm9ybWF0LCBz
b3VyY2UpKTsKKyAgICBBTkdMRV9UUlkobVRleHR1cmUtPmNvcHlJbWFnZShyeDo6U2FmZUdldElt
cGwoY29udGV4dCksIHRhcmdldCwgbGV2ZWwsIHNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQsIHNvdXJjZSkpOwogCiAgICAgY29uc3Qg
R0xlbnVtIHNpemVkRm9ybWF0ID0gR2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1h
dCwgR0xfVU5TSUdORURfQllURSk7CiAgICAgbVN0YXRlLnNldEltYWdlRGVzYyh0YXJnZXQsIGxl
dmVsLCBJbWFnZURlc2MoRXh0ZW50cyhzb3VyY2VBcmVhLndpZHRoLCBzb3VyY2VBcmVhLmhlaWdo
dCwgMSksCkBAIC04NzksNTUgKzk2Miw3NiBAQCBFcnJvciBUZXh0dXJlOjpjb3B5SW1hZ2UoR0xl
bnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBSZWN0YW5nbGUgJnNvdXJjZUFyZQogICAg
IHJldHVybiBOb0Vycm9yKCk7CiB9CiAKLUVycm9yIFRleHR1cmU6OmNvcHlTdWJJbWFnZShHTGVu
dW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IE9mZnNldCAmZGVzdE9mZnNldCwgY29uc3Qg
UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorRXJyb3IgVGV4dHVyZTo6Y29weVN1YkltYWdlKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgT2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlY3RhbmdsZSAmc291cmNlQXJlYSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlciAqc291cmNlKQogewogICAgIEFT
U0VSVCh0YXJnZXQgPT0gbVN0YXRlLm1UYXJnZXQgfHwKICAgICAgICAgICAgKG1TdGF0ZS5tVGFy
Z2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJn
ZXQpKSk7CiAKLSAgICByZXR1cm4gbVRleHR1cmUtPmNvcHlTdWJJbWFnZSh0YXJnZXQsIGxldmVs
LCBkZXN0T2Zmc2V0LCBzb3VyY2VBcmVhLCBzb3VyY2UpOworICAgIHJldHVybiBtVGV4dHVyZS0+
Y29weVN1YkltYWdlKHJ4OjpTYWZlR2V0SW1wbChjb250ZXh0KSwgdGFyZ2V0LCBsZXZlbCwgZGVz
dE9mZnNldCwgc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
b3VyY2UpOwogfQogCi1FcnJvciBUZXh0dXJlOjpjb3B5VGV4dHVyZShHTGVudW0gaW50ZXJuYWxG
b3JtYXQsCitFcnJvciBUZXh0dXJlOjpjb3B5VGV4dHVyZShjb25zdCBDb250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNvdXJjZUxldmVsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tGbGlwWSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrVW5tdWx0aXBseUFscGhhLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZSAqc291cmNlKQogeworICAgIEFTU0VSVCh0YXJn
ZXQgPT0gbVN0YXRlLm1UYXJnZXQgfHwKKyAgICAgICAgICAgKG1TdGF0ZS5tVGFyZ2V0ID09IEdM
X1RFWFRVUkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpKSk7CisK
ICAgICAvLyBSZWxlYXNlIGZyb20gcHJldmlvdXMgY2FsbHMgdG8gZWdsQmluZFRleEltYWdlLCB0
byBhdm9pZCBjYWxsaW5nIHRoZSBJbXBsIGFmdGVyCiAgICAgcmVsZWFzZVRleEltYWdlSW50ZXJu
YWwoKTsKICAgICBvcnBoYW5JbWFnZXMoKTsKIAotICAgIEFOR0xFX1RSWShtVGV4dHVyZS0+Y29w
eVRleHR1cmUoaW50ZXJuYWxGb3JtYXQsIHR5cGUsIHVucGFja0ZsaXBZLCB1bnBhY2tQcmVtdWx0
aXBseUFscGhhLAorICAgIEFOR0xFX1RSWShtVGV4dHVyZS0+Y29weVRleHR1cmUocng6OlNhZmVH
ZXRJbXBsKGNvbnRleHQpLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUxldmVsLCB1bnBhY2tGbGlw
WSwgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVucGFja1VubXVsdGlwbHlBbHBoYSwgc291cmNlKSk7CiAKICAgICBjb25zdCBhdXRv
ICZzb3VyY2VEZXNjICAgPSBzb3VyY2UtPm1TdGF0ZS5nZXRJbWFnZURlc2Moc291cmNlLT5nZXRU
YXJnZXQoKSwgMCk7CiAgICAgY29uc3QgR0xlbnVtIHNpemVkRm9ybWF0ID0gR2V0U2l6ZWRJbnRl
cm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCwgdHlwZSk7Ci0gICAgbVN0YXRlLnNldEltYWdlRGVz
YyhnZXRUYXJnZXQoKSwgMCwgSW1hZ2VEZXNjKHNvdXJjZURlc2Muc2l6ZSwgRm9ybWF0KHNpemVk
Rm9ybWF0KSkpOworICAgIG1TdGF0ZS5zZXRJbWFnZURlc2ModGFyZ2V0LCBsZXZlbCwgSW1hZ2VE
ZXNjKHNvdXJjZURlc2Muc2l6ZSwgRm9ybWF0KHNpemVkRm9ybWF0KSkpOwogICAgIG1EaXJ0eUNo
YW5uZWwuc2lnbmFsKCk7CiAKICAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCi1FcnJvciBUZXh0
dXJlOjpjb3B5U3ViVGV4dHVyZShjb25zdCBPZmZzZXQgJmRlc3RPZmZzZXQsCitFcnJvciBUZXh0
dXJlOjpjb3B5U3ViVGV4dHVyZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IE9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBzb3VyY2VMZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlY3Rh
bmdsZSAmc291cmNlQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5w
YWNrRmxpcFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1ByZW11
bHRpcGx5QWxwaGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1Vu
bXVsdGlwbHlBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1
cmUgKnNvdXJjZSkKIHsKLSAgICByZXR1cm4gbVRleHR1cmUtPmNvcHlTdWJUZXh0dXJlKGRlc3RP
ZmZzZXQsIHNvdXJjZUFyZWEsIHVucGFja0ZsaXBZLCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAor
ICAgIEFTU0VSVCh0YXJnZXQgPT0gbVN0YXRlLm1UYXJnZXQgfHwKKyAgICAgICAgICAgKG1TdGF0
ZS5tVGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFwVGV4dHVyZVRhcmdl
dCh0YXJnZXQpKSk7CisKKyAgICByZXR1cm4gbVRleHR1cmUtPmNvcHlTdWJUZXh0dXJlKHJ4OjpT
YWZlR2V0SW1wbChjb250ZXh0KSwgdGFyZ2V0LCBsZXZlbCwgZGVzdE9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUxldmVsLCBzb3VyY2VBcmVhLCB1bnBh
Y2tGbGlwWSwgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVucGFja1VubXVsdGlwbHlBbHBoYSwgc291cmNlKTsKIH0KIAotRXJyb3Ig
VGV4dHVyZTo6Y29weUNvbXByZXNzZWRUZXh0dXJlKGNvbnN0IFRleHR1cmUgKnNvdXJjZSkKK0Vy
cm9yIFRleHR1cmU6OmNvcHlDb21wcmVzc2VkVGV4dHVyZShjb25zdCBDb250ZXh0ICpjb250ZXh0
LCBjb25zdCBUZXh0dXJlICpzb3VyY2UpCiB7CiAgICAgLy8gUmVsZWFzZSBmcm9tIHByZXZpb3Vz
IGNhbGxzIHRvIGVnbEJpbmRUZXhJbWFnZSwgdG8gYXZvaWQgY2FsbGluZyB0aGUgSW1wbCBhZnRl
cgogICAgIHJlbGVhc2VUZXhJbWFnZUludGVybmFsKCk7CiAgICAgb3JwaGFuSW1hZ2VzKCk7CiAK
LSAgICBBTkdMRV9UUlkobVRleHR1cmUtPmNvcHlDb21wcmVzc2VkVGV4dHVyZShzb3VyY2UpKTsK
KyAgICBBTkdMRV9UUlkobVRleHR1cmUtPmNvcHlDb21wcmVzc2VkVGV4dHVyZShyeDo6U2FmZUdl
dEltcGwoY29udGV4dCksIHNvdXJjZSkpOwogCiAgICAgQVNTRVJUKHNvdXJjZS0+Z2V0VGFyZ2V0
KCkgIT0gR0xfVEVYVFVSRV9DVUJFX01BUCAmJiBnZXRUYXJnZXQoKSAhPSBHTF9URVhUVVJFX0NV
QkVfTUFQKTsKICAgICBjb25zdCBhdXRvICZzb3VyY2VEZXNjID0gc291cmNlLT5tU3RhdGUuZ2V0
SW1hZ2VEZXNjKHNvdXJjZS0+Z2V0VGFyZ2V0KCksIDApOwpAQCAtOTM2LDcgKzEwNDAsMTEgQEAg
RXJyb3IgVGV4dHVyZTo6Y29weUNvbXByZXNzZWRUZXh0dXJlKGNvbnN0IFRleHR1cmUgKnNvdXJj
ZSkKICAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCi1FcnJvciBUZXh0dXJlOjpzZXRTdG9yYWdl
KEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNv
bnN0IEV4dGVudHMgJnNpemUpCitFcnJvciBUZXh0dXJlOjpzZXRTdG9yYWdlKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2ZWxzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEV4dGVudHMgJnNpemUpCiB7CiAgICAgQVNTRVJUKHRhcmdldCA9PSBtU3RhdGUu
bVRhcmdldCk7CiAKQEAgLTk0NCw3ICsxMDUyLDcgQEAgRXJyb3IgVGV4dHVyZTo6c2V0U3RvcmFn
ZShHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxldmVscywgR0xlbnVtIGludGVybmFsRm9ybWF0LAog
ICAgIHJlbGVhc2VUZXhJbWFnZUludGVybmFsKCk7CiAgICAgb3JwaGFuSW1hZ2VzKCk7CiAKLSAg
ICBBTkdMRV9UUlkobVRleHR1cmUtPnNldFN0b3JhZ2UodGFyZ2V0LCBsZXZlbHMsIGludGVybmFs
Rm9ybWF0LCBzaXplKSk7CisgICAgQU5HTEVfVFJZKG1UZXh0dXJlLT5zZXRTdG9yYWdlKHJ4OjpT
YWZlR2V0SW1wbChjb250ZXh0KSwgdGFyZ2V0LCBsZXZlbHMsIGludGVybmFsRm9ybWF0LCBzaXpl
KSk7CiAKICAgICBtU3RhdGUubUltbXV0YWJsZUZvcm1hdCA9IHRydWU7CiAgICAgbVN0YXRlLm1J
bW11dGFibGVMZXZlbHMgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KGxldmVscyk7CkBAIC05NjMsNyAr
MTA3MSwzNCBAQCBFcnJvciBUZXh0dXJlOjpzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsIEdMc2l6
ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgcmV0dXJuIE5vRXJyb3IoKTsK
IH0KIAotRXJyb3IgVGV4dHVyZTo6Z2VuZXJhdGVNaXBtYXAoKQorRXJyb3IgVGV4dHVyZTo6c2V0
U3RvcmFnZU11bHRpc2FtcGxlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgRXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlvbnMpCit7
CisgICAgQVNTRVJUKHRhcmdldCA9PSBtU3RhdGUubVRhcmdldCk7CisKKyAgICAvLyBSZWxlYXNl
IGZyb20gcHJldmlvdXMgY2FsbHMgdG8gZWdsQmluZFRleEltYWdlLCB0byBhdm9pZCBjYWxsaW5n
IHRoZSBJbXBsIGFmdGVyCisgICAgcmVsZWFzZVRleEltYWdlSW50ZXJuYWwoKTsKKyAgICBvcnBo
YW5JbWFnZXMoKTsKKworICAgIEFOR0xFX1RSWShtVGV4dHVyZS0+c2V0U3RvcmFnZU11bHRpc2Ft
cGxlKHJ4OjpTYWZlR2V0SW1wbChjb250ZXh0KSwgdGFyZ2V0LCBzYW1wbGVzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsRm9ybWF0LCBzaXpl
LCBmaXhlZFNhbXBsZUxvY2F0aW9ucykpOworCisgICAgbVN0YXRlLm1JbW11dGFibGVGb3JtYXQg
PSB0cnVlOworICAgIG1TdGF0ZS5tSW1tdXRhYmxlTGV2ZWxzID0gc3RhdGljX2Nhc3Q8R0x1aW50
PigxKTsKKyAgICBtU3RhdGUuY2xlYXJJbWFnZURlc2NzKCk7CisgICAgbVN0YXRlLnNldEltYWdl
RGVzY0NoYWluTXVsdGlzYW1wbGUoc2l6ZSwgRm9ybWF0KGludGVybmFsRm9ybWF0KSwgc2FtcGxl
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXhlZFNhbXBsZUxv
Y2F0aW9ucyk7CisKKyAgICBtRGlydHlDaGFubmVsLnNpZ25hbCgpOworCisgICAgcmV0dXJuIE5v
RXJyb3IoKTsKK30KKworRXJyb3IgVGV4dHVyZTo6Z2VuZXJhdGVNaXBtYXAoY29uc3QgQ29udGV4
dCAqY29udGV4dCkKIHsKICAgICAvLyBSZWxlYXNlIGZyb20gcHJldmlvdXMgY2FsbHMgdG8gZWds
QmluZFRleEltYWdlLCB0byBhdm9pZCBjYWxsaW5nIHRoZSBJbXBsIGFmdGVyCiAgICAgcmVsZWFz
ZVRleEltYWdlSW50ZXJuYWwoKTsKQEAgLTk4MSw3ICsxMTE2LDcgQEAgRXJyb3IgVGV4dHVyZTo6
Z2VuZXJhdGVNaXBtYXAoKQogICAgIGlmIChtYXhMZXZlbCA+IGJhc2VMZXZlbCkKICAgICB7CiAg
ICAgICAgIHN5bmNJbXBsU3RhdGUoKTsKLSAgICAgICAgQU5HTEVfVFJZKG1UZXh0dXJlLT5nZW5l
cmF0ZU1pcG1hcCgpKTsKKyAgICAgICAgQU5HTEVfVFJZKG1UZXh0dXJlLT5nZW5lcmF0ZU1pcG1h
cChyeDo6U2FmZUdldEltcGwoY29udGV4dCkpKTsKIAogICAgICAgICBjb25zdCBJbWFnZURlc2Mg
JmJhc2VJbWFnZUluZm8gPQogICAgICAgICAgICAgbVN0YXRlLmdldEltYWdlRGVzYyhtU3RhdGUu
Z2V0QmFzZUltYWdlVGFyZ2V0KCksIGJhc2VMZXZlbCk7CkBAIC0xMDk4LDIwICsxMjMzLDE5IEBA
IEVycm9yIFRleHR1cmU6OnNldEVHTEltYWdlVGFyZ2V0KEdMZW51bSB0YXJnZXQsIGVnbDo6SW1h
Z2UgKmltYWdlVGFyZ2V0KQogICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKLUV4dGVudHMgVGV4
dHVyZTo6Z2V0QXR0YWNobWVudFNpemUoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6
VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0CitFeHRlbnRzIFRleHR1cmU6OmdldEF0dGFjaG1lbnRTaXpl
KGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1TdGF0ZS5nZXRJbWFnZURlc2ModGFyZ2V0LnRleHR1cmVJbmRleCgpLnR5cGUs
IHRhcmdldC50ZXh0dXJlSW5kZXgoKS5taXBJbmRleCkuc2l6ZTsKIH0KIAotY29uc3QgRm9ybWF0
ICZUZXh0dXJlOjpnZXRBdHRhY2htZW50Rm9ybWF0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQ6OlRhcmdldCAmdGFyZ2V0KSBjb25zdAorY29uc3QgRm9ybWF0ICZUZXh0dXJlOjpnZXRB
dHRhY2htZW50Rm9ybWF0KGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJn
ZXQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdldEZvcm1hdCh0YXJnZXQudGV4dHVyZUluZGV4KCku
dHlwZSwgdGFyZ2V0LnRleHR1cmVJbmRleCgpLm1pcEluZGV4KTsKIH0KIAotR0xzaXplaSBUZXh0
dXJlOjpnZXRBdHRhY2htZW50U2FtcGxlcyhjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50
OjpUYXJnZXQgJi8qdGFyZ2V0Ki8pIGNvbnN0CitHTHNpemVpIFRleHR1cmU6OmdldEF0dGFjaG1l
bnRTYW1wbGVzKGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQpIGNv
bnN0CiB7Ci0gICAgLy8gTXVsdGlzYW1wbGUgdGV4dHVyZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0
ZWQKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZ2V0U2FtcGxlcyh0YXJnZXQudGV4dHVyZUlu
ZGV4KCkudHlwZSwgMCk7CiB9CiAKIHZvaWQgVGV4dHVyZTo6b25BdHRhY2goKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RleHR1cmUuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UZXh0dXJlLmgKaW5kZXggNDY2NTVlYmU5
NWY0YWM1NTg0MzkyMTUxMzRiYzllOTk5NjVjMzZkZC4uN2FkZGRlNzhmNjhjYjRkYTRiYjJkNzMw
MTU2MmJmNmM1N2ZkOGRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1RleHR1cmUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvVGV4dHVyZS5oCkBAIC00OSwxMiArNDksMTggQEAgc3RydWN0IEltYWdlRGVzYyBmaW5h
bAogewogICAgIEltYWdlRGVzYygpOwogICAgIEltYWdlRGVzYyhjb25zdCBFeHRlbnRzICZzaXpl
LCBjb25zdCBGb3JtYXQgJmZvcm1hdCk7CisgICAgSW1hZ2VEZXNjKGNvbnN0IEV4dGVudHMgJnNp
emUsCisgICAgICAgICAgICAgIGNvbnN0IEZvcm1hdCAmZm9ybWF0LAorICAgICAgICAgICAgICBj
b25zdCBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgIGNvbnN0IEdMYm9vbGVhbiBmaXhl
ZFNhbXBsZUxvY2F0aW9ucyk7CiAKICAgICBJbWFnZURlc2MoY29uc3QgSW1hZ2VEZXNjICZvdGhl
cikgPSBkZWZhdWx0OwogICAgIEltYWdlRGVzYyAmb3BlcmF0b3I9KGNvbnN0IEltYWdlRGVzYyAm
b3RoZXIpID0gZGVmYXVsdDsKIAogICAgIEV4dGVudHMgc2l6ZTsKICAgICBGb3JtYXQgZm9ybWF0
OworICAgIEdMc2l6ZWkgc2FtcGxlczsKKyAgICBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlv
bnM7CiB9OwogCiBzdHJ1Y3QgU3dpenpsZVN0YXRlIGZpbmFsCkBAIC05NCw2ICsxMDAsOCBAQCBz
dHJ1Y3QgVGV4dHVyZVN0YXRlIGZpbmFsIDogcHVibGljIGFuZ2xlOjpOb25Db3B5YWJsZQogICAg
IGJvb2wgaXNDdWJlQ29tcGxldGUoKSBjb25zdDsKICAgICBib29sIGlzU2FtcGxlckNvbXBsZXRl
KGNvbnN0IFNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlLCBjb25zdCBDb250ZXh0U3RhdGUgJmRh
dGEpIGNvbnN0OwogCisgICAgdm9pZCBpbnZhbGlkYXRlQ29tcGxldGVuZXNzQ2FjaGUoKTsKKwog
ICAgIGNvbnN0IEltYWdlRGVzYyAmZ2V0SW1hZ2VEZXNjKEdMZW51bSB0YXJnZXQsIHNpemVfdCBs
ZXZlbCkgY29uc3Q7CiAKICAgICBHTGVudW0gZ2V0VGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbVRh
cmdldDsgfQpAQCAtMTIwLDYgKzEyOCwxMSBAQCBzdHJ1Y3QgVGV4dHVyZVN0YXRlIGZpbmFsIDog
cHVibGljIGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IG1heExldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRXh0ZW50cyBiYXNlU2l6
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZvcm1hdCAmZm9ybWF0KTsKKyAg
ICB2b2lkIHNldEltYWdlRGVzY0NoYWluTXVsdGlzYW1wbGUoRXh0ZW50cyBiYXNlU2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9ybWF0ICZmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGZpeGVkU2Ft
cGxlTG9jYXRpb25zKTsKKwogICAgIHZvaWQgY2xlYXJJbWFnZURlc2MoR0xlbnVtIHRhcmdldCwg
c2l6ZV90IGxldmVsKTsKICAgICB2b2lkIGNsZWFySW1hZ2VEZXNjcygpOwogCkBAIC0xMzIsNiAr
MTQ1LDggQEAgc3RydWN0IFRleHR1cmVTdGF0ZSBmaW5hbCA6IHB1YmxpYyBhbmdsZTo6Tm9uQ29w
eWFibGUKICAgICBHTHVpbnQgbUJhc2VMZXZlbDsKICAgICBHTHVpbnQgbU1heExldmVsOwogCisg
ICAgR0xlbnVtIG1EZXB0aFN0ZW5jaWxUZXh0dXJlTW9kZTsKKwogICAgIGJvb2wgbUltbXV0YWJs
ZUZvcm1hdDsKICAgICBHTHVpbnQgbUltbXV0YWJsZUxldmVsczsKIApAQCAtMTQ0LDE5ICsxNTks
MTUgQEAgc3RydWN0IFRleHR1cmVTdGF0ZSBmaW5hbCA6IHB1YmxpYyBhbmdsZTo6Tm9uQ29weWFi
bGUKICAgICB7CiAgICAgICAgIFNhbXBsZXJDb21wbGV0ZW5lc3NDYWNoZSgpOwogCi0gICAgICAg
IGJvb2wgY2FjaGVWYWxpZDsKLQogICAgICAgICAvLyBBbGwgdmFsdWVzIHRoYXQgYWZmZWN0IHNh
bXBsZXIgY29tcGxldGVuZXNzIHRoYXQgYXJlIG5vdCBzdG9yZWQgd2l0aGluCiAgICAgICAgIC8v
IHRoZSB0ZXh0dXJlIGl0c2VsZgogICAgICAgICBTYW1wbGVyU3RhdGUgc2FtcGxlclN0YXRlOwot
ICAgICAgICBib29sIGZpbHRlcmFibGU7Ci0gICAgICAgIEdMaW50IGNsaWVudFZlcnNpb247Ci0g
ICAgICAgIGJvb2wgc3VwcG9ydHNOUE9UOwogCiAgICAgICAgIC8vIFJlc3VsdCBvZiB0aGUgc2Ft
cGxlciBjb21wbGV0ZW5lc3Mgd2l0aCB0aGUgYWJvdmUgcGFyYW1ldGVycwogICAgICAgICBib29s
IHNhbXBsZXJDb21wbGV0ZTsKICAgICB9OwotICAgIG11dGFibGUgU2FtcGxlckNvbXBsZXRlbmVz
c0NhY2hlIG1Db21wbGV0ZW5lc3NDYWNoZTsKKworICAgIG11dGFibGUgc3RkOjp1bm9yZGVyZWRf
bWFwPENvbnRleHRJRCwgU2FtcGxlckNvbXBsZXRlbmVzc0NhY2hlPiBtQ29tcGxldGVuZXNzQ2Fj
aGU7CiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dHVyZVN0YXRlICZhLCBjb25zdCBU
ZXh0dXJlU3RhdGUgJmIpOwpAQCAtMTcwLDYgKzE4MSw4IEBAIGNsYXNzIFRleHR1cmUgZmluYWwg
OiBwdWJsaWMgZWdsOjpJbWFnZVNpYmxpbmcsCiAgICAgVGV4dHVyZShyeDo6R0xJbXBsRmFjdG9y
eSAqZmFjdG9yeSwgR0x1aW50IGlkLCBHTGVudW0gdGFyZ2V0KTsKICAgICB+VGV4dHVyZSgpIG92
ZXJyaWRlOwogCisgICAgdm9pZCBkZXN0cm95KGNvbnN0IENvbnRleHQgKmNvbnRleHQpIG92ZXJy
aWRlIHt9CisKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJlbCkgb3Zl
cnJpZGU7CiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldExhYmVsKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKQEAgLTIxNyw2ICsyMzAsOSBAQCBjbGFzcyBUZXh0dXJlIGZpbmFsIDogcHVibGljIGVnbDo6
SW1hZ2VTaWJsaW5nLAogICAgIHZvaWQgc2V0Q29tcGFyZUZ1bmMoR0xlbnVtIGNvbXBhcmVGdW5j
KTsKICAgICBHTGVudW0gZ2V0Q29tcGFyZUZ1bmMoKSBjb25zdDsKIAorICAgIHZvaWQgc2V0U1JH
QkRlY29kZShHTGVudW0gc1JHQkRlY29kZSk7CisgICAgR0xlbnVtIGdldFNSR0JEZWNvZGUoKSBj
b25zdDsKKwogICAgIGNvbnN0IFNhbXBsZXJTdGF0ZSAmZ2V0U2FtcGxlclN0YXRlKCkgY29uc3Q7
CiAKICAgICB2b2lkIHNldEJhc2VMZXZlbChHTHVpbnQgYmFzZUxldmVsKTsKQEAgLTIyNSw2ICsy
NDEsOSBAQCBjbGFzcyBUZXh0dXJlIGZpbmFsIDogcHVibGljIGVnbDo6SW1hZ2VTaWJsaW5nLAog
ICAgIHZvaWQgc2V0TWF4TGV2ZWwoR0x1aW50IG1heExldmVsKTsKICAgICBHTHVpbnQgZ2V0TWF4
TGV2ZWwoKSBjb25zdDsKIAorICAgIHZvaWQgc2V0RGVwdGhTdGVuY2lsVGV4dHVyZU1vZGUoR0xl
bnVtIG1vZGUpOworICAgIEdMZW51bSBnZXREZXB0aFN0ZW5jaWxUZXh0dXJlTW9kZSgpIGNvbnN0
OworCiAgICAgYm9vbCBnZXRJbW11dGFibGVGb3JtYXQoKSBjb25zdDsKIAogICAgIEdMdWludCBn
ZXRJbW11dGFibGVMZXZlbHMoKSBjb25zdDsKQEAgLTIzNywxMSArMjU2LDE0IEBAIGNsYXNzIFRl
eHR1cmUgZmluYWwgOiBwdWJsaWMgZWdsOjpJbWFnZVNpYmxpbmcsCiAgICAgc2l6ZV90IGdldFdp
ZHRoKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3Q7CiAgICAgc2l6ZV90IGdldEhl
aWdodChHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNvbnN0OwogICAgIHNpemVfdCBnZXRE
ZXB0aChHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNvbnN0OworICAgIEdMc2l6ZWkgZ2V0
U2FtcGxlcyhHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNvbnN0OworICAgIEdMYm9vbGVh
biBnZXRGaXhlZFNhbXBsZUxvY2F0aW9ucyhHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNv
bnN0OwogICAgIGNvbnN0IEZvcm1hdCAmZ2V0Rm9ybWF0KEdMZW51bSB0YXJnZXQsIHNpemVfdCBs
ZXZlbCkgY29uc3Q7CiAKICAgICBib29sIGlzTWlwbWFwQ29tcGxldGUoKSBjb25zdDsKIAotICAg
IEVycm9yIHNldEltYWdlKGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFja1N0YXRlLAorICAg
IEVycm9yIHNldEltYWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgY29uc3QgUGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrU3RhdGUsCiAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LApAQCAtMjQ5LDcgKzI3MSw4IEBA
IGNsYXNzIFRleHR1cmUgZmluYWwgOiBwdWJsaWMgZWdsOjpJbWFnZVNpYmxpbmcsCiAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpOwotICAgIEVycm9y
IHNldFN1YkltYWdlKGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFja1N0YXRlLAorICAgIEVy
cm9yIHNldFN1YkltYWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrU3RhdGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQm94ICZhcmVhLApAQCAtMjU3LDE0ICsy
ODAsMTYgQEAgY2xhc3MgVGV4dHVyZSBmaW5hbCA6IHB1YmxpYyBlZ2w6OkltYWdlU2libGluZywK
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICpwaXhlbHMpOwogCi0gICAgRXJyb3Igc2V0Q29tcHJlc3NlZEltYWdl
KGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFja1N0YXRlLAorICAgIEVycm9yIHNldENvbXBy
ZXNzZWRJbWFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBQaXhlbFVucGFja1N0YXRlICZ1bnBhY2tTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
aW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4dGVu
dHMgJnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscyk7Ci0g
ICAgRXJyb3Igc2V0Q29tcHJlc3NlZFN1YkltYWdlKGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVu
cGFja1N0YXRlLAorICAgIEVycm9yIHNldENvbXByZXNzZWRTdWJJbWFnZShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQaXhlbFVu
cGFja1N0YXRlICZ1bnBhY2tTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxl
dmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCb3ggJmFyZWEsCkBA
IC0yNzIsNDAgKzI5Nyw2MyBAQCBjbGFzcyBUZXh0dXJlIGZpbmFsIDogcHVibGljIGVnbDo6SW1h
Z2VTaWJsaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VT
aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhl
bHMpOwogCi0gICAgRXJyb3IgY29weUltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgRXJyb3IgY29w
eUltYWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgUmVjdGFuZ2xlICZzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZyYW1l
YnVmZmVyICpzb3VyY2UpOwotICAgIEVycm9yIGNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAor
ICAgIEVycm9yIGNvcHlTdWJJbWFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE9mZnNldCAmZGVzdE9mZnNl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVjdGFuZ2xlICZzb3VyY2VBcmVhLAog
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlciAqc291cmNlKTsKIAotICAg
IEVycm9yIGNvcHlUZXh0dXJlKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICBFcnJvciBjb3B5
VGV4dHVyZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc291cmNlTGV2
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tGbGlwWSwKICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCiAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEsCiAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVGV4dHVyZSAqc291cmNlKTsKLSAgICBFcnJvciBjb3B5U3ViVGV4dHVyZShjb25zdCBP
ZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgRXJyb3IgY29weVN1YlRleHR1cmUoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IHNvdXJjZUxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlY3Rh
bmdsZSAmc291cmNlQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja0Zs
aXBZLAogICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBo
YSwKICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1VubXVsdGlwbHlBbHBoYSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0dXJlICpzb3VyY2UpOwotICAgIEVy
cm9yIGNvcHlDb21wcmVzc2VkVGV4dHVyZShjb25zdCBUZXh0dXJlICpzb3VyY2UpOworICAgIEVy
cm9yIGNvcHlDb21wcmVzc2VkVGV4dHVyZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBjb25zdCBU
ZXh0dXJlICpzb3VyY2UpOwogCi0gICAgRXJyb3Igc2V0U3RvcmFnZShHTGVudW0gdGFyZ2V0LCBH
THNpemVpIGxldmVscywgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBFeHRlbnRzICZzaXpl
KTsKKyAgICBFcnJvciBzZXRTdG9yYWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBsZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBFeHRlbnRzICZzaXplKTsKKworICAgIEVycm9yIHNl
dFN0b3JhZ2VNdWx0aXNhbXBsZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlvbnMpOwogCiAgICAgRXJyb3Igc2V0RUdMSW1hZ2VU
YXJnZXQoR0xlbnVtIHRhcmdldCwgZWdsOjpJbWFnZSAqaW1hZ2VUYXJnZXQpOwogCi0gICAgRXJy
b3IgZ2VuZXJhdGVNaXBtYXAoKTsKKyAgICBFcnJvciBnZW5lcmF0ZU1pcG1hcChjb25zdCBDb250
ZXh0ICpjb250ZXh0KTsKIAogICAgIGVnbDo6U3VyZmFjZSAqZ2V0Qm91bmRTdXJmYWNlKCkgY29u
c3Q7CiAgICAgZWdsOjpTdHJlYW0gKmdldEJvdW5kU3RyZWFtKCkgY29uc3Q7CiAKKyAgICB2b2lk
IGludmFsaWRhdGVDb21wbGV0ZW5lc3NDYWNoZSgpOworCiAgICAgcng6OlRleHR1cmVJbXBsICpn
ZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1UZXh0dXJlOyB9CiAKICAgICAvLyBG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3QgaW1wbGVtZW50YXRpb24KQEAgLTMzMCw2ICszNzgs
NyBAQCBjbGFzcyBUZXh0dXJlIGZpbmFsIDogcHVibGljIGVnbDo6SW1hZ2VTaWJsaW5nLAogICAg
ICAgICBESVJUWV9CSVRfTUFYX0xPRCwKICAgICAgICAgRElSVFlfQklUX0NPTVBBUkVfTU9ERSwK
ICAgICAgICAgRElSVFlfQklUX0NPTVBBUkVfRlVOQywKKyAgICAgICAgRElSVFlfQklUX1NSR0Jf
REVDT0RFLAogCiAgICAgICAgIC8vIFRleHR1cmUgc3RhdGUKICAgICAgICAgRElSVFlfQklUX1NX
SVpaTEVfUkVELApAQCAtMzkxLDQgKzQ0MCw0IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgVGV4dHVyZVN0YXRlICZhLCBjb25zdCBUZXh0dXJlU3RhdGUgJmIpCiB9CiB9CiAKLSNlbmRp
ZiAgIC8vIExJQkFOR0xFX1RFWFRVUkVfSF8KKyNlbmRpZiAgLy8gTElCQU5HTEVfVEVYVFVSRV9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RocmVh
ZC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVGhyZWFkLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xYWJmNDQ5Y2UyN2M0N2I3YWRiMzVkMmJhMDU0YTA5NTg5OWZjYmNlCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RocmVh
ZC5jcHAKQEAgLTAsMCArMSw4OCBAQAorLy8KKy8vIENvcHlyaWdodChjKSAyMDE2IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVGhyZWFkLmNwcCA6IERl
ZmluZXMgdGhlIFRocmVhZCBjbGFzcyB3aGljaCByZXByZXNlbnRzIGEgZ2xvYmFsIEVHTCB0aHJl
YWQuCisKKyNpbmNsdWRlICJsaWJBTkdMRS9UaHJlYWQuaCIKKworI2luY2x1ZGUgImxpYkFOR0xF
L0NvbnRleHQuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5oIgorCituYW1lc3BhY2UgZWds
Cit7CitUaHJlYWQ6OlRocmVhZCgpCisgICAgOiBtRXJyb3IoRUdMX1NVQ0NFU1MpLAorICAgICAg
bUFQSShFR0xfT1BFTkdMX0VTX0FQSSksCisgICAgICBtRGlzcGxheShzdGF0aWNfY2FzdDxlZ2w6
OkRpc3BsYXkgKj4oRUdMX05PX0RJU1BMQVkpKSwKKyAgICAgIG1EcmF3U3VyZmFjZShzdGF0aWNf
Y2FzdDxlZ2w6OlN1cmZhY2UgKj4oRUdMX05PX1NVUkZBQ0UpKSwKKyAgICAgIG1SZWFkU3VyZmFj
ZShzdGF0aWNfY2FzdDxlZ2w6OlN1cmZhY2UgKj4oRUdMX05PX1NVUkZBQ0UpKSwKKyAgICAgIG1D
b250ZXh0KHN0YXRpY19jYXN0PGdsOjpDb250ZXh0ICo+KEVHTF9OT19DT05URVhUKSkKK3sKK30K
Kwordm9pZCBUaHJlYWQ6OnNldEVycm9yKGNvbnN0IEVycm9yICZlcnJvcikKK3sKKyAgICBtRXJy
b3IgPSBlcnJvci5nZXRDb2RlKCk7Cit9CisKK0VHTGludCBUaHJlYWQ6OmdldEVycm9yKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbUVycm9yOworfQorCit2b2lkIFRocmVhZDo6c2V0QVBJKEVHTGVu
dW0gYXBpKQoreworICAgIG1BUEkgPSBhcGk7Cit9CisKK0VHTGVudW0gVGhyZWFkOjpnZXRBUEko
KSBjb25zdAoreworICAgIHJldHVybiBtQVBJOworfQorCit2b2lkIFRocmVhZDo6c2V0Q3VycmVu
dChEaXNwbGF5ICpkaXNwbGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgU3VyZmFjZSAqZHJh
d1N1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBTdXJmYWNlICpyZWFkU3VyZmFjZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0KQoreworICAgIG1E
aXNwbGF5ICAgICA9IGRpc3BsYXk7CisgICAgbURyYXdTdXJmYWNlID0gZHJhd1N1cmZhY2U7Cisg
ICAgbVJlYWRTdXJmYWNlID0gcmVhZFN1cmZhY2U7CisgICAgbUNvbnRleHQgICAgID0gY29udGV4
dDsKK30KKworRGlzcGxheSAqVGhyZWFkOjpnZXREaXNwbGF5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbURpc3BsYXk7Cit9CisKK1N1cmZhY2UgKlRocmVhZDo6Z2V0RHJhd1N1cmZhY2UoKSBjb25z
dAoreworICAgIHJldHVybiBtRHJhd1N1cmZhY2U7Cit9CisKK1N1cmZhY2UgKlRocmVhZDo6Z2V0
UmVhZFN1cmZhY2UoKSBjb25zdAoreworICAgIHJldHVybiBtUmVhZFN1cmZhY2U7Cit9CisKK2ds
OjpDb250ZXh0ICpUaHJlYWQ6OmdldENvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBtQ29u
dGV4dDsKK30KKworZ2w6OkNvbnRleHQgKlRocmVhZDo6Z2V0VmFsaWRDb250ZXh0KCkgY29uc3QK
K3sKKyAgICBpZiAobUNvbnRleHQgJiYgbUNvbnRleHQtPmlzQ29udGV4dExvc3QoKSkKKyAgICB7
CisgICAgICAgIG1Db250ZXh0LT5oYW5kbGVFcnJvcihnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9S
WSwgIkNvbnRleHQgaGFzIGJlZW4gbG9zdC4iKSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwor
ICAgIH0KKworICAgIHJldHVybiBtQ29udGV4dDsKK30KKworfSAgLy8gbmFtZXNwYWNlIGVnbApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RocmVhZC5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RocmVhZC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdhNjdkYzYyYjUwMTlhMGMyNTNlYzA4OWM0Y2RlNmFhZGJiZmIyYTcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVGhyZWFkLmgKQEAg
LTAsMCArMSw1NyBAQAorLy8KKy8vIENvcHlyaWdodChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVGhyZWFkLmggOiBEZWZpbmVzIHRoZSBU
aHJlYWQgY2xhc3Mgd2hpY2ggcmVwcmVzZW50cyBhIGdsb2JhbCBFR0wgdGhyZWFkLgorCisjaWZu
ZGVmIExJQkFOR0xFX1RIUkVBRF9IXworI2RlZmluZSBMSUJBTkdMRV9USFJFQURfSF8KKworI2lu
Y2x1ZGUgPEVHTC9lZ2wuaD4KKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBDb250ZXh0OworfSAg
Ly8gbmFtZXNwYWNlIGdsCisKK25hbWVzcGFjZSBlZ2wKK3sKK2NsYXNzIEVycm9yOworY2xhc3Mg
RGlzcGxheTsKK2NsYXNzIFN1cmZhY2U7CisKK2NsYXNzIFRocmVhZAoreworICBwdWJsaWM6Cisg
ICAgVGhyZWFkKCk7CisKKyAgICB2b2lkIHNldEVycm9yKGNvbnN0IEVycm9yICZlcnJvcik7Cisg
ICAgRUdMaW50IGdldEVycm9yKCkgY29uc3Q7CisKKyAgICB2b2lkIHNldEFQSShFR0xlbnVtIGFw
aSk7CisgICAgRUdMZW51bSBnZXRBUEkoKSBjb25zdDsKKworICAgIHZvaWQgc2V0Q3VycmVudChE
aXNwbGF5ICpkaXNwbGF5LAorICAgICAgICAgICAgICAgICAgICBTdXJmYWNlICpkcmF3U3VyZmFj
ZSwKKyAgICAgICAgICAgICAgICAgICAgU3VyZmFjZSAqcmVhZFN1cmZhY2UsCisgICAgICAgICAg
ICAgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0KTsKKyAgICBEaXNwbGF5ICpnZXREaXNwbGF5
KCkgY29uc3Q7CisgICAgU3VyZmFjZSAqZ2V0RHJhd1N1cmZhY2UoKSBjb25zdDsKKyAgICBTdXJm
YWNlICpnZXRSZWFkU3VyZmFjZSgpIGNvbnN0OworICAgIGdsOjpDb250ZXh0ICpnZXRDb250ZXh0
KCkgY29uc3Q7CisgICAgZ2w6OkNvbnRleHQgKmdldFZhbGlkQ29udGV4dCgpIGNvbnN0OworCisg
IHByaXZhdGU6CisgICAgRUdMaW50IG1FcnJvcjsKKyAgICBFR0xlbnVtIG1BUEk7CisgICAgZWds
OjpEaXNwbGF5ICptRGlzcGxheTsKKyAgICBlZ2w6OlN1cmZhY2UgKm1EcmF3U3VyZmFjZTsKKyAg
ICBlZ2w6OlN1cmZhY2UgKm1SZWFkU3VyZmFjZTsKKyAgICBnbDo6Q29udGV4dCAqbUNvbnRleHQ7
Cit9OworCit9ICAvLyBuYW1lc3BhY2UgZWdsCisKKyNlbmRpZiAgLy8gTElCQU5HTEVfVEhSRUFE
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVHJh
bnNmb3JtRmVlZGJhY2suY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L1RyYW5zZm9ybUZlZWRiYWNrLmNwcAppbmRleCAyOTNjOTFiMzEzMjgwZjFjYWUwMWIyOTBjYzk2
ZGE3ZGJiNWJhMmZhLi43MGExMmNkNWMwMDU0ZjBlOWFmNzU5NWVmZjBiZDJlOTYyYTQxMjlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVHJhbnNmb3Jt
RmVlZGJhY2suY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9U
cmFuc2Zvcm1GZWVkYmFjay5jcHAKQEAgLTUwLDEzICs1MCwxOCBAQCBUcmFuc2Zvcm1GZWVkYmFj
azo6VHJhbnNmb3JtRmVlZGJhY2socng6OkdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LCBHTHVp
bnQgaWQsCiAgICAgQVNTRVJUKG1JbXBsZW1lbnRhdGlvbiAhPSBudWxscHRyKTsKIH0KIAotVHJh
bnNmb3JtRmVlZGJhY2s6On5UcmFuc2Zvcm1GZWVkYmFjaygpCit2b2lkIFRyYW5zZm9ybUZlZWRi
YWNrOjpkZXN0cm95KGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgaWYgKG1TdGF0ZS5t
UHJvZ3JhbSkKICAgICB7Ci0gICAgICAgIG1TdGF0ZS5tUHJvZ3JhbS0+cmVsZWFzZSgpOworICAg
ICAgICBtU3RhdGUubVByb2dyYW0tPnJlbGVhc2UoY29udGV4dCk7CiAgICAgICAgIG1TdGF0ZS5t
UHJvZ3JhbSA9IG51bGxwdHI7CiAgICAgfQorfQorCitUcmFuc2Zvcm1GZWVkYmFjazo6flRyYW5z
Zm9ybUZlZWRiYWNrKCkKK3sKKyAgICBBU1NFUlQoIW1TdGF0ZS5tUHJvZ3JhbSk7CiAgICAgbVN0
YXRlLm1HZW5lcmljQnVmZmVyLnNldChudWxscHRyKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1TdGF0ZS5tSW5kZXhlZEJ1ZmZlcnMuc2l6ZSgpOyBpKyspCiAgICAgewpAQCAtNzYsMTYg
KzgxLDE2IEBAIGNvbnN0IHN0ZDo6c3RyaW5nICZUcmFuc2Zvcm1GZWVkYmFjazo6Z2V0TGFiZWwo
KSBjb25zdAogICAgIHJldHVybiBtU3RhdGUubUxhYmVsOwogfQogCi12b2lkIFRyYW5zZm9ybUZl
ZWRiYWNrOjpiZWdpbihHTGVudW0gcHJpbWl0aXZlTW9kZSwgUHJvZ3JhbSAqcHJvZ3JhbSkKK3Zv
aWQgVHJhbnNmb3JtRmVlZGJhY2s6OmJlZ2luKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSBwcmltaXRpdmVNb2RlLCBQcm9ncmFtICpwcm9ncmFtKQogewogICAgIG1TdGF0ZS5tQWN0aXZl
ICAgICAgICA9IHRydWU7CiAgICAgbVN0YXRlLm1QcmltaXRpdmVNb2RlID0gcHJpbWl0aXZlTW9k
ZTsKICAgICBtU3RhdGUubVBhdXNlZCAgICAgICAgPSBmYWxzZTsKICAgICBtSW1wbGVtZW50YXRp
b24tPmJlZ2luKHByaW1pdGl2ZU1vZGUpOwotICAgIGJpbmRQcm9ncmFtKHByb2dyYW0pOworICAg
IGJpbmRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pOwogfQogCi12b2lkIFRyYW5zZm9ybUZlZWRi
YWNrOjplbmQoKQordm9pZCBUcmFuc2Zvcm1GZWVkYmFjazo6ZW5kKGNvbnN0IENvbnRleHQgKmNv
bnRleHQpCiB7CiAgICAgbVN0YXRlLm1BY3RpdmUgICAgICAgID0gZmFsc2U7CiAgICAgbVN0YXRl
Lm1QcmltaXRpdmVNb2RlID0gR0xfTk9ORTsKQEAgLTkzLDcgKzk4LDcgQEAgdm9pZCBUcmFuc2Zv
cm1GZWVkYmFjazo6ZW5kKCkKICAgICBtSW1wbGVtZW50YXRpb24tPmVuZCgpOwogICAgIGlmICht
U3RhdGUubVByb2dyYW0pCiAgICAgewotICAgICAgICBtU3RhdGUubVByb2dyYW0tPnJlbGVhc2Uo
KTsKKyAgICAgICAgbVN0YXRlLm1Qcm9ncmFtLT5yZWxlYXNlKGNvbnRleHQpOwogICAgICAgICBt
U3RhdGUubVByb2dyYW0gPSBudWxscHRyOwogICAgIH0KIH0KQEAgLTEyNSwxMyArMTMwLDEzIEBA
IEdMZW51bSBUcmFuc2Zvcm1GZWVkYmFjazo6Z2V0UHJpbWl0aXZlTW9kZSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1TdGF0ZS5tUHJpbWl0aXZlTW9kZTsKIH0KIAotdm9pZCBUcmFuc2Zvcm1GZWVkYmFj
azo6YmluZFByb2dyYW0oUHJvZ3JhbSAqcHJvZ3JhbSkKK3ZvaWQgVHJhbnNmb3JtRmVlZGJhY2s6
OmJpbmRQcm9ncmFtKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFByb2dyYW0gKnByb2dyYW0pCiB7
CiAgICAgaWYgKG1TdGF0ZS5tUHJvZ3JhbSAhPSBwcm9ncmFtKQogICAgIHsKICAgICAgICAgaWYg
KG1TdGF0ZS5tUHJvZ3JhbSAhPSBudWxscHRyKQogICAgICAgICB7Ci0gICAgICAgICAgICBtU3Rh
dGUubVByb2dyYW0tPnJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1TdGF0ZS5tUHJvZ3JhbS0+cmVs
ZWFzZShjb250ZXh0KTsKICAgICAgICAgfQogICAgICAgICBtU3RhdGUubVByb2dyYW0gPSBwcm9n
cmFtOwogICAgICAgICBpZiAobVN0YXRlLm1Qcm9ncmFtICE9IG51bGxwdHIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVHJhbnNmb3JtRmVlZGJhY2su
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UcmFuc2Zvcm1GZWVkYmFj
ay5oCmluZGV4IDViMWViMzRiZmY2MzM5NjJmYTFkYjkxOWI2MzFhNGNiZjVlNTJmYzIuLjczMDM4
OWRhMjkyYjc4YTdmZjIxMTlkNTMxNWY4MmM4MDlkODA3NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UcmFuc2Zvcm1GZWVkYmFjay5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UcmFuc2Zvcm1GZWVkYmFjay5oCkBA
IC0yNCw2ICsyNCw3IEBAIG5hbWVzcGFjZSBnbAogewogY2xhc3MgQnVmZmVyOwogc3RydWN0IENh
cHM7CitjbGFzcyBDb250ZXh0OwogY2xhc3MgUHJvZ3JhbTsKIAogY2xhc3MgVHJhbnNmb3JtRmVl
ZGJhY2tTdGF0ZSBmaW5hbCA6IHB1YmxpYyBhbmdsZTo6Tm9uQ29weWFibGUKQEAgLTU1LDEyICs1
NiwxMyBAQCBjbGFzcyBUcmFuc2Zvcm1GZWVkYmFjayBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudE9i
amVjdCwgcHVibGljIExhYmVsZWRPYmplY3QKICAgcHVibGljOgogICAgIFRyYW5zZm9ybUZlZWRi
YWNrKHJ4OjpHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwgR0x1aW50IGlkLCBjb25zdCBDYXBz
ICZjYXBzKTsKICAgICB2aXJ0dWFsIH5UcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIHZvaWQgZGVz
dHJveShjb25zdCBDb250ZXh0ICpjb250ZXh0KSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0TGFi
ZWwoY29uc3Qgc3RkOjpzdHJpbmcgJmxhYmVsKSBvdmVycmlkZTsKICAgICBjb25zdCBzdGQ6OnN0
cmluZyAmZ2V0TGFiZWwoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgYmVnaW4oR0xlbnVt
IHByaW1pdGl2ZU1vZGUsIFByb2dyYW0gKnByb2dyYW0pOwotICAgIHZvaWQgZW5kKCk7CisgICAg
dm9pZCBiZWdpbihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcHJpbWl0aXZlTW9kZSwg
UHJvZ3JhbSAqcHJvZ3JhbSk7CisgICAgdm9pZCBlbmQoY29uc3QgQ29udGV4dCAqY29udGV4dCk7
CiAgICAgdm9pZCBwYXVzZSgpOwogICAgIHZvaWQgcmVzdW1lKCk7CiAKQEAgLTgzLDcgKzg1LDcg
QEAgY2xhc3MgVHJhbnNmb3JtRmVlZGJhY2sgZmluYWwgOiBwdWJsaWMgUmVmQ291bnRPYmplY3Qs
IHB1YmxpYyBMYWJlbGVkT2JqZWN0CiAgICAgY29uc3Qgcng6OlRyYW5zZm9ybUZlZWRiYWNrSW1w
bCAqZ2V0SW1wbGVtZW50YXRpb24oKSBjb25zdDsKIAogICBwcml2YXRlOgotICAgIHZvaWQgYmlu
ZFByb2dyYW0oUHJvZ3JhbSAqcHJvZ3JhbSk7CisgICAgdm9pZCBiaW5kUHJvZ3JhbShjb25zdCBD
b250ZXh0ICpjb250ZXh0LCBQcm9ncmFtICpwcm9ncmFtKTsKIAogICAgIFRyYW5zZm9ybUZlZWRi
YWNrU3RhdGUgbVN0YXRlOwogICAgIHJ4OjpUcmFuc2Zvcm1GZWVkYmFja0ltcGwqIG1JbXBsZW1l
bnRhdGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9UcmFuc2Zvcm1GZWVkYmFja191bml0dGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvVHJhbnNmb3JtRmVlZGJhY2tfdW5pdHRlc3QuY3BwCmluZGV4IDA3YTA5
NTllMmM5OWRjYTZjNmIwYTNlMWJlZTc4NDI5ZTZjY2Q0MGQuLjk0NmRiNmJhMTY0ZWZjOGJjYjkz
ZGEyNmY3YzNjN2Y1ZWMzZWFmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9UcmFuc2Zvcm1GZWVkYmFja191bml0dGVzdC5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNrX3VuaXR0ZXN0
LmNwcApAQCAtNzIsMTEgKzcyLDExIEBAIFRFU1RfRihUcmFuc2Zvcm1GZWVkYmFja1Rlc3QsIFNp
ZGVFZmZlY3RzT2ZTdGFydEFuZFN0b3ApCiAKICAgICBFWFBFQ1RfRkFMU0UobUZlZWRiYWNrLT5p
c0FjdGl2ZSgpKTsKICAgICBFWFBFQ1RfQ0FMTCgqbUltcGwsIGJlZ2luKEdMX1RSSUFOR0xFUykp
OwotICAgIG1GZWVkYmFjay0+YmVnaW4oR0xfVFJJQU5HTEVTLCBudWxscHRyKTsKKyAgICBtRmVl
ZGJhY2stPmJlZ2luKG51bGxwdHIsIEdMX1RSSUFOR0xFUywgbnVsbHB0cik7CiAgICAgRVhQRUNU
X1RSVUUobUZlZWRiYWNrLT5pc0FjdGl2ZSgpKTsKICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8
R0xlbnVtPihHTF9UUklBTkdMRVMpLCBtRmVlZGJhY2stPmdldFByaW1pdGl2ZU1vZGUoKSk7CiAg
ICAgRVhQRUNUX0NBTEwoKm1JbXBsLCBlbmQoKSk7Ci0gICAgbUZlZWRiYWNrLT5lbmQoKTsKKyAg
ICBtRmVlZGJhY2stPmVuZChudWxscHRyKTsKICAgICBFWFBFQ1RfRkFMU0UobUZlZWRiYWNrLT5p
c0FjdGl2ZSgpKTsKIH0KIApAQCAtODYsNyArODYsNyBAQCBURVNUX0YoVHJhbnNmb3JtRmVlZGJh
Y2tUZXN0LCBTaWRlRWZmZWN0c09mUGF1c2VBbmRSZXN1bWUpCiAKICAgICBFWFBFQ1RfRkFMU0Uo
bUZlZWRiYWNrLT5pc0FjdGl2ZSgpKTsKICAgICBFWFBFQ1RfQ0FMTCgqbUltcGwsIGJlZ2luKEdM
X1RSSUFOR0xFUykpOwotICAgIG1GZWVkYmFjay0+YmVnaW4oR0xfVFJJQU5HTEVTLCBudWxscHRy
KTsKKyAgICBtRmVlZGJhY2stPmJlZ2luKG51bGxwdHIsIEdMX1RSSUFOR0xFUywgbnVsbHB0cik7
CiAgICAgRVhQRUNUX0ZBTFNFKG1GZWVkYmFjay0+aXNQYXVzZWQoKSk7CiAgICAgRVhQRUNUX0NB
TEwoKm1JbXBsLCBwYXVzZSgpKTsKICAgICBtRmVlZGJhY2stPnBhdXNlKCk7CkBAIC05NSwxNSAr
OTUsMjIgQEAgVEVTVF9GKFRyYW5zZm9ybUZlZWRiYWNrVGVzdCwgU2lkZUVmZmVjdHNPZlBhdXNl
QW5kUmVzdW1lKQogICAgIG1GZWVkYmFjay0+cmVzdW1lKCk7CiAgICAgRVhQRUNUX0ZBTFNFKG1G
ZWVkYmFjay0+aXNQYXVzZWQoKSk7CiAgICAgRVhQRUNUX0NBTEwoKm1JbXBsLCBlbmQoKSk7Ci0g
ICAgbUZlZWRiYWNrLT5lbmQoKTsKKyAgICBtRmVlZGJhY2stPmVuZChudWxscHRyKTsKIH0KIAog
VEVTVF9GKFRyYW5zZm9ybUZlZWRiYWNrVGVzdCwgQnVmZmVyQmluZGluZykKIHsKICAgICByeDo6
TW9ja0J1ZmZlckltcGwgKmJ1ZmZlckltcGwgPSBuZXcgcng6Ok1vY2tCdWZmZXJJbXBsOwotICAg
IGdsOjpCdWZmZXIgKmJ1ZmZlciA9IG5ldyBnbDo6QnVmZmVyKGJ1ZmZlckltcGwsIDEpOwogICAg
IEVYUEVDVF9DQUxMKCpidWZmZXJJbXBsLCBkZXN0cnVjdG9yKCkpLlRpbWVzKDEpLlJldGlyZXNP
blNhdHVyYXRpb24oKTsKIAorICAgIHJ4OjpNb2NrR0xGYWN0b3J5IG1vY2tHTEZhY3Rvcnk7Cisg
ICAgRVhQRUNUX0NBTEwobW9ja0dMRmFjdG9yeSwgY3JlYXRlQnVmZmVyKF8pKQorICAgICAgICAu
VGltZXMoMSkKKyAgICAgICAgLldpbGxPbmNlKFJldHVybihidWZmZXJJbXBsKSkKKyAgICAgICAg
LlJldGlyZXNPblNhdHVyYXRpb24oKTsKKworICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9IG5ldyBn
bDo6QnVmZmVyKCZtb2NrR0xGYWN0b3J5LCAxKTsKKwogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
YmluZEluZGV4ID0gMDsKIAogICAgIEVYUEVDVF9FUShtRmVlZGJhY2stPmdldEluZGV4ZWRCdWZm
ZXJDb3VudCgpLCBtQ2Fwcy5tYXhUcmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0cmlidXRlcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVW5pZm9y
bS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVW5pZm9ybS5jcHAK
aW5kZXggOWI0YjQ3YWEyOTA5ZmQzMTFhZDBkYzRjZjZiYzk3ODNhYTNkYTZhNi4uYTUzMTE1OTAz
YjE0N2JkOTVmMDQzNzEyYTFmZWY2MWY1ZjgyZjEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1VuaWZvcm0uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Vbmlmb3JtLmNwcApAQCAtMjIsNiArMjIsOCBAQCBMaW5r
ZWRVbmlmb3JtOjpMaW5rZWRVbmlmb3JtKEdMZW51bSB0eXBlSW4sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwcmVjaXNpb25JbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWVJbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IGFycmF5U2l6ZUluLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBpbnQgYmluZGluZ0luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBpbnQgbG9jYXRpb25JbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
aW50IGJsb2NrSW5kZXhJbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2g6
OkJsb2NrTWVtYmVySW5mbyAmYmxvY2tJbmZvSW4pCiAgICAgOiBibG9ja0luZGV4KGJsb2NrSW5k
ZXhJbiksIGJsb2NrSW5mbyhibG9ja0luZm9JbikKQEAgLTMwLDYgKzMyLDggQEAgTGlua2VkVW5p
Zm9ybTo6TGlua2VkVW5pZm9ybShHTGVudW0gdHlwZUluLAogICAgIHByZWNpc2lvbiA9IHByZWNp
c2lvbkluOwogICAgIG5hbWUgICAgICA9IG5hbWVJbjsKICAgICBhcnJheVNpemUgPSBhcnJheVNp
emVJbjsKKyAgICBiaW5kaW5nICAgPSBiaW5kaW5nSW47CisgICAgbG9jYXRpb24gID0gbG9jYXRp
b25JbjsKIH0KIAogTGlua2VkVW5pZm9ybTo6TGlua2VkVW5pZm9ybShjb25zdCBzaDo6VW5pZm9y
bSAmdW5pZm9ybSkKQEAgLTk5LDYgKzEwMywxMSBAQCBib29sIExpbmtlZFVuaWZvcm06OmlzU2Ft
cGxlcigpIGNvbnN0CiAgICAgcmV0dXJuIElzU2FtcGxlclR5cGUodHlwZSk7CiB9CiAKK2Jvb2wg
TGlua2VkVW5pZm9ybTo6aXNJbWFnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIElzSW1hZ2VUeXBl
KHR5cGUpOworfQorCiBib29sIExpbmtlZFVuaWZvcm06OmlzRmllbGQoKSBjb25zdAogewogICAg
IHJldHVybiBuYW1lLmZpbmQoJy4nKSAhPSBzdGQ6OnN0cmluZzo6bnBvczsKQEAgLTEwOSwxMCAr
MTE4LDE1IEBAIHNpemVfdCBMaW5rZWRVbmlmb3JtOjpnZXRFbGVtZW50U2l6ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIFZhcmlhYmxlRXh0ZXJuYWxTaXplKHR5cGUpOwogfQogCitzaXplX3QgTGlua2Vk
VW5pZm9ybTo6Z2V0RWxlbWVudENvbXBvbmVudHMoKSBjb25zdAoreworICAgIHJldHVybiBWYXJp
YWJsZUNvbXBvbmVudENvdW50KHR5cGUpOworfQorCiB1aW50OF90ICpMaW5rZWRVbmlmb3JtOjpn
ZXREYXRhUHRyVG9FbGVtZW50KHNpemVfdCBlbGVtZW50SW5kZXgpCiB7CiAgICAgQVNTRVJUKCgh
aXNBcnJheSgpICYmIGVsZW1lbnRJbmRleCA9PSAwKSB8fCAoaXNBcnJheSgpICYmIGVsZW1lbnRJ
bmRleCA8IGFycmF5U2l6ZSkpOwotICAgIHJldHVybiBkYXRhKCkgKyBnZXRFbGVtZW50U2l6ZSgp
ICogZWxlbWVudEluZGV4OworICAgIHJldHVybiBkYXRhKCkgKyAoZWxlbWVudEluZGV4ID4gMCA/
IChnZXRFbGVtZW50U2l6ZSgpICogZWxlbWVudEluZGV4KSA6IDB1KTsKIH0KIAogY29uc3QgdWlu
dDhfdCAqTGlua2VkVW5pZm9ybTo6Z2V0RGF0YVB0clRvRWxlbWVudChzaXplX3QgZWxlbWVudElu
ZGV4KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL1VuaWZvcm0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Vbmlm
b3JtLmgKaW5kZXggNGQ3ZDI0ZTNiYzAxZmU2ZDk2ZTNiOTI5NGNlNmFmNTAwNTU2YWRmNy4uY2Zi
YTY4ZWFlYzY3NjgwMjQ3NDkwZjczMTc0MDY4YWQ2NDRlOGNmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1VuaWZvcm0uaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVW5pZm9ybS5oCkBAIC0yMyw3ICsyMywxNCBAQCBu
YW1lc3BhY2UgZ2wKIHN0cnVjdCBMaW5rZWRVbmlmb3JtIDogcHVibGljIHNoOjpVbmlmb3JtCiB7
CiAgICAgTGlua2VkVW5pZm9ybSgpOwotICAgIExpbmtlZFVuaWZvcm0oR0xlbnVtIHR5cGUsIEdM
ZW51bSBwcmVjaXNpb24sIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCB1bnNpZ25lZCBpbnQgYXJy
YXlTaXplLCBjb25zdCBpbnQgYmxvY2tJbmRleCwgY29uc3Qgc2g6OkJsb2NrTWVtYmVySW5mbyAm
YmxvY2tJbmZvKTsKKyAgICBMaW5rZWRVbmlmb3JtKEdMZW51bSB0eXBlLAorICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZuYW1lLAorICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGFycmF5U2l6ZSwKKyAg
ICAgICAgICAgICAgICAgIGNvbnN0IGludCBiaW5kaW5nLAorICAgICAgICAgICAgICAgICAgY29u
c3QgaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGJsb2NrSW5kZXgs
CisgICAgICAgICAgICAgICAgICBjb25zdCBzaDo6QmxvY2tNZW1iZXJJbmZvICZibG9ja0luZm8p
OwogICAgIExpbmtlZFVuaWZvcm0oY29uc3Qgc2g6OlVuaWZvcm0gJnVuaWZvcm0pOwogICAgIExp
bmtlZFVuaWZvcm0oY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9ybSk7CiAgICAgTGlua2VkVW5p
Zm9ybSAmb3BlcmF0b3I9KGNvbnN0IExpbmtlZFVuaWZvcm0gJnVuaWZvcm0pOwpAQCAtMzMsOSAr
NDAsMTEgQEAgc3RydWN0IExpbmtlZFVuaWZvcm0gOiBwdWJsaWMgc2g6OlVuaWZvcm0KICAgICB1
aW50OF90ICpkYXRhKCk7CiAgICAgY29uc3QgdWludDhfdCAqZGF0YSgpIGNvbnN0OwogICAgIGJv
b2wgaXNTYW1wbGVyKCkgY29uc3Q7CisgICAgYm9vbCBpc0ltYWdlKCkgY29uc3Q7CiAgICAgYm9v
bCBpc0luRGVmYXVsdEJsb2NrKCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZpZWxkKCkgY29uc3Q7CiAg
ICAgc2l6ZV90IGdldEVsZW1lbnRTaXplKCkgY29uc3Q7CisgICAgc2l6ZV90IGdldEVsZW1lbnRD
b21wb25lbnRzKCkgY29uc3Q7CiAgICAgdWludDhfdCAqZ2V0RGF0YVB0clRvRWxlbWVudChzaXpl
X3QgZWxlbWVudEluZGV4KTsKICAgICBjb25zdCB1aW50OF90ICpnZXREYXRhUHRyVG9FbGVtZW50
KHNpemVfdCBlbGVtZW50SW5kZXgpIGNvbnN0OwogCkBAIC00Myw3ICs1Miw3IEBAIHN0cnVjdCBM
aW5rZWRVbmlmb3JtIDogcHVibGljIHNoOjpVbmlmb3JtCiAgICAgc2g6OkJsb2NrTWVtYmVySW5m
byBibG9ja0luZm87CiAKICAgcHJpdmF0ZToKLSAgICBtdXRhYmxlIHJ4OjpNZW1vcnlCdWZmZXIg
bUxhenlEYXRhOworICAgIG11dGFibGUgYW5nbGU6Ok1lbW9yeUJ1ZmZlciBtTGF6eURhdGE7CiB9
OwogCiAvLyBIZWxwZXIgc3RydWN0IHJlcHJlc2VudGluZyBhIHNpbmdsZSBzaGFkZXIgdW5pZm9y
bSBibG9jawpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L1VuaWZvcm1MaW5rZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L1VuaWZvcm1MaW5rZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiNzM1YzRjMDAzMDgyMjMzYzdmZDlkOGI2
NmU4MzViOTE0N2EwZjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvVW5pZm9ybUxpbmtlci5jcHAKQEAgLTAsMCArMSw0OTEgQEAKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworCisvLyBVbmlmb3JtTGlua2VyLmNwcDogaW1wbGVtZW50cyBsaW5rLXRpbWUgY2hl
Y2tzIGZvciBkZWZhdWx0IGJsb2NrIHVuaWZvcm1zLCBhbmQgZ2VuZXJhdGVzIHVuaWZvcm0KKy8v
IGxvY2F0aW9ucy4gUG9wdWxhdGVzIGRhdGEgc3RydWN0dXJlcyByZWxhdGVkIHRvIHVuaWZvcm1z
IHNvIHRoYXQgdGhleSBjYW4gYmUgc3RvcmVkIGluIHByb2dyYW0KKy8vIHN0YXRlLgorCisjaW5j
bHVkZSAibGliQU5HTEUvVW5pZm9ybUxpbmtlci5oIgorCisjaW5jbHVkZSAiY29tbW9uL3V0aWxp
dGllcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0NhcHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9T
aGFkZXIuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9mZWF0dXJlcy5oIgorCituYW1lc3BhY2UgZ2wK
K3sKKworbmFtZXNwYWNlCit7CisKK0xpbmtlZFVuaWZvcm0gKkZpbmRVbmlmb3JtKHN0ZDo6dmVj
dG9yPExpbmtlZFVuaWZvcm0+ICZsaXN0LCBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkKK3sKKyAg
ICBmb3IgKExpbmtlZFVuaWZvcm0gJnVuaWZvcm0gOiBsaXN0KQorICAgIHsKKyAgICAgICAgaWYg
KHVuaWZvcm0ubmFtZSA9PSBuYW1lKQorICAgICAgICAgICAgcmV0dXJuICZ1bmlmb3JtOworICAg
IH0KKworICAgIHJldHVybiBudWxscHRyOworfQorCit9ICAvLyBhbm9ueW1vdXNlIG5hbWVzcGFj
ZQorCitVbmlmb3JtTGlua2VyOjpVbmlmb3JtTGlua2VyKGNvbnN0IFByb2dyYW1TdGF0ZSAmc3Rh
dGUpIDogbVN0YXRlKHN0YXRlKQoreworfQorCit2b2lkIFVuaWZvcm1MaW5rZXI6OmdldFJlc3Vs
dHMoc3RkOjp2ZWN0b3I8TGlua2VkVW5pZm9ybT4gKnVuaWZvcm1zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPFZhcmlhYmxlTG9jYXRpb24+ICp1bmlmb3JtTG9j
YXRpb25zKQoreworICAgIHVuaWZvcm1zLT5zd2FwKG1Vbmlmb3Jtcyk7CisgICAgdW5pZm9ybUxv
Y2F0aW9ucy0+c3dhcChtVW5pZm9ybUxvY2F0aW9ucyk7Cit9CisKK2Jvb2wgVW5pZm9ybUxpbmtl
cjo6bGluayhJbmZvTG9nICZpbmZvTG9nLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENhcHMgJmNhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbTo6Qmlu
ZGluZ3MgJnVuaWZvcm1Mb2NhdGlvbkJpbmRpbmdzKQoreworICAgIGlmIChtU3RhdGUuZ2V0QXR0
YWNoZWRWZXJ0ZXhTaGFkZXIoKSAmJiBtU3RhdGUuZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigp
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1TdGF0ZS5nZXRBdHRhY2hlZENvbXB1dGVTaGFkZXIo
KSA9PSBudWxscHRyKTsKKyAgICAgICAgaWYgKCF2YWxpZGF0ZVZlcnRleEFuZEZyYWdtZW50VW5p
Zm9ybXMoaW5mb0xvZykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIEZsYXR0ZW4gdGhlIHVuaWZvcm1zIGxpc3QgKG5lc3Rl
ZCBmaWVsZHMpIGludG8gYSBzaW1wbGUgbGlzdCAobm8gbmVzdGluZykuCisgICAgLy8gQWxzbyBj
aGVjayB0aGUgbWF4aW11bSB1bmlmb3JtIHZlY3RvciBhbmQgc2FtcGxlciBjb3VudHMuCisgICAg
aWYgKCFmbGF0dGVuVW5pZm9ybXNBbmRDaGVja0NhcHMoY2FwcywgaW5mb0xvZykpCisgICAgewor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFpbmRleFVuaWZvcm1zKGlu
Zm9Mb2csIHVuaWZvcm1Mb2NhdGlvbkJpbmRpbmdzKSkKKyAgICB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBVbmlmb3JtTGlua2Vy
Ojp2YWxpZGF0ZVZlcnRleEFuZEZyYWdtZW50VW5pZm9ybXMoSW5mb0xvZyAmaW5mb0xvZykgY29u
c3QKK3sKKyAgICAvLyBDaGVjayB0aGF0IHVuaWZvcm1zIGRlZmluZWQgaW4gdGhlIHZlcnRleCBh
bmQgZnJhZ21lbnQgc2hhZGVycyBhcmUgaWRlbnRpY2FsCisgICAgc3RkOjptYXA8c3RkOjpzdHJp
bmcsIExpbmtlZFVuaWZvcm0+IGxpbmtlZFVuaWZvcm1zOworICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PHNoOjpVbmlmb3JtPiAmdmVydGV4VW5pZm9ybXMgPQorICAgICAgICBtU3RhdGUuZ2V0QXR0YWNo
ZWRWZXJ0ZXhTaGFkZXIoKS0+Z2V0VW5pZm9ybXMoKTsKKyAgICBjb25zdCBzdGQ6OnZlY3Rvcjxz
aDo6VW5pZm9ybT4gJmZyYWdtZW50VW5pZm9ybXMgPQorICAgICAgICBtU3RhdGUuZ2V0QXR0YWNo
ZWRGcmFnbWVudFNoYWRlcigpLT5nZXRVbmlmb3JtcygpOworCisgICAgZm9yIChjb25zdCBzaDo6
VW5pZm9ybSAmdmVydGV4VW5pZm9ybSA6IHZlcnRleFVuaWZvcm1zKQorICAgIHsKKyAgICAgICAg
bGlua2VkVW5pZm9ybXNbdmVydGV4VW5pZm9ybS5uYW1lXSA9IExpbmtlZFVuaWZvcm0odmVydGV4
VW5pZm9ybSk7CisgICAgfQorCisgICAgZm9yIChjb25zdCBzaDo6VW5pZm9ybSAmZnJhZ21lbnRV
bmlmb3JtIDogZnJhZ21lbnRVbmlmb3JtcykKKyAgICB7CisgICAgICAgIGF1dG8gZW50cnkgPSBs
aW5rZWRVbmlmb3Jtcy5maW5kKGZyYWdtZW50VW5pZm9ybS5uYW1lKTsKKyAgICAgICAgaWYgKGVu
dHJ5ICE9IGxpbmtlZFVuaWZvcm1zLmVuZCgpKQorICAgICAgICB7CisgICAgICAgICAgICBMaW5r
ZWRVbmlmb3JtICpsaW5rZWRVbmlmb3JtICAgPSAmZW50cnktPnNlY29uZDsKKyAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZ1bmlmb3JtTmFtZSA9ICJ1bmlmb3JtICciICsgbGlua2VkVW5p
Zm9ybS0+bmFtZSArICInIjsKKyAgICAgICAgICAgIGlmICghbGlua1ZhbGlkYXRlVW5pZm9ybXMo
aW5mb0xvZywgdW5pZm9ybU5hbWUsICpsaW5rZWRVbmlmb3JtLCBmcmFnbWVudFVuaWZvcm0pKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gR0xTTCBFUyBT
cGVjIDMuMDAuMywgc2VjdGlvbiA0LjMuNS4KK2Jvb2wgVW5pZm9ybUxpbmtlcjo6bGlua1ZhbGlk
YXRlVW5pZm9ybXMoSW5mb0xvZyAmaW5mb0xvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnVuaWZvcm1OYW1lLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaDo6VW5pZm9ybSAmdmVydGV4
VW5pZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c2g6OlVuaWZvcm0gJmZyYWdtZW50VW5pZm9ybSkKK3sKKyNpZiBBTkdMRV9QUk9HUkFNX0xJTktf
VkFMSURBVEVfVU5JRk9STV9QUkVDSVNJT04gPT0gQU5HTEVfRU5BQkxFRAorICAgIGNvbnN0IGJv
b2wgdmFsaWRhdGVQcmVjaXNpb24gPSB0cnVlOworI2Vsc2UKKyAgICBjb25zdCBib29sIHZhbGlk
YXRlUHJlY2lzaW9uID0gZmFsc2U7CisjZW5kaWYKKworICAgIGlmICghUHJvZ3JhbTo6bGlua1Zh
bGlkYXRlVmFyaWFibGVzQmFzZShpbmZvTG9nLCB1bmlmb3JtTmFtZSwgdmVydGV4VW5pZm9ybSwg
ZnJhZ21lbnRVbmlmb3JtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWxpZGF0ZVByZWNpc2lvbikpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgLy8gR0xTTCBFUyBTcGVjIDMuMTAuNCwgc2VjdGlvbiA0LjQuNS4KKyAgICBp
ZiAodmVydGV4VW5pZm9ybS5iaW5kaW5nICE9IC0xICYmIGZyYWdtZW50VW5pZm9ybS5iaW5kaW5n
ICE9IC0xICYmCisgICAgICAgIHZlcnRleFVuaWZvcm0uYmluZGluZyAhPSBmcmFnbWVudFVuaWZv
cm0uYmluZGluZykKKyAgICB7CisgICAgICAgIGluZm9Mb2cgPDwgIkJpbmRpbmcgbGF5b3V0IHF1
YWxpZmllcnMgZm9yICIgPDwgdW5pZm9ybU5hbWUKKyAgICAgICAgICAgICAgICA8PCAiIGRpZmZl
ciBiZXR3ZWVuIHZlcnRleCBhbmQgZnJhZ21lbnQgc2hhZGVycy4iOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgLy8gR0xTTCBFUyBTcGVjIDMuMTAuNCwgc2VjdGlvbiA5LjIu
MS4KKyAgICBpZiAodmVydGV4VW5pZm9ybS5sb2NhdGlvbiAhPSAtMSAmJiBmcmFnbWVudFVuaWZv
cm0ubG9jYXRpb24gIT0gLTEgJiYKKyAgICAgICAgdmVydGV4VW5pZm9ybS5sb2NhdGlvbiAhPSBm
cmFnbWVudFVuaWZvcm0ubG9jYXRpb24pCisgICAgeworICAgICAgICBpbmZvTG9nIDw8ICJMb2Nh
dGlvbiBsYXlvdXQgcXVhbGlmaWVycyBmb3IgIiA8PCB1bmlmb3JtTmFtZQorICAgICAgICAgICAg
ICAgIDw8ICIgZGlmZmVyIGJldHdlZW4gdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXJzLiI7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBVbmlmb3JtTGlua2VyOjppbmRleFVuaWZvcm1zKEluZm9Mb2cgJmluZm9Mb2csCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbTo6QmluZGluZ3MgJnVuaWZv
cm1Mb2NhdGlvbkJpbmRpbmdzKQoreworICAgIC8vIEFsbCB0aGUgbG9jYXRpb25zIHdoZXJlIGFu
b3RoZXIgdW5pZm9ybSBjYW4ndCBiZSBsb2NhdGVkLgorICAgIHN0ZDo6c2V0PEdMdWludD4gcmVz
ZXJ2ZWRMb2NhdGlvbnM7CisgICAgLy8gTG9jYXRpb25zIHdoaWNoIGhhdmUgYmVlbiBhbGxvY2F0
ZWQgZm9yIGFuIHVudXNlZCB1bmlmb3JtLgorICAgIHN0ZDo6c2V0PEdMdWludD4gaWdub3JlZExv
Y2F0aW9uczsKKworICAgIGludCBtYXhVbmlmb3JtTG9jYXRpb24gPSAtMTsKKworICAgIC8vIEdh
dGhlciB1bmlmb3JtIGxvY2F0aW9ucyB0aGF0IGhhdmUgYmVlbiBzZXQgZWl0aGVyIHVzaW5nIHRo
ZSBiaW5kVW5pZm9ybUxvY2F0aW9uIEFQSSBvciBieQorICAgIC8vIHVzaW5nIGEgbG9jYXRpb24g
bGF5b3V0IHF1YWxpZmllciBhbmQgY2hlY2sgY29uZmxpY3RzIGJldHdlZW4gdGhlbS4KKyAgICBp
ZiAoIWdhdGhlclVuaWZvcm1Mb2NhdGlvbnNBbmRDaGVja0NvbmZsaWN0cyhpbmZvTG9nLCB1bmlm
b3JtTG9jYXRpb25CaW5kaW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmcmVzZXJ2ZWRMb2NhdGlvbnMsICZpZ25vcmVkTG9jYXRpb25zLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYXhVbmlmb3Jt
TG9jYXRpb24pKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8v
IENvbmZsaWN0cyBoYXZlIGJlZW4gY2hlY2tlZCwgbm93IHdlIGNhbiBwcnVuZSBub24tc3RhdGlj
YWxseSB1c2VkIHVuaWZvcm1zLiBDb2RlIGZ1cnRoZXIgZG93bgorICAgIC8vIHRoZSBsaW5lIHJl
bGllcyBvbiBvbmx5IGhhdmluZyBzdGF0aWNhbGx5IHVzZWQgdW5pZm9ybXMgaW4gbVVuaWZvcm1z
LgorICAgIHBydW5lVW51c2VkVW5pZm9ybXMoKTsKKworICAgIC8vIEdhdGhlciB1bmlmb3JtcyB0
aGF0IGhhdmUgdGhlaXIgbG9jYXRpb24gcHJlLXNldCBhbmQgdW5pZm9ybXMgdGhhdCBkb24ndCB5
ZXQgaGF2ZSBhIGxvY2F0aW9uLgorICAgIHN0ZDo6dmVjdG9yPFZhcmlhYmxlTG9jYXRpb24+IHVu
bG9jYXRlZFVuaWZvcm1zOworICAgIHN0ZDo6bWFwPEdMdWludCwgVmFyaWFibGVMb2NhdGlvbj4g
cHJlTG9jYXRlZFVuaWZvcm1zOworCisgICAgZm9yIChzaXplX3QgdW5pZm9ybUluZGV4ID0gMDsg
dW5pZm9ybUluZGV4IDwgbVVuaWZvcm1zLnNpemUoKTsgdW5pZm9ybUluZGV4KyspCisgICAgewor
ICAgICAgICBjb25zdCBMaW5rZWRVbmlmb3JtICZ1bmlmb3JtID0gbVVuaWZvcm1zW3VuaWZvcm1J
bmRleF07CisKKyAgICAgICAgaWYgKHVuaWZvcm0uaXNCdWlsdEluKCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaW50IHByZVNldExvY2F0
aW9uID0gdW5pZm9ybUxvY2F0aW9uQmluZGluZ3MuZ2V0QmluZGluZyh1bmlmb3JtLm5hbWUpOwor
ICAgICAgICBpbnQgc2hhZGVyTG9jYXRpb24gPSB1bmlmb3JtLmxvY2F0aW9uOworCisgICAgICAg
IGlmIChzaGFkZXJMb2NhdGlvbiAhPSAtMSkKKyAgICAgICAgeworICAgICAgICAgICAgcHJlU2V0
TG9jYXRpb24gPSBzaGFkZXJMb2NhdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAodW5z
aWduZWQgaW50IGFycmF5SW5kZXggPSAwOyBhcnJheUluZGV4IDwgdW5pZm9ybS5lbGVtZW50Q291
bnQoKTsgYXJyYXlJbmRleCsrKQorICAgICAgICB7CisgICAgICAgICAgICBWYXJpYWJsZUxvY2F0
aW9uIGxvY2F0aW9uKHVuaWZvcm0ubmFtZSwgYXJyYXlJbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih1bmlmb3JtSW5k
ZXgpKTsKKworICAgICAgICAgICAgaWYgKChhcnJheUluZGV4ID09IDAgJiYgcHJlU2V0TG9jYXRp
b24gIT0gLTEpIHx8IHNoYWRlckxvY2F0aW9uICE9IC0xKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGludCBlbGVtZW50TG9jYXRpb24gICAgICAgICAgICAgICAgID0gcHJlU2V0TG9j
YXRpb24gKyBhcnJheUluZGV4OworICAgICAgICAgICAgICAgIHByZUxvY2F0ZWRVbmlmb3Jtc1tl
bGVtZW50TG9jYXRpb25dID0gbG9jYXRpb247CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdW5sb2NhdGVkVW5pZm9ybXMucHVz
aF9iYWNrKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IC8vIE1ha2UgZW5vdWdoIHNwYWNlIGZvciBhbGwgdW5pZm9ybXMsIHdpdGggcHJlLXNldCBsb2Nh
dGlvbnMgb3Igbm90LgorICAgIG1Vbmlmb3JtTG9jYXRpb25zLnJlc2l6ZSgKKyAgICAgICAgc3Rk
OjptYXgodW5sb2NhdGVkVW5pZm9ybXMuc2l6ZSgpICsgcHJlTG9jYXRlZFVuaWZvcm1zLnNpemUo
KSArIGlnbm9yZWRMb2NhdGlvbnMuc2l6ZSgpLAorICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxzaXplX3Q+KG1heFVuaWZvcm1Mb2NhdGlvbiArIDEpKSk7CisKKyAgICAvLyBBc3NpZ24gdW5p
Zm9ybXMgd2l0aCBwcmUtc2V0IGxvY2F0aW9ucworICAgIGZvciAoY29uc3QgYXV0byAmdW5pZm9y
bSA6IHByZUxvY2F0ZWRVbmlmb3JtcykKKyAgICB7CisgICAgICAgIG1Vbmlmb3JtTG9jYXRpb25z
W3VuaWZvcm0uZmlyc3RdID0gdW5pZm9ybS5zZWNvbmQ7CisgICAgfQorCisgICAgLy8gQXNzaWdu
IGlnbm9yZWQgdW5pZm9ybXMKKyAgICBmb3IgKGNvbnN0IGF1dG8gJmlnbm9yZWRMb2NhdGlvbiA6
IGlnbm9yZWRMb2NhdGlvbnMpCisgICAgeworICAgICAgICBtVW5pZm9ybUxvY2F0aW9uc1tpZ25v
cmVkTG9jYXRpb25dLmlnbm9yZWQgPSB0cnVlOworICAgIH0KKworICAgIC8vIEF1dG9tYXRpY2Fs
bHkgYXNzaWduIGxvY2F0aW9ucyBmb3IgdGhlIHJlc3Qgb2YgdGhlIHVuaWZvcm1zCisgICAgc2l6
ZV90IG5leHRVbmlmb3JtTG9jYXRpb24gPSAwOworICAgIGZvciAoY29uc3QgYXV0byAmdW5sb2Nh
dGVkVW5pZm9ybSA6IHVubG9jYXRlZFVuaWZvcm1zKQorICAgIHsKKyAgICAgICAgd2hpbGUgKG1V
bmlmb3JtTG9jYXRpb25zW25leHRVbmlmb3JtTG9jYXRpb25dLnVzZWQgfHwKKyAgICAgICAgICAg
ICAgIG1Vbmlmb3JtTG9jYXRpb25zW25leHRVbmlmb3JtTG9jYXRpb25dLmlnbm9yZWQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG5leHRVbmlmb3JtTG9jYXRpb24rKzsKKyAgICAgICAgfQorCisg
ICAgICAgIEFTU0VSVChuZXh0VW5pZm9ybUxvY2F0aW9uIDwgbVVuaWZvcm1Mb2NhdGlvbnMuc2l6
ZSgpKTsKKyAgICAgICAgbVVuaWZvcm1Mb2NhdGlvbnNbbmV4dFVuaWZvcm1Mb2NhdGlvbl0gPSB1
bmxvY2F0ZWRVbmlmb3JtOworICAgICAgICBuZXh0VW5pZm9ybUxvY2F0aW9uKys7CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVW5pZm9ybUxpbmtlcjo6Z2F0aGVyVW5pZm9y
bUxvY2F0aW9uc0FuZENoZWNrQ29uZmxpY3RzKAorICAgIEluZm9Mb2cgJmluZm9Mb2csCisgICAg
Y29uc3QgUHJvZ3JhbTo6QmluZGluZ3MgJnVuaWZvcm1Mb2NhdGlvbkJpbmRpbmdzLAorICAgIHN0
ZDo6c2V0PEdMdWludD4gKnJlc2VydmVkTG9jYXRpb25zLAorICAgIHN0ZDo6c2V0PEdMdWludD4g
Kmlnbm9yZWRMb2NhdGlvbnMsCisgICAgaW50ICptYXhVbmlmb3JtTG9jYXRpb24pCit7CisgICAg
Zm9yIChjb25zdCBMaW5rZWRVbmlmb3JtICZ1bmlmb3JtIDogbVVuaWZvcm1zKQorICAgIHsKKyAg
ICAgICAgaWYgKHVuaWZvcm0uaXNCdWlsdEluKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaW50IGFwaUJvdW5kTG9jYXRpb24gPSB1bmlm
b3JtTG9jYXRpb25CaW5kaW5ncy5nZXRCaW5kaW5nKHVuaWZvcm0ubmFtZSk7CisgICAgICAgIGlu
dCBzaGFkZXJMb2NhdGlvbiAgID0gdW5pZm9ybS5sb2NhdGlvbjsKKworICAgICAgICBpZiAoc2hh
ZGVyTG9jYXRpb24gIT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aW50IGFycmF5SW5kZXggPSAwOyBhcnJheUluZGV4IDwgdW5pZm9ybS5lbGVtZW50Q291bnQoKTsg
YXJyYXlJbmRleCsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEdMU0wgRVMg
My4xMCBzZWN0aW9uIDQuNC4zCisgICAgICAgICAgICAgICAgaW50IGVsZW1lbnRMb2NhdGlvbiA9
IHNoYWRlckxvY2F0aW9uICsgYXJyYXlJbmRleDsKKyAgICAgICAgICAgICAgICAqbWF4VW5pZm9y
bUxvY2F0aW9uID0gc3RkOjptYXgoKm1heFVuaWZvcm1Mb2NhdGlvbiwgZWxlbWVudExvY2F0aW9u
KTsKKyAgICAgICAgICAgICAgICBpZiAocmVzZXJ2ZWRMb2NhdGlvbnMtPmZpbmQoZWxlbWVudExv
Y2F0aW9uKSAhPSByZXNlcnZlZExvY2F0aW9ucy0+ZW5kKCkpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBpbmZvTG9nIDw8ICJNdWx0aXBsZSB1bmlmb3JtcyBib3VuZCB0
byBsb2NhdGlvbiAiIDw8IGVsZW1lbnRMb2NhdGlvbiA8PCAiLiI7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVz
ZXJ2ZWRMb2NhdGlvbnMtPmluc2VydChlbGVtZW50TG9jYXRpb24pOworICAgICAgICAgICAgICAg
IGlmICghdW5pZm9ybS5zdGF0aWNVc2UpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBpZ25vcmVkTG9jYXRpb25zLT5pbnNlcnQoZWxlbWVudExvY2F0aW9uKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAo
YXBpQm91bmRMb2NhdGlvbiAhPSAtMSAmJiB1bmlmb3JtLnN0YXRpY1VzZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgLy8gT25seSB0aGUgZmlyc3QgbG9jYXRpb24gaXMgcmVzZXJ2ZWQgZXZlbiBp
ZiB0aGUgdW5pZm9ybSBpcyBhbiBhcnJheS4KKyAgICAgICAgICAgICptYXhVbmlmb3JtTG9jYXRp
b24gPSBzdGQ6Om1heCgqbWF4VW5pZm9ybUxvY2F0aW9uLCBhcGlCb3VuZExvY2F0aW9uKTsKKyAg
ICAgICAgICAgIGlmIChyZXNlcnZlZExvY2F0aW9ucy0+ZmluZChhcGlCb3VuZExvY2F0aW9uKSAh
PSByZXNlcnZlZExvY2F0aW9ucy0+ZW5kKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgaW5mb0xvZyA8PCAiTXVsdGlwbGUgdW5pZm9ybXMgYm91bmQgdG8gbG9jYXRpb24gIiA8PCBh
cGlCb3VuZExvY2F0aW9uIDw8ICIuIjsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXNlcnZlZExvY2F0aW9ucy0+aW5zZXJ0KGFwaUJv
dW5kTG9jYXRpb24pOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gUmVjb3JkIHRoZSB1bmlm
b3JtIGxvY2F0aW9ucyB0aGF0IHdlcmUgYm91bmQgdXNpbmcgdGhlIEFQSSBmb3IgdW5pZm9ybXMg
dGhhdCB3ZXJlIG5vdCBmb3VuZAorICAgIC8vIGZyb20gdGhlIHNoYWRlci4gT3RoZXIgdW5pZm9y
bXMgc2hvdWxkIG5vdCBiZSBhc3NpZ25lZCB0byB0aG9zZSBsb2NhdGlvbnMuCisgICAgZm9yIChj
b25zdCBhdXRvICZsb2NhdGlvbkJpbmRpbmcgOiB1bmlmb3JtTG9jYXRpb25CaW5kaW5ncykKKyAg
ICB7CisgICAgICAgIEdMdWludCBsb2NhdGlvbiA9IGxvY2F0aW9uQmluZGluZy5zZWNvbmQ7Cisg
ICAgICAgIGlmIChyZXNlcnZlZExvY2F0aW9ucy0+ZmluZChsb2NhdGlvbikgPT0gcmVzZXJ2ZWRM
b2NhdGlvbnMtPmVuZCgpKQorICAgICAgICB7CisgICAgICAgICAgICBpZ25vcmVkTG9jYXRpb25z
LT5pbnNlcnQobG9jYXRpb24pOworICAgICAgICAgICAgKm1heFVuaWZvcm1Mb2NhdGlvbiA9IHN0
ZDo6bWF4KCptYXhVbmlmb3JtTG9jYXRpb24sIHN0YXRpY19jYXN0PGludD4obG9jYXRpb24pKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFVuaWZvcm1M
aW5rZXI6OnBydW5lVW51c2VkVW5pZm9ybXMoKQoreworICAgIGF1dG8gdW5pZm9ybUl0ZXIgPSBt
VW5pZm9ybXMuYmVnaW4oKTsKKyAgICB3aGlsZSAodW5pZm9ybUl0ZXIgIT0gbVVuaWZvcm1zLmVu
ZCgpKQorICAgIHsKKyAgICAgICAgaWYgKHVuaWZvcm1JdGVyLT5zdGF0aWNVc2UpCisgICAgICAg
IHsKKyAgICAgICAgICAgICsrdW5pZm9ybUl0ZXI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQor
ICAgICAgICB7CisgICAgICAgICAgICB1bmlmb3JtSXRlciA9IG1Vbmlmb3Jtcy5lcmFzZSh1bmlm
b3JtSXRlcik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgVW5pZm9ybUxpbmtlcjo6Zmxh
dHRlblVuaWZvcm1zQW5kQ2hlY2tDYXBzRm9yU2hhZGVyKAorICAgIGNvbnN0IFNoYWRlciAmc2hh
ZGVyLAorICAgIEdMdWludCBtYXhVbmlmb3JtQ29tcG9uZW50cywKKyAgICBHTHVpbnQgbWF4VGV4
dHVyZUltYWdlVW5pdHMsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmNvbXBvbmVudHNFcnJvck1l
c3NhZ2UsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNhbXBsZXJFcnJvck1lc3NhZ2UsCisgICAg
c3RkOjp2ZWN0b3I8TGlua2VkVW5pZm9ybT4gJnNhbXBsZXJVbmlmb3JtcywKKyAgICBJbmZvTG9n
ICZpbmZvTG9nKQoreworICAgIFZlY3RvckFuZFNhbXBsZXJDb3VudCB2YXNDb3VudDsKKyAgICBm
b3IgKGNvbnN0IHNoOjpVbmlmb3JtICZ1bmlmb3JtIDogc2hhZGVyLmdldFVuaWZvcm1zKCkpCisg
ICAgeworICAgICAgICB2YXNDb3VudCArPSBmbGF0dGVuVW5pZm9ybSh1bmlmb3JtLCAmc2FtcGxl
clVuaWZvcm1zKTsKKyAgICB9CisKKyAgICBpZiAodmFzQ291bnQudmVjdG9yQ291bnQgPiBtYXhV
bmlmb3JtQ29tcG9uZW50cykKKyAgICB7CisgICAgICAgIGluZm9Mb2cgPDwgY29tcG9uZW50c0Vy
cm9yTWVzc2FnZSA8PCBtYXhVbmlmb3JtQ29tcG9uZW50cyA8PCAiKS4iOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHZhc0NvdW50LnNhbXBsZXJDb3VudCA+IG1heFRl
eHR1cmVJbWFnZVVuaXRzKQorICAgIHsKKyAgICAgICAgaW5mb0xvZyA8PCBzYW1wbGVyRXJyb3JN
ZXNzYWdlIDw8IG1heFRleHR1cmVJbWFnZVVuaXRzIDw8ICIpLiI7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBVbmlmb3JtTGlua2Vy
OjpmbGF0dGVuVW5pZm9ybXNBbmRDaGVja0NhcHMoY29uc3QgQ2FwcyAmY2FwcywgSW5mb0xvZyAm
aW5mb0xvZykKK3sKKyAgICBzdGQ6OnZlY3RvcjxMaW5rZWRVbmlmb3JtPiBzYW1wbGVyVW5pZm9y
bXM7CisKKyAgICBpZiAobVN0YXRlLmdldEF0dGFjaGVkQ29tcHV0ZVNoYWRlcigpKQorICAgIHsK
KyAgICAgICAgY29uc3QgU2hhZGVyICpjb21wdXRlU2hhZGVyID0gbVN0YXRlLmdldEF0dGFjaGVk
Q29tcHV0ZVNoYWRlcigpOworCisgICAgICAgIC8vIFRPRE8gKG1yYWRldik6IGNoZWNrIHdoZXRo
ZXIgd2UgbmVlZCBmaW5lci1ncmFpbmVkIGNvbXBvbmVudCBjb3VudGluZworICAgICAgICBpZiAo
IWZsYXR0ZW5Vbmlmb3Jtc0FuZENoZWNrQ2Fwc0ZvclNoYWRlcigKKyAgICAgICAgICAgICAgICAq
Y29tcHV0ZVNoYWRlciwgY2Fwcy5tYXhDb21wdXRlVW5pZm9ybUNvbXBvbmVudHMgLyA0LAorICAg
ICAgICAgICAgICAgIGNhcHMubWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzLAorICAgICAgICAg
ICAgICAgICJDb21wdXRlIHNoYWRlciBhY3RpdmUgdW5pZm9ybXMgZXhjZWVkIE1BWF9DT01QVVRF
X1VOSUZPUk1fQ09NUE9ORU5UUyAoIiwKKyAgICAgICAgICAgICAgICAiQ29tcHV0ZSBzaGFkZXIg
c2FtcGxlciBjb3VudCBleGNlZWRzIE1BWF9DT01QVVRFX1RFWFRVUkVfSU1BR0VfVU5JVFMgKCIs
CisgICAgICAgICAgICAgICAgc2FtcGxlclVuaWZvcm1zLCBpbmZvTG9nKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIGNvbnN0IFNoYWRlciAqdmVydGV4U2hhZGVyID0gbVN0YXRlLmdldEF0dGFj
aGVkVmVydGV4U2hhZGVyKCk7CisKKyAgICAgICAgaWYgKCFmbGF0dGVuVW5pZm9ybXNBbmRDaGVj
a0NhcHNGb3JTaGFkZXIoCisgICAgICAgICAgICAgICAgKnZlcnRleFNoYWRlciwgY2Fwcy5tYXhW
ZXJ0ZXhVbmlmb3JtVmVjdG9ycywgY2Fwcy5tYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cywKKyAg
ICAgICAgICAgICAgICAiVmVydGV4IHNoYWRlciBhY3RpdmUgdW5pZm9ybXMgZXhjZWVkIE1BWF9W
RVJURVhfVU5JRk9STV9WRUNUT1JTICgiLAorICAgICAgICAgICAgICAgICJWZXJ0ZXggc2hhZGVy
IHNhbXBsZXIgY291bnQgZXhjZWVkcyBNQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMgKCIs
CisgICAgICAgICAgICAgICAgc2FtcGxlclVuaWZvcm1zLCBpbmZvTG9nKSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGNvbnN0IFNoYWRl
ciAqZnJhZ21lbnRTaGFkZXIgPSBtU3RhdGUuZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpOwor
CisgICAgICAgIGlmICghZmxhdHRlblVuaWZvcm1zQW5kQ2hlY2tDYXBzRm9yU2hhZGVyKAorICAg
ICAgICAgICAgICAgICpmcmFnbWVudFNoYWRlciwgY2Fwcy5tYXhGcmFnbWVudFVuaWZvcm1WZWN0
b3JzLCBjYXBzLm1heFRleHR1cmVJbWFnZVVuaXRzLAorICAgICAgICAgICAgICAgICJGcmFnbWVu
dCBzaGFkZXIgYWN0aXZlIHVuaWZvcm1zIGV4Y2VlZCBNQVhfRlJBR01FTlRfVU5JRk9STV9WRUNU
T1JTICgiLAorICAgICAgICAgICAgICAgICJGcmFnbWVudCBzaGFkZXIgc2FtcGxlciBjb3VudCBl
eGNlZWRzIE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTICgiLCBzYW1wbGVyVW5pZm9ybXMsCisgICAg
ICAgICAgICAgICAgaW5mb0xvZykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1Vbmlmb3Jtcy5pbnNlcnQobVVuaWZvcm1zLmVu
ZCgpLCBzYW1wbGVyVW5pZm9ybXMuYmVnaW4oKSwgc2FtcGxlclVuaWZvcm1zLmVuZCgpKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworVW5pZm9ybUxpbmtlcjo6VmVjdG9yQW5kU2FtcGxlckNvdW50
IFVuaWZvcm1MaW5rZXI6OmZsYXR0ZW5Vbmlmb3JtKAorICAgIGNvbnN0IHNoOjpVbmlmb3JtICZ1
bmlmb3JtLAorICAgIHN0ZDo6dmVjdG9yPExpbmtlZFVuaWZvcm0+ICpzYW1wbGVyVW5pZm9ybXMp
Cit7CisgICAgaW50IGxvY2F0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICA9IHVuaWZvcm0u
bG9jYXRpb247CisgICAgVmVjdG9yQW5kU2FtcGxlckNvdW50IHVuaWZvcm1WYXNDb3VudCA9IGZs
YXR0ZW5Vbmlmb3JtSW1wbCgKKyAgICAgICAgdW5pZm9ybSwgdW5pZm9ybS5uYW1lLCBzYW1wbGVy
VW5pZm9ybXMsIHVuaWZvcm0uc3RhdGljVXNlLCB1bmlmb3JtLmJpbmRpbmcsICZsb2NhdGlvbik7
CisgICAgaWYgKHVuaWZvcm0uc3RhdGljVXNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHVuaWZv
cm1WYXNDb3VudDsKKyAgICB9CisgICAgcmV0dXJuIFZlY3RvckFuZFNhbXBsZXJDb3VudCgpOwor
fQorCitVbmlmb3JtTGlua2VyOjpWZWN0b3JBbmRTYW1wbGVyQ291bnQgVW5pZm9ybUxpbmtlcjo6
ZmxhdHRlblVuaWZvcm1JbXBsKAorICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmdW5pZm9y
bSwKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnVsbE5hbWUsCisgICAgc3RkOjp2ZWN0b3I8TGlu
a2VkVW5pZm9ybT4gKnNhbXBsZXJVbmlmb3JtcywKKyAgICBib29sIG1hcmtTdGF0aWNVc2UsCisg
ICAgaW50IGJpbmRpbmcsCisgICAgaW50ICpsb2NhdGlvbikKK3sKKyAgICBBU1NFUlQobG9jYXRp
b24pOworICAgIFZlY3RvckFuZFNhbXBsZXJDb3VudCB2ZWN0b3JBbmRTYW1wbGVyQ291bnQ7CisK
KyAgICBpZiAodW5pZm9ybS5pc1N0cnVjdCgpKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgZWxlbWVudEluZGV4ID0gMDsgZWxlbWVudEluZGV4IDwgdW5pZm9ybS5lbGVtZW50Q291
bnQoKTsgZWxlbWVudEluZGV4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZlbGVtZW50U3RyaW5nID0gKHVuaWZvcm0uaXNBcnJheSgpID8gQXJyYXlTdHJpbmco
ZWxlbWVudEluZGV4KSA6ICIiKTsKKworICAgICAgICAgICAgZm9yIChzaXplX3QgZmllbGRJbmRl
eCA9IDA7IGZpZWxkSW5kZXggPCB1bmlmb3JtLmZpZWxkcy5zaXplKCk7IGZpZWxkSW5kZXgrKykK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUg
JmZpZWxkICA9IHVuaWZvcm0uZmllbGRzW2ZpZWxkSW5kZXhdOworICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZmaWVsZEZ1bGxOYW1lID0gKGZ1bGxOYW1lICsgZWxlbWVudFN0cmlu
ZyArICIuIiArIGZpZWxkLm5hbWUpOworCisgICAgICAgICAgICAgICAgdmVjdG9yQW5kU2FtcGxl
ckNvdW50ICs9IGZsYXR0ZW5Vbmlmb3JtSW1wbChmaWVsZCwgZmllbGRGdWxsTmFtZSwgc2FtcGxl
clVuaWZvcm1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWFya1N0YXRpY1VzZSwgLTEsIGxvY2F0aW9uKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB2ZWN0b3JBbmRTYW1wbGVyQ291bnQ7Cisg
ICAgfQorCisgICAgLy8gTm90IGEgc3RydWN0CisgICAgYm9vbCBpc1NhbXBsZXIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IElzU2FtcGxlclR5cGUodW5pZm9ybS50eXBlKTsKKyAgICBz
dGQ6OnZlY3RvcjxnbDo6TGlua2VkVW5pZm9ybT4gKnVuaWZvcm1MaXN0ID0gJm1Vbmlmb3JtczsK
KyAgICBpZiAoaXNTYW1wbGVyKQorICAgIHsKKyAgICAgICAgLy8gU3RvcmUgc2FtcGxlciB1bmlm
b3JtcyBzZXBhcmF0ZWx5LCBzbyB3ZSdsbCBhcHBlbmQgdGhlbSB0byB0aGUgZW5kIG9mIHRoZSBs
aXN0LgorICAgICAgICB1bmlmb3JtTGlzdCA9IHNhbXBsZXJVbmlmb3JtczsKKyAgICB9CisgICAg
TGlua2VkVW5pZm9ybSAqZXhpc3RpbmdVbmlmb3JtID0gRmluZFVuaWZvcm0oKnVuaWZvcm1MaXN0
LCBmdWxsTmFtZSk7CisgICAgaWYgKGV4aXN0aW5nVW5pZm9ybSkKKyAgICB7CisgICAgICAgIGlm
IChiaW5kaW5nICE9IC0xKQorICAgICAgICB7CisgICAgICAgICAgICBleGlzdGluZ1VuaWZvcm0t
PmJpbmRpbmcgPSBiaW5kaW5nOworICAgICAgICB9CisgICAgICAgIGlmICgqbG9jYXRpb24gIT0g
LTEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGV4aXN0aW5nVW5pZm9ybS0+bG9jYXRpb24gPSAq
bG9jYXRpb247CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1hcmtTdGF0aWNVc2UpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGV4aXN0aW5nVW5pZm9ybS0+c3RhdGljVXNlID0gdHJ1ZTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBMaW5rZWRVbmlmb3JtIGxpbmtl
ZFVuaWZvcm0odW5pZm9ybS50eXBlLCB1bmlmb3JtLnByZWNpc2lvbiwgZnVsbE5hbWUsIHVuaWZv
cm0uYXJyYXlTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluZGlu
ZywgKmxvY2F0aW9uLCAtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo
OjpCbG9ja01lbWJlckluZm86OmdldERlZmF1bHRCbG9ja0luZm8oKSk7CisgICAgICAgIGxpbmtl
ZFVuaWZvcm0uc3RhdGljVXNlID0gbWFya1N0YXRpY1VzZTsKKyAgICAgICAgdW5pZm9ybUxpc3Qt
PnB1c2hfYmFjayhsaW5rZWRVbmlmb3JtKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBpbnQgZWxl
bWVudENvdW50ID0gdW5pZm9ybS5lbGVtZW50Q291bnQoKTsKKworICAgIC8vIFNhbXBsZXJzIGFy
ZW4ndCAicmVhbCIgdW5pZm9ybXMsIHNvIHRoZXkgZG9uJ3QgY291bnQgdG93YXJkcyByZWdpc3Rl
ciB1c2FnZS4KKyAgICAvLyBMaWtld2lzZSwgZG9uJ3QgY291bnQgInJlYWwiIHVuaWZvcm1zIHRv
d2FyZHMgc2FtcGxlciBjb3VudC4KKyAgICB2ZWN0b3JBbmRTYW1wbGVyQ291bnQudmVjdG9yQ291
bnQgPQorICAgICAgICAoaXNTYW1wbGVyID8gMCA6IChWYXJpYWJsZVJlZ2lzdGVyQ291bnQodW5p
Zm9ybS50eXBlKSAqIGVsZW1lbnRDb3VudCkpOworICAgIHZlY3RvckFuZFNhbXBsZXJDb3VudC5z
YW1wbGVyQ291bnQgPSAoaXNTYW1wbGVyID8gZWxlbWVudENvdW50IDogMCk7CisKKyAgICBpZiAo
KmxvY2F0aW9uICE9IC0xKQorICAgIHsKKyAgICAgICAgKmxvY2F0aW9uICs9IGVsZW1lbnRDb3Vu
dDsKKyAgICB9CisKKyAgICByZXR1cm4gdmVjdG9yQW5kU2FtcGxlckNvdW50OworfQorCit9ICAv
LyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9Vbmlmb3JtTGlua2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvVW5pZm9ybUxpbmtlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg2OWRhNTJjZTQyOGI0ZWYyYzllZGM2
YjljODU3NjFjNjM2ZTUzNWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvVW5pZm9ybUxpbmtlci5oCkBAIC0wLDAgKzEsOTEgQEAKKy8vCisv
LyBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCisvLworCisvLyBVbmlmb3JtTGlua2VyLmg6IGltcGxlbWVudHMgbGluay10aW1lIGNoZWNr
cyBmb3IgZGVmYXVsdCBibG9jayB1bmlmb3JtcywgYW5kIGdlbmVyYXRlcyB1bmlmb3JtCisvLyBs
b2NhdGlvbnMuIFBvcHVsYXRlcyBkYXRhIHN0cnVjdHVyZXMgcmVsYXRlZCB0byB1bmlmb3JtcyBz
byB0aGF0IHRoZXkgY2FuIGJlIHN0b3JlZCBpbiBwcm9ncmFtCisvLyBzdGF0ZS4KKworI2lmbmRl
ZiBMSUJBTkdMRV9VTklGT1JNTElOS0VSX0hfCisjZGVmaW5lIExJQkFOR0xFX1VOSUZPUk1MSU5L
RVJfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9Vbmlmb3JtLmgiCisKK25hbWVzcGFjZSBnbAoreworCitjbGFzcyBVbmlmb3JtTGlua2VyCit7
CisgIHB1YmxpYzoKKyAgICBVbmlmb3JtTGlua2VyKGNvbnN0IFByb2dyYW1TdGF0ZSAmc3RhdGUp
OworCisgICAgYm9vbCBsaW5rKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IENhcHMgJmNhcHMsIGNv
bnN0IFByb2dyYW06OkJpbmRpbmdzICZ1bmlmb3JtTG9jYXRpb25CaW5kaW5ncyk7CisKKyAgICB2
b2lkIGdldFJlc3VsdHMoc3RkOjp2ZWN0b3I8TGlua2VkVW5pZm9ybT4gKnVuaWZvcm1zLAorICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxWYXJpYWJsZUxvY2F0aW9uPiAqdW5pZm9ybUxv
Y2F0aW9ucyk7CisKKyAgcHJpdmF0ZToKKyAgICBzdHJ1Y3QgVmVjdG9yQW5kU2FtcGxlckNvdW50
CisgICAgeworICAgICAgICBWZWN0b3JBbmRTYW1wbGVyQ291bnQoKSA6IHZlY3RvckNvdW50KDAp
LCBzYW1wbGVyQ291bnQoMCkge30KKyAgICAgICAgVmVjdG9yQW5kU2FtcGxlckNvdW50KGNvbnN0
IFZlY3RvckFuZFNhbXBsZXJDb3VudCAmb3RoZXIpID0gZGVmYXVsdDsKKyAgICAgICAgVmVjdG9y
QW5kU2FtcGxlckNvdW50ICZvcGVyYXRvcj0oY29uc3QgVmVjdG9yQW5kU2FtcGxlckNvdW50ICZv
dGhlcikgPSBkZWZhdWx0OworCisgICAgICAgIFZlY3RvckFuZFNhbXBsZXJDb3VudCAmb3BlcmF0
b3IrPShjb25zdCBWZWN0b3JBbmRTYW1wbGVyQ291bnQgJm90aGVyKQorICAgICAgICB7CisgICAg
ICAgICAgICB2ZWN0b3JDb3VudCArPSBvdGhlci52ZWN0b3JDb3VudDsKKyAgICAgICAgICAgIHNh
bXBsZXJDb3VudCArPSBvdGhlci5zYW1wbGVyQ291bnQ7CisgICAgICAgICAgICByZXR1cm4gKnRo
aXM7CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9yQ291bnQ7CisgICAg
ICAgIHVuc2lnbmVkIGludCBzYW1wbGVyQ291bnQ7CisgICAgfTsKKworICAgIGJvb2wgdmFsaWRh
dGVWZXJ0ZXhBbmRGcmFnbWVudFVuaWZvcm1zKEluZm9Mb2cgJmluZm9Mb2cpIGNvbnN0OworCisg
ICAgc3RhdGljIGJvb2wgbGlua1ZhbGlkYXRlVW5pZm9ybXMoSW5mb0xvZyAmaW5mb0xvZywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdW5p
Zm9ybU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2g6
OlVuaWZvcm0gJnZlcnRleFVuaWZvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc2g6OlVuaWZvcm0gJmZyYWdtZW50VW5pZm9ybSk7CisKKyAgICBib29sIGZs
YXR0ZW5Vbmlmb3Jtc0FuZENoZWNrQ2Fwc0ZvclNoYWRlcihjb25zdCBTaGFkZXIgJnNoYWRlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWF4
VW5pZm9ybUNvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IG1heFRleHR1cmVJbWFnZVVuaXRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZjb21wb25lbnRz
RXJyb3JNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzYW1wbGVyRXJyb3JNZXNzYWdlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPExpbmtlZFVuaWZv
cm0+ICZzYW1wbGVyVW5pZm9ybXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW5mb0xvZyAmaW5mb0xvZyk7CisgICAgYm9vbCBmbGF0dGVuVW5pZm9ybXNB
bmRDaGVja0NhcHMoY29uc3QgQ2FwcyAmY2FwcywgSW5mb0xvZyAmaW5mb0xvZyk7CisKKyAgICBW
ZWN0b3JBbmRTYW1wbGVyQ291bnQgZmxhdHRlblVuaWZvcm0oY29uc3Qgc2g6OlVuaWZvcm0gJnVu
aWZvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVj
dG9yPExpbmtlZFVuaWZvcm0+ICpzYW1wbGVyVW5pZm9ybXMpOworCisgICAgLy8gbWFya1N0YXRp
Y1VzZSBpcyBnaXZlbiBhcyBhIHNlcGFyYXRlIHBhcmFtZXRlciBiZWNhdXNlIGl0IGlzIHRyYWNr
ZWQgaGVyZSBhdCBzdHJ1Y3QKKyAgICAvLyBncmFudWxhcml0eS4KKyAgICBWZWN0b3JBbmRTYW1w
bGVyQ291bnQgZmxhdHRlblVuaWZvcm1JbXBsKGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmdW5p
Zm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZmdWxsTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPExpbmtlZFVuaWZvcm0+ICpzYW1wbGVyVW5pZm9ybXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIG1hcmtT
dGF0aWNVc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgYmluZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCAqbG9jYXRpb24pOworCisgICAgYm9vbCBpbmRleFVuaWZvcm1zKEluZm9Mb2cgJmluZm9M
b2csIGNvbnN0IFByb2dyYW06OkJpbmRpbmdzICZ1bmlmb3JtTG9jYXRpb25CaW5kaW5ncyk7Cisg
ICAgYm9vbCBnYXRoZXJVbmlmb3JtTG9jYXRpb25zQW5kQ2hlY2tDb25mbGljdHMoSW5mb0xvZyAm
aW5mb0xvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBQcm9ncmFtOjpCaW5kaW5ncyAmdW5pZm9ybUxvY2F0aW9uQmluZGluZ3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzZXQ8R0x1
aW50PiAqcmVzZXJ2ZWRMb2NhdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjpzZXQ8R0x1aW50PiAqaWdub3JlZExvY2F0aW9ucywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKm1heFVu
aWZvcm1Mb2NhdGlvbik7CisgICAgdm9pZCBwcnVuZVVudXNlZFVuaWZvcm1zKCk7CisKKyAgICBj
b25zdCBQcm9ncmFtU3RhdGUgJm1TdGF0ZTsKKyAgICBzdGQ6OnZlY3RvcjxMaW5rZWRVbmlmb3Jt
PiBtVW5pZm9ybXM7CisgICAgc3RkOjp2ZWN0b3I8VmFyaWFibGVMb2NhdGlvbj4gbVVuaWZvcm1M
b2NhdGlvbnM7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgZ2wKKworI2VuZGlmICAvLyBMSUJBTkdM
RV9VTklGT1JNTElOS0VSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvVmFyeWluZ1BhY2tpbmcuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL1ZhcnlpbmdQYWNraW5nLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yOGFmYjIyMTQ1ODdk
MzE4ZWVlZmZiMDllYWU2NmJlODE2NzI1OGM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZhcnlpbmdQYWNraW5nLmNwcApAQCAtMCwwICsx
LDMzNCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorLy8KKy8vIFZhcnlpbmdQYWNraW5nOgorLy8gICBDbGFzcyB3aGljaCBk
ZXNjcmliZXMgYSBtYXBwaW5nIGZyb20gdmFyeWluZ3MgdG8gcmVnaXN0ZXJzLCBhY2NvcmRpbmcK
Ky8vICAgdG8gdGhlIHNwZWMsIG9yIHVzaW5nIGN1c3RvbSBwYWNraW5nIGFsZ29yaXRobXMuIFdl
IGFsc28ga2VlcCBhIHJlZ2lzdGVyCisvLyAgIGFsbG9jYXRpb24gbGlzdCBmb3IgdGhlIEQzRCBy
ZW5kZXJlci4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9WYXJ5aW5nUGFja2luZy5oIgorCisj
aW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0u
aCIKKworbmFtZXNwYWNlIGdsCit7CisKKy8vIEltcGxlbWVudGF0aW9uIG9mIFZhcnlpbmdQYWNr
aW5nCitWYXJ5aW5nUGFja2luZzo6VmFyeWluZ1BhY2tpbmcoR0x1aW50IG1heFZhcnlpbmdWZWN0
b3JzLCBQYWNrTW9kZSBwYWNrTW9kZSkKKyAgICA6IG1SZWdpc3Rlck1hcChtYXhWYXJ5aW5nVmVj
dG9ycyksIG1QYWNrTW9kZShwYWNrTW9kZSkKK3sKK30KKworLy8gUGFja3MgdmFyeWluZ3MgaW50
byBnZW5lcmljIHZhcnlpbmcgcmVnaXN0ZXJzLCB1c2luZyB0aGUgYWxnb3JpdGhtIGZyb20KKy8v
IFNlZSBbT3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3VhZ2UgMS4wMCByZXYuIDE3XSBhcHBlbmRpeCBB
IHNlY3Rpb24gNyBwYWdlIDExMQorLy8gQWxzbyBbT3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3VhZ2Ug
My4wMCByZXYuIDRdIFNlY3Rpb24gMTEgcGFnZSAxMTkKKy8vIFJldHVybnMgZmFsc2UgaWYgdW5z
dWNjZXNzZnVsLgorYm9vbCBWYXJ5aW5nUGFja2luZzo6cGFja1ZhcnlpbmcoY29uc3QgUGFja2Vk
VmFyeWluZyAmcGFja2VkVmFyeWluZykKK3sKKyAgICBjb25zdCBhdXRvICZ2YXJ5aW5nID0gKnBh
Y2tlZFZhcnlpbmcudmFyeWluZzsKKworICAgIC8vICJOb24gLSBzcXVhcmUgbWF0cmljZXMgb2Yg
dHlwZSBtYXRDeFIgY29uc3VtZSB0aGUgc2FtZSBzcGFjZSBhcyBhIHNxdWFyZSBtYXRyaXggb2Yg
dHlwZSBtYXROCisgICAgLy8gd2hlcmUgTiBpcyB0aGUgZ3JlYXRlciBvZiBDIGFuZCBSLiIKKyAg
ICAvLyBIZXJlIHdlIGFyZSBhIGJpdCBtb3JlIGNvbnNlcnZhdGl2ZSBhbmQgYWxsb3cgcGFja2lu
ZyBub24tc3F1YXJlIG1hdHJpY2VzIG1vcmUgdGlnaHRseS4KKyAgICAvLyBNYWtlIHN1cmUgd2Ug
dXNlIHRyYW5zcG9zZWQgbWF0cml4IHR5cGVzIHRvIGNvdW50IHJlZ2lzdGVycyBjb3JyZWN0bHku
CisgICAgQVNTRVJUKCF2YXJ5aW5nLmlzU3RydWN0KCkpOworICAgIEdMZW51bSB0cmFuc3Bvc2Vk
VHlwZSAgICAgICA9IGdsOjpUcmFuc3Bvc2VNYXRyaXhUeXBlKHZhcnlpbmcudHlwZSk7CisgICAg
dW5zaWduZWQgaW50IHZhcnlpbmdSb3dzICAgID0gZ2w6OlZhcmlhYmxlUm93Q291bnQodHJhbnNw
b3NlZFR5cGUpOworICAgIHVuc2lnbmVkIGludCB2YXJ5aW5nQ29sdW1ucyA9IGdsOjpWYXJpYWJs
ZUNvbHVtbkNvdW50KHRyYW5zcG9zZWRUeXBlKTsKKworICAgIC8vICJWYXJpYWJsZXMgb2YgdHlw
ZSBtYXQyIG9jY3VwaWVzIDIgY29tcGxldGUgcm93cy4iCisgICAgLy8gRm9yIG5vbi1XZWJHTCBj
b250ZXh0cywgd2UgYWxsb3cgbWF0MiB0byBvY2N1cHkgb25seSB0d28gY29sdW1ucyBwZXIgcm93
LgorICAgIGlmIChtUGFja01vZGUgPT0gUGFja01vZGU6OldFQkdMX1NUUklDVCAmJiB2YXJ5aW5n
LnR5cGUgPT0gR0xfRkxPQVRfTUFUMikKKyAgICB7CisgICAgICAgIHZhcnlpbmdDb2x1bW5zID0g
NDsKKyAgICB9CisKKyAgICAvLyAiQXJyYXlzIG9mIHNpemUgTiBhcmUgYXNzdW1lZCB0byB0YWtl
IE4gdGltZXMgdGhlIHNpemUgb2YgdGhlIGJhc2UgdHlwZSIKKyAgICB2YXJ5aW5nUm93cyAqPSAo
cGFja2VkVmFyeWluZy5pc0FycmF5RWxlbWVudCgpID8gMSA6IHZhcnlpbmcuZWxlbWVudENvdW50
KCkpOworCisgICAgdW5zaWduZWQgaW50IG1heFZhcnlpbmdWZWN0b3JzID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgaW50PihtUmVnaXN0ZXJNYXAuc2l6ZSgpKTsKKworICAgIC8vIEZhaWwgaWYgd2Ug
YXJlIHBhY2tpbmcgYSBzaW5nbGUgb3Zlci1sYXJnZSB2YXJ5aW5nLgorICAgIGlmICh2YXJ5aW5n
Um93cyA+IG1heFZhcnlpbmdWZWN0b3JzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIC8vICJGb3IgMiwgMyBhbmQgNCBjb21wb25lbnQgdmFyaWFibGVzIHBhY2tp
bmcgaXMgc3RhcnRlZCB1c2luZyB0aGUgMXN0IGNvbHVtbiBvZiB0aGUgMXN0IHJvdy4KKyAgICAv
LyBWYXJpYWJsZXMgYXJlIHRoZW4gYWxsb2NhdGVkIHRvIHN1Y2Nlc3NpdmUgcm93cywgYWxpZ25p
bmcgdGhlbSB0byB0aGUgMXN0IGNvbHVtbi4iCisgICAgaWYgKHZhcnlpbmdDb2x1bW5zID49IDIg
JiYgdmFyeWluZ0NvbHVtbnMgPD0gNCkKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50
IHJvdyA9IDA7IHJvdyA8PSBtYXhWYXJ5aW5nVmVjdG9ycyAtIHZhcnlpbmdSb3dzOyArK3JvdykK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKGlzRnJlZShyb3csIDAsIHZhcnlpbmdSb3dzLCB2
YXJ5aW5nQ29sdW1ucykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW5zZXJ0KHJv
dywgMCwgcGFja2VkVmFyeWluZyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyAiRm9yIDIgY29tcG9uZW50IHZhcmlh
Ymxlcywgd2hlbiB0aGVyZSBhcmUgbm8gc3BhcmUgcm93cywgdGhlIHN0cmF0ZWd5IGlzIHN3aXRj
aGVkIHRvCisgICAgICAgIC8vIHVzaW5nIHRoZSBoaWdoZXN0IG51bWJlcmVkIHJvdyBhbmQgdGhl
IGxvd2VzdCBudW1iZXJlZCBjb2x1bW4gd2hlcmUgdGhlIHZhcmlhYmxlIHdpbGwKKyAgICAgICAg
Ly8gZml0LiIKKyAgICAgICAgaWYgKHZhcnlpbmdDb2x1bW5zID09IDIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IHIgPSBtYXhWYXJ5aW5nVmVjdG9ycyAtIHZhcnlp
bmdSb3dzICsgMTsgci0tID49IDE7KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlm
IChpc0ZyZWUociwgMiwgdmFyeWluZ1Jvd3MsIDIpKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgaW5zZXJ0KHIsIDIsIHBhY2tlZFZhcnlpbmcpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gIjEgY29t
cG9uZW50IHZhcmlhYmxlcyBoYXZlIHRoZWlyIG93biBwYWNraW5nIHJ1bGUuIFRoZXkgYXJlIHBh
Y2tlZCBpbiBvcmRlciBvZiBzaXplLCBsYXJnZXN0CisgICAgLy8gZmlyc3QuIEVhY2ggdmFyaWFi
bGUgaXMgcGxhY2VkIGluIHRoZSBjb2x1bW4gdGhhdCBsZWF2ZXMgdGhlIGxlYXN0IGFtb3VudCBv
ZiBzcGFjZSBpbiB0aGUKKyAgICAvLyBjb2x1bW4gYW5kIGFsaWduZWQgdG8gdGhlIGxvd2VzdCBh
dmFpbGFibGUgcm93cyB3aXRoaW4gdGhhdCBjb2x1bW4uIgorICAgIEFTU0VSVCh2YXJ5aW5nQ29s
dW1ucyA9PSAxKTsKKyAgICB1bnNpZ25lZCBpbnQgY29udGlndW91c1NwYWNlWzRdICAgICA9IHsw
fTsKKyAgICB1bnNpZ25lZCBpbnQgYmVzdENvbnRpZ3VvdXNTcGFjZVs0XSA9IHswfTsKKyAgICB1
bnNpZ25lZCBpbnQgdG90YWxTcGFjZVs0XSAgICAgICAgICA9IHswfTsKKworICAgIGZvciAodW5z
aWduZWQgaW50IHJvdyA9IDA7IHJvdyA8IG1heFZhcnlpbmdWZWN0b3JzOyArK3JvdykKKyAgICB7
CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IDQ7ICsrY29s
dW1uKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobVJlZ2lzdGVyTWFwW3Jvd11bY29sdW1u
XSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250aWd1b3VzU3BhY2VbY29sdW1u
XSA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY29udGlndW91c1NwYWNlW2NvbHVtbl0rKzsKKyAgICAgICAgICAgICAg
ICB0b3RhbFNwYWNlW2NvbHVtbl0rKzsKKworICAgICAgICAgICAgICAgIGlmIChjb250aWd1b3Vz
U3BhY2VbY29sdW1uXSA+IGJlc3RDb250aWd1b3VzU3BhY2VbY29sdW1uXSkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIGJlc3RDb250aWd1b3VzU3BhY2VbY29sdW1uXSA9
IGNvbnRpZ3VvdXNTcGFjZVtjb2x1bW5dOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHVuc2lnbmVkIGludCBiZXN0Q29sdW1uID0gMDsK
KyAgICBmb3IgKHVuc2lnbmVkIGludCBjb2x1bW4gPSAxOyBjb2x1bW4gPCA0OyArK2NvbHVtbikK
KyAgICB7CisgICAgICAgIGlmIChiZXN0Q29udGlndW91c1NwYWNlW2NvbHVtbl0gPj0gdmFyeWlu
Z1Jvd3MgJiYKKyAgICAgICAgICAgIChiZXN0Q29udGlndW91c1NwYWNlW2Jlc3RDb2x1bW5dIDwg
dmFyeWluZ1Jvd3MgfHwKKyAgICAgICAgICAgICB0b3RhbFNwYWNlW2NvbHVtbl0gPCB0b3RhbFNw
YWNlW2Jlc3RDb2x1bW5dKSkKKyAgICAgICAgeworICAgICAgICAgICAgYmVzdENvbHVtbiA9IGNv
bHVtbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChiZXN0Q29udGlndW91c1NwYWNlW2Jl
c3RDb2x1bW5dID49IHZhcnlpbmdSb3dzKQorICAgIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnQgcm93ID0gMDsgcm93IDwgbWF4VmFyeWluZ1ZlY3RvcnM7IHJvdysrKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoaXNGcmVlKHJvdywgYmVzdENvbHVtbiwgdmFyeWluZ1Jvd3MsIDEpKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGFycmF5SW5k
ZXggPSAwOyBhcnJheUluZGV4IDwgdmFyeWluZ1Jvd3M7ICsrYXJyYXlJbmRleCkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHZhcnlpbmdSb3dzID4gMSwgaXQg
bXVzdCBiZSBhbiBhcnJheS4KKyAgICAgICAgICAgICAgICAgICAgUGFja2VkVmFyeWluZ1JlZ2lz
dGVyIHJlZ2lzdGVySW5mbzsKKyAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJJbmZvLnBhY2tl
ZFZhcnlpbmcgICAgID0gJnBhY2tlZFZhcnlpbmc7CisgICAgICAgICAgICAgICAgICAgIHJlZ2lz
dGVySW5mby5yZWdpc3RlclJvdyAgICAgICA9IHJvdyArIGFycmF5SW5kZXg7CisgICAgICAgICAg
ICAgICAgICAgIHJlZ2lzdGVySW5mby5yZWdpc3RlckNvbHVtbiAgICA9IGJlc3RDb2x1bW47Cisg
ICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVySW5mby52YXJ5aW5nQXJyYXlJbmRleCA9CisgICAg
ICAgICAgICAgICAgICAgICAgICAocGFja2VkVmFyeWluZy5pc0FycmF5RWxlbWVudCgpID8gcGFj
a2VkVmFyeWluZy5hcnJheUluZGV4IDogYXJyYXlJbmRleCk7CisgICAgICAgICAgICAgICAgICAg
IHJlZ2lzdGVySW5mby52YXJ5aW5nUm93SW5kZXggICA9IDA7CisgICAgICAgICAgICAgICAgICAg
IC8vIERvIG5vdCByZWNvcmQgcmVnaXN0ZXIgaW5mbyBmb3IgYnVpbHRpbnMuCisgICAgICAgICAg
ICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IENsZWFuIHRoaXMgdXAuCisgICAgICAgICAgICAg
ICAgICAgIGlmICghcGFja2VkVmFyeWluZy52YXJ5aW5nLT5pc0J1aWx0SW4oKSkKKyAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgbVJlZ2lzdGVyTGlzdC5wdXNo
X2JhY2socmVnaXN0ZXJJbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICBtUmVnaXN0ZXJNYXBbcm93ICsgYXJyYXlJbmRleF1bYmVzdENvbHVtbl0gPSB0cnVl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2Jvb2wgVmFyeWluZ1BhY2tpbmc6OmlzRnJlZSh1bnNpZ25lZCBpbnQgcmVn
aXN0ZXJSb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHJlZ2lz
dGVyQ29sdW1uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2YXJ5
aW5nUm93cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdmFyeWlu
Z0NvbHVtbnMpIGNvbnN0Cit7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgcm93ID0gMDsgcm93IDwg
dmFyeWluZ1Jvd3M7ICsrcm93KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZ2lzdGVyUm93ICsg
cm93IDwgbVJlZ2lzdGVyTWFwLnNpemUoKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGNv
bHVtbiA9IDA7IGNvbHVtbiA8IHZhcnlpbmdDb2x1bW5zOyArK2NvbHVtbikKKyAgICAgICAgewor
ICAgICAgICAgICAgQVNTRVJUKHJlZ2lzdGVyQ29sdW1uICsgY29sdW1uIDwgNCk7CisgICAgICAg
ICAgICBpZiAobVJlZ2lzdGVyTWFwW3JlZ2lzdGVyUm93ICsgcm93XVtyZWdpc3RlckNvbHVtbiAr
IGNvbHVtbl0pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3ZvaWQgVmFyeWluZ1BhY2tpbmc6Omluc2VydCh1bnNpZ25lZCBpbnQgcmVnaXN0ZXJSb3csCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHJlZ2lzdGVyQ29sdW1uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhY2tlZFZhcnlpbmcgJnBhY2tlZFZh
cnlpbmcpCit7CisgICAgdW5zaWduZWQgaW50IHZhcnlpbmdSb3dzICAgID0gMDsKKyAgICB1bnNp
Z25lZCBpbnQgdmFyeWluZ0NvbHVtbnMgPSAwOworCisgICAgY29uc3QgYXV0byAmdmFyeWluZyA9
ICpwYWNrZWRWYXJ5aW5nLnZhcnlpbmc7CisgICAgQVNTRVJUKCF2YXJ5aW5nLmlzU3RydWN0KCkp
OworICAgIEdMZW51bSB0cmFuc3Bvc2VkVHlwZSA9IGdsOjpUcmFuc3Bvc2VNYXRyaXhUeXBlKHZh
cnlpbmcudHlwZSk7CisgICAgdmFyeWluZ1Jvd3MgICAgICAgICAgID0gZ2w6OlZhcmlhYmxlUm93
Q291bnQodHJhbnNwb3NlZFR5cGUpOworICAgIHZhcnlpbmdDb2x1bW5zICAgICAgICA9IGdsOjpW
YXJpYWJsZUNvbHVtbkNvdW50KHRyYW5zcG9zZWRUeXBlKTsKKworICAgIFBhY2tlZFZhcnlpbmdS
ZWdpc3RlciByZWdpc3RlckluZm87CisgICAgcmVnaXN0ZXJJbmZvLnBhY2tlZFZhcnlpbmcgID0g
JnBhY2tlZFZhcnlpbmc7CisgICAgcmVnaXN0ZXJJbmZvLnJlZ2lzdGVyQ29sdW1uID0gcmVnaXN0
ZXJDb2x1bW47CisKKyAgICBmb3IgKHVuc2lnbmVkIGludCBhcnJheUVsZW1lbnQgPSAwOyBhcnJh
eUVsZW1lbnQgPCB2YXJ5aW5nLmVsZW1lbnRDb3VudCgpOyArK2FycmF5RWxlbWVudCkKKyAgICB7
CisgICAgICAgIGlmIChwYWNrZWRWYXJ5aW5nLmlzQXJyYXlFbGVtZW50KCkgJiYgYXJyYXlFbGVt
ZW50ICE9IHBhY2tlZFZhcnlpbmcuYXJyYXlJbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgdmFyeWluZ1Jv
dyA9IDA7IHZhcnlpbmdSb3cgPCB2YXJ5aW5nUm93czsgKyt2YXJ5aW5nUm93KQorICAgICAgICB7
CisgICAgICAgICAgICByZWdpc3RlckluZm8ucmVnaXN0ZXJSb3cgICAgID0gcmVnaXN0ZXJSb3cg
KyAoYXJyYXlFbGVtZW50ICogdmFyeWluZ1Jvd3MpICsgdmFyeWluZ1JvdzsKKyAgICAgICAgICAg
IHJlZ2lzdGVySW5mby52YXJ5aW5nUm93SW5kZXggPSB2YXJ5aW5nUm93OworICAgICAgICAgICAg
cmVnaXN0ZXJJbmZvLnZhcnlpbmdBcnJheUluZGV4ID0gYXJyYXlFbGVtZW50OworICAgICAgICAg
ICAgLy8gRG8gbm90IHJlY29yZCByZWdpc3RlciBpbmZvIGZvciBidWlsdGlucy4KKyAgICAgICAg
ICAgIC8vIFRPRE8oam1hZGlsbCk6IENsZWFuIHRoaXMgdXAuCisgICAgICAgICAgICBpZiAoIXBh
Y2tlZFZhcnlpbmcudmFyeWluZy0+aXNCdWlsdEluKCkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgbVJlZ2lzdGVyTGlzdC5wdXNoX2JhY2socmVnaXN0ZXJJbmZvKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgY29sdW1uSW5kZXggPSAwOyBj
b2x1bW5JbmRleCA8IHZhcnlpbmdDb2x1bW5zOyArK2NvbHVtbkluZGV4KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIG1SZWdpc3Rlck1hcFtyZWdpc3RlckluZm8ucmVnaXN0ZXJSb3dd
W3JlZ2lzdGVyQ29sdW1uICsgY29sdW1uSW5kZXhdID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KK30KKworLy8gU2VlIGNvbW1lbnQgb24gcGFja1ZhcnlpbmcuCitib29s
IFZhcnlpbmdQYWNraW5nOjpwYWNrVXNlclZhcnlpbmdzKGdsOjpJbmZvTG9nICZpbmZvTG9nLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxQ
YWNrZWRWYXJ5aW5nPiAmcGFja2VkVmFyeWluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiAmdHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5ncykKK3sKKyAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gdW5pcXVlVmFyeWlu
Z05hbWVzOworCisgICAgLy8gIlZhcmlhYmxlcyBhcmUgcGFja2VkIGludG8gdGhlIHJlZ2lzdGVy
cyBvbmUgYXQgYSB0aW1lIHNvIHRoYXQgdGhleSBlYWNoIG9jY3VweSBhIGNvbnRpZ3VvdXMKKyAg
ICAvLyBzdWJyZWN0YW5nbGUuIE5vIHNwbGl0dGluZyBvZiB2YXJpYWJsZXMgaXMgcGVybWl0dGVk
LiIKKyAgICBmb3IgKGNvbnN0IFBhY2tlZFZhcnlpbmcgJnBhY2tlZFZhcnlpbmcgOiBwYWNrZWRW
YXJ5aW5ncykKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8gJnZhcnlpbmcgPSAqcGFja2VkVmFy
eWluZy52YXJ5aW5nOworCisgICAgICAgIC8vIERvIG5vdCBhc3NpZ24gcmVnaXN0ZXJzIHRvIGJ1
aWx0LWluIG9yIHVucmVmZXJlbmNlZCB2YXJ5aW5ncworICAgICAgICBpZiAoIXZhcnlpbmcuc3Rh
dGljVXNlICYmICFwYWNrZWRWYXJ5aW5nLmlzU3RydWN0RmllbGQoKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQoIXZhcnlpbmcu
aXNTdHJ1Y3QoKSk7CisgICAgICAgIEFTU0VSVCh1bmlxdWVWYXJ5aW5nTmFtZXMuY291bnQocGFj
a2VkVmFyeWluZy5uYW1lV2l0aEFycmF5SW5kZXgoKSkgPT0gMCk7CisKKyAgICAgICAgaWYgKHBh
Y2tWYXJ5aW5nKHBhY2tlZFZhcnlpbmcpKQorICAgICAgICB7CisgICAgICAgICAgICB1bmlxdWVW
YXJ5aW5nTmFtZXMuaW5zZXJ0KHBhY2tlZFZhcnlpbmcubmFtZVdpdGhBcnJheUluZGV4KCkpOwor
ICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgaW5mb0xvZyA8
PCAiQ291bGQgbm90IHBhY2sgdmFyeWluZyAiIDw8IHBhY2tlZFZhcnlpbmcubmFtZVdpdGhBcnJh
eUluZGV4KCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nICZ0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1l
IDogdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncykKKyAgICB7CisgICAgICAgIGlmICh0cmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdOYW1lLmNvbXBhcmUoMCwgMywgImdsXyIpID09IDApCisgICAgICAg
IHsKKyAgICAgICAgICAgIC8vIGRvIG5vdCBwYWNrIGJ1aWx0aW4gWEZCIHZhcnlpbmdzCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgZm91bmQgPSBmYWxz
ZTsKKyAgICAgICAgZm9yIChjb25zdCBQYWNrZWRWYXJ5aW5nICZwYWNrZWRWYXJ5aW5nIDogcGFj
a2VkVmFyeWluZ3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8gJnZhcnlpbmcg
PSAqcGFja2VkVmFyeWluZy52YXJ5aW5nOworICAgICAgICAgICAgc2l6ZV90IHN1YnNjcmlwdCAg
ICAgPSBHTF9JTlZBTElEX0lOREVYOworICAgICAgICAgICAgc3RkOjpzdHJpbmcgYmFzZU5hbWUg
PSBQYXJzZVJlc291cmNlTmFtZSh0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lLCAmc3Vic2Ny
aXB0KTsKKworICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRyYW5zZm9ybSBmZWVkYmFjayB2YXJ5
aW5ncyBhcmVuJ3Qgb3B0aW1pemVkIG91dC4KKyAgICAgICAgICAgIGlmICh1bmlxdWVWYXJ5aW5n
TmFtZXMuY291bnQodHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTmFtZSkgPiAwIHx8CisgICAgICAg
ICAgICAgICAgdW5pcXVlVmFyeWluZ05hbWVzLmNvdW50KGJhc2VOYW1lKSA+IDApCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYmFzZU5hbWUgPT0gdmFyeWlu
Zy5uYW1lKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICghcGFja1Zhcnlpbmco
cGFja2VkVmFyeWluZykpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBp
bmZvTG9nIDw8ICJDb3VsZCBub3QgcGFjayB2YXJ5aW5nICIgPDwgdmFyeWluZy5uYW1lOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHVuaXF1ZVZhcnlpbmdOYW1lcy5pbnNlcnQocGFja2VkVmFyeWluZy5uYW1lV2l0
aEFycmF5SW5kZXgoKSk7CisgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKCFm
b3VuZCkKKyAgICAgICAgeworICAgICAgICAgICAgaW5mb0xvZyA8PCAiVHJhbnNmb3JtIGZlZWRi
YWNrIHZhcnlpbmcgIiA8PCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lCisgICAgICAgICAg
ICAgICAgICAgIDw8ICIgZG9lcyBub3QgZXhpc3QgaW4gdGhlIHZlcnRleCBzaGFkZXIuIjsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFNvcnQg
dGhlIHBhY2tlZCByZWdpc3RlciBsaXN0CisgICAgc3RkOjpzb3J0KG1SZWdpc3Rlckxpc3QuYmVn
aW4oKSwgbVJlZ2lzdGVyTGlzdC5lbmQoKSk7CisKKyAgICAvLyBBc3NpZ24gc2VtYW50aWMgaW5k
aWNlcworICAgIGZvciAodW5zaWduZWQgaW50IHNlbWFudGljSW5kZXggPSAwOworICAgICAgICAg
c2VtYW50aWNJbmRleCA8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obVJlZ2lzdGVyTGlzdC5z
aXplKCkpOyArK3NlbWFudGljSW5kZXgpCisgICAgeworICAgICAgICBtUmVnaXN0ZXJMaXN0W3Nl
bWFudGljSW5kZXhdLnNlbWFudGljSW5kZXggPSBzZW1hbnRpY0luZGV4OworICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCit1bnNpZ25lZCBpbnQgVmFyeWluZ1BhY2tpbmc6OmdldFJlZ2lz
dGVyQ291bnQoKSBjb25zdAoreworICAgIHVuc2lnbmVkIGludCBjb3VudCA9IDA7CisKKyAgICBm
b3IgKGNvbnN0IFJlZ2lzdGVyICZyZWcgOiBtUmVnaXN0ZXJNYXApCisgICAgeworICAgICAgICBp
ZiAocmVnLmRhdGFbMF0gfHwgcmVnLmRhdGFbMV0gfHwgcmVnLmRhdGFbMl0gfHwgcmVnLmRhdGFb
M10pCisgICAgICAgIHsKKyAgICAgICAgICAgICsrY291bnQ7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gY291bnQ7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZhcnlpbmdQYWNraW5nLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmFyeWluZ1BhY2tpbmcuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42YjJmMDQzNTU4MzQ3NTUzN2U4ZDc4YmQ5YmQ0NzI3MjM4ZDJiNzczCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZhcnlpbmdQ
YWNraW5nLmgKQEAgLTAsMCArMSwxNzcgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBWYXJ5aW5nUGFja2luZzoK
Ky8vICAgQ2xhc3Mgd2hpY2ggZGVzY3JpYmVzIGEgbWFwcGluZyBmcm9tIHZhcnlpbmdzIHRvIHJl
Z2lzdGVycywgYWNjb3JkaW5nCisvLyAgIHRvIHRoZSBzcGVjLCBvciB1c2luZyBjdXN0b20gcGFj
a2luZyBhbGdvcml0aG1zLiBXZSBhbHNvIGtlZXAgYSByZWdpc3RlcgorLy8gICBhbGxvY2F0aW9u
IGxpc3QgZm9yIHRoZSBEM0QgcmVuZGVyZXIuCisvLworCisjaWZuZGVmIExJQkFOR0xFX1ZBUllJ
TkdQQUNLSU5HX0hfCisjZGVmaW5lIExJQkFOR0xFX1ZBUllJTkdQQUNLSU5HX0hfCisKKyNpbmNs
dWRlIDxHTFNMQU5HL1NoYWRlclZhcnMuaD4KKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5j
bHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKworbmFtZXNwYWNlIGdsCit7CitjbGFzcyBJbmZv
TG9nOworCitzdHJ1Y3QgUGFja2VkVmFyeWluZworeworICAgIFBhY2tlZFZhcnlpbmcoY29uc3Qg
c2g6OlNoYWRlclZhcmlhYmxlICZ2YXJ5aW5nSW4sIHNoOjpJbnRlcnBvbGF0aW9uVHlwZSBpbnRl
cnBvbGF0aW9uSW4pCisgICAgICAgIDogUGFja2VkVmFyeWluZyh2YXJ5aW5nSW4sIGludGVycG9s
YXRpb25JbiwgIiIpCisgICAgeworICAgIH0KKyAgICBQYWNrZWRWYXJ5aW5nKGNvbnN0IHNoOjpT
aGFkZXJWYXJpYWJsZSAmdmFyeWluZ0luLAorICAgICAgICAgICAgICAgICAgc2g6OkludGVycG9s
YXRpb25UeXBlIGludGVycG9sYXRpb25JbiwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZwYXJlbnRTdHJ1Y3ROYW1lSW4pCisgICAgICAgIDogdmFyeWluZygmdmFyeWluZ0lu
KSwKKyAgICAgICAgICB2ZXJ0ZXhPbmx5KGZhbHNlKSwKKyAgICAgICAgICBpbnRlcnBvbGF0aW9u
KGludGVycG9sYXRpb25JbiksCisgICAgICAgICAgcGFyZW50U3RydWN0TmFtZShwYXJlbnRTdHJ1
Y3ROYW1lSW4pLAorICAgICAgICAgIGFycmF5SW5kZXgoR0xfSU5WQUxJRF9JTkRFWCkKKyAgICB7
CisgICAgfQorCisgICAgYm9vbCBpc1N0cnVjdEZpZWxkKCkgY29uc3QgeyByZXR1cm4gIXBhcmVu
dFN0cnVjdE5hbWUuZW1wdHkoKTsgfQorCisgICAgYm9vbCBpc0FycmF5RWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIGFycmF5SW5kZXggIT0gR0xfSU5WQUxJRF9JTkRFWDsgfQorCisgICAgc3RkOjpz
dHJpbmcgbmFtZVdpdGhBcnJheUluZGV4KCkgY29uc3QKKyAgICB7CisgICAgICAgIHN0ZDo6c3Ry
aW5nc3RyZWFtIGZ1bGxOYW1lU3RyOworICAgICAgICBmdWxsTmFtZVN0ciA8PCB2YXJ5aW5nLT5u
YW1lOworICAgICAgICBpZiAoYXJyYXlJbmRleCAhPSBHTF9JTlZBTElEX0lOREVYKQorICAgICAg
ICB7CisgICAgICAgICAgICBmdWxsTmFtZVN0ciA8PCAiWyIgPDwgYXJyYXlJbmRleCA8PCAiXSI7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZ1bGxOYW1lU3RyLnN0cigpOworICAgIH0KKwor
ICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAqdmFyeWluZzsKKworICAgIC8vIFRyYW5zZm9y
bSBmZWVkYmFjayB2YXJ5aW5ncyBjYW4gYmUgb25seSByZWZlcmVuY2VkIGluIHRoZSBWUy4KKyAg
ICBib29sIHZlcnRleE9ubHk7CisKKyAgICAvLyBDYWNoZWQgc28gd2UgY2FuIHN0b3JlIHNoOjpT
aGFkZXJWYXJpYWJsZSB0byBwb2ludCB0byB2YXJ5aW5nIGZpZWxkcy4KKyAgICBzaDo6SW50ZXJw
b2xhdGlvblR5cGUgaW50ZXJwb2xhdGlvbjsKKworICAgIC8vIFN0cnVjdCBuYW1lCisgICAgc3Rk
OjpzdHJpbmcgcGFyZW50U3RydWN0TmFtZTsKKworICAgIEdMdWludCBhcnJheUluZGV4OworfTsK
Kworc3RydWN0IFBhY2tlZFZhcnlpbmdSZWdpc3RlciBmaW5hbAoreworICAgIFBhY2tlZFZhcnlp
bmdSZWdpc3RlcigpCisgICAgICAgIDogcGFja2VkVmFyeWluZyhudWxscHRyKSwKKyAgICAgICAg
ICB2YXJ5aW5nQXJyYXlJbmRleCgwKSwKKyAgICAgICAgICB2YXJ5aW5nUm93SW5kZXgoMCksCisg
ICAgICAgICAgcmVnaXN0ZXJSb3coMCksCisgICAgICAgICAgcmVnaXN0ZXJDb2x1bW4oMCkKKyAg
ICB7CisgICAgfQorCisgICAgUGFja2VkVmFyeWluZ1JlZ2lzdGVyKGNvbnN0IFBhY2tlZFZhcnlp
bmdSZWdpc3RlciAmKSA9IGRlZmF1bHQ7CisgICAgUGFja2VkVmFyeWluZ1JlZ2lzdGVyICZvcGVy
YXRvcj0oY29uc3QgUGFja2VkVmFyeWluZ1JlZ2lzdGVyICYpID0gZGVmYXVsdDsKKworICAgIGJv
b2wgb3BlcmF0b3I8KGNvbnN0IFBhY2tlZFZhcnlpbmdSZWdpc3RlciAmb3RoZXIpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gc29ydE9yZGVyKCkgPCBvdGhlci5zb3J0T3JkZXIoKTsKKyAg
ICB9CisKKyAgICB1bnNpZ25lZCBpbnQgc29ydE9yZGVyKCkgY29uc3QKKyAgICB7CisgICAgICAg
IC8vIFRPRE8oam1hZGlsbCk6IEhhbmRsZSBpbnRlcnBvbGF0aW9uIHR5cGVzCisgICAgICAgIHJl
dHVybiByZWdpc3RlclJvdyAqIDQgKyByZWdpc3RlckNvbHVtbjsKKyAgICB9CisKKyAgICBib29s
IGlzU3RydWN0RmllbGQoKSBjb25zdCB7IHJldHVybiAhc3RydWN0RmllbGROYW1lLmVtcHR5KCk7
IH0KKworICAgIC8vIEluZGV4IHRvIHRoZSBhcnJheSBvZiB2YXJ5aW5ncy4KKyAgICBjb25zdCBQ
YWNrZWRWYXJ5aW5nICpwYWNrZWRWYXJ5aW5nOworCisgICAgLy8gVGhlIGFycmF5IGVsZW1lbnQg
b2YgdGhlIHBhY2tlZCB2YXJ5aW5nLgorICAgIHVuc2lnbmVkIGludCB2YXJ5aW5nQXJyYXlJbmRl
eDsKKworICAgIC8vIFRoZSByb3cgb2YgdGhlIGFycmF5IGVsZW1lbnQgb2YgdGhlIHBhY2tlZCB2
YXJ5aW5nLgorICAgIHVuc2lnbmVkIGludCB2YXJ5aW5nUm93SW5kZXg7CisKKyAgICAvLyBUaGUg
cmVnaXN0ZXIgcm93IHRvIHdoaWNoIHdlJ3ZlIGFzc2lnbmVkIHRoaXMgcGFja2VkIHZhcnlpbmcu
CisgICAgdW5zaWduZWQgaW50IHJlZ2lzdGVyUm93OworCisgICAgLy8gVGhlIGNvbHVtbiBvZiB0
aGUgcmVnaXN0ZXIgcm93IGludG8gd2hpY2ggd2UndmUgcGFja2VkIHRoaXMgdmFyeWluZy4KKyAg
ICB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJDb2x1bW47CisKKyAgICAvLyBBc3NpZ25lZCBhZnRlciBw
YWNraW5nCisgICAgdW5zaWduZWQgaW50IHNlbWFudGljSW5kZXg7CisKKyAgICAvLyBTdHJ1Y3Qg
bWVtYmVyIHRoaXMgdmFyeWluZyBjb3JyZXNwb25kcyB0by4KKyAgICBzdGQ6OnN0cmluZyBzdHJ1
Y3RGaWVsZE5hbWU7Cit9OworCisvLyBTdXBwb3J0ZWQgcGFja2luZyBtb2RlczoKK2VudW0gY2xh
c3MgUGFja01vZGUKK3sKKyAgICAvLyBXZSB0cmVhdCBtYXQyIGFycmF5cyBhcyB0YWtpbmcgdHdv
IGZ1bGwgcm93cy4KKyAgICBXRUJHTF9TVFJJQ1QsCisKKyAgICAvLyBXZSBhbGxvdyBtYXQyIHRv
IHRha2UgYSAyeDIgY2h1bmsuCisgICAgQU5HTEVfUkVMQVhFRCwKK307CisKK2NsYXNzIFZhcnlp
bmdQYWNraW5nIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBW
YXJ5aW5nUGFja2luZyhHTHVpbnQgbWF4VmFyeWluZ1ZlY3RvcnMsIFBhY2tNb2RlIHBhY2tNb2Rl
KTsKKworICAgIGJvb2wgcGFja1VzZXJWYXJ5aW5ncyhnbDo6SW5mb0xvZyAmaW5mb0xvZywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8UGFja2VkVmFyeWluZz4g
JnBhY2tlZFZhcnlpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4gJnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpOworCisgICAgc3Ry
dWN0IFJlZ2lzdGVyCisgICAgeworICAgICAgICBSZWdpc3RlcigpIHsgZGF0YVswXSA9IGRhdGFb
MV0gPSBkYXRhWzJdID0gZGF0YVszXSA9IGZhbHNlOyB9CisKKyAgICAgICAgYm9vbCAmb3BlcmF0
b3JbXSh1bnNpZ25lZCBpbnQgaW5kZXgpIHsgcmV0dXJuIGRhdGFbaW5kZXhdOyB9CisgICAgICAg
IGJvb2wgb3BlcmF0b3JbXSh1bnNpZ25lZCBpbnQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIGRhdGFb
aW5kZXhdOyB9CisKKyAgICAgICAgYm9vbCBkYXRhWzRdOworICAgIH07CisKKyAgICBSZWdpc3Rl
ciAmb3BlcmF0b3JbXSh1bnNpZ25lZCBpbnQgaW5kZXgpIHsgcmV0dXJuIG1SZWdpc3Rlck1hcFtp
bmRleF07IH0KKyAgICBjb25zdCBSZWdpc3RlciAmb3BlcmF0b3JbXSh1bnNpZ25lZCBpbnQgaW5k
ZXgpIGNvbnN0IHsgcmV0dXJuIG1SZWdpc3Rlck1hcFtpbmRleF07IH0KKworICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPFBhY2tlZFZhcnlpbmdSZWdpc3Rlcj4gJmdldFJlZ2lzdGVyTGlzdCgpIGNvbnN0
IHsgcmV0dXJuIG1SZWdpc3Rlckxpc3Q7IH0KKyAgICB1bnNpZ25lZCBpbnQgZ2V0TWF4U2VtYW50
aWNJbmRleCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50PihtUmVnaXN0ZXJMaXN0LnNpemUoKSk7CisgICAgfQorICAgIHVuc2lnbmVkIGludCBn
ZXRSZWdpc3RlckNvdW50KCkgY29uc3Q7CisgICAgc2l6ZV90IGdldFJlZ2lzdGVyTWFwU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1SZWdpc3Rlck1hcC5zaXplKCk7IH0KKworICBwcml2YXRlOgorICAg
IGJvb2wgcGFja1ZhcnlpbmcoY29uc3QgUGFja2VkVmFyeWluZyAmcGFja2VkVmFyeWluZyk7Cisg
ICAgYm9vbCBpc0ZyZWUodW5zaWduZWQgaW50IHJlZ2lzdGVyUm93LAorICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCByZWdpc3RlckNvbHVtbiwKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgdmFyeWluZ1Jvd3MsCisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZhcnlpbmdDb2x1
bW5zKSBjb25zdDsKKyAgICB2b2lkIGluc2VydCh1bnNpZ25lZCBpbnQgcmVnaXN0ZXJSb3csCisg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHJlZ2lzdGVyQ29sdW1uLAorICAgICAgICAgICAg
ICAgIGNvbnN0IFBhY2tlZFZhcnlpbmcgJnBhY2tlZFZhcnlpbmcpOworCisgICAgc3RkOjp2ZWN0
b3I8UmVnaXN0ZXI+IG1SZWdpc3Rlck1hcDsKKyAgICBzdGQ6OnZlY3RvcjxQYWNrZWRWYXJ5aW5n
UmVnaXN0ZXI+IG1SZWdpc3Rlckxpc3Q7CisKKyAgICBQYWNrTW9kZSBtUGFja01vZGU7Cit9Owor
Cit9ICAvLyBuYW1lc3BhY2UgZ2wKKworI2VuZGlmICAvLyBMSUJBTkdMRV9WQVJZSU5HUEFDS0lO
R19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Zh
cnlpbmdQYWNraW5nX3VuaXR0ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9WYXJ5aW5nUGFja2luZ191bml0dGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2FlZWY4MmNi
ZmUxZjIzMGM2Yzg2ZDUxYTg5MzcxYjc0NzEzODVkOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WYXJ5aW5nUGFja2luZ191bml0dGVzdC5j
cHAKQEAgLTAsMCArMSwxNjAgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBWYXJ5aW5nUGFja2luZ191bml0dGVz
dC5jcHA6CisvLyAgIFRlc3RzIGZvciBBTkdMRSdzIGludGVybmFsIHZhcnlpbmcgcGFja2luZyBh
bGdvcml0aG0uCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvVmFyeWluZ1BhY2tpbmcuaCIKKwor
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKKyNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFtLmgi
CisKK3VzaW5nIG5hbWVzcGFjZSBnbDsKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIFZhcnlpbmdQ
YWNraW5nVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08R0x1aW50Pgorewor
ICBwcm90ZWN0ZWQ6CisgICAgVmFyeWluZ1BhY2tpbmdUZXN0KCkge30KKworICAgIGJvb2wgdGVz
dFZhcnlpbmdQYWNraW5nKGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpWYXJ5aW5nPiAmc2hWYXJ5aW5n
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYXJ5aW5nUGFja2luZyAqdmFyeWluZ1Bh
Y2tpbmcpCisgICAgeworICAgICAgICBzdGQ6OnZlY3RvcjxQYWNrZWRWYXJ5aW5nPiBwYWNrZWRW
YXJ5aW5nczsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvICZzaFZhcnlpbmcgOiBzaFZhcnlpbmdz
KQorICAgICAgICB7CisgICAgICAgICAgICBwYWNrZWRWYXJ5aW5ncy5wdXNoX2JhY2soUGFja2Vk
VmFyeWluZyhzaFZhcnlpbmcsIHNoVmFyeWluZy5pbnRlcnBvbGF0aW9uKSk7CisgICAgICAgIH0K
KworICAgICAgICBJbmZvTG9nIGluZm9Mb2c7CisgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3Ry
aW5nPiB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzOworCisgICAgICAgIHJldHVybiB2YXJ5aW5n
UGFja2luZy0+cGFja1VzZXJWYXJ5aW5ncyhpbmZvTG9nLCBwYWNrZWRWYXJ5aW5ncywgdHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5ncyk7CisgICAgfQorCisgICAgLy8gVXNlcyB0aGUgInJlbGF4ZWQi
IEFOR0xFIHBhY2tpbmcgbW9kZS4KKyAgICBib29sIHBhY2tWYXJ5aW5ncyhHTHVpbnQgbWF4VmFy
eWluZ3MsIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpWYXJ5aW5nPiAmc2hWYXJ5aW5ncykKKyAgICB7
CisgICAgICAgIFZhcnlpbmdQYWNraW5nIHZhcnlpbmdQYWNraW5nKG1heFZhcnlpbmdzLCBQYWNr
TW9kZTo6QU5HTEVfUkVMQVhFRCk7CisgICAgICAgIHJldHVybiB0ZXN0VmFyeWluZ1BhY2tpbmco
c2hWYXJ5aW5ncywgJnZhcnlpbmdQYWNraW5nKTsKKyAgICB9CisKKyAgICAvLyBVc2VzIHRoZSBz
dHJpY3RlciBXZWJHTCBzdHlsZSBwYWNraW5nIHJ1bGVzLgorICAgIGJvb2wgcGFja1Zhcnlpbmdz
U3RyaWN0KEdMdWludCBtYXhWYXJ5aW5ncywgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+
ICZzaFZhcnlpbmdzKQorICAgIHsKKyAgICAgICAgVmFyeWluZ1BhY2tpbmcgdmFyeWluZ1BhY2tp
bmcobWF4VmFyeWluZ3MsIFBhY2tNb2RlOjpXRUJHTF9TVFJJQ1QpOworICAgICAgICByZXR1cm4g
dGVzdFZhcnlpbmdQYWNraW5nKHNoVmFyeWluZ3MsICZ2YXJ5aW5nUGFja2luZyk7CisgICAgfQor
CisgICAgY29uc3QgaW50IGtNYXhWYXJ5aW5ncyA9IEdldFBhcmFtKCk7Cit9OworCitzdGQ6OnZl
Y3RvcjxzaDo6VmFyeWluZz4gTWFrZVZhcnlpbmdzKEdMZW51bSB0eXBlLCBzaXplX3QgY291bnQs
IHNpemVfdCBhcnJheVNpemUpCit7CisgICAgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+IHZhcnlp
bmdzOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4
KQorICAgIHsKKyAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3Ryc3RyOworICAgICAgICBzdHJz
dHIgPDwgdHlwZSA8PCBpbmRleDsKKworICAgICAgICBzaDo6VmFyeWluZyB2YXJ5aW5nOworICAg
ICAgICB2YXJ5aW5nLnR5cGUgICAgICAgICAgPSB0eXBlOworICAgICAgICB2YXJ5aW5nLnByZWNp
c2lvbiAgICAgPSBHTF9NRURJVU1fRkxPQVQ7CisgICAgICAgIHZhcnlpbmcubmFtZSAgICAgICAg
ICA9IHN0cnN0ci5zdHIoKTsKKyAgICAgICAgdmFyeWluZy5tYXBwZWROYW1lICAgID0gc3Ryc3Ry
LnN0cigpOworICAgICAgICB2YXJ5aW5nLmFycmF5U2l6ZSAgICAgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KGFycmF5U2l6ZSk7CisgICAgICAgIHZhcnlpbmcuc3RhdGljVXNlICAgICA9IHRy
dWU7CisgICAgICAgIHZhcnlpbmcuaW50ZXJwb2xhdGlvbiA9IHNoOjpJTlRFUlBPTEFUSU9OX0ZM
QVQ7CisgICAgICAgIHZhcnlpbmcuaXNJbnZhcmlhbnQgICA9IGZhbHNlOworCisgICAgICAgIHZh
cnlpbmdzLnB1c2hfYmFjayh2YXJ5aW5nKTsKKyAgICB9CisKKyAgICByZXR1cm4gdmFyeWluZ3M7
Cit9CisKK3ZvaWQgQWRkVmFyeWluZ3Moc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+ICp2YXJ5aW5n
cywgR0xlbnVtIHR5cGUsIHNpemVfdCBjb3VudCwgc2l6ZV90IGFycmF5U2l6ZSkKK3sKKyAgICBj
b25zdCBhdXRvICZuZXdWYXJ5aW5ncyA9IE1ha2VWYXJ5aW5ncyh0eXBlLCBjb3VudCwgYXJyYXlT
aXplKTsKKyAgICB2YXJ5aW5ncy0+aW5zZXJ0KHZhcnlpbmdzLT5lbmQoKSwgbmV3VmFyeWluZ3Mu
YmVnaW4oKSwgbmV3VmFyeWluZ3MuZW5kKCkpOworfQorCisvLyBUZXN0IHRoYXQgYSBzaW5nbGUg
dmFyeWluZyBjYW4ndCBvdmVyZmxvdyB0aGUgcGFja2luZy4KK1RFU1RfUChWYXJ5aW5nUGFja2lu
Z1Rlc3QsIE9uZVZhcnlpbmdMYXJnZXJUaGFuTWF4KQoreworICAgIEFTU0VSVF9GQUxTRShwYWNr
VmFyeWluZ3MoMSwgTWFrZVZhcnlpbmdzKEdMX0ZMT0FUX01BVDQsIDEsIDApKSk7Cit9CisKKy8v
IFRoaXMgd2lsbCBvdmVyZmxvdyB0aGUgYXZhaWxhYmxlIHZhcnlpbmcgc3BhY2UuCitURVNUX1Ao
VmFyeWluZ1BhY2tpbmdUZXN0LCBNYXhQbHVzT25lVmFyeWluZ1ZlYzMpCit7CisgICAgQVNTRVJU
X0ZBTFNFKHBhY2tWYXJ5aW5ncyhrTWF4VmFyeWluZ3MsIE1ha2VWYXJ5aW5ncyhHTF9GTE9BVF9W
RUMzLCBrTWF4VmFyeWluZ3MgKyAxLCAwKSkpOworfQorCisvLyBUaGlzIHdpbGwgb3ZlcmZsb3cg
dGhlIGF2YWlsYWJsZSB2YXJ5aW5nIHNwYWNlLgorVEVTVF9QKFZhcnlpbmdQYWNraW5nVGVzdCwg
TWF4UGx1c09uZVZhcnlpbmdWZWMzQXJyYXkpCit7CisgICAgQVNTRVJUX0ZBTFNFKHBhY2tWYXJ5
aW5ncyhrTWF4VmFyeWluZ3MsIE1ha2VWYXJ5aW5ncyhHTF9GTE9BVF9WRUMzLCBrTWF4VmFyeWlu
Z3MgLyAyICsgMSwgMikpKTsKK30KKworLy8gVGhpcyB3aWxsIG92ZXJmbG93IHRoZSBhdmFpbGFi
bGUgdmFyeWluZyBzcGFjZS4KK1RFU1RfUChWYXJ5aW5nUGFja2luZ1Rlc3QsIE1heFZhcnlpbmdW
ZWMzQW5kT25lVmVjMikKK3sKKyAgICBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gdmFyeWluZ3Mg
PSBNYWtlVmFyeWluZ3MoR0xfRkxPQVRfVkVDMywga01heFZhcnlpbmdzLCAwKTsKKyAgICBBZGRW
YXJ5aW5ncygmdmFyeWluZ3MsIEdMX0ZMT0FUX1ZFQzIsIDEsIDApOworICAgIEFTU0VSVF9GQUxT
RShwYWNrVmFyeWluZ3Moa01heFZhcnlpbmdzLCB2YXJ5aW5ncykpOworfQorCisvLyBUaGlzIHNo
b3VsZCB3b3JrIHNpbmNlIHR3byB2ZWMycyBhcmUgcGFja2VkIGluIGEgc2luZ2xlIHJlZ2lzdGVy
LgorVEVTVF9QKFZhcnlpbmdQYWNraW5nVGVzdCwgTWF4UGx1c09uZVZhcnlpbmdWZWMyKQorewor
ICAgIEFTU0VSVF9UUlVFKHBhY2tWYXJ5aW5ncyhrTWF4VmFyeWluZ3MsIE1ha2VWYXJ5aW5ncyhH
TF9GTE9BVF9WRUMyLCBrTWF4VmFyeWluZ3MgKyAxLCAwKSkpOworfQorCisvLyBTYW1lIGZvciB0
aGlzIG9uZSBhcyBhYm92ZS4KK1RFU1RfUChWYXJ5aW5nUGFja2luZ1Rlc3QsIFR3aWNlTWF4VmFy
eWluZ1ZlYzIpCit7CisgICAgQVNTRVJUX1RSVUUocGFja1ZhcnlpbmdzKGtNYXhWYXJ5aW5ncywg
TWFrZVZhcnlpbmdzKEdMX0ZMT0FUX1ZFQzIsIGtNYXhWYXJ5aW5ncyAqIDIsIDApKSk7Cit9CisK
Ky8vIFRoaXMgc2hvdWxkIG5vdCB3b3JrIHNpbmNlIGl0IG92ZXJmbG93cyBhdmFpbGFibGUgdmFy
eWluZyBzcGFjZS4KK1RFU1RfUChWYXJ5aW5nUGFja2luZ1Rlc3QsIFRvb01hbnlWYXJ5aW5nVmVj
MikKK3sKKyAgICBBU1NFUlRfRkFMU0UocGFja1ZhcnlpbmdzKGtNYXhWYXJ5aW5ncywgTWFrZVZh
cnlpbmdzKEdMX0ZMT0FUX1ZFQzIsIGtNYXhWYXJ5aW5ncyAqIDIgKyAxLCAwKSkpOworfQorCisv
LyBUaGlzIHNob3VsZCB3b3JrIGFjY29yZGluZyB0byB0aGUgZXhhbXBsZSBHTCBwYWNraW5nIHJ1
bGVzIC0gdGhlIGZsb2F0IHZhcnlpbmdzIGFyZSBzbG90dGVkCisvLyBpbnRvIHRoZSBlbmQgb2Yg
dGhlIHZlYzMgdmFyeWluZyBhcnJheXMuCitURVNUX1AoVmFyeWluZ1BhY2tpbmdUZXN0LCBNYXhW
YXJ5aW5nVmVjM0FycmF5QW5kRmxvYXRBcnJheXMpCit7CisgICAgc3RkOjp2ZWN0b3I8c2g6OlZh
cnlpbmc+IHZhcnlpbmdzID0gTWFrZVZhcnlpbmdzKEdMX0ZMT0FUX1ZFQzMsIGtNYXhWYXJ5aW5n
cyAvIDIsIDIpOworICAgIEFkZFZhcnlpbmdzKCZ2YXJ5aW5ncywgR0xfRkxPQVQsIGtNYXhWYXJ5
aW5ncyAvIDIsIDIpOworICAgIEFTU0VSVF9UUlVFKHBhY2tWYXJ5aW5ncyhrTWF4VmFyeWluZ3Ms
IHZhcnlpbmdzKSk7Cit9CisKKy8vIFRoaXMgc2hvdWxkIG5vdCB3b3JrIC0gaXQgaGFzIG9uZSB0
b28gbWFueSBmbG9hdCBhcnJheXMuCitURVNUX1AoVmFyeWluZ1BhY2tpbmdUZXN0LCBNYXhWYXJ5
aW5nVmVjM0FycmF5QW5kTWF4UGx1c09uZUZsb2F0QXJyYXkpCit7CisgICAgc3RkOjp2ZWN0b3I8
c2g6OlZhcnlpbmc+IHZhcnlpbmdzID0gTWFrZVZhcnlpbmdzKEdMX0ZMT0FUX1ZFQzMsIGtNYXhW
YXJ5aW5ncyAvIDIsIDIpOworICAgIEFkZFZhcnlpbmdzKCZ2YXJ5aW5ncywgR0xfRkxPQVQsIGtN
YXhWYXJ5aW5ncyAvIDIgKyAxLCAyKTsKKyAgICBBU1NFUlRfRkFMU0UocGFja1ZhcnlpbmdzKGtN
YXhWYXJ5aW5ncywgdmFyeWluZ3MpKTsKK30KKworLy8gV2ViR0wgc2hvdWxkIGZhaWwgdG8gcGFj
ayBtYXgrMSB2ZWMyIGFycmF5cywgdW5saWtlIG91ciBtb3JlIHJlbGF4ZWQgcGFja2luZy4KK1RF
U1RfUChWYXJ5aW5nUGFja2luZ1Rlc3QsIE1heFBsdXNPbmVNYXQyVmFyeWluZ3NGYWlsc1dlYkdM
KQoreworICAgIGF1dG8gdmFyeWluZ3MgPSBNYWtlVmFyeWluZ3MoR0xfRkxPQVRfTUFUMiwga01h
eFZhcnlpbmdzIC8gMiArIDEsIDApOworICAgIEFTU0VSVF9GQUxTRShwYWNrVmFyeWluZ3NTdHJp
Y3Qoa01heFZhcnlpbmdzLCB2YXJ5aW5ncykpOworfQorCisvLyBNYWtlcyBzZXBhcmF0ZSB0ZXN0
cyBmb3IgZGlmZmVyZW50IHZhbHVlcyBvZiBrTWF4VmFyeWluZ3MuCitJTlNUQU5USUFURV9URVNU
X0NBU0VfUCgsIFZhcnlpbmdQYWNraW5nVGVzdCwgOjp0ZXN0aW5nOjpWYWx1ZXMoMSwgNCwgOCkp
OworCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVyc2lvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1ZlcnNpb24uaAppbmRleCA2Mjk4NWQwZGE4OGMxMTEzMjZhNmY1ZTJj
ZDA1ZTgwNTI0YmRjYWVjLi40Yzk3MzBjN2JlZTQ5ZjE5MDBhNzhjMmJkZmM1ZWMzYzg3MjBhMjcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVyc2lv
bi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJzaW9uLmgK
QEAgLTE2LDggKzE2LDggQEAgbmFtZXNwYWNlIGdsCiAKIHN0cnVjdCBWZXJzaW9uCiB7Ci0gICAg
VmVyc2lvbigpOwotICAgIFZlcnNpb24oR0x1aW50IG1ham9yLCBHTHVpbnQgbWlub3IpOworICAg
IGNvbnN0ZXhwciBWZXJzaW9uKCk7CisgICAgY29uc3RleHByIFZlcnNpb24oR0x1aW50IG1ham9y
LCBHTHVpbnQgbWlub3IpOwogCiAgICAgR0x1aW50IG1ham9yOwogICAgIEdMdWludCBtaW5vcjsK
QEAgLTI2LDggKzI2LDkgQEAgc3RydWN0IFZlcnNpb24KIGJvb2wgb3BlcmF0b3I9PShjb25zdCBW
ZXJzaW9uICZhLCBjb25zdCBWZXJzaW9uICZiKTsKIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZXJz
aW9uICZhLCBjb25zdCBWZXJzaW9uICZiKTsKIGJvb2wgb3BlcmF0b3I+PShjb25zdCBWZXJzaW9u
ICZhLCBjb25zdCBWZXJzaW9uICZiKTsKK2Jvb2wgb3BlcmF0b3I8PShjb25zdCBWZXJzaW9uICZh
LCBjb25zdCBWZXJzaW9uICZiKTsKIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFZlcnNpb24gJmEsIGNv
bnN0IFZlcnNpb24gJmIpOwotCitib29sIG9wZXJhdG9yPihjb25zdCBWZXJzaW9uICZhLCBjb25z
dCBWZXJzaW9uICZiKTsKIH0KIAogI2luY2x1ZGUgIlZlcnNpb24uaW5sIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnNpb24uaW5sIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnNpb24uaW5sCmluZGV4IDQyN2Y2Y2Ex
Nzg4MTYzYmNjYjU1ZGNiYzFiYWVjYjU1Y2E4M2RhMDguLjQ5NTIwOTcyMDQ4ZTk1Mzg0MGMwODk1
NWM5MzI3MzMyNmQwNjRkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9WZXJzaW9uLmlubAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvVmVyc2lvbi5pbmwKQEAgLTYsMzggKzYsNTQgQEAKIAogLy8gVmVyc2lvbi5pbmw6
IEVuY2Fwc3VsYXRpb24gb2YgYSBHTCB2ZXJzaW9uLgogCisjaW5jbHVkZSA8dHVwbGU+CisKIG5h
bWVzcGFjZSBnbAogewogCi1pbmxpbmUgVmVyc2lvbjo6VmVyc2lvbigpCitjb25zdGV4cHIgVmVy
c2lvbjo6VmVyc2lvbigpCiAgICAgOiBWZXJzaW9uKDAsIDApCiB7CiB9CiAKLWlubGluZSBWZXJz
aW9uOjpWZXJzaW9uKEdMdWludCBtYWpvcl8sIEdMdWludCBtaW5vcl8pCisvLyBBdm9pZCBjb25m
bGljdHMgd2l0aCBsaW51eCBzeXN0ZW0gZGVmaW5lcworI3VuZGVmIG1ham9yCisjdW5kZWYgbWlu
b3IKKworY29uc3RleHByIFZlcnNpb246OlZlcnNpb24oR0x1aW50IG1ham9yXywgR0x1aW50IG1p
bm9yXykKKyAgICA6IG1ham9yKG1ham9yXyksCisgICAgICBtaW5vcihtaW5vcl8pCiB7Ci0gICAg
bWFqb3IgPSBtYWpvcl87Ci0gICAgbWlub3IgPSBtaW5vcl87CiB9CiAKIGlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgVmVyc2lvbiAmYSwgY29uc3QgVmVyc2lvbiAmYikKIHsKLSAgICByZXR1
cm4gYS5tYWpvciA9PSBiLm1ham9yICYmIGEubWlub3IgPT0gYi5taW5vcjsKKyAgICByZXR1cm4g
c3RkOjp0aWUoYS5tYWpvciwgYS5taW5vcikgPT0gc3RkOjp0aWUoYi5tYWpvciwgYi5taW5vcik7
CiB9CiAKIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVmVyc2lvbiAmYSwgY29uc3QgVmVy
c2lvbiAmYikKIHsKLSAgICByZXR1cm4gIShhID09IGIpOworICAgIHJldHVybiBzdGQ6OnRpZShh
Lm1ham9yLCBhLm1pbm9yKSAhPSBzdGQ6OnRpZShiLm1ham9yLCBiLm1pbm9yKTsKIH0KIAogaW5s
aW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBWZXJzaW9uICZhLCBjb25zdCBWZXJzaW9uICZiKQog
ewotICAgIHJldHVybiBhLm1ham9yID4gYi5tYWpvciB8fCAoYS5tYWpvciA9PSBiLm1ham9yICYm
IGEubWlub3IgPj0gYi5taW5vcik7CisgICAgcmV0dXJuIHN0ZDo6dGllKGEubWFqb3IsIGEubWlu
b3IpID49IHN0ZDo6dGllKGIubWFqb3IsIGIubWlub3IpOworfQorCitpbmxpbmUgYm9vbCBvcGVy
YXRvcjw9KGNvbnN0IFZlcnNpb24gJmEsIGNvbnN0IFZlcnNpb24gJmIpCit7CisgICAgcmV0dXJu
IHN0ZDo6dGllKGEubWFqb3IsIGEubWlub3IpIDw9IHN0ZDo6dGllKGIubWFqb3IsIGIubWlub3Ip
OwogfQogCiBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoY29uc3QgVmVyc2lvbiAmYSwgY29uc3QgVmVy
c2lvbiAmYikKIHsKLSAgICByZXR1cm4gIShhID49IGIpOworICAgIHJldHVybiBzdGQ6OnRpZShh
Lm1ham9yLCBhLm1pbm9yKSA8IHN0ZDo6dGllKGIubWFqb3IsIGIubWlub3IpOworfQorCitpbmxp
bmUgYm9vbCBvcGVyYXRvcj4oY29uc3QgVmVyc2lvbiAmYSwgY29uc3QgVmVyc2lvbiAmYikKK3sK
KyAgICByZXR1cm4gc3RkOjp0aWUoYS5tYWpvciwgYS5taW5vcikgPiBzdGQ6OnRpZShiLm1ham9y
LCBiLm1pbm9yKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL1ZlcnRleEFycmF5LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9WZXJ0ZXhBcnJheS5jcHAKaW5kZXggMGI4ZmNiNjNkZjhlMTY4ZTMyODc0ZTZm
NjMwM2MzMDhhZDc3YzkyNS4uNmFiZTg4ZTU0N2UzZTc1OWZiODczNDg1NjdlNWQ0N2M2ZjUzOTZi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnRl
eEFycmF5LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVy
dGV4QXJyYXkuY3BwCkBAIC04LDI4ICs4LDQwIEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9WZXJ0
ZXhBcnJheS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0J1ZmZlci5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL0NvbnRleHQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9HTEltcGxGYWN0b3J5
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvVmVydGV4QXJyYXlJbXBsLmgiCiAKIG5h
bWVzcGFjZSBnbAogewogCi1WZXJ0ZXhBcnJheVN0YXRlOjpWZXJ0ZXhBcnJheVN0YXRlKHNpemVf
dCBtYXhBdHRyaWJzKQotICAgIDogbUxhYmVsKCksIG1WZXJ0ZXhBdHRyaWJ1dGVzKG1heEF0dHJp
YnMpLCBtTWF4RW5hYmxlZEF0dHJpYnV0ZSgwKQorVmVydGV4QXJyYXlTdGF0ZTo6VmVydGV4QXJy
YXlTdGF0ZShzaXplX3QgbWF4QXR0cmlicywgc2l6ZV90IG1heEF0dHJpYkJpbmRpbmdzKQorICAg
IDogbUxhYmVsKCksIG1WZXJ0ZXhCaW5kaW5ncyhtYXhBdHRyaWJCaW5kaW5ncyksIG1NYXhFbmFi
bGVkQXR0cmlidXRlKDApCiB7CisgICAgQVNTRVJUKG1heEF0dHJpYnMgPD0gbWF4QXR0cmliQmlu
ZGluZ3MpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhBdHRyaWJzOyBpKyspCisg
ICAgeworICAgICAgICBtVmVydGV4QXR0cmlidXRlcy5lbXBsYWNlX2JhY2soc3RhdGljX2Nhc3Q8
R0x1aW50PihpKSk7CisgICAgfQogfQogCiBWZXJ0ZXhBcnJheVN0YXRlOjp+VmVydGV4QXJyYXlT
dGF0ZSgpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBnZXRNYXhBdHRyaWJzKCk7IGkr
KykKKyAgICBmb3IgKGF1dG8gJmJpbmRpbmcgOiBtVmVydGV4QmluZGluZ3MpCiAgICAgewotICAg
ICAgICBtVmVydGV4QXR0cmlidXRlc1tpXS5idWZmZXIuc2V0KG51bGxwdHIpOworICAgICAgICBi
aW5kaW5nLmJ1ZmZlci5zZXQobnVsbHB0cik7CiAgICAgfQogICAgIG1FbGVtZW50QXJyYXlCdWZm
ZXIuc2V0KG51bGxwdHIpOwogfQogCi1WZXJ0ZXhBcnJheTo6VmVydGV4QXJyYXkocng6OkdMSW1w
bEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBpZCwgc2l6ZV90IG1heEF0dHJpYnMpCi0gICAgOiBt
SWQoaWQpLCBtU3RhdGUobWF4QXR0cmlicyksIG1WZXJ0ZXhBcnJheShmYWN0b3J5LT5jcmVhdGVW
ZXJ0ZXhBcnJheShtU3RhdGUpKQorVmVydGV4QXJyYXk6OlZlcnRleEFycmF5KHJ4OjpHTEltcGxG
YWN0b3J5ICpmYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWF4QXR0cmlicywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgbWF4QXR0cmliQmluZGluZ3MpCisgICAgOiBtSWQoaWQpLAorICAg
ICAgbVN0YXRlKG1heEF0dHJpYnMsIG1heEF0dHJpYkJpbmRpbmdzKSwKKyAgICAgIG1WZXJ0ZXhB
cnJheShmYWN0b3J5LT5jcmVhdGVWZXJ0ZXhBcnJheShtU3RhdGUpKQogewogfQogCkBAIC01NSwx
MSArNjcsMTEgQEAgY29uc3Qgc3RkOjpzdHJpbmcgJlZlcnRleEFycmF5OjpnZXRMYWJlbCgpIGNv
bnN0CiAKIHZvaWQgVmVydGV4QXJyYXk6OmRldGFjaEJ1ZmZlcihHTHVpbnQgYnVmZmVyTmFtZSkK
IHsKLSAgICBmb3IgKHNpemVfdCBhdHRyaWJ1dGUgPSAwOyBhdHRyaWJ1dGUgPCBnZXRNYXhBdHRy
aWJzKCk7IGF0dHJpYnV0ZSsrKQorICAgIGZvciAoYXV0byAmYmluZGluZyA6IG1TdGF0ZS5tVmVy
dGV4QmluZGluZ3MpCiAgICAgewotICAgICAgICBpZiAobVN0YXRlLm1WZXJ0ZXhBdHRyaWJ1dGVz
W2F0dHJpYnV0ZV0uYnVmZmVyLmlkKCkgPT0gYnVmZmVyTmFtZSkKKyAgICAgICAgaWYgKGJpbmRp
bmcuYnVmZmVyLmlkKCkgPT0gYnVmZmVyTmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgbVN0
YXRlLm1WZXJ0ZXhBdHRyaWJ1dGVzW2F0dHJpYnV0ZV0uYnVmZmVyLnNldChudWxscHRyKTsKKyAg
ICAgICAgICAgIGJpbmRpbmcuYnVmZmVyLnNldChudWxscHRyKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtNjksMzEgKzgxLDk3IEBAIHZvaWQgVmVydGV4QXJyYXk6OmRldGFjaEJ1ZmZlcihHTHVp
bnQgYnVmZmVyTmFtZSkKICAgICB9CiB9CiAKLWNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmVmVydGV4
QXJyYXk6OmdldFZlcnRleEF0dHJpYnV0ZShzaXplX3QgYXR0cmlidXRlSW5kZXgpIGNvbnN0Citj
b25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJlZlcnRleEFycmF5OjpnZXRWZXJ0ZXhBdHRyaWJ1dGUoc2l6
ZV90IGF0dHJpYkluZGV4KSBjb25zdAoreworICAgIEFTU0VSVChhdHRyaWJJbmRleCA8IGdldE1h
eEF0dHJpYnMoKSk7CisgICAgcmV0dXJuIG1TdGF0ZS5tVmVydGV4QXR0cmlidXRlc1thdHRyaWJJ
bmRleF07Cit9CisKK2NvbnN0IFZlcnRleEJpbmRpbmcgJlZlcnRleEFycmF5OjpnZXRWZXJ0ZXhC
aW5kaW5nKHNpemVfdCBiaW5kaW5nSW5kZXgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGJpbmRpbmdJ
bmRleCA8IGdldE1heEJpbmRpbmdzKCkpOworICAgIHJldHVybiBtU3RhdGUubVZlcnRleEJpbmRp
bmdzW2JpbmRpbmdJbmRleF07Cit9CisKK3NpemVfdCBWZXJ0ZXhBcnJheTo6R2V0QXR0cmliSW5k
ZXgodW5zaWduZWQgbG9uZyBkaXJ0eUJpdCkKIHsKLSAgICBBU1NFUlQoYXR0cmlidXRlSW5kZXgg
PCBnZXRNYXhBdHRyaWJzKCkpOwotICAgIHJldHVybiBtU3RhdGUubVZlcnRleEF0dHJpYnV0ZXNb
YXR0cmlidXRlSW5kZXhdOworICAgIHN0YXRpY19hc3NlcnQoZ2w6Ok1BWF9WRVJURVhfQVRUUklC
UyA9PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJfQklORElOR1MsCisgICAgICAgICAgICAgICAgICAi
VGhlIHN0cmlkZSBvZiB2ZXJ0ZXggYXR0cmlidXRlcyBzaG91bGQgZXF1YWwgdG8gdGhhdCBvZiB2
ZXJ0ZXggYmluZGluZ3MuIik7CisgICAgQVNTRVJUKGRpcnR5Qml0ID4gRElSVFlfQklUX0VMRU1F
TlRfQVJSQVlfQlVGRkVSKTsKKyAgICByZXR1cm4gKGRpcnR5Qml0IC0gRElSVFlfQklUX0FUVFJJ
Ql8wX0VOQUJMRUQpICUgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsKK30KKwordm9pZCBWZXJ0ZXhB
cnJheTo6YmluZFZlcnRleEJ1ZmZlcihzaXplX3QgYmluZGluZ0luZGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIgKmJvdW5kQnVmZmVyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlKQoreworICAgIEFTU0VSVChiaW5kaW5n
SW5kZXggPCBnZXRNYXhCaW5kaW5ncygpKTsKKworICAgIFZlcnRleEJpbmRpbmcgKmJpbmRpbmcg
PSAmbVN0YXRlLm1WZXJ0ZXhCaW5kaW5nc1tiaW5kaW5nSW5kZXhdOworCisgICAgYmluZGluZy0+
YnVmZmVyLnNldChib3VuZEJ1ZmZlcik7CisgICAgYmluZGluZy0+b2Zmc2V0ID0gb2Zmc2V0Owor
ICAgIGJpbmRpbmctPnN0cmlkZSA9IHN0cmlkZTsKKyAgICBtRGlydHlCaXRzLnNldChESVJUWV9C
SVRfQklORElOR18wX0JVRkZFUiArIGJpbmRpbmdJbmRleCk7Cit9CisKK3ZvaWQgVmVydGV4QXJy
YXk6OnNldFZlcnRleEF0dHJpYkJpbmRpbmcoc2l6ZV90IGF0dHJpYkluZGV4LCBzaXplX3QgYmlu
ZGluZ0luZGV4KQoreworICAgIEFTU0VSVChhdHRyaWJJbmRleCA8IGdldE1heEF0dHJpYnMoKSAm
JiBiaW5kaW5nSW5kZXggPCBnZXRNYXhCaW5kaW5ncygpKTsKKworICAgIG1TdGF0ZS5tVmVydGV4
QXR0cmlidXRlc1thdHRyaWJJbmRleF0uYmluZGluZ0luZGV4ID0gc3RhdGljX2Nhc3Q8R0x1aW50
PihiaW5kaW5nSW5kZXgpOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9BVFRSSUJfMF9C
SU5ESU5HICsgYXR0cmliSW5kZXgpOworfQorCit2b2lkIFZlcnRleEFycmF5OjpzZXRWZXJ0ZXhC
aW5kaW5nRGl2aXNvcihzaXplX3QgYmluZGluZ0luZGV4LCBHTHVpbnQgZGl2aXNvcikKK3sKKyAg
ICBBU1NFUlQoYmluZGluZ0luZGV4IDwgZ2V0TWF4QmluZGluZ3MoKSk7CisKKyAgICBtU3RhdGUu
bVZlcnRleEJpbmRpbmdzW2JpbmRpbmdJbmRleF0uZGl2aXNvciA9IGRpdmlzb3I7CisgICAgbURp
cnR5Qml0cy5zZXQoRElSVFlfQklUX0JJTkRJTkdfMF9ESVZJU09SICsgYmluZGluZ0luZGV4KTsK
K30KKwordm9pZCBWZXJ0ZXhBcnJheTo6c2V0VmVydGV4QXR0cmliRm9ybWF0KHNpemVfdCBhdHRy
aWJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBz
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9ybWFsaXpl
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHB1cmVJbnRl
Z2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIHJl
bGF0aXZlT2Zmc2V0KQoreworICAgIEFTU0VSVChhdHRyaWJJbmRleCA8IGdldE1heEF0dHJpYnMo
KSk7CisKKyAgICBWZXJ0ZXhBdHRyaWJ1dGUgKmF0dHJpYiA9ICZtU3RhdGUubVZlcnRleEF0dHJp
YnV0ZXNbYXR0cmliSW5kZXhdOworCisgICAgYXR0cmliLT5zaXplICAgICAgICAgICA9IHNpemU7
CisgICAgYXR0cmliLT50eXBlICAgICAgICAgICA9IHR5cGU7CisgICAgYXR0cmliLT5ub3JtYWxp
emVkICAgICA9IG5vcm1hbGl6ZWQ7CisgICAgYXR0cmliLT5wdXJlSW50ZWdlciAgICA9IHB1cmVJ
bnRlZ2VyOworICAgIGF0dHJpYi0+cmVsYXRpdmVPZmZzZXQgPSByZWxhdGl2ZU9mZnNldDsKKyAg
ICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfQVRUUklCXzBfRk9STUFUICsgYXR0cmliSW5kZXgp
OwogfQogCiB2b2lkIFZlcnRleEFycmF5OjpzZXRWZXJ0ZXhBdHRyaWJEaXZpc29yKHNpemVfdCBp
bmRleCwgR0x1aW50IGRpdmlzb3IpCiB7CiAgICAgQVNTRVJUKGluZGV4IDwgZ2V0TWF4QXR0cmli
cygpKTsKLSAgICBtU3RhdGUubVZlcnRleEF0dHJpYnV0ZXNbaW5kZXhdLmRpdmlzb3IgPSBkaXZp
c29yOwotICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9BVFRSSUJfMF9ESVZJU09SICsgaW5k
ZXgpOworCisgICAgc2V0VmVydGV4QXR0cmliQmluZGluZyhpbmRleCwgaW5kZXgpOworICAgIHNl
dFZlcnRleEJpbmRpbmdEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKIH0KIAotdm9pZCBWZXJ0ZXhB
cnJheTo6ZW5hYmxlQXR0cmlidXRlKHNpemVfdCBhdHRyaWJ1dGVJbmRleCwgYm9vbCBlbmFibGVk
U3RhdGUpCit2b2lkIFZlcnRleEFycmF5OjplbmFibGVBdHRyaWJ1dGUoc2l6ZV90IGF0dHJpYklu
ZGV4LCBib29sIGVuYWJsZWRTdGF0ZSkKIHsKLSAgICBBU1NFUlQoYXR0cmlidXRlSW5kZXggPCBn
ZXRNYXhBdHRyaWJzKCkpOwotICAgIG1TdGF0ZS5tVmVydGV4QXR0cmlidXRlc1thdHRyaWJ1dGVJ
bmRleF0uZW5hYmxlZCA9IGVuYWJsZWRTdGF0ZTsKLSAgICBtRGlydHlCaXRzLnNldChESVJUWV9C
SVRfQVRUUklCXzBfRU5BQkxFRCArIGF0dHJpYnV0ZUluZGV4KTsKKyAgICBBU1NFUlQoYXR0cmli
SW5kZXggPCBnZXRNYXhBdHRyaWJzKCkpOworCisgICAgbVN0YXRlLm1WZXJ0ZXhBdHRyaWJ1dGVz
W2F0dHJpYkluZGV4XS5lbmFibGVkID0gZW5hYmxlZFN0YXRlOworICAgIG1EaXJ0eUJpdHMuc2V0
KERJUlRZX0JJVF9BVFRSSUJfMF9FTkFCTEVEICsgYXR0cmliSW5kZXgpOwogCiAgICAgLy8gVXBk
YXRlIHN0YXRlIGNhY2hlCiAgICAgaWYgKGVuYWJsZWRTdGF0ZSkKICAgICB7Ci0gICAgICAgIG1T
dGF0ZS5tTWF4RW5hYmxlZEF0dHJpYnV0ZSA9IHN0ZDo6bWF4KGF0dHJpYnV0ZUluZGV4ICsgMSwg
bVN0YXRlLm1NYXhFbmFibGVkQXR0cmlidXRlKTsKKyAgICAgICAgbVN0YXRlLm1NYXhFbmFibGVk
QXR0cmlidXRlID0gc3RkOjptYXgoYXR0cmliSW5kZXggKyAxLCBtU3RhdGUubU1heEVuYWJsZWRB
dHRyaWJ1dGUpOwogICAgIH0KLSAgICBlbHNlIGlmIChtU3RhdGUubU1heEVuYWJsZWRBdHRyaWJ1
dGUgPT0gYXR0cmlidXRlSW5kZXggKyAxKQorICAgIGVsc2UgaWYgKG1TdGF0ZS5tTWF4RW5hYmxl
ZEF0dHJpYnV0ZSA9PSBhdHRyaWJJbmRleCArIDEpCiAgICAgewogICAgICAgICB3aGlsZSAobVN0
YXRlLm1NYXhFbmFibGVkQXR0cmlidXRlID4gMCAmJgogICAgICAgICAgICAgICAgIW1TdGF0ZS5t
VmVydGV4QXR0cmlidXRlc1ttU3RhdGUubU1heEVuYWJsZWRBdHRyaWJ1dGUgLSAxXS5lbmFibGVk
KQpAQCAtMTAzLDIxICsxODEsMzEgQEAgdm9pZCBWZXJ0ZXhBcnJheTo6ZW5hYmxlQXR0cmlidXRl
KHNpemVfdCBhdHRyaWJ1dGVJbmRleCwgYm9vbCBlbmFibGVkU3RhdGUpCiAgICAgfQogfQogCi12
b2lkIFZlcnRleEFycmF5OjpzZXRBdHRyaWJ1dGVTdGF0ZShzaXplX3QgYXR0cmlidXRlSW5kZXgs
IGdsOjpCdWZmZXIgKmJvdW5kQnVmZmVyLCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9ybWFsaXplZCwgYm9vbCBwdXJl
SW50ZWdlciwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIpCit2b2lkIFZlcnRl
eEFycmF5OjpzZXRBdHRyaWJ1dGVTdGF0ZShzaXplX3QgYXR0cmliSW5kZXgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6QnVmZmVyICpib3VuZEJ1ZmZlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgbm9ybWFsaXplZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgcHVyZUludGVnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpCiB7Ci0gICAgQVNTRVJUKGF0dHJpYnV0ZUluZGV4
IDwgZ2V0TWF4QXR0cmlicygpKTsKKyAgICBBU1NFUlQoYXR0cmliSW5kZXggPCBnZXRNYXhBdHRy
aWJzKCkpOwogCi0gICAgVmVydGV4QXR0cmlidXRlICphdHRyaWIgPSAmbVN0YXRlLm1WZXJ0ZXhB
dHRyaWJ1dGVzW2F0dHJpYnV0ZUluZGV4XTsKKyAgICBHTGludHB0ciBvZmZzZXQgPSBib3VuZEJ1
ZmZlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnRwdHI+KHBvaW50ZXIpIDogMDsKIAotICAgIGF0
dHJpYi0+YnVmZmVyLnNldChib3VuZEJ1ZmZlcik7Ci0gICAgYXR0cmliLT5zaXplID0gc2l6ZTsK
LSAgICBhdHRyaWItPnR5cGUgPSB0eXBlOwotICAgIGF0dHJpYi0+bm9ybWFsaXplZCA9IG5vcm1h
bGl6ZWQ7Ci0gICAgYXR0cmliLT5wdXJlSW50ZWdlciA9IHB1cmVJbnRlZ2VyOwotICAgIGF0dHJp
Yi0+c3RyaWRlID0gc3RyaWRlOwotICAgIGF0dHJpYi0+cG9pbnRlciA9IHBvaW50ZXI7Ci0gICAg
bURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0FUVFJJQl8wX1BPSU5URVIgKyBhdHRyaWJ1dGVJbmRl
eCk7CisgICAgc2V0VmVydGV4QXR0cmliRm9ybWF0KGF0dHJpYkluZGV4LCBzaXplLCB0eXBlLCBu
b3JtYWxpemVkLCBwdXJlSW50ZWdlciwgMCk7CisgICAgc2V0VmVydGV4QXR0cmliQmluZGluZyhh
dHRyaWJJbmRleCwgYXR0cmliSW5kZXgpOworCisgICAgVmVydGV4QXR0cmlidXRlICZhdHRyaWIg
PSBtU3RhdGUubVZlcnRleEF0dHJpYnV0ZXNbYXR0cmliSW5kZXhdOworICAgIEdMc2l6ZWkgZWZm
ZWN0aXZlU3RyaWRlID0KKyAgICAgICAgc3RyaWRlICE9IDAgPyBzdHJpZGUgOiBzdGF0aWNfY2Fz
dDxHTHNpemVpPihDb21wdXRlVmVydGV4QXR0cmlidXRlVHlwZVNpemUoYXR0cmliKSk7CisgICAg
YXR0cmliLnBvaW50ZXIgICAgICAgICAgICAgICAgID0gcG9pbnRlcjsKKyAgICBhdHRyaWIudmVy
dGV4QXR0cmliQXJyYXlTdHJpZGUgPSBzdHJpZGU7CisKKyAgICBiaW5kVmVydGV4QnVmZmVyKGF0
dHJpYkluZGV4LCBib3VuZEJ1ZmZlciwgb2Zmc2V0LCBlZmZlY3RpdmVTdHJpZGUpOworCisgICAg
bURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0FUVFJJQl8wX1BPSU5URVIgKyBhdHRyaWJJbmRleCk7
CiB9CiAKIHZvaWQgVmVydGV4QXJyYXk6OnNldEVsZW1lbnRBcnJheUJ1ZmZlcihCdWZmZXIgKmJ1
ZmZlcikKQEAgLTEyNiwxMyArMjE0LDEzIEBAIHZvaWQgVmVydGV4QXJyYXk6OnNldEVsZW1lbnRB
cnJheUJ1ZmZlcihCdWZmZXIgKmJ1ZmZlcikKICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRf
RUxFTUVOVF9BUlJBWV9CVUZGRVIpOwogfQogCi12b2lkIFZlcnRleEFycmF5OjpzeW5jSW1wbFN0
YXRlKCkKK3ZvaWQgVmVydGV4QXJyYXk6OnN5bmNJbXBsU3RhdGUoY29uc3QgQ29udGV4dCAqY29u
dGV4dCkKIHsKICAgICBpZiAobURpcnR5Qml0cy5hbnkoKSkKICAgICB7Ci0gICAgICAgIG1WZXJ0
ZXhBcnJheS0+c3luY1N0YXRlKG1EaXJ0eUJpdHMpOworICAgICAgICBtVmVydGV4QXJyYXktPnN5
bmNTdGF0ZShyeDo6U2FmZUdldEltcGwoY29udGV4dCksIG1EaXJ0eUJpdHMpOwogICAgICAgICBt
RGlydHlCaXRzLnJlc2V0KCk7CiAgICAgfQogfQogCi19Cit9ICAvLyBuYW1lc3BhY2UgZ2wKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJ0ZXhBcnJh
eS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnRleEFycmF5LmgK
aW5kZXggNjVjNjJmMWJhN2QxNDVhNjEyYjM4MmE0OGVlODZhZGNlMDMwYTgzZS4uNDg5YzE4MGY5
NzRiMjkxZmVhMmNhNzk5MDIzNWFlZTNjNjI2NjAzMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnRleEFycmF5LmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnRleEFycmF5LmgKQEAgLTI1LDcgKzI1LDcgQEAg
bmFtZXNwYWNlIHJ4CiB7CiBjbGFzcyBHTEltcGxGYWN0b3J5OwogY2xhc3MgVmVydGV4QXJyYXlJ
bXBsOwotfQorfSAgLy8gbmFtZXNwYWNlIHJ4CiAKIG5hbWVzcGFjZSBnbAogewpAQCAtMzQsMTgg
KzM0LDMyIEBAIGNsYXNzIEJ1ZmZlcjsKIGNsYXNzIFZlcnRleEFycmF5U3RhdGUgZmluYWwgOiBw
dWJsaWMgYW5nbGU6Ok5vbkNvcHlhYmxlCiB7CiAgIHB1YmxpYzoKLSAgICBleHBsaWNpdCBWZXJ0
ZXhBcnJheVN0YXRlKHNpemVfdCBtYXhBdHRyaWJzKTsKKyAgICBWZXJ0ZXhBcnJheVN0YXRlKHNp
emVfdCBtYXhBdHRyaWJzLCBzaXplX3QgbWF4QmluZGluZ3MpOwogICAgIH5WZXJ0ZXhBcnJheVN0
YXRlKCk7CiAKICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZ2V0TGFiZWwoKSBjb25zdCB7IHJldHVy
biBtTGFiZWw7IH0KIAogICAgIGNvbnN0IEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gJmdldEVsZW1l
bnRBcnJheUJ1ZmZlcigpIGNvbnN0IHsgcmV0dXJuIG1FbGVtZW50QXJyYXlCdWZmZXI7IH0KICAg
ICBzaXplX3QgZ2V0TWF4QXR0cmlicygpIGNvbnN0IHsgcmV0dXJuIG1WZXJ0ZXhBdHRyaWJ1dGVz
LnNpemUoKTsgfQorICAgIHNpemVfdCBnZXRNYXhCaW5kaW5ncygpIGNvbnN0IHsgcmV0dXJuIG1W
ZXJ0ZXhCaW5kaW5ncy5zaXplKCk7IH0KICAgICBzaXplX3QgZ2V0TWF4RW5hYmxlZEF0dHJpYnV0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1NYXhFbmFibGVkQXR0cmlidXRlOyB9CiAgICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8VmVydGV4QXR0cmlidXRlPiAmZ2V0VmVydGV4QXR0cmlidXRlcygpIGNvbnN0IHsg
cmV0dXJuIG1WZXJ0ZXhBdHRyaWJ1dGVzOyB9Ci0gICAgY29uc3QgVmVydGV4QXR0cmlidXRlICZn
ZXRWZXJ0ZXhBdHRyaWJ1dGUoc2l6ZV90IGluZGV4KSBjb25zdAorICAgIGNvbnN0IFZlcnRleEF0
dHJpYnV0ZSAmZ2V0VmVydGV4QXR0cmlidXRlKHNpemVfdCBhdHRyaWJJbmRleCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBtVmVydGV4QXR0cmlidXRlc1tpbmRleF07CisgICAgICAgIHJl
dHVybiBtVmVydGV4QXR0cmlidXRlc1thdHRyaWJJbmRleF07CisgICAgfQorICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPFZlcnRleEJpbmRpbmc+ICZnZXRWZXJ0ZXhCaW5kaW5ncygpIGNvbnN0IHsgcmV0
dXJuIG1WZXJ0ZXhCaW5kaW5nczsgfQorICAgIGNvbnN0IFZlcnRleEJpbmRpbmcgJmdldFZlcnRl
eEJpbmRpbmcoc2l6ZV90IGJpbmRpbmdJbmRleCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtVmVydGV4QmluZGluZ3NbYmluZGluZ0luZGV4XTsKKyAgICB9CisgICAgY29uc3QgVmVydGV4
QmluZGluZyAmZ2V0QmluZGluZ0Zyb21BdHRyaWJJbmRleChzaXplX3QgYXR0cmliSW5kZXgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbVZlcnRleEJpbmRpbmdzW21WZXJ0ZXhBdHRyaWJ1
dGVzW2F0dHJpYkluZGV4XS5iaW5kaW5nSW5kZXhdOworICAgIH0KKyAgICBzaXplX3QgZ2V0Qmlu
ZGluZ0luZGV4RnJvbUF0dHJpYkluZGV4KHNpemVfdCBhdHRyaWJJbmRleCkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtVmVydGV4QXR0cmlidXRlc1thdHRyaWJJbmRleF0uYmluZGluZ0lu
ZGV4OwogICAgIH0KIAogICBwcml2YXRlOgpAQCAtNTMsMTMgKzY3LDE0IEBAIGNsYXNzIFZlcnRl
eEFycmF5U3RhdGUgZmluYWwgOiBwdWJsaWMgYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgc3RkOjpz
dHJpbmcgbUxhYmVsOwogICAgIHN0ZDo6dmVjdG9yPFZlcnRleEF0dHJpYnV0ZT4gbVZlcnRleEF0
dHJpYnV0ZXM7CiAgICAgQmluZGluZ1BvaW50ZXI8QnVmZmVyPiBtRWxlbWVudEFycmF5QnVmZmVy
OworICAgIHN0ZDo6dmVjdG9yPFZlcnRleEJpbmRpbmc+IG1WZXJ0ZXhCaW5kaW5nczsKICAgICBz
aXplX3QgbU1heEVuYWJsZWRBdHRyaWJ1dGU7CiB9OwogCiBjbGFzcyBWZXJ0ZXhBcnJheSBmaW5h
bCA6IHB1YmxpYyBMYWJlbGVkT2JqZWN0CiB7CiAgIHB1YmxpYzoKLSAgICBWZXJ0ZXhBcnJheShy
eDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50IGlkLCBzaXplX3QgbWF4QXR0cmlicyk7
CisgICAgVmVydGV4QXJyYXkocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBpZCwg
c2l6ZV90IG1heEF0dHJpYnMsIHNpemVfdCBtYXhBdHRyaWJCaW5kaW5ncyk7CiAgICAgflZlcnRl
eEFycmF5KCk7CiAKICAgICBHTHVpbnQgaWQoKSBjb25zdDsKQEAgLTY3LDEzICs4MiwzNiBAQCBj
bGFzcyBWZXJ0ZXhBcnJheSBmaW5hbCA6IHB1YmxpYyBMYWJlbGVkT2JqZWN0CiAgICAgdm9pZCBz
ZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAmbGFiZWwpIG92ZXJyaWRlOwogICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZnZXRMYWJlbCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgY29uc3QgVmVydGV4
QXR0cmlidXRlICZnZXRWZXJ0ZXhBdHRyaWJ1dGUoc2l6ZV90IGF0dHJpYnV0ZUluZGV4KSBjb25z
dDsKKyAgICBjb25zdCBWZXJ0ZXhCaW5kaW5nICZnZXRWZXJ0ZXhCaW5kaW5nKHNpemVfdCBiaW5k
aW5nSW5kZXgpIGNvbnN0OworICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmZ2V0VmVydGV4QXR0
cmlidXRlKHNpemVfdCBhdHRyaWJJbmRleCkgY29uc3Q7CisgICAgY29uc3QgVmVydGV4QmluZGlu
ZyAmZ2V0QmluZGluZ0Zyb21BdHRyaWJJbmRleChzaXplX3QgYXR0cmliSW5kZXgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbVN0YXRlLmdldEJpbmRpbmdGcm9tQXR0cmliSW5kZXgoYXR0
cmliSW5kZXgpOworICAgIH0KIAogICAgIHZvaWQgZGV0YWNoQnVmZmVyKEdMdWludCBidWZmZXJO
YW1lKTsKICAgICB2b2lkIHNldFZlcnRleEF0dHJpYkRpdmlzb3Ioc2l6ZV90IGluZGV4LCBHTHVp
bnQgZGl2aXNvcik7Ci0gICAgdm9pZCBlbmFibGVBdHRyaWJ1dGUoc2l6ZV90IGF0dHJpYnV0ZUlu
ZGV4LCBib29sIGVuYWJsZWRTdGF0ZSk7Ci0gICAgdm9pZCBzZXRBdHRyaWJ1dGVTdGF0ZShzaXpl
X3QgYXR0cmlidXRlSW5kZXgsIGdsOjpCdWZmZXIgKmJvdW5kQnVmZmVyLCBHTGludCBzaXplLCBH
TGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9ybWFsaXplZCwg
Ym9vbCBwdXJlSW50ZWdlciwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIpOwor
ICAgIHZvaWQgZW5hYmxlQXR0cmlidXRlKHNpemVfdCBhdHRyaWJJbmRleCwgYm9vbCBlbmFibGVk
U3RhdGUpOworICAgIHZvaWQgc2V0QXR0cmlidXRlU3RhdGUoc2l6ZV90IGF0dHJpYkluZGV4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyICpib3VuZEJ1ZmZlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9ybWFsaXpl
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHVyZUludGVnZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpOworICAgIHZvaWQgc2V0VmVydGV4QXR0cmliRm9y
bWF0KHNpemVfdCBhdHRyaWJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9ybWFsaXplZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHB1cmVJbnRlZ2VyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50cHRyIHJlbGF0aXZlT2Zmc2V0KTsKKyAgICB2b2lkIGJpbmRW
ZXJ0ZXhCdWZmZXIoc2l6ZV90IGJpbmRpbmdJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgQnVmZmVyICpib3VuZEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRw
dHIgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSk7Cisg
ICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJCaW5kaW5nKHNpemVfdCBhdHRyaWJJbmRleCwgc2l6ZV90
IGJpbmRpbmdJbmRleCk7CisgICAgdm9pZCBzZXRWZXJ0ZXhCaW5kaW5nRGl2aXNvcihzaXplX3Qg
YmluZGluZ0luZGV4LCBHTHVpbnQgZGl2aXNvcik7CiAKICAgICB2b2lkIHNldEVsZW1lbnRBcnJh
eUJ1ZmZlcihCdWZmZXIgKmJ1ZmZlcik7CiAKQEAgLTgxLDExICsxMTksMTcgQEAgY2xhc3MgVmVy
dGV4QXJyYXkgZmluYWwgOiBwdWJsaWMgTGFiZWxlZE9iamVjdAogICAgIHsKICAgICAgICAgcmV0
dXJuIG1TdGF0ZS5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKTsKICAgICB9Ci0gICAgc2l6ZV90IGdl
dE1heEF0dHJpYnMoKSBjb25zdCB7IHJldHVybiBtU3RhdGUuZ2V0VmVydGV4QXR0cmlidXRlcygp
LnNpemUoKTsgfQorICAgIHNpemVfdCBnZXRNYXhBdHRyaWJzKCkgY29uc3QgeyByZXR1cm4gbVN0
YXRlLmdldE1heEF0dHJpYnMoKTsgfQorICAgIHNpemVfdCBnZXRNYXhCaW5kaW5ncygpIGNvbnN0
IHsgcmV0dXJuIG1TdGF0ZS5nZXRNYXhCaW5kaW5ncygpOyB9CisKICAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxWZXJ0ZXhBdHRyaWJ1dGU+ICZnZXRWZXJ0ZXhBdHRyaWJ1dGVzKCkgY29uc3QKICAgICB7
CiAgICAgICAgIHJldHVybiBtU3RhdGUuZ2V0VmVydGV4QXR0cmlidXRlcygpOwogICAgIH0KKyAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxWZXJ0ZXhCaW5kaW5nPiAmZ2V0VmVydGV4QmluZGluZ3MoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1TdGF0ZS5nZXRWZXJ0ZXhCaW5kaW5ncygpOwor
ICAgIH0KIAogICAgIHJ4OjpWZXJ0ZXhBcnJheUltcGwgKmdldEltcGxlbWVudGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbVZlcnRleEFycmF5OyB9CiAKQEAgLTEwMywxNyArMTQ3LDMyIEBAIGNsYXNz
IFZlcnRleEFycmF5IGZpbmFsIDogcHVibGljIExhYmVsZWRPYmplY3QKICAgICAgICAgRElSVFlf
QklUX0FUVFJJQl8wX1BPSU5URVIgICA9IERJUlRZX0JJVF9BVFRSSUJfTUFYX0VOQUJMRUQsCiAg
ICAgICAgIERJUlRZX0JJVF9BVFRSSUJfTUFYX1BPSU5URVIgPSBESVJUWV9CSVRfQVRUUklCXzBf
UE9JTlRFUiArIGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMsCiAKLSAgICAgICAgLy8gUmVzZXJ2ZSBi
aXRzIGZvciBkaXZpc29ycwotICAgICAgICBESVJUWV9CSVRfQVRUUklCXzBfRElWSVNPUiAgID0g
RElSVFlfQklUX0FUVFJJQl9NQVhfUE9JTlRFUiwKLSAgICAgICAgRElSVFlfQklUX0FUVFJJQl9N
QVhfRElWSVNPUiA9IERJUlRZX0JJVF9BVFRSSUJfMF9ESVZJU09SICsgZ2w6Ok1BWF9WRVJURVhf
QVRUUklCUywKKyAgICAgICAgLy8gUmVzZXJ2ZSBiaXRzIGZvciBjaGFuZ2VzIHRvIFZlcnRleEF0
dHJpYkZvcm1hdAorICAgICAgICBESVJUWV9CSVRfQVRUUklCXzBfRk9STUFUICAgPSBESVJUWV9C
SVRfQVRUUklCX01BWF9QT0lOVEVSLAorICAgICAgICBESVJUWV9CSVRfQVRUUklCX01BWF9GT1JN
QVQgPSBESVJUWV9CSVRfQVRUUklCXzBfRk9STUFUICsgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUywK
KworICAgICAgICAvLyBSZXNlcnZlIGJpdHMgZm9yIGNoYW5nZXMgdG8gVmVydGV4QXR0cmliQmlu
ZGluZworICAgICAgICBESVJUWV9CSVRfQVRUUklCXzBfQklORElORyAgID0gRElSVFlfQklUX0FU
VFJJQl9NQVhfRk9STUFULAorICAgICAgICBESVJUWV9CSVRfQVRUUklCX01BWF9CSU5ESU5HID0g
RElSVFlfQklUX0FUVFJJQl8wX0JJTkRJTkcgKyBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTLAogCi0g
ICAgICAgIERJUlRZX0JJVF9VTktOT1dOID0gRElSVFlfQklUX0FUVFJJQl9NQVhfRElWSVNPUiwK
KyAgICAgICAgLy8gUmVzZXJ2ZSBiaXRzIGZvciBjaGFuZ2VzIHRvIEJpbmRWZXJ0ZXhCdWZmZXIK
KyAgICAgICAgRElSVFlfQklUX0JJTkRJTkdfMF9CVUZGRVIgICA9IERJUlRZX0JJVF9BVFRSSUJf
TUFYX0JJTkRJTkcsCisgICAgICAgIERJUlRZX0JJVF9CSU5ESU5HX01BWF9CVUZGRVIgPSBESVJU
WV9CSVRfQklORElOR18wX0JVRkZFUiArIGdsOjpNQVhfVkVSVEVYX0FUVFJJQl9CSU5ESU5HUywK
KworICAgICAgICAvLyBSZXNlcnZlIGJpdHMgZm9yIGJpbmRpbmcgZGl2aXNvcnMKKyAgICAgICAg
RElSVFlfQklUX0JJTkRJTkdfMF9ESVZJU09SID0gRElSVFlfQklUX0JJTkRJTkdfTUFYX0JVRkZF
UiwKKyAgICAgICAgRElSVFlfQklUX0JJTkRJTkdfTUFYX0RJVklTT1IgPQorICAgICAgICAgICAg
RElSVFlfQklUX0JJTkRJTkdfMF9ESVZJU09SICsgZ2w6Ok1BWF9WRVJURVhfQVRUUklCX0JJTkRJ
TkdTLAorCisgICAgICAgIERJUlRZX0JJVF9VTktOT1dOID0gRElSVFlfQklUX0JJTkRJTkdfTUFY
X0RJVklTT1IsCiAgICAgICAgIERJUlRZX0JJVF9NQVggICAgID0gRElSVFlfQklUX1VOS05PV04s
CiAgICAgfTsKIAogICAgIHR5cGVkZWYgc3RkOjpiaXRzZXQ8RElSVFlfQklUX01BWD4gRGlydHlC
aXRzOwogCi0gICAgdm9pZCBzeW5jSW1wbFN0YXRlKCk7CisgICAgc3RhdGljIHNpemVfdCBHZXRB
dHRyaWJJbmRleCh1bnNpZ25lZCBsb25nIGRpcnR5Qml0KTsKKworICAgIHZvaWQgc3luY0ltcGxT
dGF0ZShjb25zdCBDb250ZXh0ICpjb250ZXh0KTsKICAgICBib29sIGhhc0FueURpcnR5Qml0KCkg
Y29uc3QgeyByZXR1cm4gbURpcnR5Qml0cy5hbnkoKTsgfQogCiAgIHByaXZhdGU6CkBAIC0xMjUs
NiArMTg0LDYgQEAgY2xhc3MgVmVydGV4QXJyYXkgZmluYWwgOiBwdWJsaWMgTGFiZWxlZE9iamVj
dAogICAgIHJ4OjpWZXJ0ZXhBcnJheUltcGwgKm1WZXJ0ZXhBcnJheTsKIH07CiAKLX0KK30gIC8v
IG5hbWVzcGFjZSBnbAogCiAjZW5kaWYgLy8gTElCQU5HTEVfVkVSVEVYQVJSQVlfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJ0ZXhBcnJheV91
bml0dGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVydGV4
QXJyYXlfdW5pdHRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkOWEwOWJiMjcyMTM2MTZlZjQxZTFlZDRj
OTNkOTkyNzFhMDg1MTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvVmVydGV4QXJyYXlfdW5pdHRlc3QuY3BwCkBAIC0wLDAgKzEsNTkgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisvLyBVbml0IHRlc3RzIGZvciBWZXJ0ZXhBcnJheSBhbmQgcmVsYXRlZCBjbGFz
c2VzLgorLy8KKworI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCisjaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKKworI2luY2x1ZGUgImNvbW1vbi9iaXRzZXRfdXRpbHMuaCIKKyNpbmNsdWRlICJjb21t
b24vdXRpbGl0aWVzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvVmVydGV4QXJyYXkuaCIKKwordXNp
bmcgbmFtZXNwYWNlIGdsOworCisvLyBUZXN0cyB0aGF0IGZ1bmN0aW9uIEdldEF0dHJpYkluZGV4
IGNvbXB1dGVzIHRoZSBpbmRleCBwcm9wZXJseS4KK1RFU1QoVmVydGV4QXJyYXlUZXN0LCBWZXJp
ZnlHZXRBdHRyaWJJbmRleCkKK3sKKyAgICBWZXJ0ZXhBcnJheTo6RGlydHlCaXRzIGRpcnR5Qml0
czsKKyAgICBzaXplX3QgYml0c1tdID0gezEsIDQsIDksIDE2LCAyNSwgMzYsIDQ5LCA2NCwgODEs
IDkwfTsKKyAgICBpbnQgY291bnQgICAgID0gc2l6ZW9mKGJpdHMpIC8gc2l6ZW9mKHNpemVfdCk7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgIHsKKyAgICAgICAgZGly
dHlCaXRzLnNldChiaXRzW2ldKTsKKyAgICB9CisKKyAgICBmb3IgKHVuc2lnbmVkIGxvbmcgZGly
dHlCaXQgOiBhbmdsZTo6SXRlcmF0ZUJpdFNldChkaXJ0eUJpdHMpKQorICAgIHsKKyAgICAgICAg
c2l6ZV90IGluZGV4ID0gVmVydGV4QXJyYXk6OkdldEF0dHJpYkluZGV4KGRpcnR5Qml0KTsKKyAg
ICAgICAgaWYgKGRpcnR5Qml0IDwgVmVydGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJfTUFYX0VO
QUJMRUQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShkaXJ0eUJpdCAtIFZlcnRl
eEFycmF5OjpESVJUWV9CSVRfQVRUUklCXzBfRU5BQkxFRCwgaW5kZXgpOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UgaWYgKGRpcnR5Qml0IDwgVmVydGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJf
TUFYX1BPSU5URVIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShkaXJ0eUJpdCAt
IFZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRUUklCXzBfUE9JTlRFUiwgaW5kZXgpOworICAgICAg
ICB9CisgICAgICAgIGVsc2UgaWYgKGRpcnR5Qml0IDwgVmVydGV4QXJyYXk6OkRJUlRZX0JJVF9B
VFRSSUJfTUFYX0ZPUk1BVCkKKyAgICAgICAgeworICAgICAgICAgICAgRVhQRUNUX0VRKGRpcnR5
Qml0IC0gVmVydGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJfMF9GT1JNQVQsIGluZGV4KTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIGlmIChkaXJ0eUJpdCA8IFZlcnRleEFycmF5OjpESVJUWV9C
SVRfQVRUUklCX01BWF9CSU5ESU5HKQorICAgICAgICB7CisgICAgICAgICAgICBFWFBFQ1RfRVEo
ZGlydHlCaXQgLSBWZXJ0ZXhBcnJheTo6RElSVFlfQklUX0FUVFJJQl8wX0JJTkRJTkcsIGluZGV4
KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChkaXJ0eUJpdCA8IFZlcnRleEFycmF5OjpE
SVJUWV9CSVRfQklORElOR19NQVhfQlVGRkVSKQorICAgICAgICB7CisgICAgICAgICAgICBFWFBF
Q1RfRVEoZGlydHlCaXQgLSBWZXJ0ZXhBcnJheTo6RElSVFlfQklUX0JJTkRJTkdfMF9CVUZGRVIs
IGluZGV4KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChkaXJ0eUJpdCA8IFZlcnRleEFy
cmF5OjpESVJUWV9CSVRfQklORElOR19NQVhfRElWSVNPUikKKyAgICAgICAgeworICAgICAgICAg
ICAgRVhQRUNUX0VRKGRpcnR5Qml0IC0gVmVydGV4QXJyYXk6OkRJUlRZX0JJVF9CSU5ESU5HXzBf
RElWSVNPUiwgaW5kZXgpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFT
U0VSVF9UUlVFKGZhbHNlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVydGV4QXR0cmlidXRlLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuY3BwCmluZGV4IDEzZDc4ZmQx
M2MxZDdiNTkxNTJjMjUzMzdlMjIyYjYxN2QxYjJjYTcuLjE2MjEwNzVhNjk0OTg1ZDBlYmM5YmNi
MzQ5ZjdlZWMwZDhjYTE2OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuY3BwCkBAIC0zLDcgKzMsNyBAQAogLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCi0vLyBJbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgc3RhdGUgY2xhc3MgZm9yIG1hbmFuZ2luZyBHTEVTIDMgVmVydGV4
IEFycmF5IE9iamVjdHMuCisvLyBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3RhdGUgY2xhc3NlcyBm
b3IgbWFuYW5naW5nIEdMRVMgMy4xIFZlcnRleCBBcnJheSBPYmplY3RzLgogLy8KIAogI2luY2x1
ZGUgImxpYkFOR0xFL1ZlcnRleEF0dHJpYnV0ZS5oIgpAQCAtMTEsMTggKzExLDc0IEBACiBuYW1l
c3BhY2UgZ2wKIHsKIAotVmVydGV4QXR0cmlidXRlOjpWZXJ0ZXhBdHRyaWJ1dGUoKQorLy8gW09w
ZW5HTCBFUyAzLjFdIChOb3ZlbWJlciAzLCAyMDE2KSBTZWN0aW9uIDIwIFBhZ2UgMzYxCisvLyBU
YWJsZSAyMC4yOiBWZXJ0ZXggQXJyYXkgT2JqZWN0IFN0YXRlCitWZXJ0ZXhCaW5kaW5nOjpWZXJ0
ZXhCaW5kaW5nKCkgOiBzdHJpZGUoMTZ1KSwgZGl2aXNvcigwKSwgb2Zmc2V0KDApCit7Cit9CisK
K1ZlcnRleEJpbmRpbmc6OlZlcnRleEJpbmRpbmcoVmVydGV4QmluZGluZyAmJmJpbmRpbmcpCit7
CisgICAgKnRoaXMgPSBzdGQ6Om1vdmUoYmluZGluZyk7Cit9CisKK1ZlcnRleEJpbmRpbmcgJlZl
cnRleEJpbmRpbmc6Om9wZXJhdG9yPShWZXJ0ZXhCaW5kaW5nICYmYmluZGluZykKK3sKKyAgICBp
ZiAodGhpcyAhPSAmYmluZGluZykKKyAgICB7CisgICAgICAgIHN0cmlkZSAgPSBiaW5kaW5nLnN0
cmlkZTsKKyAgICAgICAgZGl2aXNvciA9IGJpbmRpbmcuZGl2aXNvcjsKKyAgICAgICAgb2Zmc2V0
ICA9IGJpbmRpbmcub2Zmc2V0OworCisgICAgICAgIGJ1ZmZlci5zZXQoYmluZGluZy5idWZmZXIu
Z2V0KCkpOworICAgICAgICBiaW5kaW5nLmJ1ZmZlci5zZXQobnVsbHB0cik7CisgICAgfQorICAg
IHJldHVybiAqdGhpczsKK30KKworVmVydGV4QXR0cmlidXRlOjpWZXJ0ZXhBdHRyaWJ1dGUoR0x1
aW50IGJpbmRpbmdJbmRleCkKICAgICA6IGVuYWJsZWQoZmFsc2UpLAogICAgICAgdHlwZShHTF9G
TE9BVCksCi0gICAgICBzaXplKDQpLAorICAgICAgc2l6ZSg0dSksCiAgICAgICBub3JtYWxpemVk
KGZhbHNlKSwKICAgICAgIHB1cmVJbnRlZ2VyKGZhbHNlKSwKLSAgICAgIHN0cmlkZSgwKSwKLSAg
ICAgIHBvaW50ZXIoTlVMTCksCi0gICAgICBkaXZpc29yKDApCisgICAgICBwb2ludGVyKG51bGxw
dHIpLAorICAgICAgcmVsYXRpdmVPZmZzZXQoMCksCisgICAgICB2ZXJ0ZXhBdHRyaWJBcnJheVN0
cmlkZSgwKSwKKyAgICAgIGJpbmRpbmdJbmRleChiaW5kaW5nSW5kZXgpCiB7CiB9CiAKK1ZlcnRl
eEF0dHJpYnV0ZTo6VmVydGV4QXR0cmlidXRlKFZlcnRleEF0dHJpYnV0ZSAmJmF0dHJpYikKKyAg
ICA6IGVuYWJsZWQoYXR0cmliLmVuYWJsZWQpLAorICAgICAgdHlwZShhdHRyaWIudHlwZSksCisg
ICAgICBzaXplKGF0dHJpYi5zaXplKSwKKyAgICAgIG5vcm1hbGl6ZWQoYXR0cmliLm5vcm1hbGl6
ZWQpLAorICAgICAgcHVyZUludGVnZXIoYXR0cmliLnB1cmVJbnRlZ2VyKSwKKyAgICAgIHBvaW50
ZXIoYXR0cmliLnBvaW50ZXIpLAorICAgICAgcmVsYXRpdmVPZmZzZXQoYXR0cmliLnJlbGF0aXZl
T2Zmc2V0KSwKKyAgICAgIHZlcnRleEF0dHJpYkFycmF5U3RyaWRlKGF0dHJpYi52ZXJ0ZXhBdHRy
aWJBcnJheVN0cmlkZSksCisgICAgICBiaW5kaW5nSW5kZXgoYXR0cmliLmJpbmRpbmdJbmRleCkK
K3sKK30KKworVmVydGV4QXR0cmlidXRlICZWZXJ0ZXhBdHRyaWJ1dGU6Om9wZXJhdG9yPShWZXJ0
ZXhBdHRyaWJ1dGUgJiZhdHRyaWIpCit7CisgICAgaWYgKHRoaXMgIT0gJmF0dHJpYikKKyAgICB7
CisgICAgICAgIGVuYWJsZWQgICAgICAgICAgICAgICAgID0gYXR0cmliLmVuYWJsZWQ7CisgICAg
ICAgIHR5cGUgICAgICAgICAgICAgICAgICAgID0gYXR0cmliLnR5cGU7CisgICAgICAgIHNpemUg
ICAgICAgICAgICAgICAgICAgID0gYXR0cmliLnNpemU7CisgICAgICAgIG5vcm1hbGl6ZWQgICAg
ICAgICAgICAgID0gYXR0cmliLm5vcm1hbGl6ZWQ7CisgICAgICAgIHB1cmVJbnRlZ2VyICAgICAg
ICAgICAgID0gYXR0cmliLnB1cmVJbnRlZ2VyOworICAgICAgICBwb2ludGVyICAgICAgICAgICAg
ICAgICA9IGF0dHJpYi5wb2ludGVyOworICAgICAgICByZWxhdGl2ZU9mZnNldCAgICAgICAgICA9
IGF0dHJpYi5yZWxhdGl2ZU9mZnNldDsKKyAgICAgICAgdmVydGV4QXR0cmliQXJyYXlTdHJpZGUg
PSBhdHRyaWIudmVydGV4QXR0cmliQXJyYXlTdHJpZGU7CisgICAgICAgIGJpbmRpbmdJbmRleCAg
ICAgICAgICAgID0gYXR0cmliLmJpbmRpbmdJbmRleDsKKyAgICB9CisgICAgcmV0dXJuICp0aGlz
OworfQorCiBzaXplX3QgQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVR5cGVTaXplKGNvbnN0IFZlcnRl
eEF0dHJpYnV0ZSYgYXR0cmliKQogewogICAgIEdMdWludCBzaXplID0gYXR0cmliLnNpemU7CkBA
IC00MywzMiArOTksMzcgQEAgc2l6ZV90IENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVUeXBlU2l6ZShj
b25zdCBWZXJ0ZXhBdHRyaWJ1dGUmIGF0dHJpYikKICAgICB9CiB9CiAKLXNpemVfdCBDb21wdXRl
VmVydGV4QXR0cmlidXRlU3RyaWRlKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSYgYXR0cmliKQorc2l6
ZV90IENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJpZGUoY29uc3QgVmVydGV4QXR0cmlidXRlICZh
dHRyaWIsIGNvbnN0IFZlcnRleEJpbmRpbmcgJmJpbmRpbmcpCiB7Ci0gICAgaWYgKCFhdHRyaWIu
ZW5hYmxlZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAxNjsKLSAgICB9Ci0gICAgcmV0dXJuIGF0
dHJpYi5zdHJpZGUgPyBhdHRyaWIuc3RyaWRlIDogQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVR5cGVT
aXplKGF0dHJpYik7CisgICAgLy8gSW4gRVMgMy4xLCBWZXJ0ZXhBdHRyaWJQb2ludGVyIHdpbGwg
c3RvcmUgdGhlIHR5cGUgc2l6ZSBpbiB0aGUgYmluZGluZyBzdHJpZGUuCisgICAgLy8gSGVuY2Us
IHJlbmRlcmluZyBhbHdheXMgdXNlcyB0aGUgYmluZGluZydzIHN0cmlkZS4KKyAgICByZXR1cm4g
YXR0cmliLmVuYWJsZWQgPyBiaW5kaW5nLnN0cmlkZSA6IDE2dTsKK30KKworLy8gV2FybmluZzog
eW91IHNob3VsZCBlbnN1cmUgYmluZGluZyByZWFsbHkgbWF0Y2hlcyBhdHRyaWIuYmluZGluZ0lu
ZGV4IGJlZm9yZSB1c2luZyB0aGlzIGZ1bmN0aW9uLgorR0xpbnRwdHIgQ29tcHV0ZVZlcnRleEF0
dHJpYnV0ZU9mZnNldChjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgY29uc3QgVmVydGV4
QmluZGluZyAmYmluZGluZykKK3sKKyAgICByZXR1cm4gYXR0cmliLnJlbGF0aXZlT2Zmc2V0ICsg
YmluZGluZy5vZmZzZXQ7CiB9CiAKLXNpemVfdCBDb21wdXRlVmVydGV4QXR0cmlidXRlRWxlbWVu
dENvdW50KGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRyYXdDb3VudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnN0YW5jZUNvdW50KQorc2l6ZV90
IENvbXB1dGVWZXJ0ZXhCaW5kaW5nRWxlbWVudENvdW50KGNvbnN0IFZlcnRleEJpbmRpbmcgJmJp
bmRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRy
YXdDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aW5zdGFuY2VDb3VudCkKIHsKICAgICAvLyBGb3IgaW5zdGFuY2VkIHJlbmRlcmluZywgd2UgZHJh
dyAiaW5zdGFuY2VEcmF3Q291bnQiIHNldHMgb2YgInZlcnRleERyYXdDb3VudCIgdmVydGljZXMu
CiAgICAgLy8KICAgICAvLyBBIHZlcnRleCBhdHRyaWJ1dGUgd2l0aCBhIHBvc2l0aXZlIGRpdmlz
b3IgbG9hZHMgb25lIGluc3RhbmNlZCB2ZXJ0ZXggZm9yIGV2ZXJ5IHNldCBvZgogICAgIC8vIG5v
bi1pbnN0YW5jZWQgdmVydGljZXMsIGFuZCB0aGUgaW5zdGFuY2VkIHZlcnRleCBpbmRleCBhZHZh
bmNlcyBvbmNlIGV2ZXJ5ICJtRGl2aXNvciIKICAgICAvLyBpbnN0YW5jZXMuCi0gICAgaWYgKGlu
c3RhbmNlQ291bnQgPiAwICYmIGF0dHJpYi5kaXZpc29yID4gMCkKKyAgICBpZiAoaW5zdGFuY2VD
b3VudCA+IDAgJiYgYmluZGluZy5kaXZpc29yID4gMCkKICAgICB7CiAgICAgICAgIC8vIFdoZW4g
aW5zdGFuY2VEcmF3Q291bnQgaXMgbm90IGEgbXVsdGlwbGUgYXR0cmliLmRpdmlzb3IsIHRoZSBk
aXZpc2lvbiBtdXN0IHJvdW5kIHVwLgogICAgICAgICAvLyBGb3IgaW5zdGFuY2UsIHdpdGggNSBu
b24taW5zdGFuY2VkIHZlcnRpY2VzIGFuZCBhIGRpdmlzb3IgZXF1YWwgdG8gMywgd2UgbmVlZCAy
IGluc3RhbmNlZAogICAgICAgICAvLyB2ZXJ0aWNlcy4KLSAgICAgICAgcmV0dXJuIChpbnN0YW5j
ZUNvdW50ICsgYXR0cmliLmRpdmlzb3IgLSAxdSkgLyBhdHRyaWIuZGl2aXNvcjsKKyAgICAgICAg
cmV0dXJuIChpbnN0YW5jZUNvdW50ICsgYmluZGluZy5kaXZpc29yIC0gMXUpIC8gYmluZGluZy5k
aXZpc29yOwogICAgIH0KIAogICAgIHJldHVybiBkcmF3Q291bnQ7CiB9Ci19CisKK30gIC8vIG5h
bWVzcGFjZSBnbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL1ZlcnRleEF0dHJpYnV0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL1ZlcnRleEF0dHJpYnV0ZS5oCmluZGV4IGE4Y2M4NTczYjM1MzQ4Yjg4YzFkZDcwNjM4YmQ0
Mzk4YmNkOGViMzMuLjQyMDhiYTc0Y2JmOTVkOTNiNmY2Y2EzZTY3ZDY2ZmM5NjU2NDIzNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJ0ZXhBdHRy
aWJ1dGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVydGV4
QXR0cmlidXRlLmgKQEAgLTMsNyArMyw3IEBACiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgogLy8KLS8vIEhlbHBlciBzdHJ1Y3R1cmUgZGVzY3JpYmluZyBh
IHNpbmdsZSB2ZXJ0ZXggYXR0cmlidXRlCisvLyBIZWxwZXIgc3RydWN0dXJlcyBhYm91dCBHZW5l
cmljIFZlcnRleCBBdHRyaWJ1dGUuCiAvLwogCiAjaWZuZGVmIExJQkFOR0xFX1ZFUlRFWEFUVFJJ
QlVURV9IXwpAQCAtMTMsMzcgKzEzLDYyIEBACiAKIG5hbWVzcGFjZSBnbAogeworY2xhc3MgVmVy
dGV4QXJyYXk7CiAKLXN0cnVjdCBWZXJ0ZXhBdHRyaWJ1dGUKKy8vCisvLyBJbXBsZW1lbnRhdGlv
biBvZiBHZW5lcmljIFZlcnRleCBBdHRyaWJ1dGUgQmluZGluZ3MgZm9yIEVTMy4xCisvLworc3Ry
dWN0IFZlcnRleEJpbmRpbmcgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgICBWZXJ0
ZXhCaW5kaW5nKCk7CisgICAgZXhwbGljaXQgVmVydGV4QmluZGluZyhWZXJ0ZXhCaW5kaW5nICYm
YmluZGluZyk7CisgICAgVmVydGV4QmluZGluZyAmb3BlcmF0b3I9KFZlcnRleEJpbmRpbmcgJiZi
aW5kaW5nKTsKKworICAgIEdMdWludCBzdHJpZGU7CisgICAgR0x1aW50IGRpdmlzb3I7CisgICAg
R0xpbnRwdHIgb2Zmc2V0OworCisgICAgQmluZGluZ1BvaW50ZXI8QnVmZmVyPiBidWZmZXI7Cit9
OworCisvLworLy8gSW1wbGVtZW50YXRpb24gb2YgR2VuZXJpYyBWZXJ0ZXggQXR0cmlidXRlcyBm
b3IgRVMzLjEKKy8vCitzdHJ1Y3QgVmVydGV4QXR0cmlidXRlIGZpbmFsIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCiB7Ci0gICAgYm9vbCBlbmFibGVkOyAvLyBGcm9tIGdsRW5hYmxlL0Rpc2FibGVWZXJ0
ZXhBdHRyaWJBcnJheQorICAgIGV4cGxpY2l0IFZlcnRleEF0dHJpYnV0ZShHTHVpbnQgYmluZGlu
Z0luZGV4KTsKKyAgICBleHBsaWNpdCBWZXJ0ZXhBdHRyaWJ1dGUoVmVydGV4QXR0cmlidXRlICYm
YXR0cmliKTsKKyAgICBWZXJ0ZXhBdHRyaWJ1dGUgJm9wZXJhdG9yPShWZXJ0ZXhBdHRyaWJ1dGUg
JiZhdHRyaWIpOwogCisgICAgYm9vbCBlbmFibGVkOyAgLy8gRm9yIGdsRW5hYmxlL0Rpc2FibGVW
ZXJ0ZXhBdHRyaWJBcnJheQogICAgIEdMZW51bSB0eXBlOwogICAgIEdMdWludCBzaXplOwogICAg
IGJvb2wgbm9ybWFsaXplZDsKICAgICBib29sIHB1cmVJbnRlZ2VyOwotICAgIEdMdWludCBzdHJp
ZGU7IC8vIDAgbWVhbnMgbmF0dXJhbCBzdHJpZGUKIAotICAgIHVuaW9uCi0gICAgewotICAgICAg
ICBjb25zdCBHTHZvaWQgKnBvaW50ZXI7Ci0gICAgICAgIEdMaW50cHRyIG9mZnNldDsKLSAgICB9
OwotICAgIEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gYnVmZmVyOyAvLyBDYXB0dXJlZCB3aGVuIGds
VmVydGV4QXR0cmliUG9pbnRlciBpcyBjYWxsZWQuCisgICAgY29uc3QgR0x2b2lkICpwb2ludGVy
OworICAgIEdMaW50cHRyIHJlbGF0aXZlT2Zmc2V0OwogCi0gICAgR0x1aW50IGRpdmlzb3I7Ci0K
LSAgICBWZXJ0ZXhBdHRyaWJ1dGUoKTsKKyAgICBHTHVpbnQgdmVydGV4QXR0cmliQXJyYXlTdHJp
ZGU7ICAvLyBPTkxZIGZvciBxdWVyaWVzIG9mIFZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFCisg
ICAgR0x1aW50IGJpbmRpbmdJbmRleDsKIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWZXJ0
ZXhBdHRyaWJ1dGUgJmEsIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYik7CiBib29sIG9wZXJhdG9y
IT0oY29uc3QgVmVydGV4QXR0cmlidXRlICZhLCBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmIpOwor
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFZlcnRleEJpbmRpbmcgJmEsIGNvbnN0IFZlcnRleEJpbmRp
bmcgJmIpOworYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZlcnRleEJpbmRpbmcgJmEsIGNvbnN0IFZl
cnRleEJpbmRpbmcgJmIpOworCitzaXplX3QgQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVR5cGVTaXpl
KGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKTsKKworLy8gV2FybmluZzogeW91IHNob3Vs
ZCBlbnN1cmUgYmluZGluZyByZWFsbHkgbWF0Y2hlcyBhdHRyaWIuYmluZGluZ0luZGV4IGJlZm9y
ZSB1c2luZyB0aGlzIGZ1bmN0aW9uLgorc2l6ZV90IENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJp
ZGUoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIsIGNvbnN0IFZlcnRleEJpbmRpbmcgJmJp
bmRpbmcpOworCisvLyBXYXJuaW5nOiB5b3Ugc2hvdWxkIGVuc3VyZSBiaW5kaW5nIHJlYWxseSBt
YXRjaGVzIGF0dHJpYi5iaW5kaW5nSW5kZXggYmVmb3JlIHVzaW5nIHRoaXMgZnVuY3Rpb24uCitH
TGludHB0ciBDb21wdXRlVmVydGV4QXR0cmlidXRlT2Zmc2V0KGNvbnN0IFZlcnRleEF0dHJpYnV0
ZSAmYXR0cmliLCBjb25zdCBWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nKTsKIAotc2l6ZV90IENvbXB1
dGVWZXJ0ZXhBdHRyaWJ1dGVUeXBlU2l6ZShjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUmIGF0dHJpYik7
Ci1zaXplX3QgQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShjb25zdCBWZXJ0ZXhBdHRyaWJ1
dGUmIGF0dHJpYik7Ci1zaXplX3QgQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZUVsZW1lbnRDb3VudChj
b25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBkcmF3Q291bnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5zdGFuY2VDb3VudCk7CitzaXplX3QgQ29tcHV0
ZVZlcnRleEJpbmRpbmdFbGVtZW50Q291bnQoY29uc3QgVmVydGV4QmluZGluZyAmYmluZGluZywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZHJhd0NvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnN0YW5j
ZUNvdW50KTsKIAogc3RydWN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEKIHsKQEAgLTY1
LDcgKzkwLDcgQEAgc3RydWN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEKIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZhLCBjb25zdCBWZXJ0
ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZiKTsKIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZXJ0
ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZhLCBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFs
dWVEYXRhICZiKTsKIAotfQorfSAgLy8gbmFtZXNwYWNlIGdsCiAKICNpbmNsdWRlICJWZXJ0ZXhB
dHRyaWJ1dGUuaW5sIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvVmVydGV4QXR0cmlidXRlLmlubCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuaW5sCmluZGV4IGExZjg4ZjMxNzdmZTAwOGI1NWEx
YjM0NDdmMTk3NDk5MGFkNDZkMTQuLmMwZDI2ODBmOTYzODBmMGRiMjVmZWJiM2U0YmQ5MGZiZWYw
MDlmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9W
ZXJ0ZXhBdHRyaWJ1dGUuaW5sCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuaW5sCkBAIC05LDYgKzksMTkgQEAKIG5hbWVzcGFjZSBnbAog
ewogCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZlcnRleEJpbmRpbmcgJmEsIGNvbnN0
IFZlcnRleEJpbmRpbmcgJmIpCit7CisgICAgcmV0dXJuIGEuc3RyaWRlID09IGIuc3RyaWRlICYm
CisgICAgICAgICAgIGEuZGl2aXNvciA9PSBiLmRpdmlzb3IgJiYKKyAgICAgICAgICAgYS5vZmZz
ZXQgPT0gYi5vZmZzZXQgJiYKKyAgICAgICAgICAgYS5idWZmZXIuZ2V0KCkgPT0gYi5idWZmZXIu
Z2V0KCk7Cit9CisKK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVmVydGV4QmluZGluZyAm
YSwgY29uc3QgVmVydGV4QmluZGluZyAmYikKK3sKKyAgICByZXR1cm4gIShhID09IGIpOworfQor
CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYSwgY29uc3Qg
VmVydGV4QXR0cmlidXRlICZiKQogewogICAgIHJldHVybiBhLmVuYWJsZWQgPT0gYi5lbmFibGVk
ICYmCkBAIC0xNiwxMCArMjksMTAgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWZXJ0
ZXhBdHRyaWJ1dGUgJmEsIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYikKICAgICAgICAgICAgYS5z
aXplID09IGIuc2l6ZSAmJgogICAgICAgICAgICBhLm5vcm1hbGl6ZWQgPT0gYi5ub3JtYWxpemVk
ICYmCiAgICAgICAgICAgIGEucHVyZUludGVnZXIgPT0gYi5wdXJlSW50ZWdlciAmJgotICAgICAg
ICAgICBhLnN0cmlkZSA9PSBiLnN0cmlkZSAmJgogICAgICAgICAgICBhLnBvaW50ZXIgPT0gYi5w
b2ludGVyICYmCi0gICAgICAgICAgIGEuYnVmZmVyLmdldCgpID09IGIuYnVmZmVyLmdldCgpICYm
Ci0gICAgICAgICAgIGEuZGl2aXNvciA9PSBiLmRpdmlzb3I7CisgICAgICAgICAgIGEucmVsYXRp
dmVPZmZzZXQgPT0gYi5yZWxhdGl2ZU9mZnNldCAmJgorICAgICAgICAgICBhLnZlcnRleEF0dHJp
YkFycmF5U3RyaWRlID09IGIudmVydGV4QXR0cmliQXJyYXlTdHJpZGUgJiYKKyAgICAgICAgICAg
YS5iaW5kaW5nSW5kZXggPT0gYi5iaW5kaW5nSW5kZXg7CiB9CiAKIGlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgVmVydGV4QXR0cmlidXRlICZhLCBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmIp
CkBAIC03Myw0ICs4Niw0IEBAIGlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVmVydGV4QXR0
cmliQ3VycmVudFZhbHVlRGF0YSAmYSwgY29uc3QgVmVydGV4QXR0cmliCiAgICAgcmV0dXJuICEo
YSA9PSBiKTsKIH0KIAotfQorfSAgLy8gbmFtZXNwYWNlIGdsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Xb3JrZXJUaHJlYWQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmI1ZDc4OWVmOTM2YTgyZGUzMmJjMzE2YjQzNmRiYTBjM2U1ZGQzNzgKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvV29ya2VyVGhyZWFkLmNw
cApAQCAtMCwwICsxLDE1NyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFdvcmtlclRocmVhZDoKKy8vICAgVGFz
ayBydW5uaW5nIHRocmVhZCBmb3IgQU5HTEUsIHNpbWlsYXIgdG8gYSBUYXNrUnVubmVyIGluIENo
cm9taXVtLgorLy8gICBNaWdodCBiZSBpbXBsZW1lbnRlZCBkaWZmZXJlbnRseSBkZXBlbmRpbmcg
b24gcGxhdGZvcm0uCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvV29ya2VyVGhyZWFkLmgiCisK
K25hbWVzcGFjZSBhbmdsZQoreworCituYW1lc3BhY2UgcHJpdgoreworLy8gU2luZ2xlVGhyZWFk
ZWRXb3JrZXJQb29sIGltcGxlbWVudGF0aW9uLgorU2luZ2xlVGhyZWFkZWRXb3JrZXJQb29sOjpT
aW5nbGVUaHJlYWRlZFdvcmtlclBvb2woc2l6ZV90IG1heFRocmVhZHMpCisgICAgOiBXb3JrZXJU
aHJlYWRQb29sQmFzZShtYXhUaHJlYWRzKQoreworfQorCitTaW5nbGVUaHJlYWRlZFdvcmtlclBv
b2w6On5TaW5nbGVUaHJlYWRlZFdvcmtlclBvb2woKQoreworfQorCitTaW5nbGVUaHJlYWRlZFdh
aXRhYmxlRXZlbnQgU2luZ2xlVGhyZWFkZWRXb3JrZXJQb29sOjpwb3N0V29ya2VyVGFza0ltcGwo
Q2xvc3VyZSAqdGFzaykKK3sKKyAgICAoKnRhc2spKCk7CisgICAgcmV0dXJuIFNpbmdsZVRocmVh
ZGVkV2FpdGFibGVFdmVudChFdmVudFJlc2V0UG9saWN5OjpBdXRvbWF0aWMsIEV2ZW50SW5pdGlh
bFN0YXRlOjpTaWduYWxlZCk7Cit9CisKKy8vIFNpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudCBp
bXBsZW1lbnRhdGlvbi4KK1NpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudDo6U2luZ2xlVGhyZWFk
ZWRXYWl0YWJsZUV2ZW50KCkKKyAgICA6IFNpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudChFdmVu
dFJlc2V0UG9saWN5OjpBdXRvbWF0aWMsIEV2ZW50SW5pdGlhbFN0YXRlOjpOb25TaWduYWxlZCkK
K3sKK30KKworU2luZ2xlVGhyZWFkZWRXYWl0YWJsZUV2ZW50OjpTaW5nbGVUaHJlYWRlZFdhaXRh
YmxlRXZlbnQoRXZlbnRSZXNldFBvbGljeSByZXNldFBvbGljeSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50SW5pdGlhbFN0YXRl
IGluaXRpYWxTdGF0ZSkKKyAgICA6IFdhaXRhYmxlRXZlbnRCYXNlKHJlc2V0UG9saWN5LCBpbml0
aWFsU3RhdGUpCit7Cit9CisKK1NpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudDo6flNpbmdsZVRo
cmVhZGVkV2FpdGFibGVFdmVudCgpCit7Cit9CisKK1NpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVu
dDo6U2luZ2xlVGhyZWFkZWRXYWl0YWJsZUV2ZW50KFNpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVu
dCAmJm90aGVyKQorICAgIDogV2FpdGFibGVFdmVudEJhc2Uoc3RkOjptb3ZlKG90aGVyKSkKK3sK
K30KKworU2luZ2xlVGhyZWFkZWRXYWl0YWJsZUV2ZW50ICZTaW5nbGVUaHJlYWRlZFdhaXRhYmxl
RXZlbnQ6Om9wZXJhdG9yPSgKKyAgICBTaW5nbGVUaHJlYWRlZFdhaXRhYmxlRXZlbnQgJiZvdGhl
cikKK3sKKyAgICByZXR1cm4gY29weUJhc2Uoc3RkOjptb3ZlKG90aGVyKSk7Cit9CisKK3ZvaWQg
U2luZ2xlVGhyZWFkZWRXYWl0YWJsZUV2ZW50OjpyZXNldEltcGwoKQoreworICAgIG1TaWduYWxl
ZCA9IGZhbHNlOworfQorCit2b2lkIFNpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudDo6d2FpdElt
cGwoKQoreworfQorCit2b2lkIFNpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudDo6c2lnbmFsSW1w
bCgpCit7CisgICAgbVNpZ25hbGVkID0gdHJ1ZTsKK30KKworI2lmIChBTkdMRV9TVERfQVNZTkNf
V09SS0VSUyA9PSBBTkdMRV9FTkFCTEVEKQorLy8gQXN5bmNXb3JrZXJQb29sIGltcGxlbWVudGF0
aW9uLgorQXN5bmNXb3JrZXJQb29sOjpBc3luY1dvcmtlclBvb2woc2l6ZV90IG1heFRocmVhZHMp
IDogV29ya2VyVGhyZWFkUG9vbEJhc2UobWF4VGhyZWFkcykKK3sKK30KKworQXN5bmNXb3JrZXJQ
b29sOjp+QXN5bmNXb3JrZXJQb29sKCkKK3sKK30KKworQXN5bmNXYWl0YWJsZUV2ZW50IEFzeW5j
V29ya2VyUG9vbDo6cG9zdFdvcmtlclRhc2tJbXBsKENsb3N1cmUgKnRhc2spCit7CisgICAgYXV0
byBmdXR1cmUgPSBzdGQ6OmFzeW5jKHN0ZDo6bGF1bmNoOjphc3luYywgW3Rhc2tdIHsgKCp0YXNr
KSgpOyB9KTsKKworICAgIEFzeW5jV2FpdGFibGVFdmVudCB3YWl0YWJsZShFdmVudFJlc2V0UG9s
aWN5OjpBdXRvbWF0aWMsIEV2ZW50SW5pdGlhbFN0YXRlOjpOb25TaWduYWxlZCk7CisKKyAgICB3
YWl0YWJsZS5zZXRGdXR1cmUoc3RkOjptb3ZlKGZ1dHVyZSkpOworCisgICAgcmV0dXJuIHdhaXRh
YmxlOworfQorCisvLyBBc3luY1dhaXRhYmxlRXZlbnQgaW1wbGVtZW50YXRpb24uCitBc3luY1dh
aXRhYmxlRXZlbnQ6OkFzeW5jV2FpdGFibGVFdmVudCgpCisgICAgOiBBc3luY1dhaXRhYmxlRXZl
bnQoRXZlbnRSZXNldFBvbGljeTo6QXV0b21hdGljLCBFdmVudEluaXRpYWxTdGF0ZTo6Tm9uU2ln
bmFsZWQpCit7Cit9CisKK0FzeW5jV2FpdGFibGVFdmVudDo6QXN5bmNXYWl0YWJsZUV2ZW50KEV2
ZW50UmVzZXRQb2xpY3kgcmVzZXRQb2xpY3ksIEV2ZW50SW5pdGlhbFN0YXRlIGluaXRpYWxTdGF0
ZSkKKyAgICA6IFdhaXRhYmxlRXZlbnRCYXNlKHJlc2V0UG9saWN5LCBpbml0aWFsU3RhdGUpCit7
Cit9CisKK0FzeW5jV2FpdGFibGVFdmVudDo6fkFzeW5jV2FpdGFibGVFdmVudCgpCit7Cit9CisK
K0FzeW5jV2FpdGFibGVFdmVudDo6QXN5bmNXYWl0YWJsZUV2ZW50KEFzeW5jV2FpdGFibGVFdmVu
dCAmJm90aGVyKQorICAgIDogV2FpdGFibGVFdmVudEJhc2Uoc3RkOjptb3ZlKG90aGVyKSksIG1G
dXR1cmUoc3RkOjptb3ZlKG90aGVyLm1GdXR1cmUpKQoreworfQorCitBc3luY1dhaXRhYmxlRXZl
bnQgJkFzeW5jV2FpdGFibGVFdmVudDo6b3BlcmF0b3I9KEFzeW5jV2FpdGFibGVFdmVudCAmJm90
aGVyKQoreworICAgIHN0ZDo6c3dhcChtRnV0dXJlLCBvdGhlci5tRnV0dXJlKTsKKyAgICByZXR1
cm4gY29weUJhc2Uoc3RkOjptb3ZlKG90aGVyKSk7Cit9CisKK3ZvaWQgQXN5bmNXYWl0YWJsZUV2
ZW50OjpzZXRGdXR1cmUoc3RkOjpmdXR1cmU8dm9pZD4gJiZmdXR1cmUpCit7CisgICAgbUZ1dHVy
ZSA9IHN0ZDo6bW92ZShmdXR1cmUpOworfQorCit2b2lkIEFzeW5jV2FpdGFibGVFdmVudDo6cmVz
ZXRJbXBsKCkKK3sKKyAgICBtU2lnbmFsZWQgPSBmYWxzZTsKKyAgICBtRnV0dXJlICAgPSBzdGQ6
OmZ1dHVyZTx2b2lkPigpOworfQorCit2b2lkIEFzeW5jV2FpdGFibGVFdmVudDo6d2FpdEltcGwo
KQoreworICAgIGlmIChtU2lnbmFsZWQgfHwgIW1GdXR1cmUudmFsaWQoKSkKKyAgICB7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtRnV0dXJlLndhaXQoKTsKKyAgICBzaWduYWwoKTsK
K30KKwordm9pZCBBc3luY1dhaXRhYmxlRXZlbnQ6OnNpZ25hbEltcGwoKQoreworICAgIG1TaWdu
YWxlZCA9IHRydWU7CisKKyAgICBpZiAobVJlc2V0UG9saWN5ID09IEV2ZW50UmVzZXRQb2xpY3k6
OkF1dG9tYXRpYykKKyAgICB7CisgICAgICAgIHJlc2V0KCk7CisgICAgfQorfQorI2VuZGlmICAv
LyAoQU5HTEVfU1REX0FTWU5DX1dPUktFUlMgPT0gQU5HTEVfRU5BQkxFRCkKKworfSAgLy8gbmFt
ZXNwYWNlIHByaXYKKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvV29ya2VyVGhyZWFkLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZi
ODFkY2UyMTJlYWRmZTY5N2EwYzYyMDYzNTNiZWU3YmI1OTBmYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Xb3JrZXJUaHJlYWQuaApAQCAt
MCwwICsxLDI4NCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFdvcmtlclRocmVhZDoKKy8vICAgQXN5Y2hyb25v
dXMgdGFza3MvdGhyZWFkcyBmb3IgQU5HTEUsIHNpbWlsYXIgdG8gYSBUYXNrUnVubmVyIGluIENo
cm9taXVtLgorLy8gICBDYW4gYmUgaW1wbGVtZW50ZWQgYXMgZGlmZmVyZW50IHRhcmdldHMsIGRl
cGVuZGluZyBvbiBwbGF0Zm9ybS4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfV09SS0VSX1RIUkVB
RF9IXworI2RlZmluZSBMSUJBTkdMRV9XT1JLRVJfVEhSRUFEX0hfCisKKyNpbmNsdWRlIDxhcnJh
eT4KKyNpbmNsdWRlIDx2ZWN0b3I+CisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9mZWF0dXJlcy5oIgorCisjaWYgKEFOR0xFX1NURF9BU1lOQ19XT1JLRVJT
ID09IEFOR0xFX0VOQUJMRUQpCisjaW5jbHVkZSA8ZnV0dXJlPgorI2VuZGlmICAvLyAoQU5HTEVf
U1REX0FTWU5DX1dPUktFUlMgPT0gQU5HTEVfRU5BQkxFRCkKKworbmFtZXNwYWNlIGFuZ2xlCit7
CisvLyBJbmRpY2F0ZXMgd2hldGhlciBhIFdhaXRhYmxlRXZlbnQgc2hvdWxkIGF1dG9tYXRpY2Fs
bHkgcmVzZXQgdGhlIGV2ZW50IHN0YXRlIGFmdGVyIGEgc2luZ2xlCisvLyB3YWl0aW5nIHRocmVh
ZCBoYXMgYmVlbiByZWxlYXNlZCBvciByZW1haW4gc2lnbmFsZWQgdW50aWwgcmVzZXQoKSBpcyBt
YW51YWxseSBpbnZva2VkLgorZW51bSBjbGFzcyBFdmVudFJlc2V0UG9saWN5Cit7CisgICAgTWFu
dWFsLAorICAgIEF1dG9tYXRpYworfTsKKworLy8gU3BlY2lmeSB0aGUgaW5pdGlhbCBzdGF0ZSBv
biBjcmVhdGlvbi4KK2VudW0gY2xhc3MgRXZlbnRJbml0aWFsU3RhdGUKK3sKKyAgICBOb25TaWdu
YWxlZCwKKyAgICBTaWduYWxlZAorfTsKKworLy8gQSBjYWxsYmFjayBmdW5jdGlvbiB3aXRoIG5v
IHJldHVybiB2YWx1ZSBhbmQgbm8gYXJndW1lbnRzLgorY2xhc3MgQ2xvc3VyZQoreworICBwdWJs
aWM6CisgICAgdmlydHVhbCB+Q2xvc3VyZSgpICAgICAgICA9IGRlZmF1bHQ7CisgICAgdmlydHVh
bCB2b2lkIG9wZXJhdG9yKCkoKSA9IDA7Cit9OworCituYW1lc3BhY2UgcHJpdgoreworLy8gQW4g
ZXZlbnQgdGhhdCB3ZSBjYW4gd2FpdCBvbiwgdXNlZnVsIGZvciBqb2luaW5nIHdvcmtlciB0aHJl
YWRzLgordGVtcGxhdGUgPHR5cGVuYW1lIEltcGw+CitjbGFzcyBXYWl0YWJsZUV2ZW50QmFzZSA6
IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6CisgICAgV2FpdGFibGVFdmVudEJhc2Uo
RXZlbnRSZXNldFBvbGljeSByZXNldFBvbGljeSwgRXZlbnRJbml0aWFsU3RhdGUgaW5pdGlhbFN0
YXRlKTsKKworICAgIFdhaXRhYmxlRXZlbnRCYXNlKFdhaXRhYmxlRXZlbnRCYXNlICYmb3RoZXIp
OworCisgICAgLy8gUHV0cyB0aGUgZXZlbnQgaW4gdGhlIHVuLXNpZ25hbGVkIHN0YXRlLgorICAg
IHZvaWQgcmVzZXQoKTsKKworICAgIC8vIFdhaXRzIGluZGVmaW5pdGVseSBmb3IgdGhlIGV2ZW50
IHRvIGJlIHNpZ25hbGVkLgorICAgIHZvaWQgd2FpdCgpOworCisgICAgLy8gUHV0cyB0aGUgZXZl
bnQgaW4gdGhlIHNpZ25hbGVkIHN0YXRlLCBjYXVzaW5nIGFueSB0aHJlYWQgYmxvY2tlZCBvbiBX
YWl0IHRvIGJlIHdva2VuIHVwLgorICAgIC8vIFRoZSBldmVudCBzdGF0ZSBpcyByZXNldCB0byBu
b24tc2lnbmFsZWQgYWZ0ZXIgYSB3YWl0aW5nIHRocmVhZCBoYXMgYmVlbiByZWxlYXNlZC4KKyAg
ICB2b2lkIHNpZ25hbCgpOworCisgIHByb3RlY3RlZDoKKyAgICBJbXBsICZjb3B5QmFzZShJbXBs
ICYmb3RoZXIpOworCisgICAgdGVtcGxhdGUgPHNpemVfdCBDb3VudD4KKyAgICBzdGF0aWMgc2l6
ZV90IFdhaXRNYW55QmFzZShzdGQ6OmFycmF5PEltcGwsIENvdW50PiAqd2FpdGFibGVzKTsKKwor
ICAgIEV2ZW50UmVzZXRQb2xpY3kgbVJlc2V0UG9saWN5OworICAgIGJvb2wgbVNpZ25hbGVkOwor
fTsKKwordGVtcGxhdGUgPHR5cGVuYW1lIEltcGw+CitXYWl0YWJsZUV2ZW50QmFzZTxJbXBsPjo6
V2FpdGFibGVFdmVudEJhc2UoRXZlbnRSZXNldFBvbGljeSByZXNldFBvbGljeSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudEluaXRpYWxTdGF0ZSBpbml0
aWFsU3RhdGUpCisgICAgOiBtUmVzZXRQb2xpY3kocmVzZXRQb2xpY3kpLCBtU2lnbmFsZWQoaW5p
dGlhbFN0YXRlID09IEV2ZW50SW5pdGlhbFN0YXRlOjpTaWduYWxlZCkKK3sKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIEltcGw+CitXYWl0YWJsZUV2ZW50QmFzZTxJbXBsPjo6V2FpdGFibGVFdmVu
dEJhc2UoV2FpdGFibGVFdmVudEJhc2UgJiZvdGhlcikKKyAgICA6IG1SZXNldFBvbGljeShvdGhl
ci5tUmVzZXRQb2xpY3kpLCBtU2lnbmFsZWQob3RoZXIubVNpZ25hbGVkKQoreworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgSW1wbD4KK3ZvaWQgV2FpdGFibGVFdmVudEJhc2U8SW1wbD46OnJlc2V0
KCkKK3sKKyAgICBzdGF0aWNfY2FzdDxJbXBsICo+KHRoaXMpLT5yZXNldEltcGwoKTsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIEltcGw+Cit2b2lkIFdhaXRhYmxlRXZlbnRCYXNlPEltcGw+Ojp3
YWl0KCkKK3sKKyAgICBzdGF0aWNfY2FzdDxJbXBsICo+KHRoaXMpLT53YWl0SW1wbCgpOworfQor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW1wbD4KK3ZvaWQgV2FpdGFibGVFdmVudEJhc2U8SW1wbD46
OnNpZ25hbCgpCit7CisgICAgc3RhdGljX2Nhc3Q8SW1wbCAqPih0aGlzKS0+c2lnbmFsSW1wbCgp
OworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW1wbD4KK3RlbXBsYXRlIDxzaXplX3QgQ291bnQ+
CisvLyBzdGF0aWMKK3NpemVfdCBXYWl0YWJsZUV2ZW50QmFzZTxJbXBsPjo6V2FpdE1hbnlCYXNl
KHN0ZDo6YXJyYXk8SW1wbCwgQ291bnQ+ICp3YWl0YWJsZXMpCit7CisgICAgQVNTRVJUKENvdW50
ID4gMCk7CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgQ291bnQ7ICsraW5k
ZXgpCisgICAgeworICAgICAgICAoKndhaXRhYmxlcylbaW5kZXhdLndhaXQoKTsKKyAgICB9CisK
KyAgICByZXR1cm4gMDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEltcGw+CitJbXBsICZXYWl0
YWJsZUV2ZW50QmFzZTxJbXBsPjo6Y29weUJhc2UoSW1wbCAmJm90aGVyKQoreworICAgIHN0ZDo6
c3dhcChtU2lnbmFsZWQsIG90aGVyLm1TaWduYWxlZCk7CisgICAgc3RkOjpzd2FwKG1SZXNldFBv
bGljeSwgb3RoZXIubVJlc2V0UG9saWN5KTsKKyAgICByZXR1cm4gKnN0YXRpY19jYXN0PEltcGwg
Kj4odGhpcyk7Cit9CisKK2NsYXNzIFNpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudCA6IHB1Ymxp
YyBXYWl0YWJsZUV2ZW50QmFzZTxTaW5nbGVUaHJlYWRlZFdhaXRhYmxlRXZlbnQ+Cit7CisgIHB1
YmxpYzoKKyAgICBTaW5nbGVUaHJlYWRlZFdhaXRhYmxlRXZlbnQoKTsKKyAgICBTaW5nbGVUaHJl
YWRlZFdhaXRhYmxlRXZlbnQoRXZlbnRSZXNldFBvbGljeSByZXNldFBvbGljeSwgRXZlbnRJbml0
aWFsU3RhdGUgaW5pdGlhbFN0YXRlKTsKKyAgICB+U2luZ2xlVGhyZWFkZWRXYWl0YWJsZUV2ZW50
KCk7CisKKyAgICBTaW5nbGVUaHJlYWRlZFdhaXRhYmxlRXZlbnQoU2luZ2xlVGhyZWFkZWRXYWl0
YWJsZUV2ZW50ICYmb3RoZXIpOworICAgIFNpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudCAmb3Bl
cmF0b3I9KFNpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudCAmJm90aGVyKTsKKworICAgIHZvaWQg
cmVzZXRJbXBsKCk7CisgICAgdm9pZCB3YWl0SW1wbCgpOworICAgIHZvaWQgc2lnbmFsSW1wbCgp
OworCisgICAgLy8gV2FpdCwgc3luY2hyb25vdXNseSwgb24gbXVsdGlwbGUgZXZlbnRzLgorICAg
IC8vIHJldHVybnMgdGhlIGluZGV4IG9mIGEgV2FpdGFibGVFdmVudCB3aGljaCBoYXMgYmVlbiBz
aWduYWxlZC4KKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IENvdW50PgorICAgIHN0YXRpYyBzaXplX3Qg
V2FpdE1hbnkoc3RkOjphcnJheTxTaW5nbGVUaHJlYWRlZFdhaXRhYmxlRXZlbnQsIENvdW50PiAq
d2FpdGFibGVzKTsKK307CisKK3RlbXBsYXRlIDxzaXplX3QgQ291bnQ+CisvLyBzdGF0aWMKK3Np
emVfdCBTaW5nbGVUaHJlYWRlZFdhaXRhYmxlRXZlbnQ6OldhaXRNYW55KAorICAgIHN0ZDo6YXJy
YXk8U2luZ2xlVGhyZWFkZWRXYWl0YWJsZUV2ZW50LCBDb3VudD4gKndhaXRhYmxlcykKK3sKKyAg
ICByZXR1cm4gV2FpdGFibGVFdmVudEJhc2U8U2luZ2xlVGhyZWFkZWRXYWl0YWJsZUV2ZW50Pjo6
V2FpdE1hbnlCYXNlKHdhaXRhYmxlcyk7Cit9CisKKyNpZiAoQU5HTEVfU1REX0FTWU5DX1dPUktF
UlMgPT0gQU5HTEVfRU5BQkxFRCkKK2NsYXNzIEFzeW5jV2FpdGFibGVFdmVudCA6IHB1YmxpYyBX
YWl0YWJsZUV2ZW50QmFzZTxBc3luY1dhaXRhYmxlRXZlbnQ+Cit7CisgIHB1YmxpYzoKKyAgICBB
c3luY1dhaXRhYmxlRXZlbnQoKTsKKyAgICBBc3luY1dhaXRhYmxlRXZlbnQoRXZlbnRSZXNldFBv
bGljeSByZXNldFBvbGljeSwgRXZlbnRJbml0aWFsU3RhdGUgaW5pdGlhbFN0YXRlKTsKKyAgICB+
QXN5bmNXYWl0YWJsZUV2ZW50KCk7CisKKyAgICBBc3luY1dhaXRhYmxlRXZlbnQoQXN5bmNXYWl0
YWJsZUV2ZW50ICYmb3RoZXIpOworICAgIEFzeW5jV2FpdGFibGVFdmVudCAmb3BlcmF0b3I9KEFz
eW5jV2FpdGFibGVFdmVudCAmJm90aGVyKTsKKworICAgIHZvaWQgcmVzZXRJbXBsKCk7CisgICAg
dm9pZCB3YWl0SW1wbCgpOworICAgIHZvaWQgc2lnbmFsSW1wbCgpOworCisgICAgLy8gV2FpdCwg
c3luY2hyb25vdXNseSwgb24gbXVsdGlwbGUgZXZlbnRzLgorICAgIC8vIHJldHVybnMgdGhlIGlu
ZGV4IG9mIGEgV2FpdGFibGVFdmVudCB3aGljaCBoYXMgYmVlbiBzaWduYWxlZC4KKyAgICB0ZW1w
bGF0ZSA8c2l6ZV90IENvdW50PgorICAgIHN0YXRpYyBzaXplX3QgV2FpdE1hbnkoc3RkOjphcnJh
eTxBc3luY1dhaXRhYmxlRXZlbnQsIENvdW50PiAqd2FpdGFibGVzKTsKKworICBwcml2YXRlOgor
ICAgIGZyaWVuZCBjbGFzcyBBc3luY1dvcmtlclBvb2w7CisgICAgdm9pZCBzZXRGdXR1cmUoc3Rk
OjpmdXR1cmU8dm9pZD4gJiZmdXR1cmUpOworCisgICAgc3RkOjpmdXR1cmU8dm9pZD4gbUZ1dHVy
ZTsKK307CisKK3RlbXBsYXRlIDxzaXplX3QgQ291bnQ+CisvLyBzdGF0aWMKK3NpemVfdCBBc3lu
Y1dhaXRhYmxlRXZlbnQ6OldhaXRNYW55KHN0ZDo6YXJyYXk8QXN5bmNXYWl0YWJsZUV2ZW50LCBD
b3VudD4gKndhaXRhYmxlcykKK3sKKyAgICByZXR1cm4gV2FpdGFibGVFdmVudEJhc2U8QXN5bmNX
YWl0YWJsZUV2ZW50Pjo6V2FpdE1hbnlCYXNlKHdhaXRhYmxlcyk7Cit9CisjZW5kaWYgIC8vIChB
TkdMRV9TVERfQVNZTkNfV09SS0VSUyA9PSBBTkdMRV9FTkFCTEVEKQorCisvLyBUaGUgdHJhaXRz
IGNsYXNzIGFsbG93cyB0aGUgdGhlIHRocmVhZCBwb29sIHRvIHJldHVybiB0aGUgIlR5cGVkIiB3
YWl0YWJsZSBldmVudCBmcm9tIHBvc3RUYXNrLgorLy8gT3RoZXJ3aXNlIHBvc3RUYXNrIHdvdWxk
IGFsd2F5cyB0aGluayBpdCByZXR1cm5zIHRoZSBjdXJyZW50IGFjdGl2ZSB0eXBlLCBzbyB0aGUg
dW5pdCB0ZXN0cworLy8gY291bGQgbm90IHJ1biBvbiBtdWx0aXBsZSB3b3JrZXIgdHlwZXMgaW4g
dGhlIHNhbWUgY29tcGlsYXRpb24uCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW1wbD4KK3N0cnVjdCBX
b3JrZXJUaHJlYWRQb29sVHJhaXRzOworCitjbGFzcyBTaW5nbGVUaHJlYWRlZFdvcmtlclBvb2w7
Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IFdvcmtlclRocmVhZFBvb2xUcmFpdHM8U2luZ2xlVGhyZWFk
ZWRXb3JrZXJQb29sPgoreworICAgIHVzaW5nIFdhaXRhYmxlRXZlbnRUeXBlID0gU2luZ2xlVGhy
ZWFkZWRXYWl0YWJsZUV2ZW50OworfTsKKworI2lmIChBTkdMRV9TVERfQVNZTkNfV09SS0VSUyA9
PSBBTkdMRV9FTkFCTEVEKQorY2xhc3MgQXN5bmNXb3JrZXJQb29sOwordGVtcGxhdGUgPD4KK3N0
cnVjdCBXb3JrZXJUaHJlYWRQb29sVHJhaXRzPEFzeW5jV29ya2VyUG9vbD4KK3sKKyAgICB1c2lu
ZyBXYWl0YWJsZUV2ZW50VHlwZSA9IEFzeW5jV2FpdGFibGVFdmVudDsKK307CisjZW5kaWYgIC8v
IChBTkdMRV9TVERfQVNZTkNfV09SS0VSUyA9PSBBTkdMRV9FTkFCTEVEKQorCisvLyBSZXF1ZXN0
IFdvcmtlclRocmVhZHMgZnJvbSB0aGUgV29ya2VyVGhyZWFkUG9vbC4gRWFjaCBwb29sIGNhbiBr
ZWVwIHdvcmtlciB0aHJlYWRzIGFyb3VuZCBzbworLy8gd2UgYXZvaWQgdGhlIGNvc3RseSBzcGlu
IHVwIGFuZCBzcGluIGRvd24gdGltZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBJbXBsPgorY2xhc3Mg
V29ya2VyVGhyZWFkUG9vbEJhc2UgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgor
ICAgIFdvcmtlclRocmVhZFBvb2xCYXNlKHNpemVfdCBtYXhUaHJlYWRzKTsKKyAgICB+V29ya2Vy
VGhyZWFkUG9vbEJhc2UoKTsKKworICAgIHVzaW5nIFdhaXRhYmxlRXZlbnRUeXBlID0gdHlwZW5h
bWUgV29ya2VyVGhyZWFkUG9vbFRyYWl0czxJbXBsPjo6V2FpdGFibGVFdmVudFR5cGU7CisKKyAg
ICAvLyBSZXR1cm5zIGFuIGV2ZW50IHRvIHdhaXQgb24gZm9yIHRoZSB0YXNrIHRvIGZpbmlzaC4K
KyAgICAvLyBJZiB0aGUgcG9vbCBmYWlscyB0byBjcmVhdGUgdGhlIHRhc2ssIHJldHVybnMgbnVs
bC4KKyAgICBXYWl0YWJsZUV2ZW50VHlwZSBwb3N0V29ya2VyVGFzayhDbG9zdXJlICp0YXNrKTsK
K307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbXBsPgorV29ya2VyVGhyZWFkUG9vbEJhc2U8SW1w
bD46OldvcmtlclRocmVhZFBvb2xCYXNlKHNpemVfdCBtYXhUaHJlYWRzKQoreworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgSW1wbD4KK1dvcmtlclRocmVhZFBvb2xCYXNlPEltcGw+Ojp+V29ya2Vy
VGhyZWFkUG9vbEJhc2UoKQoreworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW1wbD4KK3R5cGVu
YW1lIFdvcmtlclRocmVhZFBvb2xCYXNlPEltcGw+OjpXYWl0YWJsZUV2ZW50VHlwZSBXb3JrZXJU
aHJlYWRQb29sQmFzZTxJbXBsPjo6cG9zdFdvcmtlclRhc2soCisgICAgQ2xvc3VyZSAqdGFzaykK
K3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW1wbCAqPih0aGlzKS0+cG9zdFdvcmtlclRhc2tJ
bXBsKHRhc2spOworfQorCitjbGFzcyBTaW5nbGVUaHJlYWRlZFdvcmtlclBvb2wgOiBwdWJsaWMg
V29ya2VyVGhyZWFkUG9vbEJhc2U8U2luZ2xlVGhyZWFkZWRXb3JrZXJQb29sPgoreworICBwdWJs
aWM6CisgICAgU2luZ2xlVGhyZWFkZWRXb3JrZXJQb29sKHNpemVfdCBtYXhUaHJlYWRzKTsKKyAg
ICB+U2luZ2xlVGhyZWFkZWRXb3JrZXJQb29sKCk7CisKKyAgICBTaW5nbGVUaHJlYWRlZFdhaXRh
YmxlRXZlbnQgcG9zdFdvcmtlclRhc2tJbXBsKENsb3N1cmUgKnRhc2spOworfTsKKworI2lmIChB
TkdMRV9TVERfQVNZTkNfV09SS0VSUyA9PSBBTkdMRV9FTkFCTEVEKQorY2xhc3MgQXN5bmNXb3Jr
ZXJQb29sIDogcHVibGljIFdvcmtlclRocmVhZFBvb2xCYXNlPEFzeW5jV29ya2VyUG9vbD4KK3sK
KyAgcHVibGljOgorICAgIEFzeW5jV29ya2VyUG9vbChzaXplX3QgbWF4VGhyZWFkcyk7CisgICAg
fkFzeW5jV29ya2VyUG9vbCgpOworCisgICAgQXN5bmNXYWl0YWJsZUV2ZW50IHBvc3RXb3JrZXJU
YXNrSW1wbChDbG9zdXJlICp0YXNrKTsKK307CisjZW5kaWYgIC8vIChBTkdMRV9TVERfQVNZTkNf
V09SS0VSUyA9PSBBTkdMRV9FTkFCTEVEKQorCit9ICAvLyBuYW1lc3BhY2UgcHJpdgorCisjaWYg
KEFOR0xFX1NURF9BU1lOQ19XT1JLRVJTID09IEFOR0xFX0VOQUJMRUQpCit1c2luZyBXYWl0YWJs
ZUV2ZW50ICAgID0gcHJpdjo6QXN5bmNXYWl0YWJsZUV2ZW50OwordXNpbmcgV29ya2VyVGhyZWFk
UG9vbCA9IHByaXY6OkFzeW5jV29ya2VyUG9vbDsKKyNlbHNlCit1c2luZyBXYWl0YWJsZUV2ZW50
ICAgID0gcHJpdjo6U2luZ2xlVGhyZWFkZWRXYWl0YWJsZUV2ZW50OwordXNpbmcgV29ya2VyVGhy
ZWFkUG9vbCA9IHByaXY6OlNpbmdsZVRocmVhZGVkV29ya2VyUG9vbDsKKyNlbmRpZiAgLy8gKEFO
R0xFX1NURF9BU1lOQ19XT1JLRVJTID09IEFOR0xFX0VOQUJMRUQpCisKK30gIC8vIG5hbWVzcGFj
ZSBhbmdsZQorCisjZW5kaWYgIC8vIExJQkFOR0xFX1dPUktFUl9USFJFQURfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Xb3JrZXJUaHJlYWRfdW5p
dHRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1dvcmtlclRo
cmVhZF91bml0dGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTViNTY2ZDU4ODdkMGExYjdlZmI5MTM0OGFj
Y2JiMTFhMzdhMTQ5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9Xb3JrZXJUaHJlYWRfdW5pdHRlc3QuY3BwCkBAIC0wLDAgKzEsNTkgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisvLyBXb3JrZXJUaHJlYWRfdW5pdHRlc3Q6CisvLyAgIFNpbXBsZSB0ZXN0cyBm
b3IgdGhlIHdvcmtlciB0aHJlYWQgY2xhc3MuCisKKyNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgorCisjaW5jbHVkZSAibGliQU5HTEUvV29ya2VyVGhyZWFkLmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPgorY2xhc3MgV29ya2VyUG9vbFRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0Cit7
CisgIHB1YmxpYzoKKyAgICBUIHdvcmtlclBvb2wgPSB7NH07Cit9OworCisjaWYgKEFOR0xFX1NU
RF9BU1lOQ19XT1JLRVJTID09IEFOR0xFX0VOQUJMRUQpCit1c2luZyBXb3JrZXJQb29sVHlwZXMg
PSA6OnRlc3Rpbmc6OlR5cGVzPHByaXY6OkFzeW5jV29ya2VyUG9vbCwgcHJpdjo6U2luZ2xlVGhy
ZWFkZWRXb3JrZXJQb29sPjsKKyNlbHNlCit1c2luZyBXb3JrZXJQb29sVHlwZXMgPSA6OnRlc3Rp
bmc6OlR5cGVzPHByaXY6OlNpbmdsZVRocmVhZGVkV29ya2VyUG9vbD47CisjZW5kaWYgIC8vIChB
TkdMRV9TVERfQVNZTkNfV09SS0VSUyA9PSBBTkdMRV9FTkFCTEVEKQorCitUWVBFRF9URVNUX0NB
U0UoV29ya2VyUG9vbFRlc3QsIFdvcmtlclBvb2xUeXBlcyk7CisKKy8vIFRlc3RzIHNpbXBsZSB3
b3JrZXIgcG9vbCBhcHBsaWNhdGlvbi4KK1RZUEVEX1RFU1QoV29ya2VyUG9vbFRlc3QsIFNpbXBs
ZVRhc2spCit7CisgICAgY2xhc3MgVGVzdFRhc2sgOiBwdWJsaWMgQ2xvc3VyZQorICAgIHsKKyAg
ICAgIHB1YmxpYzoKKyAgICAgICAgdm9pZCBvcGVyYXRvcigpKCkgb3ZlcnJpZGUgeyBmaXJlZCA9
IHRydWU7IH0KKworICAgICAgICBib29sIGZpcmVkID0gZmFsc2U7CisgICAgfTsKKworICAgIHN0
ZDo6YXJyYXk8VGVzdFRhc2ssIDQ+IHRhc2tzOworICAgIHN0ZDo6YXJyYXk8dHlwZW5hbWUgVHlw
ZVBhcmFtOjpXYWl0YWJsZUV2ZW50VHlwZSwgND4gd2FpdGFibGVzID0ge3sKKyAgICAgICAgdGhp
cy0+d29ya2VyUG9vbC5wb3N0V29ya2VyVGFzaygmdGFza3NbMF0pLCB0aGlzLT53b3JrZXJQb29s
LnBvc3RXb3JrZXJUYXNrKCZ0YXNrc1sxXSksCisgICAgICAgIHRoaXMtPndvcmtlclBvb2wucG9z
dFdvcmtlclRhc2soJnRhc2tzWzJdKSwgdGhpcy0+d29ya2VyUG9vbC5wb3N0V29ya2VyVGFzaygm
dGFza3NbM10pLAorICAgIH19OworCisgICAgVHlwZVBhcmFtOjpXYWl0YWJsZUV2ZW50VHlwZTo6
V2FpdE1hbnkoJndhaXRhYmxlcyk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8gJnRhc2sgOiB0YXNr
cykKKyAgICB7CisgICAgICAgIEVYUEVDVF9UUlVFKHRhc2suZmlyZWQpOworICAgIH0KK30KKwor
fSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL2FuZ2xldHlwZXMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL2FuZ2xldHlwZXMuY3BwCmluZGV4IDBjZDY5OTYzZThmNDFlZGI4ZDgw
NGM2MTA4YzczNzBkM2EyYjFjMjkuLjcwYTNhZTY0NWJlN2RiMDU0YTA1MTA5YjI2NGJkYjVkOTYz
YWVjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9h
bmdsZXR5cGVzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
YW5nbGV0eXBlcy5jcHAKQEAgLTQ5LDcgKzQ5LDggQEAgU2FtcGxlclN0YXRlOjpTYW1wbGVyU3Rh
dGUoKQogICAgICAgbWluTG9kKC0xMDAwLjBmKSwKICAgICAgIG1heExvZCgxMDAwLjBmKSwKICAg
ICAgIGNvbXBhcmVNb2RlKEdMX05PTkUpLAotICAgICAgY29tcGFyZUZ1bmMoR0xfTEVRVUFMKQor
ICAgICAgY29tcGFyZUZ1bmMoR0xfTEVRVUFMKSwKKyAgICAgIHNSR0JEZWNvZGUoR0xfREVDT0RF
X0VYVCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL2FuZ2xldHlwZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9hbmdsZXR5cGVzLmgKaW5kZXggMzQ5MGIwM2I0Y2E1YTlhOTVkMzhhMjg2MGNhMDAyYjMxY2M0
YjBiNy4uNTRkZDkxMjc2ZjI4MDk2ZjAyMzQ1OGI1NWU5NjZlY2I1YzhlNjZhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2FuZ2xldHlwZXMuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvYW5nbGV0eXBlcy5oCkBAIC0y
MCwxMCArMjAsNiBAQAogbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBCdWZmZXI7Ci1jbGFzcyBTdGF0
ZTsKLWNsYXNzIFByb2dyYW07Ci1zdHJ1Y3QgVmVydGV4QXR0cmlidXRlOwotc3RydWN0IFZlcnRl
eEF0dHJpYkN1cnJlbnRWYWx1ZURhdGE7CiAKIGVudW0gUHJpbWl0aXZlVHlwZQogewpAQCAtNDIs
NyArMzgsOCBAQCBQcmltaXRpdmVUeXBlIEdldFByaW1pdGl2ZVR5cGUoR0xlbnVtIGRyYXdNb2Rl
KTsKIGVudW0gU2FtcGxlclR5cGUKIHsKICAgICBTQU1QTEVSX1BJWEVMLAotICAgIFNBTVBMRVJf
VkVSVEVYCisgICAgU0FNUExFUl9WRVJURVgsCisgICAgU0FNUExFUl9DT01QVVRFCiB9OwogCiBz
dHJ1Y3QgUmVjdGFuZ2xlCkBAIC0xNzEsNiArMTY4LDI3IEBAIHN0cnVjdCBEZXB0aFN0ZW5jaWxT
dGF0ZQogICAgIEdMdWludCBzdGVuY2lsQmFja1dyaXRlbWFzazsKIH07CiAKK3N0cnVjdCBEcmF3
QXJyYXlzSW5kaXJlY3RDb21tYW5kCit7CisgICAgR0x1aW50IGNvdW50OworICAgIEdMdWludCBp
bnN0YW5jZUNvdW50OworICAgIEdMdWludCBmaXJzdDsKKyAgICBHTHVpbnQgYmFzZUluc3RhbmNl
OworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKERyYXdBcnJheXNJbmRpcmVjdENvbW1hbmQpID09
IDE2LAorICAgICAgICAgICAgICAiVW5leHBlY3RlZCBzaXplIG9mIERyYXdBcnJheXNJbmRpcmVj
dENvbW1hbmQiKTsKKworc3RydWN0IERyYXdFbGVtZW50c0luZGlyZWN0Q29tbWFuZAoreworICAg
IEdMdWludCBjb3VudDsKKyAgICBHTHVpbnQgcHJpbUNvdW50OworICAgIEdMdWludCBmaXJzdElu
ZGV4OworICAgIEdMaW50IGJhc2VWZXJ0ZXg7CisgICAgR0x1aW50IGJhc2VJbnN0YW5jZTsKK307
CitzdGF0aWNfYXNzZXJ0KHNpemVvZihEcmF3RWxlbWVudHNJbmRpcmVjdENvbW1hbmQpID09IDIw
LAorICAgICAgICAgICAgICAiVW5leHBlY3RlZCBzaXplIG9mIERyYXdFbGVtZW50c0luZGlyZWN0
Q29tbWFuZCIpOworCiAvLyBTdGF0ZSBmcm9tIFRhYmxlIDYuMTAgKHN0YXRlIHBlciBzYW1wbGVy
IG9iamVjdCkKIHN0cnVjdCBTYW1wbGVyU3RhdGUKIHsKQEAgLTE5Miw2ICsyMTAsOCBAQCBzdHJ1
Y3QgU2FtcGxlclN0YXRlCiAKICAgICBHTGVudW0gY29tcGFyZU1vZGU7CiAgICAgR0xlbnVtIGNv
bXBhcmVGdW5jOworCisgICAgR0xlbnVtIHNSR0JEZWNvZGU7CiB9OwogCiBib29sIG9wZXJhdG9y
PT0oY29uc3QgU2FtcGxlclN0YXRlICZhLCBjb25zdCBTYW1wbGVyU3RhdGUgJmIpOwpAQCAtMjQy
LDIxICsyNjIsMTIgQEAgdHlwZWRlZiBzdGQ6OmJpdHNldDxJTVBMRU1FTlRBVElPTl9NQVhfQ09N
QklORURfU0hBREVSX1VOSUZPUk1fQlVGRkVSUz4gVW5pZm9ybUIKIC8vIENsaWVudCBjb2RlIHNo
b3VsZCB0cmVhdCBpdCBhcyBhIHN0ZDo6bWFwLgogdGVtcGxhdGUgPGNsYXNzIFJlc291cmNlVD4K
IHVzaW5nIFJlc291cmNlTWFwID0gc3RkOjp1bm9yZGVyZWRfbWFwPEdMdWludCwgUmVzb3VyY2VU
ICo+OworCit1c2luZyBDb250ZXh0SUQgPSB1aW50cHRyX3Q7CiB9CiAKIG5hbWVzcGFjZSByeAog
ewotZW51bSBWZW5kb3JJRCA6IHVpbnQzMl90Ci17Ci0gICAgVkVORE9SX0lEX1VOS05PV04gID0g
MHgwLAotICAgIFZFTkRPUl9JRF9BTUQgICAgICA9IDB4MTAwMiwKLSAgICBWRU5ET1JfSURfSU5U
RUwgICAgPSAweDgwODYsCi0gICAgVkVORE9SX0lEX05WSURJQSAgID0gMHgxMERFLAotICAgIC8v
IFRoaXMgaXMgUXVhbGNvbW0gUENJIFZlbmRvciBJRC4KLSAgICAvLyBBbmRyb2lkIGRvZXNuJ3Qg
aGF2ZSBhIFBDSSBidXMsIGJ1dCBhbGwgd2UgbmVlZCBpcyBhIHVuaXF1ZSBpZC4KLSAgICBWRU5E
T1JfSURfUVVBTENPTU0gPSAweDUxNDMsCi19OwotCiAvLyBBIG1hY3JvIHRoYXQgZGV0ZXJtaW5l
cyB3aGV0aGVyIGFuIG9iamVjdCBoYXMgYSBnaXZlbiBydW50aW1lIHR5cGUuCiAjaWYgZGVmaW5l
ZChfX2NsYW5nX18pCiAjaWYgX19oYXNfZmVhdHVyZShjeHhfcnR0aSkKQEAgLTI5Nyw4ICszMDgs
MjEgQEAgaW5saW5lIERlc3RUICpHZXRJbXBsQXMoU3JjVCAqc3JjKQogICAgIHJldHVybiBHZXRB
czxEZXN0VD4oc3JjLT5nZXRJbXBsZW1lbnRhdGlvbigpKTsKIH0KIAordGVtcGxhdGUgPHR5cGVu
YW1lIERlc3RULCB0eXBlbmFtZSBTcmNUPgoraW5saW5lIERlc3RUICpTYWZlR2V0SW1wbEFzKFNy
Y1QgKnNyYykKK3sKKyAgICByZXR1cm4gc3JjICE9IG51bGxwdHIgPyBHZXRBczxEZXN0VD4oc3Jj
LT5nZXRJbXBsZW1lbnRhdGlvbigpKSA6IG51bGxwdHI7Cit9CisKKy8vIEluIHNvbWUgY2FzZXMg
d2Ugd2FudCB0byByZXRyaWV2ZSBhbiBJbXBsIG9iamVjdCwgd2hpbGUgaGFuZGxpbmcgbnVsbHB0
ciBjYXNlcyB0cml2aWFsbHkuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgT2JqVD4KK2F1dG8gU2FmZUdl
dEltcGwoT2JqVCAqc3JjKSAtPiBkZWNsdHlwZShzcmMtPmdldEltcGxlbWVudGF0aW9uKCkpCit7
CisgICAgcmV0dXJuIHNyYyA/IHNyYy0+Z2V0SW1wbGVtZW50YXRpb24oKSA6IG51bGxwdHI7CiB9
CiAKK30gIC8vIG5hbWVzcGFjZSByeAorCiAjaW5jbHVkZSAiYW5nbGV0eXBlcy5pbmwiCiAKIG5h
bWVzcGFjZSBhbmdsZQpAQCAtMzQ1LDYgKzM2OSwxMSBAQCBpbmxpbmUgR0xlbnVtIEZyYW1lYnVm
ZmVyQmluZGluZ1RvRW51bShGcmFtZWJ1ZmZlckJpbmRpbmcgYmluZGluZykKICAgICAgICAgICAg
IHJldHVybiBHTF9OT05FOwogICAgIH0KIH0KLX0KK30gIC8vIG5hbWVzcGFjZSBhbmdsZQorCitu
YW1lc3BhY2UgZ2wKK3sKK2NsYXNzIENvbnRleHRTdGF0ZTsKK30gIC8vIG5hbWVzcGFjZSBnbAog
CiAjZW5kaWYgLy8gTElCQU5HTEVfQU5HTEVUWVBFU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2VzM19jb3B5X2NvbnZlcnNpb25fZm9ybWF0cy5q
c29uIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2VzM19jb3B5X2NvbnZl
cnNpb25fZm9ybWF0cy5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5YjcxZmQ5M2E3NGI4N2NlNGRjZTA5MzVi
MWM3MzdhZTUxNGZkYzgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvZXMzX2NvcHlfY29udmVyc2lvbl9mb3JtYXRzLmpzb24KQEAgLTAsMCAr
MSw0NCBAQAoreworICAgICJGcm9tIEVTIDMuMC4xIHNwZWMsIHRhYmxlIDMuMTUiOgorICAgIFsK
KyAgICAgICAgWyAiR0xfQUxQSEEiLCAiR0xfUkdCQSIgXSwKKyAgICAgICAgWyAiR0xfTFVNSU5B
TkNFIiwgIkdMX1JFRCIgXSwKKyAgICAgICAgWyAiR0xfTFVNSU5BTkNFIiwgIkdMX1JHIiBdLAor
ICAgICAgICBbICJHTF9MVU1JTkFOQ0UiLCAiR0xfUkdCIiBdLAorICAgICAgICBbICJHTF9MVU1J
TkFOQ0UiLCAiR0xfUkdCQSIgXSwKKyAgICAgICAgWyAiR0xfTFVNSU5BTkNFX0FMUEhBIiwgIkdM
X1JHQkEiIF0sCisgICAgICAgIFsgIkdMX1JFRCIsICJHTF9SRUQiIF0sCisgICAgICAgIFsgIkdM
X1JFRCIsICJHTF9SRyIgXSwKKyAgICAgICAgWyAiR0xfUkVEIiwgIkdMX1JHQiIgXSwKKyAgICAg
ICAgWyAiR0xfUkVEIiwgIkdMX1JHQkEiIF0sCisgICAgICAgIFsgIkdMX1JHIiwgIkdMX1JHIiBd
LAorICAgICAgICBbICJHTF9SRyIsICJHTF9SR0IiIF0sCisgICAgICAgIFsgIkdMX1JHIiwgIkdM
X1JHQkEiIF0sCisgICAgICAgIFsgIkdMX1JHQiIsICJHTF9SR0IiIF0sCisgICAgICAgIFsgIkdM
X1JHQiIsICJHTF9SR0JBIiBdLAorICAgICAgICBbICJHTF9SR0JBIiwgIkdMX1JHQkEiIF0KKyAg
ICBdLAorCisgICAgIk5lY2Vzc2FyeSBmb3IgQU5HTEUgYmFjay1idWZmZXJzIjoKKyAgICBbCisg
ICAgICAgIFsgIkdMX0FMUEhBIiwgIkdMX0JHUkFfRVhUIiBdLAorICAgICAgICBbICJHTF9MVU1J
TkFOQ0UiLCAiR0xfQkdSQV9FWFQiIF0sCisgICAgICAgIFsgIkdMX0xVTUlOQU5DRV9BTFBIQSIs
ICJHTF9CR1JBX0VYVCIgXSwKKyAgICAgICAgWyAiR0xfUkVEIiwgIkdMX0JHUkFfRVhUIiBdLAor
ICAgICAgICBbICJHTF9SRyIsICJHTF9CR1JBX0VYVCIgXSwKKyAgICAgICAgWyAiR0xfUkdCIiwg
IkdMX0JHUkFfRVhUIiBdLAorICAgICAgICBbICJHTF9SR0JBIiwgIkdMX0JHUkFfRVhUIiBdLAor
ICAgICAgICBbICJHTF9CR1JBX0VYVCIsICJHTF9CR1JBX0VYVCIgXSwKKworICAgICAgICBbICJH
TF9SRURfSU5URUdFUiIsICJHTF9SRURfSU5URUdFUiIgXSwKKyAgICAgICAgWyAiR0xfUkVEX0lO
VEVHRVIiLCAiR0xfUkdfSU5URUdFUiIgXSwKKyAgICAgICAgWyAiR0xfUkVEX0lOVEVHRVIiLCAi
R0xfUkdCX0lOVEVHRVIiIF0sCisgICAgICAgIFsgIkdMX1JFRF9JTlRFR0VSIiwgIkdMX1JHQkFf
SU5URUdFUiIgXSwKKyAgICAgICAgWyAiR0xfUkdfSU5URUdFUiIsICJHTF9SR19JTlRFR0VSIiBd
LAorICAgICAgICBbICJHTF9SR19JTlRFR0VSIiwgIkdMX1JHQl9JTlRFR0VSIiBdLAorICAgICAg
ICBbICJHTF9SR19JTlRFR0VSIiwgIkdMX1JHQkFfSU5URUdFUiIgXSwKKyAgICAgICAgWyAiR0xf
UkdCX0lOVEVHRVIiLCAiR0xfUkdCX0lOVEVHRVIiIF0sCisgICAgICAgIFsgIkdMX1JHQl9JTlRF
R0VSIiwgIkdMX1JHQkFfSU5URUdFUiIgXSwKKyAgICAgICAgWyAiR0xfUkdCQV9JTlRFR0VSIiwg
IkdMX1JHQkFfSU5URUdFUiIgXQorICAgIF0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9lczNfY29weV9jb252ZXJzaW9uX3RhYmxlX2F1dG9nZW4u
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2VzM19jb3B5X2NvbnZl
cnNpb25fdGFibGVfYXV0b2dlbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzY0NzQ0NWM1MDc4Y2Q4OWQ3ZjA5
N2UxYTBhMTNhNzUwNzZmNzllNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9lczNfY29weV9jb252ZXJzaW9uX3RhYmxlX2F1dG9nZW4uY3Bw
CkBAIC0wLDAgKzEsMTcxIEBACisvLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgorLy8g
R2VuZXJhdGVkIGJ5IGdlbl9jb3B5X2NvbnZlcnNpb25fdGFibGUucHkgdXNpbmcgZGF0YSBmcm9t
IGVzM19jb3B5X2NvbnZlcnNpb25fZm9ybWF0cy5qc29uLgorLy8KKy8vIENvcHlyaWdodCAyMDE2
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIGZvcm1hdF9t
YXA6CisvLyAgIERldGVybWluaW5nIHRoZSBzaXplZCBpbnRlcm5hbCBmb3JtYXQgZnJvbSBhIChm
b3JtYXQsdHlwZSkgcGFpci4KKy8vICAgQWxzbyBjaGVjayBlczMgZm9ybWF0IGNvbWJpbmF0aW9u
cyBmb3IgdmFsaWRpdHkuCisKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUgImNvbW1v
bi9kZWJ1Zy5oIgorCituYW1lc3BhY2UgZ2wKK3sKKworYm9vbCBWYWxpZEVTM0NvcHlDb252ZXJz
aW9uKEdMZW51bSB0ZXh0dXJlRm9ybWF0LCBHTGVudW0gZnJhbWVidWZmZXJGb3JtYXQpCit7Cisg
ICAgc3dpdGNoICh0ZXh0dXJlRm9ybWF0KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9BTFBIQToK
KyAgICAgICAgICAgIHN3aXRjaCAoZnJhbWVidWZmZXJGb3JtYXQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgICAgICAgICBjYXNlIEdM
X1JHQkE6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgICAg
IHN3aXRjaCAoZnJhbWVidWZmZXJGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0xVTUlOQU5D
RToKKyAgICAgICAgICAgIHN3aXRjaCAoZnJhbWVidWZmZXJGb3JtYXQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgICAgICAgICBjYXNl
IEdMX1JFRDoKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1JHOgorICAgICAgICAgICAgICAgIGNh
c2UgR0xfUkdCOgorICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAg
ICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKKyAgICAgICAgICAgIHN3aXRjaCAoZnJhbWVi
dWZmZXJGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9CR1JB
X0VYVDoKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBHTF9SRUQ6CisgICAgICAgICAgICBzd2l0Y2ggKGZyYW1lYnVmZmVyRm9ybWF0KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6CisgICAgICAgICAg
ICAgICAgY2FzZSBHTF9SRUQ6CisgICAgICAgICAgICAgICAgY2FzZSBHTF9SRzoKKyAgICAgICAg
ICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBHTF9SRURfSU5URUdFUjoKKyAgICAgICAgICAgIHN3aXRjaCAo
ZnJhbWVidWZmZXJGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBH
TF9SRURfSU5URUdFUjoKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkFfSU5URUdFUjoKKyAg
ICAgICAgICAgICAgICBjYXNlIEdMX1JHQl9JTlRFR0VSOgorICAgICAgICAgICAgICAgIGNhc2Ug
R0xfUkdfSU5URUdFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1JHOgorICAgICAgICAg
ICAgc3dpdGNoIChmcmFtZWJ1ZmZlckZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIEdMX0JHUkFfRVhUOgorICAgICAgICAgICAgICAgIGNhc2UgR0xfUkc6CisgICAg
ICAgICAgICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0JBOgor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfUkdCOgorICAgICAgICAgICAgc3dpdGNoIChmcmFt
ZWJ1ZmZlckZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0JH
UkFfRVhUOgorICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCOgorICAgICAgICAgICAgICAgIGNh
c2UgR0xfUkdCQToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAg
ICBzd2l0Y2ggKGZyYW1lYnVmZmVyRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGNhc2UgR0xfQkdSQV9FWFQ6CisgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0JBOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGNhc2UgR0xfUkdCQV9JTlRFR0VSOgorICAgICAgICAgICAgc3dpdGNo
IChmcmFtZWJ1ZmZlckZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNl
IEdMX1JHQkFfSU5URUdFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1JHQl9JTlRFR0VS
OgorICAgICAgICAgICAgc3dpdGNoIChmcmFtZWJ1ZmZlckZvcm1hdCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkFfSU5URUdFUjoKKyAgICAgICAgICAgICAgICBj
YXNlIEdMX1JHQl9JTlRFR0VSOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfUkdfSU5URUdF
UjoKKyAgICAgICAgICAgIHN3aXRjaCAoZnJhbWVidWZmZXJGb3JtYXQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0JBX0lOVEVHRVI6CisgICAgICAgICAgICAgICAg
Y2FzZSBHTF9SR0JfSU5URUdFUjoKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1JHX0lOVEVHRVI6
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGdsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZmVhdHVyZXMuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mZWF0dXJlcy5oCmluZGV4IGVjZjQ4NmRj
ZjdkMTY3NjVkYzBlODM1YjUyZjMzYmE3MTZjNzQ2MjkuLjQ4YTE5NGZmMGJjYTZiMGE2YjNmZGQw
YTQ0ZDQ3YWI4ZjJhZTFlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9mZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9mZWF0dXJlcy5oCkBAIC03LDYgKzcsOCBAQAogI2lmbmRlZiBMSUJBTkdMRV9GRUFU
VVJFU19IXwogI2RlZmluZSBMSUJBTkdMRV9GRUFUVVJFU19IXwogCisjaW5jbHVkZSAiY29tbW9u
L3BsYXRmb3JtLmgiCisKICNkZWZpbmUgQU5HTEVfRElTQUJMRUQgMAogI2RlZmluZSBBTkdMRV9F
TkFCTEVEIDEKIApAQCAtNTAsNCArNTIsMTQgQEAKICNkZWZpbmUgQU5HTEVfUFJPR1JBTV9MSU5L
X1ZBTElEQVRFX1VOSUZPUk1fUFJFQ0lTSU9OIEFOR0xFX0VOQUJMRUQKICNlbmRpZgogCisvLyBD
b250cm9scyBpZiBvdXIgdGhyZWFkaW5nIGNvZGUgdXNlcyBzdGQ6OmFzeW5jIG9yIGZhbGxzIGJh
Y2sgdG8gc2luZ2xlLXRocmVhZGVkIG9wZXJhdGlvbnMuCisvLyBUT0RPKGptYWRpbGwpOiBFbmFi
bGUgb24gTGludXggb25jZSBTVEwgY2hyb25vIGhlYWRlcnMgYXJlIHVwZGF0ZWQuCisjaWYgIWRl
ZmluZWQoQU5HTEVfU1REX0FTWU5DX1dPUktFUlMpCisjaWYgZGVmaW5lZChBTkdMRV9QTEFURk9S
TV9XSU5ET1dTKQorI2RlZmluZSBBTkdMRV9TVERfQVNZTkNfV09SS0VSUyBBTkdMRV9FTkFCTEVE
CisjZWxzZQorI2RlZmluZSBBTkdMRV9TVERfQVNZTkNfV09SS0VSUyBBTkdMRV9ESVNBQkxFRAor
I2VuZGlmICAvLyBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1dJTkRPV1MpCisjZW5kaWYgIC8vICFk
ZWZpbmVkKEFOR0xFX1NURF9BU1lOQ19XT1JLRVJTKQorCiAjZW5kaWYgLy8gTElCQU5HTEVfRkVB
VFVSRVNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9mb3JtYXRfbWFwX2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL2Zvcm1hdF9tYXBfYXV0b2dlbi5jcHAKaW5kZXggNzA3ZDM4NDI2ODRmZjc1OTNmYzhl
ZWM1N2Q5ZWJiYzlhNjJhN2JlOC4uNjg5OTcwNmU1NDQ3NzU4YzI4ZTkxMjQ5MzYwM2NhZjFjZDAw
OGMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zv
cm1hdF9tYXBfYXV0b2dlbi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL2Zvcm1hdF9tYXBfYXV0b2dlbi5jcHAKQEAgLTkyLDYgKzkyLDQ2IEBAIEdMZW51bSBH
ZXRTaXplZEZvcm1hdEludGVybmFsKEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKQogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VE
X1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQx
X0VYVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xf
Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQ6CisgICAgICAgICAgICBzd2l0Y2gg
KHR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9C
WVRFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhB
X1MzVENfRFhUM19FWFQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUOgorICAgICAgICAg
ICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0NPTVBSRVNTRURf
U1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVDoKKyAgICAg
ICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9DT01QUkVT
U0VEX1NSR0JfUzNUQ19EWFQxX0VYVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
CiAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UOgogICAgICAgICAgICAgc3dpdGNoICh0
eXBlKQogICAgICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL2Zvcm1hdF9tYXBfZGF0YS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL2Zvcm1hdF9tYXBfZGF0YS5qc29uCmluZGV4IDNkNmFkNmMzY2RlNTAz
ZjZkYWIwYjJlNGVhYjQwMGVhZGEzMDc2NTguLmE0ZjFjOThiNGQ0YjgxODMyZTkwMGRkYmM1NDhj
NTQzNzg3ZmU3ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9mb3JtYXRfbWFwX2RhdGEuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvZm9ybWF0X21hcF9kYXRhLmpzb24KQEAgLTExNSw2ICsxMTUsMTggQEAKICAg
ICAiR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSI6IHsKICAgICAgICAgIkdMX1VO
U0lHTkVEX0JZVEUiOiAiR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSIKICAgICB9
LAorICAgICJHTF9DT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVCI6IHsKKyAgICAgICAgIkdM
X1VOU0lHTkVEX0JZVEUiOiAiR0xfQ09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQiCisgICAg
fSwKKyAgICAiR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQiOiB7CisgICAg
ICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RY
VDFfRVhUIgorICAgIH0sCisgICAgIkdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNf
RVhUIjogeworICAgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJHTF9DT01QUkVTU0VEX1NSR0Jf
QUxQSEFfUzNUQ19EWFQzX0VYVCIKKyAgICB9LAorICAgICJHTF9DT01QUkVTU0VEX1NSR0JfQUxQ
SEFfUzNUQ19EWFQ1X0VYVCI6IHsKKyAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiR0xfQ09N
UFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQiCisgICAgfSwKICAgICAiR0xfREVQVEhf
Q09NUE9ORU5UIjogewogICAgICAgICAiR0xfVU5TSUdORURfU0hPUlQiOiAiR0xfREVQVEhfQ09N
UE9ORU5UMTYiLAogICAgICAgICAiR0xfVU5TSUdORURfSU5UIjogIkdMX0RFUFRIX0NPTVBPTkVO
VDMyX09FUyIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvZm9ybWF0dXRpbHMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L2Zvcm1hdHV0aWxzLmNwcAppbmRleCBhZTFhMGVhYmU3ZWNkMjRiZWZhOTg2YTQ4OTVjYWZlMzg5
ZWFkNWVmLi5kYmE2OTk5MjMyMjBiYmRjZmI4YjE4MTcxYjMwNjBmOGY1ODkyZjg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0dXRpbHMuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXR1dGlscy5j
cHAKQEAgLTYsOCArNiw5IEBACiAKIC8vIGZvcm1hdHV0aWxzLmNwcDogUXVlcmllcyBmb3IgR0wg
aW1hZ2UgZm9ybWF0cy4KIAotI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCisKKyNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVi
dWZmZXIuaCIKIApAQCAtNzEsMjAgKzcyLDIwIEBAIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFR5cGUm
IGEsIGNvbnN0IFR5cGUmIGIpCiB9CiAKIC8vIEluZm9ybWF0aW9uIGFib3V0IGludGVybmFsIGZv
cm1hdHMKLXN0YXRpYyBib29sIEFsd2F5c1N1cHBvcnRlZChHTHVpbnQsIGNvbnN0IEV4dGVuc2lv
bnMgJikKK3N0YXRpYyBib29sIEFsd2F5c1N1cHBvcnRlZChjb25zdCBWZXJzaW9uICYsIGNvbnN0
IEV4dGVuc2lvbnMgJikKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgTmV2
ZXJTdXBwb3J0ZWQoR0x1aW50LCBjb25zdCBFeHRlbnNpb25zICYpCitzdGF0aWMgYm9vbCBOZXZl
clN1cHBvcnRlZChjb25zdCBWZXJzaW9uICYsIGNvbnN0IEV4dGVuc2lvbnMgJikKIHsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXRlbXBsYXRlIDxHTHVpbnQgbWluQ29yZUdMVmVyc2lvbj4KLXN0
YXRpYyBib29sIFJlcXVpcmVFUyhHTHVpbnQgY2xpZW50VmVyc2lvbiwgY29uc3QgRXh0ZW5zaW9u
cyAmKQordGVtcGxhdGUgPEdMdWludCBtaW5Db3JlR0xNYWpvclZlcnNpb24sIEdMdWludCBtaW5D
b3JlR0xNaW5vclZlcnNpb24+CitzdGF0aWMgYm9vbCBSZXF1aXJlRVMoY29uc3QgVmVyc2lvbiAm
Y2xpZW50VmVyc2lvbiwgY29uc3QgRXh0ZW5zaW9ucyAmKQogewotICAgIHJldHVybiBjbGllbnRW
ZXJzaW9uID49IG1pbkNvcmVHTFZlcnNpb247CisgICAgcmV0dXJuIGNsaWVudFZlcnNpb24gPj0g
VmVyc2lvbihtaW5Db3JlR0xNYWpvclZlcnNpb24sIG1pbkNvcmVHTE1pbm9yVmVyc2lvbik7CiB9
CiAKIC8vIFBvaW50ZXIgdG8gYSBib29sZWFuIG1lbWViZXIgb2YgdGhlIEV4dGVuc2lvbnMgc3Ry
dWN0CkBAIC05Miw5MiArOTMsMTAxIEBAIHR5cGVkZWYgYm9vbChFeHRlbnNpb25zOjoqRXh0ZW5z
aW9uQm9vbCk7CiAKIC8vIENoZWNrIHN1cHBvcnQgZm9yIGEgc2luZ2xlIGV4dGVuc2lvbgogdGVt
cGxhdGUgPEV4dGVuc2lvbkJvb2wgYm9vbDE+Ci1zdGF0aWMgYm9vbCBSZXF1aXJlRXh0KEdMdWlu
dCwgY29uc3QgRXh0ZW5zaW9ucyAmIGV4dGVuc2lvbnMpCitzdGF0aWMgYm9vbCBSZXF1aXJlRXh0
KGNvbnN0IFZlcnNpb24gJiwgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucykKIHsKICAgICBy
ZXR1cm4gZXh0ZW5zaW9ucy4qYm9vbDE7CiB9CiAKIC8vIENoZWNrIGZvciBhIG1pbmltdW0gY2xp
ZW50IHZlcnNpb24gb3IgYSBzaW5nbGUgZXh0ZW5zaW9uCi10ZW1wbGF0ZSA8R0x1aW50IG1pbkNv
cmVHTFZlcnNpb24sIEV4dGVuc2lvbkJvb2wgYm9vbDE+Ci1zdGF0aWMgYm9vbCBSZXF1aXJlRVNP
ckV4dChHTHVpbnQgY2xpZW50VmVyc2lvbiwgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucykK
K3RlbXBsYXRlIDxHTHVpbnQgbWluQ29yZUdMTWFqb3JWZXJzaW9uLCBHTHVpbnQgbWluQ29yZUdM
TWlub3JWZXJzaW9uLCBFeHRlbnNpb25Cb29sIGJvb2wxPgorc3RhdGljIGJvb2wgUmVxdWlyZUVT
T3JFeHQoY29uc3QgVmVyc2lvbiAmY2xpZW50VmVyc2lvbiwgY29uc3QgRXh0ZW5zaW9ucyAmZXh0
ZW5zaW9ucykKIHsKLSAgICByZXR1cm4gY2xpZW50VmVyc2lvbiA+PSBtaW5Db3JlR0xWZXJzaW9u
IHx8IGV4dGVuc2lvbnMuKmJvb2wxOworICAgIHJldHVybiBjbGllbnRWZXJzaW9uID49IFZlcnNp
b24obWluQ29yZUdMTWFqb3JWZXJzaW9uLCBtaW5Db3JlR0xNaW5vclZlcnNpb24pIHx8CisgICAg
ICAgICAgIGV4dGVuc2lvbnMuKmJvb2wxOwogfQogCiAvLyBDaGVjayBmb3IgYSBtaW5pbXVtIGNs
aWVudCB2ZXJzaW9uIG9yIHR3byBleHRlbnNpb25zCi10ZW1wbGF0ZSA8R0x1aW50IG1pbkNvcmVH
TFZlcnNpb24sIEV4dGVuc2lvbkJvb2wgYm9vbDEsIEV4dGVuc2lvbkJvb2wgYm9vbDI+Ci1zdGF0
aWMgYm9vbCBSZXF1aXJlRVNPckV4dEFuZEV4dChHTHVpbnQgY2xpZW50VmVyc2lvbiwgY29uc3Qg
RXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucykKK3RlbXBsYXRlIDxHTHVpbnQgbWluQ29yZUdMTWFqb3JW
ZXJzaW9uLAorICAgICAgICAgIEdMdWludCBtaW5Db3JlR0xNaW5vclZlcnNpb24sCisgICAgICAg
ICAgRXh0ZW5zaW9uQm9vbCBib29sMSwKKyAgICAgICAgICBFeHRlbnNpb25Cb29sIGJvb2wyPgor
c3RhdGljIGJvb2wgUmVxdWlyZUVTT3JFeHRBbmRFeHQoY29uc3QgVmVyc2lvbiAmY2xpZW50VmVy
c2lvbiwgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucykKIHsKLSAgICByZXR1cm4gY2xpZW50
VmVyc2lvbiA+PSBtaW5Db3JlR0xWZXJzaW9uIHx8IChleHRlbnNpb25zLipib29sMSAmJiBleHRl
bnNpb25zLipib29sMik7CisgICAgcmV0dXJuIGNsaWVudFZlcnNpb24gPj0gVmVyc2lvbihtaW5D
b3JlR0xNYWpvclZlcnNpb24sIG1pbkNvcmVHTE1pbm9yVmVyc2lvbikgfHwKKyAgICAgICAgICAg
KGV4dGVuc2lvbnMuKmJvb2wxICYmIGV4dGVuc2lvbnMuKmJvb2wyKTsKIH0KIAogLy8gQ2hlY2sg
Zm9yIGEgbWluaW11bSBjbGllbnQgdmVyc2lvbiBvciBhdCBsZWFzdCBvbmUgb2YgdHdvIGV4dGVu
c2lvbnMKLXRlbXBsYXRlIDxHTHVpbnQgbWluQ29yZUdMVmVyc2lvbiwgRXh0ZW5zaW9uQm9vbCBi
b29sMSwgRXh0ZW5zaW9uQm9vbCBib29sMj4KLXN0YXRpYyBib29sIFJlcXVpcmVFU09yRXh0T3JF
eHQoR0x1aW50IGNsaWVudFZlcnNpb24sIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMpCit0
ZW1wbGF0ZSA8R0x1aW50IG1pbkNvcmVHTE1ham9yVmVyc2lvbiwKKyAgICAgICAgICBHTHVpbnQg
bWluQ29yZUdMTWlub3JWZXJzaW9uLAorICAgICAgICAgIEV4dGVuc2lvbkJvb2wgYm9vbDEsCisg
ICAgICAgICAgRXh0ZW5zaW9uQm9vbCBib29sMj4KK3N0YXRpYyBib29sIFJlcXVpcmVFU09yRXh0
T3JFeHQoY29uc3QgVmVyc2lvbiAmY2xpZW50VmVyc2lvbiwgY29uc3QgRXh0ZW5zaW9ucyAmZXh0
ZW5zaW9ucykKIHsKLSAgICByZXR1cm4gY2xpZW50VmVyc2lvbiA+PSBtaW5Db3JlR0xWZXJzaW9u
IHx8IGV4dGVuc2lvbnMuKmJvb2wxIHx8IGV4dGVuc2lvbnMuKmJvb2wyOworICAgIHJldHVybiBj
bGllbnRWZXJzaW9uID49IFZlcnNpb24obWluQ29yZUdMTWFqb3JWZXJzaW9uLCBtaW5Db3JlR0xN
aW5vclZlcnNpb24pIHx8CisgICAgICAgICAgIGV4dGVuc2lvbnMuKmJvb2wxIHx8IGV4dGVuc2lv
bnMuKmJvb2wyOwogfQogCiAvLyBDaGVjayBzdXBwb3J0IGZvciB0d28gZXh0ZW5zaW9ucwogdGVt
cGxhdGUgPEV4dGVuc2lvbkJvb2wgYm9vbDEsIEV4dGVuc2lvbkJvb2wgYm9vbDI+Ci1zdGF0aWMg
Ym9vbCBSZXF1aXJlRXh0QW5kRXh0KEdMdWludCwgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9u
cykKK3N0YXRpYyBib29sIFJlcXVpcmVFeHRBbmRFeHQoY29uc3QgVmVyc2lvbiAmLCBjb25zdCBF
eHRlbnNpb25zICZleHRlbnNpb25zKQogewogICAgIHJldHVybiBleHRlbnNpb25zLipib29sMSAm
JiBleHRlbnNpb25zLipib29sMjsKIH0KIAogLy8gQ2hlY2sgc3VwcG9ydCBmb3IgZWl0aGVyIG9m
IHR3byBleHRlbnNpb25zCiB0ZW1wbGF0ZSA8RXh0ZW5zaW9uQm9vbCBib29sMSwgRXh0ZW5zaW9u
Qm9vbCBib29sMj4KLXN0YXRpYyBib29sIFJlcXVpcmVFeHRPckV4dChHTHVpbnQsIGNvbnN0IEV4
dGVuc2lvbnMgJmV4dGVuc2lvbnMpCitzdGF0aWMgYm9vbCBSZXF1aXJlRXh0T3JFeHQoY29uc3Qg
VmVyc2lvbiAmLCBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zKQogewogICAgIHJldHVybiBl
eHRlbnNpb25zLipib29sMSB8fCBleHRlbnNpb25zLipib29sMjsKIH0KIAogLy8gU3BlY2lhbCBm
dW5jdGlvbiBmb3IgaGFsZiBmbG9hdCBmb3JtYXRzIHdpdGggdGhyZWUgb3IgZm91ciBjaGFubmVs
cy4KLXN0YXRpYyBib29sIEhhbGZGbG9hdFN1cHBvcnQoR0x1aW50IGNsaWVudFZlcnNpb24sIGNv
bnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMpCitzdGF0aWMgYm9vbCBIYWxmRmxvYXRTdXBwb3J0
KGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnNpb24sIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lv
bnMpCiB7Ci0gICAgcmV0dXJuIGNsaWVudFZlcnNpb24gPj0gMyB8fCBleHRlbnNpb25zLnRleHR1
cmVIYWxmRmxvYXQ7CisgICAgcmV0dXJuIGNsaWVudFZlcnNpb24gPj0gVmVyc2lvbigzLCAwKSB8
fCBleHRlbnNpb25zLnRleHR1cmVIYWxmRmxvYXQ7CiB9CiAKLXN0YXRpYyBib29sIEhhbGZGbG9h
dFJlbmRlcmFibGVTdXBwb3J0KEdMdWludCBjbGllbnRWZXJzaW9uLCBjb25zdCBFeHRlbnNpb25z
ICZleHRlbnNpb25zKQorc3RhdGljIGJvb2wgSGFsZkZsb2F0UmVuZGVyYWJsZVN1cHBvcnQoY29u
c3QgVmVyc2lvbiAmY2xpZW50VmVyc2lvbiwgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucykK
IHsKICAgICByZXR1cm4gSGFsZkZsb2F0U3VwcG9ydChjbGllbnRWZXJzaW9uLCBleHRlbnNpb25z
KSAmJiBleHRlbnNpb25zLmNvbG9yQnVmZmVySGFsZkZsb2F0OwogfQogCiAvLyBTcGVjaWFsIGZ1
bmN0aW9uIGZvciBoYWxmIGZsb2F0IGZvcm1hdHMgd2l0aCBvbmUgb3IgdHdvIGNoYW5uZWxzLgot
c3RhdGljIGJvb2wgSGFsZkZsb2F0U3VwcG9ydFJHKEdMdWludCBjbGllbnRWZXJzaW9uLCBjb25z
dCBFeHRlbnNpb25zICZleHRlbnNpb25zKQorc3RhdGljIGJvb2wgSGFsZkZsb2F0U3VwcG9ydFJH
KGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnNpb24sIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lv
bnMpCiB7Ci0gICAgcmV0dXJuIGNsaWVudFZlcnNpb24gPj0gMyB8fCAoZXh0ZW5zaW9ucy50ZXh0
dXJlSGFsZkZsb2F0ICYmIGV4dGVuc2lvbnMudGV4dHVyZVJHKTsKKyAgICByZXR1cm4gY2xpZW50
VmVyc2lvbiA+PSBWZXJzaW9uKDMsIDApIHx8IChleHRlbnNpb25zLnRleHR1cmVIYWxmRmxvYXQg
JiYgZXh0ZW5zaW9ucy50ZXh0dXJlUkcpOwogfQogCi1zdGF0aWMgYm9vbCBIYWxmRmxvYXRSZW5k
ZXJhYmxlU3VwcG9ydFJHKEdMdWludCBjbGllbnRWZXJzaW9uLCBjb25zdCBFeHRlbnNpb25zICZl
eHRlbnNpb25zKQorc3RhdGljIGJvb2wgSGFsZkZsb2F0UmVuZGVyYWJsZVN1cHBvcnRSRyhjb25z
dCBWZXJzaW9uICZjbGllbnRWZXJzaW9uLCBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zKQog
ewogICAgIHJldHVybiBIYWxmRmxvYXRTdXBwb3J0UkcoY2xpZW50VmVyc2lvbiwgZXh0ZW5zaW9u
cykgJiYgZXh0ZW5zaW9ucy5jb2xvckJ1ZmZlckhhbGZGbG9hdDsKIH0KIAogLy8gU3BlY2lhbCBm
dW5jdGlvbiBmb3IgZmxvYXQgZm9ybWF0cyB3aXRoIHRocmVlIG9yIGZvdXIgY2hhbm5lbHMuCi1z
dGF0aWMgYm9vbCBGbG9hdFN1cHBvcnQoR0x1aW50IGNsaWVudFZlcnNpb24sIGNvbnN0IEV4dGVu
c2lvbnMgJmV4dGVuc2lvbnMpCitzdGF0aWMgYm9vbCBGbG9hdFN1cHBvcnQoY29uc3QgVmVyc2lv
biAmY2xpZW50VmVyc2lvbiwgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucykKIHsKLSAgICBy
ZXR1cm4gY2xpZW50VmVyc2lvbiA+PSAzIHx8IGV4dGVuc2lvbnMudGV4dHVyZUZsb2F0OworICAg
IHJldHVybiBjbGllbnRWZXJzaW9uID49IFZlcnNpb24oMywgMCkgfHwgZXh0ZW5zaW9ucy50ZXh0
dXJlRmxvYXQ7CiB9CiAKLXN0YXRpYyBib29sIEZsb2F0UmVuZGVyYWJsZVN1cHBvcnQoR0x1aW50
IGNsaWVudFZlcnNpb24sIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMpCitzdGF0aWMgYm9v
bCBGbG9hdFJlbmRlcmFibGVTdXBwb3J0KGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnNpb24sIGNv
bnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMpCiB7CiAgICAgLy8gV2UgZG9uJ3QgZXhwb3NlIGNv
bG9yQnVmZmVyRmxvYXQgaW4gRVMyLCBidXQgd2Ugc2lsZW50bHkgc3VwcG9ydCByZW5kZXJpbmcg
dG8gZmxvYXQuCiAgICAgcmV0dXJuIEZsb2F0U3VwcG9ydChjbGllbnRWZXJzaW9uLCBleHRlbnNp
b25zKSAmJgotICAgICAgICAgICAoZXh0ZW5zaW9ucy5jb2xvckJ1ZmZlckZsb2F0IHx8IGNsaWVu
dFZlcnNpb24gPT0gMik7CisgICAgICAgICAgIChleHRlbnNpb25zLmNvbG9yQnVmZmVyRmxvYXQg
fHwgY2xpZW50VmVyc2lvbiA9PSBWZXJzaW9uKDIsIDApKTsKIH0KIAogLy8gU3BlY2lhbCBmdW5j
dGlvbiBmb3IgZmxvYXQgZm9ybWF0cyB3aXRoIG9uZSBvciB0d28gY2hhbm5lbHMuCi1zdGF0aWMg
Ym9vbCBGbG9hdFN1cHBvcnRSRyhHTHVpbnQgY2xpZW50VmVyc2lvbiwgY29uc3QgRXh0ZW5zaW9u
cyAmZXh0ZW5zaW9ucykKK3N0YXRpYyBib29sIEZsb2F0U3VwcG9ydFJHKGNvbnN0IFZlcnNpb24g
JmNsaWVudFZlcnNpb24sIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMpCiB7Ci0gICAgcmV0
dXJuIGNsaWVudFZlcnNpb24gPj0gMyB8fCAoZXh0ZW5zaW9ucy50ZXh0dXJlRmxvYXQgJiYgZXh0
ZW5zaW9ucy50ZXh0dXJlUkcpOworICAgIHJldHVybiBjbGllbnRWZXJzaW9uID49IFZlcnNpb24o
MywgMCkgfHwgKGV4dGVuc2lvbnMudGV4dHVyZUZsb2F0ICYmIGV4dGVuc2lvbnMudGV4dHVyZVJH
KTsKIH0KIAotc3RhdGljIGJvb2wgRmxvYXRSZW5kZXJhYmxlU3VwcG9ydFJHKEdMdWludCBjbGll
bnRWZXJzaW9uLCBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zKQorc3RhdGljIGJvb2wgRmxv
YXRSZW5kZXJhYmxlU3VwcG9ydFJHKGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnNpb24sIGNvbnN0
IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMpCiB7CiAgICAgLy8gV2UgZG9uJ3QgZXhwb3NlIGNvbG9y
QnVmZmVyRmxvYXQgaW4gRVMyLCBidXQgd2Ugc2lsZW50bHkgc3VwcG9ydCByZW5kZXJpbmcgdG8g
ZmxvYXQuCiAgICAgcmV0dXJuIEZsb2F0U3VwcG9ydFJHKGNsaWVudFZlcnNpb24sIGV4dGVuc2lv
bnMpICYmCi0gICAgICAgICAgIChleHRlbnNpb25zLmNvbG9yQnVmZmVyRmxvYXQgfHwgY2xpZW50
VmVyc2lvbiA9PSAyKTsKKyAgICAgICAgICAgKGV4dGVuc2lvbnMuY29sb3JCdWZmZXJGbG9hdCB8
fCBjbGllbnRWZXJzaW9uID09IFZlcnNpb24oMiwgMCkpOwogfQogCiBJbnRlcm5hbEZvcm1hdDo6
SW50ZXJuYWxGb3JtYXQoKQpAQCAtMjc3LDYgKzI4NywxMiBAQCBGb3JtYXQgRm9ybWF0OjpJbnZh
bGlkKCkKICAgICByZXR1cm4gaW52YWxpZDsKIH0KIAorc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8
KHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IEZvcm1hdCAmZm10KQoreworICAgIC8vIFRPRE8oeW5v
dmlrb3YpOiByZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIHdoZW4gYXZhaWxhYmxlCisgICAg
cmV0dXJuIEZtdEhleFNob3J0KG9zLCBmbXQuYXNTaXplZCgpKTsKK30KKwogYm9vbCBJbnRlcm5h
bEZvcm1hdDo6b3BlcmF0b3I9PShjb25zdCBJbnRlcm5hbEZvcm1hdCAmb3RoZXIpIGNvbnN0CiB7
CiAgICAgLy8gV2UgYXNzdW1lIHRoZXJlIGFyZSBubyBkdXBsaWNhdGVzLgpAQCAtNDI1LDQ4ICs0
NDEsNDggQEAgc3RhdGljIEludGVybmFsRm9ybWF0SW5mb01hcCBCdWlsZEludGVybmFsRm9ybWF0
SW5mb01hcCgpCiAKICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAKLSAgICAvLyAgICAgICAgICAg
ICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgICAgIHwgUiB8IEcgfCBCIHwgQSB8UyB8IEZvcm1hdCAg
ICAgICAgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29tcG9uZW50IHR5cGUg
ICAgICAgIHwgU1JHQiB8IFRleHR1cmUgc3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICAgICAg
fCBSZW5kZXJhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRmlsdGVyYWJsZSAg
ICB8Ci0gICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SOCwgICAgICAgICAgICAgICAgIDgsICAw
LCAgMCwgIDAsIDAsIEdMX1JFRCwgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAg
ICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVFU09yRXh0PDMsICZF
eHRlbnNpb25zOjp0ZXh0dXJlUkc+LCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6dGV4
dHVyZVJHPiwgQWx3YXlzU3VwcG9ydGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1I4
X1NOT1JNLCAgICAgICAgICAgOCwgIDAsICAwLCAgMCwgMCwgR0xfUkVELCAgICAgICAgICBHTF9C
WVRFLCAgICAgICAgICAgICAgICAgICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwgICBmYWxz
ZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9y
dGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOwotICAgIEFk
ZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkc4LCAgICAgICAgICAgICAgICA4LCAgOCwgIDAsICAwLCAw
LCBHTF9SRywgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgIEdMX1VO
U0lHTkVEX05PUk1BTElaRUQsIGZhbHNlLCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6
dGV4dHVyZVJHPiwgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnRleHR1cmVSRz4sIEFs
d2F5c1N1cHBvcnRlZCk7Ci0gICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SRzhfU05PUk0sICAg
ICAgICAgIDgsICA4LCAgMCwgIDAsIDAsIEdMX1JHLCAgICAgICAgICAgR0xfQllURSwgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsICAgZmFsc2UsIFJlcXVpcmVF
UzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0
KCZtYXAsIEdMX1JHQjgsICAgICAgICAgICAgICAgOCwgIDgsICA4LCAgMCwgMCwgR0xfUkdCLCAg
ICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JN
QUxJWkVELCBmYWxzZSwgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnJnYjhyZ2JhOD4s
IFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjpyZ2I4cmdiYTg+LCBBbHdheXNTdXBwb3J0
ZWQpOwotICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCOF9TTk9STSwgICAgICAgICA4LCAg
OCwgIDgsICAwLCAwLCBHTF9SR0IsICAgICAgICAgIEdMX0JZVEUsICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELCAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7Ci0gICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9S
R0I1NjUsICAgICAgICAgICAgIDUsICA2LCAgNSwgIDAsIDAsIEdMX1JHQiwgICAgICAgICAgR0xf
VU5TSUdORURfU0hPUlRfNV82XzUsICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFs
c2UsIFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8
Mj4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKLSAgICBB
ZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQkE0LCAgICAgICAgICAgICAgNCwgIDQsICA0LCAgNCwg
MCwgR0xfUkdCQSwgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80LCAgICAgICBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELCBmYWxzZSwgUmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bHdheXNTdXBwb3J0ZWQpOwotICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCNV9BMSwgICAg
ICAgICAgICA1LCAgNSwgIDUsICAxLCAwLCBHTF9SR0JBLCAgICAgICAgIEdMX1VOU0lHTkVEX1NI
T1JUXzVfNV81XzEsICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIGZhbHNlLCBSZXF1aXJl
RVM8Mj4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDI+LCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7Ci0gICAgQWRkUkdCQUZvcm1h
dCgmbWFwLCBHTF9SR0JBOCwgICAgICAgICAgICAgIDgsICA4LCAgOCwgIDgsIDAsIEdMX1JHQkEs
ICAgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjpyZ2I4cmdiYTg+
LCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6cmdiOHJnYmE4PiwgQWx3YXlzU3VwcG9y
dGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQkE4X1NOT1JNLCAgICAgICAgOCwg
IDgsICA4LCAgOCwgMCwgR0xfUkdCQSwgICAgICAgICBHTF9CWVRFLCAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOwotICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xf
UkdCMTBfQTIsICAgICAgICAgIDEwLCAxMCwgMTAsICAyLCAwLCBHTF9SR0JBLCAgICAgICAgIEdM
X1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViwgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIGZh
bHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVT
PDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7Ci0gICAg
QWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0IxMF9BMlVJLCAgICAgICAgMTAsIDEwLCAxMCwgIDIs
IDAsIEdMX1JHQkFfSU5URUdFUiwgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWLCAgR0xf
VU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfU1JHQjgsICAgICAg
ICAgICAgICA4LCAgOCwgIDgsICAwLCAwLCBHTF9SR0IsICAgICAgICAgIEdMX1VOU0lHTkVEX0JZ
VEUsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIHRydWUsICBSZXF1aXJl
RVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6c1JHQj4sICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7Ci0gICAgQWRkUkdCQUZvcm1h
dCgmbWFwLCBHTF9TUkdCOF9BTFBIQTgsICAgICAgIDgsICA4LCAgOCwgIDgsIDAsIEdMX1JHQkEs
ICAgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwgdHJ1ZSwgIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjpzUkdCPiwgICAg
ICBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6c1JHQj4sICAgICAgQWx3YXlzU3VwcG9y
dGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQjlfRTUsICAgICAgICAgICAgOSwg
IDksICA5LCAgMCwgNSwgR0xfUkdCLCAgICAgICAgICBHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9S
RVYsICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOwotICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xf
UjhJLCAgICAgICAgICAgICAgICA4LCAgMCwgIDAsICAwLCAwLCBHTF9SRURfSU5URUdFUiwgIEdM
X0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZh
bHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVT
PDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBB
ZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1I4VUksICAgICAgICAgICAgICAgOCwgIDAsICAwLCAgMCwg
MCwgR0xfUkVEX0lOVEVHRVIsICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
ZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SMTZJLCAgICAgICAg
ICAgICAgMTYsICAwLCAgMCwgIDAsIDAsIEdMX1JFRF9JTlRFR0VSLCAgR0xfU0hPUlQsICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVF
UzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZFJHQkFGb3JtYXQo
Jm1hcCwgR0xfUjE2VUksICAgICAgICAgICAgIDE2LCAgMCwgIDAsICAwLCAwLCBHTF9SRURfSU5U
RUdFUiwgIEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwg
ICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVk
KTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1IzMkksICAgICAgICAgICAgICAzMiwgIDAs
ICAwLCAgMCwgMCwgR0xfUkVEX0lOVEVHRVIsICBHTF9JTlQsICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SMzJV
SSwgICAgICAgICAgICAgMzIsICAwLCAgMCwgIDAsIDAsIEdMX1JFRF9JTlRFR0VSLCAgR0xfVU5T
SUdORURfSU5ULCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2Us
IFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZFJH
QkFGb3JtYXQoJm1hcCwgR0xfUkc4SSwgICAgICAgICAgICAgICA4LCAgOCwgIDAsICAwLCAwLCBH
TF9SR19JTlRFR0VSLCAgIEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwg
ICAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVy
U3VwcG9ydGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHOFVJLCAgICAgICAgICAg
ICAgOCwgIDgsICAwLCAgMCwgMCwgR0xfUkdfSU5URUdFUiwgICBHTF9VTlNJR05FRF9CWVRFLCAg
ICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkUkdCQUZvcm1hdCgmbWFw
LCBHTF9SRzE2SSwgICAgICAgICAgICAgMTYsIDE2LCAgMCwgIDAsIDAsIEdMX1JHX0lOVEVHRVIs
ICAgR0xfU0hPUlQsICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAg
ICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1
aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwot
ICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkcxNlVJLCAgICAgICAgICAgIDE2LCAxNiwgIDAs
ICAwLCAwLCBHTF9SR19JTlRFR0VSLCAgIEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHMzJJLCAg
ICAgICAgICAgICAzMiwgMzIsICAwLCAgMCwgMCwgR0xfUkdfSU5URUdFUiwgICBHTF9JTlQsICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVx
dWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkUkdCQUZv
cm1hdCgmbWFwLCBHTF9SMTFGX0cxMUZfQjEwRiwgICAgMTEsIDExLCAxMCwgIDAsIDAsIEdMX1JH
QiwgICAgICAgICAgR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFViwgR0xfRkxPQVQsICAg
ICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjpjb2xvckJ1ZmZlckZsb2F0PiwgQWx3YXlzU3Vw
cG9ydGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHMzJVSSwgICAgICAgICAgICAz
MiwgMzIsICAwLCAgMCwgMCwgR0xfUkdfSU5URUdFUiwgICBHTF9VTlNJR05FRF9JTlQsICAgICAg
ICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBH
TF9SR0I4SSwgICAgICAgICAgICAgIDgsICA4LCAgOCwgIDAsIDAsIEdMX1JHQl9JTlRFR0VSLCAg
R0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAg
ZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1
cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAg
IEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCOFVJLCAgICAgICAgICAgICA4LCAgOCwgIDgsICAw
LCAwLCBHTF9SR0JfSU5URUdFUiwgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgIEdM
X1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQjE2SSwgICAg
ICAgICAgICAxNiwgMTYsIDE2LCAgMCwgMCwgR0xfUkdCX0lOVEVHRVIsICBHTF9TSE9SVCwgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVxdWly
ZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkUkdCQUZvcm1h
dCgmbWFwLCBHTF9SR0IxNlVJLCAgICAgICAgICAgMTYsIDE2LCAxNiwgIDAsIDAsIEdMX1JHQl9J
TlRFR0VSLCAgR0xfVU5TSUdORURfU0hPUlQsICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5U
LCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0
ZWQpOwotICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCMzJJLCAgICAgICAgICAgIDMyLCAz
MiwgMzIsICAwLCAwLCBHTF9SR0JfSU5URUdFUiwgIEdMX0lOVCwgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JH
QjMyVUksICAgICAgICAgICAzMiwgMzIsIDMyLCAgMCwgMCwgR0xfUkdCX0lOVEVHRVIsICBHTF9V
TlNJR05FRF9JTlQsICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxz
ZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9y
dGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRk
UkdCQUZvcm1hdCgmbWFwLCBHTF9SR0JBOEksICAgICAgICAgICAgIDgsICA4LCAgOCwgIDgsIDAs
IEdMX1JHQkFfSU5URUdFUiwgR0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5U
LCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2
ZXJTdXBwb3J0ZWQpOwotICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCQThVSSwgICAgICAg
ICAgICA4LCAgOCwgIDgsICA4LCAwLCBHTF9SR0JBX0lOVEVHRVIsIEdMX1VOU0lHTkVEX0JZVEUs
ICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8
Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0KCZt
YXAsIEdMX1JHQkExNkksICAgICAgICAgICAxNiwgMTYsIDE2LCAxNiwgMCwgR0xfUkdCQV9JTlRF
R0VSLCBHTF9TSE9SVCwgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAg
ICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl
cXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7
Ci0gICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0JBMTZVSSwgICAgICAgICAgMTYsIDE2LCAx
NiwgMTYsIDAsIEdMX1JHQkFfSU5URUdFUiwgR0xfVU5TSUdORURfU0hPUlQsICAgICAgICAgICAg
ICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCQTMy
SSwgICAgICAgICAgIDMyLCAzMiwgMzIsIDMyLCAwLCBHTF9SR0JBX0lOVEVHRVIsIEdMX0lOVCwg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZhbHNlLCBS
ZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGRSR0JB
Rm9ybWF0KCZtYXAsIEdMX1JHQkEzMlVJLCAgICAgICAgICAzMiwgMzIsIDMyLCAzMiwgMCwgR0xf
UkdCQV9JTlRFR0VSLCBHTF9VTlNJR05FRF9JTlQsICAgICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1
cHBvcnRlZCk7CisgICAgLy8gICAgICAgICAgICAgICAgIHwgSW50ZXJuYWwgZm9ybWF0ICAgICB8
IFIgfCBHIHwgQiB8IEEgfFMgfCBGb3JtYXQgICAgICAgICB8IFR5cGUgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IENvbXBvbmVudCB0eXBlICAgICAgICB8IFNSR0IgfCBUZXh0dXJlIHN1cHBv
cnRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVuZGVyYWJsZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IEZpbHRlcmFibGUgICAgfAorICAgIEFkZFJHQkFGb3JtYXQo
Jm1hcCwgR0xfUjgsICAgICAgICAgICAgICAgICA4LCAgMCwgIDAsICAwLCAwLCBHTF9SRUQsICAg
ICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1B
TElaRUQsIGZhbHNlLCBSZXF1aXJlRVNPckV4dDwzLCAwLCAmRXh0ZW5zaW9uczo6dGV4dHVyZVJH
PiwgUmVxdWlyZUVTT3JFeHQ8MywgMCwgJkV4dGVuc2lvbnM6OnRleHR1cmVSRz4sIEFsd2F5c1N1
cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SOF9TTk9STSwgICAgICAgICAg
IDgsICAwLCAgMCwgIDAsIDAsIEdMX1JFRCwgICAgICAgICAgR0xfQllURSwgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsICAgZmFsc2UsIFJlcXVpcmVFUzwzLCAw
PiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0
KCZtYXAsIEdMX1JHOCwgICAgICAgICAgICAgICAgOCwgIDgsICAwLCAgMCwgMCwgR0xfUkcsICAg
ICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JN
QUxJWkVELCBmYWxzZSwgUmVxdWlyZUVTT3JFeHQ8MywgMCwgJkV4dGVuc2lvbnM6OnRleHR1cmVS
Rz4sIFJlcXVpcmVFU09yRXh0PDMsIDAsICZFeHRlbnNpb25zOjp0ZXh0dXJlUkc+LCBBbHdheXNT
dXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkc4X1NOT1JNLCAgICAgICAg
ICA4LCAgOCwgIDAsICAwLCAwLCBHTF9SRywgICAgICAgICAgIEdMX0JZVEUsICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELCAgIGZhbHNlLCBSZXF1aXJlRVM8Mywg
MD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1h
dCgmbWFwLCBHTF9SR0I4LCAgICAgICAgICAgICAgIDgsICA4LCAgOCwgIDAsIDAsIEdMX1JHQiwg
ICAgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVFU09yRXh0PDMsIDAsICZFeHRlbnNpb25zOjpyZ2I4cmdi
YTg+LCBSZXF1aXJlRVNPckV4dDwzLCAwLCAmRXh0ZW5zaW9uczo6cmdiOHJnYmE4PiwgQWx3YXlz
U3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQjhfU05PUk0sICAgICAg
ICAgOCwgIDgsICA4LCAgMCwgMCwgR0xfUkdCLCAgICAgICAgICBHTF9CWVRFLCAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwgICBmYWxzZSwgUmVxdWlyZUVTPDMs
IDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3Jt
YXQoJm1hcCwgR0xfUkdCNTY1LCAgICAgICAgICAgICA1LCAgNiwgIDUsICAwLCAwLCBHTF9SR0Is
ICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81LCAgICAgICAgIEdMX1VOU0lHTkVEX05P
Uk1BTElaRUQsIGZhbHNlLCBSZXF1aXJlRVM8MiwgMD4sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVxdWlyZUVTPDIsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5
c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0JBNCwgICAgICAgICAg
ICAgIDQsICA0LCAgNCwgIDQsIDAsIEdMX1JHQkEsICAgICAgICAgR0xfVU5TSUdORURfU0hPUlRf
NF80XzRfNCwgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVFUzwy
LCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8MiwgMD4sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9y
bWF0KCZtYXAsIEdMX1JHQjVfQTEsICAgICAgICAgICAgNSwgIDUsICA1LCAgMSwgMCwgR0xfUkdC
QSwgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xLCAgICAgICBHTF9VTlNJR05FRF9O
T1JNQUxJWkVELCBmYWxzZSwgUmVxdWlyZUVTPDIsIDA+LCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlcXVpcmVFUzwyLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdh
eXNTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCQTgsICAgICAgICAg
ICAgICA4LCAgOCwgIDgsICA4LCAwLCBHTF9SR0JBLCAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUs
ICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIGZhbHNlLCBSZXF1aXJlRVNP
ckV4dDwzLCAwLCAmRXh0ZW5zaW9uczo6cmdiOHJnYmE4PiwgUmVxdWlyZUVTT3JFeHQ8MywgMCwg
JkV4dGVuc2lvbnM6OnJnYjhyZ2JhOD4sIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZv
cm1hdCgmbWFwLCBHTF9SR0JBOF9TTk9STSwgICAgICAgIDgsICA4LCAgOCwgIDgsIDAsIEdMX1JH
QkEsICAgICAgICAgR0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU0lHTkVEX05P
Uk1BTElaRUQsICAgZmFsc2UsIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3
YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQjEwX0EyLCAgICAg
ICAgICAxMCwgMTAsIDEwLCAgMiwgMCwgR0xfUkdCQSwgICAgICAgICBHTF9VTlNJR05FRF9JTlRf
Ml8xMF8xMF8xMF9SRVYsICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxzZSwgUmVxdWlyZUVT
PDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzLCAwPiwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFG
b3JtYXQoJm1hcCwgR0xfUkdCMTBfQTJVSSwgICAgICAgIDEwLCAxMCwgMTAsICAyLCAwLCBHTF9S
R0JBX0lOVEVHRVIsIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViwgIEdMX1VOU0lHTkVE
X0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5l
dmVyU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1NSR0I4LCAgICAgICAg
ICAgICAgOCwgIDgsICA4LCAgMCwgMCwgR0xfUkdCLCAgICAgICAgICBHTF9VTlNJR05FRF9CWVRF
LCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCB0cnVlLCAgUmVxdWlyZUVT
T3JFeHQ8MywgMCwgJkV4dGVuc2lvbnM6OnNSR0I+LCAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFG
b3JtYXQoJm1hcCwgR0xfU1JHQjhfQUxQSEE4LCAgICAgICA4LCAgOCwgIDgsICA4LCAwLCBHTF9S
R0JBLCAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVE
X05PUk1BTElaRUQsIHRydWUsICBSZXF1aXJlRVNPckV4dDwzLCAwLCAmRXh0ZW5zaW9uczo6c1JH
Qj4sICAgICAgUmVxdWlyZUVTT3JFeHQ8MywgMCwgJkV4dGVuc2lvbnM6OnNSR0I+LCAgICAgIEFs
d2F5c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0I5X0U1LCAgICAg
ICAgICAgIDksICA5LCAgOSwgIDAsIDUsIEdMX1JHQiwgICAgICAgICAgR0xfVU5TSUdORURfSU5U
XzVfOV85XzlfUkVWLCAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVF
UzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JB
Rm9ybWF0KCZtYXAsIEdMX1I4SSwgICAgICAgICAgICAgICAgOCwgIDAsICAwLCAgMCwgMCwgR0xf
UkVEX0lOVEVHRVIsICBHTF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAg
ICAgICAgICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
ZXZlclN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SOFVJLCAgICAgICAg
ICAgICAgIDgsICAwLCAgMCwgIDAsIDAsIEdMX1JFRF9JTlRFR0VSLCAgR0xfVU5TSUdORURfQllU
RSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJlcXVpcmVF
UzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8MywgMD4sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFG
b3JtYXQoJm1hcCwgR0xfUjE2SSwgICAgICAgICAgICAgIDE2LCAgMCwgIDAsICAwLCAwLCBHTF9S
RURfSU5URUdFUiwgIEdMX1NIT1JULCAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwgICAg
ICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5l
dmVyU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1IxNlVJLCAgICAgICAg
ICAgICAxNiwgIDAsICAwLCAgMCwgMCwgR0xfUkVEX0lOVEVHRVIsICBHTF9VTlNJR05FRF9TSE9S
VCwgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVT
PDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzLCAwPiwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZv
cm1hdCgmbWFwLCBHTF9SMzJJLCAgICAgICAgICAgICAgMzIsICAwLCAgMCwgIDAsIDAsIEdMX1JF
RF9JTlRFR0VSLCAgR0xfSU5ULCAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULCAgICAg
ICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2
ZXJTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUjMyVUksICAgICAgICAg
ICAgIDMyLCAgMCwgIDAsICAwLCAwLCBHTF9SRURfSU5URUdFUiwgIEdMX1VOU0lHTkVEX0lOVCwg
ICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8
MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDMsIDA+LCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9y
bWF0KCZtYXAsIEdMX1JHOEksICAgICAgICAgICAgICAgOCwgIDgsICAwLCAgMCwgMCwgR0xfUkdf
SU5URUdFUiwgICBHTF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAg
ICAgICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZl
clN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SRzhVSSwgICAgICAgICAg
ICAgIDgsICA4LCAgMCwgIDAsIDAsIEdMX1JHX0lOVEVHRVIsICAgR0xfVU5TSUdORURfQllURSwg
ICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwz
LCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8MywgMD4sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3Jt
YXQoJm1hcCwgR0xfUkcxNkksICAgICAgICAgICAgIDE2LCAxNiwgIDAsICAwLCAwLCBHTF9SR19J
TlRFR0VSLCAgIEdMX1NIT1JULCAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwgICAgICAg
ICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVy
U3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHMTZVSSwgICAgICAgICAg
ICAxNiwgMTYsICAwLCAgMCwgMCwgR0xfUkdfSU5URUdFUiwgICBHTF9VTlNJR05FRF9TSE9SVCwg
ICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDMs
IDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzLCAwPiwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1h
dCgmbWFwLCBHTF9SRzMySSwgICAgICAgICAgICAgMzIsIDMyLCAgMCwgIDAsIDAsIEdMX1JHX0lO
VEVHRVIsICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAg
ICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJT
dXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUjExRl9HMTFGX0IxMEYsICAg
IDExLCAxMSwgMTAsICAwLCAwLCBHTF9SR0IsICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVF8xMEZf
MTFGXzExRl9SRVYsIEdMX0ZMT0FULCAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mywg
MD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6
Y29sb3JCdWZmZXJGbG9hdD4sICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1h
dCgmbWFwLCBHTF9SRzMyVUksICAgICAgICAgICAgMzIsIDMyLCAgMCwgIDAsIDAsIEdMX1JHX0lO
VEVHRVIsICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5U
LCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJT
dXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCOEksICAgICAgICAgICAg
ICA4LCAgOCwgIDgsICAwLCAwLCBHTF9SR0JfSU5URUdFUiwgIEdMX0JZVEUsICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mywg
MD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0
KCZtYXAsIEdMX1JHQjhVSSwgICAgICAgICAgICAgOCwgIDgsICA4LCAgMCwgMCwgR0xfUkdCX0lO
VEVHRVIsICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQs
ICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1
cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0IxNkksICAgICAgICAgICAg
MTYsIDE2LCAxNiwgIDAsIDAsIEdMX1JHQl9JTlRFR0VSLCAgR0xfU0hPUlQsICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzLCAw
PiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQo
Jm1hcCwgR0xfUkdCMTZVSSwgICAgICAgICAgIDE2LCAxNiwgMTYsICAwLCAwLCBHTF9SR0JfSU5U
RUdFUiwgIEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwg
ICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3Vw
cG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQjMySSwgICAgICAgICAgICAz
MiwgMzIsIDMyLCAgMCwgMCwgR0xfUkdCX0lOVEVHRVIsICBHTF9JTlQsICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDMsIDA+
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgm
bWFwLCBHTF9SR0IzMlVJLCAgICAgICAgICAgMzIsIDMyLCAzMiwgIDAsIDAsIEdMX1JHQl9JTlRF
R0VSLCAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAg
ICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBw
b3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCQThJLCAgICAgICAgICAgICA4
LCAgOCwgIDgsICA4LCAwLCBHTF9SR0JBX0lOVEVHRVIsIEdMX0JZVEUsICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8MywgMD4s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZt
YXAsIEdMX1JHQkE4VUksICAgICAgICAgICAgOCwgIDgsICA4LCAgOCwgMCwgR0xfUkdCQV9JTlRF
R0VSLCBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAg
ICAgICBmYWxzZSwgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBv
cnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0JBMTZJLCAgICAgICAgICAgMTYs
IDE2LCAxNiwgMTYsIDAsIEdMX1JHQkFfSU5URUdFUiwgR0xfU0hPUlQsICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzLCAwPiwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1h
cCwgR0xfUkdCQTE2VUksICAgICAgICAgIDE2LCAxNiwgMTYsIDE2LCAwLCBHTF9SR0JBX0lOVEVH
RVIsIEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAg
ICAgIGZhbHNlLCBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9y
dGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQkEzMkksICAgICAgICAgICAzMiwg
MzIsIDMyLCAzMiwgMCwgR0xfUkdCQV9JTlRFR0VSLCBHTF9JTlQsICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDMsIDA+LCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFw
LCBHTF9SR0JBMzJVSSwgICAgICAgICAgMzIsIDMyLCAzMiwgMzIsIDAsIEdMX1JHQkFfSU5URUdF
UiwgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAg
ICAgZmFsc2UsIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
ZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0
ZWQpOwogCiAgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9CR1JBOF9FWFQsICAgICAgICAgIDgs
ICA4LCAgOCwgIDgsIDAsIEdMX0JHUkFfRVhULCAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAg
ICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxzZSwgUmVxdWlyZUV4dDwmRXh0
ZW5zaW9uczo6dGV4dHVyZUZvcm1hdEJHUkE4ODg4PiwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6
dGV4dHVyZUZvcm1hdEJHUkE4ODg4PiwgQWx3YXlzU3VwcG9ydGVkKTsKICAgICBBZGRSR0JBRm9y
bWF0KCZtYXAsIEdMX0JHUkE0X0FOR0xFWCwgICAgICAgNCwgIDQsICA0LCAgNCwgMCwgR0xfQkdS
QV9FWFQsICAgICBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80X1JFVl9FWFQsIEdMX1VOU0lHTkVE
X05PUk1BTElaRUQsIGZhbHNlLCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlRm9ybWF0
QkdSQTg4ODg+LCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlRm9ybWF0QkdSQTg4ODg+
LCBBbHdheXNTdXBwb3J0ZWQpOwpAQCAtNDg4LDEzICs1MDQsMTMgQEAgc3RhdGljIEludGVybmFs
Rm9ybWF0SW5mb01hcCBCdWlsZEludGVybmFsRm9ybWF0SW5mb01hcCgpCiAgICAgQWRkUkdCQUZv
cm1hdCgmbWFwLCBHTF9SR0JBMzJGLCAgICAgICAgICAgMzIsIDMyLCAzMiwgMzIsIDAsIEdMX1JH
QkEsICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsIGZh
bHNlLCBGbG9hdFN1cHBvcnQsICAgICAgIEZsb2F0UmVuZGVyYWJsZVN1cHBvcnQsICAgICAgIFJl
cXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVGbG9hdExpbmVhcj4gICAgKTsKIAogICAgIC8v
IERlcHRoIHN0ZW5jaWwgZm9ybWF0cwotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIHwg
SW50ZXJuYWwgZm9ybWF0ICAgICAgICAgfCBEIHxTIHwgWCB8IEZvcm1hdCAgICAgICAgICAgIHwg
VHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb21wb25lbnQgdHlwZSAgICAgICAg
fCBTdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJlbmRlcmFi
bGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCBGaWx0ZXJhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwKLSAgICBBZGREZXB0aFN0ZW5jaWxGb3JtYXQoJm1hcCwgR0xfREVQVEhfQ09NUE9O
RU5UMTYsICAgICAxNiwgMCwgIDAsIEdMX0RFUFRIX0NPTVBPTkVOVCwgR0xfVU5TSUdORURfU0hP
UlQsICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBSZXF1aXJlRVM8Mj4s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwyPiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcz4pOwotICAg
IEFkZERlcHRoU3RlbmNpbEZvcm1hdCgmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQyNCwgICAgIDI0
LCAwLCAgMCwgR0xfREVQVEhfQ09NUE9ORU5ULCBHTF9VTlNJR05FRF9JTlQsICAgICAgICAgICAg
ICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVF
U09yRXh0PDMsICZFeHRlbnNpb25zOjpkZXB0aFRleHR1cmVzPik7Ci0gICAgQWRkRGVwdGhTdGVu
Y2lsRm9ybWF0KCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVDMyRiwgICAgMzIsIDAsICAwLCBHTF9E
RVBUSF9DT01QT05FTlQsIEdMX0ZMT0FULCAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkxP
QVQsICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4
dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXM+KTsKLSAgICBBZGREZXB0aFN0ZW5jaWxGb3JtYXQoJm1h
cCwgR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTLCAzMiwgMCwgIDAsIEdMX0RFUFRIX0NPTVBPTkVO
VCwgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJ
WkVELCBSZXF1aXJlRXh0T3JFeHQ8JkV4dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXMsICZFeHRlbnNp
b25zOjpkZXB0aDMyPiwgUmVxdWlyZUV4dE9yRXh0PCZFeHRlbnNpb25zOjpkZXB0aFRleHR1cmVz
LCAmRXh0ZW5zaW9uczo6ZGVwdGgzMj4sIEFsd2F5c1N1cHBvcnRlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICApOwotICAgIEFkZERlcHRoU3RlbmNpbEZvcm1hdCgmbWFwLCBHTF9ERVBUSDI0
X1NURU5DSUw4LCAgICAgIDI0LCA4LCAgMCwgR0xfREVQVEhfU1RFTkNJTCwgICBHTF9VTlNJR05F
RF9JTlRfMjRfOCwgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIFJlcXVpcmVF
U09yRXh0PDMsICZFeHRlbnNpb25zOjpkZXB0aFRleHR1cmVzPiwgUmVxdWlyZUVTT3JFeHRPckV4
dDwzLCAmRXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcywgJkV4dGVuc2lvbnM6OnBhY2tlZERlcHRo
U3RlbmNpbD4sIEFsd2F5c1N1cHBvcnRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7
Ci0gICAgQWRkRGVwdGhTdGVuY2lsRm9ybWF0KCZtYXAsIEdMX0RFUFRIMzJGX1NURU5DSUw4LCAg
ICAgMzIsIDgsIDI0LCBHTF9ERVBUSF9TVEVOQ0lMLCAgIEdMX0ZMT0FUXzMyX1VOU0lHTkVEX0lO
VF8yNF84X1JFViwgR0xfRkxPQVQsICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3
YXlzU3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAvLyAgICAg
ICAgICAgICAgICAgICAgICAgICB8IEludGVybmFsIGZvcm1hdCAgICAgICAgIHwgRCB8UyB8IFgg
fCBGb3JtYXQgICAgICAgICAgICB8IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
Q29tcG9uZW50IHR5cGUgICAgICAgIHwgU3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCBSZW5kZXJhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRmlsdGVyYWJs
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgQWRkRGVwdGhTdGVuY2ls
Rm9ybWF0KCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCAgICAgMTYsIDAsICAwLCBHTF9ERVBU
SF9DT01QT05FTlQsIEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfTk9STUFMSVpFRCwgUmVxdWlyZUVTPDIsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZXF1aXJlRVM8MiwgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTT3JFeHQ8Mywg
MCwgJkV4dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXM+KTsKKyAgICBBZGREZXB0aFN0ZW5jaWxGb3Jt
YXQoJm1hcCwgR0xfREVQVEhfQ09NUE9ORU5UMjQsICAgICAyNCwgMCwgIDAsIEdMX0RFUFRIX0NP
TVBPTkVOVCwgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9O
T1JNQUxJWkVELCBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVNPckV4dDwzLCAwLCAm
RXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcz4pOworICAgIEFkZERlcHRoU3RlbmNpbEZvcm1hdCgm
bWFwLCBHTF9ERVBUSF9DT01QT05FTlQzMkYsICAgIDMyLCAwLCAgMCwgR0xfREVQVEhfQ09NUE9O
RU5ULCBHTF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULCAgICAgICAg
ICAgICAgIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFU09yRXh0PDMsIDAsICZFeHRl
bnNpb25zOjpkZXB0aFRleHR1cmVzPik7CisgICAgQWRkRGVwdGhTdGVuY2lsRm9ybWF0KCZtYXAs
IEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUywgMzIsIDAsICAwLCBHTF9ERVBUSF9DT01QT05FTlQs
IEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpF
RCwgUmVxdWlyZUV4dE9yRXh0PCZFeHRlbnNpb25zOjpkZXB0aFRleHR1cmVzLCAmRXh0ZW5zaW9u
czo6ZGVwdGgzMj4sIFJlcXVpcmVFeHRPckV4dDwmRXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcywg
JkV4dGVuc2lvbnM6OmRlcHRoMzI+LCAgICAgQWx3YXlzU3VwcG9ydGVkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKTsKKyAgICBBZGREZXB0aFN0ZW5jaWxGb3JtYXQoJm1hcCwgR0xf
REVQVEgyNF9TVEVOQ0lMOCwgICAgICAyNCwgOCwgIDAsIEdMX0RFUFRIX1NURU5DSUwsICAgR0xf
VU5TSUdORURfSU5UXzI0XzgsICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBS
ZXF1aXJlRVNPckV4dDwzLCAwLCAmRXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcz4sIFJlcXVpcmVF
U09yRXh0T3JFeHQ8MywgMCwgJkV4dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXMsICZFeHRlbnNpb25z
OjpwYWNrZWREZXB0aFN0ZW5jaWw+LCBBbHdheXNTdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICApOworICAgIEFkZERlcHRoU3RlbmNpbEZvcm1hdCgmbWFwLCBHTF9ERVBU
SDMyRl9TVEVOQ0lMOCwgICAgIDMyLCA4LCAyNCwgR0xfREVQVEhfU1RFTkNJTCwgICBHTF9GTE9B
VF8zMl9VTlNJR05FRF9JTlRfMjRfOF9SRVYsIEdMX0ZMT0FULCAgICAgICAgICAgICAgIFJlcXVp
cmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDMs
IDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICk7CiAgICAgLy8gU1RFTkNJTF9JTkRFWDggaXMgc3BlY2lhbC1jYXNlZCwgc2Vl
IGFyb3VuZCB0aGUgYm90dG9tIG9mIHRoZSBsaXN0LgogCiAgICAgLy8gTHVtaW5hbmNlIGFscGhh
IGZvcm1hdHMKQEAgLTUxMCwzNiArNTI2LDM2IEBAIHN0YXRpYyBJbnRlcm5hbEZvcm1hdEluZm9N
YXAgQnVpbGRJbnRlcm5hbEZvcm1hdEluZm9NYXAoKQogICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxG
b3JtYXRJbmZvUGFpcihHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhULCBMVU1BRm9ybWF0KDE2LCAx
NiwgR0xfTFVNSU5BTkNFX0FMUEhBLCBHTF9IQUxGX0ZMT0FULCAgICBHTF9GTE9BVCwgICAgICAg
ICAgICAgICBSZXF1aXJlRXh0QW5kRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlU3RvcmFnZSwgJkV4
dGVuc2lvbnM6OnRleHR1cmVIYWxmRmxvYXQ+LCBOZXZlclN1cHBvcnRlZCwgQWx3YXlzU3VwcG9y
dGVkKSkpOwogCiAgICAgLy8gVW5zaXplZCBmb3JtYXRzCi0gICAgLy8gICAgICAgICAgICAgICAg
ICAgIHwgSW50ZXJuYWwgZm9ybWF0ICAgfCBGb3JtYXQgICAgICAgICAgICB8IFN1cHBvcnRlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZW5kZXJhYmxlICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRmlsdGVyYWJsZSAgICB8Ci0gICAg
QWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9BTFBIQSwgICAgICAgICAgIEdMX0FMUEhBLCAgICAg
ICAgICAgUmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdh
eXNTdXBwb3J0ZWQpOwotICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfTFVNSU5BTkNFLCAg
ICAgICBHTF9MVU1JTkFOQ0UsICAgICAgIFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKLSAgICBBZGRVbnNpemVkRm9ybWF0KCZt
YXAsIEdMX0xVTUlOQU5DRV9BTFBIQSwgR0xfTFVNSU5BTkNFX0FMUEhBLCBSZXF1aXJlRVM8Mj4s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7Ci0gICAg
QWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9SRUQsICAgICAgICAgICAgIEdMX1JFRCwgICAgICAg
ICAgICAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnRleHR1cmVSRz4sICAgICAgICAg
IE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdh
eXNTdXBwb3J0ZWQpOwotICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfUkcsICAgICAgICAg
ICAgICBHTF9SRywgICAgICAgICAgICAgIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjp0
ZXh0dXJlUkc+LCAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKLSAgICBBZGRVbnNpemVkRm9ybWF0KCZt
YXAsIEdMX1JHQiwgICAgICAgICAgICAgR0xfUkdCLCAgICAgICAgICAgICBSZXF1aXJlRVM8Mj4s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDI+LCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7Ci0gICAg
QWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9SR0JBLCAgICAgICAgICAgIEdMX1JHQkEsICAgICAg
ICAgICAgUmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdh
eXNTdXBwb3J0ZWQpOwotICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfUkVEX0lOVEVHRVIs
ICAgICBHTF9SRURfSU5URUdFUiwgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQgKTsKLSAgICBBZGRVbnNpemVkRm9ybWF0KCZt
YXAsIEdMX1JHX0lOVEVHRVIsICAgICAgR0xfUkdfSU5URUdFUiwgICAgICBSZXF1aXJlRVM8Mz4s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkICk7Ci0gICAg
QWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9SR0JfSU5URUdFUiwgICAgIEdMX1JHQl9JTlRFR0VS
LCAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZl
clN1cHBvcnRlZCApOwotICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfUkdCQV9JTlRFR0VS
LCAgICBHTF9SR0JBX0lOVEVHRVIsICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQgKTsKLSAgICBBZGRVbnNpemVkRm9ybWF0KCZt
YXAsIEdMX0JHUkFfRVhULCAgICAgICAgR0xfQkdSQV9FWFQsICAgICAgICBSZXF1aXJlRXh0PCZF
eHRlbnNpb25zOjp0ZXh0dXJlRm9ybWF0QkdSQTg4ODg+LCAgICAgUmVxdWlyZUV4dDwmRXh0ZW5z
aW9uczo6dGV4dHVyZUZvcm1hdEJHUkE4ODg4PiwgICAgIEFsd2F5c1N1cHBvcnRlZCk7Ci0gICAg
QWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQsIEdMX0RFUFRIX0NPTVBP
TkVOVCwgUmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdh
eXNTdXBwb3J0ZWQpOwotICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfREVQVEhfU1RFTkNJ
TCwgICBHTF9ERVBUSF9TVEVOQ0lMLCAgIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjpw
YWNrZWREZXB0aFN0ZW5jaWw+LCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6cGFja2Vk
RGVwdGhTdGVuY2lsPiwgQWx3YXlzU3VwcG9ydGVkKTsKLSAgICBBZGRVbnNpemVkRm9ybWF0KCZt
YXAsIEdMX1NSR0JfRVhULCAgICAgICAgR0xfUkdCLCAgICAgICAgICAgICBSZXF1aXJlRVNPckV4
dDwzLCAmRXh0ZW5zaW9uczo6c1JHQj4sICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7Ci0gICAg
QWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9TUkdCX0FMUEhBX0VYVCwgIEdMX1JHQkEsICAgICAg
ICAgICAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnNSR0I+LCAgICAgICAgICAgICAg
IFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjpzUkdCPiwgICAgICAgICAgICAgICBBbHdh
eXNTdXBwb3J0ZWQpOworICAgIC8vICAgICAgICAgICAgICAgICAgICB8IEludGVybmFsIGZvcm1h
dCAgIHwgRm9ybWF0ICAgICAgICAgICAgfCBTdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgUmVuZGVyYWJsZSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IEZpbHRlcmFibGUgICAgfAorICAgIEFkZFVuc2l6ZWRGb3Jt
YXQoJm1hcCwgR0xfQUxQSEEsICAgICAgICAgICBHTF9BTFBIQSwgICAgICAgICAgIFJlcXVpcmVF
UzwyLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBv
cnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9y
dGVkKTsKKyAgICBBZGRVbnNpemVkRm9ybWF0KCZtYXAsIEdMX0xVTUlOQU5DRSwgICAgICAgR0xf
TFVNSU5BTkNFLCAgICAgICBSZXF1aXJlRVM8MiwgMD4sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkVW5zaXplZEZvcm1hdCgmbWFw
LCBHTF9MVU1JTkFOQ0VfQUxQSEEsIEdMX0xVTUlOQU5DRV9BTFBIQSwgUmVxdWlyZUVTPDIsIDA+
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOwor
ICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfUkVELCAgICAgICAgICAgICBHTF9SRUQsICAg
ICAgICAgICAgIFJlcXVpcmVFU09yRXh0PDMsIDAsICZFeHRlbnNpb25zOjp0ZXh0dXJlUkc+LCAg
ICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRVbnNpemVkRm9ybWF0KCZtYXAsIEdMX1JH
LCAgICAgICAgICAgICAgR0xfUkcsICAgICAgICAgICAgICBSZXF1aXJlRVNPckV4dDwzLCAwLCAm
RXh0ZW5zaW9uczo6dGV4dHVyZVJHPiwgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRk
VW5zaXplZEZvcm1hdCgmbWFwLCBHTF9SR0IsICAgICAgICAgICAgIEdMX1JHQiwgICAgICAgICAg
ICAgUmVxdWlyZUVTPDIsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlcXVpcmVFUzwyLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBB
bHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfUkdCQSwgICAg
ICAgICAgICBHTF9SR0JBLCAgICAgICAgICAgIFJlcXVpcmVFUzwyLCAwPiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8MiwgMD4sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRVbnNpemVk
Rm9ybWF0KCZtYXAsIEdMX1JFRF9JTlRFR0VSLCAgICAgR0xfUkVEX0lOVEVHRVIsICAgICBSZXF1
aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJT
dXBwb3J0ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3Vw
cG9ydGVkICk7CisgICAgQWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9SR19JTlRFR0VSLCAgICAg
IEdMX1JHX0lOVEVHRVIsICAgICAgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCApOworICAgIEFkZFVuc2l6ZWRGb3JtYXQo
Jm1hcCwgR0xfUkdCX0lOVEVHRVIsICAgICBHTF9SR0JfSU5URUdFUiwgICAgIFJlcXVpcmVFUzwz
LCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRl
ZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQg
KTsKKyAgICBBZGRVbnNpemVkRm9ybWF0KCZtYXAsIEdMX1JHQkFfSU5URUdFUiwgICAgR0xfUkdC
QV9JTlRFR0VSLCAgICBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5ldmVyU3VwcG9ydGVkICk7CisgICAgQWRkVW5zaXplZEZvcm1hdCgmbWFwLCBH
TF9CR1JBX0VYVCwgICAgICAgIEdMX0JHUkFfRVhULCAgICAgICAgUmVxdWlyZUV4dDwmRXh0ZW5z
aW9uczo6dGV4dHVyZUZvcm1hdEJHUkE4ODg4PiwgICAgICAgIFJlcXVpcmVFeHQ8JkV4dGVuc2lv
bnM6OnRleHR1cmVGb3JtYXRCR1JBODg4OD4sICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOworICAg
IEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfREVQVEhfQ09NUE9ORU5ULCBHTF9ERVBUSF9DT01Q
T05FTlQsIFJlcXVpcmVFUzwyLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZXF1aXJlRVM8MiwgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRVbnNpemVkRm9ybWF0KCZtYXAsIEdMX0RFUFRI
X1NURU5DSUwsICAgR0xfREVQVEhfU1RFTkNJTCwgICBSZXF1aXJlRVNPckV4dDwzLCAwLCAmRXh0
ZW5zaW9uczo6cGFja2VkRGVwdGhTdGVuY2lsPiwgUmVxdWlyZUVTT3JFeHQ8MywgMCwgJkV4dGVu
c2lvbnM6OnBhY2tlZERlcHRoU3RlbmNpbD4sIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkVW5z
aXplZEZvcm1hdCgmbWFwLCBHTF9TUkdCX0VYVCwgICAgICAgIEdMX1JHQiwgICAgICAgICAgICAg
UmVxdWlyZUVTT3JFeHQ8MywgMCwgJkV4dGVuc2lvbnM6OnNSR0I+LCAgICAgICAgICAgICAgIE5l
dmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdh
eXNTdXBwb3J0ZWQpOworICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfU1JHQl9BTFBIQV9F
WFQsICBHTF9SR0JBLCAgICAgICAgICAgIFJlcXVpcmVFU09yRXh0PDMsIDAsICZFeHRlbnNpb25z
OjpzUkdCPiwgICAgICAgICAgICAgICBSZXF1aXJlRVNPckV4dDwzLCAwLCAmRXh0ZW5zaW9uczo6
c1JHQj4sICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKIAogICAgIC8vIENvbXByZXNz
ZWQgZm9ybWF0cywgRnJvbSBFUyAzLjAuMSBzcGVjLCB0YWJsZSAzLjE2Ci0gICAgLy8gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfFcgfEggfCBCUyB8Q0N8IEZvcm1hdCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAgICAgICAgICAgfCBTUkdC
IHwgU3VwcG9ydGVkICAgfCBSZW5kZXJhYmxlICAgIHwgRmlsdGVyYWJsZSAgICB8Ci0gICAgbWFw
Lmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfUjExX0VBQywgICAg
ICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgMSwgR0xfQ09N
UFJFU1NFRF9SMTFfRUFDLCAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUs
IGZhbHNlLCBSZXF1aXJlRVM8Mz4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7
Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU0lH
TkVEX1IxMV9FQUMsICAgICAgICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwg
MSwgR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQywgICAgICAgICAgICAgICAgIEdMX1VOU0lH
TkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRVM8Mz4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBw
b3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBS
RVNTRURfUkcxMV9FQUMsICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQs
IDQsIDEyOCwgMiwgR0xfQ09NUFJFU1NFRF9SRzExX0VBQywgICAgICAgICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRVM8Mz4sIE5ldmVyU3VwcG9ydGVkLCBB
bHdheXNTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWly
KEdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDLCAgICAgICAgICAgICAgICBDb21wcmVzc2Vk
Rm9ybWF0KDQsIDQsIDEyOCwgMiwgR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMsICAgICAg
ICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRVM8Mz4sIE5ldmVyU3Vw
cG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1h
dEluZm9QYWlyKEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyLCAgICAgICAgICAgICAgICAgICAgICBD
b21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgMywgR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIsICAg
ICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRVM8Mz4s
IE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRl
cm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMiwgICAgICAgICAgICAg
ICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgMywgR0xfQ09NUFJFU1NFRF9TUkdC
OF9FVEMyLCAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIHRydWUsICBSZXF1
aXJlRVM8Mz4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmlu
c2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9V
R0hfQUxQSEExX0VUQzIsICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgMywgR0xfQ09NUFJF
U1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiwgIEdMX1VOU0lHTkVEX0JZVEUsIGZh
bHNlLCBSZXF1aXJlRVM8Mz4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7Ci0g
ICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU1JHQjhf
UFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLCBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgMywg
R0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsIEdMX1VOU0lHTkVE
X0JZVEUsIHRydWUsICBSZXF1aXJlRVM8Mz4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0
ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNT
RURfUkdCQThfRVRDMl9FQUMsICAgICAgICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQs
IDEyOCwgNCwgR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgICAgICAgICAgICAgICAgIEdM
X1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRVM8Mz4sIE5ldmVyU3VwcG9ydGVkLCBBbHdh
eXNTdXBwb3J0ZWQpKSk7Ci0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdM
X0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDLCAgICAgICAgICBDb21wcmVzc2VkRm9y
bWF0KDQsIDQsIDEyOCwgNCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMsICAg
ICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIHRydWUsICBSZXF1aXJlRVM8Mz4sIE5ldmVyU3VwcG9y
dGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg
ICAgICAgICAgICAgfFcgfEggfCBCUyB8Q0N8IEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCBUeXBlICAgICAgICAgICAgfCBTUkdCIHwgU3VwcG9ydGVkICAgICAg
fCBSZW5kZXJhYmxlICAgIHwgRmlsdGVyYWJsZSAgICB8CisgICAgbWFwLmluc2VydChJbnRlcm5h
bEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfUjExX0VBQywgICAgICAgICAgICAgICAgICAg
ICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgMSwgR0xfQ09NUFJFU1NFRF9SMTFfRUFD
LCAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJl
RVM8MywgMD4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmlu
c2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMs
ICAgICAgICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgMSwgR0xfQ09NUFJF
U1NFRF9TSUdORURfUjExX0VBQywgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIGZh
bHNlLCBSZXF1aXJlRVM8MywgMD4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7
CisgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfUkcx
MV9FQUMsICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsIDEyOCwg
MiwgR0xfQ09NUFJFU1NFRF9SRzExX0VBQywgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lH
TkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRVM8MywgMD4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNT
dXBwb3J0ZWQpKSk7CisgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NP
TVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDLCAgICAgICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0
KDQsIDQsIDEyOCwgMiwgR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMsICAgICAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRVM8MywgMD4sIE5ldmVyU3VwcG9y
dGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdElu
Zm9QYWlyKEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyLCAgICAgICAgICAgICAgICAgICAgICBDb21w
cmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgMywgR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIsICAgICAg
ICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRVM8MywgMD4s
IE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmluc2VydChJbnRl
cm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMiwgICAgICAgICAgICAg
ICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgMywgR0xfQ09NUFJFU1NFRF9TUkdC
OF9FVEMyLCAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIHRydWUsICBSZXF1
aXJlRVM8MywgMD4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFw
Lmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRI
Uk9VR0hfQUxQSEExX0VUQzIsICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgMywgR0xfQ09N
UFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiwgIEdMX1VOU0lHTkVEX0JZVEUs
IGZhbHNlLCBSZXF1aXJlRVM8MywgMD4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQp
KSk7CisgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURf
U1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLCBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2
NCwgMywgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsIEdMX1VO
U0lHTkVEX0JZVEUsIHRydWUsICBSZXF1aXJlRVM8MywgMD4sIE5ldmVyU3VwcG9ydGVkLCBBbHdh
eXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdM
X0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsICAgICAgICAgICAgICAgICBDb21wcmVzc2VkRm9y
bWF0KDQsIDQsIDEyOCwgNCwgR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQywgICAgICAgICAg
ICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRVM8MywgMD4sIE5ldmVyU3Vw
cG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1h
dEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDLCAgICAgICAgICBD
b21wcmVzc2VkRm9ybWF0KDQsIDQsIDEyOCwgNCwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
RVRDMl9FQUMsICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIHRydWUsICBSZXF1aXJlRVM8Mywg
MD4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CiAKICAgICAvLyBGcm9tIEdM
X0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKICAgICAvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IEludGVybmFsIGZvcm1hdCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAg
ICAgICAgIHxXIHxIIHwgQlMgfENDfCBGb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCBUeXBlICAgICAgICAgICAgfCBTUkdCIHwgU3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IFJlbmRlcmFibGUgICAgfCBGaWx0ZXJhYmxlICAgIHwKQEAg
LTU1NSw2ICs1NzEsMTMgQEAgc3RhdGljIEludGVybmFsRm9ybWF0SW5mb01hcCBCdWlsZEludGVy
bmFsRm9ybWF0SW5mb01hcCgpCiAgICAgLy8gRnJvbSBHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JH
QjhfdGV4dHVyZQogICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9FVEMx
X1JHQjhfT0VTLCAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwg
MywgR0xfRVRDMV9SR0I4X09FUywgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwg
ZmFsc2UsIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OmNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmU+
LCBOZXZlclN1cHBvcnRlZCwgQWx3YXlzU3VwcG9ydGVkKSkpOwogCisgICAgLy8gRnJvbSBHTF9F
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IKKyAgICAvLyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IEludGVybmFsIGZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgfCAg
ICAgICAgICAgICAgICB8VyB8SCB8IEJTIHxDQ3wgRm9ybWF0ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IFR5cGUgICAgICAgICAgICB8IFNSR0IgfCBTdXBwb3J0ZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVuZGVyYWJsZSAgICB8IEZpbHRlcmFi
bGUgICAgfAorICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9DT01QUkVT
U0VEX1NSR0JfUzNUQ19EWFQxX0VYVCwgICAgICAgQ29tcHJlc3NlZEZvcm1hdCg0LCA0LCAgNjQs
IDMsIEdMX0NPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhULCAgICAgICBHTF9VTlNJR05FRF9C
WVRFLCB0cnVlLCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25TM1RD
c1JHQj4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmluc2Vy
dChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RY
VDFfRVhULCBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgNCwgR0xfQ09NUFJFU1NFRF9TUkdC
X0FMUEhBX1MzVENfRFhUMV9FWFQsIEdMX1VOU0lHTkVEX0JZVEUsIHRydWUsIFJlcXVpcmVFeHQ8
JkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvblMzVENzUkdCPiwgTmV2ZXJTdXBwb3J0ZWQs
IEFsd2F5c1N1cHBvcnRlZCkpKTsKKyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1Bh
aXIoR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQsIENvbXByZXNzZWRGb3Jt
YXQoNCwgNCwgMTI4LCA0LCBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVCwg
R0xfVU5TSUdORURfQllURSwgdHJ1ZSwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUNv
bXByZXNzaW9uUzNUQ3NSR0I+LCBOZXZlclN1cHBvcnRlZCwgQWx3YXlzU3VwcG9ydGVkKSkpOwor
ICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9DT01QUkVTU0VEX1NSR0Jf
QUxQSEFfUzNUQ19EWFQ1X0VYVCwgQ29tcHJlc3NlZEZvcm1hdCg0LCA0LCAxMjgsIDQsIEdMX0NP
TVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhULCBHTF9VTlNJR05FRF9CWVRFLCB0cnVl
LCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25TM1RDc1JHQj4sIE5l
dmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisKICAgICAvLyBGcm9tIEtIUl90ZXh0
dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyCiAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg
ICAgICAgICAgfCBXIHwgSCB8IEJTIHxDQ3wgRm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IFR5cGUgICAgICAgICAgICB8IFNSR0IgfCBTdXBwb3J0ZWQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCBSZW5kZXJhYmxlICAgICB8IEZpbHRlcmFibGUgICAgfAogICAg
IG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9DT01QUkVTU0VEX1JHQkFfQVNU
Q180eDRfS0hSLCAgICAgICAgICAgQ29tcHJlc3NlZEZvcm1hdCggNCwgIDQsIDEyOCwgNCwgR0xf
Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUiwgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUs
IGZhbHNlLCBSZXF1aXJlRXh0T3JFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkFT
VENIRFIsICZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25BU1RDTERSPiwgTmV2ZXJTdXBw
b3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKQEAgLTU5MSwxMSArNjE0LDE2IEBAIHN0YXRpYyBJ
bnRlcm5hbEZvcm1hdEluZm9NYXAgQnVpbGRJbnRlcm5hbEZvcm1hdEluZm9NYXAoKQogICAgIC8v
IC0gTXVsdGlzYW1wbGVkIGJ1ZmZlciBhcmUgZGlzYWxsb3dlZCBmb3Igbm9uLW5vcm1hbGl6ZWQg
aW50ZWdlciBjb21wb25lbnQgdHlwZXMgYW5kIHdlIHdhbnQgdG8gc3VwcG9ydCBpdCBmb3IgU1RF
TkNJTF9JTkRFWDgKICAgICAvLyAtIEFsbCBvdGhlciBzdGVuY2lsIGZvcm1hdHMgKGFsbCBkZXB0
aC1zdGVuY2lsKSBhcmUgZWl0aGVyIGZsb2F0IG9yIG5vcm1hbGl6ZWQKICAgICAvLyAtIEl0IGFm
ZmVjdHMgb25seSB2YWxpZGF0aW9uIG9mIGludGVybmFsZm9ybWF0IGluIFJlbmRlcmJ1ZmZlclN0
b3JhZ2VNdWx0aXNhbXBsZS4KLSAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB8IEludGVy
bmFsIGZvcm1hdCAgfEQgfFMgfFggfCBGb3JtYXQgICAgfCBUeXBlICAgICAgICAgICAgfCBDb21w
b25lbnQgdHlwZSAgICAgICAgfCBTdXBwb3J0ZWQgICB8IFJlbmRlcmFibGUgIHwgRmlsdGVyYWJs
ZSAgIHwKLSAgICBBZGREZXB0aFN0ZW5jaWxGb3JtYXQoJm1hcCwgR0xfU1RFTkNJTF9JTkRFWDgs
IDAsIDgsIDAsIEdMX1NURU5DSUwsIEdMX1VOU0lHTkVEX0JZVEUsIEdMX1VOU0lHTkVEX05PUk1B
TElaRUQsIFJlcXVpcmVFUzwyPiwgUmVxdWlyZUVTPDI+LCBOZXZlclN1cHBvcnRlZCk7CisgICAg
Ly8gICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgIHxEIHxTIHxYIHwg
Rm9ybWF0ICAgIHwgVHlwZSAgICAgICAgICAgIHwgQ29tcG9uZW50IHR5cGUgICAgICAgIHwgU3Vw
cG9ydGVkICAgICAgfCBSZW5kZXJhYmxlICAgICB8IEZpbHRlcmFibGUgICB8CisgICAgQWRkRGVw
dGhTdGVuY2lsRm9ybWF0KCZtYXAsIEdMX1NURU5DSUxfSU5ERVg4LCAwLCA4LCAwLCBHTF9TVEVO
Q0lMLCBHTF9VTlNJR05FRF9CWVRFLCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBSZXF1aXJlRVM8
MiwgMD4sIFJlcXVpcmVFUzwyLCAwPiwgTmV2ZXJTdXBwb3J0ZWQpOwogCiAgICAgLy8gRnJvbSBH
TF9BTkdMRV9sb3NzeV9ldGNfZGVjb2RlCi0gICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdElu
Zm9QYWlyKEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEUsIENvbXByZXNzZWRGb3JtYXQo
NCwgNCwgNjQsIDMsIEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEUsIEdMX1VOU0lHTkVE
X0JZVEUsIGZhbHNlLCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjpsb3NzeUVUQ0RlY29kZT4sIE5l
dmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgLy8gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHxXIHxIIHxCUyB8Q0N8IEZv
cm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgVHlwZSAgICAgICAgICAgIHwgU1JHQiB8IFN1cHBvcnRlZCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IFJlbmRlcmFibGUgICAgIHwgRmlsdGVyYWJsZSAgICB8CisgICAgbWFwLmlu
c2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5H
TEUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZEZvcm1hdCg0LCA0
LCA2NCwgMywgR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRSwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSwgUmVxdWlyZUV4dDwmRXh0
ZW5zaW9uczo6bG9zc3lFVENEZWNvZGU+LCBOZXZlclN1cHBvcnRlZCwgQWx3YXlzU3VwcG9ydGVk
KSkpOworICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9DT01QUkVTU0VE
X1JHQjhfTE9TU1lfREVDT0RFX0VUQzJfQU5HTEUsICAgICAgICAgICAgICAgICAgICAgIENvbXBy
ZXNzZWRGb3JtYXQoNCwgNCwgNjQsIDMsIEdMX0NPTVBSRVNTRURfUkdCOF9MT1NTWV9ERUNPREVf
RVRDMl9BTkdMRSwgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgZmFsc2Us
IFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6Omxvc3N5RVRDRGVjb2RlPiwgTmV2ZXJTdXBwb3J0ZWQs
IEFsd2F5c1N1cHBvcnRlZCkpKTsKKyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1Bh
aXIoR0xfQ09NUFJFU1NFRF9TUkdCOF9MT1NTWV9ERUNPREVfRVRDMl9BTkdMRSwgICAgICAgICAg
ICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsIDY0LCAzLCBHTF9DT01QUkVTU0VEX1NS
R0I4X0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFLCAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lH
TkVEX0JZVEUsIHRydWUsICBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjpsb3NzeUVUQ0RlY29kZT4s
IE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmluc2VydChJbnRl
cm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEEx
X0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFLCAgQ29tcHJlc3NlZEZvcm1hdCg0LCA0LCA2NCwgMywg
R0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfTE9TU1lfREVDT0RFX0VUQzJf
QU5HTEUsICBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6
bG9zc3lFVENEZWNvZGU+LCBOZXZlclN1cHBvcnRlZCwgQWx3YXlzU3VwcG9ydGVkKSkpOworICAg
IG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9DT01QUkVTU0VEX1NSR0I4X1BV
TkNIVEhST1VHSF9BTFBIQTFfTE9TU1lfREVDT0RFX0VUQzJfQU5HTEUsIENvbXByZXNzZWRGb3Jt
YXQoNCwgNCwgNjQsIDMsIEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9M
T1NTWV9ERUNPREVfRVRDMl9BTkdMRSwgR0xfVU5TSUdORURfQllURSwgdHJ1ZSwgIFJlcXVpcmVF
eHQ8JkV4dGVuc2lvbnM6Omxvc3N5RVRDRGVjb2RlPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1
cHBvcnRlZCkpKTsKIAogICAgIC8vIEZyb20gR0xfRVhUX3RleHR1cmVfbm9ybTE2CiAgICAgLy8g
ICAgICAgICAgICAgICAgIHwgSW50ZXJuYWwgZm9ybWF0ICAgICB8IFIgfCBHIHwgQiB8IEEgfFMg
fCBGb3JtYXQgICAgICAgICB8IFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENvbXBv
bmVudCB0eXBlICAgICAgICB8IFNSR0IgfCBUZXh0dXJlIHN1cHBvcnRlZCAgICAgICAgICAgICAg
ICAgICAgICAgIHwgUmVuZGVyYWJsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZp
bHRlcmFibGUgICAgfApAQCAtNjE1LDEwICs2NDMsNyBAQCBzdGF0aWMgSW50ZXJuYWxGb3JtYXRJ
bmZvTWFwIEJ1aWxkSW50ZXJuYWxGb3JtYXRJbmZvTWFwKCkKIAogc3RhdGljIGNvbnN0IEludGVy
bmFsRm9ybWF0SW5mb01hcCAmR2V0SW50ZXJuYWxGb3JtYXRNYXAoKQogewotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4
aXQtdGltZS1kZXN0cnVjdG9ycyIKICAgICBzdGF0aWMgY29uc3QgSW50ZXJuYWxGb3JtYXRJbmZv
TWFwIGZvcm1hdE1hcCA9IEJ1aWxkSW50ZXJuYWxGb3JtYXRJbmZvTWFwKCk7Ci0jcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcG9wCiAgICAgcmV0dXJuIGZvcm1hdE1hcDsKIH0KIApAQCAtODYyLDEw
ICs4ODcsNyBAQCBHTGVudW0gR2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChHTGVudW0gaW50ZXJuYWxG
b3JtYXQsIEdMZW51bSB0eXBlKQogCiBjb25zdCBGb3JtYXRTZXQgJkdldEFsbFNpemVkSW50ZXJu
YWxGb3JtYXRzKCkKIHsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCiAgICAgc3Rh
dGljIEZvcm1hdFNldCBmb3JtYXRTZXQgPSBCdWlsZEFsbFNpemVkSW50ZXJuYWxGb3JtYXRTZXQo
KTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICAgICByZXR1cm4gZm9ybWF0U2V0Owog
fQogCkBAIC0xNjUxLDYgKzE2NzMsMTIzIEBAIGNvbnN0IFZlcnRleEZvcm1hdCAmR2V0VmVydGV4
Rm9ybWF0RnJvbVR5cGUoVmVydGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBlKQogICAgIH0K
IH0KIAorc2l6ZV90IEdldFZlcnRleEZvcm1hdFR5cGVTaXplKFZlcnRleEZvcm1hdFR5cGUgdmVy
dGV4Rm9ybWF0VHlwZSkKK3sKKyAgICBzd2l0Y2ggKHZlcnRleEZvcm1hdFR5cGUpCisgICAgewor
ICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0JZVEUxOgorICAgICAgICBjYXNlIFZFUlRFWF9G
T1JNQVRfU0JZVEUxX05PUk06CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VQllURTE6Cisg
ICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VQllURTFfTk9STToKKyAgICAgICAgY2FzZSBWRVJU
RVhfRk9STUFUX1NCWVRFMV9JTlQ6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VQllURTFf
SU5UOgorICAgICAgICAgICAgcmV0dXJuIDE7CisKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFU
X1NCWVRFMjoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NCWVRFMl9OT1JNOgorICAgICAg
ICBjYXNlIFZFUlRFWF9GT1JNQVRfVUJZVEUyOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRf
VUJZVEUyX05PUk06CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TQllURTJfSU5UOgorICAg
ICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfVUJZVEUyX0lOVDoKKyAgICAgICAgY2FzZSBWRVJURVhf
Rk9STUFUX1NTSE9SVDE6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TU0hPUlQxX05PUk06
CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VU0hPUlQxOgorICAgICAgICBjYXNlIFZFUlRF
WF9GT1JNQVRfVVNIT1JUMV9OT1JNOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU1NIT1JU
MV9JTlQ6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VU0hPUlQxX0lOVDoKKyAgICAgICAg
Y2FzZSBWRVJURVhfRk9STUFUX0hBTEYxOgorICAgICAgICAgICAgcmV0dXJuIDI7CisKKyAgICAg
ICAgY2FzZSBWRVJURVhfRk9STUFUX1NCWVRFMzoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFU
X1NCWVRFM19OT1JNOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfVUJZVEUzOgorICAgICAg
ICBjYXNlIFZFUlRFWF9GT1JNQVRfVUJZVEUzX05PUk06CisgICAgICAgIGNhc2UgVkVSVEVYX0ZP
Uk1BVF9TQllURTNfSU5UOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfVUJZVEUzX0lOVDoK
KyAgICAgICAgICAgIHJldHVybiAzOworCisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TQllU
RTQ6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TQllURTRfTk9STToKKyAgICAgICAgY2Fz
ZSBWRVJURVhfRk9STUFUX1VCWVRFNDoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1VCWVRF
NF9OT1JNOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0JZVEU0X0lOVDoKKyAgICAgICAg
Y2FzZSBWRVJURVhfRk9STUFUX1VCWVRFNF9JTlQ6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1B
VF9TU0hPUlQyOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU1NIT1JUMl9OT1JNOgorICAg
ICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfVVNIT1JUMjoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9S
TUFUX1VTSE9SVDJfTk9STToKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NTSE9SVDJfSU5U
OgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfVVNIT1JUMl9JTlQ6CisgICAgICAgIGNhc2Ug
VkVSVEVYX0ZPUk1BVF9TSU5UMToKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NJTlQxX05P
Uk06CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VSU5UMToKKyAgICAgICAgY2FzZSBWRVJU
RVhfRk9STUFUX1VJTlQxX05PUk06CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TSU5UMV9J
TlQ6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VSU5UMV9JTlQ6CisgICAgICAgIGNhc2Ug
VkVSVEVYX0ZPUk1BVF9IQUxGMjoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX0ZJWEVEMToK
KyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX0ZMT0FUMToKKyAgICAgICAgY2FzZSBWRVJURVhf
Rk9STUFUX1NJTlQyMTA6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VSU5UMjEwOgorICAg
ICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0lOVDIxMF9OT1JNOgorICAgICAgICBjYXNlIFZFUlRF
WF9GT1JNQVRfVUlOVDIxMF9OT1JNOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0lOVDIx
MF9JTlQ6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VSU5UMjEwX0lOVDoKKyAgICAgICAg
ICAgIHJldHVybiA0OworCisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TU0hPUlQzOgorICAg
ICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU1NIT1JUM19OT1JNOgorICAgICAgICBjYXNlIFZFUlRF
WF9GT1JNQVRfVVNIT1JUMzoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1VTSE9SVDNfTk9S
TToKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NTSE9SVDNfSU5UOgorICAgICAgICBjYXNl
IFZFUlRFWF9GT1JNQVRfVVNIT1JUM19JTlQ6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9I
QUxGMzoKKyAgICAgICAgICAgIHJldHVybiA2OworCisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1B
VF9TU0hPUlQ0OgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU1NIT1JUNF9OT1JNOgorICAg
ICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfVVNIT1JUNDoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9S
TUFUX1VTSE9SVDRfTk9STToKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NTSE9SVDRfSU5U
OgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfVVNIT1JUNF9JTlQ6CisgICAgICAgIGNhc2Ug
VkVSVEVYX0ZPUk1BVF9TSU5UMjoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NJTlQyX05P
Uk06CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VSU5UMjoKKyAgICAgICAgY2FzZSBWRVJU
RVhfRk9STUFUX1VJTlQyX05PUk06CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TSU5UMl9J
TlQ6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VSU5UMl9JTlQ6CisgICAgICAgIGNhc2Ug
VkVSVEVYX0ZPUk1BVF9IQUxGNDoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX0ZJWEVEMjoK
KyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX0ZMT0FUMjoKKyAgICAgICAgICAgIHJldHVybiA4
OworCisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TSU5UMzoKKyAgICAgICAgY2FzZSBWRVJU
RVhfRk9STUFUX1NJTlQzX05PUk06CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VSU5UMzoK
KyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1VJTlQzX05PUk06CisgICAgICAgIGNhc2UgVkVS
VEVYX0ZPUk1BVF9TSU5UM19JTlQ6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VSU5UM19J
TlQ6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9GSVhFRDM6CisgICAgICAgIGNhc2UgVkVS
VEVYX0ZPUk1BVF9GTE9BVDM6CisgICAgICAgICAgICByZXR1cm4gMTI7CisKKyAgICAgICAgY2Fz
ZSBWRVJURVhfRk9STUFUX1NJTlQ0OgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0lOVDRf
Tk9STToKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1VJTlQ0OgorICAgICAgICBjYXNlIFZF
UlRFWF9GT1JNQVRfVUlOVDRfTk9STToKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NJTlQ0
X0lOVDoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1VJTlQ0X0lOVDoKKyAgICAgICAgY2Fz
ZSBWRVJURVhfRk9STUFUX0ZJWEVENDoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX0ZMT0FU
NDoKKyAgICAgICAgICAgIHJldHVybiAxNjsKKworICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRf
SU5WQUxJRDoKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIFZlcnRleEZvcm1hdDo6VmVydGV4Rm9y
bWF0KEdMZW51bSB0eXBlSW4sIEdMYm9vbGVhbiBub3JtYWxpemVkSW4sIEdMdWludCBjb21wb25l
bnRzSW4sIGJvb2wgcHVyZUludGVnZXJJbikKICAgICA6IHR5cGUodHlwZUluKSwKICAgICAgIG5v
cm1hbGl6ZWQobm9ybWFsaXplZEluKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9mb3JtYXR1dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxzLmgKaW5kZXggODQzZDU0MThkOTc4YWE5YTkwNWQ1NGMy
NmYyZGJmYWU5ZjIyNjVlOC4uMDRkNjc2OWMwYmRkMGRmOGI0MWNiN2U3NmVlOTY0OWYyMTJhYjRi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zvcm1h
dHV0aWxzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zvcm1h
dHV0aWxzLmgKQEAgLTEwLDE1ICsxMCwxOCBAQAogI2RlZmluZSBMSUJBTkdMRV9GT1JNQVRVVElM
U19IXwogCiAjaW5jbHVkZSA8Y3N0ZGRlZj4KKyNpbmNsdWRlIDxvc3RyZWFtPgogI2luY2x1ZGUg
PHN0ZGludC5oPgogCiAjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9D
YXBzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRXJyb3IuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9W
ZXJzaW9uLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgogCiBuYW1lc3BhY2Ug
Z2wKIHsKK3N0cnVjdCBWZXJ0ZXhBdHRyaWJ1dGU7CiAKIHN0cnVjdCBGb3JtYXRUeXBlIGZpbmFs
CiB7CkBAIC0xMTEsNyArMTE0LDcgQEAgc3RydWN0IEludGVybmFsRm9ybWF0CiAgICAgR0xlbnVt
IGNvbXBvbmVudFR5cGU7CiAgICAgR0xlbnVtIGNvbG9yRW5jb2Rpbmc7CiAKLSAgICB0eXBlZGVm
IGJvb2wgKCpTdXBwb3J0Q2hlY2tGdW5jdGlvbikoR0x1aW50LCBjb25zdCBFeHRlbnNpb25zICYp
OworICAgIHR5cGVkZWYgYm9vbCAoKlN1cHBvcnRDaGVja0Z1bmN0aW9uKShjb25zdCBWZXJzaW9u
ICYsIGNvbnN0IEV4dGVuc2lvbnMgJik7CiAgICAgU3VwcG9ydENoZWNrRnVuY3Rpb24gdGV4dHVy
ZVN1cHBvcnQ7CiAgICAgU3VwcG9ydENoZWNrRnVuY3Rpb24gcmVuZGVyU3VwcG9ydDsKICAgICBT
dXBwb3J0Q2hlY2tGdW5jdGlvbiBmaWx0ZXJTdXBwb3J0OwpAQCAtMTM2LDYgKzEzOSw4IEBAIHN0
cnVjdCBGb3JtYXQKICAgICBzdGF0aWMgRm9ybWF0IEludmFsaWQoKTsKICAgICBzdGF0aWMgYm9v
bCBTYW1lU2l6ZWQoY29uc3QgRm9ybWF0ICZhLCBjb25zdCBGb3JtYXQgJmIpOwogCisgICAgZnJp
ZW5kIHN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBGb3Jt
YXQgJmZtdCk7CisKICAgICAvLyBUaGlzIGlzIHRoZSBzaXplZCBpbmZvLgogICAgIGNvbnN0IElu
dGVybmFsRm9ybWF0ICppbmZvOwogICAgIEdMZW51bSBmb3JtYXQ7CkBAIC0yOTIsMTIgKzI5Nywx
NiBAQCBWZXJ0ZXhGb3JtYXRUeXBlIEdldFZlcnRleEZvcm1hdFR5cGUoR0xlbnVtIHR5cGUsIEdM
Ym9vbGVhbiBub3JtYWxpemVkLCBHTHVpbnQgYwogVmVydGV4Rm9ybWF0VHlwZSBHZXRWZXJ0ZXhG
b3JtYXRUeXBlKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKTsKIFZlcnRleEZvcm1hdFR5
cGUgR2V0VmVydGV4Rm9ybWF0VHlwZShjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xl
bnVtIGN1cnJlbnRWYWx1ZVR5cGUpOwogY29uc3QgVmVydGV4Rm9ybWF0ICZHZXRWZXJ0ZXhGb3Jt
YXRGcm9tVHlwZShWZXJ0ZXhGb3JtYXRUeXBlIHZlcnRleEZvcm1hdFR5cGUpOworc2l6ZV90IEdl
dFZlcnRleEZvcm1hdFR5cGVTaXplKFZlcnRleEZvcm1hdFR5cGUgdmVydGV4Rm9ybWF0VHlwZSk7
CiAKIC8vIEltcGxlbWVudGVkIGluIGZvcm1hdF9tYXBfYXV0b2dlbi5jcHAKIGJvb2wgVmFsaWRF
UzNGb3JtYXQoR0xlbnVtIGZvcm1hdCk7CiBib29sIFZhbGlkRVMzVHlwZShHTGVudW0gdHlwZSk7
CiBib29sIFZhbGlkRVMzRm9ybWF0Q29tYmluYXRpb24oR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCk7CiAKKy8vIEltcGxlbWVudGVkIGluIGVzM19jb3B5
X2NvbnZlcnNpb25fdGFibGVfYXV0b2dlbi5jcHAKK2Jvb2wgVmFsaWRFUzNDb3B5Q29udmVyc2lv
bihHTGVudW0gdGV4dHVyZUZvcm1hdCwgR0xlbnVtIGZyYW1lYnVmZmVyRm9ybWF0KTsKKwogfSAg
Ly8gbmFtZXNwYWNlIGdsCiAKICNlbmRpZiAvLyBMSUJBTkdMRV9GT1JNQVRVVElMU19IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2dlbl9jb3B5X2Nv
bnZlcnNpb25fdGFibGUucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
Z2VuX2NvcHlfY29udmVyc2lvbl90YWJsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMmM5NjAzZDU0NTFhZjg3
MmRlYzM0Yzg2YzI4ODY3MjM4MjMxZjZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2dlbl9jb3B5X2NvbnZlcnNpb25fdGFibGUucHkKQEAg
LTAsMCArMSw5MSBAQAorIyEvdXNyL2Jpbi9weXRob24KKyMgQ29weXJpZ2h0IDIwMTYgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorIworIyBnZW5fY29weV9jb252ZXJzaW9u
X3RhYmxlLnB5OgorIyAgQ29kZSBnZW5lcmF0aW9uIGZvciBFUzMgdmFsaWQgY29weSBjb252ZXJz
aW9ucyB0YWJsZSBmb3JtYXQgbWFwLgorCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRlCitpbXBv
cnQgc3lzCisKK3N5cy5wYXRoLmFwcGVuZCgncmVuZGVyZXInKQoraW1wb3J0IGFuZ2xlX2Zvcm1h
dAorCit0ZW1wbGF0ZV9jcHAgPSAiIiIvLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgor
Ly8gR2VuZXJhdGVkIGJ5IHtzY3JpcHRfbmFtZX0gdXNpbmcgZGF0YSBmcm9tIHtkYXRhX3NvdXJj
ZV9uYW1lfS4KKy8vCisvLyBDb3B5cmlnaHQge2NvcHlyaWdodF95ZWFyfSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBmb3JtYXRfbWFwOgorLy8gICBEZXRl
cm1pbmluZyB0aGUgc2l6ZWQgaW50ZXJuYWwgZm9ybWF0IGZyb20gYSAoZm9ybWF0LHR5cGUpIHBh
aXIuCisvLyAgIEFsc28gY2hlY2sgZXMzIGZvcm1hdCBjb21iaW5hdGlvbnMgZm9yIHZhbGlkaXR5
LgorCisjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKwor
bmFtZXNwYWNlIGdsCit7eworCitib29sIFZhbGlkRVMzQ29weUNvbnZlcnNpb24oR0xlbnVtIHRl
eHR1cmVGb3JtYXQsIEdMZW51bSBmcmFtZWJ1ZmZlckZvcm1hdCkKK3t7CisgICAgc3dpdGNoICh0
ZXh0dXJlRm9ybWF0KQorICAgIHt7Cit7dGV4dHVyZV9mb3JtYXRfY2FzZXN9ICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfX0KKworICAgIHJldHVybiBmYWxzZTsKK319
CisKK319ICAvLyBuYW1lc3BhY2UgZ2wKKyIiIgorCit0ZW1wbGF0ZV9mb3JtYXRfY2FzZSA9ICIi
IiAgICAgICAgY2FzZSB7dGV4dHVyZV9mb3JtYXR9OgorICAgICAgICAgICAgc3dpdGNoIChmcmFt
ZWJ1ZmZlckZvcm1hdCkKKyAgICAgICAgICAgIHt7Cit7ZnJhbWVidWZmZXJfZm9ybWF0X2Nhc2Vz
fSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9fQorICAgICAgICAg
ICAgYnJlYWs7CisKKyIiIgorCit0ZW1wbGF0ZV9zaW1wbGVfY2FzZSA9ICIiIiAgICAgICAgICAg
ICAgICBjYXNlIHtrZXl9OgorIiIiCisKK2RlZiBwYXJzZV90ZXh0dXJlX2Zvcm1hdF9jYXNlKHRl
eHR1cmVfZm9ybWF0LCBmcmFtZWJ1ZmZlcl9mb3JtYXRzKToKKyAgICBmcmFtZWJ1ZmZlcl9mb3Jt
YXRfY2FzZXMgPSAiIgorICAgIGZvciBmcmFtZWJ1ZmZlcl9mb3JtYXQgaW4gc29ydGVkKGZyYW1l
YnVmZmVyX2Zvcm1hdHMpOgorICAgICAgICBmcmFtZWJ1ZmZlcl9mb3JtYXRfY2FzZXMgKz0gdGVt
cGxhdGVfc2ltcGxlX2Nhc2UuZm9ybWF0KGtleSA9IGZyYW1lYnVmZmVyX2Zvcm1hdCkKKyAgICBy
ZXR1cm4gdGVtcGxhdGVfZm9ybWF0X2Nhc2UuZm9ybWF0KAorICAgICAgICB0ZXh0dXJlX2Zvcm1h
dCA9IHRleHR1cmVfZm9ybWF0LCBmcmFtZWJ1ZmZlcl9mb3JtYXRfY2FzZXMgPSBmcmFtZWJ1ZmZl
cl9mb3JtYXRfY2FzZXMpCisKK2RhdGFfc291cmNlX25hbWUgPSAnZXMzX2NvcHlfY29udmVyc2lv
bl9mb3JtYXRzLmpzb24nCisKK2pzb25fZGF0YSA9IGFuZ2xlX2Zvcm1hdC5sb2FkX2pzb24oZGF0
YV9zb3VyY2VfbmFtZSkKKworZm9ybWF0X21hcCA9IHt9CisKK2ZvciBkZXNjcmlwdGlvbiwgZGF0
YSBpbiBqc29uX2RhdGEuaXRlcml0ZW1zKCk6CisgICAgZm9yIHRleHR1cmVfZm9ybWF0LCBmcmFt
ZWJ1ZmZlcl9mb3JtYXQgaW4gZGF0YToKKyAgICAgICAgaWYgdGV4dHVyZV9mb3JtYXQgbm90IGlu
IGZvcm1hdF9tYXA6CisgICAgICAgICAgICBmb3JtYXRfbWFwW3RleHR1cmVfZm9ybWF0XSA9IFtd
CisgICAgICAgIGZvcm1hdF9tYXBbdGV4dHVyZV9mb3JtYXRdICs9IFsgZnJhbWVidWZmZXJfZm9y
bWF0IF0KKwordGV4dHVyZV9mb3JtYXRfY2FzZXMgPSAiIgorCitmb3IgdGV4dHVyZV9mb3JtYXQs
IGZyYW1lYnVmZmVyX2Zvcm1hdHMgaW4gc29ydGVkKGZvcm1hdF9tYXAuaXRlcml0ZW1zKCkpOgor
ICAgIHRleHR1cmVfZm9ybWF0X2Nhc2VzICs9IHBhcnNlX3RleHR1cmVfZm9ybWF0X2Nhc2UodGV4
dHVyZV9mb3JtYXQsIGZyYW1lYnVmZmVyX2Zvcm1hdHMpCisKK3dpdGggb3BlbignZXMzX2NvcHlf
Y29udmVyc2lvbl90YWJsZV9hdXRvZ2VuLmNwcCcsICd3dCcpIGFzIG91dF9maWxlOgorICAgIG91
dHB1dF9jcHAgPSB0ZW1wbGF0ZV9jcHAuZm9ybWF0KAorICAgICAgICBzY3JpcHRfbmFtZSA9IHN5
cy5hcmd2WzBdLAorICAgICAgICBkYXRhX3NvdXJjZV9uYW1lID0gZGF0YV9zb3VyY2VfbmFtZSwK
KyAgICAgICAgY29weXJpZ2h0X3llYXIgPSBkYXRlLnRvZGF5KCkueWVhciwKKyAgICAgICAgdGV4
dHVyZV9mb3JtYXRfY2FzZXMgPSB0ZXh0dXJlX2Zvcm1hdF9jYXNlcykKKyAgICBvdXRfZmlsZS53
cml0ZShvdXRwdXRfY3BwKQorICAgIG91dF9maWxlLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9oaXN0b2dyYW1fbWFjcm9zLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvaGlzdG9ncmFtX21hY3Jvcy5oCmluZGV4
IGQxYzk1MmE2YmQzZDI0NWY0YzA3ZWE1ZGVlMjZiN2U1NTgzOGE0ZjUuLjczM2IxMTMwNGYwMjgy
Yzc5YWY1NWZkMDkwMjk3MTUxY2RiZjFmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9oaXN0b2dyYW1fbWFjcm9zLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2hpc3RvZ3JhbV9tYWNyb3MuaApAQCAtNDEsMTggKzQx
LDE5IEBACiAjZGVmaW5lIEFOR0xFX0hJU1RPR1JBTV9DT1VOVFNfMTAwMDAobmFtZSwgc2FtcGxl
KSBcCiAgICAgQU5HTEVfSElTVE9HUkFNX0NVU1RPTV9DT1VOVFMobmFtZSwgc2FtcGxlLCAxLCAx
MDAwMCwgNTApCiAKLSNkZWZpbmUgQU5HTEVfSElTVE9HUkFNX0NVU1RPTV9DT1VOVFMobmFtZSwg
c2FtcGxlLCBtaW4sIG1heCwgYnVja2V0X2NvdW50KSBcCi0gICAgQU5HTEVQbGF0Zm9ybUN1cnJl
bnQoKS0+aGlzdG9ncmFtQ3VzdG9tQ291bnRzKFwKLSAgICAgIG5hbWUsIHNhbXBsZSwgbWluLCBt
YXgsIGJ1Y2tldF9jb3VudCkKKyNkZWZpbmUgQU5HTEVfSElTVE9HUkFNX0NVU1RPTV9DT1VOVFMo
bmFtZSwgc2FtcGxlLCBtaW4sIG1heCwgYnVja2V0X2NvdW50KSAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIEFOR0xFUGxhdGZvcm1DdXJyZW50KCktPmhpc3RvZ3JhbUN1c3RvbUNvdW50cyhB
TkdMRVBsYXRmb3JtQ3VycmVudCgpLCBuYW1lLCBzYW1wbGUsIG1pbiwgbWF4LCBcCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Y2tldF9jb3VudCkK
IAogI2RlZmluZSBBTkdMRV9ISVNUT0dSQU1fUEVSQ0VOVEFHRShuYW1lLCB1bmRlcl9vbmVfaHVu
ZHJlZCkgXAogICAgIEFOR0xFX0hJU1RPR1JBTV9FTlVNRVJBVElPTihuYW1lLCB1bmRlcl9vbmVf
aHVuZHJlZCwgMTAxKQogCiAjZGVmaW5lIEFOR0xFX0hJU1RPR1JBTV9CT09MRUFOKG5hbWUsIHNh
bXBsZSkgXAotICAgIEFOR0xFUGxhdGZvcm1DdXJyZW50KCktPmhpc3RvZ3JhbUJvb2xlYW4obmFt
ZSwgc2FtcGxlKQorICAgIEFOR0xFUGxhdGZvcm1DdXJyZW50KCktPmhpc3RvZ3JhbUJvb2xlYW4o
QU5HTEVQbGF0Zm9ybUN1cnJlbnQoKSwgbmFtZSwgc2FtcGxlKQogCi0jZGVmaW5lIEFOR0xFX0hJ
U1RPR1JBTV9FTlVNRVJBVElPTihuYW1lLCBzYW1wbGUsIGJvdW5kYXJ5X3ZhbHVlKSBcCi0gICAg
QU5HTEVQbGF0Zm9ybUN1cnJlbnQoKS0+aGlzdG9ncmFtRW51bWVyYXRpb24obmFtZSwgc2FtcGxl
LCBib3VuZGFyeV92YWx1ZSkKKyNkZWZpbmUgQU5HTEVfSElTVE9HUkFNX0VOVU1FUkFUSU9OKG5h
bWUsIHNhbXBsZSwgYm91bmRhcnlfdmFsdWUpICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBB
TkdMRVBsYXRmb3JtQ3VycmVudCgpLT5oaXN0b2dyYW1FbnVtZXJhdGlvbihBTkdMRVBsYXRmb3Jt
Q3VycmVudCgpLCBuYW1lLCBzYW1wbGUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib3VuZGFyeV92YWx1ZSkKIAogI2RlZmluZSBBTkdMRV9ISVNU
T0dSQU1fTUVNT1JZX0tCKG5hbWUsIHNhbXBsZSkgQU5HTEVfSElTVE9HUkFNX0NVU1RPTV9DT1VO
VFMoIFwKICAgICBuYW1lLCBzYW1wbGUsIDEwMDAsIDUwMDAwMCwgNTApCkBAIC02MSw3ICs2Miw3
IEBACiAgICAgbmFtZSwgc2FtcGxlLCAxLCAxMDAwLCA1MCkKIAogI2RlZmluZSBBTkdMRV9ISVNU
T0dSQU1fU1BBUlNFX1NMT1dMWShuYW1lLCBzYW1wbGUpIFwKLSAgICBBTkdMRVBsYXRmb3JtQ3Vy
cmVudCgpLT5oaXN0b2dyYW1TcGFyc2UobmFtZSwgc2FtcGxlKQorICAgIEFOR0xFUGxhdGZvcm1D
dXJyZW50KCktPmhpc3RvZ3JhbVNwYXJzZShBTkdMRVBsYXRmb3JtQ3VycmVudCgpLCBuYW1lLCBz
YW1wbGUpCiAKIC8vIFNjb3BlZCBjbGFzcyB3aGljaCBsb2dzIGl0cyB0aW1lIG9uIHRoaXMgZWFy
dGggYXMgYSBVTUEgc3RhdGlzdGljLiBUaGlzIGlzCiAvLyByZWNvbW1lbmRlZCBmb3Igd2hlbiB5
b3Ugd2FudCBhIGhpc3RvZ3JhbSB3aGljaCBtZWFzdXJlcyB0aGUgdGltZSBpdCB0YWtlcwpAQCAt
NzksMjkgKzgwLDMzIEBACiAjZGVmaW5lIFNDT1BFRF9BTkdMRV9ISVNUT0dSQU1fVElNRVJfRVhQ
QU5ERVIobmFtZSwgaXNfbG9uZywga2V5KSBcCiAgICAgU0NPUEVEX0FOR0xFX0hJU1RPR1JBTV9U
SU1FUl9VTklRVUUobmFtZSwgaXNfbG9uZywga2V5KQogCi0jZGVmaW5lIFNDT1BFRF9BTkdMRV9I
SVNUT0dSQU1fVElNRVJfVU5JUVVFKG5hbWUsIGlzX2xvbmcsIGtleSkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgY2xhc3MgU2NvcGVkSGlzdG9ncmFtVGltZXIjI2tleSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICBwdWJsaWM6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFNjb3BlZEhpc3RvZ3JhbVRpbWVyIyNrZXkoKSA6
IGNvbnN0cnVjdGVkXyhBTkdMRVBsYXRmb3JtQ3VycmVudCgpLT5jdXJyZW50VGltZSgpKSB7fSBc
Ci0gICAgICAgIH5TY29wZWRIaXN0b2dyYW1UaW1lciMja2V5KCkgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBpZiAoY29uc3RydWN0ZWRfID09IDAp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgICAgICAgICAgcmV0dXJuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBk
b3VibGUgZWxhcHNlZCA9IEFOR0xFUGxhdGZvcm1DdXJyZW50KCktPmN1cnJlbnRUaW1lKCkgLSBj
b25zdHJ1Y3RlZF87ICAgICAgICAgICBcCi0gICAgICAgICAgICBpbnQgZWxhcHNlZE1TID0gc3Rh
dGljX2Nhc3Q8aW50PihlbGFwc2VkICogMTAwMC4wKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgICAgICAgICBpZiAoaXNfbG9uZykgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAg
ICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgQU5HTEVfSElTVE9H
UkFNX0xPTkdfVElNRVNfMTAwKG5hbWUsIGVsYXBzZWRNUyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
ICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgQU5HTEVfSElTVE9HUkFNX1RJTUVTKG5hbWUs
IGVsYXBzZWRNUyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICBwcml2YXRlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGRvdWJsZSBjb25z
dHJ1Y3RlZF87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisjZGVmaW5lIFNDT1BFRF9BTkdMRV9ISVNUT0dSQU1fVElNRVJf
VU5JUVVFKG5hbWUsIGlzX2xvbmcsIGtleSkgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IGNsYXNzIFNjb3BlZEhpc3RvZ3JhbVRpbWVyIyNrZXkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICBwdWJsaWM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBTY29wZWRI
aXN0b2dyYW1UaW1lciMja2V5KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIDogY29uc3RydWN0ZWRfKEFOR0xFUGxhdGZv
cm1DdXJyZW50KCktPmN1cnJlbnRUaW1lKEFOR0xFUGxhdGZvcm1DdXJyZW50KCkpKSBcCisgICAg
ICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgflNjb3BlZEhpc3RvZ3JhbVRpbWVyIyNrZXkoKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKGNvbnN0cnVjdGVkXyA9PSAwKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBhdXRvICpwbGF0Zm9ybSA9
IEFOR0xFUGxhdGZvcm1DdXJyZW50KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgZG91YmxlIGVsYXBzZWQgPSBwbGF0Zm9ybS0+Y3VycmVudFRpbWUo
cGxhdGZvcm0pIC0gY29uc3RydWN0ZWRfOyAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGludCBl
bGFwc2VkTVMgID0gc3RhdGljX2Nhc3Q8aW50PihlbGFwc2VkICogMTAwMC4wKTsgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpZiAoaXNfbG9uZykgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBBTkdMRV9ISVNUT0dS
QU1fTE9OR19USU1FU18xMDAobmFtZSwgZWxhcHNlZE1TKTsgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZWxzZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICAgICAgQU5HTEVfSElTVE9HUkFNX1RJTUVTKG5hbWUsIGVsYXBzZWRNUyk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgcHJpdmF0ZTogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ZG91YmxlIGNvbnN0cnVjdGVkXzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSBzY29wZWRfaGlzdG9ncmFtX3RpbWVyXyMj
a2V5CiAKICNlbmRpZiAgLy8gQkFTRV9NRVRSSUNTX0hJU1RPR1JBTV9NQUNST1NfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeWNvbnZlcnNp
b25zLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeWNvbnZl
cnNpb25zLmNwcAppbmRleCA2MTFmYmM0YmE4MGM3MmRmN2Y1M2E2MGRkMTgzNzI1NGIzYTczZDg0
Li41YmViODA5NGI0MzM0MTM4NjhjZDdiOTQzZTAzNmEyOWNjMGEwOTI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3F1ZXJ5Y29udmVyc2lv
bnMuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgQ2FzdFN0YXRlVmFsdWVzKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSBuYXRpdmVUeXBlLCBHTGVudW0gcG5hbWUsCiAgICAgaWYgKG5hdGl2ZVR5
cGUgPT0gR0xfSU5UKQogICAgIHsKICAgICAgICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IGludFBhcmFt
cyhudW1QYXJhbXMsIDApOwotICAgICAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgaW50
UGFyYW1zLmRhdGEoKSk7CisgICAgICAgIGNvbnRleHQtPmdldEludGVnZXJ2SW1wbChwbmFtZSwg
aW50UGFyYW1zLmRhdGEoKSk7CiAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBudW1QYXJhbXM7ICsraSkKICAgICAgICAgewpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgQ2Fz
dFN0YXRlVmFsdWVzKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBuYXRpdmVUeXBlLCBHTGVudW0g
cG5hbWUsCiAgICAgZWxzZSBpZiAobmF0aXZlVHlwZSA9PSBHTF9CT09MKQogICAgIHsKICAgICAg
ICAgc3RkOjp2ZWN0b3I8R0xib29sZWFuPiBib29sUGFyYW1zKG51bVBhcmFtcywgR0xfRkFMU0Up
OwotICAgICAgICBjb250ZXh0LT5nZXRCb29sZWFudihwbmFtZSwgYm9vbFBhcmFtcy5kYXRhKCkp
OworICAgICAgICBjb250ZXh0LT5nZXRCb29sZWFudkltcGwocG5hbWUsIGJvb2xQYXJhbXMuZGF0
YSgpKTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG51bVBhcmFtczsg
KytpKQogICAgICAgICB7CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBDYXN0U3RhdGVWYWx1ZXMo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIG5hdGl2ZVR5cGUsIEdMZW51bSBwbmFtZSwKICAgICBl
bHNlIGlmIChuYXRpdmVUeXBlID09IEdMX0ZMT0FUKQogICAgIHsKICAgICAgICAgc3RkOjp2ZWN0
b3I8R0xmbG9hdD4gZmxvYXRQYXJhbXMobnVtUGFyYW1zLCAwLjBmKTsKLSAgICAgICAgY29udGV4
dC0+Z2V0RmxvYXR2KHBuYW1lLCBmbG9hdFBhcmFtcy5kYXRhKCkpOworICAgICAgICBjb250ZXh0
LT5nZXRGbG9hdHZJbXBsKHBuYW1lLCBmbG9hdFBhcmFtcy5kYXRhKCkpOwogCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1zOyArK2kpCiAgICAgICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeXV0aWxz
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeXV0aWxzLmNw
cAppbmRleCAxMzI1MGQ1OGNjZGU1ZjllOGM3YmQ5MTMzZDBlOWUxZmVmYzg2NWI2Li41ZDE0ZjU3
ZDBhMjcyOWYwZmZkZjEyZGFiMjhkM2NkMmUyOTJhMjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnl1dGlscy5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3F1ZXJ5dXRpbHMuY3BwCkBAIC0xMSw2ICsxMSw5
IEBACiAjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgogCiAjaW5jbHVkZSAibGliQU5HTEUv
QnVmZmVyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29uZmlnLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvQ29udGV4dC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0ZlbmNlLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFtLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvUmVuZGVyYnVmZmVyLmgiCkBAIC0yNiw2ICsyOSw4NiBAQCBuYW1lc3Bh
Y2UgZ2wKIG5hbWVzcGFjZQogewogdGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtVHlwZT4KK3ZvaWQg
UXVlcnlUZXhMZXZlbFBhcmFtZXRlckJhc2UoY29uc3QgVGV4dHVyZSAqdGV4dHVyZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFy
YW1UeXBlICpwYXJhbXMpCit7CisgICAgQVNTRVJUKHRleHR1cmUgIT0gbnVsbHB0cik7CisgICAg
Y29uc3QgSW50ZXJuYWxGb3JtYXQgKmluZm8gPSB0ZXh0dXJlLT5nZXRUZXh0dXJlU3RhdGUoKS5n
ZXRJbWFnZURlc2ModGFyZ2V0LCBsZXZlbCkuZm9ybWF0LmluZm87CisKKyAgICBzd2l0Y2ggKHBu
YW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1JFRF9UWVBFOgorICAgICAgICAg
ICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xlbnVtPFBhcmFtVHlwZT4oaW5mby0+cmVkQml0cyA/
IGluZm8tPmNvbXBvbmVudFR5cGUgOiBHTF9OT05FKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfR1JFRU5fVFlQRToKKyAgICAgICAgICAgICpwYXJhbXMgPSBD
b252ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KGluZm8tPmdyZWVuQml0cyA/IGluZm8tPmNvbXBv
bmVudFR5cGUgOiBHTF9OT05FKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfQkxVRV9UWVBFOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xl
bnVtPFBhcmFtVHlwZT4oaW5mby0+Ymx1ZUJpdHMgPyBpbmZvLT5jb21wb25lbnRUeXBlIDogR0xf
Tk9ORSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0FMUEhB
X1RZUEU6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGVudW08UGFyYW1UeXBl
PihpbmZvLT5hbHBoYUJpdHMgPyBpbmZvLT5jb21wb25lbnRUeXBlIDogR0xfTk9ORSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0RFUFRIX1RZUEU6CisgICAg
ICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGVudW08UGFyYW1UeXBlPihpbmZvLT5kZXB0
aEJpdHMgPyBpbmZvLT5jb21wb25lbnRUeXBlIDogR0xfTk9ORSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1JFRF9TSVpFOgorICAgICAgICAgICAgKnBhcmFt
cyA9IENvbnZlcnRGcm9tR0x1aW50PFBhcmFtVHlwZT4oaW5mby0+cmVkQml0cyk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0dSRUVOX1NJWkU6CisgICAgICAg
ICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTHVpbnQ8UGFyYW1UeXBlPihpbmZvLT5ncmVlbkJp
dHMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CTFVFX1NJ
WkU6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTHVpbnQ8UGFyYW1UeXBlPihp
bmZvLT5ibHVlQml0cyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhU
VVJFX0FMUEhBX1NJWkU6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTHVpbnQ8
UGFyYW1UeXBlPihpbmZvLT5hbHBoYUJpdHMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV9ERVBUSF9TSVpFOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZl
cnRGcm9tR0x1aW50PFBhcmFtVHlwZT4oaW5mby0+ZGVwdGhCaXRzKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfU1RFTkNJTF9TSVpFOgorICAgICAgICAgICAg
KnBhcmFtcyA9IENvbnZlcnRGcm9tR0x1aW50PFBhcmFtVHlwZT4oaW5mby0+c3RlbmNpbEJpdHMp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TSEFSRURfU0la
RToKKyAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMdWludDxQYXJhbVR5cGU+KGlu
Zm8tPnNoYXJlZEJpdHMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9JTlRFUk5BTF9GT1JNQVQ6CisgICAgICAgICAgICAqcGFyYW1zID0KKyAgICAgICAgICAg
ICAgICBDb252ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KGluZm8tPmludGVybmFsRm9ybWF0ID8g
aW5mby0+aW50ZXJuYWxGb3JtYXQgOiBHTF9SR0JBKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfV0lEVEg6CisgICAgICAgICAgICAqcGFyYW1zID0KKyAgICAg
ICAgICAgICAgICBDb252ZXJ0RnJvbUdMaW50PFBhcmFtVHlwZT4oc3RhdGljX2Nhc3Q8R0xpbnQ+
KHRleHR1cmUtPmdldFdpZHRoKHRhcmdldCwgbGV2ZWwpKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0hFSUdIVDoKKyAgICAgICAgICAgICpwYXJhbXMgPQor
ICAgICAgICAgICAgICAgIENvbnZlcnRGcm9tR0xpbnQ8UGFyYW1UeXBlPihzdGF0aWNfY2FzdDxH
TGludD4odGV4dHVyZS0+Z2V0SGVpZ2h0KHRhcmdldCwgbGV2ZWwpKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0RFUFRIOgorICAgICAgICAgICAgKnBhcmFt
cyA9CisgICAgICAgICAgICAgICAgQ29udmVydEZyb21HTGludDxQYXJhbVR5cGU+KHN0YXRpY19j
YXN0PEdMaW50Pih0ZXh0dXJlLT5nZXREZXB0aCh0YXJnZXQsIGxldmVsKSkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TQU1QTEVTOgorICAgICAgICAgICAg
KnBhcmFtcyA9IENvbnZlcnRGcm9tR0xpbnQ8UGFyYW1UeXBlPih0ZXh0dXJlLT5nZXRTYW1wbGVz
KHRhcmdldCwgbGV2ZWwpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfRklYRURfU0FNUExFX0xPQ0FUSU9OUzoKKyAgICAgICAgICAgICpwYXJhbXMgPQorICAg
ICAgICAgICAgICAgIENvbnZlcnRGcm9tR0xib29sZWFuPFBhcmFtVHlwZT4odGV4dHVyZS0+Z2V0
Rml4ZWRTYW1wbGVMb2NhdGlvbnModGFyZ2V0LCBsZXZlbCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QUkVTU0VEOgorICAgICAgICAgICAgKnBhcmFt
cyA9IENvbnZlcnRGcm9tR0xib29sZWFuPFBhcmFtVHlwZT4oaW5mby0+Y29tcHJlc3NlZCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBQYXJhbVR5cGU+CiB2b2lkIFF1ZXJ5VGV4UGFyYW1ldGVyQmFzZShjb25zdCBUZXh0dXJlICp0
ZXh0dXJlLCBHTGVudW0gcG5hbWUsIFBhcmFtVHlwZSAqcGFyYW1zKQogewogICAgIEFTU0VSVCh0
ZXh0dXJlICE9IG51bGxwdHIpOwpAQCAtODksNiArMTcyLDkgQEAgdm9pZCBRdWVyeVRleFBhcmFt
ZXRlckJhc2UoY29uc3QgVGV4dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBQYXJhbVR5cGUg
KnBhcmEKICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzoKICAgICAgICAgICAg
ICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KHRleHR1cmUtPmdldENvbXBh
cmVGdW5jKCkpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9T
UkdCX0RFQ09ERV9FWFQ6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGVudW08
UGFyYW1UeXBlPih0ZXh0dXJlLT5nZXRTUkdCRGVjb2RlKCkpOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xNTMsNiArMjM5LDEyIEBAIHZvaWQgU2V0VGV4UGFyYW1ldGVyQmFzZShU
ZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIGNvbnN0IFBhcmFtVHlwZSAqcGFyYW1zCiAg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9NQVhfTE9EOgogICAgICAgICAgICAgdGV4dHVyZS0+c2V0
TWF4TG9kKENvbnZlcnRUb0dMZmxvYXQocGFyYW1zWzBdKSk7CiAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERToKKyAgICAgICAgICAg
IHRleHR1cmUtPnNldERlcHRoU3RlbmNpbFRleHR1cmVNb2RlKENvbnZlcnRUb0dMZW51bShwYXJh
bXNbMF0pKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfU1JH
Ql9ERUNPREVfRVhUOgorICAgICAgICAgICAgdGV4dHVyZS0+c2V0U1JHQkRlY29kZShDb252ZXJ0
VG9HTGVudW0ocGFyYW1zWzBdKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE5
NCw2ICsyODYsOSBAQCB2b2lkIFF1ZXJ5U2FtcGxlclBhcmFtZXRlckJhc2UoY29uc3QgU2FtcGxl
ciAqc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBQYXJhbVR5cGUgKgogICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfQ09NUEFSRV9GVU5DOgogICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xl
bnVtPFBhcmFtVHlwZT4oc2FtcGxlci0+Z2V0Q29tcGFyZUZ1bmMoKSk7CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NSR0JfREVDT0RFX0VYVDoKKyAgICAgICAg
ICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KHNhbXBsZXItPmdldFNS
R0JEZWNvZGUoKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIzNSw2ICszMzAs
OSBAQCB2b2lkIFNldFNhbXBsZXJQYXJhbWV0ZXJCYXNlKFNhbXBsZXIgKnNhbXBsZXIsIEdMZW51
bSBwbmFtZSwgY29uc3QgUGFyYW1UeXBlICpwYQogICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFY
X0xPRDoKICAgICAgICAgICAgIHNhbXBsZXItPnNldE1heExvZChDb252ZXJ0VG9HTGZsb2F0KHBh
cmFtc1swXSkpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9T
UkdCX0RFQ09ERV9FWFQ6CisgICAgICAgICAgICBzYW1wbGVyLT5zZXRTUkdCRGVjb2RlKENvbnZl
cnRUb0dMZW51bShwYXJhbXNbMF0pKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MjUzLDggKzM1MSwxMCBAQCBHTGludCBDb252ZXJ0Q3VycmVudFZhbHVlKEdMZmxvYXQgY3VycmVu
dFZhbHVlKQogICAgIHJldHVybiBpcm91bmQ8R0xpbnQ+KGN1cnJlbnRWYWx1ZSk7CiB9CiAKKy8v
IFdhcm5pbmc6IHlvdSBzaG91bGQgZW5zdXJlIGJpbmRpbmcgcmVhbGx5IG1hdGNoZXMgYXR0cmli
LmJpbmRpbmdJbmRleCBiZWZvcmUgdXNpbmcgdGhpcyBmdW5jdGlvbi4KIHRlbXBsYXRlIDx0eXBl
bmFtZSBQYXJhbVR5cGUsIHR5cGVuYW1lIEN1cnJlbnREYXRhVHlwZSwgc2l6ZV90IEN1cnJlbnRW
YWx1ZUNvdW50Pgogdm9pZCBRdWVyeVZlcnRleEF0dHJpYkJhc2UoY29uc3QgVmVydGV4QXR0cmli
dXRlICZhdHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZXJ0ZXhCaW5k
aW5nICZiaW5kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ3VycmVudERh
dGFUeXBlICgmY3VycmVudFZhbHVlRGF0YSlbQ3VycmVudFZhbHVlQ291bnRdLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUGFyYW1UeXBlICpwYXJhbXMpCkBAIC0yNzQsNyArMzc0LDcgQEAgdm9pZCBRdWVyeVZlcnRl
eEF0dHJpYkJhc2UoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIsCiAgICAgICAgICAgICAq
cGFyYW1zID0gQ29udmVydEZyb21HTHVpbnQ8UGFyYW1UeXBlPihhdHRyaWIuc2l6ZSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklE
RToKLSAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMdWludDxQYXJhbVR5cGU+KGF0
dHJpYi5zdHJpZGUpOworICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0x1aW50PFBh
cmFtVHlwZT4oYXR0cmliLnZlcnRleEF0dHJpYkFycmF5U3RyaWRlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRToKICAgICAgICAg
ICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KGF0dHJpYi50eXBlKTsK
QEAgLTI4MywxNCArMzgzLDIzIEBAIHZvaWQgUXVlcnlWZXJ0ZXhBdHRyaWJCYXNlKGNvbnN0IFZl
cnRleEF0dHJpYnV0ZSAmYXR0cmliLAogICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9t
R0xib29sZWFuPFBhcmFtVHlwZT4oYXR0cmliLm5vcm1hbGl6ZWQpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORzoK
LSAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMdWludDxQYXJhbVR5cGU+KGF0dHJp
Yi5idWZmZXIuaWQoKSk7CisgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTHVpbnQ8
UGFyYW1UeXBlPihiaW5kaW5nLmJ1ZmZlci5pZCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUjoKLSAgICAgICAgICAgICpw
YXJhbXMgPSBDb252ZXJ0RnJvbUdMdWludDxQYXJhbVR5cGU+KGF0dHJpYi5kaXZpc29yKTsKKyAg
ICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMdWludDxQYXJhbVR5cGU+KGJpbmRpbmcu
ZGl2aXNvcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRU
UklCX0FSUkFZX0lOVEVHRVI6CiAgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGJv
b2xlYW48UGFyYW1UeXBlPihhdHRyaWIucHVyZUludGVnZXIpOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9CSU5ESU5HOgorICAgICAgICAgICAgKnBh
cmFtcyA9IENvbnZlcnRGcm9tR0x1aW50PFBhcmFtVHlwZT4oYXR0cmliLmJpbmRpbmdJbmRleCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX1JFTEFU
SVZFX09GRlNFVDoKKyAgICAgICAgICAgIC8vIGF0dHJpYi5yZWxhdGl2ZU9mZnNldCBzaG91bGQg
bm90IGJlIG5lZ2F0aXZlIG9yIGdyZWF0ZXIgdGhhbiBtYXggR0xpbnQKKyAgICAgICAgICAgIEFT
U0VSVChhdHRyaWIucmVsYXRpdmVPZmZzZXQgPj0gMCAmJgorICAgICAgICAgICAgICAgICAgIGF0
dHJpYi5yZWxhdGl2ZU9mZnNldCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMaW50Pjo6bWF4KCkp
OworICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xpbnQ8UGFyYW1UeXBlPihzdGF0
aWNfY2FzdDxHTGludD4oYXR0cmliLnJlbGF0aXZlT2Zmc2V0KSk7CisgICAgICAgICAgICBicmVh
azsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTUwNiwxMyArNjE1LDE5IEBAIHZvaWQgUXVlcnlQcm9ncmFtaXYoY29u
c3QgUHJvZ3JhbSAqcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogICAgICAg
ICBjYXNlIEdMX1BST0dSQU1fQklOQVJZX1JFVFJJRVZBQkxFX0hJTlQ6CiAgICAgICAgICAgICAq
cGFyYW1zID0gcHJvZ3JhbS0+Z2V0QmluYXJ5UmV0cmlldmFibGVIaW50KCk7CiAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9QUk9HUkFNX1NFUEFSQUJMRToKKyAgICAgICAgICAg
ICpwYXJhbXMgPSBwcm9ncmFtLT5pc1NlcGFyYWJsZSgpOworICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgfQogfQogCi12b2lkIFF1ZXJ5UmVuZGVyYnVmZmVyaXYoY29uc3QgUmVuZGVy
YnVmZmVyICpyZW5kZXJidWZmZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3ZvaWQg
UXVlcnlSZW5kZXJidWZmZXJpdihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCAqcGFyYW1zKQogewogICAgIEFTU0VSVChyZW5kZXJidWZmZXIgIT0gbnVsbHB0cik7CiAK
QEAgLTUyNSw3ICs2NDAsMTYgQEAgdm9pZCBRdWVyeVJlbmRlcmJ1ZmZlcml2KGNvbnN0IFJlbmRl
cmJ1ZmZlciAqcmVuZGVyYnVmZmVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICoKICAgICAgICAgICAg
ICpwYXJhbXMgPSByZW5kZXJidWZmZXItPmdldEhlaWdodCgpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKLSAgICAgICAg
ICAgICpwYXJhbXMgPSByZW5kZXJidWZmZXItPmdldEZvcm1hdCgpLmluZm8tPmludGVybmFsRm9y
bWF0OworICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlIHRoZSBXZWJHTCAxIERFUFRIX1NURU5D
SUwgZm9ybWF0LgorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmlzV2ViR0wxKCkgJiYKKyAgICAg
ICAgICAgICAgICByZW5kZXJidWZmZXItPmdldEZvcm1hdCgpLmluZm8tPmludGVybmFsRm9ybWF0
ID09IEdMX0RFUFRIMjRfU1RFTkNJTDgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
KnBhcmFtcyA9IEdMX0RFUFRIX1NURU5DSUw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZl
ci0+Z2V0Rm9ybWF0KCkuaW5mby0+aW50ZXJuYWxGb3JtYXQ7CisgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfUkVEX1NJWkU6CiAg
ICAgICAgICAgICAqcGFyYW1zID0gcmVuZGVyYnVmZmVyLT5nZXRSZWRTaXplKCk7CkBAIC01ODQs
NiArNzA4LDI0IEBAIHZvaWQgUXVlcnlTaGFkZXJpdihjb25zdCBTaGFkZXIgKnNoYWRlciwgR0xl
bnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogICAgIH0KIH0KIAordm9pZCBRdWVyeVRleExldmVs
UGFyYW1ldGVyZnYoY29uc3QgVGV4dHVyZSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICBR
dWVyeVRleExldmVsUGFyYW1ldGVyQmFzZSh0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBwbmFtZSwg
cGFyYW1zKTsKK30KKwordm9pZCBRdWVyeVRleExldmVsUGFyYW1ldGVyaXYoY29uc3QgVGV4dHVy
ZSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50ICpwYXJhbXMpCit7CisgICAgUXVlcnlUZXhMZXZlbFBhcmFtZXRlckJhc2Uo
dGV4dHVyZSwgdGFyZ2V0LCBsZXZlbCwgcG5hbWUsIHBhcmFtcyk7Cit9CisKIHZvaWQgUXVlcnlU
ZXhQYXJhbWV0ZXJmdihjb25zdCBUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIEdMZmxv
YXQgKnBhcmFtcykKIHsKICAgICBRdWVyeVRleFBhcmFtZXRlckJhc2UodGV4dHVyZSwgcG5hbWUs
IHBhcmFtcyk7CkBAIC02MDUsMTkgKzc0NywyMSBAQCB2b2lkIFF1ZXJ5U2FtcGxlclBhcmFtZXRl
cml2KGNvbnN0IFNhbXBsZXIgKnNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcwog
fQogCiB2b2lkIFF1ZXJ5VmVydGV4QXR0cmliZnYoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRy
aWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVydGV4QmluZGluZyAmYmluZGlu
ZywKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFs
dWVEYXRhICZjdXJyZW50VmFsdWVEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCiB7Ci0g
ICAgUXVlcnlWZXJ0ZXhBdHRyaWJCYXNlKGF0dHJpYiwgY3VycmVudFZhbHVlRGF0YS5GbG9hdFZh
bHVlcywgcG5hbWUsIHBhcmFtcyk7CisgICAgUXVlcnlWZXJ0ZXhBdHRyaWJCYXNlKGF0dHJpYiwg
YmluZGluZywgY3VycmVudFZhbHVlRGF0YS5GbG9hdFZhbHVlcywgcG5hbWUsIHBhcmFtcyk7CiB9
CiAKIHZvaWQgUXVlcnlWZXJ0ZXhBdHRyaWJpdihjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJp
YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZXJ0ZXhCaW5kaW5nICZiaW5kaW5n
LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1
ZURhdGEgJmN1cnJlbnRWYWx1ZURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCiB7Ci0gICAg
UXVlcnlWZXJ0ZXhBdHRyaWJCYXNlKGF0dHJpYiwgY3VycmVudFZhbHVlRGF0YS5GbG9hdFZhbHVl
cywgcG5hbWUsIHBhcmFtcyk7CisgICAgUXVlcnlWZXJ0ZXhBdHRyaWJCYXNlKGF0dHJpYiwgYmlu
ZGluZywgY3VycmVudFZhbHVlRGF0YS5GbG9hdFZhbHVlcywgcG5hbWUsIHBhcmFtcyk7CiB9CiAK
IHZvaWQgUXVlcnlWZXJ0ZXhBdHRyaWJQb2ludGVydihjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0
dHJpYiwgR0xlbnVtIHBuYW1lLCBHTHZvaWQgKipwb2ludGVyKQpAQCAtNjM1LDE5ICs3NzksMjEg
QEAgdm9pZCBRdWVyeVZlcnRleEF0dHJpYlBvaW50ZXJ2KGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAm
YXR0cmliLCBHTGVudW0gcG5hbWUsIEdMdm8KIH0KIAogdm9pZCBRdWVyeVZlcnRleEF0dHJpYklp
dihjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVmVydGV4QmluZGluZyAmYmluZGluZywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlRGF0YSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewotICAgIFF1ZXJ5VmVydGV4QXR0cmliQmFzZShh
dHRyaWIsIGN1cnJlbnRWYWx1ZURhdGEuSW50VmFsdWVzLCBwbmFtZSwgcGFyYW1zKTsKKyAgICBR
dWVyeVZlcnRleEF0dHJpYkJhc2UoYXR0cmliLCBiaW5kaW5nLCBjdXJyZW50VmFsdWVEYXRhLklu
dFZhbHVlcywgcG5hbWUsIHBhcmFtcyk7CiB9CiAKIHZvaWQgUXVlcnlWZXJ0ZXhBdHRyaWJJdWl2
KGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVmVydGV4QmluZGluZyAmYmluZGluZywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZURhdGEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFtcykKIHsKLSAgICBRdWVyeVZlcnRleEF0dHJpYkJh
c2UoYXR0cmliLCBjdXJyZW50VmFsdWVEYXRhLlVuc2lnbmVkSW50VmFsdWVzLCBwbmFtZSwgcGFy
YW1zKTsKKyAgICBRdWVyeVZlcnRleEF0dHJpYkJhc2UoYXR0cmliLCBiaW5kaW5nLCBjdXJyZW50
VmFsdWVEYXRhLlVuc2lnbmVkSW50VmFsdWVzLCBwbmFtZSwgcGFyYW1zKTsKIH0KIAogdm9pZCBR
dWVyeUFjdGl2ZVVuaWZvcm1CbG9ja2l2KGNvbnN0IFByb2dyYW0gKnByb2dyYW0sCkBAIC03MTgs
NiArODY0LDc2IEBAIHZvaWQgUXVlcnlJbnRlcm5hbEZvcm1hdGl2KGNvbnN0IFRleHR1cmVDYXBz
ICZmb3JtYXQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTCiAgICAgfQogfQogCit2b2lkIFF1
ZXJ5RnJhbWVidWZmZXJQYXJhbWV0ZXJpdihjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIs
IEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBBU1NFUlQoZnJhbWVidWZmZXIp
OworCisgICAgc3dpdGNoIChwbmFtZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZG
RVJfREVGQVVMVF9XSURUSDoKKyAgICAgICAgICAgICpwYXJhbXMgPSBmcmFtZWJ1ZmZlci0+Z2V0
RGVmYXVsdFdpZHRoKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9GUkFN
RUJVRkZFUl9ERUZBVUxUX0hFSUdIVDoKKyAgICAgICAgICAgICpwYXJhbXMgPSBmcmFtZWJ1ZmZl
ci0+Z2V0RGVmYXVsdEhlaWdodCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
R0xfRlJBTUVCVUZGRVJfREVGQVVMVF9TQU1QTEVTOgorICAgICAgICAgICAgKnBhcmFtcyA9IGZy
YW1lYnVmZmVyLT5nZXREZWZhdWx0U2FtcGxlcygpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfREVGQVVMVF9GSVhFRF9TQU1QTEVfTE9DQVRJT05TOgor
ICAgICAgICAgICAgKnBhcmFtcyA9IGZyYW1lYnVmZmVyLT5nZXREZWZhdWx0Rml4ZWRTYW1wbGVM
b2NhdGlvbnMoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKworRXJy
b3IgUXVlcnlTeW5jaXYoY29uc3QgRmVuY2VTeW5jICpzeW5jLAorICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgR0xpbnQgKnZh
bHVlcykKK3sKKyAgICBBU1NFUlQoc3luYyk7CisKKyAgICAvLyBBbGwgcXVlcmllcyByZXR1cm4g
b25lIHZhbHVlLCBleGl0IGVhcmx5IGlmIHRoZSBidWZmZXIgY2FuJ3QgZml0IGFueXRoaW5nLgor
ICAgIGlmIChidWZTaXplIDwgMSkKKyAgICB7CisgICAgICAgIGlmIChsZW5ndGggIT0gbnVsbHB0
cikKKyAgICAgICAgeworICAgICAgICAgICAgKmxlbmd0aCA9IDA7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIE5vRXJyb3IoKTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsK
KyAgICAgICAgY2FzZSBHTF9PQkpFQ1RfVFlQRToKKyAgICAgICAgICAgICp2YWx1ZXMgPSBDb252
ZXJ0VG9HTGludChHTF9TWU5DX0ZFTkNFKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEdMX1NZTkNfQ09ORElUSU9OOgorICAgICAgICAgICAgKnZhbHVlcyA9IENvbnZlcnRUb0dM
aW50KHN5bmMtPmdldENvbmRpdGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEdMX1NZTkNfRkxBR1M6CisgICAgICAgICAgICAqdmFsdWVzID0gQ29udmVydFRvR0xpbnQo
c3luYy0+Z2V0RmxhZ3MoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9T
WU5DX1NUQVRVUzoKKyAgICAgICAgICAgIEFOR0xFX1RSWShzeW5jLT5nZXRTdGF0dXModmFsdWVz
KSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChsZW5n
dGggIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgICpsZW5ndGggPSAxOworICAgIH0KKworICAg
IHJldHVybiBOb0Vycm9yKCk7Cit9CisKIHZvaWQgU2V0VGV4UGFyYW1ldGVyZihUZXh0dXJlICp0
ZXh0dXJlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCiB7CiAgICAgU2V0VGV4UGFyYW1l
dGVyQmFzZSh0ZXh0dXJlLCBwbmFtZSwgJnBhcmFtKTsKQEAgLTc1Nyw0ICs5NzMsMjI3IEBAIHZv
aWQgU2V0U2FtcGxlclBhcmFtZXRlcml2KFNhbXBsZXIgKnNhbXBsZXIsIEdMZW51bSBwbmFtZSwg
Y29uc3QgR0xpbnQgKnBhcmFtcykKIHsKICAgICBTZXRTYW1wbGVyUGFyYW1ldGVyQmFzZShzYW1w
bGVyLCBwbmFtZSwgcGFyYW1zKTsKIH0KKwordm9pZCBTZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcmko
RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQorewor
ICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAg
ICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9ERUZBVUxUX1dJRFRIOgorICAgICAgICAgICAgZnJh
bWVidWZmZXItPnNldERlZmF1bHRXaWR0aChwYXJhbSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9ERUZBVUxUX0hFSUdIVDoKKyAgICAgICAgICAgIGZy
YW1lYnVmZmVyLT5zZXREZWZhdWx0SGVpZ2h0KHBhcmFtKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfU0FNUExFUzoKKyAgICAgICAgICAg
IGZyYW1lYnVmZmVyLT5zZXREZWZhdWx0U2FtcGxlcyhwYXJhbSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9ERUZBVUxUX0ZJWEVEX1NBTVBMRV9MT0NB
VElPTlM6CisgICAgICAgICAgICBmcmFtZWJ1ZmZlci0+c2V0RGVmYXVsdEZpeGVkU2FtcGxlTG9j
YXRpb25zKHN0YXRpY19jYXN0PEdMYm9vbGVhbj4ocGFyYW0pKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBTZXRQcm9ncmFtUGFyYW1ldGVyaShQcm9ncmFt
ICpwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMaW50IHZhbHVlKQoreworICAgIEFTU0VSVChwcm9n
cmFtKTsKKworICAgIHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX1BST0dS
QU1fQklOQVJZX1JFVFJJRVZBQkxFX0hJTlQ6CisgICAgICAgICAgICBwcm9ncmFtLT5zZXRCaW5h
cnlSZXRyaWV2YWJsZUhpbnQodmFsdWUgIT0gR0xfRkFMU0UpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgR0xfUFJPR1JBTV9TRVBBUkFCTEU6CisgICAgICAgICAgICBwcm9ncmFt
LT5zZXRTZXBhcmFibGUodmFsdWUgIT0gR0xfRkFMU0UpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgfQogfQorCitHTHVpbnQgUXVlcnlQcm9ncmFtUmVzb3VyY2VJbmRleChjb25z
dCBQcm9ncmFtICpwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGNoYXIgKm5hbWUpCit7CisgICAgc3dpdGNoIChwcm9ncmFtSW50ZXJmYWNlKQorICAg
IHsKKyAgICAgICAgY2FzZSBHTF9QUk9HUkFNX0lOUFVUOgorICAgICAgICAgICAgcmV0dXJuIHBy
b2dyYW0tPmdldElucHV0UmVzb3VyY2VJbmRleChuYW1lKTsKKworICAgICAgICBjYXNlIEdMX1BS
T0dSQU1fT1VUUFVUOgorICAgICAgICAgICAgcmV0dXJuIHByb2dyYW0tPmdldE91dHB1dFJlc291
cmNlSW5kZXgobmFtZSk7CisKKyAgICAgICAgLy8gVE9ETyhKaWUpOiBtb3JlIGludGVyZmFjZXMu
CisgICAgICAgIGNhc2UgR0xfVU5JRk9STToKKyAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JMT0NL
OgorICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HOgorICAgICAgICBj
YXNlIEdMX0JVRkZFUl9WQVJJQUJMRToKKyAgICAgICAgY2FzZSBHTF9TSEFERVJfU1RPUkFHRV9C
TE9DSzoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJldHVybiBH
TF9JTlZBTElEX0lOREVYOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIEdMX0lOVkFMSURfSU5ERVg7CisgICAgfQorfQor
Cit2b2lkIFF1ZXJ5UHJvZ3JhbVJlc291cmNlTmFtZShjb25zdCBQcm9ncmFtICpwcm9ncmFtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGNoYXIgKm5hbWUpCit7CisgICAgc3dpdGNoIChwcm9ncmFtSW50ZXJmYWNlKQorICAgIHsKKyAg
ICAgICAgY2FzZSBHTF9QUk9HUkFNX0lOUFVUOgorICAgICAgICAgICAgcHJvZ3JhbS0+Z2V0SW5w
dXRSZXNvdXJjZU5hbWUoaW5kZXgsIGJ1ZlNpemUsIGxlbmd0aCwgbmFtZSk7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1BST0dSQU1fT1VUUFVUOgorICAgICAgICAgICAg
cHJvZ3JhbS0+Z2V0T3V0cHV0UmVzb3VyY2VOYW1lKGluZGV4LCBidWZTaXplLCBsZW5ndGgsIG5h
bWUpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLy8gVE9ETyhKaWUpOiBtb3JlIGlu
dGVyZmFjZXMuCisgICAgICAgIGNhc2UgR0xfVU5JRk9STToKKyAgICAgICAgY2FzZSBHTF9VTklG
T1JNX0JMT0NLOgorICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HOgor
ICAgICAgICBjYXNlIEdMX0JVRkZFUl9WQVJJQUJMRToKKyAgICAgICAgY2FzZSBHTF9TSEFERVJf
U1RPUkFHRV9CTE9DSzoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIGdsCisKK25hbWVzcGFjZSBlZ2wKK3sKKwordm9p
ZCBRdWVyeUNvbmZpZ0F0dHJpYihjb25zdCBDb25maWcgKmNvbmZpZywgRUdMaW50IGF0dHJpYnV0
ZSwgRUdMaW50ICp2YWx1ZSkKK3sKKyAgICBBU1NFUlQoY29uZmlnICE9IG51bGxwdHIpOworICAg
IHN3aXRjaCAoYXR0cmlidXRlKQorICAgIHsKKyAgICAgICAgY2FzZSBFR0xfQlVGRkVSX1NJWkU6
CisgICAgICAgICAgICAqdmFsdWUgPSBjb25maWctPmJ1ZmZlclNpemU7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBFR0xfQUxQSEFfU0laRToKKyAgICAgICAgICAgICp2YWx1ZSA9
IGNvbmZpZy0+YWxwaGFTaXplOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdM
X0JMVUVfU0laRToKKyAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZy0+Ymx1ZVNpemU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFR0xfR1JFRU5fU0laRToKKyAgICAgICAgICAg
ICp2YWx1ZSA9IGNvbmZpZy0+Z3JlZW5TaXplOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRUdMX1JFRF9TSVpFOgorICAgICAgICAgICAgKnZhbHVlID0gY29uZmlnLT5yZWRTaXpl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdMX0RFUFRIX1NJWkU6CisgICAg
ICAgICAgICAqdmFsdWUgPSBjb25maWctPmRlcHRoU2l6ZTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEVHTF9TVEVOQ0lMX1NJWkU6CisgICAgICAgICAgICAqdmFsdWUgPSBjb25m
aWctPnN0ZW5jaWxTaXplOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdMX0NP
TkZJR19DQVZFQVQ6CisgICAgICAgICAgICAqdmFsdWUgPSBjb25maWctPmNvbmZpZ0NhdmVhdDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVHTF9DT05GSUdfSUQ6CisgICAgICAg
ICAgICAqdmFsdWUgPSBjb25maWctPmNvbmZpZ0lEOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRUdMX0xFVkVMOgorICAgICAgICAgICAgKnZhbHVlID0gY29uZmlnLT5sZXZlbDsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVHTF9OQVRJVkVfUkVOREVSQUJMRToK
KyAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZy0+bmF0aXZlUmVuZGVyYWJsZTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEVHTF9OQVRJVkVfVklTVUFMX0lEOgorICAgICAgICAg
ICAgKnZhbHVlID0gY29uZmlnLT5uYXRpdmVWaXN1YWxJRDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEVHTF9OQVRJVkVfVklTVUFMX1RZUEU6CisgICAgICAgICAgICAqdmFsdWUg
PSBjb25maWctPm5hdGl2ZVZpc3VhbFR5cGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBFR0xfU0FNUExFUzoKKyAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZy0+c2FtcGxlczsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVHTF9TQU1QTEVfQlVGRkVSUzoKKyAg
ICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZy0+c2FtcGxlQnVmZmVyczsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEVHTF9TVVJGQUNFX1RZUEU6CisgICAgICAgICAgICAqdmFsdWUg
PSBjb25maWctPnN1cmZhY2VUeXBlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RUdMX1RSQU5TUEFSRU5UX1RZUEU6CisgICAgICAgICAgICAqdmFsdWUgPSBjb25maWctPnRyYW5z
cGFyZW50VHlwZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVHTF9UUkFOU1BB
UkVOVF9CTFVFX1ZBTFVFOgorICAgICAgICAgICAgKnZhbHVlID0gY29uZmlnLT50cmFuc3BhcmVu
dEJsdWVWYWx1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVHTF9UUkFOU1BB
UkVOVF9HUkVFTl9WQUxVRToKKyAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZy0+dHJhbnNwYXJl
bnRHcmVlblZhbHVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdMX1RSQU5T
UEFSRU5UX1JFRF9WQUxVRToKKyAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZy0+dHJhbnNwYXJl
bnRSZWRWYWx1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVHTF9CSU5EX1RP
X1RFWFRVUkVfUkdCOgorICAgICAgICAgICAgKnZhbHVlID0gY29uZmlnLT5iaW5kVG9UZXh0dXJl
UkdCOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdMX0JJTkRfVE9fVEVYVFVS
RV9SR0JBOgorICAgICAgICAgICAgKnZhbHVlID0gY29uZmlnLT5iaW5kVG9UZXh0dXJlUkdCQTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVHTF9NSU5fU1dBUF9JTlRFUlZBTDoK
KyAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZy0+bWluU3dhcEludGVydmFsOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdMX01BWF9TV0FQX0lOVEVSVkFMOgorICAgICAgICAg
ICAgKnZhbHVlID0gY29uZmlnLT5tYXhTd2FwSW50ZXJ2YWw7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFR0xfTFVNSU5BTkNFX1NJWkU6CisgICAgICAgICAgICAqdmFsdWUgPSBj
b25maWctPmx1bWluYW5jZVNpemU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBF
R0xfQUxQSEFfTUFTS19TSVpFOgorICAgICAgICAgICAgKnZhbHVlID0gY29uZmlnLT5hbHBoYU1h
c2tTaXplOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdMX0NPTE9SX0JVRkZF
Ul9UWVBFOgorICAgICAgICAgICAgKnZhbHVlID0gY29uZmlnLT5jb2xvckJ1ZmZlclR5cGU7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFR0xfUkVOREVSQUJMRV9UWVBFOgorICAg
ICAgICAgICAgKnZhbHVlID0gY29uZmlnLT5yZW5kZXJhYmxlVHlwZTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEVHTF9NQVRDSF9OQVRJVkVfUElYTUFQOgorICAgICAgICAgICAg
KnZhbHVlID0gZmFsc2U7CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBFR0xfQ09ORk9STUFOVDoKKyAgICAgICAgICAgICp2YWx1
ZSA9IGNvbmZpZy0+Y29uZm9ybWFudDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEVHTF9NQVhfUEJVRkZFUl9XSURUSDoKKyAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZy0+bWF4
UEJ1ZmZlcldpZHRoOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdMX01BWF9Q
QlVGRkVSX0hFSUdIVDoKKyAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZy0+bWF4UEJ1ZmZlckhl
aWdodDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVHTF9NQVhfUEJVRkZFUl9Q
SVhFTFM6CisgICAgICAgICAgICAqdmFsdWUgPSBjb25maWctPm1heFBCdWZmZXJQaXhlbHM7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFR0xfT1BUSU1BTF9TVVJGQUNFX09SSUVO
VEFUSU9OX0FOR0xFOgorICAgICAgICAgICAgKnZhbHVlID0gY29uZmlnLT5vcHRpbWFsT3JpZW50
YXRpb247CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFR0xfQ09MT1JfQ09NUE9O
RU5UX1RZUEVfRVhUOgorICAgICAgICAgICAgKnZhbHVlID0gY29uZmlnLT5jb2xvckNvbXBvbmVu
dFR5cGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK30gIC8vIG5h
bWVzcGFjZSBlZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9xdWVyeXV0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cXVlcnl1dGlscy5oCmluZGV4IDI4YTg0YjNiZDI4Yzg4ZTM4MjYwOWIzNDIxZDdhY2NhNDZlZTBm
ZTYuLjQwYzdkODJjNmE1MjUyODViYzk1ZWEzMTg4Y2UwOTZjYWI2NGQ2NDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeXV0aWxzLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3F1ZXJ5dXRpbHMuaApAQCAtMTIs
OSArMTIsMTQgQEAKICNpbmNsdWRlICJhbmdsZV9nbC5oIgogI2luY2x1ZGUgImNvbW1vbi9hbmds
ZXV0aWxzLmgiCiAKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisKIG5hbWVzcGFjZSBnbAogewogY2xh
c3MgQnVmZmVyOworY2xhc3MgQ29udGV4dDsKK2NsYXNzIEVycm9yOworY2xhc3MgRmVuY2VTeW5j
OwogY2xhc3MgRnJhbWVidWZmZXI7CiBjbGFzcyBQcm9ncmFtOwogY2xhc3MgUmVuZGVyYnVmZmVy
OwpAQCAtMjQsNiArMjksNyBAQCBjbGFzcyBUZXh0dXJlOwogc3RydWN0IFRleHR1cmVDYXBzOwog
c3RydWN0IFVuaWZvcm1CbG9jazsKIHN0cnVjdCBWZXJ0ZXhBdHRyaWJ1dGU7CitzdHJ1Y3QgVmVy
dGV4QmluZGluZzsKIHN0cnVjdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhOwogCiB2b2lk
IFF1ZXJ5RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoY29uc3QgRnJhbWVidWZmZXIg
KmZyYW1lYnVmZmVyLApAQCAtMzQsMjYgKzQwLDUwIEBAIHZvaWQgUXVlcnlCdWZmZXJQYXJhbWV0
ZXJpdihjb25zdCBCdWZmZXIgKmJ1ZmZlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsK
IHZvaWQgUXVlcnlCdWZmZXJQYXJhbWV0ZXJpNjR2KGNvbnN0IEJ1ZmZlciAqYnVmZmVyLCBHTGVu
dW0gcG5hbWUsIEdMaW50NjQgKnBhcmFtcyk7CiB2b2lkIFF1ZXJ5QnVmZmVyUG9pbnRlcnYoY29u
c3QgQnVmZmVyICpidWZmZXIsIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcyk7CiB2b2lkIFF1
ZXJ5UHJvZ3JhbWl2KGNvbnN0IFByb2dyYW0gKnByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQg
KnBhcmFtcyk7Ci12b2lkIFF1ZXJ5UmVuZGVyYnVmZmVyaXYoY29uc3QgUmVuZGVyYnVmZmVyICpy
ZW5kZXJidWZmZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit2b2lkIFF1ZXJ5UmVu
ZGVyYnVmZmVyaXYoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBh
cmFtcyk7CiB2b2lkIFF1ZXJ5U2hhZGVyaXYoY29uc3QgU2hhZGVyICpzaGFkZXIsIEdMZW51bSBw
bmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit2b2lkIFF1ZXJ5VGV4TGV2ZWxQYXJhbWV0ZXJmdihjb25z
dCBUZXh0dXJlICp0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKK3ZvaWQgUXVlcnlUZXhMZXZlbFBhcmFt
ZXRlcml2KGNvbnN0IFRleHR1cmUgKnRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKIHZvaWQgUXVlcnlUZXhQ
YXJhbWV0ZXJmdihjb25zdCBUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg
KnBhcmFtcyk7CiB2b2lkIFF1ZXJ5VGV4UGFyYW1ldGVyaXYoY29uc3QgVGV4dHVyZSAqdGV4dHVy
ZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKIHZvaWQgUXVlcnlTYW1wbGVyUGFyYW1l
dGVyZnYoY29uc3QgU2FtcGxlciAqc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJh
bXMpOwogdm9pZCBRdWVyeVNhbXBsZXJQYXJhbWV0ZXJpdihjb25zdCBTYW1wbGVyICpzYW1wbGVy
LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworCisvLyBXYXJuaW5nOiB5b3Ugc2hvdWxk
IGVuc3VyZSBiaW5kaW5nIHJlYWxseSBtYXRjaGVzIGF0dHJpYi5iaW5kaW5nSW5kZXggYmVmb3Jl
IHVzaW5nIHRoZSBmb2xsb3dpbmcKKy8vIGZ1bmN0aW9ucy4KIHZvaWQgUXVlcnlWZXJ0ZXhBdHRy
aWJmdihjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZURhdGEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcyk7CisKIHZvaWQgUXVlcnlWZXJ0ZXhBdHRyaWJpdihj
b25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZURhdGEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50ICpwYXJhbXMpOworCiB2b2lkIFF1ZXJ5VmVydGV4QXR0cmliUG9pbnRlcnYoY29u
c3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMZW51bSBwbmFtZSwgR0x2b2lkICoqcG9pbnRl
cik7CisKIHZvaWQgUXVlcnlWZXJ0ZXhBdHRyaWJJaXYoY29uc3QgVmVydGV4QXR0cmlidXRlICZh
dHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlcnRleEJpbmRpbmcgJmJp
bmRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYkN1cnJl
bnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7
CisKIHZvaWQgUXVlcnlWZXJ0ZXhBdHRyaWJJdWl2KGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0
cmliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVydGV4QmluZGluZyAmYmlu
ZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYkN1cnJl
bnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKnBhcmFt
cyk7CkBAIC02NSw2ICs5NSwxNCBAQCB2b2lkIFF1ZXJ5QWN0aXZlVW5pZm9ybUJsb2NraXYoY29u
c3QgUHJvZ3JhbSAqcHJvZ3JhbSwKIAogdm9pZCBRdWVyeUludGVybmFsRm9ybWF0aXYoY29uc3Qg
VGV4dHVyZUNhcHMgJmZvcm1hdCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMaW50
ICpwYXJhbXMpOwogCit2b2lkIFF1ZXJ5RnJhbWVidWZmZXJQYXJhbWV0ZXJpdihjb25zdCBGcmFt
ZWJ1ZmZlciAqZnJhbWVidWZmZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CisKK0Vy
cm9yIFF1ZXJ5U3luY2l2KGNvbnN0IEZlbmNlU3luYyAqc3luYywKKyAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgIEdMaW50ICp2
YWx1ZXMpOworCiB2b2lkIFNldFRleFBhcmFtZXRlcmYoVGV4dHVyZSAqdGV4dHVyZSwgR0xlbnVt
IHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKIHZvaWQgU2V0VGV4UGFyYW1ldGVyZnYoVGV4dHVyZSAq
dGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwogdm9pZCBTZXRU
ZXhQYXJhbWV0ZXJpKFRleHR1cmUgKnRleHR1cmUsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0p
OwpAQCAtNzQsNiArMTEyLDMwIEBAIHZvaWQgU2V0U2FtcGxlclBhcmFtZXRlcmYoU2FtcGxlciAq
c2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKTsKIHZvaWQgU2V0U2FtcGxlclBh
cmFtZXRlcmZ2KFNhbXBsZXIgKnNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAq
cGFyYW1zKTsKIHZvaWQgU2V0U2FtcGxlclBhcmFtZXRlcmkoU2FtcGxlciAqc2FtcGxlciwgR0xl
bnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CiB2b2lkIFNldFNhbXBsZXJQYXJhbWV0ZXJpdihTYW1w
bGVyICpzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpOwotfQorCit2
b2lkIFNldEZyYW1lYnVmZmVyUGFyYW1ldGVyaShGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOworCit2b2lkIFNldFByb2dyYW1QYXJhbWV0ZXJpKFBy
b2dyYW0gKnByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpOworCitHTHVpbnQgUXVl
cnlQcm9ncmFtUmVzb3VyY2VJbmRleChjb25zdCBQcm9ncmFtICpwcm9ncmFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUpOworCit2b2lkIFF1
ZXJ5UHJvZ3JhbVJlc291cmNlTmFtZShjb25zdCBQcm9ncmFtICpwcm9ncmFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm5h
bWUpOworCit9ICAvLyBuYW1lc3BhY2UgZ2wKKworbmFtZXNwYWNlIGVnbAoreworc3RydWN0IENv
bmZpZzsKKwordm9pZCBRdWVyeUNvbmZpZ0F0dHJpYihjb25zdCBDb25maWcgKmNvbmZpZywgRUdM
aW50IGF0dHJpYnV0ZSwgRUdMaW50ICp2YWx1ZSk7CisKK30gIC8vIG5hbWVzcGFjZSBlZ2wKIAog
I2VuZGlmICAvLyBMSUJBTkdMRV9RVUVSWVVUSUxTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvQnVmZmVySW1wbC5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0J1ZmZlckltcGwuaAppbmRl
eCA4OTA0YmYzMWViZTg3ODE5ZDIzMTdmZDA1MTg4MDI1MmNlMmI0YjJhLi5mMmI0NWJiYTU5ZTI2
MDhkMTQ4MjYwNzE5ZmJmYzExZDdjZThkOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvQnVmZmVySW1wbC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9CdWZmZXJJbXBsLmgKQEAgLTE1
LDI5ICsxNSw1MyBAQAogCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAKK25hbWVzcGFjZSBnbAorewor
Y2xhc3MgQnVmZmVyU3RhdGU7Cit9CisKIG5hbWVzcGFjZSByeAogeworY2xhc3MgQ29udGV4dElt
cGw7CiAKIGNsYXNzIEJ1ZmZlckltcGwgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGlj
OgorICAgIEJ1ZmZlckltcGwoY29uc3QgZ2w6OkJ1ZmZlclN0YXRlICZzdGF0ZSkgOiBtU3RhdGUo
c3RhdGUpIHt9CiAgICAgdmlydHVhbCB+QnVmZmVySW1wbCgpIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkZXN0cm95KENvbnRleHRJbXBsICpjb250ZXh0SW1wbCkge30KIAotICAgIHZpcnR1YWwgZ2w6
OkVycm9yIHNldERhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNp
emUsIEdMZW51bSB1c2FnZSkgICAgID0gMDsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBzZXRTdWJE
YXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBzaXplX3Qg
b2Zmc2V0KSA9IDA7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgY29weVN1YkRhdGEoQnVmZmVySW1w
bCAqc291cmNlLAorICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldERhdGEoQ29udGV4dEltcGwgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHVzYWdlKSA9IDA7CisgICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0U3ViRGF0
YShDb250ZXh0SW1wbCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2
b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0KSA9IDA7Cisg
ICAgdmlydHVhbCBnbDo6RXJyb3IgY29weVN1YkRhdGEoQ29udGV4dEltcGwgKmNvbnRleHRJbXBs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlckltcGwgKnNvdXJjZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBzb3VyY2VPZmZzZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgZGVzdE9mZnNldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUpID0gMDsK
LSAgICB2aXJ0dWFsIGdsOjpFcnJvciBtYXAoR0xlbnVtIGFjY2VzcywgR0x2b2lkICoqbWFwUHRy
KSA9IDA7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3IgbWFwUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikgPSAwOwotICAg
IHZpcnR1YWwgZ2w6OkVycm9yIHVubWFwKEdMYm9vbGVhbiAqcmVzdWx0KSA9IDA7CisgICAgdmly
dHVhbCBnbDo6RXJyb3IgbWFwKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwgR0xlbnVtIGFjY2Vz
cywgR0x2b2lkICoqbWFwUHRyKSA9IDA7CisgICAgdmlydHVhbCBnbDo6RXJyb3IgbWFwUmFuZ2Uo
Q29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxl
bmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIGFjY2VzcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKiptYXBQdHIpID0gMDsKKyAg
ICB2aXJ0dWFsIGdsOjpFcnJvciB1bm1hcChDb250ZXh0SW1wbCAqY29udGV4dEltcGwsIEdMYm9v
bGVhbiAqcmVzdWx0KSA9IDA7CiAKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRJbmRleFJhbmdl
KEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3Vu
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJpbWl0aXZlUmVz
dGFydEVuYWJsZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SW5k
ZXhSYW5nZSAqb3V0UmFuZ2UpID0gMDsKKworICBwcm90ZWN0ZWQ6CisgICAgY29uc3QgZ2w6OkJ1
ZmZlclN0YXRlICZtU3RhdGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvQnVmZmVySW1wbF9tb2NrLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvQnVmZmVySW1wbF9tb2NrLmgK
aW5kZXggNDZlMDdiNDcwODFlZWMyNzc2NmFlMzk5M2MxZjUxZjdhYjk4YThhNi4uMmUxZjA1MDI3
ZGYxOWJmNmZiZTM2ODk3YTExNDQ2MGVhOTliMTY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0J1ZmZlckltcGxfbW9jay5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9CdWZmZXJJbXBs
X21vY2suaApAQCAtMTEsMjYgKzExLDMyIEBACiAKICNpbmNsdWRlICJnbW9jay9nbW9jay5oIgog
CisjaW5jbHVkZSAibGliQU5HTEUvQnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvQnVmZmVySW1wbC5oIgogCiBuYW1lc3BhY2UgcngKIHsKLQogY2xhc3MgTW9ja0J1ZmZlcklt
cGwgOiBwdWJsaWMgQnVmZmVySW1wbAogewogICBwdWJsaWM6CisgICAgTW9ja0J1ZmZlckltcGwo
KSA6IEJ1ZmZlckltcGwobU1vY2tTdGF0ZSkge30KICAgICB+TW9ja0J1ZmZlckltcGwoKSB7IGRl
c3RydWN0b3IoKTsgfQogCi0gICAgTU9DS19NRVRIT0Q0KHNldERhdGEsIGdsOjpFcnJvcihHTGVu
dW0sIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBHTGVudW0pKTsKLSAgICBNT0NLX01FVEhPRDQoc2V0
U3ViRGF0YSwgZ2w6OkVycm9yKEdMZW51bSwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCkp
OwotICAgIE1PQ0tfTUVUSE9ENChjb3B5U3ViRGF0YSwgZ2w6OkVycm9yKEJ1ZmZlckltcGwgKiwg
R0xpbnRwdHIsIEdMaW50cHRyLCBHTHNpemVpcHRyKSk7Ci0gICAgTU9DS19NRVRIT0QyKG1hcCwg
Z2w6OkVycm9yKEdMZW51bSwgR0x2b2lkICoqKSk7Ci0gICAgTU9DS19NRVRIT0Q0KG1hcFJhbmdl
LCBnbDo6RXJyb3Ioc2l6ZV90LCBzaXplX3QsIEdMYml0ZmllbGQsIEdMdm9pZCAqKikpOwotICAg
IE1PQ0tfTUVUSE9EMSh1bm1hcCwgZ2w6OkVycm9yKEdMYm9vbGVhbiAqcmVzdWx0KSk7CisgICAg
TU9DS19NRVRIT0Q1KHNldERhdGEsIGdsOjpFcnJvcihDb250ZXh0SW1wbCAqLCBHTGVudW0sIGNv
bnN0IHZvaWQgKiwgc2l6ZV90LCBHTGVudW0pKTsKKyAgICBNT0NLX01FVEhPRDUoc2V0U3ViRGF0
YSwgZ2w6OkVycm9yKENvbnRleHRJbXBsICosIEdMZW51bSwgY29uc3Qgdm9pZCAqLCBzaXplX3Qs
IHNpemVfdCkpOworICAgIE1PQ0tfTUVUSE9ENShjb3B5U3ViRGF0YSwKKyAgICAgICAgICAgICAg
ICAgZ2w6OkVycm9yKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwgQnVmZmVySW1wbCAqLCBHTGlu
dHB0ciwgR0xpbnRwdHIsIEdMc2l6ZWlwdHIpKTsKKyAgICBNT0NLX01FVEhPRDMobWFwLCBnbDo6
RXJyb3IoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLCBHTGVudW0sIEdMdm9pZCAqKikpOworICAg
IE1PQ0tfTUVUSE9ENShtYXBSYW5nZSwKKyAgICAgICAgICAgICAgICAgZ2w6OkVycm9yKENvbnRl
eHRJbXBsICpjb250ZXh0SW1wbCwgc2l6ZV90LCBzaXplX3QsIEdMYml0ZmllbGQsIEdMdm9pZCAq
KikpOworICAgIE1PQ0tfTUVUSE9EMih1bm1hcCwgZ2w6OkVycm9yKENvbnRleHRJbXBsICpjb250
ZXh0SW1wbCwgR0xib29sZWFuICpyZXN1bHQpKTsKIAogICAgIE1PQ0tfTUVUSE9ENShnZXRJbmRl
eFJhbmdlLCBnbDo6RXJyb3IoR0xlbnVtLCBzaXplX3QsIHNpemVfdCwgYm9vbCwgZ2w6OkluZGV4
UmFuZ2UgKikpOwogCiAgICAgTU9DS19NRVRIT0QwKGRlc3RydWN0b3IsIHZvaWQoKSk7CisKKyAg
cHJvdGVjdGVkOgorICAgIGdsOjpCdWZmZXJTdGF0ZSBtTW9ja1N0YXRlOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Nv
bnRleHRJbXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvQ29udGV4dEltcGwuaAppbmRleCAzZmM5ZGI1OTM3M2FiZDI4NTYxNTc5NWNhOTI4NDdiMTdh
NGU5NWJiLi5iMDFkOTAzYWI2OGQ1YTM2ZGI4MDlhNmQ2MzMyZDhlYWUwOWJiZWNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvQ29udGV4
dEltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvQ29udGV4dEltcGwuaApAQCAtNjEsNiArNjEsOSBAQCBjbGFzcyBDb250ZXh0SW1wbCA6IHB1
YmxpYyBHTEltcGxGYWN0b3J5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKSA9IDA7CiAKKyAgICB2
aXJ0dWFsIGdsOjpFcnJvciBkcmF3QXJyYXlzSW5kaXJlY3QoR0xlbnVtIG1vZGUsIGNvbnN0IEdM
dm9pZCAqaW5kaXJlY3QpID0gMDsKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBkcmF3RWxlbWVudHNJ
bmRpcmVjdChHTGVudW0gbW9kZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3Qp
ID0gMDsKKwogICAgIC8vIENIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIHBhdGggZHJhd2luZyBtZXRo
b2RzLgogICAgIHZpcnR1YWwgdm9pZCBzdGVuY2lsRmlsbFBhdGgoY29uc3QgZ2w6OlBhdGggKnBh
dGgsIEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2spOwogICAgIHZpcnR1YWwgdm9pZCBzdGVu
Y2lsU3Ryb2tlUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xpbnQgcmVmZXJlbmNlLCBHTHVp
bnQgbWFzayk7CkBAIC0xMjAsNyArMTIzLDcgQEAgY2xhc3MgQ29udGV4dEltcGwgOiBwdWJsaWMg
R0xJbXBsRmFjdG9yeQogICAgIHZpcnR1YWwgdm9pZCBwb3BHcm91cE1hcmtlcigpID0gMDsKIAog
ICAgIC8vIFN0YXRlIHN5bmMgd2l0aCBkaXJ0eSBiaXRzLgotICAgIHZpcnR1YWwgdm9pZCBzeW5j
U3RhdGUoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMg
JmRpcnR5Qml0cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6OlN0
YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgPSAwOwogCiAgICAgLy8gRGlzam9pbnQgdGltZXIg
cXVlcmllcwogICAgIHZpcnR1YWwgR0xpbnQgZ2V0R1BVRGlzam9pbnQoKSA9IDA7CkBAIC0xMzUs
NiArMTM4LDggQEAgY2xhc3MgQ29udGV4dEltcGwgOiBwdWJsaWMgR0xJbXBsRmFjdG9yeQogICAg
IHZpcnR1YWwgY29uc3QgZ2w6OkV4dGVuc2lvbnMgJmdldE5hdGl2ZUV4dGVuc2lvbnMoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBjb25zdCBnbDo6TGltaXRhdGlvbnMgJmdldE5hdGl2ZUxpbWl0
YXRpb25zKCkgY29uc3QgPSAwOwogCisgICAgdmlydHVhbCBnbDo6RXJyb3IgZGlzcGF0Y2hDb21w
dXRlKEdMdWludCBudW1Hcm91cHNYLCBHTHVpbnQgbnVtR3JvdXBzWSwgR0x1aW50IG51bUdyb3Vw
c1opID0gMDsKKwogICAgIGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmdldENvbnRleHRTdGF0ZSgp
IHsgcmV0dXJuIG1TdGF0ZTsgfQogICAgIGludCBnZXRDbGllbnRNYWpvclZlcnNpb24oKSBjb25z
dCB7IHJldHVybiBtU3RhdGUuZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCk7IH0KICAgICBpbnQgZ2V0
Q2xpZW50TWlub3JWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLmdldENsaWVudE1pbm9y
VmVyc2lvbigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvRGlzcGxheUltcGwuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Rpc3BsYXlJbXBsLmNwcAppbmRleCA4MDYxMTg5ZjBhNzY3
ZTM0NzBiMGM2N2E2YTM1ZTFkZTI4ZjQ2NDIyLi4wODBhZjM3YzdmOWIwNzQzZWYzMjQ4ZmY0MTcy
ZThiZDhkMTllNGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvRGlzcGxheUltcGwuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9EaXNwbGF5SW1wbC5jcHAKQEAgLTgsMjYgKzgsMjAg
QEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0Rpc3BsYXlJbXBsLmgiCiAKKyNpbmNs
dWRlICJsaWJBTkdMRS9EaXNwbGF5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvU3VyZmFjZS5oIgog
CiBuYW1lc3BhY2UgcngKIHsKIAotRGlzcGxheUltcGw6OkRpc3BsYXlJbXBsKCkKLSAgICA6IG1F
eHRlbnNpb25zSW5pdGlhbGl6ZWQoZmFsc2UpLAotICAgICAgbUNhcHNJbml0aWFsaXplZChmYWxz
ZSkKK0Rpc3BsYXlJbXBsOjpEaXNwbGF5SW1wbChjb25zdCBlZ2w6OkRpc3BsYXlTdGF0ZSAmc3Rh
dGUpCisgICAgOiBtU3RhdGUoc3RhdGUpLCBtRXh0ZW5zaW9uc0luaXRpYWxpemVkKGZhbHNlKSwg
bUNhcHNJbml0aWFsaXplZChmYWxzZSkKIHsKIH0KIAogRGlzcGxheUltcGw6On5EaXNwbGF5SW1w
bCgpCiB7Ci0gICAgQVNTRVJUKG1TdXJmYWNlU2V0LmVtcHR5KCkpOwotfQotCi12b2lkIERpc3Bs
YXlJbXBsOjpkZXN0cm95U3VyZmFjZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCi17Ci0gICAgbVN1
cmZhY2VTZXQuZXJhc2Uoc3VyZmFjZSk7Ci0gICAgc3VyZmFjZS0+b25EZXN0cm95KCk7CisgICAg
QVNTRVJUKG1TdGF0ZS5zdXJmYWNlU2V0LmVtcHR5KCkpOwogfQogCiBjb25zdCBlZ2w6OkRpc3Bs
YXlFeHRlbnNpb25zICZEaXNwbGF5SW1wbDo6Z2V0RXh0ZW5zaW9ucygpIGNvbnN0CkBAIC00MSw2
ICszNSwxNSBAQCBjb25zdCBlZ2w6OkRpc3BsYXlFeHRlbnNpb25zICZEaXNwbGF5SW1wbDo6Z2V0
RXh0ZW5zaW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIG1FeHRlbnNpb25zOwogfQogCitlZ2w6OkVy
cm9yIERpc3BsYXlJbXBsOjp2YWxpZGF0ZUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OkNvbmZpZyAq
Y29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0
cmlicykgY29uc3QKK3sKKyAgICBVTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBlZ2w6OkVycm9y
KEVHTF9CQURfRElTUExBWSwgIkRpc3BsYXlJbXBsOjp2YWxpZGF0ZUNsaWVudEJ1ZmZlciB1bmlt
cGxlbWVudGVkLiIpOworfQorCiBjb25zdCBlZ2w6OkNhcHMgJkRpc3BsYXlJbXBsOjpnZXRDYXBz
KCkgY29uc3QKIHsKICAgICBpZiAoIW1DYXBzSW5pdGlhbGl6ZWQpCkBAIC01Miw0ICs1NSw0IEBA
IGNvbnN0IGVnbDo6Q2FwcyAmRGlzcGxheUltcGw6OmdldENhcHMoKSBjb25zdAogICAgIHJldHVy
biBtQ2FwczsKIH0KIAotfQorfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRGlzcGxheUltcGwuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9EaXNwbGF5SW1wbC5o
CmluZGV4IDY1MjQ4NmVkYmQ4ZTBlOTAwNGNlZjI2ZDA2ZjZlOTQ5Njg3Y2E2ZjkuLjBiMzY3NTgx
NDllN2ViOWE4MGYxMzk5ZjIzMDRkZjRjNWIyNmFlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9EaXNwbGF5SW1wbC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9EaXNwbGF5SW1wbC5o
CkBAIC0yNCw2ICsyNCw3IEBAIG5hbWVzcGFjZSBlZ2wKIHsKIGNsYXNzIEF0dHJpYnV0ZU1hcDsK
IGNsYXNzIERpc3BsYXk7CitzdHJ1Y3QgRGlzcGxheVN0YXRlOwogc3RydWN0IENvbmZpZzsKIGNs
YXNzIFN1cmZhY2U7CiBjbGFzcyBJbWFnZVNpYmxpbmc7CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNz
IFN0cmVhbVByb2R1Y2VySW1wbDsKIGNsYXNzIERpc3BsYXlJbXBsIDogcHVibGljIEVHTEltcGxG
YWN0b3J5CiB7CiAgIHB1YmxpYzoKLSAgICBEaXNwbGF5SW1wbCgpOworICAgIERpc3BsYXlJbXBs
KGNvbnN0IGVnbDo6RGlzcGxheVN0YXRlICZzdGF0ZSk7CiAgICAgdmlydHVhbCB+RGlzcGxheUlt
cGwoKTsKIAogICAgIHZpcnR1YWwgZWdsOjpFcnJvciBpbml0aWFsaXplKGVnbDo6RGlzcGxheSAq
ZGlzcGxheSkgPSAwOwpAQCAtNTksNiArNjAsMTAgQEAgY2xhc3MgRGlzcGxheUltcGwgOiBwdWJs
aWMgRUdMSW1wbEZhY3RvcnkKICAgICB2aXJ0dWFsIGVnbDo6RXJyb3IgcmVzdG9yZUxvc3REZXZp
Y2UoKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRp
dmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZWdsOjpFcnJvciB2
YWxpZGF0ZUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRC
dWZmZXIgY2xpZW50QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgY29uc3Q7CiAKICAgICB2
aXJ0dWFsIHN0ZDo6c3RyaW5nIGdldFZlbmRvclN0cmluZygpIGNvbnN0ID0gMDsKIApAQCAtNzEs
MTggKzc2LDEwIEBAIGNsYXNzIERpc3BsYXlJbXBsIDogcHVibGljIEVHTEltcGxGYWN0b3J5CiAg
ICAgdmlydHVhbCBnbDo6VmVyc2lvbiBnZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdCAg
ICAgICAgICAgPSAwOwogICAgIGNvbnN0IGVnbDo6Q2FwcyAmZ2V0Q2FwcygpIGNvbnN0OwogCi0g
ICAgdHlwZWRlZiBzdGQ6OnNldDxlZ2w6OlN1cmZhY2UqPiBTdXJmYWNlU2V0OwotICAgIGNvbnN0
IFN1cmZhY2VTZXQgJmdldFN1cmZhY2VTZXQoKSBjb25zdCB7IHJldHVybiBtU3VyZmFjZVNldDsg
fQotICAgIFN1cmZhY2VTZXQgJmdldFN1cmZhY2VTZXQoKSB7IHJldHVybiBtU3VyZmFjZVNldDsg
fQotCi0gICAgdm9pZCBkZXN0cm95U3VyZmFjZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOwotCiAg
ICAgY29uc3QgZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAmZ2V0RXh0ZW5zaW9ucygpIGNvbnN0Owog
CiAgIHByb3RlY3RlZDoKLSAgICAvLyBQbGFjZSB0aGUgc3VyZmFjZSBzZXQgaGVyZSBzbyBpdCBj
YW4gYmUgYWNjZXNzaWJsZSBmb3IgaGFuZGxpbmcKLSAgICAvLyBjb250ZXh0IGxvc3MgZXZlbnRz
LiAoSXQgaXMgc2hhcmVkIGJldHdlZW4gdGhlIERpc3BsYXkgYW5kIEltcGwuKQotICAgIFN1cmZh
Y2VTZXQgbVN1cmZhY2VTZXQ7CisgICAgY29uc3QgZWdsOjpEaXNwbGF5U3RhdGUgJm1TdGF0ZTsK
IAogICBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBnZW5lcmF0ZUV4dGVuc2lvbnMoZWdsOjpE
aXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0VHTEltcGxGYWN0
b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRUdM
SW1wbEZhY3RvcnkuaAppbmRleCBiMmM4NzcxY2MxYzkyODE2YTYxYmUxODVkMmRjODIxMzg4YTYx
M2NmLi4wZWM4ZmE4YjAzYzQxZGU1NWZmNzFmYmFjMDUwMWE5ZjFlNjQ4ODExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRUdMSW1wbEZh
Y3RvcnkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvRUdMSW1wbEZhY3RvcnkuaApAQCAtMzksMTggKzM5LDE1IEBAIGNsYXNzIEVHTEltcGxGYWN0
b3J5IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdmlydHVhbCB+RUdMSW1wbEZhY3RvcnkoKSB7
fQogCiAgICAgdmlydHVhbCBTdXJmYWNlSW1wbCAqY3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBl
Z2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUg
d2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpID0gMDsKICAgICB2aXJ0dWFsIFN1cmZhY2VJ
bXBsICpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWds
OjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpID0gMDsKICAg
ICB2aXJ0dWFsIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25z
dCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRC
dWZmZXIgY2xpZW50QnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSA9IDA7
CiAgICAgdmlydHVhbCBTdXJmYWNlSW1wbCAqY3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6
OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0aXZl
UGl4bWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQ0M2QzMzc1N2Q1ZTQwMzU3MjMxZjIxOTBjODVl
ZGRjMWQ5YjMyMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNiBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBGb3JtYXQ6Ci0v
LyAgIEEgdW5pdmVyc2FsIGRlc2NyaXB0aW9uIG9mIHRleHR1cmUgc3RvcmFnZS4gQWNyb3NzIG11
bHRpcGxlCi0vLyAgIHJlbmRlcmVyIGJhY2stZW5kcywgdGhlcmUgYXJlIGNvbW1vbiBmb3JtYXRz
IGFuZCBzb21lIGRpc3RpbmN0Ci0vLyAgIHBlcm11dGF0aW9ucywgdGhpcyBlbnVtIGVuY2Fwc3Vs
YXRlcyB0aGVtIGFsbC4KLQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oIgot
Ci0jaW5jbHVkZSAiaW1hZ2VfdXRpbC9jb3B5aW1hZ2UuaCIKLQotdXNpbmcgbmFtZXNwYWNlIHJ4
OwotCi1uYW1lc3BhY2UgYW5nbGUKLXsKLQotbmFtZXNwYWNlCi17Ci0KLWNvbnN0IEZhc3RDb3B5
RnVuY3Rpb25NYXAgJkdldEZhc3RDb3B5RnVuY3Rpb25zTWFwKEZvcm1hdDo6SUQgZm9ybWF0SUQp
Ci17Ci0gICAgc3dpdGNoIChmb3JtYXRJRCkKLSAgICB7Ci0gICAgICAgIGNhc2UgRm9ybWF0OjpJ
RDo6QjhHOFI4QThfVU5PUk06Ci0gICAgICAgIHsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
dXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1
Y3RvcnMiCi0gICAgICAgICAgICBzdGF0aWMgRmFzdENvcHlGdW5jdGlvbk1hcCBmYXN0Q29weU1h
cDsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICAgICAgICAgIGlmIChmYXN0Q29w
eU1hcC5lbXB0eSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZhc3RDb3B5TWFw
W2dsOjpGb3JtYXRUeXBlKEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUpXSA9IENvcHlCR1JBOFRv
UkdCQTg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZmFzdENvcHlNYXA7Ci0g
ICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgewotI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4aXQtdGlt
ZS1kZXN0cnVjdG9ycyIKLSAgICAgICAgICAgIHN0YXRpYyBGYXN0Q29weUZ1bmN0aW9uTWFwIGVt
cHR5TWFwOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAgICAgICAgICAgcmV0dXJu
IGVtcHR5TWFwOwotICAgICAgICB9Ci0gICAgfQotfQotCi19ICAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCi0KLUZvcm1hdDo6Rm9ybWF0KElEIGlkLAotICAgICAgICAgICAgICAgR0xlbnVtIGdsRm9y
bWF0LAotICAgICAgICAgICAgICAgR0xlbnVtIGZib0Zvcm1hdCwKLSAgICAgICAgICAgICAgIE1p
cEdlbmVyYXRpb25GdW5jdGlvbiBtaXBHZW4sCi0gICAgICAgICAgICAgICBDb2xvclJlYWRGdW5j
dGlvbiBjb2xvclJlYWQsCi0gICAgICAgICAgICAgICBHTGVudW0gY29tcG9uZW50VHlwZSwKLSAg
ICAgICAgICAgICAgIEdMdWludCByZWRCaXRzLAotICAgICAgICAgICAgICAgR0x1aW50IGdyZWVu
Qml0cywKLSAgICAgICAgICAgICAgIEdMdWludCBibHVlQml0cywKLSAgICAgICAgICAgICAgIEdM
dWludCBhbHBoYUJpdHMsCi0gICAgICAgICAgICAgICBHTHVpbnQgZGVwdGhCaXRzLAotICAgICAg
ICAgICAgICAgR0x1aW50IHN0ZW5jaWxCaXRzKQotICAgIDogaWQoaWQpLAotICAgICAgZ2xJbnRl
cm5hbEZvcm1hdChnbEZvcm1hdCksCi0gICAgICBmYm9JbXBsZW1lbnRhdGlvbkludGVybmFsRm9y
bWF0KGZib0Zvcm1hdCksCi0gICAgICBtaXBHZW5lcmF0aW9uRnVuY3Rpb24obWlwR2VuKSwKLSAg
ICAgIGNvbG9yUmVhZEZ1bmN0aW9uKGNvbG9yUmVhZCksCi0gICAgICBmYXN0Q29weUZ1bmN0aW9u
cyhHZXRGYXN0Q29weUZ1bmN0aW9uc01hcChpZCkpLAotICAgICAgY29tcG9uZW50VHlwZShjb21w
b25lbnRUeXBlKSwKLSAgICAgIHJlZEJpdHMocmVkQml0cyksCi0gICAgICBncmVlbkJpdHMoZ3Jl
ZW5CaXRzKSwKLSAgICAgIGJsdWVCaXRzKGJsdWVCaXRzKSwKLSAgICAgIGFscGhhQml0cyhhbHBo
YUJpdHMpLAotICAgICAgZGVwdGhCaXRzKGRlcHRoQml0cyksCi0gICAgICBzdGVuY2lsQml0cyhz
dGVuY2lsQml0cykKLXsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0LmgKaW5k
ZXggODg3YWY2MGUyYjcxYWExZGFiMTk0ODlmMjAxNDc4MmQwODBjNzQzNi4uNWM2ZTdlMWZlNGRi
OWNiN2MyNWQ3NWJmZDMwODdkMzEwZWQ5YTUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Gb3JtYXQuaApAQCAtMjIsMTggKzIy
LDE5IEBAIHN0cnVjdCBGb3JtYXQgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAgICBl
bnVtIGNsYXNzIElEOwogCi0gICAgRm9ybWF0KElEIGlkLAotICAgICAgICAgICBHTGVudW0gZ2xG
b3JtYXQsCi0gICAgICAgICAgIEdMZW51bSBmYm9Gb3JtYXQsCi0gICAgICAgICAgIHJ4OjpNaXBH
ZW5lcmF0aW9uRnVuY3Rpb24gbWlwR2VuLAotICAgICAgICAgICByeDo6Q29sb3JSZWFkRnVuY3Rp
b24gY29sb3JSZWFkLAotICAgICAgICAgICBHTGVudW0gY29tcG9uZW50VHlwZSwKLSAgICAgICAg
ICAgR0x1aW50IHJlZEJpdHMsCi0gICAgICAgICAgIEdMdWludCBncmVlbkJpdHMsCi0gICAgICAg
ICAgIEdMdWludCBibHVlQml0cywKLSAgICAgICAgICAgR0x1aW50IGFscGhhQml0cywKLSAgICAg
ICAgICAgR0x1aW50IGRlcHRoQml0cywKLSAgICAgICAgICAgR0x1aW50IHN0ZW5jaWxCaXRzKTsK
KyAgICBjb25zdGV4cHIgRm9ybWF0KElEIGlkLAorICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGdsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZib0Zvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgIHJ4OjpNaXBHZW5lcmF0aW9uRnVuY3Rpb24gbWlwR2VuLAorICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgcng6OkZhc3RDb3B5RnVuY3Rpb25NYXAgJmZhc3RDb3B5RnVu
Y3Rpb25zLAorICAgICAgICAgICAgICAgICAgICAgcng6OkNvbG9yUmVhZEZ1bmN0aW9uIGNvbG9y
UmVhZCwKKyAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb21wb25lbnRUeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHJlZEJpdHMsCisgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgZ3JlZW5CaXRzLAorICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJsdWVCaXRzLAorICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGFscGhhQml0cywKKyAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBkZXB0aEJpdHMsCisgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RlbmNpbEJp
dHMpOwogCiAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCAmR2V0KElEIGlkKTsKIApAQCAtNTIsNyAr
NTMsNyBAQCBzdHJ1Y3QgRm9ybWF0IGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgcng6
OkNvbG9yUmVhZEZ1bmN0aW9uIGNvbG9yUmVhZEZ1bmN0aW9uOwogCiAgICAgLy8gQSBtYXAgZnJv
bSBhIGdsOjpGb3JtYXRUeXBlIHRvIGEgZmFzdCBwaXhlbCBjb3B5IGZ1bmN0aW9uIGZvciB0aGlz
IGZvcm1hdC4KLSAgICByeDo6RmFzdENvcHlGdW5jdGlvbk1hcCBmYXN0Q29weUZ1bmN0aW9uczsK
KyAgICBjb25zdCByeDo6RmFzdENvcHlGdW5jdGlvbk1hcCAmZmFzdENvcHlGdW5jdGlvbnM7CiAK
ICAgICBHTGVudW0gY29tcG9uZW50VHlwZTsKIApAQCAtNjQsNiArNjUsMzUgQEAgc3RydWN0IEZv
cm1hdCBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIEdMdWludCBzdGVuY2lsQml0czsK
IH07CiAKK2NvbnN0ZXhwciBGb3JtYXQ6OkZvcm1hdChJRCBpZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZ2xGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGZib0Zvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICByeDo6TWlwR2VuZXJhdGlvbkZ1
bmN0aW9uIG1pcEdlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByeDo6RmFzdENv
cHlGdW5jdGlvbk1hcCAmZmFzdENvcHlGdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgcng6OkNvbG9yUmVhZEZ1bmN0aW9uIGNvbG9yUmVhZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gY29tcG9uZW50VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgcmVkQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZ3JlZW5CaXRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBibHVlQml0cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgYWxwaGFCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBkZXB0aEJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0ZW5jaWxC
aXRzKQorICAgIDogaWQoaWQpLAorICAgICAgZ2xJbnRlcm5hbEZvcm1hdChnbEZvcm1hdCksCisg
ICAgICBmYm9JbXBsZW1lbnRhdGlvbkludGVybmFsRm9ybWF0KGZib0Zvcm1hdCksCisgICAgICBt
aXBHZW5lcmF0aW9uRnVuY3Rpb24obWlwR2VuKSwKKyAgICAgIGNvbG9yUmVhZEZ1bmN0aW9uKGNv
bG9yUmVhZCksCisgICAgICBmYXN0Q29weUZ1bmN0aW9ucyhmYXN0Q29weUZ1bmN0aW9ucyksCisg
ICAgICBjb21wb25lbnRUeXBlKGNvbXBvbmVudFR5cGUpLAorICAgICAgcmVkQml0cyhyZWRCaXRz
KSwKKyAgICAgIGdyZWVuQml0cyhncmVlbkJpdHMpLAorICAgICAgYmx1ZUJpdHMoYmx1ZUJpdHMp
LAorICAgICAgYWxwaGFCaXRzKGFscGhhQml0cyksCisgICAgICBkZXB0aEJpdHMoZGVwdGhCaXRz
KSwKKyAgICAgIHN0ZW5jaWxCaXRzKHN0ZW5jaWxCaXRzKQoreworfQorCiB9ICAvLyBuYW1lc3Bh
Y2UgYW5nbGUKIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdF9JRF9hdXRvZ2Vu
LmlubCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9Gb3JtYXRfSURfYXV0b2dlbi5pbmwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0X0lEX2F1dG9nZW4uaW5sCmluZGV4IGRlZWUxZmVh
MTAwNDVlNzc2ZjFiMDE3OTQ1ZDgzZWVkYzAyNmFmYTcuLjVjMDFiNTAwZjVjNzZmOTdlM2EzMTlj
MjNmZjZmNTQ0NjY3MWJhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9Gb3JtYXRfSURfYXV0b2dlbi5pbmwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdF9JRF9hdXRvZ2VuLmlu
bApAQCAtNTAsOSArNTAsMTMgQEAgZW51bSBjbGFzcyBGb3JtYXQ6OklECiAgICAgQjhHOFI4QThf
VU5PUk0sCiAgICAgQjhHOFI4WDhfVU5PUk0sCiAgICAgQkMxX1JHQkFfVU5PUk1fQkxPQ0ssCisg
ICAgQkMxX1JHQkFfVU5PUk1fU1JHQl9CTE9DSywKICAgICBCQzFfUkdCX1VOT1JNX0JMT0NLLAor
ICAgIEJDMV9SR0JfVU5PUk1fU1JHQl9CTE9DSywKICAgICBCQzJfUkdCQV9VTk9STV9CTE9DSywK
KyAgICBCQzJfUkdCQV9VTk9STV9TUkdCX0JMT0NLLAogICAgIEJDM19SR0JBX1VOT1JNX0JMT0NL
LAorICAgIEJDM19SR0JBX1VOT1JNX1NSR0JfQkxPQ0ssCiAgICAgRDE2X1VOT1JNLAogICAgIEQy
NF9VTk9STSwKICAgICBEMjRfVU5PUk1fUzhfVUlOVCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Gb3JtYXRfYXV0b2dlbi5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0X2F1dG9n
ZW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Y2I1MTk4YThjZjgwNmQ3YjFl
MTU3NTc4ZmRjODczZmFkNTEwMjBjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9Gb3JtYXRfYXV0b2dlbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzcyICswLDAgQEAKLS8v
IEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQuCi0vLyBHZW5lcmF0ZWQgYnkgZ2VuX2FuZ2xl
X2Zvcm1hdF90YWJsZS5weSB1c2luZyBkYXRhIGZyb20gYW5nbGVfZm9ybWF0X2RhdGEuanNvbgot
Ly8KLS8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgotLy8KLS8vIEFOR0xFIEZvcm1hdCB0YWJsZToKLS8vICAgUXVlcmllcyBmb3IgdHlwZWQg
Zm9ybWF0IGluZm9ybWF0aW9uIGZyb20gdGhlIEFOR0xFIGZvcm1hdCBlbnVtLgotCi0jaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0LmgiCi0KLSNpbmNsdWRlICJpbWFnZV91dGlsL2Nv
cHlpbWFnZS5oIgotI2luY2x1ZGUgImltYWdlX3V0aWwvZ2VuZXJhdGVtaXAuaCIKLSNpbmNsdWRl
ICJpbWFnZV91dGlsL2xvYWRpbWFnZS5oIgotCi1uYW1lc3BhY2UgYW5nbGUKLXsKLQotLy8gc3Rh
dGljCi1jb25zdCBGb3JtYXQgJkZvcm1hdDo6R2V0KElEIGlkKQotewotICAgIC8vIGNsYW5nLWZv
cm1hdCBvZmYKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCi0gICAgc3dpdGNoIChp
ZCkKLSAgICB7Ci0gICAgICAgIGNhc2UgSUQ6OkExNl9GTE9BVDoKLSAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBMTZfRkxPQVQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQUxQSEExNkZfRVhULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0FMUEhBMTZGX0VYVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxBMTZGPiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8QTE2RiwgR0xmbG9hdD4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMTYsIDAsIDApOwotICAgICAgICAgICAgcmV0
dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6QTMyX0ZMT0FUOgotICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkEzMl9GTE9BVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9BTFBIQTMyRl9FWFQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQUxQSEEzMkZfRVhULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEEzMkY+LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxBMzJGLCBHTGZsb2F0
PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAzMiwgMCwgMCk7Ci0gICAg
ICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpBOF9VTk9S
TToKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpB
OF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9BTFBIQThf
RVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0FMUEhBOF9FWFQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8QTg+LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxBOCwgR0xmbG9h
dD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCA4
LCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgSUQ6OkFTVENfMTB4MTBfU1JHQl9CTE9DSzoKLSAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzEweDEwX1NSR0JfQkxPQ0ssCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ18xMHgxMF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIElEOjpBU1RDXzEweDEwX1VOT1JNX0JMT0NLOgotICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfMTB4MTBfVU5P
Uk1fQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJF
U1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OkFTVENfMTB4NV9TUkdCX0JMT0NLOgotICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfMTB4NV9TUkdC
X0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVy
biBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OkFTVENfMTB4NV9VTk9STV9CTE9D
SzoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpB
U1RDXzEweDVfVU5PUk1fQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4g
aW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpBU1RDXzEweDZfU1JHQl9CTE9DSzoK
LSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RD
XzEweDZfU1JHQl9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4
Nl9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgICAg
ICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpBU1RDXzEweDZf
VU5PUk1fQkxPQ0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyhJRDo6QVNUQ18xMHg2X1VOT1JNX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDZf
S0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAg
ICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6QVNUQ18xMHg4X1NS
R0JfQkxPQ0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhJRDo6QVNUQ18xMHg4X1NSR0JfQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzEweDhfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVE
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAp
OwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6
QVNUQ18xMHg4X1VOT1JNX0JMT0NLOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfMTB4OF9VTk9STV9CTE9DSywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFf
QVNUQ18xMHg4X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsK
LSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OkFT
VENfMTJ4MTBfU1JHQl9CTE9DSzoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBpbmZvKElEOjpBU1RDXzEyeDEwX1NSR0JfQkxPQ0ssCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngx
MF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lH
TkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg
MCwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIElEOjpBU1RDXzEyeDEwX1VOT1JNX0JMT0NLOgotICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfMTJ4MTBfVU5PUk1fQkxPQ0ss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JB
X0FTVENfMTJ4MTBfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5T
SUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgSUQ6OkFTVENfMTJ4MTJfU1JHQl9CTE9DSzoKLSAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzEyeDEyX1NSR0JfQkxPQ0ss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ18xMngxMl9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5m
bzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpBU1RDXzEyeDEyX1VOT1JNX0JMT0NLOgot
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENf
MTJ4MTJfVU5PUk1fQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBp
bmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OkFTVENfNHg0X1NSR0JfQkxPQ0s6Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ180
eDRfU1JHQl9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9D
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hS
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAg
cmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6QVNUQ180eDRfVU5PUk1f
QkxPQ0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJ
RDo6QVNUQ180eDRfVU5PUk1fQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJu
IGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6QVNUQ181eDRfU1JHQl9CTE9DSzoK
LSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RD
XzV4NF9TUkdCX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0X0tIUiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9L
SFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAg
ICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpBU1RDXzV4NF9VTk9S
TV9CTE9DSzoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZv
KElEOjpBU1RDXzV4NF9VTk9STV9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9LSFIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1
cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpBU1RDXzV4NV9TUkdCX0JMT0NL
OgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFT
VENfNXg1X1NSR0JfQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1
X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAg
ICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OkFTVENfNXg1X1VO
T1JNX0JMT0NLOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGlu
Zm8oSUQ6OkFTVENfNXg1X1VOT1JNX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJl
dHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OkFTVENfNng1X1NSR0JfQkxP
Q0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6
QVNUQ182eDVfU1JHQl9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182
eDVfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOwotICAgICAg
ICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6QVNUQ182eDVf
VU5PUk1fQkxPQ0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyhJRDo6QVNUQ182eDVfVU5PUk1fQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hS
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAg
cmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6QVNUQ182eDZfU1JHQl9C
TE9DSzoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElE
OjpBU1RDXzZ4Nl9TUkdCX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzZ4Nl9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7Ci0gICAg
ICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpBU1RDXzZ4
Nl9VTk9STV9CTE9DSzoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1h
dCBpbmZvKElEOjpBU1RDXzZ4Nl9VTk9STV9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4Nl9L
SFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAg
ICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpBU1RDXzh4NV9TUkdC
X0JMT0NLOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8o
SUQ6OkFTVENfOHg1X1NSR0JfQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfOHg1X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKLSAg
ICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OkFTVENf
OHg1X1VOT1JNX0JMT0NLOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oSUQ6OkFTVENfOHg1X1VOT1JNX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1
X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAg
ICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OkFTVENfOHg2X1NS
R0JfQkxPQ0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhJRDo6QVNUQ184eDZfU1JHQl9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ184eDZfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOwot
ICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6QVNU
Q184eDZfVU5PUk1fQkxPQ0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBG
b3JtYXQgaW5mbyhJRDo6QVNUQ184eDZfVU5PUk1fQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184
eDZfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOwotICAgICAg
ICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6QVNUQ184eDhf
U1JHQl9CTE9DSzoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBp
bmZvKElEOjpBU1RDXzh4OF9TUkdCX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzh4OF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7
Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpB
U1RDXzh4OF9VTk9STV9CTE9DSzoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBpbmZvKElEOjpBU1RDXzh4OF9VTk9STV9CTE9DSywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RD
Xzh4OF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7Ci0gICAg
ICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpCNEc0UjRB
NF9VTk9STToKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZv
KElEOjpCNEc0UjRBNF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9CR1JBNF9BTkdMRVgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkdCQTQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVN
aXA8QTRSNEc0QjQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRD
b2xvcjxBNFI0RzRCNCwgR0xmbG9hdD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA0LCA0LCA0LCA0LCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OkI1RzVSNUExX1VOT1JNOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkI1RzVSNUExX1VOT1JNLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0JHUjVfQTFfQU5HTEVYLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjVfQTEsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8QTFSNUc1QjU+LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxBMVI1RzVCNSwgR0xm
bG9hdD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURf
Tk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LCA1LCA1
LCAxLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgSUQ6OkI1RzZSNV9VTk9STToKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IEZvcm1hdCBpbmZvKElEOjpCNUc2UjVfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfQkdSNTY1X0FOR0xFWCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0I1NjUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR2VuZXJhdGVNaXA8QjVHNlI1PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZWFkQ29sb3I8QjVHNlI1LCBHTGZsb2F0PiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDUsIDYsIDUsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0
dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6QjhHOFI4QThfVU5PUk06Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QjhHOFI4
QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQkdSQThf
RVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0JHUkE4X0VYVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxCOEc4UjhB
OD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPEI4RzhS
OEE4LCBHTGZsb2F0PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDgsIDgsIDgsIDgsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBJRDo6QjhHOFI4WDhfVU5PUk06Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QjhHOFI4WDhfVU5PUk0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQkdSQThfRVhULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX0JHUkE4X0VYVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxCOEc4UjhYOD4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPEI4RzhSOFg4LCBHTGZsb2F0PiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDgsIDAsIDAsIDApOwot
ICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6QkMx
X1JHQkFfVU5PUk1fQkxPQ0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBG
b3JtYXQgaW5mbyhJRDo6QkMxX1JHQkFfVU5PUk1fQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUMV9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7Ci0gICAg
ICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpCQzFfUkdC
X1VOT1JNX0JMT0NLOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0
IGluZm8oSUQ6OkJDMV9SR0JfVU5PUk1fQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhU
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAg
cmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6QkMyX1JHQkFfVU5PUk1f
QkxPQ0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJ
RDo6QkMyX1JHQkFfVU5PUk1fQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xF
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAg
cmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6QkMzX1JHQkFfVU5PUk1f
QkxPQ0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJ
RDo6QkMzX1JHQkFfVU5PUk1fQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xF
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAg
cmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6RDE2X1VOT1JNOgotICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkQxNl9VTk9S
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ERVBUSF9DT01QT05F
TlQxNiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ERVBUSF9DT01Q
T05FTlQxNiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAxNiwgMCk7Ci0gICAg
ICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpEMjRfVU5P
Uk06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6
RDI0X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RFUFRI
X0NPTVBPTkVOVDI0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RF
UFRIX0NPTVBPTkVOVDI0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVE
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDI0LCAw
KTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6
OkQyNF9VTk9STV9TOF9VSU5UOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oSUQ6OkQyNF9VTk9STV9TOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX0RFUFRIMjRfU1RFTkNJTDgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfREVQVEgyNF9TVEVOQ0lMOCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLCAwLCAwLCAwLCAyNCwgOCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIElEOjpEMzJfRkxPQVQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6RDMyX0ZMT0FULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX0RFUFRIX0NPTVBPTkVOVDMyRiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ERVBUSF9DT01QT05FTlQzMkYsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIDAsIDAsIDAsIDMyLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgSUQ6OkQzMl9GTE9BVF9TOFgyNF9VSU5UOgotICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkQzMl9GTE9BVF9TOFgyNF9VSU5U
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RFUFRIMzJGX1NURU5D
SUw4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RFUFRIMzJGX1NU
RU5DSUw4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAzMiwgOCk7Ci0gICAgICAgICAgICByZXR1cm4g
aW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpEMzJfVU5PUk06Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6RDMyX1VOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09F
UywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ERVBUSF9DT01QT05F
TlQzMl9PRVMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMzIsIDApOwotICAg
ICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6RUFDX1Ix
MUcxMV9TTk9STV9CTE9DSzoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKElEOjpFQUNfUjExRzExX1NOT1JNX0JMT0NLLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFf
RUFDLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAxMSwgMTEsIDAsIDAsIDAsIDApOwotICAgICAgICAg
ICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6RUFDX1IxMUcxMV9V
Tk9STV9CTE9DSzoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBp
bmZvKElEOjpFQUNfUjExRzExX1VOT1JNX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkcxMV9FQUMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SRzExX0VBQywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAxMSwgMTEsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6RUFDX1IxMV9TTk9STV9CTE9DSzoKLSAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpFQUNfUjExX1NOT1JN
X0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNT
RURfU0lHTkVEX1IxMV9FQUMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU0lHTkVE
X05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEsIDAs
IDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBJRDo6RUFDX1IxMV9VTk9STV9CTE9DSzoKLSAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpFQUNfUjExX1VOT1JNX0JMT0NLLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUjExX0VBQywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1IxMV9FQUMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTEsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAg
cmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6RVRDMl9SOEc4QjhBMV9T
UkdCX0JMT0NLOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGlu
Zm8oSUQ6OkVUQzJfUjhHOEI4QTFfU1JHQl9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRD
MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NS
R0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCA4
LCA4LCAxLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgSUQ6OkVUQzJfUjhHOEI4QTFfVU5PUk1fQkxPQ0s6Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6RVRDMl9SOEc4QjhBMV9VTk9STV9C
TE9DSywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VE
X1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOCwgOCwgOCwgMSwgMCwgMCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpFVEMyX1I4RzhCOEE4X1NS
R0JfQkxPQ0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhJRDo6RVRDMl9SOEc4QjhBOF9TUkdCX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0VUQzJfRUFDLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDgsIDgsIDAsIDApOwotICAg
ICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6RVRDMl9S
OEc4QjhBOF9VTk9STV9CTE9DSzoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBpbmZvKElEOjpFVEMyX1I4RzhCOEE4X1VOT1JNX0JMT0NLLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBOF9F
VEMyX0VBQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCA4LCA4LCA4LCAwLCAwKTsKLSAgICAg
ICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OkVUQzJfUjhH
OEI4X1NSR0JfQkxPQ0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3Jt
YXQgaW5mbyhJRDo6RVRDMl9SOEc4QjhfU1JHQl9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDgsIDgsIDgsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGlu
Zm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6RVRDMl9SOEc4QjhfVU5PUk1fQkxPQ0s6
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6RVRD
Ml9SOEc4QjhfVU5PUk1fQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VO
U0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OCwgOCwgOCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIElEOjpMMTZBMTZfRkxPQVQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6TDE2QTE2X0ZMT0FULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxMMTZBMTZG
PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8TDE2QTE2
RiwgR0xmbG9hdD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkxP
QVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMTYsIDAs
IDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJ
RDo6TDE2X0ZMT0FUOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0
IGluZm8oSUQ6OkwxNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9MVU1JTkFOQ0UxNkZfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0xVTUlOQU5DRTE2Rl9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR2VuZXJhdGVNaXA8TDE2Rj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVhZENvbG9yPEwxNkYsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBJRDo6TDMyQTMyX0ZMT0FUOgotICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkwzMkEzMl9GTE9BVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9F
WFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8TDMy
QTMyRj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPEwz
MkEzMkYsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDMy
LCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgSUQ6OkwzMl9GTE9BVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKElEOjpMMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfTFVNSU5BTkNFMzJGX0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9MVU1JTkFOQ0UzMkZfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdlbmVyYXRlTWlwPEwzMkY+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlYWRDb2xvcjxMMzJGLCBHTGZsb2F0PiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6Okw4QThfVU5PUk06Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6TDhBOF9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTFVNSU5BTkNFOF9BTFBIQThfRVhU
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEw4QTg+
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxMOEE4LCBH
TGZsb2F0PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAs
IDAsIDgsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBJRDo6TDhfVU5PUk06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBGb3JtYXQgaW5mbyhJRDo6TDhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfTFVNSU5BTkNFOF9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfTFVNSU5BTkNFOF9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2VuZXJhdGVNaXA8TDg+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlYWRDb2xvcjxMOCwgR0xmbG9hdD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBp
bmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6Ok5PTkU6Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6Tk9ORSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgICAg
ICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSMTBHMTBCMTBB
Ml9VSU5UOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8o
SUQ6OlIxMEcxMEIxMEEyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCMTBfQTJVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SR0IxMF9BMlVJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVy
YXRlTWlwPFIxMEcxMEIxMEEyPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSZWFkQ29sb3I8UjEwRzEwQjEwQTIsIEdMdWludD4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDEwLCAxMCwgMTAsIDIsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGlu
Zm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjEwRzEwQjEwQTJfVU5PUk06Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjEwRzEwQjEw
QTJfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCMTBf
QTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCMTBfQTIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjEwRzEwQjEw
QTI+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTBH
MTBCMTBBMiwgR0xmbG9hdD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxMCwgMTAsIDEwLCAyLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlIxMUcxMUIxMF9GTE9BVDoKLSAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMTFHMTFCMTBfRkxPQVQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjExRl9HMTFGX0IxMEYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjExRl9HMTFGX0IxMEYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjExRzExQjEw
Rj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxMUcx
MUIxMEYsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLCAxMSwgMTAs
IDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBJRDo6UjE2RzE2QjE2QTE2X0ZMT0FUOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZGLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2QjE2QTE2Rj4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNkcxNkIxNkExNkYsIEdMZmxvYXQ+LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LCAxNiwgMTYsIDE2LCAwLCAwKTsKLSAgICAg
ICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlIxNkcxNkIx
NkExNl9TSU5UOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGlu
Zm8oSUQ6OlIxNkcxNkIxNkExNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1JHQkExNkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkdCQTE2SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0
ZU1pcDxSMTZHMTZCMTZBMTZTPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSZWFkQ29sb3I8UjE2RzE2QjE2QTE2UywgR0xpbnQ+LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxNiwgMTYsIDE2LCAxNiwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIElEOjpSMTZHMTZCMTZBMTZfU05PUk06Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjE2RzE2QjE2QTE2X1NO
T1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNl9TTk9S
TV9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2X1NO
T1JNX0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1p
cDxSMTZHMTZCMTZBMTZTPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
ZWFkQ29sb3I8UjE2RzE2QjE2QTE2UywgR0xmbG9hdD4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTYsIDE2LCAxNiwgMTYsIDAsIDApOwotICAgICAgICAgICAgcmV0
dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjE2RzE2QjE2QTE2X1VJTlQ6
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjE2
RzE2QjE2QTE2X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQTE2VUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2
VUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2
RzE2QjE2QTE2PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29s
b3I8UjE2RzE2QjE2QTE2LCBHTHVpbnQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1VOU0lHTkVEX0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxNiwgMTYsIDE2LCAxNiwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIElEOjpSMTZHMTZCMTZBMTZfVU5PUk06Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjE2RzE2QjE2QTE2X1VO
T1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNl9FWFQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2X0VYVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTZCMTZB
MTY+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZH
MTZCMTZBMTYsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMTYsIDE2LCAxNiwgMTYsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjE2RzE2QjE2X0ZMT0FUOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcxNkIxNl9GTE9BVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0IxNkYsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCMTZGLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNkIxNkY+LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZHMTZCMTZGLCBHTGZsb2F0
PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiwgMTYsIDE2LCAwLCAwLCAwKTsKLSAg
ICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlIxNkcx
NkIxNl9TSU5UOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGlu
Zm8oSUQ6OlIxNkcxNkIxNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQjE2SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0IxNkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8
UjE2RzE2QjE2Uz4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENv
bG9yPFIxNkcxNkIxNlMsIEdMaW50PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9JTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDE2
LCAxNiwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIElEOjpSMTZHMTZCMTZfU05PUk06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjE2RzE2QjE2X1NOT1JNLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjE2X1NOT1JNX0VYVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0IxNl9TTk9STV9FWFQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2QjE2Uz4sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNkcxNkIxNlMsIEdM
ZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NJR05FRF9O
T1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LCAxNiwg
MTYsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBJRDo6UjE2RzE2QjE2X1VJTlQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjE2RzE2QjE2X1VJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCMTZVSSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0IxNlVJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNkIxNj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmVhZENvbG9yPFIxNkcxNkIxNiwgR0x1aW50PiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTYsIDE2LCAxNiwgMCwgMCwgMCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSMTZHMTZCMTZfVU5PUk06
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjE2
RzE2QjE2X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JH
QjE2X0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0IxNl9F
WFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2
RzE2QjE2PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8
UjE2RzE2QjE2LCBHTGZsb2F0PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDE2LCAxNiwgMTYsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjE2RzE2X0ZMT0FUOgotICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcxNl9GTE9BVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzE2RiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzE2RiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTZGPiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2RzE2RiwgR0xmbG9hdD4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTYsIDE2LCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVy
biBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlIxNkcxNl9TSU5UOgotICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcxNl9TSU5U
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHMTZJLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHMTZJLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNlM+LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZHMTZTLCBHTGludD4sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDE2LCAxNiwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSMTZHMTZfU05PUk06Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjE2RzE2
X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHMTZfU05P
Uk1fRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHMTZfU05P
Uk1fRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlw
PFIxNkcxNlM+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xv
cjxSMTZHMTZTLCBHTGZsb2F0PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAxNiwgMTYsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjE2RzE2X1VJTlQ6Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjE2RzE2X1VJTlQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkcxNlVJLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHMTZVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTY+LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZHMTYsIEdMdWludD4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDE2LCAxNiwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1
cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSMTZHMTZfVU5PUk06Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjE2RzE2X1VO
T1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHMTZfRVhULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHMTZfRVhULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNj4sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNkcxNiwgR0xmbG9h
dD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiwgMTYsIDAs
IDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBJRDo6UjE2X0ZMT0FUOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oSUQ6OlIxNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9SMTZGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1IxNkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8
UjE2Rj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIx
NkYsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZM
T0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LCAwLCAwLCAwLCAw
LCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
SUQ6OlIxNl9TSU5UOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0
IGluZm8oSUQ6OlIxNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1IxNkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjE2SSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZTPiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2UywgR0xp
bnQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiwgMCwgMCwgMCwgMCwgMCk7Ci0gICAg
ICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSMTZfU05P
Uk06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6
UjE2X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IxNl9T
Tk9STV9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjE2X1NO
T1JNX0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1p
cDxSMTZTPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8
UjE2UywgR0xmbG9hdD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
U0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MTYsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBJRDo6UjE2X1VJTlQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjE2X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUjE2VUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfUjE2VUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2Vu
ZXJhdGVNaXA8UjE2PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFk
Q29sb3I8UjE2LCBHTHVpbnQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
NiwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIElEOjpSMTZfVU5PUk06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjE2X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1IxNl9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfUjE2X0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHZW5lcmF0ZU1pcDxSMTY+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlYWRDb2xvcjxSMTYsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTYsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjMyRzMyQjMyQTMyX0ZMT0FUOgotICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIzMkczMkIzMkEz
Ml9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJG
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMkYsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyRzMyQjMyQTMy
Rj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIzMkcz
MkIzMkEzMkYsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyLCAzMiwg
MzIsIDMyLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgSUQ6OlIzMkczMkIzMkEzMl9TSU5UOgotICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIzMkczMkIzMkEzMl9TSU5ULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMkksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMySSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMzJHMzJCMzJBMzJTPiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjMyRzMyQjMyQTMyUywgR0xpbnQ+LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzMiwgMzIsIDMyLCAzMiwgMCwgMCk7Ci0gICAgICAg
ICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSMzJHMzJCMzJB
MzJfVUlOVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZv
KElEOjpSMzJHMzJCMzJBMzJfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9SR0JBMzJVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SR0JBMzJVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0
ZU1pcDxSMzJHMzJCMzJBMzI+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlYWRDb2xvcjxSMzJHMzJCMzJBMzIsIEdMdWludD4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMyLCAzMiwgMzIsIDMyLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBp
bmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlIzMkczMkIzMl9GTE9BVDoKLSAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMzJHMzJCMzJf
RkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCMzJGLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjMyRiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMzJHMzJCMzJGPiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjMyRzMyQjMyRiwg
R0xmbG9hdD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIsIDMyLCAzMiwgMCwgMCwg
MCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElE
OjpSMzJHMzJCMzJfU0lOVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKElEOjpSMzJHMzJCMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9SR0IzMkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCMzJJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVy
YXRlTWlwPFIzMkczMkIzMlM+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlYWRDb2xvcjxSMzJHMzJCMzJTLCBHTGludD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMyLCAzMiwgMzIsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBJRDo6UjMyRzMyQjMyX1VJTlQ6Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjMyRzMyQjMyX1VJTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCMzJVSSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0IzMlVJLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMkczMkIzMj4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIzMkczMkIzMiwgR0x1aW50PiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIsIDMyLCAzMiwgMCwgMCwgMCk7Ci0gICAg
ICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSMzJHMzJf
RkxPQVQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJ
RDo6UjMyRzMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1JHMzJGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHMzJGLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMkczMkY+
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMzJHMzJG
LCBHTGZsb2F0PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9B
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMiwgMzIsIDAsIDAsIDAs
IDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJ
RDo6UjMyRzMyX1NJTlQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3Jt
YXQgaW5mbyhJRDo6UjMyRzMyX1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfUkczMkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkczMkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8
UjMyRzMyUz4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9y
PFIzMkczMlMsIEdMaW50PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9JTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIsIDMyLCAwLCAw
LCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgSUQ6OlIzMkczMl9VSU5UOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oSUQ6OlIzMkczMl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHMzJVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SRzMyVUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJh
dGVNaXA8UjMyRzMyPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFk
Q29sb3I8UjMyRzMyLCBHTHVpbnQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzMiwgMzIsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBJRDo6UjMyX0ZMT0FUOgotICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SMzJGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1IzMkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R2VuZXJhdGVNaXA8UjMyRj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVhZENvbG9yPFIzMkYsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMy
LCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgSUQ6OlIzMl9TSU5UOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oSUQ6OlIzMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1IzMkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUjMySSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0
ZU1pcDxSMzJTPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29s
b3I8UjMyUywgR0xpbnQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMiwgMCwgMCwgMCwg
MCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IElEOjpSMzJfVUlOVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1h
dCBpbmZvKElEOjpSMzJfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SMzJVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SMzJV
SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMzI+
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMzIsIEdM
dWludD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURf
SU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMyLCAwLCAwLCAwLCAw
LCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
SUQ6OlI0RzRCNEE0X1VOT1JNOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oSUQ6OlI0RzRCNEE0X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQkE0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQkE0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVy
YXRlTWlwPFI0RzRCNEE0PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
ZWFkQ29sb3I8UjRHNEI0QTQsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNCwgNCwgNCwgNCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5m
bzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSNUc1QjVBMV9VTk9STToKLSAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSNUc1QjVBMV9VTk9S
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0I1X0ExLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjVfQTEsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjVHNUI1QTE+LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSNUc1QjVBMSwgR0xmbG9h
dD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LCA1LCA1LCAx
LCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgSUQ6OlI1RzZCNV9VTk9STToKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBpbmZvKElEOjpSNUc2QjVfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUkdCNTY1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQjU2NSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5l
cmF0ZU1pcDxSNUc2QjU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl
YWRDb2xvcjxSNUc2QjUsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNSwgNiwgNSwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSOEc4QjhBOF9TSU5UOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlI4RzhCOEE4X1NJTlQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThJLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4SSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4QjhBOFM+LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4QjhBOFMsIEdMaW50PiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOCwgOCwgOCwgOCwgMCwgMCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSOEc4QjhBOF9TTk9STToK
LSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSOEc4
QjhBOF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JB
OF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOF9T
Tk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxS
OEc4QjhBOFM+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xv
cjxSOEc4QjhBOFMsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDgsIDgsIDgsIDgsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjhHOEI4QThfVUlOVDoKLSAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSOEc4QjhBOF9VSU5ULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4VUksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThVSSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4QjhBOD4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4RzhCOEE4LCBHTHVpbnQ+LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCA4LCA4LCA4LCAwLCAwKTsKLSAgICAgICAg
ICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlI4RzhCOEE4X1VO
T1JNOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6
OlI4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1JHQkE4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4RzhCOEE4
PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOEI4
QTgsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VO
U0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OCwgOCwgOCwgOCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIElEOjpSOEc4QjhBOF9VTk9STV9TUkdCOgotICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlI4RzhCOEE4X1VOT1JNX1NSR0IsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU1JHQjhfQUxQSEE4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NSR0I4X0FMUEhBOCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4QjhBOD4sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4RzhCOEE4LCBH
TGZsb2F0PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgs
IDgsIDgsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBJRDo6UjhHOEI4X1NJTlQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBGb3JtYXQgaW5mbyhJRDo6UjhHOEI4X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCOEksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfUkdCOEksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2Vu
ZXJhdGVNaXA8UjhHOEI4Uz4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVhZENvbG9yPFI4RzhCOFMsIEdMaW50PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9JTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwg
OCwgOCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIElEOjpSOEc4QjhfU05PUk06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjhHOEI4X1NOT1JNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHQjhfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCOF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4QjhTPiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOEI4UywgR0xmbG9hdD4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwgOCwgOCwgMCwgMCwgMCk7Ci0gICAgICAgICAg
ICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSOEc4QjhfVUlOVDoK
LSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSOEc4
QjhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0I4VUks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCOFVJLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4RzhCOD4sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4RzhCOCwgR0x1aW50
PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwgOCwgOCwgMCwgMCwgMCk7
Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpS
OEc4QjhfVU5PUk06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyhJRDo6UjhHOEI4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQjgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdC
OCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4
Qjg+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4
QjgsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VO
U0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OCwgOCwgOCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIElEOjpSOEc4QjhfVU5PUk1fU1JHQjoKLSAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSOEc4QjhfVU5PUk1fU1JHQiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9TUkdCOCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9TUkdCOCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4Qjg+LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4QjgsIEdMZmxvYXQ+LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwgOCwgOCwgMCwgMCwgMCk7Ci0gICAgICAg
ICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSOEc4X1NJTlQ6
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjhH
OF9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHOEksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkc4SSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4Uz4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4RzhTLCBHTGludD4sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0
dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjhHOF9TTk9STToKLSAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSOEc4X1NOT1JN
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHOF9TTk9STSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzhfU05PUk0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOFM+LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4UywgR0xmbG9hdD4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTEla
RUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwgOCwgMCwgMCwgMCwg
MCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElE
OjpSOEc4X1VJTlQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyhJRDo6UjhHOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1JHOFVJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHOFVJ
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4Rzg+
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4LCBH
THVpbnQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVE
X0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCA4LCAwLCAwLCAw
LCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
SUQ6OlI4RzhfVU5PUk06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3Jt
YXQgaW5mbyhJRDo6UjhHOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9SRzgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkc4
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4Rzg+
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4LCBH
TGZsb2F0PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgs
IDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBJRDo6UjhfU0lOVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBpbmZvKElEOjpSOF9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1I4SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
OEksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhT
PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhTLCBH
TGludD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDAsIDAsIDAsIDAsIDApOwotICAg
ICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjhfU05P
Uk06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6
UjhfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjhfU05P
Uk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjhfU05PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhTPiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhTLCBHTGZsb2F0
PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9TSUdORURfTk9STUFM
SVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCAwLCAwLCAwLCAw
LCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
SUQ6OlI4X1VJTlQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyhJRDo6UjhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SOFVJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1I4VUksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8Ujg+LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOCwgR0x1aW50PiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwgMCwgMCwgMCwgMCwgMCk7Ci0g
ICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSOF9V
Tk9STToKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElE
OjpSOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SOCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SOCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOD4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4LCBHTGZsb2F0PiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDAsIDAsIDAsIDAsIDApOwotICAg
ICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjlHOUI5
RTVfU0hBUkVERVhQOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0
IGluZm8oSUQ6OlI5RzlCOUU1X1NIQVJFREVYUCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9SR0I5X0U1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQjlfRTUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2Vu
ZXJhdGVNaXA8UjlHOUI5RTU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlYWRDb2xvcjxSOUc5QjlFNSwgR0xmbG9hdD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOSwgOSwgOSwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIElEOjpTOF9VSU5UOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlM4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfU1RFTkNJTF9JTkRFWDgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfU1RFTkNJTF9JTkRFWDgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VO
U0lHTkVEX0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAw
LCAwLCAwLCA4KTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICB9Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IG5vbmVJbmZvKElEOjpOT05FLCBHTF9OT05FLCBHTF9OT05FLCBudWxscHRyLCBudWxscHRy
LCBHTF9OT05FLCAwLCAwLCAwLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwgMCk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0gICAgcmV0dXJuIG5vbmVJbmZv
OwotfQotCi19ICAvLyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Gb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0X3Rh
YmxlX2F1dG9nZW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiMzA2NDI0ZTk0YWZkMzA1MTU0Y2IxMzMwZDMx
NzUzMzlmMjIxMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwCkBAIC0wLDAgKzEs
MTYxIEBACisvLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgorLy8gR2VuZXJhdGVkIGJ5
IGdlbl9hbmdsZV9mb3JtYXRfdGFibGUucHkgdXNpbmcgZGF0YSBmcm9tIGFuZ2xlX2Zvcm1hdF9k
YXRhLmpzb24KKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisvLyBBTkdMRSBGb3JtYXQgdGFibGU6CisvLyAgIFF1ZXJpZXMg
Zm9yIHR5cGVkIGZvcm1hdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBBTkdMRSBmb3JtYXQgZW51bS4K
KworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oIgorCisjaW5jbHVkZSAiaW1h
Z2VfdXRpbC9jb3B5aW1hZ2UuaCIKKyNpbmNsdWRlICJpbWFnZV91dGlsL2dlbmVyYXRlbWlwLmgi
CisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaCIKKworbmFtZXNwYWNlIGFuZ2xlCit7
CisKK3N0YXRpYyBjb25zdGV4cHIgcng6OkZhc3RDb3B5RnVuY3Rpb25NYXA6OkVudHJ5IEJHUkFF
bnRyeSA9IHtHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcHlCR1JBOFRvUkdCQTh9
Oworc3RhdGljIGNvbnN0ZXhwciByeDo6RmFzdENvcHlGdW5jdGlvbk1hcCBCR1JBQ29weUZ1bmN0
aW9ucyA9IHsmQkdSQUVudHJ5LCAxfTsKK3N0YXRpYyBjb25zdGV4cHIgcng6OkZhc3RDb3B5RnVu
Y3Rpb25NYXAgTm9Db3B5RnVuY3Rpb25zOworCitjb25zdGV4cHIgRm9ybWF0IGdfZm9ybWF0SW5m
b1RhYmxlW10gPSB7CisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgIHsgRm9ybWF0OjpJRDo6
Tk9ORSwgR0xfTk9ORSwgR0xfTk9ORSwgbnVsbHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRy
LCBHTF9OT05FLCAwLCAwLCAwLCAwLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpBMTZfRkxP
QVQsIEdMX0FMUEhBMTZGX0VYVCwgR0xfQUxQSEExNkZfRVhULCBHZW5lcmF0ZU1pcDxBMTZGPiwg
Tm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8QTE2RiwgR0xmbG9hdD4sIEdMX0ZMT0FULCAwLCAw
LCAwLCAxNiwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QTMyX0ZMT0FULCBHTF9BTFBIQTMy
Rl9FWFQsIEdMX0FMUEhBMzJGX0VYVCwgR2VuZXJhdGVNaXA8QTMyRj4sIE5vQ29weUZ1bmN0aW9u
cywgUmVhZENvbG9yPEEzMkYsIEdMZmxvYXQ+LCBHTF9GTE9BVCwgMCwgMCwgMCwgMzIsIDAsIDAg
fSwKKyAgICB7IEZvcm1hdDo6SUQ6OkE4X1VOT1JNLCBHTF9BTFBIQThfRVhULCBHTF9BTFBIQThf
RVhULCBHZW5lcmF0ZU1pcDxBOD4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPEE4LCBHTGZs
b2F0PiwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgOCwgMCwgMCB9LAorICAgIHsg
Rm9ybWF0OjpJRDo6QVNUQ18xMHgxMF9TUkdCX0JMT0NLLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzEweDEwX0tIUiwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgx
MF9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ18xMHgx
MF9VTk9STV9CTE9DSywgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSLCBHTF9DT01Q
UkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVs
bHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsg
Rm9ybWF0OjpJRDo6QVNUQ18xMHg1X1NSR0JfQkxPQ0ssIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTB4NV9LSFIsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9L
SFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFM
SVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ18xMHg1X1VO
T1JNX0JMT0NLLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tIUiwgR0xfQ09NUFJFU1NF
RF9SR0JBX0FTVENfMTB4NV9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwg
R0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0
OjpJRDo6QVNUQ18xMHg2X1NSR0JfQkxPQ0ssIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfMTB4Nl9LSFIsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFIsIG51
bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwg
MCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ18xMHg2X1VOT1JNX0JM
T0NLLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUiwgR0xfQ09NUFJFU1NFRF9SR0JB
X0FTVENfMTB4Nl9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5T
SUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6
QVNUQ18xMHg4X1NSR0JfQkxPQ0ssIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4
OF9LSFIsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFIsIG51bGxwdHIs
IE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwg
MCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ18xMHg4X1VOT1JNX0JMT0NLLCBH
TF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUiwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENf
MTB4OF9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURf
Tk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ18x
MngxMF9TUkdCX0JMT0NLLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tI
UiwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMF9LSFIsIG51bGxwdHIsIE5v
Q29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwg
MCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ18xMngxMF9VTk9STV9CTE9DSywgR0xf
Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18x
MngxMF9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURf
Tk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ18x
MngxMl9TUkdCX0JMT0NLLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tI
UiwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIsIG51bGxwdHIsIE5v
Q29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwg
MCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ18xMngxMl9VTk9STV9CTE9DSywgR0xf
Q09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18x
MngxMl9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURf
Tk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ180
eDRfU1JHQl9CTE9DSywgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSLCBH
TF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzR4NF9LSFIsIG51bGxwdHIsIE5vQ29weUZ1
bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwg
MCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ180eDRfVU5PUk1fQkxPQ0ssIEdMX0NPTVBSRVNT
RURfUkdCQV9BU1RDXzR4NF9LSFIsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFIsIG51
bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwg
MCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ181eDRfU1JHQl9CTE9D
SywgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSLCBHTF9DT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVs
bHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsg
Rm9ybWF0OjpJRDo6QVNUQ181eDRfVU5PUk1fQkxPQ0ssIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RD
XzV4NF9LSFIsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9LSFIsIG51bGxwdHIsIE5vQ29w
eUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwg
MCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ181eDVfU1JHQl9CTE9DSywgR0xfQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzV4NV9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5T
SUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6
QVNUQ181eDVfVU5PUk1fQkxPQ0ssIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIsIEdM
X0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywg
bnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAg
IHsgRm9ybWF0OjpJRDo6QVNUQ182eDVfU1JHQl9CTE9DSywgR0xfQ09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ182eDVfS0hSLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9L
SFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFM
SVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ182eDVfVU5P
Uk1fQkxPQ0ssIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFIsIEdMX0NPTVBSRVNTRURf
UkdCQV9BU1RDXzZ4NV9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xf
VU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJ
RDo6QVNUQ182eDZfU1JHQl9CTE9DSywgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182
eDZfS0hSLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIsIG51bGxwdHIs
IE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwg
MCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ182eDZfVU5PUk1fQkxPQ0ssIEdM
X0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFIsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4
Nl9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ184eDVf
U1JHQl9CTE9DSywgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDVfS0hSLCBHTF9D
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0
aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9
LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ184eDVfVU5PUk1fQkxPQ0ssIEdMX0NPTVBSRVNTRURf
UkdCQV9BU1RDXzh4NV9LSFIsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIsIG51bGxw
dHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwg
MCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ184eDZfU1JHQl9CTE9DSywg
R0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSLCBHTF9DT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0
ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9y
bWF0OjpJRDo6QVNUQ184eDZfVU5PUk1fQkxPQ0ssIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4
Nl9LSFIsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFIsIG51bGxwdHIsIE5vQ29weUZ1
bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwg
MCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ184eDhfU1JHQl9CTE9DSywgR0xfQ09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzh4OF9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdO
RURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNU
Q184eDhfVU5PUk1fQkxPQ0ssIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFIsIEdMX0NP
TVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVs
bHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsg
Rm9ybWF0OjpJRDo6QjRHNFI0QTRfVU5PUk0sIEdMX0JHUkE0X0FOR0xFWCwgR0xfUkdCQTQsIEdl
bmVyYXRlTWlwPEE0UjRHNEI0PiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8QTRSNEc0QjQs
IEdMZmxvYXQ+LCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCA0LCA0LCA0LCA0LCAwLCAwIH0sCisg
ICAgeyBGb3JtYXQ6OklEOjpCNUc1UjVBMV9VTk9STSwgR0xfQkdSNV9BMV9BTkdMRVgsIEdMX1JH
QjVfQTEsIEdlbmVyYXRlTWlwPEExUjVHNUI1PiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8
QTFSNUc1QjUsIEdMZmxvYXQ+LCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCA1LCA1LCA1LCAxLCAw
LCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpCNUc2UjVfVU5PUk0sIEdMX0JHUjU2NV9BTkdMRVgs
IEdMX1JHQjU2NSwgR2VuZXJhdGVNaXA8QjVHNlI1PiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29s
b3I8QjVHNlI1LCBHTGZsb2F0PiwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgNSwgNiwgNSwgMCwg
MCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QjhHOFI4QThfVU5PUk0sIEdMX0JHUkE4X0VYVCwg
R0xfQkdSQThfRVhULCBHZW5lcmF0ZU1pcDxCOEc4UjhBOD4sIEJHUkFDb3B5RnVuY3Rpb25zLCBS
ZWFkQ29sb3I8QjhHOFI4QTgsIEdMZmxvYXQ+LCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCA4LCA4
LCA4LCA4LCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpCOEc4UjhYOF9VTk9STSwgR0xfQkdS
QThfRVhULCBHTF9CR1JBOF9FWFQsIEdlbmVyYXRlTWlwPEI4RzhSOFg4PiwgTm9Db3B5RnVuY3Rp
b25zLCBSZWFkQ29sb3I8QjhHOFI4WDgsIEdMZmxvYXQ+LCBHTF9VTlNJR05FRF9OT1JNQUxJWkVE
LCA4LCA4LCA4LCAwLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpCQzFfUkdCQV9VTk9STV9C
TE9DSywgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIEdMX0NPTVBSRVNTRURfUkdC
QV9TM1RDX0RYVDFfRVhULCBudWxscHRyLCBOb0NvcHlGdW5jdGlvbnMsIG51bGxwdHIsIEdMX1VO
U0lHTkVEX05PUk1BTElaRUQsIDAsIDAsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6
OkJDMV9SR0JBX1VOT1JNX1NSR0JfQkxPQ0ssIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RD
X0RYVDFfRVhULCBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVCwgbnVsbHB0
ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCAwLCAw
LCAwLCAwLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpCQzFfUkdCX1VOT1JNX0JMT0NLLCBH
TF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULCBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RY
VDFfRVhULCBudWxscHRyLCBOb0NvcHlGdW5jdGlvbnMsIG51bGxwdHIsIEdMX1VOU0lHTkVEX05P
Uk1BTElaRUQsIDAsIDAsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OkJDMV9SR0Jf
VU5PUk1fU1JHQl9CTE9DSywgR0xfQ09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQsIEdMX0NP
TVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhULCBudWxscHRyLCBOb0NvcHlGdW5jdGlvbnMsIG51
bGxwdHIsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDAsIDAsIDAsIDAsIDAsIDAgfSwKKyAgICB7
IEZvcm1hdDo6SUQ6OkJDMl9SR0JBX1VOT1JNX0JMT0NLLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQzX0FOR0xFLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFLCBudWxscHRy
LCBOb0NvcHlGdW5jdGlvbnMsIG51bGxwdHIsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDAsIDAs
IDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OkJDMl9SR0JBX1VOT1JNX1NSR0JfQkxP
Q0ssIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhULCBHTF9DT01QUkVTU0VE
X1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVCwgbnVsbHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxs
cHRyLCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCAwLCAwLCAwLCAwLCAwLCAwIH0sCisgICAgeyBG
b3JtYXQ6OklEOjpCQzNfUkdCQV9VTk9STV9CTE9DSywgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUNV9BTkdMRSwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSwgbnVsbHB0ciwg
Tm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCAwLCAwLCAw
LCAwLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpCQzNfUkdCQV9VTk9STV9TUkdCX0JMT0NL
LCBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVCwgR0xfQ09NUFJFU1NFRF9T
UkdCX0FMUEhBX1MzVENfRFhUNV9FWFQsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0
ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9y
bWF0OjpJRDo6RDE2X1VOT1JNLCBHTF9ERVBUSF9DT01QT05FTlQxNiwgR0xfREVQVEhfQ09NUE9O
RU5UMTYsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwgMCwgMCwgMCwgMCwgMTYsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OkQyNF9VTk9S
TSwgR0xfREVQVEhfQ09NUE9ORU5UMjQsIEdMX0RFUFRIX0NPTVBPTkVOVDI0LCBudWxscHRyLCBO
b0NvcHlGdW5jdGlvbnMsIG51bGxwdHIsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDAsIDAsIDAs
IDAsIDI0LCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpEMjRfVU5PUk1fUzhfVUlOVCwgR0xfREVQ
VEgyNF9TVEVOQ0lMOCwgR0xfREVQVEgyNF9TVEVOQ0lMOCwgbnVsbHB0ciwgTm9Db3B5RnVuY3Rp
b25zLCBudWxscHRyLCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCAwLCAwLCAwLCAwLCAyNCwgOCB9
LAorICAgIHsgRm9ybWF0OjpJRDo6RDMyX0ZMT0FULCBHTF9ERVBUSF9DT01QT05FTlQzMkYsIEdM
X0RFUFRIX0NPTVBPTkVOVDMyRiwgbnVsbHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBH
TF9GTE9BVCwgMCwgMCwgMCwgMCwgMzIsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OkQzMl9GTE9B
VF9TOFgyNF9VSU5ULCBHTF9ERVBUSDMyRl9TVEVOQ0lMOCwgR0xfREVQVEgzMkZfU1RFTkNJTDgs
IG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfRkxPQVQsIDAsIDAsIDAsIDAs
IDMyLCA4IH0sCisgICAgeyBGb3JtYXQ6OklEOjpEMzJfVU5PUk0sIEdMX0RFUFRIX0NPTVBPTkVO
VDMyX09FUywgR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTLCBudWxscHRyLCBOb0NvcHlGdW5jdGlv
bnMsIG51bGxwdHIsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDAsIDAsIDAsIDAsIDMyLCAwIH0s
CisgICAgeyBGb3JtYXQ6OklEOjpFQUNfUjExRzExX1NOT1JNX0JMT0NLLCBHTF9DT01QUkVTU0VE
X1NJR05FRF9SRzExX0VBQywgR0xfQ09NUFJFU1NFRF9TSUdORURfUkcxMV9FQUMsIG51bGxwdHIs
IE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfU0lHTkVEX05PUk1BTElaRUQsIDExLCAxMSwg
MCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6RUFDX1IxMUcxMV9VTk9STV9CTE9DSywg
R0xfQ09NUFJFU1NFRF9SRzExX0VBQywgR0xfQ09NUFJFU1NFRF9SRzExX0VBQywgbnVsbHB0ciwg
Tm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCAxMSwgMTEs
IDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OkVBQ19SMTFfU05PUk1fQkxPQ0ssIEdM
X0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMsIEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMs
IG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfU0lHTkVEX05PUk1BTElaRUQs
IDExLCAwLCAwLCAwLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpFQUNfUjExX1VOT1JNX0JM
T0NLLCBHTF9DT01QUkVTU0VEX1IxMV9FQUMsIEdMX0NPTVBSRVNTRURfUjExX0VBQywgbnVsbHB0
ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCAxMSwg
MCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6RVRDMl9SOEc4QjhBMV9TUkdCX0JM
T0NLLCBHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiwgR0xfQ09N
UFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsIG51bGxwdHIsIE5vQ29weUZ1
bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgOCwgOCwgOCwgMSwgMCwg
MCB9LAorICAgIHsgRm9ybWF0OjpJRDo6RVRDMl9SOEc4QjhBMV9VTk9STV9CTE9DSywgR0xfQ09N
UFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiwgR0xfQ09NUFJFU1NFRF9SR0I4
X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiwgbnVsbHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxs
cHRyLCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCA4LCA4LCA4LCAxLCAwLCAwIH0sCisgICAgeyBG
b3JtYXQ6OklEOjpFVEMyX1I4RzhCOEE4X1NSR0JfQkxPQ0ssIEdMX0NPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0VUQzJfRUFDLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQywgbnVs
bHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCA4
LCA4LCA4LCA4LCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpFVEMyX1I4RzhCOEE4X1VOT1JN
X0JMT0NLLCBHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCBHTF9DT01QUkVTU0VEX1JHQkE4
X0VUQzJfRUFDLCBudWxscHRyLCBOb0NvcHlGdW5jdGlvbnMsIG51bGxwdHIsIEdMX1VOU0lHTkVE
X05PUk1BTElaRUQsIDgsIDgsIDgsIDgsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OkVUQzJf
UjhHOEI4X1NSR0JfQkxPQ0ssIEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMiwgR0xfQ09NUFJFU1NF
RF9TUkdCOF9FVEMyLCBudWxscHRyLCBOb0NvcHlGdW5jdGlvbnMsIG51bGxwdHIsIEdMX1VOU0lH
TkVEX05PUk1BTElaRUQsIDgsIDgsIDgsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OkVU
QzJfUjhHOEI4X1VOT1JNX0JMT0NLLCBHTF9DT01QUkVTU0VEX1JHQjhfRVRDMiwgR0xfQ09NUFJF
U1NFRF9SR0I4X0VUQzIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5T
SUdORURfTk9STUFMSVpFRCwgOCwgOCwgOCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6
TDE2QTE2X0ZMT0FULCBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhULCBHTF9MVU1JTkFOQ0VfQUxQ
SEExNkZfRVhULCBHZW5lcmF0ZU1pcDxMMTZBMTZGPiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29s
b3I8TDE2QTE2RiwgR0xmbG9hdD4sIEdMX0ZMT0FULCAwLCAwLCAwLCAxNiwgMCwgMCB9LAorICAg
IHsgRm9ybWF0OjpJRDo6TDE2X0ZMT0FULCBHTF9MVU1JTkFOQ0UxNkZfRVhULCBHTF9MVU1JTkFO
Q0UxNkZfRVhULCBHZW5lcmF0ZU1pcDxMMTZGPiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8
TDE2RiwgR0xmbG9hdD4sIEdMX0ZMT0FULCAwLCAwLCAwLCAwLCAwLCAwIH0sCisgICAgeyBGb3Jt
YXQ6OklEOjpMMzJBMzJfRkxPQVQsIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQsIEdMX0xVTUlO
QU5DRV9BTFBIQTMyRl9FWFQsIEdlbmVyYXRlTWlwPEwzMkEzMkY+LCBOb0NvcHlGdW5jdGlvbnMs
IFJlYWRDb2xvcjxMMzJBMzJGLCBHTGZsb2F0PiwgR0xfRkxPQVQsIDAsIDAsIDAsIDMyLCAwLCAw
IH0sCisgICAgeyBGb3JtYXQ6OklEOjpMMzJfRkxPQVQsIEdMX0xVTUlOQU5DRTMyRl9FWFQsIEdM
X0xVTUlOQU5DRTMyRl9FWFQsIEdlbmVyYXRlTWlwPEwzMkY+LCBOb0NvcHlGdW5jdGlvbnMsIFJl
YWRDb2xvcjxMMzJGLCBHTGZsb2F0PiwgR0xfRkxPQVQsIDAsIDAsIDAsIDAsIDAsIDAgfSwKKyAg
ICB7IEZvcm1hdDo6SUQ6Okw4QThfVU5PUk0sIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVCwgR0xf
TFVNSU5BTkNFOF9BTFBIQThfRVhULCBHZW5lcmF0ZU1pcDxMOEE4PiwgTm9Db3B5RnVuY3Rpb25z
LCBSZWFkQ29sb3I8TDhBOCwgR0xmbG9hdD4sIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDAsIDAs
IDAsIDgsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6Okw4X1VOT1JNLCBHTF9MVU1JTkFOQ0U4
X0VYVCwgR0xfTFVNSU5BTkNFOF9FWFQsIEdlbmVyYXRlTWlwPEw4PiwgTm9Db3B5RnVuY3Rpb25z
LCBSZWFkQ29sb3I8TDgsIEdMZmxvYXQ+LCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCAwLCAwLCAw
LCAwLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpSMTBHMTBCMTBBMl9VSU5ULCBHTF9SR0Ix
MF9BMlVJLCBHTF9SR0IxMF9BMlVJLCBHZW5lcmF0ZU1pcDxSMTBHMTBCMTBBMj4sIE5vQ29weUZ1
bmN0aW9ucywgUmVhZENvbG9yPFIxMEcxMEIxMEEyLCBHTHVpbnQ+LCBHTF9VTlNJR05FRF9JTlQs
IDEwLCAxMCwgMTAsIDIsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlIxMEcxMEIxMEEyX1VO
T1JNLCBHTF9SR0IxMF9BMiwgR0xfUkdCMTBfQTIsIEdlbmVyYXRlTWlwPFIxMEcxMEIxMEEyPiwg
Tm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjEwRzEwQjEwQTIsIEdMZmxvYXQ+LCBHTF9VTlNJ
R05FRF9OT1JNQUxJWkVELCAxMCwgMTAsIDEwLCAyLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklE
OjpSMTFHMTFCMTBfRkxPQVQsIEdMX1IxMUZfRzExRl9CMTBGLCBHTF9SMTFGX0cxMUZfQjEwRiwg
R2VuZXJhdGVNaXA8UjExRzExQjEwRj4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFIxMUcx
MUIxMEYsIEdMZmxvYXQ+LCBHTF9GTE9BVCwgMTEsIDExLCAxMCwgMCwgMCwgMCB9LAorICAgIHsg
Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X0ZMT0FULCBHTF9SR0JBMTZGLCBHTF9SR0JBMTZGLCBH
ZW5lcmF0ZU1pcDxSMTZHMTZCMTZBMTZGPiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjE2
RzE2QjE2QTE2RiwgR0xmbG9hdD4sIEdMX0ZMT0FULCAxNiwgMTYsIDE2LCAxNiwgMCwgMCB9LAor
ICAgIHsgRm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X1NJTlQsIEdMX1JHQkExNkksIEdMX1JHQkEx
NkksIEdlbmVyYXRlTWlwPFIxNkcxNkIxNkExNlM+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xv
cjxSMTZHMTZCMTZBMTZTLCBHTGludD4sIEdMX0lOVCwgMTYsIDE2LCAxNiwgMTYsIDAsIDAgfSwK
KyAgICB7IEZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9TTk9STSwgR0xfUkdCQTE2X1NOT1JNX0VY
VCwgR0xfUkdCQTE2X1NOT1JNX0VYVCwgR2VuZXJhdGVNaXA8UjE2RzE2QjE2QTE2Uz4sIE5vQ29w
eUZ1bmN0aW9ucywgUmVhZENvbG9yPFIxNkcxNkIxNkExNlMsIEdMZmxvYXQ+LCBHTF9TSUdORURf
Tk9STUFMSVpFRCwgMTYsIDE2LCAxNiwgMTYsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlIx
NkcxNkIxNkExNl9VSU5ULCBHTF9SR0JBMTZVSSwgR0xfUkdCQTE2VUksIEdlbmVyYXRlTWlwPFIx
NkcxNkIxNkExNj4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFIxNkcxNkIxNkExNiwgR0x1
aW50PiwgR0xfVU5TSUdORURfSU5ULCAxNiwgMTYsIDE2LCAxNiwgMCwgMCB9LAorICAgIHsgRm9y
bWF0OjpJRDo6UjE2RzE2QjE2QTE2X1VOT1JNLCBHTF9SR0JBMTZfRVhULCBHTF9SR0JBMTZfRVhU
LCBHZW5lcmF0ZU1pcDxSMTZHMTZCMTZBMTY+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxS
MTZHMTZCMTZBMTYsIEdMZmxvYXQ+LCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCAxNiwgMTYsIDE2
LCAxNiwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjE2RzE2QjE2X0ZMT0FULCBHTF9SR0Ix
NkYsIEdMX1JHQjE2RiwgR2VuZXJhdGVNaXA8UjE2RzE2QjE2Rj4sIE5vQ29weUZ1bmN0aW9ucywg
UmVhZENvbG9yPFIxNkcxNkIxNkYsIEdMZmxvYXQ+LCBHTF9GTE9BVCwgMTYsIDE2LCAxNiwgMCwg
MCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjE2RzE2QjE2X1NJTlQsIEdMX1JHQjE2SSwgR0xf
UkdCMTZJLCBHZW5lcmF0ZU1pcDxSMTZHMTZCMTZTPiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29s
b3I8UjE2RzE2QjE2UywgR0xpbnQ+LCBHTF9JTlQsIDE2LCAxNiwgMTYsIDAsIDAsIDAgfSwKKyAg
ICB7IEZvcm1hdDo6SUQ6OlIxNkcxNkIxNl9TTk9STSwgR0xfUkdCMTZfU05PUk1fRVhULCBHTF9S
R0IxNl9TTk9STV9FWFQsIEdlbmVyYXRlTWlwPFIxNkcxNkIxNlM+LCBOb0NvcHlGdW5jdGlvbnMs
IFJlYWRDb2xvcjxSMTZHMTZCMTZTLCBHTGZsb2F0PiwgR0xfU0lHTkVEX05PUk1BTElaRUQsIDE2
LCAxNiwgMTYsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlIxNkcxNkIxNl9VSU5ULCBH
TF9SR0IxNlVJLCBHTF9SR0IxNlVJLCBHZW5lcmF0ZU1pcDxSMTZHMTZCMTY+LCBOb0NvcHlGdW5j
dGlvbnMsIFJlYWRDb2xvcjxSMTZHMTZCMTYsIEdMdWludD4sIEdMX1VOU0lHTkVEX0lOVCwgMTYs
IDE2LCAxNiwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjE2RzE2QjE2X1VOT1JNLCBH
TF9SR0IxNl9FWFQsIEdMX1JHQjE2X0VYVCwgR2VuZXJhdGVNaXA8UjE2RzE2QjE2PiwgTm9Db3B5
RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjE2RzE2QjE2LCBHTGZsb2F0PiwgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwgMTYsIDE2LCAxNiwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjE2RzE2
X0ZMT0FULCBHTF9SRzE2RiwgR0xfUkcxNkYsIEdlbmVyYXRlTWlwPFIxNkcxNkY+LCBOb0NvcHlG
dW5jdGlvbnMsIFJlYWRDb2xvcjxSMTZHMTZGLCBHTGZsb2F0PiwgR0xfRkxPQVQsIDE2LCAxNiwg
MCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjE2RzE2X1NJTlQsIEdMX1JHMTZJLCBH
TF9SRzE2SSwgR2VuZXJhdGVNaXA8UjE2RzE2Uz4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9y
PFIxNkcxNlMsIEdMaW50PiwgR0xfSU5ULCAxNiwgMTYsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZv
cm1hdDo6SUQ6OlIxNkcxNl9TTk9STSwgR0xfUkcxNl9TTk9STV9FWFQsIEdMX1JHMTZfU05PUk1f
RVhULCBHZW5lcmF0ZU1pcDxSMTZHMTZTPiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjE2
RzE2UywgR0xmbG9hdD4sIEdMX1NJR05FRF9OT1JNQUxJWkVELCAxNiwgMTYsIDAsIDAsIDAsIDAg
fSwKKyAgICB7IEZvcm1hdDo6SUQ6OlIxNkcxNl9VSU5ULCBHTF9SRzE2VUksIEdMX1JHMTZVSSwg
R2VuZXJhdGVNaXA8UjE2RzE2PiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjE2RzE2LCBH
THVpbnQ+LCBHTF9VTlNJR05FRF9JTlQsIDE2LCAxNiwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9y
bWF0OjpJRDo6UjE2RzE2X1VOT1JNLCBHTF9SRzE2X0VYVCwgR0xfUkcxNl9FWFQsIEdlbmVyYXRl
TWlwPFIxNkcxNj4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFIxNkcxNiwgR0xmbG9hdD4s
IEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDE2LCAxNiwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9y
bWF0OjpJRDo6UjE2X0ZMT0FULCBHTF9SMTZGLCBHTF9SMTZGLCBHZW5lcmF0ZU1pcDxSMTZGPiwg
Tm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjE2RiwgR0xmbG9hdD4sIEdMX0ZMT0FULCAxNiwg
MCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjE2X1NJTlQsIEdMX1IxNkksIEdM
X1IxNkksIEdlbmVyYXRlTWlwPFIxNlM+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxSMTZT
LCBHTGludD4sIEdMX0lOVCwgMTYsIDAsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6
OlIxNl9TTk9STSwgR0xfUjE2X1NOT1JNX0VYVCwgR0xfUjE2X1NOT1JNX0VYVCwgR2VuZXJhdGVN
aXA8UjE2Uz4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFIxNlMsIEdMZmxvYXQ+LCBHTF9T
SUdORURfTk9STUFMSVpFRCwgMTYsIDAsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6
OlIxNl9VSU5ULCBHTF9SMTZVSSwgR0xfUjE2VUksIEdlbmVyYXRlTWlwPFIxNj4sIE5vQ29weUZ1
bmN0aW9ucywgUmVhZENvbG9yPFIxNiwgR0x1aW50PiwgR0xfVU5TSUdORURfSU5ULCAxNiwgMCwg
MCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjE2X1VOT1JNLCBHTF9SMTZfRVhULCBH
TF9SMTZfRVhULCBHZW5lcmF0ZU1pcDxSMTY+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxS
MTYsIEdMZmxvYXQ+LCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCAxNiwgMCwgMCwgMCwgMCwgMCB9
LAorICAgIHsgRm9ybWF0OjpJRDo6UjMyRzMyQjMyQTMyX0ZMT0FULCBHTF9SR0JBMzJGLCBHTF9S
R0JBMzJGLCBHZW5lcmF0ZU1pcDxSMzJHMzJCMzJBMzJGPiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFk
Q29sb3I8UjMyRzMyQjMyQTMyRiwgR0xmbG9hdD4sIEdMX0ZMT0FULCAzMiwgMzIsIDMyLCAzMiwg
MCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjMyRzMyQjMyQTMyX1NJTlQsIEdMX1JHQkEzMkks
IEdMX1JHQkEzMkksIEdlbmVyYXRlTWlwPFIzMkczMkIzMkEzMlM+LCBOb0NvcHlGdW5jdGlvbnMs
IFJlYWRDb2xvcjxSMzJHMzJCMzJBMzJTLCBHTGludD4sIEdMX0lOVCwgMzIsIDMyLCAzMiwgMzIs
IDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9VSU5ULCBHTF9SR0JBMzJV
SSwgR0xfUkdCQTMyVUksIEdlbmVyYXRlTWlwPFIzMkczMkIzMkEzMj4sIE5vQ29weUZ1bmN0aW9u
cywgUmVhZENvbG9yPFIzMkczMkIzMkEzMiwgR0x1aW50PiwgR0xfVU5TSUdORURfSU5ULCAzMiwg
MzIsIDMyLCAzMiwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjMyRzMyQjMyX0ZMT0FULCBH
TF9SR0IzMkYsIEdMX1JHQjMyRiwgR2VuZXJhdGVNaXA8UjMyRzMyQjMyRj4sIE5vQ29weUZ1bmN0
aW9ucywgUmVhZENvbG9yPFIzMkczMkIzMkYsIEdMZmxvYXQ+LCBHTF9GTE9BVCwgMzIsIDMyLCAz
MiwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjMyRzMyQjMyX1NJTlQsIEdMX1JHQjMy
SSwgR0xfUkdCMzJJLCBHZW5lcmF0ZU1pcDxSMzJHMzJCMzJTPiwgTm9Db3B5RnVuY3Rpb25zLCBS
ZWFkQ29sb3I8UjMyRzMyQjMyUywgR0xpbnQ+LCBHTF9JTlQsIDMyLCAzMiwgMzIsIDAsIDAsIDAg
fSwKKyAgICB7IEZvcm1hdDo6SUQ6OlIzMkczMkIzMl9VSU5ULCBHTF9SR0IzMlVJLCBHTF9SR0Iz
MlVJLCBHZW5lcmF0ZU1pcDxSMzJHMzJCMzI+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxS
MzJHMzJCMzIsIEdMdWludD4sIEdMX1VOU0lHTkVEX0lOVCwgMzIsIDMyLCAzMiwgMCwgMCwgMCB9
LAorICAgIHsgRm9ybWF0OjpJRDo6UjMyRzMyX0ZMT0FULCBHTF9SRzMyRiwgR0xfUkczMkYsIEdl
bmVyYXRlTWlwPFIzMkczMkY+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxSMzJHMzJGLCBH
TGZsb2F0PiwgR0xfRkxPQVQsIDMyLCAzMiwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJ
RDo6UjMyRzMyX1NJTlQsIEdMX1JHMzJJLCBHTF9SRzMySSwgR2VuZXJhdGVNaXA8UjMyRzMyUz4s
IE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFIzMkczMlMsIEdMaW50PiwgR0xfSU5ULCAzMiwg
MzIsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlIzMkczMl9VSU5ULCBHTF9SRzMy
VUksIEdMX1JHMzJVSSwgR2VuZXJhdGVNaXA8UjMyRzMyPiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFk
Q29sb3I8UjMyRzMyLCBHTHVpbnQ+LCBHTF9VTlNJR05FRF9JTlQsIDMyLCAzMiwgMCwgMCwgMCwg
MCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjMyX0ZMT0FULCBHTF9SMzJGLCBHTF9SMzJGLCBHZW5l
cmF0ZU1pcDxSMzJGPiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjMyRiwgR0xmbG9hdD4s
IEdMX0ZMT0FULCAzMiwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjMyX1NJ
TlQsIEdMX1IzMkksIEdMX1IzMkksIEdlbmVyYXRlTWlwPFIzMlM+LCBOb0NvcHlGdW5jdGlvbnMs
IFJlYWRDb2xvcjxSMzJTLCBHTGludD4sIEdMX0lOVCwgMzIsIDAsIDAsIDAsIDAsIDAgfSwKKyAg
ICB7IEZvcm1hdDo6SUQ6OlIzMl9VSU5ULCBHTF9SMzJVSSwgR0xfUjMyVUksIEdlbmVyYXRlTWlw
PFIzMj4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFIzMiwgR0x1aW50PiwgR0xfVU5TSUdO
RURfSU5ULCAzMiwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjRHNEI0QTRf
VU5PUk0sIEdMX1JHQkE0LCBHTF9SR0JBNCwgR2VuZXJhdGVNaXA8UjRHNEI0QTQ+LCBOb0NvcHlG
dW5jdGlvbnMsIFJlYWRDb2xvcjxSNEc0QjRBNCwgR0xmbG9hdD4sIEdMX1VOU0lHTkVEX05PUk1B
TElaRUQsIDQsIDQsIDQsIDQsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlI1RzVCNUExX1VO
T1JNLCBHTF9SR0I1X0ExLCBHTF9SR0I1X0ExLCBHZW5lcmF0ZU1pcDxSNUc1QjVBMT4sIE5vQ29w
eUZ1bmN0aW9ucywgUmVhZENvbG9yPFI1RzVCNUExLCBHTGZsb2F0PiwgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwgNSwgNSwgNSwgMSwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjVHNkI1X1VO
T1JNLCBHTF9SR0I1NjUsIEdMX1JHQjU2NSwgR2VuZXJhdGVNaXA8UjVHNkI1PiwgTm9Db3B5RnVu
Y3Rpb25zLCBSZWFkQ29sb3I8UjVHNkI1LCBHTGZsb2F0PiwgR0xfVU5TSUdORURfTk9STUFMSVpF
RCwgNSwgNiwgNSwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjhHOEI4QThfU0lOVCwg
R0xfUkdCQThJLCBHTF9SR0JBOEksIEdlbmVyYXRlTWlwPFI4RzhCOEE4Uz4sIE5vQ29weUZ1bmN0
aW9ucywgUmVhZENvbG9yPFI4RzhCOEE4UywgR0xpbnQ+LCBHTF9JTlQsIDgsIDgsIDgsIDgsIDAs
IDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlI4RzhCOEE4X1NOT1JNLCBHTF9SR0JBOF9TTk9STSwg
R0xfUkdCQThfU05PUk0sIEdlbmVyYXRlTWlwPFI4RzhCOEE4Uz4sIE5vQ29weUZ1bmN0aW9ucywg
UmVhZENvbG9yPFI4RzhCOEE4UywgR0xmbG9hdD4sIEdMX1NJR05FRF9OT1JNQUxJWkVELCA4LCA4
LCA4LCA4LCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpSOEc4QjhBOF9VSU5ULCBHTF9SR0JB
OFVJLCBHTF9SR0JBOFVJLCBHZW5lcmF0ZU1pcDxSOEc4QjhBOD4sIE5vQ29weUZ1bmN0aW9ucywg
UmVhZENvbG9yPFI4RzhCOEE4LCBHTHVpbnQ+LCBHTF9VTlNJR05FRF9JTlQsIDgsIDgsIDgsIDgs
IDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNLCBHTF9SR0JBOCwgR0xf
UkdCQTgsIEdlbmVyYXRlTWlwPFI4RzhCOEE4PiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8
UjhHOEI4QTgsIEdMZmxvYXQ+LCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCA4LCA4LCA4LCA4LCAw
LCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STV9TUkdCLCBHTF9TUkdCOF9B
TFBIQTgsIEdMX1NSR0I4X0FMUEhBOCwgR2VuZXJhdGVNaXA8UjhHOEI4QTg+LCBOb0NvcHlGdW5j
dGlvbnMsIFJlYWRDb2xvcjxSOEc4QjhBOCwgR0xmbG9hdD4sIEdMX1VOU0lHTkVEX05PUk1BTEla
RUQsIDgsIDgsIDgsIDgsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlI4RzhCOF9TSU5ULCBH
TF9SR0I4SSwgR0xfUkdCOEksIEdlbmVyYXRlTWlwPFI4RzhCOFM+LCBOb0NvcHlGdW5jdGlvbnMs
IFJlYWRDb2xvcjxSOEc4QjhTLCBHTGludD4sIEdMX0lOVCwgOCwgOCwgOCwgMCwgMCwgMCB9LAor
ICAgIHsgRm9ybWF0OjpJRDo6UjhHOEI4X1NOT1JNLCBHTF9SR0I4X1NOT1JNLCBHTF9SR0I4X1NO
T1JNLCBHZW5lcmF0ZU1pcDxSOEc4QjhTPiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjhH
OEI4UywgR0xmbG9hdD4sIEdMX1NJR05FRF9OT1JNQUxJWkVELCA4LCA4LCA4LCAwLCAwLCAwIH0s
CisgICAgeyBGb3JtYXQ6OklEOjpSOEc4QjhfVUlOVCwgR0xfUkdCOFVJLCBHTF9SR0I4VUksIEdl
bmVyYXRlTWlwPFI4RzhCOD4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFI4RzhCOCwgR0x1
aW50PiwgR0xfVU5TSUdORURfSU5ULCA4LCA4LCA4LCAwLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6
OklEOjpSOEc4QjhfVU5PUk0sIEdMX1JHQjgsIEdMX1JHQjgsIEdlbmVyYXRlTWlwPFI4RzhCOD4s
IE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFI4RzhCOCwgR0xmbG9hdD4sIEdMX1VOU0lHTkVE
X05PUk1BTElaRUQsIDgsIDgsIDgsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlI4RzhC
OF9VTk9STV9TUkdCLCBHTF9TUkdCOCwgR0xfU1JHQjgsIEdlbmVyYXRlTWlwPFI4RzhCOD4sIE5v
Q29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFI4RzhCOCwgR0xmbG9hdD4sIEdMX1VOU0lHTkVEX05P
Uk1BTElaRUQsIDgsIDgsIDgsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlI4RzhfU0lO
VCwgR0xfUkc4SSwgR0xfUkc4SSwgR2VuZXJhdGVNaXA8UjhHOFM+LCBOb0NvcHlGdW5jdGlvbnMs
IFJlYWRDb2xvcjxSOEc4UywgR0xpbnQ+LCBHTF9JTlQsIDgsIDgsIDAsIDAsIDAsIDAgfSwKKyAg
ICB7IEZvcm1hdDo6SUQ6OlI4RzhfU05PUk0sIEdMX1JHOF9TTk9STSwgR0xfUkc4X1NOT1JNLCBH
ZW5lcmF0ZU1pcDxSOEc4Uz4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFI4RzhTLCBHTGZs
b2F0PiwgR0xfU0lHTkVEX05PUk1BTElaRUQsIDgsIDgsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZv
cm1hdDo6SUQ6OlI4RzhfVUlOVCwgR0xfUkc4VUksIEdMX1JHOFVJLCBHZW5lcmF0ZU1pcDxSOEc4
PiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjhHOCwgR0x1aW50PiwgR0xfVU5TSUdORURf
SU5ULCA4LCA4LCAwLCAwLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpSOEc4X1VOT1JNLCBH
TF9SRzgsIEdMX1JHOCwgR2VuZXJhdGVNaXA8UjhHOD4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENv
bG9yPFI4RzgsIEdMZmxvYXQ+LCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCA4LCA4LCAwLCAwLCAw
LCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpSOF9TSU5ULCBHTF9SOEksIEdMX1I4SSwgR2VuZXJh
dGVNaXA8UjhTPiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjhTLCBHTGludD4sIEdMX0lO
VCwgOCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjhfU05PUk0sIEdMX1I4
X1NOT1JNLCBHTF9SOF9TTk9STSwgR2VuZXJhdGVNaXA8UjhTPiwgTm9Db3B5RnVuY3Rpb25zLCBS
ZWFkQ29sb3I8UjhTLCBHTGZsb2F0PiwgR0xfU0lHTkVEX05PUk1BTElaRUQsIDgsIDAsIDAsIDAs
IDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlI4X1VJTlQsIEdMX1I4VUksIEdMX1I4VUksIEdl
bmVyYXRlTWlwPFI4PiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjgsIEdMdWludD4sIEdM
X1VOU0lHTkVEX0lOVCwgOCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6Ujhf
VU5PUk0sIEdMX1I4LCBHTF9SOCwgR2VuZXJhdGVNaXA8Ujg+LCBOb0NvcHlGdW5jdGlvbnMsIFJl
YWRDb2xvcjxSOCwgR0xmbG9hdD4sIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDgsIDAsIDAsIDAs
IDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlI5RzlCOUU1X1NIQVJFREVYUCwgR0xfUkdCOV9F
NSwgR0xfUkdCOV9FNSwgR2VuZXJhdGVNaXA8UjlHOUI5RTU+LCBOb0NvcHlGdW5jdGlvbnMsIFJl
YWRDb2xvcjxSOUc5QjlFNSwgR0xmbG9hdD4sIEdMX0ZMT0FULCA5LCA5LCA5LCAwLCAwLCAwIH0s
CisgICAgeyBGb3JtYXQ6OklEOjpTOF9VSU5ULCBHTF9TVEVOQ0lMX0lOREVYOCwgR0xfU1RFTkNJ
TF9JTkRFWDgsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURf
SU5ULCAwLCAwLCAwLCAwLCAwLCA4IH0sCisgICAgLy8gY2xhbmctZm9ybWF0IG9uCit9OworCisv
LyBzdGF0aWMKK2NvbnN0IEZvcm1hdCAmRm9ybWF0OjpHZXQoSUQgaWQpCit7CisgICAgcmV0dXJu
IGdfZm9ybWF0SW5mb1RhYmxlW3N0YXRpY19jYXN0PHNpemVfdD4oaWQpXTsKK30KKworfSAgLy8g
bmFtZXNwYWNlIGFuZ2xlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJJbXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJJbXBsLmgKaW5kZXggYTYxZGJi
YTUzNWU2ZTQ0YmU0MWYzYjhmZGI5ZTRjNTZkOGI4ZmUyYi4uNjdiMmQ5NWFjNmJlY2VlN2M3MDc3
YmZlOTA3YzI5MGU0OWY5OWE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL0ZyYW1lYnVmZmVySW1wbC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZlckltcGwuaApAQCAt
MjQsMTIgKzI0LDE1IEBAIHN0cnVjdCBSZWN0YW5nbGU7CiAKIG5hbWVzcGFjZSByeAogeworY2xh
c3MgRGlzcGxheUltcGw7CiAKIGNsYXNzIEZyYW1lYnVmZmVySW1wbCA6IGFuZ2xlOjpOb25Db3B5
YWJsZQogewogICBwdWJsaWM6CiAgICAgZXhwbGljaXQgRnJhbWVidWZmZXJJbXBsKGNvbnN0IGds
OjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkgOiBtU3RhdGUoc3RhdGUpIHt9CiAgICAgdmlydHVh
bCB+RnJhbWVidWZmZXJJbXBsKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koQ29udGV4
dEltcGwgKmNvbnRleHRJbXBsKSB7fQorICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVmYXVsdChE
aXNwbGF5SW1wbCAqZGlzcGxheUltcGwpIHt9CiAKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBkaXNj
YXJkKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykgPSAwOwogICAgIHZp
cnR1YWwgZ2w6OkVycm9yIGludmFsaWRhdGUoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmF0
dGFjaG1lbnRzKSA9IDA7CkBAIC03MCw3ICs3MywxMCBAQCBjbGFzcyBGcmFtZWJ1ZmZlckltcGwg
OiBhbmdsZTo6Tm9uQ29weWFibGUKIAogICAgIHZpcnR1YWwgYm9vbCBjaGVja1N0YXR1cygpIGNv
bnN0ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzeW5jU3Rh
dGUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgPSAwOworCisgICAg
dmlydHVhbCBnbDo6RXJyb3IgZ2V0U2FtcGxlUG9zaXRpb24oc2l6ZV90IGluZGV4LCBHTGZsb2F0
ICp4eSkgY29uc3QgPSAwOwogCiAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJmdldFN0
YXRlKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZlckltcGxfbW9jay5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0ZyYW1lYnVm
ZmVySW1wbF9tb2NrLmgKaW5kZXggOWJmOTNkYjk3MzRmZjM0ZDcxODE3MDEwOGE5M2QxMzZkMmVh
MDNjZS4uN2NhNzc1NDUwZTk0NDAyNGVjZmU0MTI3NWIxMTkwZGI5MmZiZDc5YSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0ZyYW1lYnVm
ZmVySW1wbF9tb2NrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL0ZyYW1lYnVmZmVySW1wbF9tb2NrLmgKQEAgLTIxLDcgKzIxLDcgQEAgY2xhc3Mg
TW9ja0ZyYW1lYnVmZmVySW1wbCA6IHB1YmxpYyByeDo6RnJhbWVidWZmZXJJbXBsCiB7CiAgIHB1
YmxpYzoKICAgICBNb2NrRnJhbWVidWZmZXJJbXBsKCkgOiByeDo6RnJhbWVidWZmZXJJbXBsKGds
OjpGcmFtZWJ1ZmZlclN0YXRlKCkpIHt9Ci0gICAgdmlydHVhbCB+TW9ja0ZyYW1lYnVmZmVySW1w
bCgpIHsgZGVzdHJveSgpOyB9CisgICAgdmlydHVhbCB+TW9ja0ZyYW1lYnVmZmVySW1wbCgpIHsg
ZGVzdHJ1Y3RvcigpOyB9CiAKICAgICBNT0NLX01FVEhPRDIoZGlzY2FyZCwgZ2w6OkVycm9yKHNp
emVfdCwgY29uc3QgR0xlbnVtICopKTsKICAgICBNT0NLX01FVEhPRDIoaW52YWxpZGF0ZSwgZ2w6
OkVycm9yKHNpemVfdCwgY29uc3QgR0xlbnVtICopKTsKQEAgLTM4LDE1ICszOCwxNyBAQCBjbGFz
cyBNb2NrRnJhbWVidWZmZXJJbXBsIDogcHVibGljIHJ4OjpGcmFtZWJ1ZmZlckltcGwKICAgICBN
T0NLX0NPTlNUX01FVEhPRDUocmVhZFBpeGVscywKICAgICAgICAgICAgICAgICAgICAgICAgZ2w6
OkVycm9yKENvbnRleHRJbXBsICosIGNvbnN0IGdsOjpSZWN0YW5nbGUgJiwgR0xlbnVtLCBHTGVu
dW0sIEdMdm9pZCAqKSk7CiAKKyAgICBNT0NLX0NPTlNUX01FVEhPRDIoZ2V0U2FtcGxlUG9zaXRp
b24sIGdsOjpFcnJvcihzaXplX3QsIEdMZmxvYXQgKikpOworCiAgICAgTU9DS19NRVRIT0Q1KAog
ICAgICAgICBibGl0LAogICAgICAgICBnbDo6RXJyb3IoQ29udGV4dEltcGwgKiwgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmLCBjb25zdCBnbDo6UmVjdGFuZ2xlICYsIEdMYml0ZmllbGQsIEdMZW51bSkp
OwogCiAgICAgTU9DS19DT05TVF9NRVRIT0QwKGNoZWNrU3RhdHVzLCBib29sKCkpOwogCi0gICAg
TU9DS19NRVRIT0QxKHN5bmNTdGF0ZSwgdm9pZChjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRpcnR5
Qml0cyAmKSk7CisgICAgTU9DS19NRVRIT0QyKHN5bmNTdGF0ZSwgdm9pZChDb250ZXh0SW1wbCAq
LCBjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0cyAmKSk7CiAKLSAgICBNT0NLX01FVEhP
RDAoZGVzdHJveSwgdm9pZCgpKTsKKyAgICBNT0NLX01FVEhPRDAoZGVzdHJ1Y3Rvciwgdm9pZCgp
KTsKIH07CiAKIGlubGluZSA6OnRlc3Rpbmc6Ok5pY2VNb2NrPE1vY2tGcmFtZWJ1ZmZlckltcGw+
ICpNYWtlRnJhbWVidWZmZXJNb2NrKCkKQEAgLTU3LDcgKzU5LDcgQEAgaW5saW5lIDo6dGVzdGlu
Zzo6TmljZU1vY2s8TW9ja0ZyYW1lYnVmZmVySW1wbD4gKk1ha2VGcmFtZWJ1ZmZlck1vY2soKQog
ICAgIE9OX0NBTEwoKmZyYW1lYnVmZmVySW1wbCwgY2hlY2tTdGF0dXMoKSkuV2lsbEJ5RGVmYXVs
dCg6OnRlc3Rpbmc6OlJldHVybih0cnVlKSk7CiAKICAgICAvLyBXZSBtdXN0IG1vY2sgdGhlIGRl
c3RydWN0b3Igc2luY2UgTmljZU1vY2sgZG9lc24ndCB3b3JrIGZvciBkZXN0cnVjdG9ycy4KLSAg
ICBFWFBFQ1RfQ0FMTCgqZnJhbWVidWZmZXJJbXBsLCBkZXN0cm95KCkpLlRpbWVzKDEpLlJldGly
ZXNPblNhdHVyYXRpb24oKTsKKyAgICBFWFBFQ1RfQ0FMTCgqZnJhbWVidWZmZXJJbXBsLCBkZXN0
cnVjdG9yKCkpLlRpbWVzKDEpLlJldGlyZXNPblNhdHVyYXRpb24oKTsKIAogICAgIHJldHVybiBm
cmFtZWJ1ZmZlckltcGw7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvR0xJbXBsRmFjdG9yeS5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0dMSW1wbEZhY3RvcnkuaAppbmRleCAwOWYxNGQ3
MjcxN2FjNTNlNGFkNTI2YTk4YzRiNjVkN2NlYzZiOGMwLi4yMGE0OGZjNzIzYWM0NTdlYTg3Mjcz
NTlhM2RlMjgwOGIzODRjYzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvR0xJbXBsRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9HTEltcGxGYWN0b3J5LmgKQEAgLTYzLDcg
KzYzLDcgQEAgY2xhc3MgR0xJbXBsRmFjdG9yeSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHZp
cnR1YWwgUmVuZGVyYnVmZmVySW1wbCAqY3JlYXRlUmVuZGVyYnVmZmVyKCkgPSAwOwogCiAgICAg
Ly8gQnVmZmVyIGNyZWF0aW9uCi0gICAgdmlydHVhbCBCdWZmZXJJbXBsICpjcmVhdGVCdWZmZXIo
KSA9IDA7CisgICAgdmlydHVhbCBCdWZmZXJJbXBsICpjcmVhdGVCdWZmZXIoY29uc3QgZ2w6OkJ1
ZmZlclN0YXRlICZzdGF0ZSkgPSAwOwogCiAgICAgLy8gVmVydGV4IEFycmF5IGNyZWF0aW9uCiAg
ICAgdmlydHVhbCBWZXJ0ZXhBcnJheUltcGwgKmNyZWF0ZVZlcnRleEFycmF5KGNvbnN0IGdsOjpW
ZXJ0ZXhBcnJheVN0YXRlICZkYXRhKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUltcGwuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbC5oCmluZGV4IDQ1
ZmYwYTA1YTE3NzIyYjIxYmU1OTExMmZkMjNkMDk2YWJlNjg3OWMuLjMwYTZhMjYxODBiZTA3MGMz
MmEyNDdhMTZhODY1MmM1NjA1MGJhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbC5oCkBAIC0xNyw2
ICsxNywxMSBAQAogCiAjaW5jbHVkZSA8bWFwPgogCituYW1lc3BhY2UgZ2wKK3sKK2NsYXNzIFZh
cnlpbmdQYWNraW5nOworfQorCiBuYW1lc3BhY2Ugc2gKIHsKIHN0cnVjdCBCbG9ja01lbWJlcklu
Zm87CkBAIC0yNCwyNiArMjksMjcgQEAgc3RydWN0IEJsb2NrTWVtYmVySW5mbzsKIAogbmFtZXNw
YWNlIHJ4CiB7CitjbGFzcyBDb250ZXh0SW1wbDsKIAotc3RydWN0IExpbmtSZXN1bHQKLXsKLSAg
ICBMaW5rUmVzdWx0KGJvb2wgbGlua1N1Y2Nlc3MsIGNvbnN0IGdsOjpFcnJvciAmZXJyb3IpIDog
bGlua1N1Y2Nlc3MobGlua1N1Y2Nlc3MpLCBlcnJvcihlcnJvcikge30KLQotICAgIGJvb2wgbGlu
a1N1Y2Nlc3M7Ci0gICAgZ2w6OkVycm9yIGVycm9yOwotfTsKK3VzaW5nIExpbmtSZXN1bHQgPSBn
bDo6RXJyb3JPclJlc3VsdDxib29sPjsKIAogY2xhc3MgUHJvZ3JhbUltcGwgOiBhbmdsZTo6Tm9u
Q29weWFibGUKIHsKICAgcHVibGljOgogICAgIFByb2dyYW1JbXBsKGNvbnN0IGdsOjpQcm9ncmFt
U3RhdGUgJnN0YXRlKSA6IG1TdGF0ZShzdGF0ZSkge30KICAgICB2aXJ0dWFsIH5Qcm9ncmFtSW1w
bCgpIHt9CisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koY29uc3QgQ29udGV4dEltcGwgKmNvbnRl
eHRJbXBsKSB7fQogCi0gICAgdmlydHVhbCBMaW5rUmVzdWx0IGxvYWQoZ2w6OkluZm9Mb2cgJmlu
Zm9Mb2csIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtKSA9IDA7CisgICAgdmlydHVhbCBM
aW5rUmVzdWx0IGxvYWQoY29uc3QgQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsOjpJbmZvTG9nICZpbmZvTG9nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtKSAgPSAwOwogICAgIHZp
cnR1YWwgZ2w6OkVycm9yIHNhdmUoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqc3RyZWFtKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHNldEJpbmFyeVJldHJpZXZhYmxlSGludChib29sIHJldHJpZXZh
YmxlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNlcGFyYWJsZShib29sIHNlcGFyYWJsZSkg
ICAgICAgICAgICAgICA9IDA7CiAKLSAgICB2aXJ0dWFsIExpbmtSZXN1bHQgbGluayhjb25zdCBn
bDo6Q29udGV4dFN0YXRlICZkYXRhLCBnbDo6SW5mb0xvZyAmaW5mb0xvZykgPSAwOworICAgIHZp
cnR1YWwgTGlua1Jlc3VsdCBsaW5rKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VmFyeWluZ1BhY2tpbmcgJnBhY2tpbmcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkluZm9Mb2cgJmluZm9Mb2cpID0gMDsKICAg
ICB2aXJ0dWFsIEdMYm9vbGVhbiB2YWxpZGF0ZShjb25zdCBnbDo6Q2FwcyAmY2FwcywgZ2w6Oklu
Zm9Mb2cgKmluZm9Mb2cpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRVbmlmb3JtMWZ2KEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KSA9IDA7CkBAIC05
MCw2ICs5Niw2IEBAIGNsYXNzIFByb2dyYW1JbXBsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAg
Y29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmbVN0YXRlOwogfTsKIAotfQorfSAgLy8gbmFtZXNwYWNl
IHJ4CiAKICNlbmRpZiAvLyBMSUJBTkdMRV9SRU5ERVJFUl9QUk9HUkFNSU1QTF9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dy
YW1JbXBsX21vY2suaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9Qcm9ncmFtSW1wbF9tb2NrLmgKaW5kZXggMWJjMjBiYmVmNmEwNDg1NjhlZThmNWY0MDE5
ZGFhZWZiMmE3MTNkMC4uOWI4MzBjMDU3OTJlMWZiMTE5YzQ0NTgyZjUwNTVkY2VmOGE3NDQzNyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L1Byb2dyYW1JbXBsX21vY2suaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUltcGxfbW9jay5oCkBAIC0yMSwxMyArMjEsMTQgQEAgY2xh
c3MgTW9ja1Byb2dyYW1JbXBsIDogcHVibGljIHJ4OjpQcm9ncmFtSW1wbAogewogICBwdWJsaWM6
CiAgICAgTW9ja1Byb2dyYW1JbXBsKCkgOiBQcm9ncmFtSW1wbChnbDo6UHJvZ3JhbVN0YXRlKCkp
IHt9Ci0gICAgdmlydHVhbCB+TW9ja1Byb2dyYW1JbXBsKCkgeyBkZXN0cm95KCk7IH0KKyAgICB2
aXJ0dWFsIH5Nb2NrUHJvZ3JhbUltcGwoKSB7IGRlc3RydWN0b3IoKTsgfQogCi0gICAgTU9DS19N
RVRIT0QyKGxvYWQsIExpbmtSZXN1bHQoZ2w6OkluZm9Mb2cgJiwgZ2w6OkJpbmFyeUlucHV0U3Ry
ZWFtICopKTsKKyAgICBNT0NLX01FVEhPRDMobG9hZCwgTGlua1Jlc3VsdChjb25zdCBDb250ZXh0
SW1wbCAqLCBnbDo6SW5mb0xvZyAmLCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKikpOwogICAgIE1P
Q0tfTUVUSE9EMShzYXZlLCBnbDo6RXJyb3IoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqKSk7CiAg
ICAgTU9DS19NRVRIT0QxKHNldEJpbmFyeVJldHJpZXZhYmxlSGludCwgdm9pZChib29sKSk7Cisg
ICAgTU9DS19NRVRIT0QxKHNldFNlcGFyYWJsZSwgdm9pZChib29sKSk7CiAKLSAgICBNT0NLX01F
VEhPRDIobGluaywgTGlua1Jlc3VsdChjb25zdCBnbDo6Q29udGV4dFN0YXRlICYsIGdsOjpJbmZv
TG9nICYpKTsKKyAgICBNT0NLX01FVEhPRDMobGluaywgTGlua1Jlc3VsdChDb250ZXh0SW1wbCAq
LCBjb25zdCBnbDo6VmFyeWluZ1BhY2tpbmcgJiwgZ2w6OkluZm9Mb2cgJikpOwogICAgIE1PQ0tf
TUVUSE9EMih2YWxpZGF0ZSwgR0xib29sZWFuKGNvbnN0IGdsOjpDYXBzICYsIGdsOjpJbmZvTG9n
ICopKTsKIAogICAgIE1PQ0tfTUVUSE9EMyhzZXRVbmlmb3JtMWZ2LCB2b2lkKEdMaW50LCBHTHNp
emVpLCBjb25zdCBHTGZsb2F0ICopKTsKQEAgLTU5LDcgKzYwLDcgQEAgY2xhc3MgTW9ja1Byb2dy
YW1JbXBsIDogcHVibGljIHJ4OjpQcm9ncmFtSW1wbAogICAgIE1PQ0tfTUVUSE9ENChzZXRQYXRo
RnJhZ21lbnRJbnB1dEdlbiwKICAgICAgICAgICAgICAgICAgdm9pZChjb25zdCBzdGQ6OnN0cmlu
ZyAmLCBHTGVudW0sIEdMaW50LCBjb25zdCBHTGZsb2F0ICopKTsKIAotICAgIE1PQ0tfTUVUSE9E
MChkZXN0cm95LCB2b2lkKCkpOworICAgIE1PQ0tfTUVUSE9EMChkZXN0cnVjdG9yLCB2b2lkKCkp
OwogfTsKIAogaW5saW5lIDo6dGVzdGluZzo6TmljZU1vY2s8TW9ja1Byb2dyYW1JbXBsPiAqTWFr
ZVByb2dyYW1Nb2NrKCkKQEAgLTY3LDcgKzY4LDcgQEAgaW5saW5lIDo6dGVzdGluZzo6TmljZU1v
Y2s8TW9ja1Byb2dyYW1JbXBsPiAqTWFrZVByb2dyYW1Nb2NrKCkKICAgICA6OnRlc3Rpbmc6Ok5p
Y2VNb2NrPE1vY2tQcm9ncmFtSW1wbD4gKnByb2dyYW1JbXBsID0gbmV3IDo6dGVzdGluZzo6Tmlj
ZU1vY2s8TW9ja1Byb2dyYW1JbXBsPigpOwogICAgIC8vIFRPRE8oam1hZGlsbCk6IGFkZCBPTl9D
QUxMUyBmb3IgcmV0dXJuaW5nIG1ldGhvZHMKICAgICAvLyBXZSBtdXN0IG1vY2sgdGhlIGRlc3Ry
dWN0b3Igc2luY2UgTmljZU1vY2sgZG9lc24ndCB3b3JrIGZvciBkZXN0cnVjdG9ycy4KLSAgICBF
WFBFQ1RfQ0FMTCgqcHJvZ3JhbUltcGwsIGRlc3Ryb3koKSkuVGltZXMoMSkuUmV0aXJlc09uU2F0
dXJhdGlvbigpOworICAgIEVYUEVDVF9DQUxMKCpwcm9ncmFtSW1wbCwgZGVzdHJ1Y3RvcigpKS5U
aW1lcygxKS5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CiAKICAgICByZXR1cm4gcHJvZ3JhbUltcGw7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvU2hhZGVySW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL1NoYWRlckltcGwuaAppbmRleCA3N2Y2ZTliMjI0MjRiMGNiYWY2MzY1ZTU5Njk2
MDU4ZjFkOTAzYjYyLi43N2UwMmQwMjM3NTM2ZmI1N2Y0NzI0ZTc5NDY2N2E5OTNhZDQyNWZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
U2hhZGVySW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9TaGFkZXJJbXBsLmgKQEAgLTIxLDcgKzIxLDcgQEAgY2xhc3MgU2hhZGVySW1wbCA6
IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIFNoYWRlckltcGwoY29uc3QgZ2w6OlNoYWRlclN0YXRl
ICZkYXRhKSA6IG1EYXRhKGRhdGEpIHt9CiAgICAgdmlydHVhbCB+U2hhZGVySW1wbCgpIHsgfQog
Ci0gICAgLy8gUmV0dXJucyBhZGRpdGlvbmFsIFNoQ29tcGlsZSBvcHRpb25zLgorICAgIC8vIFJl
dHVybnMgYWRkaXRpb25hbCBzaDo6Q29tcGlsZSBvcHRpb25zLgogICAgIHZpcnR1YWwgU2hDb21w
aWxlT3B0aW9ucyBwcmVwYXJlU291cmNlQW5kUmV0dXJuT3B0aW9ucyhzdGQ6OnN0cmluZ3N0cmVh
bSAqc291cmNlU3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqc291cmNlUGF0aCkgPSAwOwogICAgIC8v
IFJldHVybnMgc3VjY2VzcyBmb3IgY29tcGlsaW5nIG9uIHRoZSBkcml2ZXIuIFJldHVybnMgc3Vj
Y2Vzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9TdXJmYWNlSW1wbC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvU3VyZmFjZUltcGwuY3BwCmluZGV4IDUxNzIxNGIzNjYzNzliOWMyYmNi
ZGViN2M3MDkzNmMzZjZiNDlkM2UuLmU0YjNkN2M4YjcwYjk3ZWEzYzVkNWU2ZWZjNGEzMjJmNmVk
ZTQ4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9TdXJmYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL1N1cmZhY2VJbXBsLmNwcApAQCAtMTksNCArMTksMTAgQEAgU3Vy
ZmFjZUltcGw6On5TdXJmYWNlSW1wbCgpCiB7CiB9CiAKK2VnbDo6RXJyb3IgU3VyZmFjZUltcGw6
OnN3YXBXaXRoRGFtYWdlKEVHTGludCAqcmVjdHMsIEVHTGludCBuX3JlY3RzKQoreworICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9TVVJGQUNFLCAic3dh
cFdpdGhEYW1hZ2UgaW1wbGVtZW50YXRpb24gbWlzc2luZy4iKTsKK30KKwogfSAgLy8gbmFtZXNw
YWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvU3VyZmFjZUltcGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5oCmluZGV4IDZmNGRmZmRjNGU5N2Q2ZWQyMWZiZjlh
NTgxNzgzNDYyZTAwMmY2NTcuLjBlNGYxNzdkNjllNTBkODc3NmRmYWExMDk5ZjVjNDYzMTAyODc3
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9TdXJmYWNlSW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5oCkBAIC0zMSw2ICszMSw3IEBAIHN0cnVjdCBTdXJm
YWNlU3RhdGU7CiAKIG5hbWVzcGFjZSByeAogeworY2xhc3MgRGlzcGxheUltcGw7CiBjbGFzcyBG
cmFtZWJ1ZmZlckltcGw7CiAKIGNsYXNzIFN1cmZhY2VJbXBsIDogcHVibGljIEZyYW1lYnVmZmVy
QXR0YWNobWVudE9iamVjdEltcGwKQEAgLTM4LDEwICszOSwxMiBAQCBjbGFzcyBTdXJmYWNlSW1w
bCA6IHB1YmxpYyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBsCiAgIHB1YmxpYzoKICAg
ICBTdXJmYWNlSW1wbChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3VyZmFjZVN0YXRlKTsKICAg
ICB2aXJ0dWFsIH5TdXJmYWNlSW1wbCgpOworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KGNvbnN0
IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkge30KIAotICAgIHZpcnR1YWwgZWdsOjpFcnJvciBp
bml0aWFsaXplKCkgPSAwOworICAgIHZpcnR1YWwgZWdsOjpFcnJvciBpbml0aWFsaXplKGNvbnN0
IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgICAgICAgICAgICAgICAgICAgICAgICA9IDA7CiAg
ICAgdmlydHVhbCBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25z
dCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpID0gMDsKLSAgICB2aXJ0dWFsIGVnbDo6RXJy
b3Igc3dhcCgpID0gMDsKKyAgICB2aXJ0dWFsIGVnbDo6RXJyb3Igc3dhcChjb25zdCBEaXNwbGF5
SW1wbCAqZGlzcGxheUltcGwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOworICAg
IHZpcnR1YWwgZWdsOjpFcnJvciBzd2FwV2l0aERhbWFnZShFR0xpbnQgKnJlY3RzLCBFR0xpbnQg
bl9yZWN0cyk7CiAgICAgdmlydHVhbCBlZ2w6OkVycm9yIHBvc3RTdWJCdWZmZXIoRUdMaW50IHgs
IEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpID0gMDsKICAgICB2aXJ0dWFs
IGVnbDo6RXJyb3IgcXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTGludCBhdHRyaWJ1dGUsIHZv
aWQgKip2YWx1ZSkgPSAwOwogICAgIHZpcnR1YWwgZWdsOjpFcnJvciBiaW5kVGV4SW1hZ2UoZ2w6
OlRleHR1cmUgKnRleHR1cmUsIEVHTGludCBidWZmZXIpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbC5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUlt
cGwuY3BwCmluZGV4IGFmNDc5NjM3MTZmODZmMjc1MjM4YTdlZjU5MmQ5MDVhMTQwODMwNWMuLjQ3
YTczOTAyZjBjZmU1MWFmMGY0ZThjODE3N2IxNzUyMDVmYWUyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbC5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1RleHR1
cmVJbXBsLmNwcApAQCAtMTksOCArMTksMTIgQEAgVGV4dHVyZUltcGw6On5UZXh0dXJlSW1wbCgp
CiB7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlSW1wbDo6Y29weVRleHR1cmUoR0xlbnVtIGludGVy
bmFsRm9ybWF0LAorZ2w6OkVycm9yIFRleHR1cmVJbXBsOjpjb3B5VGV4dHVyZShDb250ZXh0SW1w
bCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZl
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNvdXJjZUxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja0ZsaXBZLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1ByZW11bHRpcGx5QWxwaGEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrVW5tdWx0aXBs
eUFscGhhLApAQCAtMzAsNyArMzQsMTEgQEAgZ2w6OkVycm9yIFRleHR1cmVJbXBsOjpjb3B5VGV4
dHVyZShHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTiwgIkNIUk9NSVVNX2NvcHlfdGV4dHVyZSBleHBvc2VkIGJ1dCBub3QgaW1w
bGVtZW50ZWQuIik7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlSW1wbDo6Y29weVN1YlRleHR1cmUo
Y29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKK2dsOjpFcnJvciBUZXh0dXJlSW1wbDo6Y29w
eVN1YlRleHR1cmUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VMZXZlbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJl
YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tGbGlw
WSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVt
dWx0aXBseUFscGhhLApAQCAtNDEsMTAgKzQ5LDEwIEBAIGdsOjpFcnJvciBUZXh0dXJlSW1wbDo6
Y29weVN1YlRleHR1cmUoY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKICAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ0hST01JVU1fY29weV90ZXh0dXJlIGV4
cG9zZWQgYnV0IG5vdCBpbXBsZW1lbnRlZC4iKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVJbXBs
Ojpjb3B5Q29tcHJlc3NlZFRleHR1cmUoY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSkKK2dsOjpF
cnJvciBUZXh0dXJlSW1wbDo6Y29weUNvbXByZXNzZWRUZXh0dXJlKENvbnRleHRJbXBsICpjb250
ZXh0SW1wbCwgY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSkKIHsKICAgICBVTlJFQUNIQUJMRSgp
OwogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCiAgICAgICAgICAg
ICAgICAgICAgICAiQ0hST01JVU1fY29weV9jb21wcmVzc2VkX3RleHR1cmUgZXhwb3NlZCBidXQg
bm90IGltcGxlbWVudGVkLiIpOwogfQotfQorfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUlt
cGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9UZXh0
dXJlSW1wbC5oCmluZGV4IDdkMGViZTJmMTE4ZmI1MDBlOTcwMjgyNDA0ZTRkNWY2NDQ2NjE4MzYu
LjA3NzQ4NWMzNDcyMmZjMjgzNTE2NTliYmQ2MWI1NDc1NjgxYjNlNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9UZXh0
dXJlSW1wbC5oCkBAIC0zOCw2ICszOCw3IEBAIHN0cnVjdCBUZXh0dXJlU3RhdGU7CiAKIG5hbWVz
cGFjZSByeAogeworY2xhc3MgQ29udGV4dEltcGw7CiAKIGNsYXNzIFRleHR1cmVJbXBsIDogcHVi
bGljIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdEltcGwKIHsKQEAgLTQ1LDM3ICs0Niw4OSBA
QCBjbGFzcyBUZXh0dXJlSW1wbCA6IHB1YmxpYyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3RJ
bXBsCiAgICAgVGV4dHVyZUltcGwoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmc3RhdGUpOwogICAg
IHZpcnR1YWwgflRleHR1cmVJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBzZXRJbWFn
ZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgY29u
c3QgZ2w6OkV4dGVudHMgJnNpemUsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBh
Y2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgPSAwOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNl
dFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OkJveCAmYXJl
YSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWludDhf
dCAqcGl4ZWxzKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkSW1h
Z2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNv
bnN0IGdsOjpFeHRlbnRzICZzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXplX3QgaW1hZ2VT
aXplLCBjb25zdCB1aW50OF90ICpwaXhlbHMpID0gMDsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBz
ZXRDb21wcmVzc2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBn
bDo6Qm94ICZhcmVhLCBHTGVudW0gZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXpl
X3QgaW1hZ2VTaXplLCBjb25zdCB1aW50OF90ICpwaXhlbHMpID0gMDsKLQotICAgIHZpcnR1YWwg
Z2w6OkVycm9yIGNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGds
OjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICB2aXJ0
dWFsIGdsOjpFcnJvciBzZXRJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNr
U3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICpwaXhlbHMpID0gMDsKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBzZXRTdWJJbWFnZShDb250
ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
bGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAm
YXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBh
Y2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4
ZWxzKSA9IDA7CisKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkSW1hZ2UoQ29u
dGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBh
Y2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFn
ZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QgKnBpeGVscykgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldENvbXByZXNzZWRT
dWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5w
YWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGltYWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSA9IDA7CisKKyAgICB2aXJ0dWFsIGds
OjpFcnJvciBjb3B5SW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpID0gMDsKLSAgICB2aXJ0dWFs
IGdsOjpFcnJvciBjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25z
dCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVh
LAorICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNvcHlTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4
dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmc291cmNlQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpID0gMDsKIAotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNv
cHlUZXh0dXJlKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBj
b3B5VGV4dHVyZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBz
b3VyY2VMZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFj
a0ZsaXBZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJl
bXVsdGlwbHlBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVu
cGFja1VubXVsdGlwbHlBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6VGV4dHVyZSAqc291cmNlKTsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBjb3B5U3Vi
VGV4dHVyZShjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgIHZpcnR1YWwgZ2w6OkVy
cm9yIGNvcHlTdWJUZXh0dXJlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VMZXZlbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VB
cmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrRmxp
cFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVt
dWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
dW5wYWNrVW5tdWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpOwogCi0gICAgdmlydHVhbCBnbDo6RXJyb3Ig
Y29weUNvbXByZXNzZWRUZXh0dXJlKGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpOworICAgIHZp
cnR1YWwgZ2w6OkVycm9yIGNvcHlDb21wcmVzc2VkVGV4dHVyZShDb250ZXh0SW1wbCAqY29udGV4
dEltcGwsIGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpOworCisgICAgdmlydHVhbCBnbDo6RXJy
b3Igc2V0U3RvcmFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGxldmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBz
ZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbEZv
cm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpID0gMDsKKyAgICB2aXJ0dWFsIGdsOjpFcnJv
ciBzZXRTdG9yYWdlTXVsdGlzYW1wbGUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVy
bmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIGZpeGVkU2FtcGxlTG9jYXRpb25zKSA9IDA7CiAKICAgICB2
aXJ0dWFsIGdsOjpFcnJvciBzZXRFR0xJbWFnZVRhcmdldChHTGVudW0gdGFyZ2V0LCBlZ2w6Oklt
YWdlICppbWFnZSkgPSAwOwogCkBAIC04Myw3ICsxMzYsNyBAQCBjbGFzcyBUZXh0dXJlSW1wbCA6
IHB1YmxpYyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN0cmVhbSAqc3RyZWFtLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpTdHJlYW06OkdMVGV4dHVyZURl
c2NyaXB0aW9uICZkZXNjKSA9IDA7CiAKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZW5lcmF0ZU1p
cG1hcCgpID0gMDsKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcChDb250ZXh0
SW1wbCAqY29udGV4dEltcGwpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRCYXNlTGV2ZWwo
R0x1aW50IGJhc2VMZXZlbCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGxfbW9jay5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsX21vY2suaApp
bmRleCBkN2Y4OTZjNDE0ZjMzZjQ3MDQ1NWUxMzcwY2MyYzQ3NDk3MTY2MzM4Li4xNDhjY2FiYzFl
YjdmM2Q0ZDg1NzJhZDVjYzE1ODgwYzVhNmEzMmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGxfbW9jay5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9UZXh0dXJlSW1w
bF9tb2NrLmgKQEAgLTE5LDM4ICsxOSwxMDMgQEAgbmFtZXNwYWNlIHJ4CiBjbGFzcyBNb2NrVGV4
dHVyZUltcGwgOiBwdWJsaWMgVGV4dHVyZUltcGwKIHsKICAgcHVibGljOgotICAgIE1vY2tUZXh0
dXJlSW1wbCgpIDogVGV4dHVyZUltcGwoZ2w6OlRleHR1cmVTdGF0ZShHTF9URVhUVVJFXzJEKSkg
e30KKyAgICBNb2NrVGV4dHVyZUltcGwoKSA6IFRleHR1cmVJbXBsKG1Nb2NrU3RhdGUpLCBtTW9j
a1N0YXRlKEdMX1RFWFRVUkVfMkQpIHt9CiAgICAgdmlydHVhbCB+TW9ja1RleHR1cmVJbXBsKCkg
eyBkZXN0cnVjdG9yKCk7IH0KLSAgICBNT0NLX01FVEhPRDgoc2V0SW1hZ2UsIGdsOjpFcnJvcihH
TGVudW0sIHNpemVfdCwgR0xlbnVtLCBjb25zdCBnbDo6RXh0ZW50cyAmLCBHTGVudW0sIEdMZW51
bSwgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJiwgY29uc3QgdWludDhfdCAqKSk7Ci0gICAg
TU9DS19NRVRIT0Q3KHNldFN1YkltYWdlLCBnbDo6RXJyb3IoR0xlbnVtLCBzaXplX3QsIGNvbnN0
IGdsOjpCb3ggJiwgR0xlbnVtLCBHTGVudW0sIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICYs
IGNvbnN0IHVpbnQ4X3QgKikpOwotICAgIE1PQ0tfTUVUSE9ENyhzZXRDb21wcmVzc2VkSW1hZ2Us
IGdsOjpFcnJvcihHTGVudW0sIHNpemVfdCwgR0xlbnVtLCBjb25zdCBnbDo6RXh0ZW50cyAmLCBj
b25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmLCBzaXplX3QsIGNvbnN0IHVpbnQ4X3QgKikpOwot
ICAgIE1PQ0tfTUVUSE9ENyhzZXRDb21wcmVzc2VkU3ViSW1hZ2UsIGdsOjpFcnJvcihHTGVudW0s
IHNpemVfdCwgY29uc3QgZ2w6OkJveCAmLCBHTGVudW0sIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0
YXRlICYsIHNpemVfdCwgY29uc3QgdWludDhfdCAqKSk7Ci0gICAgTU9DS19NRVRIT0Q1KGNvcHlJ
bWFnZSwgZ2w6OkVycm9yKEdMZW51bSwgc2l6ZV90LCBjb25zdCBnbDo6UmVjdGFuZ2xlICYsIEdM
ZW51bSwgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICopKTsKLSAgICBNT0NLX01FVEhPRDUoY29weVN1
YkltYWdlLCBnbDo6RXJyb3IoR0xlbnVtLCBzaXplX3QsIGNvbnN0IGdsOjpPZmZzZXQgJiwgY29u
c3QgZ2w6OlJlY3RhbmdsZSAmLCBjb25zdCBnbDo6RnJhbWVidWZmZXIgKikpOwotICAgIE1PQ0tf
TUVUSE9ENihjb3B5VGV4dHVyZSwgZ2w6OkVycm9yKEdMZW51bSwgR0xlbnVtLCBib29sLCBib29s
LCBib29sLCBjb25zdCBnbDo6VGV4dHVyZSAqKSk7Ci0gICAgTU9DS19NRVRIT0Q2KGNvcHlTdWJU
ZXh0dXJlLAotICAgICAgICAgICAgICAgICBnbDo6RXJyb3IoY29uc3QgZ2w6Ok9mZnNldCAmLAor
ICAgIE1PQ0tfTUVUSE9EOShzZXRJbWFnZSwKKyAgICAgICAgICAgICAgICAgZ2w6OkVycm9yKENv
bnRleHRJbXBsICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVs
VW5wYWNrU3RhdGUgJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KikpOworICAgIE1PQ0tfTUVUSE9EOChzZXRTdWJJbWFnZSwKKyAgICAgICAgICAgICAgICAgZ2w6
OkVycm9yKENvbnRleHRJbXBsICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6Qm94ICYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqKSk7CisgICAgTU9DS19NRVRIT0Q4KHNldENvbXBy
ZXNzZWRJbWFnZSwKKyAgICAgICAgICAgICAgICAgZ2w6OkVycm9yKENvbnRleHRJbXBsICosCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QgKikpOworICAgIE1PQ0tfTUVUSE9EOChzZXRDb21wcmVzc2VkU3ViSW1hZ2UsCisgICAg
ICAgICAgICAgICAgIGdsOjpFcnJvcihDb250ZXh0SW1wbCAqLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlBpeGVsVW5wYWNrU3RhdGUgJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKikpOworICAgIE1PQ0tf
TUVUSE9ENihjb3B5SW1hZ2UsCisgICAgICAgICAgICAgICAgIGdsOjpFcnJvcihDb250ZXh0SW1w
bCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmUgKikpOwotICAg
IE1PQ0tfTUVUSE9EMShjb3B5Q29tcHJlc3NlZFRleHR1cmUsIGdsOjpFcnJvcihjb25zdCBnbDo6
VGV4dHVyZSAqc291cmNlKSk7Ci0gICAgTU9DS19NRVRIT0Q0KHNldFN0b3JhZ2UsIGdsOjpFcnJv
cihHTGVudW0sIHNpemVfdCwgR0xlbnVtLCBjb25zdCBnbDo6RXh0ZW50cyAmKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6RnJhbWVidWZmZXIgKikpOworICAgIE1PQ0tfTUVUSE9ENihjb3B5U3ViSW1hZ2Us
CisgICAgICAgICAgICAgICAgIGdsOjpFcnJvcihDb250ZXh0SW1wbCAqLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICopKTsKKyAgICBNT0NLX01FVEhP
RDEwKGNvcHlUZXh0dXJlLAorICAgICAgICAgICAgICAgICAgZ2w6OkVycm9yKENvbnRleHRJbXBs
ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZSAq
KSk7CisgICAgTU9DS19NRVRIT0QxMChjb3B5U3ViVGV4dHVyZSwKKyAgICAgICAgICAgICAgICAg
IGdsOjpFcnJvcihDb250ZXh0SW1wbCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVj
dGFuZ2xlICYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2ws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmUgKikpOworICAg
IE1PQ0tfTUVUSE9EMihjb3B5Q29tcHJlc3NlZFRleHR1cmUsIGdsOjpFcnJvcihDb250ZXh0SW1w
bCAqLCBjb25zdCBnbDo6VGV4dHVyZSAqc291cmNlKSk7CisgICAgTU9DS19NRVRIT0Q1KHNldFN0
b3JhZ2UsIGdsOjpFcnJvcihDb250ZXh0SW1wbCAqLCBHTGVudW0sIHNpemVfdCwgR0xlbnVtLCBj
b25zdCBnbDo6RXh0ZW50cyAmKSk7CiAgICAgTU9DS19NRVRIT0QzKHNldEltYWdlRXh0ZXJuYWws
CiAgICAgICAgICAgICAgICAgIGdsOjpFcnJvcihHTGVudW0sIGVnbDo6U3RyZWFtICosIGNvbnN0
IGVnbDo6U3RyZWFtOjpHTFRleHR1cmVEZXNjcmlwdGlvbiAmKSk7CiAgICAgTU9DS19NRVRIT0Qy
KHNldEVHTEltYWdlVGFyZ2V0LCBnbDo6RXJyb3IoR0xlbnVtLCBlZ2w6OkltYWdlICopKTsKLSAg
ICBNT0NLX01FVEhPRDAoZ2VuZXJhdGVNaXBtYXAsIGdsOjpFcnJvcigpKTsKKyAgICBNT0NLX01F
VEhPRDEoZ2VuZXJhdGVNaXBtYXAsIGdsOjpFcnJvcihDb250ZXh0SW1wbCAqKSk7CiAgICAgTU9D
S19NRVRIT0QxKGJpbmRUZXhJbWFnZSwgdm9pZChlZ2w6OlN1cmZhY2UgKikpOwogICAgIE1PQ0tf
TUVUSE9EMChyZWxlYXNlVGV4SW1hZ2UsIHZvaWQodm9pZCkpOwogCiAgICAgTU9DS19NRVRIT0Qy
KGdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQsIGdsOjpFcnJvcihjb25zdCBnbDo6RnJhbWVidWZm
ZXJBdHRhY2htZW50OjpUYXJnZXQgJiwgRnJhbWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0
ICoqKSk7CiAKKyAgICBNT0NLX01FVEhPRDYoc2V0U3RvcmFnZU11bHRpc2FtcGxlLAorICAgICAg
ICAgICAgICAgICBnbDo6RXJyb3IoQ29udGV4dEltcGwgKiwgR0xlbnVtLCBHTHNpemVpLCBHTGlu
dCwgY29uc3QgZ2w6OkV4dGVudHMgJiwgR0xib29sZWFuKSk7CisKICAgICBNT0NLX01FVEhPRDEo
c2V0QmFzZUxldmVsLCB2b2lkKEdMdWludCkpOwogCiAgICAgTU9DS19NRVRIT0QxKHN5bmNTdGF0
ZSwgdm9pZChjb25zdCBnbDo6VGV4dHVyZTo6RGlydHlCaXRzICYpKTsKIAogICAgIE1PQ0tfTUVU
SE9EMChkZXN0cnVjdG9yLCB2b2lkKCkpOworCisgIHByb3RlY3RlZDoKKyAgICBnbDo6VGV4dHVy
ZVN0YXRlIG1Nb2NrU3RhdGU7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvVmVydGV4QXJyYXlJbXBsLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvVmVydGV4QXJyYXlJbXBsLmgK
aW5kZXggYjFiZTM2OTFhZGU3M2I1NDVjYWNjYzM5NWQ0NjExYTBmNDI1OTI4Ni4uYTkzM2JhMmY1
YjViOTYwMWI1NmNkZDQ4NmQxOTE0MjdjZmU1MTk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1ZlcnRleEFycmF5SW1wbC5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9WZXJ0ZXhBcnJh
eUltcGwuaApAQCAtMTUsMTMgKzE1LDE0IEBACiAKIG5hbWVzcGFjZSByeAogeworY2xhc3MgQ29u
dGV4dEltcGw7CiAKIGNsYXNzIFZlcnRleEFycmF5SW1wbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQog
ewogICBwdWJsaWM6CiAgICAgVmVydGV4QXJyYXlJbXBsKGNvbnN0IGdsOjpWZXJ0ZXhBcnJheVN0
YXRlICZkYXRhKSA6IG1EYXRhKGRhdGEpIHt9CiAgICAgdmlydHVhbCB+VmVydGV4QXJyYXlJbXBs
KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6VmVydGV4QXJyYXk6
OkRpcnR5Qml0cyAmZGlydHlCaXRzKSB7fQorICAgIHZpcnR1YWwgdm9pZCBzeW5jU3RhdGUoQ29u
dGV4dEltcGwgKmNvbnRleHRJbXBsLCBjb25zdCBnbDo6VmVydGV4QXJyYXk6OkRpcnR5Qml0cyAm
ZGlydHlCaXRzKSB7fQogICBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgZ2w6OlZlcnRleEFycmF5U3Rh
dGUgJm1EYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9hbmdsZV9mb3JtYXQucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvYW5nbGVfZm9ybWF0LnB5CmluZGV4IGU0NmJjN2RiYTk5
YjE0YjYxOWE0MWE0OGFmZGE5ODUyOWMxYjBlNmEuLjQzY2E2ODRjMzEwZmFlMmUwZjc0ODFkOGU5
NjY5OWY3MmMyMWRhMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9hbmdsZV9mb3JtYXQucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2FuZ2xlX2Zvcm1hdC5weQpAQCAtOCw2ICs4LDcg
QEAKIAogaW1wb3J0IGpzb24KIGltcG9ydCBvcworaW1wb3J0IHJlCiAKIGRlZiByZWplY3RfZHVw
bGljYXRlX2tleXMocGFpcnMpOgogICAgIGZvdW5kX2tleXMgPSB7fQpAQCAtMzQsMTIgKzM1LDEz
NiBAQCBkZWYgbG9hZF9pbnZlcnNlX3RhYmxlKHBhdGgpOgogICAgIHJlamVjdF9kdXBsaWNhdGVf
a2V5cyhwYWlycykKICAgICByZXR1cm4geyBhbmdsZTogZ2wgZm9yIGdsLCBhbmdsZSBpbiBwYWly
cyB9CiAKLWRlZiBsb2FkX3dpdGhfb3ZlcnJpZGUob3ZlcnJpZGVfcGF0aCk6CitkZWYgbG9hZF93
aXRob3V0X292ZXJyaWRlKCk6CiAgICAgbWFwX3BhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5k
aXJuYW1lKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKSwgJ2FuZ2xlX2Zvcm1hdF9tYXAuanNv
bicpCi0gICAgcmVzdWx0cyA9IGxvYWRfZm9yd2FyZF90YWJsZShtYXBfcGF0aCkKKyAgICByZXR1
cm4gbG9hZF9mb3J3YXJkX3RhYmxlKG1hcF9wYXRoKQorCitkZWYgbG9hZF93aXRoX292ZXJyaWRl
KG92ZXJyaWRlX3BhdGgpOgorICAgIHJlc3VsdHMgPSBsb2FkX3dpdGhvdXRfb3ZlcnJpZGUoKQog
ICAgIG92ZXJyaWRlcyA9IGxvYWRfanNvbihvdmVycmlkZV9wYXRoKQogCiAgICAgZm9yIGssIHYg
aW4gb3ZlcnJpZGVzLml0ZXJpdGVtcygpOgogICAgICAgICByZXN1bHRzW2tdID0gdgogCiAgICAg
cmV0dXJuIHJlc3VsdHMKKworZGVmIGdldF9jb21wb25lbnRfdHlwZShmb3JtYXRfaWQpOgorICAg
IGlmICJTTk9STSIgaW4gZm9ybWF0X2lkOgorICAgICAgICByZXR1cm4gInNub3JtIgorICAgIGVs
aWYgIlVOT1JNIiBpbiBmb3JtYXRfaWQ6CisgICAgICAgIHJldHVybiAidW5vcm0iCisgICAgZWxp
ZiAiRkxPQVQiIGluIGZvcm1hdF9pZDoKKyAgICAgICAgcmV0dXJuICJmbG9hdCIKKyAgICBlbGlm
ICJVSU5UIiBpbiBmb3JtYXRfaWQ6CisgICAgICAgIHJldHVybiAidWludCIKKyAgICBlbGlmICJT
SU5UIiBpbiBmb3JtYXRfaWQ6CisgICAgICAgIHJldHVybiAiaW50IgorICAgIGVsaWYgZm9ybWF0
X2lkID09ICJOT05FIjoKKyAgICAgICAgcmV0dXJuICJub25lIgorICAgIGVsaWYgIlNSR0IiIGlu
IGZvcm1hdF9pZDoKKyAgICAgICAgcmV0dXJuICJ1bm9ybSIKKyAgICBlbGlmIGZvcm1hdF9pZCA9
PSAiUjlHOUI5RTVfU0hBUkVERVhQIjoKKyAgICAgICAgcmV0dXJuICJmbG9hdCIKKyAgICBlbHNl
OgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbmtub3duIGNvbXBvbmVudCB0eXBlIGZvciAi
ICsgZm9ybWF0X2lkKQorCitkZWYgZ2V0X2NoYW5uZWxfdG9rZW5zKGZvcm1hdF9pZCk6CisgICAg
ciA9IHJlLmNvbXBpbGUocicoW0FCREdMUlNdW1xkXSspJykKKyAgICByZXR1cm4gZmlsdGVyKHIu
bWF0Y2gsIHIuc3BsaXQoZm9ybWF0X2lkKSkKKworZGVmIGdldF9jaGFubmVscyhmb3JtYXRfaWQp
OgorICAgIGNoYW5uZWxzID0gJycKKyAgICB0b2tlbnMgPSBnZXRfY2hhbm5lbF90b2tlbnMoZm9y
bWF0X2lkKQorICAgIGlmIGxlbih0b2tlbnMpID09IDA6CisgICAgICAgIHJldHVybiBOb25lCisg
ICAgZm9yIHRva2VuIGluIHRva2VuczoKKyAgICAgICAgY2hhbm5lbHMgKz0gdG9rZW5bMF0ubG93
ZXIoKQorCisgICAgcmV0dXJuIGNoYW5uZWxzCisKK2RlZiBnZXRfYml0cyhmb3JtYXRfaWQpOgor
ICAgIGJpdHMgPSB7fQorICAgIHRva2VucyA9IGdldF9jaGFubmVsX3Rva2Vucyhmb3JtYXRfaWQp
CisgICAgaWYgbGVuKHRva2VucykgPT0gMDoKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBmb3Ig
dG9rZW4gaW4gdG9rZW5zOgorICAgICAgICBiaXRzW3Rva2VuWzBdXSA9IGludCh0b2tlblsxOl0p
CisgICAgcmV0dXJuIGJpdHMKKworZGVmIGdldF9mb3JtYXRfaW5mbyhmb3JtYXRfaWQpOgorICAg
IHJldHVybiBnZXRfY29tcG9uZW50X3R5cGUoZm9ybWF0X2lkKSwgZ2V0X2JpdHMoZm9ybWF0X2lk
KSwgZ2V0X2NoYW5uZWxzKGZvcm1hdF9pZCkKKworIyBUT0RPKG9ldHVhaG8pOiBFeHBhbmQgdGhp
cyBjb2RlIHNvIHRoYXQgaXQgY291bGQgZ2VuZXJhdGUgdGhlIGdsIGZvcm1hdCBpbmZvIHRhYmxl
cyBhcyB3ZWxsLgorZGVmIGdsX2Zvcm1hdF9jaGFubmVscyhpbnRlcm5hbF9mb3JtYXQpOgorICAg
IGlmIGludGVybmFsX2Zvcm1hdCA9PSAnR0xfQkdSNV9BMV9BTkdMRVgnOgorICAgICAgICByZXR1
cm4gJ2JncmEnCisgICAgaWYgaW50ZXJuYWxfZm9ybWF0ID09ICdHTF9SMTFGX0cxMUZfQjEwRic6
CisgICAgICAgIHJldHVybiAncmdiJworICAgIGlmIGludGVybmFsX2Zvcm1hdCA9PSAnR0xfUkdC
NV9BMSc6CisgICAgICAgIHJldHVybiAncmdiYScKKyAgICBpZiBpbnRlcm5hbF9mb3JtYXQuZmlu
ZCgnR0xfUkdCMTBfQTInKSA9PSAwOgorICAgICAgICByZXR1cm4gJ3JnYmEnCisKKyAgICBjaGFu
bmVsc19wYXR0ZXJuID0gcmUuY29tcGlsZSgnR0xfKENPTVBSRVNTRURfKT8oU0lHTkVEXyk/KEVU
Q1xkXyk/KFtBLVpdKyknKQorICAgIG1hdGNoID0gcmUuc2VhcmNoKGNoYW5uZWxzX3BhdHRlcm4s
IGludGVybmFsX2Zvcm1hdCkKKyAgICBjaGFubmVsc19zdHJpbmcgPSBtYXRjaC5ncm91cCg0KQor
CisgICAgaWYgY2hhbm5lbHNfc3RyaW5nID09ICdBTFBIQSc6CisgICAgICAgIHJldHVybiAnYScK
KyAgICBpZiBjaGFubmVsc19zdHJpbmcgPT0gJ0xVTUlOQU5DRSc6CisgICAgICAgIGlmIChpbnRl
cm5hbF9mb3JtYXQuZmluZCgnQUxQSEEnKSA+PSAwKToKKyAgICAgICAgICAgIHJldHVybiAnbGEn
CisgICAgICAgIHJldHVybiAnbCcKKyAgICBpZiBjaGFubmVsc19zdHJpbmcgPT0gJ1NSR0InOgor
ICAgICAgICBpZiAoaW50ZXJuYWxfZm9ybWF0LmZpbmQoJ0FMUEhBJykgPj0gMCk6CisgICAgICAg
ICAgICByZXR1cm4gJ3JnYmEnCisgICAgICAgIHJldHVybiAncmdiJworICAgIGlmIGNoYW5uZWxz
X3N0cmluZyA9PSAnREVQVEgnOgorICAgICAgICBpZiAoaW50ZXJuYWxfZm9ybWF0LmZpbmQoJ1NU
RU5DSUwnKSA+PSAwKToKKyAgICAgICAgICAgIHJldHVybiAnZHMnCisgICAgICAgIHJldHVybiAn
ZCcKKyAgICBpZiBjaGFubmVsc19zdHJpbmcgPT0gJ1NURU5DSUwnOgorICAgICAgICByZXR1cm4g
J3MnCisgICAgcmV0dXJuIGNoYW5uZWxzX3N0cmluZy5sb3dlcigpCisKK2RlZiBnZXRfaW50ZXJu
YWxfZm9ybWF0X2luaXRpYWxpemVyKGludGVybmFsX2Zvcm1hdCwgZm9ybWF0X2lkKToKKyAgICBn
bF9jaGFubmVscyA9IGdsX2Zvcm1hdF9jaGFubmVscyhpbnRlcm5hbF9mb3JtYXQpCisgICAgZ2xf
Zm9ybWF0X25vX2FscGhhID0gZ2xfY2hhbm5lbHMgPT0gJ3JnYicgb3IgZ2xfY2hhbm5lbHMgPT0g
J2wnCisgICAgY29tcG9uZW50X3R5cGUsIGJpdHMsIGNoYW5uZWxzID0gZ2V0X2Zvcm1hdF9pbmZv
KGZvcm1hdF9pZCkKKworICAgIGlmIG5vdCBnbF9mb3JtYXRfbm9fYWxwaGEgb3IgY2hhbm5lbHMg
IT0gJ3JnYmEnOgorICAgICAgICByZXR1cm4gJ251bGxwdHInCisKKyAgICBlbGlmICdCQzFfJyBp
biBmb3JtYXRfaWQ6CisgICAgICAgICMgQkMxIGlzIGEgc3BlY2lhbCBjYXNlIHNpbmNlIHRoZSB0
ZXh0dXJlIGRhdGEgZGV0ZXJtaW5lcyB3aGV0aGVyIGVhY2ggYmxvY2sgaGFzIGFuIGFscGhhIGNo
YW5uZWwgb3Igbm90LgorICAgICAgICAjIFRoaXMgaWYgc3RhdGVtZW50IGlzIGhpdCBieSBDT01Q
UkVTU0VEX1JHQl9TM1RDX0RYVDEsIHdoaWNoIGlzIGEgYml0IG9mIGEgbWVzcy4KKyAgICAgICAg
IyBUT0RPKG9ldHVhaG8pOiBMb29rIGludG8gd2hldGhlciBDT01QUkVTU0VEX1JHQl9TM1RDX0RY
VDEgd29ya3MgcmlnaHQgaW4gZ2VuZXJhbC4KKyAgICAgICAgIyBSZWZlcmVuY2U6IGh0dHBzOi8v
d3d3Lm9wZW5nbC5vcmcvcmVnaXN0cnkvc3BlY3MvRVhUL3RleHR1cmVfY29tcHJlc3Npb25fczN0
Yy50eHQKKyAgICAgICAgcmV0dXJuICdudWxscHRyJworCisgICAgZWxpZiBjb21wb25lbnRfdHlw
ZSA9PSAndWludCcgYW5kIGJpdHNbJ1InXSA9PSA4OgorICAgICAgICByZXR1cm4gJ0luaXRpYWxp
emU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweDAxPicKKyAgICBl
bGlmIGNvbXBvbmVudF90eXBlID09ICd1bm9ybScgYW5kIGJpdHNbJ1InXSA9PSA4OgorICAgICAg
ICByZXR1cm4gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAw
eDAwLCAweEZGPicKKyAgICBlbGlmIGNvbXBvbmVudF90eXBlID09ICd1bm9ybScgYW5kIGJpdHNb
J1InXSA9PSAxNjoKKyAgICAgICAgcmV0dXJuICdJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1
Ynl0ZSwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHhGRkZGPicKKyAgICBlbGlmIGNvbXBvbmVu
dF90eXBlID09ICdpbnQnIGFuZCBiaXRzWydSJ10gPT0gODoKKyAgICAgICAgcmV0dXJuICdJbml0
aWFsaXplNENvbXBvbmVudERhdGE8R0xieXRlLCAweDAwLCAweDAwLCAweDAwLCAweDAxPicKKyAg
ICBlbGlmIGNvbXBvbmVudF90eXBlID09ICdzbm9ybScgYW5kIGJpdHNbJ1InXSA9PSA4OgorICAg
ICAgICByZXR1cm4gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGJ5dGUsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4N0Y+JworICAgIGVsaWYgY29tcG9uZW50X3R5cGUgPT0gJ3Nub3JtJyBhbmQgYml0
c1snUiddID09IDE2OgorICAgICAgICByZXR1cm4gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0YTxH
THVzaG9ydCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg3RkZGPicKKyAgICBlbGlmIGNvbXBv
bmVudF90eXBlID09ICdmbG9hdCcgYW5kIGJpdHNbJ1InXSA9PSAxNjoKKyAgICAgICAgcmV0dXJu
ICdJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xoYWxmLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAw
LCBnbDo6RmxvYXQxNk9uZT4nCisgICAgZWxpZiBjb21wb25lbnRfdHlwZSA9PSAndWludCcgYW5k
IGJpdHNbJ1InXSA9PSAxNjoKKyAgICAgICAgcmV0dXJuICdJbml0aWFsaXplNENvbXBvbmVudERh
dGE8R0x1c2hvcnQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMT4nCisgICAgZWxpZiBj
b21wb25lbnRfdHlwZSA9PSAnaW50JyBhbmQgYml0c1snUiddID09IDE2OgorICAgICAgICByZXR1
cm4gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHNob3J0LCAweDAwMDAsIDB4MDAwMCwgMHgw
MDAwLCAweDAwMDE+JworICAgIGVsaWYgY29tcG9uZW50X3R5cGUgPT0gJ2Zsb2F0JyBhbmQgYml0
c1snUiddID09IDMyOgorICAgICAgICByZXR1cm4gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0YTxH
TGZsb2F0LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCBnbDo6RmxvYXQzMk9u
ZT4nCisgICAgZWxpZiBjb21wb25lbnRfdHlwZSA9PSAnaW50JyBhbmQgYml0c1snUiddID09IDMy
OgorICAgICAgICByZXR1cm4gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGludCwgMHgwMDAw
MDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMT4nCisgICAgZWxpZiBjb21w
b25lbnRfdHlwZSA9PSAndWludCcgYW5kIGJpdHNbJ1InXSA9PSAzMjoKKyAgICAgICAgcmV0dXJu
ICdJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1aW50LCAweDAwMDAwMDAwLCAweDAwMDAwMDAw
LCAweDAwMDAwMDAwLCAweDAwMDAwMDAxPicKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCd3YXJuaW5nOiBpbnRlcm5hbCBmb3JtYXQgaW5pdGlhbGl6ZXIgY291bGQgbm90IGJl
IGdlbmVyYXRlZCBhbmQgbWF5IGJlIG5lZWRlZCBmb3IgJyArIGludGVybmFsX2Zvcm1hdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9h
bmdsZV9mb3JtYXRfbWFwLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvYW5nbGVfZm9ybWF0X21hcC5qc29uCmluZGV4IDA2NGM0MDBhY2UzNzhlYzY0
ODkxNWQ4YTcxMDg0ZDYyODYzN2RhNTEuLmY3YWQyYmRkNTU4ZWU5ZjY5ZWVjYmU3YTBkODhhMDMw
ZTJhOTliMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9hbmdsZV9mb3JtYXRfbWFwLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2FuZ2xlX2Zvcm1hdF9tYXAuanNvbgpAQCAtNDks
NiArNDksMTAgQEAKICAgWyAiR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMiLCAi
RVRDMl9SOEc4QjhBOF9TUkdCX0JMT0NLIiBdLAogICBbICJHTF9DT01QUkVTU0VEX1NSR0I4X0VU
QzIiLCAiRVRDMl9SOEc4QjhfU1JHQl9CTE9DSyIgXSwKICAgWyAiR0xfQ09NUFJFU1NFRF9TUkdC
OF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIiLCAiRVRDMl9SOEc4QjhBMV9TUkdCX0JMT0NLIiBd
LAorICBbICJHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVCIsICJCQzFfUkdC
QV9VTk9STV9TUkdCX0JMT0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNU
Q19EWFQzX0VYVCIsICJCQzJfUkdCQV9VTk9STV9TUkdCX0JMT0NLIiBdLAorICBbICJHTF9DT01Q
UkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVCIsICJCQzNfUkdCQV9VTk9STV9TUkdCX0JM
T0NLIiBdLAorICBbICJHTF9DT01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVCIsICJCQzFfUkdC
X1VOT1JNX1NSR0JfQkxPQ0siIF0sCiAgIFsgIkdMX0RFUFRIMjRfU1RFTkNJTDgiLCAiRDI0X1VO
T1JNX1M4X1VJTlQiIF0sCiAgIFsgIkdMX0RFUFRIMzJGX1NURU5DSUw4IiwgIkQzMl9GTE9BVF9T
OFgyNF9VSU5UIiBdLAogICBbICJHTF9ERVBUSF9DT01QT05FTlQxNiIsICJEMTZfVU5PUk0iIF0s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL0J1ZmZlckQzRC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL0J1ZmZlckQzRC5jcHAKaW5kZXggNGRkY2IzMDI0OWI3MzBlNmY1YWJm
YjY1ZmY3YmUyNjQ1MjYxNDc4My4uY2IwYmQyZTk0MDg4ZWMyYzI1ZWRjYWY5NjM3ODVkMjZjN2Q3
NDFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9CdWZmZXJEM0QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvQnVmZmVyRDNELmNwcApAQCAtMTksOCArMTksOCBAQCBu
YW1lc3BhY2UgcngKIAogdW5zaWduZWQgaW50IEJ1ZmZlckQzRDo6bU5leHRTZXJpYWwgPSAxOwog
Ci1CdWZmZXJEM0Q6OkJ1ZmZlckQzRChCdWZmZXJGYWN0b3J5RDNEICpmYWN0b3J5KQotICAgIDog
QnVmZmVySW1wbCgpLAorQnVmZmVyRDNEOjpCdWZmZXJEM0QoY29uc3QgZ2w6OkJ1ZmZlclN0YXRl
ICZzdGF0ZSwgQnVmZmVyRmFjdG9yeUQzRCAqZmFjdG9yeSkKKyAgICA6IEJ1ZmZlckltcGwoc3Rh
dGUpLAogICAgICAgbUZhY3RvcnkoZmFjdG9yeSksCiAgICAgICBtU3RhdGljSW5kZXhCdWZmZXIo
bnVsbHB0ciksCiAgICAgICBtU3RhdGljQnVmZmVyQ2FjaGVUb3RhbFNpemUoMCksCkBAIC05MCw3
ICs5MCw4IEBAIFN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlICpCdWZmZXJEM0Q6OmdldFN0YXRp
Y0luZGV4QnVmZmVyKCkKICAgICByZXR1cm4gbVN0YXRpY0luZGV4QnVmZmVyOwogfQogCi1TdGF0
aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKkJ1ZmZlckQzRDo6Z2V0U3RhdGljVmVydGV4QnVmZmVy
KGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSkKK1N0YXRpY1ZlcnRleEJ1ZmZl
ckludGVyZmFjZSAqQnVmZmVyRDNEOjpnZXRTdGF0aWNWZXJ0ZXhCdWZmZXIoY29uc3QgZ2w6OlZl
cnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VmVydGV4QmluZGluZyAm
YmluZGluZykKIHsKICAgICBpZiAobVN0YXRpY1ZlcnRleEJ1ZmZlcnMuZW1wdHkoKSkKICAgICB7
CkBAIC0xMTEsNyArMTEyLDcgQEAgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlICpCdWZmZXJE
M0Q6OmdldFN0YXRpY1ZlcnRleEJ1ZmZlcihjb25zdCBnbDo6VmVydGV4QXQKICAgICAvLyBJZiB0
aGVyZSBpcyBhIGNhY2hlZCBzdGF0aWMgYnVmZmVyIHRoYXQgYWxyZWFkeSBjb250YWlucyB0aGUg
YXR0cmlidXRlLCB0aGVuIHJldHVybiBpdAogICAgIGZvciAoY29uc3QgYXV0byAmc3RhdGljQnVm
ZmVyIDogbVN0YXRpY1ZlcnRleEJ1ZmZlcnMpCiAgICAgewotICAgICAgICBpZiAoc3RhdGljQnVm
ZmVyLT5tYXRjaGVzQXR0cmlidXRlKGF0dHJpYnV0ZSkpCisgICAgICAgIGlmIChzdGF0aWNCdWZm
ZXItPm1hdGNoZXNBdHRyaWJ1dGUoYXR0cmlidXRlLCBiaW5kaW5nKSkKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY0J1ZmZlci5nZXQoKTsKICAgICAgICAgfQpAQCAtMTM0LDcg
KzEzNSw3IEBAIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSAqQnVmZmVyRDNEOjpnZXRTdGF0
aWNWZXJ0ZXhCdWZmZXIoY29uc3QgZ2w6OlZlcnRleEF0CiAKICAgICAvLyBBdCB0aGlzIHBvaW50
LCB3ZSBtdXN0IGNyZWF0ZSBhIG5ldyBzdGF0aWMgYnVmZmVyIGZvciB0aGUgYXR0cmlidXRlIGRh
dGEuCiAgICAgYXV0byBuZXdTdGF0aWNCdWZmZXIgPSBuZXcgU3RhdGljVmVydGV4QnVmZmVySW50
ZXJmYWNlKG1GYWN0b3J5KTsKLSAgICBuZXdTdGF0aWNCdWZmZXItPnNldEF0dHJpYnV0ZShhdHRy
aWJ1dGUpOworICAgIG5ld1N0YXRpY0J1ZmZlci0+c2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgYmlu
ZGluZyk7CiAgICAgbVN0YXRpY1ZlcnRleEJ1ZmZlcnMucHVzaF9iYWNrKHN0ZDo6dW5pcXVlX3B0
cjxTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U+KG5ld1N0YXRpY0J1ZmZlcikpOwogICAgIHJl
dHVybiBuZXdTdGF0aWNCdWZmZXI7CiB9CkBAIC0xODIsNyArMTgzLDcgQEAgZ2w6OkVycm9yIEJ1
ZmZlckQzRDo6Z2V0SW5kZXhSYW5nZShHTGVudW0gdHlwZSwKICAgICBBTkdMRV9UUlkoZ2V0RGF0
YSgmZGF0YSkpOwogCiAgICAgKm91dFJhbmdlID0gZ2w6OkNvbXB1dGVJbmRleFJhbmdlKHR5cGUs
IGRhdGEgKyBvZmZzZXQsIGNvdW50LCBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCk7Ci0gICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9
CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9CdWZmZXJEM0QuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvQnVmZmVyRDNELmgKaW5kZXggM2M0
M2MwMTY0ZmQ0ZDRiYjFmMTFkMzQzMzg4OThkZDBkY2NhYWQwMy4uZThhYmRjMzUzNjZmYjFkODkw
ZThkY2M0MzIzZDE2ZjlhNzEyMmYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9CdWZmZXJEM0QuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0J1ZmZlckQzRC5oCkBAIC0x
NSw2ICsxNSwxMiBAQAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAor
bmFtZXNwYWNlIGdsCit7CitzdHJ1Y3QgVmVydGV4QXR0cmlidXRlOworc3RydWN0IFZlcnRleEJp
bmRpbmc7Cit9CisKIG5hbWVzcGFjZSByeAogewogY2xhc3MgQnVmZmVyRmFjdG9yeUQzRDsKQEAg
LTMwLDcgKzM2LDcgQEAgZW51bSBjbGFzcyBEM0RCdWZmZXJVc2FnZQogY2xhc3MgQnVmZmVyRDNE
IDogcHVibGljIEJ1ZmZlckltcGwKIHsKICAgcHVibGljOgotICAgIEJ1ZmZlckQzRChCdWZmZXJG
YWN0b3J5RDNEICpmYWN0b3J5KTsKKyAgICBCdWZmZXJEM0QoY29uc3QgZ2w6OkJ1ZmZlclN0YXRl
ICZzdGF0ZSwgQnVmZmVyRmFjdG9yeUQzRCAqZmFjdG9yeSk7CiAgICAgdmlydHVhbCB+QnVmZmVy
RDNEKCk7CiAKICAgICB1bnNpZ25lZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3QgeyByZXR1cm4gbVNl
cmlhbDsgfQpAQCAtNDAsNyArNDYsMTAgQEAgY2xhc3MgQnVmZmVyRDNEIDogcHVibGljIEJ1ZmZl
ckltcGwKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBtYXJrVHJhbnNmb3JtRmVlZGJhY2tVc2FnZSgp
ID0gMDsKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXREYXRhKGNvbnN0IHVpbnQ4X3QgKipvdXRE
YXRhKSA9IDA7CiAKLSAgICBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKmdldFN0YXRpY1Zl
cnRleEJ1ZmZlcihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWJ1dGUpOworICAgIC8v
IFdhcm5pbmc6IHlvdSBzaG91bGQgZW5zdXJlIGJpbmRpbmcgcmVhbGx5IG1hdGNoZXMgYXR0cmli
LmJpbmRpbmdJbmRleCBiZWZvcmUgdXNpbmcgdGhpcworICAgIC8vIGZ1bmN0aW9uLgorICAgIFN0
YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSAqZ2V0U3RhdGljVmVydGV4QnVmZmVyKGNvbnN0IGds
OjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VmVydGV4QmluZGluZyAmYmlu
ZGluZyk7CiAgICAgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UgKmdldFN0YXRpY0luZGV4QnVm
ZmVyKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZVN0YXRpY0RhdGEoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
Q29tcGlsZXJEM0QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvQ29tcGlsZXJEM0QuaAppbmRleCA4ZjQzMzQ5NjNkMWFlZGM4ZjQ4YTY4ZDI2ODYw
MjRjYTAxZTA5MjM5Li43YWQ2ZjA3NDAwOGQ2ZTkxYzVhNjM0YmU2YWE5YjVlNWVhZjhlMzZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL0NvbXBpbGVyRDNELmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9Db21waWxlckQzRC5oCkBAIC0yMSw3ICsyMSw3IEBAIGNsYXNzIENv
bXBpbGVyRDNEIDogcHVibGljIENvbXBpbGVySW1wbAogICAgIENvbXBpbGVyRDNEKFNoU2hhZGVy
T3V0cHV0IHRyYW5zbGF0b3JPdXRwdXRUeXBlKTsKICAgICB+Q29tcGlsZXJEM0QoKSBvdmVycmlk
ZSB7fQogCi0gICAgZ2w6OkVycm9yIHJlbGVhc2UoKSBvdmVycmlkZSB7IHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOyB9CisgICAgZ2w6OkVycm9yIHJlbGVhc2UoKSBvdmVycmlkZSB7IHJl
dHVybiBnbDo6Tm9FcnJvcigpOyB9CiAgICAgU2hTaGFkZXJPdXRwdXQgZ2V0VHJhbnNsYXRvck91
dHB1dFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtVHJhbnNsYXRvck91dHB1dFR5cGU7
IH0KIAogICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9EaXNwbGF5RDNELmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRGlzcGxheUQzRC5jcHAKaW5kZXggZjVj
Yzk3ZTk1MTQ0MzNlMTFiNTUyMjY3MzNhNGRiZmMxZWMzYmUwMC4uYWI5ODc5YTQ5MzI3ZTRlMmI2
MjAyMDc5NjE3NThiZmQxYTE1YmJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9EaXNwbGF5RDNELmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0Rpc3BsYXlEM0QuY3Bw
CkBAIC0yOSwxMCArMjksNiBAQAogIyAgIGluY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9SZW5kZXJlcjExLmgiCiAjZW5kaWYgLy8gQU5HTEVfRU5BQkxFX0QzRDExCiAKLSNpZiBk
ZWZpbmVkIChBTkdMRV9URVNUX0NPTkZJRykKLSMgICBkZWZpbmUgQU5HTEVfREVGQVVMVF9EM0Qx
MSAxCi0jZW5kaWYKLQogI2lmICFkZWZpbmVkKEFOR0xFX0RFRkFVTFRfRDNEMTEpCiAvLyBFbmFi
bGVzIHVzZSBvZiB0aGUgRGlyZWN0M0QgMTEgQVBJIGZvciBhIGRlZmF1bHQgZGlzcGxheSwgd2hl
biBhdmFpbGFibGUKICMgICBkZWZpbmUgQU5HTEVfREVGQVVMVF9EM0QxMSAxCkBAIC0xMTcsMTEg
KzExMywxMCBAQCBlZ2w6OkVycm9yIENyZWF0ZVJlbmRlcmVyRDNEKGVnbDo6RGlzcGxheSAqZGlz
cGxheSwgUmVuZGVyZXJEM0QgKipvdXRSZW5kZXJlcikKICAgICAgICAgVU5JTVBMRU1FTlRFRCgp
OwogICAgIH0KIAotICAgIGVnbDo6RXJyb3IgcmVzdWx0KEVHTF9OT1RfSU5JVElBTElaRUQsICJO
byBhdmFpbGFibGUgcmVuZGVyZXJzLiIpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVu
ZGVyZXJDcmVhdGlvbkZ1bmN0aW9ucy5zaXplKCk7IGkrKykKICAgICB7CiAgICAgICAgIFJlbmRl
cmVyRDNEICpyZW5kZXJlciA9IHJlbmRlcmVyQ3JlYXRpb25GdW5jdGlvbnNbaV0oZGlzcGxheSk7
Ci0gICAgICAgIHJlc3VsdCA9IHJlbmRlcmVyLT5pbml0aWFsaXplKCk7CisgICAgICAgIGVnbDo6
RXJyb3IgcmVzdWx0ICAgICA9IHJlbmRlcmVyLT5pbml0aWFsaXplKCk7CiAKICMgICAgICAgaWYg
ZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNEMTEpCiAgICAgICAgICAgICBpZiAocmVuZGVyZXItPmdl
dFJlbmRlcmVyQ2xhc3MoKSA9PSBSRU5ERVJFUl9EM0QxMSkKQEAgLTE0Niw1MCArMTQxLDQ1IEBA
IGVnbDo6RXJyb3IgQ3JlYXRlUmVuZGVyZXJEM0QoZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBSZW5k
ZXJlckQzRCAqKm91dFJlbmRlcmVyKQogICAgICAgICBpZiAoIXJlc3VsdC5pc0Vycm9yKCkpCiAg
ICAgICAgIHsKICAgICAgICAgICAgICpvdXRSZW5kZXJlciA9IHJlbmRlcmVyOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAg
ICAvLyBGYWlsZWQgdG8gY3JlYXRlIHRoZSByZW5kZXJlciwgdHJ5IHRoZSBuZXh0Ci0gICAgICAg
ICAgICBTYWZlRGVsZXRlKHJlbmRlcmVyKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgICAgIH0KKworICAgICAgICAvLyBGYWlsZWQgdG8gY3JlYXRlIHRoZSByZW5kZXJlciwgdHJ5
IHRoZSBuZXh0CisgICAgICAgIFNhZmVEZWxldGUocmVuZGVyZXIpOwogICAgIH0KIAotICAgIHJl
dHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwg
Ik5vIGF2YWlsYWJsZSByZW5kZXJlcnMuIik7CiB9CiAKLURpc3BsYXlEM0Q6OkRpc3BsYXlEM0Qo
KSA6IG1SZW5kZXJlcihudWxscHRyKQorRGlzcGxheUQzRDo6RGlzcGxheUQzRChjb25zdCBlZ2w6
OkRpc3BsYXlTdGF0ZSAmc3RhdGUpIDogRGlzcGxheUltcGwoc3RhdGUpLCBtUmVuZGVyZXIobnVs
bHB0cikKIHsKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlEM0Q6OmNyZWF0ZVdpbmRvd1N1cmZh
Y2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVX
aW5kb3dUeXBlIHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewogICAgIEFTU0VSVCht
UmVuZGVyZXIgIT0gbnVsbHB0cik7Ci0gICAgcmV0dXJuIG5ldyBXaW5kb3dTdXJmYWNlRDNEKHN0
YXRlLCBtUmVuZGVyZXIsIG1EaXNwbGF5LCBjb25maWd1cmF0aW9uLCB3aW5kb3csIGF0dHJpYnMp
OworICAgIHJldHVybiBuZXcgV2luZG93U3VyZmFjZUQzRChzdGF0ZSwgbVJlbmRlcmVyLCBtRGlz
cGxheSwgd2luZG93LCBhdHRyaWJzKTsKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlEM0Q6OmNy
ZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZp
ZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKICAgICBBU1NFUlQo
bVJlbmRlcmVyICE9IG51bGxwdHIpOwotICAgIHJldHVybiBuZXcgUGJ1ZmZlclN1cmZhY2VEM0Qo
c3RhdGUsIG1SZW5kZXJlciwgbURpc3BsYXksIGNvbmZpZ3VyYXRpb24sIG51bGxwdHIsIGF0dHJp
YnMpOworICAgIHJldHVybiBuZXcgUGJ1ZmZlclN1cmZhY2VEM0Qoc3RhdGUsIG1SZW5kZXJlciwg
bURpc3BsYXksIDAsIG51bGxwdHIsIGF0dHJpYnMpOwogfQogCiBTdXJmYWNlSW1wbCAqRGlzcGxh
eUQzRDo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3Rh
dGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZl
ciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZl
ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKICAgICBBU1NFUlQobVJlbmRl
cmVyICE9IG51bGxwdHIpOwotICAgIHJldHVybiBuZXcgUGJ1ZmZlclN1cmZhY2VEM0Qoc3RhdGUs
IG1SZW5kZXJlciwgbURpc3BsYXksIGNvbmZpZ3VyYXRpb24sIHNoYXJlSGFuZGxlLCBhdHRyaWJz
KTsKKyAgICByZXR1cm4gbmV3IFBidWZmZXJTdXJmYWNlRDNEKHN0YXRlLCBtUmVuZGVyZXIsIG1E
aXNwbGF5LCBidWZ0eXBlLCBjbGllbnRCdWZmZXIsIGF0dHJpYnMpOwogfQogCiBTdXJmYWNlSW1w
bCAqRGlzcGxheUQzRDo6Y3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0
ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0aXZlUGl4bWFwLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRy
aWJ1dGVNYXAgJmF0dHJpYnMpCiB7CkBAIC0yNTYsNyArMjQ2LDcgQEAgYm9vbCBEaXNwbGF5RDNE
Ojp0ZXN0RGV2aWNlTG9zdCgpCiBlZ2w6OkVycm9yIERpc3BsYXlEM0Q6OnJlc3RvcmVMb3N0RGV2
aWNlKCkKIHsKICAgICAvLyBSZWxlYXNlIHN1cmZhY2UgcmVzb3VyY2VzIHRvIG1ha2UgdGhlIFJl
c2V0KCkgc3VjY2VlZAotICAgIGZvciAoYXV0byAmc3VyZmFjZSA6IG1TdXJmYWNlU2V0KQorICAg
IGZvciAoYXV0byAmc3VyZmFjZSA6IG1TdGF0ZS5zdXJmYWNlU2V0KQogICAgIHsKICAgICAgICAg
aWYgKHN1cmZhY2UtPmdldEJvdW5kVGV4dHVyZSgpKQogICAgICAgICB7CkBAIC0yNzIsNyArMjYy
LDcgQEAgZWdsOjpFcnJvciBEaXNwbGF5RDNEOjpyZXN0b3JlTG9zdERldmljZSgpCiAgICAgfQog
CiAgICAgLy8gUmVzdG9yZSBhbnkgc3VyZmFjZXMgdGhhdCBtYXkgaGF2ZSBiZWVuIGxvc3QKLSAg
ICBmb3IgKGNvbnN0IGF1dG8gJnN1cmZhY2UgOiBtU3VyZmFjZVNldCkKKyAgICBmb3IgKGNvbnN0
IGF1dG8gJnN1cmZhY2UgOiBtU3RhdGUuc3VyZmFjZVNldCkKICAgICB7CiAgICAgICAgIFN1cmZh
Y2VEM0QgKnN1cmZhY2VEM0QgPSBHZXRJbXBsQXM8U3VyZmFjZUQzRD4oc3VyZmFjZSk7CiAKQEAg
LTI5MSw2ICsyODEsMjYgQEAgYm9vbCBEaXNwbGF5RDNEOjppc1ZhbGlkTmF0aXZlV2luZG93KEVH
TE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSBjb25zdAogICAgIHJldHVybiBtUmVuZGVyZXItPmlz
VmFsaWROYXRpdmVXaW5kb3cod2luZG93KTsKIH0KIAorZWdsOjpFcnJvciBEaXNwbGF5RDNEOjp2
YWxpZGF0ZUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRC
dWZmZXIgY2xpZW50QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgY29uc3QKK3sKKyAgICBz
d2l0Y2ggKGJ1ZnR5cGUpCisgICAgeworICAgICAgICBjYXNlIEVHTF9EM0RfVEVYVFVSRV8yRF9T
SEFSRV9IQU5ETEVfQU5HTEU6CisgICAgICAgICAgICByZXR1cm4gbVJlbmRlcmVyLT52YWxpZGF0
ZVNoYXJlSGFuZGxlKGNvbmZpZ3VyYXRpb24sIHN0YXRpY19jYXN0PEhBTkRMRT4oY2xpZW50QnVm
ZmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXR0cmlicyk7CisKKyAgICAgICAgY2FzZSBFR0xfRDNEX1RFWFRVUkVfQU5HTEU6CisgICAgICAg
ICAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXREM0RUZXh0dXJlSW5mbyhzdGF0aWNfY2FzdDxJVW5r
bm93biAqPihjbGllbnRCdWZmZXIpLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0cik7CisKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBEaXNwbGF5SW1wbDo6dmFsaWRhdGVDbGllbnRCdWZm
ZXIoY29uZmlndXJhdGlvbiwgYnVmdHlwZSwgY2xpZW50QnVmZmVyLCBhdHRyaWJzKTsKKyAgICB9
Cit9CisKIHZvaWQgRGlzcGxheUQzRDo6Z2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4
dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0CiB7CiAgICAgbVJlbmRlcmVyLT5nZW5lcmF0
ZURpc3BsYXlFeHRlbnNpb25zKG91dEV4dGVuc2lvbnMpOwpAQCAtMzE3LDcgKzMyNyw3IEBAIHZv
aWQgRGlzcGxheUQzRDo6Z2VuZXJhdGVDYXBzKGVnbDo6Q2FwcyAqb3V0Q2FwcykgY29uc3QKIAog
ZWdsOjpFcnJvciBEaXNwbGF5RDNEOjp3YWl0Q2xpZW50KCkgY29uc3QKIHsKLSAgICBmb3IgKGF1
dG8gJnN1cmZhY2UgOiBnZXRTdXJmYWNlU2V0KCkpCisgICAgZm9yIChhdXRvICZzdXJmYWNlIDog
bVN0YXRlLnN1cmZhY2VTZXQpCiAgICAgewogICAgICAgICBTdXJmYWNlRDNEICpzdXJmYWNlRDNE
ID0gR2V0SW1wbEFzPFN1cmZhY2VEM0Q+KHN1cmZhY2UpOwogICAgICAgICBzdXJmYWNlRDNELT5j
aGVja0Zvck91dE9mRGF0ZVN3YXBDaGFpbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9EaXNwbGF5RDNELmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0Rpc3BsYXlEM0QuaApp
bmRleCAxYmQ2ZjExNjBlNjU1ODU3MjBiZTIwMDVhNzYzMTg5Zjg4YjAyZTBhLi5hMjZkOTQ2NmEy
MTA3YzNkOGNmZmJlOWUyZmM2YjM2NzI4N2M5M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0Rpc3BsYXlEM0QuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0Rpc3BsYXlE
M0QuaApAQCAtMTksMjUgKzE5LDIyIEBAIGNsYXNzIFJlbmRlcmVyRDNEOwogY2xhc3MgRGlzcGxh
eUQzRCA6IHB1YmxpYyBEaXNwbGF5SW1wbAogewogICBwdWJsaWM6Ci0gICAgRGlzcGxheUQzRCgp
OworICAgIERpc3BsYXlEM0QoY29uc3QgZWdsOjpEaXNwbGF5U3RhdGUgJnN0YXRlKTsKIAogICAg
IGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCB0ZXJtaW5hdGUoKSBvdmVycmlkZTsKIAogICAgIC8vIFN1cmZhY2Ug
Y3JlYXRpb24KICAgICBTdXJmYWNlSW1wbCAqY3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6
OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJp
YnMpIG92ZXJyaWRlOwogICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25z
dCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmli
cykgb3ZlcnJpZGU7CiAgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVm
ZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENs
aWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0
dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBp
eG1hcFN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5cGUg
bmF0aXZlUGl4bWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKIApAQCAtNTksNiArNTYsMTAg
QEAgY2xhc3MgRGlzcGxheUQzRCA6IHB1YmxpYyBEaXNwbGF5SW1wbAogICAgIGVnbDo6RXJyb3Ig
cmVzdG9yZUxvc3REZXZpY2UoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNWYWxpZE5hdGl2ZVdp
bmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3Qgb3ZlcnJpZGU7CisgICAgZWds
OjpFcnJvciB2YWxpZGF0ZUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gYnVmdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBj
bGllbnRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBlZ2w6OkVy
cm9yIGdldERldmljZShEZXZpY2VJbXBsICoqZGV2aWNlKSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9EeW5h
bWljSExTTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL0R5bmFtaWNITFNMLmNwcAppbmRleCBjYjNlNTgyZDE4ZDY4ZTcwOGNkNTQ3YjFmN2M5
YTJiNDc0NTVmMWY3Li5iNDM2NmU3ZDYyMTA3MmUwZjRlYTI4ZWUwZTFhMDkwMjI4NDI0ZmFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL0R5bmFtaWNITFNMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL0R5bmFtaWNITFNMLmNwcApAQCAtMTYsNyArMTYsNyBAQAogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNELmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZDNkL1NoYWRlckQzRC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9W
YXJ5aW5nUGFja2luZy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1ZhcnlpbmdQYWNraW5nLmgiCiAK
IHVzaW5nIG5hbWVzcGFjZSBnbDsKIApAQCAtMTE3LDY1ICsxMTcsMTYgQEAgdm9pZCBXcml0ZUFy
cmF5U3RyaW5nKHN0ZDo6c3RyaW5nc3RyZWFtICZzdHJzdHIsIHVuc2lnbmVkIGludCBpKQogICAg
IHN0cnN0ciA8PCAiXSI7CiB9CiAKLWNvbnN0IHN0ZDo6c3RyaW5nIFZFUlRFWF9BVFRSSUJVVEVf
U1RVQl9TVFJJTkcgPSAiQEAgVkVSVEVYIEFUVFJJQlVURVMgQEAiOwotY29uc3Qgc3RkOjpzdHJp
bmcgUElYRUxfT1VUUFVUX1NUVUJfU1RSSU5HICAgICA9ICJAQCBQSVhFTCBPVVRQVVQgQEAiOwor
Y29uc3RleHByIGNvbnN0IGNoYXIgKlZFUlRFWF9BVFRSSUJVVEVfU1RVQl9TVFJJTkcgPSAiQEAg
VkVSVEVYIEFUVFJJQlVURVMgQEAiOworY29uc3RleHByIGNvbnN0IGNoYXIgKlBJWEVMX09VVFBV
VF9TVFVCX1NUUklORyAgICAgPSAiQEAgUElYRUwgT1VUUFVUIEBAIjsKIH0gIC8vIGFub255bW91
cyBuYW1lc3BhY2UKIAotc3RkOjpzdHJpbmcgR2V0VmFyeWluZ1NlbWFudGljKGludCBtYWpvclNo
YWRlck1vZGVsLCBib29sIHByb2dyYW1Vc2VzUG9pbnRTaXplKQotewotICAgIC8vIFNNMyByZXNl
cnZlcyB0aGUgVEVYQ09PUkQgc2VtYW50aWMgZm9yIHBvaW50IHNwcml0ZSB0ZXhjb29yZHMgKGds
X1BvaW50Q29vcmQpCi0gICAgLy8gSW4gRDNEMTEgd2UgbWFudWFsbHkgY29tcHV0ZSBnbF9Qb2lu
dENvb3JkIGluIHRoZSBHUy4KLSAgICByZXR1cm4gKChwcm9ncmFtVXNlc1BvaW50U2l6ZSAmJiBt
YWpvclNoYWRlck1vZGVsIDwgNCkgPyAiQ09MT1IiIDogIlRFWENPT1JEIik7Ci19Ci0KIC8vIER5
bmFtaWNITFNMIGltcGxlbWVudGF0aW9uCiAKIER5bmFtaWNITFNMOjpEeW5hbWljSExTTChSZW5k
ZXJlckQzRCAqY29uc3QgcmVuZGVyZXIpIDogbVJlbmRlcmVyKHJlbmRlcmVyKQogewogfQogCi12
b2lkIER5bmFtaWNITFNMOjpnZW5lcmF0ZVZhcnlpbmdITFNMKGNvbnN0IFZhcnlpbmdQYWNraW5n
ICZ2YXJ5aW5nUGFja2luZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmdzdHJlYW0gJmhsc2xTdHJlYW0pIGNvbnN0Ci17Ci0gICAgc3RkOjpzdHJpbmcg
dmFyeWluZ1NlbWFudGljID0KLSAgICAgICAgR2V0VmFyeWluZ1NlbWFudGljKG1SZW5kZXJlci0+
Z2V0TWFqb3JTaGFkZXJNb2RlbCgpLCB2YXJ5aW5nUGFja2luZy51c2VzUG9pbnRTaXplKCkpOwot
Ci0gICAgZm9yIChjb25zdCBQYWNrZWRWYXJ5aW5nUmVnaXN0ZXIgJnJlZ2lzdGVySW5mbyA6IHZh
cnlpbmdQYWNraW5nLmdldFJlZ2lzdGVyTGlzdCgpKQotICAgIHsKLSAgICAgICAgY29uc3QgYXV0
byAmdmFyeWluZyA9ICpyZWdpc3RlckluZm8ucGFja2VkVmFyeWluZy0+dmFyeWluZzsKLSAgICAg
ICAgQVNTRVJUKCF2YXJ5aW5nLmlzU3RydWN0KCkpOwotCi0gICAgICAgIC8vIFRPRE86IEFkZCBj
aGVja3MgdG8gZW5zdXJlIEQzRCBpbnRlcnBvbGF0aW9uIG1vZGlmaWVycyBkb24ndCByZXN1bHQg
aW4gdG9vIG1hbnkKLSAgICAgICAgLy8gcmVnaXN0ZXJzIGJlaW5nIHVzZWQuCi0gICAgICAgIC8v
IEZvciBleGFtcGxlLCBpZiB0aGVyZSBhcmUgTiByZWdpc3RlcnMsIGFuZCB3ZSBoYXZlIE4gdmVj
MyB2YXJ5aW5ncyBhbmQgMSBmbG9hdAotICAgICAgICAvLyB2YXJ5aW5nLCB0aGVuIEQzRCB3aWxs
IHBhY2sgdGhlbSBpbnRvIE4gcmVnaXN0ZXJzLgotICAgICAgICAvLyBJZiB0aGUgZmxvYXQgdmFy
eWluZyBoYXMgdGhlICdub2ludGVycG9sYXRpb24nIG1vZGlmaWVyIG9uIGl0IHRoZW4gd2Ugd291
bGQgbmVlZAotICAgICAgICAvLyBOICsgMSByZWdpc3RlcnMsIGFuZCBEM0QgY29tcGlsYXRpb24g
d2lsbCBmYWlsLgotCi0gICAgICAgIHN3aXRjaCAocmVnaXN0ZXJJbmZvLnBhY2tlZFZhcnlpbmct
PmludGVycG9sYXRpb24pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNhc2Ugc2g6OklOVEVSUE9M
QVRJT05fU01PT1RIOgotICAgICAgICAgICAgICAgIGhsc2xTdHJlYW0gPDwgIiAgICAiOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBzaDo6SU5URVJQT0xBVElPTl9G
TEFUOgotICAgICAgICAgICAgICAgIGhsc2xTdHJlYW0gPDwgIiAgICBub2ludGVycG9sYXRpb24g
IjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ugc2g6OklOVEVSUE9M
QVRJT05fQ0VOVFJPSUQ6Ci0gICAgICAgICAgICAgICAgaGxzbFN0cmVhbSA8PCAiICAgIGNlbnRy
b2lkICI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBHTGVudW0g
dHJhbnNwb3NlZFR5cGUgPSBnbDo6VHJhbnNwb3NlTWF0cml4VHlwZSh2YXJ5aW5nLnR5cGUpOwot
ICAgICAgICBHTGVudW0gY29tcG9uZW50VHlwZSAgPSBnbDo6VmFyaWFibGVDb21wb25lbnRUeXBl
KHRyYW5zcG9zZWRUeXBlKTsKLSAgICAgICAgaW50IGNvbHVtbkNvdW50ID0gZ2w6OlZhcmlhYmxl
Q29sdW1uQ291bnQodHJhbnNwb3NlZFR5cGUpOwotICAgICAgICBobHNsU3RyZWFtIDw8IEhMU0xD
b21wb25lbnRUeXBlU3RyaW5nKGNvbXBvbmVudFR5cGUsIGNvbHVtbkNvdW50KTsKLSAgICAgICAg
dW5zaWduZWQgaW50IHNlbWFudGljSW5kZXggPSByZWdpc3RlckluZm8uc2VtYW50aWNJbmRleDsK
LSAgICAgICAgaGxzbFN0cmVhbSA8PCAiIHYiIDw8IHNlbWFudGljSW5kZXggPDwgIiA6ICIgPDwg
dmFyeWluZ1NlbWFudGljIDw8IHNlbWFudGljSW5kZXggPDwgIjtcbiI7Ci0gICAgfQotfQotCiBz
dGQ6OnN0cmluZyBEeW5hbWljSExTTDo6Z2VuZXJhdGVWZXJ0ZXhTaGFkZXJGb3JJbnB1dExheW91
dCgKICAgICBjb25zdCBzdGQ6OnN0cmluZyAmc291cmNlU2hhZGVyLAogICAgIGNvbnN0IElucHV0
TGF5b3V0ICZpbnB1dExheW91dCwKQEAgLTI5NSw3ICsyNDYsNyBAQCBzdGQ6OnN0cmluZyBEeW5h
bWljSExTTDo6Z2VuZXJhdGVWZXJ0ZXhTaGFkZXJGb3JJbnB1dExheW91dCgKICAgICBzdGQ6OnN0
cmluZyB2ZXJ0ZXhITFNMKHNvdXJjZVNoYWRlcik7CiAKICAgICBzaXplX3QgY29weUluc2VydGlv
blBvcyA9IHZlcnRleEhMU0wuZmluZChWRVJURVhfQVRUUklCVVRFX1NUVUJfU1RSSU5HKTsKLSAg
ICB2ZXJ0ZXhITFNMLnJlcGxhY2UoY29weUluc2VydGlvblBvcywgVkVSVEVYX0FUVFJJQlVURV9T
VFVCX1NUUklORy5sZW5ndGgoKSwgc3RydWN0U3RyZWFtLnN0cigpKTsKKyAgICB2ZXJ0ZXhITFNM
LnJlcGxhY2UoY29weUluc2VydGlvblBvcywgc3RybGVuKFZFUlRFWF9BVFRSSUJVVEVfU1RVQl9T
VFJJTkcpLCBzdHJ1Y3RTdHJlYW0uc3RyKCkpOwogCiAgICAgcmV0dXJuIHZlcnRleEhMU0w7CiB9
CkBAIC0zMTYsMTYgKzI2NywyMSBAQCBzdGQ6OnN0cmluZyBEeW5hbWljSExTTDo6Z2VuZXJhdGVQ
aXhlbFNoYWRlckZvck91dHB1dFNpZ25hdHVyZSgKICAgICBkZWNsYXJhdGlvblN0cmVhbSA8PCAi
c3RydWN0IFBTX09VVFBVVFxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iOwogCi0g
ICAgZm9yIChzaXplX3QgbGF5b3V0SW5kZXggPSAwOyBsYXlvdXRJbmRleCA8IG91dHB1dExheW91
dC5zaXplKCk7ICsrbGF5b3V0SW5kZXgpCisgICAgLy8gV29ya2Fyb3VuZCBmb3IgSExTTCAzLng6
IFdlIGNhbid0IGRvIGEgZGVwdGgvc3RlbmNpbCBvbmx5IHJlbmRlciwgdGhlIHJ1bnRpbWUgd2ls
bCBjb21wbGFpbi4KKyAgICBzaXplX3QgbnVtT3V0cHV0cyA9IG91dHB1dExheW91dC5lbXB0eSgp
ID8gMXUgOiBvdXRwdXRMYXlvdXQuc2l6ZSgpOworICAgIGNvbnN0IFBpeGVsU2hhZGVyT3V0cHV0
VmFyaWFibGUgZGVmYXVsdE91dHB1dChHTF9GTE9BVF9WRUM0LCAiZHVtbXkiLCAiZmxvYXQ0KDAs
IDAsIDAsIDEpIiwgMCk7CisKKyAgICBmb3IgKHNpemVfdCBsYXlvdXRJbmRleCA9IDA7IGxheW91
dEluZGV4IDwgbnVtT3V0cHV0czsgKytsYXlvdXRJbmRleCkKICAgICB7Ci0gICAgICAgIEdMZW51
bSBiaW5kaW5nID0gb3V0cHV0TGF5b3V0W2xheW91dEluZGV4XTsKKyAgICAgICAgR0xlbnVtIGJp
bmRpbmcgPSBvdXRwdXRMYXlvdXQuZW1wdHkoKSA/IEdMX0NPTE9SX0FUVEFDSE1FTlQwIDogb3V0
cHV0TGF5b3V0W2xheW91dEluZGV4XTsKIAogICAgICAgICBpZiAoYmluZGluZyAhPSBHTF9OT05F
KQogICAgICAgICB7CiAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbG9jYXRpb24gPSAoYmluZGlu
ZyAtIEdMX0NPTE9SX0FUVEFDSE1FTlQwKTsKIAogICAgICAgICAgICAgY29uc3QgUGl4ZWxTaGFk
ZXJPdXRwdXRWYXJpYWJsZSAqb3V0cHV0VmFyaWFibGUgPQotICAgICAgICAgICAgICAgIEZpbmRP
dXRwdXRBdExvY2F0aW9uKG91dHB1dFZhcmlhYmxlcywgbG9jYXRpb24pOworICAgICAgICAgICAg
ICAgIG91dHB1dExheW91dC5lbXB0eSgpID8gJmRlZmF1bHRPdXRwdXQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA6IEZpbmRPdXRwdXRBdExvY2F0aW9uKG91dHB1dFZhcmlh
YmxlcywgbG9jYXRpb24pOwogCiAgICAgICAgICAgICAvLyBPcGVuR0wgRVMgMy4wIHNwZWMgJDQu
Mi4xCiAgICAgICAgICAgICAvLyBJZiBbLi4uXSBub3QgYWxsIHVzZXItZGVmaW5lZCBvdXRwdXQg
dmFyaWFibGVzIGFyZSB3cml0dGVuLCB0aGUgdmFsdWVzIG9mIGZyYWdtZW50CkBAIC0zNjAsNTIg
KzMxNiw4NyBAQCBzdGQ6OnN0cmluZyBEeW5hbWljSExTTDo6Z2VuZXJhdGVQaXhlbFNoYWRlckZv
ck91dHB1dFNpZ25hdHVyZSgKICAgICBzdGQ6OnN0cmluZyBwaXhlbEhMU0woc291cmNlU2hhZGVy
KTsKIAogICAgIHNpemVfdCBvdXRwdXRJbnNlcnRpb25Qb3MgPSBwaXhlbEhMU0wuZmluZChQSVhF
TF9PVVRQVVRfU1RVQl9TVFJJTkcpOwotICAgIHBpeGVsSExTTC5yZXBsYWNlKG91dHB1dEluc2Vy
dGlvblBvcywgUElYRUxfT1VUUFVUX1NUVUJfU1RSSU5HLmxlbmd0aCgpLAorICAgIHBpeGVsSExT
TC5yZXBsYWNlKG91dHB1dEluc2VydGlvblBvcywgc3RybGVuKFBJWEVMX09VVFBVVF9TVFVCX1NU
UklORyksCiAgICAgICAgICAgICAgICAgICAgICAgZGVjbGFyYXRpb25TdHJlYW0uc3RyKCkpOwog
CiAgICAgcmV0dXJuIHBpeGVsSExTTDsKIH0KIAotdm9pZCBEeW5hbWljSExTTDo6Z2VuZXJhdGVW
YXJ5aW5nTGlua0hMU0woU2hhZGVyVHlwZSBzaGFkZXJUeXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmFyeWluZ1BhY2tpbmcgJnZhcnlpbmdQYWNr
aW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJp
bmdzdHJlYW0gJmxpbmtTdHJlYW0pIGNvbnN0Cit2b2lkIER5bmFtaWNITFNMOjpnZW5lcmF0ZVZh
cnlpbmdMaW5rSExTTChjb25zdCBWYXJ5aW5nUGFja2luZyAmdmFyeWluZ1BhY2tpbmcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCdWlsdGluSW5mbyAm
YnVpbHRpbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IHByb2dyYW1Vc2VzUG9pbnRTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gJmhsc2xTdHJlYW0pIGNvbnN0CiB7Ci0gICAgY29u
c3QgYXV0byAmYnVpbHRpbnMgPSB2YXJ5aW5nUGFja2luZy5idWlsdGlucyhzaGFkZXJUeXBlKTsK
ICAgICBBU1NFUlQoYnVpbHRpbnMuZHhQb3NpdGlvbi5lbmFibGVkKTsKLSAgICBsaW5rU3RyZWFt
IDw8ICJ7XG4iCisgICAgaGxzbFN0cmVhbSA8PCAie1xuIgogICAgICAgICAgICAgICAgPDwgIiAg
ICBmbG9hdDQgZHhfUG9zaXRpb24gOiAiIDw8IGJ1aWx0aW5zLmR4UG9zaXRpb24uc3RyKCkgPDwg
IjtcbiI7CiAKICAgICBpZiAoYnVpbHRpbnMuZ2xQb3NpdGlvbi5lbmFibGVkKQogICAgIHsKLSAg
ICAgICAgbGlua1N0cmVhbSA8PCAiICAgIGZsb2F0NCBnbF9Qb3NpdGlvbiA6ICIgPDwgYnVpbHRp
bnMuZ2xQb3NpdGlvbi5zdHIoKSA8PCAiO1xuIjsKKyAgICAgICAgaGxzbFN0cmVhbSA8PCAiICAg
IGZsb2F0NCBnbF9Qb3NpdGlvbiA6ICIgPDwgYnVpbHRpbnMuZ2xQb3NpdGlvbi5zdHIoKSA8PCAi
O1xuIjsKICAgICB9CiAKICAgICBpZiAoYnVpbHRpbnMuZ2xGcmFnQ29vcmQuZW5hYmxlZCkKICAg
ICB7Ci0gICAgICAgIGxpbmtTdHJlYW0gPDwgIiAgICBmbG9hdDQgZ2xfRnJhZ0Nvb3JkIDogIiA8
PCBidWlsdGlucy5nbEZyYWdDb29yZC5zdHIoKSA8PCAiO1xuIjsKKyAgICAgICAgaGxzbFN0cmVh
bSA8PCAiICAgIGZsb2F0NCBnbF9GcmFnQ29vcmQgOiAiIDw8IGJ1aWx0aW5zLmdsRnJhZ0Nvb3Jk
LnN0cigpIDw8ICI7XG4iOwogICAgIH0KIAogICAgIGlmIChidWlsdGlucy5nbFBvaW50Q29vcmQu
ZW5hYmxlZCkKICAgICB7Ci0gICAgICAgIGxpbmtTdHJlYW0gPDwgIiAgICBmbG9hdDIgZ2xfUG9p
bnRDb29yZCA6ICIgPDwgYnVpbHRpbnMuZ2xQb2ludENvb3JkLnN0cigpIDw8ICI7XG4iOworICAg
ICAgICBobHNsU3RyZWFtIDw8ICIgICAgZmxvYXQyIGdsX1BvaW50Q29vcmQgOiAiIDw8IGJ1aWx0
aW5zLmdsUG9pbnRDb29yZC5zdHIoKSA8PCAiO1xuIjsKICAgICB9CiAKICAgICBpZiAoYnVpbHRp
bnMuZ2xQb2ludFNpemUuZW5hYmxlZCkKICAgICB7Ci0gICAgICAgIGxpbmtTdHJlYW0gPDwgIiAg
ICBmbG9hdCBnbF9Qb2ludFNpemUgOiAiIDw8IGJ1aWx0aW5zLmdsUG9pbnRTaXplLnN0cigpIDw8
ICI7XG4iOworICAgICAgICBobHNsU3RyZWFtIDw8ICIgICAgZmxvYXQgZ2xfUG9pbnRTaXplIDog
IiA8PCBidWlsdGlucy5nbFBvaW50U2l6ZS5zdHIoKSA8PCAiO1xuIjsKICAgICB9CiAKLSAgICAv
LyBEbyB0aGlzIGFmdGVyIGdsX1BvaW50U2l6ZSwgdG8gcG90ZW50aWFsbHkgY29tYmluZSBnbF9Q
b2ludENvb3JkIGFuZCBnbF9Qb2ludFNpemUgaW50byB0aGUKLSAgICAvLyBzYW1lIHJlZ2lzdGVy
LgotICAgIGdlbmVyYXRlVmFyeWluZ0hMU0wodmFyeWluZ1BhY2tpbmcsIGxpbmtTdHJlYW0pOwor
ICAgIHN0ZDo6c3RyaW5nIHZhcnlpbmdTZW1hbnRpYyA9CisgICAgICAgIEdldFZhcnlpbmdTZW1h
bnRpYyhtUmVuZGVyZXItPmdldE1ham9yU2hhZGVyTW9kZWwoKSwgcHJvZ3JhbVVzZXNQb2ludFNp
emUpOworCisgICAgZm9yIChjb25zdCBQYWNrZWRWYXJ5aW5nUmVnaXN0ZXIgJnJlZ2lzdGVySW5m
byA6IHZhcnlpbmdQYWNraW5nLmdldFJlZ2lzdGVyTGlzdCgpKQorICAgIHsKKyAgICAgICAgY29u
c3QgYXV0byAmdmFyeWluZyA9ICpyZWdpc3RlckluZm8ucGFja2VkVmFyeWluZy0+dmFyeWluZzsK
KyAgICAgICAgQVNTRVJUKCF2YXJ5aW5nLmlzU3RydWN0KCkpOworCisgICAgICAgIC8vIFRPRE86
IEFkZCBjaGVja3MgdG8gZW5zdXJlIEQzRCBpbnRlcnBvbGF0aW9uIG1vZGlmaWVycyBkb24ndCBy
ZXN1bHQgaW4gdG9vIG1hbnkKKyAgICAgICAgLy8gcmVnaXN0ZXJzIGJlaW5nIHVzZWQuCisgICAg
ICAgIC8vIEZvciBleGFtcGxlLCBpZiB0aGVyZSBhcmUgTiByZWdpc3RlcnMsIGFuZCB3ZSBoYXZl
IE4gdmVjMyB2YXJ5aW5ncyBhbmQgMSBmbG9hdAorICAgICAgICAvLyB2YXJ5aW5nLCB0aGVuIEQz
RCB3aWxsIHBhY2sgdGhlbSBpbnRvIE4gcmVnaXN0ZXJzLgorICAgICAgICAvLyBJZiB0aGUgZmxv
YXQgdmFyeWluZyBoYXMgdGhlICdub2ludGVycG9sYXRpb24nIG1vZGlmaWVyIG9uIGl0IHRoZW4g
d2Ugd291bGQgbmVlZAorICAgICAgICAvLyBOICsgMSByZWdpc3RlcnMsIGFuZCBEM0QgY29tcGls
YXRpb24gd2lsbCBmYWlsLgorCisgICAgICAgIHN3aXRjaCAocmVnaXN0ZXJJbmZvLnBhY2tlZFZh
cnlpbmctPmludGVycG9sYXRpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2Ugc2g6OklO
VEVSUE9MQVRJT05fU01PT1RIOgorICAgICAgICAgICAgICAgIGhsc2xTdHJlYW0gPDwgIiAgICAi
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBzaDo6SU5URVJQT0xB
VElPTl9GTEFUOgorICAgICAgICAgICAgICAgIGhsc2xTdHJlYW0gPDwgIiAgICBub2ludGVycG9s
YXRpb24gIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ugc2g6OklO
VEVSUE9MQVRJT05fQ0VOVFJPSUQ6CisgICAgICAgICAgICAgICAgaGxzbFN0cmVhbSA8PCAiICAg
IGNlbnRyb2lkICI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIH0KKworICAgICAgICBH
TGVudW0gdHJhbnNwb3NlZFR5cGUgPSBnbDo6VHJhbnNwb3NlTWF0cml4VHlwZSh2YXJ5aW5nLnR5
cGUpOworICAgICAgICBHTGVudW0gY29tcG9uZW50VHlwZSAgPSBnbDo6VmFyaWFibGVDb21wb25l
bnRUeXBlKHRyYW5zcG9zZWRUeXBlKTsKKyAgICAgICAgaW50IGNvbHVtbkNvdW50ICAgICAgID0g
Z2w6OlZhcmlhYmxlQ29sdW1uQ291bnQodHJhbnNwb3NlZFR5cGUpOworICAgICAgICBobHNsU3Ry
ZWFtIDw8IEhMU0xDb21wb25lbnRUeXBlU3RyaW5nKGNvbXBvbmVudFR5cGUsIGNvbHVtbkNvdW50
KTsKKyAgICAgICAgdW5zaWduZWQgaW50IHNlbWFudGljSW5kZXggPSByZWdpc3RlckluZm8uc2Vt
YW50aWNJbmRleDsKKyAgICAgICAgaGxzbFN0cmVhbSA8PCAiIHYiIDw8IHNlbWFudGljSW5kZXgg
PDwgIiA6ICIgPDwgdmFyeWluZ1NlbWFudGljIDw8IHNlbWFudGljSW5kZXggPDwgIjtcbiI7Cisg
ICAgfQogCi0gICAgbGlua1N0cmVhbSA8PCAifTtcbiI7CisgICAgaGxzbFN0cmVhbSA8PCAifTtc
biI7CiB9CiAKLWJvb2wgRHluYW1pY0hMU0w6OmdlbmVyYXRlU2hhZGVyTGlua0hMU0woY29uc3Qg
Z2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKK3ZvaWQgRHluYW1pY0hMU0w6OmdlbmVyYXRlU2hhZGVy
TGlua0hMU0woY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmcHJvZ3JhbURh
dGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFByb2dy
YW1EM0RNZXRhZGF0YSAmcHJvZ3JhbU1ldGFkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBWYXJ5aW5nUGFja2luZyAmdmFyeWluZ1BhY2tpbmcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJ1aWx0aW5WYXJ5
aW5nc0QzRCAmYnVpbHRpbnNEM0QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nICpwaXhlbEhMU0wsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICp2ZXJ0ZXhITFNMKSBjb25zdAogewpAQCAtNDQw
LDExICs0MzEsMTQgQEAgYm9vbCBEeW5hbWljSExTTDo6Z2VuZXJhdGVTaGFkZXJMaW5rSExTTChj
b25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgIH0KIAogICAgIC8vIEFkZCBzdHViIHN0
cmluZyB0byBiZSByZXBsYWNlZCB3aGVuIHNoYWRlciBpcyBkeW5hbWljYWxseSBkZWZpbmVkIGJ5
IGl0cyBsYXlvdXQKLSAgICB2ZXJ0ZXhTdHJlYW0gPDwgIlxuIiA8PCBWRVJURVhfQVRUUklCVVRF
X1NUVUJfU1RSSU5HICsgIlxuIjsKKyAgICB2ZXJ0ZXhTdHJlYW0gPDwgIlxuIiA8PCBzdGQ6OnN0
cmluZyhWRVJURVhfQVRUUklCVVRFX1NUVUJfU1RSSU5HKSA8PCAiXG4iOworCisgICAgY29uc3Qg
YXV0byAmdmVydGV4QnVpbHRpbnMgPSBidWlsdGluc0QzRFtTSEFERVJfVkVSVEVYXTsKIAogICAg
IC8vIFdyaXRlIHRoZSBITFNMIGlucHV0L291dHB1dCBkZWNsYXJhdGlvbnMKICAgICB2ZXJ0ZXhT
dHJlYW0gPDwgInN0cnVjdCBWU19PVVRQVVRcbiI7Ci0gICAgZ2VuZXJhdGVWYXJ5aW5nTGlua0hM
U0woU0hBREVSX1ZFUlRFWCwgdmFyeWluZ1BhY2tpbmcsIHZlcnRleFN0cmVhbSk7CisgICAgZ2Vu
ZXJhdGVWYXJ5aW5nTGlua0hMU0wodmFyeWluZ1BhY2tpbmcsIHZlcnRleEJ1aWx0aW5zLCBidWls
dGluc0QzRC51c2VzUG9pbnRTaXplKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVy
dGV4U3RyZWFtKTsKICAgICB2ZXJ0ZXhTdHJlYW0gPDwgIlxuIgogICAgICAgICAgICAgICAgICA8
PCAiVlNfT1VUUFVUIG1haW4oVlNfSU5QVVQgaW5wdXQpXG4iCiAgICAgICAgICAgICAgICAgIDw8
ICJ7XG4iCkBAIC00NTUsOCArNDQ5LDYgQEAgYm9vbCBEeW5hbWljSExTTDo6Z2VuZXJhdGVTaGFk
ZXJMaW5rSExTTChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAg
ICA8PCAiXG4iCiAgICAgICAgICAgICAgICAgIDw8ICIgICAgVlNfT1VUUFVUIG91dHB1dDtcbiI7
CiAKLSAgICBjb25zdCBhdXRvICZ2ZXJ0ZXhCdWlsdGlucyA9IHZhcnlpbmdQYWNraW5nLmJ1aWx0
aW5zKFNIQURFUl9WRVJURVgpOwotCiAgICAgaWYgKHZlcnRleEJ1aWx0aW5zLmdsUG9zaXRpb24u
ZW5hYmxlZCkKICAgICB7CiAgICAgICAgIHZlcnRleFN0cmVhbSA8PCAiICAgIG91dHB1dC5nbF9Q
b3NpdGlvbiA9IGdsX1Bvc2l0aW9uO1xuIjsKQEAgLTU5MSwxMyArNTgzLDE2IEBAIGJvb2wgRHlu
YW1pY0hMU0w6OmdlbmVyYXRlU2hhZGVyTGlua0hMU0woY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAm
ZGF0YSwKICAgICAgICAgICAgICAgICAgPDwgIiAgICByZXR1cm4gb3V0cHV0O1xuIgogICAgICAg
ICAgICAgICAgICA8PCAifVxuIjsKIAorICAgIGNvbnN0IGF1dG8gJnBpeGVsQnVpbHRpbnMgPSBi
dWlsdGluc0QzRFtTSEFERVJfUElYRUxdOworCiAgICAgc3RkOjpzdHJpbmdzdHJlYW0gcGl4ZWxT
dHJlYW07CiAgICAgcGl4ZWxTdHJlYW0gPDwgZnJhZ21lbnRTaGFkZXJHTC0+Z2V0VHJhbnNsYXRl
ZFNvdXJjZSgpOwogICAgIHBpeGVsU3RyZWFtIDw8ICJzdHJ1Y3QgUFNfSU5QVVRcbiI7Ci0gICAg
Z2VuZXJhdGVWYXJ5aW5nTGlua0hMU0woU0hBREVSX1BJWEVMLCB2YXJ5aW5nUGFja2luZywgcGl4
ZWxTdHJlYW0pOworICAgIGdlbmVyYXRlVmFyeWluZ0xpbmtITFNMKHZhcnlpbmdQYWNraW5nLCBw
aXhlbEJ1aWx0aW5zLCBidWlsdGluc0QzRC51c2VzUG9pbnRTaXplKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGl4ZWxTdHJlYW0pOwogICAgIHBpeGVsU3RyZWFtIDw8ICJcbiI7CiAK
LSAgICBwaXhlbFN0cmVhbSA8PCBQSVhFTF9PVVRQVVRfU1RVQl9TVFJJTkcgKyAiXG4iOworICAg
IHBpeGVsU3RyZWFtIDw8IHN0ZDo6c3RyaW5nKFBJWEVMX09VVFBVVF9TVFVCX1NUUklORykgPDwg
IlxuIjsKIAogICAgIGlmIChmcmFnbWVudFNoYWRlci0+dXNlc0Zyb250RmFjaW5nKCkpCiAgICAg
ewpAQCAtNjE4LDggKzYxMyw2IEBAIGJvb2wgRHluYW1pY0hMU0w6OmdlbmVyYXRlU2hhZGVyTGlu
a0hMU0woY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAg
PDwgIntcbiI7CiAgICAgfQogCi0gICAgY29uc3QgYXV0byAmcGl4ZWxCdWlsdGlucyA9IHZhcnlp
bmdQYWNraW5nLmJ1aWx0aW5zKFNIQURFUl9QSVhFTCk7Ci0KICAgICBpZiAocGl4ZWxCdWlsdGlu
cy5nbEZyYWdDb29yZC5lbmFibGVkKQogICAgIHsKICAgICAgICAgcGl4ZWxTdHJlYW0gPDwgIiAg
ICBmbG9hdCByaHcgPSAxLjAgLyBpbnB1dC5nbF9GcmFnQ29vcmQudztcbiI7CkBAIC03NzQsMzAg
Kzc2NywxMDQgQEAgYm9vbCBEeW5hbWljSExTTDo6Z2VuZXJhdGVTaGFkZXJMaW5rSExTTChjb25z
dCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogCiAgICAgKnZlcnRleEhMU0wgPSB2ZXJ0ZXhTdHJl
YW0uc3RyKCk7CiAgICAgKnBpeGVsSExTTCAgPSBwaXhlbFN0cmVhbS5zdHIoKTsKK30KKworc3Rk
OjpzdHJpbmcgRHluYW1pY0hMU0w6OmdlbmVyYXRlQ29tcHV0ZVNoYWRlckxpbmtITFNMKGNvbnN0
IGdsOjpQcm9ncmFtU3RhdGUgJnByb2dyYW1EYXRhKSBjb25zdAoreworICAgIGNvbnN0IGdsOjpT
aGFkZXIgKmNvbXB1dGVTaGFkZXJHTCA9IHByb2dyYW1EYXRhLmdldEF0dGFjaGVkQ29tcHV0ZVNo
YWRlcigpOworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGNvbXB1dGVTdHJlYW07CisgICAgc3RkOjpz
dHJpbmcgdHJhbnNsYXRlZFNvdXJjZSA9IGNvbXB1dGVTaGFkZXJHTC0+Z2V0VHJhbnNsYXRlZFNv
dXJjZSgpOworICAgIGNvbXB1dGVTdHJlYW0gPDwgdHJhbnNsYXRlZFNvdXJjZTsKKworICAgIGJv
b2wgdXNlc1dvcmtHcm91cElEID0gdHJhbnNsYXRlZFNvdXJjZS5maW5kKCJHTF9VU0VTX1dPUktf
R1JPVVBfSUQiKSAhPSBzdGQ6OnN0cmluZzo6bnBvczsKKyAgICBib29sIHVzZXNMb2NhbEludm9j
YXRpb25JRCA9CisgICAgICAgIHRyYW5zbGF0ZWRTb3VyY2UuZmluZCgiR0xfVVNFU19MT0NBTF9J
TlZPQ0FUSU9OX0lEIikgIT0gc3RkOjpzdHJpbmc6Om5wb3M7CisgICAgYm9vbCB1c2VzR2xvYmFs
SW52b2NhdGlvbklEID0KKyAgICAgICAgdHJhbnNsYXRlZFNvdXJjZS5maW5kKCJHTF9VU0VTX0dM
T0JBTF9JTlZPQ0FUSU9OX0lEIikgIT0gc3RkOjpzdHJpbmc6Om5wb3M7CisgICAgYm9vbCB1c2Vz
TG9jYWxJbnZvY2F0aW9uSW5kZXggPQorICAgICAgICB0cmFuc2xhdGVkU291cmNlLmZpbmQoIkdM
X1VTRVNfTE9DQUxfSU5WT0NBVElPTl9JTkRFWCIpICE9IHN0ZDo6c3RyaW5nOjpucG9zOworCisg
ICAgY29tcHV0ZVN0cmVhbSA8PCAiXG5zdHJ1Y3QgQ1NfSU5QVVRcbntcbiI7CisgICAgaWYgKHVz
ZXNXb3JrR3JvdXBJRCkKKyAgICB7CisgICAgICAgIGNvbXB1dGVTdHJlYW0gPDwgIiAgICB1aW50
MyBkeF9Xb3JrR3JvdXBJRCA6ICIKKyAgICAgICAgICAgICAgICAgICAgICA8PCAiU1ZfR3JvdXBJ
RDtcbiI7CisgICAgfQorCisgICAgaWYgKHVzZXNMb2NhbEludm9jYXRpb25JRCkKKyAgICB7Cisg
ICAgICAgIGNvbXB1dGVTdHJlYW0gPDwgIiAgICB1aW50MyBkeF9Mb2NhbEludm9jYXRpb25JRCA6
ICIKKyAgICAgICAgICAgICAgICAgICAgICA8PCAiU1ZfR3JvdXBUaHJlYWRJRDtcbiI7CisgICAg
fQorCisgICAgaWYgKHVzZXNHbG9iYWxJbnZvY2F0aW9uSUQpCisgICAgeworICAgICAgICBjb21w
dXRlU3RyZWFtIDw8ICIgICAgdWludDMgZHhfR2xvYmFsSW52b2NhdGlvbklEIDogIgorICAgICAg
ICAgICAgICAgICAgICAgIDw8ICJTVl9EaXNwYXRjaFRocmVhZElEO1xuIjsKKyAgICB9CisKKyAg
ICBpZiAodXNlc0xvY2FsSW52b2NhdGlvbkluZGV4KQorICAgIHsKKyAgICAgICAgY29tcHV0ZVN0
cmVhbSA8PCAiICAgIHVpbnQgZHhfTG9jYWxJbnZvY2F0aW9uSW5kZXggOiAiCisgICAgICAgICAg
ICAgICAgICAgICAgPDwgIlNWX0dyb3VwSW5kZXg7XG4iOworICAgIH0KKworICAgIGNvbXB1dGVT
dHJlYW0gPDwgIn07XG5cbiI7CisKKyAgICBjb25zdCBzaDo6V29ya0dyb3VwU2l6ZSAmbG9jYWxT
aXplID0gY29tcHV0ZVNoYWRlckdMLT5nZXRXb3JrR3JvdXBTaXplKCk7CisgICAgY29tcHV0ZVN0
cmVhbSA8PCAiW251bXRocmVhZHMoIiA8PCBsb2NhbFNpemVbMF0gPDwgIiwgIiA8PCBsb2NhbFNp
emVbMV0gPDwgIiwgIiA8PCBsb2NhbFNpemVbMl0KKyAgICAgICAgICAgICAgICAgIDw8ICIpXVxu
IjsKKworICAgIGNvbXB1dGVTdHJlYW0gPDwgInZvaWQgbWFpbihDU19JTlBVVCBpbnB1dClcbiIK
KyAgICAgICAgICAgICAgICAgIDw8ICJ7XG4iOworCisgICAgaWYgKHVzZXNXb3JrR3JvdXBJRCkK
KyAgICB7CisgICAgICAgIGNvbXB1dGVTdHJlYW0gPDwgIiAgICBnbF9Xb3JrR3JvdXBJRCA9IGlu
cHV0LmR4X1dvcmtHcm91cElEO1xuIjsKKyAgICB9CisgICAgaWYgKHVzZXNMb2NhbEludm9jYXRp
b25JRCkKKyAgICB7CisgICAgICAgIGNvbXB1dGVTdHJlYW0gPDwgIiAgICBnbF9Mb2NhbEludm9j
YXRpb25JRCA9IGlucHV0LmR4X0xvY2FsSW52b2NhdGlvbklEO1xuIjsKKyAgICB9CisgICAgaWYg
KHVzZXNHbG9iYWxJbnZvY2F0aW9uSUQpCisgICAgeworICAgICAgICBjb21wdXRlU3RyZWFtIDw8
ICIgICAgZ2xfR2xvYmFsSW52b2NhdGlvbklEID0gaW5wdXQuZHhfR2xvYmFsSW52b2NhdGlvbklE
O1xuIjsKKyAgICB9CisgICAgaWYgKHVzZXNMb2NhbEludm9jYXRpb25JbmRleCkKKyAgICB7Cisg
ICAgICAgIGNvbXB1dGVTdHJlYW0gPDwgIiAgICBnbF9Mb2NhbEludm9jYXRpb25JbmRleCA9IGlu
cHV0LmR4X0xvY2FsSW52b2NhdGlvbkluZGV4O1xuIjsKKyAgICB9CisKKyAgICBjb21wdXRlU3Ry
ZWFtIDw8ICJcbiIKKyAgICAgICAgICAgICAgICAgIDw8ICIgICAgZ2xfbWFpbigpO1xuIgorICAg
ICAgICAgICAgICAgICAgPDwgIn1cbiI7CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4g
Y29tcHV0ZVN0cmVhbS5zdHIoKTsKIH0KIAotc3RkOjpzdHJpbmcgRHluYW1pY0hMU0w6OmdlbmVy
YXRlR2VvbWV0cnlTaGFkZXJQcmVhbWJsZShjb25zdCBWYXJ5aW5nUGFja2luZyAmdmFyeWluZ1Bh
Y2tpbmcpIGNvbnN0CitzdGQ6OnN0cmluZyBEeW5hbWljSExTTDo6Z2VuZXJhdGVHZW9tZXRyeVNo
YWRlclByZWFtYmxlKGNvbnN0IFZhcnlpbmdQYWNraW5nICZ2YXJ5aW5nUGFja2luZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
QnVpbHRpblZhcnlpbmdzRDNEICZidWlsdGluc0QzRCkgY29uc3QKIHsKICAgICBBU1NFUlQobVJl
bmRlcmVyLT5nZXRNYWpvclNoYWRlck1vZGVsKCkgPj0gNCk7CiAKICAgICBzdGQ6OnN0cmluZ3N0
cmVhbSBwcmVhbWJsZVN0cmVhbTsKIAotICAgIGNvbnN0IGF1dG8gJmJ1aWx0aW5zID0gdmFyeWlu
Z1BhY2tpbmcuYnVpbHRpbnMoU0hBREVSX1ZFUlRFWCk7CisgICAgY29uc3QgYXV0byAmdmVydGV4
QnVpbHRpbnMgPSBidWlsdGluc0QzRFtTSEFERVJfVkVSVEVYXTsKIAogICAgIHByZWFtYmxlU3Ry
ZWFtIDw8ICJzdHJ1Y3QgR1NfSU5QVVRcbiI7Ci0gICAgZ2VuZXJhdGVWYXJ5aW5nTGlua0hMU0wo
U0hBREVSX1ZFUlRFWCwgdmFyeWluZ1BhY2tpbmcsIHByZWFtYmxlU3RyZWFtKTsKKyAgICBnZW5l
cmF0ZVZhcnlpbmdMaW5rSExTTCh2YXJ5aW5nUGFja2luZywgdmVydGV4QnVpbHRpbnMsIGJ1aWx0
aW5zRDNELnVzZXNQb2ludFNpemUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVh
bWJsZVN0cmVhbSk7CiAgICAgcHJlYW1ibGVTdHJlYW0gPDwgIlxuIgogICAgICAgICAgICAgICAg
ICAgIDw8ICJzdHJ1Y3QgR1NfT1VUUFVUXG4iOwotICAgIGdlbmVyYXRlVmFyeWluZ0xpbmtITFNM
KFNIQURFUl9HRU9NRVRSWSwgdmFyeWluZ1BhY2tpbmcsIHByZWFtYmxlU3RyZWFtKTsKKyAgICBn
ZW5lcmF0ZVZhcnlpbmdMaW5rSExTTCh2YXJ5aW5nUGFja2luZywgYnVpbHRpbnNEM0RbU0hBREVS
X0dFT01FVFJZXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdGluc0QzRC51c2Vz
UG9pbnRTaXplKCksIHByZWFtYmxlU3RyZWFtKTsKICAgICBwcmVhbWJsZVN0cmVhbQogICAgICAg
ICA8PCAiXG4iCiAgICAgICAgIDw8ICJ2b2lkIGNvcHlWZXJ0ZXgoaW5vdXQgR1NfT1VUUFVUIG91
dHB1dCwgR1NfSU5QVVQgaW5wdXQsIEdTX0lOUFVUIGZsYXRpbnB1dClcbiIKICAgICAgICAgPDwg
IntcbiIKICAgICAgICAgPDwgIiAgICBvdXRwdXQuZ2xfUG9zaXRpb24gPSBpbnB1dC5nbF9Qb3Np
dGlvbjtcbiI7CiAKLSAgICBpZiAoYnVpbHRpbnMuZ2xQb2ludFNpemUuZW5hYmxlZCkKKyAgICBp
ZiAodmVydGV4QnVpbHRpbnMuZ2xQb2ludFNpemUuZW5hYmxlZCkKICAgICB7CiAgICAgICAgIHBy
ZWFtYmxlU3RyZWFtIDw8ICIgICAgb3V0cHV0LmdsX1BvaW50U2l6ZSA9IGlucHV0LmdsX1BvaW50
U2l6ZTtcbiI7CiAgICAgfQpAQCAtODEyLDcgKzg3OSw3IEBAIHN0ZDo6c3RyaW5nIER5bmFtaWNI
TFNMOjpnZW5lcmF0ZUdlb21ldHJ5U2hhZGVyUHJlYW1ibGUoY29uc3QgVmFyeWluZ1BhY2tpbmcg
JnZhCiAgICAgICAgIHByZWFtYmxlU3RyZWFtIDw8ICJpbnB1dC52IiA8PCB2YXJ5aW5nUmVnaXN0
ZXIuc2VtYW50aWNJbmRleCA8PCAiOyBcbiI7CiAgICAgfQogCi0gICAgaWYgKGJ1aWx0aW5zLmds
RnJhZ0Nvb3JkLmVuYWJsZWQpCisgICAgaWYgKHZlcnRleEJ1aWx0aW5zLmdsRnJhZ0Nvb3JkLmVu
YWJsZWQpCiAgICAgewogICAgICAgICBwcmVhbWJsZVN0cmVhbSA8PCAiICAgIG91dHB1dC5nbF9G
cmFnQ29vcmQgPSBpbnB1dC5nbF9GcmFnQ29vcmQ7XG4iOwogICAgIH0KQEAgLTEwNjMsNyArMTEz
MCw3IEBAIHZvaWQgRHluYW1pY0hMU0w6OmdldFBpeGVsU2hhZGVyT3V0cHV0S2V5KGNvbnN0IGds
OjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgIGNvbnN0IGF1dG8gJnNoYWRlck91dHB1dFZh
cnMgPQogICAgICAgICAgICAgbWV0YWRhdGEuZ2V0RnJhZ21lbnRTaGFkZXIoKS0+Z2V0RGF0YSgp
LmdldEFjdGl2ZU91dHB1dFZhcmlhYmxlcygpOwogCi0gICAgICAgIGZvciAoYXV0byBvdXRwdXRQ
YWlyIDogcHJvZ3JhbURhdGEuZ2V0T3V0cHV0VmFyaWFibGVzKCkpCisgICAgICAgIGZvciAoYXV0
byBvdXRwdXRQYWlyIDogcHJvZ3JhbURhdGEuZ2V0T3V0cHV0TG9jYXRpb25zKCkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGNvbnN0IFZhcmlhYmxlTG9jYXRpb24gJm91dHB1dExvY2F0aW9uICAg
PSBvdXRwdXRQYWlyLnNlY29uZDsKICAgICAgICAgICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJs
ZSAmb3V0cHV0VmFyaWFibGUgPSBzaGFkZXJPdXRwdXRWYXJzW291dHB1dExvY2F0aW9uLmluZGV4
XTsKQEAgLTEwODQsNCArMTE1MSw5NyBAQCB2b2lkIER5bmFtaWNITFNMOjpnZXRQaXhlbFNoYWRl
ck91dHB1dEtleShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgIH0KIH0KIAorLy8g
QnVpbHRpblZhcnlpbmcgSW1wbGVtZW50YXRpb24uCitCdWlsdGluVmFyeWluZzo6QnVpbHRpblZh
cnlpbmcoKSA6IGVuYWJsZWQoZmFsc2UpLCBpbmRleCgwKSwgc3lzdGVtVmFsdWUoZmFsc2UpCit7
Cit9CisKK3N0ZDo6c3RyaW5nIEJ1aWx0aW5WYXJ5aW5nOjpzdHIoKSBjb25zdAoreworICAgIHJl
dHVybiAoc3lzdGVtVmFsdWUgPyBzZW1hbnRpYyA6IChzZW1hbnRpYyArIFN0cihpbmRleCkpKTsK
K30KKwordm9pZCBCdWlsdGluVmFyeWluZzo6ZW5hYmxlU3lzdGVtKGNvbnN0IHN0ZDo6c3RyaW5n
ICZzeXN0ZW1WYWx1ZVNlbWFudGljKQoreworICAgIGVuYWJsZWQgICAgID0gdHJ1ZTsKKyAgICBz
ZW1hbnRpYyAgICA9IHN5c3RlbVZhbHVlU2VtYW50aWM7CisgICAgc3lzdGVtVmFsdWUgPSB0cnVl
OworfQorCit2b2lkIEJ1aWx0aW5WYXJ5aW5nOjplbmFibGUoY29uc3Qgc3RkOjpzdHJpbmcgJnNl
bWFudGljVmFsLCB1bnNpZ25lZCBpbnQgaW5kZXhWYWwpCit7CisgICAgZW5hYmxlZCAgPSB0cnVl
OworICAgIHNlbWFudGljID0gc2VtYW50aWNWYWw7CisgICAgaW5kZXggICAgPSBpbmRleFZhbDsK
K30KKworLy8gQnVpbHRpblZhcnlpbmdzRDNEIEltcGxlbWVudGF0aW9uLgorQnVpbHRpblZhcnlp
bmdzRDNEOjpCdWlsdGluVmFyeWluZ3NEM0QoY29uc3QgUHJvZ3JhbUQzRE1ldGFkYXRhICZtZXRh
ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZhcnlp
bmdQYWNraW5nICZwYWNraW5nKQoreworICAgIHVwZGF0ZUJ1aWx0aW5zKFNIQURFUl9WRVJURVgs
IG1ldGFkYXRhLCBwYWNraW5nKTsKKyAgICB1cGRhdGVCdWlsdGlucyhTSEFERVJfUElYRUwsIG1l
dGFkYXRhLCBwYWNraW5nKTsKKyAgICBpZiAobWV0YWRhdGEuZ2V0UmVuZGVyZXJNYWpvclNoYWRl
ck1vZGVsKCkgPj0gNCkKKyAgICB7CisgICAgICAgIHVwZGF0ZUJ1aWx0aW5zKFNIQURFUl9HRU9N
RVRSWSwgbWV0YWRhdGEsIHBhY2tpbmcpOworICAgIH0KK30KKwordm9pZCBCdWlsdGluVmFyeWlu
Z3NEM0Q6OnVwZGF0ZUJ1aWx0aW5zKFNoYWRlclR5cGUgc2hhZGVyVHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtRDNETWV0YWRhdGEgJm1l
dGFkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZh
cnlpbmdQYWNraW5nICZwYWNraW5nKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ1c2VyU2Vt
YW50aWMgPSBHZXRWYXJ5aW5nU2VtYW50aWMobWV0YWRhdGEuZ2V0UmVuZGVyZXJNYWpvclNoYWRl
ck1vZGVsKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXRhZGF0YS51c2VzU3lzdGVtVmFsdWVQb2ludFNpemUoKSk7CisKKyAgICB1
bnNpZ25lZCBpbnQgcmVzZXJ2ZWRTZW1hbnRpY0luZGV4ID0gcGFja2luZy5nZXRNYXhTZW1hbnRp
Y0luZGV4KCk7CisKKyAgICBCdWlsdGluSW5mbyAqYnVpbHRpbnMgPSAmbUJ1aWx0aW5JbmZvW3No
YWRlclR5cGVdOworCisgICAgaWYgKG1ldGFkYXRhLmdldFJlbmRlcmVyTWFqb3JTaGFkZXJNb2Rl
bCgpID49IDQpCisgICAgeworICAgICAgICBidWlsdGlucy0+ZHhQb3NpdGlvbi5lbmFibGVTeXN0
ZW0oIlNWX1Bvc2l0aW9uIik7CisgICAgfQorICAgIGVsc2UgaWYgKHNoYWRlclR5cGUgPT0gU0hB
REVSX1BJWEVMKQorICAgIHsKKyAgICAgICAgYnVpbHRpbnMtPmR4UG9zaXRpb24uZW5hYmxlU3lz
dGVtKCJWUE9TIik7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGJ1aWx0aW5zLT5k
eFBvc2l0aW9uLmVuYWJsZVN5c3RlbSgiUE9TSVRJT04iKTsKKyAgICB9CisKKyAgICBpZiAobWV0
YWRhdGEudXNlc1RyYW5zZm9ybUZlZWRiYWNrR0xQb3NpdGlvbigpKQorICAgIHsKKyAgICAgICAg
YnVpbHRpbnMtPmdsUG9zaXRpb24uZW5hYmxlKHVzZXJTZW1hbnRpYywgcmVzZXJ2ZWRTZW1hbnRp
Y0luZGV4KyspOworICAgIH0KKworICAgIGlmIChtZXRhZGF0YS51c2VzRnJhZ0Nvb3JkKCkpCisg
ICAgeworICAgICAgICBidWlsdGlucy0+Z2xGcmFnQ29vcmQuZW5hYmxlKHVzZXJTZW1hbnRpYywg
cmVzZXJ2ZWRTZW1hbnRpY0luZGV4KyspOworICAgIH0KKworICAgIGlmIChzaGFkZXJUeXBlID09
IFNIQURFUl9WRVJURVggPyBtZXRhZGF0YS5hZGRzUG9pbnRDb29yZFRvVmVydGV4U2hhZGVyKCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbWV0YWRhdGEudXNlc1BvaW50
Q29vcmQoKSkKKyAgICB7CisgICAgICAgIC8vIFNNMyByZXNlcnZlcyB0aGUgVEVYQ09PUkQgc2Vt
YW50aWMgZm9yIHBvaW50IHNwcml0ZSB0ZXhjb29yZHMgKGdsX1BvaW50Q29vcmQpCisgICAgICAg
IC8vIEluIEQzRDExIHdlIG1hbnVhbGx5IGNvbXB1dGUgZ2xfUG9pbnRDb29yZCBpbiB0aGUgR1Mu
CisgICAgICAgIGlmIChtZXRhZGF0YS5nZXRSZW5kZXJlck1ham9yU2hhZGVyTW9kZWwoKSA+PSA0
KQorICAgICAgICB7CisgICAgICAgICAgICBidWlsdGlucy0+Z2xQb2ludENvb3JkLmVuYWJsZSh1
c2VyU2VtYW50aWMsIHJlc2VydmVkU2VtYW50aWNJbmRleCsrKTsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGJ1aWx0aW5zLT5nbFBvaW50Q29vcmQuZW5h
YmxlKCJURVhDT09SRCIsIDApOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gU3BlY2lhbCBj
YXNlOiBkbyBub3QgaW5jbHVkZSBQU0laRSBzZW1hbnRpYyBpbiBITFNMIDMgcGl4ZWwgc2hhZGVy
cworICAgIGlmIChtZXRhZGF0YS51c2VzU3lzdGVtVmFsdWVQb2ludFNpemUoKSAmJgorICAgICAg
ICAoc2hhZGVyVHlwZSAhPSBTSEFERVJfUElYRUwgfHwgbWV0YWRhdGEuZ2V0UmVuZGVyZXJNYWpv
clNoYWRlck1vZGVsKCkgPj0gNCkpCisgICAgeworICAgICAgICBidWlsdGlucy0+Z2xQb2ludFNp
emUuZW5hYmxlU3lzdGVtKCJQU0laRSIpOworICAgIH0KK30KKwogfSAgLy8gbmFtZXNwYWNlIHJ4
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL0R5bmFtaWNITFNMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL0R5bmFtaWNITFNMLmgKaW5kZXggOThlNjM4NGUyZDFlZWQ2YWM0NTIx
ODk0NGViYTQ0ZTZlMWY5MzYwMS4uNjUyYWNmOGM1ZGE3ZjU1YTZjY2U4YjFmOTJmYzM5YTNhMzRm
Mzk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9EeW5hbWljSExTTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRHluYW1pY0hMU0wuaApAQCAtMjksMjIgKzI5LDc4IEBA
IG5hbWVzcGFjZSBnbAogewogY2xhc3MgSW5mb0xvZzsKIHN0cnVjdCBWYXJpYWJsZUxvY2F0aW9u
OworY2xhc3MgVmFyeWluZ1BhY2tpbmc7CiBzdHJ1Y3QgVmVydGV4QXR0cmlidXRlOwogfQogCiBu
YW1lc3BhY2UgcngKIHsKLXN0cnVjdCBQYWNrZWRWYXJ5aW5nOwogY2xhc3MgUHJvZ3JhbUQzRE1l
dGFkYXRhOwogY2xhc3MgU2hhZGVyRDNEOwotY2xhc3MgVmFyeWluZ1BhY2tpbmc7CiAKIHN0cnVj
dCBQaXhlbFNoYWRlck91dHB1dFZhcmlhYmxlCiB7Ci0gICAgR0xlbnVtIHR5cGU7CisgICAgUGl4
ZWxTaGFkZXJPdXRwdXRWYXJpYWJsZSgpIHt9CisgICAgUGl4ZWxTaGFkZXJPdXRwdXRWYXJpYWJs
ZShHTGVudW0gdHlwZUluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJm5hbWVJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzb3VyY2VJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBvdXRwdXRJbmRleEluKQorICAgICAgICA6IHR5cGUodHlwZUluKSwgbmFtZShuYW1lSW4pLCBz
b3VyY2Uoc291cmNlSW4pLCBvdXRwdXRJbmRleChvdXRwdXRJbmRleEluKQorICAgIHsKKyAgICB9
CisKKyAgICBHTGVudW0gdHlwZSA9IEdMX05PTkU7CiAgICAgc3RkOjpzdHJpbmcgbmFtZTsKICAg
ICBzdGQ6OnN0cmluZyBzb3VyY2U7Ci0gICAgc2l6ZV90IG91dHB1dEluZGV4OworICAgIHNpemVf
dCBvdXRwdXRJbmRleCA9IDA7Cit9OworCitzdHJ1Y3QgQnVpbHRpblZhcnlpbmcgZmluYWwgOiBh
bmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgICBCdWlsdGluVmFyeWluZygpOworCisgICAgc3RkOjpz
dHJpbmcgc3RyKCkgY29uc3Q7CisgICAgdm9pZCBlbmFibGVTeXN0ZW0oY29uc3Qgc3RkOjpzdHJp
bmcgJnN5c3RlbVZhbHVlU2VtYW50aWMpOworICAgIHZvaWQgZW5hYmxlKGNvbnN0IHN0ZDo6c3Ry
aW5nICZzZW1hbnRpY1ZhbCwgdW5zaWduZWQgaW50IGluZGV4VmFsKTsKKworICAgIGJvb2wgZW5h
YmxlZDsKKyAgICBzdGQ6OnN0cmluZyBzZW1hbnRpYzsKKyAgICB1bnNpZ25lZCBpbnQgaW5kZXg7
CisgICAgYm9vbCBzeXN0ZW1WYWx1ZTsKK307CisKK3N0cnVjdCBCdWlsdGluSW5mbworeworICAg
IEJ1aWx0aW5WYXJ5aW5nIGR4UG9zaXRpb247CisgICAgQnVpbHRpblZhcnlpbmcgZ2xQb3NpdGlv
bjsKKyAgICBCdWlsdGluVmFyeWluZyBnbEZyYWdDb29yZDsKKyAgICBCdWlsdGluVmFyeWluZyBn
bFBvaW50Q29vcmQ7CisgICAgQnVpbHRpblZhcnlpbmcgZ2xQb2ludFNpemU7Cit9OworCitpbmxp
bmUgc3RkOjpzdHJpbmcgR2V0VmFyeWluZ1NlbWFudGljKGludCBtYWpvclNoYWRlck1vZGVsLCBi
b29sIHByb2dyYW1Vc2VzUG9pbnRTaXplKQoreworICAgIC8vIFNNMyByZXNlcnZlcyB0aGUgVEVY
Q09PUkQgc2VtYW50aWMgZm9yIHBvaW50IHNwcml0ZSB0ZXhjb29yZHMgKGdsX1BvaW50Q29vcmQp
CisgICAgLy8gSW4gRDNEMTEgd2UgbWFudWFsbHkgY29tcHV0ZSBnbF9Qb2ludENvb3JkIGluIHRo
ZSBHUy4KKyAgICByZXR1cm4gKChwcm9ncmFtVXNlc1BvaW50U2l6ZSAmJiBtYWpvclNoYWRlck1v
ZGVsIDwgNCkgPyAiQ09MT1IiIDogIlRFWENPT1JEIik7Cit9CisKK2NsYXNzIEJ1aWx0aW5WYXJ5
aW5nc0QzRAoreworICBwdWJsaWM6CisgICAgQnVpbHRpblZhcnlpbmdzRDNEKGNvbnN0IFByb2dy
YW1EM0RNZXRhZGF0YSAmbWV0YWRhdGEsIGNvbnN0IGdsOjpWYXJ5aW5nUGFja2luZyAmcGFja2lu
Zyk7CisKKyAgICBib29sIHVzZXNQb2ludFNpemUoKSBjb25zdCB7IHJldHVybiBtQnVpbHRpbklu
Zm9bU0hBREVSX1ZFUlRFWF0uZ2xQb2ludFNpemUuZW5hYmxlZDsgfQorCisgICAgY29uc3QgQnVp
bHRpbkluZm8gJm9wZXJhdG9yW10oU2hhZGVyVHlwZSBzaGFkZXJUeXBlKSBjb25zdCB7IHJldHVy
biBtQnVpbHRpbkluZm9bc2hhZGVyVHlwZV07IH0KKyAgICBCdWlsdGluSW5mbyAmb3BlcmF0b3Jb
XShTaGFkZXJUeXBlIHNoYWRlclR5cGUpIHsgcmV0dXJuIG1CdWlsdGluSW5mb1tzaGFkZXJUeXBl
XTsgfQorCisgIHByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVCdWlsdGlucyhTaGFkZXJUeXBlIHNo
YWRlclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtRDNETWV0YWRh
dGEgJm1ldGFkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZhcnlpbmdQ
YWNraW5nICZwYWNraW5nKTsKKworICAgIHN0ZDo6YXJyYXk8QnVpbHRpbkluZm8sIFNIQURFUl9U
WVBFX01BWD4gbUJ1aWx0aW5JbmZvOwogfTsKIAogY2xhc3MgRHluYW1pY0hMU0wgOiBhbmdsZTo6
Tm9uQ29weWFibGUKQEAgLTYxLDE0ICsxMTcsMTcgQEAgY2xhc3MgRHluYW1pY0hMU0wgOiBhbmds
ZTo6Tm9uQ29weWFibGUKICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8UGl4ZWxTaGFkZXJPdXRw
dXRWYXJpYWJsZT4gJm91dHB1dFZhcmlhYmxlcywKICAgICAgICAgYm9vbCB1c2VzRnJhZ0RlcHRo
LAogICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxHTGVudW0+ICZvdXRwdXRMYXlvdXQpIGNvbnN0
OwotICAgIGJvb2wgZ2VuZXJhdGVTaGFkZXJMaW5rSExTTChjb25zdCBnbDo6Q29udGV4dFN0YXRl
ICZkYXRhLAorICAgIHZvaWQgZ2VuZXJhdGVTaGFkZXJMaW5rSExTTChjb25zdCBnbDo6Q29udGV4
dFN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UHJvZ3JhbVN0YXRlICZwcm9ncmFtRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgUHJvZ3JhbUQzRE1ldGFkYXRhICZwcm9ncmFtTWV0YWRhdGEsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZhcnlpbmdQYWNraW5nICZ2YXJ5aW5nUGFja2lu
ZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZhcnlpbmdQYWNr
aW5nICZ2YXJ5aW5nUGFja2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgQnVpbHRpblZhcnlpbmdzRDNEICZidWlsdGluc0QzRCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnBpeGVsSExTTCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnZlcnRleEhMU0wpIGNvbnN0OworICAgIHN0ZDo6c3Ry
aW5nIGdlbmVyYXRlQ29tcHV0ZVNoYWRlckxpbmtITFNMKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUg
JnByb2dyYW1EYXRhKSBjb25zdDsKIAotICAgIHN0ZDo6c3RyaW5nIGdlbmVyYXRlR2VvbWV0cnlT
aGFkZXJQcmVhbWJsZShjb25zdCBWYXJ5aW5nUGFja2luZyAmdmFyeWluZ1BhY2tpbmcpIGNvbnN0
OworICAgIHN0ZDo6c3RyaW5nIGdlbmVyYXRlR2VvbWV0cnlTaGFkZXJQcmVhbWJsZShjb25zdCBn
bDo6VmFyeWluZ1BhY2tpbmcgJnZhcnlpbmdQYWNraW5nLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCdWlsdGluVmFyeWluZ3NEM0QgJmJ1aWx0
aW5zRDNEKSBjb25zdDsKIAogICAgIHN0ZDo6c3RyaW5nIGdlbmVyYXRlR2VvbWV0cnlTaGFkZXJI
TFNMKGdsOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKQEAg
LTg0LDExICsxNDMsMTAgQEAgY2xhc3MgRHluYW1pY0hMU0wgOiBhbmdsZTo6Tm9uQ29weWFibGUK
ICAgcHJpdmF0ZToKICAgICBSZW5kZXJlckQzRCAqY29uc3QgbVJlbmRlcmVyOwogCi0gICAgdm9p
ZCBnZW5lcmF0ZVZhcnlpbmdMaW5rSExTTChTaGFkZXJUeXBlIHNoYWRlclR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWYXJ5aW5nUGFja2luZyAmdmFyeWluZ1Bh
Y2tpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVh
bSAmbGlua1N0cmVhbSkgY29uc3Q7Ci0gICAgdm9pZCBnZW5lcmF0ZVZhcnlpbmdITFNMKGNvbnN0
IFZhcnlpbmdQYWNraW5nICZ2YXJ5aW5nUGFja2luZywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gJmhsc2xTdHJlYW0pIGNvbnN0OworICAgIHZvaWQgZ2Vu
ZXJhdGVWYXJ5aW5nTGlua0hMU0woY29uc3QgZ2w6OlZhcnlpbmdQYWNraW5nICZ2YXJ5aW5nUGFj
a2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJ1aWx0aW5JbmZv
ICZidWlsdGlucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJvZ3Jh
bVVzZXNQb2ludFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0
cmluZ3N0cmVhbSAmaGxzbFN0cmVhbSkgY29uc3Q7CiAKICAgICAvLyBQcmVwZW5kIGFuIHVuZGVy
c2NvcmUKICAgICBzdGF0aWMgc3RkOjpzdHJpbmcgZGVjb3JhdGVWYXJpYWJsZShjb25zdCBzdGQ6
OnN0cmluZyAmbmFtZSk7CkBAIC05Nyw3ICsxNTUsNiBAQCBjbGFzcyBEeW5hbWljSExTTCA6IGFu
Z2xlOjpOb25Db3B5YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZzaGFkZXJBdHRyaWIpIGNvbnN0Owog
fTsKIAotc3RkOjpzdHJpbmcgR2V0VmFyeWluZ1NlbWFudGljKGludCBtYWpvclNoYWRlck1vZGVs
LCBib29sIHByb2dyYW1Vc2VzUG9pbnRTaXplKTsKLX0KK30gIC8vIG5hbWVzcGFjZSByeAogCiAj
ZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EWU5BTUlDSExTTF9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9FR0xJ
bWFnZUQzRC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL0VHTEltYWdlRDNELmNwcAppbmRleCAzMGNjNGQ1ZmY4YTQ0MGE2ZGI2NmU2YjQ0NWY0
ZDNmY2IzNTM1ZDM5Li4xOWU4Zjk5YWFmNmJjMmNiMjMxMDA2Y2U0NTFlZGUxNzIyNDdmMDQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL0VHTEltYWdlRDNELmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL0VHTEltYWdlRDNELmNwcApAQCAtODUsNyArODUsNyBAQCBnbDo6
RXJyb3IgRUdMSW1hZ2VEM0Q6Om9ycGhhbihlZ2w6OkltYWdlU2libGluZyAqc2libGluZykKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAg
IHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgRUdMSW1hZ2VEM0Q6OmdldFJl
bmRlclRhcmdldChSZW5kZXJUYXJnZXREM0QgKipvdXRSVCkgY29uc3QKQEAgLTEwMCwxMyArMTAw
LDEzIEBAIGdsOjpFcnJvciBFR0xJbWFnZUQzRDo6Z2V0UmVuZGVyVGFyZ2V0KFJlbmRlclRhcmdl
dEQzRCAqKm91dFJUKSBjb25zdAogICAgICAgICB9CiAKICAgICAgICAgKm91dFJUID0gc3RhdGlj
X2Nhc3Q8UmVuZGVyVGFyZ2V0RDNEICo+KHJ0KTsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KICAgICBl
bHNlCiAgICAgewogICAgICAgICBBU1NFUlQobVJlbmRlclRhcmdldCk7CiAgICAgICAgICpvdXRS
VCA9IG1SZW5kZXJUYXJnZXQ7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVi
dWZmZXJEM0QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9GcmFtZWJ1ZmZlckQzRC5jcHAKaW5kZXggZjZlZWY2ZjRjZDQzZWM5NTYzOTA2OTFi
NjFjNTIzYTJiYzIyYmExZS4uNjhiMjkxNzNhZTFmODFhM2NmNmI3MzE3OGVlN2E3ODQ2NjFkOWUy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9GcmFtZWJ1ZmZlckQzRC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFtZWJ1ZmZlckQzRC5jcHAKQEAgLTgsNyArOCw3
IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuaCIK
IAotI2luY2x1ZGUgImNvbW1vbi9CaXRTZXRJdGVyYXRvci5oIgorI2luY2x1ZGUgImNvbW1vbi9i
aXRzZXRfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZm
ZXJBdHRhY2htZW50LmgiCkBAIC0yNjMsNDAgKzI2MywxMiBAQCBnbDo6RXJyb3IgRnJhbWVidWZm
ZXJEM0Q6OmJsaXQoQ29udGV4dEltcGwgKmNvbnRleHQsCiB7CiAgICAgY29uc3QgYXV0byAmZ2xT
dGF0ZSAgICAgICAgICAgICAgICAgICAgICA9IGNvbnRleHQtPmdldEdMU3RhdGUoKTsKICAgICBj
b25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZUZyYW1lYnVmZmVyID0gZ2xTdGF0ZS5nZXRSZWFk
RnJhbWVidWZmZXIoKTsKLSAgICBib29sIGJsaXRSZW5kZXJUYXJnZXQgPSBmYWxzZTsKLSAgICBp
ZiAoKG1hc2sgJiBHTF9DT0xPUl9CVUZGRVJfQklUKSAmJiBzb3VyY2VGcmFtZWJ1ZmZlci0+Z2V0
UmVhZENvbG9yYnVmZmVyKCkgIT0gbnVsbHB0ciAmJgotICAgICAgICBtU3RhdGUuZ2V0Rmlyc3RD
b2xvckF0dGFjaG1lbnQoKSAhPSBudWxscHRyKQotICAgIHsKLSAgICAgICAgYmxpdFJlbmRlclRh
cmdldCA9IHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBibGl0U3RlbmNpbCA9IGZhbHNlOwotICAg
IGlmICgobWFzayAmIEdMX1NURU5DSUxfQlVGRkVSX0JJVCkgJiYgc291cmNlRnJhbWVidWZmZXIt
PmdldFN0ZW5jaWxidWZmZXIoKSAhPSBudWxscHRyICYmCi0gICAgICAgIG1TdGF0ZS5nZXRTdGVu
Y2lsQXR0YWNobWVudCgpICE9IG51bGxwdHIpCi0gICAgewotICAgICAgICBibGl0U3RlbmNpbCA9
IHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBibGl0RGVwdGggPSBmYWxzZTsKLSAgICBpZiAoKG1h
c2sgJiBHTF9ERVBUSF9CVUZGRVJfQklUKSAmJiBzb3VyY2VGcmFtZWJ1ZmZlci0+Z2V0RGVwdGhi
dWZmZXIoKSAhPSBudWxscHRyICYmCi0gICAgICAgIG1TdGF0ZS5nZXREZXB0aEF0dGFjaG1lbnQo
KSAhPSBudWxscHRyKQotICAgIHsKLSAgICAgICAgYmxpdERlcHRoID0gdHJ1ZTsKLSAgICB9Cisg
ICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAqc2Npc3NvciA9IGdsU3RhdGUuaXNTY2lzc29yVGVzdEVu
YWJsZWQoKSA/ICZnbFN0YXRlLmdldFNjaXNzb3IoKSA6IG51bGxwdHI7CisgICAgQU5HTEVfVFJZ
KGJsaXRJbXBsKHNvdXJjZUFyZWEsIGRlc3RBcmVhLCBzY2lzc29yLCAobWFzayAmIEdMX0NPTE9S
X0JVRkZFUl9CSVQpICE9IDAsCisgICAgICAgICAgICAgICAgICAgICAgIChtYXNrICYgR0xfREVQ
VEhfQlVGRkVSX0JJVCkgIT0gMCwgKG1hc2sgJiBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpICE9IDAs
CisgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciwgc291cmNlRnJhbWVidWZmZXIpKTsKIAot
ICAgIGlmIChibGl0UmVuZGVyVGFyZ2V0IHx8IGJsaXREZXB0aCB8fCBibGl0U3RlbmNpbCkKLSAg
ICB7Ci0gICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3IgPQotICAgICAgICAgICAg
Z2xTdGF0ZS5pc1NjaXNzb3JUZXN0RW5hYmxlZCgpID8gJmdsU3RhdGUuZ2V0U2Npc3NvcigpIDog
bnVsbHB0cjsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gYmxpdEltcGwoc291cmNlQXJlYSwg
ZGVzdEFyZWEsIHNjaXNzb3IsIGJsaXRSZW5kZXJUYXJnZXQsIGJsaXREZXB0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxpdFN0ZW5jaWwsIGZpbHRlciwgc291cmNlRnJh
bWVidWZmZXIpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogYm9v
bCBGcmFtZWJ1ZmZlckQzRDo6Y2hlY2tTdGF0dXMoKSBjb25zdApAQCAtMzI0LDcgKzI5Niw4IEBA
IGJvb2wgRnJhbWVidWZmZXJEM0Q6OmNoZWNrU3RhdHVzKCkgY29uc3QKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBGcmFtZWJ1ZmZlckQzRDo6c3luY1N0YXRlKGNvbnN0IGdsOjpGcmFtZWJ1
ZmZlcjo6RGlydHlCaXRzICZkaXJ0eUJpdHMpCit2b2lkIEZyYW1lYnVmZmVyRDNEOjpzeW5jU3Rh
dGUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGlydHlCaXRzICZkaXJ0eUJpdHMpCiB7CiAgICAg
Ym9vbCBpbnZhbGlkYXRlQ29sb3JBdHRhY2htZW50Q2FjaGUgPSBmYWxzZTsKIApAQCAtMzgwLDQg
KzM1Myw5IEBAIGNvbnN0IGdsOjpBdHRhY2htZW50TGlzdCAmRnJhbWVidWZmZXJEM0Q6OmdldENv
bG9yQXR0YWNobWVudHNGb3JSZW5kZXIoKSBjb25zdAogICAgIHJldHVybiBtQ29sb3JBdHRhY2ht
ZW50c0ZvclJlbmRlci52YWx1ZSgpOwogfQogCitnbDo6RXJyb3IgRnJhbWVidWZmZXJEM0Q6Omdl
dFNhbXBsZVBvc2l0aW9uKHNpemVfdCBpbmRleCwgR0xmbG9hdCAqeHkpIGNvbnN0Cit7CisgICAg
cmV0dXJuIGdsOjpJbnRlcm5hbEVycm9yKCkgPDwgImdldFNhbXBsZVBvc2l0aW9uIGlzIHVuaW1w
bGVtZW50ZWQuIjsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNE
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0Zy
YW1lYnVmZmVyRDNELmgKaW5kZXggZTU2ZWU3YzBiMDFlNWIzOTAyMjY0OGYxOWI5NjljNWY3ZGM2
MTQyZS4uYzZlYWI1Njc1ZjAzMDZlNTczNTdiMDlmODJjMDI3ODE5MmVjYmQxOCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFt
ZWJ1ZmZlckQzRC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuaApAQCAtMzAsNyArMzAsNiBAQCBuYW1lc3BhY2Ug
cngKIHsKIGNsYXNzIFJlbmRlcmVyRDNEOwogY2xhc3MgUmVuZGVyVGFyZ2V0RDNEOwotc3RydWN0
IFdvcmthcm91bmRzRDNEOwogCiBzdHJ1Y3QgQ2xlYXJQYXJhbWV0ZXJzCiB7CkBAIC05NiwxMCAr
OTUsMTIgQEAgY2xhc3MgRnJhbWVidWZmZXJEM0QgOiBwdWJsaWMgRnJhbWVidWZmZXJJbXBsCiAK
ICAgICBib29sIGNoZWNrU3RhdHVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHN5bmNT
dGF0ZShjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHN5bmNTdGF0ZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsIGNvbnN0IGds
OjpGcmFtZWJ1ZmZlcjo6RGlydHlCaXRzICZkaXJ0eUJpdHMpIG92ZXJyaWRlOwogCiAgICAgY29u
c3QgZ2w6OkF0dGFjaG1lbnRMaXN0ICZnZXRDb2xvckF0dGFjaG1lbnRzRm9yUmVuZGVyKCkgY29u
c3Q7CiAKKyAgICBnbDo6RXJyb3IgZ2V0U2FtcGxlUG9zaXRpb24oc2l6ZV90IGluZGV4LCBHTGZs
b2F0ICp4eSkgY29uc3Qgb3ZlcnJpZGU7CisKICAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGdsOjpF
cnJvciBjbGVhckltcGwoQ29udGV4dEltcGwgKmltcGwsIGNvbnN0IENsZWFyUGFyYW1ldGVycyAm
Y2xlYXJQYXJhbXMpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9ITFNMQ29tcGlsZXIuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9ITFNMQ29tcGlsZXIuY3BwCmlu
ZGV4IDMwNWI2YzRlNGFjOTZkZTE4ODRlNTgyYWM1ZGJiMjgyMzdjZmU2Y2EuLjNiNGQ2MzgxN2Nl
ZjBmNmNiNmUzNjIwYTM4NzA5NzEwM2ZhMTAyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSExTTENvbXBpbGVyLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0hMU0xD
b21waWxlci5jcHAKQEAgLTEwNiwxMSArMTA2LDExIEBAIEhMU0xDb21waWxlcjo6fkhMU0xDb21w
aWxlcigpCiAgICAgcmVsZWFzZSgpOwogfQogCi1nbDo6RXJyb3IgSExTTENvbXBpbGVyOjppbml0
aWFsaXplKCkKK2dsOjpFcnJvciBITFNMQ29tcGlsZXI6OmVuc3VyZUluaXRpYWxpemVkKCkKIHsK
ICAgICBpZiAobUluaXRpYWxpemVkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KIAogICAg
IFRSQUNFX0VWRU5UMCgiZ3B1LmFuZ2xlIiwgIkhMU0xDb21waWxlcjo6aW5pdGlhbGl6ZSIpOwpA
QCAtMTM2LDcgKzEzNiw3IEBAIGdsOjpFcnJvciBITFNMQ29tcGlsZXI6OmluaXRpYWxpemUoKQog
CiAgICAgaWYgKCFtRDNEQ29tcGlsZXJNb2R1bGUpCiAgICAgewotICAgICAgICBFUlIoIkQzRCBj
b21waWxlciBtb2R1bGUgbm90IGZvdW5kLiIpOworICAgICAgICBFUlIoKSA8PCAiRDNEIGNvbXBp
bGVyIG1vZHVsZSBub3QgZm91bmQuIjsKICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRf
T0ZfTUVNT1JZLCAiRDNEIGNvbXBpbGVyIG1vZHVsZSBub3QgZm91bmQuIik7CiAgICAgfQogCkBA
IC0xNjAsNyArMTYwLDcgQEAgZ2w6OkVycm9yIEhMU0xDb21waWxlcjo6aW5pdGlhbGl6ZSgpCiAg
ICAgfQogCiAgICAgbUluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogdm9pZCBITFNMQ29t
cGlsZXI6OnJlbGVhc2UoKQpAQCAtMTc5LDExICsxNzksNyBAQCBnbDo6RXJyb3IgSExTTENvbXBp
bGVyOjpjb21waWxlVG9CaW5hcnkoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IHN0ZDo6c3Ry
aW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8Q29tcGlsZUNvbmZpZz4gJmNvbmZpZ3MsIGNvbnN0IEQzRF9TSEFERVJfTUFDUk8gKm92
ZXJyaWRlTWFjcm9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElE
M0RCbG9iICoqb3V0Q29tcGlsZWRCbG9iLCBzdGQ6OnN0cmluZyAqb3V0RGVidWdJbmZvKQogewot
ICAgIGdsOjpFcnJvciBlcnJvciA9IGluaXRpYWxpemUoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBU1NFUlQobUlu
aXRpYWxpemVkKTsKIAogI2lmICFkZWZpbmVkKEFOR0xFX0VOQUJMRV9XSU5ET1dTX1NUT1JFKQog
ICAgIEFTU0VSVChtRDNEQ29tcGlsZXJNb2R1bGUpOwpAQCAtMjIxLDggKzIxNyw4IEBAIGdsOjpF
cnJvciBITFNMQ29tcGlsZXI6OmNvbXBpbGVUb0JpbmFyeShnbDo6SW5mb0xvZyAmaW5mb0xvZywg
Y29uc3Qgc3RkOjpzdHJpbmcKICAgICAgICAgICAgIFNhZmVSZWxlYXNlKGVycm9yTWVzc2FnZSk7
CiAKICAgICAgICAgICAgIGluZm9Mb2cuYXBwZW5kU2FuaXRpemVkKG1lc3NhZ2UuY19zdHIoKSk7
Ci0gICAgICAgICAgICBUUkFDRSgiXG4lcyIsIGhsc2wuY19zdHIoKSk7Ci0gICAgICAgICAgICBU
UkFDRSgiXG4lcyIsIG1lc3NhZ2UuY19zdHIoKSk7CisgICAgICAgICAgICBXQVJOKCkgPDwgc3Rk
OjplbmRsIDw8IGhsc2w7CisgICAgICAgICAgICBXQVJOKCkgPDwgc3RkOjplbmRsIDw8IG1lc3Nh
Z2U7CiAKICAgICAgICAgICAgIGlmICgobWVzc2FnZS5maW5kKCJlcnJvciBYMzUzMToiKSAhPSBz
dGQ6OnN0cmluZzo6bnBvcyB8fCAgLy8gImNhbid0IHVucm9sbCBsb29wcyBtYXJrZWQgd2l0aCBs
b29wIGF0dHJpYnV0ZSIKICAgICAgICAgICAgICAgICAgbWVzc2FnZS5maW5kKCJlcnJvciBYNDAx
NDoiKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykgJiYgLy8gImNhbm5vdCBoYXZlIGdyYWRpZW50IG9w
ZXJhdGlvbnMgaW5zaWRlIGxvb3BzIHdpdGggZGl2ZXJnZW50IGZsb3cgY29udHJvbCIsCkBAIC0y
NzAsMTQgKzI2NiwxMCBAQCBnbDo6RXJyb3IgSExTTENvbXBpbGVyOjpjb21waWxlVG9CaW5hcnko
Z2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IHN0ZDo6c3RyaW5nCiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGRpc2Fzc2VtYmx5OwotICAgICAgICAgICAgZXJyb3Ig
PSBkaXNhc3NlbWJsZUJpbmFyeShiaW5hcnksICZkaXNhc3NlbWJseSk7Ci0gICAgICAgICAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biBlcnJvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFOR0xFX1RSWShkaXNhc3NlbWJs
ZUJpbmFyeShiaW5hcnksICZkaXNhc3NlbWJseSkpOwogICAgICAgICAgICAgKCpvdXREZWJ1Z0lu
Zm8pICs9ICJcbiIgKyBkaXNhc3NlbWJseSArICJcbi8vIEFTU0VNQkxZIEVORFxuIjsKICNlbmRp
ZiAgLy8gQU5HTEVfQVBQRU5EX0FTU0VNQkxZX1RPX1NIQURFUl9ERUJVR19JTkZPID09IEFOR0xF
X0VOQUJMRUQKLSAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAg
ICAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
cmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpCkBAIC0yOTcsMTYgKzI4OSwxMiBAQCBnbDo6RXJyb3Ig
SExTTENvbXBpbGVyOjpjb21waWxlVG9CaW5hcnkoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGNvbnN0
IHN0ZDo6c3RyaW5nCiAKICAgICAvLyBOb25lIG9mIHRoZSBjb25maWd1cmF0aW9ucyBzdWNjZWVk
ZWQgaW4gY29tcGlsaW5nIHRoaXMgc2hhZGVyIGJ1dCB0aGUgY29tcGlsZXIgaXMgc3RpbGwgaW50
YWN0CiAgICAgKm91dENvbXBpbGVkQmxvYiA9IG51bGxwdHI7Ci0gICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJv
ciBITFNMQ29tcGlsZXI6OmRpc2Fzc2VtYmxlQmluYXJ5KElEM0RCbG9iICpzaGFkZXJCaW5hcnks
IHN0ZDo6c3RyaW5nICpkaXNhc3NlbWJseU91dCkKIHsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBp
bml0aWFsaXplKCk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBlcnJvcjsKLSAgICB9CisgICAgQU5HTEVfVFJZKGVuc3VyZUluaXRpYWxpemVkKCkpOwog
CiAgICAgLy8gUmV0cmlldmUgZGlzYXNzZW1ibHkKICAgICBVSU5UIGZsYWdzID0gRDNEX0RJU0FT
TV9FTkFCTEVfREVGQVVMVF9WQUxVRV9QUklOVFMgfCBEM0RfRElTQVNNX0VOQUJMRV9JTlNUUlVD
VElPTl9OVU1CRVJJTkc7CkBAIC0zMjcsNyArMzE1LDcgQEAgZ2w6OkVycm9yIEhMU0xDb21waWxl
cjo6ZGlzYXNzZW1ibGVCaW5hcnkoSUQzREJsb2IgKnNoYWRlckJpbmFyeSwgc3RkOjpzdHJpbmcg
KmQKIAogICAgIFNhZmVSZWxlYXNlKGRpc2Fzc2VtYmx5KTsKIAotICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB9ICAvLyBu
YW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvSExTTENvbXBpbGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0hMU0xDb21waWxlci5oCmluZGV4IDNjMGQyYWRj
YWNmNjg5NTBhNmIzMDYwNDdhZGU4YmRjYTkyZjY0YjMuLmM4ZjllYWMyOTBlMWRhMGJjYmYzZTY3
ZTQxMmM2MzFjZTAzNjM3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSExTTENvbXBpbGVyLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9ITFNMQ29tcGlsZXIuaApAQCAt
MSwzICsxLDExIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEhMU0xDb21waWxlcjogV3JhcHBlciBmb3Ig
dGhlIEQzRENvbXBpbGVyIERMTC4KKy8vCisKICNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfRDNE
X0hMU0xDT01QSUxFUl9IXwogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfSExTTENPTVBJ
TEVSX0hfCiAKQEAgLTQxLDkgKzQ5LDkgQEAgY2xhc3MgSExTTENvbXBpbGVyIDogYW5nbGU6Ok5v
bkNvcHlhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEQmxvYiAqKm91dENv
bXBpbGVkQmxvYiwgc3RkOjpzdHJpbmcgKm91dERlYnVnSW5mbyk7CiAKICAgICBnbDo6RXJyb3Ig
ZGlzYXNzZW1ibGVCaW5hcnkoSUQzREJsb2IgKnNoYWRlckJpbmFyeSwgc3RkOjpzdHJpbmcgKmRp
c2Fzc2VtYmx5T3V0KTsKKyAgICBnbDo6RXJyb3IgZW5zdXJlSW5pdGlhbGl6ZWQoKTsKIAogICBw
cml2YXRlOgotICAgIGdsOjpFcnJvciBpbml0aWFsaXplKCk7CiAKICAgICBib29sIG1Jbml0aWFs
aXplZDsKICAgICBITU9EVUxFIG1EM0RDb21waWxlck1vZHVsZTsKQEAgLTUzLDQgKzYxLDQgQEAg
Y2xhc3MgSExTTENvbXBpbGVyIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKIH0KIAotI2VuZGlmIC8v
IExJQkFOR0xFX1JFTkRFUkVSX0QzRF9ITFNMQ09NUElMRVJfSF8KKyNlbmRpZiAgLy8gTElCQU5H
TEVfUkVOREVSRVJfRDNEX0hMU0xDT01QSUxFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9JbWFnZUQzRC5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9JbWFnZUQzRC5oCmlu
ZGV4IDk0N2E4MzI4ZjU3NGM4ZDdlY2ZlOGYyMGM5YzkwN2Q2ZDU2YjkyMGQuLmZmNjAzNjIzMGRh
YzRjYzA1Mzg0NjU5YzEzNjI2ODc2NTliNzMwOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSW1hZ2VEM0QuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0ltYWdlRDNELmgK
QEAgLTU4LDEwICs1OCwyMiBAQCBjbGFzcyBJbWFnZUQzRCA6IGFuZ2xlOjpOb25Db3B5YWJsZQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlTa2lwSW1hZ2VzKSA9IDA7
CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgbG9hZENvbXByZXNzZWREYXRhKGNvbnN0IGdsOjpCb3gg
JmFyZWEsIGNvbnN0IHZvaWQgKmlucHV0KSA9IDA7CiAKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBz
ZXRNYW5hZ2VkU3VyZmFjZTJEKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBpbnQgbGV2ZWwpIHsg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7IH07Ci0gICAgdmlydHVhbCBnbDo6RXJyb3Ig
c2V0TWFuYWdlZFN1cmZhY2VDdWJlKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBpbnQgZmFjZSwg
aW50IGxldmVsKSB7IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOyB9OwotICAgIHZpcnR1
YWwgZ2w6OkVycm9yIHNldE1hbmFnZWRTdXJmYWNlM0QoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2Us
IGludCBsZXZlbCkgeyByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsgfTsKLSAgICB2aXJ0
dWFsIGdsOjpFcnJvciBzZXRNYW5hZ2VkU3VyZmFjZTJEQXJyYXkoVGV4dHVyZVN0b3JhZ2UgKnN0
b3JhZ2UsIGludCBsYXllciwgaW50IGxldmVsKSB7IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOyB9OworICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldE1hbmFnZWRTdXJmYWNlMkQoVGV4dHVy
ZVN0b3JhZ2UgKnN0b3JhZ2UsIGludCBsZXZlbCkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOworICAgIH07CisgICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0TWFuYWdlZFN1cmZh
Y2VDdWJlKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBpbnQgZmFjZSwgaW50IGxldmVsKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAgfTsKKyAgICB2aXJ0dWFsIGds
OjpFcnJvciBzZXRNYW5hZ2VkU3VyZmFjZTNEKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBpbnQg
bGV2ZWwpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICB9OworICAg
IHZpcnR1YWwgZ2w6OkVycm9yIHNldE1hbmFnZWRTdXJmYWNlMkRBcnJheShUZXh0dXJlU3RvcmFn
ZSAqc3RvcmFnZSwgaW50IGxheWVyLCBpbnQgbGV2ZWwpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKKyAgICB9OwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNvcHlUb1N0b3Jh
Z2UoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwg
Y29uc3QgZ2w6OkJveCAmcmVnaW9uKSA9IDA7CiAKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBjb3B5
RnJvbVRleFN0b3JhZ2UoY29uc3QgZ2w6OkltYWdlSW5kZXggJmltYWdlSW5kZXgsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0lu
ZGV4QnVmZmVyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvSW5kZXhCdWZmZXIuY3BwCmluZGV4IDY3N2I4YmIyNDBmNzZhNTk5N2M0Y2M1MjRh
MGJjZTllZjhhMjIzMzIuLmRmM2ZhNjkxNzQ0YjAzOTA4ZWI2YTY2MGM4NDc0ODdmNzQyOTU4ZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvSW5kZXhCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvSW5kZXhCdWZmZXIuY3BwCkBAIC05MCw3ICs5MCw3IEBAIGds
OjpFcnJvciBJbmRleEJ1ZmZlckludGVyZmFjZTo6bWFwQnVmZmVyKHVuc2lnbmVkIGludCBzaXpl
LCB2b2lkICoqb3V0TWFwcGVkTWVtCiAgICAgfQogCiAgICAgbVdyaXRlUG9zaXRpb24gKz0gc2l6
ZTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEluZGV4QnVmZmVySW50ZXJmYWNlOjp1bm1hcEJ1ZmZl
cigpCkBAIC0xNjIsNyArMTYyLDcgQEAgZ2w6OkVycm9yIFN0cmVhbWluZ0luZGV4QnVmZmVySW50
ZXJmYWNlOjpyZXNlcnZlQnVmZmVyU3BhY2UodW5zaWduZWQgaW50IHNpemUsIEcKICAgICAgICAg
c2V0V3JpdGVQb3NpdGlvbigwKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05P
X0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogCkBAIC0xODQsNyArMTg0
LDcgQEAgZ2w6OkVycm9yIFN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZlQnVmZmVy
U3BhY2UodW5zaWduZWQgaW50IHNpemUsIEdMZW4KICAgICB9CiAgICAgZWxzZSBpZiAoY3VyU2l6
ZSA+PSBzaXplICYmIGluZGV4VHlwZSA9PSBnZXRJbmRleFR5cGUoKSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSW5kZXhEYXRhTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0luZGV4
RGF0YU1hbmFnZXIuY3BwCmluZGV4IDQ3NGM3N2ZjZTQ0NjhmZWZkODFhODljMmE5MTc2ZDIzNmM5
MzZkY2QuLjdhYzkxNzRjYTdlMTk0OGVkNThkZmZlOWZiNzFjMTk0YjBkZWQ5ZWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSW5k
ZXhEYXRhTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9JbmRleERhdGFNYW5hZ2VyLmNwcApAQCAtMTE4LDcgKzExOCw3IEBA
IGdsOjpFcnJvciBTdHJlYW1JbkluZGV4QnVmZmVyKEluZGV4QnVmZmVySW50ZXJmYWNlICpidWZm
ZXIsCiAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogfSAgLy8gYW5v
bnltb3VzIG5hbWVzcGFjZQpAQCAtMTM3LDYgKzEzNyw1MiBAQCBJbmRleERhdGFNYW5hZ2VyOjp+
SW5kZXhEYXRhTWFuYWdlcigpCiAgICAgU2FmZURlbGV0ZShtU3RyZWFtaW5nQnVmZmVySW50KTsK
IH0KIAorYm9vbCBJbmRleERhdGFNYW5hZ2VyOjp1c2VQcmltaXRpdmVSZXN0YXJ0V29ya2Fyb3Vu
ZChib29sIHByaW1pdGl2ZVJlc3RhcnRGaXhlZEluZGV4RW5hYmxlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUpCit7Cisg
ICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGhhdmUgdG8gZGVhbCB3aXRoIHByaW1pdGl2ZSByZXN0YXJ0
IHdvcmthcm91bmQgaXNzdWUgd2l0aCBHTF9VTlNJR05FRF9JTlQKKyAgICAvLyBpbmRpY2VzLCBz
aW5jZSB3ZSByZXN0cmljdCBpdCB2aWEgTUFYX0VMRU1FTlRfSU5ERVguCisgICAgcmV0dXJuICgh
cHJpbWl0aXZlUmVzdGFydEZpeGVkSW5kZXhFbmFibGVkICYmIHR5cGUgPT0gR0xfVU5TSUdORURf
U0hPUlQgJiYKKyAgICAgICAgICAgIG1SZW5kZXJlckNsYXNzID09IFJFTkRFUkVSX0QzRDExKTsK
K30KKworYm9vbCBJbmRleERhdGFNYW5hZ2VyOjppc1N0cmVhbWluZ0luZGV4RGF0YShib29sIHBy
aW1pdGl2ZVJlc3RhcnRXb3JrYXJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gc3JjVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2w6OkJ1ZmZlciAqZ2xCdWZmZXIpCit7CisgICAgQnVmZmVyRDNE
ICpidWZmZXIgPSBnbEJ1ZmZlciA/IEdldEltcGxBczxCdWZmZXJEM0Q+KGdsQnVmZmVyKSA6IG51
bGxwdHI7CisKKyAgICAvLyBDYXNlIDE6IHRoZSBpbmRpY2VzIGFyZSBwYXNzZWQgYnkgcG9pbnRl
ciwgd2hpY2ggZm9yY2VzIHRoZSBzdHJlYW1pbmcgb2YgaW5kZXggZGF0YQorICAgIGlmIChnbEJ1
ZmZlciA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgY29uc3QgR0xlbnVtIGRzdFR5cGUgPSAoc3JjVHlwZSA9PSBHTF9VTlNJR05FRF9JTlQgfHwg
cHJpbWl0aXZlUmVzdGFydFdvcmthcm91bmQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPyBHTF9VTlNJR05FRF9JTlQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEdM
X1VOU0lHTkVEX1NIT1JUOworCisgICAgLy8gQ2FzZSAyYTogdGhlIGJ1ZmZlciBjYW4gYmUgdXNl
ZCBkaXJlY3RseQorICAgIGlmIChidWZmZXItPnN1cHBvcnRzRGlyZWN0QmluZGluZygpICYmIGRz
dFR5cGUgPT0gc3JjVHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICAvLyBDYXNlIDJiOiB1c2UgYSBzdGF0aWMgdHJhbnNsYXRlZCBjb3B5IG9yIGZhbGwgYmFj
ayB0byBzdHJlYW1pbmcKKyAgICBTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZSAqc3RhdGljQnVm
ZmVyID0gYnVmZmVyLT5nZXRTdGF0aWNJbmRleEJ1ZmZlcigpOworICAgIGlmIChzdGF0aWNCdWZm
ZXIgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IGlmICgoc3RhdGljQnVmZmVyLT5nZXRCdWZmZXJTaXplKCkgIT0gMCkgJiYgKHN0YXRpY0J1ZmZl
ci0+Z2V0SW5kZXhUeXBlKCkgIT0gZHN0VHlwZSkpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIC8vIFRoaXMgZnVuY3Rpb24gdHJh
bnNsYXRlcyBhIEdMLXN0eWxlIGluZGljZXMgaW50byBEWC1zdHlsZSBpbmRpY2VzLCB3aXRoIHRo
ZWlyIGRlc2NyaXB0aW9uCiAvLyByZXR1cm5lZCBpbiB0cmFuc2xhdGVkLgogLy8gR0wgY2FuIHNw
ZWNpZnkgdmVydGV4IGRhdGEgaW4gaW1tZWRpYXRlIG1vZGUgKHBvaW50ZXIgdG8gQ1BVIGFycmF5
IG9mIGluZGljZXMpLCB3aGljaCBpcyBub3QKQEAgLTE1Nyw5ICsyMDMsOSBAQCBnbDo6RXJyb3Ig
SW5kZXhEYXRhTWFuYWdlcjo6cHJlcGFyZUluZGV4RGF0YShHTGVudW0gc3JjVHlwZSwKICAgICBi
b29sIGhhc1ByaW1pdGl2ZVJlc3RhcnRJbmRleCA9CiAgICAgICAgIHRyYW5zbGF0ZWQtPmluZGV4
UmFuZ2UudmVydGV4SW5kZXhDb3VudCA8IHN0YXRpY19jYXN0PHNpemVfdD4oY291bnQpIHx8CiAg
ICAgICAgIHRyYW5zbGF0ZWQtPmluZGV4UmFuZ2UuZW5kID09IGdsOjpHZXRQcmltaXRpdmVSZXN0
YXJ0SW5kZXgoc3JjVHlwZSk7Ci0gICAgYm9vbCBwcmltaXRpdmVSZXN0YXJ0V29ya2Fyb3VuZCA9
IG1SZW5kZXJlckNsYXNzID09IFJFTkRFUkVSX0QzRDExICYmCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICFwcmltaXRpdmVSZXN0YXJ0Rml4ZWRJbmRleEVuYWJsZWQgJiYK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUHJpbWl0aXZlUmVzdGFy
dEluZGV4ICYmIHNyY1R5cGUgPT0gR0xfVU5TSUdORURfU0hPUlQ7CisgICAgYm9vbCBwcmltaXRp
dmVSZXN0YXJ0V29ya2Fyb3VuZCA9CisgICAgICAgIHVzZVByaW1pdGl2ZVJlc3RhcnRXb3JrYXJv
dW5kKHByaW1pdGl2ZVJlc3RhcnRGaXhlZEluZGV4RW5hYmxlZCwgc3JjVHlwZSkgJiYKKyAgICAg
ICAgaGFzUHJpbWl0aXZlUmVzdGFydEluZGV4OwogCiAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGhh
dmUgdG8gZGVhbCB3aXRoIE1BWF9VSU5UIGluZGljZXMsIHNpbmNlIHdlIHJlc3RyaWN0IGl0IHZp
YQogICAgIC8vIE1BWF9FTEVNRU5UX0lOREVYLgpAQCAtMjAyLDE1ICsyNDgsMTQgQEAgZ2w6OkVy
cm9yIEluZGV4RGF0YU1hbmFnZXI6OnByZXBhcmVJbmRleERhdGEoR0xlbnVtIHNyY1R5cGUsCiAg
ICAgfQogCiAgICAgLy8gQ2FzZSAyYTogdGhlIGJ1ZmZlciBjYW4gYmUgdXNlZCBkaXJlY3RseQot
ICAgIGlmIChvZmZzZXRBbGlnbmVkICYmIGJ1ZmZlci0+c3VwcG9ydHNEaXJlY3RCaW5kaW5nKCkg
JiYKLSAgICAgICAgZHN0VHlwZSA9PSBzcmNUeXBlICYmICFwcmltaXRpdmVSZXN0YXJ0V29ya2Fy
b3VuZCkKKyAgICBpZiAob2Zmc2V0QWxpZ25lZCAmJiBidWZmZXItPnN1cHBvcnRzRGlyZWN0Qmlu
ZGluZygpICYmIGRzdFR5cGUgPT0gc3JjVHlwZSkKICAgICB7CiAgICAgICAgIHRyYW5zbGF0ZWQt
PnN0b3JhZ2UgPSBidWZmZXI7CiAgICAgICAgIHRyYW5zbGF0ZWQtPmluZGV4QnVmZmVyID0gbnVs
bHB0cjsKICAgICAgICAgdHJhbnNsYXRlZC0+c2VyaWFsID0gYnVmZmVyLT5nZXRTZXJpYWwoKTsK
ICAgICAgICAgdHJhbnNsYXRlZC0+c3RhcnRJbmRleCA9IChvZmZzZXQgPj4gc3JjVHlwZUluZm8u
Ynl0ZXNTaGlmdCk7CiAgICAgICAgIHRyYW5zbGF0ZWQtPnN0YXJ0T2Zmc2V0ID0gb2Zmc2V0Owot
ICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0yNzcsNyArMzIyLDcgQEAg
Z2w6OkVycm9yIEluZGV4RGF0YU1hbmFnZXI6OnByZXBhcmVJbmRleERhdGEoR0xlbnVtIHNyY1R5
cGUsCiAgICAgICAgIHRyYW5zbGF0ZWQtPnN0YXJ0T2Zmc2V0ID0gKG9mZnNldCA+PiBzcmNUeXBl
SW5mby5ieXRlc1NoaWZ0KSA8PCBkc3RUeXBlSW5mby5ieXRlc1NoaWZ0OwogICAgIH0KIAotICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OwogfQogCiBnbDo6RXJyb3IgSW5kZXhEYXRhTWFuYWdlcjo6c3RyZWFtSW5kZXhEYXRhKGNvbnN0
IEdMdm9pZCAqZGF0YSwKQEAgLTMwNiw3ICszNTEsNyBAQCBnbDo6RXJyb3IgSW5kZXhEYXRhTWFu
YWdlcjo6c3RyZWFtSW5kZXhEYXRhKGNvbnN0IEdMdm9pZCAqZGF0YSwKICAgICB0cmFuc2xhdGVk
LT5zdGFydEluZGV4ID0gKG9mZnNldCA+PiBkc3RUeXBlSW5mby5ieXRlc1NoaWZ0KTsKICAgICB0
cmFuc2xhdGVkLT5zdGFydE9mZnNldCA9IG9mZnNldDsKIAotICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3Ig
SW5kZXhEYXRhTWFuYWdlcjo6Z2V0U3RyZWFtaW5nSW5kZXhCdWZmZXIoR0xlbnVtIGRlc3RpbmF0
aW9uSW5kZXhUeXBlLApAQCAtMzI4LDcgKzM3Myw3IEBAIGdsOjpFcnJvciBJbmRleERhdGFNYW5h
Z2VyOjpnZXRTdHJlYW1pbmdJbmRleEJ1ZmZlcihHTGVudW0gZGVzdGluYXRpb25JbmRleFR5cGUs
CiAgICAgICAgIH0KIAogICAgICAgICAqb3V0QnVmZmVyID0gbVN0cmVhbWluZ0J1ZmZlckludDsK
LSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMzQ3LDcgKzM5Miw3IEBA
IGdsOjpFcnJvciBJbmRleERhdGFNYW5hZ2VyOjpnZXRTdHJlYW1pbmdJbmRleEJ1ZmZlcihHTGVu
dW0gZGVzdGluYXRpb25JbmRleFR5cGUsCiAgICAgICAgIH0KIAogICAgICAgICAqb3V0QnVmZmVy
ID0gbVN0cmVhbWluZ0J1ZmZlclNob3J0OwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05P
X0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L0luZGV4RGF0YU1hbmFnZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvSW5kZXhEYXRhTWFuYWdlci5oCmluZGV4IDQ0ZWI2OGMwNzE2ZDNjZDVh
NTM5ZjE4MWZkNDdlMjYzNTZjNDdjNjQuLjMyMDZjNTJlYzdlOTUyMjM4OTkwOTdiYmE2YWJiMjg5
NzBlZjc5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvSW5kZXhEYXRhTWFuYWdlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSW5kZXhEYXRhTWFuYWdlci5oCkBAIC02
NSw2ICs2NSwxMCBAQCBjbGFzcyBJbmRleERhdGFNYW5hZ2VyIDogYW5nbGU6Ok5vbkNvcHlhYmxl
CiAgICAgZXhwbGljaXQgSW5kZXhEYXRhTWFuYWdlcihCdWZmZXJGYWN0b3J5RDNEICpmYWN0b3J5
LCBSZW5kZXJlckNsYXNzIHJlbmRlcmVyQ2xhc3MpOwogICAgIHZpcnR1YWwgfkluZGV4RGF0YU1h
bmFnZXIoKTsKIAorICAgIGJvb2wgdXNlUHJpbWl0aXZlUmVzdGFydFdvcmthcm91bmQoYm9vbCBw
cmltaXRpdmVSZXN0YXJ0Rml4ZWRJbmRleEVuYWJsZWQsIEdMZW51bSB0eXBlKTsKKyAgICBib29s
IGlzU3RyZWFtaW5nSW5kZXhEYXRhKGJvb2wgcHJpbWl0aXZlUmVzdGFydFdvcmthcm91bmQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjVHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsOjpCdWZmZXIgKmdsQnVmZmVyKTsKICAgICBnbDo6RXJyb3Ig
cHJlcGFyZUluZGV4RGF0YShHTGVudW0gc3JjVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
OjpCdWZmZXIgKmdsQnVmZmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5jcHAKaW5kZXgg
NWM5NDk5NDViYzFkYjJiYThmODUyN2MyOTczMjQ4YTA4NmMwZmNjZS4uMGIyYTFjOTNjNDBhZTQy
MGMxYWIxZDNlODc5OGQxNDVjMWQ4YmEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmNwcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0Qu
Y3BwCkBAIC04LDIyICs4LDI1IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
UHJvZ3JhbUQzRC5oIgogCi0jaW5jbHVkZSAiY29tbW9uL0JpdFNldEl0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiY29tbW9uL2JpdHNldF91dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9Vbmlmb3JtLmgiCisjaW5jbHVkZSAibGliQU5HTEUvVmFyeWlu
Z1BhY2tpbmcuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9WZXJ0ZXhBcnJheS5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL2ZlYXR1cmVzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvQ29udGV4
dEltcGwuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvRHluYW1pY0hMU0wuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJEM0QuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvU2hhZGVyRDNELmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1NoYWRlckV4ZWN1dGFibGVEM0QuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvVmFyeWluZ1BhY2tpbmcuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
VmVydGV4RGF0YU1hbmFnZXIuaCIKIAordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOworCiBuYW1lc3Bh
Y2UgcngKIHsKIApAQCAtODAsNzcgKzgzLDYgQEAgYm9vbCBJc1Jvd01ham9yTGF5b3V0KGNvbnN0
IHNoOjpTaGFkZXJWYXJpYWJsZSAmdmFyKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotLy8gdHJ1
ZSBpZiB2YXJ5aW5nIHggaGFzIGEgaGlnaGVyIHByaW9yaXR5IGluIHBhY2tpbmcgdGhhbiB5Ci1i
b29sIENvbXBhcmVQYWNrZWRWYXJ5aW5nKGNvbnN0IFBhY2tlZFZhcnlpbmcgJngsIGNvbnN0IFBh
Y2tlZFZhcnlpbmcgJnkpCi17Ci0gICAgcmV0dXJuIGdsOjpDb21wYXJlU2hhZGVyVmFyKCp4LnZh
cnlpbmcsICp5LnZhcnlpbmcpOwotfQotCi1zdGQ6OnZlY3RvcjxQYWNrZWRWYXJ5aW5nPiBNZXJn
ZVZhcnlpbmdzKGNvbnN0IGdsOjpTaGFkZXIgJnZlcnRleFNoYWRlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlNoYWRlciAmZnJhZ21lbnRTaGFk
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPHN0ZDo6c3RyaW5nPiAmdGZWYXJ5aW5ncykKLXsKLSAgICBzdGQ6OnZlY3RvcjxQYWNr
ZWRWYXJ5aW5nPiBwYWNrZWRWYXJ5aW5nczsKLQotICAgIGZvciAoY29uc3Qgc2g6OlZhcnlpbmcg
Jm91dHB1dCA6IHZlcnRleFNoYWRlci5nZXRWYXJ5aW5ncygpKQotICAgIHsKLSAgICAgICAgYm9v
bCBwYWNrZWQgPSBmYWxzZTsKLQotICAgICAgICAvLyBCdWlsdC1pbiB2YXJ5aW5ncyBvYmV5IHNw
ZWNpYWwgcnVsZXMKLSAgICAgICAgaWYgKG91dHB1dC5pc0J1aWx0SW4oKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKGNvbnN0IHNo
OjpWYXJ5aW5nICZpbnB1dCA6IGZyYWdtZW50U2hhZGVyLmdldFZhcnlpbmdzKCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChvdXRwdXQubmFtZSA9PSBpbnB1dC5uYW1lKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGlmIChvdXRwdXQuaXNTdHJ1Y3QoKSkKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghb3V0cHV0LmlzQXJyYXkoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byAmZmllbGQgOiBvdXRwdXQuZmllbGRz
KQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
IWZpZWxkLmlzU3RydWN0KCkgJiYgIWZpZWxkLmlzQXJyYXkoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwYWNrZWRWYXJ5aW5ncy5wdXNoX2JhY2soCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUGFja2VkVmFyeWluZyhmaWVsZCwgaW5wdXQuaW50ZXJwb2xhdGlvbiwgaW5wdXQubmFt
ZSkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHBhY2tl
ZFZhcnlpbmdzLnB1c2hfYmFjayhQYWNrZWRWYXJ5aW5nKGlucHV0LCBpbnB1dC5pbnRlcnBvbGF0
aW9uKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBhY2tlZCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBLZWVwIFRyYW5zZm9ybSBGQiB2YXJ5aW5ncyBpbiB0aGUgbWVyZ2VkIGxpc3QgYWx3
YXlzLgotICAgICAgICBpZiAoIXBhY2tlZCkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yIChj
b25zdCBzdGQ6OnN0cmluZyAmdGZWYXJ5aW5nIDogdGZWYXJ5aW5ncykKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBpZiAodGZWYXJ5aW5nID09IG91dHB1dC5uYW1lKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gVHJhbnNmb3JtIGZlZWRiYWNrIGZvciB2
YXJ5aW5nIHN0cnVjdHMgaXMgdW5kZXJzcGVjaWZpZWQuCi0gICAgICAgICAgICAgICAgICAgIC8v
IFNlZSBLaHJvbm9zIGJ1ZyA5ODU2LgotICAgICAgICAgICAgICAgICAgICAvLyBUT0RPKGptYWRp
bGwpOiBGaWd1cmUgb3V0IGhvdyB0byBiZSBzcGVjLWNvbXBsaWFudCBoZXJlLgotICAgICAgICAg
ICAgICAgICAgICBpZiAoIW91dHB1dC5pc1N0cnVjdCgpKQotICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYWNrZWRWYXJ5aW5ncy5wdXNoX2JhY2soUGFja2Vk
VmFyeWluZyhvdXRwdXQsIG91dHB1dC5pbnRlcnBvbGF0aW9uKSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwYWNrZWRWYXJ5aW5ncy5iYWNrKCkudmVydGV4T25seSA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RkOjpzb3J0KHBh
Y2tlZFZhcnlpbmdzLmJlZ2luKCksIHBhY2tlZFZhcnlpbmdzLmVuZCgpLCBDb21wYXJlUGFja2Vk
VmFyeWluZyk7Ci0KLSAgICByZXR1cm4gcGFja2VkVmFyeWluZ3M7Ci19Ci0KIHRlbXBsYXRlIDx0
eXBlbmFtZSBWYXJUPgogdm9pZCBHZXRVbmlmb3JtQmxvY2tJbmZvKGNvbnN0IHN0ZDo6dmVjdG9y
PFZhclQ+ICZmaWVsZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnByZWZpeCwKQEAgLTE5Nyw4NCArMTI5LDY0IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBTZXRJ
ZkRpcnR5KFQgKmRlc3QsIGNvbnN0IFQgJnNvdXJjZSwgYm9vbCAqZGlydHlGbGFnKQogICAgICpk
ZXN0ICAgICAgPSBzb3VyY2U7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotYm9vbCBUcmFu
c3Bvc2VNYXRyaXgoVCAqdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0V2lkdGgsCi0gICAgICAg
ICAgICAgICAgICAgICBpbnQgdGFyZ2V0SGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgaW50
IHNyY1dpZHRoLAotICAgICAgICAgICAgICAgICAgICAgaW50IHNyY0hlaWdodCkKK3RlbXBsYXRl
IDx0eXBlbmFtZSBULCBpbnQgY29scywgaW50IHJvd3M+Citib29sIFRyYW5zcG9zZUV4cGFuZE1h
dHJpeChUICp0YXJnZXQsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewotICAgIGJvb2wgZGlydHkg
PSBmYWxzZTsKLSAgICBpbnQgY29weVdpZHRoID0gc3RkOjptaW4odGFyZ2V0SGVpZ2h0LCBzcmNX
aWR0aCk7Ci0gICAgaW50IGNvcHlIZWlnaHQgPSBzdGQ6Om1pbih0YXJnZXRXaWR0aCwgc3JjSGVp
Z2h0KTsKKyAgICBjb25zdGV4cHIgaW50IHRhcmdldFdpZHRoICA9IDQ7CisgICAgY29uc3RleHBy
IGludCB0YXJnZXRIZWlnaHQgPSByb3dzOworICAgIGNvbnN0ZXhwciBpbnQgc3JjV2lkdGggICAg
ID0gcm93czsKKyAgICBjb25zdGV4cHIgaW50IHNyY0hlaWdodCAgICA9IGNvbHM7CisKKyAgICBj
b25zdGV4cHIgaW50IGNvcHlXaWR0aCAgPSBzdGQ6Om1pbih0YXJnZXRIZWlnaHQsIHNyY1dpZHRo
KTsKKyAgICBjb25zdGV4cHIgaW50IGNvcHlIZWlnaHQgPSBzdGQ6Om1pbih0YXJnZXRXaWR0aCwg
c3JjSGVpZ2h0KTsKKworICAgIFQgc3RhZ2luZ1t0YXJnZXRXaWR0aCAqIHRhcmdldEhlaWdodF0g
PSB7MH07CiAKICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGNvcHlXaWR0aDsgeCsrKQogICAgIHsK
ICAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBjb3B5SGVpZ2h0OyB5KyspCiAgICAgICAgIHsK
LSAgICAgICAgICAgIFNldElmRGlydHkodGFyZ2V0ICsgKHggKiB0YXJnZXRXaWR0aCArIHkpLCBz
dGF0aWNfY2FzdDxUPih2YWx1ZVt5ICogc3JjV2lkdGggKyB4XSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICZkaXJ0eSk7CisgICAgICAgICAgICBzdGFnaW5nW3ggKiB0YXJnZXRXaWR0aCArIHld
ID0gc3RhdGljX2Nhc3Q8VD4odmFsdWVbeSAqIHNyY1dpZHRoICsgeF0pOwogICAgICAgICB9CiAg
ICAgfQotICAgIC8vIGNsZWFyIHVuZmlsbGVkIHJpZ2h0IHNpZGUKLSAgICBmb3IgKGludCB5ID0g
MDsgeSA8IGNvcHlXaWR0aDsgeSsrKQotICAgIHsKLSAgICAgICAgZm9yIChpbnQgeCA9IGNvcHlI
ZWlnaHQ7IHggPCB0YXJnZXRXaWR0aDsgeCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBTZXRJ
ZkRpcnR5KHRhcmdldCArICh5ICogdGFyZ2V0V2lkdGggKyB4KSwgc3RhdGljX2Nhc3Q8VD4oMCks
ICZkaXJ0eSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgLy8gY2xlYXIgdW5maWxsZWQgYm90dG9t
LgotICAgIGZvciAoaW50IHkgPSBjb3B5V2lkdGg7IHkgPCB0YXJnZXRIZWlnaHQ7IHkrKykKKwor
ICAgIGlmIChtZW1jbXAodGFyZ2V0LCBzdGFnaW5nLCB0YXJnZXRXaWR0aCAqIHRhcmdldEhlaWdo
dCAqIHNpemVvZihUKSkgPT0gMCkKICAgICB7Ci0gICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwg
dGFyZ2V0V2lkdGg7IHgrKykKLSAgICAgICAgewotICAgICAgICAgICAgU2V0SWZEaXJ0eSh0YXJn
ZXQgKyAoeSAqIHRhcmdldFdpZHRoICsgeCksIHN0YXRpY19jYXN0PFQ+KDApLCAmZGlydHkpOwot
ICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICByZXR1cm4gZGly
dHk7CisgICAgbWVtY3B5KHRhcmdldCwgc3RhZ2luZywgdGFyZ2V0V2lkdGggKiB0YXJnZXRIZWln
aHQgKiBzaXplb2YoVCkpOworICAgIHJldHVybiB0cnVlOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLWJvb2wgRXhwYW5kTWF0cml4KFQgKnRhcmdldCwKLSAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlLAotICAgICAgICAgICAgICAgICAgaW50IHRhcmdldFdpZHRoLAot
ICAgICAgICAgICAgICAgICAgaW50IHRhcmdldEhlaWdodCwKLSAgICAgICAgICAgICAgICAgIGlu
dCBzcmNXaWR0aCwKLSAgICAgICAgICAgICAgICAgIGludCBzcmNIZWlnaHQpCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVCwgaW50IGNvbHMsIGludCByb3dzPgorYm9vbCBFeHBhbmRNYXRyaXgoVCAqdGFy
Z2V0LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKLSAgICBib29sIGRpcnR5ID0gZmFsc2U7Ci0g
ICAgaW50IGNvcHlXaWR0aCA9IHN0ZDo6bWluKHRhcmdldFdpZHRoLCBzcmNXaWR0aCk7Ci0gICAg
aW50IGNvcHlIZWlnaHQgPSBzdGQ6Om1pbih0YXJnZXRIZWlnaHQsIHNyY0hlaWdodCk7CisgICAg
Y29uc3RleHByIGludCB0YXJnZXRXaWR0aCAgPSA0OworICAgIGNvbnN0ZXhwciBpbnQgdGFyZ2V0
SGVpZ2h0ID0gcm93czsKKyAgICBjb25zdGV4cHIgaW50IHNyY1dpZHRoID0gY29sczsKKyAgICBj
b25zdGV4cHIgaW50IHNyY0hlaWdodCA9IHJvd3M7CisKKyAgICBjb25zdGV4cHIgaW50IGNvcHlX
aWR0aCAgPSBzdGQ6Om1pbih0YXJnZXRXaWR0aCwgc3JjV2lkdGgpOworICAgIGNvbnN0ZXhwciBp
bnQgY29weUhlaWdodCA9IHN0ZDo6bWluKHRhcmdldEhlaWdodCwgc3JjSGVpZ2h0KTsKKworICAg
IFQgc3RhZ2luZ1t0YXJnZXRXaWR0aCAqIHRhcmdldEhlaWdodF0gPSB7MH07CiAKICAgICBmb3Ig
KGludCB5ID0gMDsgeSA8IGNvcHlIZWlnaHQ7IHkrKykKICAgICB7CiAgICAgICAgIGZvciAoaW50
IHggPSAwOyB4IDwgY29weVdpZHRoOyB4KyspCiAgICAgICAgIHsKLSAgICAgICAgICAgIFNldElm
RGlydHkodGFyZ2V0ICsgKHkgKiB0YXJnZXRXaWR0aCArIHgpLCBzdGF0aWNfY2FzdDxUPih2YWx1
ZVt5ICogc3JjV2lkdGggKyB4XSksCi0gICAgICAgICAgICAgICAgICAgICAgICZkaXJ0eSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgLy8gY2xlYXIgdW5maWxsZWQgcmlnaHQgc2lkZQotICAgIGZv
ciAoaW50IHkgPSAwOyB5IDwgY29weUhlaWdodDsgeSsrKQotICAgIHsKLSAgICAgICAgZm9yIChp
bnQgeCA9IGNvcHlXaWR0aDsgeCA8IHRhcmdldFdpZHRoOyB4KyspCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIFNldElmRGlydHkodGFyZ2V0ICsgKHkgKiB0YXJnZXRXaWR0aCArIHgpLCBzdGF0aWNf
Y2FzdDxUPigwKSwgJmRpcnR5KTsKKyAgICAgICAgICAgIHN0YWdpbmdbeSAqIHRhcmdldFdpZHRo
ICsgeF0gPSBzdGF0aWNfY2FzdDxUPih2YWx1ZVt5ICogc3JjV2lkdGggKyB4XSk7CiAgICAgICAg
IH0KICAgICB9Ci0gICAgLy8gY2xlYXIgdW5maWxsZWQgYm90dG9tLgotICAgIGZvciAoaW50IHkg
PSBjb3B5SGVpZ2h0OyB5IDwgdGFyZ2V0SGVpZ2h0OyB5KyspCisKKyAgICBpZiAobWVtY21wKHRh
cmdldCwgc3RhZ2luZywgdGFyZ2V0V2lkdGggKiB0YXJnZXRIZWlnaHQgKiBzaXplb2YoVCkpID09
IDApCiAgICAgewotICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHRhcmdldFdpZHRoOyB4Kysp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFNldElmRGlydHkodGFyZ2V0ICsgKHkgKiB0YXJnZXRX
aWR0aCArIHgpLCBzdGF0aWNfY2FzdDxUPigwKSwgJmRpcnR5KTsKLSAgICAgICAgfQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgcmV0dXJuIGRpcnR5OworICAgIG1lbWNweSh0
YXJnZXQsIHN0YWdpbmcsIHRhcmdldFdpZHRoICogdGFyZ2V0SGVpZ2h0ICogc2l6ZW9mKFQpKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogZ2w6OlByaW1pdGl2ZVR5cGUgR2V0R2VvbWV0cnlTaGFk
ZXJUeXBlRnJvbURyYXdNb2RlKEdMZW51bSBkcmF3TW9kZSkKQEAgLTMwNiw2ICsyMTgsMjAgQEAg
Z2w6OlByaW1pdGl2ZVR5cGUgR2V0R2VvbWV0cnlTaGFkZXJUeXBlRnJvbURyYXdNb2RlKEdMZW51
bSBkcmF3TW9kZSkKICAgICB9CiB9CiAKK2Jvb2wgRmluZEZsYXRJbnRlcnBvbGF0aW9uVmFyeWlu
Zyhjb25zdCBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gJnZhcnlpbmdzKQoreworICAgIC8vIE5v
dGU6IHRoaXMgYXNzdW1lcyBuZXN0ZWQgc3RydWN0cyBjYW4gb25seSBiZSBwYWNrZWQgd2l0aCBv
bmUgaW50ZXJwb2xhdGlvbi4KKyAgICBmb3IgKGNvbnN0IGF1dG8gJnZhcnlpbmcgOiB2YXJ5aW5n
cykKKyAgICB7CisgICAgICAgIGlmICh2YXJ5aW5nLmludGVycG9sYXRpb24gPT0gc2g6OklOVEVS
UE9MQVRJT05fRkxBVCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0gIC8vIGFub255bW91cyBu
YW1lc3BhY2UKIAogLy8gRDNEVW5pZm9ybSBJbXBsZW1lbnRhdGlvbgpAQCAtMzIxLDYgKzI0Nyw3
IEBAIEQzRFVuaWZvcm06OkQzRFVuaWZvcm0oR0xlbnVtIHR5cGVJbiwKICAgICAgIGRpcnR5KHRy
dWUpLAogICAgICAgdnNSZWdpc3RlckluZGV4KEdMX0lOVkFMSURfSU5ERVgpLAogICAgICAgcHNS
ZWdpc3RlckluZGV4KEdMX0lOVkFMSURfSU5ERVgpLAorICAgICAgY3NSZWdpc3RlckluZGV4KEdM
X0lOVkFMSURfSU5ERVgpLAogICAgICAgcmVnaXN0ZXJDb3VudCgwKSwKICAgICAgIHJlZ2lzdGVy
RWxlbWVudCgwKQogewpAQCAtMzMzLDcgKzI2MCw3IEBAIEQzRFVuaWZvcm06OkQzRFVuaWZvcm0o
R0xlbnVtIHR5cGVJbiwKICAgICAgICAgZGF0YSA9IG5ldyB1aW50OF90W2J5dGVzXTsKICAgICAg
ICAgbWVtc2V0KGRhdGEsIDAsIGJ5dGVzKTsKIAotICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBp
cyB0aGlzIGNvcnJlY3Qgd2l0aCBub24tc3F1YXJlIG1hdHJpY2VzPworICAgICAgICAvLyBVc2Ug
dGhlIHJvdyBjb3VudCBhcyByZWdpc3RlciBjb3VudCwgd2lsbCB3b3JrIGZvciBub24tc3F1YXJl
IG1hdHJpY2VzLgogICAgICAgICByZWdpc3RlckNvdW50ID0gZ2w6OlZhcmlhYmxlUm93Q291bnQo
dHlwZSkgKiBlbGVtZW50Q291bnQoKTsKICAgICB9CiB9CkBAIC0zNTgsNiArMjg1LDExIEBAIGJv
b2wgRDNEVW5pZm9ybTo6aXNSZWZlcmVuY2VkQnlGcmFnbWVudFNoYWRlcigpIGNvbnN0CiAgICAg
cmV0dXJuIHBzUmVnaXN0ZXJJbmRleCAhPSBHTF9JTlZBTElEX0lOREVYOwogfQogCitib29sIEQz
RFVuaWZvcm06OmlzUmVmZXJlbmNlZEJ5Q29tcHV0ZVNoYWRlcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGNzUmVnaXN0ZXJJbmRleCAhPSBHTF9JTlZBTElEX0lOREVYOworfQorCiAvLyBEM0RWYXJ5
aW5nIEltcGxlbWVudGF0aW9uCiAKIEQzRFZhcnlpbmc6OkQzRFZhcnlpbmcoKSA6IHNlbWFudGlj
SW5kZXgoMCksIGNvbXBvbmVudENvdW50KDApLCBvdXRwdXRTbG90KDApCkBAIC01NjIsMTQgKzQ5
NCwxNyBAQCB1bnNpZ25lZCBpbnQgUHJvZ3JhbUQzRDo6bUN1cnJlbnRTZXJpYWwgPSAxOwogUHJv
Z3JhbUQzRDo6UHJvZ3JhbUQzRChjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZzdGF0ZSwgUmVuZGVy
ZXJEM0QgKnJlbmRlcmVyKQogICAgIDogUHJvZ3JhbUltcGwoc3RhdGUpLAogICAgICAgbVJlbmRl
cmVyKHJlbmRlcmVyKSwKLSAgICAgIG1EeW5hbWljSExTTChOVUxMKSwKLSAgICAgIG1HZW9tZXRy
eUV4ZWN1dGFibGVzKGdsOjpQUklNSVRJVkVfVFlQRV9NQVgsIG51bGxwdHIpLAorICAgICAgbUR5
bmFtaWNITFNMKG51bGxwdHIpLAorICAgICAgbUdlb21ldHJ5RXhlY3V0YWJsZXMoZ2w6OlBSSU1J
VElWRV9UWVBFX01BWCksCisgICAgICBtQ29tcHV0ZUV4ZWN1dGFibGUobnVsbHB0ciksCiAgICAg
ICBtVXNlc1BvaW50U2l6ZShmYWxzZSksCiAgICAgICBtVXNlc0ZsYXRJbnRlcnBvbGF0aW9uKGZh
bHNlKSwKLSAgICAgIG1WZXJ0ZXhVbmlmb3JtU3RvcmFnZShOVUxMKSwKLSAgICAgIG1GcmFnbWVu
dFVuaWZvcm1TdG9yYWdlKE5VTEwpLAorICAgICAgbVZlcnRleFVuaWZvcm1TdG9yYWdlKG51bGxw
dHIpLAorICAgICAgbUZyYWdtZW50VW5pZm9ybVN0b3JhZ2UobnVsbHB0ciksCisgICAgICBtQ29t
cHV0ZVVuaWZvcm1TdG9yYWdlKG51bGxwdHIpLAogICAgICAgbVVzZWRWZXJ0ZXhTYW1wbGVyUmFu
Z2UoMCksCiAgICAgICBtVXNlZFBpeGVsU2FtcGxlclJhbmdlKDApLAorICAgICAgbVVzZWRDb21w
dXRlU2FtcGxlclJhbmdlKDApLAogICAgICAgbURpcnR5U2FtcGxlck1hcHBpbmcodHJ1ZSksCiAg
ICAgICBtU2VyaWFsKGlzc3VlU2VyaWFsKCkpCiB7CkBAIC02MjQsNiArNTU5LDEzIEBAIEdMaW50
IFByb2dyYW1EM0Q6OmdldFNhbXBsZXJNYXBwaW5nKGdsOjpTYW1wbGVyVHlwZSB0eXBlLAogICAg
ICAgICAgICAgICAgIGxvZ2ljYWxUZXh0dXJlVW5pdCA9IG1TYW1wbGVyc1ZTW3NhbXBsZXJJbmRl
eF0ubG9naWNhbFRleHR1cmVVbml0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgZ2w6OlNBTVBMRVJfQ09NUFVURToKKyAgICAgICAgICAgIEFTU0VSVChz
YW1wbGVySW5kZXggPCBjYXBzLm1heENvbXB1dGVUZXh0dXJlSW1hZ2VVbml0cyk7CisgICAgICAg
ICAgICBpZiAoc2FtcGxlckluZGV4IDwgbVNhbXBsZXJzQ1Muc2l6ZSgpICYmIG1TYW1wbGVyc0NT
W3NhbXBsZXJJbmRleF0uYWN0aXZlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGxv
Z2ljYWxUZXh0dXJlVW5pdCA9IG1TYW1wbGVyc0NTW3NhbXBsZXJJbmRleF0ubG9naWNhbFRleHR1
cmVVbml0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgIH0KQEAgLTY1MSw2ICs1OTMsMTAg
QEAgR0xlbnVtIFByb2dyYW1EM0Q6OmdldFNhbXBsZXJUZXh0dXJlVHlwZShnbDo6U2FtcGxlclR5
cGUgdHlwZSwgdW5zaWduZWQgaW50IHNhbXAKICAgICAgICAgICAgIEFTU0VSVChzYW1wbGVySW5k
ZXggPCBtU2FtcGxlcnNWUy5zaXplKCkpOwogICAgICAgICAgICAgQVNTRVJUKG1TYW1wbGVyc1ZT
W3NhbXBsZXJJbmRleF0uYWN0aXZlKTsKICAgICAgICAgICAgIHJldHVybiBtU2FtcGxlcnNWU1tz
YW1wbGVySW5kZXhdLnRleHR1cmVUeXBlOworICAgICAgICBjYXNlIGdsOjpTQU1QTEVSX0NPTVBV
VEU6CisgICAgICAgICAgICBBU1NFUlQoc2FtcGxlckluZGV4IDwgbVNhbXBsZXJzQ1Muc2l6ZSgp
KTsKKyAgICAgICAgICAgIEFTU0VSVChtU2FtcGxlcnNDU1tzYW1wbGVySW5kZXhdLmFjdGl2ZSk7
CisgICAgICAgICAgICByZXR1cm4gbVNhbXBsZXJzQ1Nbc2FtcGxlckluZGV4XS50ZXh0dXJlVHlw
ZTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQpA
QCAtNjY2LDYgKzYxMiw4IEBAIEdMdWludCBQcm9ncmFtRDNEOjpnZXRVc2VkU2FtcGxlclJhbmdl
KGdsOjpTYW1wbGVyVHlwZSB0eXBlKSBjb25zdAogICAgICAgICAgICAgcmV0dXJuIG1Vc2VkUGl4
ZWxTYW1wbGVyUmFuZ2U7CiAgICAgICAgIGNhc2UgZ2w6OlNBTVBMRVJfVkVSVEVYOgogICAgICAg
ICAgICAgcmV0dXJuIG1Vc2VkVmVydGV4U2FtcGxlclJhbmdlOworICAgICAgICBjYXNlIGdsOjpT
QU1QTEVSX0NPTVBVVEU6CisgICAgICAgICAgICByZXR1cm4gbVVzZWRDb21wdXRlU2FtcGxlclJh
bmdlOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAg
ICAgICAgIHJldHVybiAwdTsKQEAgLTcyNCwxMSArNjcyLDMxIEBAIHZvaWQgUHJvZ3JhbUQzRDo6
dXBkYXRlU2FtcGxlck1hcHBpbmcoKQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQorCisgICAgICAgIGlmIChkM2RVbmlmb3JtLT5pc1JlZmVyZW5jZWRCeUNvbXB1
dGVTaGFkZXIoKSkKKyAgICAgICAgeworICAgICAgICAgICAgdW5zaWduZWQgaW50IGZpcnN0SW5k
ZXggPSBkM2RVbmlmb3JtLT5jc1JlZ2lzdGVySW5kZXg7CisKKyAgICAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4ID0gZmlyc3RJbmRleCArIGk7CisKKyAgICAgICAgICAg
ICAgICBpZiAoc2FtcGxlckluZGV4IDwgbVNhbXBsZXJzQ1Muc2l6ZSgpKQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1TYW1wbGVyc0NTW3NhbXBsZXJJbmRl
eF0uYWN0aXZlKTsKKyAgICAgICAgICAgICAgICAgICAgbVNhbXBsZXJzQ1Nbc2FtcGxlckluZGV4
XS5sb2dpY2FsVGV4dHVyZVVuaXQgPSB2W2ldWzBdOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIH0KIAotTGlua1Jlc3VsdCBQcm9ncmFtRDNEOjps
b2FkKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkK
K0xpbmtSZXN1bHQgUHJvZ3JhbUQzRDo6bG9hZChjb25zdCBDb250ZXh0SW1wbCAqY29udGV4dElt
cGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkluZm9Mb2cgJmluZm9Mb2csCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0p
CiB7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogVXNlIFJlbmRlcmVyIGZyb20gY29udGV4dEltcGwu
CisKICAgICByZXNldCgpOwogCiAgICAgRGV2aWNlSWRlbnRpZmllciBiaW5hcnlEZXZpY2VJZGVu
dGlmaWVyID0gezB9OwpAQCAtNzM5LDE0ICs3MDcsMTQgQEAgTGlua1Jlc3VsdCBQcm9ncmFtRDNE
Ojpsb2FkKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVh
bSkKICAgICBpZiAobWVtY21wKCZpZGVudGlmaWVyLCAmYmluYXJ5RGV2aWNlSWRlbnRpZmllciwg
c2l6ZW9mKERldmljZUlkZW50aWZpZXIpKSAhPSAwKQogICAgIHsKICAgICAgICAgaW5mb0xvZyA8
PCAiSW52YWxpZCBwcm9ncmFtIGJpbmFyeSwgZGV2aWNlIGNvbmZpZ3VyYXRpb24gaGFzIGNoYW5n
ZWQuIjsKLSAgICAgICAgcmV0dXJuIExpbmtSZXN1bHQoZmFsc2UsIGdsOjpFcnJvcihHTF9OT19F
UlJPUikpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaW50IGNvbXBpbGVG
bGFncyA9IHN0cmVhbS0+cmVhZEludDxpbnQ+KCk7CiAgICAgaWYgKGNvbXBpbGVGbGFncyAhPSBB
TkdMRV9DT01QSUxFX09QVElNSVpBVElPTl9MRVZFTCkKICAgICB7CiAgICAgICAgIGluZm9Mb2cg
PDwgIk1pc21hdGNoZWQgY29tcGlsYXRpb24gZmxhZ3MuIjsKLSAgICAgICAgcmV0dXJuIExpbmtS
ZXN1bHQoZmFsc2UsIGdsOjpFcnJvcihHTF9OT19FUlJPUikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgZm9yIChpbnQgJmluZGV4IDogbUF0dHJpYkxvY2F0aW9uVG9EM0RT
ZW1hbnRpYykKQEAgLTc3MywxNCArNzQxLDI1IEBAIExpbmtSZXN1bHQgUHJvZ3JhbUQzRDo6bG9h
ZChnbDo6SW5mb0xvZyAmaW5mb0xvZywgZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0pCiAg
ICAgICAgIG1TYW1wbGVyc1ZTLnB1c2hfYmFjayhzYW1wbGVyKTsKICAgICB9CiAKKyAgICBjb25z
dCB1bnNpZ25lZCBpbnQgY3NTYW1wbGVyQ291bnQgPSBzdHJlYW0tPnJlYWRJbnQ8dW5zaWduZWQg
aW50PigpOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY3NTYW1wbGVyQ291bnQ7
ICsraSkKKyAgICB7CisgICAgICAgIFNhbXBsZXIgc2FtcGxlcjsKKyAgICAgICAgc3RyZWFtLT5y
ZWFkQm9vbCgmc2FtcGxlci5hY3RpdmUpOworICAgICAgICBzdHJlYW0tPnJlYWRJbnQoJnNhbXBs
ZXIubG9naWNhbFRleHR1cmVVbml0KTsKKyAgICAgICAgc3RyZWFtLT5yZWFkSW50KCZzYW1wbGVy
LnRleHR1cmVUeXBlKTsKKyAgICAgICAgbVNhbXBsZXJzQ1MucHVzaF9iYWNrKHNhbXBsZXIpOwor
ICAgIH0KKwogICAgIHN0cmVhbS0+cmVhZEludCgmbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2UpOwog
ICAgIHN0cmVhbS0+cmVhZEludCgmbVVzZWRQaXhlbFNhbXBsZXJSYW5nZSk7CisgICAgc3RyZWFt
LT5yZWFkSW50KCZtVXNlZENvbXB1dGVTYW1wbGVyUmFuZ2UpOwogCiAgICAgY29uc3QgdW5zaWdu
ZWQgaW50IHVuaWZvcm1Db3VudCA9IHN0cmVhbS0+cmVhZEludDx1bnNpZ25lZCBpbnQ+KCk7CiAg
ICAgaWYgKHN0cmVhbS0+ZXJyb3IoKSkKICAgICB7CiAgICAgICAgIGluZm9Mb2cgPDwgIkludmFs
aWQgcHJvZ3JhbSBiaW5hcnkuIjsKLSAgICAgICAgcmV0dXJuIExpbmtSZXN1bHQoZmFsc2UsIGds
OjpFcnJvcihHTF9OT19FUlJPUikpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAg
ICAgY29uc3QgYXV0byAmbGlua2VkVW5pZm9ybXMgPSBtU3RhdGUuZ2V0VW5pZm9ybXMoKTsKQEAg
LTc5NCw2ICs3NzMsNyBAQCBMaW5rUmVzdWx0IFByb2dyYW1EM0Q6OmxvYWQoZ2w6OkluZm9Mb2cg
JmluZm9Mb2csIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbGlua2VkVW5pZm9ybS5pc0luRGVmYXVsdEJsb2NrKCkpOwogICAgICAgICBz
dHJlYW0tPnJlYWRJbnQoJmQzZFVuaWZvcm0tPnBzUmVnaXN0ZXJJbmRleCk7CiAgICAgICAgIHN0
cmVhbS0+cmVhZEludCgmZDNkVW5pZm9ybS0+dnNSZWdpc3RlckluZGV4KTsKKyAgICAgICAgc3Ry
ZWFtLT5yZWFkSW50KCZkM2RVbmlmb3JtLT5jc1JlZ2lzdGVySW5kZXgpOwogICAgICAgICBzdHJl
YW0tPnJlYWRJbnQoJmQzZFVuaWZvcm0tPnJlZ2lzdGVyQ291bnQpOwogICAgICAgICBzdHJlYW0t
PnJlYWRJbnQoJmQzZFVuaWZvcm0tPnJlZ2lzdGVyRWxlbWVudCk7CiAKQEAgLTgwNCw3ICs3ODQs
NyBAQCBMaW5rUmVzdWx0IFByb2dyYW1EM0Q6OmxvYWQoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGds
OjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtKQogICAgIGlmIChzdHJlYW0tPmVycm9yKCkpCiAg
ICAgewogICAgICAgICBpbmZvTG9nIDw8ICJJbnZhbGlkIHByb2dyYW0gYmluYXJ5LiI7Ci0gICAg
ICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNlLCBnbDo6RXJyb3IoR0xfTk9fRVJST1IpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIEFTU0VSVChtRDNEVW5pZm9ybUJsb2Nr
cy5lbXB0eSgpKTsKQEAgLTgxMyw2ICs3OTMsNyBAQCBMaW5rUmVzdWx0IFByb2dyYW1EM0Q6Omxv
YWQoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtKQog
ICAgICAgICBEM0RVbmlmb3JtQmxvY2sgdW5pZm9ybUJsb2NrOwogICAgICAgICBzdHJlYW0tPnJl
YWRJbnQoJnVuaWZvcm1CbG9jay5wc1JlZ2lzdGVySW5kZXgpOwogICAgICAgICBzdHJlYW0tPnJl
YWRJbnQoJnVuaWZvcm1CbG9jay52c1JlZ2lzdGVySW5kZXgpOworICAgICAgICBzdHJlYW0tPnJl
YWRJbnQoJnVuaWZvcm1CbG9jay5jc1JlZ2lzdGVySW5kZXgpOwogICAgICAgICBtRDNEVW5pZm9y
bUJsb2Nrcy5wdXNoX2JhY2sodW5pZm9ybUJsb2NrKTsKICAgICB9CiAKQEAgLTgzMCwxMCArODEx
LDEwIEBAIExpbmtSZXN1bHQgUHJvZ3JhbUQzRDo6bG9hZChnbDo6SW5mb0xvZyAmaW5mb0xvZywg
Z2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0pCiAKICAgICBzdHJlYW0tPnJlYWRTdHJpbmco
Jm1WZXJ0ZXhITFNMKTsKICAgICBzdHJlYW0tPnJlYWRCeXRlcyhyZWludGVycHJldF9jYXN0PHVu
c2lnbmVkIGNoYXIgKj4oJm1WZXJ0ZXhXb3JrYXJvdW5kcyksCi0gICAgICAgICAgICAgICAgICAg
ICAgc2l6ZW9mKEQzRENvbXBpbGVyV29ya2Fyb3VuZHMpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICBzaXplb2YoYW5nbGU6OkNvbXBpbGVyV29ya2Fyb3VuZHNEM0QpKTsKICAgICBzdHJlYW0tPnJl
YWRTdHJpbmcoJm1QaXhlbEhMU0wpOwogICAgIHN0cmVhbS0+cmVhZEJ5dGVzKHJlaW50ZXJwcmV0
X2Nhc3Q8dW5zaWduZWQgY2hhciAqPigmbVBpeGVsV29ya2Fyb3VuZHMpLAotICAgICAgICAgICAg
ICAgICAgICAgIHNpemVvZihEM0RDb21waWxlcldvcmthcm91bmRzKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZW9mKGFuZ2xlOjpDb21waWxlcldvcmthcm91bmRzRDNEKSk7CiAgICAgc3Ry
ZWFtLT5yZWFkQm9vbCgmbVVzZXNGcmFnRGVwdGgpOwogICAgIHN0cmVhbS0+cmVhZEJvb2woJm1V
c2VzUG9pbnRTaXplKTsKICAgICBzdHJlYW0tPnJlYWRCb29sKCZtVXNlc0ZsYXRJbnRlcnBvbGF0
aW9uKTsKQEAgLTg1Myw2ICs4MzQsOCBAQCBMaW5rUmVzdWx0IFByb2dyYW1EM0Q6OmxvYWQoZ2w6
OkluZm9Mb2cgJmluZm9Mb2csIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtKQogCiAgICAg
Y29uc3QgdW5zaWduZWQgY2hhciAqYmluYXJ5ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyICo+KHN0cmVhbS0+ZGF0YSgpKTsKIAorICAgIGJvb2wgc2VwYXJhdGVBdHRyaWJz
ID0gKG1TdGF0ZS5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSA9PSBHTF9TRVBBUkFU
RV9BVFRSSUJTKTsKKwogICAgIGNvbnN0IHVuc2lnbmVkIGludCB2ZXJ0ZXhTaGFkZXJDb3VudCA9
IHN0cmVhbS0+cmVhZEludDx1bnNpZ25lZCBpbnQ+KCk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQg
dmVydGV4U2hhZGVySW5kZXggPSAwOyB2ZXJ0ZXhTaGFkZXJJbmRleCA8IHZlcnRleFNoYWRlckNv
dW50OwogICAgICAgICAgdmVydGV4U2hhZGVySW5kZXgrKykKQEAgLTg3MCwxOCArODUzLDE0IEBA
IExpbmtSZXN1bHQgUHJvZ3JhbUQzRDo6bG9hZChnbDo6SW5mb0xvZyAmaW5mb0xvZywgZ2w6OkJp
bmFyeUlucHV0U3RyZWFtICpzdHJlYW0pCiAKICAgICAgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAq
c2hhZGVyRXhlY3V0YWJsZSA9IG51bGxwdHI7CiAKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0g
bVJlbmRlcmVyLT5sb2FkRXhlY3V0YWJsZSgKLSAgICAgICAgICAgIHZlcnRleFNoYWRlckZ1bmN0
aW9uLCB2ZXJ0ZXhTaGFkZXJTaXplLCBTSEFERVJfVkVSVEVYLCBtU3RyZWFtT3V0VmFyeWluZ3Ms
Ci0gICAgICAgICAgICAobVN0YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSgpID09
IEdMX1NFUEFSQVRFX0FUVFJJQlMpLCAmc2hhZGVyRXhlY3V0YWJsZSk7Ci0gICAgICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBMaW5rUmVzdWx0
KGZhbHNlLCBlcnJvcik7Ci0gICAgICAgIH0KKyAgICAgICAgQU5HTEVfVFJZKG1SZW5kZXJlci0+
bG9hZEV4ZWN1dGFibGUodmVydGV4U2hhZGVyRnVuY3Rpb24sIHZlcnRleFNoYWRlclNpemUsIFNI
QURFUl9WRVJURVgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1TdHJlYW1PdXRWYXJ5aW5ncywgc2VwYXJhdGVBdHRyaWJzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmc2hhZGVyRXhlY3V0YWJsZSkpOwogCiAgICAgICAg
IGlmICghc2hhZGVyRXhlY3V0YWJsZSkKICAgICAgICAgewogICAgICAgICAgICAgaW5mb0xvZyA8
PCAiQ291bGQgbm90IGNyZWF0ZSB2ZXJ0ZXggc2hhZGVyLiI7Ci0gICAgICAgICAgICByZXR1cm4g
TGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9SKSk7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBnZW5lcmF0ZWQgY29udmVydGVk
IGlucHV0IGxheW91dApAQCAtODg5LDggKzg2OCw4IEBAIExpbmtSZXN1bHQgUHJvZ3JhbUQzRDo6
bG9hZChnbDo6SW5mb0xvZyAmaW5mb0xvZywgZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0p
CiAgICAgICAgIFZlcnRleEV4ZWN1dGFibGU6OmdldFNpZ25hdHVyZShtUmVuZGVyZXIsIGlucHV0
TGF5b3V0LCAmc2lnbmF0dXJlKTsKIAogICAgICAgICAvLyBhZGQgbmV3IGJpbmFyeQotICAgICAg
ICBtVmVydGV4RXhlY3V0YWJsZXMucHVzaF9iYWNrKAotICAgICAgICAgICAgbmV3IFZlcnRleEV4
ZWN1dGFibGUoaW5wdXRMYXlvdXQsIHNpZ25hdHVyZSwgc2hhZGVyRXhlY3V0YWJsZSkpOworICAg
ICAgICBtVmVydGV4RXhlY3V0YWJsZXMucHVzaF9iYWNrKHN0ZDo6dW5pcXVlX3B0cjxWZXJ0ZXhF
eGVjdXRhYmxlPigKKyAgICAgICAgICAgIG5ldyBWZXJ0ZXhFeGVjdXRhYmxlKGlucHV0TGF5b3V0
LCBzaWduYXR1cmUsIHNoYWRlckV4ZWN1dGFibGUpKSk7CiAKICAgICAgICAgc3RyZWFtLT5za2lw
KHZlcnRleFNoYWRlclNpemUpOwogICAgIH0KQEAgLTkwOSwyMiArODg4LDE5IEBAIExpbmtSZXN1
bHQgUHJvZ3JhbUQzRDo6bG9hZChnbDo6SW5mb0xvZyAmaW5mb0xvZywgZ2w6OkJpbmFyeUlucHV0
U3RyZWFtICpzdHJlYW0pCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBpeGVsU2hhZGVy
RnVuY3Rpb24gPSBiaW5hcnkgKyBzdHJlYW0tPm9mZnNldCgpOwogICAgICAgICBTaGFkZXJFeGVj
dXRhYmxlRDNEICpzaGFkZXJFeGVjdXRhYmxlICAgID0gbnVsbHB0cjsKIAotICAgICAgICBnbDo6
RXJyb3IgZXJyb3IgPSBtUmVuZGVyZXItPmxvYWRFeGVjdXRhYmxlKAotICAgICAgICAgICAgcGl4
ZWxTaGFkZXJGdW5jdGlvbiwgcGl4ZWxTaGFkZXJTaXplLCBTSEFERVJfUElYRUwsIG1TdHJlYW1P
dXRWYXJ5aW5ncywKLSAgICAgICAgICAgIChtU3RhdGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZm
ZXJNb2RlKCkgPT0gR0xfU0VQQVJBVEVfQVRUUklCUyksICZzaGFkZXJFeGVjdXRhYmxlKTsKLSAg
ICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IExpbmtSZXN1bHQoZmFsc2UsIGVycm9yKTsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlko
bVJlbmRlcmVyLT5sb2FkRXhlY3V0YWJsZShwaXhlbFNoYWRlckZ1bmN0aW9uLCBwaXhlbFNoYWRl
clNpemUsIFNIQURFUl9QSVhFTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbVN0cmVhbU91dFZhcnlpbmdzLCBzZXBhcmF0ZUF0dHJpYnMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFkZXJFeGVjdXRhYmxlKSk7CiAK
ICAgICAgICAgaWYgKCFzaGFkZXJFeGVjdXRhYmxlKQogICAgICAgICB7CiAgICAgICAgICAgICBp
bmZvTG9nIDw8ICJDb3VsZCBub3QgY3JlYXRlIHBpeGVsIHNoYWRlci4iOwotICAgICAgICAgICAg
cmV0dXJuIExpbmtSZXN1bHQoZmFsc2UsIGdsOjpFcnJvcihHTF9OT19FUlJPUikpOworICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgLy8gYWRkIG5ldyBiaW5h
cnkKLSAgICAgICAgbVBpeGVsRXhlY3V0YWJsZXMucHVzaF9iYWNrKG5ldyBQaXhlbEV4ZWN1dGFi
bGUob3V0cHV0cywgc2hhZGVyRXhlY3V0YWJsZSkpOworICAgICAgICBtUGl4ZWxFeGVjdXRhYmxl
cy5wdXNoX2JhY2soCisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGl4ZWxFeGVjdXRhYmxl
PihuZXcgUGl4ZWxFeGVjdXRhYmxlKG91dHB1dHMsIHNoYWRlckV4ZWN1dGFibGUpKSk7CiAKICAg
ICAgICAgc3RyZWFtLT5za2lwKHBpeGVsU2hhZGVyU2l6ZSk7CiAgICAgfQpAQCAtOTM1LDMyICs5
MTEsNDkgQEAgTGlua1Jlc3VsdCBQcm9ncmFtRDNEOjpsb2FkKGdsOjpJbmZvTG9nICZpbmZvTG9n
LCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkKICAgICAgICAgdW5zaWduZWQgaW50IGdl
b21ldHJ5U2hhZGVyU2l6ZSA9IHN0cmVhbS0+cmVhZEludDx1bnNpZ25lZCBpbnQ+KCk7CiAgICAg
ICAgIGlmIChnZW9tZXRyeVNoYWRlclNpemUgPT0gMCkKICAgICAgICAgewotICAgICAgICAgICAg
bUdlb21ldHJ5RXhlY3V0YWJsZXNbZ2VvbWV0cnlFeGVJbmRleF0gPSBudWxscHRyOwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFy
ICpnZW9tZXRyeVNoYWRlckZ1bmN0aW9uID0gYmluYXJ5ICsgc3RyZWFtLT5vZmZzZXQoKTsKLSAg
ICAgICAgYm9vbCBzcGxpdEF0dHJpYnMgICAgICAgICAgICAgICAgICAgICAgICAgICA9IChtU3Rh
dGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKCkgPT0gR0xfU0VQQVJBVEVfQVRUUklC
Uyk7CiAKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbVJlbmRlcmVyLT5sb2FkRXhlY3V0YWJs
ZSgKLSAgICAgICAgICAgIGdlb21ldHJ5U2hhZGVyRnVuY3Rpb24sIGdlb21ldHJ5U2hhZGVyU2l6
ZSwgU0hBREVSX0dFT01FVFJZLCBtU3RyZWFtT3V0VmFyeWluZ3MsCi0gICAgICAgICAgICBzcGxp
dEF0dHJpYnMsICZtR2VvbWV0cnlFeGVjdXRhYmxlc1tnZW9tZXRyeUV4ZUluZGV4XSk7Ci0gICAg
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBM
aW5rUmVzdWx0KGZhbHNlLCBlcnJvcik7Ci0gICAgICAgIH0KKyAgICAgICAgU2hhZGVyRXhlY3V0
YWJsZUQzRCAqZ2VvbWV0cnlFeGVjdXRhYmxlID0gbnVsbHB0cjsKKyAgICAgICAgQU5HTEVfVFJZ
KG1SZW5kZXJlci0+bG9hZEV4ZWN1dGFibGUoZ2VvbWV0cnlTaGFkZXJGdW5jdGlvbiwgZ2VvbWV0
cnlTaGFkZXJTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTSEFERVJfR0VPTUVUUlksIG1TdHJlYW1PdXRWYXJ5aW5ncywgc2VwYXJhdGVBdHRyaWJzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ2VvbWV0cnlFeGVj
dXRhYmxlKSk7CiAKLSAgICAgICAgaWYgKCFtR2VvbWV0cnlFeGVjdXRhYmxlc1tnZW9tZXRyeUV4
ZUluZGV4XSkKKyAgICAgICAgaWYgKCFnZW9tZXRyeUV4ZWN1dGFibGUpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGluZm9Mb2cgPDwgIkNvdWxkIG5vdCBjcmVhdGUgZ2VvbWV0cnkgc2hhZGVyLiI7
Ci0gICAgICAgICAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKworICAgICAgICBt
R2VvbWV0cnlFeGVjdXRhYmxlc1tnZW9tZXRyeUV4ZUluZGV4XS5yZXNldChnZW9tZXRyeUV4ZWN1
dGFibGUpOworCiAgICAgICAgIHN0cmVhbS0+c2tpcChnZW9tZXRyeVNoYWRlclNpemUpOwogICAg
IH0KIAorICAgIHVuc2lnbmVkIGludCBjb21wdXRlU2hhZGVyU2l6ZSA9IHN0cmVhbS0+cmVhZElu
dDx1bnNpZ25lZCBpbnQ+KCk7CisgICAgaWYgKGNvbXB1dGVTaGFkZXJTaXplID4gMCkKKyAgICB7
CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNvbXB1dGVTaGFkZXJGdW5jdGlvbiA9IGJp
bmFyeSArIHN0cmVhbS0+b2Zmc2V0KCk7CisKKyAgICAgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAq
Y29tcHV0ZUV4ZWN1dGFibGUgPSBudWxscHRyOworICAgICAgICBBTkdMRV9UUlkobVJlbmRlcmVy
LT5sb2FkRXhlY3V0YWJsZShjb21wdXRlU2hhZGVyRnVuY3Rpb24sIGNvbXB1dGVTaGFkZXJTaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSEFERVJfQ09N
UFVURSwgc3RkOjp2ZWN0b3I8RDNEVmFyeWluZz4oKSwgZmFsc2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21wdXRlRXhlY3V0YWJsZSkpOworCisgICAg
ICAgIGlmICghY29tcHV0ZUV4ZWN1dGFibGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluZm9M
b2cgPDwgIkNvdWxkIG5vdCBjcmVhdGUgY29tcHV0ZSBzaGFkZXIuIjsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIG1Db21wdXRlRXhlY3V0YWJsZS5yZXNl
dChjb21wdXRlRXhlY3V0YWJsZSk7CisgICAgfQorCiAgICAgaW5pdGlhbGl6ZVVuaWZvcm1TdG9y
YWdlKCk7CiAKLSAgICByZXR1cm4gTGlua1Jlc3VsdCh0cnVlLCBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogZ2w6OkVycm9yIFByb2dyYW1EM0Q6OnNhdmUo
Z2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqc3RyZWFtKQpAQCAtOTk1LDggKzk4OCwxNyBAQCBnbDo6
RXJyb3IgUHJvZ3JhbUQzRDo6c2F2ZShnbDo6QmluYXJ5T3V0cHV0U3RyZWFtICpzdHJlYW0pCiAg
ICAgICAgIHN0cmVhbS0+d3JpdGVJbnQobVNhbXBsZXJzVlNbaV0udGV4dHVyZVR5cGUpOwogICAg
IH0KIAorICAgIHN0cmVhbS0+d3JpdGVJbnQobVNhbXBsZXJzQ1Muc2l6ZSgpKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG1TYW1wbGVyc0NTLnNpemUoKTsgKytpKQorICAgIHsK
KyAgICAgICAgc3RyZWFtLT53cml0ZUludChtU2FtcGxlcnNDU1tpXS5hY3RpdmUpOworICAgICAg
ICBzdHJlYW0tPndyaXRlSW50KG1TYW1wbGVyc0NTW2ldLmxvZ2ljYWxUZXh0dXJlVW5pdCk7Cisg
ICAgICAgIHN0cmVhbS0+d3JpdGVJbnQobVNhbXBsZXJzQ1NbaV0udGV4dHVyZVR5cGUpOworICAg
IH0KKwogICAgIHN0cmVhbS0+d3JpdGVJbnQobVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2UpOwogICAg
IHN0cmVhbS0+d3JpdGVJbnQobVVzZWRQaXhlbFNhbXBsZXJSYW5nZSk7CisgICAgc3RyZWFtLT53
cml0ZUludChtVXNlZENvbXB1dGVTYW1wbGVyUmFuZ2UpOwogCiAgICAgc3RyZWFtLT53cml0ZUlu
dChtRDNEVW5pZm9ybXMuc2l6ZSgpKTsKICAgICBmb3IgKGNvbnN0IEQzRFVuaWZvcm0gKnVuaWZv
cm0gOiBtRDNEVW5pZm9ybXMpCkBAIC0xMDA0LDE1ICsxMDA2LDIxIEBAIGdsOjpFcnJvciBQcm9n
cmFtRDNEOjpzYXZlKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0cmVhbSkKICAgICAgICAgLy8g
VHlwZSwgbmFtZSBhbmQgYXJyYXlTaXplIGFyZSByZWR1bmRhbnQsIHNvIGFyZW4ndCBzdG9yZWQg
aW4gdGhlIGJpbmFyeS4KICAgICAgICAgc3RyZWFtLT53cml0ZUludE9yTmVnT25lKHVuaWZvcm0t
PnBzUmVnaXN0ZXJJbmRleCk7CiAgICAgICAgIHN0cmVhbS0+d3JpdGVJbnRPck5lZ09uZSh1bmlm
b3JtLT52c1JlZ2lzdGVySW5kZXgpOworICAgICAgICBzdHJlYW0tPndyaXRlSW50T3JOZWdPbmUo
dW5pZm9ybS0+Y3NSZWdpc3RlckluZGV4KTsKICAgICAgICAgc3RyZWFtLT53cml0ZUludCh1bmlm
b3JtLT5yZWdpc3RlckNvdW50KTsKICAgICAgICAgc3RyZWFtLT53cml0ZUludCh1bmlmb3JtLT5y
ZWdpc3RlckVsZW1lbnQpOwogICAgIH0KIAorICAgIC8vIEVuc3VyZSB3ZSBpbml0IHRoZSB1bmlm
b3JtIGJsb2NrIHN0cnVjdHVyZSBkYXRhIGlmIHdlIHNob3VsZC4KKyAgICAvLyBodHRwOi8vYW5n
bGVidWcuY29tLzE2MzcKKyAgICBlbnN1cmVVbmlmb3JtQmxvY2tzSW5pdGlhbGl6ZWQoKTsKKwog
ICAgIHN0cmVhbS0+d3JpdGVJbnQobUQzRFVuaWZvcm1CbG9ja3Muc2l6ZSgpKTsKICAgICBmb3Ig
KGNvbnN0IEQzRFVuaWZvcm1CbG9jayAmdW5pZm9ybUJsb2NrIDogbUQzRFVuaWZvcm1CbG9ja3Mp
CiAgICAgewogICAgICAgICBzdHJlYW0tPndyaXRlSW50T3JOZWdPbmUodW5pZm9ybUJsb2NrLnBz
UmVnaXN0ZXJJbmRleCk7CiAgICAgICAgIHN0cmVhbS0+d3JpdGVJbnRPck5lZ09uZSh1bmlmb3Jt
QmxvY2sudnNSZWdpc3RlckluZGV4KTsKKyAgICAgICAgc3RyZWFtLT53cml0ZUludE9yTmVnT25l
KHVuaWZvcm1CbG9jay5jc1JlZ2lzdGVySW5kZXgpOwogICAgIH0KIAogICAgIHN0cmVhbS0+d3Jp
dGVJbnQobVN0cmVhbU91dFZhcnlpbmdzLnNpemUoKSk7CkBAIC0xMDI2LDEwICsxMDM0LDEwIEBA
IGdsOjpFcnJvciBQcm9ncmFtRDNEOjpzYXZlKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0cmVh
bSkKIAogICAgIHN0cmVhbS0+d3JpdGVTdHJpbmcobVZlcnRleEhMU0wpOwogICAgIHN0cmVhbS0+
d3JpdGVCeXRlcyhyZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIgKj4oJm1WZXJ0ZXhXb3Jr
YXJvdW5kcyksCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihEM0RDb21waWxlcldvcmth
cm91bmRzKSk7CisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihhbmdsZTo6Q29tcGlsZXJX
b3JrYXJvdW5kc0QzRCkpOwogICAgIHN0cmVhbS0+d3JpdGVTdHJpbmcobVBpeGVsSExTTCk7CiAg
ICAgc3RyZWFtLT53cml0ZUJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhciAqPigm
bVBpeGVsV29ya2Fyb3VuZHMpLAotICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoRDNEQ29t
cGlsZXJXb3JrYXJvdW5kcykpOworICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoYW5nbGU6
OkNvbXBpbGVyV29ya2Fyb3VuZHNEM0QpKTsKICAgICBzdHJlYW0tPndyaXRlSW50KG1Vc2VzRnJh
Z0RlcHRoKTsKICAgICBzdHJlYW0tPndyaXRlSW50KG1Vc2VzUG9pbnRTaXplKTsKICAgICBzdHJl
YW0tPndyaXRlSW50KG1Vc2VzRmxhdEludGVycG9sYXRpb24pOwpAQCAtMTA1Miw3ICsxMDYwLDcg
QEAgZ2w6OkVycm9yIFByb2dyYW1EM0Q6OnNhdmUoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqc3Ry
ZWFtKQogICAgIGZvciAoc2l6ZV90IHZlcnRleEV4ZWN1dGFibGVJbmRleCA9IDA7IHZlcnRleEV4
ZWN1dGFibGVJbmRleCA8IG1WZXJ0ZXhFeGVjdXRhYmxlcy5zaXplKCk7CiAgICAgICAgICB2ZXJ0
ZXhFeGVjdXRhYmxlSW5kZXgrKykKICAgICB7Ci0gICAgICAgIFZlcnRleEV4ZWN1dGFibGUgKnZl
cnRleEV4ZWN1dGFibGUgPSBtVmVydGV4RXhlY3V0YWJsZXNbdmVydGV4RXhlY3V0YWJsZUluZGV4
XTsKKyAgICAgICAgVmVydGV4RXhlY3V0YWJsZSAqdmVydGV4RXhlY3V0YWJsZSA9IG1WZXJ0ZXhF
eGVjdXRhYmxlc1t2ZXJ0ZXhFeGVjdXRhYmxlSW5kZXhdLmdldCgpOwogCiAgICAgICAgIGNvbnN0
IGF1dG8gJmlucHV0TGF5b3V0ID0gdmVydGV4RXhlY3V0YWJsZS0+aW5wdXRzKCk7CiAgICAgICAg
IHN0cmVhbS0+d3JpdGVJbnQoaW5wdXRMYXlvdXQuc2l6ZSgpKTsKQEAgLTEwNzMsNyArMTA4MSw3
IEBAIGdsOjpFcnJvciBQcm9ncmFtRDNEOjpzYXZlKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0
cmVhbSkKICAgICBmb3IgKHNpemVfdCBwaXhlbEV4ZWN1dGFibGVJbmRleCA9IDA7IHBpeGVsRXhl
Y3V0YWJsZUluZGV4IDwgbVBpeGVsRXhlY3V0YWJsZXMuc2l6ZSgpOwogICAgICAgICAgcGl4ZWxF
eGVjdXRhYmxlSW5kZXgrKykKICAgICB7Ci0gICAgICAgIFBpeGVsRXhlY3V0YWJsZSAqcGl4ZWxF
eGVjdXRhYmxlID0gbVBpeGVsRXhlY3V0YWJsZXNbcGl4ZWxFeGVjdXRhYmxlSW5kZXhdOworICAg
ICAgICBQaXhlbEV4ZWN1dGFibGUgKnBpeGVsRXhlY3V0YWJsZSA9IG1QaXhlbEV4ZWN1dGFibGVz
W3BpeGVsRXhlY3V0YWJsZUluZGV4XS5nZXQoKTsKIAogICAgICAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxHTGVudW0+IG91dHB1dHMgPSBwaXhlbEV4ZWN1dGFibGUtPm91dHB1dFNpZ25hdHVyZSgpOwog
ICAgICAgICBzdHJlYW0tPndyaXRlSW50KG91dHB1dHMuc2l6ZSgpKTsKQEAgLTEwODksMjYgKzEw
OTcsNDEgQEAgZ2w6OkVycm9yIFByb2dyYW1EM0Q6OnNhdmUoZ2w6OkJpbmFyeU91dHB1dFN0cmVh
bSAqc3RyZWFtKQogICAgICAgICBzdHJlYW0tPndyaXRlQnl0ZXMocGl4ZWxCbG9iLCBwaXhlbFNo
YWRlclNpemUpOwogICAgIH0KIAotICAgIGZvciAoY29uc3QgU2hhZGVyRXhlY3V0YWJsZUQzRCAq
Z2VvbWV0cnlFeGUgOiBtR2VvbWV0cnlFeGVjdXRhYmxlcykKKyAgICBmb3IgKGF1dG8gY29uc3Qg
Jmdlb21ldHJ5RXhlY3V0YWJsZSA6IG1HZW9tZXRyeUV4ZWN1dGFibGVzKQogICAgIHsKLSAgICAg
ICAgaWYgKGdlb21ldHJ5RXhlID09IG51bGxwdHIpCisgICAgICAgIGlmICghZ2VvbWV0cnlFeGVj
dXRhYmxlKQogICAgICAgICB7CiAgICAgICAgICAgICBzdHJlYW0tPndyaXRlSW50KDApOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBzaXplX3QgZ2VvbWV0cnlT
aGFkZXJTaXplID0gZ2VvbWV0cnlFeGUtPmdldExlbmd0aCgpOworICAgICAgICBzaXplX3QgZ2Vv
bWV0cnlTaGFkZXJTaXplID0gZ2VvbWV0cnlFeGVjdXRhYmxlLT5nZXRMZW5ndGgoKTsKICAgICAg
ICAgc3RyZWFtLT53cml0ZUludChnZW9tZXRyeVNoYWRlclNpemUpOwotICAgICAgICBzdHJlYW0t
PndyaXRlQnl0ZXMoZ2VvbWV0cnlFeGUtPmdldEZ1bmN0aW9uKCksIGdlb21ldHJ5U2hhZGVyU2l6
ZSk7CisgICAgICAgIHN0cmVhbS0+d3JpdGVCeXRlcyhnZW9tZXRyeUV4ZWN1dGFibGUtPmdldEZ1
bmN0aW9uKCksIGdlb21ldHJ5U2hhZGVyU2l6ZSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgaWYgKG1Db21wdXRlRXhlY3V0YWJsZSkKKyAgICB7Cisg
ICAgICAgIHNpemVfdCBjb21wdXRlU2hhZGVyU2l6ZSA9IG1Db21wdXRlRXhlY3V0YWJsZS0+Z2V0
TGVuZ3RoKCk7CisgICAgICAgIHN0cmVhbS0+d3JpdGVJbnQoY29tcHV0ZVNoYWRlclNpemUpOwor
ICAgICAgICBzdHJlYW0tPndyaXRlQnl0ZXMobUNvbXB1dGVFeGVjdXRhYmxlLT5nZXRGdW5jdGlv
bigpLCBjb21wdXRlU2hhZGVyU2l6ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IHN0cmVhbS0+d3JpdGVJbnQoMCk7CisgICAgfQorCisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CiB9CiAKIHZvaWQgUHJvZ3JhbUQzRDo6c2V0QmluYXJ5UmV0cmlldmFibGVIaW50KGJvb2wgLyog
cmV0cmlldmFibGUgKi8pCiB7CiB9CiAKK3ZvaWQgUHJvZ3JhbUQzRDo6c2V0U2VwYXJhYmxlKGJv
b2wgLyogc2VwYXJhYmxlICovKQoreworfQorCiBnbDo6RXJyb3IgUHJvZ3JhbUQzRDo6Z2V0UGl4
ZWxFeGVjdXRhYmxlRm9yRnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmYm8sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyRXhlY3V0YWJsZUQzRCAqKm91dEV4ZWN1dGFibGUpCiB7CkBAIC0xMTQ1LDcgKzExNjgsNyBA
QCBnbDo6RXJyb3IgUHJvZ3JhbUQzRDo6Z2V0UGl4ZWxFeGVjdXRhYmxlRm9yT3V0cHV0TGF5b3V0
KGNvbnN0IHN0ZDo6dmVjdG9yPEdMZW51bQogICAgICAgICBpZiAobVBpeGVsRXhlY3V0YWJsZXNb
ZXhlY3V0YWJsZUluZGV4XS0+bWF0Y2hlc1NpZ25hdHVyZShvdXRwdXRTaWduYXR1cmUpKQogICAg
ICAgICB7CiAgICAgICAgICAgICAqb3V0RXhlY3R1YWJsZSA9IG1QaXhlbEV4ZWN1dGFibGVzW2V4
ZWN1dGFibGVJbmRleF0tPnNoYWRlckV4ZWN1dGFibGUoKTsKLSAgICAgICAgICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExNTgsMjggKzExODEsMjQgQEAgZ2w6OkVycm9yIFBy
b2dyYW1EM0Q6OmdldFBpeGVsRXhlY3V0YWJsZUZvck91dHB1dExheW91dChjb25zdCBzdGQ6OnZl
Y3RvcjxHTGVudW0KICAgICBnbDo6SW5mb0xvZyB0ZW1wSW5mb0xvZzsKICAgICBnbDo6SW5mb0xv
ZyAqY3VycmVudEluZm9Mb2cgPSBpbmZvTG9nID8gaW5mb0xvZyA6ICZ0ZW1wSW5mb0xvZzsKIAot
ICAgIGdsOjpFcnJvciBlcnJvciA9IG1SZW5kZXJlci0+Y29tcGlsZVRvRXhlY3V0YWJsZSgKKyAg
ICBBTkdMRV9UUlkobVJlbmRlcmVyLT5jb21waWxlVG9FeGVjdXRhYmxlKAogICAgICAgICAqY3Vy
cmVudEluZm9Mb2csIGZpbmFsUGl4ZWxITFNMLCBTSEFERVJfUElYRUwsIG1TdHJlYW1PdXRWYXJ5
aW5ncywKICAgICAgICAgKG1TdGF0ZS5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSA9
PSBHTF9TRVBBUkFURV9BVFRSSUJTKSwgbVBpeGVsV29ya2Fyb3VuZHMsCi0gICAgICAgICZwaXhl
bEV4ZWN1dGFibGUpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICBy
ZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgICAgICAmcGl4ZWxFeGVjdXRhYmxlKSk7CiAKICAgICBp
ZiAocGl4ZWxFeGVjdXRhYmxlKQogICAgIHsKLSAgICAgICAgbVBpeGVsRXhlY3V0YWJsZXMucHVz
aF9iYWNrKG5ldyBQaXhlbEV4ZWN1dGFibGUob3V0cHV0U2lnbmF0dXJlLCBwaXhlbEV4ZWN1dGFi
bGUpKTsKKyAgICAgICAgbVBpeGVsRXhlY3V0YWJsZXMucHVzaF9iYWNrKHN0ZDo6dW5pcXVlX3B0
cjxQaXhlbEV4ZWN1dGFibGU+KAorICAgICAgICAgICAgbmV3IFBpeGVsRXhlY3V0YWJsZShvdXRw
dXRTaWduYXR1cmUsIHBpeGVsRXhlY3V0YWJsZSkpKTsKICAgICB9CiAgICAgZWxzZSBpZiAoIWlu
Zm9Mb2cpCiAgICAgewotICAgICAgICBzdGQ6OnZlY3RvcjxjaGFyPiB0ZW1wQ2hhckJ1ZmZlcih0
ZW1wSW5mb0xvZy5nZXRMZW5ndGgoKSArIDMpOwotICAgICAgICB0ZW1wSW5mb0xvZy5nZXRMb2co
c3RhdGljX2Nhc3Q8R0xzaXplaT4odGVtcEluZm9Mb2cuZ2V0TGVuZ3RoKCkpLCBOVUxMLCAmdGVt
cENoYXJCdWZmZXJbMF0pOwotICAgICAgICBFUlIoIkVycm9yIGNvbXBpbGluZyBkeW5hbWljIHBp
eGVsIGV4ZWN1dGFibGU6XG4lc1xuIiwgJnRlbXBDaGFyQnVmZmVyWzBdKTsKKyAgICAgICAgRVJS
KCkgPDwgIkVycm9yIGNvbXBpbGluZyBkeW5hbWljIHBpeGVsIGV4ZWN1dGFibGU6IiA8PCBzdGQ6
OmVuZGwKKyAgICAgICAgICAgICAgPDwgdGVtcEluZm9Mb2cuc3RyKCkgPDwgc3RkOjplbmRsOwog
ICAgIH0KIAogICAgICpvdXRFeGVjdHVhYmxlID0gcGl4ZWxFeGVjdXRhYmxlOwotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQog
CiBnbDo6RXJyb3IgUHJvZ3JhbUQzRDo6Z2V0VmVydGV4RXhlY3V0YWJsZUZvcklucHV0TGF5b3V0
KGNvbnN0IGdsOjpJbnB1dExheW91dCAmaW5wdXRMYXlvdXQsCkBAIC0xMTkzLDcgKzEyMTIsNyBA
QCBnbDo6RXJyb3IgUHJvZ3JhbUQzRDo6Z2V0VmVydGV4RXhlY3V0YWJsZUZvcklucHV0TGF5b3V0
KGNvbnN0IGdsOjpJbnB1dExheW91dCAmaQogICAgICAgICBpZiAobVZlcnRleEV4ZWN1dGFibGVz
W2V4ZWN1dGFibGVJbmRleF0tPm1hdGNoZXNTaWduYXR1cmUobUNhY2hlZFZlcnRleFNpZ25hdHVy
ZSkpCiAgICAgICAgIHsKICAgICAgICAgICAgICpvdXRFeGVjdHVhYmxlID0gbVZlcnRleEV4ZWN1
dGFibGVzW2V4ZWN1dGFibGVJbmRleF0tPnNoYWRlckV4ZWN1dGFibGUoKTsKLSAgICAgICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEyMDcsMjkgKzEyMjYsMjQgQEAgZ2w6
OkVycm9yIFByb2dyYW1EM0Q6OmdldFZlcnRleEV4ZWN1dGFibGVGb3JJbnB1dExheW91dChjb25z
dCBnbDo6SW5wdXRMYXlvdXQgJmkKICAgICBnbDo6SW5mb0xvZyB0ZW1wSW5mb0xvZzsKICAgICBn
bDo6SW5mb0xvZyAqY3VycmVudEluZm9Mb2cgPSBpbmZvTG9nID8gaW5mb0xvZyA6ICZ0ZW1wSW5m
b0xvZzsKIAotICAgIGdsOjpFcnJvciBlcnJvciA9IG1SZW5kZXJlci0+Y29tcGlsZVRvRXhlY3V0
YWJsZSgKKyAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5jb21waWxlVG9FeGVjdXRhYmxlKAogICAg
ICAgICAqY3VycmVudEluZm9Mb2csIGZpbmFsVmVydGV4SExTTCwgU0hBREVSX1ZFUlRFWCwgbVN0
cmVhbU91dFZhcnlpbmdzLAogICAgICAgICAobVN0YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVm
ZmVyTW9kZSgpID09IEdMX1NFUEFSQVRFX0FUVFJJQlMpLCBtVmVydGV4V29ya2Fyb3VuZHMsCi0g
ICAgICAgICZ2ZXJ0ZXhFeGVjdXRhYmxlKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICAgICAgJnZlcnRleEV4ZWN1dGFi
bGUpKTsKIAogICAgIGlmICh2ZXJ0ZXhFeGVjdXRhYmxlKQogICAgIHsKLSAgICAgICAgbVZlcnRl
eEV4ZWN1dGFibGVzLnB1c2hfYmFjaygKLSAgICAgICAgICAgIG5ldyBWZXJ0ZXhFeGVjdXRhYmxl
KGlucHV0TGF5b3V0LCBtQ2FjaGVkVmVydGV4U2lnbmF0dXJlLCB2ZXJ0ZXhFeGVjdXRhYmxlKSk7
CisgICAgICAgIG1WZXJ0ZXhFeGVjdXRhYmxlcy5wdXNoX2JhY2soc3RkOjp1bmlxdWVfcHRyPFZl
cnRleEV4ZWN1dGFibGU+KAorICAgICAgICAgICAgbmV3IFZlcnRleEV4ZWN1dGFibGUoaW5wdXRM
YXlvdXQsIG1DYWNoZWRWZXJ0ZXhTaWduYXR1cmUsIHZlcnRleEV4ZWN1dGFibGUpKSk7CiAgICAg
fQogICAgIGVsc2UgaWYgKCFpbmZvTG9nKQogICAgIHsKLSAgICAgICAgc3RkOjp2ZWN0b3I8Y2hh
cj4gdGVtcENoYXJCdWZmZXIodGVtcEluZm9Mb2cuZ2V0TGVuZ3RoKCkgKyAzKTsKLSAgICAgICAg
dGVtcEluZm9Mb2cuZ2V0TG9nKHN0YXRpY19jYXN0PEdMc2l6ZWk+KHRlbXBJbmZvTG9nLmdldExl
bmd0aCgpKSwgTlVMTCwgJnRlbXBDaGFyQnVmZmVyWzBdKTsKLSAgICAgICAgRVJSKCJFcnJvciBj
b21waWxpbmcgZHluYW1pYyB2ZXJ0ZXggZXhlY3V0YWJsZTpcbiVzXG4iLCAmdGVtcENoYXJCdWZm
ZXJbMF0pOworICAgICAgICBFUlIoKSA8PCAiRXJyb3IgY29tcGlsaW5nIGR5bmFtaWMgdmVydGV4
IGV4ZWN1dGFibGU6IiA8PCBzdGQ6OmVuZGwKKyAgICAgICAgICAgICAgPDwgdGVtcEluZm9Mb2cu
c3RyKCkgPDwgc3RkOjplbmRsOwogICAgIH0KIAogICAgICpvdXRFeGVjdHVhYmxlID0gdmVydGV4
RXhlY3V0YWJsZTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFByb2dyYW1EM0Q6OmdldEdlb21ldHJ5
RXhlY3V0YWJsZUZvclByaW1pdGl2ZVR5cGUoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwK
QEAgLTEyNDUsMTggKzEyNTksMTggQEAgZ2w6OkVycm9yIFByb2dyYW1EM0Q6OmdldEdlb21ldHJ5
RXhlY3V0YWJsZUZvclByaW1pdGl2ZVR5cGUoY29uc3QgZ2w6OkNvbnRleHRTdGEKICAgICAvLyBS
ZXR1cm4gYSBudWxsIHNoYWRlciBpZiB0aGUgY3VycmVudCByZW5kZXJpbmcgZG9lc24ndCB1c2Ug
YSBnZW9tZXRyeSBzaGFkZXIKICAgICBpZiAoIXVzZXNHZW9tZXRyeVNoYWRlcihkcmF3TW9kZSkp
CiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAgZ2w6OlByaW1pdGl2ZVR5cGUgZ2Vv
bWV0cnlTaGFkZXJUeXBlID0gR2V0R2VvbWV0cnlTaGFkZXJUeXBlRnJvbURyYXdNb2RlKGRyYXdN
b2RlKTsKIAotICAgIGlmIChtR2VvbWV0cnlFeGVjdXRhYmxlc1tnZW9tZXRyeVNoYWRlclR5cGVd
ICE9IG51bGxwdHIpCisgICAgaWYgKG1HZW9tZXRyeUV4ZWN1dGFibGVzW2dlb21ldHJ5U2hhZGVy
VHlwZV0pCiAgICAgewogICAgICAgICBpZiAob3V0RXhlY3V0YWJsZSkKICAgICAgICAgewotICAg
ICAgICAgICAgKm91dEV4ZWN1dGFibGUgPSBtR2VvbWV0cnlFeGVjdXRhYmxlc1tnZW9tZXRyeVNo
YWRlclR5cGVdOworICAgICAgICAgICAgKm91dEV4ZWN1dGFibGUgPSBtR2VvbWV0cnlFeGVjdXRh
Ymxlc1tnZW9tZXRyeVNoYWRlclR5cGVdLmdldCgpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
ICAgICB9CiAKICAgICBzdGQ6OnN0cmluZyBnZW9tZXRyeUhMU0wgPSBtRHluYW1pY0hMU0wtPmdl
bmVyYXRlR2VvbWV0cnlTaGFkZXJITFNMKApAQCAtMTI2Niw1MyArMTI4MCwxNDAgQEAgZ2w6OkVy
cm9yIFByb2dyYW1EM0Q6OmdldEdlb21ldHJ5RXhlY3V0YWJsZUZvclByaW1pdGl2ZVR5cGUoY29u
c3QgZ2w6OkNvbnRleHRTdGEKICAgICBnbDo6SW5mb0xvZyB0ZW1wSW5mb0xvZzsKICAgICBnbDo6
SW5mb0xvZyAqY3VycmVudEluZm9Mb2cgPSBpbmZvTG9nID8gaW5mb0xvZyA6ICZ0ZW1wSW5mb0xv
ZzsKIAotICAgIGdsOjpFcnJvciBlcnJvciA9IG1SZW5kZXJlci0+Y29tcGlsZVRvRXhlY3V0YWJs
ZSgKKyAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICpnZW9tZXRyeUV4ZWN1dGFibGUgPSBudWxscHRy
OworICAgIGdsOjpFcnJvciBlcnJvciAgICAgICAgICAgICAgICAgICAgICAgICA9IG1SZW5kZXJl
ci0+Y29tcGlsZVRvRXhlY3V0YWJsZSgKICAgICAgICAgKmN1cnJlbnRJbmZvTG9nLCBnZW9tZXRy
eUhMU0wsIFNIQURFUl9HRU9NRVRSWSwgbVN0cmVhbU91dFZhcnlpbmdzLAotICAgICAgICAobVN0
YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSgpID09IEdMX1NFUEFSQVRFX0FUVFJJ
QlMpLCBEM0RDb21waWxlcldvcmthcm91bmRzKCksCi0gICAgICAgICZtR2VvbWV0cnlFeGVjdXRh
Ymxlc1tnZW9tZXRyeVNoYWRlclR5cGVdKTsKKyAgICAgICAgKG1TdGF0ZS5nZXRUcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlck1vZGUoKSA9PSBHTF9TRVBBUkFURV9BVFRSSUJTKSwKKyAgICAgICAgYW5n
bGU6OkNvbXBpbGVyV29ya2Fyb3VuZHNEM0QoKSwgJmdlb21ldHJ5RXhlY3V0YWJsZSk7CiAKICAg
ICBpZiAoIWluZm9Mb2cgJiYgZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgc3RkOjp2
ZWN0b3I8Y2hhcj4gdGVtcENoYXJCdWZmZXIodGVtcEluZm9Mb2cuZ2V0TGVuZ3RoKCkgKyAzKTsK
LSAgICAgICAgdGVtcEluZm9Mb2cuZ2V0TG9nKHN0YXRpY19jYXN0PEdMc2l6ZWk+KHRlbXBJbmZv
TG9nLmdldExlbmd0aCgpKSwgTlVMTCwgJnRlbXBDaGFyQnVmZmVyWzBdKTsKLSAgICAgICAgRVJS
KCJFcnJvciBjb21waWxpbmcgZHluYW1pYyBnZW9tZXRyeSBleGVjdXRhYmxlOlxuJXNcbiIsICZ0
ZW1wQ2hhckJ1ZmZlclswXSk7CisgICAgICAgIEVSUigpIDw8ICJFcnJvciBjb21waWxpbmcgZHlu
YW1pYyBnZW9tZXRyeSBleGVjdXRhYmxlOiIgPDwgc3RkOjplbmRsCisgICAgICAgICAgICAgIDw8
IHRlbXBJbmZvTG9nLnN0cigpIDw8IHN0ZDo6ZW5kbDsKKyAgICB9CisKKyAgICBpZiAoZ2VvbWV0
cnlFeGVjdXRhYmxlICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBtR2VvbWV0cnlFeGVjdXRh
Ymxlc1tnZW9tZXRyeVNoYWRlclR5cGVdLnJlc2V0KGdlb21ldHJ5RXhlY3V0YWJsZSk7CiAgICAg
fQogCiAgICAgaWYgKG91dEV4ZWN1dGFibGUpCiAgICAgewotICAgICAgICAqb3V0RXhlY3V0YWJs
ZSA9IG1HZW9tZXRyeUV4ZWN1dGFibGVzW2dlb21ldHJ5U2hhZGVyVHlwZV07CisgICAgICAgICpv
dXRFeGVjdXRhYmxlID0gbUdlb21ldHJ5RXhlY3V0YWJsZXNbZ2VvbWV0cnlTaGFkZXJUeXBlXS5n
ZXQoKTsKICAgICB9CiAgICAgcmV0dXJuIGVycm9yOwogfQogCi1MaW5rUmVzdWx0IFByb2dyYW1E
M0Q6OmNvbXBpbGVQcm9ncmFtRXhlY3V0YWJsZXMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0
YSwgZ2w6OkluZm9Mb2cgJmluZm9Mb2cpCitjbGFzcyBQcm9ncmFtRDNEOjpHZXRFeGVjdXRhYmxl
VGFzayA6IHB1YmxpYyBDbG9zdXJlCit7CisgIHB1YmxpYzoKKyAgICBHZXRFeGVjdXRhYmxlVGFz
ayhQcm9ncmFtRDNEICpwcm9ncmFtKQorICAgICAgICA6IG1Qcm9ncmFtKHByb2dyYW0pLCBtRXJy
b3IoR0xfTk9fRVJST1IpLCBtSW5mb0xvZygpLCBtUmVzdWx0KG51bGxwdHIpCisgICAgeworICAg
IH0KKworICAgIHZpcnR1YWwgZ2w6OkVycm9yIHJ1bigpID0gMDsKKworICAgIHZvaWQgb3BlcmF0
b3IoKSgpIG92ZXJyaWRlIHsgbUVycm9yID0gcnVuKCk7IH0KKworICAgIGNvbnN0IGdsOjpFcnJv
ciAmZ2V0RXJyb3IoKSBjb25zdCB7IHJldHVybiBtRXJyb3I7IH0KKyAgICBjb25zdCBnbDo6SW5m
b0xvZyAmZ2V0SW5mb0xvZygpIGNvbnN0IHsgcmV0dXJuIG1JbmZvTG9nOyB9CisgICAgU2hhZGVy
RXhlY3V0YWJsZUQzRCAqZ2V0UmVzdWx0KCkgeyByZXR1cm4gbVJlc3VsdDsgfQorCisgIHByb3Rl
Y3RlZDoKKyAgICBQcm9ncmFtRDNEICptUHJvZ3JhbTsKKyAgICBnbDo6RXJyb3IgbUVycm9yOwor
ICAgIGdsOjpJbmZvTG9nIG1JbmZvTG9nOworICAgIFNoYWRlckV4ZWN1dGFibGVEM0QgKm1SZXN1
bHQ7Cit9OworCitjbGFzcyBQcm9ncmFtRDNEOjpHZXRWZXJ0ZXhFeGVjdXRhYmxlVGFzayA6IHB1
YmxpYyBQcm9ncmFtRDNEOjpHZXRFeGVjdXRhYmxlVGFzaworeworICBwdWJsaWM6CisgICAgR2V0
VmVydGV4RXhlY3V0YWJsZVRhc2soUHJvZ3JhbUQzRCAqcHJvZ3JhbSkgOiBHZXRFeGVjdXRhYmxl
VGFzayhwcm9ncmFtKSB7fQorICAgIGdsOjpFcnJvciBydW4oKSBvdmVycmlkZQorICAgIHsKKyAg
ICAgICAgY29uc3QgYXV0byAmZGVmYXVsdElucHV0TGF5b3V0ID0KKyAgICAgICAgICAgIEdldERl
ZmF1bHRJbnB1dExheW91dEZyb21TaGFkZXIobVByb2dyYW0tPm1TdGF0ZS5nZXRBdHRhY2hlZFZl
cnRleFNoYWRlcigpKTsKKworICAgICAgICBBTkdMRV9UUlkoCisgICAgICAgICAgICBtUHJvZ3Jh
bS0+Z2V0VmVydGV4RXhlY3V0YWJsZUZvcklucHV0TGF5b3V0KGRlZmF1bHRJbnB1dExheW91dCwg
Jm1SZXN1bHQsICZtSW5mb0xvZykpOworCisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwor
ICAgIH0KK307CisKK2NsYXNzIFByb2dyYW1EM0Q6OkdldFBpeGVsRXhlY3V0YWJsZVRhc2sgOiBw
dWJsaWMgUHJvZ3JhbUQzRDo6R2V0RXhlY3V0YWJsZVRhc2sKIHsKLSAgICBjb25zdCBnbDo6SW5w
dXRMYXlvdXQgJmRlZmF1bHRJbnB1dExheW91dCA9Ci0gICAgICAgIEdldERlZmF1bHRJbnB1dExh
eW91dEZyb21TaGFkZXIobVN0YXRlLmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCkpOwotICAgIFNo
YWRlckV4ZWN1dGFibGVEM0QgKmRlZmF1bHRWZXJ0ZXhFeGVjdXRhYmxlID0gTlVMTDsKLSAgICBn
bDo6RXJyb3IgZXJyb3IgPQotICAgICAgICBnZXRWZXJ0ZXhFeGVjdXRhYmxlRm9ySW5wdXRMYXlv
dXQoZGVmYXVsdElucHV0TGF5b3V0LCAmZGVmYXVsdFZlcnRleEV4ZWN1dGFibGUsICZpbmZvTG9n
KTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICBwdWJsaWM6CisgICAgR2V0UGl4ZWxFeGVj
dXRhYmxlVGFzayhQcm9ncmFtRDNEICpwcm9ncmFtKSA6IEdldEV4ZWN1dGFibGVUYXNrKHByb2dy
YW0pIHt9CisgICAgZ2w6OkVycm9yIHJ1bigpIG92ZXJyaWRlCiAgICAgewotICAgICAgICByZXR1
cm4gTGlua1Jlc3VsdChmYWxzZSwgZXJyb3IpOworICAgICAgICBjb25zdCBhdXRvICZkZWZhdWx0
UGl4ZWxPdXRwdXQgPQorICAgICAgICAgICAgR2V0RGVmYXVsdE91dHB1dExheW91dEZyb21TaGFk
ZXIobVByb2dyYW0tPmdldFBpeGVsU2hhZGVyS2V5KCkpOworCisgICAgICAgIEFOR0xFX1RSWSgK
KyAgICAgICAgICAgIG1Qcm9ncmFtLT5nZXRQaXhlbEV4ZWN1dGFibGVGb3JPdXRwdXRMYXlvdXQo
ZGVmYXVsdFBpeGVsT3V0cHV0LCAmbVJlc3VsdCwgJm1JbmZvTG9nKSk7CisKKyAgICAgICAgcmV0
dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQorfTsKIAotICAgIHN0ZDo6dmVjdG9yPEdMZW51bT4g
ZGVmYXVsdFBpeGVsT3V0cHV0ICAgICAgPSBHZXREZWZhdWx0T3V0cHV0TGF5b3V0RnJvbVNoYWRl
cihnZXRQaXhlbFNoYWRlcktleSgpKTsKLSAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICpkZWZhdWx0
UGl4ZWxFeGVjdXRhYmxlID0gTlVMTDsKLSAgICBlcnJvciA9Ci0gICAgICAgIGdldFBpeGVsRXhl
Y3V0YWJsZUZvck91dHB1dExheW91dChkZWZhdWx0UGl4ZWxPdXRwdXQsICZkZWZhdWx0UGl4ZWxF
eGVjdXRhYmxlLCAmaW5mb0xvZyk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKK2NsYXNzIFBy
b2dyYW1EM0Q6OkdldEdlb21ldHJ5RXhlY3V0YWJsZVRhc2sgOiBwdWJsaWMgUHJvZ3JhbUQzRDo6
R2V0RXhlY3V0YWJsZVRhc2sKK3sKKyAgcHVibGljOgorICAgIEdldEdlb21ldHJ5RXhlY3V0YWJs
ZVRhc2soUHJvZ3JhbUQzRCAqcHJvZ3JhbSwgY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmY29udGV4
dFN0YXRlKQorICAgICAgICA6IEdldEV4ZWN1dGFibGVUYXNrKHByb2dyYW0pLCBtQ29udGV4dFN0
YXRlKGNvbnRleHRTdGF0ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNl
LCBlcnJvcik7CiAgICAgfQogCi0gICAgLy8gQXV0by1nZW5lcmF0ZSB0aGUgZ2VvbWV0cnkgc2hh
ZGVyIGhlcmUsIGlmIHdlIGV4cGVjdCB0byBiZSB1c2luZyBwb2ludCByZW5kZXJpbmcgaW4gRDNE
MTEuCi0gICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqcG9pbnRHUyA9IG51bGxwdHI7Ci0gICAgaWYg
KHVzZXNHZW9tZXRyeVNoYWRlcihHTF9QT0lOVFMpKQorICAgIGdsOjpFcnJvciBydW4oKSBvdmVy
cmlkZQogICAgIHsKLSAgICAgICAgZ2V0R2VvbWV0cnlFeGVjdXRhYmxlRm9yUHJpbWl0aXZlVHlw
ZShkYXRhLCBHTF9QT0lOVFMsICZwb2ludEdTLCAmaW5mb0xvZyk7CisgICAgICAgIC8vIEF1dG8t
Z2VuZXJhdGUgdGhlIGdlb21ldHJ5IHNoYWRlciBoZXJlLCBpZiB3ZSBleHBlY3QgdG8gYmUgdXNp
bmcgcG9pbnQgcmVuZGVyaW5nIGluCisgICAgICAgIC8vIEQzRDExLgorICAgICAgICBpZiAobVBy
b2dyYW0tPnVzZXNHZW9tZXRyeVNoYWRlcihHTF9QT0lOVFMpKQorICAgICAgICB7CisgICAgICAg
ICAgICBBTkdMRV9UUlkobVByb2dyYW0tPmdldEdlb21ldHJ5RXhlY3V0YWJsZUZvclByaW1pdGl2
ZVR5cGUobUNvbnRleHRTdGF0ZSwgR0xfUE9JTlRTLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtUmVzdWx0LCAm
bUluZm9Mb2cpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
ICAgIH0KIAorICBwcml2YXRlOgorICAgIGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJm1Db250ZXh0
U3RhdGU7Cit9OworCitMaW5rUmVzdWx0IFByb2dyYW1EM0Q6OmNvbXBpbGVQcm9ncmFtRXhlY3V0
YWJsZXMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmY29udGV4dFN0YXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpJbmZvTG9nICZpbmZvTG9n
KQoreworICAgIC8vIEVuc3VyZSB0aGUgY29tcGlsZXIgaXMgaW5pdGlhbGl6ZWQgdG8gYXZvaWQg
cmFjZSBjb25kaXRpb25zLgorICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmVuc3VyZUhMU0xDb21w
aWxlckluaXRpYWxpemVkKCkpOworCisgICAgV29ya2VyVGhyZWFkUG9vbCAqd29ya2VyUG9vbCA9
IG1SZW5kZXJlci0+Z2V0V29ya2VyVGhyZWFkUG9vbCgpOworCisgICAgR2V0VmVydGV4RXhlY3V0
YWJsZVRhc2sgdmVydGV4VGFzayh0aGlzKTsKKyAgICBHZXRQaXhlbEV4ZWN1dGFibGVUYXNrIHBp
eGVsVGFzayh0aGlzKTsKKyAgICBHZXRHZW9tZXRyeUV4ZWN1dGFibGVUYXNrIGdlb21ldHJ5VGFz
ayh0aGlzLCBjb250ZXh0U3RhdGUpOworCisgICAgc3RkOjphcnJheTxXYWl0YWJsZUV2ZW50LCAz
PiB3YWl0RXZlbnRzID0ge3t3b3JrZXJQb29sLT5wb3N0V29ya2VyVGFzaygmdmVydGV4VGFzayks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrZXJQ
b29sLT5wb3N0V29ya2VyVGFzaygmcGl4ZWxUYXNrKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtlclBvb2wtPnBvc3RXb3JrZXJUYXNrKCZnZW9t
ZXRyeVRhc2spfX07CisKKyAgICBXYWl0YWJsZUV2ZW50OjpXYWl0TWFueSgmd2FpdEV2ZW50cyk7
CisKKyAgICBpbmZvTG9nIDw8IHZlcnRleFRhc2suZ2V0SW5mb0xvZygpLnN0cigpOworICAgIGlu
Zm9Mb2cgPDwgcGl4ZWxUYXNrLmdldEluZm9Mb2coKS5zdHIoKTsKKyAgICBpbmZvTG9nIDw8IGdl
b21ldHJ5VGFzay5nZXRJbmZvTG9nKCkuc3RyKCk7CisKKyAgICBBTkdMRV9UUlkodmVydGV4VGFz
ay5nZXRFcnJvcigpKTsKKyAgICBBTkdMRV9UUlkocGl4ZWxUYXNrLmdldEVycm9yKCkpOworICAg
IEFOR0xFX1RSWShnZW9tZXRyeVRhc2suZ2V0RXJyb3IoKSk7CisKKyAgICBTaGFkZXJFeGVjdXRh
YmxlRDNEICpkZWZhdWx0VmVydGV4RXhlY3V0YWJsZSA9IHZlcnRleFRhc2suZ2V0UmVzdWx0KCk7
CisgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqZGVmYXVsdFBpeGVsRXhlY3V0YWJsZSAgPSBwaXhl
bFRhc2suZ2V0UmVzdWx0KCk7CisgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqcG9pbnRHUyAgICAg
ICAgICAgICAgICAgPSBnZW9tZXRyeVRhc2suZ2V0UmVzdWx0KCk7CisKICAgICBjb25zdCBTaGFk
ZXJEM0QgKnZlcnRleFNoYWRlckQzRCA9IEdldEltcGxBczxTaGFkZXJEM0Q+KG1TdGF0ZS5nZXRB
dHRhY2hlZFZlcnRleFNoYWRlcigpKTsKIAogICAgIGlmICh1c2VzR2VvbWV0cnlTaGFkZXIoR0xf
UE9JTlRTKSAmJiBwb2ludEdTKQpAQCAtMTMzNywxMTYgKzE0MzgsMTQyIEBAIExpbmtSZXN1bHQg
UHJvZ3JhbUQzRDo6Y29tcGlsZVByb2dyYW1FeGVjdXRhYmxlcyhjb25zdCBnbDo6Q29udGV4dFN0
YXRlICZkYXRhLCBnCiAgICAgICAgIGZyYWdtZW50U2hhZGVyRDNELT5hcHBlbmREZWJ1Z0luZm8o
ZGVmYXVsdFBpeGVsRXhlY3V0YWJsZS0+Z2V0RGVidWdJbmZvKCkpOwogICAgIH0KIAotICAgIGJv
b2wgbGlua1N1Y2Nlc3MgPSAoZGVmYXVsdFZlcnRleEV4ZWN1dGFibGUgJiYgZGVmYXVsdFBpeGVs
RXhlY3V0YWJsZSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgKCF1c2VzR2VvbWV0cnlTaGFk
ZXIoR0xfUE9JTlRTKSB8fCBwb2ludEdTKSk7Ci0gICAgcmV0dXJuIExpbmtSZXN1bHQobGlua1N1
Y2Nlc3MsIGdsOjpFcnJvcihHTF9OT19FUlJPUikpOworICAgIHJldHVybiAoZGVmYXVsdFZlcnRl
eEV4ZWN1dGFibGUgJiYgZGVmYXVsdFBpeGVsRXhlY3V0YWJsZSAmJgorICAgICAgICAgICAgKCF1
c2VzR2VvbWV0cnlTaGFkZXIoR0xfUE9JTlRTKSB8fCBwb2ludEdTKSk7CiB9CiAKLUxpbmtSZXN1
bHQgUHJvZ3JhbUQzRDo6bGluayhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBnbDo6SW5m
b0xvZyAmaW5mb0xvZykKK0xpbmtSZXN1bHQgUHJvZ3JhbUQzRDo6Y29tcGlsZUNvbXB1dGVFeGVj
dXRhYmxlKGdsOjpJbmZvTG9nICZpbmZvTG9nKQogewotICAgIHJlc2V0KCk7CisgICAgLy8gRW5z
dXJlIHRoZSBjb21waWxlciBpcyBpbml0aWFsaXplZCB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMu
CisgICAgQU5HTEVfVFJZKG1SZW5kZXJlci0+ZW5zdXJlSExTTENvbXBpbGVySW5pdGlhbGl6ZWQo
KSk7CiAKLSAgICBjb25zdCBnbDo6U2hhZGVyICp2ZXJ0ZXhTaGFkZXIgICA9IG1TdGF0ZS5nZXRB
dHRhY2hlZFZlcnRleFNoYWRlcigpOwotICAgIGNvbnN0IGdsOjpTaGFkZXIgKmZyYWdtZW50U2hh
ZGVyID0gbVN0YXRlLmdldEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIoKTsKKyAgICBzdGQ6OnN0cmlu
ZyBjb21wdXRlU2hhZGVyID0gbUR5bmFtaWNITFNMLT5nZW5lcmF0ZUNvbXB1dGVTaGFkZXJMaW5r
SExTTChtU3RhdGUpOwogCi0gICAgY29uc3QgU2hhZGVyRDNEICp2ZXJ0ZXhTaGFkZXJEM0QgICA9
IEdldEltcGxBczxTaGFkZXJEM0Q+KHZlcnRleFNoYWRlcik7Ci0gICAgY29uc3QgU2hhZGVyRDNE
ICpmcmFnbWVudFNoYWRlckQzRCA9IEdldEltcGxBczxTaGFkZXJEM0Q+KGZyYWdtZW50U2hhZGVy
KTsKKyAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICpjb21wdXRlRXhlY3V0YWJsZSA9IG51bGxwdHI7
CisgICAgQU5HTEVfVFJZKG1SZW5kZXJlci0+Y29tcGlsZVRvRXhlY3V0YWJsZShpbmZvTG9nLCBj
b21wdXRlU2hhZGVyLCBTSEFERVJfQ09NUFVURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEQzRFZhcnlpbmc+KCksIGZhbHNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkNvbXBpbGVy
V29ya2Fyb3VuZHNEM0QoKSwgJmNvbXB1dGVFeGVjdXRhYmxlKSk7CiAKLSAgICBtU2FtcGxlcnNW
Uy5yZXNpemUoZGF0YS5nZXRDYXBzKCkubWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOwotICAg
IG1TYW1wbGVyc1BTLnJlc2l6ZShkYXRhLmdldENhcHMoKS5tYXhUZXh0dXJlSW1hZ2VVbml0cyk7
CisgICAgaWYgKGNvbXB1dGVFeGVjdXRhYmxlID09IG51bGxwdHIpCisgICAgeworICAgICAgICBF
UlIoKSA8PCAiRXJyb3IgY29tcGlsaW5nIGR5bmFtaWMgY29tcHV0ZSBleGVjdXRhYmxlOiIgPDwg
c3RkOjplbmRsCisgICAgICAgICAgICAgIDw8IGluZm9Mb2cuc3RyKCkgPDwgc3RkOjplbmRsOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBjb25zdCBTaGFkZXJEM0QgKmNvbXB1dGVT
aGFkZXJEM0QgPSBHZXRJbXBsQXM8U2hhZGVyRDNEPihtU3RhdGUuZ2V0QXR0YWNoZWRDb21wdXRl
U2hhZGVyKCkpOworICAgICAgICBjb21wdXRlU2hhZGVyRDNELT5hcHBlbmREZWJ1Z0luZm8oY29t
cHV0ZUV4ZWN1dGFibGUtPmdldERlYnVnSW5mbygpKTsKKyAgICAgICAgbUNvbXB1dGVFeGVjdXRh
YmxlLnJlc2V0KGNvbXB1dGVFeGVjdXRhYmxlKTsKKyAgICB9CiAKLSAgICB2ZXJ0ZXhTaGFkZXJE
M0QtPmdlbmVyYXRlV29ya2Fyb3VuZHMoJm1WZXJ0ZXhXb3JrYXJvdW5kcyk7Ci0gICAgZnJhZ21l
bnRTaGFkZXJEM0QtPmdlbmVyYXRlV29ya2Fyb3VuZHMoJm1QaXhlbFdvcmthcm91bmRzKTsKKyAg
ICByZXR1cm4gbUNvbXB1dGVFeGVjdXRhYmxlLmdldCgpICE9IG51bGxwdHI7Cit9CisKK0xpbmtS
ZXN1bHQgUHJvZ3JhbUQzRDo6bGluayhDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZhcnlpbmdQYWNraW5nICZwYWNraW5nLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpJbmZvTG9nICZpbmZvTG9nKQoreworICAg
IGNvbnN0IGF1dG8gJmRhdGEgPSBjb250ZXh0SW1wbC0+Z2V0Q29udGV4dFN0YXRlKCk7CiAKLSAg
ICBpZiAobVJlbmRlcmVyLT5nZXROYXRpdmVMaW1pdGF0aW9ucygpLm5vRnJvbnRGYWNpbmdTdXBw
b3J0KQorICAgIHJlc2V0KCk7CisKKyAgICBjb25zdCBnbDo6U2hhZGVyICpjb21wdXRlU2hhZGVy
ID0gbVN0YXRlLmdldEF0dGFjaGVkQ29tcHV0ZVNoYWRlcigpOworICAgIGlmIChjb21wdXRlU2hh
ZGVyKQogICAgIHsKLSAgICAgICAgaWYgKGZyYWdtZW50U2hhZGVyRDNELT51c2VzRnJvbnRGYWNp
bmcoKSkKKyAgICAgICAgbVNhbXBsZXJzQ1MucmVzaXplKGRhdGEuZ2V0Q2FwcygpLm1heENvbXB1
dGVUZXh0dXJlSW1hZ2VVbml0cyk7CisKKyAgICAgICAgZGVmaW5lVW5pZm9ybXNBbmRBc3NpZ25S
ZWdpc3RlcnMoKTsKKworICAgICAgICBMaW5rUmVzdWx0IHJlc3VsdCA9IGNvbXBpbGVDb21wdXRl
RXhlY3V0YWJsZShpbmZvTG9nKTsKKyAgICAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGluZm9Mb2cgPDwgcmVzdWx0LmdldEVycm9yKCkuZ2V0TWVzc2Fn
ZSgpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICBlbHNl
IGlmICghcmVzdWx0LmdldFJlc3VsdCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBpbmZvTG9n
IDw8ICJUaGUgY3VycmVudCByZW5kZXJlciBkb2Vzbid0IHN1cHBvcnQgZ2xfRnJvbnRGYWNpbmci
OwotICAgICAgICAgICAgcmV0dXJuIExpbmtSZXN1bHQoZmFsc2UsIGdsOjpFcnJvcihHTF9OT19F
UlJPUikpOworICAgICAgICAgICAgaW5mb0xvZyA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBEM0QgY29t
cHV0ZSBzaGFkZXIuIjsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KKwor
ICAgICAgICBpbml0VW5pZm9ybUJsb2NrSW5mbyhjb21wdXRlU2hhZGVyKTsKICAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgY29uc3QgZ2w6OlNoYWRlciAqdmVydGV4U2hhZGVyICAgPSBt
U3RhdGUuZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKTsKKyAgICAgICAgY29uc3QgZ2w6OlNoYWRl
ciAqZnJhZ21lbnRTaGFkZXIgPSBtU3RhdGUuZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpOwog
Ci0gICAgc3RkOjp2ZWN0b3I8UGFja2VkVmFyeWluZz4gcGFja2VkVmFyeWluZ3MgPQotICAgICAg
ICBNZXJnZVZhcnlpbmdzKCp2ZXJ0ZXhTaGFkZXIsICpmcmFnbWVudFNoYWRlciwgbVN0YXRlLmdl
dFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05hbWVzKCkpOworICAgICAgICBjb25zdCBTaGFkZXJE
M0QgKnZlcnRleFNoYWRlckQzRCAgID0gR2V0SW1wbEFzPFNoYWRlckQzRD4odmVydGV4U2hhZGVy
KTsKKyAgICAgICAgY29uc3QgU2hhZGVyRDNEICpmcmFnbWVudFNoYWRlckQzRCA9IEdldEltcGxB
czxTaGFkZXJEM0Q+KGZyYWdtZW50U2hhZGVyKTsKIAotICAgIC8vIE1hcCB0aGUgdmFyeWluZ3Mg
dG8gdGhlIHJlZ2lzdGVyIGZpbGUKLSAgICBWYXJ5aW5nUGFja2luZyB2YXJ5aW5nUGFja2luZyhk
YXRhLmdldENhcHMoKS5tYXhWYXJ5aW5nVmVjdG9ycyk7Ci0gICAgaWYgKCF2YXJ5aW5nUGFja2lu
Zy5wYWNrVmFyeWluZ3MoaW5mb0xvZywgcGFja2VkVmFyeWluZ3MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbVN0YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05h
bWVzKCkpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIExpbmtSZXN1bHQoZmFsc2UsIGdsOjpFcnJv
cihHTF9OT19FUlJPUikpOwotICAgIH0KKyAgICAgICAgbVNhbXBsZXJzVlMucmVzaXplKGRhdGEu
Z2V0Q2FwcygpLm1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKTsKKyAgICAgICAgbVNhbXBsZXJz
UFMucmVzaXplKGRhdGEuZ2V0Q2FwcygpLm1heFRleHR1cmVJbWFnZVVuaXRzKTsKIAotICAgIFBy
b2dyYW1EM0RNZXRhZGF0YSBtZXRhZGF0YShtUmVuZGVyZXIsIHZlcnRleFNoYWRlckQzRCwgZnJh
Z21lbnRTaGFkZXJEM0QpOworICAgICAgICB2ZXJ0ZXhTaGFkZXJEM0QtPmdlbmVyYXRlV29ya2Fy
b3VuZHMoJm1WZXJ0ZXhXb3JrYXJvdW5kcyk7CisgICAgICAgIGZyYWdtZW50U2hhZGVyRDNELT5n
ZW5lcmF0ZVdvcmthcm91bmRzKCZtUGl4ZWxXb3JrYXJvdW5kcyk7CiAKLSAgICB2YXJ5aW5nUGFj
a2luZy5lbmFibGVCdWlsdGlucyhTSEFERVJfVkVSVEVYLCBtZXRhZGF0YSk7Ci0gICAgdmFyeWlu
Z1BhY2tpbmcuZW5hYmxlQnVpbHRpbnMoU0hBREVSX1BJWEVMLCBtZXRhZGF0YSk7CisgICAgICAg
IGlmIChtUmVuZGVyZXItPmdldE5hdGl2ZUxpbWl0YXRpb25zKCkubm9Gcm9udEZhY2luZ1N1cHBv
cnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChmcmFnbWVudFNoYWRlckQzRC0+dXNlc0Zy
b250RmFjaW5nKCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW5mb0xvZyA8PCAi
VGhlIGN1cnJlbnQgcmVuZGVyZXIgZG9lc24ndCBzdXBwb3J0IGdsX0Zyb250RmFjaW5nIjsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAot
ICAgIGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KHZhcnlpbmdQYWNraW5nLmdldFJlZ2lzdGVyQ291
bnQoKSkgPiBkYXRhLmdldENhcHMoKS5tYXhWYXJ5aW5nVmVjdG9ycykKLSAgICB7Ci0gICAgICAg
IGluZm9Mb2cgPDwgIk5vIHZhcnlpbmcgcmVnaXN0ZXJzIGxlZnQgdG8gc3VwcG9ydCBnbF9GcmFn
Q29vcmQvZ2xfUG9pbnRDb29yZCI7Ci0gICAgICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNlLCBn
bDo6RXJyb3IoR0xfTk9fRVJST1IpKTsKLSAgICB9CisgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6
IEltcGxlbWVudCBtb3JlIHNvcGhpc3RpY2F0ZWQgY29tcG9uZW50IHBhY2tpbmcgaW4gRDNEOS4K
KyAgICAgICAgLy8gV2UgY2FuIGZhaWwgaGVyZSBiZWNhdXNlIHdlIHVzZSBvbmUgc2VtYW50aWMg
cGVyIEdMU0wgdmFyeWluZy4gRDNEMTEgY2FuIHBhY2sgdmFyeWluZ3MKKyAgICAgICAgLy8gaW50
ZWxsaWdlbnRseSwgYnV0IEQzRDkgYXNzdW1lcyBvbmUgc2VtYW50aWMgcGVyIHJlZ2lzdGVyLgor
ICAgICAgICBpZiAobVJlbmRlcmVyLT5nZXRSZW5kZXJlckNsYXNzKCkgPT0gUkVOREVSRVJfRDNE
OSAmJgorICAgICAgICAgICAgcGFja2luZy5nZXRNYXhTZW1hbnRpY0luZGV4KCkgPiBkYXRhLmdl
dENhcHMoKS5tYXhWYXJ5aW5nVmVjdG9ycykKKyAgICAgICAgeworICAgICAgICAgICAgaW5mb0xv
ZyA8PCAiQ2Fubm90IHBhY2sgdGhlc2UgdmFyeWluZ3Mgb24gRDNEOS4iOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CiAKLSAgICAvLyBUT0RPKGptYWRpbGwpOiBJbXBsZW1l
bnQgbW9yZSBzb3BoaXN0aWNhdGVkIGNvbXBvbmVudCBwYWNraW5nIGluIEQzRDkuCi0gICAgLy8g
V2UgY2FuIGZhaWwgaGVyZSBiZWNhdXNlIHdlIHVzZSBvbmUgc2VtYW50aWMgcGVyIEdMU0wgdmFy
eWluZy4gRDNEMTEgY2FuIHBhY2sgdmFyeWluZ3MKLSAgICAvLyBpbnRlbGxpZ2VudGx5LCBidXQg
RDNEOSBhc3N1bWVzIG9uZSBzZW1hbnRpYyBwZXIgcmVnaXN0ZXIuCi0gICAgaWYgKG1SZW5kZXJl
ci0+Z2V0UmVuZGVyZXJDbGFzcygpID09IFJFTkRFUkVSX0QzRDkgJiYKLSAgICAgICAgdmFyeWlu
Z1BhY2tpbmcuZ2V0TWF4U2VtYW50aWNJbmRleCgpID4gZGF0YS5nZXRDYXBzKCkubWF4VmFyeWlu
Z1ZlY3RvcnMpCi0gICAgewotICAgICAgICBpbmZvTG9nIDw8ICJDYW5ub3QgcGFjayB0aGVzZSB2
YXJ5aW5ncyBvbiBEM0Q5LiI7Ci0gICAgICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNlLCBnbDo6
RXJyb3IoR0xfTk9fRVJST1IpKTsKLSAgICB9CisgICAgICAgIFByb2dyYW1EM0RNZXRhZGF0YSBt
ZXRhZGF0YShtUmVuZGVyZXIsIHZlcnRleFNoYWRlckQzRCwgZnJhZ21lbnRTaGFkZXJEM0QpOwor
ICAgICAgICBCdWlsdGluVmFyeWluZ3NEM0QgYnVpbHRpbnMobWV0YWRhdGEsIHBhY2tpbmcpOwog
Ci0gICAgaWYgKCFtRHluYW1pY0hMU0wtPmdlbmVyYXRlU2hhZGVyTGlua0hMU0woZGF0YSwgbVN0
YXRlLCBtZXRhZGF0YSwgdmFyeWluZ1BhY2tpbmcsICZtUGl4ZWxITFNMLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtVmVydGV4SExTTCkpCi0gICAgewot
ICAgICAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9SKSk7
Ci0gICAgfQorICAgICAgICBtRHluYW1pY0hMU0wtPmdlbmVyYXRlU2hhZGVyTGlua0hMU0woZGF0
YSwgbVN0YXRlLCBtZXRhZGF0YSwgcGFja2luZywgYnVpbHRpbnMsICZtUGl4ZWxITFNMLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1WZXJ0ZXhITFNMKTsK
IAotICAgIG1Vc2VzUG9pbnRTaXplID0gdmVydGV4U2hhZGVyRDNELT51c2VzUG9pbnRTaXplKCk7
Ci0gICAgbUR5bmFtaWNITFNMLT5nZXRQaXhlbFNoYWRlck91dHB1dEtleShkYXRhLCBtU3RhdGUs
IG1ldGFkYXRhLCAmbVBpeGVsU2hhZGVyS2V5KTsKLSAgICBtVXNlc0ZyYWdEZXB0aCA9IG1ldGFk
YXRhLnVzZXNGcmFnRGVwdGgoKTsKKyAgICAgICAgbVVzZXNQb2ludFNpemUgPSB2ZXJ0ZXhTaGFk
ZXJEM0QtPnVzZXNQb2ludFNpemUoKTsKKyAgICAgICAgbUR5bmFtaWNITFNMLT5nZXRQaXhlbFNo
YWRlck91dHB1dEtleShkYXRhLCBtU3RhdGUsIG1ldGFkYXRhLCAmbVBpeGVsU2hhZGVyS2V5KTsK
KyAgICAgICAgbVVzZXNGcmFnRGVwdGggPSBtZXRhZGF0YS51c2VzRnJhZ0RlcHRoKCk7CiAKLSAg
ICAvLyBDYWNoZSBpZiB3ZSB1c2UgZmxhdCBzaGFkaW5nCi0gICAgbVVzZXNGbGF0SW50ZXJwb2xh
dGlvbiA9IGZhbHNlOwotICAgIGZvciAoY29uc3QgYXV0byAmdmFyeWluZyA6IHBhY2tlZFZhcnlp
bmdzKQotICAgIHsKLSAgICAgICAgaWYgKHZhcnlpbmcuaW50ZXJwb2xhdGlvbiA9PSBzaDo6SU5U
RVJQT0xBVElPTl9GTEFUKQorICAgICAgICAvLyBDYWNoZSBpZiB3ZSB1c2UgZmxhdCBzaGFkaW5n
CisgICAgICAgIG1Vc2VzRmxhdEludGVycG9sYXRpb24gPSAoRmluZEZsYXRJbnRlcnBvbGF0aW9u
VmFyeWluZyhmcmFnbWVudFNoYWRlci0+Z2V0VmFyeWluZ3MoKSkgfHwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGaW5kRmxhdEludGVycG9sYXRpb25WYXJ5aW5nKHZlcnRleFNo
YWRlci0+Z2V0VmFyeWluZ3MoKSkpOworCisgICAgICAgIGlmIChtUmVuZGVyZXItPmdldE1ham9y
U2hhZGVyTW9kZWwoKSA+PSA0KQogICAgICAgICB7Ci0gICAgICAgICAgICBtVXNlc0ZsYXRJbnRl
cnBvbGF0aW9uID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgbUdlb21l
dHJ5U2hhZGVyUHJlYW1ibGUgPQorICAgICAgICAgICAgICAgIG1EeW5hbWljSExTTC0+Z2VuZXJh
dGVHZW9tZXRyeVNoYWRlclByZWFtYmxlKHBhY2tpbmcsIGJ1aWx0aW5zKTsKICAgICAgICAgfQot
ICAgIH0KIAotICAgIGlmIChtUmVuZGVyZXItPmdldE1ham9yU2hhZGVyTW9kZWwoKSA+PSA0KQot
ICAgIHsKLSAgICAgICAgdmFyeWluZ1BhY2tpbmcuZW5hYmxlQnVpbHRpbnMoU0hBREVSX0dFT01F
VFJZLCBtZXRhZGF0YSk7Ci0gICAgICAgIG1HZW9tZXRyeVNoYWRlclByZWFtYmxlID0gbUR5bmFt
aWNITFNMLT5nZW5lcmF0ZUdlb21ldHJ5U2hhZGVyUHJlYW1ibGUodmFyeWluZ1BhY2tpbmcpOwot
ICAgIH0KKyAgICAgICAgaW5pdEF0dHJpYkxvY2F0aW9uc1RvRDNEU2VtYW50aWMoKTsKIAotICAg
IGluaXRBdHRyaWJMb2NhdGlvbnNUb0QzRFNlbWFudGljKCk7CisgICAgICAgIGRlZmluZVVuaWZv
cm1zQW5kQXNzaWduUmVnaXN0ZXJzKCk7CiAKLSAgICBkZWZpbmVVbmlmb3Jtc0FuZEFzc2lnblJl
Z2lzdGVycygpOworICAgICAgICBnYXRoZXJUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKHBhY2tp
bmcsIGJ1aWx0aW5zW1NIQURFUl9WRVJURVhdKTsKIAotICAgIGdhdGhlclRyYW5zZm9ybUZlZWRi
YWNrVmFyeWluZ3ModmFyeWluZ1BhY2tpbmcpOworICAgICAgICBMaW5rUmVzdWx0IHJlc3VsdCA9
IGNvbXBpbGVQcm9ncmFtRXhlY3V0YWJsZXMoZGF0YSwgaW5mb0xvZyk7CisgICAgICAgIGlmIChy
ZXN1bHQuaXNFcnJvcigpKQorICAgICAgICB7CisgICAgICAgICAgICBpbmZvTG9nIDw8IHJlc3Vs
dC5nZXRFcnJvcigpLmdldE1lc3NhZ2UoKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIXJlc3VsdC5nZXRSZXN1bHQoKSkKKyAgICAgICAg
eworICAgICAgICAgICAgaW5mb0xvZyA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBEM0Qgc2hhZGVycy4i
OworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQogCi0gICAgTGlua1Jlc3Vs
dCByZXN1bHQgPSBjb21waWxlUHJvZ3JhbUV4ZWN1dGFibGVzKGRhdGEsIGluZm9Mb2cpOwotICAg
IGlmIChyZXN1bHQuZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgaW5mb0xvZyA8PCBy
ZXN1bHQuZXJyb3IuZ2V0TWVzc2FnZSgpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0K
LSAgICBlbHNlIGlmICghcmVzdWx0LmxpbmtTdWNjZXNzKQotICAgIHsKLSAgICAgICAgaW5mb0xv
ZyA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBEM0Qgc2hhZGVycy4iOwotICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICBpbml0VW5pZm9ybUJsb2NrSW5mbyh2ZXJ0ZXhTaGFkZXIpOworICAgICAg
ICBpbml0VW5pZm9ybUJsb2NrSW5mbyhmcmFnbWVudFNoYWRlcik7CiAgICAgfQogCi0gICAgaW5p
dFVuaWZvcm1CbG9ja0luZm8oKTsKLQotICAgIHJldHVybiBMaW5rUmVzdWx0KHRydWUsIGdsOjpF
cnJvcihHTF9OT19FUlJPUikpOworICAgIHJldHVybiB0cnVlOwogfQogCiBHTGJvb2xlYW4gUHJv
Z3JhbUQzRDo6dmFsaWRhdGUoY29uc3QgZ2w6OkNhcHMgJiAvKmNhcHMqLywgZ2w6OkluZm9Mb2cg
KiAvKmluZm9Mb2cqLykKQEAgLTE0NTUsNDQgKzE1ODIsMzQgQEAgR0xib29sZWFuIFByb2dyYW1E
M0Q6OnZhbGlkYXRlKGNvbnN0IGdsOjpDYXBzICYgLypjYXBzKi8sIGdsOjpJbmZvTG9nICogLypp
bmZvTG8KICAgICByZXR1cm4gR0xfVFJVRTsKIH0KIAotdm9pZCBQcm9ncmFtRDNEOjppbml0VW5p
Zm9ybUJsb2NrSW5mbygpCit2b2lkIFByb2dyYW1EM0Q6OmluaXRVbmlmb3JtQmxvY2tJbmZvKGNv
bnN0IGdsOjpTaGFkZXIgKnNoYWRlcikKIHsKLSAgICBjb25zdCBnbDo6U2hhZGVyICp2ZXJ0ZXhT
aGFkZXIgPSBtU3RhdGUuZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKTsKLQotICAgIGZvciAoY29u
c3Qgc2g6OkludGVyZmFjZUJsb2NrICZ2ZXJ0ZXhCbG9jayA6IHZlcnRleFNoYWRlci0+Z2V0SW50
ZXJmYWNlQmxvY2tzKCkpCisgICAgZm9yIChjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmludGVy
ZmFjZUJsb2NrIDogc2hhZGVyLT5nZXRJbnRlcmZhY2VCbG9ja3MoKSkKICAgICB7Ci0gICAgICAg
IGlmICghdmVydGV4QmxvY2suc3RhdGljVXNlICYmIHZlcnRleEJsb2NrLmxheW91dCA9PSBzaDo6
QkxPQ0tMQVlPVVRfUEFDS0VEKQorICAgICAgICBpZiAoIWludGVyZmFjZUJsb2NrLnN0YXRpY1Vz
ZSAmJiBpbnRlcmZhY2VCbG9jay5sYXlvdXQgPT0gc2g6OkJMT0NLTEFZT1VUX1BBQ0tFRCkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChtQmxvY2tEYXRhU2l6ZXMuY291bnQo
dmVydGV4QmxvY2submFtZSkgPiAwKQorICAgICAgICBpZiAobUJsb2NrRGF0YVNpemVzLmNvdW50
KGludGVyZmFjZUJsb2NrLm5hbWUpID4gMCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAg
ICAgIHNpemVfdCBkYXRhU2l6ZSAgICAgICAgICAgICAgICAgICA9IGdldFVuaWZvcm1CbG9ja0lu
Zm8odmVydGV4QmxvY2spOwotICAgICAgICBtQmxvY2tEYXRhU2l6ZXNbdmVydGV4QmxvY2submFt
ZV0gPSBkYXRhU2l6ZTsKLSAgICB9Ci0KLSAgICBjb25zdCBnbDo6U2hhZGVyICpmcmFnbWVudFNo
YWRlciA9IG1TdGF0ZS5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCk7Ci0KLSAgICBmb3IgKGNv
bnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmZnJhZ21lbnRCbG9jayA6IGZyYWdtZW50U2hhZGVyLT5n
ZXRJbnRlcmZhY2VCbG9ja3MoKSkKLSAgICB7Ci0gICAgICAgIGlmICghZnJhZ21lbnRCbG9jay5z
dGF0aWNVc2UgJiYgZnJhZ21lbnRCbG9jay5sYXlvdXQgPT0gc2g6OkJMT0NLTEFZT1VUX1BBQ0tF
RCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChtQmxvY2tEYXRhU2l6ZXMu
Y291bnQoZnJhZ21lbnRCbG9jay5uYW1lKSA+IDApCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICBzaXplX3QgZGF0YVNpemUgICAgICAgICAgICAgICAgICAgICA9IGdldFVuaWZvcm1C
bG9ja0luZm8oZnJhZ21lbnRCbG9jayk7Ci0gICAgICAgIG1CbG9ja0RhdGFTaXplc1tmcmFnbWVu
dEJsb2NrLm5hbWVdID0gZGF0YVNpemU7CisgICAgICAgIHNpemVfdCBkYXRhU2l6ZSAgICAgICAg
ICAgICAgICAgICAgICA9IGdldFVuaWZvcm1CbG9ja0luZm8oaW50ZXJmYWNlQmxvY2spOworICAg
ICAgICBtQmxvY2tEYXRhU2l6ZXNbaW50ZXJmYWNlQmxvY2submFtZV0gPSBkYXRhU2l6ZTsKICAg
ICB9CiB9CiAKLXZvaWQgUHJvZ3JhbUQzRDo6YXNzaWduVW5pZm9ybUJsb2NrUmVnaXN0ZXJzKCkK
K3ZvaWQgUHJvZ3JhbUQzRDo6ZW5zdXJlVW5pZm9ybUJsb2Nrc0luaXRpYWxpemVkKCkKIHsKLSAg
ICBtRDNEVW5pZm9ybUJsb2Nrcy5jbGVhcigpOworICAgIC8vIExhenkgaW5pdC4KKyAgICBpZiAo
bVN0YXRlLmdldFVuaWZvcm1CbG9ja3MoKS5lbXB0eSgpIHx8ICFtRDNEVW5pZm9ybUJsb2Nrcy5l
bXB0eSgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIC8vIEFzc2lnbiBy
ZWdpc3RlcnMgYW5kIHVwZGF0ZSBzaXplcy4KLSAgICBjb25zdCBTaGFkZXJEM0QgKnZlcnRleFNo
YWRlckQzRCAgID0gR2V0SW1wbEFzPFNoYWRlckQzRD4obVN0YXRlLmdldEF0dGFjaGVkVmVydGV4
U2hhZGVyKCkpOwotICAgIGNvbnN0IFNoYWRlckQzRCAqZnJhZ21lbnRTaGFkZXJEM0QgPSBHZXRJ
bXBsQXM8U2hhZGVyRDNEPihtU3RhdGUuZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpKTsKKyAg
ICBjb25zdCBTaGFkZXJEM0QgKnZlcnRleFNoYWRlckQzRCA9IFNhZmVHZXRJbXBsQXM8U2hhZGVy
RDNEPihtU3RhdGUuZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKSk7CisgICAgY29uc3QgU2hhZGVy
RDNEICpmcmFnbWVudFNoYWRlckQzRCA9CisgICAgICAgIFNhZmVHZXRJbXBsQXM8U2hhZGVyRDNE
PihtU3RhdGUuZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpKTsKKyAgICBjb25zdCBTaGFkZXJE
M0QgKmNvbXB1dGVTaGFkZXJEM0QgPSBTYWZlR2V0SW1wbEFzPFNoYWRlckQzRD4obVN0YXRlLmdl
dEF0dGFjaGVkQ29tcHV0ZVNoYWRlcigpKTsKIAogICAgIGZvciAoY29uc3QgZ2w6OlVuaWZvcm1C
bG9jayAmdW5pZm9ybUJsb2NrIDogbVN0YXRlLmdldFVuaWZvcm1CbG9ja3MoKSkKICAgICB7CkBA
IC0xNTAyLDYgKzE2MTksNyBAQCB2b2lkIFByb2dyYW1EM0Q6OmFzc2lnblVuaWZvcm1CbG9ja1Jl
Z2lzdGVycygpCiAKICAgICAgICAgaWYgKHVuaWZvcm1CbG9jay52ZXJ0ZXhTdGF0aWNVc2UpCiAg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCh2ZXJ0ZXhTaGFkZXJEM0QgIT0gbnVsbHB0cik7
CiAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYmFzZVJlZ2lzdGVyID0KICAgICAgICAgICAgICAg
ICB2ZXJ0ZXhTaGFkZXJEM0QtPmdldEludGVyZmFjZUJsb2NrUmVnaXN0ZXIodW5pZm9ybUJsb2Nr
Lm5hbWUpOwogICAgICAgICAgICAgZDNkVW5pZm9ybUJsb2NrLnZzUmVnaXN0ZXJJbmRleCA9IGJh
c2VSZWdpc3RlciArIHVuaWZvcm1CbG9ja0VsZW1lbnQ7CkBAIC0xNTA5LDExICsxNjI3LDIwIEBA
IHZvaWQgUHJvZ3JhbUQzRDo6YXNzaWduVW5pZm9ybUJsb2NrUmVnaXN0ZXJzKCkKIAogICAgICAg
ICBpZiAodW5pZm9ybUJsb2NrLmZyYWdtZW50U3RhdGljVXNlKQogICAgICAgICB7CisgICAgICAg
ICAgICBBU1NFUlQoZnJhZ21lbnRTaGFkZXJEM0QgIT0gbnVsbHB0cik7CiAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgYmFzZVJlZ2lzdGVyID0KICAgICAgICAgICAgICAgICBmcmFnbWVudFNoYWRl
ckQzRC0+Z2V0SW50ZXJmYWNlQmxvY2tSZWdpc3Rlcih1bmlmb3JtQmxvY2submFtZSk7CiAgICAg
ICAgICAgICBkM2RVbmlmb3JtQmxvY2sucHNSZWdpc3RlckluZGV4ID0gYmFzZVJlZ2lzdGVyICsg
dW5pZm9ybUJsb2NrRWxlbWVudDsKICAgICAgICAgfQogCisgICAgICAgIGlmICh1bmlmb3JtQmxv
Y2suY29tcHV0ZVN0YXRpY1VzZSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGNvbXB1
dGVTaGFkZXJEM0QgIT0gbnVsbHB0cik7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYmFzZVJl
Z2lzdGVyID0KKyAgICAgICAgICAgICAgICBjb21wdXRlU2hhZGVyRDNELT5nZXRJbnRlcmZhY2VC
bG9ja1JlZ2lzdGVyKHVuaWZvcm1CbG9jay5uYW1lKTsKKyAgICAgICAgICAgIGQzZFVuaWZvcm1C
bG9jay5jc1JlZ2lzdGVySW5kZXggPSBiYXNlUmVnaXN0ZXIgKyB1bmlmb3JtQmxvY2tFbGVtZW50
OworICAgICAgICB9CisKICAgICAgICAgbUQzRFVuaWZvcm1CbG9ja3MucHVzaF9iYWNrKGQzZFVu
aWZvcm1CbG9jayk7CiAgICAgfQogfQpAQCAtMTUyMyw2ICsxNjUwLDcgQEAgdm9pZCBQcm9ncmFt
RDNEOjppbml0aWFsaXplVW5pZm9ybVN0b3JhZ2UoKQogICAgIC8vIENvbXB1dGUgdG90YWwgZGVm
YXVsdCBibG9jayBzaXplCiAgICAgdW5zaWduZWQgaW50IHZlcnRleFJlZ2lzdGVycyAgID0gMDsK
ICAgICB1bnNpZ25lZCBpbnQgZnJhZ21lbnRSZWdpc3RlcnMgPSAwOworICAgIHVuc2lnbmVkIGlu
dCBjb21wdXRlUmVnaXN0ZXJzICA9IDA7CiAgICAgZm9yIChjb25zdCBEM0RVbmlmb3JtICpkM2RV
bmlmb3JtIDogbUQzRFVuaWZvcm1zKQogICAgIHsKICAgICAgICAgaWYgKCFkM2RVbmlmb3JtLT5p
c1NhbXBsZXIoKSkKQEAgLTE1MzcsNDMgKzE2NjUsNDQgQEAgdm9pZCBQcm9ncmFtRDNEOjppbml0
aWFsaXplVW5pZm9ybVN0b3JhZ2UoKQogICAgICAgICAgICAgICAgIGZyYWdtZW50UmVnaXN0ZXJz
ID0gc3RkOjptYXgoCiAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50UmVnaXN0ZXJzLCBkM2RV
bmlmb3JtLT5wc1JlZ2lzdGVySW5kZXggKyBkM2RVbmlmb3JtLT5yZWdpc3RlckNvdW50KTsKICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkM2RVbmlmb3JtLT5pc1JlZmVyZW5jZWRCeUNv
bXB1dGVTaGFkZXIoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb21wdXRlUmVn
aXN0ZXJzID0gc3RkOjptYXgoCisgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVSZWdpc3RlcnMs
IGQzZFVuaWZvcm0tPmNzUmVnaXN0ZXJJbmRleCArIGQzZFVuaWZvcm0tPnJlZ2lzdGVyQ291bnQp
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgbVZlcnRleFVuaWZvcm1T
dG9yYWdlICAgPSBtUmVuZGVyZXItPmNyZWF0ZVVuaWZvcm1TdG9yYWdlKHZlcnRleFJlZ2lzdGVy
cyAqIDE2dSk7Ci0gICAgbUZyYWdtZW50VW5pZm9ybVN0b3JhZ2UgPSBtUmVuZGVyZXItPmNyZWF0
ZVVuaWZvcm1TdG9yYWdlKGZyYWdtZW50UmVnaXN0ZXJzICogMTZ1KTsKKyAgICBtVmVydGV4VW5p
Zm9ybVN0b3JhZ2UgPQorICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VW5pZm9ybVN0b3JhZ2VEM0Q+
KG1SZW5kZXJlci0+Y3JlYXRlVW5pZm9ybVN0b3JhZ2UodmVydGV4UmVnaXN0ZXJzICogMTZ1KSk7
CisgICAgbUZyYWdtZW50VW5pZm9ybVN0b3JhZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8VW5pZm9ybVN0
b3JhZ2VEM0Q+KAorICAgICAgICBtUmVuZGVyZXItPmNyZWF0ZVVuaWZvcm1TdG9yYWdlKGZyYWdt
ZW50UmVnaXN0ZXJzICogMTZ1KSk7CisgICAgbUNvbXB1dGVVbmlmb3JtU3RvcmFnZSA9CisgICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxVbmlmb3JtU3RvcmFnZUQzRD4obVJlbmRlcmVyLT5jcmVhdGVV
bmlmb3JtU3RvcmFnZShjb21wdXRlUmVnaXN0ZXJzICogMTZ1KSk7CiB9CiAKIGdsOjpFcnJvciBQ
cm9ncmFtRDNEOjphcHBseVVuaWZvcm1zKEdMZW51bSBkcmF3TW9kZSkKIHsKICAgICBBU1NFUlQo
IW1EaXJ0eVNhbXBsZXJNYXBwaW5nKTsKIAotICAgIGdsOjpFcnJvciBlcnJvciA9IG1SZW5kZXJl
ci0+YXBwbHlVbmlmb3JtcygqdGhpcywgZHJhd01vZGUsIG1EM0RVbmlmb3Jtcyk7Ci0gICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9Cisg
ICAgQU5HTEVfVFJZKG1SZW5kZXJlci0+YXBwbHlVbmlmb3JtcygqdGhpcywgZHJhd01vZGUsIG1E
M0RVbmlmb3JtcykpOwogCiAgICAgZm9yIChEM0RVbmlmb3JtICpkM2RVbmlmb3JtIDogbUQzRFVu
aWZvcm1zKQogICAgIHsKICAgICAgICAgZDNkVW5pZm9ybS0+ZGlydHkgPSBmYWxzZTsKICAgICB9
CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFByb2dyYW1EM0Q6OmFwcGx5VW5pZm9ybUJ1ZmZlcnMo
Y29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSkKIHsKICAgICBpZiAobVN0YXRlLmdldFVuaWZv
cm1CbG9ja3MoKS5lbXB0eSgpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KIAotICAgIC8v
IExhenkgaW5pdC4KLSAgICBpZiAobUQzRFVuaWZvcm1CbG9ja3MuZW1wdHkoKSkKLSAgICB7Ci0g
ICAgICAgIGFzc2lnblVuaWZvcm1CbG9ja1JlZ2lzdGVycygpOwotICAgIH0KKyAgICBlbnN1cmVV
bmlmb3JtQmxvY2tzSW5pdGlhbGl6ZWQoKTsKIAogICAgIG1WZXJ0ZXhVQk9DYWNoZS5jbGVhcigp
OwogICAgIG1GcmFnbWVudFVCT0NhY2hlLmNsZWFyKCk7CkBAIC0xNzczLDIyICsxOTAyLDM1IEBA
IHZvaWQgUHJvZ3JhbUQzRDo6c2V0VW5pZm9ybUJsb2NrQmluZGluZyhHTHVpbnQgLyp1bmlmb3Jt
QmxvY2tJbmRleCovLAogdm9pZCBQcm9ncmFtRDNEOjpkZWZpbmVVbmlmb3Jtc0FuZEFzc2lnblJl
Z2lzdGVycygpCiB7CiAgICAgRDNEVW5pZm9ybU1hcCB1bmlmb3JtTWFwOwotICAgIGNvbnN0IGds
OjpTaGFkZXIgKnZlcnRleFNoYWRlciA9IG1TdGF0ZS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigp
OwotICAgIGZvciAoY29uc3Qgc2g6OlVuaWZvcm0gJnZlcnRleFVuaWZvcm0gOiB2ZXJ0ZXhTaGFk
ZXItPmdldFVuaWZvcm1zKCkpCi0KKyAgICBjb25zdCBnbDo6U2hhZGVyICpjb21wdXRlU2hhZGVy
ID0gbVN0YXRlLmdldEF0dGFjaGVkQ29tcHV0ZVNoYWRlcigpOworICAgIGlmIChjb21wdXRlU2hh
ZGVyKQogICAgIHsKLSAgICAgICAgaWYgKHZlcnRleFVuaWZvcm0uc3RhdGljVXNlKQorICAgICAg
ICBmb3IgKGNvbnN0IHNoOjpVbmlmb3JtICZjb21wdXRlVW5pZm9ybSA6IGNvbXB1dGVTaGFkZXIt
PmdldFVuaWZvcm1zKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGRlZmluZVVuaWZvcm1CYXNl
KHZlcnRleFNoYWRlciwgdmVydGV4VW5pZm9ybSwgJnVuaWZvcm1NYXApOworICAgICAgICAgICAg
aWYgKGNvbXB1dGVVbmlmb3JtLnN0YXRpY1VzZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBkZWZpbmVVbmlmb3JtQmFzZShjb21wdXRlU2hhZGVyLCBjb21wdXRlVW5pZm9ybSwgJnVu
aWZvcm1NYXApOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotCi0gICAgY29uc3Qg
Z2w6OlNoYWRlciAqZnJhZ21lbnRTaGFkZXIgPSBtU3RhdGUuZ2V0QXR0YWNoZWRGcmFnbWVudFNo
YWRlcigpOwotICAgIGZvciAoY29uc3Qgc2g6OlVuaWZvcm0gJmZyYWdtZW50VW5pZm9ybSA6IGZy
YWdtZW50U2hhZGVyLT5nZXRVbmlmb3JtcygpKQorICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGlm
IChmcmFnbWVudFVuaWZvcm0uc3RhdGljVXNlKQorICAgICAgICBjb25zdCBnbDo6U2hhZGVyICp2
ZXJ0ZXhTaGFkZXIgPSBtU3RhdGUuZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKTsKKyAgICAgICAg
Zm9yIChjb25zdCBzaDo6VW5pZm9ybSAmdmVydGV4VW5pZm9ybSA6IHZlcnRleFNoYWRlci0+Z2V0
VW5pZm9ybXMoKSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHZlcnRleFVuaWZvcm0uc3Rh
dGljVXNlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlZmluZVVuaWZvcm1CYXNl
KHZlcnRleFNoYWRlciwgdmVydGV4VW5pZm9ybSwgJnVuaWZvcm1NYXApOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgY29uc3QgZ2w6OlNoYWRlciAqZnJhZ21lbnRTaGFkZXIg
PSBtU3RhdGUuZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpOworICAgICAgICBmb3IgKGNvbnN0
IHNoOjpVbmlmb3JtICZmcmFnbWVudFVuaWZvcm0gOiBmcmFnbWVudFNoYWRlci0+Z2V0VW5pZm9y
bXMoKSkKICAgICAgICAgewotICAgICAgICAgICAgZGVmaW5lVW5pZm9ybUJhc2UoZnJhZ21lbnRT
aGFkZXIsIGZyYWdtZW50VW5pZm9ybSwgJnVuaWZvcm1NYXApOworICAgICAgICAgICAgaWYgKGZy
YWdtZW50VW5pZm9ybS5zdGF0aWNVc2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ZGVmaW5lVW5pZm9ybUJhc2UoZnJhZ21lbnRTaGFkZXIsIGZyYWdtZW50VW5pZm9ybSwgJnVuaWZv
cm1NYXApOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkBAIC0xODIyLDcgKzE5
NjQsNyBAQCB2b2lkIFByb2dyYW1EM0Q6OmRlZmluZVVuaWZvcm1CYXNlKGNvbnN0IGdsOjpTaGFk
ZXIgKnNoYWRlciwKIAogICAgIHVuc2lnbmVkIGludCBzdGFydFJlZ2lzdGVyID0gc2hhZGVyRDNE
LT5nZXRVbmlmb3JtUmVnaXN0ZXIodW5pZm9ybS5uYW1lKTsKICAgICBTaFNoYWRlck91dHB1dCBv
dXRwdXRUeXBlID0gc2hhZGVyRDNELT5nZXRDb21waWxlck91dHB1dFR5cGUoKTsKLSAgICBzaDo6
SExTTEJsb2NrRW5jb2RlciBlbmNvZGVyKHNoOjpITFNMQmxvY2tFbmNvZGVyOjpHZXRTdHJhdGVn
eUZvcihvdXRwdXRUeXBlKSk7CisgICAgc2g6OkhMU0xCbG9ja0VuY29kZXIgZW5jb2RlcihzaDo6
SExTTEJsb2NrRW5jb2Rlcjo6R2V0U3RyYXRlZ3lGb3Iob3V0cHV0VHlwZSksIHRydWUpOwogICAg
IGVuY29kZXIuc2tpcFJlZ2lzdGVycyhzdGFydFJlZ2lzdGVyKTsKIAogICAgIGRlZmluZVVuaWZv
cm0oc2hhZGVyLT5nZXRUeXBlKCksIHVuaWZvcm0sIHVuaWZvcm0ubmFtZSwgJmVuY29kZXIsIHVu
aWZvcm1NYXApOwpAQCAtMTkxNCwxMSArMjA1NiwxNSBAQCB2b2lkIFByb2dyYW1EM0Q6OmRlZmlu
ZVVuaWZvcm0oR0xlbnVtIHNoYWRlclR5cGUsCiAgICAgICAgIHsKICAgICAgICAgICAgIGQzZFVu
aWZvcm0tPnBzUmVnaXN0ZXJJbmRleCA9IHJlZzsKICAgICAgICAgfQotICAgICAgICBlbHNlCisg
ICAgICAgIGVsc2UgaWYgKHNoYWRlclR5cGUgPT0gR0xfVkVSVEVYX1NIQURFUikKICAgICAgICAg
ewotICAgICAgICAgICAgQVNTRVJUKHNoYWRlclR5cGUgPT0gR0xfVkVSVEVYX1NIQURFUik7CiAg
ICAgICAgICAgICBkM2RVbmlmb3JtLT52c1JlZ2lzdGVySW5kZXggPSByZWc7CiAgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoc2hhZGVyVHlwZSA9
PSBHTF9DT01QVVRFX1NIQURFUik7CisgICAgICAgICAgICBkM2RVbmlmb3JtLT5jc1JlZ2lzdGVy
SW5kZXggPSByZWc7CisgICAgICAgIH0KIAogICAgICAgICAvLyBBcnJheXMgYXJlIHRyZWF0ZWQg
YXMgYWdncmVnYXRlIHR5cGVzCiAgICAgICAgIGlmICh1bmlmb3JtLmlzQXJyYXkoKSkKQEAgLTIw
MjksMTMgKzIxNzUsMTMgQEAgdm9pZCBQcm9ncmFtRDNEOjpzZXRVbmlmb3JtTWF0cml4ZnYoR0xp
bnQgbG9jYXRpb24sCiAgICAgICAgIC8vIEludGVybmFsbHkgc3RvcmUgbWF0cmljZXMgYXMgdHJh
bnNwb3NlZCB2ZXJzaW9ucyB0byBhY2NvbW9kYXRlIEhMU0wgbWF0cml4IGluZGV4aW5nCiAgICAg
ICAgIGlmICh0cmFuc3Bvc2UgPT0gR0xfRkFMU0UpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRh
cmdldFVuaWZvcm0tPmRpcnR5ID0gVHJhbnNwb3NlTWF0cml4PEdMZmxvYXQ+KHRhcmdldCwgdmFs
dWUsIDQsIHJvd3MsIHJvd3MsIGNvbHMpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRhcmdldFVuaWZvcm0tPmRpcnR5OworICAgICAgICAgICAgdGFyZ2V0VW5pZm9ybS0+
ZGlydHkgPQorICAgICAgICAgICAgICAgIFRyYW5zcG9zZUV4cGFuZE1hdHJpeDxHTGZsb2F0LCBj
b2xzLCByb3dzPih0YXJnZXQsIHZhbHVlKSB8fCB0YXJnZXRVbmlmb3JtLT5kaXJ0eTsKICAgICAg
ICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKICAgICAgICAgICAgIHRhcmdldFVuaWZvcm0t
PmRpcnR5ID0KLSAgICAgICAgICAgICAgICBFeHBhbmRNYXRyaXg8R0xmbG9hdD4odGFyZ2V0LCB2
YWx1ZSwgNCwgcm93cywgY29scywgcm93cykgfHwgdGFyZ2V0VW5pZm9ybS0+ZGlydHk7CisgICAg
ICAgICAgICAgICAgRXhwYW5kTWF0cml4PEdMZmxvYXQsIGNvbHMsIHJvd3M+KHRhcmdldCwgdmFs
dWUpIHx8IHRhcmdldFVuaWZvcm0tPmRpcnR5OwogICAgICAgICB9CiAgICAgICAgIHRhcmdldCAr
PSB0YXJnZXRNYXRyaXhTdHJpZGU7CiAgICAgICAgIHZhbHVlICs9IGNvbHMgKiByb3dzOwpAQCAt
MjA0OCw3ICsyMTk0LDcgQEAgc2l6ZV90IFByb2dyYW1EM0Q6OmdldFVuaWZvcm1CbG9ja0luZm8o
Y29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZpbnRlcmZhY2VCbG9jaykKIAogICAgIC8vIGRlZmlu
ZSBtZW1iZXIgdW5pZm9ybXMKICAgICBzaDo6U3RkMTQwQmxvY2tFbmNvZGVyIHN0ZDE0MEVuY29k
ZXI7Ci0gICAgc2g6OkhMU0xCbG9ja0VuY29kZXIgaGxzbEVuY29kZXIoc2g6OkhMU0xCbG9ja0Vu
Y29kZXI6OkVOQ09ERV9QQUNLRUQpOworICAgIHNoOjpITFNMQmxvY2tFbmNvZGVyIGhsc2xFbmNv
ZGVyKHNoOjpITFNMQmxvY2tFbmNvZGVyOjpFTkNPREVfUEFDS0VELCBmYWxzZSk7CiAgICAgc2g6
OkJsb2NrTGF5b3V0RW5jb2RlciAqZW5jb2RlciA9IG51bGxwdHI7CiAKICAgICBpZiAoaW50ZXJm
YWNlQmxvY2subGF5b3V0ID09IHNoOjpCTE9DS0xBWU9VVF9TVEFOREFSRCkKQEAgLTIwODAsMjIg
KzIyMjYsMzcgQEAgdm9pZCBQcm9ncmFtRDNEOjphc3NpZ25BbGxTYW1wbGVyUmVnaXN0ZXJzKCkK
IHZvaWQgUHJvZ3JhbUQzRDo6YXNzaWduU2FtcGxlclJlZ2lzdGVycyhEM0RVbmlmb3JtICpkM2RV
bmlmb3JtKQogewogICAgIEFTU0VSVChkM2RVbmlmb3JtLT5pc1NhbXBsZXIoKSk7Ci0gICAgY29u
c3QgU2hhZGVyRDNEICp2ZXJ0ZXhTaGFkZXJEM0QgICA9IEdldEltcGxBczxTaGFkZXJEM0Q+KG1T
dGF0ZS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpKTsKLSAgICBjb25zdCBTaGFkZXJEM0QgKmZy
YWdtZW50U2hhZGVyRDNEID0gR2V0SW1wbEFzPFNoYWRlckQzRD4obVN0YXRlLmdldEF0dGFjaGVk
RnJhZ21lbnRTaGFkZXIoKSk7Ci0gICAgQVNTRVJUKHZlcnRleFNoYWRlckQzRC0+aGFzVW5pZm9y
bShkM2RVbmlmb3JtKSB8fCBmcmFnbWVudFNoYWRlckQzRC0+aGFzVW5pZm9ybShkM2RVbmlmb3Jt
KSk7Ci0gICAgaWYgKHZlcnRleFNoYWRlckQzRC0+aGFzVW5pZm9ybShkM2RVbmlmb3JtKSkKKyAg
ICBjb25zdCBnbDo6U2hhZGVyICpjb21wdXRlU2hhZGVyID0gbVN0YXRlLmdldEF0dGFjaGVkQ29t
cHV0ZVNoYWRlcigpOworICAgIGlmIChjb21wdXRlU2hhZGVyKQogICAgIHsKLSAgICAgICAgZDNk
VW5pZm9ybS0+dnNSZWdpc3RlckluZGV4ID0gdmVydGV4U2hhZGVyRDNELT5nZXRVbmlmb3JtUmVn
aXN0ZXIoZDNkVW5pZm9ybS0+bmFtZSk7Ci0gICAgICAgIEFTU0VSVChkM2RVbmlmb3JtLT52c1Jl
Z2lzdGVySW5kZXggIT0gR0xfSU5WQUxJRF9JTkRFWCk7Ci0gICAgICAgIEFzc2lnblNhbXBsZXJz
KGQzZFVuaWZvcm0tPnZzUmVnaXN0ZXJJbmRleCwgZDNkVW5pZm9ybS0+dHlwZSwgZDNkVW5pZm9y
bS0+YXJyYXlTaXplLAotICAgICAgICAgICAgICAgICAgICAgICBtU2FtcGxlcnNWUywgJm1Vc2Vk
VmVydGV4U2FtcGxlclJhbmdlKTsKKyAgICAgICAgY29uc3QgU2hhZGVyRDNEICpjb21wdXRlU2hh
ZGVyRDNEID0gR2V0SW1wbEFzPFNoYWRlckQzRD4obVN0YXRlLmdldEF0dGFjaGVkQ29tcHV0ZVNo
YWRlcigpKTsKKyAgICAgICAgQVNTRVJUKGNvbXB1dGVTaGFkZXJEM0QtPmhhc1VuaWZvcm0oZDNk
VW5pZm9ybSkpOworICAgICAgICBkM2RVbmlmb3JtLT5jc1JlZ2lzdGVySW5kZXggPSBjb21wdXRl
U2hhZGVyRDNELT5nZXRVbmlmb3JtUmVnaXN0ZXIoZDNkVW5pZm9ybS0+bmFtZSk7CisgICAgICAg
IEFTU0VSVChkM2RVbmlmb3JtLT5jc1JlZ2lzdGVySW5kZXggIT0gR0xfSU5WQUxJRF9JTkRFWCk7
CisgICAgICAgIEFzc2lnblNhbXBsZXJzKGQzZFVuaWZvcm0tPmNzUmVnaXN0ZXJJbmRleCwgZDNk
VW5pZm9ybS0+dHlwZSwgZDNkVW5pZm9ybS0+YXJyYXlTaXplLAorICAgICAgICAgICAgICAgICAg
ICAgICBtU2FtcGxlcnNDUywgJm1Vc2VkQ29tcHV0ZVNhbXBsZXJSYW5nZSk7CiAgICAgfQotICAg
IGlmIChmcmFnbWVudFNoYWRlckQzRC0+aGFzVW5pZm9ybShkM2RVbmlmb3JtKSkKKyAgICBlbHNl
CiAgICAgewotICAgICAgICBkM2RVbmlmb3JtLT5wc1JlZ2lzdGVySW5kZXggPSBmcmFnbWVudFNo
YWRlckQzRC0+Z2V0VW5pZm9ybVJlZ2lzdGVyKGQzZFVuaWZvcm0tPm5hbWUpOwotICAgICAgICBB
U1NFUlQoZDNkVW5pZm9ybS0+cHNSZWdpc3RlckluZGV4ICE9IEdMX0lOVkFMSURfSU5ERVgpOwot
ICAgICAgICBBc3NpZ25TYW1wbGVycyhkM2RVbmlmb3JtLT5wc1JlZ2lzdGVySW5kZXgsIGQzZFVu
aWZvcm0tPnR5cGUsIGQzZFVuaWZvcm0tPmFycmF5U2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgbVNhbXBsZXJzUFMsICZtVXNlZFBpeGVsU2FtcGxlclJhbmdlKTsKKyAgICAgICAgY29uc3Qg
U2hhZGVyRDNEICp2ZXJ0ZXhTaGFkZXJEM0QgPSBHZXRJbXBsQXM8U2hhZGVyRDNEPihtU3RhdGUu
Z2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKSk7CisgICAgICAgIGNvbnN0IFNoYWRlckQzRCAqZnJh
Z21lbnRTaGFkZXJEM0QgPQorICAgICAgICAgICAgR2V0SW1wbEFzPFNoYWRlckQzRD4obVN0YXRl
LmdldEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIoKSk7CisgICAgICAgIEFTU0VSVCh2ZXJ0ZXhTaGFk
ZXJEM0QtPmhhc1VuaWZvcm0oZDNkVW5pZm9ybSkgfHwKKyAgICAgICAgICAgICAgIGZyYWdtZW50
U2hhZGVyRDNELT5oYXNVbmlmb3JtKGQzZFVuaWZvcm0pKTsKKyAgICAgICAgaWYgKHZlcnRleFNo
YWRlckQzRC0+aGFzVW5pZm9ybShkM2RVbmlmb3JtKSkKKyAgICAgICAgeworICAgICAgICAgICAg
ZDNkVW5pZm9ybS0+dnNSZWdpc3RlckluZGV4ID0gdmVydGV4U2hhZGVyRDNELT5nZXRVbmlmb3Jt
UmVnaXN0ZXIoZDNkVW5pZm9ybS0+bmFtZSk7CisgICAgICAgICAgICBBU1NFUlQoZDNkVW5pZm9y
bS0+dnNSZWdpc3RlckluZGV4ICE9IEdMX0lOVkFMSURfSU5ERVgpOworICAgICAgICAgICAgQXNz
aWduU2FtcGxlcnMoZDNkVW5pZm9ybS0+dnNSZWdpc3RlckluZGV4LCBkM2RVbmlmb3JtLT50eXBl
LCBkM2RVbmlmb3JtLT5hcnJheVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2Ft
cGxlcnNWUywgJm1Vc2VkVmVydGV4U2FtcGxlclJhbmdlKTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoZnJhZ21lbnRTaGFkZXJEM0QtPmhhc1VuaWZvcm0oZDNkVW5pZm9ybSkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGQzZFVuaWZvcm0tPnBzUmVnaXN0ZXJJbmRleCA9IGZyYWdtZW50U2hhZGVy
RDNELT5nZXRVbmlmb3JtUmVnaXN0ZXIoZDNkVW5pZm9ybS0+bmFtZSk7CisgICAgICAgICAgICBB
U1NFUlQoZDNkVW5pZm9ybS0+cHNSZWdpc3RlckluZGV4ICE9IEdMX0lOVkFMSURfSU5ERVgpOwor
ICAgICAgICAgICAgQXNzaWduU2FtcGxlcnMoZDNkVW5pZm9ybS0+cHNSZWdpc3RlckluZGV4LCBk
M2RVbmlmb3JtLT50eXBlLCBkM2RVbmlmb3JtLT5hcnJheVNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtU2FtcGxlcnNQUywgJm1Vc2VkUGl4ZWxTYW1wbGVyUmFuZ2UpOworICAgICAg
ICB9CiAgICAgfQogfQogCkBAIC0yMTIyLDE5ICsyMjgzLDIxIEBAIHZvaWQgUHJvZ3JhbUQzRDo6
QXNzaWduU2FtcGxlcnModW5zaWduZWQgaW50IHN0YXJ0U2FtcGxlckluZGV4LAogCiB2b2lkIFBy
b2dyYW1EM0Q6OnJlc2V0KCkKIHsKLSAgICBTYWZlRGVsZXRlQ29udGFpbmVyKG1WZXJ0ZXhFeGVj
dXRhYmxlcyk7Ci0gICAgU2FmZURlbGV0ZUNvbnRhaW5lcihtUGl4ZWxFeGVjdXRhYmxlcyk7Cisg
ICAgbVZlcnRleEV4ZWN1dGFibGVzLmNsZWFyKCk7CisgICAgbVBpeGVsRXhlY3V0YWJsZXMuY2xl
YXIoKTsKIAotICAgIGZvciAoYXV0byAmZWxlbWVudCA6IG1HZW9tZXRyeUV4ZWN1dGFibGVzKQor
ICAgIGZvciAoYXV0byAmZ2VvbWV0cnlFeGVjdXRhYmxlIDogbUdlb21ldHJ5RXhlY3V0YWJsZXMp
CiAgICAgewotICAgICAgICBTYWZlRGVsZXRlKGVsZW1lbnQpOworICAgICAgICBnZW9tZXRyeUV4
ZWN1dGFibGUucmVzZXQobnVsbHB0cik7CiAgICAgfQogCisgICAgbUNvbXB1dGVFeGVjdXRhYmxl
LnJlc2V0KG51bGxwdHIpOworCiAgICAgbVZlcnRleEhMU0wuY2xlYXIoKTsKLSAgICBtVmVydGV4
V29ya2Fyb3VuZHMgPSBEM0RDb21waWxlcldvcmthcm91bmRzKCk7CisgICAgbVZlcnRleFdvcmth
cm91bmRzID0gYW5nbGU6OkNvbXBpbGVyV29ya2Fyb3VuZHNEM0QoKTsKIAogICAgIG1QaXhlbEhM
U0wuY2xlYXIoKTsKLSAgICBtUGl4ZWxXb3JrYXJvdW5kcyA9IEQzRENvbXBpbGVyV29ya2Fyb3Vu
ZHMoKTsKKyAgICBtUGl4ZWxXb3JrYXJvdW5kcyA9IGFuZ2xlOjpDb21waWxlcldvcmthcm91bmRz
RDNEKCk7CiAgICAgbVVzZXNGcmFnRGVwdGggPSBmYWxzZTsKICAgICBtUGl4ZWxTaGFkZXJLZXku
Y2xlYXIoKTsKICAgICBtVXNlc1BvaW50U2l6ZSA9IGZhbHNlOwpAQCAtMjE0MywxNCArMjMwNiwx
NyBAQCB2b2lkIFByb2dyYW1EM0Q6OnJlc2V0KCkKICAgICBTYWZlRGVsZXRlQ29udGFpbmVyKG1E
M0RVbmlmb3Jtcyk7CiAgICAgbUQzRFVuaWZvcm1CbG9ja3MuY2xlYXIoKTsKIAotICAgIFNhZmVE
ZWxldGUobVZlcnRleFVuaWZvcm1TdG9yYWdlKTsKLSAgICBTYWZlRGVsZXRlKG1GcmFnbWVudFVu
aWZvcm1TdG9yYWdlKTsKKyAgICBtVmVydGV4VW5pZm9ybVN0b3JhZ2UucmVzZXQobnVsbHB0cik7
CisgICAgbUZyYWdtZW50VW5pZm9ybVN0b3JhZ2UucmVzZXQobnVsbHB0cik7CisgICAgbUNvbXB1
dGVVbmlmb3JtU3RvcmFnZS5yZXNldChudWxscHRyKTsKIAogICAgIG1TYW1wbGVyc1BTLmNsZWFy
KCk7CiAgICAgbVNhbXBsZXJzVlMuY2xlYXIoKTsKKyAgICBtU2FtcGxlcnNDUy5jbGVhcigpOwog
CiAgICAgbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2UgPSAwOwogICAgIG1Vc2VkUGl4ZWxTYW1wbGVy
UmFuZ2UgID0gMDsKKyAgICBtVXNlZENvbXB1dGVTYW1wbGVyUmFuZ2UgPSAwOwogICAgIG1EaXJ0
eVNhbXBsZXJNYXBwaW5nICAgID0gdHJ1ZTsKIAogICAgIG1BdHRyaWJMb2NhdGlvblRvRDNEU2Vt
YW50aWMuZmlsbCgtMSk7CkBAIC0yMTkzLDcgKzIzNTksNyBAQCB2b2lkIFByb2dyYW1EM0Q6OnVw
ZGF0ZUNhY2hlZElucHV0TGF5b3V0KGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUpCiAgICAgbUNhY2hl
ZElucHV0TGF5b3V0LmNsZWFyKCk7CiAgICAgY29uc3QgYXV0byAmdmVydGV4QXR0cmlidXRlcyA9
IHN0YXRlLmdldFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0ZXMoKTsKIAotICAgIGZv
ciAodW5zaWduZWQgaW50IGxvY2F0aW9uSW5kZXggOiBhbmdsZTo6SXRlcmF0ZUJpdFNldChtU3Rh
dGUuZ2V0QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzaygpKSkKKyAgICBmb3IgKHVuc2lnbmVkIGlu
dCBsb2NhdGlvbkluZGV4IDogSXRlcmF0ZUJpdFNldChtU3RhdGUuZ2V0QWN0aXZlQXR0cmliTG9j
YXRpb25zTWFzaygpKSkKICAgICB7CiAgICAgICAgIGludCBkM2RTZW1hbnRpYyA9IG1BdHRyaWJM
b2NhdGlvblRvRDNEU2VtYW50aWNbbG9jYXRpb25JbmRleF07CiAKQEAgLTIyMTAsMTAgKzIzNzYs
OSBAQCB2b2lkIFByb2dyYW1EM0Q6OnVwZGF0ZUNhY2hlZElucHV0TGF5b3V0KGNvbnN0IGdsOjpT
dGF0ZSAmc3RhdGUpCiAgICAgfQogfQogCi12b2lkIFByb2dyYW1EM0Q6OmdhdGhlclRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZ3MoY29uc3QgVmFyeWluZ1BhY2tpbmcgJnZhcnlpbmdQYWNraW5nKQor
dm9pZCBQcm9ncmFtRDNEOjpnYXRoZXJUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKGNvbnN0IGds
OjpWYXJ5aW5nUGFja2luZyAmdmFyeWluZ1BhY2tpbmcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQnVpbHRpbkluZm8gJmJ1aWx0aW5zKQog
ewotICAgIGNvbnN0IGF1dG8gJmJ1aWx0aW5zID0gdmFyeWluZ1BhY2tpbmcuYnVpbHRpbnMoU0hB
REVSX1ZFUlRFWCk7Ci0KICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmFyeWluZ1NlbWFudGljID0K
ICAgICAgICAgR2V0VmFyeWluZ1NlbWFudGljKG1SZW5kZXJlci0+Z2V0TWFqb3JTaGFkZXJNb2Rl
bCgpLCB1c2VzUG9pbnRTaXplKCkpOwogCkBAIC0yMjUwLDcgKzI0MTUsOSBAQCB2b2lkIFByb2dy
YW1EM0Q6OmdhdGhlclRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoY29uc3QgVmFyeWluZ1BhY2tp
bmcgJnZhcnlpbmdQYQogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAg
ICAgICAgZm9yIChjb25zdCBQYWNrZWRWYXJ5aW5nUmVnaXN0ZXIgJnJlZ2lzdGVySW5mbyA6IHZh
cnlpbmdQYWNraW5nLmdldFJlZ2lzdGVyTGlzdCgpKQorICAgICAgICAgICAgc2l6ZV90IHN1YnNj
cmlwdCAgICAgPSBHTF9JTlZBTElEX0lOREVYOworICAgICAgICAgICAgc3RkOjpzdHJpbmcgYmFz
ZU5hbWUgPSBnbDo6UGFyc2VSZXNvdXJjZU5hbWUodGZWYXJ5aW5nTmFtZSwgJnN1YnNjcmlwdCk7
CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJnJlZ2lzdGVySW5mbyA6IHZhcnlpbmdQYWNr
aW5nLmdldFJlZ2lzdGVyTGlzdCgpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGNv
bnN0IGF1dG8gJnZhcnlpbmcgICA9ICpyZWdpc3RlckluZm8ucGFja2VkVmFyeWluZy0+dmFyeWlu
ZzsKICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNwb3NlZFR5cGUgPSBnbDo6VHJhbnNwb3Nl
TWF0cml4VHlwZSh2YXJ5aW5nLnR5cGUpOwpAQCAtMjI2NSw3ICsyNDMyLDggQEAgdm9pZCBQcm9n
cmFtRDNEOjpnYXRoZXJUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKGNvbnN0IFZhcnlpbmdQYWNr
aW5nICZ2YXJ5aW5nUGEKIAogICAgICAgICAgICAgICAgIC8vIFRoZXJlIGNhbiBiZSBtb3JlIHRo
YW4gb25lIHJlZ2lzdGVyIGFzc2lnbmVkIHRvIGEgcGFydGljdWxhciB2YXJ5aW5nLCBhbmQgZWFj
aAogICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyIG5lZWRzIGl0cyBvd24gc3RyZWFtIG91dCBl
bnRyeS4KLSAgICAgICAgICAgICAgICBpZiAodGZWYXJ5aW5nTmFtZSA9PSB2YXJ5aW5nLm5hbWUp
CisgICAgICAgICAgICAgICAgaWYgKGJhc2VOYW1lID09IHJlZ2lzdGVySW5mby5wYWNrZWRWYXJ5
aW5nLT52YXJ5aW5nLT5uYW1lICYmCisgICAgICAgICAgICAgICAgICAgIChzdWJzY3JpcHQgPT0g
R0xfSU5WQUxJRF9JTkRFWCB8fCBzdWJzY3JpcHQgPT0gcmVnaXN0ZXJJbmZvLnZhcnlpbmdBcnJh
eUluZGV4KSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIG1TdHJlYW1P
dXRWYXJ5aW5ncy5wdXNoX2JhY2soRDNEVmFyeWluZygKICAgICAgICAgICAgICAgICAgICAgICAg
IHZhcnlpbmdTZW1hbnRpYywgcmVnaXN0ZXJJbmZvLnNlbWFudGljSW5kZXgsIGNvbXBvbmVudENv
dW50LCBvdXRwdXRTbG90KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5oCmluZGV4IDg4ZmU0
MDIwZGIzZWQ0MWRiOGE5YTU0ZTUxNGMzMGFiYWFkMmYxNjQuLjg0OWZiZDAwYzAzYjI3ZThkNmY4
ZGU3ODE5ZDVmNThkNDE4MGYxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5oCkBAIC0x
Nyw3ICsxNyw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9EeW5hbWljSExTTC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9Xb3JrYXJvdW5kc0QzRC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dvcmthcm91bmRzRDNELmgi
CiAKIG5hbWVzcGFjZSByeAogewpAQCAtNDQsNiArNDQsNyBAQCBzdHJ1Y3QgRDNEVW5pZm9ybSA6
IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHVuc2lnbmVkIGludCBlbGVtZW50Q291bnQoKSBjb25z
dCB7IHJldHVybiBzdGQ6Om1heCgxdSwgYXJyYXlTaXplKTsgfQogICAgIGJvb2wgaXNSZWZlcmVu
Y2VkQnlWZXJ0ZXhTaGFkZXIoKSBjb25zdDsKICAgICBib29sIGlzUmVmZXJlbmNlZEJ5RnJhZ21l
bnRTaGFkZXIoKSBjb25zdDsKKyAgICBib29sIGlzUmVmZXJlbmNlZEJ5Q29tcHV0ZVNoYWRlcigp
IGNvbnN0OwogCiAgICAgLy8gRHVwbGljYXRlZCBmcm9tIHRoZSBHTCBsYXllcgogICAgIEdMZW51
bSB0eXBlOwpAQCAtNjAsNiArNjEsNyBAQCBzdHJ1Y3QgRDNEVW5pZm9ybSA6IGFuZ2xlOjpOb25D
b3B5YWJsZQogICAgIC8vIFJlZ2lzdGVyIGluZm9ybWF0aW9uLgogICAgIHVuc2lnbmVkIGludCB2
c1JlZ2lzdGVySW5kZXg7CiAgICAgdW5zaWduZWQgaW50IHBzUmVnaXN0ZXJJbmRleDsKKyAgICB1
bnNpZ25lZCBpbnQgY3NSZWdpc3RlckluZGV4OwogICAgIHVuc2lnbmVkIGludCByZWdpc3RlckNv
dW50OwogCiAgICAgLy8gUmVnaXN0ZXIgImVsZW1lbnRzIiBhcmUgdXNlZCBmb3IgdW5pZm9ybSBz
dHJ1Y3RzIGluIEVTMywgdG8gYXBwcm9wcmlhdGVseSBpZGVudGlmeSBzaW5nbGUKQEAgLTcwLDE0
ICs3MiwyMiBAQCBzdHJ1Y3QgRDNEVW5pZm9ybSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiBzdHJ1
Y3QgRDNEVW5pZm9ybUJsb2NrCiB7Ci0gICAgRDNEVW5pZm9ybUJsb2NrKCkgOiB2c1JlZ2lzdGVy
SW5kZXgoR0xfSU5WQUxJRF9JTkRFWCksIHBzUmVnaXN0ZXJJbmRleChHTF9JTlZBTElEX0lOREVY
KSB7fQorICAgIEQzRFVuaWZvcm1CbG9jaygpCisgICAgICAgIDogdnNSZWdpc3RlckluZGV4KEdM
X0lOVkFMSURfSU5ERVgpLAorICAgICAgICAgIHBzUmVnaXN0ZXJJbmRleChHTF9JTlZBTElEX0lO
REVYKSwKKyAgICAgICAgICBjc1JlZ2lzdGVySW5kZXgoR0xfSU5WQUxJRF9JTkRFWCkKKyAgICB7
CisgICAgfQogCiAgICAgYm9vbCB2ZXJ0ZXhTdGF0aWNVc2UoKSBjb25zdCB7IHJldHVybiB2c1Jl
Z2lzdGVySW5kZXggIT0gR0xfSU5WQUxJRF9JTkRFWDsgfQogCiAgICAgYm9vbCBmcmFnbWVudFN0
YXRpY1VzZSgpIGNvbnN0IHsgcmV0dXJuIHBzUmVnaXN0ZXJJbmRleCAhPSBHTF9JTlZBTElEX0lO
REVYOyB9CiAKKyAgICBib29sIGNvbXB1dGVTdGF0aWNVc2UoKSBjb25zdCB7IHJldHVybiBjc1Jl
Z2lzdGVySW5kZXggIT0gR0xfSU5WQUxJRF9JTkRFWDsgfQorCiAgICAgdW5zaWduZWQgaW50IHZz
UmVnaXN0ZXJJbmRleDsKICAgICB1bnNpZ25lZCBpbnQgcHNSZWdpc3RlckluZGV4OworICAgIHVu
c2lnbmVkIGludCBjc1JlZ2lzdGVySW5kZXg7CiB9OwogCiBzdHJ1Y3QgRDNEVmFyeWluZyBmaW5h
bApAQCAtMTQ4LDkgKzE1OCwxMiBAQCBjbGFzcyBQcm9ncmFtRDNEIDogcHVibGljIFByb2dyYW1J
bXBsCiAgICAgYm9vbCB1c2VzR2VvbWV0cnlTaGFkZXIoR0xlbnVtIGRyYXdNb2RlKSBjb25zdDsK
ICAgICBib29sIHVzZXNJbnN0YW5jZWRQb2ludFNwcml0ZUVtdWxhdGlvbigpIGNvbnN0OwogCi0g
ICAgTGlua1Jlc3VsdCBsb2FkKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6QmluYXJ5SW5wdXRT
dHJlYW0gKnN0cmVhbSkgb3ZlcnJpZGU7CisgICAgTGlua1Jlc3VsdCBsb2FkKGNvbnN0IENvbnRl
eHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgZ2w6OkluZm9Mb2cgJmlu
Zm9Mb2csCisgICAgICAgICAgICAgICAgICAgIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFt
KSBvdmVycmlkZTsKICAgICBnbDo6RXJyb3Igc2F2ZShnbDo6QmluYXJ5T3V0cHV0U3RyZWFtICpz
dHJlYW0pIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0QmluYXJ5UmV0cmlldmFibGVIaW50KGJvb2wg
cmV0cmlldmFibGUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2VwYXJhYmxlKGJvb2wgc2VwYXJh
YmxlKSBvdmVycmlkZTsKIAogICAgIGdsOjpFcnJvciBnZXRQaXhlbEV4ZWN1dGFibGVGb3JGcmFt
ZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZibywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqKm91dEV4ZWN0
dWFibGUpOwpAQCAtMTY0LDggKzE3NywxMyBAQCBjbGFzcyBQcm9ncmFtRDNEIDogcHVibGljIFBy
b2dyYW1JbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGRyYXdNb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNoYWRlckV4ZWN1dGFibGVEM0QgKipvdXRFeGVjdXRhYmxlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpJ
bmZvTG9nICppbmZvTG9nKTsKKyAgICBnbDo6RXJyb3IgZ2V0Q29tcHV0ZUV4ZWN1dGFibGUoY29u
c3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqKm91dEV4ZWN1dGFibGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsOjpJbmZvTG9nICppbmZvTG9nKTsKIAotICAgIExpbmtS
ZXN1bHQgbGluayhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBnbDo6SW5mb0xvZyAmaW5m
b0xvZykgb3ZlcnJpZGU7CisgICAgTGlua1Jlc3VsdCBsaW5rKENvbnRleHRJbXBsICpjb250ZXh0
SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZhcnlpbmdQYWNraW5nICZwYWNr
aW5nLAorICAgICAgICAgICAgICAgICAgICBnbDo6SW5mb0xvZyAmaW5mb0xvZykgb3ZlcnJpZGU7
CiAgICAgR0xib29sZWFuIHZhbGlkYXRlKGNvbnN0IGdsOjpDYXBzICZjYXBzLCBnbDo6SW5mb0xv
ZyAqaW5mb0xvZykgb3ZlcnJpZGU7CiAKICAgICBib29sIGdldFVuaWZvcm1CbG9ja1NpemUoY29u
c3Qgc3RkOjpzdHJpbmcgJmJsb2NrTmFtZSwgc2l6ZV90ICpzaXplT3V0KSBjb25zdCBvdmVycmlk
ZTsKQEAgLTIzMiw4ICsyNTAsMTggQEAgY2xhc3MgUHJvZ3JhbUQzRCA6IHB1YmxpYyBQcm9ncmFt
SW1wbAogCiAgICAgdm9pZCBzZXRVbmlmb3JtQmxvY2tCaW5kaW5nKEdMdWludCB1bmlmb3JtQmxv
Y2tJbmRleCwgR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcpIG92ZXJyaWRlOwogCi0gICAgY29u
c3QgVW5pZm9ybVN0b3JhZ2VEM0QgJmdldFZlcnRleFVuaWZvcm1TdG9yYWdlKCkgY29uc3QgeyBy
ZXR1cm4gKm1WZXJ0ZXhVbmlmb3JtU3RvcmFnZTsgfQotICAgIGNvbnN0IFVuaWZvcm1TdG9yYWdl
RDNEICZnZXRGcmFnbWVudFVuaWZvcm1TdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gKm1GcmFnbWVu
dFVuaWZvcm1TdG9yYWdlOyB9CisgICAgY29uc3QgVW5pZm9ybVN0b3JhZ2VEM0QgJmdldFZlcnRl
eFVuaWZvcm1TdG9yYWdlKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAqbVZlcnRleFVu
aWZvcm1TdG9yYWdlLmdldCgpOworICAgIH0KKyAgICBjb25zdCBVbmlmb3JtU3RvcmFnZUQzRCAm
Z2V0RnJhZ21lbnRVbmlmb3JtU3RvcmFnZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
Km1GcmFnbWVudFVuaWZvcm1TdG9yYWdlLmdldCgpOworICAgIH0KKyAgICBjb25zdCBVbmlmb3Jt
U3RvcmFnZUQzRCAmZ2V0Q29tcHV0ZVVuaWZvcm1TdG9yYWdlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIHJldHVybiAqbUNvbXB1dGVVbmlmb3JtU3RvcmFnZS5nZXQoKTsKKyAgICB9CiAKICAgICB1
bnNpZ25lZCBpbnQgZ2V0U2VyaWFsKCkgY29uc3Q7CiAKQEAgLTI0OCw2ICsyNzYsMTIgQEAgY2xh
c3MgUHJvZ3JhbUQzRCA6IHB1YmxpYyBQcm9ncmFtSW1wbAogICAgIGJvb2wgaXNTYW1wbGVyTWFw
cGluZ0RpcnR5KCkgeyByZXR1cm4gbURpcnR5U2FtcGxlck1hcHBpbmc7IH0KIAogICBwcml2YXRl
OgorICAgIC8vIFRoZXNlIGZvcndhcmQtZGVjbGFyZWQgdGFza3MgYXJlIHVzZWQgZm9yIG11bHRp
LXRocmVhZCBzaGFkZXIgY29tcGlsZXMuCisgICAgY2xhc3MgR2V0RXhlY3V0YWJsZVRhc2s7Cisg
ICAgY2xhc3MgR2V0VmVydGV4RXhlY3V0YWJsZVRhc2s7CisgICAgY2xhc3MgR2V0UGl4ZWxFeGVj
dXRhYmxlVGFzazsKKyAgICBjbGFzcyBHZXRHZW9tZXRyeUV4ZWN1dGFibGVUYXNrOworCiAgICAg
Y2xhc3MgVmVydGV4RXhlY3V0YWJsZQogICAgIHsKICAgICAgIHB1YmxpYzoKQEAgLTM0MiwzMSAr
Mzc2LDM0IEBAIGNsYXNzIFByb2dyYW1EM0QgOiBwdWJsaWMgUHJvZ3JhbUltcGwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0VW5pZm9ybVR5cGUpOwogCiAgICAgTGlu
a1Jlc3VsdCBjb21waWxlUHJvZ3JhbUV4ZWN1dGFibGVzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUg
JmRhdGEsIGdsOjpJbmZvTG9nICZpbmZvTG9nKTsKKyAgICBMaW5rUmVzdWx0IGNvbXBpbGVDb21w
dXRlRXhlY3V0YWJsZShnbDo6SW5mb0xvZyAmaW5mb0xvZyk7CiAKLSAgICB2b2lkIGdhdGhlclRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoY29uc3QgVmFyeWluZ1BhY2tpbmcgJnZhcnlpbmdzKTsK
KyAgICB2b2lkIGdhdGhlclRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoY29uc3QgZ2w6OlZhcnlp
bmdQYWNraW5nICZ2YXJ5aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgQnVpbHRpbkluZm8gJmJ1aWx0aW5zKTsKICAgICBEM0RVbmlmb3JtICpnZXRE
M0RVbmlmb3JtQnlOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKTsKICAgICBEM0RVbmlmb3Jt
ICpnZXREM0RVbmlmb3JtRnJvbUxvY2F0aW9uKEdMaW50IGxvY2F0aW9uKTsKIAogICAgIHZvaWQg
aW5pdEF0dHJpYkxvY2F0aW9uc1RvRDNEU2VtYW50aWMoKTsKIAogICAgIHZvaWQgcmVzZXQoKTsK
LSAgICB2b2lkIGFzc2lnblVuaWZvcm1CbG9ja1JlZ2lzdGVycygpOworICAgIHZvaWQgZW5zdXJl
VW5pZm9ybUJsb2Nrc0luaXRpYWxpemVkKCk7CiAKLSAgICB2b2lkIGluaXRVbmlmb3JtQmxvY2tJ
bmZvKCk7CisgICAgdm9pZCBpbml0VW5pZm9ybUJsb2NrSW5mbyhjb25zdCBnbDo6U2hhZGVyICpz
aGFkZXIpOwogICAgIHNpemVfdCBnZXRVbmlmb3JtQmxvY2tJbmZvKGNvbnN0IHNoOjpJbnRlcmZh
Y2VCbG9jayAmaW50ZXJmYWNlQmxvY2spOwogCiAgICAgUmVuZGVyZXJEM0QgKm1SZW5kZXJlcjsK
ICAgICBEeW5hbWljSExTTCAqbUR5bmFtaWNITFNMOwogCi0gICAgc3RkOjp2ZWN0b3I8VmVydGV4
RXhlY3V0YWJsZSAqPiBtVmVydGV4RXhlY3V0YWJsZXM7Ci0gICAgc3RkOjp2ZWN0b3I8UGl4ZWxF
eGVjdXRhYmxlICo+IG1QaXhlbEV4ZWN1dGFibGVzOwotICAgIHN0ZDo6dmVjdG9yPFNoYWRlckV4
ZWN1dGFibGVEM0QgKj4gbUdlb21ldHJ5RXhlY3V0YWJsZXM7CisgICAgc3RkOjp2ZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPFZlcnRleEV4ZWN1dGFibGU+PiBtVmVydGV4RXhlY3V0YWJsZXM7CisgICAg
c3RkOjp2ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPFBpeGVsRXhlY3V0YWJsZT4+IG1QaXhlbEV4ZWN1
dGFibGVzOworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxTaGFkZXJFeGVjdXRhYmxl
RDNEPj4gbUdlb21ldHJ5RXhlY3V0YWJsZXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRlckV4
ZWN1dGFibGVEM0Q+IG1Db21wdXRlRXhlY3V0YWJsZTsKIAogICAgIHN0ZDo6c3RyaW5nIG1WZXJ0
ZXhITFNMOwotICAgIEQzRENvbXBpbGVyV29ya2Fyb3VuZHMgbVZlcnRleFdvcmthcm91bmRzOwor
ICAgIGFuZ2xlOjpDb21waWxlcldvcmthcm91bmRzRDNEIG1WZXJ0ZXhXb3JrYXJvdW5kczsKIAog
ICAgIHN0ZDo6c3RyaW5nIG1QaXhlbEhMU0w7Ci0gICAgRDNEQ29tcGlsZXJXb3JrYXJvdW5kcyBt
UGl4ZWxXb3JrYXJvdW5kczsKKyAgICBhbmdsZTo6Q29tcGlsZXJXb3JrYXJvdW5kc0QzRCBtUGl4
ZWxXb3JrYXJvdW5kczsKICAgICBib29sIG1Vc2VzRnJhZ0RlcHRoOwogICAgIHN0ZDo6dmVjdG9y
PFBpeGVsU2hhZGVyT3V0cHV0VmFyaWFibGU+IG1QaXhlbFNoYWRlcktleTsKIApAQCAtMzc4LDEz
ICs0MTUsMTYgQEAgY2xhc3MgUHJvZ3JhbUQzRCA6IHB1YmxpYyBQcm9ncmFtSW1wbAogICAgIGJv
b2wgbVVzZXNQb2ludFNpemU7CiAgICAgYm9vbCBtVXNlc0ZsYXRJbnRlcnBvbGF0aW9uOwogCi0g
ICAgVW5pZm9ybVN0b3JhZ2VEM0QgKm1WZXJ0ZXhVbmlmb3JtU3RvcmFnZTsKLSAgICBVbmlmb3Jt
U3RvcmFnZUQzRCAqbUZyYWdtZW50VW5pZm9ybVN0b3JhZ2U7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFVuaWZvcm1TdG9yYWdlRDNEPiBtVmVydGV4VW5pZm9ybVN0b3JhZ2U7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFVuaWZvcm1TdG9yYWdlRDNEPiBtRnJhZ21lbnRVbmlmb3JtU3RvcmFnZTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8VW5pZm9ybVN0b3JhZ2VEM0Q+IG1Db21wdXRlVW5pZm9ybVN0b3JhZ2U7
CiAKICAgICBzdGQ6OnZlY3RvcjxTYW1wbGVyPiBtU2FtcGxlcnNQUzsKICAgICBzdGQ6OnZlY3Rv
cjxTYW1wbGVyPiBtU2FtcGxlcnNWUzsKKyAgICBzdGQ6OnZlY3RvcjxTYW1wbGVyPiBtU2FtcGxl
cnNDUzsKICAgICBHTHVpbnQgbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2U7CiAgICAgR0x1aW50IG1V
c2VkUGl4ZWxTYW1wbGVyUmFuZ2U7CisgICAgR0x1aW50IG1Vc2VkQ29tcHV0ZVNhbXBsZXJSYW5n
ZTsKICAgICBib29sIG1EaXJ0eVNhbXBsZXJNYXBwaW5nOwogCiAgICAgLy8gQ2FjaGUgZm9yIGdl
dFBpeGVsRXhlY3V0YWJsZUZvckZyYW1lYnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNELmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJE
M0QuY3BwCmluZGV4IGU3ZTIyZWZjNTE1NTVjNmYxYzFkOTkxMWI5MDE5NDA4MjRjNmRjOGUuLmE1
MzUzMTZmZTQ2MTJlZTNjODBkMGRmYjMyNTBhMjJkM2E2MzBmZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJEM0Qu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvUmVuZGVyZXJEM0QuY3BwCkBAIC0zNSw3ICszNSw4IEBAIFJlbmRlcmVyRDNEOjpSZW5kZXJl
ckQzRChlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCiAgICAgICBtQ2Fwc0luaXRpYWxpemVkKGZhbHNl
KSwKICAgICAgIG1Xb3JrYXJvdW5kc0luaXRpYWxpemVkKGZhbHNlKSwKICAgICAgIG1EaXNqb2lu
dChmYWxzZSksCi0gICAgICBtRGV2aWNlTG9zdChmYWxzZSkKKyAgICAgIG1EZXZpY2VMb3N0KGZh
bHNlKSwKKyAgICAgIG1Xb3JrZXJUaHJlYWRQb29sKDQpCiB7CiB9CiAKQEAgLTEwNiw2ICsxMDcs
OCBAQCBnbDo6RXJyb3IgUmVuZGVyZXJEM0Q6OmFwcGx5VGV4dHVyZXMoR0xJbXBsRmFjdG9yeSAq
aW1wbEZhY3RvcnksCiAKICAgICBBU1NFUlQoIXByb2dyYW1EM0QtPmlzU2FtcGxlck1hcHBpbmdE
aXJ0eSgpKTsKIAorICAgIC8vIFRPRE8oam1hZGlsbCk6IFVzZSB0aGUgUHJvZ3JhbSdzIHNhbXBs
ZXIgYmluZGluZ3MuCisKICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlclJhbmdlID0gcHJvZ3JhbUQz
RC0+Z2V0VXNlZFNhbXBsZXJSYW5nZShzaGFkZXJUeXBlKTsKICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBzYW1wbGVySW5kZXggPSAwOyBzYW1wbGVySW5kZXggPCBzYW1wbGVyUmFuZ2U7IHNhbXBsZXJJ
bmRleCsrKQogICAgIHsKQEAgLTE3OSwxMCArMTgyLDggQEAgYm9vbCBSZW5kZXJlckQzRDo6c2tp
cERyYXcoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgR0xlbnVtIGRyYXdNb2RlKQogICAg
ICAgICAvLyB1bmRlZmluZWQgd2hlbiBub3Qgd3JpdHRlbiwganVzdCBza2lwIGRyYXdpbmcgdG8g
YXZvaWQgdW5leHBlY3RlZCByZXN1bHRzLgogICAgICAgICBpZiAoIXVzZXNQb2ludFNpemUgJiYg
IXN0YXRlLmlzVHJhbnNmb3JtRmVlZGJhY2tBY3RpdmVVbnBhdXNlZCgpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICAvLyBUaGlzIGlzIHN0aWN0bHkgc3BlYWtpbmcgbm90IGFuIGVycm9yLCBidXQg
ZGV2ZWxvcGVycyBzaG91bGQgYmUKLSAgICAgICAgICAgIC8vIG5vdGlmaWVkIG9mIHJpc2tpbmcg
dW5kZWZpbmVkIGJlaGF2aW9yLgotICAgICAgICAgICAgRVJSKCJQb2ludCByZW5kZXJpbmcgd2l0
aG91dCB3cml0aW5nIHRvIGdsX1BvaW50U2l6ZS4iKTsKLQorICAgICAgICAgICAgLy8gTm90aWZ5
IGRldmVsb3BlcnMgb2Ygcmlza2luZyB1bmRlZmluZWQgYmVoYXZpb3IuCisgICAgICAgICAgICBX
QVJOKCkgPDwgIlBvaW50IHJlbmRlcmluZyB3aXRob3V0IHdyaXRpbmcgdG8gZ2xfUG9pbnRTaXpl
LiI7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTI1NSwx
OSArMjU2LDE5IEBAIGdsOjpUZXh0dXJlICpSZW5kZXJlckQzRDo6Z2V0SW5jb21wbGV0ZVRleHR1
cmUoR0xJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksIEdMZW51CiAgICAgICAgIC8vIFNraXAgdGhl
IEFQSSBsYXllciB0byBhdm9pZCBuZWVkaW5nIHRvIHBhc3MgdGhlIENvbnRleHQgYW5kIG1lc3Mg
d2l0aCBkaXJ0eSBiaXRzLgogICAgICAgICBnbDo6VGV4dHVyZSAqdCA9CiAgICAgICAgICAgICBu
ZXcgZ2w6OlRleHR1cmUoaW1wbEZhY3RvcnksIHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6
bWF4KCksIGNyZWF0ZVR5cGUpOwotICAgICAgICB0LT5zZXRTdG9yYWdlKGNyZWF0ZVR5cGUsIDEs
IEdMX1JHQkE4LCBjb2xvclNpemUpOworICAgICAgICB0LT5zZXRTdG9yYWdlKG51bGxwdHIsIGNy
ZWF0ZVR5cGUsIDEsIEdMX1JHQkE4LCBjb2xvclNpemUpOwogICAgICAgICBpZiAodHlwZSA9PSBH
TF9URVhUVVJFX0NVQkVfTUFQKQogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKEdMZW51bSBm
YWNlID0gR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOyBmYWNlIDw9IEdMX1RFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWjsgZmFjZSsrKQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHQtPmdldEltcGxlbWVudGF0aW9uKCktPnNldFN1YkltYWdlKGZhY2UsIDAsIGFyZWEsIEdM
X1JHQkE4LCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVucGFjaywgY29sb3IpOworICAgICAgICAgICAgICAgIHQt
PmdldEltcGxlbWVudGF0aW9uKCktPnNldFN1YkltYWdlKG51bGxwdHIsIGZhY2UsIDAsIGFyZWEs
IEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIHVucGFjaywgY29sb3IpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgdC0+Z2V0SW1w
bGVtZW50YXRpb24oKS0+c2V0U3ViSW1hZ2UoY3JlYXRlVHlwZSwgMCwgYXJlYSwgR0xfUkdCQTgs
IEdMX1VOU0lHTkVEX0JZVEUsIHVucGFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbG9yKTsKKyAgICAgICAgICAgIHQtPmdldEltcGxlbWVudGF0
aW9uKCktPnNldFN1YkltYWdlKG51bGxwdHIsIGNyZWF0ZVR5cGUsIDAsIGFyZWEsIEdMX1JHQkE4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5T
SUdORURfQllURSwgdW5wYWNrLCBjb2xvcik7CiAgICAgICAgIH0KICAgICAgICAgbUluY29tcGxl
dGVUZXh0dXJlc1t0eXBlXS5zZXQodCk7CiAgICAgfQpAQCAtMzY5LDQgKzM3MCw5IEBAIGNvbnN0
IGdsOjpMaW1pdGF0aW9ucyAmUmVuZGVyZXJEM0Q6OmdldE5hdGl2ZUxpbWl0YXRpb25zKCkgY29u
c3QKICAgICByZXR1cm4gbU5hdGl2ZUxpbWl0YXRpb25zOwogfQogCithbmdsZTo6V29ya2VyVGhy
ZWFkUG9vbCAqUmVuZGVyZXJEM0Q6OmdldFdvcmtlclRocmVhZFBvb2woKQoreworICAgIHJldHVy
biAmbVdvcmtlclRocmVhZFBvb2w7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5k
ZXJlckQzRC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9SZW5kZXJlckQzRC5oCmluZGV4IDkwMjgyY2E2YjY0NTE2YmFkZWY3ODdjYWZiZWQxNzRh
NDA3ODFmYTYuLmRiYTU0NTMwOGIzMzZlYWYwNmU3MWM0NTliNDljMzQxMzAzMmIzNzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
UmVuZGVyZXJEM0QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNELmgKQEAgLTksNiArOSw4IEBACiAjaWZuZGVmIExJQkFO
R0xFX1JFTkRFUkVSX0QzRF9SRU5ERVJFUkQzRF9IXwogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJF
Ul9EM0RfUkVOREVSRVJEM0RfSF8KIAorI2luY2x1ZGUgPGFycmF5PgorCiAjaW5jbHVkZSAiY29t
bW9uL2RlYnVnLmgiCiAjaW5jbHVkZSAiY29tbW9uL01lbW9yeUJ1ZmZlci5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL0NvbnRleHRTdGF0ZS5oIgpAQCAtMTYsMTEgKzE4LDkgQEAKICNpbmNsdWRlICJs
aWJBTkdMRS9mb3JtYXR1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9W
ZXJ0ZXhEYXRhTWFuYWdlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9mb3Jt
YXR1dGlsc0QzRC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9Xb3JrYXJvdW5k
c0QzRC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1ZlcnNpb24uaCIKLQotLy9GSVhNRShqbWFkaWxs
KTogc3RkOjphcnJheSBpcyBjdXJyZW50bHkgcHJvaGliaXRlZCBieSBDaHJvbWl1bSBzdHlsZSBn
dWlkZQotI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgImxpYkFOR0xFL1dvcmtlclRocmVhZC5o
IgorI2luY2x1ZGUgInBsYXRmb3JtL1dvcmthcm91bmRzRDNELmgiCiAKIG5hbWVzcGFjZSBlZ2wK
IHsKQEAgLTU1LDE0ICs1NSw2IEBAIHN0cnVjdCBUcmFuc2xhdGVkSW5kZXhEYXRhOwogY2xhc3Mg
VW5pZm9ybVN0b3JhZ2VEM0Q7CiBjbGFzcyBWZXJ0ZXhCdWZmZXI7CiAKLWVudW0gU2hhZGVyVHlw
ZQotewotICAgIFNIQURFUl9WRVJURVgsCi0gICAgU0hBREVSX1BJWEVMLAotICAgIFNIQURFUl9H
RU9NRVRSWSwKLSAgICBTSEFERVJfVFlQRV9NQVgKLX07Ci0KIHN0cnVjdCBEZXZpY2VJZGVudGlm
aWVyCiB7CiAgICAgVUlOVCBWZW5kb3JJZDsKQEAgLTc4LDYgKzcwLDE1IEBAIGVudW0gUmVuZGVy
ZXJDbGFzcwogICAgIFJFTkRFUkVSX0QzRDkKIH07CiAKK2VudW0gU2hhZGVyVHlwZQoreworICAg
IFNIQURFUl9WRVJURVgsCisgICAgU0hBREVSX1BJWEVMLAorICAgIFNIQURFUl9HRU9NRVRSWSwK
KyAgICBTSEFERVJfQ09NUFVURSwKKyAgICBTSEFERVJfVFlQRV9NQVgKK307CisKIC8vIFVzZWZ1
bCBmb3IgdW5pdCB0ZXN0aW5nCiBjbGFzcyBCdWZmZXJGYWN0b3J5RDNEIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCiB7CkBAIC05MSw4ICs5MiwxMiBAQCBjbGFzcyBCdWZmZXJGYWN0b3J5RDNEIDogYW5n
bGU6Ok5vbkNvcHlhYmxlCiAgICAgLy8gVE9ETyhqbWFkaWxsKTogYWRkIFZlcnRleEZvcm1hdENh
cHMKICAgICB2aXJ0dWFsIFZlcnRleENvbnZlcnNpb25UeXBlIGdldFZlcnRleENvbnZlcnNpb25U
eXBlKGdsOjpWZXJ0ZXhGb3JtYXRUeXBlIHZlcnRleEZvcm1hdFR5cGUpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIEdMZW51bSBnZXRWZXJ0ZXhDb21wb25lbnRUeXBlKGdsOjpWZXJ0ZXhGb3JtYXRU
eXBlIHZlcnRleEZvcm1hdFR5cGUpIGNvbnN0ID0gMDsKKworICAgIC8vIFdhcm5pbmc6IHlvdSBz
aG91bGQgZW5zdXJlIGJpbmRpbmcgcmVhbGx5IG1hdGNoZXMgYXR0cmliLmJpbmRpbmdJbmRleCBi
ZWZvcmUgdXNpbmcgdGhpcworICAgIC8vIGZ1bmN0aW9uLgogICAgIHZpcnR1YWwgZ2w6OkVycm9y
T3JSZXN1bHQ8dW5zaWduZWQgaW50PiBnZXRWZXJ0ZXhTcGFjZVJlcXVpcmVkKAogICAgICAgICBj
b25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAgICAgIGNvbnN0IGdsOjpWZXJ0
ZXhCaW5kaW5nICZiaW5kaW5nLAogICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICBHTHNp
emVpIGluc3RhbmNlcykgY29uc3QgPSAwOwogfTsKQEAgLTEyNyw5ICsxMzIsMTcgQEAgY2xhc3Mg
UmVuZGVyZXJEM0QgOiBwdWJsaWMgQnVmZmVyRmFjdG9yeUQzRAogCiAgICAgdmlydHVhbCBTd2Fw
Q2hhaW5EM0QgKmNyZWF0ZVN3YXBDaGFpbihOYXRpdmVXaW5kb3dEM0QgKm5hdGl2ZVdpbmRvdywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzaGFyZUhh
bmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElVbmtub3du
ICpkM2RUZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgb3JpZW50YXRpb24pID0gMDsKKyAgICB2aXJ0
dWFsIGVnbDo6RXJyb3IgZ2V0RDNEVGV4dHVyZUluZm8oSVVua25vd24gKmQzZFRleHR1cmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCAqd2lkdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCAqaGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKmZib0Zvcm1h
dCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZWdsOjpFcnJvciB2YWxpZGF0ZVNoYXJlSGFuZGxl
KGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSEFORExFIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBj
b25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBzZXRTYW1wbGVyU3RhdGUoZ2w6OlNh
bXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgZ2w6OlRleHR1cmUgKnRleHR1cmUsIGNvbnN0IGds
OjpTYW1wbGVyU3RhdGUgJnNhbXBsZXIpID0gMDsKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBzZXRU
ZXh0dXJlKGdsOjpTYW1wbGVyVHlwZSB0eXBlLCBpbnQgaW5kZXgsIGdsOjpUZXh0dXJlICp0ZXh0
dXJlKSA9IDA7CkBAIC0xNDcsNyArMTYwLDcgQEAgY2xhc3MgUmVuZGVyZXJEM0QgOiBwdWJsaWMg
QnVmZmVyRmFjdG9yeUQzRAogCiAgICAgdmlydHVhbCBpbnQgZ2V0TWFqb3JTaGFkZXJNb2RlbCgp
IGNvbnN0ID0gMDsKIAotICAgIGNvbnN0IFdvcmthcm91bmRzRDNEICZnZXRXb3JrYXJvdW5kcygp
IGNvbnN0OworICAgIGNvbnN0IGFuZ2xlOjpXb3JrYXJvdW5kc0QzRCAmZ2V0V29ya2Fyb3VuZHMo
KSBjb25zdDsKIAogICAgIC8vIFBpeGVsIG9wZXJhdGlvbnMKICAgICB2aXJ0dWFsIGdsOjpFcnJv
ciBjb3B5SW1hZ2UyRChjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBn
bDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKQEAgLTE2NSw2ICsx
NzgsNyBAQCBjbGFzcyBSZW5kZXJlckQzRCA6IHB1YmxpYyBCdWZmZXJGYWN0b3J5RDNECiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RGb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFn
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFRhcmdldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkZXN0TGV2ZWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tGbGlwWSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCkBA
IC0xOTAsOCArMjA0LDEwIEBAIGNsYXNzIFJlbmRlcmVyRDNEIDogcHVibGljIEJ1ZmZlckZhY3Rv
cnlEM0QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclR5
cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPEQzRFZhcnlpbmc+ICZzdHJlYW1PdXRWYXJ5aW5ncywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2VwYXJhdGVkT3V0cHV0QnVmZmVy
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEQzRENv
bXBpbGVyV29ya2Fyb3VuZHMgJndvcmthcm91bmRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgYW5nbGU6OkNvbXBpbGVyV29ya2Fyb3VuZHNEM0QgJndv
cmthcm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hh
ZGVyRXhlY3V0YWJsZUQzRCAqKm91dEV4ZWN0dWFibGUpID0gMDsKKyAgICB2aXJ0dWFsIGdsOjpF
cnJvciBlbnN1cmVITFNMQ29tcGlsZXJJbml0aWFsaXplZCgpICAgICAgICAgICAgICAgICAgICAg
ICAgICA9IDA7CisKICAgICB2aXJ0dWFsIFVuaWZvcm1TdG9yYWdlRDNEICpjcmVhdGVVbmlmb3Jt
U3RvcmFnZShzaXplX3Qgc3RvcmFnZVNpemUpID0gMDsKIAogICAgIC8vIEltYWdlIG9wZXJhdGlv
bnMKQEAgLTI1Miw2ICsyNjgsOCBAQCBjbGFzcyBSZW5kZXJlckQzRCA6IHB1YmxpYyBCdWZmZXJG
YWN0b3J5RDNECiAKICAgICB2aXJ0dWFsIGdsOjpWZXJzaW9uIGdldE1heFN1cHBvcnRlZEVTVmVy
c2lvbigpIGNvbnN0ID0gMDsKIAorICAgIGFuZ2xlOjpXb3JrZXJUaHJlYWRQb29sICpnZXRXb3Jr
ZXJUaHJlYWRQb29sKCk7CisKICAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBnZXRMVUlE
KExVSUQgKmFkYXB0ZXJMdWlkKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGdlbmVyYXRl
Q2FwcyhnbDo6Q2FwcyAqb3V0Q2FwcywKQEAgLTI4Nyw3ICszMDUsNyBAQCBjbGFzcyBSZW5kZXJl
ckQzRCA6IHB1YmxpYyBCdWZmZXJGYWN0b3J5RDNECiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBGcmFtZWJ1ZmZlclRleHR1cmVBcnJheSAqb3V0VGV4dHVyZUFycmF5KTsK
ICAgICBnbDo6VGV4dHVyZSAqZ2V0SW5jb21wbGV0ZVRleHR1cmUoR0xJbXBsRmFjdG9yeSAqaW1w
bEZhY3RvcnksIEdMZW51bSB0eXBlKTsKIAotICAgIHZpcnR1YWwgV29ya2Fyb3VuZHNEM0QgZ2Vu
ZXJhdGVXb3JrYXJvdW5kcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGFuZ2xlOjpXb3JrYXJv
dW5kc0QzRCBnZW5lcmF0ZVdvcmthcm91bmRzKCkgY29uc3QgPSAwOwogCiAgICAgbXV0YWJsZSBi
b29sIG1DYXBzSW5pdGlhbGl6ZWQ7CiAgICAgbXV0YWJsZSBnbDo6Q2FwcyBtTmF0aXZlQ2FwczsK
QEAgLTI5OCwxMCArMzE2LDEyIEBAIGNsYXNzIFJlbmRlcmVyRDNEIDogcHVibGljIEJ1ZmZlckZh
Y3RvcnlEM0QKICAgICBnbDo6VGV4dHVyZU1hcCBtSW5jb21wbGV0ZVRleHR1cmVzOwogCiAgICAg
bXV0YWJsZSBib29sIG1Xb3JrYXJvdW5kc0luaXRpYWxpemVkOwotICAgIG11dGFibGUgV29ya2Fy
b3VuZHNEM0QgbVdvcmthcm91bmRzOworICAgIG11dGFibGUgYW5nbGU6Oldvcmthcm91bmRzRDNE
IG1Xb3JrYXJvdW5kczsKIAogICAgIGJvb2wgbURpc2pvaW50OwogICAgIGJvb2wgbURldmljZUxv
c3Q7CisKKyAgICBhbmdsZTo6V29ya2VyVGhyZWFkUG9vbCBtV29ya2VyVGhyZWFkUG9vbDsKIH07
CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TaGFkZXJEM0QuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TaGFkZXJEM0QuY3BwCmluZGV4
IDAyNDg5MzEyY2JlMDgzZDAyYWQxYTQ5NTAzMWE3NDI1YTdlM2YzZDYuLmY1YTRiODhmMDM1MGE1
MmRiODhhNTkzYWIzOTdkZTc3NTAwOTkxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU2hhZGVyRDNELmNwcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRlckQzRC5j
cHAKQEAgLTI5LDYgKzI5LDkgQEAgY29uc3QgY2hhciAqR2V0U2hhZGVyVHlwZVN0cmluZyhHTGVu
dW0gdHlwZSkKICAgICAgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVI6CiAgICAgICAgICAgICBy
ZXR1cm4gIkZSQUdNRU5UIjsKIAorICAgICAgICBjYXNlIEdMX0NPTVBVVEVfU0hBREVSOgorICAg
ICAgICAgICAgcmV0dXJuICJDT01QVVRFIjsKKwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgIHJldHVybiAiIjsKQEAgLTQwLDcgKzQzLDcg
QEAgY29uc3QgY2hhciAqR2V0U2hhZGVyVHlwZVN0cmluZyhHTGVudW0gdHlwZSkKIG5hbWVzcGFj
ZSByeAogewogCi1TaGFkZXJEM0Q6OlNoYWRlckQzRChjb25zdCBnbDo6U2hhZGVyU3RhdGUgJmRh
dGEsIGNvbnN0IFdvcmthcm91bmRzRDNEICZ3b3JrYXJvdW5kcykKK1NoYWRlckQzRDo6U2hhZGVy
RDNEKGNvbnN0IGdsOjpTaGFkZXJTdGF0ZSAmZGF0YSwgY29uc3QgYW5nbGU6Oldvcmthcm91bmRz
RDNEICZ3b3JrYXJvdW5kcykKICAgICA6IFNoYWRlckltcGwoZGF0YSksIG1BZGRpdGlvbmFsT3B0
aW9ucygwKQogewogICAgIHVuY29tcGlsZSgpOwpAQCAtMTAxLDcgKzEwNCw3IEBAIHZvaWQgU2hh
ZGVyRDNEOjp1bmNvbXBpbGUoKQogICAgIG1EZWJ1Z0luZm8uY2xlYXIoKTsKIH0KIAotdm9pZCBT
aGFkZXJEM0Q6OmdlbmVyYXRlV29ya2Fyb3VuZHMoRDNEQ29tcGlsZXJXb3JrYXJvdW5kcyAqd29y
a2Fyb3VuZHMpIGNvbnN0Cit2b2lkIFNoYWRlckQzRDo6Z2VuZXJhdGVXb3JrYXJvdW5kcyhhbmds
ZTo6Q29tcGlsZXJXb3JrYXJvdW5kc0QzRCAqd29ya2Fyb3VuZHMpIGNvbnN0CiB7CiAgICAgaWYg
KG1Vc2VzRGlzY2FyZFJld3JpdGluZykKICAgICB7CkBAIC0xOTIsNyArMTk1LDcgQEAgYm9vbCBT
aGFkZXJEM0Q6OnBvc3RUcmFuc2xhdGVDb21waWxlKGdsOjpDb21waWxlciAqY29tcGlsZXIsIHN0
ZDo6c3RyaW5nICppbmZvTG8KICAgICBtVXNlc1BvaW50U2l6ZSAgICAgICAgICAgICA9IHRyYW5z
bGF0ZWRTb3VyY2UuZmluZCgiR0xfVVNFU19QT0lOVF9TSVpFIikgIT0gc3RkOjpzdHJpbmc6Om5w
b3M7CiAgICAgbVVzZXNQb2ludENvb3JkICAgICAgICAgICAgPSB0cmFuc2xhdGVkU291cmNlLmZp
bmQoIkdMX1VTRVNfUE9JTlRfQ09PUkQiKSAhPSBzdGQ6OnN0cmluZzo6bnBvczsKICAgICBtVXNl
c0RlcHRoUmFuZ2UgICAgICAgICAgICA9IHRyYW5zbGF0ZWRTb3VyY2UuZmluZCgiR0xfVVNFU19E
RVBUSF9SQU5HRSIpICE9IHN0ZDo6c3RyaW5nOjpucG9zOwotICAgIG1Vc2VzRnJhZ0RlcHRoID0g
dHJhbnNsYXRlZFNvdXJjZS5maW5kKCJHTF9VU0VTX0ZSQUdfREVQVEgiKSAhPSBzdGQ6OnN0cmlu
Zzo6bnBvczsKKyAgICBtVXNlc0ZyYWdEZXB0aCAgICAgICAgICAgICA9IHRyYW5zbGF0ZWRTb3Vy
Y2UuZmluZCgiR0xfVVNFU19GUkFHX0RFUFRIIikgIT0gc3RkOjpzdHJpbmc6Om5wb3M7CiAgICAg
bVVzZXNEaXNjYXJkUmV3cml0aW5nID0KICAgICAgICAgdHJhbnNsYXRlZFNvdXJjZS5maW5kKCJB
TkdMRV9VU0VTX0RJU0NBUkRfUkVXUklUSU5HIikgIT0gc3RkOjpzdHJpbmc6Om5wb3M7CiAgICAg
bVVzZXNOZXN0ZWRCcmVhayAgPSB0cmFuc2xhdGVkU291cmNlLmZpbmQoIkFOR0xFX1VTRVNfTkVT
VEVEX0JSRUFLIikgIT0gc3RkOjpzdHJpbmc6Om5wb3M7CkBAIC0yMDEsNyArMjA0LDcgQEAgYm9v
bCBTaGFkZXJEM0Q6OnBvc3RUcmFuc2xhdGVDb21waWxlKGdsOjpDb21waWxlciAqY29tcGlsZXIs
IHN0ZDo6c3RyaW5nICppbmZvTG8KIAogICAgIFNoSGFuZGxlIGNvbXBpbGVySGFuZGxlID0gY29t
cGlsZXItPmdldENvbXBpbGVySGFuZGxlKG1EYXRhLmdldFNoYWRlclR5cGUoKSk7CiAKLSAgICBt
VW5pZm9ybVJlZ2lzdGVyTWFwID0gR2V0VW5pZm9ybVJlZ2lzdGVyTWFwKFNoR2V0VW5pZm9ybVJl
Z2lzdGVyTWFwKGNvbXBpbGVySGFuZGxlKSk7CisgICAgbVVuaWZvcm1SZWdpc3Rlck1hcCA9IEdl
dFVuaWZvcm1SZWdpc3Rlck1hcChzaDo6R2V0VW5pZm9ybVJlZ2lzdGVyTWFwKGNvbXBpbGVySGFu
ZGxlKSk7CiAKICAgICBmb3IgKGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmaW50ZXJmYWNlQmxv
Y2sgOiBtRGF0YS5nZXRJbnRlcmZhY2VCbG9ja3MoKSkKICAgICB7CkBAIC0yMDksOCArMjEyLDcg
QEAgYm9vbCBTaGFkZXJEM0Q6OnBvc3RUcmFuc2xhdGVDb21waWxlKGdsOjpDb21waWxlciAqY29t
cGlsZXIsIHN0ZDo6c3RyaW5nICppbmZvTG8KICAgICAgICAgewogICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PigtMSk7CiAgICAgICAgICAg
ICBib29sIGJsb2NrUmVnaXN0ZXJSZXN1bHQgPQotICAgICAgICAgICAgICAgIFNoR2V0SW50ZXJm
YWNlQmxvY2tSZWdpc3Rlcihjb21waWxlckhhbmRsZSwgaW50ZXJmYWNlQmxvY2submFtZSwgJmlu
ZGV4KTsKLSAgICAgICAgICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUoYmxvY2tSZWdpc3Rl
clJlc3VsdCk7CisgICAgICAgICAgICAgICAgc2g6OkdldEludGVyZmFjZUJsb2NrUmVnaXN0ZXIo
Y29tcGlsZXJIYW5kbGUsIGludGVyZmFjZUJsb2NrLm5hbWUsICZpbmRleCk7CiAgICAgICAgICAg
ICBBU1NFUlQoYmxvY2tSZWdpc3RlclJlc3VsdCk7CiAKICAgICAgICAgICAgIG1JbnRlcmZhY2VC
bG9ja1JlZ2lzdGVyTWFwW2ludGVyZmFjZUJsb2NrLm5hbWVdID0gaW5kZXg7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRl
ckQzRC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9TaGFkZXJEM0QuaAppbmRleCA1ODdjMTIxNzMwNGRiNzZlOGE5ODZmYWRiNmFjOWU0ODRkNjI0
M2EwLi5kYzk5YWM0NGYzYjNkOGFiZjlmOTdiNDgzNWM2YjdjZDcxN2U1MTUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRl
ckQzRC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvU2hhZGVyRDNELmgKQEAgLTEzLDE4ICsxMywyMiBAQAogCiAjaW5jbHVkZSA8bWFwPgog
CituYW1lc3BhY2UgYW5nbGUKK3sKK3N0cnVjdCBDb21waWxlcldvcmthcm91bmRzRDNEOworc3Ry
dWN0IFdvcmthcm91bmRzRDNEOworfQorCiBuYW1lc3BhY2UgcngKIHsKIGNsYXNzIER5bmFtaWNI
TFNMOwogY2xhc3MgUmVuZGVyZXJEM0Q7Ci1zdHJ1Y3QgRDNEQ29tcGlsZXJXb3JrYXJvdW5kczsK
IHN0cnVjdCBEM0RVbmlmb3JtOwotc3RydWN0IFdvcmthcm91bmRzRDNEOwogCiBjbGFzcyBTaGFk
ZXJEM0QgOiBwdWJsaWMgU2hhZGVySW1wbAogewogICBwdWJsaWM6Ci0gICAgU2hhZGVyRDNEKGNv
bnN0IGdsOjpTaGFkZXJTdGF0ZSAmZGF0YSwgY29uc3QgV29ya2Fyb3VuZHNEM0QgJndvcmthcm91
bmRzKTsKKyAgICBTaGFkZXJEM0QoY29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRhLCBjb25zdCBh
bmdsZTo6V29ya2Fyb3VuZHNEM0QgJndvcmthcm91bmRzKTsKICAgICB2aXJ0dWFsIH5TaGFkZXJE
M0QoKTsKIAogICAgIC8vIFNoYWRlckltcGwgaW1wbGVtZW50YXRpb24KQEAgLTQ1LDcgKzQ5LDcg
QEAgY2xhc3MgU2hhZGVyRDNEIDogcHVibGljIFNoYWRlckltcGwKICAgICB1bnNpZ25lZCBpbnQg
Z2V0SW50ZXJmYWNlQmxvY2tSZWdpc3Rlcihjb25zdCBzdGQ6OnN0cmluZyAmYmxvY2tOYW1lKSBj
b25zdDsKICAgICB2b2lkIGFwcGVuZERlYnVnSW5mbyhjb25zdCBzdGQ6OnN0cmluZyAmaW5mbykg
Y29uc3QgeyBtRGVidWdJbmZvICs9IGluZm87IH0KIAotICAgIHZvaWQgZ2VuZXJhdGVXb3JrYXJv
dW5kcyhEM0RDb21waWxlcldvcmthcm91bmRzICp3b3JrYXJvdW5kcykgY29uc3Q7CisgICAgdm9p
ZCBnZW5lcmF0ZVdvcmthcm91bmRzKGFuZ2xlOjpDb21waWxlcldvcmthcm91bmRzRDNEICp3b3Jr
YXJvdW5kcykgY29uc3Q7CiAKICAgICBib29sIHVzZXNNdWx0aXBsZVJlbmRlclRhcmdldHMoKSBj
b25zdCB7IHJldHVybiBtVXNlc011bHRpcGxlUmVuZGVyVGFyZ2V0czsgfQogICAgIGJvb2wgdXNl
c0ZyYWdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1Vc2VzRnJhZ0NvbG9yOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1N1cmZh
Y2VEM0QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9TdXJmYWNlRDNELmNwcAppbmRleCAwOGUzZGZiNjc2NGIxZWI5OTBhNzM4ZDAxNzdlZDJi
OTU3NjVhNGZkLi42OTBlODZjMjQ3YzNkODg4YzNiMjdjMmFkNGE0ZGI5MmQyOGFhMmUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L1N1cmZhY2VEM0QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvU3VyZmFjZUQzRC5jcHAKQEAgLTI0LDM2ICsyNCw1NSBAQCBuYW1lc3Bh
Y2UgcngKIFN1cmZhY2VEM0Q6OlN1cmZhY2VEM0QoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0
YXRlLAogICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckQzRCAqcmVuZGVyZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCi0gICAgICAgICAgICAgICAgICAgICAgIEVH
TENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51
bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgY2xpZW50
QnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAm
YXR0cmlicykKICAgICA6IFN1cmZhY2VJbXBsKHN0YXRlKSwKICAgICAgIG1SZW5kZXJlcihyZW5k
ZXJlciksCiAgICAgICBtRGlzcGxheShkaXNwbGF5KSwKICAgICAgIG1GaXhlZFNpemUod2luZG93
ID09IG51bGxwdHIgfHwgYXR0cmlicy5nZXQoRUdMX0ZJWEVEX1NJWkVfQU5HTEUsIEVHTF9GQUxT
RSkgPT0gRUdMX1RSVUUpLAogICAgICAgbU9yaWVudGF0aW9uKHN0YXRpY19jYXN0PEVHTGludD4o
YXR0cmlicy5nZXQoRUdMX1NVUkZBQ0VfT1JJRU5UQVRJT05fQU5HTEUsIDApKSksCi0gICAgICBt
UmVuZGVyVGFyZ2V0Rm9ybWF0KGNvbmZpZy0+cmVuZGVyVGFyZ2V0Rm9ybWF0KSwKLSAgICAgIG1E
ZXB0aFN0ZW5jaWxGb3JtYXQoY29uZmlnLT5kZXB0aFN0ZW5jaWxGb3JtYXQpLAorICAgICAgbVJl
bmRlclRhcmdldEZvcm1hdChzdGF0ZS5jb25maWctPnJlbmRlclRhcmdldEZvcm1hdCksCisgICAg
ICBtRGVwdGhTdGVuY2lsRm9ybWF0KHN0YXRlLmNvbmZpZy0+ZGVwdGhTdGVuY2lsRm9ybWF0KSwK
ICAgICAgIG1Td2FwQ2hhaW4obnVsbHB0ciksCiAgICAgICBtU3dhcEludGVydmFsRGlydHkodHJ1
ZSksCi0gICAgICBtTmF0aXZlV2luZG93KHJlbmRlcmVyLT5jcmVhdGVOYXRpdmVXaW5kb3cod2lu
ZG93LCBjb25maWcsIGF0dHJpYnMpKSwKKyAgICAgIG1OYXRpdmVXaW5kb3cocmVuZGVyZXItPmNy
ZWF0ZU5hdGl2ZVdpbmRvdyh3aW5kb3csIHN0YXRlLmNvbmZpZywgYXR0cmlicykpLAogICAgICAg
bVdpZHRoKHN0YXRpY19jYXN0PEVHTGludD4oYXR0cmlicy5nZXQoRUdMX1dJRFRILCAwKSkpLAog
ICAgICAgbUhlaWdodChzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMuZ2V0KEVHTF9IRUlHSFQs
IDApKSksCiAgICAgICBtU3dhcEludGVydmFsKDEpLAotICAgICAgbVNoYXJlSGFuZGxlKHJlaW50
ZXJwcmV0X2Nhc3Q8SEFORExFICo+KHNoYXJlSGFuZGxlKSkKKyAgICAgIG1TaGFyZUhhbmRsZSgw
KSwKKyAgICAgIG1EM0RUZXh0dXJlKG51bGxwdHIpCiB7CiAgICAgaWYgKHdpbmRvdyAhPSBudWxs
cHRyICYmICFtRml4ZWRTaXplKQogICAgIHsKICAgICAgICAgbVdpZHRoICA9IC0xOwogICAgICAg
ICBtSGVpZ2h0ID0gLTE7CiAgICAgfQorCisgICAgc3dpdGNoIChidWZ0eXBlKQorICAgIHsKKyAg
ICAgICAgY2FzZSBFR0xfRDNEX1RFWFRVUkVfMkRfU0hBUkVfSEFORExFX0FOR0xFOgorICAgICAg
ICAgICAgbVNoYXJlSGFuZGxlID0gc3RhdGljX2Nhc3Q8SEFORExFPihjbGllbnRCdWZmZXIpOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFR0xfRDNEX1RFWFRVUkVfQU5HTEU6
CisgICAgICAgICAgICBtRDNEVGV4dHVyZSA9IHN0YXRpY19jYXN0PElVbmtub3duICo+KGNsaWVu
dEJ1ZmZlcik7CisgICAgICAgICAgICBBU1NFUlQobUQzRFRleHR1cmUgIT0gbnVsbHB0cik7Cisg
ICAgICAgICAgICBtRDNEVGV4dHVyZS0+QWRkUmVmKCk7CisgICAgICAgICAgICBtUmVuZGVyZXIt
PmdldEQzRFRleHR1cmVJbmZvKG1EM0RUZXh0dXJlLCAmbVdpZHRoLCAmbUhlaWdodCwgJm1SZW5k
ZXJUYXJnZXRGb3JtYXQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAogU3VyZmFjZUQzRDo6flN1cmZhY2VEM0Qo
KQogewogICAgIHJlbGVhc2VTd2FwQ2hhaW4oKTsKICAgICBTYWZlRGVsZXRlKG1OYXRpdmVXaW5k
b3cpOworICAgIFNhZmVSZWxlYXNlKG1EM0RUZXh0dXJlKTsKIH0KIAogdm9pZCBTdXJmYWNlRDNE
OjpyZWxlYXNlU3dhcENoYWluKCkKQEAgLTYxLDcgKzgwLDcgQEAgdm9pZCBTdXJmYWNlRDNEOjpy
ZWxlYXNlU3dhcENoYWluKCkKICAgICBTYWZlRGVsZXRlKG1Td2FwQ2hhaW4pOwogfQogCi1lZ2w6
OkVycm9yIFN1cmZhY2VEM0Q6OmluaXRpYWxpemUoKQorZWdsOjpFcnJvciBTdXJmYWNlRDNEOjpp
bml0aWFsaXplKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkKIHsKICAgICBpZiAobU5h
dGl2ZVdpbmRvdy0+Z2V0TmF0aXZlV2luZG93KCkpCiAgICAgewpAQCAtMTI3LDggKzE0Niw4IEBA
IGVnbDo6RXJyb3IgU3VyZmFjZUQzRDo6cmVzZXRTd2FwQ2hhaW4oKQogICAgICAgICBoZWlnaHQg
PSBtSGVpZ2h0OwogICAgIH0KIAotICAgIG1Td2FwQ2hhaW4gPSBtUmVuZGVyZXItPmNyZWF0ZVN3
YXBDaGFpbihtTmF0aXZlV2luZG93LCBtU2hhcmVIYW5kbGUsIG1SZW5kZXJUYXJnZXRGb3JtYXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EZXB0aFN0ZW5j
aWxGb3JtYXQsIG1PcmllbnRhdGlvbik7CisgICAgbVN3YXBDaGFpbiA9IG1SZW5kZXJlci0+Y3Jl
YXRlU3dhcENoYWluKG1OYXRpdmVXaW5kb3csIG1TaGFyZUhhbmRsZSwgbUQzRFRleHR1cmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1SZW5kZXJUYXJnZXRG
b3JtYXQsIG1EZXB0aFN0ZW5jaWxGb3JtYXQsIG1PcmllbnRhdGlvbik7CiAgICAgaWYgKCFtU3dh
cENoYWluKQogICAgIHsKICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BTExPQyk7
CkBAIC0yNjQsNyArMjgzLDcgQEAgYm9vbCBTdXJmYWNlRDNEOjpjaGVja0Zvck91dE9mRGF0ZVN3
YXBDaGFpbigpCiAgICAgcmV0dXJuIHdhc0RpcnR5OwogfQogCi1lZ2w6OkVycm9yIFN1cmZhY2VE
M0Q6OnN3YXAoKQorZWdsOjpFcnJvciBTdXJmYWNlRDNEOjpzd2FwKGNvbnN0IERpc3BsYXlJbXBs
ICpkaXNwbGF5SW1wbCkKIHsKICAgICByZXR1cm4gc3dhcFJlY3QoMCwgMCwgbVdpZHRoLCBtSGVp
Z2h0KTsKIH0KQEAgLTMzNywxNiArMzU2LDIxIEBAIGdsOjpFcnJvciBTdXJmYWNlRDNEOjpnZXRB
dHRhY2htZW50UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6CiAg
ICAgewogICAgICAgICAqcnRPdXQgPSBtU3dhcENoYWluLT5nZXREZXB0aFN0ZW5jaWxSZW5kZXJU
YXJnZXQoKTsKICAgICB9Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIFdpbmRvd1N1cmZhY2VEM0Q6OldpbmRvd1N1cmZh
Y2VEM0QoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZW5kZXJlckQzRCAqcmVuZGVyZXIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFw
ICZhdHRyaWJzKQotICAgIDogU3VyZmFjZUQzRChzdGF0ZSwgcmVuZGVyZXIsIGRpc3BsYXksIGNv
bmZpZywgd2luZG93LCBzdGF0aWNfY2FzdDxFR0xDbGllbnRCdWZmZXI+KDApLCBhdHRyaWJzKQor
ICAgIDogU3VyZmFjZUQzRChzdGF0ZSwKKyAgICAgICAgICAgICAgICAgcmVuZGVyZXIsCisgICAg
ICAgICAgICAgICAgIGRpc3BsYXksCisgICAgICAgICAgICAgICAgIHdpbmRvdywKKyAgICAgICAg
ICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RUdMQ2xpZW50QnVmZmVy
PigwKSwKKyAgICAgICAgICAgICAgICAgYXR0cmlicykKIHsKIH0KIApAQCAtMzU3LDE1ICszODEs
MTUgQEAgV2luZG93U3VyZmFjZUQzRDo6fldpbmRvd1N1cmZhY2VEM0QoKQogUGJ1ZmZlclN1cmZh
Y2VEM0Q6OlBidWZmZXJTdXJmYWNlRDNEKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckQzRCAqcmVuZGVy
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpEaXNwbGF5ICpk
aXNwbGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6
Q29uZmlnICpjb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
Q2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFR0xDbGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogICAgIDog
U3VyZmFjZUQzRChzdGF0ZSwKICAgICAgICAgICAgICAgICAgcmVuZGVyZXIsCiAgICAgICAgICAg
ICAgICAgIGRpc3BsYXksCi0gICAgICAgICAgICAgICAgIGNvbmZpZywKICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8RUdMTmF0aXZlV2luZG93VHlwZT4oMCksCi0gICAgICAgICAgICAgICAg
IHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICBidWZ0eXBlLAorICAgICAgICAgICAgICAg
ICBjbGllbnRCdWZmZXIsCiAgICAgICAgICAgICAgICAgIGF0dHJpYnMpCiB7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1N1
cmZhY2VEM0QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvU3VyZmFjZUQzRC5oCmluZGV4IDE2ZWM5NzEzMzM1YzZkOTM4MzY0ZDAwM2EwOGU1ODcy
ZWE2ZmQxZTUuLjU4YjJjZTFmOWI5YzEyM2I2OTQ5NWE3NDYzNWIyOWY3MjNhYTE3NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
U3VyZmFjZUQzRC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvU3VyZmFjZUQzRC5oCkBAIC0yOCwxMCArMjgsMTAgQEAgY2xhc3MgU3VyZmFj
ZUQzRCA6IHB1YmxpYyBTdXJmYWNlSW1wbAogICAgIH5TdXJmYWNlRDNEKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCByZWxlYXNlU3dhcENoYWluKCk7CiAKLSAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUo
KSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoY29uc3QgRGlzcGxheUltcGwg
KmRpc3BsYXlJbXBsKSBvdmVycmlkZTsKICAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZURlZmF1
bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpIG92ZXJyaWRl
OwogCi0gICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBzd2Fw
KGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJv
ciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQg
aGVpZ2h0KSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdM
RShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJy
b3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVyKSBvdmVy
cmlkZTsKQEAgLTYwLDkgKzYwLDkgQEAgY2xhc3MgU3VyZmFjZUQzRCA6IHB1YmxpYyBTdXJmYWNl
SW1wbAogICAgIFN1cmZhY2VEM0QoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAogICAg
ICAgICAgICAgICAgUmVuZGVyZXJEM0QgKnJlbmRlcmVyLAogICAgICAgICAgICAgICAgZWdsOjpE
aXNwbGF5ICpkaXNwbGF5LAotICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZp
ZywKICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAotICAgICAgICAg
ICAgICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgRUdMZW51
bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZlciwK
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKTsKIAogICAg
IGVnbDo6RXJyb3Igc3dhcFJlY3QoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVH
TGludCBoZWlnaHQpOwpAQCAtODgsNiArODgsNyBAQCBjbGFzcyBTdXJmYWNlRDNEIDogcHVibGlj
IFN1cmZhY2VJbXBsCiAgICAgRUdMaW50IG1Td2FwSW50ZXJ2YWw7CiAKICAgICBIQU5ETEUgbVNo
YXJlSGFuZGxlOworICAgIElVbmtub3duICptRDNEVGV4dHVyZTsKIH07CiAKIGNsYXNzIFdpbmRv
d1N1cmZhY2VEM0QgOiBwdWJsaWMgU3VyZmFjZUQzRApAQCAtOTYsNyArOTcsNiBAQCBjbGFzcyBX
aW5kb3dTdXJmYWNlRDNEIDogcHVibGljIFN1cmZhY2VEM0QKICAgICBXaW5kb3dTdXJmYWNlRDNE
KGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgIFJl
bmRlcmVyRDNEICpyZW5kZXJlciwKICAgICAgICAgICAgICAgICAgICAgIGVnbDo6RGlzcGxheSAq
ZGlzcGxheSwKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcs
CiAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKTsKICAgICB+
V2luZG93U3VyZmFjZUQzRCgpIG92ZXJyaWRlOwpAQCAtMTA4LDggKzEwOCw4IEBAIGNsYXNzIFBi
dWZmZXJTdXJmYWNlRDNEIDogcHVibGljIFN1cmZhY2VEM0QKICAgICBQYnVmZmVyU3VyZmFjZUQz
RChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAg
UmVuZGVyZXJEM0QgKnJlbmRlcmVyLAogICAgICAgICAgICAgICAgICAgICAgIGVnbDo6RGlzcGxh
eSAqZGlzcGxheSwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29u
ZmlnLAotICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwK
KyAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicyk7CiAgICAgflBidWZmZXJTdXJmYWNl
RDNEKCkgb3ZlcnJpZGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Td2FwQ2hhaW5EM0QuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Td2FwQ2hhaW5EM0QuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRlODUzNGMzZGE3MTA2ZThkZjJjYzliYzZhNGM0NTIxZmFiOTM3MDQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1N3YXBDaGFpbkQzRC5jcHAKQEAgLTAsMCArMSwzNCBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
Ky8vIFN3YXBDaGFpbkQzRC5jcHA6IERlZmluZXMgYSBiYWNrLWVuZCBzcGVjaWZpYyBjbGFzcyB0
aGF0IGhpZGVzIHRoZSBkZXRhaWxzIG9mIHRoZQorLy8gaW1wbGVtZW50YXRpb24tc3BlY2lmaWMg
c3dhcGNoYWluLgorCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1N3YXBDaGFpbkQz
RC5oIgorCituYW1lc3BhY2UgcngKK3sKKworU3dhcENoYWluRDNEOjpTd2FwQ2hhaW5EM0QoSEFO
RExFIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSVVua25vd24gKmQz
ZFRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmFja0J1ZmZlckZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1h
dCkKKyAgICA6IG1PZmZzY3JlZW5SZW5kZXJUYXJnZXRGb3JtYXQoYmFja0J1ZmZlckZvcm1hdCks
CisgICAgICBtRGVwdGhCdWZmZXJGb3JtYXQoZGVwdGhCdWZmZXJGb3JtYXQpLAorICAgICAgbVNo
YXJlSGFuZGxlKHNoYXJlSGFuZGxlKSwKKyAgICAgIG1EM0RUZXh0dXJlKGQzZFRleHR1cmUpCit7
CisgICAgaWYgKG1EM0RUZXh0dXJlKQorICAgIHsKKyAgICAgICAgbUQzRFRleHR1cmUtPkFkZFJl
ZigpOworICAgIH0KK30KKworU3dhcENoYWluRDNEOjp+U3dhcENoYWluRDNEKCkKK3sKKyAgICBT
YWZlUmVsZWFzZShtRDNEVGV4dHVyZSk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU3dh
cENoYWluRDNELmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1N3YXBDaGFpbkQzRC5oCmluZGV4IDczNmVlMGFkOWRiYzIwYmIzMTA2OWQ1YTg5Zjgy
NmU1NWYwNGQ4NDYuLjU0NzI4NjRlZjU1N2JkMTJkNWM0ZTA1YTU4NzFiM2E0NGEwOTYyNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvU3dhcENoYWluRDNELmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9Td2FwQ2hhaW5EM0QuaApAQCAtMjksMTQgKzI5LDExIEBAIGNsYXNz
IFJlbmRlclRhcmdldEQzRDsKIGNsYXNzIFN3YXBDaGFpbkQzRCA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQogewogICBwdWJsaWM6Ci0gICAgU3dhcENoYWluRDNEKEhBTkRMRSBzaGFyZUhhbmRsZSwgR0xl
bnVtIGJhY2tCdWZmZXJGb3JtYXQsIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCkKLSAgICAgICAg
OiBtT2Zmc2NyZWVuUmVuZGVyVGFyZ2V0Rm9ybWF0KGJhY2tCdWZmZXJGb3JtYXQpLAotICAgICAg
ICAgIG1EZXB0aEJ1ZmZlckZvcm1hdChkZXB0aEJ1ZmZlckZvcm1hdCksCi0gICAgICAgICAgbVNo
YXJlSGFuZGxlKHNoYXJlSGFuZGxlKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5Td2Fw
Q2hhaW5EM0QoKSB7fTsKKyAgICBTd2FwQ2hhaW5EM0QoSEFORExFIHNoYXJlSGFuZGxlLAorICAg
ICAgICAgICAgICAgICBJVW5rbm93biAqZDNkVGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgR0xl
bnVtIGJhY2tCdWZmZXJGb3JtYXQsCisgICAgICAgICAgICAgICAgIEdMZW51bSBkZXB0aEJ1ZmZl
ckZvcm1hdCk7CisgICAgdmlydHVhbCB+U3dhcENoYWluRDNEKCk7CiAKICAgICB2aXJ0dWFsIEVH
TGludCByZXNpemUoRUdMaW50IGJhY2tidWZmZXJXaWR0aCwgRUdMaW50IGJhY2tidWZmZXJTaXpl
KSA9IDA7CiAgICAgdmlydHVhbCBFR0xpbnQgcmVzZXQoRUdMaW50IGJhY2tidWZmZXJXaWR0aCwg
RUdMaW50IGJhY2tidWZmZXJIZWlnaHQsIEVHTGludCBzd2FwSW50ZXJ2YWwpID0gMDsKQEAgLTU5
LDcgKzU2LDggQEAgY2xhc3MgU3dhcENoYWluRDNEIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAg
Y29uc3QgR0xlbnVtIG1EZXB0aEJ1ZmZlckZvcm1hdDsKIAogICAgIEhBTkRMRSBtU2hhcmVIYW5k
bGU7CisgICAgSVVua25vd24gKm1EM0RUZXh0dXJlOwogfTsKIAotfQorfSAgLy8gbmFtZXNwYWNl
IHJ4CiAjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNEX1NXQVBDSEFJTkQzRF9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9UZXh0dXJlRDNELmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvVGV4dHVyZUQzRC5jcHAKaW5kZXggMGY1MzAzOGMzNGM5NzAyODk4ZmJkZDcy
ODczY2M5ZTM2NWFmMmY1OS4uMWQ2ZDc0MGE2MmMyN2U5YzdhOTczOTYxNWY5MjNjZjRiY2E2NmE4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9UZXh0dXJlRDNELmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVEM0QuY3BwCkBAIC02MCw3ICs2MCw3IEBAIGds
OjpFcnJvciBHZXRVbnBhY2tQb2ludGVyKGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBh
Y2ssIGNvbnN0IHVpbnQ4X3QgKnBpCiAgICAgICAgICpwb2ludGVyT3V0ICs9IGxheWVyT2Zmc2V0
OwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogfQogCiBib29sIElzUmVuZGVyVGFyZ2V0VXNhZ2UoR0xlbnVtIHVz
YWdlKQpAQCAtMTQ0LDYgKzE0NCwxNyBAQCBHTGVudW0gVGV4dHVyZUQzRDo6Z2V0QmFzZUxldmVs
SW50ZXJuYWxGb3JtYXQoKSBjb25zdAogICAgIHJldHVybiAoYmFzZUltYWdlID8gYmFzZUltYWdl
LT5nZXRJbnRlcm5hbEZvcm1hdCgpIDogR0xfTk9ORSk7CiB9CiAKK2dsOjpFcnJvciBUZXh0dXJl
RDNEOjpzZXRTdG9yYWdlTXVsdGlzYW1wbGUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBs
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGlu
dGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIGZpeGVkU2FtcGxlTG9jYXRpb25zKQoreworICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkludGVybmFsRXJyb3IoKSA8PCAic2V0U3Rv
cmFnZU11bHRpc2FtcGxlIGlzIHVuaW1wbGVtZW50ZWQuIjsKK30KKwogYm9vbCBUZXh0dXJlRDNE
OjpzaG91bGRVc2VTZXREYXRhKGNvbnN0IEltYWdlRDNEICppbWFnZSkgY29uc3QKIHsKICAgICBp
ZiAoIW1SZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKS5zZXREYXRhRmFzdGVyVGhhbkltYWdlVXBs
b2FkKQpAQCAtMTc2LDcgKzE4Nyw3IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEOjpzZXRJbWFnZUlt
cGwoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LAogICAgIC8vIE5vLW9wCiAgICAgaWYgKGlt
YWdlLT5nZXRXaWR0aCgpID09IDAgfHwgaW1hZ2UtPmdldEhlaWdodCgpID09IDAgfHwgaW1hZ2Ut
PmdldERlcHRoKCkgPT0gMCkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKICAgICAvLyBX
ZSBubyBsb25nZXIgbmVlZCB0aGUgIkdMZW51bSBmb3JtYXQiIHBhcmFtZXRlciB0byBUZXhJbWFn
ZSB0byBkZXRlcm1pbmUgd2hhdCBkYXRhIGZvcm1hdCAicGl4ZWxzIiBjb250YWlucy4KQEAgLTIy
NCw3ICsyMzUsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRDo6c3ViSW1hZ2UoY29uc3QgZ2w6Oklt
YWdlSW5kZXggJmluZGV4LCBjb25zdCBnbDo6Qm94ICZhcmVhLAogICAgICAgICBtRGlydHlJbWFn
ZXMgPSB0cnVlOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwor
ICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZUQzRDo6c2V0
Q29tcHJlc3NlZEltYWdlSW1wbChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsCkBAIC0yNTMs
NyArMjY0LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0Q6OnNldENvbXByZXNzZWRJbWFnZUltcGwo
Y29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LAogICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVl
OwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZUQzRDo6c3ViSW1hZ2VDb21w
cmVzc2VkKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgY29uc3QgZ2w6OkJveCAmYXJlYSwg
R0xlbnVtIGZvcm1hdCwKQEAgLTI3Myw3ICsyODQsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRDo6
c3ViSW1hZ2VDb21wcmVzc2VkKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgY29uc3QgZ2w6
OgogICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVlOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBib29s
IFRleHR1cmVEM0Q6OmlzRmFzdFVucGFja2FibGUoY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUg
JnVucGFjaywgR0xlbnVtIHNpemVkSW50ZXJuYWxGb3JtYXQpCkBAIC0yOTYsNyArMzA3LDcgQEAg
Z2w6OkVycm9yIFRleHR1cmVEM0Q6OmZhc3RVbnBhY2tQaXhlbHMoY29uc3QgZ2w6OlBpeGVsVW5w
YWNrU3RhdGUgJnVucGFjaywgY29uc3QKICAgICAvLyBOby1vcAogICAgIGlmIChkZXN0QXJlYS53
aWR0aCA8PSAwICYmIGRlc3RBcmVhLmhlaWdodCA8PSAwICYmIGRlc3RBcmVhLmRlcHRoIDw9IDAp
CiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAgLy8gSW4gb3JkZXIgdG8gcGVyZm9y
bSB0aGUgZmFzdCBjb3B5IHRocm91Z2ggdGhlIHNoYWRlciwgd2UgbXVzdCBoYXZlIHRoZSByaWdo
dCBmb3JtYXQsIGFuZCBiZSBhYmxlCkBAIC0zNTEsMTIgKzM2MiwxMSBAQCBnbDo6RXJyb3IgVGV4
dHVyZUQzRDo6c2V0SW1hZ2VFeHRlcm5hbChHTGVudW0gdGFyZ2V0LAogICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRDo6
Z2VuZXJhdGVNaXBtYXAoKQorZ2w6OkVycm9yIFRleHR1cmVEM0Q6OmdlbmVyYXRlTWlwbWFwKENv
bnRleHRJbXBsICpjb250ZXh0SW1wbCkKIHsKICAgICBjb25zdCBHTHVpbnQgYmFzZUxldmVsID0g
bVN0YXRlLmdldEVmZmVjdGl2ZUJhc2VMZXZlbCgpOwogICAgIGNvbnN0IEdMdWludCBtYXhMZXZl
bCA9IG1TdGF0ZS5nZXRNaXBtYXBNYXhMZXZlbCgpOwogICAgIEFTU0VSVChtYXhMZXZlbCA+IGJh
c2VMZXZlbCk7ICAvLyBTaG91bGQgYmUgY2hlY2tlZCBiZWZvcmUgY2FsbGluZyB0aGlzLgotICAg
IFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUoYmFzZUxldmVsKTsKIAogICAgIGlmIChtVGV4U3Rv
cmFnZSAmJiBtUmVuZGVyZXItPmdldFdvcmthcm91bmRzKCkuemVyb01heExvZFdvcmthcm91bmQp
CiAgICAgewpAQCAtMzgyLDcgKzM5Miw3IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEOjpnZW5lcmF0
ZU1pcG1hcCgpCiAgICAgICAgIEFOR0xFX1RSWShnZW5lcmF0ZU1pcG1hcFVzaW5nSW1hZ2VzKG1h
eExldmVsKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cisg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlRDNEOjpnZW5l
cmF0ZU1pcG1hcFVzaW5nSW1hZ2VzKGNvbnN0IEdMdWludCBtYXhMZXZlbCkKQEAgLTQ4MCwyNyAr
NDkwLDI2IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEOjplbnN1cmVSZW5kZXJUYXJnZXQoKQogewog
ICAgIEFOR0xFX1RSWShpbml0aWFsaXplU3RvcmFnZSh0cnVlKSk7CiAKKyAgICAvLyBpbml0aWFs
aXplU3RvcmFnZSBjYW4gZmFpbCB3aXRoIE5vRXJyb3IgaWYgdGhlIHRleHR1cmUgaXMgbm90IGNv
bXBsZXRlLiBUaGlzIGlzIG5vdAorICAgIC8vIGFuIGVycm9yIGZvciBpbmNvbXBsZXRlIHNhbXBs
aW5nLCBidXQgaXQgaXMgYSBiaWcgcHJvYmxlbSBmb3IgcmVuZGVyaW5nLgorICAgIGlmICghbVRl
eFN0b3JhZ2UpCisgICAgeworICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4g
Z2w6OkludGVybmFsRXJyb3IoKSA8PCAiQ2Fubm90IHJlbmRlciB0byBpbmNvbXBsZXRlIHRleHR1
cmUuIjsKKyAgICB9CisKICAgICBpZiAoIWlzQmFzZUltYWdlWmVyb1NpemUoKSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChtVGV4U3RvcmFnZSk7CiAgICAgICAgIGlmICghbVRleFN0b3JhZ2UtPmlz
UmVuZGVyVGFyZ2V0KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRleHR1cmVTdG9yYWdlICpu
ZXdSZW5kZXJUYXJnZXRTdG9yYWdlID0gTlVMTDsKKyAgICAgICAgICAgIFRleHR1cmVTdG9yYWdl
ICpuZXdSZW5kZXJUYXJnZXRTdG9yYWdlID0gbnVsbHB0cjsKICAgICAgICAgICAgIEFOR0xFX1RS
WShjcmVhdGVDb21wbGV0ZVN0b3JhZ2UodHJ1ZSwgJm5ld1JlbmRlclRhcmdldFN0b3JhZ2UpKTsK
IAotICAgICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbVRleFN0b3JhZ2UtPmNvcHlUb1N0b3Jh
Z2UobmV3UmVuZGVyVGFyZ2V0U3RvcmFnZSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFNhZmVEZWxldGUobmV3UmVuZGVy
VGFyZ2V0U3RvcmFnZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBlcnJvciA9IHNldENvbXBsZXRlVGV4U3RvcmFnZShuZXdSZW5k
ZXJUYXJnZXRTdG9yYWdlKTsKLSAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgU2FmZURlbGV0ZShuZXdSZW5kZXJUYXJnZXRTdG9y
YWdlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGV4dHVyZVN0b3JhZ2U+IG5ld1N0b3JhZ2VSZWYobmV3
UmVuZGVyVGFyZ2V0U3RvcmFnZSk7CisgICAgICAgICAgICBBTkdMRV9UUlkobVRleFN0b3JhZ2Ut
PmNvcHlUb1N0b3JhZ2UobmV3UmVuZGVyVGFyZ2V0U3RvcmFnZSkpOworICAgICAgICAgICAgQU5H
TEVfVFJZKHNldENvbXBsZXRlVGV4U3RvcmFnZShuZXdSZW5kZXJUYXJnZXRTdG9yYWdlKSk7Cisg
ICAgICAgICAgICBuZXdTdG9yYWdlUmVmLnJlbGVhc2UoKTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtNTc0LDYgKzU4MywyMDMgQEAgVGV4dHVyZUQzRF8yRDo6VGV4dHVyZUQzRF8yRChjb25zdCBn
bDo6VGV4dHVyZVN0YXRlICZzdGF0ZSwgUmVuZGVyZXJEM0QgKnJlbmRlcmUKICAgICB9CiB9CiAK
K1RleHR1cmVEM0RfMkRNdWx0aXNhbXBsZTo6VGV4dHVyZUQzRF8yRE11bHRpc2FtcGxlKGNvbnN0
IGdsOjpUZXh0dXJlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVuZGVyZXJEM0QgKnJlbmRlcmVyKQorICAgIDogVGV4dHVy
ZUQzRChzdGF0ZSwgcmVuZGVyZXIpCit7Cit9CisKK1RleHR1cmVEM0RfMkRNdWx0aXNhbXBsZTo6
flRleHR1cmVEM0RfMkRNdWx0aXNhbXBsZSgpCit7Cit9CisKK0ltYWdlRDNEICpUZXh0dXJlRDNE
XzJETXVsdGlzYW1wbGU6OmdldEltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCkgY29u
c3QKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2ds
OjpFcnJvciBUZXh0dXJlRDNEXzJETXVsdGlzYW1wbGU6OnNldEltYWdlKENvbnRleHRJbXBsICpj
b250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVu
cGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIHJldHVybiBnbDo6SW50ZXJuYWxFcnJvcigpOworfQorCitnbDo6RXJyb3IgVGV4dHVyZUQz
RF8yRE11bHRpc2FtcGxlOjpzZXRTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1
bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICpwaXhlbHMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVy
biBnbDo6SW50ZXJuYWxFcnJvcigpOworfQorCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRE11bHRp
c2FtcGxlOjpzZXRDb21wcmVzc2VkSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0
ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFn
ZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICByZXR1cm4gZ2w6OkludGVybmFsRXJyb3IoKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVEM0Rf
MkRNdWx0aXNhbXBsZTo6c2V0Q29tcHJlc3NlZFN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0
SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZh
cmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFj
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKK3sKKyAgICBV
TklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpJbnRlcm5hbEVycm9yKCk7Cit9CisKK2ds
OjpFcnJvciBUZXh0dXJlRDNEXzJETXVsdGlzYW1wbGU6OmNvcHlJbWFnZShDb250ZXh0SW1wbCAq
Y29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OkZyYW1lYnVmZmVyICpzb3VyY2UpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVy
biBnbDo6SW50ZXJuYWxFcnJvcigpOworfQorCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRE11bHRp
c2FtcGxlOjpjb3B5U3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxl
dmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
RnJhbWVidWZmZXIgKnNvdXJjZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJu
IGdsOjpJbnRlcm5hbEVycm9yKCk7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzJETXVsdGlz
YW1wbGU6OnNldFN0b3JhZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWxzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICByZXR1cm4gZ2w6OkludGVybmFsRXJyb3IoKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVEM0Rf
MkRNdWx0aXNhbXBsZTo6c2V0SW1hZ2VFeHRlcm5hbChHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN0cmVhbSAq
c3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBlZ2w6OlN0cmVhbTo6R0xUZXh0dXJlRGVzY3JpcHRpb24gJmRlc2MpCit7Cisg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6SW50ZXJuYWxFcnJvcigpOworfQor
Cit2b2lkIFRleHR1cmVEM0RfMkRNdWx0aXNhbXBsZTo6YmluZFRleEltYWdlKGVnbDo6U3VyZmFj
ZSAqc3VyZmFjZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQgVGV4dHVyZUQz
RF8yRE11bHRpc2FtcGxlOjpyZWxlYXNlVGV4SW1hZ2UoKQoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRNdWx0aXNhbXBsZTo6c2V0RUdMSW1hZ2VU
YXJnZXQoR0xlbnVtIHRhcmdldCwgZWdsOjpJbWFnZSAqaW1hZ2UpCit7CisgICAgVU5JTVBMRU1F
TlRFRCgpOworICAgIHJldHVybiBnbDo6SW50ZXJuYWxFcnJvcigpOworfQorCitnbDo6RXJyb3Ig
VGV4dHVyZUQzRF8yRE11bHRpc2FtcGxlOjpnZXRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkltYWdl
SW5kZXggJmluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFJlbmRlclRhcmdldEQzRCAqKm91dFJUKQoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICByZXR1cm4gZ2w6OkludGVybmFsRXJyb3IoKTsKK30KKworZ2w6OkltYWdlSW5kZXhJ
dGVyYXRvciBUZXh0dXJlRDNEXzJETXVsdGlzYW1wbGU6OmltYWdlSXRlcmF0b3IoKSBjb25zdAor
eworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkltYWdlSW5kZXhJdGVyYXRv
cjo6TWFrZTJETXVsdGlzYW1wbGUoKTsKK30KKworZ2w6OkltYWdlSW5kZXggVGV4dHVyZUQzRF8y
RE11bHRpc2FtcGxlOjpnZXRJbWFnZUluZGV4KEdMaW50IG1pcCwgR0xpbnQgbGF5ZXIpIGNvbnN0
Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6SW1hZ2VJbmRleDo6TWFr
ZTJETXVsdGlzYW1wbGUoKTsKK30KKworYm9vbCBUZXh0dXJlRDNEXzJETXVsdGlzYW1wbGU6Omlz
VmFsaWRJbmRleChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpIGNvbnN0Cit7CisgICAgVU5J
TVBMRU1FTlRFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworR0xzaXplaSBUZXh0dXJlRDNE
XzJETXVsdGlzYW1wbGU6OmdldExheWVyQ291bnQoaW50IGxldmVsKSBjb25zdAoreworICAgIFVO
SU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gR0xzaXplaSgpOworfQorCit2b2lkIFRleHR1cmVE
M0RfMkRNdWx0aXNhbXBsZTo6bWFya0FsbEltYWdlc0RpcnR5KCkKK3sKKyAgICBVTklNUExFTUVO
VEVEKCk7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzJETXVsdGlzYW1wbGU6OmluaXRpYWxp
emVTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0KQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICByZXR1cm4gZ2w6OkludGVybmFsRXJyb3IoKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVEM0Rf
MkRNdWx0aXNhbXBsZTo6Y3JlYXRlQ29tcGxldGVTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRleHR1cmVTdG9yYWdlICoqb3V0VGV4U3RvcmFnZSkgY29uc3QKK3sKKyAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgcmV0dXJuIGdsOjpJbnRlcm5hbEVycm9yKCk7Cit9CisKK2dsOjpFcnJvciBU
ZXh0dXJlRDNEXzJETXVsdGlzYW1wbGU6OnNldENvbXBsZXRlVGV4U3RvcmFnZShUZXh0dXJlU3Rv
cmFnZSAqbmV3Q29tcGxldGVUZXhTdG9yYWdlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICByZXR1cm4gZ2w6OkludGVybmFsRXJyb3IoKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVEM0Rf
MkRNdWx0aXNhbXBsZTo6dXBkYXRlU3RvcmFnZSgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIHJldHVybiBnbDo6SW50ZXJuYWxFcnJvcigpOworfQorCit2b2lkIFRleHR1cmVEM0RfMkRN
dWx0aXNhbXBsZTo6aW5pdE1pcG1hcEltYWdlcygpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOwor
fQorCitib29sIFRleHR1cmVEM0RfMkRNdWx0aXNhbXBsZTo6aXNJbWFnZUNvbXBsZXRlKGNvbnN0
IGdsOjpJbWFnZUluZGV4ICZpbmRleCkgY29uc3QKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgcmV0dXJuIGZhbHNlOworfQorCiBUZXh0dXJlRDNEXzJEOjp+VGV4dHVyZUQzRF8yRCgpCiB7
CiAgICAgLy8gRGVsZXRlIHRoZSBJbWFnZXMgYmVmb3JlIHRoZSBUZXh0dXJlU3RvcmFnZS4KQEAg
LTU4MSw3ICs3ODcsNyBAQCBUZXh0dXJlRDNEXzJEOjp+VGV4dHVyZUQzRF8yRCgpCiAgICAgLy8g
SWYgVGV4dHVyZVN0b3JhZ2UgaXMgZGVsZXRlZCBiZWZvcmUgdGhlIEltYWdlcywgdGhlbiB0aGVp
ciBkYXRhIHdpbGwgYmUgd2FzdGVmdWxseSBjb3BpZWQgYmFjayBmcm9tIHRoZSBHUFUgYmVmb3Jl
IHdlIGRlbGV0ZSB0aGUgSW1hZ2VzLgogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2w6OklNUExF
TUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUzsgKytpKQogICAgIHsKLSAgICAgICAgZGVsZXRl
IG1JbWFnZUFycmF5W2ldOworICAgICAgICBTYWZlRGVsZXRlKG1JbWFnZUFycmF5W2ldKTsKICAg
ICB9CiAKICAgICBTYWZlRGVsZXRlKG1UZXhTdG9yYWdlKTsKQEAgLTYzNyw3ICs4NDMsOCBAQCBi
b29sIFRleHR1cmVEM0RfMkQ6OmlzRGVwdGgoR0xpbnQgbGV2ZWwpIGNvbnN0CiAgICAgcmV0dXJu
IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oZ2V0SW50ZXJuYWxGb3JtYXQobGV2ZWwpKS5kZXB0
aEJpdHMgPiAwOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6c2V0SW1hZ2UoR0xlbnVt
IHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzJEOjpzZXRJbWFnZShDb250ZXh0SW1wbCAq
Y29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VMZXZl
bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMg
JnNpemUsCkBAIC02ODMsNyArODkwLDggQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OnNldElt
YWdlKEdMZW51bSB0YXJnZXQsCiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpF
cnJvciBUZXh0dXJlRDNEXzJEOjpzZXRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAorZ2w6OkVycm9y
IFRleHR1cmVEM0RfMkQ6OnNldFN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZUxldmVsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKQEAgLTcwOSw3
ICs5MTcsOCBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6c2V0U3ViSW1hZ2UoR0xlbnVtIHRh
cmdldCwKICAgICB9CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlRDNEXzJEOjpzZXRDb21wcmVzc2Vk
SW1hZ2UoR0xlbnVtIHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzJEOjpzZXRDb21wcmVz
c2VkSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VMZXZlbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0
ZW50cyAmc2l6ZSwKQEAgLTcyNiw4ICs5MzUsMTQgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6
OnNldENvbXByZXNzZWRJbWFnZShHTGVudW0gdGFyZ2V0LAogICAgIHJldHVybiBzZXRDb21wcmVz
c2VkSW1hZ2VJbXBsKGdsOjpJbWFnZUluZGV4OjpNYWtlMkQobGV2ZWwpLCB1bnBhY2ssIHBpeGVs
cywgMCk7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlRDNEXzJEOjpzZXRDb21wcmVzc2VkU3ViSW1h
Z2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6Qm94ICZhcmVhLCBHTGVu
dW0gZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXplX3QgaW1hZ2VTaXplLCBj
b25zdCB1aW50OF90ICpwaXhlbHMpCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6c2V0Q29tcHJl
c3NlZFN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZh
cmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhl
bHMpCiB7CiAgICAgQVNTRVJUKHRhcmdldCA9PSBHTF9URVhUVVJFXzJEICYmIGFyZWEuZGVwdGgg
PT0gMSAmJiBhcmVhLnogPT0gMCk7CiAKQEAgLTczNyw3ICs5NTIsOCBAQCBnbDo6RXJyb3IgVGV4
dHVyZUQzRF8yRDo6c2V0Q29tcHJlc3NlZFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBs
ZXZlbCwgY29ucwogICAgIHJldHVybiBjb21taXRSZWdpb24oaW5kZXgsIGFyZWEpOwogfQogCi1n
bDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6Y29weUltYWdlKEdMZW51bSB0YXJnZXQsCitnbDo6RXJy
b3IgVGV4dHVyZUQzRF8yRDo6Y29weUltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlTGV2ZWwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1h
dCwKQEAgLTc3MiwxMCArOTg4LDExIEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzJEOjpjb3B5SW1h
Z2UoR0xlbnVtIHRhcmdldCwKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJy
b3IgVGV4dHVyZUQzRF8yRDo6Y29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQsCitnbDo6RXJyb3Ig
VGV4dHVyZUQzRF8yRDo6Y29weVN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlTGV2ZWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RP
ZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJnNvdXJjZUFyZWEsCkBAIC04MDksMjAgKzEwMjYsMjUgQEAgZ2w6OkVycm9yIFRl
eHR1cmVEM0RfMkQ6OmNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAogICAgICAgICB9CiAgICAg
fQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlRDNEXzJEOjpjb3B5VGV4dHVyZShHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6Y29weVRleHR1cmUo
Q29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgc291cmNlTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCB1bnBhY2tGbGlwWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IHVucGFja1ByZW11bHRpcGx5QWxwaGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSkKIHsKKyAgICBBU1NFUlQo
dGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQpOworCiAgICAgR0xlbnVtIHNvdXJjZVRhcmdldCA9IHNv
dXJjZS0+Z2V0VGFyZ2V0KCk7Ci0gICAgR0xpbnQgc291cmNlTGV2ZWwgICA9IDA7CiAKLSAgICBH
TGludCBkZXN0TGV2ZWwgPSAwOworICAgIEdMaW50IGRlc3RMZXZlbCA9IHN0YXRpY19jYXN0PEdM
aW50PihsZXZlbCk7CiAKICAgICBHTGVudW0gc2l6ZWRJbnRlcm5hbEZvcm1hdCA9IGdsOjpHZXRT
aXplZEludGVybmFsRm9ybWF0KGludGVybmFsRm9ybWF0LCB0eXBlKTsKICAgICBnbDo6RXh0ZW50
cyBzaXplKHN0YXRpY19jYXN0PGludD4oc291cmNlLT5nZXRXaWR0aChzb3VyY2VUYXJnZXQsIHNv
dXJjZUxldmVsKSksCkBAIC04MzcsMjMgKzEwNTksMjggQEAgZ2w6OkVycm9yIFRleHR1cmVEM0Rf
MkQ6OmNvcHlUZXh0dXJlKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKIAogICAgIGdsOjpSZWN0YW5n
bGUgc291cmNlUmVjdCgwLCAwLCBzaXplLndpZHRoLCBzaXplLmhlaWdodCk7CiAgICAgZ2w6Ok9m
ZnNldCBkZXN0T2Zmc2V0KDAsIDAsIDApOwotICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmNvcHlU
ZXh0dXJlKHNvdXJjZSwgc291cmNlTGV2ZWwsIHNvdXJjZVJlY3QsCisgICAgQU5HTEVfVFJZKG1S
ZW5kZXJlci0+Y29weVRleHR1cmUoc291cmNlLCBzdGF0aWNfY2FzdDxHTGludD4oc291cmNlTGV2
ZWwpLCBzb3VyY2VSZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGds
OjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oc2l6ZWRJbnRlcm5hbEZvcm1hdCkuZm9ybWF0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RPZmZzZXQsIG1UZXhTdG9yYWdl
LCBkZXN0TGV2ZWwsIHVucGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3RPZmZzZXQsIG1UZXhTdG9yYWdlLCB0YXJnZXQsIGRlc3RMZXZlbCwgdW5wYWNr
RmxpcFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wYWNrUHJlbXVs
dGlwbHlBbHBoYSwgdW5wYWNrVW5tdWx0aXBseUFscGhhKSk7CiAKICAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OmNvcHlTdWJUZXh0dXJlKGNv
bnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6Y29w
eVN1YlRleHR1cmUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNvdXJjZUxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCB1bnBhY2tGbGlwWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSkKIHsKLSAg
ICBHTGludCBzb3VyY2VMZXZlbCA9IDA7Ci0gICAgR0xpbnQgZGVzdExldmVsICAgPSAwOworICAg
IEFTU0VSVCh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCk7CisKKyAgICBHTGludCBkZXN0TGV2ZWwg
PSBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpOwogCiAgICAgQVNTRVJUKGNhbkNyZWF0ZVJlbmRl
clRhcmdldEZvckltYWdlKGdsOjpJbWFnZUluZGV4OjpNYWtlMkQoZGVzdExldmVsKSkpOwogCkBA
IC04NjEsMTUgKzEwODgsMTUgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OmNvcHlTdWJUZXh0
dXJlKGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCiAgICAgQVNTRVJUKGlzVmFsaWRMZXZl
bChkZXN0TGV2ZWwpKTsKICAgICBBTkdMRV9UUlkodXBkYXRlU3RvcmFnZUxldmVsKGRlc3RMZXZl
bCkpOwogCi0gICAgQU5HTEVfVFJZKG1SZW5kZXJlci0+Y29weVRleHR1cmUoc291cmNlLCBzb3Vy
Y2VMZXZlbCwgc291cmNlQXJlYSwKKyAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5jb3B5VGV4dHVy
ZShzb3VyY2UsIHN0YXRpY19jYXN0PEdMaW50Pihzb3VyY2VMZXZlbCksIHNvdXJjZUFyZWEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkdldEludGVybmFsRm9ybWF0
SW5mbyhnZXRCYXNlTGV2ZWxJbnRlcm5hbEZvcm1hdCgpKS5mb3JtYXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVzdE9mZnNldCwgbVRleFN0b3JhZ2UsIGRlc3RMZXZl
bCwgdW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVz
dE9mZnNldCwgbVRleFN0b3JhZ2UsIHRhcmdldCwgZGVzdExldmVsLCB1bnBhY2tGbGlwWSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tQcmVtdWx0aXBseUFscGhh
LCB1bnBhY2tVbm11bHRpcGx5QWxwaGEpKTsKIAogICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
fQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6Y29weUNvbXByZXNzZWRUZXh0dXJlKGNvbnN0
IGdsOjpUZXh0dXJlICpzb3VyY2UpCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6Y29weUNvbXBy
ZXNzZWRUZXh0dXJlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwgY29uc3QgZ2w6OlRleHR1cmUg
KnNvdXJjZSkKIHsKICAgICBHTGVudW0gc291cmNlVGFyZ2V0ID0gc291cmNlLT5nZXRUYXJnZXQo
KTsKICAgICBHTGludCBzb3VyY2VMZXZlbCAgID0gMDsKQEAgLTg4OSw3ICsxMTE2LDExIEBAIGds
OjpFcnJvciBUZXh0dXJlRDNEXzJEOjpjb3B5Q29tcHJlc3NlZFRleHR1cmUoY29uc3QgZ2w6OlRl
eHR1cmUgKnNvdXJjZSkKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9y
IFRleHR1cmVEM0RfMkQ6OnNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVscywg
R0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSkKK2dsOjpFcnJv
ciBUZXh0dXJlRDNEXzJEOjpzZXRTdG9yYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWxzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpCiB7CiAg
ICAgQVNTRVJUKEdMX1RFWFRVUkVfMkQgJiYgc2l6ZS5kZXB0aCA9PSAxKTsKIApAQCAtOTg0LDcg
KzEyMTUsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6c2V0RUdMSW1hZ2VUYXJnZXQoR0xl
bnVtIHRhcmdldCwgZWdsOjpJbWFnZSAqaW1hZ2UpCiAgICAgbVRleFN0b3JhZ2UgICAgID0gbVJl
bmRlcmVyLT5jcmVhdGVUZXh0dXJlU3RvcmFnZUVHTEltYWdlKGVnbEltYWdlZDNkLCByZW5kZXJU
YXJnZXREM0QpOwogICAgIG1FR0xJbWFnZVRhcmdldCA9IHRydWU7CiAKLSAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogdm9p
ZCBUZXh0dXJlRDNEXzJEOjppbml0TWlwbWFwSW1hZ2VzKCkKQEAgLTEwNzEsMTMgKzEzMDIsMTMg
QEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OmluaXRpYWxpemVTdG9yYWdlKGJvb2wgcmVuZGVy
VGFyZ2V0KQogICAgIC8vIE9ubHkgaW5pdGlhbGl6ZSB0aGUgZmlyc3QgdGltZSB0aGlzIHRleHR1
cmUgaXMgdXNlZCBhcyBhIHJlbmRlciB0YXJnZXQgb3Igc2hhZGVyIHJlc291cmNlCiAgICAgaWYg
KG1UZXhTdG9yYWdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KIAogICAgIC8vIGRvIG5v
dCBhdHRlbXB0IHRvIGNyZWF0ZSBzdG9yYWdlIGZvciBub25leGlzdGFudCBkYXRhCiAgICAgaWYg
KCFpc0xldmVsQ29tcGxldGUoZ2V0QmFzZUxldmVsKCkpKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
ICAgIH0KIAogICAgIGJvb2wgY3JlYXRlUmVuZGVyVGFyZ2V0ID0gKHJlbmRlclRhcmdldCB8fCBJ
c1JlbmRlclRhcmdldFVzYWdlKG1TdGF0ZS5nZXRVc2FnZSgpKSk7CkBAIC0xMDk3LDcgKzEzMjgs
NyBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6aW5pdGlhbGl6ZVN0b3JhZ2UoYm9vbCByZW5k
ZXJUYXJnZXQpCiAgICAgLy8gZmx1c2ggaW1hZ2UgZGF0YSB0byB0aGUgc3RvcmFnZQogICAgIEFO
R0xFX1RSWSh1cGRhdGVTdG9yYWdlKCkpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJl
RDNEXzJEOjpjcmVhdGVDb21wbGV0ZVN0b3JhZ2UoYm9vbCByZW5kZXJUYXJnZXQsIFRleHR1cmVT
dG9yYWdlICoqb3V0VGV4U3RvcmFnZSkgY29uc3QKQEAgLTExMjYsNyArMTM1Nyw3IEBAIGdsOjpF
cnJvciBUZXh0dXJlRDNEXzJEOjpjcmVhdGVDb21wbGV0ZVN0b3JhZ2UoYm9vbCByZW5kZXJUYXJn
ZXQsIFRleHR1cmVTdG9yYWdlCiAgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBEZXRlcm1pbmUgaWYg
dGhlIHRleHR1cmUgY3JlYXRpb24gc3VjY2VlZGVkCiAgICAgKm91dFRleFN0b3JhZ2UgPSBtUmVu
ZGVyZXItPmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoaW50ZXJuYWxGb3JtYXQsIHJlbmRlclRhcmdl
dCwgd2lkdGgsIGhlaWdodCwgbGV2ZWxzLCBoaW50TGV2ZWxaZXJvT25seSk7CiAKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAogZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OnNldENvbXBsZXRlVGV4U3RvcmFnZShUZXh0dXJl
U3RvcmFnZSAqbmV3Q29tcGxldGVUZXhTdG9yYWdlKQpAQCAtMTI0Myw2ICsxNDc0LDE3IEBAIHZv
aWQgVGV4dHVyZUQzRF8yRDo6bWFya0FsbEltYWdlc0RpcnR5KCkKICAgICBtRGlydHlJbWFnZXMg
PSB0cnVlOwogfQogCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6c2V0U3RvcmFnZU11bHRpc2Ft
cGxlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiBmaXhlZFNhbXBsZUxvY2F0aW9ucykKK3sKKyAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgcmV0dXJuIGdsOjpJbnRlcm5hbEVycm9yKCkgPDwgInNldFN0b3JhZ2VNdWx0
aXNhbXBsZSBpcyB1bmltcGxlbWVudGVkLiI7Cit9CisKIFRleHR1cmVEM0RfQ3ViZTo6VGV4dHVy
ZUQzRF9DdWJlKGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnN0YXRlLCBSZW5kZXJlckQzRCAqcmVu
ZGVyZXIpCiAgICAgOiBUZXh0dXJlRDNEKHN0YXRlLCByZW5kZXJlcikKIHsKQEAgLTEzMTAsOCAr
MTU1MiwxNSBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF9DdWJlOjpzZXRFR0xJbWFnZVRhcmdldChH
TGVudW0gdGFyZ2V0LCBlZ2w6OkltYWdlICppbWFnZSkKICAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0RfQ3ViZTo6c2V0
SW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQs
IGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0
YXRlICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKK2dsOjpFcnJvciBUZXh0dXJlRDNE
X0N1YmU6OnNldEltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpCiB7CiAgICAgQVNT
RVJUKHNpemUuZGVwdGggPT0gMSk7CiAKQEAgLTEzMjMsOCArMTU3MiwxNCBAQCBnbDo6RXJyb3Ig
VGV4dHVyZUQzRF9DdWJlOjpzZXRJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIEdM
ZW51bSBpbnRlcm5hbAogICAgIHJldHVybiBzZXRJbWFnZUltcGwoaW5kZXgsIHR5cGUsIHVucGFj
aywgcGl4ZWxzLCAwKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0RfQ3ViZTo6c2V0U3ViSW1h
Z2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6Qm94ICZhcmVhLCBHTGVu
dW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3Qg
KnBpeGVscykKK2dsOjpFcnJvciBUZXh0dXJlRDNEX0N1YmU6OnNldFN1YkltYWdlKENvbnRleHRJ
bXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6Qm94ICZhcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKIHsKICAgICBBU1NFUlQoYXJlYS5k
ZXB0aCA9PSAxICYmIGFyZWEueiA9PSAwKTsKIApAQCAtMTMzMiw4ICsxNTg3LDE0IEBAIGdsOjpF
cnJvciBUZXh0dXJlRDNEX0N1YmU6OnNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBs
ZXZlbCwgY29uc3QgZ2w6OkJvCiAgICAgcmV0dXJuIFRleHR1cmVEM0Q6OnN1YkltYWdlKGluZGV4
LCBhcmVhLCBmb3JtYXQsIHR5cGUsIHVucGFjaywgcGl4ZWxzLCAwKTsKIH0KIAotZ2w6OkVycm9y
IFRleHR1cmVEM0RfQ3ViZTo6c2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVf
dCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXplX3QgaW1hZ2VTaXplLCBjb25zdCB1aW50OF90
ICpwaXhlbHMpCitnbDo6RXJyb3IgVGV4dHVyZUQzRF9DdWJlOjpzZXRDb21wcmVzc2VkSW1hZ2Uo
Q29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAm
c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQogewog
ICAgIEFTU0VSVChzaXplLmRlcHRoID09IDEpOwogCkBAIC0xMzQ2LDggKzE2MDcsMTQgQEAgZ2w6
OkVycm9yIFRleHR1cmVEM0RfQ3ViZTo6c2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQs
IHNpemVfdCBsZXZlbCwgR0xlbnUKICAgICByZXR1cm4gc2V0Q29tcHJlc3NlZEltYWdlSW1wbChp
bmRleCwgdW5wYWNrLCBwaXhlbHMsIDApOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF9DdWJl
OjpzZXRDb21wcmVzc2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25z
dCBnbDo6Qm94ICZhcmVhLCBHTGVudW0gZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBh
Y2ssIHNpemVfdCBpbWFnZVNpemUsIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKK2dsOjpFcnJvciBU
ZXh0dXJlRDNEX0N1YmU6OnNldENvbXByZXNzZWRTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4
dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFj
a1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGltYWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpCiB7CiAgICAgQVNTRVJU
KGFyZWEuZGVwdGggPT0gMSAmJiBhcmVhLnogPT0gMCk7CiAKQEAgLTEzNTcsNyArMTYyNCw4IEBA
IGdsOjpFcnJvciBUZXh0dXJlRDNEX0N1YmU6OnNldENvbXByZXNzZWRTdWJJbWFnZShHTGVudW0g
dGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvCiAgICAgcmV0dXJuIGNvbW1pdFJlZ2lvbihpbmRleCwg
YXJlYSk7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlRDNEX0N1YmU6OmNvcHlJbWFnZShHTGVudW0g
dGFyZ2V0LAorZ2w6OkVycm9yIFRleHR1cmVEM0RfQ3ViZTo6Y29weUltYWdlKENvbnRleHRJbXBs
ICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBp
bWFnZUxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LApAQCAtMTM5NiwxMCArMTY2NCwxMSBAQCBnbDo6
RXJyb3IgVGV4dHVyZUQzRF9DdWJlOjpjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwKICAgICAgICAg
fQogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF9DdWJlOjpjb3B5U3Vi
SW1hZ2UoR0xlbnVtIHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlRDNEX0N1YmU6OmNvcHlTdWJJ
bWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VMZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJj
ZUFyZWEsCkBAIC0xNDM1LDEwICsxNzA0LDE0IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEX0N1YmU6
OmNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9
CiAKLWdsOjpFcnJvciBUZXh0dXJlRDNEX0N1YmU6OnNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwg
c2l6ZV90IGxldmVscywgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAm
c2l6ZSkKK2dsOjpFcnJvciBUZXh0dXJlRDNEX0N1YmU6OnNldFN0b3JhZ2UoQ29udGV4dEltcGwg
KmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
bGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpFeHRlbnRzICZzaXplKQogewogICAgIEFTU0VSVChzaXplLndpZHRoID09IHNpemUuaGVp
Z2h0KTsKICAgICBBU1NFUlQoc2l6ZS5kZXB0aCA9PSAxKTsKQEAgLTE2MDcsNyArMTg4MCw3IEBA
IGdsOjpFcnJvciBUZXh0dXJlRDNEX0N1YmU6OmNyZWF0ZUNvbXBsZXRlU3RvcmFnZShib29sIHJl
bmRlclRhcmdldCwgVGV4dHVyZVN0b3JhCiAgICAgLy8gVE9ETyAoZ2VvZmZsYW5nKTogZGV0ZWN0
IGlmIHN0b3JhZ2UgY3JlYXRpb24gc3VjY2VlZGVkCiAgICAgKm91dFRleFN0b3JhZ2UgPSBtUmVu
ZGVyZXItPmNyZWF0ZVRleHR1cmVTdG9yYWdlQ3ViZShnZXRCYXNlTGV2ZWxJbnRlcm5hbEZvcm1h
dCgpLCByZW5kZXJUYXJnZXQsIHNpemUsIGxldmVscywgaGludExldmVsWmVyb09ubHkpOwogCi0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlRDNEX0N1YmU6OnNldENvbXBsZXRlVGV4U3RvcmFn
ZShUZXh0dXJlU3RvcmFnZSAqbmV3Q29tcGxldGVUZXhTdG9yYWdlKQpAQCAtMTYyOCw3ICsxOTAx
LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfQ3ViZTo6c2V0Q29tcGxldGVUZXhTdG9yYWdlKFRl
eHR1cmVTdG9yYWdlICpuZXdDb21wbGV0ZVRleFMKICAgICBtVGV4U3RvcmFnZSA9IG5ld0NvbXBs
ZXRlVGV4U3RvcmFnZTsKIAogICAgIG1EaXJ0eUltYWdlcyA9IHRydWU7Ci0gICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGds
OjpFcnJvciBUZXh0dXJlRDNEX0N1YmU6OnVwZGF0ZVN0b3JhZ2UoKQpAQCAtMTg1OSw3ICsyMTMy
LDggQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfM0Q6OnNldEVHTEltYWdlVGFyZ2V0KEdMZW51bSB0
YXJnZXQsIGVnbDo6SW1hZ2UgKmltYWdlKQogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF8zRDo6c2V0SW1hZ2UoR0xl
bnVtIHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzNEOjpzZXRJbWFnZShDb250ZXh0SW1w
bCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VM
ZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxG
b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVu
dHMgJnNpemUsCkBAIC0xOTAxLDEwICsyMTc1LDExIEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzNE
OjpzZXRJbWFnZShHTGVudW0gdGFyZ2V0LAogICAgICAgICBBTkdMRV9UUlkoc2V0SW1hZ2VJbXBs
KGluZGV4LCB0eXBlLCB1bnBhY2ssIHBpeGVscywgMCkpOwogICAgIH0KIAotICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1n
bDo6RXJyb3IgVGV4dHVyZUQzRF8zRDo6c2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKK2dsOjpF
cnJvciBUZXh0dXJlRDNEXzNEOjpzZXRTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VMZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCkBAIC0x
OTMyLDcgKzIyMDcsOCBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8zRDo6c2V0U3ViSW1hZ2UoR0xl
bnVtIHRhcmdldCwKICAgICB9CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlRDNEXzNEOjpzZXRDb21w
cmVzc2VkSW1hZ2UoR0xlbnVtIHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzNEOjpzZXRD
b21wcmVzc2VkSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VMZXZlbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6RXh0ZW50cyAmc2l6ZSwKQEAgLTE5NTAsOCArMjIyNiwxNCBAQCBnbDo6RXJyb3IgVGV4dHVy
ZUQzRF8zRDo6c2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsCiAgICAgcmV0dXJuIHNl
dENvbXByZXNzZWRJbWFnZUltcGwoaW5kZXgsIHVucGFjaywgcGl4ZWxzLCAwKTsKIH0KIAotZ2w6
OkVycm9yIFRleHR1cmVEM0RfM0Q6OnNldENvbXByZXNzZWRTdWJJbWFnZShHTGVudW0gdGFyZ2V0
LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpCb3ggJmFyZWEsIEdMZW51bSBmb3JtYXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhl
bFVucGFja1N0YXRlICZ1bnBhY2ssIHNpemVfdCBpbWFnZVNpemUsIGNvbnN0IHVpbnQ4X3QgKnBp
eGVscykKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzNEOjpzZXRDb21wcmVzc2VkU3ViSW1hZ2UoQ29u
dGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhl
bFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKIHsKICAgICBBU1NF
UlQodGFyZ2V0ID09IEdMX1RFWFRVUkVfM0QpOwogCkBAIC0xOTYwLDE0ICsyMjQyLDE5IEBAIGds
OjpFcnJvciBUZXh0dXJlRDNEXzNEOjpzZXRDb21wcmVzc2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdl
dCwgc2l6ZV90IGxldmVsLCBjb25zCiAgICAgcmV0dXJuIGNvbW1pdFJlZ2lvbihpbmRleCwgYXJl
YSk7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlRDNEXzNEOjpjb3B5SW1hZ2UoR0xlbnVtIHRhcmdl
dCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLCBHTGVudW0g
aW50ZXJuYWxGb3JtYXQsCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8zRDo6Y29weUltYWdlKENvbnRl
eHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVj
dGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsK
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29weWluZyAzRCB0
ZXh0dXJlcyBpcyB1bmltcGxlbWVudGVkLiIpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF8z
RDo6Y29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQsCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8zRDo6
Y29weVN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJj
ZUFyZWEsCkBAIC0xOTc2LDI5ICsyMjYzLDM4IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzNEOjpj
b3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKICAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RFWFRV
UkVfM0QpOwogCiAgICAgR0xpbnQgbGV2ZWwgICAgICAgICAgPSBzdGF0aWNfY2FzdDxHTGludD4o
aW1hZ2VMZXZlbCk7Ci0gICAgZ2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6
TWFrZTNEKGxldmVsKTsKIAotICAgIGlmIChjYW5DcmVhdGVSZW5kZXJUYXJnZXRGb3JJbWFnZShp
bmRleCkpCisgICAgLy8gQ3VycmVudGx5LCAzRCBzaW5nbGUtbGF5ZXIgYmxpdHMgYXJlIGJyb2tl
biBiZWNhdXNlIHdlIGRvbid0IGtub3cgaG93IHRvIG1ha2UgYW4gU1JWCisgICAgLy8gZm9yIGEg
c2luZ2xlIGxheWVyIG9mIGEgM0QgdGV4dHVyZS4KKyAgICAvLyBUT0RPKGptYWRpbGwpOiBJbnZl
c3RpZ2F0ZSAzRCBibGl0cyBpbiBEM0QxMS4KKyAgICAvLyBnbDo6SW1hZ2VJbmRleCBpbmRleCA9
IGdsOjpJbWFnZUluZGV4OjpNYWtlM0QobGV2ZWwpOworCisgICAgLy8gaWYgKCFjYW5DcmVhdGVS
ZW5kZXJUYXJnZXRGb3JJbWFnZShpbmRleCkpCiAgICAgewogICAgICAgICBBTkdMRV9UUlkobUlt
YWdlQXJyYXlbbGV2ZWxdLT5jb3B5RnJvbUZyYW1lYnVmZmVyKGRlc3RPZmZzZXQsIHNvdXJjZUFy
ZWEsIHNvdXJjZSkpOwogICAgICAgICBtRGlydHlJbWFnZXMgPSB0cnVlOwogICAgIH0KLSAgICBl
bHNlCi0gICAgewotICAgICAgICBBTkdMRV9UUlkoZW5zdXJlUmVuZGVyVGFyZ2V0KCkpOwotICAg
ICAgICBpZiAoaXNWYWxpZExldmVsKGxldmVsKSkKLSAgICAgICAgewotICAgICAgICAgICAgQU5H
TEVfVFJZKHVwZGF0ZVN0b3JhZ2VMZXZlbChsZXZlbCkpOwotICAgICAgICAgICAgQU5HTEVfVFJZ
KG1SZW5kZXJlci0+Y29weUltYWdlM0QoCi0gICAgICAgICAgICAgICAgc291cmNlLCBzb3VyY2VB
cmVhLCBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGdldEJhc2VMZXZlbEludGVybmFsRm9ybWF0
KCkpLmZvcm1hdCwKLSAgICAgICAgICAgICAgICBkZXN0T2Zmc2V0LCBtVGV4U3RvcmFnZSwgbGV2
ZWwpKTsKLSAgICAgICAgfQotICAgIH0KKyAgICAvLyBlbHNlCisgICAgLy97CisgICAgLy8gICAg
QU5HTEVfVFJZKGVuc3VyZVJlbmRlclRhcmdldCgpKTsKKyAgICAvLyAgICBpZiAoaXNWYWxpZExl
dmVsKGxldmVsKSkKKyAgICAvLyAgICB7CisgICAgLy8gICAgICAgIEFOR0xFX1RSWSh1cGRhdGVT
dG9yYWdlTGV2ZWwobGV2ZWwpKTsKKyAgICAvLyAgICAgICAgQU5HTEVfVFJZKG1SZW5kZXJlci0+
Y29weUltYWdlM0QoCisgICAgLy8gICAgICAgICAgICBzb3VyY2UsIHNvdXJjZUFyZWEsCisgICAg
Ly8gICAgICAgICAgICBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGdldEJhc2VMZXZlbEludGVy
bmFsRm9ybWF0KCkpLmZvcm1hdCwKKyAgICAvLyAgICAgICAgICAgIGRlc3RPZmZzZXQsIG1UZXhT
dG9yYWdlLCBsZXZlbCkpOworICAgIC8vICAgIH0KKyAgICAvL30KIAotICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6
RXJyb3IgVGV4dHVyZUQzRF8zRDo6c2V0U3RvcmFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2
ZWxzLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKQorZ2w6
OkVycm9yIFRleHR1cmVEM0RfM0Q6OnNldFN0b3JhZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSkK
IHsKICAgICBBU1NFUlQodGFyZ2V0ID09IEdMX1RFWFRVUkVfM0QpOwogCkBAIC0yMDgyLDEzICsy
Mzc4LDEzIEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzNEOjppbml0aWFsaXplU3RvcmFnZShib29s
IHJlbmRlclRhcmdldCkKICAgICAvLyBPbmx5IGluaXRpYWxpemUgdGhlIGZpcnN0IHRpbWUgdGhp
cyB0ZXh0dXJlIGlzIHVzZWQgYXMgYSByZW5kZXIgdGFyZ2V0IG9yIHNoYWRlciByZXNvdXJjZQog
ICAgIGlmIChtVGV4U3RvcmFnZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKICAgICAv
LyBkbyBub3QgYXR0ZW1wdCB0byBjcmVhdGUgc3RvcmFnZSBmb3Igbm9uZXhpc3RhbnQgZGF0YQog
ICAgIGlmICghaXNMZXZlbENvbXBsZXRlKGdldEJhc2VMZXZlbCgpKSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKICAgICB9CiAKICAgICBib29sIGNyZWF0ZVJlbmRlclRhcmdldCA9IChyZW5kZXJUYXJn
ZXQgfHwgSXNSZW5kZXJUYXJnZXRVc2FnZShtU3RhdGUuZ2V0VXNhZ2UoKSkpOwpAQCAtMjEyNiw3
ICsyNDIyLDcgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfM0Q6OmNyZWF0ZUNvbXBsZXRlU3RvcmFn
ZShib29sIHJlbmRlclRhcmdldCwgVGV4dHVyZVN0b3JhZ2UKICAgICAvLyBUT0RPOiBWZXJpZnkg
Y3JlYXRpb24gb2YgdGhlIHN0b3JhZ2Ugc3VjY2VlZGVkCiAgICAgKm91dFN0b3JhZ2UgPSBtUmVu
ZGVyZXItPmNyZWF0ZVRleHR1cmVTdG9yYWdlM0QoaW50ZXJuYWxGb3JtYXQsIHJlbmRlclRhcmdl
dCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGxldmVscyk7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9y
IFRleHR1cmVEM0RfM0Q6OnNldENvbXBsZXRlVGV4U3RvcmFnZShUZXh0dXJlU3RvcmFnZSAqbmV3
Q29tcGxldGVUZXhTdG9yYWdlKQpAQCAtMjIzNSwxMiArMjUzMSwxMiBAQCB2b2lkIFRleHR1cmVE
M0RfM0Q6OnJlZGVmaW5lSW1hZ2UoR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwg
Y29uc3QgZ2w6OgogICAgIGNvbnN0IGludCBzdG9yYWdlV2lkdGggID0gc3RkOjptYXgoMSwgZ2V0
TGV2ZWxaZXJvV2lkdGgoKSA+PiBsZXZlbCk7CiAgICAgY29uc3QgaW50IHN0b3JhZ2VIZWlnaHQg
PSBzdGQ6Om1heCgxLCBnZXRMZXZlbFplcm9IZWlnaHQoKSA+PiBsZXZlbCk7CiAgICAgY29uc3Qg
aW50IHN0b3JhZ2VEZXB0aCAgPSBzdGQ6Om1heCgxLCBnZXRMZXZlbFplcm9EZXB0aCgpID4+IGxl
dmVsKTsKKyAgICBjb25zdCBHTGVudW0gc3RvcmFnZUZvcm1hdCA9IGdldEJhc2VMZXZlbEludGVy
bmFsRm9ybWF0KCk7CiAKICAgICBtSW1hZ2VBcnJheVtsZXZlbF0tPnJlZGVmaW5lKEdMX1RFWFRV
UkVfM0QsIGludGVybmFsZm9ybWF0LCBzaXplLCBmYWxzZSk7CiAKICAgICBpZiAobVRleFN0b3Jh
Z2UpCiAgICAgewotICAgICAgICBjb25zdCBHTGVudW0gc3RvcmFnZUZvcm1hdCA9IGdldEJhc2VM
ZXZlbEludGVybmFsRm9ybWF0KCk7CiAgICAgICAgIGNvbnN0IGludCBzdG9yYWdlTGV2ZWxzID0g
bVRleFN0b3JhZ2UtPmdldExldmVsQ291bnQoKTsKIAogICAgICAgICBpZiAoKGxldmVsID49IHN0
b3JhZ2VMZXZlbHMgJiYgc3RvcmFnZUxldmVscyAhPSAwKSB8fApAQCAtMjM1Niw3ICsyNjUyLDgg
QEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6c2V0RUdMSW1hZ2VUYXJnZXQoR0xlbnVt
IHRhcmdldCwgZWdsOjpJbWFnZSAqaW1hZ2UKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6c2V0SW1h
Z2UoR0xlbnVtIHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6OnNldEltYWdl
KENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW1hZ2VMZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLApAQCAtMjM4OCw3ICsyNjg1
LDggQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6c2V0SW1hZ2UoR0xlbnVtIHRhcmdl
dCwKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0Rf
MkRBcnJheTo6c2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlRDNE
XzJEQXJyYXk6OnNldFN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VMZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFy
ZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9y
bWF0LApAQCAtMjQxOSw3ICsyNzE3LDggQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6
c2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAotZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6c2V0Q29tcHJlc3NlZEltYWdlKEdMZW51
bSB0YXJnZXQsCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8yREFycmF5OjpzZXRDb21wcmVzc2VkSW1h
Z2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlTGV2ZWwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFs
Rm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLApAQCAtMjQ1MCw4ICsyNzQ5LDE0IEBAIGdsOjpFcnJv
ciBUZXh0dXJlRDNEXzJEQXJyYXk6OnNldENvbXByZXNzZWRJbWFnZShHTGVudW0gdGFyZ2V0LAog
ICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF8yREFy
cmF5OjpzZXRDb21wcmVzc2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBj
b25zdCBnbDo6Qm94ICZhcmVhLCBHTGVudW0gZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRl
ICZ1bnBhY2ssIHNpemVfdCBpbWFnZVNpemUsIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKK2dsOjpF
cnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6OnNldENvbXByZXNzZWRTdWJJbWFnZShDb250ZXh0SW1w
bCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlU2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICpwaXhlbHMpCiB7CiAgICAgQVNTRVJUKHRhcmdldCA9PSBHTF9URVhUVVJFXzJEX0FS
UkFZKTsKIApAQCAtMjQ3NCwxNyArMjc3OSwyMiBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yREFy
cmF5OjpzZXRDb21wcmVzc2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLAog
ICAgICAgICBBTkdMRV9UUlkoY29tbWl0UmVnaW9uKGluZGV4LCBsYXllckFyZWEpKTsKICAgICB9
CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6Y29weUltYWdlKEdM
ZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJl
YSwgR0xlbnVtIGludGVybmFsRm9ybWF0LAorZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6
Y29weUltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVi
dWZmZXIgKnNvdXJjZSkKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvcHlpbmcgMkQgYXJyYXkgdGV4dHVyZXMgaXMg
dW5pbXBsZW1lbnRlZC4iKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6Y29w
eVN1YkltYWdlKEdMZW51bSB0YXJnZXQsCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8yREFycmF5Ojpj
b3B5U3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlTGV2ZWwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9m
ZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLApAQCAtMjQ5NSw3ICsyODA1LDcgQEAgZ2w6OkVycm9y
IFRleHR1cmVEM0RfMkRBcnJheTo6Y29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQsCiAgICAgR0xp
bnQgbGV2ZWwgICAgICAgICAgPSBzdGF0aWNfY2FzdDxHTGludD4oaW1hZ2VMZXZlbCk7CiAgICAg
Z2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFrZTJEQXJyYXkobGV2ZWws
IGRlc3RPZmZzZXQueik7CiAKLSAgICBpZiAoY2FuQ3JlYXRlUmVuZGVyVGFyZ2V0Rm9ySW1hZ2Uo
aW5kZXgpKQorICAgIGlmICghY2FuQ3JlYXRlUmVuZGVyVGFyZ2V0Rm9ySW1hZ2UoaW5kZXgpKQog
ICAgIHsKICAgICAgICAgZ2w6Ok9mZnNldCBkZXN0TGF5ZXJPZmZzZXQoZGVzdE9mZnNldC54LCBk
ZXN0T2Zmc2V0LnksIDApOwogICAgICAgICBBTkdMRV9UUlkobUltYWdlQXJyYXlbbGV2ZWxdW2Rl
c3RPZmZzZXQuel0tPmNvcHlGcm9tRnJhbWVidWZmZXIoZGVzdExheWVyT2Zmc2V0LCBzb3VyY2VB
cmVhLApAQCAtMjUxNSwxMCArMjgyNSwxNCBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yREFycmF5
Ojpjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICBtVGV4U3RvcmFn
ZSwgbGV2ZWwpKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05P
X0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1
cmVEM0RfMkRBcnJheTo6c2V0U3RvcmFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWxzLCBH
TGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKQorZ2w6OkVycm9y
IFRleHR1cmVEM0RfMkRBcnJheTo6c2V0U3RvcmFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5h
bEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OkV4dGVudHMgJnNpemUpCiB7CiAgICAgQVNTRVJUKHRhcmdldCA9PSBHTF9URVhUVVJFXzJE
X0FSUkFZKTsKIApAQCAtMjc2Myw3ICszMDc3LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRB
cnJheTo6dXBkYXRlU3RvcmFnZUxldmVsKGludCBsZXZlbCkKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCiB2b2lkIFRleHR1cmVEM0RfMkRBcnJheTo6ZGVsZXRlSW1hZ2VzKCkKQEAgLTI4
OTksNyArMzIxMyw4IEBAIEdMc2l6ZWkgVGV4dHVyZUQzRF9FeHRlcm5hbDo6Z2V0TGF5ZXJDb3Vu
dChpbnQgbGV2ZWwpIGNvbnN0CiAgICAgcmV0dXJuIDE7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJl
RDNEX0V4dGVybmFsOjpzZXRJbWFnZShHTGVudW0gdGFyZ2V0LAorZ2w6OkVycm9yIFRleHR1cmVE
M0RfRXh0ZXJuYWw6OnNldEltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZUxldmVsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50
cyAmc2l6ZSwKQEAgLTI5MTMsNyArMzIyOCw4IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEX0V4dGVy
bmFsOjpzZXRJbWFnZShHTGVudW0gdGFyZ2V0LAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5hbDo6c2V0
U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjpz
ZXRTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VMZXZlbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCkBA
IC0yOTI1LDcgKzMyNDEsOCBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5hbDo6c2V0U3Vi
SW1hZ2UoR0xlbnVtIHRhcmdldCwKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OnNldENvbXByZXNz
ZWRJbWFnZShHTGVudW0gdGFyZ2V0LAorZ2w6OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OnNl
dENvbXByZXNzZWRJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFn
ZUxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLApAQCAtMjkzNyw3ICsz
MjU0LDggQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OnNldENvbXByZXNzZWRJbWFn
ZShHTGVudW0gdGFyZ2V0LAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5hbDo6c2V0Q29tcHJlc3NlZFN1
YkltYWdlKEdMZW51bSB0YXJnZXQsCitnbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5hbDo6c2V0
Q29tcHJlc3NlZFN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LApAQCAtMjk0OSw3ICszMjY3
LDggQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OnNldENvbXByZXNzZWRTdWJJbWFn
ZShHTGVudW0gdGFyZ2V0LAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5hbDo6Y29weUltYWdlKEdMZW51
bSB0YXJnZXQsCitnbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5hbDo6Y29weUltYWdlKENvbnRl
eHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGltYWdlTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKQEAgLTI5
NTksNyArMzI3OCw4IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjpjb3B5SW1hZ2Uo
R0xlbnVtIHRhcmdldCwKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OmNvcHlTdWJJbWFnZShHTGVu
dW0gdGFyZ2V0LAorZ2w6OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OmNvcHlTdWJJbWFnZShD
b250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZUxldmVsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFu
Z2xlICZzb3VyY2VBcmVhLApAQCAtMjk2OSw3ICszMjg5LDggQEAgZ2w6OkVycm9yIFRleHR1cmVE
M0RfRXh0ZXJuYWw6OmNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAogICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF9F
eHRlcm5hbDo6c2V0U3RvcmFnZShHTGVudW0gdGFyZ2V0LAorZ2w6OkVycm9yIFRleHR1cmVEM0Rf
RXh0ZXJuYWw6OnNldFN0b3JhZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbHMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0
ZW50cyAmc2l6ZSkKQEAgLTI5OTIsNyArMzMxMyw3IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEX0V4
dGVybmFsOjpzZXRJbWFnZUV4dGVybmFsKEdMZW51bSB0YXJnZXQsCiAgICAgICAgIG1UZXhTdG9y
YWdlID0gbVJlbmRlcmVyLT5jcmVhdGVUZXh0dXJlU3RvcmFnZUV4dGVybmFsKHN0cmVhbSwgZGVz
Yyk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0
dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgVGV4dHVyZUQzRF9FeHRlcm5hbDo6YmluZFRl
eEltYWdlKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKQEAgLTMwMzksMjAgKzMzNjAsMjAgQEAgZ2w6
OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OmluaXRpYWxpemVTdG9yYWdlKGJvb2wgcmVuZGVy
VGFyZ2V0KQogewogICAgIC8vIFRleHR1cmUgc3RvcmFnZSBpcyBjcmVhdGVkIHdoZW4gYW4gZXh0
ZXJuYWwgaW1hZ2UgaXMgYm91bmQKICAgICBBU1NFUlQobVRleFN0b3JhZ2UpOwotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQog
CiBnbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5hbDo6Y3JlYXRlQ29tcGxldGVTdG9yYWdlKGJv
b2wgcmVuZGVyVGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXh0dXJlU3RvcmFnZSAqKm91dFRleFN0b3JhZ2UpIGNvbnN0CiB7CiAg
ICAgVU5SRUFDSEFCTEUoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJu
YWw6OnNldENvbXBsZXRlVGV4U3RvcmFnZShUZXh0dXJlU3RvcmFnZSAqbmV3Q29tcGxldGVUZXhT
dG9yYWdlKQogewogICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0
dXJlRDNEX0V4dGVybmFsOjp1cGRhdGVTdG9yYWdlKCkKQEAgLTMwNjAsNyArMzM4MSw3IEBAIGds
OjpFcnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjp1cGRhdGVTdG9yYWdlKCkKICAgICAvLyBUZXh0
dXJlIHN0b3JhZ2UgZG9lcyBub3QgbmVlZCB0byBiZSB1cGRhdGVkIHNpbmNlIGl0IGlzIGFscmVh
ZHkgbG9hZGVkIHdpdGggdGhlIGxhdGVzdAogICAgIC8vIGV4dGVybmFsIGltYWdlCiAgICAgQVNT
RVJUKG1UZXhTdG9yYWdlKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkltYWdlSW5kZXhJdGVyYXRvciBUZXh0
dXJlRDNEX0V4dGVybmFsOjppbWFnZUl0ZXJhdG9yKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4dHVyZUQzRC5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0
dXJlRDNELmgKaW5kZXggOTkzNDM2MzJhOTRhMjdkOTgxNGYyZWY3MmQ2ZWQ4YjJhMmY0MmYyNC4u
M2RhNTllM2M0YjA3ZTNkMWRjODczZTY0ZGFhOWM4ZDI5NmRmNDBhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0dXJlRDNE
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9UZXh0dXJlRDNELmgKQEAgLTQ1LDYgKzQ1LDEzIEBAIGNsYXNzIFRleHR1cmVEM0QgOiBwdWJs
aWMgVGV4dHVyZUltcGwKICAgICBHTGludCBnZXRCYXNlTGV2ZWxIZWlnaHQoKSBjb25zdDsKICAg
ICBHTGVudW0gZ2V0QmFzZUxldmVsSW50ZXJuYWxGb3JtYXQoKSBjb25zdDsKIAorICAgIGdsOjpF
cnJvciBzZXRTdG9yYWdlTXVsdGlzYW1wbGUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsRm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2Nh
dGlvbnMpIG92ZXJyaWRlOworCiAgICAgYm9vbCBpc0ltbXV0YWJsZSgpIGNvbnN0IHsgcmV0dXJu
IG1JbW11dGFibGU7IH0KIAogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdldFJlbmRlclRhcmdldChj
b25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIFJlbmRlclRhcmdldEQzRCAqKm91dFJUKSA9IDA7
CkBAIC02MCw3ICs2Nyw3IEBAIGNsYXNzIFRleHR1cmVEM0QgOiBwdWJsaWMgVGV4dHVyZUltcGwK
ICAgICB2aXJ0dWFsIGdsOjpFcnJvciBzZXRJbWFnZUV4dGVybmFsKEdMZW51bSB0YXJnZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN0cmVhbSAqc3RyZWFt
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpTdHJl
YW06OkdMVGV4dHVyZURlc2NyaXB0aW9uICZkZXNjKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3Ig
Z2VuZXJhdGVNaXBtYXAoKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZ2VuZXJhdGVNaXBtYXAo
Q29udGV4dEltcGwgKmNvbnRleHRJbXBsKSBvdmVycmlkZTsKICAgICBUZXh0dXJlU3RvcmFnZSAq
Z2V0U3RvcmFnZSgpOwogICAgIEltYWdlRDNEICpnZXRCYXNlTGV2ZWxJbWFnZSgpIGNvbnN0Owog
CkBAIC0xNDUsMzYgKzE1Miw4MSBAQCBjbGFzcyBUZXh0dXJlRDNEXzJEIDogcHVibGljIFRleHR1
cmVEM0QKICAgICBHTGVudW0gZ2V0SW50ZXJuYWxGb3JtYXQoR0xpbnQgbGV2ZWwpIGNvbnN0Owog
ICAgIGJvb2wgaXNEZXB0aChHTGludCBsZXZlbCkgY29uc3Q7CiAKLSAgICBnbDo6RXJyb3Igc2V0
SW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQs
IGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywg
Y29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3Igc2V0U3ViSW1h
Z2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6Qm94ICZhcmVhLCBHTGVu
dW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVy
cmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0SW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAor
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5h
bEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4
ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICpwaXhlbHMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRTdWJJbWFnZShDb250ZXh0
SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRl
ICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVs
cykgb3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJyb3Igc2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0
YXJnZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0
ZW50cyAmc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQ
aXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIHNpemVfdCBpbWFnZVNpemUsIGNvbnN0IHVpbnQ4X3Qg
KnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIHNldENvbXByZXNzZWRTdWJJbWFnZShH
TGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpCb3ggJmFyZWEsIEdMZW51bSBm
b3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4
ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXplX3QgaW1hZ2VTaXplLCBjb25zdCB1aW50OF90ICpw
aXhlbHMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkSW1hZ2UoQ29udGV4
dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZl
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZz
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5w
YWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICpwaXhlbHMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkU3ViSW1h
Z2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpCb3ggJmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwogCi0gICAgZ2w6OkVycm9y
IGNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpSZWN0YW5n
bGUgJnNvdXJjZUFyZWEsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICBnbDo6RXJyb3IgY29w
eUltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpIG92ZXJyaWRlOwot
ICAgIGdsOjpFcnJvciBjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBj
b25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VB
cmVhLAorICAgIGdsOjpFcnJvciBjb3B5U3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpIG92ZXJyaWRlOwogCi0gICAgZ2w6
OkVycm9yIGNvcHlUZXh0dXJlKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICBnbDo6RXJyb3Ig
Y29weVRleHR1cmUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
bGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBzb3VyY2VMZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCB1bnBhY2tGbGlwWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQ
cmVtdWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1Vu
bXVsdGlwbHlBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1
cmUgKnNvdXJjZSkgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIGNvcHlTdWJUZXh0dXJlKGNvbnN0
IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgZ2w6OkVycm9yIGNvcHlTdWJUZXh0dXJlKENv
bnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc291cmNlTGV2ZWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrRmxpcFksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpIG92ZXJy
aWRlOwotICAgIGdsOjpFcnJvciBjb3B5Q29tcHJlc3NlZFRleHR1cmUoY29uc3QgZ2w6OlRleHR1
cmUgKnNvdXJjZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGNvcHlDb21wcmVzc2VkVGV4dHVy
ZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsIGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpIG92
ZXJyaWRlOwogCi0gICAgZ2w6OkVycm9yIHNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90
IGxldmVscywgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSkg
b3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNldFN0b3JhZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJ
bXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGxldmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OkV4dGVudHMgJnNpemUpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGJpbmRUZXhJbWFn
ZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlVGV4SW1h
Z2UoKTsKQEAgLTE4Nyw2ICsyMzksMTMgQEAgY2xhc3MgVGV4dHVyZUQzRF8yRCA6IHB1YmxpYyBU
ZXh0dXJlRDNECiAgICAgdmlydHVhbCBnbDo6SW1hZ2VJbmRleCBnZXRJbWFnZUluZGV4KEdMaW50
IG1pcCwgR0xpbnQgbGF5ZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkSW5kZXgo
Y29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4KSBjb25zdDsKIAorICAgIGdsOjpFcnJvciBzZXRT
dG9yYWdlTXVsdGlzYW1wbGUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlvbnMpIG92
ZXJyaWRlOworCiAgIHByb3RlY3RlZDoKICAgICB2b2lkIG1hcmtBbGxJbWFnZXNEaXJ0eSgpIG92
ZXJyaWRlOwogCkBAIC0yMjksMjIgKzI4OCw1OSBAQCBjbGFzcyBUZXh0dXJlRDNEX0N1YmUgOiBw
dWJsaWMgVGV4dHVyZUQzRAogICAgIEdMZW51bSBnZXRJbnRlcm5hbEZvcm1hdChHTGludCBsZXZl
bCwgR0xpbnQgbGF5ZXIpIGNvbnN0OwogICAgIGJvb2wgaXNEZXB0aChHTGludCBsZXZlbCwgR0xp
bnQgbGF5ZXIpIGNvbnN0OwogCi0gICAgZ2w6OkVycm9yIHNldEltYWdlKEdMZW51bSB0YXJnZXQs
IHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAm
c2l6ZSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVs
cykgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIHNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNp
emVfdCBsZXZlbCwgY29uc3QgZ2w6OkJveCAmYXJlYSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRl
ICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9y
IHNldEltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAor
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFj
aywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlk
ZTsKKyAgICBnbDo6RXJyb3Igc2V0U3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpCb3ggJmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwogCi0gICAg
Z2w6OkVycm9yIHNldENvbXByZXNzZWRJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWws
IEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5w
YWNrLCBzaXplX3QgaW1hZ2VTaXplLCBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwot
ICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90
IGxldmVsLCBjb25zdCBnbDo6Qm94ICZhcmVhLCBHTGVudW0gZm9ybWF0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFj
aywgc2l6ZV90IGltYWdlU2l6ZSwgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAg
ICBnbDo6RXJyb3Igc2V0Q29tcHJlc3NlZEltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlk
ZTsKKyAgICBnbDo6RXJyb3Igc2V0Q29tcHJlc3NlZFN1YkltYWdlKENvbnRleHRJbXBsICpjb250
ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRl
ICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1h
Z2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhf
dCAqcGl4ZWxzKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciBjb3B5SW1hZ2UoR0xlbnVtIHRh
cmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLCBHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsCisgICAgZ2w6OkVycm9yIGNvcHlJbWFnZShDb250ZXh0SW1wbCAq
Y29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgY29weVN1
YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6Ok9mZnNldCAmZGVz
dE9mZnNldCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICBnbDo6RXJyb3Ig
Y29weVN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZk
ZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmc291cmNlQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlciAqc291cmNlKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciBzZXRTdG9yYWdlKEdM
ZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3Qg
Z2w6OkV4dGVudHMgJnNpemUpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRTdG9yYWdlKENv
bnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKSBvdmVycmlkZTsKIAogICAgIHZpcnR1
YWwgdm9pZCBiaW5kVGV4SW1hZ2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKICAgICB2aXJ0dWFs
IHZvaWQgcmVsZWFzZVRleEltYWdlKCk7CkBAIC0yOTUsMjIgKzM5MSw1OSBAQCBjbGFzcyBUZXh0
dXJlRDNEXzNEIDogcHVibGljIFRleHR1cmVEM0QKICAgICBHTGVudW0gZ2V0SW50ZXJuYWxGb3Jt
YXQoR0xpbnQgbGV2ZWwpIGNvbnN0OwogICAgIGJvb2wgaXNEZXB0aChHTGludCBsZXZlbCkgY29u
c3Q7CiAKLSAgICBnbDo6RXJyb3Igc2V0SW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVs
LCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLCBHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBp
eGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsK
LSAgICBnbDo6RXJyb3Igc2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBj
b25zdCBnbDo6Qm94ICZhcmVhLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29u
c3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0SW1hZ2UoQ29u
dGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBm
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOworICAgIGdsOjpF
cnJvciBzZXRTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJl
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJyb3Igc2V0
Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVy
bmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIHNpemVfdCBp
bWFnZVNpemUsIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9y
IHNldENvbXByZXNzZWRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0
IGdsOjpCb3ggJmFyZWEsIEdMZW51bSBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXplX3QgaW1h
Z2VTaXplLCBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBz
ZXRDb21wcmVzc2VkSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOworICAgIGdsOjpF
cnJvciBzZXRDb21wcmVzc2VkU3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92
ZXJyaWRlOwogCi0gICAgZ2w6OkVycm9yIGNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3Qg
bGV2ZWwsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsIEdMZW51bSBpbnRlcm5hbEZv
cm1hdCwKKyAgICBnbDo6RXJyb3IgY29weUltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlu
dGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyICpzb3VyY2UpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBjb3B5U3ViSW1hZ2UoR0xlbnVt
IHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBjb25z
dCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgIGdsOjpFcnJvciBjb3B5U3ViSW1hZ2Uo
Q29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVh
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3Vy
Y2UpIG92ZXJyaWRlOwogCi0gICAgZ2w6OkVycm9yIHNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwg
c2l6ZV90IGxldmVscywgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAm
c2l6ZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNldFN0b3JhZ2UoQ29udGV4dEltcGwgKmNv
bnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVscywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkV4dGVudHMgJnNpemUpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGJpbmRU
ZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNl
VGV4SW1hZ2UoKTsKQEAgLTM2MCwyMiArNDkzLDU5IEBAIGNsYXNzIFRleHR1cmVEM0RfMkRBcnJh
eSA6IHB1YmxpYyBUZXh0dXJlRDNECiAgICAgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KEdMaW50
IGxldmVsKSBjb25zdDsKICAgICBib29sIGlzRGVwdGgoR0xpbnQgbGV2ZWwpIGNvbnN0OwogCi0g
ICAgZ2w6OkVycm9yIHNldEltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVt
IGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwgR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFj
a1N0YXRlICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgZ2w6
OkVycm9yIHNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6
OkJveCAmYXJlYSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIGNvbnN0IHVpbnQ4
X3QgKnBpeGVscykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNldEltYWdlKENvbnRleHRJbXBs
ICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0
U3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwogCi0gICAgZ2w6OkVycm9yIHNldENvbXByZXNz
ZWRJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1h
dCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXplX3QgaW1hZ2VTaXpl
LCBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBzZXRDb21w
cmVzc2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6Qm94
ICZhcmVhLCBHTGVudW0gZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgc2l6ZV90IGltYWdlU2l6ZSwg
Y29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0Q29tcHJl
c3NlZEltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0
Q29tcHJlc3NlZFN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsK
IAotICAgIGdsOjpFcnJvciBjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBj
b25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisg
ICAgZ2w6OkVycm9yIGNvcHlJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291
cmNlKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgY29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQs
IHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwgY29uc3QgZ2w6OlJl
Y3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICBnbDo6RXJyb3IgY29weVN1YkltYWdlKENvbnRleHRJ
bXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKSBvdmVy
cmlkZTsKIAotICAgIGdsOjpFcnJvciBzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBs
ZXZlbHMsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpIG92
ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRTdG9yYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1w
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBsZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpF
eHRlbnRzICZzaXplKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBiaW5kVGV4SW1hZ2Uo
ZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVRleEltYWdl
KCk7CkBAIC00MjQsNyArNTk0LDggQEAgY2xhc3MgVGV4dHVyZUQzRF9FeHRlcm5hbCA6IHB1Ymxp
YyBUZXh0dXJlRDNECiAgICAgSW1hZ2VEM0QgKmdldEltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4
ICZpbmRleCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgR0xzaXplaSBnZXRMYXllckNvdW50KGludCBs
ZXZlbCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJyb3Igc2V0SW1hZ2UoR0xlbnVtIHRh
cmdldCwKKyAgICBnbDo6RXJyb3Igc2V0SW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAor
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5h
bEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUs
CkBAIC00MzIsNyArNjAzLDggQEAgY2xhc3MgVGV4dHVyZUQzRF9FeHRlcm5hbCA6IHB1YmxpYyBU
ZXh0dXJlRDNECiAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAogICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIGds
OjpFcnJvciBzZXRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAorICAgIGdsOjpFcnJvciBzZXRTdWJJ
bWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKQEAgLTQ0MCwxNCArNjEyLDE2IEBAIGNs
YXNzIFRleHR1cmVEM0RfRXh0ZXJuYWwgOiBwdWJsaWMgVGV4dHVyZUQzRAogICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwogCi0g
ICAgZ2w6OkVycm9yIHNldENvbXByZXNzZWRJbWFnZShHTGVudW0gdGFyZ2V0LAorICAgIGdsOjpF
cnJvciBzZXRDb21wcmVzc2VkSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwotICAg
IGdsOjpFcnJvciBzZXRDb21wcmVzc2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICBnbDo6
RXJyb3Igc2V0Q29tcHJlc3NlZFN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKQEAgLTQ1NSwxOCArNjI5LDIx
IEBAIGNsYXNzIFRleHR1cmVEM0RfRXh0ZXJuYWwgOiBwdWJsaWMgVGV4dHVyZUQzRAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlU2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJp
ZGU7CiAKLSAgICBnbDo6RXJyb3IgY29weUltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgZ2w6OkVy
cm9yIGNvcHlJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxl
dmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNl
QXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKSBvdmVy
cmlkZTsKLSAgICBnbDo6RXJyb3IgY29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgZ2w6
OkVycm9yIGNvcHlTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9m
ZnNldCAmZGVzdE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6RnJhbWVidWZmZXIgKnNvdXJjZSkgb3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJyb3Igc2V0U3Rv
cmFnZShHTGVudW0gdGFyZ2V0LAorICAgIGdsOjpFcnJvciBzZXRTdG9yYWdlKENvbnRleHRJbXBs
ICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKSBvdmVycmlkZTsKQEAgLTUwMCw2ICs2NzcsOTkgQEAg
Y2xhc3MgVGV4dHVyZUQzRF9FeHRlcm5hbCA6IHB1YmxpYyBUZXh0dXJlRDNECiAKICAgICBib29s
IGlzSW1hZ2VDb21wbGV0ZShjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpIGNvbnN0IG92ZXJy
aWRlOwogfTsKKworY2xhc3MgVGV4dHVyZUQzRF8yRE11bHRpc2FtcGxlIDogcHVibGljIFRleHR1
cmVEM0QKK3sKKyAgcHVibGljOgorICAgIFRleHR1cmVEM0RfMkRNdWx0aXNhbXBsZShjb25zdCBn
bDo6VGV4dHVyZVN0YXRlICZkYXRhLCBSZW5kZXJlckQzRCAqcmVuZGVyZXIpOworICAgIH5UZXh0
dXJlRDNEXzJETXVsdGlzYW1wbGUoKSBvdmVycmlkZTsKKworICAgIEltYWdlRDNEICpnZXRJbWFn
ZShjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpIGNvbnN0IG92ZXJyaWRlOworICAgIGdsOjpF
cnJvciBzZXRJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZl
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1
bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3Zl
cnJpZGU7CisgICAgZ2w6OkVycm9yIHNldFN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1w
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6Qm94ICZhcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKwor
ICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJy
aWRlOworICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkU3ViSW1hZ2UoQ29udGV4dEltcGwgKmNv
bnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3Rh
dGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBp
bWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICpwaXhlbHMpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGNvcHlJbWFnZShDb250ZXh0
SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Ig
Y29weVN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZk
ZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlciAqc291cmNlKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBzZXRTdG9yYWdlKENv
bnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKSBvdmVycmlkZTsKKworICAgIGdsOjpF
cnJvciBzZXRJbWFnZUV4dGVybmFsKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWdsOjpTdHJlYW0gKnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OlN0cmVhbTo6R0xUZXh0dXJlRGVzY3JpcHRpb24gJmRlc2MpIG92
ZXJyaWRlOworCisgICAgdm9pZCBiaW5kVGV4SW1hZ2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKSBv
dmVycmlkZTsKKyAgICB2b2lkIHJlbGVhc2VUZXhJbWFnZSgpIG92ZXJyaWRlOworCisgICAgZ2w6
OkVycm9yIHNldEVHTEltYWdlVGFyZ2V0KEdMZW51bSB0YXJnZXQsIGVnbDo6SW1hZ2UgKmltYWdl
KSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBnZXRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6Oklt
YWdlSW5kZXggJmluZGV4LCBSZW5kZXJUYXJnZXREM0QgKipvdXRSVCkgb3ZlcnJpZGU7CisKKyAg
ICBnbDo6SW1hZ2VJbmRleEl0ZXJhdG9yIGltYWdlSXRlcmF0b3IoKSBjb25zdCBvdmVycmlkZTsK
KyAgICBnbDo6SW1hZ2VJbmRleCBnZXRJbWFnZUluZGV4KEdMaW50IG1pcCwgR0xpbnQgbGF5ZXIp
IGNvbnN0IG92ZXJyaWRlOworICAgIGJvb2wgaXNWYWxpZEluZGV4KGNvbnN0IGdsOjpJbWFnZUlu
ZGV4ICZpbmRleCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0TGF5
ZXJDb3VudChpbnQgbGV2ZWwpIGNvbnN0OworCisgIHByb3RlY3RlZDoKKyAgICB2b2lkIG1hcmtB
bGxJbWFnZXNEaXJ0eSgpIG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgZ2w6OkVycm9yIGlu
aXRpYWxpemVTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0KSBvdmVycmlkZTsKKyAgICBnbDo6RXJy
b3IgY3JlYXRlQ29tcGxldGVTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKipvdXRUZXhTdG9yYWdlKSBj
b25zdCBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0Q29tcGxldGVUZXhTdG9yYWdlKFRleHR1
cmVTdG9yYWdlICpuZXdDb21wbGV0ZVRleFN0b3JhZ2UpIG92ZXJyaWRlOworCisgICAgZ2w6OkVy
cm9yIHVwZGF0ZVN0b3JhZ2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRNaXBtYXBJbWFnZXMo
KSBvdmVycmlkZTsKKworICAgIGJvb2wgaXNJbWFnZUNvbXBsZXRlKGNvbnN0IGdsOjpJbWFnZUlu
ZGV4ICZpbmRleCkgY29uc3Qgb3ZlcnJpZGU7Cit9OwogfQogCiAjZW5kaWYgLy8gTElCQU5HTEVf
UkVOREVSRVJfRDNEX1RFWFRVUkVEM0RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4dHVyZVN0b3JhZ2UuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4dHVyZVN0b3Jh
Z2UuaAppbmRleCA0MTcyMzc0OTVkNjc3MWI0ODU4OTA4ZjAwM2VkODMxZTNmYTBjNzM2Li5jMjll
MjBmMGQzYzlhNTQ0NjY5OTQyOGIyNTQ1M2MwMjZlYzY0NmIxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVTdG9yYWdl
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9UZXh0dXJlU3RvcmFnZS5oCkBAIC01MCw3ICs1MCwxMCBAQCBjbGFzcyBUZXh0dXJlU3RvcmFn
ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxEYXRh
KSA9IDA7CiAKICAgICAvLyBUaGlzIGlzIGEgbm8tb3AgZm9yIG1vc3QgaW1wbGVtZW50YXRpb25z
IG9mIFRleHR1cmVTdG9yYWdlLiBTb21lIChlLmcuIFRleHR1cmVTdG9yYWdlMTFfMkQpIG1pZ2h0
IG92ZXJyaWRlIGl0LgotICAgIHZpcnR1YWwgZ2w6OkVycm9yIHVzZUxldmVsWmVyb1dvcmthcm91
bmRUZXh0dXJlKGJvb2wgdXNlTGV2ZWxaZXJvVGV4dHVyZSkgeyByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsgfQorICAgIHZpcnR1YWwgZ2w6OkVycm9yIHVzZUxldmVsWmVyb1dvcmthcm91
bmRUZXh0dXJlKGJvb2wgdXNlTGV2ZWxaZXJvVGV4dHVyZSkKKyAgICB7CisgICAgICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOworICAgIH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmFyeWluZ1BhY2tpbmcuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WYXJ5
aW5nUGFja2luZy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4ZmU0NmRlZDFm
NDY0MGRjMDI1ZDUxOGI1MWY0NWNmZjFhNzVlZDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9WYXJ5aW5nUGFja2luZy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MDEg
KzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgotLy8KLS8vIFZhcnlpbmdQYWNraW5nOgotLy8gICBDbGFzcyB3aGljaCBk
ZXNjcmliZXMgYSBtYXBwaW5nIGZyb20gdmFyeWluZ3MgdG8gcmVnaXN0ZXJzIGluIEQzRAotLy8g
ICBmb3IgbGlua2luZyBiZXR3ZWVuIHNoYWRlciBzdGFnZXMuCi0vLwotCi0jaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZDNkL1ZhcnlpbmdQYWNraW5nLmgiCi0KLSNpbmNsdWRlICJjb21tb24v
dXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91dEhM
U0wuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvRHluYW1pY0hMU0wuaCIKLSNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5oIgotCi1uYW1lc3BhY2Ug
cngKLXsKLQotLy8gSW1wbGVtZW50YXRpb24gb2YgVmFyeWluZ1BhY2tpbmc6OkJ1aWx0aW5WYXJ5
aW5nCi1WYXJ5aW5nUGFja2luZzo6QnVpbHRpblZhcnlpbmc6OkJ1aWx0aW5WYXJ5aW5nKCkgOiBl
bmFibGVkKGZhbHNlKSwgaW5kZXgoMCksIHN5c3RlbVZhbHVlKGZhbHNlKQotewotfQotCi1zdGQ6
OnN0cmluZyBWYXJ5aW5nUGFja2luZzo6QnVpbHRpblZhcnlpbmc6OnN0cigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIChzeXN0ZW1WYWx1ZSA/IHNlbWFudGljIDogKHNlbWFudGljICsgU3RyKGluZGV4
KSkpOwotfQotCi12b2lkIFZhcnlpbmdQYWNraW5nOjpCdWlsdGluVmFyeWluZzo6ZW5hYmxlU3lz
dGVtKGNvbnN0IHN0ZDo6c3RyaW5nICZzeXN0ZW1WYWx1ZVNlbWFudGljKQotewotICAgIGVuYWJs
ZWQgICAgID0gdHJ1ZTsKLSAgICBzZW1hbnRpYyAgICA9IHN5c3RlbVZhbHVlU2VtYW50aWM7Ci0g
ICAgc3lzdGVtVmFsdWUgPSB0cnVlOwotfQotCi12b2lkIFZhcnlpbmdQYWNraW5nOjpCdWlsdGlu
VmFyeWluZzo6ZW5hYmxlKGNvbnN0IHN0ZDo6c3RyaW5nICZzZW1hbnRpY1ZhbCwgdW5zaWduZWQg
aW50IGluZGV4VmFsKQotewotICAgIGVuYWJsZWQgID0gdHJ1ZTsKLSAgICBzZW1hbnRpYyA9IHNl
bWFudGljVmFsOwotICAgIGluZGV4ICAgID0gaW5kZXhWYWw7Ci19Ci0KLS8vIEltcGxlbWVudGF0
aW9uIG9mIFZhcnlpbmdQYWNraW5nCi1WYXJ5aW5nUGFja2luZzo6VmFyeWluZ1BhY2tpbmcoR0x1
aW50IG1heFZhcnlpbmdWZWN0b3JzKQotICAgIDogbVJlZ2lzdGVyTWFwKG1heFZhcnlpbmdWZWN0
b3JzKSwgbUJ1aWx0aW5JbmZvKFNIQURFUl9UWVBFX01BWCkKLXsKLX0KLQotLy8gUGFja3MgdmFy
eWluZ3MgaW50byBnZW5lcmljIHZhcnlpbmcgcmVnaXN0ZXJzLCB1c2luZyB0aGUgYWxnb3JpdGht
IGZyb20KLS8vIFNlZSBbT3BlbkdMIEVTIFNoYWRpbmcgTGFuZ3VhZ2UgMS4wMCByZXYuIDE3XSBh
cHBlbmRpeCBBIHNlY3Rpb24gNyBwYWdlIDExMQotLy8gQWxzbyBbT3BlbkdMIEVTIFNoYWRpbmcg
TGFuZ3VhZ2UgMy4wMCByZXYuIDRdIFNlY3Rpb24gMTEgcGFnZSAxMTkKLS8vIFJldHVybnMgZmFs
c2UgaWYgdW5zdWNjZXNzZnVsLgotYm9vbCBWYXJ5aW5nUGFja2luZzo6cGFja1ZhcnlpbmcoY29u
c3QgUGFja2VkVmFyeWluZyAmcGFja2VkVmFyeWluZykKLXsKLSAgICB1bnNpZ25lZCBpbnQgdmFy
eWluZ1Jvd3MgICAgPSAwOwotICAgIHVuc2lnbmVkIGludCB2YXJ5aW5nQ29sdW1ucyA9IDA7Ci0K
LSAgICBjb25zdCBhdXRvICZ2YXJ5aW5nID0gKnBhY2tlZFZhcnlpbmcudmFyeWluZzsKLQotICAg
IC8vICJOb24gLSBzcXVhcmUgbWF0cmljZXMgb2YgdHlwZSBtYXRDeFIgY29uc3VtZSB0aGUgc2Ft
ZSBzcGFjZSBhcyBhIHNxdWFyZSBtYXRyaXggb2YgdHlwZSBtYXROCi0gICAgLy8gd2hlcmUgTiBp
cyB0aGUgZ3JlYXRlciBvZiBDIGFuZCBSLlZhcmlhYmxlcyBvZiB0eXBlIG1hdDIgb2NjdXBpZXMg
MiBjb21wbGV0ZSByb3dzLiIKLSAgICAvLyBIZXJlIHdlIGFyZSBhIGJpdCBtb3JlIGNvbnNlcnZh
dGl2ZSBhbmQgYWxsb3cgcGFja2luZyBub24tc3F1YXJlIG1hdHJpY2VzIG1vcmUgdGlnaHRseS4K
LSAgICAvLyBNYWtlIHN1cmUgd2UgdXNlIHRyYW5zcG9zZWQgbWF0cml4IHR5cGVzIHRvIGNvdW50
IHJlZ2lzdGVycyBjb3JyZWN0bHkuCi0gICAgQVNTRVJUKCF2YXJ5aW5nLmlzU3RydWN0KCkpOwot
ICAgIEdMZW51bSB0cmFuc3Bvc2VkVHlwZSA9IGdsOjpUcmFuc3Bvc2VNYXRyaXhUeXBlKHZhcnlp
bmcudHlwZSk7Ci0gICAgdmFyeWluZ1Jvd3MgICAgICAgICAgID0gZ2w6OlZhcmlhYmxlUm93Q291
bnQodHJhbnNwb3NlZFR5cGUpOwotICAgIHZhcnlpbmdDb2x1bW5zICAgICAgICA9IGdsOjpWYXJp
YWJsZUNvbHVtbkNvdW50KHRyYW5zcG9zZWRUeXBlKTsKLQotICAgIC8vICJBcnJheXMgb2Ygc2l6
ZSBOIGFyZSBhc3N1bWVkIHRvIHRha2UgTiB0aW1lcyB0aGUgc2l6ZSBvZiB0aGUgYmFzZSB0eXBl
IgotICAgIHZhcnlpbmdSb3dzICo9IHZhcnlpbmcuZWxlbWVudENvdW50KCk7Ci0KLSAgICB1bnNp
Z25lZCBpbnQgbWF4VmFyeWluZ1ZlY3RvcnMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1S
ZWdpc3Rlck1hcC5zaXplKCkpOwotCi0gICAgLy8gIkZvciAyLCAzIGFuZCA0IGNvbXBvbmVudCB2
YXJpYWJsZXMgcGFja2luZyBpcyBzdGFydGVkIHVzaW5nIHRoZSAxc3QgY29sdW1uIG9mIHRoZSAx
c3Qgcm93LgotICAgIC8vIFZhcmlhYmxlcyBhcmUgdGhlbiBhbGxvY2F0ZWQgdG8gc3VjY2Vzc2l2
ZSByb3dzLCBhbGlnbmluZyB0aGVtIHRvIHRoZSAxc3QgY29sdW1uLiIKLSAgICBpZiAodmFyeWlu
Z0NvbHVtbnMgPj0gMiAmJiB2YXJ5aW5nQ29sdW1ucyA8PSA0KQotICAgIHsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgcm93ID0gMDsgcm93IDw9IG1heFZhcnlpbmdWZWN0b3JzIC0gdmFyeWlu
Z1Jvd3M7ICsrcm93KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaXNGcmVlKHJvdywgMCwg
dmFyeWluZ1Jvd3MsIHZhcnlpbmdDb2x1bW5zKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBpbnNlcnQocm93LCAwLCBwYWNrZWRWYXJ5aW5nKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vICJGb3IgMiBj
b21wb25lbnQgdmFyaWFibGVzLCB3aGVuIHRoZXJlIGFyZSBubyBzcGFyZSByb3dzLCB0aGUgc3Ry
YXRlZ3kgaXMgc3dpdGNoZWQgdG8KLSAgICAgICAgLy8gdXNpbmcgdGhlIGhpZ2hlc3QgbnVtYmVy
ZWQgcm93IGFuZCB0aGUgbG93ZXN0IG51bWJlcmVkIGNvbHVtbiB3aGVyZSB0aGUgdmFyaWFibGUg
d2lsbAotICAgICAgICAvLyBmaXQuIgotICAgICAgICBpZiAodmFyeWluZ0NvbHVtbnMgPT0gMikK
LSAgICAgICAgewotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgciA9IG1heFZhcnlpbmdW
ZWN0b3JzIC0gdmFyeWluZ1Jvd3MgKyAxOyByLS0gPj0gMTspCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGlzRnJlZShyLCAyLCB2YXJ5aW5nUm93cywgMikpCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBpbnNlcnQociwgMiwgcGFja2VkVmFyeWluZyk7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0K
LSAgICAvLyAiMSBjb21wb25lbnQgdmFyaWFibGVzIGhhdmUgdGhlaXIgb3duIHBhY2tpbmcgcnVs
ZS4gVGhleSBhcmUgcGFja2VkIGluIG9yZGVyIG9mIHNpemUsIGxhcmdlc3QKLSAgICAvLyBmaXJz
dC4gRWFjaCB2YXJpYWJsZSBpcyBwbGFjZWQgaW4gdGhlIGNvbHVtbiB0aGF0IGxlYXZlcyB0aGUg
bGVhc3QgYW1vdW50IG9mIHNwYWNlIGluIHRoZQotICAgIC8vIGNvbHVtbiBhbmQgYWxpZ25lZCB0
byB0aGUgbG93ZXN0IGF2YWlsYWJsZSByb3dzIHdpdGhpbiB0aGF0IGNvbHVtbi4iCi0gICAgQVNT
RVJUKHZhcnlpbmdDb2x1bW5zID09IDEpOwotICAgIHVuc2lnbmVkIGludCBjb250aWd1b3VzU3Bh
Y2VbNF0gICAgID0gezB9OwotICAgIHVuc2lnbmVkIGludCBiZXN0Q29udGlndW91c1NwYWNlWzRd
ID0gezB9OwotICAgIHVuc2lnbmVkIGludCB0b3RhbFNwYWNlWzRdICAgICAgICAgID0gezB9Owot
Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgcm93ID0gMDsgcm93IDwgbWF4VmFyeWluZ1ZlY3RvcnM7
ICsrcm93KQotICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgY29sdW1uID0gMDsgY29s
dW1uIDwgNDsgKytjb2x1bW4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtUmVnaXN0ZXJN
YXBbcm93XVtjb2x1bW5dKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRpZ3Vv
dXNTcGFjZVtjb2x1bW5dID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250aWd1b3VzU3BhY2VbY29sdW1uXSsrOwot
ICAgICAgICAgICAgICAgIHRvdGFsU3BhY2VbY29sdW1uXSsrOwotCi0gICAgICAgICAgICAgICAg
aWYgKGNvbnRpZ3VvdXNTcGFjZVtjb2x1bW5dID4gYmVzdENvbnRpZ3VvdXNTcGFjZVtjb2x1bW5d
KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYmVzdENvbnRpZ3VvdXNT
cGFjZVtjb2x1bW5dID0gY29udGlndW91c1NwYWNlW2NvbHVtbl07Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgdW5zaWduZWQgaW50IGJl
c3RDb2x1bW4gPSAwOwotICAgIGZvciAodW5zaWduZWQgaW50IGNvbHVtbiA9IDE7IGNvbHVtbiA8
IDQ7ICsrY29sdW1uKQotICAgIHsKLSAgICAgICAgaWYgKGJlc3RDb250aWd1b3VzU3BhY2VbY29s
dW1uXSA+PSB2YXJ5aW5nUm93cyAmJgotICAgICAgICAgICAgKGJlc3RDb250aWd1b3VzU3BhY2Vb
YmVzdENvbHVtbl0gPCB2YXJ5aW5nUm93cyB8fAotICAgICAgICAgICAgIHRvdGFsU3BhY2VbY29s
dW1uXSA8IHRvdGFsU3BhY2VbYmVzdENvbHVtbl0pKQotICAgICAgICB7Ci0gICAgICAgICAgICBi
ZXN0Q29sdW1uID0gY29sdW1uOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGJlc3RDb250
aWd1b3VzU3BhY2VbYmVzdENvbHVtbl0gPj0gdmFyeWluZ1Jvd3MpCi0gICAgewotICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCByb3cgPSAwOyByb3cgPCBtYXhWYXJ5aW5nVmVjdG9yczsgcm93Kysp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpc0ZyZWUocm93LCBiZXN0Q29sdW1uLCB2YXJ5
aW5nUm93cywgMSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgYXJyYXlJbmRleCA9IDA7IGFycmF5SW5kZXggPCB2YXJ5aW5nUm93czsgKythcnJheUlu
ZGV4KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gSWYgdmFyeWlu
Z1Jvd3MgPiAxLCBpdCBtdXN0IGJlIGFuIGFycmF5LgotICAgICAgICAgICAgICAgICAgICBQYWNr
ZWRWYXJ5aW5nUmVnaXN0ZXIgcmVnaXN0ZXJJbmZvOwotICAgICAgICAgICAgICAgICAgICByZWdp
c3RlckluZm8ucGFja2VkVmFyeWluZyAgICAgPSAmcGFja2VkVmFyeWluZzsKLSAgICAgICAgICAg
ICAgICAgICAgcmVnaXN0ZXJJbmZvLnJlZ2lzdGVyUm93ICAgICAgID0gcm93ICsgYXJyYXlJbmRl
eDsKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJJbmZvLnJlZ2lzdGVyQ29sdW1uICAgID0g
YmVzdENvbHVtbjsKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJJbmZvLnZhcnlpbmdBcnJh
eUluZGV4ID0gYXJyYXlJbmRleDsKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJJbmZvLnZh
cnlpbmdSb3dJbmRleCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIG1SZWdpc3Rlckxpc3QucHVz
aF9iYWNrKHJlZ2lzdGVySW5mbyk7Ci0gICAgICAgICAgICAgICAgICAgIG1SZWdpc3Rlck1hcFty
b3cgKyBhcnJheUluZGV4XVtiZXN0Q29sdW1uXSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBWYXJ5
aW5nUGFja2luZzo6aXNGcmVlKHVuc2lnbmVkIGludCByZWdpc3RlclJvdywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJDb2x1bW4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZhcnlpbmdSb3dzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2YXJ5aW5nQ29sdW1ucykgY29uc3QKLXsKLSAg
ICBmb3IgKHVuc2lnbmVkIGludCByb3cgPSAwOyByb3cgPCB2YXJ5aW5nUm93czsgKytyb3cpCi0g
ICAgewotICAgICAgICBBU1NFUlQocmVnaXN0ZXJSb3cgKyByb3cgPCBtUmVnaXN0ZXJNYXAuc2l6
ZSgpKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgY29sdW1uID0gMDsgY29sdW1uIDwgdmFy
eWluZ0NvbHVtbnM7ICsrY29sdW1uKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQocmVn
aXN0ZXJDb2x1bW4gKyBjb2x1bW4gPCA0KTsKLSAgICAgICAgICAgIGlmIChtUmVnaXN0ZXJNYXBb
cmVnaXN0ZXJSb3cgKyByb3ddW3JlZ2lzdGVyQ29sdW1uICsgY29sdW1uXSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBWYXJ5aW5nUGFja2luZzo6
aW5zZXJ0KHVuc2lnbmVkIGludCByZWdpc3RlclJvdywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJDb2x1bW4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgUGFja2VkVmFyeWluZyAmcGFja2VkVmFyeWluZykKLXsKLSAgICB1bnNpZ25l
ZCBpbnQgdmFyeWluZ1Jvd3MgICAgPSAwOwotICAgIHVuc2lnbmVkIGludCB2YXJ5aW5nQ29sdW1u
cyA9IDA7Ci0KLSAgICBjb25zdCBhdXRvICZ2YXJ5aW5nID0gKnBhY2tlZFZhcnlpbmcudmFyeWlu
ZzsKLSAgICBBU1NFUlQoIXZhcnlpbmcuaXNTdHJ1Y3QoKSk7Ci0gICAgR0xlbnVtIHRyYW5zcG9z
ZWRUeXBlID0gZ2w6OlRyYW5zcG9zZU1hdHJpeFR5cGUodmFyeWluZy50eXBlKTsKLSAgICB2YXJ5
aW5nUm93cyAgICAgICAgICAgPSBnbDo6VmFyaWFibGVSb3dDb3VudCh0cmFuc3Bvc2VkVHlwZSk7
Ci0gICAgdmFyeWluZ0NvbHVtbnMgICAgICAgID0gZ2w6OlZhcmlhYmxlQ29sdW1uQ291bnQodHJh
bnNwb3NlZFR5cGUpOwotCi0gICAgUGFja2VkVmFyeWluZ1JlZ2lzdGVyIHJlZ2lzdGVySW5mbzsK
LSAgICByZWdpc3RlckluZm8ucGFja2VkVmFyeWluZyAgPSAmcGFja2VkVmFyeWluZzsKLSAgICBy
ZWdpc3RlckluZm8ucmVnaXN0ZXJDb2x1bW4gPSByZWdpc3RlckNvbHVtbjsKLQotICAgIGZvciAo
dW5zaWduZWQgaW50IGFycmF5RWxlbWVudCA9IDA7IGFycmF5RWxlbWVudCA8IHZhcnlpbmcuZWxl
bWVudENvdW50KCk7ICsrYXJyYXlFbGVtZW50KQotICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgdmFyeWluZ1JvdyA9IDA7IHZhcnlpbmdSb3cgPCB2YXJ5aW5nUm93czsgKyt2YXJ5aW5n
Um93KQotICAgICAgICB7Ci0gICAgICAgICAgICByZWdpc3RlckluZm8ucmVnaXN0ZXJSb3cgICAg
ICAgPSByZWdpc3RlclJvdyArIChhcnJheUVsZW1lbnQgKiB2YXJ5aW5nUm93cykgKyB2YXJ5aW5n
Um93OwotICAgICAgICAgICAgcmVnaXN0ZXJJbmZvLnZhcnlpbmdSb3dJbmRleCAgID0gdmFyeWlu
Z1JvdzsKLSAgICAgICAgICAgIHJlZ2lzdGVySW5mby52YXJ5aW5nQXJyYXlJbmRleCA9IGFycmF5
RWxlbWVudDsKLSAgICAgICAgICAgIG1SZWdpc3Rlckxpc3QucHVzaF9iYWNrKHJlZ2lzdGVySW5m
byk7Ci0KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGNvbHVtbkluZGV4ID0gMDsgY29s
dW1uSW5kZXggPCB2YXJ5aW5nQ29sdW1uczsgKytjb2x1bW5JbmRleCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBtUmVnaXN0ZXJNYXBbcmVnaXN0ZXJJbmZvLnJlZ2lzdGVyUm93XVty
ZWdpc3RlckNvbHVtbiArIGNvbHVtbkluZGV4XSA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KLS8vIFNlZSBjb21tZW50IG9uIHBhY2tWYXJ5aW5nLgotYm9vbCBW
YXJ5aW5nUGFja2luZzo6cGFja1ZhcnlpbmdzKGdsOjpJbmZvTG9nICZpbmZvTG9nLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFBhY2tlZFZhcnlp
bmc+ICZwYWNrZWRWYXJ5aW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Mp
Ci17Ci0gICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IHVuaXF1ZVZhcnlpbmdOYW1lczsKLQotICAg
IC8vICJWYXJpYWJsZXMgYXJlIHBhY2tlZCBpbnRvIHRoZSByZWdpc3RlcnMgb25lIGF0IGEgdGlt
ZSBzbyB0aGF0IHRoZXkgZWFjaCBvY2N1cHkgYSBjb250aWd1b3VzCi0gICAgLy8gc3VicmVjdGFu
Z2xlLiBObyBzcGxpdHRpbmcgb2YgdmFyaWFibGVzIGlzIHBlcm1pdHRlZC4iCi0gICAgZm9yIChj
b25zdCBQYWNrZWRWYXJ5aW5nICZwYWNrZWRWYXJ5aW5nIDogcGFja2VkVmFyeWluZ3MpCi0gICAg
ewotICAgICAgICBjb25zdCBhdXRvICZ2YXJ5aW5nID0gKnBhY2tlZFZhcnlpbmcudmFyeWluZzsK
LQotICAgICAgICAvLyBEbyBub3QgYXNzaWduIHJlZ2lzdGVycyB0byBidWlsdC1pbiBvciB1bnJl
ZmVyZW5jZWQgdmFyeWluZ3MKLSAgICAgICAgaWYgKHZhcnlpbmcuaXNCdWlsdEluKCkgfHwgKCF2
YXJ5aW5nLnN0YXRpY1VzZSAmJiAhcGFja2VkVmFyeWluZy5pc1N0cnVjdEZpZWxkKCkpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VS
VCghdmFyeWluZy5pc1N0cnVjdCgpKTsKLSAgICAgICAgQVNTRVJUKHVuaXF1ZVZhcnlpbmdOYW1l
cy5jb3VudCh2YXJ5aW5nLm5hbWUpID09IDApOwotCi0gICAgICAgIGlmIChwYWNrVmFyeWluZyhw
YWNrZWRWYXJ5aW5nKSkKLSAgICAgICAgewotICAgICAgICAgICAgdW5pcXVlVmFyeWluZ05hbWVz
Lmluc2VydCh2YXJ5aW5nLm5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ewotICAgICAgICAgICAgaW5mb0xvZyA8PCAiQ291bGQgbm90IHBhY2sgdmFyeWluZyAiIDw8IHZh
cnlpbmcubmFtZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIGZvciAoY29uc3Qgc3RkOjpzdHJpbmcgJnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ05h
bWUgOiB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKQotICAgIHsKLSAgICAgICAgaWYgKHRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ05hbWUuY29tcGFyZSgwLCAzLCAiZ2xfIikgPT0gMCkKLSAgICAg
ICAgewotICAgICAgICAgICAgLy8gZG8gbm90IHBhY2sgYnVpbHRpbiBYRkIgdmFyeWluZ3MKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBmb3VuZCA9IGZh
bHNlOwotICAgICAgICBmb3IgKGNvbnN0IFBhY2tlZFZhcnlpbmcgJnBhY2tlZFZhcnlpbmcgOiBw
YWNrZWRWYXJ5aW5ncykKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgYXV0byAmdmFyeWlu
ZyA9ICpwYWNrZWRWYXJ5aW5nLnZhcnlpbmc7Ci0KLSAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0
cmFuc2Zvcm0gZmVlZGJhY2sgdmFyeWluZ3MgYXJlbid0IG9wdGltaXplZCBvdXQuCi0gICAgICAg
ICAgICBpZiAodW5pcXVlVmFyeWluZ05hbWVzLmNvdW50KHRyYW5zZm9ybUZlZWRiYWNrVmFyeWlu
Z05hbWUpID4gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlm
ICh0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lID09IHZhcnlpbmcubmFtZSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIXBhY2tWYXJ5aW5nKHBhY2tlZFZhcnlpbmcpKQot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaW5mb0xvZyA8PCAiQ291bGQg
bm90IHBhY2sgdmFyeWluZyAiIDw8IHZhcnlpbmcubmFtZTsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGZvdW5k
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIGlmICghZm91bmQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGluZm9Mb2cg
PDwgIlRyYW5zZm9ybSBmZWVkYmFjayB2YXJ5aW5nICIgPDwgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5nTmFtZQotICAgICAgICAgICAgICAgICAgICA8PCAiIGRvZXMgbm90IGV4aXN0IGluIHRoZSB2
ZXJ0ZXggc2hhZGVyLiI7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICAvLyBTb3J0IHRoZSBwYWNrZWQgcmVnaXN0ZXIgbGlzdAotICAgIHN0ZDo6c29y
dChtUmVnaXN0ZXJMaXN0LmJlZ2luKCksIG1SZWdpc3Rlckxpc3QuZW5kKCkpOwotCi0gICAgLy8g
QXNzaWduIHNlbWFudGljIGluZGljZXMKLSAgICBmb3IgKHVuc2lnbmVkIGludCBzZW1hbnRpY0lu
ZGV4ID0gMDsKLSAgICAgICAgIHNlbWFudGljSW5kZXggPCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KG1SZWdpc3Rlckxpc3Quc2l6ZSgpKTsgKytzZW1hbnRpY0luZGV4KQotICAgIHsKLSAgICAg
ICAgbVJlZ2lzdGVyTGlzdFtzZW1hbnRpY0luZGV4XS5zZW1hbnRpY0luZGV4ID0gc2VtYW50aWNJ
bmRleDsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdW5zaWduZWQgaW50IFZhcnlp
bmdQYWNraW5nOjpnZXRSZWdpc3RlckNvdW50KCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBpbnQg
Y291bnQgPSAwOwotCi0gICAgZm9yIChjb25zdCBSZWdpc3RlciAmcmVnIDogbVJlZ2lzdGVyTWFw
KQotICAgIHsKLSAgICAgICAgaWYgKHJlZy5kYXRhWzBdIHx8IHJlZy5kYXRhWzFdIHx8IHJlZy5k
YXRhWzJdIHx8IHJlZy5kYXRhWzNdKQotICAgICAgICB7Ci0gICAgICAgICAgICArK2NvdW50Owot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG1CdWlsdGluSW5mb1tTSEFERVJfUElYRUxdLmds
RnJhZ0Nvb3JkLmVuYWJsZWQpCi0gICAgewotICAgICAgICArK2NvdW50OwotICAgIH0KLQotICAg
IGlmIChtQnVpbHRpbkluZm9bU0hBREVSX1BJWEVMXS5nbFBvaW50Q29vcmQuZW5hYmxlZCkKLSAg
ICB7Ci0gICAgICAgICsrY291bnQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNvdW50OwotfQotCi12
b2lkIFZhcnlpbmdQYWNraW5nOjplbmFibGVCdWlsdGlucyhTaGFkZXJUeXBlIHNoYWRlclR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtRDNETWV0
YWRhdGEgJnByb2dyYW1NZXRhZGF0YSkKLXsKLSAgICBpbnQgbWFqb3JTaGFkZXJNb2RlbCA9IHBy
b2dyYW1NZXRhZGF0YS5nZXRSZW5kZXJlck1ham9yU2hhZGVyTW9kZWwoKTsKLSAgICBib29sIHBv
c2l0aW9uICAgICAgICA9IHByb2dyYW1NZXRhZGF0YS51c2VzVHJhbnNmb3JtRmVlZGJhY2tHTFBv
c2l0aW9uKCk7Ci0gICAgYm9vbCBmcmFnQ29vcmQgICAgICAgPSBwcm9ncmFtTWV0YWRhdGEudXNl
c0ZyYWdDb29yZCgpOwotICAgIGJvb2wgcG9pbnRDb29yZCA9IHNoYWRlclR5cGUgPT0gU0hBREVS
X1ZFUlRFWCA/IHByb2dyYW1NZXRhZGF0YS5hZGRzUG9pbnRDb29yZFRvVmVydGV4U2hhZGVyKCkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9n
cmFtTWV0YWRhdGEudXNlc1BvaW50Q29vcmQoKTsKLSAgICBib29sIHBvaW50U2l6ZSAgICAgICAg
ICAgICAgICAgID0gcHJvZ3JhbU1ldGFkYXRhLnVzZXNTeXN0ZW1WYWx1ZVBvaW50U2l6ZSgpOwot
ICAgIGJvb2wgaGxzbDQgICAgICAgICAgICAgICAgICAgICAgPSAobWFqb3JTaGFkZXJNb2RlbCA+
PSA0KTsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmdXNlclNlbWFudGljID0gR2V0VmFyeWluZ1Nl
bWFudGljKG1ham9yU2hhZGVyTW9kZWwsIHBvaW50U2l6ZSk7Ci0KLSAgICB1bnNpZ25lZCBpbnQg
cmVzZXJ2ZWRTZW1hbnRpY0luZGV4ID0gZ2V0TWF4U2VtYW50aWNJbmRleCgpOwotCi0gICAgQnVp
bHRpbkluZm8gKmJ1aWx0aW5zID0gJm1CdWlsdGluSW5mb1tzaGFkZXJUeXBlXTsKLQotICAgIGlm
IChobHNsNCkKLSAgICB7Ci0gICAgICAgIGJ1aWx0aW5zLT5keFBvc2l0aW9uLmVuYWJsZVN5c3Rl
bSgiU1ZfUG9zaXRpb24iKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc2hhZGVyVHlwZSA9PSBTSEFE
RVJfUElYRUwpCi0gICAgewotICAgICAgICBidWlsdGlucy0+ZHhQb3NpdGlvbi5lbmFibGVTeXN0
ZW0oIlZQT1MiKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgYnVpbHRpbnMtPmR4
UG9zaXRpb24uZW5hYmxlU3lzdGVtKCJQT1NJVElPTiIpOwotICAgIH0KLQotICAgIGlmIChwb3Np
dGlvbikKLSAgICB7Ci0gICAgICAgIGJ1aWx0aW5zLT5nbFBvc2l0aW9uLmVuYWJsZSh1c2VyU2Vt
YW50aWMsIHJlc2VydmVkU2VtYW50aWNJbmRleCsrKTsKLSAgICB9Ci0KLSAgICBpZiAoZnJhZ0Nv
b3JkKQotICAgIHsKLSAgICAgICAgYnVpbHRpbnMtPmdsRnJhZ0Nvb3JkLmVuYWJsZSh1c2VyU2Vt
YW50aWMsIHJlc2VydmVkU2VtYW50aWNJbmRleCsrKTsKLSAgICB9Ci0KLSAgICBpZiAocG9pbnRD
b29yZCkKLSAgICB7Ci0gICAgICAgIC8vIFNNMyByZXNlcnZlcyB0aGUgVEVYQ09PUkQgc2VtYW50
aWMgZm9yIHBvaW50IHNwcml0ZSB0ZXhjb29yZHMgKGdsX1BvaW50Q29vcmQpCi0gICAgICAgIC8v
IEluIEQzRDExIHdlIG1hbnVhbGx5IGNvbXB1dGUgZ2xfUG9pbnRDb29yZCBpbiB0aGUgR1MuCi0g
ICAgICAgIGlmIChobHNsNCkKLSAgICAgICAgewotICAgICAgICAgICAgYnVpbHRpbnMtPmdsUG9p
bnRDb29yZC5lbmFibGUodXNlclNlbWFudGljLCByZXNlcnZlZFNlbWFudGljSW5kZXgrKyk7Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBidWlsdGlucy0+
Z2xQb2ludENvb3JkLmVuYWJsZSgiVEVYQ09PUkQiLCAwKTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIC8vIFNwZWNpYWwgY2FzZTogZG8gbm90IGluY2x1ZGUgUFNJWkUgc2VtYW50aWMgaW4gSExT
TCAzIHBpeGVsIHNoYWRlcnMKLSAgICBpZiAocG9pbnRTaXplICYmIChzaGFkZXJUeXBlICE9IFNI
QURFUl9QSVhFTCB8fCBobHNsNCkpCi0gICAgewotICAgICAgICBidWlsdGlucy0+Z2xQb2ludFNp
emUuZW5hYmxlU3lzdGVtKCJQU0laRSIpOwotICAgIH0KLX0KLQotfSAgLy8gbmFtZXNwYWNlIHJ4
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1ZhcnlpbmdQYWNraW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL1ZhcnlpbmdQYWNraW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGNhNDY0MGIwMDAyMGE3NzZmZDgxNWRkMzZiOTQwNDMxNmZkYjRkYjQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WYXJ5aW5nUGFja2luZy5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMTc1ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBWYXJ5aW5nUGFja2luZzoK
LS8vICAgQ2xhc3Mgd2hpY2ggZGVzY3JpYmVzIGEgbWFwcGluZyBmcm9tIHZhcnlpbmdzIHRvIHJl
Z2lzdGVycyBpbiBEM0QKLS8vICAgZm9yIGxpbmtpbmcgYmV0d2VlbiBzaGFkZXIgc3RhZ2VzLgot
Ly8KLQotI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfVkFSWUlOR1BBQ0tJTkdfSF8KLSNk
ZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfRDNEX1ZBUllJTkdQQUNLSU5HX0hfCi0KLSNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJEM0QuaCIKLQotbmFtZXNwYWNlIHJ4Ci17
Ci1jbGFzcyBQcm9ncmFtRDNETWV0YWRhdGE7Ci0KLXN0cnVjdCBQYWNrZWRWYXJ5aW5nCi17Ci0g
ICAgUGFja2VkVmFyeWluZyhjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJnZhcnlpbmdJbiwgc2g6
OkludGVycG9sYXRpb25UeXBlIGludGVycG9sYXRpb25JbikKLSAgICAgICAgOiB2YXJ5aW5nKCZ2
YXJ5aW5nSW4pLCB2ZXJ0ZXhPbmx5KGZhbHNlKSwgaW50ZXJwb2xhdGlvbihpbnRlcnBvbGF0aW9u
SW4pCi0gICAgewotICAgIH0KLSAgICBQYWNrZWRWYXJ5aW5nKGNvbnN0IHNoOjpTaGFkZXJWYXJp
YWJsZSAmdmFyeWluZ0luLAotICAgICAgICAgICAgICAgICAgc2g6OkludGVycG9sYXRpb25UeXBl
IGludGVycG9sYXRpb25JbiwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZw
YXJlbnRTdHJ1Y3ROYW1lSW4pCi0gICAgICAgIDogdmFyeWluZygmdmFyeWluZ0luKSwKLSAgICAg
ICAgICB2ZXJ0ZXhPbmx5KGZhbHNlKSwKLSAgICAgICAgICBpbnRlcnBvbGF0aW9uKGludGVycG9s
YXRpb25JbiksCi0gICAgICAgICAgcGFyZW50U3RydWN0TmFtZShwYXJlbnRTdHJ1Y3ROYW1lSW4p
Ci0gICAgewotICAgIH0KLQotICAgIGJvb2wgaXNTdHJ1Y3RGaWVsZCgpIGNvbnN0IHsgcmV0dXJu
ICFwYXJlbnRTdHJ1Y3ROYW1lLmVtcHR5KCk7IH0KLQotICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJp
YWJsZSAqdmFyeWluZzsKLQotICAgIC8vIFRyYW5zZm9ybSBmZWVkYmFjayB2YXJ5aW5ncyBjYW4g
YmUgb25seSByZWZlcmVuY2VkIGluIHRoZSBWUy4KLSAgICBib29sIHZlcnRleE9ubHk7Ci0KLSAg
ICAvLyBDYWNoZWQgc28gd2UgY2FuIHN0b3JlIHNoOjpTaGFkZXJWYXJpYWJsZSB0byBwb2ludCB0
byB2YXJ5aW5nIGZpZWxkcy4KLSAgICBzaDo6SW50ZXJwb2xhdGlvblR5cGUgaW50ZXJwb2xhdGlv
bjsKLQotICAgIC8vIFN0cnVjdCBuYW1lCi0gICAgc3RkOjpzdHJpbmcgcGFyZW50U3RydWN0TmFt
ZTsKLX07Ci0KLXN0cnVjdCBQYWNrZWRWYXJ5aW5nUmVnaXN0ZXIgZmluYWwKLXsKLSAgICBQYWNr
ZWRWYXJ5aW5nUmVnaXN0ZXIoKQotICAgICAgICA6IHBhY2tlZFZhcnlpbmcobnVsbHB0ciksCi0g
ICAgICAgICAgdmFyeWluZ0FycmF5SW5kZXgoMCksCi0gICAgICAgICAgdmFyeWluZ1Jvd0luZGV4
KDApLAotICAgICAgICAgIHJlZ2lzdGVyUm93KDApLAotICAgICAgICAgIHJlZ2lzdGVyQ29sdW1u
KDApCi0gICAgewotICAgIH0KLQotICAgIFBhY2tlZFZhcnlpbmdSZWdpc3Rlcihjb25zdCBQYWNr
ZWRWYXJ5aW5nUmVnaXN0ZXIgJikgPSBkZWZhdWx0OwotICAgIFBhY2tlZFZhcnlpbmdSZWdpc3Rl
ciAmb3BlcmF0b3I9KGNvbnN0IFBhY2tlZFZhcnlpbmdSZWdpc3RlciAmKSA9IGRlZmF1bHQ7Ci0K
LSAgICBib29sIG9wZXJhdG9yPChjb25zdCBQYWNrZWRWYXJ5aW5nUmVnaXN0ZXIgJm90aGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHNvcnRPcmRlcigpIDwgb3RoZXIuc29ydE9yZGVy
KCk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgaW50IHNvcnRPcmRlcigpIGNvbnN0Ci0gICAgewot
ICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBIYW5kbGUgaW50ZXJwb2xhdGlvbiB0eXBlcwotICAg
ICAgICByZXR1cm4gcmVnaXN0ZXJSb3cgKiA0ICsgcmVnaXN0ZXJDb2x1bW47Ci0gICAgfQotCi0g
ICAgYm9vbCBpc1N0cnVjdEZpZWxkKCkgY29uc3QgeyByZXR1cm4gIXN0cnVjdEZpZWxkTmFtZS5l
bXB0eSgpOyB9Ci0KLSAgICAvLyBJbmRleCB0byB0aGUgYXJyYXkgb2YgdmFyeWluZ3MuCi0gICAg
Y29uc3QgUGFja2VkVmFyeWluZyAqcGFja2VkVmFyeWluZzsKLQotICAgIC8vIFRoZSBhcnJheSBl
bGVtZW50IG9mIHRoZSBwYWNrZWQgdmFyeWluZy4KLSAgICB1bnNpZ25lZCBpbnQgdmFyeWluZ0Fy
cmF5SW5kZXg7Ci0KLSAgICAvLyBUaGUgcm93IG9mIHRoZSBhcnJheSBlbGVtZW50IG9mIHRoZSBw
YWNrZWQgdmFyeWluZy4KLSAgICB1bnNpZ25lZCBpbnQgdmFyeWluZ1Jvd0luZGV4OwotCi0gICAg
Ly8gVGhlIHJlZ2lzdGVyIHJvdyB0byB3aGljaCB3ZSd2ZSBhc3NpZ25lZCB0aGlzIHBhY2tlZCB2
YXJ5aW5nLgotICAgIHVuc2lnbmVkIGludCByZWdpc3RlclJvdzsKLQotICAgIC8vIFRoZSBjb2x1
bW4gb2YgdGhlIHJlZ2lzdGVyIHJvdyBpbnRvIHdoaWNoIHdlJ3ZlIHBhY2tlZCB0aGlzIHZhcnlp
bmcuCi0gICAgdW5zaWduZWQgaW50IHJlZ2lzdGVyQ29sdW1uOwotCi0gICAgLy8gQXNzaWduZWQg
YWZ0ZXIgcGFja2luZwotICAgIHVuc2lnbmVkIGludCBzZW1hbnRpY0luZGV4OwotCi0gICAgLy8g
U3RydWN0IG1lbWJlciB0aGlzIHZhcnlpbmcgY29ycmVzcG9uZHMgdG8uCi0gICAgc3RkOjpzdHJp
bmcgc3RydWN0RmllbGROYW1lOwotfTsKLQotY2xhc3MgVmFyeWluZ1BhY2tpbmcgZmluYWwgOiBh
bmdsZTo6Tm9uQ29weWFibGUKLXsKLSAgcHVibGljOgotICAgIFZhcnlpbmdQYWNraW5nKEdMdWlu
dCBtYXhWYXJ5aW5nVmVjdG9ycyk7Ci0KLSAgICBib29sIHBhY2tWYXJ5aW5ncyhnbDo6SW5mb0xv
ZyAmaW5mb0xvZywKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxQYWNr
ZWRWYXJ5aW5nPiAmcGFja2VkVmFyeWluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+ICZ0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKTsKLQot
ICAgIHN0cnVjdCBSZWdpc3RlcgotICAgIHsKLSAgICAgICAgUmVnaXN0ZXIoKSB7IGRhdGFbMF0g
PSBkYXRhWzFdID0gZGF0YVsyXSA9IGRhdGFbM10gPSBmYWxzZTsgfQotCi0gICAgICAgIGJvb2wg
Jm9wZXJhdG9yW10odW5zaWduZWQgaW50IGluZGV4KSB7IHJldHVybiBkYXRhW2luZGV4XTsgfQot
ICAgICAgICBib29sIG9wZXJhdG9yW10odW5zaWduZWQgaW50IGluZGV4KSBjb25zdCB7IHJldHVy
biBkYXRhW2luZGV4XTsgfQotCi0gICAgICAgIGJvb2wgZGF0YVs0XTsKLSAgICB9OwotCi0gICAg
UmVnaXN0ZXIgJm9wZXJhdG9yW10odW5zaWduZWQgaW50IGluZGV4KSB7IHJldHVybiBtUmVnaXN0
ZXJNYXBbaW5kZXhdOyB9Ci0gICAgY29uc3QgUmVnaXN0ZXIgJm9wZXJhdG9yW10odW5zaWduZWQg
aW50IGluZGV4KSBjb25zdCB7IHJldHVybiBtUmVnaXN0ZXJNYXBbaW5kZXhdOyB9Ci0KLSAgICBj
b25zdCBzdGQ6OnZlY3RvcjxQYWNrZWRWYXJ5aW5nUmVnaXN0ZXI+ICZnZXRSZWdpc3Rlckxpc3Qo
KSBjb25zdCB7IHJldHVybiBtUmVnaXN0ZXJMaXN0OyB9Ci0gICAgdW5zaWduZWQgaW50IGdldE1h
eFNlbWFudGljSW5kZXgoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGludD4obVJlZ2lzdGVyTGlzdC5zaXplKCkpOwotICAgIH0KLSAgICB1bnNpZ25l
ZCBpbnQgZ2V0UmVnaXN0ZXJDb3VudCgpIGNvbnN0OwotCi0gICAgdm9pZCBlbmFibGVCdWlsdGlu
cyhTaGFkZXJUeXBlIHNoYWRlclR5cGUsIGNvbnN0IFByb2dyYW1EM0RNZXRhZGF0YSAmcHJvZ3Jh
bU1ldGFkYXRhKTsKLQotICAgIHN0cnVjdCBCdWlsdGluVmFyeWluZyBmaW5hbCA6IGFuZ2xlOjpO
b25Db3B5YWJsZQotICAgIHsKLSAgICAgICAgQnVpbHRpblZhcnlpbmcoKTsKLQotICAgICAgICBz
dGQ6OnN0cmluZyBzdHIoKSBjb25zdDsKLSAgICAgICAgdm9pZCBlbmFibGVTeXN0ZW0oY29uc3Qg
c3RkOjpzdHJpbmcgJnN5c3RlbVZhbHVlU2VtYW50aWMpOwotICAgICAgICB2b2lkIGVuYWJsZShj
b25zdCBzdGQ6OnN0cmluZyAmc2VtYW50aWNWYWwsIHVuc2lnbmVkIGludCBpbmRleFZhbCk7Ci0K
LSAgICAgICAgYm9vbCBlbmFibGVkOwotICAgICAgICBzdGQ6OnN0cmluZyBzZW1hbnRpYzsKLSAg
ICAgICAgdW5zaWduZWQgaW50IGluZGV4OwotICAgICAgICBib29sIHN5c3RlbVZhbHVlOwotICAg
IH07Ci0KLSAgICBzdHJ1Y3QgQnVpbHRpbkluZm8KLSAgICB7Ci0gICAgICAgIEJ1aWx0aW5WYXJ5
aW5nIGR4UG9zaXRpb247Ci0gICAgICAgIEJ1aWx0aW5WYXJ5aW5nIGdsUG9zaXRpb247Ci0gICAg
ICAgIEJ1aWx0aW5WYXJ5aW5nIGdsRnJhZ0Nvb3JkOwotICAgICAgICBCdWlsdGluVmFyeWluZyBn
bFBvaW50Q29vcmQ7Ci0gICAgICAgIEJ1aWx0aW5WYXJ5aW5nIGdsUG9pbnRTaXplOwotICAgIH07
Ci0KLSAgICBjb25zdCBCdWlsdGluSW5mbyAmYnVpbHRpbnMoU2hhZGVyVHlwZSBzaGFkZXJUeXBl
KSBjb25zdCB7IHJldHVybiBtQnVpbHRpbkluZm9bc2hhZGVyVHlwZV07IH0KLQotICAgIGJvb2wg
dXNlc1BvaW50U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1CdWlsdGluSW5mb1tTSEFERVJfVkVSVEVY
XS5nbFBvaW50U2l6ZS5lbmFibGVkOyB9Ci0KLSAgcHJpdmF0ZToKLSAgICBib29sIHBhY2tWYXJ5
aW5nKGNvbnN0IFBhY2tlZFZhcnlpbmcgJnBhY2tlZFZhcnlpbmcpOwotICAgIGJvb2wgaXNGcmVl
KHVuc2lnbmVkIGludCByZWdpc3RlclJvdywKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
cmVnaXN0ZXJDb2x1bW4sCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZhcnlpbmdSb3dz
LAotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCB2YXJ5aW5nQ29sdW1ucykgY29uc3Q7Ci0g
ICAgdm9pZCBpbnNlcnQodW5zaWduZWQgaW50IHJlZ2lzdGVyUm93LAotICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCByZWdpc3RlckNvbHVtbiwKLSAgICAgICAgICAgICAgICBjb25zdCBQYWNr
ZWRWYXJ5aW5nICZwYWNrZWRWYXJ5aW5nKTsKLQotICAgIHN0ZDo6dmVjdG9yPFJlZ2lzdGVyPiBt
UmVnaXN0ZXJNYXA7Ci0gICAgc3RkOjp2ZWN0b3I8UGFja2VkVmFyeWluZ1JlZ2lzdGVyPiBtUmVn
aXN0ZXJMaXN0OwotCi0gICAgc3RkOjp2ZWN0b3I8QnVpbHRpbkluZm8+IG1CdWlsdGluSW5mbzsK
LX07Ci0KLX0gIC8vIG5hbWVzcGFjZSByeAotCi0jZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVS
X0QzRF9WQVJZSU5HUEFDS0lOR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhCdWZmZXIuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhCdWZmZXIuY3Bw
CmluZGV4IGFjMzFhODY1ZTc1OGRmY2Y3OTdjZTgzODFmODA4ZGZiOTMyOTZmNDIuLjMwZDY1YmUw
MTEzOTgwOWI0N2ZiN2VjMjg4NGNjNGU2ZWM3NmY2NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4QnVmZmVyLmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Zl
cnRleEJ1ZmZlci5jcHAKQEAgLTkxLDExICs5MSwxMyBAQCBnbDo6RXJyb3IgVmVydGV4QnVmZmVy
SW50ZXJmYWNlOjpzZXRCdWZmZXJTaXplKHVuc2lnbmVkIGludCBzaXplKQogCiBnbDo6RXJyb3JP
clJlc3VsdDx1bnNpZ25lZCBpbnQ+IFZlcnRleEJ1ZmZlckludGVyZmFjZTo6Z2V0U3BhY2VSZXF1
aXJlZCgKICAgICBjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAgY29uc3Qg
Z2w6OlZlcnRleEJpbmRpbmcgJmJpbmRpbmcsCiAgICAgR0xzaXplaSBjb3VudCwKICAgICBHTHNp
emVpIGluc3RhbmNlcykgY29uc3QKIHsKICAgICB1bnNpZ25lZCBpbnQgc3BhY2VSZXF1aXJlZCA9
IDA7Ci0gICAgQU5HTEVfVFJZX1JFU1VMVChtRmFjdG9yeS0+Z2V0VmVydGV4U3BhY2VSZXF1aXJl
ZChhdHRyaWIsIGNvdW50LCBpbnN0YW5jZXMpLCBzcGFjZVJlcXVpcmVkKTsKKyAgICBBTkdMRV9U
UllfUkVTVUxUKG1GYWN0b3J5LT5nZXRWZXJ0ZXhTcGFjZVJlcXVpcmVkKGF0dHJpYiwgYmluZGlu
ZywgY291bnQsIGluc3RhbmNlcyksCisgICAgICAgICAgICAgICAgICAgICBzcGFjZVJlcXVpcmVk
KTsKIAogICAgIC8vIEFsaWduIHRvIDE2LWJ5dGUgYm91bmRhcnkKICAgICB1bnNpZ25lZCBpbnQg
YWxpZ25lZFNwYWNlUmVxdWlyZWQgPSByb3VuZFVwKHNwYWNlUmVxdWlyZWQsIDE2dSk7CkBAIC0x
NDksNiArMTUxLDcgQEAgZ2w6OkVycm9yIFN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6
cmVzZXJ2ZVNwYWNlKHVuc2lnbmVkIGludCBzaXplKQogfQogCiBnbDo6RXJyb3IgU3RyZWFtaW5n
VmVydGV4QnVmZmVySW50ZXJmYWNlOjpzdG9yZUR5bmFtaWNBdHRyaWJ1dGUoY29uc3QgZ2w6OlZl
cnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5nICZi
aW5kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBjdXJyZW50VmFsdWVUeXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0
YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCkBAIC0xNTcsNyArMTYwLDcgQEAgZ2w6OkVycm9y
IFN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVEeW5hbWljQXR0cmlidXRlKGNv
bnN0IGdsOjpWZXJ0ZXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2VEYXRhKQogewogICAg
IHVuc2lnbmVkIGludCBzcGFjZVJlcXVpcmVkID0gMDsKLSAgICBBTkdMRV9UUllfUkVTVUxUKGdl
dFNwYWNlUmVxdWlyZWQoYXR0cmliLCBjb3VudCwgaW5zdGFuY2VzKSwgc3BhY2VSZXF1aXJlZCk7
CisgICAgQU5HTEVfVFJZX1JFU1VMVChnZXRTcGFjZVJlcXVpcmVkKGF0dHJpYiwgYmluZGluZywg
Y291bnQsIGluc3RhbmNlcyksIHNwYWNlUmVxdWlyZWQpOwogCiAgICAgLy8gUHJvdGVjdCBhZ2Fp
bnN0IGludGVnZXIgb3ZlcmZsb3cKICAgICBhbmdsZTo6Q2hlY2tlZE51bWVyaWM8dW5zaWduZWQg
aW50PiBjaGVja2VkUG9zaXRpb24obVdyaXRlUG9zaXRpb24pOwpAQCAtMTcwLDcgKzE3Myw3IEBA
IGdsOjpFcnJvciBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnN0b3JlRHluYW1pY0F0
dHJpYnV0ZShjb25zdCBnbDo6VmVydGV4CiAgICAgQU5HTEVfVFJZKHJlc2VydmVTcGFjZShtUmVz
ZXJ2ZWRTcGFjZSkpOwogICAgIG1SZXNlcnZlZFNwYWNlID0gMDsKIAotICAgIEFOR0xFX1RSWSht
VmVydGV4QnVmZmVyLT5zdG9yZVZlcnRleEF0dHJpYnV0ZXMoYXR0cmliLCBjdXJyZW50VmFsdWVU
eXBlLCBzdGFydCwgY291bnQsCisgICAgQU5HTEVfVFJZKG1WZXJ0ZXhCdWZmZXItPnN0b3JlVmVy
dGV4QXR0cmlidXRlcyhhdHRyaWIsIGJpbmRpbmcsIGN1cnJlbnRWYWx1ZVR5cGUsIHN0YXJ0LCBj
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluc3RhbmNlcywgbVdyaXRlUG9zaXRpb24sIHNvdXJjZURhdGEpKTsKIAogICAgIGlmIChvdXRT
dHJlYW1PZmZzZXQpCkBAIC0xODQsMTEgKzE4NywxMyBAQCBnbDo6RXJyb3IgU3RyZWFtaW5nVmVy
dGV4QnVmZmVySW50ZXJmYWNlOjpzdG9yZUR5bmFtaWNBdHRyaWJ1dGUoY29uc3QgZ2w6OlZlcnRl
eAogfQogCiBnbDo6RXJyb3IgU3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZl
VmVydGV4U3BhY2UoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBpbnN0YW5jZXMpCiB7CiAgICAgdW5zaWduZWQgaW50IHJlcXVpcmVkU3BhY2UgPSAwOwot
ICAgIEFOR0xFX1RSWV9SRVNVTFQobUZhY3RvcnktPmdldFZlcnRleFNwYWNlUmVxdWlyZWQoYXR0
cmliLCBjb3VudCwgaW5zdGFuY2VzKSwgcmVxdWlyZWRTcGFjZSk7CisgICAgQU5HTEVfVFJZX1JF
U1VMVChtRmFjdG9yeS0+Z2V0VmVydGV4U3BhY2VSZXF1aXJlZChhdHRyaWIsIGJpbmRpbmcsIGNv
dW50LCBpbnN0YW5jZXMpLAorICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRTcGFjZSk7CiAK
ICAgICAvLyBBbGlnbiB0byAxNi1ieXRlIGJvdW5kYXJ5CiAgICAgYXV0byBhbGlnbmVkUmVxdWly
ZWRTcGFjZSA9IHJ4OjpDaGVja2VkUm91bmRVcChyZXF1aXJlZFNwYWNlLCAxNnUpOwpAQCAtMjE1
LDkgKzIyMCwxMCBAQCBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OkF0dHJpYnV0ZVNpZ25h
dHVyZTo6QXR0cmlidXRlU2lnbmF0dXJlKCkKIH0KIAogYm9vbCBTdGF0aWNWZXJ0ZXhCdWZmZXJJ
bnRlcmZhY2U6OkF0dHJpYnV0ZVNpZ25hdHVyZTo6bWF0Y2hlc0F0dHJpYnV0ZSgKLSAgICBjb25z
dCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpIGNvbnN0CisgICAgY29uc3QgZ2w6OlZlcnRl
eEF0dHJpYnV0ZSAmYXR0cmliLAorICAgIGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5nICZiaW5kaW5n
KSBjb25zdAogewotICAgIHNpemVfdCBhdHRyaWJTdHJpZGUgPSBDb21wdXRlVmVydGV4QXR0cmli
dXRlU3RyaWRlKGF0dHJpYik7CisgICAgc2l6ZV90IGF0dHJpYlN0cmlkZSA9IENvbXB1dGVWZXJ0
ZXhBdHRyaWJ1dGVTdHJpZGUoYXR0cmliLCBiaW5kaW5nKTsKIAogICAgIGlmICh0eXBlICE9IGF0
dHJpYi50eXBlIHx8IHNpemUgIT0gYXR0cmliLnNpemUgfHwgc3RhdGljX2Nhc3Q8R0x1aW50Pihz
dHJpZGUpICE9IGF0dHJpYlN0cmlkZSB8fAogICAgICAgICBub3JtYWxpemVkICE9IGF0dHJpYi5u
b3JtYWxpemVkIHx8IHB1cmVJbnRlZ2VyICE9IGF0dHJpYi5wdXJlSW50ZWdlcikKQEAgLTIyNSwx
OCArMjMxLDIxIEBAIGJvb2wgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOjpBdHRyaWJ1dGVT
aWduYXR1cmU6Om1hdGNoZXNBdHRyaWJ1dGUoCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICBzaXplX3QgYXR0cmliT2Zmc2V0ID0gKHN0YXRpY19jYXN0PHNpemVfdD4oYXR0cmli
Lm9mZnNldCkgJSBhdHRyaWJTdHJpZGUpOworICAgIHNpemVfdCBhdHRyaWJPZmZzZXQgPQorICAg
ICAgICAoc3RhdGljX2Nhc3Q8c2l6ZV90PihDb21wdXRlVmVydGV4QXR0cmlidXRlT2Zmc2V0KGF0
dHJpYiwgYmluZGluZykpICUgYXR0cmliU3RyaWRlKTsKICAgICByZXR1cm4gKG9mZnNldCA9PSBh
dHRyaWJPZmZzZXQpOwogfQogCi12b2lkIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6QXR0
cmlidXRlU2lnbmF0dXJlOjpzZXQoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKQor
dm9pZCBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OkF0dHJpYnV0ZVNpZ25hdHVyZTo6c2V0
KGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VmVydGV4Qmlu
ZGluZyAmYmluZGluZykKIHsKICAgICB0eXBlICAgICAgICA9IGF0dHJpYi50eXBlOwogICAgIHNp
emUgICAgICAgID0gYXR0cmliLnNpemU7CiAgICAgbm9ybWFsaXplZCAgPSBhdHRyaWIubm9ybWFs
aXplZDsKICAgICBwdXJlSW50ZWdlciA9IGF0dHJpYi5wdXJlSW50ZWdlcjsKLSAgICBvZmZzZXQg
PSBzdHJpZGUgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJp
ZGUoYXR0cmliKSk7Ci0gICAgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihhdHRyaWIub2Zm
c2V0KSAlIENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJpZGUoYXR0cmliKTsKKyAgICBvZmZzZXQg
PSBzdHJpZGUgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJp
ZGUoYXR0cmliLCBiaW5kaW5nKSk7CisgICAgb2Zmc2V0ICAgICAgICAgID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihDb21wdXRlVmVydGV4QXR0cmlidXRlT2Zmc2V0KGF0dHJpYiwgYmluZGluZykpICUK
KyAgICAgICAgICAgICBDb21wdXRlVmVydGV4QXR0cmlidXRlU3RyaWRlKGF0dHJpYiwgYmluZGlu
Zyk7CiB9CiAKIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6U3RhdGljVmVydGV4QnVmZmVy
SW50ZXJmYWNlKEJ1ZmZlckZhY3RvcnlEM0QgKmZhY3RvcnkpCkBAIC0yNDgsMzEgKzI1NywzNCBA
QCBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6On5TdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZh
Y2UoKQogewogfQogCi1ib29sIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6bWF0Y2hlc0F0
dHJpYnV0ZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpIGNvbnN0Citib29sIFN0
YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6bWF0Y2hlc0F0dHJpYnV0ZShjb25zdCBnbDo6VmVy
dGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VmVydGV4QmluZGluZyAmYmluZGluZykgY29uc3QK
IHsKLSAgICByZXR1cm4gbVNpZ25hdHVyZS5tYXRjaGVzQXR0cmlidXRlKGF0dHJpYik7CisgICAg
cmV0dXJuIG1TaWduYXR1cmUubWF0Y2hlc0F0dHJpYnV0ZShhdHRyaWIsIGJpbmRpbmcpOwogfQog
Ci12b2lkIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6c2V0QXR0cmlidXRlKGNvbnN0IGds
OjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikKK3ZvaWQgU3RhdGljVmVydGV4QnVmZmVySW50ZXJm
YWNlOjpzZXRBdHRyaWJ1dGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VmVy
dGV4QmluZGluZyAmYmluZGluZykKIHsKLSAgICByZXR1cm4gbVNpZ25hdHVyZS5zZXQoYXR0cmli
KTsKKyAgICByZXR1cm4gbVNpZ25hdHVyZS5zZXQoYXR0cmliLCBiaW5kaW5nKTsKIH0KIAogZ2w6
OkVycm9yIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVTdGF0aWNBdHRyaWJ1dGUo
Y29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZlcnRleEJp
bmRpbmcgJmJpbmRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGluc3RhbmNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEpCiB7CiAgICAg
dW5zaWduZWQgaW50IHNwYWNlUmVxdWlyZWQgPSAwOwotICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2V0
U3BhY2VSZXF1aXJlZChhdHRyaWIsIGNvdW50LCBpbnN0YW5jZXMpLCBzcGFjZVJlcXVpcmVkKTsK
KyAgICBBTkdMRV9UUllfUkVTVUxUKGdldFNwYWNlUmVxdWlyZWQoYXR0cmliLCBiaW5kaW5nLCBj
b3VudCwgaW5zdGFuY2VzKSwgc3BhY2VSZXF1aXJlZCk7CiAgICAgc2V0QnVmZmVyU2l6ZShzcGFj
ZVJlcXVpcmVkKTsKIAogICAgIEFTU0VSVChhdHRyaWIuZW5hYmxlZCk7Ci0gICAgQU5HTEVfVFJZ
KG1WZXJ0ZXhCdWZmZXItPnN0b3JlVmVydGV4QXR0cmlidXRlcyhhdHRyaWIsIEdMX05PTkUsIHN0
YXJ0LCBjb3VudCwgaW5zdGFuY2VzLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc291cmNlRGF0YSkpOworICAgIEFOR0xFX1RSWShtVmVydGV4
QnVmZmVyLT5zdG9yZVZlcnRleEF0dHJpYnV0ZXMoYXR0cmliLCBiaW5kaW5nLCBHTF9OT05FLCBz
dGFydCwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnN0YW5jZXMsIDAsIHNvdXJjZURhdGEpKTsKIAotICAgIG1TaWduYXR1cmUuc2V0
KGF0dHJpYik7CisgICAgbVNpZ25hdHVyZS5zZXQoYXR0cmliLCBiaW5kaW5nKTsKICAgICBtVmVy
dGV4QnVmZmVyLT5oaW50VW5tYXBSZXNvdXJjZSgpOwogICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9WZXJ0ZXhCdWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4QnVmZmVyLmgKaW5kZXggYjNkOTgyNDdmYjU4MmYw
NDliNmVlYjk4OTNmNGQ0Y2EwNmM0Y2EyMC4uYmI3NDljMWJmODNiYmEwMWZiYjMxNGY0NzdiOGJk
YTdiMzk3Y2QzZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhCdWZmZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleEJ1ZmZlci5oCkBAIC0yMiw2ICsy
Miw3IEBACiBuYW1lc3BhY2UgZ2wKIHsKIHN0cnVjdCBWZXJ0ZXhBdHRyaWJ1dGU7CitzdHJ1Y3Qg
VmVydGV4QmluZGluZzsKIHN0cnVjdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhOwogfQog
CkBAIC0zOCw3ICszOSwxMCBAQCBjbGFzcyBWZXJ0ZXhCdWZmZXIgOiBhbmdsZTo6Tm9uQ29weWFi
bGUKIAogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGluaXRpYWxpemUodW5zaWduZWQgaW50IHNpemUs
IGJvb2wgZHluYW1pY1VzYWdlKSA9IDA7CiAKKyAgICAvLyBXYXJuaW5nOiB5b3Ugc2hvdWxkIGVu
c3VyZSBiaW5kaW5nIHJlYWxseSBtYXRjaGVzIGF0dHJpYi5iaW5kaW5nSW5kZXggYmVmb3JlIHVz
aW5nIHRoaXMKKyAgICAvLyBmdW5jdGlvbi4KICAgICB2aXJ0dWFsIGdsOjpFcnJvciBzdG9yZVZl
cnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VmVydGV4Qmlu
ZGluZyAmYmluZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGN1cnJlbnRWYWx1ZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LApAQCAtODYsNyArOTAsOSBAQCBjbGFzcyBW
ZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBnbDo6RXJyb3Ig
ZGlzY2FyZCgpOwogCiAgICAgZ2w6OkVycm9yIHNldEJ1ZmZlclNpemUodW5zaWduZWQgaW50IHNp
emUpOworCiAgICAgZ2w6OkVycm9yT3JSZXN1bHQ8dW5zaWduZWQgaW50PiBnZXRTcGFjZVJlcXVp
cmVkKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZlcnRleEJpbmRp
bmcgJmJpbmRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzKSBjb25zdDsKICAgICBCdWZm
ZXJGYWN0b3J5RDNEICpjb25zdCBtRmFjdG9yeTsKQEAgLTEwMSw2ICsxMDcsNyBAQCBjbGFzcyBT
dHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgOiBwdWJsaWMgVmVydGV4QnVmZmVySW50ZXJm
YWNlCiAgICAgflN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZSgpOwogCiAgICAgZ2w6OkVy
cm9yIHN0b3JlRHluYW1pY0F0dHJpYnV0ZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRy
aWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VmVydGV4
QmluZGluZyAmYmluZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBjdXJyZW50VmFsdWVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LApAQCAtMTA5LDYgKzExNiw3IEBAIGNsYXNzIFN0cmVhbWluZ1ZlcnRleEJ1ZmZl
ckludGVyZmFjZSA6IHB1YmxpYyBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEpOwogCiAgICAg
Z2w6OkVycm9yIHJlc2VydmVWZXJ0ZXhTcGFjZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZh
dHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VmVy
dGV4QmluZGluZyAmYmluZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGlu
c3RhbmNlcyk7CiAKQEAgLTEyNSwyMiArMTMzLDMwIEBAIGNsYXNzIFN0YXRpY1ZlcnRleEJ1ZmZl
ckludGVyZmFjZSA6IHB1YmxpYyBWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UKICAgICBleHBsaWNpdCBT
dGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UoQnVmZmVyRmFjdG9yeUQzRCAqZmFjdG9yeSk7CiAg
ICAgflN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSgpOwogCisgICAgLy8gV2FybmluZzogeW91
IHNob3VsZCBlbnN1cmUgYmluZGluZyByZWFsbHkgbWF0Y2hlcyBhdHRyaWIuYmluZGluZ0luZGV4
IGJlZm9yZSB1c2luZyB0aGVzZQorICAgIC8vIGZ1bmN0aW9ucy4KICAgICBnbDo6RXJyb3Igc3Rv
cmVTdGF0aWNBdHRyaWJ1dGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VmVydGV4QmluZGluZyAm
YmluZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RhcnQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2VEYXRhKTsK
IAotICAgIGJvb2wgbWF0Y2hlc0F0dHJpYnV0ZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZh
dHRyaWJ1dGUpIGNvbnN0OwotICAgIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IGdsOjpWZXJ0ZXhB
dHRyaWJ1dGUgJmF0dHJpYnV0ZSk7CisgICAgYm9vbCBtYXRjaGVzQXR0cmlidXRlKGNvbnN0IGds
OjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlZlcnRleEJpbmRpbmcgJmJpbmRpbmcpIGNvbnN0OworCisgICAgdm9pZCBzZXRB
dHRyaWJ1dGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLCBjb25zdCBnbDo6
VmVydGV4QmluZGluZyAmYmluZGluZyk7CiAKICAgcHJpdmF0ZToKICAgICBjbGFzcyBBdHRyaWJ1
dGVTaWduYXR1cmUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICB7CiAgICAgICBwdWJs
aWM6CiAgICAgICAgIEF0dHJpYnV0ZVNpZ25hdHVyZSgpOwotICAgICAgICBib29sIG1hdGNoZXNB
dHRyaWJ1dGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKSBjb25zdDsKLSAgICAg
ICAgdm9pZCBzZXQoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKTsKKworICAgICAg
ICBib29sIG1hdGNoZXNBdHRyaWJ1dGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmli
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZlcnRleEJpbmRpbmcg
JmJpbmRpbmcpIGNvbnN0OworCisgICAgICAgIHZvaWQgc2V0KGNvbnN0IGdsOjpWZXJ0ZXhBdHRy
aWJ1dGUgJmF0dHJpYiwgY29uc3QgZ2w6OlZlcnRleEJpbmRpbmcgJmJpbmRpbmcpOwogCiAgICAg
ICBwcml2YXRlOgogICAgICAgICBHTGVudW0gdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0YU1hbmFnZXIu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9W
ZXJ0ZXhEYXRhTWFuYWdlci5jcHAKaW5kZXggZmZmMTZlNjNhNDEwYmFlNDc1OGNmZjI0MDI3NmJj
NjVmYzQ1M2U1Mi4uMzViMjQwNWYwNzc1MjRmMmRkYzQzNGRiNGYzODBkOGY3ZmU1OTY0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9WZXJ0ZXhEYXRhTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhEYXRhTWFuYWdlci5jcHAKQEAgLTksNyArOSw3
IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0YU1hbmFnZXIu
aCIKIAotI2luY2x1ZGUgImNvbW1vbi9CaXRTZXRJdGVyYXRvci5oIgorI2luY2x1ZGUgImNvbW1v
bi9iaXRzZXRfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9CdWZmZXIuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIK
QEAgLTM2LDcgKzM2LDEwIEBAIGVudW0KICAgICBDT05TVEFOVF9WRVJURVhfQlVGRkVSX1NJWkUg
PSA0MDk2CiB9OwogCi1pbnQgRWxlbWVudHNJbkJ1ZmZlcihjb25zdCBnbDo6VmVydGV4QXR0cmli
dXRlICZhdHRyaWIsIHVuc2lnbmVkIGludCBzaXplKQorLy8gV2FybmluZzogeW91IHNob3VsZCBl
bnN1cmUgYmluZGluZyByZWFsbHkgbWF0Y2hlcyBhdHRyaWIuYmluZGluZ0luZGV4IGJlZm9yZSB1
c2luZyB0aGlzIGZ1bmN0aW9uLgoraW50IEVsZW1lbnRzSW5CdWZmZXIoY29uc3QgZ2w6OlZlcnRl
eEF0dHJpYnV0ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZlcnRl
eEJpbmRpbmcgJmJpbmRpbmcsCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2l6
ZSkKIHsKICAgICAvLyBTaXplIGNhbm5vdCBiZSBsYXJnZXIgdGhhbiBhIEdMc2l6ZWkKICAgICBp
ZiAoc2l6ZSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ+OjptYXgoKSkpCkBAIC00NCwxMyArNDcsMTUgQEAgaW50IEVsZW1lbnRzSW5CdWZmZXIoY29u
c3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCB1bnNpZ25lZCBpbnQgc2l6ZSkKICAgICAg
ICAgc2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3RkOjpudW1lcmljX2xpbWl0czxp
bnQ+OjptYXgoKSk7CiAgICAgfQogCi0gICAgR0xzaXplaSBzdHJpZGUgPSBzdGF0aWNfY2FzdDxH
THNpemVpPihDb21wdXRlVmVydGV4QXR0cmlidXRlU3RyaWRlKGF0dHJpYikpOwotICAgIHJldHVy
biAoc2l6ZSAtIGF0dHJpYi5vZmZzZXQgJSBzdHJpZGUgKworICAgIEdMc2l6ZWkgc3RyaWRlID0g
c3RhdGljX2Nhc3Q8R0xzaXplaT4oQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShhdHRyaWIs
IGJpbmRpbmcpKTsKKyAgICBHTHNpemVpIG9mZnNldCA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KENv
bXB1dGVWZXJ0ZXhBdHRyaWJ1dGVPZmZzZXQoYXR0cmliLCBiaW5kaW5nKSk7CisgICAgcmV0dXJu
IChzaXplIC0gb2Zmc2V0ICUgc3RyaWRlICsKICAgICAgICAgICAgIChzdHJpZGUgLSBzdGF0aWNf
Y2FzdDxHTHNpemVpPihDb21wdXRlVmVydGV4QXR0cmlidXRlVHlwZVNpemUoYXR0cmliKSkpKSAv
CiAgICAgICAgICAgIHN0cmlkZTsKIH0KIAotYm9vbCBEaXJlY3RTdG9yYWdlUG9zc2libGUoY29u
c3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKQorLy8gV2FybmluZzogeW91IHNob3VsZCBl
bnN1cmUgYmluZGluZyByZWFsbHkgbWF0Y2hlcyBhdHRyaWIuYmluZGluZ0luZGV4IGJlZm9yZSB1
c2luZyB0aGlzIGZ1bmN0aW9uLgorYm9vbCBEaXJlY3RTdG9yYWdlUG9zc2libGUoY29uc3QgZ2w6
OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBjb25zdCBnbDo6VmVydGV4QmluZGluZyAmYmluZGlu
ZykKIHsKICAgICAvLyBDdXJyZW50IHZhbHVlIGF0dHJpYnMgbWF5IG5vdCB1c2UgZGlyZWN0IHN0
b3JhZ2UuCiAgICAgaWYgKCFhdHRyaWIuZW5hYmxlZCkKQEAgLTU4LDcgKzYzLDcgQEAgYm9vbCBE
aXJlY3RTdG9yYWdlUG9zc2libGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgZ2w6OkJ1ZmZlciAqYnVmZmVyID0g
YXR0cmliLmJ1ZmZlci5nZXQoKTsKKyAgICBnbDo6QnVmZmVyICpidWZmZXIgPSBiaW5kaW5nLmJ1
ZmZlci5nZXQoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTc1LDMyICs4MCwzMyBAQCBib29sIERpcmVjdFN0b3JhZ2VQb3NzaWJsZShjb25zdCBn
bDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpCiAgICAgLy8gNC1ieXRlIGJvdW5kYXJ5LCB3aGlj
aGV2ZXIgaXMgc21hbGxlci4gKFVuZG9jdW1lbnRlZCwgYW5kIGV4cGVyaW1lbnRhbGx5IGNvbmZp
cm1lZCkKICAgICBzaXplX3QgYWxpZ25tZW50ID0gNDsKIAotICAgIGlmIChhdHRyaWIudHlwZSAh
PSBHTF9GTE9BVCkKLSAgICB7Ci0gICAgICAgIGdsOjpWZXJ0ZXhGb3JtYXRUeXBlIHZlcnRleEZv
cm1hdFR5cGUgPSBnbDo6R2V0VmVydGV4Rm9ybWF0VHlwZShhdHRyaWIpOworICAgIC8vIFRPRE8o
am1hZGlsbCk6IGFkZCBWZXJ0ZXhGb3JtYXRDYXBzCisgICAgQnVmZmVyRmFjdG9yeUQzRCAqZmFj
dG9yeSA9IGJ1ZmZlckQzRC0+Z2V0RmFjdG9yeSgpOwogCi0gICAgICAgIC8vIFRPRE8oam1hZGls
bCk6IGFkZCBWZXJ0ZXhGb3JtYXRDYXBzCi0gICAgICAgIEJ1ZmZlckZhY3RvcnlEM0QgKmZhY3Rv
cnkgPSBidWZmZXJEM0QtPmdldEZhY3RvcnkoKTsKKyAgICBnbDo6VmVydGV4Rm9ybWF0VHlwZSB2
ZXJ0ZXhGb3JtYXRUeXBlID0gZ2w6OkdldFZlcnRleEZvcm1hdFR5cGUoYXR0cmliKTsKKworICAg
IC8vIENQVS1jb252ZXJ0ZWQgdmVydGV4IGRhdGEgbXVzdCBiZSBjb252ZXJ0ZWQgKG5hdHVyYWxs
eSkuCisgICAgaWYgKChmYWN0b3J5LT5nZXRWZXJ0ZXhDb252ZXJzaW9uVHlwZSh2ZXJ0ZXhGb3Jt
YXRUeXBlKSAmIFZFUlRFWF9DT05WRVJUX0NQVSkgIT0gMCkKKyAgICB7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CiAKLSAgICAgICAgYXV0byBlcnJvck9yRWxlbWVudFNpemUgPSBmYWN0
b3J5LT5nZXRWZXJ0ZXhTcGFjZVJlcXVpcmVkKGF0dHJpYiwgMSwgMCk7CisgICAgaWYgKGF0dHJp
Yi50eXBlICE9IEdMX0ZMT0FUKQorICAgIHsKKyAgICAgICAgYXV0byBlcnJvck9yRWxlbWVudFNp
emUgPSBmYWN0b3J5LT5nZXRWZXJ0ZXhTcGFjZVJlcXVpcmVkKGF0dHJpYiwgYmluZGluZywgMSwg
MCk7CiAgICAgICAgIGlmIChlcnJvck9yRWxlbWVudFNpemUuaXNFcnJvcigpKQogICAgICAgICB7
Ci0gICAgICAgICAgICBFUlIoIlVubG9nZ2VkIGVycm9yIGluIERpcmVjdFN0b3JhZ2VQb3NzaWJs
ZS4iKTsKKyAgICAgICAgICAgIEVSUigpIDw8ICJVbmxvZ2dlZCBlcnJvciBpbiBEaXJlY3RTdG9y
YWdlUG9zc2libGUuIjsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAg
ICAgICAgIGFsaWdubWVudCA9IHN0ZDo6bWluPHNpemVfdD4oZXJyb3JPckVsZW1lbnRTaXplLmdl
dFJlc3VsdCgpLCA0KTsKLQotICAgICAgICAvLyBDUFUtY29udmVydGVkIHZlcnRleCBkYXRhIG11
c3QgYmUgY29udmVydGVkIChuYXR1cmFsbHkpLgotICAgICAgICBpZiAoKGZhY3RvcnktPmdldFZl
cnRleENvbnZlcnNpb25UeXBlKHZlcnRleEZvcm1hdFR5cGUpICYgVkVSVEVYX0NPTlZFUlRfQ1BV
KSAhPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
ICAgICB9CiAKKyAgICBHTGludHB0ciBvZmZzZXQgPSBDb21wdXRlVmVydGV4QXR0cmlidXRlT2Zm
c2V0KGF0dHJpYiwgYmluZGluZyk7CiAgICAgLy8gRmluYWwgYWxpZ25tZW50IGNoZWNrIC0gdW5h
bGlnbmVkIGRhdGEgbXVzdCBiZSBjb252ZXJ0ZWQuCi0gICAgcmV0dXJuIChzdGF0aWNfY2FzdDxz
aXplX3Q+KENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJpZGUoYXR0cmliKSkgJSBhbGlnbm1lbnQg
PT0gMCkgJiYKLSAgICAgICAgICAgKHN0YXRpY19jYXN0PHNpemVfdD4oYXR0cmliLm9mZnNldCkg
JSBhbGlnbm1lbnQgPT0gMCk7CisgICAgcmV0dXJuIChzdGF0aWNfY2FzdDxzaXplX3Q+KENvbXB1
dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJpZGUoYXR0cmliLCBiaW5kaW5nKSkgJSBhbGlnbm1lbnQgPT0g
MCkgJiYKKyAgICAgICAgICAgKHN0YXRpY19jYXN0PHNpemVfdD4ob2Zmc2V0KSAlIGFsaWdubWVu
dCA9PSAwKTsKIH0KIH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKIApAQCAtMTMyLDcgKzEzOCw5
IEBAIGdsOjpFcnJvck9yUmVzdWx0PHVuc2lnbmVkIGludD4gVHJhbnNsYXRlZEF0dHJpYnV0ZTo6
Y29tcHV0ZU9mZnNldChHTGludCBzdGFydFZlCiAgICAgcmV0dXJuIG9mZnNldC5WYWx1ZU9yRGll
KCk7CiB9CiAKLVZlcnRleFN0b3JhZ2VUeXBlIENsYXNzaWZ5QXR0cmlidXRlU3RvcmFnZShjb25z
dCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpCisvLyBXYXJuaW5nOiB5b3Ugc2hvdWxkIGVu
c3VyZSBiaW5kaW5nIHJlYWxseSBtYXRjaGVzIGF0dHJpYi5iaW5kaW5nSW5kZXggYmVmb3JlIHVz
aW5nIHRoaXMgZnVuY3Rpb24uCitWZXJ0ZXhTdG9yYWdlVHlwZSBDbGFzc2lmeUF0dHJpYnV0ZVN0
b3JhZ2UoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5nICZiaW5k
aW5nKQogewogICAgIC8vIElmIGF0dHJpYnV0ZSBpcyBkaXNhYmxlZCwgd2UgdXNlIHRoZSBjdXJy
ZW50IHZhbHVlLgogICAgIGlmICghYXR0cmliLmVuYWJsZWQpCkBAIC0xNDEsMTQgKzE0OSwxNCBA
QCBWZXJ0ZXhTdG9yYWdlVHlwZSBDbGFzc2lmeUF0dHJpYnV0ZVN0b3JhZ2UoY29uc3QgZ2w6OlZl
cnRleEF0dHJpYnV0ZSAmYXR0cmliKQogICAgIH0KIAogICAgIC8vIElmIHNwZWNpZmllZCB3aXRo
IGltbWVkaWF0ZSBkYXRhLCB3ZSBtdXN0IHVzZSBkeW5hbWljIHN0b3JhZ2UuCi0gICAgYXV0byAq
YnVmZmVyID0gYXR0cmliLmJ1ZmZlci5nZXQoKTsKKyAgICBhdXRvICpidWZmZXIgPSBiaW5kaW5n
LmJ1ZmZlci5nZXQoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICB7CiAgICAgICAgIHJldHVybiBW
ZXJ0ZXhTdG9yYWdlVHlwZTo6RFlOQU1JQzsKICAgICB9CiAKICAgICAvLyBDaGVjayBpZiB0aGUg
YnVmZmVyIHN1cHBvcnRzIGRpcmVjdCBzdG9yYWdlLgotICAgIGlmIChEaXJlY3RTdG9yYWdlUG9z
c2libGUoYXR0cmliKSkKKyAgICBpZiAoRGlyZWN0U3RvcmFnZVBvc3NpYmxlKGF0dHJpYiwgYmlu
ZGluZykpCiAgICAgewogICAgICAgICByZXR1cm4gVmVydGV4U3RvcmFnZVR5cGU6OkRJUkVDVDsK
ICAgICB9CkBAIC0xOTQsNyArMjAyLDcgQEAgVmVydGV4RGF0YU1hbmFnZXI6OlZlcnRleERhdGFN
YW5hZ2VyKEJ1ZmZlckZhY3RvcnlEM0QgKmZhY3RvcnkpCiAKICAgICBpZiAoIW1TdHJlYW1pbmdC
dWZmZXIpCiAgICAgewotICAgICAgICBFUlIoIkZhaWxlZCB0byBhbGxvY2F0ZSB0aGUgc3RyZWFt
aW5nIHZlcnRleCBidWZmZXIuIik7CisgICAgICAgIEVSUigpIDw8ICJGYWlsZWQgdG8gYWxsb2Nh
dGUgdGhlIHN0cmVhbWluZyB2ZXJ0ZXggYnVmZmVyLiI7CiAgICAgfQogfQogCkBAIC0yMTMsNiAr
MjIxLDcgQEAgZ2w6OkVycm9yIFZlcnRleERhdGFNYW5hZ2VyOjpwcmVwYXJlVmVydGV4RGF0YShj
b25zdCBnbDo6U3RhdGUgJnN0YXRlLAogCiAgICAgY29uc3QgZ2w6OlZlcnRleEFycmF5ICp2ZXJ0
ZXhBcnJheSA9IHN0YXRlLmdldFZlcnRleEFycmF5KCk7CiAgICAgY29uc3QgYXV0byAmdmVydGV4
QXR0cmlidXRlcyAgICAgICA9IHZlcnRleEFycmF5LT5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7Cisg
ICAgY29uc3QgYXV0byAmdmVydGV4QmluZGluZ3MgICAgICAgICA9IHZlcnRleEFycmF5LT5nZXRW
ZXJ0ZXhCaW5kaW5ncygpOwogCiAgICAgbUR5bmFtaWNBdHRyaWJzTWFza0NhY2hlLnJlc2V0KCk7
CiAgICAgY29uc3QgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBzdGF0ZS5nZXRQcm9ncmFtKCk7CkBA
IC0yMjYsNiArMjM1LDcgQEAgZ2w6OkVycm9yIFZlcnRleERhdGFNYW5hZ2VyOjpwcmVwYXJlVmVy
dGV4RGF0YShjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgY29uc3QgYXV0byAmYXR0cmliID0gdmVydGV4QXR0cmlidXRlc1thdHRyaWJJbmRl
eF07CisgICAgICAgIGNvbnN0IGF1dG8gJmJpbmRpbmcgPSB2ZXJ0ZXhCaW5kaW5nc1thdHRyaWIu
YmluZGluZ0luZGV4XTsKIAogICAgICAgICAvLyBSZXNpemUgYXV0b21hdGljYWxseSBwdXRzIGlu
IGVtcHR5IGF0dHJpYnMKICAgICAgICAgdHJhbnNsYXRlZEF0dHJpYnMtPnJlc2l6ZShhdHRyaWJJ
bmRleCArIDEpOwpAQCAtMjM3LDE1ICsyNDcsMTYgQEAgZ2w6OkVycm9yIFZlcnRleERhdGFNYW5h
Z2VyOjpwcmVwYXJlVmVydGV4RGF0YShjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAogICAgICAgICAv
LyBSZWNvcmQgdGhlIGF0dHJpYnV0ZSBub3cKICAgICAgICAgdHJhbnNsYXRlZC0+YWN0aXZlICAg
ICAgICAgICA9IHRydWU7CiAgICAgICAgIHRyYW5zbGF0ZWQtPmF0dHJpYnV0ZSAgICAgICAgPSAm
YXR0cmliOworICAgICAgICB0cmFuc2xhdGVkLT5iaW5kaW5nICAgICAgICAgID0gJmJpbmRpbmc7
CiAgICAgICAgIHRyYW5zbGF0ZWQtPmN1cnJlbnRWYWx1ZVR5cGUgPSBjdXJyZW50VmFsdWVEYXRh
LlR5cGU7Ci0gICAgICAgIHRyYW5zbGF0ZWQtPmRpdmlzb3IgICAgICAgICAgPSBhdHRyaWIuZGl2
aXNvcjsKKyAgICAgICAgdHJhbnNsYXRlZC0+ZGl2aXNvciAgICAgICAgICA9IGJpbmRpbmcuZGl2
aXNvcjsKIAotICAgICAgICBzd2l0Y2ggKENsYXNzaWZ5QXR0cmlidXRlU3RvcmFnZShhdHRyaWIp
KQorICAgICAgICBzd2l0Y2ggKENsYXNzaWZ5QXR0cmlidXRlU3RvcmFnZShhdHRyaWIsIGJpbmRp
bmcpKQogICAgICAgICB7CiAgICAgICAgICAgICBjYXNlIFZlcnRleFN0b3JhZ2VUeXBlOjpTVEFU
SUM6CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgLy8gU3RvcmUgc3RhdGljIGF0dHJp
YnV0ZS4KLSAgICAgICAgICAgICAgICBBTkdMRV9UUlkoU3RvcmVTdGF0aWNBdHRyaWIodHJhbnNs
YXRlZCwgY291bnQsIGluc3RhbmNlcykpOworICAgICAgICAgICAgICAgIEFOR0xFX1RSWShTdG9y
ZVN0YXRpY0F0dHJpYih0cmFuc2xhdGVkKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFZlcnRleFN0b3JhZ2VUeXBlOjpEWU5BTUlDOgpA
QCAtMjgzLDYxICsyOTQsNjQgQEAgZ2w6OkVycm9yIFZlcnRleERhdGFNYW5hZ2VyOjpwcmVwYXJl
VmVydGV4RGF0YShjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAogLy8gc3RhdGljCiB2b2lkIFZlcnRl
eERhdGFNYW5hZ2VyOjpTdG9yZURpcmVjdEF0dHJpYihUcmFuc2xhdGVkQXR0cmlidXRlICpkaXJl
Y3RBdHRyaWIpCiB7Ci0gICAgY29uc3QgYXV0byAmYXR0cmliICAgPSAqZGlyZWN0QXR0cmliLT5h
dHRyaWJ1dGU7Ci0gICAgZ2w6OkJ1ZmZlciAqYnVmZmVyICAgPSBhdHRyaWIuYnVmZmVyLmdldCgp
OworICAgIGNvbnN0IGF1dG8gJmF0dHJpYiAgPSAqZGlyZWN0QXR0cmliLT5hdHRyaWJ1dGU7Cisg
ICAgY29uc3QgYXV0byAmYmluZGluZyA9ICpkaXJlY3RBdHRyaWItPmJpbmRpbmc7CisKKyAgICBn
bDo6QnVmZmVyICpidWZmZXIgICA9IGJpbmRpbmcuYnVmZmVyLmdldCgpOwogICAgIEJ1ZmZlckQz
RCAqYnVmZmVyRDNEID0gYnVmZmVyID8gR2V0SW1wbEFzPEJ1ZmZlckQzRD4oYnVmZmVyKSA6IG51
bGxwdHI7CiAKLSAgICBBU1NFUlQoRGlyZWN0U3RvcmFnZVBvc3NpYmxlKGF0dHJpYikpOworICAg
IEFTU0VSVChEaXJlY3RTdG9yYWdlUG9zc2libGUoYXR0cmliLCBiaW5kaW5nKSk7CiAgICAgZGly
ZWN0QXR0cmliLT52ZXJ0ZXhCdWZmZXIuc2V0KG51bGxwdHIpOwogICAgIGRpcmVjdEF0dHJpYi0+
c3RvcmFnZSA9IGJ1ZmZlckQzRDsKICAgICBkaXJlY3RBdHRyaWItPnNlcmlhbCAgPSBidWZmZXJE
M0QtPmdldFNlcmlhbCgpOwotICAgIGRpcmVjdEF0dHJpYi0+c3RyaWRlID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgaW50PihDb21wdXRlVmVydGV4QXR0cmlidXRlU3RyaWRlKGF0dHJpYikpOwotICAg
IGRpcmVjdEF0dHJpYi0+YmFzZU9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oYXR0
cmliLm9mZnNldCk7CisgICAgZGlyZWN0QXR0cmliLT5zdHJpZGUgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJpZGUoYXR0cmliLCBiaW5kaW5nKSk7
CisgICAgZGlyZWN0QXR0cmliLT5iYXNlT2Zmc2V0ID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50PihDb21wdXRlVmVydGV4QXR0cmlidXRlT2Zmc2V0KGF0dHJpYiwgYmluZGluZykp
OwogCiAgICAgLy8gSW5zdGFuY2VkIHZlcnRpY2VzIGRvIG5vdCBhcHBseSB0aGUgJ3N0YXJ0JyBv
ZmZzZXQKLSAgICBkaXJlY3RBdHRyaWItPnVzZXNGaXJzdFZlcnRleE9mZnNldCA9IChhdHRyaWIu
ZGl2aXNvciA9PSAwKTsKKyAgICBkaXJlY3RBdHRyaWItPnVzZXNGaXJzdFZlcnRleE9mZnNldCA9
IChiaW5kaW5nLmRpdmlzb3IgPT0gMCk7CiB9CiAKIC8vIHN0YXRpYwotZ2w6OkVycm9yIFZlcnRl
eERhdGFNYW5hZ2VyOjpTdG9yZVN0YXRpY0F0dHJpYihUcmFuc2xhdGVkQXR0cmlidXRlICp0cmFu
c2xhdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGluc3RhbmNlcykKK2dsOjpFcnJvciBWZXJ0ZXhEYXRhTWFuYWdlcjo6U3Rv
cmVTdGF0aWNBdHRyaWIoVHJhbnNsYXRlZEF0dHJpYnV0ZSAqdHJhbnNsYXRlZCkKIHsKLSAgICBj
b25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIgPSAqdHJhbnNsYXRlZC0+YXR0cmlidXRl
OworICAgIGNvbnN0IGF1dG8gJmF0dHJpYiAgPSAqdHJhbnNsYXRlZC0+YXR0cmlidXRlOworICAg
IGNvbnN0IGF1dG8gJmJpbmRpbmcgPSAqdHJhbnNsYXRlZC0+YmluZGluZzsKIAotICAgIGdsOjpC
dWZmZXIgKmJ1ZmZlciA9IGF0dHJpYi5idWZmZXIuZ2V0KCk7Ci0gICAgQVNTRVJUKGJ1ZmZlciAm
JiBhdHRyaWIuZW5hYmxlZCAmJiAhRGlyZWN0U3RvcmFnZVBvc3NpYmxlKGF0dHJpYikpOworICAg
IGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGJpbmRpbmcuYnVmZmVyLmdldCgpOworICAgIEFTU0VSVChi
dWZmZXIgJiYgYXR0cmliLmVuYWJsZWQgJiYgIURpcmVjdFN0b3JhZ2VQb3NzaWJsZShhdHRyaWIs
IGJpbmRpbmcpKTsKICAgICBCdWZmZXJEM0QgKmJ1ZmZlckQzRCA9IEdldEltcGxBczxCdWZmZXJE
M0Q+KGJ1ZmZlcik7CiAKICAgICAvLyBDb21wdXRlIHNvdXJjZSBkYXRhIHBvaW50ZXIKICAgICBj
b25zdCB1aW50OF90ICpzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBjb25zdCBpbnQgb2Zmc2V0
ICAgICAgICAgID0gc3RhdGljX2Nhc3Q8aW50PihDb21wdXRlVmVydGV4QXR0cmlidXRlT2Zmc2V0
KGF0dHJpYiwgYmluZGluZykpOwogCiAgICAgQU5HTEVfVFJZKGJ1ZmZlckQzRC0+Z2V0RGF0YSgm
c291cmNlRGF0YSkpOwotICAgIHNvdXJjZURhdGEgKz0gc3RhdGljX2Nhc3Q8aW50PihhdHRyaWIu
b2Zmc2V0KTsKKyAgICBzb3VyY2VEYXRhICs9IG9mZnNldDsKIAogICAgIHVuc2lnbmVkIGludCBz
dHJlYW1PZmZzZXQgPSAwOwogCiAgICAgdHJhbnNsYXRlZC0+c3RvcmFnZSA9IG51bGxwdHI7Ci0g
ICAgQU5HTEVfVFJZX1JFU1VMVChidWZmZXJEM0QtPmdldEZhY3RvcnkoKS0+Z2V0VmVydGV4U3Bh
Y2VSZXF1aXJlZChhdHRyaWIsIDEsIDApLAorICAgIEFOR0xFX1RSWV9SRVNVTFQoYnVmZmVyRDNE
LT5nZXRGYWN0b3J5KCktPmdldFZlcnRleFNwYWNlUmVxdWlyZWQoYXR0cmliLCBiaW5kaW5nLCAx
LCAwKSwKICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQtPnN0cmlkZSk7CiAKLSAgICBh
dXRvICpzdGF0aWNCdWZmZXIgPSBidWZmZXJEM0QtPmdldFN0YXRpY1ZlcnRleEJ1ZmZlcihhdHRy
aWIpOworICAgIGF1dG8gKnN0YXRpY0J1ZmZlciA9IGJ1ZmZlckQzRC0+Z2V0U3RhdGljVmVydGV4
QnVmZmVyKGF0dHJpYiwgYmluZGluZyk7CiAgICAgQVNTRVJUKHN0YXRpY0J1ZmZlcik7CiAKICAg
ICBpZiAoc3RhdGljQnVmZmVyLT5lbXB0eSgpKQogICAgIHsKICAgICAgICAgLy8gQ29udmVydCB0
aGUgZW50aXJlIGJ1ZmZlcgotICAgICAgICBpbnQgdG90YWxDb3VudCA9IEVsZW1lbnRzSW5CdWZm
ZXIoYXR0cmliLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGJ1ZmZlckQzRC0+Z2V0U2l6ZSgp
KSk7Ci0gICAgICAgIGludCBzdGFydEluZGV4ID0gc3RhdGljX2Nhc3Q8aW50PihhdHRyaWIub2Zm
c2V0KSAvCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihDb21wdXRl
VmVydGV4QXR0cmlidXRlU3RyaWRlKGF0dHJpYikpOworICAgICAgICBpbnQgdG90YWxDb3VudCA9
CisgICAgICAgICAgICBFbGVtZW50c0luQnVmZmVyKGF0dHJpYiwgYmluZGluZywgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgaW50PihidWZmZXJEM0QtPmdldFNpemUoKSkpOworICAgICAgICBpbnQgc3Rh
cnRJbmRleCA9IG9mZnNldCAvIHN0YXRpY19jYXN0PGludD4oQ29tcHV0ZVZlcnRleEF0dHJpYnV0
ZVN0cmlkZShhdHRyaWIsIGJpbmRpbmcpKTsKIAotICAgICAgICBBTkdMRV9UUlkoCi0gICAgICAg
ICAgICBzdGF0aWNCdWZmZXItPnN0b3JlU3RhdGljQXR0cmlidXRlKGF0dHJpYiwgLXN0YXJ0SW5k
ZXgsIHRvdGFsQ291bnQsIDAsIHNvdXJjZURhdGEpKTsKKyAgICAgICAgQU5HTEVfVFJZKHN0YXRp
Y0J1ZmZlci0+c3RvcmVTdGF0aWNBdHRyaWJ1dGUoYXR0cmliLCBiaW5kaW5nLCAtc3RhcnRJbmRl
eCwgdG90YWxDb3VudCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc291cmNlRGF0YSkpOwogICAgIH0KIAogICAgIHVuc2lnbmVkIGludCBm
aXJzdEVsZW1lbnRPZmZzZXQgPQotICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihh
dHRyaWIub2Zmc2V0KSAvCi0gICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KENvbXB1
dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJpZGUoYXR0cmliKSkpICoKKyAgICAgICAgKHN0YXRpY19jYXN0
PHVuc2lnbmVkIGludD4ob2Zmc2V0KSAvCisgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJpZGUoYXR0cmliLCBiaW5kaW5nKSkpICoKICAg
ICAgICAgdHJhbnNsYXRlZC0+c3RyaWRlOwogCiAgICAgVmVydGV4QnVmZmVyICp2ZXJ0ZXhCdWZm
ZXIgPSBzdGF0aWNCdWZmZXItPmdldFZlcnRleEJ1ZmZlcigpOwpAQCAtMzU2LDcgKzM3MCw3IEBA
IGdsOjpFcnJvciBWZXJ0ZXhEYXRhTWFuYWdlcjo6U3RvcmVTdGF0aWNBdHRyaWIoVHJhbnNsYXRl
ZEF0dHJpYnV0ZSAqdHJhbnNsYXRlZCwKICAgICB0cmFuc2xhdGVkLT5iYXNlT2Zmc2V0ID0gc3Ry
ZWFtT2Zmc2V0ICsgZmlyc3RFbGVtZW50T2Zmc2V0OwogCiAgICAgLy8gSW5zdGFuY2VkIHZlcnRp
Y2VzIGRvIG5vdCBhcHBseSB0aGUgJ3N0YXJ0JyBvZmZzZXQKLSAgICB0cmFuc2xhdGVkLT51c2Vz
Rmlyc3RWZXJ0ZXhPZmZzZXQgPSAoYXR0cmliLmRpdmlzb3IgPT0gMCk7CisgICAgdHJhbnNsYXRl
ZC0+dXNlc0ZpcnN0VmVydGV4T2Zmc2V0ID0gKGJpbmRpbmcuZGl2aXNvciA9PSAwKTsKIAogICAg
IHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQpAQCAtNDExLDExICs0MjUsMTIgQEAgdm9pZCBWZXJ0
ZXhEYXRhTWFuYWdlcjo6UHJvbW90ZUR5bmFtaWNBdHRyaWJzKAogICAgIGZvciAoYXV0byBhdHRy
aWJJbmRleCA6IEl0ZXJhdGVCaXRTZXQoZHluYW1pY0F0dHJpYnNNYXNrKSkKICAgICB7CiAgICAg
ICAgIGNvbnN0IGF1dG8gJmR5bmFtaWNBdHRyaWIgPSB0cmFuc2xhdGVkQXR0cmlic1thdHRyaWJJ
bmRleF07Ci0gICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGR5bmFtaWNBdHRyaWIuYXR0cmli
dXRlLT5idWZmZXIuZ2V0KCk7CisgICAgICAgIGNvbnN0IGF1dG8gJmJpbmRpbmcgICAgICAgPSAq
ZHluYW1pY0F0dHJpYi5iaW5kaW5nOworICAgICAgICBnbDo6QnVmZmVyICpidWZmZXIgICAgICAg
ID0gYmluZGluZy5idWZmZXIuZ2V0KCk7CiAgICAgICAgIGlmIChidWZmZXIpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEJ1ZmZlckQzRCAqYnVmZmVyRDNEID0gR2V0SW1wbEFzPEJ1ZmZlckQzRD4o
YnVmZmVyKTsKLSAgICAgICAgICAgIHNpemVfdCB0eXBlU2l6ZSA9IENvbXB1dGVWZXJ0ZXhBdHRy
aWJ1dGVUeXBlU2l6ZSgqZHluYW1pY0F0dHJpYi5hdHRyaWJ1dGUpOworICAgICAgICAgICAgc2l6
ZV90IHR5cGVTaXplICAgICAgPSBDb21wdXRlVmVydGV4QXR0cmlidXRlVHlwZVNpemUoKmR5bmFt
aWNBdHRyaWIuYXR0cmlidXRlKTsKICAgICAgICAgICAgIGJ1ZmZlckQzRC0+cHJvbW90ZVN0YXRp
Y1VzYWdlKGNvdW50ICogc3RhdGljX2Nhc3Q8aW50Pih0eXBlU2l6ZSkpOwogICAgICAgICB9CiAg
ICAgfQpAQCAtNDI1LDIwICs0NDAsMjAgQEAgZ2w6OkVycm9yIFZlcnRleERhdGFNYW5hZ2VyOjpy
ZXNlcnZlU3BhY2VGb3JBdHRyaWIoY29uc3QgVHJhbnNsYXRlZEF0dHJpYnV0ZSAmdHIKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGluc3RhbmNlcykgY29uc3QKIHsKLSAgICBjb25zdCBnbDo6VmVydGV4QXR0cmlidXRl
ICZhdHRyaWIgPSAqdHJhbnNsYXRlZEF0dHJpYi5hdHRyaWJ1dGU7Ci0gICAgQVNTRVJUKCFEaXJl
Y3RTdG9yYWdlUG9zc2libGUoYXR0cmliKSk7CisgICAgY29uc3QgYXV0byAmYXR0cmliICA9ICp0
cmFuc2xhdGVkQXR0cmliLmF0dHJpYnV0ZTsKKyAgICBjb25zdCBhdXRvICZiaW5kaW5nID0gKnRy
YW5zbGF0ZWRBdHRyaWIuYmluZGluZzsKKyAgICBBU1NFUlQoIURpcmVjdFN0b3JhZ2VQb3NzaWJs
ZShhdHRyaWIsIGJpbmRpbmcpKTsKIAotICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciAgID0gYXR0cmli
LmJ1ZmZlci5nZXQoKTsKKyAgICBnbDo6QnVmZmVyICpidWZmZXIgICA9IGJpbmRpbmcuYnVmZmVy
LmdldCgpOwogICAgIEJ1ZmZlckQzRCAqYnVmZmVyRDNEID0gYnVmZmVyID8gR2V0SW1wbEFzPEJ1
ZmZlckQzRD4oYnVmZmVyKSA6IG51bGxwdHI7Ci0gICAgQVNTRVJUKCFidWZmZXJEM0QgfHwgYnVm
ZmVyRDNELT5nZXRTdGF0aWNWZXJ0ZXhCdWZmZXIoYXR0cmliKSA9PSBudWxscHRyKTsKLSAgICBV
TlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKGJ1ZmZlckQzRCk7CisgICAgQVNTRVJUKCFidWZmZXJE
M0QgfHwgYnVmZmVyRDNELT5nZXRTdGF0aWNWZXJ0ZXhCdWZmZXIoYXR0cmliLCBiaW5kaW5nKSA9
PSBudWxscHRyKTsKIAotICAgIHNpemVfdCB0b3RhbENvdW50ID0gQ29tcHV0ZVZlcnRleEF0dHJp
YnV0ZUVsZW1lbnRDb3VudChhdHRyaWIsIGNvdW50LCBpbnN0YW5jZXMpOworICAgIHNpemVfdCB0
b3RhbENvdW50ID0gQ29tcHV0ZVZlcnRleEJpbmRpbmdFbGVtZW50Q291bnQoYmluZGluZywgY291
bnQsIGluc3RhbmNlcyk7CiAgICAgQVNTRVJUKCFidWZmZXJEM0QgfHwKLSAgICAgICAgICAgRWxl
bWVudHNJbkJ1ZmZlcihhdHRyaWIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oYnVmZmVyRDNE
LT5nZXRTaXplKCkpKSA+PQorICAgICAgICAgICBFbGVtZW50c0luQnVmZmVyKGF0dHJpYiwgYmlu
ZGluZywgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihidWZmZXJEM0QtPmdldFNpemUoKSkpID49
CiAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHRvdGFsQ291bnQpKTsKIAotICAgIHJl
dHVybiBtU3RyZWFtaW5nQnVmZmVyLT5yZXNlcnZlVmVydGV4U3BhY2UoYXR0cmliLCBzdGF0aWNf
Y2FzdDxHTHNpemVpPih0b3RhbENvdW50KSwKKyAgICByZXR1cm4gbVN0cmVhbWluZ0J1ZmZlci0+
cmVzZXJ2ZVZlcnRleFNwYWNlKGF0dHJpYiwgYmluZGluZywgc3RhdGljX2Nhc3Q8R0xzaXplaT4o
dG90YWxDb3VudCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnN0YW5jZXMpOwogfQogCkBAIC00NDcsMTYgKzQ2MiwxNyBAQCBnbDo6RXJyb3IgVmVy
dGV4RGF0YU1hbmFnZXI6OnN0b3JlRHluYW1pY0F0dHJpYihUcmFuc2xhdGVkQXR0cmlidXRlICp0
cmFuc2xhdGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzKQogewotICAgIGNvbnN0IGdsOjpWZXJ0ZXhBdHRy
aWJ1dGUgJmF0dHJpYiA9ICp0cmFuc2xhdGVkLT5hdHRyaWJ1dGU7CisgICAgY29uc3QgYXV0byAm
YXR0cmliICA9ICp0cmFuc2xhdGVkLT5hdHRyaWJ1dGU7CisgICAgY29uc3QgYXV0byAmYmluZGlu
ZyA9ICp0cmFuc2xhdGVkLT5iaW5kaW5nOwogCi0gICAgZ2w6OkJ1ZmZlciAqYnVmZmVyID0gYXR0
cmliLmJ1ZmZlci5nZXQoKTsKKyAgICBnbDo6QnVmZmVyICpidWZmZXIgPSBiaW5kaW5nLmJ1ZmZl
ci5nZXQoKTsKICAgICBBU1NFUlQoYnVmZmVyIHx8IGF0dHJpYi5wb2ludGVyKTsKICAgICBBU1NF
UlQoYXR0cmliLmVuYWJsZWQpOwogCiAgICAgQnVmZmVyRDNEICpzdG9yYWdlID0gYnVmZmVyID8g
R2V0SW1wbEFzPEJ1ZmZlckQzRD4oYnVmZmVyKSA6IG51bGxwdHI7CiAKICAgICAvLyBJbnN0YW5j
ZWQgdmVydGljZXMgZG8gbm90IGFwcGx5IHRoZSAnc3RhcnQnIG9mZnNldAotICAgIEdMaW50IGZp
cnN0VmVydGV4SW5kZXggPSAoYXR0cmliLmRpdmlzb3IgPiAwID8gMCA6IHN0YXJ0KTsKKyAgICBH
TGludCBmaXJzdFZlcnRleEluZGV4ID0gKGJpbmRpbmcuZGl2aXNvciA+IDAgPyAwIDogc3RhcnQp
OwogCiAgICAgLy8gQ29tcHV0ZSBzb3VyY2UgZGF0YSBwb2ludGVyCiAgICAgY29uc3QgdWludDhf
dCAqc291cmNlRGF0YSA9IG51bGxwdHI7CkBAIC00NjQsMjMgKzQ4MCwyNSBAQCBnbDo6RXJyb3Ig
VmVydGV4RGF0YU1hbmFnZXI6OnN0b3JlRHluYW1pY0F0dHJpYihUcmFuc2xhdGVkQXR0cmlidXRl
ICp0cmFuc2xhdGVkLAogICAgIGlmIChidWZmZXIpCiAgICAgewogICAgICAgICBBTkdMRV9UUlko
c3RvcmFnZS0+Z2V0RGF0YSgmc291cmNlRGF0YSkpOwotICAgICAgICBzb3VyY2VEYXRhICs9IHN0
YXRpY19jYXN0PGludD4oYXR0cmliLm9mZnNldCk7CisgICAgICAgIHNvdXJjZURhdGEgKz0gc3Rh
dGljX2Nhc3Q8aW50PihDb21wdXRlVmVydGV4QXR0cmlidXRlT2Zmc2V0KGF0dHJpYiwgYmluZGlu
ZykpOwogICAgIH0KICAgICBlbHNlCiAgICAgeworICAgICAgICAvLyBBdHRyaWJ1dGVzIHVzaW5n
IGNsaWVudCBtZW1vcnkgaWdub3JlIHRoZSBWRVJURVhfQVRUUklCX0JJTkRJTkcgc3RhdGUuCisg
ICAgICAgIC8vIGh0dHBzOi8vd3d3Lm9wZW5nbC5vcmcvcmVnaXN0cnkvc3BlY3MvQVJCL3ZlcnRl
eF9hdHRyaWJfYmluZGluZy50eHQKICAgICAgICAgc291cmNlRGF0YSA9IHN0YXRpY19jYXN0PGNv
bnN0IHVpbnQ4X3QqPihhdHRyaWIucG9pbnRlcik7CiAgICAgfQogCiAgICAgdW5zaWduZWQgaW50
IHN0cmVhbU9mZnNldCA9IDA7CiAKICAgICB0cmFuc2xhdGVkLT5zdG9yYWdlID0gbnVsbHB0cjsK
LSAgICBBTkdMRV9UUllfUkVTVUxUKG1GYWN0b3J5LT5nZXRWZXJ0ZXhTcGFjZVJlcXVpcmVkKGF0
dHJpYiwgMSwgMCksIHRyYW5zbGF0ZWQtPnN0cmlkZSk7CisgICAgQU5HTEVfVFJZX1JFU1VMVCht
RmFjdG9yeS0+Z2V0VmVydGV4U3BhY2VSZXF1aXJlZChhdHRyaWIsIGJpbmRpbmcsIDEsIDApLCB0
cmFuc2xhdGVkLT5zdHJpZGUpOwogCi0gICAgc2l6ZV90IHRvdGFsQ291bnQgPSBDb21wdXRlVmVy
dGV4QXR0cmlidXRlRWxlbWVudENvdW50KGF0dHJpYiwgY291bnQsIGluc3RhbmNlcyk7CisgICAg
c2l6ZV90IHRvdGFsQ291bnQgPSBDb21wdXRlVmVydGV4QmluZGluZ0VsZW1lbnRDb3VudChiaW5k
aW5nLCBjb3VudCwgaW5zdGFuY2VzKTsKIAogICAgIEFOR0xFX1RSWShtU3RyZWFtaW5nQnVmZmVy
LT5zdG9yZUR5bmFtaWNBdHRyaWJ1dGUoCi0gICAgICAgIGF0dHJpYiwgdHJhbnNsYXRlZC0+Y3Vy
cmVudFZhbHVlVHlwZSwgZmlyc3RWZXJ0ZXhJbmRleCwgc3RhdGljX2Nhc3Q8R0xzaXplaT4odG90
YWxDb3VudCksCi0gICAgICAgIGluc3RhbmNlcywgJnN0cmVhbU9mZnNldCwgc291cmNlRGF0YSkp
OworICAgICAgICBhdHRyaWIsIGJpbmRpbmcsIHRyYW5zbGF0ZWQtPmN1cnJlbnRWYWx1ZVR5cGUs
IGZpcnN0VmVydGV4SW5kZXgsCisgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHRvdGFsQ291
bnQpLCBpbnN0YW5jZXMsICZzdHJlYW1PZmZzZXQsIHNvdXJjZURhdGEpKTsKIAogICAgIFZlcnRl
eEJ1ZmZlciAqdmVydGV4QnVmZmVyID0gbVN0cmVhbWluZ0J1ZmZlci0+Z2V0VmVydGV4QnVmZmVy
KCk7CiAKQEAgLTUwNiwxNCArNTI0LDE1IEBAIGdsOjpFcnJvciBWZXJ0ZXhEYXRhTWFuYWdlcjo6
c3RvcmVDdXJyZW50VmFsdWUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYkN1cnJlbnRWYWx1CiAKICAg
ICBpZiAoY2FjaGVkU3RhdGUtPmRhdGEgIT0gY3VycmVudFZhbHVlKQogICAgIHsKLSAgICAgICAg
Y29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0gKnRyYW5zbGF0ZWQtPmF0dHJpYnV0
ZTsKKyAgICAgICAgY29uc3QgYXV0byAmYXR0cmliICA9ICp0cmFuc2xhdGVkLT5hdHRyaWJ1dGU7
CisgICAgICAgIGNvbnN0IGF1dG8gJmJpbmRpbmcgPSAqdHJhbnNsYXRlZC0+YmluZGluZzsKIAot
ICAgICAgICBBTkdMRV9UUlkoYnVmZmVyLT5yZXNlcnZlVmVydGV4U3BhY2UoYXR0cmliLCAxLCAw
KSk7CisgICAgICAgIEFOR0xFX1RSWShidWZmZXItPnJlc2VydmVWZXJ0ZXhTcGFjZShhdHRyaWIs
IGJpbmRpbmcsIDEsIDApKTsKIAogICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2VEYXRhID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oY3VycmVudFZhbHVlLkZsb2F0VmFsdWVz
KTsKICAgICAgICAgdW5zaWduZWQgaW50IHN0cmVhbU9mZnNldDsKLSAgICAgICAgQU5HTEVfVFJZ
KGJ1ZmZlci0+c3RvcmVEeW5hbWljQXR0cmlidXRlKGF0dHJpYiwgY3VycmVudFZhbHVlLlR5cGUs
IDAsIDEsIDAsICZzdHJlYW1PZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzb3VyY2VEYXRhKSk7CisgICAgICAgIEFOR0xFX1RSWShidWZmZXIt
PnN0b3JlRHluYW1pY0F0dHJpYnV0ZShhdHRyaWIsIGJpbmRpbmcsIGN1cnJlbnRWYWx1ZS5UeXBl
LCAwLCAxLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJnN0cmVhbU9mZnNldCwgc291cmNlRGF0YSkpOwogCiAgICAgICAgIGJ1ZmZlci0+Z2V0VmVy
dGV4QnVmZmVyKCktPmhpbnRVbm1hcFJlc291cmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0YU1hbmFn
ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
VmVydGV4RGF0YU1hbmFnZXIuaAppbmRleCBkYTQ2YzdhODc3OTEzYjI3OTBlMGYwMDg3YmQ0ODYw
YTdlODcwNjgwLi5jOWNiNWRmYjQ0OTU1MzdjMzRiMWMwMzhiMzFmZjM3MzdmZTc4NWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L1ZlcnRleERhdGFNYW5hZ2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhEYXRhTWFuYWdlci5oCkBAIC0xOSw2ICsxOSw3IEBA
IG5hbWVzcGFjZSBnbAogewogY2xhc3MgU3RhdGU7CiBzdHJ1Y3QgVmVydGV4QXR0cmlidXRlOwor
c3RydWN0IFZlcnRleEJpbmRpbmc7CiBzdHJ1Y3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0
YTsKIH0KIApAQCAtNTUsNiArNTYsNyBAQCBzdHJ1Y3QgVHJhbnNsYXRlZEF0dHJpYnV0ZQogICAg
IGJvb2wgYWN0aXZlOwogCiAgICAgY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAqYXR0cmlidXRl
OworICAgIGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5nICpiaW5kaW5nOwogICAgIEdMZW51bSBjdXJy
ZW50VmFsdWVUeXBlOwogICAgIHVuc2lnbmVkIGludCBiYXNlT2Zmc2V0OwogICAgIGJvb2wgdXNl
c0ZpcnN0VmVydGV4T2Zmc2V0OwpAQCAtNzYsNyArNzgsOCBAQCBlbnVtIGNsYXNzIFZlcnRleFN0
b3JhZ2VUeXBlCiB9OwogCiAvLyBHaXZlbiBhIHZlcnRleCBhdHRyaWJ1dGUsIHJldHVybiB0aGUg
dHlwZSBvZiBzdG9yYWdlIGl0IHdpbGwgdXNlLgotVmVydGV4U3RvcmFnZVR5cGUgQ2xhc3NpZnlB
dHRyaWJ1dGVTdG9yYWdlKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYik7CitWZXJ0
ZXhTdG9yYWdlVHlwZSBDbGFzc2lmeUF0dHJpYnV0ZVN0b3JhZ2UoY29uc3QgZ2w6OlZlcnRleEF0
dHJpYnV0ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nKTsKIAogY2xhc3MgVmVydGV4RGF0
YU1hbmFnZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKQEAgLTkyLDkgKzk1LDcgQEAgY2xhc3Mg
VmVydGV4RGF0YU1hbmFnZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUKIAogICAgIHN0YXRpYyB2b2lk
IFN0b3JlRGlyZWN0QXR0cmliKFRyYW5zbGF0ZWRBdHRyaWJ1dGUgKmRpcmVjdEF0dHJpYik7CiAK
LSAgICBzdGF0aWMgZ2w6OkVycm9yIFN0b3JlU3RhdGljQXR0cmliKFRyYW5zbGF0ZWRBdHRyaWJ1
dGUgKnRyYW5zbGF0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBpbnN0YW5jZXMpOworICAgIHN0YXRpYyBnbDo6RXJyb3IgU3RvcmVTdGF0aWNBdHRyaWIo
VHJhbnNsYXRlZEF0dHJpYnV0ZSAqdHJhbnNsYXRlZCk7CiAKICAgICBnbDo6RXJyb3Igc3RvcmVE
eW5hbWljQXR0cmlicyhzdGQ6OnZlY3RvcjxUcmFuc2xhdGVkQXR0cmlidXRlPiAqdHJhbnNsYXRl
ZEF0dHJpYnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkF0
dHJpYnV0ZXNNYXNrICZkeW5hbWljQXR0cmlic01hc2ssCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1dvcmthcm91bmRzRDNELmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1dvcmth
cm91bmRzRDNELmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkY2NmZjMwNDNjZmMx
YjY3NjhiYzQ2NzZhZjQ1OTMwM2ViM2Y0ZWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9Xb3JrYXJvdW5kc0QzRC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAg
QEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCi0vLwotCi0vLyBXb3JrYXJvdW5kc0QzRC5oOiBXb3JrYXJvdW5kcyBmb3Ig
RDNEIGRyaXZlciBidWdzIGFuZCBvdGhlciBpc3N1ZXMuCi0KLSNpZm5kZWYgTElCQU5HTEVfUkVO
REVSRVJfRDNEX1dPUktBUk9VTkRTRDNEX0hfCi0jZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0Qz
RF9XT1JLQVJPVU5EU0QzRF9IXwotCi0vLyBUT0RPKGptYWRpbGwsem1vLGdlb2ZmbGFuZyk6IG1h
a2UgYSB3b3JrYXJvdW5kcyBsaWJyYXJ5IHRoYXQgY2FuIG9wZXJhdGUKLS8vIGluZGVwZW5kZW50
IG9mIEFOR0xFJ3MgcmVuZGVyZXIuIFdvcmthcm91bmRzIHNob3VsZCBhbHNvIGJlIGFjY2Vzc2li
bGUKLS8vIG91dHNpZGUgb2YgdGhlIFJlbmRlcmVyLgotCi1uYW1lc3BhY2UgcngKLXsKLXN0cnVj
dCBEM0RDb21waWxlcldvcmthcm91bmRzCi17Ci0gICAgYm9vbCBza2lwT3B0aW1pemF0aW9uICAg
PSBmYWxzZTsKLSAgICBib29sIHVzZU1heE9wdGltaXphdGlvbiA9IGZhbHNlOwotCi0gICAgLy8g
SUVFRSBzdHJpY3RuZXNzIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIE5BTnMgdG8gd29yay4KLSAg
ICBib29sIGVuYWJsZUlFRUVTdHJpY3RuZXNzID0gZmFsc2U7Ci19OwotCi1zdHJ1Y3QgV29ya2Fy
b3VuZHNEM0QKLXsKLSAgICAvLyBPbiBzb21lIHN5c3RlbXMsIGhhdmluZyBleHRyYSByZW5kZXJ0
YXJnZXRzIHRoYW4gbmVjZXNzYXJ5IHNsb3dzIGRvd24gdGhlIHNoYWRlci4KLSAgICAvLyBXZSBj
YW4gZml4IHRoaXMgYnkgb3B0aW1pemluZyB0aG9zZSBvdXQgb2YgdGhlIHNoYWRlci4gQXQgdGhl
IHNhbWUgdGltZSwgd2UgY2FuCi0gICAgLy8gd29yayBhcm91bmQgYSBidWcgb24gc29tZSBuVmlk
aWEgZHJpdmVycyB0aGF0IHRoZXkgaWdub3JlICJudWxsIiByZW5kZXIgdGFyZ2V0cwotICAgIC8v
IGluIEQzRDExLCBieSBjb21wYWN0aW5nIHRoZSBhY3RpdmUgY29sb3IgYXR0YWNobWVudHMgbGlz
dCB0byBvbWl0IG51bGwgZW50cmllcy4KLSAgICBib29sIG1ydFBlcmZXb3JrYXJvdW5kID0gZmFs
c2U7Ci0KLSAgICBib29sIHNldERhdGFGYXN0ZXJUaGFuSW1hZ2VVcGxvYWQgPSBmYWxzZTsKLQot
ICAgIC8vIFNvbWUgcmVuZGVyZXJzIGNhbid0IGRpc2FibGUgbWlwbWFwcyBvbiBhIG1pcG1hcHBl
ZCB0ZXh0dXJlIChpLmUuIHNvbGVseSBzYW1wbGUgZnJvbSBsZXZlbAotICAgIC8vIHplcm8sIGFu
ZCBpZ25vcmUgdGhlIG90aGVyIGxldmVscykuIEQzRDExIEZlYXR1cmUgTGV2ZWwgMTArIGRvZXMg
dGhpcyBieSBzZXR0aW5nIE1heExPRCB0bwotICAgIC8vIDAuMGYgaW4gdGhlIFNhbXBsZXIgc3Rh
dGUuIEQzRDkgc2V0cyBEM0RTQU1QX01JUEZJTFRFUiB0byBEM0RURVhGX05PTkUuIFRoZXJlIGlz
IG5vCi0gICAgLy8gZXF1aXZhbGVudCB0byB0aGlzIGluIEQzRDExIEZlYXR1cmUgTGV2ZWwgOV8z
LiBUaGlzIGNhdXNlcyBwcm9ibGVtcyB3aGVuIChmb3IgZXhhbXBsZSkgYW4KLSAgICAvLyBhcHBs
aWNhdGlvbiBjcmVhdGVzIGEgbWlwbWFwcGVkIHRleHR1cmUyRCwgYnV0IHNldHMgR0xfVEVYVFVS
RV9NSU5fRklMVEVSIHRvIEdMX05FQVJFU1QKLSAgICAvLyAoaS5lIGRpc2FibGVzIG1pcG1hcHMp
LiBUbyB3b3JrIGFyb3VuZCB0aGlzLCBEM0QxMSBGTDlfMyBoYXMgdG8gY3JlYXRlIHR3byBjb3Bp
ZXMgb2YgdGhlCi0gICAgLy8gdGV4dHVyZS4gVGhlIHRleHR1cmVzJyBsZXZlbCB6ZXJvcyBhcmUg
aWRlbnRpY2FsLCBidXQgb25seSBvbmUgdGV4dHVyZSBoYXMgbWlwcy4KLSAgICBib29sIHplcm9N
YXhMb2RXb3JrYXJvdW5kID0gZmFsc2U7Ci0KLSAgICAvLyBTb21lIHJlbmRlcmVycyBkbyBub3Qg
c3VwcG9ydCBHZW9tZXRyeSBTaGFkZXJzIHNvIHRoZSBHZW9tZXRyeSBTaGFkZXItYmFzZWQgUG9p
bnRTcHJpdGUKLSAgICAvLyBlbXVsYXRpb24gd2lsbCBub3Qgd29yay4gVG8gd29yayBhcm91bmQg
dGhpcywgRDNEMTEgRkw5XzMgaGFzIHRvIHVzZSBhIGRpZmZlcmVudCBwb2ludHNwcml0ZQotICAg
IC8vIGVtdWxhdGlvbiB0aGF0IGlzIGltcGxlbWVudGVkIHVzaW5nIGluc3RhbmNlZCBxdWFkcy4K
LSAgICBib29sIHVzZUluc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0aW9uID0gZmFsc2U7Ci0KLSAg
ICAvLyBBIGJ1ZyBmaXhlZCBpbiBOVklESUEgZHJpdmVyIHZlcnNpb24gMzQ3Ljg4IDwgeCA8PSAz
NjguODEgdHJpZ2dlcnMgYSBURFIgd2hlbiB1c2luZwotICAgIC8vIENvcHlTdWJyZXNvdXJjZVJl
Z2lvbiBmcm9tIGEgc3RhZ2luZyB0ZXh0dXJlIHRvIGEgZGVwdGgvc3RlbmNpbCBpbiBEM0QxMS4g
VGhlIHdvcmthcm91bmQKLSAgICAvLyBpcyB0byB1c2UgVXBkYXRlU3VicmVzb3VyY2UgdG8gdHJp
Z2dlciBhbiBleHRyYSBjb3B5LiBXZSBkaXNhYmxlIHRoaXMgd29ya2Fyb3VuZCBvbiBuZXdlcgot
ICAgIC8vIE5WSURJQSBkcml2ZXIgdmVyc2lvbnMgYmVjYXVzZSBvZiBhIHNlY29uZCBkcml2ZXIg
YnVnIHByZXNlbnQgd2l0aCB0aGUgd29ya2Fyb3VuZCBlbmFibGVkLgotICAgIC8vIChTZWU6IGh0
dHA6Ly9hbmdsZWJ1Zy5jb20vMTQ1MikKLSAgICBib29sIGRlcHRoU3RlbmNpbEJsaXRFeHRyYUNv
cHkgPSBmYWxzZTsKLQotICAgIC8vIFRoZSBITFNMIG9wdGltaXplciBoYXMgYSBidWcgd2l0aCBv
cHRpbWl6aW5nICJwb3ciIGluIGNlcnRhaW4gaW50ZWdlci12YWx1ZWQgZXhwcmVzc2lvbnMuCi0g
ICAgLy8gV2UgY2FuIHdvcmsgYXJvdW5kIHRoaXMgYnkgZXhwYW5kaW5nIHRoZSBwb3cgaW50byBh
IHNlcmllcyBvZiBtdWx0aXBsaWVzIGlmIHdlJ3JlIHJ1bm5pbmcKLSAgICAvLyB1bmRlciB0aGUg
YWZmZWN0ZWQgY29tcGlsZXIuCi0gICAgYm9vbCBleHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMg
PSBmYWxzZTsKLQotICAgIC8vIE5WSURJQSBkcml2ZXJzIHNvbWV0aW1lcyB3cml0ZSBvdXQtb2Yt
b3JkZXIgcmVzdWx0cyB0byBTdHJlYW1PdXQgYnVmZmVycyB3aGVuIHRyYW5zZm9ybQotICAgIC8v
IGZlZWRiYWNrIGlzIHVzZWQgdG8gcmVwZWF0ZWRseSB3cml0ZSB0byB0aGUgc2FtZSBidWZmZXIg
cG9zaXRpb25zLgotICAgIGJvb2wgZmx1c2hBZnRlckVuZGluZ1RyYW5zZm9ybUZlZWRiYWNrID0g
ZmFsc2U7Ci0KLSAgICAvLyBTb21lIGRyaXZlcnMgKE5WSURJQSkgZG8gbm90IHRha2UgaW50byBh
Y2NvdW50IHRoZSBiYXNlIGxldmVsIG9mIHRoZSB0ZXh0dXJlIGluIHRoZSByZXN1bHRzCi0gICAg
Ly8gb2YgdGhlIEhMU0wgR2V0RGltZW5zaW9ucyBidWlsdGluLgotICAgIGJvb2wgZ2V0RGltZW5z
aW9uc0lnbm9yZXNCYXNlTGV2ZWwgPSBmYWxzZTsKLQotICAgIC8vIE9uIHNvbWUgSW50ZWwgZHJp
dmVycywgSExTTCdzIGZ1bmN0aW9uIHRleHR1cmUuTG9hZCByZXR1cm5zIDAgd2hlbiB0aGUgcGFy
YW1ldGVyIExvY2F0aW9uCi0gICAgLy8gaXMgbmVnYXRpdmUsIGV2ZW4gaWYgdGhlIHN1bSBvZiBP
ZmZzZXQgYW5kIExvY2F0aW9uIGlzIGluIHJhbmdlLiBUaGlzIG1heSBjYXVzZSBlcnJvcnMgd2hl
bgotICAgIC8vIHRyYW5zbGF0aW5nIEdMU0wncyBmdW5jdGlvbiB0ZXhlbEZldGNoT2Zmc2V0IGlu
dG8gdGV4dHVyZS5Mb2FkLCBhcyBpdCBpcyB2YWxpZCBmb3IKLSAgICAvLyB0ZXhlbEZldGNoT2Zm
c2V0IHRvIHVzZSBuZWdhdGl2ZSB0ZXh0dXJlIGNvb3JkaW5hdGVzIGFzIGl0cyBwYXJhbWV0ZXIg
UCB3aGVuIHRoZSBzdW0gb2YgUAotICAgIC8vIGFuZCBPZmZzZXQgaXMgaW4gcmFuZ2UuIFRvIHdv
cmsgYXJvdW5kIHRoaXMsIHdlIHRyYW5zbGF0ZSB0ZXhlbEZldGNoT2Zmc2V0IGludG8gdGV4ZWxG
ZXRjaAotICAgIC8vIGJ5IGFkZGluZyBPZmZzZXQgZGlyZWN0bHkgdG8gTG9jYXRpb24gYmVmb3Jl
IHJlYWRpbmcgdGhlIHRleHR1cmUuCi0gICAgYm9vbCBwcmVBZGRUZXhlbEZldGNoT2Zmc2V0cyA9
IGZhbHNlOwotCi0gICAgLy8gT24gc29tZSBBTUQgZHJpdmVycywgMXgxIGFuZCAyeDIgbWlwcyBv
ZiBkZXB0aC9zdGVuY2lsIHRleHR1cmVzIGFyZW4ndCBzYW1wbGVkIGNvcnJlY3RseS4KLSAgICAv
LyBXZSBjYW4gd29yayBhcm91bmQgdGhpcyBidWcgYnkgZG9pbmcgYW4gaW50ZXJuYWwgYmxpdCB0
byBhIHRlbXBvcmFyeSBzaW5nbGUtY2hhbm5lbCB0ZXh0dXJlCi0gICAgLy8gYmVmb3JlIHdlIHNh
bXBsZS4KLSAgICBib29sIGVtdWxhdGVUaW55U3RlbmNpbFRleHR1cmVzID0gZmFsc2U7Ci0KLSAg
ICAvLyBJbiBJbnRlbCBkcml2ZXIsIHRoZSBkYXRhIHdpdGggZm9ybWF0IERYR0lfRk9STUFUX0I1
RzZSNV9VTk9STSB3aWxsIGJlIHBhcnNlZCBpbmNvcnJlY3RseS4KLSAgICAvLyBUaGlzIHdvcmth
cm91ZCB3aWxsIGRpc2FibGUgQjVHNlI1IHN1cHBvcnQgd2hlbiBpdCdzIEludGVsIGRyaXZlci4g
QnkgZGVmYXVsdCwgaXQgd2lsbCB1c2UKLSAgICAvLyBSOEc4QjhBOCBmb3JtYXQuCi0gICAgYm9v
bCBkaXNhYmxlQjVHNlI1U3VwcG9ydCA9IGZhbHNlOwotCi0gICAgLy8gT24gc29tZSBJbnRlbCBk
cml2ZXJzLCBldmFsdWF0aW5nIHVuYXJ5IG1pbnVzIG9wZXJhdG9yIG9uIGludGVnZXIgbWF5IGdl
dCB3cm9uZyBhbnN3ZXIgaW4KLSAgICAvLyB2ZXJ0ZXggc2hhZGVycy4gVG8gd29yayBhcm91bmQg
dGhpcyBidWcsIHdlIHRyYW5zbGF0ZSAtKGludCkgaW50byB+KGludCkrMS4KLSAgICBib29sIHJl
d3JpdGVVbmFyeU1pbnVzT3BlcmF0b3IgPSBmYWxzZTsKLQotICAgIC8vIE9uIHNvbWUgSW50ZWwg
ZHJpdmVycywgdXNpbmcgaXNuYW4oKSBvbiBoaWdocCBmbG9hdCB3aWxsIGdldCB3cm9uZyBhbnN3
ZXIuIFRvIHdvcmsgYXJvdW5kCi0gICAgLy8gdGhpcyBidWcsIHdlIHVzZSBhbiBleHByZXNzaW9u
IHRvIGVtdWxhdGUgZnVuY3Rpb24gaXNuYW4oKS4gVHJhY2tpbmcgYnVnOgotICAgIC8vIGh0dHBz
Oi8vY3JidWcuY29tLzY1MDU0NwotICAgIGJvb2wgZW11bGF0ZUlzbmFuRmxvYXQgPSBmYWxzZTsK
LX07Ci0KLX0gIC8vIG5hbWVzcGFjZSByeAotCi0jZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVS
X0QzRF9XT1JLQVJPVU5EU0QzRF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CbGl0MTEuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CbGl0MTEuY3Bw
CmluZGV4IGEzNDM5MGRjNzZmYzY2ODBmZGJiZjdmNzNmNTZhNjQzMjcxYzgyMDIuLmNjNGY2Y2Uw
N2YzZGQwOTUzNmQwYjYyYjY5OTljZjE0YTM3OGFiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQmxpdDExLmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL0JsaXQxMS5jcHAKQEAgLTU4OSw4ICs1ODksNiBAQCBCbGl0MTE6OkJsaXQxMShSZW5kZXJl
cjExICpyZW5kZXJlcikKIAogQmxpdDExOjp+QmxpdDExKCkKIHsKLSAgICBmcmVlUmVzb3VyY2Vz
KCk7Ci0KICAgICBtUXVhZDJESUwucmVsZWFzZSgpOwogICAgIG1RdWFkMkRWUy5yZWxlYXNlKCk7
CiAgICAgbURlcHRoUFMucmVsZWFzZSgpOwpAQCAtNjA3LDcgKzYwNSw3IEBAIGdsOjpFcnJvciBC
bGl0MTE6OmluaXRSZXNvdXJjZXMoKQogewogICAgIGlmIChtUmVzb3VyY2VzSW5pdGlhbGl6ZWQp
CiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAgVFJBQ0VfRVZFTlQwKCJncHUuYW5n
bGUiLCAiQmxpdDExOjppbml0UmVzb3VyY2VzIik7CkBAIC02MjYsMTMgKzYyNCwxMSBAQCBnbDo6
RXJyb3IgQmxpdDExOjppbml0UmVzb3VyY2VzKCkKICAgICB2YkRlc2MuTWlzY0ZsYWdzICAgICAg
ICAgICA9IDA7CiAgICAgdmJEZXNjLlN0cnVjdHVyZUJ5dGVTdHJpZGUgPSAwOwogCi0gICAgcmVz
dWx0ID0gZGV2aWNlLT5DcmVhdGVCdWZmZXIoJnZiRGVzYywgbnVsbHB0ciwgJm1WZXJ0ZXhCdWZm
ZXIpOworICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQnVmZmVyKCZ2YkRlc2MsIG51bGxwdHIs
IG1WZXJ0ZXhCdWZmZXIuR2V0QWRkcmVzc09mKCkpOwogICAgIEFTU0VSVChTVUNDRUVERUQocmVz
dWx0KSk7CiAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKLSAgICAgICAgZnJlZVJlc291
cmNlcygpOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWls
ZWQgdG8gY3JlYXRlIGJsaXQgdmVydGV4IGJ1ZmZlciwgSFJFU1VMVDogMHglWCIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGdsOjpPdXRPZk1lbW9y
eSgpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIGJsaXQgdmVydGV4IGJ1ZmZlciwgIiA8PCByZXN1bHQ7
CiAgICAgfQogICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobVZlcnRleEJ1ZmZlciwgIkJsaXQxMSB2
ZXJ0ZXggYnVmZmVyIik7CiAKQEAgLTY1MSwxMyArNjQ3LDExIEBAIGdsOjpFcnJvciBCbGl0MTE6
OmluaXRSZXNvdXJjZXMoKQogICAgIHBvaW50U2FtcGxlckRlc2MuTWluTE9EICAgICAgICAgPSAw
LjBmOwogICAgIHBvaW50U2FtcGxlckRlc2MuTWF4TE9EICAgICAgICAgPSBGTFRfTUFYOwogCi0g
ICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVTYW1wbGVyU3RhdGUoJnBvaW50U2FtcGxlckRlc2Ms
ICZtUG9pbnRTYW1wbGVyKTsKKyAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVNhbXBsZXJTdGF0
ZSgmcG9pbnRTYW1wbGVyRGVzYywgbVBvaW50U2FtcGxlci5HZXRBZGRyZXNzT2YoKSk7CiAgICAg
QVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAg
ewotICAgICAgICBmcmVlUmVzb3VyY2VzKCk7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
T1VUX09GX01FTU9SWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0
ZSBibGl0IHBvaW50IHNhbXBsZXIgc3RhdGUsIEhSRVNVTFQ6IDB4JVgiLCByZXN1bHQpOworICAg
ICAgICByZXR1cm4gZ2w6Ok91dE9mTWVtb3J5KCkgPDwgIkZhaWxlZCB0byBjcmVhdGUgYmxpdCBw
b2ludCBzYW1wbGVyIHN0YXRlLCAiIDw8IHJlc3VsdDsKICAgICB9CiAgICAgZDNkMTE6OlNldERl
YnVnTmFtZShtUG9pbnRTYW1wbGVyLCAiQmxpdDExIHBvaW50IHNhbXBsZXIiKTsKIApAQCAtNjc2
LDEzICs2NzAsMTEgQEAgZ2w6OkVycm9yIEJsaXQxMTo6aW5pdFJlc291cmNlcygpCiAgICAgbGlu
ZWFyU2FtcGxlckRlc2MuTWluTE9EICAgICAgICAgPSAwLjBmOwogICAgIGxpbmVhclNhbXBsZXJE
ZXNjLk1heExPRCAgICAgICAgID0gRkxUX01BWDsKIAotICAgIHJlc3VsdCA9IGRldmljZS0+Q3Jl
YXRlU2FtcGxlclN0YXRlKCZsaW5lYXJTYW1wbGVyRGVzYywgJm1MaW5lYXJTYW1wbGVyKTsKKyAg
ICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVNhbXBsZXJTdGF0ZSgmbGluZWFyU2FtcGxlckRlc2Ms
IG1MaW5lYXJTYW1wbGVyLkdldEFkZHJlc3NPZigpKTsKICAgICBBU1NFUlQoU1VDQ0VFREVEKHJl
c3VsdCkpOwogICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICB7Ci0gICAgICAgIGZyZWVSZXNv
dXJjZXMoKTsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIGJsaXQgbGluZWFyIHNhbXBs
ZXIgc3RhdGUsIEhSRVNVTFQ6IDB4JVgiLCByZXN1bHQpOworICAgICAgICByZXR1cm4gZ2w6Ok91
dE9mTWVtb3J5KCkgPDwgIkZhaWxlZCB0byBjcmVhdGUgYmxpdCBsaW5lYXIgc2FtcGxlciBzdGF0
ZSwgIiA8PCByZXN1bHQ7CiAgICAgfQogICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobUxpbmVhclNh
bXBsZXIsICJCbGl0MTEgbGluZWFyIHNhbXBsZXIiKTsKIApAQCAtNjk5LDMxICs2OTEsMjggQEAg
Z2w6OkVycm9yIEJsaXQxMTo6aW5pdFJlc291cmNlcygpCiAgICAgcmFzdGVyRGVzYy5BbnRpYWxp
YXNlZExpbmVFbmFibGUgPSBGQUxTRTsKIAogICAgIHJhc3RlckRlc2MuU2Npc3NvckVuYWJsZSA9
IFRSVUU7Ci0gICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVSYXN0ZXJpemVyU3RhdGUoJnJhc3Rl
ckRlc2MsICZtU2Npc3NvckVuYWJsZWRSYXN0ZXJpemVyU3RhdGUpOworICAgIHJlc3VsdCA9Cisg
ICAgICAgIGRldmljZS0+Q3JlYXRlUmFzdGVyaXplclN0YXRlKCZyYXN0ZXJEZXNjLCBtU2Npc3Nv
ckVuYWJsZWRSYXN0ZXJpemVyU3RhdGUuR2V0QWRkcmVzc09mKCkpOwogICAgIEFTU0VSVChTVUND
RUVERUQocmVzdWx0KSk7CiAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKLSAgICAgICAg
ZnJlZVJlc291cmNlcygpOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1P
UlksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgYmxpdCBzY2lz
c29yaW5nIHJhc3Rlcml6ZXIgc3RhdGUsIEhSRVNVTFQ6IDB4JVgiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBnbDo6T3V0T2ZNZW1vcnkoKSA8PCAi
RmFpbGVkIHRvIGNyZWF0ZSBibGl0IHNjaXNzb3JpbmcgcmFzdGVyaXplciBzdGF0ZSwgIiA8PCBy
ZXN1bHQ7CiAgICAgfQogICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobVNjaXNzb3JFbmFibGVkUmFz
dGVyaXplclN0YXRlLCAiQmxpdDExIHNjaXNzb3JpbmcgcmFzdGVyaXplciBzdGF0ZSIpOwogCiAg
ICAgcmFzdGVyRGVzYy5TY2lzc29yRW5hYmxlID0gRkFMU0U7Ci0gICAgcmVzdWx0ID0gZGV2aWNl
LT5DcmVhdGVSYXN0ZXJpemVyU3RhdGUoJnJhc3RlckRlc2MsICZtU2Npc3NvckRpc2FibGVkUmFz
dGVyaXplclN0YXRlKTsKKyAgICByZXN1bHQgPQorICAgICAgICBkZXZpY2UtPkNyZWF0ZVJhc3Rl
cml6ZXJTdGF0ZSgmcmFzdGVyRGVzYywgbVNjaXNzb3JEaXNhYmxlZFJhc3Rlcml6ZXJTdGF0ZS5H
ZXRBZGRyZXNzT2YoKSk7CiAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKICAgICBpZiAo
RkFJTEVEKHJlc3VsdCkpCiAgICAgewotICAgICAgICBmcmVlUmVzb3VyY2VzKCk7Ci0gICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBibGl0IG5vIHNjaXNzb3JpbmcgcmFzdGVyaXplciBzdGF0
ZSwgSFJFU1VMVDogMHglWCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIGdsOjpPdXRPZk1lbW9yeSgpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIGJsaXQg
bm8gc2Npc3NvcmluZyByYXN0ZXJpemVyIHN0YXRlLCAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCByZXN1bHQ7CiAgICAgfQogICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobVNj
aXNzb3JEaXNhYmxlZFJhc3Rlcml6ZXJTdGF0ZSwgIkJsaXQxMSBubyBzY2lzc29yaW5nIHJhc3Rl
cml6ZXIgc3RhdGUiKTsKIAogICAgIEQzRDExX0RFUFRIX1NURU5DSUxfREVTQyBkZXB0aFN0ZW5j
aWxEZXNjOwotICAgIGRlcHRoU3RlbmNpbERlc2MuRGVwdGhFbmFibGUgICAgICAgICAgICAgICAg
ICA9IHRydWU7CisgICAgZGVwdGhTdGVuY2lsRGVzYy5EZXB0aEVuYWJsZSAgICAgICAgICAgICAg
ICAgID0gVFJVRTsKICAgICBkZXB0aFN0ZW5jaWxEZXNjLkRlcHRoV3JpdGVNYXNrICAgICAgICAg
ICAgICAgPSBEM0QxMV9ERVBUSF9XUklURV9NQVNLX0FMTDsKICAgICBkZXB0aFN0ZW5jaWxEZXNj
LkRlcHRoRnVuYyAgICAgICAgICAgICAgICAgICAgPSBEM0QxMV9DT01QQVJJU09OX0FMV0FZUzsK
ICAgICBkZXB0aFN0ZW5jaWxEZXNjLlN0ZW5jaWxFbmFibGUgICAgICAgICAgICAgICAgPSBGQUxT
RTsKQEAgLTczOCwxMyArNzI3LDExIEBAIGdsOjpFcnJvciBCbGl0MTE6OmluaXRSZXNvdXJjZXMo
KQogICAgIGRlcHRoU3RlbmNpbERlc2MuQmFja0ZhY2UuU3RlbmNpbFBhc3NPcCAgICAgICA9IEQz
RDExX1NURU5DSUxfT1BfS0VFUDsKICAgICBkZXB0aFN0ZW5jaWxEZXNjLkJhY2tGYWNlLlN0ZW5j
aWxGdW5jICAgICAgICAgPSBEM0QxMV9DT01QQVJJU09OX0FMV0FZUzsKIAotICAgIHJlc3VsdCA9
IGRldmljZS0+Q3JlYXRlRGVwdGhTdGVuY2lsU3RhdGUoJmRlcHRoU3RlbmNpbERlc2MsICZtRGVw
dGhTdGVuY2lsU3RhdGUpOworICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlRGVwdGhTdGVuY2ls
U3RhdGUoJmRlcHRoU3RlbmNpbERlc2MsIG1EZXB0aFN0ZW5jaWxTdGF0ZS5HZXRBZGRyZXNzT2Yo
KSk7CiAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKICAgICBpZiAoRkFJTEVEKHJlc3Vs
dCkpCiAgICAgewotICAgICAgICBmcmVlUmVzb3VyY2VzKCk7Ci0gICAgICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVk
IHRvIGNyZWF0ZSBibGl0IGRlcHRoIHN0ZW5jaWwgc3RhdGUsIEhSRVNVTFQ6IDB4JVgiLCByZXN1
bHQpOworICAgICAgICByZXR1cm4gZ2w6Ok91dE9mTWVtb3J5KCkgPDwgIkZhaWxlZCB0byBjcmVh
dGUgYmxpdCBkZXB0aCBzdGVuY2lsIHN0YXRlLCAiIDw8IHJlc3VsdDsKICAgICB9CiAgICAgZDNk
MTE6OlNldERlYnVnTmFtZShtRGVwdGhTdGVuY2lsU3RhdGUsICJCbGl0MTEgZGVwdGggc3RlbmNp
bCBzdGF0ZSIpOwogCkBAIC03NTYsMzIgKzc0MywxNyBAQCBnbDo6RXJyb3IgQmxpdDExOjppbml0
UmVzb3VyY2VzKCkKICAgICBzd2l6emxlQnVmZmVyRGVzYy5NaXNjRmxhZ3MgICAgICAgICAgID0g
MDsKICAgICBzd2l6emxlQnVmZmVyRGVzYy5TdHJ1Y3R1cmVCeXRlU3RyaWRlID0gMDsKIAotICAg
IHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQnVmZmVyKCZzd2l6emxlQnVmZmVyRGVzYywgbnVsbHB0
ciwgJm1Td2l6emxlQ0IpOworICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQnVmZmVyKCZzd2l6
emxlQnVmZmVyRGVzYywgbnVsbHB0ciwgbVN3aXp6bGVDQi5HZXRBZGRyZXNzT2YoKSk7CiAgICAg
QVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAg
ewotICAgICAgICBmcmVlUmVzb3VyY2VzKCk7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
T1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgYmxpdCBzd2l6emxlIGJ1ZmZlciwgSFJF
U1VMVDogMHglWCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuIGdsOjpPdXRPZk1lbW9yeSgpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIGJsaXQgc3dpenps
ZSBidWZmZXIsICIgPDwgcmVzdWx0OwogICAgIH0KICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1T
d2l6emxlQ0IsICJCbGl0MTEgc3dpenpsZSBjb25zdGFudCBidWZmZXIiKTsKIAogICAgIG1SZXNv
dXJjZXNJbml0aWFsaXplZCA9IHRydWU7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKLX0KLQotdm9pZCBCbGl0MTE6OmZyZWVSZXNvdXJjZXMoKQotewotICAgIFNhZmVSZWxl
YXNlKG1WZXJ0ZXhCdWZmZXIpOwotICAgIFNhZmVSZWxlYXNlKG1Qb2ludFNhbXBsZXIpOwotICAg
IFNhZmVSZWxlYXNlKG1MaW5lYXJTYW1wbGVyKTsKLSAgICBTYWZlUmVsZWFzZShtU2Npc3NvckVu
YWJsZWRSYXN0ZXJpemVyU3RhdGUpOwotICAgIFNhZmVSZWxlYXNlKG1TY2lzc29yRGlzYWJsZWRS
YXN0ZXJpemVyU3RhdGUpOwotICAgIFNhZmVSZWxlYXNlKG1EZXB0aFN0ZW5jaWxTdGF0ZSk7Ci0g
ICAgU2FmZVJlbGVhc2UobVN3aXp6bGVDQik7Ci0KLSAgICBtUmVzb3VyY2VzSW5pdGlhbGl6ZWQg
PSBmYWxzZTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogLy8gc3RhdGljCkBAIC0x
MDY0LDEyICsxMDM2LDExIEBAIGdsOjpFcnJvciBCbGl0MTE6OnN3aXp6bGVUZXh0dXJlKElEM0Qx
MVNoYWRlclJlc291cmNlVmlldyAqc291cmNlLAogCiAgICAgLy8gU2V0IHZlcnRpY2VzCiAgICAg
RDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZFJlc291cmNlOwotICAgIHJlc3VsdCA9IGRl
dmljZUNvbnRleHQtPk1hcChtVmVydGV4QnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FS
RCwgMCwgJm1hcHBlZFJlc291cmNlKTsKKyAgICByZXN1bHQgPQorICAgICAgICBkZXZpY2VDb250
ZXh0LT5NYXAobVZlcnRleEJ1ZmZlci5HZXQoKSwgMCwgRDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQs
IDAsICZtYXBwZWRSZXNvdXJjZSk7CiAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICJGYWlsZWQgdG8gbWFwIGludGVybmFsIHZlcnRleCBidWZmZXIgZm9yIHN3aXp6
bGUsIEhSRVNVTFQ6IDB4JVguIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOwor
ICAgICAgICByZXR1cm4gZ2w6Ok91dE9mTWVtb3J5KCkgPDwgIkZhaWxlZCB0byBtYXAgaW50ZXJu
YWwgdmVydGV4IGJ1ZmZlciBmb3Igc3dpenpsZSwgIiA8PCByZXN1bHQ7CiAgICAgfQogCiAgICAg
Y29uc3QgU2hhZGVyU3VwcG9ydCAmc3VwcG9ydCA9IGdldFNoYWRlclN1cHBvcnQoKnNoYWRlcik7
CkBAIC0xMDgzLDE1ICsxMDU0LDE0IEBAIGdsOjpFcnJvciBCbGl0MTE6OnN3aXp6bGVUZXh0dXJl
KElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc291cmNlLAogICAgIHN1cHBvcnQudmVydGV4V3Jp
dGVGdW5jdGlvbihhcmVhLCBzaXplLCBhcmVhLCBzaXplLCBtYXBwZWRSZXNvdXJjZS5wRGF0YSwg
JnN0cmlkZSwgJmRyYXdDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRv
cG9sb2d5KTsKIAotICAgIGRldmljZUNvbnRleHQtPlVubWFwKG1WZXJ0ZXhCdWZmZXIsIDApOwor
ICAgIGRldmljZUNvbnRleHQtPlVubWFwKG1WZXJ0ZXhCdWZmZXIuR2V0KCksIDApOwogCiAgICAg
Ly8gU2V0IGNvbnN0YW50IGJ1ZmZlcgotICAgIHJlc3VsdCA9IGRldmljZUNvbnRleHQtPk1hcCht
U3dpenpsZUNCLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FSRCwgMCwgJm1hcHBlZFJlc291cmNl
KTsKKyAgICByZXN1bHQgPSBkZXZpY2VDb250ZXh0LT5NYXAobVN3aXp6bGVDQi5HZXQoKSwgMCwg
RDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQsIDAsICZtYXBwZWRSZXNvdXJjZSk7CiAgICAgaWYgKEZB
SUxFRChyZXN1bHQpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLAotICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gbWFwIGludGVybmFs
IGNvbnN0YW50IGJ1ZmZlciBmb3Igc3dpenpsZSwgSFJFU1VMVDogMHglWC4iLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBnbDo6T3V0T2ZNZW1vcnko
KSA8PCAiRmFpbGVkIHRvIG1hcCBpbnRlcm5hbCBjb25zdGFudCBidWZmZXIgZm9yIHN3aXp6bGUs
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHJlc3VsdDsKICAgICB9CiAK
ICAgICB1bnNpZ25lZCBpbnQgKnN3aXp6bGVJbmRpY2VzID0gcmVpbnRlcnByZXRfY2FzdDx1bnNp
Z25lZCBpbnQgKj4obWFwcGVkUmVzb3VyY2UucERhdGEpOwpAQCAtMTEwMCwxOCArMTA3MCwxOCBA
QCBnbDo6RXJyb3IgQmxpdDExOjpzd2l6emxlVGV4dHVyZShJRDNEMTFTaGFkZXJSZXNvdXJjZVZp
ZXcgKnNvdXJjZSwKICAgICBzd2l6emxlSW5kaWNlc1syXSAgICAgICAgICAgID0gR2V0U3dpenps
ZUluZGV4KHN3aXp6bGVUYXJnZXQuc3dpenpsZUJsdWUpOwogICAgIHN3aXp6bGVJbmRpY2VzWzNd
ICAgICAgICAgICAgPSBHZXRTd2l6emxlSW5kZXgoc3dpenpsZVRhcmdldC5zd2l6emxlQWxwaGEp
OwogCi0gICAgZGV2aWNlQ29udGV4dC0+VW5tYXAobVN3aXp6bGVDQiwgMCk7CisgICAgZGV2aWNl
Q29udGV4dC0+VW5tYXAobVN3aXp6bGVDQi5HZXQoKSwgMCk7CiAKICAgICAvLyBBcHBseSB2ZXJ0
ZXggYnVmZmVyCi0gICAgZGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKDAsIDEsICZt
VmVydGV4QnVmZmVyLCAmc3RyaWRlLCAmc3RhcnRJZHgpOworICAgIGRldmljZUNvbnRleHQtPklB
U2V0VmVydGV4QnVmZmVycygwLCAxLCBtVmVydGV4QnVmZmVyLkdldEFkZHJlc3NPZigpLCAmc3Ry
aWRlLCAmc3RhcnRJZHgpOwogCiAgICAgLy8gQXBwbHkgY29uc3RhbnQgYnVmZmVyCi0gICAgZGV2
aWNlQ29udGV4dC0+UFNTZXRDb25zdGFudEJ1ZmZlcnMoMCwgMSwgJm1Td2l6emxlQ0IpOworICAg
IGRldmljZUNvbnRleHQtPlBTU2V0Q29uc3RhbnRCdWZmZXJzKDAsIDEsIG1Td2l6emxlQ0IuR2V0
QWRkcmVzc09mKCkpOwogCiAgICAgLy8gQXBwbHkgc3RhdGUKICAgICBkZXZpY2VDb250ZXh0LT5P
TVNldEJsZW5kU3RhdGUobnVsbHB0ciwgbnVsbHB0ciwgMHhGRkZGRkZGKTsKICAgICBkZXZpY2VD
b250ZXh0LT5PTVNldERlcHRoU3RlbmNpbFN0YXRlKG51bGxwdHIsIDB4RkZGRkZGRkYpOwotICAg
IGRldmljZUNvbnRleHQtPlJTU2V0U3RhdGUobVNjaXNzb3JEaXNhYmxlZFJhc3Rlcml6ZXJTdGF0
ZSk7CisgICAgZGV2aWNlQ29udGV4dC0+UlNTZXRTdGF0ZShtU2Npc3NvckRpc2FibGVkUmFzdGVy
aXplclN0YXRlLkdldCgpKTsKIAogICAgIC8vIEFwcGx5IHNoYWRlcnMKICAgICBkZXZpY2VDb250
ZXh0LT5JQVNldElucHV0TGF5b3V0KHN1cHBvcnQuaW5wdXRMYXlvdXQpOwpAQCAtMTE0Miw3ICsx
MTEyLDcgQEAgZ2w6OkVycm9yIEJsaXQxMTo6c3dpenpsZVRleHR1cmUoSUQzRDExU2hhZGVyUmVz
b3VyY2VWaWV3ICpzb3VyY2UsCiAgICAgc3RhdGVNYW5hZ2VyLT5zZXRTaGFkZXJSZXNvdXJjZShn
bDo6U0FNUExFUl9QSVhFTCwgMCwgc291cmNlKTsKIAogICAgIC8vIEFwcGx5IHNhbXBsZXJzCi0g
ICAgZGV2aWNlQ29udGV4dC0+UFNTZXRTYW1wbGVycygwLCAxLCAmbVBvaW50U2FtcGxlcik7Cisg
ICAgZGV2aWNlQ29udGV4dC0+UFNTZXRTYW1wbGVycygwLCAxLCBtUG9pbnRTYW1wbGVyLkdldEFk
ZHJlc3NPZigpKTsKIAogICAgIC8vIERyYXcgdGhlIHF1YWQKICAgICBkZXZpY2VDb250ZXh0LT5E
cmF3KGRyYXdDb3VudCwgMCk7CkBAIC0xMTU2LDcgKzExMjYsNyBAQCBnbDo6RXJyb3IgQmxpdDEx
Ojpzd2l6emxlVGV4dHVyZShJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSwKIAogICAg
IG1SZW5kZXJlci0+bWFya0FsbFN0YXRlRGlydHkoKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3Ig
QmxpdDExOjpjb3B5VGV4dHVyZShJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSwKQEAg
LTExOTksMTIgKzExNjksMTIgQEAgZ2w6OkVycm9yIEJsaXQxMTo6Y29weVRleHR1cmUoSUQzRDEx
U2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2UsCiAKICAgICAvLyBTZXQgdmVydGljZXMKICAgICBE
M0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7Ci0gICAgcmVzdWx0ID0gZGV2
aWNlQ29udGV4dC0+TWFwKG1WZXJ0ZXhCdWZmZXIsIDAsIEQzRDExX01BUF9XUklURV9ESVNDQVJE
LCAwLCAmbWFwcGVkUmVzb3VyY2UpOworICAgIHJlc3VsdCA9CisgICAgICAgIGRldmljZUNvbnRl
eHQtPk1hcChtVmVydGV4QnVmZmVyLkdldCgpLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FSRCwg
MCwgJm1hcHBlZFJlc291cmNlKTsKICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgewotICAg
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIkZhaWxlZCB0byBtYXAgaW50ZXJuYWwgdmVydGV4IGJ1ZmZlciBmb3IgdGV4dHVy
ZSBjb3B5LCBIUkVTVUxUOiAweCVYLiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuIGdsOjpPdXRPZk1lbW9yeSgpIDw8ICJGYWlsZWQgdG8gbWFwIGlu
dGVybmFsIHZlcnRleCBidWZmZXIgZm9yIHRleHR1cmUgY29weSwgIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgcmVzdWx0OwogICAgIH0KIAogICAgIFVJTlQgc3RyaWRlICAg
ID0gMDsKQEAgLTEyMTUsMTAgKzExODUsMTAgQEAgZ2w6OkVycm9yIEJsaXQxMTo6Y29weVRleHR1
cmUoSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2UsCiAgICAgc3VwcG9ydC52ZXJ0ZXhX
cml0ZUZ1bmN0aW9uKHNvdXJjZUFyZWEsIHNvdXJjZVNpemUsIGRlc3RBcmVhLCBkZXN0U2l6ZSwg
bWFwcGVkUmVzb3VyY2UucERhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZz
dHJpZGUsICZkcmF3Q291bnQsICZ0b3BvbG9neSk7CiAKLSAgICBkZXZpY2VDb250ZXh0LT5Vbm1h
cChtVmVydGV4QnVmZmVyLCAwKTsKKyAgICBkZXZpY2VDb250ZXh0LT5Vbm1hcChtVmVydGV4QnVm
ZmVyLkdldCgpLCAwKTsKIAogICAgIC8vIEFwcGx5IHZlcnRleCBidWZmZXIKLSAgICBkZXZpY2VD
b250ZXh0LT5JQVNldFZlcnRleEJ1ZmZlcnMoMCwgMSwgJm1WZXJ0ZXhCdWZmZXIsICZzdHJpZGUs
ICZzdGFydElkeCk7CisgICAgZGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKDAsIDEs
IG1WZXJ0ZXhCdWZmZXIuR2V0QWRkcmVzc09mKCksICZzdHJpZGUsICZzdGFydElkeCk7CiAKICAg
ICAvLyBBcHBseSBzdGF0ZQogICAgIGlmIChtYXNrT2ZmQWxwaGEpCkBAIC0xMjQyLDExICsxMjEy
LDExIEBAIGdsOjpFcnJvciBCbGl0MTE6OmNvcHlUZXh0dXJlKElEM0QxMVNoYWRlclJlc291cmNl
VmlldyAqc291cmNlLAogICAgICAgICBzY2lzc29yUmVjdC5ib3R0b20gPSBzY2lzc29yLT55ICsg
c2Npc3Nvci0+aGVpZ2h0OwogCiAgICAgICAgIGRldmljZUNvbnRleHQtPlJTU2V0U2Npc3NvclJl
Y3RzKDEsICZzY2lzc29yUmVjdCk7Ci0gICAgICAgIGRldmljZUNvbnRleHQtPlJTU2V0U3RhdGUo
bVNjaXNzb3JFbmFibGVkUmFzdGVyaXplclN0YXRlKTsKKyAgICAgICAgZGV2aWNlQ29udGV4dC0+
UlNTZXRTdGF0ZShtU2Npc3NvckVuYWJsZWRSYXN0ZXJpemVyU3RhdGUuR2V0KCkpOwogICAgIH0K
ICAgICBlbHNlCiAgICAgewotICAgICAgICBkZXZpY2VDb250ZXh0LT5SU1NldFN0YXRlKG1TY2lz
c29yRGlzYWJsZWRSYXN0ZXJpemVyU3RhdGUpOworICAgICAgICBkZXZpY2VDb250ZXh0LT5SU1Nl
dFN0YXRlKG1TY2lzc29yRGlzYWJsZWRSYXN0ZXJpemVyU3RhdGUuR2V0KCkpOwogICAgIH0KIAog
ICAgIC8vIEFwcGx5IHNoYWRlcnMKQEAgLTEyODIsMTUgKzEyNTIsMTUgQEAgZ2w6OkVycm9yIEJs
aXQxMTo6Y29weVRleHR1cmUoSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2UsCiAgICAg
c3dpdGNoIChmaWx0ZXIpCiAgICAgewogICAgICAgICBjYXNlIEdMX05FQVJFU1Q6Ci0gICAgICAg
ICAgICBzYW1wbGVyID0gbVBvaW50U2FtcGxlcjsKKyAgICAgICAgICAgIHNhbXBsZXIgPSBtUG9p
bnRTYW1wbGVyLkdldCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfTElO
RUFSOgotICAgICAgICAgICAgc2FtcGxlciA9IG1MaW5lYXJTYW1wbGVyOworICAgICAgICAgICAg
c2FtcGxlciA9IG1MaW5lYXJTYW1wbGVyLkdldCgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJJbnRlcm5hbCBlcnJvciwgdW5rbm93
biBibGl0IGZpbHRlciBtb2RlLiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpJbnRlcm5hbEVy
cm9yKCkgPDwgIkludGVybmFsIGVycm9yLCB1bmtub3duIGJsaXQgZmlsdGVyIG1vZGUuIjsKICAg
ICB9CiAgICAgZGV2aWNlQ29udGV4dC0+UFNTZXRTYW1wbGVycygwLCAxLCAmc2FtcGxlcik7CiAK
QEAgLTEzMzgsMTIgKzEzMDgsMTIgQEAgZ2w6OkVycm9yIEJsaXQxMTo6Y29weURlcHRoKElEM0Qx
MVNoYWRlclJlc291cmNlVmlldyAqc291cmNlLAogCiAgICAgLy8gU2V0IHZlcnRpY2VzCiAgICAg
RDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZFJlc291cmNlOwotICAgIHJlc3VsdCA9IGRl
dmljZUNvbnRleHQtPk1hcChtVmVydGV4QnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FS
RCwgMCwgJm1hcHBlZFJlc291cmNlKTsKKyAgICByZXN1bHQgPQorICAgICAgICBkZXZpY2VDb250
ZXh0LT5NYXAobVZlcnRleEJ1ZmZlci5HZXQoKSwgMCwgRDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQs
IDAsICZtYXBwZWRSZXNvdXJjZSk7CiAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICJGYWlsZWQgdG8gbWFwIGludGVybmFsIHZlcnRleCBidWZmZXIgZm9yIHRleHR1
cmUgY29weSwgSFJFU1VMVDogMHglWC4iLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBnbDo6T3V0T2ZNZW1vcnkoKSA8PCAiRmFpbGVkIHRvIG1hcCBp
bnRlcm5hbCB2ZXJ0ZXggYnVmZmVyIGZvciB0ZXh0dXJlIGNvcHksICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IHJlc3VsdDsKICAgICB9CiAKICAgICBVSU5UIHN0cmlkZSAg
ICA9IDA7CkBAIC0xMzU0LDE0ICsxMzI0LDE0IEBAIGdsOjpFcnJvciBCbGl0MTE6OmNvcHlEZXB0
aChJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSwKICAgICBXcml0ZTJEVmVydGljZXMo
c291cmNlQXJlYSwgc291cmNlU2l6ZSwgZGVzdEFyZWEsIGRlc3RTaXplLCBtYXBwZWRSZXNvdXJj
ZS5wRGF0YSwgJnN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgJmRyYXdDb3VudCwgJnRvcG9s
b2d5KTsKIAotICAgIGRldmljZUNvbnRleHQtPlVubWFwKG1WZXJ0ZXhCdWZmZXIsIDApOworICAg
IGRldmljZUNvbnRleHQtPlVubWFwKG1WZXJ0ZXhCdWZmZXIuR2V0KCksIDApOwogCiAgICAgLy8g
QXBwbHkgdmVydGV4IGJ1ZmZlcgotICAgIGRldmljZUNvbnRleHQtPklBU2V0VmVydGV4QnVmZmVy
cygwLCAxLCAmbVZlcnRleEJ1ZmZlciwgJnN0cmlkZSwgJnN0YXJ0SWR4KTsKKyAgICBkZXZpY2VD
b250ZXh0LT5JQVNldFZlcnRleEJ1ZmZlcnMoMCwgMSwgbVZlcnRleEJ1ZmZlci5HZXRBZGRyZXNz
T2YoKSwgJnN0cmlkZSwgJnN0YXJ0SWR4KTsKIAogICAgIC8vIEFwcGx5IHN0YXRlCiAgICAgZGV2
aWNlQ29udGV4dC0+T01TZXRCbGVuZFN0YXRlKG51bGxwdHIsIG51bGxwdHIsIDB4RkZGRkZGRik7
Ci0gICAgZGV2aWNlQ29udGV4dC0+T01TZXREZXB0aFN0ZW5jaWxTdGF0ZShtRGVwdGhTdGVuY2ls
U3RhdGUsIDB4RkZGRkZGRkYpOworICAgIGRldmljZUNvbnRleHQtPk9NU2V0RGVwdGhTdGVuY2ls
U3RhdGUobURlcHRoU3RlbmNpbFN0YXRlLkdldCgpLCAweEZGRkZGRkZGKTsKIAogICAgIGlmIChz
Y2lzc29yKQogICAgIHsKQEAgLTEzNzIsMTggKzEzNDIsMTggQEAgZ2w6OkVycm9yIEJsaXQxMTo6
Y29weURlcHRoKElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc291cmNlLAogICAgICAgICBzY2lz
c29yUmVjdC5ib3R0b20gPSBzY2lzc29yLT55ICsgc2Npc3Nvci0+aGVpZ2h0OwogCiAgICAgICAg
IGRldmljZUNvbnRleHQtPlJTU2V0U2Npc3NvclJlY3RzKDEsICZzY2lzc29yUmVjdCk7Ci0gICAg
ICAgIGRldmljZUNvbnRleHQtPlJTU2V0U3RhdGUobVNjaXNzb3JFbmFibGVkUmFzdGVyaXplclN0
YXRlKTsKKyAgICAgICAgZGV2aWNlQ29udGV4dC0+UlNTZXRTdGF0ZShtU2Npc3NvckVuYWJsZWRS
YXN0ZXJpemVyU3RhdGUuR2V0KCkpOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBk
ZXZpY2VDb250ZXh0LT5SU1NldFN0YXRlKG1TY2lzc29yRGlzYWJsZWRSYXN0ZXJpemVyU3RhdGUp
OworICAgICAgICBkZXZpY2VDb250ZXh0LT5SU1NldFN0YXRlKG1TY2lzc29yRGlzYWJsZWRSYXN0
ZXJpemVyU3RhdGUuR2V0KCkpOwogICAgIH0KIAogICAgIElEM0QxMURldmljZSAqZGV2aWNlICAg
ICAgICAgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogICAgIElEM0QxMVZlcnRleFNoYWRlciAq
cXVhZDJEVlMgPSBtUXVhZDJEVlMucmVzb2x2ZShkZXZpY2UpOwogICAgIGlmIChxdWFkMkRWUyA9
PSBudWxscHRyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkVycm9yIGNvbXBpbGluZyBpbnRlcm5hbCAyRCBibGl0IHZlcnRleCBzaGFkZXIi
KTsKKyAgICAgICAgcmV0dXJuIGdsOjpJbnRlcm5hbEVycm9yKCkgPDwgIkVycm9yIGNvbXBpbGlu
ZyBpbnRlcm5hbCAyRCBibGl0IHZlcnRleCBzaGFkZXIiOwogICAgIH0KIAogICAgIC8vIEFwcGx5
IHNoYWRlcnMKQEAgLTE0MTUsNyArMTM4NSw3IEBAIGdsOjpFcnJvciBCbGl0MTE6OmNvcHlEZXB0
aChJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSwKICAgICBzdGF0ZU1hbmFnZXItPnNl
dFNoYWRlclJlc291cmNlKGdsOjpTQU1QTEVSX1BJWEVMLCAwLCBzb3VyY2UpOwogCiAgICAgLy8g
QXBwbHkgc2FtcGxlcnMKLSAgICBkZXZpY2VDb250ZXh0LT5QU1NldFNhbXBsZXJzKDAsIDEsICZt
UG9pbnRTYW1wbGVyKTsKKyAgICBkZXZpY2VDb250ZXh0LT5QU1NldFNhbXBsZXJzKDAsIDEsIG1Q
b2ludFNhbXBsZXIuR2V0QWRkcmVzc09mKCkpOwogCiAgICAgLy8gRHJhdyB0aGUgcXVhZAogICAg
IGRldmljZUNvbnRleHQtPkRyYXcoZHJhd0NvdW50LCAwKTsKQEAgLTE0MjksNyArMTM5OSw3IEBA
IGdsOjpFcnJvciBCbGl0MTE6OmNvcHlEZXB0aChJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNv
dXJjZSwKIAogICAgIG1SZW5kZXJlci0+bWFya0FsbFN0YXRlRGlydHkoKTsKIAotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQog
CiBnbDo6RXJyb3IgQmxpdDExOjpjb3B5RGVwdGhTdGVuY2lsKGNvbnN0IFRleHR1cmVIZWxwZXIx
MSAmc291cmNlLApAQCAtMTQ3MCw3ICsxNDQwLDcgQEAgZ2w6OkVycm9yIEJsaXQxMTo6Y29weURl
cHRoU3RlbmNpbEltcGwoY29uc3QgVGV4dHVyZUhlbHBlcjExICZzb3VyY2UsCiAKICAgICBpZiAo
c3RlbmNpbE9ubHkpCiAgICAgewotICAgICAgICBjb25zdCBhdXRvICZzcmNGb3JtYXQgPSBzb3Vy
Y2UuZ2V0Rm9ybWF0U2V0KCkuZm9ybWF0OworICAgICAgICBjb25zdCBhdXRvICZzcmNGb3JtYXQg
PSBzb3VyY2UuZ2V0Rm9ybWF0U2V0KCkuZm9ybWF0KCk7CiAKICAgICAgICAgLy8gU3RlbmNpbCBj
aGFubmVsIHNob3VsZCBiZSByaWdodCBhZnRlciB0aGUgZGVwdGggY2hhbm5lbC4gU29tZSB2aWV3
cyB0byBkZXB0aC9zdGVuY2lsCiAgICAgICAgIC8vIHJlc291cmNlcyBoYXZlIHJlZCBjaGFubmVs
IGZvciBkZXB0aCwgaW4gd2hpY2ggY2FzZSB0aGUgZGVwdGggY2hhbm5lbCBiaXQgd2lkdGggaXMg
aW4KQEAgLTE1MzksMTAgKzE1MDksOSBAQCBnbDo6RXJyb3IgQmxpdDExOjpjb3B5QW5kQ29udmVy
dEltcGwoY29uc3QgVGV4dHVyZUhlbHBlcjExICZzb3VyY2UsCiAgICAgICAgIGRldmljZUNvbnRl
eHQtPk1hcChzb3VyY2VTdGFnaW5nLmdldFJlc291cmNlKCksIDAsIEQzRDExX01BUF9SRUFELCAw
LCAmc291cmNlTWFwcGluZyk7CiAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGdsOjpFcnJvcigKLSAgICAgICAgICAgIEdMX09VVF9PRl9NRU1PUlksCi0gICAg
ICAgICAgICAiRmFpbGVkIHRvIG1hcCBpbnRlcm5hbCBzb3VyY2Ugc3RhZ2luZyB0ZXh0dXJlIGZv
ciBkZXB0aCBzdGVuY2lsIGJsaXQsIEhSRVNVTFQ6IDB4JVguIiwKLSAgICAgICAgICAgIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBnbDo6T3V0T2ZNZW1vcnkoKQorICAgICAgICAgICAgICAgPDwg
IkZhaWxlZCB0byBtYXAgaW50ZXJuYWwgc291cmNlIHN0YWdpbmcgdGV4dHVyZSBmb3IgZGVwdGgg
c3RlbmNpbCBibGl0LCAiCisgICAgICAgICAgICAgICA8PCByZXN1bHQ7CiAgICAgfQogCiAgICAg
RDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIGRlc3RNYXBwaW5nOwpAQCAtMTU1MCwxMCArMTUxOSw5
IEBAIGdsOjpFcnJvciBCbGl0MTE6OmNvcHlBbmRDb252ZXJ0SW1wbChjb25zdCBUZXh0dXJlSGVs
cGVyMTEgJnNvdXJjZSwKICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgewogICAgICAgICBk
ZXZpY2VDb250ZXh0LT5Vbm1hcChzb3VyY2VTdGFnaW5nLmdldFJlc291cmNlKCksIDApOwotICAg
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIkZhaWxlZCB0byBtYXAgaW50ZXJuYWwgZGVzdGluYXRpb24gc3RhZ2luZyB0ZXh0
dXJlIGZvciBkZXB0aCBzdGVuY2lsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYmxpdCwg
SFJFU1VMVDogMHglWC4iLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBnbDo6T3V0T2ZNZW1vcnkoKQorICAgICAgICAgICAgICAgPDwgIkZhaWxlZCB0
byBtYXAgaW50ZXJuYWwgZGVzdGluYXRpb24gc3RhZ2luZyB0ZXh0dXJlIGZvciBkZXB0aCBzdGVu
Y2lsIGJsaXQsICIKKyAgICAgICAgICAgICAgIDw8IHJlc3VsdDsKICAgICB9CiAKICAgICAvLyBD
bGlwIGRlc3QgYXJlYSB0byB0aGUgZGVzdGluYXRpb24gc2l6ZQpAQCAtMTY4NSwxNCArMTY1Mywx
NCBAQCBnbDo6RXJyb3IgQmxpdDExOjpnZXRCbGl0U2hhZGVyKEdMZW51bSBkZXN0Rm9ybWF0LAog
CiAgICAgaWYgKGJsaXRTaGFkZXJUeXBlID09IEJMSVRTSEFERVJfSU5WQUxJRCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJJbnRlcm5hbCBi
bGl0IHNoYWRlciB0eXBlIG1pc21hdGNoIik7CisgICAgICAgIHJldHVybiBnbDo6SW50ZXJuYWxF
cnJvcigpIDw8ICJJbnRlcm5hbCBibGl0IHNoYWRlciB0eXBlIG1pc21hdGNoIjsKICAgICB9CiAK
ICAgICBhdXRvIGJsaXRTaGFkZXJJdCA9IG1CbGl0U2hhZGVyTWFwLmZpbmQoYmxpdFNoYWRlclR5
cGUpOwogICAgIGlmIChibGl0U2hhZGVySXQgIT0gbUJsaXRTaGFkZXJNYXAuZW5kKCkpCiAgICAg
ewogICAgICAgICAqc2hhZGVyID0gJmJsaXRTaGFkZXJJdC0+c2Vjb25kOwotICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CiAgICAgfQogCiAgICAgQVNTRVJUKGRpbWVuc2lvbiA9PSBTSEFERVJfMkQgfHwgbVJlbmRlcmVy
LT5pc0VTM0NhcGFibGUoKSk7CkBAIC0xODkzLDEzICsxODYxLDEzIEBAIGdsOjpFcnJvciBCbGl0
MTE6OmdldEJsaXRTaGFkZXIoR0xlbnVtIGRlc3RGb3JtYXQsCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiSW50ZXJuYWwgZXJyb3Ii
KTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6SW50ZXJuYWxFcnJvcigpIDw8ICJJbnRlcm5hbCBl
cnJvciI7CiAgICAgfQogCiAgICAgYmxpdFNoYWRlckl0ID0gbUJsaXRTaGFkZXJNYXAuZmluZChi
bGl0U2hhZGVyVHlwZSk7CiAgICAgQVNTRVJUKGJsaXRTaGFkZXJJdCAhPSBtQmxpdFNoYWRlck1h
cC5lbmQoKSk7CiAgICAgKnNoYWRlciA9ICZibGl0U2hhZGVySXQtPnNlY29uZDsKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAogZ2w6OkVycm9yIEJsaXQxMTo6Z2V0U3dpenpsZVNoYWRlcihHTGVudW0gdHlwZSwKQEAgLTE5
MTAsMTQgKzE4NzgsMTQgQEAgZ2w6OkVycm9yIEJsaXQxMTo6Z2V0U3dpenpsZVNoYWRlcihHTGVu
dW0gdHlwZSwKIAogICAgIGlmIChzd2l6emxlU2hhZGVyVHlwZSA9PSBTV0laWkxFU0hBREVSX0lO
VkFMSUQpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiU3dpenpsZSBzaGFkZXIgdHlwZSBub3QgZm91bmQiKTsKKyAgICAgICAgcmV0dXJuIGds
OjpJbnRlcm5hbEVycm9yKCkgPDwgIlN3aXp6bGUgc2hhZGVyIHR5cGUgbm90IGZvdW5kIjsKICAg
ICB9CiAKICAgICBhdXRvIHN3aXp6bGVTaGFkZXJJdCA9IG1Td2l6emxlU2hhZGVyTWFwLmZpbmQo
c3dpenpsZVNoYWRlclR5cGUpOwogICAgIGlmIChzd2l6emxlU2hhZGVySXQgIT0gbVN3aXp6bGVT
aGFkZXJNYXAuZW5kKCkpCiAgICAgewogICAgICAgICAqc2hhZGVyID0gJnN3aXp6bGVTaGFkZXJJ
dC0+c2Vjb25kOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAgLy8gU3dpenpsaW5nIHNoYWRl
cnMgKE9wZW5HTCBFUyAzKykKQEAgLTE5ODksNyArMTk1Nyw3IEBAIGdsOjpFcnJvciBCbGl0MTE6
OmdldFN3aXp6bGVTaGFkZXIoR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiSW50ZXJuYWwgZXJyb3IiKTsKKyAg
ICAgICAgICAgIHJldHVybiBnbDo6SW50ZXJuYWxFcnJvcigpIDw8ICJJbnRlcm5hbCBlcnJvciI7
CiAgICAgfQogCiAgICAgc3dpenpsZVNoYWRlckl0ID0gbVN3aXp6bGVTaGFkZXJNYXAuZmluZChz
d2l6emxlU2hhZGVyVHlwZSk7CkBAIC0yMDAwLDExICsxOTY4LDE0IEBAIGdsOjpFcnJvciBCbGl0
MTE6OmdldFN3aXp6bGVTaGFkZXIoR0xlbnVtIHR5cGUsCiAKIGdsOjpFcnJvck9yUmVzdWx0PFRl
eHR1cmVIZWxwZXIxMT4gQmxpdDExOjpyZXNvbHZlRGVwdGgoUmVuZGVyVGFyZ2V0MTEgKmRlcHRo
KQogeworICAgIC8vIE11bHRpc2FtcGxlZCBkZXB0aCBzdGVuY2lsIFNSVnMgYXJlIG5vdCBhdmFp
bGFibGUgaW4gZmVhdHVyZSBsZXZlbCAxMC4wCisgICAgQVNTRVJUKG1SZW5kZXJlci0+Z2V0UmVu
ZGVyZXIxMURldmljZUNhcHMoKS5mZWF0dXJlTGV2ZWwgPiBEM0RfRkVBVFVSRV9MRVZFTF8xMF8w
KTsKKwogICAgIGNvbnN0IGF1dG8gJmV4dGVudHMgICAgICAgICAgPSBkZXB0aC0+Z2V0RXh0ZW50
cygpOwogICAgIElEM0QxMURldmljZSAqZGV2aWNlICAgICAgICAgPSBtUmVuZGVyZXItPmdldERl
dmljZSgpOwogICAgIElEM0QxMURldmljZUNvbnRleHQgKmNvbnRleHQgPSBtUmVuZGVyZXItPmdl
dERldmljZUNvbnRleHQoKTsKIAotICAgIEFOR0xFX1RSWShpbml0UmVzb2x2ZURlcHRoU3RlbmNp
bChleHRlbnRzKSk7CisgICAgQU5HTEVfVFJZKGluaXRSZXNvbHZlRGVwdGhPbmx5KGRlcHRoLT5n
ZXRGb3JtYXRTZXQoKSwgZXh0ZW50cykpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBSZW5kZXJlciB0
aGF0IGFsbCBzdGF0ZSBzaG91bGQgYmUgaW52YWxpZGF0ZWQuCiAgICAgbVJlbmRlcmVyLT5tYXJr
QWxsU3RhdGVEaXJ0eSgpOwpAQCAtMjAxNSw4ICsxOTg2LDggQEAgZ2w6OkVycm9yT3JSZXN1bHQ8
VGV4dHVyZUhlbHBlcjExPiBCbGl0MTE6OnJlc29sdmVEZXB0aChSZW5kZXJUYXJnZXQxMSAqZGVw
dGgpCiAgICAgY29udGV4dC0+VlNTZXRTaGFkZXIobVJlc29sdmVEZXB0aFN0ZW5jaWxWUy5yZXNv
bHZlKGRldmljZSksIG51bGxwdHIsIDApOwogICAgIGNvbnRleHQtPkdTU2V0U2hhZGVyKG51bGxw
dHIsIG51bGxwdHIsIDApOwogICAgIGNvbnRleHQtPlJTU2V0U3RhdGUobnVsbHB0cik7Ci0gICAg
Y29udGV4dC0+T01TZXREZXB0aFN0ZW5jaWxTdGF0ZShudWxscHRyLCAweEZGRkZGRkZGKTsKLSAg
ICBjb250ZXh0LT5PTVNldFJlbmRlclRhcmdldHMoMSwgJm1SZXNvbHZlZERlcHRoU3RlbmNpbFJU
VmlldywgbnVsbHB0cik7CisgICAgY29udGV4dC0+T01TZXREZXB0aFN0ZW5jaWxTdGF0ZShtRGVw
dGhTdGVuY2lsU3RhdGUuR2V0KCksIDB4RkZGRkZGRkYpOworICAgIGNvbnRleHQtPk9NU2V0UmVu
ZGVyVGFyZ2V0cygwLCBudWxscHRyLCBtUmVzb2x2ZWREZXB0aERTVmlldy5HZXQoKSk7CiAgICAg
Y29udGV4dC0+T01TZXRCbGVuZFN0YXRlKG51bGxwdHIsIG51bGxwdHIsIDB4RkZGRkZGRik7CiAK
ICAgICAvLyBTZXQgdGhlIHZpZXdwb3J0CkBAIC0yMDM4LDM4ICsyMDA5LDYzIEBAIGdsOjpFcnJv
ck9yUmVzdWx0PFRleHR1cmVIZWxwZXIxMT4gQmxpdDExOjpyZXNvbHZlRGVwdGgoUmVuZGVyVGFy
Z2V0MTEgKmRlcHRoKQogICAgIC8vIFRyaWdnZXIgdGhlIGJsaXQgb24gdGhlIEdQVS4KICAgICBj
b250ZXh0LT5EcmF3KDYsIDApOwogCi0gICAgZ2w6OkJveCBjb3B5Qm94KDAsIDAsIDAsIGV4dGVu
dHMud2lkdGgsIGV4dGVudHMuaGVpZ2h0LCAxKTsKKyAgICByZXR1cm4gVGV4dHVyZUhlbHBlcjEx
OjpNYWtlQW5kUmVmZXJlbmNlKG1SZXNvbHZlZERlcHRoLmdldFJlc291cmNlKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVzb2x2ZWREZXB0aC5nZXRG
b3JtYXRTZXQoKSk7Cit9CiAKLSAgICBjb25zdCBhdXRvICZjb3B5RnVuY3Rpb24gPSBHZXRDb3B5
RGVwdGhTdGVuY2lsRnVuY3Rpb24oZGVwdGgtPmdldEludGVybmFsRm9ybWF0KCkpOwotICAgIGNv
bnN0IGF1dG8gJmRzRm9ybWF0U2V0ICA9IGRlcHRoLT5nZXRGb3JtYXRTZXQoKTsKLSAgICBjb25z
dCBhdXRvICZkc0R4Z2lJbmZvICAgPSBkM2QxMTo6R2V0RFhHSUZvcm1hdFNpemVJbmZvKGRzRm9y
bWF0U2V0LnRleEZvcm1hdCk7CitnbDo6RXJyb3IgQmxpdDExOjppbml0UmVzb2x2ZURlcHRoT25s
eShjb25zdCBkM2QxMTo6Rm9ybWF0ICZmb3JtYXQsIGNvbnN0IGdsOjpFeHRlbnRzICZleHRlbnRz
KQoreworICAgIGlmIChtUmVzb2x2ZWREZXB0aC52YWxpZCgpICYmIGV4dGVudHMgPT0gbVJlc29s
dmVkRGVwdGguZ2V0RXh0ZW50cygpICYmCisgICAgICAgIGZvcm1hdC50ZXhGb3JtYXQgPT0gbVJl
c29sdmVkRGVwdGguZ2V0Rm9ybWF0KCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKKyAgICB9CisKKyAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0
RGV2aWNlKCk7CiAKLSAgICBJRDNEMTFUZXh0dXJlMkQgKmRlc3RUZXggPSBudWxscHRyOwotCi0g
ICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVzdERlc2M7Ci0gICAgZGVzdERlc2MuV2lkdGggICAg
ICAgICAgICAgID0gZXh0ZW50cy53aWR0aDsKLSAgICBkZXN0RGVzYy5IZWlnaHQgICAgICAgICAg
ICAgPSBleHRlbnRzLmhlaWdodDsKLSAgICBkZXN0RGVzYy5NaXBMZXZlbHMgICAgICAgICAgPSAx
OwotICAgIGRlc3REZXNjLkFycmF5U2l6ZSAgICAgICAgICA9IDE7Ci0gICAgZGVzdERlc2MuRm9y
bWF0ICAgICAgICAgICAgID0gZHNGb3JtYXRTZXQudGV4Rm9ybWF0OwotICAgIGRlc3REZXNjLlNh
bXBsZURlc2MuQ291bnQgICA9IDE7Ci0gICAgZGVzdERlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ID0g
MDsKLSAgICBkZXN0RGVzYy5Vc2FnZSAgICAgICAgICAgICAgPSBEM0QxMV9VU0FHRV9ERUZBVUxU
OwotICAgIGRlc3REZXNjLkJpbmRGbGFncyAgICAgICAgICA9IEQzRDExX0JJTkRfU0hBREVSX1JF
U09VUkNFOwotICAgIGRlc3REZXNjLkNQVUFjY2Vzc0ZsYWdzICAgICA9IDA7Ci0gICAgZGVzdERl
c2MuTWlzY0ZsYWdzICAgICAgICAgID0gMDsKLQotICAgIEhSRVNVTFQgaHIgPSBkZXZpY2UtPkNy
ZWF0ZVRleHR1cmUyRCgmZGVzdERlc2MsIG51bGxwdHIsICZkZXN0VGV4KTsKKyAgICBEM0QxMV9U
RVhUVVJFMkRfREVTQyB0ZXh0dXJlRGVzYzsKKyAgICB0ZXh0dXJlRGVzYy5XaWR0aCAgICAgICAg
ICAgICAgPSBleHRlbnRzLndpZHRoOworICAgIHRleHR1cmVEZXNjLkhlaWdodCAgICAgICAgICAg
ICA9IGV4dGVudHMuaGVpZ2h0OworICAgIHRleHR1cmVEZXNjLk1pcExldmVscyAgICAgICAgICA9
IDE7CisgICAgdGV4dHVyZURlc2MuQXJyYXlTaXplICAgICAgICAgID0gMTsKKyAgICB0ZXh0dXJl
RGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBmb3JtYXQudGV4Rm9ybWF0OworICAgIHRleHR1cmVE
ZXNjLlNhbXBsZURlc2MuQ291bnQgICA9IDE7CisgICAgdGV4dHVyZURlc2MuU2FtcGxlRGVzYy5R
dWFsaXR5ID0gMDsKKyAgICB0ZXh0dXJlRGVzYy5Vc2FnZSAgICAgICAgICAgICAgPSBEM0QxMV9V
U0FHRV9ERUZBVUxUOworICAgIHRleHR1cmVEZXNjLkJpbmRGbGFncyAgICAgICAgICA9IEQzRDEx
X0JJTkRfREVQVEhfU1RFTkNJTCB8IEQzRDExX0JJTkRfU0hBREVSX1JFU09VUkNFOworICAgIHRl
eHR1cmVEZXNjLkNQVUFjY2Vzc0ZsYWdzICAgICA9IDA7CisgICAgdGV4dHVyZURlc2MuTWlzY0Zs
YWdzICAgICAgICAgID0gMDsKKworICAgIElEM0QxMVRleHR1cmUyRCAqcmVzb2x2ZWREZXB0aCA9
IG51bGxwdHI7CisgICAgSFJFU1VMVCBociAgICAgICAgICAgICAgICAgICAgID0gZGV2aWNlLT5D
cmVhdGVUZXh0dXJlMkQoJnRleHR1cmVEZXNjLCBudWxscHRyLCAmcmVzb2x2ZWREZXB0aCk7CiAg
ICAgaWYgKEZBSUxFRChocikpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09V
VF9PRl9NRU1PUlksICJFcnJvciBjcmVhdGluZyBkZXB0aCByZXNvbHZlIGRlc3QgdGV4dHVyZS4i
KTsKKyAgICAgICAgcmV0dXJuIGdsOjpPdXRPZk1lbW9yeSgpIDw8ICJGYWlsZWQgdG8gYWxsb2Nh
dGUgcmVzb2x2ZWQgZGVwdGggdGV4dHVyZSwgIiA8PCBocjsKICAgICB9Ci0gICAgZDNkMTE6OlNl
dERlYnVnTmFtZShkZXN0VGV4LCAicmVzb2x2ZURlcHRoRGVzdCIpOworICAgIGQzZDExOjpTZXRE
ZWJ1Z05hbWUocmVzb2x2ZWREZXB0aCwgIkJsaXQxMTo6bVJlc29sdmVkRGVwdGgiKTsKIAotICAg
IFRleHR1cmVIZWxwZXIxMSBkZXN0ID0gVGV4dHVyZUhlbHBlcjExOjpNYWtlQW5kUG9zc2VzczJE
KGRlc3RUZXgsIGRlcHRoLT5nZXRGb3JtYXRTZXQoKSk7Ci0gICAgQU5HTEVfVFJZKGNvcHlBbmRD
b252ZXJ0KG1SZXNvbHZlZERlcHRoU3RlbmNpbCwgMCwgY29weUJveCwgZXh0ZW50cywgZGVzdCwg
MCwgY29weUJveCwgZXh0ZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwgMCwgMCwgMCwgOCwgZHNEeGdpSW5mby5waXhlbEJ5dGVzLCBjb3B5RnVuY3Rpb24pKTsKLSAg
ICByZXR1cm4gZGVzdDsKKyAgICBtUmVzb2x2ZWREZXB0aCA9IFRleHR1cmVIZWxwZXIxMTo6TWFr
ZUFuZFBvc3Nlc3MyRChyZXNvbHZlZERlcHRoLCBmb3JtYXQpOworCisgICAgRDNEMTFfREVQVEhf
U1RFTkNJTF9WSUVXX0RFU0MgZHN2RGVzYzsKKyAgICBkc3ZEZXNjLkZsYWdzICAgICAgICAgICAg
ICA9IDA7CisgICAgZHN2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBmb3JtYXQuZHN2Rm9ybWF0
OworICAgIGRzdkRlc2MuVGV4dHVyZTJELk1pcFNsaWNlID0gMDsKKyAgICBkc3ZEZXNjLlZpZXdE
aW1lbnNpb24gICAgICA9IEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTJEOworCisgICAgaHIg
PSBkZXZpY2UtPkNyZWF0ZURlcHRoU3RlbmNpbFZpZXcobVJlc29sdmVkRGVwdGguZ2V0UmVzb3Vy
Y2UoKSwgJmRzdkRlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bVJlc29sdmVkRGVwdGhEU1ZpZXcuUmVsZWFzZUFuZEdldEFkZHJlc3NPZigpKTsKKyAgICBpZiAo
RkFJTEVEKGhyKSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6T3V0T2ZNZW1vcnkoKSA8PCAi
RmFpbGVkIHRvIGFsbG9jYXRlIEJsaXQxMTo6bVJlc29sdmVkRGVwdGhEU1ZpZXcsICIgPDwgaHI7
CisgICAgfQorICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobVJlc29sdmVkRGVwdGhEU1ZpZXcsICJC
bGl0MTE6Om1SZXNvbHZlZERlcHRoRFNWaWV3Iik7CisKKyAgICAvLyBQb3NzaWJseSBEM0QxMSBi
dWcgb3IgdW5kZWZpbmVkIGJlaGF2aW91cjogQ2xlYXIgdGhlIERTViBzbyB0aGF0IG91ciBmaXJz
dCByZW5kZXIKKyAgICAvLyB3b3JrcyBhcyBleHBlY3RlZC4gT3RoZXJ3aXNlIHRoZSByZXN1bHRz
IG9mIHRoZSBmaXJzdCB1c2Ugc2VlbSB0byBiZSBpbmNvcnJlY3QuCisgICAgYXV0byBjb250ZXh0
ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CisgICAgY29udGV4dC0+Q2xlYXJEZXB0
aFN0ZW5jaWxWaWV3KG1SZXNvbHZlZERlcHRoRFNWaWV3LkdldCgpLCBEM0QxMV9DTEVBUl9ERVBU
SCwgMS4wZiwgMCk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9y
IEJsaXQxMTo6aW5pdFJlc29sdmVEZXB0aFN0ZW5jaWwoY29uc3QgZ2w6OkV4dGVudHMgJmV4dGVu
dHMpCkBAIC0yMDc3LDYgKzIwNzMsNyBAQCBnbDo6RXJyb3IgQmxpdDExOjppbml0UmVzb2x2ZURl
cHRoU3RlbmNpbChjb25zdCBnbDo6RXh0ZW50cyAmZXh0ZW50cykKICAgICAvLyBDaGVjayBpZiB3
ZSBuZWVkIHRvIHJlY3JlYXRlIGRlcHRoIHN0ZW5jaWwgdmlldwogICAgIGlmIChtUmVzb2x2ZWRE
ZXB0aFN0ZW5jaWwudmFsaWQoKSAmJiBleHRlbnRzID09IG1SZXNvbHZlZERlcHRoU3RlbmNpbC5n
ZXRFeHRlbnRzKCkpCiAgICAgeworICAgICAgICBBU1NFUlQobVJlc29sdmVkRGVwdGhTdGVuY2ls
LmdldEZvcm1hdCgpID09IERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCk7CiAgICAgICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogICAgIH0KIApAQCAtMjEwNiwxNyArMjEwMywxNyBAQCBnbDo6RXJy
b3IgQmxpdDExOjppbml0UmVzb2x2ZURlcHRoU3RlbmNpbChjb25zdCBnbDo6RXh0ZW50cyAmZXh0
ZW50cykKICAgICBIUkVTVUxUIGhyID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJnRleHR1cmVE
ZXNjLCBudWxscHRyLCAmcmVzb2x2ZWREZXB0aFN0ZW5jaWwpOwogICAgIGlmIChGQUlMRUQoaHIp
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFp
bGVkIHRvIGFsbG9jYXRlIHJlc29sdmVkIGRlcHRoIHN0ZW5jaWwgdGV4dHVyZSIpOworICAgICAg
ICByZXR1cm4gZ2w6Ok91dE9mTWVtb3J5KCkgPDwgIkZhaWxlZCB0byBhbGxvY2F0ZSByZXNvbHZl
ZCBkZXB0aCBzdGVuY2lsIHRleHR1cmUsICIgPDwgaHI7CiAgICAgfQogICAgIGQzZDExOjpTZXRE
ZWJ1Z05hbWUocmVzb2x2ZWREZXB0aFN0ZW5jaWwsICJCbGl0MTE6Om1SZXNvbHZlZERlcHRoU3Rl
bmNpbCIpOwogCiAgICAgQVNTRVJUKG1SZXNvbHZlZERlcHRoU3RlbmNpbFJUVmlldyA9PSBudWxs
cHRyKTsKLSAgICBociA9Ci0gICAgICAgIGRldmljZS0+Q3JlYXRlUmVuZGVyVGFyZ2V0Vmlldyhy
ZXNvbHZlZERlcHRoU3RlbmNpbCwgbnVsbHB0ciwgJm1SZXNvbHZlZERlcHRoU3RlbmNpbFJUVmll
dyk7CisgICAgaHIgPSBkZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdldFZpZXcocmVzb2x2ZWREZXB0
aFN0ZW5jaWwsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbVJlc29sdmVkRGVwdGhTdGVuY2lsUlRWaWV3LkdldEFkZHJlc3NPZigpKTsKICAgICBpZiAo
RkFJTEVEKGhyKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01F
TU9SWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGFsbG9jYXRlIEJsaXQx
MTo6bVJlc29sdmVkRGVwdGhTdGVuY2lsUlRWaWV3Iik7CisgICAgICAgIHJldHVybiBnbDo6T3V0
T2ZNZW1vcnkoKSA8PCAiRmFpbGVkIHRvIGFsbG9jYXRlIEJsaXQxMTo6bVJlc29sdmVkRGVwdGhT
dGVuY2lsUlRWaWV3LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBocjsK
ICAgICB9CiAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtUmVzb2x2ZWREZXB0aFN0ZW5jaWxSVFZp
ZXcsICJCbGl0MTE6Om1SZXNvbHZlZERlcHRoU3RlbmNpbFJUVmlldyIpOwogCkBAIC0yMTI4LDYg
KzIxMjUsOSBAQCBnbDo6RXJyb3IgQmxpdDExOjppbml0UmVzb2x2ZURlcHRoU3RlbmNpbChjb25z
dCBnbDo6RXh0ZW50cyAmZXh0ZW50cykKIGdsOjpFcnJvck9yUmVzdWx0PFRleHR1cmVIZWxwZXIx
MT4gQmxpdDExOjpyZXNvbHZlU3RlbmNpbChSZW5kZXJUYXJnZXQxMSAqZGVwdGhTdGVuY2lsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgYWxzb0RlcHRoKQogeworICAgIC8vIE11bHRpc2FtcGxlZCBkZXB0aCBzdGVuY2lsIFNS
VnMgYXJlIG5vdCBhdmFpbGFibGUgaW4gZmVhdHVyZSBsZXZlbCAxMC4wCisgICAgQVNTRVJUKG1S
ZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKS5mZWF0dXJlTGV2ZWwgPiBEM0RfRkVB
VFVSRV9MRVZFTF8xMF8wKTsKKwogICAgIGNvbnN0IGF1dG8gJmV4dGVudHMgPSBkZXB0aFN0ZW5j
aWwtPmdldEV4dGVudHMoKTsKIAogICAgIEFOR0xFX1RSWShpbml0UmVzb2x2ZURlcHRoU3RlbmNp
bChleHRlbnRzKSk7CkBAIC0yMTQ1LDIwICsyMTQ1LDIzIEBAIGdsOjpFcnJvck9yUmVzdWx0PFRl
eHR1cmVIZWxwZXIxMT4gQmxpdDExOjpyZXNvbHZlU3RlbmNpbChSZW5kZXJUYXJnZXQxMSAqZGVw
dGhTCiAKICAgICAgICAgaWYgKHN0ZW5jaWxSZXNvdXJjZSAhPSBwcmlvclJlc291cmNlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBTYWZlUmVsZWFzZShtU3RlbmNpbFNSVik7CisgICAgICAgICAg
ICBtU3RlbmNpbFNSVi5SZXNldCgpOwogICAgICAgICB9CisKKyAgICAgICAgU2FmZVJlbGVhc2Uo
cHJpb3JSZXNvdXJjZSk7CiAgICAgfQogCi0gICAgaWYgKCFtU3RlbmNpbFNSVikKKyAgICBpZiAo
bVN0ZW5jaWxTUlYgPT0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIEQzRDExX1NIQURFUl9SRVNP
VVJDRV9WSUVXX0RFU0Mgc3JWaWV3RGVzYzsKICAgICAgICAgc3JWaWV3RGVzYy5Gb3JtYXQgICAg
ICAgID0gR2V0U3RlbmNpbFNSVkZvcm1hdChkZXB0aFN0ZW5jaWwtPmdldEZvcm1hdFNldCgpKTsK
ICAgICAgICAgc3JWaWV3RGVzYy5WaWV3RGltZW5zaW9uID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9U
RVhUVVJFMkRNUzsKIAotICAgICAgICBIUkVTVUxUIGhyID0gZGV2aWNlLT5DcmVhdGVTaGFkZXJS
ZXNvdXJjZVZpZXcoc3RlbmNpbFJlc291cmNlLCAmc3JWaWV3RGVzYywgJm1TdGVuY2lsU1JWKTsK
KyAgICAgICAgSFJFU1VMVCBociA9IGRldmljZS0+Q3JlYXRlU2hhZGVyUmVzb3VyY2VWaWV3KHN0
ZW5jaWxSZXNvdXJjZSwgJnNyVmlld0Rlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RlbmNpbFNSVi5HZXRBZGRyZXNzT2YoKSk7CiAg
ICAgICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJFcnJvciBjcmVhdGluZyBCbGl0MTEgc3RlbmNpbCBT
UlYiKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6T3V0T2ZNZW1vcnkoKSA8PCAiRXJyb3IgY3Jl
YXRpbmcgQmxpdDExIHN0ZW5jaWwgU1JWLCAiIDw8IGhyOwogICAgICAgICB9CiAgICAgICAgIGQz
ZDExOjpTZXREZWJ1Z05hbWUobVN0ZW5jaWxTUlYsICJCbGl0MTE6Om1TdGVuY2lsU1JWIik7CiAg
ICAgfQpAQCAtMjE3Myw3ICsyMTc2LDcgQEAgZ2w6OkVycm9yT3JSZXN1bHQ8VGV4dHVyZUhlbHBl
cjExPiBCbGl0MTE6OnJlc29sdmVTdGVuY2lsKFJlbmRlclRhcmdldDExICpkZXB0aFMKICAgICBj
b250ZXh0LT5HU1NldFNoYWRlcihudWxscHRyLCBudWxscHRyLCAwKTsKICAgICBjb250ZXh0LT5S
U1NldFN0YXRlKG51bGxwdHIpOwogICAgIGNvbnRleHQtPk9NU2V0RGVwdGhTdGVuY2lsU3RhdGUo
bnVsbHB0ciwgMHhGRkZGRkZGRik7Ci0gICAgY29udGV4dC0+T01TZXRSZW5kZXJUYXJnZXRzKDEs
ICZtUmVzb2x2ZWREZXB0aFN0ZW5jaWxSVFZpZXcsIG51bGxwdHIpOworICAgIGNvbnRleHQtPk9N
U2V0UmVuZGVyVGFyZ2V0cygxLCBtUmVzb2x2ZWREZXB0aFN0ZW5jaWxSVFZpZXcuR2V0QWRkcmVz
c09mKCksIG51bGxwdHIpOwogICAgIGNvbnRleHQtPk9NU2V0QmxlbmRTdGF0ZShudWxscHRyLCBu
dWxscHRyLCAweEZGRkZGRkYpOwogCiAgICAgLy8gU2V0IHRoZSB2aWV3cG9ydApAQCAtMjE4Nyw3
ICsyMTkwLDcgQEAgZ2w6OkVycm9yT3JSZXN1bHQ8VGV4dHVyZUhlbHBlcjExPiBCbGl0MTE6OnJl
c29sdmVTdGVuY2lsKFJlbmRlclRhcmdldDExICpkZXB0aFMKICAgICBjb250ZXh0LT5SU1NldFZp
ZXdwb3J0cygxLCAmdmlld3BvcnQpOwogCiAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpw
aXhlbFZpZXdzW10gPSB7Ci0gICAgICAgIGRlcHRoU3RlbmNpbC0+Z2V0U2hhZGVyUmVzb3VyY2VW
aWV3KCksIG1TdGVuY2lsU1JWLAorICAgICAgICBkZXB0aFN0ZW5jaWwtPmdldFNoYWRlclJlc291
cmNlVmlldygpLCBtU3RlbmNpbFNSVi5HZXQoKSwKICAgICB9OwogCiAgICAgY29udGV4dC0+UFNT
ZXRTaGFkZXJSZXNvdXJjZXMoMCwgMiwgcGl4ZWxWaWV3cyk7CkBAIC0yMjI3LDggKzIyMzAsOCBA
QCBnbDo6RXJyb3JPclJlc3VsdDxUZXh0dXJlSGVscGVyMTE+IEJsaXQxMTo6cmVzb2x2ZVN0ZW5j
aWwoUmVuZGVyVGFyZ2V0MTEgKmRlcHRoUwogCiB2b2lkIEJsaXQxMTo6cmVsZWFzZVJlc29sdmVE
ZXB0aFN0ZW5jaWxSZXNvdXJjZXMoKQogewotICAgIFNhZmVSZWxlYXNlKG1TdGVuY2lsU1JWKTsK
LSAgICBTYWZlUmVsZWFzZShtUmVzb2x2ZWREZXB0aFN0ZW5jaWxSVFZpZXcpOworICAgIG1TdGVu
Y2lsU1JWLlJlc2V0KCk7CisgICAgbVJlc29sdmVkRGVwdGhTdGVuY2lsUlRWaWV3LlJlc2V0KCk7
CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CbGl0MTEuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQmxpdDExLmgK
aW5kZXggZTYxZjA5NmM2OWQ2NGI2YzU3NTNkMzY1NmRlMDhkZDkzZWE3YWE5NS4uNDNjNWRhNTE0
ZTc0ZGIyMTBiZTJjNDY5OTQxMjdhZGM2ZGI1YmUzZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CbGl0MTEuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L0JsaXQxMS5oCkBAIC0xODEsNyArMTgxLDYgQEAgY2xhc3MgQmxpdDExIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCiAgICAgfTsKIAogICAgIGdsOjpFcnJvciBpbml0UmVzb3VyY2VzKCk7Ci0gICAgdm9p
ZCBmcmVlUmVzb3VyY2VzKCk7CiAKICAgICBTaGFkZXJTdXBwb3J0IGdldFNoYWRlclN1cHBvcnQo
Y29uc3QgU2hhZGVyICZzaGFkZXIpOwogCkBAIC0yNTQsNiArMjUzLDcgQEAgY2xhc3MgQmxpdDEx
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICB2b2lkIGNsZWFyU2hhZGVyTWFwKCk7CiAgICAg
dm9pZCByZWxlYXNlUmVzb2x2ZURlcHRoU3RlbmNpbFJlc291cmNlcygpOworICAgIGdsOjpFcnJv
ciBpbml0UmVzb2x2ZURlcHRoT25seShjb25zdCBkM2QxMTo6Rm9ybWF0ICZmb3JtYXQsIGNvbnN0
IGdsOjpFeHRlbnRzICZleHRlbnRzKTsKICAgICBnbDo6RXJyb3IgaW5pdFJlc29sdmVEZXB0aFN0
ZW5jaWwoY29uc3QgZ2w6OkV4dGVudHMgJmV4dGVudHMpOwogCiAgICAgUmVuZGVyZXIxMSAqbVJl
bmRlcmVyOwpAQCAtMjYyLDEyICsyNjIsMTIgQEAgY2xhc3MgQmxpdDExIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCiAgICAgc3RkOjptYXA8U3dpenpsZVNoYWRlclR5cGUsIFNoYWRlcj4gbVN3aXp6bGVT
aGFkZXJNYXA7CiAKICAgICBib29sIG1SZXNvdXJjZXNJbml0aWFsaXplZDsKLSAgICBJRDNEMTFC
dWZmZXIgKm1WZXJ0ZXhCdWZmZXI7Ci0gICAgSUQzRDExU2FtcGxlclN0YXRlICptUG9pbnRTYW1w
bGVyOwotICAgIElEM0QxMVNhbXBsZXJTdGF0ZSAqbUxpbmVhclNhbXBsZXI7Ci0gICAgSUQzRDEx
UmFzdGVyaXplclN0YXRlICptU2Npc3NvckVuYWJsZWRSYXN0ZXJpemVyU3RhdGU7Ci0gICAgSUQz
RDExUmFzdGVyaXplclN0YXRlICptU2Npc3NvckRpc2FibGVkUmFzdGVyaXplclN0YXRlOwotICAg
IElEM0QxMURlcHRoU3RlbmNpbFN0YXRlICptRGVwdGhTdGVuY2lsU3RhdGU7CisgICAgYW5nbGU6
OkNvbVB0cjxJRDNEMTFCdWZmZXI+IG1WZXJ0ZXhCdWZmZXI7CisgICAgYW5nbGU6OkNvbVB0cjxJ
RDNEMTFTYW1wbGVyU3RhdGU+IG1Qb2ludFNhbXBsZXI7CisgICAgYW5nbGU6OkNvbVB0cjxJRDNE
MTFTYW1wbGVyU3RhdGU+IG1MaW5lYXJTYW1wbGVyOworICAgIGFuZ2xlOjpDb21QdHI8SUQzRDEx
UmFzdGVyaXplclN0YXRlPiBtU2Npc3NvckVuYWJsZWRSYXN0ZXJpemVyU3RhdGU7CisgICAgYW5n
bGU6OkNvbVB0cjxJRDNEMTFSYXN0ZXJpemVyU3RhdGU+IG1TY2lzc29yRGlzYWJsZWRSYXN0ZXJp
emVyU3RhdGU7CisgICAgYW5nbGU6OkNvbVB0cjxJRDNEMTFEZXB0aFN0ZW5jaWxTdGF0ZT4gbURl
cHRoU3RlbmNpbFN0YXRlOwogCiAgICAgZDNkMTE6OkxhenlJbnB1dExheW91dCBtUXVhZDJESUw7
CiAgICAgZDNkMTE6OkxhenlTaGFkZXI8SUQzRDExVmVydGV4U2hhZGVyPiBtUXVhZDJEVlM7CkBA
IC0yNzksMTUgKzI3OSwxNyBAQCBjbGFzcyBCbGl0MTEgOiBhbmdsZTo6Tm9uQ29weWFibGUKIAog
ICAgIGQzZDExOjpMYXp5QmxlbmRTdGF0ZSBtQWxwaGFNYXNrQmxlbmRTdGF0ZTsKIAotICAgIElE
M0QxMUJ1ZmZlciAqbVN3aXp6bGVDQjsKKyAgICBhbmdsZTo6Q29tUHRyPElEM0QxMUJ1ZmZlcj4g
bVN3aXp6bGVDQjsKIAogICAgIGQzZDExOjpMYXp5U2hhZGVyPElEM0QxMVZlcnRleFNoYWRlcj4g
bVJlc29sdmVEZXB0aFN0ZW5jaWxWUzsKICAgICBkM2QxMTo6TGF6eVNoYWRlcjxJRDNEMTFQaXhl
bFNoYWRlcj4gbVJlc29sdmVEZXB0aFBTOwogICAgIGQzZDExOjpMYXp5U2hhZGVyPElEM0QxMVBp
eGVsU2hhZGVyPiBtUmVzb2x2ZURlcHRoU3RlbmNpbFBTOwogICAgIGQzZDExOjpMYXp5U2hhZGVy
PElEM0QxMVBpeGVsU2hhZGVyPiBtUmVzb2x2ZVN0ZW5jaWxQUzsKLSAgICBJRDNEMTFTaGFkZXJS
ZXNvdXJjZVZpZXcgKm1TdGVuY2lsU1JWOworICAgIGFuZ2xlOjpDb21QdHI8SUQzRDExU2hhZGVy
UmVzb3VyY2VWaWV3PiBtU3RlbmNpbFNSVjsKICAgICBUZXh0dXJlSGVscGVyMTEgbVJlc29sdmVk
RGVwdGhTdGVuY2lsOwotICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKm1SZXNvbHZlZERlcHRo
U3RlbmNpbFJUVmlldzsKKyAgICBhbmdsZTo6Q29tUHRyPElEM0QxMVJlbmRlclRhcmdldFZpZXc+
IG1SZXNvbHZlZERlcHRoU3RlbmNpbFJUVmlldzsKKyAgICBUZXh0dXJlSGVscGVyMTEgbVJlc29s
dmVkRGVwdGg7CisgICAgYW5nbGU6OkNvbVB0cjxJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3PiBtUmVz
b2x2ZWREZXB0aERTVmlldzsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9C
dWZmZXIxMS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL0J1ZmZlcjExLmNwcAppbmRleCA3MzE2ODBkYzhlNzg5ZWQ2NjgxYTM5OTYy
NjAwNzcyZjc4ZGIxMDEzLi5mZTE0ZGRlZWNkMjc5NmQ5M2JmMTRjZWI2ZDc5Y2QwMDA3ODE3ZWRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL0J1ZmZlcjExLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0J1ZmZlcjExLmNwcApAQCAtMzgsNiArMzgs
MjggQEAgZW51bSBjbGFzcyBDb3B5UmVzdWx0CiAgICAgTk9UX1JFQ1JFQVRFRCwKIH07CiAKK3Zv
aWQgQ2FsY3VsYXRlQ29uc3RhbnRCdWZmZXJQYXJhbXMoR0xpbnRwdHIgb2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgKm91dEZpcnN0Q29uc3RhbnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgKm91dE51bUNvbnN0YW50cykKK3sKKyAg
ICAvLyBUaGUgb2Zmc2V0IG11c3QgYmUgYWxpZ25lZCB0byAyNTYgYnl0ZXMgKHNob3VsZCBoYXZl
IGJlZW4gZW5mb3JjZWQgYnkgZ2xCaW5kQnVmZmVyUmFuZ2UpLgorICAgIEFTU0VSVChvZmZzZXQg
JSAyNTYgPT0gMCk7CisKKyAgICAvLyBmaXJzdENvbnN0YW50IGFuZCBudW1Db25zdGFudHMgYXJl
IGV4cHJlc3NlZCBpbiBjb25zdGFudHMgb2YgMTYtYnl0ZXMuIEZ1cnRoZXJtb3JlIHRoZXkgbXVz
dAorICAgIC8vIGJlIGEgbXVsdGlwbGUgb2YgMTYgY29uc3RhbnRzLgorICAgICpvdXRGaXJzdENv
bnN0YW50ID0gc3RhdGljX2Nhc3Q8VUlOVD4ob2Zmc2V0IC8gMTYpOworCisgICAgLy8gVGhlIEdM
IHNpemUgaXMgbm90IHJlcXVpcmVkIHRvIGJlIGFsaWduZWQgdG8gYSAyNTYgYnl0ZXMgYm91bmRh
cnkuCisgICAgLy8gUm91bmQgdGhlIHNpemUgdXAgdG8gYSAyNTYgYnl0ZXMgYm91bmRhcnkgdGhl
biBleHByZXNzIHRoZSByZXN1bHRzIGluIGNvbnN0YW50cyBvZiAxNi1ieXRlcy4KKyAgICAqb3V0
TnVtQ29uc3RhbnRzID0gc3RhdGljX2Nhc3Q8VUlOVD4ocng6OnJvdW5kVXAoc2l6ZSwgc3RhdGlj
X2Nhc3Q8R0xzaXplaXB0cj4oMjU2KSkgLyAxNik7CisKKyAgICAvLyBTaW5jZSB0aGUgc2l6ZSBp
cyByb3VuZGVkIHVwLCBmaXJzdENvbnN0YW50ICsgbnVtQ29uc3RhbnRzIG1heSBiZSBiaWdnZXIg
dGhhbiB0aGUgYWN0dWFsIHNpemUKKyAgICAvLyBvZiB0aGUgYnVmZmVyLiBUaGlzIGJlaGF2aW91
ciBpcyBleHBsaWN0bHkgYWxsb3dlZCBhY2NvcmRpbmcgdG8gdGhlIGRvY3VtZW50YXRpb24gb24K
KyAgICAvLyBJRDNEMTFEZXZpY2VDb250ZXh0MTo6UFNTZXRDb25zdGFudEJ1ZmZlcnMxCisgICAg
Ly8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0
b3AvaGg0MDQ2NDklMjh2PXZzLjg1JTI5LmFzcHgKK30KKwogfSAgLy8gYW5vbnltb3VzIG5hbWVz
cGFjZQogCiBuYW1lc3BhY2UgZ2xfZDNkMTEKQEAgLTEyMSw3ICsxNDMsNyBAQCBjbGFzcyBCdWZm
ZXIxMTo6TmF0aXZlU3RvcmFnZSA6IHB1YmxpYyBCdWZmZXIxMTo6QnVmZmVyU3RvcmFnZQogICBw
dWJsaWM6CiAgICAgTmF0aXZlU3RvcmFnZShSZW5kZXJlcjExICpyZW5kZXJlciwKICAgICAgICAg
ICAgICAgICAgIEJ1ZmZlclVzYWdlIHVzYWdlLAotICAgICAgICAgICAgICAgICAgY29uc3QgYW5n
bGU6OkJyb2FkY2FzdENoYW5uZWwgKm9uU3RvcmFnZUNoYW5nZWQpOworICAgICAgICAgICAgICAg
ICAgY29uc3QgYW5nbGU6OkJyb2FkY2FzdENoYW5uZWw8PiAqb25TdG9yYWdlQ2hhbmdlZCk7CiAg
ICAgfk5hdGl2ZVN0b3JhZ2UoKSBvdmVycmlkZTsKIAogICAgIGJvb2wgaXNNYXBwYWJsZShHTGJp
dGZpZWxkIGFjY2VzcykgY29uc3Qgb3ZlcnJpZGU7CkBAIC0xNDksNyArMTcxLDcgQEAgY2xhc3Mg
QnVmZmVyMTE6Ok5hdGl2ZVN0b3JhZ2UgOiBwdWJsaWMgQnVmZmVyMTE6OkJ1ZmZlclN0b3JhZ2UK
ICAgICB2b2lkIGNsZWFyU1JWcygpOwogCiAgICAgSUQzRDExQnVmZmVyICptTmF0aXZlU3RvcmFn
ZTsKLSAgICBjb25zdCBhbmdsZTo6QnJvYWRjYXN0Q2hhbm5lbCAqbU9uU3RvcmFnZUNoYW5nZWQ7
CisgICAgY29uc3QgYW5nbGU6OkJyb2FkY2FzdENoYW5uZWw8PiAqbU9uU3RvcmFnZUNoYW5nZWQ7
CiAgICAgc3RkOjptYXA8RFhHSV9GT1JNQVQsIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqPiBt
QnVmZmVyUmVzb3VyY2VWaWV3czsKIH07CiAKQEAgLTE4Myw4ICsyMDUsOCBAQCBjbGFzcyBCdWZm
ZXIxMTo6RW11bGF0ZWRJbmRleGVkU3RvcmFnZSA6IHB1YmxpYyBCdWZmZXIxMTo6QnVmZmVyU3Rv
cmFnZQogCiAgIHByaXZhdGU6CiAgICAgSUQzRDExQnVmZmVyICptTmF0aXZlU3RvcmFnZTsgICAg
ICAgLy8gY29udGFpbnMgZXhwYW5kZWQgZGF0YSBmb3IgdXNlIGJ5IEQzRAotICAgIE1lbW9yeUJ1
ZmZlciBtTWVtb3J5QnVmZmVyOyAgICAgICAgIC8vIG9yaWdpbmFsIGRhdGEgKG5vdCBleHBhbmRl
ZCkKLSAgICBNZW1vcnlCdWZmZXIgbUluZGljZXNNZW1vcnlCdWZmZXI7ICAvLyBpbmRpY2VzIGRh
dGEKKyAgICBhbmdsZTo6TWVtb3J5QnVmZmVyIG1NZW1vcnlCdWZmZXI7ICAvLyBvcmlnaW5hbCBk
YXRhIChub3QgZXhwYW5kZWQpCisgICAgYW5nbGU6Ok1lbW9yeUJ1ZmZlciBtSW5kaWNlc01lbW9y
eUJ1ZmZlcjsgIC8vIGluZGljZXMgZGF0YQogfTsKIAogLy8gUGFjayBzdG9yYWdlIHJlcHJlc2Vu
dHMgaW50ZXJuYWwgc3RvcmFnZSBmb3IgcGFjayBidWZmZXJzLiBXZSBpbXBsZW1lbnQgcGFjayBi
dWZmZXJzCkBAIC0yMTUsNyArMjM3LDcgQEAgY2xhc3MgQnVmZmVyMTE6OlBhY2tTdG9yYWdlIDog
cHVibGljIEJ1ZmZlcjExOjpCdWZmZXJTdG9yYWdlCiAgICAgZ2w6OkVycm9yIGZsdXNoUXVldWVk
UGFja0NvbW1hbmQoKTsKIAogICAgIFRleHR1cmVIZWxwZXIxMSBtU3RhZ2luZ1RleHR1cmU7Ci0g
ICAgTWVtb3J5QnVmZmVyIG1NZW1vcnlCdWZmZXI7CisgICAgYW5nbGU6Ok1lbW9yeUJ1ZmZlciBt
TWVtb3J5QnVmZmVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWNrUGl4ZWxzUGFyYW1zPiBtUXVl
dWVkUGFja0NvbW1hbmQ7CiAgICAgUGFja1BpeGVsc1BhcmFtcyBtUGFja1BhcmFtczsKICAgICBi
b29sIG1EYXRhTW9kaWZpZWQ7CkBAIC0yNDMsMTQgKzI2NSwxNCBAQCBjbGFzcyBCdWZmZXIxMTo6
U3lzdGVtTWVtb3J5U3RvcmFnZSA6IHB1YmxpYyBCdWZmZXIxMTo6QnVmZmVyU3RvcmFnZQogICAg
ICAgICAgICAgICAgICAgdWludDhfdCAqKm1hcFBvaW50ZXJPdXQpIG92ZXJyaWRlOwogICAgIHZv
aWQgdW5tYXAoKSBvdmVycmlkZTsKIAotICAgIE1lbW9yeUJ1ZmZlciAqZ2V0U3lzdGVtQ29weSgp
IHsgcmV0dXJuICZtU3lzdGVtQ29weTsgfQorICAgIGFuZ2xlOjpNZW1vcnlCdWZmZXIgKmdldFN5
c3RlbUNvcHkoKSB7IHJldHVybiAmbVN5c3RlbUNvcHk7IH0KIAogICBwcm90ZWN0ZWQ6Ci0gICAg
TWVtb3J5QnVmZmVyIG1TeXN0ZW1Db3B5OworICAgIGFuZ2xlOjpNZW1vcnlCdWZmZXIgbVN5c3Rl
bUNvcHk7CiB9OwogCi1CdWZmZXIxMTo6QnVmZmVyMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIpCi0g
ICAgOiBCdWZmZXJEM0QocmVuZGVyZXIpLAorQnVmZmVyMTE6OkJ1ZmZlcjExKGNvbnN0IGdsOjpC
dWZmZXJTdGF0ZSAmc3RhdGUsIFJlbmRlcmVyMTEgKnJlbmRlcmVyKQorICAgIDogQnVmZmVyRDNE
KHN0YXRlLCByZW5kZXJlciksCiAgICAgICBtUmVuZGVyZXIocmVuZGVyZXIpLAogICAgICAgbVNp
emUoMCksCiAgICAgICBtTWFwcGVkU3RvcmFnZShudWxscHRyKSwKQEAgLTI3NywxMCArMjk5LDE0
IEBAIEJ1ZmZlcjExOjp+QnVmZmVyMTEoKQogICAgIG1SZW5kZXJlci0+b25CdWZmZXJEZWxldGUo
dGhpcyk7CiB9CiAKLWdsOjpFcnJvciBCdWZmZXIxMTo6c2V0RGF0YShHTGVudW0gdGFyZ2V0LCBj
b25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgR0xlbnVtIHVzYWdlKQorZ2w6OkVycm9yIEJ1
ZmZlcjExOjpzZXREYXRhKENvbnRleHRJbXBsICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgdm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdXNhZ2UpCiB7CiAgICAgdXBkYXRl
RDNEQnVmZmVyVXNhZ2UodXNhZ2UpOwotICAgIEFOR0xFX1RSWShzZXRTdWJEYXRhKHRhcmdldCwg
ZGF0YSwgc2l6ZSwgMCkpOworICAgIEFOR0xFX1RSWShzZXRTdWJEYXRhKGNvbnRleHQsIHRhcmdl
dCwgZGF0YSwgc2l6ZSwgMCkpOwogICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCkBAIC0z
MDIsNyArMzI4LDExIEBAIGdsOjpFcnJvck9yUmVzdWx0PEJ1ZmZlcjExOjpTeXN0ZW1NZW1vcnlT
dG9yYWdlICo+IEJ1ZmZlcjExOjpnZXRTeXN0ZW1NZW1vcnlTdG9yCiAgICAgcmV0dXJuIEdldEFz
PFN5c3RlbU1lbW9yeVN0b3JhZ2U+KHN0b3JhZ2UpOwogfQogCi1nbDo6RXJyb3IgQnVmZmVyMTE6
OnNldFN1YkRhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUs
IHNpemVfdCBvZmZzZXQpCitnbDo6RXJyb3IgQnVmZmVyMTE6OnNldFN1YkRhdGEoQ29udGV4dElt
cGwgKiAvKmNvbnRleHQqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCkKIHsKICAgICBzaXplX3QgcmVxdWly
ZWRTaXplID0gc2l6ZSArIG9mZnNldDsKIApAQCAtMzExLDkgKzM0MSwyMyBAQCBnbDo6RXJyb3Ig
QnVmZmVyMTE6OnNldFN1YkRhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6
ZV90IHNpemUsIHNpegogICAgICAgICAvLyBVc2Ugc3lzdGVtIG1lbW9yeSBzdG9yYWdlIGZvciBk
eW5hbWljIGJ1ZmZlcnMuCiAgICAgICAgIC8vIFRyeSB1c2luZyBhIGNvbnN0YW50IHN0b3JhZ2Ug
Zm9yIGNvbnN0YW50IGJ1ZmZlcnMKICAgICAgICAgQnVmZmVyU3RvcmFnZSAqd3JpdGVCdWZmZXIg
PSBudWxscHRyOwotICAgICAgICBpZiAodGFyZ2V0ID09IEdMX1VOSUZPUk1fQlVGRkVSICYmIG9m
ZnNldCA9PSAwICYmIHNpemUgPj0gbVNpemUpCisgICAgICAgIGlmICh0YXJnZXQgPT0gR0xfVU5J
Rk9STV9CVUZGRVIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2V0
QnVmZmVyU3RvcmFnZShCVUZGRVJfVVNBR0VfVU5JRk9STSksIHdyaXRlQnVmZmVyKTsKKyAgICAg
ICAgICAgIC8vIElmIHdlIGFyZSBhIHZlcnkgbGFyZ2UgdW5pZm9ybSBidWZmZXIsIGtlZXAgc3lz
dGVtIG1lbW9yeSBzdG9yYWdlIGFyb3VuZCBzbyB0aGF0IHdlCisgICAgICAgICAgICAvLyBhcmVu
J3QgZm9yY2VkIHRvIHJlYWQgYmFjayBmcm9tIGEgY29uc3RhbnQgYnVmZmVyLiBXZSBhbHNvIGNo
ZWNrIHRoZSB3b3JrYXJvdW5kIGZvcgorICAgICAgICAgICAgLy8gSW50ZWwgLSB0aGlzIHJlcXVp
cmVzIHVzIHRvIHVzZSBzeXN0ZW0gbWVtb3J5IHNvIHdlIGRvbid0IGVuZCB1cCBoYXZpbmcgdG8g
Y29weSBmcm9tCisgICAgICAgICAgICAvLyBhIGNvbnN0YW50IGJ1ZmZlciB0byBhIHN0YWdpbmcg
YnVmZmVyLgorICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogVXNlIENvbnRleHQgY2Fwcy4K
KyAgICAgICAgICAgIGlmIChvZmZzZXQgPT0gMCAmJiBzaXplID49IG1TaXplICYmCisgICAgICAg
ICAgICAgICAgc2l6ZSA8PSBzdGF0aWNfY2FzdDxVSU5UPihtUmVuZGVyZXItPmdldE5hdGl2ZUNh
cHMoKS5tYXhVbmlmb3JtQmxvY2tTaXplKSAmJgorICAgICAgICAgICAgICAgICFtUmVuZGVyZXIt
PmdldFdvcmthcm91bmRzKCkudXNlU3lzdGVtTWVtb3J5Rm9yQ29uc3RhbnRCdWZmZXJzKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2V0QnVmZmVyU3Rv
cmFnZShCVUZGRVJfVVNBR0VfVU5JRk9STSksIHdyaXRlQnVmZmVyKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBBTkdMRV9U
UllfUkVTVUxUKGdldFN5c3RlbU1lbW9yeVN0b3JhZ2UoKSwgd3JpdGVCdWZmZXIpOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHN1cHBvcnRzRGlyZWN0QmluZGlu
ZygpKQogICAgICAgICB7CkBAIC0zNDQsNyArMzg4LDggQEAgZ2w6OkVycm9yIEJ1ZmZlcjExOjpz
ZXRTdWJEYXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBz
aXoKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlcjExOjpj
b3B5U3ViRGF0YShCdWZmZXJJbXBsICpzb3VyY2UsCitnbDo6RXJyb3IgQnVmZmVyMTE6OmNvcHlT
dWJEYXRhKENvbnRleHRJbXBsICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCdWZmZXJJbXBsICpzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50cHRyIHNvdXJjZU9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnRwdHIgZGVzdE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaXB0ciBzaXplKQpAQCAtNDA3LDE1ICs0NTIsMTkgQEAgZ2w6OkVycm9yIEJ1ZmZlcjExOjpj
b3B5U3ViRGF0YShCdWZmZXJJbXBsICpzb3VyY2UsCiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CiB9CiAKLWdsOjpFcnJvciBCdWZmZXIxMTo6bWFwKEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1h
cFB0cikKK2dsOjpFcnJvciBCdWZmZXIxMTo6bWFwKENvbnRleHRJbXBsICpjb250ZXh0LCBHTGVu
dW0gYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpCiB7CiAgICAgLy8gR0xfT0VTX21hcGJ1ZmZlciB1
c2VzIGFuIGVudW0gaW5zdGVhZCBvZiBhIGJpdGZpZWxkIGZvciBpdCdzIGFjY2VzcywgY29udmVy
dCB0byBhIGJpdGZpZWxkCiAgICAgLy8gYW5kIGNhbGwgbWFwUmFuZ2UuCiAgICAgQVNTRVJUKGFj
Y2VzcyA9PSBHTF9XUklURV9PTkxZX09FUyk7Ci0gICAgcmV0dXJuIG1hcFJhbmdlKDAsIG1TaXpl
LCBHTF9NQVBfV1JJVEVfQklULCBtYXBQdHIpOworICAgIHJldHVybiBtYXBSYW5nZShjb250ZXh0
LCAwLCBtU2l6ZSwgR0xfTUFQX1dSSVRFX0JJVCwgbWFwUHRyKTsKIH0KIAotZ2w6OkVycm9yIEJ1
ZmZlcjExOjptYXBSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBHTGJpdGZpZWxk
IGFjY2VzcywgR0x2b2lkICoqbWFwUHRyKQorZ2w6OkVycm9yIEJ1ZmZlcjExOjptYXBSYW5nZShD
b250ZXh0SW1wbCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqKm1hcFB0cikKIHsKICAgICBBU1NFUlQoIW1NYXBw
ZWRTdG9yYWdlKTsKIApAQCAtNDU1LDcgKzUwNCw3IEBAIGdsOjpFcnJvciBCdWZmZXIxMTo6bWFw
UmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nlc3MsIEdM
CiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBCdWZmZXIxMTo6dW5t
YXAoR0xib29sZWFuICpyZXN1bHQpCitnbDo6RXJyb3IgQnVmZmVyMTE6OnVubWFwKENvbnRleHRJ
bXBsICpjb250ZXh0LCBHTGJvb2xlYW4gKnJlc3VsdCkKIHsKICAgICBBU1NFUlQobU1hcHBlZFN0
b3JhZ2UpOwogICAgIG1NYXBwZWRTdG9yYWdlLT51bm1hcCgpOwpAQCAtNTIyLDE2ICs1NzEsMzIg
QEAgZ2w6OkVycm9yIEJ1ZmZlcjExOjpjaGVja0ZvckRlYWxsb2NhdGlvbihCdWZmZXJVc2FnZSB1
c2FnZSkKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlcjEx
OjptYXJrQnVmZmVyVXNhZ2UoQnVmZmVyVXNhZ2UgdXNhZ2UpCisvLyBLZWVwIHN5c3RlbSBtZW1v
cnkgd2hlbiB3ZSBhcmUgdXNpbmcgaXQgZm9yIHRoZSBjYW5vbmljYWwgdmVyc2lvbiBvZiBkYXRh
LgorYm9vbCBCdWZmZXIxMTo6Y2FuRGVhbGxvY2F0ZVN5c3RlbU1lbW9yeSgpIGNvbnN0Cit7Cisg
ICAgLy8gTXVzdCBrZWVwIHN5c3RlbSBtZW1vcnkgb24gSW50ZWwuCisgICAgaWYgKG1SZW5kZXJl
ci0+Z2V0V29ya2Fyb3VuZHMoKS51c2VTeXN0ZW1NZW1vcnlGb3JDb25zdGFudEJ1ZmZlcnMpCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuICghbUJ1ZmZl
clN0b3JhZ2VzW0JVRkZFUl9VU0FHRV9VTklGT1JNXSB8fAorICAgICAgICAgICAgbVNpemUgPD0g
bVJlbmRlcmVyLT5nZXROYXRpdmVDYXBzKCkubWF4VW5pZm9ybUJsb2NrU2l6ZSk7Cit9CisKK3Zv
aWQgQnVmZmVyMTE6Om1hcmtCdWZmZXJVc2FnZShCdWZmZXJVc2FnZSB1c2FnZSkKIHsKICAgICBt
SWRsZW5lc3NbdXNhZ2VdID0gMDsKK30KIAotICAgIGlmICh1c2FnZSAhPSBCVUZGRVJfVVNBR0Vf
U1lTVEVNX01FTU9SWSkKK2dsOjpFcnJvciBCdWZmZXIxMTo6Z2FyYmFnZUNvbGxlY3Rpb24oQnVm
ZmVyVXNhZ2UgY3VycmVudFVzYWdlKQoreworICAgIGlmIChjdXJyZW50VXNhZ2UgIT0gQlVGRkVS
X1VTQUdFX1NZU1RFTV9NRU1PUlkgJiYgY2FuRGVhbGxvY2F0ZVN5c3RlbU1lbW9yeSgpKQogICAg
IHsKICAgICAgICAgQU5HTEVfVFJZKGNoZWNrRm9yRGVhbGxvY2F0aW9uKEJVRkZFUl9VU0FHRV9T
WVNURU1fTUVNT1JZKSk7CiAgICAgfQogCi0gICAgaWYgKHVzYWdlICE9IEJVRkZFUl9VU0FHRV9T
VEFHSU5HKQorICAgIGlmIChjdXJyZW50VXNhZ2UgIT0gQlVGRkVSX1VTQUdFX1NUQUdJTkcpCiAg
ICAgewogICAgICAgICBBTkdMRV9UUlkoY2hlY2tGb3JEZWFsbG9jYXRpb24oQlVGRkVSX1VTQUdF
X1NUQUdJTkcpKTsKICAgICB9CkBAIC01NjUsMjAgKzYzMCwyOSBAQCBnbDo6RXJyb3JPclJlc3Vs
dDxJRDNEMTFCdWZmZXIgKj4gQnVmZmVyMTE6OmdldEVtdWxhdGVkSW5kZXhlZEJ1ZmZlcigKICAg
ICByZXR1cm4gbmF0aXZlU3RvcmFnZTsKIH0KIAotZ2w6OkVycm9yT3JSZXN1bHQ8SUQzRDExQnVm
ZmVyICo+IEJ1ZmZlcjExOjpnZXRDb25zdGFudEJ1ZmZlclJhbmdlKEdMaW50cHRyIG9mZnNldCwg
R0xzaXplaXB0ciBzaXplKQorZ2w6OkVycm9yIEJ1ZmZlcjExOjpnZXRDb25zdGFudEJ1ZmZlclJh
bmdlKEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpcHRyIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSUQzRDExQnVmZmVyICoqYnVmZmVyT3V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgKmZpcnN0Q29uc3RhbnRPdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCAqbnVtQ29uc3RhbnRzT3V0
KQogewogICAgIEJ1ZmZlclN0b3JhZ2UgKmJ1ZmZlclN0b3JhZ2UgPSBudWxscHRyOwogCiAgICAg
aWYgKG9mZnNldCA9PSAwIHx8IG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKS5z
dXBwb3J0c0NvbnN0YW50QnVmZmVyT2Zmc2V0cykKICAgICB7CiAgICAgICAgIEFOR0xFX1RSWV9S
RVNVTFQoZ2V0QnVmZmVyU3RvcmFnZShCVUZGRVJfVVNBR0VfVU5JRk9STSksIGJ1ZmZlclN0b3Jh
Z2UpOworICAgICAgICBDYWxjdWxhdGVDb25zdGFudEJ1ZmZlclBhcmFtcyhvZmZzZXQsIHNpemUs
IGZpcnN0Q29uc3RhbnRPdXQsIG51bUNvbnN0YW50c091dCk7CiAgICAgfQogICAgIGVsc2UKICAg
ICB7CiAgICAgICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2V0Q29uc3RhbnRCdWZmZXJSYW5nZVN0b3Jh
Z2Uob2Zmc2V0LCBzaXplKSwgYnVmZmVyU3RvcmFnZSk7CisgICAgICAgICpmaXJzdENvbnN0YW50
T3V0ID0gMDsKKyAgICAgICAgKm51bUNvbnN0YW50c091dCAgPSAwOwogICAgIH0KIAotICAgIHJl
dHVybiBHZXRBczxOYXRpdmVTdG9yYWdlPihidWZmZXJTdG9yYWdlKS0+Z2V0TmF0aXZlU3RvcmFn
ZSgpOworICAgICpidWZmZXJPdXQgPSBHZXRBczxOYXRpdmVTdG9yYWdlPihidWZmZXJTdG9yYWdl
KS0+Z2V0TmF0aXZlU3RvcmFnZSgpOworCisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
IGdsOjpFcnJvck9yUmVzdWx0PElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqPiBCdWZmZXIxMTo6
Z2V0U1JWKERYR0lfRk9STUFUIHNydkZvcm1hdCkKQEAgLTYyOCwxNCArNzAyLDE4IEBAIGdsOjpF
cnJvck9yUmVzdWx0PEJ1ZmZlcjExOjpCdWZmZXJTdG9yYWdlICo+IEJ1ZmZlcjExOjpnZXRCdWZm
ZXJTdG9yYWdlKEJ1ZmZlclVzCiAgICAgICAgIG5ld1N0b3JhZ2UgPSBhbGxvY2F0ZVN0b3JhZ2Uo
dXNhZ2UpOwogICAgIH0KIAorICAgIG1hcmtCdWZmZXJVc2FnZSh1c2FnZSk7CisKICAgICAvLyBy
ZXNpemUgYnVmZmVyCiAgICAgaWYgKG5ld1N0b3JhZ2UtPmdldFNpemUoKSA8IG1TaXplKQogICAg
IHsKICAgICAgICAgQU5HTEVfVFJZKG5ld1N0b3JhZ2UtPnJlc2l6ZShtU2l6ZSwgdHJ1ZSkpOwog
ICAgIH0KIAorICAgIEFTU0VSVChuZXdTdG9yYWdlKTsKKwogICAgIEFOR0xFX1RSWSh1cGRhdGVC
dWZmZXJTdG9yYWdlKG5ld1N0b3JhZ2UsIDAsIG1TaXplKSk7Ci0gICAgQU5HTEVfVFJZKG1hcmtC
dWZmZXJVc2FnZSh1c2FnZSkpOworICAgIEFOR0xFX1RSWShnYXJiYWdlQ29sbGVjdGlvbih1c2Fn
ZSkpOwogCiAgICAgcmV0dXJuIG5ld1N0b3JhZ2U7CiB9CkBAIC02NzksNiArNzU3LDggQEAgZ2w6
OkVycm9yT3JSZXN1bHQ8QnVmZmVyMTE6OkJ1ZmZlclN0b3JhZ2UgKj4gQnVmZmVyMTE6OmdldENv
bnN0YW50QnVmZmVyUmFuZ2VTdG8KICAgICAgICAgbmV3U3RvcmFnZSAgICAgICAgICAgPSBjYWNo
ZUVudHJ5LT5zdG9yYWdlOwogICAgIH0KIAorICAgIG1hcmtCdWZmZXJVc2FnZShCVUZGRVJfVVNB
R0VfVU5JRk9STSk7CisKICAgICBpZiAobmV3U3RvcmFnZS0+Z2V0U2l6ZSgpIDwgc3RhdGljX2Nh
c3Q8c2l6ZV90PihzaXplKSkKICAgICB7CiAgICAgICAgIHNpemVfdCBtYXhpbXVtQWxsb3dlZEFk
ZGl0aW9uYWxTaXplID0gMiAqIGdldFNpemUoKTsKQEAgLTcxMyw3ICs3OTMsNyBAQCBnbDo6RXJy
b3JPclJlc3VsdDxCdWZmZXIxMTo6QnVmZmVyU3RvcmFnZSAqPiBCdWZmZXIxMTo6Z2V0Q29uc3Rh
bnRCdWZmZXJSYW5nZVN0bwogICAgIH0KIAogICAgIEFOR0xFX1RSWSh1cGRhdGVCdWZmZXJTdG9y
YWdlKG5ld1N0b3JhZ2UsIG9mZnNldCwgc2l6ZSkpOwotICAgIEFOR0xFX1RSWShtYXJrQnVmZmVy
VXNhZ2UoQlVGRkVSX1VTQUdFX1VOSUZPUk0pKTsKKyAgICBBTkdMRV9UUlkoZ2FyYmFnZUNvbGxl
Y3Rpb24oQlVGRkVSX1VTQUdFX1VOSUZPUk0pKTsKICAgICByZXR1cm4gbmV3U3RvcmFnZTsKIH0K
IApAQCAtNzI0LDYgKzgwNCw4IEBAIGdsOjpFcnJvciBCdWZmZXIxMTo6dXBkYXRlQnVmZmVyU3Rv
cmFnZShCdWZmZXJTdG9yYWdlICpzdG9yYWdlLAogICAgIEJ1ZmZlclN0b3JhZ2UgKmxhdGVzdEJ1
ZmZlciA9IG51bGxwdHI7CiAgICAgQU5HTEVfVFJZX1JFU1VMVChnZXRMYXRlc3RCdWZmZXJTdG9y
YWdlKCksIGxhdGVzdEJ1ZmZlcik7CiAKKyAgICBBU1NFUlQoc3RvcmFnZSk7CisKICAgICBpZiAo
bGF0ZXN0QnVmZmVyICYmIGxhdGVzdEJ1ZmZlci0+Z2V0RGF0YVJldmlzaW9uKCkgPiBzdG9yYWdl
LT5nZXREYXRhUmV2aXNpb24oKSkKICAgICB7CiAgICAgICAgIC8vIENvcHkgdGhyb3VnaCBhIHN0
YWdpbmcgYnVmZmVyIGlmIHdlJ3JlIGNvcHlpbmcgZnJvbSBvciB0byBhIG5vbi1zdGFnaW5nLCBt
YXBwYWJsZQpAQCAtODIwLDEyICs5MDIsMTIgQEAgdm9pZCBCdWZmZXIxMTo6aW52YWxpZGF0ZVN0
YXRpY0RhdGEoKQogICAgIG1TdGF0aWNCcm9hZGNhc3RDaGFubmVsLnNpZ25hbCgpOwogfQogCi1h
bmdsZTo6QnJvYWRjYXN0Q2hhbm5lbCAqQnVmZmVyMTE6OmdldFN0YXRpY0Jyb2FkY2FzdENoYW5u
ZWwoKQorYW5nbGU6OkJyb2FkY2FzdENoYW5uZWw8PiAqQnVmZmVyMTE6OmdldFN0YXRpY0Jyb2Fk
Y2FzdENoYW5uZWwoKQogewogICAgIHJldHVybiAmbVN0YXRpY0Jyb2FkY2FzdENoYW5uZWw7CiB9
CiAKLWFuZ2xlOjpCcm9hZGNhc3RDaGFubmVsICpCdWZmZXIxMTo6Z2V0RGlyZWN0QnJvYWRjYXN0
Q2hhbm5lbCgpCithbmdsZTo6QnJvYWRjYXN0Q2hhbm5lbDw+ICpCdWZmZXIxMTo6Z2V0RGlyZWN0
QnJvYWRjYXN0Q2hhbm5lbCgpCiB7CiAgICAgcmV0dXJuICZtRGlyZWN0QnJvYWRjYXN0Q2hhbm5l
bDsKIH0KQEAgLTg0MSwxMCArOTIzLDE0IEBAIGdsOjpFcnJvciBCdWZmZXIxMTo6QnVmZmVyU3Rv
cmFnZTo6c2V0RGF0YShjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgb2Zmc2V0LCBzCiB7CiAg
ICAgQVNTRVJUKGlzTWFwcGFibGUoR0xfTUFQX1dSSVRFX0JJVCkpOwogCisgICAgLy8gVW5pZm9y
bSBzdG9yYWdlIGNhbiBoYXZlIGEgZGlmZmVyZW50IGludGVybmFsIHNpemUgdGhhbiB0aGUgYnVm
ZmVyIHNpemUuIEVuc3VyZSB3ZSBkb24ndAorICAgIC8vIG92ZXJmbG93LgorICAgIHNpemVfdCBt
YXBTaXplID0gc3RkOjptaW4oc2l6ZSwgbUJ1ZmZlclNpemUgLSBvZmZzZXQpOworCiAgICAgdWlu
dDhfdCAqd3JpdGVQb2ludGVyID0gbnVsbHB0cjsKLSAgICBBTkdMRV9UUlkobWFwKG9mZnNldCwg
c2l6ZSwgR0xfTUFQX1dSSVRFX0JJVCwgJndyaXRlUG9pbnRlcikpOworICAgIEFOR0xFX1RSWSht
YXAob2Zmc2V0LCBtYXBTaXplLCBHTF9NQVBfV1JJVEVfQklULCAmd3JpdGVQb2ludGVyKSk7CiAK
LSAgICBtZW1jcHkod3JpdGVQb2ludGVyLCBkYXRhLCBzaXplKTsKKyAgICBtZW1jcHkod3JpdGVQ
b2ludGVyLCBkYXRhLCBtYXBTaXplKTsKIAogICAgIHVubWFwKCk7CiAKQEAgLTg1NSw3ICs5NDEs
NyBAQCBnbDo6RXJyb3IgQnVmZmVyMTE6OkJ1ZmZlclN0b3JhZ2U6OnNldERhdGEoY29uc3QgdWlu
dDhfdCAqZGF0YSwgc2l6ZV90IG9mZnNldCwgcwogCiBCdWZmZXIxMTo6TmF0aXZlU3RvcmFnZTo6
TmF0aXZlU3RvcmFnZShSZW5kZXJlcjExICpyZW5kZXJlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEJ1ZmZlclVzYWdlIHVzYWdlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgYW5nbGU6OkJyb2FkY2FzdENoYW5uZWwgKm9uU3Rv
cmFnZUNoYW5nZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBhbmdsZTo6QnJvYWRjYXN0Q2hhbm5lbDw+ICpvblN0b3JhZ2VDaGFuZ2VkKQogICAgIDogQnVm
ZmVyU3RvcmFnZShyZW5kZXJlciwgdXNhZ2UpLCBtTmF0aXZlU3RvcmFnZShudWxscHRyKSwgbU9u
U3RvcmFnZUNoYW5nZWQob25TdG9yYWdlQ2hhbmdlZCkKIHsKIH0KQEAgLTkxMiwxMiArOTk4LDgg
QEAgZ2w6OkVycm9yT3JSZXN1bHQ8Q29weVJlc3VsdD4gQnVmZmVyMTE6Ok5hdGl2ZVN0b3JhZ2U6
OmNvcHlGcm9tU3RvcmFnZShCdWZmZXJTdG8KICAgICAgICAgdWludDhfdCAqc291cmNlUG9pbnRl
ciA9IG51bGxwdHI7CiAgICAgICAgIEFOR0xFX1RSWShzb3VyY2UtPm1hcChzb3VyY2VPZmZzZXQs
IGNsYW1wZWRTaXplLCBHTF9NQVBfUkVBRF9CSVQsICZzb3VyY2VQb2ludGVyKSk7CiAKLSAgICAg
ICAgdWludDhfdCAqZGVzdFBvaW50ZXIgPSBudWxscHRyOwotICAgICAgICBBTkdMRV9UUlkobWFw
KGRlc3RPZmZzZXQsIGNsYW1wZWRTaXplLCBHTF9NQVBfV1JJVEVfQklULCAmZGVzdFBvaW50ZXIp
KTsKLQotICAgICAgICBtZW1jcHkoZGVzdFBvaW50ZXIsIHNvdXJjZVBvaW50ZXIsIGNsYW1wZWRT
aXplKTsKKyAgICAgICAgc2V0RGF0YShzb3VyY2VQb2ludGVyLCBkZXN0T2Zmc2V0LCBjbGFtcGVk
U2l6ZSk7CiAKLSAgICAgICAgdW5tYXAoKTsKICAgICAgICAgc291cmNlLT51bm1hcCgpOwogICAg
IH0KICAgICBlbHNlCkBAIC0xMDI4LDYgKzExMTAsMTMgQEAgdm9pZCBCdWZmZXIxMTo6TmF0aXZl
U3RvcmFnZTo6RmlsbEJ1ZmZlckRlc2MoRDNEMTFfQlVGRkVSX0RFU0MgKmJ1ZmZlckRlc2MsCiAg
ICAgICAgICAgICBidWZmZXJEZXNjLT5DUFVBY2Nlc3NGbGFncyA9IDA7CiAgICAgICAgICAgICBi
cmVhazsKIAorICAgICAgICBjYXNlIEJVRkZFUl9VU0FHRV9JTkRJUkVDVDoKKyAgICAgICAgICAg
IGJ1ZmZlckRlc2MtPk1pc2NGbGFncyAgICAgID0gRDNEMTFfUkVTT1VSQ0VfTUlTQ19EUkFXSU5E
SVJFQ1RfQVJHUzsKKyAgICAgICAgICAgIGJ1ZmZlckRlc2MtPlVzYWdlICAgICAgICAgID0gRDNE
MTFfVVNBR0VfREVGQVVMVDsKKyAgICAgICAgICAgIGJ1ZmZlckRlc2MtPkJpbmRGbGFncyAgICAg
ID0gMDsKKyAgICAgICAgICAgIGJ1ZmZlckRlc2MtPkNQVUFjY2Vzc0ZsYWdzID0gMDsKKyAgICAg
ICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgQlVGRkVSX1VTQUdFX1BJWEVMX1VOUEFDSzoK
ICAgICAgICAgICAgIGJ1ZmZlckRlc2MtPlVzYWdlICAgICAgICAgID0gRDNEMTFfVVNBR0VfREVG
QVVMVDsKICAgICAgICAgICAgIGJ1ZmZlckRlc2MtPkJpbmRGbGFncyAgICAgID0gRDNEMTFfQklO
RF9TSEFERVJfUkVTT1VSQ0U7CkBAIC0xMDc2LDcgKzExNjUsNyBAQCBnbDo6RXJyb3IgQnVmZmVy
MTE6Ok5hdGl2ZVN0b3JhZ2U6Om1hcChzaXplX3Qgb2Zmc2V0LAogICAgIH0KICAgICBBU1NFUlQo
bWFwcGVkUmVzb3VyY2UucERhdGEpOwogICAgICptYXBQb2ludGVyT3V0ID0gc3RhdGljX2Nhc3Q8
dWludDhfdCAqPihtYXBwZWRSZXNvdXJjZS5wRGF0YSkgKyBvZmZzZXQ7Ci0gICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZv
aWQgQnVmZmVyMTE6Ok5hdGl2ZVN0b3JhZ2U6OnVubWFwKCkKQEAgLTExOTIsNyArMTI4MSw3IEBA
IGdsOjpFcnJvck9yUmVzdWx0PElEM0QxMUJ1ZmZlciAqPiBCdWZmZXIxMTo6RW11bGF0ZWRJbmRl
eGVkU3RvcmFnZTo6Z2V0TmF0aXZlU3RvCiAgICAgICAgIC8vIEV4cGFuZCB0aGUgbWVtb3J5IHN0
b3JhZ2UgdXBvbiByZXF1ZXN0IGFuZCBjYWNoZSB0aGUgcmVzdWx0cy4KICAgICAgICAgdW5zaWdu
ZWQgaW50IGV4cGFuZGVkRGF0YVNpemUgPQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50PigoaW5kZXhJbmZvLT5zcmNDb3VudCAqIGF0dHJpYnV0ZS5zdHJpZGUpICsgb2Zmc2V0
KTsKLSAgICAgICAgTWVtb3J5QnVmZmVyIGV4cGFuZGVkRGF0YTsKKyAgICAgICAgYW5nbGU6Ok1l
bW9yeUJ1ZmZlciBleHBhbmRlZERhdGE7CiAgICAgICAgIGlmICghZXhwYW5kZWREYXRhLnJlc2l6
ZShleHBhbmRlZERhdGFTaXplKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGdsOjpF
cnJvcigKQEAgLTEyODUsNyArMTM3NCw3IEBAIGdsOjpFcnJvciBCdWZmZXIxMTo6RW11bGF0ZWRJ
bmRleGVkU3RvcmFnZTo6cmVzaXplKHNpemVfdCBzaXplLCBib29sIHByZXNlcnZlRGF0CiAgICAg
ICAgIG1CdWZmZXJTaXplID0gc2l6ZTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEJ1
ZmZlcjExOjpFbXVsYXRlZEluZGV4ZWRTdG9yYWdlOjptYXAoc2l6ZV90IG9mZnNldCwKQEAgLTEy
OTUsNyArMTM4NCw3IEBAIGdsOjpFcnJvciBCdWZmZXIxMTo6RW11bGF0ZWRJbmRleGVkU3RvcmFn
ZTo6bWFwKHNpemVfdCBvZmZzZXQsCiB7CiAgICAgQVNTRVJUKCFtTWVtb3J5QnVmZmVyLmVtcHR5
KCkgJiYgb2Zmc2V0ICsgbGVuZ3RoIDw9IG1NZW1vcnlCdWZmZXIuc2l6ZSgpKTsKICAgICAqbWFw
UG9pbnRlck91dCA9IG1NZW1vcnlCdWZmZXIuZGF0YSgpICsgb2Zmc2V0OwotICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2
b2lkIEJ1ZmZlcjExOjpFbXVsYXRlZEluZGV4ZWRTdG9yYWdlOjp1bm1hcCgpCkBAIC0xMzIxLDkg
KzE0MTAsOCBAQCBnbDo6RXJyb3JPclJlc3VsdDxDb3B5UmVzdWx0PiBCdWZmZXIxMTo6UGFja1N0
b3JhZ2U6OmNvcHlGcm9tU3RvcmFnZShCdWZmZXJTdG9yYQogewogICAgIEFOR0xFX1RSWShmbHVz
aFF1ZXVlZFBhY2tDb21tYW5kKCkpOwogCi0gICAgLy8gV2UgY29weSB0aHJvdWdoIGEgc3RhZ2lu
ZyBidWZmZXIgd2hlbiBkcmF3aW5nIHdpdGggYSBwYWNrIGJ1ZmZlciwgb3IgZm9yIG90aGVyIGNh
c2VzIHdoZXJlIHdlCi0gICAgLy8gYWNjZXNzIHRoZSBwYWNrIGJ1ZmZlcgotICAgIEFTU0VSVChz
b3VyY2UtPmlzTWFwcGFibGUoR0xfTUFQX1JFQURfQklUKSAmJiBzb3VyY2UtPmdldFVzYWdlKCkg
PT0gQlVGRkVSX1VTQUdFX1NUQUdJTkcpOworICAgIC8vIEZvciBhbGwgdXNlIGNhc2VzIG9mIHBh
Y2sgYnVmZmVycywgd2UgbXVzdCBjb3B5IHRocm91Z2ggYSByZWFkYWJsZSBidWZmZXIuCisgICAg
QVNTRVJUKHNvdXJjZS0+aXNNYXBwYWJsZShHTF9NQVBfUkVBRF9CSVQpKTsKICAgICB1aW50OF90
ICpzb3VyY2VEYXRhID0gbnVsbHB0cjsKICAgICBBTkdMRV9UUlkoc291cmNlLT5tYXAoc291cmNl
T2Zmc2V0LCBzaXplLCBHTF9NQVBfUkVBRF9CSVQsICZzb3VyY2VEYXRhKSk7CiAgICAgQVNTRVJU
KGRlc3RPZmZzZXQgKyBzaXplIDw9IG1NZW1vcnlCdWZmZXIuc2l6ZSgpKTsKQEAgLTEzNDMsNyAr
MTQzMSw3IEBAIGdsOjpFcnJvciBCdWZmZXIxMTo6UGFja1N0b3JhZ2U6OnJlc2l6ZShzaXplX3Qg
c2l6ZSwgYm9vbCBwcmVzZXJ2ZURhdGEpCiAgICAgICAgIG1CdWZmZXJTaXplID0gc2l6ZTsKICAg
ICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEJ1ZmZlcjExOjpQYWNrU3RvcmFnZTo6bWFwKHNp
emVfdCBvZmZzZXQsCkBAIC0xMzYyLDcgKzE0NTAsNyBAQCBnbDo6RXJyb3IgQnVmZmVyMTE6OlBh
Y2tTdG9yYWdlOjptYXAoc2l6ZV90IG9mZnNldCwKICAgICBtRGF0YU1vZGlmaWVkID0gKG1EYXRh
TW9kaWZpZWQgfHwgKGFjY2VzcyAmIEdMX01BUF9XUklURV9CSVQpICE9IDApOwogCiAgICAgKm1h
cFBvaW50ZXJPdXQgPSBtTWVtb3J5QnVmZmVyLmRhdGEoKSArIG9mZnNldDsKLSAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAog
dm9pZCBCdWZmZXIxMTo6UGFja1N0b3JhZ2U6OnVubWFwKCkKQEAgLTE0NzgsNyArMTU2Niw3IEBA
IGdsOjpFcnJvciBCdWZmZXIxMTo6U3lzdGVtTWVtb3J5U3RvcmFnZTo6bWFwKHNpemVfdCBvZmZz
ZXQsCiB7CiAgICAgQVNTRVJUKCFtU3lzdGVtQ29weS5lbXB0eSgpICYmIG9mZnNldCArIGxlbmd0
aCA8PSBtU3lzdGVtQ29weS5zaXplKCkpOwogICAgICptYXBQb2ludGVyT3V0ID0gbVN5c3RlbUNv
cHkuZGF0YSgpICsgb2Zmc2V0OwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwor
ICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2b2lkIEJ1ZmZlcjExOjpTeXN0ZW1NZW1v
cnlTdG9yYWdlOjp1bm1hcCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0J1ZmZlcjExLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0J1ZmZlcjExLmgKaW5k
ZXggZGNmOWEwMzczMmU2YjAwNWJkNzY2YmRlYTJiNTk4YTNhNzA4NzZkMi4uYTE4NjYzNzNiMGJj
ZWUyNzJhZWY1NGIxNzg1MzQ5YjkwMWYzYjY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CdWZmZXIxMS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
QnVmZmVyMTEuaApAQCAtMjgsMTUgKzI4LDE4IEBAIGNsYXNzIFJlbmRlcmVyMTE7CiBzdHJ1Y3Qg
U291cmNlSW5kZXhEYXRhOwogc3RydWN0IFRyYW5zbGF0ZWRBdHRyaWJ1dGU7CiAKKy8vIFRoZSBv
cmRlciBvZiB0aGlzIGVudW0gZ292ZXJucyBwcmlvcml0eSBvZiAnZ2V0TGF0ZXN0QnVmZmVyU3Rv
cmFnZScuCiBlbnVtIEJ1ZmZlclVzYWdlCiB7CisgICAgQlVGRkVSX1VTQUdFX1NZU1RFTV9NRU1P
UlksCiAgICAgQlVGRkVSX1VTQUdFX1NUQUdJTkcsCiAgICAgQlVGRkVSX1VTQUdFX1ZFUlRFWF9P
Ul9UUkFOU0ZPUk1fRkVFREJBQ0ssCiAgICAgQlVGRkVSX1VTQUdFX0lOREVYLAorICAgIC8vIFRP
RE86IHBvc3NpYmx5IHNoYXJlIHRoaXMgYnVmZmVyIHR5cGUgd2l0aCBzaGFkZXIgc3RvcmFnZSBi
dWZmZXJzLgorICAgIEJVRkZFUl9VU0FHRV9JTkRJUkVDVCwKICAgICBCVUZGRVJfVVNBR0VfUElY
RUxfVU5QQUNLLAogICAgIEJVRkZFUl9VU0FHRV9QSVhFTF9QQUNLLAogICAgIEJVRkZFUl9VU0FH
RV9VTklGT1JNLAotICAgIEJVRkZFUl9VU0FHRV9TWVNURU1fTUVNT1JZLAogICAgIEJVRkZFUl9V
U0FHRV9FTVVMQVRFRF9JTkRFWEVEX1ZFUlRFWCwKIAogICAgIEJVRkZFUl9VU0FHRV9DT1VOVCwK
QEAgLTQ3LDE0ICs1MCwxOCBAQCB0eXBlZGVmIHNpemVfdCBEYXRhUmV2aXNpb247CiBjbGFzcyBC
dWZmZXIxMSA6IHB1YmxpYyBCdWZmZXJEM0QKIHsKICAgcHVibGljOgotICAgIEJ1ZmZlcjExKFJl
bmRlcmVyMTEgKnJlbmRlcmVyKTsKKyAgICBCdWZmZXIxMShjb25zdCBnbDo6QnVmZmVyU3RhdGUg
JnN0YXRlLCBSZW5kZXJlcjExICpyZW5kZXJlcik7CiAgICAgdmlydHVhbCB+QnVmZmVyMTEoKTsK
IAogICAgIGdsOjpFcnJvck9yUmVzdWx0PElEM0QxMUJ1ZmZlciAqPiBnZXRCdWZmZXIoQnVmZmVy
VXNhZ2UgdXNhZ2UpOwogICAgIGdsOjpFcnJvck9yUmVzdWx0PElEM0QxMUJ1ZmZlciAqPiBnZXRF
bXVsYXRlZEluZGV4ZWRCdWZmZXIoU291cmNlSW5kZXhEYXRhICppbmRleEluZm8sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUcmFuc2xhdGVkQXR0cmlidXRlICZhdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzdGFydFZl
cnRleCk7Ci0gICAgZ2w6OkVycm9yT3JSZXN1bHQ8SUQzRDExQnVmZmVyICo+IGdldENvbnN0YW50
QnVmZmVyUmFuZ2UoR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUpOworICAgIGdsOjpF
cnJvciBnZXRDb25zdGFudEJ1ZmZlclJhbmdlKEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExQnVmZmVyICoqYnVmZmVyT3V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgKmZpcnN0Q29uc3RhbnRPdXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCAqbnVtQ29uc3RhbnRzT3V0
KTsKICAgICBnbDo6RXJyb3JPclJlc3VsdDxJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKj4gZ2V0
U1JWKERYR0lfRk9STUFUIHNydkZvcm1hdCk7CiAgICAgYm9vbCBpc01hcHBlZCgpIGNvbnN0IHsg
cmV0dXJuIG1NYXBwZWRTdG9yYWdlICE9IG51bGxwdHI7IH0KICAgICBnbDo6RXJyb3IgcGFja1Bp
eGVscyhjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICZyZWFkQXR0YWNobWVudCwKQEAg
LTY5LDIyICs3NiwzNSBAQCBjbGFzcyBCdWZmZXIxMSA6IHB1YmxpYyBCdWZmZXJEM0QKICAgICB2
b2lkIGludmFsaWRhdGVTdGF0aWNEYXRhKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBCdWZmZXJJbXBs
IGltcGxlbWVudGF0aW9uCi0gICAgZ2w6OkVycm9yIHNldERhdGEoR0xlbnVtIHRhcmdldCwgY29u
c3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIEdMZW51bSB1c2FnZSkgb3ZlcnJpZGU7Ci0gICAg
Z2w6OkVycm9yIHNldFN1YkRhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6
ZV90IHNpemUsIHNpemVfdCBvZmZzZXQpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBjb3B5U3Vi
RGF0YShCdWZmZXJJbXBsICpzb3VyY2UsCisgICAgZ2w6OkVycm9yIHNldERhdGEoQ29udGV4dElt
cGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB1c2FnZSkgb3ZlcnJp
ZGU7CisgICAgZ2w6OkVycm9yIHNldFN1YkRhdGEoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBz
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQpIG92ZXJyaWRlOwor
ICAgIGdsOjpFcnJvciBjb3B5U3ViRGF0YShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlckltcGwgKnNvdXJjZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnRwdHIgc291cmNlT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludHB0ciBkZXN0T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpcHRyIHNpemUpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBtYXAoR0xlbnVtIGFjY2Vzcywg
R0x2b2lkICoqbWFwUHRyKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgbWFwUmFuZ2Uoc2l6ZV90
IG9mZnNldCwgc2l6ZV90IGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0
cikgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIHVubWFwKEdMYm9vbGVhbiAqcmVzdWx0KSBvdmVy
cmlkZTsKKyAgICBnbDo6RXJyb3IgbWFwKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwgR0xlbnVt
IGFjY2VzcywgR0x2b2lkICoqbWFwUHRyKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgbWFwUmFu
Z2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAorICAgICAg
ICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIGFjY2VzcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgR0x2b2lkICoqbWFwUHRyKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgdW5tYXAoQ29udGV4
dEltcGwgKmNvbnRleHRJbXBsLCBHTGJvb2xlYW4gKnJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgZ2w6
OkVycm9yIG1hcmtUcmFuc2Zvcm1GZWVkYmFja1VzYWdlKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBX
ZSB1c2UgdHdvIHNldCBvZiBkaXJ0eSBldmVudHMuIFN0YXRpYyBidWZmZXJzIGFyZSBtYXJrZWQg
ZGlydHkgd2hlbmV2ZXIKICAgICAvLyBkYXRhIGNoYW5nZXMsIGJlY2F1c2UgdGhleSBtdXN0IGJl
IHJlLXRyYW5zbGF0ZWQuIERpcmVjdCBidWZmZXJzIG9ubHkgbmVlZCB0byBiZQogICAgIC8vIHVw
ZGF0ZWQgd2hlbiB0aGUgdW5kZXJseWluZyBJRDNEMTFCdWZmZXIgcG9pbnRlciBjaGFuZ2VzIC0g
aG9wZWZ1bGx5IGZhciBsZXNzIG9mdGVuLgotICAgIGFuZ2xlOjpCcm9hZGNhc3RDaGFubmVsICpn
ZXRTdGF0aWNCcm9hZGNhc3RDaGFubmVsKCk7Ci0gICAgYW5nbGU6OkJyb2FkY2FzdENoYW5uZWwg
KmdldERpcmVjdEJyb2FkY2FzdENoYW5uZWwoKTsKKyAgICBhbmdsZTo6QnJvYWRjYXN0Q2hhbm5l
bDw+ICpnZXRTdGF0aWNCcm9hZGNhc3RDaGFubmVsKCk7CisgICAgYW5nbGU6OkJyb2FkY2FzdENo
YW5uZWw8PiAqZ2V0RGlyZWN0QnJvYWRjYXN0Q2hhbm5lbCgpOwogCiAgIHByaXZhdGU6CiAgICAg
Y2xhc3MgQnVmZmVyU3RvcmFnZTsKQEAgLTEwMSw3ICsxMjEsOCBAQCBjbGFzcyBCdWZmZXIxMSA6
IHB1YmxpYyBCdWZmZXJEM0QKICAgICAgICAgdW5zaWduZWQgaW50IGxydUNvdW50OwogICAgIH07
CiAKLSAgICBnbDo6RXJyb3IgbWFya0J1ZmZlclVzYWdlKEJ1ZmZlclVzYWdlIHVzYWdlKTsKKyAg
ICB2b2lkIG1hcmtCdWZmZXJVc2FnZShCdWZmZXJVc2FnZSB1c2FnZSk7CisgICAgZ2w6OkVycm9y
IGdhcmJhZ2VDb2xsZWN0aW9uKEJ1ZmZlclVzYWdlIGN1cnJlbnRVc2FnZSk7CiAgICAgZ2w6OkVy
cm9yT3JSZXN1bHQ8TmF0aXZlU3RvcmFnZSAqPiBnZXRTdGFnaW5nU3RvcmFnZSgpOwogICAgIGds
OjpFcnJvck9yUmVzdWx0PFBhY2tTdG9yYWdlICo+IGdldFBhY2tTdG9yYWdlKCk7CiAgICAgZ2w6
OkVycm9yT3JSZXN1bHQ8U3lzdGVtTWVtb3J5U3RvcmFnZSAqPiBnZXRTeXN0ZW1NZW1vcnlTdG9y
YWdlKCk7CkBAIC0xMTksNiArMTQwLDkgQEAgY2xhc3MgQnVmZmVyMTEgOiBwdWJsaWMgQnVmZmVy
RDNECiAgICAgLy8gRnJlZSB0aGUgc3RvcmFnZSBpZiB3ZSBkZWNpZGUgaXQgaXNuJ3QgYmVpbmcg
dXNlZCB2ZXJ5IG9mdGVuLgogICAgIGdsOjpFcnJvciBjaGVja0ZvckRlYWxsb2NhdGlvbihCdWZm
ZXJVc2FnZSB1c2FnZSk7CiAKKyAgICAvLyBGb3Igc29tZSBjYXNlcyBvZiB1bmlmb3JtIGJ1ZmZl
ciBzdG9yYWdlLCB3ZSBjYW4ndCBkZWFsbG9jYXRlIHN5c3RlbSBtZW1vcnkgc3RvcmFnZS4KKyAg
ICBib29sIGNhbkRlYWxsb2NhdGVTeXN0ZW1NZW1vcnkoKSBjb25zdDsKKwogICAgIFJlbmRlcmVy
MTEgKm1SZW5kZXJlcjsKICAgICBzaXplX3QgbVNpemU7CiAKQEAgLTEzOCw4ICsxNjIsOCBAQCBj
bGFzcyBCdWZmZXIxMSA6IHB1YmxpYyBCdWZmZXJEM0QKICAgICBzaXplX3QgbUNvbnN0YW50QnVm
ZmVyU3RvcmFnZUFkZGl0aW9uYWxTaXplOwogICAgIHVuc2lnbmVkIGludCBtTWF4Q29uc3RhbnRC
dWZmZXJMcnVDb3VudDsKIAotICAgIGFuZ2xlOjpCcm9hZGNhc3RDaGFubmVsIG1TdGF0aWNCcm9h
ZGNhc3RDaGFubmVsOwotICAgIGFuZ2xlOjpCcm9hZGNhc3RDaGFubmVsIG1EaXJlY3RCcm9hZGNh
c3RDaGFubmVsOworICAgIGFuZ2xlOjpCcm9hZGNhc3RDaGFubmVsPD4gbVN0YXRpY0Jyb2FkY2Fz
dENoYW5uZWw7CisgICAgYW5nbGU6OkJyb2FkY2FzdENoYW5uZWw8PiBtRGlyZWN0QnJvYWRjYXN0
Q2hhbm5lbDsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9DbGVhcjExLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvQ2xlYXIxMS5jcHAKaW5kZXggNTVmZTZjZDZhMTVlYzkyMzdkOWIyZDQwZmRkZTQyZDM1ZmNl
YmM4OC4uOTY5MzU1ZTBkMjZkZTQyMWM2NDUyN2U2NTE1ODhhNzE0YTZiZGJkMiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9DbGVhcjExLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL0NsZWFyMTEuY3BwCkBAIC0zMywzMCArMzMsMjQgQEAKIG5hbWVz
cGFjZSByeAogewogCitzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IGdfVmVydGV4U2l6ZSA9IHNp
emVvZihkM2QxMTo6UG9zaXRpb25EZXB0aENvbG9yVmVydGV4PGZsb2F0Pik7CisKIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotc3RhdGljIHZvaWQgQXBwbHlWZXJ0aWNlcyhjb25zdCBnbDo6RXh0ZW50
cyAmZnJhbWVidWZmZXJTaXplLCBjb25zdCBnbDo6UmVjdGFuZ2xlICpzY2lzc29yLCBjb25zdCBn
bDo6Q29sb3I8VD4gJmNvbG9yLCBmbG9hdCBkZXB0aCwgdm9pZCAqYnVmZmVyKQorc3RhdGljIHZv
aWQgQXBwbHlWZXJ0aWNlcyhjb25zdCBnbDo6Q29sb3I8VD4gJmNvbG9yLCBjb25zdCBmbG9hdCBk
ZXB0aCwgdm9pZCAqYnVmZmVyKQogewotICAgIGQzZDExOjpQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0
ZXg8VD4gKnZlcnRpY2VzID0gcmVpbnRlcnByZXRfY2FzdDxkM2QxMTo6UG9zaXRpb25EZXB0aENv
bG9yVmVydGV4PFQ+Kj4oYnVmZmVyKTsKLQotICAgIGZsb2F0IGRlcHRoQ2xlYXIgPSBnbDo6Y2xh
bXAwMShkZXB0aCk7Ci0gICAgZmxvYXQgbGVmdCA9IC0xLjBmOwotICAgIGZsb2F0IHJpZ2h0ID0g
MS4wZjsKLSAgICBmbG9hdCB0b3AgPSAtMS4wZjsKLSAgICBmbG9hdCBib3R0b20gPSAxLjBmOwot
Ci0gICAgLy8gQ2xpcCB0aGUgcXVhZCBjb29yZGluYXRlcyB0byB0aGUgc2Npc3NvciBpZiBuZWVk
ZWQKLSAgICBpZiAoc2Npc3NvciAhPSBudWxscHRyKQotICAgIHsKLSAgICAgICAgbGVmdCA9IHN0
ZDo6bWF4KGxlZnQsIChzY2lzc29yLT54IC8gZmxvYXQoZnJhbWVidWZmZXJTaXplLndpZHRoKSkg
KiAyLjBmIC0gMS4wZik7Ci0gICAgICAgIHJpZ2h0ID0gc3RkOjptaW4ocmlnaHQsICgoc2Npc3Nv
ci0+eCArIHNjaXNzb3ItPndpZHRoKSAvIGZsb2F0KGZyYW1lYnVmZmVyU2l6ZS53aWR0aCkpICog
Mi4wZiAtIDEuMGYpOwotICAgICAgICB0b3AgPSBzdGQ6Om1heCh0b3AsICgoZnJhbWVidWZmZXJT
aXplLmhlaWdodCAtIHNjaXNzb3ItPnkgLSBzY2lzc29yLT5oZWlnaHQpIC8gZmxvYXQoZnJhbWVi
dWZmZXJTaXplLmhlaWdodCkpICogMi4wZiAtIDEuMGYpOwotICAgICAgICBib3R0b20gPSBzdGQ6
Om1pbihib3R0b20sICgoZnJhbWVidWZmZXJTaXplLmhlaWdodCAtIHNjaXNzb3ItPnkpIC8gZmxv
YXQoZnJhbWVidWZmZXJTaXplLmhlaWdodCkpICogMi4wZiAtIDEuMGYpOwotICAgIH0KLQotICAg
IGQzZDExOjpTZXRQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXg8VD4odmVydGljZXMgKyAwLCBsZWZ0
LCAgYm90dG9tLCBkZXB0aENsZWFyLCBjb2xvcik7Ci0gICAgZDNkMTE6OlNldFBvc2l0aW9uRGVw
dGhDb2xvclZlcnRleDxUPih2ZXJ0aWNlcyArIDEsIGxlZnQsICB0b3AsICAgIGRlcHRoQ2xlYXIs
IGNvbG9yKTsKLSAgICBkM2QxMTo6U2V0UG9zaXRpb25EZXB0aENvbG9yVmVydGV4PFQ+KHZlcnRp
Y2VzICsgMiwgcmlnaHQsIGJvdHRvbSwgZGVwdGhDbGVhciwgY29sb3IpOwotICAgIGQzZDExOjpT
ZXRQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXg8VD4odmVydGljZXMgKyAzLCByaWdodCwgdG9wLCAg
ICBkZXB0aENsZWFyLCBjb2xvcik7CisgICAgZDNkMTE6OlBvc2l0aW9uRGVwdGhDb2xvclZlcnRl
eDxUPiAqdmVydGljZXMgPQorICAgICAgICByZWludGVycHJldF9jYXN0PGQzZDExOjpQb3NpdGlv
bkRlcHRoQ29sb3JWZXJ0ZXg8VD4gKj4oYnVmZmVyKTsKKworICAgIGNvbnN0IGZsb2F0IHogICAg
ICA9IGdsOjpjbGFtcDAxKGRlcHRoKTsKKyAgICBjb25zdCBmbG9hdCBsZWZ0ICAgPSAtMS4wZjsK
KyAgICBjb25zdCBmbG9hdCByaWdodCAgPSAxLjBmOworICAgIGNvbnN0IGZsb2F0IHRvcCAgICA9
IC0xLjBmOworICAgIGNvbnN0IGZsb2F0IGJvdHRvbSA9IDEuMGY7CisKKyAgICBkM2QxMTo6U2V0
UG9zaXRpb25EZXB0aENvbG9yVmVydGV4PFQ+KHZlcnRpY2VzICsgMCwgbGVmdCwgYm90dG9tLCB6
LCBjb2xvcik7CisgICAgZDNkMTE6OlNldFBvc2l0aW9uRGVwdGhDb2xvclZlcnRleDxUPih2ZXJ0
aWNlcyArIDEsIGxlZnQsIHRvcCwgeiwgY29sb3IpOworICAgIGQzZDExOjpTZXRQb3NpdGlvbkRl
cHRoQ29sb3JWZXJ0ZXg8VD4odmVydGljZXMgKyAyLCByaWdodCwgYm90dG9tLCB6LCBjb2xvcik7
CisgICAgZDNkMTE6OlNldFBvc2l0aW9uRGVwdGhDb2xvclZlcnRleDxUPih2ZXJ0aWNlcyArIDMs
IHJpZ2h0LCB0b3AsIHosIGNvbG9yKTsKIH0KIAogQ2xlYXIxMTo6Q2xlYXJTaGFkZXI6OkNsZWFy
U2hhZGVyKERYR0lfRk9STUFUIGNvbG9yVHlwZSwKQEAgLTcxLDEwICs2NSw5IEBAIENsZWFyMTE6
OkNsZWFyU2hhZGVyOjpDbGVhclNoYWRlcihEWEdJX0ZPUk1BVCBjb2xvclR5cGUsCiAgICAgICB2
ZXJ0ZXhTaGFkZXIodnNCeXRlQ29kZSwgdnNTaXplLCB2c0RlYnVnTmFtZSksCiAgICAgICBwaXhl
bFNoYWRlcihwc0J5dGVDb2RlLCBwc1NpemUsIHBzRGVidWdOYW1lKQogewotICAgIEQzRDExX0lO
UFVUX0VMRU1FTlRfREVTQyBxdWFkTGF5b3V0W10gPQotICAgIHsKLSAgICAgICAgeyAiUE9TSVRJ
T04iLCAwLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsIDAsICAwLCBEM0QxMV9JTlBVVF9Q
RVJfVkVSVEVYX0RBVEEsIDAgfSwKLSAgICAgICAgeyAiQ09MT1IiLCAgICAwLCBjb2xvclR5cGUs
ICAgICAgICAgICAgICAgICAgIDAsIDEyLCBEM0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RBVEEsIDAg
fSwKKyAgICBEM0QxMV9JTlBVVF9FTEVNRU5UX0RFU0MgcXVhZExheW91dFtdID0geworICAgICAg
ICB7IlBPU0lUSU9OIiwgMCwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULCAwLCAwLCBEM0Qx
MV9JTlBVVF9QRVJfVkVSVEVYX0RBVEEsIDB9LAorICAgICAgICB7IkNPTE9SIiwgMCwgY29sb3JU
eXBlLCAwLCAxMiwgRDNEMTFfSU5QVVRfUEVSX1ZFUlRFWF9EQVRBLCAwfSwKICAgICB9OwogCiAg
ICAgaW5wdXRMYXlvdXQgPSBuZXcgZDNkMTE6OkxhenlJbnB1dExheW91dChxdWFkTGF5b3V0LCAy
LCB2c0J5dGVDb2RlLCB2c1NpemUsIGlucHV0TGF5b3V0TmFtZSk7CkBAIC04OSwxMyArODIsOSBA
QCBDbGVhcjExOjpDbGVhclNoYWRlcjo6fkNsZWFyU2hhZGVyKCkKIAogQ2xlYXIxMTo6Q2xlYXIx
MShSZW5kZXJlcjExICpyZW5kZXJlcikKICAgICA6IG1SZW5kZXJlcihyZW5kZXJlciksCi0gICAg
ICBtQ2xlYXJCbGVuZFN0YXRlcyhTdHJ1Y3RMZXNzVGhhbjxDbGVhckJsZW5kSW5mbz4pLAogICAg
ICAgbUZsb2F0Q2xlYXJTaGFkZXIobnVsbHB0ciksCiAgICAgICBtVWludENsZWFyU2hhZGVyKG51
bGxwdHIpLAotICAgICAgbUludENsZWFyU2hhZGVyKG51bGxwdHIpLAotICAgICAgbUNsZWFyRGVw
dGhTdGVuY2lsU3RhdGVzKFN0cnVjdExlc3NUaGFuPENsZWFyRGVwdGhTdGVuY2lsSW5mbz4pLAot
ICAgICAgbVZlcnRleEJ1ZmZlcihudWxscHRyKSwKLSAgICAgIG1SYXN0ZXJpemVyU3RhdGUobnVs
bHB0cikKKyAgICAgIG1JbnRDbGVhclNoYWRlcihudWxscHRyKQogewogICAgIFRSQUNFX0VWRU5U
MCgiZ3B1LmFuZ2xlIiwgIkNsZWFyMTE6OkNsZWFyMTEiKTsKIApAQCAtMTAzLDE2OCArOTIsMTkz
IEBAIENsZWFyMTE6OkNsZWFyMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIpCiAgICAgSUQzRDExRGV2
aWNlICpkZXZpY2UgPSByZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAKICAgICBEM0QxMV9CVUZGRVJf
REVTQyB2YkRlc2M7Ci0gICAgdmJEZXNjLkJ5dGVXaWR0aCA9IHNpemVvZihkM2QxMTo6UG9zaXRp
b25EZXB0aENvbG9yVmVydGV4PGZsb2F0PikgKiA0OwotICAgIHZiRGVzYy5Vc2FnZSA9IEQzRDEx
X1VTQUdFX0RZTkFNSUM7Ci0gICAgdmJEZXNjLkJpbmRGbGFncyA9IEQzRDExX0JJTkRfVkVSVEVY
X0JVRkZFUjsKLSAgICB2YkRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1dS
SVRFOwotICAgIHZiRGVzYy5NaXNjRmxhZ3MgPSAwOworICAgIHZiRGVzYy5CeXRlV2lkdGggICAg
ICAgICAgID0gZ19WZXJ0ZXhTaXplICogNDsKKyAgICB2YkRlc2MuVXNhZ2UgICAgICAgICAgICAg
ICA9IEQzRDExX1VTQUdFX0RZTkFNSUM7CisgICAgdmJEZXNjLkJpbmRGbGFncyAgICAgICAgICAg
PSBEM0QxMV9CSU5EX1ZFUlRFWF9CVUZGRVI7CisgICAgdmJEZXNjLkNQVUFjY2Vzc0ZsYWdzICAg
ICAgPSBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOworICAgIHZiRGVzYy5NaXNjRmxhZ3MgICAgICAg
ICAgID0gMDsKICAgICB2YkRlc2MuU3RydWN0dXJlQnl0ZVN0cmlkZSA9IDA7CiAKLSAgICByZXN1
bHQgPSBkZXZpY2UtPkNyZWF0ZUJ1ZmZlcigmdmJEZXNjLCBudWxscHRyLCAmbVZlcnRleEJ1ZmZl
cik7CisgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVCdWZmZXIoJnZiRGVzYywgbnVsbHB0ciwg
bVZlcnRleEJ1ZmZlci5HZXRBZGRyZXNzT2YoKSk7CiAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1
bHQpKTsKICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1WZXJ0ZXhCdWZmZXIsICJDbGVhcjExIG1h
c2tlZCBjbGVhciB2ZXJ0ZXggYnVmZmVyIik7CiAKICAgICBEM0QxMV9SQVNURVJJWkVSX0RFU0Mg
cnNEZXNjOwotICAgIHJzRGVzYy5GaWxsTW9kZSA9IEQzRDExX0ZJTExfU09MSUQ7Ci0gICAgcnNE
ZXNjLkN1bGxNb2RlID0gRDNEMTFfQ1VMTF9OT05FOworICAgIHJzRGVzYy5GaWxsTW9kZSAgICAg
ICAgICAgICAgPSBEM0QxMV9GSUxMX1NPTElEOworICAgIHJzRGVzYy5DdWxsTW9kZSAgICAgICAg
ICAgICAgPSBEM0QxMV9DVUxMX05PTkU7CiAgICAgcnNEZXNjLkZyb250Q291bnRlckNsb2Nrd2lz
ZSA9IEZBTFNFOwotICAgIHJzRGVzYy5EZXB0aEJpYXMgPSAwOwotICAgIHJzRGVzYy5EZXB0aEJp
YXNDbGFtcCA9IDAuMGY7Ci0gICAgcnNEZXNjLlNsb3BlU2NhbGVkRGVwdGhCaWFzID0gMC4wZjsK
LSAgICByc0Rlc2MuRGVwdGhDbGlwRW5hYmxlID0gVFJVRTsKLSAgICByc0Rlc2MuU2Npc3NvckVu
YWJsZSA9IEZBTFNFOwotICAgIHJzRGVzYy5NdWx0aXNhbXBsZUVuYWJsZSA9IEZBTFNFOworICAg
IHJzRGVzYy5EZXB0aEJpYXMgICAgICAgICAgICAgPSAwOworICAgIHJzRGVzYy5EZXB0aEJpYXND
bGFtcCAgICAgICAgPSAwLjBmOworICAgIHJzRGVzYy5TbG9wZVNjYWxlZERlcHRoQmlhcyAgPSAw
LjBmOworICAgIHJzRGVzYy5EZXB0aENsaXBFbmFibGUgICAgICAgPSBUUlVFOworICAgIHJzRGVz
Yy5TY2lzc29yRW5hYmxlICAgICAgICAgPSBGQUxTRTsKKyAgICByc0Rlc2MuTXVsdGlzYW1wbGVF
bmFibGUgICAgID0gRkFMU0U7CiAgICAgcnNEZXNjLkFudGlhbGlhc2VkTGluZUVuYWJsZSA9IEZB
TFNFOwogCi0gICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVSYXN0ZXJpemVyU3RhdGUoJnJzRGVz
YywgJm1SYXN0ZXJpemVyU3RhdGUpOworICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlUmFzdGVy
aXplclN0YXRlKCZyc0Rlc2MsIG1TY2lzc29yRGlzYWJsZWRSYXN0ZXJpemVyU3RhdGUuR2V0QWRk
cmVzc09mKCkpOwogICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7Ci0gICAgZDNkMTE6OlNl
dERlYnVnTmFtZShtUmFzdGVyaXplclN0YXRlLCAiQ2xlYXIxMSBtYXNrZWQgY2xlYXIgcmFzdGVy
aXplciBzdGF0ZSIpOworICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobVNjaXNzb3JEaXNhYmxlZFJh
c3Rlcml6ZXJTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJDbGVhcjExIFJhc3Rlcml6
ZXIgU3RhdGUgd2l0aCBzY2lzc29yIGRpc2FibGVkIik7CisKKyAgICByc0Rlc2MuU2Npc3NvckVu
YWJsZSA9IFRSVUU7CisgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVSYXN0ZXJpemVyU3RhdGUo
JnJzRGVzYywgbVNjaXNzb3JFbmFibGVkUmFzdGVyaXplclN0YXRlLkdldEFkZHJlc3NPZigpKTsK
KyAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgIGQzZDExOjpTZXREZWJ1Z05hbWUo
bVNjaXNzb3JFbmFibGVkUmFzdGVyaXplclN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
IkNsZWFyMTEgUmFzdGVyaXplciBTdGF0ZSB3aXRoIHNjaXNzb3IgZW5hYmxlZCIpOwogCiAgICAg
aWYgKG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKS5mZWF0dXJlTGV2ZWwgPD0g
RDNEX0ZFQVRVUkVfTEVWRUxfOV8zKQogICAgIHsKLSAgICAgICAgbUZsb2F0Q2xlYXJTaGFkZXIg
PSBuZXcgQ2xlYXJTaGFkZXIoRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2xlYXIxMSBGbG9hdCBJTCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfVlNfQ2xlYXJG
bG9hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlT
aXplKGdfVlNfQ2xlYXJGbG9hdCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJDbGVhcjExIEZsb2F0IFZTIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19QU19DbGVhckZsb2F0X0ZMOSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlTaXplKGdfUFNfQ2xlYXJGbG9hdF9GTDkp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2xlYXIxMSBG
bG9hdCBQUyIpOworICAgICAgICBtRmxvYXRDbGVhclNoYWRlciA9CisgICAgICAgICAgICBuZXcg
Q2xlYXJTaGFkZXIoRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCAiQ2xlYXIxMSBGbG9h
dCBJTCIsIGdfVlNfQ2xlYXJGbG9hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJh
eVNpemUoZ19WU19DbGVhckZsb2F0KSwgIkNsZWFyMTEgRmxvYXQgVlMiLCBnX1BTX0NsZWFyRmxv
YXRfRkw5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5U2l6ZShnX1BTX0NsZWFy
RmxvYXRfRkw5KSwgIkNsZWFyMTEgRmxvYXQgUFMiKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsK
LSAgICAgICAgbUZsb2F0Q2xlYXJTaGFkZXIgPSBuZXcgQ2xlYXJTaGFkZXIoRFhHSV9GT1JNQVRf
UjMyRzMyQjMyQTMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiQ2xlYXIxMSBGbG9hdCBJTCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfVlNfQ2xlYXJGbG9hdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQXJyYXlTaXplKGdfVlNfQ2xlYXJGbG9hdCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDbGVhcjExIEZsb2F0IFZTIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19QU19DbGVhckZs
b2F0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVNp
emUoZ19QU19DbGVhckZsb2F0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkNsZWFyMTEgRmxvYXQgUFMiKTsKKyAgICAgICAgbUZsb2F0Q2xlYXJTaGFkZXIg
PQorICAgICAgICAgICAgbmV3IENsZWFyU2hhZGVyKERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9G
TE9BVCwgIkNsZWFyMTEgRmxvYXQgSUwiLCBnX1ZTX0NsZWFyRmxvYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQXJyYXlTaXplKGdfVlNfQ2xlYXJGbG9hdCksICJDbGVhcjExIEZsb2F0
IFZTIiwgZ19QU19DbGVhckZsb2F0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5
U2l6ZShnX1BTX0NsZWFyRmxvYXQpLCAiQ2xlYXIxMSBGbG9hdCBQUyIpOwogICAgIH0KIAogICAg
IGlmIChyZW5kZXJlci0+aXNFUzNDYXBhYmxlKCkpCiAgICAgewotICAgICAgICBtVWludENsZWFy
U2hhZGVyID0gbmV3IENsZWFyU2hhZGVyKERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDbGVhcjExIFVJTlQg
SUwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfVlNfQ2xl
YXJVaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5
U2l6ZShnX1ZTX0NsZWFyVWludCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkNsZWFyMTEgVUlOVCBWUyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ19QU19DbGVhclVpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQXJyYXlTaXplKGdfUFNfQ2xlYXJVaW50KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2xlYXIxMSBVSU5UIFBTIik7Ci0gICAg
ICAgIG1JbnRDbGVhclNoYWRlciA9IG5ldyBDbGVhclNoYWRlcihEWEdJX0ZPUk1BVF9SMzJHMzJC
MzJBMzJfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJD
bGVhcjExIFNJTlQgSUwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ19WU19DbGVhclNpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBcnJheVNpemUoZ19WU19DbGVhclNpbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkNsZWFyMTEgU0lOVCBWUyIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnX1BTX0NsZWFyU2ludCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5U2l6ZShnX1BTX0NsZWFyU2ludCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2xlYXIxMSBTSU5UIFBTIik7
CisgICAgICAgIG1VaW50Q2xlYXJTaGFkZXIgPQorICAgICAgICAgICAgbmV3IENsZWFyU2hhZGVy
KERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULCAiQ2xlYXIxMSBVSU5UIElMIiwgZ19WU19D
bGVhclVpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlTaXplKGdfVlNfQ2xl
YXJVaW50KSwgIkNsZWFyMTEgVUlOVCBWUyIsIGdfUFNfQ2xlYXJVaW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFycmF5U2l6ZShnX1BTX0NsZWFyVWludCksICJDbGVhcjExIFVJTlQg
UFMiKTsKKyAgICAgICAgbUludENsZWFyU2hhZGVyID0KKyAgICAgICAgICAgIG5ldyBDbGVhclNo
YWRlcihEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVCwgIkNsZWFyMTEgU0lOVCBJTCIsIGdf
VlNfQ2xlYXJTaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5U2l6ZShnX1ZT
X0NsZWFyU2ludCksICJDbGVhcjExIFNJTlQgVlMiLCBnX1BTX0NsZWFyU2ludCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBcnJheVNpemUoZ19QU19DbGVhclNpbnQpLCAiQ2xlYXIxMSBT
SU5UIFBTIik7CiAgICAgfQorCisgICAgLy8gSW5pdGlhbGl6ZSBEZXB0aHN0ZW5jaWxTdGF0ZUtl
eSB3aXRoIGRlZmF1bHRzCisgICAgbURlcHRoU3RlbmNpbFN0YXRlS2V5LmRlcHRoVGVzdCAgICAg
ICAgICAgICAgICA9IGZhbHNlOworICAgIG1EZXB0aFN0ZW5jaWxTdGF0ZUtleS5kZXB0aE1hc2sg
ICAgICAgICAgICAgICAgPSBmYWxzZTsKKyAgICBtRGVwdGhTdGVuY2lsU3RhdGVLZXkuZGVwdGhG
dW5jICAgICAgICAgICAgICAgID0gR0xfQUxXQVlTOworICAgIG1EZXB0aFN0ZW5jaWxTdGF0ZUtl
eS5zdGVuY2lsV3JpdGVtYXNrICAgICAgICAgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KC0xKTsKKyAg
ICBtRGVwdGhTdGVuY2lsU3RhdGVLZXkuc3RlbmNpbEJhY2tXcml0ZW1hc2sgICAgID0gc3RhdGlj
X2Nhc3Q8R0x1aW50PigtMSk7CisgICAgbURlcHRoU3RlbmNpbFN0YXRlS2V5LnN0ZW5jaWxCYWNr
TWFzayAgICAgICAgICA9IHN0YXRpY19jYXN0PEdMdWludD4oLTEpOworICAgIG1EZXB0aFN0ZW5j
aWxTdGF0ZUtleS5zdGVuY2lsVGVzdCAgICAgICAgICAgICAgPSBmYWxzZTsKKyAgICBtRGVwdGhT
dGVuY2lsU3RhdGVLZXkuc3RlbmNpbE1hc2sgICAgICAgICAgICAgID0gc3RhdGljX2Nhc3Q8R0x1
aW50PigtMSk7CisgICAgbURlcHRoU3RlbmNpbFN0YXRlS2V5LnN0ZW5jaWxGYWlsICAgICAgICAg
ICAgICA9IEdMX1JFUExBQ0U7CisgICAgbURlcHRoU3RlbmNpbFN0YXRlS2V5LnN0ZW5jaWxQYXNz
RGVwdGhGYWlsICAgICA9IEdMX1JFUExBQ0U7CisgICAgbURlcHRoU3RlbmNpbFN0YXRlS2V5LnN0
ZW5jaWxQYXNzRGVwdGhQYXNzICAgICA9IEdMX1JFUExBQ0U7CisgICAgbURlcHRoU3RlbmNpbFN0
YXRlS2V5LnN0ZW5jaWxGdW5jICAgICAgICAgICAgICA9IEdMX0FMV0FZUzsKKyAgICBtRGVwdGhT
dGVuY2lsU3RhdGVLZXkuc3RlbmNpbEJhY2tGYWlsICAgICAgICAgID0gR0xfUkVQTEFDRTsKKyAg
ICBtRGVwdGhTdGVuY2lsU3RhdGVLZXkuc3RlbmNpbEJhY2tQYXNzRGVwdGhGYWlsID0gR0xfUkVQ
TEFDRTsKKyAgICBtRGVwdGhTdGVuY2lsU3RhdGVLZXkuc3RlbmNpbEJhY2tQYXNzRGVwdGhQYXNz
ID0gR0xfUkVQTEFDRTsKKyAgICBtRGVwdGhTdGVuY2lsU3RhdGVLZXkuc3RlbmNpbEJhY2tGdW5j
ICAgICAgICAgID0gR0xfQUxXQVlTOworCisgICAgLy8gSW5pdGlhbGl6ZSBCbGVuZFN0YXRlS2V5
IHdpdGggZGVmYXVsdHMKKyAgICBtQmxlbmRTdGF0ZUtleS5ibGVuZFN0YXRlLmJsZW5kICAgICAg
ICAgICAgICAgICA9IGZhbHNlOworICAgIG1CbGVuZFN0YXRlS2V5LmJsZW5kU3RhdGUuc291cmNl
QmxlbmRSR0IgICAgICAgID0gR0xfT05FOworICAgIG1CbGVuZFN0YXRlS2V5LmJsZW5kU3RhdGUu
c291cmNlQmxlbmRBbHBoYSAgICAgID0gR0xfT05FOworICAgIG1CbGVuZFN0YXRlS2V5LmJsZW5k
U3RhdGUuZGVzdEJsZW5kUkdCICAgICAgICAgID0gR0xfWkVSTzsKKyAgICBtQmxlbmRTdGF0ZUtl
eS5ibGVuZFN0YXRlLmRlc3RCbGVuZEFscGhhICAgICAgICA9IEdMX1pFUk87CisgICAgbUJsZW5k
U3RhdGVLZXkuYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uUkdCICAgICAgPSBHTF9GVU5DX0FERDsK
KyAgICBtQmxlbmRTdGF0ZUtleS5ibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25BbHBoYSAgICA9IEdM
X0ZVTkNfQUREOworICAgIG1CbGVuZFN0YXRlS2V5LmJsZW5kU3RhdGUuc2FtcGxlQWxwaGFUb0Nv
dmVyYWdlID0gZmFsc2U7CisgICAgbUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZS5kaXRoZXIgICAg
ICAgICAgICAgICAgPSB0cnVlOworICAgIG1CbGVuZFN0YXRlS2V5Lm1ydCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gZmFsc2U7CisgICAgbWVtc2V0KG1CbGVuZFN0YXRlS2V5LnJ0dk1h
c2tzLCAwLCBzaXplb2YobUJsZW5kU3RhdGVLZXkucnR2TWFza3MpKTsKIH0KIAogQ2xlYXIxMTo6
fkNsZWFyMTEoKQogewotICAgIGZvciAoQ2xlYXJCbGVuZFN0YXRlTWFwOjppdGVyYXRvciBpID0g
bUNsZWFyQmxlbmRTdGF0ZXMuYmVnaW4oKTsgaSAhPSBtQ2xlYXJCbGVuZFN0YXRlcy5lbmQoKTsg
aSsrKQotICAgIHsKLSAgICAgICAgU2FmZVJlbGVhc2UoaS0+c2Vjb25kKTsKLSAgICB9Ci0gICAg
bUNsZWFyQmxlbmRTdGF0ZXMuY2xlYXIoKTsKLQogICAgIFNhZmVEZWxldGUobUZsb2F0Q2xlYXJT
aGFkZXIpOwogICAgIFNhZmVEZWxldGUobVVpbnRDbGVhclNoYWRlcik7CiAgICAgU2FmZURlbGV0
ZShtSW50Q2xlYXJTaGFkZXIpOwotCi0gICAgZm9yIChDbGVhckRlcHRoU3RlbmNpbFN0YXRlTWFw
OjppdGVyYXRvciBpID0gbUNsZWFyRGVwdGhTdGVuY2lsU3RhdGVzLmJlZ2luKCk7IGkgIT0gbUNs
ZWFyRGVwdGhTdGVuY2lsU3RhdGVzLmVuZCgpOyBpKyspCi0gICAgewotICAgICAgICBTYWZlUmVs
ZWFzZShpLT5zZWNvbmQpOwotICAgIH0KLSAgICBtQ2xlYXJEZXB0aFN0ZW5jaWxTdGF0ZXMuY2xl
YXIoKTsKLQotICAgIFNhZmVSZWxlYXNlKG1WZXJ0ZXhCdWZmZXIpOwotICAgIFNhZmVSZWxlYXNl
KG1SYXN0ZXJpemVyU3RhdGUpOwogfQogCiBnbDo6RXJyb3IgQ2xlYXIxMTo6Y2xlYXJGcmFtZWJ1
ZmZlcihjb25zdCBDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJmZib0RhdGEp
CiB7Ci0gICAgY29uc3QgYXV0byAmY29sb3JBdHRhY2htZW50cyA9IGZib0RhdGEuZ2V0Q29sb3JB
dHRhY2htZW50cygpOwotICAgIGNvbnN0IGF1dG8gJmRyYXdCdWZmZXJTdGF0ZXMgPSBmYm9EYXRh
LmdldERyYXdCdWZmZXJTdGF0ZXMoKTsKLSAgICBjb25zdCBhdXRvICpkZXB0aEF0dGFjaG1lbnQg
PSBmYm9EYXRhLmdldERlcHRoQXR0YWNobWVudCgpOwotICAgIGNvbnN0IGF1dG8gKnN0ZW5jaWxB
dHRhY2htZW50ID0gZmJvRGF0YS5nZXRTdGVuY2lsQXR0YWNobWVudCgpOworICAgIGNvbnN0IGF1
dG8gJmNvbG9yQXR0YWNobWVudHMgID0gZmJvRGF0YS5nZXRDb2xvckF0dGFjaG1lbnRzKCk7Cisg
ICAgY29uc3QgYXV0byAmZHJhd0J1ZmZlclN0YXRlcyAgPSBmYm9EYXRhLmdldERyYXdCdWZmZXJT
dGF0ZXMoKTsKKyAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpkZXB0aFN0ZW5j
aWxBdHRhY2htZW50ID0gZmJvRGF0YS5nZXREZXB0aE9yU3RlbmNpbEF0dGFjaG1lbnQoKTsKKyAg
ICBSZW5kZXJUYXJnZXQxMSAqZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0ICAgICAgICAgICAgICAg
ID0gbnVsbHB0cjsKKworICAgIEFTU0VSVChjb2xvckF0dGFjaG1lbnRzLnNpemUoKSA8PSBkcmF3
QnVmZmVyU3RhdGVzLnNpemUoKSk7CiAKLSAgICBBU1NFUlQoY29sb3JBdHRhY2htZW50cy5zaXpl
KCkgPT0gZHJhd0J1ZmZlclN0YXRlcy5zaXplKCkpOworICAgIGlmIChjbGVhclBhcmFtcy5jbGVh
ckRlcHRoIHx8IGNsZWFyUGFyYW1zLmNsZWFyU3RlbmNpbCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChkZXB0aFN0ZW5jaWxBdHRhY2htZW50ICE9IG51bGxwdHIpOworICAgICAgICBBTkdMRV9UUlko
ZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+Z2V0UmVuZGVyVGFyZ2V0KCZkZXB0aFN0ZW5jaWxSZW5k
ZXJUYXJnZXQpKTsKKyAgICB9CiAKICAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIGNvbG9yIGJ1ZmZl
cnMgd2hpY2ggcmVxdWlyZSBjbGVhcmluZyBhbmQgZGV0ZXJtaW5lIGlmIHRoZXkgY2FuIGJlCiAg
ICAgLy8gY2xlYXJlZCB3aXRoIElEM0QxMURldmljZUNvbnRleHQ6OkNsZWFyUmVuZGVyVGFyZ2V0
VmlldyBvciBJRDNEMTFEZXZpY2VDb250ZXh0MTo6Q2xlYXJWaWV3LgogICAgIC8vIFRoaXMgcmVx
dWlyZXM6Ci0gICAgLy8gMSkgVGhlIHJlbmRlciB0YXJnZXQgaXMgYmVpbmcgY2xlYXJlZCB0byBh
IGZsb2F0IHZhbHVlICh3aWxsIGJlIGNhc3QgdG8gaW50ZWdlciB3aGVuIGNsZWFyaW5nIGludGVn
ZXIKLSAgICAvLyAgICByZW5kZXIgdGFyZ2V0cyBhcyBleHBlY3RlZCBidXQgZG9lcyBub3Qgd29y
ayB0aGUgb3RoZXIgd2F5IGFyb3VuZCkKKyAgICAvLyAxKSBUaGUgcmVuZGVyIHRhcmdldCBpcyBi
ZWluZyBjbGVhcmVkIHRvIGEgZmxvYXQgdmFsdWUgKHdpbGwgYmUgY2FzdCB0byBpbnRlZ2VyIHdo
ZW4gY2xlYXJpbmcKKyAgICAvLyBpbnRlZ2VyIHJlbmRlciB0YXJnZXRzIGFzIGV4cGVjdGVkIGJ1
dCBkb2VzIG5vdCB3b3JrIHRoZSBvdGhlciB3YXkgYXJvdW5kKQogICAgIC8vIDIpIFRoZSBmb3Jt
YXQgb2YgdGhlIHJlbmRlciB0YXJnZXQgaGFzIG5vIGNvbG9yIGNoYW5uZWxzIHRoYXQgYXJlIGN1
cnJlbnRseSBtYXNrZWQgb3V0LgotICAgIC8vIENsZWFyIHRoZSBlYXN5LXRvLWNsZWFyIGJ1ZmZl
cnMgb24gdGhlIHNwb3QgYW5kIGFjY3VtdWxhdGUgdGhlIG9uZXMgdGhhdCByZXF1aXJlIHNwZWNp
YWwgd29yay4KKyAgICAvLyBDbGVhciB0aGUgZWFzeS10by1jbGVhciBidWZmZXJzIG9uIHRoZSBz
cG90IGFuZCBhY2N1bXVsYXRlIHRoZSBvbmVzIHRoYXQgcmVxdWlyZSBzcGVjaWFsCisgICAgLy8g
d29yay4KICAgICAvLwogICAgIC8vIElmIHRoZXNlIGNvbmRpdGlvbnMgYXJlIG1ldCwgYW5kOgog
ICAgIC8vIC0gTm8gc2Npc3NvcmVkIGNsZWFyIGlzIG5lZWRlZCwgdGhlbiBjbGVhciB1c2luZyBJ
RDNEMTFEZXZpY2VDb250ZXh0OjpDbGVhclJlbmRlclRhcmdldFZpZXcuCiAgICAgLy8gLSBBIHNj
aXNzb3JlZCBjbGVhciBpcyBuZWVkZWQgdGhlbiBjbGVhciB1c2luZyBJRDNEMTFEZXZpY2VDb250
ZXh0MTo6Q2xlYXJWaWV3IGlmIGF2YWlsYWJsZS4KICAgICAvLyAgIE90aGVyd2lzZSBkcmF3IGEg
cXVhZC4KICAgICAvLwotICAgIC8vIEFsc28gZGV0ZXJtaW5lIGlmIHRoZSBkZXB0aCBzdGVuY2ls
IGNhbiBiZSBjbGVhcmVkIHdpdGggSUQzRDExRGV2aWNlQ29udGV4dDo6Q2xlYXJEZXB0aFN0ZW5j
aWxWaWV3CisgICAgLy8gQWxzbyBkZXRlcm1pbmUgaWYgdGhlIGRlcHRoIHN0ZW5jaWwgY2FuIGJl
IGNsZWFyZWQgd2l0aAorICAgIC8vIElEM0QxMURldmljZUNvbnRleHQ6OkNsZWFyRGVwdGhTdGVu
Y2lsVmlldwogICAgIC8vIGJ5IGNoZWNraW5nIGlmIHRoZSBzdGVuY2lsIHdyaXRlIG1hc2sgY292
ZXJzIHRoZSBlbnRpcmUgc3RlbmNpbC4KICAgICAvLwotICAgIC8vIFRvIGNsZWFyIHRoZSByZW1h
aW5pbmcgYnVmZmVycywgcXVhZHMgbXVzdCBiZSBkcmF3biBjb250YWluaW5nIGFuIGludCwgdWlu
dCBvciBmbG9hdCB2ZXJ0ZXggY29sb3IKKyAgICAvLyBUbyBjbGVhciB0aGUgcmVtYWluaW5nIGJ1
ZmZlcnMsIHF1YWRzIG11c3QgYmUgZHJhd24gY29udGFpbmluZyBhbiBpbnQsIHVpbnQgb3IgZmxv
YXQgdmVydGV4CisgICAgLy8gY29sb3IKICAgICAvLyBhdHRyaWJ1dGUuCiAKICAgICBnbDo6RXh0
ZW50cyBmcmFtZWJ1ZmZlclNpemU7CiAKLSAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2ht
ZW50ICpjb2xvckF0dGFjaG1lbnQgPSBmYm9EYXRhLmdldEZpcnN0Q29sb3JBdHRhY2htZW50KCk7
Ci0gICAgaWYgKGNvbG9yQXR0YWNobWVudCAhPSBudWxscHRyKQorICAgIGlmIChkZXB0aFN0ZW5j
aWxSZW5kZXJUYXJnZXQgIT0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIGZyYW1lYnVmZmVyU2l6
ZSA9IGNvbG9yQXR0YWNobWVudC0+Z2V0U2l6ZSgpOwotICAgIH0KLSAgICBlbHNlIGlmIChkZXB0
aEF0dGFjaG1lbnQgIT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIGZyYW1lYnVmZmVyU2l6ZSA9
IGRlcHRoQXR0YWNobWVudC0+Z2V0U2l6ZSgpOwotICAgIH0KLSAgICBlbHNlIGlmIChzdGVuY2ls
QXR0YWNobWVudCAhPSBudWxscHRyKQotICAgIHsKLSAgICAgICAgZnJhbWVidWZmZXJTaXplID0g
c3RlbmNpbEF0dGFjaG1lbnQtPmdldFNpemUoKTsKKyAgICAgICAgZnJhbWVidWZmZXJTaXplID0g
ZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0LT5nZXRFeHRlbnRzKCk7CiAgICAgfQogICAgIGVsc2UK
ICAgICB7Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgIH0KKyAgICAgICAgY29uc3QgYXV0byBjb2xvckF0
dGFjaG1lbnQgPSBmYm9EYXRhLmdldEZpcnN0Q29sb3JBdHRhY2htZW50KCk7CiAKLSAgICBpZiAo
Y2xlYXJQYXJhbXMuc2Npc3NvckVuYWJsZWQgJiYgKGNsZWFyUGFyYW1zLnNjaXNzb3IueCA+PSBm
cmFtZWJ1ZmZlclNpemUud2lkdGggfHwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjbGVhclBhcmFtcy5zY2lzc29yLnkgPj0gZnJhbWVidWZmZXJTaXplLmhlaWdodCB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJQYXJhbXMuc2Np
c3Nvci54ICsgY2xlYXJQYXJhbXMuc2Npc3Nvci53aWR0aCA8PSAwIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5zY2lzc29yLnkgKyBjbGVhclBh
cmFtcy5zY2lzc29yLmhlaWdodCA8PSAwKSkKLSAgICB7Ci0gICAgICAgIC8vIFNjaXNzb3IgaXMg
ZW5hYmxlZCBhbmQgdGhlIHNjaXNzb3IgcmVjdGFuZ2xlIGlzIG91dHNpZGUgdGhlIHJlbmRlcmJ1
ZmZlcgotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgaWYg
KCFjb2xvckF0dGFjaG1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgICAgICAgICByZXR1cm4gZ2w6OkludGVybmFsRXJyb3IoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZyYW1lYnVmZmVyU2l6ZSA9IGNvbG9yQXR0YWNobWVudC0+Z2V0U2l6ZSgpOwogICAg
IH0KIAotICAgIGJvb2wgbmVlZFNjaXNzb3JlZENsZWFyID0gY2xlYXJQYXJhbXMuc2Npc3NvckVu
YWJsZWQgJiYgKGNsZWFyUGFyYW1zLnNjaXNzb3IueCA+IDAgfHwgY2xlYXJQYXJhbXMuc2Npc3Nv
ci55ID4gMCB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNsZWFyUGFyYW1zLnNjaXNzb3IueCArIGNsZWFyUGFyYW1zLnNjaXNz
b3Iud2lkdGggPCBmcmFtZWJ1ZmZlclNpemUud2lkdGggfHwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5zY2lz
c29yLnkgKyBjbGVhclBhcmFtcy5zY2lzc29yLmhlaWdodCA8IGZyYW1lYnVmZmVyU2l6ZS5oZWln
aHQpOworICAgIGJvb2wgbmVlZFNjaXNzb3JlZENsZWFyID0gZmFsc2U7CisKKyAgICBpZiAoY2xl
YXJQYXJhbXMuc2Npc3NvckVuYWJsZWQpCisgICAgeworICAgICAgICBpZiAoY2xlYXJQYXJhbXMu
c2Npc3Nvci54ID49IGZyYW1lYnVmZmVyU2l6ZS53aWR0aCB8fAorICAgICAgICAgICAgY2xlYXJQ
YXJhbXMuc2Npc3Nvci55ID49IGZyYW1lYnVmZmVyU2l6ZS5oZWlnaHQgfHwKKyAgICAgICAgICAg
IGNsZWFyUGFyYW1zLnNjaXNzb3IueCArIGNsZWFyUGFyYW1zLnNjaXNzb3Iud2lkdGggPD0gMCB8
fAorICAgICAgICAgICAgY2xlYXJQYXJhbXMuc2Npc3Nvci55ICsgY2xlYXJQYXJhbXMuc2Npc3Nv
ci5oZWlnaHQgPD0gMCB8fAorICAgICAgICAgICAgY2xlYXJQYXJhbXMuc2Npc3Nvci53aWR0aCA9
PSAwIHx8IGNsZWFyUGFyYW1zLnNjaXNzb3IuaGVpZ2h0ID09IDApCisgICAgICAgIHsKKyAgICAg
ICAgICAgIC8vIFNjaXNzb3IgcmVjdCBpcyBvdXRzaWRlIHRoZSByZW5kZXJidWZmZXIgb3IgaXMg
YW4gZW1wdHkgcmVjdAorICAgICAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAgICAg
IH0KIAotICAgIHN0ZDo6dmVjdG9yPE1hc2tlZFJlbmRlclRhcmdldD4gbWFza2VkQ2xlYXJSZW5k
ZXJUYXJnZXRzOwotICAgIFJlbmRlclRhcmdldDExKiBtYXNrZWRDbGVhckRlcHRoU3RlbmNpbCA9
IG51bGxwdHI7CisgICAgICAgIG5lZWRTY2lzc29yZWRDbGVhciA9CisgICAgICAgICAgICBjbGVh
clBhcmFtcy5zY2lzc29yLnggPiAwIHx8IGNsZWFyUGFyYW1zLnNjaXNzb3IueSA+IDAgfHwKKyAg
ICAgICAgICAgIGNsZWFyUGFyYW1zLnNjaXNzb3IueCArIGNsZWFyUGFyYW1zLnNjaXNzb3Iud2lk
dGggPCBmcmFtZWJ1ZmZlclNpemUud2lkdGggfHwKKyAgICAgICAgICAgIGNsZWFyUGFyYW1zLnNj
aXNzb3IueSArIGNsZWFyUGFyYW1zLnNjaXNzb3IuaGVpZ2h0IDwgZnJhbWVidWZmZXJTaXplLmhl
aWdodDsKKyAgICB9CiAKLSAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VDb250ZXh0ID0g
bVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CisgICAgSUQzRDExRGV2aWNlQ29udGV4dCAq
ZGV2aWNlQ29udGV4dCAgID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CiAgICAgSUQz
RDExRGV2aWNlQ29udGV4dDEgKmRldmljZUNvbnRleHQxID0gbVJlbmRlcmVyLT5nZXREZXZpY2VD
b250ZXh0MUlmU3VwcG9ydGVkKCk7Ci0gICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVy
ZXItPmdldERldmljZSgpOworCisgICAgc3RkOjphcnJheTxJRDNEMTFSZW5kZXJUYXJnZXRWaWV3
ICosIEQzRDExX1NJTVVMVEFORU9VU19SRU5ERVJfVEFSR0VUX0NPVU5UPiBydHZzOworICAgIHN0
ZDo6YXJyYXk8dWludDhfdCwgRDNEMTFfU0lNVUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09VTlQ+
IHJ0dk1hc2tzOworICAgIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmRzdiA9IG51bGxwdHI7Cisg
ICAgdWludDMyX3QgbnVtUnR2cyAgICAgICAgICAgID0gMDsKKyAgICBjb25zdCB1aW50OF90IGNv
bG9yTWFzayA9CisgICAgICAgIGdsX2QzZDExOjpDb252ZXJ0Q29sb3JNYXNrKGNsZWFyUGFyYW1z
LmNvbG9yTWFza1JlZCwgY2xlYXJQYXJhbXMuY29sb3JNYXNrR3JlZW4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsZWFyUGFyYW1zLmNvbG9yTWFza0JsdWUsIGNsZWFyUGFy
YW1zLmNvbG9yTWFza0FscGhhKTsKIAogICAgIGZvciAoc2l6ZV90IGNvbG9yQXR0YWNobWVudElu
ZGV4ID0gMDsgY29sb3JBdHRhY2htZW50SW5kZXggPCBjb2xvckF0dGFjaG1lbnRzLnNpemUoKTsK
ICAgICAgICAgIGNvbG9yQXR0YWNobWVudEluZGV4KyspCkBAIC0yODQsMTEgKzI5OCwxMSBAQCBn
bDo6RXJyb3IgQ2xlYXIxMTo6Y2xlYXJGcmFtZWJ1ZmZlcihjb25zdCBDbGVhclBhcmFtZXRlcnMg
JmNsZWFyUGFyYW1zLAogICAgICAgICAgICAgICAgICAgZm9ybWF0SW5mby5jb21wb25lbnRUeXBl
ID09IEdMX1VOU0lHTkVEX05PUk1BTElaRUQgfHwKICAgICAgICAgICAgICAgICAgIGZvcm1hdElu
Zm8uY29tcG9uZW50VHlwZSA9PSBHTF9TSUdORURfTk9STUFMSVpFRCkpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgRVJSKCJJdCBpcyB1bmRlZmluZWQgYmVoYXZpb3VyIHRvIGNsZWFy
IGEgcmVuZGVyIGJ1ZmZlciB3aGljaCBpcyBub3Qgbm9ybWFsaXplZCAiCi0gICAgICAgICAgICAg
ICAgICAgICJmaXhlZCBwb2ludCBvciBmbG9hdGluZy0iCi0gICAgICAgICAgICAgICAgICAgICJw
b2ludCB0byBmbG9hdGluZyBwb2ludCB2YWx1ZXMgKGNvbG9yIGF0dGFjaG1lbnQgJXUgaGFzIGlu
dGVybmFsIGZvcm1hdCAiCi0gICAgICAgICAgICAgICAgICAgICIweCVYKS4iLAotICAgICAgICAg
ICAgICAgICAgICBjb2xvckF0dGFjaG1lbnRJbmRleCwgYXR0YWNobWVudC5nZXRGb3JtYXQoKS5h
c1NpemVkKCkpOworICAgICAgICAgICAgICAgIEVSUigpIDw8ICJJdCBpcyB1bmRlZmluZWQgYmVo
YXZpb3VyIHRvIGNsZWFyIGEgcmVuZGVyIGJ1ZmZlciB3aGljaCBpcyBub3QgIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICJub3JtYWxpemVkIGZpeGVkIHBvaW50IG9yIGZsb2F0aW5nLXBvaW50
IHRvIGZsb2F0aW5nIHBvaW50IHZhbHVlcyAoY29sb3IgIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICJhdHRhY2htZW50ICIKKyAgICAgICAgICAgICAgICAgICAgICA8PCBjb2xvckF0dGFjaG1l
bnRJbmRleCA8PCAiIGhhcyBpbnRlcm5hbCBmb3JtYXQgIiA8PCBhdHRhY2htZW50LmdldEZvcm1h
dCgpCisgICAgICAgICAgICAgICAgICAgICAgPDwgIikuIjsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgaWYgKChmb3JtYXRJbmZvLnJlZEJpdHMgPT0gMCB8fCAhY2xlYXJQYXJhbXMuY29s
b3JNYXNrUmVkKSAmJgpAQCAtMjk5LDM4ICszMTMsMzQgQEAgZ2w6OkVycm9yIENsZWFyMTE6OmNs
ZWFyRnJhbWVidWZmZXIoY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZjbGVhclBhcmFtcywKICAgICAg
ICAgICAgICAgICAvLyBFdmVyeSBjaGFubmVsIGVpdGhlciBkb2VzIG5vdCBleGlzdCBpbiB0aGUg
cmVuZGVyIHRhcmdldCBvciBpcyBtYXNrZWQgb3V0CiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgoIShtUmVuZGVyZXItPmdldFJl
bmRlcmVyMTFEZXZpY2VDYXBzKCkuc3VwcG9ydHNDbGVhclZpZXcpICYmCi0gICAgICAgICAgICAg
ICAgICAgICAgbmVlZFNjaXNzb3JlZENsZWFyKSB8fAotICAgICAgICAgICAgICAgICAgICAgY2xl
YXJQYXJhbXMuY29sb3JDbGVhclR5cGUgIT0gR0xfRkxPQVQgfHwKLSAgICAgICAgICAgICAgICAg
ICAgIChmb3JtYXRJbmZvLnJlZEJpdHMgPiAwICYmICFjbGVhclBhcmFtcy5jb2xvck1hc2tSZWQp
IHx8Ci0gICAgICAgICAgICAgICAgICAgICAoZm9ybWF0SW5mby5ncmVlbkJpdHMgPiAwICYmICFj
bGVhclBhcmFtcy5jb2xvck1hc2tHcmVlbikgfHwKLSAgICAgICAgICAgICAgICAgICAgIChmb3Jt
YXRJbmZvLmJsdWVCaXRzID4gMCAmJiAhY2xlYXJQYXJhbXMuY29sb3JNYXNrQmx1ZSkgfHwKLSAg
ICAgICAgICAgICAgICAgICAgIChmb3JtYXRJbmZvLmFscGhhQml0cyA+IDAgJiYgIWNsZWFyUGFy
YW1zLmNvbG9yTWFza0FscGhhKSkKKworICAgICAgICAgICAgSUQzRDExUmVuZGVyVGFyZ2V0Vmll
dyAqZnJhbWVidWZmZXJSVFYgPSByZW5kZXJUYXJnZXQtPmdldFJlbmRlclRhcmdldFZpZXcoKTsK
KyAgICAgICAgICAgIGlmICghZnJhbWVidWZmZXJSVFYpCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgLy8gQSBtYXNrZWQgY2xlYXIgaXMgcmVxdWlyZWQsIG9yIGEgc2Npc3NvcmVkIGNs
ZWFyIGlzIHJlcXVpcmVkIGFuZCBJRDNEMTFEZXZpY2VDb250ZXh0MTo6Q2xlYXJWaWV3IGlzIHVu
YXZhaWxhYmxlCi0gICAgICAgICAgICAgICAgTWFza2VkUmVuZGVyVGFyZ2V0IG1hc2tBbmRSdDsK
LSAgICAgICAgICAgICAgICBib29sIGNsZWFyQ29sb3IgICAgICAgID0gY2xlYXJQYXJhbXMuY2xl
YXJDb2xvcltjb2xvckF0dGFjaG1lbnRJbmRleF07Ci0gICAgICAgICAgICAgICAgbWFza0FuZFJ0
LmNvbG9yTWFza1swXSA9IChjbGVhckNvbG9yICYmIGNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZCk7
Ci0gICAgICAgICAgICAgICAgbWFza0FuZFJ0LmNvbG9yTWFza1sxXSA9IChjbGVhckNvbG9yICYm
IGNsZWFyUGFyYW1zLmNvbG9yTWFza0dyZWVuKTsKLSAgICAgICAgICAgICAgICBtYXNrQW5kUnQu
Y29sb3JNYXNrWzJdID0gKGNsZWFyQ29sb3IgJiYgY2xlYXJQYXJhbXMuY29sb3JNYXNrQmx1ZSk7
Ci0gICAgICAgICAgICAgICAgbWFza0FuZFJ0LmNvbG9yTWFza1szXSA9IChjbGVhckNvbG9yICYm
IGNsZWFyUGFyYW1zLmNvbG9yTWFza0FscGhhKTsKLSAgICAgICAgICAgICAgICBtYXNrQW5kUnQu
cmVuZGVyVGFyZ2V0ID0gcmVuZGVyVGFyZ2V0OwotICAgICAgICAgICAgICAgIG1hc2tlZENsZWFy
UmVuZGVyVGFyZ2V0cy5wdXNoX2JhY2sobWFza0FuZFJ0KTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6Ok91dE9mTWVtb3J5KCkKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgIkNsZWFyMTE6
IFJlbmRlciB0YXJnZXQgdmlldyBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiI7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmICgoIShtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZp
Y2VDYXBzKCkuc3VwcG9ydHNDbGVhclZpZXcpICYmIG5lZWRTY2lzc29yZWRDbGVhcikgfHwKKyAg
ICAgICAgICAgICAgICBjbGVhclBhcmFtcy5jb2xvckNsZWFyVHlwZSAhPSBHTF9GTE9BVCB8fAor
ICAgICAgICAgICAgICAgIChmb3JtYXRJbmZvLnJlZEJpdHMgPiAwICYmICFjbGVhclBhcmFtcy5j
b2xvck1hc2tSZWQpIHx8CisgICAgICAgICAgICAgICAgKGZvcm1hdEluZm8uZ3JlZW5CaXRzID4g
MCAmJiAhY2xlYXJQYXJhbXMuY29sb3JNYXNrR3JlZW4pIHx8CisgICAgICAgICAgICAgICAgKGZv
cm1hdEluZm8uYmx1ZUJpdHMgPiAwICYmICFjbGVhclBhcmFtcy5jb2xvck1hc2tCbHVlKSB8fAor
ICAgICAgICAgICAgICAgIChmb3JtYXRJbmZvLmFscGhhQml0cyA+IDAgJiYgIWNsZWFyUGFyYW1z
LmNvbG9yTWFza0FscGhhKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBydHZzW251
bVJ0dnNdICAgICA9IGZyYW1lYnVmZmVyUlRWOworICAgICAgICAgICAgICAgIHJ0dk1hc2tzW251
bVJ0dnNdID0gZ2xfZDNkMTE6OkdldENvbG9yTWFzaygmZm9ybWF0SW5mbykgJiBjb2xvck1hc2s7
CisgICAgICAgICAgICAgICAgbnVtUnR2cysrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAvLyBJRDNEMTFEZXZpY2VDb250
ZXh0OjpDbGVhclJlbmRlclRhcmdldFZpZXcgb3IgSUQzRDExRGV2aWNlQ29udGV4dDE6OkNsZWFy
VmlldyBpcyBwb3NzaWJsZQorICAgICAgICAgICAgICAgIC8vIElEM0QxMURldmljZUNvbnRleHQ6
OkNsZWFyUmVuZGVyVGFyZ2V0VmlldyBvciBJRDNEMTFEZXZpY2VDb250ZXh0MTo6Q2xlYXJWaWV3
IGlzCisgICAgICAgICAgICAgICAgLy8gcG9zc2libGUKIAotICAgICAgICAgICAgICAgIElEM0Qx
MVJlbmRlclRhcmdldFZpZXcgKmZyYW1lYnVmZmVyUlRWID0gcmVuZGVyVGFyZ2V0LT5nZXRSZW5k
ZXJUYXJnZXRWaWV3KCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFmcmFtZWJ1ZmZlclJUVikKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
T1VUX09GX01FTU9SWSwgIkludGVybmFsIHJlbmRlciB0YXJnZXQgdmlldyBwb2ludGVyIHVuZXhw
ZWN0ZWRseSBudWxsLiIpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGNv
bnN0IGF1dG8gJm5hdGl2ZUZvcm1hdCA9IHJlbmRlclRhcmdldC0+Z2V0Rm9ybWF0U2V0KCkuZm9y
bWF0OworICAgICAgICAgICAgICAgIGNvbnN0IGF1dG8gJm5hdGl2ZUZvcm1hdCA9IHJlbmRlclRh
cmdldC0+Z2V0Rm9ybWF0U2V0KCkuZm9ybWF0KCk7CiAKLSAgICAgICAgICAgICAgICAvLyBDaGVj
ayBpZiB0aGUgYWN0dWFsIGZvcm1hdCBoYXMgYSBjaGFubmVsIHRoYXQgdGhlIGludGVybmFsIGZv
cm1hdCBkb2VzIG5vdCBhbmQgc2V0IHRoZW0gdG8gdGhlCi0gICAgICAgICAgICAgICAgLy8gZGVm
YXVsdCB2YWx1ZXMKKyAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgYWN0dWFsIGZvcm1h
dCBoYXMgYSBjaGFubmVsIHRoYXQgdGhlIGludGVybmFsIGZvcm1hdCBkb2VzIG5vdCBhbmQKKyAg
ICAgICAgICAgICAgICAvLyBzZXQgdGhlbSB0byB0aGUgZGVmYXVsdCB2YWx1ZXMKICAgICAgICAg
ICAgICAgICBmbG9hdCBjbGVhclZhbHVlc1s0XSA9IHsKICAgICAgICAgICAgICAgICAgICAgKChm
b3JtYXRJbmZvLnJlZEJpdHMgPT0gMCAmJiBuYXRpdmVGb3JtYXQucmVkQml0cyA+IDApCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgPyAwLjBmCkBAIC0zNDgsOSArMzU4LDkgQEAgZ2w6OkVycm9y
IENsZWFyMTE6OmNsZWFyRnJhbWVidWZmZXIoY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZjbGVhclBh
cmFtcywKIAogICAgICAgICAgICAgICAgIGlmIChmb3JtYXRJbmZvLmFscGhhQml0cyA9PSAxKQog
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gU29tZSBkcml2ZXJzIGRv
IG5vdCBjb3JyZWN0bHkgaGFuZGxlIGNhbGxpbmcgQ2xlYXIoKSBvbiBhIGZvcm1hdCB3aXRoIDEt
Yml0IGFscGhhLgotICAgICAgICAgICAgICAgICAgICAvLyBUaGV5IGNhbiBpbmNvcnJlY3RseSBy
b3VuZCBhbGwgbm9uLXplcm8gdmFsdWVzIHVwIHRvIDEuMGYuIE5vdGUgdGhhdCBXQVJQIGRvZXMg
bm90IGRvIHRoaXMuCi0gICAgICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBoYW5kbGUgdGhl
IHJvdW5kaW5nIGZvciB0aGVtIGluc3RlYWQuCisgICAgICAgICAgICAgICAgICAgIC8vIFNvbWUg
ZHJpdmVycyBkbyBub3QgY29ycmVjdGx5IGhhbmRsZSBjYWxsaW5nIENsZWFyKCkgb24gYSBmb3Jt
YXQgd2l0aCAxLWJpdAorICAgICAgICAgICAgICAgICAgICAvLyBhbHBoYS4gVGhleSBjYW4gaW5j
b3JyZWN0bHkgcm91bmQgYWxsIG5vbi16ZXJvIHZhbHVlcyB1cCB0byAxLjBmLiBOb3RlIHRoYXQK
KyAgICAgICAgICAgICAgICAgICAgLy8gV0FSUCBkb2VzIG5vdCBkbyB0aGlzLiBXZSBzaG91bGQg
aGFuZGxlIHRoZSByb3VuZGluZyBmb3IgdGhlbSBpbnN0ZWFkLgogICAgICAgICAgICAgICAgICAg
ICBjbGVhclZhbHVlc1szXSA9IChjbGVhclBhcmFtcy5jb2xvckZDbGVhclZhbHVlLmFscGhhID49
IDAuNWYpID8gMS4wZiA6IDAuMGY7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0zNjAsNTcgKzM3
MCw2NyBAQCBnbDo6RXJyb3IgQ2xlYXIxMTo6Y2xlYXJGcmFtZWJ1ZmZlcihjb25zdCBDbGVhclBh
cmFtZXRlcnMgJmNsZWFyUGFyYW1zLAogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoZGV2aWNl
Q29udGV4dDEpOwogCiAgICAgICAgICAgICAgICAgICAgIEQzRDExX1JFQ1QgcmVjdDsKLSAgICAg
ICAgICAgICAgICAgICAgcmVjdC5sZWZ0ID0gY2xlYXJQYXJhbXMuc2Npc3Nvci54OwotICAgICAg
ICAgICAgICAgICAgICByZWN0LnJpZ2h0ID0gY2xlYXJQYXJhbXMuc2Npc3Nvci54ICsgY2xlYXJQ
YXJhbXMuc2Npc3Nvci53aWR0aDsKLSAgICAgICAgICAgICAgICAgICAgcmVjdC50b3AgPSBjbGVh
clBhcmFtcy5zY2lzc29yLnk7CisgICAgICAgICAgICAgICAgICAgIHJlY3QubGVmdCAgID0gY2xl
YXJQYXJhbXMuc2Npc3Nvci54OworICAgICAgICAgICAgICAgICAgICByZWN0LnJpZ2h0ICA9IGNs
ZWFyUGFyYW1zLnNjaXNzb3IueCArIGNsZWFyUGFyYW1zLnNjaXNzb3Iud2lkdGg7CisgICAgICAg
ICAgICAgICAgICAgIHJlY3QudG9wICAgID0gY2xlYXJQYXJhbXMuc2Npc3Nvci55OwogICAgICAg
ICAgICAgICAgICAgICByZWN0LmJvdHRvbSA9IGNsZWFyUGFyYW1zLnNjaXNzb3IueSArIGNsZWFy
UGFyYW1zLnNjaXNzb3IuaGVpZ2h0OwogCiAgICAgICAgICAgICAgICAgICAgIGRldmljZUNvbnRl
eHQxLT5DbGVhclZpZXcoZnJhbWVidWZmZXJSVFYsIGNsZWFyVmFsdWVzLCAmcmVjdCwgMSk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChtUmVuZGVyZXItPmdldFdvcmthcm91bmRzKCkuY2FsbENs
ZWFyVHdpY2VPblNtYWxsVGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoY2xlYXJQYXJhbXMuc2Npc3Nvci53aWR0aCA8PSAxNiB8fCBjbGVh
clBhcmFtcy5zY2lzc29yLmhlaWdodCA8PSAxNikKKyAgICAgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDb250ZXh0MS0+Q2xlYXJWaWV3KGZy
YW1lYnVmZmVyUlRWLCBjbGVhclZhbHVlcywgJnJlY3QsIDEpOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGRl
dmljZUNvbnRleHQtPkNsZWFyUmVuZGVyVGFyZ2V0VmlldyhmcmFtZWJ1ZmZlclJUViwgY2xlYXJW
YWx1ZXMpOworICAgICAgICAgICAgICAgICAgICBpZiAobVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5k
cygpLmNhbGxDbGVhclR3aWNlT25TbWFsbFRhcmdldCkKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZyYW1lYnVmZmVyU2l6ZS53aWR0aCA8PSAxNiB8
fCBmcmFtZWJ1ZmZlclNpemUuaGVpZ2h0IDw9IDE2KQorICAgICAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNvbnRleHQtPkNsZWFyUmVuZGVy
VGFyZ2V0VmlldyhmcmFtZWJ1ZmZlclJUViwgY2xlYXJWYWx1ZXMpOworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGNsZWFyUGFyYW1zLmNsZWFy
RGVwdGggfHwgY2xlYXJQYXJhbXMuY2xlYXJTdGVuY2lsKQorICAgIGlmIChkZXB0aFN0ZW5jaWxS
ZW5kZXJUYXJnZXQpCiAgICAgewotICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2ht
ZW50ICphdHRhY2htZW50ID0gKGRlcHRoQXR0YWNobWVudCAhPSBudWxscHRyKSA/IGRlcHRoQXR0
YWNobWVudCA6IHN0ZW5jaWxBdHRhY2htZW50OwotICAgICAgICBBU1NFUlQoYXR0YWNobWVudCAh
PSBudWxscHRyKTsKKyAgICAgICAgZHN2ID0gZGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0LT5nZXRE
ZXB0aFN0ZW5jaWxWaWV3KCk7CiAKLSAgICAgICAgUmVuZGVyVGFyZ2V0MTEgKnJlbmRlclRhcmdl
dCA9IG51bGxwdHI7Ci0gICAgICAgIEFOR0xFX1RSWShhdHRhY2htZW50LT5nZXRSZW5kZXJUYXJn
ZXQoJnJlbmRlclRhcmdldCkpOworICAgICAgICBpZiAoIWRzdikKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGdsOjpPdXRPZk1lbW9yeSgpIDw8ICJDbGVhcjExOiBEZXB0aCBzdGVuY2ls
IHZpZXcgcG9pbnRlciB1bmV4cGVjdGVkbHkgbnVsbC4iOworICAgICAgICB9CiAKLSAgICAgICAg
Y29uc3QgYXV0byAmbmF0aXZlRm9ybWF0ID0gcmVuZGVyVGFyZ2V0LT5nZXRGb3JtYXRTZXQoKS5m
b3JtYXQ7CisgICAgICAgIGNvbnN0IGF1dG8gJm5hdGl2ZUZvcm1hdCA9IGRlcHRoU3RlbmNpbFJl
bmRlclRhcmdldC0+Z2V0Rm9ybWF0U2V0KCkuZm9ybWF0KCk7CisgICAgICAgIGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnN0ZW5jaWxBdHRhY2htZW50ID0gZmJvRGF0YS5nZXRTdGVu
Y2lsQXR0YWNobWVudCgpOwogCi0gICAgICAgIHVuc2lnbmVkIGludCBzdGVuY2lsVW5tYXNrZWQg
PQorICAgICAgICB1aW50MzJfdCBzdGVuY2lsVW5tYXNrZWQgPQogICAgICAgICAgICAgKHN0ZW5j
aWxBdHRhY2htZW50ICE9IG51bGxwdHIpID8gKDEgPDwgbmF0aXZlRm9ybWF0LnN0ZW5jaWxCaXRz
KSAtIDEgOiAwOwotICAgICAgICBib29sIG5lZWRNYXNrZWRTdGVuY2lsQ2xlYXIgPSBjbGVhclBh
cmFtcy5jbGVhclN0ZW5jaWwgJiYgKGNsZWFyUGFyYW1zLnN0ZW5jaWxXcml0ZU1hc2sgJiBzdGVu
Y2lsVW5tYXNrZWQpICE9IHN0ZW5jaWxVbm1hc2tlZDsKKyAgICAgICAgYm9vbCBuZWVkTWFza2Vk
U3RlbmNpbENsZWFyID0KKyAgICAgICAgICAgIGNsZWFyUGFyYW1zLmNsZWFyU3RlbmNpbCAmJgor
ICAgICAgICAgICAgKGNsZWFyUGFyYW1zLnN0ZW5jaWxXcml0ZU1hc2sgJiBzdGVuY2lsVW5tYXNr
ZWQpICE9IHN0ZW5jaWxVbm1hc2tlZDsKIAotICAgICAgICBpZiAobmVlZFNjaXNzb3JlZENsZWFy
IHx8IG5lZWRNYXNrZWRTdGVuY2lsQ2xlYXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1hc2tl
ZENsZWFyRGVwdGhTdGVuY2lsID0gcmVuZGVyVGFyZ2V0OwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UKKyAgICAgICAgaWYgKCFuZWVkU2Npc3NvcmVkQ2xlYXIgJiYgIW5lZWRNYXNrZWRTdGVuY2ls
Q2xlYXIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmZy
YW1lYnVmZmVyRFNWID0gcmVuZGVyVGFyZ2V0LT5nZXREZXB0aFN0ZW5jaWxWaWV3KCk7Ci0gICAg
ICAgICAgICBpZiAoIWZyYW1lYnVmZmVyRFNWKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkludGVybmFsIGRlcHRoIHN0
ZW5jaWwgdmlldyBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOwotICAgICAgICAgICAgfQor
ICAgICAgICAgICAgY29uc3QgVUlOVCBjbGVhckZsYWdzID0gKGNsZWFyUGFyYW1zLmNsZWFyRGVw
dGggPyBEM0QxMV9DTEVBUl9ERVBUSCA6IDApIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChjbGVhclBhcmFtcy5jbGVhclN0ZW5jaWwgPyBEM0QxMV9DTEVBUl9TVEVOQ0lM
IDogMCk7CisgICAgICAgICAgICBjb25zdCBGTE9BVCBkZXB0aENsZWFyICAgPSBnbDo6Y2xhbXAw
MShjbGVhclBhcmFtcy5kZXB0aENsZWFyVmFsdWUpOworICAgICAgICAgICAgY29uc3QgVUlOVDgg
c3RlbmNpbENsZWFyID0gY2xlYXJQYXJhbXMuc3RlbmNpbENsZWFyVmFsdWUgJiAweEZGOwogCi0g
ICAgICAgICAgICBVSU5UIGNsZWFyRmxhZ3MgPSAoY2xlYXJQYXJhbXMuY2xlYXJEZXB0aCAgID8g
RDNEMTFfQ0xFQVJfREVQVEggICA6IDApIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGNsZWFyUGFyYW1zLmNsZWFyU3RlbmNpbCA/IEQzRDExX0NMRUFSX1NURU5DSUwgOiAwKTsK
LSAgICAgICAgICAgIEZMT0FUIGRlcHRoQ2xlYXIgPSBnbDo6Y2xhbXAwMShjbGVhclBhcmFtcy5k
ZXB0aENsZWFyVmFsdWUpOwotICAgICAgICAgICAgVUlOVDggc3RlbmNpbENsZWFyID0gY2xlYXJQ
YXJhbXMuc3RlbmNpbENsZWFyVmFsdWUgJiAweEZGOworICAgICAgICAgICAgZGV2aWNlQ29udGV4
dC0+Q2xlYXJEZXB0aFN0ZW5jaWxWaWV3KGRzdiwgY2xlYXJGbGFncywgZGVwdGhDbGVhciwgc3Rl
bmNpbENsZWFyKTsKIAotICAgICAgICAgICAgZGV2aWNlQ29udGV4dC0+Q2xlYXJEZXB0aFN0ZW5j
aWxWaWV3KGZyYW1lYnVmZmVyRFNWLCBjbGVhckZsYWdzLCBkZXB0aENsZWFyLCBzdGVuY2lsQ2xl
YXIpOworICAgICAgICAgICAgZHN2ID0gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KIAotICAg
IGlmIChtYXNrZWRDbGVhclJlbmRlclRhcmdldHMuZW1wdHkoKSAmJiAhbWFza2VkQ2xlYXJEZXB0
aFN0ZW5jaWwpCisgICAgaWYgKG51bVJ0dnMgPT0gMCAmJiAhZHN2KQogICAgIHsKICAgICAgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQpAQCAtNDM4LDY2ICs0NTgsNjkgQEAgZ2w6OkVy
cm9yIENsZWFyMTE6OmNsZWFyRnJhbWVidWZmZXIoY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZjbGVh
clBhcmFtcywKICAgICAvLyBnbENsZWFyQnVmZmVyKiBjYWxscyBvbmx5IGNsZWFyIGEgc2luZ2xl
IHJlbmRlcmJ1ZmZlciBhdCBhIHRpbWUgd2hpY2ggaXMgdmVyaWZpZWQgdG8KICAgICAvLyBiZSBh
IGNvbXBhdGlibGUgY2xlYXIgdHlwZS4KIAotICAgIC8vIEJpbmQgYWxsIHRoZSByZW5kZXIgdGFy
Z2V0cyB3aGljaCBuZWVkIGNsZWFyaW5nCi0gICAgQVNTRVJUKG1hc2tlZENsZWFyUmVuZGVyVGFy
Z2V0cy5zaXplKCkgPD0gbVJlbmRlcmVyLT5nZXROYXRpdmVDYXBzKCkubWF4RHJhd0J1ZmZlcnMp
OwotICAgIHN0ZDo6dmVjdG9yPElEM0QxMVJlbmRlclRhcmdldFZpZXcgKj4gcnR2cyhtYXNrZWRD
bGVhclJlbmRlclRhcmdldHMuc2l6ZSgpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IG1hc2tlZENsZWFyUmVuZGVyVGFyZ2V0cy5zaXplKCk7IGkrKykKLSAgICB7Ci0gICAgICAg
IFJlbmRlclRhcmdldDExICpyZW5kZXJUYXJnZXQgPSBtYXNrZWRDbGVhclJlbmRlclRhcmdldHNb
aV0ucmVuZGVyVGFyZ2V0OwotICAgICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpydHYgID0g
cmVuZGVyVGFyZ2V0LT5nZXRSZW5kZXJUYXJnZXRWaWV3KCk7Ci0gICAgICAgIGlmICghcnR2KQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnRlcm5hbCByZW5kZXIgdGFyZ2V0IHZp
ZXcgcG9pbnRlciB1bmV4cGVjdGVkbHkgbnVsbC4iKTsKLSAgICAgICAgfQorICAgIEFTU0VSVChu
dW1SdHZzIDw9IG1SZW5kZXJlci0+Z2V0TmF0aXZlQ2FwcygpLm1heERyYXdCdWZmZXJzKTsKIAot
ICAgICAgICBydHZzW2ldID0gcnR2OworICAgIGNvbnN0IFVJTlQgc2FtcGxlTWFzayAgICAgICAg
PSAweEZGRkZGRkZGOworICAgIElEM0QxMUJsZW5kU3RhdGUgKmJsZW5kU3RhdGUgPSBudWxscHRy
OworCisgICAgaWYgKG51bVJ0dnMgPiAwKQorICAgIHsKKyAgICAgICAgLy8gU2V0dXAgQmxlbmRT
dGF0ZUtleSBwYXJhbWV0ZXJzCisgICAgICAgIG1CbGVuZFN0YXRlS2V5LmJsZW5kU3RhdGUuY29s
b3JNYXNrUmVkICAgPSBjbGVhclBhcmFtcy5jb2xvck1hc2tSZWQ7CisgICAgICAgIG1CbGVuZFN0
YXRlS2V5LmJsZW5kU3RhdGUuY29sb3JNYXNrR3JlZW4gPSBjbGVhclBhcmFtcy5jb2xvck1hc2tH
cmVlbjsKKyAgICAgICAgbUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZS5jb2xvck1hc2tCbHVlICA9
IGNsZWFyUGFyYW1zLmNvbG9yTWFza0JsdWU7CisgICAgICAgIG1CbGVuZFN0YXRlS2V5LmJsZW5k
U3RhdGUuY29sb3JNYXNrQWxwaGEgPSBjbGVhclBhcmFtcy5jb2xvck1hc2tBbHBoYTsKKyAgICAg
ICAgbUJsZW5kU3RhdGVLZXkubXJ0ICAgICAgICAgICAgICAgICAgICAgICA9IG51bVJ0dnMgPiAx
OworICAgICAgICBtZW1jcHkobUJsZW5kU3RhdGVLZXkucnR2TWFza3MsICZydHZNYXNrc1swXSwg
c2l6ZW9mKG1CbGVuZFN0YXRlS2V5LnJ0dk1hc2tzKSk7CisKKyAgICAgICAgLy8gR2V0IEJsZW5k
U3RhdGUKKyAgICAgICAgQU5HTEVfVFJZKG1SZW5kZXJlci0+Z2V0U3RhdGVDYWNoZSgpLmdldEJs
ZW5kU3RhdGUobUJsZW5kU3RhdGVLZXksICZibGVuZFN0YXRlKSk7CiAgICAgfQotICAgIElEM0Qx
MURlcHRoU3RlbmNpbFZpZXcgKmRzdiA9Ci0gICAgICAgIG1hc2tlZENsZWFyRGVwdGhTdGVuY2ls
ID8gbWFza2VkQ2xlYXJEZXB0aFN0ZW5jaWwtPmdldERlcHRoU3RlbmNpbFZpZXcoKSA6IG51bGxw
dHI7CiAKLSAgICBJRDNEMTFCbGVuZFN0YXRlICpibGVuZFN0YXRlID0gZ2V0QmxlbmRTdGF0ZSht
YXNrZWRDbGVhclJlbmRlclRhcmdldHMpOwotICAgIGNvbnN0IEZMT0FUIGJsZW5kRmFjdG9yc1s0
XSAgPSB7MS4wZiwgMS4wZiwgMS4wZiwgMS4wZn07Ci0gICAgY29uc3QgVUlOVCBzYW1wbGVNYXNr
ICAgICAgICA9IDB4RkZGRkZGRkY7CisgICAgY29uc3QgVUlOVCBzdGVuY2lsVmFsdWUgICAgICAg
ICAgPSBjbGVhclBhcmFtcy5zdGVuY2lsQ2xlYXJWYWx1ZSAmIDB4RkY7CisgICAgSUQzRDExRGVw
dGhTdGVuY2lsU3RhdGUgKmRzU3RhdGUgPSBudWxscHRyOworICAgIGNvbnN0IGZsb2F0ICp6VmFs
dWUgICAgICAgICAgICAgID0gbnVsbHB0cjsKIAotICAgIElEM0QxMURlcHRoU3RlbmNpbFN0YXRl
ICpkc1N0YXRlID0gZ2V0RGVwdGhTdGVuY2lsU3RhdGUoY2xlYXJQYXJhbXMpOwotICAgIGNvbnN0
IFVJTlQgc3RlbmNpbENsZWFyICAgICAgICAgID0gY2xlYXJQYXJhbXMuc3RlbmNpbENsZWFyVmFs
dWUgJiAweEZGOworICAgIGlmIChkc3YpCisgICAgeworICAgICAgICAvLyBTZXR1cCBEZXB0aFN0
ZW5jaWxTdGF0ZUtleQorICAgICAgICBtRGVwdGhTdGVuY2lsU3RhdGVLZXkuZGVwdGhUZXN0ICAg
ICAgICA9IGNsZWFyUGFyYW1zLmNsZWFyRGVwdGg7CisgICAgICAgIG1EZXB0aFN0ZW5jaWxTdGF0
ZUtleS5kZXB0aE1hc2sgICAgICAgID0gY2xlYXJQYXJhbXMuY2xlYXJEZXB0aDsKKyAgICAgICAg
bURlcHRoU3RlbmNpbFN0YXRlS2V5LnN0ZW5jaWxXcml0ZW1hc2sgPSBjbGVhclBhcmFtcy5zdGVu
Y2lsV3JpdGVNYXNrOworICAgICAgICBtRGVwdGhTdGVuY2lsU3RhdGVLZXkuc3RlbmNpbFRlc3Qg
ICAgICA9IGNsZWFyUGFyYW1zLmNsZWFyU3RlbmNpbDsKKworICAgICAgICAvLyBHZXQgRGVwdGhT
dGVuY2lsU3RhdGUKKyAgICAgICAgQU5HTEVfVFJZKG1SZW5kZXJlci0+Z2V0U3RhdGVDYWNoZSgp
LmdldERlcHRoU3RlbmNpbFN0YXRlKG1EZXB0aFN0ZW5jaWxTdGF0ZUtleSwgJmRzU3RhdGUpKTsK
KyAgICAgICAgelZhbHVlID0gY2xlYXJQYXJhbXMuY2xlYXJEZXB0aCA/ICZjbGVhclBhcmFtcy5k
ZXB0aENsZWFyVmFsdWUgOiBudWxscHRyOworICAgIH0KIAogICAgIC8vIFNldCB0aGUgdmVydGlj
ZXMKLSAgICBVSU5UIHZlcnRleFN0cmlkZSAgID0gMDsKLSAgICBjb25zdCBVSU5UIHN0YXJ0SWR4
ID0gMDsKICAgICBDbGVhclNoYWRlciAqc2hhZGVyID0gbnVsbHB0cjsKICAgICBEM0QxMV9NQVBQ
RURfU1VCUkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7CiAgICAgSFJFU1VMVCByZXN1bHQgPQotICAg
ICAgICBkZXZpY2VDb250ZXh0LT5NYXAobVZlcnRleEJ1ZmZlciwgMCwgRDNEMTFfTUFQX1dSSVRF
X0RJU0NBUkQsIDAsICZtYXBwZWRSZXNvdXJjZSk7CisgICAgICAgIGRldmljZUNvbnRleHQtPk1h
cChtVmVydGV4QnVmZmVyLkdldCgpLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FSRCwgMCwgJm1h
cHBlZFJlc291cmNlKTsKICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgewotICAgICAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIkZhaWxlZCB0byBtYXAgaW50ZXJuYWwgbWFza2VkIGNsZWFyIHZlcnRleCBidWZmZXIsIEhS
RVNVTFQ6IDB4JVguIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOworICAgICAg
ICByZXR1cm4gZ2w6Ok91dE9mTWVtb3J5KCkgPDwgIkNsZWFyMTE6IEZhaWxlZCB0byBtYXAgaW50
ZXJuYWwgVkIsICIgPDwgcmVzdWx0OwogICAgIH0KIAotICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUg
KnNjaXNzb3JQdHIgPSBjbGVhclBhcmFtcy5zY2lzc29yRW5hYmxlZCA/ICZjbGVhclBhcmFtcy5z
Y2lzc29yIDogbnVsbHB0cjsKICAgICBzd2l0Y2ggKGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJUeXBl
KQogICAgIHsKICAgICAgICAgY2FzZSBHTF9GTE9BVDoKLSAgICAgICAgICAgIEFwcGx5VmVydGlj
ZXMoZnJhbWVidWZmZXJTaXplLCBzY2lzc29yUHRyLCBjbGVhclBhcmFtcy5jb2xvckZDbGVhclZh
bHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5kZXB0aENsZWFyVmFs
dWUsIG1hcHBlZFJlc291cmNlLnBEYXRhKTsKLSAgICAgICAgICAgIHZlcnRleFN0cmlkZSA9IHNp
emVvZihkM2QxMTo6UG9zaXRpb25EZXB0aENvbG9yVmVydGV4PGZsb2F0Pik7CisgICAgICAgICAg
ICBBcHBseVZlcnRpY2VzKGNsZWFyUGFyYW1zLmNvbG9yRkNsZWFyVmFsdWUsIGNsZWFyUGFyYW1z
LmRlcHRoQ2xlYXJWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGVkUmVzb3Vy
Y2UucERhdGEpOwogICAgICAgICAgICAgc2hhZGVyICAgICAgID0gbUZsb2F0Q2xlYXJTaGFkZXI7
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKLSAg
ICAgICAgICAgIEFwcGx5VmVydGljZXMoZnJhbWVidWZmZXJTaXplLCBzY2lzc29yUHRyLCBjbGVh
clBhcmFtcy5jb2xvclVJQ2xlYXJWYWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY2xl
YXJQYXJhbXMuZGVwdGhDbGVhclZhbHVlLCBtYXBwZWRSZXNvdXJjZS5wRGF0YSk7Ci0gICAgICAg
ICAgICB2ZXJ0ZXhTdHJpZGUgPSBzaXplb2YoZDNkMTE6OlBvc2l0aW9uRGVwdGhDb2xvclZlcnRl
eDx1bnNpZ25lZCBpbnQ+KTsKKyAgICAgICAgICAgIEFwcGx5VmVydGljZXMoY2xlYXJQYXJhbXMu
Y29sb3JVSUNsZWFyVmFsdWUsIGNsZWFyUGFyYW1zLmRlcHRoQ2xlYXJWYWx1ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWFwcGVkUmVzb3VyY2UucERhdGEpOwogICAgICAgICAgICAgc2hh
ZGVyICAgICAgID0gbVVpbnRDbGVhclNoYWRlcjsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgIGNhc2UgR0xfSU5UOgotICAgICAgICAgICAgQXBwbHlWZXJ0aWNlcyhmcmFtZWJ1ZmZlclNp
emUsIHNjaXNzb3JQdHIsIGNsZWFyUGFyYW1zLmNvbG9ySUNsZWFyVmFsdWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGNsZWFyUGFyYW1zLmRlcHRoQ2xlYXJWYWx1ZSwgbWFwcGVkUmVzb3Vy
Y2UucERhdGEpOwotICAgICAgICAgICAgdmVydGV4U3RyaWRlID0gc2l6ZW9mKGQzZDExOjpQb3Np
dGlvbkRlcHRoQ29sb3JWZXJ0ZXg8aW50Pik7CisgICAgICAgICAgICBBcHBseVZlcnRpY2VzKGNs
ZWFyUGFyYW1zLmNvbG9ySUNsZWFyVmFsdWUsIGNsZWFyUGFyYW1zLmRlcHRoQ2xlYXJWYWx1ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGVkUmVzb3VyY2UucERhdGEpOwogICAgICAg
ICAgICAgc2hhZGVyICAgICAgID0gbUludENsZWFyU2hhZGVyOwogICAgICAgICAgICAgYnJlYWs7
CiAKQEAgLTUwNiw3ICs1MjksNyBAQCBnbDo6RXJyb3IgQ2xlYXIxMTo6Y2xlYXJGcmFtZWJ1ZmZl
cihjb25zdCBDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zLAogICAgICAgICAgICAgYnJlYWs7
CiAgICAgfQogCi0gICAgZGV2aWNlQ29udGV4dC0+VW5tYXAobVZlcnRleEJ1ZmZlciwgMCk7Cisg
ICAgZGV2aWNlQ29udGV4dC0+VW5tYXAobVZlcnRleEJ1ZmZlci5HZXQoKSwgMCk7CiAKICAgICAv
LyBTZXQgdGhlIHZpZXdwb3J0IHRvIGJlIHRoZSBzYW1lIHNpemUgYXMgdGhlIGZyYW1lYnVmZmVy
CiAgICAgRDNEMTFfVklFV1BPUlQgdmlld3BvcnQ7CkBAIC01MTksMjIgKzU0MiwzNSBAQCBnbDo6
RXJyb3IgQ2xlYXIxMTo6Y2xlYXJGcmFtZWJ1ZmZlcihjb25zdCBDbGVhclBhcmFtZXRlcnMgJmNs
ZWFyUGFyYW1zLAogICAgIGRldmljZUNvbnRleHQtPlJTU2V0Vmlld3BvcnRzKDEsICZ2aWV3cG9y
dCk7CiAKICAgICAvLyBBcHBseSBzdGF0ZQotICAgIGRldmljZUNvbnRleHQtPk9NU2V0QmxlbmRT
dGF0ZShibGVuZFN0YXRlLCBibGVuZEZhY3RvcnMsIHNhbXBsZU1hc2spOwotICAgIGRldmljZUNv
bnRleHQtPk9NU2V0RGVwdGhTdGVuY2lsU3RhdGUoZHNTdGF0ZSwgc3RlbmNpbENsZWFyKTsKLSAg
ICBkZXZpY2VDb250ZXh0LT5SU1NldFN0YXRlKG1SYXN0ZXJpemVyU3RhdGUpOworICAgIGRldmlj
ZUNvbnRleHQtPk9NU2V0QmxlbmRTdGF0ZShibGVuZFN0YXRlLCBudWxscHRyLCBzYW1wbGVNYXNr
KTsKKyAgICBkZXZpY2VDb250ZXh0LT5PTVNldERlcHRoU3RlbmNpbFN0YXRlKGRzU3RhdGUsIHN0
ZW5jaWxWYWx1ZSk7CisKKyAgICBpZiAobmVlZFNjaXNzb3JlZENsZWFyKQorICAgIHsKKyAgICAg
ICAgY29uc3QgRDNEMTFfUkVDVCBzY2lzc29yUmVjdCA9IHtjbGVhclBhcmFtcy5zY2lzc29yLngs
IGNsZWFyUGFyYW1zLnNjaXNzb3IueSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjbGVhclBhcmFtcy5zY2lzc29yLngxKCksIGNsZWFyUGFyYW1zLnNjaXNzb3IueTEo
KX07CisgICAgICAgIGRldmljZUNvbnRleHQtPlJTU2V0U2Npc3NvclJlY3RzKDEsICZzY2lzc29y
UmVjdCk7CisgICAgICAgIGRldmljZUNvbnRleHQtPlJTU2V0U3RhdGUobVNjaXNzb3JFbmFibGVk
UmFzdGVyaXplclN0YXRlLkdldCgpKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg
ZGV2aWNlQ29udGV4dC0+UlNTZXRTdGF0ZShtU2Npc3NvckRpc2FibGVkUmFzdGVyaXplclN0YXRl
LkdldCgpKTsKKyAgICB9CiAKICAgICAvLyBBcHBseSBzaGFkZXJzCisgICAgSUQzRDExRGV2aWNl
ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogICAgIGRldmljZUNvbnRleHQtPklB
U2V0SW5wdXRMYXlvdXQoc2hhZGVyLT5pbnB1dExheW91dC0+cmVzb2x2ZShkZXZpY2UpKTsKICAg
ICBkZXZpY2VDb250ZXh0LT5WU1NldFNoYWRlcihzaGFkZXItPnZlcnRleFNoYWRlci5yZXNvbHZl
KGRldmljZSksIG51bGxwdHIsIDApOwogICAgIGRldmljZUNvbnRleHQtPlBTU2V0U2hhZGVyKHNo
YWRlci0+cGl4ZWxTaGFkZXIucmVzb2x2ZShkZXZpY2UpLCBudWxscHRyLCAwKTsKICAgICBkZXZp
Y2VDb250ZXh0LT5HU1NldFNoYWRlcihudWxscHRyLCBudWxscHRyLCAwKTsKIAogICAgIC8vIEFw
cGx5IHZlcnRleCBidWZmZXIKLSAgICBkZXZpY2VDb250ZXh0LT5JQVNldFZlcnRleEJ1ZmZlcnMo
MCwgMSwgJm1WZXJ0ZXhCdWZmZXIsICZ2ZXJ0ZXhTdHJpZGUsICZzdGFydElkeCk7CisgICAgY29u
c3QgVUlOVCBvZmZzZXQgPSAwOworICAgIGRldmljZUNvbnRleHQtPklBU2V0VmVydGV4QnVmZmVy
cygwLCAxLCBtVmVydGV4QnVmZmVyLkdldEFkZHJlc3NPZigpLCAmZ19WZXJ0ZXhTaXplLCAmb2Zm
c2V0KTsKICAgICBkZXZpY2VDb250ZXh0LT5JQVNldFByaW1pdGl2ZVRvcG9sb2d5KEQzRF9QUklN
SVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVTVFJJUCk7CiAKICAgICAvLyBBcHBseSByZW5kZXIgdGFy
Z2V0cwotICAgIG1SZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCktPnNldE9uZVRpbWVSZW5kZXJU
YXJnZXRzKHJ0dnMsIGRzdik7CisgICAgbVJlbmRlcmVyLT5nZXRTdGF0ZU1hbmFnZXIoKS0+c2V0
T25lVGltZVJlbmRlclRhcmdldHMoJnJ0dnNbMF0sIG51bVJ0dnMsIGRzdik7CiAKICAgICAvLyBE
cmF3IHRoZSBjbGVhciBxdWFkCiAgICAgZGV2aWNlQ29udGV4dC0+RHJhdyg0LCAwKTsKQEAgLTU0
NCwxMDkgKzU4MCw0IEBAIGdsOjpFcnJvciBDbGVhcjExOjpjbGVhckZyYW1lYnVmZmVyKGNvbnN0
IENsZWFyUGFyYW1ldGVycyAmY2xlYXJQYXJhbXMsCiAKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKIH0KLQotSUQzRDExQmxlbmRTdGF0ZSAqQ2xlYXIxMTo6Z2V0QmxlbmRTdGF0ZShjb25zdCBz
dGQ6OnZlY3RvcjxNYXNrZWRSZW5kZXJUYXJnZXQ+JiBydHMpCi17Ci0gICAgQ2xlYXJCbGVuZElu
Zm8gYmxlbmRLZXkgPSB7fTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IEQzRDEx
X1NJTVVMVEFORU9VU19SRU5ERVJfVEFSR0VUX0NPVU5UOyBpKyspCi0gICAgewotICAgICAgICBp
ZiAoaSA8IHJ0cy5zaXplKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFJlbmRlclRhcmdldDEx
ICpydCA9IHJ0c1tpXS5yZW5kZXJUYXJnZXQ7Ci0gICAgICAgICAgICBjb25zdCBnbDo6SW50ZXJu
YWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKHJ0LT5nZXRJ
bnRlcm5hbEZvcm1hdCgpKTsKLQotICAgICAgICAgICAgYmxlbmRLZXkubWFza0NoYW5uZWxzW2ld
WzBdID0gKHJ0c1tpXS5jb2xvck1hc2tbMF0gJiYgZm9ybWF0SW5mby5yZWRCaXRzICAgPiAwKTsK
LSAgICAgICAgICAgIGJsZW5kS2V5Lm1hc2tDaGFubmVsc1tpXVsxXSA9IChydHNbaV0uY29sb3JN
YXNrWzFdICYmIGZvcm1hdEluZm8uZ3JlZW5CaXRzID4gMCk7Ci0gICAgICAgICAgICBibGVuZEtl
eS5tYXNrQ2hhbm5lbHNbaV1bMl0gPSAocnRzW2ldLmNvbG9yTWFza1syXSAmJiBmb3JtYXRJbmZv
LmJsdWVCaXRzICA+IDApOwotICAgICAgICAgICAgYmxlbmRLZXkubWFza0NoYW5uZWxzW2ldWzNd
ID0gKHJ0c1tpXS5jb2xvck1hc2tbM10gJiYgZm9ybWF0SW5mby5hbHBoYUJpdHMgPiAwKTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGJsZW5kS2V5Lm1h
c2tDaGFubmVsc1tpXVswXSA9IGZhbHNlOwotICAgICAgICAgICAgYmxlbmRLZXkubWFza0NoYW5u
ZWxzW2ldWzFdID0gZmFsc2U7Ci0gICAgICAgICAgICBibGVuZEtleS5tYXNrQ2hhbm5lbHNbaV1b
Ml0gPSBmYWxzZTsKLSAgICAgICAgICAgIGJsZW5kS2V5Lm1hc2tDaGFubmVsc1tpXVszXSA9IGZh
bHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQ2xlYXJCbGVuZFN0YXRlTWFwOjpjb25zdF9p
dGVyYXRvciBpID0gbUNsZWFyQmxlbmRTdGF0ZXMuZmluZChibGVuZEtleSk7Ci0gICAgaWYgKGkg
IT0gbUNsZWFyQmxlbmRTdGF0ZXMuZW5kKCkpCi0gICAgewotICAgICAgICByZXR1cm4gaS0+c2Vj
b25kOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBEM0QxMV9CTEVORF9ERVNDIGJs
ZW5kRGVzYyA9IHsgMCB9OwotICAgICAgICBibGVuZERlc2MuQWxwaGFUb0NvdmVyYWdlRW5hYmxl
ID0gRkFMU0U7Ci0gICAgICAgIGJsZW5kRGVzYy5JbmRlcGVuZGVudEJsZW5kRW5hYmxlID0gKHJ0
cy5zaXplKCkgPiAxKSA/IFRSVUUgOiBGQUxTRTsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBqID0gMDsgaiA8IEQzRDExX1NJTVVMVEFORU9VU19SRU5ERVJfVEFSR0VUX0NPVU5UOyBqKysp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGJsZW5kRGVzYy5SZW5kZXJUYXJnZXRbal0uQmxlbmRF
bmFibGUgPSBGQUxTRTsKLSAgICAgICAgICAgIGJsZW5kRGVzYy5SZW5kZXJUYXJnZXRbal0uUmVu
ZGVyVGFyZ2V0V3JpdGVNYXNrID0gZ2xfZDNkMTE6OkNvbnZlcnRDb2xvck1hc2soYmxlbmRLZXku
bWFza0NoYW5uZWxzW2pdWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGVu
ZEtleS5tYXNrQ2hhbm5lbHNbal1bMV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJsZW5kS2V5Lm1hc2tDaGFubmVsc1tqXVsyXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYmxlbmRLZXkubWFza0NoYW5uZWxzW2pdWzNdKTsKLSAgICAgICAgfQotCi0gICAgICAg
IElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKLSAgICAgICAg
SUQzRDExQmxlbmRTdGF0ZSogYmxlbmRTdGF0ZSA9IG51bGxwdHI7Ci0gICAgICAgIEhSRVNVTFQg
cmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVCbGVuZFN0YXRlKCZibGVuZERlc2MsICZibGVuZFN0YXRl
KTsKLSAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpIHx8ICFibGVuZFN0YXRlKQotICAgICAgICB7
Ci0gICAgICAgICAgICBFUlIoIlVuYWJsZSB0byBjcmVhdGUgYSBJRDNEMTFCbGVuZFN0YXRlLCBI
UkVTVUxUOiAweCVYLiIsIHJlc3VsdCk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICAgICAgfQotCi0gICAgICAgIG1DbGVhckJsZW5kU3RhdGVzW2JsZW5kS2V5XSA9IGJsZW5kU3Rh
dGU7Ci0KLSAgICAgICAgcmV0dXJuIGJsZW5kU3RhdGU7Ci0gICAgfQotfQotCi1JRDNEMTFEZXB0
aFN0ZW5jaWxTdGF0ZSAqQ2xlYXIxMTo6Z2V0RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgQ2xlYXJQ
YXJhbWV0ZXJzICZjbGVhclBhcmFtcykKLXsKLSAgICBDbGVhckRlcHRoU3RlbmNpbEluZm8gZHNL
ZXkgPSB7IDAgfTsKLSAgICBkc0tleS5jbGVhckRlcHRoID0gY2xlYXJQYXJhbXMuY2xlYXJEZXB0
aDsKLSAgICBkc0tleS5jbGVhclN0ZW5jaWwgPSBjbGVhclBhcmFtcy5jbGVhclN0ZW5jaWw7Ci0g
ICAgZHNLZXkuc3RlbmNpbFdyaXRlTWFzayA9IGNsZWFyUGFyYW1zLnN0ZW5jaWxXcml0ZU1hc2sg
JiAweEZGOwotCi0gICAgQ2xlYXJEZXB0aFN0ZW5jaWxTdGF0ZU1hcDo6Y29uc3RfaXRlcmF0b3Ig
aSA9IG1DbGVhckRlcHRoU3RlbmNpbFN0YXRlcy5maW5kKGRzS2V5KTsKLSAgICBpZiAoaSAhPSBt
Q2xlYXJEZXB0aFN0ZW5jaWxTdGF0ZXMuZW5kKCkpCi0gICAgewotICAgICAgICByZXR1cm4gaS0+
c2Vjb25kOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBEM0QxMV9ERVBUSF9TVEVO
Q0lMX0RFU0MgZHNEZXNjID0geyAwIH07Ci0gICAgICAgIGRzRGVzYy5EZXB0aEVuYWJsZSA9IGRz
S2V5LmNsZWFyRGVwdGggPyBUUlVFIDogRkFMU0U7Ci0gICAgICAgIGRzRGVzYy5EZXB0aFdyaXRl
TWFzayA9IGRzS2V5LmNsZWFyRGVwdGggPyBEM0QxMV9ERVBUSF9XUklURV9NQVNLX0FMTCA6IEQz
RDExX0RFUFRIX1dSSVRFX01BU0tfWkVSTzsKLSAgICAgICAgZHNEZXNjLkRlcHRoRnVuYyA9IEQz
RDExX0NPTVBBUklTT05fQUxXQVlTOwotICAgICAgICBkc0Rlc2MuU3RlbmNpbEVuYWJsZSA9IGRz
S2V5LmNsZWFyU3RlbmNpbCA/IFRSVUUgOiBGQUxTRTsKLSAgICAgICAgZHNEZXNjLlN0ZW5jaWxS
ZWFkTWFzayA9IDA7Ci0gICAgICAgIGRzRGVzYy5TdGVuY2lsV3JpdGVNYXNrID0gZHNLZXkuc3Rl
bmNpbFdyaXRlTWFzazsKLSAgICAgICAgZHNEZXNjLkZyb250RmFjZS5TdGVuY2lsRmFpbE9wID0g
RDNEMTFfU1RFTkNJTF9PUF9SRVBMQUNFOwotICAgICAgICBkc0Rlc2MuRnJvbnRGYWNlLlN0ZW5j
aWxEZXB0aEZhaWxPcCA9IEQzRDExX1NURU5DSUxfT1BfUkVQTEFDRTsKLSAgICAgICAgZHNEZXNj
LkZyb250RmFjZS5TdGVuY2lsUGFzc09wID0gRDNEMTFfU1RFTkNJTF9PUF9SRVBMQUNFOwotICAg
ICAgICBkc0Rlc2MuRnJvbnRGYWNlLlN0ZW5jaWxGdW5jID0gRDNEMTFfQ09NUEFSSVNPTl9BTFdB
WVM7Ci0gICAgICAgIGRzRGVzYy5CYWNrRmFjZS5TdGVuY2lsRmFpbE9wID0gRDNEMTFfU1RFTkNJ
TF9PUF9SRVBMQUNFOwotICAgICAgICBkc0Rlc2MuQmFja0ZhY2UuU3RlbmNpbERlcHRoRmFpbE9w
ID0gRDNEMTFfU1RFTkNJTF9PUF9SRVBMQUNFOwotICAgICAgICBkc0Rlc2MuQmFja0ZhY2UuU3Rl
bmNpbFBhc3NPcCA9IEQzRDExX1NURU5DSUxfT1BfUkVQTEFDRTsKLSAgICAgICAgZHNEZXNjLkJh
Y2tGYWNlLlN0ZW5jaWxGdW5jID0gRDNEMTFfQ09NUEFSSVNPTl9BTFdBWVM7Ci0KLSAgICAgICAg
SUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwotICAgICAgICBJ
RDNEMTFEZXB0aFN0ZW5jaWxTdGF0ZSogZHNTdGF0ZSA9IG51bGxwdHI7Ci0gICAgICAgIEhSRVNV
TFQgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVEZXB0aFN0ZW5jaWxTdGF0ZSgmZHNEZXNjLCAmZHNT
dGF0ZSk7Ci0gICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSB8fCAhZHNTdGF0ZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgRVJSKCJVbmFibGUgdG8gY3JlYXRlIGEgSUQzRDExRGVwdGhTdGVuY2ls
U3RhdGUsIEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0KTsKLSAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgbUNsZWFyRGVwdGhTdGVuY2lsU3RhdGVzW2RzS2V5
XSA9IGRzU3RhdGU7Ci0KLSAgICAgICAgcmV0dXJuIGRzU3RhdGU7Ci0gICAgfQotfQotCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL0NsZWFyMTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvQ2xlYXIxMS5oCmluZGV4IDE1OTQwMjdlYzZmOTlmOWU3MWIx
MDJkYjQxNDE5MmZlNmM3NTY1ZGQuLjQ4YjI2Y2IwNDVhY2JhNjMxNDQ3MjQwMjM0YmI2ZThmZjlh
MWZmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvQ2xlYXIxMS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ2xlYXIxMS5oCkBAIC02MCwzNyArNjAs
MjAgQEAgY2xhc3MgQ2xlYXIxMSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICBkM2QxMTo6
TGF6eVNoYWRlcjxJRDNEMTFQaXhlbFNoYWRlcj4gcGl4ZWxTaGFkZXI7CiAgICAgfTsKIAotICAg
IHRlbXBsYXRlIDx1bnNpZ25lZCBpbnQgdnNTaXplLCB1bnNpZ25lZCBpbnQgcHNTaXplPgotICAg
IHN0YXRpYyBDbGVhclNoYWRlciBDcmVhdGVDbGVhclNoYWRlcihJRDNEMTFEZXZpY2UgKmRldmlj
ZSwgRFhHSV9GT1JNQVQgY29sb3JUeXBlLCBjb25zdCBCWVRFKCZ2c0J5dGVDb2RlKVt2c1NpemVd
LCBjb25zdCBCWVRFKCZwc0J5dGVDb2RlKVtwc1NpemVdKTsKLQotICAgIHN0cnVjdCBDbGVhckJs
ZW5kSW5mbwotICAgIHsKLSAgICAgICAgYm9vbCBtYXNrQ2hhbm5lbHNbRDNEMTFfU0lNVUxUQU5F
T1VTX1JFTkRFUl9UQVJHRVRfQ09VTlRdWzRdOwotICAgIH07Ci0gICAgdHlwZWRlZiBib29sKCpD
bGVhckJsZW5kSW5mb0NvbXBhcmlzb25GdW5jdGlvbikoY29uc3QgQ2xlYXJCbGVuZEluZm8mLCBj
b25zdCBDbGVhckJsZW5kSW5mbyAmKTsKLSAgICB0eXBlZGVmIHN0ZDo6bWFwPENsZWFyQmxlbmRJ
bmZvLCBJRDNEMTFCbGVuZFN0YXRlKiwgQ2xlYXJCbGVuZEluZm9Db21wYXJpc29uRnVuY3Rpb24+
IENsZWFyQmxlbmRTdGF0ZU1hcDsKLQotICAgIHN0cnVjdCBDbGVhckRlcHRoU3RlbmNpbEluZm8K
LSAgICB7Ci0gICAgICAgIGJvb2wgY2xlYXJEZXB0aDsKLSAgICAgICAgYm9vbCBjbGVhclN0ZW5j
aWw7Ci0gICAgICAgIFVJTlQ4IHN0ZW5jaWxXcml0ZU1hc2s7Ci0gICAgfTsKLSAgICB0eXBlZGVm
IGJvb2woKkNsZWFyRGVwdGhTdGVuY2lsSW5mb0NvbXBhcmlzb25GdW5jdGlvbikoY29uc3QgQ2xl
YXJEZXB0aFN0ZW5jaWxJbmZvJiwgY29uc3QgQ2xlYXJEZXB0aFN0ZW5jaWxJbmZvICYpOwotICAg
IHR5cGVkZWYgc3RkOjptYXA8Q2xlYXJEZXB0aFN0ZW5jaWxJbmZvLCBJRDNEMTFEZXB0aFN0ZW5j
aWxTdGF0ZSosIENsZWFyRGVwdGhTdGVuY2lsSW5mb0NvbXBhcmlzb25GdW5jdGlvbj4gQ2xlYXJE
ZXB0aFN0ZW5jaWxTdGF0ZU1hcDsKIAogICAgIFJlbmRlcmVyMTEgKm1SZW5kZXJlcjsKIAotICAg
IENsZWFyQmxlbmRTdGF0ZU1hcCBtQ2xlYXJCbGVuZFN0YXRlczsKKyAgICAvLyBTdGF0ZXMKKyAg
ICBhbmdsZTo6Q29tUHRyPElEM0QxMVJhc3Rlcml6ZXJTdGF0ZT4gbVNjaXNzb3JFbmFibGVkUmFz
dGVyaXplclN0YXRlOworICAgIGFuZ2xlOjpDb21QdHI8SUQzRDExUmFzdGVyaXplclN0YXRlPiBt
U2Npc3NvckRpc2FibGVkUmFzdGVyaXplclN0YXRlOworICAgIGdsOjpEZXB0aFN0ZW5jaWxTdGF0
ZSBtRGVwdGhTdGVuY2lsU3RhdGVLZXk7CisgICAgZDNkMTE6OkJsZW5kU3RhdGVLZXkgbUJsZW5k
U3RhdGVLZXk7CiAKKyAgICAvLyBTaGFkZXJzIGFuZCBTaGFkZXIgUmVzb3VyY2VzCiAgICAgQ2xl
YXJTaGFkZXIgKm1GbG9hdENsZWFyU2hhZGVyOwogICAgIENsZWFyU2hhZGVyICptVWludENsZWFy
U2hhZGVyOwogICAgIENsZWFyU2hhZGVyICptSW50Q2xlYXJTaGFkZXI7Ci0KLSAgICBDbGVhckRl
cHRoU3RlbmNpbFN0YXRlTWFwIG1DbGVhckRlcHRoU3RlbmNpbFN0YXRlczsKLQotICAgIElEM0Qx
MUJ1ZmZlciAqbVZlcnRleEJ1ZmZlcjsKLSAgICBJRDNEMTFSYXN0ZXJpemVyU3RhdGUgKm1SYXN0
ZXJpemVyU3RhdGU7CisgICAgYW5nbGU6OkNvbVB0cjxJRDNEMTFCdWZmZXI+IG1WZXJ0ZXhCdWZm
ZXI7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0NvbnRleHQxMS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0NvbnRleHQxMS5jcHAKaW5k
ZXggNGViYWM2MDE2NjdiOWUwNmQyMzVhYTk4ZWFhM2QzMDhjMDI1OGY5Mi4uMjI5NDVjOWEwOTE5
NDI3YTk3N2UyMDM5NDUzODZkNzI4OThkZWIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuY3BwCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvQ29udGV4dDExLmNwcApAQCAtODIsNiArODIsOSBAQCBUZXh0dXJlSW1wbCAqQ29udGV4dDEx
OjpjcmVhdGVUZXh0dXJlKGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnN0YXRlKQogICAgICAgICAg
ICAgcmV0dXJuIG5ldyBUZXh0dXJlRDNEXzJEQXJyYXkoc3RhdGUsIG1SZW5kZXJlcik7CiAgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVM6CiAgICAgICAgICAgICByZXR1cm4gbmV3
IFRleHR1cmVEM0RfRXh0ZXJuYWwoc3RhdGUsIG1SZW5kZXJlcik7CisgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV8yRF9NVUxUSVNBTVBMRToKKyAgICAgICAgICAgIHJldHVybiBuZXcgVGV4dHVyZUQz
RF8yRE11bHRpc2FtcGxlKHN0YXRlLCBtUmVuZGVyZXIpOworICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgIH0KQEAgLTk0
LDkgKzk3LDkgQEAgUmVuZGVyYnVmZmVySW1wbCAqQ29udGV4dDExOjpjcmVhdGVSZW5kZXJidWZm
ZXIoKQogICAgIHJldHVybiBuZXcgUmVuZGVyYnVmZmVyRDNEKG1SZW5kZXJlcik7CiB9CiAKLUJ1
ZmZlckltcGwgKkNvbnRleHQxMTo6Y3JlYXRlQnVmZmVyKCkKK0J1ZmZlckltcGwgKkNvbnRleHQx
MTo6Y3JlYXRlQnVmZmVyKGNvbnN0IGdsOjpCdWZmZXJTdGF0ZSAmc3RhdGUpCiB7Ci0gICAgQnVm
ZmVyMTEgKmJ1ZmZlciA9IG5ldyBCdWZmZXIxMShtUmVuZGVyZXIpOworICAgIEJ1ZmZlcjExICpi
dWZmZXIgPSBuZXcgQnVmZmVyMTEoc3RhdGUsIG1SZW5kZXJlcik7CiAgICAgbVJlbmRlcmVyLT5v
bkJ1ZmZlckNyZWF0ZShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXI7CiB9CkBAIC0xODksNiAr
MTkyLDE2IEBAIGdsOjpFcnJvciBDb250ZXh0MTE6OmRyYXdSYW5nZUVsZW1lbnRzKEdMZW51bSBt
b2RlLAogICAgIHJldHVybiBtUmVuZGVyZXItPmdlbmVyaWNEcmF3RWxlbWVudHModGhpcywgbW9k
ZSwgY291bnQsIHR5cGUsIGluZGljZXMsIDAsIGluZGV4UmFuZ2UpOwogfQogCitnbDo6RXJyb3Ig
Q29udGV4dDExOjpkcmF3QXJyYXlzSW5kaXJlY3QoR0xlbnVtIG1vZGUsIGNvbnN0IEdMdm9pZCAq
aW5kaXJlY3QpCit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2VuZXJpY0RyYXdJbmRpcmVjdCh0
aGlzLCBtb2RlLCBHTF9OT05FLCBpbmRpcmVjdCk7Cit9CisKK2dsOjpFcnJvciBDb250ZXh0MTE6
OmRyYXdFbGVtZW50c0luZGlyZWN0KEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgY29uc3QgR0x2
b2lkICppbmRpcmVjdCkKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZW5lcmljRHJhd0luZGly
ZWN0KHRoaXMsIG1vZGUsIHR5cGUsIGluZGlyZWN0KTsKK30KKwogR0xlbnVtIENvbnRleHQxMTo6
Z2V0UmVzZXRTdGF0dXMoKQogewogICAgIHJldHVybiBtUmVuZGVyZXItPmdldFJlc2V0U3RhdHVz
KCk7CkBAIC0yMjcsOSArMjQwLDkgQEAgdm9pZCBDb250ZXh0MTE6OnBvcEdyb3VwTWFya2VyKCkK
ICAgICBtUmVuZGVyZXItPmdldEFubm90YXRvcigpLT5lbmRFdmVudCgpOwogfQogCi12b2lkIENv
bnRleHQxMTo6c3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0
ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpCit2b2lkIENvbnRleHQxMTo6c3luY1N0YXRlKGNvbnN0
IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpCiB7Ci0gICAgbVJlbmRlcmVyLT5nZXRT
dGF0ZU1hbmFnZXIoKS0+c3luY1N0YXRlKHN0YXRlLCBkaXJ0eUJpdHMpOworICAgIG1SZW5kZXJl
ci0+Z2V0U3RhdGVNYW5hZ2VyKCktPnN5bmNTdGF0ZShtU3RhdGUuZ2V0U3RhdGUoKSwgZGlydHlC
aXRzKTsKIH0KIAogR0xpbnQgQ29udGV4dDExOjpnZXRHUFVEaXNqb2ludCgpCkBAIC0yNjcsNCAr
MjgwLDEwIEBAIGNvbnN0IGdsOjpMaW1pdGF0aW9ucyAmQ29udGV4dDExOjpnZXROYXRpdmVMaW1p
dGF0aW9ucygpIGNvbnN0CiAgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0TmF0aXZlTGltaXRhdGlv
bnMoKTsKIH0KIAorZ2w6OkVycm9yIENvbnRleHQxMTo6ZGlzcGF0Y2hDb21wdXRlKEdMdWludCBu
dW1Hcm91cHNYLCBHTHVpbnQgbnVtR3JvdXBzWSwgR0x1aW50IG51bUdyb3Vwc1opCit7CisgICAg
VU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCiB9ICAvLyBu
YW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ29udGV4dDExLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0NvbnRleHQxMS5oCmluZGV4IGRl
YmYyZjliZTQ0NjZiNWNkYjNiMmZlMTkwNzhkNzhhOGE2NmI1NTkuLjliNGE2NTUxMmY2MTE0MDI0
YWQ3NTNjMjk1YzI4OTVmZTFlNWY0ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ29udGV4dDExLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Db250
ZXh0MTEuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBDb250ZXh0MTEgOiBwdWJsaWMgQ29udGV4
dEltcGwKICAgICBSZW5kZXJidWZmZXJJbXBsICpjcmVhdGVSZW5kZXJidWZmZXIoKSBvdmVycmlk
ZTsKIAogICAgIC8vIEJ1ZmZlciBjcmVhdGlvbgotICAgIEJ1ZmZlckltcGwgKmNyZWF0ZUJ1ZmZl
cigpIG92ZXJyaWRlOworICAgIEJ1ZmZlckltcGwgKmNyZWF0ZUJ1ZmZlcihjb25zdCBnbDo6QnVm
ZmVyU3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKIAogICAgIC8vIFZlcnRleCBBcnJheSBjcmVhdGlv
bgogICAgIFZlcnRleEFycmF5SW1wbCAqY3JlYXRlVmVydGV4QXJyYXkoY29uc3QgZ2w6OlZlcnRl
eEFycmF5U3RhdGUgJmRhdGEpIG92ZXJyaWRlOwpAQCAtODgsNiArODgsOCBAQCBjbGFzcyBDb250
ZXh0MTEgOiBwdWJsaWMgQ29udGV4dEltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dm9pZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBkcmF3QXJy
YXlzSW5kaXJlY3QoR0xlbnVtIG1vZGUsIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpIG92ZXJyaWRl
OworICAgIGdsOjpFcnJvciBkcmF3RWxlbWVudHNJbmRpcmVjdChHTGVudW0gbW9kZSwgR0xlbnVt
IHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpIG92ZXJyaWRlOwogCiAgICAgLy8gRGV2aWNl
IGxvc3MKICAgICBHTGVudW0gZ2V0UmVzZXRTdGF0dXMoKSBvdmVycmlkZTsKQEAgLTEwMiw3ICsx
MDQsNyBAQCBjbGFzcyBDb250ZXh0MTEgOiBwdWJsaWMgQ29udGV4dEltcGwKICAgICB2b2lkIHBv
cEdyb3VwTWFya2VyKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBTdGF0ZSBzeW5jIHdpdGggZGlydHkg
Yml0cy4KLSAgICB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBjb25zdCBn
bDo6U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVycmlkZTsKKyAgICB2b2lkIHN5bmNT
dGF0ZShjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVycmlkZTsKIAog
ICAgIC8vIERpc2pvaW50IHRpbWVyIHF1ZXJpZXMKICAgICBHTGludCBnZXRHUFVEaXNqb2ludCgp
IG92ZXJyaWRlOwpAQCAtMTE5LDYgKzEyMSw4IEBAIGNsYXNzIENvbnRleHQxMSA6IHB1YmxpYyBD
b250ZXh0SW1wbAogCiAgICAgUmVuZGVyZXIxMSAqZ2V0UmVuZGVyZXIoKSBjb25zdCB7IHJldHVy
biBtUmVuZGVyZXI7IH0KIAorICAgIGdsOjpFcnJvciBkaXNwYXRjaENvbXB1dGUoR0x1aW50IG51
bUdyb3Vwc1gsIEdMdWludCBudW1Hcm91cHNZLCBHTHVpbnQgbnVtR3JvdXBzWikgb3ZlcnJpZGU7
CisKICAgcHJpdmF0ZToKICAgICBSZW5kZXJlcjExICptUmVuZGVyZXI7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9EZWJ1Z0Fubm90YXRvcjExLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL0RlYnVnQW5ub3RhdG9yMTEuaAppbmRleCA5ZGE0ZmEyMjA3
OWI1ZjNlOGE4MjY1MWRhMTEzNTdkZTI3YTNlZTMyLi42MjY2MmM0OWFlOTZmZGE2ZTVlOWQ2MzBj
NGEwNDllNzM4OGNmYjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0RlYnVnQW5ub3RhdG9yMTEuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0RlYnVn
QW5ub3RhdG9yMTEuaApAQCAtOSwxMiArOSwxMiBAQAogI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJF
Ul9EM0RfRDNEMTFfREVCVUdBTk5PVEFUT1IxMV9IXwogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJF
Ul9EM0RfRDNEMTFfREVCVUdBTk5PVEFUT1IxMV9IXwogCi0jaW5jbHVkZSAiY29tbW9uL2RlYnVn
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvTG9nZ2luZ0Fubm90YXRvci5oIgogCiBuYW1lc3BhY2Ug
cngKIHsKIAotY2xhc3MgRGVidWdBbm5vdGF0b3IxMSA6IHB1YmxpYyBnbDo6RGVidWdBbm5vdGF0
b3IKK2NsYXNzIERlYnVnQW5ub3RhdG9yMTEgOiBwdWJsaWMgYW5nbGU6OkxvZ2dpbmdBbm5vdGF0
b3IKIHsKICAgcHVibGljOgogICAgIERlYnVnQW5ub3RhdG9yMTEoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRmVu
Y2UxMS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL0ZlbmNlMTEuY3BwCmluZGV4IDAzOGQzY2FiMjhlNWMzZGFjODA2MmM0MDc1ODcz
NTBhN2JjODRiODkuLjg2ZWJhMTliNjkzMDEyMDYwYTA4ZmZkYjAyODFkYWYyODEyYTgyOGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvRmVuY2UxMS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GZW5jZTExLmNwcApAQCAtNCw3ICs0LDggQEAKIC8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwogCi0vLyBGZW5jZTExLmNwcDogRGVmaW5l
cyB0aGUgcng6OkZlbmNlTlYxMSBhbmQgcng6OkZlbmNlU3luYzExIGNsYXNzZXMgd2hpY2ggaW1w
bGVtZW50IHJ4OjpGZW5jZU5WSW1wbCBhbmQgcng6OkZlbmNlU3luY0ltcGwuCisvLyBGZW5jZTEx
LmNwcDogRGVmaW5lcyB0aGUgcng6OkZlbmNlTlYxMSBhbmQgcng6OkZlbmNlU3luYzExIGNsYXNz
ZXMgd2hpY2ggaW1wbGVtZW50CisvLyByeDo6RmVuY2VOVkltcGwgYW5kIHJ4OjpGZW5jZVN5bmNJ
bXBsLgogCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZlbmNlMTEuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oIgpAQCAt
MjAsMjQgKzIxLDI1IEBAIHN0YXRpYyBjb25zdCBpbnQga0RldmljZUxvc3RDaGVja1BlcmlvZCA9
IDY0OwogLy8gVGVtcGxhdGUgaGVscGVycyBmb3Igc2V0IGFuZCB0ZXN0IG9wZXJhdGlvbnMuCiAv
LwogCi10ZW1wbGF0ZTxjbGFzcyBGZW5jZUNsYXNzPgordGVtcGxhdGUgPGNsYXNzIEZlbmNlQ2xh
c3M+CiBnbDo6RXJyb3IgRmVuY2VTZXRIZWxwZXIoRmVuY2VDbGFzcyAqZmVuY2UpCiB7CiAgICAg
aWYgKCFmZW5jZS0+bVF1ZXJ5KQogICAgIHsKICAgICAgICAgRDNEMTFfUVVFUllfREVTQyBxdWVy
eURlc2M7Ci0gICAgICAgIHF1ZXJ5RGVzYy5RdWVyeSA9IEQzRDExX1FVRVJZX0VWRU5UOworICAg
ICAgICBxdWVyeURlc2MuUXVlcnkgICAgID0gRDNEMTFfUVVFUllfRVZFTlQ7CiAgICAgICAgIHF1
ZXJ5RGVzYy5NaXNjRmxhZ3MgPSAwOwogCiAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZmVuY2Ut
Pm1SZW5kZXJlci0+Z2V0RGV2aWNlKCktPkNyZWF0ZVF1ZXJ5KCZxdWVyeURlc2MsICZmZW5jZS0+
bVF1ZXJ5KTsKICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRl
IGV2ZW50IHF1ZXJ5LCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgZXZlbnQgcXVl
cnksIHJlc3VsdDogMHglWC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQp
OwogICAgICAgICB9CiAgICAgfQogCiAgICAgZmVuY2UtPm1SZW5kZXJlci0+Z2V0RGV2aWNlQ29u
dGV4dCgpLT5FbmQoZmVuY2UtPm1RdWVyeSk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBG
ZW5jZUNsYXNzPgpAQCAtNDYsNyArNDgsOCBAQCBnbDo6RXJyb3IgRmVuY2VUZXN0SGVscGVyKEZl
bmNlQ2xhc3MgKmZlbmNlLCBib29sIGZsdXNoQ29tbWFuZEJ1ZmZlciwgR0xib29sZWFuCiAgICAg
QVNTRVJUKGZlbmNlLT5tUXVlcnkpOwogCiAgICAgVUlOVCBnZXREYXRhRmxhZ3MgPSAoZmx1c2hD
b21tYW5kQnVmZmVyID8gMCA6IEQzRDExX0FTWU5DX0dFVERBVEFfRE9OT1RGTFVTSCk7Ci0gICAg
SFJFU1VMVCByZXN1bHQgPSBmZW5jZS0+bVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCktPkdl
dERhdGEoZmVuY2UtPm1RdWVyeSwgTlVMTCwgMCwgZ2V0RGF0YUZsYWdzKTsKKyAgICBIUkVTVUxU
IHJlc3VsdCA9CisgICAgICAgIGZlbmNlLT5tUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKS0+
R2V0RGF0YShmZW5jZS0+bVF1ZXJ5LCBOVUxMLCAwLCBnZXREYXRhRmxhZ3MpOwogCiAgICAgaWYg
KEZBSUxFRChyZXN1bHQpKQogICAgIHsKQEAgLTU1LDE3ICs1OCwxNCBAQCBnbDo6RXJyb3IgRmVu
Y2VUZXN0SGVscGVyKEZlbmNlQ2xhc3MgKmZlbmNlLCBib29sIGZsdXNoQ29tbWFuZEJ1ZmZlciwg
R0xib29sZWFuCiAKICAgICBBU1NFUlQocmVzdWx0ID09IFNfT0sgfHwgcmVzdWx0ID09IFNfRkFM
U0UpOwogICAgICpvdXRGaW5pc2hlZCA9ICgocmVzdWx0ID09IFNfT0spID8gR0xfVFJVRSA6IEdM
X0ZBTFNFKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKIH0KIAogLy8KIC8vIEZlbmNlTlYxMQogLy8KIAotRmVuY2VOVjExOjpG
ZW5jZU5WMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIpCi0gICAgOiBGZW5jZU5WSW1wbCgpLAotICAg
ICAgbVJlbmRlcmVyKHJlbmRlcmVyKSwKLSAgICAgIG1RdWVyeShOVUxMKQorRmVuY2VOVjExOjpG
ZW5jZU5WMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIpIDogRmVuY2VOVkltcGwoKSwgbVJlbmRlcmVy
KHJlbmRlcmVyKSwgbVF1ZXJ5KE5VTEwpCiB7CiB9CiAKQEAgLTEyMSwxNCArMTIxLDEwIEBAIGds
OjpFcnJvciBGZW5jZU5WMTE6OmZpbmlzaCgpCiAvLyBXZSBzdGlsbCBvcHQgdG8gdXNlIFFQQy4g
SW4gdGhlIHByZXNlbnQgYW5kIG1vdmluZyBmb3J3YXJkLCBtb3N0IG5ld2VyIHN5c3RlbXMgd2ls
bCBub3Qgc3VmZmVyCiAvLyBmcm9tIGJ1Z2d5IGltcGxlbWVudGF0aW9ucy4KIAotRmVuY2VTeW5j
MTE6OkZlbmNlU3luYzExKFJlbmRlcmVyMTEgKnJlbmRlcmVyKQotICAgIDogRmVuY2VTeW5jSW1w
bCgpLAotICAgICAgbVJlbmRlcmVyKHJlbmRlcmVyKSwKLSAgICAgIG1RdWVyeShOVUxMKQorRmVu
Y2VTeW5jMTE6OkZlbmNlU3luYzExKFJlbmRlcmVyMTEgKnJlbmRlcmVyKSA6IEZlbmNlU3luY0lt
cGwoKSwgbVJlbmRlcmVyKHJlbmRlcmVyKSwgbVF1ZXJ5KE5VTEwpCiB7CiAgICAgTEFSR0VfSU5U
RUdFUiBjb3VudGVyRnJlcWVuY3kgPSB7fTsKLSAgICBCT09MIHN1Y2Nlc3MgPSBRdWVyeVBlcmZv
cm1hbmNlRnJlcXVlbmN5KCZjb3VudGVyRnJlcWVuY3kpOwotICAgIFVOVVNFRF9BU1NFUlRJT05f
VkFSSUFCTEUoc3VjY2Vzcyk7CisgICAgQk9PTCBzdWNjZXNzICAgICAgICAgICAgICAgICAgPSBR
dWVyeVBlcmZvcm1hbmNlRnJlcXVlbmN5KCZjb3VudGVyRnJlcWVuY3kpOwogICAgIEFTU0VSVChz
dWNjZXNzKTsKIAogICAgIG1Db3VudGVyRnJlcXVlbmN5ID0gY291bnRlckZyZXFlbmN5LlF1YWRQ
YXJ0OwpAQCAtMTUyLDcgKzE0OCw3IEBAIGdsOjpFcnJvciBGZW5jZVN5bmMxMTo6Y2xpZW50V2Fp
dChHTGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3V0LCBHTGVudW0gKm91CiAgICAgYm9v
bCBmbHVzaENvbW1hbmRCdWZmZXIgPSAoKGZsYWdzICYgR0xfU1lOQ19GTFVTSF9DT01NQU5EU19C
SVQpICE9IDApOwogCiAgICAgR0xib29sZWFuIHJlc3VsdCA9IEdMX0ZBTFNFOwotICAgIGdsOjpF
cnJvciBlcnJvciA9IEZlbmNlVGVzdEhlbHBlcih0aGlzLCBmbHVzaENvbW1hbmRCdWZmZXIsICZy
ZXN1bHQpOworICAgIGdsOjpFcnJvciBlcnJvciAgPSBGZW5jZVRlc3RIZWxwZXIodGhpcywgZmx1
c2hDb21tYW5kQnVmZmVyLCAmcmVzdWx0KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAg
IHsKICAgICAgICAgKm91dFJlc3VsdCA9IEdMX1dBSVRfRkFJTEVEOwpAQCAtMTYyLDIyICsxNTgs
MjEgQEAgZ2w6OkVycm9yIEZlbmNlU3luYzExOjpjbGllbnRXYWl0KEdMYml0ZmllbGQgZmxhZ3Ms
IEdMdWludDY0IHRpbWVvdXQsIEdMZW51bSAqb3UKICAgICBpZiAocmVzdWx0ID09IEdMX1RSVUUp
CiAgICAgewogICAgICAgICAqb3V0UmVzdWx0ID0gR0xfQUxSRUFEWV9TSUdOQUxFRDsKLSAgICAg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwogICAgIH0KIAogICAgIGlmICh0aW1lb3V0ID09IDApCiAgICAgewogICAgICAgICAq
b3V0UmVzdWx0ID0gR0xfVElNRU9VVF9FWFBJUkVEOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAg
ICAgTEFSR0VfSU5URUdFUiBjdXJyZW50Q291bnRlciA9IHt9OwotICAgIEJPT0wgc3VjY2VzcyA9
IFF1ZXJ5UGVyZm9ybWFuY2VDb3VudGVyKCZjdXJyZW50Q291bnRlcik7Ci0gICAgVU5VU0VEX0FT
U0VSVElPTl9WQVJJQUJMRShzdWNjZXNzKTsKKyAgICBCT09MIHN1Y2Nlc3MgICAgICAgICAgICAg
ICAgID0gUXVlcnlQZXJmb3JtYW5jZUNvdW50ZXIoJmN1cnJlbnRDb3VudGVyKTsKICAgICBBU1NF
UlQoc3VjY2Vzcyk7CiAKICAgICBMT05HTE9ORyB0aW1lb3V0SW5TZWNvbmRzID0gc3RhdGljX2Nh
c3Q8TE9OR0xPTkc+KHRpbWVvdXQpICogc3RhdGljX2Nhc3Q8TE9OR0xPTkc+KDEwMDAwMDBsbCk7
Ci0gICAgTE9OR0xPTkcgZW5kQ291bnRlciA9IGN1cnJlbnRDb3VudGVyLlF1YWRQYXJ0ICsgbUNv
dW50ZXJGcmVxdWVuY3kgKiB0aW1lb3V0SW5TZWNvbmRzOworICAgIExPTkdMT05HIGVuZENvdW50
ZXIgICAgICAgPSBjdXJyZW50Q291bnRlci5RdWFkUGFydCArIG1Db3VudGVyRnJlcXVlbmN5ICog
dGltZW91dEluU2Vjb25kczsKIAogICAgIGludCBsb29wQ291bnQgPSAwOwogICAgIHdoaWxlIChj
dXJyZW50Q291bnRlci5RdWFkUGFydCA8IGVuZENvdW50ZXIgJiYgIXJlc3VsdCkKQEAgLTE4NSw3
ICsxODAsNiBAQCBnbDo6RXJyb3IgRmVuY2VTeW5jMTE6OmNsaWVudFdhaXQoR0xiaXRmaWVsZCBm
bGFncywgR0x1aW50NjQgdGltZW91dCwgR0xlbnVtICpvdQogICAgICAgICBsb29wQ291bnQrKzsK
ICAgICAgICAgU2NoZWR1bGVZaWVsZCgpOwogICAgICAgICBzdWNjZXNzID0gUXVlcnlQZXJmb3Jt
YW5jZUNvdW50ZXIoJmN1cnJlbnRDb3VudGVyKTsKLSAgICAgICAgVU5VU0VEX0FTU0VSVElPTl9W
QVJJQUJMRShzdWNjZXNzKTsKICAgICAgICAgQVNTRVJUKHN1Y2Nlc3MpOwogCiAgICAgICAgIGVy
cm9yID0gRmVuY2VUZXN0SGVscGVyKHRoaXMsIGZsdXNoQ29tbWFuZEJ1ZmZlciwgJnJlc3VsdCk7
CkBAIC0yMTIsMzIgKzIwNiwzMiBAQCBnbDo6RXJyb3IgRmVuY2VTeW5jMTE6OmNsaWVudFdhaXQo
R0xiaXRmaWVsZCBmbGFncywgR0x1aW50NjQgdGltZW91dCwgR0xlbnVtICpvdQogICAgICAgICAq
b3V0UmVzdWx0ID0gR0xfQ09ORElUSU9OX1NBVElTRklFRDsKICAgICB9CiAKLSAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAog
Z2w6OkVycm9yIEZlbmNlU3luYzExOjpzZXJ2ZXJXYWl0KEdMYml0ZmllbGQgZmxhZ3MsIEdMdWlu
dDY0IHRpbWVvdXQpCiB7CiAgICAgLy8gQmVjYXVzZSBvdXIgQVBJIGlzIGN1cnJlbnRseSBkZXNp
Z25lZCB0byBiZSBjYWxsZWQgZnJvbSBhIHNpbmdsZSB0aHJlYWQsIHdlIGRvbid0IG5lZWQgdG8g
ZG8KLSAgICAvLyBleHRyYSB3b3JrIGZvciBhIHNlcnZlci1zaWRlIGZlbmNlLiBHUFUgY29tbWFu
ZHMgaXNzdWVkIGFmdGVyIHRoZSBmZW5jZSBpcyBjcmVhdGVkIHdpbGwgYWx3YXlzCi0gICAgLy8g
YmUgcHJvY2Vzc2VkIGFmdGVyIHRoZSBmZW5jZSBpcyBzaWduYWxlZC4KLSAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAvLyBleHRyYSB3b3JrIGZvciBhIHNlcnZlci1zaWRl
IGZlbmNlLiBHUFUgY29tbWFuZHMgaXNzdWVkIGFmdGVyIHRoZSBmZW5jZSBpcyBjcmVhdGVkIHdp
bGwKKyAgICAvLyBhbHdheXMgYmUgcHJvY2Vzc2VkIGFmdGVyIHRoZSBmZW5jZSBpcyBzaWduYWxl
ZC4KKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEZlbmNlU3luYzEx
OjpnZXRTdGF0dXMoR0xpbnQgKm91dFJlc3VsdCkKIHsKICAgICBHTGJvb2xlYW4gcmVzdWx0ID0g
R0xfRkFMU0U7Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gRmVuY2VUZXN0SGVscGVyKHRoaXMsIGZh
bHNlLCAmcmVzdWx0KTsKKyAgICBnbDo6RXJyb3IgZXJyb3IgID0gRmVuY2VUZXN0SGVscGVyKHRo
aXMsIGZhbHNlLCAmcmVzdWx0KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAg
ICAgICAgLy8gVGhlIHNwZWMgZG9lcyBub3Qgc3BlY2lmeSBhbnkgd2F5IHRvIHJlcG9ydCBlcnJv
cnMgZHVyaW5nIHRoZSBzdGF0dXMgdGVzdCAoZS5nLiBkZXZpY2UgbG9zdCkKLSAgICAgICAgLy8g
c28gd2UgcmVwb3J0IHRoZSBmZW5jZSBpcyB1bmJsb2NrZWQgaW4gY2FzZSBvZiBlcnJvciBvciBz
aWduYWxlZC4KKyAgICAgICAgLy8gVGhlIHNwZWMgZG9lcyBub3Qgc3BlY2lmeSBhbnkgd2F5IHRv
IHJlcG9ydCBlcnJvcnMgZHVyaW5nIHRoZSBzdGF0dXMgdGVzdCAoZS5nLiBkZXZpY2UKKyAgICAg
ICAgLy8gbG9zdCkgc28gd2UgcmVwb3J0IHRoZSBmZW5jZSBpcyB1bmJsb2NrZWQgaW4gY2FzZSBv
ZiBlcnJvciBvciBzaWduYWxlZC4KICAgICAgICAgKm91dFJlc3VsdCA9IEdMX1NJR05BTEVEOwog
CiAgICAgICAgIHJldHVybiBlcnJvcjsKICAgICB9CiAKICAgICAqb3V0UmVzdWx0ID0gKHJlc3Vs
dCA/IEdMX1NJR05BTEVEIDogR0xfVU5TSUdOQUxFRCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLX0gLy8gbmFtZXNw
YWNlIHJ4Cit9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRnJhbWVidWZmZXIxMS5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L0ZyYW1lYnVmZmVyMTEuY3BwCmluZGV4IGE3MDI4N2NjYjRhYWM1ZWIxNDQxODBiNGRlZDlhOTM4
NmIwY2Y3MWUuLmNjMDU1OGYwMzJhMGM1YzdiMjYyYjM3MDM3NjlhYzVlNzFiMTIzMTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvRnJhbWVidWZmZXIxMS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmNwcApAQCAtOSw3ICs5
LDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRnJhbWVidWZmZXIx
MS5oIgogCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCi0jaW5jbHVkZSAiY29tbW9uL0JpdFNl
dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiY29tbW9uL2JpdHNldF91dGlscy5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CdWZmZXIxMS5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9DbGVhcjExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL1RleHR1cmVTdG9yYWdlMTEuaCIKQEAgLTU0LDcgKzU0LDcgQEAgZ2w6
OkVycm9yIE1hcmtBdHRhY2htZW50c0RpcnR5KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQgKmF0dGFjaG1lbnQpCiAKIHZvaWQgVXBkYXRlQ2FjaGVkUmVuZGVyVGFyZ2V0KGNvbnN0IGds
OjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZW5kZXJUYXJnZXQxMSAqJmNhY2hlZFJlbmRlclRhcmdldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENoYW5uZWxCaW5kaW5nICpjaGFubmVsQmluZGluZykKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpPbkF0dGFjaG1lbnREaXJ0eUJpbmRpbmcg
KmNoYW5uZWxCaW5kaW5nKQogewogICAgIFJlbmRlclRhcmdldDExICpuZXdSZW5kZXJUYXJnZXQg
PSBudWxscHRyOwogICAgIGlmIChhdHRhY2htZW50KQpAQCAtNzgsMTAgKzc4LDEwIEBAIEZyYW1l
YnVmZmVyMTE6OkZyYW1lYnVmZmVyMTEoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJmRhdGEs
IFJlbmRlcmVyMTEgKnJlbmRlCiB7CiAgICAgQVNTRVJUKG1SZW5kZXJlciAhPSBudWxscHRyKTsK
ICAgICBtQ2FjaGVkQ29sb3JSZW5kZXJUYXJnZXRzLmZpbGwobnVsbHB0cik7Ci0gICAgZm9yIChz
aXplX3QgY29sb3JJbmRleCA9IDA7IGNvbG9ySW5kZXggPCBkYXRhLmdldENvbG9yQXR0YWNobWVu
dHMoKS5zaXplKCk7ICsrY29sb3JJbmRleCkKKyAgICBmb3IgKHVpbnQzMl90IGNvbG9ySW5kZXgg
PSAwOworICAgICAgICAgY29sb3JJbmRleCA8IHN0YXRpY19jYXN0PHVpbnQzMl90PihkYXRhLmdl
dENvbG9yQXR0YWNobWVudHMoKS5zaXplKCkpOyArK2NvbG9ySW5kZXgpCiAgICAgewotICAgICAg
ICBtQ29sb3JSZW5kZXJUYXJnZXRzRGlydHkucHVzaF9iYWNrKAotICAgICAgICAgICAgQ2hhbm5l
bEJpbmRpbmcodGhpcywgc3RhdGljX2Nhc3Q8U2lnbmFsVG9rZW4+KGNvbG9ySW5kZXgpKSk7Cisg
ICAgICAgIG1Db2xvclJlbmRlclRhcmdldHNEaXJ0eS5lbXBsYWNlX2JhY2sodGhpcywgY29sb3JJ
bmRleCk7CiAgICAgfQogfQogCkBAIC0xODIsNyArMTgyLDEwIEBAIGdsOjpFcnJvciBGcmFtZWJ1
ZmZlcjExOjppbnZhbGlkYXRlQmFzZShzaXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAqYXR0YWNo
bWVudHMsCiAgICAgICAgICAgICAgICAgc2l6ZV90IGNvbG9ySW5kZXggPQogICAgICAgICAgICAg
ICAgICAgICAoYXR0YWNobWVudHNbaV0gPT0gR0xfQ09MT1IgPyAwdSA6IChhdHRhY2htZW50c1tp
XSAtIEdMX0NPTE9SX0FUVEFDSE1FTlQwKSk7CiAgICAgICAgICAgICAgICAgYXV0byBjb2xvckF0
dGFjaG1lbnQgPSBtU3RhdGUuZ2V0Q29sb3JBdHRhY2htZW50KGNvbG9ySW5kZXgpOwotICAgICAg
ICAgICAgICAgIEFOR0xFX1RSWShpbnZhbGlkYXRlQXR0YWNobWVudChjb2xvckF0dGFjaG1lbnQp
KTsKKyAgICAgICAgICAgICAgICBpZiAoY29sb3JBdHRhY2htZW50KQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgQU5HTEVfVFJZKGludmFsaWRhdGVBdHRhY2htZW50KGNv
bG9yQXR0YWNobWVudCkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzU4LDcgKzM2MSw3IEBAIGdsOjpFcnJv
ciBGcmFtZWJ1ZmZlcjExOjpibGl0SW1wbChjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVh
LAogR0xlbnVtIEZyYW1lYnVmZmVyMTE6OmdldFJlbmRlclRhcmdldEltcGxlbWVudGF0aW9uRm9y
bWF0KFJlbmRlclRhcmdldEQzRCAqcmVuZGVyVGFyZ2V0KSBjb25zdAogewogICAgIFJlbmRlclRh
cmdldDExICpyZW5kZXJUYXJnZXQxMSA9IEdldEFzPFJlbmRlclRhcmdldDExPihyZW5kZXJUYXJn
ZXQpOwotICAgIHJldHVybiByZW5kZXJUYXJnZXQxMS0+Z2V0Rm9ybWF0U2V0KCkuZm9ybWF0LmZi
b0ltcGxlbWVudGF0aW9uSW50ZXJuYWxGb3JtYXQ7CisgICAgcmV0dXJuIHJlbmRlclRhcmdldDEx
LT5nZXRGb3JtYXRTZXQoKS5mb3JtYXQoKS5mYm9JbXBsZW1lbnRhdGlvbkludGVybmFsRm9ybWF0
OwogfQogCiB2b2lkIEZyYW1lYnVmZmVyMTE6OnVwZGF0ZUNvbG9yUmVuZGVyVGFyZ2V0KHNpemVf
dCBjb2xvckluZGV4KQpAQCAtMzc0LDcgKzM3Nyw3IEBAIHZvaWQgRnJhbWVidWZmZXIxMTo6dXBk
YXRlRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJm1EZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXREaXJ0eSk7CiB9CiAKLXZvaWQgRnJhbWVidWZm
ZXIxMTo6c3luY1N0YXRlKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGlydHlCaXRzICZkaXJ0eUJp
dHMpCit2b2lkIEZyYW1lYnVmZmVyMTE6OnN5bmNTdGF0ZShDb250ZXh0SW1wbCAqY29udGV4dElt
cGwsIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGlydHlCaXRzICZkaXJ0eUJpdHMpCiB7CiAgICAg
bVJlbmRlcmVyLT5nZXRTdGF0ZU1hbmFnZXIoKS0+aW52YWxpZGF0ZVJlbmRlclRhcmdldCgpOwog
CkBAIC00MDcsMTIgKzQxMCwxMiBAQCB2b2lkIEZyYW1lYnVmZmVyMTE6OnN5bmNTdGF0ZShjb25z
dCBnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQogICAgIC8vIFdlIHNob3Vs
ZCBub3QgaGF2ZSBkaXJ0aWVkIGFueSBhZGRpdGlvbmFsIHN0YXRlIGR1cmluZyBvdXIgc3luYy4K
ICAgICBBU1NFUlQoIW1JbnRlcm5hbERpcnR5Qml0cy5hbnkoKSk7CiAKLSAgICBGcmFtZWJ1ZmZl
ckQzRDo6c3luY1N0YXRlKGRpcnR5Qml0cyk7CisgICAgRnJhbWVidWZmZXJEM0Q6OnN5bmNTdGF0
ZShjb250ZXh0SW1wbCwgZGlydHlCaXRzKTsKIH0KIAotdm9pZCBGcmFtZWJ1ZmZlcjExOjpzaWdu
YWwoU2lnbmFsVG9rZW4gdG9rZW4pCit2b2lkIEZyYW1lYnVmZmVyMTE6OnNpZ25hbCh1aW50MzJf
dCBjaGFubmVsSUQpCiB7Ci0gICAgaWYgKHRva2VuID09IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhf
RlJBTUVCVUZGRVJfQVRUQUNITUVOVFMpCisgICAgaWYgKGNoYW5uZWxJRCA9PSBnbDo6SU1QTEVN
RU5UQVRJT05fTUFYX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRTKQogICAgIHsKICAgICAgICAgLy8g
U3RlbmNpbCBpcyByZWR1bmRhbnQgaW4gdGhpcyBjYXNlLgogICAgICAgICBtSW50ZXJuYWxEaXJ0
eUJpdHMuc2V0KGdsOjpGcmFtZWJ1ZmZlcjo6RElSVFlfQklUX0RFUFRIX0FUVEFDSE1FTlQpOwpA
QCAtNDIwLDE5ICs0MjMsMjUgQEAgdm9pZCBGcmFtZWJ1ZmZlcjExOjpzaWduYWwoU2lnbmFsVG9r
ZW4gdG9rZW4pCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIG1JbnRlcm5hbERpcnR5
Qml0cy5zZXQoZ2w6OkZyYW1lYnVmZmVyOjpESVJUWV9CSVRfQ09MT1JfQVRUQUNITUVOVF8wICsg
dG9rZW4pOwotICAgICAgICBtQ2FjaGVkQ29sb3JSZW5kZXJUYXJnZXRzW3Rva2VuXSA9IG51bGxw
dHI7CisgICAgICAgIG1JbnRlcm5hbERpcnR5Qml0cy5zZXQoZ2w6OkZyYW1lYnVmZmVyOjpESVJU
WV9CSVRfQ09MT1JfQVRUQUNITUVOVF8wICsgY2hhbm5lbElEKTsKKyAgICAgICAgbUNhY2hlZENv
bG9yUmVuZGVyVGFyZ2V0c1tjaGFubmVsSURdID0gbnVsbHB0cjsKICAgICB9CiB9CiAKK2dsOjpF
cnJvciBGcmFtZWJ1ZmZlcjExOjpnZXRTYW1wbGVQb3NpdGlvbihzaXplX3QgaW5kZXgsIEdMZmxv
YXQgKnh5KSBjb25zdAoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6Oklu
dGVybmFsRXJyb3IoKSA8PCAiZ2V0U2FtcGxlUG9zaXRpb24gaXMgdW5pbXBsZW1lbnRlZC4iOwor
fQorCiBib29sIEZyYW1lYnVmZmVyMTE6Omhhc0FueUludGVybmFsRGlydHlCaXQoKSBjb25zdAog
ewogICAgIHJldHVybiBtSW50ZXJuYWxEaXJ0eUJpdHMuYW55KCk7CiB9CiAKLXZvaWQgRnJhbWVi
dWZmZXIxMTo6c3luY0ludGVybmFsU3RhdGUoKQordm9pZCBGcmFtZWJ1ZmZlcjExOjpzeW5jSW50
ZXJuYWxTdGF0ZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwpCiB7Ci0gICAgc3luY1N0YXRlKGds
OjpGcmFtZWJ1ZmZlcjo6RGlydHlCaXRzKCkpOworICAgIHN5bmNTdGF0ZShjb250ZXh0SW1wbCwg
Z2w6OkZyYW1lYnVmZmVyOjpEaXJ0eUJpdHMoKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSByeApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZyYW1lYnVmZmVyMTEuaAppbmRleCBiMTY4M2Ey
MDYwN2Y1MWRjZDcwZjUyMDU2YjU5OTU1ODk2MmE5MTdlLi5jODNkMGIzNDU0MjZjY2NjMTg1ZmM3
YWViMWExYTVhYzQ2YzYyMmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZyYW1lYnVmZmVyMTEuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZyYW1l
YnVmZmVyMTEuaApAQCAtMTcsNyArMTcsNyBAQCBuYW1lc3BhY2UgcngKIHsKIGNsYXNzIFJlbmRl
cmVyMTE7CiAKLWNsYXNzIEZyYW1lYnVmZmVyMTEgOiBwdWJsaWMgRnJhbWVidWZmZXJEM0QsIHB1
YmxpYyBhbmdsZTo6U2lnbmFsUmVjZWl2ZXIKK2NsYXNzIEZyYW1lYnVmZmVyMTEgOiBwdWJsaWMg
RnJhbWVidWZmZXJEM0QsIHB1YmxpYyBhbmdsZTo6U2lnbmFsUmVjZWl2ZXI8PgogewogICBwdWJs
aWM6CiAgICAgRnJhbWVidWZmZXIxMShjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSwg
UmVuZGVyZXIxMSAqcmVuZGVyZXIpOwpAQCAtMzAsNyArMzAsNyBAQCBjbGFzcyBGcmFtZWJ1ZmZl
cjExIDogcHVibGljIEZyYW1lYnVmZmVyRDNELCBwdWJsaWMgYW5nbGU6OlNpZ25hbFJlY2VpdmVy
CiAgICAgLy8gSW52YWxpZGF0ZSB0aGUgY2FjaGVkIHN3aXp6bGVzIG9mIGFsbCBib3VuZCB0ZXh0
dXJlIGF0dGFjaG1lbnRzLgogICAgIGdsOjpFcnJvciBtYXJrQXR0YWNobWVudHNEaXJ0eSgpIGNv
bnN0OwogCi0gICAgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEaXJ0eUJp
dHMgJmRpcnR5Qml0cykgb3ZlcnJpZGU7CisgICAgdm9pZCBzeW5jU3RhdGUoQ29udGV4dEltcGwg
KmNvbnRleHRJbXBsLCBjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRz
KSBvdmVycmlkZTsKIAogICAgIGNvbnN0IFJlbmRlclRhcmdldEFycmF5ICZnZXRDYWNoZWRDb2xv
clJlbmRlclRhcmdldHMoKSBjb25zdAogICAgIHsKQEAgLTQyLDkgKzQyLDExIEBAIGNsYXNzIEZy
YW1lYnVmZmVyMTEgOiBwdWJsaWMgRnJhbWVidWZmZXJEM0QsIHB1YmxpYyBhbmdsZTo6U2lnbmFs
UmVjZWl2ZXIKICAgICB9CiAKICAgICBib29sIGhhc0FueUludGVybmFsRGlydHlCaXQoKSBjb25z
dDsKLSAgICB2b2lkIHN5bmNJbnRlcm5hbFN0YXRlKCk7CisgICAgdm9pZCBzeW5jSW50ZXJuYWxT
dGF0ZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwpOwogCi0gICAgdm9pZCBzaWduYWwoYW5nbGU6
OlNpZ25hbFRva2VuIHRva2VuKSBvdmVycmlkZTsKKyAgICB2b2lkIHNpZ25hbCh1aW50MzJfdCBj
aGFubmVsSUQpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGdldFNhbXBsZVBvc2l0aW9uKHNp
emVfdCBpbmRleCwgR0xmbG9hdCAqeHkpIGNvbnN0IG92ZXJyaWRlOwogCiAgIHByaXZhdGU6CiAg
ICAgZ2w6OkVycm9yIGNsZWFySW1wbChDb250ZXh0SW1wbCAqY29udGV4dCwgY29uc3QgQ2xlYXJQ
YXJhbWV0ZXJzICZjbGVhclBhcmFtcykgb3ZlcnJpZGU7CkBAIC03Nyw4ICs3OSw4IEBAIGNsYXNz
IEZyYW1lYnVmZmVyMTEgOiBwdWJsaWMgRnJhbWVidWZmZXJEM0QsIHB1YmxpYyBhbmdsZTo6U2ln
bmFsUmVjZWl2ZXIKICAgICBSZW5kZXJUYXJnZXRBcnJheSBtQ2FjaGVkQ29sb3JSZW5kZXJUYXJn
ZXRzOwogICAgIFJlbmRlclRhcmdldDExICptQ2FjaGVkRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0
OwogCi0gICAgc3RkOjp2ZWN0b3I8YW5nbGU6OkNoYW5uZWxCaW5kaW5nPiBtQ29sb3JSZW5kZXJU
YXJnZXRzRGlydHk7Ci0gICAgYW5nbGU6OkNoYW5uZWxCaW5kaW5nIG1EZXB0aFN0ZW5jaWxSZW5k
ZXJUYXJnZXREaXJ0eTsKKyAgICBzdGQ6OnZlY3RvcjxnbDo6T25BdHRhY2htZW50RGlydHlCaW5k
aW5nPiBtQ29sb3JSZW5kZXJUYXJnZXRzRGlydHk7CisgICAgZ2w6Ok9uQXR0YWNobWVudERpcnR5
QmluZGluZyBtRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0RGlydHk7CiAKICAgICBnbDo6RnJhbWVi
dWZmZXI6OkRpcnR5Qml0cyBtSW50ZXJuYWxEaXJ0eUJpdHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbWFn
ZTExLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvSW1hZ2UxMS5jcHAKaW5kZXggMjk4M2Y5YzdlNGVjN2U2MmUzMzBhYTM3MmQzNWIz
MGQ0OTQ0MWY5ZS4uMjY1N2IxZTUyOTdkMzhlNDIwNWU0ZGUyZDAzN2M4OTg2OTI3ZWRkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9JbWFnZTExLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ltYWdlMTEuY3BwCkBAIC02MCwxMSArNjAsMTEgQEAg
Z2w6OkVycm9yIEltYWdlMTE6OmdlbmVyYXRlTWlwbWFwKEltYWdlMTEgKmRlc3QsCiAgICAgICAg
IHJldHVybiBlcnJvcjsKICAgICB9CiAKLSAgICBjb25zdCB1aW50OF90ICpzb3VyY2VEYXRhID0g
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oc3JjTWFwcGVkLnBEYXRhKTsKLSAgICB1
aW50OF90ICpkZXN0RGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRlc3RNYXBwZWQu
cERhdGEpOworICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEgPSByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QgKj4oc3JjTWFwcGVkLnBEYXRhKTsKKyAgICB1aW50OF90ICpkZXN0RGF0
YSAgICAgICAgID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90ICo+KGRlc3RNYXBwZWQucERhdGEp
OwogCiAgICAgYXV0byBtaXBHZW5lcmF0aW9uRnVuY3Rpb24gPQotICAgICAgICBkM2QxMTo6Rm9y
bWF0OjpHZXQoc3JjLT5nZXRJbnRlcm5hbEZvcm1hdCgpLCByZW5kZXJlckNhcHMpLmZvcm1hdC5t
aXBHZW5lcmF0aW9uRnVuY3Rpb247CisgICAgICAgIGQzZDExOjpGb3JtYXQ6OkdldChzcmMtPmdl
dEludGVybmFsRm9ybWF0KCksIHJlbmRlcmVyQ2FwcykuZm9ybWF0KCkubWlwR2VuZXJhdGlvbkZ1
bmN0aW9uOwogICAgIG1pcEdlbmVyYXRpb25GdW5jdGlvbihzcmMtPmdldFdpZHRoKCksIHNyYy0+
Z2V0SGVpZ2h0KCksIHNyYy0+Z2V0RGVwdGgoKSwgc291cmNlRGF0YSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3JjTWFwcGVkLlJvd1BpdGNoLCBzcmNNYXBwZWQuRGVwdGhQaXRjaCwgZGVz
dERhdGEsIGRlc3RNYXBwZWQuUm93UGl0Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
c3RNYXBwZWQuRGVwdGhQaXRjaCk7CkBAIC03OSwxMCArNzksOSBAQCBnbDo6RXJyb3IgSW1hZ2Ux
MTo6Z2VuZXJhdGVNaXBtYXAoSW1hZ2UxMSAqZGVzdCwKIAogYm9vbCBJbWFnZTExOjppc0RpcnR5
KCkgY29uc3QKIHsKLSAgICAvLyBJZiBtRGlydHkgaXMgdHJ1ZQotICAgIC8vIEFORCBtU3RhZ2lu
Z1RleHR1cmUgZG9lc24ndCBleGlzdCBBTkQgbVN0YWdpbmdUZXh0dXJlIGRvZXNuJ3QgbmVlZCB0
byBiZSByZWNvdmVyZWQgZnJvbSBUZXh0dXJlU3RvcmFnZQotICAgIC8vIEFORCB0aGUgdGV4dHVy
ZSBkb2Vzbid0IHJlcXVpcmUgaW5pdCBkYXRhIChpLmUuIGEgYmxhbmsgbmV3IHRleHR1cmUgd2ls
bCBzdWZmaWNlKQotICAgIC8vIHRoZW4gaXNEaXJ0eSBzaG91bGQgc3RpbGwgcmV0dXJuIGZhbHNl
LgorICAgIC8vIElmIG1EaXJ0eSBpcyB0cnVlIEFORCBtU3RhZ2luZ1RleHR1cmUgZG9lc24ndCBl
eGlzdCBBTkQgbVN0YWdpbmdUZXh0dXJlIGRvZXNuJ3QgbmVlZCB0byBiZQorICAgIC8vIHJlY292
ZXJlZCBmcm9tIFRleHR1cmVTdG9yYWdlIEFORCB0aGUgdGV4dHVyZSBkb2Vzbid0IHJlcXVpcmUg
aW5pdCBkYXRhIChpLmUuIGEgYmxhbmsgbmV3CisgICAgLy8gdGV4dHVyZSB3aWxsIHN1ZmZpY2Up
IHRoZW4gaXNEaXJ0eSBzaG91bGQgc3RpbGwgcmV0dXJuIGZhbHNlLgogICAgIGlmIChtRGlydHkg
JiYgIW1TdGFnaW5nVGV4dHVyZSAmJiAhbVJlY292ZXJGcm9tU3RvcmFnZSkKICAgICB7CiAgICAg
ICAgIGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZkZXZpY2VDYXBzID0gbVJlbmRlcmVyLT5n
ZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpOwpAQCAtOTYsMjMgKzk1LDI2IEBAIGJvb2wgSW1hZ2Ux
MTo6aXNEaXJ0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1EaXJ0eTsKIH0KIAotZ2w6OkVycm9yIElt
YWdlMTE6OmNvcHlUb1N0b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIGNvbnN0IGdsOjpJ
bWFnZUluZGV4ICZpbmRleCwgY29uc3QgZ2w6OkJveCAmcmVnaW9uKQorZ2w6OkVycm9yIEltYWdl
MTE6OmNvcHlUb1N0b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZyZWdpb24pCiB7CiAgICAg
VGV4dHVyZVN0b3JhZ2UxMSAqc3RvcmFnZTExID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2UxMT4oc3Rv
cmFnZSk7CiAKLSAgICAvLyBJZiBhbiBhcHAncyBiZWhhdmlvciByZXN1bHRzIGluIGFuIEltYWdl
MTEgY29weWluZyBpdHMgZGF0YSB0by9mcm9tIHRvIGEgVGV4dHVyZVN0b3JhZ2UgbXVsdGlwbGUg
dGltZXMsCi0gICAgLy8gdGhlbiB3ZSBzaG91bGQganVzdCBrZWVwIHRoZSBzdGFnaW5nIHRleHR1
cmUgYXJvdW5kIHRvIHByZXZlbnQgdGhlIGNvcHlpbmcgZnJvbSBpbXBhY3RpbmcgcGVyZi4KLSAg
ICAvLyBXZSBhbGxvdyB0aGUgSW1hZ2UxMSB0byBjb3B5IGl0cyBkYXRhIHRvL2Zyb20gVGV4dHVy
ZVN0b3JhZ2Ugb25jZS4KLSAgICAvLyBUaGlzIGFjY291bnRzIGZvciBhbiBhcHAgbWFraW5nIGEg
bGF0ZSBjYWxsIHRvIGdsR2VuZXJhdGVNaXBtYXAuCisgICAgLy8gSWYgYW4gYXBwJ3MgYmVoYXZp
b3IgcmVzdWx0cyBpbiBhbiBJbWFnZTExIGNvcHlpbmcgaXRzIGRhdGEgdG8vZnJvbSB0byBhIFRl
eHR1cmVTdG9yYWdlCisgICAgLy8gbXVsdGlwbGUgdGltZXMsIHRoZW4gd2Ugc2hvdWxkIGp1c3Qg
a2VlcCB0aGUgc3RhZ2luZyB0ZXh0dXJlIGFyb3VuZCB0byBwcmV2ZW50IHRoZSBjb3B5aW5nCisg
ICAgLy8gZnJvbSBpbXBhY3RpbmcgcGVyZi4gV2UgYWxsb3cgdGhlIEltYWdlMTEgdG8gY29weSBp
dHMgZGF0YSB0by9mcm9tIFRleHR1cmVTdG9yYWdlIG9uY2UuIFRoaXMKKyAgICAvLyBhY2NvdW50
cyBmb3IgYW4gYXBwIG1ha2luZyBhIGxhdGUgY2FsbCB0byBnbEdlbmVyYXRlTWlwbWFwLgogICAg
IGJvb2wgYXR0ZW1wdFRvUmVsZWFzZVN0YWdpbmdUZXh0dXJlID0gKG1SZWNvdmVyZWRGcm9tU3Rv
cmFnZUNvdW50IDwgMik7CiAKICAgICBpZiAoYXR0ZW1wdFRvUmVsZWFzZVN0YWdpbmdUZXh0dXJl
KQogICAgIHsKLSAgICAgICAgLy8gSWYgYW5vdGhlciBpbWFnZSBpcyByZWx5aW5nIG9uIHRoaXMg
U3RvcmFnZSBmb3IgaXRzIGRhdGEsIHRoZW4gd2UgbXVzdCBsZXQgaXQgcmVjb3ZlciBpdHMgZGF0
YSBiZWZvcmUgd2Ugb3ZlcndyaXRlIGl0LgorICAgICAgICAvLyBJZiBhbm90aGVyIGltYWdlIGlz
IHJlbHlpbmcgb24gdGhpcyBTdG9yYWdlIGZvciBpdHMgZGF0YSwgdGhlbiB3ZSBtdXN0IGxldCBp
dCByZWNvdmVyIGl0cworICAgICAgICAvLyBkYXRhIGJlZm9yZSB3ZSBvdmVyd3JpdGUgaXQuCiAg
ICAgICAgIEFOR0xFX1RSWShzdG9yYWdlMTEtPnJlbGVhc2VBc3NvY2lhdGVkSW1hZ2UoaW5kZXgs
IHRoaXMpKTsKICAgICB9CiAKLSAgICBJRDNEMTFSZXNvdXJjZSAqc3RhZ2luZ1RleHR1cmUgPSBO
VUxMOworICAgIElEM0QxMVJlc291cmNlICpzdGFnaW5nVGV4dHVyZSAgICAgICA9IE5VTEw7CiAg
ICAgdW5zaWduZWQgaW50IHN0YWdpbmdTdWJyZXNvdXJjZUluZGV4ID0gMDsKICAgICBBTkdMRV9U
UlkoZ2V0U3RhZ2luZ1RleHR1cmUoJnN0YWdpbmdUZXh0dXJlLCAmc3RhZ2luZ1N1YnJlc291cmNl
SW5kZXgpKTsKICAgICBBTkdMRV9UUlkoCkBAIC0xMjMsMTUgKzEyNSwxNSBAQCBnbDo6RXJyb3Ig
SW1hZ2UxMTo6Y29weVRvU3RvcmFnZShUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwgY29uc3QgZ2w6
OkltYWdlSW5kZXggJgogICAgIHsKICAgICAgICAgc3RvcmFnZTExLT5hc3NvY2lhdGVJbWFnZSh0
aGlzLCBpbmRleCk7CiAgICAgICAgIHJlbGVhc2VTdGFnaW5nVGV4dHVyZSgpOwotICAgICAgICBt
UmVjb3ZlckZyb21TdG9yYWdlID0gdHJ1ZTsKLSAgICAgICAgbUFzc29jaWF0ZWRTdG9yYWdlID0g
c3RvcmFnZTExOworICAgICAgICBtUmVjb3ZlckZyb21TdG9yYWdlICAgPSB0cnVlOworICAgICAg
ICBtQXNzb2NpYXRlZFN0b3JhZ2UgICAgPSBzdG9yYWdlMTE7CiAgICAgICAgIG1Bc3NvY2lhdGVk
SW1hZ2VJbmRleCA9IGluZGV4OwogICAgIH0KIAogICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
fQogCi1ib29sIEltYWdlMTE6OmlzQXNzb2NpYXRlZFN0b3JhZ2VWYWxpZChUZXh0dXJlU3RvcmFn
ZTExKiB0ZXh0dXJlU3RvcmFnZSkgY29uc3QKK2Jvb2wgSW1hZ2UxMTo6aXNBc3NvY2lhdGVkU3Rv
cmFnZVZhbGlkKFRleHR1cmVTdG9yYWdlMTEgKnRleHR1cmVTdG9yYWdlKSBjb25zdAogewogICAg
IHJldHVybiAobUFzc29jaWF0ZWRTdG9yYWdlID09IHRleHR1cmVTdG9yYWdlKTsKIH0KQEAgLTE0
MiwxMCArMTQ0LDEyIEBAIGdsOjpFcnJvciBJbWFnZTExOjpyZWNvdmVyRnJvbUFzc29jaWF0ZWRT
dG9yYWdlKCkKICAgICB7CiAgICAgICAgIEFOR0xFX1RSWShjcmVhdGVTdGFnaW5nVGV4dHVyZSgp
KTsKIAotICAgICAgICBib29sIHRleHR1cmVTdG9yYWdlQ29ycmVjdCA9IG1Bc3NvY2lhdGVkU3Rv
cmFnZS0+aXNBc3NvY2lhdGVkSW1hZ2VWYWxpZChtQXNzb2NpYXRlZEltYWdlSW5kZXgsIHRoaXMp
OworICAgICAgICBib29sIHRleHR1cmVTdG9yYWdlQ29ycmVjdCA9CisgICAgICAgICAgICBtQXNz
b2NpYXRlZFN0b3JhZ2UtPmlzQXNzb2NpYXRlZEltYWdlVmFsaWQobUFzc29jaWF0ZWRJbWFnZUlu
ZGV4LCB0aGlzKTsKIAotICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhlIGNhY2hlZCBUZXh0
dXJlU3RvcmFnZSBoYXMgYmVlbiBtb2RpZmllZCBhZnRlciB0aGlzIEltYWdlMTEgcmVsZWFzZWQg
aXRzIGNvcHkgb2YgaXRzIGRhdGEuIAotICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgaGF2ZSBo
YXBwZW5lZC4gVGhlIFRleHR1cmVTdG9yYWdlIHNob3VsZCBoYXZlIHRvbGQgdGhpcyBJbWFnZTEx
IHRvIHJlY292ZXIgaXRzIGRhdGEgYmVmb3JlIGl0IHdhcyBvdmVyd3JpdHRlbi4KKyAgICAgICAg
Ly8gVGhpcyBtZWFucyB0aGF0IHRoZSBjYWNoZWQgVGV4dHVyZVN0b3JhZ2UgaGFzIGJlZW4gbW9k
aWZpZWQgYWZ0ZXIgdGhpcyBJbWFnZTExIHJlbGVhc2VkCisgICAgICAgIC8vIGl0cyBjb3B5IG9m
IGl0cyBkYXRhLiBUaGlzIHNob3VsZCBub3QgaGF2ZSBoYXBwZW5lZC4gVGhlIFRleHR1cmVTdG9y
YWdlIHNob3VsZCBoYXZlIHRvbGQKKyAgICAgICAgLy8gdGhpcyBJbWFnZTExIHRvIHJlY292ZXIg
aXRzIGRhdGEgYmVmb3JlIGl0IHdhcyBvdmVyd3JpdHRlbi4KICAgICAgICAgQVNTRVJUKHRleHR1
cmVTdG9yYWdlQ29ycmVjdCk7CiAKICAgICAgICAgaWYgKHRleHR1cmVTdG9yYWdlQ29ycmVjdCkK
QEAgLTE3MSwxNyArMTc1LDE4IEBAIHZvaWQgSW1hZ2UxMTo6ZGlzYXNzb2NpYXRlU3RvcmFnZSgp
CiAgICAgICAgIC8vIE1ha2UgdGhlIHRleHR1cmVzdG9yYWdlIHJlbGVhc2UgdGhlIEltYWdlMTEg
dG9vCiAgICAgICAgIG1Bc3NvY2lhdGVkU3RvcmFnZS0+ZGlzYXNzb2NpYXRlSW1hZ2UobUFzc29j
aWF0ZWRJbWFnZUluZGV4LCB0aGlzKTsKIAotICAgICAgICBtUmVjb3ZlckZyb21TdG9yYWdlID0g
ZmFsc2U7Ci0gICAgICAgIG1Bc3NvY2lhdGVkU3RvcmFnZSA9IE5VTEw7CisgICAgICAgIG1SZWNv
dmVyRnJvbVN0b3JhZ2UgICA9IGZhbHNlOworICAgICAgICBtQXNzb2NpYXRlZFN0b3JhZ2UgICAg
PSBOVUxMOwogICAgICAgICBtQXNzb2NpYXRlZEltYWdlSW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6
TWFrZUludmFsaWQoKTsKICAgICB9CiB9CiAKLWJvb2wgSW1hZ2UxMTo6cmVkZWZpbmUoR0xlbnVt
IHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwg
Ym9vbCBmb3JjZVJlbGVhc2UpCitib29sIEltYWdlMTE6OnJlZGVmaW5lKEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgZm9yY2VSZWxlYXNlKQogewotICAgIGlmIChtV2lkdGggIT0gc2l6ZS53aWR0
aCB8fAotICAgICAgICBtSGVpZ2h0ICE9IHNpemUuaGVpZ2h0IHx8Ci0gICAgICAgIG1JbnRlcm5h
bEZvcm1hdCAhPSBpbnRlcm5hbGZvcm1hdCB8fAorICAgIGlmIChtV2lkdGggIT0gc2l6ZS53aWR0
aCB8fCBtSGVpZ2h0ICE9IHNpemUuaGVpZ2h0IHx8IG1JbnRlcm5hbEZvcm1hdCAhPSBpbnRlcm5h
bGZvcm1hdCB8fAogICAgICAgICBmb3JjZVJlbGVhc2UpCiAgICAgewogICAgICAgICAvLyBFbmQg
dGhlIGFzc29jaWF0aW9uIHdpdGggdGhlIFRleHR1cmVTdG9yYWdlLCBzaW5jZSB0aGF0IGRhdGEg
d2lsbCBiZSBvdXQgb2YgZGF0ZS4KQEAgLTE4OSwxMSArMTk0LDExIEBAIGJvb2wgSW1hZ2UxMTo6
cmVkZWZpbmUoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBjb25zdCBnbDo6
RXh0ZW50cyAmCiAgICAgICAgIGRpc2Fzc29jaWF0ZVN0b3JhZ2UoKTsKICAgICAgICAgbVJlY292
ZXJlZEZyb21TdG9yYWdlQ291bnQgPSAwOwogCi0gICAgICAgIG1XaWR0aCA9IHNpemUud2lkdGg7
Ci0gICAgICAgIG1IZWlnaHQgPSBzaXplLmhlaWdodDsKLSAgICAgICAgbURlcHRoID0gc2l6ZS5k
ZXB0aDsKKyAgICAgICAgbVdpZHRoICAgICAgICAgID0gc2l6ZS53aWR0aDsKKyAgICAgICAgbUhl
aWdodCAgICAgICAgID0gc2l6ZS5oZWlnaHQ7CisgICAgICAgIG1EZXB0aCAgICAgICAgICA9IHNp
emUuZGVwdGg7CiAgICAgICAgIG1JbnRlcm5hbEZvcm1hdCA9IGludGVybmFsZm9ybWF0OwotICAg
ICAgICBtVGFyZ2V0ID0gdGFyZ2V0OworICAgICAgICBtVGFyZ2V0ICAgICAgICAgPSB0YXJnZXQ7
CiAKICAgICAgICAgLy8gY29tcHV0ZSB0aGUgZDNkIGZvcm1hdCB0aGF0IHdpbGwgYmUgdXNlZAog
ICAgICAgICBjb25zdCBkM2QxMTo6Rm9ybWF0ICZmb3JtYXRJbmZvID0KQEAgLTIxOSw3ICsyMjQs
OCBAQCBEWEdJX0ZPUk1BVCBJbWFnZTExOjpnZXREWEdJRm9ybWF0KCkgY29uc3QKICAgICByZXR1
cm4gbURYR0lGb3JtYXQ7CiB9CiAKLS8vIFN0b3JlIHRoZSBwaXhlbCByZWN0YW5nbGUgZGVzaWdu
YXRlZCBieSB4b2Zmc2V0LHlvZmZzZXQsd2lkdGgsaGVpZ2h0IHdpdGggcGl4ZWxzIHN0b3JlZCBh
cyBmb3JtYXQvdHlwZSBhdCBpbnB1dAorLy8gU3RvcmUgdGhlIHBpeGVsIHJlY3RhbmdsZSBkZXNp
Z25hdGVkIGJ5IHhvZmZzZXQseW9mZnNldCx3aWR0aCxoZWlnaHQgd2l0aCBwaXhlbHMgc3RvcmVk
IGFzCisvLyBmb3JtYXQvdHlwZSBhdCBpbnB1dAogLy8gaW50byB0aGUgdGFyZ2V0IHBpeGVsIHJl
Y3RhbmdsZS4KIGdsOjpFcnJvciBJbWFnZTExOjpsb2FkRGF0YShjb25zdCBnbDo6Qm94ICZhcmVh
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRl
ICZ1bnBhY2ssCkBAIC0yNDEsMTYgKzI0NywxOCBAQCBnbDo6RXJyb3IgSW1hZ2UxMTo6bG9hZERh
dGEoY29uc3QgZ2w6OkJveCAmYXJlYSwKICAgICAgICAgaW5wdXRTa2lwQnl0ZXMpOwogCiAgICAg
Y29uc3QgZDNkMTE6OkRYR0lGb3JtYXRTaXplICZkeGdpRm9ybWF0SW5mbyA9IGQzZDExOjpHZXRE
WEdJRm9ybWF0U2l6ZUluZm8obURYR0lGb3JtYXQpOwotICAgIEdMdWludCBvdXRwdXRQaXhlbFNp
emUgPSBkeGdpRm9ybWF0SW5mby5waXhlbEJ5dGVzOworICAgIEdMdWludCBvdXRwdXRQaXhlbFNp
emUgICAgICAgICAgICAgICAgICAgICAgPSBkeGdpRm9ybWF0SW5mby5waXhlbEJ5dGVzOwogCiAg
ICAgY29uc3QgZDNkMTE6OkZvcm1hdCAmZDNkRm9ybWF0SW5mbyA9CiAgICAgICAgIGQzZDExOjpG
b3JtYXQ6OkdldChtSW50ZXJuYWxGb3JtYXQsIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmlj
ZUNhcHMoKSk7Ci0gICAgTG9hZEltYWdlRnVuY3Rpb24gbG9hZEZ1bmN0aW9uID0gZDNkRm9ybWF0
SW5mby5sb2FkRnVuY3Rpb25zKHR5cGUpLmxvYWRGdW5jdGlvbjsKKyAgICBMb2FkSW1hZ2VGdW5j
dGlvbiBsb2FkRnVuY3Rpb24gPSBkM2RGb3JtYXRJbmZvLmdldExvYWRGdW5jdGlvbnMoKSh0eXBl
KS5sb2FkRnVuY3Rpb247CiAKICAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkSW1h
Z2U7CiAgICAgQU5HTEVfVFJZKG1hcChEM0QxMV9NQVBfV1JJVEUsICZtYXBwZWRJbWFnZSkpOwog
Ci0gICAgdWludDhfdCAqb2Zmc2V0TWFwcGVkRGF0YSA9IChyZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihtYXBwZWRJbWFnZS5wRGF0YSkgKyAoYXJlYS55ICogbWFwcGVkSW1hZ2UuUm93UGl0Y2gg
KyBhcmVhLnggKiBvdXRwdXRQaXhlbFNpemUgKyBhcmVhLnogKiBtYXBwZWRJbWFnZS5EZXB0aFBp
dGNoKSk7CisgICAgdWludDhfdCAqb2Zmc2V0TWFwcGVkRGF0YSA9IChyZWludGVycHJldF9jYXN0
PHVpbnQ4X3QgKj4obWFwcGVkSW1hZ2UucERhdGEpICsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChhcmVhLnkgKiBtYXBwZWRJbWFnZS5Sb3dQaXRjaCArIGFyZWEueCAqIG91dHB1
dFBpeGVsU2l6ZSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYS56ICog
bWFwcGVkSW1hZ2UuRGVwdGhQaXRjaCkpOwogICAgIGxvYWRGdW5jdGlvbihhcmVhLndpZHRoLCBh
cmVhLmhlaWdodCwgYXJlYS5kZXB0aCwKICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50OF90ICo+KGlucHV0KSArIGlucHV0U2tpcEJ5dGVzLCBpbnB1dFJvd1BpdGNo
LAogICAgICAgICAgICAgICAgICBpbnB1dERlcHRoUGl0Y2gsIG9mZnNldE1hcHBlZERhdGEsIG1h
cHBlZEltYWdlLlJvd1BpdGNoLCBtYXBwZWRJbWFnZS5EZXB0aFBpdGNoKTsKQEAgLTI2OSwyNyAr
Mjc3LDI5IEBAIGdsOjpFcnJvciBJbWFnZTExOjpsb2FkQ29tcHJlc3NlZERhdGEoY29uc3QgZ2w6
OkJveCAmYXJlYSwgY29uc3Qgdm9pZCAqaW5wdXQpCiAgICAgQU5HTEVfVFJZX1JFU1VMVChmb3Jt
YXRJbmZvLmNvbXB1dGVEZXB0aFBpdGNoKGFyZWEuaGVpZ2h0LCAwLCBpbnB1dFJvd1BpdGNoKSwg
aW5wdXREZXB0aFBpdGNoKTsKIAogICAgIGNvbnN0IGQzZDExOjpEWEdJRm9ybWF0U2l6ZSAmZHhn
aUZvcm1hdEluZm8gPSBkM2QxMTo6R2V0RFhHSUZvcm1hdFNpemVJbmZvKG1EWEdJRm9ybWF0KTsK
LSAgICBHTHVpbnQgb3V0cHV0UGl4ZWxTaXplID0gZHhnaUZvcm1hdEluZm8ucGl4ZWxCeXRlczsK
LSAgICBHTHVpbnQgb3V0cHV0QmxvY2tXaWR0aCA9IGR4Z2lGb3JtYXRJbmZvLmJsb2NrV2lkdGg7
Ci0gICAgR0x1aW50IG91dHB1dEJsb2NrSGVpZ2h0ID0gZHhnaUZvcm1hdEluZm8uYmxvY2tIZWln
aHQ7CisgICAgR0x1aW50IG91dHB1dFBpeGVsU2l6ZSAgICAgICAgICAgICAgICAgICAgICA9IGR4
Z2lGb3JtYXRJbmZvLnBpeGVsQnl0ZXM7CisgICAgR0x1aW50IG91dHB1dEJsb2NrV2lkdGggICAg
ICAgICAgICAgICAgICAgICA9IGR4Z2lGb3JtYXRJbmZvLmJsb2NrV2lkdGg7CisgICAgR0x1aW50
IG91dHB1dEJsb2NrSGVpZ2h0ICAgICAgICAgICAgICAgICAgICA9IGR4Z2lGb3JtYXRJbmZvLmJs
b2NrSGVpZ2h0OwogCiAgICAgQVNTRVJUKGFyZWEueCAlIG91dHB1dEJsb2NrV2lkdGggPT0gMCk7
CiAgICAgQVNTRVJUKGFyZWEueSAlIG91dHB1dEJsb2NrSGVpZ2h0ID09IDApOwogCiAgICAgY29u
c3QgZDNkMTE6OkZvcm1hdCAmZDNkRm9ybWF0SW5mbyA9CiAgICAgICAgIGQzZDExOjpGb3JtYXQ6
OkdldChtSW50ZXJuYWxGb3JtYXQsIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMo
KSk7Ci0gICAgTG9hZEltYWdlRnVuY3Rpb24gbG9hZEZ1bmN0aW9uID0gZDNkRm9ybWF0SW5mby5s
b2FkRnVuY3Rpb25zKEdMX1VOU0lHTkVEX0JZVEUpLmxvYWRGdW5jdGlvbjsKKyAgICBMb2FkSW1h
Z2VGdW5jdGlvbiBsb2FkRnVuY3Rpb24gPQorICAgICAgICBkM2RGb3JtYXRJbmZvLmdldExvYWRG
dW5jdGlvbnMoKShHTF9VTlNJR05FRF9CWVRFKS5sb2FkRnVuY3Rpb247CiAKICAgICBEM0QxMV9N
QVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkSW1hZ2U7CiAgICAgQU5HTEVfVFJZKG1hcChEM0QxMV9N
QVBfV1JJVEUsICZtYXBwZWRJbWFnZSkpOwogCi0gICAgdWludDhfdCogb2Zmc2V0TWFwcGVkRGF0
YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG1hcHBlZEltYWdlLnBEYXRhKSArICgoYXJl
YS55IC8gb3V0cHV0QmxvY2tIZWlnaHQpICogbWFwcGVkSW1hZ2UuUm93UGl0Y2ggKwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGFyZWEueCAvIG91dHB1dEJsb2NrV2lkdGgpICogb3V0cHV0UGl4ZWxTaXpl
ICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFyZWEueiAqIG1hcHBlZEltYWdlLkRlcHRoUGl0Y2gpOwor
ICAgIHVpbnQ4X3QgKm9mZnNldE1hcHBlZERhdGEgPQorICAgICAgICByZWludGVycHJldF9jYXN0
PHVpbnQ4X3QgKj4obWFwcGVkSW1hZ2UucERhdGEpICsKKyAgICAgICAgKChhcmVhLnkgLyBvdXRw
dXRCbG9ja0hlaWdodCkgKiBtYXBwZWRJbWFnZS5Sb3dQaXRjaCArCisgICAgICAgICAoYXJlYS54
IC8gb3V0cHV0QmxvY2tXaWR0aCkgKiBvdXRwdXRQaXhlbFNpemUgKyBhcmVhLnogKiBtYXBwZWRJ
bWFnZS5EZXB0aFBpdGNoKTsKIAotICAgIGxvYWRGdW5jdGlvbihhcmVhLndpZHRoLCBhcmVhLmhl
aWdodCwgYXJlYS5kZXB0aCwKLSAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCB1aW50OF90Kj4oaW5wdXQpLCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsCi0gICAg
ICAgICAgICAgICAgIG9mZnNldE1hcHBlZERhdGEsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBtYXBw
ZWRJbWFnZS5EZXB0aFBpdGNoKTsKKyAgICBsb2FkRnVuY3Rpb24oYXJlYS53aWR0aCwgYXJlYS5o
ZWlnaHQsIGFyZWEuZGVwdGgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihpbnB1
dCksCisgICAgICAgICAgICAgICAgIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCwgb2Zm
c2V0TWFwcGVkRGF0YSwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsCisgICAgICAgICAgICAgICAgIG1h
cHBlZEltYWdlLkRlcHRoUGl0Y2gpOwogCiAgICAgdW5tYXAoKTsKIApAQCAtMzAzLDcgKzMxMyw3
IEBAIGdsOjpFcnJvciBJbWFnZTExOjpjb3B5RnJvbVRleFN0b3JhZ2UoY29uc3QgZ2w6OkltYWdl
SW5kZXggJmltYWdlSW5kZXgsIFRleHR1cmVTCiAgICAgSUQzRDExUmVzb3VyY2UgKnJlc291cmNl
ID0gbnVsbHB0cjsKICAgICBBTkdMRV9UUlkoc3RvcmFnZTExLT5nZXRSZXNvdXJjZSgmcmVzb3Vy
Y2UpKTsKIAotICAgIFVJTlQgc3VicmVzb3VyY2VJbmRleCAgICAgICAgID0gc3RvcmFnZTExLT5n
ZXRTdWJyZXNvdXJjZUluZGV4KGltYWdlSW5kZXgpOworICAgIFVJTlQgc3VicmVzb3VyY2VJbmRl
eCA9IHN0b3JhZ2UxMS0+Z2V0U3VicmVzb3VyY2VJbmRleChpbWFnZUluZGV4KTsKICAgICBUZXh0
dXJlSGVscGVyMTEgdGV4dHVyZUhlbHBlciA9CiAgICAgICAgIFRleHR1cmVIZWxwZXIxMTo6TWFr
ZUFuZFJlZmVyZW5jZShyZXNvdXJjZSwgc3RvcmFnZTExLT5nZXRGb3JtYXRTZXQoKSk7CiAKQEAg
LTM1NSwxMiArMzY1LDEyIEBAIGdsOjpFcnJvciBJbWFnZTExOjpjb3B5RnJvbUZyYW1lYnVmZmVy
KGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCiAgICAgY29uc3QgYXV0byAmZGVzdEQzRDEx
Rm9ybWF0ID0KICAgICAgICAgZDNkMTE6OkZvcm1hdDo6R2V0KG1JbnRlcm5hbEZvcm1hdCwgbVJl
bmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKTsKIAotICAgIGF1dG8gbG9hZEZ1bmN0
aW9uID0gZGVzdEQzRDExRm9ybWF0LmxvYWRGdW5jdGlvbnMoZGVzdEZvcm1hdEluZm8udHlwZSk7
CisgICAgYXV0byBsb2FkRnVuY3Rpb24gPSBkZXN0RDNEMTFGb3JtYXQuZ2V0TG9hZEZ1bmN0aW9u
cygpKGRlc3RGb3JtYXRJbmZvLnR5cGUpOwogICAgIGdsOjpFcnJvciBlcnJvciAgID0gZ2w6Ok5v
RXJyb3IoKTsKICAgICBpZiAobG9hZEZ1bmN0aW9uLnJlcXVpcmVzQ29udmVyc2lvbikKICAgICB7
CiAgICAgICAgIHNpemVfdCBidWZmZXJTaXplID0gZGVzdEZvcm1hdEluZm8ucGl4ZWxCeXRlcyAq
IHNvdXJjZUFyZWEud2lkdGggKiBzb3VyY2VBcmVhLmhlaWdodDsKLSAgICAgICAgTWVtb3J5QnVm
ZmVyICptZW1vcnlCdWZmZXIgPSBudWxscHRyOworICAgICAgICBhbmdsZTo6TWVtb3J5QnVmZmVy
ICptZW1vcnlCdWZmZXIgPSBudWxscHRyOwogICAgICAgICBtUmVuZGVyZXItPmdldFNjcmF0Y2hN
ZW1vcnlCdWZmZXIoYnVmZmVyU2l6ZSwgJm1lbW9yeUJ1ZmZlcik7CiAgICAgICAgIEdMdWludCBt
ZW1vcnlCdWZmZXJSb3dQaXRjaCA9IGRlc3RGb3JtYXRJbmZvLnBpeGVsQnl0ZXMgKiBzb3VyY2VB
cmVhLndpZHRoOwogCkBAIC00MjIsNyArNDMyLDcgQEAgZ2w6OkVycm9yIEltYWdlMTE6OmNvcHlX
aXRob3V0Q29udmVyc2lvbihjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAogICAgICAgICBy
ZXNvbHZlRGVzYy5NaXNjRmxhZ3MgICAgICAgICAgPSAwOwogCiAgICAgICAgIElEM0QxMVRleHR1
cmUyRCAqc3JjVGV4MkQgPSBOVUxMOwotICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+
Q3JlYXRlVGV4dHVyZTJEKCZyZXNvbHZlRGVzYywgTlVMTCwgJnNyY1RleDJEKTsKKyAgICAgICAg
SFJFU1VMVCByZXN1bHQgICAgICAgICAgICA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZyZXNv
bHZlRGVzYywgTlVMTCwgJnNyY1RleDJEKTsKICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlks
CkBAIC00NjEsMTEgKzQ3MSwxMiBAQCBnbDo6RXJyb3IgSW1hZ2UxMTo6Y29weVdpdGhvdXRDb252
ZXJzaW9uKGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCiAgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7CiB9CiAKLWdsOjpFcnJvciBJbWFnZTExOjpnZXRTdGFnaW5nVGV4dHVyZShJRDNEMTFS
ZXNvdXJjZSAqKm91dFN0YWdpbmdUZXh0dXJlLCB1bnNpZ25lZCBpbnQgKm91dFN1YnJlc291cmNl
SW5kZXgpCitnbDo6RXJyb3IgSW1hZ2UxMTo6Z2V0U3RhZ2luZ1RleHR1cmUoSUQzRDExUmVzb3Vy
Y2UgKipvdXRTdGFnaW5nVGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgKm91dFN1YnJlc291cmNlSW5kZXgpCiB7CiAgICAgQU5HTEVfVFJZ
KGNyZWF0ZVN0YWdpbmdUZXh0dXJlKCkpOwogCi0gICAgKm91dFN0YWdpbmdUZXh0dXJlID0gbVN0
YWdpbmdUZXh0dXJlOworICAgICpvdXRTdGFnaW5nVGV4dHVyZSAgID0gbVN0YWdpbmdUZXh0dXJl
OwogICAgICpvdXRTdWJyZXNvdXJjZUluZGV4ID0gbVN0YWdpbmdTdWJyZXNvdXJjZTsKICAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KQEAgLTQ3OSw3ICs0OTAsNyBAQCBnbDo6RXJyb3IgSW1h
Z2UxMTo6Y3JlYXRlU3RhZ2luZ1RleHR1cmUoKQogewogICAgIGlmIChtU3RhZ2luZ1RleHR1cmUp
CiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAgQVNTRVJUKG1XaWR0aCA+IDAgJiYg
bUhlaWdodCA+IDAgJiYgbURlcHRoID4gMCk7CkBAIC00ODksOCArNTAwLDggQEAgZ2w6OkVycm9y
IEltYWdlMTE6OmNyZWF0ZVN0YWdpbmdUZXh0dXJlKCkKICAgICBJRDNEMTFEZXZpY2UgKmRldmlj
ZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAgICAgSFJFU1VMVCByZXN1bHQ7CiAKLSAgICBp
bnQgbG9kT2Zmc2V0ID0gMTsKLSAgICBHTHNpemVpIHdpZHRoID0gbVdpZHRoOworICAgIGludCBs
b2RPZmZzZXQgID0gMTsKKyAgICBHTHNpemVpIHdpZHRoICA9IG1XaWR0aDsKICAgICBHTHNpemVp
IGhlaWdodCA9IG1IZWlnaHQ7CiAKICAgICAvLyBhZGp1c3Qgc2l6ZSBpZiBuZWVkZWQgZm9yIGNv
bXByZXNzZWQgdGV4dHVyZXMKQEAgLTUwMSwyMyArNTEyLDI0IEBAIGdsOjpFcnJvciBJbWFnZTEx
OjpjcmVhdGVTdGFnaW5nVGV4dHVyZSgpCiAgICAgICAgIElEM0QxMVRleHR1cmUzRCAqbmV3VGV4
dHVyZSA9IE5VTEw7CiAKICAgICAgICAgRDNEMTFfVEVYVFVSRTNEX0RFU0MgZGVzYzsKLSAgICAg
ICAgZGVzYy5XaWR0aCA9IHdpZHRoOwotICAgICAgICBkZXNjLkhlaWdodCA9IGhlaWdodDsKLSAg
ICAgICAgZGVzYy5EZXB0aCA9IG1EZXB0aDsKLSAgICAgICAgZGVzYy5NaXBMZXZlbHMgPSBsb2RP
ZmZzZXQgKyAxOwotICAgICAgICBkZXNjLkZvcm1hdCA9IGR4Z2lGb3JtYXQ7Ci0gICAgICAgIGRl
c2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9TVEFHSU5HOwotICAgICAgICBkZXNjLkJpbmRGbGFncyA9
IDA7CisgICAgICAgIGRlc2MuV2lkdGggICAgICAgICAgPSB3aWR0aDsKKyAgICAgICAgZGVzYy5I
ZWlnaHQgICAgICAgICA9IGhlaWdodDsKKyAgICAgICAgZGVzYy5EZXB0aCAgICAgICAgICA9IG1E
ZXB0aDsKKyAgICAgICAgZGVzYy5NaXBMZXZlbHMgICAgICA9IGxvZE9mZnNldCArIDE7CisgICAg
ICAgIGRlc2MuRm9ybWF0ICAgICAgICAgPSBkeGdpRm9ybWF0OworICAgICAgICBkZXNjLlVzYWdl
ICAgICAgICAgID0gRDNEMTFfVVNBR0VfU1RBR0lORzsKKyAgICAgICAgZGVzYy5CaW5kRmxhZ3Mg
ICAgICA9IDA7CiAgICAgICAgIGRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNT
X1JFQUQgfCBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOwotICAgICAgICBkZXNjLk1pc2NGbGFncyA9
IDA7CisgICAgICAgIGRlc2MuTWlzY0ZsYWdzICAgICAgPSAwOwogCiAgICAgICAgIGlmIChkM2Qx
MTo6Rm9ybWF0OjpHZXQobUludGVybmFsRm9ybWF0LCBtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFE
ZXZpY2VDYXBzKCkpCiAgICAgICAgICAgICAgICAgLmRhdGFJbml0aWFsaXplckZ1bmN0aW9uICE9
IE5VTEwpCiAgICAgICAgIHsKICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEQzRDExX1NVQlJFU09V
UkNFX0RBVEE+IGluaXRpYWxEYXRhOwogICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0
b3I8QllURT4+IHRleHR1cmVEYXRhOwotICAgICAgICAgICAgZDNkMTE6OkdlbmVyYXRlSW5pdGlh
bFRleHR1cmVEYXRhKG1JbnRlcm5hbEZvcm1hdCwgbVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2
aWNlQ2FwcygpLCB3aWR0aCwgaGVpZ2h0LCBtRGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbG9kT2Zmc2V0ICsgMSwgJmluaXRpYWxEYXRhLCAmdGV4
dHVyZURhdGEpOworICAgICAgICAgICAgZDNkMTE6OkdlbmVyYXRlSW5pdGlhbFRleHR1cmVEYXRh
KG1JbnRlcm5hbEZvcm1hdCwgbVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWln
aHQsIG1EZXB0aCwgbG9kT2Zmc2V0ICsgMSwgJmluaXRpYWxEYXRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0ZXh0dXJlRGF0YSk7CiAKICAgICAgICAg
ICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTNEKCZkZXNjLCBpbml0aWFsRGF0YS5k
YXRhKCksICZuZXdUZXh0dXJlKTsKICAgICAgICAgfQpAQCAtNTI5LDM2ICs1NDEsMzkgQEAgZ2w6
OkVycm9yIEltYWdlMTE6OmNyZWF0ZVN0YWdpbmdUZXh0dXJlKCkKICAgICAgICAgaWYgKEZBSUxF
RChyZXN1bHQpKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IEVfT1VU
T0ZNRU1PUlkpOwotICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZ
LCAiRmFpbGVkIHRvIGNyZWF0ZSBzdGFnaW5nIHRleHR1cmUsIHJlc3VsdDogMHglWC4iLCByZXN1
bHQpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFp
bGVkIHRvIGNyZWF0ZSBzdGFnaW5nIHRleHR1cmUsIHJlc3VsdDogMHglWC4iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHQpOwogICAgICAgICB9CiAKLSAgICAgICAgbVN0YWdp
bmdUZXh0dXJlID0gbmV3VGV4dHVyZTsKKyAgICAgICAgbVN0YWdpbmdUZXh0dXJlICAgICA9IG5l
d1RleHR1cmU7CiAgICAgICAgIG1TdGFnaW5nU3VicmVzb3VyY2UgPSBEM0QxMUNhbGNTdWJyZXNv
dXJjZShsb2RPZmZzZXQsIDAsIGxvZE9mZnNldCArIDEpOwogICAgIH0KLSAgICBlbHNlIGlmICht
VGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQgfHwgbVRhcmdldCA9PSBHTF9URVhUVVJFXzJEX0FSUkFZ
IHx8IG1UYXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCkKKyAgICBlbHNlIGlmIChtVGFyZ2V0
ID09IEdMX1RFWFRVUkVfMkQgfHwgbVRhcmdldCA9PSBHTF9URVhUVVJFXzJEX0FSUkFZIHx8Cisg
ICAgICAgICAgICAgbVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQKQogICAgIHsKICAgICAg
ICAgSUQzRDExVGV4dHVyZTJEICpuZXdUZXh0dXJlID0gTlVMTDsKIAogICAgICAgICBEM0QxMV9U
RVhUVVJFMkRfREVTQyBkZXNjOwotICAgICAgICBkZXNjLldpZHRoID0gd2lkdGg7Ci0gICAgICAg
IGRlc2MuSGVpZ2h0ID0gaGVpZ2h0OwotICAgICAgICBkZXNjLk1pcExldmVscyA9IGxvZE9mZnNl
dCArIDE7Ci0gICAgICAgIGRlc2MuQXJyYXlTaXplID0gMTsKLSAgICAgICAgZGVzYy5Gb3JtYXQg
PSBkeGdpRm9ybWF0OwotICAgICAgICBkZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOworICAgICAg
ICBkZXNjLldpZHRoICAgICAgICAgICAgICA9IHdpZHRoOworICAgICAgICBkZXNjLkhlaWdodCAg
ICAgICAgICAgICA9IGhlaWdodDsKKyAgICAgICAgZGVzYy5NaXBMZXZlbHMgICAgICAgICAgPSBs
b2RPZmZzZXQgKyAxOworICAgICAgICBkZXNjLkFycmF5U2l6ZSAgICAgICAgICA9IDE7CisgICAg
ICAgIGRlc2MuRm9ybWF0ICAgICAgICAgICAgID0gZHhnaUZvcm1hdDsKKyAgICAgICAgZGVzYy5T
YW1wbGVEZXNjLkNvdW50ICAgPSAxOwogICAgICAgICBkZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9
IDA7Ci0gICAgICAgIGRlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9TVEFHSU5HOwotICAgICAgICBk
ZXNjLkJpbmRGbGFncyA9IDA7Ci0gICAgICAgIGRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9D
UFVfQUNDRVNTX1JFQUQgfCBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOwotICAgICAgICBkZXNjLk1p
c2NGbGFncyA9IDA7CisgICAgICAgIGRlc2MuVXNhZ2UgICAgICAgICAgICAgID0gRDNEMTFfVVNB
R0VfU1RBR0lORzsKKyAgICAgICAgZGVzYy5CaW5kRmxhZ3MgICAgICAgICAgPSAwOworICAgICAg
ICBkZXNjLkNQVUFjY2Vzc0ZsYWdzICAgICA9IEQzRDExX0NQVV9BQ0NFU1NfUkVBRCB8IEQzRDEx
X0NQVV9BQ0NFU1NfV1JJVEU7CisgICAgICAgIGRlc2MuTWlzY0ZsYWdzICAgICAgICAgID0gMDsK
IAogICAgICAgICBpZiAoZDNkMTE6OkZvcm1hdDo6R2V0KG1JbnRlcm5hbEZvcm1hdCwgbVJlbmRl
cmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKQogICAgICAgICAgICAgICAgIC5kYXRhSW5p
dGlhbGl6ZXJGdW5jdGlvbiAhPSBOVUxMKQogICAgICAgICB7CiAgICAgICAgICAgICBzdGQ6OnZl
Y3RvcjxEM0QxMV9TVUJSRVNPVVJDRV9EQVRBPiBpbml0aWFsRGF0YTsKICAgICAgICAgICAgIHN0
ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPEJZVEU+PiB0ZXh0dXJlRGF0YTsKLSAgICAgICAgICAgIGQz
ZDExOjpHZW5lcmF0ZUluaXRpYWxUZXh0dXJlRGF0YShtSW50ZXJuYWxGb3JtYXQsIG1SZW5kZXJl
ci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSwgd2lkdGgsIGhlaWdodCwgMSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2RPZmZzZXQgKyAxLCAmaW5p
dGlhbERhdGEsICZ0ZXh0dXJlRGF0YSk7CisgICAgICAgICAgICBkM2QxMTo6R2VuZXJhdGVJbml0
aWFsVGV4dHVyZURhdGEobUludGVybmFsRm9ybWF0LCBtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFE
ZXZpY2VDYXBzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2lkdGgsIGhlaWdodCwgMSwgbG9kT2Zmc2V0ICsgMSwgJmluaXRpYWxEYXRhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0ZXh0dXJlRGF0YSk7CiAK
ICAgICAgICAgICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZkZXNjLCBpbml0
aWFsRGF0YS5kYXRhKCksICZuZXdUZXh0dXJlKTsKICAgICAgICAgfQpAQCAtNTcwLDEwICs1ODUs
MTEgQEAgZ2w6OkVycm9yIEltYWdlMTE6OmNyZWF0ZVN0YWdpbmdUZXh0dXJlKCkKICAgICAgICAg
aWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0
ID09IEVfT1VUT0ZNRU1PUlkpOwotICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRf
T0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSBzdGFnaW5nIHRleHR1cmUsIHJlc3VsdDogMHgl
WC4iLCByZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVN
T1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSBzdGFnaW5nIHRleHR1cmUsIHJlc3VsdDogMHglWC4iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOwogICAgICAgICB9CiAKLSAgICAg
ICAgbVN0YWdpbmdUZXh0dXJlID0gbmV3VGV4dHVyZTsKKyAgICAgICAgbVN0YWdpbmdUZXh0dXJl
ICAgICA9IG5ld1RleHR1cmU7CiAgICAgICAgIG1TdGFnaW5nU3VicmVzb3VyY2UgPSBEM0QxMUNh
bGNTdWJyZXNvdXJjZShsb2RPZmZzZXQsIDAsIGxvZE9mZnNldCArIDEpOwogICAgIH0KICAgICBl
bHNlCkBAIC01ODIsNyArNTk4LDcgQEAgZ2w6OkVycm9yIEltYWdlMTE6OmNyZWF0ZVN0YWdpbmdU
ZXh0dXJlKCkKICAgICB9CiAKICAgICBtRGlydHkgPSBmYWxzZTsKLSAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVy
cm9yIEltYWdlMTE6Om1hcChEM0QxMV9NQVAgbWFwVHlwZSwgRDNEMTFfTUFQUEVEX1NVQlJFU09V
UkNFICptYXApCkBAIC01OTEsNyArNjA3LDcgQEAgZ2w6OkVycm9yIEltYWdlMTE6Om1hcChEM0Qx
MV9NQVAgbWFwVHlwZSwgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFICptYXApCiAgICAgQU5HTEVf
VFJZKHJlY292ZXJGcm9tQXNzb2NpYXRlZFN0b3JhZ2UoKSk7CiAKICAgICBJRDNEMTFSZXNvdXJj
ZSAqc3RhZ2luZ1RleHR1cmUgPSBOVUxMOwotICAgIHVuc2lnbmVkIGludCBzdWJyZXNvdXJjZUlu
ZGV4ID0gMDsKKyAgICB1bnNpZ25lZCBpbnQgc3VicmVzb3VyY2VJbmRleCAgPSAwOwogICAgIEFO
R0xFX1RSWShnZXRTdGFnaW5nVGV4dHVyZSgmc3RhZ2luZ1RleHR1cmUsICZzdWJyZXNvdXJjZUlu
ZGV4KSk7CiAKICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VDb250ZXh0ID0gbVJlbmRl
cmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CkBAIC02MTEsNyArNjI3LDcgQEAgZ2w6OkVycm9yIElt
YWdlMTE6Om1hcChEM0QxMV9NQVAgbWFwVHlwZSwgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFICpt
YXApCiAKICAgICBtRGlydHkgPSB0cnVlOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgSW1hZ2UxMTo6dW5t
YXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9JbmRleEJ1ZmZlcjExLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW5kZXhCdWZmZXIxMS5jcHAKaW5k
ZXggYTVlNzhhMjQ1ZDk1ZTBmNmIyZmJkMGRmNGZlNGJjMDlhYzhmODM4NC4uNjM4Mzk3MDA4MzBm
ODZhNTljZDE3YmJiMTkxMTEwNzk5ZGMzYzZhNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbmRleEJ1ZmZlcjExLmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL0luZGV4QnVmZmVyMTEuY3BwCkBAIC02NCw3ICs2NCw3IEBAIGdsOjpFcnJvciBJbmRl
eEJ1ZmZlcjExOjppbml0aWFsaXplKHVuc2lnbmVkIGludCBidWZmZXJTaXplLCBHTGVudW0gaW5k
ZXhUeXBlLCBiCiAgICAgbUluZGV4VHlwZSA9IGluZGV4VHlwZTsKICAgICBtRHluYW1pY1VzYWdl
ID0gZHluYW1pYzsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgSW5kZXhCdWZmZXIxMTo6bWFwQnVm
ZmVyKHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBzaXplLCB2b2lkKiogb3V0TWFw
cGVkTWVtb3J5KQpAQCAtOTAsNyArOTAsNyBAQCBnbDo6RXJyb3IgSW5kZXhCdWZmZXIxMTo6bWFw
QnVmZmVyKHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBzaXplLCB2b2lkKgogICAg
IH0KIAogICAgICpvdXRNYXBwZWRNZW1vcnkgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihtYXBw
ZWRSZXNvdXJjZS5wRGF0YSkgKyBvZmZzZXQ7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBJbmRleEJ1
ZmZlcjExOjp1bm1hcEJ1ZmZlcigpCkBAIC0xMDIsNyArMTAyLDcgQEAgZ2w6OkVycm9yIEluZGV4
QnVmZmVyMTE6OnVubWFwQnVmZmVyKCkKIAogICAgIElEM0QxMURldmljZUNvbnRleHQgKmR4Q29u
dGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpOwogICAgIGR4Q29udGV4dC0+VW5t
YXAobUJ1ZmZlciwgMCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIEdMZW51bSBJbmRleEJ1ZmZlcjExOjpnZXRJbmRl
eFR5cGUoKSBjb25zdApAQCAtMTIzLDcgKzEyMyw3IEBAIGdsOjpFcnJvciBJbmRleEJ1ZmZlcjEx
OjpzZXRTaXplKHVuc2lnbmVkIGludCBidWZmZXJTaXplLCBHTGVudW0gaW5kZXhUeXBlKQogICAg
IH0KICAgICBlbHNlCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogfQogCkBAIC0xNDUsNyAr
MTQ1LDcgQEAgZ2w6OkVycm9yIEluZGV4QnVmZmVyMTE6OmRpc2NhcmQoKQogCiAgICAgZHhDb250
ZXh0LT5Vbm1hcChtQnVmZmVyLCAwKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBEWEdJX0ZPUk1BVCBJbmRleEJ1
ZmZlcjExOjpnZXRJbmRleEZvcm1hdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0lucHV0TGF5b3V0Q2Fj
aGUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9JbnB1dExheW91dENhY2hlLmNwcAppbmRleCA4OWQ1ZGM2NzY3NmE1ZmQ2M2M2YjNk
YzU4ZTI5MGY1MjkzYzVhNTMyLi5lZmE2ODVlZmYwMjY3ZDc1MWExMDVkMmVhNDc4NWE4ZTgzMzFh
MjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL0lucHV0TGF5b3V0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW5wdXRMYXlvdXRDYWNo
ZS5jcHAKQEAgLTksNyArOSw3IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvSW5wdXRMYXlvdXRDYWNoZS5oIgogCi0jaW5jbHVkZSAiY29tbW9uL0JpdFNldEl0ZXJh
dG9yLmgiCisjaW5jbHVkZSAiY29tbW9uL2JpdHNldF91dGlscy5oIgogI2luY2x1ZGUgImNvbW1v
bi91dGlsaXRpZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFtLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvVmVydGV4QXR0cmlidXRlLmgiCkBAIC00MSw3ICs0MSw3IEBAIGdsOjpJbnB1dExh
eW91dCBHZXRJbnB1dExheW91dChjb25zdCBzdGQ6OnZlY3Rvcjxjb25zdCBUcmFuc2xhdGVkQXR0
cmlidXRlICo+ICZ0CiAgICAgZm9yIChzaXplX3QgYXR0cmlidXRlSW5kZXggPSAwOyBhdHRyaWJ1
dGVJbmRleCA8IHRyYW5zbGF0ZWRBdHRyaWJ1dGVzLnNpemUoKTsgKythdHRyaWJ1dGVJbmRleCkK
ICAgICB7CiAgICAgICAgIGNvbnN0IFRyYW5zbGF0ZWRBdHRyaWJ1dGUgKnRyYW5zbGF0ZWRBdHRy
aWJ1dGUgPSB0cmFuc2xhdGVkQXR0cmlidXRlc1thdHRyaWJ1dGVJbmRleF07Ci0gICAgICAgIGlu
cHV0TGF5b3V0W2F0dHJpYnV0ZUluZGV4XSA9IGdsOjpHZXRWZXJ0ZXhGb3JtYXRUeXBlKAorICAg
ICAgICBpbnB1dExheW91dFthdHRyaWJ1dGVJbmRleF0gICAgICAgICAgICAgICAgICAgID0gZ2w6
OkdldFZlcnRleEZvcm1hdFR5cGUoCiAgICAgICAgICAgICAqdHJhbnNsYXRlZEF0dHJpYnV0ZS0+
YXR0cmlidXRlLCB0cmFuc2xhdGVkQXR0cmlidXRlLT5jdXJyZW50VmFsdWVUeXBlKTsKICAgICB9
CiAgICAgcmV0dXJuIGlucHV0TGF5b3V0OwpAQCAtNDgyLDYgKzQ4Miw3IEBAIGdsOjpFcnJvciBJ
bnB1dExheW91dENhY2hlOjp1cGRhdGVJbnB1dExheW91dChjb25zdCBnbDo6U3RhdGUgJnN0YXRl
LAogICAgIH0KIAogICAgIGNvbnN0IGF1dG8gJmF0dHJpYnMgICAgICAgICAgICA9IHN0YXRlLmdl
dFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0ZXMoKTsKKyAgICBjb25zdCBhdXRvICZi
aW5kaW5ncyAgICAgICAgICAgPSBzdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0ZXhCaW5k
aW5ncygpOwogICAgIGNvbnN0IGF1dG8gJmxvY2F0aW9uVG9TZW1hbnRpYyA9IHByb2dyYW1EM0Qt
PmdldEF0dHJpYkxvY2F0aW9uVG9EM0RTZW1hbnRpY3MoKTsKIAogICAgIGZvciAodW5zaWduZWQg
bG9uZyBhdHRyaWJJbmRleCA6IGFuZ2xlOjpJdGVyYXRlQml0U2V0KHByb2dyYW0tPmdldEFjdGl2
ZUF0dHJpYkxvY2F0aW9uc01hc2soKSkpCkBAIC00OTEsMTIgKzQ5MiwxMyBAQCBnbDo6RXJyb3Ig
SW5wdXRMYXlvdXRDYWNoZTo6dXBkYXRlSW5wdXRMYXlvdXQoY29uc3QgZ2w6OlN0YXRlICZzdGF0
ZSwKICAgICAgICAgR0xlbnVtIGdsc2xFbGVtZW50VHlwZSA9IEdldEdMU0xBdHRyaWJ1dGVUeXBl
KHNoYWRlckF0dHJpYnV0ZXMsIGF0dHJpYkluZGV4KTsKIAogICAgICAgICBjb25zdCBhdXRvICZh
dHRyaWIgPSBhdHRyaWJzW2F0dHJpYkluZGV4XTsKKyAgICAgICAgY29uc3QgYXV0byAmYmluZGlu
ZyA9IGJpbmRpbmdzW2F0dHJpYi5iaW5kaW5nSW5kZXhdOwogICAgICAgICBpbnQgZDNkU2VtYW50
aWMgICAgPSBsb2NhdGlvblRvU2VtYW50aWNbYXR0cmliSW5kZXhdOwogCiAgICAgICAgIGNvbnN0
IGF1dG8gJmN1cnJlbnRWYWx1ZSAgICAgICAgICAgICAgPSBzdGF0ZS5nZXRWZXJ0ZXhBdHRyaWJD
dXJyZW50VmFsdWUoYXR0cmliSW5kZXgpOwogICAgICAgICBnbDo6VmVydGV4Rm9ybWF0VHlwZSB2
ZXJ0ZXhGb3JtYXRUeXBlID0gZ2w6OkdldFZlcnRleEZvcm1hdFR5cGUoYXR0cmliLCBjdXJyZW50
VmFsdWUuVHlwZSk7CiAKLSAgICAgICAgbGF5b3V0LmFkZEF0dHJpYnV0ZURhdGEoZ2xzbEVsZW1l
bnRUeXBlLCBkM2RTZW1hbnRpYywgdmVydGV4Rm9ybWF0VHlwZSwgYXR0cmliLmRpdmlzb3IpOwor
ICAgICAgICBsYXlvdXQuYWRkQXR0cmlidXRlRGF0YShnbHNsRWxlbWVudFR5cGUsIGQzZFNlbWFu
dGljLCB2ZXJ0ZXhGb3JtYXRUeXBlLCBiaW5kaW5nLmRpdmlzb3IpOwogICAgIH0KIAogICAgIElE
M0QxMUlucHV0TGF5b3V0ICppbnB1dExheW91dCA9IG51bGxwdHI7CkBAIC01MTMsOCArNTE1LDgg
QEAgZ2w6OkVycm9yIElucHV0TGF5b3V0Q2FjaGU6OnVwZGF0ZUlucHV0TGF5b3V0KGNvbnN0IGds
OjpTdGF0ZSAmc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmlucHV0TGF5b3V0KSk7CiAgICAgICAgICAgICBpZiAobUxheW91dE1hcC5zaXplKCkgPj0gbUNh
Y2hlU2l6ZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBUUkFDRSgiT3ZlcmZsb3dl
ZCB0aGUgbGltaXQgb2YgJXUgaW5wdXQgbGF5b3V0cywgcHVyZ2luZyBoYWxmIHRoZSBjYWNoZS4i
LAotICAgICAgICAgICAgICAgICAgICAgIG1DYWNoZVNpemUpOworICAgICAgICAgICAgICAgIFdB
Uk4oKSA8PCAiT3ZlcmZsb3dlZCB0aGUgbGltaXQgb2YgIiA8PCBtQ2FjaGVTaXplCisgICAgICAg
ICAgICAgICAgICAgICAgIDw8ICIgaW5wdXQgbGF5b3V0cywgcHVyZ2luZyBoYWxmIHRoZSBjYWNo
ZS4iOwogCiAgICAgICAgICAgICAgICAgLy8gUmFuZG9tbHkgcmVsZWFzZSBldmVyeSBzZWNvbmQg
ZWxlbWVudAogICAgICAgICAgICAgICAgIGF1dG8gaXQgPSBtTGF5b3V0TWFwLmJlZ2luKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL1F1ZXJ5MTEuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9RdWVyeTExLmNwcAppbmRleCA5ZDdlYTJjNjZhOTQwNGVk
ZWQ4YjczYzY1OTI5NDRmZTBhNDMyNWNjLi41Yzc5NjFkNTEzYTgyYmUzMmM2MTY1MGI4Yzg3NTc2
NGYzM2UwMzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL1F1ZXJ5MTEuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUXVlcnkxMS5jcHAKQEAgLTg5
LDcgKzg5LDcgQEAgZ2w6OkVycm9yIFF1ZXJ5MTE6OnF1ZXJ5Q291bnRlcigpCiAgICAgQVNTRVJU
KGdldFR5cGUoKSA9PSBHTF9USU1FU1RBTVBfRVhUKTsKICAgICBtUmVzdWx0U3VtID0gMDsKICAg
ICBtUGVuZGluZ1F1ZXJpZXMucHVzaF9iYWNrKHN0ZDo6dW5pcXVlX3B0cjxRdWVyeVN0YXRlPihu
ZXcgUXVlcnlTdGF0ZSgpKSk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cisg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAt
MTgxLDcgKzE4MSw3IEBAIGdsOjpFcnJvciBRdWVyeTExOjpyZXN1bWUoKQogICAgICAgICAgICAg
RDNEMTFfUVVFUllfREVTQyBkZXNjOwogICAgICAgICAgICAgZGVzYy5RdWVyeSAgICAgPSBEM0Qx
MV9RVUVSWV9USU1FU1RBTVA7CiAgICAgICAgICAgICBkZXNjLk1pc2NGbGFncyA9IDA7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVF1ZXJ5KCZkZXNjLCAmbUFjdGl2ZVF1ZXJ5
LT5iZWdpblRpbWVzdGFtcCk7CisgICAgICAgICAgICByZXN1bHQgICAgICAgICA9IGRldmljZS0+
Q3JlYXRlUXVlcnkoJmRlc2MsICZtQWN0aXZlUXVlcnktPmJlZ2luVGltZXN0YW1wKTsKICAgICAg
ICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJJbnRlcm5hbCBxdWVyeSBjcmVh
dGlvbiBmYWlsZWQsIHJlc3VsdDogMHglWC4iLApAQCAtMjA5LDcgKzIwOSw3IEBAIGdsOjpFcnJv
ciBRdWVyeTExOjpyZXN1bWUoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpF
cnJvciBRdWVyeTExOjpmbHVzaChib29sIGZvcmNlKQpAQCAtMjIzLDcgKzIyMyw3IEBAIGdsOjpF
cnJvciBRdWVyeTExOjpmbHVzaChib29sIGZvcmNlKQogICAgICAgICAgICAgQU5HTEVfVFJZKHRl
c3RRdWVyeShxdWVyeSkpOwogICAgICAgICAgICAgaWYgKCFxdWVyeS0+ZmluaXNoZWQgJiYgIWZv
cmNlKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9IHdoaWxlICghcXVlcnktPmZpbmlzaGVkKTsKIApAQCAtMjQxLDgg
KzI0MSw4IEBAIGdsOjpFcnJvciBRdWVyeTExOjp0ZXN0UXVlcnkoUXVlcnlTdGF0ZSAqcXVlcnlT
dGF0ZSkKICAgICAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqY29udGV4dCA9IG1SZW5kZXJlci0+
Z2V0RGV2aWNlQ29udGV4dCgpOwogICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKSkKICAgICAgICAg
ewotICAgICAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVDoKLSAgICAgICAgICBj
YXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhUOgorICAgICAgICAgICAg
Y2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfRVhUOgorICAgICAgICAgICAgY2FzZSBHTF9BTllf
U0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFX0VYVDoKICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICBBU1NFUlQocXVlcnlTdGF0ZS0+cXVlcnkpOwogICAgICAgICAgICAgICAgIFVJTlQ2
NCBudW1QaXhlbHMgPSAwOwpAQCAtMjUwLDMxICsyNTAsMzUgQEAgZ2w6OkVycm9yIFF1ZXJ5MTE6
OnRlc3RRdWVyeShRdWVyeVN0YXRlICpxdWVyeVN0YXRlKQogICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5HZXREYXRhKHF1ZXJ5U3RhdGUtPnF1ZXJ5LCAmbnVtUGl4ZWxzLCBzaXplb2YobnVt
UGl4ZWxzKSwgMCk7CiAgICAgICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRf
T0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGdldCB0aGUgZGF0YSBvZiBhbiBpbnRlcm5hbCBxdWVyeSwg
cmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiRmFpbGVkIHRvIGdldCB0aGUgZGF0YSBvZiBhbiBpbnRlcm5hbCBxdWVyeSwgcmVzdWx0
OiAweCVYLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsK
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNfT0sp
CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBxdWVyeVN0YXRlLT5maW5p
c2hlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIG1SZXN1bHQgPSAobnVtUGl4ZWxzID4g
MCkgPyBHTF9UUlVFIDogR0xfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgIG1SZXN1bHQgICAg
ICAgICAgICAgID0gKG51bVBpeGVscyA+IDApID8gR0xfVFJVRSA6IEdMX0ZBTFNFOwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
ICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOOgorICAgICAg
ICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOOgogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIEFTU0VSVChxdWVyeVN0YXRlLT5xdWVyeSk7Ci0g
ICAgICAgICAgICAgICAgRDNEMTFfUVVFUllfREFUQV9TT19TVEFUSVNUSUNTIHNvU3RhdHMgPSB7
IDAgfTsKKyAgICAgICAgICAgICAgICBEM0QxMV9RVUVSWV9EQVRBX1NPX1NUQVRJU1RJQ1Mgc29T
dGF0cyA9IHswfTsKICAgICAgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGNvbnRleHQtPkdl
dERhdGEocXVlcnlTdGF0ZS0+cXVlcnksICZzb1N0YXRzLCBzaXplb2Yoc29TdGF0cyksIDApOwog
ICAgICAgICAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZh
aWxlZCB0byBnZXQgdGhlIGRhdGEgb2YgYW4gaW50ZXJuYWwgcXVlcnksIHJlc3VsdDogMHglWC4i
LCByZXN1bHQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9P
Rl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0
byBnZXQgdGhlIGRhdGEgb2YgYW4gaW50ZXJuYWwgcXVlcnksIHJlc3VsdDogMHglWC4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7CiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTX09LKQogICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgcXVlcnlTdGF0ZS0+ZmluaXNoZWQgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICBtUmVzdWx0ICAgICAgICA9IHN0YXRpY19jYXN0PEdMdWludDY0
Pihzb1N0YXRzLk51bVByaW1pdGl2ZXNXcml0dGVuKTsKKyAgICAgICAgICAgICAgICAgICAgbVJl
c3VsdCAgICAgICAgICAgICAgPSBzdGF0aWNfY2FzdDxHTHVpbnQ2ND4oc29TdGF0cy5OdW1Qcmlt
aXRpdmVzV3JpdHRlbik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0zNTEsNyArMzU1LDcgQEAgZ2w6OkVycm9yIFF1ZXJ5MTE6OnRlc3RR
dWVyeShRdWVyeVN0YXRlICpxdWVyeVN0YXRlKQogICAgICAgICAgICAgICAgIC8vIHRvIGhhdmUg
YW55IHNvcnQgb2YgY29udGludWl0eSBvdXRzaWRlIG9mIGEgZGlzam9pbnQgdGltZXN0YW1wIHF1
ZXJ5IGJsb2NrLCB3aGljaAogICAgICAgICAgICAgICAgIC8vIEdMIGRlcGVuZHMgb24KICAgICAg
ICAgICAgICAgICBBU1NFUlQocXVlcnlTdGF0ZS0+cXVlcnkgPT0gbnVsbHB0cik7Ci0gICAgICAg
ICAgICAgICAgbVJlc3VsdCA9IDA7CisgICAgICAgICAgICAgICAgbVJlc3VsdCAgICAgICAgICAg
ICAgPSAwOwogICAgICAgICAgICAgICAgIHF1ZXJ5U3RhdGUtPmZpbmlzaGVkID0gdHJ1ZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzc4LDkgKzM4Miw5IEBAIGdsOjpF
cnJvciBRdWVyeTExOjp0ZXN0UXVlcnkoUXVlcnlTdGF0ZSAqcXVlcnlTdGF0ZSkKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXF1ZXJ5U3RhdGUtPmZpbmlzaGVkICYmIG1SZW5k
ZXJlci0+dGVzdERldmljZUxvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyU3RhdGVDYWNoZS5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L1JlbmRlclN0YXRlQ2FjaGUuY3BwCmluZGV4IGJkODcwYmNiZDQyNTc2NmMzYmRjYjMzZmFlZWQw
Nzg0NWE1YmEyYmUuLmZmZDhhYTI0YjYyOGZlNWUxNzkxMmM4NzBkZGYwZTg4NDk2OTEyZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvUmVuZGVyU3RhdGVDYWNoZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJTdGF0ZUNhY2hlLmNwcApA
QCAtMzYsMTggKzM2LDIwIEBAIHN0YXRpYyB2b2lkIENsZWFyU3RhdGVNYXAobWFwVHlwZSAmbWFw
KQogLy8gTVNETidzIGRvY3VtZW50YXRpb24gb2YgSUQzRDExRGV2aWNlOjpDcmVhdGVCbGVuZFN0
YXRlLCBJRDNEMTFEZXZpY2U6OkNyZWF0ZVJhc3Rlcml6ZXJTdGF0ZSwKIC8vIElEM0QxMURldmlj
ZTo6Q3JlYXRlRGVwdGhTdGVuY2lsU3RhdGUgYW5kIElEM0QxMURldmljZTo6Q3JlYXRlU2FtcGxl
clN0YXRlIGNsYWltcyB0aGUgbWF4aW11bQogLy8gbnVtYmVyIG9mIHVuaXF1ZSBzdGF0ZXMgb2Yg
ZWFjaCB0eXBlIGFuIGFwcGxpY2F0aW9uIGNhbiBjcmVhdGUgaXMgNDA5NgotY29uc3QgdW5zaWdu
ZWQgaW50IFJlbmRlclN0YXRlQ2FjaGU6OmtNYXhCbGVuZFN0YXRlcyA9IDQwOTY7Ci1jb25zdCB1
bnNpZ25lZCBpbnQgUmVuZGVyU3RhdGVDYWNoZTo6a01heFJhc3Rlcml6ZXJTdGF0ZXMgPSA0MDk2
OwotY29uc3QgdW5zaWduZWQgaW50IFJlbmRlclN0YXRlQ2FjaGU6OmtNYXhEZXB0aFN0ZW5jaWxT
dGF0ZXMgPSA0MDk2OwotY29uc3QgdW5zaWduZWQgaW50IFJlbmRlclN0YXRlQ2FjaGU6OmtNYXhT
YW1wbGVyU3RhdGVzID0gNDA5NjsKKy8vIFRPRE8oU2hhaG1lZXJFc21haWwpOiBSZXZpc2l0IHRo
ZSBjYWNoZSBzaXplcyB0byBtYWtlIHN1cmUgdGhleSBhcmUgYXBwcm9wcmlhdGUgZm9yIG1vc3QK
Ky8vIHNjZW5hcmlvcy4KK2NvbnN0IHVuc2lnbmVkIGludCBSZW5kZXJTdGF0ZUNhY2hlOjprTWF4
QmxlbmRTdGF0ZXMgICAgICAgID0gMjA0ODsKK2NvbnN0IHVuc2lnbmVkIGludCBSZW5kZXJTdGF0
ZUNhY2hlOjprTWF4UmFzdGVyaXplclN0YXRlcyAgID0gMjA0ODsKK2NvbnN0IHVuc2lnbmVkIGlu
dCBSZW5kZXJTdGF0ZUNhY2hlOjprTWF4RGVwdGhTdGVuY2lsU3RhdGVzID0gMjA0ODsKK2NvbnN0
IHVuc2lnbmVkIGludCBSZW5kZXJTdGF0ZUNhY2hlOjprTWF4U2FtcGxlclN0YXRlcyAgICAgID0g
MjA0ODsKIAogUmVuZGVyU3RhdGVDYWNoZTo6UmVuZGVyU3RhdGVDYWNoZShSZW5kZXJlcjExICpy
ZW5kZXJlcikKICAgICA6IG1SZW5kZXJlcihyZW5kZXJlciksCiAgICAgICBtQ291bnRlcigwKSwK
LSAgICAgIG1CbGVuZFN0YXRlQ2FjaGUoa01heEJsZW5kU3RhdGVzLCBoYXNoQmxlbmRTdGF0ZSwg
Y29tcGFyZUJsZW5kU3RhdGVzKSwKLSAgICAgIG1SYXN0ZXJpemVyU3RhdGVDYWNoZShrTWF4UmFz
dGVyaXplclN0YXRlcywgaGFzaFJhc3Rlcml6ZXJTdGF0ZSwgY29tcGFyZVJhc3Rlcml6ZXJTdGF0
ZXMpLAotICAgICAgbURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUoa01heERlcHRoU3RlbmNpbFN0YXRl
cywgaGFzaERlcHRoU3RlbmNpbFN0YXRlLCBjb21wYXJlRGVwdGhTdGVuY2lsU3RhdGVzKSwKLSAg
ICAgIG1TYW1wbGVyU3RhdGVDYWNoZShrTWF4U2FtcGxlclN0YXRlcywgaGFzaFNhbXBsZXJTdGF0
ZSwgY29tcGFyZVNhbXBsZXJTdGF0ZXMpLAorICAgICAgbUJsZW5kU3RhdGVDYWNoZShrTWF4Qmxl
bmRTdGF0ZXMsIEhhc2hCbGVuZFN0YXRlLCBDb21wYXJlQmxlbmRTdGF0ZXMpLAorICAgICAgbVJh
c3Rlcml6ZXJTdGF0ZUNhY2hlKGtNYXhSYXN0ZXJpemVyU3RhdGVzLCBIYXNoUmFzdGVyaXplclN0
YXRlLCBDb21wYXJlUmFzdGVyaXplclN0YXRlcyksCisgICAgICBtRGVwdGhTdGVuY2lsU3RhdGVD
YWNoZShrTWF4RGVwdGhTdGVuY2lsU3RhdGVzLCBIYXNoRGVwdGhTdGVuY2lsU3RhdGUsIENvbXBh
cmVEZXB0aFN0ZW5jaWxTdGF0ZXMpLAorICAgICAgbVNhbXBsZXJTdGF0ZUNhY2hlKGtNYXhTYW1w
bGVyU3RhdGVzLCBIYXNoU2FtcGxlclN0YXRlLCBDb21wYXJlU2FtcGxlclN0YXRlcyksCiAgICAg
ICBtRGV2aWNlKE5VTEwpCiB7CiB9CkBAIC03MSw1MyArNzMsNzEgQEAgdm9pZCBSZW5kZXJTdGF0
ZUNhY2hlOjpjbGVhcigpCiAgICAgQ2xlYXJTdGF0ZU1hcChtU2FtcGxlclN0YXRlQ2FjaGUpOwog
fQogCi1zdGQ6OnNpemVfdCBSZW5kZXJTdGF0ZUNhY2hlOjpoYXNoQmxlbmRTdGF0ZShjb25zdCBC
bGVuZFN0YXRlS2V5ICZibGVuZFN0YXRlKQorLy8gc3RhdGljCitzdGQ6OnNpemVfdCBSZW5kZXJT
dGF0ZUNhY2hlOjpIYXNoQmxlbmRTdGF0ZShjb25zdCBkM2QxMTo6QmxlbmRTdGF0ZUtleSAmYmxl
bmRTdGF0ZSkKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IHNlZWQgPSAweEFCQ0RF
Rjk4OwogCiAgICAgc3RkOjpzaXplX3QgaGFzaCA9IDA7Ci0gICAgTXVybXVySGFzaDNfeDg2XzMy
KCZibGVuZFN0YXRlLCBzaXplb2YoZ2w6OkJsZW5kU3RhdGUpLCBzZWVkLCAmaGFzaCk7CisgICAg
TXVybXVySGFzaDNfeDg2XzMyKCZibGVuZFN0YXRlLCBzaXplb2YoZDNkMTE6OkJsZW5kU3RhdGVL
ZXkpLCBzZWVkLCAmaGFzaCk7CiAgICAgcmV0dXJuIGhhc2g7CiB9CiAKLWJvb2wgUmVuZGVyU3Rh
dGVDYWNoZTo6Y29tcGFyZUJsZW5kU3RhdGVzKGNvbnN0IEJsZW5kU3RhdGVLZXkgJmEsIGNvbnN0
IEJsZW5kU3RhdGVLZXkgJmIpCisvLyBzdGF0aWMKK2Jvb2wgUmVuZGVyU3RhdGVDYWNoZTo6Q29t
cGFyZUJsZW5kU3RhdGVzKGNvbnN0IGQzZDExOjpCbGVuZFN0YXRlS2V5ICZhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZDNkMTE6OkJsZW5kU3RhdGVL
ZXkgJmIpCiB7Ci0gICAgcmV0dXJuIG1lbWNtcCgmYSwgJmIsIHNpemVvZihCbGVuZFN0YXRlS2V5
KSkgPT0gMDsKKyAgICByZXR1cm4gbWVtY21wKCZhLCAmYiwgc2l6ZW9mKGQzZDExOjpCbGVuZFN0
YXRlS2V5KSkgPT0gMDsKIH0KIAotZ2w6OkVycm9yIFJlbmRlclN0YXRlQ2FjaGU6OmdldEJsZW5k
U3RhdGUoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OkJsZW5k
U3RhdGUgJmJsZW5kU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJRDNEMTFCbGVuZFN0YXRlICoqb3V0QmxlbmRTdGF0ZSkKKy8vIHN0YXRpYworZDNkMTE6
OkJsZW5kU3RhdGVLZXkgUmVuZGVyU3RhdGVDYWNoZTo6R2V0QmxlbmRTdGF0ZUtleShjb25zdCBn
bDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRT
dGF0ZSkKIHsKLSAgICBpZiAoIW1EZXZpY2UpCi0gICAgewotICAgICAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX09VVF9PRl9NRU1PUlksICJJbnRlcm5hbCBlcnJvciwgUmVuZGVyU3RhdGVDYWNoZSBp
cyBub3QgaW5pdGlhbGl6ZWQuIik7Ci0gICAgfQotCi0gICAgYm9vbCBtcnQgPSBmYWxzZTsKLQot
ICAgIGNvbnN0IEZyYW1lYnVmZmVyRDNEICpmcmFtZWJ1ZmZlckQzRCA9IEdldEltcGxBczxGcmFt
ZWJ1ZmZlckQzRD4oZnJhbWVidWZmZXIpOworICAgIGQzZDExOjpCbGVuZFN0YXRlS2V5IGtleTsK
KyAgICBjb25zdCBGcmFtZWJ1ZmZlckQzRCAqZnJhbWVidWZmZXJEM0QgICA9IEdldEltcGxBczxG
cmFtZWJ1ZmZlckQzRD4oZnJhbWVidWZmZXIpOwogICAgIGNvbnN0IGdsOjpBdHRhY2htZW50TGlz
dCAmY29sb3JidWZmZXJzID0gZnJhbWVidWZmZXJEM0QtPmdldENvbG9yQXR0YWNobWVudHNGb3JS
ZW5kZXIoKTsKKyAgICBjb25zdCBVSU5UOCBibGVuZFN0YXRlTWFzayA9CisgICAgICAgIGdsX2Qz
ZDExOjpDb252ZXJ0Q29sb3JNYXNrKGJsZW5kU3RhdGUuY29sb3JNYXNrUmVkLCBibGVuZFN0YXRl
LmNvbG9yTWFza0dyZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGVu
ZFN0YXRlLmNvbG9yTWFza0JsdWUsIGJsZW5kU3RhdGUuY29sb3JNYXNrQWxwaGEpOwogCi0gICAg
QmxlbmRTdGF0ZUtleSBrZXkgPSB7fTsKICAgICBrZXkuYmxlbmRTdGF0ZSA9IGJsZW5kU3RhdGU7
Ci0gICAgZm9yIChzaXplX3QgY29sb3JBdHRhY2htZW50ID0gMDsgY29sb3JBdHRhY2htZW50IDwg
Y29sb3JidWZmZXJzLnNpemUoKTsgKytjb2xvckF0dGFjaG1lbnQpCi0gICAgewotICAgICAgICBj
b25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICphdHRhY2htZW50ID0gY29sb3JidWZmZXJz
W2NvbG9yQXR0YWNobWVudF07CisgICAga2V5Lm1ydCAgICAgICAgPSBmYWxzZTsKIAotICAgICAg
ICBhdXRvIHJ0Q2hhbm5lbHMgPSBrZXkucnRDaGFubmVsc1tjb2xvckF0dGFjaG1lbnRdOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29sb3JidWZmZXJzLnNpemUoKTsgaSsrKQorICAgIHsK
KyAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNobWVudCA9IGNv
bG9yYnVmZmVyc1tpXTsKIAogICAgICAgICBpZiAoYXR0YWNobWVudCkKICAgICAgICAgewotICAg
ICAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVudCA+IDApCisgICAgICAgICAgICBpZiAoaSA+IDAp
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbXJ0ID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBrZXkubXJ0ID0gdHJ1ZTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgcnRDaGFu
bmVsc1swXSA9IGF0dGFjaG1lbnQtPmdldFJlZFNpemUoKSAgID4gMDsKLSAgICAgICAgICAgIHJ0
Q2hhbm5lbHNbMV0gPSBhdHRhY2htZW50LT5nZXRHcmVlblNpemUoKSA+IDA7Ci0gICAgICAgICAg
ICBydENoYW5uZWxzWzJdID0gYXR0YWNobWVudC0+Z2V0Qmx1ZVNpemUoKSAgPiAwOwotICAgICAg
ICAgICAgcnRDaGFubmVsc1szXSA9IGF0dGFjaG1lbnQtPmdldEFscGhhU2l6ZSgpID4gMDsKKyAg
ICAgICAgICAgIGtleS5ydHZNYXNrc1tpXSA9CisgICAgICAgICAgICAgICAgKGdsX2QzZDExOjpH
ZXRDb2xvck1hc2soYXR0YWNobWVudC0+Z2V0Rm9ybWF0KCkuaW5mbykpICYgYmxlbmRTdGF0ZU1h
c2s7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBrZXku
cnR2TWFza3NbaV0gPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9
IGNvbG9yYnVmZmVycy5zaXplKCk7IGkgPCBEM0QxMV9TSU1VTFRBTkVPVVNfUkVOREVSX1RBUkdF
VF9DT1VOVDsgaSsrKQorICAgIHsKKyAgICAgICAga2V5LnJ0dk1hc2tzW2ldID0gMDsKKyAgICB9
CisKKyAgICByZXR1cm4ga2V5OworfQorCitnbDo6RXJyb3IgUmVuZGVyU3RhdGVDYWNoZTo6Z2V0
QmxlbmRTdGF0ZShjb25zdCBkM2QxMTo6QmxlbmRTdGF0ZUtleSAma2V5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExQmxlbmRTdGF0ZSAqKm91dEJsZW5k
U3RhdGUpCit7CisgICAgaWYgKCFtRGV2aWNlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiSW50ZXJuYWwgZXJyb3IsIFJlbmRlclN0YXRlQ2FjaGUg
aXMgbm90IGluaXRpYWxpemVkLiIpOwogICAgIH0KIAogICAgIEJsZW5kU3RhdGVNYXA6Oml0ZXJh
dG9yIGtleUl0ZXIgPSBtQmxlbmRTdGF0ZUNhY2hlLmZpbmQoa2V5KTsKQEAgLTEyNiwxNCArMTQ2
LDE0IEBAIGdsOjpFcnJvciBSZW5kZXJTdGF0ZUNhY2hlOjpnZXRCbGVuZFN0YXRlKGNvbnN0IGds
OjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvCiAgICAgICAgIEJsZW5kU3RhdGVDb3VudGVy
UGFpciAmc3RhdGUgPSBrZXlJdGVyLT5zZWNvbmQ7CiAgICAgICAgIHN0YXRlLnNlY29uZCA9IG1D
b3VudGVyKys7CiAgICAgICAgICpvdXRCbGVuZFN0YXRlID0gc3RhdGUuZmlyc3Q7Ci0gICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgaWYgKG1CbGVuZFN0YXRlQ2Fj
aGUuc2l6ZSgpID49IGtNYXhCbGVuZFN0YXRlcykKICAgICAgICAgewotICAgICAgICAgICAgVFJB
Q0UoIk92ZXJmbG93ZWQgdGhlIGxpbWl0IG9mICV1IGJsZW5kIHN0YXRlcywgcmVtb3ZpbmcgdGhl
IGxlYXN0IHJlY2VudGx5IHVzZWQgIgotICAgICAgICAgICAgICAgICAgInRvIG1ha2Ugcm9vbS4i
LCBrTWF4QmxlbmRTdGF0ZXMpOworICAgICAgICAgICAgV0FSTigpIDw8ICJPdmVyZmxvd2VkIHRo
ZSBsaW1pdCBvZiAiIDw8IGtNYXhCbGVuZFN0YXRlcworICAgICAgICAgICAgICAgICAgIDw8ICIg
YmxlbmQgc3RhdGVzLCByZW1vdmluZyB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZCB0byBtYWtlIHJv
b20uIjsKIAogICAgICAgICAgICAgQmxlbmRTdGF0ZU1hcDo6aXRlcmF0b3IgbGVhc3RSZWNlbnRs
eVVzZWQgPSBtQmxlbmRTdGF0ZUNhY2hlLmJlZ2luKCk7CiAgICAgICAgICAgICBmb3IgKEJsZW5k
U3RhdGVNYXA6Oml0ZXJhdG9yIGkgPSBtQmxlbmRTdGF0ZUNhY2hlLmJlZ2luKCk7IGkgIT0gbUJs
ZW5kU3RhdGVDYWNoZS5lbmQoKTsgaSsrKQpAQCAtMTQ4LDQ3ICsxNjgsNDggQEAgZ2w6OkVycm9y
IFJlbmRlclN0YXRlQ2FjaGU6OmdldEJsZW5kU3RhdGUoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpm
cmFtZWJ1ZmZlciwgY28KICAgICAgICAgfQogCiAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBibGVu
ZCBzdGF0ZSBhbmQgaW5zZXJ0IGl0IGludG8gdGhlIGNhY2hlCi0gICAgICAgIEQzRDExX0JMRU5E
X0RFU0MgYmxlbmREZXNjID0geyAwIH07Ci0gICAgICAgIGJsZW5kRGVzYy5BbHBoYVRvQ292ZXJh
Z2VFbmFibGUgPSBibGVuZFN0YXRlLnNhbXBsZUFscGhhVG9Db3ZlcmFnZTsKLSAgICAgICAgYmxl
bmREZXNjLkluZGVwZW5kZW50QmxlbmRFbmFibGUgPSBtcnQgPyBUUlVFIDogRkFMU0U7CisgICAg
ICAgIEQzRDExX0JMRU5EX0RFU0MgYmxlbmREZXNjOworICAgICAgICBEM0QxMV9SRU5ERVJfVEFS
R0VUX0JMRU5EX0RFU0MgJnJ0RGVzYzAgPSBibGVuZERlc2MuUmVuZGVyVGFyZ2V0WzBdOworICAg
ICAgICBjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSAgICAgICAgPSBrZXkuYmxlbmRT
dGF0ZTsKIAotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IEQzRDExX1NJTVVM
VEFORU9VU19SRU5ERVJfVEFSR0VUX0NPVU5UOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEQzRDExX1JFTkRFUl9UQVJHRVRfQkxFTkRfREVTQyAmcnRCbGVuZCA9IGJsZW5kRGVzYy5SZW5k
ZXJUYXJnZXRbaV07CisgICAgICAgIGJsZW5kRGVzYy5BbHBoYVRvQ292ZXJhZ2VFbmFibGUgID0g
YmxlbmRTdGF0ZS5zYW1wbGVBbHBoYVRvQ292ZXJhZ2U7CisgICAgICAgIGJsZW5kRGVzYy5JbmRl
cGVuZGVudEJsZW5kRW5hYmxlID0ga2V5Lm1ydCA/IFRSVUUgOiBGQUxTRTsKIAotICAgICAgICAg
ICAgcnRCbGVuZC5CbGVuZEVuYWJsZSA9IGJsZW5kU3RhdGUuYmxlbmQ7Ci0gICAgICAgICAgICBp
ZiAoYmxlbmRTdGF0ZS5ibGVuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBydEJs
ZW5kLlNyY0JsZW5kID0gZ2xfZDNkMTE6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5zb3Vy
Y2VCbGVuZFJHQiwgZmFsc2UpOwotICAgICAgICAgICAgICAgIHJ0QmxlbmQuRGVzdEJsZW5kID0g
Z2xfZDNkMTE6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5kZXN0QmxlbmRSR0IsIGZhbHNl
KTsKLSAgICAgICAgICAgICAgICBydEJsZW5kLkJsZW5kT3AgPSBnbF9kM2QxMTo6Q29udmVydEJs
ZW5kT3AoYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uUkdCKTsKKyAgICAgICAgcnREZXNjMCA9IHt9
OwogCi0gICAgICAgICAgICAgICAgcnRCbGVuZC5TcmNCbGVuZEFscGhhID0gZ2xfZDNkMTE6OkNv
bnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZEFscGhhLCB0cnVlKTsKLSAgICAg
ICAgICAgICAgICBydEJsZW5kLkRlc3RCbGVuZEFscGhhID0gZ2xfZDNkMTE6OkNvbnZlcnRCbGVu
ZEZ1bmMoYmxlbmRTdGF0ZS5kZXN0QmxlbmRBbHBoYSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAg
cnRCbGVuZC5CbGVuZE9wQWxwaGEgPSBnbF9kM2QxMTo6Q29udmVydEJsZW5kT3AoYmxlbmRTdGF0
ZS5ibGVuZEVxdWF0aW9uQWxwaGEpOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAoYmxlbmRT
dGF0ZS5ibGVuZCkKKyAgICAgICAgeworICAgICAgICAgICAgcnREZXNjMC5CbGVuZEVuYWJsZSAg
ICA9IHRydWU7CisgICAgICAgICAgICBydERlc2MwLlNyY0JsZW5kICAgICAgID0gZ2xfZDNkMTE6
OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZFJHQiwgZmFsc2UpOworICAg
ICAgICAgICAgcnREZXNjMC5EZXN0QmxlbmQgICAgICA9IGdsX2QzZDExOjpDb252ZXJ0QmxlbmRG
dW5jKGJsZW5kU3RhdGUuZGVzdEJsZW5kUkdCLCBmYWxzZSk7CisgICAgICAgICAgICBydERlc2Mw
LkJsZW5kT3AgICAgICAgID0gZ2xfZDNkMTE6OkNvbnZlcnRCbGVuZE9wKGJsZW5kU3RhdGUuYmxl
bmRFcXVhdGlvblJHQik7CisgICAgICAgICAgICBydERlc2MwLlNyY0JsZW5kQWxwaGEgID0gZ2xf
ZDNkMTE6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5zb3VyY2VCbGVuZEFscGhhLCB0cnVl
KTsKKyAgICAgICAgICAgIHJ0RGVzYzAuRGVzdEJsZW5kQWxwaGEgPSBnbF9kM2QxMTo6Q29udmVy
dEJsZW5kRnVuYyhibGVuZFN0YXRlLmRlc3RCbGVuZEFscGhhLCB0cnVlKTsKKyAgICAgICAgICAg
IHJ0RGVzYzAuQmxlbmRPcEFscGhhICAgPSBnbF9kM2QxMTo6Q29udmVydEJsZW5kT3AoYmxlbmRT
dGF0ZS5ibGVuZEVxdWF0aW9uQWxwaGEpOworICAgICAgICB9CisKKyAgICAgICAgcnREZXNjMC5S
ZW5kZXJUYXJnZXRXcml0ZU1hc2sgPSBrZXkucnR2TWFza3NbMF07CiAKLSAgICAgICAgICAgIHJ0
QmxlbmQuUmVuZGVyVGFyZ2V0V3JpdGVNYXNrID0gZ2xfZDNkMTE6OkNvbnZlcnRDb2xvck1hc2so
a2V5LnJ0Q2hhbm5lbHNbaV1bMF0gJiYgYmxlbmRTdGF0ZS5jb2xvck1hc2tSZWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGtleS5ydENoYW5uZWxzW2ldWzFdICYmIGJsZW5kU3RhdGUuY29sb3JNYXNrR3JlZW4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtleS5ydENoYW5uZWxzW2ldWzJdICYmIGJsZW5kU3RhdGUuY29sb3JN
YXNrQmx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga2V5LnJ0Q2hhbm5lbHNbaV1bM10gJiYgYmxlbmRTdGF0
ZS5jb2xvck1hc2tBbHBoYSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAxOyBpIDwg
RDNEMTFfU0lNVUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09VTlQ7IGkrKykKKyAgICAgICAgewor
ICAgICAgICAgICAgYmxlbmREZXNjLlJlbmRlclRhcmdldFtpXSAgICAgICAgICAgICAgICAgICAg
ICAgPSBydERlc2MwOworICAgICAgICAgICAgYmxlbmREZXNjLlJlbmRlclRhcmdldFtpXS5SZW5k
ZXJUYXJnZXRXcml0ZU1hc2sgPSBrZXkucnR2TWFza3NbaV07CiAgICAgICAgIH0KIAotICAgICAg
ICBJRDNEMTFCbGVuZFN0YXRlICpkeDExQmxlbmRTdGF0ZSA9IE5VTEw7Ci0gICAgICAgIEhSRVNV
TFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlQmxlbmRTdGF0ZSgmYmxlbmREZXNjLCAmZHgxMUJs
ZW5kU3RhdGUpOwotICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkgfHwgIWR4MTFCbGVuZFN0YXRl
KQorICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZUJsZW5kU3RhdGUoJmJs
ZW5kRGVzYywgb3V0QmxlbmRTdGF0ZSk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSB8fCAh
KCpvdXRCbGVuZFN0YXRlKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9PVVRfT0ZfTUVNT1JZLCAiVW5hYmxlIHRvIGNyZWF0ZSBhIElEM0QxMUJsZW5kU3RhdGUs
IEhSRVNVTFQ6IDB4JVguIiwgcmVzdWx0KTsKICAgICAgICAgfQogCi0gICAgICAgIG1CbGVuZFN0
YXRlQ2FjaGUuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKGtleSwgc3RkOjptYWtlX3BhaXIoZHgxMUJs
ZW5kU3RhdGUsIG1Db3VudGVyKyspKSk7CisgICAgICAgIG1CbGVuZFN0YXRlQ2FjaGUuaW5zZXJ0
KHN0ZDo6bWFrZV9wYWlyKGtleSwgc3RkOjptYWtlX3BhaXIoKm91dEJsZW5kU3RhdGUsIG1Db3Vu
dGVyKyspKSk7CiAKLSAgICAgICAgKm91dEJsZW5kU3RhdGUgPSBkeDExQmxlbmRTdGF0ZTsKLSAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogICAgIH0KIH0KIAotc3RkOjpzaXplX3QgUmVuZGVyU3RhdGVDYWNoZTo6aGFz
aFJhc3Rlcml6ZXJTdGF0ZShjb25zdCBSYXN0ZXJpemVyU3RhdGVLZXkgJnJhc3RlclN0YXRlKQor
Ly8gc3RhdGljCitzdGQ6OnNpemVfdCBSZW5kZXJTdGF0ZUNhY2hlOjpIYXNoUmFzdGVyaXplclN0
YXRlKGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZUtleSAmcmFzdGVyU3RhdGUpCiB7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGludCBzZWVkID0gMHhBQkNERUY5ODsKIApAQCAtMTk3LDcgKzIxOCw4
IEBAIHN0ZDo6c2l6ZV90IFJlbmRlclN0YXRlQ2FjaGU6Omhhc2hSYXN0ZXJpemVyU3RhdGUoY29u
c3QgUmFzdGVyaXplclN0YXRlS2V5ICZyYXN0CiAgICAgcmV0dXJuIGhhc2g7CiB9CiAKLWJvb2wg
UmVuZGVyU3RhdGVDYWNoZTo6Y29tcGFyZVJhc3Rlcml6ZXJTdGF0ZXMoY29uc3QgUmFzdGVyaXpl
clN0YXRlS2V5ICZhLCBjb25zdCBSYXN0ZXJpemVyU3RhdGVLZXkgJmIpCisvLyBzdGF0aWMKK2Jv
b2wgUmVuZGVyU3RhdGVDYWNoZTo6Q29tcGFyZVJhc3Rlcml6ZXJTdGF0ZXMoY29uc3QgUmFzdGVy
aXplclN0YXRlS2V5ICZhLCBjb25zdCBSYXN0ZXJpemVyU3RhdGVLZXkgJmIpCiB7CiAgICAgcmV0
dXJuIG1lbWNtcCgmYSwgJmIsIHNpemVvZihSYXN0ZXJpemVyU3RhdGVLZXkpKSA9PSAwOwogfQpA
QCAtMjIwLDE0ICsyNDIsMTQgQEAgZ2w6OkVycm9yIFJlbmRlclN0YXRlQ2FjaGU6OmdldFJhc3Rl
cml6ZXJTdGF0ZShjb25zdCBnbDo6UmFzdGVyaXplclN0YXRlICZyYXN0ZXIKICAgICAgICAgUmFz
dGVyaXplclN0YXRlQ291bnRlclBhaXIgJnN0YXRlID0ga2V5SXRlci0+c2Vjb25kOwogICAgICAg
ICBzdGF0ZS5zZWNvbmQgPSBtQ291bnRlcisrOwogICAgICAgICAqb3V0UmFzdGVyaXplclN0YXRl
ID0gc3RhdGUuZmlyc3Q7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwor
ICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAg
ICAgICAgaWYgKG1SYXN0ZXJpemVyU3RhdGVDYWNoZS5zaXplKCkgPj0ga01heFJhc3Rlcml6ZXJT
dGF0ZXMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRSQUNFKCJPdmVyZmxvd2VkIHRoZSBsaW1p
dCBvZiAldSByYXN0ZXJpemVyIHN0YXRlcywgcmVtb3ZpbmcgdGhlIGxlYXN0IHJlY2VudGx5IHVz
ZWQgIgotICAgICAgICAgICAgICAgICAgInRvIG1ha2Ugcm9vbS4iLCBrTWF4UmFzdGVyaXplclN0
YXRlcyk7CisgICAgICAgICAgICBXQVJOKCkgPDwgIk92ZXJmbG93ZWQgdGhlIGxpbWl0IG9mICIg
PDwga01heFJhc3Rlcml6ZXJTdGF0ZXMKKyAgICAgICAgICAgICAgICAgICA8PCAiIHJhc3Rlcml6
ZXIgc3RhdGVzLCByZW1vdmluZyB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZCB0byBtYWtlIHJvb20u
IjsKIAogICAgICAgICAgICAgUmFzdGVyaXplclN0YXRlTWFwOjppdGVyYXRvciBsZWFzdFJlY2Vu
dGx5VXNlZCA9IG1SYXN0ZXJpemVyU3RhdGVDYWNoZS5iZWdpbigpOwogICAgICAgICAgICAgZm9y
IChSYXN0ZXJpemVyU3RhdGVNYXA6Oml0ZXJhdG9yIGkgPSBtUmFzdGVyaXplclN0YXRlQ2FjaGUu
YmVnaW4oKTsgaSAhPSBtUmFzdGVyaXplclN0YXRlQ2FjaGUuZW5kKCk7IGkrKykKQEAgLTI4MCwx
MSArMzAyLDEyIEBAIGdsOjpFcnJvciBSZW5kZXJTdGF0ZUNhY2hlOjpnZXRSYXN0ZXJpemVyU3Rh
dGUoY29uc3QgZ2w6OlJhc3Rlcml6ZXJTdGF0ZSAmcmFzdGVyCiAgICAgICAgIG1SYXN0ZXJpemVy
U3RhdGVDYWNoZS5pbnNlcnQoc3RkOjptYWtlX3BhaXIoa2V5LCBzdGQ6Om1ha2VfcGFpcihkeDEx
UmFzdGVyaXplclN0YXRlLCBtQ291bnRlcisrKSkpOwogCiAgICAgICAgICpvdXRSYXN0ZXJpemVy
U3RhdGUgPSBkeDExUmFzdGVyaXplclN0YXRlOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogfQogCi1z
dGQ6OnNpemVfdCBSZW5kZXJTdGF0ZUNhY2hlOjpoYXNoRGVwdGhTdGVuY2lsU3RhdGUoY29uc3Qg
Z2w6OkRlcHRoU3RlbmNpbFN0YXRlICZkc1N0YXRlKQorLy8gc3RhdGljCitzdGQ6OnNpemVfdCBS
ZW5kZXJTdGF0ZUNhY2hlOjpIYXNoRGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgZ2w6OkRlcHRoU3Rl
bmNpbFN0YXRlICZkc1N0YXRlKQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgc2Vl
ZCA9IDB4QUJDREVGOTg7CiAKQEAgLTI5MywxNCArMzE2LDEzIEBAIHN0ZDo6c2l6ZV90IFJlbmRl
clN0YXRlQ2FjaGU6Omhhc2hEZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBnbDo6RGVwdGhTdGVuY2ls
U3RhdGUKICAgICByZXR1cm4gaGFzaDsKIH0KIAotYm9vbCBSZW5kZXJTdGF0ZUNhY2hlOjpjb21w
YXJlRGVwdGhTdGVuY2lsU3RhdGVzKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmYSwgY29u
c3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZiKQorLy8gc3RhdGljCitib29sIFJlbmRlclN0YXRl
Q2FjaGU6OkNvbXBhcmVEZXB0aFN0ZW5jaWxTdGF0ZXMoY29uc3QgZ2w6OkRlcHRoU3RlbmNpbFN0
YXRlICZhLCBjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmIpCiB7CiAgICAgcmV0dXJuIG1l
bWNtcCgmYSwgJmIsIHNpemVvZihnbDo6RGVwdGhTdGVuY2lsU3RhdGUpKSA9PSAwOwogfQogCi1n
bDo6RXJyb3IgUmVuZGVyU3RhdGVDYWNoZTo6Z2V0RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgZ2w6
OkRlcHRoU3RlbmNpbFN0YXRlICZvcmlnaW5hbFN0YXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGlzYWJsZURlcHRoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGlzYWJsZVN0ZW5j
aWwsCitnbDo6RXJyb3IgUmVuZGVyU3RhdGVDYWNoZTo6Z2V0RGVwdGhTdGVuY2lsU3RhdGUoY29u
c3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZnbFN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMURlcHRoU3RlbmNpbFN0YXRlICoqb3V0
RFNTdGF0ZSkKIHsKICAgICBpZiAoIW1EZXZpY2UpCkBAIC0zMDgsMzUgKzMzMCwxOSBAQCBnbDo6
RXJyb3IgUmVuZGVyU3RhdGVDYWNoZTo6Z2V0RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgZ2w6OkRl
cHRoU3RlbmNpbFN0YXRlICZvcgogICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9N
RU1PUlksICJJbnRlcm5hbCBlcnJvciwgUmVuZGVyU3RhdGVDYWNoZSBpcyBub3QgaW5pdGlhbGl6
ZWQuIik7CiAgICAgfQogCi0gICAgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlIGdsU3RhdGUgPSBvcmln
aW5hbFN0YXRlOwotICAgIGlmIChkaXNhYmxlRGVwdGgpCi0gICAgewotICAgICAgICBnbFN0YXRl
LmRlcHRoVGVzdCA9IGZhbHNlOwotICAgICAgICBnbFN0YXRlLmRlcHRoTWFzayA9IGZhbHNlOwot
ICAgIH0KLQotICAgIGlmIChkaXNhYmxlU3RlbmNpbCkKLSAgICB7Ci0gICAgICAgIGdsU3RhdGUu
c3RlbmNpbFdyaXRlbWFzayAgICAgPSAwOwotICAgICAgICBnbFN0YXRlLnN0ZW5jaWxCYWNrV3Jp
dGVtYXNrID0gMDsKLSAgICAgICAgZ2xTdGF0ZS5zdGVuY2lsVGVzdCAgICAgICAgICA9IGZhbHNl
OwotICAgIH0KLQogICAgIGF1dG8ga2V5SXRlciA9IG1EZXB0aFN0ZW5jaWxTdGF0ZUNhY2hlLmZp
bmQoZ2xTdGF0ZSk7CiAgICAgaWYgKGtleUl0ZXIgIT0gbURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUu
ZW5kKCkpCiAgICAgewogICAgICAgICBEZXB0aFN0ZW5jaWxTdGF0ZUNvdW50ZXJQYWlyICZzdGF0
ZSA9IGtleUl0ZXItPnNlY29uZDsKICAgICAgICAgc3RhdGUuc2Vjb25kID0gbUNvdW50ZXIrKzsK
ICAgICAgICAgKm91dERTU3RhdGUgPSBzdGF0ZS5maXJzdDsKLSAgICAgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0K
IAogICAgIGlmIChtRGVwdGhTdGVuY2lsU3RhdGVDYWNoZS5zaXplKCkgPj0ga01heERlcHRoU3Rl
bmNpbFN0YXRlcykKICAgICB7Ci0gICAgICAgIFRSQUNFKAotICAgICAgICAgICAgIk92ZXJmbG93
ZWQgdGhlIGxpbWl0IG9mICV1IGRlcHRoIHN0ZW5jaWwgc3RhdGVzLCByZW1vdmluZyB0aGUgbGVh
c3QgcmVjZW50bHkgdXNlZCAiCi0gICAgICAgICAgICAidG8gbWFrZSByb29tLiIsCi0gICAgICAg
ICAgICBrTWF4RGVwdGhTdGVuY2lsU3RhdGVzKTsKKyAgICAgICAgV0FSTigpIDw8ICJPdmVyZmxv
d2VkIHRoZSBsaW1pdCBvZiAiIDw8IGtNYXhEZXB0aFN0ZW5jaWxTdGF0ZXMKKyAgICAgICAgICAg
ICAgIDw8ICIgZGVwdGggc3RlbmNpbCBzdGF0ZXMsIHJlbW92aW5nIHRoZSBsZWFzdCByZWNlbnRs
eSB1c2VkIHRvIG1ha2Ugcm9vbS4iOwogCiAgICAgICAgIGF1dG8gbGVhc3RSZWNlbnRseVVzZWQg
PSBtRGVwdGhTdGVuY2lsU3RhdGVDYWNoZS5iZWdpbigpOwogICAgICAgICBmb3IgKGF1dG8gaSA9
IG1EZXB0aFN0ZW5jaWxTdGF0ZUNhY2hlLmJlZ2luKCk7IGkgIT0gbURlcHRoU3RlbmNpbFN0YXRl
Q2FjaGUuZW5kKCk7IGkrKykKQEAgLTM3OCwxMCArMzg0LDExIEBAIGdsOjpFcnJvciBSZW5kZXJT
dGF0ZUNhY2hlOjpnZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3Rh
dGUgJm9yCiAgICAgICAgIHN0ZDo6bWFrZV9wYWlyKGdsU3RhdGUsIHN0ZDo6bWFrZV9wYWlyKGR4
MTFEZXB0aFN0ZW5jaWxTdGF0ZSwgbUNvdW50ZXIrKykpKTsKIAogICAgICpvdXREU1N0YXRlID0g
ZHgxMURlcHRoU3RlbmNpbFN0YXRlOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1zdGQ6OnNpemVfdCBSZW5kZXJTdGF0
ZUNhY2hlOjpoYXNoU2FtcGxlclN0YXRlKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJT
dGF0ZSkKKy8vIHN0YXRpYworc3RkOjpzaXplX3QgUmVuZGVyU3RhdGVDYWNoZTo6SGFzaFNhbXBs
ZXJTdGF0ZShjb25zdCBnbDo6U2FtcGxlclN0YXRlICZzYW1wbGVyU3RhdGUpCiB7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGludCBzZWVkID0gMHhBQkNERUY5ODsKIApAQCAtMzkwLDcgKzM5
Nyw4IEBAIHN0ZDo6c2l6ZV90IFJlbmRlclN0YXRlQ2FjaGU6Omhhc2hTYW1wbGVyU3RhdGUoY29u
c3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0CiAgICAgcmV0dXJuIGhhc2g7CiB9CiAKLWJv
b2wgUmVuZGVyU3RhdGVDYWNoZTo6Y29tcGFyZVNhbXBsZXJTdGF0ZXMoY29uc3QgZ2w6OlNhbXBs
ZXJTdGF0ZSAmYSwgY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmYikKKy8vIHN0YXRpYworYm9vbCBS
ZW5kZXJTdGF0ZUNhY2hlOjpDb21wYXJlU2FtcGxlclN0YXRlcyhjb25zdCBnbDo6U2FtcGxlclN0
YXRlICZhLCBjb25zdCBnbDo6U2FtcGxlclN0YXRlICZiKQogewogICAgIHJldHVybiBtZW1jbXAo
JmEsICZiLCBzaXplb2YoZ2w6OlNhbXBsZXJTdGF0ZSkpID09IDA7CiB9CkBAIC00MDgsMTQgKzQx
NiwxNCBAQCBnbDo6RXJyb3IgUmVuZGVyU3RhdGVDYWNoZTo6Z2V0U2FtcGxlclN0YXRlKGNvbnN0
IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZQogICAgICAgICBTYW1wbGVyU3RhdGVDb3Vu
dGVyUGFpciAmc3RhdGUgPSBrZXlJdGVyLT5zZWNvbmQ7CiAgICAgICAgIHN0YXRlLnNlY29uZCA9
IG1Db3VudGVyKys7CiAgICAgICAgICpvdXRTYW1wbGVyU3RhdGUgPSBzdGF0ZS5maXJzdDsKLSAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogICAgIH0KICAgICBlbHNlCiAgICAgewogICAgICAgICBpZiAobVNhbXBsZXJT
dGF0ZUNhY2hlLnNpemUoKSA+PSBrTWF4U2FtcGxlclN0YXRlcykKICAgICAgICAgewotICAgICAg
ICAgICAgVFJBQ0UoIk92ZXJmbG93ZWQgdGhlIGxpbWl0IG9mICV1IHNhbXBsZXIgc3RhdGVzLCBy
ZW1vdmluZyB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZCAiCi0gICAgICAgICAgICAgICAgICAidG8g
bWFrZSByb29tLiIsIGtNYXhTYW1wbGVyU3RhdGVzKTsKKyAgICAgICAgICAgIFdBUk4oKSA8PCAi
T3ZlcmZsb3dlZCB0aGUgbGltaXQgb2YgIiA8PCBrTWF4U2FtcGxlclN0YXRlcworICAgICAgICAg
ICAgICAgICAgIDw8ICIgc2FtcGxlciBzdGF0ZXMsIHJlbW92aW5nIHRoZSBsZWFzdCByZWNlbnRs
eSB1c2VkIHRvIG1ha2Ugcm9vbS4iOwogCiAgICAgICAgICAgICBTYW1wbGVyU3RhdGVNYXA6Oml0
ZXJhdG9yIGxlYXN0UmVjZW50bHlVc2VkID0gbVNhbXBsZXJTdGF0ZUNhY2hlLmJlZ2luKCk7CiAg
ICAgICAgICAgICBmb3IgKFNhbXBsZXJTdGF0ZU1hcDo6aXRlcmF0b3IgaSA9IG1TYW1wbGVyU3Rh
dGVDYWNoZS5iZWdpbigpOyBpICE9IG1TYW1wbGVyU3RhdGVDYWNoZS5lbmQoKTsgaSsrKQpAQCAt
NDY2LDcgKzQ3NCw3IEBAIGdsOjpFcnJvciBSZW5kZXJTdGF0ZUNhY2hlOjpnZXRTYW1wbGVyU3Rh
dGUoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlCiAgICAgICAgIG1TYW1wbGVy
U3RhdGVDYWNoZS5pbnNlcnQoc3RkOjptYWtlX3BhaXIoc2FtcGxlclN0YXRlLCBzdGQ6Om1ha2Vf
cGFpcihkeDExU2FtcGxlclN0YXRlLCBtQ291bnRlcisrKSkpOwogCiAgICAgICAgICpvdXRTYW1w
bGVyU3RhdGUgPSBkeDExU2FtcGxlclN0YXRlOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL1JlbmRlclN0YXRlQ2FjaGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyU3RhdGVDYWNoZS5oCmluZGV4IDgy
Y2IxMzkwM2NmMWVlYzE1NTNiOGJiYjUxZjRkNTcwY2Y5NDFmY2MuLmI5OTgxMDUyNjU0NmM2MjU3
ZGY1NWM0MzVmNTg3MmI1YmEzM2FkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyU3RhdGVDYWNoZS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvUmVuZGVyU3RhdGVDYWNoZS5oCkBAIC0xMyw2ICsxMyw3IEBACiAjaW5jbHVkZSAibGliQU5H
TEUvYW5nbGV0eXBlcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCiAjaW5jbHVkZSAi
Y29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvcmVuZGVyZXIxMV91dGlscy5oIgogCiAjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KIApAQCAt
MzQsMTEgKzM1LDExIEBAIGNsYXNzIFJlbmRlclN0YXRlQ2FjaGUgOiBhbmdsZTo6Tm9uQ29weWFi
bGUKICAgICB2b2lkIGluaXRpYWxpemUoSUQzRDExRGV2aWNlICpkZXZpY2UpOwogICAgIHZvaWQg
Y2xlYXIoKTsKIAotICAgIGdsOjpFcnJvciBnZXRCbGVuZFN0YXRlKGNvbnN0IGdsOjpGcmFtZWJ1
ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpCbGVuZFN0YXRlICZibGVuZFN0YXRlLCBJRDNE
MTFCbGVuZFN0YXRlICoqb3V0QmxlbmRTdGF0ZSk7CisgICAgc3RhdGljIGQzZDExOjpCbGVuZFN0
YXRlS2V5IEdldEJsZW5kU3RhdGVLZXkoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSk7CisgICAgZ2w6OkVycm9yIGdldEJsZW5kU3Rh
dGUoY29uc3QgZDNkMTE6OkJsZW5kU3RhdGVLZXkgJmtleSwgSUQzRDExQmxlbmRTdGF0ZSAqKm91
dEJsZW5kU3RhdGUpOwogICAgIGdsOjpFcnJvciBnZXRSYXN0ZXJpemVyU3RhdGUoY29uc3QgZ2w6
OlJhc3Rlcml6ZXJTdGF0ZSAmcmFzdGVyU3RhdGUsIGJvb2wgc2Npc3NvckVuYWJsZWQsIElEM0Qx
MVJhc3Rlcml6ZXJTdGF0ZSAqKm91dFJhc3Rlcml6ZXJTdGF0ZSk7CiAgICAgZ2w6OkVycm9yIGdl
dERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmZHNTdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkaXNhYmxlRGVwdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGlzYWJsZVN0ZW5jaWwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMURlcHRoU3RlbmNpbFN0YXRl
ICoqb3V0RFNTdGF0ZSk7CiAgICAgZ2w6OkVycm9yIGdldFNhbXBsZXJTdGF0ZShjb25zdCBnbDo6
U2FtcGxlclN0YXRlICZzYW1wbGVyU3RhdGUsIElEM0QxMVNhbXBsZXJTdGF0ZSAqKm91dFNhbXBs
ZXJTdGF0ZSk7CiAKQEAgLTQ3LDE5ICs0OCwxOSBAQCBjbGFzcyBSZW5kZXJTdGF0ZUNhY2hlIDog
YW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdW5zaWduZWQgbG9uZyBsb25nIG1Db3VudGVyOwogCiAg
ICAgLy8gQmxlbmQgc3RhdGUgY2FjaGUKLSAgICBzdHJ1Y3QgQmxlbmRTdGF0ZUtleQotICAgIHsK
LSAgICAgICAgZ2w6OkJsZW5kU3RhdGUgYmxlbmRTdGF0ZTsKLSAgICAgICAgYm9vbCBydENoYW5u
ZWxzW0QzRDExX1NJTVVMVEFORU9VU19SRU5ERVJfVEFSR0VUX0NPVU5UXVs0XTsKLSAgICB9Owot
ICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBoYXNoQmxlbmRTdGF0ZShjb25zdCBCbGVuZFN0YXRlS2V5
ICZibGVuZFN0YXRlKTsKLSAgICBzdGF0aWMgYm9vbCBjb21wYXJlQmxlbmRTdGF0ZXMoY29uc3Qg
QmxlbmRTdGF0ZUtleSAmYSwgY29uc3QgQmxlbmRTdGF0ZUtleSAmYik7CisgICAgc3RhdGljIHN0
ZDo6c2l6ZV90IEhhc2hCbGVuZFN0YXRlKGNvbnN0IGQzZDExOjpCbGVuZFN0YXRlS2V5ICZibGVu
ZFN0YXRlKTsKKyAgICBzdGF0aWMgYm9vbCBDb21wYXJlQmxlbmRTdGF0ZXMoY29uc3QgZDNkMTE6
OkJsZW5kU3RhdGVLZXkgJmEsIGNvbnN0IGQzZDExOjpCbGVuZFN0YXRlS2V5ICZiKTsKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGtNYXhCbGVuZFN0YXRlczsKIAotICAgIHR5cGVkZWYg
c3RkOjpzaXplX3QgKCpCbGVuZFN0YXRlSGFzaEZ1bmN0aW9uKShjb25zdCBCbGVuZFN0YXRlS2V5
ICYpOwotICAgIHR5cGVkZWYgYm9vbCAoKkJsZW5kU3RhdGVFcXVhbGl0eUZ1bmN0aW9uKShjb25z
dCBCbGVuZFN0YXRlS2V5ICYsIGNvbnN0IEJsZW5kU3RhdGVLZXkgJik7CisgICAgdHlwZWRlZiBz
dGQ6OnNpemVfdCAoKkJsZW5kU3RhdGVIYXNoRnVuY3Rpb24pKGNvbnN0IGQzZDExOjpCbGVuZFN0
YXRlS2V5ICYpOworICAgIHR5cGVkZWYgYm9vbCAoKkJsZW5kU3RhdGVFcXVhbGl0eUZ1bmN0aW9u
KShjb25zdCBkM2QxMTo6QmxlbmRTdGF0ZUtleSAmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkM2QxMTo6QmxlbmRTdGF0ZUtleSAmKTsKICAg
ICB0eXBlZGVmIHN0ZDo6cGFpcjxJRDNEMTFCbGVuZFN0YXRlKiwgdW5zaWduZWQgbG9uZyBsb25n
PiBCbGVuZFN0YXRlQ291bnRlclBhaXI7Ci0gICAgdHlwZWRlZiBzdGQ6OnVub3JkZXJlZF9tYXA8
QmxlbmRTdGF0ZUtleSwgQmxlbmRTdGF0ZUNvdW50ZXJQYWlyLCBCbGVuZFN0YXRlSGFzaEZ1bmN0
aW9uLCBCbGVuZFN0YXRlRXF1YWxpdHlGdW5jdGlvbj4gQmxlbmRTdGF0ZU1hcDsKKyAgICB0eXBl
ZGVmIHN0ZDo6dW5vcmRlcmVkX21hcDxkM2QxMTo6QmxlbmRTdGF0ZUtleSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBCbGVuZFN0YXRlQ291bnRlclBhaXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQmxlbmRTdGF0ZUhhc2hGdW5jdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCbGVuZFN0YXRlRXF1YWxpdHlGdW5jdGlvbj4KKyAgICAgICAgQmxl
bmRTdGF0ZU1hcDsKICAgICBCbGVuZFN0YXRlTWFwIG1CbGVuZFN0YXRlQ2FjaGU7CiAKICAgICAv
LyBSYXN0ZXJpemVyIHN0YXRlIGNhY2hlCkBAIC02OCw4ICs2OSw4IEBAIGNsYXNzIFJlbmRlclN0
YXRlQ2FjaGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgZ2w6OlJhc3Rlcml6ZXJTdGF0
ZSByYXN0ZXJpemVyU3RhdGU7CiAgICAgICAgIGJvb2wgc2Npc3NvckVuYWJsZWQ7CiAgICAgfTsK
LSAgICBzdGF0aWMgc3RkOjpzaXplX3QgaGFzaFJhc3Rlcml6ZXJTdGF0ZShjb25zdCBSYXN0ZXJp
emVyU3RhdGVLZXkgJnJhc3RlclN0YXRlKTsKLSAgICBzdGF0aWMgYm9vbCBjb21wYXJlUmFzdGVy
aXplclN0YXRlcyhjb25zdCBSYXN0ZXJpemVyU3RhdGVLZXkgJmEsIGNvbnN0IFJhc3Rlcml6ZXJT
dGF0ZUtleSAmYik7CisgICAgc3RhdGljIHN0ZDo6c2l6ZV90IEhhc2hSYXN0ZXJpemVyU3RhdGUo
Y29uc3QgUmFzdGVyaXplclN0YXRlS2V5ICZyYXN0ZXJTdGF0ZSk7CisgICAgc3RhdGljIGJvb2wg
Q29tcGFyZVJhc3Rlcml6ZXJTdGF0ZXMoY29uc3QgUmFzdGVyaXplclN0YXRlS2V5ICZhLCBjb25z
dCBSYXN0ZXJpemVyU3RhdGVLZXkgJmIpOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQg
a01heFJhc3Rlcml6ZXJTdGF0ZXM7CiAKICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICgqUmFzdGVy
aXplclN0YXRlSGFzaEZ1bmN0aW9uKShjb25zdCBSYXN0ZXJpemVyU3RhdGVLZXkgJik7CkBAIC03
OSw4ICs4MCw4IEBAIGNsYXNzIFJlbmRlclN0YXRlQ2FjaGUgOiBhbmdsZTo6Tm9uQ29weWFibGUK
ICAgICBSYXN0ZXJpemVyU3RhdGVNYXAgbVJhc3Rlcml6ZXJTdGF0ZUNhY2hlOwogCiAgICAgLy8g
RGVwdGggc3RlbmNpbCBzdGF0ZSBjYWNoZQotICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBoYXNoRGVw
dGhTdGVuY2lsU3RhdGUoY29uc3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZkc1N0YXRlKTsKLSAg
ICBzdGF0aWMgYm9vbCBjb21wYXJlRGVwdGhTdGVuY2lsU3RhdGVzKGNvbnN0IGdsOjpEZXB0aFN0
ZW5jaWxTdGF0ZSAmYSwgY29uc3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZiKTsKKyAgICBzdGF0
aWMgc3RkOjpzaXplX3QgSGFzaERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0aFN0ZW5j
aWxTdGF0ZSAmZHNTdGF0ZSk7CisgICAgc3RhdGljIGJvb2wgQ29tcGFyZURlcHRoU3RlbmNpbFN0
YXRlcyhjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmEsIGNvbnN0IGdsOjpEZXB0aFN0ZW5j
aWxTdGF0ZSAmYik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBrTWF4RGVwdGhTdGVu
Y2lsU3RhdGVzOwogCiAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAoKkRlcHRoU3RlbmNpbFN0YXRl
SGFzaEZ1bmN0aW9uKShjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJik7CkBAIC05Myw4ICs5
NCw4IEBAIGNsYXNzIFJlbmRlclN0YXRlQ2FjaGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBE
ZXB0aFN0ZW5jaWxTdGF0ZU1hcCBtRGVwdGhTdGVuY2lsU3RhdGVDYWNoZTsKIAogICAgIC8vIFNh
bXBsZSBzdGF0ZSBjYWNoZQotICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBoYXNoU2FtcGxlclN0YXRl
KGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSk7Ci0gICAgc3RhdGljIGJvb2wg
Y29tcGFyZVNhbXBsZXJTdGF0ZXMoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmYSwgY29uc3QgZ2w6
OlNhbXBsZXJTdGF0ZSAmYik7CisgICAgc3RhdGljIHN0ZDo6c2l6ZV90IEhhc2hTYW1wbGVyU3Rh
dGUoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKTsKKyAgICBzdGF0aWMgYm9v
bCBDb21wYXJlU2FtcGxlclN0YXRlcyhjb25zdCBnbDo6U2FtcGxlclN0YXRlICZhLCBjb25zdCBn
bDo6U2FtcGxlclN0YXRlICZiKTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGtNYXhT
YW1wbGVyU3RhdGVzOwogCiAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAoKlNhbXBsZXJTdGF0ZUhh
c2hGdW5jdGlvbikoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVy
VGFyZ2V0MTEuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9SZW5kZXJUYXJnZXQxMS5jcHAKaW5kZXggNjQ0OWM5ZTZhNTg1ZjE3NTQx
ZTE2MTM5NTk2Y2Y3ZTk1MTdiZmY3OS4uYTA0MmY0NDdkYWE1ZmY0ZDRjNGI5ZTc1YzZjYjE2MTI5
M2E4M2NkYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJUYXJnZXQxMS5jcHAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJUYXJnZXQx
MS5jcHAKQEAgLTI1OCw3ICsyNTgsNyBAQCBUZXh0dXJlUmVuZGVyVGFyZ2V0MTE6OlRleHR1cmVS
ZW5kZXJUYXJnZXQxMShJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpydHYsCiAgICAgewogICAgICAg
ICBtU3VicmVzb3VyY2VJbmRleCA9IEdldFJUVlN1YnJlc291cmNlSW5kZXgobVRleHR1cmUsIG1S
ZW5kZXJUYXJnZXQpOwogICAgIH0KLSAgICBBU1NFUlQobUZvcm1hdFNldC5mb3JtYXQuaWQgIT0g
YW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUgfHwgbVdpZHRoID09IDAgfHwgbUhlaWdodCA9PSAwKTsK
KyAgICBBU1NFUlQobUZvcm1hdFNldC5mb3JtYXRJRCAhPSBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9O
RSB8fCBtV2lkdGggPT0gMCB8fCBtSGVpZ2h0ID09IDApOwogfQogCiBUZXh0dXJlUmVuZGVyVGFy
Z2V0MTE6OlRleHR1cmVSZW5kZXJUYXJnZXQxMShJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpkc3Ys
CkBAIC0zMDIsNyArMzAyLDcgQEAgVGV4dHVyZVJlbmRlclRhcmdldDExOjpUZXh0dXJlUmVuZGVy
VGFyZ2V0MTEoSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZHN2LAogICAgIHsKICAgICAgICAgbVN1
YnJlc291cmNlSW5kZXggPSBHZXREU1ZTdWJyZXNvdXJjZUluZGV4KG1UZXh0dXJlLCBtRGVwdGhT
dGVuY2lsKTsKICAgICB9Ci0gICAgQVNTRVJUKG1Gb3JtYXRTZXQuZm9ybWF0LmlkICE9IGFuZ2xl
OjpGb3JtYXQ6OklEOjpOT05FIHx8IG1XaWR0aCA9PSAwIHx8IG1IZWlnaHQgPT0gMCk7CisgICAg
QVNTRVJUKG1Gb3JtYXRTZXQuZm9ybWF0SUQgIT0gYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUgfHwg
bVdpZHRoID09IDAgfHwgbUhlaWdodCA9PSAwKTsKIH0KIAogVGV4dHVyZVJlbmRlclRhcmdldDEx
Ojp+VGV4dHVyZVJlbmRlclRhcmdldDExKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyVGFyZ2V0MTEuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
UmVuZGVyVGFyZ2V0MTEuaAppbmRleCA0ZWUwZGUyOTIwM2YzYTIzYTRmMDJiYzExYzE2ZDcyMzI0
YmM3NzRiLi40Nzc0NGJlYTUwNWUzZmQ5MzRhZDE0MjNkMGZhZjllYzA2YTM2YTc3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL1JlbmRlclRhcmdldDExLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJUYXJnZXQxMS5oCkBAIC0zNSwxMiArMzUs
MTIgQEAgY2xhc3MgUmVuZGVyVGFyZ2V0MTEgOiBwdWJsaWMgUmVuZGVyVGFyZ2V0RDNECiAgICAg
dmlydHVhbCB1bnNpZ25lZCBpbnQgZ2V0U3VicmVzb3VyY2VJbmRleCgpIGNvbnN0ID0gMDsKIAog
ICAgIHZvaWQgc2lnbmFsRGlydHkoKSBvdmVycmlkZTsKLSAgICBhbmdsZTo6QnJvYWRjYXN0Q2hh
bm5lbCAqZ2V0QnJvYWRjYXN0Q2hhbm5lbCgpIHsgcmV0dXJuICZtQnJvYWRjYXN0Q2hhbm5lbDsg
fQorICAgIGFuZ2xlOjpCcm9hZGNhc3RDaGFubmVsPD4gKmdldEJyb2FkY2FzdENoYW5uZWwoKSB7
IHJldHVybiAmbUJyb2FkY2FzdENoYW5uZWw7IH0KIAogICAgIGNvbnN0IGQzZDExOjpGb3JtYXQg
JmdldEZvcm1hdFNldCgpIGNvbnN0IHsgcmV0dXJuIG1Gb3JtYXRTZXQ7IH0KIAogICBwcm90ZWN0
ZWQ6Ci0gICAgYW5nbGU6OkJyb2FkY2FzdENoYW5uZWwgbUJyb2FkY2FzdENoYW5uZWw7CisgICAg
YW5nbGU6OkJyb2FkY2FzdENoYW5uZWw8PiBtQnJvYWRjYXN0Q2hhbm5lbDsKICAgICBjb25zdCBk
M2QxMTo6Rm9ybWF0ICZtRm9ybWF0U2V0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvUmVuZGVyZXIxMS5jcHAKaW5kZXggNjAwZTk5ZWE1YTBmZTQwYmVkNDNkYzAwZWVjODI5ZWI5
OTk3N2NjMi4uODJhMTE5OWI3YTI3M2Q0NWE0MTdiZDQ3NWVhYmQyZjlhMWY4N2UxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9SZW5kZXJlcjExLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuY3BwCkBAIC05LDcgKzksNiBAQAog
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmgiCiAKICNp
bmNsdWRlIDxFR0wvZWdsZXh0Lmg+Ci0jaW5jbHVkZSA8aW9tYW5pcD4KICNpbmNsdWRlIDxzc3Ry
ZWFtPgogI2luY2x1ZGUgPHZlcnNpb25oZWxwZXJzLmg+CiAKQEAgLTk4LDIzICs5Nyw2IEBAIGVu
dW0KICAgICBNQVhfVEVYVFVSRV9JTUFHRV9VTklUU19WVEZfU000ID0gMTYKIH07CiAKLXZvaWQg
Q2FsY3VsYXRlQ29uc3RhbnRCdWZmZXJQYXJhbXMoR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRy
IHNpemUsIFVJTlQgKm91dEZpcnN0Q29uc3RhbnQsIFVJTlQgKm91dE51bUNvbnN0YW50cykKLXsK
LSAgICAvLyBUaGUgb2Zmc2V0IG11c3QgYmUgYWxpZ25lZCB0byAyNTYgYnl0ZXMgKHNob3VsZCBo
YXZlIGJlZW4gZW5mb3JjZWQgYnkgZ2xCaW5kQnVmZmVyUmFuZ2UpLgotICAgIEFTU0VSVChvZmZz
ZXQgJSAyNTYgPT0gMCk7Ci0KLSAgICAvLyBmaXJzdENvbnN0YW50IGFuZCBudW1Db25zdGFudHMg
YXJlIGV4cHJlc3NlZCBpbiBjb25zdGFudHMgb2YgMTYtYnl0ZXMuIEZ1cnRoZXJtb3JlIHRoZXkg
bXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2IGNvbnN0YW50cy4KLSAgICAqb3V0Rmlyc3RDb25zdGFu
dCA9IHN0YXRpY19jYXN0PFVJTlQ+KG9mZnNldCAvIDE2KTsKLQotICAgIC8vIFRoZSBHTCBzaXpl
IGlzIG5vdCByZXF1aXJlZCB0byBiZSBhbGlnbmVkIHRvIGEgMjU2IGJ5dGVzIGJvdW5kYXJ5Lgot
ICAgIC8vIFJvdW5kIHRoZSBzaXplIHVwIHRvIGEgMjU2IGJ5dGVzIGJvdW5kYXJ5IHRoZW4gZXhw
cmVzcyB0aGUgcmVzdWx0cyBpbiBjb25zdGFudHMgb2YgMTYtYnl0ZXMuCi0gICAgKm91dE51bUNv
bnN0YW50cyA9IHN0YXRpY19jYXN0PFVJTlQ+KHJ4Ojpyb3VuZFVwKHNpemUsIHN0YXRpY19jYXN0
PEdMc2l6ZWlwdHI+KDI1NikpIC8gMTYpOwotCi0gICAgLy8gU2luY2UgdGhlIHNpemUgaXMgcm91
bmRlZCB1cCwgZmlyc3RDb25zdGFudCArIG51bUNvbnN0YW50cyBtYXkgYmUgYmlnZ2VyIHRoYW4g
dGhlIGFjdHVhbCBzaXplIG9mIHRoZSBidWZmZXIuCi0gICAgLy8gVGhpcyBiZWhhdmlvdXIgaXMg
ZXhwbGljdGx5IGFsbG93ZWQgYWNjb3JkaW5nIHRvIHRoZSBkb2N1bWVudGF0aW9uIG9uIElEM0Qx
MURldmljZUNvbnRleHQxOjpQU1NldENvbnN0YW50QnVmZmVyczEKLSAgICAvLyBodHRwczovL21z
ZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9oaDQwNDY0OSUy
OHY9dnMuODUlMjkuYXNweAotfQotCiBlbnVtIEFOR0xFRmVhdHVyZUxldmVsCiB7CiAgICAgQU5H
TEVfRkVBVFVSRV9MRVZFTF9JTlZBTElELApAQCAtMTMwLDE0ICsxMTIsMjAgQEAgQU5HTEVGZWF0
dXJlTGV2ZWwgR2V0QU5HTEVGZWF0dXJlTGV2ZWwoRDNEX0ZFQVRVUkVfTEVWRUwgZDNkRmVhdHVy
ZUxldmVsKQogewogICAgIHN3aXRjaCAoZDNkRmVhdHVyZUxldmVsKQogICAgIHsKLSAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOiByZXR1cm4gQU5HTEVfRkVBVFVSRV9MRVZFTF85XzM7
Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJldHVybiBBTkdMRV9GRUFUVVJF
X0xFVkVMXzEwXzA7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6IHJldHVybiBB
TkdMRV9GRUFUVVJFX0xFVkVMXzEwXzE7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEx
XzA6IHJldHVybiBBTkdMRV9GRUFUVVJFX0xFVkVMXzExXzA7Ci0gICAgICAvLyBOb3RlOiB3ZSBk
b24ndCBldmVyIHJlcXVlc3QgYSAxMV8xIGRldmljZSwgYmVjYXVzZSB0aGlzIGdpdmVzCi0gICAg
ICAvLyBhbiBFX0lOVkFMSURBUkcgZXJyb3Igb24gc3lzdGVtcyB0aGF0IGRvbid0IGhhdmUgdGhl
IHBsYXRmb3JtIHVwZGF0ZS4KLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMTogcmV0
dXJuIEFOR0xFX0ZFQVRVUkVfTEVWRUxfMTFfMTsKLSAgICAgIGRlZmF1bHQ6IHJldHVybiBBTkdM
RV9GRUFUVVJFX0xFVkVMX0lOVkFMSUQ7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
OV8zOgorICAgICAgICAgICAgcmV0dXJuIEFOR0xFX0ZFQVRVUkVfTEVWRUxfOV8zOworICAgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgICAgICByZXR1cm4gQU5HTEVf
RkVBVFVSRV9MRVZFTF8xMF8wOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6
CisgICAgICAgICAgICByZXR1cm4gQU5HTEVfRkVBVFVSRV9MRVZFTF8xMF8xOworICAgICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgICAgICByZXR1cm4gQU5HTEVfRkVB
VFVSRV9MRVZFTF8xMV8wOworICAgICAgICAvLyBOb3RlOiB3ZSBkb24ndCBldmVyIHJlcXVlc3Qg
YSAxMV8xIGRldmljZSwgYmVjYXVzZSB0aGlzIGdpdmVzCisgICAgICAgIC8vIGFuIEVfSU5WQUxJ
REFSRyBlcnJvciBvbiBzeXN0ZW1zIHRoYXQgZG9uJ3QgaGF2ZSB0aGUgcGxhdGZvcm0gdXBkYXRl
LgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6CisgICAgICAgICAgICByZXR1
cm4gQU5HTEVfRkVBVFVSRV9MRVZFTF8xMV8xOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgcmV0dXJuIEFOR0xFX0ZFQVRVUkVfTEVWRUxfSU5WQUxJRDsKICAgICB9CiB9CiAKQEAgLTM4
OCwxMCArMzc2LDcgQEAgaW50IEdldFdyYXBCaXRzKEdMZW51bSB3cmFwKQogICAgIH0KIH0KIAot
Ly8gSWYgd2UgcmVxdWVzdCBhIHNjcmF0Y2ggYnVmZmVyIHJlcXVlc3RpbmcgYSBzbWFsbGVyIHNp
emUgdGhpcyBtYW55IHRpbWVzLAotLy8gcmVsZWFzZSBhbmQgcmVjcmVhdGUgdGhlIHNjcmF0Y2gg
YnVmZmVyLiBUaGlzIGVuc3VyZXMgd2UgZG9uJ3QgaGF2ZSBhCi0vLyBkZWdlbmVyYXRlIGNhc2Ug
d2hlcmUgd2UgYXJlIHN0dWNrIGhvZ2dpbmcgbWVtb3J5LgotY29uc3QgaW50IFNjcmF0Y2hNZW1v
cnlCdWZmZXJMaWZldGltZSA9IDEwMDA7Citjb25zdCB1aW50MzJfdCBTY3JhdGNoTWVtb3J5QnVm
ZmVyTGlmZXRpbWUgPSAxMDAwOwogCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKQEAgLTM5
OSwxOSArMzg0LDIwIEBAIFJlbmRlcmVyMTE6OlJlbmRlcmVyMTEoZWdsOjpEaXNwbGF5ICpkaXNw
bGF5KQogICAgIDogUmVuZGVyZXJEM0QoZGlzcGxheSksCiAgICAgICBtU3RhdGVDYWNoZSh0aGlz
KSwKICAgICAgIG1TdGF0ZU1hbmFnZXIodGhpcyksCi0gICAgICBtTGFzdEhpc3RvZ3JhbVVwZGF0
ZVRpbWUoQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKS0+bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCkpLAorICAgICAgbUxhc3RIaXN0b2dyYW1VcGRhdGVUaW1lKAorICAgICAgICAgIEFOR0xFUGxh
dGZvcm1DdXJyZW50KCktPm1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZShBTkdMRVBsYXRmb3Jt
Q3VycmVudCgpKSksCiAgICAgICBtRGVidWcobnVsbHB0ciksCi0gICAgICBtU2NyYXRjaE1lbW9y
eUJ1ZmZlclJlc2V0Q291bnRlcigwKSwKKyAgICAgIG1TY3JhdGNoTWVtb3J5QnVmZmVyKFNjcmF0
Y2hNZW1vcnlCdWZmZXJMaWZldGltZSksCiAgICAgICBtQW5ub3RhdG9yKG51bGxwdHIpCiB7CiAg
ICAgbVZlcnRleERhdGFNYW5hZ2VyID0gTlVMTDsKLSAgICBtSW5kZXhEYXRhTWFuYWdlciA9IE5V
TEw7CisgICAgbUluZGV4RGF0YU1hbmFnZXIgID0gTlVMTDsKIAotICAgIG1MaW5lTG9vcElCID0g
TlVMTDsKLSAgICBtVHJpYW5nbGVGYW5JQiA9IE5VTEw7CisgICAgbUxpbmVMb29wSUIgICAgICAg
PSBOVUxMOworICAgIG1UcmlhbmdsZUZhbklCICAgID0gTlVMTDsKICAgICBtQXBwbGllZElCQ2hh
bmdlZCA9IGZhbHNlOwogCi0gICAgbUJsaXQgPSBOVUxMOworICAgIG1CbGl0ICAgICAgICAgID0g
TlVMTDsKICAgICBtUGl4ZWxUcmFuc2ZlciA9IE5VTEw7CiAKICAgICBtQ2xlYXIgPSBOVUxMOwpA
QCAtNDIwLDMxICs0MDYsMzEgQEAgUmVuZGVyZXIxMTo6UmVuZGVyZXIxMShlZ2w6OkRpc3BsYXkg
KmRpc3BsYXkpCiAKICAgICBtU3luY1F1ZXJ5ID0gTlVMTDsKIAotICAgIG1SZW5kZXJlcjExRGV2
aWNlQ2Fwcy5zdXBwb3J0c0NsZWFyVmlldyA9IGZhbHNlOworICAgIG1SZW5kZXJlcjExRGV2aWNl
Q2Fwcy5zdXBwb3J0c0NsZWFyVmlldyAgICAgICAgICAgICA9IGZhbHNlOwogICAgIG1SZW5kZXJl
cjExRGV2aWNlQ2Fwcy5zdXBwb3J0c0NvbnN0YW50QnVmZmVyT2Zmc2V0cyA9IGZhbHNlOwotICAg
IG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5zdXBwb3J0c0RYR0kxXzIgPSBmYWxzZTsKLSAgICBtUmVu
ZGVyZXIxMURldmljZUNhcHMuQjVHNlI1c3VwcG9ydCA9IDA7Ci0gICAgbVJlbmRlcmVyMTFEZXZp
Y2VDYXBzLkI0RzRSNEE0c3VwcG9ydCA9IDA7Ci0gICAgbVJlbmRlcmVyMTFEZXZpY2VDYXBzLkI1
RzVSNUExc3VwcG9ydCA9IDA7CisgICAgbVJlbmRlcmVyMTFEZXZpY2VDYXBzLnN1cHBvcnRzRFhH
STFfMiAgICAgICAgICAgICAgID0gZmFsc2U7CisgICAgbVJlbmRlcmVyMTFEZXZpY2VDYXBzLkI1
RzZSNXN1cHBvcnQgICAgICAgICAgICAgICAgID0gMDsKKyAgICBtUmVuZGVyZXIxMURldmljZUNh
cHMuQjRHNFI0QTRzdXBwb3J0ICAgICAgICAgICAgICAgPSAwOworICAgIG1SZW5kZXJlcjExRGV2
aWNlQ2Fwcy5CNUc1UjVBMXN1cHBvcnQgICAgICAgICAgICAgICA9IDA7CiAKLSAgICBtRDNkMTFN
b2R1bGUgPSBOVUxMOwotICAgIG1EeGdpTW9kdWxlID0gTlVMTDsKKyAgICBtRDNkMTFNb2R1bGUg
ICAgICAgICAgPSBOVUxMOworICAgIG1EeGdpTW9kdWxlICAgICAgICAgICA9IE5VTEw7CiAgICAg
bURDb21wTW9kdWxlICAgICAgICAgID0gTlVMTDsKICAgICBtQ3JlYXRlZFdpdGhEZXZpY2VFWFQg
PSBmYWxzZTsKICAgICBtRUdMRGV2aWNlICAgICAgICAgICAgPSBudWxscHRyOwogCi0gICAgbURl
dmljZSA9IE5VTEw7Ci0gICAgbURldmljZUNvbnRleHQgPSBOVUxMOworICAgIG1EZXZpY2UgICAg
ICAgICA9IE5VTEw7CisgICAgbURldmljZUNvbnRleHQgID0gTlVMTDsKICAgICBtRGV2aWNlQ29u
dGV4dDEgPSBOVUxMOwotICAgIG1EeGdpQWRhcHRlciA9IE5VTEw7Ci0gICAgbUR4Z2lGYWN0b3J5
ID0gTlVMTDsKKyAgICBtRHhnaUFkYXB0ZXIgICAgPSBOVUxMOworICAgIG1EeGdpRmFjdG9yeSAg
ICA9IE5VTEw7CiAKICAgICBtRHJpdmVyQ29uc3RhbnRCdWZmZXJWUyA9IE5VTEw7CiAgICAgbURy
aXZlckNvbnN0YW50QnVmZmVyUFMgPSBOVUxMOwogCi0gICAgbUFwcGxpZWRWZXJ0ZXhTaGFkZXIg
PSBOVUxMOworICAgIG1BcHBsaWVkVmVydGV4U2hhZGVyICAgPSBOVUxMOwogICAgIG1BcHBsaWVk
R2VvbWV0cnlTaGFkZXIgPSBOVUxMOwotICAgIG1BcHBsaWVkUGl4ZWxTaGFkZXIgPSBOVUxMOwor
ICAgIG1BcHBsaWVkUGl4ZWxTaGFkZXIgICAgPSBOVUxMOwogCiAgICAgbUFwcGxpZWRURk9iamVj
dCA9IGFuZ2xlOjpEaXJ0eVBvaW50ZXI7CiAKQEAgLTUyMCw3ICs1MDYsNyBAQCBSZW5kZXJlcjEx
OjpSZW5kZXJlcjExKGVnbDo6RGlzcGxheSAqZGlzcGxheSkKIAogICAgICAgICAvLyBBbHNvIHNl
dCBFR0xfUExBVEZPUk1fQU5HTEVfQU5HTEUgdmFyaWFibGVzLCBpbiBjYXNlIHRoZXkncmUgdXNl
ZCBlbHNld2hlcmUgaW4gQU5HTEUKICAgICAgICAgLy8gbUF2YWlsYWJsZUZlYXR1cmVMZXZlbHMg
ZGVmYXVsdHMgdG8gZW1wdHkKLSAgICAgICAgbVJlcXVlc3RlZERyaXZlclR5cGUgPSBEM0RfRFJJ
VkVSX1RZUEVfVU5LTk9XTjsKKyAgICAgICAgbVJlcXVlc3RlZERyaXZlclR5cGUgICAgPSBEM0Rf
RFJJVkVSX1RZUEVfVU5LTk9XTjsKICAgICAgICAgbVByZXNlbnRQYXRoRmFzdEVuYWJsZWQgPSBm
YWxzZTsKICAgICB9CiAKQEAgLTU1NywxMCArNTQzLDExIEBAIGVnbDo6RXJyb3IgUmVuZGVyZXIx
MTo6aW5pdGlhbGl6ZSgpCiAjaWYgIUFOR0xFX1NLSVBfRFhHSV8xXzJfQ0hFQ0sKICAgICB7CiAg
ICAgICAgIFRSQUNFX0VWRU5UMCgiZ3B1LmFuZ2xlIiwgIlJlbmRlcmVyMTE6OmluaXRpYWxpemUg
KERYR0lDaGVjaykiKTsKLSAgICAgICAgLy8gSW4gb3JkZXIgdG8gY3JlYXRlIGEgc3dhcCBjaGFp
biBmb3IgYW4gSFdORCBvd25lZCBieSBhbm90aGVyIHByb2Nlc3MsIERYR0kgMS4yIGlzIHJlcXVp
cmVkLgorICAgICAgICAvLyBJbiBvcmRlciB0byBjcmVhdGUgYSBzd2FwIGNoYWluIGZvciBhbiBI
V05EIG93bmVkIGJ5IGFub3RoZXIgcHJvY2VzcywgRFhHSSAxLjIgaXMKKyAgICAgICAgLy8gcmVx
dWlyZWQuCiAgICAgICAgIC8vIFRoZSBlYXNpZXN0IHdheSB0byBjaGVjayBpcyB0byBxdWVyeSBm
b3IgYSBJRFhHSURldmljZTIuCiAgICAgICAgIGJvb2wgcmVxdWlyZURYR0kxXzIgPSBmYWxzZTsK
LSAgICAgICAgSFdORCBod25kID0gV2luZG93RnJvbURDKG1EaXNwbGF5LT5nZXROYXRpdmVEaXNw
bGF5SWQoKSk7CisgICAgICAgIEhXTkQgaHduZCAgICAgICAgICAgPSBXaW5kb3dGcm9tREMobURp
c3BsYXktPmdldE5hdGl2ZURpc3BsYXlJZCgpKTsKICAgICAgICAgaWYgKGh3bmQpCiAgICAgICAg
IHsKICAgICAgICAgICAgIERXT1JEIGN1cnJlbnRQcm9jZXNzSWQgPSBHZXRDdXJyZW50UHJvY2Vz
c0lkKCk7CkBAIC01NzYsMTIgKzU2MywxMiBAQCBlZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmluaXRp
YWxpemUoKQogICAgICAgICBpZiAocmVxdWlyZURYR0kxXzIpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIElEWEdJRGV2aWNlMiAqZHhnaURldmljZTIgPSBOVUxMOwotICAgICAgICAgICAgcmVzdWx0
ID0gbURldmljZS0+UXVlcnlJbnRlcmZhY2UoX191dWlkb2YoSURYR0lEZXZpY2UyKSwgKHZvaWQq
KikmZHhnaURldmljZTIpOworICAgICAgICAgICAgcmVzdWx0ID0gbURldmljZS0+UXVlcnlJbnRl
cmZhY2UoX191dWlkb2YoSURYR0lEZXZpY2UyKSwgKHZvaWQgKiopJmR4Z2lEZXZpY2UyKTsKICAg
ICAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEQzRDExX0lOSVRfSU5DT01QQVRJQkxFX0RYR0ksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRYR0kgMS4yIHJlcXVpcmVkIHRvIHByZXNl
bnQgdG8gSFdORHMgb3duZWQgYnkgYW5vdGhlciBwcm9jZXNzLiIpOworICAgICAgICAgICAgICAg
IHJldHVybiBlZ2w6OkVycm9yKAorICAgICAgICAgICAgICAgICAgICBFR0xfTk9UX0lOSVRJQUxJ
WkVELCBEM0QxMV9JTklUX0lOQ09NUEFUSUJMRV9EWEdJLAorICAgICAgICAgICAgICAgICAgICAi
RFhHSSAxLjIgcmVxdWlyZWQgdG8gcHJlc2VudCB0byBIV05EcyBvd25lZCBieSBhbm90aGVyIHBy
b2Nlc3MuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBTYWZlUmVsZWFzZShkeGdpRGV2
aWNlMik7CiAgICAgICAgIH0KQEAgLTU5NywyMSArNTg0LDE5IEBAIGVnbDo6RXJyb3IgUmVuZGVy
ZXIxMTo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIG1EZXZpY2VDb250ZXh0MSA9IGQzZDExOjpEeW5h
bWljQ2FzdENvbU9iamVjdDxJRDNEMTFEZXZpY2VDb250ZXh0MT4obURldmljZUNvbnRleHQpOwog
CiAgICAgICAgIElEWEdJRGV2aWNlICpkeGdpRGV2aWNlID0gTlVMTDsKLSAgICAgICAgcmVzdWx0
ID0gbURldmljZS0+UXVlcnlJbnRlcmZhY2UoX191dWlkb2YoSURYR0lEZXZpY2UpLCAodm9pZCoq
KSZkeGdpRGV2aWNlKTsKKyAgICAgICAgcmVzdWx0ID0gbURldmljZS0+UXVlcnlJbnRlcmZhY2Uo
X191dWlkb2YoSURYR0lEZXZpY2UpLCAodm9pZCAqKikmZHhnaURldmljZSk7CiAKICAgICAgICAg
aWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZWdsOjpF
cnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RDNEMTFfSU5JVF9PVEhFUl9FUlJPUiwKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVH
TF9OT1RfSU5JVElBTElaRUQsIEQzRDExX0lOSVRfT1RIRVJfRVJST1IsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiQ291bGQgbm90IHF1ZXJ5IERYR0kgZGV2aWNlLiIpOwogICAgICAg
ICB9CiAKLSAgICAgICAgcmVzdWx0ID0gZHhnaURldmljZS0+R2V0UGFyZW50KF9fdXVpZG9mKElE
WEdJQWRhcHRlciksICh2b2lkKiopJm1EeGdpQWRhcHRlcik7CisgICAgICAgIHJlc3VsdCA9IGR4
Z2lEZXZpY2UtPkdldFBhcmVudChfX3V1aWRvZihJRFhHSUFkYXB0ZXIpLCAodm9pZCAqKikmbUR4
Z2lBZGFwdGVyKTsKIAogICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9JTklUX09USEVSX0VSUk9SLAorICAgICAgICAg
ICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgRDNEMTFfSU5JVF9PVEhF
Ul9FUlJPUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb3VsZCBub3QgcmV0cmll
dmUgRFhHSSBhZGFwdGVyIik7CiAgICAgICAgIH0KIApAQCAtNjE5LDI0ICs2MDQsMjggQEAgZWds
OjpFcnJvciBSZW5kZXJlcjExOjppbml0aWFsaXplKCkKIAogICAgICAgICBJRFhHSUFkYXB0ZXIy
ICpkeGdpQWRhcHRlcjIgPSBkM2QxMTo6RHluYW1pY0Nhc3RDb21PYmplY3Q8SURYR0lBZGFwdGVy
Mj4obUR4Z2lBZGFwdGVyKTsKIAotICAgICAgICAvLyBPbiBEM0RfRkVBVFVSRV9MRVZFTF85Xyos
IElEWEdJQWRhcHRlcjo6R2V0RGVzYyByZXR1cm5zICJTb2Z0d2FyZSBBZGFwdGVyIiBmb3IgdGhl
IGRlc2NyaXB0aW9uIHN0cmluZy4KLSAgICAgICAgLy8gSWYgRFhHSTEuMiBpcyBhdmFpbGFibGUg
dGhlbiBJRFhHSUFkYXB0ZXIyOjpHZXREZXNjMiBjYW4gYmUgdXNlZCB0byBnZXQgdGhlIGFjdHVh
bCBoYXJkd2FyZSB2YWx1ZXMuCisgICAgICAgIC8vIE9uIEQzRF9GRUFUVVJFX0xFVkVMXzlfKiwg
SURYR0lBZGFwdGVyOjpHZXREZXNjIHJldHVybnMgIlNvZnR3YXJlIEFkYXB0ZXIiIGZvciB0aGUK
KyAgICAgICAgLy8gZGVzY3JpcHRpb24gc3RyaW5nLgorICAgICAgICAvLyBJZiBEWEdJMS4yIGlz
IGF2YWlsYWJsZSB0aGVuIElEWEdJQWRhcHRlcjI6OkdldERlc2MyIGNhbiBiZSB1c2VkIHRvIGdl
dCB0aGUgYWN0dWFsCisgICAgICAgIC8vIGhhcmR3YXJlIHZhbHVlcy4KICAgICAgICAgaWYgKG1S
ZW5kZXJlcjExRGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwgPD0gRDNEX0ZFQVRVUkVfTEVWRUxfOV8z
ICYmIGR4Z2lBZGFwdGVyMiAhPSBOVUxMKQogICAgICAgICB7CiAgICAgICAgICAgICBEWEdJX0FE
QVBURVJfREVTQzIgYWRhcHRlckRlc2MyID0ge307Ci0gICAgICAgICAgICByZXN1bHQgPSBkeGdp
QWRhcHRlcjItPkdldERlc2MyKCZhZGFwdGVyRGVzYzIpOworICAgICAgICAgICAgcmVzdWx0ICAg
ICAgICAgICAgICAgICAgICAgICAgICA9IGR4Z2lBZGFwdGVyMi0+R2V0RGVzYzIoJmFkYXB0ZXJE
ZXNjMik7CiAgICAgICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgY29udGVudHMgb2YgdGhlIERYR0lfQURBUFRF
Ul9ERVNDMiBpbnRvIG1BZGFwdGVyRGVzY3JpcHRpb24gKGEgRFhHSV9BREFQVEVSX0RFU0MpLgot
ICAgICAgICAgICAgICAgIG1lbWNweShtQWRhcHRlckRlc2NyaXB0aW9uLkRlc2NyaXB0aW9uLCBh
ZGFwdGVyRGVzYzIuRGVzY3JpcHRpb24sIHNpemVvZihtQWRhcHRlckRlc2NyaXB0aW9uLkRlc2Ny
aXB0aW9uKSk7Ci0gICAgICAgICAgICAgICAgbUFkYXB0ZXJEZXNjcmlwdGlvbi5WZW5kb3JJZCA9
IGFkYXB0ZXJEZXNjMi5WZW5kb3JJZDsKLSAgICAgICAgICAgICAgICBtQWRhcHRlckRlc2NyaXB0
aW9uLkRldmljZUlkID0gYWRhcHRlckRlc2MyLkRldmljZUlkOwotICAgICAgICAgICAgICAgIG1B
ZGFwdGVyRGVzY3JpcHRpb24uU3ViU3lzSWQgPSBhZGFwdGVyRGVzYzIuU3ViU3lzSWQ7Ci0gICAg
ICAgICAgICAgICAgbUFkYXB0ZXJEZXNjcmlwdGlvbi5SZXZpc2lvbiA9IGFkYXB0ZXJEZXNjMi5S
ZXZpc2lvbjsKLSAgICAgICAgICAgICAgICBtQWRhcHRlckRlc2NyaXB0aW9uLkRlZGljYXRlZFZp
ZGVvTWVtb3J5ID0gYWRhcHRlckRlc2MyLkRlZGljYXRlZFZpZGVvTWVtb3J5OworICAgICAgICAg
ICAgICAgIC8vIENvcHkgdGhlIGNvbnRlbnRzIG9mIHRoZSBEWEdJX0FEQVBURVJfREVTQzIgaW50
byBtQWRhcHRlckRlc2NyaXB0aW9uIChhCisgICAgICAgICAgICAgICAgLy8gRFhHSV9BREFQVEVS
X0RFU0MpLgorICAgICAgICAgICAgICAgIG1lbWNweShtQWRhcHRlckRlc2NyaXB0aW9uLkRlc2Ny
aXB0aW9uLCBhZGFwdGVyRGVzYzIuRGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
IHNpemVvZihtQWRhcHRlckRlc2NyaXB0aW9uLkRlc2NyaXB0aW9uKSk7CisgICAgICAgICAgICAg
ICAgbUFkYXB0ZXJEZXNjcmlwdGlvbi5WZW5kb3JJZCAgICAgICAgICAgICAgPSBhZGFwdGVyRGVz
YzIuVmVuZG9ySWQ7CisgICAgICAgICAgICAgICAgbUFkYXB0ZXJEZXNjcmlwdGlvbi5EZXZpY2VJ
ZCAgICAgICAgICAgICAgPSBhZGFwdGVyRGVzYzIuRGV2aWNlSWQ7CisgICAgICAgICAgICAgICAg
bUFkYXB0ZXJEZXNjcmlwdGlvbi5TdWJTeXNJZCAgICAgICAgICAgICAgPSBhZGFwdGVyRGVzYzIu
U3ViU3lzSWQ7CisgICAgICAgICAgICAgICAgbUFkYXB0ZXJEZXNjcmlwdGlvbi5SZXZpc2lvbiAg
ICAgICAgICAgICAgPSBhZGFwdGVyRGVzYzIuUmV2aXNpb247CisgICAgICAgICAgICAgICAgbUFk
YXB0ZXJEZXNjcmlwdGlvbi5EZWRpY2F0ZWRWaWRlb01lbW9yeSAgPSBhZGFwdGVyRGVzYzIuRGVk
aWNhdGVkVmlkZW9NZW1vcnk7CiAgICAgICAgICAgICAgICAgbUFkYXB0ZXJEZXNjcmlwdGlvbi5E
ZWRpY2F0ZWRTeXN0ZW1NZW1vcnkgPSBhZGFwdGVyRGVzYzIuRGVkaWNhdGVkU3lzdGVtTWVtb3J5
OwotICAgICAgICAgICAgICAgIG1BZGFwdGVyRGVzY3JpcHRpb24uU2hhcmVkU3lzdGVtTWVtb3J5
ID0gYWRhcHRlckRlc2MyLlNoYXJlZFN5c3RlbU1lbW9yeTsKLSAgICAgICAgICAgICAgICBtQWRh
cHRlckRlc2NyaXB0aW9uLkFkYXB0ZXJMdWlkID0gYWRhcHRlckRlc2MyLkFkYXB0ZXJMdWlkOwor
ICAgICAgICAgICAgICAgIG1BZGFwdGVyRGVzY3JpcHRpb24uU2hhcmVkU3lzdGVtTWVtb3J5ICAg
ID0gYWRhcHRlckRlc2MyLlNoYXJlZFN5c3RlbU1lbW9yeTsKKyAgICAgICAgICAgICAgICBtQWRh
cHRlckRlc2NyaXB0aW9uLkFkYXB0ZXJMdWlkICAgICAgICAgICA9IGFkYXB0ZXJEZXNjMi5BZGFw
dGVyTHVpZDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlCkBAIC02NDgs
MjUgKzYzNywyMyBAQCBlZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmluaXRpYWxpemUoKQogCiAgICAg
ICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVn
bDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEQzRDExX0lOSVRfT1RIRVJfRVJST1IsCisgICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJv
cihFR0xfTk9UX0lOSVRJQUxJWkVELCBEM0QxMV9JTklUX09USEVSX0VSUk9SLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCByZWFkIERYR0kgYWRhcHRvciBkZXNjcmlw
dGlvbi4iKTsKICAgICAgICAgfQogCiAgICAgICAgIG1lbXNldChtRGVzY3JpcHRpb24sIDAsIHNp
emVvZihtRGVzY3JpcHRpb24pKTsKICAgICAgICAgd2NzdG9tYnMobURlc2NyaXB0aW9uLCBtQWRh
cHRlckRlc2NyaXB0aW9uLkRlc2NyaXB0aW9uLCBzaXplb2YobURlc2NyaXB0aW9uKSAtIDEpOwog
Ci0gICAgICAgIHJlc3VsdCA9IG1EeGdpQWRhcHRlci0+R2V0UGFyZW50KF9fdXVpZG9mKElEWEdJ
RmFjdG9yeSksICh2b2lkKiopJm1EeGdpRmFjdG9yeSk7CisgICAgICAgIHJlc3VsdCA9IG1EeGdp
QWRhcHRlci0+R2V0UGFyZW50KF9fdXVpZG9mKElEWEdJRmFjdG9yeSksICh2b2lkICoqKSZtRHhn
aUZhY3RvcnkpOwogCiAgICAgICAgIGlmICghbUR4Z2lGYWN0b3J5IHx8IEZBSUxFRChyZXN1bHQp
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJ
QUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfSU5JVF9PVEhFUl9F
UlJPUiwKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQs
IEQzRDExX0lOSVRfT1RIRVJfRVJST1IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
Q291bGQgbm90IGNyZWF0ZSBEWEdJIGZhY3RvcnkuIik7CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICAvLyBEaXNhYmxlIHNvbWUgc3B1cmlvdXMgRDNEMTEgZGVidWcgd2FybmluZ3MgdG8gcHJldmVu
dCB0aGVtIGZyb20gZmxvb2RpbmcgdGhlIG91dHB1dCBsb2cKKy8vIERpc2FibGUgc29tZSBzcHVy
aW91cyBEM0QxMSBkZWJ1ZyB3YXJuaW5ncyB0byBwcmV2ZW50IHRoZW0gZnJvbSBmbG9vZGluZyB0
aGUgb3V0cHV0IGxvZwogI2lmIGRlZmluZWQoQU5HTEVfU1VQUFJFU1NfRDNEMTFfSEFaQVJEX1dB
Uk5JTkdTKSAmJiBkZWZpbmVkKF9ERUJVRykKICAgICB7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgi
Z3B1LmFuZ2xlIiwgIlJlbmRlcmVyMTE6OmluaXRpYWxpemUgKEhpZGVXYXJuaW5ncykiKTsKQEAg
LTY3NSwxNCArNjYyLDEyIEBAIGVnbDo6RXJyb3IgUmVuZGVyZXIxMTo6aW5pdGlhbGl6ZSgpCiAK
ICAgICAgICAgaWYgKFNVQ0NFRURFRChyZXN1bHQpKQogICAgICAgICB7Ci0gICAgICAgICAgICBE
M0QxMV9NRVNTQUdFX0lEIGhpZGVNZXNzYWdlc1tdID0KLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBEM0QxMV9NRVNTQUdFX0lEX0RFVklDRV9EUkFXX1JFTkRFUlRBUkdFVFZJRVdfTk9U
X1NFVAotICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIEQzRDExX01FU1NBR0VfSUQgaGlkZU1l
c3NhZ2VzW10gPSB7CisgICAgICAgICAgICAgICAgRDNEMTFfTUVTU0FHRV9JRF9ERVZJQ0VfRFJB
V19SRU5ERVJUQVJHRVRWSUVXX05PVF9TRVR9OwogCiAgICAgICAgICAgICBEM0QxMV9JTkZPX1FV
RVVFX0ZJTFRFUiBmaWx0ZXIgPSB7fTsKICAgICAgICAgICAgIGZpbHRlci5EZW55TGlzdC5OdW1J
RHMgICAgICAgICA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oQXJyYXlTaXplKGhpZGVNZXNz
YWdlcykpOwotICAgICAgICAgICAgZmlsdGVyLkRlbnlMaXN0LnBJRExpc3QgPSBoaWRlTWVzc2Fn
ZXM7CisgICAgICAgICAgICBmaWx0ZXIuRGVueUxpc3QucElETGlzdCAgICAgICAgPSBoaWRlTWVz
c2FnZXM7CiAKICAgICAgICAgICAgIGluZm9RdWV1ZS0+QWRkU3RvcmFnZUZpbHRlckVudHJpZXMo
JmZpbHRlcik7CiAgICAgICAgICAgICBTYWZlUmVsZWFzZShpbmZvUXVldWUpOwpAQCAtNzQ1LDcg
KzczMCw3IEBAIGVnbDo6RXJyb3IgUmVuZGVyZXIxMTo6aW5pdGlhbGl6ZUQzRERldmljZSgpCiAK
ICAgICAgICAgaWYgKCFtRGV2aWNlIHx8IEZBSUxFRChyZXN1bHQpKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBFUlIoIkZhaWxlZCBjcmVhdGluZyBEZWJ1ZyBEM0QxMSBkZXZpY2UgLSBmYWxsaW5n
IGJhY2sgdG8gcmVsZWFzZSBydW50aW1lLlxuIik7CisgICAgICAgICAgICBXQVJOKCkgPDwgIkZh
aWxlZCBjcmVhdGluZyBEZWJ1ZyBEM0QxMSBkZXZpY2UgLSBmYWxsaW5nIGJhY2sgdG8gcmVsZWFz
ZSBydW50aW1lLiI7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIW1EZXZpY2UgfHwgRkFJTEVE
KHJlc3VsdCkpCkBAIC03NzIsNyArNzU3LDcgQEAgZWdsOjpFcnJvciBSZW5kZXJlcjExOjppbml0
aWFsaXplRDNERGV2aWNlKCkKICAgICBlbHNlCiAgICAgewogICAgICAgICAvLyBXZSBzaG91bGQg
dXNlIHRoZSBpbnB1dHRlZCBEM0QxMSBkZXZpY2UgaW5zdGVhZAotICAgICAgICB2b2lkICpkZXZp
Y2UgICAgID0gbnVsbHB0cjsKKyAgICAgICAgdm9pZCAqZGV2aWNlID0gbnVsbHB0cjsKICAgICAg
ICAgQU5HTEVfVFJZKG1FR0xEZXZpY2UtPmdldERldmljZSgmZGV2aWNlKSk7CiAKICAgICAgICAg
SUQzRDExRGV2aWNlICpkM2REZXZpY2UgPSByZWludGVycHJldF9jYXN0PElEM0QxMURldmljZSAq
PihkZXZpY2UpOwpAQCAtODE0LDcgKzc5OSw3IEBAIHZvaWQgUmVuZGVyZXIxMTo6aW5pdGlhbGl6
ZURldmljZSgpCiAKICAgICBBU1NFUlQoIW1WZXJ0ZXhEYXRhTWFuYWdlciAmJiAhbUluZGV4RGF0
YU1hbmFnZXIpOwogICAgIG1WZXJ0ZXhEYXRhTWFuYWdlciA9IG5ldyBWZXJ0ZXhEYXRhTWFuYWdl
cih0aGlzKTsKLSAgICBtSW5kZXhEYXRhTWFuYWdlciA9IG5ldyBJbmRleERhdGFNYW5hZ2VyKHRo
aXMsIGdldFJlbmRlcmVyQ2xhc3MoKSk7CisgICAgbUluZGV4RGF0YU1hbmFnZXIgID0gbmV3IElu
ZGV4RGF0YU1hbmFnZXIodGhpcywgZ2V0UmVuZGVyZXJDbGFzcygpKTsKIAogICAgIEFTU0VSVCgh
bUJsaXQpOwogICAgIG1CbGl0ID0gbmV3IEJsaXQxMSh0aGlzKTsKQEAgLTg2OCw4ICs4NTMsNyBA
QCB2b2lkIFJlbmRlcmVyMTE6OmluaXRpYWxpemVEZXZpY2UoKQogICAgICAgICBhbmdsZUZlYXR1
cmVMZXZlbCA9IEFOR0xFX0ZFQVRVUkVfTEVWRUxfMTFfMTsKICAgICB9CiAKLSAgICBBTkdMRV9I
SVNUT0dSQU1fRU5VTUVSQVRJT04oIkdQVS5BTkdMRS5EM0QxMUZlYXR1cmVMZXZlbCIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlRmVhdHVyZUxldmVsLAorICAgIEFOR0xF
X0hJU1RPR1JBTV9FTlVNRVJBVElPTigiR1BVLkFOR0xFLkQzRDExRmVhdHVyZUxldmVsIiwgYW5n
bGVGZWF0dXJlTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTV9BTkdM
RV9GRUFUVVJFX0xFVkVMUyk7CiB9CiAKQEAgLTg4Miw3ICs4NjYsNyBAQCB2b2lkIFJlbmRlcmVy
MTE6OnBvcHVsYXRlUmVuZGVyZXIxMURldmljZUNhcHMoKQogICAgIGlmIChGQUlMRUQoaHIpKQog
ICAgIHsKICAgICAgICAgbVJlbmRlcmVyMTFEZXZpY2VDYXBzLmRyaXZlclZlcnNpb24ucmVzZXQo
KTsKLSAgICAgICAgRVJSKCJFcnJvciBxdWVyeWluZyBkcml2ZXIgdmVyc2lvbiBmcm9tIERYR0kg
QWRhcHRlci4iKTsKKyAgICAgICAgRVJSKCkgPDwgIkVycm9yIHF1ZXJ5aW5nIGRyaXZlciB2ZXJz
aW9uIGZyb20gRFhHSSBBZGFwdGVyLiI7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC04OTIs
MTEgKzg3NiwxMyBAQCB2b2lkIFJlbmRlcmVyMTE6OnBvcHVsYXRlUmVuZGVyZXIxMURldmljZUNh
cHMoKQogICAgIGlmIChtRGV2aWNlQ29udGV4dDEpCiAgICAgewogICAgICAgICBEM0QxMV9GRUFU
VVJFX0RBVEFfRDNEMTFfT1BUSU9OUyBkM2QxMU9wdGlvbnM7Ci0gICAgICAgIEhSRVNVTFQgcmVz
dWx0ID0gbURldmljZS0+Q2hlY2tGZWF0dXJlU3VwcG9ydChEM0QxMV9GRUFUVVJFX0QzRDExX09Q
VElPTlMsICZkM2QxMU9wdGlvbnMsIHNpemVvZihEM0QxMV9GRUFUVVJFX0RBVEFfRDNEMTFfT1BU
SU9OUykpOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNoZWNrRmVhdHVyZVN1
cHBvcnQoRDNEMTFfRkVBVFVSRV9EM0QxMV9PUFRJT05TLCAmZDNkMTFPcHRpb25zLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEQz
RDExX0ZFQVRVUkVfREFUQV9EM0QxMV9PUFRJT05TKSk7CiAgICAgICAgIGlmIChTVUNDRUVERUQo
cmVzdWx0KSkKICAgICAgICAgewogICAgICAgICAgICAgbVJlbmRlcmVyMTFEZXZpY2VDYXBzLnN1
cHBvcnRzQ2xlYXJWaWV3ID0gKGQzZDExT3B0aW9ucy5DbGVhclZpZXcgIT0gRkFMU0UpOwotICAg
ICAgICAgICAgbVJlbmRlcmVyMTFEZXZpY2VDYXBzLnN1cHBvcnRzQ29uc3RhbnRCdWZmZXJPZmZz
ZXRzID0gKGQzZDExT3B0aW9ucy5Db25zdGFudEJ1ZmZlck9mZnNldHRpbmcgIT0gRkFMU0UpOwor
ICAgICAgICAgICAgbVJlbmRlcmVyMTFEZXZpY2VDYXBzLnN1cHBvcnRzQ29uc3RhbnRCdWZmZXJP
ZmZzZXRzID0KKyAgICAgICAgICAgICAgICAoZDNkMTFPcHRpb25zLkNvbnN0YW50QnVmZmVyT2Zm
c2V0dGluZyAhPSBGQUxTRSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTkxNCwxMyArOTAwLDE1
IEBAIHZvaWQgUmVuZGVyZXIxMTo6cG9wdWxhdGVSZW5kZXJlcjExRGV2aWNlQ2FwcygpCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBociA9IG1EZXZpY2UtPkNoZWNrRm9ybWF0U3VwcG9ydChEWEdJ
X0ZPUk1BVF9CNEc0UjRBNF9VTk9STSwgJihtUmVuZGVyZXIxMURldmljZUNhcHMuQjRHNFI0QTRz
dXBwb3J0KSk7CisgICAgaHIgPSBtRGV2aWNlLT5DaGVja0Zvcm1hdFN1cHBvcnQoRFhHSV9GT1JN
QVRfQjRHNFI0QTRfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JihtUmVuZGVyZXIxMURldmljZUNhcHMuQjRHNFI0QTRzdXBwb3J0KSk7CiAgICAgaWYgKEZBSUxF
RChocikpCiAgICAgewogICAgICAgICBtUmVuZGVyZXIxMURldmljZUNhcHMuQjRHNFI0QTRzdXBw
b3J0ID0gMDsKICAgICB9CiAKLSAgICBociA9IG1EZXZpY2UtPkNoZWNrRm9ybWF0U3VwcG9ydChE
WEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSwgJihtUmVuZGVyZXIxMURldmljZUNhcHMuQjVHNVI1
QTFzdXBwb3J0KSk7CisgICAgaHIgPSBtRGV2aWNlLT5DaGVja0Zvcm1hdFN1cHBvcnQoRFhHSV9G
T1JNQVRfQjVHNVI1QTFfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJihtUmVuZGVyZXIxMURldmljZUNhcHMuQjVHNVI1QTFzdXBwb3J0KSk7CiAgICAgaWYgKEZB
SUxFRChocikpCiAgICAgewogICAgICAgICBtUmVuZGVyZXIxMURldmljZUNhcHMuQjVHNVI1QTFz
dXBwb3J0ID0gMDsKQEAgLTk0Miw2ICs5MzAsMTcgQEAgZWdsOjpDb25maWdTZXQgUmVuZGVyZXIx
MTo6Z2VuZXJhdGVDb25maWdzKCkKICAgICAvLyAyNC1iaXQgc3VwcG9ydGVkIGZvcm1hdHMKICAg
ICBjb2xvckJ1ZmZlckZvcm1hdHMucHVzaF9iYWNrKEdMX1JHQjhfT0VTKTsKIAorICAgIGlmICht
UmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsID49IEQzRF9GRUFUVVJFX0xFVkVMXzEw
XzApCisgICAgeworICAgICAgICAvLyBBZGRpdGlvbmFsIGhpZ2ggYml0IGRlcHRoIGZvcm1hdHMg
YWRkZWQgaW4gRDNEIDEwLjAKKyAgICAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20v
ZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYmIxNzMwNjQuYXNweAorICAgICAgICBjb2xv
ckJ1ZmZlckZvcm1hdHMucHVzaF9iYWNrKEdMX1JHQkExNkYpOworCisgICAgICAgIC8vIFRPRE8o
Z2VvZmZsYW5nKTogUmUtZW5hYmxlIG9uY2UgY2xpZW50IGNvZGUgaGFzIGJlZW4gdXBkYXRlZCB0
byBmaWx0ZXIgY29uZmlncyBiZXR0ZXIgYW5kCisgICAgICAgIC8vIG5vdCB1c2UgUkdCMTBBMiBh
Y2NpZGVudGFsbHkgd2hlbiByZXF1ZXN0aW5nIFJHQkE4CisgICAgICAgIC8vIGNvbG9yQnVmZmVy
Rm9ybWF0cy5wdXNoX2JhY2soR0xfUkdCMTBfQTIpOworICAgIH0KKwogICAgIGlmICghbVByZXNl
bnRQYXRoRmFzdEVuYWJsZWQpCiAgICAgewogICAgICAgICAvLyAxNi1iaXQgc3VwcG9ydGVkIGZv
cm1hdHMKQEAgLTk1MiwxMSArOTUxLDggQEAgZWdsOjpDb25maWdTZXQgUmVuZGVyZXIxMTo6Z2Vu
ZXJhdGVDb25maWdzKCkKICAgICAgICAgY29sb3JCdWZmZXJGb3JtYXRzLnB1c2hfYmFjayhHTF9S
R0I1NjUpOwogICAgIH0KIAotICAgIHN0YXRpYyBjb25zdCBHTGVudW0gZGVwdGhTdGVuY2lsQnVm
ZmVyRm9ybWF0c1tdID0KLSAgICB7Ci0gICAgICAgIEdMX05PTkUsCi0gICAgICAgIEdMX0RFUFRI
MjRfU1RFTkNJTDhfT0VTLAotICAgICAgICBHTF9ERVBUSF9DT01QT05FTlQxNiwKKyAgICBzdGF0
aWMgY29uc3QgR0xlbnVtIGRlcHRoU3RlbmNpbEJ1ZmZlckZvcm1hdHNbXSA9IHsKKyAgICAgICAg
R0xfTk9ORSwgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMsIEdMX0RFUFRIX0NPTVBPTkVOVDE2LAog
ICAgIH07CiAKICAgICBjb25zdCBnbDo6Q2FwcyAmcmVuZGVyZXJDYXBzICAgICAgICAgICAgICAg
ICAgPSBnZXROYXRpdmVDYXBzKCk7CkBAIC05NjgsNyArOTY0LDggQEAgZWdsOjpDb25maWdTZXQg
UmVuZGVyZXIxMTo6Z2VuZXJhdGVDb25maWdzKCkKICAgICBlZ2w6OkNvbmZpZ1NldCBjb25maWdz
OwogICAgIGZvciAoR0xlbnVtIGNvbG9yQnVmZmVySW50ZXJuYWxGb3JtYXQgOiBjb2xvckJ1ZmZl
ckZvcm1hdHMpCiAgICAgewotICAgICAgICBjb25zdCBnbDo6VGV4dHVyZUNhcHMgJmNvbG9yQnVm
ZmVyRm9ybWF0Q2FwcyA9IHJlbmRlcmVyVGV4dHVyZUNhcHMuZ2V0KGNvbG9yQnVmZmVySW50ZXJu
YWxGb3JtYXQpOworICAgICAgICBjb25zdCBnbDo6VGV4dHVyZUNhcHMgJmNvbG9yQnVmZmVyRm9y
bWF0Q2FwcyA9CisgICAgICAgICAgICByZW5kZXJlclRleHR1cmVDYXBzLmdldChjb2xvckJ1ZmZl
ckludGVybmFsRm9ybWF0KTsKICAgICAgICAgaWYgKCFjb2xvckJ1ZmZlckZvcm1hdENhcHMucmVu
ZGVyYWJsZSkKICAgICAgICAgewogICAgICAgICAgICAgY29udGludWU7CkBAIC0xMDAxLDcgKzk5
OCw3IEBAIGVnbDo6Q29uZmlnU2V0IFJlbmRlcmVyMTE6OmdlbmVyYXRlQ29uZmlncygpCiAgICAg
ICAgICAgICBjb25maWcuYWxwaGFTaXplICAgICAgICAgID0gY29sb3JCdWZmZXJGb3JtYXRJbmZv
LmFscGhhQml0czsKICAgICAgICAgICAgIGNvbmZpZy5hbHBoYU1hc2tTaXplICAgICAgPSAwOwog
ICAgICAgICAgICAgY29uZmlnLmJpbmRUb1RleHR1cmVSR0IgICA9IChjb2xvckJ1ZmZlckZvcm1h
dEluZm8uZm9ybWF0ID09IEdMX1JHQik7Ci0gICAgICAgICAgICBjb25maWcuYmluZFRvVGV4dHVy
ZVJHQkEgPSAoY29sb3JCdWZmZXJGb3JtYXRJbmZvLmZvcm1hdCA9PSBHTF9SR0JBIHx8CisgICAg
ICAgICAgICBjb25maWcuYmluZFRvVGV4dHVyZVJHQkEgID0gKGNvbG9yQnVmZmVyRm9ybWF0SW5m
by5mb3JtYXQgPT0gR0xfUkdCQSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbG9yQnVmZmVyRm9ybWF0SW5mby5mb3JtYXQgPT0gR0xfQkdSQV9FWFQpOwogICAg
ICAgICAgICAgY29uZmlnLmNvbG9yQnVmZmVyVHlwZSA9IEVHTF9SR0JfQlVGRkVSOwogICAgICAg
ICAgICAgY29uZmlnLmNvbmZpZ0NhdmVhdCAgICA9IEVHTF9OT05FOwpAQCAtMTAyOSwxMiArMTAy
NiwxMiBAQCBlZ2w6OkNvbmZpZ1NldCBSZW5kZXJlcjExOjpnZW5lcmF0ZUNvbmZpZ3MoKQogICAg
ICAgICAgICAgY29uZmlnLm1hdGNoTmF0aXZlUGl4bWFwID0gRUdMX05PTkU7CiAgICAgICAgICAg
ICBjb25maWcubWF4UEJ1ZmZlcldpZHRoICAgPSByZW5kZXJlckNhcHMubWF4MkRUZXh0dXJlU2l6
ZTsKICAgICAgICAgICAgIGNvbmZpZy5tYXhQQnVmZmVySGVpZ2h0ICA9IHJlbmRlcmVyQ2Fwcy5t
YXgyRFRleHR1cmVTaXplOwotICAgICAgICAgICAgY29uZmlnLm1heFBCdWZmZXJQaXhlbHMgID0g
cmVuZGVyZXJDYXBzLm1heDJEVGV4dHVyZVNpemUgKiByZW5kZXJlckNhcHMubWF4MkRUZXh0dXJl
U2l6ZTsKLSAgICAgICAgICAgIGNvbmZpZy5tYXhTd2FwSW50ZXJ2YWwgICA9IDQ7Ci0gICAgICAg
ICAgICBjb25maWcubWluU3dhcEludGVydmFsICAgPSAwOwotICAgICAgICAgICAgY29uZmlnLm5h
dGl2ZVJlbmRlcmFibGUgID0gRUdMX0ZBTFNFOwotICAgICAgICAgICAgY29uZmlnLm5hdGl2ZVZp
c3VhbElEICAgID0gMDsKLSAgICAgICAgICAgIGNvbmZpZy5uYXRpdmVWaXN1YWxUeXBlICA9IEVH
TF9OT05FOworICAgICAgICAgICAgY29uZmlnLm1heFBCdWZmZXJQaXhlbHMgPSByZW5kZXJlckNh
cHMubWF4MkRUZXh0dXJlU2l6ZSAqIHJlbmRlcmVyQ2Fwcy5tYXgyRFRleHR1cmVTaXplOworICAg
ICAgICAgICAgY29uZmlnLm1heFN3YXBJbnRlcnZhbCAgPSA0OworICAgICAgICAgICAgY29uZmln
Lm1pblN3YXBJbnRlcnZhbCAgPSAwOworICAgICAgICAgICAgY29uZmlnLm5hdGl2ZVJlbmRlcmFi
bGUgPSBFR0xfRkFMU0U7CisgICAgICAgICAgICBjb25maWcubmF0aXZlVmlzdWFsSUQgICA9IDA7
CisgICAgICAgICAgICBjb25maWcubmF0aXZlVmlzdWFsVHlwZSA9IEVHTF9OT05FOwogCiAgICAg
ICAgICAgICAvLyBDYW4ndCBzdXBwb3J0IEVTMyBhdCBhbGwgd2l0aG91dCBmZWF0dXJlIGxldmVs
IDEwLjEKICAgICAgICAgICAgIGNvbmZpZy5yZW5kZXJhYmxlVHlwZSA9IEVHTF9PUEVOR0xfRVMy
X0JJVDsKQEAgLTEwNDMsMTUgKzEwNDAsMTcgQEAgZWdsOjpDb25maWdTZXQgUmVuZGVyZXIxMTo6
Z2VuZXJhdGVDb25maWdzKCkKICAgICAgICAgICAgICAgICBjb25maWcucmVuZGVyYWJsZVR5cGUg
fD0gRUdMX09QRU5HTF9FUzNfQklUX0tIUjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
Y29uZmlnLnNhbXBsZUJ1ZmZlcnMgICAgICAgICA9IDA7ICAvLyBGSVhNRTogZW51bWVyYXRlIG11
bHRpLXNhbXBsaW5nCi0gICAgICAgICAgICBjb25maWcuc2FtcGxlcyAgICAgICAgICAgICAgID0g
MDsKLSAgICAgICAgICAgIGNvbmZpZy5zdGVuY2lsU2l6ZSAgICAgICAgICAgPSBkZXB0aFN0ZW5j
aWxCdWZmZXJGb3JtYXRJbmZvLnN0ZW5jaWxCaXRzOwotICAgICAgICAgICAgY29uZmlnLnN1cmZh
Y2VUeXBlICAgICAgICAgICA9IEVHTF9QQlVGRkVSX0JJVCB8IEVHTF9XSU5ET1dfQklUIHwgRUdM
X1NXQVBfQkVIQVZJT1JfUFJFU0VSVkVEX0JJVDsKKyAgICAgICAgICAgIGNvbmZpZy5zYW1wbGVC
dWZmZXJzID0gMDsgIC8vIEZJWE1FOiBlbnVtZXJhdGUgbXVsdGktc2FtcGxpbmcKKyAgICAgICAg
ICAgIGNvbmZpZy5zYW1wbGVzICAgICAgID0gMDsKKyAgICAgICAgICAgIGNvbmZpZy5zdGVuY2ls
U2l6ZSAgID0gZGVwdGhTdGVuY2lsQnVmZmVyRm9ybWF0SW5mby5zdGVuY2lsQml0czsKKyAgICAg
ICAgICAgIGNvbmZpZy5zdXJmYWNlVHlwZSA9IEVHTF9QQlVGRkVSX0JJVCB8IEVHTF9XSU5ET1df
QklUIHwgRUdMX1NXQVBfQkVIQVZJT1JfUFJFU0VSVkVEX0JJVDsKICAgICAgICAgICAgIGNvbmZp
Zy50cmFuc3BhcmVudFR5cGUgICAgICAgPSBFR0xfTk9ORTsKICAgICAgICAgICAgIGNvbmZpZy50
cmFuc3BhcmVudFJlZFZhbHVlICAgPSAwOwogICAgICAgICAgICAgY29uZmlnLnRyYW5zcGFyZW50
R3JlZW5WYWx1ZSA9IDA7CiAgICAgICAgICAgICBjb25maWcudHJhbnNwYXJlbnRCbHVlVmFsdWUg
ID0gMDsKICAgICAgICAgICAgIGNvbmZpZy5vcHRpbWFsT3JpZW50YXRpb24gICAgPSBvcHRpbWFs
U3VyZmFjZU9yaWVudGF0aW9uOworICAgICAgICAgICAgY29uZmlnLmNvbG9yQ29tcG9uZW50VHlw
ZSA9CisgICAgICAgICAgICAgICAgZ2xfZWdsOjpHTENvbXBvbmVudFR5cGVUb0VHTENvbG9yQ29t
cG9uZW50VHlwZShjb2xvckJ1ZmZlckZvcm1hdEluZm8uY29tcG9uZW50VHlwZSk7CiAKICAgICAg
ICAgICAgIGNvbmZpZ3MuYWRkKGNvbmZpZyk7CiAgICAgICAgIH0KQEAgLTEwNzAsOCArMTA2OSw5
IEBAIHZvaWQgUmVuZGVyZXIxMTo6Z2VuZXJhdGVEaXNwbGF5RXh0ZW5zaW9ucyhlZ2w6OkRpc3Bs
YXlFeHRlbnNpb25zICpvdXRFeHRlbnNpb25zCiAgICAgICAgIG91dEV4dGVuc2lvbnMtPmQzZFNo
YXJlSGFuZGxlQ2xpZW50QnVmZmVyICAgICA9IHRydWU7CiAgICAgICAgIG91dEV4dGVuc2lvbnMt
PnN1cmZhY2VEM0RUZXh0dXJlMkRTaGFyZUhhbmRsZSA9IHRydWU7CiAgICAgfQorICAgIG91dEV4
dGVuc2lvbnMtPmQzZFRleHR1cmVDbGllbnRCdWZmZXIgPSB0cnVlOwogCi0gICAgb3V0RXh0ZW5z
aW9ucy0+a2V5ZWRNdXRleCA9IHRydWU7CisgICAgb3V0RXh0ZW5zaW9ucy0+a2V5ZWRNdXRleCAg
ICAgICAgICA9IHRydWU7CiAgICAgb3V0RXh0ZW5zaW9ucy0+cXVlcnlTdXJmYWNlUG9pbnRlciA9
IHRydWU7CiAgICAgb3V0RXh0ZW5zaW9ucy0+d2luZG93Rml4ZWRTaXplICAgICA9IHRydWU7CiAK
QEAgLTExMDEsNiArMTEwMSwxMSBAQCB2b2lkIFJlbmRlcmVyMTE6OmdlbmVyYXRlRGlzcGxheUV4
dGVuc2lvbnMoZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucwogICAgIG91dEV4
dGVuc2lvbnMtPmZsZXhpYmxlU3VyZmFjZUNvbXBhdGliaWxpdHkgPSB0cnVlOwogICAgIG91dEV4
dGVuc2lvbnMtPmRpcmVjdENvbXBvc2l0aW9uICAgICAgICAgICAgPSAhIW1EQ29tcE1vZHVsZTsK
IAorICAgIC8vIENvbnRleHRzIGFyZSB2aXJ0dWFsaXplZCBzbyB0ZXh0dXJlcyBjYW4gYmUgc2hh
cmVkIGdsb2JhbGx5CisgICAgb3V0RXh0ZW5zaW9ucy0+ZGlzcGxheVRleHR1cmVTaGFyZUdyb3Vw
ID0gdHJ1ZTsKKworICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0ZUNvbnRleHRSb2J1c3RSZXNvdXJj
ZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKKwogICAgIC8vIGdldFN5bmNWYWx1ZXMgcmVxdWlyZXMg
ZGlyZWN0IGNvbXBvc2l0aW9uLgogICAgIG91dEV4dGVuc2lvbnMtPmdldFN5bmNWYWx1ZXMgPSBv
dXRFeHRlbnNpb25zLT5kaXJlY3RDb21wb3NpdGlvbjsKIH0KQEAgLTExMDgsNyArMTExMyw3IEBA
IHZvaWQgUmVuZGVyZXIxMTo6Z2VuZXJhdGVEaXNwbGF5RXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlF
eHRlbnNpb25zICpvdXRFeHRlbnNpb25zCiBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Zmx1c2goKQog
ewogICAgIG1EZXZpY2VDb250ZXh0LT5GbHVzaCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUmVu
ZGVyZXIxMTo6ZmluaXNoKCkKQEAgLTExMTgsMTQgKzExMjMsMTUgQEAgZ2w6OkVycm9yIFJlbmRl
cmVyMTE6OmZpbmlzaCgpCiAgICAgaWYgKCFtU3luY1F1ZXJ5KQogICAgIHsKICAgICAgICAgRDNE
MTFfUVVFUllfREVTQyBxdWVyeURlc2M7Ci0gICAgICAgIHF1ZXJ5RGVzYy5RdWVyeSA9IEQzRDEx
X1FVRVJZX0VWRU5UOworICAgICAgICBxdWVyeURlc2MuUXVlcnkgICAgID0gRDNEMTFfUVVFUllf
RVZFTlQ7CiAgICAgICAgIHF1ZXJ5RGVzYy5NaXNjRmxhZ3MgPSAwOwogCiAgICAgICAgIHJlc3Vs
dCA9IG1EZXZpY2UtPkNyZWF0ZVF1ZXJ5KCZxdWVyeURlc2MsICZtU3luY1F1ZXJ5KTsKICAgICAg
ICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1P
UlksICJGYWlsZWQgdG8gY3JlYXRlIGV2ZW50IHF1ZXJ5LCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0
KTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxl
ZCB0byBjcmVhdGUgZXZlbnQgcXVlcnksIHJlc3VsdDogMHglWC4iLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHQpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMTQxLDIxICsx
MTQ3LDI0IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpmaW5pc2goKQogICAgICAgICByZXN1bHQg
PSBtRGV2aWNlQ29udGV4dC0+R2V0RGF0YShtU3luY1F1ZXJ5LCBOVUxMLCAwLCBmbGFncyk7CiAg
ICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGdldCBldmVudCBxdWVyeSBk
YXRhLCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBnZXQgZXZlbnQgcXVlcnkgZGF0YSwgcmVz
dWx0OiAweCVYLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7CiAgICAg
ICAgIH0KIAotICAgICAgICAvLyBLZWVwIHBvbGxpbmcsIGJ1dCBhbGxvdyBvdGhlciB0aHJlYWRz
IHRvIGRvIHNvbWV0aGluZyB1c2VmdWwgZmlyc3QKLSAgICAgICAgU2NoZWR1bGVZaWVsZCgpOwor
ICAgICAgICBpZiAocmVzdWx0ID09IFNfRkFMU0UpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8v
IEtlZXAgcG9sbGluZywgYnV0IGFsbG93IG90aGVyIHRocmVhZHMgdG8gZG8gc29tZXRoaW5nIHVz
ZWZ1bCBmaXJzdAorICAgICAgICAgICAgU2NoZWR1bGVZaWVsZCgpOworICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHRlc3REZXZpY2VMb3N0KCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1EaXNw
bGF5LT5ub3RpZnlEZXZpY2VMb3N0KCk7CiAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X09VVF9PRl9NRU1PUlksICJEZXZpY2Ugd2FzIGxvc3Qgd2hpbGUgd2FpdGluZyBmb3Igc3luYy4i
KTsKICAgICAgICAgfQotICAgIH0KLSAgICB3aGlsZSAocmVzdWx0ID09IFNfRkFMU0UpOworICAg
IH0gd2hpbGUgKHJlc3VsdCA9PSBTX0ZBTFNFKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBib29sIFJlbmRlcmVy
MTE6OmlzVmFsaWROYXRpdmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpIGNvbnN0
CkBAIC0xMTgxLDE5ICsxMTkwLDEyNCBAQCBOYXRpdmVXaW5kb3dEM0QgKlJlbmRlcmVyMTE6OmNy
ZWF0ZU5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKICNlbmRpZgogfQog
CitlZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmdldEQzRFRleHR1cmVJbmZvKElVbmtub3duICpkM2RU
ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQg
KndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQg
KmhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
ICpmYm9Gb3JtYXQpIGNvbnN0Cit7CisgICAgSUQzRDExVGV4dHVyZTJEICp0ZXh0dXJlID0gZDNk
MTE6OkR5bmFtaWNDYXN0Q29tT2JqZWN0PElEM0QxMVRleHR1cmUyRD4oZDNkVGV4dHVyZSk7Cisg
ICAgaWYgKHRleHR1cmUgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVy
cm9yKEVHTF9CQURfUEFSQU1FVEVSLCAiY2xpZW50IGJ1ZmZlciBpcyBub3QgYSBJRDNEMTFUZXh0
dXJlMkQiKTsKKyAgICB9CisKKyAgICBJRDNEMTFEZXZpY2UgKnRleHR1cmVEZXZpY2UgPSBudWxs
cHRyOworICAgIHRleHR1cmUtPkdldERldmljZSgmdGV4dHVyZURldmljZSk7CisgICAgaWYgKHRl
eHR1cmVEZXZpY2UgIT0gbURldmljZSkKKyAgICB7CisgICAgICAgIFNhZmVSZWxlYXNlKHRleHR1
cmUpOworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgIlRleHR1
cmUncyBkZXZpY2UgZG9lcyBub3QgbWF0Y2guIik7CisgICAgfQorICAgIFNhZmVSZWxlYXNlKHRl
eHR1cmVEZXZpY2UpOworCisgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVzYyA9IHswfTsKKyAg
ICB0ZXh0dXJlLT5HZXREZXNjKCZkZXNjKTsKKyAgICBTYWZlUmVsZWFzZSh0ZXh0dXJlKTsKKwor
ICAgIGlmICh3aWR0aCkKKyAgICB7CisgICAgICAgICp3aWR0aCA9IHN0YXRpY19jYXN0PEVHTGlu
dD4oZGVzYy5XaWR0aCk7CisgICAgfQorICAgIGlmIChoZWlnaHQpCisgICAgeworICAgICAgICAq
aGVpZ2h0ID0gc3RhdGljX2Nhc3Q8RUdMaW50PihkZXNjLkhlaWdodCk7CisgICAgfQorCisgICAg
Ly8gRnJvbSB0YWJsZSBlZ2wucmVzdHJpY3Rpb25zIGluIEVHTF9BTkdMRV9kM2RfdGV4dHVyZV9j
bGllbnRfYnVmZmVyLgorICAgIHN3aXRjaCAoZGVzYy5Gb3JtYXQpCisgICAgeworICAgICAgICBj
YXNlIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOgorICAgICAgICBjYXNlIERYR0lfRk9STUFU
X1I4RzhCOEE4X1VOT1JNX1NSR0I6CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThf
VU5PUk06CisgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk1fU1JHQjoKKyAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQ6CisgICAgICAgIGNhc2Ug
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOgorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfUEFS
QU1FVEVSLCAiVW5rbm93biBjbGllbnQgYnVmZmVyIHRleHR1cmUgZm9ybWF0OiAldS4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYy5Gb3JtYXQpOworICAgIH0KKworICAgIGlm
IChmYm9Gb3JtYXQpCisgICAgeworICAgICAgICBjb25zdCBhbmdsZTo6Rm9ybWF0ICZhbmdsZUZv
cm1hdCA9IGQzZDExX2FuZ2xlOjpHZXRGb3JtYXQoZGVzYy5Gb3JtYXQpOworICAgICAgICAqZmJv
Rm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICA9IGFuZ2xlRm9ybWF0LmZib0ltcGxlbWVudGF0
aW9uSW50ZXJuYWxGb3JtYXQ7CisgICAgfQorCisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NV
Q0NFU1MpOworfQorCitlZ2w6OkVycm9yIFJlbmRlcmVyMTE6OnZhbGlkYXRlU2hhcmVIYW5kbGUo
Y29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBIQU5ETEUgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIGNv
bnN0Cit7CisgICAgaWYgKHNoYXJlSGFuZGxlID09IG51bGxwdHIpCisgICAgeworICAgICAgICBy
ZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgIk5VTEwgc2hhcmUgaGFuZGxlLiIp
OworICAgIH0KKworICAgIElEM0QxMVJlc291cmNlICp0ZW1wUmVzb3VyY2UxMSA9IG51bGxwdHI7
CisgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5PcGVuU2hhcmVkUmVzb3VyY2Uoc2hhcmVI
YW5kbGUsIF9fdXVpZG9mKElEM0QxMVJlc291cmNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKikmdGVtcFJlc291cmNlMTEpOworICAg
IGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVH
TF9CQURfUEFSQU1FVEVSLCAiRmFpbGVkIHRvIG9wZW4gc2hhcmUgaGFuZGxlLCByZXN1bHQ6IDB4
JVguIiwgcmVzdWx0KTsKKyAgICB9CisKKyAgICBJRDNEMTFUZXh0dXJlMkQgKnRleHR1cmUyRCA9
IGQzZDExOjpEeW5hbWljQ2FzdENvbU9iamVjdDxJRDNEMTFUZXh0dXJlMkQ+KHRlbXBSZXNvdXJj
ZTExKTsKKyAgICBTYWZlUmVsZWFzZSh0ZW1wUmVzb3VyY2UxMSk7CisKKyAgICBpZiAodGV4dHVy
ZTJEID09IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFE
X1BBUkFNRVRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBxdWVyeSBJ
RDNEMTFUZXh0dXJlMkQgb2JqZWN0IGZyb20gc2hhcmUgaGFuZGxlLiIpOworICAgIH0KKworICAg
IEQzRDExX1RFWFRVUkUyRF9ERVNDIGRlc2MgPSB7MH07CisgICAgdGV4dHVyZTJELT5HZXREZXNj
KCZkZXNjKTsKKyAgICBTYWZlUmVsZWFzZSh0ZXh0dXJlMkQpOworCisgICAgRUdMaW50IHdpZHRo
ICA9IGF0dHJpYnMuZ2V0QXNJbnQoRUdMX1dJRFRILCAwKTsKKyAgICBFR0xpbnQgaGVpZ2h0ID0g
YXR0cmlicy5nZXRBc0ludChFR0xfSEVJR0hULCAwKTsKKyAgICBBU1NFUlQod2lkdGggIT0gMCAm
JiBoZWlnaHQgIT0gMCk7CisKKyAgICBjb25zdCBkM2QxMTo6Rm9ybWF0ICZiYWNrYnVmZmVyRm9y
bWF0SW5mbyA9CisgICAgICAgIGQzZDExOjpGb3JtYXQ6OkdldChjb25maWctPnJlbmRlclRhcmdl
dEZvcm1hdCwgZ2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSk7CisKKyAgICBpZiAoZGVzYy5XaWR0
aCAhPSBzdGF0aWNfY2FzdDxVSU5UPih3aWR0aCkgfHwgZGVzYy5IZWlnaHQgIT0gc3RhdGljX2Nh
c3Q8VUlOVD4oaGVpZ2h0KSB8fAorICAgICAgICBkZXNjLkZvcm1hdCAhPSBiYWNrYnVmZmVyRm9y
bWF0SW5mby50ZXhGb3JtYXQgfHwgZGVzYy5NaXBMZXZlbHMgIT0gMSB8fCBkZXNjLkFycmF5U2l6
ZSAhPSAxKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9QQVJBTUVU
RVIsICJJbnZhbGlkIHRleHR1cmUgcGFyYW1ldGVycyBpbiBzaGFyZSBoYW5kbGUgdGV4dHVyZS4i
KTsKKyAgICB9CisKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKIFN3
YXBDaGFpbkQzRCAqUmVuZGVyZXIxMTo6Y3JlYXRlU3dhcENoYWluKE5hdGl2ZVdpbmRvd0QzRCAq
bmF0aXZlV2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SEFORExFIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSVVua25vd24gKmQzZFRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBvcmllbnRhdGlvbikK
IHsKLSAgICByZXR1cm4gbmV3IFN3YXBDaGFpbjExKHRoaXMsIEdldEFzPE5hdGl2ZVdpbmRvdzEx
PihuYXRpdmVXaW5kb3cpLCBzaGFyZUhhbmRsZSwgYmFja0J1ZmZlckZvcm1hdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlcHRoQnVmZmVyRm9ybWF0LCBvcmllbnRhdGlvbik7CisgICAg
cmV0dXJuIG5ldyBTd2FwQ2hhaW4xMSh0aGlzLCBHZXRBczxOYXRpdmVXaW5kb3cxMT4obmF0aXZl
V2luZG93KSwgc2hhcmVIYW5kbGUsIGQzZFRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBiYWNrQnVmZmVyRm9ybWF0LCBkZXB0aEJ1ZmZlckZvcm1hdCwgb3JpZW50YXRpb24pOwog
fQogCiB2b2lkICpSZW5kZXJlcjExOjpnZXREM0REZXZpY2UoKQogewotICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihtRGV2aWNlKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkICo+KG1EZXZpY2UpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Z2VuZXJhdGVT
d2l6emxlKGdsOjpUZXh0dXJlICp0ZXh0dXJlKQpAQCAtMTIwOCwxMyArMTMyMiwxMyBAQCBnbDo6
RXJyb3IgUmVuZGVyZXIxMTo6Z2VuZXJhdGVTd2l6emxlKGdsOjpUZXh0dXJlICp0ZXh0dXJlKQog
CiAgICAgICAgIGlmICh0ZXhTdG9yYWdlKQogICAgICAgICB7Ci0gICAgICAgICAgICBUZXh0dXJl
U3RvcmFnZTExICpzdG9yYWdlMTEgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTExPih0ZXhTdG9yYWdl
KTsKKyAgICAgICAgICAgIFRleHR1cmVTdG9yYWdlMTEgKnN0b3JhZ2UxMSAgICAgICAgICA9IEdl
dEFzPFRleHR1cmVTdG9yYWdlMTE+KHRleFN0b3JhZ2UpOwogICAgICAgICAgICAgY29uc3QgZ2w6
OlRleHR1cmVTdGF0ZSAmdGV4dHVyZVN0YXRlID0gdGV4dHVyZS0+Z2V0VGV4dHVyZVN0YXRlKCk7
CiAgICAgICAgICAgICBBTkdMRV9UUlkoc3RvcmFnZTExLT5nZW5lcmF0ZVN3aXp6bGVzKHRleHR1
cmVTdGF0ZS5nZXRTd2l6emxlU3RhdGUoKSkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9
CiAKIGdsOjpFcnJvciBSZW5kZXJlcjExOjpnZW5lcmF0ZVN3aXp6bGVzKGNvbnN0IGdsOjpDb250
ZXh0U3RhdGUgJmRhdGEsIGdsOjpTYW1wbGVyVHlwZSB0eXBlKQpAQCAtMTI1Miw2ICsxMzY2LDcg
QEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OnNldFNhbXBsZXJTdGF0ZShnbDo6U2FtcGxlclR5cGUg
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmUg
KnRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSkKIHsKKyNpZiAhZGVmaW5lZChOREVCVUcpCiAg
ICAgLy8gTWFrZSBzdXJlIHRvIGFkZCB0aGUgbGV2ZWwgb2Zmc2V0IGZvciBvdXIgdGlueSBjb21w
cmVzc2VkIHRleHR1cmUgd29ya2Fyb3VuZAogICAgIFRleHR1cmVEM0QgKnRleHR1cmVEM0QgPSBH
ZXRJbXBsQXM8VGV4dHVyZUQzRD4odGV4dHVyZSk7CiAKQEAgLTEyNjAsNiArMTM3NSw3IEBAIGds
OjpFcnJvciBSZW5kZXJlcjExOjpzZXRTYW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUs
CiAKICAgICAvLyBTdG9yYWdlIHNob3VsZCBleGlzdCwgdGV4dHVyZSBzaG91bGQgYmUgY29tcGxl
dGUKICAgICBBU1NFUlQoc3RvcmFnZSk7CisjZW5kaWYgIC8vICFkZWZpbmVkKE5ERUJVRykKIAog
ICAgIC8vIFNhbXBsZXIgbWV0YWRhdGEgdGhhdCdzIHBhc3NlZCB0byBzaGFkZXJzIGluIHVuaWZv
cm1zIGlzIHN0b3JlZCBzZXBhcmF0ZWx5IGZyb20gcmVzdCBvZiB0aGUKICAgICAvLyBzYW1wbGVy
IHN0YXRlIHNpbmNlIGhhdmluZyBpdCBpbiBjb250aWd1b3VzIG1lbW9yeSBtYWtlcyBpdCBwb3Nz
aWJsZSB0byBtZW1jcHkgdG8gYSBjb25zdGFudApAQCAtMTMwNiw3ICsxNDIyLDggQEAgZ2w6OkVy
cm9yIFJlbmRlcmVyMTE6OnNldFNhbXBsZXJTdGF0ZShnbDo6U2FtcGxlclR5cGUgdHlwZSwKIAog
ICAgICAgICBtZXRhZGF0YSA9ICZtU2FtcGxlck1ldGFkYXRhVlM7CiAgICAgfQotICAgIGVsc2Ug
VU5SRUFDSEFCTEUoKTsKKyAgICBlbHNlCisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAKICAgICBB
U1NFUlQobWV0YWRhdGEgIT0gbnVsbHB0cik7CiAgICAgbWV0YWRhdGEtPnVwZGF0ZShpbmRleCwg
KnRleHR1cmUpOwpAQCAtMTMzMiw4ICsxNDQ5LDggQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OnNl
dFRleHR1cmUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgZ2w6OlRleHR1cmUgKnQK
IAogICAgICAgICBBTkdMRV9UUlkoc3RvcmFnZTExLT5nZXRTUlYodGV4dHVyZS0+Z2V0VGV4dHVy
ZVN0YXRlKCksICZ0ZXh0dXJlU1JWKSk7CiAKLSAgICAgICAgLy8gSWYgd2UgZ2V0IE5VTEwgYmFj
ayBmcm9tIGdldFNSViBoZXJlLCBzb21ldGhpbmcgd2VudCB3cm9uZyBpbiB0aGUgdGV4dHVyZSBj
bGFzcyBhbmQgd2UncmUgdW5leHBlY3RlZGx5Ci0gICAgICAgIC8vIG1pc3NpbmcgdGhlIHNoYWRl
ciByZXNvdXJjZSB2aWV3CisgICAgICAgIC8vIElmIHdlIGdldCBOVUxMIGJhY2sgZnJvbSBnZXRT
UlYgaGVyZSwgc29tZXRoaW5nIHdlbnQgd3JvbmcgaW4gdGhlIHRleHR1cmUgY2xhc3MgYW5kIHdl
J3JlCisgICAgICAgIC8vIHVuZXhwZWN0ZWRseSBtaXNzaW5nIHRoZSBzaGFkZXIgcmVzb3VyY2Ug
dmlldwogICAgICAgICBBU1NFUlQodGV4dHVyZVNSViAhPSBOVUxMKTsKIAogICAgICAgICB0ZXh0
dXJlSW1wbC0+cmVzZXREaXJ0eSgpOwpAQCAtMTM0NiwxNCArMTQ2MywxNSBAQCBnbDo6RXJyb3Ig
UmVuZGVyZXIxMTo6c2V0VGV4dHVyZShnbDo6U2FtcGxlclR5cGUgdHlwZSwgaW50IGluZGV4LCBn
bDo6VGV4dHVyZSAqdAogCiAgICAgbVN0YXRlTWFuYWdlci5zZXRTaGFkZXJSZXNvdXJjZSh0eXBl
LCBpbmRleCwgdGV4dHVyZVNSVik7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFJlbmRlcmVyMTE6
OnNldFVuaWZvcm1CdWZmZXJzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0xpbnQ+
ICZ2ZXJ0ZXhVbmlmb3JtQnVmZmVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxHTGludD4gJmZyYWdtZW50VW5pZm9ybUJ1ZmZlcnMp
CiB7Ci0gICAgZm9yIChzaXplX3QgdW5pZm9ybUJ1ZmZlckluZGV4ID0gMDsgdW5pZm9ybUJ1ZmZl
ckluZGV4IDwgdmVydGV4VW5pZm9ybUJ1ZmZlcnMuc2l6ZSgpOyB1bmlmb3JtQnVmZmVySW5kZXgr
KykKKyAgICBmb3IgKHNpemVfdCB1bmlmb3JtQnVmZmVySW5kZXggPSAwOyB1bmlmb3JtQnVmZmVy
SW5kZXggPCB2ZXJ0ZXhVbmlmb3JtQnVmZmVycy5zaXplKCk7CisgICAgICAgICB1bmlmb3JtQnVm
ZmVySW5kZXgrKykKICAgICB7CiAgICAgICAgIEdMaW50IGJpbmRpbmcgPSB2ZXJ0ZXhVbmlmb3Jt
QnVmZmVyc1t1bmlmb3JtQnVmZmVySW5kZXhdOwogCkBAIC0xMzc0LDEwICsxNDkyLDEyIEBAIGds
OjpFcnJvciBSZW5kZXJlcjExOjpzZXRVbmlmb3JtQnVmZmVycyhjb25zdCBnbDo6Q29udGV4dFN0
YXRlICZkYXRhLAogCiAgICAgICAgIEJ1ZmZlcjExICpidWZmZXJTdG9yYWdlICAgICAgPSBHZXRJ
bXBsQXM8QnVmZmVyMTE+KHVuaWZvcm1CdWZmZXIuZ2V0KCkpOwogICAgICAgICBJRDNEMTFCdWZm
ZXIgKmNvbnN0YW50QnVmZmVyID0gbnVsbHB0cjsKKyAgICAgICAgVUlOVCBmaXJzdENvbnN0YW50
ICAgICAgICAgICA9IDA7CisgICAgICAgIFVJTlQgbnVtQ29uc3RhbnRzICAgICAgICAgICAgPSAw
OwogCi0gICAgICAgIEFOR0xFX1RSWV9SRVNVTFQoCi0gICAgICAgICAgICBidWZmZXJTdG9yYWdl
LT5nZXRDb25zdGFudEJ1ZmZlclJhbmdlKHVuaWZvcm1CdWZmZXJPZmZzZXQsIHVuaWZvcm1CdWZm
ZXJTaXplKSwKLSAgICAgICAgICAgIGNvbnN0YW50QnVmZmVyKTsKKyAgICAgICAgQU5HTEVfVFJZ
KGJ1ZmZlclN0b3JhZ2UtPmdldENvbnN0YW50QnVmZmVyUmFuZ2UodW5pZm9ybUJ1ZmZlck9mZnNl
dCwgdW5pZm9ybUJ1ZmZlclNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZjb25zdGFudEJ1ZmZlciwgJmZpcnN0Q29uc3RhbnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZu
dW1Db25zdGFudHMpKTsKIAogICAgICAgICBpZiAoIWNvbnN0YW50QnVmZmVyKQogICAgICAgICB7
CkBAIC0xMzg4LDExICsxNTA4LDkgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OnNldFVuaWZvcm1C
dWZmZXJzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICBtQ3VycmVu
dENvbnN0YW50QnVmZmVyVlNPZmZzZXRbdW5pZm9ybUJ1ZmZlckluZGV4XSAhPSB1bmlmb3JtQnVm
ZmVyT2Zmc2V0IHx8CiAgICAgICAgICAgICBtQ3VycmVudENvbnN0YW50QnVmZmVyVlNTaXplW3Vu
aWZvcm1CdWZmZXJJbmRleF0gIT0gdW5pZm9ybUJ1ZmZlclNpemUpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChtUmVuZGVyZXIxMURldmljZUNhcHMuc3VwcG9ydHNDb25zdGFudEJ1ZmZlck9m
ZnNldHMgJiYgdW5pZm9ybUJ1ZmZlclNpemUgIT0gMCkKKyAgICAgICAgICAgIGlmIChmaXJzdENv
bnN0YW50ICE9IDAgJiYgdW5pZm9ybUJ1ZmZlclNpemUgIT0gMCkKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBVSU5UIGZpcnN0Q29uc3RhbnQgPSAwLCBudW1Db25zdGFudHMgPSAwOwot
ICAgICAgICAgICAgICAgIENhbGN1bGF0ZUNvbnN0YW50QnVmZmVyUGFyYW1zKHVuaWZvcm1CdWZm
ZXJPZmZzZXQsIHVuaWZvcm1CdWZmZXJTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZmaXJzdENvbnN0YW50LCAmbnVtQ29uc3RhbnRzKTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQobnVtQ29uc3RhbnRzICE9IDApOwogICAgICAgICAgICAgICAgIG1E
ZXZpY2VDb250ZXh0MS0+VlNTZXRDb25zdGFudEJ1ZmZlcnMxKAogICAgICAgICAgICAgICAgICAg
ICBnZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1CdWZmZXJzKCkgKwogICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih1bmlmb3JtQnVmZmVySW5kZXgpLApAQCAt
MTQxMiw3ICsxNTMwLDggQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OnNldFVuaWZvcm1CdWZmZXJz
KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBm
b3IgKHNpemVfdCB1bmlmb3JtQnVmZmVySW5kZXggPSAwOyB1bmlmb3JtQnVmZmVySW5kZXggPCBm
cmFnbWVudFVuaWZvcm1CdWZmZXJzLnNpemUoKTsgdW5pZm9ybUJ1ZmZlckluZGV4KyspCisgICAg
Zm9yIChzaXplX3QgdW5pZm9ybUJ1ZmZlckluZGV4ID0gMDsgdW5pZm9ybUJ1ZmZlckluZGV4IDwg
ZnJhZ21lbnRVbmlmb3JtQnVmZmVycy5zaXplKCk7CisgICAgICAgICB1bmlmb3JtQnVmZmVySW5k
ZXgrKykKICAgICB7CiAgICAgICAgIEdMaW50IGJpbmRpbmcgPSBmcmFnbWVudFVuaWZvcm1CdWZm
ZXJzW3VuaWZvcm1CdWZmZXJJbmRleF07CiAKQEAgLTE0MzMsMTAgKzE1NTIsMTIgQEAgZ2w6OkVy
cm9yIFJlbmRlcmVyMTE6OnNldFVuaWZvcm1CdWZmZXJzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUg
JmRhdGEsCiAKICAgICAgICAgQnVmZmVyMTEgKmJ1ZmZlclN0b3JhZ2UgICAgICA9IEdldEltcGxB
czxCdWZmZXIxMT4odW5pZm9ybUJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIElEM0QxMUJ1ZmZlciAq
Y29uc3RhbnRCdWZmZXIgPSBudWxscHRyOworICAgICAgICBVSU5UIGZpcnN0Q29uc3RhbnQgICAg
ICAgICAgID0gMDsKKyAgICAgICAgVUlOVCBudW1Db25zdGFudHMgICAgICAgICAgICA9IDA7CiAK
LSAgICAgICAgQU5HTEVfVFJZX1JFU1VMVCgKLSAgICAgICAgICAgIGJ1ZmZlclN0b3JhZ2UtPmdl
dENvbnN0YW50QnVmZmVyUmFuZ2UodW5pZm9ybUJ1ZmZlck9mZnNldCwgdW5pZm9ybUJ1ZmZlclNp
emUpLAotICAgICAgICAgICAgY29uc3RhbnRCdWZmZXIpOworICAgICAgICBBTkdMRV9UUlkoYnVm
ZmVyU3RvcmFnZS0+Z2V0Q29uc3RhbnRCdWZmZXJSYW5nZSh1bmlmb3JtQnVmZmVyT2Zmc2V0LCB1
bmlmb3JtQnVmZmVyU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmNvbnN0YW50QnVmZmVyLCAmZmlyc3RDb25zdGFudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm51bUNv
bnN0YW50cykpOwogCiAgICAgICAgIGlmICghY29uc3RhbnRCdWZmZXIpCiAgICAgICAgIHsKQEAg
LTE0NDcsMTEgKzE1NjgsOCBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6c2V0VW5pZm9ybUJ1ZmZl
cnMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgIG1DdXJyZW50Q29u
c3RhbnRCdWZmZXJQU09mZnNldFt1bmlmb3JtQnVmZmVySW5kZXhdICE9IHVuaWZvcm1CdWZmZXJP
ZmZzZXQgfHwKICAgICAgICAgICAgIG1DdXJyZW50Q29uc3RhbnRCdWZmZXJQU1NpemVbdW5pZm9y
bUJ1ZmZlckluZGV4XSAhPSB1bmlmb3JtQnVmZmVyU2l6ZSkKICAgICAgICAgewotICAgICAgICAg
ICAgaWYgKG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5zdXBwb3J0c0NvbnN0YW50QnVmZmVyT2Zmc2V0
cyAmJiB1bmlmb3JtQnVmZmVyU2l6ZSAhPSAwKQorICAgICAgICAgICAgaWYgKGZpcnN0Q29uc3Rh
bnQgIT0gMCAmJiB1bmlmb3JtQnVmZmVyU2l6ZSAhPSAwKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIFVJTlQgZmlyc3RDb25zdGFudCA9IDAsIG51bUNvbnN0YW50cyA9IDA7Ci0gICAg
ICAgICAgICAgICAgQ2FsY3VsYXRlQ29uc3RhbnRCdWZmZXJQYXJhbXModW5pZm9ybUJ1ZmZlck9m
ZnNldCwgdW5pZm9ybUJ1ZmZlclNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmZpcnN0Q29uc3RhbnQsICZudW1Db25zdGFudHMpOwogICAgICAgICAg
ICAgICAgIG1EZXZpY2VDb250ZXh0MS0+UFNTZXRDb25zdGFudEJ1ZmZlcnMxKAogICAgICAgICAg
ICAgICAgICAgICBnZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybUJ1ZmZlcnMoKSArCiAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHVuaWZvcm1CdWZmZXJJ
bmRleCksCkBAIC0xNDc0LDE1ICsxNTkyLDE2IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpzZXRV
bmlmb3JtQnVmZmVycyhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgUmVuZGVyZXIxMTo6dXBkYXRlU3RhdGUoY29u
c3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgR0xlbnVtIGRyYXdNb2RlKQorZ2w6OkVycm9yIFJl
bmRlcmVyMTE6OnVwZGF0ZVN0YXRlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwgR0xlbnVtIGRy
YXdNb2RlKQogeworICAgIGNvbnN0IGF1dG8gJmRhdGEgICAgPSBjb250ZXh0SW1wbC0+Z2V0Q29u
dGV4dFN0YXRlKCk7CiAgICAgY29uc3QgYXV0byAmZ2xTdGF0ZSA9IGRhdGEuZ2V0U3RhdGUoKTsK
IAogICAgIC8vIEFwcGxpZXMgdGhlIHJlbmRlciB0YXJnZXQgc3VyZmFjZSwgZGVwdGggc3RlbmNp
bCBzdXJmYWNlLCB2aWV3cG9ydCByZWN0YW5nbGUgYW5kCiAgICAgLy8gc2Npc3NvciByZWN0YW5n
bGUgdG8gdGhlIHJlbmRlcmVyCiAgICAgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGds
U3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7Ci0gICAgQVNTRVJUKGZyYW1lYnVmZmVyICYmICFm
cmFtZWJ1ZmZlci0+aGFzQW55RGlydHlCaXQoKSAmJiBmcmFtZWJ1ZmZlci0+Y29tcGxldGUoZGF0
YSkpOwotICAgIEFOR0xFX1RSWShhcHBseVJlbmRlclRhcmdldChmcmFtZWJ1ZmZlcikpOworICAg
IEFTU0VSVChmcmFtZWJ1ZmZlciAmJiAhZnJhbWVidWZmZXItPmhhc0FueURpcnR5Qml0KCkgJiYg
ZnJhbWVidWZmZXItPmNhY2hlZENvbXBsZXRlKCkpOworICAgIEFOR0xFX1RSWShtU3RhdGVNYW5h
Z2VyLnN5bmNGcmFtZWJ1ZmZlcihjb250ZXh0SW1wbCwgZnJhbWVidWZmZXIpKTsKIAogICAgIC8v
IFNldCB0aGUgcHJlc2VudCBwYXRoIHN0YXRlCiAgICAgYXV0byBmaXJzdENvbG9yQXR0YWNobWVu
dCAgICAgICAgPSBmcmFtZWJ1ZmZlci0+Z2V0Rmlyc3RDb2xvcmJ1ZmZlcigpOwpAQCAtMTQ5Nyw3
ICsxNjE2LDE3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjp1cGRhdGVTdGF0ZShjb25zdCBnbDo6
Q29udGV4dFN0YXRlICZkYXRhLCBHTGVudW0gZHJhd01vZGUpCiAgICAgbVN0YXRlTWFuYWdlci5z
ZXRTY2lzc29yUmVjdGFuZ2xlKGdsU3RhdGUuZ2V0U2Npc3NvcigpLCBnbFN0YXRlLmlzU2Npc3Nv
clRlc3RFbmFibGVkKCkpOwogCiAgICAgLy8gQXBwbHlpbmcgcmFzdGVyaXplciBzdGF0ZSB0byBE
M0QxMSBkZXZpY2UKLSAgICBpbnQgc2FtcGxlcyAgICAgICAgICAgICAgICAgICAgPSBmcmFtZWJ1
ZmZlci0+Z2V0U2FtcGxlcyhkYXRhKTsKKyAgICAvLyBTaW5jZSBmcmFtZWJ1ZmZlci0+Z2V0U2Ft
cGxlcyB3aWxsIHJldHVybiB0aGUgb3JpZ2luYWwgc2FtcGxlcyB3aGljaCBtYXkgYmUgZGlmZmVy
ZW50IHdpdGgKKyAgICAvLyB0aGUgc2FtcGxlIGNvdW50cyB0aGF0IHdlIHNldCBpbiByZW5kZXIg
dGFyZ2V0IHZpZXcsIGhlcmUgd2UgdXNlIHJlbmRlclRhcmdldC0+Z2V0U2FtcGxlcyB0bworICAg
IC8vIGdldCB0aGUgYWN0dWFsIHNhbXBsZXMuCisgICAgR0xzaXplaSBzYW1wbGVzID0gMDsKKyAg
ICBpZiAoZmlyc3RDb2xvckF0dGFjaG1lbnQpCisgICAgeworICAgICAgICBBU1NFUlQoZmlyc3RD
b2xvckF0dGFjaG1lbnQtPmlzQXR0YWNoZWQoKSk7CisgICAgICAgIFJlbmRlclRhcmdldDExICpy
ZW5kZXJUYXJnZXQgPSBudWxscHRyOworICAgICAgICBBTkdMRV9UUlkoZmlyc3RDb2xvckF0dGFj
aG1lbnQtPmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0KSk7CisgICAgICAgIHNhbXBsZXMg
PSByZW5kZXJUYXJnZXQtPmdldFNhbXBsZXMoKTsKKyAgICB9CiAgICAgZ2w6OlJhc3Rlcml6ZXJT
dGF0ZSByYXN0ZXJpemVyID0gZ2xTdGF0ZS5nZXRSYXN0ZXJpemVyU3RhdGUoKTsKICAgICByYXN0
ZXJpemVyLnBvaW50RHJhd01vZGUgICAgICAgPSAoZHJhd01vZGUgPT0gR0xfUE9JTlRTKTsKICAg
ICByYXN0ZXJpemVyLm11bHRpU2FtcGxlICAgICAgICAgPSAoc2FtcGxlcyAhPSAwKTsKQEAgLTE1
MjMsMjIgKzE2NTIsNDQgQEAgYm9vbCBSZW5kZXJlcjExOjphcHBseVByaW1pdGl2ZVR5cGUoR0xl
bnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIGJvb2wgdXNlc1BvaW50U2kKIAogICAgIHN3aXRjaCAo
bW9kZSkKICAgICB7Ci0gICAgICBjYXNlIEdMX1BPSU5UUzogICAgICAgICBwcmltaXRpdmVUb3Bv
bG9neSA9IEQzRDExX1BSSU1JVElWRV9UT1BPTE9HWV9QT0lOVExJU1Q7ICAgbWluQ291bnQgPSAx
OyBicmVhazsKLSAgICAgIGNhc2UgR0xfTElORVM6ICAgICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5
ID0gRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9MSU5FTElTVDsgICAgICBtaW5Db3VudCA9IDI7IGJy
ZWFrOwotICAgICAgY2FzZSBHTF9MSU5FX0xPT1A6ICAgICAgcHJpbWl0aXZlVG9wb2xvZ3kgPSBE
M0RfUFJJTUlUSVZFX1RPUE9MT0dZX0xJTkVTVFJJUDsgICAgIG1pbkNvdW50ID0gMjsgYnJlYWs7
Ci0gICAgICBjYXNlIEdMX0xJTkVfU1RSSVA6ICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9Q
UklNSVRJVkVfVE9QT0xPR1lfTElORVNUUklQOyAgICAgbWluQ291bnQgPSAyOyBicmVhazsKLSAg
ICAgIGNhc2UgR0xfVFJJQU5HTEVTOiAgICAgIHByaW1pdGl2ZVRvcG9sb2d5ID0gRDNEX1BSSU1J
VElWRV9UT1BPTE9HWV9UUklBTkdMRUxJU1Q7ICBtaW5Db3VudCA9IDM7IGJyZWFrOwotICAgICAg
Y2FzZSBHTF9UUklBTkdMRV9TVFJJUDogcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZF
X1RPUE9MT0dZX1RSSUFOR0xFU1RSSVA7IG1pbkNvdW50ID0gMzsgYnJlYWs7Ci0gICAgICAgICAg
Ly8gZW11bGF0ZSBmYW5zIHZpYSByZXdyaXRpbmcgaW5kZXggYnVmZmVyCi0gICAgICBjYXNlIEdM
X1RSSUFOR0xFX0ZBTjogICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xP
R1lfVFJJQU5HTEVMSVNUOyAgbWluQ291bnQgPSAzOyBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2Fz
ZSBHTF9QT0lOVFM6CisgICAgICAgICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRDExX1BSSU1J
VElWRV9UT1BPTE9HWV9QT0lOVExJU1Q7CisgICAgICAgICAgICBtaW5Db3VudCAgICAgICAgICA9
IDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9MSU5FUzoKKyAgICAgICAg
ICAgIHByaW1pdGl2ZVRvcG9sb2d5ID0gRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9MSU5FTElTVDsK
KyAgICAgICAgICAgIG1pbkNvdW50ICAgICAgICAgID0gMjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEdMX0xJTkVfTE9PUDoKKyAgICAgICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5
ID0gRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9MSU5FU1RSSVA7CisgICAgICAgICAgICBtaW5Db3Vu
dCAgICAgICAgICA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9MSU5F
X1NUUklQOgorICAgICAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RP
UE9MT0dZX0xJTkVTVFJJUDsKKyAgICAgICAgICAgIG1pbkNvdW50ICAgICAgICAgID0gMjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RSSUFOR0xFUzoKKyAgICAgICAgICAg
IHByaW1pdGl2ZVRvcG9sb2d5ID0gRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9UUklBTkdMRUxJU1Q7
CisgICAgICAgICAgICBtaW5Db3VudCAgICAgICAgICA9IDM7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBHTF9UUklBTkdMRV9TVFJJUDoKKyAgICAgICAgICAgIHByaW1pdGl2ZVRv
cG9sb2d5ID0gRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9UUklBTkdMRVNUUklQOworICAgICAgICAg
ICAgbWluQ291bnQgICAgICAgICAgPSAzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIC8v
IGVtdWxhdGUgZmFucyB2aWEgcmV3cml0aW5nIGluZGV4IGJ1ZmZlcgorICAgICAgICBjYXNlIEdM
X1RSSUFOR0xFX0ZBTjoKKyAgICAgICAgICAgIHByaW1pdGl2ZVRvcG9sb2d5ID0gRDNEX1BSSU1J
VElWRV9UT1BPTE9HWV9UUklBTkdMRUxJU1Q7CisgICAgICAgICAgICBtaW5Db3VudCAgICAgICAg
ICA9IDM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAg
Ly8gSWYgaW5zdGFuY2VkIHBvaW50c3ByaXRlIGVtdWxhdGlvbiBpcyBiZWluZyB1c2VkIGFuZCAg
SWYgZ2xfUG9pbnRTaXplIGlzIHVzZWQgaW4gdGhlIHNoYWRlciwKICAgICAvLyBHTF9QT0lOVFMg
bW9kZSBpcyBleHBlY3RlZCB0byByZW5kZXIgcG9pbnRzcHJpdGVzLgotICAgIC8vIEluc3RhbmNl
ZCBQb2ludFNwcml0ZSBlbXVsYXRpb24gcmVxdWlyZXMgdGhhdCB0aGUgdG9wb2xvZ3kgdG8gYmUg
RDNEX1BSSU1JVElWRV9UT1BPTE9HWV9UUklBTkdMRUxJU1QuCisgICAgLy8gSW5zdGFuY2VkIFBv
aW50U3ByaXRlIGVtdWxhdGlvbiByZXF1aXJlcyB0aGF0IHRoZSB0b3BvbG9neSB0byBiZQorICAg
IC8vIEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVMSVNULgogICAgIGlmIChtb2RlID09
IEdMX1BPSU5UUyAmJiB1c2VzUG9pbnRTaXplICYmIGdldFdvcmthcm91bmRzKCkudXNlSW5zdGFu
Y2VkUG9pbnRTcHJpdGVFbXVsYXRpb24pCiAgICAgewogICAgICAgICBwcmltaXRpdmVUb3BvbG9n
eSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVMSVNUOwpAQCAtMTU1MywxMSArMTcw
NCw2IEBAIGJvb2wgUmVuZGVyZXIxMTo6YXBwbHlQcmltaXRpdmVUeXBlKEdMZW51bSBtb2RlLCBH
THNpemVpIGNvdW50LCBib29sIHVzZXNQb2ludFNpCiAgICAgcmV0dXJuIGNvdW50ID49IG1pbkNv
dW50OwogfQogCi1nbDo6RXJyb3IgUmVuZGVyZXIxMTo6YXBwbHlSZW5kZXJUYXJnZXQoZ2w6OkZy
YW1lYnVmZmVyICpmcmFtZWJ1ZmZlcikKLXsKLSAgICByZXR1cm4gbVN0YXRlTWFuYWdlci5zeW5j
RnJhbWVidWZmZXIoZnJhbWVidWZmZXIpOwotfQotCiBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6YXBw
bHlWZXJ0ZXhCdWZmZXIoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwKQEAgLTE2MTUsNyArMTc2MSw4IEBAIGds
OjpFcnJvciBSZW5kZXJlcjExOjphcHBseUluZGV4QnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0U3Rh
dGUgJmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4SW5mbywgZ2xTdGF0ZS5pc1ByaW1pdGl2ZVJlc3RhcnRFbmFibGVkKCkpKTsKIAog
ICAgIElEM0QxMUJ1ZmZlciAqYnVmZmVyID0gbnVsbHB0cjsKLSAgICBEWEdJX0ZPUk1BVCBidWZm
ZXJGb3JtYXQgPSAoaW5kZXhJbmZvLT5pbmRleFR5cGUgPT0gR0xfVU5TSUdORURfSU5UKSA/IERY
R0lfRk9STUFUX1IzMl9VSU5UIDogRFhHSV9GT1JNQVRfUjE2X1VJTlQ7CisgICAgRFhHSV9GT1JN
QVQgYnVmZmVyRm9ybWF0ID0KKyAgICAgICAgKGluZGV4SW5mby0+aW5kZXhUeXBlID09IEdMX1VO
U0lHTkVEX0lOVCkgPyBEWEdJX0ZPUk1BVF9SMzJfVUlOVCA6IERYR0lfRk9STUFUX1IxNl9VSU5U
OwogCiAgICAgaWYgKGluZGV4SW5mby0+c3RvcmFnZSkKICAgICB7CkBAIC0xNjI0LDE4ICsxNzcx
LDE5IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjphcHBseUluZGV4QnVmZmVyKGNvbnN0IGdsOjpD
b250ZXh0U3RhdGUgJmRhdGEsCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIEluZGV4
QnVmZmVyMTEqIGluZGV4QnVmZmVyID0gR2V0QXM8SW5kZXhCdWZmZXIxMT4oaW5kZXhJbmZvLT5p
bmRleEJ1ZmZlcik7Ci0gICAgICAgIGJ1ZmZlciA9IGluZGV4QnVmZmVyLT5nZXRCdWZmZXIoKTsK
KyAgICAgICAgSW5kZXhCdWZmZXIxMSAqaW5kZXhCdWZmZXIgPSBHZXRBczxJbmRleEJ1ZmZlcjEx
PihpbmRleEluZm8tPmluZGV4QnVmZmVyKTsKKyAgICAgICAgYnVmZmVyICAgICAgICAgICAgICAg
ICAgICAgPSBpbmRleEJ1ZmZlci0+Z2V0QnVmZmVyKCk7CiAgICAgfQogCiAgICAgbUFwcGxpZWRJ
QkNoYW5nZWQgPSBmYWxzZTsKLSAgICBpZiAoYnVmZmVyICE9IG1BcHBsaWVkSUIgfHwgYnVmZmVy
Rm9ybWF0ICE9IG1BcHBsaWVkSUJGb3JtYXQgfHwgaW5kZXhJbmZvLT5zdGFydE9mZnNldCAhPSBt
QXBwbGllZElCT2Zmc2V0KQorICAgIGlmIChidWZmZXIgIT0gbUFwcGxpZWRJQiB8fCBidWZmZXJG
b3JtYXQgIT0gbUFwcGxpZWRJQkZvcm1hdCB8fAorICAgICAgICBpbmRleEluZm8tPnN0YXJ0T2Zm
c2V0ICE9IG1BcHBsaWVkSUJPZmZzZXQpCiAgICAgewogICAgICAgICBtRGV2aWNlQ29udGV4dC0+
SUFTZXRJbmRleEJ1ZmZlcihidWZmZXIsIGJ1ZmZlckZvcm1hdCwgaW5kZXhJbmZvLT5zdGFydE9m
ZnNldCk7CiAKLSAgICAgICAgbUFwcGxpZWRJQiA9IGJ1ZmZlcjsKLSAgICAgICAgbUFwcGxpZWRJ
QkZvcm1hdCA9IGJ1ZmZlckZvcm1hdDsKLSAgICAgICAgbUFwcGxpZWRJQk9mZnNldCA9IGluZGV4
SW5mby0+c3RhcnRPZmZzZXQ7CisgICAgICAgIG1BcHBsaWVkSUIgICAgICAgID0gYnVmZmVyOwor
ICAgICAgICBtQXBwbGllZElCRm9ybWF0ICA9IGJ1ZmZlckZvcm1hdDsKKyAgICAgICAgbUFwcGxp
ZWRJQk9mZnNldCAgPSBpbmRleEluZm8tPnN0YXJ0T2Zmc2V0OwogICAgICAgICBtQXBwbGllZElC
Q2hhbmdlZCA9IHRydWU7CiAgICAgfQogCkBAIC0xNzExLDcgKzE4NTksNyBAQCBnbDo6RXJyb3Ig
UmVuZGVyZXIxMTo6ZHJhd0FycmF5c0ltcGwoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwK
ICAgICAgICAgLy8gU2tpcCB0aGUgZHJhdyBjYWxsIGlmIHJhc3Rlcml6ZXIgZGlzY2FyZCBpcyBl
bmFibGVkIChvciBubyBmcmFnbWVudCBzaGFkZXIpLgogICAgICAgICBpZiAoIXBpeGVsRXhlIHx8
IGdsU3RhdGUuZ2V0UmFzdGVyaXplclN0YXRlKCkucmFzdGVyaXplckRpc2NhcmQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICAg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgICAgIH0KIAogICAgICAgICBJRDNEMTFQaXhl
bFNoYWRlciAqcGl4ZWxTaGFkZXIgPSBHZXRBczxTaGFkZXJFeGVjdXRhYmxlMTE+KHBpeGVsRXhl
KS0+Z2V0UGl4ZWxTaGFkZXIoKTsKQEAgLTE3MzcsMTIgKzE4ODUsMTIgQEAgZ2w6OkVycm9yIFJl
bmRlcmVyMTE6OmRyYXdBcnJheXNJbXBsKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAg
ICAgICAgIHsKICAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3KGNvdW50LCAwKTsKICAg
ICAgICAgfQotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAgaWYgKG1vZGUgPT0gR0xfTElORV9M
T09QKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGRyYXdMaW5lTG9vcChkYXRhLCBjb3VudCwgR0xf
Tk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwgaW5zdGFuY2VzKTsKKyAgICAgICAgcmV0dXJuIGRyYXdM
aW5lTG9vcChkYXRhLCBjb3VudCwgR0xfTk9ORSwgbnVsbHB0ciwgMCwgaW5zdGFuY2VzKTsKICAg
ICB9CiAKICAgICBpZiAobW9kZSA9PSBHTF9UUklBTkdMRV9GQU4pCkBAIC0xNzc2LDcgKzE5MjQs
NyBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6ZHJhd0FycmF5c0ltcGwoY29uc3QgZ2w6OkNvbnRl
eHRTdGF0ZSAmZGF0YSwKICAgICAgICAgewogICAgICAgICAgICAgbURldmljZUNvbnRleHQtPkRy
YXdJbnN0YW5jZWQoY291bnQsIGluc3RhbmNlcywgMCwgMCk7CiAgICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogICAgIH0KIAogICAgIC8vIElmIHRoZSBzaGFkZXIgaXMgd3JpdGluZyB0byBnbF9Qb2lu
dFNpemUsIHRoZW4gcG9pbnRzcHJpdGVzIGFyZSBiZWluZyByZW5kZXJlZC4KQEAgLTE3OTAsNyAr
MTkzOCw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3QXJyYXlzSW1wbChjb25zdCBnbDo6
Q29udGV4dFN0YXRlICZkYXRhLAogICAgIHsKICAgICAgICAgbURldmljZUNvbnRleHQtPkRyYXco
Y291bnQsIDApOwogICAgIH0KLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmRyYXdF
bGVtZW50c0ltcGwoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKQEAgLTE4MDEsMTYgKzE5
NDksMTcgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmRyYXdFbGVtZW50c0ltcGwoY29uc3QgZ2w6
OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzKQogewotICAgIGludCBtaW5JbmRleCA9IHN0YXRp
Y19jYXN0PGludD4oaW5kZXhJbmZvLmluZGV4UmFuZ2Uuc3RhcnQpOworICAgIGludCBzdGFydFZl
cnRleCA9IHN0YXRpY19jYXN0PGludD4oaW5kZXhJbmZvLmluZGV4UmFuZ2Uuc3RhcnQpOworICAg
IGludCBiYXNlVmVydGV4ICA9IC1zdGFydFZlcnRleDsKIAogICAgIGlmIChtb2RlID09IEdMX0xJ
TkVfTE9PUCkKICAgICB7Ci0gICAgICAgIHJldHVybiBkcmF3TGluZUxvb3AoZGF0YSwgY291bnQs
IHR5cGUsIGluZGljZXMsICZpbmRleEluZm8sIGluc3RhbmNlcyk7CisgICAgICAgIHJldHVybiBk
cmF3TGluZUxvb3AoZGF0YSwgY291bnQsIHR5cGUsIGluZGljZXMsIGJhc2VWZXJ0ZXgsIGluc3Rh
bmNlcyk7CiAgICAgfQogCiAgICAgaWYgKG1vZGUgPT0gR0xfVFJJQU5HTEVfRkFOKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGRyYXdUcmlhbmdsZUZhbihkYXRhLCBjb3VudCwgdHlwZSwgaW5kaWNl
cywgbWluSW5kZXgsIGluc3RhbmNlcyk7CisgICAgICAgIHJldHVybiBkcmF3VHJpYW5nbGVGYW4o
ZGF0YSwgY291bnQsIHR5cGUsIGluZGljZXMsIGJhc2VWZXJ0ZXgsIGluc3RhbmNlcyk7CiAgICAg
fQogCiAgICAgY29uc3QgUHJvZ3JhbUQzRCAqcHJvZ3JhbUQzRCA9IEdldEltcGxBczxQcm9ncmFt
RDNEPihkYXRhLmdldFN0YXRlKCkuZ2V0UHJvZ3JhbSgpKTsKQEAgLTE4MzAsMTUgKzE5NzksMTUg
QEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmRyYXdFbGVtZW50c0ltcGwoY29uc3QgZ2w6OkNvbnRl
eHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgIGZvciAoR0xzaXplaSBpID0gMDsgaSA8IGluc3Rh
bmNlczsgaSsrKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEFOR0xFX1RSWSgKLSAg
ICAgICAgICAgICAgICAgICAgbUlucHV0TGF5b3V0Q2FjaGUudXBkYXRlVmVydGV4T2Zmc2V0c0Zv
clBvaW50U3ByaXRlc0VtdWxhdGlvbihtaW5JbmRleCwgaSkpOworICAgICAgICAgICAgICAgICAg
ICBtSW5wdXRMYXlvdXRDYWNoZS51cGRhdGVWZXJ0ZXhPZmZzZXRzRm9yUG9pbnRTcHJpdGVzRW11
bGF0aW9uKHN0YXJ0VmVydGV4LCBpKSk7CiAgICAgICAgICAgICAgICAgbURldmljZUNvbnRleHQt
PkRyYXdJbmRleGVkSW5zdGFuY2VkKDYsIGVsZW1lbnRzVG9SZW5kZXIsIDAsIDAsIDApOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAg
ICAgbURldmljZUNvbnRleHQtPkRyYXdJbmRleGVkSW5zdGFuY2VkKGNvdW50LCBpbnN0YW5jZXMs
IDAsIC1taW5JbmRleCwgMCk7CisgICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+RHJhd0luZGV4
ZWRJbnN0YW5jZWQoY291bnQsIGluc3RhbmNlcywgMCwgYmFzZVZlcnRleCwgMCk7CiAgICAgICAg
IH0KLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogICAgIH0KIAogICAgIC8vIElmIHRoZSBzaGFkZXIgaXMgd3JpdGlu
ZyB0byBnbF9Qb2ludFNpemUsIHRoZW4gcG9pbnRzcHJpdGVzIGFyZSBiZWluZyByZW5kZXJlZC4K
QEAgLTE4NTgsMTYgKzIwMDcsMTYwIEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3RWxlbWVu
dHNJbXBsKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgfQogICAgIGVsc2UKICAg
ICB7Ci0gICAgICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3SW5kZXhlZChjb3VudCwgMCwgLW1pbklu
ZGV4KTsKKyAgICAgICAgbURldmljZUNvbnRleHQtPkRyYXdJbmRleGVkKGNvdW50LCAwLCBiYXNl
VmVydGV4KTsKKyAgICB9CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK2Jvb2wgUmVu
ZGVyZXIxMTo6c3VwcG9ydHNGYXN0SW5kaXJlY3REcmF3KGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUs
IEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSkKK3sKKyAgICBjb25zdCBhdXRvICZ2ZXJ0ZXhBcnJh
eSA9IHN0YXRlLmdldFZlcnRleEFycmF5KCk7CisgICAgYXV0byAqdmVydGV4QXJyYXkxMSAgICAg
PSBHZXRJbXBsQXM8VmVydGV4QXJyYXkxMT4odmVydGV4QXJyYXkpOworICAgIC8vIEluZGlyZWN0
IGRyYXdpbmcgZG9lc24ndCBzdXBwb3J0IGR5bmFtaWMgYXR0cmlidXRlIHN0b3JhZ2Ugc2luY2Ug
aXQgbmVlZHMgdGhlIGZpcnN0IGFuZCBjb3VudAorICAgIC8vIHRvIHRyYW5zbGF0ZSB3aGVuIGFw
cGx5VmVydGV4QnVmZmVyLiBHTF9MSU5FX0xPT1AgYW5kIEdMX1RSSUFOR0xFX0ZBTiBhcmUgbm90
IHN1cHBvcnRlZAorICAgIC8vIGVpdGhlciBzaW5jZSB3ZSBuZWVkIHRvIHNpbXVsYXRlIHRoZW0g
aW4gRDNELgorICAgIGlmICh2ZXJ0ZXhBcnJheTExLT5oYXNEeW5hbWljQXR0cmliKHN0YXRlKSB8
fCBtb2RlID09IEdMX0xJTkVfTE9PUCB8fCBtb2RlID09IEdMX1RSSUFOR0xFX0ZBTikKKyAgICB7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAodHlwZSAhPSBHTF9OT05F
KQorICAgIHsKKyAgICAgICAgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyID0gdmVydGV4
QXJyYXktPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpLmdldCgpOworICAgICAgICBBU1NFUlQoZWxl
bWVudEFycmF5QnVmZmVyKTsKKyAgICAgICAgLy8gT25seSBub24tc3RyZWFtaW5nIGluZGV4IGRh
dGEgY2FuIGJlIGRpcmVjdGx5IHVzZWQgdG8gZG8gaW5kaXJlY3QgZHJhdyBzaW5jZSB0aGV5IGRv
bid0CisgICAgICAgIC8vIG5lZWQgdGhlIGluZGljZXMgYW5kIGNvdW50IGluZm9ybWF0aW9ucy4g
SGVyZSB3ZSBkb24ndCBjaGVjayB3aGV0aGVyIGl0IHJlYWxseSBoYXMKKyAgICAgICAgLy8gcHJp
bWl0aXZlIHJlc3RhcnQgaW5kZXggaW4gaXQgc2luY2UgaXQgYWxzbyBuZWVkcyB0byBrbm93IHRo
ZSBpbmRleCByYW5nZSBhbmQgY291bnQuCisgICAgICAgIC8vIFNvLCBmb3IgYWxsIG90aGVyIHNp
dHVhdGlvbnMsIHdlIGZhbGwgYmFjayB0byBub3JtYWwgZHJhdyBpbnN0ZWFkIG9mIGluZGlyZWN0
IGRyYXcuCisgICAgICAgIGJvb2wgcHJpbWl0aXZlUmVzdGFydFdvcmthcm91bmQgPSBtSW5kZXhE
YXRhTWFuYWdlci0+dXNlUHJpbWl0aXZlUmVzdGFydFdvcmthcm91bmQoCisgICAgICAgICAgICBz
dGF0ZS5pc1ByaW1pdGl2ZVJlc3RhcnRFbmFibGVkKCksIHR5cGUpOworICAgICAgICByZXR1cm4g
IW1JbmRleERhdGFNYW5hZ2VyLT5pc1N0cmVhbWluZ0luZGV4RGF0YShwcmltaXRpdmVSZXN0YXJ0
V29ya2Fyb3VuZCwgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxlbWVudEFycmF5QnVmZmVyKTsKKyAgICB9CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2dsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3QXJyYXlzSW5kaXJlY3RJbXBs
KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpCit7CisgICAgaWYg
KHNraXBEcmF3KGRhdGEsIG1vZGUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7CisgICAgfQorCisgICAgY29uc3QgYXV0byAmZ2xTdGF0ZSAgICAgICAgICAgID0gZGF0YS5n
ZXRTdGF0ZSgpOworICAgIGdsOjpCdWZmZXIgKmRyYXdJbmRpcmVjdEJ1ZmZlciA9IGdsU3RhdGUu
Z2V0RHJhd0luZGlyZWN0QnVmZmVyKCk7CisgICAgQVNTRVJUKGRyYXdJbmRpcmVjdEJ1ZmZlcik7
CisgICAgQnVmZmVyMTEgKnN0b3JhZ2UgPSBHZXRJbXBsQXM8QnVmZmVyMTE+KGRyYXdJbmRpcmVj
dEJ1ZmZlcik7CisgICAgdWludHB0cl90IG9mZnNldCAgPSByZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4oaW5kaXJlY3QpOworCisgICAgaWYgKHN1cHBvcnRzRmFzdEluZGlyZWN0RHJhdyhnbFN0
YXRlLCBtb2RlLCBHTF9OT05FKSkKKyAgICB7CisgICAgICAgIGFwcGx5VmVydGV4QnVmZmVyKGds
U3RhdGUsIG1vZGUsIDAsIDAsIDAsIG51bGxwdHIpOworICAgICAgICBJRDNEMTFCdWZmZXIgKmJ1
ZmZlciA9IG51bGxwdHI7CisgICAgICAgIEFOR0xFX1RSWV9SRVNVTFQoc3RvcmFnZS0+Z2V0QnVm
ZmVyKEJVRkZFUl9VU0FHRV9JTkRJUkVDVCksIGJ1ZmZlcik7CisgICAgICAgIG1EZXZpY2VDb250
ZXh0LT5EcmF3SW5zdGFuY2VkSW5kaXJlY3QoYnVmZmVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KG9mZnNldCkpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICB9CisKKyAg
ICBjb25zdCB1aW50OF90ICpidWZmZXJEYXRhID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUlkoc3Rv
cmFnZS0+Z2V0RGF0YSgmYnVmZmVyRGF0YSkpOworICAgIEFTU0VSVChidWZmZXJEYXRhKTsKKyAg
ICBjb25zdCBnbDo6RHJhd0FycmF5c0luZGlyZWN0Q29tbWFuZCAqYXJncyA9CisgICAgICAgIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2w6OkRyYXdBcnJheXNJbmRpcmVjdENvbW1hbmQgKj4oYnVm
ZmVyRGF0YSArIG9mZnNldCk7CisgICAgR0x1aW50IGNvdW50ICAgICA9IGFyZ3MtPmNvdW50Owor
ICAgIEdMdWludCBpbnN0YW5jZXMgPSBhcmdzLT5pbnN0YW5jZUNvdW50OworICAgIEdMdWludCBm
aXJzdCAgICAgPSBhcmdzLT5maXJzdDsKKworICAgIEFOR0xFX1RSWShhcHBseVZlcnRleEJ1ZmZl
cihnbFN0YXRlLCBtb2RlLCBmaXJzdCwgY291bnQsIGluc3RhbmNlcywgbnVsbHB0cikpOworCisg
ICAgaWYgKG1vZGUgPT0gR0xfTElORV9MT09QKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGRyYXdM
aW5lTG9vcChkYXRhLCBjb3VudCwgR0xfTk9ORSwgbnVsbHB0ciwgMCwgaW5zdGFuY2VzKTsKKyAg
ICB9CisgICAgaWYgKG1vZGUgPT0gR0xfVFJJQU5HTEVfRkFOKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGRyYXdUcmlhbmdsZUZhbihkYXRhLCBjb3VudCwgR0xfTk9ORSwgbnVsbHB0ciwgMCwgaW5z
dGFuY2VzKTsKKyAgICB9CisKKyAgICBtRGV2aWNlQ29udGV4dC0+RHJhd0luc3RhbmNlZChjb3Vu
dCwgaW5zdGFuY2VzLCAwLCAwKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKworZ2w6
OkVycm9yIFJlbmRlcmVyMTE6OmRyYXdFbGVtZW50c0luZGlyZWN0SW1wbChjb25zdCBnbDo6Q29u
dGV4dFN0YXRlICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpCit7CisgICAgaWYgKHNraXBE
cmF3KGRhdGEsIG1vZGUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cisg
ICAgfQorCisgICAgY29uc3QgYXV0byAmZ2xTdGF0ZSAgICAgICAgICAgID0gZGF0YS5nZXRTdGF0
ZSgpOworICAgIGdsOjpCdWZmZXIgKmRyYXdJbmRpcmVjdEJ1ZmZlciA9IGdsU3RhdGUuZ2V0RHJh
d0luZGlyZWN0QnVmZmVyKCk7CisgICAgQVNTRVJUKGRyYXdJbmRpcmVjdEJ1ZmZlcik7CisgICAg
QnVmZmVyMTEgKnN0b3JhZ2UgPSBHZXRJbXBsQXM8QnVmZmVyMTE+KGRyYXdJbmRpcmVjdEJ1ZmZl
cik7CisgICAgdWludHB0cl90IG9mZnNldCAgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4o
aW5kaXJlY3QpOworCisgICAgVHJhbnNsYXRlZEluZGV4RGF0YSBpbmRleEluZm87CisgICAgaWYg
KHN1cHBvcnRzRmFzdEluZGlyZWN0RHJhdyhnbFN0YXRlLCBtb2RlLCB0eXBlKSkKKyAgICB7Cisg
ICAgICAgIEFOR0xFX1RSWShhcHBseUluZGV4QnVmZmVyKGRhdGEsIG51bGxwdHIsIDAsIG1vZGUs
IHR5cGUsICZpbmRleEluZm8pKTsKKyAgICAgICAgQU5HTEVfVFJZKGFwcGx5VmVydGV4QnVmZmVy
KGdsU3RhdGUsIG1vZGUsIDAsIDAsIDAsICZpbmRleEluZm8pKTsKKyAgICAgICAgSUQzRDExQnVm
ZmVyICpidWZmZXIgPSBudWxscHRyOworICAgICAgICBBTkdMRV9UUllfUkVTVUxUKHN0b3JhZ2Ut
PmdldEJ1ZmZlcihCVUZGRVJfVVNBR0VfSU5ESVJFQ1QpLCBidWZmZXIpOworICAgICAgICBtRGV2
aWNlQ29udGV4dC0+RHJhd0luZGV4ZWRJbnN0YW5jZWRJbmRpcmVjdChidWZmZXIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkIGludD4ob2Zmc2V0KSk7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OwogICAgIH0KLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKworICAgIGNvbnN0
IHVpbnQ4X3QgKmJ1ZmZlckRhdGEgPSBudWxscHRyOworICAgIEFOR0xFX1RSWShzdG9yYWdlLT5n
ZXREYXRhKCZidWZmZXJEYXRhKSk7CisgICAgQVNTRVJUKGJ1ZmZlckRhdGEpOworCisgICAgY29u
c3QgZ2w6OkRyYXdFbGVtZW50c0luZGlyZWN0Q29tbWFuZCAqY21kID0KKyAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBnbDo6RHJhd0VsZW1lbnRzSW5kaXJlY3RDb21tYW5kICo+KGJ1ZmZl
ckRhdGEgKyBvZmZzZXQpOworICAgIEdMdWludCBjb3VudCAgICAgID0gY21kLT5jb3VudDsKKyAg
ICBHTHVpbnQgaW5zdGFuY2VzICA9IGNtZC0+cHJpbUNvdW50OworICAgIEdMdWludCBmaXJzdElu
ZGV4ID0gY21kLT5maXJzdEluZGV4OworICAgIEdMaW50IGJhc2VWZXJ0ZXggID0gY21kLT5iYXNl
VmVydGV4OworCisgICAgY29uc3QgZ2w6OlR5cGUgJnR5cGVJbmZvID0gZ2w6OkdldFR5cGVJbmZv
KHR5cGUpOworICAgIHVpbnQ4X3QgKmluZGljZXMgICAgICAgICA9IHN0YXRpY19jYXN0PHVpbnQ4
X3QgKj4oMCkgKyBmaXJzdEluZGV4ICogdHlwZUluZm8uYnl0ZXM7CisKKyAgICBnbDo6QnVmZmVy
ICplbGVtZW50QXJyYXlCdWZmZXIgPSBnbFN0YXRlLmdldFZlcnRleEFycmF5KCktPmdldEVsZW1l
bnRBcnJheUJ1ZmZlcigpLmdldCgpOworICAgIEFTU0VSVChlbGVtZW50QXJyYXlCdWZmZXIpOwor
ICAgIGdsOjpJbmRleFJhbmdlIGluZGV4UmFuZ2U7CisgICAgQU5HTEVfVFJZKGVsZW1lbnRBcnJh
eUJ1ZmZlci0+Z2V0SW5kZXhSYW5nZSh0eXBlLCByZWludGVycHJldF9jYXN0PHNpemVfdD4oaW5k
aWNlcyksIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2xTdGF0ZS5pc1ByaW1pdGl2ZVJlc3RhcnRFbmFibGVkKCksICZpbmRleFJhbmdlKSk7
CisKKyAgICBpbmRleEluZm8uaW5kZXhSYW5nZSA9IGluZGV4UmFuZ2U7CisgICAgQU5HTEVfVFJZ
KGFwcGx5SW5kZXhCdWZmZXIoZGF0YSwgaW5kaWNlcywgY291bnQsIG1vZGUsIHR5cGUsICZpbmRl
eEluZm8pKTsKKyAgICBzaXplX3QgdmVydGV4Q291bnQgPSBpbmRleFJhbmdlLnZlcnRleENvdW50
KCk7CisgICAgQU5HTEVfVFJZKGFwcGx5VmVydGV4QnVmZmVyKGdsU3RhdGUsIG1vZGUsIHN0YXRp
Y19jYXN0PEdMc2l6ZWk+KGluZGV4UmFuZ2Uuc3RhcnQpICsgYmFzZVZlcnRleCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4odmVydGV4Q291bnQp
LCBpbnN0YW5jZXMsICZpbmRleEluZm8pKTsKKworICAgIGludCBiYXNlVmVydGV4TG9jYXRpb24g
PSAtc3RhdGljX2Nhc3Q8aW50PihpbmRleFJhbmdlLnN0YXJ0KTsKKyAgICBpZiAobW9kZSA9PSBH
TF9MSU5FX0xPT1ApCisgICAgeworICAgICAgICByZXR1cm4gZHJhd0xpbmVMb29wKGRhdGEsIGNv
dW50LCB0eXBlLCBpbmRpY2VzLCBiYXNlVmVydGV4TG9jYXRpb24sIGluc3RhbmNlcyk7CisgICAg
fQorCisgICAgaWYgKG1vZGUgPT0gR0xfVFJJQU5HTEVfRkFOKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGRyYXdUcmlhbmdsZUZhbihkYXRhLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgYmFzZVZlcnRl
eExvY2F0aW9uLCBpbnN0YW5jZXMpOworICAgIH0KKworICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3
SW5kZXhlZEluc3RhbmNlZChjb3VudCwgaW5zdGFuY2VzLCAwLCBiYXNlVmVydGV4TG9jYXRpb24s
IDApOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXIx
MTo6ZHJhd0xpbmVMb29wKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGV4UG9pbnRlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVHJhbnNsYXRlZEluZGV4RGF0YSAqaW5kZXhJbmZvLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZVZlcnRleCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluc3RhbmNlcykKIHsKICAgICBjb25z
dCBhdXRvICZnbFN0YXRlICAgICAgICAgICAgPSBkYXRhLmdldFN0YXRlKCk7CkBAIC0xODgwLDcg
KzIxNzMsNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6ZHJhd0xpbmVMb29wKGNvbnN0IGdsOjpD
b250ZXh0U3RhdGUgJmRhdGEsCiAgICAgaWYgKHR5cGUgIT0gR0xfTk9ORSAmJiBlbGVtZW50QXJy
YXlCdWZmZXIpCiAgICAgewogICAgICAgICBCdWZmZXJEM0QgKnN0b3JhZ2UgPSBHZXRJbXBsQXM8
QnVmZmVyRDNEPihlbGVtZW50QXJyYXlCdWZmZXIpOwotICAgICAgICBpbnRwdHJfdCBvZmZzZXQg
PSByZWludGVycHJldF9jYXN0PGludHB0cl90PihpbmRpY2VzKTsKKyAgICAgICAgaW50cHRyX3Qg
b2Zmc2V0ICAgID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5kaWNlcyk7CiAKICAgICAg
ICAgY29uc3QgdWludDhfdCAqYnVmZmVyRGF0YSA9IE5VTEw7CiAgICAgICAgIEFOR0xFX1RSWShz
dG9yYWdlLT5nZXREYXRhKCZidWZmZXJEYXRhKSk7CkBAIC0xODkxLDcgKzIxODQsOCBAQCBnbDo6
RXJyb3IgUmVuZGVyZXIxMTo6ZHJhd0xpbmVMb29wKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRh
dGEsCiAgICAgaWYgKCFtTGluZUxvb3BJQikKICAgICB7CiAgICAgICAgIG1MaW5lTG9vcElCID0g
bmV3IFN0cmVhbWluZ0luZGV4QnVmZmVySW50ZXJmYWNlKHRoaXMpOwotICAgICAgICBnbDo6RXJy
b3IgZXJyb3IgPSBtTGluZUxvb3BJQi0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKElOSVRJQUxfSU5ERVhf
QlVGRkVSX1NJWkUsIEdMX1VOU0lHTkVEX0lOVCk7CisgICAgICAgIGdsOjpFcnJvciBlcnJvciA9
CisgICAgICAgICAgICBtTGluZUxvb3BJQi0+cmVzZXJ2ZUJ1ZmZlclNwYWNlKElOSVRJQUxfSU5E
RVhfQlVGRkVSX1NJWkUsIEdMX1VOU0lHTkVEX0lOVCk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIFNhZmVEZWxldGUobUxpbmVMb29wSUIpOwpA
QCAtMTkwMiw5ICsyMTk2LDEyIEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3TGluZUxvb3Ao
Y29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAvLyBDaGVja2VkIGJ5IFJlbmRlcmVy
MTE6OmFwcGx5UHJpbWl0aXZlVHlwZQogICAgIEFTU0VSVChjb3VudCA+PSAwKTsKIAotICAgIGlm
IChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNvdW50KSArIDEgPiAoc3RkOjpudW1lcmljX2xp
bWl0czx1bnNpZ25lZCBpbnQ+OjptYXgoKSAvIHNpemVvZih1bnNpZ25lZCBpbnQpKSkKKyAgICBp
ZiAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb3VudCkgKyAxID4KKyAgICAgICAgKHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4KCkgLyBzaXplb2YodW5zaWduZWQgaW50
KSkpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJG
YWlsZWQgdG8gY3JlYXRlIGEgMzItYml0IGxvb3BpbmcgaW5kZXggYnVmZmVyIGZvciBHTF9MSU5F
X0xPT1AsIHRvbyBtYW55IGluZGljZXMgcmVxdWlyZWQuIik7CisgICAgICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVk
IHRvIGNyZWF0ZSBhIDMyLWJpdCBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09Q
LCB0b28gIgorICAgICAgICAgICAgICAgICAgICAgICAgICJtYW55IGluZGljZXMgcmVxdWlyZWQu
Iik7CiAgICAgfQogCiAgICAgR2V0TGluZUxvb3BJbmRpY2VzKGluZGljZXMsIHR5cGUsIHN0YXRp
Y19jYXN0PEdMdWludD4oY291bnQpLApAQCAtMTkxNCw3ICsyMjExLDcgQEAgZ2w6OkVycm9yIFJl
bmRlcmVyMTE6OmRyYXdMaW5lTG9vcChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAg
ICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHNpemVvZihHTHVpbnQpICogbVNjcmF0Y2hJ
bmRleERhdGFCdWZmZXIuc2l6ZSgpKTsKICAgICBBTkdMRV9UUlkobUxpbmVMb29wSUItPnJlc2Vy
dmVCdWZmZXJTcGFjZShzcGFjZU5lZWRlZCwgR0xfVU5TSUdORURfSU5UKSk7CiAKLSAgICB2b2lk
KiBtYXBwZWRNZW1vcnkgPSBOVUxMOworICAgIHZvaWQgKm1hcHBlZE1lbW9yeSA9IE5VTEw7CiAg
ICAgdW5zaWduZWQgaW50IG9mZnNldDsKICAgICBBTkdMRV9UUlkobUxpbmVMb29wSUItPm1hcEJ1
ZmZlcihzcGFjZU5lZWRlZCwgJm1hcHBlZE1lbW9yeSwgJm9mZnNldCkpOwogCkBAIC0xOTI0LDI5
ICsyMjIxLDI4IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3TGluZUxvb3AoY29uc3QgZ2w6
OkNvbnRleHRTdGF0ZSAmZGF0YSwKIAogICAgIEFOR0xFX1RSWShtTGluZUxvb3BJQi0+dW5tYXBC
dWZmZXIoKSk7CiAKLSAgICBJbmRleEJ1ZmZlcjExICppbmRleEJ1ZmZlciA9IEdldEFzPEluZGV4
QnVmZmVyMTE+KG1MaW5lTG9vcElCLT5nZXRJbmRleEJ1ZmZlcigpKTsKKyAgICBJbmRleEJ1ZmZl
cjExICppbmRleEJ1ZmZlciAgID0gR2V0QXM8SW5kZXhCdWZmZXIxMT4obUxpbmVMb29wSUItPmdl
dEluZGV4QnVmZmVyKCkpOwogICAgIElEM0QxMUJ1ZmZlciAqZDNkSW5kZXhCdWZmZXIgPSBpbmRl
eEJ1ZmZlci0+Z2V0QnVmZmVyKCk7Ci0gICAgRFhHSV9GT1JNQVQgaW5kZXhGb3JtYXQgPSBpbmRl
eEJ1ZmZlci0+Z2V0SW5kZXhGb3JtYXQoKTsKKyAgICBEWEdJX0ZPUk1BVCBpbmRleEZvcm1hdCAg
ICAgID0gaW5kZXhCdWZmZXItPmdldEluZGV4Rm9ybWF0KCk7CiAKICAgICBpZiAobUFwcGxpZWRJ
QiAhPSBkM2RJbmRleEJ1ZmZlciB8fCBtQXBwbGllZElCRm9ybWF0ICE9IGluZGV4Rm9ybWF0IHx8
CiAgICAgICAgIG1BcHBsaWVkSUJPZmZzZXQgIT0gb2Zmc2V0KQogICAgIHsKICAgICAgICAgbURl
dmljZUNvbnRleHQtPklBU2V0SW5kZXhCdWZmZXIoZDNkSW5kZXhCdWZmZXIsIGluZGV4Rm9ybWF0
LCBvZmZzZXQpOwotICAgICAgICBtQXBwbGllZElCID0gZDNkSW5kZXhCdWZmZXI7CisgICAgICAg
IG1BcHBsaWVkSUIgICAgICAgPSBkM2RJbmRleEJ1ZmZlcjsKICAgICAgICAgbUFwcGxpZWRJQkZv
cm1hdCA9IGluZGV4Rm9ybWF0OwogICAgICAgICBtQXBwbGllZElCT2Zmc2V0ID0gb2Zmc2V0Owog
ICAgIH0KIAotICAgIElOVCBiYXNlVmVydGV4TG9jYXRpb24gPSAoaW5kZXhJbmZvID8gLXN0YXRp
Y19jYXN0PGludD4oaW5kZXhJbmZvLT5pbmRleFJhbmdlLnN0YXJ0KSA6IDApOwotICAgIFVJTlQg
aW5kZXhDb3VudCA9IHN0YXRpY19jYXN0PFVJTlQ+KG1TY3JhdGNoSW5kZXhEYXRhQnVmZmVyLnNp
emUoKSk7CisgICAgVUlOVCBpbmRleENvdW50ICAgICAgICA9IHN0YXRpY19jYXN0PFVJTlQ+KG1T
Y3JhdGNoSW5kZXhEYXRhQnVmZmVyLnNpemUoKSk7CiAKICAgICBpZiAoaW5zdGFuY2VzID4gMCkK
ICAgICB7Ci0gICAgICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3SW5kZXhlZEluc3RhbmNlZChpbmRl
eENvdW50LCBpbnN0YW5jZXMsIDAsIGJhc2VWZXJ0ZXhMb2NhdGlvbiwgMCk7CisgICAgICAgIG1E
ZXZpY2VDb250ZXh0LT5EcmF3SW5kZXhlZEluc3RhbmNlZChpbmRleENvdW50LCBpbnN0YW5jZXMs
IDAsIGJhc2VWZXJ0ZXgsIDApOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBtRGV2
aWNlQ29udGV4dC0+RHJhd0luZGV4ZWQoaW5kZXhDb3VudCwgMCwgYmFzZVZlcnRleExvY2F0aW9u
KTsKKyAgICAgICAgbURldmljZUNvbnRleHQtPkRyYXdJbmRleGVkKGluZGV4Q291bnQsIDAsIGJh
c2VWZXJ0ZXgpOwogICAgIH0KIAogICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwpAQCAtMTk1Niw3
ICsyMjUyLDcgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmRyYXdUcmlhbmdsZUZhbihjb25zdCBn
bDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0x2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgbWluSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBiYXNlVmVydGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
aW5zdGFuY2VzKQogewogICAgIGdsOjpWZXJ0ZXhBcnJheSAqdmFvICAgICAgICAgICA9IGRhdGEu
Z2V0U3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgpOwpAQCAtMTk2OCw3ICsyMjY0LDcgQEAgZ2w6OkVy
cm9yIFJlbmRlcmVyMTE6OmRyYXdUcmlhbmdsZUZhbihjb25zdCBnbDo6Q29udGV4dFN0YXRlICZk
YXRhLAogICAgIGlmICh0eXBlICE9IEdMX05PTkUgJiYgZWxlbWVudEFycmF5QnVmZmVyKQogICAg
IHsKICAgICAgICAgQnVmZmVyRDNEICpzdG9yYWdlID0gR2V0SW1wbEFzPEJ1ZmZlckQzRD4oZWxl
bWVudEFycmF5QnVmZmVyKTsKLSAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRf
Y2FzdDxpbnRwdHJfdD4oaW5kaWNlcyk7CisgICAgICAgIGludHB0cl90IG9mZnNldCAgICA9IHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluZGljZXMpOwogCiAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgKmJ1ZmZlckRhdGEgPSBOVUxMOwogICAgICAgICBBTkdMRV9UUlkoc3RvcmFnZS0+Z2V0RGF0
YSgmYnVmZmVyRGF0YSkpOwpAQCAtMTk3OSw3ICsyMjc1LDggQEAgZ2w6OkVycm9yIFJlbmRlcmVy
MTE6OmRyYXdUcmlhbmdsZUZhbihjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgIGlm
ICghbVRyaWFuZ2xlRmFuSUIpCiAgICAgewogICAgICAgICBtVHJpYW5nbGVGYW5JQiA9IG5ldyBT
dHJlYW1pbmdJbmRleEJ1ZmZlckludGVyZmFjZSh0aGlzKTsKLSAgICAgICAgZ2w6OkVycm9yIGVy
cm9yID0gbVRyaWFuZ2xlRmFuSUItPnJlc2VydmVCdWZmZXJTcGFjZShJTklUSUFMX0lOREVYX0JV
RkZFUl9TSVpFLCBHTF9VTlNJR05FRF9JTlQpOworICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPQor
ICAgICAgICAgICAgbVRyaWFuZ2xlRmFuSUItPnJlc2VydmVCdWZmZXJTcGFjZShJTklUSUFMX0lO
REVYX0JVRkZFUl9TSVpFLCBHTF9VTlNJR05FRF9JTlQpOwogICAgICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQogICAgICAgICB7CiAgICAgICAgICAgICBTYWZlRGVsZXRlKG1UcmlhbmdsZUZhbklC
KTsKQEAgLTE5OTQsNyArMjI5MSw5IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3VHJpYW5n
bGVGYW4oY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKIAogICAgIGlmIChudW1UcmlzID4g
KHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6bWF4KCkgLyAoc2l6ZW9mKHVuc2ln
bmVkIGludCkgKiAzKSkpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9P
Rl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIGEgc2NyYXRjaCBpbmRleCBidWZmZXIgZm9yIEdM
X1RSSUFOR0xFX0ZBTiwgdG9vIG1hbnkgaW5kaWNlcyByZXF1aXJlZC4iKTsKKyAgICAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICJGYWlsZWQgdG8gY3JlYXRlIGEgc2NyYXRjaCBpbmRleCBidWZmZXIgZm9yIEdMX1RSSUFOR0xF
X0ZBTiwgdG9vIG1hbnkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJpbmRpY2VzIHJlcXVp
cmVkLiIpOwogICAgIH0KIAogICAgIEdldFRyaUZhbkluZGljZXMoaW5kZXhQb2ludGVyLCB0eXBl
LCBjb3VudCwgZGF0YS5nZXRTdGF0ZSgpLmlzUHJpbWl0aXZlUmVzdGFydEVuYWJsZWQoKSwKQEAg
LTIwMTIsMTUgKzIzMTEsMTUgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmRyYXdUcmlhbmdsZUZh
bihjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogCiAgICAgQU5HTEVfVFJZKG1Ucmlhbmds
ZUZhbklCLT51bm1hcEJ1ZmZlcigpKTsKIAotICAgIEluZGV4QnVmZmVyMTEgKmluZGV4QnVmZmVy
ID0gR2V0QXM8SW5kZXhCdWZmZXIxMT4obVRyaWFuZ2xlRmFuSUItPmdldEluZGV4QnVmZmVyKCkp
OworICAgIEluZGV4QnVmZmVyMTEgKmluZGV4QnVmZmVyICAgPSBHZXRBczxJbmRleEJ1ZmZlcjEx
PihtVHJpYW5nbGVGYW5JQi0+Z2V0SW5kZXhCdWZmZXIoKSk7CiAgICAgSUQzRDExQnVmZmVyICpk
M2RJbmRleEJ1ZmZlciA9IGluZGV4QnVmZmVyLT5nZXRCdWZmZXIoKTsKLSAgICBEWEdJX0ZPUk1B
VCBpbmRleEZvcm1hdCA9IGluZGV4QnVmZmVyLT5nZXRJbmRleEZvcm1hdCgpOworICAgIERYR0lf
Rk9STUFUIGluZGV4Rm9ybWF0ICAgICAgPSBpbmRleEJ1ZmZlci0+Z2V0SW5kZXhGb3JtYXQoKTsK
IAogICAgIGlmIChtQXBwbGllZElCICE9IGQzZEluZGV4QnVmZmVyIHx8IG1BcHBsaWVkSUJGb3Jt
YXQgIT0gaW5kZXhGb3JtYXQgfHwKICAgICAgICAgbUFwcGxpZWRJQk9mZnNldCAhPSBvZmZzZXQp
CiAgICAgewogICAgICAgICBtRGV2aWNlQ29udGV4dC0+SUFTZXRJbmRleEJ1ZmZlcihkM2RJbmRl
eEJ1ZmZlciwgaW5kZXhGb3JtYXQsIG9mZnNldCk7Ci0gICAgICAgIG1BcHBsaWVkSUIgPSBkM2RJ
bmRleEJ1ZmZlcjsKKyAgICAgICAgbUFwcGxpZWRJQiAgICAgICA9IGQzZEluZGV4QnVmZmVyOwog
ICAgICAgICBtQXBwbGllZElCRm9ybWF0ID0gaW5kZXhGb3JtYXQ7CiAgICAgICAgIG1BcHBsaWVk
SUJPZmZzZXQgPSBvZmZzZXQ7CiAgICAgfQpAQCAtMjAyOSwxMSArMjMyOCwxMSBAQCBnbDo6RXJy
b3IgUmVuZGVyZXIxMTo6ZHJhd1RyaWFuZ2xlRmFuKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRh
dGEsCiAKICAgICBpZiAoaW5zdGFuY2VzID4gMCkKICAgICB7Ci0gICAgICAgIG1EZXZpY2VDb250
ZXh0LT5EcmF3SW5kZXhlZEluc3RhbmNlZChpbmRleENvdW50LCBpbnN0YW5jZXMsIDAsIC1taW5J
bmRleCwgMCk7CisgICAgICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3SW5kZXhlZEluc3RhbmNlZChp
bmRleENvdW50LCBpbnN0YW5jZXMsIDAsIGJhc2VWZXJ0ZXgsIDApOwogICAgIH0KICAgICBlbHNl
CiAgICAgewotICAgICAgICBtRGV2aWNlQ29udGV4dC0+RHJhd0luZGV4ZWQoaW5kZXhDb3VudCwg
MCwgLW1pbkluZGV4KTsKKyAgICAgICAgbURldmljZUNvbnRleHQtPkRyYXdJbmRleGVkKGluZGV4
Q291bnQsIDAsIGJhc2VWZXJ0ZXgpOwogICAgIH0KIAogICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OwpAQCAtMjA0MSw2ICsyMzQwLDkgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmRyYXdUcmlhbmds
ZUZhbihjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogCiBnbDo6RXJyb3IgUmVuZGVyZXIx
MTo6YXBwbHlTaGFkZXJzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIEdMZW51bSBkcmF3
TW9kZSkKIHsKKyAgICAvLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgc2luZ2xlLXRocmVhZGVkLgor
ICAgIEFOR0xFX1RSWShlbnN1cmVITFNMQ29tcGlsZXJJbml0aWFsaXplZCgpKTsKKwogICAgIGNv
bnN0IGF1dG8gJmdsU3RhdGUgICAgPSBkYXRhLmdldFN0YXRlKCk7CiAgICAgUHJvZ3JhbUQzRCAq
cHJvZ3JhbUQzRCA9IEdldEltcGxBczxQcm9ncmFtRDNEPihnbFN0YXRlLmdldFByb2dyYW0oKSk7
CiAgICAgcHJvZ3JhbUQzRC0+dXBkYXRlQ2FjaGVkSW5wdXRMYXlvdXQoZ2xTdGF0ZSk7CkBAIC0y
MDg4LDIxICsyMzkwLDIxIEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjphcHBseVNoYWRlcnMoY29u
c3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgR0xlbnVtIGRyYXdNb2RlCiAgICAgewogICAgICAg
ICBtRGV2aWNlQ29udGV4dC0+VlNTZXRTaGFkZXIodmVydGV4U2hhZGVyLCBudWxscHRyLCAwKTsK
ICAgICAgICAgbUFwcGxpZWRWZXJ0ZXhTaGFkZXIgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4odmVydGV4U2hhZGVyKTsKLSAgICAgICAgZGlydHlVbmlmb3JtcyA9IHRydWU7CisgICAgICAg
IGRpcnR5VW5pZm9ybXMgICAgICAgID0gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAocmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KGdlb21ldHJ5U2hhZGVyKSAhPSBtQXBwbGllZEdlb21ldHJ5U2hh
ZGVyKQogICAgIHsKICAgICAgICAgbURldmljZUNvbnRleHQtPkdTU2V0U2hhZGVyKGdlb21ldHJ5
U2hhZGVyLCBudWxscHRyLCAwKTsKICAgICAgICAgbUFwcGxpZWRHZW9tZXRyeVNoYWRlciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihnZW9tZXRyeVNoYWRlcik7Ci0gICAgICAgIGRpcnR5
VW5pZm9ybXMgPSB0cnVlOworICAgICAgICBkaXJ0eVVuaWZvcm1zICAgICAgICAgID0gdHJ1ZTsK
ICAgICB9CiAKICAgICBpZiAocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHBpeGVsU2hhZGVy
KSAhPSBtQXBwbGllZFBpeGVsU2hhZGVyKQogICAgIHsKICAgICAgICAgbURldmljZUNvbnRleHQt
PlBTU2V0U2hhZGVyKHBpeGVsU2hhZGVyLCBudWxscHRyLCAwKTsKICAgICAgICAgbUFwcGxpZWRQ
aXhlbFNoYWRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwaXhlbFNoYWRlcik7Ci0g
ICAgICAgIGRpcnR5VW5pZm9ybXMgPSB0cnVlOworICAgICAgICBkaXJ0eVVuaWZvcm1zICAgICAg
ID0gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoZGlydHlVbmlmb3JtcykKQEAgLTIxMjEsNyArMjQy
Myw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjphcHBseVVuaWZvcm1zKGNvbnN0IFByb2dyYW1E
M0QgJnByb2dyYW1EM0QsCiAgICAgdW5zaWduZWQgaW50IHRvdGFsUmVnaXN0ZXJDb3VudFBTID0g
MDsKIAogICAgIGJvb2wgdmVydGV4VW5pZm9ybXNEaXJ0eSA9IGZhbHNlOwotICAgIGJvb2wgcGl4
ZWxVbmlmb3Jtc0RpcnR5ID0gZmFsc2U7CisgICAgYm9vbCBwaXhlbFVuaWZvcm1zRGlydHkgID0g
ZmFsc2U7CiAKICAgICBmb3IgKGNvbnN0IEQzRFVuaWZvcm0gKnVuaWZvcm0gOiB1bmlmb3JtQXJy
YXkpCiAgICAgewpAQCAtMjE0NiwxNiArMjQ0OCwxNiBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6
YXBwbHlVbmlmb3Jtcyhjb25zdCBQcm9ncmFtRDNEICZwcm9ncmFtRDNELAogICAgIEFTU0VSVChm
cmFnbWVudFVuaWZvcm1TdG9yYWdlKTsKIAogICAgIElEM0QxMUJ1ZmZlciAqdmVydGV4Q29uc3Rh
bnRCdWZmZXIgPSB2ZXJ0ZXhVbmlmb3JtU3RvcmFnZS0+Z2V0Q29uc3RhbnRCdWZmZXIoKTsKLSAg
ICBJRDNEMTFCdWZmZXIgKnBpeGVsQ29uc3RhbnRCdWZmZXIgPSBmcmFnbWVudFVuaWZvcm1TdG9y
YWdlLT5nZXRDb25zdGFudEJ1ZmZlcigpOworICAgIElEM0QxMUJ1ZmZlciAqcGl4ZWxDb25zdGFu
dEJ1ZmZlciAgPSBmcmFnbWVudFVuaWZvcm1TdG9yYWdlLT5nZXRDb25zdGFudEJ1ZmZlcigpOwog
Ci0gICAgZmxvYXQgKCptYXBWUylbNF0gPSBOVUxMOwotICAgIGZsb2F0ICgqbWFwUFMpWzRdID0g
TlVMTDsKKyAgICBmbG9hdCgqbWFwVlMpWzRdID0gTlVMTDsKKyAgICBmbG9hdCgqbWFwUFMpWzRd
ID0gTlVMTDsKIAogICAgIGlmICh0b3RhbFJlZ2lzdGVyQ291bnRWUyA+IDAgJiYgdmVydGV4VW5p
Zm9ybXNEaXJ0eSkKICAgICB7CiAgICAgICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXAg
PSB7MH07Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZUNvbnRleHQtPk1hcCh2ZXJ0
ZXhDb25zdGFudEJ1ZmZlciwgMCwgRDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQsIDAsICZtYXApOwot
ICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHJlc3VsdCk7CisgICAgICAgIEhSRVNV
TFQgcmVzdWx0ID0KKyAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5NYXAodmVydGV4Q29uc3Rh
bnRCdWZmZXIsIDAsIEQzRDExX01BUF9XUklURV9ESVNDQVJELCAwLCAmbWFwKTsKICAgICAgICAg
QVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKICAgICAgICAgbWFwVlMgPSAoZmxvYXQoKilbNF0p
bWFwLnBEYXRhOwogICAgIH0KQEAgLTIxNjMsOCArMjQ2NSw4IEBAIGdsOjpFcnJvciBSZW5kZXJl
cjExOjphcHBseVVuaWZvcm1zKGNvbnN0IFByb2dyYW1EM0QgJnByb2dyYW1EM0QsCiAgICAgaWYg
KHRvdGFsUmVnaXN0ZXJDb3VudFBTID4gMCAmJiBwaXhlbFVuaWZvcm1zRGlydHkpCiAgICAgewog
ICAgICAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwID0gezB9OwotICAgICAgICBIUkVT
VUxUIHJlc3VsdCA9IG1EZXZpY2VDb250ZXh0LT5NYXAocGl4ZWxDb25zdGFudEJ1ZmZlciwgMCwg
RDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQsIDAsICZtYXApOwotICAgICAgICBVTlVTRURfQVNTRVJU
SU9OX1ZBUklBQkxFKHJlc3VsdCk7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0KKyAgICAgICAg
ICAgIG1EZXZpY2VDb250ZXh0LT5NYXAocGl4ZWxDb25zdGFudEJ1ZmZlciwgMCwgRDNEMTFfTUFQ
X1dSSVRFX0RJU0NBUkQsIDAsICZtYXApOwogICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3Vs
dCkpOwogICAgICAgICBtYXBQUyA9IChmbG9hdCgqKVs0XSltYXAucERhdGE7CiAgICAgfQpAQCAt
MjIyNyw3ICsyNTI5LDkgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmFwcGx5VW5pZm9ybXMoY29u
c3QgUHJvZ3JhbUQzRCAmcHJvZ3JhbUQzRCwKICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1
bHQpKTsKICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIHZl
cnRleCBzaGFkZXIgY29uc3RhbnQgYnVmZmVyLCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsKKyAg
ICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgdmVydGV4IHNoYWRlciBjb25zdGFu
dCBidWZmZXIsIHJlc3VsdDogMHglWC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQpOwogICAgICAgICB9CiAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5WU1NldENvbnN0YW50
QnVmZmVycyhkM2QxMTo6UkVTRVJWRURfQ09OU1RBTlRfQlVGRkVSX1NMT1RfRFJJVkVSLCAxLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1Ecml2ZXJDb25z
dGFudEJ1ZmZlclZTKTsKQEAgLTIyNDIsNyArMjU0Niw5IEBAIGdsOjpFcnJvciBSZW5kZXJlcjEx
OjphcHBseVVuaWZvcm1zKGNvbnN0IFByb2dyYW1EM0QgJnByb2dyYW1EM0QsCiAgICAgICAgIEFT
U0VSVChTVUNDRUVERUQocmVzdWx0KSk7CiAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAg
ICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAi
RmFpbGVkIHRvIGNyZWF0ZSBwaXhlbCBzaGFkZXIgY29uc3RhbnQgYnVmZmVyLCByZXN1bHQ6IDB4
JVguIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01F
TU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgcGl4
ZWwgc2hhZGVyIGNvbnN0YW50IGJ1ZmZlciwgcmVzdWx0OiAweCVYLiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCk7CiAgICAgICAgIH0KICAgICAgICAgbURldmljZUNvbnRl
eHQtPlBTU2V0Q29uc3RhbnRCdWZmZXJzKGQzZDExOjpSRVNFUlZFRF9DT05TVEFOVF9CVUZGRVJf
U0xPVF9EUklWRVIsIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmbURyaXZlckNvbnN0YW50QnVmZmVyUFMpOwpAQCAtMjI1MSwxMyArMjU1NywxMyBAQCBn
bDo6RXJyb3IgUmVuZGVyZXIxMTo6YXBwbHlVbmlmb3Jtcyhjb25zdCBQcm9ncmFtRDNEICZwcm9n
cmFtRDNELAogICAgIC8vIFNhbXBsZXIgbWV0YWRhdGEgYW5kIGRyaXZlciBjb25zdGFudHMgbmVl
ZCB0byBjb2V4aXN0IGluIHRoZSBzYW1lIGNvbnN0YW50IGJ1ZmZlciB0byBjb25zZXJ2ZQogICAg
IC8vIGNvbnN0YW50IGJ1ZmZlciBzbG90cy4gV2UgdXBkYXRlIGJvdGggaW4gdGhlIGNvbnN0YW50
IGJ1ZmZlciBpZiBuZWVkZWQuCiAgICAgY29uc3QgZHhfVmVydGV4Q29uc3RhbnRzMTEgJnZlcnRl
eENvbnN0YW50cyA9IG1TdGF0ZU1hbmFnZXIuZ2V0VmVydGV4Q29uc3RhbnRzKCk7Ci0gICAgc2l6
ZV90IHNhbXBsZXJNZXRhZGF0YVJlZmVyZW5jZWRCeXRlc1ZTID0gc2l6ZW9mKFNhbXBsZXJNZXRh
ZGF0YUQzRDExOjpkeF9TYW1wbGVyTWV0YWRhdGEpICoKKyAgICBzaXplX3Qgc2FtcGxlck1ldGFk
YXRhUmVmZXJlbmNlZEJ5dGVzVlMgICAgID0gc2l6ZW9mKFNhbXBsZXJNZXRhZGF0YUQzRDExOjpk
eF9TYW1wbGVyTWV0YWRhdGEpICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9ncmFtRDNELmdldFVzZWRTYW1wbGVyUmFuZ2UoZ2w6OlNBTVBMRVJfVkVS
VEVYKTsKICAgICBhcHBseURyaXZlckNvbnN0YW50c0lmTmVlZGVkKCZtQXBwbGllZFZlcnRleENv
bnN0YW50cywgdmVydGV4Q29uc3RhbnRzLCAmbVNhbXBsZXJNZXRhZGF0YVZTLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlck1ldGFkYXRhUmVmZXJlbmNlZEJ5dGVzVlMs
IG1Ecml2ZXJDb25zdGFudEJ1ZmZlclZTKTsKIAogICAgIGNvbnN0IGR4X1BpeGVsQ29uc3RhbnRz
MTEgJnBpeGVsQ29uc3RhbnRzID0gbVN0YXRlTWFuYWdlci5nZXRQaXhlbENvbnN0YW50cygpOwot
ICAgIHNpemVfdCBzYW1wbGVyTWV0YWRhdGFSZWZlcmVuY2VkQnl0ZXNQUyA9IHNpemVvZihTYW1w
bGVyTWV0YWRhdGFEM0QxMTo6ZHhfU2FtcGxlck1ldGFkYXRhKSAqCisgICAgc2l6ZV90IHNhbXBs
ZXJNZXRhZGF0YVJlZmVyZW5jZWRCeXRlc1BTICAgPSBzaXplb2YoU2FtcGxlck1ldGFkYXRhRDNE
MTE6OmR4X1NhbXBsZXJNZXRhZGF0YSkgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2dyYW1EM0QuZ2V0VXNlZFNhbXBsZXJSYW5nZShnbDo6U0FNUExF
Ul9QSVhFTCk7CiAgICAgYXBwbHlEcml2ZXJDb25zdGFudHNJZk5lZWRlZCgmbUFwcGxpZWRQaXhl
bENvbnN0YW50cywgcGl4ZWxDb25zdGFudHMsICZtU2FtcGxlck1ldGFkYXRhUFMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVyTWV0YWRhdGFSZWZlcmVuY2VkQnl0ZXNQ
UywgbURyaXZlckNvbnN0YW50QnVmZmVyUFMpOwpAQCAtMjI3NCw3ICsyNTgwLDcgQEAgZ2w6OkVy
cm9yIFJlbmRlcmVyMTE6OmFwcGx5VW5pZm9ybXMoY29uc3QgUHJvZ3JhbUQzRCAmcHJvZ3JhbUQz
RCwKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiAvLyBTYW1wbGVyTWV0YWRhdGFEM0Qx
MSBpbXBsZW1lbnRhdGlvbgpAQCAtMjMyOSw3ICsyNjM1LDcgQEAgdm9pZCBSZW5kZXJlcjExOjpT
YW1wbGVyTWV0YWRhdGFEM0QxMTo6dXBkYXRlKHVuc2lnbmVkIGludCBzYW1wbGVySW5kZXgsIGNv
bnN0IGcKICAgICAgICAgY2FzZSBHTF9SMTZJOgogICAgICAgICBjYXNlIEdMX1IxNlVJOgogICAg
ICAgICAgICAgbmVlZEludGVnZXJUZXh0dXJlTWV0YWRhdGEgPSB0cnVlOwotICAgICAgICAgICAg
aW50ZXJuYWxGb3JtYXRCaXRzICAgICA9IDE2OworICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXRC
aXRzICAgICAgICAgPSAxNjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdMX1JH
QkE4SToKICAgICAgICAgY2FzZSBHTF9SR0JBOFVJOgpAQCAtMjM0MCwxMSArMjY0NiwxMSBAQCB2
b2lkIFJlbmRlcmVyMTE6OlNhbXBsZXJNZXRhZGF0YUQzRDExOjp1cGRhdGUodW5zaWduZWQgaW50
IHNhbXBsZXJJbmRleCwgY29uc3QgZwogICAgICAgICBjYXNlIEdMX1I4SToKICAgICAgICAgY2Fz
ZSBHTF9SOFVJOgogICAgICAgICAgICAgbmVlZEludGVnZXJUZXh0dXJlTWV0YWRhdGEgPSB0cnVl
OwotICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXRCaXRzICAgICA9IDg7CisgICAgICAgICAgICBp
bnRlcm5hbEZvcm1hdEJpdHMgICAgICAgICA9IDg7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBHTF9SR0IxMF9BMlVJOgogICAgICAgICAgICAgbmVlZEludGVnZXJUZXh0dXJlTWV0
YWRhdGEgPSB0cnVlOwotICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXRCaXRzICAgICA9IDEwOwor
ICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXRCaXRzICAgICAgICAgPSAxMDsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzk4LDcg
KzI3MDQsNiBAQCB2b2lkIFJlbmRlcmVyMTE6OmFwcGx5RHJpdmVyQ29uc3RhbnRzSWZOZWVkZWQo
VFNoYWRlckNvbnN0YW50cyAqYXBwbGllZENvbnN0YW50cwogICAgICAgICBIUkVTVUxUIHJlc3Vs
dCA9CiAgICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+TWFwKGRyaXZlckNvbnN0YW50QnVmZmVy
LCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FSRCwgMCwgJm1hcHBpbmcpOwogICAgICAgICBBU1NF
UlQoU1VDQ0VFREVEKHJlc3VsdCkpOwotICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxF
KHJlc3VsdCk7CiAgICAgICAgIG1lbWNweShtYXBwaW5nLnBEYXRhLCBhcHBsaWVkQ29uc3RhbnRz
LCBzaXplb2YoVFNoYWRlckNvbnN0YW50cykpOwogICAgICAgICAvLyBQcmV2aW91cyBidWZmZXIg
Y29udGVudHMgd2VyZSBkaXNjYXJkZWQsIHNvIHdlIG5lZWQgdG8gcmVmcmVzaCBhbHNvIHRoZSBh
cmVhIG9mIHRoZQogICAgICAgICAvLyBidWZmZXIgdGhhdCBpc24ndCB1c2VkIGJ5IHRoaXMgcHJv
Z3JhbS4KQEAgLTI0MzksNyArMjc0NCw3IEBAIHZvaWQgUmVuZGVyZXIxMTo6bWFya0FsbFN0YXRl
RGlydHkoKQogCiAgICAgbVN0YXRlTWFuYWdlci5pbnZhbGlkYXRlRXZlcnl0aGluZygpOwogCi0g
ICAgbUFwcGxpZWRJQiA9IE5VTEw7CisgICAgbUFwcGxpZWRJQiAgICAgICA9IE5VTEw7CiAgICAg
bUFwcGxpZWRJQkZvcm1hdCA9IERYR0lfRk9STUFUX1VOS05PV047CiAgICAgbUFwcGxpZWRJQk9m
ZnNldCA9IDA7CiAKQEAgLTI0NTYsMTYgKzI3NjEsMTYgQEAgdm9pZCBSZW5kZXJlcjExOjptYXJr
QWxsU3RhdGVEaXJ0eSgpCiAKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGdsOjpJ
TVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1NIQURFUl9VTklGT1JNX0JVRkZFUlM7IGkrKykKICAg
ICB7Ci0gICAgICAgIG1DdXJyZW50Q29uc3RhbnRCdWZmZXJWU1tpXSA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkIGludD4oLTEpOworICAgICAgICBtQ3VycmVudENvbnN0YW50QnVmZmVyVlNbaV0gICAg
ICAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KC0xKTsKICAgICAgICAgbUN1cnJlbnRDb25z
dGFudEJ1ZmZlclZTT2Zmc2V0W2ldID0gMDsKLSAgICAgICAgbUN1cnJlbnRDb25zdGFudEJ1ZmZl
clZTU2l6ZVtpXSA9IDA7Ci0gICAgICAgIG1DdXJyZW50Q29uc3RhbnRCdWZmZXJQU1tpXSA9IHN0
YXRpY19jYXN0PHVuc2lnbmVkIGludD4oLTEpOworICAgICAgICBtQ3VycmVudENvbnN0YW50QnVm
ZmVyVlNTaXplW2ldICAgPSAwOworICAgICAgICBtQ3VycmVudENvbnN0YW50QnVmZmVyUFNbaV0g
ICAgICAgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KC0xKTsKICAgICAgICAgbUN1cnJlbnRD
b25zdGFudEJ1ZmZlclBTT2Zmc2V0W2ldID0gMDsKLSAgICAgICAgbUN1cnJlbnRDb25zdGFudEJ1
ZmZlclBTU2l6ZVtpXSA9IDA7CisgICAgICAgIG1DdXJyZW50Q29uc3RhbnRCdWZmZXJQU1NpemVb
aV0gICA9IDA7CiAgICAgfQogCi0gICAgbUN1cnJlbnRWZXJ0ZXhDb25zdGFudEJ1ZmZlciA9IE5V
TEw7Ci0gICAgbUN1cnJlbnRQaXhlbENvbnN0YW50QnVmZmVyID0gTlVMTDsKKyAgICBtQ3VycmVu
dFZlcnRleENvbnN0YW50QnVmZmVyICAgPSBOVUxMOworICAgIG1DdXJyZW50UGl4ZWxDb25zdGFu
dEJ1ZmZlciAgICA9IE5VTEw7CiAgICAgbUN1cnJlbnRHZW9tZXRyeUNvbnN0YW50QnVmZmVyID0g
TlVMTDsKIAogICAgIG1DdXJyZW50UHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RP
UE9MT0dZX1VOREVGSU5FRDsKQEAgLTI1MDMsMTEgKzI4MDgsMTEgQEAgYm9vbCBSZW5kZXJlcjEx
Ojp0ZXN0RGV2aWNlTG9zdCgpCiAKICAgICAvLyBHZXRSZW1vdmVkUmVhc29uIGlzIHVzZWQgdG8g
dGVzdCBpZiB0aGUgZGV2aWNlIGlzIHJlbW92ZWQKICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZp
Y2UtPkdldERldmljZVJlbW92ZWRSZWFzb24oKTsKLSAgICBpc0xvc3QgPSBkM2QxMTo6aXNEZXZp
Y2VMb3N0RXJyb3IocmVzdWx0KTsKKyAgICBpc0xvc3QgICAgICAgICA9IGQzZDExOjppc0Rldmlj
ZUxvc3RFcnJvcihyZXN1bHQpOwogCiAgICAgaWYgKGlzTG9zdCkKICAgICB7Ci0gICAgICAgIEVS
UigiVGhlIEQzRDExIGRldmljZSB3YXMgcmVtb3ZlZDogMHglMDhYIiwgcmVzdWx0KTsKKyAgICAg
ICAgRVJSKCkgPDwgIlRoZSBEM0QxMSBkZXZpY2Ugd2FzIHJlbW92ZWQsICIgPDwgZ2w6OkZtdEhS
KHJlc3VsdCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGlzTG9zdDsKQEAgLTI1MTYsMjUgKzI4MjEs
MjYgQEAgYm9vbCBSZW5kZXJlcjExOjp0ZXN0RGV2aWNlTG9zdCgpCiBib29sIFJlbmRlcmVyMTE6
OnRlc3REZXZpY2VSZXNldHRhYmxlKCkKIHsKICAgICAvLyBkZXRlcm1pbmUgaWYgdGhlIGRldmlj
ZSBpcyByZXNldHRhYmxlIGJ5IGNyZWF0aW5nIGEgZHVtbXkgZGV2aWNlCi0gICAgUEZOX0QzRDEx
X0NSRUFURV9ERVZJQ0UgRDNEMTFDcmVhdGVEZXZpY2UgPSAoUEZOX0QzRDExX0NSRUFURV9ERVZJ
Q0UpR2V0UHJvY0FkZHJlc3MobUQzZDExTW9kdWxlLCAiRDNEMTFDcmVhdGVEZXZpY2UiKTsKKyAg
ICBQRk5fRDNEMTFfQ1JFQVRFX0RFVklDRSBEM0QxMUNyZWF0ZURldmljZSA9CisgICAgICAgIChQ
Rk5fRDNEMTFfQ1JFQVRFX0RFVklDRSlHZXRQcm9jQWRkcmVzcyhtRDNkMTFNb2R1bGUsICJEM0Qx
MUNyZWF0ZURldmljZSIpOwogCiAgICAgaWYgKEQzRDExQ3JlYXRlRGV2aWNlID09IE5VTEwpCiAg
ICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgSUQzRDExRGV2aWNlKiBk
dW1teURldmljZTsKKyAgICBJRDNEMTFEZXZpY2UgKmR1bW15RGV2aWNlOwogICAgIEQzRF9GRUFU
VVJFX0xFVkVMIGR1bW15RmVhdHVyZUxldmVsOwotICAgIElEM0QxMURldmljZUNvbnRleHQqIGR1
bW15Q29udGV4dDsKKyAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkdW1teUNvbnRleHQ7CiAKICAg
ICBBU1NFUlQobVJlcXVlc3RlZERyaXZlclR5cGUgIT0gRDNEX0RSSVZFUl9UWVBFX1VOS05PV04p
OwogICAgIEhSRVNVTFQgcmVzdWx0ID0gRDNEMTFDcmVhdGVEZXZpY2UoCiAgICAgICAgIE5VTEws
IG1SZXF1ZXN0ZWREcml2ZXJUeXBlLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgI2lmIGRlZmluZWQoX0RFQlVHKQorI2lmIGRlZmluZWQoX0RFQlVHKQogICAg
ICAgICBEM0QxMV9DUkVBVEVfREVWSUNFX0RFQlVHLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgI2Vsc2UKKyNlbHNlCiAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyNlbmRpZgogICAgICAgICBtQXZhaWxhYmxl
RmVhdHVyZUxldmVscy5kYXRhKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obUF2YWlsYWJs
ZUZlYXR1cmVMZXZlbHMuc2l6ZSgpKSwKICAgICAgICAgRDNEMTFfU0RLX1ZFUlNJT04sICZkdW1t
eURldmljZSwgJmR1bW15RmVhdHVyZUxldmVsLCAmZHVtbXlDb250ZXh0KTsKIApAQCAtMjU1Myw3
ICsyODU5LDcgQEAgdm9pZCBSZW5kZXJlcjExOjpyZWxlYXNlKCkKIHsKICAgICBSZW5kZXJlckQz
RDo6Y2xlYW51cCgpOwogCi0gICAgbVNjcmF0Y2hNZW1vcnlCdWZmZXIucmVzaXplKDApOworICAg
IG1TY3JhdGNoTWVtb3J5QnVmZmVyLmNsZWFyKCk7CiAKICAgICBpZiAobUFubm90YXRvciAhPSBu
dWxscHRyKQogICAgIHsKQEAgLTI2MTYsNyArMjkyMiw3IEBAIGJvb2wgUmVuZGVyZXIxMTo6cmVz
ZXREZXZpY2UoKQogCiAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBF
UlIoIkNvdWxkIG5vdCByZWluaXRpYWxpemUgRDNEMTEgZGV2aWNlOiAlMDhYIiwgcmVzdWx0Lmdl
dENvZGUoKSk7CisgICAgICAgIEVSUigpIDw8ICJDb3VsZCBub3QgcmVpbml0aWFsaXplIEQzRDEx
IGRldmljZTogIiA8PCByZXN1bHQ7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTI2MzAsOCArMjkzNiwxMCBAQCBzdGQ6OnN0cmluZyBSZW5kZXJlcjExOjpnZXRSZW5kZXJlckRl
c2NyaXB0aW9uKCkgY29uc3QKICAgICByZW5kZXJlclN0cmluZyA8PCBtRGVzY3JpcHRpb247CiAg
ICAgcmVuZGVyZXJTdHJpbmcgPDwgIiBEaXJlY3QzRDExIjsKIAotICAgIHJlbmRlcmVyU3RyaW5n
IDw8ICIgdnNfIiA8PCBnZXRNYWpvclNoYWRlck1vZGVsKCkgPDwgIl8iIDw8IGdldE1pbm9yU2hh
ZGVyTW9kZWwoKSA8PCBnZXRTaGFkZXJNb2RlbFN1ZmZpeCgpOwotICAgIHJlbmRlcmVyU3RyaW5n
IDw8ICIgcHNfIiA8PCBnZXRNYWpvclNoYWRlck1vZGVsKCkgPDwgIl8iIDw8IGdldE1pbm9yU2hh
ZGVyTW9kZWwoKSA8PCBnZXRTaGFkZXJNb2RlbFN1ZmZpeCgpOworICAgIHJlbmRlcmVyU3RyaW5n
IDw8ICIgdnNfIiA8PCBnZXRNYWpvclNoYWRlck1vZGVsKCkgPDwgIl8iIDw8IGdldE1pbm9yU2hh
ZGVyTW9kZWwoKQorICAgICAgICAgICAgICAgICAgIDw8IGdldFNoYWRlck1vZGVsU3VmZml4KCk7
CisgICAgcmVuZGVyZXJTdHJpbmcgPDwgIiBwc18iIDw8IGdldE1ham9yU2hhZGVyTW9kZWwoKSA8
PCAiXyIgPDwgZ2V0TWlub3JTaGFkZXJNb2RlbCgpCisgICAgICAgICAgICAgICAgICAgPDwgZ2V0
U2hhZGVyTW9kZWxTdWZmaXgoKTsKIAogICAgIHJldHVybiByZW5kZXJlclN0cmluZy5zdHIoKTsK
IH0KQEAgLTI2MzksMTIgKzI5NDcsMTIgQEAgc3RkOjpzdHJpbmcgUmVuZGVyZXIxMTo6Z2V0UmVu
ZGVyZXJEZXNjcmlwdGlvbigpIGNvbnN0CiBEZXZpY2VJZGVudGlmaWVyIFJlbmRlcmVyMTE6Omdl
dEFkYXB0ZXJJZGVudGlmaWVyKCkgY29uc3QKIHsKICAgICAvLyBEb24ndCB1c2UgdGhlIEFkYXB0
ZXJMdWlkIGhlcmUsIHNpbmNlIHRoYXQgZG9lc24ndCBwZXJzaXN0IGFjcm9zcyByZWJvb3QuCi0g
ICAgRGV2aWNlSWRlbnRpZmllciBkZXZpY2VJZGVudGlmaWVyID0geyAwIH07Ci0gICAgZGV2aWNl
SWRlbnRpZmllci5WZW5kb3JJZCA9IG1BZGFwdGVyRGVzY3JpcHRpb24uVmVuZG9ySWQ7Ci0gICAg
ZGV2aWNlSWRlbnRpZmllci5EZXZpY2VJZCA9IG1BZGFwdGVyRGVzY3JpcHRpb24uRGV2aWNlSWQ7
Ci0gICAgZGV2aWNlSWRlbnRpZmllci5TdWJTeXNJZCA9IG1BZGFwdGVyRGVzY3JpcHRpb24uU3Vi
U3lzSWQ7Ci0gICAgZGV2aWNlSWRlbnRpZmllci5SZXZpc2lvbiA9IG1BZGFwdGVyRGVzY3JpcHRp
b24uUmV2aXNpb247Ci0gICAgZGV2aWNlSWRlbnRpZmllci5GZWF0dXJlTGV2ZWwgPSBzdGF0aWNf
Y2FzdDxVSU5UPihtUmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsKTsKKyAgICBEZXZp
Y2VJZGVudGlmaWVyIGRldmljZUlkZW50aWZpZXIgPSB7MH07CisgICAgZGV2aWNlSWRlbnRpZmll
ci5WZW5kb3JJZCAgICAgICAgID0gbUFkYXB0ZXJEZXNjcmlwdGlvbi5WZW5kb3JJZDsKKyAgICBk
ZXZpY2VJZGVudGlmaWVyLkRldmljZUlkICAgICAgICAgPSBtQWRhcHRlckRlc2NyaXB0aW9uLkRl
dmljZUlkOworICAgIGRldmljZUlkZW50aWZpZXIuU3ViU3lzSWQgICAgICAgICA9IG1BZGFwdGVy
RGVzY3JpcHRpb24uU3ViU3lzSWQ7CisgICAgZGV2aWNlSWRlbnRpZmllci5SZXZpc2lvbiAgICAg
ICAgID0gbUFkYXB0ZXJEZXNjcmlwdGlvbi5SZXZpc2lvbjsKKyAgICBkZXZpY2VJZGVudGlmaWVy
LkZlYXR1cmVMZXZlbCAgICAgPSBzdGF0aWNfY2FzdDxVSU5UPihtUmVuZGVyZXIxMURldmljZUNh
cHMuZmVhdHVyZUxldmVsKTsKIAogICAgIHJldHVybiBkZXZpY2VJZGVudGlmaWVyOwogfQpAQCAt
MjcxNyw3ICszMDI1LDggQEAgYm9vbCBSZW5kZXJlcjExOjpnZXRTaGFyZUhhbmRsZVN1cHBvcnQo
KSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgLy8gQWxzbyBkaXNh
YmxlIHNoYXJlIGhhbmRsZXMgb24gRmVhdHVyZSBMZXZlbCA5XzMsIHNpbmNlIGl0IGRvZXNuJ3Qg
c3VwcG9ydCBzaGFyZSBoYW5kbGVzIG9uIFJHQkE4IHRleHR1cmVzL3N3YXBjaGFpbnMuCisgICAg
Ly8gQWxzbyBkaXNhYmxlIHNoYXJlIGhhbmRsZXMgb24gRmVhdHVyZSBMZXZlbCA5XzMsIHNpbmNl
IGl0IGRvZXNuJ3Qgc3VwcG9ydCBzaGFyZSBoYW5kbGVzIG9uCisgICAgLy8gUkdCQTggdGV4dHVy
ZXMvc3dhcGNoYWlucy4KICAgICBpZiAobVJlbmRlcmVyMTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZl
bCA8PSBEM0RfRkVBVFVSRV9MRVZFTF85XzMpCiAgICAgewogICAgICAgICBtU3VwcG9ydHNTaGFy
ZUhhbmRsZXMgPSBmYWxzZTsKQEAgLTI3ODAsMTEgKzMwODksMTcgQEAgaW50IFJlbmRlcmVyMTE6
OmdldE1ham9yU2hhZGVyTW9kZWwoKSBjb25zdAogewogICAgIHN3aXRjaCAobVJlbmRlcmVyMTFE
ZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCkKICAgICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzExXzA6IHJldHVybiBEM0QxMV9TSEFERVJfTUFKT1JfVkVSU0lPTjsgICAvLyA1Ci0gICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6IHJldHVybiBEM0QxMF8xX1NIQURFUl9NQUpP
Ul9WRVJTSU9OOyAvLyA0Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJldHVy
biBEM0QxMF9TSEFERVJfTUFKT1JfVkVSU0lPTjsgICAvLyA0Ci0gICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzlfMzogIHJldHVybiBEM0QxMF9TSEFERVJfTUFKT1JfVkVSU0lPTjsgICAvLyA0
Ci0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgIHJldHVybiAwOworICAgICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgICAgICByZXR1cm4gRDNEMTFfU0hB
REVSX01BSk9SX1ZFUlNJT047ICAvLyA1CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxf
MTBfMToKKyAgICAgICAgICAgIHJldHVybiBEM0QxMF8xX1NIQURFUl9NQUpPUl9WRVJTSU9OOyAg
Ly8gNAorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgICAgICBy
ZXR1cm4gRDNEMTBfU0hBREVSX01BSk9SX1ZFUlNJT047ICAvLyA0CisgICAgICAgIGNhc2UgRDNE
X0ZFQVRVUkVfTEVWRUxfOV8zOgorICAgICAgICAgICAgcmV0dXJuIEQzRDEwX1NIQURFUl9NQUpP
Ul9WRVJTSU9OOyAgLy8gNAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KIApAQCAtMjc5MiwxMSArMzEw
NywxNyBAQCBpbnQgUmVuZGVyZXIxMTo6Z2V0TWlub3JTaGFkZXJNb2RlbCgpIGNvbnN0CiB7CiAg
ICAgc3dpdGNoIChtUmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsKQogICAgIHsKLSAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDogcmV0dXJuIEQzRDExX1NIQURFUl9NSU5P
Ul9WRVJTSU9OOyAgIC8vIDAKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMTogcmV0
dXJuIEQzRDEwXzFfU0hBREVSX01JTk9SX1ZFUlNJT047IC8vIDEKLSAgICAgIGNhc2UgRDNEX0ZF
QVRVUkVfTEVWRUxfMTBfMDogcmV0dXJuIEQzRDEwX1NIQURFUl9NSU5PUl9WRVJTSU9OOyAgIC8v
IDAKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOiAgcmV0dXJuIEQzRDEwX1NIQURF
Ul9NSU5PUl9WRVJTSU9OOyAgIC8vIDAKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAg
ICAgICAgIHJldHVybiBEM0QxMV9TSEFERVJfTUlOT1JfVkVSU0lPTjsgIC8vIDAKKyAgICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAgICAgICAgcmV0dXJuIEQzRDEwXzFf
U0hBREVSX01JTk9SX1ZFUlNJT047ICAvLyAxCisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfMTBfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMF9TSEFERVJfTUlOT1JfVkVSU0lPTjsg
IC8vIDAKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6CisgICAgICAgICAgICBy
ZXR1cm4gRDNEMTBfU0hBREVSX01JTk9SX1ZFUlNJT047ICAvLyAwCisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogfQogCkBAIC0yODA0LDE1ICszMTI1LDIxIEBAIHN0ZDo6c3RyaW5nIFJlbmRlcmVyMTE6Omdl
dFNoYWRlck1vZGVsU3VmZml4KCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1SZW5kZXJlcjExRGV2
aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwpCiAgICAgewotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF8xMV8wOiByZXR1cm4gIiI7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6IHJl
dHVybiAiIjsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDogcmV0dXJuICIiOwot
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6ICByZXR1cm4gIl9sZXZlbF85XzMiOwot
ICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsgICAgICByZXR1cm4gIiI7CisgICAgICAgIGNh
c2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAgICAgICAgcmV0dXJuICIiOwor
ICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgICAgICByZXR1cm4g
IiI7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgorICAgICAgICAgICAgcmV0
dXJuICJfbGV2ZWxfOV8zIjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICByZXR1cm4gIiI7CiAgICAgfQogfQogCi1jb25zdCBXb3JrYXJv
dW5kc0QzRCAmUmVuZGVyZXJEM0Q6OmdldFdvcmthcm91bmRzKCkgY29uc3QKK2NvbnN0IGFuZ2xl
OjpXb3JrYXJvdW5kc0QzRCAmUmVuZGVyZXJEM0Q6OmdldFdvcmthcm91bmRzKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1Xb3JrYXJvdW5kc0luaXRpYWxpemVkKQogICAgIHsKQEAgLTI4ODYsMTMgKzMy
MTMsMTggQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNvcHlJbWFnZTJEKGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlciAqZnJhbWVidWZmZXIsCiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWds
OjpFcnJvciBSZW5kZXJlcjExOjpjb3B5SW1hZ2VDdWJlKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAq
ZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0
Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9m
ZnNldCAmZGVzdE9mZnNldCwgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIEdMZW51bSB0YXJnZXQs
IEdMaW50IGxldmVsKQorZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNvcHlJbWFnZUN1YmUoY29uc3Qg
Z2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCkKIHsKICAgICBUZXh0
dXJlU3RvcmFnZTExX0N1YmUgKnN0b3JhZ2UxMSA9IEdldEFzPFRleHR1cmVTdG9yYWdlMTFfQ3Vi
ZT4oc3RvcmFnZSk7CiAgICAgQVNTRVJUKHN0b3JhZ2UxMSk7CiAKLSAgICBnbDo6SW1hZ2VJbmRl
eCBpbmRleCA9IGdsOjpJbWFnZUluZGV4OjpNYWtlQ3ViZSh0YXJnZXQsIGxldmVsKTsKKyAgICBn
bDo6SW1hZ2VJbmRleCBpbmRleCAgICAgICAgICAgICAgPSBnbDo6SW1hZ2VJbmRleDo6TWFrZUN1
YmUodGFyZ2V0LCBsZXZlbCk7CiAgICAgUmVuZGVyVGFyZ2V0RDNEICpkZXN0UmVuZGVyVGFyZ2V0
ID0gbnVsbHB0cjsKICAgICBBTkdMRV9UUlkoc3RvcmFnZTExLT5nZXRSZW5kZXJUYXJnZXQoaW5k
ZXgsICZkZXN0UmVuZGVyVGFyZ2V0KSk7CiAgICAgQVNTRVJUKGRlc3RSZW5kZXJUYXJnZXQpOwpA
QCAtMjkwNCwxMyArMzIzNiwxNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y29weUltYWdlQ3Vi
ZShjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbAogICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y29weUltYWdlM0Qo
Y29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OlJlY3RhbmdsZSAm
c291cmNlUmVjdCwgR0xlbnVtIGRlc3RGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwgVGV4dHVyZVN0b3JhZ2UgKnN0
b3JhZ2UsIEdMaW50IGxldmVsKQorZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNvcHlJbWFnZTNEKGNv
bnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVjdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsKQogewogICAgIFRleHR1
cmVTdG9yYWdlMTFfM0QgKnN0b3JhZ2UxMSA9IEdldEFzPFRleHR1cmVTdG9yYWdlMTFfM0Q+KHN0
b3JhZ2UpOwogICAgIEFTU0VSVChzdG9yYWdlMTEpOwogCi0gICAgZ2w6OkltYWdlSW5kZXggaW5k
ZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFrZTNEKGxldmVsLCBkZXN0T2Zmc2V0LnopOworICAgIGds
OjpJbWFnZUluZGV4IGluZGV4ICAgICAgICAgICAgICA9IGdsOjpJbWFnZUluZGV4OjpNYWtlM0Qo
bGV2ZWwsIGRlc3RPZmZzZXQueik7CiAgICAgUmVuZGVyVGFyZ2V0RDNEICpkZXN0UmVuZGVyVGFy
Z2V0ID0gbnVsbHB0cjsKICAgICBBTkdMRV9UUlkoc3RvcmFnZTExLT5nZXRSZW5kZXJUYXJnZXQo
aW5kZXgsICZkZXN0UmVuZGVyVGFyZ2V0KSk7CiAgICAgQVNTRVJUKGRlc3RSZW5kZXJUYXJnZXQp
OwpAQCAtMjkyMiwxMyArMzI1OCwxNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y29weUltYWdl
M0QoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OgogICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y29weUltYWdl
MkRBcnJheShjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6UmVj
dGFuZ2xlICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsIFRleHR1
cmVTdG9yYWdlICpzdG9yYWdlLCBHTGludCBsZXZlbCkKK2dsOjpFcnJvciBSZW5kZXJlcjExOjpj
b3B5SW1hZ2UyREFycmF5KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZz
b3VyY2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCkKIHsKICAgICBUZXh0dXJlU3RvcmFnZTExXzJE
QXJyYXkgKnN0b3JhZ2UxMSA9IEdldEFzPFRleHR1cmVTdG9yYWdlMTFfMkRBcnJheT4oc3RvcmFn
ZSk7CiAgICAgQVNTRVJUKHN0b3JhZ2UxMSk7CiAKLSAgICBnbDo6SW1hZ2VJbmRleCBpbmRleCA9
IGdsOjpJbWFnZUluZGV4OjpNYWtlMkRBcnJheShsZXZlbCwgZGVzdE9mZnNldC56KTsKKyAgICBn
bDo6SW1hZ2VJbmRleCBpbmRleCAgICAgICAgICAgICAgPSBnbDo6SW1hZ2VJbmRleDo6TWFrZTJE
QXJyYXkobGV2ZWwsIGRlc3RPZmZzZXQueik7CiAgICAgUmVuZGVyVGFyZ2V0RDNEICpkZXN0UmVu
ZGVyVGFyZ2V0ID0gbnVsbHB0cjsKICAgICBBTkdMRV9UUlkoc3RvcmFnZTExLT5nZXRSZW5kZXJU
YXJnZXQoaW5kZXgsICZkZXN0UmVuZGVyVGFyZ2V0KSk7CiAgICAgQVNTRVJUKGRlc3RSZW5kZXJU
YXJnZXQpOwpAQCAtMjk0NSw2ICszMjg1LDcgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNvcHlU
ZXh0dXJlKGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGRlc3RGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBkZXN0TGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCB1bnBhY2tGbGlwWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCkBAIC0yOTU1LDYgKzMyOTYsNyBA
QCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y29weVRleHR1cmUoY29uc3QgZ2w6OlRleHR1cmUgKnNv
dXJjZSwKICAgICBUZXh0dXJlU3RvcmFnZSAqc291cmNlU3RvcmFnZSA9IG51bGxwdHI7CiAgICAg
QU5HTEVfVFJZKGNvbnN0X2Nhc3Q8VGV4dHVyZUQzRCAqPihzb3VyY2VEM0QpLT5nZXROYXRpdmVU
ZXh0dXJlKCZzb3VyY2VTdG9yYWdlKSk7CiAKKyAgICBBU1NFUlQoZGVzdFRhcmdldCA9PSBHTF9U
RVhUVVJFXzJEKTsKICAgICBUZXh0dXJlU3RvcmFnZTExXzJEICpzb3VyY2VTdG9yYWdlMTEgPSBH
ZXRBczxUZXh0dXJlU3RvcmFnZTExXzJEPihzb3VyY2VTdG9yYWdlKTsKICAgICBBU1NFUlQoc291
cmNlU3RvcmFnZTExKTsKIApAQCAtMzA2NCwyNyArMzQwNiwzMSBAQCBnbDo6RXJyb3IgUmVuZGVy
ZXIxMTo6Y29weUNvbXByZXNzZWRUZXh0dXJlKGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UsCiAg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJlcjExOjpjcmVh
dGVSZW5kZXJUYXJnZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNp
emVpIHNhbXBsZXMsIFJlbmRlclRhcmdldEQzRCAqKm91dFJUKQorZ2w6OkVycm9yIFJlbmRlcmVy
MTE6OmNyZWF0ZVJlbmRlclRhcmdldChpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpCiB7CiAgICAgY29uc3Qg
ZDNkMTE6OkZvcm1hdCAmZm9ybWF0SW5mbyA9IGQzZDExOjpGb3JtYXQ6OkdldChmb3JtYXQsIG1S
ZW5kZXJlcjExRGV2aWNlQ2Fwcyk7CiAKICAgICBjb25zdCBnbDo6VGV4dHVyZUNhcHMgJnRleHR1
cmVDYXBzID0gZ2V0TmF0aXZlVGV4dHVyZUNhcHMoKS5nZXQoZm9ybWF0KTsKLSAgICBHTHVpbnQg
c3VwcG9ydGVkU2FtcGxlcyA9IHRleHR1cmVDYXBzLmdldE5lYXJlc3RTYW1wbGVzKHNhbXBsZXMp
OworICAgIEdMdWludCBzdXBwb3J0ZWRTYW1wbGVzICAgICAgICAgICAgPSB0ZXh0dXJlQ2Fwcy5n
ZXROZWFyZXN0U2FtcGxlcyhzYW1wbGVzKTsKIAogICAgIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0
ID4gMCkKICAgICB7CiAgICAgICAgIC8vIENyZWF0ZSB0ZXh0dXJlIHJlc291cmNlCiAgICAgICAg
IEQzRDExX1RFWFRVUkUyRF9ERVNDIGRlc2M7Ci0gICAgICAgIGRlc2MuV2lkdGggPSB3aWR0aDsK
LSAgICAgICAgZGVzYy5IZWlnaHQgPSBoZWlnaHQ7Ci0gICAgICAgIGRlc2MuTWlwTGV2ZWxzID0g
MTsKLSAgICAgICAgZGVzYy5BcnJheVNpemUgPSAxOworICAgICAgICBkZXNjLldpZHRoICAgICAg
ICAgICAgICA9IHdpZHRoOworICAgICAgICBkZXNjLkhlaWdodCAgICAgICAgICAgICA9IGhlaWdo
dDsKKyAgICAgICAgZGVzYy5NaXBMZXZlbHMgICAgICAgICAgPSAxOworICAgICAgICBkZXNjLkFy
cmF5U2l6ZSAgICAgICAgICA9IDE7CiAgICAgICAgIGRlc2MuRm9ybWF0ICAgICAgICAgICAgID0g
Zm9ybWF0SW5mby50ZXhGb3JtYXQ7Ci0gICAgICAgIGRlc2MuU2FtcGxlRGVzYy5Db3VudCA9IChz
dXBwb3J0ZWRTYW1wbGVzID09IDApID8gMSA6IHN1cHBvcnRlZFNhbXBsZXM7CisgICAgICAgIGRl
c2MuU2FtcGxlRGVzYy5Db3VudCAgID0gKHN1cHBvcnRlZFNhbXBsZXMgPT0gMCkgPyAxIDogc3Vw
cG9ydGVkU2FtcGxlczsKICAgICAgICAgZGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOwotICAg
ICAgICBkZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKLSAgICAgICAgZGVzYy5DUFVB
Y2Nlc3NGbGFncyA9IDA7Ci0gICAgICAgIGRlc2MuTWlzY0ZsYWdzID0gMDsKKyAgICAgICAgZGVz
Yy5Vc2FnZSAgICAgICAgICAgICAgPSBEM0QxMV9VU0FHRV9ERUZBVUxUOworICAgICAgICBkZXNj
LkNQVUFjY2Vzc0ZsYWdzICAgICA9IDA7CisgICAgICAgIGRlc2MuTWlzY0ZsYWdzICAgICAgICAg
ID0gMDsKIAogICAgICAgICAvLyBJZiBhIHJlbmRlcnRhcmdldCBvciBkZXB0aHN0ZW5jaWwgZm9y
bWF0IGV4aXN0cyBmb3IgdGhpcyB0ZXh0dXJlIGZvcm1hdCwKICAgICAgICAgLy8gd2UnbGwgZmxh
ZyBpdCB0byBhbGxvdyBiaW5kaW5nIHRoYXQgd2F5LiBTaGFkZXIgcmVzb3VyY2Ugdmlld3MgYXJl
IGEgbGl0dGxlCkBAIC0zMDk0LDE5ICszNDQwLDMwIEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpj
cmVhdGVSZW5kZXJUYXJnZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBH
CiAgICAgICAgIGJpbmREU1YgPSAoZm9ybWF0SW5mby5kc3ZGb3JtYXQgIT0gRFhHSV9GT1JNQVRf
VU5LTk9XTik7CiAgICAgICAgIGJpbmRTUlYgPSAoZm9ybWF0SW5mby5zcnZGb3JtYXQgIT0gRFhH
SV9GT1JNQVRfVU5LTk9XTik7CiAKLSAgICAgICAgZGVzYy5CaW5kRmxhZ3MgPSAoYmluZFJUViA/
IEQzRDExX0JJTkRfUkVOREVSX1RBUkdFVCAgIDogMCkgfAotICAgICAgICAgICAgICAgICAgICAg
ICAgIChiaW5kRFNWID8gRDNEMTFfQklORF9ERVBUSF9TVEVOQ0lMICAgOiAwKSB8CisgICAgICAg
IC8vIEQzRCBmZWF0dXJlIGxldmVsIDEwLjAgbm8gbG9uZ2VyIGFsbG93cyBjcmVhdGlvbiBvZiB0
ZXh0dXJlcyB3aXRoIGJvdGggdGhlIGJpbmQgU1JWIGFuZAorICAgICAgICAvLyBEU1YgZmxhZ3Mg
d2hlbiBtdWx0aXNhbXBsZWQuICBjcmJ1Zy5jb20vNjU2OTg5CisgICAgICAgIGJvb2wgc3VwcG9y
dHNNdWx0aXNhbXBsZWREZXB0aFN0ZW5jaWxTUlZzID0KKyAgICAgICAgICAgIG1SZW5kZXJlcjEx
RGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwgPiBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOworICAgICAg
ICBib29sIGlzTXVsdGlzYW1wbGVkRGVwdGhTdGVuY2lsID0gYmluZERTViAmJiBkZXNjLlNhbXBs
ZURlc2MuQ291bnQgPiAxOworICAgICAgICBpZiAoaXNNdWx0aXNhbXBsZWREZXB0aFN0ZW5jaWwg
JiYgIXN1cHBvcnRzTXVsdGlzYW1wbGVkRGVwdGhTdGVuY2lsU1JWcykKKyAgICAgICAgeworICAg
ICAgICAgICAgYmluZFNSViA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgZGVzYy5CaW5k
RmxhZ3MgPSAoYmluZFJUViA/IEQzRDExX0JJTkRfUkVOREVSX1RBUkdFVCA6IDApIHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAoYmluZERTViA/IEQzRDExX0JJTkRfREVQVEhfU1RFTkNJTCA6
IDApIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAoYmluZFNSViA/IEQzRDExX0JJTkRfU0hB
REVSX1JFU09VUkNFIDogMCk7CiAKICAgICAgICAgLy8gVGhlIGZvcm1hdCBtdXN0IGJlIGVpdGhl
ciBhbiBSVFYgb3IgYSBEU1YKICAgICAgICAgQVNTRVJUKGJpbmRSVFYgIT0gYmluZERTVik7CiAK
ICAgICAgICAgSUQzRDExVGV4dHVyZTJEICp0ZXh0dXJlID0gTlVMTDsKLSAgICAgICAgSFJFU1VM
VCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRlc2MsIE5VTEwsICZ0ZXh0dXJl
KTsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgICAgICAgICAgID0gbURldmljZS0+Q3JlYXRlVGV4
dHVyZTJEKCZkZXNjLCBOVUxMLCAmdGV4dHVyZSk7CiAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0
KSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZ
KTsKLSAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxl
ZCB0byBjcmVhdGUgcmVuZGVyIHRhcmdldCB0ZXh0dXJlLCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0
KTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgcmVuZGVyIHRhcmdldCB0
ZXh0dXJlLCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsKICAgICAgICAgfQogCiAgICAgICAgIElE
M0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2ICAgICA9IG51bGxwdHI7CkBAIC0zMTE0LDE3ICsz
NDcxLDIwIEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpjcmVhdGVSZW5kZXJUYXJnZXQoaW50IHdp
ZHRoLCBpbnQgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHCiAgICAgICAgIGlmIChiaW5kU1JWKQog
ICAgICAgICB7CiAgICAgICAgICAgICBEM0QxMV9TSEFERVJfUkVTT1VSQ0VfVklFV19ERVNDIHNy
dkRlc2M7Ci0gICAgICAgICAgICBzcnZEZXNjLkZvcm1hdCA9IGZvcm1hdEluZm8uc3J2Rm9ybWF0
OwotICAgICAgICAgICAgc3J2RGVzYy5WaWV3RGltZW5zaW9uID0gKHN1cHBvcnRlZFNhbXBsZXMg
PT0gMCkgPyBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUyRCA6IEQzRDExX1NSVl9ESU1FTlNJ
T05fVEVYVFVSRTJETVM7CisgICAgICAgICAgICBzcnZEZXNjLkZvcm1hdCAgICAgICAgPSBmb3Jt
YXRJbmZvLnNydkZvcm1hdDsKKyAgICAgICAgICAgIHNydkRlc2MuVmlld0RpbWVuc2lvbiA9IChz
dXBwb3J0ZWRTYW1wbGVzID09IDApID8gRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkQKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDogRDNEMTFfU1JWX0RJTUVOU0lPTl9URVhUVVJFMkRNUzsKICAgICAgICAgICAgIHNydkRlc2Mu
VGV4dHVyZTJELk1vc3REZXRhaWxlZE1pcCA9IDA7Ci0gICAgICAgICAgICBzcnZEZXNjLlRleHR1
cmUyRC5NaXBMZXZlbHMgPSAxOworICAgICAgICAgICAgc3J2RGVzYy5UZXh0dXJlMkQuTWlwTGV2
ZWxzICAgICAgID0gMTsKIAogICAgICAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlU2hh
ZGVyUmVzb3VyY2VWaWV3KHRleHR1cmUsICZzcnZEZXNjLCAmc3J2KTsKICAgICAgICAgICAgIGlm
IChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBBU1NFUlQo
cmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpOwogICAgICAgICAgICAgICAgIFNhZmVSZWxlYXNlKHRl
eHR1cmUpOwotICAgICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9S
WSwgIkZhaWxlZCB0byBjcmVhdGUgcmVuZGVyIHRhcmdldCBzaGFkZXIgcmVzb3VyY2Ugdmlldywg
cmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJv
cigKKyAgICAgICAgICAgICAgICAgICAgR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAg
ICAgICAgIkZhaWxlZCB0byBjcmVhdGUgcmVuZGVyIHRhcmdldCBzaGFkZXIgcmVzb3VyY2Ugdmll
dywgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmIChmb3JtYXRJbmZvLmJsaXRTUlZGb3JtYXQgIT0gZm9ybWF0SW5mby5zcnZGb3JtYXQpCkBA
IC0zMTU5LDIwICszNTE5LDIzIEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpjcmVhdGVSZW5kZXJU
YXJnZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHCiAgICAgICAgIGlm
IChiaW5kRFNWKQogICAgICAgICB7CiAgICAgICAgICAgICBEM0QxMV9ERVBUSF9TVEVOQ0lMX1ZJ
RVdfREVTQyBkc3ZEZXNjOwotICAgICAgICAgICAgZHN2RGVzYy5Gb3JtYXQgPSBmb3JtYXRJbmZv
LmRzdkZvcm1hdDsKLSAgICAgICAgICAgIGRzdkRlc2MuVmlld0RpbWVuc2lvbiA9IChzdXBwb3J0
ZWRTYW1wbGVzID09IDApID8gRDNEMTFfRFNWX0RJTUVOU0lPTl9URVhUVVJFMkQgOiBEM0QxMV9E
U1ZfRElNRU5TSU9OX1RFWFRVUkUyRE1TOworICAgICAgICAgICAgZHN2RGVzYy5Gb3JtYXQgICAg
ICAgID0gZm9ybWF0SW5mby5kc3ZGb3JtYXQ7CisgICAgICAgICAgICBkc3ZEZXNjLlZpZXdEaW1l
bnNpb24gPSAoc3VwcG9ydGVkU2FtcGxlcyA9PSAwKSA/IEQzRDExX0RTVl9ESU1FTlNJT05fVEVY
VFVSRTJECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTJETVM7CiAgICAgICAgICAg
ICBkc3ZEZXNjLlRleHR1cmUyRC5NaXBTbGljZSA9IDA7Ci0gICAgICAgICAgICBkc3ZEZXNjLkZs
YWdzID0gMDsKKyAgICAgICAgICAgIGRzdkRlc2MuRmxhZ3MgICAgICAgICAgICAgID0gMDsKIAog
ICAgICAgICAgICAgSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZHN2ID0gTlVMTDsKLSAgICAgICAg
ICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZURlcHRoU3RlbmNpbFZpZXcodGV4dHVyZSwgJmRz
dkRlc2MsICZkc3YpOworICAgICAgICAgICAgcmVzdWx0ICAgICAgICAgICAgICAgICAgICAgID0g
bURldmljZS0+Q3JlYXRlRGVwdGhTdGVuY2lsVmlldyh0ZXh0dXJlLCAmZHN2RGVzYywgJmRzdik7
CiAgICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKICAgICAgICAgICAgICAg
ICBTYWZlUmVsZWFzZSh0ZXh0dXJlKTsKICAgICAgICAgICAgICAgICBTYWZlUmVsZWFzZShzcnYp
OwogICAgICAgICAgICAgICAgIFNhZmVSZWxlYXNlKGJsaXRTUlYpOwotICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgcmVu
ZGVyIHRhcmdldCBkZXB0aCBzdGVuY2lsIHZpZXcsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIHJlbmRlciB0YXJn
ZXQgZGVwdGggc3RlbmNpbCB2aWV3LCByZXN1bHQ6IDB4JVguIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICpv
dXRSVCA9IG5ldyBUZXh0dXJlUmVuZGVyVGFyZ2V0MTEoZHN2LCB0ZXh0dXJlLCBzcnYsIGZvcm1h
dCwgZm9ybWF0SW5mbywgd2lkdGgsIGhlaWdodCwKQEAgLTMxODMsMjQgKzM1NDYsMjcgQEAgZ2w6
OkVycm9yIFJlbmRlcmVyMTE6OmNyZWF0ZVJlbmRlclRhcmdldChpbnQgd2lkdGgsIGludCBoZWln
aHQsIEdMZW51bSBmb3JtYXQsIEcKICAgICAgICAgZWxzZSBpZiAoYmluZFJUVikKICAgICAgICAg
ewogICAgICAgICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKLSAg
ICAgICAgICAgIHJ0dkRlc2MuRm9ybWF0ID0gZm9ybWF0SW5mby5ydHZGb3JtYXQ7Ci0gICAgICAg
ICAgICBydHZEZXNjLlZpZXdEaW1lbnNpb24gPSAoc3VwcG9ydGVkU2FtcGxlcyA9PSAwKSA/IEQz
RDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJEIDogRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJF
MkRNUzsKKyAgICAgICAgICAgIHJ0dkRlc2MuRm9ybWF0ICAgICAgICA9IGZvcm1hdEluZm8ucnR2
Rm9ybWF0OworICAgICAgICAgICAgcnR2RGVzYy5WaWV3RGltZW5zaW9uID0gKHN1cHBvcnRlZFNh
bXBsZXMgPT0gMCkgPyBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUyRAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBEM0QxMV9S
VFZfRElNRU5TSU9OX1RFWFRVUkUyRE1TOwogICAgICAgICAgICAgcnR2RGVzYy5UZXh0dXJlMkQu
TWlwU2xpY2UgPSAwOwogCiAgICAgICAgICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpydHYg
PSBOVUxMOwotICAgICAgICAgICAgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlUmVuZGVyVGFyZ2V0
Vmlldyh0ZXh0dXJlLCAmcnR2RGVzYywgJnJ0dik7CisgICAgICAgICAgICByZXN1bHQgICAgICAg
ICAgICAgICAgICAgICAgPSBtRGV2aWNlLT5DcmVhdGVSZW5kZXJUYXJnZXRWaWV3KHRleHR1cmUs
ICZydHZEZXNjLCAmcnR2KTsKICAgICAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkp
OwogICAgICAgICAgICAgICAgIFNhZmVSZWxlYXNlKHRleHR1cmUpOwogICAgICAgICAgICAgICAg
IFNhZmVSZWxlYXNlKHNydik7CiAgICAgICAgICAgICAgICAgU2FmZVJlbGVhc2UoYmxpdFNSVik7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFp
bGVkIHRvIGNyZWF0ZSByZW5kZXIgdGFyZ2V0IHJlbmRlciB0YXJnZXQgdmlldywgcmVzdWx0OiAw
eCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRf
T0ZfTUVNT1JZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBj
cmVhdGUgcmVuZGVyIHRhcmdldCByZW5kZXIgdGFyZ2V0IHZpZXcsIHJlc3VsdDogMHglWC4iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgaWYgKGZvcm1hdEluZm8uZGF0YUluaXRpYWxpemVyRnVuY3Rpb24gIT0g
TlVMTCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBjbGVhclZh
bHVlc1s0XSA9IHsgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiB9OworICAgICAgICAgICAgICAgIGNv
bnN0IGZsb2F0IGNsZWFyVmFsdWVzWzRdID0gezAuMGYsIDAuMGYsIDAuMGYsIDEuMGZ9OwogICAg
ICAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5DbGVhclJlbmRlclRhcmdldFZpZXcocnR2LCBj
bGVhclZhbHVlcyk7CiAgICAgICAgICAgICB9CiAKQEAgLTMyMjUsNyArMzU5MSw3IEBAIGdsOjpF
cnJvciBSZW5kZXJlcjExOjpjcmVhdGVSZW5kZXJUYXJnZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCBHTGVudW0gZm9ybWF0LCBHCiAgICAgICAgICAgICBkM2QxMTo6Rm9ybWF0OjpHZXQoR0xfTk9O
RSwgbVJlbmRlcmVyMTFEZXZpY2VDYXBzKSwgd2lkdGgsIGhlaWdodCwgMSwgc3VwcG9ydGVkU2Ft
cGxlcyk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBSZW5kZXJlcjExOjpjcmVhdGVS
ZW5kZXJUYXJnZXRDb3B5KFJlbmRlclRhcmdldEQzRCAqc291cmNlLCBSZW5kZXJUYXJnZXREM0Qg
KipvdXRSVCkKQEAgLTMyNDMsNyArMzYwOSw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpjcmVh
dGVSZW5kZXJUYXJnZXRDb3B5KFJlbmRlclRhcmdldEQzRCAqc291cmNlLCBSZW5kZXJUYXJnCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBzb3VyY2UxMS0+Z2V0
VGV4dHVyZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291
cmNlMTEtPmdldFN1YnJlc291cmNlSW5kZXgoKSwgbnVsbHB0cik7CiAgICAgKm91dFJUID0gbmV3
UlQ7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBSZW5kZXJlcjExOjpsb2FkRXhlY3V0YWJsZShjb25z
dCB2b2lkICpmdW5jdGlvbiwKQEAgLTMyNTUsMTYgKzM2MjEsMTYgQEAgZ2w6OkVycm9yIFJlbmRl
cmVyMTE6OmxvYWRFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLAogewogICAgIHN3aXRj
aCAodHlwZSkKICAgICB7Ci0gICAgICBjYXNlIFNIQURFUl9WRVJURVg6CisgICAgICAgIGNhc2Ug
U0hBREVSX1ZFUlRFWDoKICAgICAgICAgewotICAgICAgICAgICAgSUQzRDExVmVydGV4U2hhZGVy
ICp2ZXJ0ZXhTaGFkZXIgPSBOVUxMOwotICAgICAgICAgICAgSUQzRDExR2VvbWV0cnlTaGFkZXIg
KnN0cmVhbU91dFNoYWRlciA9IE5VTEw7CisgICAgICAgICAgICBJRDNEMTFWZXJ0ZXhTaGFkZXIg
KnZlcnRleFNoYWRlciAgICAgID0gbnVsbHB0cjsKKyAgICAgICAgICAgIElEM0QxMUdlb21ldHJ5
U2hhZGVyICpzdHJlYW1PdXRTaGFkZXIgPSBudWxscHRyOwogCiAgICAgICAgICAgICBIUkVTVUxU
IHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVZlcnRleFNoYWRlcihmdW5jdGlvbiwgbGVuZ3RoLCBO
VUxMLCAmdmVydGV4U2hhZGVyKTsKICAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0
KSk7CiAgICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRv
IGNyZWF0ZSB2ZXJ0ZXggc2hhZGVyLCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZ2w6Ok91dE9mTWVtb3J5KCkgPDwgIkZhaWxlZCB0byBjcmVhdGUgdmVy
dGV4IHNoYWRlciwgIiA8PCByZXN1bHQ7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
ICghc3RyZWFtT3V0VmFyeWluZ3MuZW1wdHkoKSkKQEAgLTMyNzksOCArMzY0NSw4IEBAIGdsOjpF
cnJvciBSZW5kZXJlcjExOjpsb2FkRXhlY3V0YWJsZShjb25zdCB2b2lkICpmdW5jdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgZW50cnkuU2VtYW50aWNOYW1lICAgICAgICAgICAgICAgPSBzdHJl
YW1PdXRWYXJ5aW5nLnNlbWFudGljTmFtZS5jX3N0cigpOwogICAgICAgICAgICAgICAgICAgICBl
bnRyeS5TZW1hbnRpY0luZGV4ICAgICAgICAgICAgICA9IHN0cmVhbU91dFZhcnlpbmcuc2VtYW50
aWNJbmRleDsKICAgICAgICAgICAgICAgICAgICAgZW50cnkuU3RhcnRDb21wb25lbnQgICAgICAg
ICAgICAgPSAwOwotICAgICAgICAgICAgICAgICAgICBlbnRyeS5Db21wb25lbnRDb3VudCAgICAg
ICAgICAgICA9IHN0YXRpY19jYXN0PEJZVEU+KHN0cmVhbU91dFZhcnlpbmcuY29tcG9uZW50Q291
bnQpOwotICAgICAgICAgICAgICAgICAgICBlbnRyeS5PdXRwdXRTbG90ID0gc3RhdGljX2Nhc3Q8
QllURT4oCisgICAgICAgICAgICAgICAgICAgIGVudHJ5LkNvbXBvbmVudENvdW50ID0gc3RhdGlj
X2Nhc3Q8QllURT4oc3RyZWFtT3V0VmFyeWluZy5jb21wb25lbnRDb3VudCk7CisgICAgICAgICAg
ICAgICAgICAgIGVudHJ5Lk91dHB1dFNsb3QgICAgID0gc3RhdGljX2Nhc3Q8QllURT4oCiAgICAg
ICAgICAgICAgICAgICAgICAgICAoc2VwYXJhdGVkT3V0cHV0QnVmZmVycyA/IHN0cmVhbU91dFZh
cnlpbmcub3V0cHV0U2xvdCA6IDApKTsKICAgICAgICAgICAgICAgICAgICAgc29EZWNsYXJhdGlv
bi5wdXNoX2JhY2soZW50cnkpOwogICAgICAgICAgICAgICAgIH0KQEAgLTMyOTIsNDcgKzM2NTgs
NjIgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmxvYWRFeGVjdXRhYmxlKGNvbnN0IHZvaWQgKmZ1
bmN0aW9uLAogICAgICAgICAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CiAgICAg
ICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVk
IHRvIGNyZWF0ZSBzdGVhbSBvdXRwdXQgc2hhZGVyLCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpPdXRPZk1lbW9yeSgpIDw8ICJGYWlsZWQg
dG8gY3JlYXRlIHN0ZWFtIG91dHB1dCBzaGFkZXIsICIgPDwgcmVzdWx0OwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgKm91dEV4ZWN1dGFibGUgPSBuZXcg
U2hhZGVyRXhlY3V0YWJsZTExKGZ1bmN0aW9uLCBsZW5ndGgsIHZlcnRleFNoYWRlciwgc3RyZWFt
T3V0U2hhZGVyKTsKKyAgICAgICAgICAgICpvdXRFeGVjdXRhYmxlID0KKyAgICAgICAgICAgICAg
ICBuZXcgU2hhZGVyRXhlY3V0YWJsZTExKGZ1bmN0aW9uLCBsZW5ndGgsIHZlcnRleFNoYWRlciwg
c3RyZWFtT3V0U2hhZGVyKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
U0hBREVSX1BJWEVMOgorICAgICAgICBjYXNlIFNIQURFUl9QSVhFTDoKICAgICAgICAgewotICAg
ICAgICAgICAgSUQzRDExUGl4ZWxTaGFkZXIgKnBpeGVsU2hhZGVyID0gTlVMTDsKKyAgICAgICAg
ICAgIElEM0QxMVBpeGVsU2hhZGVyICpwaXhlbFNoYWRlciA9IG51bGxwdHI7CiAKICAgICAgICAg
ICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlUGl4ZWxTaGFkZXIoZnVuY3Rpb24s
IGxlbmd0aCwgTlVMTCwgJnBpeGVsU2hhZGVyKTsKICAgICAgICAgICAgIEFTU0VSVChTVUNDRUVE
RUQocmVzdWx0KSk7CiAgICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAi
RmFpbGVkIHRvIGNyZWF0ZSBwaXhlbCBzaGFkZXIsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBnbDo6T3V0T2ZNZW1vcnkoKSA8PCAiRmFpbGVkIHRvIGNy
ZWF0ZSBwaXhlbCBzaGFkZXIsICIgPDwgcmVzdWx0OwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAqb3V0RXhlY3V0YWJsZSA9IG5ldyBTaGFkZXJFeGVjdXRhYmxlMTEoZnVuY3Rpb24sIGxl
bmd0aCwgcGl4ZWxTaGFkZXIpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBTSEFERVJfR0VPTUVUUlk6CisgICAgICAgIGNhc2UgU0hBREVSX0dFT01FVFJZOgogICAgICAg
ICB7Ci0gICAgICAgICAgICBJRDNEMTFHZW9tZXRyeVNoYWRlciAqZ2VvbWV0cnlTaGFkZXIgPSBO
VUxMOworICAgICAgICAgICAgSUQzRDExR2VvbWV0cnlTaGFkZXIgKmdlb21ldHJ5U2hhZGVyID0g
bnVsbHB0cjsKIAogICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVH
ZW9tZXRyeVNoYWRlcihmdW5jdGlvbiwgbGVuZ3RoLCBOVUxMLCAmZ2VvbWV0cnlTaGFkZXIpOwog
ICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKICAgICAgICAgICAgIGlmIChG
QUlMRUQocmVzdWx0KSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIGdlb21ldHJ5IHNoYWRl
ciwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpP
dXRPZk1lbW9yeSgpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIGdlb21ldHJ5IHNoYWRlciwgIiA8PCBy
ZXN1bHQ7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICpvdXRFeGVjdXRhYmxlID0gbmV3
IFNoYWRlckV4ZWN1dGFibGUxMShmdW5jdGlvbiwgbGVuZ3RoLCBnZW9tZXRyeVNoYWRlcik7CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBVTlJFQUNI
QUJMRSgpOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KyAgICAgICAgY2FzZSBTSEFERVJfQ09NUFVURToKKyAgICAgICAgeworICAgICAgICAgICAgSUQz
RDExQ29tcHV0ZVNoYWRlciAqY29tcHV0ZVNoYWRlciA9IG51bGxwdHI7CisKKyAgICAgICAgICAg
IEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlQ29tcHV0ZVNoYWRlcihmdW5jdGlvbiwg
bGVuZ3RoLCBOVUxMLCAmY29tcHV0ZVNoYWRlcik7CisgICAgICAgICAgICBBU1NFUlQoU1VDQ0VF
REVEKHJlc3VsdCkpOworICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6T3V0T2ZNZW1vcnkoKSA8PCAiRmFpbGVk
IHRvIGNyZWF0ZSBjb21wdXRlIHNoYWRlciwgIiA8PCByZXN1bHQ7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICpvdXRFeGVjdXRhYmxlID0gbmV3IFNoYWRlckV4ZWN1dGFibGUxMShmdW5j
dGlvbiwgbGVuZ3RoLCBjb21wdXRlU2hhZGVyKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAogZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNvbXBpbGVUb0V4ZWN1dGFibGUoZ2w6OkluZm9M
b2cgJmluZm9Mb2csCkBAIC0zMzQwLDI3ICszNzIxLDMzIEBAIGdsOjpFcnJvciBSZW5kZXJlcjEx
Ojpjb21waWxlVG9FeGVjdXRhYmxlKGdsOjpJbmZvTG9nICZpbmZvTG9nLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyVHlwZSB0eXBlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8RDNEVmFy
eWluZz4gJnN0cmVhbU91dFZhcnlpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBzZXBhcmF0ZWRPdXRwdXRCdWZmZXJzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRDNEQ29tcGlsZXJXb3JrYXJvdW5kcyAm
d29ya2Fyb3VuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBhbmdsZTo6Q29tcGlsZXJXb3JrYXJvdW5kc0QzRCAmd29ya2Fyb3VuZHMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICoq
b3V0RXhlY3R1YWJsZSkKIHsKLSAgICBjb25zdCBjaGFyICpwcm9maWxlVHlwZSA9IE5VTEw7Cisg
ICAgc3RkOjpzdHJpbmdzdHJlYW0gcHJvZmlsZVN0cmVhbTsKKwogICAgIHN3aXRjaCAodHlwZSkK
ICAgICB7Ci0gICAgICBjYXNlIFNIQURFUl9WRVJURVg6Ci0gICAgICAgIHByb2ZpbGVUeXBlID0g
InZzIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIFNIQURFUl9QSVhFTDoKLSAgICAgICAg
cHJvZmlsZVR5cGUgPSAicHMiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgU0hBREVSX0dF
T01FVFJZOgotICAgICAgICBwcm9maWxlVHlwZSA9ICJncyI7Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIGNhc2UgU0hBREVSX1ZFUlRFWDoK
KyAgICAgICAgICAgIHByb2ZpbGVTdHJlYW0gPDwgInZzIjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFNIQURFUl9QSVhFTDoKKyAgICAgICAgICAgIHByb2ZpbGVTdHJlYW0gPDwg
InBzIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNIQURFUl9HRU9NRVRSWToK
KyAgICAgICAgICAgIHByb2ZpbGVTdHJlYW0gPDwgImdzIjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFNIQURFUl9DT01QVVRFOgorICAgICAgICAgICAgcHJvZmlsZVN0cmVhbSA8
PCAiY3MiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CiAgICAgfQogCi0gICAgc3RkOjpzdHJpbmcgcHJvZmlsZSA9IEZvcm1hdFN0
cmluZygiJXNfJWRfJWQlcyIsIHByb2ZpbGVUeXBlLCBnZXRNYWpvclNoYWRlck1vZGVsKCksIGdl
dE1pbm9yU2hhZGVyTW9kZWwoKSwgZ2V0U2hhZGVyTW9kZWxTdWZmaXgoKS5jX3N0cigpKTsKKyAg
ICBwcm9maWxlU3RyZWFtIDw8ICJfIiA8PCBnZXRNYWpvclNoYWRlck1vZGVsKCkgPDwgIl8iIDw8
IGdldE1pbm9yU2hhZGVyTW9kZWwoKQorICAgICAgICAgICAgICAgICAgPDwgZ2V0U2hhZGVyTW9k
ZWxTdWZmaXgoKTsKKyAgICBzdGQ6OnN0cmluZyBwcm9maWxlID0gcHJvZmlsZVN0cmVhbS5zdHIo
KTsKIAogICAgIFVJTlQgZmxhZ3MgPSBEM0RDT01QSUxFX09QVElNSVpBVElPTl9MRVZFTDI7CiAK
QEAgLTMzNzYsMTEgKzM3NjMsMTIgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNvbXBpbGVUb0V4
ZWN1dGFibGUoZ2w6OkluZm9Mb2cgJmluZm9Mb2csCiAgICAgaWYgKHdvcmthcm91bmRzLmVuYWJs
ZUlFRUVTdHJpY3RuZXNzKQogICAgICAgICBmbGFncyB8PSBEM0RDT01QSUxFX0lFRUVfU1RSSUNU
TkVTUzsKIAotICAgIC8vIFNvbWV0aW1lcyBEM0RDb21waWxlIHdpbGwgZmFpbCB3aXRoIHRoZSBk
ZWZhdWx0IGNvbXBpbGF0aW9uIGZsYWdzIGZvciBjb21wbGljYXRlZCBzaGFkZXJzIHdoZW4gaXQg
d291bGQgb3RoZXJ3aXNlIHBhc3Mgd2l0aCBhbHRlcm5hdGl2ZSBvcHRpb25zLgorICAgIC8vIFNv
bWV0aW1lcyBEM0RDb21waWxlIHdpbGwgZmFpbCB3aXRoIHRoZSBkZWZhdWx0IGNvbXBpbGF0aW9u
IGZsYWdzIGZvciBjb21wbGljYXRlZCBzaGFkZXJzCisgICAgLy8gd2hlbiBpdCB3b3VsZCBvdGhl
cndpc2UgcGFzcyB3aXRoIGFsdGVybmF0aXZlIG9wdGlvbnMuCiAgICAgLy8gVHJ5IHRoZSBkZWZh
dWx0IGZsYWdzIGZpcnN0IGFuZCBpZiBjb21waWxhdGlvbiBmYWlscywgdHJ5IHNvbWUgYWx0ZXJu
YXRpdmVzLgogICAgIHN0ZDo6dmVjdG9yPENvbXBpbGVDb25maWc+IGNvbmZpZ3M7Ci0gICAgY29u
Zmlncy5wdXNoX2JhY2soQ29tcGlsZUNvbmZpZyhmbGFncywgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJkZWZhdWx0IiAgICAgICAgICApKTsKLSAgICBjb25maWdzLnB1c2hfYmFjayhD
b21waWxlQ29uZmlnKGZsYWdzIHwgRDNEQ09NUElMRV9TS0lQX1ZBTElEQVRJT04sICAgInNraXAg
dmFsaWRhdGlvbiIgICkpOworICAgIGNvbmZpZ3MucHVzaF9iYWNrKENvbXBpbGVDb25maWcoZmxh
Z3MsICJkZWZhdWx0IikpOworICAgIGNvbmZpZ3MucHVzaF9iYWNrKENvbXBpbGVDb25maWcoZmxh
Z3MgfCBEM0RDT01QSUxFX1NLSVBfVkFMSURBVElPTiwgInNraXAgdmFsaWRhdGlvbiIpKTsKICAg
ICBjb25maWdzLnB1c2hfYmFjayhDb21waWxlQ29uZmlnKGZsYWdzIHwgRDNEQ09NUElMRV9TS0lQ
X09QVElNSVpBVElPTiwgInNraXAgb3B0aW1pemF0aW9uIikpOwogCiAgICAgaWYgKGdldE1ham9y
U2hhZGVyTW9kZWwoKSA9PSA0ICYmIGdldFNoYWRlck1vZGVsU3VmZml4KCkgIT0gIiIpCkBAIC0z
MzkyLDE5ICszNzgwLDIwIEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpjb21waWxlVG9FeGVjdXRh
YmxlKGdsOjpJbmZvTG9nICZpbmZvTG9nLAogICAgICAgICAgICAgQ29tcGlsZUNvbmZpZyhmbGFn
cyB8IEQzRENPTVBJTEVfQVZPSURfRkxPV19DT05UUk9MLCAiYXZvaWQgZmxvdyBjb250cm9sIikp
OwogICAgIH0KIAotICAgIEQzRF9TSEFERVJfTUFDUk8gbG9vcE1hY3Jvc1tdID0geyB7IkFOR0xF
X0VOQUJMRV9MT09QX0ZMQVRURU4iLCAiMSJ9LCB7MCwgMH0gfTsKKyAgICBEM0RfU0hBREVSX01B
Q1JPIGxvb3BNYWNyb3NbXSA9IHt7IkFOR0xFX0VOQUJMRV9MT09QX0ZMQVRURU4iLCAiMSJ9LCB7
MCwgMH19OwogCiAgICAgSUQzREJsb2IgKmJpbmFyeSA9IE5VTEw7CiAgICAgc3RkOjpzdHJpbmcg
ZGVidWdJbmZvOwogICAgIEFOR0xFX1RSWShtQ29tcGlsZXIuY29tcGlsZVRvQmluYXJ5KGluZm9M
b2csIHNoYWRlckhMU0wsIHByb2ZpbGUsIGNvbmZpZ3MsIGxvb3BNYWNyb3MsICZiaW5hcnksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRlYnVnSW5mbykpOwogCi0g
ICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IGJpbmFyeSBpcyBOVUxMIGlmIHRoZSBjb21waWxlciBm
YWlsZWQgaW4gYWxsIGNvbmZpZ3VyYXRpb25zLiAgU2V0IHRoZSBleGVjdXRhYmxlIHRvIE5VTEwK
LSAgICAvLyBhbmQgcmV0dXJuIEdMX05PX0VSUk9SIHRvIHNpZ25pZnkgdGhhdCB0aGVyZSB3YXMg
YSBsaW5rIGVycm9yIGJ1dCB0aGUgaW50ZXJuYWwgc3RhdGUgaXMgc3RpbGwgT0suCisgICAgLy8g
SXQncyBwb3NzaWJsZSB0aGF0IGJpbmFyeSBpcyBOVUxMIGlmIHRoZSBjb21waWxlciBmYWlsZWQg
aW4gYWxsIGNvbmZpZ3VyYXRpb25zLiAgU2V0IHRoZQorICAgIC8vIGV4ZWN1dGFibGUgdG8gTlVM
TCBhbmQgcmV0dXJuIEdMX05PX0VSUk9SIHRvIHNpZ25pZnkgdGhhdCB0aGVyZSB3YXMgYSBsaW5r
IGVycm9yIGJ1dCB0aGUKKyAgICAvLyBpbnRlcm5hbCBzdGF0ZSBpcyBzdGlsbCBPSy4KICAgICBp
ZiAoIWJpbmFyeSkKICAgICB7CiAgICAgICAgICpvdXRFeGVjdHVhYmxlID0gTlVMTDsKLSAgICAg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwogICAgIH0KIAogICAgIGdsOjpFcnJvciBlcnJvciA9IGxvYWRFeGVjdXRhYmxlKGJp
bmFyeS0+R2V0QnVmZmVyUG9pbnRlcigpLCBiaW5hcnktPkdldEJ1ZmZlclNpemUoKSwgdHlwZSwK
QEAgLTM0MjQsNiArMzgxMywxMSBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y29tcGlsZVRvRXhl
Y3V0YWJsZShnbDo6SW5mb0xvZyAmaW5mb0xvZywKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAorZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmVuc3VyZUhMU0xDb21waWxlckluaXRpYWxpemVk
KCkKK3sKKyAgICByZXR1cm4gbUNvbXBpbGVyLmVuc3VyZUluaXRpYWxpemVkKCk7Cit9CisKIFVu
aWZvcm1TdG9yYWdlRDNEICpSZW5kZXJlcjExOjpjcmVhdGVVbmlmb3JtU3RvcmFnZShzaXplX3Qg
c3RvcmFnZVNpemUpCiB7CiAgICAgcmV0dXJuIG5ldyBVbmlmb3JtU3RvcmFnZTExKHRoaXMsIHN0
b3JhZ2VTaXplKTsKQEAgLTM0NzMsNyArMzg2Nyw3IEBAIGJvb2wgUmVuZGVyZXIxMTo6c3VwcG9y
dHNGYXN0Q29weUJ1ZmZlclRvVGV4dHVyZShHTGVudW0gaW50ZXJuYWxGb3JtYXQpIGNvbnN0CiAg
ICAgfQogCiAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBmb3JtYXRzIHdoaWNoIHdlIGNhbid0IHJl
cHJlc2VudCB3aXRob3V0IGNvbnZlcnNpb24KLSAgICBpZiAoZDNkMTFGb3JtYXRJbmZvLmZvcm1h
dC5nbEludGVybmFsRm9ybWF0ICE9IGludGVybmFsRm9ybWF0KQorICAgIGlmIChkM2QxMUZvcm1h
dEluZm8uZm9ybWF0KCkuZ2xJbnRlcm5hbEZvcm1hdCAhPSBpbnRlcm5hbEZvcm1hdCkKICAgICB7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0zNDkzLDExICszODg3LDE2IEBAIGJv
b2wgUmVuZGVyZXIxMTo6c3VwcG9ydHNGYXN0Q29weUJ1ZmZlclRvVGV4dHVyZShHTGVudW0gaW50
ZXJuYWxGb3JtYXQpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWdsOjpFcnJvciBSZW5k
ZXJlcjExOjpmYXN0Q29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0
ZSAmdW5wYWNrLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LCBSZW5kZXJUYXJnZXREM0QgKmRlc3RSZW5k
ZXJUYXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGRlc3RpbmF0aW9uRm9ybWF0LCBHTGVudW0gc291cmNlUGl4ZWxzVHlwZSwgY29uc3Qg
Z2w6OkJveCAmZGVzdEFyZWEpCitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6ZmFzdENvcHlCdWZmZXJU
b1RleHR1cmUoY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlclRhcmdl
dEQzRCAqZGVzdFJlbmRlclRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZGVzdGluYXRpb25Gb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNvdXJjZVBpeGVsc1R5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJv
eCAmZGVzdEFyZWEpCiB7CiAgICAgQVNTRVJUKHN1cHBvcnRzRmFzdENvcHlCdWZmZXJUb1RleHR1
cmUoZGVzdGluYXRpb25Gb3JtYXQpKTsKLSAgICByZXR1cm4gbVBpeGVsVHJhbnNmZXItPmNvcHlC
dWZmZXJUb1RleHR1cmUodW5wYWNrLCBvZmZzZXQsIGRlc3RSZW5kZXJUYXJnZXQsIGRlc3RpbmF0
aW9uRm9ybWF0LCBzb3VyY2VQaXhlbHNUeXBlLCBkZXN0QXJlYSk7CisgICAgcmV0dXJuIG1QaXhl
bFRyYW5zZmVyLT5jb3B5QnVmZmVyVG9UZXh0dXJlKHVucGFjaywgb2Zmc2V0LCBkZXN0UmVuZGVy
VGFyZ2V0LCBkZXN0aW5hdGlvbkZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc291cmNlUGl4ZWxzVHlwZSwgZGVzdEFyZWEpOwogfQogCiBJbWFn
ZUQzRCAqUmVuZGVyZXIxMTo6Y3JlYXRlSW1hZ2UoKQpAQCAtMzUwOCw3ICszOTA3LDcgQEAgSW1h
Z2VEM0QgKlJlbmRlcmVyMTE6OmNyZWF0ZUltYWdlKCkKIGdsOjpFcnJvciBSZW5kZXJlcjExOjpn
ZW5lcmF0ZU1pcG1hcChJbWFnZUQzRCAqZGVzdCwgSW1hZ2VEM0QgKnNyYykKIHsKICAgICBJbWFn
ZTExICpkZXN0MTEgPSBHZXRBczxJbWFnZTExPihkZXN0KTsKLSAgICBJbWFnZTExICpzcmMxMSA9
IEdldEFzPEltYWdlMTE+KHNyYyk7CisgICAgSW1hZ2UxMSAqc3JjMTEgID0gR2V0QXM8SW1hZ2Ux
MT4oc3JjKTsKICAgICByZXR1cm4gSW1hZ2UxMTo6Z2VuZXJhdGVNaXBtYXAoZGVzdDExLCBzcmMx
MSwgbVJlbmRlcmVyMTFEZXZpY2VDYXBzKTsKIH0KIApAQCAtMzU0OCwyNCArMzk0Nyw0NyBAQCBU
ZXh0dXJlU3RvcmFnZSAqUmVuZGVyZXIxMTo6Y3JlYXRlVGV4dHVyZVN0b3JhZ2VFeHRlcm5hbCgK
ICAgICByZXR1cm4gbmV3IFRleHR1cmVTdG9yYWdlMTFfRXh0ZXJuYWwodGhpcywgc3RyZWFtLCBk
ZXNjKTsKIH0KIAotVGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyMTE6OmNyZWF0ZVRleHR1cmVTdG9y
YWdlMkQoR0xlbnVtIGludGVybmFsZm9ybWF0LCBib29sIHJlbmRlclRhcmdldCwgR0xzaXplaSB3
aWR0aCwgR0xzaXplaSBoZWlnaHQsIGludCBsZXZlbHMsIGJvb2wgaGludExldmVsWmVyb09ubHkp
CitUZXh0dXJlU3RvcmFnZSAqUmVuZGVyZXIxMTo6Y3JlYXRlVGV4dHVyZVN0b3JhZ2UyRChHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHJlbmRlclRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZXZl
bHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGhpbnRMZXZlbFplcm9Pbmx5KQogewotICAgIHJldHVybiBuZXcgVGV4dHVyZVN0b3JhZ2Ux
MV8yRCh0aGlzLCBpbnRlcm5hbGZvcm1hdCwgcmVuZGVyVGFyZ2V0LCB3aWR0aCwgaGVpZ2h0LCBs
ZXZlbHMsIGhpbnRMZXZlbFplcm9Pbmx5KTsKKyAgICByZXR1cm4gbmV3IFRleHR1cmVTdG9yYWdl
MTFfMkQodGhpcywgaW50ZXJuYWxmb3JtYXQsIHJlbmRlclRhcmdldCwgd2lkdGgsIGhlaWdodCwg
bGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaW50TGV2ZWxaZXJv
T25seSk7CiB9CiAKLVRleHR1cmVTdG9yYWdlICpSZW5kZXJlcjExOjpjcmVhdGVUZXh0dXJlU3Rv
cmFnZUN1YmUoR0xlbnVtIGludGVybmFsZm9ybWF0LCBib29sIHJlbmRlclRhcmdldCwgaW50IHNp
emUsIGludCBsZXZlbHMsIGJvb2wgaGludExldmVsWmVyb09ubHkpCitUZXh0dXJlU3RvcmFnZSAq
UmVuZGVyZXIxMTo6Y3JlYXRlVGV4dHVyZVN0b3JhZ2VDdWJlKEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCByZW5kZXJUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGhpbnRMZXZlbFplcm9Pbmx5KQog
ewotICAgIHJldHVybiBuZXcgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlKHRoaXMsIGludGVybmFsZm9y
bWF0LCByZW5kZXJUYXJnZXQsIHNpemUsIGxldmVscywgaGludExldmVsWmVyb09ubHkpOworICAg
IHJldHVybiBuZXcgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlKHRoaXMsIGludGVybmFsZm9ybWF0LCBy
ZW5kZXJUYXJnZXQsIHNpemUsIGxldmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoaW50TGV2ZWxaZXJvT25seSk7CiB9CiAKLVRleHR1cmVTdG9yYWdlICpSZW5kZXJl
cjExOjpjcmVhdGVUZXh0dXJlU3RvcmFnZTNEKEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgYm9vbCBy
ZW5kZXJUYXJnZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRo
LCBpbnQgbGV2ZWxzKQorVGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyMTE6OmNyZWF0ZVRleHR1cmVT
dG9yYWdlM0QoR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZW5kZXJUYXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGxldmVscykKIHsKLSAgICByZXR1cm4gbmV3IFRleHR1cmVTdG9y
YWdlMTFfM0QodGhpcywgaW50ZXJuYWxmb3JtYXQsIHJlbmRlclRhcmdldCwgd2lkdGgsIGhlaWdo
dCwgZGVwdGgsIGxldmVscyk7CisgICAgcmV0dXJuIG5ldyBUZXh0dXJlU3RvcmFnZTExXzNEKHRo
aXMsIGludGVybmFsZm9ybWF0LCByZW5kZXJUYXJnZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMpOwogfQogCi1UZXh0dXJl
U3RvcmFnZSAqUmVuZGVyZXIxMTo6Y3JlYXRlVGV4dHVyZVN0b3JhZ2UyREFycmF5KEdMZW51bSBp
bnRlcm5hbGZvcm1hdCwgYm9vbCByZW5kZXJUYXJnZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBpbnQgbGV2ZWxzKQorVGV4dHVyZVN0b3JhZ2UgKlJlbmRl
cmVyMTE6OmNyZWF0ZVRleHR1cmVTdG9yYWdlMkRBcnJheShHTGVudW0gaW50ZXJuYWxmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgcmVuZGVyVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGxldmVscykKIHsKLSAgICByZXR1cm4gbmV3IFRleHR1cmVTdG9yYWdlMTFf
MkRBcnJheSh0aGlzLCBpbnRlcm5hbGZvcm1hdCwgcmVuZGVyVGFyZ2V0LCB3aWR0aCwgaGVpZ2h0
LCBkZXB0aCwgbGV2ZWxzKTsKKyAgICByZXR1cm4gbmV3IFRleHR1cmVTdG9yYWdlMTFfMkRBcnJh
eSh0aGlzLCBpbnRlcm5hbGZvcm1hdCwgcmVuZGVyVGFyZ2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMpOwogfQog
CiBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6cmVhZEZyb21BdHRhY2htZW50KGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQgJnNyY0F0dGFjaG1lbnQsCkBAIC0zNjM3LDE1ICs0MDU5LDE1IEBA
IGdsOjpFcnJvciBSZW5kZXJlcjExOjpyZWFkRnJvbUF0dGFjaG1lbnQoY29uc3QgZ2w6OkZyYW1l
YnVmZmVyQXR0YWNobWVudCAmc3JjQXR0CiAgICAgICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHJl
c29sdmVEZXNjOwogICAgICAgICByZXNvbHZlRGVzYy5XaWR0aCAgICAgICAgICAgICAgPSBzdGF0
aWNfY2FzdDxVSU5UPih0ZXhTaXplLndpZHRoKTsKICAgICAgICAgcmVzb2x2ZURlc2MuSGVpZ2h0
ICAgICAgICAgICAgID0gc3RhdGljX2Nhc3Q8VUlOVD4odGV4U2l6ZS5oZWlnaHQpOwotICAgICAg
ICByZXNvbHZlRGVzYy5NaXBMZXZlbHMgPSAxOwotICAgICAgICByZXNvbHZlRGVzYy5BcnJheVNp
emUgPSAxOworICAgICAgICByZXNvbHZlRGVzYy5NaXBMZXZlbHMgICAgICAgICAgPSAxOworICAg
ICAgICByZXNvbHZlRGVzYy5BcnJheVNpemUgICAgICAgICAgPSAxOwogICAgICAgICByZXNvbHZl
RGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSB0ZXh0dXJlSGVscGVyLmdldEZvcm1hdCgpOwotICAg
ICAgICByZXNvbHZlRGVzYy5TYW1wbGVEZXNjLkNvdW50ID0gMTsKKyAgICAgICAgcmVzb2x2ZURl
c2MuU2FtcGxlRGVzYy5Db3VudCAgID0gMTsKICAgICAgICAgcmVzb2x2ZURlc2MuU2FtcGxlRGVz
Yy5RdWFsaXR5ID0gMDsKLSAgICAgICAgcmVzb2x2ZURlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9E
RUZBVUxUOwotICAgICAgICByZXNvbHZlRGVzYy5CaW5kRmxhZ3MgPSAwOwotICAgICAgICByZXNv
bHZlRGVzYy5DUFVBY2Nlc3NGbGFncyA9IDA7Ci0gICAgICAgIHJlc29sdmVEZXNjLk1pc2NGbGFn
cyA9IDA7CisgICAgICAgIHJlc29sdmVEZXNjLlVzYWdlICAgICAgICAgICAgICA9IEQzRDExX1VT
QUdFX0RFRkFVTFQ7CisgICAgICAgIHJlc29sdmVEZXNjLkJpbmRGbGFncyAgICAgICAgICA9IDA7
CisgICAgICAgIHJlc29sdmVEZXNjLkNQVUFjY2Vzc0ZsYWdzICAgICA9IDA7CisgICAgICAgIHJl
c29sdmVEZXNjLk1pc2NGbGFncyAgICAgICAgICA9IDA7CiAKICAgICAgICAgSUQzRDExVGV4dHVy
ZTJEICpyZXNvbHZlVGV4MkQgPSBudWxscHRyOwogICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1E
ZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgmcmVzb2x2ZURlc2MsIG51bGxwdHIsICZyZXNvbHZlVGV4
MkQpOwpAQCAtMzcxNywyMCArNDEzOSwyMSBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6cGFja1Bp
eGVscyhjb25zdCBUZXh0dXJlSGVscGVyMTEgJnRleHR1cmVIZWxwZXIsCiAgICAgaWYgKEZBSUxF
RChocikpCiAgICAgewogICAgICAgICBBU1NFUlQoaHIgPT0gRV9PVVRPRk1FTU9SWSk7Ci0gICAg
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBtYXAgaW50
ZXJuYWwgdGV4dHVyZSBmb3IgcmVhZGluZywgcmVzdWx0OiAweCVYLiIsIGhyKTsKKyAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICJGYWlsZWQgdG8gbWFwIGludGVybmFsIHRleHR1cmUgZm9yIHJlYWRpbmcsIHJlc3VsdDog
MHglWC4iLCBocik7CiAgICAgfQogCiAgICAgdWludDhfdCAqc291cmNlID0gc3RhdGljX2Nhc3Q8
dWludDhfdCAqPihtYXBwaW5nLnBEYXRhKTsKICAgICBpbnQgaW5wdXRQaXRjaCAgPSBzdGF0aWNf
Y2FzdDxpbnQ+KG1hcHBpbmcuUm93UGl0Y2gpOwogCiAgICAgY29uc3QgYXV0byAmZm9ybWF0SW5m
byA9IHRleHR1cmVIZWxwZXIuZ2V0Rm9ybWF0U2V0KCk7Ci0gICAgQVNTRVJUKGZvcm1hdEluZm8u
Zm9ybWF0LmdsSW50ZXJuYWxGb3JtYXQgIT0gR0xfTk9ORSk7CisgICAgQVNTRVJUKGZvcm1hdElu
Zm8uZm9ybWF0KCkuZ2xJbnRlcm5hbEZvcm1hdCAhPSBHTF9OT05FKTsKIAotICAgIFBhY2tQaXhl
bHMocGFyYW1zLCBmb3JtYXRJbmZvLmZvcm1hdCwgaW5wdXRQaXRjaCwgc291cmNlLCBwaXhlbHNP
dXQpOworICAgIFBhY2tQaXhlbHMocGFyYW1zLCBmb3JtYXRJbmZvLmZvcm1hdCgpLCBpbnB1dFBp
dGNoLCBzb3VyY2UsIHBpeGVsc091dCk7CiAKICAgICBtRGV2aWNlQ29udGV4dC0+VW5tYXAocmVh
ZFJlc291cmNlLCAwKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAg
IHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6YmxpdFJl
bmRlcmJ1ZmZlclJlY3QoY29uc3QgZ2w6OlJlY3RhbmdsZSAmcmVhZFJlY3RJbiwKQEAgLTM3NTEs
MjkgKzQxNzQsMzEgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZWN0
KGNvbnN0IGdsOjpSZWN0YW5nbGUgJnJlYWRSZWN0SW4sCiAgICAgUmVuZGVyVGFyZ2V0MTEgKmRy
YXdSZW5kZXJUYXJnZXQxMSA9IEdldEFzPFJlbmRlclRhcmdldDExPihkcmF3UmVuZGVyVGFyZ2V0
KTsKICAgICBpZiAoIWRyYXdSZW5kZXJUYXJnZXQxMSkKICAgICB7Ci0gICAgICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgaW50ZXJu
YWwgZHJhdyByZW5kZXIgdGFyZ2V0IGZyb20gdGhlIGRyYXcgZnJhbWVidWZmZXIuIik7CisgICAg
ICAgIHJldHVybiBnbDo6T3V0T2ZNZW1vcnkoKQorICAgICAgICAgICAgICAgPDwgIkZhaWxlZCB0
byByZXRyaWV2ZSB0aGUgaW50ZXJuYWwgZHJhdyByZW5kZXIgdGFyZ2V0IGZyb20gdGhlIGRyYXcg
ZnJhbWVidWZmZXIuIjsKICAgICB9CiAKICAgICBUZXh0dXJlSGVscGVyMTEgZHJhd1RleHR1cmUg
PSBUZXh0dXJlSGVscGVyMTE6Ok1ha2VBbmRSZWZlcmVuY2UoCiAgICAgICAgIGRyYXdSZW5kZXJU
YXJnZXQxMS0+Z2V0VGV4dHVyZSgpLCBkcmF3UmVuZGVyVGFyZ2V0MTEtPmdldEZvcm1hdFNldCgp
KTsKLSAgICB1bnNpZ25lZCBpbnQgZHJhd1N1YnJlc291cmNlID0gZHJhd1JlbmRlclRhcmdldDEx
LT5nZXRTdWJyZXNvdXJjZUluZGV4KCk7CisgICAgdW5zaWduZWQgaW50IGRyYXdTdWJyZXNvdXJj
ZSAgICA9IGRyYXdSZW5kZXJUYXJnZXQxMS0+Z2V0U3VicmVzb3VyY2VJbmRleCgpOwogICAgIElE
M0QxMVJlbmRlclRhcmdldFZpZXcgKmRyYXdSVFYgPSBkcmF3UmVuZGVyVGFyZ2V0MTEtPmdldFJl
bmRlclRhcmdldFZpZXcoKTsKICAgICBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpkcmF3RFNWID0g
ZHJhd1JlbmRlclRhcmdldDExLT5nZXREZXB0aFN0ZW5jaWxWaWV3KCk7CiAKICAgICBSZW5kZXJU
YXJnZXQxMSAqcmVhZFJlbmRlclRhcmdldDExID0gR2V0QXM8UmVuZGVyVGFyZ2V0MTE+KHJlYWRS
ZW5kZXJUYXJnZXQpOwogICAgIGlmICghcmVhZFJlbmRlclRhcmdldDExKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIHJldHJpZXZl
IHRoZSBpbnRlcm5hbCByZWFkIHJlbmRlciB0YXJnZXQgZnJvbSB0aGUgcmVhZCBmcmFtZWJ1ZmZl
ci4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjpPdXRPZk1lbW9yeSgpCisgICAgICAgICAgICAgICA8
PCAiRmFpbGVkIHRvIHJldHJpZXZlIHRoZSBpbnRlcm5hbCByZWFkIHJlbmRlciB0YXJnZXQgZnJv
bSB0aGUgcmVhZCBmcmFtZWJ1ZmZlci4iOwogICAgIH0KIAogICAgIFRleHR1cmVIZWxwZXIxMSBy
ZWFkVGV4dHVyZTsKLSAgICB1bnNpZ25lZCBpbnQgcmVhZFN1YnJlc291cmNlID0gMDsKKyAgICB1
bnNpZ25lZCBpbnQgcmVhZFN1YnJlc291cmNlICAgICAgPSAwOwogICAgIElEM0QxMVNoYWRlclJl
c291cmNlVmlldyAqcmVhZFNSViA9IG51bGxwdHI7CiAKICAgICBpZiAocmVhZFJlbmRlclRhcmdl
dC0+Z2V0U2FtcGxlcygpID4gMSkKICAgICB7Ci0gICAgICAgIGF1dG8gcmVhZFJUMTEgPSBHZXRB
czxSZW5kZXJUYXJnZXQxMT4ocmVhZFJlbmRlclRhcmdldCk7Ci0gICAgICAgIEFOR0xFX1RSWV9S
RVNVTFQocmVzb2x2ZU11bHRpc2FtcGxlZFRleHR1cmUocmVhZFJUMTEsIGRlcHRoQmxpdCwgc3Rl
bmNpbEJsaXQpLCByZWFkVGV4dHVyZSk7CisgICAgICAgIEFOR0xFX1RSWV9SRVNVTFQocmVzb2x2
ZU11bHRpc2FtcGxlZFRleHR1cmUocmVhZFJlbmRlclRhcmdldDExLCBkZXB0aEJsaXQsIHN0ZW5j
aWxCbGl0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZWFkVGV4dHVyZSk7CiAKICAgICAg
ICAgaWYgKCFzdGVuY2lsQmxpdCkKICAgICAgICAgewpAQCAtMzc4OSw5ICs0MjE0LDkgQEAgZ2w6
OkVycm9yIFJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZWN0KGNvbnN0IGdsOjpSZWN0YW5n
bGUgJnJlYWRSZWN0SW4sCiAgICAgICAgICAgICAgICAgbURldmljZS0+Q3JlYXRlU2hhZGVyUmVz
b3VyY2VWaWV3KHJlYWRUZXh0dXJlLmdldFJlc291cmNlKCksICZ2aWV3RGVzYywgJnJlYWRTUlYp
OwogICAgICAgICAgICAgaWYgKEZBSUxFRChocmVzdWx0KSkKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKAotICAgICAgICAgICAgICAgICAgICBHTF9PVVRf
T0ZfTUVNT1JZLAotICAgICAgICAgICAgICAgICAgICAiUmVuZGVyZXIxMTo6YmxpdFJlbmRlcmJ1
ZmZlclJlY3Q6IEZhaWxlZCB0byBjcmVhdGUgdGVtcG9yYXJ5IFNSVi4iKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6Ok91dE9mTWVtb3J5KCkKKyAgICAgICAgICAgICAgICAgICAgICAgPDwg
IlJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZWN0OiBGYWlsZWQgdG8gY3JlYXRlIHRlbXBv
cmFyeSBTUlYsICIKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgaHJlc3VsdDsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTM4MDEsNyArNDIyNiw3IEBAIGdsOjpFcnJvciBS
ZW5kZXJlcjExOjpibGl0UmVuZGVyYnVmZmVyUmVjdChjb25zdCBnbDo6UmVjdGFuZ2xlICZyZWFk
UmVjdEluLAogICAgICAgICByZWFkVGV4dHVyZSA9IFRleHR1cmVIZWxwZXIxMTo6TWFrZUFuZFJl
ZmVyZW5jZShyZWFkUmVuZGVyVGFyZ2V0MTEtPmdldFRleHR1cmUoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFJlbmRlclRhcmdl
dDExLT5nZXRGb3JtYXRTZXQoKSk7CiAgICAgICAgIHJlYWRTdWJyZXNvdXJjZSA9IHJlYWRSZW5k
ZXJUYXJnZXQxMS0+Z2V0U3VicmVzb3VyY2VJbmRleCgpOwotICAgICAgICByZWFkU1JWID0gcmVh
ZFJlbmRlclRhcmdldDExLT5nZXRCbGl0U2hhZGVyUmVzb3VyY2VWaWV3KCk7CisgICAgICAgIHJl
YWRTUlYgICAgICAgICA9IHJlYWRSZW5kZXJUYXJnZXQxMS0+Z2V0QmxpdFNoYWRlclJlc291cmNl
VmlldygpOwogICAgICAgICBpZiAocmVhZFNSViA9PSBudWxscHRyKQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQoZGVwdGhCbGl0IHx8IHN0ZW5jaWxCbGl0KTsKQEAgLTM4MjUsOCArNDI1
MCw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpibGl0UmVuZGVyYnVmZmVyUmVjdChjb25zdCBn
bDo6UmVjdGFuZ2xlICZyZWFkUmVjdEluLAogICAgIC8vIGJ5IGludGVybmFsbHkgc2NhbGluZyB0
aGUgcmVhZCBhbmQgZHJhdyByZWN0YW5nbGVzLgogICAgIGdsOjpSZWN0YW5nbGUgcmVhZFJlY3Qg
PSByZWFkUmVjdEluOwogICAgIGdsOjpSZWN0YW5nbGUgZHJhd1JlY3QgPSBkcmF3UmVjdEluOwot
ICAgIGF1dG8gcmVhZFRvRHJhd1ggICAgICAgPSBbJmRyYXdSZWN0SW4sICZyZWFkUmVjdEluXShp
bnQgcmVhZE9mZnNldCkKLSAgICB7CisgICAgYXV0byByZWFkVG9EcmF3WCAgICAgICA9IFsmZHJh
d1JlY3RJbiwgJnJlYWRSZWN0SW5dKGludCByZWFkT2Zmc2V0KSB7CiAgICAgICAgIGRvdWJsZSBy
ZWFkVG9EcmF3U2NhbGUgPQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihkcmF3UmVj
dEluLndpZHRoKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4ocmVhZFJlY3RJbi53aWR0aCk7CiAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHJvdW5kKHN0YXRpY19jYXN0PGRvdWJsZT4ocmVh
ZE9mZnNldCkgKiByZWFkVG9EcmF3U2NhbGUpKTsKQEAgLTM4NDIsOCArNDI2Niw3IEBAIGdsOjpF
cnJvciBSZW5kZXJlcjExOjpibGl0UmVuZGVyYnVmZmVyUmVjdChjb25zdCBnbDo6UmVjdGFuZ2xl
ICZyZWFkUmVjdEluLAogICAgICAgICBkcmF3UmVjdC53aWR0aCAtPSBkcmF3T2Zmc2V0OwogICAg
IH0KIAotICAgIGF1dG8gcmVhZFRvRHJhd1kgPSBbJmRyYXdSZWN0SW4sICZyZWFkUmVjdEluXShp
bnQgcmVhZE9mZnNldCkKLSAgICB7CisgICAgYXV0byByZWFkVG9EcmF3WSA9IFsmZHJhd1JlY3RJ
biwgJnJlYWRSZWN0SW5dKGludCByZWFkT2Zmc2V0KSB7CiAgICAgICAgIGRvdWJsZSByZWFkVG9E
cmF3U2NhbGUgPQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihkcmF3UmVjdEluLmhl
aWdodCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KHJlYWRSZWN0SW4uaGVpZ2h0KTsKICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4ocm91bmQoc3RhdGljX2Nhc3Q8ZG91YmxlPihyZWFkT2Zm
c2V0KSAqIHJlYWRUb0RyYXdTY2FsZSkpOwpAQCAtMzg4Miw3ICs0MzA1LDcgQEAgZ2w6OkVycm9y
IFJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZWN0KGNvbnN0IGdsOjpSZWN0YW5nbGUgJnJl
YWRSZWN0SW4sCiAgICAgY29uc3QgYXV0byAmZGVzdEZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJu
YWxGb3JtYXRJbmZvKGRyYXdSZW5kZXJUYXJnZXQtPmdldEludGVybmFsRm9ybWF0KCkpOwogICAg
IGNvbnN0IGF1dG8gJnNyY0Zvcm1hdEluZm8gID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhy
ZWFkUmVuZGVyVGFyZ2V0LT5nZXRJbnRlcm5hbEZvcm1hdCgpKTsKICAgICBjb25zdCBhdXRvICZm
b3JtYXRTZXQgICAgICA9IGRyYXdSZW5kZXJUYXJnZXQxMS0+Z2V0Rm9ybWF0U2V0KCk7Ci0gICAg
Y29uc3QgYXV0byAmbmF0aXZlRm9ybWF0ICAgPSBmb3JtYXRTZXQuZm9ybWF0OworICAgIGNvbnN0
IGF1dG8gJm5hdGl2ZUZvcm1hdCAgID0gZm9ybWF0U2V0LmZvcm1hdCgpOwogCiAgICAgLy8gU29t
ZSBibGl0cyByZXF1aXJlIG1hc2tpbmcgb2ZmIGVtdWxhdGVkIHRleHR1cmUgY2hhbm5lbHMuIGVn
OiBmcm9tIFJHQkE4IHRvIFJHQjgsIHdlCiAgICAgLy8gZW11bGF0ZSBSR0I4IHdpdGggUkdCQTgs
IHNvIHdlIG5lZWQgdG8gbWFzayBvZmYgdGhlIGFscGhhIGNoYW5uZWwgd2hlbiB3ZSBjb3B5LgpA
QCAtMzkwOSw3ICs0MzMyLDggQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZm
ZXJSZWN0KGNvbnN0IGdsOjpSZWN0YW5nbGUgJnJlYWRSZWN0SW4sCiAKICAgICBib29sIHN0cmV0
Y2hSZXF1aXJlZCA9IHJlYWRSZWN0LndpZHRoICE9IGRyYXdSZWN0LndpZHRoIHx8IHJlYWRSZWN0
LmhlaWdodCAhPSBkcmF3UmVjdC5oZWlnaHQ7CiAKLSAgICBib29sIGZsaXBSZXF1aXJlZCA9IHJl
YWRSZWN0LndpZHRoIDwgMCB8fCByZWFkUmVjdC5oZWlnaHQgPCAwIHx8IGRyYXdSZWN0LndpZHRo
IDwgMCB8fCBkcmF3UmVjdC5oZWlnaHQgPCAwOworICAgIGJvb2wgZmxpcFJlcXVpcmVkID0KKyAg
ICAgICAgcmVhZFJlY3Qud2lkdGggPCAwIHx8IHJlYWRSZWN0LmhlaWdodCA8IDAgfHwgZHJhd1Jl
Y3Qud2lkdGggPCAwIHx8IGRyYXdSZWN0LmhlaWdodCA8IDA7CiAKICAgICBib29sIG91dE9mQm91
bmRzID0gcmVhZFJlY3QueCA8IDAgfHwgcmVhZFJlY3QueCArIHJlYWRSZWN0LndpZHRoID4gcmVh
ZFNpemUud2lkdGggfHwKICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFJlY3QueSA8IDAgfHwg
cmVhZFJlY3QueSArIHJlYWRSZWN0LmhlaWdodCA+IHJlYWRTaXplLmhlaWdodCB8fApAQCAtMzkx
OSw4ICs0MzQzLDggQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZWN0
KGNvbnN0IGdsOjpSZWN0YW5nbGUgJnJlYWRSZWN0SW4sCiAgICAgYm9vbCBwYXJ0aWFsRFNCbGl0
ID0KICAgICAgICAgKG5hdGl2ZUZvcm1hdC5kZXB0aEJpdHMgPiAwICYmIGRlcHRoQmxpdCkgIT0g
KG5hdGl2ZUZvcm1hdC5zdGVuY2lsQml0cyA+IDAgJiYgc3RlbmNpbEJsaXQpOwogCi0gICAgaWYg
KHJlYWRSZW5kZXJUYXJnZXQxMS0+Z2V0Rm9ybWF0U2V0KCkuZm9ybWF0LmlkID09Ci0gICAgICAg
ICAgICBkcmF3UmVuZGVyVGFyZ2V0MTEtPmdldEZvcm1hdFNldCgpLmZvcm1hdC5pZCAmJgorICAg
IGlmIChyZWFkUmVuZGVyVGFyZ2V0MTEtPmdldEZvcm1hdFNldCgpLmZvcm1hdElEID09CisgICAg
ICAgICAgICBkcmF3UmVuZGVyVGFyZ2V0MTEtPmdldEZvcm1hdFNldCgpLmZvcm1hdElEICYmCiAg
ICAgICAgICFzdHJldGNoUmVxdWlyZWQgJiYgIW91dE9mQm91bmRzICYmICFmbGlwUmVxdWlyZWQg
JiYgIXBhcnRpYWxEU0JsaXQgJiYKICAgICAgICAgIWNvbG9yTWFza2luZ05lZWRlZCAmJiAoIShk
ZXB0aEJsaXQgfHwgc3RlbmNpbEJsaXQpIHx8IHdob2xlQnVmZmVyQ29weSkpCiAgICAgewpAQCAt
MzkyOCwxNiArNDM1MiwxNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6YmxpdFJlbmRlcmJ1ZmZl
clJlY3QoY29uc3QgZ2w6OlJlY3RhbmdsZSAmcmVhZFJlY3RJbiwKICAgICAgICAgVUlOVCBkc3RZ
ID0gZHJhd1JlY3QueTsKIAogICAgICAgICBEM0QxMV9CT1ggcmVhZEJveDsKLSAgICAgICAgcmVh
ZEJveC5sZWZ0ID0gcmVhZFJlY3QueDsKLSAgICAgICAgcmVhZEJveC5yaWdodCA9IHJlYWRSZWN0
LnggKyByZWFkUmVjdC53aWR0aDsKLSAgICAgICAgcmVhZEJveC50b3AgPSByZWFkUmVjdC55Owor
ICAgICAgICByZWFkQm94LmxlZnQgICA9IHJlYWRSZWN0Lng7CisgICAgICAgIHJlYWRCb3gucmln
aHQgID0gcmVhZFJlY3QueCArIHJlYWRSZWN0LndpZHRoOworICAgICAgICByZWFkQm94LnRvcCAg
ICA9IHJlYWRSZWN0Lnk7CiAgICAgICAgIHJlYWRCb3guYm90dG9tID0gcmVhZFJlY3QueSArIHJl
YWRSZWN0LmhlaWdodDsKLSAgICAgICAgcmVhZEJveC5mcm9udCA9IDA7Ci0gICAgICAgIHJlYWRC
b3guYmFjayA9IDE7CisgICAgICAgIHJlYWRCb3guZnJvbnQgID0gMDsKKyAgICAgICAgcmVhZEJv
eC5iYWNrICAgPSAxOwogCiAgICAgICAgIGlmIChzY2lzc29yTmVlZGVkKQogICAgICAgICB7Ci0g
ICAgICAgICAgICAvLyBkcmF3UmVjdCBpcyBndWFyYW50ZWVkIHRvIGhhdmUgcG9zaXRpdmUgd2lk
dGggYW5kIGhlaWdodCBiZWNhdXNlIHN0cmV0Y2hSZXF1aXJlZCBpcyBmYWxzZS4KKyAgICAgICAg
ICAgIC8vIGRyYXdSZWN0IGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBwb3NpdGl2ZSB3aWR0aCBhbmQg
aGVpZ2h0IGJlY2F1c2Ugc3RyZXRjaFJlcXVpcmVkIGlzCisgICAgICAgICAgICAvLyBmYWxzZS4K
ICAgICAgICAgICAgIEFTU0VSVChkcmF3UmVjdC53aWR0aCA+PSAwIHx8IGRyYXdSZWN0LmhlaWdo
dCA+PSAwKTsKIAogICAgICAgICAgICAgaWYgKGRyYXdSZWN0LnggPCBzY2lzc29yLT54KQpAQCAt
NDAwOSw3ICs0NDM0LDcgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZmZXJS
ZWN0KGNvbnN0IGdsOjpSZWN0YW5nbGUgJnJlYWRSZWN0SW4sCiAKIGJvb2wgUmVuZGVyZXIxMTo6
aXNFUzNDYXBhYmxlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKGQzZDExX2dsOjpHZXRNYXhpbXVt
Q2xpZW50VmVyc2lvbihtUmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsKSA+IDIpOwor
ICAgIHJldHVybiAoZDNkMTFfZ2w6OkdldE1heGltdW1DbGllbnRWZXJzaW9uKG1SZW5kZXJlcjEx
RGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwpLm1ham9yID4gMik7CiB9OwogCiB2b2lkIFJlbmRlcmVy
MTE6Om9uU3dhcCgpCkBAIC00MDE3LDcgKzQ0NDIsOCBAQCB2b2lkIFJlbmRlcmVyMTE6Om9uU3dh
cCgpCiAgICAgLy8gU2VuZCBoaXN0b2dyYW0gdXBkYXRlcyBldmVyeSBoYWxmIGhvdXIKICAgICBj
b25zdCBkb3VibGUga0hpc3RvZ3JhbVVwZGF0ZUludGVydmFsID0gMzAgKiA2MDsKIAotICAgIGNv
bnN0IGRvdWJsZSBjdXJyZW50VGltZSA9IEFOR0xFUGxhdGZvcm1DdXJyZW50KCktPm1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIGF1dG8gKnBsYXRmb3JtICAgICAgICAgICAgICAg
ICAgID0gQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKTsKKyAgICBjb25zdCBkb3VibGUgY3VycmVudFRp
bWUgICAgICAgICA9IHBsYXRmb3JtLT5tb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUocGxhdGZv
cm0pOwogICAgIGNvbnN0IGRvdWJsZSB0aW1lU2luY2VMYXN0VXBkYXRlID0gY3VycmVudFRpbWUg
LSBtTGFzdEhpc3RvZ3JhbVVwZGF0ZVRpbWU7CiAKICAgICBpZiAodGltZVNpbmNlTGFzdFVwZGF0
ZSA+IGtIaXN0b2dyYW1VcGRhdGVJbnRlcnZhbCkKQEAgLTQwOTgsNyArNDUyNCw3IEBAIFJlbmRl
cmVyMTE6OnJlc29sdmVNdWx0aXNhbXBsZWRUZXh0dXJlKFJlbmRlclRhcmdldDExICpyZW5kZXJU
YXJnZXQsIGJvb2wgZGVwdGgsCiBib29sIFJlbmRlcmVyMTE6OmdldExVSUQoTFVJRCAqYWRhcHRl
ckx1aWQpIGNvbnN0CiB7CiAgICAgYWRhcHRlckx1aWQtPkhpZ2hQYXJ0ID0gMDsKLSAgICBhZGFw
dGVyTHVpZC0+TG93UGFydCA9IDA7CisgICAgYWRhcHRlckx1aWQtPkxvd1BhcnQgID0gMDsKIAog
ICAgIGlmICghbUR4Z2lBZGFwdGVyKQogICAgIHsKQEAgLTQxMTUsOSArNDU0MSwxMSBAQCBib29s
IFJlbmRlcmVyMTE6OmdldExVSUQoTFVJRCAqYWRhcHRlckx1aWQpIGNvbnN0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLVZlcnRleENvbnZlcnNpb25UeXBlIFJlbmRlcmVyMTE6OmdldFZlcnRleENv
bnZlcnNpb25UeXBlKGdsOjpWZXJ0ZXhGb3JtYXRUeXBlIHZlcnRleEZvcm1hdFR5cGUpIGNvbnN0
CitWZXJ0ZXhDb252ZXJzaW9uVHlwZSBSZW5kZXJlcjExOjpnZXRWZXJ0ZXhDb252ZXJzaW9uVHlw
ZSgKKyAgICBnbDo6VmVydGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBlKSBjb25zdAogewot
ICAgIHJldHVybiBkM2QxMTo6R2V0VmVydGV4Rm9ybWF0SW5mbyh2ZXJ0ZXhGb3JtYXRUeXBlLCBt
UmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsKS5jb252ZXJzaW9uVHlwZTsKKyAgICBy
ZXR1cm4gZDNkMTE6OkdldFZlcnRleEZvcm1hdEluZm8odmVydGV4Rm9ybWF0VHlwZSwgbVJlbmRl
cmVyMTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCkKKyAgICAgICAgLmNvbnZlcnNpb25UeXBlOwog
fQogCiBHTGVudW0gUmVuZGVyZXIxMTo6Z2V0VmVydGV4Q29tcG9uZW50VHlwZShnbDo6VmVydGV4
Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBlKSBjb25zdApAQCAtNDEyOSw2ICs0NTU3LDcgQEAg
R0xlbnVtIFJlbmRlcmVyMTE6OmdldFZlcnRleENvbXBvbmVudFR5cGUoZ2w6OlZlcnRleEZvcm1h
dFR5cGUgdmVydGV4Rm9ybWF0VHlwZSkKIAogZ2w6OkVycm9yT3JSZXN1bHQ8dW5zaWduZWQgaW50
PiBSZW5kZXJlcjExOjpnZXRWZXJ0ZXhTcGFjZVJlcXVpcmVkKAogICAgIGNvbnN0IGdsOjpWZXJ0
ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICBjb25zdCBnbDo6VmVydGV4QmluZGluZyAmYmluZGlu
ZywKICAgICBHTHNpemVpIGNvdW50LAogICAgIEdMc2l6ZWkgaW5zdGFuY2VzKSBjb25zdAogewpA
QCAtNDEzOCwxNCArNDU2NywxNCBAQCBnbDo6RXJyb3JPclJlc3VsdDx1bnNpZ25lZCBpbnQ+IFJl
bmRlcmVyMTE6OmdldFZlcnRleFNwYWNlUmVxdWlyZWQoCiAgICAgfQogCiAgICAgdW5zaWduZWQg
aW50IGVsZW1lbnRDb3VudCA9IDA7Ci0gICAgaWYgKGluc3RhbmNlcyA9PSAwIHx8IGF0dHJpYi5k
aXZpc29yID09IDApCisgICAgaWYgKGluc3RhbmNlcyA9PSAwIHx8IGJpbmRpbmcuZGl2aXNvciA9
PSAwKQogICAgIHsKICAgICAgICAgZWxlbWVudENvdW50ID0gY291bnQ7CiAgICAgfQogICAgIGVs
c2UKICAgICB7CiAgICAgICAgIC8vIFJvdW5kIHVwIHRvIGRpdmlzb3IsIGlmIHBvc3NpYmxlCi0g
ICAgICAgIGVsZW1lbnRDb3VudCA9IFVuc2lnbmVkQ2VpbERpdmlkZShzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KGluc3RhbmNlcyksIGF0dHJpYi5kaXZpc29yKTsKKyAgICAgICAgZWxlbWVudENv
dW50ID0gVW5zaWduZWRDZWlsRGl2aWRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oaW5zdGFu
Y2VzKSwgYmluZGluZy5kaXZpc29yKTsKICAgICB9CiAKICAgICBnbDo6VmVydGV4Rm9ybWF0VHlw
ZSBmb3JtYXRUeXBlICAgICAgPSBnbDo6R2V0VmVydGV4Rm9ybWF0VHlwZShhdHRyaWIpOwpAQCAt
NDE2MywxNCArNDU5MiwxNiBAQCBnbDo6RXJyb3JPclJlc3VsdDx1bnNpZ25lZCBpbnQ+IFJlbmRl
cmVyMTE6OmdldFZlcnRleFNwYWNlUmVxdWlyZWQoCiAgICAgcmV0dXJuIGVsZW1lbnRTaXplICog
ZWxlbWVudENvdW50OwogfQogCi12b2lkIFJlbmRlcmVyMTE6OmdlbmVyYXRlQ2FwcyhnbDo6Q2Fw
cyAqb3V0Q2FwcywgZ2w6OlRleHR1cmVDYXBzTWFwICpvdXRUZXh0dXJlQ2FwcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsOjpFeHRlbnNpb25zICpvdXRFeHRlbnNpb25zLCBnbDo6
TGltaXRhdGlvbnMgKm91dExpbWl0YXRpb25zKSBjb25zdAordm9pZCBSZW5kZXJlcjExOjpnZW5l
cmF0ZUNhcHMoZ2w6OkNhcHMgKm91dENhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnbDo6VGV4dHVyZUNhcHNNYXAgKm91dFRleHR1cmVDYXBzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2w6OkV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbDo6TGltaXRhdGlvbnMgKm91dExpbWl0YXRpb25zKSBjb25zdAog
ewogICAgIGQzZDExX2dsOjpHZW5lcmF0ZUNhcHMobURldmljZSwgbURldmljZUNvbnRleHQsIG1S
ZW5kZXJlcjExRGV2aWNlQ2Fwcywgb3V0Q2Fwcywgb3V0VGV4dHVyZUNhcHMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvdXRFeHRlbnNpb25zLCBvdXRMaW1pdGF0aW9ucyk7CiB9CiAKLVdv
cmthcm91bmRzRDNEIFJlbmRlcmVyMTE6OmdlbmVyYXRlV29ya2Fyb3VuZHMoKSBjb25zdAorYW5n
bGU6Oldvcmthcm91bmRzRDNEIFJlbmRlcmVyMTE6OmdlbmVyYXRlV29ya2Fyb3VuZHMoKSBjb25z
dAogewogICAgIHJldHVybiBkM2QxMTo6R2VuZXJhdGVXb3JrYXJvdW5kcyhtUmVuZGVyZXIxMURl
dmljZUNhcHMsIG1BZGFwdGVyRGVzY3JpcHRpb24pOwogfQpAQCAtNDIyOSw3ICs0NjYwLDcgQEAg
Z2w6OkVycm9yIFJlbmRlcmVyMTE6OmdlbmVyaWNEcmF3RWxlbWVudHMoQ29udGV4dDExICpjb250
ZXh0LAogICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKLSAgICBBTkdMRV9U
UlkodXBkYXRlU3RhdGUoZGF0YSwgbW9kZSkpOworICAgIEFOR0xFX1RSWSh1cGRhdGVTdGF0ZShj
b250ZXh0LCBtb2RlKSk7CiAKICAgICBUcmFuc2xhdGVkSW5kZXhEYXRhIGluZGV4SW5mbzsKICAg
ICBpbmRleEluZm8uaW5kZXhSYW5nZSA9IGluZGV4UmFuZ2U7CkBAIC00Mjc3LDcgKzQ3MDgsNyBA
QCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Z2VuZXJpY0RyYXdBcnJheXMoQ29udGV4dDExICpjb250
ZXh0LAogICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKLSAgICBBTkdMRV9U
UlkodXBkYXRlU3RhdGUoZGF0YSwgbW9kZSkpOworICAgIEFOR0xFX1RSWSh1cGRhdGVTdGF0ZShj
b250ZXh0LCBtb2RlKSk7CiAgICAgQU5HTEVfVFJZKGFwcGx5VHJhbnNmb3JtRmVlZGJhY2tCdWZm
ZXJzKGRhdGEpKTsKICAgICBBTkdMRV9UUlkoYXBwbHlWZXJ0ZXhCdWZmZXIoZ2xTdGF0ZSwgbW9k
ZSwgZmlyc3QsIGNvdW50LCBpbnN0YW5jZXMsIG51bGxwdHIpKTsKICAgICBBTkdMRV9UUlkoYXBw
bHlUZXh0dXJlcyhjb250ZXh0LCBkYXRhKSk7CkBAIC00Mjk3LDQ0ICs0NzI4LDU3IEBAIGdsOjpF
cnJvciBSZW5kZXJlcjExOjpnZW5lcmljRHJhd0FycmF5cyhDb250ZXh0MTEgKmNvbnRleHQsCiAg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLUZyYW1lYnVmZmVySW1wbCAqUmVuZGVyZXIx
MTo6Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZz
dGF0ZSkKK2dsOjpFcnJvciBSZW5kZXJlcjExOjpnZW5lcmljRHJhd0luZGlyZWN0KENvbnRleHQx
MSAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHZvaWQgKmluZGlyZWN0KQogewotICAgIHJldHVybiBuZXcgRnJhbWVidWZmZXIxMShzdGF0
ZSwgdGhpcyk7Ci19CisgICAgY29uc3QgYXV0byAmZGF0YSAgICAgPSBjb250ZXh0LT5nZXRDb250
ZXh0U3RhdGUoKTsKKyAgICBjb25zdCBhdXRvICZnbFN0YXRlICA9IGRhdGEuZ2V0U3RhdGUoKTsK
KyAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSA9IGdsU3RhdGUuZ2V0UHJvZ3JhbSgpOworICAgIEFT
U0VSVChwcm9ncmFtICE9IG51bGxwdHIpOworICAgIFByb2dyYW1EM0QgKnByb2dyYW1EM0QgPSBH
ZXRJbXBsQXM8UHJvZ3JhbUQzRD4ocHJvZ3JhbSk7CisgICAgYm9vbCB1c2VzUG9pbnRTaXplICAg
ICA9IHByb2dyYW1EM0QtPnVzZXNQb2ludFNpemUoKTsKKyAgICBwcm9ncmFtRDNELT51cGRhdGVT
YW1wbGVyTWFwcGluZygpOwogCi1nbDo6RXJyb3IgUmVuZGVyZXIxMTo6Z2V0U2NyYXRjaE1lbW9y
eUJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6ZSwgTWVtb3J5QnVmZmVyICoqYnVmZmVyT3V0KQot
ewotICAgIGlmIChtU2NyYXRjaE1lbW9yeUJ1ZmZlci5zaXplKCkgPT0gcmVxdWVzdGVkU2l6ZSkK
LSAgICB7Ci0gICAgICAgIG1TY3JhdGNoTWVtb3J5QnVmZmVyUmVzZXRDb3VudGVyID0gU2NyYXRj
aE1lbW9yeUJ1ZmZlckxpZmV0aW1lOwotICAgICAgICAqYnVmZmVyT3V0ID0gJm1TY3JhdGNoTWVt
b3J5QnVmZmVyOwotICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKLSAgICB9CisgICAgQU5H
TEVfVFJZKGdlbmVyYXRlU3dpenpsZXMoZGF0YSkpOworICAgIGFwcGx5UHJpbWl0aXZlVHlwZSht
b2RlLCAwLCB1c2VzUG9pbnRTaXplKTsKKyAgICBBTkdMRV9UUlkodXBkYXRlU3RhdGUoY29udGV4
dCwgbW9kZSkpOworICAgIEFOR0xFX1RSWShhcHBseVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycyhk
YXRhKSk7CisgICAgQVNTRVJUKCFnbFN0YXRlLmlzVHJhbnNmb3JtRmVlZGJhY2tBY3RpdmVVbnBh
dXNlZCgpKTsKKyAgICBBTkdMRV9UUlkoYXBwbHlUZXh0dXJlcyhjb250ZXh0LCBkYXRhKSk7Cisg
ICAgQU5HTEVfVFJZKGFwcGx5U2hhZGVycyhkYXRhLCBtb2RlKSk7CisgICAgQU5HTEVfVFJZKHBy
b2dyYW1EM0QtPmFwcGx5VW5pZm9ybUJ1ZmZlcnMoZGF0YSkpOwogCi0gICAgaWYgKG1TY3JhdGNo
TWVtb3J5QnVmZmVyLnNpemUoKSA+IHJlcXVlc3RlZFNpemUpCisgICAgaWYgKHR5cGUgPT0gR0xf
Tk9ORSkKICAgICB7Ci0gICAgICAgIG1TY3JhdGNoTWVtb3J5QnVmZmVyUmVzZXRDb3VudGVyLS07
CisgICAgICAgIEFOR0xFX1RSWShkcmF3QXJyYXlzSW5kaXJlY3RJbXBsKGRhdGEsIG1vZGUsIGlu
ZGlyZWN0KSk7CiAgICAgfQotCi0gICAgaWYgKG1TY3JhdGNoTWVtb3J5QnVmZmVyUmVzZXRDb3Vu
dGVyIDw9IDAgfHwgbVNjcmF0Y2hNZW1vcnlCdWZmZXIuc2l6ZSgpIDwgcmVxdWVzdGVkU2l6ZSkK
KyAgICBlbHNlCiAgICAgewotICAgICAgICBtU2NyYXRjaE1lbW9yeUJ1ZmZlci5yZXNpemUoMCk7
Ci0gICAgICAgIGlmICghbVNjcmF0Y2hNZW1vcnlCdWZmZXIucmVzaXplKHJlcXVlc3RlZFNpemUp
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1P
UlksICJGYWlsZWQgdG8gYWxsb2NhdGUgaW50ZXJuYWwgYnVmZmVyLiIpOwotICAgICAgICB9Ci0g
ICAgICAgIG1TY3JhdGNoTWVtb3J5QnVmZmVyUmVzZXRDb3VudGVyID0gU2NyYXRjaE1lbW9yeUJ1
ZmZlckxpZmV0aW1lOworICAgICAgICBBTkdMRV9UUlkoZHJhd0VsZW1lbnRzSW5kaXJlY3RJbXBs
KGRhdGEsIG1vZGUsIHR5cGUsIGluZGlyZWN0KSk7CiAgICAgfQogCi0gICAgQVNTRVJUKG1TY3Jh
dGNoTWVtb3J5QnVmZmVyLnNpemUoKSA+PSByZXF1ZXN0ZWRTaXplKTsKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKK30KIAotICAgICpidWZmZXJPdXQgPSAmbVNjcmF0Y2hNZW1vcnlCdWZmZXI7
CitGcmFtZWJ1ZmZlckltcGwgKlJlbmRlcmVyMTE6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihj
b25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpCit7CisgICAgcmV0dXJuIG5ldyBGcmFt
ZWJ1ZmZlcjExKHN0YXRlLCB0aGlzKTsKK30KKworZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmdldFNj
cmF0Y2hNZW1vcnlCdWZmZXIoc2l6ZV90IHJlcXVlc3RlZFNpemUsIGFuZ2xlOjpNZW1vcnlCdWZm
ZXIgKipidWZmZXJPdXQpCit7CisgICAgaWYgKCFtU2NyYXRjaE1lbW9yeUJ1ZmZlci5nZXQocmVx
dWVzdGVkU2l6ZSwgYnVmZmVyT3V0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6T3V0T2ZN
ZW1vcnkoKSA8PCAiRmFpbGVkIHRvIGFsbG9jYXRlIGludGVybmFsIGJ1ZmZlci4iOworICAgIH0K
ICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OlZlcnNpb24gUmVuZGVyZXIxMTo6
Z2V0TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZ2w6OlZlcnNp
b24oZDNkMTFfZ2w6OkdldE1heGltdW1DbGllbnRWZXJzaW9uKG1SZW5kZXJlcjExRGV2aWNlQ2Fw
cy5mZWF0dXJlTGV2ZWwpLCAwKTsKKyAgICByZXR1cm4gZDNkMTFfZ2w6OkdldE1heGltdW1DbGll
bnRWZXJzaW9uKG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwpOwogfQogCiBnbDo6
RGVidWdBbm5vdGF0b3IgKlJlbmRlcmVyMTE6OmdldEFubm90YXRvcigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1Jl
bmRlcmVyMTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oCmluZGV4IDYzM2NmMmIyMzE5ZTg4YWJmOGNhNzFkNDRl
MWYxZjQ5ZjZlODg3NjkuLjVhMjIzNDhkOTEzNjhiN2Y3Mzg5YmQ3ZWUyOTM5ZTQ3YmU5YjdjZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oCkBAIC0xMjMsOSArMTIz
LDE3IEBAIGNsYXNzIFJlbmRlcmVyMTEgOiBwdWJsaWMgUmVuZGVyZXJEM0QKIAogICAgIFN3YXBD
aGFpbkQzRCAqY3JlYXRlU3dhcENoYWluKE5hdGl2ZVdpbmRvd0QzRCAqbmF0aXZlV2luZG93LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzaGFyZUhhbmRsZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJVW5rbm93biAqZDNkVGV4dHVyZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVwdGhCdWZmZXJGb3Jt
YXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IG9yaWVudGF0aW9u
KSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIGdldEQzRFRleHR1cmVJbmZvKElVbmtub3duICpk
M2RUZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50ICp3aWR0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCAqaGVpZ2h0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICpmYm9Gb3JtYXQpIGNvbnN0IG92
ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgdmFsaWRhdGVTaGFyZUhhbmRsZShjb25zdCBlZ2w6OkNv
bmZpZyAqY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUg
c2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVn
bDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGdsOjpFcnJv
ciBzZXRTYW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgaW5kZXgsCkBAIC0xMzcsMTAgKzE0NSw5IEBAIGNsYXNzIFJlbmRl
cmVyMTEgOiBwdWJsaWMgUmVuZGVyZXJEM0QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0xpbnQ+ICZ2ZXJ0ZXhVbmlmb3JtQnVmZmVycywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0xpbnQ+ICZmcmFn
bWVudFVuaWZvcm1CdWZmZXJzKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciB1cGRhdGVTdGF0
ZShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBHTGVudW0gZHJhd01vZGUpOworICAgIGds
OjpFcnJvciB1cGRhdGVTdGF0ZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsIEdMZW51bSBkcmF3
TW9kZSk7CiAKICAgICBib29sIGFwcGx5UHJpbWl0aXZlVHlwZShHTGVudW0gbW9kZSwgR0xzaXpl
aSBjb3VudCwgYm9vbCB1c2VzUG9pbnRTaXplKTsKLSAgICBnbDo6RXJyb3IgYXBwbHlSZW5kZXJU
YXJnZXQoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZUJ1ZmZlcik7CiAgICAgZ2w6OkVycm9yIGFwcGx5
VW5pZm9ybXMoY29uc3QgUHJvZ3JhbUQzRCAmcHJvZ3JhbUQzRCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZHJhd01vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8RDNEVW5pZm9ybSAqPiAmdW5pZm9ybUFycmF5KSBvdmVycmlkZTsK
QEAgLTIxMSw2ICsyMTgsNyBAQCBjbGFzcyBSZW5kZXJlcjExIDogcHVibGljIFJlbmRlcmVyRDNE
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGRlc3RUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGRlc3RMZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tG
bGlwWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFs
cGhhLApAQCAtMjQwLDggKzI0OCwxMCBAQCBjbGFzcyBSZW5kZXJlcjExIDogcHVibGljIFJlbmRl
cmVyRDNECiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyVHlwZSB0eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEQz
RFZhcnlpbmc+ICZzdHJlYW1PdXRWYXJ5aW5ncywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHNlcGFyYXRlZE91dHB1dEJ1ZmZlcnMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgRDNEQ29tcGlsZXJXb3JrYXJvdW5kcyAmd29ya2Fyb3VuZHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYW5nbGU6OkNvbXBpbGVy
V29ya2Fyb3VuZHNEM0QgJndvcmthcm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlckV4ZWN1dGFibGVEM0QgKipvdXRFeGVjdHVhYmxlKSBvdmVycmlkZTsKKyAg
ICBnbDo6RXJyb3IgZW5zdXJlSExTTENvbXBpbGVySW5pdGlhbGl6ZWQoKSBvdmVycmlkZTsKKwog
ICAgIFVuaWZvcm1TdG9yYWdlRDNEICpjcmVhdGVVbmlmb3JtU3RvcmFnZShzaXplX3Qgc3RvcmFn
ZVNpemUpIG92ZXJyaWRlOwogCiAgICAgLy8gSW1hZ2Ugb3BlcmF0aW9ucwpAQCAtMzE3LDcgKzMy
NywxMSBAQCBjbGFzcyBSZW5kZXJlcjExIDogcHVibGljIFJlbmRlcmVyRDNECiAgICAgYm9vbCBn
ZXRMVUlEKExVSUQgKmFkYXB0ZXJMdWlkKSBjb25zdCBvdmVycmlkZTsKICAgICBWZXJ0ZXhDb252
ZXJzaW9uVHlwZSBnZXRWZXJ0ZXhDb252ZXJzaW9uVHlwZShnbDo6VmVydGV4Rm9ybWF0VHlwZSB2
ZXJ0ZXhGb3JtYXRUeXBlKSBjb25zdCBvdmVycmlkZTsKICAgICBHTGVudW0gZ2V0VmVydGV4Q29t
cG9uZW50VHlwZShnbDo6VmVydGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBlKSBjb25zdCBv
dmVycmlkZTsKKworICAgIC8vIFdhcm5pbmc6IHlvdSBzaG91bGQgZW5zdXJlIGJpbmRpbmcgcmVh
bGx5IG1hdGNoZXMgYXR0cmliLmJpbmRpbmdJbmRleCBiZWZvcmUgdXNpbmcgdGhpcworICAgIC8v
IGZ1bmN0aW9uLgogICAgIGdsOjpFcnJvck9yUmVzdWx0PHVuc2lnbmVkIGludD4gZ2V0VmVydGV4
U3BhY2VSZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGluc3RhbmNlcykgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTMzNCw3ICszNDgsNyBAQCBjbGFzcyBS
ZW5kZXJlcjExIDogcHVibGljIFJlbmRlcmVyRDNECiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgY29sb3JCbGl0LCBib29sIGRlcHRoQmxpdCwgYm9vbCBzdGVuY2lsQmxp
dCk7CiAKICAgICBib29sIGlzRVMzQ2FwYWJsZSgpIGNvbnN0OwotICAgIGNvbnN0IFJlbmRlcmVy
MTFEZXZpY2VDYXBzICZnZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpIHsgcmV0dXJuIG1SZW5kZXJl
cjExRGV2aWNlQ2FwczsgfTsKKyAgICBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZ2V0UmVu
ZGVyZXIxMURldmljZUNhcHMoKSBjb25zdCB7IHJldHVybiBtUmVuZGVyZXIxMURldmljZUNhcHM7
IH07CiAKICAgICBSZW5kZXJlckNsYXNzIGdldFJlbmRlcmVyQ2xhc3MoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBSRU5ERVJFUl9EM0QxMTsgfQogICAgIElucHV0TGF5b3V0Q2FjaGUgKmdldElu
cHV0TGF5b3V0Q2FjaGUoKSB7IHJldHVybiAmbUlucHV0TGF5b3V0Q2FjaGU7IH0KQEAgLTM2MCwx
MCArMzc0LDE1IEBAIGNsYXNzIFJlbmRlcmVyMTEgOiBwdWJsaWMgUmVuZGVyZXJEM0QKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5n
ZSk7CiAKKyAgICBnbDo6RXJyb3IgZ2VuZXJpY0RyYXdJbmRpcmVjdChDb250ZXh0MTEgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpcmVjdCk7CisKICAgICAvLyBO
ZWNlc3NhcnkgaGFjayBmb3IgZGVmYXVsdCBmcmFtZWJ1ZmZlcnMgaW4gRDNELgogICAgIEZyYW1l
YnVmZmVySW1wbCAqY3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
clN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJyb3IgZ2V0U2NyYXRjaE1lbW9y
eUJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6ZSwgTWVtb3J5QnVmZmVyICoqYnVmZmVyT3V0KTsK
KyAgICBnbDo6RXJyb3IgZ2V0U2NyYXRjaE1lbW9yeUJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6
ZSwgYW5nbGU6Ok1lbW9yeUJ1ZmZlciAqKmJ1ZmZlck91dCk7CiAKICAgICBnbDo6VmVyc2lvbiBn
ZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMzgzLDI0ICs0
MDIsMzUgQEAgY2xhc3MgUmVuZGVyZXIxMSA6IHB1YmxpYyBSZW5kZXJlckQzRAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGluc3RhbmNlcyk7Ci0KLSAgICB2b2lkIGdlbmVyYXRlQ2FwcyhnbDo6
Q2FwcyAqb3V0Q2FwcywgZ2w6OlRleHR1cmVDYXBzTWFwICpvdXRUZXh0dXJlQ2FwcywKKyAgICBn
bDo6RXJyb3IgZHJhd0FycmF5c0luZGlyZWN0SW1wbChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZk
YXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaXJl
Y3QpOworICAgIGdsOjpFcnJvciBkcmF3RWxlbWVudHNJbmRpcmVjdEltcGwoY29uc3QgZ2w6OkNv
bnRleHRTdGF0ZSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THZvaWQgKmluZGlyZWN0KTsKKworICAgIC8vIFN1cHBvcnQgZGlyZWN0bHkgdXNpbmcgaW5kaXJl
Y3QgZHJhdyBidWZmZXIuCisgICAgYm9vbCBzdXBwb3J0c0Zhc3RJbmRpcmVjdERyYXcoY29uc3Qg
Z2w6OlN0YXRlICZzdGF0ZSwgR0xlbnVtIG1vZGUsIEdMZW51bSB0eXBlKTsKKworICAgIHZvaWQg
Z2VuZXJhdGVDYXBzKGdsOjpDYXBzICpvdXRDYXBzLAorICAgICAgICAgICAgICAgICAgICAgIGds
OjpUZXh0dXJlQ2Fwc01hcCAqb3V0VGV4dHVyZUNhcHMsCiAgICAgICAgICAgICAgICAgICAgICAg
Z2w6OkV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgZ2w6
OkxpbWl0YXRpb25zICpvdXRMaW1pdGF0aW9ucykgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBXb3Jr
YXJvdW5kc0QzRCBnZW5lcmF0ZVdvcmthcm91bmRzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYW5n
bGU6Oldvcmthcm91bmRzRDNEIGdlbmVyYXRlV29ya2Fyb3VuZHMoKSBjb25zdCBvdmVycmlkZTsK
IAogICAgIGdsOjpFcnJvciBkcmF3TGluZUxvb3AoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0
YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRyYW5zbGF0ZWRJbmRleERhdGEgKmluZGV4SW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBiYXNlVmVydGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluc3Rh
bmNlcyk7CiAgICAgZ2w6OkVycm9yIGRyYXdUcmlhbmdsZUZhbihjb25zdCBnbDo6Q29udGV4dFN0
YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IG1pbkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGJhc2VWZXJ0ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5z
dGFuY2VzKTsKIAogICAgIGdsOjpFcnJvciBhcHBseVNoYWRlcnMoY29uc3QgZ2w6OkNvbnRleHRT
dGF0ZSAmZGF0YSwgR0xlbnVtIGRyYXdNb2RlKTsKQEAgLTU1OSw4ICs1ODksNyBAQCBjbGFzcyBS
ZW5kZXJlcjExIDogcHVibGljIFJlbmRlcmVyRDNECiAKICAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+
IG1TY3JhdGNoSW5kZXhEYXRhQnVmZmVyOwogCi0gICAgTWVtb3J5QnVmZmVyIG1TY3JhdGNoTWVt
b3J5QnVmZmVyOwotICAgIHVuc2lnbmVkIGludCBtU2NyYXRjaE1lbW9yeUJ1ZmZlclJlc2V0Q291
bnRlcjsKKyAgICBhbmdsZTo6U2NyYXRjaEJ1ZmZlciBtU2NyYXRjaE1lbW9yeUJ1ZmZlcjsKIAog
ICAgIGdsOjpEZWJ1Z0Fubm90YXRvciAqbUFubm90YXRvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TaGFkZXJF
eGVjdXRhYmxlMTEuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9TaGFkZXJFeGVjdXRhYmxlMTEuY3BwCmluZGV4IDRkYTUxYWZlNDlm
ODdjODc1MzI5ZGE3YzU3YTUxNTkzNTNhMDExYWYuLjBhN2VjNWY3ODlhY2FiOWJhYzVkOTkxMWFk
Y2JmNGY2MjUxNTJkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU2hhZGVyRXhlY3V0YWJsZTExLmNwcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1No
YWRlckV4ZWN1dGFibGUxMS5jcHAKQEAgLTE3LDI3ICsxNyw0MiBAQCBTaGFkZXJFeGVjdXRhYmxl
MTE6OlNoYWRlckV4ZWN1dGFibGUxMShjb25zdCB2b2lkICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0
aCwgSUQzRAogICAgIDogU2hhZGVyRXhlY3V0YWJsZUQzRChmdW5jdGlvbiwgbGVuZ3RoKQogewog
ICAgIG1QaXhlbEV4ZWN1dGFibGUgPSBleGVjdXRhYmxlOwotICAgIG1WZXJ0ZXhFeGVjdXRhYmxl
ID0gTlVMTDsKLSAgICBtR2VvbWV0cnlFeGVjdXRhYmxlID0gTlVMTDsKLSAgICBtU3RyZWFtT3V0
RXhlY3V0YWJsZSA9IE5VTEw7CisgICAgbVZlcnRleEV4ZWN1dGFibGUgICAgPSBudWxscHRyOwor
ICAgIG1HZW9tZXRyeUV4ZWN1dGFibGUgID0gbnVsbHB0cjsKKyAgICBtU3RyZWFtT3V0RXhlY3V0
YWJsZSA9IG51bGxwdHI7CisgICAgbUNvbXB1dGVFeGVjdXRhYmxlICAgPSBudWxscHRyOwogfQog
CiBTaGFkZXJFeGVjdXRhYmxlMTE6OlNoYWRlckV4ZWN1dGFibGUxMShjb25zdCB2b2lkICpmdW5j
dGlvbiwgc2l6ZV90IGxlbmd0aCwgSUQzRDExVmVydGV4U2hhZGVyICpleGVjdXRhYmxlLCBJRDNE
MTFHZW9tZXRyeVNoYWRlciAqc3RyZWFtT3V0KQogICAgIDogU2hhZGVyRXhlY3V0YWJsZUQzRChm
dW5jdGlvbiwgbGVuZ3RoKQogewogICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0gZXhlY3V0YWJsZTsK
LSAgICBtUGl4ZWxFeGVjdXRhYmxlID0gTlVMTDsKLSAgICBtR2VvbWV0cnlFeGVjdXRhYmxlID0g
TlVMTDsKKyAgICBtUGl4ZWxFeGVjdXRhYmxlICAgICA9IG51bGxwdHI7CisgICAgbUdlb21ldHJ5
RXhlY3V0YWJsZSAgPSBudWxscHRyOwogICAgIG1TdHJlYW1PdXRFeGVjdXRhYmxlID0gc3RyZWFt
T3V0OworICAgIG1Db21wdXRlRXhlY3V0YWJsZSAgID0gbnVsbHB0cjsKIH0KIAogU2hhZGVyRXhl
Y3V0YWJsZTExOjpTaGFkZXJFeGVjdXRhYmxlMTEoY29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNpemVf
dCBsZW5ndGgsIElEM0QxMUdlb21ldHJ5U2hhZGVyICpleGVjdXRhYmxlKQogICAgIDogU2hhZGVy
RXhlY3V0YWJsZUQzRChmdW5jdGlvbiwgbGVuZ3RoKQogewogICAgIG1HZW9tZXRyeUV4ZWN1dGFi
bGUgPSBleGVjdXRhYmxlOwotICAgIG1WZXJ0ZXhFeGVjdXRhYmxlID0gTlVMTDsKLSAgICBtUGl4
ZWxFeGVjdXRhYmxlID0gTlVMTDsKLSAgICBtU3RyZWFtT3V0RXhlY3V0YWJsZSA9IE5VTEw7Cisg
ICAgbVZlcnRleEV4ZWN1dGFibGUgICAgPSBudWxscHRyOworICAgIG1QaXhlbEV4ZWN1dGFibGUg
ICAgID0gbnVsbHB0cjsKKyAgICBtU3RyZWFtT3V0RXhlY3V0YWJsZSA9IG51bGxwdHI7CisgICAg
bUNvbXB1dGVFeGVjdXRhYmxlICAgPSBudWxscHRyOworfQorCitTaGFkZXJFeGVjdXRhYmxlMTE6
OlNoYWRlckV4ZWN1dGFibGUxMShjb25zdCB2b2lkICpmdW5jdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFDb21wdXRlU2hhZGVyICpleGVjdXRhYmxlKQor
ICAgIDogU2hhZGVyRXhlY3V0YWJsZUQzRChmdW5jdGlvbiwgbGVuZ3RoKQoreworICAgIG1Db21w
dXRlRXhlY3V0YWJsZSAgID0gZXhlY3V0YWJsZTsKKyAgICBtUGl4ZWxFeGVjdXRhYmxlICAgICA9
IG51bGxwdHI7CisgICAgbVZlcnRleEV4ZWN1dGFibGUgICAgPSBudWxscHRyOworICAgIG1HZW9t
ZXRyeUV4ZWN1dGFibGUgID0gbnVsbHB0cjsKKyAgICBtU3RyZWFtT3V0RXhlY3V0YWJsZSA9IG51
bGxwdHI7CiB9CiAKIFNoYWRlckV4ZWN1dGFibGUxMTo6flNoYWRlckV4ZWN1dGFibGUxMSgpCkBA
IC00Niw2ICs2MSw3IEBAIFNoYWRlckV4ZWN1dGFibGUxMTo6flNoYWRlckV4ZWN1dGFibGUxMSgp
CiAgICAgU2FmZVJlbGVhc2UobVBpeGVsRXhlY3V0YWJsZSk7CiAgICAgU2FmZVJlbGVhc2UobUdl
b21ldHJ5RXhlY3V0YWJsZSk7CiAgICAgU2FmZVJlbGVhc2UobVN0cmVhbU91dEV4ZWN1dGFibGUp
OworICAgIFNhZmVSZWxlYXNlKG1Db21wdXRlRXhlY3V0YWJsZSk7CiB9CiAKIElEM0QxMVZlcnRl
eFNoYWRlciAqU2hhZGVyRXhlY3V0YWJsZTExOjpnZXRWZXJ0ZXhTaGFkZXIoKSBjb25zdApAQCAt
NjgsNiArODQsMTEgQEAgSUQzRDExR2VvbWV0cnlTaGFkZXIgKlNoYWRlckV4ZWN1dGFibGUxMTo6
Z2V0U3RyZWFtT3V0U2hhZGVyKCkgY29uc3QKICAgICByZXR1cm4gbVN0cmVhbU91dEV4ZWN1dGFi
bGU7CiB9CiAKK0lEM0QxMUNvbXB1dGVTaGFkZXIgKlNoYWRlckV4ZWN1dGFibGUxMTo6Z2V0Q29t
cHV0ZVNoYWRlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1Db21wdXRlRXhlY3V0YWJsZTsKK30K
KwogVW5pZm9ybVN0b3JhZ2UxMTo6VW5pZm9ybVN0b3JhZ2UxMShSZW5kZXJlcjExICpyZW5kZXJl
ciwgc2l6ZV90IGluaXRpYWxTaXplKQogICAgIDogVW5pZm9ybVN0b3JhZ2VEM0QoaW5pdGlhbFNp
emUpLAogICAgICAgbUNvbnN0YW50QnVmZmVyKE5VTEwpCkBAIC04NSw3ICsxMDYsNiBAQCBVbmlm
b3JtU3RvcmFnZTExOjpVbmlmb3JtU3RvcmFnZTExKFJlbmRlcmVyMTEgKnJlbmRlcmVyLCBzaXpl
X3QgaW5pdGlhbFNpemUpCiAgICAgICAgIGNvbnN0YW50QnVmZmVyRGVzY3JpcHRpb24uU3RydWN0
dXJlQnl0ZVN0cmlkZSA9IDA7CiAKICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkM2QxMURldmlj
ZS0+Q3JlYXRlQnVmZmVyKCZjb25zdGFudEJ1ZmZlckRlc2NyaXB0aW9uLCBOVUxMLCAmbUNvbnN0
YW50QnVmZmVyKTsKLSAgICAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShyZXN1bHQpOwog
ICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
U2hhZGVyRXhlY3V0YWJsZTExLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL1NoYWRlckV4ZWN1dGFibGUxMS5oCmluZGV4IDM3OWYzOWZl
NTNkMDMxZmNkMDAzNzIwN2IwOWRkN2YwZWQ2Y2YyNDUuLjFmZTFhMjBhOTE0ZTgyZWY4ZWRkZGEw
Yzk3NDA5MDY3OGM0ZjJjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU2hhZGVyRXhlY3V0YWJsZTExLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9T
aGFkZXJFeGVjdXRhYmxlMTEuaApAQCAtMjMsNiArMjMsNyBAQCBjbGFzcyBTaGFkZXJFeGVjdXRh
YmxlMTEgOiBwdWJsaWMgU2hhZGVyRXhlY3V0YWJsZUQzRAogICAgIFNoYWRlckV4ZWN1dGFibGUx
MShjb25zdCB2b2lkICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0aCwgSUQzRDExUGl4ZWxTaGFkZXIg
KmV4ZWN1dGFibGUpOwogICAgIFNoYWRlckV4ZWN1dGFibGUxMShjb25zdCB2b2lkICpmdW5jdGlv
biwgc2l6ZV90IGxlbmd0aCwgSUQzRDExVmVydGV4U2hhZGVyICpleGVjdXRhYmxlLCBJRDNEMTFH
ZW9tZXRyeVNoYWRlciAqc3RyZWFtT3V0KTsKICAgICBTaGFkZXJFeGVjdXRhYmxlMTEoY29uc3Qg
dm9pZCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgsIElEM0QxMUdlb21ldHJ5U2hhZGVyICpleGVj
dXRhYmxlKTsKKyAgICBTaGFkZXJFeGVjdXRhYmxlMTEoY29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNp
emVfdCBsZW5ndGgsIElEM0QxMUNvbXB1dGVTaGFkZXIgKmV4ZWN1dGFibGUpOwogCiAgICAgdmly
dHVhbCB+U2hhZGVyRXhlY3V0YWJsZTExKCk7CiAKQEAgLTMwLDEyICszMSwxNCBAQCBjbGFzcyBT
aGFkZXJFeGVjdXRhYmxlMTEgOiBwdWJsaWMgU2hhZGVyRXhlY3V0YWJsZUQzRAogICAgIElEM0Qx
MVZlcnRleFNoYWRlciAqZ2V0VmVydGV4U2hhZGVyKCkgY29uc3Q7CiAgICAgSUQzRDExR2VvbWV0
cnlTaGFkZXIgKmdldEdlb21ldHJ5U2hhZGVyKCkgY29uc3Q7CiAgICAgSUQzRDExR2VvbWV0cnlT
aGFkZXIgKmdldFN0cmVhbU91dFNoYWRlcigpIGNvbnN0OworICAgIElEM0QxMUNvbXB1dGVTaGFk
ZXIgKmdldENvbXB1dGVTaGFkZXIoKSBjb25zdDsKIAogICBwcml2YXRlOgogICAgIElEM0QxMVBp
eGVsU2hhZGVyICptUGl4ZWxFeGVjdXRhYmxlOwogICAgIElEM0QxMVZlcnRleFNoYWRlciAqbVZl
cnRleEV4ZWN1dGFibGU7CiAgICAgSUQzRDExR2VvbWV0cnlTaGFkZXIgKm1HZW9tZXRyeUV4ZWN1
dGFibGU7CiAgICAgSUQzRDExR2VvbWV0cnlTaGFkZXIgKm1TdHJlYW1PdXRFeGVjdXRhYmxlOwor
ICAgIElEM0QxMUNvbXB1dGVTaGFkZXIgKm1Db21wdXRlRXhlY3V0YWJsZTsKIH07CiAKIGNsYXNz
IFVuaWZvcm1TdG9yYWdlMTEgOiBwdWJsaWMgVW5pZm9ybVN0b3JhZ2VEM0QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
U3RhdGVNYW5hZ2VyMTEuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5jcHAKaW5kZXggMGUyOGM4YzE4YTAx
MjNiZjBiYmU1ODE1ZDBhYzI1M2I5ZDkyYmExMC4uYjQyN2U2ZmI0ODFiNGRlNGJhYWEzZTgzOTFk
NzZiZGY1NWYzNzBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1h
bmFnZXIxMS5jcHAKQEAgLTgsNyArOCw3IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvU3RhdGVNYW5hZ2VyMTEuaCIKIAotI2luY2x1ZGUgImNvbW1vbi9CaXRTZXRJ
dGVyYXRvci5oIgorI2luY2x1ZGUgImNvbW1vbi9iaXRzZXRfdXRpbHMuaCIKICNpbmNsdWRlICJj
b21tb24vdXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUXVlcnkuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9WZXJ0ZXhBcnJheS5oIgpAQCAtNDk2LDcgKzQ5Niw5IEBAIGdsOjpFcnJvciBT
dGF0ZU1hbmFnZXIxMTo6c2V0QmxlbmRTdGF0ZShjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1l
YnVmZmVyLAogICAgIH0KIAogICAgIElEM0QxMUJsZW5kU3RhdGUgKmR4QmxlbmRTdGF0ZSA9IG51
bGxwdHI7Ci0gICAgQU5HTEVfVFJZKG1SZW5kZXJlci0+Z2V0U3RhdGVDYWNoZSgpLmdldEJsZW5k
U3RhdGUoZnJhbWVidWZmZXIsIGJsZW5kU3RhdGUsICZkeEJsZW5kU3RhdGUpKTsKKyAgICBjb25z
dCBkM2QxMTo6QmxlbmRTdGF0ZUtleSAma2V5ID0gUmVuZGVyU3RhdGVDYWNoZTo6R2V0QmxlbmRT
dGF0ZUtleShmcmFtZWJ1ZmZlciwgYmxlbmRTdGF0ZSk7CisKKyAgICBBTkdMRV9UUlkobVJlbmRl
cmVyLT5nZXRTdGF0ZUNhY2hlKCkuZ2V0QmxlbmRTdGF0ZShrZXksICZkeEJsZW5kU3RhdGUpKTsK
IAogICAgIEFTU0VSVChkeEJsZW5kU3RhdGUgIT0gbnVsbHB0cik7CiAKQEAgLTU1MCwyNSArNTUy
LDQxIEBAIGdsOjpFcnJvciBTdGF0ZU1hbmFnZXIxMTo6c2V0RGVwdGhTdGVuY2lsU3RhdGUoY29u
c3QgZ2w6OlN0YXRlICZnbFN0YXRlKQogICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAg
ICB9CiAKLSAgICBjb25zdCBhdXRvICZkZXB0aFN0ZW5jaWxTdGF0ZSA9IGdsU3RhdGUuZ2V0RGVw
dGhTdGVuY2lsU3RhdGUoKTsKLSAgICBpbnQgc3RlbmNpbFJlZiAgICAgICAgICAgICAgICA9IGds
U3RhdGUuZ2V0U3RlbmNpbFJlZigpOwotICAgIGludCBzdGVuY2lsQmFja1JlZiAgICAgICAgICAg
ID0gZ2xTdGF0ZS5nZXRTdGVuY2lsQmFja1JlZigpOworICAgIG1DdXJEZXB0aFN0ZW5jaWxTdGF0
ZSA9IGdsU3RhdGUuZ2V0RGVwdGhTdGVuY2lsU3RhdGUoKTsKKyAgICBtQ3VyU3RlbmNpbFJlZiAg
ICAgICAgPSBnbFN0YXRlLmdldFN0ZW5jaWxSZWYoKTsKKyAgICBtQ3VyU3RlbmNpbEJhY2tSZWYg
ICAgPSBnbFN0YXRlLmdldFN0ZW5jaWxCYWNrUmVmKCk7CisgICAgbUN1ckRpc2FibGVEZXB0aCAg
ICAgID0gZGlzYWJsZURlcHRoOworICAgIG1DdXJEaXNhYmxlU3RlbmNpbCAgICA9IGRpc2FibGVT
dGVuY2lsOwogCiAgICAgLy8gZ2V0IHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIHN0ZW5jaWwgcmVm
CiAgICAgdW5zaWduZWQgaW50IG1heFN0ZW5jaWwgPSAwOwotICAgIGlmIChkZXB0aFN0ZW5jaWxT
dGF0ZS5zdGVuY2lsVGVzdCAmJiBtQ3VyU3RlbmNpbFNpemUgPiAwKQorICAgIGlmIChtQ3VyRGVw
dGhTdGVuY2lsU3RhdGUuc3RlbmNpbFRlc3QgJiYgbUN1clN0ZW5jaWxTaXplID4gMCkKICAgICB7
CiAgICAgICAgIG1heFN0ZW5jaWwgPSAoMSA8PCBtQ3VyU3RlbmNpbFNpemUpIC0gMTsKICAgICB9
Ci0gICAgQVNTRVJUKChkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsV3JpdGVtYXNrICYgbWF4U3Rl
bmNpbCkgPT0KLSAgICAgICAgICAgKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrV3JpdGVt
YXNrICYgbWF4U3RlbmNpbCkpOwotICAgIEFTU0VSVChzdGVuY2lsUmVmID09IHN0ZW5jaWxCYWNr
UmVmKTsKLSAgICBBU1NFUlQoKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxNYXNrICYgbWF4U3Rl
bmNpbCkgPT0KLSAgICAgICAgICAgKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrTWFzayAm
IG1heFN0ZW5jaWwpKTsKKyAgICBBU1NFUlQoKG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2ls
V3JpdGVtYXNrICYgbWF4U3RlbmNpbCkgPT0KKyAgICAgICAgICAgKG1DdXJEZXB0aFN0ZW5jaWxT
dGF0ZS5zdGVuY2lsQmFja1dyaXRlbWFzayAmIG1heFN0ZW5jaWwpKTsKKyAgICBBU1NFUlQobUN1
clN0ZW5jaWxSZWYgPT0gbUN1clN0ZW5jaWxCYWNrUmVmKTsKKyAgICBBU1NFUlQoKG1DdXJEZXB0
aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsTWFzayAmIG1heFN0ZW5jaWwpID09CisgICAgICAgICAgICht
Q3VyRGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tNYXNrICYgbWF4U3RlbmNpbCkpOwogCiAg
ICAgSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKmR4RGVwdGhTdGVuY2lsU3RhdGUgPSBOVUxMOwot
ICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmdldFN0YXRlQ2FjaGUoKS5nZXREZXB0aFN0ZW5jaWxT
dGF0ZSgKLSAgICAgICAgZGVwdGhTdGVuY2lsU3RhdGUsIGRpc2FibGVEZXB0aCwgZGlzYWJsZVN0
ZW5jaWwsICZkeERlcHRoU3RlbmNpbFN0YXRlKSk7CisgICAgZ2w6OkRlcHRoU3RlbmNpbFN0YXRl
IGRzU3RhdGVLZXkgICAgICAgICAgICAgPSBnbFN0YXRlLmdldERlcHRoU3RlbmNpbFN0YXRlKCk7
CisKKyAgICBpZiAoZGlzYWJsZURlcHRoKQorICAgIHsKKyAgICAgICAgZHNTdGF0ZUtleS5kZXB0
aFRlc3QgPSBmYWxzZTsKKyAgICAgICAgZHNTdGF0ZUtleS5kZXB0aE1hc2sgPSBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAoZGlzYWJsZVN0ZW5jaWwpCisgICAgeworICAgICAgICBkc1N0YXRlS2V5
LnN0ZW5jaWxXcml0ZW1hc2sgICAgID0gMDsKKyAgICAgICAgZHNTdGF0ZUtleS5zdGVuY2lsQmFj
a1dyaXRlbWFzayA9IDA7CisgICAgICAgIGRzU3RhdGVLZXkuc3RlbmNpbFRlc3QgICAgICAgICAg
PSBmYWxzZTsKKyAgICB9CisKKyAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5nZXRTdGF0ZUNhY2hl
KCkuZ2V0RGVwdGhTdGVuY2lsU3RhdGUoZHNTdGF0ZUtleSwgJmR4RGVwdGhTdGVuY2lsU3RhdGUp
KTsKIAogICAgIEFTU0VSVChkeERlcHRoU3RlbmNpbFN0YXRlKTsKIApAQCAtNTgwLDE2ICs1OTgs
MTAgQEAgZ2w6OkVycm9yIFN0YXRlTWFuYWdlcjExOjpzZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25z
dCBnbDo6U3RhdGUgJmdsU3RhdGUpCiAgICAgICAgICAgICAgICAgICAiVW5leHBlY3RlZCB2YWx1
ZSBvZiBEM0QxMV9ERUZBVUxUX1NURU5DSUxfUkVBRF9NQVNLIik7CiAgICAgc3RhdGljX2Fzc2Vy
dChEM0QxMV9ERUZBVUxUX1NURU5DSUxfV1JJVEVfTUFTSyA9PSAweEZGLAogICAgICAgICAgICAg
ICAgICAgIlVuZXhwZWN0ZWQgdmFsdWUgb2YgRDNEMTFfREVGQVVMVF9TVEVOQ0lMX1dSSVRFX01B
U0siKTsKLSAgICBVSU5UIGR4U3RlbmNpbFJlZiA9IHN0ZDo6bWluPFVJTlQ+KHN0ZW5jaWxSZWYs
IDB4RkZ1KTsKKyAgICBVSU5UIGR4U3RlbmNpbFJlZiA9IHN0ZDo6bWluPFVJTlQ+KG1DdXJTdGVu
Y2lsUmVmLCAweEZGdSk7CiAKICAgICBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKS0+T01T
ZXREZXB0aFN0ZW5jaWxTdGF0ZShkeERlcHRoU3RlbmNpbFN0YXRlLCBkeFN0ZW5jaWxSZWYpOwog
Ci0gICAgbUN1ckRlcHRoU3RlbmNpbFN0YXRlID0gZGVwdGhTdGVuY2lsU3RhdGU7Ci0gICAgbUN1
clN0ZW5jaWxSZWYgICAgICAgID0gc3RlbmNpbFJlZjsKLSAgICBtQ3VyU3RlbmNpbEJhY2tSZWYg
ICAgPSBzdGVuY2lsQmFja1JlZjsKLSAgICBtQ3VyRGlzYWJsZURlcHRoICAgICAgPSBkaXNhYmxl
RGVwdGg7Ci0gICAgbUN1ckRpc2FibGVTdGVuY2lsICAgID0gZGlzYWJsZVN0ZW5jaWw7Ci0KICAg
ICBtRGVwdGhTdGVuY2lsU3RhdGVJc0RpcnR5ID0gZmFsc2U7CiAKICAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKQEAgLTgwMywyMSArODE1LDE4IEBAIHZvaWQgU3RhdGVNYW5hZ2VyMTE6OmludmFs
aWRhdGVFdmVyeXRoaW5nKCkKICAgICBpbnZhbGlkYXRlQm91bmRWaWV3cygpOwogfQogCi12b2lk
IFN0YXRlTWFuYWdlcjExOjpzZXRPbmVUaW1lUmVuZGVyVGFyZ2V0KElEM0QxMVJlbmRlclRhcmdl
dFZpZXcgKnJlbmRlclRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZGVwdGhTdGVuY2lsKQordm9pZCBTdGF0
ZU1hbmFnZXIxMTo6c2V0T25lVGltZVJlbmRlclRhcmdldChJRDNEMTFSZW5kZXJUYXJnZXRWaWV3
ICpydHYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0Qx
MURlcHRoU3RlbmNpbFZpZXcgKmRzdikKIHsKLSAgICBtUmVuZGVyZXItPmdldERldmljZUNvbnRl
eHQoKS0+T01TZXRSZW5kZXJUYXJnZXRzKDEsICZyZW5kZXJUYXJnZXQsIGRlcHRoU3RlbmNpbCk7
CisgICAgbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCktPk9NU2V0UmVuZGVyVGFyZ2V0cygx
LCAmcnR2LCBkc3YpOwogICAgIG1SZW5kZXJUYXJnZXRJc0RpcnR5ID0gdHJ1ZTsKIH0KIAotdm9p
ZCBTdGF0ZU1hbmFnZXIxMTo6c2V0T25lVGltZVJlbmRlclRhcmdldHMoCi0gICAgY29uc3Qgc3Rk
Ojp2ZWN0b3I8SUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqPiAmcmVuZGVyVGFyZ2V0cywKLSAgICBJ
RDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpkZXB0aFN0ZW5jaWwpCit2b2lkIFN0YXRlTWFuYWdlcjEx
OjpzZXRPbmVUaW1lUmVuZGVyVGFyZ2V0cyhJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICoqcnR2cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgbnVtUnR2
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMURl
cHRoU3RlbmNpbFZpZXcgKmRzdikKIHsKLSAgICBVSU5UIGNvdW50ICAgICAgICAgICAgICAgPSBz
dGF0aWNfY2FzdDxVSU5UPihyZW5kZXJUYXJnZXRzLnNpemUoKSk7Ci0gICAgYXV0byByZW5kZXJU
YXJnZXRQb2ludGVyID0gKCFyZW5kZXJUYXJnZXRzLmVtcHR5KCkgPyByZW5kZXJUYXJnZXRzLmRh
dGEoKSA6IG51bGxwdHIpOwotCi0gICAgbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCktPk9N
U2V0UmVuZGVyVGFyZ2V0cyhjb3VudCwgcmVuZGVyVGFyZ2V0UG9pbnRlciwgZGVwdGhTdGVuY2ls
KTsKKyAgICBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKS0+T01TZXRSZW5kZXJUYXJnZXRz
KG51bVJ0dnMsIChudW1SdHZzID4gMCkgPyBydHZzIDogbnVsbHB0ciwgZHN2KTsKICAgICBtUmVu
ZGVyVGFyZ2V0SXNEaXJ0eSA9IHRydWU7CiB9CiAKQEAgLTk3MSw3ICs5ODAsNyBAQCB2b2lkIFN0
YXRlTWFuYWdlcjExOjpkZWluaXRpYWxpemUoKQogICAgIG1DdXJyZW50VmFsdWVBdHRyaWJzLmNs
ZWFyKCk7CiB9CiAKLWdsOjpFcnJvciBTdGF0ZU1hbmFnZXIxMTo6c3luY0ZyYW1lYnVmZmVyKGds
OjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIpCitnbDo6RXJyb3IgU3RhdGVNYW5hZ2VyMTE6OnN5
bmNGcmFtZWJ1ZmZlcihDb250ZXh0SW1wbCAqY29udGV4dEltcGwsIGdsOjpGcmFtZWJ1ZmZlciAq
ZnJhbWVidWZmZXIpCiB7CiAgICAgRnJhbWVidWZmZXIxMSAqZnJhbWVidWZmZXIxMSA9IEdldElt
cGxBczxGcmFtZWJ1ZmZlcjExPihmcmFtZWJ1ZmZlcik7CiAgICAgQU5HTEVfVFJZKGZyYW1lYnVm
ZmVyMTEtPm1hcmtBdHRhY2htZW50c0RpcnR5KCkpOwpAQCAtOTc5LDcgKzk4OCw3IEBAIGdsOjpF
cnJvciBTdGF0ZU1hbmFnZXIxMTo6c3luY0ZyYW1lYnVmZmVyKGdsOjpGcmFtZWJ1ZmZlciAqZnJh
bWVidWZmZXIpCiAgICAgaWYgKGZyYW1lYnVmZmVyMTEtPmhhc0FueUludGVybmFsRGlydHlCaXQo
KSkKICAgICB7CiAgICAgICAgIEFTU0VSVChmcmFtZWJ1ZmZlci0+aWQoKSAhPSAwKTsKLSAgICAg
ICAgZnJhbWVidWZmZXIxMS0+c3luY0ludGVybmFsU3RhdGUoKTsKKyAgICAgICAgZnJhbWVidWZm
ZXIxMS0+c3luY0ludGVybmFsU3RhdGUoY29udGV4dEltcGwpOwogICAgIH0KIAogICAgIGlmICgh
bVJlbmRlclRhcmdldElzRGlydHkpCkBAIC0xMDE2LDYgKzEwMjUsNyBAQCBnbDo6RXJyb3IgU3Rh
dGVNYW5hZ2VyMTE6OnN5bmNGcmFtZWJ1ZmZlcihnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVy
KQogICAgIHNpemVfdCBhcHBsaWVkUlRJbmRleCAgPSAwOwogICAgIGJvb2wgc2tpcEluYWN0aXZl
UlRzICAgPSBtUmVuZGVyZXItPmdldFdvcmthcm91bmRzKCkubXJ0UGVyZldvcmthcm91bmQ7CiAg
ICAgY29uc3QgYXV0byAmZHJhd1N0YXRlcyA9IGZyYW1lYnVmZmVyLT5nZXREcmF3QnVmZmVyU3Rh
dGVzKCk7CisgICAgVUlOVCBtYXhFeGlzdGluZ1JUICAgICA9IDA7CiAKICAgICBmb3IgKHNpemVf
dCBydEluZGV4ID0gMDsgcnRJbmRleCA8IGNvbG9yUlRzLnNpemUoKTsgKytydEluZGV4KQogICAg
IHsKQEAgLTEwMzEsNiArMTA0MSw3IEBAIGdsOjpFcnJvciBTdGF0ZU1hbmFnZXIxMTo6c3luY0Zy
YW1lYnVmZmVyKGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGZyYW1lYnVmZmVyUlRWc1thcHBsaWVkUlRJbmRleF0gPSByZW5kZXJUYXJnZXQtPmdl
dFJlbmRlclRhcmdldFZpZXcoKTsKICAgICAgICAgICAgIEFTU0VSVChmcmFtZWJ1ZmZlclJUVnNb
YXBwbGllZFJUSW5kZXhdKTsKKyAgICAgICAgICAgIG1heEV4aXN0aW5nUlQgPSBzdGF0aWNfY2Fz
dDxVSU5UPihhcHBsaWVkUlRJbmRleCkgKyAxOwogCiAgICAgICAgICAgICBpZiAobWlzc2luZ0Nv
bG9yUmVuZGVyVGFyZ2V0KQogICAgICAgICAgICAgewpAQCAtMTA3MSwxMCArMTA4MiwxMCBAQCBn
bDo6RXJyb3IgU3RhdGVNYW5hZ2VyMTE6OnN5bmNGcmFtZWJ1ZmZlcihnbDo6RnJhbWVidWZmZXIg
KmZyYW1lYnVmZmVyKQogICAgIH0KIAogICAgIC8vIFRPRE8oam1hZGlsbCk6IFVzZSBjb250ZXh0
IGNhcHM/Ci0gICAgVUlOVCBkcmF3QnVmZmVycyA9IG1SZW5kZXJlci0+Z2V0TmF0aXZlQ2Fwcygp
Lm1heERyYXdCdWZmZXJzOworICAgIEFTU0VSVChtYXhFeGlzdGluZ1JUIDw9IHN0YXRpY19jYXN0
PFVJTlQ+KG1SZW5kZXJlci0+Z2V0TmF0aXZlQ2FwcygpLm1heERyYXdCdWZmZXJzKSk7CiAKICAg
ICAvLyBBcHBseSB0aGUgcmVuZGVyIHRhcmdldCBhbmQgZGVwdGggc3RlbmNpbAotICAgIG1SZW5k
ZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpLT5PTVNldFJlbmRlclRhcmdldHMoZHJhd0J1ZmZlcnMs
IGZyYW1lYnVmZmVyUlRWcy5kYXRhKCksCisgICAgbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0
KCktPk9NU2V0UmVuZGVyVGFyZ2V0cyhtYXhFeGlzdGluZ1JULCBmcmFtZWJ1ZmZlclJUVnMuZGF0
YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnJhbWVidWZmZXJEU1YpOwogCiAgICAgLy8gVGhlIEQzRDExIGJsZW5kIHN0YXRlIGlzIGhl
YXZpbHkgZGVwZW5kZW50IG9uIHRoZSBjdXJyZW50IHJlbmRlciB0YXJnZXQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L1N0YXRlTWFuYWdlcjExLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdlcjExLmgKaW5kZXggNzcxZWI0MzlmZDFmNDgx
Mzc0NzdkZjg3ZTRmZTU0MGE3ZjAzYjlhYy4uOGRlODM4YjMzYmUwNGNkMmY5ODQ3MTllYzM1MGRm
MDJjYmYyNTQwMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RhdGVNYW5hZ2Vy
MTEuaApAQCAtNzcsMTYgKzc3LDE2IEBAIGNsYXNzIFN0YXRlTWFuYWdlcjExIGZpbmFsIDogYW5n
bGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFTaGFkZXJS
ZXNvdXJjZVZpZXcgKnNydik7CiAgICAgZ2w6OkVycm9yIGNsZWFyVGV4dHVyZXMoZ2w6OlNhbXBs
ZXJUeXBlIHNhbXBsZXJUeXBlLCBzaXplX3QgcmFuZ2VTdGFydCwgc2l6ZV90IHJhbmdlRW5kKTsK
IAotICAgIGdsOjpFcnJvciBzeW5jRnJhbWVidWZmZXIoZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1
ZmZlcik7CisgICAgZ2w6OkVycm9yIHN5bmNGcmFtZWJ1ZmZlcihDb250ZXh0SW1wbCAqY29udGV4
dEltcGwsIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIpOwogCiAgICAgdm9pZCBpbnZhbGlk
YXRlUmVuZGVyVGFyZ2V0KCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlQm91bmRWaWV3cygpOwogICAg
IHZvaWQgaW52YWxpZGF0ZUV2ZXJ5dGhpbmcoKTsKIAotICAgIHZvaWQgc2V0T25lVGltZVJlbmRl
clRhcmdldChJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpyZW5kZXJUYXJnZXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmRlcHRoU3RlbmNp
bCk7Ci0gICAgdm9pZCBzZXRPbmVUaW1lUmVuZGVyVGFyZ2V0cyhjb25zdCBzdGQ6OnZlY3RvcjxJ
RDNEMTFSZW5kZXJUYXJnZXRWaWV3ICo+ICZyZW5kZXJUYXJnZXRzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZGVwdGhTdGVuY2lsKTsK
KyAgICB2b2lkIHNldE9uZVRpbWVSZW5kZXJUYXJnZXQoSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAq
cnR2LCBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpkc3YpOworICAgIHZvaWQgc2V0T25lVGltZVJl
bmRlclRhcmdldHMoSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqKnJ0dnMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBVSU5UIG51bVJ0dnMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpkc3YpOwogCiAgICAgdm9pZCBvbkJl
Z2luUXVlcnkoUXVlcnkxMSAqcXVlcnkpOwogICAgIHZvaWQgb25EZWxldGVRdWVyeU9iamVjdChR
dWVyeTExICpxdWVyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N3YXBDaGFpbjExLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEu
Y3BwCmluZGV4IDU5Y2I2MGUzODRjY2M5N2I1MTdkNTQzYjA2MWEzYzExMDA4Mjc5NjkuLjU2ZWU5
MjAyOTdlYzE4YjU2ODZkY2VmOGUxY2Y4Y2MwMGQwYmU5OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWlu
MTEuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvU3dhcENoYWluMTEuY3BwCkBAIC01MSwxMCArNTEsMTEgQEAgYm9vbCBOZWVk
c09mZnNjcmVlblRleHR1cmUoUmVuZGVyZXIxMSAqcmVuZGVyZXIsIE5hdGl2ZVdpbmRvdzExICpu
YXRpdmVXaW5kb3csIEUKIFN3YXBDaGFpbjExOjpTd2FwQ2hhaW4xMShSZW5kZXJlcjExICpyZW5k
ZXJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVXaW5kb3cxMSAqbmF0aXZlV2lu
ZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzaGFyZUhhbmRsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBJVW5rbm93biAqZDNkVGV4dHVyZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMaW50IG9yaWVudGF0aW9uKQotICAgIDogU3dhcENoYWluRDNEKHNoYXJlSGFuZGxlLCBiYWNr
QnVmZmVyRm9ybWF0LCBkZXB0aEJ1ZmZlckZvcm1hdCksCisgICAgOiBTd2FwQ2hhaW5EM0Qoc2hh
cmVIYW5kbGUsIGQzZFRleHR1cmUsIGJhY2tCdWZmZXJGb3JtYXQsIGRlcHRoQnVmZmVyRm9ybWF0
KSwKICAgICAgIG1SZW5kZXJlcihyZW5kZXJlciksCiAgICAgICBtV2lkdGgoLTEpLAogICAgICAg
bUhlaWdodCgtMSksCkBAIC05Miw3ICs5Myw2IEBAIFN3YXBDaGFpbjExOjpTd2FwQ2hhaW4xMShS
ZW5kZXJlcjExICpyZW5kZXJlciwKICAgICAvLyBHZXQgdGhlIHBlcmZvcm1hbmNlIGNvdW50ZXIK
ICAgICBMQVJHRV9JTlRFR0VSIGNvdW50ZXJGcmVxZW5jeSA9IHt9OwogICAgIEJPT0wgc3VjY2Vz
cyAgICAgICAgICAgICAgICAgID0gUXVlcnlQZXJmb3JtYW5jZUZyZXF1ZW5jeSgmY291bnRlckZy
ZXFlbmN5KTsKLSAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHN1Y2Nlc3MpOwogICAgIEFT
U0VSVChzdWNjZXNzKTsKIAogICAgIG1RUENGcmVxdWVuY3kgPSBjb3VudGVyRnJlcWVuY3kuUXVh
ZFBhcnQ7CkBAIC0xOTMsNTEgKzE5MywzOCBAQCBFR0xpbnQgU3dhcENoYWluMTE6OnJlc2V0T2Zm
c2NyZWVuQ29sb3JCdWZmZXIoaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZQogCiAg
ICAgY29uc3QgZDNkMTE6OkZvcm1hdCAmYmFja2J1ZmZlckZvcm1hdEluZm8gPQogICAgICAgICBk
M2QxMTo6Rm9ybWF0OjpHZXQobU9mZnNjcmVlblJlbmRlclRhcmdldEZvcm1hdCwgbVJlbmRlcmVy
LT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKTsKKyAgICBEM0QxMV9URVhUVVJFMkRfREVTQyBv
ZmZzY3JlZW5UZXh0dXJlRGVzYyA9IHswfTsKIAotICAgIC8vIElmIHRoZSBhcHAgcGFzc2VkIGlu
IGEgc2hhcmUgaGFuZGxlLCBvcGVuIHRoZSByZXNvdXJjZQotICAgIC8vIFNlZSBFR0xfQU5HTEVf
ZDNkX3NoYXJlX2hhbmRsZV9jbGllbnRfYnVmZmVyCi0gICAgaWYgKG1BcHBDcmVhdGVkU2hhcmVI
YW5kbGUpCisgICAgLy8gSWYgdGhlIGFwcCBwYXNzZWQgaW4gYSBzaGFyZSBoYW5kbGUgb3IgRDNE
IHRleHR1cmUsIG9wZW4gdGhlIHJlc291cmNlCisgICAgLy8gU2VlIEVHTF9BTkdMRV9kM2Rfc2hh
cmVfaGFuZGxlX2NsaWVudF9idWZmZXIgYW5kIEVHTF9BTkdMRV9kM2RfdGV4dHVyZV9jbGllbnRf
YnVmZmVyCisgICAgaWYgKG1BcHBDcmVhdGVkU2hhcmVIYW5kbGUgfHwgbUQzRFRleHR1cmUgIT0g
bnVsbHB0cikKICAgICB7Ci0gICAgICAgIElEM0QxMVJlc291cmNlICp0ZW1wUmVzb3VyY2UxMTsK
LSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPk9wZW5TaGFyZWRSZXNvdXJjZShtU2hh
cmVIYW5kbGUsIF9fdXVpZG9mKElEM0QxMVJlc291cmNlKSwgKHZvaWQqKikmdGVtcFJlc291cmNl
MTEpOwotCi0gICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgaWYgKG1BcHBDcmVh
dGVkU2hhcmVIYW5kbGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEVSUigiRmFpbGVkIHRvIG9w
ZW4gdGhlIHN3YXAgY2hhaW4gcGJ1ZmZlciBzaGFyZSBoYW5kbGU6ICUwOGxYIiwgcmVzdWx0KTsK
LSAgICAgICAgICAgIHJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBFR0xfQkFEX1BBUkFN
RVRFUjsKLSAgICAgICAgfQotCi0gICAgICAgIHJlc3VsdCA9IHRlbXBSZXNvdXJjZTExLT5RdWVy
eUludGVyZmFjZShfX3V1aWRvZihJRDNEMTFUZXh0dXJlMkQpLCAodm9pZCoqKSZtT2Zmc2NyZWVu
VGV4dHVyZSk7Ci0gICAgICAgIFNhZmVSZWxlYXNlKHRlbXBSZXNvdXJjZTExKTsKKyAgICAgICAg
ICAgIElEM0QxMVJlc291cmNlICp0ZW1wUmVzb3VyY2UxMTsKKyAgICAgICAgICAgIEhSRVNVTFQg
cmVzdWx0ID0gZGV2aWNlLT5PcGVuU2hhcmVkUmVzb3VyY2UobVNoYXJlSGFuZGxlLCBfX3V1aWRv
ZihJRDNEMTFSZXNvdXJjZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICh2b2lkICoqKSZ0ZW1wUmVzb3VyY2UxMSk7CisgICAgICAgICAg
ICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwogCi0gICAgICAgIGlmIChGQUlMRUQocmVzdWx0
KSkKKyAgICAgICAgICAgIG1PZmZzY3JlZW5UZXh0dXJlID0gZDNkMTE6OkR5bmFtaWNDYXN0Q29t
T2JqZWN0PElEM0QxMVRleHR1cmUyRD4odGVtcFJlc291cmNlMTEpOworICAgICAgICAgICAgU2Fm
ZVJlbGVhc2UodGVtcFJlc291cmNlMTEpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG1E
M0RUZXh0dXJlICE9IG51bGxwdHIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEVSUigiRmFpbGVk
IHRvIHF1ZXJ5IHRleHR1cmUyZCBpbnRlcmZhY2UgaW4gcGJ1ZmZlciBzaGFyZSBoYW5kbGU6ICUw
OGxYIiwgcmVzdWx0KTsKLSAgICAgICAgICAgIHJlbGVhc2UoKTsKLSAgICAgICAgICAgIHJldHVy
biBFR0xfQkFEX1BBUkFNRVRFUjsKKyAgICAgICAgICAgIG1PZmZzY3JlZW5UZXh0dXJlID0gZDNk
MTE6OkR5bmFtaWNDYXN0Q29tT2JqZWN0PElEM0QxMVRleHR1cmUyRD4obUQzRFRleHR1cmUpOwog
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gVmFsaWRhdGUgb2Zmc2NyZWVuIHRleHR1cmUgcGFyYW1l
dGVycwotICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyBvZmZzY3JlZW5UZXh0dXJlRGVzYyA9
IHswfTsKLSAgICAgICAgbU9mZnNjcmVlblRleHR1cmUtPkdldERlc2MoJm9mZnNjcmVlblRleHR1
cmVEZXNjKTsKLQotICAgICAgICBpZiAob2Zmc2NyZWVuVGV4dHVyZURlc2MuV2lkdGggIT0gKFVJ
TlQpYmFja2J1ZmZlcldpZHRoIHx8Ci0gICAgICAgICAgICBvZmZzY3JlZW5UZXh0dXJlRGVzYy5I
ZWlnaHQgIT0gKFVJTlQpYmFja2J1ZmZlckhlaWdodCB8fAotICAgICAgICAgICAgb2Zmc2NyZWVu
VGV4dHVyZURlc2MuRm9ybWF0ICE9IGJhY2tidWZmZXJGb3JtYXRJbmZvLnRleEZvcm1hdCB8fAot
ICAgICAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURlc2MuTWlwTGV2ZWxzICE9IDEgfHwgb2Zmc2Ny
ZWVuVGV4dHVyZURlc2MuQXJyYXlTaXplICE9IDEpCisgICAgICAgIGVsc2UKICAgICAgICAgewot
ICAgICAgICAgICAgRVJSKCJJbnZhbGlkIHRleHR1cmUgcGFyYW1ldGVycyBpbiB0aGUgc2hhcmVk
IG9mZnNjcmVlbiB0ZXh0dXJlIHBidWZmZXIiKTsKLSAgICAgICAgICAgIHJlbGVhc2UoKTsKLSAg
ICAgICAgICAgIHJldHVybiBFR0xfQkFEX1BBUkFNRVRFUjsKKyAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CiAgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKG1PZmZzY3JlZW5UZXh0dXJlICE9IG51
bGxwdHIpOworICAgICAgICBtT2Zmc2NyZWVuVGV4dHVyZS0+R2V0RGVzYygmb2Zmc2NyZWVuVGV4
dHVyZURlc2MpOwogICAgIH0KICAgICBlbHNlCiAgICAgewogICAgICAgICBjb25zdCBib29sIHVz
ZVNoYXJlZFJlc291cmNlID0KICAgICAgICAgICAgICFtTmF0aXZlV2luZG93LT5nZXROYXRpdmVX
aW5kb3coKSAmJiBtUmVuZGVyZXItPmdldFNoYXJlSGFuZGxlU3VwcG9ydCgpOwogCi0gICAgICAg
IEQzRDExX1RFWFRVUkUyRF9ERVNDIG9mZnNjcmVlblRleHR1cmVEZXNjID0gezB9OwogICAgICAg
ICBvZmZzY3JlZW5UZXh0dXJlRGVzYy5XaWR0aCA9IGJhY2tidWZmZXJXaWR0aDsKICAgICAgICAg
b2Zmc2NyZWVuVGV4dHVyZURlc2MuSGVpZ2h0ID0gYmFja2J1ZmZlckhlaWdodDsKICAgICAgICAg
b2Zmc2NyZWVuVGV4dHVyZURlc2MuRm9ybWF0ICAgICAgICAgICAgICAgPSBiYWNrYnVmZmVyRm9y
bWF0SW5mby50ZXhGb3JtYXQ7CkBAIC0yNTQsNyArMjQxLDcgQEAgRUdMaW50IFN3YXBDaGFpbjEx
OjpyZXNldE9mZnNjcmVlbkNvbG9yQnVmZmVyKGludCBiYWNrYnVmZmVyV2lkdGgsIGludCBiYWNr
YnVmZmUKIAogICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBvZmZzY3JlZW4gdGV4dHVyZTogJTA4bFgiLCByZXN1
bHQpOworICAgICAgICAgICAgRVJSKCkgPDwgIkNvdWxkIG5vdCBjcmVhdGUgb2Zmc2NyZWVuIHRl
eHR1cmUsICIgPDwgZ2w6OkZtdEhSKHJlc3VsdCk7CiAgICAgICAgICAgICByZWxlYXNlKCk7CiAK
ICAgICAgICAgICAgIGlmIChkM2QxMTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKQEAgLTI3
OCw3ICsyNjUsNyBAQCBFR0xpbnQgU3dhcENoYWluMTE6OnJlc2V0T2Zmc2NyZWVuQ29sb3JCdWZm
ZXIoaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZQogICAgICAgICAgICAgLy8gRmFs
bCBiYWNrIHRvIG5vIHNoYXJlIGhhbmRsZSBvbiBmYWlsdXJlCiAgICAgICAgICAgICBpZiAoRkFJ
TEVEKHJlc3VsdCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRVJSKCJDb3VsZCBu
b3QgcXVlcnkgb2Zmc2NyZWVuIHRleHR1cmUgcmVzb3VyY2U6ICUwOGxYIiwgcmVzdWx0KTsKKyAg
ICAgICAgICAgICAgICBFUlIoKSA8PCAiQ291bGQgbm90IHF1ZXJ5IG9mZnNjcmVlbiB0ZXh0dXJl
IHJlc291cmNlLCAiIDw8IGdsOjpGbXRIUihyZXN1bHQpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgewpAQCAtMjg4LDcgKzI3NSw3IEBAIEVHTGludCBTd2Fw
Q2hhaW4xMTo6cmVzZXRPZmZzY3JlZW5Db2xvckJ1ZmZlcihpbnQgYmFja2J1ZmZlcldpZHRoLCBp
bnQgYmFja2J1ZmZlCiAgICAgICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgbVNoYXJlSGFuZGxlID0gTlVMTDsKLSAg
ICAgICAgICAgICAgICAgICAgRVJSKCJDb3VsZCBub3QgZ2V0IG9mZnNjcmVlbiB0ZXh0dXJlIHNo
YXJlZCBoYW5kbGU6ICUwOGxYIiwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgRVJSKCkg
PDwgIkNvdWxkIG5vdCBnZXQgb2Zmc2NyZWVuIHRleHR1cmUgc2hhcmVkIGhhbmRsZSwgIiA8PCBn
bDo6Rm10SFIocmVzdWx0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTMxMiw5ICsyOTksMTMgQEAgRUdMaW50IFN3YXBDaGFpbjExOjpyZXNldE9mZnNj
cmVlbkNvbG9yQnVmZmVyKGludCBiYWNrYnVmZmVyV2lkdGgsIGludCBiYWNrYnVmZmUKICAgICBv
ZmZzY3JlZW5TUlZEZXNjLlRleHR1cmUyRC5Nb3N0RGV0YWlsZWRNaXAgPSAwOwogICAgIG9mZnNj
cmVlblNSVkRlc2MuVGV4dHVyZTJELk1pcExldmVscyA9IHN0YXRpY19jYXN0PFVJTlQ+KC0xKTsK
IAotICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlU2hhZGVyUmVzb3VyY2VWaWV3KG1PZmZzY3Jl
ZW5UZXh0dXJlLCAmb2Zmc2NyZWVuU1JWRGVzYywgJm1PZmZzY3JlZW5TUlZpZXcpOwotICAgIEFT
U0VSVChTVUNDRUVERUQocmVzdWx0KSk7Ci0gICAgZDNkMTE6OlNldERlYnVnTmFtZShtT2Zmc2Ny
ZWVuU1JWaWV3LCAiT2Zmc2NyZWVuIGJhY2sgYnVmZmVyIHNoYWRlciByZXNvdXJjZSIpOworICAg
IGlmIChvZmZzY3JlZW5UZXh0dXJlRGVzYy5CaW5kRmxhZ3MgJiBEM0QxMV9CSU5EX1NIQURFUl9S
RVNPVVJDRSkKKyAgICB7CisgICAgICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlU2hhZGVyUmVz
b3VyY2VWaWV3KG1PZmZzY3JlZW5UZXh0dXJlLCAmb2Zmc2NyZWVuU1JWRGVzYywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1PZmZzY3JlZW5TUlZp
ZXcpOworICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICBkM2QxMTo6
U2V0RGVidWdOYW1lKG1PZmZzY3JlZW5TUlZpZXcsICJPZmZzY3JlZW4gYmFjayBidWZmZXIgc2hh
ZGVyIHJlc291cmNlIik7CisgICAgfQogCiAgICAgaWYgKHByZXZpb3VzT2Zmc2NyZWVuVGV4dHVy
ZSAhPSBudWxscHRyKQogICAgIHsKQEAgLTM3NSw3ICszNjYsOCBAQCBFR0xpbnQgU3dhcENoYWlu
MTE6OnJlc2V0T2Zmc2NyZWVuRGVwdGhCdWZmZXIoaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJh
Y2tidWZmZQogICAgICAgICAgICAgZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRlcHRoU3RlbmNp
bFRleHR1cmVEZXNjLCBOVUxMLCAmbURlcHRoU3RlbmNpbFRleHR1cmUpOwogICAgICAgICBpZiAo
RkFJTEVEKHJlc3VsdCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEVSUigiQ291bGQgbm90IGNy
ZWF0ZSBkZXB0aHN0ZW5jaWwgc3VyZmFjZSBmb3IgbmV3IHN3YXAgY2hhaW46IDB4JTA4WCIsIHJl
c3VsdCk7CisgICAgICAgICAgICBFUlIoKSA8PCAiQ291bGQgbm90IGNyZWF0ZSBkZXB0aHN0ZW5j
aWwgc3VyZmFjZSBmb3IgbmV3IHN3YXAgY2hhaW4sICIKKyAgICAgICAgICAgICAgICAgIDw8IGds
OjpGbXRIUihyZXN1bHQpOwogICAgICAgICAgICAgcmVsZWFzZSgpOwogCiAgICAgICAgICAgICBp
ZiAoZDNkMTE6OmlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCkpCkBAIC00NTAsNyArNDQyLDcgQEAg
RUdMaW50IFN3YXBDaGFpbjExOjpyZXNpemUoRUdMaW50IGJhY2tidWZmZXJXaWR0aCwgRUdMaW50
IGJhY2tidWZmZXJIZWlnaHQpCiAgICAgSFJFU1VMVCByZXN1bHQgPSBtU3dhcENoYWluLT5HZXRE
ZXNjKCZkZXNjKTsKICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgewotICAgICAgICBFUlIo
IkVycm9yIHJlYWRpbmcgc3dhcCBjaGFpbiBkZXNjcmlwdGlvbjogMHglMDhYIiwgcmVzdWx0KTsK
KyAgICAgICAgRVJSKCkgPDwgIkVycm9yIHJlYWRpbmcgc3dhcCBjaGFpbiBkZXNjcmlwdGlvbiwg
IiA8PCBnbDo6Rm10SFIocmVzdWx0KTsKICAgICAgICAgcmVsZWFzZSgpOwogICAgICAgICByZXR1
cm4gRUdMX0JBRF9BTExPQzsKICAgICB9CkBAIC00NTksNyArNDUxLDcgQEAgRUdMaW50IFN3YXBD
aGFpbjExOjpyZXNpemUoRUdMaW50IGJhY2tidWZmZXJXaWR0aCwgRUdMaW50IGJhY2tidWZmZXJI
ZWlnaHQpCiAKICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgewotICAgICAgICBFUlIoIkVy
cm9yIHJlc2l6aW5nIHN3YXAgY2hhaW4gYnVmZmVyczogMHglMDhYIiwgcmVzdWx0KTsKKyAgICAg
ICAgRVJSKCkgPDwgIkVycm9yIHJlc2l6aW5nIHN3YXAgY2hhaW4gYnVmZmVycywgIiA8PCBnbDo6
Rm10SFIocmVzdWx0KTsKICAgICAgICAgcmVsZWFzZSgpOwogCiAgICAgICAgIGlmIChkM2QxMTo6
aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKQEAgLTUwMSw3ICs0OTMsMjggQEAgRFhHSV9GT1JN
QVQgU3dhcENoYWluMTE6OmdldFN3YXBDaGFpbk5hdGl2ZUZvcm1hdCgpIGNvbnN0CiB7CiAgICAg
Ly8gUmV0dXJuIGEgcmVuZGVyIHRhcmdldCBmb3JtYXQgZm9yIG9mZnNjcmVlbiByZW5kZXJpbmcg
aXMgc3VwcG9ydGVkIGJ5IElEWEdJU3dhcENoYWluLgogICAgIC8vIE1TRE4gaHR0cHM6Ly9tc2Ru
Lm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvYmIxNzMwNjQodj12
cy44NSkuYXNweAotICAgIHJldHVybiAobU9mZnNjcmVlblJlbmRlclRhcmdldEZvcm1hdCA9PSBH
TF9CR1JBOF9FWFQpID8gRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0gOiBEWEdJX0ZPUk1BVF9S
OEc4QjhBOF9VTk9STTsKKyAgICBzd2l0Y2ggKG1PZmZzY3JlZW5SZW5kZXJUYXJnZXRGb3JtYXQp
CisgICAgeworICAgICAgICBjYXNlIEdMX1JHQkE4OgorICAgICAgICBjYXNlIEdMX1JHQkE0Ogor
ICAgICAgICBjYXNlIEdMX1JHQjVfQTE6CisgICAgICAgIGNhc2UgR0xfUkdCODoKKyAgICAgICAg
Y2FzZSBHTF9SR0I1NjU6CisgICAgICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfUjhHOEI4QThf
VU5PUk07CisKKyAgICAgICAgY2FzZSBHTF9CR1JBOF9FWFQ6CisgICAgICAgICAgICByZXR1cm4g
RFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk07CisKKyAgICAgICAgY2FzZSBHTF9SR0IxMF9BMjoK
KyAgICAgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STTsKKworICAg
ICAgICBjYXNlIEdMX1JHQkExNkY6CisgICAgICAgICAgICByZXR1cm4gRFhHSV9GT1JNQVRfUjE2
RzE2QjE2QTE2X0ZMT0FUOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1VOS05PV047CisgICAgfQog
fQogCiBFR0xpbnQgU3dhcENoYWluMTE6OnJlc2V0KEVHTGludCBiYWNrYnVmZmVyV2lkdGgsIEVH
TGludCBiYWNrYnVmZmVySGVpZ2h0LCBFR0xpbnQgc3dhcEludGVydmFsKQpAQCAtNTUwLDcgKzU2
Myw4IEBAIEVHTGludCBTd2FwQ2hhaW4xMTo6cmVzZXQoRUdMaW50IGJhY2tidWZmZXJXaWR0aCwg
RUdMaW50IGJhY2tidWZmZXJIZWlnaHQsIEVHTGluCiAKICAgICAgICAgaWYgKEZBSUxFRChyZXN1
bHQpKQogICAgICAgICB7Ci0gICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgYWRkaXRp
b25hbCBzd2FwIGNoYWlucyBvciBvZmZzY3JlZW4gc3VyZmFjZXM6ICUwOGxYIiwgcmVzdWx0KTsK
KyAgICAgICAgICAgIEVSUigpIDw8ICJDb3VsZCBub3QgY3JlYXRlIGFkZGl0aW9uYWwgc3dhcCBj
aGFpbnMgb3Igb2Zmc2NyZWVuIHN1cmZhY2VzLCAiCisgICAgICAgICAgICAgICAgICA8PCBnbDo6
Rm10SFIocmVzdWx0KTsKICAgICAgICAgICAgIHJlbGVhc2UoKTsKIAogICAgICAgICAgICAgaWYg
KGQzZDExOjppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQpAQCAtODM3LDE4ICs4NTEsMTggQEAg
RUdMaW50IFN3YXBDaGFpbjExOjpwcmVzZW50KEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdp
ZHRoLCBFR0xpbnQgaGVpZ2h0KQogCiAgICAgaWYgKHJlc3VsdCA9PSBEWEdJX0VSUk9SX0RFVklD
RV9SRU1PVkVEKQogICAgIHsKLSAgICAgICAgRVJSKCJQcmVzZW50IGZhaWxlZDogdGhlIEQzRDEx
IGRldmljZSB3YXMgcmVtb3ZlZDogMHglMDhYIiwKLSAgICAgICAgICAgIG1SZW5kZXJlci0+Z2V0
RGV2aWNlKCktPkdldERldmljZVJlbW92ZWRSZWFzb24oKSk7CisgICAgICAgIEVSUigpIDw8ICJQ
cmVzZW50IGZhaWxlZDogdGhlIEQzRDExIGRldmljZSB3YXMgcmVtb3ZlZCwgIgorICAgICAgICAg
ICAgICA8PCBnbDo6Rm10SFIobVJlbmRlcmVyLT5nZXREZXZpY2UoKS0+R2V0RGV2aWNlUmVtb3Zl
ZFJlYXNvbigpKTsKICAgICAgICAgcmV0dXJuIEVHTF9DT05URVhUX0xPU1Q7CiAgICAgfQogICAg
IGVsc2UgaWYgKHJlc3VsdCA9PSBEWEdJX0VSUk9SX0RFVklDRV9SRVNFVCkKICAgICB7Ci0gICAg
ICAgIEVSUigiUHJlc2VudCBmYWlsZWQ6IHRoZSBEM0QxMSBkZXZpY2Ugd2FzIHJlc2V0IGZyb20g
YSBiYWQgY29tbWFuZC4iKTsKKyAgICAgICAgRVJSKCkgPDwgIlByZXNlbnQgZmFpbGVkOiB0aGUg
RDNEMTEgZGV2aWNlIHdhcyByZXNldCBmcm9tIGEgYmFkIGNvbW1hbmQuIjsKICAgICAgICAgcmV0
dXJuIEVHTF9DT05URVhUX0xPU1Q7CiAgICAgfQogICAgIGVsc2UgaWYgKEZBSUxFRChyZXN1bHQp
KQogICAgIHsKLSAgICAgICAgRVJSKCJQcmVzZW50IGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgMHgl
MDhYIiwgcmVzdWx0KTsKKyAgICAgICAgRVJSKCkgPDwgIlByZXNlbnQgZmFpbGVkIHdpdGggIiA8
PCBnbDo6Rm10SFIocmVzdWx0KTsKICAgICB9CiAKICAgICBtTmF0aXZlV2luZG93LT5jb21taXRD
aGFuZ2UoKTsKQEAgLTg5Myw2ICs5MDcsMTEgQEAgdm9pZCBTd2FwQ2hhaW4xMTo6cmVjcmVhdGUo
KQogCiBlZ2w6OkVycm9yIFN3YXBDaGFpbjExOjpnZXRTeW5jVmFsdWVzKEVHTHVpbnQ2NEtIUiAq
dXN0LCBFR0x1aW50NjRLSFIgKm1zYywgRUdMdWludDY0S0hSICpzYmMpCiB7CisgICAgaWYgKCFt
U3dhcENoYWluKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklU
SUFMSVpFRCwgIlN3YXAgY2hhaW4gdW5pbml0aWFsaXplZCIpOworICAgIH0KKwogICAgIERYR0lf
RlJBTUVfU1RBVElTVElDUyBzdGF0cyA9IHt9OwogICAgIEhSRVNVTFQgcmVzdWx0ICAgICAgICAg
ICAgICA9IG1Td2FwQ2hhaW4tPkdldEZyYW1lU3RhdGlzdGljcygmc3RhdHMpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL1N3YXBDaGFpbjExLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1N3YXBDaGFpbjExLmgKaW5kZXggNWUwNjFiYWMxZDdhYmNmYWZi
Y2Y3MDhkZDNjZDlmYmU3ZmNmMzIyNC4uNmViNzIxZjU0MDQ5ZTRkMzE1ZTJlODFlYWJjMjBkOGE4
YWVlM2FhMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWluMTEuaApAQCAt
MjQsNiArMjQsNyBAQCBjbGFzcyBTd2FwQ2hhaW4xMSBmaW5hbCA6IHB1YmxpYyBTd2FwQ2hhaW5E
M0QKICAgICBTd2FwQ2hhaW4xMShSZW5kZXJlcjExICpyZW5kZXJlciwKICAgICAgICAgICAgICAg
ICBOYXRpdmVXaW5kb3cxMSAqbmF0aXZlV2luZG93LAogICAgICAgICAgICAgICAgIEhBTkRMRSBz
aGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICBJVW5rbm93biAqZDNkVGV4dHVyZSwKICAgICAg
ICAgICAgICAgICBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwKICAgICAgICAgICAgICAgICBHTGVu
dW0gZGVwdGhCdWZmZXJGb3JtYXQsCiAgICAgICAgICAgICAgICAgRUdMaW50IG9yaWVudGF0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvVGV4dHVyZVN0b3JhZ2UxMS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RleHR1cmVTdG9yYWdlMTEuY3Bw
CmluZGV4IGE1MjhjYWFiNWYzZTQzZjE3ZDM2ZWY3NTU4ODMxMTk1MTFiNmRjNDAuLjJhNDkwNmQ4
ZWYyMTBiODA0MDYwY2Y3M2EzZjQ0YTg2MWU2Y2I3OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVGV4dHVyZVN0b3Jh
Z2UxMS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmNwcApAQCAtMTg1LDggKzE4NSw4IEBAIGds
OjpFcnJvciBUZXh0dXJlU3RvcmFnZTExOjpnZXRTUlYoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAm
dGV4dHVyZVN0YXRlLAogewogICAgIC8vIE1ha2Ugc3VyZSB0byBhZGQgdGhlIGxldmVsIG9mZnNl
dCBmb3Igb3VyIHRpbnkgY29tcHJlc3NlZCB0ZXh0dXJlIHdvcmthcm91bmQKICAgICBjb25zdCBH
THVpbnQgZWZmZWN0aXZlQmFzZUxldmVsID0gdGV4dHVyZVN0YXRlLmdldEVmZmVjdGl2ZUJhc2VM
ZXZlbCgpOwotICAgIGJvb2wgc3dpenpsZVJlcXVpcmVkICAgPSB0ZXh0dXJlU3RhdGUuc3dpenps
ZVJlcXVpcmVkKCk7Ci0gICAgYm9vbCBtaXBtYXBwaW5nID0gZ2w6OklzTWlwbWFwRmlsdGVyZWQo
dGV4dHVyZVN0YXRlLmdldFNhbXBsZXJTdGF0ZSgpKTsKKyAgICBib29sIHN3aXp6bGVSZXF1aXJl
ZCAgICAgICAgICAgID0gdGV4dHVyZVN0YXRlLnN3aXp6bGVSZXF1aXJlZCgpOworICAgIGJvb2wg
bWlwbWFwcGluZyAgICAgICAgICAgICAgICAgPSBnbDo6SXNNaXBtYXBGaWx0ZXJlZCh0ZXh0dXJl
U3RhdGUuZ2V0U2FtcGxlclN0YXRlKCkpOwogICAgIHVuc2lnbmVkIGludCBtaXBMZXZlbHMgPQog
ICAgICAgICBtaXBtYXBwaW5nID8gKHRleHR1cmVTdGF0ZS5nZXRFZmZlY3RpdmVNYXhMZXZlbCgp
IC0gZWZmZWN0aXZlQmFzZUxldmVsICsgMSkgOiAxOwogCkBAIC0yMTUsMTggKzIxNSwzMCBAQCBn
bDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6Z2V0U1JWKGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUg
JnRleHR1cmVTdGF0ZSwKICAgICAvLyAxLiB0aGUgZHJvcCBzdGVuY2lsIHdvcmthcm91bmQgaXMg
ZW5hYmxlZC4KICAgICBib29sIHdvcmthcm91bmQgPSBtUmVuZGVyZXItPmdldFdvcmthcm91bmRz
KCkuZW11bGF0ZVRpbnlTdGVuY2lsVGV4dHVyZXM7CiAgICAgLy8gMi4gdGhpcyBpcyBhIHN0ZW5j
aWwgdGV4dHVyZS4KLSAgICBib29sIGhhc1N0ZW5jaWwgPSAobUZvcm1hdEluZm8uZm9ybWF0LnN0
ZW5jaWxCaXRzID4gMCk7CisgICAgYm9vbCBoYXNTdGVuY2lsID0gKG1Gb3JtYXRJbmZvLmZvcm1h
dCgpLnN0ZW5jaWxCaXRzID4gMCk7CiAgICAgLy8gMy4gdGhlIHRleHR1cmUgaGFzIGEgMXgxIG9y
IDJ4MiBtaXAuCi0gICAgYm9vbCBoYXNTbWFsbE1pcHMgPSAoZ2V0TGV2ZWxXaWR0aChtTWlwTGV2
ZWxzIC0gMSkgPD0gMiB8fCBnZXRMZXZlbEhlaWdodChtTWlwTGV2ZWxzIC0gMSkgPD0gMik7Cisg
ICAgaW50IGVmZmVjdGl2ZVRvcExldmVsID0gZWZmZWN0aXZlQmFzZUxldmVsICsgbWlwTGV2ZWxz
IC0gMTsKKyAgICBib29sIGhhc1NtYWxsTWlwcyA9CisgICAgICAgIChnZXRMZXZlbFdpZHRoKGVm
ZmVjdGl2ZVRvcExldmVsKSA8PSAyIHx8IGdldExldmVsSGVpZ2h0KGVmZmVjdGl2ZVRvcExldmVs
KSA8PSAyKTsKIAogICAgIGJvb2wgdXNlRHJvcFN0ZW5jaWwgPSAod29ya2Fyb3VuZCAmJiBoYXNT
dGVuY2lsICYmIGhhc1NtYWxsTWlwcyk7CisgICAgU1JWS2V5IGtleShlZmZlY3RpdmVCYXNlTGV2
ZWwsIG1pcExldmVscywgc3dpenpsZVJlcXVpcmVkLCB1c2VEcm9wU3RlbmNpbCk7CiAgICAgaWYg
KHVzZURyb3BTdGVuY2lsKQogICAgIHsKLSAgICAgICAgLy8gRW5zdXJlIGRyb3AgdGV4dHVyZSBn
ZXRzIHJlLWNyZWF0ZWQsIGlmIFNSViBpcyBjYWNoZWQuCi0gICAgICAgIEFOR0xFX1RSWShjcmVh
dGVEcm9wU3RlbmNpbFRleHR1cmUoKSk7CisgICAgICAgIC8vIEVuc3VyZSBkcm9wIHRleHR1cmUg
Z2V0cyBjcmVhdGVkLgorICAgICAgICBEcm9wU3RlbmNpbCByZXN1bHQgPSBEcm9wU3RlbmNpbDo6
Q1JFQVRFRDsKKyAgICAgICAgQU5HTEVfVFJZX1JFU1VMVChlbnN1cmVEcm9wU3RlbmNpbFRleHR1
cmUoKSwgcmVzdWx0KTsKKworICAgICAgICAvLyBDbGVhciB0aGUgU1JWIGNhY2hlIGlmIG5lY2Vz
c2FyeS4KKyAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogUmUtdXNlIGZpbmQgcXVlcnkgcmVzdWx0
LgorICAgICAgICBhdXRvIHNydkVudHJ5ID0gbVNydkNhY2hlLmZpbmQoa2V5KTsKKyAgICAgICAg
aWYgKHJlc3VsdCA9PSBEcm9wU3RlbmNpbDo6Q1JFQVRFRCAmJiBzcnZFbnRyeSAhPSBtU3J2Q2Fj
aGUuZW5kKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNhZmVSZWxlYXNlKHNydkVudHJ5LT5z
ZWNvbmQpOworICAgICAgICAgICAgbVNydkNhY2hlLmVyYXNlKGtleSk7CisgICAgICAgIH0KICAg
ICB9CiAKLSAgICBTUlZLZXkga2V5KGVmZmVjdGl2ZUJhc2VMZXZlbCwgbWlwTGV2ZWxzLCBzd2l6
emxlUmVxdWlyZWQsIHVzZURyb3BTdGVuY2lsKTsKICAgICBBTkdMRV9UUlkoZ2V0Q2FjaGVkT3JD
cmVhdGVTUlYoa2V5LCBvdXRTUlYpKTsKIAogICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwpAQCAt
MjQ3LDkgKzI1OSwxMSBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6Z2V0Q2FjaGVkT3JD
cmVhdGVTUlYoY29uc3QgU1JWS2V5ICZrZXksCiAKICAgICBpZiAoa2V5LnN3aXp6bGUpCiAgICAg
ewotICAgICAgICBBU1NFUlQoIWtleS5kcm9wU3RlbmNpbCB8fCBtRm9ybWF0SW5mby5zd2l6emxl
LmZvcm1hdC5zdGVuY2lsQml0cyA9PSAwKTsKKyAgICAgICAgY29uc3QgYXV0byAmc3dpenpsZUZv
cm1hdCA9CisgICAgICAgICAgICBtRm9ybWF0SW5mby5nZXRTd2l6emxlRm9ybWF0KG1SZW5kZXJl
ci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSk7CisgICAgICAgIEFTU0VSVCgha2V5LmRyb3BT
dGVuY2lsIHx8IHN3aXp6bGVGb3JtYXQuZm9ybWF0KCkuc3RlbmNpbEJpdHMgPT0gMCk7CiAgICAg
ICAgIEFOR0xFX1RSWShnZXRTd2l6emxlVGV4dHVyZSgmdGV4dHVyZSkpOwotICAgICAgICBmb3Jt
YXQgPSBtRm9ybWF0SW5mby5zd2l6emxlLnNydkZvcm1hdDsKKyAgICAgICAgZm9ybWF0ID0gc3dp
enpsZUZvcm1hdC5zcnZGb3JtYXQ7CiAgICAgfQogICAgIGVsc2UgaWYgKGtleS5kcm9wU3RlbmNp
bCkKICAgICB7CkBAIC00MjYsNyArNDQwLDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTE6
OnVwZGF0ZVN1YnJlc291cmNlTGV2ZWwoSUQzRDExUmVzb3VyY2UgKnNyY1RleHR1cmUsCiAgICAg
aWYgKCFmdWxsQ29weSAmJiBtRm9ybWF0SW5mby5kc3ZGb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5L
Tk9XTikKICAgICB7CiAgICAgICAgIC8vIENvcHlTdWJyZXNvdXJjZVJlZ2lvbiBjYW5ub3QgY29w
eSBwYXJ0aWFsIGRlcHRoIHN0ZW5jaWxzLCB1c2UgdGhlIGJsaXR0ZXIgaW5zdGVhZAotICAgICAg
ICBCbGl0MTEgKmJsaXR0ZXIgPSBtUmVuZGVyZXItPmdldEJsaXR0ZXIoKTsKKyAgICAgICAgQmxp
dDExICpibGl0dGVyICAgICAgICA9IG1SZW5kZXJlci0+Z2V0QmxpdHRlcigpOwogICAgICAgICBU
ZXh0dXJlSGVscGVyMTEgc291cmNlID0gVGV4dHVyZUhlbHBlcjExOjpNYWtlQW5kUmVmZXJlbmNl
KHNyY1RleHR1cmUsIGdldEZvcm1hdFNldCgpKTsKICAgICAgICAgVGV4dHVyZUhlbHBlcjExIGRl
c3QgICA9IFRleHR1cmVIZWxwZXIxMTo6TWFrZUFuZFJlZmVyZW5jZShkc3RUZXh0dXJlLCBnZXRG
b3JtYXRTZXQoKSk7CiAgICAgICAgIHJldHVybiBibGl0dGVyLT5jb3B5RGVwdGhTdGVuY2lsKHNv
dXJjZSwgc291cmNlU3VicmVzb3VyY2UsIGNvcHlBcmVhLCB0ZXhTaXplLCBkZXN0LApAQCAtNDk4
LDcgKzUxMiw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExOjpjb3B5U3VicmVzb3VyY2VM
ZXZlbChJRDNEMTFSZXNvdXJjZSAqZHN0VGV4dHVyZSwKICAgICBjb250ZXh0LT5Db3B5U3VicmVz
b3VyY2VSZWdpb24oZHN0VGV4dHVyZSwgZHN0U3VicmVzb3VyY2UsIHJlZ2lvbi54LCByZWdpb24u
eSwgcmVnaW9uLnosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1RleHR1
cmUsIHNyY1N1YnJlc291cmNlLCBwU3JjQm94KTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4
dHVyZVN0b3JhZ2UxMTo6Z2VuZXJhdGVNaXBtYXAoY29uc3QgZ2w6OkltYWdlSW5kZXggJnNvdXJj
ZUluZGV4LApAQCAtNTE2LDcgKzUzMCw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExOjpn
ZW5lcmF0ZU1pcG1hcChjb25zdCBnbDo6SW1hZ2VJbmRleCAmc291cmNlSW5kZXgsCiAKICAgICBJ
RDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZVNSViA9CiAgICAgICAgIEdldEFzPFJlbmRl
clRhcmdldDExPihzb3VyY2UpLT5nZXRCbGl0U2hhZGVyUmVzb3VyY2VWaWV3KCk7Ci0gICAgSUQz
RDExUmVuZGVyVGFyZ2V0VmlldyAqZGVzdFJUViAgICAgPSBHZXRBczxSZW5kZXJUYXJnZXQxMT4o
ZGVzdCktPmdldFJlbmRlclRhcmdldFZpZXcoKTsKKyAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3
ICpkZXN0UlRWID0gR2V0QXM8UmVuZGVyVGFyZ2V0MTE+KGRlc3QpLT5nZXRSZW5kZXJUYXJnZXRW
aWV3KCk7CiAKICAgICBnbDo6Qm94IHNvdXJjZUFyZWEoMCwgMCwgMCwgc291cmNlLT5nZXRXaWR0
aCgpLCBzb3VyY2UtPmdldEhlaWdodCgpLCBzb3VyY2UtPmdldERlcHRoKCkpOwogICAgIGdsOjpF
eHRlbnRzIHNvdXJjZVNpemUoc291cmNlLT5nZXRXaWR0aCgpLCBzb3VyY2UtPmdldEhlaWdodCgp
LCBzb3VyY2UtPmdldERlcHRoKCkpOwpAQCAtNjE0LDkgKzYyOCw5IEBAIGdsOjpFcnJvciBUZXh0
dXJlU3RvcmFnZTExOjpzZXREYXRhKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKICAgICAv
LyB3aXRoIGNvbXByZXNzZWQgZm9ybWF0cyBpbiB0aGUgY2FsbGluZyBsb2dpYy4KICAgICBBU1NF
UlQoIWludGVybmFsRm9ybWF0SW5mby5jb21wcmVzc2VkKTsKIAotICAgIGNvbnN0IGludCB3aWR0
aCAgPSBkZXN0Qm94ID8gZGVzdEJveC0+d2lkdGggOiBzdGF0aWNfY2FzdDxpbnQ+KGltYWdlLT5n
ZXRXaWR0aCgpKTsKLSAgICBjb25zdCBpbnQgaGVpZ2h0ID0gZGVzdEJveCA/IGRlc3RCb3gtPmhl
aWdodCA6IHN0YXRpY19jYXN0PGludD4oaW1hZ2UtPmdldEhlaWdodCgpKTsKLSAgICBjb25zdCBp
bnQgZGVwdGggPSBkZXN0Qm94ID8gZGVzdEJveC0+ZGVwdGggOiBzdGF0aWNfY2FzdDxpbnQ+KGlt
YWdlLT5nZXREZXB0aCgpKTsKKyAgICBjb25zdCBpbnQgd2lkdGggICAgPSBkZXN0Qm94ID8gZGVz
dEJveC0+d2lkdGggOiBzdGF0aWNfY2FzdDxpbnQ+KGltYWdlLT5nZXRXaWR0aCgpKTsKKyAgICBj
b25zdCBpbnQgaGVpZ2h0ICAgPSBkZXN0Qm94ID8gZGVzdEJveC0+aGVpZ2h0IDogc3RhdGljX2Nh
c3Q8aW50PihpbWFnZS0+Z2V0SGVpZ2h0KCkpOworICAgIGNvbnN0IGludCBkZXB0aCAgICA9IGRl
c3RCb3ggPyBkZXN0Qm94LT5kZXB0aCA6IHN0YXRpY19jYXN0PGludD4oaW1hZ2UtPmdldERlcHRo
KCkpOwogICAgIEdMdWludCBzcmNSb3dQaXRjaCA9IDA7CiAgICAgQU5HTEVfVFJZX1JFU1VMVCgK
ICAgICAgICAgaW50ZXJuYWxGb3JtYXRJbmZvLmNvbXB1dGVSb3dQaXRjaCh0eXBlLCB3aWR0aCwg
dW5wYWNrLmFsaWdubWVudCwgdW5wYWNrLnJvd0xlbmd0aCksCkBAIC02NDAsMTAgKzY1NCwxMCBA
QCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6c2V0RGF0YShjb25zdCBnbDo6SW1hZ2VJbmRl
eCAmaW5kZXgsCiAgICAgVUlOVCBidWZmZXJEZXB0aFBpdGNoID0gYnVmZmVyUm93UGl0Y2ggKiBo
ZWlnaHQ7CiAKICAgICBjb25zdCBzaXplX3QgbmVlZGVkU2l6ZSAgICAgICAgPSBidWZmZXJEZXB0
aFBpdGNoICogZGVwdGg7Ci0gICAgTWVtb3J5QnVmZmVyICpjb252ZXJzaW9uQnVmZmVyID0gbnVs
bHB0cjsKKyAgICBhbmdsZTo6TWVtb3J5QnVmZmVyICpjb252ZXJzaW9uQnVmZmVyID0gbnVsbHB0
cjsKICAgICBjb25zdCB1aW50OF90ICpkYXRhICAgICAgICAgICAgPSBudWxscHRyOwogCi0gICAg
TG9hZEltYWdlRnVuY3Rpb25JbmZvIGxvYWRGdW5jdGlvbkluZm8gPSBkM2QxMUZvcm1hdC5sb2Fk
RnVuY3Rpb25zKHR5cGUpOworICAgIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyBsb2FkRnVuY3Rpb25J
bmZvID0gZDNkMTFGb3JtYXQuZ2V0TG9hZEZ1bmN0aW9ucygpKHR5cGUpOwogICAgIGlmIChsb2Fk
RnVuY3Rpb25JbmZvLnJlcXVpcmVzQ29udmVyc2lvbikKICAgICB7CiAgICAgICAgIEFOR0xFX1RS
WShtUmVuZGVyZXItPmdldFNjcmF0Y2hNZW1vcnlCdWZmZXIobmVlZGVkU2l6ZSwgJmNvbnZlcnNp
b25CdWZmZXIpKTsKQEAgLTY4NSwxMCArNjk5LDEwIEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFn
ZTExOjpzZXREYXRhKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKICAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTE6OmNyZWF0ZURyb3BT
dGVuY2lsVGV4dHVyZSgpCitnbDo6RXJyb3JPclJlc3VsdDxUZXh0dXJlU3RvcmFnZTExOjpEcm9w
U3RlbmNpbD4gVGV4dHVyZVN0b3JhZ2UxMTo6ZW5zdXJlRHJvcFN0ZW5jaWxUZXh0dXJlKCkKIHsK
ICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkRyb3Agc3RlbmNpbCB0ZXh0dXJlIG5vdCBpbXBsZW1lbnRlZC4iKTsKKyAgICBy
ZXR1cm4gZ2w6OkludGVybmFsRXJyb3IoKSA8PCAiRHJvcCBzdGVuY2lsIHRleHR1cmUgbm90IGlt
cGxlbWVudGVkLiI7CiB9CiAKIFRleHR1cmVTdG9yYWdlMTFfMkQ6OlRleHR1cmVTdG9yYWdlMTFf
MkQoUmVuZGVyZXIxMSAqcmVuZGVyZXIsIFN3YXBDaGFpbjExICpzd2FwY2hhaW4pCkBAIC03NzYs
NyArNzkwLDcgQEAgVGV4dHVyZVN0b3JhZ2UxMV8yRDo6flRleHR1cmVTdG9yYWdlMTFfMkQoKQog
ICAgICAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBGaW5kIGEgd2F5IHRvIHJlcG9ydCB0aGlzIGJh
Y2sgdG8gdGhlIGNvbnRleHQKLSAgICAgICAgICAgICAgICAgICAgRVJSKCJFcnJvciBpbml0aWFs
aXphdGlvbiB0ZXh0dXJlIHN0b3JhZ2U6ICV4IiwgZXJyb3IuZ2V0Q29kZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgRVJSKCkgPDwgIkVycm9yIGluaXRpYWxpemF0aW9uIHRleHR1cmUgc3RvcmFn
ZTogIiA8PCBlcnJvcjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTEwNTMsNyArMTA2Nyw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEOjpl
bnN1cmVUZXh0dXJlRXhpc3RzKGludCBtaXBMZXZlbHMpCiAgICAgICAgIGQzZDExOjpTZXREZWJ1
Z05hbWUoKm91dHB1dFRleHR1cmUsICJUZXhTdG9yYWdlMkQuVGV4dHVyZSIpOwogICAgIH0KIAot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yRDo6Z2V0UmVuZGVyVGFyZ2V0
KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgUmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpCkBA
IC0xMTUwLDcgKzExNjQsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yRDo6Z2V0UmVu
ZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgUmVuZAogICAgICAgICBTYWZl
UmVsZWFzZShydHYpOwogCiAgICAgICAgICpvdXRSVCA9IG1SZW5kZXJUYXJnZXRbbGV2ZWxdOwot
ICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAgQVNTRVJUKG1Gb3JtYXRJbmZvLmRzdkZvcm1hdCAh
PSBEWEdJX0ZPUk1BVF9VTktOT1dOKTsKQEAgLTEyMzMsNyArMTI0Nyw3IEBAIGdsOjpFcnJvciBU
ZXh0dXJlU3RvcmFnZTExXzJEOjpjcmVhdGVTUlYoaW50IGJhc2VMZXZlbCwKIAogICAgIGQzZDEx
OjpTZXREZWJ1Z05hbWUoKm91dFNSViwgIlRleFN0b3JhZ2UyRC5TUlYiKTsKIAotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQog
CiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yRDo6Z2V0U3dpenpsZVRleHR1cmUoSUQzRDEx
UmVzb3VyY2UgKipvdXRUZXh0dXJlKQpAQCAtMTI0OSw3ICsxMjYzLDcgQEAgZ2w6OkVycm9yIFRl
eHR1cmVTdG9yYWdlMTFfMkQ6OmdldFN3aXp6bGVUZXh0dXJlKElEM0QxMVJlc291cmNlICoqb3V0
VGV4dHVyZSkKICAgICAgICAgZGVzYy5IZWlnaHQgICAgICAgICAgICAgPSBtVGV4dHVyZUhlaWdo
dDsKICAgICAgICAgZGVzYy5NaXBMZXZlbHMgICAgICAgICAgPSBtTWlwTGV2ZWxzOwogICAgICAg
ICBkZXNjLkFycmF5U2l6ZSAgICAgICAgICA9IDE7Ci0gICAgICAgIGRlc2MuRm9ybWF0ICAgICAg
ICAgICAgID0gbUZvcm1hdEluZm8uc3dpenpsZS50ZXhGb3JtYXQ7CisgICAgICAgIGRlc2MuRm9y
bWF0ID0gbUZvcm1hdEluZm8uZ2V0U3dpenpsZUZvcm1hdChtUmVuZGVyZXItPmdldFJlbmRlcmVy
MTFEZXZpY2VDYXBzKCkpLnRleEZvcm1hdDsKICAgICAgICAgZGVzYy5TYW1wbGVEZXNjLkNvdW50
ICAgPSAxOwogICAgICAgICBkZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7CiAgICAgICAgIGRl
c2MuVXNhZ2UgICAgICAgICAgICAgID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKQEAgLTEyNzAsNyAr
MTI4NCw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEOjpnZXRTd2l6emxlVGV4dHVy
ZShJRDNEMTFSZXNvdXJjZSAqKm91dFRleHR1cmUpCiAgICAgfQogCiAgICAgKm91dFRleHR1cmUg
PSBtU3dpenpsZVRleHR1cmU7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cisg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTEx
XzJEOjpnZXRTd2l6emxlUmVuZGVyVGFyZ2V0KGludCBtaXBMZXZlbCwgSUQzRDExUmVuZGVyVGFy
Z2V0VmlldyAqKm91dFJUVikKQEAgLTEyODYsNyArMTMwMCw4IEBAIGdsOjpFcnJvciBUZXh0dXJl
U3RvcmFnZTExXzJEOjpnZXRTd2l6emxlUmVuZGVyVGFyZ2V0KGludCBtaXBMZXZlbCwgSUQzRDEx
UmVuZGVyCiAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZp
Y2UoKTsKIAogICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJRVdfREVTQyBydHZEZXNjOwot
ICAgICAgICBydHZEZXNjLkZvcm1hdCAgICAgICAgICAgICA9IG1Gb3JtYXRJbmZvLnN3aXp6bGUu
cnR2Rm9ybWF0OworICAgICAgICBydHZEZXNjLkZvcm1hdCA9CisgICAgICAgICAgICBtRm9ybWF0
SW5mby5nZXRTd2l6emxlRm9ybWF0KG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMo
KSkucnR2Rm9ybWF0OwogICAgICAgICBydHZEZXNjLlZpZXdEaW1lbnNpb24gICAgICA9IEQzRDEx
X1JUVl9ESU1FTlNJT05fVEVYVFVSRTJEOwogICAgICAgICBydHZEZXNjLlRleHR1cmUyRC5NaXBT
bGljZSA9IG1Ub3BMZXZlbCArIG1pcExldmVsOwogCkBAIC0xMzA2LDExICsxMzIxLDExIEBAIGds
OjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEOjpnZXRTd2l6emxlUmVuZGVyVGFyZ2V0KGludCBt
aXBMZXZlbCwgSUQzRDExUmVuZGVyCiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWds
OjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEOjpjcmVhdGVEcm9wU3RlbmNpbFRleHR1cmUoKQor
Z2w6OkVycm9yT3JSZXN1bHQ8VGV4dHVyZVN0b3JhZ2UxMTo6RHJvcFN0ZW5jaWw+IFRleHR1cmVT
dG9yYWdlMTFfMkQ6OmVuc3VyZURyb3BTdGVuY2lsVGV4dHVyZSgpCiB7CiAgICAgaWYgKG1Ecm9w
U3RlbmNpbFRleHR1cmUpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAg
ICAgICAgcmV0dXJuIERyb3BTdGVuY2lsOjpBTFJFQURZX0VYSVNUUzsKICAgICB9CiAKICAgICBE
M0QxMV9URVhUVVJFMkRfREVTQyBkcm9wRGVzYyA9IHt9OwpAQCAtMTMzMSwxMyArMTM0NiwxMyBA
QCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yRDo6Y3JlYXRlRHJvcFN0ZW5jaWxUZXh0dXJl
KCkKICAgICBIUkVTVUxUIGhyID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRyb3BEZXNjLCBu
dWxscHRyLCAmbURyb3BTdGVuY2lsVGV4dHVyZSk7CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAg
ewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXJyb3Ig
Y3JlYXRpbmcgZHJvcCBzdGVuY2lsIHRleHR1cmUuIik7CisgICAgICAgIHJldHVybiBnbDo6SW50
ZXJuYWxFcnJvcigpIDw8ICJFcnJvciBjcmVhdGluZyBkcm9wIHN0ZW5jaWwgdGV4dHVyZS4iOwog
ICAgIH0KICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1Ecm9wU3RlbmNpbFRleHR1cmUsICJUZXhT
dG9yYWdlMkQuRHJvcFN0ZW5jaWwiKTsKIAogICAgIEFOR0xFX1RSWShpbml0RHJvcFN0ZW5jaWxU
ZXh0dXJlKGdsOjpJbWFnZUluZGV4SXRlcmF0b3I6Ok1ha2UyRCgwLCBtTWlwTGV2ZWxzKSkpOwog
Ci0gICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAgcmV0dXJuIERyb3BTdGVuY2lsOjpDUkVB
VEVEOwogfQogCiBUZXh0dXJlU3RvcmFnZTExX0V4dGVybmFsOjpUZXh0dXJlU3RvcmFnZTExX0V4
dGVybmFsKApAQCAtMTM0OSwxNSArMTM2NCwxNSBAQCBUZXh0dXJlU3RvcmFnZTExX0V4dGVybmFs
OjpUZXh0dXJlU3RvcmFnZTExX0V4dGVybmFsKAogICAgIEFTU0VSVChzdHJlYW0tPmdldFByb2R1
Y2VyVHlwZSgpID09IGVnbDo6U3RyZWFtOjpQcm9kdWNlclR5cGU6OkQzRDExVGV4dHVyZU5WMTIp
OwogICAgIFN0cmVhbVByb2R1Y2VyTlYxMiAqcHJvZHVjZXIgPSBzdGF0aWNfY2FzdDxTdHJlYW1Q
cm9kdWNlck5WMTIgKj4oc3RyZWFtLT5nZXRJbXBsZW1lbnRhdGlvbigpKTsKICAgICBtVGV4dHVy
ZSAgICAgICAgICAgICAgICAgICAgID0gcHJvZHVjZXItPmdldEQzRFRleHR1cmUoKTsKLSAgICBt
U3VicmVzb3VyY2VJbmRleCA9IHByb2R1Y2VyLT5nZXRBcnJheVNsaWNlKCk7CisgICAgbVN1YnJl
c291cmNlSW5kZXggICAgICAgICAgICA9IHByb2R1Y2VyLT5nZXRBcnJheVNsaWNlKCk7CiAgICAg
bVRleHR1cmUtPkFkZFJlZigpOwogICAgIG1NaXBMZXZlbHMgPSAxOwogCiAgICAgRDNEMTFfVEVY
VFVSRTJEX0RFU0MgZGVzYzsKICAgICBtVGV4dHVyZS0+R2V0RGVzYygmZGVzYyk7Ci0gICAgbVRl
eHR1cmVXaWR0aCAgID0gZGVzYy5XaWR0aDsKLSAgICBtVGV4dHVyZUhlaWdodCAgPSBkZXNjLkhl
aWdodDsKLSAgICBtVGV4dHVyZURlcHRoICAgPSAxOworICAgIG1UZXh0dXJlV2lkdGggID0gZGVz
Yy5XaWR0aDsKKyAgICBtVGV4dHVyZUhlaWdodCA9IGRlc2MuSGVpZ2h0OworICAgIG1UZXh0dXJl
RGVwdGggID0gMTsKICAgICBtSGFzS2V5ZWRNdXRleCA9IChkZXNjLk1pc2NGbGFncyAmIEQzRDEx
X1JFU09VUkNFX01JU0NfU0hBUkVEX0tFWUVETVVURVgpICE9IDA7CiB9CiAKQEAgLTE0MjAsMTMg
KzE0MzUsMTMgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfRXh0ZXJuYWw6OnJlbGVhc2VB
c3NvY2lhdGVkSW1hZ2UoY29uc3QgZ2w6OkltYWdlSW5kZXgKIGdsOjpFcnJvciBUZXh0dXJlU3Rv
cmFnZTExX0V4dGVybmFsOjpnZXRSZXNvdXJjZShJRDNEMTFSZXNvdXJjZSAqKm91dFJlc291cmNl
KQogewogICAgICpvdXRSZXNvdXJjZSA9IG1UZXh0dXJlOwotICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3Ig
VGV4dHVyZVN0b3JhZ2UxMV9FeHRlcm5hbDo6Z2V0TWlwcGVkUmVzb3VyY2UoSUQzRDExUmVzb3Vy
Y2UgKipvdXRSZXNvdXJjZSkKIHsKICAgICAqb3V0UmVzb3VyY2UgPSBtVGV4dHVyZTsKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfRXh0ZXJuYWw6OmdldFJlbmRlclRhcmdl
dChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsCkBAIC0xNTAxLDEwICsxNTE2LDEwIEBAIFRl
eHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6OlRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2UoUmVuZGVy
ZXIxMSAqcmVuZGVyZXIsCiB7CiAgICAgbUN1cnJlbnRSZW5kZXJUYXJnZXQgPSByZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4ocmVuZGVyVGFyZ2V0MTEpOwogCi0gICAgbU1pcExldmVscyAgICAg
ID0gMTsKLSAgICBtVGV4dHVyZVdpZHRoICAgPSByZW5kZXJUYXJnZXQxMS0+Z2V0V2lkdGgoKTsK
LSAgICBtVGV4dHVyZUhlaWdodCAgPSByZW5kZXJUYXJnZXQxMS0+Z2V0SGVpZ2h0KCk7Ci0gICAg
bVRleHR1cmVEZXB0aCAgID0gMTsKKyAgICBtTWlwTGV2ZWxzICAgICA9IDE7CisgICAgbVRleHR1
cmVXaWR0aCAgPSByZW5kZXJUYXJnZXQxMS0+Z2V0V2lkdGgoKTsKKyAgICBtVGV4dHVyZUhlaWdo
dCA9IHJlbmRlclRhcmdldDExLT5nZXRIZWlnaHQoKTsKKyAgICBtVGV4dHVyZURlcHRoICA9IDE7
CiB9CiAKIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6On5UZXh0dXJlU3RvcmFnZTExX0VHTElt
YWdlKCkKQEAgLTE1NDYsNyArMTU2MSw2IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0VH
TEltYWdlOjpnZXRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4CiB7CiAg
ICAgQVNTRVJUKCFpbmRleC5oYXNMYXllcigpKTsKICAgICBBU1NFUlQoaW5kZXgubWlwSW5kZXgg
PT0gMCk7Ci0gICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShpbmRleCk7CiAKICAgICBBTkdM
RV9UUlkoY2hlY2tGb3JVcGRhdGVkUmVuZGVyVGFyZ2V0KCkpOwogCkBAIC0xNTg2LDcgKzE2MDAs
NyBAQCBib29sIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6OmlzQXNzb2NpYXRlZEltYWdlVmFs
aWQoY29uc3QgZ2w6OkltYWdlSW5kZXggJiwgSQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2Ux
MV9FR0xJbWFnZTo6cmVsZWFzZUFzc29jaWF0ZWRJbWFnZShjb25zdCBnbDo6SW1hZ2VJbmRleCAm
LCBJbWFnZTExICopCiB7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0VH
TEltYWdlOjp1c2VMZXZlbFplcm9Xb3JrYXJvdW5kVGV4dHVyZShib29sKQpAQCAtMTYwOCw3ICsx
NjIyLDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6OmdldFN3aXp6bGVU
ZXh0dXJlKElEM0QxMVJlc291cmNlICoqb3V0VGV4dHUKICAgICAgICAgZGVzYy5IZWlnaHQgICAg
ICAgICAgICAgPSBtVGV4dHVyZUhlaWdodDsKICAgICAgICAgZGVzYy5NaXBMZXZlbHMgICAgICAg
ICAgPSBtTWlwTGV2ZWxzOwogICAgICAgICBkZXNjLkFycmF5U2l6ZSAgICAgICAgICA9IDE7Ci0g
ICAgICAgIGRlc2MuRm9ybWF0ICAgICAgICAgICAgID0gbUZvcm1hdEluZm8uc3dpenpsZS50ZXhG
b3JtYXQ7CisgICAgICAgIGRlc2MuRm9ybWF0ID0gbUZvcm1hdEluZm8uZ2V0U3dpenpsZUZvcm1h
dChtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpLnRleEZvcm1hdDsKICAgICAg
ICAgZGVzYy5TYW1wbGVEZXNjLkNvdW50ICAgPSAxOwogICAgICAgICBkZXNjLlNhbXBsZURlc2Mu
UXVhbGl0eSA9IDA7CiAgICAgICAgIGRlc2MuVXNhZ2UgICAgICAgICAgICAgID0gRDNEMTFfVVNB
R0VfREVGQVVMVDsKQEAgLTE2MjksNyArMTY0Myw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFn
ZTExX0VHTEltYWdlOjpnZXRTd2l6emxlVGV4dHVyZShJRDNEMTFSZXNvdXJjZSAqKm91dFRleHR1
CiAgICAgfQogCiAgICAgKm91dFRleHR1cmUgPSBtU3dpenpsZVRleHR1cmU7Ci0gICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
IGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0VHTEltYWdlOjpnZXRTd2l6emxlUmVuZGVyVGFy
Z2V0KGludCBtaXBMZXZlbCwKQEAgLTE2NDYsNyArMTY2MCw4IEBAIGdsOjpFcnJvciBUZXh0dXJl
U3RvcmFnZTExX0VHTEltYWdlOjpnZXRTd2l6emxlUmVuZGVyVGFyZ2V0KGludCBtaXBMZXZlbCwK
ICAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwog
CiAgICAgICAgIEQzRDExX1JFTkRFUl9UQVJHRVRfVklFV19ERVNDIHJ0dkRlc2M7Ci0gICAgICAg
IHJ0dkRlc2MuRm9ybWF0ICAgICAgICAgICAgID0gbUZvcm1hdEluZm8uc3dpenpsZS5ydHZGb3Jt
YXQ7CisgICAgICAgIHJ0dkRlc2MuRm9ybWF0ID0KKyAgICAgICAgICAgIG1Gb3JtYXRJbmZvLmdl
dFN3aXp6bGVGb3JtYXQobVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKS5ydHZG
b3JtYXQ7CiAgICAgICAgIHJ0dkRlc2MuVmlld0RpbWVuc2lvbiAgICAgID0gRDNEMTFfUlRWX0RJ
TUVOU0lPTl9URVhUVVJFMkQ7CiAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJELk1pcFNsaWNlID0g
bVRvcExldmVsICsgbWlwTGV2ZWw7CiAKQEAgLTE3MjQsNyArMTczOSw3IEBAIGdsOjpFcnJvciBU
ZXh0dXJlU3RvcmFnZTExX0VHTEltYWdlOjpjcmVhdGVTUlYoaW50IGJhc2VMZXZlbCwKICAgICAg
ICAgKCpvdXRTUlYpLT5BZGRSZWYoKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRl
eHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6OmdldEltYWdlUmVuZGVyVGFyZ2V0KFJlbmRlclRhcmdl
dDExICoqb3V0UlQpIGNvbnN0CkBAIC0yMTQ2LDcgKzIxNjEsNyBAQCBnbDo6RXJyb3IgVGV4dHVy
ZVN0b3JhZ2UxMV9DdWJlOjpjcmVhdGVSZW5kZXJUYXJnZXRTUlYoSUQzRDExUmVzb3VyY2UgKnRl
eHR1cmUsCiAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBpbnRlcm5hbCBzaGFkZXIgcmVz
b3VyY2UgdmlldyBmb3IgdGV4dHVyZSBzdG9yYWdlLCByZXN1bHQ6IDB4JVguIiwKICAgICAgICAg
ICAgIHJlc3VsdCk7CiAgICAgfQotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwor
ICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2Ux
MV9DdWJlOjpnZXRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LApAQCAt
MjE5OSw3ICsyMjE0LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6Z2V0UmVu
ZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKIAogICAgICAgICAgICAgQVNT
RVJUKG91dFJUKTsKICAgICAgICAgICAgICpvdXRSVCA9IG1MZXZlbFplcm9SZW5kZXJUYXJnZXRb
ZmFjZUluZGV4XTsKLSAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwor
ICAgICAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgICAgIH0KIAogICAgICAgICBJ
RDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydiA9IG51bGxwdHI7CkBAIC0yMzAwLDcgKzIzMTUs
NyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpnZXRSZW5kZXJUYXJnZXQoY29u
c3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LAogCiAgICAgQVNTRVJUKG91dFJUKTsKICAgICAqb3V0
UlQgPSBtUmVuZGVyVGFyZ2V0W2ZhY2VJbmRleF1bbGV2ZWxdOwotICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJy
b3IgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpjcmVhdGVTUlYoaW50IGJhc2VMZXZlbCwKQEAgLTIz
NjcsNyArMjM4Miw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmNyZWF0ZVNS
VihpbnQgYmFzZUxldmVsLAogCiAgICAgZDNkMTE6OlNldERlYnVnTmFtZSgqb3V0U1JWLCAiVGV4
U3RvcmFnZUN1YmUuU1JWIik7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsK
KyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdl
MTFfQ3ViZTo6Z2V0U3dpenpsZVRleHR1cmUoSUQzRDExUmVzb3VyY2UgKipvdXRUZXh0dXJlKQpA
QCAtMjM4Myw3ICsyMzk4LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6Z2V0
U3dpenpsZVRleHR1cmUoSUQzRDExUmVzb3VyY2UgKipvdXRUZXh0dXJlKQogICAgICAgICBkZXNj
LkhlaWdodCAgICAgICAgICAgICA9IG1UZXh0dXJlSGVpZ2h0OwogICAgICAgICBkZXNjLk1pcExl
dmVscyAgICAgICAgICA9IG1NaXBMZXZlbHM7CiAgICAgICAgIGRlc2MuQXJyYXlTaXplICAgICAg
ICAgID0gQ1VCRV9GQUNFX0NPVU5UOwotICAgICAgICBkZXNjLkZvcm1hdCAgICAgICAgICAgICA9
IG1Gb3JtYXRJbmZvLnN3aXp6bGUudGV4Rm9ybWF0OworICAgICAgICBkZXNjLkZvcm1hdCA9IG1G
b3JtYXRJbmZvLmdldFN3aXp6bGVGb3JtYXQobVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNl
Q2FwcygpKS50ZXhGb3JtYXQ7CiAgICAgICAgIGRlc2MuU2FtcGxlRGVzYy5Db3VudCAgID0gMTsK
ICAgICAgICAgZGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOwogICAgICAgICBkZXNjLlVzYWdl
ICAgICAgICAgICAgICA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7CkBAIC0yNDA0LDcgKzI0MTksNyBA
QCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpnZXRTd2l6emxlVGV4dHVyZShJRDNE
MTFSZXNvdXJjZSAqKm91dFRleHR1cmUpCiAgICAgfQogCiAgICAgKm91dFRleHR1cmUgPSBtU3dp
enpsZVRleHR1cmU7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0
dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0N1YmU6
OmdldFN3aXp6bGVSZW5kZXJUYXJnZXQoaW50IG1pcExldmVsLApAQCAtMjQyMSw3ICsyNDM2LDgg
QEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6Z2V0U3dpenpsZVJlbmRlclRhcmdl
dChpbnQgbWlwTGV2ZWwsCiAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVy
LT5nZXREZXZpY2UoKTsKIAogICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJRVdfREVTQyBy
dHZEZXNjOwotICAgICAgICBydHZEZXNjLkZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICA9
IG1Gb3JtYXRJbmZvLnN3aXp6bGUucnR2Rm9ybWF0OworICAgICAgICBydHZEZXNjLkZvcm1hdCA9
CisgICAgICAgICAgICBtRm9ybWF0SW5mby5nZXRTd2l6emxlRm9ybWF0KG1SZW5kZXJlci0+Z2V0
UmVuZGVyZXIxMURldmljZUNhcHMoKSkucnR2Rm9ybWF0OwogICAgICAgICBydHZEZXNjLlZpZXdE
aW1lbnNpb24gICAgICAgICAgICAgICAgICA9IEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJE
QVJSQVk7CiAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJEQXJyYXkuTWlwU2xpY2UgICAgICAgID0g
bVRvcExldmVsICsgbWlwTGV2ZWw7CiAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJEQXJyYXkuRmly
c3RBcnJheVNsaWNlID0gMDsKQEAgLTI0NjksMTEgKzI0ODUsMTEgQEAgZ2w6OkVycm9yIFRleHR1
cmVTdG9yYWdlMTE6OmluaXREcm9wU3RlbmNpbFRleHR1cmUoY29uc3QgZ2w6OkltYWdlSW5kZXhJ
dGVyYXRvcgogICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVy
ZVN0b3JhZ2UxMV9DdWJlOjpjcmVhdGVEcm9wU3RlbmNpbFRleHR1cmUoKQorZ2w6OkVycm9yT3JS
ZXN1bHQ8VGV4dHVyZVN0b3JhZ2UxMTo6RHJvcFN0ZW5jaWw+IFRleHR1cmVTdG9yYWdlMTFfQ3Vi
ZTo6ZW5zdXJlRHJvcFN0ZW5jaWxUZXh0dXJlKCkKIHsKICAgICBpZiAobURyb3BTdGVuY2lsVGV4
dHVyZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworICAgICAgICByZXR1
cm4gRHJvcFN0ZW5jaWw6OkFMUkVBRFlfRVhJU1RTOwogICAgIH0KIAogICAgIEQzRDExX1RFWFRV
UkUyRF9ERVNDIGRyb3BEZXNjID0ge307CkBAIC0yNDk0LDEzICsyNTEwLDEzIEBAIGdsOjpFcnJv
ciBUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmNyZWF0ZURyb3BTdGVuY2lsVGV4dHVyZSgpCiAgICAg
SFJFU1VMVCBociA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZkcm9wRGVzYywgbnVsbHB0ciwg
Jm1Ecm9wU3RlbmNpbFRleHR1cmUpOwogICAgIGlmIChGQUlMRUQoaHIpKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVycm9yIGNyZWF0aW5n
IGRyb3Agc3RlbmNpbCB0ZXh0dXJlLiIpOworICAgICAgICByZXR1cm4gZ2w6OkludGVybmFsRXJy
b3IoKSA8PCAiRXJyb3IgY3JlYXRpbmcgZHJvcCBzdGVuY2lsIHRleHR1cmUuIjsKICAgICB9CiAg
ICAgZDNkMTE6OlNldERlYnVnTmFtZShtRHJvcFN0ZW5jaWxUZXh0dXJlLCAiVGV4U3RvcmFnZUN1
YmUuRHJvcFN0ZW5jaWwiKTsKIAogICAgIEFOR0xFX1RSWShpbml0RHJvcFN0ZW5jaWxUZXh0dXJl
KGdsOjpJbWFnZUluZGV4SXRlcmF0b3I6Ok1ha2VDdWJlKDAsIG1NaXBMZXZlbHMpKSk7CiAKLSAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICByZXR1cm4gRHJvcFN0ZW5jaWw6OkNSRUFURUQ7
CiB9CiAKIFRleHR1cmVTdG9yYWdlMTFfM0Q6OlRleHR1cmVTdG9yYWdlMTFfM0QoUmVuZGVyZXIx
MSAqcmVuZGVyZXIsCkBAIC0yNjkyLDcgKzI3MDgsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3Jh
Z2UxMV8zRDo6Z2V0UmVzb3VyY2UoSUQzRDExUmVzb3VyY2UgKipvdXRSZXNvdXJjZSkKICAgICB9
CiAKICAgICAqb3V0UmVzb3VyY2UgPSBtVGV4dHVyZTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRl
eHR1cmVTdG9yYWdlMTFfM0Q6OmNyZWF0ZVNSVihpbnQgYmFzZUxldmVsLApAQCAtMjcyMSw3ICsy
NzM3LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfM0Q6OmNyZWF0ZVNSVihpbnQgYmFz
ZUxldmVsLAogCiAgICAgZDNkMTE6OlNldERlYnVnTmFtZSgqb3V0U1JWLCAiVGV4U3RvcmFnZTNE
LlNSViIpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzNEOjpnZXRS
ZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBSZW5kZXJUYXJnZXREM0Qg
KipvdXRSVCkKQEAgLTI3NzksNjEgKzI3OTUsNTkgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdl
MTFfM0Q6OmdldFJlbmRlclRhcmdldChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIFJlbmQK
IAogICAgICAgICBBU1NFUlQob3V0UlQpOwogICAgICAgICAqb3V0UlQgPSBtTGV2ZWxSZW5kZXJU
YXJnZXRzW21pcExldmVsXTsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KLSAgICBlbHNlCi0gICAgewot
ICAgICAgICBjb25zdCBpbnQgbGF5ZXIgPSBpbmRleC5sYXllckluZGV4OwogCi0gICAgICAgIExl
dmVsTGF5ZXJLZXkga2V5KG1pcExldmVsLCBsYXllcik7Ci0gICAgICAgIGlmIChtTGV2ZWxMYXll
clJlbmRlclRhcmdldHMuZmluZChrZXkpID09IG1MZXZlbExheWVyUmVuZGVyVGFyZ2V0cy5lbmQo
KSkKLSAgICAgICAgewotICAgICAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVy
ZXItPmdldERldmljZSgpOwotICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQ7CisgICAgY29uc3Qg
aW50IGxheWVyID0gaW5kZXgubGF5ZXJJbmRleDsKIAotICAgICAgICAgICAgSUQzRDExUmVzb3Vy
Y2UgKnRleHR1cmUgPSBudWxscHRyOwotICAgICAgICAgICAgQU5HTEVfVFJZKGdldFJlc291cmNl
KCZ0ZXh0dXJlKSk7CisgICAgTGV2ZWxMYXllcktleSBrZXkobWlwTGV2ZWwsIGxheWVyKTsKKyAg
ICBpZiAobUxldmVsTGF5ZXJSZW5kZXJUYXJnZXRzLmZpbmQoa2V5KSA9PSBtTGV2ZWxMYXllclJl
bmRlclRhcmdldHMuZW5kKCkpCisgICAgeworICAgICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9
IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgICAgIEhSRVNVTFQgcmVzdWx0OwogCi0gICAg
ICAgICAgICAvLyBUT0RPLCB3aGF0IGtpbmQgb2YgU1JWIGlzIGV4cGVjdGVkIGhlcmU/Ci0gICAg
ICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydiA9IG51bGxwdHI7Ci0gICAgICAg
ICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKmJsaXRTUlYgPSBudWxscHRyOworICAgICAg
ICBJRDNEMTFSZXNvdXJjZSAqdGV4dHVyZSA9IG51bGxwdHI7CisgICAgICAgIEFOR0xFX1RSWShn
ZXRSZXNvdXJjZSgmdGV4dHVyZSkpOwogCi0gICAgICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VU
X1ZJRVdfREVTQyBydHZEZXNjOwotICAgICAgICAgICAgcnR2RGVzYy5Gb3JtYXQgICAgICAgICAg
ICAgICAgPSBtRm9ybWF0SW5mby5ydHZGb3JtYXQ7Ci0gICAgICAgICAgICBydHZEZXNjLlZpZXdE
aW1lbnNpb24gICAgICAgICA9IEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTNEOwotICAgICAg
ICAgICAgcnR2RGVzYy5UZXh0dXJlM0QuTWlwU2xpY2UgICAgPSBtVG9wTGV2ZWwgKyBtaXBMZXZl
bDsKLSAgICAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTNELkZpcnN0V1NsaWNlID0gbGF5ZXI7Ci0g
ICAgICAgICAgICBydHZEZXNjLlRleHR1cmUzRC5XU2l6ZSAgICAgICA9IDE7CisgICAgICAgIC8v
IFRPRE8sIHdoYXQga2luZCBvZiBTUlYgaXMgZXhwZWN0ZWQgaGVyZT8KKyAgICAgICAgSUQzRDEx
U2hhZGVyUmVzb3VyY2VWaWV3ICpzcnYgICAgID0gbnVsbHB0cjsKKyAgICAgICAgSUQzRDExU2hh
ZGVyUmVzb3VyY2VWaWV3ICpibGl0U1JWID0gbnVsbHB0cjsKIAotICAgICAgICAgICAgSUQzRDEx
UmVuZGVyVGFyZ2V0VmlldyAqcnR2OwotICAgICAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVh
dGVSZW5kZXJUYXJnZXRWaWV3KHRleHR1cmUsICZydHZEZXNjLCAmcnR2KTsKKyAgICAgICAgRDNE
MTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKKyAgICAgICAgcnR2RGVzYy5Gb3Jt
YXQgICAgICAgICAgICAgICAgPSBtRm9ybWF0SW5mby5ydHZGb3JtYXQ7CisgICAgICAgIHJ0dkRl
c2MuVmlld0RpbWVuc2lvbiAgICAgICAgID0gRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFM0Q7
CisgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTNELk1pcFNsaWNlICAgID0gbVRvcExldmVsICsgbWlw
TGV2ZWw7CisgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTNELkZpcnN0V1NsaWNlID0gbGF5ZXI7Cisg
ICAgICAgIHJ0dkRlc2MuVGV4dHVyZTNELldTaXplICAgICAgID0gMTsKIAotICAgICAgICAgICAg
QVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZIHx8IFNVQ0NFRURFRChyZXN1bHQpKTsKLSAg
ICAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBTYWZlUmVsZWFzZShzcnYpOwotICAgICAgICAgICAgICAgIFNhZmVSZWxlYXNlKGJsaXRT
UlYpOwotICAgICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIGludGVy
bmFsIHJlbmRlciB0YXJnZXQgdmlldyBmb3IgdGV4dHVyZSAiCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAic3RvcmFnZSwgcmVzdWx0OiAweCVYLiIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgQVNT
RVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAgICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAq
cnR2OworICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdldFZpZXcodGV4
dHVyZSwgJnJ0dkRlc2MsICZydHYpOwogCi0gICAgICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1l
KHJ0diwgIlRleFN0b3JhZ2UzRC5MYXllclJUViIpOworICAgICAgICBBU1NFUlQocmVzdWx0ID09
IEVfT1VUT0ZNRU1PUlkgfHwgU1VDQ0VFREVEKHJlc3VsdCkpOworICAgICAgICBpZiAoRkFJTEVE
KHJlc3VsdCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNhZmVSZWxlYXNlKHNydik7CisgICAg
ICAgICAgICBTYWZlUmVsZWFzZShibGl0U1JWKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxl
ZCB0byBjcmVhdGUgaW50ZXJuYWwgcmVuZGVyIHRhcmdldCB2aWV3IGZvciB0ZXh0dXJlICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0b3JhZ2UsIHJlc3VsdDogMHglWC4iLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOworICAgICAgICB9CisgICAgICAgIEFT
U0VSVChTVUNDRUVERUQocmVzdWx0KSk7CiAKLSAgICAgICAgICAgIG1MZXZlbExheWVyUmVuZGVy
VGFyZ2V0c1trZXldID0gbmV3IFRleHR1cmVSZW5kZXJUYXJnZXQxMSgKLSAgICAgICAgICAgICAg
ICBydHYsIHRleHR1cmUsIHNydiwgYmxpdFNSViwgbUZvcm1hdEluZm8uaW50ZXJuYWxGb3JtYXQs
IGdldEZvcm1hdFNldCgpLAotICAgICAgICAgICAgICAgIGdldExldmVsV2lkdGgobWlwTGV2ZWwp
LCBnZXRMZXZlbEhlaWdodChtaXBMZXZlbCksIDEsIDApOworICAgICAgICBkM2QxMTo6U2V0RGVi
dWdOYW1lKHJ0diwgIlRleFN0b3JhZ2UzRC5MYXllclJUViIpOwogCi0gICAgICAgICAgICAvLyBS
ZW5kZXJUYXJnZXQgd2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0aGVzZSByZXNvdXJjZXMKLSAgICAg
ICAgICAgIFNhZmVSZWxlYXNlKHJ0dik7Ci0gICAgICAgIH0KKyAgICAgICAgbUxldmVsTGF5ZXJS
ZW5kZXJUYXJnZXRzW2tleV0gPSBuZXcgVGV4dHVyZVJlbmRlclRhcmdldDExKAorICAgICAgICAg
ICAgcnR2LCB0ZXh0dXJlLCBzcnYsIGJsaXRTUlYsIG1Gb3JtYXRJbmZvLmludGVybmFsRm9ybWF0
LCBnZXRGb3JtYXRTZXQoKSwKKyAgICAgICAgICAgIGdldExldmVsV2lkdGgobWlwTGV2ZWwpLCBn
ZXRMZXZlbEhlaWdodChtaXBMZXZlbCksIDEsIDApOwogCi0gICAgICAgIEFTU0VSVChvdXRSVCk7
Ci0gICAgICAgICpvdXRSVCA9IG1MZXZlbExheWVyUmVuZGVyVGFyZ2V0c1trZXldOwotICAgICAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICAgICAgLy8gUmVuZGVyVGFyZ2V0IHdpbGwgdGFr
ZSBvd25lcnNoaXAgb2YgdGhlc2UgcmVzb3VyY2VzCisgICAgICAgIFNhZmVSZWxlYXNlKHJ0dik7
CiAgICAgfQorCisgICAgQVNTRVJUKG91dFJUKTsKKyAgICAqb3V0UlQgPSBtTGV2ZWxMYXllclJl
bmRlclRhcmdldHNba2V5XTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVy
cm9yIFRleHR1cmVTdG9yYWdlMTFfM0Q6OmdldFN3aXp6bGVUZXh0dXJlKElEM0QxMVJlc291cmNl
ICoqb3V0VGV4dHVyZSkKQEAgLTI4NDksNyArMjg2Myw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3Rv
cmFnZTExXzNEOjpnZXRTd2l6emxlVGV4dHVyZShJRDNEMTFSZXNvdXJjZSAqKm91dFRleHR1cmUp
CiAgICAgICAgIGRlc2MuSGVpZ2h0ICAgICAgICAgPSBtVGV4dHVyZUhlaWdodDsKICAgICAgICAg
ZGVzYy5EZXB0aCAgICAgICAgICA9IG1UZXh0dXJlRGVwdGg7CiAgICAgICAgIGRlc2MuTWlwTGV2
ZWxzICAgICAgPSBtTWlwTGV2ZWxzOwotICAgICAgICBkZXNjLkZvcm1hdCAgICAgICAgID0gbUZv
cm1hdEluZm8uc3dpenpsZS50ZXhGb3JtYXQ7CisgICAgICAgIGRlc2MuRm9ybWF0ID0gbUZvcm1h
dEluZm8uZ2V0U3dpenpsZUZvcm1hdChtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBz
KCkpLnRleEZvcm1hdDsKICAgICAgICAgZGVzYy5Vc2FnZSAgICAgICAgICA9IEQzRDExX1VTQUdF
X0RFRkFVTFQ7CiAgICAgICAgIGRlc2MuQmluZEZsYWdzICAgICAgPSBEM0QxMV9CSU5EX1NIQURF
Ul9SRVNPVVJDRSB8IEQzRDExX0JJTkRfUkVOREVSX1RBUkdFVDsKICAgICAgICAgZGVzYy5DUFVB
Y2Nlc3NGbGFncyA9IDA7CkBAIC0yODY4LDcgKzI4ODIsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0
b3JhZ2UxMV8zRDo6Z2V0U3dpenpsZVRleHR1cmUoSUQzRDExUmVzb3VyY2UgKipvdXRUZXh0dXJl
KQogICAgIH0KIAogICAgICpvdXRUZXh0dXJlID0gbVN3aXp6bGVUZXh0dXJlOwotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQog
CiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8zRDo6Z2V0U3dpenpsZVJlbmRlclRhcmdldChp
bnQgbWlwTGV2ZWwsIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKipvdXRSVFYpCkBAIC0yODg0LDcg
KzI4OTgsOCBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8zRDo6Z2V0U3dpenpsZVJlbmRl
clRhcmdldChpbnQgbWlwTGV2ZWwsIElEM0QxMVJlbmRlcgogICAgICAgICBJRDNEMTFEZXZpY2Ug
KmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAKICAgICAgICAgRDNEMTFfUkVOREVS
X1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKLSAgICAgICAgcnR2RGVzYy5Gb3JtYXQgICAgICAg
ICAgICAgICAgPSBtRm9ybWF0SW5mby5zd2l6emxlLnJ0dkZvcm1hdDsKKyAgICAgICAgcnR2RGVz
Yy5Gb3JtYXQgPQorICAgICAgICAgICAgbUZvcm1hdEluZm8uZ2V0U3dpenpsZUZvcm1hdChtUmVu
ZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpLnJ0dkZvcm1hdDsKICAgICAgICAgcnR2
RGVzYy5WaWV3RGltZW5zaW9uICAgICAgICAgPSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUz
RDsKICAgICAgICAgcnR2RGVzYy5UZXh0dXJlM0QuTWlwU2xpY2UgICAgPSBtVG9wTGV2ZWwgKyBt
aXBMZXZlbDsKICAgICAgICAgcnR2RGVzYy5UZXh0dXJlM0QuRmlyc3RXU2xpY2UgPSAwOwpAQCAt
MjkwNSw3ICsyOTIwLDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfM0Q6OmdldFN3aXp6
bGVSZW5kZXJUYXJnZXQoaW50IG1pcExldmVsLCBJRDNEMTFSZW5kZXIKICAgICB9CiAKICAgICAq
b3V0UlRWID0gbVN3aXp6bGVSZW5kZXJUYXJnZXRzW21pcExldmVsXTsKLSAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogVGV4
dHVyZVN0b3JhZ2UxMV8yREFycmF5OjpUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXkoUmVuZGVyZXIx
MSAqcmVuZGVyZXIsCkBAIC0zMDk4LDcgKzMxMTMsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3Jh
Z2UxMV8yREFycmF5OjpnZXRSZXNvdXJjZShJRDNEMTFSZXNvdXJjZSAqKm91dFJlc291cmNlKQog
ICAgIH0KIAogICAgICpvdXRSZXNvdXJjZSA9IG1UZXh0dXJlOwotICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJy
b3IgVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5OjpjcmVhdGVTUlYoaW50IGJhc2VMZXZlbCwKQEAg
LTMxMjcsNyArMzE0Miw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk6OmNy
ZWF0ZVNSVihpbnQgYmFzZUxldmVsLAogCiAgICAgZDNkMTE6OlNldERlYnVnTmFtZSgqb3V0U1JW
LCAiVGV4U3RvcmFnZTJEQXJyYXkuU1JWIik7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05P
X0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1
cmVTdG9yYWdlMTFfMkRBcnJheTo6Y3JlYXRlUmVuZGVyVGFyZ2V0U1JWKElEM0QxMVJlc291cmNl
ICp0ZXh0dXJlLApAQCAtMzE1NSw3ICszMTcwLDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdl
MTFfMkRBcnJheTo6Y3JlYXRlUmVuZGVyVGFyZ2V0U1JWKElEM0QxMVJlc291cmNlICp0ZXh0dXIK
ICAgICAgICAgICAgIHJlc3VsdCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0
dXJlU3RvcmFnZTExXzJEQXJyYXk6OmdldFJlbmRlclRhcmdldChjb25zdCBnbDo6SW1hZ2VJbmRl
eCAmaW5kZXgsCkBAIC0zMjg0LDcgKzMyOTksNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2Ux
MV8yREFycmF5OjpnZXRTd2l6emxlVGV4dHVyZShJRDNEMTFSZXNvdXJjZSAqKm91dFRleHR1cgog
ICAgICAgICBkZXNjLkhlaWdodCAgICAgICAgICAgICA9IG1UZXh0dXJlSGVpZ2h0OwogICAgICAg
ICBkZXNjLk1pcExldmVscyAgICAgICAgICA9IG1NaXBMZXZlbHM7CiAgICAgICAgIGRlc2MuQXJy
YXlTaXplICAgICAgICAgID0gbVRleHR1cmVEZXB0aDsKLSAgICAgICAgZGVzYy5Gb3JtYXQgICAg
ICAgICAgICAgPSBtRm9ybWF0SW5mby5zd2l6emxlLnRleEZvcm1hdDsKKyAgICAgICAgZGVzYy5G
b3JtYXQgPSBtRm9ybWF0SW5mby5nZXRTd2l6emxlRm9ybWF0KG1SZW5kZXJlci0+Z2V0UmVuZGVy
ZXIxMURldmljZUNhcHMoKSkudGV4Rm9ybWF0OwogICAgICAgICBkZXNjLlNhbXBsZURlc2MuQ291
bnQgICA9IDE7CiAgICAgICAgIGRlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ID0gMDsKICAgICAgICAg
ZGVzYy5Vc2FnZSAgICAgICAgICAgICAgPSBEM0QxMV9VU0FHRV9ERUZBVUxUOwpAQCAtMzMwNSw3
ICszMzIwLDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkRBcnJheTo6Z2V0U3dpenps
ZVRleHR1cmUoSUQzRDExUmVzb3VyY2UgKipvdXRUZXh0dXIKICAgICB9CiAKICAgICAqb3V0VGV4
dHVyZSA9IG1Td2l6emxlVGV4dHVyZTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVTdG9y
YWdlMTFfMkRBcnJheTo6Z2V0U3dpenpsZVJlbmRlclRhcmdldChpbnQgbWlwTGV2ZWwsCkBAIC0z
MzIyLDcgKzMzMzcsOCBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5OjpnZXRT
d2l6emxlUmVuZGVyVGFyZ2V0KGludCBtaXBMZXZlbCwKICAgICAgICAgSUQzRDExRGV2aWNlICpk
ZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogCiAgICAgICAgIEQzRDExX1JFTkRFUl9U
QVJHRVRfVklFV19ERVNDIHJ0dkRlc2M7Ci0gICAgICAgIHJ0dkRlc2MuRm9ybWF0ICAgICAgICAg
ICAgICAgICAgICAgICAgID0gbUZvcm1hdEluZm8uc3dpenpsZS5ydHZGb3JtYXQ7CisgICAgICAg
IHJ0dkRlc2MuRm9ybWF0ID0KKyAgICAgICAgICAgIG1Gb3JtYXRJbmZvLmdldFN3aXp6bGVGb3Jt
YXQobVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKS5ydHZGb3JtYXQ7CiAgICAg
ICAgIHJ0dkRlc2MuVmlld0RpbWVuc2lvbiAgICAgICAgICAgICAgICAgID0gRDNEMTFfUlRWX0RJ
TUVOU0lPTl9URVhUVVJFMkRBUlJBWTsKICAgICAgICAgcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5N
aXBTbGljZSAgICAgICAgPSBtVG9wTGV2ZWwgKyBtaXBMZXZlbDsKICAgICAgICAgcnR2RGVzYy5U
ZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPSAwOwpAQCAtMzM0NCwxMSArMzM2MCwxMiBA
QCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5OjpnZXRTd2l6emxlUmVuZGVyVGFy
Z2V0KGludCBtaXBMZXZlbCwKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVy
cm9yIFRleHR1cmVTdG9yYWdlMTFfMkRBcnJheTo6Y3JlYXRlRHJvcFN0ZW5jaWxUZXh0dXJlKCkK
K2dsOjpFcnJvck9yUmVzdWx0PFRleHR1cmVTdG9yYWdlMTE6OkRyb3BTdGVuY2lsPgorVGV4dHVy
ZVN0b3JhZ2UxMV8yREFycmF5OjplbnN1cmVEcm9wU3RlbmNpbFRleHR1cmUoKQogewogICAgIGlm
IChtRHJvcFN0ZW5jaWxUZXh0dXJlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7CisgICAgICAgIHJldHVybiBEcm9wU3RlbmNpbDo6QUxSRUFEWV9FWElTVFM7CiAgICAgfQog
CiAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZHJvcERlc2MgPSB7fTsKQEAgLTMzNjksNyArMzM4
Niw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk6OmNyZWF0ZURyb3BTdGVu
Y2lsVGV4dHVyZSgpCiAgICAgSFJFU1VMVCBociA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZk
cm9wRGVzYywgbnVsbHB0ciwgJm1Ecm9wU3RlbmNpbFRleHR1cmUpOwogICAgIGlmIChGQUlMRUQo
aHIpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwgIkVycm9yIGNyZWF0aW5nIGRyb3Agc3RlbmNpbCB0ZXh0dXJlLiIpOworICAgICAgICByZXR1
cm4gZ2w6OkludGVybmFsRXJyb3IoKSA8PCAiRXJyb3IgY3JlYXRpbmcgZHJvcCBzdGVuY2lsIHRl
eHR1cmUuIjsKICAgICB9CiAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtRHJvcFN0ZW5jaWxUZXh0
dXJlLCAiVGV4U3RvcmFnZTJEQXJyYXkuRHJvcFN0ZW5jaWwiKTsKIApAQCAtMzM3OCw3ICszMzk1
LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkRBcnJheTo6Y3JlYXRlRHJvcFN0ZW5j
aWxUZXh0dXJlKCkKICAgICBBTkdMRV9UUlkoaW5pdERyb3BTdGVuY2lsVGV4dHVyZSgKICAgICAg
ICAgZ2w6OkltYWdlSW5kZXhJdGVyYXRvcjo6TWFrZTJEQXJyYXkoMCwgbU1pcExldmVscywgbGF5
ZXJDb3VudHMuZGF0YSgpKSkpOwogCi0gICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAgcmV0
dXJuIERyb3BTdGVuY2lsOjpDUkVBVEVEOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvVGV4dHVyZVN0b3JhZ2UxMS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmgKaW5kZXggNDZlYjg0
NThiZWZiY2RiNTdmYzAxYmM2MWM4NWQ2NWU5YmUzNTg2ZC4uNDI1ZTBiNzcyZTBlNmJlMzYxMDZk
Y2QyNTVkYTkwNzRkZjAxMGE3MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9U
ZXh0dXJlU3RvcmFnZTExLmgKQEAgLTk1LDcgKzk1LDEyIEBAIGNsYXNzIFRleHR1cmVTdG9yYWdl
MTEgOiBwdWJsaWMgVGV4dHVyZVN0b3JhZ2UKICAgICBnbDo6RXJyb3IgZ2V0U1JWTGV2ZWwoaW50
IG1pcExldmVsLCBib29sIGJsaXRTUlYsIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqKm91dFNS
Vik7CiAKICAgICAvLyBHZXQgYSB2ZXJzaW9uIG9mIGEgZGVwdGggdGV4dHVyZSB3aXRoIG9ubHkg
ZGVwdGggaW5mb3JtYXRpb24sIG5vdCBzdGVuY2lsLgotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNy
ZWF0ZURyb3BTdGVuY2lsVGV4dHVyZSgpOworICAgIGVudW0gRHJvcFN0ZW5jaWwKKyAgICB7Cisg
ICAgICAgIENSRUFURUQsCisgICAgICAgIEFMUkVBRFlfRVhJU1RTCisgICAgfTsKKyAgICB2aXJ0
dWFsIGdsOjpFcnJvck9yUmVzdWx0PERyb3BTdGVuY2lsPiBlbnN1cmVEcm9wU3RlbmNpbFRleHR1
cmUoKTsKICAgICBnbDo6RXJyb3IgaW5pdERyb3BTdGVuY2lsVGV4dHVyZShjb25zdCBnbDo6SW1h
Z2VJbmRleEl0ZXJhdG9yICZpdCk7CiAKICAgICAvLyBUaGUgYmFzZUxldmVsIHBhcmFtZXRlciBz
aG91bGQgKm5vdCogaGF2ZSBtVG9wTGV2ZWwgYXBwbGllZC4KQEAgLTE2Nyw3ICsxNzIsNyBAQCBj
bGFzcyBUZXh0dXJlU3RvcmFnZTExXzJEIDogcHVibGljIFRleHR1cmVTdG9yYWdlMTEKICAgICBn
bDo6RXJyb3IgZ2V0U3dpenpsZVRleHR1cmUoSUQzRDExUmVzb3VyY2UgKipvdXRUZXh0dXJlKSBv
dmVycmlkZTsKICAgICBnbDo6RXJyb3IgZ2V0U3dpenpsZVJlbmRlclRhcmdldChpbnQgbWlwTGV2
ZWwsIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKipvdXRSVFYpIG92ZXJyaWRlOwogCi0gICAgZ2w6
OkVycm9yIGNyZWF0ZURyb3BTdGVuY2lsVGV4dHVyZSgpIG92ZXJyaWRlOworICAgIGdsOjpFcnJv
ck9yUmVzdWx0PERyb3BTdGVuY2lsPiBlbnN1cmVEcm9wU3RlbmNpbFRleHR1cmUoKSBvdmVycmlk
ZTsKIAogICAgIGdsOjpFcnJvciBlbnN1cmVUZXh0dXJlRXhpc3RzKGludCBtaXBMZXZlbHMpOwog
CkBAIC0zMTIsNyArMzE3LDcgQEAgY2xhc3MgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlIDogcHVibGlj
IFRleHR1cmVTdG9yYWdlMTEKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRTd2l6emxlVGV4dHVy
ZShJRDNEMTFSZXNvdXJjZSAqKm91dFRleHR1cmUpOwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdl
dFN3aXp6bGVSZW5kZXJUYXJnZXQoaW50IG1pcExldmVsLCBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3
ICoqb3V0UlRWKTsKIAotICAgIGdsOjpFcnJvciBjcmVhdGVEcm9wU3RlbmNpbFRleHR1cmUoKSBv
dmVycmlkZTsKKyAgICBnbDo6RXJyb3JPclJlc3VsdDxEcm9wU3RlbmNpbD4gZW5zdXJlRHJvcFN0
ZW5jaWxUZXh0dXJlKCkgb3ZlcnJpZGU7CiAKICAgICBnbDo6RXJyb3IgZW5zdXJlVGV4dHVyZUV4
aXN0cyhpbnQgbWlwTGV2ZWxzKTsKIApAQCAtMzk3LDcgKzQwMiw3IEBAIGNsYXNzIFRleHR1cmVT
dG9yYWdlMTFfMkRBcnJheSA6IHB1YmxpYyBUZXh0dXJlU3RvcmFnZTExCiAgICAgdmlydHVhbCBn
bDo6RXJyb3IgZ2V0U3dpenpsZVRleHR1cmUoSUQzRDExUmVzb3VyY2UgKipvdXRUZXh0dXJlKTsK
ICAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRTd2l6emxlUmVuZGVyVGFyZ2V0KGludCBtaXBMZXZl
bCwgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqKm91dFJUVik7CiAKLSAgICBnbDo6RXJyb3IgY3Jl
YXRlRHJvcFN0ZW5jaWxUZXh0dXJlKCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yT3JSZXN1bHQ8
RHJvcFN0ZW5jaWw+IGVuc3VyZURyb3BTdGVuY2lsVGV4dHVyZSgpIG92ZXJyaWRlOwogCiAgIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgY3JlYXRlU1JWKGludCBiYXNlTGV2ZWwsIGlu
dCBtaXBMZXZlbHMsIERYR0lfRk9STUFUIGZvcm1hdCwgSUQzRDExUmVzb3VyY2UgKnRleHR1cmUs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1RyaW0xMS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UcmltMTEuaAppbmRleCA0NzQxZTgxNjAxOTRjYTRmM2Jh
YjkzMmRmMzQzOWVkZWFiYTU1MjAzLi42OWZhMDVhNTdiMzhmOGRmOGVmMDEzMjE1OTM2ZDg1ZTUx
M2Y4N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1RyaW0xMS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJpbTExLmgKQEAgLTEzLDkgKzEzLDcg
QEAKICNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
RXJyb3IuaCIKIAotI2lmICFkZWZpbmVkKEFOR0xFX0VOQUJMRV9XSU5ET1dTX1NUT1JFKQotdHlw
ZWRlZiB2b2lkKiBFdmVudFJlZ2lzdHJhdGlvblRva2VuOwotI2Vsc2UKKyNpZiBkZWZpbmVkKEFO
R0xFX0VOQUJMRV9XSU5ET1dTX1NUT1JFKQogI2luY2x1ZGUgPEV2ZW50VG9rZW4uaD4KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL1ZlcnRleEFycmF5MTEuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTExLmNwcAppbmRl
eCBlMDZhNmIyMmI5MzczNzhjNTY0MzA2M2VjMGM4YTQ2MWYzOThkMjAwLi43YTdmMmEwY2YxM2Vh
Y2Y2MjcyYTRlMmFmMDA5ZTM1YTQzZTdhNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEFycmF5MTEuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvVmVydGV4QXJyYXkxMS5jcHAKQEAgLTksNyArOSw3IEBACiAKICNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4QXJyYXkxMS5oIgogCi0jaW5jbHVkZSAiY29t
bW9uL0JpdFNldEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiY29tbW9uL2JpdHNldF91dGlscy5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CdWZmZXIxMS5oIgogCiB1c2lu
ZyBuYW1lc3BhY2UgYW5nbGU7CkBAIC0xNyw3MCArMTcsNjkgQEAgdXNpbmcgbmFtZXNwYWNlIGFu
Z2xlOwogbmFtZXNwYWNlIHJ4CiB7CiAKLW5hbWVzcGFjZQotewotc2l6ZV90IEdldEF0dHJpYklu
ZGV4KHVuc2lnbmVkIGxvbmcgZGlydHlCaXQpCi17Ci0gICAgaWYgKGRpcnR5Qml0ID49IGdsOjpW
ZXJ0ZXhBcnJheTo6RElSVFlfQklUX0FUVFJJQl8wX0VOQUJMRUQgJiYKLSAgICAgICAgZGlydHlC
aXQgPCBnbDo6VmVydGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJfTUFYX0VOQUJMRUQpCi0gICAg
ewotICAgICAgICByZXR1cm4gZGlydHlCaXQgLSBnbDo6VmVydGV4QXJyYXk6OkRJUlRZX0JJVF9B
VFRSSUJfMF9FTkFCTEVEOwotICAgIH0KLQotICAgIGlmIChkaXJ0eUJpdCA+PSBnbDo6VmVydGV4
QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJfMF9QT0lOVEVSICYmCi0gICAgICAgIGRpcnR5Qml0IDwg
Z2w6OlZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRUUklCX01BWF9QT0lOVEVSKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGRpcnR5Qml0IC0gZ2w6OlZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRUUklC
XzBfUE9JTlRFUjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoZGlydHlCaXQgPj0gZ2w6OlZlcnRleEFy
cmF5OjpESVJUWV9CSVRfQVRUUklCXzBfRElWSVNPUiAmJgotICAgICAgICAgICBkaXJ0eUJpdCA8
IGdsOjpWZXJ0ZXhBcnJheTo6RElSVFlfQklUX0FUVFJJQl9NQVhfRElWSVNPUik7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oZGlydHlCaXQpIC0gZ2w6OlZlcnRleEFycmF5OjpESVJU
WV9CSVRfQVRUUklCXzBfRElWSVNPUjsKLX0KLX0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKLQog
VmVydGV4QXJyYXkxMTo6VmVydGV4QXJyYXkxMShjb25zdCBnbDo6VmVydGV4QXJyYXlTdGF0ZSAm
ZGF0YSkKICAgICA6IFZlcnRleEFycmF5SW1wbChkYXRhKSwKLSAgICAgIG1BdHRyaWJ1dGVTdG9y
YWdlVHlwZXMoZGF0YS5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCkuc2l6ZSgpLCBWZXJ0ZXhTdG9yYWdl
VHlwZTo6Q1VSUkVOVF9WQUxVRSksCi0gICAgICBtVHJhbnNsYXRlZEF0dHJpYnMoZGF0YS5nZXRW
ZXJ0ZXhBdHRyaWJ1dGVzKCkuc2l6ZSgpKSwKLSAgICAgIG1DdXJyZW50QnVmZmVycyhkYXRhLmdl
dFZlcnRleEF0dHJpYnV0ZXMoKS5zaXplKCkpCisgICAgICBtQXR0cmlidXRlU3RvcmFnZVR5cGVz
KGRhdGEuZ2V0TWF4QXR0cmlicygpLCBWZXJ0ZXhTdG9yYWdlVHlwZTo6Q1VSUkVOVF9WQUxVRSks
CisgICAgICBtVHJhbnNsYXRlZEF0dHJpYnMoZGF0YS5nZXRNYXhBdHRyaWJzKCkpLAorICAgICAg
bUN1cnJlbnRCdWZmZXJzKGRhdGEuZ2V0TWF4QXR0cmlicygpKQogewogICAgIGZvciAoc2l6ZV90
IGF0dHJpYkluZGV4ID0gMDsgYXR0cmliSW5kZXggPCBtQ3VycmVudEJ1ZmZlcnMuc2l6ZSgpOyAr
K2F0dHJpYkluZGV4KQogICAgIHsKLSAgICAgICAgbU9uQnVmZmVyRGF0YURpcnR5LnB1c2hfYmFj
ayhDaGFubmVsQmluZGluZyh0aGlzLCBzdGF0aWNfY2FzdDxTaWduYWxUb2tlbj4oYXR0cmliSW5k
ZXgpKSk7CisgICAgICAgIG1PbkJ1ZmZlckRhdGFEaXJ0eS5lbXBsYWNlX2JhY2sodGhpcywgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGF0dHJpYkluZGV4KSk7CiAgICAgfQogfQogCiBWZXJ0ZXhBcnJh
eTExOjp+VmVydGV4QXJyYXkxMSgpCiB7Ci0gICAgZm9yIChzaXplX3QgYXR0cmliSW5kZXggPSAw
OyBhdHRyaWJJbmRleCA8IG1DdXJyZW50QnVmZmVycy5zaXplKCk7ICsrYXR0cmliSW5kZXgpCisg
ICAgZm9yIChhdXRvICZidWZmZXIgOiBtQ3VycmVudEJ1ZmZlcnMpCiAgICAgewotICAgICAgICBp
ZiAobUN1cnJlbnRCdWZmZXJzW2F0dHJpYkluZGV4XS5nZXQoKSkKKyAgICAgICAgaWYgKGJ1ZmZl
ci5nZXQoKSkKICAgICAgICAgewotICAgICAgICAgICAgbUN1cnJlbnRCdWZmZXJzW2F0dHJpYklu
ZGV4XS5zZXQobnVsbHB0cik7CisgICAgICAgICAgICBidWZmZXIuc2V0KG51bGxwdHIpOwogICAg
ICAgICB9CiAgICAgfQogfQogCi12b2lkIFZlcnRleEFycmF5MTE6OnN5bmNTdGF0ZShjb25zdCBn
bDo6VmVydGV4QXJyYXk6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQordm9pZCBWZXJ0ZXhBcnJheTEx
OjpzeW5jU3RhdGUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLCBjb25zdCBnbDo6VmVydGV4QXJy
YXk6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQogewogICAgIGZvciAoYXV0byBkaXJ0eUJpdCA6IGFu
Z2xlOjpJdGVyYXRlQml0U2V0KGRpcnR5Qml0cykpCiAgICAgewogICAgICAgICBpZiAoZGlydHlC
aXQgPT0gZ2w6OlZlcnRleEFycmF5OjpESVJUWV9CSVRfRUxFTUVOVF9BUlJBWV9CVUZGRVIpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBzaXplX3QgYXR0cmliSW5kZXggPSBHZXRB
dHRyaWJJbmRleChkaXJ0eUJpdCk7Ci0gICAgICAgIG1BdHRyaWJzVG9VcGRhdGUuc2V0KGF0dHJp
YkluZGV4KTsKKyAgICAgICAgc2l6ZV90IGluZGV4ID0gZ2w6OlZlcnRleEFycmF5OjpHZXRBdHRy
aWJJbmRleChkaXJ0eUJpdCk7CisgICAgICAgIC8vIFRPRE8oamlhd2VpLnNoYW9AaW50ZWwuY29t
KTogVmVydGV4IEF0dHJpYiBCaW5kaW5ncworICAgICAgICBBU1NFUlQoaW5kZXggPT0gbURhdGEu
Z2V0QmluZGluZ0luZGV4RnJvbUF0dHJpYkluZGV4KGluZGV4KSk7CisgICAgICAgIG1BdHRyaWJz
VG9VcGRhdGUuc2V0KGluZGV4KTsKKyAgICB9Cit9CisKK3ZvaWQgVmVydGV4QXJyYXkxMTo6Zmx1
c2hBdHRyaWJVcGRhdGVzKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUpCit7CisgICAgY29uc3QgZ2w6
OlByb2dyYW0gKnByb2dyYW0gID0gc3RhdGUuZ2V0UHJvZ3JhbSgpOworICAgIGNvbnN0IGF1dG8g
JmFjdGl2ZUxvY2F0aW9ucyA9IHByb2dyYW0tPmdldEFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2so
KTsKKworICAgIGlmIChtQXR0cmlic1RvVXBkYXRlLmFueSgpKQorICAgIHsKKyAgICAgICAgLy8g
U2tpcCBhdHRyaWIgbG9jYXRpb25zIHRoZSBwcm9ncmFtIGRvZXNuJ3QgdXNlLgorICAgICAgICBj
b25zdCBhdXRvICZhY3RpdmVUb1VwZGF0ZSA9IChtQXR0cmlic1RvVXBkYXRlICYgYWN0aXZlTG9j
YXRpb25zKTsKKworICAgICAgICBmb3IgKGF1dG8gdG9VcGRhdGVJbmRleCA6IGFuZ2xlOjpJdGVy
YXRlQml0U2V0KGFjdGl2ZVRvVXBkYXRlKSkKKyAgICAgICAgeworICAgICAgICAgICAgbUF0dHJp
YnNUb1VwZGF0ZS5yZXNldCh0b1VwZGF0ZUluZGV4KTsKKyAgICAgICAgICAgIHVwZGF0ZVZlcnRl
eEF0dHJpYlN0b3JhZ2UodG9VcGRhdGVJbmRleCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKIHZv
aWQgVmVydGV4QXJyYXkxMTo6dXBkYXRlVmVydGV4QXR0cmliU3RvcmFnZShzaXplX3QgYXR0cmli
SW5kZXgpCiB7CiAgICAgY29uc3QgYXV0byAmYXR0cmliID0gbURhdGEuZ2V0VmVydGV4QXR0cmli
dXRlKGF0dHJpYkluZGV4KTsKKyAgICBjb25zdCBhdXRvICZiaW5kaW5nID0gbURhdGEuZ2V0Qmlu
ZGluZ0Zyb21BdHRyaWJJbmRleChhdHRyaWJJbmRleCk7CiAKICAgICAvLyBOb3RlOiBoYXZpbmcg
YW4gdW5jaGFuZ2VkIHN0b3JhZ2UgdHlwZSBkb2Vzbid0IG1lYW4gdGhlIGF0dHJpYnV0ZSBpcyBj
bGVhbi4KICAgICBhdXRvIG9sZFN0b3JhZ2VUeXBlID0gbUF0dHJpYnV0ZVN0b3JhZ2VUeXBlc1th
dHRyaWJJbmRleF07Ci0gICAgYXV0byBuZXdTdG9yYWdlVHlwZSA9IENsYXNzaWZ5QXR0cmlidXRl
U3RvcmFnZShhdHRyaWIpOworICAgIGF1dG8gbmV3U3RvcmFnZVR5cGUgPSBDbGFzc2lmeUF0dHJp
YnV0ZVN0b3JhZ2UoYXR0cmliLCBiaW5kaW5nKTsKIAogICAgIG1BdHRyaWJ1dGVTdG9yYWdlVHlw
ZXNbYXR0cmliSW5kZXhdID0gbmV3U3RvcmFnZVR5cGU7CiAKQEAgLTEwNSw3ICsxMDQsNyBAQCB2
b2lkIFZlcnRleEFycmF5MTE6OnVwZGF0ZVZlcnRleEF0dHJpYlN0b3JhZ2Uoc2l6ZV90IGF0dHJp
YkluZGV4KQogICAgIH0KIAogICAgIGdsOjpCdWZmZXIgKm9sZEJ1ZmZlckdMID0gbUN1cnJlbnRC
dWZmZXJzW2F0dHJpYkluZGV4XS5nZXQoKTsKLSAgICBnbDo6QnVmZmVyICpuZXdCdWZmZXJHTCA9
IGF0dHJpYi5idWZmZXIuZ2V0KCk7CisgICAgZ2w6OkJ1ZmZlciAqbmV3QnVmZmVyR0wgPSBiaW5k
aW5nLmJ1ZmZlci5nZXQoKTsKICAgICBCdWZmZXIxMSAqb2xkQnVmZmVyMTEgICA9IG9sZEJ1ZmZl
ckdMID8gR2V0SW1wbEFzPEJ1ZmZlcjExPihvbGRCdWZmZXJHTCkgOiBudWxscHRyOwogICAgIEJ1
ZmZlcjExICpuZXdCdWZmZXIxMSAgID0gbmV3QnVmZmVyR0wgPyBHZXRJbXBsQXM8QnVmZmVyMTE+
KG5ld0J1ZmZlckdMKSA6IG51bGxwdHI7CiAKQEAgLTExMyw3ICsxMTIsNyBAQCB2b2lkIFZlcnRl
eEFycmF5MTE6OnVwZGF0ZVZlcnRleEF0dHJpYlN0b3JhZ2Uoc2l6ZV90IGF0dHJpYkluZGV4KQog
ICAgIHsKICAgICAgICAgLy8gTm90ZSB0aGF0IGZvciBzdGF0aWMgY2FsbGJhY2tzLCBwcm9tb3Rp
b24gdG8gYSBzdGF0aWMgYnVmZmVyIGZyb20gYSBkeW5hbWljIGJ1ZmZlciBtZWFucwogICAgICAg
ICAvLyB3ZSBuZWVkIHRvIHRhZyBkeW5hbWljIGJ1ZmZlcnMgd2l0aCBzdGF0aWMgY2FsbGJhY2tz
LgotICAgICAgICBCcm9hZGNhc3RDaGFubmVsICpuZXdDaGFubmVsID0gbnVsbHB0cjsKKyAgICAg
ICAgQnJvYWRjYXN0Q2hhbm5lbDw+ICpuZXdDaGFubmVsID0gbnVsbHB0cjsKICAgICAgICAgaWYg
KG5ld0J1ZmZlcjExICE9IG51bGxwdHIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHN3aXRjaCAo
bmV3U3RvcmFnZVR5cGUpCkBAIC0xMzAsMzIgKzEyOSwyOCBAQCB2b2lkIFZlcnRleEFycmF5MTE6
OnVwZGF0ZVZlcnRleEF0dHJpYlN0b3JhZ2Uoc2l6ZV90IGF0dHJpYkluZGV4KQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgICAgIG1PbkJ1ZmZlckRhdGFEaXJ0eVthdHRyaWJJbmRleF0u
YmluZChuZXdDaGFubmVsKTsKLSAgICAgICAgbUN1cnJlbnRCdWZmZXJzW2F0dHJpYkluZGV4XSA9
IGF0dHJpYi5idWZmZXI7CisgICAgICAgIG1DdXJyZW50QnVmZmVyc1thdHRyaWJJbmRleF0gPSBi
aW5kaW5nLmJ1ZmZlcjsKICAgICB9CiB9CiAKK2Jvb2wgVmVydGV4QXJyYXkxMTo6aGFzRHluYW1p
Y0F0dHJpYihjb25zdCBnbDo6U3RhdGUgJnN0YXRlKQoreworICAgIGZsdXNoQXR0cmliVXBkYXRl
cyhzdGF0ZSk7CisgICAgcmV0dXJuIG1EeW5hbWljQXR0cmlic01hc2suYW55KCk7Cit9CisKIGds
OjpFcnJvciBWZXJ0ZXhBcnJheTExOjp1cGRhdGVEaXJ0eUFuZER5bmFtaWNBdHRyaWJzKFZlcnRl
eERhdGFNYW5hZ2VyICp2ZXJ0ZXhEYXRhTWFuYWdlciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcykKIHsKKyAgICBmbHVzaEF0dHJp
YlVwZGF0ZXMoc3RhdGUpOworCiAgICAgY29uc3QgZ2w6OlByb2dyYW0gKnByb2dyYW0gID0gc3Rh
dGUuZ2V0UHJvZ3JhbSgpOwogICAgIGNvbnN0IGF1dG8gJmFjdGl2ZUxvY2F0aW9ucyA9IHByb2dy
YW0tPmdldEFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2soKTsKLQotICAgIGlmIChtQXR0cmlic1Rv
VXBkYXRlLmFueSgpKQotICAgIHsKLSAgICAgICAgLy8gU2tpcCBhdHRyaWIgbG9jYXRpb25zIHRo
ZSBwcm9ncmFtIGRvZXNuJ3QgdXNlLgotICAgICAgICBjb25zdCBhdXRvICZhY3RpdmVUb1VwZGF0
ZSA9IChtQXR0cmlic1RvVXBkYXRlICYgYWN0aXZlTG9jYXRpb25zKTsKLQotICAgICAgICBmb3Ig
KGF1dG8gdG9VcGRhdGVJbmRleCA6IGFuZ2xlOjpJdGVyYXRlQml0U2V0KGFjdGl2ZVRvVXBkYXRl
KSkKLSAgICAgICAgewotICAgICAgICAgICAgbUF0dHJpYnNUb1VwZGF0ZS5yZXNldCh0b1VwZGF0
ZUluZGV4KTsKLSAgICAgICAgICAgIHVwZGF0ZVZlcnRleEF0dHJpYlN0b3JhZ2UodG9VcGRhdGVJ
bmRleCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBjb25zdCBhdXRvICZhdHRyaWJzID0gbURh
dGEuZ2V0VmVydGV4QXR0cmlidXRlcygpOworICAgIGNvbnN0IGF1dG8gJmF0dHJpYnMgICAgICAg
ICA9IG1EYXRhLmdldFZlcnRleEF0dHJpYnV0ZXMoKTsKKyAgICBjb25zdCBhdXRvICZiaW5kaW5n
cyAgICAgICAgPSBtRGF0YS5nZXRWZXJ0ZXhCaW5kaW5ncygpOwogCiAgICAgaWYgKG1BdHRyaWJz
VG9UcmFuc2xhdGUuYW55KCkpCiAgICAgewpAQCAtMTcxLDkgKzE2NiwxMCBAQCBnbDo6RXJyb3Ig
VmVydGV4QXJyYXkxMTo6dXBkYXRlRGlydHlBbmREeW5hbWljQXR0cmlicyhWZXJ0ZXhEYXRhTWFu
YWdlciAqdmVydGV4RAogICAgICAgICAgICAgICAgIHN0YXRlLmdldFZlcnRleEF0dHJpYkN1cnJl
bnRWYWx1ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGRpcnR5QXR0cmliSW5kZXgpKTsKIAog
ICAgICAgICAgICAgLy8gUmVjb3JkIGJhc2ljIGF0dHJpYiBpbmZvCi0gICAgICAgICAgICB0cmFu
c2xhdGVkQXR0cmliLT5hdHRyaWJ1dGUgICAgICAgID0gJmF0dHJpYnNbZGlydHlBdHRyaWJJbmRl
eF07CisgICAgICAgICAgICB0cmFuc2xhdGVkQXR0cmliLT5hdHRyaWJ1dGUgPSAmYXR0cmlic1tk
aXJ0eUF0dHJpYkluZGV4XTsKKyAgICAgICAgICAgIHRyYW5zbGF0ZWRBdHRyaWItPmJpbmRpbmcg
ICA9ICZiaW5kaW5nc1t0cmFuc2xhdGVkQXR0cmliLT5hdHRyaWJ1dGUtPmJpbmRpbmdJbmRleF07
CiAgICAgICAgICAgICB0cmFuc2xhdGVkQXR0cmliLT5jdXJyZW50VmFsdWVUeXBlID0gY3VycmVu
dFZhbHVlLlR5cGU7Ci0gICAgICAgICAgICB0cmFuc2xhdGVkQXR0cmliLT5kaXZpc29yICAgICAg
ICAgID0gdHJhbnNsYXRlZEF0dHJpYi0+YXR0cmlidXRlLT5kaXZpc29yOworICAgICAgICAgICAg
dHJhbnNsYXRlZEF0dHJpYi0+ZGl2aXNvciAgICAgICAgICA9IHRyYW5zbGF0ZWRBdHRyaWItPmJp
bmRpbmctPmRpdmlzb3I7CiAKICAgICAgICAgICAgIHN3aXRjaCAobUF0dHJpYnV0ZVN0b3JhZ2VU
eXBlc1tkaXJ0eUF0dHJpYkluZGV4XSkKICAgICAgICAgICAgIHsKQEAgLTE4Miw4ICsxNzgsNyBA
QCBnbDo6RXJyb3IgVmVydGV4QXJyYXkxMTo6dXBkYXRlRGlydHlBbmREeW5hbWljQXR0cmlicyhW
ZXJ0ZXhEYXRhTWFuYWdlciAqdmVydGV4RAogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICBjYXNlIFZlcnRleFN0b3JhZ2VUeXBlOjpTVEFUSUM6CiAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBBTkdMRV9UUlkoCi0gICAgICAgICAgICAgICAg
ICAgICAgICBWZXJ0ZXhEYXRhTWFuYWdlcjo6U3RvcmVTdGF0aWNBdHRyaWIodHJhbnNsYXRlZEF0
dHJpYiwgY291bnQsIGluc3RhbmNlcykpOworICAgICAgICAgICAgICAgICAgICBBTkdMRV9UUlko
VmVydGV4RGF0YU1hbmFnZXI6OlN0b3JlU3RhdGljQXR0cmliKHRyYW5zbGF0ZWRBdHRyaWIpKTsK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIGNhc2UgVmVydGV4U3RvcmFnZVR5cGU6OkNVUlJFTlRfVkFMVUU6CkBAIC0yMDgsMTUg
KzIwMywxNiBAQCBnbDo6RXJyb3IgVmVydGV4QXJyYXkxMTo6dXBkYXRlRGlydHlBbmREeW5hbWlj
QXR0cmlicyhWZXJ0ZXhEYXRhTWFuYWdlciAqdmVydGV4RAogCiAgICAgICAgICAgICAvLyBSZWNv
cmQgYmFzaWMgYXR0cmliIGluZm8KICAgICAgICAgICAgIGR5bmFtaWNBdHRyaWItPmF0dHJpYnV0
ZSAgICAgICAgPSAmYXR0cmlic1tkeW5hbWljQXR0cmliSW5kZXhdOworICAgICAgICAgICAgZHlu
YW1pY0F0dHJpYi0+YmluZGluZyAgICAgICAgICA9ICZiaW5kaW5nc1tkeW5hbWljQXR0cmliLT5h
dHRyaWJ1dGUtPmJpbmRpbmdJbmRleF07CiAgICAgICAgICAgICBkeW5hbWljQXR0cmliLT5jdXJy
ZW50VmFsdWVUeXBlID0gY3VycmVudFZhbHVlLlR5cGU7Ci0gICAgICAgICAgICBkeW5hbWljQXR0
cmliLT5kaXZpc29yICAgICAgICAgID0gZHluYW1pY0F0dHJpYi0+YXR0cmlidXRlLT5kaXZpc29y
OworICAgICAgICAgICAgZHluYW1pY0F0dHJpYi0+ZGl2aXNvciAgICAgICAgICA9IGR5bmFtaWNB
dHRyaWItPmJpbmRpbmctPmRpdmlzb3I7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdmVy
dGV4RGF0YU1hbmFnZXItPnN0b3JlRHluYW1pY0F0dHJpYnMoJm1UcmFuc2xhdGVkQXR0cmlicywg
YWN0aXZlRHluYW1pY0F0dHJpYnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGFydCwgY291bnQsIGluc3RhbmNlcyk7CiAgICAgfQogCi0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7CiB9CiAKIGNvbnN0IHN0ZDo6dmVjdG9yPFRyYW5zbGF0ZWRBdHRyaWJ1dGU+ICZWZXJ0ZXhB
cnJheTExOjpnZXRUcmFuc2xhdGVkQXR0cmlicygpIGNvbnN0CkBAIC0yMjQsMTIgKzIyMCwxMiBA
QCBjb25zdCBzdGQ6OnZlY3RvcjxUcmFuc2xhdGVkQXR0cmlidXRlPiAmVmVydGV4QXJyYXkxMTo6
Z2V0VHJhbnNsYXRlZEF0dHJpYnMoKSBjbwogICAgIHJldHVybiBtVHJhbnNsYXRlZEF0dHJpYnM7
CiB9CiAKLXZvaWQgVmVydGV4QXJyYXkxMTo6c2lnbmFsKFNpZ25hbFRva2VuIHRva2VuKQordm9p
ZCBWZXJ0ZXhBcnJheTExOjpzaWduYWwodWludDMyX3QgY2hhbm5lbElEKQogewotICAgIEFTU0VS
VChtQXR0cmlidXRlU3RvcmFnZVR5cGVzW3Rva2VuXSAhPSBWZXJ0ZXhTdG9yYWdlVHlwZTo6Q1VS
UkVOVF9WQUxVRSk7CisgICAgQVNTRVJUKG1BdHRyaWJ1dGVTdG9yYWdlVHlwZXNbY2hhbm5lbElE
XSAhPSBWZXJ0ZXhTdG9yYWdlVHlwZTo6Q1VSUkVOVF9WQUxVRSk7CiAKICAgICAvLyBUaGlzIGNh
biBjaGFuZ2UgYSBidWZmZXIncyBzdG9yYWdlLCB3ZSdsbCBuZWVkIHRvIHJlLWNoZWNrLgotICAg
IG1BdHRyaWJzVG9VcGRhdGUuc2V0KHRva2VuKTsKKyAgICBtQXR0cmlic1RvVXBkYXRlLnNldChj
aGFubmVsSUQpOwogfQogCiB2b2lkIFZlcnRleEFycmF5MTE6OmNsZWFyRGlydHlBbmRQcm9tb3Rl
RHluYW1pY0F0dHJpYnMoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgR0xzaXplaSBjb3VudCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvVmVydGV4QXJyYXkxMS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTExLmgKaW5kZXggZWIwZTA1OTVk
NWYxMGE1MjA2ZDg3MThjMzBlNjQxYzlhYmE5YzhiNS4uMGY3Mzg1M2NlNWMyZWVhMTRjMDhkOTMx
MWZlOTMyNDU3MDlhYmY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTExLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhB
cnJheTExLmgKQEAgLTksNiArOSw3IEBACiAjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9E
M0QxMV9WRVJURVhBUlJBWTExX0hfCiAjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EM0Qx
MV9WRVJURVhBUlJBWTExX0hfCiAKKyNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1ZlcnRleEFycmF5SW1wbC5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvc2lnbmFsX3V0aWxzLmgiCkBAIC0xNywxMyArMTgsMTUgQEAgbmFtZXNwYWNlIHJ4CiB7
CiBjbGFzcyBSZW5kZXJlcjExOwogCi1jbGFzcyBWZXJ0ZXhBcnJheTExIDogcHVibGljIFZlcnRl
eEFycmF5SW1wbCwgcHVibGljIGFuZ2xlOjpTaWduYWxSZWNlaXZlcgorY2xhc3MgVmVydGV4QXJy
YXkxMSA6IHB1YmxpYyBWZXJ0ZXhBcnJheUltcGwsIHB1YmxpYyBhbmdsZTo6U2lnbmFsUmVjZWl2
ZXI8PgogewogICBwdWJsaWM6CiAgICAgVmVydGV4QXJyYXkxMShjb25zdCBnbDo6VmVydGV4QXJy
YXlTdGF0ZSAmZGF0YSk7CiAgICAgflZlcnRleEFycmF5MTEoKSBvdmVycmlkZTsKIAotICAgIHZv
aWQgc3luY1N0YXRlKGNvbnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGlydHlCaXRzICZkaXJ0eUJpdHMp
IG92ZXJyaWRlOworICAgIHZvaWQgc3luY1N0YXRlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwg
Y29uc3QgZ2w6OlZlcnRleEFycmF5OjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3ZlcnJpZGU7Cisg
ICAgLy8gVGhpcyB3aWxsIGZsdXNoIGFueSBwZW5kaW5nIGF0dHJpYiB1cGRhdGVzIGFuZCB0aGVu
IGNoZWNrIHRoZSBkeW5hbWljIGF0dHJpYnMgbWFzay4KKyAgICBib29sIGhhc0R5bmFtaWNBdHRy
aWIoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSk7CiAgICAgZ2w6OkVycm9yIHVwZGF0ZURpcnR5QW5k
RHluYW1pY0F0dHJpYnMoVmVydGV4RGF0YU1hbmFnZXIgKnZlcnRleERhdGFNYW5hZ2VyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpTdGF0ZSAm
c3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
c3RhcnQsCkBAIC0zNCwxMCArMzcsMTEgQEAgY2xhc3MgVmVydGV4QXJyYXkxMSA6IHB1YmxpYyBW
ZXJ0ZXhBcnJheUltcGwsIHB1YmxpYyBhbmdsZTo6U2lnbmFsUmVjZWl2ZXIKICAgICBjb25zdCBz
dGQ6OnZlY3RvcjxUcmFuc2xhdGVkQXR0cmlidXRlPiAmZ2V0VHJhbnNsYXRlZEF0dHJpYnMoKSBj
b25zdDsKIAogICAgIC8vIFNpZ25hbFJlY2VpdmVyIGltcGxlbWVudGF0aW9uCi0gICAgdm9pZCBz
aWduYWwoYW5nbGU6OlNpZ25hbFRva2VuIHRva2VuKSBvdmVycmlkZTsKKyAgICB2b2lkIHNpZ25h
bCh1aW50MzJfdCBjaGFubmVsSUQpIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6CiAgICAgdm9pZCB1
cGRhdGVWZXJ0ZXhBdHRyaWJTdG9yYWdlKHNpemVfdCBhdHRyaWJJbmRleCk7CisgICAgdm9pZCBm
bHVzaEF0dHJpYlVwZGF0ZXMoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSk7CiAKICAgICBzdGQ6OnZl
Y3RvcjxWZXJ0ZXhTdG9yYWdlVHlwZT4gbUF0dHJpYnV0ZVN0b3JhZ2VUeXBlczsKICAgICBzdGQ6
OnZlY3RvcjxUcmFuc2xhdGVkQXR0cmlidXRlPiBtVHJhbnNsYXRlZEF0dHJpYnM7CkBAIC01NCw3
ICs1OCw3IEBAIGNsYXNzIFZlcnRleEFycmF5MTEgOiBwdWJsaWMgVmVydGV4QXJyYXlJbXBsLCBw
dWJsaWMgYW5nbGU6OlNpZ25hbFJlY2VpdmVyCiAgICAgLy8gV2UgbmVlZCB0byBrZWVwIGEgc2Fm
ZSBwb2ludGVyIHRvIHRoZSBCdWZmZXIgc28gd2UgY2FuIGF0dGFjaCB0aGUgY29ycmVjdCBkaXJ0
eSBjYWxsYmFja3MuCiAgICAgc3RkOjp2ZWN0b3I8QmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4+
IG1DdXJyZW50QnVmZmVyczsKIAotICAgIHN0ZDo6dmVjdG9yPGFuZ2xlOjpDaGFubmVsQmluZGlu
Zz4gbU9uQnVmZmVyRGF0YURpcnR5OworICAgIHN0ZDo6dmVjdG9yPGdsOjpPbkF0dGFjaG1lbnRE
aXJ0eUJpbmRpbmc+IG1PbkJ1ZmZlckRhdGFEaXJ0eTsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBy
eApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9WZXJ0ZXhCdWZmZXIxMS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjExLmNwcAppbmRl
eCA5ZmU0NzQyOTc3YTRkY2RlNGVlNjE3MGNjMzcwYWUzNzY5NTU4ZjE2Li45MmIxZWRlODA1Yjk1
NTIzNTI2ZDc3MWEwOWNiZGYzMzg3ODA0OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjExLmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL1ZlcnRleEJ1ZmZlcjExLmNwcApAQCAtMjEsOSArMjEsOSBAQCBuYW1lc3BhY2UgcngK
IAogVmVydGV4QnVmZmVyMTE6OlZlcnRleEJ1ZmZlcjExKFJlbmRlcmVyMTEgKmNvbnN0IHJlbmRl
cmVyKSA6IG1SZW5kZXJlcihyZW5kZXJlcikKIHsKLSAgICBtQnVmZmVyID0gTlVMTDsKLSAgICBt
QnVmZmVyU2l6ZSA9IDA7Ci0gICAgbUR5bmFtaWNVc2FnZSA9IGZhbHNlOworICAgIG1CdWZmZXIg
ICAgICAgICAgICAgPSBOVUxMOworICAgIG1CdWZmZXJTaXplICAgICAgICAgPSAwOworICAgIG1E
eW5hbWljVXNhZ2UgICAgICAgPSBmYWxzZTsKICAgICBtTWFwcGVkUmVzb3VyY2VEYXRhID0gTlVM
TDsKIH0KIApAQCAtNDEsMjAgKzQxLDIxIEBAIGdsOjpFcnJvciBWZXJ0ZXhCdWZmZXIxMTo6aW5p
dGlhbGl6ZSh1bnNpZ25lZCBpbnQgc2l6ZSwgYm9vbCBkeW5hbWljVXNhZ2UpCiAKICAgICBpZiAo
c2l6ZSA+IDApCiAgICAgewotICAgICAgICBJRDNEMTFEZXZpY2UqIGR4RGV2aWNlID0gbVJlbmRl
cmVyLT5nZXREZXZpY2UoKTsKKyAgICAgICAgSUQzRDExRGV2aWNlICpkeERldmljZSA9IG1SZW5k
ZXJlci0+Z2V0RGV2aWNlKCk7CiAKICAgICAgICAgRDNEMTFfQlVGRkVSX0RFU0MgYnVmZmVyRGVz
YzsKLSAgICAgICAgYnVmZmVyRGVzYy5CeXRlV2lkdGggPSBzaXplOwotICAgICAgICBidWZmZXJE
ZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfRFlOQU1JQzsKLSAgICAgICAgYnVmZmVyRGVzYy5CaW5k
RmxhZ3MgPSBEM0QxMV9CSU5EX1ZFUlRFWF9CVUZGRVI7Ci0gICAgICAgIGJ1ZmZlckRlc2MuQ1BV
QWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOwotICAgICAgICBidWZmZXJEZXNj
Lk1pc2NGbGFncyA9IDA7CisgICAgICAgIGJ1ZmZlckRlc2MuQnl0ZVdpZHRoICAgICAgICAgICA9
IHNpemU7CisgICAgICAgIGJ1ZmZlckRlc2MuVXNhZ2UgICAgICAgICAgICAgICA9IEQzRDExX1VT
QUdFX0RZTkFNSUM7CisgICAgICAgIGJ1ZmZlckRlc2MuQmluZEZsYWdzICAgICAgICAgICA9IEQz
RDExX0JJTkRfVkVSVEVYX0JVRkZFUjsKKyAgICAgICAgYnVmZmVyRGVzYy5DUFVBY2Nlc3NGbGFn
cyAgICAgID0gRDNEMTFfQ1BVX0FDQ0VTU19XUklURTsKKyAgICAgICAgYnVmZmVyRGVzYy5NaXNj
RmxhZ3MgICAgICAgICAgID0gMDsKICAgICAgICAgYnVmZmVyRGVzYy5TdHJ1Y3R1cmVCeXRlU3Ry
aWRlID0gMDsKIAogICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGR4RGV2aWNlLT5DcmVhdGVCdWZm
ZXIoJmJ1ZmZlckRlc2MsIE5VTEwsICZtQnVmZmVyKTsKICAgICAgICAgaWYgKEZBSUxFRChyZXN1
bHQpKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9N
RU1PUlksICJGYWlsZWQgdG8gYWxsb2NhdGUgaW50ZXJuYWwgdmVydGV4IGJ1ZmZlciBvZiBzaXpl
LCAlbHUuIiwgc2l6ZSk7CisgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9N
RU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gYWxsb2NhdGUg
aW50ZXJuYWwgdmVydGV4IGJ1ZmZlciBvZiBzaXplLCAlbHUuIiwgc2l6ZSk7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoZHluYW1pY1VzYWdlKQpAQCAtNjcsMTAgKzY4LDEwIEBAIGdsOjpFcnJv
ciBWZXJ0ZXhCdWZmZXIxMTo6aW5pdGlhbGl6ZSh1bnNpZ25lZCBpbnQgc2l6ZSwgYm9vbCBkeW5h
bWljVXNhZ2UpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtQnVmZmVyU2l6ZSA9IHNpemU7Cisg
ICAgbUJ1ZmZlclNpemUgICA9IHNpemU7CiAgICAgbUR5bmFtaWNVc2FnZSA9IGR5bmFtaWNVc2Fn
ZTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVmVydGV4QnVmZmVyMTE6Om1hcFJlc291cmNlKCkK
QEAgLTgxLDE2ICs4MiwxOCBAQCBnbDo6RXJyb3IgVmVydGV4QnVmZmVyMTE6Om1hcFJlc291cmNl
KCkKIAogICAgICAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7CiAK
LSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkeENvbnRleHQtPk1hcChtQnVmZmVyLCAwLCBEM0Qx
MV9NQVBfV1JJVEVfTk9fT1ZFUldSSVRFLCAwLCAmbWFwcGVkUmVzb3VyY2UpOworICAgICAgICBI
UkVTVUxUIHJlc3VsdCA9CisgICAgICAgICAgICBkeENvbnRleHQtPk1hcChtQnVmZmVyLCAwLCBE
M0QxMV9NQVBfV1JJVEVfTk9fT1ZFUldSSVRFLCAwLCAmbWFwcGVkUmVzb3VyY2UpOwogICAgICAg
ICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBtYXAgaW50ZXJuYWwgdmVydGV4IGJ1
ZmZlciwgSFJFU1VMVDogMHglMDh4LiIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJG
YWlsZWQgdG8gbWFwIGludGVybmFsIHZlcnRleCBidWZmZXIsIEhSRVNVTFQ6IDB4JTA4eC4iLCBy
ZXN1bHQpOwogICAgICAgICB9CiAKLSAgICAgICAgbU1hcHBlZFJlc291cmNlRGF0YSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG1hcHBlZFJlc291cmNlLnBEYXRhKTsKKyAgICAgICAgbU1h
cHBlZFJlc291cmNlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCAqPihtYXBwZWRSZXNv
dXJjZS5wRGF0YSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgVmVydGV4QnVmZmVyMTE6Omhp
bnRVbm1hcFJlc291cmNlKCkKQEAgLTEwNSw2ICsxMDgsNyBAQCB2b2lkIFZlcnRleEJ1ZmZlcjEx
OjpoaW50VW5tYXBSZXNvdXJjZSgpCiB9CiAKIGdsOjpFcnJvciBWZXJ0ZXhCdWZmZXIxMTo6c3Rv
cmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpW
ZXJ0ZXhCaW5kaW5nICZiaW5kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGN1cnJlbnRWYWx1ZVR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzdGFydCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCkBAIC0x
MTcsNyArMTIxLDcgQEAgZ2w6OkVycm9yIFZlcnRleEJ1ZmZlcjExOjpzdG9yZVZlcnRleEF0dHJp
YnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmkKICAgICAgICAgcmV0dXJuIGds
OjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiSW50ZXJuYWwgdmVydGV4IGJ1ZmZlciBpcyBub3Qg
aW5pdGlhbGl6ZWQuIik7CiAgICAgfQogCi0gICAgaW50IGlucHV0U3RyaWRlID0gc3RhdGljX2Nh
c3Q8aW50PihDb21wdXRlVmVydGV4QXR0cmlidXRlU3RyaWRlKGF0dHJpYikpOworICAgIGludCBp
bnB1dFN0cmlkZSA9IHN0YXRpY19jYXN0PGludD4oQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlk
ZShhdHRyaWIsIGJpbmRpbmcpKTsKIAogICAgIC8vIFRoaXMgd2lsbCBtYXAgdGhlIHJlc291cmNl
IGlmIGl0IGlzbid0IGFscmVhZHkgbWFwcGVkLgogICAgIEFOR0xFX1RSWShtYXBSZXNvdXJjZSgp
KTsKQEAgLTEyNiwxNCArMTMwLDE1IEBAIGdsOjpFcnJvciBWZXJ0ZXhCdWZmZXIxMTo6c3RvcmVW
ZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpCiAKICAgICBj
b25zdCB1aW50OF90ICppbnB1dCA9IHNvdXJjZURhdGE7CiAKLSAgICBpZiAoaW5zdGFuY2VzID09
IDAgfHwgYXR0cmliLmRpdmlzb3IgPT0gMCkKKyAgICBpZiAoaW5zdGFuY2VzID09IDAgfHwgYmlu
ZGluZy5kaXZpc29yID09IDApCiAgICAgewogICAgICAgICBpbnB1dCArPSBpbnB1dFN0cmlkZSAq
IHN0YXJ0OwogICAgIH0KIAogICAgIGdsOjpWZXJ0ZXhGb3JtYXRUeXBlIHZlcnRleEZvcm1hdFR5
cGUgPSBnbDo6R2V0VmVydGV4Rm9ybWF0VHlwZShhdHRyaWIsIGN1cnJlbnRWYWx1ZVR5cGUpOwot
ICAgIGNvbnN0IEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCA9IG1SZW5kZXJlci0+Z2V0
UmVuZGVyZXIxMURldmljZUNhcHMoKS5mZWF0dXJlTGV2ZWw7Ci0gICAgY29uc3QgZDNkMTE6OlZl
cnRleEZvcm1hdCAmdmVydGV4Rm9ybWF0SW5mbyA9IGQzZDExOjpHZXRWZXJ0ZXhGb3JtYXRJbmZv
KHZlcnRleEZvcm1hdFR5cGUsIGZlYXR1cmVMZXZlbCk7CisgICAgY29uc3QgRDNEX0ZFQVRVUkVf
TEVWRUwgZmVhdHVyZUxldmVsICA9IG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMo
KS5mZWF0dXJlTGV2ZWw7CisgICAgY29uc3QgZDNkMTE6OlZlcnRleEZvcm1hdCAmdmVydGV4Rm9y
bWF0SW5mbyA9CisgICAgICAgIGQzZDExOjpHZXRWZXJ0ZXhGb3JtYXRJbmZvKHZlcnRleEZvcm1h
dFR5cGUsIGZlYXR1cmVMZXZlbCk7CiAgICAgQVNTRVJUKHZlcnRleEZvcm1hdEluZm8uY29weUZ1
bmN0aW9uICE9IE5VTEwpOwogICAgIHZlcnRleEZvcm1hdEluZm8uY29weUZ1bmN0aW9uKGlucHV0
LCBpbnB1dFN0cmlkZSwgY291bnQsIG91dHB1dCk7CiAKQEAgLTE1Myw3ICsxNTgsNyBAQCBnbDo6
RXJyb3IgVmVydGV4QnVmZmVyMTE6OnNldEJ1ZmZlclNpemUodW5zaWduZWQgaW50IHNpemUpCiAg
ICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiB9CiAKQEAgLTE3MCwx
MiArMTc1LDEzIEBAIGdsOjpFcnJvciBWZXJ0ZXhCdWZmZXIxMTo6ZGlzY2FyZCgpCiAgICAgSFJF
U1VMVCByZXN1bHQgPSBkeENvbnRleHQtPk1hcChtQnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVf
RElTQ0FSRCwgMCwgJm1hcHBlZFJlc291cmNlKTsKICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAg
ICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQg
dG8gbWFwIGludGVybmFsIGJ1ZmZlciBmb3IgZGlzY2FyZGluZywgSFJFU1VMVDogMHglMDh4Iiwg
cmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gbWFwIGludGVybmFsIGJ1ZmZlciBmb3Ig
ZGlzY2FyZGluZywgSFJFU1VMVDogMHglMDh4IiwgcmVzdWx0KTsKICAgICB9CiAKICAgICBkeENv
bnRleHQtPlVubWFwKG1CdWZmZXIsIDApOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIElEM0QxMUJ1ZmZlciAqVmVy
dGV4QnVmZmVyMTE6OmdldEJ1ZmZlcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjEx
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL1ZlcnRleEJ1ZmZlcjExLmgKaW5kZXggZTgzMzlkYjQ5MTdhMjI2ZDQ3OTEwODNlMjQyNTMz
NzFhM2E2M2I3My4uMDM4YmE0Mjg0YzQ3ZjU4ZGJmM2EyNjg2ZjE0ODBiZDBmNjgxOGU5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9WZXJ0ZXhCdWZmZXIxMS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4QnVmZmVyMTEuaApAQCAtMjQsNyAr
MjQsMTAgQEAgY2xhc3MgVmVydGV4QnVmZmVyMTEgOiBwdWJsaWMgVmVydGV4QnVmZmVyCiAKICAg
ICBnbDo6RXJyb3IgaW5pdGlhbGl6ZSh1bnNpZ25lZCBpbnQgc2l6ZSwgYm9vbCBkeW5hbWljVXNh
Z2UpIG92ZXJyaWRlOwogCisgICAgLy8gV2FybmluZzogeW91IHNob3VsZCBlbnN1cmUgYmluZGlu
ZyByZWFsbHkgbWF0Y2hlcyBhdHRyaWIuYmluZGluZ0luZGV4IGJlZm9yZSB1c2luZyB0aGlzCisg
ICAgLy8gZnVuY3Rpb24uCiAgICAgZ2w6OkVycm9yIHN0b3JlVmVydGV4QXR0cmlidXRlcyhjb25z
dCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6VmVydGV4QmluZGluZyAmYmluZGluZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjdXJyZW50VmFsdWVUeXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RhcnQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zv
cm1hdF9kYXRhLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL2R4Z2lfZm9ybWF0X2RhdGEuanNvbgppbmRleCA1YjhkNzM1Njg1M2Ex
ZjU0NDBlYjRhYzkzZDJlMGI2NDc4YjQzYjFiLi44OTFkMzBkMjUyOWU2OWI1NmVmNzU5Yjc4ZDhm
YTc3OWQwYjhhY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfZm9ybWF0X2RhdGEuanNvbgorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lf
Zm9ybWF0X2RhdGEuanNvbgpAQCAtNzEsMTMgKzcxLDEzIEBACiAgICAgIkc4UjhfRzhCOF9VTk9S
TSI6ICIiLAogICAgICJCQzFfVFlQRUxFU1MiOiAiIiwKICAgICAiQkMxX1VOT1JNIjogIkJDMV9S
R0JBX1VOT1JNX0JMT0NLIiwKLSAgICAiQkMxX1VOT1JNX1NSR0IiOiAiIiwKKyAgICAiQkMxX1VO
T1JNX1NSR0IiOiAiQkMxX1JHQkFfVU5PUk1fU1JHQl9CTE9DSyIsCiAgICAgIkJDMl9UWVBFTEVT
UyI6ICIiLAogICAgICJCQzJfVU5PUk0iOiAiQkMyX1JHQkFfVU5PUk1fQkxPQ0siLAotICAgICJC
QzJfVU5PUk1fU1JHQiI6ICIiLAorICAgICJCQzJfVU5PUk1fU1JHQiI6ICJCQzJfUkdCQV9VTk9S
TV9TUkdCX0JMT0NLIiwKICAgICAiQkMzX1RZUEVMRVNTIjogIiIsCiAgICAgIkJDM19VTk9STSI6
ICJCQzNfUkdCQV9VTk9STV9CTE9DSyIsCi0gICAgIkJDM19VTk9STV9TUkdCIjogIiIsCisgICAg
IkJDM19VTk9STV9TUkdCIjogIkJDM19SR0JBX1VOT1JNX1NSR0JfQkxPQ0siLAogICAgICJCQzRf
VFlQRUxFU1MiOiAiIiwKICAgICAiQkM0X1VOT1JNIjogIiIsCiAgICAgIkJDNF9TTk9STSI6ICIi
LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9keGdpX2Zvcm1hdF9tYXBfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfZm9ybWF0X21h
cF9hdXRvZ2VuLmNwcAppbmRleCA2NjYxMGNhYzk5YjliOGEzZjUzOTU4NjBlNmY3MjE1MGRiM2Y5
OTFmLi4wMjUxM2NmMmY5NWUwYThiYWNhZWVmZGU1MGRjZmRjOGUyNWM2YWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L2R4Z2lfZm9ybWF0X21hcF9hdXRvZ2VuLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfZm9ybWF0X21hcF9hdXRvZ2Vu
LmNwcApAQCAtMzA0LDE5ICszMDQsMTkgQEAgY29uc3QgRm9ybWF0ICZHZXRGb3JtYXQoRFhHSV9G
T1JNQVQgZHhnaUZvcm1hdCkKICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk06CiAg
ICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6QkMxX1JHQkFfVU5PUk1f
QkxPQ0spOwogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDMV9VTk9STV9TUkdCOgotICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0OjpJRDo6
QkMxX1JHQkFfVU5PUk1fU1JHQl9CTE9DSyk7CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMy
X1RZUEVMRVNTOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRf
QkMyX1VOT1JNOgogICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OkJD
Ml9SR0JBX1VOT1JNX0JMT0NLKTsKICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk1f
U1JHQjoKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcmV0dXJuIEZvcm1hdDo6R2V0
KEZvcm1hdDo6SUQ6OkJDMl9SR0JBX1VOT1JNX1NSR0JfQkxPQ0spOwogICAgICAgICBjYXNlIERY
R0lfRk9STUFUX0JDM19UWVBFTEVTUzoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IERYR0lfRk9STUFUX0JDM19VTk9STToKICAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChG
b3JtYXQ6OklEOjpCQzNfUkdCQV9VTk9STV9CTE9DSyk7CiAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfQkMzX1VOT1JNX1NSR0I6Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHJldHVy
biBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpCQzNfUkdCQV9VTk9STV9TUkdCX0JMT0NLKTsKICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfU05PUk06CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfVFlQRUxFU1M6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3Vw
cG9ydF9kYXRhLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF9kYXRhLmpzb24KaW5kZXggZGNlMDk5N2Q5NTQ0
NTBiMzQ2MWZkMDRhMjU0MzEzYzk1OThiMjY1Yi4uOTQyNzQ1Njc0ZjA3YWM4MDM1ZmE0YTk1MGE4
ZDE5ZjRkMDBmYzA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX3N1cHBvcnRfZGF0YS5qc29uCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhn
aV9zdXBwb3J0X2RhdGEuanNvbgpAQCAtNzk2LDcgKzc5Niw3IEBACiAgICAgICAidGV4dHVyZTJE
IjogImFsd2F5cyIsCiAgICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCiAgICAgICAidGV4dHVy
ZUN1YmUiOiAiYWx3YXlzIiwKLSAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCisgICAgICAi
c2hhZGVyU2FtcGxlIjogImFsd2F5cyIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwK
ICAgICAgICJtdWx0aXNhbXBsZVJUIjogIm5ldmVyIiwKICAgICAgICJkZXB0aFN0ZW5jaWwiOiAi
bmV2ZXIiLApAQCAtODI5LDcgKzgyOSw3IEBACiAgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIs
CiAgICAgICAidGV4dHVyZTNEIjogImFsd2F5cyIsCiAgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3
YXlzIiwKLSAgICAgICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCisgICAgICAic2hhZGVyU2FtcGxl
IjogImFsd2F5cyIsCiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0
aXNhbXBsZVJUIjogIm5ldmVyIiwKICAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLApAQCAt
ODYyLDcgKzg2Miw3IEBACiAgICAgICAidGV4dHVyZTJEIjogImFsd2F5cyIsCiAgICAgICAidGV4
dHVyZTNEIjogImFsd2F5cyIsCiAgICAgICAidGV4dHVyZUN1YmUiOiAiYWx3YXlzIiwKLSAgICAg
ICJzaGFkZXJTYW1wbGUiOiAiMTBfMCIsCisgICAgICAic2hhZGVyU2FtcGxlIjogImFsd2F5cyIs
CiAgICAgICAicmVuZGVyVGFyZ2V0IjogIm5ldmVyIiwKICAgICAgICJtdWx0aXNhbXBsZVJUIjog
Im5ldmVyIiwKICAgICAgICJkZXB0aFN0ZW5jaWwiOiAibmV2ZXIiLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdp
X3N1cHBvcnRfdGFibGUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX3N1cHBvcnRfdGFibGUuY3BwCmluZGV4IGQyMDJjZTEz
MDczMDg3NGYxOWJjNGQxM2RkOGMxMTZiNGMxNTczMzQuLjI4MTZhMjRmODZlNjQxNWQ1N2FjNmJj
OTg4ZGI2MTc5ODk5ZWU3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L2R4Z2lfc3VwcG9ydF90YWJsZS5jcHAKQEAgLTEyOSw3ICsxMjksNyBAQCBjb25zdCBEWEdJU3Vw
cG9ydCAmR2V0RFhHSVN1cHBvcnRfOV8zKERYR0lfRk9STUFUIGR4Z2lGb3JtYXQpCiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzFfVU5PUk1fU1JHQjoKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBG
X0NVQkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1Q
TEUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVy
biBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1RZUEVMRVNT
OgpAQCAtMTQ0LDcgKzE0NCw3IEBAIGNvbnN0IERYR0lTdXBwb3J0ICZHZXREWEdJU3VwcG9ydF85
XzMoRFhHSV9GT1JNQVQgZHhnaUZvcm1hdCkKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX0JDMl9VTk9STV9TUkdCOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VO
IHwgRl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0
IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwg
Rl9NUyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzNfVFlQRUxFU1M6CkBAIC0xNTksNyArMTU5LDcgQEAg
Y29uc3QgRFhHSVN1cHBvcnQgJkdldERYR0lTdXBwb3J0XzlfMyhEWEdJX0ZPUk1BVCBkeGdpRm9y
bWF0KQogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNX1NSR0I6
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZf
MkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZf
Q1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7CiAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9STUFU
X0JDNF9TTk9STToKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxzMTEu
Y3BwCmluZGV4IDlhNmNlZDQ1ODU1MzIzYWI0MmFhOTQ4NTc4ODFjZGRlNTJhNWY5MDQuLjY5NWFk
NDY4ZDJkZjhhNjE3MjIwMmYxZThhOTdiNGYxMjcyYTI3OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRp
bHMxMS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczExLmNwcApAQCAtMTk5LDExNyArMTk5LDIxNCBAQCBj
b25zdCBEWEdJRm9ybWF0U2l6ZSAmR2V0RFhHSUZvcm1hdFNpemVJbmZvKERYR0lfRk9STUFUIGZv
cm1hdCkKICAgICB9CiB9CiAKLXR5cGVkZWYgc3RkOjptYXA8Z2w6OlZlcnRleEZvcm1hdFR5cGUs
IFZlcnRleEZvcm1hdD4gRDNEMTFWZXJ0ZXhGb3JtYXRJbmZvTWFwOwotdHlwZWRlZiBzdGQ6OnBh
aXI8Z2w6OlZlcnRleEZvcm1hdFR5cGUsIFZlcnRleEZvcm1hdD4gRDNEMTFWZXJ0ZXhGb3JtYXRQ
YWlyOwotCi1WZXJ0ZXhGb3JtYXQ6OlZlcnRleEZvcm1hdCgpCi0gICAgOiBjb252ZXJzaW9uVHlw
ZShWRVJURVhfQ09OVkVSVF9OT05FKSwKLSAgICAgIG5hdGl2ZUZvcm1hdChEWEdJX0ZPUk1BVF9V
TktOT1dOKSwKLSAgICAgIGNvcHlGdW5jdGlvbihOVUxMKQorY29uc3RleHByIFZlcnRleEZvcm1h
dDo6VmVydGV4Rm9ybWF0KCkKKyAgICA6IGNvbnZlcnNpb25UeXBlKFZFUlRFWF9DT05WRVJUX05P
TkUpLCBuYXRpdmVGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksIGNvcHlGdW5jdGlvbihOVUxM
KQogewogfQogCi1WZXJ0ZXhGb3JtYXQ6OlZlcnRleEZvcm1hdChWZXJ0ZXhDb252ZXJzaW9uVHlw
ZSBjb252ZXJzaW9uVHlwZUluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVQgbmF0aXZlRm9ybWF0SW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhDb3B5
RnVuY3Rpb24gY29weUZ1bmN0aW9uSW4pCi0gICAgOiBjb252ZXJzaW9uVHlwZShjb252ZXJzaW9u
VHlwZUluKSwKLSAgICAgIG5hdGl2ZUZvcm1hdChuYXRpdmVGb3JtYXRJbiksCi0gICAgICBjb3B5
RnVuY3Rpb24oY29weUZ1bmN0aW9uSW4pCitjb25zdGV4cHIgVmVydGV4Rm9ybWF0OjpWZXJ0ZXhG
b3JtYXQoVmVydGV4Q29udmVyc2lvblR5cGUgY29udmVyc2lvblR5cGVJbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBuYXRpdmVGb3JtYXRJbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhDb3B5RnVuY3Rpb24gY29w
eUZ1bmN0aW9uSW4pCisgICAgOiBjb252ZXJzaW9uVHlwZShjb252ZXJzaW9uVHlwZUluKSwgbmF0
aXZlRm9ybWF0KG5hdGl2ZUZvcm1hdEluKSwgY29weUZ1bmN0aW9uKGNvcHlGdW5jdGlvbkluKQog
ewogfQogCi1zdGF0aWMgdm9pZCBBZGRWZXJ0ZXhGb3JtYXRJbmZvKEQzRDExVmVydGV4Rm9ybWF0
SW5mb01hcCAqbWFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW5w
dXRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9ybWFs
aXplZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGNvbXBvbmVudENv
dW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhDb252ZXJzaW9uVHlw
ZSBjb252ZXJzaW9uVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVQgbmF0aXZlRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0
ZXhDb3B5RnVuY3Rpb24gY29weUZ1bmN0aW9uKQorY29uc3QgVmVydGV4Rm9ybWF0ICpHZXRWZXJ0
ZXhGb3JtYXRJbmZvX0ZMXzlfMyhnbDo6VmVydGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBl
KQogewotICAgIGdsOjpWZXJ0ZXhGb3JtYXRUeXBlIGZvcm1hdFR5cGUgPSBnbDo6R2V0VmVydGV4
Rm9ybWF0VHlwZShpbnB1dFR5cGUsIG5vcm1hbGl6ZWQsIGNvbXBvbmVudENvdW50LCBmYWxzZSk7
CisgICAgLy8gRDNEMTEgRmVhdHVyZSBMZXZlbCA5XzMgZG9lc24ndCBzdXBwb3J0IGFzIG1hbnkg
Zm9ybWF0cyBmb3IgdmVydGV4IGJ1ZmZlciByZXNvdXJjZSBhcyBGZWF0dXJlCisgICAgLy8gTGV2
ZWwgMTBfMCsuCisgICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5
L3dpbmRvd3MvZGVza3RvcC9mZjQ3MTMyNCh2PXZzLjg1KS5hc3B4CiAKLSAgICBWZXJ0ZXhGb3Jt
YXQgaW5mbzsKLSAgICBpbmZvLmNvbnZlcnNpb25UeXBlID0gY29udmVyc2lvblR5cGU7Ci0gICAg
aW5mby5uYXRpdmVGb3JtYXQgPSBuYXRpdmVGb3JtYXQ7Ci0gICAgaW5mby5jb3B5RnVuY3Rpb24g
PSBjb3B5RnVuY3Rpb247CisgICAgc3dpdGNoICh2ZXJ0ZXhGb3JtYXRUeXBlKQorICAgIHsKKyAg
ICAgICAgLy8gR0xfQllURSAtLSB1bm5vcm1hbGl6ZWQKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVY
X0ZPUk1BVF9TQllURTE6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
VmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQk9USCwgRFhHSV9GT1JNQVRfUjE2RzE2
X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZD
b3B5OFNpbnRUbzE2U2ludFZlcnRleERhdGE8MSwgMj4pOworICAgICAgICAgICAgcmV0dXJuICZp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZVEUyOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZv
KFZFUlRFWF9DT05WRVJUX0JPVEgsIERYR0lfRk9STUFUX1IxNkcxNl9TSU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weThTaW50VG8xNlNpbnRW
ZXJ0ZXhEYXRhPDIsIDI+KTsKKyAgICAgICAgICAgIHJldHVybiAmaW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NCWVRFMzoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9C
T1RILCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHk4U2ludFRvMTZTaW50VmVydGV4RGF0YTwz
LCA0Pik7CisgICAgICAgICAgICByZXR1cm4gJmluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBnbDo6VkVSVEVYX0ZPUk1BVF9TQllURTQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQk9USCwgRFhHSV9G
T1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZDb3B5OFNpbnRUbzE2U2ludFZlcnRleERhdGE8NCwgND4pOworICAg
ICAgICAgICAgcmV0dXJuICZpbmZvOworICAgICAgICB9CiAKLSAgICBtYXAtPmluc2VydChEM0Qx
MVZlcnRleEZvcm1hdFBhaXIoZm9ybWF0VHlwZSwgaW5mbykpOwotfQorICAgICAgICAvLyBHTF9C
WVRFIC0tIG5vcm1hbGl6ZWQKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TQllURTFf
Tk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3Jt
YXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IxNkcxNl9TTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHk4U25vcm1U
bzE2U25vcm1WZXJ0ZXhEYXRhPDEsIDI+KTsKKyAgICAgICAgICAgIHJldHVybiAmaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NCWVRFMl9OT1JNOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZF
UlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjE2RzE2X1NOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weThTbm9ybVRvMTZTbm9ybVZl
cnRleERhdGE8MiwgMj4pOworICAgICAgICAgICAgcmV0dXJuICZpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZVEUzX05PUk06CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZF
UlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5OFNub3JtVG8xNlNub3JtVmVydGV4
RGF0YTwzLCA0Pik7CisgICAgICAgICAgICByZXR1cm4gJmluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TQllURTRfTk9STToKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9D
UFUsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHk4U25vcm1UbzE2U25vcm1WZXJ0ZXhEYXRh
PDQsIDQ+KTsKKyAgICAgICAgICAgIHJldHVybiAmaW5mbzsKKyAgICAgICAgfQogCi1zdGF0aWMg
RDNEMTFWZXJ0ZXhGb3JtYXRJbmZvTWFwIEJ1aWxkRDNEMTFfRkw5XzNWZXJ0ZXhGb3JtYXRJbmZv
T3ZlcnJpZGVNYXAoKQotewotICAgIC8vIEQzRDExIEZlYXR1cmUgTGV2ZWwgOV8zIGRvZXNuJ3Qg
c3VwcG9ydCBhcyBtYW55IGZvcm1hdHMgZm9yIHZlcnRleCBidWZmZXIgcmVzb3VyY2UgYXMgRmVh
dHVyZSBMZXZlbCAxMF8wKy4KLSAgICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVz
L2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmNDcxMzI0KHY9dnMuODUpLmFzcHgKKyAgICAgICAg
Ly8gR0xfVU5TSUdORURfQllURSAtLSB1bi1ub3JtYWxpemVkCisgICAgICAgIC8vIE5PVEU6IDMg
YW5kIDQgY29tcG9uZW50IHVubm9ybWFsaXplZCBHTF9VTlNJR05FRF9CWVRFIHNob3VsZCB1c2Ug
dGhlIGRlZmF1bHQgZm9ybWF0CisgICAgICAgIC8vIHRhYmxlLgorICAgICAgICBjYXNlIGdsOjpW
RVJURVhfRk9STUFUX1VCWVRFMToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9CT1RILCBEWEdJX0ZPUk1BVF9S
OEc4QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1Ynl0ZSwgMSwgNCwgMT4pOworICAgICAgICAg
ICAgcmV0dXJuICZpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JN
QVRfVUJZVEUyOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRl
eEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0JPVEgsIERYR0lfRk9STUFUX1I4RzhCOEE4X1VJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5
TmF0aXZlVmVydGV4RGF0YTxHTHVieXRlLCAyLCA0LCAxPik7CisgICAgICAgICAgICByZXR1cm4g
JmluZm87CisgICAgICAgIH0KKworICAgICAgICAvLyBHTF9VTlNJR05FRF9CWVRFIC0tIG5vcm1h
bGl6ZWQKKyAgICAgICAgLy8gTk9URTogMyBhbmQgNCBjb21wb25lbnQgbm9ybWFsaXplZCBHTF9V
TlNJR05FRF9CWVRFIHNob3VsZCB1c2UgdGhlIGRlZmF1bHQgZm9ybWF0IHRhYmxlLgorCisgICAg
ICAgIC8vIEdMX1VOU0lHTkVEX0JZVEUgLS0gbm9ybWFsaXplZAorICAgICAgICBjYXNlIGdsOjpW
RVJURVhfRk9STUFUX1VCWVRFMV9OT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVieXRlLCAxLCA0LCBVSU5UOF9NQVg+
KTsKKyAgICAgICAgICAgIHJldHVybiAmaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIGds
OjpWRVJURVhfRk9STUFUX1VCWVRFMl9OT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVieXRlLCAyLCA0LCBVSU5UOF9N
QVg+KTsKKyAgICAgICAgICAgIHJldHVybiAmaW5mbzsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IEdMX1NIT1JUIC0tIHVuLW5vcm1hbGl6ZWQKKyAgICAgICAgLy8gTk9URTogMiwgMyBhbmQgNCBj
b21wb25lbnQgdW5ub3JtYWxpemVkIEdMX1NIT1JUIHNob3VsZCB1c2UgdGhlIGRlZmF1bHQgZm9y
bWF0IHRhYmxlLgorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NTSE9SVDE6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVS
VEVYX0NPTlZFUlRfQk9USCwgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxH
THNob3J0LCAxLCAyLCAwPik7CisgICAgICAgICAgICByZXR1cm4gJmluZm87CisgICAgICAgIH0K
KworICAgICAgICAvLyBHTF9TSE9SVCAtLSBub3JtYWxpemVkCisgICAgICAgIC8vIE5PVEU6IDIs
IDMgYW5kIDQgY29tcG9uZW50IG5vcm1hbGl6ZWQgR0xfU0hPUlQgc2hvdWxkIHVzZSB0aGUgZGVm
YXVsdCBmb3JtYXQgdGFibGUuCisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU1NIT1JU
MV9OT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZv
cm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjE2RzE2X1NOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2
ZVZlcnRleERhdGE8R0xzaG9ydCwgMSwgMiwgMD4pOworICAgICAgICAgICAgcmV0dXJuICZpbmZv
OworICAgICAgICB9CisKKyAgICAgICAgLy8gR0xfVU5TSUdORURfU0hPUlQgLS0gdW4tbm9ybWFs
aXplZAorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDE6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NP
TlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMdXNob3J0
LCAxLCAyLCBmYWxzZT4pOworICAgICAgICAgICAgcmV0dXJuICZpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVVNIT1JUMjoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9D
UFUsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJkNvcHlUbzMyRlZlcnRleERhdGE8R0x1c2hvcnQsIDIsIDIs
IGZhbHNlPik7CisgICAgICAgICAgICByZXR1cm4gJmluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VU0hPUlQzOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhH
SV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmQ29weVRvMzJGVmVydGV4RGF0YTxHTHVzaG9ydCwgMywgMywgZmFs
c2U+KTsKKyAgICAgICAgICAgIHJldHVybiAmaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZP
Uk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMdXNob3J0LCA0LCA0LCBmYWxz
ZT4pOworICAgICAgICAgICAgcmV0dXJuICZpbmZvOworICAgICAgICB9CisKKyAgICAgICAgLy8g
R0xfVU5TSUdORURfU0hPUlQgLS0gbm9ybWFsaXplZAorICAgICAgICBjYXNlIGdsOjpWRVJURVhf
Rk9STUFUX1VTSE9SVDFfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1Iz
MkczMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJkNvcHlUbzMyRlZlcnRleERhdGE8R0x1c2hvcnQsIDEsIDIsIHRydWU+KTsKKyAgICAgICAg
ICAgIHJldHVybiAmaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9S
TUFUX1VTSE9SVDJfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkcz
Ml9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JkNvcHlUbzMyRlZlcnRleERhdGE8R0x1c2hvcnQsIDIsIDIsIHRydWU+KTsKKyAgICAgICAgICAg
IHJldHVybiAmaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFU
X1VTSE9SVDNfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBW
ZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMkIz
Ml9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JkNvcHlUbzMyRlZlcnRleERhdGE8R0x1c2hvcnQsIDMsIDMsIHRydWU+KTsKKyAgICAgICAgICAg
IHJldHVybiAmaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFU
X1VTSE9SVDRfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBW
ZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJkNvcHlUbzMyRlZlcnRleERhdGE8R0x1c2hvcnQsIDQsIDQsIHRydWU+KTsKKyAgICAgICAg
ICAgIHJldHVybiAmaW5mbzsKKyAgICAgICAgfQogCi0gICAgRDNEMTFWZXJ0ZXhGb3JtYXRJbmZv
TWFwIG1hcDsKLQotICAgIC8vIEdMX0JZVEUgLS0gdW5ub3JtYWxpemVkCi0gICAgQWRkVmVydGV4
Rm9ybWF0SW5mbygmbWFwLCBHTF9CWVRFLCAgICAgICAgICAgR0xfRkFMU0UsICAxLCAgVkVSVEVY
X0NPTlZFUlRfQk9USCwgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsICAgICAgICAgJkNvcHk4
U2ludFRvMTZTaW50VmVydGV4RGF0YTwxLCAyPik7Ci0gICAgQWRkVmVydGV4Rm9ybWF0SW5mbygm
bWFwLCBHTF9CWVRFLCAgICAgICAgICAgR0xfRkFMU0UsICAyLCAgVkVSVEVYX0NPTlZFUlRfQk9U
SCwgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsICAgICAgICAgJkNvcHk4U2ludFRvMTZTaW50
VmVydGV4RGF0YTwyLCAyPik7Ci0gICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9CWVRF
LCAgICAgICAgICAgR0xfRkFMU0UsICAzLCAgVkVSVEVYX0NPTlZFUlRfQk9USCwgICAgRFhHSV9G
T1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsICAgJkNvcHk4U2ludFRvMTZTaW50VmVydGV4RGF0YTwz
LCA0Pik7Ci0gICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9CWVRFLCAgICAgICAgICAg
R0xfRkFMU0UsICA0LCAgVkVSVEVYX0NPTlZFUlRfQk9USCwgICAgRFhHSV9GT1JNQVRfUjE2RzE2
QjE2QTE2X1NJTlQsICAgJkNvcHk4U2ludFRvMTZTaW50VmVydGV4RGF0YTw0LCA0Pik7Ci0KLSAg
ICAvLyBHTF9CWVRFIC0tIG5vcm1hbGl6ZWQKLSAgICBBZGRWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAs
IEdMX0JZVEUsICAgICAgICAgICBHTF9UUlVFLCAgIDEsICBWRVJURVhfQ09OVkVSVF9DUFUsICAg
ICBEWEdJX0ZPUk1BVF9SMTZHMTZfU05PUk0sICAgICAgICAmQ29weThTbm9ybVRvMTZTbm9ybVZl
cnRleERhdGE8MSwgMj4pOwotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfQllURSwg
ICAgICAgICAgIEdMX1RSVUUsICAgMiwgIFZFUlRFWF9DT05WRVJUX0NQVSwgICAgIERYR0lfRk9S
TUFUX1IxNkcxNl9TTk9STSwgICAgICAgICZDb3B5OFNub3JtVG8xNlNub3JtVmVydGV4RGF0YTwy
LCAyPik7Ci0gICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9CWVRFLCAgICAgICAgICAg
R0xfVFJVRSwgICAzLCAgVkVSVEVYX0NPTlZFUlRfQ1BVLCAgICAgRFhHSV9GT1JNQVRfUjE2RzE2
QjE2QTE2X1NOT1JNLCAgJkNvcHk4U25vcm1UbzE2U25vcm1WZXJ0ZXhEYXRhPDMsIDQ+KTsKLSAg
ICBBZGRWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX0JZVEUsICAgICAgICAgICBHTF9UUlVFLCAg
IDQsICBWRVJURVhfQ09OVkVSVF9DUFUsICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05P
Uk0sICAmQ29weThTbm9ybVRvMTZTbm9ybVZlcnRleERhdGE8NCwgND4pOwotCi0gICAgLy8gR0xf
VU5TSUdORURfQllURSAtLSB1bm5vcm1hbGl6ZWQKLSAgICBBZGRWZXJ0ZXhGb3JtYXRJbmZvKCZt
YXAsIEdMX1VOU0lHTkVEX0JZVEUsICBHTF9GQUxTRSwgIDEsICBWRVJURVhfQ09OVkVSVF9CT1RI
LCAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULCAgICAgICAmQ29weU5hdGl2ZVZlcnRleERh
dGE8R0x1Ynl0ZSwgMSwgNCwgMT4pOwotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xf
VU5TSUdORURfQllURSwgIEdMX0ZBTFNFLCAgMiwgIFZFUlRFWF9DT05WRVJUX0JPVEgsICAgIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VJTlQsICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVi
eXRlLCAyLCA0LCAxPik7Ci0gICAgLy8gTk9URTogMyBhbmQgNCBjb21wb25lbnQgdW5ub3JtYWxp
emVkIEdMX1VOU0lHTkVEX0JZVEUgc2hvdWxkIHVzZSB0aGUgZGVmYXVsdCBmb3JtYXQgdGFibGUu
Ci0KLSAgICAvLyBHTF9VTlNJR05FRF9CWVRFIC0tIG5vcm1hbGl6ZWQKLSAgICBBZGRWZXJ0ZXhG
b3JtYXRJbmZvKCZtYXAsIEdMX1VOU0lHTkVEX0JZVEUsICBHTF9UUlVFLCAgIDEsICBWRVJURVhf
Q09OVkVSVF9DUFUsICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwgICAgICAmQ29weU5h
dGl2ZVZlcnRleERhdGE8R0x1Ynl0ZSwgMSwgNCwgVUlOVDhfTUFYPik7Ci0gICAgQWRkVmVydGV4
Rm9ybWF0SW5mbygmbWFwLCBHTF9VTlNJR05FRF9CWVRFLCAgR0xfVFJVRSwgICAyLCAgVkVSVEVY
X0NPTlZFUlRfQ1BVLCAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sICAgICAgJkNvcHlO
YXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDIsIDQsIFVJTlQ4X01BWD4pOwotICAgIC8vIE5PVEU6
IDMgYW5kIDQgY29tcG9uZW50IG5vcm1hbGl6ZWQgR0xfVU5TSUdORURfQllURSBzaG91bGQgdXNl
IHRoZSBkZWZhdWx0IGZvcm1hdCB0YWJsZS4KLQotICAgIC8vIEdMX1NIT1JUIC0tIHVubm9ybWFs
aXplZAotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfU0hPUlQsICAgICAgICAgIEdM
X0ZBTFNFLCAgMSwgIFZFUlRFWF9DT05WRVJUX0JPVEgsICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZf
U0lOVCwgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHNob3J0LCAxLCAyLCAwPik7Ci0g
ICAgLy8gTk9URTogMiwgMyBhbmQgNCBjb21wb25lbnQgdW5ub3JtYWxpemVkIEdMX1NIT1JUIHNo
b3VsZCB1c2UgdGhlIGRlZmF1bHQgZm9ybWF0IHRhYmxlLgotCi0gICAgLy8gR0xfU0hPUlQgLS0g
bm9ybWFsaXplZAotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfU0hPUlQsICAgICAg
ICAgIEdMX1RSVUUsICAgMSwgIFZFUlRFWF9DT05WRVJUX0NQVSwgICAgIERYR0lfRk9STUFUX1Ix
NkcxNl9TTk9STSwgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHNob3J0LCAxLCAyLCAw
Pik7Ci0gICAgLy8gTk9URTogMiwgMyBhbmQgNCBjb21wb25lbnQgbm9ybWFsaXplZCBHTF9TSE9S
VCBzaG91bGQgdXNlIHRoZSBkZWZhdWx0IGZvcm1hdCB0YWJsZS4KLQotICAgIC8vIEdMX1VOU0lH
TkVEX1NIT1JUIC0tIHVubm9ybWFsaXplZAotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwg
R0xfVU5TSUdORURfU0hPUlQsIEdMX0ZBTFNFLCAgMSwgIFZFUlRFWF9DT05WRVJUX0NQVSwgICAg
IERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgICAgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdM
dXNob3J0LCAxLCAyLCBmYWxzZT4pOwotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xf
VU5TSUdORURfU0hPUlQsIEdMX0ZBTFNFLCAgMiwgIFZFUlRFWF9DT05WRVJUX0NQVSwgICAgIERY
R0lfRk9STUFUX1IzMkczMl9GTE9BVCwgICAgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMdXNo
b3J0LCAyLCAyLCBmYWxzZT4pOwotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfVU5T
SUdORURfU0hPUlQsIEdMX0ZBTFNFLCAgMywgIFZFUlRFWF9DT05WRVJUX0NQVSwgICAgIERYR0lf
Rk9STUFUX1IzMkczMkIzMl9GTE9BVCwgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMdXNob3J0
LCAzLCAzLCBmYWxzZT4pOwotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfVU5TSUdO
RURfU0hPUlQsIEdMX0ZBTFNFLCAgNCwgIFZFUlRFWF9DT05WRVJUX0NQVSwgICAgIERYR0lfRk9S
TUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMdXNob3J0LCA0
LCA0LCBmYWxzZT4pOwotCi0gICAgLy8gR0xfVU5TSUdORURfU0hPUlQgLS0gbm9ybWFsaXplZAot
ICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfVU5TSUdORURfU0hPUlQsIEdMX1RSVUUs
ICAgMSwgIFZFUlRFWF9DT05WRVJUX0NQVSwgICAgIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwg
ICAgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMdXNob3J0LCAxLCAyLCB0cnVlPik7Ci0gICAg
QWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9VTlNJR05FRF9TSE9SVCwgR0xfVFJVRSwgICAy
LCAgVkVSVEVYX0NPTlZFUlRfQ1BVLCAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULCAgICAg
ICAgJkNvcHlUbzMyRlZlcnRleERhdGE8R0x1c2hvcnQsIDIsIDIsIHRydWU+KTsKLSAgICBBZGRW
ZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX1VOU0lHTkVEX1NIT1JULCBHTF9UUlVFLCAgIDMsICBW
RVJURVhfQ09OVkVSVF9DUFUsICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsICAgICAm
Q29weVRvMzJGVmVydGV4RGF0YTxHTHVzaG9ydCwgMywgMywgdHJ1ZT4pOwotICAgIEFkZFZlcnRl
eEZvcm1hdEluZm8oJm1hcCwgR0xfVU5TSUdORURfU0hPUlQsIEdMX1RSVUUsICAgNCwgIFZFUlRF
WF9DT05WRVJUX0NQVSwgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgICZDb3B5
VG8zMkZWZXJ0ZXhEYXRhPEdMdXNob3J0LCA0LCA0LCB0cnVlPik7Ci0KLSAgICAvLyBHTF9GSVhF
RAotICAgIC8vIFRPRE86IEFkZCB0ZXN0IHRvIHZlcmlmeSB0aGF0IHRoaXMgd29ya3MgY29ycmVj
dGx5LgotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfRklYRUQsICAgICAgICAgIEdM
X0ZBTFNFLCAgMSwgVkVSVEVYX0NPTlZFUlRfQ1BVLCAgICAgIERYR0lfRk9STUFUX1IzMkczMl9G
TE9BVCwgICAgICAgICZDb3B5MzJGaXhlZFRvMzJGVmVydGV4RGF0YTwxLCAyPik7Ci0gICAgLy8g
Tk9URTogMiwgMyBhbmQgNCBjb21wb25lbnQgR0xfRklYRUQgc2hvdWxkIHVzZSB0aGUgZGVmYXVs
dCBmb3JtYXQgdGFibGUuCi0KLSAgICAvLyBHTF9GTE9BVAotICAgIC8vIFRPRE86IEFkZCB0ZXN0
IHRvIHZlcmlmeSB0aGF0IHRoaXMgd29ya3MgY29ycmVjdGx5LgotICAgIEFkZFZlcnRleEZvcm1h
dEluZm8oJm1hcCwgR0xfRkxPQVQsICAgICAgICAgIEdMX0ZBTFNFLCAgMSwgVkVSVEVYX0NPTlZF
UlRfQ1BVLCAgICAgIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgICAgICAgICZDb3B5TmF0aXZl
VmVydGV4RGF0YTxHTGZsb2F0LCAxLCAyLCAwPik7Ci0gICAgLy8gTk9URTogMiwgMyBhbmQgNCBj
b21wb25lbnQgR0xfRkxPQVQgc2hvdWxkIHVzZSB0aGUgZGVmYXVsdCBmb3JtYXQgdGFibGUuCi0K
LSAgICByZXR1cm4gbWFwOworICAgICAgICAvLyBHTF9GSVhFRAorICAgICAgICAvLyBUT0RPOiBB
ZGQgdGVzdCB0byB2ZXJpZnkgdGhhdCB0aGlzIHdvcmtzIGNvcnJlY3RseS4KKyAgICAgICAgLy8g
Tk9URTogMiwgMyBhbmQgNCBjb21wb25lbnQgR0xfRklYRUQgc2hvdWxkIHVzZSB0aGUgZGVmYXVs
dCBmb3JtYXQgdGFibGUuCisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfRklYRUQxOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZv
KFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weTMyRml4ZWRUbzMyRlZl
cnRleERhdGE8MSwgMj4pOworICAgICAgICAgICAgcmV0dXJuICZpbmZvOworICAgICAgICB9CisK
KyAgICAgICAgLy8gR0xfRkxPQVQKKyAgICAgICAgLy8gVE9ETzogQWRkIHRlc3QgdG8gdmVyaWZ5
IHRoYXQgdGhpcyB3b3JrcyBjb3JyZWN0bHkuCisgICAgICAgIC8vIE5PVEU6IDIsIDMgYW5kIDQg
Y29tcG9uZW50IEdMX0ZMT0FUIHNob3VsZCB1c2UgdGhlIGRlZmF1bHQgZm9ybWF0IHRhYmxlLgor
ICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX0ZMT0FUMToKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9D
UFUsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMZmxvYXQsIDEsIDIs
IDA+KTsKKyAgICAgICAgICAgIHJldHVybiAmaW5mbzsKKyAgICAgICAgfQorCisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CiB9CiAKIGNvbnN0IFZl
cnRleEZvcm1hdCAmR2V0VmVydGV4Rm9ybWF0SW5mbyhnbDo6VmVydGV4Rm9ybWF0VHlwZSB2ZXJ0
ZXhGb3JtYXRUeXBlLCBEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCiB7CiAgICAgaWYg
KGZlYXR1cmVMZXZlbCA9PSBEM0RfRkVBVFVSRV9MRVZFTF85XzMpCiAgICAgewotICAgICAgICBz
dGF0aWMgY29uc3QgRDNEMTFWZXJ0ZXhGb3JtYXRJbmZvTWFwIHZlcnRleEZvcm1hdE1hcEZMOV8z
T3ZlcnJpZGUgPQotICAgICAgICAgICAgQnVpbGREM0QxMV9GTDlfM1ZlcnRleEZvcm1hdEluZm9P
dmVycmlkZU1hcCgpOwotCi0gICAgICAgIC8vIEZpcnN0IHNlZSBpZiB0aGUgZm9ybWF0IGhhcyBh
IHNwZWNpYWwgbWFwcGluZyBmb3IgRkw5XzMKLSAgICAgICAgYXV0byBpdGVyID0gdmVydGV4Rm9y
bWF0TWFwRkw5XzNPdmVycmlkZS5maW5kKHZlcnRleEZvcm1hdFR5cGUpOwotICAgICAgICBpZiAo
aXRlciAhPSB2ZXJ0ZXhGb3JtYXRNYXBGTDlfM092ZXJyaWRlLmVuZCgpKQorICAgICAgICBjb25z
dCBWZXJ0ZXhGb3JtYXQgKnJlc3VsdCA9IEdldFZlcnRleEZvcm1hdEluZm9fRkxfOV8zKHZlcnRl
eEZvcm1hdFR5cGUpOworICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gaXRlci0+c2Vjb25kOworICAgICAgICAgICAgcmV0dXJuICpyZXN1bHQ7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTMyMiwzNTcgKzQxOSw0MTggQEAgY29uc3QgVmVydGV4Rm9ybWF0
ICZHZXRWZXJ0ZXhGb3JtYXRJbmZvKGdsOjpWZXJ0ZXhGb3JtYXRUeXBlIHZlcnRleEZvcm1hdFR5
cGUsIEQKICAgICAgICAgLy8gR0xfQllURSAtLSB1bi1ub3JtYWxpemVkCiAgICAgICAgIGNhc2Ug
Z2w6OlZFUlRFWF9GT1JNQVRfU0JZVEUxOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1BVF9S
OF9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRlLCAxLCAxLCAwPik7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0dQ
VSwgRFhHSV9GT1JNQVRfUjhfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgMSwgMSwgMD4pOwog
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVS
VEVYX0ZPUk1BVF9TQllURTI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBW
ZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1I4RzhfU0lO
VCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgMiwgMiwgMD4pOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERY
R0lfRk9STUFUX1I4RzhfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgMiwgMiwgMD4pOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVY
X0ZPUk1BVF9TQllURTM6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0
ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9CT1RILCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9T
SU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRlLCAzLCA0LCAxPik7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0JPVEgs
IERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGJ5dGUsIDMsIDQsIDE+
KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6
OlZFUlRFWF9GT1JNQVRfU0JZVEU0OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRlLCA0LCA0LCAwPik7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJU
X0dQVSwgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgNCwg
NCwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KIAogICAgICAgICAv
LyBHTF9CWVRFIC0tIG5vcm1hbGl6ZWQKICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9T
QllURTFfTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZv
cm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1I4X1NOT1JNLCAmQ29w
eU5hdGl2ZVZlcnRleERhdGE8R0xieXRlLCAxLCAxLCAwPik7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9S
TUFUX1I4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRlLCAxLCAxLCAwPik7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFU
X1NCWVRFMl9OT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4
Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjhHOF9TTk9STSwg
JkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgMiwgMiwgMD4pOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJ
X0ZPUk1BVF9SOEc4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRlLCAyLCAyLCAwPik7CiAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhf
Rk9STUFUX1NCWVRFM19OT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
VmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9TTk9STSwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgMywgNCwgSU5UOF9NQVg+KTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NP
TlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0
ZSwgMywgNCwgSU5UOF9NQVg+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZVEU0X05PUk06CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVS
VF9OT05FLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRh
PEdMYnl0ZSwgNCwgNCwgMD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhG
b3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlO
YXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgNCwgNCwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHTF9VTlNJR05FRF9CWVRFIC0tIHVuLW5vcm1h
bGl6ZWQKICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VQllURTE6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVS
VF9HUFUsIERYR0lfRk9STUFUX1I4X1VJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVieXRl
LCAxLCAxLCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBp
bmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9GT1JNQVRfUjhfVUlOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRh
PEdMdWJ5dGUsIDEsIDEsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUJZVEUyOgogICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfR1BV
LCBEWEdJX0ZPUk1BVF9SOEc4X1VJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVieXRlLCAy
LCAyLCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZv
KFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9GT1JNQVRfUjhHOF9VSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8
R0x1Ynl0ZSwgMiwgMiwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VQllURTM6CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9CT1RI
LCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1Ynl0
ZSwgMywgNCwgMT4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQg
aW5mbyhWRVJURVhfQ09OVkVSVF9CT1RILCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZl
cnRleERhdGE8R0x1Ynl0ZSwgMywgNCwgMT4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VQllURTQ6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09O
VkVSVF9HUFUsIERYR0lfRk9STUFUX1I4RzhCOEE4X1VJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0
YTxHTHVieXRlLCA0LCA0LCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRl
eEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlO
YXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDQsIDQsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAKICAgICAgICAgLy8gR0xfVU5TSUdORURfQllURSAtLSBub3JtYWxp
emVkCiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUJZVEUxX05PUk06CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09O
VkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SOF9VTk9STSwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdM
dWJ5dGUsIDEsIDEsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9y
bWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjhfVU5PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVy
dGV4RGF0YTxHTHVieXRlLCAxLCAxLCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VCWVRFMl9OT1JNOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVY
X0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwgJkNvcHlOYXRpdmVWZXJ0ZXhE
YXRhPEdMdWJ5dGUsIDIsIDIsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVy
dGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjhHOF9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlO
YXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDIsIDIsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUJZVEUzX05P
Uk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5m
byhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLCAmQ29weU5h
dGl2ZVZlcnRleERhdGE8R0x1Ynl0ZSwgMywgNCwgVUlOVDhfTUFYPik7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVieXRlLCAzLCA0LCBVSU5U
OF9NQVg+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUJZVEU0X05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDQs
IDQsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8o
VkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4
RGF0YTxHTHVieXRlLCA0LCA0LCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIEdMX1NIT1JUIC0tIHVuLW5vcm1hbGl6ZWQKICAgICAgICAgY2Fz
ZSBnbDo6VkVSVEVYX0ZPUk1BVF9TU0hPUlQxOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1B
VF9SMTZfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDEsIDEsIDA+KTsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZF
UlRfR1BVLCBEWEdJX0ZPUk1BVF9SMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDEsIDEs
IDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Z2w6OlZFUlRFWF9GT1JNQVRfU1NIT1JUMjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9GT1JNQVRf
UjE2RzE2X1NJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHNob3J0LCAyLCAyLCAwPik7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05W
RVJUX0dQVSwgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHNob3J0LCAy
LCAyLCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIGdsOjpWRVJURVhfRk9STUFUX1NTSE9SVDM6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9CT1RILCBEWEdJX0ZP
Uk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDMs
IDQsIDE+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8o
VkVSVEVYX0NPTlZFUlRfQk9USCwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVy
dGV4RGF0YTxHTHNob3J0LCAzLCA0LCAxPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NTSE9SVDQ6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09O
VkVSVF9HUFUsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULCAmQ29weU5hdGl2ZVZlcnRl
eERhdGE8R0xzaG9ydCwgNCwgNCwgMD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBW
ZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1IxNkcxNkIx
NkExNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xzaG9ydCwgNCwgNCwgMD4pOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHTF9TSE9SVCAtLSBub3JtYWxp
emVkCiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU1NIT1JUMV9OT1JNOgogICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NP
TlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjE2X1NOT1JNLCAmQ29weU5hdGl2ZVZlcnRleERhdGE8
R0xzaG9ydCwgMSwgMSwgMD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhG
b3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZfU05PUk0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZl
VmVydGV4RGF0YTxHTHNob3J0LCAxLCAxLCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NTSE9SVDJfTk9STToK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZF
UlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IxNkcxNl9TTk9STSwgJkNvcHlOYXRpdmVW
ZXJ0ZXhEYXRhPEdMc2hvcnQsIDIsIDIsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjE2
RzE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xzaG9ydCwgMiwgMiwgMD4pOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9T
U0hPUlQzX05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhG
b3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9T
Tk9STSwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDMsIDQsIElOVDE2X01BWD4pOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09O
VkVSVF9DUFUsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdM
c2hvcnQsIDMsIDQsIElOVDE2X01BWD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TU0hPUlQ0X05PUk06CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhf
Q09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk0sICZDb3B5TmF0aXZl
VmVydGV4RGF0YTxHTHNob3J0LCA0LCA0LCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1Ix
NkcxNkIxNkExNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDQsIDQsIDA+KTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAKICAgICAgICAgLy8gR0xfVU5TSUdORURf
U0hPUlQgLS0gdW4tbm9ybWFsaXplZAogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VT
SE9SVDE6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQg
aW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1IxNl9VSU5ULCAmQ29weU5hdGl2
ZVZlcnRleERhdGE8R0x1c2hvcnQsIDEsIDEsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1BVF9S
MTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCAxLCAxLCAwPik7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VT
SE9SVDI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQg
aW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1IxNkcxNl9VSU5ULCAmQ29weU5h
dGl2ZVZlcnRleERhdGE8R0x1c2hvcnQsIDIsIDIsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1B
VF9SMTZHMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCAyLCAyLCAwPik7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9S
TUFUX1VTSE9SVDM6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhG
b3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9CT1RILCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
VUlOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCAzLCA0LCAxPik7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0JP
VEgsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1c2hvcnQs
IDMsIDQsIDE+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVVNIT1JUNDoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9G
T1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVzaG9ydCwg
NCwgNCwgMD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5m
byhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZl
cnRleERhdGE8R0x1c2hvcnQsIDQsIDQsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gR0xfVU5TSUdORURfU0hPUlQgLS0gbm9ybWFsaXplZAog
ICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDFfTk9STToKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJU
X05PTkUsIERYR0lfRk9STUFUX1IxNl9VTk9STSwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNo
b3J0LCAxLCAxLCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1h
dCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IxNl9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0
ZXhEYXRhPEdMdXNob3J0LCAxLCAxLCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDJfTk9STToKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRF
WF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IxNkcxNl9VTk9STSwgJkNvcHlOYXRpdmVWZXJ0
ZXhEYXRhPEdMdXNob3J0LCAyLCAyLCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHBy
IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IxNkcx
Nl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCAyLCAyLCAwPik7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VT
SE9SVDNfTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZv
cm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VO
T1JNLCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1c2hvcnQsIDMsIDQsIFVJTlQxNl9NQVg+KTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NP
TlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxH
THVzaG9ydCwgMywgNCwgVUlOVDE2X01BWD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VU0hPUlQ0X05PUk06CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJU
RVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0sICZDb3B5TmF0
aXZlVmVydGV4RGF0YTxHTHVzaG9ydCwgNCwgNCwgMD4pOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1B
VF9SMTZHMTZCMTZBMTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVzaG9ydCwgNCwgNCwgMD4pOwog
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHTF9JTlQg
LS0gdW4tbm9ybWFsaXplZAogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQxOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVS
VEVYX0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1BVF9SMzJfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhE
YXRhPEdMaW50LCAxLCAxLCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRl
eEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9GT1JNQVRfUjMyX1NJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZl
VmVydGV4RGF0YTxHTGludCwgMSwgMSwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TSU5UMjoKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05W
RVJUX0dQVSwgRFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxH
TGludCwgMiwgMiwgMD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3Jt
YXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1IzMkczMl9TSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZl
cnRleERhdGE8R0xpbnQsIDIsIDIsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0lOVDM6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVS
VF9HUFUsIERYR0lfRk9STUFUX1IzMkczMkIzMl9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8
R0xpbnQsIDMsIDMsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9y
bWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfU0lOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRp
dmVWZXJ0ZXhEYXRhPEdMaW50LCAzLCAzLCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQ0OgogICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NP
TlZFUlRfR1BVLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0
ZXhEYXRhPEdMaW50LCA0LCA0LCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZl
cnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMy
QTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGludCwgNCwgNCwgMD4pOwogICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHTF9JTlQgLS0gbm9ybWFsaXplZAog
ICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQxX05PUk06CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9D
UFUsIERYR0lfRk9STUFUX1IzMl9GTE9BVCwgJkNvcHlUbzMyRlZlcnRleERhdGE8R0xpbnQsIDEs
IDEsIHRydWU+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGlu
Zm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRh
PEdMaW50LCAxLCAxLCB0cnVlPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQyX05PUk06CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVS
VF9DUFUsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgJkNvcHlUbzMyRlZlcnRleERhdGE8R0xp
bnQsIDIsIDIsIHRydWU+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9y
bWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5VG8zMkZW
ZXJ0ZXhEYXRhPEdMaW50LCAyLCAyLCB0cnVlPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQzX05PUk06CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJU
RVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwgJkNvcHlUbzMyRlZl
cnRleERhdGE8R0xpbnQsIDMsIDMsIHRydWU+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMaW50LCAzLCAzLCB0cnVlPik7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFU
X1NJTlQ0X05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhG
b3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9G
TE9BVCwgJkNvcHlUbzMyRlZlcnRleERhdGE8R0xpbnQsIDQsIDQsIHRydWU+KTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BV
LCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMaW50LCA0LCA0
LCB0cnVlPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIEdMX1VOU0lHTkVEX0lOVCAtLSB1bi1ub3JtYWxpemVkCiAgICAgICAgIGNhc2UgZ2w6OlZF
UlRFWF9GT1JNQVRfVUlOVDE6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBW
ZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1IzMl9VSU5U
LCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1aW50LCAxLCAxLCAwPik7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhH
SV9GT1JNQVRfUjMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVpbnQsIDEsIDEsIDA+KTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9G
T1JNQVRfVUlOVDI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhG
b3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1IzMkczMl9VSU5ULCAm
Q29weU5hdGl2ZVZlcnRleERhdGE8R0x1aW50LCAyLCAyLCAwPik7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9G
T1JNQVRfUjMyRzMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVpbnQsIDIsIDIsIDA+KTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9G
T1JNQVRfVUlOVDM6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhG
b3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1IzMkczMkIzMl9VSU5U
LCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1aW50LCAzLCAzLCAwPik7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhH
SV9GT1JNQVRfUjMyRzMyQjMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVpbnQsIDMsIDMsIDA+KTsK
ICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZF
UlRFWF9GT1JNQVRfVUlOVDQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBW
ZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9VSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1aW50LCA0LCA0LCAwPik7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJU
X0dQVSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVpbnQs
IDQsIDQsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gR0xfVU5TSUdORURfSU5UIC0tIG5vcm1hbGl6ZWQKICAgICAgICAgY2FzZSBnbDo6VkVS
VEVYX0ZPUk1BVF9VSU5UMV9OT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMzJf
RkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlU
bzMyRlZlcnRleERhdGE8R0x1aW50LCAxLCAxLCB0cnVlPik7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JN
QVRfUjMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmQ29weVRvMzJGVmVydGV4RGF0YTxHTHVpbnQsIDEsIDEsIHRydWU+KTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JN
QVRfVUlOVDJfTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRl
eEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FU
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5VG8zMkZW
ZXJ0ZXhEYXRhPEdMdWludCwgMiwgMiwgdHJ1ZT4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1Iz
MkczMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJkNvcHlUbzMyRlZlcnRleERhdGE8R0x1aW50LCAyLCAyLCB0cnVlPik7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFU
X1VJTlQzX05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhG
b3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9B
VCwgJkNvcHlUbzMyRlZlcnRleERhdGE8R0x1aW50LCAzLCAzLCB0cnVlPik7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwg
RFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmQ29weVRvMzJGVmVydGV4RGF0YTxHTHVpbnQsIDMsIDMsIHRy
dWU+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Z2w6OlZFUlRFWF9GT1JNQVRfVUlOVDRfTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JN
QVRfUjMyRzMyQjMyQTMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMdWludCwgNCwgNCwgdHJ1ZT4pOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVS
VF9DUFUsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlUbzMyRlZlcnRleERhdGE8R0x1aW50
LCA0LCA0LCB0cnVlPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIEdMX0ZJWEVECiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfRklYRUQx
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8o
VkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQsICZDb3B5MzJGaXhlZFRv
MzJGVmVydGV4RGF0YTwxLCAxPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRl
eEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weTMyRml4
ZWRUbzMyRlZlcnRleERhdGE8MSwgMT4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9GSVhFRDI6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVS
VF9DUFUsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgJkNvcHkzMkZpeGVkVG8zMkZWZXJ0ZXhE
YXRhPDIsIDI+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGlu
Zm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5MzJGaXhlZFRvMzJG
VmVydGV4RGF0YTwyLCAyPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX0ZJWEVEMzoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwg
RFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULCAmQ29weTMyRml4ZWRUbzMyRlZlcnRleERhdGE8
MywgMz4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhW
RVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHkzMkZpeGVkVG8zMkZW
ZXJ0ZXhEYXRhPDMsIDM+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfRklYRUQ0OgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsICZDb3B5MzJGaXhlZFRvMzJGVmVydGV4RGF0
YTw0LCA0Pik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZv
KFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weTMyRml4ZWRU
bzMyRlZlcnRleERhdGE8NCwgND4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
IH0KIAogICAgICAgICAvLyBHTF9IQUxGX0ZMT0FUCiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9G
T1JNQVRfSEFMRjE6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhG
b3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQsICZD
b3B5TmF0aXZlVmVydGV4RGF0YTxHTGhhbGYsIDEsIDEsIDA+KTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9G
T1JNQVRfUjE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xoYWxmLCAxLCAxLCAwPik7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9S
TUFUX0hBTEYyOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9y
bWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FULCAm
Q29weU5hdGl2ZVZlcnRleERhdGE8R0xoYWxmLCAyLCAyLCAwPik7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lf
Rk9STUFUX1IxNkcxNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMaGFsZiwgMiwgMiwgMD4pOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVY
X0ZPUk1BVF9IQUxGMzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRl
eEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2
X0ZMT0FULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xoYWxmLCAzLCA0LCBnbDo6RmxvYXQxNk9u
ZT4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJU
RVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhE
YXRhPEdMaGFsZiwgMywgNCwgZ2w6OkZsb2F0MTZPbmU+KTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfSEFMRjQ6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJU
RVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsICZDb3B5TmF0
aXZlVmVydGV4RGF0YTxHTGhhbGYsIDQsIDQsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xoYWxmLCA0LCA0LCAwPik7CiAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEdMX0ZMT0FUCiAg
ICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfRkxPQVQxOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwg
RFhHSV9GT1JNQVRfUjMyX0ZMT0FULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xmbG9hdCwgMSwg
MSwgMD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhW
RVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxH
TGZsb2F0LCAxLCAxLCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX0ZMT0FUMjoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUs
IERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMZmxvYXQs
IDIsIDIsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGlu
Zm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRl
eERhdGE8R0xmbG9hdCwgMiwgMiwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9GTE9BVDM6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVS
VF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsICZDb3B5TmF0aXZlVmVydGV4RGF0
YTxHTGZsb2F0LCAzLCAzLCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRl
eEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IzMkczMkIzMl9G
TE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNv
cHlOYXRpdmVWZXJ0ZXhEYXRhPEdMZmxvYXQsIDMsIDMsIDA+KTsKICAgICAgICAgICAgIHJldHVy
biBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfRkxPQVQ0
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8o
VkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCAmQ29w
eU5hdGl2ZVZlcnRleERhdGE8R0xmbG9hdCwgNCwgNCwgMD4pOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZP
Uk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGZsb2F0LCA0LCA0LCAwPik7
CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEdMX0lO
VF8yXzEwXzEwXzEwX1JFVgogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQyMTA6
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhW
RVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgJkNvcHlY
WVoxMFcyVG9YWVpXMzJGVmVydGV4RGF0YTx0cnVlLCBmYWxzZSwgdHJ1ZT4pOworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUs
IERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlYWVoxMFcyVG9YWVpXMzJGVmVydGV4RGF0YTx0
cnVlLCBmYWxzZSwgdHJ1ZT4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TSU5UMjEwX05PUk06CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVS
VF9DUFUsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgJkNvcHlYWVoxMFcyVG9YWVpX
MzJGVmVydGV4RGF0YTx0cnVlLCB0cnVlLCB0cnVlPik7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRf
UjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmQ29weVhZWjEwVzJUb1hZWlczMkZWZXJ0ZXhEYXRhPHRydWUsIHRydWUsIHRy
dWU+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
R0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWCiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9G
T1JNQVRfVUlOVDIxMDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRl
eEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMy
X0ZMT0FULCAmQ29weVhZWjEwVzJUb1hZWlczMkZWZXJ0ZXhEYXRhPGZhbHNlLCBmYWxzZSwgdHJ1
ZT4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJU
RVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlYWVoxMFcyVG9YWVpX
MzJGVmVydGV4RGF0YTxmYWxzZSwgZmFsc2UsIHRydWU+KTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDIxMF9O
T1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGlu
Zm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVU5PUk0sICZD
b3B5TmF0aXZlVmVydGV4RGF0YTxHTHVpbnQsIDEsIDEsIDA+KTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9G
T1JNQVRfUjEwRzEwQjEwQTJfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVpbnQsIDEsIDEsIDA+KTsK
ICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAKQEAgLTY4MywxNTIgKzg0MSwx
NzggQEAgY29uc3QgVmVydGV4Rm9ybWF0ICZHZXRWZXJ0ZXhGb3JtYXRJbmZvKGdsOjpWZXJ0ZXhG
b3JtYXRUeXBlIHZlcnRleEZvcm1hdFR5cGUsIEQKICAgICAgICAgLy8gR0xfQllURQogICAgICAg
ICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NCWVRFMV9JTlQ6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBE
WEdJX0ZPUk1BVF9SOF9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRlLCAxLCAxLCAw
Pik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRF
WF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1I4X1NJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGJ5dGUs
IDEsIDEsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZVEUyX0lOVDoKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERY
R0lfRk9STUFUX1I4RzhfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgMiwgMiwg
MD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJU
RVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGJ5
dGUsIDIsIDIsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZVEUzX0lOVDoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwg
RFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwg
MywgNCwgMT4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5m
byhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4
RGF0YTxHTGJ5dGUsIDMsIDQsIDE+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZVEU0X0lOVDoKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05W
RVJUX05PTkUsIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0
YTxHTGJ5dGUsIDQsIDQsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4
Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlO
YXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgNCwgNCwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHTF9VTlNJR05FRF9CWVRFCiAgICAgICAgIGNh
c2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUJZVEUxX0lOVDoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lf
Rk9STUFUX1I4X1VJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVieXRlLCAxLCAxLCAwPik7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9D
T05WRVJUX05PTkUsIERYR0lfRk9STUFUX1I4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVieXRlLCAx
LCAxLCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIGdsOjpWRVJURVhfRk9STUFUX1VCWVRFMl9JTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJ
X0ZPUk1BVF9SOEc4X1VJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVieXRlLCAyLCAyLCAw
Pik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRF
WF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1I4RzhfVUlOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5
dGUsIDIsIDIsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUJZVEUzX0lOVDoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwg
RFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUs
IDMsIDQsIDE+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGlu
Zm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRl
eERhdGE8R0x1Ynl0ZSwgMywgNCwgMT4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VQllURTRfSU5UOgogICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NP
TlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhE
YXRhPEdMdWJ5dGUsIDQsIDQsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVy
dGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjhHOEI4QThf
VUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNv
cHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDQsIDQsIDA+KTsKICAgICAgICAgICAgIHJldHVy
biBpbmZvOwogICAgICAgICB9CiAKICAgICAgICAgLy8gR0xfU0hPUlQKICAgICAgICAgY2FzZSBn
bDo6VkVSVEVYX0ZPUk1BVF9TU0hPUlQxX0lOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9S
TUFUX1IxNl9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xzaG9ydCwgMSwgMSwgMD4pOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09O
VkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDEs
IDEsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgZ2w6OlZFUlRFWF9GT1JNQVRfU1NIT1JUMl9JTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJ
X0ZPUk1BVF9SMTZHMTZfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDIsIDIs
IDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVS
VEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxH
THNob3J0LCAyLCAyLCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NTSE9SVDNfSU5UOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRf
Q1BVLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRh
PEdMc2hvcnQsIDMsIDQsIDE+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4
Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
U0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNv
cHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDMsIDQsIDE+KTsKICAgICAgICAgICAgIHJldHVy
biBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU1NIT1JU
NF9JTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQg
aW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwg
JkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDQsIDQsIDA+KTsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHNob3J0LCA0LCA0LCAw
Pik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEdM
X1VOU0lHTkVEX1NIT1JUCiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVVNIT1JUMV9J
TlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5m
byhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZfVUlOVCwgJkNvcHlOYXRpdmVW
ZXJ0ZXhEYXRhPEdMdXNob3J0LCAxLCAxLCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1Ix
Nl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
Q29weU5hdGl2ZVZlcnRleERhdGE8R0x1c2hvcnQsIDEsIDEsIDA+KTsKICAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVVNI
T1JUMl9JTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3Jt
YXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCwgJkNv
cHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCAyLCAyLCAwPik7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lf
Rk9STUFUX1IxNkcxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1c2hvcnQsIDIsIDIsIDA+KTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRF
WF9GT1JNQVRfVVNIT1JUM19JTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9VSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1c2hvcnQsIDMsIDQsIDE+KTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NP
TlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdM
dXNob3J0LCAzLCA0LCAxPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDRfSU5UOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRf
Tk9ORSwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0
YTxHTHVzaG9ydCwgNCwgNCwgMD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0
ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZB
MTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCA0LCA0LCAwPik7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEdMX0lOVAogICAgICAgICBjYXNl
IGdsOjpWRVJURVhfRk9STUFUX1NJTlQxX0lOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9S
TUFUX1IzMl9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xpbnQsIDEsIDEsIDA+KTsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZF
UlRfTk9ORSwgRFhHSV9GT1JNQVRfUjMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGludCwgMSwgMSwg
MD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBn
bDo6VkVSVEVYX0ZPUk1BVF9TSU5UMl9JTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1B
VF9SMzJHMzJfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMaW50LCAyLCAyLCAwPik7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05W
RVJUX05PTkUsIERYR0lfRk9STUFUX1IzMkczMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xpbnQsIDIs
IDIsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0lOVDNfSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9G
T1JNQVRfUjMyRzMyQjMyX1NJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGludCwgMywgMywg
MD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJU
RVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfU0lOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRh
PEdMaW50LCAzLCAzLCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQ0X0lOVDoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05P
TkUsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8
R0xpbnQsIDQsIDQsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9y
bWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5
TmF0aXZlVmVydGV4RGF0YTxHTGludCwgNCwgNCwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHTF9VTlNJR05FRF9JTlQKICAgICAgICAgY2Fz
ZSBnbDo6VkVSVEVYX0ZPUk1BVF9VSU5UMV9JTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZP
Uk1BVF9SMzJfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWludCwgMSwgMSwgMD4pOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09O
VkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWludCwgMSwg
MSwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBnbDo6VkVSVEVYX0ZPUk1BVF9VSU5UMl9JTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZP
Uk1BVF9SMzJHMzJfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWludCwgMiwgMiwgMD4p
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhf
Q09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWlu
dCwgMiwgMiwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VSU5UM19JTlQ6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWludCwg
MywgMywgMD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5m
byhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfU0lOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0
ZXhEYXRhPEdMdWludCwgMywgMywgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VSU5UNF9JTlQ6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09O
VkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0
ZXhEYXRhPEdMdWludCwgNCwgNCwgMD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBW
ZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJHMzJC
MzJBMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWludCwgNCwgNCwgMD4pOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHTF9JTlRfMl8xMF8xMF8xMF9S
RVYKICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TSU5UMjEwX0lOVDoKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05W
RVJUX0NQVSwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsICZDb3B5WFlaMTBXMlRvWFla
VzMyRlZlcnRleERhdGE8dHJ1ZSwgdHJ1ZSwgZmFsc2U+KTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1B
VF9SMTZHMTZCMTZBMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJkNvcHlYWVoxMFcyVG9YWVpXMzJGVmVydGV4RGF0YTx0cnVlLCB0cnVlLCBm
YWxzZT4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KIAogICAgICAgICAv
LyBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYKICAgICAgICAgY2FzZSBnbDo6VkVSVEVY
X0ZPUk1BVF9VSU5UMjEwX0lOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IxMEcx
MEIxMEEyX1VJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVpbnQsIDEsIDEsIDA+KTsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZF
UlRfTk9ORSwgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWlu
dCwgMSwgMSwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KIAogICAg
ICAgICBkZWZhdWx0OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4
Rm9ybWF0IGluZm87CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBp
bmZvOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL2Zvcm1hdHV0aWxzMTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5oCmluZGV4IDE1ZDY3MDY0ZTg3NDlk
N2NlMmQyMTgxMWVhMjcwOTdhYmI3ZjNjNWEuLjNhOWZkNjNkZmJhZWM3NTE0OGQ2MGM4NTVmMWQ0
NmNmMzQ5OTlkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMx
MS5oCkBAIC00MSwxNyArNDEsMTggQEAgc3RydWN0IERYR0lGb3JtYXRTaXplCiB9OwogY29uc3Qg
RFhHSUZvcm1hdFNpemUgJkdldERYR0lGb3JtYXRTaXplSW5mbyhEWEdJX0ZPUk1BVCBmb3JtYXQp
OwogCi1zdHJ1Y3QgVmVydGV4Rm9ybWF0CitzdHJ1Y3QgVmVydGV4Rm9ybWF0IDogYW5nbGU6Ok5v
bkNvcHlhYmxlCiB7Ci0gICAgVmVydGV4Rm9ybWF0KCk7Ci0gICAgVmVydGV4Rm9ybWF0KFZlcnRl
eENvbnZlcnNpb25UeXBlIGNvbnZlcnNpb25UeXBlLAotICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVCBuYXRpdmVGb3JtYXQsCi0gICAgICAgICAgICAgICAgIFZlcnRleENvcHlGdW5jdGlvbiBj
b3B5RnVuY3Rpb24pOworICAgIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQoKTsKKyAgICBjb25zdGV4
cHIgVmVydGV4Rm9ybWF0KFZlcnRleENvbnZlcnNpb25UeXBlIGNvbnZlcnNpb25UeXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgbmF0aXZlRm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVmVydGV4Q29weUZ1bmN0aW9uIGNvcHlGdW5jdGlvbik7CiAK
ICAgICBWZXJ0ZXhDb252ZXJzaW9uVHlwZSBjb252ZXJzaW9uVHlwZTsKICAgICBEWEdJX0ZPUk1B
VCBuYXRpdmVGb3JtYXQ7CiAgICAgVmVydGV4Q29weUZ1bmN0aW9uIGNvcHlGdW5jdGlvbjsKIH07
CisKIGNvbnN0IFZlcnRleEZvcm1hdCAmR2V0VmVydGV4Rm9ybWF0SW5mbyhnbDo6VmVydGV4Rm9y
bWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCk7CiAKQEAgLTYwLDYgKzYx
LDExIEBAIEdMZW51bSBHZXRDb21wb25lbnRUeXBlKERYR0lfRk9STUFUIGR4Z2lGb3JtYXQpOwog
CiB9ICAvLyBuYW1lc3BhY2UgZDNkMTEKIAorbmFtZXNwYWNlIGQzZDExX2FuZ2xlCit7Citjb25z
dCBhbmdsZTo6Rm9ybWF0ICZHZXRGb3JtYXQoRFhHSV9GT1JNQVQgZHhnaUZvcm1hdCk7Cit9CisK
IH0gIC8vIG5hbWVzcGFjZSByeAogCiAjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNEX0Qz
RDExX0ZPUk1BVFVUSUxTMTFfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZ2VuX2R4Z2lfc3VwcG9ydF90YWJsZXMu
cHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL2dlbl9keGdpX3N1cHBvcnRfdGFibGVzLnB5CmluZGV4IGRiYTU4M2YxZTYxZTQ2MWUyYmQz
YjA4ZjZjNmNhMjFmNjE2MDVmNGQuLjIwMGE1MDVlMGJjMjkyMmNkY2E5NTQ4MjZjZDNjYmU2ZTk0
Y2VjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvZ2VuX2R4Z2lfc3VwcG9ydF90YWJsZXMucHkKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9nZW5fZHhn
aV9zdXBwb3J0X3RhYmxlcy5weQpAQCAtOCw2ICs4LDcgQEAKICMgIGFyZSBuYXRpdmVseSBzdXBw
b3J0IGluIEQzRDEwKy4KICMKICMgTVNETiBsaW5rczoKKyMgIDEwTGV2ZWw5IDlfMzogaHR0cHM6
Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvbXQ3OTA3
NDAuYXNweAogIyAgMTBfMDogaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFy
eS93aW5kb3dzL2Rlc2t0b3AvY2M2MjcwOTAuYXNweAogIyAgMTBfMTogaHR0cHM6Ly9tc2RuLm1p
Y3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvY2M2MjcwOTEuYXNweAog
IyAgMTFfMDogaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93aW5kb3dz
L2Rlc2t0b3AvZmY0NzEzMjUuYXNweApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9nZW5fdGV4dHVyZV9mb3JtYXRfdGFi
bGUucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL2dlbl90ZXh0dXJlX2Zvcm1hdF90YWJsZS5weQppbmRleCA5ODFhNzdmNTFhYmIxZGI0
OWM3NTU1MmI2MTEzYzBiMzEzNDViYzg3Li4wMmM2MDBiZmFiMDkwMGQ2M2Y0YzE3ZDM3ZDMxNmI5
M2U5ZGYzMmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL2dlbl90ZXh0dXJlX2Zvcm1hdF90YWJsZS5weQorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2dl
bl90ZXh0dXJlX2Zvcm1hdF90YWJsZS5weQpAQCAtMTIsMTQgKzEyLDEzIEBAIGltcG9ydCBqc29u
CiBpbXBvcnQgbWF0aAogaW1wb3J0IHBwcmludAogaW1wb3J0IG9zCi1pbXBvcnQgcmUKIGltcG9y
dCBzeXMKIAogc3lzLnBhdGguYXBwZW5kKCcuLi8uLicpCiBpbXBvcnQgYW5nbGVfZm9ybWF0CiAK
IHRlbXBsYXRlX3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW5fY3BwID0gIiIiLy8gR0VORVJB
VEVEIEZJTEUgLSBETyBOT1QgRURJVC4KLS8vIEdlbmVyYXRlZCBieSBnZW5fdGV4dHVyZV9mb3Jt
YXRfdGFibGUucHkgdXNpbmcgZGF0YSBmcm9tIHRleHR1cmVfZm9ybWF0X2RhdGEuanNvbgorLy8g
R2VuZXJhdGVkIGJ5IHtzY3JpcHRfbmFtZX0gdXNpbmcgZGF0YSBmcm9tIHtkYXRhX3NvdXJjZV9u
YW1lfQogLy8KIC8vIENvcHlyaWdodCB7Y29weXJpZ2h0X3llYXJ9IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCkBAIC02MCw3
ICs1OSw3IEBAIGNvbnN0IEZvcm1hdCAmRm9ybWF0OjpHZXQoR0xlbnVtIGludGVybmFsRm9ybWF0
LCBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2CiAgICAgLy8gY2xhbmctZm9ybWF0IG9u
CiAKICAgICBVTlJFQUNIQUJMRSgpOwotICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgZGVmYXVsdElu
Zm87CisgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgZGVmYXVsdEluZm87CiAgICAgcmV0dXJu
IGRlZmF1bHRJbmZvOwogfX0KIApAQCAtNjksODEgKzY4LDYgQEAgY29uc3QgRm9ybWF0ICZGb3Jt
YXQ6OkdldChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBz
ICZkZXYKIH19ICAvLyBuYW1lc3BhY2UgcngKICIiIgogCi0jIFRPRE8ob2V0dWFobyk6IEV4cGFu
ZCB0aGlzIGNvZGUgc28gdGhhdCBpdCBjb3VsZCBnZW5lcmF0ZSB0aGUgZ2wgZm9ybWF0IGluZm8g
dGFibGVzIGFzIHdlbGwuCi1kZWYgZ2xfZm9ybWF0X2NoYW5uZWxzKGludGVybmFsX2Zvcm1hdCk6
Ci0gICAgaWYgaW50ZXJuYWxfZm9ybWF0ID09ICdHTF9CR1I1X0ExX0FOR0xFWCc6Ci0gICAgICAg
IHJldHVybiAnYmdyYScKLSAgICBpZiBpbnRlcm5hbF9mb3JtYXQgPT0gJ0dMX1IxMUZfRzExRl9C
MTBGJzoKLSAgICAgICAgcmV0dXJuICdyZ2InCi0gICAgaWYgaW50ZXJuYWxfZm9ybWF0ID09ICdH
TF9SR0I1X0ExJzoKLSAgICAgICAgcmV0dXJuICdyZ2JhJwotICAgIGlmIGludGVybmFsX2Zvcm1h
dC5maW5kKCdHTF9SR0IxMF9BMicpID09IDA6Ci0gICAgICAgIHJldHVybiAncmdiYScKLQotICAg
IGNoYW5uZWxzX3BhdHRlcm4gPSByZS5jb21waWxlKCdHTF8oQ09NUFJFU1NFRF8pPyhTSUdORURf
KT8oRVRDXGRfKT8oW0EtWl0rKScpCi0gICAgbWF0Y2ggPSByZS5zZWFyY2goY2hhbm5lbHNfcGF0
dGVybiwgaW50ZXJuYWxfZm9ybWF0KQotICAgIGNoYW5uZWxzX3N0cmluZyA9IG1hdGNoLmdyb3Vw
KDQpCi0KLSAgICBpZiBjaGFubmVsc19zdHJpbmcgPT0gJ0FMUEhBJzoKLSAgICAgICAgcmV0dXJu
ICdhJwotICAgIGlmIGNoYW5uZWxzX3N0cmluZyA9PSAnTFVNSU5BTkNFJzoKLSAgICAgICAgaWYg
KGludGVybmFsX2Zvcm1hdC5maW5kKCdBTFBIQScpID49IDApOgotICAgICAgICAgICAgcmV0dXJu
ICdsYScKLSAgICAgICAgcmV0dXJuICdsJwotICAgIGlmIGNoYW5uZWxzX3N0cmluZyA9PSAnU1JH
Qic6Ci0gICAgICAgIGlmIChpbnRlcm5hbF9mb3JtYXQuZmluZCgnQUxQSEEnKSA+PSAwKToKLSAg
ICAgICAgICAgIHJldHVybiAncmdiYScKLSAgICAgICAgcmV0dXJuICdyZ2InCi0gICAgaWYgY2hh
bm5lbHNfc3RyaW5nID09ICdERVBUSCc6Ci0gICAgICAgIGlmIChpbnRlcm5hbF9mb3JtYXQuZmlu
ZCgnU1RFTkNJTCcpID49IDApOgotICAgICAgICAgICAgcmV0dXJuICdkcycKLSAgICAgICAgcmV0
dXJuICdkJwotICAgIGlmIGNoYW5uZWxzX3N0cmluZyA9PSAnU1RFTkNJTCc6Ci0gICAgICAgIHJl
dHVybiAncycKLSAgICByZXR1cm4gY2hhbm5lbHNfc3RyaW5nLmxvd2VyKCkKLQotZGVmIGdldF9p
bnRlcm5hbF9mb3JtYXRfaW5pdGlhbGl6ZXIoaW50ZXJuYWxfZm9ybWF0LCBhbmdsZV9mb3JtYXQp
OgotICAgIGludGVybmFsX2Zvcm1hdF9pbml0aWFsaXplciA9ICdudWxscHRyJwotICAgIGdsX2No
YW5uZWxzID0gZ2xfZm9ybWF0X2NoYW5uZWxzKGludGVybmFsX2Zvcm1hdCkKLSAgICBnbF9mb3Jt
YXRfbm9fYWxwaGEgPSBnbF9jaGFubmVscyA9PSAncmdiJyBvciBnbF9jaGFubmVscyA9PSAnbCcK
LSAgICBpZiBnbF9mb3JtYXRfbm9fYWxwaGEgYW5kIGFuZ2xlX2Zvcm1hdFsnY2hhbm5lbHMnXSA9
PSAncmdiYSc6Ci0gICAgICAgIGlmIGFuZ2xlX2Zvcm1hdFsndGV4Rm9ybWF0J10gPT0gJ0RYR0lf
Rk9STUFUX0JDMV9VTk9STSc6Ci0gICAgICAgICAgICAjIEJDMSBpcyBhIHNwZWNpYWwgY2FzZSBz
aW5jZSB0aGUgdGV4dHVyZSBkYXRhIGRldGVybWluZXMgd2hldGhlciBlYWNoIGJsb2NrIGhhcyBh
biBhbHBoYSBjaGFubmVsIG9yIG5vdC4KLSAgICAgICAgICAgICMgVGhpcyBpZiBzdGF0ZW1lbnQg
aXMgaGl0IGJ5IENPTVBSRVNTRURfUkdCX1MzVENfRFhUMSwgd2hpY2ggaXMgYSBiaXQgb2YgYSBt
ZXNzLgotICAgICAgICAgICAgIyBUT0RPKG9ldHVhaG8pOiBMb29rIGludG8gd2hldGhlciBDT01Q
UkVTU0VEX1JHQl9TM1RDX0RYVDEgd29ya3MgcmlnaHQgaW4gZ2VuZXJhbC4KLSAgICAgICAgICAg
ICMgUmVmZXJlbmNlOiBodHRwczovL3d3dy5vcGVuZ2wub3JnL3JlZ2lzdHJ5L3NwZWNzL0VYVC90
ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMudHh0Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVs
aWYgJ2NvbXBvbmVudFR5cGUnIG5vdCBpbiBhbmdsZV9mb3JtYXQ6Ci0gICAgICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCd3YXJuaW5nOiBpbnRlcm5hbCBmb3JtYXQgaW5pdGlhbGl6ZXIgY291bGQg
bm90IGJlIGdlbmVyYXRlZCBhbmQgbWF5IGJlIG5lZWRlZCBmb3IgJyArIGludGVybmFsX2Zvcm1h
dCkKLSAgICAgICAgZWxpZiBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5cGUnXSA9PSAndWludCcg
YW5kIGFuZ2xlX2Zvcm1hdFsnYml0cyddWydyZWQnXSA9PSA4OgotICAgICAgICAgICAgaW50ZXJu
YWxfZm9ybWF0X2luaXRpYWxpemVyID0gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRl
LCAweDAwLCAweDAwLCAweDAwLCAweDAxPicKLSAgICAgICAgZWxpZiBhbmdsZV9mb3JtYXRbJ2Nv
bXBvbmVudFR5cGUnXSA9PSAndW5vcm0nIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsncmVkJ10g
PT0gODoKLSAgICAgICAgICAgIGludGVybmFsX2Zvcm1hdF9pbml0aWFsaXplciA9ICdJbml0aWFs
aXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4nCi0gICAg
ICAgIGVsaWYgYW5nbGVfZm9ybWF0Wydjb21wb25lbnRUeXBlJ10gPT0gJ3Vub3JtJyBhbmQgYW5n
bGVfZm9ybWF0WydiaXRzJ11bJ3JlZCddID09IDE2OgotICAgICAgICAgICAgaW50ZXJuYWxfZm9y
bWF0X2luaXRpYWxpemVyID0gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAw
MDAsIDB4MDAwMCwgMHgwMDAwLCAweEZGRkY+JwotICAgICAgICBlbGlmIGFuZ2xlX2Zvcm1hdFsn
Y29tcG9uZW50VHlwZSddID09ICdpbnQnIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsncmVkJ10g
PT0gODoKLSAgICAgICAgICAgIGludGVybmFsX2Zvcm1hdF9pbml0aWFsaXplciA9ICdJbml0aWFs
aXplNENvbXBvbmVudERhdGE8R0xieXRlLCAweDAwLCAweDAwLCAweDAwLCAweDAxPicKLSAgICAg
ICAgZWxpZiBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5cGUnXSA9PSAnc25vcm0nIGFuZCBhbmds
ZV9mb3JtYXRbJ2JpdHMnXVsncmVkJ10gPT0gODoKLSAgICAgICAgICAgIGludGVybmFsX2Zvcm1h
dF9pbml0aWFsaXplciA9ICdJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xieXRlLCAweDAwLCAw
eDAwLCAweDAwLCAweDdGPicKLSAgICAgICAgZWxpZiBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5
cGUnXSA9PSAnc25vcm0nIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsncmVkJ10gPT0gMTY6Ci0g
ICAgICAgICAgICBpbnRlcm5hbF9mb3JtYXRfaW5pdGlhbGl6ZXIgPSAnSW5pdGlhbGl6ZTRDb21w
b25lbnREYXRhPEdMdXNob3J0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDdGRkY+JwotICAg
ICAgICBlbGlmIGFuZ2xlX2Zvcm1hdFsnY29tcG9uZW50VHlwZSddID09ICdmbG9hdCcgYW5kIGFu
Z2xlX2Zvcm1hdFsnYml0cyddWydyZWQnXSA9PSAxNjoKLSAgICAgICAgICAgIGludGVybmFsX2Zv
cm1hdF9pbml0aWFsaXplciA9ICdJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xoYWxmLCAweDAw
MDAsIDB4MDAwMCwgMHgwMDAwLCBnbDo6RmxvYXQxNk9uZT4nCi0gICAgICAgIGVsaWYgYW5nbGVf
Zm9ybWF0Wydjb21wb25lbnRUeXBlJ10gPT0gJ3VpbnQnIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMn
XVsncmVkJ10gPT0gMTY6Ci0gICAgICAgICAgICBpbnRlcm5hbF9mb3JtYXRfaW5pdGlhbGl6ZXIg
PSAnSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdXNob3J0LCAweDAwMDAsIDB4MDAwMCwgMHgw
MDAwLCAweDAwMDE+JwotICAgICAgICBlbGlmIGFuZ2xlX2Zvcm1hdFsnY29tcG9uZW50VHlwZSdd
ID09ICdpbnQnIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsncmVkJ10gPT0gMTY6Ci0gICAgICAg
ICAgICBpbnRlcm5hbF9mb3JtYXRfaW5pdGlhbGl6ZXIgPSAnSW5pdGlhbGl6ZTRDb21wb25lbnRE
YXRhPEdMc2hvcnQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMT4nCi0gICAgICAgIGVs
aWYgYW5nbGVfZm9ybWF0Wydjb21wb25lbnRUeXBlJ10gPT0gJ2Zsb2F0JyBhbmQgYW5nbGVfZm9y
bWF0WydiaXRzJ11bJ3JlZCddID09IDMyOgotICAgICAgICAgICAgaW50ZXJuYWxfZm9ybWF0X2lu
aXRpYWxpemVyID0gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGZsb2F0LCAweDAwMDAwMDAw
LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCBnbDo6RmxvYXQzMk9uZT4nCi0gICAgICAgIGVsaWYg
YW5nbGVfZm9ybWF0Wydjb21wb25lbnRUeXBlJ10gPT0gJ2ludCcgYW5kIGFuZ2xlX2Zvcm1hdFsn
Yml0cyddWydyZWQnXSA9PSAzMjoKLSAgICAgICAgICAgIGludGVybmFsX2Zvcm1hdF9pbml0aWFs
aXplciA9ICdJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xpbnQsIDB4MDAwMDAwMDAsIDB4MDAw
MDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDE+JwotICAgICAgICBlbGlmIGFuZ2xlX2Zvcm1h
dFsnY29tcG9uZW50VHlwZSddID09ICd1aW50JyBhbmQgYW5nbGVfZm9ybWF0WydiaXRzJ11bJ3Jl
ZCddID09IDMyOgotICAgICAgICAgICAgaW50ZXJuYWxfZm9ybWF0X2luaXRpYWxpemVyID0gJ0lu
aXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVpbnQsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4
MDAwMDAwMDAsIDB4MDAwMDAwMDE+JwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcignd2FybmluZzogaW50ZXJuYWwgZm9ybWF0IGluaXRpYWxpemVyIGNvdWxkIG5v
dCBiZSBnZW5lcmF0ZWQgYW5kIG1heSBiZSBuZWVkZWQgZm9yICcgKyBpbnRlcm5hbF9mb3JtYXQp
Ci0KLSAgICByZXR1cm4gaW50ZXJuYWxfZm9ybWF0X2luaXRpYWxpemVyCi0KIGRlZiBnZXRfc3dp
enpsZV9mb3JtYXRfaWQoaW50ZXJuYWxfZm9ybWF0LCBhbmdsZV9mb3JtYXQpOgogICAgIGFuZ2xl
X2Zvcm1hdF9pZCA9IGFuZ2xlX2Zvcm1hdFsiZm9ybWF0TmFtZSJdCiAgICAgaWYgKGludGVybmFs
X2Zvcm1hdCA9PSAnR0xfTk9ORScpIG9yIChhbmdsZV9mb3JtYXRfaWQgPT0gJ05PTkUnKToKQEAg
LTIxNiwyMyArMTQwLDcgQEAgZGVmIGdldF9ibGl0X3Nydl9mb3JtYXQoYW5nbGVfZm9ybWF0KToK
IAogCiBmb3JtYXRfZW50cnlfdGVtcGxhdGUgPSAiIiJ7c3BhY2V9e3sKLXtzcGFjZX0gICAgc3Rh
dGljIGNvbnN0IEZvcm1hdCBpbmZvKHtpbnRlcm5hbEZvcm1hdH0sCi17c3BhY2V9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6e2Zvcm1hdE5hbWV9LAote3Nw
YWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RleEZvcm1hdH0sCi17c3BhY2V9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7c3J2Rm9ybWF0fSwKLXtzcGFjZX0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHtydHZGb3JtYXR9LAote3NwYWNlfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAge2RzdkZvcm1hdH0sCi17c3BhY2V9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7YmxpdFNSVkZvcm1hdH0sCi17c3BhY2V9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7c3dpenpsZUZvcm1hdH0sCi17c3BhY2V9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
aW5pdGlhbGl6ZXJ9LAote3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNl
Q2Fwcyk7Ci17c3BhY2V9ICAgIHJldHVybiBpbmZvOwote3NwYWNlfX19Ci0iIiIKLQotc3BsaXRf
Zm9ybWF0X2VudHJ5X3RlbXBsYXRlID0gIiIie3NwYWNlfSAgICB7Y29uZGl0aW9ufQote3NwYWNl
fSAgICB7ewote3NwYWNlfSAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKHtpbnRlcm5h
bEZvcm1hdH0sCit7c3BhY2V9ICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oe2ludGVy
bmFsRm9ybWF0fSwKIHtzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6Rm9ybWF0OjpJRDo6e2Zvcm1hdE5hbWV9LAoge3NwYWNlfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHt0ZXhGb3JtYXR9LAoge3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHtzcnZGb3JtYXR9LApAQCAtMjQwLDggKzE0OCwyMiBAQCBzcGxpdF9mb3JtYXRf
ZW50cnlfdGVtcGxhdGUgPSAiIiJ7c3BhY2V9ICAgIHtjb25kaXRpb259CiB7c3BhY2V9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAge2RzdkZvcm1hdH0sCiB7c3BhY2V9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAge2JsaXRTUlZGb3JtYXR9LAoge3NwYWNlfSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHtzd2l6emxlRm9ybWF0fSwKLXtzcGFjZX0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7aW5pdGlhbGl6ZXJ9LAote3NwYWNlfSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOwore3NwYWNlfSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHtpbml0aWFsaXplcn0pOwore3NwYWNlfSAgICByZXR1cm4g
aW5mbzsKK3tzcGFjZX19fQorIiIiCisKK3NwbGl0X2Zvcm1hdF9lbnRyeV90ZW1wbGF0ZSA9ICIi
IntzcGFjZX0gICAge2NvbmRpdGlvbn0KK3tzcGFjZX0gICAge3sKK3tzcGFjZX0gICAgICAgIHN0
YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oe2ludGVybmFsRm9ybWF0fSwKK3tzcGFjZX0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ontmb3Jt
YXROYW1lfSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Rl
eEZvcm1hdH0sCit7c3BhY2V9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtz
cnZGb3JtYXR9LAore3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
cnR2Rm9ybWF0fSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
e2RzdkZvcm1hdH0sCit7c3BhY2V9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHtibGl0U1JWRm9ybWF0fSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAge3N3aXp6bGVGb3JtYXR9LAore3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7aW5pdGlhbGl6ZXJ9KTsKIHtzcGFjZX0gICAgICAgIHJldHVybiBpbmZvOwog
e3NwYWNlfSAgICB9fQogIiIiCkBAIC0yNjcsNyArMTg5LDggQEAgZGVmIGpzb25fdG9fdGFibGVf
ZGF0YShpbnRlcm5hbF9mb3JtYXQsIGZvcm1hdF9uYW1lLCBwcmVmaXgsIGpzb24pOgogICAgICMg
RGVyaXZlZCB2YWx1ZXMuCiAgICAgcGFyc2VkWyJibGl0U1JWRm9ybWF0Il0gPSBnZXRfYmxpdF9z
cnZfZm9ybWF0KHBhcnNlZCkKICAgICBwYXJzZWRbInN3aXp6bGVGb3JtYXQiXSA9IGdldF9zd2l6
emxlX2Zvcm1hdF9pZChpbnRlcm5hbF9mb3JtYXQsIHBhcnNlZCkKLSAgICBwYXJzZWRbImluaXRp
YWxpemVyIl0gICA9IGdldF9pbnRlcm5hbF9mb3JtYXRfaW5pdGlhbGl6ZXIoaW50ZXJuYWxfZm9y
bWF0LCBqc29uKQorICAgIHBhcnNlZFsiaW5pdGlhbGl6ZXIiXSAgID0gYW5nbGVfZm9ybWF0Lmdl
dF9pbnRlcm5hbF9mb3JtYXRfaW5pdGlhbGl6ZXIoCisgICAgICAgIGludGVybmFsX2Zvcm1hdCwg
cGFyc2VkWyJmb3JtYXROYW1lIl0pCiAKICAgICBpZiBsZW4ocHJlZml4KSA+IDA6CiAgICAgICAg
IHJldHVybiBzcGxpdF9mb3JtYXRfZW50cnlfdGVtcGxhdGUuZm9ybWF0KCoqcGFyc2VkKQpAQCAt
MzM0LDI2ICsyNTcsMTYgQEAgZGVmIHBhcnNlX2pzb25faW50b19zd2l0Y2hfYW5nbGVfZm9ybWF0
X3N0cmluZyhqc29uX21hcCwganNvbl9kYXRhKToKIAogICAgIHJldHVybiB0YWJsZV9kYXRhCiAK
LWRlZiByZWplY3RfZHVwbGljYXRlX2tleXMocGFpcnMpOgotICAgIGZvdW5kX2tleXMgPSB7fQot
ICAgIGZvciBrZXksIHZhbHVlIGluIHBhaXJzOgotICAgICAgICBpZiBrZXkgaW4gZm91bmRfa2V5
czoKLSAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZHVwbGljYXRlIGtleTogJXIiICUgKGtl
eSwpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICBmb3VuZF9rZXlzW2tleV0gPSB2YWx1ZQot
ICAgIHJldHVybiBmb3VuZF9rZXlzCi0KIGpzb25fbWFwID0gYW5nbGVfZm9ybWF0LmxvYWRfd2l0
aF9vdmVycmlkZShvcy5wYXRoLmFic3BhdGgoJ3RleHR1cmVfZm9ybWF0X21hcC5qc29uJykpCi0K
LXdpdGggb3BlbigndGV4dHVyZV9mb3JtYXRfZGF0YS5qc29uJykgYXMgdGV4dHVyZV9mb3JtYXRf
anNvbl9maWxlOgotICAgIHRleHR1cmVfZm9ybWF0X2RhdGEgPSB0ZXh0dXJlX2Zvcm1hdF9qc29u
X2ZpbGUucmVhZCgpCi0gICAgdGV4dHVyZV9mb3JtYXRfanNvbl9maWxlLmNsb3NlKCkKLSAgICBq
c29uX2RhdGEgPSBqc29uLmxvYWRzKHRleHR1cmVfZm9ybWF0X2RhdGEsIG9iamVjdF9wYWlyc19o
b29rPWFuZ2xlX2Zvcm1hdC5yZWplY3RfZHVwbGljYXRlX2tleXMpCi0KLSAgICBhbmdsZV9mb3Jt
YXRfY2FzZXMgPSBwYXJzZV9qc29uX2ludG9fc3dpdGNoX2FuZ2xlX2Zvcm1hdF9zdHJpbmcoanNv
bl9tYXAsIGpzb25fZGF0YSkKLSAgICBvdXRwdXRfY3BwID0gdGVtcGxhdGVfdGV4dHVyZV9mb3Jt
YXRfdGFibGVfYXV0b2dlbl9jcHAuZm9ybWF0KAotICAgICAgICBjb3B5cmlnaHRfeWVhcj1kYXRl
LnRvZGF5KCkueWVhciwKLSAgICAgICAgYW5nbGVfZm9ybWF0X2luZm9fY2FzZXM9YW5nbGVfZm9y
bWF0X2Nhc2VzKQotICAgIHdpdGggb3BlbigndGV4dHVyZV9mb3JtYXRfdGFibGVfYXV0b2dlbi5j
cHAnLCAnd3QnKSBhcyBvdXRfZmlsZToKLSAgICAgICAgb3V0X2ZpbGUud3JpdGUob3V0cHV0X2Nw
cCkKLSAgICAgICAgb3V0X2ZpbGUuY2xvc2UoKQorZGF0YV9zb3VyY2VfbmFtZSA9ICd0ZXh0dXJl
X2Zvcm1hdF9kYXRhLmpzb24nCitqc29uX2RhdGEgPSBhbmdsZV9mb3JtYXQubG9hZF9qc29uKGRh
dGFfc291cmNlX25hbWUpCisKK2FuZ2xlX2Zvcm1hdF9jYXNlcyA9IHBhcnNlX2pzb25faW50b19z
d2l0Y2hfYW5nbGVfZm9ybWF0X3N0cmluZyhqc29uX21hcCwganNvbl9kYXRhKQorb3V0cHV0X2Nw
cCA9IHRlbXBsYXRlX3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW5fY3BwLmZvcm1hdCgKKyAg
ICBzY3JpcHRfbmFtZSA9IHN5cy5hcmd2WzBdLAorICAgIGNvcHlyaWdodF95ZWFyID0gZGF0ZS50
b2RheSgpLnllYXIsCisgICAgYW5nbGVfZm9ybWF0X2luZm9fY2FzZXMgPSBhbmdsZV9mb3JtYXRf
Y2FzZXMsCisgICAgZGF0YV9zb3VyY2VfbmFtZSA9IGRhdGFfc291cmNlX25hbWUpCit3aXRoIG9w
ZW4oJ3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwJywgJ3d0JykgYXMgb3V0X2ZpbGU6
CisgICAgb3V0X2ZpbGUud3JpdGUob3V0cHV0X2NwcCkKKyAgICBvdXRfZmlsZS5jbG9zZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmNwcAppbmRl
eCBlZGM2YTQxYTg5OWU1NGU4ZTJlNmYyZGNmZGQ0YzBjZjAwYmE4NGYyLi4wYmU0NzAzMzNhMjlj
MTRlN2I0NzRlOWQyMWRiNDMwNTAzMmU1NGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5jcHAKQEAgLTIxLDcgKzIxLDkgQEAKICNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyVGFyZ2V0MTEuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGUuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuaCIKLSNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvV29ya2Fyb3VuZHNEM0QuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kcml2ZXJfdXRpbHMuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9QbGF0Zm9y
bS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dvcmthcm91bmRzRDNELmgiCiAKIG5hbWVzcGFjZSBy
eAogewpAQCAtNTksNyArNjEsNyBAQCBjbGFzcyBEWEdJU3VwcG9ydEhlbHBlciA6IGFuZ2xlOjpO
b25Db3B5YWJsZQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIC8vIFRPRE8oam1hZGlsbCk6IGZpbmQgb3V0IHdoeSB3ZSBmYWlsIHRoaXMgY2FsbCBzb21l
dGltZXMgaW4gRkw5XzMKLSAgICAgICAgICAgICAgICAvLyBFUlIoIkVycm9yIGNoZWNraW5nIGZv
cm1hdCBzdXBwb3J0IGZvciBmb3JtYXQgMHgleCIsIGR4Z2lGb3JtYXQpOworICAgICAgICAgICAg
ICAgIC8vIEVSUigpIDw8ICJFcnJvciBjaGVja2luZyBmb3JtYXQgc3VwcG9ydCBmb3IgZm9ybWF0
IDB4IiA8PCBzdGQ6OmhleCA8PCBkeGdpRm9ybWF0OwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKQEAgLTcxLDcgKzczLDcgQEAgY2xhc3MgRFhHSVN1cHBvcnRIZWxwZXIgOiBhbmdsZTo6Tm9u
Q29weWFibGUKICAgICBEM0RfRkVBVFVSRV9MRVZFTCBtRmVhdHVyZUxldmVsOwogfTsKIAotZ2w6
OlRleHR1cmVDYXBzIEdlbmVyYXRlVGV4dHVyZUZvcm1hdENhcHMoR0xpbnQgbWF4Q2xpZW50VmVy
c2lvbiwKK2dsOjpUZXh0dXJlQ2FwcyBHZW5lcmF0ZVRleHR1cmVGb3JtYXRDYXBzKGdsOjpWZXJz
aW9uIG1heENsaWVudFZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZyZW5k
ZXJlcjExRGV2aWNlQ2FwcykKQEAgLTg3LDcgKzg5LDcgQEAgZ2w6OlRleHR1cmVDYXBzIEdlbmVy
YXRlVGV4dHVyZUZvcm1hdENhcHMoR0xpbnQgbWF4Q2xpZW50VmVyc2lvbiwKICAgICBpZiAoaW50
ZXJuYWxGb3JtYXRJbmZvLmRlcHRoQml0cyA9PSAwICYmIGludGVybmFsRm9ybWF0SW5mby5zdGVu
Y2lsQml0cyA9PSAwKQogICAgIHsKICAgICAgICAgdGV4U3VwcG9ydE1hc2sgfD0gRDNEMTFfRk9S
TUFUX1NVUFBPUlRfVEVYVFVSRUNVQkU7Ci0gICAgICAgIGlmIChtYXhDbGllbnRWZXJzaW9uID4g
MikKKyAgICAgICAgaWYgKG1heENsaWVudFZlcnNpb24ubWFqb3IgPiAyKQogICAgICAgICB7CiAg
ICAgICAgICAgICB0ZXhTdXBwb3J0TWFzayB8PSBEM0QxMV9GT1JNQVRfU1VQUE9SVF9URVhUVVJF
M0Q7CiAgICAgICAgIH0KQEAgLTgyOCw2ICs4MzAsODQgQEAgc2l6ZV90IEdldE1heGltdW1QaXhl
bFRleHR1cmVVbml0cyhEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCiAgICAgfQogfQog
CitzdGQ6OmFycmF5PEdMdWludCwgMz4gR2V0TWF4Q29tcHV0ZVdvcmtHcm91cENvdW50KEQzRF9G
RUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkK
KyAgICB7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2Fz
ZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgICAgICAgcmV0dXJuIHt7RDNEMTFfQ1Nf
RElTUEFUQ0hfTUFYX1RIUkVBRF9HUk9VUFNfUEVSX0RJTUVOU0lPTiwKKyAgICAgICAgICAgICAg
ICAgICAgIEQzRDExX0NTX0RJU1BBVENIX01BWF9USFJFQURfR1JPVVBTX1BFUl9ESU1FTlNJT04s
CisgICAgICAgICAgICAgICAgICAgICBEM0QxMV9DU19ESVNQQVRDSF9NQVhfVEhSRUFEX0dST1VQ
U19QRVJfRElNRU5TSU9OfX07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHJldHVybiB7ezAsIDAsIDB9fTsKKyAgICB9Cit9CisKK3N0ZDo6YXJyYXk8
R0x1aW50LCAzPiBHZXRNYXhDb21wdXRlV29ya0dyb3VwU2l6ZShEM0RfRkVBVFVSRV9MRVZFTCBm
ZWF0dXJlTGV2ZWwpCit7CisgICAgc3dpdGNoIChmZWF0dXJlTGV2ZWwpCisgICAgeworICAgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTFfMDoKKyAgICAgICAgICAgIHJldHVybiB7e0QzRDExX0NTX1RIUkVBRF9HUk9VUF9N
QVhfWCwgRDNEMTFfQ1NfVEhSRUFEX0dST1VQX01BWF9ZLAorICAgICAgICAgICAgICAgICAgICAg
RDNEMTFfQ1NfVEhSRUFEX0dST1VQX01BWF9afX07CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiB7ezAsIDAsIDB9fTsKKyAgICB9Cit9CisK
K3NpemVfdCBHZXRNYXhDb21wdXRlV29ya0dyb3VwSW52b2NhdGlvbnMoRDNEX0ZFQVRVUkVfTEVW
RUwgZmVhdHVyZUxldmVsKQoreworICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQorICAgIHsKKyAg
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgorICAgICAgICBjYXNlIEQzRF9GRUFU
VVJFX0xFVkVMXzExXzA6CisgICAgICAgICAgICByZXR1cm4gRDNEMTFfQ1NfVEhSRUFEX0dST1VQ
X01BWF9USFJFQURTX1BFUl9HUk9VUDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgIH0KK30KKworc2l6ZV90IEdldE1heGltdW1Db21wdXRlVW5pZm9ybVZlY3Rv
cnMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQoreworICAgIHN3aXRjaCAoZmVhdHVy
ZUxldmVsKQorICAgIHsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgorICAg
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgICAgICByZXR1cm4gRDNE
MTFfUkVRX0NPTlNUQU5UX0JVRkZFUl9FTEVNRU5UX0NPVU5UOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzaXplX3QgR2V0TWF4aW11bUNvbXB1
dGVVbmlmb3JtQmxvY2tzKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK3sKKyAgICBz
d2l0Y2ggKGZlYXR1cmVMZXZlbCkKKyAgICB7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgICAg
ICAgcmV0dXJuIEQzRDExX0NPTU1PTlNIQURFUl9DT05TVEFOVF9CVUZGRVJfQVBJX1NMT1RfQ09V
TlQgLQorICAgICAgICAgICAgICAgICAgIGQzZDExOjpSRVNFUlZFRF9DT05TVEFOVF9CVUZGRVJf
U0xPVF9DT1VOVDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAwOworICAg
IH0KK30KKworc2l6ZV90IEdldE1heGltdW1Db21wdXRlVGV4dHVyZVVuaXRzKEQzRF9GRUFUVVJF
X0xFVkVMIGZlYXR1cmVMZXZlbCkKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkKKyAgICB7
CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDExX0NPTU1PTlNIQURF
Ul9TQU1QTEVSX1NMT1RfQ09VTlQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICB9Cit9CisKIGludCBHZXRNaW5pbXVtVGV4ZWxPZmZzZXQoRDNEX0ZFQVRVUkVf
TEVWRUwgZmVhdHVyZUxldmVsKQogewogICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQpAQCAtOTc4
LDYgKzEwNTgsMTggQEAgc2l6ZV90IEdldE1heGltdW1TdHJlYW1PdXRwdXRTZXBhcmF0ZUNvbXBv
bmVudHMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQogICAgIH0KIH0KIAorSW50ZWxE
cml2ZXJWZXJzaW9uIEdldEludGVsRHJpdmVyVmVyc2lvbihjb25zdCBPcHRpb25hbDxMQVJHRV9J
TlRFR0VSPiBkcml2ZXJWZXJzaW9uKQoreworICAgIGlmICghZHJpdmVyVmVyc2lvbi52YWxpZCgp
KQorICAgICAgICByZXR1cm4gSW50ZWxEcml2ZXJWZXJzaW9uKDApOworCisgICAgLy8gQWNjb3Jk
aW5nIHRvIGh0dHA6Ly93d3cuaW50ZWwuY29tL2NvbnRlbnQvd3d3L3VzL2VuL3N1cHBvcnQvZ3Jh
cGhpY3MtZHJpdmVycy8wMDAwMDU2NTQuaHRtbCwKKyAgICAvLyBvbmx5IHRoZSBmb3VydGggcGFy
dCBpcyBuZWNlc3Nhcnkgc2luY2UgaXQgc3RhbmRzIGZvciB0aGUgZHJpdmVyIHNwZWNpZmljIHVu
aXF1ZSB2ZXJzaW9uCisgICAgLy8gbnVtYmVyLgorICAgIFdPUkQgcGFydCA9IExPV09SRChkcml2
ZXJWZXJzaW9uLnZhbHVlKCkuTG93UGFydCk7CisgICAgcmV0dXJuIEludGVsRHJpdmVyVmVyc2lv
bihwYXJ0KTsKK30KKwogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCiB1bnNpZ25lZCBpbnQg
R2V0UmVzZXJ2ZWRWZXJ0ZXhVbmlmb3JtVmVjdG9ycyhEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJl
TGV2ZWwpCkBAIC0xMDIyLDI0ICsxMTE0LDI1IEBAIHVuc2lnbmVkIGludCBHZXRSZXNlcnZlZEZy
YWdtZW50VW5pZm9ybVZlY3RvcnMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQogICAg
IH0KIH0KIAotR0xpbnQgR2V0TWF4aW11bUNsaWVudFZlcnNpb24oRDNEX0ZFQVRVUkVfTEVWRUwg
ZmVhdHVyZUxldmVsKQorZ2w6OlZlcnNpb24gR2V0TWF4aW11bUNsaWVudFZlcnNpb24oRDNEX0ZF
QVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQogewogICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQog
ICAgIHsKICAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgogICAgICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgICAgICByZXR1cm4gZ2w6OlZlcnNpb24o
MywgMSk7CiAgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMToKLSAgICAgICAgICAg
IHJldHVybiAzOworICAgICAgICAgICAgcmV0dXJuIGdsOjpWZXJzaW9uKDMsIDApOwogCiAgICAg
ICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDoKICAgICAgICAgY2FzZSBEM0RfRkVBVFVS
RV9MRVZFTF85XzM6CiAgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8yOgogICAgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMToKLSAgICAgICAgICAgIHJldHVybiAyOworICAg
ICAgICAgICAgcmV0dXJuIGdsOjpWZXJzaW9uKDIsIDApOwogCiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
ICAgICByZXR1cm4gZ2w6OlZlcnNpb24oMCwgMCk7CiAgICAgfQogfQogCkBAIC0xMDUxLDcgKzEx
NDQsOCBAQCB2b2lkIEdlbmVyYXRlQ2FwcyhJRDNEMTFEZXZpY2UgKmRldmljZSwgSUQzRDExRGV2
aWNlQ29udGV4dCAqZGV2aWNlQ29udGV4dCwgY29ucwogICAgIGNvbnN0IGdsOjpGb3JtYXRTZXQg
JmFsbEZvcm1hdHMgPSBnbDo6R2V0QWxsU2l6ZWRJbnRlcm5hbEZvcm1hdHMoKTsKICAgICBmb3Ig
KGdsOjpGb3JtYXRTZXQ6OmNvbnN0X2l0ZXJhdG9yIGludGVybmFsRm9ybWF0ID0gYWxsRm9ybWF0
cy5iZWdpbigpOyBpbnRlcm5hbEZvcm1hdCAhPSBhbGxGb3JtYXRzLmVuZCgpOyArK2ludGVybmFs
Rm9ybWF0KQogICAgIHsKLSAgICAgICAgZ2w6OlRleHR1cmVDYXBzIHRleHR1cmVDYXBzID0gR2Vu
ZXJhdGVUZXh0dXJlRm9ybWF0Q2FwcyhHZXRNYXhpbXVtQ2xpZW50VmVyc2lvbihmZWF0dXJlTGV2
ZWwpLCAqaW50ZXJuYWxGb3JtYXQsIGRldmljZSwgcmVuZGVyZXIxMURldmljZUNhcHMpOworICAg
ICAgICBnbDo6VGV4dHVyZUNhcHMgdGV4dHVyZUNhcHMgPSBHZW5lcmF0ZVRleHR1cmVGb3JtYXRD
YXBzKAorICAgICAgICAgICAgR2V0TWF4aW11bUNsaWVudFZlcnNpb24oZmVhdHVyZUxldmVsKSwg
KmludGVybmFsRm9ybWF0LCBkZXZpY2UsIHJlbmRlcmVyMTFEZXZpY2VDYXBzKTsKICAgICAgICAg
dGV4dHVyZUNhcHNNYXAtPmluc2VydCgqaW50ZXJuYWxGb3JtYXQsIHRleHR1cmVDYXBzKTsKIAog
ICAgICAgICBtYXhTYW1wbGVzID0gc3RkOjptYXgobWF4U2FtcGxlcywgdGV4dHVyZUNhcHMuZ2V0
TWF4U2FtcGxlcygpKTsKQEAgLTExMzEsNiArMTIyNSwxNCBAQCB2b2lkIEdlbmVyYXRlQ2FwcyhJ
RDNEMTFEZXZpY2UgKmRldmljZSwgSUQzRDExRGV2aWNlQ29udGV4dCAqZGV2aWNlQ29udGV4dCwg
Y29ucwogICAgIGNhcHMtPm1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzID0KICAgICAgICAgc3Rh
dGljX2Nhc3Q8R0x1aW50PihHZXRNYXhpbXVtVmVydGV4VGV4dHVyZVVuaXRzKGZlYXR1cmVMZXZl
bCkpOwogCisgICAgLy8gVmVydGV4IEF0dHJpYnV0ZSBCaW5kaW5ncyBhcmUgZW11bGF0ZWQgb24g
RDNEMTEuCisgICAgY2Fwcy0+bWF4VmVydGV4QXR0cmliQmluZGluZ3MgPSBjYXBzLT5tYXhWZXJ0
ZXhBdHRyaWJ1dGVzOworICAgIC8vIEV4cGVyaW1lbnRhbCB0ZXN0aW5nIGNvbmZpcm1lZCB0aGVy
ZSBpcyBubyBleHBsaWNpdCBsaW1pdCBvbiBtYXhpbXVtIGJ1ZmZlciBvZmZzZXQgaW4gRDNEMTEu
CisgICAgY2Fwcy0+bWF4VmVydGV4QXR0cmliUmVsYXRpdmVPZmZzZXQgPSBzdGQ6Om51bWVyaWNf
bGltaXRzPEdMaW50Pjo6bWF4KCk7CisgICAgLy8gRXhwZXJpbWVudGFsIHRlc3RpbmcgY29uZmly
bWVkIDIwNDggaXMgdGhlIG1heGltdW0gc3RyaWRlIHRoYXQgRDNEMTEgY2FuIHN1cHBvcnQgb24g
YWxsCisgICAgLy8gcGxhdGZvcm1zLgorICAgIGNhcHMtPm1heFZlcnRleEF0dHJpYlN0cmlkZSA9
IDIwNDg7CisKICAgICAvLyBGcmFnbWVudCBzaGFkZXIgbGltaXRzCiAgICAgY2Fwcy0+bWF4RnJh
Z21lbnRVbmlmb3JtQ29tcG9uZW50cyA9CiAgICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4oR2V0
TWF4aW11bVBpeGVsVW5pZm9ybVZlY3RvcnMoZmVhdHVyZUxldmVsKSkgKiA0OwpAQCAtMTE0NCwx
MCArMTI0NiwyNSBAQCB2b2lkIEdlbmVyYXRlQ2FwcyhJRDNEMTFEZXZpY2UgKmRldmljZSwgSUQz
RDExRGV2aWNlQ29udGV4dCAqZGV2aWNlQ29udGV4dCwgY29ucwogICAgIGNhcHMtPm1pblByb2dy
YW1UZXhlbE9mZnNldCA9IEdldE1pbmltdW1UZXhlbE9mZnNldChmZWF0dXJlTGV2ZWwpOwogICAg
IGNhcHMtPm1heFByb2dyYW1UZXhlbE9mZnNldCA9IEdldE1heGltdW1UZXhlbE9mZnNldChmZWF0
dXJlTGV2ZWwpOwogCisgICAgLy8gQ29tcHV0ZSBzaGFkZXIgbGltaXRzCisgICAgY2Fwcy0+bWF4
Q29tcHV0ZVdvcmtHcm91cENvdW50ID0gR2V0TWF4Q29tcHV0ZVdvcmtHcm91cENvdW50KGZlYXR1
cmVMZXZlbCk7CisgICAgY2Fwcy0+bWF4Q29tcHV0ZVdvcmtHcm91cFNpemUgID0gR2V0TWF4Q29t
cHV0ZVdvcmtHcm91cFNpemUoZmVhdHVyZUxldmVsKTsKKyAgICBjYXBzLT5tYXhDb21wdXRlV29y
a0dyb3VwSW52b2NhdGlvbnMgPQorICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KEdldE1heENv
bXB1dGVXb3JrR3JvdXBJbnZvY2F0aW9ucyhmZWF0dXJlTGV2ZWwpKTsKKyAgICBjYXBzLT5tYXhD
b21wdXRlVW5pZm9ybUNvbXBvbmVudHMgPQorICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KEdl
dE1heGltdW1Db21wdXRlVW5pZm9ybVZlY3RvcnMoZmVhdHVyZUxldmVsKSkgKiA0OworICAgIGNh
cHMtPm1heENvbXB1dGVVbmlmb3JtQmxvY2tzID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50
PihHZXRNYXhpbXVtQ29tcHV0ZVVuaWZvcm1CbG9ja3MoZmVhdHVyZUxldmVsKSk7CisgICAgY2Fw
cy0+bWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8R0x1
aW50PihHZXRNYXhpbXVtQ29tcHV0ZVRleHR1cmVVbml0cyhmZWF0dXJlTGV2ZWwpKTsKKwogICAg
IC8vIEFnZ3JlZ2F0ZSBzaGFkZXIgbGltaXRzCiAgICAgY2Fwcy0+bWF4VW5pZm9ybUJ1ZmZlckJp
bmRpbmdzID0gY2Fwcy0+bWF4VmVydGV4VW5pZm9ybUJsb2NrcyArIGNhcHMtPm1heEZyYWdtZW50
VW5pZm9ybUJsb2NrczsKICAgICBjYXBzLT5tYXhVbmlmb3JtQmxvY2tTaXplID0gR2V0TWF4aW11
bUNvbnN0YW50QnVmZmVyU2l6ZShmZWF0dXJlTGV2ZWwpOwogCisgICAgLy8gVE9ETyhvZXR1YWhv
KTogR2V0IGEgbW9yZSBhY2N1cmF0ZSBsaW1pdC4gRm9yIG5vdyB1c2luZyB0aGUgbWluaW11bSBy
ZXF1aXJlbWVudCBmb3IgR0xFUyAzLjEuCisgICAgY2Fwcy0+bWF4VW5pZm9ybUxvY2F0aW9ucyA9
IDEwMjQ7CisKICAgICAvLyBXaXRoIERpcmVjdFggMTEuMSwgY29uc3RhbnQgYnVmZmVyIG9mZnNl
dCBhbmQgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYgY29uc3RhbnRzIG9mIDE2IGJ5dGVz
IGVhY2guCiAgICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS93
aW5kb3dzL2Rlc2t0b3AvaGg0MDQ2NDklMjh2PXZzLjg1JTI5LmFzcHgKICAgICAvLyBXaXRoIERp
cmVjdFggMTEuMCwgd2UgZW11bGF0ZSBVQk8gb2Zmc2V0cyB1c2luZyBjb3BpZXMgb2YgcmFuZ2Vz
IG9mIHRoZSBVQk8gaG93ZXZlcgpAQCAtMTE1OSw2ICsxMjc2LDkgQEAgdm9pZCBHZW5lcmF0ZUNh
cHMoSUQzRDExRGV2aWNlICpkZXZpY2UsIElEM0QxMURldmljZUNvbnRleHQgKmRldmljZUNvbnRl
eHQsIGNvbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8R0xpbnQ2ND4oY2Fwcy0+bWF4VmVydGV4VW5pZm9ybUNvbXBvbmVudHMpOwog
ICAgIGNhcHMtPm1heENvbWJpbmVkRnJhZ21lbnRVbmlmb3JtQ29tcG9uZW50cyA9IChzdGF0aWNf
Y2FzdDxHTGludDY0PihjYXBzLT5tYXhGcmFnbWVudFVuaWZvcm1CbG9ja3MpICogc3RhdGljX2Nh
c3Q8R0xpbnQ2ND4oY2Fwcy0+bWF4VW5pZm9ybUJsb2NrU2l6ZSAvIDQpKSArCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xpbnQ2
ND4oY2Fwcy0+bWF4RnJhZ21lbnRVbmlmb3JtQ29tcG9uZW50cyk7CisgICAgY2Fwcy0+bWF4Q29t
YmluZWRDb21wdXRlVW5pZm9ybUNvbXBvbmVudHMgPQorICAgICAgICBzdGF0aWNfY2FzdDxHTHVp
bnQ+KGNhcHMtPm1heENvbXB1dGVVbmlmb3JtQmxvY2tzICogKGNhcHMtPm1heFVuaWZvcm1CbG9j
a1NpemUgLyA0KSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fwcy0+bWF4Q29tcHV0
ZVVuaWZvcm1Db21wb25lbnRzKTsKICAgICBjYXBzLT5tYXhWYXJ5aW5nQ29tcG9uZW50cyA9CiAg
ICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4oR2V0TWF4aW11bVZlcnRleE91dHB1dFZlY3RvcnMo
ZmVhdHVyZUxldmVsKSkgKiA0OwogICAgIGNhcHMtPm1heFZhcnlpbmdWZWN0b3JzICAgICAgICAg
ICAgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KEdldE1heGltdW1WZXJ0ZXhPdXRwdXRWZWN0b3JzKGZl
YXR1cmVMZXZlbCkpOwpAQCAtMTU3OSw2ICsxNjk5LDI5IEBAIEQzRDExX1FVRVJZIENvbnZlcnRR
dWVyeVR5cGUoR0xlbnVtIHF1ZXJ5VHlwZSkKICAgICB9CiB9CiAKKy8vIEdldCB0aGUgRDNEMTEg
d3JpdGUgbWFzayBjb3ZlcmluZyBhbGwgY29sb3IgY2hhbm5lbHMgb2YgYSBnaXZlbiBmb3JtYXQK
K1VJTlQ4IEdldENvbG9yTWFzayhjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgKmZvcm1hdEluZm8p
Cit7CisgICAgVUlOVDggbWFzayA9IDA7CisgICAgaWYgKGZvcm1hdEluZm8tPnJlZEJpdHMgPiAw
KQorICAgIHsKKyAgICAgICAgbWFzayB8PSBEM0QxMV9DT0xPUl9XUklURV9FTkFCTEVfUkVEOwor
ICAgIH0KKyAgICBpZiAoZm9ybWF0SW5mby0+Z3JlZW5CaXRzID4gMCkKKyAgICB7CisgICAgICAg
IG1hc2sgfD0gRDNEMTFfQ09MT1JfV1JJVEVfRU5BQkxFX0dSRUVOOworICAgIH0KKyAgICBpZiAo
Zm9ybWF0SW5mby0+Ymx1ZUJpdHMgPiAwKQorICAgIHsKKyAgICAgICAgbWFzayB8PSBEM0QxMV9D
T0xPUl9XUklURV9FTkFCTEVfQkxVRTsKKyAgICB9CisgICAgaWYgKGZvcm1hdEluZm8tPmFscGhh
Qml0cyA+IDApCisgICAgeworICAgICAgICBtYXNrIHw9IEQzRDExX0NPTE9SX1dSSVRFX0VOQUJM
RV9BTFBIQTsKKyAgICB9CisgICAgcmV0dXJuIG1hc2s7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBn
bF9kM2QxMQogCiBuYW1lc3BhY2UgZDNkMTEKQEAgLTE3OTAsNyArMTkzMyw2IEBAIElEM0QxMUlu
cHV0TGF5b3V0ICpMYXp5SW5wdXRMYXlvdXQ6OnJlc29sdmUoSUQzRDExRGV2aWNlICpkZXZpY2Up
CiAgICAgICAgICAgICBkZXZpY2UtPkNyZWF0ZUlucHV0TGF5b3V0KCZtSW5wdXREZXNjWzBdLCBz
dGF0aWNfY2FzdDxVSU5UPihtSW5wdXREZXNjLnNpemUoKSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1CeXRlQ29kZSwgbUJ5dGVDb2RlTGVuLCAmbVJlc291cmNlKTsK
ICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKLSAgICAgICAgVU5VU0VEX0FTU0VS
VElPTl9WQVJJQUJMRShyZXN1bHQpOwogICAgICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1SZXNv
dXJjZSwgbURlYnVnTmFtZSk7CiAgICAgfQogCkBAIC0xODEwLDI2ICsxOTUyLDI1IEBAIElEM0Qx
MUJsZW5kU3RhdGUgKkxhenlCbGVuZFN0YXRlOjpyZXNvbHZlKElEM0QxMURldmljZSAqZGV2aWNl
KQogICAgIHsKICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUJsZW5kU3Rh
dGUoJm1EZXNjLCAmbVJlc291cmNlKTsKICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQp
KTsKLSAgICAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShyZXN1bHQpOwogICAgICAgICBk
M2QxMTo6U2V0RGVidWdOYW1lKG1SZXNvdXJjZSwgbURlYnVnTmFtZSk7CiAgICAgfQogCiAgICAg
cmV0dXJuIG1SZXNvdXJjZTsKIH0KIAotV29ya2Fyb3VuZHNEM0QgR2VuZXJhdGVXb3JrYXJvdW5k
cyhjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2FwcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgRFhHSV9BREFQVEVSX0RFU0MgJmFkYXB0ZXJEZXNj
KQorYW5nbGU6Oldvcmthcm91bmRzRDNEIEdlbmVyYXRlV29ya2Fyb3VuZHMoY29uc3QgUmVuZGVy
ZXIxMURldmljZUNhcHMgJmRldmljZUNhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBEWEdJX0FEQVBURVJfREVTQyAmYWRhcHRlckRlc2MpCiB7CiAg
ICAgYm9vbCBpczlfMyA9IChkZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCA8PSBEM0RfRkVBVFVSRV9M
RVZFTF85XzMpOwogCi0gICAgV29ya2Fyb3VuZHNEM0Qgd29ya2Fyb3VuZHM7CisgICAgYW5nbGU6
Oldvcmthcm91bmRzRDNEIHdvcmthcm91bmRzOwogICAgIHdvcmthcm91bmRzLm1ydFBlcmZXb3Jr
YXJvdW5kID0gdHJ1ZTsKICAgICB3b3JrYXJvdW5kcy5zZXREYXRhRmFzdGVyVGhhbkltYWdlVXBs
b2FkID0gdHJ1ZTsKICAgICB3b3JrYXJvdW5kcy56ZXJvTWF4TG9kV29ya2Fyb3VuZCAgICAgICAg
ICAgICA9IGlzOV8zOwogICAgIHdvcmthcm91bmRzLnVzZUluc3RhbmNlZFBvaW50U3ByaXRlRW11
bGF0aW9uID0gaXM5XzM7CiAKICAgICAvLyBUT0RPKGptYWRpbGwpOiBOYXJyb3cgcHJvYmxlbWF0
aWMgZHJpdmVyIHJhbmdlLgotICAgIGlmIChhZGFwdGVyRGVzYy5WZW5kb3JJZCA9PSBWRU5ET1Jf
SURfTlZJRElBKQorICAgIGlmIChJc052aWRpYShhZGFwdGVyRGVzYy5WZW5kb3JJZCkpCiAgICAg
ewogICAgICAgICBpZiAoZGV2aWNlQ2Fwcy5kcml2ZXJWZXJzaW9uLnZhbGlkKCkpCiAgICAgICAg
IHsKQEAgLTE4NDgsMTYgKzE5ODksNDEgQEAgV29ya2Fyb3VuZHNEM0QgR2VuZXJhdGVXb3JrYXJv
dW5kcyhjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2FwcywKICAgICAvLyBUT0RP
KGptYWRpbGwpOiBEaXNhYmxlIHdvcmthcm91bmQgd2hlbiB3ZSBoYXZlIGEgZml4ZWQgY29tcGls
ZXIgRExMLgogICAgIHdvcmthcm91bmRzLmV4cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucyA9IHRy
dWU7CiAKLSAgICB3b3JrYXJvdW5kcy5mbHVzaEFmdGVyRW5kaW5nVHJhbnNmb3JtRmVlZGJhY2sg
PSAoYWRhcHRlckRlc2MuVmVuZG9ySWQgPT0gVkVORE9SX0lEX05WSURJQSk7Ci0gICAgd29ya2Fy
b3VuZHMuZ2V0RGltZW5zaW9uc0lnbm9yZXNCYXNlTGV2ZWwgICAgID0gKGFkYXB0ZXJEZXNjLlZl
bmRvcklkID09IFZFTkRPUl9JRF9OVklESUEpOworICAgIHdvcmthcm91bmRzLmZsdXNoQWZ0ZXJF
bmRpbmdUcmFuc2Zvcm1GZWVkYmFjayA9IElzTnZpZGlhKGFkYXB0ZXJEZXNjLlZlbmRvcklkKTsK
KyAgICB3b3JrYXJvdW5kcy5nZXREaW1lbnNpb25zSWdub3Jlc0Jhc2VMZXZlbCAgICAgPSBJc052
aWRpYShhZGFwdGVyRGVzYy5WZW5kb3JJZCk7CiAKLSAgICB3b3JrYXJvdW5kcy5wcmVBZGRUZXhl
bEZldGNoT2Zmc2V0cyA9IChhZGFwdGVyRGVzYy5WZW5kb3JJZCA9PSBWRU5ET1JfSURfSU5URUwp
OwotICAgIHdvcmthcm91bmRzLmRpc2FibGVCNUc2UjVTdXBwb3J0ICAgID0gKGFkYXB0ZXJEZXNj
LlZlbmRvcklkID09IFZFTkRPUl9JRF9JTlRFTCk7Ci0gICAgd29ya2Fyb3VuZHMucmV3cml0ZVVu
YXJ5TWludXNPcGVyYXRvciA9IChhZGFwdGVyRGVzYy5WZW5kb3JJZCA9PSBWRU5ET1JfSURfSU5U
RUwpOwotICAgIHdvcmthcm91bmRzLmVtdWxhdGVJc25hbkZsb2F0ICAgICAgICAgPSAoYWRhcHRl
ckRlc2MuVmVuZG9ySWQgPT0gVkVORE9SX0lEX0lOVEVMKTsKKyAgICBpZiAoSXNJbnRlbChhZGFw
dGVyRGVzYy5WZW5kb3JJZCkpCisgICAgeworICAgICAgICB3b3JrYXJvdW5kcy5wcmVBZGRUZXhl
bEZldGNoT2Zmc2V0cyAgICAgICAgICAgPSB0cnVlOworICAgICAgICB3b3JrYXJvdW5kcy51c2VT
eXN0ZW1NZW1vcnlGb3JDb25zdGFudEJ1ZmZlcnMgPSB0cnVlOworICAgICAgICB3b3JrYXJvdW5k
cy5kaXNhYmxlQjVHNlI1U3VwcG9ydCA9CisgICAgICAgICAgICBkM2QxMV9nbDo6R2V0SW50ZWxE
cml2ZXJWZXJzaW9uKGRldmljZUNhcHMuZHJpdmVyVmVyc2lvbikgPCBJbnRlbERyaXZlclZlcnNp
b24oNDUzOSk7CisgICAgICAgIGlmIChJc1NreWxha2UoYWRhcHRlckRlc2MuRGV2aWNlSWQpKQor
ICAgICAgICB7CisgICAgICAgICAgICB3b3JrYXJvdW5kcy5jYWxsQ2xlYXJUd2ljZU9uU21hbGxU
YXJnZXQgPSB0cnVlOworICAgICAgICAgICAgd29ya2Fyb3VuZHMuZW11bGF0ZUlzbmFuRmxvYXQg
PQorICAgICAgICAgICAgICAgIGQzZDExX2dsOjpHZXRJbnRlbERyaXZlclZlcnNpb24oZGV2aWNl
Q2Fwcy5kcml2ZXJWZXJzaW9uKSA8CisgICAgICAgICAgICAgICAgSW50ZWxEcml2ZXJWZXJzaW9u
KDQ1NDIpOworICAgICAgICB9CisgICAgICAgIHdvcmthcm91bmRzLnJld3JpdGVVbmFyeU1pbnVz
T3BlcmF0b3IgPQorICAgICAgICAgICAgSXNCcm9hZHdlbGwoYWRhcHRlckRlc2MuRGV2aWNlSWQp
IHx8IElzSGFzd2VsbChhZGFwdGVyRGVzYy5EZXZpY2VJZCk7CisgICAgfQogCiAgICAgLy8gVE9E
TyhqbWFkaWxsKTogRGlzYWJsZSB3aGVuIHdlIGhhdmUgYSBmaXhlZCBkcml2ZXIgdmVyc2lvbi4K
LSAgICB3b3JrYXJvdW5kcy5lbXVsYXRlVGlueVN0ZW5jaWxUZXh0dXJlcyA9IChhZGFwdGVyRGVz
Yy5WZW5kb3JJZCA9PSBWRU5ET1JfSURfQU1EKTsKKyAgICB3b3JrYXJvdW5kcy5lbXVsYXRlVGlu
eVN0ZW5jaWxUZXh0dXJlcyA9IElzQU1EKGFkYXB0ZXJEZXNjLlZlbmRvcklkKTsKKworICAgIC8v
IFRoZSB0aW55IHN0ZW5jaWwgdGV4dHVyZSB3b3JrYXJvdW5kIGludm9sdmVzIHVzaW5nIENvcHlT
dWJyZXNvdXJjZSBvciBVcGRhdGVTdWJyZXNvdXJjZSBvbiBhCisgICAgLy8gZGVwdGggc3RlbmNp
bCB0ZXh0dXJlLiAgVGhpcyBpcyBub3QgYWxsb3dlZCB1bnRpbCBmZWF0dXJlIGxldmVsIDEwLjEg
YnV0IHNpbmNlIGl0IGlzIG5vdAorICAgIC8vIHBvc3NpYmxlIHRvIHN1cHBvcnQgRVMzIG9uIHRo
ZXNlIGRldmljZXMsIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHRoZSB3b3JrYXJvdW5kIHRvIGJlZ2lu
IHdpdGgKKyAgICAvLyAoYW5nbGVidWcuY29tLzE1NzIpLgorICAgIGlmIChkZXZpY2VDYXBzLmZl
YXR1cmVMZXZlbCA8IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzEpCisgICAgeworICAgICAgICB3b3Jr
YXJvdW5kcy5lbXVsYXRlVGlueVN0ZW5jaWxUZXh0dXJlcyA9IGZhbHNlOworICAgIH0KKworICAg
IC8vIENhbGwgcGxhdGZvcm0gaG9va3MgZm9yIHRlc3Rpbmcgb3ZlcnJpZGVzLgorICAgIGF1dG8g
KnBsYXRmb3JtID0gQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKTsKKyAgICBwbGF0Zm9ybS0+b3ZlcnJp
ZGVXb3JrYXJvdW5kc0QzRChwbGF0Zm9ybSwgJndvcmthcm91bmRzKTsKIAogICAgIHJldHVybiB3
b3JrYXJvdW5kczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjEx
X3V0aWxzLmgKaW5kZXggNDYzNTcxY2Y5YmQwNGU0MDk1ODJiZDE3OTM5MjkzZDk0MjYyNGJmOC4u
ZjA1ZDVlZjgxOTY2OTQ3NzA0NzQyZDIwNTU4NjNjOWFjNTUzNDQ4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5k
ZXJlcjExX3V0aWxzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmgKQEAgLTMwLDcgKzMwLDYgQEAg
bmFtZXNwYWNlIHJ4CiB7CiBjbGFzcyBSZW5kZXJlcjExOwogY2xhc3MgUmVuZGVyVGFyZ2V0MTE7
Ci1zdHJ1Y3QgV29ya2Fyb3VuZHNEM0Q7CiBzdHJ1Y3QgUmVuZGVyZXIxMURldmljZUNhcHM7CiAK
IHVzaW5nIFJlbmRlclRhcmdldEFycmF5ID0gc3RkOjphcnJheTxSZW5kZXJUYXJnZXQxMSAqLCBn
bDo6SU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUz47CkBAIC01Niw2ICs1NSw4IEBAIFVJ
TlQgQ29udmVydE1heEFuaXNvdHJvcHkoZmxvYXQgbWF4QW5pc290cm9weSwgRDNEX0ZFQVRVUkVf
TEVWRUwgZmVhdHVyZUxldmVsKTsKIAogRDNEMTFfUVVFUlkgQ29udmVydFF1ZXJ5VHlwZShHTGVu
dW0gcXVlcnlUeXBlKTsKIAorVUlOVDggR2V0Q29sb3JNYXNrKGNvbnN0IGdsOjpJbnRlcm5hbEZv
cm1hdCAqZm9ybWF0SW5mbyk7CisKIH0gIC8vIG5hbWVzcGFjZSBnbF9kM2QxMQogCiBuYW1lc3Bh
Y2UgZDNkMTFfZ2wKQEAgLTY1LDcgKzY2LDcgQEAgdW5zaWduZWQgaW50IEdldFJlc2VydmVkVmVy
dGV4VW5pZm9ybVZlY3RvcnMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKTsKIAogdW5z
aWduZWQgaW50IEdldFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycyhEM0RfRkVBVFVSRV9M
RVZFTCBmZWF0dXJlTGV2ZWwpOwogCi1HTGludCBHZXRNYXhpbXVtQ2xpZW50VmVyc2lvbihEM0Rf
RkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpOworZ2w6OlZlcnNpb24gR2V0TWF4aW11bUNsaWVu
dFZlcnNpb24oRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKTsKIHZvaWQgR2VuZXJhdGVD
YXBzKElEM0QxMURldmljZSAqZGV2aWNlLCBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VDb250
ZXh0LCBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmcmVuZGVyZXIxMURldmljZUNhcHMsIGds
OjpDYXBzICpjYXBzLAogICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVDYXBzTWFwICp0ZXh0
dXJlQ2Fwc01hcCwgZ2w6OkV4dGVuc2lvbnMgKmV4dGVuc2lvbnMsIGdsOjpMaW1pdGF0aW9ucyAq
bGltaXRhdGlvbnMpOwogCkBAIC0xMzMsOCArMTM0LDIxIEBAIHZvaWQgU2V0UG9zaXRpb25EZXB0
aENvbG9yVmVydGV4KFBvc2l0aW9uRGVwdGhDb2xvclZlcnRleDxUPiogdmVydGV4LCBmbG9hdCB4
LCBmCiAgICAgdmVydGV4LT5hID0gY29sb3IuYWxwaGE7CiB9CiAKK3N0cnVjdCBCbGVuZFN0YXRl
S2V5Cit7CisgICAgZ2w6OkJsZW5kU3RhdGUgYmxlbmRTdGF0ZTsKKyAgICBib29sIG1ydDsKKyAg
ICB1aW50OF90IHJ0dk1hc2tzW0QzRDExX1NJTVVMVEFORU9VU19SRU5ERVJfVEFSR0VUX0NPVU5U
XTsKK307CisKIEhSRVNVTFQgU2V0RGVidWdOYW1lKElEM0QxMURldmljZUNoaWxkICpyZXNvdXJj
ZSwgY29uc3QgY2hhciAqbmFtZSk7CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorSFJFU1VMVCBT
ZXREZWJ1Z05hbWUoYW5nbGU6OkNvbVB0cjxUPiAmcmVzb3VyY2UsIGNvbnN0IGNoYXIgKm5hbWUp
Cit7CisgICAgcmV0dXJuIFNldERlYnVnTmFtZShyZXNvdXJjZS5HZXQoKSwgbmFtZSk7Cit9CisK
IHRlbXBsYXRlIDx0eXBlbmFtZSBvdXRUeXBlPgogb3V0VHlwZSogRHluYW1pY0Nhc3RDb21PYmpl
Y3QoSVVua25vd24qIG9iamVjdCkKIHsKQEAgLTM0Nyw4ICszNjEsOCBAQCB2b2lkIFNldEJ1ZmZl
ckRhdGEoSUQzRDExRGV2aWNlQ29udGV4dCAqY29udGV4dCwgSUQzRDExQnVmZmVyICpjb25zdGFu
dEJ1ZmZlciwgYwogICAgIH0KIH0KIAotV29ya2Fyb3VuZHNEM0QgR2VuZXJhdGVXb3JrYXJvdW5k
cyhjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2FwcywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgRFhHSV9BREFQVEVSX0RFU0MgJmFkYXB0ZXJEZXNj
KTsKK2FuZ2xlOjpXb3JrYXJvdW5kc0QzRCBHZW5lcmF0ZVdvcmthcm91bmRzKGNvbnN0IFJlbmRl
cmVyMTFEZXZpY2VDYXBzICZkZXZpY2VDYXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgRFhHSV9BREFQVEVSX0RFU0MgJmFkYXB0ZXJEZXNjKTsKIAog
ZW51bSBSZXNlcnZlZENvbnN0YW50QnVmZmVyU2xvdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL1Jl
c29sdmVEZXB0aFN0ZW5jaWwuaGxzbCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9SZXNvbHZlRGVwdGhTdGVuY2lsLmhsc2wK
aW5kZXggNzBkZjFkMWI2ZTAyNzk0YzAwZjgwZjEwNjJjOTNlZDBlYWEyNTYwMC4uN2RjNDBkNGI2
YWYxZTNjNzNjM2Y1ZDA0MGI0MjkwYTk3NDQwOGE4NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL1Jlc29s
dmVEZXB0aFN0ZW5jaWwuaGxzbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvUmVzb2x2ZURlcHRoU3RlbmNpbC5obHNs
CkBAIC0yMiw3ICsyMiw3IEBAIFRleHR1cmUyRE1TPHVpbnQyPiBTdGVuY2lsIDogcmVnaXN0ZXIo
dDEpOwogCiB2b2lkIFBTX1Jlc29sdmVEZXB0aChpbiBmbG9hdDQgcG9zaXRpb24gOiBTVl9Qb3Np
dGlvbiwKICAgICAgICAgICAgICAgICAgICAgIGluIGZsb2F0MiB0ZXhDb29yZCA6IFRFWENPT1JE
MCwKLSAgICAgICAgICAgICAgICAgICAgIG91dCBmbG9hdCBkZXB0aCA6IFNWX1RhcmdldDApCisg
ICAgICAgICAgICAgICAgICAgICBvdXQgZmxvYXQgZGVwdGggOiBTVl9EZXB0aCkKIHsKICAgICAv
LyBNUyBzYW1wbGVycyBtdXN0IHVzZSBMb2FkCiAgICAgdWludCB3aWR0aCwgaGVpZ2h0LCBzYW1w
bGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Jlc29sdmVkZXB0aDExX3BzLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3No
YWRlcnMvY29tcGlsZWQvcmVzb2x2ZWRlcHRoMTFfcHMuaAppbmRleCBiNDRhMjdjNThkMzcxOTJh
YzQzYWM4NjQyZjQwYjIyNDU0ZWRhMzIyLi4wNjE2MzExMjkzZjUwMTZlODQ2NDMxNjk1YWMzOTQ5
ZjY0NmYwODM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcmVzb2x2ZWRlcHRoMTFfcHMu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcmVzb2x2ZWRlcHRoMTFfcHMuaApAQCAtMjMsMTMgKzIz
LDEzIEBACiAvLw0KIC8vIE5hbWUgICAgICAgICAgICAgICAgIEluZGV4ICAgTWFzayBSZWdpc3Rl
ciBTeXNWYWx1ZSAgRm9ybWF0ICAgVXNlZA0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0t
IC0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tLSAtLS0tLS0tIC0tLS0tLQ0KLS8vIFNWX1RhcmdldCAg
ICAgICAgICAgICAgICAwICAgeCAgICAgICAgICAgMCAgIFRBUkdFVCAgIGZsb2F0ICAgeCAgIA0K
Ky8vIFNWX0RlcHRoICAgICAgICAgICAgICAgICAwICAgIE4vQSAgIG9EZXB0aCAgICBERVBUSCAg
IGZsb2F0ICAgIFlFUw0KIC8vDQogcHNfNF8xDQogZGNsX2dsb2JhbEZsYWdzIHJlZmFjdG9yaW5n
QWxsb3dlZA0KIGRjbF9yZXNvdXJjZV90ZXh0dXJlMmRtcygwKSAoZmxvYXQsZmxvYXQsZmxvYXQs
ZmxvYXQpIHQwDQogZGNsX2lucHV0X3BzIGxpbmVhciB2MS54eQ0KLWRjbF9vdXRwdXQgbzAueA0K
K2RjbF9vdXRwdXQgb0RlcHRoDQogZGNsX3RlbXBzIDENCiByZXNpbmZvX3VpbnQgcjAueHksIGwo
MCksIHQwLnh5encNCiB1dG9mIHIwLnh5LCByMC54eXh4DQpAQCAtMzcsNDYgKzM3LDQ2IEBAIG11
bCByMC54eSwgcjAueHl4eCwgdjEueHl4eAogZnRvdSByMC54eSwgcjAueHl4eA0KIG1vdiByMC56
dywgbCgwLDAsMCwwKQ0KIGxkbXMgcjAueCwgcjAueHl6dywgdDAueHl6dywgbCgwKQ0KLW1vdiBv
MC54LCByMC54DQorbW92IG9EZXB0aCwgcjAueA0KIHJldCANCiAvLyBBcHByb3hpbWF0ZWx5IDgg
aW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KICNlbmRpZg0KIA0KIGNvbnN0IEJZVEUgZ19QU19SZXNv
bHZlRGVwdGhbXSA9IHsNCi0gICAgNjgsICA4OCwgIDY2LCAgNjcsICAyMDUsIDIxOSwgMTkxLCAy
MDEsIDEwMywgMTM0LCAyNDMsIDc2LCAgMTEsIDkxLCAgMjMsICAxODIsIDQyLCAgOCwgICAxNywN
Ci0gICAgMTczLCAxLCAgIDAsICAgMCwgICAwLCAgIDE4NCwgMiwgICAwLCAgIDAsICAgNSwgICAw
LCAgIDAsICAgMCwgIDUyLCAgMCwgICAwLCAgIDAsICAgMTc2LCAwLA0KLSAgICAwLCAgIDAsICAg
OCwgICAxLCAgIDAsICAgMCwgICA2MCwgIDEsICAgMCwgICAwLCAgIDYwLCAgMiwgICAwLCAgMCwg
ICA4MiwgIDY4LCAgNjksICA3MCwgIDExNiwNCi0gICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgIDAsICAgMCwgICAyOCwgIDAs
ICAgMCwgICAwLA0KLSAgICAxLCAgIDQsICAgMjU1LCAyNTUsIDAsICAgMSwgICAwLCAgIDAsICAg
NjYsICAwLCAgIDAsICAgMCwgICA2MCwgMCwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsDQotICAg
IDAsICAgNSwgICAwLCAgIDAsICAgMCwgICA2LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwNCi0gICAgMCwgICAwLCAgIDEsICAg
MCwgICAwLCAgIDAsICAgNjgsICAxMDEsIDExMiwgMTE2LCAxMDQsIDAsICAgNzcsIDEwNSwgOTks
ICAxMTQsIDExMSwgMTE1LCAxMTEsDQotICAgIDEwMiwgMTE2LCAzMiwgIDQwLCAgODIsICA0MSwg
IDMyLCAgNzIsICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAxMDQsIDk3LCAgMTAwLCAxMDEsIDEx
NCwgMzIsDQotICAgIDY3LCAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgMTE0LCAzMiwg
IDU0LCAgNDYsICA1MSwgIDQ2LCA1NywgIDU0LCAgNDgsICA0OCwgIDQ2LCAgNDksDQotICAgIDU0
LCAgNTEsICA1NiwgIDUyLCAgMCwgICA3MywgIDgzLCAgNzEsICA3OCwgIDgwLCAgMCwgICAwLCAg
IDAsICAyLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwNCi0gICAgMCwgICAwLCAgIDU2LCAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgIDAsICAgMywgICAw
LCAgIDAsICAgMCwgICAwLA0KLSAgICAwLCAgIDAsICAgMCwgICAxNSwgIDAsICAgMCwgICAwLCAg
IDY4LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
DQotICAgIDMsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDMsICAg
MCwgICAwLCAgIDgzLCA4NiwgIDk1LCAgODAsICAxMTEsIDExNSwgMTA1LA0KLSAgICAxMTYsIDEw
NSwgMTExLCAxMTAsIDAsICAgODQsICA2OSwgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwg
MCwgICAxNzEsIDE3MSwgMTcxLCA3OSwgIDgzLA0KLSAgICA3MSwgIDc4LCAgNDQsICAwLCAgIDAs
ICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgMCwgICAzMiwgIDAsICAg
MCwgICAwLCAgIDAsDQotICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMywg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAwLCAgIDAsICAgMSwgICAxNCwgIDAsICAgMCwNCi0g
ICAgODMsICA4NiwgIDk1LCAgODQsICA5NywgIDExNCwgMTAzLCAxMDEsIDExNiwgMCwgICAxNzEs
IDE3MSwgODMsIDcyLCAgNjgsICA4MiwgIDI0OCwgMCwgICAwLA0KLSAgICAwLCAgIDY1LCAgMCwg
ICAwLCAgIDAsICAgNjIsICAwLCAgIDAsICAgMCwgICAxMDYsIDgsICAgMCwgICAxLCAgODgsICAz
MiwgIDAsICAgNCwgICAwLCAgIDExMiwNCi0gICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgODUsICA4NSwgIDAsICAgMCwgICA5OCwgIDE2LCAgMCwgIDMsICAgNTAsICAxNiwgIDE2LCAg
MCwgICAxLA0KLSAgICAwLCAgIDAsICAgMCwgICAxMDEsIDAsICAgMCwgICAzLCAgIDE4LCAgMzIs
ICAxNiwgIDAsICAgMCwgICAwLCAgMCwgICAwLCAgIDEwNCwgMCwgICAwLCAgIDIsDQotICAgIDEs
ICAgMCwgICAwLCAgIDAsICAgNjEsICAxNiwgIDAsICAgNywgICA1MCwgIDAsICAgMTYsICAwLCAg
IDAsICAwLCAgIDAsICAgMCwgICAxLCAgIDY0LCAgMCwNCi0gICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDcwLCAgMTI2LCAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgIDg2LCAgMCwgICAw
LCAgIDUsICAgNTAsICAwLA0KLSAgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA3MCwg
IDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgMCwgICA1NiwgIDAsICAgMCwgICA3LCAgIDUw
LA0KLSAgICAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDcwLCAgMCwgICAxNiwg
IDAsICAgMCwgICAwLCAgMCwgICAwLCAgIDcwLCAgMTYsICAxNiwgIDAsDQotICAgIDEsICAgMCwg
ICAwLCAgIDAsICAgMjgsICAwLCAgIDAsICAgNSwgICA1MCwgIDAsICAgMTYsICAwLCAgIDAsICAw
LCAgIDAsICAgMCwgICA3MCwgIDAsICAgMTYsDQotICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICA1NCwgIDAsICAgMCwgICA4LCAgIDE5NCwgMCwgICAxNiwgIDAsICAwLCAgIDAsICAgMCwgICAw
LCAgIDIsICAgNjQsDQotICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNDYsDQot
ICAgIDAsICAgMCwgICA5LCAgIDE4LCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICA3MCwgIDE0LCAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCi0gICAgNzAsICAxMjYsIDE2
LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgNjQsICAwLCAgIDAsICAgMCwgIDAsICAg
MCwgICAwLCAgIDU0LCAgMCwgICAwLA0KLSAgICA1LCAgIDE4LCAgMzIsICAxNiwgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAxMCwgIDAsICAgMTYsICAwLCAgMCwgICAwLCAgIDAsICAgMCwgICA2
MiwgIDAsDQotICAgIDAsICAgMSwgICA4MywgIDg0LCAgNjUsICA4NCwgIDExNiwgMCwgICAwLCAg
IDAsICAgOCwgICAwLCAgIDAsICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwNCi0gICAgMCwg
ICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KLSAgICAxLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsDQotICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwN
Ci0gICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAy
LCAgIDAsICAgMCwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAyLA0KLSAgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQotICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwfTsNCisgICAgNjgsICA4OCwgIDY2LCAgNjcs
ICAxMDYsIDQzLCAgOCwgICAxODcsIDIxLCAgMywgICAxMzYsIDExLCAgMjI3LCAyNDksIDE5MCwg
MTkxLCA5NywgIDEyNywgMTgsDQorICAgIDIxMiwgMSwgICAwLCAgIDAsICAgMCwgICAxNzYsIDIs
ICAgMCwgICAwLCAgIDUsICAgMCwgICAwLCAgIDAsICAgNTIsICAwLCAgIDAsICAgMCwgICAxNzYs
IDAsDQorICAgIDAsICAgMCwgICA4LCAgIDEsICAgMCwgICAwLCAgIDYwLCAgMSwgICAwLCAgIDAs
ICAgNTIsICAyLCAgIDAsICAgMCwgICA4MiwgIDY4LCAgNjksICA3MCwgIDExNiwNCisgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAg
MCwgICAwLCAgIDAsICAgMjgsICAwLCAgIDAsICAgMCwNCisgICAgMSwgICA0LCAgIDI1NSwgMjU1
LCAwLCAgIDEsICAgMCwgICAwLCAgIDY2LCAgMCwgICAwLCAgIDAsICAgNjAsICAwLCAgIDAsICAg
MCwgICAyLCAgIDAsICAgMCwNCisgICAgMCwgICA1LCAgIDAsICAgMCwgICAwLCAgIDYsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAg
MCwNCisgICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgNjgsICAxMDEsIDExMiwgMTE2
LCAxMDQsIDAsICAgNzcsICAxMDUsIDk5LCAgMTE0LCAxMTEsIDExNSwgMTExLA0KKyAgICAxMDIs
IDExNiwgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgIDcyLCAgNzYsICA4MywgIDc2LCAgMzIsICA4
MywgIDEwNCwgOTcsICAxMDAsIDEwMSwgMTE0LCAzMiwNCisgICAgNjcsICAxMTEsIDEwOSwgMTEy
LCAxMDUsIDEwOCwgMTAxLCAxMTQsIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsICA1NywgIDU0LCAg
NDgsICA0OCwgIDQ2LCAgNDksDQorICAgIDU0LCAgNTEsICA1NiwgIDUyLCAgMCwgICA3MywgIDgz
LCAgNzEsICA3OCwgIDgwLCAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgICA4LCAg
IDAsDQorICAgIDAsICAgMCwgICA1NiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAg
MCwgICAwLCAgIDE1LCAgMCwgICAwLCAgIDAsICAgNjgsICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDMsICAgMCwgICAwLCAgIDAsICAg
MSwgICAwLCAgIDAsICAgMCwgICAzLCAgIDMsICAgMCwgICAwLCAgIDgzLCAgODYsICA5NSwgIDgw
LCAgMTExLCAxMTUsIDEwNSwNCisgICAgMTE2LCAxMDUsIDExMSwgMTEwLCAwLCAgIDg0LCAgNjks
ICA4OCwgIDY3LCAgNzksICA3OSwgIDgyLCAgNjgsICAwLCAgIDE3MSwgMTcxLCAxNzEsIDc5LCAg
ODMsDQorICAgIDcxLCAgNzgsICA0NCwgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAs
ICAgOCwgICAwLCAgIDAsICAgMCwgICAzMiwgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgICAyNTUsIDI1
NSwgMjU1LCAyNTUsIDEsICAgMTQsICAwLCAgIDAsDQorICAgIDgzLCAgODYsICA5NSwgIDY4LCAg
MTAxLCAxMTIsIDExNiwgMTA0LCAwLCAgIDE3MSwgMTcxLCAxNzEsIDgzLCAgNzIsICA2OCwgIDgy
LCAgMjQwLCAwLCAgIDAsDQorICAgIDAsICAgNjUsICAwLCAgIDAsICAgMCwgICA2MCwgIDAsICAg
MCwgICAwLCAgIDEwNiwgOCwgICAwLCAgIDEsICAgODgsICAzMiwgIDAsICAgNCwgICAwLCAgIDEx
MiwNCisgICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgODUsICA4NSwgIDAsICAgMCwg
ICA5OCwgIDE2LCAgMCwgICAzLCAgIDUwLCAgMTYsICAxNiwgIDAsICAgMSwNCisgICAgMCwgICAw
LCAgIDAsICAgMTAxLCAwLCAgIDAsICAgMiwgICAxLCAgIDE5MiwgMCwgICAwLCAgIDEwNCwgMCwg
ICAwLCAgIDIsICAgMSwgICAwLCAgIDAsICAgMCwNCisgICAgNjEsICAxNiwgIDAsICAgNywgICA1
MCwgIDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICA2NCwgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwNCisgICAgMCwgICA3MCwgIDEyNiwgMTYsICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgODYsICAwLCAgIDAsICAgNSwgICA1MCwgIDAsICAgMTYsICAwLCAgIDAsICAgMCwN
CisgICAgMCwgICAwLCAgIDcwLCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA1
NiwgIDAsICAgMCwgICA3LCAgIDUwLCAgMCwgICAxNiwgIDAsICAgMCwNCisgICAgMCwgICAwLCAg
IDAsICAgNzAsICAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDcwLCAgMTYsICAx
NiwgIDAsICAgMSwgICAwLCAgIDAsICAgMCwNCisgICAgMjgsICAwLCAgIDAsICAgNSwgICA1MCwg
IDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNzAsICAwLCAgIDE2LCAgMCwgICAw
LCAgIDAsICAgMCwNCisgICAgMCwgICA1NCwgIDAsICAgMCwgICA4LCAgIDE5NCwgMCwgICAxNiwg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAyLCAgIDY0LCAgMCwgICAwLCAgIDAsICAgMCwNCisg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDQ2LCAgMCwgICAwLCAgIDksICAgMTgsDQorICAgIDAsICAgMTYsICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgNzAsICAxNCwgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDcwLCAgMTI2LCAxNiwgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICA2
NCwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDU0LCAgMCwgICAwLCAgIDQsICAgMSwg
ICAxOTIsIDAsDQorICAgIDAsICAgMTAsICAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDYyLCAgMCwgICAwLCAgIDEsICAgODMsICA4NCwgIDY1LCAgODQsICAxMTYsIDAsDQorICAg
IDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDEsDQorICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAs
ICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDB9Ow0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
dGV4dHVyZV9mb3JtYXRfZGF0YS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF9kYXRhLmpzb24KaW5kZXgg
MDZmN2UyYWZkOWU4NDgxMTc4ZTg2NmNmMDY3ZGRkMDc0NjdmODJjZC4uNmQ0ODFlY2FjMzhkNTJk
NGQ5YzgwZDhlNDE1ODAzYTJiYzcwMmJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF9kYXRh
Lmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF9kYXRhLmpzb24KQEAgLTYxLDMyICs2MSw1NiBAQAog
ICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQkMxX1VOT1JNIiwKICAgICAiY2hhbm5lbHMi
OiAicmdiYSIsCiAgICAgImNvbXBvbmVudFR5cGUiOiAidW5vcm0iLAotICAgICJzd2l6emxlRm9y
bWF0IjogIkdMX1JHQkE4IiwKLSAgICAiZ2xJbnRlcm5hbEZvcm1hdCI6ICJHTF9DT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQxX0VYVCIKKyAgICAic3dpenpsZUZvcm1hdCI6ICJHTF9SR0JBOCIKICAg
fSwKICAgIkJDMV9SR0JfVU5PUk1fQkxPQ0siOiB7CiAgICAgInRleEZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9CQzFfVU5PUk0iLAogICAgICJzcnZGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQkMxX1VOT1JN
IiwKICAgICAiY2hhbm5lbHMiOiAicmdiYSIsCiAgICAgImNvbXBvbmVudFR5cGUiOiAidW5vcm0i
LAotICAgICJzd2l6emxlRm9ybWF0IjogIkdMX1JHQkE4IiwKLSAgICAiZ2xJbnRlcm5hbEZvcm1h
dCI6ICJHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCIKKyAgICAic3dpenpsZUZvcm1h
dCI6ICJHTF9SR0JBOCIKICAgfSwKICAgIkJDMl9SR0JBX1VOT1JNX0JMT0NLIjogewogICAgICJ0
ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQkMyX1VOT1JNIiwKICAgICAic3J2Rm9ybWF0IjogIkRY
R0lfRk9STUFUX0JDMl9VTk9STSIsCiAgICAgImNoYW5uZWxzIjogInJnYmEiLAogICAgICJjb21w
b25lbnRUeXBlIjogInVub3JtIiwKLSAgICAic3dpenpsZUZvcm1hdCI6ICJHTF9SR0JBOCIsCi0g
ICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdM
RSIKKyAgICAic3dpenpsZUZvcm1hdCI6ICJHTF9SR0JBOCIKICAgfSwKICAgIkJDM19SR0JBX1VO
T1JNX0JMT0NLIjogewogICAgICJ0ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQkMzX1VOT1JNIiwK
ICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX0JDM19VTk9STSIsCiAgICAgImNoYW5uZWxz
IjogInJnYmEiLAogICAgICJjb21wb25lbnRUeXBlIjogInVub3JtIiwKLSAgICAic3dpenpsZUZv
cm1hdCI6ICJHTF9SR0JBOCIsCi0gICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xfQ09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUNV9BTkdMRSIKKyAgICAic3dpenpsZUZvcm1hdCI6ICJHTF9SR0JBOCIK
KyAgfSwKKyAgIkJDMV9SR0JBX1VOT1JNX1NSR0JfQkxPQ0siOiB7CisgICAgInRleEZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9CQzFfVU5PUk1fU1JHQiIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9CQzFfVU5PUk1fU1JHQiIsCisgICAgImNoYW5uZWxzIjogInJnYmEiLAorICAgICJjb21w
b25lbnRUeXBlIjogInVub3JtIiwKKyAgICAic3dpenpsZUZvcm1hdCI6ICJHTF9SR0JBOCIKKyAg
fSwKKyAgIkJDMV9SR0JfVU5PUk1fU1JHQl9CTE9DSyI6IHsKKyAgICAidGV4Rm9ybWF0IjogIkRY
R0lfRk9STUFUX0JDMV9VTk9STV9TUkdCIiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFU
X0JDMV9VTk9STV9TUkdCIiwKKyAgICAiY2hhbm5lbHMiOiAicmdiYSIsCisgICAgImNvbXBvbmVu
dFR5cGUiOiAidW5vcm0iLAorICAgICJzd2l6emxlRm9ybWF0IjogIkdMX1JHQkE4IgorICB9LAor
ICAiQkMyX1JHQkFfVU5PUk1fU1JHQl9CTE9DSyI6IHsKKyAgICAidGV4Rm9ybWF0IjogIkRYR0lf
Rk9STUFUX0JDMl9VTk9STV9TUkdCIiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX0JD
Ml9VTk9STV9TUkdCIiwKKyAgICAiY2hhbm5lbHMiOiAicmdiYSIsCisgICAgImNvbXBvbmVudFR5
cGUiOiAidW5vcm0iLAorICAgICJzd2l6emxlRm9ybWF0IjogIkdMX1JHQkE4IgorICB9LAorICAi
QkMzX1JHQkFfVU5PUk1fU1JHQl9CTE9DSyI6IHsKKyAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9S
TUFUX0JDM19VTk9STV9TUkdCIiwKKyAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX0JDM19V
Tk9STV9TUkdCIiwKKyAgICAiY2hhbm5lbHMiOiAicmdiYSIsCisgICAgImNvbXBvbmVudFR5cGUi
OiAidW5vcm0iLAorICAgICJzd2l6emxlRm9ybWF0IjogIkdMX1JHQkE4IgogICB9LAogICAiRDI0
X1VOT1JNX1M4X1VJTlQiOiB7CiAgICAgIkZMMTBQbHVzIjogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJl
X2Zvcm1hdF9tYXAuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfbWFwLmpzb24KaW5kZXggOWIyZThkOWRi
NjYzMDhiOTIwOTYwZTY1Yzk3Y2Q4YWI4MTIwYjk5Mi4uOTMyMjE0ZTlkMzJkNzZhYmQyY2IyNWM0
NzgwYzAxOTdmM2QyZWQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF9tYXAuanNvbgorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L3RleHR1cmVfZm9ybWF0X21hcC5qc29uCkBAIC0yMiw3ICsyMiw2IEBACiAgICJHTF9DT01QUkVT
U0VEX1JHQkFfQVNUQ18xMHgxMF9LSFIiOiAiTk9ORSIsCiAgICJHTF9DT01QUkVTU0VEX1JHQkFf
QVNUQ18xMngxMF9LSFIiOiAiTk9ORSIsCiAgICJHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngx
Ml9LSFIiOiAiTk9ORSIsCi0gICJHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUIjogIkJD
MV9SR0JfVU5PUk1fQkxPQ0siLAogICAiR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQyI6ICJS
OF9TTk9STSIsCiAgICJHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQyI6ICJSOEc4X1NOT1JN
IiwKICAgIkdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUiI6ICJOT05FIiwK
QEAgLTQ2LDYgKzQ1LDEwIEBACiAgICJHTF9ERVBUSF9DT01QT05FTlQzMl9PRVMiOiAiRDI0X1VO
T1JNX1M4X1VJTlQiLAogICAiR0xfRVRDMV9SR0I4X09FUyI6ICJSOEc4QjhBOF9VTk9STSIsCiAg
ICJHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFIjogIkJDMV9SR0JfVU5PUk1fQkxPQ0si
LAorICAiR0xfQ09NUFJFU1NFRF9SR0I4X0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFIjogIkJDMV9S
R0JfVU5PUk1fQkxPQ0siLAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9MT1NTWV9ERUNPREVfRVRD
Ml9BTkdMRSI6ICJCQzFfUkdCX1VOT1JNX1NSR0JfQkxPQ0siLAorICAiR0xfQ09NUFJFU1NFRF9S
R0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfTE9TU1lfREVDT0RFX0VUQzJfQU5HTEUiOiAiQkMxX1JH
QkFfVU5PUk1fQkxPQ0siLAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQ
SEExX0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFIjogIkJDMV9SR0JBX1VOT1JNX1NSR0JfQkxPQ0si
LAogICAiR0xfTFVNSU5BTkNFMTZGX0VYVCI6ICJSMTZHMTZCMTZBMTZfRkxPQVQiLAogICAiR0xf
TFVNSU5BTkNFMzJGX0VYVCI6ICJSMzJHMzJCMzJBMzJfRkxPQVQiLAogICAiR0xfTFVNSU5BTkNF
OF9BTFBIQThfRVhUIjogIlI4RzhCOEE4X1VOT1JNIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3Jt
YXRfdGFibGUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5jcHAKaW5kZXggNjY5N2ExMTc3OTIx
ZjA1OGEzOTkxZjdmZTU2NzYxMzM0YmQzMGI5Mi4uYTlkZmVjNTZiODBjYWM0MGZjYjZiMWIyMGRm
Njg1YmM4MzhlZmJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90
ZXh0dXJlX2Zvcm1hdF90YWJsZS5jcHAKQEAgLTE1LDQwICsxNSwxOSBAQCBuYW1lc3BhY2UgcngK
IG5hbWVzcGFjZSBkM2QxMQogewogCi1Gb3JtYXQ6OkZvcm1hdCgpCi0gICAgOiBpbnRlcm5hbEZv
cm1hdChHTF9OT05FKSwKLSAgICAgIGZvcm1hdChhbmdsZTo6Rm9ybWF0OjpHZXQoYW5nbGU6OkZv
cm1hdDo6SUQ6Ok5PTkUpKSwKLSAgICAgIHRleEZvcm1hdChEWEdJX0ZPUk1BVF9VTktOT1dOKSwK
LSAgICAgIHNydkZvcm1hdChEWEdJX0ZPUk1BVF9VTktOT1dOKSwKLSAgICAgIHJ0dkZvcm1hdChE
WEdJX0ZPUk1BVF9VTktOT1dOKSwKLSAgICAgIGRzdkZvcm1hdChEWEdJX0ZPUk1BVF9VTktOT1dO
KSwKLSAgICAgIGJsaXRTUlZGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCi0gICAgICBzd2l6
emxlKCp0aGlzKSwKLSAgICAgIGRhdGFJbml0aWFsaXplckZ1bmN0aW9uKG51bGxwdHIpCitjb25z
dCBGb3JtYXQgJkZvcm1hdDo6Z2V0U3dpenpsZUZvcm1hdChjb25zdCBSZW5kZXJlcjExRGV2aWNl
Q2FwcyAmZGV2aWNlQ2FwcykgY29uc3QKIHsKKyAgICByZXR1cm4gKHN3aXp6bGVGb3JtYXQgPT0g
aW50ZXJuYWxGb3JtYXQgPyAqdGhpcyA6IEZvcm1hdDo6R2V0KHN3aXp6bGVGb3JtYXQsIGRldmlj
ZUNhcHMpKTsKIH0KIAotRm9ybWF0OjpGb3JtYXQoR0xlbnVtIGludGVybmFsRm9ybWF0LAotICAg
ICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQgZm9ybWF0SUQsCi0gICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVCB0ZXhGb3JtYXQsCi0gICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBzcnZGb3Jt
YXQsCi0gICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBydHZGb3JtYXQsCi0gICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVCBkc3ZGb3JtYXQsCi0gICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBibGl0
U1JWRm9ybWF0LAotICAgICAgICAgICAgICAgR0xlbnVtIHN3aXp6bGVGb3JtYXQsCi0gICAgICAg
ICAgICAgICBJbml0aWFsaXplVGV4dHVyZURhdGFGdW5jdGlvbiBpbnRlcm5hbEZvcm1hdEluaXRp
YWxpemVyLAotICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRldmlj
ZUNhcHMpCi0gICAgOiBpbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCksCi0gICAgICBmb3Jt
YXQoYW5nbGU6OkZvcm1hdDo6R2V0KGZvcm1hdElEKSksCi0gICAgICB0ZXhGb3JtYXQodGV4Rm9y
bWF0KSwKLSAgICAgIHNydkZvcm1hdChzcnZGb3JtYXQpLAotICAgICAgcnR2Rm9ybWF0KHJ0dkZv
cm1hdCksCi0gICAgICBkc3ZGb3JtYXQoZHN2Rm9ybWF0KSwKLSAgICAgIGJsaXRTUlZGb3JtYXQo
YmxpdFNSVkZvcm1hdCksCi0gICAgICBzd2l6emxlKHN3aXp6bGVGb3JtYXQgPT0gaW50ZXJuYWxG
b3JtYXQgPyAqdGhpcyA6IEZvcm1hdDo6R2V0KHN3aXp6bGVGb3JtYXQsIGRldmljZUNhcHMpKSwK
LSAgICAgIGRhdGFJbml0aWFsaXplckZ1bmN0aW9uKGludGVybmFsRm9ybWF0SW5pdGlhbGl6ZXIp
LAotICAgICAgbG9hZEZ1bmN0aW9ucyhHZXRMb2FkRnVuY3Rpb25zTWFwKGludGVybmFsRm9ybWF0
LCBmb3JtYXRJRCkpCitMb2FkRnVuY3Rpb25NYXAgRm9ybWF0OjpnZXRMb2FkRnVuY3Rpb25zKCkg
Y29uc3QKIHsKKyAgICByZXR1cm4gR2V0TG9hZEZ1bmN0aW9uc01hcChpbnRlcm5hbEZvcm1hdCwg
Zm9ybWF0SUQpOworfQorCitjb25zdCBhbmdsZTo6Rm9ybWF0ICZGb3JtYXQ6OmZvcm1hdCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGFuZ2xlOjpGb3JtYXQ6OkdldChmb3JtYXRJRCk7CiB9CiAKIH0g
IC8vIG5hbWVzcGFjZSBkM2QxMQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90
ZXh0dXJlX2Zvcm1hdF90YWJsZS5oCmluZGV4IDhlMDVhMmViODcxNTBkOTg4ZDc5MGQzNTYwOGFj
NzlhMGQwNzEzYmEuLjNiZTc1OWYxOWZiZDNjNTQxYWQ1MDZjYTNiZjk1ZjA0MWZjNzQ5OGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxl
LmgKQEAgLTMyLDIyICszMiwyNSBAQCBuYW1lc3BhY2UgZDNkMTEKIC8vIERTVnMgZ2l2ZW4gYSBH
TCBpbnRlcm5hbCBmb3JtYXQuCiBzdHJ1Y3QgRm9ybWF0IGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlh
YmxlCiB7Ci0gICAgRm9ybWF0KCk7Ci0gICAgRm9ybWF0KEdMZW51bSBpbnRlcm5hbEZvcm1hdCwK
LSAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQgZm9ybWF0SUQsCi0gICAgICAgICAgIERYR0lf
Rk9STUFUIHRleEZvcm1hdCwKLSAgICAgICAgICAgRFhHSV9GT1JNQVQgc3J2Rm9ybWF0LAotICAg
ICAgICAgICBEWEdJX0ZPUk1BVCBydHZGb3JtYXQsCi0gICAgICAgICAgIERYR0lfRk9STUFUIGRz
dkZvcm1hdCwKLSAgICAgICAgICAgRFhHSV9GT1JNQVQgYmxpdFNSVkZvcm1hdCwKLSAgICAgICAg
ICAgR0xlbnVtIHN3aXp6bGVGb3JtYXQsCi0gICAgICAgICAgIEluaXRpYWxpemVUZXh0dXJlRGF0
YUZ1bmN0aW9uIGludGVybmFsRm9ybWF0SW5pdGlhbGl6ZXIsCi0gICAgICAgICAgIGNvbnN0IFJl
bmRlcmVyMTFEZXZpY2VDYXBzICZkZXZpY2VDYXBzKTsKKyAgICBjb25zdGV4cHIgRm9ybWF0KCk7
CisgICAgY29uc3RleHByIEZvcm1hdChHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRCBmb3JtYXRJRCwKKyAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUIHRleEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUIHNydkZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUIHJ0dkZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUIGRzdkZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUIGJsaXRTUlZGb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gc3dpenpsZUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxp
emVUZXh0dXJlRGF0YUZ1bmN0aW9uIGludGVybmFsRm9ybWF0SW5pdGlhbGl6ZXIpOwogCiAgICAg
c3RhdGljIGNvbnN0IEZvcm1hdCAmR2V0KEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgUmVu
ZGVyZXIxMURldmljZUNhcHMgJmRldmljZUNhcHMpOwogCisgICAgY29uc3QgRm9ybWF0ICZnZXRT
d2l6emxlRm9ybWF0KGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZkZXZpY2VDYXBzKSBjb25z
dDsKKyAgICBMb2FkRnVuY3Rpb25NYXAgZ2V0TG9hZEZ1bmN0aW9ucygpIGNvbnN0OworICAgIGNv
bnN0IGFuZ2xlOjpGb3JtYXQgJmZvcm1hdCgpIGNvbnN0OworCiAgICAgR0xlbnVtIGludGVybmFs
Rm9ybWF0OwotICAgIGNvbnN0IGFuZ2xlOjpGb3JtYXQgJmZvcm1hdDsKKyAgICBhbmdsZTo6Rm9y
bWF0OjpJRCBmb3JtYXRJRDsKIAogICAgIERYR0lfRk9STUFUIHRleEZvcm1hdDsKICAgICBEWEdJ
X0ZPUk1BVCBzcnZGb3JtYXQ7CkBAIC01NiwxMyArNTksNDUgQEAgc3RydWN0IEZvcm1hdCBmaW5h
bCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgRFhHSV9GT1JNQVQgYmxpdFNSVkZvcm1hdDsK
IAotICAgIGNvbnN0IEZvcm1hdCAmc3dpenpsZTsKKyAgICBHTGVudW0gc3dpenpsZUZvcm1hdDsK
IAogICAgIEluaXRpYWxpemVUZXh0dXJlRGF0YUZ1bmN0aW9uIGRhdGFJbml0aWFsaXplckZ1bmN0
aW9uOwotCi0gICAgTG9hZEZ1bmN0aW9uTWFwIGxvYWRGdW5jdGlvbnM7CiB9OwogCitjb25zdGV4
cHIgRm9ybWF0OjpGb3JtYXQoKQorICAgIDogaW50ZXJuYWxGb3JtYXQoR0xfTk9ORSksCisgICAg
ICBmb3JtYXRJRChhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSksCisgICAgICB0ZXhGb3JtYXQoRFhH
SV9GT1JNQVRfVU5LTk9XTiksCisgICAgICBzcnZGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiks
CisgICAgICBydHZGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiksCisgICAgICBkc3ZGb3JtYXQo
RFhHSV9GT1JNQVRfVU5LTk9XTiksCisgICAgICBibGl0U1JWRm9ybWF0KERYR0lfRk9STUFUX1VO
S05PV04pLAorICAgICAgc3dpenpsZUZvcm1hdChHTF9OT05FKSwKKyAgICAgIGRhdGFJbml0aWFs
aXplckZ1bmN0aW9uKG51bGxwdHIpCit7Cit9CisKK2NvbnN0ZXhwciBGb3JtYXQ6OkZvcm1hdChH
TGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZv
cm1hdDo6SUQgZm9ybWF0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQg
dGV4Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUIHNydkZvcm1h
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBydHZGb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgZHN2Rm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUIGJsaXRTUlZGb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHN3aXp6bGVGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
SW5pdGlhbGl6ZVRleHR1cmVEYXRhRnVuY3Rpb24gaW50ZXJuYWxGb3JtYXRJbml0aWFsaXplcikK
KyAgICA6IGludGVybmFsRm9ybWF0KGludGVybmFsRm9ybWF0KSwKKyAgICAgIGZvcm1hdElEKGZv
cm1hdElEKSwKKyAgICAgIHRleEZvcm1hdCh0ZXhGb3JtYXQpLAorICAgICAgc3J2Rm9ybWF0KHNy
dkZvcm1hdCksCisgICAgICBydHZGb3JtYXQocnR2Rm9ybWF0KSwKKyAgICAgIGRzdkZvcm1hdChk
c3ZGb3JtYXQpLAorICAgICAgYmxpdFNSVkZvcm1hdChibGl0U1JWRm9ybWF0KSwKKyAgICAgIHN3
aXp6bGVGb3JtYXQoc3dpenpsZUZvcm1hdCksCisgICAgICBkYXRhSW5pdGlhbGl6ZXJGdW5jdGlv
bihpbnRlcm5hbEZvcm1hdEluaXRpYWxpemVyKQoreworfQorCiB9ICAvLyBuYW1lc3BhY2UgZDNk
MTEKIAogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxl
X2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcAppbmRleCBkNWVh
YjdiYzE1OTYyMTQ3YjNjNmFkNTQ4YzE3Y2FlYzgxNDJkZTY4Li4zYWIzMzM3NjAxMDc4MjlmNGU2
NjQ1OWUzMjQ0NGZhMDg4N2YxZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1
dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAKQEAgLTM1LDYw
ICszNSw1NiBAQCBjb25zdCBGb3JtYXQgJkZvcm1hdDo6R2V0KEdMZW51bSBpbnRlcm5hbEZvcm1h
dCwgY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRldgogICAgIHsKICAgICAgICAgY2FzZSBH
TF9BTFBIQTE2Rl9FWFQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3Jt
YXQgaW5mbyhHTF9BTFBIQTE2Rl9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2
QjE2QTE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZGLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBp
bmZvKEdMX0FMUEhBMTZGX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZM
T0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZM
T0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZG
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQUxQSEEz
MkZfRVhUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8o
R0xfQUxQSEEzMkZfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9G
TE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
dmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9B
TFBIQTMyRl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMy
QjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0FMUEhBOF9FWFQ6CiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmIChPbmx5RkwxMFBsdXMoZGV2aWNlQ2FwcykpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0FM
UEhBOF9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
OjpGb3JtYXQ6OklEOjpBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfQThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0E4X1VOT1JNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9BOF9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQThfVU5PUk0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0FMUEhBOF9FWFQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6
QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9BOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX0E4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQThfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQThf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIpOwogICAgICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBG
b3JtYXQgaW5mbyhHTF9BTFBIQThfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JN
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
OEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9BTFBIQThfRVhULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtOTYsNzM2ICs5Miw3ODggQEAgY29uc3QgRm9ybWF0
ICZGb3JtYXQ6OkdldChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IFJlbmRlcmVyMTFEZXZp
Y2VDYXBzICZkZXYKICAgICAgICAgewogICAgICAgICAgICAgaWYgKFN1cHBvcnRzRm9ybWF0KERY
R0lfRk9STUFUX0I1RzZSNV9VTk9STSwgZGV2aWNlQ2FwcykpCiAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0JHUjU2NV9BTkdMRVgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklE
OjpCNUc2UjVfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I1RzZS
NV9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdC
QTgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAg
ICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQkdSNTY1X0FOR0xF
WCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpCNUc2UjVfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9C
NUc2UjVfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQkdSNTY1X0FOR0xF
WCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1h
dDo6SUQ6OlI4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VO
T1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfUkdCQTgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
dmljZUNhcHMpOworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8o
R0xfQkdSNTY1X0FOR0xFWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JH
QkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBHTF9CR1I1X0ExX0FOR0xFWDoKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0JHUjVfQTFfQU5HTEVYLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCOEc4UjhBOF9V
Tk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9C
OEc4UjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0JHUkE4X0VYVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3Jt
YXQgaW5mbyhHTF9CR1I1X0ExX0FOR0xFWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkI4RzhSOEE4X1VOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
QjhHOFI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQkdSQThfRVhULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQkdSQTRfQU5HTEVYOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQkdSQTRfQU5H
TEVYLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpCOEc4UjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JN
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0JHUkE4X0VYVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9CR1JBNF9BTkdMRVgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCOEc4UjhBOF9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
QjhHOFI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5P
Uk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0JHUkE4X0VY
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0JHUkE4
X0VYVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdM
X0JHUkE4X0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6
Rm9ybWF0OjpJRDo6QjhHOFI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhB
OF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9CR1JBOF9F
WFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQkdSQThfRVhULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QjhHOFI4QThf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX0I4RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9CR1JB
OF9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1IxMV9FQUM6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBG
b3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1IxMV9FQUMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4X1VOT1JNLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VOT1JNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VOT1JNLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVU5PUk0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SMTFfRUFDLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhfVU5PUk0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkcxMV9FQUM6CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHMTFfRUFDLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpS
OEc4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4RzhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhHOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmlj
ZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01Q
UkVTU0VEX1JHMTFfRUFDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBHTF9DT01QUkVTU0VEX1JHQjhfRVRDMjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9S
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAw
LCAweDAwLCAweEZGPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZp
Y2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09N
UFJFU1NFRF9SR0I4X0VUQzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgw
MCwgMHgwMCwgMHgwMCwgMHhGRj4pOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQjhfTE9TU1lfREVDT0RFX0VUQzJfQU5H
TEU6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8o
R0xfQ09NUFJFU1NFRF9SR0I4X0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QkMxX1JHQl9V
Tk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfQkMxX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9VTk9STSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hU
SFJPVUdIX0FMUEhBMV9FVEMyOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6
UjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0
ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1h
dCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpS
OEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0
aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4pOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9MT1NTWV9ERUNPREVfRVRDMl9BTkdMRToK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9D
T01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9MT1NTWV9ERUNPREVfRVRDMl9BTkdM
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1h
dDo6SUQ6OkJDMV9SR0JBX1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMx
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JB
OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBS
RVNTRURfUkdCQThfRVRDMl9FQUM6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9S
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZv
KEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX0FT
VENfMTB4MTBfS0hSOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0
IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5P
TkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tIUjoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURf
UkdCQV9BU1RDXzEweDVfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2
aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NP
TVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Tk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7
CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0NP
TVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5P
TkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05P
TkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4
Nl9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpOT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4
OF9LSFI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhH
TF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3Jt
YXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9LSFI6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNU
Q18xMngxMF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OkZvcm1hdDo6SUQ6Ok5PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBz
KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NF
RF9SR0JBX0FTVENfMTJ4MTBfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNT
RURfUkdCQV9BU1RDXzEyeDEyX0tIUjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9L
SFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpOT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tI
UjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NP
TVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGlu
Zm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tI
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJ
RDo6Tk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNU
Q181eDRfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RD
XzV4NV9LSFI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZv
cm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUjoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RD
XzZ4NV9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZv
cm1hdDo6SUQ6Ok5PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9S
R0JBX0FTVENfNng1X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAg
ICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JH
QkFfQVNUQ182eDZfS0hSOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9O
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFI6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JH
QkFfQVNUQ184eDVfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEOjpOT05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNl
Q2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBS
RVNTRURfUkdCQV9BU1RDXzh4NV9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05F
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQ09NUFJF
U1NFRF9SR0JBX0FTVENfOHg2X0tIUjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6
SUQ6Ok5PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJF
U1NFRF9SR0JBX0FTVENfOHg4X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhH
TF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6
OkJDMV9SR0JBX1VOT1JNX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX0JDMV9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9VTk9STSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkJDMV9SR0JBX1VOT1JNX0JMT0NL
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9C
QzFfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX0JDMV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCQzJfUkdCQV9VTk9STV9CTE9DSywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzJfVU5PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMyX1VOT1JN
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9C
QzJfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19B
TkdMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZv
cm1hdDo6SUQ6OkJDMl9SR0JBX1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzJfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMl9VTk9STSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
QkMyX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7
CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0NP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xF
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklE
OjpCQzNfUkdCQV9VTk9STV9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9CQzNfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfQkMzX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzNfVU5PUk0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8o
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkJDM19SR0JBX1VOT1JNX0JM
T0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9CQzNfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX0JDM19VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMzX1VOT1JNLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01Q
UkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCQzFfUkdCX1VOT1JNX0JMT0NLLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9VTk9STSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9V
Tk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJ
RDo6QkMxX1JHQl9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAg
ICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VE
X1NJR05FRF9SMTFfRUFDOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhfU05PUk0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfU05PUk0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfU05PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1NO
T1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4X1NOT1JN
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1I4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TTk9STSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThfU05PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NJR05F
RF9SRzExX0VBQzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBp
bmZvKEdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4X1NOT1JNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU05PUk0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TTk9STSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOF9T
Tk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NJR05FRF9SRzEx
X0VBQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZv
cm1hdDo6SUQ6OlI4RzhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1I4RzhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU05PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU05P
Uk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4X1NO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsK
ICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQ09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFI6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9B
U1RDXzEweDEwX0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNh
cHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBH
TF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSOgogICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBI
QThfQVNUQ18xMHg1X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmlj
ZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFI6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzEweDZfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2
aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUjoKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfMTB4OF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xf
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUjoKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZv
KEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0
IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05F
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1h
dCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFI6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0
IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUjoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQg
aW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NV9LSFIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBp
bmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFI6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGlu
Zm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUjoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5m
byhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9LSFIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSOgogICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ184eDZfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZv
KEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFI6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8o
R0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfRVRDMl9FQUMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TV9TUkdCLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1I4RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1NSR0I4X0FMUEhBOCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQg
aW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VO
T1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JN
X1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1NSR0I4X0FMUEhBOCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMjoKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JH
QjhfRVRDMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9y
bWF0OjpJRDo6UjhHOEI4QThfVU5PUk1fU1JHQiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0Is
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4
QThfVU5PUk1fU1JHQiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfU1JHQjhfQUxQSEE4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAw
eDAwLCAweEZGPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VD
YXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJF
U1NFRF9TUkdCOF9FVEMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JH
QiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1f
U1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU1JHQjhf
QUxQSEE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFs
aXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4pOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1NSR0I4X0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfTE9TU1lf
REVDT0RFX0VUQzJfQU5HTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCQzFfUkdCX1VOT1JNX1NSR0JfQkxPQ0ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9VTk9STV9T
UkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9CQzFfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9V
R0hfQUxQSEExX0VUQzI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3Jt
YXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhH
OEI4QThfVU5PUk1fU1JHQiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JH
QiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4
RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfU1JHQjhfQUxQSEE4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURf
U1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk1fU1JHQiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfU1JHQjhfQUxQSEE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0xPU1NZ
X0RFQ09ERV9FVEMyX0FOR0xFOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9M
T1NTWV9ERUNPREVfRVRDMl9BTkdMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkJDMV9SR0JBX1VOT1JNX1NSR0JfQkxPQ0ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9V
Tk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9CQzFfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0IsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhB
X1MzVENfRFhUMV9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Rm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpC
QzFfUkdCQV9VTk9STV9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0IsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX0JDMV9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JH
Ql9BTFBIQV9TM1RDX0RYVDNfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QkMyX1JHQkFfVU5PUk1fU1JHQl9CTE9DSywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMyX1VO
T1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX0JDMl9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzJfVU5PUk1fU1JHQiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQ1X0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBG
b3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkJD
M19SR0JBX1VOT1JNX1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX0JDM19VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzNfVU5PUk1fU1JHQiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfQkMzX1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdCX1MzVENf
RFhUMV9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
OjpGb3JtYXQ6OklEOjpCQzFfUkdCX1VOT1JNX1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9VTk9STV9TUkdCLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5P
Uk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgR0xfREVQVEgyNF9TVEVOQ0lMODoKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKE9ubHlGTDEwUGx1cyhkZXZpY2VDYXBzKSkKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfREVQVEgyNF9TVEVOQ0lMOCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6
SUQ6OkQyNF9VTk9STV9TOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9EMjRfVU5PUk1fUzhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29u
c3RleHByIEZvcm1hdCBpbmZvKEdMX0RFUFRIMjRfU1RFTkNJTDgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RDI0X1VOT1JN
X1M4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMkYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xf
REVQVEgyNF9TVEVOQ0lMOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkQyNF9VTk9STV9TOF9VSU5ULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Rm9ybWF0IGluZm8oR0xfREVQVEgyNF9TVEVOQ0lMOCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpEMjRfVU5PUk1fUzhfVUlO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX0QyNF9VTk9STV9TOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhf
VUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9SR0JBMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9ERVBUSDMyRl9TVEVOQ0lMODoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0RFUFRIMzJGX1NU
RU5DSUw4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpEMzJfRkxPQVRfUzhYMjRfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHOFgyNF9UWVBFTEVTUywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfRkxPQVRfWDhYMjRfVFlQRUxF
U1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9E
MzJfRkxPQVRfUzhYMjRfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMzJfRkxPQVRfWDhYMjRfVFlQRUxFU1MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5m
byhHTF9ERVBUSDMyRl9TVEVOQ0lMOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkQzMl9GTE9BVF9TOFgyNF9VSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHOFgyNF9U
WVBFTEVTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjMyX0ZMT0FUX1g4WDI0X1RZUEVMRVNTLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMzJfRkxPQVRfUzhYMjRfVUlOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMy
X0ZMT0FUX1g4WDI0X1RZUEVMRVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9SR0JBMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6CiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
IChPbmx5RkwxMFBsdXMoZGV2aWNlQ2FwcykpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0RFUFRIX0NPTVBPTkVOVDE2LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RDE2
X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMTZfVFlQRUxFU1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IxNl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDE2X1VOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVU5PUk0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNl9FWFQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfREVQVEhfQ09NUE9ORU5UMTYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJ
RDo6RDE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjE2X1RZUEVMRVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1VOT1JNLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0QxNl9V
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1JHQkExNl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfREVQVEhfQ09NUE9ORU5UMTYsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpEMTZf
VU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX0QxNl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDE2X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZfRVhULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0RFUFRIX0NPTVBPTkVOVDE2LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkQxNl9V
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX0QxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDE2X1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEx
Nl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQpAQCAtODMzLDczNiArODgxLDY4NCBAQCBjb25zdCBGb3JtYXQgJkZvcm1hdDo6R2V0KEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRldgogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoT25seUZMMTBQbHVzKGRldmljZUNhcHMpKQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9ERVBU
SF9DT01QT05FTlQyNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6OkQyNF9VTk9STV9TOF9VSU5ULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0X1VOT1JN
X1g4X1RZUEVMRVNTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0RFUFRIX0NPTVBPTkVOVDI0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1h
dDo6SUQ6OkQyNF9VTk9STV9TOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxFU1MsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1fWDhf
VFlQRUxFU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1fWDhfVFlQ
RUxFU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0JBMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBpbmZvKEdMX0RFUFRIX0NPTVBPTkVOVDI0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RDI0X1VOT1JNX1M4X1VJTlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0Qy
NF9VTk9STV9TOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9ERVBUSF9DT01QT05FTlQyNCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklE
OjpEMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9ERVBUSF9D
T01QT05FTlQzMkY6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyhHTF9ERVBUSF9DT01QT05FTlQzMkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkQzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfVFlQRUxFU1MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDMyX0ZMT0FULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9GTE9B
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0RFUFRIX0NPTVBPTkVOVDMyRiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkQzMl9GTE9B
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjMyX1RZUEVMRVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX0QzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTOgog
ICAgICAgICB7CiAgICAgICAgICAgICBpZiAoT25seUZMMTBQbHVzKGRldmljZUNhcHMpKQogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9E
RVBUSF9DT01QT05FTlQzMl9PRVMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpEMjRfVU5PUk1fUzhfVUlOVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxFU1Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Iy
NF9VTk9STV9YOF9UWVBFTEVTUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBF
TEVTUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMy
RiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAg
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9ERVBUSF9DT01QT05F
TlQzMl9PRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZTo6Rm9ybWF0OjpJRDo6RDI0X1VOT1JNX1M4X1VJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Iy
NF9VTk9STV9YOF9UWVBFTEVTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IyNF9V
Tk9STV9YOF9UWVBFTEVTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1JHQkEzMkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RDI0
X1VOT1JNX1M4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlO
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdC
QTMyRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7Cisg
ICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9ERVBUSF9DT01Q
T05FTlQzMl9PRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZTo6Rm9ybWF0OjpJRDo6RDI0X1VOT1JNX1M4X1VJTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRToKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNP
REVfQU5HTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZv
cm1hdDo6SUQ6OkJDMV9SR0JfVU5PUk1fQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9VTk9STSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1h
dCBpbmZvKEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCQzFfUkdCX1VOT1JN
X0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9CQzFfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX0JDMV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9PRVM6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9FVEMxX1JHQjhfT0VTLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpS
OEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRl
LCAweDAwLCAweDAwLCAweDAwLCAweEZGPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0
IGluZm8oR0xfRVRDMV9SR0I4X09FUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRl
LCAweDAwLCAweDAwLCAweDAwLCAweEZGPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRTE2Rl9FWFQ6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9MVU1JTkFOQ0UxNkZfRVhULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpS
MTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZH
MTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQTE2RiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXpl
NENvbXBvbmVudERhdGE8R0xoYWxmLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCBnbDo6RmxvYXQx
Nk9uZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0xVTUlOQU5DRTE2
Rl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2
X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2RiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdM
aGFsZiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgZ2w6OkZsb2F0MTZPbmU+KTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFMzJG
X0VYVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdM
X0xVTUlOQU5DRTMyRl9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMy
X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGZsb2F0LCAweDAwMDAwMDAwLCAw
eDAwMDAwMDAwLCAweDAwMDAwMDAwLCBnbDo6RmxvYXQzMk9uZT4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3RleHByIEZvcm1hdCBpbmZvKEdMX0xVTUlOQU5DRTMyRl9FWFQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJf
RkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfUkdCQTMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMZmxvYXQsIDB4MDAwMDAwMDAsIDB4MDAw
MDAwMDAsIDB4MDAwMDAwMDAsIGdsOjpGbG9hdDMyT25lPik7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVDoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0xVTUlO
QU5DRThfQUxQSEE4X0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5P
Uk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
OEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0JBOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgR0xfTFVNSU5BTkNFOF9FWFQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBGb3JtYXQgaW5mbyhHTF9MVU1JTkFOQ0U4X0VYVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5P
Uk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwg
MHhGRj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0xVTUlOQU5DRThf
RVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9y
bWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4RkY+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDoKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIx
NkExNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkEx
Nl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZG
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklE
OjpSMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZH
MTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2RiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQ6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9MVU1JTkFOQ0Vf
QUxQSEEzMkZfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
OjpGb3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9B
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUkdCQTMyRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmlj
ZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9MVU1J
TkFOQ0VfQUxQSEEzMkZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxP
QVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxP
QVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMkYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9OT05FOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfTk9ORSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6
Tk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Tk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9OT05FLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIEdMX1IxMUZfRzExRl9CMTBGOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oR0xfUjExRl9HMTFGX0IxMEYsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxMUcxMUIxMF9GTE9BVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTFHMTFCMTBf
RkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjExRzExQjEwX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZGX0VYVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQg
aW5mbyhHTF9SMTFGX0cxMUZfQjEwRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxMUcxMUIxMF9GTE9BVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FU
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MTFHMTFCMTBfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZGX0VYVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1IxNkY6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SMTZGLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZfRkxP
QVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2
X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCQTE2Rl9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBz
KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUjE2RiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6
OlIxNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X0ZMT0FULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZGX0VYVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1IxNkk6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SMTZJLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZfU0lO
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZf
U0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MTZfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMTZfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IxNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1JHQkExNkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUjE2SSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNl9TSU5U
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2SSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIEdMX1IxNlVJOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUjE2VUksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNl9VSU5ULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VSU5ULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VSU5ULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VSU5ULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1VJTlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2SSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SMTZVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNl9VSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVUlOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1VJTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Ix
Nl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfUkdCQTE2SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIEdMX1IxNl9FWFQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBG
b3JtYXQgaW5mbyhHTF9SMTZfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1VOT1JNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VTk9STSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVU5PUk0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVU5PUk0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2X0VYVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBGb3JtYXQgaW5mbyhHTF9SMTZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2X1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVU5PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQkExNl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBHTF9SMTZfU05PUk1fRVhUOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUjE2X1NOT1JNX0VYVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2X1NOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9TTk9STSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfU05P
Uk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNl9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JB
MTZfU05PUk1fRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1IxNl9TTk9STV9FWFQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSMTZfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfU05PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNl9TTk9STV9FWFQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SMzJGOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUjMyRiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6
UjMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQkEzMkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VD
YXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUjMyRiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6
SUQ6OlIzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAg
IHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUjMySToKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1IzMkksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMl9TSU5U
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9T
SU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Iz
Ml9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IzMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjMyX1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQTMySSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SMzJJLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyX1NJTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Iz
Ml9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJJLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgR0xfUjMyVUk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SMzJVSSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyX1VJTlQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1VJTlQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1VJTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1VJTlQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfVUlOVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJJLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3RleHByIEZvcm1hdCBpbmZvKEdMX1IzMlVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyX1VJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9VSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfVUlOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMy
X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IzMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9SR0JBMzJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgR0xfUjg6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyhHTF9SOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6
Rm9ybWF0OjpJRDo6UjhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
dmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9S
OCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1h
dDo6SUQ6OlI4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SOEk6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SOEksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4X1NJTlQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfU0lOVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TSU5ULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1NJTlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9T
SU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4SSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SOEksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOF9TSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TSU5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9T
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SR0JBOEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBHTF9SOFVJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGlu
Zm8oR0xfUjhVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6
Rm9ybWF0OjpJRDo6UjhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUkdCQThJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNl
Q2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1I4VUks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOEksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SOF9TTk9STToKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1I4X1NOT1JNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOF9TTk9STSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TTk9S
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9T
Tk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdC
QThfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUjhfU05PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOF9T
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThfU05PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SRzE2RjoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHMTZGLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZfRkxPQVQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X0ZM
T0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Ix
NkcxNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMTZHMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfUkdCQTE2Rl9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZp
Y2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkcx
NkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpSMTZHMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNkcxNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkdCQTE2Rl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBHTF9SRzE2SToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1h
dCBpbmZvKEdMX1JHMTZJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfU0lOVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfU0lOVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9TSU5ULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgRm9ybWF0IGluZm8oR0xfUkcxNkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZfU0lOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcx
Nl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMTZHMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBHTF9SRzE2VUk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SRzE2VUksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNl9VSU5ULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9VSU5ULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9VSU5U
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcx
Nl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjE2RzE2X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQTE2SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SRzE2VUksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZf
VUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjE2RzE2X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxNkcxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1VJTlQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SRzE2X0VYVDoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHMTZfRVhULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpS
MTZHMTZfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjE2RzE2X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxNkcxNl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfVU5PUk0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2X0VYVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3Jt
YXQgaW5mbyhHTF9SRzE2X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfVU5P
Uk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNkcxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SR0JBMTZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkcxNl9TTk9STV9FWFQ6CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SRzE2X1NOT1JNX0VYVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2
X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNkcxNl9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMTZHMTZfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBMTZfU05PUk1fRVhULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBp
bmZvKEdMX1JHMTZfU05PUk1fRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2X1NOT1JNLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfU05PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9T
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBMTZfU05PUk1fRVhULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkczMkY6CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SRzMyRiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyRzMyX0ZMT0FULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJf
RkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjMyRzMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjMyRzMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQkEzMkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkczMkYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpS
MzJHMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IzMkczMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9G
TE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMy
RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHMzJJ
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkcz
MkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6
SUQ6OlIzMkczMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IzMkczMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IzMkczMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMySSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQg
aW5mbyhHTF9SRzMySSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9T
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMzJHMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfUkdCQTMySSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIEdMX1JHMzJVSToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKEdMX1JHMzJVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyRzMyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfVUlO
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJJLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHMzJVSSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMl9VSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfVUlO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjMyRzMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IzMkczMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMySSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHODoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHOCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOF9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfVU5PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9S
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4
RzhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkc4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOF9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjhHOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhHOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBHTF9SRzhJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkc4SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOF9TSU5ULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU0lOVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TSU5ULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TSU5U
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4SSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SRzhJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOF9TSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU0lO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjhHOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQkE4SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIEdMX1JHOFVJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oR0xfUkc4VUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VSU5ULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfVUlOVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfVUlOVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOEksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Rm9ybWF0IGluZm8oR0xfUkc4VUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4X1VJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfVUlOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1VJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4RzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCQThJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgR0xfUkc4X1NOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oR0xfUkc4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU05PUk0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TTk9STSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOF9TTk9STSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SRzhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4X1NOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
OEc4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SR0JBOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjoKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThf
VU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
bml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdC
QTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0
Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZGPik7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjEwX0EyOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCMTBf
QTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6
SUQ6OlIxMEcxMEIxMEEyX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JN
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjEw
RzEwQjEwQTJfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQTE2X0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0IxMF9BMiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIx
MEcxMEIxMEEyX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVU5PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxMEcxMEIxMEEy
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCQTE2X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEdMX1JHQjEwX0EyVUk6CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0IxMF9BMlVJLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTBHMTBCMTBBMl9VSU5U
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxMEcx
MEIxMEEyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjEwRzEwQjEwQTJfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZJLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZv
cm1hdCBpbmZvKEdMX1JHQjEwX0EyVUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTBHMTBCMTBBMl9VSU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9V
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMTBHMTBCMTBBMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZJLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCMTZGOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCMTZGLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpS
MTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZH
MTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQTE2RiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXpl
NENvbXBvbmVudERhdGE8R0xoYWxmLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCBnbDo6RmxvYXQx
Nk9uZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQjE2RiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6
OlIxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZGLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xoYWxmLCAweDAw
MDAsIDB4MDAwMCwgMHgwMDAwLCBnbDo6RmxvYXQxNk9uZT4pOwogICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SR0IxNkk6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0IxNkksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkEx
Nl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNkcxNkIxNkExNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2SSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8
R0xzaG9ydCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAxPiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCMTZJLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X1NJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIx
NkExNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0JBMTZJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFs
aXplNENvbXBvbmVudERhdGE8R0xzaG9ydCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAx
Pik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdM
X1JHQjE2VUk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhHTF9SR0IxNlVJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
OjpGb3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZC
MTZBMTZfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1JHQkExNlVJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVzaG9ydCwgMHgwMDAwLCAweDAwMDAsIDB4MDAw
MCwgMHgwMDAxPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VD
YXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCMTZV
SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1h
dDo6SUQ6OlIxNkcxNkIxNkExNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Ix
NkcxNkIxNkExNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2VUksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVzaG9ydCwg
MHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAxPik7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjE2X0VYVDoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQjE2X0VYVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2
QTE2X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IxNkcxNkIxNkExNl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2
X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNl9F
WFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21w
b25lbnREYXRhPEdMdWJ5dGUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4RkZGRj4sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQjE2X0VYVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIx
NkExNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9V
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBMTZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMDAwLCAw
eDAwMDAsIDB4MDAwMCwgMHhGRkZGPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEdMX1JHQjE2X1NOT1JNX0VYVDoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQjE2X1NOT1JNX0VYVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2
QjE2QTE2X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IxNkcxNkIxNkExNl9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZfU05PUk1fRVhU
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9u
ZW50RGF0YTxHTHVzaG9ydCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg3RkZGPiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCMTZfU05PUk1fRVhULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2
RzE2QjE2QTE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9SR0JBMTZfU05PUk1fRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1c2hvcnQsIDB4MDAwMCwg
MHgwMDAwLCAweDAwMDAsIDB4N0ZGRj4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBHTF9SR0IzMkY6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0IzMkYsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9GTE9BVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJB
MzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjMyRzMyQjMyQTMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGZsb2F0
LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCBnbDo6RmxvYXQzMk9uZT4sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQjMyRiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIz
MkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9G
TE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xmbG9hdCwgMHgwMDAwMDAwMCwg
MHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgZ2w6OkZsb2F0MzJPbmU+KTsKICAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCMzJJOgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCMzJJLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMzJHMzJC
MzJBMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9T
SU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMkksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnRE
YXRhPEdMaW50LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAx
PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCMzJJLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMy
RzMyQjMyQTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMy
X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBMzJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xpbnQsIDB4MDAwMDAwMDAsIDB4
MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDE+KTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCMzJVSToKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQjMyVUksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIzMkEz
Ml9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IzMkczMkIzMkEzMl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyVUksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRh
PEdMdWludCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMT4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQjMyVUksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMzJH
MzJCMzJBMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJf
VUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQkEzMlVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1aW50LCAweDAwMDAwMDAwLCAw
eDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAxPik7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjU2NToKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKFN1cHBvcnRzRm9ybWF0KERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSwgZGV2
aWNlQ2FwcykpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKEdMX1JHQjU2NSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkI1RzZSNV9VTk9STSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5P
Uk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X0I1RzZSNV9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3Jt
YXQgaW5mbyhHTF9SR0I1NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QjVHNlI1X1VOT1JNLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
QjVHNlI1X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZv
KEdMX1JHQjU2NSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4
RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAw
LCAweDAwLCAweEZGPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5m
byhHTF9SR0I1NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4
RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0
Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZGPik7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE1NzAs
MjEgKzE1NjYsMzQgQEAgY29uc3QgRm9ybWF0ICZGb3JtYXQ6OkdldChHTGVudW0gaW50ZXJuYWxG
b3JtYXQsIGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZkZXYKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKFN1cHBvcnRzRm9ybWF0KERYR0lfRk9STUFUX0I1RzVSNUExX1VOT1JNLCBkZXZp
Y2VDYXBzKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oR0xfUkdCNV9BMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkI1RzVSNUExX1VOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNVI1
QTFfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX0I1RzVSNUExX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCNV9BMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCNUc1UjVBMV9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I1
RzVSNUExX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9CNUc1UjVBMV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQjVfQTEsCisgICAgICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0I1X0ExLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQjg6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCOCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhC
OEE4X1VOT1JNLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCkBAIC0xNTkyLDIyNiArMTYwMSwy
MTAgQEAgY29uc3QgRm9ybWF0ICZGb3JtYXQ6OkdldChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNv
bnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZkZXYKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdMX1JHQjg6
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0I4
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklE
OjpSOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVi
eXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZGPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4RkY+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgR0xfUkdCOEk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3Jt
YXQgaW5mbyhHTF9SR0I4SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhC
OEE4X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThJ
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9u
ZW50RGF0YTxHTGJ5dGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDE+LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0I4SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1NJTlQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1I4RzhCOEE4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4SSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMYnl0
ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMT4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SR0I4VUk6CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0I4VUksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VJTlQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlO
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4RzhCOEE4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQkE4VUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4
MDE+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0I4VUksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpS
OEc4QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0JBOFVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFs
aXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMT4pOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SR0I4X1NO
T1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xf
UkdCOF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6
Rm9ybWF0OjpJRDo6UjhHOEI4QThfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JN
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4X1NOT1JNLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50
RGF0YTxHTGJ5dGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4N0Y+LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0I4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfU05PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4
X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4X1NOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8
R0xieXRlLCAweDAwLCAweDAwLCAweDAwLCAweDdGPik7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjlfRTU6CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0I5X0U1LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOUc5QjlFNV9TSEFS
RURFWFAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjlHOUI5RTVfU0hBUkVERVhQLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1I5RzlCOUU1X1NIQVJFREVYUCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkZfRVhULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIEZvcm1hdCBpbmZvKEdMX1JHQjlfRTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOUc5QjlFNV9TSEFSRURFWFAsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I5RzlCOUU1
X1NIQVJFREVYUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFSRURFWFAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkZfRVhU
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCQToK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQkEs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6
OlI4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgRm9ybWF0IGluZm8oR0xfUkdCQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SR0JBMTZGOgogICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCQTE2RiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2
X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZM
T0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCQTE2RiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9GTE9B
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9SR0JBMTZGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgR0xfUkdCQTE2SToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKEdMX1JHQkExNkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9TSU5ULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkEx
Nl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNkcxNkIxNkExNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCQTE2SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
dmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9S
R0JBMTZJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6
Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
U0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZJLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCQTE2VUk6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0JBMTZVSSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2
QTE2X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlO
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZVSSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0JBMTZVSSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9VSU5U
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MTZHMTZCMTZBMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZH
MTZCMTZBMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkdCQTE2VUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBHTF9SR0JBMTZfRVhUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oR0xfUkdCQTE2X0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X1VOT1JNLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZC
MTZBMTZfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNl9FWFQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0
IGluZm8oR0xfUkdCQTE2X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMTZHMTZCMTZBMTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZf
RVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsK
ICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdC
QTE2X1NOT1JNX0VYVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1h
dCBpbmZvKEdMX1JHQkExNl9TTk9STV9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9TTk9STSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05P
Uk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2
RzE2QjE2QTE2X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCQTE2X1NOT1JNX0VYVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQg
aW5mbyhHTF9SR0JBMTZfU05PUk1fRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X1NOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZB
MTZfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IxNkcxNkIxNkExNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZfU05PUk1f
RVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsK
ICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdC
QTMyRjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdM
X1JHQkEzMkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZv
cm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9SR0JBMzJGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fw
cyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQkEzMkYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FU
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQkEzMkk6CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0JBMzJJLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJf
U0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5ULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMkksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCQTMySSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9TSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJC
MzJBMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJB
MzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdC
QTMySSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7
CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JH
QkEzMlVJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8o
R0xfUkdCQTMyVUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OkZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfUkdCQTMyVUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBz
KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCQTMyVUks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSMzJHMzJCMzJBMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMlVJLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCQTQ6CiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmIChTdXBwb3J0c0Zvcm1hdChEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSwgZGV2aWNlQ2Fw
cykpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBp
bmZvKEdMX1JHQkE0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZTo6Rm9ybWF0OjpJRDo6QjRHNFI0QTRfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9S
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
QjRHNFI0QTRfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SR0JBNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBG
b3JtYXQgaW5mbyhHTF9SR0JBNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCNEc0UjRBNF9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I0RzRSNEE0X1VO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfQjRHNFI0QTRfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNEc0UjRB
NF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1JHQkE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBpbmZvKEdMX1JHQkE0LAorICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Rm9ybWF0IGluZm8oR0xfUkdCQTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4
QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIpOworICAgICAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQTg6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCQTgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVU5PUk0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLApAQCAtMTgxOSwxMjMgKzE4MTIsMTAwIEBAIGNvbnN0
IEZvcm1hdCAmRm9ybWF0OjpHZXQoR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBSZW5kZXJl
cjExRGV2aWNlQ2FwcyAmZGV2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SR0JBODoKLSAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQkE4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhB
OF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBHTF9SR0JBOEk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBGb3JtYXQgaW5mbyhHTF9SR0JBOEksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1NJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4
X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1JHQkE4SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0JBOEksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhB
OF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9T
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOEks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SR0JBOFVJ
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdC
QThVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0
OjpJRDo6UjhHOEI4QThfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VJTlQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThVSSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0JBOFVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVUlOVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjhHOEI4QThfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThVSSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQkE4X1NOT1JNOgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCQThfU05PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4
RzhCOEE4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOF9TTk9STSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBG
b3JtYXQgaW5mbyhHTF9SR0JBOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1NOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjhHOEI4QThfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOF9TTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1NSR0I4OgogICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfU1JHQjgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JN
X1NSR0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjhHOEI4QThfVU5PUk1fU1JHQiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TV9TUkdCLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NSR0I4X0FM
UEhBOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENv
bXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1NSR0I4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk1fU1JH
QiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfU1JHQjhfQUxQSEE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwg
MHgwMCwgMHhGRj4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBHTF9TUkdCOF9BTFBIQTg6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBGb3JtYXQgaW5mbyhHTF9TUkdCOF9BTFBIQTgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNX1NSR0IsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThf
VU5PUk1fU1JHQiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NSR0I4X0FMUEhBOCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9TUkdCOF9BTFBIQTgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9S
TV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9T
UkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9TUkdCOF9BTFBIQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0lOREVYODoKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKE9ubHlGTDEwUGx1cyhkZXZpY2VDYXBzKSkKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfU1RFTkNJTF9JTkRFWDgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklE
OjpEMjRfVU5PUk1fUzhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxFU1MsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
RDI0X1VOT1JNX1M4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBGb3JtYXQgaW5mbyhHTF9TVEVOQ0lMX0lOREVYOCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpEMjRfVU5PUk1fUzhf
VUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IyNEc4X1RZUEVMRVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X0QyNF9VTk9STV9TOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9TVEVO
Q0lMX0lOREVYOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6OkQyNF9VTk9STV9TOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfRDI0X1VOT1JNX1M4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQkEzMkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0
IGluZm8oR0xfU1RFTkNJTF9JTkRFWDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RDI0X1VOT1JNX1M4X1VJTlQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRf
VU5PUk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQTMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIpOwogICAgICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CkBAIC0xOTQ2LDcgKzE5MTYsNyBAQCBjb25zdCBGb3JtYXQgJkZvcm1hdDo6R2V0KEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRldgogICAg
IC8vIGNsYW5nLWZvcm1hdCBvbgogCiAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGRlZmF1bHRJbmZvOworICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGRlZmF1
bHRJbmZvOwogICAgIHJldHVybiBkZWZhdWx0SW5mbzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJl
X2Zvcm1hdF90YWJsZV91dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZV91dGlscy5oCmluZGV4
IGJmZmVhNmFmOTIwMTMyMDZiYzNlZTA4NTJkMjQ1OTFjN2IwNTI5YjIuLjE0YWY4YTcwZmRjMWFh
ODI3M2E3ZGFmYjEzNDE1NjZmZGIzNDAzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFi
bGVfdXRpbHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlX3V0aWxzLmgKQEAgLTM1LDcgKzM1
LDcgQEAgaW5saW5lIGJvb2wgU3VwcG9ydHNGb3JtYXQoRFhHSV9GT1JNQVQgZm9ybWF0LCBjb25z
dCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWMKICAgICAgICAgICAgICAgICAgICAgICAgRDNE
MTFfRk9STUFUX1NVUFBPUlRfU0hBREVSX1NBTVBMRSB8IEQzRDExX0ZPUk1BVF9TVVBQT1JUX01J
UCB8CiAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1JFTkRFUl9U
QVJHRVQ7CiAKLSAgICBpZiAoZDNkMTFfZ2w6OkdldE1heGltdW1DbGllbnRWZXJzaW9uKGRldmlj
ZUNhcHMuZmVhdHVyZUxldmVsKSA+IDIpCisgICAgaWYgKGQzZDExX2dsOjpHZXRNYXhpbXVtQ2xp
ZW50VmVyc2lvbihkZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCkubWFqb3IgPiAyKQogICAgIHsKICAg
ICAgICAgbXVzdFN1cHBvcnQgfD0gRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTNEOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvd2lucnQvQ29yZVdpbmRvd05hdGl2ZVdpbmRvdy5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L0Nv
cmVXaW5kb3dOYXRpdmVXaW5kb3cuY3BwCmluZGV4IDAyMTFlNjg4N2E1MWIyYjZmZWY4YWMxNTBm
ZGYxNmZlMjhkNDA5ZDYuLjM2ZTRiZDBhMTc3ZDYwNzZiMGZiYmJkNTBmMTIxYTk2NDRkMzMxYjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvd2lucnQvQ29yZVdpbmRvd05hdGl2ZVdpbmRvdy5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9D
b3JlV2luZG93TmF0aXZlV2luZG93LmNwcApAQCAtNjQsNyArNjQsOCBAQCBib29sIENvcmVXaW5k
b3dOYXRpdmVXaW5kb3c6OmluaXRpYWxpemUoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIElQ
cm9wZXJ0eVNldAogICAgICAgICAvLyBBIEVHTFJlbmRlclN1cmZhY2VTaXplUHJvcGVydHkgYW5k
IGEgRUdMUmVuZGVyUmVzb2x1dGlvblNjYWxlUHJvcGVydHkgY2FuJ3QgYm90aCBiZSBzcGVjaWZp
ZWQKICAgICAgICAgaWYgKG1Td2FwQ2hhaW5TY2FsZVNwZWNpZmllZCAmJiBtU3dhcENoYWluU2l6
ZVNwZWNpZmllZCkKICAgICAgICAgewotICAgICAgICAgICAgRVJSKCJJdCBpcyBpbnZhbGlkIHRv
IHNwZWNpZnkgYm90aCBhbiBFR0xSZW5kZXJTdXJmYWNlU2l6ZVByb3BlcnR5IGFuZCBhIEVHTFJl
bmRlclJlc29sdXRpb25TY2FsZVByb3BlcnR5LiIpOworICAgICAgICAgICAgRVJSKCkgPDwgIkl0
IGlzIGludmFsaWQgdG8gc3BlY2lmeSBib3RoIGFuIEVHTFJlbmRlclN1cmZhY2VTaXplUHJvcGVy
dHkgYW5kIGEgIgorICAgICAgICAgICAgICAgICAgICAgIkVHTFJlbmRlclJlc29sdXRpb25TY2Fs
ZVByb3BlcnR5LiI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL3dpbnJ0L0luc3BlY3RhYmxlTmF0aXZlV2luZG93LmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvSW5z
cGVjdGFibGVOYXRpdmVXaW5kb3cuY3BwCmluZGV4IGM3ZmNmODYzNGJiOTI3YWNiNTYzZTc3NjZj
NjkwMTZlY2FlYmM2NDkuLmNjODE1MjEzMjA5ZjVhMzljNjU2YmUwYjA3ZmNmMDc4OThiN2EwOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvd2lucnQvSW5zcGVjdGFibGVOYXRpdmVXaW5kb3cuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQv
SW5zcGVjdGFibGVOYXRpdmVXaW5kb3cuY3BwCkBAIC0yNSw3ICsyNSw3IEBAIGJvb2wgSXNDb3Jl
V2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBDb21QdHI8QUJJOjpXaW5kb3dzOjpV
STo6Q29yZTo6SUNvCiAgICAgewogICAgICAgICBpZiAoY29yZVdpbmRvdyAhPSBudWxscHRyKQog
ICAgICAgICB7Ci0gICAgICAgICAgICAqY29yZVdpbmRvdyA9IGNvcmVXaW4uRGV0YWNoKCk7Cisg
ICAgICAgICAgICAqY29yZVdpbmRvdyA9IGNvcmVXaW47CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtNDYsNyArNDYsNyBAQCBib29sIElzU3dhcENoYWluUGFuZWwo
RUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIENvbVB0cjxBQkk6OldpbmRvd3M6OlVJOjpYYW1s
OgogICAgIHsKICAgICAgICAgaWYgKHN3YXBDaGFpblBhbmVsICE9IG51bGxwdHIpCiAgICAgICAg
IHsKLSAgICAgICAgICAgICpzd2FwQ2hhaW5QYW5lbCA9IHBhbmVsLkRldGFjaCgpOworICAgICAg
ICAgICAgKnN3YXBDaGFpblBhbmVsID0gcGFuZWw7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtODMsNyArODMsOCBAQCBib29sIElzRUdMQ29uZmlndXJlZFByb3Bl
cnR5U2V0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBBQkk6OldpbmRvd3M6OkZvdW5kYQog
ICAgIC8vIGNvbnNpZGVyZWQgaW52YWxpZC4KICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkgJiYg
IWhhc0VnbE5hdGl2ZVdpbmRvd1Byb3BlcnR5S2V5KQogICAgIHsKLSAgICAgICAgRVJSKCJDb3Vs
ZCBub3QgZmluZCBFR0xOYXRpdmVXaW5kb3dUeXBlUHJvcGVydHkgaW4gSVByb3BlcnR5U2V0LiBW
YWxpZCBFR0xOYXRpdmVXaW5kb3dUeXBlUHJvcGVydHkgdmFsdWVzIGluY2x1ZGUgSUNvcmVXaW5k
b3ciKTsKKyAgICAgICAgRVJSKCkgPDwgIkNvdWxkIG5vdCBmaW5kIEVHTE5hdGl2ZVdpbmRvd1R5
cGVQcm9wZXJ0eSBpbiBJUHJvcGVydHlTZXQuIFZhbGlkICIKKyAgICAgICAgICAgICAgICAgIkVH
TE5hdGl2ZVdpbmRvd1R5cGVQcm9wZXJ0eSB2YWx1ZXMgaW5jbHVkZSBJQ29yZVdpbmRvdyI7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvTmF0aXZlV2lu
ZG93MTFXaW5SVC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3dpbnJ0L05hdGl2ZVdpbmRvdzExV2luUlQuY3BwCmluZGV4IGE1Y2U0
Y2E2OGFkMTQwNmY4NTUyYTA3YzBmOWIyZjM5OWM5M2M1OTguLjJlZjIyMzVjODk5MDk2YzE3YmQ0
YWY4M2U2MTIyMTI4ZWQxYjQ2NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvTmF0aXZlV2luZG93MTFXaW5S
VC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS93aW5ydC9OYXRpdmVXaW5kb3cxMVdpblJULmNwcApAQCAtNjIsOSArNjIsOCBA
QCBib29sIE5hdGl2ZVdpbmRvdzExV2luUlQ6OmluaXRpYWxpemUoKQogICAgIH0KICAgICBlbHNl
CiAgICAgewotICAgICAgICBFUlIoCi0gICAgICAgICAgICAiSW52YWxpZCBJSW5zcGVjdGFibGUg
RUdMTmF0aXZlV2luZG93VHlwZSBkZXRlY3RlZC4gVmFsaWQgSUluc3BlY3RhYmxlcyBpbmNsdWRl
ICIKLSAgICAgICAgICAgICJJQ29yZVdpbmRvdywgSVN3YXBDaGFpblBhbmVsIGFuZCBJUHJvcGVy
dHlTZXQiKTsKKyAgICAgICAgRVJSKCkgPDwgIkludmFsaWQgSUluc3BlY3RhYmxlIEVHTE5hdGl2
ZVdpbmRvd1R5cGUgZGV0ZWN0ZWQuIFZhbGlkIElJbnNwZWN0YWJsZXMgaW5jbHVkZSAiCisgICAg
ICAgICAgICAgICAgICJJQ29yZVdpbmRvdywgSVN3YXBDaGFpblBhbmVsIGFuZCBJUHJvcGVydHlT
ZXQiOwogICAgIH0KIAogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvU3dhcENo
YWluUGFuZWxOYXRpdmVXaW5kb3cuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9Td2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRv
dy5jcHAKaW5kZXggMWRhZTFhZDdkZGUzYTgyYTk1NTFiNTdiMmU4ZTRlZTRlOWQwZTE4My4uMDg4
NzI1NzI5YzRlOTcwOGRmZDMyZTdjODNmNTIxMDIwMjQ4ZGU3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9T
d2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9Td2FwQ2hhaW5QYW5lbE5h
dGl2ZVdpbmRvdy5jcHAKQEAgLTc4LDcgKzc4LDggQEAgSFJFU1VMVCBSdW5PblVJVGhyZWFkKENP
REUgJiZjb2RlLCBjb25zdCBDb21QdHI8SUNvcmVEaXNwYXRjaGVyPiAmZGlzcGF0Y2hlcikKICAg
ICAgICAgICAgIC8vIHVucmVjb3ZlcmFibGUgc3RhdGUgKHByb2JhYmx5IGRlYWRsb2NrZWQpLiBX
ZSB0aGVyZWZvcmUgdGVybWluYXRlIHRoZSBhcHBsaWNhdGlvbgogICAgICAgICAgICAgLy8gZW50
aXJlbHkuIFRoaXMgYWxzbyBwcmV2ZW50cyBzdGFjayBjb3JydXB0aW9uIGlmIHRoZSBhc3luYyBv
cGVyYXRpb24gaXMgZXZlbnR1YWxseQogICAgICAgICAgICAgLy8gcnVuLgotICAgICAgICAgICAg
RVJSKCJUaW1lb3V0IHdhaXRpbmcgZm9yIGFzeW5jIGFjdGlvbiBvbiBVSSB0aHJlYWQuIFRoZSBV
SSB0aHJlYWQgbWlnaHQgYmUgYmxvY2tlZC4iKTsKKyAgICAgICAgICAgIEVSUigpCisgICAgICAg
ICAgICAgICAgPDwgIlRpbWVvdXQgd2FpdGluZyBmb3IgYXN5bmMgYWN0aW9uIG9uIFVJIHRocmVh
ZC4gVGhlIFVJIHRocmVhZCBtaWdodCBiZSBibG9ja2VkLiI7CiAgICAgICAgICAgICBzdGQ6OnRl
cm1pbmF0ZSgpOwogICAgICAgICAgICAgcmV0dXJuIEVfRkFJTDsKICAgICAgICAgfQpAQCAtMTMy
LDcgKzEzMyw4IEBAIGJvb2wgU3dhcENoYWluUGFuZWxOYXRpdmVXaW5kb3c6OmluaXRpYWxpemUo
RUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIElQcm9wZXJ0CiAgICAgICAgIC8vIEEgRUdMUmVu
ZGVyU3VyZmFjZVNpemVQcm9wZXJ0eSBhbmQgYSBFR0xSZW5kZXJSZXNvbHV0aW9uU2NhbGVQcm9w
ZXJ0eSBjYW4ndCBib3RoIGJlIHNwZWNpZmllZAogICAgICAgICBpZiAobVN3YXBDaGFpblNjYWxl
U3BlY2lmaWVkICYmIG1Td2FwQ2hhaW5TaXplU3BlY2lmaWVkKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBFUlIoIkl0IGlzIGludmFsaWQgdG8gc3BlY2lmeSBib3RoIGFuIEVHTFJlbmRlclN1cmZh
Y2VTaXplUHJvcGVydHkgYW5kIGEgRUdMUmVuZGVyUmVzb2x1dGlvblNjYWxlUHJvcGVydHkuIik7
CisgICAgICAgICAgICBFUlIoKSA8PCAiSXQgaXMgaW52YWxpZCB0byBzcGVjaWZ5IGJvdGggYW4g
RUdMUmVuZGVyU3VyZmFjZVNpemVQcm9wZXJ0eSBhbmQgYSAiCisgICAgICAgICAgICAgICAgICAg
ICAiRUdMUmVuZGVyUmVzb2x1dGlvblNjYWxlUHJvcGVydHkuIjsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTM1Miw0ICszNTQsNCBAQCBIUkVTVUxUIEdl
dFN3YXBDaGFpblBhbmVsU2l6ZSgKIAogICAgIHJldHVybiByZXN1bHQ7CiB9Ci19ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0JsaXQ5LmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9CbGl0OS5jcHAKaW5k
ZXggMzMzZjI1MDcwOWFkYjcyYjJmNWQ2YmM4OWM2MzkyYjBlZjQzMWFlZi4uNDNjODFjM2FjM2U1
NTk0MWY1MWE4YmE1ODcyMTRlZjk0MDIyMzYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0JsaXQ5LmNwcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQmxp
dDkuY3BwCkBAIC03LDYgKzcsOCBAQAogLy8gQmxpdDkuY3BwOiBTdXJmYWNlIGNvcHkgdXRpbGl0
eSBjbGFzcy4KIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0JsaXQ5Lmgi
CisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4dHVyZUQzRC5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVyOV91dGlscy5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L2Zvcm1hdHV0aWxzOS5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1RleHR1cmVTdG9yYWdlOS5oIgpAQCAtMjAsMjcg
KzIyLDM0IEBAIG5hbWVzcGFjZQogewogLy8gUHJlY29tcGlsZWQgc2hhZGVycwogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvc3RhbmRhcmR2cy5o
IgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQv
ZmxpcHl2cy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMv
Y29tcGlsZWQvcGFzc3Rocm91Z2hwcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvbHVtaW5hbmNlcHMuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2x1bWluYW5jZXByZW11bHRwcy5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQv
bHVtaW5hbmNldW5tdWx0cHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
OS9zaGFkZXJzL2NvbXBpbGVkL2NvbXBvbmVudG1hc2twcy5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvY29tcG9uZW50bWFza3ByZW11bHRw
cy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGls
ZWQvY29tcG9uZW50bWFza3VubXVsdHBzLmgiCiAKLWNvbnN0IEJZVEUqIGNvbnN0IGdfc2hhZGVy
Q29kZVtdID0KLXsKK2NvbnN0IEJZVEUgKmNvbnN0IGdfc2hhZGVyQ29kZVtdID0gewogICAgIGdf
dnMyMF9zdGFuZGFyZHZzLAotICAgIGdfdnMyMF9mbGlweXZzLAogICAgIGdfcHMyMF9wYXNzdGhy
b3VnaHBzLAogICAgIGdfcHMyMF9sdW1pbmFuY2VwcywKLSAgICBnX3BzMjBfY29tcG9uZW50bWFz
a3BzCisgICAgZ19wczIwX2x1bWluYW5jZXByZW11bHRwcywKKyAgICBnX3BzMjBfbHVtaW5hbmNl
dW5tdWx0cHMsCisgICAgZ19wczIwX2NvbXBvbmVudG1hc2twcywKKyAgICBnX3BzMjBfY29tcG9u
ZW50bWFza3ByZW11bHRwcywKKyAgICBnX3BzMjBfY29tcG9uZW50bWFza3VubXVsdHBzLAogfTsK
IAotY29uc3Qgc2l6ZV90IGdfc2hhZGVyU2l6ZVtdID0KLXsKK2NvbnN0IHNpemVfdCBnX3NoYWRl
clNpemVbXSA9IHsKICAgICBzaXplb2YoZ192czIwX3N0YW5kYXJkdnMpLAotICAgIHNpemVvZihn
X3ZzMjBfZmxpcHl2cyksCiAgICAgc2l6ZW9mKGdfcHMyMF9wYXNzdGhyb3VnaHBzKSwKICAgICBz
aXplb2YoZ19wczIwX2x1bWluYW5jZXBzKSwKLSAgICBzaXplb2YoZ19wczIwX2NvbXBvbmVudG1h
c2twcykKKyAgICBzaXplb2YoZ19wczIwX2x1bWluYW5jZXByZW11bHRwcyksCisgICAgc2l6ZW9m
KGdfcHMyMF9sdW1pbmFuY2V1bm11bHRwcyksCisgICAgc2l6ZW9mKGdfcHMyMF9jb21wb25lbnRt
YXNrcHMpLAorICAgIHNpemVvZihnX3BzMjBfY29tcG9uZW50bWFza3ByZW11bHRwcyksCisgICAg
c2l6ZW9mKGdfcHMyMF9jb21wb25lbnRtYXNrdW5tdWx0cHMpLAogfTsKIH0KIApAQCAtNzUsNyAr
ODQsNyBAQCBnbDo6RXJyb3IgQmxpdDk6OmluaXRpYWxpemUoKQogewogICAgIGlmIChtR2VvbWV0
cnlMb2FkZWQpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsK
KyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0
IGZsb2F0IHF1YWRbXSA9CkBAIC0xMjUsNyArMTM0LDcgQEAgZ2w6OkVycm9yIEJsaXQ5Ojppbml0
aWFsaXplKCkKICAgICB9CiAKICAgICBtR2VvbWV0cnlMb2FkZWQgPSB0cnVlOwotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQog
CiB0ZW1wbGF0ZSA8Y2xhc3MgRDNEU2hhZGVyVHlwZT4KQEAgLTE1NSw3ICsxNjQsNyBAQCBnbDo6
RXJyb3IgQmxpdDk6OnNldFNoYWRlcihTaGFkZXJJZCBzb3VyY2UsIGNvbnN0IGNoYXIgKnByb2Zp
bGUsCiAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0
byBzZXQgc2hhZGVyIGZvciBibGl0IG9wZXJhdGlvbiwgcmVzdWx0OiAweCVYLiIsIGhyKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEJsaXQ5OjpzZXRWZXJ0ZXhTaGFkZXIoU2hhZGVy
SWQgc2hhZGVyKQpAQCAtMTgyLDExICsxOTEsMTkgQEAgUkVDVCBCbGl0OTo6Z2V0U3VyZmFjZVJl
Y3QoSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UpIGNvbnN0CiAgICAgcmV0dXJuIHJlY3Q7CiB9
CiAKK2dsOjpFeHRlbnRzIEJsaXQ5OjpnZXRTdXJmYWNlU2l6ZShJRGlyZWN0M0RTdXJmYWNlOSAq
c3VyZmFjZSkgY29uc3QKK3sKKyAgICBEM0RTVVJGQUNFX0RFU0MgZGVzYzsKKyAgICBzdXJmYWNl
LT5HZXREZXNjKCZkZXNjKTsKKworICAgIHJldHVybiBnbDo6RXh0ZW50cyhkZXNjLldpZHRoLCBk
ZXNjLkhlaWdodCwgMSk7Cit9CisKIGdsOjpFcnJvciBCbGl0OTo6Ym94RmlsdGVyKElEaXJlY3Qz
RFN1cmZhY2U5ICpzb3VyY2UsIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0KQogewogICAgIEFOR0xF
X1RSWShpbml0aWFsaXplKCkpOwogCi0gICAgSURpcmVjdDNEVGV4dHVyZTkgKnRleHR1cmUgPSBO
VUxMOworICAgIElEaXJlY3QzREJhc2VUZXh0dXJlOSAqdGV4dHVyZSA9IE5VTEw7CiAgICAgQU5H
TEVfVFJZKGNvcHlTdXJmYWNlVG9UZXh0dXJlKHNvdXJjZSwgZ2V0U3VyZmFjZVJlY3Qoc291cmNl
KSwgJnRleHR1cmUpKTsKIAogICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJl
ci0+Z2V0RGV2aWNlKCk7CkBAIC0yMDMsNyArMjIwLDggQEAgZ2w6OkVycm9yIEJsaXQ5Ojpib3hG
aWx0ZXIoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3Qp
CiAgICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoMCwgRDNEU0FNUF9NSU5GSUxURVIsIEQzRFRF
WEZfTElORUFSKTsKICAgICBkZXZpY2UtPlNldFNhbXBsZXJTdGF0ZSgwLCBEM0RTQU1QX01BR0ZJ
TFRFUiwgRDNEVEVYRl9MSU5FQVIpOwogCi0gICAgc2V0Vmlld3BvcnQoZ2V0U3VyZmFjZVJlY3Qo
ZGVzdCksIGdsOjpPZmZzZXQoMCwgMCwgMCkpOworICAgIHNldFZpZXdwb3J0QW5kU2hhZGVyQ29u
c3RhbnRzKGdldFN1cmZhY2VSZWN0KHNvdXJjZSksIGdldFN1cmZhY2VTaXplKHNvdXJjZSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U3VyZmFjZVJlY3QoZGVzdCksIGZh
bHNlKTsKIAogICAgIHJlbmRlcigpOwogCkBAIC0yMTEsNyArMjI5LDcgQEAgZ2w6OkVycm9yIEJs
aXQ5Ojpib3hGaWx0ZXIoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwgSURpcmVjdDNEU3VyZmFj
ZTkgKmRlc3QpCiAKICAgICByZXN0b3JlU3RhdGUoKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3Ig
QmxpdDk6OmNvcHkyRChjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBS
RUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwgY29uc3QgZ2w6Ok9mZnNldCAmZGVz
dE9mZnNldCwgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIEdMaW50IGxldmVsKQpAQCAtMjM4LDcg
KzI1Niw4IEBAIGdsOjpFcnJvciBCbGl0OTo6Y29weTJEKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAq
ZnJhbWVidWZmZXIsIGNvbnN0IFJFQ1QgJnNvdXJjZVJlCiAgICAgfQogICAgIEFTU0VSVChkZXN0
U3VyZmFjZSk7CiAKLSAgICBnbDo6RXJyb3IgcmVzdWx0ID0gY29weShzb3VyY2UsIHNvdXJjZVJl
Y3QsIGRlc3RGb3JtYXQsIGRlc3RPZmZzZXQsIGRlc3RTdXJmYWNlKTsKKyAgICBnbDo6RXJyb3Ig
cmVzdWx0ID0KKyAgICAgICAgY29weShzb3VyY2UsIG51bGxwdHIsIHNvdXJjZVJlY3QsIGRlc3RG
b3JtYXQsIGRlc3RPZmZzZXQsIGRlc3RTdXJmYWNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKIAog
ICAgIFNhZmVSZWxlYXNlKGRlc3RTdXJmYWNlKTsKICAgICBTYWZlUmVsZWFzZShzb3VyY2UpOwpA
QCAtMjc4LDcgKzI5Nyw4IEBAIGdsOjpFcnJvciBCbGl0OTo6Y29weUN1YmUoY29uc3QgZ2w6OkZy
YW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgUkVDVCAmc291cmNlCiAgICAgfQogICAgIEFT
U0VSVChkZXN0U3VyZmFjZSk7CiAKLSAgICBnbDo6RXJyb3IgcmVzdWx0ID0gY29weShzb3VyY2Us
IHNvdXJjZVJlY3QsIGRlc3RGb3JtYXQsIGRlc3RPZmZzZXQsIGRlc3RTdXJmYWNlKTsKKyAgICBn
bDo6RXJyb3IgcmVzdWx0ID0KKyAgICAgICAgY29weShzb3VyY2UsIG51bGxwdHIsIHNvdXJjZVJl
Y3QsIGRlc3RGb3JtYXQsIGRlc3RPZmZzZXQsIGRlc3RTdXJmYWNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlKTsKIAogICAgIFNhZmVSZWxlYXNlKGRlc3RTdXJmYWNlKTsKICAgICBTYWZlUmVsZWFzZShz
b3VyY2UpOwpAQCAtMjg2LDcgKzMwNiw2MyBAQCBnbDo6RXJyb3IgQmxpdDk6OmNvcHlDdWJlKGNv
bnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IFJFQ1QgJnNvdXJjZQogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLWdsOjpFcnJvciBCbGl0OTo6Y29weShJRGlyZWN0M0RTdXJm
YWNlOSAqc291cmNlLCBjb25zdCBSRUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwg
Y29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QpCitn
bDo6RXJyb3IgQmxpdDk6OmNvcHlUZXh0dXJlMkQoY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzb3VyY2VMZXZlbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSRUNUICZzb3VyY2VSZWN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZGVzdExldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgZmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBwcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgdW5tdWx0aXBseUFscGhhKQoreworICAgIEFOR0xFX1RSWShpbml0aWFsaXplKCkpOwor
CisgICAgY29uc3QgVGV4dHVyZUQzRCAqc291cmNlRDNEID0gR2V0SW1wbEFzPFRleHR1cmVEM0Q+
KHNvdXJjZSk7CisKKyAgICBUZXh0dXJlU3RvcmFnZSAqc291cmNlU3RvcmFnZSA9IG51bGxwdHI7
CisgICAgQU5HTEVfVFJZKGNvbnN0X2Nhc3Q8VGV4dHVyZUQzRCAqPihzb3VyY2VEM0QpLT5nZXRO
YXRpdmVUZXh0dXJlKCZzb3VyY2VTdG9yYWdlKSk7CisKKyAgICBUZXh0dXJlU3RvcmFnZTlfMkQg
KnNvdXJjZVN0b3JhZ2U5ID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2U5XzJEPihzb3VyY2VTdG9yYWdl
KTsKKyAgICBBU1NFUlQoc291cmNlU3RvcmFnZTkpOworCisgICAgVGV4dHVyZVN0b3JhZ2U5XzJE
ICpkZXN0U3RvcmFnZTkgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTlfMkQ+KHN0b3JhZ2UpOworICAg
IEFTU0VSVChkZXN0U3RvcmFnZTkpOworCisgICAgQVNTRVJUKHNvdXJjZUxldmVsID09IDApOwor
ICAgIElEaXJlY3QzREJhc2VUZXh0dXJlOSAqc291cmNlVGV4dHVyZSA9IG51bGxwdHI7CisgICAg
QU5HTEVfVFJZKHNvdXJjZVN0b3JhZ2U5LT5nZXRCYXNlVGV4dHVyZSgmc291cmNlVGV4dHVyZSkp
OworCisgICAgSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZVN1cmZhY2UgPSBudWxscHRyOworICAg
IEFOR0xFX1RSWShzb3VyY2VTdG9yYWdlOS0+Z2V0U3VyZmFjZUxldmVsKEdMX1RFWFRVUkVfMkQs
IHNvdXJjZUxldmVsLCB0cnVlLCAmc291cmNlU3VyZmFjZSkpOworCisgICAgSURpcmVjdDNEU3Vy
ZmFjZTkgKmRlc3RTdXJmYWNlID0gbnVsbHB0cjsKKyAgICBnbDo6RXJyb3IgZXJyb3IgPSBkZXN0
U3RvcmFnZTktPmdldFN1cmZhY2VMZXZlbChHTF9URVhUVVJFXzJELCBkZXN0TGV2ZWwsIHRydWUs
ICZkZXN0U3VyZmFjZSk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAg
IFNhZmVSZWxlYXNlKHNvdXJjZVN1cmZhY2UpOworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAg
fQorCisgICAgZXJyb3IgPSBjb3B5KHNvdXJjZVN1cmZhY2UsIHNvdXJjZVRleHR1cmUsIHNvdXJj
ZVJlY3QsIGRlc3RGb3JtYXQsIGRlc3RPZmZzZXQsIGRlc3RTdXJmYWNlLAorICAgICAgICAgICAg
ICAgICBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgdW5tdWx0aXBseUFscGhhKTsKKworICAgIFNh
ZmVSZWxlYXNlKHNvdXJjZVN1cmZhY2UpOworICAgIFNhZmVSZWxlYXNlKGRlc3RTdXJmYWNlKTsK
KworICAgIHJldHVybiBlcnJvcjsKK30KKworZ2w6OkVycm9yIEJsaXQ5Ojpjb3B5KElEaXJlY3Qz
RFN1cmZhY2U5ICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgSURpcmVjdDNEQmFzZVRl
eHR1cmU5ICpzb3VyY2VUZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQ1Qg
JnNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAg
ICAgICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCwKKyAgICAgICAgICAgICAg
ICAgICAgICBib29sIGZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICBib29sIHVubXVsdGlwbHlBbHBoYSkKIHsK
ICAgICBBU1NFUlQoc291cmNlICE9IE5VTEwgJiYgZGVzdCAhPSBOVUxMKTsKIApAQCAtMjk3LDgg
KzM3MywxMCBAQCBnbDo6RXJyb3IgQmxpdDk6OmNvcHkoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJj
ZSwgY29uc3QgUkVDVCAmc291cmNlUmVjdCwgR0xlbnVtCiAgICAgc291cmNlLT5HZXREZXNjKCZz
b3VyY2VEZXNjKTsKICAgICBkZXN0LT5HZXREZXNjKCZkZXN0RGVzYyk7CiAKLSAgICBpZiAoc291
cmNlRGVzYy5Gb3JtYXQgPT0gZGVzdERlc2MuRm9ybWF0ICYmIGRlc3REZXNjLlVzYWdlICYgRDNE
VVNBR0VfUkVOREVSVEFSR0VUICYmCi0gICAgICAgIGQzZDlfZ2w6OklzRm9ybWF0Q2hhbm5lbEVx
dWl2YWxlbnQoZGVzdERlc2MuRm9ybWF0LCBkZXN0Rm9ybWF0KSkgICAvLyBDYW4gdXNlIFN0cmV0
Y2hSZWN0CisgICAgLy8gQ2hlY2sgaWYgaXQncyBwb3NzaWJsZSB0byB1c2UgU3RldGNoUmVjdAor
ICAgIGlmIChzb3VyY2VEZXNjLkZvcm1hdCA9PSBkZXN0RGVzYy5Gb3JtYXQgJiYgKGRlc3REZXNj
LlVzYWdlICYgRDNEVVNBR0VfUkVOREVSVEFSR0VUKSAmJgorICAgICAgICBkM2Q5X2dsOjpJc0Zv
cm1hdENoYW5uZWxFcXVpdmFsZW50KGRlc3REZXNjLkZvcm1hdCwgZGVzdEZvcm1hdCkgJiYgIWZs
aXBZICYmCisgICAgICAgIHByZW11bHRpcGx5QWxwaGEgPT0gdW5tdWx0aXBseUFscGhhKQogICAg
IHsKICAgICAgICAgUkVDVCBkZXN0UmVjdCA9IHsgZGVzdE9mZnNldC54LCBkZXN0T2Zmc2V0Lnks
IGRlc3RPZmZzZXQueCArIChzb3VyY2VSZWN0LnJpZ2h0IC0gc291cmNlUmVjdC5sZWZ0KSwgZGVz
dE9mZnNldC55ICsgKHNvdXJjZVJlY3QuYm90dG9tIC0gc291cmNlUmVjdC50b3ApfTsKICAgICAg
ICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPlN0cmV0Y2hSZWN0KHNvdXJjZSwgJnNvdXJjZVJl
Y3QsIGRlc3QsICZkZXN0UmVjdCwgRDNEVEVYRl9QT0lOVCk7CkBAIC0zMDksODIgKzM4NywxMzEg
QEAgZ2w6OkVycm9yIEJsaXQ5Ojpjb3B5KElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UsIGNvbnN0
IFJFQ1QgJnNvdXJjZVJlY3QsIEdMZW51bQogICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGJsaXQgYmV0d2VlbiB0ZXh0dXJlcywgU3RyZXRj
aFJlY3QgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHJldHVybiBmb3JtYXRDb252ZXJ0KHNv
dXJjZSwgc291cmNlUmVjdCwgZGVzdEZvcm1hdCwgZGVzdE9mZnNldCwgZGVzdCk7Ci0gICAgfQot
fQorICAgICAgICBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKnRleHR1cmUgPSBzb3VyY2VUZXh0dXJl
OworICAgICAgICBSRUNUIGFkanVzdGVkU291cmNlUmVjdCAgICAgICAgPSBzb3VyY2VSZWN0Owor
ICAgICAgICBnbDo6RXh0ZW50cyBzb3VyY2VTaXplKHNvdXJjZURlc2MuV2lkdGgsIHNvdXJjZURl
c2MuSGVpZ2h0LCAxKTsKIAotZ2w6OkVycm9yIEJsaXQ5Ojpmb3JtYXRDb252ZXJ0KElEaXJlY3Qz
RFN1cmZhY2U5ICpzb3VyY2UsIGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9y
bWF0LCBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBJRGlyZWN0M0RTdXJmYWNlOSAqZGVz
dCkKLXsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBpbml0aWFsaXplKCk7Ci0gICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgICAg
IGlmICh0ZXh0dXJlID09IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFOR0xFX1RS
WShjb3B5U3VyZmFjZVRvVGV4dHVyZShzb3VyY2UsIHNvdXJjZVJlY3QsICZ0ZXh0dXJlKSk7CisK
KyAgICAgICAgICAgIC8vIGNvcHlTdXJmYWNlVG9UZXh0dXJlIG9ubHkgY29waWVzIGluIHRoZSBz
b3VyY2VSZWN0IGFyZWEgb2YgdGhlIHNvdXJjZSBzdXJmYWNlLgorICAgICAgICAgICAgLy8gQWRq
dXN0IHNvdXJjZVJlY3Qgc28gdGhhdCBpdCBpcyBub3cgY292ZXJpbmcgdGhlIGVudGlyZSBzb3Vy
Y2UgdGV4dHVyZQorICAgICAgICAgICAgYWRqdXN0ZWRTb3VyY2VSZWN0LmxlZnQgICA9IDA7Cisg
ICAgICAgICAgICBhZGp1c3RlZFNvdXJjZVJlY3QucmlnaHQgID0gc291cmNlUmVjdC5yaWdodCAt
IHNvdXJjZVJlY3QubGVmdDsKKyAgICAgICAgICAgIGFkanVzdGVkU291cmNlUmVjdC50b3AgICAg
PSAwOworICAgICAgICAgICAgYWRqdXN0ZWRTb3VyY2VSZWN0LmJvdHRvbSA9IHNvdXJjZVJlY3Qu
Ym90dG9tIC0gc291cmNlUmVjdC50b3A7CisKKyAgICAgICAgICAgIHNvdXJjZVNpemUud2lkdGgg
ID0gc291cmNlUmVjdC5yaWdodCAtIHNvdXJjZVJlY3QubGVmdDsKKyAgICAgICAgICAgIHNvdXJj
ZVNpemUuaGVpZ2h0ID0gc291cmNlUmVjdC5ib3R0b20gLSBzb3VyY2VSZWN0LnRvcDsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHRleHR1cmUtPkFkZFJl
ZigpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZm9ybWF0Q29udmVy
dCh0ZXh0dXJlLCBhZGp1c3RlZFNvdXJjZVJlY3QsIHNvdXJjZVNpemUsIGRlc3RGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdE9mZnNldCwgZGVzdCwg
ZmxpcFksIHByZW11bHRpcGx5QWxwaGEsIHVubXVsdGlwbHlBbHBoYSk7CisKKyAgICAgICAgU2Fm
ZVJlbGVhc2UodGV4dHVyZSk7CiAKLSAgICBJRGlyZWN0M0RUZXh0dXJlOSAqdGV4dHVyZSA9IE5V
TEw7Ci0gICAgZXJyb3IgPSBjb3B5U3VyZmFjZVRvVGV4dHVyZShzb3VyY2UsIHNvdXJjZVJlY3Qs
ICZ0ZXh0dXJlKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKICAgICAgICAgcmV0
dXJuIGVycm9yOwogICAgIH0KK30KKworZ2w6OkVycm9yIEJsaXQ5Ojpmb3JtYXRDb252ZXJ0KElE
aXJlY3QzREJhc2VUZXh0dXJlOSAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJjZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVu
bXVsdGlwbHlBbHBoYSkKK3sKKyAgICBBTkdMRV9UUlkoaW5pdGlhbGl6ZSgpKTsKIAogICAgIElE
aXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAKICAgICBz
YXZlU3RhdGUoKTsKIAotICAgIGRldmljZS0+U2V0VGV4dHVyZSgwLCB0ZXh0dXJlKTsKKyAgICBk
ZXZpY2UtPlNldFRleHR1cmUoMCwgc291cmNlKTsKICAgICBkZXZpY2UtPlNldFJlbmRlclRhcmdl
dCgwLCBkZXN0KTsKIAotICAgIHNldFZpZXdwb3J0KHNvdXJjZVJlY3QsIGRlc3RPZmZzZXQpOwor
ICAgIFJFQ1QgZGVzdFJlY3Q7CisgICAgZGVzdFJlY3QubGVmdCAgID0gZGVzdE9mZnNldC54Owor
ICAgIGRlc3RSZWN0LnJpZ2h0ICA9IGRlc3RPZmZzZXQueCArIChzb3VyY2VSZWN0LnJpZ2h0IC0g
c291cmNlUmVjdC5sZWZ0KTsKKyAgICBkZXN0UmVjdC50b3AgICAgPSBkZXN0T2Zmc2V0Lnk7Cisg
ICAgZGVzdFJlY3QuYm90dG9tID0gZGVzdE9mZnNldC55ICsgKHNvdXJjZVJlY3QuYm90dG9tIC0g
c291cmNlUmVjdC50b3ApOworCisgICAgc2V0Vmlld3BvcnRBbmRTaGFkZXJDb25zdGFudHMoc291
cmNlUmVjdCwgc291cmNlU2l6ZSwgZGVzdFJlY3QsIGZsaXBZKTsKIAogICAgIHNldENvbW1vbkJs
aXRTdGF0ZSgpOwogCi0gICAgZXJyb3IgPSBzZXRGb3JtYXRDb252ZXJ0U2hhZGVycyhkZXN0Rm9y
bWF0KTsKKyAgICBnbDo6RXJyb3IgZXJyb3IgPSBzZXRGb3JtYXRDb252ZXJ0U2hhZGVycyhkZXN0
Rm9ybWF0LCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgdW5tdWx0aXBseUFscGhhKTsKICAgICBp
ZiAoIWVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIHJlbmRlcigpOwogICAgIH0KIAot
ICAgIFNhZmVSZWxlYXNlKHRleHR1cmUpOwotCiAgICAgcmVzdG9yZVN0YXRlKCk7CiAKICAgICBy
ZXR1cm4gZXJyb3I7CiB9CiAKLWdsOjpFcnJvciBCbGl0OTo6c2V0Rm9ybWF0Q29udmVydFNoYWRl
cnMoR0xlbnVtIGRlc3RGb3JtYXQpCitnbDo6RXJyb3IgQmxpdDk6OnNldEZvcm1hdENvbnZlcnRT
aGFkZXJzKEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgdW5tdWx0aXBseUFscGhhKQogewotICAgIGdsOjpFcnJvciBl
cnJvciA9IHNldFZlcnRleFNoYWRlcihTSEFERVJfVlNfU1RBTkRBUkQpOwotICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFO
R0xFX1RSWShzZXRWZXJ0ZXhTaGFkZXIoU0hBREVSX1ZTX1NUQU5EQVJEKSk7CiAKICAgICBzd2l0
Y2ggKGRlc3RGb3JtYXQpCiAgICAgewotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKICAg
ICAgIGNhc2UgR0xfUkdCQToKICAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6CiAgICAgICBjYXNlIEdM
X1JHQjoKICAgICAgIGNhc2UgR0xfUkdfRVhUOgogICAgICAgY2FzZSBHTF9SRURfRVhUOgogICAg
ICAgY2FzZSBHTF9BTFBIQToKLSAgICAgICAgZXJyb3IgPSBzZXRQaXhlbFNoYWRlcihTSEFERVJf
UFNfQ09NUE9ORU5UTUFTSyk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgIGlmIChwcmVtdWx0
aXBseUFscGhhID09IHVubXVsdGlwbHlBbHBoYSkKKyAgICAgICAgICB7CisgICAgICAgICAgICAg
IEFOR0xFX1RSWShzZXRQaXhlbFNoYWRlcihTSEFERVJfUFNfQ09NUE9ORU5UTUFTSykpOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChwcmVtdWx0aXBseUFscGhhKQorICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgQU5HTEVfVFJZKHNldFBpeGVsU2hhZGVyKFNIQURFUl9QU19DT01Q
T05FTlRNQVNLX1BSRU1VTFRJUExZX0FMUEhBKSk7CisgICAgICAgICAgfQorICAgICAgICAgIGVs
c2UKKyAgICAgICAgICB7CisgICAgICAgICAgICAgIEFTU0VSVCh1bm11bHRpcGx5QWxwaGEpOwor
ICAgICAgICAgICAgICBBTkdMRV9UUlkoc2V0UGl4ZWxTaGFkZXIoU0hBREVSX1BTX0NPTVBPTkVO
VE1BU0tfVU5NVUxUSVBMWV9BTFBIQSkpOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsK
IAogICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U6CiAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBI
QToKLSAgICAgICAgZXJyb3IgPSBzZXRQaXhlbFNoYWRlcihTSEFERVJfUFNfTFVNSU5BTkNFKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICBpZiAocHJlbXVsdGlwbHlBbHBoYSA9
PSB1bm11bHRpcGx5QWxwaGEpCisgICAgICAgICAgeworICAgICAgICAgICAgICBBTkdMRV9UUlko
c2V0UGl4ZWxTaGFkZXIoU0hBREVSX1BTX0xVTUlOQU5DRSkpOworICAgICAgICAgIH0KKyAgICAg
ICAgICBlbHNlIGlmIChwcmVtdWx0aXBseUFscGhhKQorICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgQU5HTEVfVFJZKHNldFBpeGVsU2hhZGVyKFNIQURFUl9QU19MVU1JTkFOQ0VfUFJFTVVMVElQ
TFlfQUxQSEEpKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZQorICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgQVNTRVJUKHVubXVsdGlwbHlBbHBoYSk7CisgICAgICAgICAgICAgIEFOR0xF
X1RSWShzZXRQaXhlbFNoYWRlcihTSEFERVJfUFNfTFVNSU5BTkNFX1VOTVVMVElQTFlfQUxQSEEp
KTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9CiAKICAgICBlbnVtIHsgWCA9IDAsIFkgPSAxLCBa
ID0gMiwgVyA9IDMgfTsKQEAgLTQ4MCwxMCArNjA3LDEyIEBAIGdsOjpFcnJvciBCbGl0OTo6c2V0
Rm9ybWF0Q29udmVydFNoYWRlcnMoR0xlbnVtIGRlc3RGb3JtYXQpCiAKICAgICBtUmVuZGVyZXIt
PmdldERldmljZSgpLT5TZXRQaXhlbFNoYWRlckNvbnN0YW50RigwLCBwc0NvbnN0LCAyKTsKIAot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCi1nbDo6RXJyb3IgQmxpdDk6OmNvcHlTdXJmYWNlVG9UZXh0dXJlKElEaXJlY3Qz
RFN1cmZhY2U5ICpzdXJmYWNlLCBjb25zdCBSRUNUICZzb3VyY2VSZWN0LCBJRGlyZWN0M0RUZXh0
dXJlOSAqKm91dFRleHR1cmUpCitnbDo6RXJyb3IgQmxpdDk6OmNvcHlTdXJmYWNlVG9UZXh0dXJl
KElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBSRUNUICZzb3VyY2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKipvdXRUZXh0dXJlKQogewog
ICAgIEFTU0VSVChzdXJmYWNlKTsKIApAQCAtNTI1LDI0ICs2NTQsMzggQEAgZ2w6OkVycm9yIEJs
aXQ5Ojpjb3B5U3VyZmFjZVRvVGV4dHVyZShJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSwgY29u
c3QgUkVDVCAmc28KICAgICB9CiAKICAgICAqb3V0VGV4dHVyZSA9IHRleHR1cmU7Ci0gICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9
CiAKLXZvaWQgQmxpdDk6OnNldFZpZXdwb3J0KGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsIGNvbnN0
IGdsOjpPZmZzZXQgJm9mZnNldCkKK3ZvaWQgQmxpdDk6OnNldFZpZXdwb3J0QW5kU2hhZGVyQ29u
c3RhbnRzKGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQ1QgJmRlc3RSZWN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlwWSkKIHsK
ICAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwog
CiAgICAgRDNEVklFV1BPUlQ5IHZwOwotICAgIHZwLlggICAgICA9IG9mZnNldC54OwotICAgIHZw
LlkgICAgICA9IG9mZnNldC55OwotICAgIHZwLldpZHRoICA9IHNvdXJjZVJlY3QucmlnaHQgLSBz
b3VyY2VSZWN0LmxlZnQ7Ci0gICAgdnAuSGVpZ2h0ID0gc291cmNlUmVjdC5ib3R0b20gLSBzb3Vy
Y2VSZWN0LnRvcDsKKyAgICB2cC5YICAgICAgPSBkZXN0UmVjdC5sZWZ0OworICAgIHZwLlkgICAg
ICA9IGRlc3RSZWN0LnRvcDsKKyAgICB2cC5XaWR0aCAgPSBkZXN0UmVjdC5yaWdodCAtIGRlc3RS
ZWN0LmxlZnQ7CisgICAgdnAuSGVpZ2h0ID0gZGVzdFJlY3QuYm90dG9tIC0gZGVzdFJlY3QudG9w
OwogICAgIHZwLk1pblogICA9IDAuMGY7CiAgICAgdnAuTWF4WiAgID0gMS4wZjsKICAgICBkZXZp
Y2UtPlNldFZpZXdwb3J0KCZ2cCk7CiAKLSAgICBmbG9hdCBoYWxmUGl4ZWxBZGp1c3RbNF0gPSB7
IC0xLjBmL3ZwLldpZHRoLCAxLjBmL3ZwLkhlaWdodCwgMCwgMCB9OwotICAgIGRldmljZS0+U2V0
VmVydGV4U2hhZGVyQ29uc3RhbnRGKDAsIGhhbGZQaXhlbEFkanVzdCwgMSk7CisgICAgZmxvYXQg
dmVydGV4Q29uc3RhbnRzWzhdID0geworICAgICAgICAvLyBoYWxmUGl4ZWxBZGp1c3QKKyAgICAg
ICAgLTEuMGYgLyB2cC5XaWR0aCwgMS4wZiAvIHZwLkhlaWdodCwgMCwgMCwKKyAgICAgICAgLy8g
dGV4Y29vcmRPZmZzZXQKKyAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVJlY3QubGVm
dCkgLyBzb3VyY2VTaXplLndpZHRoLAorICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4oZmxpcFkg
PyBzb3VyY2VSZWN0LmJvdHRvbSA6IHNvdXJjZVJlY3QudG9wKSAvIHNvdXJjZVNpemUuaGVpZ2h0
LAorICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlUmVjdC5yaWdodCAtIHNvdXJjZVJl
Y3QubGVmdCkgLyBzb3VyY2VTaXplLndpZHRoLAorICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4o
ZmxpcFkgPyBzb3VyY2VSZWN0LnRvcCAtIHNvdXJjZVJlY3QuYm90dG9tCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6IHNvdXJjZVJlY3QuYm90dG9tIC0gc291cmNlUmVjdC50b3Ap
IC8KKyAgICAgICAgICAgIHNvdXJjZVNpemUuaGVpZ2h0LAorICAgIH07CisKKyAgICBkZXZpY2Ut
PlNldFZlcnRleFNoYWRlckNvbnN0YW50RigwLCB2ZXJ0ZXhDb25zdGFudHMsIDIpOwogfQogCiB2
b2lkIEJsaXQ5OjpzZXRDb21tb25CbGl0U3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0JsaXQ5LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQmxpdDku
aAppbmRleCA1ODZhYmQyNTgwYWQ3MTM0MTNhYmUwM2I3ZTk3NDUzY2RkYjEwZDNmLi42NWZiY2Y0
YjM4YjVkZGZmMzM4M2E1MGY5MGY2MGQzZmM3YTgwMDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQmxpdDkuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkv
QmxpdDkuaApAQCAtMTcsNiArMTcsOCBAQAogbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBGcmFtZWJ1
ZmZlcjsKK2NsYXNzIFRleHR1cmU7CitzdHJ1Y3QgRXh0ZW50czsKIHN0cnVjdCBPZmZzZXQ7CiB9
CiAKQEAgLTM2LDEyICszOCwyMyBAQCBjbGFzcyBCbGl0OSA6IGFuZ2xlOjpOb25Db3B5YWJsZQog
ICAgIC8vIENvcHkgZnJvbSBzb3VyY2Ugc3VyZmFjZSB0byBkZXN0IHN1cmZhY2UuCiAgICAgLy8g
c291cmNlUmVjdCwgeG9mZnNldCwgeW9mZnNldCBhcmUgaW4gRDNEIGNvb3JkaW5hdGVzICgwLDAg
aW4gdXBwZXItbGVmdCkKICAgICBnbDo6RXJyb3IgY29weTJEKGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
ciAqZnJhbWVidWZmZXIsIGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0
LCBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwg
R0xpbnQgbGV2ZWwpOwotICAgIGdsOjpFcnJvciBjb3B5Q3ViZShjb25zdCBnbDo6RnJhbWVidWZm
ZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBSRUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1h
dCwgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2Us
IEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKTsKLQotICAgIC8vIENvcHkgZnJvbSBzb3VyY2Ug
c3VyZmFjZSB0byBkZXN0IHN1cmZhY2UuCi0gICAgLy8gc291cmNlUmVjdCwgeG9mZnNldCwgeW9m
ZnNldCBhcmUgaW4gRDNEIGNvb3JkaW5hdGVzICgwLDAgaW4gdXBwZXItbGVmdCkKLSAgICAvLyBz
b3VyY2UgaXMgaW50ZXJwcmV0ZWQgYXMgUkdCQSBhbmQgZGVzdEZvcm1hdCBzcGVjaWZpZXMgdGhl
IGRlc2lyZWQgcmVzdWx0IGZvcm1hdC4gRm9yIGV4YW1wbGUsIGlmIGRlc3RGb3JtYXQgPSBHTF9S
R0IsIHRoZSBhbHBoYSBjaGFubmVsIHdpbGwgYmUgZm9yY2VkIHRvIDAuCi0gICAgZ2w6OkVycm9y
IGZvcm1hdENvbnZlcnQoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwgY29uc3QgUkVDVCAmc291
cmNlUmVjdCwgR0xlbnVtIGRlc3RGb3JtYXQsIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQs
IElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0KTsKKyAgICBnbDo6RXJyb3IgY29weUN1YmUoY29uc3Qg
Z2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgUkVDVCAmc291cmNlUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RG
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZz
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLAorICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsZXZlbCk7CisgICAgZ2w6OkVycm9yIGNvcHlUZXh0dXJlMkQoY29uc3QgZ2w6OlRl
eHR1cmUgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzb3VyY2VM
ZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSRUNUICZzb3VyY2VSZWN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZGVzdExldmVsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgZmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBw
cmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5tdWx0
aXBseUFscGhhKTsKIAogICAgIC8vIDJ4MiBib3ggZmlsdGVyIHNhbXBsZSBmcm9tIHNvdXJjZSB0
byBkZXN0LgogICAgIC8vIFJlcXVpcmVzIHRoYXQgc291cmNlIGlzIFJHQihBKSBhbmQgZGVzdCBo
YXMgdGhlIHNhbWUgZm9ybWF0IGFzIHNvdXJjZS4KQEAgLTU0LDIzICs2Nyw1NiBAQCBjbGFzcyBC
bGl0OSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIElEaXJlY3QzRFZlcnRleEJ1ZmZlcjkgKm1R
dWFkVmVydGV4QnVmZmVyOwogICAgIElEaXJlY3QzRFZlcnRleERlY2xhcmF0aW9uOSAqbVF1YWRW
ZXJ0ZXhEZWNsYXJhdGlvbjsKIAotICAgIGdsOjpFcnJvciBzZXRGb3JtYXRDb252ZXJ0U2hhZGVy
cyhHTGVudW0gZGVzdEZvcm1hdCk7Ci0KLSAgICBnbDo6RXJyb3IgY29weShJRGlyZWN0M0RTdXJm
YWNlOSAqc291cmNlLCBjb25zdCBSRUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwg
Y29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QpOwot
ICAgIGdsOjpFcnJvciBjb3B5U3VyZmFjZVRvVGV4dHVyZShJRGlyZWN0M0RTdXJmYWNlOSAqc3Vy
ZmFjZSwgY29uc3QgUkVDVCAmc291cmNlUmVjdCwgSURpcmVjdDNEVGV4dHVyZTkgKipvdXRUZXh0
dXJlKTsKLSAgICB2b2lkIHNldFZpZXdwb3J0KGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsIGNvbnN0
IGdsOjpPZmZzZXQgJm9mZnNldCk7CisgICAgLy8gQ29weSBmcm9tIHNvdXJjZSB0ZXh0dXJlIHRv
IGRlc3Qgc3VyZmFjZS4KKyAgICAvLyBzb3VyY2VSZWN0LCB4b2Zmc2V0LCB5b2Zmc2V0IGFyZSBp
biBEM0QgY29vcmRpbmF0ZXMgKDAsMCBpbiB1cHBlci1sZWZ0KQorICAgIC8vIHNvdXJjZSBpcyBp
bnRlcnByZXRlZCBhcyBSR0JBIGFuZCBkZXN0Rm9ybWF0IHNwZWNpZmllcyB0aGUgZGVzaXJlZCBy
ZXN1bHQgZm9ybWF0LiBGb3IKKyAgICAvLyBleGFtcGxlLCBpZiBkZXN0Rm9ybWF0ID0gR0xfUkdC
LCB0aGUgYWxwaGEgY2hhbm5lbCB3aWxsIGJlIGZvcmNlZCB0byAwLgorICAgIGdsOjpFcnJvciBm
b3JtYXRDb252ZXJ0KElEaXJlY3QzREJhc2VUZXh0dXJlOSAqc291cmNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJjZVNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbXVs
dGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVubXVsdGlwbHlB
bHBoYSk7CisgICAgZ2w6OkVycm9yIHNldEZvcm1hdENvbnZlcnRTaGFkZXJzKEdMZW51bSBkZXN0
Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZsaXBZ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByZW11bHRpcGx5
QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5tdWx0
aXBseUFscGhhKTsKKworICAgIGdsOjpFcnJvciBjb3B5KElEaXJlY3QzRFN1cmZhY2U5ICpzb3Vy
Y2UsCisgICAgICAgICAgICAgICAgICAgSURpcmVjdDNEQmFzZVRleHR1cmU5ICpzb3VyY2VUZXh0
dXJlLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsCisgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJm
YWNlOSAqZGVzdCwKKyAgICAgICAgICAgICAgICAgICBib29sIGZsaXBZLAorICAgICAgICAgICAg
ICAgICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICBib29sIHVu
bXVsdGlwbHlBbHBoYSk7CisgICAgZ2w6OkVycm9yIGNvcHlTdXJmYWNlVG9UZXh0dXJlKElEaXJl
Y3QzRFN1cmZhY2U5ICpzdXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBSRUNUICZzb3VyY2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKipvdXRUZXh0dXJlKTsKKyAgICB2b2lkIHNldFZp
ZXdwb3J0QW5kU2hhZGVyQ29uc3RhbnRzKGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNl
U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQ1Qg
JmRlc3RSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBm
bGlwWSk7CiAgICAgdm9pZCBzZXRDb21tb25CbGl0U3RhdGUoKTsKICAgICBSRUNUIGdldFN1cmZh
Y2VSZWN0KElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlKSBjb25zdDsKKyAgICBnbDo6RXh0ZW50
cyBnZXRTdXJmYWNlU2l6ZShJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSkgY29uc3Q7CiAKICAg
ICAvLyBUaGlzIGVudW0gaXMgdXNlZCB0byBpbmRleCBtQ29tcGlsZWRTaGFkZXJzIGFuZCBtU2hh
ZGVyU291cmNlLgogICAgIGVudW0gU2hhZGVySWQKICAgICB7CiAgICAgICAgIFNIQURFUl9WU19T
VEFOREFSRCwKLSAgICAgICAgU0hBREVSX1ZTX0ZMSVBZLAogICAgICAgICBTSEFERVJfUFNfUEFT
U1RIUk9VR0gsCiAgICAgICAgIFNIQURFUl9QU19MVU1JTkFOQ0UsCisgICAgICAgIFNIQURFUl9Q
U19MVU1JTkFOQ0VfUFJFTVVMVElQTFlfQUxQSEEsCisgICAgICAgIFNIQURFUl9QU19MVU1JTkFO
Q0VfVU5NVUxUSVBMWV9BTFBIQSwKICAgICAgICAgU0hBREVSX1BTX0NPTVBPTkVOVE1BU0ssCi0g
ICAgICAgIFNIQURFUl9DT1VOVAorICAgICAgICBTSEFERVJfUFNfQ09NUE9ORU5UTUFTS19QUkVN
VUxUSVBMWV9BTFBIQSwKKyAgICAgICAgU0hBREVSX1BTX0NPTVBPTkVOVE1BU0tfVU5NVUxUSVBM
WV9BTFBIQSwKKyAgICAgICAgU0hBREVSX0NPVU5ULAogICAgIH07CiAKICAgICAvLyBUaGlzIGFj
dHVhbGx5IGNvbnRhaW5zIElEaXJlY3QzRFZlcnRleFNoYWRlcjkgb3IgSURpcmVjdDNEUGl4ZWxT
aGFkZXI5IGNhc3RlZCB0byBJVW5rbm93bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9CdWZmZXI5LmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9CdWZmZXI5
LmNwcAppbmRleCA2M2VlNjQ5ZjA2NmEzZGEwNWMzZjA3YTdiYjE5NWIwOTJmZTRhZjRiLi45NTg5
MjAzZDZlN2ZjZDYwYzI4ODY4M2VmODI3MjA2OGY1MDFjZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQnVmZmVyOS5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L0J1ZmZlcjkuY3BwCkBAIC0xMiw5ICsxMiw4IEBACiBuYW1lc3BhY2UgcngKIHsKIAot
QnVmZmVyOTo6QnVmZmVyOShSZW5kZXJlcjkgKnJlbmRlcmVyKQotICAgIDogQnVmZmVyRDNEKHJl
bmRlcmVyKSwKLSAgICAgIG1TaXplKDApCitCdWZmZXI5OjpCdWZmZXI5KGNvbnN0IGdsOjpCdWZm
ZXJTdGF0ZSAmc3RhdGUsIFJlbmRlcmVyOSAqcmVuZGVyZXIpCisgICAgOiBCdWZmZXJEM0Qoc3Rh
dGUsIHJlbmRlcmVyKSwgbVNpemUoMCkKIHt9CiAKIEJ1ZmZlcjk6On5CdWZmZXI5KCkKQEAgLTIy
LDcgKzIxLDExIEBAIEJ1ZmZlcjk6On5CdWZmZXI5KCkKICAgICBtU2l6ZSA9IDA7CiB9CiAKLWds
OjpFcnJvciBCdWZmZXI5OjpzZXREYXRhKEdMZW51bSAvKnRhcmdldCovLCBjb25zdCB2b2lkICpk
YXRhLCBzaXplX3Qgc2l6ZSwgR0xlbnVtIHVzYWdlKQorZ2w6OkVycm9yIEJ1ZmZlcjk6OnNldERh
dGEoQ29udGV4dEltcGwgKiAvKmNvbnRleHQqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSAvKnRhcmdldCovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p
ZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHVzYWdlKQogewogICAgIGlmIChzaXplID4gbU1l
bW9yeS5zaXplKCkpCiAgICAgewpAQCAtNDIsMTYgKzQ1LDIwIEBAIGdsOjpFcnJvciBCdWZmZXI5
OjpzZXREYXRhKEdMZW51bSAvKnRhcmdldCovLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6
ZSwgR0xlCiAKICAgICBpbnZhbGlkYXRlU3RhdGljRGF0YSgpOwogCi0gICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpF
cnJvciBCdWZmZXI5OjpnZXREYXRhKGNvbnN0IHVpbnQ4X3QgKipvdXREYXRhKQogewogICAgICpv
dXREYXRhID0gbU1lbW9yeS5kYXRhKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBCdWZmZXI5Ojpz
ZXRTdWJEYXRhKEdMZW51bSAvKnRhcmdldCovLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6
ZSwgc2l6ZV90IG9mZnNldCkKK2dsOjpFcnJvciBCdWZmZXI5OjpzZXRTdWJEYXRhKENvbnRleHRJ
bXBsICogLypjb250ZXh0Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Lyp0YXJnZXQqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRh
dGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQpCiB7CiAgICAgaWYgKG9mZnNldCAr
IHNpemUgPiBtTWVtb3J5LnNpemUoKSkKICAgICB7CkBAIC02OSwxMCArNzYsMTQgQEAgZ2w6OkVy
cm9yIEJ1ZmZlcjk6OnNldFN1YkRhdGEoR0xlbnVtIC8qdGFyZ2V0Ki8sIGNvbnN0IHZvaWQgKmRh
dGEsIHNpemVfdCBzaXplLAogCiAgICAgaW52YWxpZGF0ZVN0YXRpY0RhdGEoKTsKIAotICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
fQogCi1nbDo6RXJyb3IgQnVmZmVyOTo6Y29weVN1YkRhdGEoQnVmZmVySW1wbCogc291cmNlLCBH
TGludHB0ciBzb3VyY2VPZmZzZXQsIEdMaW50cHRyIGRlc3RPZmZzZXQsIEdMc2l6ZWlwdHIgc2l6
ZSkKK2dsOjpFcnJvciBCdWZmZXI5Ojpjb3B5U3ViRGF0YShDb250ZXh0SW1wbCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJbXBsICpzb3VyY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgc291cmNlT2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIGRlc3RPZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKQogewogICAgIC8vIE5vdGU6IHRo
aXMgbWV0aG9kIGlzIGN1cnJlbnRseSB1bnJlYWNoYWJsZQogICAgIEJ1ZmZlcjkqIHNvdXJjZUJ1
ZmZlciA9IEdldEFzPEJ1ZmZlcjk+KHNvdXJjZSk7CkBAIC04MiwyMyArOTMsMjcgQEAgZ2w6OkVy
cm9yIEJ1ZmZlcjk6OmNvcHlTdWJEYXRhKEJ1ZmZlckltcGwqIHNvdXJjZSwgR0xpbnRwdHIgc291
cmNlT2Zmc2V0LCBHTGludHAKIAogICAgIGludmFsaWRhdGVTdGF0aWNEYXRhKCk7CiAKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAogLy8gV2UgZG8gbm90IHN1cHBvcnQgYnVmZmVyIG1hcHBpbmcgaW4gRDNEOQotZ2w6OkVy
cm9yIEJ1ZmZlcjk6Om1hcChHTGVudW0gYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpCitnbDo6RXJy
b3IgQnVmZmVyOTo6bWFwKENvbnRleHRJbXBsICpjb250ZXh0LCBHTGVudW0gYWNjZXNzLCBHTHZv
aWQgKiptYXBQdHIpCiB7CiAgICAgVU5SRUFDSEFCTEUoKTsKICAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlcjk6Om1hcFJhbmdl
KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzLCBHTHZvaWQg
KiptYXBQdHIpCitnbDo6RXJyb3IgQnVmZmVyOTo6bWFwUmFuZ2UoQ29udGV4dEltcGwgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYml0ZmllbGQgYWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dm9pZCAqKm1hcFB0cikKIHsKICAgICBVTlJFQUNIQUJMRSgpOwogICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi1nbDo6RXJyb3IgQnVmZmVyOTo6dW5tYXAo
R0xib29sZWFuICpyZXN1bHQpCitnbDo6RXJyb3IgQnVmZmVyOTo6dW5tYXAoQ29udGV4dEltcGwg
KmNvbnRleHQsIEdMYm9vbGVhbiAqcmVzdWx0KQogewogICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQnVmZmVy
OS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L0J1ZmZlcjkuaAppbmRleCA5ZGQwOGI1MTAwYWU0MDIzZjI0ZDMzZTBhZWFjZTg5NDViYzU1
YzI5Li5hOGMwY2IyNDMwOGExMWNkYzliNjQyODFmMTQwNGUwOTMwMGE5OWY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkv
QnVmZmVyOS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkOS9CdWZmZXI5LmgKQEAgLTIwLDcgKzIwLDcgQEAgY2xhc3MgUmVuZGVyZXI5
OwogY2xhc3MgQnVmZmVyOSA6IHB1YmxpYyBCdWZmZXJEM0QKIHsKICAgcHVibGljOgotICAgIEJ1
ZmZlcjkoUmVuZGVyZXI5ICpyZW5kZXJlcik7CisgICAgQnVmZmVyOShjb25zdCBnbDo6QnVmZmVy
U3RhdGUgJnN0YXRlLCBSZW5kZXJlcjkgKnJlbmRlcmVyKTsKICAgICB2aXJ0dWFsIH5CdWZmZXI5
KCk7CiAKICAgICAvLyBCdWZmZXJEM0QgaW1wbGVtZW50YXRpb24KQEAgLTI5LDE5ICsyOSwzMiBA
QCBjbGFzcyBCdWZmZXI5IDogcHVibGljIEJ1ZmZlckQzRAogICAgIGdsOjpFcnJvciBnZXREYXRh
KGNvbnN0IHVpbnQ4X3QgKipvdXREYXRhKSBvdmVycmlkZTsKIAogICAgIC8vIEJ1ZmZlckltcGwg
aW1wbGVtZW50YXRpb24KLSAgICBnbDo6RXJyb3Igc2V0RGF0YShHTGVudW0gdGFyZ2V0LCBjb25z
dCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgR0xlbnVtIHVzYWdlKSBvdmVycmlkZTsKLSAgICBn
bDo6RXJyb3Igc2V0U3ViRGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpkYXRhLCBzaXpl
X3Qgc2l6ZSwgc2l6ZV90IG9mZnNldCkgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIGNvcHlTdWJE
YXRhKEJ1ZmZlckltcGwgKnNvdXJjZSwKKyAgICBnbDo6RXJyb3Igc2V0RGF0YShDb250ZXh0SW1w
bCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHVzYWdlKSBvdmVycmlk
ZTsKKyAgICBnbDo6RXJyb3Igc2V0U3ViRGF0YShDb250ZXh0SW1wbCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNp
emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCkgb3ZlcnJpZGU7Cisg
ICAgZ2w6OkVycm9yIGNvcHlTdWJEYXRhKENvbnRleHRJbXBsICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBCdWZmZXJJbXBsICpzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50cHRyIHNvdXJjZU9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnRwdHIgZGVzdE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0
ciBzaXplKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgbWFwKEdMZW51bSBhY2Nlc3MsIEdMdm9p
ZCAqKm1hcFB0cikgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIG1hcFJhbmdlKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpIG92
ZXJyaWRlOwotICAgIGdsOjpFcnJvciB1bm1hcChHTGJvb2xlYW4gKnJlc3VsdCkgb3ZlcnJpZGU7
CisgICAgZ2w6OkVycm9yIG1hcChDb250ZXh0SW1wbCAqY29udGV4dCwgR0xlbnVtIGFjY2Vzcywg
R0x2b2lkICoqbWFwUHRyKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgbWFwUmFuZ2UoQ29udGV4
dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgIEdMYml0ZmllbGQgYWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKipt
YXBQdHIpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciB1bm1hcChDb250ZXh0SW1wbCAqY29udGV4
dCwgR0xib29sZWFuICpyZXN1bHQpIG92ZXJyaWRlOwogICAgIGdsOjpFcnJvciBtYXJrVHJhbnNm
b3JtRmVlZGJhY2tVc2FnZSgpIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6Ci0gICAgTWVtb3J5QnVm
ZmVyIG1NZW1vcnk7CisgICAgYW5nbGU6Ok1lbW9yeUJ1ZmZlciBtTWVtb3J5OwogICAgIHNpemVf
dCBtU2l6ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0OS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQ29udGV4dDkuY3BwCmluZGV4
IDFjOTBmZmZhMWJjNDc3YWUzNGQ2NGU2NzY5YWYxMjJlZDRkNjdkMGQuLjc3NzAwYzBlMWYyNzY0
ZTU5ZjNiMDE5ODdjZGEzZWE1MzdiM2ZlNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0OS5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0Nv
bnRleHQ5LmNwcApAQCAtODIsOSArODIsOSBAQCBSZW5kZXJidWZmZXJJbXBsICpDb250ZXh0OTo6
Y3JlYXRlUmVuZGVyYnVmZmVyKCkKICAgICByZXR1cm4gbmV3IFJlbmRlcmJ1ZmZlckQzRChtUmVu
ZGVyZXIpOwogfQogCi1CdWZmZXJJbXBsICpDb250ZXh0OTo6Y3JlYXRlQnVmZmVyKCkKK0J1ZmZl
ckltcGwgKkNvbnRleHQ5OjpjcmVhdGVCdWZmZXIoY29uc3QgZ2w6OkJ1ZmZlclN0YXRlICZzdGF0
ZSkKIHsKLSAgICByZXR1cm4gbmV3IEJ1ZmZlcjkobVJlbmRlcmVyKTsKKyAgICByZXR1cm4gbmV3
IEJ1ZmZlcjkoc3RhdGUsIG1SZW5kZXJlcik7CiB9CiAKIFZlcnRleEFycmF5SW1wbCAqQ29udGV4
dDk6OmNyZWF0ZVZlcnRleEFycmF5KGNvbnN0IGdsOjpWZXJ0ZXhBcnJheVN0YXRlICZkYXRhKQpA
QCAtMTc4LDYgKzE3OCwxOCBAQCBnbDo6RXJyb3IgQ29udGV4dDk6OmRyYXdSYW5nZUVsZW1lbnRz
KEdMZW51bSBtb2RlLAogICAgIHJldHVybiBtUmVuZGVyZXItPmdlbmVyaWNEcmF3RWxlbWVudHMo
dGhpcywgbW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIDAsIGluZGV4UmFuZ2UpOwogfQogCitn
bDo6RXJyb3IgQ29udGV4dDk6OmRyYXdBcnJheXNJbmRpcmVjdChHTGVudW0gbW9kZSwgY29uc3Qg
R0x2b2lkICppbmRpcmVjdCkKK3sKKyAgICBVTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBnbDo6
SW50ZXJuYWxFcnJvcigpIDw8ICJEM0Q5IGRvZXNuJ3Qgc3VwcG9ydCBFUyAzLjEgRHJhd0FycmF5
c0luZGlyZWN0IEFQSSI7Cit9CisKK2dsOjpFcnJvciBDb250ZXh0OTo6ZHJhd0VsZW1lbnRzSW5k
aXJlY3QoR0xlbnVtIG1vZGUsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGlyZWN0KQor
eworICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIGdsOjpJbnRlcm5hbEVycm9yKCkgPDwg
IkQzRDkgZG9lc24ndCBzdXBwb3J0IEVTIDMuMSBEcmF3RWxlbWVudHNJbmRpcmVjdCBBUEkiOwor
fQorCiBHTGVudW0gQ29udGV4dDk6OmdldFJlc2V0U3RhdHVzKCkKIHsKICAgICByZXR1cm4gbVJl
bmRlcmVyLT5nZXRSZXNldFN0YXR1cygpOwpAQCAtMjE2LDkgKzIyOCw5IEBAIHZvaWQgQ29udGV4
dDk6OnBvcEdyb3VwTWFya2VyKCkKICAgICBtUmVuZGVyZXItPmdldEFubm90YXRvcigpLT5lbmRF
dmVudCgpOwogfQogCi12b2lkIENvbnRleHQ5OjpzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRlICZz
dGF0ZSwgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykKK3ZvaWQgQ29udGV4
dDk6OnN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQogewot
ICAgIG1SZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCktPnN5bmNTdGF0ZShzdGF0ZSwgZGlydHlC
aXRzKTsKKyAgICBtUmVuZGVyZXItPmdldFN0YXRlTWFuYWdlcigpLT5zeW5jU3RhdGUobVN0YXRl
LmdldFN0YXRlKCksIGRpcnR5Qml0cyk7CiB9CiAKIEdMaW50IENvbnRleHQ5OjpnZXRHUFVEaXNq
b2ludCgpCkBAIC0yNTUsNCArMjY3LDEwIEBAIGNvbnN0IGdsOjpMaW1pdGF0aW9ucyAmQ29udGV4
dDk6OmdldE5hdGl2ZUxpbWl0YXRpb25zKCkgY29uc3QKICAgICByZXR1cm4gbVJlbmRlcmVyLT5n
ZXROYXRpdmVMaW1pdGF0aW9ucygpOwogfQogCitnbDo6RXJyb3IgQ29udGV4dDk6OmRpc3BhdGNo
Q29tcHV0ZShHTHVpbnQgbnVtR3JvdXBzWCwgR0x1aW50IG51bUdyb3Vwc1ksIEdMdWludCBudW1H
cm91cHNaKQoreworICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIGdsOjpJbnRlcm5hbEVy
cm9yKCkgPDwgIkQzRDkgZG9lc24ndCBzdXBwb3J0IEVTIDMuMSBEaXNwYXRjaENvbXB1dGUgQVBJ
IjsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQ29udGV4dDkuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0
OS5oCmluZGV4IDdlMzQ5MmY5YTAzYTQxZGVjY2MyYjcyMDE5ZGZmMGJiYmM0MWQzOGIuLmQ1NWIy
YzExN2FjMzRmMGRhYjM0ZTQ5ZDkzN2MwYjAyMzYxNmZkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0OS5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9Db250ZXh0OS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIENvbnRleHQ5IDogcHVibGlj
IENvbnRleHRJbXBsCiAgICAgUmVuZGVyYnVmZmVySW1wbCAqY3JlYXRlUmVuZGVyYnVmZmVyKCkg
b3ZlcnJpZGU7CiAKICAgICAvLyBCdWZmZXIgY3JlYXRpb24KLSAgICBCdWZmZXJJbXBsICpjcmVh
dGVCdWZmZXIoKSBvdmVycmlkZTsKKyAgICBCdWZmZXJJbXBsICpjcmVhdGVCdWZmZXIoY29uc3Qg
Z2w6OkJ1ZmZlclN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBWZXJ0ZXggQXJyYXkg
Y3JlYXRpb24KICAgICBWZXJ0ZXhBcnJheUltcGwgKmNyZWF0ZVZlcnRleEFycmF5KGNvbnN0IGds
OjpWZXJ0ZXhBcnJheVN0YXRlICZkYXRhKSBvdmVycmlkZTsKQEAgLTg4LDYgKzg4LDggQEAgY2xh
c3MgQ29udGV4dDkgOiBwdWJsaWMgQ29udGV4dEltcGwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdm9pZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBk
cmF3QXJyYXlzSW5kaXJlY3QoR0xlbnVtIG1vZGUsIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpIG92
ZXJyaWRlOworICAgIGdsOjpFcnJvciBkcmF3RWxlbWVudHNJbmRpcmVjdChHTGVudW0gbW9kZSwg
R0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpIG92ZXJyaWRlOwogCiAgICAgLy8g
RGV2aWNlIGxvc3MKICAgICBHTGVudW0gZ2V0UmVzZXRTdGF0dXMoKSBvdmVycmlkZTsKQEAgLTEw
Miw3ICsxMDQsNyBAQCBjbGFzcyBDb250ZXh0OSA6IHB1YmxpYyBDb250ZXh0SW1wbAogICAgIHZv
aWQgcG9wR3JvdXBNYXJrZXIoKSBvdmVycmlkZTsKIAogICAgIC8vIFN0YXRlIHN5bmMgd2l0aCBk
aXJ0eSBiaXRzLgotICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNv
bnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpIG92ZXJyaWRlOworICAgIHZvaWQg
c3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpIG92ZXJyaWRl
OwogCiAgICAgLy8gRGlzam9pbnQgdGltZXIgcXVlcmllcwogICAgIEdMaW50IGdldEdQVURpc2pv
aW50KCkgb3ZlcnJpZGU7CkBAIC0xMTcsNiArMTE5LDggQEAgY2xhc3MgQ29udGV4dDkgOiBwdWJs
aWMgQ29udGV4dEltcGwKICAgICBjb25zdCBnbDo6RXh0ZW5zaW9ucyAmZ2V0TmF0aXZlRXh0ZW5z
aW9ucygpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IGdsOjpMaW1pdGF0aW9ucyAmZ2V0TmF0
aXZlTGltaXRhdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKIAorICAgIGdsOjpFcnJvciBkaXNwYXRj
aENvbXB1dGUoR0x1aW50IG51bUdyb3Vwc1gsIEdMdWludCBudW1Hcm91cHNZLCBHTHVpbnQgbnVt
R3JvdXBzWikgb3ZlcnJpZGU7CisKICAgcHJpdmF0ZToKICAgICBSZW5kZXJlcjkgKm1SZW5kZXJl
cjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDkvRGVidWdBbm5vdGF0b3I5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRGVidWdBbm5vdGF0b3I5LmgKaW5k
ZXggNTRlM2JiOTQ5MDY1MWJiMGZhZGQzNDhjY2Q0MTU5ZGIzMGFjZjBkYS4uYjI4MDA4MzM1ZjI1
NjJiNjJlYWRiYTA0NmVjOTAwM2E2ZWM3YWRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0RlYnVnQW5ub3RhdG9yOS5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9EZWJ1Z0Fubm90YXRvcjkuaApAQCAtOSwxMiArOSwxMiBAQAogI2lmbmRlZiBMSUJBTkdM
RV9SRU5ERVJFUl9EM0RfRDNEOV9ERUJVR0FOTk9UQVRPUjlfSF8KICNkZWZpbmUgTElCQU5HTEVf
UkVOREVSRVJfRDNEX0QzRDlfREVCVUdBTk5PVEFUT1I5X0hfCiAKLSNpbmNsdWRlICJjb21tb24v
ZGVidWcuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9Mb2dnaW5nQW5ub3RhdG9yLmgiCiAKIG5hbWVz
cGFjZSByeAogewogCi1jbGFzcyBEZWJ1Z0Fubm90YXRvcjkgOiBwdWJsaWMgZ2w6OkRlYnVnQW5u
b3RhdG9yCitjbGFzcyBEZWJ1Z0Fubm90YXRvcjkgOiBwdWJsaWMgYW5nbGU6OkxvZ2dpbmdBbm5v
dGF0b3IKIHsKICAgcHVibGljOgogICAgIERlYnVnQW5ub3RhdG9yOSgpIHt9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkv
RmVuY2U5LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9GZW5jZTkuY3BwCmluZGV4IDMzMDA2ODEyNzdlMmM0ZDk4MTY4ZDk1NGJhMjM4
OGZjNzQ0YjQyNDAuLjM3OWJhMWY2ZGZjZmRjZDQ1NmYzZWNlZDdmYWY2MzQ2NGQwNWM4ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkOS9GZW5jZTkuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9GZW5jZTkuY3BwCkBAIC00NCw3ICs0NCw3IEBAIGdsOjpF
cnJvciBGZW5jZU5WOTo6c2V0KEdMZW51bSBjb25kaXRpb24pCiAgICAgICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBlbmQgZXZlbnQgcXVlcnksIHJlc3Vs
dDogMHglWC4iLCByZXN1bHQpOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgRmVuY2VO
Vjk6OnRlc3QoR0xib29sZWFuICpvdXRGaW5pc2hlZCkKQEAgLTY2LDcgKzY2LDcgQEAgZ2w6OkVy
cm9yIEZlbmNlTlY5OjpmaW5pc2goKQogICAgICAgICBTbGVlcCgwKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAogZ2w6OkVycm9yIEZlbmNlTlY5Ojp0ZXN0SGVscGVyKGJvb2wgZmx1c2hDb21tYW5kQnVm
ZmVyLCBHTGJvb2xlYW4gKm91dEZpbmlzaGVkKQpAQCAtODgsNyArODgsNyBAQCBnbDo6RXJyb3Ig
RmVuY2VOVjk6OnRlc3RIZWxwZXIoYm9vbCBmbHVzaENvbW1hbmRCdWZmZXIsIEdMYm9vbGVhbiAq
b3V0RmluaXNoZWQpCiAKICAgICBBU1NFUlQocmVzdWx0ID09IFNfT0sgfHwgcmVzdWx0ID09IFNf
RkFMU0UpOwogICAgICpvdXRGaW5pc2hlZCA9ICgocmVzdWx0ID09IFNfT0spID8gR0xfVFJVRSA6
IEdMX0ZBTFNFKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ZyYW1lYnVmZmVyOS5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRnJh
bWVidWZmZXI5LmNwcAppbmRleCA5Mjg2ZDliMGRhM2UxMmQ1OGMwNzYwZDg2ZDgyMDc0ZjM4YzFl
MmNiLi45MTU1Yzk4Y2QxZThhOGFmMTM0OThiMjg0MWY4YzI2NmI0NTZkNjRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkv
RnJhbWVidWZmZXI5LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvRnJhbWVidWZmZXI5LmNwcApAQCAtMzgsMjEgKzM4LDIxIEBA
IGdsOjpFcnJvciBGcmFtZWJ1ZmZlcjk6OmRpc2NhcmQoc2l6ZV90LCBjb25zdCBHTGVudW0gKikK
IHsKICAgICAvLyBFeHRlbnNpb24gbm90IGltcGxlbWVudGVkIGluIEQzRDkgcmVuZGVyZXIKICAg
ICBVTlJFQUNIQUJMRSgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAg
IHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgRnJhbWVidWZmZXI5OjppbnZh
bGlkYXRlKHNpemVfdCwgY29uc3QgR0xlbnVtICopCiB7CiAgICAgLy8gU2hvdWxkbid0IGV2ZXIg
cmVhY2ggaGVyZSBpbiBEM0Q5CiAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVy
cm9yIEZyYW1lYnVmZmVyOTo6aW52YWxpZGF0ZVN1YihzaXplX3QsIGNvbnN0IEdMZW51bSAqLCBj
b25zdCBnbDo6UmVjdGFuZ2xlICYpCiB7CiAgICAgLy8gU2hvdWxkbid0IGV2ZXIgcmVhY2ggaGVy
ZSBpbiBEM0Q5CiAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05P
X0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEZyYW1l
YnVmZmVyOTo6Y2xlYXJJbXBsKENvbnRleHRJbXBsICpjb250ZXh0LCBjb25zdCBDbGVhclBhcmFt
ZXRlcnMgJmNsZWFyUGFyYW1zKQpAQCAtMTY4LDcgKzE2OCw3IEBAIGdsOjpFcnJvciBGcmFtZWJ1
ZmZlcjk6OnJlYWRQaXhlbHNJbXBsKGNvbnN0IGdsOjpSZWN0YW5nbGUgJmFyZWEsCiAgICAgaWYg
KGRpcmVjdFRvUGl4ZWxzKQogICAgIHsKICAgICAgICAgU2FmZVJlbGVhc2Uoc3lzdGVtU3VyZmFj
ZSk7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKICAgICBSRUNUIHJlY3Q7CkBAIC0yMDUsMTIgKzIw
NSwxMiBAQCBnbDo6RXJyb3IgRnJhbWVidWZmZXI5OjpyZWFkUGl4ZWxzSW1wbChjb25zdCBnbDo6
UmVjdGFuZ2xlICZhcmVhLAogICAgIHBhY2tQYXJhbXMub3V0cHV0UGl0Y2ggPSBzdGF0aWNfY2Fz
dDxHTHVpbnQ+KG91dHB1dFBpdGNoKTsKICAgICBwYWNrUGFyYW1zLnBhY2sgICAgICAgID0gcGFj
azsKIAotICAgIFBhY2tQaXhlbHMocGFja1BhcmFtcywgKmQzZEZvcm1hdEluZm8uaW5mbywgaW5w
dXRQaXRjaCwgc291cmNlLCBwaXhlbHMpOworICAgIFBhY2tQaXhlbHMocGFja1BhcmFtcywgZDNk
Rm9ybWF0SW5mby5pbmZvKCksIGlucHV0UGl0Y2gsIHNvdXJjZSwgcGl4ZWxzKTsKIAogICAgIHN5
c3RlbVN1cmZhY2UtPlVubG9ja1JlY3QoKTsKICAgICBTYWZlUmVsZWFzZShzeXN0ZW1TdXJmYWNl
KTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgRnJhbWVidWZmZXI5OjpibGl0SW1wbChjb25zdCBn
bDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLApAQCAtMzk3LDE0ICszOTcsMTQgQEAgZ2w6OkVycm9y
IEZyYW1lYnVmZmVyOTo6YmxpdEltcGwoY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwor
ICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBHTGVudW0gRnJhbWVidWZmZXI5OjpnZXRS
ZW5kZXJUYXJnZXRJbXBsZW1lbnRhdGlvbkZvcm1hdChSZW5kZXJUYXJnZXREM0QgKnJlbmRlclRh
cmdldCkgY29uc3QKIHsKICAgICBSZW5kZXJUYXJnZXQ5ICpyZW5kZXJUYXJnZXQ5ID0gR2V0QXM8
UmVuZGVyVGFyZ2V0OT4ocmVuZGVyVGFyZ2V0KTsKICAgICBjb25zdCBkM2Q5OjpEM0RGb3JtYXQg
JmQzZEZvcm1hdEluZm8gPSBkM2Q5OjpHZXREM0RGb3JtYXRJbmZvKHJlbmRlclRhcmdldDktPmdl
dEQzREZvcm1hdCgpKTsKLSAgICByZXR1cm4gZDNkRm9ybWF0SW5mby5pbmZvLT5nbEludGVybmFs
Rm9ybWF0OworICAgIHJldHVybiBkM2RGb3JtYXRJbmZvLmluZm8oKS5nbEludGVybmFsRm9ybWF0
OwogfQogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9JbWFnZTkuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ltYWdlOS5j
cHAKaW5kZXggM2MxNGI0M2E1MmI0YTYzMjRiOTYxNDI1OGMxYzZkZDgzZjk4NjExNy4uYzE3NGY2
MGRiYjI5ZmU2ZmMwNTY2ZjlmNjY0MDM5ZTU1NjRmY2NhYSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ltYWdlOS5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L0ltYWdlOS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgZ2w6OkVycm9yIEltYWdlOTo6Z2VuZXJh
dGVNaXAoSURpcmVjdDNEU3VyZmFjZTkgKmRlc3RTdXJmYWNlLCBJRGlyZWN0M0RTdXJmYWNlOQog
ICAgIEFTU0VSVChzb3VyY2VEZXNjLkhlaWdodCA9PSAxIHx8IHNvdXJjZURlc2MuSGVpZ2h0IC8g
MiA9PSBkZXN0RGVzYy5IZWlnaHQpOwogCiAgICAgY29uc3QgZDNkOTo6RDNERm9ybWF0ICZkM2RG
b3JtYXRJbmZvID0gZDNkOTo6R2V0RDNERm9ybWF0SW5mbyhzb3VyY2VEZXNjLkZvcm1hdCk7Ci0g
ICAgQVNTRVJUKGQzZEZvcm1hdEluZm8uaW5mby0+bWlwR2VuZXJhdGlvbkZ1bmN0aW9uICE9IE5V
TEwpOworICAgIEFTU0VSVChkM2RGb3JtYXRJbmZvLmluZm8oKS5taXBHZW5lcmF0aW9uRnVuY3Rp
b24gIT0gTlVMTCk7CiAKICAgICBEM0RMT0NLRURfUkVDVCBzb3VyY2VMb2NrZWQgPSB7MH07CiAg
ICAgcmVzdWx0ID0gc291cmNlU3VyZmFjZS0+TG9ja1JlY3QoJnNvdXJjZUxvY2tlZCwgTlVMTCwg
RDNETE9DS19SRUFET05MWSk7CkBAIC04NSwxMyArODUsMTQgQEAgZ2w6OkVycm9yIEltYWdlOTo6
Z2VuZXJhdGVNaXAoSURpcmVjdDNEU3VyZmFjZTkgKmRlc3RTdXJmYWNlLCBJRGlyZWN0M0RTdXJm
YWNlOQogCiAgICAgQVNTRVJUKHNvdXJjZURhdGEgJiYgZGVzdERhdGEpOwogCi0gICAgZDNkRm9y
bWF0SW5mby5pbmZvLT5taXBHZW5lcmF0aW9uRnVuY3Rpb24oc291cmNlRGVzYy5XaWR0aCwgc291
cmNlRGVzYy5IZWlnaHQsIDEsIHNvdXJjZURhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc291cmNlTG9ja2VkLlBpdGNoLCAwLCBkZXN0RGF0YSwgZGVz
dExvY2tlZC5QaXRjaCwgMCk7CisgICAgZDNkRm9ybWF0SW5mby5pbmZvKCkubWlwR2VuZXJhdGlv
bkZ1bmN0aW9uKHNvdXJjZURlc2MuV2lkdGgsIHNvdXJjZURlc2MuSGVpZ2h0LCAxLCBzb3VyY2VE
YXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3Vy
Y2VMb2NrZWQuUGl0Y2gsIDAsIGRlc3REYXRhLCBkZXN0TG9ja2VkLlBpdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKIAogICAgIGRlc3RTdXJm
YWNlLT5VbmxvY2tSZWN0KCk7CiAgICAgc291cmNlU3VyZmFjZS0+VW5sb2NrUmVjdCgpOwogCi0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7CiB9CiAKIGdsOjpFcnJvciBJbWFnZTk6OmdlbmVyYXRlTWlwbWFwKEltYWdlOSAqZGVzdCwg
SW1hZ2U5ICpzb3VyY2UpCkBAIC0xMTgsNyArMTE5LDcgQEAgZ2w6OkVycm9yIEltYWdlOTo6Z2Vu
ZXJhdGVNaXBtYXAoSW1hZ2U5ICpkZXN0LCBJbWFnZTkgKnNvdXJjZSkKIAogICAgIGRlc3QtPm1h
cmtEaXJ0eSgpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0
dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBJbWFnZTk6OmNvcHlMb2NrYWJsZVN1
cmZhY2VzKElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0LCBJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNl
KQpAQCAtMTYxLDcgKzE2Miw3IEBAIGdsOjpFcnJvciBJbWFnZTk6OmNvcHlMb2NrYWJsZVN1cmZh
Y2VzKElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0LCBJRGlyZWN0M0RTdXJmYWNlCiAgICAgc291cmNl
LT5VbmxvY2tSZWN0KCk7CiAgICAgZGVzdC0+VW5sb2NrUmVjdCgpOwogCi0gICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGJv
b2wgSW1hZ2U5OjpyZWRlZmluZShHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQs
IGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLCBib29sIGZvcmNlUmVsZWFzZSkKQEAgLTIwMSw3ICsy
MDIsNyBAQCBnbDo6RXJyb3IgSW1hZ2U5OjpjcmVhdGVTdXJmYWNlKCkKIHsKICAgICBpZiAobVN1
cmZhY2UpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAgSURpcmVjdDNEVGV4dHVy
ZTkgKm5ld1RleHR1cmUgPSBOVUxMOwpAQCAtMjYzLDcgKzI2NCw3IEBAIGdsOjpFcnJvciBJbWFn
ZTk6OmNyZWF0ZVN1cmZhY2UoKQogICAgIG1EaXJ0eSA9IGZhbHNlOwogICAgIG1EM0RQb29sID0g
cG9vbFRvVXNlOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0
dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBJbWFnZTk6OmxvY2soRDNETE9DS0VE
X1JFQ1QgKmxvY2tlZFJlY3QsIGNvbnN0IFJFQ1QgJnJlY3QpCkBAIC0yODYsNyArMjg3LDcgQEAg
Z2w6OkVycm9yIEltYWdlOTo6bG9jayhEM0RMT0NLRURfUkVDVCAqbG9ja2VkUmVjdCwgY29uc3Qg
UkVDVCAmcmVjdCkKICAgICAgICAgbURpcnR5ID0gdHJ1ZTsKICAgICB9CiAKLSAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAog
dm9pZCBJbWFnZTk6OnVubG9jaygpCkBAIC0yOTQsNyArMjk1LDYgQEAgdm9pZCBJbWFnZTk6OnVu
bG9jaygpCiAgICAgaWYgKG1TdXJmYWNlKQogICAgIHsKICAgICAgICAgSFJFU1VMVCByZXN1bHQg
PSBtU3VyZmFjZS0+VW5sb2NrUmVjdCgpOwotICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklB
QkxFKHJlc3VsdCk7CiAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CiAgICAgfQog
fQpAQCAtMzI0LDcgKzMyNCw3IEBAIGdsOjpFcnJvciBJbWFnZTk6OmdldFN1cmZhY2UoSURpcmVj
dDNEU3VyZmFjZTkgKipvdXRTdXJmYWNlKQogICAgIH0KIAogICAgICpvdXRTdXJmYWNlID0gbVN1
cmZhY2U7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBJbWFnZTk6OnNldE1hbmFnZWRTdXJmYWNlMkQo
VGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIGludCBsZXZlbCkKQEAgLTM3NCw3ICszNzQsNyBAQCBn
bDo6RXJyb3IgSW1hZ2U5OjpzZXRNYW5hZ2VkU3VyZmFjZShJRGlyZWN0M0RTdXJmYWNlOSAqc3Vy
ZmFjZSkKICAgICAgICAgbUQzRFBvb2wgPSBkZXNjLlBvb2w7CiAgICAgfQogCi0gICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
IGdsOjpFcnJvciBJbWFnZTk6OmNvcHlUb1N0b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2Us
IGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgY29uc3QgZ2w6OkJveCAmcmVnaW9uKQpAQCAt
NDY4LDcgKzQ2OCw3IEBAIGdsOjpFcnJvciBJbWFnZTk6OmNvcHlUb1N1cmZhY2UoSURpcmVjdDNE
U3VyZmFjZTkgKmRlc3RTdXJmYWNlLCBjb25zdCBnbDo6Qm94ICZhCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAogLy8gU3RvcmUgdGhlIHBpeGVsIHJlY3RhbmdsZSBkZXNpZ25hdGVkIGJ5
IHhvZmZzZXQseW9mZnNldCx3aWR0aCxoZWlnaHQgd2l0aCBwaXhlbHMgc3RvcmVkIGFzIGZvcm1h
dC90eXBlIGF0IGlucHV0CkBAIC01MTMsNyArNTEzLDcgQEAgZ2w6OkVycm9yIEltYWdlOTo6bG9h
ZERhdGEoY29uc3QgZ2w6OkJveCAmYXJlYSwKIAogICAgIHVubG9jaygpOwogCi0gICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
IGdsOjpFcnJvciBJbWFnZTk6OmxvYWRDb21wcmVzc2VkRGF0YShjb25zdCBnbDo6Qm94ICZhcmVh
LCBjb25zdCB2b2lkICppbnB1dCkKQEAgLTU1NCw3ICs1NTQsNyBAQCBnbDo6RXJyb3IgSW1hZ2U5
Ojpsb2FkQ29tcHJlc3NlZERhdGEoY29uc3QgZ2w6OkJveCAmYXJlYSwgY29uc3Qgdm9pZCAqaW5w
dXQpCiAKICAgICB1bmxvY2soKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiAvLyBUaGlzIGltcGxlbWVudHMgZ2xD
b3B5VGV4W1N1Yl1JbWFnZTJEIGZvciBub24tcmVuZGVyYWJsZSBpbnRlcm5hbCB0ZXh0dXJlIGZv
cm1hdHMgYW5kIGluY29tcGxldGUgdGV4dHVyZXMKQEAgLTc4NSw3ICs3ODUsNyBAQCBnbDo6RXJy
b3IgSW1hZ2U5Ojpjb3B5RnJvbVJUSW50ZXJuYWwoY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNl
dCwKICAgICBTYWZlUmVsZWFzZShzdXJmYWNlKTsKIAogICAgIG1EaXJ0eSA9IHRydWU7Ci0gICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CiB9CiAKIGdsOjpFcnJvciBJbWFnZTk6OmNvcHlGcm9tVGV4U3RvcmFnZShjb25zdCBnbDo6SW1h
Z2VJbmRleCAmaW1hZ2VJbmRleCwgVGV4dHVyZVN0b3JhZ2UgKnNvdXJjZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9J
bmRleEJ1ZmZlcjkuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2Q5L0luZGV4QnVmZmVyOS5jcHAKaW5kZXggNDAxNTJkZjI1ZDRhZTM5OTMy
YmQyZjBhNzI1YWExZmIyMjQ3MDJmYy4uZGE0ZjdmYWRiMGRmM2I0NjI0NDU2YWUwOTVjZTZmMjcy
ZDIzMmQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L0luZGV4QnVmZmVyOS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0luZGV4QnVmZmVyOS5jcHAK
QEAgLTYyLDcgKzYyLDcgQEAgZ2w6OkVycm9yIEluZGV4QnVmZmVyOTo6aW5pdGlhbGl6ZSh1bnNp
Z25lZCBpbnQgYnVmZmVyU2l6ZSwgR0xlbnVtIGluZGV4VHlwZSwgYm8KICAgICBtSW5kZXhUeXBl
ID0gaW5kZXhUeXBlOwogICAgIG1EeW5hbWljID0gZHluYW1pYzsKIAotICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6
RXJyb3IgSW5kZXhCdWZmZXI5OjptYXBCdWZmZXIodW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWdu
ZWQgaW50IHNpemUsIHZvaWQqKiBvdXRNYXBwZWRNZW1vcnkpCkBAIC04Miw3ICs4Miw3IEBAIGds
OjpFcnJvciBJbmRleEJ1ZmZlcjk6Om1hcEJ1ZmZlcih1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNp
Z25lZCBpbnQgc2l6ZSwgdm9pZCoqCiAgICAgfQogCiAgICAgKm91dE1hcHBlZE1lbW9yeSA9IG1h
cFB0cjsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEluZGV4QnVmZmVyOTo6dW5tYXBCdWZmZXIoKQpA
QCAtOTgsNyArOTgsNyBAQCBnbDo6RXJyb3IgSW5kZXhCdWZmZXI5Ojp1bm1hcEJ1ZmZlcigpCiAg
ICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byB1bmxv
Y2sgaW50ZXJuYWwgaW5kZXggYnVmZmVyLCBIUkVTVUxUOiAweCUwOHguIiwgcmVzdWx0KTsKICAg
ICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAogR0xlbnVtIEluZGV4QnVmZmVyOTo6Z2V0SW5kZXhUeXBlKCkgY29u
c3QKQEAgLTExOSw3ICsxMTksNyBAQCBnbDo6RXJyb3IgSW5kZXhCdWZmZXI5OjpzZXRTaXplKHVu
c2lnbmVkIGludCBidWZmZXJTaXplLCBHTGVudW0gaW5kZXhUeXBlKQogICAgIH0KICAgICBlbHNl
CiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogfQogCkBAIC0xNDUsNyArMTQ1LDcgQEAgZ2w6
OkVycm9yIEluZGV4QnVmZmVyOTo6ZGlzY2FyZCgpCiAgICAgICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byB1bmxvY2sgaW50ZXJuYWwgaW5kZXggYnVmZmVy
LCBIUkVTVUxUOiAweCUwOHguIiwgcmVzdWx0KTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogRDNERk9S
TUFUIEluZGV4QnVmZmVyOTo6Z2V0SW5kZXhGb3JtYXQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1F1ZXJ5
OS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvUXVlcnk5LmNwcAppbmRleCA5ZTVhOTBhMmZmOGM0MDYyNjJhOTA4YjlmYWVhMmMzZjEz
YzNmNmM0Li44Mjg1MjE1YzIxYjM5ZjYwZjMyM2MwZDU0NzUyN2FhMGNlMWQ2YmU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvUXVlcnk5LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDkvUXVlcnk5LmNwcApAQCAtNTEsNyArNTEsNyBAQCBnbDo6RXJyb3Ig
UXVlcnk5OjpiZWdpbigpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9y
IFF1ZXJ5OTo6ZW5kKCkKQEAgLTY4LDcgKzY4LDcgQEAgZ2w6OkVycm9yIFF1ZXJ5OTo6ZW5kKCkK
ICAgICBtUXVlcnlGaW5pc2hlZCA9IGZhbHNlOwogICAgIG1SZXN1bHQgPSBHTF9GQUxTRTsKIAot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCiBnbDo6RXJyb3IgUXVlcnk5OjpxdWVyeUNvdW50ZXIoKQpAQCAtOTYsNyArOTYs
NyBAQCBnbDo6RXJyb3IgUXVlcnk5OjpnZXRSZXN1bHRCYXNlKFQgKnBhcmFtcykKIAogICAgIEFT
U0VSVChtUXVlcnlGaW5pc2hlZCk7CiAgICAgKnBhcmFtcyA9IHN0YXRpY19jYXN0PFQ+KG1SZXN1
bHQpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUXVlcnk5OjpnZXRSZXN1bHQoR0xpbnQgKnBhcmFt
cykKQEAgLTEyOSw3ICsxMjksNyBAQCBnbDo6RXJyb3IgUXVlcnk5Ojppc1Jlc3VsdEF2YWlsYWJs
ZShib29sICphdmFpbGFibGUpCiAKICAgICAqYXZhaWxhYmxlID0gbVF1ZXJ5RmluaXNoZWQ7CiAK
LSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKIH0KIAogZ2w6OkVycm9yIFF1ZXJ5OTo6dGVzdFF1ZXJ5KCkKQEAgLTE4Myw3ICsxODMs
NyBAQCBnbDo6RXJyb3IgUXVlcnk5Ojp0ZXN0UXVlcnkoKQogICAgICAgICB9CiAgICAgfQogCi0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJlcjkuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRlcmVyOS5jcHAKaW5kZXgg
MmMwY2EyNmNiOTQ4M2Y0NTEwMDMwOGUzYjA0MjRhYWE4MzU2YzI4Mi4uNTRkNDNlNzkzMGMxZTAw
NDNkYjkxOGMzODBmMTBhYWY2OGE0MDQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRlcmVyOS5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1Jl
bmRlcmVyOS5jcHAKQEAgLTUwNSw2ICs1MDUsOCBAQCBlZ2w6OkNvbmZpZ1NldCBSZW5kZXJlcjk6
OmdlbmVyYXRlQ29uZmlncygpCiAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy50cmFuc3BhcmVu
dFJlZFZhbHVlID0gMDsKICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnRyYW5zcGFyZW50R3Jl
ZW5WYWx1ZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy50cmFuc3BhcmVudEJsdWVW
YWx1ZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5jb2xvckNvbXBvbmVudFR5cGUg
ICAgPSBnbF9lZ2w6OkdMQ29tcG9uZW50VHlwZVRvRUdMQ29sb3JDb21wb25lbnRUeXBlKAorICAg
ICAgICAgICAgICAgICAgICAgICAgY29sb3JCdWZmZXJGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUp
OwogCiAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3MuYWRkKGNvbmZpZyk7CiAgICAgICAgICAg
ICAgICAgfQpAQCAtNTI1LDYgKzUyNyw3IEBAIHZvaWQgUmVuZGVyZXI5OjpnZW5lcmF0ZURpc3Bs
YXlFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpCiAgICAg
ICAgIG91dEV4dGVuc2lvbnMtPmQzZFNoYXJlSGFuZGxlQ2xpZW50QnVmZmVyICAgICA9IHRydWU7
CiAgICAgICAgIG91dEV4dGVuc2lvbnMtPnN1cmZhY2VEM0RUZXh0dXJlMkRTaGFyZUhhbmRsZSA9
IHRydWU7CiAgICAgfQorICAgIG91dEV4dGVuc2lvbnMtPmQzZFRleHR1cmVDbGllbnRCdWZmZXIg
PSB0cnVlOwogCiAgICAgb3V0RXh0ZW5zaW9ucy0+cXVlcnlTdXJmYWNlUG9pbnRlciA9IHRydWU7
CiAgICAgb3V0RXh0ZW5zaW9ucy0+d2luZG93Rml4ZWRTaXplICAgICA9IHRydWU7CkBAIC01Mzcs
NiArNTQwLDkgQEAgdm9pZCBSZW5kZXJlcjk6OmdlbmVyYXRlRGlzcGxheUV4dGVuc2lvbnMoZWds
OjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykKICAgICBvdXRFeHRlbnNpb25zLT5n
bFJlbmRlcmJ1ZmZlckltYWdlID0gdHJ1ZTsKIAogICAgIG91dEV4dGVuc2lvbnMtPmZsZXhpYmxl
U3VyZmFjZUNvbXBhdGliaWxpdHkgPSB0cnVlOworCisgICAgLy8gQ29udGV4dHMgYXJlIHZpcnR1
YWxpemVkIHNvIHRleHR1cmVzIGNhbiBiZSBzaGFyZWQgZ2xvYmFsbHkKKyAgICBvdXRFeHRlbnNp
b25zLT5kaXNwbGF5VGV4dHVyZVNoYXJlR3JvdXAgPSB0cnVlOwogfQogCiB2b2lkIFJlbmRlcmVy
OTo6c3RhcnRTY2VuZSgpCkBAIC01OTIsNyArNTk4LDcgQEAgZ2w6OkVycm9yIFJlbmRlcmVyOTo6
Zmx1c2goKQogICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWls
ZWQgdG8gZ2V0IGV2ZW50IHF1ZXJ5IGRhdGEsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOwogICAg
IH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXI5OjpmaW5pc2goKQpAQCAtNjU1LDcg
KzY2MSw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjk6OmZpbmlzaCgpCiAKICAgICBmcmVlRXZlbnRR
dWVyeShxdWVyeSk7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogYm9vbCBSZW5kZXJlcjk6OmlzVmFsaWROYXRpdmVX
aW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpIGNvbnN0CkBAIC02NzIsMTIgKzY3OCwx
MTEgQEAgTmF0aXZlV2luZG93RDNEICpSZW5kZXJlcjk6OmNyZWF0ZU5hdGl2ZVdpbmRvdyhFR0xO
YXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKIAogU3dhcENoYWluRDNEICpSZW5kZXJlcjk6OmNyZWF0
ZVN3YXBDaGFpbihOYXRpdmVXaW5kb3dEM0QgKm5hdGl2ZVdpbmRvdywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFIHNoYXJlSGFuZGxlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJVW5rbm93biAqZDNkVGV4dHVyZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJhY2tCdWZmZXJG
b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBk
ZXB0aEJ1ZmZlckZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMaW50IG9yaWVudGF0aW9uKQogewotICAgIHJldHVybiBuZXcgU3dhcENoYWluOSh0aGlz
LCBHZXRBczxOYXRpdmVXaW5kb3c5PihuYXRpdmVXaW5kb3cpLCBzaGFyZUhhbmRsZSwgYmFja0J1
ZmZlckZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhCdWZmZXJGb3JtYXQs
IG9yaWVudGF0aW9uKTsKKyAgICByZXR1cm4gbmV3IFN3YXBDaGFpbjkodGhpcywgR2V0QXM8TmF0
aXZlV2luZG93OT4obmF0aXZlV2luZG93KSwgc2hhcmVIYW5kbGUsIGQzZFRleHR1cmUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJhY2tCdWZmZXJGb3JtYXQsIGRlcHRoQnVmZmVyRm9ybWF0
LCBvcmllbnRhdGlvbik7Cit9CisKK2VnbDo6RXJyb3IgUmVuZGVyZXI5OjpnZXREM0RUZXh0dXJl
SW5mbyhJVW5rbm93biAqZDNkVGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xpbnQgKndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTGludCAqaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSAqZmJvRm9ybWF0KSBjb25zdAoreworICAgIElEaXJlY3QzRFRleHR1
cmU5ICp0ZXh0dXJlID0gbnVsbHB0cjsKKyAgICBpZiAoRkFJTEVEKGQzZFRleHR1cmUtPlF1ZXJ5
SW50ZXJmYWNlKCZ0ZXh0dXJlKSkpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfQkFEX1BBUkFNRVRFUiwgImNsaWVudCBidWZmZXIgaXMgbm90IGEgSURpcmVjdDNEVGV4dHVy
ZTkiKTsKKyAgICB9CisKKyAgICBJRGlyZWN0M0REZXZpY2U5ICp0ZXh0dXJlRGV2aWNlID0gbnVs
bHB0cjsKKyAgICB0ZXh0dXJlLT5HZXREZXZpY2UoJnRleHR1cmVEZXZpY2UpOworICAgIGlmICh0
ZXh0dXJlRGV2aWNlICE9IG1EZXZpY2UpCisgICAgeworICAgICAgICBTYWZlUmVsZWFzZSh0ZXh0
dXJlKTsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJUZXh0
dXJlJ3MgZGV2aWNlIGRvZXMgbm90IG1hdGNoLiIpOworICAgIH0KKyAgICBTYWZlUmVsZWFzZSh0
ZXh0dXJlRGV2aWNlKTsKKworICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjOworICAgIHRleHR1cmUt
PkdldExldmVsRGVzYygwLCAmZGVzYyk7CisgICAgU2FmZVJlbGVhc2UodGV4dHVyZSk7CisKKyAg
ICBpZiAod2lkdGgpCisgICAgeworICAgICAgICAqd2lkdGggPSBzdGF0aWNfY2FzdDxFR0xpbnQ+
KGRlc2MuV2lkdGgpOworICAgIH0KKyAgICBpZiAoaGVpZ2h0KQorICAgIHsKKyAgICAgICAgKmhl
aWdodCA9IHN0YXRpY19jYXN0PEVHTGludD4oZGVzYy5IZWlnaHQpOworICAgIH0KKworICAgIC8v
IEZyb20gdGFibGUgZWdsLnJlc3RyaWN0aW9ucyBpbiBFR0xfQU5HTEVfZDNkX3RleHR1cmVfY2xp
ZW50X2J1ZmZlci4KKyAgICBzd2l0Y2ggKGRlc2MuRm9ybWF0KQorICAgIHsKKyAgICAgICAgY2Fz
ZSBEM0RGTVRfUjhHOEI4OgorICAgICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKKyAgICAgICAg
Y2FzZSBEM0RGTVRfQTE2QjE2RzE2UjE2RjoKKyAgICAgICAgY2FzZSBEM0RGTVRfQTMyQjMyRzMy
UjMyRjoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgIlVua25vd24gY2xpZW50IGJ1
ZmZlciB0ZXh0dXJlIGZvcm1hdDogJXUuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlc2MuRm9ybWF0KTsKKyAgICB9CisKKyAgICBpZiAoZmJvRm9ybWF0KQorICAgIHsKKyAgICAg
ICAgY29uc3QgYXV0byAmZDNkRm9ybWF0SW5mbyA9IGQzZDk6OkdldEQzREZvcm1hdEluZm8oZGVz
Yy5Gb3JtYXQpOworICAgICAgICBBU1NFUlQoZDNkRm9ybWF0SW5mby5pbmZvKCkuaWQgIT0gYW5n
bGU6OkZvcm1hdDo6SUQ6Ok5PTkUpOworICAgICAgICAqZmJvRm9ybWF0ID0gZDNkRm9ybWF0SW5m
by5pbmZvKCkuZmJvSW1wbGVtZW50YXRpb25JbnRlcm5hbEZvcm1hdDsKKyAgICB9CisKKyAgICBy
ZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgUmVuZGVyZXI5
Ojp2YWxpZGF0ZVNoYXJlSGFuZGxlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUgc2hhcmVIYW5kbGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJp
YnV0ZU1hcCAmYXR0cmlicykgY29uc3QKK3sKKyAgICBpZiAoc2hhcmVIYW5kbGUgPT0gbnVsbHB0
cikKKyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCAi
TlVMTCBzaGFyZSBoYW5kbGUuIik7CisgICAgfQorCisgICAgRUdMaW50IHdpZHRoICA9IGF0dHJp
YnMuZ2V0QXNJbnQoRUdMX1dJRFRILCAwKTsKKyAgICBFR0xpbnQgaGVpZ2h0ID0gYXR0cmlicy5n
ZXRBc0ludChFR0xfSEVJR0hULCAwKTsKKyAgICBBU1NFUlQod2lkdGggIT0gMCAmJiBoZWlnaHQg
IT0gMCk7CisKKyAgICBjb25zdCBkM2Q5OjpUZXh0dXJlRm9ybWF0ICZiYWNrQnVmZmVyZDNkRm9y
bWF0SW5mbyA9CisgICAgICAgIGQzZDk6OkdldFRleHR1cmVGb3JtYXRJbmZvKGNvbmZpZy0+cmVu
ZGVyVGFyZ2V0Rm9ybWF0KTsKKworICAgIElEaXJlY3QzRFRleHR1cmU5ICp0ZXh0dXJlID0gbnVs
bHB0cjsKKyAgICBIUkVTVUxUIHJlc3VsdCAgICAgICAgICAgICA9IG1EZXZpY2UtPkNyZWF0ZVRl
eHR1cmUod2lkdGgsIGhlaWdodCwgMSwgRDNEVVNBR0VfUkVOREVSVEFSR0VULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrQnVmZmVyZDNkRm9ybWF0SW5m
by50ZXhGb3JtYXQsIEQzRFBPT0xfREVGQVVMVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJnRleHR1cmUsICZzaGFyZUhhbmRsZSk7CisgICAgaWYgKEZBSUxF
RChyZXN1bHQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9QQVJB
TUVURVIsICJGYWlsZWQgdG8gb3BlbiBzaGFyZSBoYW5kbGUsIHJlc3VsdDogMHglWC4iLCByZXN1
bHQpOworICAgIH0KKworICAgIERXT1JEIGxldmVsQ291bnQgPSB0ZXh0dXJlLT5HZXRMZXZlbENv
dW50KCk7CisKKyAgICBEM0RTVVJGQUNFX0RFU0MgZGVzYzsKKyAgICB0ZXh0dXJlLT5HZXRMZXZl
bERlc2MoMCwgJmRlc2MpOworICAgIFNhZmVSZWxlYXNlKHRleHR1cmUpOworCisgICAgaWYgKGxl
dmVsQ291bnQgIT0gMSB8fCBkZXNjLldpZHRoICE9IHN0YXRpY19jYXN0PFVJTlQ+KHdpZHRoKSB8
fAorICAgICAgICBkZXNjLkhlaWdodCAhPSBzdGF0aWNfY2FzdDxVSU5UPihoZWlnaHQpIHx8Cisg
ICAgICAgIGRlc2MuRm9ybWF0ICE9IGJhY2tCdWZmZXJkM2RGb3JtYXRJbmZvLnRleEZvcm1hdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCAiSW52
YWxpZCB0ZXh0dXJlIHBhcmFtZXRlcnMgaW4gc2hhcmUgaGFuZGxlIHRleHR1cmUuIik7CisgICAg
fQorCisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCiBDb250ZXh0SW1w
bCAqUmVuZGVyZXI5OjpjcmVhdGVDb250ZXh0KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRl
KQpAQCAtNzA3LDcgKzgxMiw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjk6OmFsbG9jYXRlRXZlbnRR
dWVyeShJRGlyZWN0M0RRdWVyeTkgKipvdXRRdWVyeSkKICAgICAgICAgbUV2ZW50UXVlcnlQb29s
LnBvcF9iYWNrKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgUmVuZGVyZXI5OjpmcmVlRXZl
bnRRdWVyeShJRGlyZWN0M0RRdWVyeTkqIHF1ZXJ5KQpAQCAtODI4LDcgKzkzMyw3IEBAIGdsOjpF
cnJvciBSZW5kZXJlcjk6OnNldFNhbXBsZXJTdGF0ZShnbDo6U2FtcGxlclR5cGUgdHlwZSwgaW50
IGluZGV4LCBnbDo6VGV4dHVyCiAgICAgYXBwbGllZFNhbXBsZXIuc2FtcGxlclN0YXRlID0gc2Ft
cGxlclN0YXRlOwogICAgIGFwcGxpZWRTYW1wbGVyLmJhc2VMZXZlbCA9IGJhc2VMZXZlbDsKIAot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXI5OjpzZXRUZXh0dXJlKGdsOjpTYW1wbGVyVHlw
ZSB0eXBlLCBpbnQgaW5kZXgsIGdsOjpUZXh0dXJlICp0ZXh0dXJlKQpAQCAtODc2LDcgKzk4MSw3
IEBAIGdsOjpFcnJvciBSZW5kZXJlcjk6OnNldFRleHR1cmUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUs
IGludCBpbmRleCwgZ2w6OlRleHR1cmUgKnRlCiAKICAgICBhcHBsaWVkVGV4dHVyZXNbaW5kZXhd
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGQzZFRleHR1cmUpOwogCi0gICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
IGdsOjpFcnJvciBSZW5kZXJlcjk6OnNldFVuaWZvcm1CdWZmZXJzKGNvbnN0IGdsOjpDb250ZXh0
U3RhdGUgJiAvKmRhdGEqLywKQEAgLTg4NCw3ICs5ODksNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXI5
OjpzZXRVbmlmb3JtQnVmZmVycyhjb25zdCBnbDo6Q29udGV4dFN0YXRlICYgLypkYXRhKi8sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxH
TGludD4gJiAvKmZyYWdtZW50VW5pZm9ybUJ1ZmZlcnMqLykKIHsKICAgICAvLyBObyBlZmZlY3Qg
aW4gRVMyL0QzRDkKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFJlbmRlcmVyOTo6dXBkYXRlU3RhdGUo
Q29udGV4dDkgKmNvbnRleHQsIEdMZW51bSBkcmF3TW9kZSkKQEAgLTg5NSw3ICsxMDAwLDcgQEAg
Z2w6OkVycm9yIFJlbmRlcmVyOTo6dXBkYXRlU3RhdGUoQ29udGV4dDkgKmNvbnRleHQsIEdMZW51
bSBkcmF3TW9kZSkKICAgICAvLyBBcHBsaWVzIHRoZSByZW5kZXIgdGFyZ2V0IHN1cmZhY2UsIGRl
cHRoIHN0ZW5jaWwgc3VyZmFjZSwgdmlld3BvcnQgcmVjdGFuZ2xlIGFuZAogICAgIC8vIHNjaXNz
b3IgcmVjdGFuZ2xlIHRvIHRoZSByZW5kZXJlcgogICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVi
dWZmZXIgPSBnbFN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpOwotICAgIEFTU0VSVChmcmFtZWJ1
ZmZlciAmJiAhZnJhbWVidWZmZXItPmhhc0FueURpcnR5Qml0KCkgJiYgZnJhbWVidWZmZXItPmNv
bXBsZXRlKGRhdGEpKTsKKyAgICBBU1NFUlQoZnJhbWVidWZmZXIgJiYgIWZyYW1lYnVmZmVyLT5o
YXNBbnlEaXJ0eUJpdCgpICYmIGZyYW1lYnVmZmVyLT5jYWNoZWRDb21wbGV0ZSgpKTsKIAogICAg
IEFOR0xFX1RSWShhcHBseVJlbmRlclRhcmdldChjb250ZXh0LCBmcmFtZWJ1ZmZlcikpOwogCkBA
IC05MDcsNyArMTAxMiwxOCBAQCBnbDo6RXJyb3IgUmVuZGVyZXI5Ojp1cGRhdGVTdGF0ZShDb250
ZXh0OSAqY29udGV4dCwgR0xlbnVtIGRyYXdNb2RlKQogICAgIHNldFNjaXNzb3JSZWN0YW5nbGUo
Z2xTdGF0ZS5nZXRTY2lzc29yKCksIGdsU3RhdGUuaXNTY2lzc29yVGVzdEVuYWJsZWQoKSk7CiAK
ICAgICAvLyBTZXR0aW5nIGJsZW5kLCBkZXB0aCBzdGVuY2lsLCBhbmQgcmFzdGVyaXplciBzdGF0
ZXMKLSAgICBpbnQgc2FtcGxlcyAgICAgICAgICAgICAgICAgICAgPSBmcmFtZWJ1ZmZlci0+Z2V0
U2FtcGxlcyhkYXRhKTsKKyAgICAvLyBTaW5jZSBmcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcyB3aWxs
IHJldHVybiB0aGUgb3JpZ2luYWwgc2FtcGxlcyB3aGljaCBtYXkgYmUgZGlmZmVyZW50IHdpdGgK
KyAgICAvLyB0aGUgc2FtcGxlIGNvdW50cyB0aGF0IHdlIHNldCBpbiByZW5kZXIgdGFyZ2V0IHZp
ZXcsIGhlcmUgd2UgdXNlIHJlbmRlclRhcmdldC0+Z2V0U2FtcGxlcyB0bworICAgIC8vIGdldCB0
aGUgYWN0dWFsIHNhbXBsZXMuCisgICAgR0xzaXplaSBzYW1wbGVzICAgICAgICAgICA9IDA7Cisg
ICAgYXV0byBmaXJzdENvbG9yQXR0YWNobWVudCA9IGZyYW1lYnVmZmVyLT5nZXRGaXJzdENvbG9y
YnVmZmVyKCk7CisgICAgaWYgKGZpcnN0Q29sb3JBdHRhY2htZW50KQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGZpcnN0Q29sb3JBdHRhY2htZW50LT5pc0F0dGFjaGVkKCkpOworICAgICAgICBSZW5k
ZXJUYXJnZXQ5ICpyZW5kZXJUYXJnZXQgPSBudWxscHRyOworICAgICAgICBBTkdMRV9UUlkoZmly
c3RDb2xvckF0dGFjaG1lbnQtPmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0KSk7CisgICAg
ICAgIHNhbXBsZXMgPSByZW5kZXJUYXJnZXQtPmdldFNhbXBsZXMoKTsKKyAgICB9CiAgICAgZ2w6
OlJhc3Rlcml6ZXJTdGF0ZSByYXN0ZXJpemVyID0gZ2xTdGF0ZS5nZXRSYXN0ZXJpemVyU3RhdGUo
KTsKICAgICByYXN0ZXJpemVyLnBvaW50RHJhd01vZGUgICAgICAgPSAoZHJhd01vZGUgPT0gR0xf
UE9JTlRTKTsKICAgICByYXN0ZXJpemVyLm11bHRpU2FtcGxlICAgICAgICAgPSAoc2FtcGxlcyAh
PSAwKTsKQEAgLTkzMCw3ICsxMDQ2LDE4IEBAIGdsOjpFcnJvciBSZW5kZXJlcjk6OnNldEJsZW5k
RGVwdGhSYXN0ZXJTdGF0ZXMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZ2xEYXRhLCBHCiAgICAg
Y29uc3QgYXV0byAmZ2xTdGF0ZSAgPSBnbERhdGEuZ2V0U3RhdGUoKTsKICAgICBhdXRvIGRyYXdG
cmFtZWJ1ZmZlciA9IGdsU3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CiAgICAgQVNTRVJUKCFk
cmF3RnJhbWVidWZmZXItPmhhc0FueURpcnR5Qml0KCkpOwotICAgIGludCBzYW1wbGVzICAgICAg
ICAgICAgICAgICAgICA9IGRyYXdGcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcyhnbERhdGEpOworICAg
IC8vIFNpbmNlIGZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzIHdpbGwgcmV0dXJuIHRoZSBvcmlnaW5h
bCBzYW1wbGVzIHdoaWNoIG1heSBiZSBkaWZmZXJlbnQgd2l0aAorICAgIC8vIHRoZSBzYW1wbGUg
Y291bnRzIHRoYXQgd2Ugc2V0IGluIHJlbmRlciB0YXJnZXQgdmlldywgaGVyZSB3ZSB1c2UgcmVu
ZGVyVGFyZ2V0LT5nZXRTYW1wbGVzIHRvCisgICAgLy8gZ2V0IHRoZSBhY3R1YWwgc2FtcGxlcy4K
KyAgICBHTHNpemVpIHNhbXBsZXMgICAgICAgICAgID0gMDsKKyAgICBhdXRvIGZpcnN0Q29sb3JB
dHRhY2htZW50ID0gZHJhd0ZyYW1lYnVmZmVyLT5nZXRGaXJzdENvbG9yYnVmZmVyKCk7CisgICAg
aWYgKGZpcnN0Q29sb3JBdHRhY2htZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGZpcnN0Q29s
b3JBdHRhY2htZW50LT5pc0F0dGFjaGVkKCkpOworICAgICAgICBSZW5kZXJUYXJnZXQ5ICpyZW5k
ZXJUYXJnZXQgPSBudWxscHRyOworICAgICAgICBBTkdMRV9UUlkoZmlyc3RDb2xvckF0dGFjaG1l
bnQtPmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0KSk7CisgICAgICAgIHNhbXBsZXMgPSBy
ZW5kZXJUYXJnZXQtPmdldFNhbXBsZXMoKTsKKyAgICB9CiAgICAgZ2w6OlJhc3Rlcml6ZXJTdGF0
ZSByYXN0ZXJpemVyID0gZ2xTdGF0ZS5nZXRSYXN0ZXJpemVyU3RhdGUoKTsKICAgICByYXN0ZXJp
emVyLnBvaW50RHJhd01vZGUgICAgICAgPSAoZHJhd01vZGUgPT0gR0xfUE9JTlRTKTsKICAgICBy
YXN0ZXJpemVyLm11bHRpU2FtcGxlICAgICAgICAgPSAoc2FtcGxlcyAhPSAwKTsKQEAgLTEwMDYs
NyArMTEzMyw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjk6OmdldE51bGxDb2xvcmJ1ZmZlcihHTElt
cGxGYWN0b3J5ICppbXBsRmFjdG9yeSwKICAgICAgICAgewogICAgICAgICAgICAgbU51bGxDb2xv
cmJ1ZmZlckNhY2hlW2ldLmxydUNvdW50ID0gKyttTWF4TnVsbENvbG9yYnVmZmVyTFJVOwogICAg
ICAgICAgICAgKm91dENvbG9yQnVmZmVyID0gbU51bGxDb2xvcmJ1ZmZlckNhY2hlW2ldLmJ1ZmZl
cjsKLSAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICAg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEwMzcsNyAr
MTE2NCw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjk6OmdldE51bGxDb2xvcmJ1ZmZlcihHTEltcGxG
YWN0b3J5ICppbXBsRmFjdG9yeSwKICAgICBvbGRlc3QtPmhlaWdodCAgID0gc2l6ZS5oZWlnaHQ7
CiAKICAgICAqb3V0Q29sb3JCdWZmZXIgPSBudWxsYnVmZmVyOwotICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJy
b3IgUmVuZGVyZXI5OjphcHBseVJlbmRlclRhcmdldChHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9y
eSwKQEAgLTExNDIsNyArMTI2OSw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjk6OmFwcGx5UmVuZGVy
VGFyZ2V0KEdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAogICAgICAgICBtUmVuZGVyVGFyZ2V0
RGVzY0luaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFJl
bmRlcmVyOTo6YXBwbHlSZW5kZXJUYXJnZXQoR0xJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksCkBA
IC0xMTk3LDEzICsxMzI0LDEzIEBAIGdsOjpFcnJvciBSZW5kZXJlcjk6OmFwcGx5SW5kZXhCdWZm
ZXIoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgbUFwcGxpZWRJQlNlcmlh
bCA9IGluZGV4SW5mby0+c2VyaWFsOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUmVu
ZGVyZXI5OjphcHBseVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycyhjb25zdCBnbDo6U3RhdGUgJnN0
YXRlKQogewogICAgIEFTU0VSVCghc3RhdGUuaXNUcmFuc2Zvcm1GZWVkYmFja0FjdGl2ZVVucGF1
c2VkKCkpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXI5OjpkcmF3QXJyYXlzSW1wbChj
b25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLApAQCAtMTI0MiwxMiArMTM2OSwxMiBAQCBnbDo6
RXJyb3IgUmVuZGVyZXI5OjpkcmF3QXJyYXlzSW1wbChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZk
YXRhLAogICAgICAgICAgICAgbURldmljZS0+RHJhd0luZGV4ZWRQcmltaXRpdmUobVByaW1pdGl2
ZVR5cGUsIDAsIDAsIGNvdW50LCAwLCBtUHJpbWl0aXZlQ291bnQpOwogICAgICAgICB9CiAKLSAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogICAgIH0KICAgICBlbHNlICAgLy8gUmVndWxhciBjYXNlCiAgICAgewogICAg
ICAgICBtRGV2aWNlLT5EcmF3UHJpbWl0aXZlKG1QcmltaXRpdmVUeXBlLCAwLCBtUHJpbWl0aXZl
Q291bnQpOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogfQogCkBAIC0xMjgzLDcgKzE0MTAsNyBAQCBn
bDo6RXJyb3IgUmVuZGVyZXI5OjpkcmF3RWxlbWVudHNJbXBsKGNvbnN0IGdsOjpDb250ZXh0U3Rh
dGUgJmRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxVSU5UPih2ZXJ0ZXhDb3VudCksIGluZGV4SW5mby5zdGFydEluZGV4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVByaW1pdGl2ZUNvdW50KTsKICAg
ICAgICAgfQotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogfQogCkBAIC0xNDcyLDcgKzE1OTksNyBAQCBn
bDo6RXJyb3IgUmVuZGVyZXI5OjpkcmF3TGluZUxvb3AoR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5
cGUsIGNvbnN0IEdMdm9pZCAqaW5kaQogCiAgICAgbURldmljZS0+RHJhd0luZGV4ZWRQcmltaXRp
dmUoRDNEUFRfTElORVNUUklQLCAtbWluSW5kZXgsIG1pbkluZGV4LCBjb3VudCwgc3RhcnRJbmRl
eCwgY291bnQpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0
dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMTQ4NCw3
ICsxNjExLDcgQEAgc3RhdGljIGdsOjpFcnJvciBkcmF3UG9pbnRzKElEaXJlY3QzRERldmljZTkq
IGRldmljZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x2b2kKICAgICAgICAgZGV2aWNlLT5EcmF3
UHJpbWl0aXZlKEQzRFBUX1BPSU5UTElTVCwgaW5kZXhWYWx1ZSwgMSk7CiAgICAgfQogCi0gICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CiB9CiAKIGdsOjpFcnJvciBSZW5kZXJlcjk6OmRyYXdJbmRleGVkUG9pbnRzKEdMc2l6ZWkgY291
bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIGludCBtaW5JbmRleCwgZ2w6
OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyKQpAQCAtMTU4NSwxMSArMTcxMiwxNCBAQCBnbDo6
RXJyb3IgUmVuZGVyZXI5OjpnZXRDb3VudGluZ0lCKHNpemVfdCBjb3VudCwgU3RhdGljSW5kZXhC
dWZmZXJJbnRlcmZhY2UgKipvdQogICAgIH0KIAogICAgICpvdXRJQiA9IG1Db3VudGluZ0lCOwot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXI5OjphcHBseVNoYWRlcnMoY29uc3QgZ2w6OkNv
bnRleHRTdGF0ZSAmZGF0YSwgR0xlbnVtIGRyYXdNb2RlKQogeworICAgIC8vIFRoaXMgbWV0aG9k
IGlzIGNhbGxlZCBzaW5nbGUtdGhyZWFkZWQuCisgICAgQU5HTEVfVFJZKGVuc3VyZUhMU0xDb21w
aWxlckluaXRpYWxpemVkKCkpOworCiAgICAgUHJvZ3JhbUQzRCAqcHJvZ3JhbUQzRCA9IEdldElt
cGxBczxQcm9ncmFtRDNEPihkYXRhLmdldFN0YXRlKCkuZ2V0UHJvZ3JhbSgpKTsKICAgICBwcm9n
cmFtRDNELT51cGRhdGVDYWNoZWRJbnB1dExheW91dChkYXRhLmdldFN0YXRlKCkpOwogCkBAIC0x
NjgwLDcgKzE4MTAsNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXI5OjphcHBseVVuaWZvcm1zKGNvbnN0
IFByb2dyYW1EM0QgJnByb2dyYW1EM0QsCiAgICAgLy8gRHJpdmVyIHVuaWZvcm1zCiAgICAgbVN0
YXRlTWFuYWdlci5zZXRTaGFkZXJDb25zdGFudHMoKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2b2lkIFJlbmRl
cmVyOTo6YXBwbHlVbmlmb3JtbmZ2KGNvbnN0IEQzRFVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIGNv
bnN0IEdMZmxvYXQgKnYpCkBAIC0xOTc5LDcgKzIxMDksNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXI5
OjpjbGVhcihjb25zdCBDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zLAogICAgICAgICBtRGV2
aWNlLT5DbGVhcigwLCBOVUxMLCBkeENsZWFyRmxhZ3MsIGNvbG9yLCBkZXB0aCwgc3RlbmNpbCk7
CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgUmVuZGVyZXI5OjptYXJrQWxsU3RhdGVEaXJ0eSgp
CkBAIC0yMTMzLDEzICsyMjYzLDEzIEBAIGJvb2wgUmVuZGVyZXI5OjpyZXNldERldmljZSgpCiAK
ICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgewotICAgICAgICBFUlIoIlJlc2V0L1Jlc2V0
RXggZmFpbGVkIG11bHRpcGxlIHRpbWVzOiAweCUwOFgiLCByZXN1bHQpOworICAgICAgICBFUlIo
KSA8PCAiUmVzZXQvUmVzZXRFeCBmYWlsZWQgbXVsdGlwbGUgdGltZXMsICIgPDwgZ2w6OkZtdEhS
KHJlc3VsdCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAocmVtb3Zl
ZERldmljZSAmJiBsb3N0KQogICAgIHsKLSAgICAgICAgRVJSKCJEZXZpY2UgbG9zdCByZXNldCBm
YWlsZWQgbXVsdGlwbGUgdGltZXMiKTsKKyAgICAgICAgRVJSKCkgPDwgIkRldmljZSBsb3N0IHJl
c2V0IGZhaWxlZCBtdWx0aXBsZSB0aW1lcyI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKQEAgLTIzMzMsMTMgKzI0NjMsMjMgQEAgZ2w6OkVycm9yIFJlbmRlcmVyOTo6Y29weVRleHR1
cmUoY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGRlc3RUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBkZXN0TGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIHVucGFja0ZsaXBZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIEFTU0VSVChk
ZXN0VGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQpOworCisgICAgUkVDVCByZWN0OworICAgIHJlY3Qu
bGVmdCAgID0gc291cmNlUmVjdC54OworICAgIHJlY3QudG9wICAgID0gc291cmNlUmVjdC55Owor
ICAgIHJlY3QucmlnaHQgID0gc291cmNlUmVjdC54ICsgc291cmNlUmVjdC53aWR0aDsKKyAgICBy
ZWN0LmJvdHRvbSA9IHNvdXJjZVJlY3QueSArIHNvdXJjZVJlY3QuaGVpZ2h0OworCisgICAgcmV0
dXJuIG1CbGl0LT5jb3B5VGV4dHVyZTJEKHNvdXJjZSwgc291cmNlTGV2ZWwsIHJlY3QsIGRlc3RG
b3JtYXQsIGRlc3RPZmZzZXQsIHN0b3JhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlc3RMZXZlbCwgdW5wYWNrRmxpcFksIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGFja1VubXVsdGlwbHlBbHBoYSk7CiB9CiAK
IGdsOjpFcnJvciBSZW5kZXJlcjk6OmNvcHlDb21wcmVzc2VkVGV4dHVyZShjb25zdCBnbDo6VGV4
dHVyZSAqc291cmNlLApAQCAtMjQxNCw3ICsyNTU0LDcgQEAgZ2w6OkVycm9yIFJlbmRlcmVyOTo6
Y3JlYXRlUmVuZGVyVGFyZ2V0KGludCB3aWR0aCwgaW50IGhlaWdodCwgR0xlbnVtIGZvcm1hdCwg
R0wKIAogICAgICpvdXRSVCA9IG5ldyBUZXh0dXJlUmVuZGVyVGFyZ2V0OSh0ZXh0dXJlLCAwLCBy
ZW5kZXJUYXJnZXQsIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkU2FtcGxlcyk7Ci0gICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpF
cnJvciBSZW5kZXJlcjk6OmNyZWF0ZVJlbmRlclRhcmdldENvcHkoUmVuZGVyVGFyZ2V0RDNEICpz
b3VyY2UsIFJlbmRlclRhcmdldEQzRCAqKm91dFJUKQpAQCAtMjQ0MSw3ICsyNTgxLDcgQEAgZ2w6
OkVycm9yIFJlbmRlcmVyOTo6Y3JlYXRlUmVuZGVyVGFyZ2V0Q29weShSZW5kZXJUYXJnZXREM0Qg
KnNvdXJjZSwgUmVuZGVyVGFyZ2UKICAgICB9CiAKICAgICAqb3V0UlQgPSBuZXdSVDsKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAogZ2w6OkVycm9yIFJlbmRlcmVyOTo6bG9hZEV4ZWN1dGFibGUoY29uc3Qgdm9pZCAqZnVu
Y3Rpb24sCkBAIC0yNDgzLDcgKzI2MjMsNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXI5Ojpsb2FkRXhl
Y3V0YWJsZShjb25zdCB2b2lkICpmdW5jdGlvbiwKICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBSZW5k
ZXJlcjk6OmNvbXBpbGVUb0V4ZWN1dGFibGUoZ2w6OkluZm9Mb2cgJmluZm9Mb2csCkBAIC0yNDkx
LDI4ICsyNjMxLDMyIEBAIGdsOjpFcnJvciBSZW5kZXJlcjk6OmNvbXBpbGVUb0V4ZWN1dGFibGUo
Z2w6OkluZm9Mb2cgJmluZm9Mb2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8RDNEVmFyeWluZz4gJnN0cmVhbU91dFZhcnlpbmdz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNlcGFyYXRl
ZE91dHB1dEJ1ZmZlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEQzRENvbXBpbGVyV29ya2Fyb3VuZHMgJndvcmthcm91bmRzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhbmdsZTo6Q29tcGlsZXJXb3JrYXJv
dW5kc0QzRCAmd29ya2Fyb3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlckV4ZWN1dGFibGVEM0QgKipvdXRFeGVjdHVhYmxlKQogewogICAgIC8vIFRy
YW5zZm9ybSBmZWVkYmFjayBpcyBub3Qgc3VwcG9ydGVkIGluIEVTMiBvciBEM0Q5CiAgICAgQVNT
RVJUKHN0cmVhbU91dFZhcnlpbmdzLmVtcHR5KCkpOwogCi0gICAgY29uc3QgY2hhciAqcHJvZmls
ZVR5cGUgPSBOVUxMOworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHByb2ZpbGVTdHJlYW07CisKICAg
ICBzd2l0Y2ggKHR5cGUpCiAgICAgewotICAgICAgY2FzZSBTSEFERVJfVkVSVEVYOgotICAgICAg
ICBwcm9maWxlVHlwZSA9ICJ2cyI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBTSEFERVJf
UElYRUw6Ci0gICAgICAgIHByb2ZpbGVUeXBlID0gInBzIjsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBkZWZhdWx0OgotICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgY2FzZSBTSEFERVJfVkVSVEVYOgor
ICAgICAgICAgICAgcHJvZmlsZVN0cmVhbSA8PCAidnMiOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU0hBREVSX1BJWEVMOgorICAgICAgICAgICAgcHJvZmlsZVN0cmVhbSA8PCAi
cHMiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CiAgICAgfQotICAgIHVuc2lnbmVkIGludCBwcm9maWxlTWFqb3JWZXJzaW9uID0g
KGdldE1ham9yU2hhZGVyTW9kZWwoKSA+PSAzKSA/IDMgOiAyOwotICAgIHVuc2lnbmVkIGludCBw
cm9maWxlTWlub3JWZXJzaW9uID0gMDsKLSAgICBzdGQ6OnN0cmluZyBwcm9maWxlID0gRm9ybWF0
U3RyaW5nKCIlc18ldV8ldSIsIHByb2ZpbGVUeXBlLCBwcm9maWxlTWFqb3JWZXJzaW9uLCBwcm9m
aWxlTWlub3JWZXJzaW9uKTsKKworICAgIHByb2ZpbGVTdHJlYW0gPDwgIl8iIDw8ICgoZ2V0TWFq
b3JTaGFkZXJNb2RlbCgpID49IDMpID8gMyA6IDIpOworICAgIHByb2ZpbGVTdHJlYW0gPDwgIl8i
CisgICAgICAgICAgICAgICAgICA8PCAiMCI7CisKKyAgICBzdGQ6OnN0cmluZyBwcm9maWxlID0g
cHJvZmlsZVN0cmVhbS5zdHIoKTsKIAogICAgIFVJTlQgZmxhZ3MgPSBBTkdMRV9DT01QSUxFX09Q
VElNSVpBVElPTl9MRVZFTDsKIApAQCAtMjU1NCw3ICsyNjk4LDcgQEAgZ2w6OkVycm9yIFJlbmRl
cmVyOTo6Y29tcGlsZVRvRXhlY3V0YWJsZShnbDo6SW5mb0xvZyAmaW5mb0xvZywKICAgICBpZiAo
IWJpbmFyeSkKICAgICB7CiAgICAgICAgICpvdXRFeGVjdHVhYmxlID0gTlVMTDsKLSAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogICAgIH0KIAogICAgIGVycm9yID0gbG9hZEV4ZWN1dGFibGUoYmluYXJ5LT5HZXRCdWZm
ZXJQb2ludGVyKCksIGJpbmFyeS0+R2V0QnVmZmVyU2l6ZSgpLCB0eXBlLApAQCAtMjU3MSw3ICsy
NzE1LDEyIEBAIGdsOjpFcnJvciBSZW5kZXJlcjk6OmNvbXBpbGVUb0V4ZWN1dGFibGUoZ2w6Oklu
Zm9Mb2cgJmluZm9Mb2csCiAgICAgICAgICgqb3V0RXhlY3R1YWJsZSktPmFwcGVuZERlYnVnSW5m
byhkZWJ1Z0luZm8pOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCitnbDo6RXJyb3IgUmVuZGVyZXI5Ojpl
bnN1cmVITFNMQ29tcGlsZXJJbml0aWFsaXplZCgpCit7CisgICAgcmV0dXJuIG1Db21waWxlci5l
bnN1cmVJbml0aWFsaXplZCgpOwogfQogCiBVbmlmb3JtU3RvcmFnZUQzRCAqUmVuZGVyZXI5Ojpj
cmVhdGVVbmlmb3JtU3RvcmFnZShzaXplX3Qgc3RvcmFnZVNpemUpCkBAIC0yNjM0LDcgKzI3ODMs
NyBAQCBnbDo6RXJyb3IgUmVuZGVyZXI5Ojpjb3B5VG9SZW5kZXJUYXJnZXQoSURpcmVjdDNEU3Vy
ZmFjZTkgKmRlc3QsIElEaXJlY3QzRFN1cmZhYwogICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gYmxpdCBpbnRlcm5hbCB0ZXh0dXJlLCByZXN1bHQ6
IDB4JVguIiwgcmVzdWx0KTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogSW1hZ2VEM0QgKlJlbmRlcmVy
OTo6Y3JlYXRlSW1hZ2UoKQpAQCAtMjY1Myw3ICsyODAyLDcgQEAgZ2w6OkVycm9yIFJlbmRlcmVy
OTo6Z2VuZXJhdGVNaXBtYXBVc2luZ0QzRChUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmVT
dGF0ZSAmdGV4dHVyZVN0YXRlKQogewogICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIFRl
eHR1cmVTdG9yYWdlICpSZW5kZXJlcjk6OmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoU3dhcENoYWlu
RDNEICpzd2FwQ2hhaW4pCkBAIC0yNzI3LDI3ICsyODc2LDI4IEBAIEdMZW51bSBSZW5kZXJlcjk6
OmdldFZlcnRleENvbXBvbmVudFR5cGUoZ2w6OlZlcnRleEZvcm1hdFR5cGUgdmVydGV4Rm9ybWF0
VHlwZSkKIH0KIAogZ2w6OkVycm9yT3JSZXN1bHQ8dW5zaWduZWQgaW50PiBSZW5kZXJlcjk6Omdl
dFZlcnRleFNwYWNlUmVxdWlyZWQoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlZlcnRleEJpbmRpbmcgJmJpbmRpbmcsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0CiB7Ci0gICAgZ2w6
OlZlcnRleEZvcm1hdFR5cGUgdmVydGV4Rm9ybWF0VHlwZSA9IGdsOjpHZXRWZXJ0ZXhGb3JtYXRU
eXBlKGF0dHJpYiwgR0xfRkxPQVQpOwotICAgIGNvbnN0IGQzZDk6OlZlcnRleEZvcm1hdCAmZDNk
OVZlcnRleEluZm8gPQotICAgICAgICBkM2Q5OjpHZXRWZXJ0ZXhGb3JtYXRJbmZvKGdldENhcHNE
ZWNsVHlwZXMoKSwgdmVydGV4Rm9ybWF0VHlwZSk7Ci0KICAgICBpZiAoIWF0dHJpYi5lbmFibGVk
KQogICAgIHsKICAgICAgICAgcmV0dXJuIDE2dTsKICAgICB9CiAKKyAgICBnbDo6VmVydGV4Rm9y
bWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBlID0gZ2w6OkdldFZlcnRleEZvcm1hdFR5cGUoYXR0cmli
LCBHTF9GTE9BVCk7CisgICAgY29uc3QgZDNkOTo6VmVydGV4Rm9ybWF0ICZkM2Q5VmVydGV4SW5m
byA9CisgICAgICAgIGQzZDk6OkdldFZlcnRleEZvcm1hdEluZm8oZ2V0Q2Fwc0RlY2xUeXBlcygp
LCB2ZXJ0ZXhGb3JtYXRUeXBlKTsKKwogICAgIHVuc2lnbmVkIGludCBlbGVtZW50Q291bnQgPSAw
OwotICAgIGlmIChpbnN0YW5jZXMgPT0gMCB8fCBhdHRyaWIuZGl2aXNvciA9PSAwKQorICAgIGlm
IChpbnN0YW5jZXMgPT0gMCB8fCBiaW5kaW5nLmRpdmlzb3IgPT0gMCkKICAgICB7CiAgICAgICAg
IGVsZW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY291bnQpOwogICAgIH0K
ICAgICBlbHNlCiAgICAgewogICAgICAgICAvLyBSb3VuZCB1cCB0byBkaXZpc29yLCBpZiBwb3Nz
aWJsZQotICAgICAgICBlbGVtZW50Q291bnQgPSBVbnNpZ25lZENlaWxEaXZpZGUoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgaW50PihpbnN0YW5jZXMpLCBhdHRyaWIuZGl2aXNvcik7CisgICAgICAgIGVs
ZW1lbnRDb3VudCA9IFVuc2lnbmVkQ2VpbERpdmlkZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+
KGluc3RhbmNlcyksIGJpbmRpbmcuZGl2aXNvcik7CiAgICAgfQogCiAgICAgaWYgKGQzZDlWZXJ0
ZXhJbmZvLm91dHB1dEVsZW1lbnRTaXplID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBp
bnQ+OjptYXgoKSAvIGVsZW1lbnRDb3VudCkKQEAgLTI3NjcsNyArMjkxNyw3IEBAIHZvaWQgUmVu
ZGVyZXI5OjpnZW5lcmF0ZUNhcHMoZ2w6OkNhcHMgKm91dENhcHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dEV4dGVuc2lvbnMsIG91dExpbWl0YXRpb25zKTsKIH0KIAotV29ya2Fyb3Vu
ZHNEM0QgUmVuZGVyZXI5OjpnZW5lcmF0ZVdvcmthcm91bmRzKCkgY29uc3QKK2FuZ2xlOjpXb3Jr
YXJvdW5kc0QzRCBSZW5kZXJlcjk6OmdlbmVyYXRlV29ya2Fyb3VuZHMoKSBjb25zdAogewogICAg
IHJldHVybiBkM2Q5OjpHZW5lcmF0ZVdvcmthcm91bmRzKCk7CiB9CkBAIC0yNzg0LDcgKzI5MzQs
NyBAQCBnbDo6RXJyb3IgUmVuZGVyZXI5OjpjbGVhclRleHR1cmVzKGdsOjpTYW1wbGVyVHlwZSBz
YW1wbGVyVHlwZSwgc2l6ZV90IHJhbmdlU3RhcgogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9
CiAKIGVnbDo6RXJyb3IgUmVuZGVyZXI5OjpnZXRFR0xEZXZpY2UoRGV2aWNlSW1wbCAqKmRldmlj
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkOS9SZW5kZXJlcjkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJlcjkuaAppbmRleCBjYzc5NmNmNDFjMzVl
NTJhOGUyMDBhNzkwMTE3NzJlZTUwN2QyMjkwLi45ZmMwMWQ4MDFjNGY5MWVmMGIxNDg3N2IxMDNm
Mzk3MmJkMjNjM2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRlcmVyOS5oCkBAIC0x
OCw2ICsxOCw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU2hhZGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9WZXJ0ZXhEZWNs
YXJhdGlvbkNhY2hlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU3Rh
dGVNYW5hZ2VyOS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2RyaXZlcl91dGlscy5o
IgogCiBuYW1lc3BhY2UgZ2wKIHsKQEAgLTg3LDkgKzg4LDE3IEBAIGNsYXNzIFJlbmRlcmVyOSA6
IHB1YmxpYyBSZW5kZXJlckQzRAogCiAgICAgU3dhcENoYWluRDNEICpjcmVhdGVTd2FwQ2hhaW4o
TmF0aXZlV2luZG93RDNEICpuYXRpdmVXaW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSEFORExFIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIElVbmtub3duICpkM2RUZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBiYWNrQnVmZmVyRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFR0xpbnQgb3JpZW50YXRpb24pIG92ZXJyaWRlOworICAgIGVnbDo6RXJy
b3IgZ2V0RDNEVGV4dHVyZUluZm8oSVVua25vd24gKmQzZFRleHR1cmUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xpbnQgKndpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMaW50ICpoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gKmZib0Zvcm1hdCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciB2
YWxpZGF0ZVNoYXJlSGFuZGxlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgQ29udGV4dEltcGwgKmNyZWF0ZUNvbnRleHQoY29uc3Qg
Z2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUpIG92ZXJyaWRlOwogCkBAIC0yMDcsNiArMjE2LDcgQEAg
Y2xhc3MgUmVuZGVyZXI5IDogcHVibGljIFJlbmRlcmVyRDNECiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRl
c3RUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRlc3RMZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tGbGlwWSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLApAQCAtMjM2LDggKzI0Niwx
MCBAQCBjbGFzcyBSZW5kZXJlcjkgOiBwdWJsaWMgUmVuZGVyZXJEM0QKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaGFkZXJUeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8RDNEVmFyeWluZz4gJnN0cmVhbU91dFZh
cnlpbmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2VwYXJhdGVk
T3V0cHV0QnVmZmVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBE
M0RDb21waWxlcldvcmthcm91bmRzICZ3b3JrYXJvdW5kcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBhbmdsZTo6Q29tcGlsZXJXb3JrYXJvdW5kc0QzRCAmd29ya2Fy
b3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyRXhlY3V0YWJs
ZUQzRCAqKm91dEV4ZWN0dWFibGUpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBlbnN1cmVITFNM
Q29tcGlsZXJJbml0aWFsaXplZCgpIG92ZXJyaWRlOworCiAgICAgVW5pZm9ybVN0b3JhZ2VEM0Qg
KmNyZWF0ZVVuaWZvcm1TdG9yYWdlKHNpemVfdCBzdG9yYWdlU2l6ZSkgb3ZlcnJpZGU7CiAKICAg
ICAvLyBJbWFnZSBvcGVyYXRpb25zCkBAIC0zMDEsNyArMzEzLDExIEBAIGNsYXNzIFJlbmRlcmVy
OSA6IHB1YmxpYyBSZW5kZXJlckQzRAogICAgIGJvb2wgZ2V0TFVJRChMVUlEICphZGFwdGVyTHVp
ZCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmVydGV4Q29udmVyc2lvblR5cGUgZ2V0VmVydGV4Q29u
dmVyc2lvblR5cGUoZ2w6OlZlcnRleEZvcm1hdFR5cGUgdmVydGV4Rm9ybWF0VHlwZSkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgR0xlbnVtIGdldFZlcnRleENvbXBvbmVudFR5cGUoZ2w6OlZlcnRleEZv
cm1hdFR5cGUgdmVydGV4Rm9ybWF0VHlwZSkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAvLyBXYXJu
aW5nOiB5b3Ugc2hvdWxkIGVuc3VyZSBiaW5kaW5nIHJlYWxseSBtYXRjaGVzIGF0dHJpYi5iaW5k
aW5nSW5kZXggYmVmb3JlIHVzaW5nIHRoaXMKKyAgICAvLyBmdW5jdGlvbi4KICAgICBnbDo6RXJy
b3JPclJlc3VsdDx1bnNpZ25lZCBpbnQ+IGdldFZlcnRleFNwYWNlUmVxdWlyZWQoY29uc3QgZ2w6
OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VmVydGV4QmluZGluZyAmYmlu
ZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0IG92ZXJy
aWRlOwogCkBAIC0zNTksNyArMzc1LDcgQEAgY2xhc3MgUmVuZGVyZXI5IDogcHVibGljIFJlbmRl
cmVyRDNECiAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkV4dGVuc2lvbnMgKm91dEV4dGVuc2lv
bnMsCiAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkxpbWl0YXRpb25zICpvdXRMaW1pdGF0aW9u
cykgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBXb3JrYXJvdW5kc0QzRCBnZW5lcmF0ZVdvcmthcm91
bmRzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYW5nbGU6Oldvcmthcm91bmRzRDNEIGdlbmVyYXRl
V29ya2Fyb3VuZHMoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGdsOjpFcnJvciBzZXRCbGVuZERl
cHRoUmFzdGVyU3RhdGVzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmdsRGF0YSwgR0xlbnVtIGRy
YXdNb2RlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1NoYWRlckNhY2hlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU2hhZGVyQ2FjaGUuaAppbmRleCBj
ZjgzMWM2MmZhNzZkNmExZDhmYzhkNTkyMTE0Y2ZjMjIyMWM1NDY1Li42MzhjMmI1MTdhMDMyZWU5
OTNmZGI3ZmE5NzMwMDQ2MjNhYjU2NDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU2hhZGVyQ2FjaGUuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU2hh
ZGVyQ2FjaGUuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBTaGFkZXJDYWNoZSA6IGFuZ2xlOjpO
b25Db3B5YWJsZQogICAgICAgICB7CiAgICAgICAgICAgICBpdC0+c2Vjb25kLT5BZGRSZWYoKTsK
ICAgICAgICAgICAgICpvdXRTaGFkZXJPYmplY3QgPSBpdC0+c2Vjb25kOwotICAgICAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgICAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKICAgICAgICAgfQogCiAgICAgICAgIFNoYWRlck9iamVjdCAqc2hhZGVyOwpAQCAt
NjgsNyArNjgsNyBAQCBjbGFzcyBTaGFkZXJDYWNoZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAg
ICAgICBtTWFwW2tleV0gPSBzaGFkZXI7CiAKICAgICAgICAgKm91dFNoYWRlck9iamVjdCA9IHNo
YWRlcjsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KIAogICAgIHZvaWQgY2xlYXIoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L1N0YXRlTWFuYWdlcjkuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L1N0YXRlTWFuYWdlcjkuY3BwCmluZGV4IDVmYjY3NWRkYjNmMmRm
NDRlYmEwMTA2ZDlkYzQxNDA3YTAxMGY1MmUuLjEyOTE4OTlkZDNmZWFlODgyNzI4YmY5NTBlNDMy
ZThhMWMxYmFiZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TdGF0ZU1hbmFnZXI5LmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU3RhdGVNYW5hZ2Vy
OS5jcHAKQEAgLTcsNyArNyw3IEBACiAvLyBTdGF0ZU1hbmFnZXI5LmNwcDogRGVmaW5lcyBhIGNs
YXNzIGZvciBjYWNoaW5nIEQzRDkgc3RhdGUKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkOS9TdGF0ZU1hbmFnZXI5LmgiCiAKLSNpbmNsdWRlICJjb21tb24vQml0U2V0SXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJjb21tb24vYml0c2V0X3V0aWxzLmgiCiAjaW5jbHVkZSAiY29tbW9u
L3V0aWxpdGllcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxzLmgiCkBAIC03MCw3
ICs3MCw3IEBAIFN0YXRlTWFuYWdlcjk6On5TdGF0ZU1hbmFnZXI5KCkKIAogdm9pZCBTdGF0ZU1h
bmFnZXI5Ojppbml0aWFsaXplKCkKIHsKLSAgICBtVXNpbmdaZXJvQ29sb3JNYXNrV29ya2Fyb3Vu
ZCA9IG1SZW5kZXJlcjktPmdldFZlbmRvcklkKCkgPT0gVkVORE9SX0lEX0FNRDsKKyAgICBtVXNp
bmdaZXJvQ29sb3JNYXNrV29ya2Fyb3VuZCA9IElzQU1EKG1SZW5kZXJlcjktPmdldFZlbmRvcklk
KCkpOwogfQogCiB2b2lkIFN0YXRlTWFuYWdlcjk6OmZvcmNlU2V0QmxlbmRTdGF0ZSgpCkBAIC00
NzAsNyArNDcwLDcgQEAgZ2w6OkVycm9yIFN0YXRlTWFuYWdlcjk6OnNldEJsZW5kRGVwdGhSYXN0
ZXJTdGF0ZXMoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlLAogICAgICAgICBzZXRTYW1wbGVNYXNr
KHNhbXBsZU1hc2spOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2b2lkIFN0YXRlTWFuYWdlcjk6OnNl
dFZpZXdwb3J0U3RhdGUoY29uc3QgZ2w6OlJlY3RhbmdsZSAmdmlld3BvcnQsCkBAIC03NTAsNyAr
NzUwLDcgQEAgdm9pZCBTdGF0ZU1hbmFnZXI5OjpzZXRTYW1wbGVBbHBoYVRvQ292ZXJhZ2UoYm9v
bCBlbmFibGVkKQogewogICAgIGlmIChlbmFibGVkKQogICAgIHsKLSAgICAgICAgRklYTUUoIlNh
bXBsZSBhbHBoYSB0byBjb3ZlcmFnZSBpcyB1bmltcGxlbWVudGVkLiIpOworICAgICAgICBVTlJF
QUNIQUJMRSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBDaGFpbjkuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBDaGFp
bjkuY3BwCmluZGV4IGNhNjEzYjNjZjUxM2Y0MmNjNjQ0NjYwMzA5ZTAxMmM5OWI4YmY3MWQuLjA5
MzA3MDgzOGRkYWE0MTYzNzk0NDc4Yjc5YjBkNGQ1OThhNGQyYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Td2FwQ2hh
aW45LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvU3dhcENoYWluOS5jcHAKQEAgLTcsMTEgKzcsMTIgQEAKIC8vIFN3YXBDaGFp
bjkuY3BwOiBJbXBsZW1lbnRzIGEgYmFjay1lbmQgc3BlY2lmaWMgY2xhc3MgZm9yIHRoZSBEM0Q5
IHN3YXAgY2hhaW4uCiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Td2Fw
Q2hhaW45LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5
X3V0aWxzLmgiCisKKyNpbmNsdWRlICJsaWJBTkdMRS9mZWF0dXJlcy5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L2Zvcm1hdHV0aWxzOS5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2Q5L05hdGl2ZVdpbmRvdzkuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJlcjkuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9mZWF0
dXJlcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVyOV91
dGlscy5oIgogCiBuYW1lc3BhY2UgcngKIHsKQEAgLTE5LDEwICsyMCwxMSBAQCBuYW1lc3BhY2Ug
cngKIFN3YXBDaGFpbjk6OlN3YXBDaGFpbjkoUmVuZGVyZXI5ICpyZW5kZXJlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgTmF0aXZlV2luZG93OSAqbmF0aXZlV2luZG93LAogICAgICAgICAgICAg
ICAgICAgICAgICBIQU5ETEUgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgIElV
bmtub3duICpkM2RUZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmFja0J1
ZmZlckZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlcHRoQnVmZmVyRm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgb3JpZW50YXRpb24pCi0gICAgOiBT
d2FwQ2hhaW5EM0Qoc2hhcmVIYW5kbGUsIGJhY2tCdWZmZXJGb3JtYXQsIGRlcHRoQnVmZmVyRm9y
bWF0KSwKKyAgICA6IFN3YXBDaGFpbkQzRChzaGFyZUhhbmRsZSwgZDNkVGV4dHVyZSwgYmFja0J1
ZmZlckZvcm1hdCwgZGVwdGhCdWZmZXJGb3JtYXQpLAogICAgICAgbVJlbmRlcmVyKHJlbmRlcmVy
KSwKICAgICAgIG1XaWR0aCgtMSksCiAgICAgICBtSGVpZ2h0KC0xKSwKQEAgLTEwNSwyOCArMTA3
LDM3IEBAIEVHTGludCBTd2FwQ2hhaW45OjpyZXNldChpbnQgYmFja2J1ZmZlcldpZHRoLCBpbnQg
YmFja2J1ZmZlckhlaWdodCwgRUdMaW50IHN3YXBJCiAgICAgU2FmZVJlbGVhc2UobU9mZnNjcmVl
blRleHR1cmUpOwogICAgIFNhZmVSZWxlYXNlKG1EZXB0aFN0ZW5jaWwpOwogCi0gICAgSEFORExF
ICpwU2hhcmVIYW5kbGUgPSBOVUxMOwotICAgIGlmICghbU5hdGl2ZVdpbmRvdy0+Z2V0TmF0aXZl
V2luZG93KCkgJiYgbVJlbmRlcmVyLT5nZXRTaGFyZUhhbmRsZVN1cHBvcnQoKSkKKyAgICBjb25z
dCBkM2Q5OjpUZXh0dXJlRm9ybWF0ICZiYWNrQnVmZmVyZDNkRm9ybWF0SW5mbyA9CisgICAgICAg
IGQzZDk6OkdldFRleHR1cmVGb3JtYXRJbmZvKG1PZmZzY3JlZW5SZW5kZXJUYXJnZXRGb3JtYXQp
OworICAgIGlmIChtRDNEVGV4dHVyZSAhPSBudWxscHRyKQogICAgIHsKLSAgICAgICAgcFNoYXJl
SGFuZGxlID0gJm1TaGFyZUhhbmRsZTsKKyAgICAgICAgcmVzdWx0ID0gbUQzRFRleHR1cmUtPlF1
ZXJ5SW50ZXJmYWNlKCZtT2Zmc2NyZWVuVGV4dHVyZSk7CisgICAgICAgIEFTU0VSVChTVUNDRUVE
RUQocmVzdWx0KSk7CiAgICAgfQotCi0gICAgY29uc3QgZDNkOTo6VGV4dHVyZUZvcm1hdCAmYmFj
a0J1ZmZlcmQzZEZvcm1hdEluZm8gPSBkM2Q5OjpHZXRUZXh0dXJlRm9ybWF0SW5mbyhtT2Zmc2Ny
ZWVuUmVuZGVyVGFyZ2V0Rm9ybWF0KTsKLSAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVRleHR1
cmUoYmFja2J1ZmZlcldpZHRoLCBiYWNrYnVmZmVySGVpZ2h0LCAxLCBEM0RVU0FHRV9SRU5ERVJU
QVJHRVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tCdWZmZXJkM2RG
b3JtYXRJbmZvLnRleEZvcm1hdCwgRDNEUE9PTF9ERUZBVUxULCAmbU9mZnNjcmVlblRleHR1cmUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBTaGFyZUhhbmRsZSk7Ci0gICAg
aWYgKEZBSUxFRChyZXN1bHQpKQorICAgIGVsc2UKICAgICB7Ci0gICAgICAgIEVSUigiQ291bGQg
bm90IGNyZWF0ZSBvZmZzY3JlZW4gdGV4dHVyZTogJTA4bFgiLCByZXN1bHQpOwotICAgICAgICBy
ZWxlYXNlKCk7Ci0KLSAgICAgICAgaWYgKGQzZDk6OmlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCkp
CisgICAgICAgIEhBTkRMRSAqcFNoYXJlSGFuZGxlID0gTlVMTDsKKyAgICAgICAgaWYgKCFtTmF0
aXZlV2luZG93LT5nZXROYXRpdmVXaW5kb3coKSAmJiBtUmVuZGVyZXItPmdldFNoYXJlSGFuZGxl
U3VwcG9ydCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRUdMX0NPTlRFWFRfTE9T
VDsKKyAgICAgICAgICAgIHBTaGFyZUhhbmRsZSA9ICZtU2hhcmVIYW5kbGU7CiAgICAgICAgIH0K
LSAgICAgICAgZWxzZQorCisgICAgICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZShi
YWNrYnVmZmVyV2lkdGgsIGJhY2tidWZmZXJIZWlnaHQsIDEsIEQzRFVTQUdFX1JFTkRFUlRBUkdF
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tCdWZmZXJkM2RG
b3JtYXRJbmZvLnRleEZvcm1hdCwgRDNEUE9PTF9ERUZBVUxULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJm1PZmZzY3JlZW5UZXh0dXJlLCBwU2hhcmVIYW5kbGUpOwor
ICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBFR0xfQkFEX0FMTE9DOworICAgICAgICAgICAgRVJSKCkgPDwgIkNvdWxkIG5vdCBjcmVhdGUg
b2Zmc2NyZWVuIHRleHR1cmUsICIgPDwgZ2w6OkZtdEhSKHJlc3VsdCk7CisgICAgICAgICAgICBy
ZWxlYXNlKCk7CisKKyAgICAgICAgICAgIGlmIChkM2Q5Ojppc0RldmljZUxvc3RFcnJvcihyZXN1
bHQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBFR0xfQ09OVEVYVF9M
T1NUOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHJldHVybiBFR0xfQkFEX0FMTE9DOworICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQogCkBAIC0xOTEsNyArMjAyLDcgQEAgRUdMaW50IFN3YXBDaGFpbjk6OnJlc2V0
KGludCBiYWNrYnVmZmVyV2lkdGgsIGludCBiYWNrYnVmZmVySGVpZ2h0LCBFR0xpbnQgc3dhcEkK
ICAgICAgICAgLy8KICAgICAgICAgLy8gU29tZSBub24tc3dpdGNoYWJsZSBBTUQgR1BVcyAvIGRy
aXZlcnMgZG8gbm90IHJlc3BlY3QgdGhlIHNvdXJjZSByZWN0YW5nbGUgdG8gUHJlc2VudC4gVGhl
cmVmb3JlLCB3aGVuIHRoZSB2ZW5kb3IgSUQKICAgICAgICAgLy8gaXMgbm90IEludGVsLCB0aGUg
YmFjayBidWZmZXIgd2lkdGggbXVzdCBiZSBleGFjdGx5IHRoZSBzYW1lIHdpZHRoIGFzIHRoZSB3
aW5kb3cgb3IgaG9yaXpvbnRhbCBzY2FsaW5nIHdpbGwgb2NjdXIuCi0gICAgICAgIGlmIChtUmVu
ZGVyZXItPmdldFZlbmRvcklkKCkgPT0gVkVORE9SX0lEX0lOVEVMKQorICAgICAgICBpZiAoSXNJ
bnRlbChtUmVuZGVyZXItPmdldFZlbmRvcklkKCkpKQogICAgICAgICB7CiAgICAgICAgICAgICBw
cmVzZW50UGFyYW1ldGVycy5CYWNrQnVmZmVyV2lkdGggPSAocHJlc2VudFBhcmFtZXRlcnMuQmFj
a0J1ZmZlcldpZHRoICsgNjMpIC8gNjQgKiA2NDsKICAgICAgICAgfQpAQCAtMjAyLDcgKzIxMyw4
IEBAIEVHTGludCBTd2FwQ2hhaW45OjpyZXNldChpbnQgYmFja2J1ZmZlcldpZHRoLCBpbnQgYmFj
a2J1ZmZlckhlaWdodCwgRUdMaW50IHN3YXBJCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VS
VChyZXN1bHQgPT0gRDNERVJSX09VVE9GVklERU9NRU1PUlkgfHwgcmVzdWx0ID09IEVfT1VUT0ZN
RU1PUlkgfHwgcmVzdWx0ID09IEQzREVSUl9JTlZBTElEQ0FMTCB8fCByZXN1bHQgPT0gRDNERVJS
X0RFVklDRUxPU1QpOwogCi0gICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgYWRkaXRp
b25hbCBzd2FwIGNoYWlucyBvciBvZmZzY3JlZW4gc3VyZmFjZXM6ICUwOGxYIiwgcmVzdWx0KTsK
KyAgICAgICAgICAgIEVSUigpIDw8ICJDb3VsZCBub3QgY3JlYXRlIGFkZGl0aW9uYWwgc3dhcCBj
aGFpbnMgb3Igb2Zmc2NyZWVuIHN1cmZhY2VzLCAiCisgICAgICAgICAgICAgICAgICA8PCBnbDo6
Rm10SFIocmVzdWx0KTsKICAgICAgICAgICAgIHJlbGVhc2UoKTsKIAogICAgICAgICAgICAgaWYg
KGQzZDk6OmlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCkpCkBAIC0yMzAsNyArMjQyLDggQEAgRUdM
aW50IFN3YXBDaGFpbjk6OnJlc2V0KGludCBiYWNrYnVmZmVyV2lkdGgsIGludCBiYWNrYnVmZmVy
SGVpZ2h0LCBFR0xpbnQgc3dhcEkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHJlc3Vs
dCA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSB8
fCByZXN1bHQgPT0gRDNERVJSX0lOVkFMSURDQUxMKTsKIAotICAgICAgICAgICAgRVJSKCJDb3Vs
ZCBub3QgY3JlYXRlIGRlcHRoc3RlbmNpbCBzdXJmYWNlIGZvciBuZXcgc3dhcCBjaGFpbjogMHgl
MDhYIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIEVSUigpIDw8ICJDb3VsZCBub3QgY3JlYXRlIGRl
cHRoc3RlbmNpbCBzdXJmYWNlIGZvciBuZXcgc3dhcCBjaGFpbiwgIgorICAgICAgICAgICAgICAg
ICAgPDwgZ2w6OkZtdEhSKHJlc3VsdCk7CiAgICAgICAgICAgICByZWxlYXNlKCk7CiAKICAgICAg
ICAgICAgIGlmIChkM2Q5Ojppc0RldmljZUxvc3RFcnJvcihyZXN1bHQpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3
YXBDaGFpbjkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9Td2FwQ2hhaW45LmgKaW5kZXggOTM5ZTIyYWMyNWIyZWY1YzAxODZiNWIzNzEx
NjdhMzhjMzY4MWRlYi4uMTFmZGUxYTU0MDMwODlmMThlMjVmYjZkMWQ0MWUzYWExMjUxYjQwNiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L1N3YXBDaGFpbjkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU3dhcENoYWluOS5oCkBAIC0yNCw2ICsyNCw3IEBA
IGNsYXNzIFN3YXBDaGFpbjkgOiBwdWJsaWMgU3dhcENoYWluRDNECiAgICAgU3dhcENoYWluOShS
ZW5kZXJlcjkgKnJlbmRlcmVyLAogICAgICAgICAgICAgICAgTmF0aXZlV2luZG93OSAqbmF0aXZl
V2luZG93LAogICAgICAgICAgICAgICAgSEFORExFIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAg
ICAgSVVua25vd24gKmQzZFRleHR1cmUsCiAgICAgICAgICAgICAgICBHTGVudW0gYmFja0J1ZmZl
ckZvcm1hdCwKICAgICAgICAgICAgICAgIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCwKICAgICAg
ICAgICAgICAgIEVHTGludCBvcmllbnRhdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVGV4dHVyZVN0b3JhZ2U5
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9UZXh0dXJlU3RvcmFnZTkuY3BwCmluZGV4IGZkNzkyNzUyYWVjMWJmZGI1ZWNjMTk0N2Uy
MjYzMmY2NmZmY2YzY2EuLmEwYTM3OWVjMmM4ZDE5NGFiMDMzNjNjZjdlZWNmYTM2Y2NkZjM5M2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9UZXh0dXJlU3RvcmFnZTkuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9UZXh0dXJlU3RvcmFnZTkuY3BwCkBA
IC0xNTMsNyArMTUzLDYgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlOV8yRDo6Z2V0U3VyZmFj
ZUxldmVsKEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSURpcmVjdDNEU3VyZmFjZTkgKipvdXRTdXJmYWNlKQogewogICAgIEFTU0VS
VCh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCk7Ci0gICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJM
RSh0YXJnZXQpOwogCiAgICAgSURpcmVjdDNEQmFzZVRleHR1cmU5ICpiYXNlVGV4dHVyZSA9IE5V
TEw7CiAgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0QmFzZVRleHR1cmUoJmJhc2VUZXh0dXJlKTsK
QEAgLTE3OCw3ICsxNzcsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2U5XzJEOjpnZXRTdXJm
YWNlTGV2ZWwoR0xlbnVtIHRhcmdldCwKICAgICAgICAgdGV4dHVyZS0+QWRkRGlydHlSZWN0KE5V
TEwpOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2U5XzJEOjpn
ZXRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBSZW5kZXJUYXJnZXRE
M0QgKipvdXRSVCkKQEAgLTIxMyw3ICsyMTIsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2U5
XzJEOjpnZXRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBSZW5kZQog
CiAgICAgQVNTRVJUKG91dFJUKTsKICAgICAqb3V0UlQgPSBtUmVuZGVyVGFyZ2V0c1tpbmRleC5t
aXBJbmRleF07Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTlfMkQ6OmdlbmVy
YXRlTWlwbWFwKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZzb3VyY2VJbmRleCwgY29uc3QgZ2w6Oklt
YWdlSW5kZXggJmRlc3RJbmRleCkKQEAgLTI2NCw3ICsyNjMsNyBAQCBnbDo6RXJyb3IgVGV4dHVy
ZVN0b3JhZ2U5XzJEOjpnZXRCYXNlVGV4dHVyZShJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKipvdXRU
ZXh0dXJlKQogICAgIH0KIAogICAgICpvdXRUZXh0dXJlID0gbVRleHR1cmU7Ci0gICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
IGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTlfMkQ6OmNvcHlUb1N0b3JhZ2UoVGV4dHVyZVN0b3Jh
Z2UgKmRlc3RTdG9yYWdlKQpAQCAtMzAyLDcgKzMwMSw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3Rv
cmFnZTlfMkQ6OmNvcHlUb1N0b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKmRlc3RTdG9yYWdlKQogICAg
ICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIFRleHR1cmVTdG9yYWdlOV9FR0xJbWFnZTo6VGV4
dHVyZVN0b3JhZ2U5X0VHTEltYWdlKFJlbmRlcmVyOSAqcmVuZGVyZXIsCkBAIC0zMjksOCArMzI4
LDYgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlOV9FR0xJbWFnZTo6Z2V0U3VyZmFjZUxldmVs
KEdMZW51bSB0YXJnZXQsCiB7CiAgICAgQVNTRVJUKHRhcmdldCA9PSBHTF9URVhUVVJFXzJEKTsK
ICAgICBBU1NFUlQobGV2ZWwgPT0gMCk7Ci0gICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRSh0
YXJnZXQpOwotICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUobGV2ZWwpOwogCiAgICAgUmVu
ZGVyVGFyZ2V0RDNEICpyZW5kZXJUYXJnZXREM0QgPSBudWxscHRyOwogICAgIGdsOjpFcnJvciBl
cnJvciA9IG1JbWFnZS0+Z2V0UmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXREM0QpOwpAQCAtMzQy
LDcgKzMzOSw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTlfRUdMSW1hZ2U6OmdldFN1cmZh
Y2VMZXZlbChHTGVudW0gdGFyZ2V0LAogICAgIFJlbmRlclRhcmdldDkgKnJlbmRlclRhcmdldDkg
PSBHZXRBczxSZW5kZXJUYXJnZXQ5PihyZW5kZXJUYXJnZXREM0QpOwogCiAgICAgKm91dFN1cmZh
Y2UgPSByZW5kZXJUYXJnZXQ5LT5nZXRTdXJmYWNlKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBU
ZXh0dXJlU3RvcmFnZTlfRUdMSW1hZ2U6OmdldFJlbmRlclRhcmdldChjb25zdCBnbDo6SW1hZ2VJ
bmRleCAmaW5kZXgsCkBAIC0zNTAsNyArMzQ3LDYgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdl
OV9FR0xJbWFnZTo6Z2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwK
IHsKICAgICBBU1NFUlQoIWluZGV4Lmhhc0xheWVyKCkpOwogICAgIEFTU0VSVChpbmRleC5taXBJ
bmRleCA9PSAwKTsKLSAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKGluZGV4KTsKIAogICAg
IHJldHVybiBtSW1hZ2UtPmdldFJlbmRlclRhcmdldChvdXRSVCk7CiB9CkBAIC0zNjgsNyArMzY0
LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlOV9FR0xJbWFnZTo6Z2V0QmFzZVRleHR1cmUo
SURpcmVjdDNEQmFzZVRleHR1cmU5ICoqb3V0VGUKICAgICAqb3V0VGV4dHVyZSA9IHJlbmRlclRh
cmdldDktPmdldFRleHR1cmUoKTsKICAgICBBU1NFUlQoKm91dFRleHR1cmUgIT0gbnVsbHB0cik7
CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlOV9FR0xJbWFnZTo6Z2VuZXJh
dGVNaXBtYXAoY29uc3QgZ2w6OkltYWdlSW5kZXggJiwgY29uc3QgZ2w6OkltYWdlSW5kZXggJikK
QEAgLTQyNCw3ICs0MjAsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2U5X0VHTEltYWdlOjpj
b3B5VG9TdG9yYWdlKFRleHR1cmVTdG9yYWdlICpkZXN0U3RvcmFnZSkKICAgICB9CiAKICAgICBT
YWZlUmVsZWFzZShkZXN0U3VyZmFjZSk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIFRleHR1cmVTdG9yYWdlOV9DdWJl
OjpUZXh0dXJlU3RvcmFnZTlfQ3ViZShSZW5kZXJlcjkgKnJlbmRlcmVyLCBHTGVudW0gaW50ZXJu
YWxmb3JtYXQsIGJvb2wgcmVuZGVyVGFyZ2V0LCBpbnQgc2l6ZSwgaW50IGxldmVscywgYm9vbCBo
aW50TGV2ZWxaZXJvT25seSkKQEAgLTQ4OSw3ICs0ODUsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0
b3JhZ2U5X0N1YmU6OmdldFN1cmZhY2VMZXZlbChHTGVudW0gdGFyZ2V0LAogICAgICAgICB0ZXh0
dXJlLT5BZGREaXJ0eVJlY3QoZmFjZSwgTlVMTCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpF
cnJvciBUZXh0dXJlU3RvcmFnZTlfQ3ViZTo6Z2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFn
ZUluZGV4ICZpbmRleCwgUmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpCkBAIC01MjIsNyArNTE4LDcg
QEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlOV9DdWJlOjpnZXRSZW5kZXJUYXJnZXQoY29uc3Qg
Z2w6OkltYWdlSW5kZXggJmluZGV4LCBSZW4KICAgICB9CiAKICAgICAqb3V0UlQgPSBtUmVuZGVy
VGFyZ2V0W2luZGV4LmxheWVySW5kZXhdOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0
b3JhZ2U5X0N1YmU6OmdlbmVyYXRlTWlwbWFwKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZzb3VyY2VJ
bmRleCwgY29uc3QgZ2w6OkltYWdlSW5kZXggJmRlc3RJbmRleCkKQEAgLTU3Myw3ICs1NjksNyBA
QCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2U5X0N1YmU6OmdldEJhc2VUZXh0dXJlKElEaXJlY3Qz
REJhc2VUZXh0dXJlOSAqKm91dFRleHR1cgogICAgIH0KIAogICAgICpvdXRUZXh0dXJlID0gbVRl
eHR1cmU7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTlfQ3ViZTo6Y29weVRv
U3RvcmFnZShUZXh0dXJlU3RvcmFnZSAqZGVzdFN0b3JhZ2UpCkBAIC02MTUsNyArNjExLDcgQEAg
Z2w6OkVycm9yIFRleHR1cmVTdG9yYWdlOV9DdWJlOjpjb3B5VG9TdG9yYWdlKFRleHR1cmVTdG9y
YWdlICpkZXN0U3RvcmFnZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvVmVydGV4QnVmZmVyOS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4QnVmZmVyOS5jcHAKaW5kZXggYzVjMDdjMzQ4
Y2ZkMmZhNTU2MTI3YWZiYWVhYjg4Njk3MGM0MGRiMy4uMmU5MTMzM2U3ZjdkZTE0YjYzMjBlYzBk
OGVhNDg5ZTk5YzQxZDZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRleEJ1ZmZlcjkuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9WZXJ0ZXhC
dWZmZXI5LmNwcApAQCAtNTMsMTAgKzUzLDExIEBAIGdsOjpFcnJvciBWZXJ0ZXhCdWZmZXI5Ojpp
bml0aWFsaXplKHVuc2lnbmVkIGludCBzaXplLCBib29sIGR5bmFtaWNVc2FnZSkKIAogICAgIG1C
dWZmZXJTaXplID0gc2l6ZTsKICAgICBtRHluYW1pY1VzYWdlID0gZHluYW1pY1VzYWdlOwotICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OwogfQogCiBnbDo6RXJyb3IgVmVydGV4QnVmZmVyOTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNv
bnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZlcnRleEJpbmRpbmcgJmJpbmRpbmcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBj
dXJyZW50VmFsdWVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKQEAgLTY5LDE0ICs3MCwxNCBAQCBnbDo6RXJyb3Ig
VmVydGV4QnVmZmVyOTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRy
aWJ1dGUgJmF0dHJpYgogICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlks
ICJJbnRlcm5hbCB2ZXJ0ZXggYnVmZmVyIGlzIG5vdCBpbml0aWFsaXplZC4iKTsKICAgICB9CiAK
LSAgICBpbnQgaW5wdXRTdHJpZGUgPSBzdGF0aWNfY2FzdDxpbnQ+KGdsOjpDb21wdXRlVmVydGV4
QXR0cmlidXRlU3RyaWRlKGF0dHJpYikpOworICAgIGludCBpbnB1dFN0cmlkZSA9IHN0YXRpY19j
YXN0PGludD4oZ2w6OkNvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJpZGUoYXR0cmliLCBiaW5kaW5n
KSk7CiAgICAgaW50IGVsZW1lbnRTaXplID0gc3RhdGljX2Nhc3Q8aW50PihnbDo6Q29tcHV0ZVZl
cnRleEF0dHJpYnV0ZVR5cGVTaXplKGF0dHJpYikpOwogCiAgICAgRFdPUkQgbG9ja0ZsYWdzID0g
bUR5bmFtaWNVc2FnZSA/IEQzRExPQ0tfTk9PVkVSV1JJVEUgOiAwOwogCiAgICAgdWludDhfdCAq
bWFwUHRyID0gbnVsbHB0cjsKIAotICAgIGF1dG8gZXJyb3JPck1hcFNpemUgPSBtUmVuZGVyZXIt
PmdldFZlcnRleFNwYWNlUmVxdWlyZWQoYXR0cmliLCBjb3VudCwgaW5zdGFuY2VzKTsKKyAgICBh
dXRvIGVycm9yT3JNYXBTaXplID0gbVJlbmRlcmVyLT5nZXRWZXJ0ZXhTcGFjZVJlcXVpcmVkKGF0
dHJpYiwgYmluZGluZywgY291bnQsIGluc3RhbmNlcyk7CiAgICAgaWYgKGVycm9yT3JNYXBTaXpl
LmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIHJldHVybiBlcnJvck9yTWFwU2l6ZS5nZXRFcnJv
cigpOwpAQCAtOTIsNyArOTMsNyBAQCBnbDo6RXJyb3IgVmVydGV4QnVmZmVyOTo6c3RvcmVWZXJ0
ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYgogCiAgICAgY29u
c3QgdWludDhfdCAqaW5wdXQgPSBzb3VyY2VEYXRhOwogCi0gICAgaWYgKGluc3RhbmNlcyA9PSAw
IHx8IGF0dHJpYi5kaXZpc29yID09IDApCisgICAgaWYgKGluc3RhbmNlcyA9PSAwIHx8IGJpbmRp
bmcuZGl2aXNvciA9PSAwKQogICAgIHsKICAgICAgICAgaW5wdXQgKz0gaW5wdXRTdHJpZGUgKiBz
dGFydDsKICAgICB9CkBAIC0xMTMsNyArMTE0LDcgQEAgZ2w6OkVycm9yIFZlcnRleEJ1ZmZlcjk6
OnN0b3JlVmVydGV4QXR0cmlidXRlcyhjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIK
IAogICAgIG1WZXJ0ZXhCdWZmZXItPlVubG9jaygpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHVuc2lnbmVkIGlu
dCBWZXJ0ZXhCdWZmZXI5OjpnZXRCdWZmZXJTaXplKCkgY29uc3QKQEAgLTEyOSw3ICsxMzAsNyBA
QCBnbDo6RXJyb3IgVmVydGV4QnVmZmVyOTo6c2V0QnVmZmVyU2l6ZSh1bnNpZ25lZCBpbnQgc2l6
ZSkKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KIH0KIApAQCAt
MTU1LDcgKzE1Niw3IEBAIGdsOjpFcnJvciBWZXJ0ZXhCdWZmZXI5OjpkaXNjYXJkKCkKICAgICAg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIHVubG9jayBp
bnRlcm5hbCBidWZmZXIgZm9yIGRpc2NhcmRpbmcsIEhSRVNVTFQ6IDB4JTA4eCIsIHJlc3VsdCk7
CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CiB9CiAKIElEaXJlY3QzRFZlcnRleEJ1ZmZlcjkgKiBWZXJ0ZXhCdWZm
ZXI5OjpnZXRCdWZmZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRleEJ1ZmZlcjkuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9WZXJ0ZXhC
dWZmZXI5LmgKaW5kZXggMGQyZDhjMjg4YTE4OThlN2FmYTMzZTU0YzJlN2Y2YTFjYmQxOWFiZC4u
OTgzNjE2ZjRlNDA3NzRiNzljNTYwNmUxZWFkZjEwZTVkNjhkMzc2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRl
eEJ1ZmZlcjkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDkvVmVydGV4QnVmZmVyOS5oCkBAIC0yMiw3ICsyMiwxMCBAQCBjbGFzcyBW
ZXJ0ZXhCdWZmZXI5IDogcHVibGljIFZlcnRleEJ1ZmZlcgogCiAgICAgZ2w6OkVycm9yIGluaXRp
YWxpemUodW5zaWduZWQgaW50IHNpemUsIGJvb2wgZHluYW1pY1VzYWdlKSBvdmVycmlkZTsKIAor
ICAgIC8vIFdhcm5pbmc6IHlvdSBzaG91bGQgZW5zdXJlIGJpbmRpbmcgcmVhbGx5IG1hdGNoZXMg
YXR0cmliLmJpbmRpbmdJbmRleCBiZWZvcmUgdXNpbmcgdGhpcworICAgIC8vIGZ1bmN0aW9uLgog
ICAgIGdsOjpFcnJvciBzdG9yZVZlcnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJp
YnV0ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlZlcnRleEJpbmRpbmcgJmJpbmRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gY3VycmVudFZhbHVlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
OS9WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmNwcAppbmRleCBhZmFlNTE4OGM2YmMzNGQ1ODNhZTBm
M2IwMmZmOTU1MmUzZTc2NjA0Li4xMWYxMTY1NTM1ZDAyMWRlMzA1OTRiZWFhN2QzZjUyNTE5OWRh
YTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDkvVmVydGV4RGVjbGFyYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRleERlY2xh
cmF0aW9uQ2FjaGUuY3BwCkBAIC0xNjUsNyArMTY1LDggQEAgZ2w6OkVycm9yIFZlcnRleERlY2xh
cmF0aW9uQ2FjaGU6OmFwcGx5RGVjbGFyYXRpb24oCiAgICAgICAgICAgICAgICAgbUFwcGxpZWRW
QnNbc3RyZWFtXS5vZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IGdsOjpWZXJ0ZXhGb3JtYXRUeXBlIHZlcnRleGZvcm1hdFR5cGUgPSBnbDo6R2V0VmVydGV4Rm9y
bWF0VHlwZSgqYXR0cmlidXRlc1tpXS5hdHRyaWJ1dGUsIEdMX0ZMT0FUKTsKKyAgICAgICAgICAg
IGdsOjpWZXJ0ZXhGb3JtYXRUeXBlIHZlcnRleGZvcm1hdFR5cGUgPQorICAgICAgICAgICAgICAg
IGdsOjpHZXRWZXJ0ZXhGb3JtYXRUeXBlKCphdHRyaWJ1dGVzW2ldLmF0dHJpYnV0ZSwgR0xfRkxP
QVQpOwogICAgICAgICAgICAgY29uc3QgZDNkOTo6VmVydGV4Rm9ybWF0ICZkM2Q5VmVydGV4SW5m
byA9IGQzZDk6OkdldFZlcnRleEZvcm1hdEluZm8oY2Fwcy5EZWNsVHlwZXMsIHZlcnRleGZvcm1h
dFR5cGUpOwogCiAgICAgICAgICAgICBlbGVtZW50LT5TdHJlYW0gPSBzdGF0aWNfY2FzdDxXT1JE
PihzdHJlYW0pOwpAQCAtMjA2LDcgKzIwNyw3IEBAIGdsOjpFcnJvciBWZXJ0ZXhEZWNsYXJhdGlv
bkNhY2hlOjphcHBseURlY2xhcmF0aW9uKAogICAgICAgICAgICAgICAgIG1MYXN0U2V0VkRlY2wg
PSBlbnRyeS0+dmVydGV4RGVjbGFyYXRpb247CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIzOCw3ICsyMzksNyBAQCBnbDo6RXJy
b3IgVmVydGV4RGVjbGFyYXRpb25DYWNoZTo6YXBwbHlEZWNsYXJhdGlvbigKICAgICBtTGFzdFNl
dFZEZWNsID0gbGFzdENhY2hlLT52ZXJ0ZXhEZWNsYXJhdGlvbjsKICAgICBsYXN0Q2FjaGUtPmxy
dUNvdW50ID0gKyttTWF4THJ1OwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgVmVydGV4RGVjbGFyYXRpb25D
YWNoZTo6bWFya1N0YXRlRGlydHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L2Zvcm1hdHV0aWxzOS5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvZm9ybWF0
dXRpbHM5LmNwcAppbmRleCAwOGY0OTU4ZTY4YzI0ZDc2MmVjYTM3Y2RlNDM3YTE0MDQ1MTg5YTU0
Li5jZmYxMDAwNzNlYWNjODNmNTgyMDVlOThiNjRiOTQwZDU1NTZlYThlIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvZm9y
bWF0dXRpbHM5LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmNwcApAQCAtMjQsMTMgKzI0LDEzIEBAIG5h
bWVzcGFjZSByeAogbmFtZXNwYWNlIGQzZDkKIHsKIAotY29uc3QgRDNERk9STUFUIEQzREZNVF9J
TlRaID0gKChEM0RGT1JNQVQpKE1BS0VGT1VSQ0MoJ0knLCAnTicsICdUJywgJ1onKSkpOwotY29u
c3QgRDNERk9STUFUIEQzREZNVF9OVUxMID0gKChEM0RGT1JNQVQpKE1BS0VGT1VSQ0MoJ04nLCAn
VScsICdMJywgJ0wnKSkpOworY29uc3RleHByIEQzREZPUk1BVCBEM0RGTVRfSU5UWiA9ICgoRDNE
Rk9STUFUKShNQUtFRk9VUkNDKCdJJywgJ04nLCAnVCcsICdaJykpKTsKK2NvbnN0ZXhwciBEM0RG
T1JNQVQgRDNERk1UX05VTEwgPSAoKEQzREZPUk1BVCkoTUFLRUZPVVJDQygnTicsICdVJywgJ0wn
LCAnTCcpKSk7CiAKIC8vIEEgbWFwIHRvIGRldGVybWluZSB0aGUgcGl4ZWwgc2l6ZSBhbmQgbWlw
IGdlbmVyYXRpb24gZnVuY3Rpb24gb2YgYSBnaXZlbiBEM0QgZm9ybWF0CiB0eXBlZGVmIHN0ZDo6
bWFwPEQzREZPUk1BVCwgRDNERm9ybWF0PiBEM0Q5Rm9ybWF0SW5mb01hcDsKIAotRDNERm9ybWF0
OjpEM0RGb3JtYXQoKQorY29uc3RleHByIEQzREZvcm1hdDo6RDNERm9ybWF0KCkKICAgICA6IHBp
eGVsQnl0ZXMoMCksCiAgICAgICBibG9ja1dpZHRoKDApLAogICAgICAgYmxvY2tIZWlnaHQoMCks
CkBAIC00MSw5NyArNDEsMTg4IEBAIEQzREZvcm1hdDo6RDNERm9ybWF0KCkKICAgICAgIGx1bWlu
YW5jZUJpdHMoMCksCiAgICAgICBkZXB0aEJpdHMoMCksCiAgICAgICBzdGVuY2lsQml0cygwKSwK
LSAgICAgIGluZm8obnVsbHB0cikKKyAgICAgIGZvcm1hdElEKGFuZ2xlOjpGb3JtYXQ6OklEOjpO
T05FKQogewogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgSW5zZXJ0RDNERm9ybWF0SW5mbyhEM0Q5
Rm9ybWF0SW5mb01hcCAqbWFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRDNERk9STUFUIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBiaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGJsb2NrV2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgYmxvY2tIZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgcmVkQml0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBncmVlbkJpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgYmx1ZUJpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgYWxwaGFCaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGx1bUJpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgZGVwdGhCaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHN0ZW5jaWxCaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRm9ybWF0OjpJRCBmb3JtYXRJRCkKK2NvbnN0ZXhwciBEM0RGb3JtYXQ6OkQzREZv
cm1hdChHTHVpbnQgYml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
YmxvY2tXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYmxvY2tI
ZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJlZEJpdHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGdyZWVuQml0cywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYmx1ZUJpdHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IGFscGhhQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgbHVtQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgZGVwdGhCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBz
dGVuY2lsQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQ6OklEIGZv
cm1hdElEKQorICAgIDogcGl4ZWxCeXRlcyhiaXRzIC8gOCksCisgICAgICBibG9ja1dpZHRoKGJs
b2NrV2lkdGgpLAorICAgICAgYmxvY2tIZWlnaHQoYmxvY2tIZWlnaHQpLAorICAgICAgcmVkQml0
cyhyZWRCaXRzKSwKKyAgICAgIGdyZWVuQml0cyhncmVlbkJpdHMpLAorICAgICAgYmx1ZUJpdHMo
Ymx1ZUJpdHMpLAorICAgICAgYWxwaGFCaXRzKGFscGhhQml0cyksCisgICAgICBsdW1pbmFuY2VC
aXRzKGx1bUJpdHMpLAorICAgICAgZGVwdGhCaXRzKGRlcHRoQml0cyksCisgICAgICBzdGVuY2ls
Qml0cyhzdGVuY2lsQml0cyksCisgICAgICBmb3JtYXRJRChmb3JtYXRJRCkKIHsKLSAgICBEM0RG
b3JtYXQgaW5mbzsKLSAgICBpbmZvLnBpeGVsQnl0ZXMgPSBiaXRzIC8gODsKLSAgICBpbmZvLmJs
b2NrV2lkdGggPSBibG9ja1dpZHRoOwotICAgIGluZm8uYmxvY2tIZWlnaHQgPSBibG9ja0hlaWdo
dDsKLSAgICBpbmZvLnJlZEJpdHMgPSByZWRCaXRzOwotICAgIGluZm8uZ3JlZW5CaXRzID0gZ3Jl
ZW5CaXRzOwotICAgIGluZm8uYmx1ZUJpdHMgPSBibHVlQml0czsKLSAgICBpbmZvLmFscGhhQml0
cyA9IGFscGhhQml0czsKLSAgICBpbmZvLmx1bWluYW5jZUJpdHMgPSBsdW1CaXRzOwotICAgIGlu
Zm8uZGVwdGhCaXRzID0gZGVwdGhCaXRzOwotICAgIGluZm8uc3RlbmNpbEJpdHMgPSBzdGVuY2ls
Qml0czsKLSAgICBpbmZvLmluZm8gICAgICAgICAgPSAmRm9ybWF0OjpHZXQoZm9ybWF0SUQpOwot
Ci0gICAgbWFwLT5pbnNlcnQoc3RkOjptYWtlX3BhaXIoZm9ybWF0LCBpbmZvKSk7Ci19Ci0KLXN0
YXRpYyBEM0Q5Rm9ybWF0SW5mb01hcCBCdWlsZEQzRDlGb3JtYXRJbmZvTWFwKCkKLXsKLSAgICB1
c2luZyBuYW1lc3BhY2UgYW5nbGU7ICAvLyBGb3IgaW1hZ2UgcmVhZGluZyBhbmQgbWlwbWFwIGdl
bmVyYXRpb24gZnVuY3Rpb25zCi0KLSAgICBEM0Q5Rm9ybWF0SW5mb01hcCBtYXA7Ci0KLSAgICAv
LyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgLy8gICAgICAgICAgICAgICAgICAgICAgIHwgRDNERk9S
TUFUICAgICAgICAgICB8IFMgIHxXIHxIIHwgUiB8IEcgfCBCIHwgQSB8IEwgfCBEIHwgUyB8IEFO
R0xFIGZvcm1hdCAgICAgICAgICAgICAgICAgICB8Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygm
bWFwLCBEM0RGTVRfTlVMTCwgICAgICAgICAgICAwLCAwLCAwLCAgMCwgIDAsICAwLCAgMCwgIDAs
ICAwLCAgMCwgRm9ybWF0OjpJRDo6Tk9ORSAgICAgICAgICAgICAgICApOwotICAgIEluc2VydEQz
REZvcm1hdEluZm8oJm1hcCwgRDNERk1UX1VOS05PV04sICAgICAgICAgMCwgMCwgMCwgIDAsICAw
LCAgMCwgIDAsICAwLCAgMCwgIDAsIEZvcm1hdDo6SUQ6Ok5PTkUgICAgICAgICAgICAgICAgKTsK
LQotICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0w4LCAgICAgICAgICAgICAg
OCwgMSwgMSwgIDAsICAwLCAgMCwgIDAsICA4LCAgMCwgIDAsIEZvcm1hdDo6SUQ6Okw4X1VOT1JN
ICAgICAgICAgICAgKTsKLSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9BOCwg
ICAgICAgICAgICAgIDgsIDEsIDEsICAwLCAgMCwgIDAsICA4LCAgMCwgIDAsICAwLCBGb3JtYXQ6
OklEOjpBOF9VTk9STSAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFw
LCBEM0RGTVRfQThMOCwgICAgICAgICAgIDE2LCAxLCAxLCAgMCwgIDAsICAwLCAgOCwgIDgsICAw
LCAgMCwgRm9ybWF0OjpJRDo6TDhBOF9VTk9STSAgICAgICAgICApOwotICAgIEluc2VydEQzREZv
cm1hdEluZm8oJm1hcCwgRDNERk1UX0E0UjRHNEI0LCAgICAgICAxNiwgMSwgMSwgIDQsICA0LCAg
NCwgIDQsICAwLCAgMCwgIDAsIEZvcm1hdDo6SUQ6OkI0RzRSNEE0X1VOT1JNICAgICAgKTsKLSAg
ICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9BMVI1RzVCNSwgICAgICAgMTYsIDEs
IDEsICA1LCAgNSwgIDUsICAxLCAgMCwgIDAsICAwLCBGb3JtYXQ6OklEOjpCNUc1UjVBMV9VTk9S
TSAgICAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfUjVHNkI1LCAg
ICAgICAgIDE2LCAxLCAxLCAgNSwgIDYsICA1LCAgMCwgIDAsICAwLCAgMCwgRm9ybWF0OjpJRDo6
UjVHNkI1X1VOT1JNICAgICAgICApOwotICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNE
Rk1UX1g4UjhHOEI4LCAgICAgICAzMiwgMSwgMSwgIDgsICA4LCAgOCwgIDAsICAwLCAgMCwgIDAs
IEZvcm1hdDo6SUQ6OkI4RzhSOFg4X1VOT1JNICAgICAgKTsKLSAgICBJbnNlcnREM0RGb3JtYXRJ
bmZvKCZtYXAsIEQzREZNVF9BOFI4RzhCOCwgICAgICAgMzIsIDEsIDEsICA4LCAgOCwgIDgsICA4
LCAgMCwgIDAsICAwLCBGb3JtYXQ6OklEOjpCOEc4UjhBOF9VTk9STSAgICAgICk7Ci0gICAgSW5z
ZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfUjE2RiwgICAgICAgICAgIDE2LCAxLCAxLCAx
NiwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgRm9ybWF0OjpJRDo6UjE2X0ZMT0FUICAgICAgICAg
ICApOwotICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0cxNlIxNkYsICAgICAg
ICAzMiwgMSwgMSwgMTYsIDE2LCAgMCwgIDAsICAwLCAgMCwgIDAsIEZvcm1hdDo6SUQ6OlIxNkcx
Nl9GTE9BVCAgICAgICAgKTsKLSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9B
MTZCMTZHMTZSMTZGLCAgNjQsIDEsIDEsIDE2LCAxNiwgMTYsIDE2LCAgMCwgIDAsICAwLCBGb3Jt
YXQ6OklEOjpSMTZHMTZCMTZBMTZfRkxPQVQgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygm
bWFwLCBEM0RGTVRfUjMyRiwgICAgICAgICAgIDMyLCAxLCAxLCAzMiwgIDAsICAwLCAgMCwgIDAs
ICAwLCAgMCwgRm9ybWF0OjpJRDo6UjMyX0ZMT0FUICAgICAgICAgICApOwotICAgIEluc2VydEQz
REZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0czMlIzMkYsICAgICAgICA2NCwgMSwgMSwgMzIsIDMy
LCAgMCwgIDAsICAwLCAgMCwgIDAsIEZvcm1hdDo6SUQ6OlIzMkczMl9GTE9BVCAgICAgICAgKTsK
LSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9BMzJCMzJHMzJSMzJGLCAxMjgs
IDEsIDEsIDMyLCAzMiwgMzIsIDMyLCAgMCwgIDAsICAwLCBGb3JtYXQ6OklEOjpSMzJHMzJCMzJB
MzJfRkxPQVQgICk7Ci0KLSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9EMTYs
ICAgICAgICAgICAgMTYsIDEsIDEsICAwLCAgMCwgIDAsICAwLCAgMCwgMTYsICAwLCBGb3JtYXQ6
OklEOjpEMTZfVU5PUk0gICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFw
LCBEM0RGTVRfRDI0UzgsICAgICAgICAgIDMyLCAxLCAxLCAgMCwgIDAsICAwLCAgMCwgIDAsIDI0
LCAgOCwgRm9ybWF0OjpJRDo6RDI0X1VOT1JNX1M4X1VJTlQgICApOwotICAgIEluc2VydEQzREZv
cm1hdEluZm8oJm1hcCwgRDNERk1UX0QyNFg4LCAgICAgICAgICAzMiwgMSwgMSwgIDAsICAwLCAg
MCwgIDAsICAwLCAyNCwgIDAsIEZvcm1hdDo6SUQ6OkQxNl9VTk9STSAgICAgICAgICAgKTsKLSAg
ICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9EMzIsICAgICAgICAgICAgMzIsIDEs
IDEsICAwLCAgMCwgIDAsICAwLCAgMCwgMzIsICAwLCBGb3JtYXQ6OklEOjpEMzJfVU5PUk0gICAg
ICAgICAgICk7Ci0KLSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9JTlRaLCAg
ICAgICAgICAgMzIsIDEsIDEsICAwLCAgMCwgIDAsICAwLCAgMCwgMjQsICA4LCBGb3JtYXQ6OklE
OjpEMjRfVU5PUk1fUzhfVUlOVCAgICk7Ci0KLSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAs
IEQzREZNVF9EWFQxLCAgICAgICAgICAgNjQsIDQsIDQsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAs
ICAwLCBGb3JtYXQ6OklEOjpCQzFfUkdCQV9VTk9STV9CTE9DSyk7Ci0gICAgSW5zZXJ0RDNERm9y
bWF0SW5mbygmbWFwLCBEM0RGTVRfRFhUMywgICAgICAgICAgMTI4LCA0LCA0LCAgMCwgIDAsICAw
LCAgMCwgIDAsICAwLCAgMCwgRm9ybWF0OjpJRDo6QkMyX1JHQkFfVU5PUk1fQkxPQ0spOwotICAg
IEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0RYVDUsICAgICAgICAgIDEyOCwgNCwg
NCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsIEZvcm1hdDo6SUQ6OkJDM19SR0JBX1VOT1JN
X0JMT0NLKTsKLSAgICAvLyBjbGFuZy1mb3JtYXQgb24KLQotICAgIHJldHVybiBtYXA7CiB9CiAK
IGNvbnN0IEQzREZvcm1hdCAmR2V0RDNERm9ybWF0SW5mbyhEM0RGT1JNQVQgZm9ybWF0KQogewot
ICAgIHN0YXRpYyBjb25zdCBEM0Q5Rm9ybWF0SW5mb01hcCBpbmZvTWFwID0gQnVpbGREM0Q5Rm9y
bWF0SW5mb01hcCgpOwotICAgIEQzRDlGb3JtYXRJbmZvTWFwOjpjb25zdF9pdGVyYXRvciBpdGVy
ID0gaW5mb01hcC5maW5kKGZvcm1hdCk7Ci0gICAgaWYgKGl0ZXIgIT0gaW5mb01hcC5lbmQoKSkK
KyAgICBpZiAoZm9ybWF0ID09IEQzREZNVF9OVUxMKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGl0
ZXItPnNlY29uZDsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBEM0RGb3JtYXQgaW5mbygwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBGb3JtYXQ6OklEOjpOT05FKTsKKyAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgfQotICAgIGVsc2UKKworICAgIGlmIChmb3JtYXQgPT0gRDNERk1UX0lO
VFopCiAgICAgewotICAgICAgICBzdGF0aWMgY29uc3QgRDNERm9ybWF0IGRlZmF1bHRJbmZvOwot
ICAgICAgICByZXR1cm4gZGVmYXVsdEluZm87CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRDNE
Rm9ybWF0IGluZm8oMzIsIDEsIDEsIDAsIDAsIDAsIDAsIDAsIDI0LCA4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdDo6SUQ6OkQyNF9VTk9STV9TOF9VSU5U
KTsKKyAgICAgICAgcmV0dXJuIGluZm87CiAgICAgfQotfQogCisgICAgc3dpdGNoIChmb3JtYXQp
CisgICAgeworICAgICAgICBjYXNlIEQzREZNVF9VTktOT1dOOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIEQzREZvcm1hdCBpbmZvKDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIEZvcm1hdDo6SUQ6Ok5PTkUpOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKworICAgICAgICBjYXNlIEQzREZNVF9MODoKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBEM0RGb3JtYXQgaW5mbyg4LCAxLCAxLCAwLCAwLCAwLCAwLCA4
LCAwLCAwLCBGb3JtYXQ6OklEOjpMOF9VTk9STSk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEQzREZNVF9BODoKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBEM0RGb3JtYXQgaW5mbyg4LCAxLCAxLCAwLCAwLCAwLCA4LCAw
LCAwLCAwLCBGb3JtYXQ6OklEOjpBOF9VTk9STSk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEQzREZNVF9BOEw4OgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIEQzREZvcm1hdCBpbmZvKDE2LCAxLCAxLCAwLCAwLCAwLCA4
LCA4LCAwLCAwLCBGb3JtYXQ6OklEOjpMOEE4X1VOT1JNKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBEM0RGTVRfQTRSNEc0QjQ6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRDNERm9ybWF0IGluZm8oMTYsIDEsIDEs
IDQsIDQsIDQsIDQsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZvcm1hdDo6SUQ6OkI0RzRSNEE0X1VOT1JNKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRDNERk1UX0ExUjVHNUI1OgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEQzREZvcm1hdCBpbmZvKDE2LCAxLCAx
LCA1LCA1LCA1LCAxLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGb3JtYXQ6OklEOjpCNUc1UjVBMV9VTk9STSk7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEQzREZNVF9SNUc2QjU6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRDNERm9ybWF0IGluZm8oMTYsIDEsIDEs
IDUsIDYsIDUsIDAsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZvcm1hdDo6SUQ6OlI1RzZCNV9VTk9STSk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEQzREZNVF9YOFI4RzhCODoKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBEM0RGb3JtYXQgaW5mbygzMiwgMSwgMSwg
OCwgOCwgOCwgMCwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRm9ybWF0OjpJRDo6QjhHOFI4WDhfVU5PUk0pOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEM0RGTVRfQThSOEc4Qjg6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRDNERm9ybWF0IGluZm8oMzIsIDEsIDEs
IDgsIDgsIDgsIDgsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEZvcm1hdDo6SUQ6OkI4RzhSOEE4X1VOT1JNKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBEM0RGTVRfUjE2RjoKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBEM0RGb3JtYXQgaW5mbygxNiwgMSwgMSwg
MTYsIDAsIDAsIDAsIDAsIDAsIDAsIEZvcm1hdDo6SUQ6OlIxNl9GTE9BVCk7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEQzREZNVF9HMTZSMTZGOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEQzREZvcm1hdCBpbmZvKDMy
LCAxLCAxLCAxNiwgMTYsIDAsIDAsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZvcm1hdDo6SUQ6OlIxNkcxNl9GTE9BVCk7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEQzREZNVF9BMTZCMTZHMTZS
MTZGOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEQzREZvcm1hdCBp
bmZvKDY0LCAxLCAxLCAxNiwgMTYsIDE2LCAxNiwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X0ZMT0FU
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgRDNE
Rk1UX1IzMkY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRDNERm9y
bWF0IGluZm8oMzIsIDEsIDEsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCBGb3JtYXQ6OklEOjpSMzJf
RkxPQVQpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBEM0RGTVRfRzMyUjMyRjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBEM0RGb3JtYXQgaW5mbyg2NCwgMSwgMSwgMzIsIDMyLCAwLCAwLCAwLCAwLCAwLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQ6OklEOjpSMzJHMzJf
RkxPQVQpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBEM0RGTVRfQTMyQjMyRzMyUjMyRjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBEM0RGb3JtYXQgaW5mbygxMjgsIDEsIDEsIDMyLCAzMiwgMzIsIDMyLCAwLCAwLCAw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQ6OklE
OjpSMzJHMzJCMzJBMzJfRkxPQVQpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKworICAgICAgICBjYXNlIEQzREZNVF9EMTY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdGV4cHIgRDNERm9ybWF0IGluZm8oMTYsIDEsIDEsIDAsIDAsIDAsIDAsIDAsIDE2
LCAwLCBGb3JtYXQ6OklEOjpEMTZfVU5PUk0pOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBEM0RGTVRfRDI0Uzg6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgRDNERm9ybWF0IGluZm8oMzIsIDEsIDEsIDAsIDAsIDAsIDAs
IDAsIDI0LCA4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBG
b3JtYXQ6OklEOjpEMjRfVU5PUk1fUzhfVUlOVCk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEQzREZNVF9EMjRYODoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBEM0RGb3JtYXQgaW5mbygzMiwgMSwgMSwgMCwgMCwgMCwg
MCwgMCwgMjQsIDAsIEZvcm1hdDo6SUQ6OkQxNl9VTk9STSk7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEQzREZNVF9EMzI6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRDNERm9ybWF0IGluZm8oMzIsIDEsIDEsIDAsIDAs
IDAsIDAsIDAsIDMyLCAwLCBGb3JtYXQ6OklEOjpEMzJfVU5PUk0pOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKworICAgICAgICBjYXNlIEQzREZNVF9EWFQxOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEQzREZvcm1hdCBpbmZvKDY0LCA0LCA0
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGb3JtYXQ6OklEOjpCQzFfUkdCQV9VTk9STV9CTE9DSyk7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEQzREZNVF9EWFQzOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEQzREZvcm1hdCBpbmZvKDEyOCwg
NCwgNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRm9ybWF0OjpJRDo6QkMyX1JHQkFfVU5PUk1fQkxPQ0spOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEM0RGTVRfRFhUNToK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBEM0RGb3JtYXQgaW5mbygx
MjgsIDQsIDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZvcm1hdDo6SUQ6OkJDM19SR0JBX1VOT1JNX0JMT0NLKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CiAKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBEM0RGb3JtYXQgZGVmYXVsdElu
Zm87CisgICAgICAgICAgICByZXR1cm4gZGVmYXVsdEluZm87CisgICAgICAgIH0KKyAgICB9Cit9
CiAKIHR5cGVkZWYgc3RkOjpwYWlyPEdMaW50LCBJbml0aWFsaXplVGV4dHVyZURhdGFGdW5jdGlv
bj4gSW50ZXJuYWxGb3JtYXRJbml0aWFsemVyUGFpcjsKIHR5cGVkZWYgc3RkOjptYXA8R0xpbnQs
IEluaXRpYWxpemVUZXh0dXJlRGF0YUZ1bmN0aW9uPiBJbnRlcm5hbEZvcm1hdEluaXRpYWx6ZXJN
YXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmgKaW5kZXggMjkzN2Ux
NGU3NjNiMmU1MGJjMTE5ZjQ2OTJjN2Q5NmM0MGRjZmVmOC4uODI4MjUyZDMzMGNkOTNiZWY5NTMz
MzEzNTRlMzQ1NjdiYjY1ZWY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L2Zvcm1hdHV0aWxzOS5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9mb3JtYXR1
dGlsczkuaApAQCAtMjksNyArMjksMjAgQEAgbmFtZXNwYWNlIGQzZDkKIAogc3RydWN0IEQzREZv
cm1hdAogewotICAgIEQzREZvcm1hdCgpOworICAgIGNvbnN0ZXhwciBEM0RGb3JtYXQoKTsKKyAg
ICBjb25zdGV4cHIgRDNERm9ybWF0KEdMdWludCBwaXhlbEJ5dGVzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGJsb2NrV2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgYmxvY2tIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcmVkQml0cywK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBncmVlbkJpdHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgYmx1ZUJpdHMsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgYWxwaGFCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGx1bWluYW5jZUJp
dHMsCisgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZGVwdGhCaXRzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHN0ZW5jaWxCaXRzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OkZvcm1hdDo6SUQgZm9ybWF0SUQpOworCisgICAgY29uc3QgYW5nbGU6OkZvcm1h
dCAmaW5mbygpIGNvbnN0IHsgcmV0dXJuIGFuZ2xlOjpGb3JtYXQ6OkdldChmb3JtYXRJRCk7IH0K
IAogICAgIEdMdWludCBwaXhlbEJ5dGVzOwogICAgIEdMdWludCBibG9ja1dpZHRoOwpAQCAtNDQs
NyArNTcsNyBAQCBzdHJ1Y3QgRDNERm9ybWF0CiAgICAgR0x1aW50IGRlcHRoQml0czsKICAgICBH
THVpbnQgc3RlbmNpbEJpdHM7CiAKLSAgICBjb25zdCBhbmdsZTo6Rm9ybWF0ICppbmZvOworICAg
IGFuZ2xlOjpGb3JtYXQ6OklEIGZvcm1hdElEOwogfTsKIAogY29uc3QgRDNERm9ybWF0ICZHZXRE
M0RGb3JtYXRJbmZvKEQzREZPUk1BVCBmb3JtYXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVyOV91dGls
cy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvcmVuZGVyZXI5X3V0aWxzLmNwcAppbmRleCAxODgzNjM2YTMxYzY0MTQ2MTQyMTFiYjMx
MjI0YThkMmM4YzYzNzQ5Li5mYWNhNjFmYTVmMTliZGM3NjRmMWZhY2JlMmRjODVmYTVlYTA1ODhk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxzLmNwcApA
QCAtMTcsNyArMTcsOSBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L2Zv
cm1hdHV0aWxzOS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRl
clRhcmdldDkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJE
M0QuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvV29ya2Fyb3VuZHNEM0QuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kcml2ZXJfdXRpbHMuaCIKKyNpbmNsdWRlICJw
bGF0Zm9ybS9QbGF0Zm9ybS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dvcmthcm91bmRzRDNELmgi
CiAKICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9zeXN0ZW1pbmZvL1N5c3RlbUluZm8uaCIKIApAQCAt
MzA2LDcgKzMwOCw3IEBAIEdMc2l6ZWkgR2V0U2FtcGxlc0NvdW50KEQzRE1VTFRJU0FNUExFX1RZ
UEUgdHlwZSkKIAogYm9vbCBJc0Zvcm1hdENoYW5uZWxFcXVpdmFsZW50KEQzREZPUk1BVCBkM2Rm
b3JtYXQsIEdMZW51bSBmb3JtYXQpCiB7Ci0gICAgR0xlbnVtIGludGVybmFsRm9ybWF0ICA9IGQz
ZDk6OkdldEQzREZvcm1hdEluZm8oZDNkZm9ybWF0KS5pbmZvLT5nbEludGVybmFsRm9ybWF0Owor
ICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCAgPSBkM2Q5OjpHZXREM0RGb3JtYXRJbmZvKGQzZGZv
cm1hdCkuaW5mbygpLmdsSW50ZXJuYWxGb3JtYXQ7CiAgICAgR0xlbnVtIGNvbnZlcnRlZEZvcm1h
dCA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJuYWxGb3JtYXQpLmZvcm1hdDsKICAg
ICByZXR1cm4gY29udmVydGVkRm9ybWF0ID09IGZvcm1hdDsKIH0KQEAgLTQ1OSw2ICs0NjEsOCBA
QCB2b2lkIEdlbmVyYXRlQ2FwcyhJRGlyZWN0M0Q5ICpkM2Q5LAogCiAgICAgLy8gVmVydGV4IHNo
YWRlciBsaW1pdHMKICAgICBjYXBzLT5tYXhWZXJ0ZXhBdHRyaWJ1dGVzID0gMTY7CisgICAgLy8g
VmVydGV4IEF0dHJpYiBCaW5kaW5nIG5vdCBzdXBwb3J0ZWQuCisgICAgY2Fwcy0+bWF4VmVydGV4
QXR0cmliQmluZGluZ3MgPSBjYXBzLT5tYXhWZXJ0ZXhBdHRyaWJ1dGVzOwogCiAgICAgY29uc3Qg
c2l6ZV90IE1BWF9WRVJURVhfQ09OU1RBTlRfVkVDVE9SU19EM0Q5ID0gMjU2OwogICAgIGNhcHMt
Pm1heFZlcnRleFVuaWZvcm1WZWN0b3JzID0KQEAgLTU0MCwxMiArNTQ0LDEyIEBAIHZvaWQgR2Vu
ZXJhdGVDYXBzKElEaXJlY3QzRDkgKmQzZDksCiAgICAgewogICAgICAgICAvLyBBVEkgY2FyZHMg
b24gWFAgaGF2ZSBwcm9ibGVtcyB3aXRoIG5vbi1wb3dlci1vZi10d28gdGV4dHVyZXMuCiAgICAg
ICAgIGV4dGVuc2lvbnMtPnRleHR1cmVOUE9UID0gIShkZXZpY2VDYXBzLlRleHR1cmVDYXBzICYg
RDNEUFRFWFRVUkVDQVBTX1BPVzIpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICEoZGV2aWNlQ2Fwcy5UZXh0dXJlQ2FwcyAmIEQzRFBURVhUVVJFQ0FQU19DVUJFTUFQ
X1BPVzIpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEoZGV2aWNl
Q2Fwcy5UZXh0dXJlQ2FwcyAmIEQzRFBURVhUVVJFQ0FQU19OT05QT1cyQ09ORElUSU9OQUwpICYm
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEoIWlzV2luZG93c1Zpc3Rh
T3JHcmVhdGVyKCkgJiYgYWRhcHRlcklkLlZlbmRvcklkID09IFZFTkRPUl9JRF9BTUQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEoZGV2aWNlQ2Fwcy5UZXh0dXJlQ2FwcyAm
IEQzRFBURVhUVVJFQ0FQU19DVUJFTUFQX1BPVzIpICYmCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIShkZXZpY2VDYXBzLlRleHR1cmVDYXBzICYgRDNEUFRFWFRVUkVDQVBTX05P
TlBPVzJDT05ESVRJT05BTCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAh
KCFpc1dpbmRvd3NWaXN0YU9yR3JlYXRlcigpICYmIElzQU1EKGFkYXB0ZXJJZC5WZW5kb3JJZCkp
OwogCiAgICAgICAgIC8vIERpc2FibGUgZGVwdGggdGV4dHVyZSBzdXBwb3J0IG9uIEFNRCBjYXJk
cyAoU2VlIEFOR0xFIGlzc3VlIDgzOSkKLSAgICAgICAgaWYgKGFkYXB0ZXJJZC5WZW5kb3JJZCA9
PSBWRU5ET1JfSURfQU1EKQorICAgICAgICBpZiAoSXNBTUQoYWRhcHRlcklkLlZlbmRvcklkKSkK
ICAgICAgICAgewogICAgICAgICAgICAgZXh0ZW5zaW9ucy0+ZGVwdGhUZXh0dXJlcyA9IGZhbHNl
OwogICAgICAgICB9CkBAIC01OTQsNiArNTk4LDcgQEAgdm9pZCBHZW5lcmF0ZUNhcHMoSURpcmVj
dDNEOSAqZDNkOSwKICAgICBleHRlbnNpb25zLT51bnBhY2tTdWJpbWFnZSAgICAgICAgID0gdHJ1
ZTsKICAgICBleHRlbnNpb25zLT5wYWNrU3ViaW1hZ2UgICAgICAgICAgID0gdHJ1ZTsKICAgICBl
eHRlbnNpb25zLT5zeW5jUXVlcnkgICAgICAgICAgICAgID0gZXh0ZW5zaW9ucy0+ZmVuY2U7Cisg
ICAgZXh0ZW5zaW9ucy0+Y29weVRleHR1cmUgICAgICAgICAgICA9IHRydWU7CiAKICAgICAvLyBE
M0Q5IGhhcyBubyBjb25jZXB0IG9mIHNlcGFyYXRlIG1hc2tzIGFuZCByZWZzIGZvciBmcm9udCBh
bmQgYmFjayBmYWNlcyBpbiB0aGUgZGVwdGggc3RlbmNpbAogICAgIC8vIHN0YXRlLgpAQCAtNjQw
LDkgKzY0NSw5IEBAIHZvaWQgTWFrZVZhbGlkU2l6ZShib29sIGlzSW1hZ2UsIEQzREZPUk1BVCBm
b3JtYXQsIEdMc2l6ZWkgKnJlcXVlc3RXaWR0aCwgR0xzaXplCiAgICAgKmxldmVsT2Zmc2V0ID0g
dXBzYW1wbGVDb3VudDsKIH0KIAotV29ya2Fyb3VuZHNEM0QgR2VuZXJhdGVXb3JrYXJvdW5kcygp
CithbmdsZTo6V29ya2Fyb3VuZHNEM0QgR2VuZXJhdGVXb3JrYXJvdW5kcygpCiB7Ci0gICAgV29y
a2Fyb3VuZHNEM0Qgd29ya2Fyb3VuZHM7CisgICAgYW5nbGU6Oldvcmthcm91bmRzRDNEIHdvcmth
cm91bmRzOwogICAgIHdvcmthcm91bmRzLm1ydFBlcmZXb3JrYXJvdW5kID0gdHJ1ZTsKICAgICB3
b3JrYXJvdW5kcy5zZXREYXRhRmFzdGVyVGhhbkltYWdlVXBsb2FkID0gZmFsc2U7CiAgICAgd29y
a2Fyb3VuZHMudXNlSW5zdGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRpb24gPSBmYWxzZTsKQEAgLTY1
MCw2ICs2NTUsMTAgQEAgV29ya2Fyb3VuZHNEM0QgR2VuZXJhdGVXb3JrYXJvdW5kcygpCiAgICAg
Ly8gVE9ETyhqbWFkaWxsKTogRGlzYWJsZSB3b3JrYXJvdW5kIHdoZW4gd2UgaGF2ZSBhIGZpeGVk
IGNvbXBpbGVyIERMTC4KICAgICB3b3JrYXJvdW5kcy5leHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lv
bnMgPSB0cnVlOwogCisgICAgLy8gQ2FsbCBwbGF0Zm9ybSBob29rcyBmb3IgdGVzdGluZyBvdmVy
cmlkZXMuCisgICAgYXV0byAqcGxhdGZvcm0gPSBBTkdMRVBsYXRmb3JtQ3VycmVudCgpOworICAg
IHBsYXRmb3JtLT5vdmVycmlkZVdvcmthcm91bmRzRDNEKHBsYXRmb3JtLCAmd29ya2Fyb3VuZHMp
OworCiAgICAgcmV0dXJuIHdvcmthcm91bmRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0
aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvcmVuZGVyZXI5X3V0aWxzLmgKaW5kZXggZmY2ZDU1ZmQ1OWFjZWEyODk2OWE4ZTZhMjdk
MjUyM2ZjMjNmMzYxNC4uZWFmMzEwODRjZTgxMWQwMWEwMzI2MzM3OWU5Njc2MDI3YWNjZjBmMCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L3JlbmRlcmVyOV91dGlscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9yZW5kZXJlcjlfdXRpbHMuaApAQCAtMTMs
NiArMTMsNyBAQAogI2luY2x1ZGUgImNvbW1vbi9Db2xvci5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L0NhcHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5oIgorI2luY2x1ZGUgInBsYXRmb3Jt
L1dvcmthcm91bmRzRDNELmgiCiAKIG5hbWVzcGFjZSBnbAogewpAQCAtMjIsNyArMjMsNiBAQCBj
bGFzcyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ7CiBuYW1lc3BhY2UgcngKIHsKIGNsYXNzIFJlbmRl
clRhcmdldDk7Ci1zdHJ1Y3QgV29ya2Fyb3VuZHNEM0Q7CiAKIG5hbWVzcGFjZSBnbF9kM2Q5CiB7
CkBAIC04Nyw5ICs4Nyw5IEBAIGlubGluZSBib29sIGlzRGV2aWNlTG9zdEVycm9yKEhSRVNVTFQg
ZXJyb3JDb2RlKQogICAgIH0KIH0KIAotV29ya2Fyb3VuZHNEM0QgR2VuZXJhdGVXb3JrYXJvdW5k
cygpOworYW5nbGU6Oldvcmthcm91bmRzRDNEIEdlbmVyYXRlV29ya2Fyb3VuZHMoKTsKIH0KIAot
fQorfSAgLy8gbmFtZXNwYWNlIGQzZDkKIAogI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRFUkVSX0Qz
RF9EM0Q5X1JFTkRFUkVSOVVUSUxTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9CbGl0LnBzIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRl
cnMvQmxpdC5wcwppbmRleCBkYzM1N2QwZmE2YTRmZDUxMGI1ODhjMzc5Y2IyMzQyOTQyNjllYzk2
Li4wYzU2NWMzZWNkMzVmNWFmOTFjNzgzYWZkOWU3NTQzNDhiNzljMTQ4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hh
ZGVycy9CbGl0LnBzCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL0JsaXQucHMKQEAgLTI0LDYgKzI0LDIzIEBAIGZsb2F0
NCBsdW1pbmFuY2VwcyhmbG9hdDQgdGV4Y29vcmQgOiBURVhDT09SRDApIDogQ09MT1IKICAgICBy
ZXR1cm4gKHRleDJEKHRleCwgdGV4Y29vcmQueHkpLnh3ICogbXVsdC54dyArIGFkZC54dykueHh4
eTsKIH07CiAKK2Zsb2F0NCBsdW1pbmFuY2VwcmVtdWx0cHMoZmxvYXQ0IHRleGNvb3JkIDogVEVY
Q09PUkQwKSA6IENPTE9SCit7CisgICAgZmxvYXQ0IGx1bWEgPSAodGV4MkQodGV4LCB0ZXhjb29y
ZC54eSkueHcgKiBtdWx0Lnh3ICsgYWRkLnh3KS54eHh5OworICAgIGx1bWEucmdiICo9IGx1bWEu
YTsKKyAgICByZXR1cm4gbHVtYTsKK307CisKK2Zsb2F0NCBsdW1pbmFuY2V1bm11bHRwcyhmbG9h
dDQgdGV4Y29vcmQgOiBURVhDT09SRDApIDogQ09MT1IKK3sKKyAgICBmbG9hdDQgbHVtYSA9ICh0
ZXgyRCh0ZXgsIHRleGNvb3JkLnh5KS54dyAqIG11bHQueHcgKyBhZGQueHcpLnh4eHk7CisgICAg
aWYgKGx1bWEuYSA+IDAuMGYpCisgICAgeworICAgICAgICBsdW1hLnJnYiAvPSBsdW1hLmE7Cisg
ICAgfQorICAgIHJldHVybiBsdW1hOworfTsKKwogLy8gUkdCL0EgQ29tcG9uZW50IE1hc2sgUGl4
ZWwgU2hhZGVyCiAvLyBQZXJmb3JtcyBhIG1hZCBvcGVyYXRpb24gdXNpbmcgdGhlIHRleHR1cmUn
cyBSR0JBIGRhdGEgd2l0aCBtdWx0Lnh5encgYW5kIGFkZC54eXp3LgogLy8gUmV0dXJucyBkYXRh
IGluIHRoZSBmb3JtIG9mIHJnYmEKQEAgLTMxLDMgKzQ4LDIwIEBAIGZsb2F0NCBjb21wb25lbnRt
YXNrcHMoZmxvYXQ0IHRleGNvb3JkIDogVEVYQ09PUkQwKSA6IENPTE9SCiB7CiAgICAgcmV0dXJu
IHRleDJEKHRleCwgdGV4Y29vcmQueHkpICogbXVsdCArIGFkZDsKIH07CisKK2Zsb2F0NCBjb21w
b25lbnRtYXNrcHJlbXVsdHBzKGZsb2F0NCB0ZXhjb29yZCA6IFRFWENPT1JEMCkgOiBDT0xPUgor
eworICAgIGZsb2F0NCBjb2xvciA9IHRleDJEKHRleCwgdGV4Y29vcmQueHkpICogbXVsdCArIGFk
ZDsKKyAgICBjb2xvci5yZ2IgKj0gY29sb3IuYTsKKyAgICByZXR1cm4gY29sb3I7Cit9OworCitm
bG9hdDQgY29tcG9uZW50bWFza3VubXVsdHBzKGZsb2F0NCB0ZXhjb29yZCA6IFRFWENPT1JEMCkg
OiBDT0xPUgoreworICAgIGZsb2F0NCBjb2xvciA9ICB0ZXgyRCh0ZXgsIHRleGNvb3JkLnh5KSAq
IG11bHQgKyBhZGQ7CisgICAgaWYgKGNvbG9yLmEgPiAwLjBmKQorICAgIHsKKyAgICAgICAgY29s
b3IucmdiIC89IGNvbG9yLmE7CisgICAgfQorICAgIHJldHVybiBjb2xvcjsKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvc2hhZGVycy9CbGl0LnZzIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvQmxpdC52cwppbmRleCAzYTM2OTgwYjkzNWI1MGZh
OWFlMGI2YjBmNGE1MGUzOTM5ZDBkNTExLi5jNjgzOTVhNjljNGNlNDRjNzlhM2UxZDBkMDZkNWZk
YmE1ZjVmMDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9CbGl0LnZzCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL0JsaXQudnMK
QEAgLTExLDYgKzExLDcgQEAgc3RydWN0IFZTX09VVFBVVAogfTsKIAogdW5pZm9ybSBmbG9hdDQg
aGFsZlBpeGVsU2l6ZSA6IGMwOwordW5pZm9ybSBmbG9hdDQgdGV4Y29vcmRPZmZzZXQgOiBjMTsK
IAogLy8gU3RhbmRhcmQgVmVydGV4IFNoYWRlcgogLy8gSW5wdXQgMCBpcyB0aGUgaG9tb2dlbm91
cyBwb3NpdGlvbi4KQEAgLTIyLDIyICsyMyw3IEBAIFZTX09VVFBVVCBzdGFuZGFyZHZzKGluIGZs
b2F0NCBwb3NpdGlvbiA6IFBPU0lUSU9OKQogICAgIFZTX09VVFBVVCBPdXQ7CiAKICAgICBPdXQu
cG9zaXRpb24gPSBwb3NpdGlvbiArIGhhbGZQaXhlbFNpemU7Ci0gICAgT3V0LnRleGNvb3JkID0g
cG9zaXRpb24gKiBmbG9hdDQoMC41LCAtMC41LCAxLjAsIDEuMCkgKyBmbG9hdDQoMC41LCAwLjUs
IDAsIDApOwotCi0gICAgcmV0dXJuIE91dDsKLX07Ci0KLS8vIEZsaXAgWSBWZXJ0ZXggU2hhZGVy
Ci0vLyBJbnB1dCAwIGlzIHRoZSBob21vZ2Vub3VzIHBvc2l0aW9uLgotLy8gT3V0cHV0cyB0aGUg
aG9tb2dlbm91cyBwb3NpdGlvbiBhcy1pcy4KLS8vIE91dHB1dHMgYSB0ZXggY29vcmQgd2l0aCAo
MCwxKSBpbiB0aGUgdXBwZXItbGVmdCBjb3JuZXIgb2YgdGhlIHNjcmVlbiBhbmQgKDEsMCkgaW4g
dGhlIGJvdHRvbSByaWdodC4KLS8vIEMwLlhZIG11c3QgYmUgdGhlIGhhbGYtcGl4ZWwgd2lkdGgg
YW5kIGhlaWdodC4gQzAuWlcgbXVzdCBiZSAwLgotVlNfT1VUUFVUIGZsaXB5dnMoaW4gZmxvYXQ0
IHBvc2l0aW9uIDogUE9TSVRJT04pCi17Ci0gICAgVlNfT1VUUFVUIE91dDsKLQotICAgIE91dC5w
b3NpdGlvbiA9IHBvc2l0aW9uICsgaGFsZlBpeGVsU2l6ZTsKLSAgICBPdXQudGV4Y29vcmQgPSBw
b3NpdGlvbiAqIGZsb2F0NCgwLjUsIDAuNSwgMS4wLCAxLjApICsgZmxvYXQ0KDAuNSwgMC41LCAw
LCAwKTsKKyAgICBPdXQudGV4Y29vcmQgPSAoKHBvc2l0aW9uICogZmxvYXQ0KDAuNSwgLTAuNSwg
MS4wLCAxLjApICsgZmxvYXQ0KDAuNSwgMC41LCAwLCAwKSkgKiBmbG9hdDQodGV4Y29vcmRPZmZz
ZXQuencsIDEuMCwgMS4wKSkgKyBmbG9hdDQodGV4Y29vcmRPZmZzZXQueHksIDAsIDApOwogCiAg
ICAgcmV0dXJuIE91dDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9jb21wb25lbnRt
YXNrcHJlbXVsdHBzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9jb21wb25lbnRtYXNrcHJlbXVsdHBzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmFhZGFiNmE0ZTNkZWJhZjQ5ZWRiYzc4NjdhMzUwNzc3NGYxMmQ5ZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2NvbXBvbmVudG1hc2twcmVtdWx0cHMuaApA
QCAtMCwwICsxLDUwIEBACisjaWYgMA0KKy8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAo
UikgSExTTCBTaGFkZXIgQ29tcGlsZXIgNi4zLjk2MDAuMTYzODQNCisvLw0KKy8vIFBhcmFtZXRl
cnM6DQorLy8NCisvLyAgIGZsb2F0NCBhZGQ7DQorLy8gICBmbG9hdDQgbXVsdDsNCisvLyAgIHNh
bXBsZXIyRCB0ZXg7DQorLy8NCisvLw0KKy8vIFJlZ2lzdGVyczoNCisvLw0KKy8vICAgTmFtZSAg
ICAgICAgIFJlZyAgIFNpemUNCisvLyAgIC0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tDQorLy8gICBt
dWx0ICAgICAgICAgYzAgICAgICAgMQ0KKy8vICAgYWRkICAgICAgICAgIGMxICAgICAgIDENCisv
LyAgIHRleCAgICAgICAgICBzMCAgICAgICAxDQorLy8NCisNCisgICAgcHNfMl8wDQorICAgIGRj
bCB0MC54eQ0KKyAgICBkY2xfMmQgczANCisgICAgdGV4bGQgcjAsIHQwLCBzMA0KKyAgICBtb3Yg
cjEsIGMwDQorICAgIG1hZCByMCwgcjAsIHIxLCBjMQ0KKyAgICBtdWwgcjAueHl6LCByMC53LCBy
MA0KKyAgICBtb3Ygb0MwLCByMA0KKw0KKy8vIGFwcHJveGltYXRlbHkgNSBpbnN0cnVjdGlvbiBz
bG90cyB1c2VkICgxIHRleHR1cmUsIDQgYXJpdGhtZXRpYykNCisjZW5kaWYNCisNCitjb25zdCBC
WVRFIGdfcHMyMF9jb21wb25lbnRtYXNrcHJlbXVsdHBzW10gPSB7DQorICAgIDAsICAgMiwgICAy
NTUsIDI1NSwgMjU0LCAyNTUsIDUwLCAgMCwgICA2NywgIDg0LCAgNjUsICA2NiwgIDI4LCAgMCwg
ICAwLCAgIDAsICAgMTQzLCAwLCAgIDAsDQorICAgIDAsICAgMCwgICAyLCAgIDI1NSwgMjU1LCAz
LCAgIDAsICAgMCwgICAwLCAgIDI4LCAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwg
ICAxMzYsIDAsDQorICAgIDAsICAgMCwgICA4OCwgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgICAx
LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICA5MiwgIDAsICAgMCwgICAwLCAgIDAsDQorICAg
IDAsICAgMCwgICAwLCAgIDEwOCwgMCwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgICAx
LCAgIDAsICAgMCwgICAwLCAgIDkyLCAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMTEzLCAwLCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAw
LCAgIDAsICAgMTIwLCAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA5Nywg
IDEwMCwgMTAwLCAwLCAgIDEsICAgMCwgICAzLCAgIDAsICAgMSwgICAwLCAgIDQsICAgMCwgICAx
LCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEwOSwgMTE3LCAxMDgs
IDExNiwgMCwgICAxMTYsIDEwMSwgMTIwLCAwLCAgIDE3MSwgMTcxLCAxNzEsIDQsDQorICAgIDAs
ICAgMTIsICAwLCAgIDEsICAgMCwgICAxLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDExMiwgMTE1LCA5NSwgIDUwLA0KKyAgICA5NSwgIDQ4LCAgMCwgICA3
NywgIDEwNSwgOTksICAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgMTE2LCAzMiwgIDQwLCAgODIs
ICA0MSwgIDMyLCAgNzIsICA3NiwNCisgICAgODMsICA3NiwgIDMyLCAgODMsICAxMDQsIDk3LCAg
MTAwLCAxMDEsIDExNCwgMzIsICA2NywgIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEsIDEx
NCwgMzIsDQorICAgIDU0LCAgNDYsICA1MSwgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsICA0Niwg
IDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIsICAwLCAgIDE3MSwgMTcxLCAxNzEsIDMxLA0KKyAgICAw
LCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgICAxMjgsIDAsICAgMCwgICAzLCAgIDE3NiwgMzEs
ICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgICAxNDQsDQorICAgIDAsICAgOCwgICAxNSwg
IDE2MCwgNjYsICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMTUsICAxMjgsIDAsICAgMCwgICAy
MjgsIDE3NiwgMCwgICA4LCAgIDIyOCwNCisgICAgMTYwLCAxLCAgIDAsICAgMCwgICAyLCAgIDEs
ICAgMCwgICAxNSwgIDEyOCwgMCwgICAwLCAgIDIyOCwgMTYwLCA0LCAgIDAsICAgMCwgICA0LCAg
IDAsICAgMCwNCisgICAgMTUsICAxMjgsIDAsICAgMCwgICAyMjgsIDEyOCwgMSwgICAwLCAgIDIy
OCwgMTI4LCAxLCAgIDAsICAgMjI4LCAxNjAsIDUsICAgMCwgICAwLCAgIDMsICAgMCwNCisgICAg
MCwgICA3LCAgIDEyOCwgMCwgICAwLCAgIDI1NSwgMTI4LCAwLCAgIDAsICAgMjI4LCAxMjgsIDEs
ICAgMCwgICAwLCAgIDIsICAgMCwgICA4LCAgIDE1LCAgMTI4LA0KKyAgICAwLCAgIDAsICAgMjI4
LCAxMjgsIDI1NSwgMjU1LCAwLCAgIDB9Ow0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2Nv
bXBvbmVudG1hc2t1bm11bHRwcy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvY29tcG9uZW50bWFza3VubXVs
dHBzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzJmYWUzNmRkZmUxZWU0ZmJjNWI5Y2JmZDIxYzU5OGM5OTY2MDVl
MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2NvbXBvbmVudG1hc2t1bm11bHRw
cy5oCkBAIC0wLDAgKzEsNTQgQEAKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9z
b2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8gUGFy
YW1ldGVyczoNCisvLw0KKy8vICAgZmxvYXQ0IGFkZDsNCisvLyAgIGZsb2F0NCBtdWx0Ow0KKy8v
ICAgc2FtcGxlcjJEIHRleDsNCisvLw0KKy8vDQorLy8gUmVnaXN0ZXJzOg0KKy8vDQorLy8gICBO
YW1lICAgICAgICAgUmVnICAgU2l6ZQ0KKy8vICAgLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0NCisv
LyAgIG11bHQgICAgICAgICBjMCAgICAgICAxDQorLy8gICBhZGQgICAgICAgICAgYzEgICAgICAg
MQ0KKy8vICAgdGV4ICAgICAgICAgIHMwICAgICAgIDENCisvLw0KKw0KKyAgICBwc18yXzANCisg
ICAgZGNsIHQwLnh5DQorICAgIGRjbF8yZCBzMA0KKyAgICB0ZXhsZCByMCwgdDAsIHMwDQorICAg
IG1vdiByMSwgYzANCisgICAgbWFkIHIwLCByMCwgcjEsIGMxDQorICAgIHJjcCByMS54LCByMC53
DQorICAgIG11bCByMS54eXosIHIwLCByMS54DQorICAgIGNtcCByMC54eXosIC1yMC53LCByMCwg
cjENCisgICAgbW92IG9DMCwgcjANCisNCisvLyBhcHByb3hpbWF0ZWx5IDcgaW5zdHJ1Y3Rpb24g
c2xvdHMgdXNlZCAoMSB0ZXh0dXJlLCA2IGFyaXRobWV0aWMpDQorI2VuZGlmDQorDQorY29uc3Qg
QllURSBnX3BzMjBfY29tcG9uZW50bWFza3VubXVsdHBzW10gPSB7DQorICAgIDAsICAgMiwgICAy
NTUsIDI1NSwgMjU0LCAyNTUsIDUwLCAgMCwgICA2NywgIDg0LCAgNjUsICA2NiwgIDI4LCAgMCwg
ICAwLCAgIDAsICAgMTQzLCAwLCAgIDAsDQorICAgIDAsICAgMCwgICAyLCAgIDI1NSwgMjU1LCAz
LCAgIDAsICAgMCwgICAwLCAgIDI4LCAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwg
ICAxMzYsIDAsDQorICAgIDAsICAgMCwgICA4OCwgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgICAx
LCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICA5MiwgIDAsICAgMCwgICAwLCAgIDAsDQorICAg
IDAsICAgMCwgICAwLCAgIDEwOCwgMCwgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgICAx
LCAgIDAsICAgMCwgICAwLCAgIDkyLCAgMCwgICAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAg
IDAsICAgMTEzLCAwLCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAw
LCAgIDAsICAgMTIwLCAwLCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA5Nywg
IDEwMCwgMTAwLCAwLCAgIDEsICAgMCwgICAzLCAgIDAsICAgMSwgICAwLCAgIDQsICAgMCwgICAx
LCAgIDAsDQorICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEwOSwgMTE3LCAxMDgs
IDExNiwgMCwgICAxMTYsIDEwMSwgMTIwLCAwLCAgIDE3MSwgMTcxLCAxNzEsIDQsDQorICAgIDAs
ICAgMTIsICAwLCAgIDEsICAgMCwgICAxLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDExMiwgMTE1LCA5NSwgIDUwLA0KKyAgICA5NSwgIDQ4LCAgMCwgICA3
NywgIDEwNSwgOTksICAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgMTE2LCAzMiwgIDQwLCAgODIs
ICA0MSwgIDMyLCAgNzIsICA3NiwNCisgICAgODMsICA3NiwgIDMyLCAgODMsICAxMDQsIDk3LCAg
MTAwLCAxMDEsIDExNCwgMzIsICA2NywgIDExMSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEsIDEx
NCwgMzIsDQorICAgIDU0LCAgNDYsICA1MSwgIDQ2LCAgNTcsICA1NCwgIDQ4LCAgNDgsICA0Niwg
IDQ5LCAgNTQsICA1MSwgIDU2LCAgNTIsICAwLCAgIDE3MSwgMTcxLCAxNzEsIDMxLA0KKyAgICAw
LCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgICAxMjgsIDAsICAgMCwgICAzLCAgIDE3NiwgMzEs
ICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgICAxNDQsDQorICAgIDAsICAgOCwgICAxNSwg
IDE2MCwgNjYsICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMTUsICAxMjgsIDAsICAgMCwgICAy
MjgsIDE3NiwgMCwgICA4LCAgIDIyOCwNCisgICAgMTYwLCAxLCAgIDAsICAgMCwgICAyLCAgIDEs
ICAgMCwgICAxNSwgIDEyOCwgMCwgICAwLCAgIDIyOCwgMTYwLCA0LCAgIDAsICAgMCwgICA0LCAg
IDAsICAgMCwNCisgICAgMTUsICAxMjgsIDAsICAgMCwgICAyMjgsIDEyOCwgMSwgICAwLCAgIDIy
OCwgMTI4LCAxLCAgIDAsICAgMjI4LCAxNjAsIDYsICAgMCwgICAwLCAgIDIsICAgMSwNCisgICAg
MCwgICAxLCAgIDEyOCwgMCwgICAwLCAgIDI1NSwgMTI4LCA1LCAgIDAsICAgMCwgICAzLCAgIDEs
ICAgMCwgICA3LCAgIDEyOCwgMCwgICAwLCAgIDIyOCwgMTI4LA0KKyAgICAxLCAgIDAsICAgMCwg
ICAxMjgsIDg4LCAgMCwgICAwLCAgIDQsICAgMCwgICAwLCAgIDcsICAgMTI4LCAwLCAgIDAsICAg
MjU1LCAxMjksIDAsICAgMCwgICAyMjgsDQorICAgIDEyOCwgMSwgICAwLCAgIDIyOCwgMTI4LCAx
LCAgIDAsICAgMCwgICAyLCAgIDAsICAgOCwgICAxNSwgIDEyOCwgMCwgICAwLCAgIDIyOCwgMTI4
LCAyNTUsIDI1NSwNCisgICAgMCwgICAwfTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9m
bGlweXZzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9mbGlweXZzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDVlYjUxMzEzMjhlNTdhYzhhMWQ0YTI3NmQyMTY0MjMzZGYwNGEyYTYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQv
ZmxpcHl2cy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotI2lmIDANCi0vLw0KLS8v
IEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAw
LjE2Mzg0DQotLy8NCi0vLyBQYXJhbWV0ZXJzOg0KLS8vDQotLy8gICBmbG9hdDQgaGFsZlBpeGVs
U2l6ZTsNCi0vLw0KLS8vDQotLy8gUmVnaXN0ZXJzOg0KLS8vDQotLy8gICBOYW1lICAgICAgICAg
IFJlZyAgIFNpemUNCi0vLyAgIC0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLQ0KLS8vICAgaGFsZlBp
eGVsU2l6ZSBjMCAgICAgICAxDQotLy8NCi0NCi0gICAgdnNfMl8wDQotICAgIGRlZiBjMSwgMC41
LCAxLCAwLCAwDQotICAgIGRjbF9wb3NpdGlvbiB2MA0KLSAgICBhZGQgb1BvcywgdjAsIGMwDQot
ICAgIG1hZCBvVDAsIHYwLCBjMS54eHl5LCBjMS54eHp6DQotDQotLy8gYXBwcm94aW1hdGVseSAy
IGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCi0jZW5kaWYNCi0NCi1jb25zdCBCWVRFIGdfdnMyMF9m
bGlweXZzW10gPQ0KLXsNCi0gICAgICAwLCAgIDIsIDI1NCwgMjU1LCAyNTQsIDI1NSwgDQotICAg
ICAzNiwgICAwLCAgNjcsICA4NCwgIDY1LCAgNjYsIA0KLSAgICAgMjgsICAgMCwgICAwLCAgIDAs
ICA4NywgICAwLCANCi0gICAgICAwLCAgIDAsICAgMCwgICAyLCAyNTQsIDI1NSwgDQotICAgICAg
MSwgICAwLCAgIDAsICAgMCwgIDI4LCAgIDAsIA0KLSAgICAgIDAsICAgMCwgICAwLCAgIDEsICAg
MCwgICAwLCANCi0gICAgIDgwLCAgIDAsICAgMCwgICAwLCAgNDgsICAgMCwgDQotICAgICAgMCwg
ICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICA2NCwg
ICAwLCANCi0gICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgDQotICAgIDEwNCwgIDk3
LCAxMDgsIDEwMiwgIDgwLCAxMDUsIA0KLSAgICAxMjAsIDEwMSwgMTA4LCAgODMsIDEwNSwgMTIy
LCANCi0gICAgMTAxLCAgIDAsIDE3MSwgMTcxLCAgIDEsICAgMCwgDQotICAgICAgMywgICAwLCAg
IDEsICAgMCwgICA0LCAgIDAsIA0KLSAgICAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAN
Ci0gICAgICAwLCAgIDAsIDExOCwgMTE1LCAgOTUsICA1MCwgDQotICAgICA5NSwgIDQ4LCAgIDAs
ICA3NywgMTA1LCAgOTksIA0KLSAgICAxMTQsIDExMSwgMTE1LCAxMTEsIDEwMiwgMTE2LCANCi0g
ICAgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3MiwgDQotICAgICA3NiwgIDgzLCAgNzYsICAz
MiwgIDgzLCAxMDQsIA0KLSAgICAgOTcsIDEwMCwgMTAxLCAxMTQsICAzMiwgIDY3LCANCi0gICAg
MTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgDQotICAgIDExNCwgIDMyLCAgNTQsICA0Niwg
IDUxLCAgNDYsIA0KLSAgICAgNTcsICA1NCwgIDQ4LCAgNDgsICA0NiwgIDQ5LCANCi0gICAgIDU0
LCAgNTEsICA1NiwgIDUyLCAgIDAsIDE3MSwgDQotICAgIDE3MSwgMTcxLCAgODEsICAgMCwgICAw
LCAgIDUsIA0KLSAgICAgIDEsICAgMCwgIDE1LCAxNjAsICAgMCwgICAwLCANCi0gICAgICAwLCAg
NjMsICAgMCwgICAwLCAxMjgsICA2MywgDQotICAgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsIA0KLSAgICAgIDAsICAgMCwgIDMxLCAgIDAsICAgMCwgICAyLCANCi0gICAgICAwLCAgIDAs
ICAgMCwgMTI4LCAgIDAsICAgMCwgDQotICAgICAxNSwgMTQ0LCAgIDIsICAgMCwgICAwLCAgIDMs
IA0KLSAgICAgIDAsICAgMCwgIDE1LCAxOTIsICAgMCwgICAwLCANCi0gICAgMjI4LCAxNDQsICAg
MCwgICAwLCAyMjgsIDE2MCwgDQotICAgICAgNCwgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsIA0K
LSAgICAgMTUsIDIyNCwgICAwLCAgIDAsIDIyOCwgMTQ0LCANCi0gICAgICAxLCAgIDAsICA4MCwg
MTYwLCAgIDEsICAgMCwgDQotICAgIDE2MCwgMTYwLCAyNTUsIDI1NSwgICAwLCAgIDANCi19Ow0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2x1bWluYW5jZXByZW11bHRwcy5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMv
Y29tcGlsZWQvbHVtaW5hbmNlcHJlbXVsdHBzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNhNWM5OGZjMGZmYjU4
NWZmMGMwZDhkYmY2MjJlOWI4ZDE0MWY5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBp
bGVkL2x1bWluYW5jZXByZW11bHRwcy5oCkBAIC0wLDAgKzEsNTQgQEAKKyNpZiAwDQorLy8NCisv
LyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMuOTYw
MC4xNjM4NA0KKy8vDQorLy8gUGFyYW1ldGVyczoNCisvLw0KKy8vICAgZmxvYXQ0IGFkZDsNCisv
LyAgIGZsb2F0NCBtdWx0Ow0KKy8vICAgc2FtcGxlcjJEIHRleDsNCisvLw0KKy8vDQorLy8gUmVn
aXN0ZXJzOg0KKy8vDQorLy8gICBOYW1lICAgICAgICAgUmVnICAgU2l6ZQ0KKy8vICAgLS0tLS0t
LS0tLS0tIC0tLS0tIC0tLS0NCisvLyAgIG11bHQgICAgICAgICBjMCAgICAgICAxDQorLy8gICBh
ZGQgICAgICAgICAgYzEgICAgICAgMQ0KKy8vICAgdGV4ICAgICAgICAgIHMwICAgICAgIDENCisv
Lw0KKw0KKyAgICBwc18yXzANCisgICAgZGNsIHQwLnh5DQorICAgIGRjbF8yZCBzMA0KKyAgICB0
ZXhsZCByMCwgdDAsIHMwDQorICAgIG1vdiByMS54dywgYzANCisgICAgbWFkIHIwLngsIHIwLngs
IHIxLngsIGMxLngNCisgICAgbWFkIHIwLnksIHIwLncsIHIxLncsIGMxLncNCisgICAgbXVsIHIx
Lnh5eiwgcjAueSwgcjAueA0KKyAgICBtb3YgcjEudywgcjAueQ0KKyAgICBtb3Ygb0MwLCByMQ0K
Kw0KKy8vIGFwcHJveGltYXRlbHkgNyBpbnN0cnVjdGlvbiBzbG90cyB1c2VkICgxIHRleHR1cmUs
IDYgYXJpdGhtZXRpYykNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfcHMyMF9sdW1pbmFuY2Vw
cmVtdWx0cHNbXSA9IHsNCisgICAgMCwgICAyLCAgIDI1NSwgMjU1LCAyNTQsIDI1NSwgNTAsICAw
LCAgIDY3LCAgODQsICA2NSwgIDY2LCAgMjgsICAwLCAgIDAsICAgMCwgICAxNDMsIDAsICAgMCwN
CisgICAgMCwgICAwLCAgIDIsICAgMjU1LCAyNTUsIDMsICAgMCwgICAwLCAgIDAsICAgMjgsICAw
LCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDEzNiwgMCwNCisgICAgMCwgICAwLCAg
IDg4LCAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAgIDEsICAgMCwgICAxLCAgIDAsICAgMCwgICAw
LCAgIDkyLCAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMTA4LCAwLCAg
IDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgOTIsICAw
LCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAxMTMsIDAsICAgMCwgICAwLCAg
IDMsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAxMjAsIDAsICAgMCwNCisg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDk3LCAgMTAwLCAxMDAsIDAsICAgMSwgICAwLCAg
IDMsICAgMCwgICAxLCAgIDAsICAgNCwgICAwLCAgIDEsICAgMCwNCisgICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMTA5LCAxMTcsIDEwOCwgMTE2LCAwLCAgIDExNiwgMTAxLCAxMjAs
IDAsICAgMTcxLCAxNzEsIDE3MSwgNCwNCisgICAgMCwgICAxMiwgIDAsICAgMSwgICAwLCAgIDEs
ICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMTEyLCAxMTUs
IDk1LCAgNTAsDQorICAgIDk1LCAgNDgsICAwLCAgIDc3LCAgMTA1LCA5OSwgIDExNCwgMTExLCAx
MTUsIDExMSwgMTAyLCAxMTYsIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3MiwgIDc2LA0KKyAg
ICA4MywgIDc2LCAgMzIsICA4MywgIDEwNCwgOTcsICAxMDAsIDEwMSwgMTE0LCAzMiwgIDY3LCAg
MTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgMTE0LCAzMiwNCisgICAgNTQsICA0NiwgIDUx
LCAgNDYsICA1NywgIDU0LCAgNDgsICA0OCwgIDQ2LCAgNDksICA1NCwgIDUxLCAgNTYsICA1Miwg
IDAsICAgMTcxLCAxNzEsIDE3MSwgMzEsDQorICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAw
LCAgIDEyOCwgMCwgICAwLCAgIDMsICAgMTc2LCAzMSwgIDAsICAgMCwgICAyLCAgIDAsICAgMCwg
ICAwLCAgIDE0NCwNCisgICAgMCwgICA4LCAgIDE1LCAgMTYwLCA2NiwgIDAsICAgMCwgICAzLCAg
IDAsICAgMCwgICAxNSwgIDEyOCwgMCwgICAwLCAgIDIyOCwgMTc2LCAwLCAgIDgsICAgMjI4LA0K
KyAgICAxNjAsIDEsICAgMCwgICAwLCAgIDIsICAgMSwgICAwLCAgIDksICAgMTI4LCAwLCAgIDAs
ICAgMjI4LCAxNjAsIDQsICAgMCwgICAwLCAgIDQsICAgMCwgICAwLA0KKyAgICAxLCAgIDEyOCwg
MCwgICAwLCAgIDAsICAgMTI4LCAxLCAgIDAsICAgMCwgICAxMjgsIDEsICAgMCwgICAwLCAgIDE2
MCwgNCwgICAwLCAgIDAsICAgNCwgICAwLA0KKyAgICAwLCAgIDIsICAgMTI4LCAwLCAgIDAsICAg
MjU1LCAxMjgsIDEsICAgMCwgICAyNTUsIDEyOCwgMSwgICAwLCAgIDI1NSwgMTYwLCA1LCAgIDAs
ICAgMCwgICAzLA0KKyAgICAxLCAgIDAsICAgNywgICAxMjgsIDAsICAgMCwgICA4NSwgIDEyOCwg
MCwgICAwLCAgIDAsICAgMTI4LCAxLCAgIDAsICAgMCwgICAyLCAgIDEsICAgMCwgICA4LA0KKyAg
ICAxMjgsIDAsICAgMCwgICA4NSwgIDEyOCwgMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDgsICAg
MTUsICAxMjgsIDEsICAgMCwgICAyMjgsIDEyOCwgMjU1LCAyNTUsDQorICAgIDAsICAgMH07DQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvbHVtaW5hbmNldW5tdWx0cHMuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2Nv
bXBpbGVkL2x1bWluYW5jZXVubXVsdHBzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDA3OTRiNTA2NDg4MzMwYjkw
M2Y0MWM3M2FlNDM3MjcyN2NkYmZiMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVk
L2x1bWluYW5jZXVubXVsdHBzLmgKQEAgLTAsMCArMSw1NyBAQAorI2lmIDANCisvLw0KKy8vIEdl
bmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhMU0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2
Mzg0DQorLy8NCisvLyBQYXJhbWV0ZXJzOg0KKy8vDQorLy8gICBmbG9hdDQgYWRkOw0KKy8vICAg
ZmxvYXQ0IG11bHQ7DQorLy8gICBzYW1wbGVyMkQgdGV4Ow0KKy8vDQorLy8NCisvLyBSZWdpc3Rl
cnM6DQorLy8NCisvLyAgIE5hbWUgICAgICAgICBSZWcgICBTaXplDQorLy8gICAtLS0tLS0tLS0t
LS0gLS0tLS0gLS0tLQ0KKy8vICAgbXVsdCAgICAgICAgIGMwICAgICAgIDENCisvLyAgIGFkZCAg
ICAgICAgICBjMSAgICAgICAxDQorLy8gICB0ZXggICAgICAgICAgczAgICAgICAgMQ0KKy8vDQor
DQorICAgIHBzXzJfMA0KKyAgICBkY2wgdDAueHkNCisgICAgZGNsXzJkIHMwDQorICAgIHRleGxk
IHIwLCB0MCwgczANCisgICAgbW92IHIxLnh3LCBjMA0KKyAgICBtYWQgcjAueCwgcjAueCwgcjEu
eCwgYzEueA0KKyAgICBtYWQgcjAueSwgcjAudywgcjEudywgYzEudw0KKyAgICByY3AgcjAueiwg
cjAueQ0KKyAgICBtdWwgcjAueiwgcjAueiwgcjAueA0KKyAgICBjbXAgcjEueHl6LCAtcjAueSwg
cjAueCwgcjAueg0KKyAgICBtb3YgcjEudywgcjAueQ0KKyAgICBtb3Ygb0MwLCByMQ0KKw0KKy8v
IGFwcHJveGltYXRlbHkgOSBpbnN0cnVjdGlvbiBzbG90cyB1c2VkICgxIHRleHR1cmUsIDggYXJp
dGhtZXRpYykNCisjZW5kaWYNCisNCitjb25zdCBCWVRFIGdfcHMyMF9sdW1pbmFuY2V1bm11bHRw
c1tdID0gew0KKyAgICAwLCAgIDIsICAgMjU1LCAyNTUsIDI1NCwgMjU1LCA1MCwgIDAsICAgNjcs
ICA4NCwgIDY1LCAgNjYsICAyOCwgIDAsICAgMCwgICAwLCAgIDE0MywgMCwgICAwLA0KKyAgICAw
LCAgIDAsICAgMiwgICAyNTUsIDI1NSwgMywgICAwLCAgIDAsICAgMCwgICAyOCwgIDAsICAgMCwg
ICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMTM2LCAwLA0KKyAgICAwLCAgIDAsICAgODgsICAw
LCAgIDAsICAgMCwgICAyLCAgIDAsICAgMSwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgOTIs
ICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAxMDgsIDAsICAgMCwgICAw
LCAgIDIsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICA5MiwgIDAsICAgMCwg
ICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDExMywgMCwgICAwLCAgIDAsICAgMywgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDEyMCwgMCwgICAwLA0KKyAgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgOTcsICAxMDAsIDEwMCwgMCwgICAxLCAgIDAsICAgMywgICAw
LCAgIDEsICAgMCwgICA0LCAgIDAsICAgMSwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAxMDksIDExNywgMTA4LCAxMTYsIDAsICAgMTE2LCAxMDEsIDEyMCwgMCwgICAx
NzEsIDE3MSwgMTcxLCA0LA0KKyAgICAwLCAgIDEyLCAgMCwgICAxLCAgIDAsICAgMSwgICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxMTIsIDExNSwgOTUsICA1
MCwNCisgICAgOTUsICA0OCwgIDAsICAgNzcsICAxMDUsIDk5LCAgMTE0LCAxMTEsIDExNSwgMTEx
LCAxMDIsIDExNiwgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgIDcyLCAgNzYsDQorICAgIDgzLCAg
NzYsICAzMiwgIDgzLCAgMTA0LCA5NywgIDEwMCwgMTAxLCAxMTQsIDMyLCAgNjcsICAxMTEsIDEw
OSwgMTEyLCAxMDUsIDEwOCwgMTAxLCAxMTQsIDMyLA0KKyAgICA1NCwgIDQ2LCAgNTEsICA0Niwg
IDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYsICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCAgMCwgICAx
NzEsIDE3MSwgMTcxLCAzMSwNCisgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsICAgMTI4
LCAwLCAgIDAsICAgMywgICAxNzYsIDMxLCAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsICAg
MTQ0LA0KKyAgICAwLCAgIDgsICAgMTUsICAxNjAsIDY2LCAgMCwgICAwLCAgIDMsICAgMCwgICAw
LCAgIDE1LCAgMTI4LCAwLCAgIDAsICAgMjI4LCAxNzYsIDAsICAgOCwgICAyMjgsDQorICAgIDE2
MCwgMSwgICAwLCAgIDAsICAgMiwgICAxLCAgIDAsICAgOSwgICAxMjgsIDAsICAgMCwgICAyMjgs
IDE2MCwgNCwgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsDQorICAgIDEsICAgMTI4LCAwLCAgIDAs
ICAgMCwgICAxMjgsIDEsICAgMCwgICAwLCAgIDEyOCwgMSwgICAwLCAgIDAsICAgMTYwLCA0LCAg
IDAsICAgMCwgICA0LCAgIDAsDQorICAgIDAsICAgMiwgICAxMjgsIDAsICAgMCwgICAyNTUsIDEy
OCwgMSwgICAwLCAgIDI1NSwgMTI4LCAxLCAgIDAsICAgMjU1LCAxNjAsIDYsICAgMCwgICAwLCAg
IDIsDQorICAgIDAsICAgMCwgICA0LCAgIDEyOCwgMCwgICAwLCAgIDg1LCAgMTI4LCA1LCAgIDAs
ICAgMCwgICAzLCAgIDAsICAgMCwgICA0LCAgIDEyOCwgMCwgICAwLCAgIDE3MCwNCisgICAgMTI4
LCAwLCAgIDAsICAgMCwgICAxMjgsIDg4LCAgMCwgICAwLCAgIDQsICAgMSwgICAwLCAgIDcsICAg
MTI4LCAwLCAgIDAsICAgODUsICAxMjksIDAsICAgMCwNCisgICAgMCwgICAxMjgsIDAsICAgMCwg
ICAxNzAsIDEyOCwgMSwgICAwLCAgIDAsICAgMiwgICAxLCAgIDAsICAgOCwgICAxMjgsIDAsICAg
MCwgICA4NSwgIDEyOCwgMSwNCisgICAgMCwgICAwLCAgIDIsICAgMCwgICA4LCAgIDE1LCAgMTI4
LCAxLCAgIDAsICAgMjI4LCAxMjgsIDI1NSwgMjU1LCAwLCAgIDB9Ow0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFk
ZXJzL2NvbXBpbGVkL3N0YW5kYXJkdnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL3N0YW5kYXJkdnMuaApp
bmRleCBhODMwNTBkOGMyZTRiZWExYWE3MDc4YTUwZGM2MWUyMTZlNzA5ZjhlLi4zNTBiMmViM2Ni
Njk5MDkwOWQ0OTc2MGQ2MjdlNDYzNTRjMDMxNzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxl
ZC9zdGFuZGFyZHZzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvc3RhbmRhcmR2cy5oCkBAIC01LDYy
ICs1LDQyIEBACiAvLyBQYXJhbWV0ZXJzOg0KIC8vDQogLy8gICBmbG9hdDQgaGFsZlBpeGVsU2l6
ZTsNCisvLyAgIGZsb2F0NCB0ZXhjb29yZE9mZnNldDsNCiAvLw0KIC8vDQogLy8gUmVnaXN0ZXJz
Og0KIC8vDQotLy8gICBOYW1lICAgICAgICAgIFJlZyAgIFNpemUNCi0vLyAgIC0tLS0tLS0tLS0t
LS0gLS0tLS0gLS0tLQ0KLS8vICAgaGFsZlBpeGVsU2l6ZSBjMCAgICAgICAxDQorLy8gICBOYW1l
ICAgICAgICAgICBSZWcgICBTaXplDQorLy8gICAtLS0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tDQor
Ly8gICBoYWxmUGl4ZWxTaXplICBjMCAgICAgICAxDQorLy8gICB0ZXhjb29yZE9mZnNldCBjMSAg
ICAgICAxDQogLy8NCiANCiAgICAgdnNfMl8wDQotICAgIGRlZiBjMSwgMC41LCAtMC41LCAxLCAw
DQorICAgIGRlZiBjMiwgMC41LCAtMC41LCAxLCAwDQogICAgIGRjbF9wb3NpdGlvbiB2MA0KICAg
ICBhZGQgb1BvcywgdjAsIGMwDQotICAgIG1hZCBvVDAsIHYwLCBjMS54eXp6LCBjMS54eHd3DQor
ICAgIG1hZCByMCwgdjAsIGMyLnh5enosIGMyLnh4d3cNCisgICAgbW92IG9UMC56dywgcjANCisg
ICAgbWFkIG9UMC54eSwgcjAsIGMxLnp3encsIGMxDQogDQotLy8gYXBwcm94aW1hdGVseSAyIGlu
c3RydWN0aW9uIHNsb3RzIHVzZWQNCisvLyBhcHByb3hpbWF0ZWx5IDQgaW5zdHJ1Y3Rpb24gc2xv
dHMgdXNlZA0KICNlbmRpZg0KIA0KLWNvbnN0IEJZVEUgZ192czIwX3N0YW5kYXJkdnNbXSA9DQot
ew0KLSAgICAgIDAsICAgMiwgMjU0LCAyNTUsIDI1NCwgMjU1LCANCi0gICAgIDM2LCAgIDAsICA2
NywgIDg0LCAgNjUsICA2NiwgDQotICAgICAyOCwgICAwLCAgIDAsICAgMCwgIDg3LCAgIDAsIA0K
LSAgICAgIDAsICAgMCwgICAwLCAgIDIsIDI1NCwgMjU1LCANCi0gICAgICAxLCAgIDAsICAgMCwg
ICAwLCAgMjgsICAgMCwgDQotICAgICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsIA0KLSAg
ICAgODAsICAgMCwgICAwLCAgIDAsICA0OCwgICAwLCANCi0gICAgICAwLCAgIDAsICAgMiwgICAw
LCAgIDAsICAgMCwgDQotICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDY0LCAgIDAsIA0KLSAgICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCi0gICAgMTA0LCAgOTcsIDEwOCwgMTAyLCAg
ODAsIDEwNSwgDQotICAgIDEyMCwgMTAxLCAxMDgsICA4MywgMTA1LCAxMjIsIA0KLSAgICAxMDEs
ICAgMCwgMTcxLCAxNzEsICAgMSwgICAwLCANCi0gICAgICAzLCAgIDAsICAgMSwgICAwLCAgIDQs
ICAgMCwgDQotICAgICAgMSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KLSAgICAgIDAsICAg
MCwgMTE4LCAxMTUsICA5NSwgIDUwLCANCi0gICAgIDk1LCAgNDgsICAgMCwgIDc3LCAxMDUsICA5
OSwgDQotICAgIDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCAxMTYsIA0KLSAgICAgMzIsICA0MCwg
IDgyLCAgNDEsICAzMiwgIDcyLCANCi0gICAgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIDEwNCwg
DQotICAgICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCAgNjcsIA0KLSAgICAxMTEsIDEwOSwgMTEy
LCAxMDUsIDEwOCwgMTAxLCANCi0gICAgMTE0LCAgMzIsICA1NCwgIDQ2LCAgNTEsICA0NiwgDQot
ICAgICA1NywgIDU0LCAgNDgsICA0OCwgIDQ2LCAgNDksIA0KLSAgICAgNTQsICA1MSwgIDU2LCAg
NTIsICAgMCwgMTcxLCANCi0gICAgMTcxLCAxNzEsICA4MSwgICAwLCAgIDAsICAgNSwgDQotICAg
ICAgMSwgICAwLCAgMTUsIDE2MCwgICAwLCAgIDAsIA0KLSAgICAgIDAsICA2MywgICAwLCAgIDAs
ICAgMCwgMTkxLCANCi0gICAgICAwLCAgIDAsIDEyOCwgIDYzLCAgIDAsICAgMCwgDQotICAgICAg
MCwgICAwLCAgMzEsICAgMCwgICAwLCAgIDIsIA0KLSAgICAgIDAsICAgMCwgICAwLCAxMjgsICAg
MCwgICAwLCANCi0gICAgIDE1LCAxNDQsICAgMiwgICAwLCAgIDAsICAgMywgDQotICAgICAgMCwg
ICAwLCAgMTUsIDE5MiwgICAwLCAgIDAsIA0KLSAgICAyMjgsIDE0NCwgICAwLCAgIDAsIDIyOCwg
MTYwLCANCi0gICAgICA0LCAgIDAsICAgMCwgICA0LCAgIDAsICAgMCwgDQotICAgICAxNSwgMjI0
LCAgIDAsICAgMCwgMjI4LCAxNDQsIA0KLSAgICAgIDEsICAgMCwgMTY0LCAxNjAsICAgMSwgICAw
LCANCi0gICAgMjQwLCAxNjAsIDI1NSwgMjU1LCAgIDAsICAgMA0KLX07DQorY29uc3QgQllURSBn
X3ZzMjBfc3RhbmRhcmR2c1tdID0gew0KKyAgICAwLCAgIDIsICAgMjU0LCAyNTUsIDI1NCwgMjU1
LCA0NCwgIDAsICAgNjcsICA4NCwgIDY1LCAgNjYsICAyOCwgIDAsICAgMCwgICAwLCAgIDEyMiwg
MCwgICAwLA0KKyAgICAwLCAgIDAsICAgMiwgICAyNTQsIDI1NSwgMiwgICAwLCAgIDAsICAgMCwg
ICAyOCwgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMTE1LCAwLA0KKyAgICAw
LCAgIDAsICAgNjgsICAwLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
ICAwLCAgIDAsICAgODQsICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAx
MDAsIDAsICAgMCwgICAwLCAgIDIsICAgMCwgICAxLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
ICA4NCwgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDEwNCwgOTcsICAx
MDgsIDEwMiwgODAsICAxMDUsIDEyMCwgMTAxLCAxMDgsIDgzLCAgMTA1LCAxMjIsIDEwMSwgMCwg
ICAxNzEsDQorICAgIDE3MSwgMSwgICAwLCAgIDMsICAgMCwgICAxLCAgIDAsICAgNCwgICAwLCAg
IDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxMTYsIDEwMSwNCisgICAg
MTIwLCA5OSwgIDExMSwgMTExLCAxMTQsIDEwMCwgNzksICAxMDIsIDEwMiwgMTE1LCAxMDEsIDEx
NiwgMCwgICAxMTgsIDExNSwgOTUsICA1MCwgIDk1LCAgNDgsDQorICAgIDAsICAgNzcsICAxMDUs
IDk5LCAgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIDExNiwgMzIsICA0MCwgIDgyLCAgNDEsICAz
MiwgIDcyLCAgNzYsICA4MywgIDc2LA0KKyAgICAzMiwgIDgzLCAgMTA0LCA5NywgIDEwMCwgMTAx
LCAxMTQsIDMyLCAgNjcsICAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgMTAxLCAxMTQsIDMyLCAg
NTQsICA0NiwNCisgICAgNTEsICA0NiwgIDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYsICA0OSwgIDU0
LCAgNTEsICA1NiwgIDUyLCAgMCwgICA4MSwgIDAsICAgMCwgICA1LCAgIDIsICAgMCwNCisgICAg
MTUsICAxNjAsIDAsICAgMCwgICAwLCAgIDYzLCAgMCwgICAwLCAgIDAsICAgMTkxLCAwLCAgIDAs
ICAgMTI4LCA2MywgIDAsICAgMCwgICAwLCAgIDAsICAgMzEsDQorICAgIDAsICAgMCwgICAyLCAg
IDAsICAgMCwgICAwLCAgIDEyOCwgMCwgICAwLCAgIDE1LCAgMTQ0LCAyLCAgIDAsICAgMCwgICAz
LCAgIDAsICAgMCwgICAxNSwgIDE5MiwNCisgICAgMCwgICAwLCAgIDIyOCwgMTQ0LCAwLCAgIDAs
ICAgMjI4LCAxNjAsIDQsICAgMCwgICAwLCAgIDQsICAgMCwgICAwLCAgIDE1LCAgMTI4LCAwLCAg
IDAsICAgMjI4LA0KKyAgICAxNDQsIDIsICAgMCwgICAxNjQsIDE2MCwgMiwgICAwLCAgIDI0MCwg
MTYwLCAxLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAxMiwgIDIyNCwgMCwgICAwLA0KKyAg
ICAyMjgsIDEyOCwgNCwgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsICAgMywgICAyMjQsIDAsICAg
MCwgICAyMjgsIDEyOCwgMSwgICAwLCAgIDIzOCwgMTYwLCAxLA0KKyAgICAwLCAgIDIyOCwgMTYw
LCAyNTUsIDI1NSwgMCwgICAwfTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9nZW5lcmF0ZV9zaGFkZXJz
LmJhdCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9zaGFkZXJzL2dlbmVyYXRlX3NoYWRlcnMuYmF0CmluZGV4IDE5YTk5YmE5MTQ5M2JkMmM2
OTUxNTg1NzZlYTllZGFlZjFjZTllMDUuLmQzMjBlMjc2MjE0YmFlNmU2MmM1NjVjYTI2ZDA3NzZj
YzhmZjJiZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2dlbmVyYXRlX3NoYWRlcnMuYmF0CisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFk
ZXJzL2dlbmVyYXRlX3NoYWRlcnMuYmF0CkBAIC0yMSwxMCArMjEsMTMgQEAgaWYgIiUxIiA9PSAi
cmVsZWFzZSIgKAogDQogOjogICAgICAgICAgICAgIHwgSW5wdXQgZmlsZSAgICAgICAgICB8IEVu
dHJ5IHBvaW50ICAgICAgICAgICB8IFR5cGUgfCBPdXRwdXQgZmlsZSAgICAgICAgICAgICAgICAg
ICAgICAgIHwgRGVidWcgfA0KIGNhbGw6QnVpbGRTaGFkZXIgQmxpdC52cyAgICAgICAgICAgICAg
IHN0YW5kYXJkdnMgICAgICAgICAgICAgIHZzXzJfMCBjb21waWxlZFxzdGFuZGFyZHZzLmggICAg
ICAgICAgICAgICAgJWRlYnVnJQ0KLWNhbGw6QnVpbGRTaGFkZXIgQmxpdC52cyAgICAgICAgICAg
ICAgIGZsaXB5dnMgICAgICAgICAgICAgICAgIHZzXzJfMCBjb21waWxlZFxmbGlweXZzLmggICAg
ICAgICAgICAgICAgICAgJWRlYnVnJQ0KIGNhbGw6QnVpbGRTaGFkZXIgQmxpdC5wcyAgICAgICAg
ICAgICAgIHBhc3N0aHJvdWdocHMgICAgICAgICAgIHBzXzJfMCBjb21waWxlZFxwYXNzdGhyb3Vn
aHBzLmggICAgICAgICAgICAgJWRlYnVnJQ0KIGNhbGw6QnVpbGRTaGFkZXIgQmxpdC5wcyAgICAg
ICAgICAgICAgIGx1bWluYW5jZXBzICAgICAgICAgICAgIHBzXzJfMCBjb21waWxlZFxsdW1pbmFu
Y2Vwcy5oICAgICAgICAgICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgQmxpdC5wcyAg
ICAgICAgICAgICAgIGx1bWluYW5jZXByZW11bHRwcyAgICAgIHBzXzJfMCBjb21waWxlZFxsdW1p
bmFuY2VwcmVtdWx0cHMuaCAgICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIgQmxpdC5w
cyAgICAgICAgICAgICAgIGx1bWluYW5jZXVubXVsdHBzICAgICAgIHBzXzJfMCBjb21waWxlZFxs
dW1pbmFuY2V1bm11bHRwcy5oICAgICAgICAgJWRlYnVnJQ0KIGNhbGw6QnVpbGRTaGFkZXIgQmxp
dC5wcyAgICAgICAgICAgICAgIGNvbXBvbmVudG1hc2twcyAgICAgICAgIHBzXzJfMCBjb21waWxl
ZFxjb21wb25lbnRtYXNrcHMuaCAgICAgICAgICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFkZXIg
QmxpdC5wcyAgICAgICAgICAgICAgIGNvbXBvbmVudG1hc2twcmVtdWx0cHMgIHBzXzJfMCBjb21w
aWxlZFxjb21wb25lbnRtYXNrcHJlbXVsdHBzLmggICAgJWRlYnVnJQ0KK2NhbGw6QnVpbGRTaGFk
ZXIgQmxpdC5wcyAgICAgICAgICAgICAgIGNvbXBvbmVudG1hc2t1bm11bHRwcyAgIHBzXzJfMCBj
b21waWxlZFxjb21wb25lbnRtYXNrdW5tdWx0cHMuaCAgICAgJWRlYnVnJQ0KIA0KIGVjaG8uDQog
DQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9mb3JtYXR1dGlsc0QzRC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9mb3JtYXR1dGlsc0QzRC5oCmluZGV4IDQ4OTNiZWI5YWYyYzk0
Mjk2NDg3OThiMjYyOWQzN2UzYTFmY2E5NDMuLmEyNDVhMDQzMmY4NDU2NmE4MjUzYTZiZGM3MGY0
YzUxZWM2YTE2YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZm9ybWF0dXRpbHNEM0QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1hdHV0aWxzRDNELmgKQEAgLTI0
LDkgKzI0LDYgQEAgc3RydWN0IEZvcm1hdFR5cGU7CiAKIG5hbWVzcGFjZSByeAogewotdHlwZWRl
ZiB2b2lkICgqSW5pdGlhbGl6ZVRleHR1cmVEYXRhRnVuY3Rpb24pKHNpemVfdCB3aWR0aCwgc2l6
ZV90IGhlaWdodCwgc2l6ZV90IGRlcHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwgc2l6ZV90IG91dHB1dFJvd1BpdGNoLCBz
aXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7Ci0KIHR5cGVkZWYgdm9pZCAoKlZlcnRleENvcHlGdW5j
dGlvbikoY29uc3QgdWludDhfdCAqaW5wdXQsIHNpemVfdCBzdHJpZGUsIHNpemVfdCBjb3VudCwg
dWludDhfdCAqb3V0cHV0KTsKIAogZW51bSBWZXJ0ZXhDb252ZXJzaW9uVHlwZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2RyaXZlcl91
dGlscy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZHJpdmVyX3V0aWxzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTdiOGU3YzIyYWJiMTc0M2I1NWNjMjJiNjky
YzIzYmRhOGI1ZGUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2RyaXZlcl91dGlscy5jcHAKQEAgLTAsMCArMSwxMjAgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworCisvLyBkcml2ZXJfdXRpbHMuaCA6IHByb3ZpZGVzIG1vcmUgaW5mb3Jt
YXRpb24gYWJvdXQgY3VycmVudCBkcml2ZXIuCisKKyNpbmNsdWRlIDxhbGdvcml0aG0+CisKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kcml2ZXJfdXRpbHMuaCIKKworbmFtZXNwYWNlIHJ4
Cit7CisvLyBJbnRlbAorLy8gUmVmZXJlbmNlZCBmcm9tIGh0dHBzOi8vY2dpdC5mcmVlZGVza3Rv
cC5vcmcvdmFhcGkvaW50ZWwtZHJpdmVyL3RyZWUvc3JjL2k5NjVfcGNpaWRzLmgKK25hbWVzcGFj
ZQoreworLy8gZ2VuNworY29uc3QgdWludDMyX3QgSGFzd2VsbFtdID0geworICAgIDB4MDQwMiwg
MHgwNDA2LCAweDA0MEEsIDB4MDQwQiwgMHgwNDBFLCAweDBDMDIsIDB4MEMwNiwgMHgwQzBBLCAw
eDBDMEIsIDB4MEMwRSwKKyAgICAweDBBMDIsIDB4MEEwNiwgMHgwQTBBLCAweDBBMEIsIDB4MEEw
RSwgMHgwRDAyLCAweDBEMDYsIDB4MEQwQSwgMHgwRDBCLCAweDBEMEUsICAvLyBoc3dfZ3QxCisg
ICAgMHgwNDEyLCAweDA0MTYsIDB4MDQxQSwgMHgwNDFCLCAweDA0MUUsIDB4MEMxMiwgMHgwQzE2
LCAweDBDMUEsIDB4MEMxQiwgMHgwQzFFLAorICAgIDB4MEExMiwgMHgwQTE2LCAweDBBMUEsIDB4
MEExQiwgMHgwQTFFLCAweDBEMTIsIDB4MEQxNiwgMHgwRDFBLCAweDBEMUIsIDB4MEQxRSwgIC8v
IGhzd19ndDIKKyAgICAweDA0MjIsIDB4MDQyNiwgMHgwNDJBLCAweDA0MkIsIDB4MDQyRSwgMHgw
QzIyLCAweDBDMjYsIDB4MEMyQSwgMHgwQzJCLCAweDBDMkUsCisgICAgMHgwQTIyLCAweDBBMjYs
IDB4MEEyQSwgMHgwQTJCLCAweDBBMkUsIDB4MEQyMiwgMHgwRDI2LCAweDBEMkEsIDB4MEQyQiwg
MHgwRDJFICAvLyBoc3dfZ3QzCit9OworCisvLyBnZW44Citjb25zdCB1aW50MzJfdCBCcm9hZHdl
bGxbXSA9IHsweDE2MDIsIDB4MTYwNiwgMHgxNjBBLCAweDE2MEIsIDB4MTYwRCwgMHgxNjBFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNjEyLCAweDE2MTYsIDB4MTYxQSwgMHgx
NjFCLCAweDE2MUQsIDB4MTYxRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTYy
MiwgMHgxNjI2LCAweDE2MkEsIDB4MTYyQiwgMHgxNjJELCAweDE2MkV9OworCitjb25zdCB1aW50
MzJfdCBDaGVycnlWaWV3W10gPSB7MHgyMkIwLCAweDIyQjEsIDB4MjJCMiwgMHgyMkIzfTsKKwor
Ly8gZ2VuOQorY29uc3QgdWludDMyX3QgU2t5bGFrZVtdID0gezB4MTkwMiwgMHgxOTA2LCAweDE5
MEEsIDB4MTkwQiwgMHgxOTBFLCAweDE5MTIsIDB4MTkxMywgMHgxOTE1LCAweDE5MTYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHgxOTE3LCAweDE5MUEsIDB4MTkxQiwgMHgxOTFELCAw
eDE5MUUsIDB4MTkyMSwgMHgxOTIzLCAweDE5MjYsIDB4MTkyNywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDE5MkEsIDB4MTkyQiwgMHgxOTJELCAweDE5MzIsIDB4MTkzQSwgMHgxOTNC
LCAweDE5M0R9OworCitjb25zdCB1aW50MzJfdCBCcm94dG9uW10gPSB7MHgwQTg0LCAweDFBODQs
IDB4MUE4NSwgMHg1QTg0LCAweDVBODV9OworCisvLyBnZW45cDUKK2NvbnN0IHVpbnQzMl90IEth
YnlsYWtlW10gPSB7MHg1OTE2LCAweDU5MTMsIDB4NTkwNiwgMHg1OTI2LCAweDU5MjEsIDB4NTkx
NSwgMHg1OTBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDU5MUUsIDB4NTkxMiwg
MHg1OTE3LCAweDU5MDIsIDB4NTkxQiwgMHg1OTNCLCAweDU5MEIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4NTkxQSwgMHg1OTBBLCAweDU5MUQsIDB4NTkwOCwgMHg1OTIzLCAweDU5
Mjd9OworCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK0ludGVsRHJpdmVyVmVyc2lvbjo6
SW50ZWxEcml2ZXJWZXJzaW9uKHVpbnQxNl90IGxhc3RQYXJ0KSA6IG1WZXJzaW9uUGFydChsYXN0
UGFydCkKK3sKK30KKworYm9vbCBJbnRlbERyaXZlclZlcnNpb246Om9wZXJhdG9yPT0oY29uc3Qg
SW50ZWxEcml2ZXJWZXJzaW9uICZ2ZXJzaW9uKQoreworICAgIHJldHVybiBtVmVyc2lvblBhcnQg
PT0gdmVyc2lvbi5tVmVyc2lvblBhcnQ7Cit9CisKK2Jvb2wgSW50ZWxEcml2ZXJWZXJzaW9uOjpv
cGVyYXRvciE9KGNvbnN0IEludGVsRHJpdmVyVmVyc2lvbiAmdmVyc2lvbikKK3sKKyAgICByZXR1
cm4gISgqdGhpcyA9PSB2ZXJzaW9uKTsKK30KKworYm9vbCBJbnRlbERyaXZlclZlcnNpb246Om9w
ZXJhdG9yPChjb25zdCBJbnRlbERyaXZlclZlcnNpb24gJnZlcnNpb24pCit7CisgICAgLy8gU2Vl
IGh0dHA6Ly93d3cuaW50ZWwuY29tL2NvbnRlbnQvd3d3L3VzL2VuL3N1cHBvcnQvZ3JhcGhpY3Mt
ZHJpdmVycy8wMDAwMDU2NTQuaHRtbCB0bworICAgIC8vIHVuZGVyc3RhbmQgdGhlIEludGVsIGdy
YXBoaWNzIGRyaXZlciB2ZXJzaW9uIG51bWJlciBvbiBXaW5kb3dzLgorICAgIC8vIG1WZXJzaW9u
UGFydDEgY2hhbmdlcyB3aXRoIE9TIHZlcnNpb24uIG1WZXJzaW9uUGFydDIgY2hhbmdlcyB3aXRo
IERpcmVjdFggdmVyc2lvbi4KKyAgICAvLyBtVmVyc2lvblBhcnQzIHN0YW5kcyBmb3IgcmVsZWFz
ZSB5ZWFyLiBtVmVyc2lvblBhcnQ0IGlzIGRyaXZlciBzcGVjaWZpYyB1bmlxdWUgdmVyc2lvbgor
ICAgIC8vIG51bWJlci4KKyAgICAvLyBGb3IgZXhhbXBsZTogSW50ZWwgZHJpdmVyIHZlcnNpb24g
JzIwLjE5LjE1LjQ1MzknCisgICAgLy8gICAgICAgICAgICAgIDIwICAgLT4gd2luZG93cyAxMCBk
cml2ZXIKKyAgICAvLyAgICAgICAgICAgICAgMTkgICAtPiBEaXJlY3RYIDEyIGZpcnN0IHZlcnNp
b24oMTIuMCkgc3VwcG9ydGVkCisgICAgLy8gICAgICAgICAgICAgIDE1ICAgLT4gRHJpdmVyIHJl
bGVhc2VkIGluIDIwMTUKKyAgICAvLyAgICAgICAgICAgICAgNDUzOSAtPiBEcml2ZXIgc3BlY2lm
aWMgdW5pcXVlIHZlcnNpb24gbnVtYmVyCisgICAgLy8gRm9yIGxpbnV4LCBJbnRlbCBncmFwaGlj
cyBkcml2ZXIgdmVyc2lvbiBpcyB0aGUgbWVzYSB2ZXJzaW9uLiBUaGUgdmVyc2lvbiBudW1iZXIg
aGFzIHRocmVlCisgICAgLy8gcGFydHM6IG1ham9yIHJldmlzaW9uLCBtaW5vciByZXZpc2lvbiwg
cmVsZWFzZSBudW1iZXIuIFNvLCBmb3IgbGludXgsIHdlIG5lZWQgdG8gY29tcGFyZQorICAgIC8v
IHRocmVlIHBhcnRzLgorICAgIC8vIEN1cnJlbnRseSwgaXQncyBvbmx5IHVzZWQgaW4gd2luZG93
cy4gU28sIGNoZWNraW5nIHRoZSBsYXN0IHBhcnQgaXMgZW5vdWdoLiBPbmNlIGl0J3MgbmVlZGVk
CisgICAgLy8gaW4gb3RoZXIgcGxhdGZvcm1zLCBpdCdzIGVhc3kgdG8gYmUgZXh0ZW5kZWQuCisg
ICAgcmV0dXJuIG1WZXJzaW9uUGFydCA8IHZlcnNpb24ubVZlcnNpb25QYXJ0OworfQorCitib29s
IEludGVsRHJpdmVyVmVyc2lvbjo6b3BlcmF0b3I+PShjb25zdCBJbnRlbERyaXZlclZlcnNpb24g
JnZlcnNpb24pCit7CisgICAgcmV0dXJuICEoKnRoaXMgPCB2ZXJzaW9uKTsKK30KKworYm9vbCBJ
c0hhc3dlbGwodWludDMyX3QgRGV2aWNlSWQpCit7CisgICAgcmV0dXJuIHN0ZDo6ZmluZChzdGQ6
OmJlZ2luKEhhc3dlbGwpLCBzdGQ6OmVuZChIYXN3ZWxsKSwgRGV2aWNlSWQpICE9IHN0ZDo6ZW5k
KEhhc3dlbGwpOworfQorCitib29sIElzQnJvYWR3ZWxsKHVpbnQzMl90IERldmljZUlkKQorewor
ICAgIHJldHVybiBzdGQ6OmZpbmQoc3RkOjpiZWdpbihCcm9hZHdlbGwpLCBzdGQ6OmVuZChCcm9h
ZHdlbGwpLCBEZXZpY2VJZCkgIT0gc3RkOjplbmQoQnJvYWR3ZWxsKTsKK30KKworYm9vbCBJc0No
ZXJyeVZpZXcodWludDMyX3QgRGV2aWNlSWQpCit7CisgICAgcmV0dXJuIHN0ZDo6ZmluZChzdGQ6
OmJlZ2luKENoZXJyeVZpZXcpLCBzdGQ6OmVuZChDaGVycnlWaWV3KSwgRGV2aWNlSWQpICE9Cisg
ICAgICAgICAgIHN0ZDo6ZW5kKENoZXJyeVZpZXcpOworfQorCitib29sIElzU2t5bGFrZSh1aW50
MzJfdCBEZXZpY2VJZCkKK3sKKyAgICByZXR1cm4gc3RkOjpmaW5kKHN0ZDo6YmVnaW4oU2t5bGFr
ZSksIHN0ZDo6ZW5kKFNreWxha2UpLCBEZXZpY2VJZCkgIT0gc3RkOjplbmQoU2t5bGFrZSk7Cit9
CisKK2Jvb2wgSXNCcm94dG9uKHVpbnQzMl90IERldmljZUlkKQoreworICAgIHJldHVybiBzdGQ6
OmZpbmQoc3RkOjpiZWdpbihCcm94dG9uKSwgc3RkOjplbmQoQnJveHRvbiksIERldmljZUlkKSAh
PSBzdGQ6OmVuZChCcm94dG9uKTsKK30KKworYm9vbCBJc0thYnlsYWtlKHVpbnQzMl90IERldmlj
ZUlkKQoreworICAgIHJldHVybiBzdGQ6OmZpbmQoc3RkOjpiZWdpbihLYWJ5bGFrZSksIHN0ZDo6
ZW5kKEthYnlsYWtlKSwgRGV2aWNlSWQpICE9IHN0ZDo6ZW5kKEthYnlsYWtlKTsKK30KKworfSAg
Ly8gbmFtZXNwYWNlIHJ4ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2RyaXZlcl91dGls
cy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2RyaXZl
cl91dGlscy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyYmRjNTAyZmM2MmM1NmQ3OGJiNWMxZWI2NTEzODY5M2Mz
YTg2OGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZHJpdmVyX3V0aWxzLmgKQEAgLTAsMCArMSw3MyBAQAorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKy8vIGRyaXZlcl91dGlscy5oIDogcHJvdmlkZXMgbW9yZSBpbmZvcm1hdGlvbiBhYm91
dCBjdXJyZW50IGRyaXZlci4KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9EUklWRVJfVVRJ
TFNfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfRFJJVkVSX1VUSUxTX0hfCisKKyNpbmNs
dWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCisKK25hbWVzcGFjZSByeAoreworCitlbnVtIFZl
bmRvcklEIDogdWludDMyX3QKK3sKKyAgICBWRU5ET1JfSURfVU5LTk9XTiA9IDB4MCwKKyAgICBW
RU5ET1JfSURfQU1EICAgICA9IDB4MTAwMiwKKyAgICBWRU5ET1JfSURfSU5URUwgICA9IDB4ODA4
NiwKKyAgICBWRU5ET1JfSURfTlZJRElBICA9IDB4MTBERSwKKyAgICAvLyBUaGlzIGlzIFF1YWxj
b21tIFBDSSBWZW5kb3IgSUQuCisgICAgLy8gQW5kcm9pZCBkb2Vzbid0IGhhdmUgYSBQQ0kgYnVz
LCBidXQgYWxsIHdlIG5lZWQgaXMgYSB1bmlxdWUgaWQuCisgICAgVkVORE9SX0lEX1FVQUxDT01N
ID0gMHg1MTQzLAorfTsKKworaW5saW5lIGJvb2wgSXNBTUQodWludDMyX3QgdmVuZG9yX2lkKQor
eworICAgIHJldHVybiB2ZW5kb3JfaWQgPT0gVkVORE9SX0lEX0FNRDsKK30KKworaW5saW5lIGJv
b2wgSXNJbnRlbCh1aW50MzJfdCB2ZW5kb3JfaWQpCit7CisgICAgcmV0dXJuIHZlbmRvcl9pZCA9
PSBWRU5ET1JfSURfSU5URUw7Cit9CisKK2lubGluZSBib29sIElzTnZpZGlhKHVpbnQzMl90IHZl
bmRvcl9pZCkKK3sKKyAgICByZXR1cm4gdmVuZG9yX2lkID09IFZFTkRPUl9JRF9OVklESUE7Cit9
CisKK2lubGluZSBib29sIElzUXVhbGNvbW0odWludDMyX3QgdmVuZG9yX2lkKQoreworICAgIHJl
dHVybiB2ZW5kb3JfaWQgPT0gVkVORE9SX0lEX1FVQUxDT01NOworfQorCisvLyBJbnRlbAorY2xh
c3MgSW50ZWxEcml2ZXJWZXJzaW9uCit7CisgIHB1YmxpYzoKKyAgICAvLyBDdXJyZW50bHksIFdl
IG9ubHkgcHJvdmlkZSB0aGUgY29uc3RydWN0b3Igd2l0aCBvbmUgcGFyYW1ldGVyLiBJdCBtYWlu
bHkgdXNlZCBpbiBJbnRlbAorICAgIC8vIHZlcnNpb24gbnVtYmVyIG9uIHdpbmRvd3MuIElmIHlv
dSB3YW50IHRvIHVzZSB0aGlzIGNsYXNzIG9uIG90aGVyIHBsYXRmb3JtcywgaXQncyBlYXN5IHRv
CisgICAgLy8gYmUgZXh0ZW5kZWQuCisgICAgSW50ZWxEcml2ZXJWZXJzaW9uKHVpbnQxNl90IGxh
c3RQYXJ0KTsKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgSW50ZWxEcml2ZXJWZXJzaW9uICYp
OworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBJbnRlbERyaXZlclZlcnNpb24gJik7CisgICAg
Ym9vbCBvcGVyYXRvcjwoY29uc3QgSW50ZWxEcml2ZXJWZXJzaW9uICYpOworICAgIGJvb2wgb3Bl
cmF0b3I+PShjb25zdCBJbnRlbERyaXZlclZlcnNpb24gJik7CisKKyAgcHJpdmF0ZToKKyAgICB1
aW50MTZfdCBtVmVyc2lvblBhcnQ7Cit9OworCitib29sIElzSGFzd2VsbCh1aW50MzJfdCBEZXZp
Y2VJZCk7Citib29sIElzQnJvYWR3ZWxsKHVpbnQzMl90IERldmljZUlkKTsKK2Jvb2wgSXNDaGVy
cnlWaWV3KHVpbnQzMl90IERldmljZUlkKTsKK2Jvb2wgSXNTa3lsYWtlKHVpbnQzMl90IERldmlj
ZUlkKTsKK2Jvb2wgSXNCcm94dG9uKHVpbnQzMl90IERldmljZUlkKTsKK2Jvb2wgSXNLYWJ5bGFr
ZSh1aW50MzJfdCBEZXZpY2VJZCk7CisKK30gIC8vIG5hbWVzcGFjZSByeAorI2VuZGlmICAvLyBM
SUJBTkdMRV9SRU5ERVJFUl9EUklWRVJfVVRJTFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nZW5fYW5nbGVfZm9ybWF0X3RhYmxl
LnB5IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dlbl9h
bmdsZV9mb3JtYXRfdGFibGUucHkKaW5kZXggMGM2MjMyNGU5NzA1ZjcwNjkzMDlkYmEyYzYwOTU5
MjY5YWVhN2IzYy4uZjQ3YTAyNDVkY2EwMTJkZjkxNjE3NWFjZDA3M2M0MWVlYmVjZThkYSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dl
bl9hbmdsZV9mb3JtYXRfdGFibGUucHkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dlbl9hbmdsZV9mb3JtYXRfdGFibGUucHkKQEAgLTE2LDcgKzE2
LDcgQEAgaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiAKIHRlbXBsYXRlX2F1dG9nZW5faCA9ICIiIi8v
IEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQuCi0vLyBHZW5lcmF0ZWQgYnkgZ2VuX2FuZ2xl
X2Zvcm1hdF90YWJsZS5weSB1c2luZyBkYXRhIGZyb20gYW5nbGVfZm9ybWF0X2RhdGEuanNvbgor
Ly8gR2VuZXJhdGVkIGJ5IHtzY3JpcHRfbmFtZX0gdXNpbmcgZGF0YSBmcm9tIHtkYXRhX3NvdXJj
ZV9uYW1lfQogLy8KIC8vIENvcHlyaWdodCB7Y29weXJpZ2h0X3llYXJ9IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCkBAIC0z
NSw4ICszNSw4IEBAIGVudW0gY2xhc3MgRm9ybWF0OjpJRAogfX0gIC8vIG5hbWVzcGFjZSBhbmds
ZQogIiIiCiAKLXRlbXBsYXRlX2F1dG9nZW5fY3BwID0gIiIiLy8gR0VORVJBVEVEIEZJTEUgLSBE
TyBOT1QgRURJVC4KLS8vIEdlbmVyYXRlZCBieSBnZW5fYW5nbGVfZm9ybWF0X3RhYmxlLnB5IHVz
aW5nIGRhdGEgZnJvbSBhbmdsZV9mb3JtYXRfZGF0YS5qc29uCit0ZW1wbGF0ZV9hdXRvZ2VuX2lu
bCA9ICIiIi8vIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQuCisvLyBHZW5lcmF0ZWQgYnkg
e3NjcmlwdF9uYW1lfSB1c2luZyBkYXRhIGZyb20ge2RhdGFfc291cmNlX25hbWV9CiAvLwogLy8g
Q29weXJpZ2h0IHtjb3B5cmlnaHRfeWVhcn0gVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKQEAgLTU0LDIxICs1NCwyMSBAQCB0
ZW1wbGF0ZV9hdXRvZ2VuX2NwcCA9ICIiIi8vIEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQu
CiBuYW1lc3BhY2UgYW5nbGUKIHt7CiAKK3N0YXRpYyBjb25zdGV4cHIgcng6OkZhc3RDb3B5RnVu
Y3Rpb25NYXA6OkVudHJ5IEJHUkFFbnRyeSA9IHt7R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDb3B5QkdSQThUb1JHQkE4fX07CitzdGF0aWMgY29uc3RleHByIHJ4OjpGYXN0Q29weUZ1
bmN0aW9uTWFwIEJHUkFDb3B5RnVuY3Rpb25zID0ge3smQkdSQUVudHJ5LCAxfX07CitzdGF0aWMg
Y29uc3RleHByIHJ4OjpGYXN0Q29weUZ1bmN0aW9uTWFwIE5vQ29weUZ1bmN0aW9uczsKKworY29u
c3RleHByIEZvcm1hdCBnX2Zvcm1hdEluZm9UYWJsZVtdID0ge3sKKyAgICAvLyBjbGFuZy1mb3Jt
YXQgb2ZmCisgICAge3sgRm9ybWF0OjpJRDo6Tk9ORSwgR0xfTk9ORSwgR0xfTk9ORSwgbnVsbHB0
ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBHTF9OT05FLCAwLCAwLCAwLCAwLCAwLCAwIH19
LAore2FuZ2xlX2Zvcm1hdF9pbmZvX2Nhc2VzfSAgICAvLyBjbGFuZy1mb3JtYXQgb24KK319Owor
CiAvLyBzdGF0aWMKIGNvbnN0IEZvcm1hdCAmRm9ybWF0OjpHZXQoSUQgaWQpCiB7ewotICAgIC8v
IGNsYW5nLWZvcm1hdCBvZmYKLSAgICBzd2l0Y2ggKGlkKQotICAgIHt7Ci17YW5nbGVfZm9ybWF0
X2luZm9fY2FzZXN9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfX0KLSAgICAvLyBjbGFuZy1mb3JtYXQgb24KLQot
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgbm9uZUluZm8oSUQ6Ok5PTkUsIEdMX05PTkUsIEdMX05P
TkUsIG51bGxwdHIsIG51bGxwdHIsIEdMX05PTkUsIDAsIDAsIDAsIDAsIDAsIDApOwotICAgIHJl
dHVybiBub25lSW5mbzsKKyAgICByZXR1cm4gZ19mb3JtYXRJbmZvVGFibGVbc3RhdGljX2Nhc3Q8
c2l6ZV90PihpZCldOwogfX0KIAogfX0gIC8vIG5hbWVzcGFjZSBhbmdsZQpAQCAtMTIzLDU5ICsx
MjMsOSBAQCBkZWYgZ2V0X2NvbG9yX3JlYWRfZnVuY3Rpb24oYW5nbGVfZm9ybWF0KToKICAgICB9
CiAgICAgcmV0dXJuICdSZWFkQ29sb3I8JyArIGNoYW5uZWxfc3RydWN0ICsgJywgJysgY29tcG9u
ZW50X3R5cGVfbWFwW2FuZ2xlX2Zvcm1hdFsnY29tcG9uZW50VHlwZSddXSArICc+JwogCi1mb3Jt
YXRfZW50cnlfdGVtcGxhdGUgPSAiIiJ7c3BhY2V9e3sKLXtzcGFjZX0gICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBpbmZvKElEOjp7aWR9LAote3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAge2dsSW50ZXJuYWxGb3JtYXR9LAote3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAge2Zib0ltcGxlbWVudGF0aW9uSW50ZXJuYWxGb3JtYXR9LAote3NwYWNlfSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAge21pcEdlbmVyYXRpb25GdW5jdGlvbn0sCi17c3BhY2V9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7Y29sb3JSZWFkRnVuY3Rpb259LAote3NwYWNlfSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAge25hbWVkQ29tcG9uZW50VHlwZX0sCi17c3BhY2V9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7Un0sIHtHfSwge0J9LCB7QX0sIHtEfSwge1N9KTsK
LXtzcGFjZX0gICAgcmV0dXJuIGluZm87Ci17c3BhY2V9fX0KK2Zvcm1hdF9lbnRyeV90ZW1wbGF0
ZSA9ICIiIiAgICB7eyBGb3JtYXQ6OklEOjp7aWR9LCB7Z2xJbnRlcm5hbEZvcm1hdH0sIHtmYm9J
bXBsZW1lbnRhdGlvbkludGVybmFsRm9ybWF0fSwge21pcEdlbmVyYXRpb25GdW5jdGlvbn0sIHtm
YXN0Q29weUZ1bmN0aW9uc30sIHtjb2xvclJlYWRGdW5jdGlvbn0sIHtuYW1lZENvbXBvbmVudFR5
cGV9LCB7Un0sIHtHfSwge0J9LCB7QX0sIHtEfSwge1N9IH19LAogIiIiCiAKLWRlZiBnZXRfY29t
cG9uZW50X3R5cGUoZm9ybWF0X2lkKToKLSAgICBpZiAiU05PUk0iIGluIGZvcm1hdF9pZDoKLSAg
ICAgICAgcmV0dXJuICJzbm9ybSIKLSAgICBlbGlmICJVTk9STSIgaW4gZm9ybWF0X2lkOgotICAg
ICAgICByZXR1cm4gInVub3JtIgotICAgIGVsaWYgIkZMT0FUIiBpbiBmb3JtYXRfaWQ6Ci0gICAg
ICAgIHJldHVybiAiZmxvYXQiCi0gICAgZWxpZiAiVUlOVCIgaW4gZm9ybWF0X2lkOgotICAgICAg
ICByZXR1cm4gInVpbnQiCi0gICAgZWxpZiAiU0lOVCIgaW4gZm9ybWF0X2lkOgotICAgICAgICBy
ZXR1cm4gImludCIKLSAgICBlbGlmIGZvcm1hdF9pZCA9PSAiTk9ORSI6Ci0gICAgICAgIHJldHVy
biAibm9uZSIKLSAgICBlbGlmICJTUkdCIiBpbiBmb3JtYXRfaWQ6Ci0gICAgICAgIHJldHVybiAi
dW5vcm0iCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5rbm93biBjb21w
b25lbnQgdHlwZSBmb3IgIiArIGZvcm1hdF9pZCkKLQotZGVmIGdldF9jaGFubmVsX3Rva2Vucyhm
b3JtYXRfaWQpOgotICAgIHIgPSByZS5jb21waWxlKHInKFtBQkRHTFJTXVtcZF0rKScpCi0gICAg
cmV0dXJuIGZpbHRlcihyLm1hdGNoLCByLnNwbGl0KGZvcm1hdF9pZCkpCi0KLWRlZiBnZXRfY2hh
bm5lbHMoZm9ybWF0X2lkKToKLSAgICBjaGFubmVscyA9ICcnCi0gICAgdG9rZW5zID0gZ2V0X2No
YW5uZWxfdG9rZW5zKGZvcm1hdF9pZCkKLSAgICBpZiBsZW4odG9rZW5zKSA9PSAwOgotICAgICAg
ICByZXR1cm4gTm9uZQotICAgIGZvciB0b2tlbiBpbiB0b2tlbnM6Ci0gICAgICAgIGNoYW5uZWxz
ICs9IHRva2VuWzBdLmxvd2VyKCkKLQotICAgIHJldHVybiBjaGFubmVscwotCi1kZWYgZ2V0X2Jp
dHMoZm9ybWF0X2lkKToKLSAgICBiaXRzID0ge30KLSAgICB0b2tlbnMgPSBnZXRfY2hhbm5lbF90
b2tlbnMoZm9ybWF0X2lkKQotICAgIGlmIGxlbih0b2tlbnMpID09IDA6Ci0gICAgICAgIHJldHVy
biBOb25lCi0gICAgZm9yIHRva2VuIGluIHRva2VuczoKLSAgICAgICAgYml0c1t0b2tlblswXV0g
PSBpbnQodG9rZW5bMTpdKQotICAgIHJldHVybiBiaXRzCi0KIGRlZiBnZXRfbmFtZWRfY29tcG9u
ZW50X3R5cGUoY29tcG9uZW50X3R5cGUpOgogICAgIGlmIGNvbXBvbmVudF90eXBlID09ICJzbm9y
bSI6CiAgICAgICAgIHJldHVybiAiR0xfU0lHTkVEX05PUk1BTElaRUQiCkBAIC0xOTcsOCArMTQ3
LDggQEAgZGVmIGpzb25fdG9fdGFibGVfZGF0YShmb3JtYXRfaWQsIGpzb24sIGFuZ2xlX3RvX2ds
KToKICAgICB0YWJsZV9kYXRhID0gIiIKIAogICAgIHBhcnNlZCA9IHsKLSAgICAgICAgInNwYWNl
IjogIiAgICAgICAgIiwKICAgICAgICAgImlkIjogZm9ybWF0X2lkLAorICAgICAgICAiZmFzdENv
cHlGdW5jdGlvbnMiOiAiTm9Db3B5RnVuY3Rpb25zIiwKICAgICB9CiAKICAgICBmb3IgaywgdiBp
biBqc29uLml0ZXJpdGVtcygpOgpAQCAtMjExLDEzICsxNjEsMTMgQEAgZGVmIGpzb25fdG9fdGFi
bGVfZGF0YShmb3JtYXRfaWQsIGpzb24sIGFuZ2xlX3RvX2dsKToKICAgICAgICAgcGFyc2VkWyJm
Ym9JbXBsZW1lbnRhdGlvbkludGVybmFsRm9ybWF0Il0gPSBwYXJzZWRbImdsSW50ZXJuYWxGb3Jt
YXQiXQogCiAgICAgaWYgImNvbXBvbmVudFR5cGUiIG5vdCBpbiBwYXJzZWQ6Ci0gICAgICAgIHBh
cnNlZFsiY29tcG9uZW50VHlwZSJdID0gZ2V0X2NvbXBvbmVudF90eXBlKGZvcm1hdF9pZCkKKyAg
ICAgICAgcGFyc2VkWyJjb21wb25lbnRUeXBlIl0gPSBhbmdsZV9mb3JtYXQuZ2V0X2NvbXBvbmVu
dF90eXBlKGZvcm1hdF9pZCkKIAogICAgIGlmICJjaGFubmVscyIgbm90IGluIHBhcnNlZDoKLSAg
ICAgICAgcGFyc2VkWyJjaGFubmVscyJdID0gZ2V0X2NoYW5uZWxzKGZvcm1hdF9pZCkKKyAgICAg
ICAgcGFyc2VkWyJjaGFubmVscyJdID0gYW5nbGVfZm9ybWF0LmdldF9jaGFubmVscyhmb3JtYXRf
aWQpCiAKICAgICBpZiAiYml0cyIgbm90IGluIHBhcnNlZDoKLSAgICAgICAgcGFyc2VkWyJiaXRz
Il0gPSBnZXRfYml0cyhmb3JtYXRfaWQpCisgICAgICAgIHBhcnNlZFsiYml0cyJdID0gYW5nbGVf
Zm9ybWF0LmdldF9iaXRzKGZvcm1hdF9pZCkKIAogICAgICMgRGVyaXZlZCB2YWx1ZXMuCiAgICAg
cGFyc2VkWyJtaXBHZW5lcmF0aW9uRnVuY3Rpb24iXSA9IGdldF9taXBfZ2VuZXJhdGlvbl9mdW5j
dGlvbihwYXJzZWQpCkBAIC0yMzEsMTQgKzE4MSwxNyBAQCBkZWYganNvbl90b190YWJsZV9kYXRh
KGZvcm1hdF9pZCwganNvbiwgYW5nbGVfdG9fZ2wpOgogCiAgICAgcGFyc2VkWyJuYW1lZENvbXBv
bmVudFR5cGUiXSA9IGdldF9uYW1lZF9jb21wb25lbnRfdHlwZShwYXJzZWRbImNvbXBvbmVudFR5
cGUiXSkKIAorICAgIGlmIGZvcm1hdF9pZCA9PSAiQjhHOFI4QThfVU5PUk0iOgorICAgICAgICBw
YXJzZWRbImZhc3RDb3B5RnVuY3Rpb25zIl0gPSAiQkdSQUNvcHlGdW5jdGlvbnMiCisKICAgICBy
ZXR1cm4gZm9ybWF0X2VudHJ5X3RlbXBsYXRlLmZvcm1hdCgqKnBhcnNlZCkKIAotZGVmIHBhcnNl
X2pzb25faW50b19hbmdsZV9mb3JtYXRfc3dpdGNoX3N0cmluZyhhbGxfYW5nbGUsIGpzb25fZGF0
YSwgYW5nbGVfdG9fZ2wpOgorZGVmIHBhcnNlX2FuZ2xlX2Zvcm1hdF90YWJsZShhbGxfYW5nbGUs
IGpzb25fZGF0YSwgYW5nbGVfdG9fZ2wpOgogICAgIHRhYmxlX2RhdGEgPSAnJwogICAgIGZvciBm
b3JtYXRfaWQgaW4gc29ydGVkKGFsbF9hbmdsZSk6Ci0gICAgICAgIGZvcm1hdF9pbmZvID0ganNv
bl9kYXRhW2Zvcm1hdF9pZF0gaWYgZm9ybWF0X2lkIGluIGpzb25fZGF0YSBlbHNlIHt9Ci0gICAg
ICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgY2FzZSBJRDo6JyArIGZvcm1hdF9pZCArICc6XG4n
Ci0gICAgICAgIHRhYmxlX2RhdGEgKz0ganNvbl90b190YWJsZV9kYXRhKGZvcm1hdF9pZCwgZm9y
bWF0X2luZm8sIGFuZ2xlX3RvX2dsKQorICAgICAgICBpZiBmb3JtYXRfaWQgIT0gIk5PTkUiOgor
ICAgICAgICAgICAgZm9ybWF0X2luZm8gPSBqc29uX2RhdGFbZm9ybWF0X2lkXSBpZiBmb3JtYXRf
aWQgaW4ganNvbl9kYXRhIGVsc2Uge30KKyAgICAgICAgICAgIHRhYmxlX2RhdGEgKz0ganNvbl90
b190YWJsZV9kYXRhKGZvcm1hdF9pZCwgZm9ybWF0X2luZm8sIGFuZ2xlX3RvX2dsKQogCiAgICAg
cmV0dXJuIHRhYmxlX2RhdGEKIApAQCAtMjUyLDIyICsyMDUsMjcgQEAgZGVmIGdlbl9lbnVtX3N0
cmluZyhhbGxfYW5nbGUpOgogCiBnbF90b19hbmdsZSA9IGFuZ2xlX2Zvcm1hdC5sb2FkX2Zvcndh
cmRfdGFibGUoJ2FuZ2xlX2Zvcm1hdF9tYXAuanNvbicpCiBhbmdsZV90b19nbCA9IGFuZ2xlX2Zv
cm1hdC5sb2FkX2ludmVyc2VfdGFibGUoJ2FuZ2xlX2Zvcm1hdF9tYXAuanNvbicpCi1qc29uX2Rh
dGEgPSBhbmdsZV9mb3JtYXQubG9hZF9qc29uKCdhbmdsZV9mb3JtYXRfZGF0YS5qc29uJykKK2Rh
dGFfc291cmNlX25hbWUgPSAnYW5nbGVfZm9ybWF0X2RhdGEuanNvbicKK2pzb25fZGF0YSA9IGFu
Z2xlX2Zvcm1hdC5sb2FkX2pzb24oZGF0YV9zb3VyY2VfbmFtZSkKIGFsbF9hbmdsZSA9IGFuZ2xl
X3RvX2dsLmtleXMoKQogCi1hbmdsZV9mb3JtYXRfY2FzZXMgPSBwYXJzZV9qc29uX2ludG9fYW5n
bGVfZm9ybWF0X3N3aXRjaF9zdHJpbmcoCithbmdsZV9mb3JtYXRfY2FzZXMgPSBwYXJzZV9hbmds
ZV9mb3JtYXRfdGFibGUoCiAgICAgYWxsX2FuZ2xlLCBqc29uX2RhdGEsIGFuZ2xlX3RvX2dsKQot
b3V0cHV0X2NwcCA9IHRlbXBsYXRlX2F1dG9nZW5fY3BwLmZvcm1hdCgKLSAgICBjb3B5cmlnaHRf
eWVhcj1kYXRlLnRvZGF5KCkueWVhciwKLSAgICBhbmdsZV9mb3JtYXRfaW5mb19jYXNlcz1hbmds
ZV9mb3JtYXRfY2FzZXMpCi13aXRoIG9wZW4oJ0Zvcm1hdF9hdXRvZ2VuLmNwcCcsICd3dCcpIGFz
IG91dF9maWxlOgorb3V0cHV0X2NwcCA9IHRlbXBsYXRlX2F1dG9nZW5faW5sLmZvcm1hdCgKKyAg
ICBzY3JpcHRfbmFtZSA9IHN5cy5hcmd2WzBdLAorICAgIGNvcHlyaWdodF95ZWFyID0gZGF0ZS50
b2RheSgpLnllYXIsCisgICAgYW5nbGVfZm9ybWF0X2luZm9fY2FzZXMgPSBhbmdsZV9mb3JtYXRf
Y2FzZXMsCisgICAgZGF0YV9zb3VyY2VfbmFtZSA9IGRhdGFfc291cmNlX25hbWUpCit3aXRoIG9w
ZW4oJ0Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcCcsICd3dCcpIGFzIG91dF9maWxlOgogICAgIG91
dF9maWxlLndyaXRlKG91dHB1dF9jcHApCiAgICAgb3V0X2ZpbGUuY2xvc2UoKQogCiBlbnVtX2Rh
dGEgPSBnZW5fZW51bV9zdHJpbmcoYWxsX2FuZ2xlKQogb3V0cHV0X2ggPSB0ZW1wbGF0ZV9hdXRv
Z2VuX2guZm9ybWF0KAotICAgIGNvcHlyaWdodF95ZWFyPWRhdGUudG9kYXkoKS55ZWFyLAotICAg
IGFuZ2xlX2Zvcm1hdF9lbnVtPWVudW1fZGF0YSkKKyAgICBzY3JpcHRfbmFtZSA9IHN5cy5hcmd2
WzBdLAorICAgIGNvcHlyaWdodF95ZWFyID0gZGF0ZS50b2RheSgpLnllYXIsCisgICAgYW5nbGVf
Zm9ybWF0X2VudW0gPSBlbnVtX2RhdGEsCisgICAgZGF0YV9zb3VyY2VfbmFtZSA9IGRhdGFfc291
cmNlX25hbWUpCiB3aXRoIG9wZW4oJ0Zvcm1hdF9JRF9hdXRvZ2VuLmlubCcsICd3dCcpIGFzIG91
dF9maWxlOgogICAgIG91dF9maWxlLndyaXRlKG91dHB1dF9oKQogICAgIG91dF9maWxlLmNsb3Nl
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9CbGl0R0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL0JsaXRHTC5jcHAKaW5kZXggYjE4MTgyMmZmOGJkYWMxNTg5ZDRlYjg0ZmRh
ZTM5NzUwMGJmNWE5NS4uOGJkNGEzY2JlZDA1MTMyNTI5ZjgxNWVhYjgzYTM1MGQxODA5YWMxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL0JsaXRHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL0JsaXRHTC5jcHAKQEAgLTgsNiArOCw3IEBACiAKICNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuaCIKIAorI2luY2x1ZGUgImNvbW1vbi92ZWN0b3JfdXRp
bHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL0ZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZm9ybWF0
dXRpbHNnbC5oIgpAQCAtMTcsNiArMTgsMTEgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9nbC9TdGF0ZU1hbmFnZXJHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1dv
cmthcm91bmRzR0wuaCIKIAordXNpbmcgYW5nbGU6OlZlY3RvcjI7CisKK25hbWVzcGFjZSByeAor
eworCiBuYW1lc3BhY2UKIHsKIApAQCAtMjQsNiArMzAsNyBAQCBnbDo6RXJyb3IgQ2hlY2tDb21w
aWxlU3RhdHVzKGNvbnN0IHJ4OjpGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBHTHVpbnQgc2hhZGVy
KQogewogICAgIEdMaW50IGNvbXBpbGVTdGF0dXMgPSBHTF9GQUxTRTsKICAgICBmdW5jdGlvbnMt
PmdldFNoYWRlcml2KHNoYWRlciwgR0xfQ09NUElMRV9TVEFUVVMsICZjb21waWxlU3RhdHVzKTsK
KwogICAgIEFTU0VSVChjb21waWxlU3RhdHVzID09IEdMX1RSVUUpOwogICAgIGlmIChjb21waWxl
U3RhdHVzID09IEdMX0ZBTFNFKQogICAgIHsKQEAgLTQ2LDEwICs1Myw2MCBAQCBnbDo6RXJyb3Ig
Q2hlY2tMaW5rU3RhdHVzKGNvbnN0IHJ4OjpGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBHTHVpbnQg
cHJvZ3JhbSkKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotfSAvLyBhbm9ueW1vdXMg
bmFtZXNwYWNlCi0KLW5hbWVzcGFjZSByeAorY2xhc3MgU2NvcGVkR0xTdGF0ZSA6IHB1YmxpYyBh
bmdsZTo6Tm9uQ29weWFibGUKIHsKKyAgcHVibGljOgorICAgIGVudW0KKyAgICB7CisgICAgICAg
IEtFRVBfU0NJU1NPUiA9IDEsCisgICAgfTsKKworICAgIFNjb3BlZEdMU3RhdGUoU3RhdGVNYW5h
Z2VyR0wgKnN0YXRlTWFuYWdlciwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc0dM
ICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICBnbDo6UmVjdGFuZ2xlIHZpZXdwb3J0LAor
ICAgICAgICAgICAgICAgICAgaW50IGtlZXBTdGF0ZSA9IDApCisgICAgICAgIDogbVN0YXRlTWFu
YWdlcihzdGF0ZU1hbmFnZXIpLCBtRnVuY3Rpb25zKGZ1bmN0aW9ucykKKyAgICB7CisgICAgICAg
IGlmICghKGtlZXBTdGF0ZSAmIEtFRVBfU0NJU1NPUikpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1TdGF0ZU1hbmFnZXItPnNldFNjaXNzb3JUZXN0RW5hYmxlZChmYWxzZSk7CisgICAgICAgIH0K
KyAgICAgICAgbVN0YXRlTWFuYWdlci0+c2V0Vmlld3BvcnQodmlld3BvcnQpOworICAgICAgICBt
U3RhdGVNYW5hZ2VyLT5zZXREZXB0aFJhbmdlKDAuMGYsIDEuMGYpOworICAgICAgICBtU3RhdGVN
YW5hZ2VyLT5zZXRCbGVuZEVuYWJsZWQoZmFsc2UpOworICAgICAgICBtU3RhdGVNYW5hZ2VyLT5z
ZXRDb2xvck1hc2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgIG1TdGF0ZU1hbmFn
ZXItPnNldFNhbXBsZUFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoZmFsc2UpOworICAgICAgICBtU3Rh
dGVNYW5hZ2VyLT5zZXRTYW1wbGVDb3ZlcmFnZUVuYWJsZWQoZmFsc2UpOworICAgICAgICBtU3Rh
dGVNYW5hZ2VyLT5zZXREZXB0aFRlc3RFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgbVN0YXRlTWFu
YWdlci0+c2V0U3RlbmNpbFRlc3RFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgbVN0YXRlTWFuYWdl
ci0+c2V0Q3VsbEZhY2VFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+c2V0
UG9seWdvbk9mZnNldEZpbGxFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+
c2V0UmFzdGVyaXplckRpc2NhcmRFbmFibGVkKGZhbHNlKTsKKworICAgICAgICBtU3RhdGVNYW5h
Z2VyLT5wYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPnBh
dXNlQWxsUXVlcmllcygpOworICAgIH0KKworICAgIH5TY29wZWRHTFN0YXRlKCkKKyAgICB7Cisg
ICAgICAgIC8vIFhGQiByZXN1bWluZyB3aWxsIGJlIGRvbmUgYXV0b21hdGljYWxseQorICAgICAg
ICBtU3RhdGVNYW5hZ2VyLT5yZXN1bWVBbGxRdWVyaWVzKCk7CisgICAgfQorCisgICAgdm9pZCB3
aWxsVXNlVGV4dHVyZVVuaXQoaW50IHVuaXQpCisgICAgeworICAgICAgICBpZiAobUZ1bmN0aW9u
cy0+YmluZFNhbXBsZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJp
bmRTYW1wbGVyKHVuaXQsIDApOworICAgICAgICB9CisgICAgfQorCisgIHByaXZhdGU6CisgICAg
U3RhdGVNYW5hZ2VyR0wgKm1TdGF0ZU1hbmFnZXI7CisgICAgY29uc3QgRnVuY3Rpb25zR0wgKm1G
dW5jdGlvbnM7Cit9OworCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIEJsaXRHTDo6Qmxp
dEdMKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCiAgICAgICAgICAgICAgICBjb25zdCBX
b3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5kcywKQEAgLTYxLDggKzExOCwxMSBAQCBCbGl0R0w6OkJs
aXRHTChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAogICAgICAgbVNvdXJjZVRleHR1cmVM
b2NhdGlvbigtMSksCiAgICAgICBtU2NhbGVMb2NhdGlvbigtMSksCiAgICAgICBtT2Zmc2V0TG9j
YXRpb24oLTEpLAorICAgICAgbU11bHRpcGx5QWxwaGFMb2NhdGlvbigtMSksCisgICAgICBtVW5N
dWx0aXBseUFscGhhTG9jYXRpb24oLTEpLAogICAgICAgbVNjcmF0Y2hGQk8oMCksCi0gICAgICBt
VkFPKDApCisgICAgICBtVkFPKDApLAorICAgICAgbVZlcnRleEJ1ZmZlcigwKQogewogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgQXJyYXlTaXplKG1TY3JhdGNoVGV4dHVyZXMpOyBpKyspCiAg
ICAgewpAQCAtMTE2LDYgKzE3Niw5IEBAIGdsOjpFcnJvciBCbGl0R0w6OmNvcHlJbWFnZVRvTFVN
QVdvcmthcm91bmRUZXh0dXJlKEdMdWludCB0ZXh0dXJlLAogCiAgICAgLy8gQWxsb2NhdGUgdGhl
IHRleHR1cmUgbWVtb3J5CiAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZpbnRlcm5hbEZv
cm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0KTsKKwor
ICAgIGdsOjpQaXhlbFVucGFja1N0YXRlIHVucGFjazsKKyAgICBtU3RhdGVNYW5hZ2VyLT5zZXRQ
aXhlbFVucGFja1N0YXRlKHVucGFjayk7CiAgICAgbUZ1bmN0aW9ucy0+dGV4SW1hZ2UyRCh0YXJn
ZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCksIGludGVybmFsRm9ybWF0LCBzb3VyY2VBcmVh
LndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlQXJlYS5oZWlnaHQsIDAs
IGludGVybmFsRm9ybWF0SW5mby5mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
b3VyY2UtPmdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkVHlwZSgpLCBudWxscHRyKTsKQEAgLTE2
OSwyMiArMjMyLDEzIEBAIGdsOjpFcnJvciBCbGl0R0w6OmNvcHlTdWJJbWFnZVRvTFVNQVdvcmth
cm91bmRUZXh0dXJlKEdMdWludCB0ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1TY3JhdGNoVGV4dHVyZXNbMV0sIDApOwogCiAgICAgLy8gUmVuZGVyIHRvIHRo
ZSBkZXN0aW5hdGlvbiB0ZXh0dXJlLCBzYW1wbGluZyBmcm9tIHRoZSBzY3JhdGNoIHRleHR1cmUK
LSAgICBtU3RhdGVNYW5hZ2VyLT5zZXRWaWV3cG9ydChnbDo6UmVjdGFuZ2xlKDAsIDAsIHNvdXJj
ZUFyZWEud2lkdGgsIHNvdXJjZUFyZWEuaGVpZ2h0KSk7Ci0gICAgbVN0YXRlTWFuYWdlci0+c2V0
U2Npc3NvclRlc3RFbmFibGVkKGZhbHNlKTsKLSAgICBtU3RhdGVNYW5hZ2VyLT5zZXREZXB0aFJh
bmdlKDAuMGYsIDEuMGYpOwotICAgIG1TdGF0ZU1hbmFnZXItPnNldEJsZW5kRW5hYmxlZChmYWxz
ZSk7Ci0gICAgbVN0YXRlTWFuYWdlci0+c2V0Q29sb3JNYXNrKHRydWUsIHRydWUsIHRydWUsIHRy
dWUpOwotICAgIG1TdGF0ZU1hbmFnZXItPnNldFNhbXBsZUFscGhhVG9Db3ZlcmFnZUVuYWJsZWQo
ZmFsc2UpOwotICAgIG1TdGF0ZU1hbmFnZXItPnNldFNhbXBsZUNvdmVyYWdlRW5hYmxlZChmYWxz
ZSk7Ci0gICAgbVN0YXRlTWFuYWdlci0+c2V0RGVwdGhUZXN0RW5hYmxlZChmYWxzZSk7Ci0gICAg
bVN0YXRlTWFuYWdlci0+c2V0U3RlbmNpbFRlc3RFbmFibGVkKGZhbHNlKTsKLSAgICBtU3RhdGVN
YW5hZ2VyLT5zZXRDdWxsRmFjZUVuYWJsZWQoZmFsc2UpOwotICAgIG1TdGF0ZU1hbmFnZXItPnNl
dFBvbHlnb25PZmZzZXRGaWxsRW5hYmxlZChmYWxzZSk7Ci0gICAgbVN0YXRlTWFuYWdlci0+c2V0
UmFzdGVyaXplckRpc2NhcmRFbmFibGVkKGZhbHNlKTsKLSAgICBtU3RhdGVNYW5hZ2VyLT5iaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCBtU2NyYXRjaFRleHR1cmVzWzBdKTsKKyAgICBTY29wZWRH
TFN0YXRlIHNjb3BlZFN0YXRlKG1TdGF0ZU1hbmFnZXIsIG1GdW5jdGlvbnMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbDo6UmVjdGFuZ2xlKDAsIDAsIHNvdXJjZUFyZWEud2lkdGgs
IHNvdXJjZUFyZWEuaGVpZ2h0KSk7CisgICAgc2NvcGVkU3RhdGUud2lsbFVzZVRleHR1cmVVbml0
KDApOwogCiAgICAgc2V0U2NyYXRjaFRleHR1cmVQYXJhbWV0ZXIoR0xfVEVYVFVSRV9NSU5fRklM
VEVSLCBHTF9ORUFSRVNUKTsKICAgICBzZXRTY3JhdGNoVGV4dHVyZVBhcmFtZXRlcihHTF9URVhU
VVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOworCiAgICAgbVN0YXRlTWFuYWdlci0+YWN0aXZl
VGV4dHVyZSgwKTsKICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBtU2NyYXRjaFRleHR1cmVzWzBdKTsKIApAQCAtMTkyLDE1ICsyNDYsMjUgQEAgZ2w6OkVycm9y
IEJsaXRHTDo6Y29weVN1YkltYWdlVG9MVU1BV29ya2Fyb3VuZFRleHR1cmUoR0x1aW50IHRleHR1
cmUsCiAgICAgbUZ1bmN0aW9ucy0+dW5pZm9ybTFpKG1Tb3VyY2VUZXh0dXJlTG9jYXRpb24sIDAp
OwogICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0yZihtU2NhbGVMb2NhdGlvbiwgMS4wLCAxLjApOwog
ICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0yZihtT2Zmc2V0TG9jYXRpb24sIDAuMCwgMC4wKTsKKyAg
ICBtRnVuY3Rpb25zLT51bmlmb3JtMWkobU11bHRpcGx5QWxwaGFMb2NhdGlvbiwgMCk7CisgICAg
bUZ1bmN0aW9ucy0+dW5pZm9ybTFpKG1Vbk11bHRpcGx5QWxwaGFMb2NhdGlvbiwgMCk7CiAKICAg
ICBtU3RhdGVNYW5hZ2VyLT5iaW5kVmVydGV4QXJyYXkobVZBTywgMCk7Ci0KICAgICBtRnVuY3Rp
b25zLT5kcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyk7CiAKICAgICAvLyBDb3B5IHRoZSBz
d2l6emxlZCB0ZXh0dXJlIHRvIHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlCiAgICAgbVN0YXRlTWFu
YWdlci0+YmluZFRleHR1cmUodGV4dHVyZVR5cGUsIHRleHR1cmUpOwotICAgIG1GdW5jdGlvbnMt
PmNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwgZGVz
dE9mZnNldC54LCBkZXN0T2Zmc2V0LnksIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwgc291cmNlQXJlYS53aWR0aCwgc291cmNlQXJlYS5oZWlnaHQpOworCisgICAgaWYg
KHRhcmdldCA9PSBHTF9URVhUVVJFXzNEIHx8IHRhcmdldCA9PSBHTF9URVhUVVJFXzJEX0FSUkFZ
KQorICAgIHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+Y29weVRleFN1YkltYWdlM0QodGFyZ2V0LCBz
dGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLCBkZXN0T2Zmc2V0LngsIGRlc3RPZmZzZXQueSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdE9mZnNldC56LCAwLCAwLCBz
b3VyY2VBcmVhLndpZHRoLCBzb3VyY2VBcmVhLmhlaWdodCk7CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIG1GdW5jdGlvbnMtPmNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgc3RhdGlj
X2Nhc3Q8R0xpbnQ+KGxldmVsKSwgZGVzdE9mZnNldC54LCBkZXN0T2Zmc2V0LnksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIHNvdXJjZUFyZWEud2lkdGgsIHNv
dXJjZUFyZWEuaGVpZ2h0KTsKKyAgICB9CiAKICAgICAvLyBGaW5hbGx5IG9ycGhhbiB0aGUgc2Ny
YXRjaCB0ZXh0dXJlcyBzbyB0aGV5IGNhbiBiZSBHQ2VkIGJ5IHRoZSBkcml2ZXIuCiAgICAgb3Jw
aGFuU2NyYXRjaFRleHR1cmVzKCk7CkBAIC0yNzUsMjQgKzMzOSwyNCBAQCBnbDo6RXJyb3IgQmxp
dEdMOjpibGl0Q29sb3JCdWZmZXJXaXRoU2hhZGVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291
cmNlLAogICAgIC8vICAgICAgICAgID0gUCAqIChULnNpemUgLyBELnNpemUpICsgKFQub2Zmc2V0
IC0gRC5vZmZzZXQgKiBULnNpemUgLyBELnNpemUpCiAKICAgICBHTHVpbnQgdGV4dHVyZUlkOwot
ICAgIGdsOjpWZWN0b3IyIFRPZmZzZXQ7Ci0gICAgZ2w6OlZlY3RvcjIgVFNpemU7CisgICAgVmVj
dG9yMiBUT2Zmc2V0OworICAgIFZlY3RvcjIgVFNpemU7CiAKICAgICAvLyBUT0RPKGN3YWxsZXop
IG9uY2UgdGV4dHVyZSBkaXJ0eSBiaXRzIGFyZSBsYW5kZWQsIHJldXNlIGF0dGFjaGVkIHRleHR1
cmUgaW5zdGVhZCBvZiB1c2luZwogICAgIC8vIENvcHlUZXhJbWFnZTJECiAgICAgewogICAgICAg
ICB0ZXh0dXJlSWQgPSBtU2NyYXRjaFRleHR1cmVzWzBdOwotICAgICAgICBUT2Zmc2V0ICAgPSBn
bDo6VmVjdG9yMigwLjAsIDAuMCk7Ci0gICAgICAgIFRTaXplICAgICA9IGdsOjpWZWN0b3IyKDEu
MCwgMS4wKTsKKyAgICAgICAgVE9mZnNldCAgID0gVmVjdG9yMigwLjApOworICAgICAgICBUU2l6
ZSAgICAgPSBWZWN0b3IyKDEuMCk7CiAgICAgICAgIGlmIChzb3VyY2VBcmVhLndpZHRoIDwgMCkK
ICAgICAgICAgewotICAgICAgICAgICAgVE9mZnNldC54ID0gMS4wOwotICAgICAgICAgICAgVFNp
emUueCAgID0gLTEuMDsKKyAgICAgICAgICAgIFRPZmZzZXQueCgpID0gMS4wOworICAgICAgICAg
ICAgVFNpemUueCgpICAgPSAtMS4wOwogICAgICAgICB9CiAgICAgICAgIGlmIChzb3VyY2VBcmVh
LmhlaWdodCA8IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRPZmZzZXQueSA9IDEuMDsKLSAg
ICAgICAgICAgIFRTaXplLnkgICA9IC0xLjA7CisgICAgICAgICAgICBUT2Zmc2V0LnkoKSA9IDEu
MDsKKyAgICAgICAgICAgIFRTaXplLnkoKSAgID0gLTEuMDsKICAgICAgICAgfQogCiAgICAgICAg
IEdMZW51bSBmb3JtYXQgICAgICAgICAgICAgICAgID0gcmVhZEF0dGFjaG1lbnQtPmdldEZvcm1h
dCgpLmluZm8tPmludGVybmFsRm9ybWF0OwpAQCAtMzAyLDEyICszNjYsMTcgQEAgZ2w6OkVycm9y
IEJsaXRHTDo6YmxpdENvbG9yQnVmZmVyV2l0aFNoYWRlcihjb25zdCBnbDo6RnJhbWVidWZmZXIg
KnNvdXJjZSwKIAogICAgICAgICBtRnVuY3Rpb25zLT5jb3B5VGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCBmb3JtYXQsIGluQm91bmRzU291cmNlLngsIGluQm91bmRzU291cmNlLnksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluQm91bmRzU291cmNlLndpZHRoLCBpbkJv
dW5kc1NvdXJjZS5oZWlnaHQsIDApOworCisgICAgICAgIHNldFNjcmF0Y2hUZXh0dXJlUGFyYW1l
dGVyKEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgZmlsdGVyKTsKKyAgICAgICAgc2V0U2NyYXRjaFRl
eHR1cmVQYXJhbWV0ZXIoR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBmaWx0ZXIpOworICAgICAgICBz
ZXRTY3JhdGNoVGV4dHVyZVBhcmFtZXRlcihHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9f
RURHRSk7CisgICAgICAgIHNldFNjcmF0Y2hUZXh0dXJlUGFyYW1ldGVyKEdMX1RFWFRVUkVfV1JB
UF9ULCBHTF9DTEFNUF9UT19FREdFKTsKICAgICB9CiAKICAgICAvLyBDb21wdXRlIG5vcm1hbGl6
ZWQgc2FtcGxlZCBkcmF3IHF1YWQgcmVnaW9uCiAgICAgLy8gSXQgaXMgdGhlIHNhbWUgYXMgdGhl
IHJlZ2lvbiBvZiB0aGUgc291cmNlIHJlY3RhbmdsZSB0aGF0IGlzIGluIGJvdW5kcy4KLSAgICBn
bDo6VmVjdG9yMiBET2Zmc2V0OwotICAgIGdsOjpWZWN0b3IyIERTaXplOworICAgIFZlY3RvcjIg
RE9mZnNldDsKKyAgICBWZWN0b3IyIERTaXplOwogICAgIHsKICAgICAgICAgQVNTRVJUKHNvdXJj
ZUFyZWEud2lkdGggIT0gMCAmJiBzb3VyY2VBcmVhLmhlaWdodCAhPSAwKTsKICAgICAgICAgZ2w6
OlJlY3RhbmdsZSBvcmllbnRlZEluQm91bmRzID0gaW5Cb3VuZHNTb3VyY2U7CkBAIC0zMjMsNDQg
KzM5MiwzMSBAQCBnbDo6RXJyb3IgQmxpdEdMOjpibGl0Q29sb3JCdWZmZXJXaXRoU2hhZGVyKGNv
bnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlLAogICAgICAgICB9CiAKICAgICAgICAgRE9mZnNl
dCA9Ci0gICAgICAgICAgICBnbDo6VmVjdG9yMihzdGF0aWNfY2FzdDxmbG9hdD4ob3JpZW50ZWRJ
bkJvdW5kcy54IC0gc291cmNlQXJlYS54KSAvIHNvdXJjZUFyZWEud2lkdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4ob3JpZW50ZWRJbkJvdW5kcy55IC0gc291
cmNlQXJlYS55KSAvIHNvdXJjZUFyZWEuaGVpZ2h0KTsKLSAgICAgICAgRFNpemUgPSBnbDo6VmVj
dG9yMihzdGF0aWNfY2FzdDxmbG9hdD4ob3JpZW50ZWRJbkJvdW5kcy53aWR0aCkgLyBzb3VyY2VB
cmVhLndpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0
PihvcmllbnRlZEluQm91bmRzLmhlaWdodCkgLyBzb3VyY2VBcmVhLmhlaWdodCk7CisgICAgICAg
ICAgICBWZWN0b3IyKHN0YXRpY19jYXN0PGZsb2F0PihvcmllbnRlZEluQm91bmRzLnggLSBzb3Vy
Y2VBcmVhLngpIC8gc291cmNlQXJlYS53aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KG9yaWVudGVkSW5Cb3VuZHMueSAtIHNvdXJjZUFyZWEueSkgLyBzb3VyY2VB
cmVhLmhlaWdodCk7CisgICAgICAgIERTaXplID0gVmVjdG9yMihzdGF0aWNfY2FzdDxmbG9hdD4o
b3JpZW50ZWRJbkJvdW5kcy53aWR0aCkgLyBzb3VyY2VBcmVhLndpZHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG9yaWVudGVkSW5Cb3VuZHMuaGVpZ2h0KSAv
IHNvdXJjZUFyZWEuaGVpZ2h0KTsKICAgICB9CiAKLSAgICBBU1NFUlQoRFNpemUueCAhPSAwLjAg
JiYgRFNpemUueSAhPSAwLjApOwotICAgIGdsOjpWZWN0b3IyIHRleENvb3JkU2NhbGUgID0gZ2w6
OlZlY3RvcjIoVFNpemUueCAvIERTaXplLngsIFRTaXplLnkgLyBEU2l6ZS55KTsKLSAgICBnbDo6
VmVjdG9yMiB0ZXhDb29yZE9mZnNldCA9IGdsOjpWZWN0b3IyKFRPZmZzZXQueCAtIERPZmZzZXQu
eCAqIHRleENvb3JkU2NhbGUueCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRPZmZzZXQueSAtIERPZmZzZXQueSAqIHRleENvb3JkU2NhbGUueSk7Ci0KLSAg
ICAvLyBSZXNldCBhbGwgdGhlIHN0YXRlIGV4Y2VwdCBzY2lzc29yIGFuZCB2aWV3cG9ydAotICAg
IG1TdGF0ZU1hbmFnZXItPnNldERlcHRoUmFuZ2UoMC4wZiwgMS4wZik7Ci0gICAgbVN0YXRlTWFu
YWdlci0+c2V0QmxlbmRFbmFibGVkKGZhbHNlKTsKLSAgICBtU3RhdGVNYW5hZ2VyLT5zZXRDb2xv
ck1hc2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7Ci0gICAgbVN0YXRlTWFuYWdlci0+c2V0U2Ft
cGxlQWxwaGFUb0NvdmVyYWdlRW5hYmxlZChmYWxzZSk7Ci0gICAgbVN0YXRlTWFuYWdlci0+c2V0
U2FtcGxlQ292ZXJhZ2VFbmFibGVkKGZhbHNlKTsKLSAgICBtU3RhdGVNYW5hZ2VyLT5zZXREZXB0
aFRlc3RFbmFibGVkKGZhbHNlKTsKLSAgICBtU3RhdGVNYW5hZ2VyLT5zZXRTdGVuY2lsVGVzdEVu
YWJsZWQoZmFsc2UpOwotICAgIG1TdGF0ZU1hbmFnZXItPnNldEN1bGxGYWNlRW5hYmxlZChmYWxz
ZSk7Ci0gICAgbVN0YXRlTWFuYWdlci0+c2V0UG9seWdvbk9mZnNldEZpbGxFbmFibGVkKGZhbHNl
KTsKLSAgICBtU3RhdGVNYW5hZ2VyLT5zZXRSYXN0ZXJpemVyRGlzY2FyZEVuYWJsZWQoZmFsc2Up
OwotCi0gICAgLy8gVXNlIHRoZSB2aWV3cG9ydCB0byBkcmF3IGV4YWN0bHkgdG8gdGhlIGRlc3Rp
bmF0aW9uIHJlY3RhbmdsZQotICAgIG1TdGF0ZU1hbmFnZXItPnNldFZpZXdwb3J0KGRlc3RBcmVh
KTsKKyAgICBBU1NFUlQoRFNpemUueCgpICE9IDAuMCAmJiBEU2l6ZS55KCkgIT0gMC4wKTsKKyAg
ICBWZWN0b3IyIHRleENvb3JkU2NhbGUgID0gVFNpemUgLyBEU2l6ZTsKKyAgICBWZWN0b3IyIHRl
eENvb3JkT2Zmc2V0ID0gVE9mZnNldCAtIERPZmZzZXQgKiB0ZXhDb29yZFNjYWxlOworCisgICAg
Ly8gUmVzZXQgYWxsIHRoZSBzdGF0ZSBleGNlcHQgc2Npc3NvciBhbmQgdXNlIHRoZSB2aWV3cG9y
dCB0byBkcmF3IGV4YWN0bHkgdG8gdGhlIGRlc3RpbmF0aW9uCisgICAgLy8gcmVjdGFuZ2xlCisg
ICAgU2NvcGVkR0xTdGF0ZSBzY29wZWRTdGF0ZShtU3RhdGVNYW5hZ2VyLCBtRnVuY3Rpb25zLCBk
ZXN0QXJlYSwgU2NvcGVkR0xTdGF0ZTo6S0VFUF9TQ0lTU09SKTsKKyAgICBzY29wZWRTdGF0ZS53
aWxsVXNlVGV4dHVyZVVuaXQoMCk7CiAKICAgICAvLyBTZXQgdW5pZm9ybXMKLSAgICBzZXRTY3Jh
dGNoVGV4dHVyZVBhcmFtZXRlcihHTF9URVhUVVJFX01JTl9GSUxURVIsIGZpbHRlcik7Ci0gICAg
c2V0U2NyYXRjaFRleHR1cmVQYXJhbWV0ZXIoR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBmaWx0ZXIp
OwotICAgIHNldFNjcmF0Y2hUZXh0dXJlUGFyYW1ldGVyKEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9D
TEFNUF9UT19FREdFKTsKLSAgICBzZXRTY3JhdGNoVGV4dHVyZVBhcmFtZXRlcihHTF9URVhUVVJF
X1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CiAgICAgbVN0YXRlTWFuYWdlci0+YWN0aXZlVGV4
dHVyZSgwKTsKLSAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBt
U2NyYXRjaFRleHR1cmVzWzBdKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCB0ZXh0dXJlSWQpOwogCiAgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbSht
QmxpdFByb2dyYW0pOwogICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0xaShtU291cmNlVGV4dHVyZUxv
Y2F0aW9uLCAwKTsKLSAgICBtRnVuY3Rpb25zLT51bmlmb3JtMmYobVNjYWxlTG9jYXRpb24sIHRl
eENvb3JkU2NhbGUueCwgdGV4Q29vcmRTY2FsZS55KTsKLSAgICBtRnVuY3Rpb25zLT51bmlmb3Jt
MmYobU9mZnNldExvY2F0aW9uLCB0ZXhDb29yZE9mZnNldC54LCB0ZXhDb29yZE9mZnNldC55KTsK
KyAgICBtRnVuY3Rpb25zLT51bmlmb3JtMmYobVNjYWxlTG9jYXRpb24sIHRleENvb3JkU2NhbGUu
eCgpLCB0ZXhDb29yZFNjYWxlLnkoKSk7CisgICAgbUZ1bmN0aW9ucy0+dW5pZm9ybTJmKG1PZmZz
ZXRMb2NhdGlvbiwgdGV4Q29vcmRPZmZzZXQueCgpLCB0ZXhDb29yZE9mZnNldC55KCkpOworICAg
IG1GdW5jdGlvbnMtPnVuaWZvcm0xaShtTXVsdGlwbHlBbHBoYUxvY2F0aW9uLCAwKTsKKyAgICBt
RnVuY3Rpb25zLT51bmlmb3JtMWkobVVuTXVsdGlwbHlBbHBoYUxvY2F0aW9uLCAwKTsKIAogICAg
IGNvbnN0IEZyYW1lYnVmZmVyR0wgKmRlc3RHTCA9IEdldEltcGxBczxGcmFtZWJ1ZmZlckdMPihk
ZXN0KTsKICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJV
RkZFUiwgZGVzdEdMLT5nZXRGcmFtZWJ1ZmZlcklEKCkpOwpAQCAtMzcxLDYgKzQyNywxMTEgQEAg
Z2w6OkVycm9yIEJsaXRHTDo6YmxpdENvbG9yQnVmZmVyV2l0aFNoYWRlcihjb25zdCBnbDo6RnJh
bWVidWZmZXIgKnNvdXJjZSwKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAorZ2w6OkVy
cm9yIEJsaXRHTDo6Y29weVN1YlRleHR1cmUoVGV4dHVyZUdMICpzb3VyY2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc291cmNlTGV2ZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUZXh0dXJlR0wgKmRlc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZGVzdFRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBkZXN0TGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBuZWVkc0x1bWFXb3JrYXJvdW5kLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGx1bWFGb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja0ZsaXBZLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEp
Cit7CisgICAgQU5HTEVfVFJZKGluaXRpYWxpemVSZXNvdXJjZXMoKSk7CisKKyAgICAvLyBTZXR1
cCB0aGUgc291cmNlIHRleHR1cmUKKyAgICBpZiAobmVlZHNMdW1hV29ya2Fyb3VuZCkKKyAgICB7
CisgICAgICAgIEdMaW50IGx1bWluYW5jZSA9IChsdW1hRm9ybWF0ID09IEdMX0FMUEhBKSA/IEdM
X1pFUk8gOiBHTF9SRUQ7CisKKyAgICAgICAgR0xpbnQgYWxwaGEgPSBHTF9SRUQ7CisgICAgICAg
IGlmIChsdW1hRm9ybWF0ID09IEdMX0xVTUlOQU5DRSkKKyAgICAgICAgeworICAgICAgICAgICAg
YWxwaGEgPSBHTF9PTkU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobHVtYUZvcm1hdCA9
PSBHTF9MVU1JTkFOQ0VfQUxQSEEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGFscGhhID0gR0xf
R1JFRU47CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBB
U1NFUlQobHVtYUZvcm1hdCA9PSBHTF9BTFBIQSk7CisgICAgICAgIH0KKworICAgICAgICBHTGlu
dCBzd2l6emxlWzRdID0ge2x1bWluYW5jZSwgbHVtaW5hbmNlLCBsdW1pbmFuY2UsIGFscGhhfTsK
KyAgICAgICAgc291cmNlLT5zZXRTd2l6emxlKHN3aXp6bGUpOworICAgIH0KKyAgICBzb3VyY2Ut
PnNldE1pbkZpbHRlcihHTF9ORUFSRVNUKTsKKyAgICBzb3VyY2UtPnNldE1hZ0ZpbHRlcihHTF9O
RUFSRVNUKTsKKyAgICBzb3VyY2UtPnNldEJhc2VMZXZlbChzdGF0aWNfY2FzdDxHTHVpbnQ+KHNv
dXJjZUxldmVsKSk7CisKKyAgICAvLyBSZW5kZXIgdG8gdGhlIGRlc3RpbmF0aW9uIHRleHR1cmUs
IHNhbXBsaW5nIGZyb20gdGhlIHNvdXJjZSB0ZXh0dXJlCisgICAgU2NvcGVkR0xTdGF0ZSBzY29w
ZWRTdGF0ZSgKKyAgICAgICAgbVN0YXRlTWFuYWdlciwgbUZ1bmN0aW9ucywKKyAgICAgICAgZ2w6
OlJlY3RhbmdsZShkZXN0T2Zmc2V0LngsIGRlc3RPZmZzZXQueSwgc291cmNlQXJlYS53aWR0aCwg
c291cmNlQXJlYS5oZWlnaHQpKTsKKyAgICBzY29wZWRTdGF0ZS53aWxsVXNlVGV4dHVyZVVuaXQo
MCk7CisKKyAgICBtU3RhdGVNYW5hZ2VyLT5hY3RpdmVUZXh0dXJlKDApOworICAgIG1TdGF0ZU1h
bmFnZXItPmJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHNvdXJjZS0+Z2V0VGV4dHVyZUlEKCkp
OworCisgICAgVmVjdG9yMiBzY2FsZShzb3VyY2VBcmVhLndpZHRoIC8gc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHNvdXJjZVNpemUud2lkdGgpLAorICAgICAgICAgICAgICAgICAgc291cmNlQXJlYS5oZWln
aHQgLyBzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlU2l6ZS5oZWlnaHQpKTsKKyAgICBWZWN0b3Iy
IG9mZnNldChzb3VyY2VBcmVhLnggLyBzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlU2l6ZS53aWR0
aCksCisgICAgICAgICAgICAgICAgICAgc291cmNlQXJlYS55IC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHNvdXJjZVNpemUuaGVpZ2h0KSk7CisgICAgaWYgKHVucGFja0ZsaXBZKQorICAgIHsKKyAgICAg
ICAgb2Zmc2V0LnkoKSArPSBzY2FsZS55KCk7CisgICAgICAgIHNjYWxlLnkoKSA9IC1zY2FsZS55
KCk7CisgICAgfQorCisgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtQmxpdFByb2dyYW0p
OworICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0xaShtU291cmNlVGV4dHVyZUxvY2F0aW9uLCAwKTsK
KyAgICBtRnVuY3Rpb25zLT51bmlmb3JtMmYobVNjYWxlTG9jYXRpb24sIHNjYWxlLngoKSwgc2Nh
bGUueSgpKTsKKyAgICBtRnVuY3Rpb25zLT51bmlmb3JtMmYobU9mZnNldExvY2F0aW9uLCBvZmZz
ZXQueCgpLCBvZmZzZXQueSgpKTsKKyAgICBpZiAodW5wYWNrUHJlbXVsdGlwbHlBbHBoYSA9PSB1
bnBhY2tVbm11bHRpcGx5QWxwaGEpCisgICAgeworICAgICAgICBtRnVuY3Rpb25zLT51bmlmb3Jt
MWkobU11bHRpcGx5QWxwaGFMb2NhdGlvbiwgMCk7CisgICAgICAgIG1GdW5jdGlvbnMtPnVuaWZv
cm0xaShtVW5NdWx0aXBseUFscGhhTG9jYXRpb24sIDApOworICAgIH0KKyAgICBlbHNlCisgICAg
eworICAgICAgICBtRnVuY3Rpb25zLT51bmlmb3JtMWkobU11bHRpcGx5QWxwaGFMb2NhdGlvbiwg
dW5wYWNrUHJlbXVsdGlwbHlBbHBoYSk7CisgICAgICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0xaSht
VW5NdWx0aXBseUFscGhhTG9jYXRpb24sIHVucGFja1VubXVsdGlwbHlBbHBoYSk7CisgICAgfQor
CisgICAgbVN0YXRlTWFuYWdlci0+YmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtU2Ny
YXRjaEZCTyk7CisgICAgbUZ1bmN0aW9ucy0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVC
VUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBkZXN0VGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRlc3QtPmdldFRleHR1cmVJRCgpLCBzdGF0aWNfY2FzdDxH
TGludD4oZGVzdExldmVsKSk7CisKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVmVydGV4QXJyYXko
bVZBTywgMCk7CisgICAgbUZ1bmN0aW9ucy0+ZHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMp
OworCisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK2dsOjpFcnJvciBCbGl0R0w6OmNv
cHlUZXhTdWJJbWFnZShUZXh0dXJlR0wgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlR0wgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0KQoreworICAgIEFO
R0xFX1RSWShpbml0aWFsaXplUmVzb3VyY2VzKCkpOworCisgICAgbVN0YXRlTWFuYWdlci0+Ymlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtU2NyYXRjaEZCTyk7CisgICAgbUZ1bmN0aW9u
cy0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1F
TlQwLCBHTF9URVhUVVJFXzJELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNvdXJjZS0+Z2V0VGV4dHVyZUlEKCksIDApOworCisgICAgbVN0YXRlTWFuYWdlci0+YmluZFRl
eHR1cmUoZGVzdC0+Z2V0VGFyZ2V0KCksIGRlc3QtPmdldFRleHR1cmVJRCgpKTsKKworICAgIG1G
dW5jdGlvbnMtPmNvcHlUZXhTdWJJbWFnZTJEKGRlc3QtPmdldFRhcmdldCgpLCAwLCBkZXN0T2Zm
c2V0LngsIGRlc3RPZmZzZXQueSwgc291cmNlQXJlYS54LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNvdXJjZUFyZWEueSwgc291cmNlQXJlYS53aWR0aCwgc291cmNlQXJlYS5o
ZWlnaHQpOworCisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKIGdsOjpFcnJvciBCbGl0
R0w6OmluaXRpYWxpemVSZXNvdXJjZXMoKQogewogICAgIGlmIChtQmxpdFByb2dyYW0gPT0gMCkK
QEAgLTM3OCwyNSArNTM5LDE3IEBAIGdsOjpFcnJvciBCbGl0R0w6OmluaXRpYWxpemVSZXNvdXJj
ZXMoKQogICAgICAgICBtQmxpdFByb2dyYW0gPSBtRnVuY3Rpb25zLT5jcmVhdGVQcm9ncmFtKCk7
CiAKICAgICAgICAgLy8gQ29tcGlsZSB0aGUgZnJhZ21lbnQgc2hhZGVyCi0gICAgICAgIC8vIEl0
IHVzZXMgYSBzaW5nbGUsIGxhcmdlIHRyaWFuZ2xlLCB0byBhdm9pZCBhcml0aG1ldGljIHByZWNp
c2lvbiBpc3N1ZXMgd2hlcmUgZnJhZ21lbnRzCi0gICAgICAgIC8vIHdpdGggdGhlIHNhbWUgWSBj
b29yZGluYXRlIGRvbid0IGdldCBleGFjdGx5IHRoZSBzYW1lIGludGVycG9sYXRlZCB0ZXhjb29y
ZCBZLgogICAgICAgICBjb25zdCBjaGFyICp2c1NvdXJjZSA9Ci0gICAgICAgICAgICAiI3ZlcnNp
b24gMTUwXG4iCi0gICAgICAgICAgICAib3V0IHZlYzIgdl90ZXhjb29yZDtcbiIKKyAgICAgICAg
ICAgICIjdmVyc2lvbiAxMDBcbiIKKyAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhjb29y
ZDtcbiIKICAgICAgICAgICAgICJ1bmlmb3JtIHZlYzIgdV9zY2FsZTtcbiIKICAgICAgICAgICAg
ICJ1bmlmb3JtIHZlYzIgdV9vZmZzZXQ7XG4iCisgICAgICAgICAgICAiYXR0cmlidXRlIHZlYzIg
YV90ZXhjb29yZDtcbiIKICAgICAgICAgICAgICJcbiIKICAgICAgICAgICAgICJ2b2lkIG1haW4o
KVxuIgogICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIgICAgY29uc3QgdmVjMiBxdWFk
X3Bvc2l0aW9uc1szXSA9IHZlYzJbM11cbiIKLSAgICAgICAgICAgICIgICAgKFxuIgotICAgICAg
ICAgICAgIiAgICAgICAgdmVjMigtMC41ZiwgMC4wZiksXG4iCi0gICAgICAgICAgICAiICAgICAg
ICB2ZWMyKCAxLjVmLCAwLjBmKSxcbiIKLSAgICAgICAgICAgICIgICAgICAgIHZlYzIoIDAuNWYs
IDIuMGYpXG4iCi0gICAgICAgICAgICAiICAgICk7XG4iCi0gICAgICAgICAgICAiXG4iCi0gICAg
ICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgocXVhZF9wb3NpdGlvbnNbZ2xfVmVydGV4
SURdICogMi4wKSAtIDEuMCwgMC4wLCAxLjApO1xuIgotICAgICAgICAgICAgIiAgICB2X3RleGNv
b3JkID0gcXVhZF9wb3NpdGlvbnNbZ2xfVmVydGV4SURdICogdV9zY2FsZSArIHVfb2Zmc2V0O1xu
IgorICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoKGFfdGV4Y29vcmQgKiAyLjAp
IC0gMS4wLCAwLjAsIDEuMCk7XG4iCisgICAgICAgICAgICAiICAgIHZfdGV4Y29vcmQgPSBhX3Rl
eGNvb3JkICogdV9zY2FsZSArIHVfb2Zmc2V0O1xuIgogICAgICAgICAgICAgIn1cbiI7CiAKICAg
ICAgICAgR0x1aW50IHZzID0gbUZ1bmN0aW9ucy0+Y3JlYXRlU2hhZGVyKEdMX1ZFUlRFWF9TSEFE
RVIpOwpAQCAtNDExLDEwICs1NjQsMTIgQEAgZ2w6OkVycm9yIEJsaXRHTDo6aW5pdGlhbGl6ZVJl
c291cmNlcygpCiAgICAgICAgIC8vIEl0IGRpc2NhcmRzIGlmIHRoZSB0ZXhjb29yZCBpcyBvdXRz
aWRlICgwLCAxKV4yIHNvIHRoZSBibGl0ZnJhbWVidWZmZXIgd29ya2Fyb3VuZAogICAgICAgICAv
LyBkb2Vzbid0IHdyaXRlIHdoZW4gdGhlIHBvaW50IHNhbXBsZWQgaXMgb3V0c2lkZSBvZiB0aGUg
c291cmNlIGZyYW1lYnVmZmVyLgogICAgICAgICBjb25zdCBjaGFyICpmc1NvdXJjZSA9Ci0gICAg
ICAgICAgICAiI3ZlcnNpb24gMTUwXG4iCisgICAgICAgICAgICAiI3ZlcnNpb24gMTAwXG4iCisg
ICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0OyIKICAgICAgICAgICAgICJ1bmlmb3Jt
IHNhbXBsZXIyRCB1X3NvdXJjZV90ZXh0dXJlO1xuIgotICAgICAgICAgICAgImluIHZlYzIgdl90
ZXhjb29yZDtcbiIKLSAgICAgICAgICAgICJvdXQgdmVjNCBvdXRwdXRfY29sb3I7XG4iCisgICAg
ICAgICAgICAidW5pZm9ybSBib29sIHVfbXVsdGlwbHlfYWxwaGE7XG4iCisgICAgICAgICAgICAi
dW5pZm9ybSBib29sIHVfdW5tdWx0aXBseV9hbHBoYTtcbiIKKyAgICAgICAgICAgICJ2YXJ5aW5n
IHZlYzIgdl90ZXhjb29yZDtcbiIKICAgICAgICAgICAgICJcbiIKICAgICAgICAgICAgICJ2b2lk
IG1haW4oKVxuIgogICAgICAgICAgICAgIntcbiIKQEAgLTQyMiw3ICs1NzcsMTAgQEAgZ2w6OkVy
cm9yIEJsaXRHTDo6aW5pdGlhbGl6ZVJlc291cmNlcygpCiAgICAgICAgICAgICAiICAgIHtcbiIK
ICAgICAgICAgICAgICIgICAgICAgIGRpc2NhcmQ7XG4iCiAgICAgICAgICAgICAiICAgIH1cbiIK
LSAgICAgICAgICAgICIgICAgb3V0cHV0X2NvbG9yID0gdGV4dHVyZSh1X3NvdXJjZV90ZXh0dXJl
LCB2X3RleGNvb3JkKTtcbiIKKyAgICAgICAgICAgICIgICAgdmVjNCBjb2xvciA9IHRleHR1cmUy
RCh1X3NvdXJjZV90ZXh0dXJlLCB2X3RleGNvb3JkKTtcbiIKKyAgICAgICAgICAgICIgICAgaWYg
KHVfbXVsdGlwbHlfYWxwaGEpIHtjb2xvci54eXogPSBjb2xvci54eXogKiBjb2xvci5hO30iCisg
ICAgICAgICAgICAiICAgIGlmICh1X3VubXVsdGlwbHlfYWxwaGEgJiYgY29sb3IuYSAhPSAwLjAp
IHtjb2xvci54eXogPSBjb2xvci54eXogLyBjb2xvci5hO30iCisgICAgICAgICAgICAiICAgIGds
X0ZyYWdDb2xvciA9IGNvbG9yOyIKICAgICAgICAgICAgICJ9XG4iOwogCiAgICAgICAgIEdMdWlu
dCBmcyA9IG1GdW5jdGlvbnMtPmNyZWF0ZVNoYWRlcihHTF9GUkFHTUVOVF9TSEFERVIpOwpAQCAt
NDM2LDEwICs1OTQsMTMgQEAgZ2w6OkVycm9yIEJsaXRHTDo6aW5pdGlhbGl6ZVJlc291cmNlcygp
CiAgICAgICAgIG1GdW5jdGlvbnMtPmxpbmtQcm9ncmFtKG1CbGl0UHJvZ3JhbSk7CiAgICAgICAg
IEFOR0xFX1RSWShDaGVja0xpbmtTdGF0dXMobUZ1bmN0aW9ucywgbUJsaXRQcm9ncmFtKSk7CiAK
KyAgICAgICAgbVRleENvb3JkQXR0cmlidXRlTG9jYXRpb24gPSBtRnVuY3Rpb25zLT5nZXRBdHRy
aWJMb2NhdGlvbihtQmxpdFByb2dyYW0sICJhX3RleGNvb3JkIik7CiAgICAgICAgIG1Tb3VyY2VU
ZXh0dXJlTG9jYXRpb24gPSBtRnVuY3Rpb25zLT5nZXRVbmlmb3JtTG9jYXRpb24obUJsaXRQcm9n
cmFtLCAidV9zb3VyY2VfdGV4dHVyZSIpOwogICAgICAgICBtU2NhbGVMb2NhdGlvbiAgICAgICAg
ID0gbUZ1bmN0aW9ucy0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1CbGl0UHJvZ3JhbSwgInVfc2NhbGUi
KTsKICAgICAgICAgbU9mZnNldExvY2F0aW9uICAgICAgICA9IG1GdW5jdGlvbnMtPmdldFVuaWZv
cm1Mb2NhdGlvbihtQmxpdFByb2dyYW0sICJ1X29mZnNldCIpOwotICAgICAgICBtU3RhdGVNYW5h
Z2VyLT51c2VQcm9ncmFtKG1CbGl0UHJvZ3JhbSk7CisgICAgICAgIG1NdWx0aXBseUFscGhhTG9j
YXRpb24gPSBtRnVuY3Rpb25zLT5nZXRVbmlmb3JtTG9jYXRpb24obUJsaXRQcm9ncmFtLCAidV9t
dWx0aXBseV9hbHBoYSIpOworICAgICAgICBtVW5NdWx0aXBseUFscGhhTG9jYXRpb24gPQorICAg
ICAgICAgICAgbUZ1bmN0aW9ucy0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1CbGl0UHJvZ3JhbSwgInVf
dW5tdWx0aXBseV9hbHBoYSIpOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
QXJyYXlTaXplKG1TY3JhdGNoVGV4dHVyZXMpOyBpKyspCkBAIC00NTUsOSArNjE2LDI5IEBAIGds
OjpFcnJvciBCbGl0R0w6OmluaXRpYWxpemVSZXNvdXJjZXMoKQogICAgICAgICBtRnVuY3Rpb25z
LT5nZW5GcmFtZWJ1ZmZlcnMoMSwgJm1TY3JhdGNoRkJPKTsKICAgICB9CiAKKyAgICBpZiAobVZl
cnRleEJ1ZmZlciA9PSAwKQorICAgIHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+Z2VuQnVmZmVycygx
LCAmbVZlcnRleEJ1ZmZlcik7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRCdWZmZXIoR0xf
QVJSQVlfQlVGRkVSLCBtVmVydGV4QnVmZmVyKTsKKworICAgICAgICAvLyBVc2UgYSBzaW5nbGUs
IGxhcmdlIHRyaWFuZ2xlLCB0byBhdm9pZCBhcml0aG1ldGljIHByZWNpc2lvbiBpc3N1ZXMgd2hl
cmUgZnJhZ21lbnRzCisgICAgICAgIC8vIHdpdGggdGhlIHNhbWUgWSBjb29yZGluYXRlIGRvbid0
IGdldCBleGFjdGx5IHRoZSBzYW1lIGludGVycG9sYXRlZCB0ZXhjb29yZCBZLgorICAgICAgICBm
bG9hdCB2ZXJ0ZXhEYXRhW10gPSB7CisgICAgICAgICAgICAtMC41ZiwgMC4wZiwgMS41ZiwgMC4w
ZiwgMC41ZiwgMi4wZiwKKyAgICAgICAgfTsKKworICAgICAgICBtRnVuY3Rpb25zLT5idWZmZXJE
YXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKGZsb2F0KSAqIDYsIHZlcnRleERhdGEsIEdMX1NU
QVRJQ19EUkFXKTsKKyAgICB9CisKICAgICBpZiAobVZBTyA9PSAwKQogICAgIHsKICAgICAgICAg
bUZ1bmN0aW9ucy0+Z2VuVmVydGV4QXJyYXlzKDEsICZtVkFPKTsKKworICAgICAgICBtU3RhdGVN
YW5hZ2VyLT5iaW5kVmVydGV4QXJyYXkobVZBTywgMCk7CisgICAgICAgIG1TdGF0ZU1hbmFnZXIt
PmJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4QnVmZmVyKTsKKyAgICAgICAgbUZ1
bmN0aW9ucy0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobVRleENvb3JkQXR0cmlidXRlTG9jYXRp
b24pOworICAgICAgICBtRnVuY3Rpb25zLT52ZXJ0ZXhBdHRyaWJQb2ludGVyKG1UZXhDb29yZEF0
dHJpYnV0ZUxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgfQogCiAgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CkBAIC00NjgsNiArNjQ5LDggQEAgdm9pZCBCbGl0R0w6Om9ycGhhblNj
cmF0Y2hUZXh0dXJlcygpCiAgICAgZm9yIChhdXRvIHRleHR1cmUgOiBtU2NyYXRjaFRleHR1cmVz
KQogICAgIHsKICAgICAgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgdGV4dHVyZSk7CisgICAgICAgIGdsOjpQaXhlbFVucGFja1N0YXRlIHVucGFjazsKKyAgICAg
ICAgbVN0YXRlTWFuYWdlci0+c2V0UGl4ZWxVbnBhY2tTdGF0ZSh1bnBhY2spOwogICAgICAgICBt
RnVuY3Rpb25zLT50ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDAsIDAsIDAs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0JsaXRHTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0JsaXRHTC5oCmluZGV4IGIzMDZlZGUyOTk0MDFl
MDc4MTYzYTYyYjdkNTVkNjY3YTFhYjk4ZTAuLjNkM2E4ZGVlM2E4NjRmYTk4NTdjOGQzYTJiYTQ3
OGE2NWU1ZGNkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQmxpdEdMLmgKQEAgLTI1LDYgKzI1LDcgQEAgbmFtZXNw
YWNlIHJ4CiBjbGFzcyBGcmFtZWJ1ZmZlckdMOwogY2xhc3MgRnVuY3Rpb25zR0w7CiBjbGFzcyBT
dGF0ZU1hbmFnZXJHTDsKK2NsYXNzIFRleHR1cmVHTDsKIHN0cnVjdCBXb3JrYXJvdW5kc0dMOwog
CiBjbGFzcyBCbGl0R0wgOiBwdWJsaWMgYW5nbGU6Ok5vbkNvcHlhYmxlCkBAIC00Myw2ICs0NCw3
IEBAIGNsYXNzIEJsaXRHTCA6IHB1YmxpYyBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAm
c291cmNlQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSk7CisKICAgICBn
bDo6RXJyb3IgY29weVN1YkltYWdlVG9MVU1BV29ya2Fyb3VuZFRleHR1cmUoR0x1aW50IHRleHR1
cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0ZXh0dXJlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKQEAgLTU4LDYgKzYwLDI1IEBAIGNsYXNzIEJsaXRH
TCA6IHB1YmxpYyBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZkZXN0QXJlYSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyKTsKIAorICAgIGdsOjpF
cnJvciBjb3B5U3ViVGV4dHVyZShUZXh0dXJlR0wgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IHNvdXJjZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUZXh0dXJlR0wgKmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBkZXN0VGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVzdExl
dmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291
cmNlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9m
ZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBuZWVk
c0x1bWFXb3JrYXJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbHVt
YUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tGbGlwWSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFscGhh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1VubXVsdGlwbHlBbHBo
YSk7CisKKyAgICBnbDo6RXJyb3IgY29weVRleFN1YkltYWdlKFRleHR1cmVHTCAqc291cmNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZUdMICpkZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQp
OworCiAgICAgZ2w6OkVycm9yIGluaXRpYWxpemVSZXNvdXJjZXMoKTsKIAogICBwcml2YXRlOgpA
QCAtNjksMTQgKzkwLDE4IEBAIGNsYXNzIEJsaXRHTCA6IHB1YmxpYyBhbmdsZTo6Tm9uQ29weWFi
bGUKICAgICBTdGF0ZU1hbmFnZXJHTCAqbVN0YXRlTWFuYWdlcjsKIAogICAgIEdMdWludCBtQmxp
dFByb2dyYW07CisgICAgR0xpbnQgbVRleENvb3JkQXR0cmlidXRlTG9jYXRpb247CiAgICAgR0xp
bnQgbVNvdXJjZVRleHR1cmVMb2NhdGlvbjsKICAgICBHTGludCBtU2NhbGVMb2NhdGlvbjsKICAg
ICBHTGludCBtT2Zmc2V0TG9jYXRpb247CisgICAgR0xpbnQgbU11bHRpcGx5QWxwaGFMb2NhdGlv
bjsKKyAgICBHTGludCBtVW5NdWx0aXBseUFscGhhTG9jYXRpb247CiAKICAgICBHTHVpbnQgbVNj
cmF0Y2hUZXh0dXJlc1syXTsKICAgICBHTHVpbnQgbVNjcmF0Y2hGQk87CiAKICAgICBHTHVpbnQg
bVZBTzsKKyAgICBHTHVpbnQgbVZlcnRleEJ1ZmZlcjsKIH07CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9CdWZmZXJHTC5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQnVm
ZmVyR0wuY3BwCmluZGV4IGIyZTJmMTU1Y2U5NTkwMWNhODg2MTBiNWE4MjViN2NlMjhmNDQ5NWEu
LjQ0MWY3OWRiNDg2MDEwOTJiNWM1MWFjODE4YjU2YjJmOTEyYTM5ZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9CdWZmZXJHTC5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L0J1ZmZlckdMLmNwcApAQCAtMjksOCArMjksMTAgQEAgc3RhdGljIGNvbnN0IEdMZW51bSBTb3Vy
Y2VCdWZmZXJPcGVyYXRpb25UYXJnZXQgPSBHTF9DT1BZX1JFQURfQlVGRkVSOwogLy8gc3VwcG9y
dGVkIEdMIHZlcnNpb25zIGFuZCBkb2Vzbid0IGFmZmVjdCBhbnkgY3VycmVudCBzdGF0ZSB3aGVu
IGl0IGNoYW5nZXMuCiBzdGF0aWMgY29uc3QgR0xlbnVtIERlc3RCdWZmZXJPcGVyYXRpb25UYXJn
ZXQgPSBHTF9BUlJBWV9CVUZGRVI7CiAKLUJ1ZmZlckdMOjpCdWZmZXJHTChjb25zdCBGdW5jdGlv
bnNHTCAqZnVuY3Rpb25zLCBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyKQotICAgIDogQnVm
ZmVySW1wbCgpLAorQnVmZmVyR0w6OkJ1ZmZlckdMKGNvbnN0IGdsOjpCdWZmZXJTdGF0ZSAmc3Rh
dGUsCisgICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKKyAg
ICAgICAgICAgICAgICAgICBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyKQorICAgIDogQnVm
ZmVySW1wbChzdGF0ZSksCiAgICAgICBtSXNNYXBwZWQoZmFsc2UpLAogICAgICAgbU1hcE9mZnNl
dCgwKSwKICAgICAgIG1NYXBTaXplKDApLApAQCAtNTMsNyArNTUsMTEgQEAgQnVmZmVyR0w6On5C
dWZmZXJHTCgpCiAgICAgbUJ1ZmZlcklEID0gMDsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlckdMOjpz
ZXREYXRhKEdMZW51bSAvKnRhcmdldCovLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwg
R0xlbnVtIHVzYWdlKQorZ2w6OkVycm9yIEJ1ZmZlckdMOjpzZXREYXRhKENvbnRleHRJbXBsICog
Lypjb250ZXh0Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIC8qdGFyZ2V0
Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdXNhZ2UpCiB7CiAgICAgbVN0YXRlTWFuYWdlci0+YmluZEJ1ZmZlcihE
ZXN0QnVmZmVyT3BlcmF0aW9uVGFyZ2V0LCBtQnVmZmVySUQpOwogICAgIG1GdW5jdGlvbnMtPmJ1
ZmZlckRhdGEoRGVzdEJ1ZmZlck9wZXJhdGlvblRhcmdldCwgc2l6ZSwgZGF0YSwgdXNhZ2UpOwpA
QCAtNzMsMTAgKzc5LDE0IEBAIGdsOjpFcnJvciBCdWZmZXJHTDo6c2V0RGF0YShHTGVudW0gLyp0
YXJnZXQqLywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIEdMCiAKICAgICBtQnVmZmVy
U2l6ZSA9IHNpemU7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlckdMOjpzZXRTdWJEYXRh
KEdMZW51bSAvKnRhcmdldCovLCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90
IG9mZnNldCkKK2dsOjpFcnJvciBCdWZmZXJHTDo6c2V0U3ViRGF0YShDb250ZXh0SW1wbCAqIC8q
Y29udGV4dCovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAvKnRhcmdl
dCovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCkKIHsKICAgICBtU3RhdGVNYW5hZ2VyLT5i
aW5kQnVmZmVyKERlc3RCdWZmZXJPcGVyYXRpb25UYXJnZXQsIG1CdWZmZXJJRCk7CiAgICAgbUZ1
bmN0aW9ucy0+YnVmZmVyU3ViRGF0YShEZXN0QnVmZmVyT3BlcmF0aW9uVGFyZ2V0LCBvZmZzZXQs
IHNpemUsIGRhdGEpOwpAQCAtODYsMTAgKzk2LDE0IEBAIGdsOjpFcnJvciBCdWZmZXJHTDo6c2V0
U3ViRGF0YShHTGVudW0gLyp0YXJnZXQqLywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUs
CiAgICAgICAgIG1lbWNweShtU2hhZG93Q29weS5kYXRhKCkgKyBvZmZzZXQsIGRhdGEsIHNpemUp
OwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgQnVmZmVyR0w6OmNvcHlTdWJEYXRhKEJ1
ZmZlckltcGwqIHNvdXJjZSwgR0xpbnRwdHIgc291cmNlT2Zmc2V0LCBHTGludHB0ciBkZXN0T2Zm
c2V0LCBHTHNpemVpcHRyIHNpemUpCitnbDo6RXJyb3IgQnVmZmVyR0w6OmNvcHlTdWJEYXRhKENv
bnRleHRJbXBsICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZm
ZXJJbXBsICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRy
IHNvdXJjZU9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIg
ZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBz
aXplKQogewogICAgIEJ1ZmZlckdMICpzb3VyY2VHTCA9IEdldEFzPEJ1ZmZlckdMPihzb3VyY2Up
OwogCkBAIC0xMDQsMjkgKzExOCw0MCBAQCBnbDo6RXJyb3IgQnVmZmVyR0w6OmNvcHlTdWJEYXRh
KEJ1ZmZlckltcGwqIHNvdXJjZSwgR0xpbnRwdHIgc291cmNlT2Zmc2V0LCBHTGludAogICAgICAg
ICBtZW1jcHkobVNoYWRvd0NvcHkuZGF0YSgpICsgZGVzdE9mZnNldCwgc291cmNlR0wtPm1TaGFk
b3dDb3B5LmRhdGEoKSArIHNvdXJjZU9mZnNldCwgc2l6ZSk7CiAgICAgfQogCi0gICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
LWdsOjpFcnJvciBCdWZmZXJHTDo6bWFwKEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikK
K2dsOjpFcnJvciBCdWZmZXJHTDo6bWFwKENvbnRleHRJbXBsICpjb250ZXh0LCBHTGVudW0gYWNj
ZXNzLCBHTHZvaWQgKiptYXBQdHIpCiB7CiAgICAgaWYgKG1TaGFkb3dCdWZmZXJEYXRhKQogICAg
IHsKICAgICAgICAgKm1hcFB0ciA9IG1TaGFkb3dDb3B5LmRhdGEoKTsKICAgICB9Ci0gICAgZWxz
ZQorICAgIGVsc2UgaWYgKG1GdW5jdGlvbnMtPm1hcEJ1ZmZlcikKICAgICB7CiAgICAgICAgIG1T
dGF0ZU1hbmFnZXItPmJpbmRCdWZmZXIoRGVzdEJ1ZmZlck9wZXJhdGlvblRhcmdldCwgbUJ1ZmZl
cklEKTsKICAgICAgICAgKm1hcFB0ciA9IG1GdW5jdGlvbnMtPm1hcEJ1ZmZlcihEZXN0QnVmZmVy
T3BlcmF0aW9uVGFyZ2V0LCBhY2Nlc3MpOwogICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICBBU1NFUlQobUZ1bmN0aW9ucy0+bWFwQnVmZmVyUmFuZ2UgJiYgYWNjZXNzID09IEdMX1dSSVRF
X09OTFlfT0VTKTsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+YmluZEJ1ZmZlcihEZXN0QnVmZmVy
T3BlcmF0aW9uVGFyZ2V0LCBtQnVmZmVySUQpOworICAgICAgICAqbWFwUHRyID0KKyAgICAgICAg
ICAgIG1GdW5jdGlvbnMtPm1hcEJ1ZmZlclJhbmdlKERlc3RCdWZmZXJPcGVyYXRpb25UYXJnZXQs
IDAsIG1CdWZmZXJTaXplLCBHTF9NQVBfV1JJVEVfQklUKTsKKyAgICB9CiAKICAgICBtSXNNYXBw
ZWQgPSB0cnVlOwogICAgIG1NYXBPZmZzZXQgPSAwOwogICAgIG1NYXBTaXplICAgPSBtQnVmZmVy
U2l6ZTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgQnVmZmVyR0w6Om1hcFJhbmdlKHNpemVfdCBv
ZmZzZXQsIHNpemVfdCBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIp
CitnbDo6RXJyb3IgQnVmZmVyR0w6Om1hcFJhbmdlKENvbnRleHRJbXBsICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJpdGZpZWxkIGFjY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lk
ICoqbWFwUHRyKQogewogICAgIGlmIChtU2hhZG93QnVmZmVyRGF0YSkKICAgICB7CkBAIC0xNDIs
MTAgKzE2NywxMCBAQCBnbDo6RXJyb3IgQnVmZmVyR0w6Om1hcFJhbmdlKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzLCBHTAogICAgIG1NYXBPZmZzZXQgPSBv
ZmZzZXQ7CiAgICAgbU1hcFNpemUgICA9IGxlbmd0aDsKIAotICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3Ig
QnVmZmVyR0w6OnVubWFwKEdMYm9vbGVhbiAqcmVzdWx0KQorZ2w6OkVycm9yIEJ1ZmZlckdMOjp1
bm1hcChDb250ZXh0SW1wbCAqY29udGV4dCwgR0xib29sZWFuICpyZXN1bHQpCiB7CiAgICAgQVNT
RVJUKHJlc3VsdCk7CiAgICAgQVNTRVJUKG1Jc01hcHBlZCk7CkBAIC0xNjQsNyArMTg5LDcgQEAg
Z2w6OkVycm9yIEJ1ZmZlckdMOjp1bm1hcChHTGJvb2xlYW4gKnJlc3VsdCkKICAgICB9CiAKICAg
ICBtSXNNYXBwZWQgPSBmYWxzZTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsK
KyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEJ1ZmZlckdMOjpnZXRJ
bmRleFJhbmdlKEdMZW51bSB0eXBlLApAQCAtMTkxLDcgKzIxNiw3IEBAIGdsOjpFcnJvciBCdWZm
ZXJHTDo6Z2V0SW5kZXhSYW5nZShHTGVudW0gdHlwZSwKICAgICAgICAgbUZ1bmN0aW9ucy0+dW5t
YXBCdWZmZXIoRGVzdEJ1ZmZlck9wZXJhdGlvblRhcmdldCk7CiAgICAgfQogCi0gICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
IEdMdWludCBCdWZmZXJHTDo6Z2V0QnVmZmVySUQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0J1ZmZlckdMLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQnVmZmVyR0wu
aAppbmRleCA1OTg1ZjhjMmRlNGYzZmIyOWM4MTA3YmRiMjVhMzM4MDgzMTM0NzQ0Li41YmM2MmJj
NTVjYmZlMmMyNGRkM2MzNDZjMDUzNjMxMGIwYTA0MWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQnVmZmVyR0wuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQnVmZmVyR0wu
aApAQCAtMjEsMTUgKzIxLDMzIEBAIGNsYXNzIFN0YXRlTWFuYWdlckdMOwogY2xhc3MgQnVmZmVy
R0wgOiBwdWJsaWMgQnVmZmVySW1wbAogewogICBwdWJsaWM6Ci0gICAgQnVmZmVyR0woY29uc3Qg
RnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlcik7Cisg
ICAgQnVmZmVyR0woY29uc3QgZ2w6OkJ1ZmZlclN0YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICBj
b25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAorICAgICAgICAgICAgIFN0YXRlTWFuYWdlckdM
ICpzdGF0ZU1hbmFnZXIpOwogICAgIH5CdWZmZXJHTCgpIG92ZXJyaWRlOwogCi0gICAgZ2w6OkVy
cm9yIHNldERhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUs
IEdMZW51bSB1c2FnZSkgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIHNldFN1YkRhdGEoR0xlbnVt
IHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBvZmZzZXQpIG92
ZXJyaWRlOwotICAgIGdsOjpFcnJvciBjb3B5U3ViRGF0YShCdWZmZXJJbXBsKiBzb3VyY2UsIEdM
aW50cHRyIHNvdXJjZU9mZnNldCwgR0xpbnRwdHIgZGVzdE9mZnNldCwgR0xzaXplaXB0ciBzaXpl
KSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgbWFwKEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1h
cFB0cikgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIG1hcFJhbmdlKHNpemVfdCBvZmZzZXQsIHNp
emVfdCBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpIG92ZXJyaWRl
OwotICAgIGdsOjpFcnJvciB1bm1hcChHTGJvb2xlYW4gKnJlc3VsdCkgb3ZlcnJpZGU7CisgICAg
Z2w6OkVycm9yIHNldERhdGEoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpk
YXRhLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB1c2FnZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNldFN1YkRhdGEo
Q29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvZmZzZXQpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBjb3B5U3ViRGF0YShDb250
ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklt
cGwgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgc291cmNlT2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBkZXN0T2Zmc2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUpIG92ZXJyaWRlOworICAgIGds
OjpFcnJvciBtYXAoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLCBHTGVudW0gYWNjZXNzLCBHTHZv
aWQgKiptYXBQdHIpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBtYXBSYW5nZShDb250ZXh0SW1w
bCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgIEdMYml0ZmllbGQgYWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKipt
YXBQdHIpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciB1bm1hcChDb250ZXh0SW1wbCAqY29udGV4
dEltcGwsIEdMYm9vbGVhbiAqcmVzdWx0KSBvdmVycmlkZTsKIAogICAgIGdsOjpFcnJvciBnZXRJ
bmRleFJhbmdlKEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBvZmZzZXQsCkBAIC00NSw3ICs2Myw3IEBAIGNsYXNzIEJ1ZmZlckdMIDogcHVibGljIEJ1ZmZl
ckltcGwKICAgICBzaXplX3QgbU1hcFNpemU7CiAKICAgICBib29sIG1TaGFkb3dCdWZmZXJEYXRh
OwotICAgIE1lbW9yeUJ1ZmZlciBtU2hhZG93Q29weTsKKyAgICBhbmdsZTo6TWVtb3J5QnVmZmVy
IG1TaGFkb3dDb3B5OwogCiAgICAgc2l6ZV90IG1CdWZmZXJTaXplOwogCkBAIC01NSw2ICs3Myw2
IEBAIGNsYXNzIEJ1ZmZlckdMIDogcHVibGljIEJ1ZmZlckltcGwKICAgICBHTHVpbnQgbUJ1ZmZl
cklEOwogfTsKIAotfQorfSAgLy8gbmFtZXNwYWNlIHJ4CiAKICNlbmRpZiAvLyBMSUJBTkdMRV9S
RU5ERVJFUl9HTF9CVUZGRVJHTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0NvbXBpbGVyR0wuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db21waWxlckdMLmgKaW5kZXggZWFk
YmY2N2VkYjNlYzcyMTk3ZmUxYjdjYTQ1ZDA1ZjQ1NGExYzgwYS4uNGM0MTA0ZmEyMTk5NTU4NjJi
NjllYzVhYjg0OTA0ODRhZjA3MGNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0NvbXBpbGVyR0wuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29tcGlsZXJHTC5oCkBAIC0y
MSw3ICsyMSw3IEBAIGNsYXNzIENvbXBpbGVyR0wgOiBwdWJsaWMgQ29tcGlsZXJJbXBsCiAgICAg
Q29tcGlsZXJHTChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zKTsKICAgICB+Q29tcGlsZXJH
TCgpIG92ZXJyaWRlIHt9CiAKLSAgICBnbDo6RXJyb3IgcmVsZWFzZSgpIG92ZXJyaWRlIHsgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7IH0KKyAgICBnbDo6RXJyb3IgcmVsZWFzZSgpIG92
ZXJyaWRlIHsgcmV0dXJuIGdsOjpOb0Vycm9yKCk7IH0KICAgICBTaFNoYWRlck91dHB1dCBnZXRU
cmFuc2xhdG9yT3V0cHV0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1UcmFuc2xhdG9y
T3V0cHV0VHlwZTsgfQogCiAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29udGV4dEdMLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wuY3BwCmlu
ZGV4IDhkOWU2ZDYyNjM0NDA2Y2MxZjc2OWJjMGE2NmU3MWM3ZDQzYzM3MTUuLjBlNWMxNGM2Mjk2
ZjUxZDJhOWQ0NDNmZTc5MWMyYmUwZjU4YjhjNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wuY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wu
Y3BwCkBAIC03OCw5ICs3OCw5IEBAIFJlbmRlcmJ1ZmZlckltcGwgKkNvbnRleHRHTDo6Y3JlYXRl
UmVuZGVyYnVmZmVyKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE5hdGl2ZVRl
eHR1cmVDYXBzKCkpOwogfQogCi1CdWZmZXJJbXBsICpDb250ZXh0R0w6OmNyZWF0ZUJ1ZmZlcigp
CitCdWZmZXJJbXBsICpDb250ZXh0R0w6OmNyZWF0ZUJ1ZmZlcihjb25zdCBnbDo6QnVmZmVyU3Rh
dGUgJnN0YXRlKQogewotICAgIHJldHVybiBuZXcgQnVmZmVyR0woZ2V0RnVuY3Rpb25zKCksIGdl
dFN0YXRlTWFuYWdlcigpKTsKKyAgICByZXR1cm4gbmV3IEJ1ZmZlckdMKHN0YXRlLCBnZXRGdW5j
dGlvbnMoKSwgZ2V0U3RhdGVNYW5hZ2VyKCkpOwogfQogCiBWZXJ0ZXhBcnJheUltcGwgKkNvbnRl
eHRHTDo6Y3JlYXRlVmVydGV4QXJyYXkoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJmRhdGEp
CkBAIC05MCw3ICs5MCwxNCBAQCBWZXJ0ZXhBcnJheUltcGwgKkNvbnRleHRHTDo6Y3JlYXRlVmVy
dGV4QXJyYXkoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJmRhdGEpCiAKIFF1ZXJ5SW1wbCAq
Q29udGV4dEdMOjpjcmVhdGVRdWVyeShHTGVudW0gdHlwZSkKIHsKLSAgICByZXR1cm4gbmV3IFF1
ZXJ5R0wodHlwZSwgZ2V0RnVuY3Rpb25zKCksIGdldFN0YXRlTWFuYWdlcigpKTsKKyAgICBzd2l0
Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0NPTU1BTkRTX0NPTVBMRVRFRF9DSFJP
TUlVTToKKyAgICAgICAgICAgIHJldHVybiBuZXcgU3luY1F1ZXJ5R0wodHlwZSwgZ2V0RnVuY3Rp
b25zKCksIGdldFN0YXRlTWFuYWdlcigpKTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgcmV0dXJuIG5ldyBTdGFuZGFyZFF1ZXJ5R0wodHlwZSwgZ2V0RnVuY3Rpb25zKCksIGdldFN0
YXRlTWFuYWdlcigpKTsKKyAgICB9CiB9CiAKIEZlbmNlTlZJbXBsICpDb250ZXh0R0w6OmNyZWF0
ZUZlbmNlTlYoKQpAQCAtMTg3LDYgKzE5NCwxNiBAQCBnbDo6RXJyb3IgQ29udGV4dEdMOjpkcmF3
UmFuZ2VFbGVtZW50cyhHTGVudW0gbW9kZSwKICAgICByZXR1cm4gbVJlbmRlcmVyLT5kcmF3UmFu
Z2VFbGVtZW50cyhtU3RhdGUsIG1vZGUsIHN0YXJ0LCBlbmQsIGNvdW50LCB0eXBlLCBpbmRpY2Vz
LCBpbmRleFJhbmdlKTsKIH0KIAorZ2w6OkVycm9yIENvbnRleHRHTDo6ZHJhd0FycmF5c0luZGly
ZWN0KEdMZW51bSBtb2RlLCBjb25zdCBHTHZvaWQgKmluZGlyZWN0KQoreworICAgIHJldHVybiBt
UmVuZGVyZXItPmRyYXdBcnJheXNJbmRpcmVjdChtU3RhdGUsIG1vZGUsIGluZGlyZWN0KTsKK30K
KworZ2w6OkVycm9yIENvbnRleHRHTDo6ZHJhd0VsZW1lbnRzSW5kaXJlY3QoR0xlbnVtIG1vZGUs
IEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGlyZWN0KQoreworICAgIHJldHVybiBtUmVu
ZGVyZXItPmRyYXdFbGVtZW50c0luZGlyZWN0KG1TdGF0ZSwgbW9kZSwgdHlwZSwgaW5kaXJlY3Qp
OworfQorCiB2b2lkIENvbnRleHRHTDo6c3RlbmNpbEZpbGxQYXRoKGNvbnN0IGdsOjpQYXRoICpw
YXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKQogewogICAgIG1SZW5kZXJlci0+c3Rl
bmNpbEZpbGxQYXRoKG1TdGF0ZSwgcGF0aCwgZmlsbE1vZGUsIG1hc2spOwpAQCAtMzExLDkgKzMy
OCw5IEBAIHZvaWQgQ29udGV4dEdMOjpwb3BHcm91cE1hcmtlcigpCiAgICAgbVJlbmRlcmVyLT5w
b3BHcm91cE1hcmtlcigpOwogfQogCi12b2lkIENvbnRleHRHTDo6c3luY1N0YXRlKGNvbnN0IGds
OjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpCit2
b2lkIENvbnRleHRHTDo6c3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZkaXJ0
eUJpdHMpCiB7Ci0gICAgbVJlbmRlcmVyLT5nZXRTdGF0ZU1hbmFnZXIoKS0+c3luY1N0YXRlKHN0
YXRlLCBkaXJ0eUJpdHMpOworICAgIG1SZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCktPnN5bmNT
dGF0ZShtU3RhdGUsIGRpcnR5Qml0cyk7CiB9CiAKIEdMaW50IENvbnRleHRHTDo6Z2V0R1BVRGlz
am9pbnQoKQpAQCAtMzYyLDkgKzM3OSwxNCBAQCBTdGF0ZU1hbmFnZXJHTCAqQ29udGV4dEdMOjpn
ZXRTdGF0ZU1hbmFnZXIoKQogICAgIHJldHVybiBtUmVuZGVyZXItPmdldFN0YXRlTWFuYWdlcigp
OwogfQogCi1jb25zdCBXb3JrYXJvdW5kc0dMICZDb250ZXh0R0w6OmdldFdvcmthcm91bmRzR0wo
KQorY29uc3QgV29ya2Fyb3VuZHNHTCAmQ29udGV4dEdMOjpnZXRXb3JrYXJvdW5kc0dMKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpOwogfQogCitnbDo6
RXJyb3IgQ29udGV4dEdMOjpkaXNwYXRjaENvbXB1dGUoR0x1aW50IG51bUdyb3Vwc1gsIEdMdWlu
dCBudW1Hcm91cHNZLCBHTHVpbnQgbnVtR3JvdXBzWikKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVy
LT5kaXNwYXRjaENvbXB1dGUobVN0YXRlLCBudW1Hcm91cHNYLCBudW1Hcm91cHNZLCBudW1Hcm91
cHNaKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29udGV4dEdMLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29udGV4dEdMLmgKaW5k
ZXggNzk4YTkwNDM2NjczNmY3NGI2NDQ1ZjZmNGM1NmJhNzkzYjJmMWZjZC4uZDk1NzgwYjg4NGJm
ZTU1YTI3YTJkZDZmNjQyNzg0MmY4NTFiYmQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0NvbnRleHRHTC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wuaApA
QCAtNDcsNyArNDcsNyBAQCBjbGFzcyBDb250ZXh0R0wgOiBwdWJsaWMgQ29udGV4dEltcGwKICAg
ICBSZW5kZXJidWZmZXJJbXBsICpjcmVhdGVSZW5kZXJidWZmZXIoKSBvdmVycmlkZTsKIAogICAg
IC8vIEJ1ZmZlciBjcmVhdGlvbgotICAgIEJ1ZmZlckltcGwgKmNyZWF0ZUJ1ZmZlcigpIG92ZXJy
aWRlOworICAgIEJ1ZmZlckltcGwgKmNyZWF0ZUJ1ZmZlcihjb25zdCBnbDo6QnVmZmVyU3RhdGUg
JnN0YXRlKSBvdmVycmlkZTsKIAogICAgIC8vIFZlcnRleCBBcnJheSBjcmVhdGlvbgogICAgIFZl
cnRleEFycmF5SW1wbCAqY3JlYXRlVmVydGV4QXJyYXkoY29uc3QgZ2w6OlZlcnRleEFycmF5U3Rh
dGUgJmRhdGEpIG92ZXJyaWRlOwpAQCAtOTYsNiArOTYsOCBAQCBjbGFzcyBDb250ZXh0R0wgOiBw
dWJsaWMgQ29udGV4dEltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5k
aWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFu
Z2UgJmluZGV4UmFuZ2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBkcmF3QXJyYXlzSW5kaXJl
Y3QoR0xlbnVtIG1vZGUsIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpIG92ZXJyaWRlOworICAgIGds
OjpFcnJvciBkcmF3RWxlbWVudHNJbmRpcmVjdChHTGVudW0gbW9kZSwgR0xlbnVtIHR5cGUsIGNv
bnN0IEdMdm9pZCAqaW5kaXJlY3QpIG92ZXJyaWRlOwogCiAgICAgLy8gQ0hST01JVU1fcGF0aF9y
ZW5kZXJpbmcgaW1wbGVtZW50YXRpb24KICAgICB2b2lkIHN0ZW5jaWxGaWxsUGF0aChjb25zdCBn
bDo6UGF0aCAqcGF0aCwgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQgbWFzaykgb3ZlcnJpZGU7CkBA
IC0xNTQsNyArMTU2LDcgQEAgY2xhc3MgQ29udGV4dEdMIDogcHVibGljIENvbnRleHRJbXBsCiAg
ICAgdm9pZCBwb3BHcm91cE1hcmtlcigpIG92ZXJyaWRlOwogCiAgICAgLy8gU3RhdGUgc3luYyB3
aXRoIGRpcnR5IGJpdHMuCi0gICAgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRlICZzdGF0
ZSwgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3ZlcnJpZGU7CisgICAg
dm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3Zl
cnJpZGU7CiAKICAgICAvLyBEaXNqb2ludCB0aW1lciBxdWVyaWVzCiAgICAgR0xpbnQgZ2V0R1BV
RGlzam9pbnQoKSBvdmVycmlkZTsKQEAgLTE3Miw3ICsxNzQsOSBAQCBjbGFzcyBDb250ZXh0R0wg
OiBwdWJsaWMgQ29udGV4dEltcGwKICAgICAvLyBIYW5kbGUgaGVscGVycwogICAgIGNvbnN0IEZ1
bmN0aW9uc0dMICpnZXRGdW5jdGlvbnMoKSBjb25zdDsKICAgICBTdGF0ZU1hbmFnZXJHTCAqZ2V0
U3RhdGVNYW5hZ2VyKCk7Ci0gICAgY29uc3QgV29ya2Fyb3VuZHNHTCAmZ2V0V29ya2Fyb3VuZHNH
TCgpOworICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJmdldFdvcmthcm91bmRzR0woKSBjb25zdDsK
KworICAgIGdsOjpFcnJvciBkaXNwYXRjaENvbXB1dGUoR0x1aW50IG51bUdyb3Vwc1gsIEdMdWlu
dCBudW1Hcm91cHNZLCBHTHVpbnQgbnVtR3JvdXBzWikgb3ZlcnJpZGU7CiAKICAgcHJpdmF0ZToK
ICAgICBSZW5kZXJlckdMICptUmVuZGVyZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGxheUdMLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9EaXNwbGF5R0wuY3BwCmlu
ZGV4IGU1NzUxMzMyNjM2YjQ4NmRiOGVjMTcyZmYyMDJkN2NhN2VjMWFkYmEuLmRlMzNiYmI2YzMw
ZDM0MTZmNmMxYTYzNzI4ZWU2ZGIyMmFlN2Y4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9EaXNwbGF5R0wuY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9EaXNwbGF5R0wu
Y3BwCkBAIC0yMiw4ICsyMiw4IEBACiBuYW1lc3BhY2UgcngKIHsKIAotRGlzcGxheUdMOjpEaXNw
bGF5R0woKQotICAgIDogbVJlbmRlcmVyKG51bGxwdHIpCitEaXNwbGF5R0w6OkRpc3BsYXlHTChj
b25zdCBlZ2w6OkRpc3BsYXlTdGF0ZSAmc3RhdGUpCisgICAgOiBEaXNwbGF5SW1wbChzdGF0ZSks
IG1SZW5kZXJlcihudWxscHRyKSwgbUN1cnJlbnREcmF3U3VyZmFjZShudWxscHRyKQogewogfQog
CkBAIC03MywxNyArNzMsMzQgQEAgU3RyZWFtUHJvZHVjZXJJbXBsICpEaXNwbGF5R0w6OmNyZWF0
ZVN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTIoCiAKIGVnbDo6RXJyb3IgRGlzcGxheUdMOjpt
YWtlQ3VycmVudChlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLCBlZ2w6OlN1cmZhY2UgKnJlYWRT
dXJmYWNlLCBnbDo6Q29udGV4dCAqY29udGV4dCkKIHsKLSAgICBpZiAoIWRyYXdTdXJmYWNlKQor
ICAgIC8vIE5vdGlmeSB0aGUgcHJldmlvdXMgc3VyZmFjZSAoaWYgaXQgc3RpbGwgZXhpc3RzKSB0
aGF0IGl0IGlzIG5vIGxvbmdlciBjdXJyZW50CisgICAgaWYgKG1DdXJyZW50RHJhd1N1cmZhY2Ug
JiYKKyAgICAgICAgbVN0YXRlLnN1cmZhY2VTZXQuZmluZChtQ3VycmVudERyYXdTdXJmYWNlKSAh
PSBtU3RhdGUuc3VyZmFjZVNldC5lbmQoKSkKKyAgICB7CisgICAgICAgIEFOR0xFX1RSWShHZXRJ
bXBsQXM8U3VyZmFjZUdMPihtQ3VycmVudERyYXdTdXJmYWNlKS0+dW5NYWtlQ3VycmVudCgpKTsK
KyAgICB9CisgICAgbUN1cnJlbnREcmF3U3VyZmFjZSA9IG51bGxwdHI7CisKKyAgICBpZiAoIWNv
bnRleHQpCiAgICAgewogICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiAg
ICAgfQogCiAgICAgLy8gUGF1c2UgdHJhbnNmb3JtIGZlZWRiYWNrIGJlZm9yZSBtYWtpbmcgYSBu
ZXcgc3VyZmFjZSBjdXJyZW50LCB0byB3b3JrYXJvdW5kIGFuZ2xlYnVnLmNvbS8xNDI2CiAgICAg
Q29udGV4dEdMICpnbENvbnRleHQgPSBHZXRJbXBsQXM8Q29udGV4dEdMPihjb250ZXh0KTsKLSAg
ICBnbENvbnRleHQtPmdldFN0YXRlTWFuYWdlcigpLT5wYXVzZVRyYW5zZm9ybUZlZWRiYWNrKGNv
bnRleHQtPmdldENvbnRleHRTdGF0ZSgpKTsKKyAgICBnbENvbnRleHQtPmdldFN0YXRlTWFuYWdl
cigpLT5wYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCk7CiAKLSAgICBTdXJmYWNlR0wgKmdsRHJhd1N1
cmZhY2UgPSBHZXRJbXBsQXM8U3VyZmFjZUdMPihkcmF3U3VyZmFjZSk7Ci0gICAgcmV0dXJuIGds
RHJhd1N1cmZhY2UtPm1ha2VDdXJyZW50KCk7CisgICAgaWYgKGRyYXdTdXJmYWNlICE9IG51bGxw
dHIpCisgICAgeworICAgICAgICBTdXJmYWNlR0wgKmdsRHJhd1N1cmZhY2UgPSBHZXRJbXBsQXM8
U3VyZmFjZUdMPihkcmF3U3VyZmFjZSk7CisgICAgICAgIEFOR0xFX1RSWShnbERyYXdTdXJmYWNl
LT5tYWtlQ3VycmVudCgpKTsKKyAgICAgICAgbUN1cnJlbnREcmF3U3VyZmFjZSA9IGRyYXdTdXJm
YWNlOworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlQ3VycmVudFN1cmZhY2VsZXNzKGNvbnRl
eHQpOworICAgIH0KIH0KIAogZ2w6OlZlcnNpb24gRGlzcGxheUdMOjpnZXRNYXhTdXBwb3J0ZWRF
U1ZlcnNpb24oKSBjb25zdApAQCAtOTEsNCArMTA4LDEwIEBAIGdsOjpWZXJzaW9uIERpc3BsYXlH
TDo6Z2V0TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCkgY29uc3QKICAgICBBU1NFUlQobVJlbmRlcmVy
ICE9IG51bGxwdHIpOwogICAgIHJldHVybiBtUmVuZGVyZXItPmdldE1heFN1cHBvcnRlZEVTVmVy
c2lvbigpOwogfQorCitlZ2w6OkVycm9yIERpc3BsYXlHTDo6bWFrZUN1cnJlbnRTdXJmYWNlbGVz
cyhnbDo6Q29udGV4dCAqY29udGV4dCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0
dXJuIGVnbDo6Tm9FcnJvcigpOworfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Rpc3BsYXlHTC5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Rpc3BsYXlHTC5oCmluZGV4IDlm
NjUxNTg4NjhiNzQ4ZTVhM2E0ZGY2MmRjOTQ3MWUwNTI2ZDczNTIuLjViZWE5Yjc1YmFjNGI0Njc1
MjkyODJmOWZlZTQwMDRkNDZlNTliYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9EaXNwbGF5R0wuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGxheUdMLmgKQEAgLTEy
LDYgKzEyLDExIEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRGlzcGxheUltcGwuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5oIgogCituYW1lc3Bh
Y2UgZWdsCit7CitjbGFzcyBTdXJmYWNlOworfQorCiBuYW1lc3BhY2UgcngKIHsKIApAQCAtMjAs
NyArMjUsNyBAQCBjbGFzcyBSZW5kZXJlckdMOwogY2xhc3MgRGlzcGxheUdMIDogcHVibGljIERp
c3BsYXlJbXBsCiB7CiAgIHB1YmxpYzoKLSAgICBEaXNwbGF5R0woKTsKKyAgICBEaXNwbGF5R0wo
Y29uc3QgZWdsOjpEaXNwbGF5U3RhdGUgJnN0YXRlKTsKICAgICB+RGlzcGxheUdMKCkgb3ZlcnJp
ZGU7CiAKICAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoZWdsOjpEaXNwbGF5ICpkaXNwbGF5KSBv
dmVycmlkZTsKQEAgLTM4LDcgKzQzLDYgQEAgY2xhc3MgRGlzcGxheUdMIDogcHVibGljIERpc3Bs
YXlJbXBsCiAKICAgICBlZ2w6OkVycm9yIG1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqZHJhd1N1
cmZhY2UsIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZhY2UsIGdsOjpDb250ZXh0ICpjb250ZXh0KSBv
dmVycmlkZTsKIAotICAgIHZpcnR1YWwgZWdsOjpFcnJvciBnZXREcml2ZXJWZXJzaW9uKHN0ZDo6
c3RyaW5nICp2ZXJzaW9uKSBjb25zdCA9IDA7CiAgICAgZ2w6OlZlcnNpb24gZ2V0TWF4U3VwcG9y
dGVkRVNWZXJzaW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgcHJvdGVjdGVkOgpAQCAtNDYsOCAr
NTAsMTEgQEAgY2xhc3MgRGlzcGxheUdMIDogcHVibGljIERpc3BsYXlJbXBsCiAKICAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIGNvbnN0IEZ1bmN0aW9uc0dMICpnZXRGdW5jdGlvbnNHTCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGVnbDo6RXJyb3IgbWFrZUN1cnJlbnRTdXJmYWNlbGVzcyhnbDo6
Q29udGV4dCAqY29udGV4dCk7CiAKICAgICBSZW5kZXJlckdMICptUmVuZGVyZXI7CisKKyAgICBl
Z2w6OlN1cmZhY2UgKm1DdXJyZW50RHJhd1N1cmZhY2U7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRmVuY2VOVkdM
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9G
ZW5jZU5WR0wuY3BwCmluZGV4IGI0NjMwNTRjMzU2OGIyOTA3Zjg2YjljZDM5NDU1OTQxYjliZjNj
OWYuLmY0YzM3Nzg1YTdiNjIzNTBhYzEzNzFiNjk1ZWRmMGQ3NjRkNzEzYzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9GZW5jZU5W
R0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9GZW5jZU5WR0wuY3BwCkBAIC0zMiwyMCArMzIsMjAgQEAgZ2w6OkVycm9yIEZlbmNlTlZH
TDo6c2V0KEdMZW51bSBjb25kaXRpb24pCiB7CiAgICAgQVNTRVJUKGNvbmRpdGlvbiA9PSBHTF9B
TExfQ09NUExFVEVEX05WKTsKICAgICBtRnVuY3Rpb25zLT5zZXRGZW5jZU5WKG1GZW5jZSwgY29u
ZGl0aW9uKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEZlbmNlTlZHTDo6dGVzdChHTGJvb2xlYW4g
Km91dEZpbmlzaGVkKQogewogICAgIEFTU0VSVChvdXRGaW5pc2hlZCk7CiAgICAgKm91dEZpbmlz
aGVkID0gbUZ1bmN0aW9ucy0+dGVzdEZlbmNlTlYobUZlbmNlKTsKLSAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVy
cm9yIEZlbmNlTlZHTDo6ZmluaXNoKCkKIHsKICAgICBtRnVuY3Rpb25zLT5maW5pc2hGZW5jZU5W
KG1GZW5jZSk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9GZW5jZVN5bmNHTC5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRmVuY2VTeW5jR0wuY3BwCmlu
ZGV4IGEzNTg5Yjk1ZTljYWZmOGZkMzJmOTZiOTRhNWY3N2FjYjc4YzEzNDUuLjhiNmUzNGU0N2Nm
MTcxNTlhOWFmNTk2MjgyMmEzMTgwM2I0MWI4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9GZW5jZVN5bmNHTC5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0ZlbmNlU3lu
Y0dMLmNwcApAQCAtNDAsMjggKzQwLDI4IEBAIGdsOjpFcnJvciBGZW5jZVN5bmNHTDo6c2V0KEdM
ZW51bSBjb25kaXRpb24sIEdMYml0ZmllbGQgZmxhZ3MpCiAgICAgICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfT1VUX09GX01FTU9SWSwgImdsRmVuY2VTeW5jIGZhaWxlZCB0byBjcmVhdGUgYSBHTHN5
bmMgb2JqZWN0LiIpOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgRmVuY2VTeW5jR0w6
OmNsaWVudFdhaXQoR0xiaXRmaWVsZCBmbGFncywgR0x1aW50NjQgdGltZW91dCwgR0xlbnVtICpv
dXRSZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1TeW5jT2JqZWN0ICE9IDApOwogICAgICpvdXRSZXN1
bHQgPSBtRnVuY3Rpb25zLT5jbGllbnRXYWl0U3luYyhtU3luY09iamVjdCwgZmxhZ3MsIHRpbWVv
dXQpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgRmVuY2VTeW5jR0w6OnNlcnZlcldhaXQoR0xiaXRm
aWVsZCBmbGFncywgR0x1aW50NjQgdGltZW91dCkKIHsKICAgICBBU1NFUlQobVN5bmNPYmplY3Qg
IT0gMCk7CiAgICAgbUZ1bmN0aW9ucy0+d2FpdFN5bmMobVN5bmNPYmplY3QsIGZsYWdzLCB0aW1l
b3V0KTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEZlbmNlU3luY0dMOjpnZXRTdGF0dXMoR0xpbnQg
Km91dFJlc3VsdCkKIHsKICAgICBBU1NFUlQobVN5bmNPYmplY3QgIT0gMCk7CiAgICAgbUZ1bmN0
aW9ucy0+Z2V0U3luY2l2KG1TeW5jT2JqZWN0LCBHTF9TWU5DX1NUQVRVUywgMSwgbnVsbHB0ciwg
b3V0UmVzdWx0KTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0ZyYW1lYnVmZmVyR0wuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0ZyYW1lYnVmZmVyR0wu
Y3BwCmluZGV4IGY4YjI1MjIxMDQyYTUzMzE3YTg2NWUwYmM5NGE3OWQzZjVhNWIwZmMuLmU1ODYw
ODJlNWQ2MzgxY2FiNzQyOGYyNjY3MmVlYWI2NjE5YjQ3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
RnJhbWVidWZmZXJHTC5jcHAKQEAgLTgsNyArOCw3IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmgiCiAKLSNpbmNsdWRlICJjb21tb24vQml0U2V0SXRl
cmF0b3IuaCIKKyNpbmNsdWRlICJjb21tb24vYml0c2V0X3V0aWxzLmgiCiAjaW5jbHVkZSAiY29t
bW9uL2RlYnVnLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dFN0YXRlLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvU3RhdGUuaCIKQEAgLTg1LDEwICs4NSwxMiBAQCBzdGF0aWMgdm9pZCBCaW5k
RnJhbWVidWZmZXJBdHRhY2htZW50KGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCiAgICAg
ICAgICAgICBjb25zdCBUZXh0dXJlICp0ZXh0dXJlICAgICA9IGF0dGFjaG1lbnQtPmdldFRleHR1
cmUoKTsKICAgICAgICAgICAgIGNvbnN0IFRleHR1cmVHTCAqdGV4dHVyZUdMID0gR2V0SW1wbEFz
PFRleHR1cmVHTD4odGV4dHVyZSk7CiAKLSAgICAgICAgICAgIGlmICh0ZXh0dXJlLT5nZXRUYXJn
ZXQoKSA9PSBHTF9URVhUVVJFXzJEKQorICAgICAgICAgICAgaWYgKHRleHR1cmUtPmdldFRhcmdl
dCgpID09IEdMX1RFWFRVUkVfMkQgfHwKKyAgICAgICAgICAgICAgICB0ZXh0dXJlLT5nZXRUYXJn
ZXQoKSA9PSBHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGZ1bmN0aW9ucy0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIs
IGF0dGFjaG1lbnRQb2ludCwgR0xfVEVYVFVSRV8yRCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVHTC0+Z2V0VGV4dHVyZUlEKCksIGF0dGFj
aG1lbnQtPm1pcExldmVsKCkpOworICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+ZnJhbWVidWZm
ZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnRQb2ludCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmUtPmdldFRhcmdldCgp
LCB0ZXh0dXJlR0wtPmdldFRleHR1cmVJRCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudC0+bWlwTGV2ZWwoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBlbHNlIGlmICh0ZXh0dXJlLT5nZXRUYXJnZXQoKSA9PSBHTF9URVhU
VVJFX0NVQkVfTUFQKQogICAgICAgICAgICAgewpAQCAtMTI3LDQ0ICsxMjksNjkgQEAgc3RhdGlj
IHZvaWQgQmluZEZyYW1lYnVmZmVyQXR0YWNobWVudChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rp
b25zLAogCiBFcnJvciBGcmFtZWJ1ZmZlckdMOjpkaXNjYXJkKHNpemVfdCBjb3VudCwgY29uc3Qg
R0xlbnVtICphdHRhY2htZW50cykKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJu
IEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAvLyBnbEludmFsaWRhdGVGcmFtZWJ1
ZmZlciBhY2NlcHRzIHRoZSBzYW1lIGVudW1zIGFzIGdsRGlzY2FyZEZyYW1lYnVmZmVyRVhUCisg
ICAgcmV0dXJuIGludmFsaWRhdGUoY291bnQsIGF0dGFjaG1lbnRzKTsKIH0KIAogRXJyb3IgRnJh
bWVidWZmZXJHTDo6aW52YWxpZGF0ZShzaXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAqYXR0YWNo
bWVudHMpCiB7Ci0gICAgLy8gU2luY2UgdGhpcyBmdW5jdGlvbiBpcyBqdXN0IGEgaGludCBhbmQg
bm90IGF2YWlsYWJsZSB1bnRpbCBPcGVuR0wgNC4zLCBvbmx5IGNhbGwgaXQgaWYgaXQgaXMgYXZh
aWxhYmxlLgorICAgIGNvbnN0IEdMZW51bSAqZmluYWxBdHRhY2htZW50c1B0ciA9IGF0dGFjaG1l
bnRzOworCisgICAgc3RkOjp2ZWN0b3I8R0xlbnVtPiBtb2RpZmllZEF0dGFjaG1lbnRzOworICAg
IGlmIChtb2RpZnlJbnZhbGlkYXRlQXR0YWNobWVudHNGb3JFbXVsYXRlZERlZmF1bHRGQk8oY291
bnQsIGF0dGFjaG1lbnRzLCAmbW9kaWZpZWRBdHRhY2htZW50cykpCisgICAgeworICAgICAgICBm
aW5hbEF0dGFjaG1lbnRzUHRyID0gbW9kaWZpZWRBdHRhY2htZW50cy5kYXRhKCk7CisgICAgfQor
CisgICAgLy8gU2luY2UgdGhpcyBmdW5jdGlvbiBpcyBqdXN0IGEgaGludCwgb25seSBjYWxsIGEg
bmF0aXZlIGZ1bmN0aW9uIGlmIGl0IGV4aXN0cy4KICAgICBpZiAobUZ1bmN0aW9ucy0+aW52YWxp
ZGF0ZUZyYW1lYnVmZmVyKQogICAgIHsKICAgICAgICAgbVN0YXRlTWFuYWdlci0+YmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXJJRCk7Ci0gICAgICAgIG1GdW5jdGlv
bnMtPmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgc3RhdGljX2Nhc3Q8R0xz
aXplaT4oY291bnQpLCBhdHRhY2htZW50cyk7CisgICAgICAgIG1GdW5jdGlvbnMtPmludmFsaWRh
dGVGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oY291bnQp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxBdHRhY2ht
ZW50c1B0cik7CisgICAgfQorICAgIGVsc2UgaWYgKG1GdW5jdGlvbnMtPmRpc2NhcmRGcmFtZWJ1
ZmZlcikKKyAgICB7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9G
UkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVySUQpOworICAgICAgICBtRnVuY3Rpb25zLT5kaXNjYXJk
RnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGNvdW50KSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsQXR0YWNobWVudHNQ
dHIpOwogICAgIH0KIAotICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CiB9CiAKIEVycm9yIEZyYW1lYnVmZmVyR0w6OmludmFsaWRhdGVTdWIo
c2l6ZV90IGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGVudW0gKmF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhKQogeworCisgICAgY29uc3QgR0xlbnVtICpmaW5hbEF0
dGFjaG1lbnRzUHRyID0gYXR0YWNobWVudHM7CisKKyAgICBzdGQ6OnZlY3RvcjxHTGVudW0+IG1v
ZGlmaWVkQXR0YWNobWVudHM7CisgICAgaWYgKG1vZGlmeUludmFsaWRhdGVBdHRhY2htZW50c0Zv
ckVtdWxhdGVkRGVmYXVsdEZCTyhjb3VudCwgYXR0YWNobWVudHMsICZtb2RpZmllZEF0dGFjaG1l
bnRzKSkKKyAgICB7CisgICAgICAgIGZpbmFsQXR0YWNobWVudHNQdHIgPSBtb2RpZmllZEF0dGFj
aG1lbnRzLmRhdGEoKTsKKyAgICB9CisKICAgICAvLyBTaW5jZSB0aGlzIGZ1bmN0aW9uIGlzIGp1
c3QgYSBoaW50IGFuZCBub3QgYXZhaWxhYmxlIHVudGlsIE9wZW5HTCA0LjMsIG9ubHkgY2FsbCBp
dCBpZiBpdCBpcyBhdmFpbGFibGUuCiAgICAgaWYgKG1GdW5jdGlvbnMtPmludmFsaWRhdGVTdWJG
cmFtZWJ1ZmZlcikKICAgICB7CiAgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVySUQpOwogICAgICAgICBtRnVuY3Rpb25zLT5p
bnZhbGlkYXRlU3ViRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIHN0YXRpY19jYXN0PEdMc2l6
ZWk+KGNvdW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF0dGFjaG1lbnRzLCBhcmVhLngsIGFyZWEueSwgYXJlYS53aWR0aCwgYXJlYS5oZWlnaHQpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxBdHRhY2ht
ZW50c1B0ciwgYXJlYS54LCBhcmVhLnksIGFyZWEud2lkdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmVhLmhlaWdodCk7CiAgICAgfQogCi0gICAgcmV0
dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCiBFcnJv
ciBGcmFtZWJ1ZmZlckdMOjpjbGVhcihDb250ZXh0SW1wbCAqY29udGV4dCwgR0xiaXRmaWVsZCBt
YXNrKQogewotICAgIHN5bmNDbGVhclN0YXRlKG1hc2spOworICAgIHN5bmNDbGVhclN0YXRlKGNv
bnRleHQsIG1hc2spOwogICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgbUZyYW1lYnVmZmVySUQpOwogICAgIG1GdW5jdGlvbnMtPmNsZWFyKG1hc2spOwog
Ci0gICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gTm9FcnJvcigpOwog
fQogCiBFcnJvciBGcmFtZWJ1ZmZlckdMOjpjbGVhckJ1ZmZlcmZ2KENvbnRleHRJbXBsICpjb250
ZXh0LApAQCAtMTcyLDExICsxOTksMTEgQEAgRXJyb3IgRnJhbWVidWZmZXJHTDo6Y2xlYXJCdWZm
ZXJmdihDb250ZXh0SW1wbCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWVzKQogewotICAgIHN5bmNDbGVhckJ1ZmZlclN0YXRlKGJ1
ZmZlciwgZHJhd2J1ZmZlcik7CisgICAgc3luY0NsZWFyQnVmZmVyU3RhdGUoY29udGV4dCwgYnVm
ZmVyLCBkcmF3YnVmZmVyKTsKICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcklEKTsKICAgICBtRnVuY3Rpb25zLT5jbGVhckJ1ZmZl
cmZ2KGJ1ZmZlciwgZHJhd2J1ZmZlciwgdmFsdWVzKTsKIAotICAgIHJldHVybiBFcnJvcihHTF9O
T19FUlJPUik7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0KIAogRXJyb3IgRnJhbWVidWZmZXJH
TDo6Y2xlYXJCdWZmZXJ1aXYoQ29udGV4dEltcGwgKmNvbnRleHQsCkBAIC0xODQsMTEgKzIxMSwx
MSBAQCBFcnJvciBGcmFtZWJ1ZmZlckdMOjpjbGVhckJ1ZmZlcnVpdihDb250ZXh0SW1wbCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnZh
bHVlcykKIHsKLSAgICBzeW5jQ2xlYXJCdWZmZXJTdGF0ZShidWZmZXIsIGRyYXdidWZmZXIpOwor
ICAgIHN5bmNDbGVhckJ1ZmZlclN0YXRlKGNvbnRleHQsIGJ1ZmZlciwgZHJhd2J1ZmZlcik7CiAg
ICAgbVN0YXRlTWFuYWdlci0+YmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVi
dWZmZXJJRCk7CiAgICAgbUZ1bmN0aW9ucy0+Y2xlYXJCdWZmZXJ1aXYoYnVmZmVyLCBkcmF3YnVm
ZmVyLCB2YWx1ZXMpOwogCi0gICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1
cm4gTm9FcnJvcigpOwogfQogCiBFcnJvciBGcmFtZWJ1ZmZlckdMOjpjbGVhckJ1ZmZlcml2KENv
bnRleHRJbXBsICpjb250ZXh0LApAQCAtMTk2LDExICsyMjMsMTEgQEAgRXJyb3IgRnJhbWVidWZm
ZXJHTDo6Y2xlYXJCdWZmZXJpdihDb250ZXh0SW1wbCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHJhd2J1ZmZlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlcykKIHsKLSAgICBzeW5jQ2xlYXJC
dWZmZXJTdGF0ZShidWZmZXIsIGRyYXdidWZmZXIpOworICAgIHN5bmNDbGVhckJ1ZmZlclN0YXRl
KGNvbnRleHQsIGJ1ZmZlciwgZHJhd2J1ZmZlcik7CiAgICAgbVN0YXRlTWFuYWdlci0+YmluZEZy
YW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXJJRCk7CiAgICAgbUZ1bmN0aW9u
cy0+Y2xlYXJCdWZmZXJpdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcyk7CiAKLSAgICByZXR1
cm4gRXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKIEVycm9y
IEZyYW1lYnVmZmVyR0w6OmNsZWFyQnVmZmVyZmkoQ29udGV4dEltcGwgKmNvbnRleHQsCkBAIC0y
MDksMTEgKzIzNiwxMSBAQCBFcnJvciBGcmFtZWJ1ZmZlckdMOjpjbGVhckJ1ZmZlcmZpKENvbnRl
eHRJbXBsICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0IGRlcHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzdGVu
Y2lsKQogewotICAgIHN5bmNDbGVhckJ1ZmZlclN0YXRlKGJ1ZmZlciwgZHJhd2J1ZmZlcik7Cisg
ICAgc3luY0NsZWFyQnVmZmVyU3RhdGUoY29udGV4dCwgYnVmZmVyLCBkcmF3YnVmZmVyKTsKICAg
ICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1
ZmZlcklEKTsKICAgICBtRnVuY3Rpb25zLT5jbGVhckJ1ZmZlcmZpKGJ1ZmZlciwgZHJhd2J1ZmZl
ciwgZGVwdGgsIHN0ZW5jaWwpOwogCi0gICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICByZXR1cm4gTm9FcnJvcigpOwogfQogCiBHTGVudW0gRnJhbWVidWZmZXJHTDo6Z2V0SW1wbGVt
ZW50YXRpb25Db2xvclJlYWRGb3JtYXQoKSBjb25zdApAQCAtMjgzLDU5ICszMTAsNjMgQEAgRXJy
b3IgRnJhbWVidWZmZXJHTDo6YmxpdChDb250ZXh0SW1wbCAqY29udGV4dCwKICAgICBjb25zdCBG
cmFtZWJ1ZmZlciAqc291cmNlRnJhbWVidWZmZXIgICAgID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgp
LmdldFJlYWRGcmFtZWJ1ZmZlcigpOwogICAgIGNvbnN0IEZyYW1lYnVmZmVyICpkZXN0RnJhbWVi
dWZmZXIgICAgICAgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7
CiAKLSAgICBib29sIG5lZWRNYW51YWxDb2xvckJsaXQgPSBmYWxzZTsKKyAgICBjb25zdCBGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQgKmNvbG9yUmVhZEF0dGFjaG1lbnQgPSBzb3VyY2VGcmFtZWJ1ZmZl
ci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7CiAKLSAgICAvLyBUaGUgbWFudWFsIFNSR0IgYmxpdCBp
cyBvbmx5IG5lZWRlZCB0byBwZXJmb3JtIGNvcnJlY3QgbGluZWFyIGludGVycG9sYXRpb24uIFdl
IGRvbid0Ci0gICAgLy8gbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgU1JHQiBjb252ZXJzaW9u
IGZvciBORUFSRVNUIGFzIHRoZSB2YWx1ZXMgd2lsbCBiZSBjb3BpZWQuCi0gICAgaWYgKGZpbHRl
ciAhPSBHTF9ORUFSRVNUKQorICAgIEdMc2l6ZWkgcmVhZEF0dGFjaG1lbnRTYW1wbGVzID0gMDsK
KyAgICBpZiAoY29sb3JSZWFkQXR0YWNobWVudCAhPSBudWxscHRyKQogICAgIHsKKyAgICAgICAg
cmVhZEF0dGFjaG1lbnRTYW1wbGVzID0gY29sb3JSZWFkQXR0YWNobWVudC0+Z2V0U2FtcGxlcygp
OworICAgIH0KIAotICAgICAgICAvLyBQcmlvciB0byBPcGVuR0wgNC40IEJsaXRGcmFtZWJ1ZmZl
ciAoc2VjdGlvbiAxOC4zLjEgb2YgR0wgNC4zIGNvcmUgcHJvZmlsZSkgcmVhZHM6Ci0gICAgICAg
IC8vICAgICAgV2hlbiB2YWx1ZXMgYXJlIHRha2VuIGZyb20gdGhlIHJlYWQgYnVmZmVyLCBubyBs
aW5lYXJpemF0aW9uIGlzIHBlcmZvcm1lZCwgZXZlbgotICAgICAgICAvLyAgICAgIGlmIHRoZSBm
b3JtYXQgb2YgdGhlIGJ1ZmZlciBpcyBTUkdCLgotICAgICAgICAvLyBTdGFydGluZyBmcm9tIE9w
ZW5HTCA0LjQgKHNlY3Rpb24gMTguMy4xKSBpdCByZWFkczoKLSAgICAgICAgLy8gICAgICBXaGVu
IHZhbHVlcyBhcmUgdGFrZW4gZnJvbSB0aGUgcmVhZCBidWZmZXIsIGlmIEZSQU1FQlVGRkVSX1NS
R0IgaXMgZW5hYmxlZCBhbmQgdGhlCi0gICAgICAgIC8vICAgICAgdmFsdWUgb2YgRlJBTUVCVUZG
RVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElORyBmb3IgdGhlIGZyYW1lYnVmZmVyIGF0dGFjaG1l
bnQKLSAgICAgICAgLy8gICAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSByZWFkIGJ1ZmZlciBpcyBT
UkdCLCB0aGUgcmVkLCBncmVlbiwgYW5kIGJsdWUgY29tcG9uZW50cyBhcmUKLSAgICAgICAgLy8g
ICAgICBjb252ZXJ0ZWQgZnJvbSB0aGUgbm9uLWxpbmVhciBzUkdCIGNvbG9yIHNwYWNlIGFjY29y
ZGluZyBbLi4uXS4KLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRh
Y2htZW50ICpyZWFkQXR0YWNobWVudCA9IHNvdXJjZUZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3Ji
dWZmZXIoKTsKLSAgICAgICAgICAgIGJvb2wgc291cmNlU1JHQiA9Ci0gICAgICAgICAgICAgICAg
cmVhZEF0dGFjaG1lbnQgIT0gbnVsbHB0ciAmJiByZWFkQXR0YWNobWVudC0+Z2V0Q29sb3JFbmNv
ZGluZygpID09IEdMX1NSR0I7Ci0gICAgICAgICAgICBuZWVkTWFudWFsQ29sb3JCbGl0ID0KLSAg
ICAgICAgICAgICAgICBuZWVkTWFudWFsQ29sb3JCbGl0IHx8IChzb3VyY2VTUkdCICYmIG1GdW5j
dGlvbnMtPmlzQXRNb3N0R0woZ2w6OlZlcnNpb24oNCwgMykpKTsKLSAgICAgICAgfQorICAgIGJv
b2wgbmVlZE1hbnVhbENvbG9yQmxpdCA9IGZhbHNlOwogCi0gICAgICAgIC8vIFByaW9yIHRvIE9w
ZW5HTCA0LjIgQmxpdEZyYW1lYnVmZmVyIChzZWN0aW9uIDQuMy4yIG9mIEdMIDQuMSBjb3JlIHBy
b2ZpbGUpIHJlYWRzOgotICAgICAgICAvLyAgICAgIEJsaXQgb3BlcmF0aW9ucyBieXBhc3MgdGhl
IGZyYWdtZW50IHBpcGVsaW5lLiBUaGUgb25seSBmcmFnbWVudCBvcGVyYXRpb25zIHdoaWNoCi0g
ICAgICAgIC8vICAgICAgYWZmZWN0IGEgYmxpdCBhcmUgdGhlIHBpeGVsIG93bmVyc2hpcCB0ZXN0
IGFuZCBzY2lzc29yIHRlc3QuCi0gICAgICAgIC8vIFN0YXJ0aW5nIGZyb20gT3BlbkdMIDQuMiAo
c2VjdGlvbiA0LjMuMikgaXQgcmVhZHM6Ci0gICAgICAgIC8vICAgICAgV2hlbiB2YWx1ZXMgYXJl
IHdyaXR0ZW4gdG8gdGhlIGRyYXcgYnVmZmVycywgYmxpdCBvcGVyYXRpb25zIGJ5cGFzcyB0aGUg
ZnJhZ21lbnQKLSAgICAgICAgLy8gICAgICBwaXBlbGluZS4gVGhlIG9ubHkgZnJhZ21lbnQgb3Bl
cmF0aW9ucyB3aGljaCBhZmZlY3QgYSBibGl0IGFyZSB0aGUgcGl4ZWwgb3duZXJzaGlwCi0gICAg
ICAgIC8vICAgICAgdGVzdCwgIHRoZSBzY2lzc29yIHRlc3QgYW5kIHNSR0IgY29udmVyc2lvbi4K
LSAgICAgICAgaWYgKCFuZWVkTWFudWFsQ29sb3JCbGl0KQorICAgIC8vIFRPRE8oY3dhbGxleikg
d2hlbiB0aGUgZmlsdGVyIGlzIExJTkVBUiBhbmQgYm90aCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9u
IGFyZSBTUkdCLCB3ZQorICAgIC8vIGNvdWxkIGF2b2lkIGRvaW5nIGEgbWFudWFsIGJsaXQuCisK
KyAgICAvLyBQcmlvciB0byBPcGVuR0wgNC40IEJsaXRGcmFtZWJ1ZmZlciAoc2VjdGlvbiAxOC4z
LjEgb2YgR0wgNC4zIGNvcmUgcHJvZmlsZSkgcmVhZHM6CisgICAgLy8gICAgICBXaGVuIHZhbHVl
cyBhcmUgdGFrZW4gZnJvbSB0aGUgcmVhZCBidWZmZXIsIG5vIGxpbmVhcml6YXRpb24gaXMgcGVy
Zm9ybWVkLCBldmVuCisgICAgLy8gICAgICBpZiB0aGUgZm9ybWF0IG9mIHRoZSBidWZmZXIgaXMg
U1JHQi4KKyAgICAvLyBTdGFydGluZyBmcm9tIE9wZW5HTCA0LjQgKHNlY3Rpb24gMTguMy4xKSBp
dCByZWFkczoKKyAgICAvLyAgICAgIFdoZW4gdmFsdWVzIGFyZSB0YWtlbiBmcm9tIHRoZSByZWFk
IGJ1ZmZlciwgaWYgRlJBTUVCVUZGRVJfU1JHQiBpcyBlbmFibGVkIGFuZCB0aGUKKyAgICAvLyAg
ICAgIHZhbHVlIG9mIEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkcgZm9yIHRo
ZSBmcmFtZWJ1ZmZlciBhdHRhY2htZW50CisgICAgLy8gICAgICBjb3JyZXNwb25kaW5nIHRvIHRo
ZSByZWFkIGJ1ZmZlciBpcyBTUkdCLCB0aGUgcmVkLCBncmVlbiwgYW5kIGJsdWUgY29tcG9uZW50
cyBhcmUKKyAgICAvLyAgICAgIGNvbnZlcnRlZCBmcm9tIHRoZSBub24tbGluZWFyIHNSR0IgY29s
b3Igc3BhY2UgYWNjb3JkaW5nIFsuLi5dLgorICAgIHsKKyAgICAgICAgYm9vbCBzb3VyY2VTUkdC
ID0gY29sb3JSZWFkQXR0YWNobWVudCAhPSBudWxscHRyICYmCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbG9yUmVhZEF0dGFjaG1lbnQtPmdldENvbG9yRW5jb2RpbmcoKSA9PSBHTF9TUkdC
OworICAgICAgICBuZWVkTWFudWFsQ29sb3JCbGl0ID0KKyAgICAgICAgICAgIG5lZWRNYW51YWxD
b2xvckJsaXQgfHwgKHNvdXJjZVNSR0IgJiYgbUZ1bmN0aW9ucy0+aXNBdE1vc3RHTChnbDo6VmVy
c2lvbig0LCAzKSkpOworICAgIH0KKworICAgIC8vIFByaW9yIHRvIE9wZW5HTCA0LjIgQmxpdEZy
YW1lYnVmZmVyIChzZWN0aW9uIDQuMy4yIG9mIEdMIDQuMSBjb3JlIHByb2ZpbGUpIHJlYWRzOgor
ICAgIC8vICAgICAgQmxpdCBvcGVyYXRpb25zIGJ5cGFzcyB0aGUgZnJhZ21lbnQgcGlwZWxpbmUu
IFRoZSBvbmx5IGZyYWdtZW50IG9wZXJhdGlvbnMgd2hpY2gKKyAgICAvLyAgICAgIGFmZmVjdCBh
IGJsaXQgYXJlIHRoZSBwaXhlbCBvd25lcnNoaXAgdGVzdCBhbmQgc2Npc3NvciB0ZXN0LgorICAg
IC8vIFN0YXJ0aW5nIGZyb20gT3BlbkdMIDQuMiAoc2VjdGlvbiA0LjMuMikgaXQgcmVhZHM6Cisg
ICAgLy8gICAgICBXaGVuIHZhbHVlcyBhcmUgd3JpdHRlbiB0byB0aGUgZHJhdyBidWZmZXJzLCBi
bGl0IG9wZXJhdGlvbnMgYnlwYXNzIHRoZSBmcmFnbWVudAorICAgIC8vICAgICAgcGlwZWxpbmUu
IFRoZSBvbmx5IGZyYWdtZW50IG9wZXJhdGlvbnMgd2hpY2ggYWZmZWN0IGEgYmxpdCBhcmUgdGhl
IHBpeGVsIG93bmVyc2hpcAorICAgIC8vICAgICAgdGVzdCwgIHRoZSBzY2lzc29yIHRlc3QgYW5k
IHNSR0IgY29udmVyc2lvbi4KKyAgICBpZiAoIW5lZWRNYW51YWxDb2xvckJsaXQpCisgICAgewor
ICAgICAgICBib29sIGRlc3RTUkdCID0gZmFsc2U7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgZGVzdEZyYW1lYnVmZmVyLT5nZXREcmF3YnVmZmVyU3RhdGVDb3VudCgpOyArK2kpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGJvb2wgZGVzdFNSR0IgPSBmYWxzZTsKLSAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGVzdEZyYW1lYnVmZmVyLT5nZXREcmF3YnVmZmVyU3Rh
dGVDb3VudCgpOyArK2kpCisgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQg
KmF0dGFjaG1lbnQgPSBkZXN0RnJhbWVidWZmZXItPmdldERyYXdCdWZmZXIoaSk7CisgICAgICAg
ICAgICBpZiAoYXR0YWNobWVudCAmJiBhdHRhY2htZW50LT5nZXRDb2xvckVuY29kaW5nKCkgPT0g
R0xfU1JHQikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQgKmF0dGFjaG1lbnQgPSBkZXN0RnJhbWVidWZmZXItPmdldERyYXdCdWZmZXIo
aSk7Ci0gICAgICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQgJiYgYXR0YWNobWVudC0+Z2V0Q29s
b3JFbmNvZGluZygpID09IEdMX1NSR0IpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICBkZXN0U1JHQiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZXN0U1JHQiA9IHRydWU7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG5lZWRNYW51YWxD
b2xvckJsaXQgPQotICAgICAgICAgICAgICAgIG5lZWRNYW51YWxDb2xvckJsaXQgfHwgKGRlc3RT
UkdCICYmIG1GdW5jdGlvbnMtPmlzQXRNb3N0R0woZ2w6OlZlcnNpb24oNCwgMSkpKTsKICAgICAg
ICAgfQorCisgICAgICAgIG5lZWRNYW51YWxDb2xvckJsaXQgPQorICAgICAgICAgICAgbmVlZE1h
bnVhbENvbG9yQmxpdCB8fCAoZGVzdFNSR0IgJiYgbUZ1bmN0aW9ucy0+aXNBdE1vc3RHTChnbDo6
VmVyc2lvbig0LCAxKSkpOwogICAgIH0KIAogICAgIC8vIEVuYWJsZSBGUkFNRUJVRkZFUl9TUkdC
IGlmIG5lZWRlZAotICAgIHN5bmNEcmF3U3RhdGUoKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5zZXRG
cmFtZWJ1ZmZlclNSR0JFbmFibGVkRm9yRnJhbWVidWZmZXIoY29udGV4dC0+Z2V0Q29udGV4dFN0
YXRlKCksIHRydWUsIHRoaXMpOwogCiAgICAgR0xlbnVtIGJsaXRNYXNrID0gbWFzazsKLSAgICBp
ZiAobmVlZE1hbnVhbENvbG9yQmxpdCAmJiAobWFzayAmIEdMX0NPTE9SX0JVRkZFUl9CSVQpKQor
ICAgIGlmIChuZWVkTWFudWFsQ29sb3JCbGl0ICYmIChtYXNrICYgR0xfQ09MT1JfQlVGRkVSX0JJ
VCkgJiYgcmVhZEF0dGFjaG1lbnRTYW1wbGVzIDw9IDEpCiAgICAgewogICAgICAgICBBTkdMRV9U
UlkobUJsaXR0ZXItPmJsaXRDb2xvckJ1ZmZlcldpdGhTaGFkZXIoc291cmNlRnJhbWVidWZmZXIs
IGRlc3RGcmFtZWJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNvdXJjZUFyZWEsIGRlc3RBcmVhLCBmaWx0ZXIpKTsKQEAgLTM1OCwx
OCArMzg5LDI1IEBAIEVycm9yIEZyYW1lYnVmZmVyR0w6OmJsaXQoQ29udGV4dEltcGwgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKK2dsOjpFcnJvciBGcmFtZWJ1ZmZl
ckdMOjpnZXRTYW1wbGVQb3NpdGlvbihzaXplX3QgaW5kZXgsIEdMZmxvYXQgKnh5KSBjb25zdAor
eworICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZy
YW1lYnVmZmVySUQpOworICAgIG1GdW5jdGlvbnMtPmdldE11bHRpc2FtcGxlZnYoR0xfU0FNUExF
X1BPU0lUSU9OLCBzdGF0aWNfY2FzdDxHTHVpbnQ+KGluZGV4KSwgeHkpOworICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOworfQorCiBib29sIEZyYW1lYnVmZmVyR0w6OmNoZWNrU3RhdHVzKCkgY29u
c3QKIHsKICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIs
IG1GcmFtZWJ1ZmZlcklEKTsKICAgICBHTGVudW0gc3RhdHVzID0gbUZ1bmN0aW9ucy0+Y2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUik7CiAgICAgaWYgKHN0YXR1cyAhPSBHTF9G
UkFNRUJVRkZFUl9DT01QTEVURSkKICAgICB7Ci0gICAgICAgIEFOR0xFUGxhdGZvcm1DdXJyZW50
KCktPmxvZ1dhcm5pbmcoIkdMIGZyYW1lYnVmZmVyIHJldHVybmVkIGluY29tcGxldGUuIik7Cisg
ICAgICAgIFdBUk4oKSA8PCAiR0wgZnJhbWVidWZmZXIgcmV0dXJuZWQgaW5jb21wbGV0ZS4iOwog
ICAgIH0KICAgICByZXR1cm4gKHN0YXR1cyA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSk7CiB9
CiAKLXZvaWQgRnJhbWVidWZmZXJHTDo6c3luY1N0YXRlKGNvbnN0IEZyYW1lYnVmZmVyOjpEaXJ0
eUJpdHMgJmRpcnR5Qml0cykKK3ZvaWQgRnJhbWVidWZmZXJHTDo6c3luY1N0YXRlKENvbnRleHRJ
bXBsICpjb250ZXh0SW1wbCwgY29uc3QgRnJhbWVidWZmZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRz
KQogewogICAgIC8vIERvbid0IG5lZWQgdG8gc3luYyBzdGF0ZSBmb3IgdGhlIGRlZmF1bHQgRkJP
LgogICAgIGlmIChtSXNEZWZhdWx0KQpAQCAtNDAxLDYgKzQzOSwyMyBAQCB2b2lkIEZyYW1lYnVm
ZmVyR0w6OnN5bmNTdGF0ZShjb25zdCBGcmFtZWJ1ZmZlcjo6RGlydHlCaXRzICZkaXJ0eUJpdHMp
CiAgICAgICAgICAgICBjYXNlIEZyYW1lYnVmZmVyOjpESVJUWV9CSVRfUkVBRF9CVUZGRVI6CiAg
ICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+cmVhZEJ1ZmZlcihtU3RhdGUuZ2V0UmVhZEJ1ZmZl
clN0YXRlKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGcmFt
ZWJ1ZmZlcjo6RElSVFlfQklUX0RFRkFVTFRfV0lEVEg6CisgICAgICAgICAgICAgICAgbUZ1bmN0
aW9ucy0+ZnJhbWVidWZmZXJQYXJhbWV0ZXJpKEdMX0ZSQU1FQlVGRkVSLCBHTF9GUkFNRUJVRkZF
Ul9ERUZBVUxUX1dJRFRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtU3RhdGUuZ2V0RGVmYXVsdFdpZHRoKCkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBGcmFtZWJ1ZmZlcjo6RElSVFlfQklUX0RFRkFVTFRfSEVJ
R0hUOgorICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPmZyYW1lYnVmZmVyUGFyYW1ldGVyaShH
TF9GUkFNRUJVRkZFUiwgR0xfRlJBTUVCVUZGRVJfREVGQVVMVF9IRUlHSFQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXREZWZhdWx0
SGVpZ2h0KCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGcmFt
ZWJ1ZmZlcjo6RElSVFlfQklUX0RFRkFVTFRfU0FNUExFUzoKKyAgICAgICAgICAgICAgICBtRnVu
Y3Rpb25zLT5mcmFtZWJ1ZmZlclBhcmFtZXRlcmkoR0xfRlJBTUVCVUZGRVIsIEdMX0ZSQU1FQlVG
RkVSX0RFRkFVTFRfU0FNUExFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbVN0YXRlLmdldERlZmF1bHRTYW1wbGVzKCkpOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGcmFtZWJ1ZmZlcjo6RElSVFlfQklUX0RFRkFV
TFRfRklYRURfU0FNUExFX0xPQ0FUSU9OUzoKKyAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT5m
cmFtZWJ1ZmZlclBhcmFtZXRlcmkoR0xfRlJBTUVCVUZGRVIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfRklY
RURfU0FNUExFX0xPQ0FUSU9OUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbVN0YXRlLmdldERlZmF1bHRGaXhlZFNhbXBsZUxvY2F0aW9ucygpKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKEZyYW1lYnVmZmVyOjpESVJUWV9CSVRfQ09MT1Jf
QVRUQUNITUVOVF8wID09IDAgJiYKQEAgLTQyMSwyMCArNDc2LDEyIEBAIEdMdWludCBGcmFtZWJ1
ZmZlckdMOjpnZXRGcmFtZWJ1ZmZlcklEKCkgY29uc3QKICAgICByZXR1cm4gbUZyYW1lYnVmZmVy
SUQ7CiB9CiAKLXZvaWQgRnJhbWVidWZmZXJHTDo6c3luY0RyYXdTdGF0ZSgpIGNvbnN0Citib29s
IEZyYW1lYnVmZmVyR0w6OmlzRGVmYXVsdCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1GdW5jdGlvbnMt
PnN0YW5kYXJkID09IFNUQU5EQVJEX0dMX0RFU0tUT1ApCi0gICAgewotICAgICAgICAvLyBFbmFi
bGUgU1JHQiBibGVuZGluZyBmb3IgYWxsIGZyYW1lYnVmZmVycyBleGNlcHQgdGhlIGRlZmF1bHQg
ZnJhbWVidWZmZXIgb24gRGVza3RvcAotICAgICAgICAvLyBPcGVuR0wuCi0gICAgICAgIC8vIFdo
ZW4gU1JHQiBibGVuZGluZyBpcyBlbmFibGVkLCBvbmx5IFNSR0IgY2FwYWJsZSBmb3JtYXRzIHdp
bGwgdXNlIGl0IGJ1dCB0aGUgZGVmYXVsdAotICAgICAgICAvLyBmcmFtZWJ1ZmZlciB3aWxsIGFs
d2F5cyB1c2UgaXQgaWYgaXQgaXMgZW5hYmxlZC4KLSAgICAgICAgLy8gVE9ETyhnZW9mZmxhbmcp
OiBVcGRhdGUgdGhpcyB3aGVuIHRoZSBmcmFtZWJ1ZmZlciBiaW5kaW5nIGRpcnR5IGNoYW5nZXMs
IHdoZW4gaXQgZXhpc3RzLgotICAgICAgICBtU3RhdGVNYW5hZ2VyLT5zZXRGcmFtZWJ1ZmZlclNS
R0JFbmFibGVkKCFtSXNEZWZhdWx0KTsKLSAgICB9CisgICAgcmV0dXJuIG1Jc0RlZmF1bHQ7CiB9
CiAKLXZvaWQgRnJhbWVidWZmZXJHTDo6c3luY0NsZWFyU3RhdGUoR0xiaXRmaWVsZCBtYXNrKQor
dm9pZCBGcmFtZWJ1ZmZlckdMOjpzeW5jQ2xlYXJTdGF0ZShDb250ZXh0SW1wbCAqY29udGV4dCwg
R0xiaXRmaWVsZCBtYXNrKQogewogICAgIGlmIChtRnVuY3Rpb25zLT5zdGFuZGFyZCA9PSBTVEFO
REFSRF9HTF9ERVNLVE9QKQogICAgIHsKQEAgLTQ1MSwxNiArNDk4LDE2IEBAIHZvaWQgRnJhbWVi
dWZmZXJHTDo6c3luY0NsZWFyU3RhdGUoR0xiaXRmaWVsZCBtYXNrKQogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbVN0YXRlTWFuYWdlci0+c2V0RnJhbWVi
dWZmZXJTUkdCRW5hYmxlZChoYXNTUkdCQXR0YWNobWVudCk7CisgICAgICAgICAgICBtU3RhdGVN
YW5hZ2VyLT5zZXRGcmFtZWJ1ZmZlclNSR0JFbmFibGVkKGNvbnRleHQtPmdldENvbnRleHRTdGF0
ZSgpLCBoYXNTUkdCQXR0YWNobWVudCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAg
ICB7Ci0gICAgICAgICAgICBtU3RhdGVNYW5hZ2VyLT5zZXRGcmFtZWJ1ZmZlclNSR0JFbmFibGVk
KCFtSXNEZWZhdWx0KTsKKyAgICAgICAgICAgIG1TdGF0ZU1hbmFnZXItPnNldEZyYW1lYnVmZmVy
U1JHQkVuYWJsZWQoY29udGV4dC0+Z2V0Q29udGV4dFN0YXRlKCksICFtSXNEZWZhdWx0KTsKICAg
ICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBGcmFtZWJ1ZmZlckdMOjpzeW5jQ2xlYXJCdWZmZXJT
dGF0ZShHTGVudW0gYnVmZmVyLCBHTGludCBkcmF3QnVmZmVyKQordm9pZCBGcmFtZWJ1ZmZlckdM
OjpzeW5jQ2xlYXJCdWZmZXJTdGF0ZShDb250ZXh0SW1wbCAqY29udGV4dCwgR0xlbnVtIGJ1ZmZl
ciwgR0xpbnQgZHJhd0J1ZmZlcikKIHsKICAgICBpZiAobUZ1bmN0aW9ucy0+c3RhbmRhcmQgPT0g
U1RBTkRBUkRfR0xfREVTS1RPUCkKICAgICB7CkBAIC00ODMsMTUgKzUzMCw1NCBAQCB2b2lkIEZy
YW1lYnVmZmVyR0w6OnN5bmNDbGVhckJ1ZmZlclN0YXRlKEdMZW51bSBidWZmZXIsIEdMaW50IGRy
YXdCdWZmZXIpCiAKICAgICAgICAgICAgIGlmIChhdHRhY2htZW50ICE9IG51bGxwdHIpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbVN0YXRlTWFuYWdlci0+c2V0RnJhbWVidWZmZXJT
UkdCRW5hYmxlZChhdHRhY2htZW50LT5nZXRDb2xvckVuY29kaW5nKCkgPT0gR0xfU1JHQik7Cisg
ICAgICAgICAgICAgICAgbVN0YXRlTWFuYWdlci0+c2V0RnJhbWVidWZmZXJTUkdCRW5hYmxlZChj
b250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQtPmdldENvbG9yRW5jb2Rpbmco
KSA9PSBHTF9TUkdCKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIG1TdGF0ZU1hbmFnZXItPnNldEZyYW1lYnVmZmVyU1JHQkVu
YWJsZWQoIW1Jc0RlZmF1bHQpOworICAgICAgICAgICAgbVN0YXRlTWFuYWdlci0+c2V0RnJhbWVi
dWZmZXJTUkdCRW5hYmxlZChjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKSwgIW1Jc0RlZmF1bHQp
OwogICAgICAgICB9CiAgICAgfQogfQorCitib29sIEZyYW1lYnVmZmVyR0w6Om1vZGlmeUludmFs
aWRhdGVBdHRhY2htZW50c0ZvckVtdWxhdGVkRGVmYXVsdEZCTygKKyAgICBzaXplX3QgY291bnQs
CisgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50cywKKyAgICBzdGQ6OnZlY3RvcjxHTGVudW0+
ICptb2RpZmllZEF0dGFjaG1lbnRzKSBjb25zdAoreworICAgIGJvb2wgbmVlZHNNb2RpZmljYXRp
b24gPSBtSXNEZWZhdWx0ICYmIG1GcmFtZWJ1ZmZlcklEICE9IDA7CisgICAgaWYgKCFuZWVkc01v
ZGlmaWNhdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBt
b2RpZmllZEF0dGFjaG1lbnRzLT5yZXNpemUoY291bnQpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY291bnQ7IGkrKykKKyAgICB7CisgICAgICAgIHN3aXRjaCAoYXR0YWNobWVudHNbaV0p
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgR0xfQ09MT1I6CisgICAgICAgICAgICAgICAg
KCptb2RpZmllZEF0dGFjaG1lbnRzKVtpXSA9IEdMX0NPTE9SX0FUVEFDSE1FTlQwOworICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIEdMX0RFUFRIOgorICAgICAgICAg
ICAgICAgICgqbW9kaWZpZWRBdHRhY2htZW50cylbaV0gPSBHTF9ERVBUSF9BVFRBQ0hNRU5UOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUw6Cisg
ICAgICAgICAgICAgICAgKCptb2RpZmllZEF0dGFjaG1lbnRzKVtpXSA9IEdMX1NURU5DSUxfQVRU
QUNITUVOVDsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGdsOjpFcnJvciBGcmFt
ZWJ1ZmZlckdMOjpyZWFkUGl4ZWxzUm93QnlSb3dXb3JrYXJvdW5kKGNvbnN0IGdsOjpSZWN0YW5n
bGUgJmFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0ZyYW1lYnVm
ZmVyR0wuaAppbmRleCBiMDJiN2I5ZjQ2Y2JhOTkwZmRjMDliZTMyMWI3NGMxMDIzNDY0MTlkLi4z
MWQxM2Q2ODBjNWRkNjYxOGU1MTM2MGEyNzQ3YzYzMDc3N2E2ZjRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJH
TC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9GcmFtZWJ1ZmZlckdMLmgKQEAgLTc2LDE3ICs3NiwyMyBAQCBjbGFzcyBGcmFtZWJ1ZmZlckdM
IDogcHVibGljIEZyYW1lYnVmZmVySW1wbAogICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQg
bWFzaywKICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsKIAotICAg
IGJvb2wgY2hlY2tTdGF0dXMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZ2V0U2Ft
cGxlUG9zaXRpb24oc2l6ZV90IGluZGV4LCBHTGZsb2F0ICp4eSkgY29uc3Qgb3ZlcnJpZGU7CiAK
LSAgICB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0cyAmZGly
dHlCaXRzKSBvdmVycmlkZTsKKyAgICBib29sIGNoZWNrU3RhdHVzKCkgY29uc3Qgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIHN5bmNEcmF3U3RhdGUoKSBjb25zdDsKKyAgICB2b2lkIHN5bmNTdGF0ZShD
b250ZXh0SW1wbCAqY29udGV4dEltcGwsIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGlydHlCaXRz
ICZkaXJ0eUJpdHMpIG92ZXJyaWRlOwogCiAgICAgR0x1aW50IGdldEZyYW1lYnVmZmVySUQoKSBj
b25zdDsKKyAgICBib29sIGlzRGVmYXVsdCgpIGNvbnN0OwogCiAgIHByaXZhdGU6Ci0gICAgdm9p
ZCBzeW5jQ2xlYXJTdGF0ZShHTGJpdGZpZWxkIG1hc2spOwotICAgIHZvaWQgc3luY0NsZWFyQnVm
ZmVyU3RhdGUoR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd0J1ZmZlcik7CisgICAgdm9pZCBzeW5j
Q2xlYXJTdGF0ZShDb250ZXh0SW1wbCAqY29udGV4dCwgR0xiaXRmaWVsZCBtYXNrKTsKKyAgICB2
b2lkIHN5bmNDbGVhckJ1ZmZlclN0YXRlKENvbnRleHRJbXBsICpjb250ZXh0LCBHTGVudW0gYnVm
ZmVyLCBHTGludCBkcmF3QnVmZmVyKTsKKworICAgIGJvb2wgbW9kaWZ5SW52YWxpZGF0ZUF0dGFj
aG1lbnRzRm9yRW11bGF0ZWREZWZhdWx0RkJPKAorICAgICAgICBzaXplX3QgY291bnQsCisgICAg
ICAgIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMsCisgICAgICAgIHN0ZDo6dmVjdG9yPEdMZW51
bT4gKm1vZGlmaWVkQXR0YWNobWVudHMpIGNvbnN0OwogCiAgICAgZ2w6OkVycm9yIHJlYWRQaXhl
bHNSb3dCeVJvd1dvcmthcm91bmQoY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1
bmN0aW9uc0dMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9GdW5jdGlvbnNHTC5jcHAKaW5kZXggZmNiZjIxMWJjNjYyMDY3NTNkNmIwMTVmMzU2
MzY1MTIyMTliOWJhMy4uYjdkODZiYzNmMzYwZmMyNWRlYTljNTNlMjE3MmI5OWVhODNjMWIxZSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL0Z1bmN0aW9uc0dMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25zR0wuY3BwCkBAIC03ODgsNyArNzg4LDggQEAgRnVu
Y3Rpb25zR0w6OkZ1bmN0aW9uc0dMKCkKICAgICAgIGJsZW5kQmFycmllcihudWxscHRyKSwKICAg
ICAgIHByaW1pdGl2ZUJvdW5kaW5nQm94KG51bGxwdHIpLAogICAgICAgZWdsSW1hZ2VUYXJnZXRS
ZW5kZXJidWZmZXJTdG9yYWdlT0VTKG51bGxwdHIpLAotICAgICAgZWdsSW1hZ2VUYXJnZXRUZXh0
dXJlMkRPRVMobnVsbHB0cikKKyAgICAgIGVnbEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKG51bGxw
dHIpLAorICAgICAgZGlzY2FyZEZyYW1lYnVmZmVyKG51bGxwdHIpCiB7CiB9CiAKQEAgLTkwMyw2
ICs5MDQsMTQgQEAgdm9pZCBGdW5jdGlvbnNHTDo6aW5pdGlhbGl6ZVByb2NzRGVza3RvcEdMKCkK
ICAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl92ZXJ0
ZXhfYXJyYXlfb2JqZWN0IiwgbG9hZFByb2NBZGRyZXNzKCJnbEdlblZlcnRleEFycmF5cyIpLCAm
Z2VuVmVydGV4QXJyYXlzKTsKICAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5z
aW9ucywgIkdMX0FSQl92ZXJ0ZXhfYXJyYXlfb2JqZWN0IiwgbG9hZFByb2NBZGRyZXNzKCJnbElz
VmVydGV4QXJyYXkiKSwgJmlzVmVydGV4QXJyYXkpOwogCisgICAgLy8gR0xfQVJCX3ZlcnRleF9h
dHRyaWJfYmluZGluZworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25z
LCAiR0xfQVJCX3ZlcnRleF9hdHRyaWJfYmluZGluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xCaW5k
VmVydGV4QnVmZmVyIiksICZiaW5kVmVydGV4QnVmZmVyKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lv
bkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl92ZXJ0ZXhfYXR0cmliX2JpbmRpbmciLCBs
b2FkUHJvY0FkZHJlc3MoImdsVmVydGV4QXR0cmliRm9ybWF0IiksICZ2ZXJ0ZXhBdHRyaWJGb3Jt
YXQpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJC
X3ZlcnRleF9hdHRyaWJfYmluZGluZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xWZXJ0ZXhBdHRyaWJJ
Rm9ybWF0IiksICZ2ZXJ0ZXhBdHRyaWJJRm9ybWF0KTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVu
dHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl92ZXJ0ZXhfYXR0cmliX2JpbmRpbmciLCBsb2Fk
UHJvY0FkZHJlc3MoImdsVmVydGV4QXR0cmliTEZvcm1hdCIpLCAmdmVydGV4QXR0cmliTEZvcm1h
dCk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJf
dmVydGV4X2F0dHJpYl9iaW5kaW5nIiwgbG9hZFByb2NBZGRyZXNzKCJnbFZlcnRleEF0dHJpYkJp
bmRpbmciKSwgJnZlcnRleEF0dHJpYkJpbmRpbmcpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50
cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX3ZlcnRleF9hdHRyaWJfYmluZGluZyIsIGxvYWRQ
cm9jQWRkcmVzcygiZ2xWZXJ0ZXhCaW5kaW5nRGl2aXNvciIpLCAmdmVydGV4QmluZGluZ0Rpdmlz
b3IpOworCiAgICAgLy8gR0xfQVJCX3N5bmMKICAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9p
bnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9zeW5jIiwgbG9hZFByb2NBZGRyZXNzKCJnbENsaWVudFdh
aXRTeW5jIiksICZjbGllbnRXYWl0U3luYyk7CiAgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBv
aW50KGV4dGVuc2lvbnMsICJHTF9BUkJfc3luYyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xEZWxldGVT
eW5jIiksICZkZWxldGVTeW5jKTsKQEAgLTEwMjksNiArMTAzOCwxNCBAQCB2b2lkIEZ1bmN0aW9u
c0dMOjppbml0aWFsaXplUHJvY3NEZXNrdG9wR0woKQogICAgIC8vIEdMX0tIUl9yb2J1c3RuZXNz
CiAgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9LSFJfcm9i
dXN0bmVzcyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzIiksICZn
ZXRHcmFwaGljc1Jlc2V0U3RhdHVzKTsKIAorICAgIC8vIEdMX0FSQl9pbnZhbGlkYXRlX3N1YmRh
dGEKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9p
bnZhbGlkYXRlX3N1YmRhdGEiLCBsb2FkUHJvY0FkZHJlc3MoImdsSW52YWxpZGF0ZVRleFN1Yklt
YWdlIiksICZpbnZhbGlkYXRlVGV4U3ViSW1hZ2UpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50
cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX2ludmFsaWRhdGVfc3ViZGF0YSIsIGxvYWRQcm9j
QWRkcmVzcygiZ2xJbnZhbGlkYXRlVGV4SW1hZ2UiKSwgJmludmFsaWRhdGVUZXhJbWFnZSk7Cisg
ICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfaW52YWxp
ZGF0ZV9zdWJkYXRhIiwgbG9hZFByb2NBZGRyZXNzKCJnbEludmFsaWRhdGVCdWZmZXJTdWJEYXRh
IiksICZpbnZhbGlkYXRlQnVmZmVyU3ViRGF0YSk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRy
eVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfaW52YWxpZGF0ZV9zdWJkYXRhIiwgbG9hZFByb2NB
ZGRyZXNzKCJnbEludmFsaWRhdGVCdWZmZXJEYXRhIiksICZpbnZhbGlkYXRlQnVmZmVyRGF0YSk7
CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfaW52
YWxpZGF0ZV9zdWJkYXRhIiwgbG9hZFByb2NBZGRyZXNzKCJnbEludmFsaWRhdGVGcmFtZWJ1ZmZl
ciIpLCAmaW52YWxpZGF0ZUZyYW1lYnVmZmVyKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5
UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9pbnZhbGlkYXRlX3N1YmRhdGEiLCBsb2FkUHJvY0Fk
ZHJlc3MoImdsSW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyIiksICZpbnZhbGlkYXRlU3ViRnJhbWVi
dWZmZXIpOworCiAgICAgLy8gMS4wCiAgICAgaWYgKGlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDEs
IDApKSkKICAgICB7CkBAIC0xODk3LDYgKzE5MTQsOSBAQCB2b2lkIEZ1bmN0aW9uc0dMOjppbml0
aWFsaXplUHJvY3NHTEVTKCkKICAgICAvLyBHTF9LSFJfcm9idXN0bmVzcwogICAgIEFzc2lnbkdM
RXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfS0hSX3JvYnVzdG5lc3MiLCBsb2Fk
UHJvY0FkZHJlc3MoImdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0tIUiIpLCAmZ2V0R3JhcGhpY3NS
ZXNldFN0YXR1cyk7CiAKKyAgICAvLyBHTF9FWFRfZGlzY2FyZF9mcmFtZWJ1ZmZlcgorICAgIEFz
c2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfRVhUX2Rpc2NhcmRfZnJh
bWVidWZmZXIiLCBsb2FkUHJvY0FkZHJlc3MoImdsRGlzY2FyZEZyYW1lYnVmZmVyRVhUIiksICZk
aXNjYXJkRnJhbWVidWZmZXIpOworCiAgICAgLy8gMi4wCiAgICAgaWYgKGlzQXRMZWFzdEdMRVMo
Z2w6OlZlcnNpb24oMiwgMCkpKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmgKaW5k
ZXggZmE4NjM0ZTU3MDFmMjMxM2QwZWRjNWM0YzM2ODI2YmU5MTQwZTIyZC4uYTYyOWE5Y2IzNzFm
NjE0NzA1ODkyYWJjZWU1NGFiNmEwZTE2MmYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dM
LmgKQEAgLTc3NSwxMCArNzc1LDEzIEBAIGNsYXNzIEZ1bmN0aW9uc0dMCiAgICAgUEZOR0xCTEVO
REJBUlJJRVJQUk9DIGJsZW5kQmFycmllcjsKICAgICBQRk5HTFBSSU1JVElWRUJPVU5ESU5HQk9Y
UFJPQyBwcmltaXRpdmVCb3VuZGluZ0JveDsKIAotICAgIC8vIEVTIGV4dGVuc2lvbnMKKyAgICAv
LyBHTF9PRVNfRUdMX2ltYWdlCiAgICAgUEZOR0xFR0xJTUFHRVRBUkdFVFJFTkRFUkJVRkZFUlNU
T1JBR0VPRVNQUk9DIGVnbEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUzsKICAgICBQ
Rk5HTEVHTElNQUdFVEFSR0VUVEVYVFVSRTJET0VTUFJPQyBlZ2xJbWFnZVRhcmdldFRleHR1cmUy
RE9FUzsKIAorICAgIC8vIEdMX0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyCisgICAgUEZOR0xESVND
QVJERlJBTUVCVUZGRVJFWFRQUk9DIGRpc2NhcmRGcmFtZWJ1ZmZlcjsKKwogICBwcml2YXRlOgog
ICAgIHZvaWQgaW5pdGlhbGl6ZVByb2NzRGVza3RvcEdMKCk7CiAgICAgdm9pZCBpbml0aWFsaXpl
UHJvY3NHTEVTKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvUGF0aEdMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9QYXRoR0wuY3BwCmluZGV4IGZmNGVhZmI1OGE3MDlhMWI3
ZTA2YTBhNWY1ZTgxNDIzYjc4OWEwYzcuLjUzNDg2NzRjNGQwNDhmZmRhNGVhYmIyNzhjYmZkYzc3
YTU4ODkxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9QYXRoR0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9QYXRoR0wuY3BwCkBAIC0yNyw3ICsyNyw3IEBAIGdsOjpF
cnJvciBQYXRoR0w6OnNldENvbW1hbmRzKEdMc2l6ZWkgbnVtQ29tbWFuZHMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpCiB7CiAgICAgbUZ1bmN0aW9u
cy0+cGF0aENvbW1hbmRzTlYobVBhdGhJRCwgbnVtQ29tbWFuZHMsIGNvbW1hbmRzLCBudW1Db29y
ZHMsIGNvb3JkVHlwZSwgY29vcmRzKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogdm9pZCBQYXRoR0w6OnNldFBhdGhQ
YXJhbWV0ZXIoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1Byb2dyYW1HTC5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJvZ3Jh
bUdMLmNwcAppbmRleCBlNmVjNTg5MzBjMzQ2ZGU2OTFhNjk3ZjM5ZDQxZmY0MzllM2UzNmQ1Li4y
Y2M5MzlhNWRlYjZiODdhOTVmZTRkZjY4ZWU5M2JjMTY4YzA5MWQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbUdMLmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
UHJvZ3JhbUdMLmNwcApAQCAtOCwxMCArOCwxMiBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZ2wvUHJvZ3JhbUdMLmgiCiAKKyNpbmNsdWRlICJjb21tb24vYml0c2V0X3V0aWxzLmgi
CiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKICNpbmNsdWRlICJjb21tb24vZGVidWcu
aCIKICNpbmNsdWRlICJjb21tb24vc3RyaW5nX3V0aWxzLmgiCiAjaW5jbHVkZSAiY29tbW9uL3V0
aWxpdGllcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0NvbnRleHRHTC5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZ2wvU2hhZGVyR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oIgpAQCAtNDYsNyArNDgsOSBAQCBQcm9ncmFtR0w6On5Q
cm9ncmFtR0woKQogICAgIG1Qcm9ncmFtSUQgPSAwOwogfQogCi1MaW5rUmVzdWx0IFByb2dyYW1H
TDo6bG9hZChnbDo6SW5mb0xvZyAmaW5mb0xvZywgZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJl
YW0pCitMaW5rUmVzdWx0IFByb2dyYW1HTDo6bG9hZChjb25zdCBDb250ZXh0SW1wbCAqY29udGV4
dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SW5mb0xvZyAmaW5mb0xvZywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFt
KQogewogICAgIHByZUxpbmsoKTsKIApAQCAtNjIsMTIgKzY2LDI1IEBAIExpbmtSZXN1bHQgUHJv
Z3JhbUdMOjpsb2FkKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0g
KnN0cmVhbSkKICAgICAvLyBWZXJpZnkgdGhhdCB0aGUgcHJvZ3JhbSBsaW5rZWQKICAgICBpZiAo
IWNoZWNrTGlua1N0YXR1cyhpbmZvTG9nKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBMaW5rUmVz
dWx0KGZhbHNlLCBnbDo6RXJyb3IoR0xfTk9fRVJST1IpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAogICAgIHBvc3RMaW5rKCk7CiAKLSAgICByZXR1cm4gTGlua1Jlc3VsdCh0cnVl
LCBnbDo6RXJyb3IoR0xfTk9fRVJST1IpKTsKKyAgICAvLyBSZS1hcHBseSBVQk8gYmluZGluZ3Mg
dG8gd29yayBhcm91bmQgZHJpdmVyIGJ1Z3MuCisgICAgY29uc3QgV29ya2Fyb3VuZHNHTCAmd29y
a2Fyb3VuZHNHTCA9IEdldEFzPENvbnRleHRHTD4oY29udGV4dEltcGwpLT5nZXRXb3JrYXJvdW5k
c0dMKCk7CisgICAgaWYgKHdvcmthcm91bmRzR0wucmVhcHBseVVCT0JpbmRpbmdzQWZ0ZXJMb2Fk
aW5nQmluYXJ5UHJvZ3JhbSkKKyAgICB7CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc2hvcnRlbi02NC10by0zMiIKKyAg
ICAgICAgZm9yIChHTHVpbnQgYmluZGluZ0luZGV4IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQobVN0
YXRlLmdldEFjdGl2ZVVuaWZvcm1CbG9ja0JpbmRpbmdzTWFzaygpKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgc2V0VW5pZm9ybUJsb2NrQmluZGluZyhiaW5kaW5nSW5kZXgsIG1TdGF0ZS5nZXRV
bmlmb3JtQmxvY2tCaW5kaW5nKGJpbmRpbmdJbmRleCkpOworICAgICAgICB9CisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcG9wCisgICAgfQorCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGdsOjpF
cnJvciBQcm9ncmFtR0w6OnNhdmUoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqc3RyZWFtKQpAQCAt
ODQsNyArMTAxLDcgQEAgZ2w6OkVycm9yIFByb2dyYW1HTDo6c2F2ZShnbDo6QmluYXJ5T3V0cHV0
U3RyZWFtICpzdHJlYW0pCiAgICAgc3RyZWFtLT53cml0ZUludChiaW5hcnlMZW5ndGgpOwogICAg
IHN0cmVhbS0+d3JpdGVCeXRlcygmYmluYXJ5WzBdLCBiaW5hcnlMZW5ndGgpOwogCi0gICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9
CiAKIHZvaWQgUHJvZ3JhbUdMOjpzZXRCaW5hcnlSZXRyaWV2YWJsZUhpbnQoYm9vbCByZXRyaWV2
YWJsZSkKQEAgLTk3LDcgKzExNCwxNCBAQCB2b2lkIFByb2dyYW1HTDo6c2V0QmluYXJ5UmV0cmll
dmFibGVIaW50KGJvb2wgcmV0cmlldmFibGUpCiAgICAgfQogfQogCi1MaW5rUmVzdWx0IFByb2dy
YW1HTDo6bGluayhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBnbDo6SW5mb0xvZyAmaW5m
b0xvZykKK3ZvaWQgUHJvZ3JhbUdMOjpzZXRTZXBhcmFibGUoYm9vbCBzZXBhcmFibGUpCit7Cisg
ICAgbUZ1bmN0aW9ucy0+cHJvZ3JhbVBhcmFtZXRlcmkobVByb2dyYW1JRCwgR0xfUFJPR1JBTV9T
RVBBUkFCTEUsIHNlcGFyYWJsZSA/IEdMX1RSVUUgOiBHTF9GQUxTRSk7Cit9CisKK0xpbmtSZXN1
bHQgUHJvZ3JhbUdMOjpsaW5rKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpWYXJ5aW5nUGFja2luZyAmcGFja2luZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsOjpJbmZvTG9nICZpbmZvTG9nKQogewogICAgIHByZUxp
bmsoKTsKIApAQCAtMTQ4LDcgKzE3Miw3IEBAIExpbmtSZXN1bHQgUHJvZ3JhbUdMOjpsaW5rKGNv
bnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIGdsOjpJbmZvTG9nICZpbmZvTG9nKQogICAgICAg
ICAvLyBCaW5kIGF0dHJpYnV0ZSBsb2NhdGlvbnMgdG8gbWF0Y2ggdGhlIEdMIGxheWVyLgogICAg
ICAgICBmb3IgKGNvbnN0IHNoOjpBdHRyaWJ1dGUgJmF0dHJpYnV0ZSA6IG1TdGF0ZS5nZXRBdHRy
aWJ1dGVzKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghYXR0cmlidXRlLnN0YXRpY1Vz
ZSkKKyAgICAgICAgICAgIGlmICghYXR0cmlidXRlLnN0YXRpY1VzZSB8fCBhdHRyaWJ1dGUuaXNC
dWlsdEluKCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICB9CkBAIC0xNjcsNyArMTkxLDcgQEAgTGlua1Jlc3VsdCBQcm9ncmFtR0w6Omxpbmso
Y29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgZ2w6OkluZm9Mb2cgJmluZm9Mb2cpCiAgICAg
Ly8gVmVyaWZ5IHRoZSBsaW5rCiAgICAgaWYgKCFjaGVja0xpbmtTdGF0dXMoaW5mb0xvZykpCiAg
ICAgewotICAgICAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAobVdvcmthcm91
bmRzLmFsd2F5c0NhbGxVc2VQcm9ncmFtQWZ0ZXJMaW5rKQpAQCAtMTc3LDcgKzIwMSw3IEBAIExp
bmtSZXN1bHQgUHJvZ3JhbUdMOjpsaW5rKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIGds
OjpJbmZvTG9nICZpbmZvTG9nKQogCiAgICAgcG9zdExpbmsoKTsKIAotICAgIHJldHVybiBMaW5r
UmVzdWx0KHRydWUsIGdsOjpFcnJvcihHTF9OT19FUlJPUikpOworICAgIHJldHVybiB0cnVlOwog
fQogCiBHTGJvb2xlYW4gUHJvZ3JhbUdMOjp2YWxpZGF0ZShjb25zdCBnbDo6Q2FwcyAmIC8qY2Fw
cyovLCBnbDo6SW5mb0xvZyAqIC8qaW5mb0xvZyovKQpAQCAtMTg4LDE0MCArMjEyLDI4MSBAQCBH
TGJvb2xlYW4gUHJvZ3JhbUdMOjp2YWxpZGF0ZShjb25zdCBnbDo6Q2FwcyAmIC8qY2FwcyovLCBn
bDo6SW5mb0xvZyAqIC8qaW5mb0xvZwogCiB2b2lkIFByb2dyYW1HTDo6c2V0VW5pZm9ybTFmdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKIHsKLSAgICBt
U3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgIG1GdW5jdGlvbnMtPnVu
aWZvcm0xZnYodW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHYpOworICAgIGlmIChtRnVuY3Rpb25z
LT5wcm9ncmFtVW5pZm9ybTFmdiAhPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgbUZ1bmN0aW9u
cy0+cHJvZ3JhbVVuaWZvcm0xZnYobVByb2dyYW1JRCwgdW5pTG9jKGxvY2F0aW9uKSwgY291bnQs
IHYpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtU3RhdGVNYW5hZ2VyLT51c2VQ
cm9ncmFtKG1Qcm9ncmFtSUQpOworICAgICAgICBtRnVuY3Rpb25zLT51bmlmb3JtMWZ2KHVuaUxv
Yyhsb2NhdGlvbiksIGNvdW50LCB2KTsKKyAgICB9CiB9CiAKIHZvaWQgUHJvZ3JhbUdMOjpzZXRV
bmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2
KQogewotICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7Ci0gICAgbUZ1
bmN0aW9ucy0+dW5pZm9ybTJmdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdik7CisgICAgaWYg
KG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtMmZ2ICE9IG51bGxwdHIpCisgICAgeworICAgICAg
ICBtRnVuY3Rpb25zLT5wcm9ncmFtVW5pZm9ybTJmdihtUHJvZ3JhbUlELCB1bmlMb2MobG9jYXRp
b24pLCBjb3VudCwgdik7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1TdGF0ZU1h
bmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7CisgICAgICAgIG1GdW5jdGlvbnMtPnVuaWZv
cm0yZnYodW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHYpOworICAgIH0KIH0KIAogdm9pZCBQcm9n
cmFtR0w6OnNldFVuaWZvcm0zZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMZmxvYXQgKnYpCiB7Ci0gICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlE
KTsKLSAgICBtRnVuY3Rpb25zLT51bmlmb3JtM2Z2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB2
KTsKKyAgICBpZiAobUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm0zZnYgIT0gbnVsbHB0cikKKyAg
ICB7CisgICAgICAgIG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtM2Z2KG1Qcm9ncmFtSUQsIHVu
aUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKKyAgICAgICAgbUZ1bmN0
aW9ucy0+dW5pZm9ybTNmdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdik7CisgICAgfQogfQog
CiB2b2lkIFByb2dyYW1HTDo6c2V0VW5pZm9ybTRmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xmbG9hdCAqdikKIHsKLSAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFt
KG1Qcm9ncmFtSUQpOwotICAgIG1GdW5jdGlvbnMtPnVuaWZvcm00ZnYodW5pTG9jKGxvY2F0aW9u
KSwgY291bnQsIHYpOworICAgIGlmIChtRnVuY3Rpb25zLT5wcm9ncmFtVW5pZm9ybTRmdiAhPSBu
dWxscHRyKQorICAgIHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm00ZnYobVBy
b2dyYW1JRCwgdW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHYpOworICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOworICAg
ICAgICBtRnVuY3Rpb25zLT51bmlmb3JtNGZ2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsK
KyAgICB9CiB9CiAKIHZvaWQgUHJvZ3JhbUdMOjpzZXRVbmlmb3JtMWl2KEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKIHsKLSAgICBtU3RhdGVNYW5hZ2VyLT51
c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0xaXYodW5pTG9j
KGxvY2F0aW9uKSwgY291bnQsIHYpOwotCi0gICAgY29uc3QgZ2w6OlZhcmlhYmxlTG9jYXRpb24g
JmxvY2F0aW9uRW50cnkgPSBtU3RhdGUuZ2V0VW5pZm9ybUxvY2F0aW9ucygpW2xvY2F0aW9uXTsK
LQotICAgIHNpemVfdCBzYW1wbGVySW5kZXggPSBtVW5pZm9ybUluZGV4VG9TYW1wbGVySW5kZXhb
bG9jYXRpb25FbnRyeS5pbmRleF07Ci0gICAgaWYgKHNhbXBsZXJJbmRleCAhPSBHTF9JTlZBTElE
X0lOREVYKQorICAgIGlmIChtRnVuY3Rpb25zLT5wcm9ncmFtVW5pZm9ybTFpdiAhPSBudWxscHRy
KQogICAgIHsKLSAgICAgICAgc3RkOjp2ZWN0b3I8R0x1aW50PiAmYm91bmRUZXh0dXJlVW5pdHMg
PSBtU2FtcGxlckJpbmRpbmdzW3NhbXBsZXJJbmRleF0uYm91bmRUZXh0dXJlVW5pdHM7Ci0KLSAg
ICAgICAgc2l6ZV90IGNvcHlDb3VudCA9Ci0gICAgICAgICAgICBzdGQ6Om1heDxzaXplX3Q+KGNv
dW50LCBib3VuZFRleHR1cmVVbml0cy5zaXplKCkgLSBsb2NhdGlvbkVudHJ5LmVsZW1lbnQpOwot
ICAgICAgICBzdGQ6OmNvcHkodiwgdiArIGNvcHlDb3VudCwgYm91bmRUZXh0dXJlVW5pdHMuYmVn
aW4oKSArIGxvY2F0aW9uRW50cnkuZWxlbWVudCk7CisgICAgICAgIG1GdW5jdGlvbnMtPnByb2dy
YW1Vbmlmb3JtMWl2KG1Qcm9ncmFtSUQsIHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbSht
UHJvZ3JhbUlEKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+dW5pZm9ybTFpdih1bmlMb2MobG9jYXRp
b24pLCBjb3VudCwgdik7CiAgICAgfQogfQogCiB2b2lkIFByb2dyYW1HTDo6c2V0VW5pZm9ybTJp
dihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCiB7Ci0gICAg
bVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKLSAgICBtRnVuY3Rpb25zLT51
bmlmb3JtMml2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsKKyAgICBpZiAobUZ1bmN0aW9u
cy0+cHJvZ3JhbVVuaWZvcm0yaXYgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIG1GdW5jdGlv
bnMtPnByb2dyYW1Vbmlmb3JtMml2KG1Qcm9ncmFtSUQsIHVuaUxvYyhsb2NhdGlvbiksIGNvdW50
LCB2KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+dXNl
UHJvZ3JhbShtUHJvZ3JhbUlEKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+dW5pZm9ybTJpdih1bmlM
b2MobG9jYXRpb24pLCBjb3VudCwgdik7CisgICAgfQogfQogCiB2b2lkIFByb2dyYW1HTDo6c2V0
VW5pZm9ybTNpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYp
CiB7Ci0gICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKLSAgICBtRnVu
Y3Rpb25zLT51bmlmb3JtM2l2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsKKyAgICBpZiAo
bUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm0zaXYgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAg
IG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtM2l2KG1Qcm9ncmFtSUQsIHVuaUxvYyhsb2NhdGlv
biksIGNvdW50LCB2KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbVN0YXRlTWFu
YWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+dW5pZm9y
bTNpdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdik7CisgICAgfQogfQogCiB2b2lkIFByb2dy
YW1HTDo6c2V0VW5pZm9ybTRpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0xpbnQgKnYpCiB7Ci0gICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsK
LSAgICBtRnVuY3Rpb25zLT51bmlmb3JtNGl2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsK
KyAgICBpZiAobUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm00aXYgIT0gbnVsbHB0cikKKyAgICB7
CisgICAgICAgIG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtNGl2KG1Qcm9ncmFtSUQsIHVuaUxv
Yyhsb2NhdGlvbiksIGNvdW50LCB2KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg
bVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKKyAgICAgICAgbUZ1bmN0aW9u
cy0+dW5pZm9ybTRpdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdik7CisgICAgfQogfQogCiB2
b2lkIFByb2dyYW1HTDo6c2V0VW5pZm9ybTF1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIGNvbnN0IEdMdWludCAqdikKIHsKLSAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Q
cm9ncmFtSUQpOwotICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0xdWl2KHVuaUxvYyhsb2NhdGlvbiks
IGNvdW50LCB2KTsKKyAgICBpZiAobUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm0xdWl2ICE9IG51
bGxwdHIpCisgICAgeworICAgICAgICBtRnVuY3Rpb25zLT5wcm9ncmFtVW5pZm9ybTF1aXYobVBy
b2dyYW1JRCwgdW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHYpOworICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOworICAg
ICAgICBtRnVuY3Rpb25zLT51bmlmb3JtMXVpdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdik7
CisgICAgfQogfQogCiB2b2lkIFByb2dyYW1HTDo6c2V0VW5pZm9ybTJ1aXYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikKIHsKLSAgICBtU3RhdGVNYW5hZ2Vy
LT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0ydWl2KHVu
aUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsKKyAgICBpZiAobUZ1bmN0aW9ucy0+cHJvZ3JhbVVu
aWZvcm0ydWl2ICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBtRnVuY3Rpb25zLT5wcm9ncmFt
VW5pZm9ybTJ1aXYobVByb2dyYW1JRCwgdW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHYpOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Q
cm9ncmFtSUQpOworICAgICAgICBtRnVuY3Rpb25zLT51bmlmb3JtMnVpdih1bmlMb2MobG9jYXRp
b24pLCBjb3VudCwgdik7CisgICAgfQogfQogCiB2b2lkIFByb2dyYW1HTDo6c2V0VW5pZm9ybTN1
aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikKIHsKLSAg
ICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgIG1GdW5jdGlvbnMt
PnVuaWZvcm0zdWl2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsKKyAgICBpZiAobUZ1bmN0
aW9ucy0+cHJvZ3JhbVVuaWZvcm0zdWl2ICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBtRnVu
Y3Rpb25zLT5wcm9ncmFtVW5pZm9ybTN1aXYobVByb2dyYW1JRCwgdW5pTG9jKGxvY2F0aW9uKSwg
Y291bnQsIHYpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtU3RhdGVNYW5hZ2Vy
LT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOworICAgICAgICBtRnVuY3Rpb25zLT51bmlmb3JtM3Vp
dih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdik7CisgICAgfQogfQogCiB2b2lkIFByb2dyYW1H
TDo6c2V0VW5pZm9ybTR1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
dWludCAqdikKIHsKLSAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwot
ICAgIG1GdW5jdGlvbnMtPnVuaWZvcm00dWl2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsK
KyAgICBpZiAobUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm00dWl2ICE9IG51bGxwdHIpCisgICAg
eworICAgICAgICBtRnVuY3Rpb25zLT5wcm9ncmFtVW5pZm9ybTR1aXYobVByb2dyYW1JRCwgdW5p
TG9jKGxvY2F0aW9uKSwgY291bnQsIHYpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOworICAgICAgICBtRnVuY3Rp
b25zLT51bmlmb3JtNHVpdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdik7CisgICAgfQogfQog
CiB2b2lkIFByb2dyYW1HTDo6c2V0VW5pZm9ybU1hdHJpeDJmdihHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7
Ci0gICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKLSAgICBtRnVuY3Rp
b25zLT51bmlmb3JtTWF0cml4MmZ2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB0cmFuc3Bvc2Us
IHZhbHVlKTsKKyAgICBpZiAobUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgyZnYgIT0g
bnVsbHB0cikKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtTWF0cml4
MmZ2KG1Qcm9ncmFtSUQsIHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJv
Z3JhbShtUHJvZ3JhbUlEKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+dW5pZm9ybU1hdHJpeDJmdih1
bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgfQogfQogCiB2
b2lkIFByb2dyYW1HTDo6c2V0VW5pZm9ybU1hdHJpeDNmdihHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7Ci0g
ICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKLSAgICBtRnVuY3Rpb25z
LT51bmlmb3JtTWF0cml4M2Z2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB0cmFuc3Bvc2UsIHZh
bHVlKTsKKyAgICBpZiAobUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgzZnYgIT0gbnVs
bHB0cikKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtTWF0cml4M2Z2
KG1Qcm9ncmFtSUQsIHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3Jh
bShtUHJvZ3JhbUlEKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+dW5pZm9ybU1hdHJpeDNmdih1bmlM
b2MobG9jYXRpb24pLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgfQogfQogCiB2b2lk
IFByb2dyYW1HTDo6c2V0VW5pZm9ybU1hdHJpeDRmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7Ci0gICAg
bVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKLSAgICBtRnVuY3Rpb25zLT51
bmlmb3JtTWF0cml4NGZ2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KTsKKyAgICBpZiAobUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYgIT0gbnVsbHB0
cikKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtTWF0cml4NGZ2KG1Q
cm9ncmFtSUQsIHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbSht
UHJvZ3JhbUlEKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+dW5pZm9ybU1hdHJpeDRmdih1bmlMb2Mo
bG9jYXRpb24pLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgfQogfQogCiB2b2lkIFBy
b2dyYW1HTDo6c2V0VW5pZm9ybU1hdHJpeDJ4M2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKLSAgICBt
U3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgIG1GdW5jdGlvbnMtPnVu
aWZvcm1NYXRyaXgyeDNmdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1
ZSk7CisgICAgaWYgKG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtTWF0cml4MngzZnYgIT0gbnVs
bHB0cikKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtTWF0cml4Mngz
ZnYobVByb2dyYW1JRCwgdW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAgfQor
ICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dy
YW1JRCk7CisgICAgICAgIG1GdW5jdGlvbnMtPnVuaWZvcm1NYXRyaXgyeDNmdih1bmlMb2MobG9j
YXRpb24pLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgfQogfQogCiB2b2lkIFByb2dy
YW1HTDo6c2V0VW5pZm9ybU1hdHJpeDN4MmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50
LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKLSAgICBtU3Rh
dGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgIG1GdW5jdGlvbnMtPnVuaWZv
cm1NYXRyaXgzeDJmdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7
CisgICAgaWYgKG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYgIT0gbnVsbHB0
cikKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtTWF0cml4M3gyZnYo
bVByb2dyYW1JRCwgdW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1J
RCk7CisgICAgICAgIG1GdW5jdGlvbnMtPnVuaWZvcm1NYXRyaXgzeDJmdih1bmlMb2MobG9jYXRp
b24pLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgfQogfQogCiB2b2lkIFByb2dyYW1H
TDo6c2V0VW5pZm9ybU1hdHJpeDJ4NGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBH
TGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKLSAgICBtU3RhdGVN
YW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgIG1GdW5jdGlvbnMtPnVuaWZvcm1N
YXRyaXgyeDRmdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7Cisg
ICAgaWYgKG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYgIT0gbnVsbHB0cikK
KyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtTWF0cml4Mng0ZnYobVBy
b2dyYW1JRCwgdW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAgfQorICAgIGVs
c2UKKyAgICB7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7
CisgICAgICAgIG1GdW5jdGlvbnMtPnVuaWZvcm1NYXRyaXgyeDRmdih1bmlMb2MobG9jYXRpb24p
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgfQogfQogCiB2b2lkIFByb2dyYW1HTDo6
c2V0VW5pZm9ybU1hdHJpeDR4MmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJv
b2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKLSAgICBtU3RhdGVNYW5h
Z2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgIG1GdW5jdGlvbnMtPnVuaWZvcm1NYXRy
aXg0eDJmdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAg
aWYgKG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYgIT0gbnVsbHB0cikKKyAg
ICB7CisgICAgICAgIG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtTWF0cml4NHgyZnYobVByb2dy
YW1JRCwgdW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7Cisg
ICAgICAgIG1GdW5jdGlvbnMtPnVuaWZvcm1NYXRyaXg0eDJmdih1bmlMb2MobG9jYXRpb24pLCBj
b3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgfQogfQogCiB2b2lkIFByb2dyYW1HTDo6c2V0
VW5pZm9ybU1hdHJpeDN4NGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKLSAgICBtU3RhdGVNYW5hZ2Vy
LT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgIG1GdW5jdGlvbnMtPnVuaWZvcm1NYXRyaXgz
eDRmdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgaWYg
KG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYgIT0gbnVsbHB0cikKKyAgICB7
CisgICAgICAgIG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtTWF0cml4M3g0ZnYobVByb2dyYW1J
RCwgdW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7CisgICAg
ICAgIG1GdW5jdGlvbnMtPnVuaWZvcm1NYXRyaXgzeDRmdih1bmlMb2MobG9jYXRpb24pLCBjb3Vu
dCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgfQogfQogCiB2b2lkIFByb2dyYW1HTDo6c2V0VW5p
Zm9ybU1hdHJpeDR4M2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKLSAgICBtU3RhdGVNYW5hZ2VyLT51
c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgIG1GdW5jdGlvbnMtPnVuaWZvcm1NYXRyaXg0eDNm
dih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgaWYgKG1G
dW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYgIT0gbnVsbHB0cikKKyAgICB7Cisg
ICAgICAgIG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtTWF0cml4NHgzZnYobVByb2dyYW1JRCwg
dW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7
CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7CisgICAgICAg
IG1GdW5jdGlvbnMtPnVuaWZvcm1NYXRyaXg0eDNmdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwg
dHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgfQogfQogCiB2b2lkIFByb2dyYW1HTDo6c2V0VW5pZm9y
bUJsb2NrQmluZGluZyhHTHVpbnQgdW5pZm9ybUJsb2NrSW5kZXgsIEdMdWludCB1bmlmb3JtQmxv
Y2tCaW5kaW5nKQpAQCAtMzUwLDExICs1MTUsNiBAQCBHTHVpbnQgUHJvZ3JhbUdMOjpnZXRQcm9n
cmFtSUQoKSBjb25zdAogICAgIHJldHVybiBtUHJvZ3JhbUlEOwogfQogCi1jb25zdCBzdGQ6OnZl
Y3RvcjxTYW1wbGVyQmluZGluZ0dMPiAmUHJvZ3JhbUdMOjpnZXRBcHBsaWVkU2FtcGxlclVuaWZv
cm1zKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVNhbXBsZXJCaW5kaW5nczsKLX0KLQogYm9vbCBQ
cm9ncmFtR0w6OmdldFVuaWZvcm1CbG9ja1NpemUoY29uc3Qgc3RkOjpzdHJpbmcgJmJsb2NrTmFt
ZSwgc2l6ZV90ICpzaXplT3V0KSBjb25zdAogewogICAgIEFTU0VSVChtUHJvZ3JhbUlEICE9IDB1
KTsKQEAgLTQyNiw4ICs1ODYsNiBAQCB2b2lkIFByb2dyYW1HTDo6cHJlTGluaygpCiAgICAgLy8g
UmVzZXQgdGhlIHByb2dyYW0gc3RhdGUKICAgICBtVW5pZm9ybVJlYWxMb2NhdGlvbk1hcC5jbGVh
cigpOwogICAgIG1Vbmlmb3JtQmxvY2tSZWFsTG9jYXRpb25NYXAuY2xlYXIoKTsKLSAgICBtU2Ft
cGxlckJpbmRpbmdzLmNsZWFyKCk7Ci0gICAgbVVuaWZvcm1JbmRleFRvU2FtcGxlckluZGV4LmNs
ZWFyKCk7CiAgICAgbVBhdGhSZW5kZXJpbmdGcmFnbWVudElucHV0cy5jbGVhcigpOwogfQogCkBA
IC00NDEsOCArNTk5LDYgQEAgYm9vbCBQcm9ncmFtR0w6OmNoZWNrTGlua1N0YXR1cyhnbDo6SW5m
b0xvZyAmaW5mb0xvZykKICAgICAgICAgR0xpbnQgaW5mb0xvZ0xlbmd0aCA9IDA7CiAgICAgICAg
IG1GdW5jdGlvbnMtPmdldFByb2dyYW1pdihtUHJvZ3JhbUlELCBHTF9JTkZPX0xPR19MRU5HVEgs
ICZpbmZvTG9nTGVuZ3RoKTsKIAotICAgICAgICBzdGQ6OnN0cmluZyB3YXJuaW5nOwotCiAgICAg
ICAgIC8vIEluZm8gbG9nIGxlbmd0aCBpbmNsdWRlcyB0aGUgbnVsbCB0ZXJtaW5hdG9yLCBzbyAx
IG1lYW5zIHRoYXQgdGhlIGluZm8gbG9nIGlzIGFuIGVtcHR5CiAgICAgICAgIC8vIHN0cmluZy4K
ICAgICAgICAgaWYgKGluZm9Mb2dMZW5ndGggPiAxKQpAQCAtNDU1LDE0ICs2MTEsMTIgQEAgYm9v
bCBQcm9ncmFtR0w6OmNoZWNrTGlua1N0YXR1cyhnbDo6SW5mb0xvZyAmaW5mb0xvZykKIAogICAg
ICAgICAgICAgaW5mb0xvZyA8PCBidWYuZGF0YSgpOwogCi0gICAgICAgICAgICB3YXJuaW5nID0g
Rm9ybWF0U3RyaW5nKCJQcm9ncmFtIGxpbmsgZmFpbGVkIHVuZXhwZWN0ZWRseTogJXMiLCBidWYu
ZGF0YSgpKTsKKyAgICAgICAgICAgIFdBUk4oKSA8PCAiUHJvZ3JhbSBsaW5rIGZhaWxlZCB1bmV4
cGVjdGVkbHk6ICIgPDwgYnVmLmRhdGEoKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHdhcm5pbmcgPSAiUHJvZ3JhbSBsaW5rIGZhaWxlZCB1bmV4cGVj
dGVkbHkgd2l0aCBubyBpbmZvIGxvZy4iOworICAgICAgICAgICAgV0FSTigpIDw8ICJQcm9ncmFt
IGxpbmsgZmFpbGVkIHVuZXhwZWN0ZWRseSB3aXRoIG5vIGluZm8gbG9nLiI7CiAgICAgICAgIH0K
LSAgICAgICAgQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKS0+bG9nV2FybmluZyh3YXJuaW5nLmNfc3Ry
KCkpOwotICAgICAgICBUUkFDRSgiXG4lcyIsIHdhcm5pbmcuY19zdHIoKSk7CiAKICAgICAgICAg
Ly8gVE9ETywgcmV0dXJuIEdMX09VVF9PRl9NRU1PUlkgb3IganVzdCBmYWlsIHRoZSBsaW5rPyBU
aGlzIGlzIGFuIHVuZXhwZWN0ZWQgY2FzZQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MDEs
MjQgKzY1NSw2IEBAIHZvaWQgUHJvZ3JhbUdMOjpwb3N0TGluaygpCiAgICAgICAgIG1Vbmlmb3Jt
UmVhbExvY2F0aW9uTWFwW3VuaWZvcm1Mb2NhdGlvbl0gPSByZWFsTG9jYXRpb247CiAgICAgfQog
Ci0gICAgbVVuaWZvcm1JbmRleFRvU2FtcGxlckluZGV4LnJlc2l6ZShtU3RhdGUuZ2V0VW5pZm9y
bXMoKS5zaXplKCksIEdMX0lOVkFMSURfSU5ERVgpOwotCi0gICAgZm9yIChzaXplX3QgdW5pZm9y
bUlkID0gMDsgdW5pZm9ybUlkIDwgdW5pZm9ybXMuc2l6ZSgpOyArK3VuaWZvcm1JZCkKLSAgICB7
Ci0gICAgICAgIGNvbnN0IGdsOjpMaW5rZWRVbmlmb3JtICZsaW5rZWRVbmlmb3JtID0gdW5pZm9y
bXNbdW5pZm9ybUlkXTsKLQotICAgICAgICBpZiAoIWxpbmtlZFVuaWZvcm0uaXNTYW1wbGVyKCkg
fHwgIWxpbmtlZFVuaWZvcm0uc3RhdGljVXNlKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAg
ICAgICAgbVVuaWZvcm1JbmRleFRvU2FtcGxlckluZGV4W3VuaWZvcm1JZF0gPSBtU2FtcGxlckJp
bmRpbmdzLnNpemUoKTsKLQotICAgICAgICAvLyBJZiB1bmlmb3JtIGlzIGEgc2FtcGxlciB0eXBl
LCBpbnNlcnQgaXQgaW50byB0aGUgbVNhbXBsZXJCaW5kaW5ncyBhcnJheQotICAgICAgICBTYW1w
bGVyQmluZGluZ0dMIHNhbXBsZXJCaW5kaW5nOwotICAgICAgICBzYW1wbGVyQmluZGluZy50ZXh0
dXJlVHlwZSA9IGdsOjpTYW1wbGVyVHlwZVRvVGV4dHVyZVR5cGUobGlua2VkVW5pZm9ybS50eXBl
KTsKLSAgICAgICAgc2FtcGxlckJpbmRpbmcuYm91bmRUZXh0dXJlVW5pdHMucmVzaXplKGxpbmtl
ZFVuaWZvcm0uZWxlbWVudENvdW50KCksIDApOwotICAgICAgICBtU2FtcGxlckJpbmRpbmdzLnB1
c2hfYmFjayhzYW1wbGVyQmluZGluZyk7Ci0gICAgfQotCiAgICAgLy8gRGlzY292ZXIgQ0hST01J
VU1fcGF0aF9yZW5kZXJpbmcgZnJhZ21lbnQgaW5wdXRzIGlmIGVuYWJsZWQuCiAgICAgaWYgKCFt
RW5hYmxlUGF0aFJlbmRlcmluZykKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1Byb2dyYW1HTC5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1Byb2dyYW1H
TC5oCmluZGV4IDg4ZTIyNDVmYTI2OGI5YTllZjhkNDk1Y2FjZjExZDQ1YjUwMTMxNmUuLmZhNWE3
YzRjZTFlNTI2OTQ1MWQ3MjdlNTJhMDY5ZmJjMzI0YWVmODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFtR0wuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJvZ3Jh
bUdMLmgKQEAgLTIxLDEyICsyMSw2IEBAIG5hbWVzcGFjZSByeAogY2xhc3MgRnVuY3Rpb25zR0w7
CiBjbGFzcyBTdGF0ZU1hbmFnZXJHTDsKIAotc3RydWN0IFNhbXBsZXJCaW5kaW5nR0wKLXsKLSAg
ICBHTGVudW0gdGV4dHVyZVR5cGU7Ci0gICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBib3VuZFRleHR1
cmVVbml0czsKLX07Ci0KIGNsYXNzIFByb2dyYW1HTCA6IHB1YmxpYyBQcm9ncmFtSW1wbAogewog
ICBwdWJsaWM6CkBAIC0zNywxMSArMzEsMTYgQEAgY2xhc3MgUHJvZ3JhbUdMIDogcHVibGljIFBy
b2dyYW1JbXBsCiAgICAgICAgICAgICAgIGJvb2wgZW5hYmxlUGF0aFJlbmRlcmluZyk7CiAgICAg
flByb2dyYW1HTCgpIG92ZXJyaWRlOwogCi0gICAgTGlua1Jlc3VsdCBsb2FkKGdsOjpJbmZvTG9n
ICZpbmZvTG9nLCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkgb3ZlcnJpZGU7CisgICAg
TGlua1Jlc3VsdCBsb2FkKGNvbnN0IENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAg
ICAgICAgICAgICAgZ2w6OkluZm9Mb2cgJmluZm9Mb2csCisgICAgICAgICAgICAgICAgICAgIGds
OjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtKSBvdmVycmlkZTsKICAgICBnbDo6RXJyb3Igc2F2
ZShnbDo6QmluYXJ5T3V0cHV0U3RyZWFtICpzdHJlYW0pIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0
QmluYXJ5UmV0cmlldmFibGVIaW50KGJvb2wgcmV0cmlldmFibGUpIG92ZXJyaWRlOworICAgIHZv
aWQgc2V0U2VwYXJhYmxlKGJvb2wgc2VwYXJhYmxlKSBvdmVycmlkZTsKIAotICAgIExpbmtSZXN1
bHQgbGluayhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBnbDo6SW5mb0xvZyAmaW5mb0xv
Zykgb3ZlcnJpZGU7CisgICAgTGlua1Jlc3VsdCBsaW5rKENvbnRleHRJbXBsICpjb250ZXh0SW1w
bCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZhcnlpbmdQYWNraW5nICZwYWNraW5n
LAorICAgICAgICAgICAgICAgICAgICBnbDo6SW5mb0xvZyAmaW5mb0xvZykgb3ZlcnJpZGU7CiAg
ICAgR0xib29sZWFuIHZhbGlkYXRlKGNvbnN0IGdsOjpDYXBzICZjYXBzLCBnbDo6SW5mb0xvZyAq
aW5mb0xvZykgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpIG92ZXJyaWRlOwpAQCAtNzgsNyAr
NzcsNiBAQCBjbGFzcyBQcm9ncmFtR0wgOiBwdWJsaWMgUHJvZ3JhbUltcGwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcykgb3ZlcnJpZGU7CiAK
ICAgICBHTHVpbnQgZ2V0UHJvZ3JhbUlEKCkgY29uc3Q7Ci0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8
U2FtcGxlckJpbmRpbmdHTD4gJmdldEFwcGxpZWRTYW1wbGVyVW5pZm9ybXMoKSBjb25zdDsKIAog
ICBwcml2YXRlOgogICAgIHZvaWQgcHJlTGluaygpOwpAQCAtOTUsMTIgKzkzLDYgQEAgY2xhc3Mg
UHJvZ3JhbUdMIDogcHVibGljIFByb2dyYW1JbXBsCiAgICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IG1V
bmlmb3JtUmVhbExvY2F0aW9uTWFwOwogICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbVVuaWZvcm1C
bG9ja1JlYWxMb2NhdGlvbk1hcDsKIAotICAgIC8vIEFuIGFycmF5IG9mIHRoZSBzYW1wbGVycyB0
aGF0IGFyZSB1c2VkIGJ5IHRoZSBwcm9ncmFtCi0gICAgc3RkOjp2ZWN0b3I8U2FtcGxlckJpbmRp
bmdHTD4gbVNhbXBsZXJCaW5kaW5nczsKLQotICAgIC8vIEEgbWFwIGZyb20gYSBtRGF0YS5nZXRV
bmlmb3JtcygpIGluZGV4IHRvIGEgbVNhbXBsZXJCaW5kaW5ncyBpbmRleC4KLSAgICBzdGQ6OnZl
Y3RvcjxzaXplX3Q+IG1Vbmlmb3JtSW5kZXhUb1NhbXBsZXJJbmRleDsKLQogICAgIHN0cnVjdCBQ
YXRoUmVuZGVyaW5nRnJhZ21lbnRJbnB1dAogICAgIHsKICAgICAgICAgc3RkOjpzdHJpbmcgbmFt
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9RdWVyeUdMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9RdWVyeUdMLmNwcAppbmRleCA2ZDlkZjVkNzYwMTgzYTY1M2M5YjIyNTIz
NmE5MWQ2Njk4Mzk1YTQzLi45ZWQzNmJlNTZjMThlMzhjOWRhODkzODMwYjU2MzAxNjE1Y2RkZDJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvUXVlcnlHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL1F1ZXJ5R0wuY3BwCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAi
Y29tbW9uL2RlYnVnLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25z
R0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuaCIKIAogbmFt
ZXNwYWNlCiB7CkBAIC00Myw4ICs0NCwxOCBAQCBHTHVpbnQ2NCBNZXJnZVF1ZXJ5UmVzdWx0cyhH
TGVudW0gdHlwZSwgR0x1aW50NjQgY3VycmVudFJlc3VsdCwgR0x1aW50NjQgbmV3UmVzdQogbmFt
ZXNwYWNlIHJ4CiB7CiAKLVF1ZXJ5R0w6OlF1ZXJ5R0woR0xlbnVtIHR5cGUsIGNvbnN0IEZ1bmN0
aW9uc0dMICpmdW5jdGlvbnMsIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIpCi0gICAgOiBR
dWVyeUltcGwodHlwZSksCitRdWVyeUdMOjpRdWVyeUdMKEdMZW51bSB0eXBlKSA6IFF1ZXJ5SW1w
bCh0eXBlKQoreworfQorCitRdWVyeUdMOjp+UXVlcnlHTCgpCit7Cit9CisKK1N0YW5kYXJkUXVl
cnlHTDo6U3RhbmRhcmRRdWVyeUdMKEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIpCisgICAgOiBR
dWVyeUdMKHR5cGUpLAogICAgICAgbVR5cGUodHlwZSksCiAgICAgICBtRnVuY3Rpb25zKGZ1bmN0
aW9ucyksCiAgICAgICBtU3RhdGVNYW5hZ2VyKHN0YXRlTWFuYWdlciksCkBAIC01NCw3ICs2NSw3
IEBAIFF1ZXJ5R0w6OlF1ZXJ5R0woR0xlbnVtIHR5cGUsIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5j
dGlvbnMsIFN0YXRlTWFuYWdlckdMICpzdGF0CiB7CiB9CiAKLVF1ZXJ5R0w6On5RdWVyeUdMKCkK
K1N0YW5kYXJkUXVlcnlHTDo6flN0YW5kYXJkUXVlcnlHTCgpCiB7CiAgICAgbVN0YXRlTWFuYWdl
ci0+ZGVsZXRlUXVlcnkobUFjdGl2ZVF1ZXJ5KTsKICAgICBtU3RhdGVNYW5hZ2VyLT5vbkRlbGV0
ZVF1ZXJ5T2JqZWN0KHRoaXMpOwpAQCAtNjUsMTkgKzc2LDE5IEBAIFF1ZXJ5R0w6On5RdWVyeUdM
KCkKICAgICB9CiB9CiAKLWdsOjpFcnJvciBRdWVyeUdMOjpiZWdpbigpCitnbDo6RXJyb3IgU3Rh
bmRhcmRRdWVyeUdMOjpiZWdpbigpCiB7CiAgICAgbVJlc3VsdFN1bSA9IDA7CiAgICAgbVN0YXRl
TWFuYWdlci0+b25CZWdpblF1ZXJ5KHRoaXMpOwogICAgIHJldHVybiByZXN1bWUoKTsKIH0KIAot
Z2w6OkVycm9yIFF1ZXJ5R0w6OmVuZCgpCitnbDo6RXJyb3IgU3RhbmRhcmRRdWVyeUdMOjplbmQo
KQogewogICAgIHJldHVybiBwYXVzZSgpOwogfQogCi1nbDo6RXJyb3IgUXVlcnlHTDo6cXVlcnlD
b3VudGVyKCkKK2dsOjpFcnJvciBTdGFuZGFyZFF1ZXJ5R0w6OnF1ZXJ5Q291bnRlcigpCiB7CiAg
ICAgQVNTRVJUKG1UeXBlID09IEdMX1RJTUVTVEFNUCk7CiAKQEAgLTg4LDExICs5OSwxMSBAQCBn
bDo6RXJyb3IgUXVlcnlHTDo6cXVlcnlDb3VudGVyKCkKICAgICBtRnVuY3Rpb25zLT5xdWVyeUNv
dW50ZXIocXVlcnksIEdMX1RJTUVTVEFNUCk7CiAgICAgbVBlbmRpbmdRdWVyaWVzLnB1c2hfYmFj
ayhxdWVyeSk7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1nbDo6RXJyb3Ig
UXVlcnlHTDo6Z2V0UmVzdWx0QmFzZShUICpwYXJhbXMpCitnbDo6RXJyb3IgU3RhbmRhcmRRdWVy
eUdMOjpnZXRSZXN1bHRCYXNlKFQgKnBhcmFtcykKIHsKICAgICBBU1NFUlQobUFjdGl2ZVF1ZXJ5
ID09IDApOwogCkBAIC0xMDUsMzAgKzExNiwzMCBAQCBnbDo6RXJyb3IgUXVlcnlHTDo6Z2V0UmVz
dWx0QmFzZShUICpwYXJhbXMpCiAgICAgQVNTRVJUKG1QZW5kaW5nUXVlcmllcy5lbXB0eSgpKTsK
ICAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8VD4obVJlc3VsdFN1bSk7CiAKLSAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAot
Z2w6OkVycm9yIFF1ZXJ5R0w6OmdldFJlc3VsdChHTGludCAqcGFyYW1zKQorZ2w6OkVycm9yIFN0
YW5kYXJkUXVlcnlHTDo6Z2V0UmVzdWx0KEdMaW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIGdl
dFJlc3VsdEJhc2UocGFyYW1zKTsKIH0KIAotZ2w6OkVycm9yIFF1ZXJ5R0w6OmdldFJlc3VsdChH
THVpbnQgKnBhcmFtcykKK2dsOjpFcnJvciBTdGFuZGFyZFF1ZXJ5R0w6OmdldFJlc3VsdChHTHVp
bnQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gZ2V0UmVzdWx0QmFzZShwYXJhbXMpOwogfQogCi1n
bDo6RXJyb3IgUXVlcnlHTDo6Z2V0UmVzdWx0KEdMaW50NjQgKnBhcmFtcykKK2dsOjpFcnJvciBT
dGFuZGFyZFF1ZXJ5R0w6OmdldFJlc3VsdChHTGludDY0ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJu
IGdldFJlc3VsdEJhc2UocGFyYW1zKTsKIH0KIAotZ2w6OkVycm9yIFF1ZXJ5R0w6OmdldFJlc3Vs
dChHTHVpbnQ2NCAqcGFyYW1zKQorZ2w6OkVycm9yIFN0YW5kYXJkUXVlcnlHTDo6Z2V0UmVzdWx0
KEdMdWludDY0ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIGdldFJlc3VsdEJhc2UocGFyYW1zKTsK
IH0KIAotZ2w6OkVycm9yIFF1ZXJ5R0w6OmlzUmVzdWx0QXZhaWxhYmxlKGJvb2wgKmF2YWlsYWJs
ZSkKK2dsOjpFcnJvciBTdGFuZGFyZFF1ZXJ5R0w6OmlzUmVzdWx0QXZhaWxhYmxlKGJvb2wgKmF2
YWlsYWJsZSkKIHsKICAgICBBU1NFUlQobUFjdGl2ZVF1ZXJ5ID09IDApOwogCkBAIC0xMzksMTAg
KzE1MCwxMCBAQCBnbDo6RXJyb3IgUXVlcnlHTDo6aXNSZXN1bHRBdmFpbGFibGUoYm9vbCAqYXZh
aWxhYmxlKQogICAgIH0KIAogICAgICphdmFpbGFibGUgPSBtUGVuZGluZ1F1ZXJpZXMuZW1wdHko
KTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFF1ZXJ5R0w6OnBhdXNlKCkKK2dsOjpFcnJvciBTdGFu
ZGFyZFF1ZXJ5R0w6OnBhdXNlKCkKIHsKICAgICBpZiAobUFjdGl2ZVF1ZXJ5ICE9IDApCiAgICAg
ewpAQCAtMTU5LDEwICsxNzAsMTAgQEAgZ2w6OkVycm9yIFF1ZXJ5R0w6OnBhdXNlKCkKICAgICAg
ICAgcmV0dXJuIGVycm9yOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgUXVlcnlHTDo6
cmVzdW1lKCkKK2dsOjpFcnJvciBTdGFuZGFyZFF1ZXJ5R0w6OnJlc3VtZSgpCiB7CiAgICAgaWYg
KG1BY3RpdmVRdWVyeSA9PSAwKQogICAgIHsKQEAgLTE3NywxMCArMTg4LDEwIEBAIGdsOjpFcnJv
ciBRdWVyeUdMOjpyZXN1bWUoKQogICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iZWdpblF1ZXJ5KG1U
eXBlLCBtQWN0aXZlUXVlcnkpOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgUXVlcnlH
TDo6Zmx1c2goYm9vbCBmb3JjZSkKK2dsOjpFcnJvciBTdGFuZGFyZFF1ZXJ5R0w6OmZsdXNoKGJv
b2wgZm9yY2UpCiB7CiAgICAgd2hpbGUgKCFtUGVuZGluZ1F1ZXJpZXMuZW1wdHkoKSkKICAgICB7
CkBAIC0xOTEsNyArMjAyLDcgQEAgZ2w6OkVycm9yIFF1ZXJ5R0w6OmZsdXNoKGJvb2wgZm9yY2Up
CiAgICAgICAgICAgICBtRnVuY3Rpb25zLT5nZXRRdWVyeU9iamVjdHVpdihpZCwgR0xfUVVFUllf
UkVTVUxUX0FWQUlMQUJMRSwgJnJlc3VsdEF2YWlsYWJsZSk7CiAgICAgICAgICAgICBpZiAocmVz
dWx0QXZhaWxhYmxlID09IEdMX0ZBTFNFKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTIxNiw3ICsyMjcs
MTk3IEBAIGdsOjpFcnJvciBRdWVyeUdMOjpmbHVzaChib29sIGZvcmNlKQogICAgICAgICBtUGVu
ZGluZ1F1ZXJpZXMucG9wX2Zyb250KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK2NsYXNzIFN5bmNQ
cm92aWRlckdMCit7CisgIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5TeW5jUHJvdmlkZXJHTCgpIHt9
CisgICAgdmlydHVhbCBnbDo6RXJyb3IgZmx1c2goYm9vbCBmb3JjZSwgYm9vbCAqZmluaXNoZWQp
ID0gMDsKK307CisKK2NsYXNzIFN5bmNQcm92aWRlckdMU3luYyA6IHB1YmxpYyBTeW5jUHJvdmlk
ZXJHTAoreworICBwdWJsaWM6CisgICAgU3luY1Byb3ZpZGVyR0xTeW5jKGNvbnN0IEZ1bmN0aW9u
c0dMICpmdW5jdGlvbnMpIDogbUZ1bmN0aW9ucyhmdW5jdGlvbnMpLCBtU3luYyhudWxscHRyKQor
ICAgIHsKKyAgICAgICAgbVN5bmMgPSBtRnVuY3Rpb25zLT5mZW5jZVN5bmMoR0xfU1lOQ19HUFVf
Q09NTUFORFNfQ09NUExFVEUsIDApOworICAgIH0KKworICAgIHZpcnR1YWwgflN5bmNQcm92aWRl
ckdMU3luYygpIHsgbUZ1bmN0aW9ucy0+ZGVsZXRlU3luYyhtU3luYyk7IH0KKworICAgIGdsOjpF
cnJvciBmbHVzaChib29sIGZvcmNlLCBib29sICpmaW5pc2hlZCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGlmIChmb3JjZSkKKyAgICAgICAgeworICAgICAgICAgICAgbUZ1bmN0aW9ucy0+Y2xp
ZW50V2FpdFN5bmMobVN5bmMsIDAsIDApOworICAgICAgICAgICAgKmZpbmlzaGVkID0gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMaW50IHZh
bHVlID0gMDsKKyAgICAgICAgICAgIG1GdW5jdGlvbnMtPmdldFN5bmNpdihtU3luYywgR0xfU1lO
Q19TVEFUVVMsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgICAgICAgICAqZmluaXNoZWQgPSAo
dmFsdWUgPT0gR0xfU0lHTkFMRUQpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CisgICAgfQorCisgIHByaXZhdGU6CisgICAgY29uc3QgRnVuY3Rpb25zR0wgKm1G
dW5jdGlvbnM7CisgICAgR0xzeW5jIG1TeW5jOworfTsKKworY2xhc3MgU3luY1Byb3ZpZGVyR0xR
dWVyeSA6IHB1YmxpYyBTeW5jUHJvdmlkZXJHTAoreworICBwdWJsaWM6CisgICAgU3luY1Byb3Zp
ZGVyR0xRdWVyeShjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBxdWVyeVR5cGUpCisgICAgICAgIDogbUZ1bmN0aW9ucyhmdW5jdGlvbnMp
LCBtUXVlcnkoMCkKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPmdlblF1ZXJpZXMoMSwgJm1R
dWVyeSk7CisgICAgICAgIHN0YXRlTWFuYWdlci0+cGF1c2VRdWVyeShxdWVyeVR5cGUpOworICAg
ICAgICBtRnVuY3Rpb25zLT5iZWdpblF1ZXJ5KHF1ZXJ5VHlwZSwgbVF1ZXJ5KTsKKyAgICAgICAg
bUZ1bmN0aW9ucy0+ZW5kUXVlcnkocXVlcnlUeXBlKTsKKyAgICAgICAgc3RhdGVNYW5hZ2VyLT5y
ZXN1bWVRdWVyeShxdWVyeVR5cGUpOworICAgIH0KKworICAgIHZpcnR1YWwgflN5bmNQcm92aWRl
ckdMUXVlcnkoKSB7IG1GdW5jdGlvbnMtPmRlbGV0ZVF1ZXJpZXMoMSwgJm1RdWVyeSk7IH0KKwor
ICAgIGdsOjpFcnJvciBmbHVzaChib29sIGZvcmNlLCBib29sICpmaW5pc2hlZCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGlmIChmb3JjZSkKKyAgICAgICAgeworICAgICAgICAgICAgR0xpbnQg
cmVzdWx0ID0gMDsKKyAgICAgICAgICAgIG1GdW5jdGlvbnMtPmdldFF1ZXJ5T2JqZWN0aXYobVF1
ZXJ5LCBHTF9RVUVSWV9SRVNVTFQsICZyZXN1bHQpOworICAgICAgICAgICAgKmZpbmlzaGVkID0g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIEdM
aW50IGF2YWlsYWJsZSA9IDA7CisgICAgICAgICAgICBtRnVuY3Rpb25zLT5nZXRRdWVyeU9iamVj
dGl2KG1RdWVyeSwgR0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRSwgJmF2YWlsYWJsZSk7CisgICAg
ICAgICAgICAqZmluaXNoZWQgPSAoYXZhaWxhYmxlID09IEdMX1RSVUUpOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAgfQorCisgIHByaXZhdGU6CisgICAg
Y29uc3QgRnVuY3Rpb25zR0wgKm1GdW5jdGlvbnM7CisgICAgR0x1aW50IG1RdWVyeTsKK307CisK
K1N5bmNRdWVyeUdMOjpTeW5jUXVlcnlHTChHTGVudW0gdHlwZSwgY29uc3QgRnVuY3Rpb25zR0wg
KmZ1bmN0aW9ucywgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlcikKKyAgICA6IFF1ZXJ5R0wo
dHlwZSksCisgICAgICBtRnVuY3Rpb25zKGZ1bmN0aW9ucyksCisgICAgICBtU3RhdGVNYW5hZ2Vy
KHN0YXRlTWFuYWdlciksCisgICAgICBtU3luY1Byb3ZpZGVyKG51bGxwdHIpLAorICAgICAgbUZp
bmlzaGVkKGZhbHNlKQoreworICAgIEFTU0VSVChJc1N1cHBvcnRlZChtRnVuY3Rpb25zKSk7Cisg
ICAgQVNTRVJUKHR5cGUgPT0gR0xfQ09NTUFORFNfQ09NUExFVEVEX0NIUk9NSVVNKTsKIH0KIAor
U3luY1F1ZXJ5R0w6On5TeW5jUXVlcnlHTCgpCit7Cit9CisKK2Jvb2wgU3luY1F1ZXJ5R0w6Oklz
U3VwcG9ydGVkKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMpCit7CisgICAgcmV0dXJuIG5h
dGl2ZWdsOjpTdXBwb3J0c0ZlbmNlU3luYyhmdW5jdGlvbnMpIHx8IG5hdGl2ZWdsOjpTdXBwb3J0
c09jY2x1c2lvblF1ZXJpZXMoZnVuY3Rpb25zKTsKK30KKworZ2w6OkVycm9yIFN5bmNRdWVyeUdM
OjpiZWdpbigpCit7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK2dsOjpFcnJvciBT
eW5jUXVlcnlHTDo6ZW5kKCkKK3sKKyAgICBpZiAobmF0aXZlZ2w6OlN1cHBvcnRzRmVuY2VTeW5j
KG1GdW5jdGlvbnMpKQorICAgIHsKKyAgICAgICAgbVN5bmNQcm92aWRlci5yZXNldChuZXcgU3lu
Y1Byb3ZpZGVyR0xTeW5jKG1GdW5jdGlvbnMpKTsKKyAgICB9CisgICAgZWxzZSBpZiAobmF0aXZl
Z2w6OlN1cHBvcnRzT2NjbHVzaW9uUXVlcmllcyhtRnVuY3Rpb25zKSkKKyAgICB7CisgICAgICAg
IG1TeW5jUHJvdmlkZXIucmVzZXQoCisgICAgICAgICAgICBuZXcgU3luY1Byb3ZpZGVyR0xRdWVy
eShtRnVuY3Rpb25zLCBtU3RhdGVNYW5hZ2VyLCBHTF9BTllfU0FNUExFU19QQVNTRUQpKTsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIk5vIG5hdGl2ZSBzdXBwb3J0IGZv
ciBzeW5jIHF1ZXJpZXMuIik7CisgICAgfQorICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQor
CitnbDo6RXJyb3IgU3luY1F1ZXJ5R0w6OnF1ZXJ5Q291bnRlcigpCit7CisgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKworZ2w6OkVycm9yIFN5bmNRdWVy
eUdMOjpnZXRSZXN1bHQoR0xpbnQgKnBhcmFtcykKK3sKKyAgICByZXR1cm4gZ2V0UmVzdWx0QmFz
ZShwYXJhbXMpOworfQorCitnbDo6RXJyb3IgU3luY1F1ZXJ5R0w6OmdldFJlc3VsdChHTHVpbnQg
KnBhcmFtcykKK3sKKyAgICByZXR1cm4gZ2V0UmVzdWx0QmFzZShwYXJhbXMpOworfQorCitnbDo6
RXJyb3IgU3luY1F1ZXJ5R0w6OmdldFJlc3VsdChHTGludDY0ICpwYXJhbXMpCit7CisgICAgcmV0
dXJuIGdldFJlc3VsdEJhc2UocGFyYW1zKTsKK30KKworZ2w6OkVycm9yIFN5bmNRdWVyeUdMOjpn
ZXRSZXN1bHQoR0x1aW50NjQgKnBhcmFtcykKK3sKKyAgICByZXR1cm4gZ2V0UmVzdWx0QmFzZShw
YXJhbXMpOworfQorCitnbDo6RXJyb3IgU3luY1F1ZXJ5R0w6OmlzUmVzdWx0QXZhaWxhYmxlKGJv
b2wgKmF2YWlsYWJsZSkKK3sKKyAgICBBTkdMRV9UUlkoZmx1c2goZmFsc2UpKTsKKyAgICAqYXZh
aWxhYmxlID0gbUZpbmlzaGVkOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCitnbDo6
RXJyb3IgU3luY1F1ZXJ5R0w6OnBhdXNlKCkKK3sKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
K30KKworZ2w6OkVycm9yIFN5bmNRdWVyeUdMOjpyZXN1bWUoKQoreworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOworfQorCitnbDo6RXJyb3IgU3luY1F1ZXJ5R0w6OmZsdXNoKGJvb2wgZm9yY2Up
Cit7CisgICAgaWYgKG1TeW5jUHJvdmlkZXIgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIEFT
U0VSVChtRmluaXNoZWQpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICB9CisK
KyAgICBBTkdMRV9UUlkobVN5bmNQcm92aWRlci0+Zmx1c2goZm9yY2UsICZtRmluaXNoZWQpKTsK
KyAgICBpZiAobUZpbmlzaGVkKQorICAgIHsKKyAgICAgICAgbVN5bmNQcm92aWRlci5yZXNldCgp
OworICAgIH0KKworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2dsOjpFcnJvciBTeW5jUXVlcnlHTDo6Z2V0UmVzdWx0QmFzZShUICpwYXJhbXMp
Cit7CisgICAgQU5HTEVfVFJZKGZsdXNoKHRydWUpKTsKKyAgICAqcGFyYW1zID0gc3RhdGljX2Nh
c3Q8VD4obUZpbmlzaGVkID8gR0xfVFJVRSA6IEdMX0ZBTFNFKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKK30KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9RdWVyeUdMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUXVlcnlHTC5oCmluZGV4IDVlMjgwYjFmN2JjZGMwMmY2
YjFjZDQxMGYzODBjN2Y0ZTM1ZTZkYjcuLjg4NzY2NWEyY2EwZDc3YjlkMjI4MjJjMTg1ZTE1YWFk
YTkyMjA1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9RdWVyeUdMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL1F1ZXJ5R0wuaApAQCAtMjIsOSArMjIsMjUgQEAgY2xhc3Mg
U3RhdGVNYW5hZ2VyR0w7CiBjbGFzcyBRdWVyeUdMIDogcHVibGljIFF1ZXJ5SW1wbAogewogICBw
dWJsaWM6Ci0gICAgUXVlcnlHTChHTGVudW0gdHlwZSwgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0
aW9ucywgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlcik7CisgICAgUXVlcnlHTChHTGVudW0g
dHlwZSk7CiAgICAgflF1ZXJ5R0woKSBvdmVycmlkZTsKIAorICAgIC8vIE9wZW5HTCBpcyBvbmx5
IGFsbG93ZWQgdG8gaGF2ZSBvbmUgcXVlcnkgb2YgZWFjaCB0eXBlIGFjdGl2ZSBhdCBhbnkgZ2l2
ZW4gdGltZS4gU2luY2UgQU5HTEUKKyAgICAvLyB2aXJ0dWFsaXplcyBjb250ZXh0cywgcXVlcmll
cyBuZWVkIHRvIGJlIGFibGUgdG8gYmUgcGF1c2VkIGFuZCByZXN1bWVkLgorICAgIC8vIEEgcXVl
cnkgaXMgInBhdXNlZCIgYnkgZW5kaW5nIGl0IGFuZCBwdXNoaW5nIHRoZSBJRCBpbnRvIGEgbGlz
dCBvZiBxdWVyaWVzIGF3YWl0aW5nIHJlYWRiYWNrLgorICAgIC8vIFdoZW4gaXQgaXMgInJlc3Vt
ZWQiLCBhIG5ldyBxdWVyeSBpcyBnZW5lcmF0ZWQgYW5kIHN0YXJ0ZWQuCisgICAgLy8gV2hlbiBh
IHJlc3VsdCBpcyByZXF1aXJlZCwgdGhlIHF1ZXJpZXMgYXJlICJmbHVzaGVkIiBieSBpdGVyYXRp
bmcgb3ZlciB0aGUgbGlzdCBvZiBwZW5kaW5nCisgICAgLy8gcXVlcmllcyBhbmQgbWVyZ2luZyB0
aGVpciByZXN1bHRzLgorICAgIHZpcnR1YWwgZ2w6OkVycm9yIHBhdXNlKCkgID0gMDsKKyAgICB2
aXJ0dWFsIGdsOjpFcnJvciByZXN1bWUoKSA9IDA7Cit9OworCitjbGFzcyBTdGFuZGFyZFF1ZXJ5
R0wgOiBwdWJsaWMgUXVlcnlHTAoreworICBwdWJsaWM6CisgICAgU3RhbmRhcmRRdWVyeUdMKEdM
ZW51bSB0eXBlLCBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBTdGF0ZU1hbmFnZXJHTCAq
c3RhdGVNYW5hZ2VyKTsKKyAgICB+U3RhbmRhcmRRdWVyeUdMKCkgb3ZlcnJpZGU7CisKICAgICBn
bDo6RXJyb3IgYmVnaW4oKSBvdmVycmlkZTsKICAgICBnbDo6RXJyb3IgZW5kKCkgb3ZlcnJpZGU7
CiAgICAgZ2w6OkVycm9yIHF1ZXJ5Q291bnRlcigpIG92ZXJyaWRlOwpAQCAtMzQsMTQgKzUwLDgg
QEAgY2xhc3MgUXVlcnlHTCA6IHB1YmxpYyBRdWVyeUltcGwKICAgICBnbDo6RXJyb3IgZ2V0UmVz
dWx0KEdMdWludDY0ICpwYXJhbXMpIG92ZXJyaWRlOwogICAgIGdsOjpFcnJvciBpc1Jlc3VsdEF2
YWlsYWJsZShib29sICphdmFpbGFibGUpIG92ZXJyaWRlOwogCi0gICAgLy8gT3BlbkdMIGlzIG9u
bHkgYWxsb3dlZCB0byBoYXZlIG9uZSBxdWVyeSBvZiBlYWNoIHR5cGUgYWN0aXZlIGF0IGFueSBn
aXZlbiB0aW1lLiBTaW5jZSBBTkdMRQotICAgIC8vIHZpcnR1YWxpemVzIGNvbnRleHRzLCBxdWVy
aWVzIG5lZWQgdG8gYmUgYWJsZSB0byBiZSBwYXVzZWQgYW5kIHJlc3VtZWQuCi0gICAgLy8gQSBx
dWVyeSBpcyAicGF1c2VkIiBieSBlbmRpbmcgaXQgYW5kIHB1c2hpbmcgdGhlIElEIGludG8gYSBs
aXN0IG9mIHF1ZXJpZXMgYXdhaXRpbmcgcmVhZGJhY2suCi0gICAgLy8gV2hlbiBpdCBpcyAicmVz
dW1lZCIsIGEgbmV3IHF1ZXJ5IGlzIGdlbmVyYXRlZCBhbmQgc3RhcnRlZC4KLSAgICAvLyBXaGVu
IGEgcmVzdWx0IGlzIHJlcXVpcmVkLCB0aGUgcXVlcmllcyBhcmUgImZsdXNoZWQiIGJ5IGl0ZXJh
dGluZyBvdmVyIHRoZSBsaXN0IG9mIHBlbmRpbmcKLSAgICAvLyBxdWVyaWVzIGFuZCBtZXJnaW5n
IHRoZWlyIHJlc3VsdHMuCi0gICAgZ2w6OkVycm9yIHBhdXNlKCk7Ci0gICAgZ2w6OkVycm9yIHJl
c3VtZSgpOworICAgIGdsOjpFcnJvciBwYXVzZSgpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBy
ZXN1bWUoKSBvdmVycmlkZTsKIAogICBwcml2YXRlOgogICAgIGdsOjpFcnJvciBmbHVzaChib29s
IGZvcmNlKTsKQEAgLTU5LDYgKzY5LDM5IEBAIGNsYXNzIFF1ZXJ5R0wgOiBwdWJsaWMgUXVlcnlJ
bXBsCiAgICAgR0x1aW50NjQgbVJlc3VsdFN1bTsKIH07CiAKK2NsYXNzIFN5bmNQcm92aWRlckdM
OworY2xhc3MgU3luY1F1ZXJ5R0wgOiBwdWJsaWMgUXVlcnlHTAoreworICBwdWJsaWM6CisgICAg
U3luY1F1ZXJ5R0woR0xlbnVtIHR5cGUsIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIFN0
YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIpOworICAgIH5TeW5jUXVlcnlHTCgpIG92ZXJyaWRl
OworCisgICAgc3RhdGljIGJvb2wgSXNTdXBwb3J0ZWQoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0
aW9ucyk7CisKKyAgICBnbDo6RXJyb3IgYmVnaW4oKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Ig
ZW5kKCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHF1ZXJ5Q291bnRlcigpIG92ZXJyaWRlOwor
ICAgIGdsOjpFcnJvciBnZXRSZXN1bHQoR0xpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgZ2w6
OkVycm9yIGdldFJlc3VsdChHTHVpbnQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9y
IGdldFJlc3VsdChHTGludDY0ICpwYXJhbXMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBnZXRS
ZXN1bHQoR0x1aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGlzUmVzdWx0
QXZhaWxhYmxlKGJvb2wgKmF2YWlsYWJsZSkgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3IgcGF1
c2UoKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgcmVzdW1lKCkgb3ZlcnJpZGU7CisKKyAgcHJp
dmF0ZToKKyAgICBnbDo6RXJyb3IgZmx1c2goYm9vbCBmb3JjZSk7CisKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KKyAgICBnbDo6RXJyb3IgZ2V0UmVzdWx0QmFzZShUICpwYXJhbXMpOworCisg
ICAgY29uc3QgRnVuY3Rpb25zR0wgKm1GdW5jdGlvbnM7CisgICAgU3RhdGVNYW5hZ2VyR0wgKm1T
dGF0ZU1hbmFnZXI7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8U3luY1Byb3ZpZGVyR0w+IG1TeW5j
UHJvdmlkZXI7CisgICAgYm9vbCBtRmluaXNoZWQ7Cit9OwogfQogCiAjZW5kaWYgLy8gTElCQU5H
TEVfUkVOREVSRVJfR0xfUVVFUllHTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmJ1ZmZlckdMLmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJidWZmZXJH
TC5jcHAKaW5kZXggYmZjMmJiMjU0ZmJmNTMxOGM2OGZkYWE0ZWE0MzU0MjIzYzU4ZDY2NS4uMWM0
ZDM1ZDZkODkwNWU2MjM3YTAzOGIxYjlmMzIyNjI0OTU2MjQ2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmJ1ZmZlckdM
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvUmVuZGVyYnVmZmVyR0wuY3BwCkBAIC00OCw3ICs0OCw3IEBAIGdsOjpFcnJvciBSZW5kZXJi
dWZmZXJHTDo6c2V0U3RvcmFnZShHTGVudW0gaW50ZXJuYWxmb3JtYXQsIHNpemVfdCB3aWR0aCwg
c2l6ZV90CiAgICAgbUZ1bmN0aW9ucy0+cmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZG
RVIsIHJlbmRlcmJ1ZmZlckZvcm1hdC5pbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHdpZHRoKSwgc3RhdGljX2Nh
c3Q8R0xzaXplaT4oaGVpZ2h0KSk7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFJlbmRlcmJ1ZmZl
ckdMOjpzZXRTdG9yYWdlTXVsdGlzYW1wbGUoc2l6ZV90IHNhbXBsZXMsIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KQpAQCAtNzksNyArNzksNyBAQCBn
bDo6RXJyb3IgUmVuZGVyYnVmZmVyR0w6OnNldFN0b3JhZ2VNdWx0aXNhbXBsZShzaXplX3Qgc2Ft
cGxlcywgR0xlbnVtIGludGVybmFsZgogICAgICAgICB9IHdoaWxlIChlcnJvciAhPSBHTF9OT19F
UlJPUik7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBSZW5kZXJidWZmZXJHTDo6c2V0
U3RvcmFnZUVHTEltYWdlVGFyZ2V0KGVnbDo6SW1hZ2UgKmltYWdlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmVyR0wu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1Jl
bmRlcmVyR0wuY3BwCmluZGV4IGRhMWE2NTY4N2MxZTZmMmIwZWNmZjNjMGNkYTc1NTc4ZTA4M2Zj
NTkuLjg3NDU3ZjRjZGRkNmY4NTA0NmNmMjIwY2E2MTAwZWQxMTMxYjNiYjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJl
ckdMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvUmVuZGVyZXJHTC5jcHAKQEAgLTkzLDggKzkzLDI1IEBAIHN0YXRpYyB2b2lkIElOVEVS
TkFMX0dMX0FQSUVOVFJZIExvZ0dMRGVidWdNZXNzYWdlKEdMZW51bSBzb3VyY2UsIEdMZW51bSB0
eXBlLCBHCiAgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V2ZXJp
dHlUZXh0ID0gIlVOS05PV04iOyAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIEVSUigiXG5cdFNv
dXJjZTogJXNcblx0VHlwZTogJXNcblx0SUQ6ICVkXG5cdFNldmVyaXR5OiAlc1xuXHRNZXNzYWdl
OiAlcyIsIHNvdXJjZVRleHQuY19zdHIoKSwgdHlwZVRleHQuY19zdHIoKSwgaWQsCi0gICAgICAg
IHNldmVyaXR5VGV4dC5jX3N0cigpLCBtZXNzYWdlKTsKKyAgICBpZiAodHlwZSA9PSBHTF9ERUJV
R19UWVBFX0VSUk9SKQorICAgIHsKKyAgICAgICAgRVJSKCkgPDwgc3RkOjplbmRsCisgICAgICAg
ICAgICAgIDw8ICJcdFNvdXJjZTogIiA8PCBzb3VyY2VUZXh0IDw8IHN0ZDo6ZW5kbAorICAgICAg
ICAgICAgICA8PCAiXHRUeXBlOiAiIDw8IHR5cGVUZXh0IDw8IHN0ZDo6ZW5kbAorICAgICAgICAg
ICAgICA8PCAiXHRJRDogIiA8PCBnbDo6RXJyb3IoaWQpIDw8IHN0ZDo6ZW5kbAorICAgICAgICAg
ICAgICA8PCAiXHRTZXZlcml0eTogIiA8PCBzZXZlcml0eVRleHQgPDwgc3RkOjplbmRsCisgICAg
ICAgICAgICAgIDw8ICJcdE1lc3NhZ2U6ICIgPDwgbWVzc2FnZTsKKyAgICB9CisgICAgZWxzZQor
ICAgIHsKKyAgICAgICAgLy8gVE9ETyh5bm92aWtvdik6IGZpbHRlciBpbnRvIFdBUk4gYW5kIElO
Rk8gaWYgSU5GTyBpcyBldmVyIGltcGxlbWVudGVkCisgICAgICAgIFdBUk4oKSA8PCBzdGQ6OmVu
ZGwKKyAgICAgICAgICAgICAgIDw8ICJcdFNvdXJjZTogIiA8PCBzb3VyY2VUZXh0IDw8IHN0ZDo6
ZW5kbAorICAgICAgICAgICAgICAgPDwgIlx0VHlwZTogIiA8PCB0eXBlVGV4dCA8PCBzdGQ6OmVu
ZGwKKyAgICAgICAgICAgICAgIDw8ICJcdElEOiAiIDw8IGdsOjpFcnJvcihpZCkgPDwgc3RkOjpl
bmRsCisgICAgICAgICAgICAgICA8PCAiXHRTZXZlcml0eTogIiA8PCBzZXZlcml0eVRleHQgPDwg
c3RkOjplbmRsCisgICAgICAgICAgICAgICA8PCAiXHRNZXNzYWdlOiAiIDw8IG1lc3NhZ2U7Cisg
ICAgfQogfQogI2VuZGlmCiAKQEAgLTExMSw4ICsxMjgsOCBAQCBSZW5kZXJlckdMOjpSZW5kZXJl
ckdMKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFw
ICZhdAogICAgICAgbUNhcHNJbml0aWFsaXplZChmYWxzZSkKIHsKICAgICBBU1NFUlQobUZ1bmN0
aW9ucyk7Ci0gICAgbVN0YXRlTWFuYWdlciA9IG5ldyBTdGF0ZU1hbmFnZXJHTChtRnVuY3Rpb25z
LCBnZXROYXRpdmVDYXBzKCkpOwogICAgIG5hdGl2ZWdsX2dsOjpHZW5lcmF0ZVdvcmthcm91bmRz
KG1GdW5jdGlvbnMsICZtV29ya2Fyb3VuZHMpOworICAgIG1TdGF0ZU1hbmFnZXIgPSBuZXcgU3Rh
dGVNYW5hZ2VyR0wobUZ1bmN0aW9ucywgZ2V0TmF0aXZlQ2FwcygpKTsKICAgICBtQmxpdHRlciA9
IG5ldyBCbGl0R0woZnVuY3Rpb25zLCBtV29ya2Fyb3VuZHMsIG1TdGF0ZU1hbmFnZXIpOwogCiAg
ICAgbUhhc0RlYnVnT3V0cHV0ID0gbUZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24o
NCwgMykpIHx8CkBAIC0xNjAsNyArMTc3LDcgQEAgUmVuZGVyZXJHTDo6flJlbmRlcmVyR0woKQog
Z2w6OkVycm9yIFJlbmRlcmVyR0w6OmZsdXNoKCkKIHsKICAgICBtRnVuY3Rpb25zLT5mbHVzaCgp
OwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXJHTDo6ZmluaXNoKCkKQEAgLTE4MSw3ICsx
OTgsNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXJHTDo6ZmluaXNoKCkKICAgICB9CiAjZW5kaWYKIAot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXJHTDo6ZHJhd0FycmF5cyhjb25zdCBnbDo6Q29u
dGV4dFN0YXRlICZkYXRhLApAQCAtMjcxLDcgKzI4OCwzNCBAQCBnbDo6RXJyb3IgUmVuZGVyZXJH
TDo6ZHJhd1JhbmdlRWxlbWVudHMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAg
ICAgbUZ1bmN0aW9ucy0+ZHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQs
IHR5cGUsIGRyYXdJbmRleFBvaW50ZXIpOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCitnbDo6RXJyb3Ig
UmVuZGVyZXJHTDo6ZHJhd0FycmF5c0luZGlyZWN0KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRh
dGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQg
KmluZGlyZWN0KQoreworICAgIEFOR0xFX1RSWShtU3RhdGVNYW5hZ2VyLT5zZXREcmF3SW5kaXJl
Y3RTdGF0ZShkYXRhLCBHTF9OT05FKSk7CisKKyAgICBpZiAoIW1Ta2lwRHJhd0NhbGxzKQorICAg
IHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+ZHJhd0FycmF5c0luZGlyZWN0KG1vZGUsIGluZGlyZWN0
KTsKKyAgICB9CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK2dsOjpFcnJvciBSZW5k
ZXJlckdMOjpkcmF3RWxlbWVudHNJbmRpcmVjdChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9p
ZCAqaW5kaXJlY3QpCit7CisgICAgQU5HTEVfVFJZKG1TdGF0ZU1hbmFnZXItPnNldERyYXdJbmRp
cmVjdFN0YXRlKGRhdGEsIHR5cGUpKTsKKworICAgIGlmICghbVNraXBEcmF3Q2FsbHMpCisgICAg
eworICAgICAgICBtRnVuY3Rpb25zLT5kcmF3RWxlbWVudHNJbmRpcmVjdChtb2RlLCB0eXBlLCBp
bmRpcmVjdCk7CisgICAgfQorICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2b2lkIFJl
bmRlcmVyR0w6OnN0ZW5jaWxGaWxsUGF0aChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSwK
QEAgLTUwOSw3ICs1NTMsOCBAQCB2b2lkIFJlbmRlcmVyR0w6OmdlbmVyYXRlQ2FwcyhnbDo6Q2Fw
cyAqb3V0Q2FwcywgZ2w6OlRleHR1cmVDYXBzTWFwKiBvdXRUZXh0dXJlQwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2w6OkV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbDo6TGltaXRhdGlvbnMgKiAvKiBvdXRMaW1pdGF0aW9u
cyAqLykgY29uc3QKIHsKLSAgICBuYXRpdmVnbF9nbDo6R2VuZXJhdGVDYXBzKG1GdW5jdGlvbnMs
IG91dENhcHMsIG91dFRleHR1cmVDYXBzLCBvdXRFeHRlbnNpb25zLCAmbU1heFN1cHBvcnRlZEVT
VmVyc2lvbik7CisgICAgbmF0aXZlZ2xfZ2w6OkdlbmVyYXRlQ2FwcyhtRnVuY3Rpb25zLCBtV29y
a2Fyb3VuZHMsIG91dENhcHMsIG91dFRleHR1cmVDYXBzLCBvdXRFeHRlbnNpb25zLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJm1NYXhTdXBwb3J0ZWRFU1ZlcnNpb24pOwogfQogCiBH
TGludCBSZW5kZXJlckdMOjpnZXRHUFVEaXNqb2ludCgpCkBAIC01NTgsNCArNjAzLDE0IEBAIGNv
bnN0IGdsOjpMaW1pdGF0aW9ucyAmUmVuZGVyZXJHTDo6Z2V0TmF0aXZlTGltaXRhdGlvbnMoKSBj
b25zdAogICAgIHJldHVybiBtTmF0aXZlTGltaXRhdGlvbnM7CiB9CiAKK2dsOjpFcnJvciBSZW5k
ZXJlckdMOjpkaXNwYXRjaENvbXB1dGUoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bUdyb3Vwc1gsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1Hcm91cHNZLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtR3JvdXBzWikK
K3sKKyAgICBBTkdMRV9UUlkobVN0YXRlTWFuYWdlci0+c2V0RGlzcGF0Y2hDb21wdXRlU3RhdGUo
ZGF0YSkpOworICAgIG1GdW5jdGlvbnMtPmRpc3BhdGNoQ29tcHV0ZShudW1Hcm91cHNYLCBudW1H
cm91cHNZLCBudW1Hcm91cHNaKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKwogfSAg
Ly8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmVyR0wuaAppbmRleCA3MWYwMTIwNTVj
MTFhMGRkN2M1M2I1YjIwOGVjNWEyMjk3OGJlN2EwLi5hNjM2YzE0YjZhOWU4ZThkNzY0ODE3ODNi
NzI4ZGMwM2FkMzc3MjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgKQEAgLTc3LDYgKzc3
LDExIEBAIGNsYXNzIFJlbmRlcmVyR0wgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpOworICAgIGdsOjpFcnJv
ciBkcmF3QXJyYXlzSW5kaXJlY3QoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgR0xlbnVt
IG1vZGUsIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpOworICAgIGdsOjpFcnJvciBkcmF3RWxlbWVu
dHNJbmRpcmVjdChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpOwogCiAgICAgLy8gQ0hST01JVU1fcGF0aF9yZW5k
ZXJpbmcgaW1wbGVtZW50YXRpb24KICAgICB2b2lkIHN0ZW5jaWxGaWxsUGF0aChjb25zdCBnbDo6
Q29udGV4dFN0YXRlICZzdGF0ZSwKQEAgLTE2MSw2ICsxNjYsMTEgQEAgY2xhc3MgUmVuZGVyZXJH
TCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIGNvbnN0IGdsOjpFeHRlbnNpb25zICZnZXROYXRp
dmVFeHRlbnNpb25zKCkgY29uc3Q7CiAgICAgY29uc3QgZ2w6OkxpbWl0YXRpb25zICZnZXROYXRp
dmVMaW1pdGF0aW9ucygpIGNvbnN0OwogCisgICAgZ2w6OkVycm9yIGRpc3BhdGNoQ29tcHV0ZShj
b25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG51bUdyb3Vwc1gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgbnVtR3JvdXBzWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1H
cm91cHNaKTsKKwogICBwcml2YXRlOgogICAgIHZvaWQgZW5zdXJlQ2Fwc0luaXRpYWxpemVkKCkg
Y29uc3Q7CiAgICAgdm9pZCBnZW5lcmF0ZUNhcHMoZ2w6OkNhcHMgKm91dENhcHMsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU2Ft
cGxlckdMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9TYW1wbGVyR0wuY3BwCmluZGV4IGJmZmM4OWVjOTgxMTJmM2U5ZTQ3ZTUwYWFiNDZmOTNj
YWY0NGM5OGQuLjJhNmQ4MTU4MzViYTQwMzg2M2ExNmU3MDkwMmY0Y2NkNTE0NzI5ZGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9T
YW1wbGVyR0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9TYW1wbGVyR0wuY3BwCkBAIC02Miw2ICs2Miw3IEBAIHZvaWQgU2FtcGxlckdM
OjpzeW5jU3RhdGUoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKSBjb25zdAog
ICAgIFN5bmNTYW1wbGVyU3RhdGVNZW1iZXIobUZ1bmN0aW9ucywgbVNhbXBsZXJJRCwgc2FtcGxl
clN0YXRlLCBtQXBwbGllZFNhbXBsZXJTdGF0ZSwgR0xfVEVYVFVSRV9NQVhfTE9ELCAmZ2w6OlNh
bXBsZXJTdGF0ZTo6bWF4TG9kKTsKICAgICBTeW5jU2FtcGxlclN0YXRlTWVtYmVyKG1GdW5jdGlv
bnMsIG1TYW1wbGVySUQsIHNhbXBsZXJTdGF0ZSwgbUFwcGxpZWRTYW1wbGVyU3RhdGUsIEdMX1RF
WFRVUkVfQ09NUEFSRV9NT0RFLCAmZ2w6OlNhbXBsZXJTdGF0ZTo6Y29tcGFyZU1vZGUpOwogICAg
IFN5bmNTYW1wbGVyU3RhdGVNZW1iZXIobUZ1bmN0aW9ucywgbVNhbXBsZXJJRCwgc2FtcGxlclN0
YXRlLCBtQXBwbGllZFNhbXBsZXJTdGF0ZSwgR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMsICZnbDo6
U2FtcGxlclN0YXRlOjpjb21wYXJlRnVuYyk7CisgICAgU3luY1NhbXBsZXJTdGF0ZU1lbWJlciht
RnVuY3Rpb25zLCBtU2FtcGxlcklELCBzYW1wbGVyU3RhdGUsIG1BcHBsaWVkU2FtcGxlclN0YXRl
LCBHTF9URVhUVVJFX1NSR0JfREVDT0RFX0VYVCwgJmdsOjpTYW1wbGVyU3RhdGU6OnNSR0JEZWNv
ZGUpOwogICAgIC8vIGNsYW5nLWZvcm1hdCBvbgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU2hhZGVyR0wuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1NoYWRlckdMLmNw
cAppbmRleCAxNTc0NTA3ZDFhNTU2ZmRiODg5YTg0NjgyZTFiYjQwY2JmZmRjYzgzLi44ZmM3ZDQ2
NDc0MmQyNmNiMzhiODgzMmU2ZTQ4ZmYzN2RjNjA5MzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU2hhZGVyR0wuY3BwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TaGFkZXJH
TC5jcHAKQEAgLTcwLDExICs3MCwzMSBAQCBTaENvbXBpbGVPcHRpb25zIFNoYWRlckdMOjpwcmVw
YXJlU291cmNlQW5kUmV0dXJuT3B0aW9ucyhzdGQ6OnN0cmluZ3N0cmVhbSAqc291cgogICAgICAg
ICBvcHRpb25zIHw9IFNIX0VNVUxBVEVfSVNOQU5fRkxPQVRfRlVOQ1RJT047CiAgICAgfQogCisg
ICAgaWYgKG1Xb3JrYXJvdW5kcy5lbXVsYXRlQXRhbjJGbG9hdCkKKyAgICB7CisgICAgICAgIG9w
dGlvbnMgfD0gU0hfRU1VTEFURV9BVEFOMl9GTE9BVF9GVU5DVElPTjsKKyAgICB9CisKICAgICBp
ZiAobVdvcmthcm91bmRzLnVzZVVudXNlZEJsb2Nrc1dpdGhTdGFuZGFyZE9yU2hhcmVkTGF5b3V0
KQogICAgIHsKICAgICAgICAgb3B0aW9ucyB8PSBTSF9VU0VfVU5VU0VEX1NUQU5EQVJEX1NIQVJF
RF9CTE9DS1M7CiAgICAgfQogCisgICAgaWYgKG1Xb3JrYXJvdW5kcy5kb250UmVtb3ZlSW52YXJp
YW50Rm9yRnJhZ21lbnRJbnB1dCkKKyAgICB7CisgICAgICAgIG9wdGlvbnMgfD0gU0hfRE9OVF9S
RU1PVkVfSU5WQVJJQU5UX0ZPUl9GUkFHTUVOVF9JTlBVVDsKKyAgICB9CisKKyAgICBpZiAobVdv
cmthcm91bmRzLnJlbW92ZUludmFyaWFudEFuZENlbnRyb2lkRm9yRVNTTDMpCisgICAgeworICAg
ICAgICBvcHRpb25zIHw9IFNIX1JFTU9WRV9JTlZBUklBTlRfQU5EX0NFTlRST0lEX0ZPUl9FU1NM
MzsKKyAgICB9CisKKyAgICBpZiAobVdvcmthcm91bmRzLnJld3JpdGVGbG9hdFVuYXJ5TWludXNP
cGVyYXRvcikKKyAgICB7CisgICAgICAgIG9wdGlvbnMgfD0gU0hfUkVXUklURV9GTE9BVF9VTkFS
WV9NSU5VU19PUEVSQVRPUjsKKyAgICB9CisKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIApAQCAt
MTA4LDExICsxMjgsMTEgQEAgYm9vbCBTaGFkZXJHTDo6cG9zdFRyYW5zbGF0ZUNvbXBpbGUoZ2w6
OkNvbXBpbGVyICpjb21waWxlciwgc3RkOjpzdHJpbmcgKmluZm9Mb2cKICAgICAgICAgICAgIG1T
aGFkZXJJRCA9IDA7CiAKICAgICAgICAgICAgICppbmZvTG9nID0gJmJ1ZlswXTsKLSAgICAgICAg
ICAgIFRSQUNFKCJcbiVzIiwgaW5mb0xvZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBXQVJOKCkg
PDwgc3RkOjplbmRsIDw8ICppbmZvTG9nOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAg
ICAgewotICAgICAgICAgICAgVFJBQ0UoIlxuU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCB3aXRo
IG5vIGluZm8gbG9nLiIpOworICAgICAgICAgICAgV0FSTigpIDw8IHN0ZDo6ZW5kbCA8PCAiU2hh
ZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCB3aXRoIG5vIGluZm8gbG9nLiI7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTEyMiw3ICsxNDIsNyBAQCBib29sIFNoYWRl
ckdMOjpwb3N0VHJhbnNsYXRlQ29tcGlsZShnbDo6Q29tcGlsZXIgKmNvbXBpbGVyLCBzdGQ6OnN0
cmluZyAqaW5mb0xvZwogCiBzdGQ6OnN0cmluZyBTaGFkZXJHTDo6Z2V0RGVidWdJbmZvKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKKyAgICByZXR1cm4gbURhdGEuZ2V0VHJh
bnNsYXRlZFNvdXJjZSgpOwogfQogCiBHTHVpbnQgU2hhZGVyR0w6OmdldFNoYWRlcklEKCkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuY3BwCmluZGV4IGMxMTJiY2ZhYTI4
ZjlkODkyMTI4OGIwOTBkN2JhZDhjZGU2NmJmMjQuLjFjNmZlOTdhNzNmZGRlZTc5MTY5NDkyNDNm
OWFkN2ZmZTRhMWYwMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5jcHAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmNwcApA
QCAtMTEsNyArMTEsNyBAQAogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDxzdHJpbmcuaD4K
IAotI2luY2x1ZGUgImNvbW1vbi9CaXRTZXRJdGVyYXRvci5oIgorI2luY2x1ZGUgImNvbW1vbi9i
aXRzZXRfdXRpbHMuaCIKICNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKICNpbmNsdWRlICJj
b21tb24vbWF0cml4X3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dFN0YXRlLmgi
CkBAIC0xMzUsNiArMTM1LDcgQEAgU3RhdGVNYW5hZ2VyR0w6OlN0YXRlTWFuYWdlckdMKGNvbnN0
IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIGNvbnN0IGdsOjpDYXBzICZyZW4KICAgICBtVGV4dHVy
ZXNbR0xfVEVYVFVSRV9DVUJFX01BUF0ucmVzaXplKHJlbmRlcmVyQ2Fwcy5tYXhDb21iaW5lZFRl
eHR1cmVJbWFnZVVuaXRzKTsKICAgICBtVGV4dHVyZXNbR0xfVEVYVFVSRV8yRF9BUlJBWV0ucmVz
aXplKHJlbmRlcmVyQ2Fwcy5tYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKICAgICBtVGV4
dHVyZXNbR0xfVEVYVFVSRV8zRF0ucmVzaXplKHJlbmRlcmVyQ2Fwcy5tYXhDb21iaW5lZFRleHR1
cmVJbWFnZVVuaXRzKTsKKyAgICBtVGV4dHVyZXNbR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV0u
cmVzaXplKHJlbmRlcmVyQ2Fwcy5tYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKIAogICAg
IG1JbmRleGVkQnVmZmVyc1tHTF9VTklGT1JNX0JVRkZFUl0ucmVzaXplKHJlbmRlcmVyQ2Fwcy5t
YXhDb21iaW5lZFVuaWZvcm1CbG9ja3MpOwogCkBAIC02NjEsMTcgKzY2Miw3NyBAQCBnbDo6RXJy
b3IgU3RhdGVNYW5hZ2VyR0w6OnNldERyYXdFbGVtZW50c1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0
U3RhdGUgJmRhdGEsCiAgICAgcmV0dXJuIHNldEdlbmVyaWNEcmF3U3RhdGUoZGF0YSk7CiB9CiAK
LWdsOjpFcnJvciBTdGF0ZU1hbmFnZXJHTDo6cGF1c2VUcmFuc2Zvcm1GZWVkYmFjayhjb25zdCBn
bDo6Q29udGV4dFN0YXRlICZkYXRhKQorZ2w6OkVycm9yIFN0YXRlTWFuYWdlckdMOjpzZXREcmF3
SW5kaXJlY3RTdGF0ZShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBHTGVudW0gdHlwZSkK
IHsKLSAgICAvLyBJZiB0aGUgY29udGV4dCBpcyBnb2luZyB0byBiZSBjaGFuZ2VkLCBwYXVzZSB0
aGUgcHJldmlvdXMgY29udGV4dCdzIHRyYW5zZm9ybSBmZWVkYmFjawotICAgIGlmIChkYXRhLmdl
dENvbnRleHQoKSAhPSBtUHJldkRyYXdDb250ZXh0KQorICAgIGNvbnN0IGdsOjpTdGF0ZSAmc3Rh
dGUgPSBkYXRhLmdldFN0YXRlKCk7CisKKyAgICBjb25zdCBnbDo6VmVydGV4QXJyYXkgKnZhbyA9
IHN0YXRlLmdldFZlcnRleEFycmF5KCk7CisgICAgY29uc3QgVmVydGV4QXJyYXlHTCAqdmFvR0wg
PSBHZXRJbXBsQXM8VmVydGV4QXJyYXlHTD4odmFvKTsKKworICAgIGlmICh0eXBlICE9IEdMX05P
TkUpCisgICAgeworICAgICAgICBBTkdMRV9UUlkodmFvR0wtPnN5bmNFbGVtZW50QXJyYXlTdGF0
ZSgpKTsKKyAgICB9CisgICAgYmluZFZlcnRleEFycmF5KHZhb0dMLT5nZXRWZXJ0ZXhBcnJheUlE
KCksIHZhb0dMLT5nZXRBcHBsaWVkRWxlbWVudEFycmF5QnVmZmVySUQoKSk7CisKKyAgICBnbDo6
QnVmZmVyICpkcmF3SW5kaXJlY3RCdWZmZXIgPSBzdGF0ZS5nZXREcmF3SW5kaXJlY3RCdWZmZXIo
KTsKKyAgICBBU1NFUlQoZHJhd0luZGlyZWN0QnVmZmVyKTsKKyAgICBjb25zdCBCdWZmZXJHTCAq
YnVmZmVyR0wgPSBHZXRJbXBsQXM8QnVmZmVyR0w+KGRyYXdJbmRpcmVjdEJ1ZmZlcik7CisgICAg
YmluZEJ1ZmZlcihHTF9EUkFXX0lORElSRUNUX0JVRkZFUiwgYnVmZmVyR0wtPmdldEJ1ZmZlcklE
KCkpOworCisgICAgcmV0dXJuIHNldEdlbmVyaWNEcmF3U3RhdGUoZGF0YSk7Cit9CisKK2dsOjpF
cnJvciBTdGF0ZU1hbmFnZXJHTDo6c2V0RGlzcGF0Y2hDb21wdXRlU3RhdGUoY29uc3QgZ2w6OkNv
bnRleHRTdGF0ZSAmZGF0YSkKK3sKKyAgICBzZXRHZW5lcmljU2hhZGVyU3RhdGUoZGF0YSk7Cisg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyR0w6OnBhdXNl
VHJhbnNmb3JtRmVlZGJhY2soKQoreworICAgIGlmIChtUHJldkRyYXdUcmFuc2Zvcm1GZWVkYmFj
ayAhPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgbVByZXZEcmF3VHJhbnNmb3JtRmVlZGJhY2st
PnN5bmNQYXVzZWRTdGF0ZSh0cnVlKTsKKyAgICB9Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyR0w6
OnBhdXNlQWxsUXVlcmllcygpCit7CisgICAgZm9yIChRdWVyeUdMICpwcmV2UXVlcnkgOiBtQ3Vy
cmVudFF1ZXJpZXMpCisgICAgeworICAgICAgICBwcmV2UXVlcnktPnBhdXNlKCk7CisgICAgfQor
fQorCit2b2lkIFN0YXRlTWFuYWdlckdMOjpwYXVzZVF1ZXJ5KEdMZW51bSB0eXBlKQoreworICAg
IGZvciAoUXVlcnlHTCAqcHJldlF1ZXJ5IDogbUN1cnJlbnRRdWVyaWVzKQogICAgIHsKLSAgICAg
ICAgaWYgKG1QcmV2RHJhd1RyYW5zZm9ybUZlZWRiYWNrICE9IG51bGxwdHIpCisgICAgICAgIGlm
IChwcmV2UXVlcnktPmdldFR5cGUoKSA9PSB0eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBt
UHJldkRyYXdUcmFuc2Zvcm1GZWVkYmFjay0+c3luY1BhdXNlZFN0YXRlKHRydWUpOworICAgICAg
ICAgICAgcHJldlF1ZXJ5LT5wYXVzZSgpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFN0
YXRlTWFuYWdlckdMOjpyZXN1bWVBbGxRdWVyaWVzKCkKK3sKKyAgICBmb3IgKFF1ZXJ5R0wgKnBy
ZXZRdWVyeSA6IG1DdXJyZW50UXVlcmllcykKKyAgICB7CisgICAgICAgIHByZXZRdWVyeS0+cmVz
dW1lKCk7CisgICAgfQorfQorCit2b2lkIFN0YXRlTWFuYWdlckdMOjpyZXN1bWVRdWVyeShHTGVu
dW0gdHlwZSkKK3sKKyAgICBmb3IgKFF1ZXJ5R0wgKnByZXZRdWVyeSA6IG1DdXJyZW50UXVlcmll
cykKKyAgICB7CisgICAgICAgIGlmIChwcmV2UXVlcnktPmdldFR5cGUoKSA9PSB0eXBlKQorICAg
ICAgICB7CisgICAgICAgICAgICBwcmV2UXVlcnktPnJlc3VtZSgpOwogICAgICAgICB9CiAgICAg
fQotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwogfQogCiBnbDo6RXJyb3IgU3Rh
dGVNYW5hZ2VyR0w6Om9uTWFrZUN1cnJlbnQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSkK
QEAgLTY3OSwxNiArNzQwLDEzIEBAIGdsOjpFcnJvciBTdGF0ZU1hbmFnZXJHTDo6b25NYWtlQ3Vy
cmVudChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKQogICAgIGNvbnN0IGdsOjpTdGF0ZSAm
c3RhdGUgPSBkYXRhLmdldFN0YXRlKCk7CiAKICAgICAvLyBJZiB0aGUgY29udGV4dCBoYXMgY2hh
bmdlZCwgcGF1c2UgdGhlIHByZXZpb3VzIGNvbnRleHQncyBxdWVyaWVzCi0gICAgaWYgKGRhdGEu
Z2V0Q29udGV4dCgpICE9IG1QcmV2RHJhd0NvbnRleHQpCisgICAgaWYgKGRhdGEuZ2V0Q29udGV4
dElEKCkgIT0gbVByZXZEcmF3Q29udGV4dCkKICAgICB7Ci0gICAgICAgIGZvciAoUXVlcnlHTCAq
cHJldlF1ZXJ5IDogbUN1cnJlbnRRdWVyaWVzKQotICAgICAgICB7Ci0gICAgICAgICAgICBwcmV2
UXVlcnktPnBhdXNlKCk7Ci0gICAgICAgIH0KKyAgICAgICAgcGF1c2VBbGxRdWVyaWVzKCk7CiAg
ICAgfQogICAgIG1DdXJyZW50UXVlcmllcy5jbGVhcigpOwogICAgIG1QcmV2RHJhd1RyYW5zZm9y
bUZlZWRiYWNrID0gbnVsbHB0cjsKLSAgICBtUHJldkRyYXdDb250ZXh0ICAgICAgICAgICA9IGRh
dGEuZ2V0Q29udGV4dCgpOworICAgIG1QcmV2RHJhd0NvbnRleHQgICAgICAgICAgID0gZGF0YS5n
ZXRDb250ZXh0SUQoKTsKIAogICAgIC8vIFNldCB0aGUgY3VycmVudCBxdWVyeSBzdGF0ZQogICAg
IGZvciAoR0xlbnVtIHF1ZXJ5VHlwZSA6IFF1ZXJ5VHlwZXMpCkBAIC03MDMsMTAgKzc2MSwxNCBA
QCBnbDo6RXJyb3IgU3RhdGVNYW5hZ2VyR0w6Om9uTWFrZUN1cnJlbnQoY29uc3QgZ2w6OkNvbnRl
eHRTdGF0ZSAmZGF0YSkKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOworICAgIC8vIFNlYW1sZXNzIGN1YmVtYXBzIGFyZSByZXF1aXJlZCBmb3Ig
RVMzIGFuZCBoaWdoZXIgY29udGV4dHMuIEl0IHNob3VsZCBiZSB0aGUgY2hlYXBlc3QgdG8gc2V0
CisgICAgLy8gdGhpcyBzdGF0ZSBoZXJlIHNpbmNlIE1ha2VDdXJyZW50IGlzIGV4cGVjdGVkIHRv
IGJlIGNhbGxlZCBsZXNzIGZyZXF1ZW50bHkgdGhhbiBkcmF3IGNhbGxzLgorICAgIHNldFRleHR1
cmVDdWJlbWFwU2VhbWxlc3NFbmFibGVkKGRhdGEuZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0g
Myk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFN0YXRlTWFu
YWdlckdMOjpzZXRHZW5lcmljRHJhd1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEp
Cit2b2lkIFN0YXRlTWFuYWdlckdMOjpzZXRHZW5lcmljU2hhZGVyU3RhdGUoY29uc3QgZ2w6OkNv
bnRleHRTdGF0ZSAmZGF0YSkKIHsKICAgICBjb25zdCBnbDo6U3RhdGUgJnN0YXRlID0gZGF0YS5n
ZXRTdGF0ZSgpOwogCkBAIC03MzcsOCArNzk5LDcgQEAgZ2w6OkVycm9yIFN0YXRlTWFuYWdlckdM
OjpzZXRHZW5lcmljRHJhd1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxTYW1wbGVyQmluZGluZ0dMPiAm
YXBwbGllZFNhbXBsZXJVbmlmb3JtcyA9IHByb2dyYW1HTC0+Z2V0QXBwbGllZFNhbXBsZXJVbmlm
b3JtcygpOwotICAgIGZvciAoY29uc3QgU2FtcGxlckJpbmRpbmdHTCAmc2FtcGxlclVuaWZvcm0g
OiBhcHBsaWVkU2FtcGxlclVuaWZvcm1zKQorICAgIGZvciAoY29uc3QgZ2w6OlNhbXBsZXJCaW5k
aW5nICZzYW1wbGVyVW5pZm9ybSA6IHByb2dyYW0tPmdldFNhbXBsZXJCaW5kaW5ncygpKQogICAg
IHsKICAgICAgICAgR0xlbnVtIHRleHR1cmVUeXBlID0gc2FtcGxlclVuaWZvcm0udGV4dHVyZVR5
cGU7CiAgICAgICAgIGZvciAoR0x1aW50IHRleHR1cmVVbml0SW5kZXggOiBzYW1wbGVyVW5pZm9y
bS5ib3VuZFRleHR1cmVVbml0cykKQEAgLTc4MSwxNCArODQyLDE3IEBAIGdsOjpFcnJvciBTdGF0
ZU1hbmFnZXJHTDo6c2V0R2VuZXJpY0RyYXdTdGF0ZShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZk
YXRhKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorfQorCitnbDo6RXJyb3IgU3Rh
dGVNYW5hZ2VyR0w6OnNldEdlbmVyaWNEcmF3U3RhdGUoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAm
ZGF0YSkKK3sKKyAgICBzZXRHZW5lcmljU2hhZGVyU3RhdGUoZGF0YSk7CisKKyAgICBjb25zdCBn
bDo6U3RhdGUgJnN0YXRlID0gZGF0YS5nZXRTdGF0ZSgpOwogCiAgICAgY29uc3QgZ2w6OkZyYW1l
YnVmZmVyICpmcmFtZWJ1ZmZlciA9IHN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpOwogICAgIGNv
bnN0IEZyYW1lYnVmZmVyR0wgKmZyYW1lYnVmZmVyR0wgPSBHZXRJbXBsQXM8RnJhbWVidWZmZXJH
TD4oZnJhbWVidWZmZXIpOwogICAgIGJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVS
LCBmcmFtZWJ1ZmZlckdMLT5nZXRGcmFtZWJ1ZmZlcklEKCkpOwotICAgIGZyYW1lYnVmZmVyR0wt
PnN5bmNEcmF3U3RhdGUoKTsKLQotICAgIC8vIFNlYW1sZXNzIGN1YmVtYXBzIGFyZSByZXF1aXJl
ZCBmb3IgRVMzIGFuZCBoaWdoZXIgY29udGV4dHMuCi0gICAgc2V0VGV4dHVyZUN1YmVtYXBTZWFt
bGVzc0VuYWJsZWQoZGF0YS5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzKTsKIAogICAgIC8v
IFNldCB0aGUgY3VycmVudCB0cmFuc2Zvcm0gZmVlZGJhY2sgc3RhdGUKICAgICBnbDo6VHJhbnNm
b3JtRmVlZGJhY2sgKnRyYW5zZm9ybUZlZWRiYWNrID0gc3RhdGUuZ2V0Q3VycmVudFRyYW5zZm9y
bUZlZWRiYWNrKCk7CkBAIC04MDgsNyArODcyLDcgQEAgZ2w6OkVycm9yIFN0YXRlTWFuYWdlckdM
OjpzZXRHZW5lcmljRHJhd1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpCiAgICAg
ICAgIG1QcmV2RHJhd1RyYW5zZm9ybUZlZWRiYWNrID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAogdm9pZCBTdGF0ZU1hbmFnZXJHTDo6c2V0QXR0cmlidXRlQ3VycmVudERhdGEoc2l6ZV90
IGluZGV4LApAQCAtMTMxOCw4ICsxMzgyLDE4IEBAIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnNldENs
ZWFyU3RlbmNpbChHTGludCBjbGVhclN0ZW5jaWwpCiAgICAgfQogfQogCi12b2lkIFN0YXRlTWFu
YWdlckdMOjpzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlN0YXRl
OjpEaXJ0eUJpdHMgJmdsRGlydHlCaXRzKQordm9pZCBTdGF0ZU1hbmFnZXJHTDo6c3luY1N0YXRl
KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmdsRGlydHlCaXRzKQogeworICAgIGNv
bnN0IGdsOjpTdGF0ZSAmc3RhdGUgPSBkYXRhLmdldFN0YXRlKCk7CisKKyAgICAvLyBUaGUgdGhl
IGN1cnJlbnQgZnJhbWVidWZmZXIgYmluZGluZyBzb21ldGltZXMgcmVxdWlyZXMgcmVzZXR0aW5n
IHRoZSBzcmdiIGJsZW5kaW5nCisgICAgaWYgKGdsRGlydHlCaXRzW2dsOjpTdGF0ZTo6RElSVFlf
QklUX0RSQVdfRlJBTUVCVUZGRVJfQklORElOR10gJiYKKyAgICAgICAgbUZ1bmN0aW9ucy0+c3Rh
bmRhcmQgPT0gU1RBTkRBUkRfR0xfREVTS1RPUCkKKyAgICB7CisgICAgICAgIG1Mb2NhbERpcnR5
Qml0cy5zZXQoZ2w6OlN0YXRlOjpESVJUWV9CSVRfRlJBTUVCVUZGRVJfU1JHQik7CisgICAgfQor
CiAgICAgY29uc3QgYXV0byAmZ2xBbmRMb2NhbERpcnR5Qml0cyA9IChnbERpcnR5Qml0cyB8IG1M
b2NhbERpcnR5Qml0cyk7CiAKICAgICBpZiAoIWdsQW5kTG9jYWxEaXJ0eUJpdHMuYW55KCkpCkBA
IC0xNTM3LDYgKzE2MTEsOSBAQCB2b2lkIFN0YXRlTWFuYWdlckdMOjpzeW5jU3RhdGUoY29uc3Qg
Z2w6OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdAogICAgICAgICAgICAg
Y2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9WRVJURVhfQVJSQVlfQklORElORzoKICAgICAgICAg
ICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBpbXBsZW1lbnQgdGhpcwogICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9EUkFXX0lORElS
RUNUX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICAgICAgICAgIC8vIFRPRE86IGltcGxlbWVudCB0
aGlzCisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6
RElSVFlfQklUX1BST0dSQU1fQklORElORzoKICAgICAgICAgICAgICAgICAvLyBUT0RPKGptYWRp
bGwpOiBpbXBsZW1lbnQgdGhpcwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU2MCw2ICsx
NjM3LDExIEBAIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUg
JnN0YXRlLCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0CiAgICAgICAgICAgICAgICAgc2V0UGF0
aFJlbmRlcmluZ1N0ZW5jaWxTdGF0ZShzdGF0ZS5nZXRQYXRoU3RlbmNpbEZ1bmMoKSwgc3RhdGUu
Z2V0UGF0aFN0ZW5jaWxSZWYoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRlLmdldFBhdGhTdGVuY2lsTWFzaygpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9CSVRfRlJBTUVCVUZGRVJf
U1JHQjoKKyAgICAgICAgICAgICAgICBzZXRGcmFtZWJ1ZmZlclNSR0JFbmFibGVkRm9yRnJhbWVi
dWZmZXIoCisgICAgICAgICAgICAgICAgICAgIGRhdGEsIHN0YXRlLmdldEZyYW1lYnVmZmVyU1JH
QigpLAorICAgICAgICAgICAgICAgICAgICBHZXRJbXBsQXM8RnJhbWVidWZmZXJHTD4oc3RhdGUu
Z2V0RHJhd0ZyYW1lYnVmZmVyKCkpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGRpcnR5
Qml0ID49IGdsOjpTdGF0ZTo6RElSVFlfQklUX0NVUlJFTlRfVkFMVUVfMCAmJgpAQCAtMTU3Niw4
ICsxNjU4LDEzIEBAIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnN5bmNTdGF0ZShjb25zdCBnbDo6U3Rh
dGUgJnN0YXRlLCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0CiAgICAgfQogfQogCi12b2lkIFN0
YXRlTWFuYWdlckdMOjpzZXRGcmFtZWJ1ZmZlclNSR0JFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3Zv
aWQgU3RhdGVNYW5hZ2VyR0w6OnNldEZyYW1lYnVmZmVyU1JHQkVuYWJsZWQoY29uc3QgZ2w6OkNv
bnRleHRTdGF0ZSAmZGF0YSwgYm9vbCBlbmFibGVkKQogeworICAgIGlmICghZGF0YS5nZXRFeHRl
bnNpb25zKCkuc1JHQldyaXRlQ29udHJvbCkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICBpZiAobUZyYW1lYnVmZmVyU1JHQkVuYWJsZWQgIT0gZW5hYmxlZCkKICAgICB7CiAg
ICAgICAgIG1GcmFtZWJ1ZmZlclNSR0JFbmFibGVkID0gZW5hYmxlZDsKQEAgLTE1ODksNiArMTY3
NiwyNiBAQCB2b2lkIFN0YXRlTWFuYWdlckdMOjpzZXRGcmFtZWJ1ZmZlclNSR0JFbmFibGVkKGJv
b2wgZW5hYmxlZCkKICAgICAgICAgewogICAgICAgICAgICAgbUZ1bmN0aW9ucy0+ZGlzYWJsZShH
TF9GUkFNRUJVRkZFUl9TUkdCKTsKICAgICAgICAgfQorICAgICAgICBtTG9jYWxEaXJ0eUJpdHMu
c2V0KGdsOjpTdGF0ZTo6RElSVFlfQklUX0ZSQU1FQlVGRkVSX1NSR0IpOworICAgIH0KK30KKwor
dm9pZCBTdGF0ZU1hbmFnZXJHTDo6c2V0RnJhbWVidWZmZXJTUkdCRW5hYmxlZEZvckZyYW1lYnVm
ZmVyKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbmFibGVkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEZyYW1lYnVmZmVyR0wgKmZyYW1lYnVmZmVyKQoreworICAgIGlmIChtRnVuY3Rpb25z
LT5zdGFuZGFyZCA9PSBTVEFOREFSRF9HTF9ERVNLVE9QICYmIGZyYW1lYnVmZmVyLT5pc0RlZmF1
bHQoKSkKKyAgICB7CisgICAgICAgIC8vIE9iZXkgdGhlIGZyYW1lYnVmZmVyIHNSR0Igc3RhdGUg
Zm9yIGJsZW5kaW5nIG9uIGFsbCBmcmFtZWJ1ZmZlcnMgZXhjZXB0IHRoZSBkZWZhdWx0CisgICAg
ICAgIC8vIGZyYW1lYnVmZmVyIG9uIERlc2t0b3AgT3BlbkdMLgorICAgICAgICAvLyBXaGVuIFNS
R0IgYmxlbmRpbmcgaXMgZW5hYmxlZCwgb25seSBTUkdCIGNhcGFibGUgZm9ybWF0cyB3aWxsIHVz
ZSBpdCBidXQgdGhlIGRlZmF1bHQKKyAgICAgICAgLy8gZnJhbWVidWZmZXIgd2lsbCBhbHdheXMg
dXNlIGl0IGlmIGl0IGlzIGVuYWJsZWQuCisgICAgICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogVXBk
YXRlIHRoaXMgd2hlbiB0aGUgZnJhbWVidWZmZXIgYmluZGluZyBkaXJ0eSBjaGFuZ2VzLCB3aGVu
IGl0IGV4aXN0cy4KKyAgICAgICAgc2V0RnJhbWVidWZmZXJTUkdCRW5hYmxlZChkYXRhLCBmYWxz
ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHNldEZyYW1lYnVmZmVyU1JHQkVu
YWJsZWQoZGF0YSwgZW5hYmxlZCk7CiAgICAgfQogfQogCkBAIC0xNzA0LDkgKzE4MTEsNCBAQCB2
b2lkIFN0YXRlTWFuYWdlckdMOjpzZXRUZXh0dXJlQ3ViZW1hcFNlYW1sZXNzRW5hYmxlZChib29s
IGVuYWJsZWQpCiAgICAgfQogfQogCi1HTHVpbnQgU3RhdGVNYW5hZ2VyR0w6OmdldEJvdW5kQnVm
ZmVyKEdMZW51bSB0eXBlKQotewotICAgIEFTU0VSVChtQnVmZmVycy5maW5kKHR5cGUpICE9IG1C
dWZmZXJzLmVuZCgpKTsKLSAgICByZXR1cm4gbUJ1ZmZlcnNbdHlwZV07Ci19CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU3Rh
dGVNYW5hZ2VyR0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oCmluZGV4IDM1ZGUyMzdlOWYxZDFkMWY2YzY4YjQ1MjFh
ZTI0YjNlZTkwYjQ5ODAuLjIyMGQ5NGU0ZTljMTI0MjdlOWRmMmQxOWZhNmNlNmZjY2U5MmM1OGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9TdGF0ZU1hbmFnZXJHTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oCkBAIC0yNyw2ICsyNyw3IEBAIGNs
YXNzIFN0YXRlOwogbmFtZXNwYWNlIHJ4CiB7CiAKK2NsYXNzIEZyYW1lYnVmZmVyR0w7CiBjbGFz
cyBGdW5jdGlvbnNHTDsKIGNsYXNzIFRyYW5zZm9ybUZlZWRiYWNrR0w7CiBjbGFzcyBRdWVyeUdM
OwpAQCAtMTIyLDcgKzEyMywxMCBAQCBjbGFzcyBTdGF0ZU1hbmFnZXJHTCBmaW5hbCA6IGFuZ2xl
OjpOb25Db3B5YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2tpcFBpeGVs
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwYWNrQnVmZmVyKTsKIAotICAg
IHZvaWQgc2V0RnJhbWVidWZmZXJTUkdCRW5hYmxlZChib29sIGVuYWJsZWQpOworICAgIHZvaWQg
c2V0RnJhbWVidWZmZXJTUkdCRW5hYmxlZChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBi
b29sIGVuYWJsZWQpOworICAgIHZvaWQgc2V0RnJhbWVidWZmZXJTUkdCRW5hYmxlZEZvckZyYW1l
YnVmZmVyKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBlbmFibGVkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyR0wg
KmZyYW1lYnVmZmVyKTsKIAogICAgIHZvaWQgc2V0RGl0aGVyRW5hYmxlZChib29sIGVuYWJsZWQp
OwogCkBAIC0xNDcsMTUgKzE1MSwyNCBAQCBjbGFzcyBTdGF0ZU1hbmFnZXJHTCBmaW5hbCA6IGFu
Z2xlOjpOb25Db3B5YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHZvaWQgKmluZGljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgaW5zdGFuY2VDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x2b2lkICoqb3V0SW5kaWNlcyk7CisgICAgZ2w6OkVycm9yIHNldERyYXdJbmRpcmVj
dFN0YXRlKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIEdMZW51bSB0eXBlKTsKIAotICAg
IGdsOjpFcnJvciBwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUg
JmRhdGEpOwotICAgIGdsOjpFcnJvciBvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250ZXh0U3Rh
dGUgJmRhdGEpOworICAgIGdsOjpFcnJvciBzZXREaXNwYXRjaENvbXB1dGVTdGF0ZShjb25zdCBn
bDo6Q29udGV4dFN0YXRlICZkYXRhKTsKIAotICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpT
dGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZnbERpcnR5Qml0cyk7Cisg
ICAgdm9pZCBwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgdm9pZCBwYXVzZUFsbFF1ZXJp
ZXMoKTsKKyAgICB2b2lkIHBhdXNlUXVlcnkoR0xlbnVtIHR5cGUpOworICAgIHZvaWQgcmVzdW1l
QWxsUXVlcmllcygpOworICAgIHZvaWQgcmVzdW1lUXVlcnkoR0xlbnVtIHR5cGUpOworICAgIGds
OjpFcnJvciBvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpOwogCi0g
ICAgR0x1aW50IGdldEJvdW5kQnVmZmVyKEdMZW51bSB0eXBlKTsKKyAgICB2b2lkIHN5bmNTdGF0
ZShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0
cyAmZ2xEaXJ0eUJpdHMpOwogCiAgIHByaXZhdGU6CisgICAgLy8gU2V0IHN0YXRlIHRoYXQncyBj
b21tb24gYW1vbmcgZHJhdyBjb21tYW5kcyBhbmQgY29tcHV0ZSBpbnZvY2F0aW9ucy4KKyAgICB2
b2lkIHNldEdlbmVyaWNTaGFkZXJTdGF0ZShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKTsK
KworICAgIC8vIFNldCBzdGF0ZSB0aGF0J3MgY29tbW9uIGFtb25nIGRyYXcgY29tbWFuZHMuCiAg
ICAgZ2w6OkVycm9yIHNldEdlbmVyaWNEcmF3U3RhdGUoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAm
ZGF0YSk7CiAKICAgICB2b2lkIHNldFRleHR1cmVDdWJlbWFwU2VhbWxlc3NFbmFibGVkKGJvb2wg
ZW5hYmxlZCk7CkBAIC0xODksNyArMjAyLDcgQEAgY2xhc3MgU3RhdGVNYW5hZ2VyR0wgZmluYWwg
OiBhbmdsZTo6Tm9uQ29weWFibGUKIAogICAgIFRyYW5zZm9ybUZlZWRiYWNrR0wgKm1QcmV2RHJh
d1RyYW5zZm9ybUZlZWRiYWNrOwogICAgIHN0ZDo6c2V0PFF1ZXJ5R0wgKj4gbUN1cnJlbnRRdWVy
aWVzOwotICAgIHVpbnRwdHJfdCBtUHJldkRyYXdDb250ZXh0OworICAgIGdsOjpDb250ZXh0SUQg
bVByZXZEcmF3Q29udGV4dDsKIAogICAgIEdMaW50IG1VbnBhY2tBbGlnbm1lbnQ7CiAgICAgR0xp
bnQgbVVucGFja1Jvd0xlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdXJmYWNlR0wuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N1cmZhY2VHTC5jcHAKaW5kZXggMzI1
OTQ0YzQ1ZjdiMmM1NzhkNmZjNjcxMDNlZmYzNDdhOGI2NWI2OS4uYmJhOTM4YmJhMGRjNDY1M2Yz
YzBlMTkzMDAwYjk4YzdkMzRlMzAzZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N1cmZhY2VHTC5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N1cmZhY2VHTC5jcHAKQEAg
LTM0LDQgKzM0LDkgQEAgZWdsOjpFcnJvciBTdXJmYWNlR0w6OmdldFN5bmNWYWx1ZXMoRUdMdWlu
dDY0S0hSICp1c3QsIEVHTHVpbnQ2NEtIUiAqbXNjLCBFR0x1aW4KICAgICBVTlJFQUNIQUJMRSgp
OwogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfU1VSRkFDRSk7CiB9CisKK2VnbDo6RXJy
b3IgU3VyZmFjZUdMOjp1bk1ha2VDdXJyZW50KCkKK3sKKyAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfU1VDQ0VTUyk7Cit9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU3VyZmFjZUdMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU3VyZmFjZUdMLmgKaW5kZXggYTU0Y2UzZGI4
NjI0YmZkOGQzNDRkNTcwMTQ5ZjA0YTZkOGVkM2UyMy4uN2I4MDVkZDU3ZWY0NmI0OWE4ODE2NDRj
YTFiMzkwMGM0ZjBjNzQ0YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N1cmZhY2VHTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdXJmYWNlR0wuaApAQCAtMjYsNiArMjYs
NyBAQCBjbGFzcyBTdXJmYWNlR0wgOiBwdWJsaWMgU3VyZmFjZUltcGwKICAgICBlZ2w6OkVycm9y
IGdldFN5bmNWYWx1ZXMoRUdMdWludDY0S0hSICp1c3QsIEVHTHVpbnQ2NEtIUiAqbXNjLCBFR0x1
aW50NjRLSFIgKnNiYykgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGVnbDo6RXJyb3IgbWFrZUN1
cnJlbnQoKSA9IDA7CisgICAgdmlydHVhbCBlZ2w6OkVycm9yIHVuTWFrZUN1cnJlbnQoKTsKIAog
ICBwcml2YXRlOgogICAgIFJlbmRlcmVyR0wgKm1SZW5kZXJlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJlR0wuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1RleHR1
cmVHTC5jcHAKaW5kZXggYzc0MWE5YzA5YjVlMTQ1Mjc1ZTJlMzE4NTlhODhiNjFkMDQwM2JkMy4u
NzgxN2EwZWM0MjdiODVmMzg4YWNhNTJhZTAyMDZhMTY0MWY4ZjIyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1RleHR1cmVHTC5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L1RleHR1cmVHTC5jcHAKQEAgLTgsNyArOCw3IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9nbC9UZXh0dXJlR0wuaCIKIAotI2luY2x1ZGUgImNvbW1vbi9CaXRTZXRJdGVyYXRvci5o
IgorI2luY2x1ZGUgImNvbW1vbi9iaXRzZXRfdXRpbHMuaCIKICNpbmNsdWRlICJjb21tb24vZGVi
dWcuaCIKICNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
U3RhdGUuaCIKQEAgLTEzNiw3ICsxMzYsMTAgQEAgVGV4dHVyZUdMOjpUZXh0dXJlR0woY29uc3Qg
Z2w6OlRleHR1cmVTdGF0ZSAmc3RhdGUsCiAgICAgICBtU3RhdGVNYW5hZ2VyKHN0YXRlTWFuYWdl
ciksCiAgICAgICBtQmxpdHRlcihibGl0dGVyKSwKICAgICAgIG1MZXZlbEluZm8oZ2w6OklNUExF
TUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVMUyArIDEpLAotICAgICAgbUFwcGxpZWRUZXh0dXJl
U3RhdGUoc3RhdGUubVRhcmdldCksCisgICAgICBtQXBwbGllZFN3aXp6bGUoc3RhdGUuZ2V0U3dp
enpsZVN0YXRlKCkpLAorICAgICAgbUFwcGxpZWRTYW1wbGVyKHN0YXRlLmdldFNhbXBsZXJTdGF0
ZSgpKSwKKyAgICAgIG1BcHBsaWVkQmFzZUxldmVsKHN0YXRlLmdldEVmZmVjdGl2ZUJhc2VMZXZl
bCgpKSwKKyAgICAgIG1BcHBsaWVkTWF4TGV2ZWwoc3RhdGUuZ2V0RWZmZWN0aXZlTWF4TGV2ZWwo
KSksCiAgICAgICBtVGV4dHVyZUlEKDApCiB7CiAgICAgQVNTRVJUKG1GdW5jdGlvbnMpOwpAQCAt
MTQ0LDcgKzE0Nyw3IEBAIFRleHR1cmVHTDo6VGV4dHVyZUdMKGNvbnN0IGdsOjpUZXh0dXJlU3Rh
dGUgJnN0YXRlLAogICAgIEFTU0VSVChtQmxpdHRlcik7CiAKICAgICBtRnVuY3Rpb25zLT5nZW5U
ZXh0dXJlcygxLCAmbVRleHR1cmVJRCk7Ci0gICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUo
bVN0YXRlLm1UYXJnZXQsIG1UZXh0dXJlSUQpOworICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0
dXJlKGdldFRhcmdldCgpLCBtVGV4dHVyZUlEKTsKIH0KIAogVGV4dHVyZUdMOjp+VGV4dHVyZUdM
KCkKQEAgLTE1Myw3ICsxNTYsOCBAQCBUZXh0dXJlR0w6On5UZXh0dXJlR0woKQogICAgIG1UZXh0
dXJlSUQgPSAwOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUdMOjpzZXRJbWFnZShHTGVudW0gdGFy
Z2V0LAorZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0SW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJ
bXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLApAQCAtMTgyLDcgKzE4Niw3IEBAIGds
OjpFcnJvciBUZXh0dXJlR0w6OnNldEltYWdlKEdMZW51bSB0YXJnZXQsCiAgICAgewogICAgICAg
ICBib29sIGFwcGx5OwogICAgICAgICBBTkdMRV9UUllfUkVTVUxUKFNob3VsZEFwcGx5TGFzdFJv
d1BhZGRpbmdXb3JrYXJvdW5kKHNpemUsIHVucGFjaywgZm9ybWF0LCB0eXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZVRl
eEltYWdlM0QobVN0YXRlLm1UYXJnZXQpLCBwaXhlbHMpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZVRleEltYWdlM0QoZ2V0
VGFyZ2V0KCkpLCBwaXhlbHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5KTsKIAog
ICAgICAgICAvLyBUaGUgZHJpdmVyIHdpbGwgdGhpbmsgdGhlIHBpeGVsIGJ1ZmZlciBkb2Vzbid0
IGhhdmUgZW5vdWdoIGRhdGEsIHdvcmsgYXJvdW5kIHRoaXMgYnVnCkBAIC0yMTQsMjIgKzIxOCwy
MSBAQCB2b2lkIFRleHR1cmVHTDo6c2V0SW1hZ2VIZWxwZXIoR0xlbnVtIHRhcmdldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpCiB7Ci0gICAgVU5VU0VEX0FTU0VS
VElPTl9WQVJJQUJMRSgmQ29tcGF0aWJsZVRleHR1cmVUYXJnZXQpOyAvLyBSZWZlcmVuY2UgdGhp
cyBmdW5jdGlvbiB0byBhdm9pZCB3YXJuaW5ncy4KLSAgICBBU1NFUlQoQ29tcGF0aWJsZVRleHR1
cmVUYXJnZXQobVN0YXRlLm1UYXJnZXQsIHRhcmdldCkpOworICAgIEFTU0VSVChDb21wYXRpYmxl
VGV4dHVyZVRhcmdldChnZXRUYXJnZXQoKSwgdGFyZ2V0KSk7CiAKICAgICBuYXRpdmVnbDo6VGV4
SW1hZ2VGb3JtYXQgdGV4SW1hZ2VGb3JtYXQgPQogICAgICAgICBuYXRpdmVnbDo6R2V0VGV4SW1h
Z2VGb3JtYXQobUZ1bmN0aW9ucywgbVdvcmthcm91bmRzLCBpbnRlcm5hbEZvcm1hdCwgZm9ybWF0
LCB0eXBlKTsKIAotICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1TdGF0ZS5tVGFyZ2V0
LCBtVGV4dHVyZUlEKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShnZXRUYXJnZXQo
KSwgbVRleHR1cmVJRCk7CiAKLSAgICBpZiAoVXNlVGV4SW1hZ2UyRChtU3RhdGUubVRhcmdldCkp
CisgICAgaWYgKFVzZVRleEltYWdlMkQoZ2V0VGFyZ2V0KCkpKQogICAgIHsKICAgICAgICAgQVNT
RVJUKHNpemUuZGVwdGggPT0gMSk7CiAgICAgICAgIG1GdW5jdGlvbnMtPnRleEltYWdlMkQodGFy
Z2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLCB0ZXhJbWFnZUZvcm1hdC5pbnRlcm5hbEZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLndpZHRoLCBzaXplLmhl
aWdodCwgMCwgdGV4SW1hZ2VGb3JtYXQuZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRleEltYWdlRm9ybWF0LnR5cGUsIHBpeGVscyk7CiAgICAgfQotICAgIGVsc2UgaWYg
KFVzZVRleEltYWdlM0QobVN0YXRlLm1UYXJnZXQpKQorICAgIGVsc2UgaWYgKFVzZVRleEltYWdl
M0QoZ2V0VGFyZ2V0KCkpKQogICAgIHsKICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4SW1hZ2UzRCh0
YXJnZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCksIHRleEltYWdlRm9ybWF0LmludGVybmFs
Rm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUud2lkdGgsIHNpemUu
aGVpZ2h0LCBzaXplLmRlcHRoLCAwLCB0ZXhJbWFnZUZvcm1hdC5mb3JtYXQsCkBAIC0yNTAsMTcg
KzI1MywyMSBAQCB2b2lkIFRleHR1cmVHTDo6cmVzZXJ2ZVRleEltYWdlVG9CZUZpbGxlZChHTGVu
dW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlKQogewotICAgIEdMdWludCB1bnBhY2tCdWZmZXIgPSBtU3RhdGVNYW5hZ2VyLT5n
ZXRCb3VuZEJ1ZmZlcihHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSKTsKLSAgICBtU3RhdGVNYW5hZ2Vy
LT5iaW5kQnVmZmVyKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIDApOwogICAgIGdsOjpQaXhlbFVu
cGFja1N0YXRlIHVucGFjazsKKyAgICBtU3RhdGVNYW5hZ2VyLT5zZXRQaXhlbFVucGFja1N0YXRl
KHVucGFjayk7CiAgICAgc2V0SW1hZ2VIZWxwZXIodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxGb3Jt
YXQsIHNpemUsIGZvcm1hdCwgdHlwZSwgbnVsbHB0cik7Ci0gICAgbVN0YXRlTWFuYWdlci0+Ymlu
ZEJ1ZmZlcihHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCB1bnBhY2tCdWZmZXIpOwogfQogCi1nbDo6
RXJyb3IgVGV4dHVyZUdMOjpzZXRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWws
IGNvbnN0IGdsOjpCb3ggJmFyZWEsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVu
cGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxzKQorZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0U3Vi
SW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpCb3ggJmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAm
dW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAq
cGl4ZWxzKQogewotICAgIEFTU0VSVChDb21wYXRpYmxlVGV4dHVyZVRhcmdldChtU3RhdGUubVRh
cmdldCwgdGFyZ2V0KSk7CisgICAgQVNTRVJUKENvbXBhdGlibGVUZXh0dXJlVGFyZ2V0KGdldFRh
cmdldCgpLCB0YXJnZXQpKTsKIAogICAgIG5hdGl2ZWdsOjpUZXhTdWJJbWFnZUZvcm1hdCB0ZXhT
dWJJbWFnZUZvcm1hdCA9CiAgICAgICAgIG5hdGl2ZWdsOjpHZXRUZXhTdWJJbWFnZUZvcm1hdCht
RnVuY3Rpb25zLCBtV29ya2Fyb3VuZHMsIGZvcm1hdCwgdHlwZSk7CkBAIC0yNjgsNyArMjc1LDcg
QEAgZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90
IGxldmVsLCBjb25zdCBnbDo6Qm94ICZhcmUKICAgICBBU1NFUlQobUxldmVsSW5mb1tsZXZlbF0u
bHVtYVdvcmthcm91bmQuZW5hYmxlZCA9PQogICAgICAgICAgICBHZXRMZXZlbEluZm8oZm9ybWF0
LCB0ZXhTdWJJbWFnZUZvcm1hdC5mb3JtYXQpLmx1bWFXb3JrYXJvdW5kLmVuYWJsZWQpOwogCi0g
ICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVN0YXRlLm1UYXJnZXQsIG1UZXh0dXJlSUQp
OworICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKGdldFRhcmdldCgpLCBtVGV4dHVyZUlE
KTsKICAgICBpZiAobVdvcmthcm91bmRzLnVucGFja092ZXJsYXBwaW5nUm93c1NlcGFyYXRlbHlV
bnBhY2tCdWZmZXIgJiYgdW5wYWNrLnBpeGVsQnVmZmVyLmdldCgpICYmCiAgICAgICAgIHVucGFj
ay5yb3dMZW5ndGggIT0gMCAmJiB1bnBhY2sucm93TGVuZ3RoIDwgYXJlYS53aWR0aCkKICAgICB7
CkBAIC0yODEsNyArMjg4LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0U3ViSW1hZ2UoR0xl
bnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6Qm94ICZhcmUKIAogICAgICAgICBi
b29sIGFwcGx5OwogICAgICAgICBBTkdMRV9UUllfUkVTVUxUKFNob3VsZEFwcGx5TGFzdFJvd1Bh
ZGRpbmdXb3JrYXJvdW5kKHNpemUsIHVucGFjaywgZm9ybWF0LCB0eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZVRleElt
YWdlM0QobVN0YXRlLm1UYXJnZXQpLCBwaXhlbHMpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZVRleEltYWdlM0QoZ2V0VGFy
Z2V0KCkpLCBwaXhlbHMpLAogICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5KTsKIAogICAg
ICAgICAvLyBUaGUgZHJpdmVyIHdpbGwgdGhpbmsgdGhlIHBpeGVsIGJ1ZmZlciBkb2Vzbid0IGhh
dmUgZW5vdWdoIGRhdGEsIHdvcmsgYXJvdW5kIHRoaXMgYnVnCkBAIC0yOTIsNyArMjk5LDcgQEAg
Z2w6OkVycm9yIFRleHR1cmVHTDo6c2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxl
dmVsLCBjb25zdCBnbDo6Qm94ICZhcmUKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChVc2VU
ZXhJbWFnZTJEKG1TdGF0ZS5tVGFyZ2V0KSkKKyAgICBpZiAoVXNlVGV4SW1hZ2UyRChnZXRUYXJn
ZXQoKSkpCiAgICAgewogICAgICAgICBBU1NFUlQoYXJlYS56ID09IDAgJiYgYXJlYS5kZXB0aCA9
PSAxKTsKICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4U3ViSW1hZ2UyRCh0YXJnZXQsIHN0YXRpY19j
YXN0PEdMaW50PihsZXZlbCksIGFyZWEueCwgYXJlYS55LCBhcmVhLndpZHRoLApAQCAtMzAxLDEz
ICszMDgsMTMgQEAgZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdl
dCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6Qm94ICZhcmUKICAgICB9CiAgICAgZWxzZQogICAg
IHsKLSAgICAgICAgQVNTRVJUKFVzZVRleEltYWdlM0QobVN0YXRlLm1UYXJnZXQpKTsKKyAgICAg
ICAgQVNTRVJUKFVzZVRleEltYWdlM0QoZ2V0VGFyZ2V0KCkpKTsKICAgICAgICAgbUZ1bmN0aW9u
cy0+dGV4U3ViSW1hZ2UzRCh0YXJnZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCksIGFyZWEu
eCwgYXJlYS55LCBhcmVhLnosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJl
YS53aWR0aCwgYXJlYS5oZWlnaHQsIGFyZWEuZGVwdGgsIHRleFN1YkltYWdlRm9ybWF0LmZvcm1h
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXhTdWJJbWFnZUZvcm1hdC50
eXBlLCBwaXhlbHMpOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZUdMOjpz
ZXRTdWJJbWFnZVJvd0J5Um93V29ya2Fyb3VuZChHTGVudW0gdGFyZ2V0LApAQCAtMzMyLDcgKzMz
OSw3IEBAIGdsOjpFcnJvciBUZXh0dXJlR0w6OnNldFN1YkltYWdlUm93QnlSb3dXb3JrYXJvdW5k
KEdMZW51bSB0YXJnZXQsCiAgICAgR0x1aW50IGltYWdlQnl0ZXMgPSAwOwogICAgIEFOR0xFX1RS
WV9SRVNVTFQoZ2xGb3JtYXQuY29tcHV0ZURlcHRoUGl0Y2goYXJlYS5oZWlnaHQsIHVucGFjay5p
bWFnZUhlaWdodCwgcm93Qnl0ZXMpLAogICAgICAgICAgICAgICAgICAgICAgaW1hZ2VCeXRlcyk7
Ci0gICAgYm9vbCB1c2VUZXhJbWFnZTNEID0gVXNlVGV4SW1hZ2UzRChtU3RhdGUubVRhcmdldCk7
CisgICAgYm9vbCB1c2VUZXhJbWFnZTNEID0gVXNlVGV4SW1hZ2UzRChnZXRUYXJnZXQoKSk7CiAg
ICAgR0x1aW50IHNraXBCeXRlcyAgID0gMDsKICAgICBBTkdMRV9UUllfUkVTVUxUKGdsRm9ybWF0
LmNvbXB1dGVTa2lwQnl0ZXMocm93Qnl0ZXMsIGltYWdlQnl0ZXMsIHVucGFjaywgdXNlVGV4SW1h
Z2UzRCksCiAgICAgICAgICAgICAgICAgICAgICBza2lwQnl0ZXMpOwpAQCAtMzU1LDcgKzM2Miw3
IEBAIGdsOjpFcnJvciBUZXh0dXJlR0w6OnNldFN1YkltYWdlUm93QnlSb3dXb3JrYXJvdW5kKEdM
ZW51bSB0YXJnZXQsCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIEFTU0VSVChVc2VU
ZXhJbWFnZTJEKG1TdGF0ZS5tVGFyZ2V0KSk7CisgICAgICAgIEFTU0VSVChVc2VUZXhJbWFnZTJE
KGdldFRhcmdldCgpKSk7CiAgICAgICAgIGZvciAoR0xpbnQgcm93ID0gMDsgcm93IDwgYXJlYS5o
ZWlnaHQ7ICsrcm93KQogICAgICAgICB7CiAgICAgICAgICAgICBHTGludCBieXRlT2Zmc2V0ICAg
ICAgICAgPSByb3cgKiByb3dCeXRlczsKQEAgLTM4MywxMSArMzkwLDEzIEBAIGdsOjpFcnJvciBU
ZXh0dXJlR0w6OnNldFN1YkltYWdlUGFkZGluZ1dvcmthcm91bmQoR0xlbnVtIHRhcmdldCwKICAg
ICBHTHVpbnQgaW1hZ2VCeXRlcyA9IDA7CiAgICAgQU5HTEVfVFJZX1JFU1VMVChnbEZvcm1hdC5j
b21wdXRlRGVwdGhQaXRjaChhcmVhLmhlaWdodCwgdW5wYWNrLmltYWdlSGVpZ2h0LCByb3dCeXRl
cyksCiAgICAgICAgICAgICAgICAgICAgICBpbWFnZUJ5dGVzKTsKLSAgICBib29sIHVzZVRleElt
YWdlM0QgPSBVc2VUZXhJbWFnZTNEKG1TdGF0ZS5tVGFyZ2V0KTsKKyAgICBib29sIHVzZVRleElt
YWdlM0QgPSBVc2VUZXhJbWFnZTNEKGdldFRhcmdldCgpKTsKICAgICBHTHVpbnQgc2tpcEJ5dGVz
ICAgPSAwOwogICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2xGb3JtYXQuY29tcHV0ZVNraXBCeXRlcyhy
b3dCeXRlcywgaW1hZ2VCeXRlcywgdW5wYWNrLCB1c2VUZXhJbWFnZTNEKSwKICAgICAgICAgICAg
ICAgICAgICAgIHNraXBCeXRlcyk7CiAKKyAgICBtU3RhdGVNYW5hZ2VyLT5zZXRQaXhlbFVucGFj
a1N0YXRlKHVucGFjayk7CisKICAgICBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSBkaXJlY3RVbnBhY2s7
CiAgICAgZGlyZWN0VW5wYWNrLnBpeGVsQnVmZmVyID0gdW5wYWNrLnBpeGVsQnVmZmVyOwogICAg
IGRpcmVjdFVucGFjay5hbGlnbm1lbnQgICA9IDE7CkBAIC00MjYsNyArNDM1LDcgQEAgZ2w6OkVy
cm9yIFRleHR1cmVHTDo6c2V0U3ViSW1hZ2VQYWRkaW5nV29ya2Fyb3VuZChHTGVudW0gdGFyZ2V0
LAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBBU1NFUlQoVXNlVGV4SW1hZ2UyRCht
U3RhdGUubVRhcmdldCkpOworICAgICAgICBBU1NFUlQoVXNlVGV4SW1hZ2UyRChnZXRUYXJnZXQo
KSkpOwogCiAgICAgICAgIC8vIFVwbG9hZCBhbGwgYnV0IHRoZSBsYXN0IHJvdwogICAgICAgICBp
ZiAoYXJlYS5oZWlnaHQgPiAxKQpAQCAtNDUwLDIzICs0NTksMjkgQEAgZ2w6OkVycm9yIFRleHR1
cmVHTDo6c2V0U3ViSW1hZ2VQYWRkaW5nV29ya2Fyb3VuZChHTGVudW0gdGFyZ2V0LAogICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUdMOjpzZXRDb21wcmVz
c2VkSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIHNpemVfdCBp
bWFnZVNpemUsIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKK2dsOjpFcnJvciBUZXh0dXJlR0w6OnNl
dENvbXByZXNzZWRJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVu
cGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGltYWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpCiB7Ci0gICAgQVNTRVJUKENvbXBhdGlibGVUZXh0
dXJlVGFyZ2V0KG1TdGF0ZS5tVGFyZ2V0LCB0YXJnZXQpKTsKKyAgICBBU1NFUlQoQ29tcGF0aWJs
ZVRleHR1cmVUYXJnZXQoZ2V0VGFyZ2V0KCksIHRhcmdldCkpOwogCiAgICAgbmF0aXZlZ2w6OkNv
bXByZXNzZWRUZXhJbWFnZUZvcm1hdCBjb21wcmVzc2VkVGV4SW1hZ2VGb3JtYXQgPQogICAgICAg
ICBuYXRpdmVnbDo6R2V0Q29tcHJlc3NlZFRleEltYWdlRm9ybWF0KG1GdW5jdGlvbnMsIG1Xb3Jr
YXJvdW5kcywgaW50ZXJuYWxGb3JtYXQpOwogCi0gICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1
cmUobVN0YXRlLm1UYXJnZXQsIG1UZXh0dXJlSUQpOwotICAgIGlmIChVc2VUZXhJbWFnZTJEKG1T
dGF0ZS5tVGFyZ2V0KSkKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShnZXRUYXJnZXQo
KSwgbVRleHR1cmVJRCk7CisgICAgaWYgKFVzZVRleEltYWdlMkQoZ2V0VGFyZ2V0KCkpKQogICAg
IHsKICAgICAgICAgQVNTRVJUKHNpemUuZGVwdGggPT0gMSk7CiAgICAgICAgIG1GdW5jdGlvbnMt
PmNvbXByZXNzZWRUZXhJbWFnZTJEKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZFRleElt
YWdlRm9ybWF0LmludGVybmFsRm9ybWF0LCBzaXplLndpZHRoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplLmhlaWdodCwgMCwgc3RhdGljX2Nhc3Q8R0xzaXpl
aT4oaW1hZ2VTaXplKSwgcGl4ZWxzKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoVXNlVGV4SW1hZ2Uz
RChtU3RhdGUubVRhcmdldCkpCisgICAgZWxzZSBpZiAoVXNlVGV4SW1hZ2UzRChnZXRUYXJnZXQo
KSkpCiAgICAgewogICAgICAgICBtRnVuY3Rpb25zLT5jb21wcmVzc2VkVGV4SW1hZ2UzRCgKICAg
ICAgICAgICAgIHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwgY29tcHJlc3NlZFRl
eEltYWdlRm9ybWF0LmludGVybmFsRm9ybWF0LCBzaXplLndpZHRoLApAQCAtNDgwLDI2ICs0OTUs
MzIgQEAgZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJn
ZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGUKICAgICBzZXRMZXZlbEluZm8obGV2ZWwsIDEs
IEdldExldmVsSW5mbyhpbnRlcm5hbEZvcm1hdCwgY29tcHJlc3NlZFRleEltYWdlRm9ybWF0Lmlu
dGVybmFsRm9ybWF0KSk7CiAgICAgQVNTRVJUKCFtTGV2ZWxJbmZvW2xldmVsXS5sdW1hV29ya2Fy
b3VuZC5lbmFibGVkKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAg
IHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUdMOjpzZXRDb21w
cmVzc2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6Qm94
ICZhcmVhLCBHTGVudW0gZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIHNpemVfdCBpbWFn
ZVNpemUsIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKK2dsOjpFcnJvciBUZXh0dXJlR0w6OnNldENv
bXByZXNzZWRTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhl
bFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGltYWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpCiB7Ci0gICAgQVNTRVJUKENvbXBh
dGlibGVUZXh0dXJlVGFyZ2V0KG1TdGF0ZS5tVGFyZ2V0LCB0YXJnZXQpKTsKKyAgICBBU1NFUlQo
Q29tcGF0aWJsZVRleHR1cmVUYXJnZXQoZ2V0VGFyZ2V0KCksIHRhcmdldCkpOwogCiAgICAgbmF0
aXZlZ2w6OkNvbXByZXNzZWRUZXhTdWJJbWFnZUZvcm1hdCBjb21wcmVzc2VkVGV4U3ViSW1hZ2VG
b3JtYXQgPQogICAgICAgICBuYXRpdmVnbDo6R2V0Q29tcHJlc3NlZFN1YlRleEltYWdlRm9ybWF0
KG1GdW5jdGlvbnMsIG1Xb3JrYXJvdW5kcywgZm9ybWF0KTsKIAotICAgIG1TdGF0ZU1hbmFnZXIt
PmJpbmRUZXh0dXJlKG1TdGF0ZS5tVGFyZ2V0LCBtVGV4dHVyZUlEKTsKLSAgICBpZiAoVXNlVGV4
SW1hZ2UyRChtU3RhdGUubVRhcmdldCkpCisgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUo
Z2V0VGFyZ2V0KCksIG1UZXh0dXJlSUQpOworICAgIGlmIChVc2VUZXhJbWFnZTJEKGdldFRhcmdl
dCgpKSkKICAgICB7CiAgICAgICAgIEFTU0VSVChhcmVhLnogPT0gMCAmJiBhcmVhLmRlcHRoID09
IDEpOwogICAgICAgICBtRnVuY3Rpb25zLT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCgKICAgICAg
ICAgICAgIHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwgYXJlYS54LCBhcmVhLnks
IGFyZWEud2lkdGgsIGFyZWEuaGVpZ2h0LAogICAgICAgICAgICAgY29tcHJlc3NlZFRleFN1Yklt
YWdlRm9ybWF0LmZvcm1hdCwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oaW1hZ2VTaXplKSwgcGl4ZWxz
KTsKICAgICB9Ci0gICAgZWxzZSBpZiAoVXNlVGV4SW1hZ2UzRChtU3RhdGUubVRhcmdldCkpCisg
ICAgZWxzZSBpZiAoVXNlVGV4SW1hZ2UzRChnZXRUYXJnZXQoKSkpCiAgICAgewogICAgICAgICBt
RnVuY3Rpb25zLT5jb21wcmVzc2VkVGV4U3ViSW1hZ2UzRCh0YXJnZXQsIHN0YXRpY19jYXN0PEdM
aW50PihsZXZlbCksIGFyZWEueCwgYXJlYS55LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhcmVhLnosIGFyZWEud2lkdGgsIGFyZWEuaGVpZ2h0LCBhcmVhLmRl
cHRoLApAQCAtNTE0LDEwICs1MzUsMTQgQEAgZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0Q29tcHJl
c3NlZFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2wKICAgICBB
U1NFUlQoIW1MZXZlbEluZm9bbGV2ZWxdLmx1bWFXb3JrYXJvdW5kLmVuYWJsZWQgJiYKICAgICAg
ICAgICAgIUdldExldmVsSW5mbyhmb3JtYXQsIGNvbXByZXNzZWRUZXhTdWJJbWFnZUZvcm1hdC5m
b3JtYXQpLmx1bWFXb3JrYXJvdW5kLmVuYWJsZWQpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBU
ZXh0dXJlR0w6OmNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGds
OjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKK2dsOjpFcnJv
ciBUZXh0dXJlR0w6OmNvcHlJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpCiB7CiAgICAgbmF0aXZlZ2w6
OkNvcHlUZXhJbWFnZUltYWdlRm9ybWF0IGNvcHlUZXhJbWFnZUZvcm1hdCA9IG5hdGl2ZWdsOjpH
ZXRDb3B5VGV4SW1hZ2VJbWFnZUZvcm1hdCgKQEAgLTUyNyw3ICs1NTIsNyBAQCBnbDo6RXJyb3Ig
VGV4dHVyZUdMOjpjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBn
bDo6UmVjdGFuZ2xlCiAgICAgaWYgKGxldmVsSW5mby5sdW1hV29ya2Fyb3VuZC5lbmFibGVkKQog
ICAgIHsKICAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbUJsaXR0ZXItPmNvcHlJbWFnZVRvTFVN
QVdvcmthcm91bmRUZXh0dXJlKAotICAgICAgICAgICAgbVRleHR1cmVJRCwgbVN0YXRlLm1UYXJn
ZXQsIHRhcmdldCwgbGV2ZWxJbmZvLnNvdXJjZUZvcm1hdCwgbGV2ZWwsIHNvdXJjZUFyZWEsCisg
ICAgICAgICAgICBtVGV4dHVyZUlELCBnZXRUYXJnZXQoKSwgdGFyZ2V0LCBsZXZlbEluZm8uc291
cmNlRm9ybWF0LCBsZXZlbCwgc291cmNlQXJlYSwKICAgICAgICAgICAgIGNvcHlUZXhJbWFnZUZv
cm1hdC5pbnRlcm5hbEZvcm1hdCwgc291cmNlKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKICAgICAgICAgewpAQCAtNTM4LDExICs1NjMsMTEgQEAgZ2w6OkVycm9yIFRleHR1cmVHTDo6
Y29weUltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OlJlY3Rhbmds
ZQogICAgIHsKICAgICAgICAgY29uc3QgRnJhbWVidWZmZXJHTCAqc291cmNlRnJhbWVidWZmZXJH
TCA9IEdldEltcGxBczxGcmFtZWJ1ZmZlckdMPihzb3VyY2UpOwogCi0gICAgICAgIG1TdGF0ZU1h
bmFnZXItPmJpbmRUZXh0dXJlKG1TdGF0ZS5tVGFyZ2V0LCBtVGV4dHVyZUlEKTsKKyAgICAgICAg
bVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUoZ2V0VGFyZ2V0KCksIG1UZXh0dXJlSUQpOwogICAg
ICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUZyYW1lYnVmZmVy
R0wtPmdldEZyYW1lYnVmZmVySUQoKSk7CiAKLSAgICAgICAgaWYgKFVzZVRleEltYWdlMkQobVN0
YXRlLm1UYXJnZXQpKQorICAgICAgICBpZiAoVXNlVGV4SW1hZ2UyRChnZXRUYXJnZXQoKSkpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIG1GdW5jdGlvbnMtPmNvcHlUZXhJbWFnZTJEKHRhcmdldCwg
c3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvcHlUZXhJbWFnZUZvcm1hdC5pbnRlcm5hbEZvcm1hdCwgc291cmNlQXJlYS54
LApAQCAtNTU2LDIzICs1ODEsMjcgQEAgZ2w6OkVycm9yIFRleHR1cmVHTDo6Y29weUltYWdlKEdM
ZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OlJlY3RhbmdsZQogCiAgICAgc2V0
TGV2ZWxJbmZvKGxldmVsLCAxLCBsZXZlbEluZm8pOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBU
ZXh0dXJlR0w6OmNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0
IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEs
CitnbDo6RXJyb3IgVGV4dHVyZUdMOjpjb3B5U3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJ
bXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291
cmNlQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJh
bWVidWZmZXIgKnNvdXJjZSkKIHsKICAgICBjb25zdCBGcmFtZWJ1ZmZlckdMICpzb3VyY2VGcmFt
ZWJ1ZmZlckdMID0gR2V0SW1wbEFzPEZyYW1lYnVmZmVyR0w+KHNvdXJjZSk7CiAKLSAgICBtU3Rh
dGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShtU3RhdGUubVRhcmdldCwgbVRleHR1cmVJRCk7CisgICAg
bVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUoZ2V0VGFyZ2V0KCksIG1UZXh0dXJlSUQpOwogICAg
IG1TdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSLCBzb3Vy
Y2VGcmFtZWJ1ZmZlckdMLT5nZXRGcmFtZWJ1ZmZlcklEKCkpOwogCiAgICAgY29uc3QgTGV2ZWxJ
bmZvR0wgJmxldmVsSW5mbyA9IG1MZXZlbEluZm9bbGV2ZWxdOwogICAgIGlmIChsZXZlbEluZm8u
bHVtYVdvcmthcm91bmQuZW5hYmxlZCkKICAgICB7CiAgICAgICAgIGdsOjpFcnJvciBlcnJvciA9
IG1CbGl0dGVyLT5jb3B5U3ViSW1hZ2VUb0xVTUFXb3JrYXJvdW5kVGV4dHVyZSgKLSAgICAgICAg
ICAgIG1UZXh0dXJlSUQsIG1TdGF0ZS5tVGFyZ2V0LCB0YXJnZXQsIGxldmVsSW5mby5zb3VyY2VG
b3JtYXQsIGxldmVsLCBkZXN0T2Zmc2V0LAotICAgICAgICAgICAgc291cmNlQXJlYSwgc291cmNl
KTsKKyAgICAgICAgICAgIG1UZXh0dXJlSUQsIGdldFRhcmdldCgpLCB0YXJnZXQsIGxldmVsSW5m
by5zb3VyY2VGb3JtYXQsIGxldmVsLCBkZXN0T2Zmc2V0LCBzb3VyY2VBcmVhLAorICAgICAgICAg
ICAgc291cmNlKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIGVycm9yOwpAQCAtNTgwLDE0ICs2MDksMTQgQEAgZ2w6OkVycm9yIFRl
eHR1cmVHTDo6Y29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3Qg
Z2w6Ok9mZnNldAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBpZiAoVXNlVGV4SW1h
Z2UyRChtU3RhdGUubVRhcmdldCkpCisgICAgICAgIGlmIChVc2VUZXhJbWFnZTJEKGdldFRhcmdl
dCgpKSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGRlc3RPZmZzZXQueiA9PSAwKTsK
ICAgICAgICAgICAgIG1GdW5jdGlvbnMtPmNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgc3RhdGlj
X2Nhc3Q8R0xpbnQ+KGxldmVsKSwgZGVzdE9mZnNldC54LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVzdE9mZnNldC55LCBzb3VyY2VBcmVhLngsIHNvdXJjZUFy
ZWEueSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUFy
ZWEud2lkdGgsIHNvdXJjZUFyZWEuaGVpZ2h0KTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlm
IChVc2VUZXhJbWFnZTNEKG1TdGF0ZS5tVGFyZ2V0KSkKKyAgICAgICAgZWxzZSBpZiAoVXNlVGV4
SW1hZ2UzRChnZXRUYXJnZXQoKSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1GdW5jdGlvbnMt
PmNvcHlUZXhTdWJJbWFnZTNEKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwgZGVz
dE9mZnNldC54LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVz
dE9mZnNldC55LCBkZXN0T2Zmc2V0LnosIHNvdXJjZUFyZWEueCwgc291cmNlQXJlYS55LApAQCAt
NTk5LDE5ICs2MjgsOTYgQEAgZ2w6OkVycm9yIFRleHR1cmVHTDo6Y29weVN1YkltYWdlKEdMZW51
bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6Ok9mZnNldAogICAgICAgICB9CiAgICAg
fQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlR0w6OmNvcHlUZXh0dXJlKENvbnRleHRJ
bXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VMZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1VubXVsdGlwbHlBbHBoYSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpCit7
CisgICAgY29uc3QgVGV4dHVyZUdMICpzb3VyY2VHTCAgICAgICAgICAgID0gR2V0SW1wbEFzPFRl
eHR1cmVHTD4oc291cmNlKTsKKyAgICBjb25zdCBnbDo6SW1hZ2VEZXNjICZzb3VyY2VJbWFnZURl
c2MgPSBzb3VyY2VHTC0+bVN0YXRlLmdldEltYWdlRGVzYyhzb3VyY2UtPmdldFRhcmdldCgpLCAw
KTsKKyAgICBnbDo6UmVjdGFuZ2xlIHNvdXJjZUFyZWEoMCwgMCwgc291cmNlSW1hZ2VEZXNjLnNp
emUud2lkdGgsIHNvdXJjZUltYWdlRGVzYy5zaXplLmhlaWdodCk7CisKKyAgICBHTGVudW0gc2l6
ZWRJbnRlcm5hbEZvcm1hdCA9IGdsOjpHZXRTaXplZEludGVybmFsRm9ybWF0KGludGVybmFsRm9y
bWF0LCB0eXBlKTsKKyAgICByZXNlcnZlVGV4SW1hZ2VUb0JlRmlsbGVkKGdldFRhcmdldCgpLCAw
LCBzaXplZEludGVybmFsRm9ybWF0LCBzb3VyY2VJbWFnZURlc2Muc2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludGVybmFsRm9ybWF0LCB0eXBlKTsKKworICAgIHJldHVybiBj
b3B5U3ViVGV4dHVyZUhlbHBlcih0YXJnZXQsIGxldmVsLCBnbDo6T2Zmc2V0KDAsIDAsIDApLCBz
b3VyY2VMZXZlbCwgc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50ZXJuYWxGb3JtYXQsIHVucGFja0ZsaXBZLCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tVbm11bHRpcGx5QWxwaGEsIHNvdXJj
ZSk7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlR0w6OnNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwg
c2l6ZV90IGxldmVscywgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAm
c2l6ZSkKK2dsOjpFcnJvciBUZXh0dXJlR0w6OmNvcHlTdWJUZXh0dXJlKENvbnRleHRJbXBsICpj
b250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZk
ZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNv
dXJjZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgdW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHVucGFja1VubXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpCiB7Ci0gICAgLy8g
VE9ETzogZW11bGF0ZSB0ZXh0dXJlIHN0b3JhZ2Ugd2l0aCBUZXhJbWFnZSBjYWxscyBpZiBvbiBH
TCB2ZXJzaW9uIDw0LjIgb3IgdGhlCi0gICAgLy8gQVJCX3RleHR1cmVfc3RvcmFnZSBleHRlbnNp
b24gaXMgbm90IGF2YWlsYWJsZS4KKyAgICBHTGVudW0gZGVzdEZvcm1hdCA9IG1TdGF0ZS5nZXRJ
bWFnZURlc2MobVN0YXRlLm1UYXJnZXQsIDApLmZvcm1hdC5mb3JtYXQ7CisgICAgcmV0dXJuIGNv
cHlTdWJUZXh0dXJlSGVscGVyKHRhcmdldCwgbGV2ZWwsIGRlc3RPZmZzZXQsIHNvdXJjZUxldmVs
LCBzb3VyY2VBcmVhLCBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnBhY2tGbGlwWSwgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwgdW5wYWNrVW5tdWx0aXBseUFs
cGhhLCBzb3VyY2UpOworfQogCitnbDo6RXJyb3IgVGV4dHVyZUdMOjpjb3B5U3ViVGV4dHVyZUhl
bHBlcihHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VMZXZlbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFy
ZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVz
dEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
dW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHVucGFja1VubXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpCit7
CisgICAgVGV4dHVyZUdMICpzb3VyY2VHTCAgICAgICAgICAgICAgICAgID0gR2V0SW1wbEFzPFRl
eHR1cmVHTD4oc291cmNlKTsKKyAgICBjb25zdCBnbDo6SW1hZ2VEZXNjICZzb3VyY2VJbWFnZURl
c2MgPSBzb3VyY2VHTC0+bVN0YXRlLmdldEltYWdlRGVzYyhzb3VyY2UtPmdldFRhcmdldCgpLCAw
KTsKKworICAgIC8vIENoZWNrIGlzIHRoaXMgaXMgYSBzaW1wbGUgY29weVN1YlRleHR1cmUgdGhh
dCBjYW4gYmUgZG9uZSB3aXRoIGEgY29weVRleFN1YkltYWdlCisgICAgYm9vbCBuZWVkc0x1bWFX
b3JrYXJvdW5kID0gc291cmNlR0wtPm1MZXZlbEluZm9bMF0ubHVtYVdvcmthcm91bmQuZW5hYmxl
ZDsKKworICAgIEdMZW51bSBzb3VyY2VGb3JtYXQgPSBzb3VyY2VJbWFnZURlc2MuZm9ybWF0LmZv
cm1hdDsKKyAgICBib29sIHNvdXJjZUZvcm1hdENvbnRhaW5TdXBlcnNldE9mRGVzdEZvcm1hdCA9
CisgICAgICAgIChzb3VyY2VGb3JtYXQgPT0gZGVzdEZvcm1hdCAmJiBzb3VyY2VGb3JtYXQgIT0g
R0xfQkdSQV9FWFQpIHx8CisgICAgICAgIChzb3VyY2VGb3JtYXQgPT0gR0xfUkdCQSAmJiBkZXN0
Rm9ybWF0ID09IEdMX1JHQik7CisKKyAgICBpZiAoc291cmNlLT5nZXRUYXJnZXQoKSA9PSBHTF9U
RVhUVVJFXzJEICYmIGdldFRhcmdldCgpID09IEdMX1RFWFRVUkVfMkQgJiYgIXVucGFja0ZsaXBZ
ICYmCisgICAgICAgIHVucGFja1ByZW11bHRpcGx5QWxwaGEgPT0gdW5wYWNrVW5tdWx0aXBseUFs
cGhhICYmICFuZWVkc0x1bWFXb3JrYXJvdW5kICYmCisgICAgICAgIHNvdXJjZUZvcm1hdENvbnRh
aW5TdXBlcnNldE9mRGVzdEZvcm1hdCkKKyAgICB7CisgICAgICAgIHJldHVybiBtQmxpdHRlci0+
Y29weVRleFN1YkltYWdlKHNvdXJjZUdMLCB0aGlzLCBzb3VyY2VBcmVhLCBkZXN0T2Zmc2V0KTsK
KyAgICB9CisKKyAgICAvLyBXZSBjYW4ndCB1c2UgY29weVRleFN1YkltYWdlLCBkbyBhIG1hbnVh
bCBjb3B5CisgICAgcmV0dXJuIG1CbGl0dGVyLT5jb3B5U3ViVGV4dHVyZSgKKyAgICAgICAgc291
cmNlR0wsIHNvdXJjZUxldmVsLCB0aGlzLCB0YXJnZXQsIGxldmVsLCBzb3VyY2VJbWFnZURlc2Mu
c2l6ZSwgc291cmNlQXJlYSwgZGVzdE9mZnNldCwKKyAgICAgICAgbmVlZHNMdW1hV29ya2Fyb3Vu
ZCwgc291cmNlR0wtPm1MZXZlbEluZm9bc291cmNlTGV2ZWxdLnNvdXJjZUZvcm1hdCwgdW5wYWNr
RmxpcFksCisgICAgICAgIHVucGFja1ByZW11bHRpcGx5QWxwaGEsIHVucGFja1VubXVsdGlwbHlB
bHBoYSk7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlR0w6OnNldFN0b3JhZ2UoQ29udGV4dEltcGwg
KmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWxzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKQorewog
ICAgIG5hdGl2ZWdsOjpUZXhTdG9yYWdlRm9ybWF0IHRleFN0b3JhZ2VGb3JtYXQgPQogICAgICAg
ICBuYXRpdmVnbDo6R2V0VGV4U3RvcmFnZUZvcm1hdChtRnVuY3Rpb25zLCBtV29ya2Fyb3VuZHMs
IGludGVybmFsRm9ybWF0KTsKIAotICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1TdGF0
ZS5tVGFyZ2V0LCBtVGV4dHVyZUlEKTsKLSAgICBpZiAoVXNlVGV4SW1hZ2UyRChtU3RhdGUubVRh
cmdldCkpCisgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUoZ2V0VGFyZ2V0KCksIG1UZXh0
dXJlSUQpOworICAgIGlmIChVc2VUZXhJbWFnZTJEKGdldFRhcmdldCgpKSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChzaXplLmRlcHRoID09IDEpOwogICAgICAgICBpZiAobUZ1bmN0aW9ucy0+dGV4
U3RvcmFnZTJEKQpAQCAtNjM1LDcgKzc0MSw3IEBAIGdsOjpFcnJvciBUZXh0dXJlR0w6OnNldFN0
b3JhZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVscywgR0xlbnVtIGludGVybmFsRm9yCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KHNpemUuaGVpZ2h0
ID4+IGxldmVsLCAxKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSk7
CiAKLSAgICAgICAgICAgICAgICBpZiAobVN0YXRlLm1UYXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkK
KyAgICAgICAgICAgICAgICBpZiAoZ2V0VGFyZ2V0KCkgPT0gR0xfVEVYVFVSRV8yRCkKICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcm5hbEZvcm1hdEluZm8u
Y29tcHJlc3NlZCkKICAgICAgICAgICAgICAgICAgICAgewpAQCAtNjU2LDcgKzc2Miw3IEBAIGds
OjpFcnJvciBUZXh0dXJlR0w6OnNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVs
cywgR0xlbnVtIGludGVybmFsRm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludGVybmFsRm9ybWF0SW5mby50eXBlLCBudWxscHRyKTsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlm
IChtU3RhdGUubVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQKQorICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGdldFRhcmdldCgpID09IEdMX1RFWFRVUkVfQ1VCRV9NQVApCiAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICBmb3IgKEdMZW51bSBmYWNlID0gZ2w6OkZpcnN0
Q3ViZU1hcFRleHR1cmVUYXJnZXQ7IGZhY2UgPD0gZ2w6Okxhc3RDdWJlTWFwVGV4dHVyZVRhcmdl
dDsgZmFjZSsrKQogICAgICAgICAgICAgICAgICAgICB7CkBAIC02ODcsNyArNzkzLDcgQEAgZ2w6
OkVycm9yIFRleHR1cmVHTDo6c2V0U3RvcmFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWxz
LCBHTGVudW0gaW50ZXJuYWxGb3IKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAg
ICBlbHNlIGlmIChVc2VUZXhJbWFnZTNEKG1TdGF0ZS5tVGFyZ2V0KSkKKyAgICBlbHNlIGlmIChV
c2VUZXhJbWFnZTNEKGdldFRhcmdldCgpKSkKICAgICB7CiAgICAgICAgIGlmIChtRnVuY3Rpb25z
LT50ZXhTdG9yYWdlM0QpCiAgICAgICAgIHsKQEAgLTcwOSw3ICs4MTUsNyBAQCBnbDo6RXJyb3Ig
VGV4dHVyZUdMOjpzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbHMsIEdMZW51
bSBpbnRlcm5hbEZvcgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGdsOjpFeHRlbnRz
IGxldmVsU2l6ZSgKICAgICAgICAgICAgICAgICAgICAgc3RkOjptYXgoc2l6ZS53aWR0aCA+PiBp
LCAxKSwgc3RkOjptYXgoc2l6ZS5oZWlnaHQgPj4gaSwgMSksCi0gICAgICAgICAgICAgICAgICAg
IG1TdGF0ZS5tVGFyZ2V0ID09IEdMX1RFWFRVUkVfM0QgPyBzdGQ6Om1heChzaXplLmRlcHRoID4+
IGksIDEpIDogc2l6ZS5kZXB0aCk7CisgICAgICAgICAgICAgICAgICAgIGdldFRhcmdldCgpID09
IEdMX1RFWFRVUkVfM0QgPyBzdGQ6Om1heChzaXplLmRlcHRoID4+IGksIDEpIDogc2l6ZS5kZXB0
aCk7CiAKICAgICAgICAgICAgICAgICBpZiAoaW50ZXJuYWxGb3JtYXRJbmZvLmNvbXByZXNzZWQp
CiAgICAgICAgICAgICAgICAgewpAQCAtNzM5LDcgKzg0NSwyOSBAQCBnbDo6RXJyb3IgVGV4dHVy
ZUdMOjpzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbHMsIEdMZW51bSBpbnRl
cm5hbEZvcgogCiAgICAgc2V0TGV2ZWxJbmZvKDAsIGxldmVscywgR2V0TGV2ZWxJbmZvKGludGVy
bmFsRm9ybWF0LCB0ZXhTdG9yYWdlRm9ybWF0LmludGVybmFsRm9ybWF0KSk7CiAKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30K
KworZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0U3RvcmFnZU11bHRpc2FtcGxlKENvbnRleHRJbXBs
ICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlv
bnMpCit7CisgICAgbmF0aXZlZ2w6OlRleFN0b3JhZ2VGb3JtYXQgdGV4U3RvcmFnZUZvcm1hdCA9
CisgICAgICAgIG5hdGl2ZWdsOjpHZXRUZXhTdG9yYWdlRm9ybWF0KG1GdW5jdGlvbnMsIG1Xb3Jr
YXJvdW5kcywgaW50ZXJuYWxGb3JtYXQpOworCisgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1
cmUobVN0YXRlLm1UYXJnZXQsIG1UZXh0dXJlSUQpOworCisgICAgQVNTRVJUKHNpemUuZGVwdGgg
PT0gMSk7CisKKyAgICBtRnVuY3Rpb25zLT50ZXhTdG9yYWdlMkRNdWx0aXNhbXBsZSh0YXJnZXQs
IHNhbXBsZXMsIHRleFN0b3JhZ2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIGZpeGVk
U2FtcGxlTG9jYXRpb25zKTsKKworICAgIHNldExldmVsSW5mbygwLCAxLCBHZXRMZXZlbEluZm8o
aW50ZXJuYWxGb3JtYXQsIHRleFN0b3JhZ2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQpKTsKKworICAg
IHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZUdMOjpzZXRJbWFn
ZUV4dGVybmFsKEdMZW51bSB0YXJnZXQsCkBAIC03NTAsMTAgKzg3OCwxMCBAQCBnbDo6RXJyb3Ig
VGV4dHVyZUdMOjpzZXRJbWFnZUV4dGVybmFsKEdMZW51bSB0YXJnZXQsCiAgICAgcmV0dXJuIGds
OjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlR0w6
OmdlbmVyYXRlTWlwbWFwKCkKK2dsOjpFcnJvciBUZXh0dXJlR0w6OmdlbmVyYXRlTWlwbWFwKENv
bnRleHRJbXBsICpjb250ZXh0SW1wbCkKIHsKLSAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVy
ZShtU3RhdGUubVRhcmdldCwgbVRleHR1cmVJRCk7Ci0gICAgbUZ1bmN0aW9ucy0+Z2VuZXJhdGVN
aXBtYXAobVN0YXRlLm1UYXJnZXQpOworICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKGdl
dFRhcmdldCgpLCBtVGV4dHVyZUlEKTsKKyAgICBtRnVuY3Rpb25zLT5nZW5lcmF0ZU1pcG1hcChn
ZXRUYXJnZXQoKSk7CiAKICAgICBjb25zdCBHTHVpbnQgZWZmZWN0aXZlQmFzZUxldmVsID0gbVN0
YXRlLmdldEVmZmVjdGl2ZUJhc2VMZXZlbCgpOwogICAgIGNvbnN0IEdMdWludCBtYXhMZXZlbCAg
ICAgICAgICAgPSBtU3RhdGUuZ2V0TWlwbWFwTWF4TGV2ZWwoKTsKQEAgLTc2MiwxNSArODkwLDE1
IEBAIGdsOjpFcnJvciBUZXh0dXJlR0w6OmdlbmVyYXRlTWlwbWFwKCkKIAogICAgIHNldExldmVs
SW5mbyhlZmZlY3RpdmVCYXNlTGV2ZWwsIG1heExldmVsIC0gZWZmZWN0aXZlQmFzZUxldmVsLCBt
TGV2ZWxJbmZvW2VmZmVjdGl2ZUJhc2VMZXZlbF0pOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgVGV4dHVy
ZUdMOjpiaW5kVGV4SW1hZ2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKQogewotICAgIEFTU0VSVCht
U3RhdGUubVRhcmdldCA9PSBHTF9URVhUVVJFXzJEKTsKKyAgICBBU1NFUlQoZ2V0VGFyZ2V0KCkg
PT0gR0xfVEVYVFVSRV8yRCk7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhpcyB0ZXh0dXJlIGlzIGJv
dW5kCi0gICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVN0YXRlLm1UYXJnZXQsIG1UZXh0
dXJlSUQpOworICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKGdldFRhcmdldCgpLCBtVGV4
dHVyZUlEKTsKIAogICAgIHNldExldmVsSW5mbygwLCAxLCBMZXZlbEluZm9HTCgpKTsKIH0KQEAg
LTc3OCwxMiArOTA2LDEyIEBAIHZvaWQgVGV4dHVyZUdMOjpiaW5kVGV4SW1hZ2UoZWdsOjpTdXJm
YWNlICpzdXJmYWNlKQogdm9pZCBUZXh0dXJlR0w6OnJlbGVhc2VUZXhJbWFnZSgpCiB7CiAgICAg
Ly8gTm90IGFsbCBTdXJmYWNlIGltcGxlbWVudGF0aW9ucyByZXNldCB0aGUgc2l6ZSBvZiBtaXAg
MCB3aGVuIHJlbGVhc2luZywgZG8gaXQgbWFudWFsbHkKLSAgICBBU1NFUlQobVN0YXRlLm1UYXJn
ZXQgPT0gR0xfVEVYVFVSRV8yRCk7CisgICAgQVNTRVJUKGdldFRhcmdldCgpID09IEdMX1RFWFRV
UkVfMkQpOwogCi0gICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVN0YXRlLm1UYXJnZXQs
IG1UZXh0dXJlSUQpOwotICAgIGlmIChVc2VUZXhJbWFnZTJEKG1TdGF0ZS5tVGFyZ2V0KSkKKyAg
ICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShnZXRUYXJnZXQoKSwgbVRleHR1cmVJRCk7Cisg
ICAgaWYgKFVzZVRleEltYWdlMkQoZ2V0VGFyZ2V0KCkpKQogICAgIHsKLSAgICAgICAgbUZ1bmN0
aW9ucy0+dGV4SW1hZ2UyRChtU3RhdGUubVRhcmdldCwgMCwgR0xfUkdCQSwgMCwgMCwgMCwgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgbUZ1bmN0aW9ucy0+dGV4SW1hZ2UyRChn
ZXRUYXJnZXQoKSwgMCwgR0xfUkdCQSwgMCwgMCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICB9CiAgICAg
ZWxzZQpAQCAtODA1LDcgKzkzMyw3IEBAIHZvaWQgVGV4dHVyZUdMOjpzeW5jU3RhdGUoY29uc3Qg
Z2w6OlRleHR1cmU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVN0YXRlLm1UYXJnZXQsIG1UZXh0
dXJlSUQpOworICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKGdldFRhcmdldCgpLCBtVGV4
dHVyZUlEKTsKIAogICAgIGlmIChkaXJ0eUJpdHNbZ2w6OlRleHR1cmU6OkRJUlRZX0JJVF9CQVNF
X0xFVkVMXSB8fCBkaXJ0eUJpdHNbZ2w6OlRleHR1cmU6OkRJUlRZX0JJVF9NQVhfTEVWRUxdKQog
ICAgIHsKQEAgLTgxOSw3MCArOTQ3LDg0IEBAIHZvaWQgVGV4dHVyZUdMOjpzeW5jU3RhdGUoY29u
c3QgZ2w6OlRleHR1cmU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQogICAgICAgICBzd2l0Y2ggKGRp
cnR5Qml0KQogICAgICAgICB7CiAgICAgICAgICAgICBjYXNlIGdsOjpUZXh0dXJlOjpESVJUWV9C
SVRfTUlOX0ZJTFRFUjoKLSAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJp
KG1TdGF0ZS5tVGFyZ2V0LCBHTF9URVhUVVJFX01JTl9GSUxURVIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0U2FtcGxlclN0YXRlKCkubWluRmls
dGVyKTsKKyAgICAgICAgICAgICAgICBtQXBwbGllZFNhbXBsZXIubWluRmlsdGVyID0gbVN0YXRl
LmdldFNhbXBsZXJTdGF0ZSgpLm1pbkZpbHRlcjsKKyAgICAgICAgICAgICAgICBtRnVuY3Rpb25z
LT50ZXhQYXJhbWV0ZXJpKGdldFRhcmdldCgpLCBHTF9URVhUVVJFX01JTl9GSUxURVIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQXBwbGllZFNhbXBsZXIubWlu
RmlsdGVyKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgZ2w6OlRl
eHR1cmU6OkRJUlRZX0JJVF9NQUdfRklMVEVSOgotICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMt
PnRleFBhcmFtZXRlcmkobVN0YXRlLm1UYXJnZXQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRTYW1wbGVy
U3RhdGUoKS5tYWdGaWx0ZXIpOworICAgICAgICAgICAgICAgIG1BcHBsaWVkU2FtcGxlci5tYWdG
aWx0ZXIgPSBtU3RhdGUuZ2V0U2FtcGxlclN0YXRlKCkubWFnRmlsdGVyOworICAgICAgICAgICAg
ICAgIG1GdW5jdGlvbnMtPnRleFBhcmFtZXRlcmkoZ2V0VGFyZ2V0KCksIEdMX1RFWFRVUkVfTUFH
X0ZJTFRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1BcHBs
aWVkU2FtcGxlci5tYWdGaWx0ZXIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBnbDo6VGV4dHVyZTo6RElSVFlfQklUX1dSQVBfUzoKLSAgICAgICAgICAgICAgICBt
RnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJpKG1TdGF0ZS5tVGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBf
UywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRT
YW1wbGVyU3RhdGUoKS53cmFwUyk7CisgICAgICAgICAgICAgICAgbUFwcGxpZWRTYW1wbGVyLndy
YXBTID0gbVN0YXRlLmdldFNhbXBsZXJTdGF0ZSgpLndyYXBTOworICAgICAgICAgICAgICAgIG1G
dW5jdGlvbnMtPnRleFBhcmFtZXRlcmkoZ2V0VGFyZ2V0KCksIEdMX1RFWFRVUkVfV1JBUF9TLCBt
QXBwbGllZFNhbXBsZXIud3JhcFMpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBnbDo6VGV4dHVyZTo6RElSVFlfQklUX1dSQVBfVDoKLSAgICAgICAgICAgICAgICBt
RnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJpKG1TdGF0ZS5tVGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBf
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRT
YW1wbGVyU3RhdGUoKS53cmFwVCk7CisgICAgICAgICAgICAgICAgbUFwcGxpZWRTYW1wbGVyLndy
YXBUID0gbVN0YXRlLmdldFNhbXBsZXJTdGF0ZSgpLndyYXBUOworICAgICAgICAgICAgICAgIG1G
dW5jdGlvbnMtPnRleFBhcmFtZXRlcmkoZ2V0VGFyZ2V0KCksIEdMX1RFWFRVUkVfV1JBUF9ULCBt
QXBwbGllZFNhbXBsZXIud3JhcFQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBnbDo6VGV4dHVyZTo6RElSVFlfQklUX1dSQVBfUjoKLSAgICAgICAgICAgICAgICBt
RnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJpKG1TdGF0ZS5tVGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBf
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRT
YW1wbGVyU3RhdGUoKS53cmFwUik7CisgICAgICAgICAgICAgICAgbUFwcGxpZWRTYW1wbGVyLndy
YXBSID0gbVN0YXRlLmdldFNhbXBsZXJTdGF0ZSgpLndyYXBSOworICAgICAgICAgICAgICAgIG1G
dW5jdGlvbnMtPnRleFBhcmFtZXRlcmkoZ2V0VGFyZ2V0KCksIEdMX1RFWFRVUkVfV1JBUF9SLCBt
QXBwbGllZFNhbXBsZXIud3JhcFIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBnbDo6VGV4dHVyZTo6RElSVFlfQklUX01BWF9BTklTT1RST1BZOgotICAgICAgICAg
ICAgICAgIG1GdW5jdGlvbnMtPnRleFBhcmFtZXRlcmYobVN0YXRlLm1UYXJnZXQsIEdMX1RFWFRV
UkVfTUFYX0FOSVNPVFJPUFlfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbVN0YXRlLmdldFNhbXBsZXJTdGF0ZSgpLm1heEFuaXNvdHJvcHkpOworICAgICAg
ICAgICAgICAgIG1BcHBsaWVkU2FtcGxlci5tYXhBbmlzb3Ryb3B5ID0gbVN0YXRlLmdldFNhbXBs
ZXJTdGF0ZSgpLm1heEFuaXNvdHJvcHk7CisgICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4
UGFyYW1ldGVyZihnZXRUYXJnZXQoKSwgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQXBwbGllZFNhbXBsZXIu
bWF4QW5pc290cm9weSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IGdsOjpUZXh0dXJlOjpESVJUWV9CSVRfTUlOX0xPRDoKLSAgICAgICAgICAgICAgICBtRnVuY3Rp
b25zLT50ZXhQYXJhbWV0ZXJmKG1TdGF0ZS5tVGFyZ2V0LCBHTF9URVhUVVJFX01JTl9MT0QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0U2FtcGxl
clN0YXRlKCkubWluTG9kKTsKKyAgICAgICAgICAgICAgICBtQXBwbGllZFNhbXBsZXIubWluTG9k
ID0gbVN0YXRlLmdldFNhbXBsZXJTdGF0ZSgpLm1pbkxvZDsKKyAgICAgICAgICAgICAgICBtRnVu
Y3Rpb25zLT50ZXhQYXJhbWV0ZXJmKGdldFRhcmdldCgpLCBHTF9URVhUVVJFX01JTl9MT0QsIG1B
cHBsaWVkU2FtcGxlci5taW5Mb2QpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBnbDo6VGV4dHVyZTo6RElSVFlfQklUX01BWF9MT0Q6Ci0gICAgICAgICAgICAgICAg
bUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyZihtU3RhdGUubVRhcmdldCwgR0xfVEVYVFVSRV9NQVhf
TE9ELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRlLmdl
dFNhbXBsZXJTdGF0ZSgpLm1heExvZCk7CisgICAgICAgICAgICAgICAgbUFwcGxpZWRTYW1wbGVy
Lm1heExvZCA9IG1TdGF0ZS5nZXRTYW1wbGVyU3RhdGUoKS5tYXhMb2Q7CisgICAgICAgICAgICAg
ICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyZihnZXRUYXJnZXQoKSwgR0xfVEVYVFVSRV9NQVhf
TE9ELCBtQXBwbGllZFNhbXBsZXIubWF4TG9kKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgZ2w6OlRleHR1cmU6OkRJUlRZX0JJVF9DT01QQVJFX01PREU6Ci0gICAg
ICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyaShtU3RhdGUubVRhcmdldCwgR0xf
VEVYVFVSRV9DT01QQVJFX01PREUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtU3RhdGUuZ2V0U2FtcGxlclN0YXRlKCkuY29tcGFyZU1vZGUpOworICAgICAgICAg
ICAgICAgIG1BcHBsaWVkU2FtcGxlci5jb21wYXJlTW9kZSA9IG1TdGF0ZS5nZXRTYW1wbGVyU3Rh
dGUoKS5jb21wYXJlTW9kZTsKKyAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT50ZXhQYXJhbWV0
ZXJpKGdldFRhcmdldCgpLCBHTF9URVhUVVJFX0NPTVBBUkVfTU9ERSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1BcHBsaWVkU2FtcGxlci5jb21wYXJlTW9kZSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGdsOjpUZXh0dXJlOjpE
SVJUWV9CSVRfQ09NUEFSRV9GVU5DOgotICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRleFBh
cmFtZXRlcmkobVN0YXRlLm1UYXJnZXQsIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRlLmdldFNhbXBsZXJTdGF0
ZSgpLmNvbXBhcmVGdW5jKTsKKyAgICAgICAgICAgICAgICBtQXBwbGllZFNhbXBsZXIuY29tcGFy
ZUZ1bmMgPSBtU3RhdGUuZ2V0U2FtcGxlclN0YXRlKCkuY29tcGFyZUZ1bmM7CisgICAgICAgICAg
ICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyaShnZXRUYXJnZXQoKSwgR0xfVEVYVFVSRV9D
T01QQVJFX0ZVTkMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
QXBwbGllZFNhbXBsZXIuY29tcGFyZUZ1bmMpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBnbDo6VGV4dHVyZTo6RElSVFlfQklUX1NSR0JfREVDT0RFOgorICAgICAg
ICAgICAgICAgIG1BcHBsaWVkU2FtcGxlci5zUkdCRGVjb2RlID0gbVN0YXRlLmdldFNhbXBsZXJT
dGF0ZSgpLnNSR0JEZWNvZGU7CisgICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1l
dGVyaShnZXRUYXJnZXQoKSwgR0xfVEVYVFVSRV9TUkdCX0RFQ09ERV9FWFQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQXBwbGllZFNhbXBsZXIuc1JHQkRlY29k
ZSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIC8vIFRleHR1cmUgc3Rh
dGUKICAgICAgICAgICAgIGNhc2UgZ2w6OlRleHR1cmU6OkRJUlRZX0JJVF9TV0laWkxFX1JFRDoK
ICAgICAgICAgICAgICAgICBzeW5jVGV4dHVyZVN0YXRlU3dpenpsZShtRnVuY3Rpb25zLCBHTF9U
RVhUVVJFX1NXSVpaTEVfUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtU3RhdGUuZ2V0U3dpenpsZVN0YXRlKCkuc3dpenpsZVJlZCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRlLmdldFN3aXp6bGVTdGF0ZSgpLnN3aXp6bGVS
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1BcHBsaWVkU3dp
enpsZS5zd2l6emxlUmVkKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgZ2w6OlRleHR1cmU6OkRJUlRZX0JJVF9TV0laWkxFX0dSRUVOOgogICAgICAgICAgICAgICAg
IHN5bmNUZXh0dXJlU3RhdGVTd2l6emxlKG1GdW5jdGlvbnMsIEdMX1RFWFRVUkVfU1dJWlpMRV9H
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRTd2l6
emxlU3RhdGUoKS5zd2l6emxlR3JlZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1TdGF0ZS5nZXRTd2l6emxlU3RhdGUoKS5zd2l6emxlR3JlZW4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1BcHBsaWVkU3dpenpsZS5zd2l6emxl
R3JlZW4pOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBnbDo6VGV4
dHVyZTo6RElSVFlfQklUX1NXSVpaTEVfQkxVRToKICAgICAgICAgICAgICAgICBzeW5jVGV4dHVy
ZVN0YXRlU3dpenpsZShtRnVuY3Rpb25zLCBHTF9URVhUVVJFX1NXSVpaTEVfQiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0U3dpenpsZVN0YXRlKCku
c3dpenpsZUJsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1T
dGF0ZS5nZXRTd2l6emxlU3RhdGUoKS5zd2l6emxlQmx1ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmbUFwcGxpZWRTd2l6emxlLnN3aXp6bGVCbHVlKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgZ2w6OlRleHR1cmU6OkRJUlRZX0JJ
VF9TV0laWkxFX0FMUEhBOgogICAgICAgICAgICAgICAgIHN5bmNUZXh0dXJlU3RhdGVTd2l6emxl
KG1GdW5jdGlvbnMsIEdMX1RFWFRVUkVfU1dJWlpMRV9BLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRTd2l6emxlU3RhdGUoKS5zd2l6emxlQWxwaGEp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRTd2l6
emxlU3RhdGUoKS5zd2l6emxlQWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJm1BcHBsaWVkU3dpenpsZS5zd2l6emxlQWxwaGEpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBnbDo6VGV4dHVyZTo6RElSVFlfQklUX0JBU0VfTEVW
RUw6Ci0gICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyaShtU3RhdGUubVRh
cmdldCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbVN0YXRlLmdldEVmZmVjdGl2ZUJhc2VMZXZlbCgpKTsKKyAgICAgICAg
ICAgICAgICBtQXBwbGllZEJhc2VMZXZlbCA9IG1TdGF0ZS5nZXRFZmZlY3RpdmVCYXNlTGV2ZWwo
KTsKKyAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJpKGdldFRhcmdldCgp
LCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIG1BcHBsaWVkQmFzZUxldmVsKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgZ2w6OlRleHR1cmU6OkRJUlRZX0JJVF9NQVhf
TEVWRUw6Ci0gICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyaShtU3RhdGUu
bVRhcmdldCwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0RWZmZWN0aXZlTWF4TGV2ZWwoKSk7CisgICAgICAg
ICAgICAgICAgbUFwcGxpZWRNYXhMZXZlbCA9IG1TdGF0ZS5nZXRFZmZlY3RpdmVNYXhMZXZlbCgp
OworICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRleFBhcmFtZXRlcmkoZ2V0VGFyZ2V0KCks
IEdMX1RFWFRVUkVfTUFYX0xFVkVMLCBtQXBwbGllZE1heExldmVsKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgZ2w6OlRleHR1cmU6OkRJUlRZX0JJVF9VU0FHRToK
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTkwMCw3ICsxMDQyLDYzIEBAIGJvb2wgVGV4dHVy
ZUdMOjpoYXNBbnlEaXJ0eUJpdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1Mb2NhbERpcnR5Qml0cy5h
bnkoKTsKIH0KIAotdm9pZCBUZXh0dXJlR0w6OnN5bmNUZXh0dXJlU3RhdGVTd2l6emxlKGNvbnN0
IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIEdMZW51bSBuYW1lLCBHTGVudW0gdmFsdWUpCit2b2lk
IFRleHR1cmVHTDo6c2V0QmFzZUxldmVsKEdMdWludCBiYXNlTGV2ZWwpCit7CisgICAgaWYgKGJh
c2VMZXZlbCAhPSBtQXBwbGllZEJhc2VMZXZlbCkKKyAgICB7CisgICAgICAgIG1BcHBsaWVkQmFz
ZUxldmVsID0gYmFzZUxldmVsOworICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpUZXh0
dXJlOjpESVJUWV9CSVRfQkFTRV9MRVZFTCk7CisKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+Ymlu
ZFRleHR1cmUoZ2V0VGFyZ2V0KCksIG1UZXh0dXJlSUQpOworICAgICAgICBtRnVuY3Rpb25zLT50
ZXhQYXJhbWV0ZXJpKGdldFRhcmdldCgpLCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIGJhc2VMZXZl
bCk7CisgICAgfQorfQorCit2b2lkIFRleHR1cmVHTDo6c2V0TWluRmlsdGVyKEdMZW51bSBmaWx0
ZXIpCit7CisgICAgaWYgKGZpbHRlciAhPSBtQXBwbGllZFNhbXBsZXIubWluRmlsdGVyKQorICAg
IHsKKyAgICAgICAgbUFwcGxpZWRTYW1wbGVyLm1pbkZpbHRlciA9IGZpbHRlcjsKKyAgICAgICAg
bUxvY2FsRGlydHlCaXRzLnNldChnbDo6VGV4dHVyZTo6RElSVFlfQklUX01JTl9GSUxURVIpOwor
CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKGdldFRhcmdldCgpLCBtVGV4dHVy
ZUlEKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyaShnZXRUYXJnZXQoKSwgR0xf
VEVYVFVSRV9NSU5fRklMVEVSLCBmaWx0ZXIpOworICAgIH0KK30KK3ZvaWQgVGV4dHVyZUdMOjpz
ZXRNYWdGaWx0ZXIoR0xlbnVtIGZpbHRlcikKK3sKKyAgICBpZiAoZmlsdGVyICE9IG1BcHBsaWVk
U2FtcGxlci5tYWdGaWx0ZXIpCisgICAgeworICAgICAgICBtQXBwbGllZFNhbXBsZXIubWFnRmls
dGVyID0gZmlsdGVyOworICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpUZXh0dXJlOjpE
SVJUWV9CSVRfTUFHX0ZJTFRFUik7CisKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1
cmUoZ2V0VGFyZ2V0KCksIG1UZXh0dXJlSUQpOworICAgICAgICBtRnVuY3Rpb25zLT50ZXhQYXJh
bWV0ZXJpKGdldFRhcmdldCgpLCBHTF9URVhUVVJFX01BR19GSUxURVIsIGZpbHRlcik7CisgICAg
fQorfQorCit2b2lkIFRleHR1cmVHTDo6c2V0U3dpenpsZShHTGludCBzd2l6emxlWzRdKQorewor
ICAgIGdsOjpTd2l6emxlU3RhdGUgcmVzdWx0aW5nU3dpenpsZSA9CisgICAgICAgIGdsOjpTd2l6
emxlU3RhdGUoc3dpenpsZVswXSwgc3dpenpsZVsxXSwgc3dpenpsZVsyXSwgc3dpenpsZVszXSk7
CisKKyAgICBpZiAocmVzdWx0aW5nU3dpenpsZSAhPSBtQXBwbGllZFN3aXp6bGUpCisgICAgewor
ICAgICAgICBtQXBwbGllZFN3aXp6bGUgPSByZXN1bHRpbmdTd2l6emxlOworICAgICAgICBtTG9j
YWxEaXJ0eUJpdHMuc2V0KGdsOjpUZXh0dXJlOjpESVJUWV9CSVRfU1dJWlpMRV9SRUQpOworICAg
ICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpUZXh0dXJlOjpESVJUWV9CSVRfU1dJWlpMRV9H
UkVFTik7CisgICAgICAgIG1Mb2NhbERpcnR5Qml0cy5zZXQoZ2w6OlRleHR1cmU6OkRJUlRZX0JJ
VF9TV0laWkxFX0JMVUUpOworICAgICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpUZXh0dXJl
OjpESVJUWV9CSVRfU1dJWlpMRV9BTFBIQSk7CisKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+Ymlu
ZFRleHR1cmUoZ2V0VGFyZ2V0KCksIG1UZXh0dXJlSUQpOworICAgICAgICBtRnVuY3Rpb25zLT50
ZXhQYXJhbWV0ZXJpdihnZXRUYXJnZXQoKSwgR0xfVEVYVFVSRV9TV0laWkxFX1JHQkEsIHN3aXp6
bGUpOworICAgIH0KK30KKwordm9pZCBUZXh0dXJlR0w6OnN5bmNUZXh0dXJlU3RhdGVTd2l6emxl
KGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSAqb3V0VmFsdWUpCiB7CiAgICAgY29uc3QgTGV2ZWxJbmZvR0wgJmxl
dmVsSW5mbyA9IG1MZXZlbEluZm9bbVN0YXRlLmdldEVmZmVjdGl2ZUJhc2VMZXZlbCgpXTsKICAg
ICBHTGVudW0gcmVzdWx0U3dpenpsZSAgICAgICAgID0gdmFsdWU7CkBAIC05MDgsOCArMTEwNiw2
IEBAIHZvaWQgVGV4dHVyZUdMOjpzeW5jVGV4dHVyZVN0YXRlU3dpenpsZShjb25zdCBGdW5jdGlv
bnNHTCAqZnVuY3Rpb25zLCBHTGVudW0gbmFtCiAgICAgewogICAgICAgICBpZiAobGV2ZWxJbmZv
Lmx1bWFXb3JrYXJvdW5kLmVuYWJsZWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFVOVVNFRF9B
U1NFUlRJT05fVkFSSUFCTEUobGV2ZWxJbmZvLmx1bWFXb3JrYXJvdW5kLndvcmthcm91bmRGb3Jt
YXQpOwotCiAgICAgICAgICAgICBzd2l0Y2ggKHZhbHVlKQogICAgICAgICAgICAgewogICAgICAg
ICAgICAgY2FzZSBHTF9SRUQ6CkBAIC0xMDEwLDcgKzEyMDYsOCBAQCB2b2lkIFRleHR1cmVHTDo6
c3luY1RleHR1cmVTdGF0ZVN3aXp6bGUoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgR0xl
bnVtIG5hbQogCiAgICAgfQogCi0gICAgZnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJpKG1TdGF0ZS5t
VGFyZ2V0LCBuYW1lLCByZXN1bHRTd2l6emxlKTsKKyAgICAqb3V0VmFsdWUgPSByZXN1bHRTd2l6
emxlOworICAgIGZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyaShnZXRUYXJnZXQoKSwgbmFtZSwgcmVz
dWx0U3dpenpsZSk7CiB9CiAKIHZvaWQgVGV4dHVyZUdMOjpzZXRMZXZlbEluZm8oc2l6ZV90IGxl
dmVsLCBzaXplX3QgbGV2ZWxDb3VudCwgY29uc3QgTGV2ZWxJbmZvR0wgJmxldmVsSW5mbykKQEAg
LTEwMzYsNCArMTIzMyw4IEBAIEdMdWludCBUZXh0dXJlR0w6OmdldFRleHR1cmVJRCgpIGNvbnN0
CiAgICAgcmV0dXJuIG1UZXh0dXJlSUQ7CiB9CiAKK0dMZW51bSBUZXh0dXJlR0w6OmdldFRhcmdl
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0ZS5tVGFyZ2V0OworfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1RleHR1
cmVHTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L1RleHR1cmVHTC5oCmluZGV4IDA2ODI4NGM1YjdiNzZjOGNhMzAwMGVhMTY2MjU4ZWIwMmY0MTll
ZTMuLmUzMDJmOTM1MDI5NjFiYTM4OTczZDY4ZWFhMjgzZTEwYTU1YTE1ZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJl
R0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvVGV4dHVyZUdMLmgKQEAgLTU5LDI4ICs1OSwxMDMgQEAgY2xhc3MgVGV4dHVyZUdMIDogcHVi
bGljIFRleHR1cmVJbXBsCiAgICAgICAgICAgICAgIEJsaXRHTCAqYmxpdHRlcik7CiAgICAgflRl
eHR1cmVHTCgpIG92ZXJyaWRlOwogCi0gICAgZ2w6OkVycm9yIHNldEltYWdlKEdMZW51bSB0YXJn
ZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50
cyAmc2l6ZSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBp
eGVscykgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIHNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQs
IHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OkJveCAmYXJlYSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVt
IHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0
YXRlICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7Ci0KLSAgICBnbDo6
RXJyb3Igc2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgR0xl
bnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ss
IHNpemVfdCBpbWFnZVNpemUsIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAg
Z2w6OkVycm9yIHNldENvbXByZXNzZWRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2
ZWwsIGNvbnN0IGdsOjpCb3ggJmFyZWEsIEdMZW51bSBmb3JtYXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBz
aXplX3QgaW1hZ2VTaXplLCBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwotCi0gICAg
Z2w6OkVycm9yIGNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGds
OjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICBnbDo6
RXJyb3Igc2V0SW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAm
dW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92
ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dElt
cGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CisK
KyAgICBnbDo6RXJyb3Igc2V0Q29tcHJlc3NlZEltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1w
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVy
cmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0Q29tcHJlc3NlZFN1YkltYWdlKENvbnRleHRJbXBsICpj
b250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0
YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aW1hZ2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBjb3B5SW1hZ2UoQ29udGV4
dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9y
IGNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpPZmZz
ZXQgJmRlc3RPZmZzZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgZ2w6
OkVycm9yIGNvcHlTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9m
ZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6RnJhbWVidWZmZXIgKnNvdXJjZSkgb3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJyb3Igc2V0U3Rv
cmFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQs
IGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY29weVRl
eHR1cmUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBzb3VyY2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1
bnBhY2tGbGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0
aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1VubXVsdGlw
bHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmUgKnNv
dXJjZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGNvcHlTdWJUZXh0dXJlKENvbnRleHRJbXBs
ICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc291cmNlTGV2ZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpIG92ZXJyaWRlOworICAg
IGdsOjpFcnJvciBjb3B5U3ViVGV4dHVyZUhlbHBlcihHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VMZXZlbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJl
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RGb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrRmxpcFksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlB
bHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11
bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpUZXh0dXJlICpzb3VyY2UpOworCisgICAgZ2w6OkVycm9yIHNldFN0b3JhZ2UoQ29udGV4dElt
cGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVscywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIHNl
dFN0b3JhZ2VNdWx0aXNhbXBsZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBmaXhlZFNhbXBsZUxvY2F0aW9ucykg
b3ZlcnJpZGU7CiAKICAgICBnbDo6RXJyb3Igc2V0SW1hZ2VFeHRlcm5hbChHTGVudW0gdGFyZ2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3RyZWFtICpzdHJlYW0sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpTdHJlYW06OkdMVGV4dHVy
ZURlc2NyaXB0aW9uICZkZXNjKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciBnZW5lcmF0ZU1p
cG1hcCgpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcChDb250ZXh0SW1w
bCAqY29udGV4dEltcGwpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBiaW5kVGV4SW1hZ2UoZWdsOjpT
dXJmYWNlICpzdXJmYWNlKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbGVhc2VUZXhJbWFnZSgpIG92
ZXJyaWRlOwpAQCAtODgsMTIgKzE2MywxOCBAQCBjbGFzcyBUZXh0dXJlR0wgOiBwdWJsaWMgVGV4
dHVyZUltcGwKICAgICBnbDo6RXJyb3Igc2V0RUdMSW1hZ2VUYXJnZXQoR0xlbnVtIHRhcmdldCwg
ZWdsOjpJbWFnZSAqaW1hZ2UpIG92ZXJyaWRlOwogCiAgICAgR0x1aW50IGdldFRleHR1cmVJRCgp
IGNvbnN0OwotCi0gICAgdm9pZCBzZXRCYXNlTGV2ZWwoR0x1aW50KSBvdmVycmlkZSB7fQorICAg
IEdMZW51bSBnZXRUYXJnZXQoKSBjb25zdDsKIAogICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGds
OjpUZXh0dXJlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNB
bnlEaXJ0eUJpdCgpIGNvbnN0OwogCisgICAgdm9pZCBzZXRCYXNlTGV2ZWwoR0x1aW50IGJhc2VM
ZXZlbCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHNldE1pbkZpbHRlcihHTGVudW0gZmlsdGVyKTsK
KyAgICB2b2lkIHNldE1hZ0ZpbHRlcihHTGVudW0gZmlsdGVyKTsKKworICAgIHZvaWQgc2V0U3dp
enpsZShHTGludCBzd2l6emxlWzRdKTsKKwogICBwcml2YXRlOgogICAgIHZvaWQgc2V0SW1hZ2VI
ZWxwZXIoR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZl
bCwKQEAgLTEwMiw2ICsxODMsNyBAQCBjbGFzcyBUZXh0dXJlR0wgOiBwdWJsaWMgVGV4dHVyZUlt
cGwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QgKnBpeGVscyk7CisgICAgLy8gVGhpcyBjaGFuZ2VzIHRoZSBjdXJyZW50IHBpeGVsIHVu
cGFjayBzdGF0ZSB0aGF0IHdpbGwgaGF2ZSB0byBiZSByZWFwcGxpZWQuCiAgICAgdm9pZCByZXNl
cnZlVGV4SW1hZ2VUb0JlRmlsbGVkKEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LApAQCAtMTI0LDcgKzIwNiwxMCBAQCBjbGFz
cyBUZXh0dXJlR0wgOiBwdWJsaWMgVGV4dHVyZUltcGwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KnBpeGVscyk7CiAKLSAgICB2b2lkIHN5bmNUZXh0dXJlU3RhdGVTd2l6emxlKGNvbnN0IEZ1bmN0
aW9uc0dMICpmdW5jdGlvbnMsIEdMZW51bSBuYW1lLCBHTGVudW0gdmFsdWUpOworICAgIHZvaWQg
c3luY1RleHR1cmVTdGF0ZVN3aXp6bGUoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtICpvdXRWYWx1ZSk7CiAKICAgICB2b2lkIHNldExldmVsSW5mbyhz
aXplX3QgbGV2ZWwsIHNpemVfdCBsZXZlbENvdW50LCBjb25zdCBMZXZlbEluZm9HTCAmbGV2ZWxJ
bmZvKTsKIApAQCAtMTM2LDcgKzIyMSwxMSBAQCBjbGFzcyBUZXh0dXJlR0wgOiBwdWJsaWMgVGV4
dHVyZUltcGwKICAgICBzdGQ6OnZlY3RvcjxMZXZlbEluZm9HTD4gbUxldmVsSW5mbzsKICAgICBn
bDo6VGV4dHVyZTo6RGlydHlCaXRzIG1Mb2NhbERpcnR5Qml0czsKIAotICAgIG11dGFibGUgZ2w6
OlRleHR1cmVTdGF0ZSBtQXBwbGllZFRleHR1cmVTdGF0ZTsKKyAgICBnbDo6U3dpenpsZVN0YXRl
IG1BcHBsaWVkU3dpenpsZTsKKyAgICBnbDo6U2FtcGxlclN0YXRlIG1BcHBsaWVkU2FtcGxlcjsK
KyAgICBHTHVpbnQgbUFwcGxpZWRCYXNlTGV2ZWw7CisgICAgR0x1aW50IG1BcHBsaWVkTWF4TGV2
ZWw7CisKICAgICBHTHVpbnQgbVRleHR1cmVJRDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9WZXJ0ZXhBcnJheUdMLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9WZXJ0
ZXhBcnJheUdMLmNwcAppbmRleCAxZTdmYTAzMGZkMzRjZDdmYTIwNTM3YmE4M2EwN2VjMDliOWY5
MmEzLi4xODNiYWE0Y2I3NTNiNGU4YTkzMWNiMzRkNjdkODYyODM4NzJjMjQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVmVydGV4
QXJyYXlHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL1ZlcnRleEFycmF5R0wuY3BwCkBAIC04LDcgKzgsNyBAQAogCiAjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvZ2wvVmVydGV4QXJyYXlHTC5oIgogCi0jaW5jbHVkZSAiY29tbW9u
L0JpdFNldEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiY29tbW9uL2JpdHNldF91dGlscy5oIgogI2lu
Y2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgogI2lu
Y2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKQEAgLTI2LDExICsyNiwxMSBAQCBuYW1lc3BhY2Ug
cngKIHsKIG5hbWVzcGFjZQogewotYm9vbCBBdHRyaWJ1dGVOZWVkc1N0cmVhbWluZyhjb25zdCBW
ZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSkKKy8vIFdhcm5pbmc6IHlvdSBzaG91bGQgZW5zdXJl
IGJpbmRpbmcgcmVhbGx5IG1hdGNoZXMgYXR0cmliLmJpbmRpbmdJbmRleCBiZWZvcmUgdXNpbmcg
dGhpcyBmdW5jdGlvbi4KK2Jvb2wgQXR0cmlidXRlTmVlZHNTdHJlYW1pbmcoY29uc3QgVmVydGV4
QXR0cmlidXRlICZhdHRyaWIsIGNvbnN0IFZlcnRleEJpbmRpbmcgJmJpbmRpbmcpCiB7Ci0gICAg
cmV0dXJuIChhdHRyaWJ1dGUuZW5hYmxlZCAmJiBhdHRyaWJ1dGUuYnVmZmVyLmdldCgpID09IG51
bGxwdHIpOworICAgIHJldHVybiAoYXR0cmliLmVuYWJsZWQgJiYgYmluZGluZy5idWZmZXIuZ2V0
KCkgPT0gbnVsbHB0cik7CiB9Ci0KIH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKIAogVmVydGV4
QXJyYXlHTDo6VmVydGV4QXJyYXlHTChjb25zdCBWZXJ0ZXhBcnJheVN0YXRlICZzdGF0ZSwKQEAg
LTQxLDYgKzQxLDcgQEAgVmVydGV4QXJyYXlHTDo6VmVydGV4QXJyYXlHTChjb25zdCBWZXJ0ZXhB
cnJheVN0YXRlICZzdGF0ZSwKICAgICAgIG1TdGF0ZU1hbmFnZXIoc3RhdGVNYW5hZ2VyKSwKICAg
ICAgIG1WZXJ0ZXhBcnJheUlEKDApLAogICAgICAgbUFwcGxpZWRFbGVtZW50QXJyYXlCdWZmZXIo
KSwKKyAgICAgIG1BcHBsaWVkQmluZGluZ3Moc3RhdGUuZ2V0TWF4QmluZGluZ3MoKSksCiAgICAg
ICBtU3RyZWFtaW5nRWxlbWVudEFycmF5QnVmZmVyU2l6ZSgwKSwKICAgICAgIG1TdHJlYW1pbmdF
bGVtZW50QXJyYXlCdWZmZXIoMCksCiAgICAgICBtU3RyZWFtaW5nQXJyYXlCdWZmZXJTaXplKDAp
LApAQCAtNTAsMTAgKzUxLDEyIEBAIFZlcnRleEFycmF5R0w6OlZlcnRleEFycmF5R0woY29uc3Qg
VmVydGV4QXJyYXlTdGF0ZSAmc3RhdGUsCiAgICAgQVNTRVJUKG1TdGF0ZU1hbmFnZXIpOwogICAg
IG1GdW5jdGlvbnMtPmdlblZlcnRleEFycmF5cygxLCAmbVZlcnRleEFycmF5SUQpOwogCi0gICAg
Ly8gU2V0IHRoZSBjYWNoZWQgdmVydGV4IGF0dHJpYnV0ZSBhcnJheSBzaXplCi0gICAgR0xpbnQg
bWF4VmVydGV4QXR0cmlicyA9IDA7Ci0gICAgbUZ1bmN0aW9ucy0+Z2V0SW50ZWdlcnYoR0xfTUFY
X1ZFUlRFWF9BVFRSSUJTLCAmbWF4VmVydGV4QXR0cmlicyk7Ci0gICAgbUFwcGxpZWRBdHRyaWJ1
dGVzLnJlc2l6ZShtYXhWZXJ0ZXhBdHRyaWJzKTsKKyAgICAvLyBTZXQgdGhlIGNhY2hlZCB2ZXJ0
ZXggYXR0cmlidXRlIGFycmF5IGFuZCB2ZXJ0ZXggYXR0cmlidXRlIGJpbmRpbmcgYXJyYXkgc2l6
ZQorICAgIEdMdWludCBtYXhWZXJ0ZXhBdHRyaWJzID0gc3RhdGljX2Nhc3Q8R0x1aW50PihzdGF0
ZS5nZXRNYXhBdHRyaWJzKCkpOworICAgIGZvciAoR0x1aW50IGkgPSAwOyBpIDwgbWF4VmVydGV4
QXR0cmliczsgaSsrKQorICAgIHsKKyAgICAgICAgbUFwcGxpZWRBdHRyaWJ1dGVzLmVtcGxhY2Vf
YmFjayhpKTsKKyAgICB9CiB9CiAKIFZlcnRleEFycmF5R0w6On5WZXJ0ZXhBcnJheUdMKCkKQEAg
LTYzLDE2ICs2NiwxNiBAQCBWZXJ0ZXhBcnJheUdMOjp+VmVydGV4QXJyYXlHTCgpCiAKICAgICBt
U3RhdGVNYW5hZ2VyLT5kZWxldGVCdWZmZXIobVN0cmVhbWluZ0VsZW1lbnRBcnJheUJ1ZmZlcik7
CiAgICAgbVN0cmVhbWluZ0VsZW1lbnRBcnJheUJ1ZmZlclNpemUgPSAwOwotICAgIG1TdHJlYW1p
bmdFbGVtZW50QXJyYXlCdWZmZXIgPSAwOworICAgIG1TdHJlYW1pbmdFbGVtZW50QXJyYXlCdWZm
ZXIgICAgID0gMDsKIAogICAgIG1TdGF0ZU1hbmFnZXItPmRlbGV0ZUJ1ZmZlcihtU3RyZWFtaW5n
QXJyYXlCdWZmZXIpOwogICAgIG1TdHJlYW1pbmdBcnJheUJ1ZmZlclNpemUgPSAwOwotICAgIG1T
dHJlYW1pbmdBcnJheUJ1ZmZlciA9IDA7CisgICAgbVN0cmVhbWluZ0FycmF5QnVmZmVyICAgICA9
IDA7CiAKICAgICBtQXBwbGllZEVsZW1lbnRBcnJheUJ1ZmZlci5zZXQobnVsbHB0cik7Ci0gICAg
Zm9yIChzaXplX3QgaWR4ID0gMDsgaWR4IDwgbUFwcGxpZWRBdHRyaWJ1dGVzLnNpemUoKTsgaWR4
KyspCisgICAgZm9yIChhdXRvICZiaW5kaW5nIDogbUFwcGxpZWRCaW5kaW5ncykKICAgICB7Ci0g
ICAgICAgIG1BcHBsaWVkQXR0cmlidXRlc1tpZHhdLmJ1ZmZlci5zZXQobnVsbHB0cik7CisgICAg
ICAgIGJpbmRpbmcuYnVmZmVyLnNldChudWxscHRyKTsKICAgICB9CiB9CiAKQEAgLTk3LDYgKzEw
MCwyMCBAQCBnbDo6RXJyb3IgVmVydGV4QXJyYXlHTDo6c3luY0RyYXdFbGVtZW50c1N0YXRlKGNv
bnN0IGdsOjpBdHRyaWJ1dGVzTWFzayAmYWN0aXZlQQogICAgICAgICAgICAgICAgICAgICAgICAg
IHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkLCBvdXRJbmRpY2VzKTsKIH0KIAorZ2w6OkVycm9yIFZl
cnRleEFycmF5R0w6OnN5bmNFbGVtZW50QXJyYXlTdGF0ZSgpIGNvbnN0Cit7CisgICAgZ2w6OkJ1
ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyID0gbURhdGEuZ2V0RWxlbWVudEFycmF5QnVmZmVyKCku
Z2V0KCk7CisgICAgQVNTRVJUKGVsZW1lbnRBcnJheUJ1ZmZlcik7CisgICAgaWYgKGVsZW1lbnRB
cnJheUJ1ZmZlciAhPSBtQXBwbGllZEVsZW1lbnRBcnJheUJ1ZmZlci5nZXQoKSkKKyAgICB7Cisg
ICAgICAgIGNvbnN0IEJ1ZmZlckdMICpidWZmZXJHTCA9IEdldEltcGxBczxCdWZmZXJHTD4oZWxl
bWVudEFycmF5QnVmZmVyKTsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+YmluZEJ1ZmZlcihHTF9F
TEVNRU5UX0FSUkFZX0JVRkZFUiwgYnVmZmVyR0wtPmdldEJ1ZmZlcklEKCkpOworICAgICAgICBt
QXBwbGllZEVsZW1lbnRBcnJheUJ1ZmZlci5zZXQoZWxlbWVudEFycmF5QnVmZmVyKTsKKyAgICB9
CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKwogZ2w6OkVycm9yIFZlcnRleEFycmF5
R0w6OnN5bmNEcmF3U3RhdGUoY29uc3QgZ2w6OkF0dHJpYnV0ZXNNYXNrICZhY3RpdmVBdHRyaWJ1
dGVzTWFzaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZp
cnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKQEAgLTEwOCwxMCArMTI1LDEyIEBAIGdsOjpFcnJvciBWZXJ0ZXhBcnJheUdMOjpzeW5jRHJh
d1N0YXRlKGNvbnN0IGdsOjpBdHRyaWJ1dGVzTWFzayAmYWN0aXZlQXR0cmlidXRlCiB7CiAgICAg
bVN0YXRlTWFuYWdlci0+YmluZFZlcnRleEFycmF5KG1WZXJ0ZXhBcnJheUlELCBnZXRBcHBsaWVk
RWxlbWVudEFycmF5QnVmZmVySUQoKSk7CiAKLSAgICAvLyBDaGVjayBpZiBhbnkgYXR0cmlidXRl
cyBuZWVkIHRvIGJlIHN0cmVhbWVkLCBkZXRlcm1pbmVzIGlmIHRoZSBpbmRleCByYW5nZSBuZWVk
cyB0byBiZSBjb21wdXRlZAorICAgIC8vIENoZWNrIGlmIGFueSBhdHRyaWJ1dGVzIG5lZWQgdG8g
YmUgc3RyZWFtZWQsIGRldGVybWluZXMgaWYgdGhlIGluZGV4IHJhbmdlIG5lZWRzIHRvIGJlCisg
ICAgLy8gY29tcHV0ZWQKICAgICBib29sIGF0dHJpYnV0ZXNOZWVkU3RyZWFtaW5nID0gbUF0dHJp
YnV0ZXNOZWVkU3RyZWFtaW5nLmFueSgpOwogCi0gICAgLy8gRGV0ZXJtaW5lIGlmIGFuIGluZGV4
IGJ1ZmZlciBuZWVkcyB0byBiZSBzdHJlYW1lZCBhbmQgdGhlIHJhbmdlIG9mIHZlcnRpY2VzIHRo
YXQgbmVlZCB0byBiZSBjb3BpZWQKKyAgICAvLyBEZXRlcm1pbmUgaWYgYW4gaW5kZXggYnVmZmVy
IG5lZWRzIHRvIGJlIHN0cmVhbWVkIGFuZCB0aGUgcmFuZ2Ugb2YgdmVydGljZXMgdGhhdCBuZWVk
IHRvIGJlCisgICAgLy8gY29waWVkCiAgICAgSW5kZXhSYW5nZSBpbmRleFJhbmdlOwogICAgIGlm
ICh0eXBlICE9IEdMX05PTkUpCiAgICAgewpAQCAtMTI2LDcgKzE0NSw3IEBAIGdsOjpFcnJvciBW
ZXJ0ZXhBcnJheUdMOjpzeW5jRHJhd1N0YXRlKGNvbnN0IGdsOjpBdHRyaWJ1dGVzTWFzayAmYWN0
aXZlQXR0cmlidXRlCiAgICAgewogICAgICAgICAvLyBOb3QgYW4gaW5kZXhlZCBjYWxsLCBzZXQg
dGhlIHJhbmdlIHRvIFtmaXJzdCwgZmlyc3QgKyBjb3VudCAtIDFdCiAgICAgICAgIGluZGV4UmFu
Z2Uuc3RhcnQgPSBmaXJzdDsKLSAgICAgICAgaW5kZXhSYW5nZS5lbmQgPSBmaXJzdCArIGNvdW50
IC0gMTsKKyAgICAgICAgaW5kZXhSYW5nZS5lbmQgICA9IGZpcnN0ICsgY291bnQgLSAxOwogICAg
IH0KIAogICAgIGlmIChhdHRyaWJ1dGVzTmVlZFN0cmVhbWluZykKQEAgLTEzOCwxNiArMTU3LDE2
IEBAIGdsOjpFcnJvciBWZXJ0ZXhBcnJheUdMOjpzeW5jRHJhd1N0YXRlKGNvbnN0IGdsOjpBdHRy
aWJ1dGVzTWFzayAmYWN0aXZlQXR0cmlidXRlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1
cm4gRXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKLUVycm9y
IFZlcnRleEFycmF5R0w6OnN5bmNJbmRleERhdGEoR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhdHRyaWJ1dGVzTmVlZFN0cmVhbWluZywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXhSYW5nZSAqb3V0SW5kZXhS
YW5nZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICoq
b3V0SW5kaWNlcykgY29uc3QKK2dsOjpFcnJvciBWZXJ0ZXhBcnJheUdMOjpzeW5jSW5kZXhEYXRh
KEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgcHJpbWl0aXZlUmVzdGFydEVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGF0dHJpYnV0ZXNOZWVkU3RyZWFtaW5nLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXhSYW5nZSAqb3V0SW5kZXhSYW5nZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqKm91dElu
ZGljZXMpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG91dEluZGljZXMpOwogCkBAIC0xNjcsNyArMTg2
LDcgQEAgRXJyb3IgVmVydGV4QXJyYXlHTDo6c3luY0luZGV4RGF0YShHTHNpemVpIGNvdW50LAog
ICAgICAgICBpZiAoYXR0cmlidXRlc05lZWRTdHJlYW1pbmcpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHB0cmRpZmZfdCBlbGVtZW50QXJyYXlCdWZmZXJPZmZzZXQgPSByZWludGVycHJldF9jYXN0
PHB0cmRpZmZfdD4oaW5kaWNlcyk7Ci0gICAgICAgICAgICBFcnJvciBlcnJvciA9IG1EYXRhLmdl
dEVsZW1lbnRBcnJheUJ1ZmZlcigpLT5nZXRJbmRleFJhbmdlKAorICAgICAgICAgICAgRXJyb3Ig
ZXJyb3IgICAgICAgICAgICAgICAgICAgICAgICA9IG1EYXRhLmdldEVsZW1lbnRBcnJheUJ1ZmZl
cigpLT5nZXRJbmRleFJhbmdlKAogICAgICAgICAgICAgICAgIHR5cGUsIGVsZW1lbnRBcnJheUJ1
ZmZlck9mZnNldCwgY291bnQsIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkLCBvdXRJbmRleFJhbmdl
KTsKICAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgICAgICB7CkBAIC0x
NzUsNyArMTk0LDggQEAgRXJyb3IgVmVydGV4QXJyYXlHTDo6c3luY0luZGV4RGF0YShHTHNpemVp
IGNvdW50LAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgLy8gSW5kaWNlcyBz
ZXJ2ZXMgYXMgYW4gb2Zmc2V0IGludG8gdGhlIGluZGV4IGJ1ZmZlciBpbiB0aGlzIGNhc2UsIHVz
ZSB0aGUgc2FtZSB2YWx1ZSBmb3IgdGhlIGRyYXcgY2FsbAorICAgICAgICAvLyBJbmRpY2VzIHNl
cnZlcyBhcyBhbiBvZmZzZXQgaW50byB0aGUgaW5kZXggYnVmZmVyIGluIHRoaXMgY2FzZSwgdXNl
IHRoZSBzYW1lIHZhbHVlIGZvcgorICAgICAgICAvLyB0aGUgZHJhdyBjYWxsCiAgICAgICAgICpv
dXRJbmRpY2VzID0gaW5kaWNlczsKICAgICB9CiAgICAgZWxzZQpAQCAtMjA1LDIwICsyMjUsMjMg
QEAgRXJyb3IgVmVydGV4QXJyYXlHTDo6c3luY0luZGV4RGF0YShHTHNpemVpIGNvdW50LAogICAg
ICAgICBpZiAocmVxdWlyZWRTdHJlYW1pbmdCdWZmZXJTaXplID4gbVN0cmVhbWluZ0VsZW1lbnRB
cnJheUJ1ZmZlclNpemUpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIENvcHkgdGhlIGluZGlj
ZXMgaW4gd2hpbGUgcmVzaXppbmcgdGhlIGJ1ZmZlcgotICAgICAgICAgICAgbUZ1bmN0aW9ucy0+
YnVmZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgcmVxdWlyZWRTdHJlYW1pbmdCdWZm
ZXJTaXplLCBpbmRpY2VzLCBHTF9EWU5BTUlDX0RSQVcpOworICAgICAgICAgICAgbUZ1bmN0aW9u
cy0+YnVmZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgcmVxdWlyZWRTdHJlYW1pbmdC
dWZmZXJTaXplLCBpbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9EWU5BTUlDX0RSQVcpOwogICAgICAgICAgICAgbVN0cmVhbWluZ0VsZW1lbnRBcnJheUJ1ZmZl
clNpemUgPSByZXF1aXJlZFN0cmVhbWluZ0J1ZmZlclNpemU7CiAgICAgICAgIH0KICAgICAgICAg
ZWxzZQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBQdXQgdGhlIGluZGljZXMgYXQgdGhlIGJl
Z2lubmluZyBvZiB0aGUgYnVmZmVyCi0gICAgICAgICAgICBtRnVuY3Rpb25zLT5idWZmZXJTdWJE
YXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCAwLCByZXF1aXJlZFN0cmVhbWluZ0J1ZmZlclNp
emUsIGluZGljZXMpOworICAgICAgICAgICAgbUZ1bmN0aW9ucy0+YnVmZmVyU3ViRGF0YShHTF9F
TEVNRU5UX0FSUkFZX0JVRkZFUiwgMCwgcmVxdWlyZWRTdHJlYW1pbmdCdWZmZXJTaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzKTsKICAgICAgICAgfQog
Ci0gICAgICAgIC8vIFNldCB0aGUgaW5kZXggb2Zmc2V0IGZvciB0aGUgZHJhdyBjYWxsIHRvIHpl
cm8gc2luY2UgdGhlIHN1cHBsaWVkIGluZGV4IHBvaW50ZXIgaXMgdG8gY2xpZW50IGRhdGEKKyAg
ICAgICAgLy8gU2V0IHRoZSBpbmRleCBvZmZzZXQgZm9yIHRoZSBkcmF3IGNhbGwgdG8gemVybyBz
aW5jZSB0aGUgc3VwcGxpZWQgaW5kZXggcG9pbnRlciBpcyB0bworICAgICAgICAvLyBjbGllbnQg
ZGF0YQogICAgICAgICAqb3V0SW5kaWNlcyA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJu
IEVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCiB2b2lkIFZl
cnRleEFycmF5R0w6OmNvbXB1dGVTdHJlYW1pbmdBdHRyaWJ1dGVTaXplcyhjb25zdCBnbDo6QXR0
cmlidXRlc01hc2sgJmFjdGl2ZUF0dHJpYnV0ZXNNYXNrLApAQCAtMjMyLDE4ICsyNTUsMjAgQEAg
dm9pZCBWZXJ0ZXhBcnJheUdMOjpjb21wdXRlU3RyZWFtaW5nQXR0cmlidXRlU2l6ZXMoY29uc3Qg
Z2w6OkF0dHJpYnV0ZXNNYXNrICZhY3QKIAogICAgIEFTU0VSVChtQXR0cmlidXRlc05lZWRTdHJl
YW1pbmcuYW55KCkpOwogCi0gICAgY29uc3QgYXV0byAmYXR0cmlicyA9IG1EYXRhLmdldFZlcnRl
eEF0dHJpYnV0ZXMoKTsKKyAgICBjb25zdCBhdXRvICZhdHRyaWJzICA9IG1EYXRhLmdldFZlcnRl
eEF0dHJpYnV0ZXMoKTsKKyAgICBjb25zdCBhdXRvICZiaW5kaW5ncyA9IG1EYXRhLmdldFZlcnRl
eEJpbmRpbmdzKCk7CiAgICAgZm9yIChhdXRvIGlkeCA6IGFuZ2xlOjpJdGVyYXRlQml0U2V0KG1B
dHRyaWJ1dGVzTmVlZFN0cmVhbWluZyAmIGFjdGl2ZUF0dHJpYnV0ZXNNYXNrKSkKICAgICB7Ci0g
ICAgICAgIGNvbnN0IGF1dG8gJmF0dHJpYiA9IGF0dHJpYnNbaWR4XTsKLSAgICAgICAgQVNTRVJU
KEF0dHJpYnV0ZU5lZWRzU3RyZWFtaW5nKGF0dHJpYikpOworICAgICAgICBjb25zdCBhdXRvICZh
dHRyaWIgID0gYXR0cmlic1tpZHhdOworICAgICAgICBjb25zdCBhdXRvICZiaW5kaW5nID0gYmlu
ZGluZ3NbYXR0cmliLmJpbmRpbmdJbmRleF07CisgICAgICAgIEFTU0VSVChBdHRyaWJ1dGVOZWVk
c1N0cmVhbWluZyhhdHRyaWIsIGJpbmRpbmcpKTsKIAogICAgICAgICAvLyBJZiBzdHJlYW1pbmcg
aXMgZ29pbmcgdG8gYmUgcmVxdWlyZWQsIGNvbXB1dGUgdGhlIHNpemUgb2YgdGhlIHJlcXVpcmVk
IGJ1ZmZlcgogICAgICAgICAvLyBhbmQgaG93IG11Y2ggc2xhY2sgc3BhY2UgYXQgdGhlIGJlZ2lu
bmluZyBvZiB0aGUgYnVmZmVyIHdpbGwgYmUgcmVxdWlyZWQgYnkgZGV0ZXJtaW5pbmcKICAgICAg
ICAgLy8gdGhlIGF0dHJpYnV0ZSB3aXRoIHRoZSBsYXJnZXN0IGRhdGEgc2l6ZS4KICAgICAgICAg
c2l6ZV90IHR5cGVTaXplID0gQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVR5cGVTaXplKGF0dHJpYik7
Ci0gICAgICAgICpvdXRTdHJlYW1pbmdEYXRhU2l6ZSArPSB0eXBlU2l6ZSAqIENvbXB1dGVWZXJ0
ZXhBdHRyaWJ1dGVFbGVtZW50Q291bnQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdHRyaWIsIGluZGV4UmFuZ2UudmVydGV4Q291bnQoKSwgaW5zdGFu
Y2VDb3VudCk7CisgICAgICAgICpvdXRTdHJlYW1pbmdEYXRhU2l6ZSArPSB0eXBlU2l6ZSAqIENv
bXB1dGVWZXJ0ZXhCaW5kaW5nRWxlbWVudENvdW50KAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmluZGluZywgaW5kZXhSYW5nZS52ZXJ0ZXhDb3VudCgp
LCBpbnN0YW5jZUNvdW50KTsKICAgICAgICAgKm91dE1heEF0dHJpYnV0ZURhdGFTaXplID0gc3Rk
OjptYXgoKm91dE1heEF0dHJpYnV0ZURhdGFTaXplLCB0eXBlU2l6ZSk7CiAgICAgfQogfQpAQCAt
MjYxLDcgKzI4Niw3IEBAIGdsOjpFcnJvciBWZXJ0ZXhBcnJheUdMOjpzdHJlYW1BdHRyaWJ1dGVz
KGNvbnN0IGdsOjpBdHRyaWJ1dGVzTWFzayAmYWN0aXZlQXR0cmliCiAKICAgICBpZiAoc3RyZWFt
aW5nRGF0YVNpemUgPT0gMCkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKICAgICBpZiAo
bVN0cmVhbWluZ0FycmF5QnVmZmVyID09IDApCkBAIC0yNzAsOSArMjk1LDkgQEAgZ2w6OkVycm9y
IFZlcnRleEFycmF5R0w6OnN0cmVhbUF0dHJpYnV0ZXMoY29uc3QgZ2w6OkF0dHJpYnV0ZXNNYXNr
ICZhY3RpdmVBdHRyaWIKICAgICAgICAgbVN0cmVhbWluZ0FycmF5QnVmZmVyU2l6ZSA9IDA7CiAg
ICAgfQogCi0gICAgLy8gSWYgZmlyc3QgaXMgZ3JlYXRlciB0aGFuIHplcm8sIGEgc2xhY2sgc3Bh
Y2UgbmVlZHMgdG8gYmUgbGVmdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBidWZmZXIgc28gdGhh
dAotICAgIC8vIHRoZSBzYW1lICdmaXJzdCcgYXJndW1lbnQgY2FuIGJlIHBhc3NlZCBpbnRvIHRo
ZSBkcmF3IGNhbGwuCi0gICAgY29uc3Qgc2l6ZV90IGJ1ZmZlckVtcHR5U3BhY2UgPSBtYXhBdHRy
aWJ1dGVEYXRhU2l6ZSAqIGluZGV4UmFuZ2Uuc3RhcnQ7CisgICAgLy8gSWYgZmlyc3QgaXMgZ3Jl
YXRlciB0aGFuIHplcm8sIGEgc2xhY2sgc3BhY2UgbmVlZHMgdG8gYmUgbGVmdCBhdCB0aGUgYmVn
aW5uaW5nIG9mIHRoZSBidWZmZXIKKyAgICAvLyBzbyB0aGF0IHRoZSBzYW1lICdmaXJzdCcgYXJn
dW1lbnQgY2FuIGJlIHBhc3NlZCBpbnRvIHRoZSBkcmF3IGNhbGwuCisgICAgY29uc3Qgc2l6ZV90
IGJ1ZmZlckVtcHR5U3BhY2UgICA9IG1heEF0dHJpYnV0ZURhdGFTaXplICogaW5kZXhSYW5nZS5z
dGFydDsKICAgICBjb25zdCBzaXplX3QgcmVxdWlyZWRCdWZmZXJTaXplID0gc3RyZWFtaW5nRGF0
YVNpemUgKyBidWZmZXJFbXB0eVNwYWNlOwogCiAgICAgbVN0YXRlTWFuYWdlci0+YmluZEJ1ZmZl
cihHTF9BUlJBWV9CVUZGRVIsIG1TdHJlYW1pbmdBcnJheUJ1ZmZlcik7CkBAIC0yODMsOSArMzA4
LDkgQEAgZ2w6OkVycm9yIFZlcnRleEFycmF5R0w6OnN0cmVhbUF0dHJpYnV0ZXMoY29uc3QgZ2w6
OkF0dHJpYnV0ZXNNYXNrICZhY3RpdmVBdHRyaWIKICAgICB9CiAKICAgICAvLyBVbm1hcHBpbmcg
YSBidWZmZXIgY2FuIHJldHVybiBHTF9GQUxTRSB0byBpbmRpY2F0ZSB0aGF0IHRoZSBzeXN0ZW0g
aGFzIGNvcnJ1cHRlZCB0aGUgZGF0YQotICAgIC8vIHNvbWVob3cgKHN1Y2ggYXMgYnkgYSBzY3Jl
ZW4gY2hhbmdlKSwgcmV0cnkgd3JpdGluZyB0aGUgZGF0YSBhIGZldyB0aW1lcyBhbmQgcmV0dXJu
IE9VVF9PRl9NRU1PUlkKLSAgICAvLyBpZiB0aGF0IGZhaWxzLgotICAgIEdMYm9vbGVhbiB1bm1h
cFJlc3VsdCA9IEdMX0ZBTFNFOworICAgIC8vIHNvbWVob3cgKHN1Y2ggYXMgYnkgYSBzY3JlZW4g
Y2hhbmdlKSwgcmV0cnkgd3JpdGluZyB0aGUgZGF0YSBhIGZldyB0aW1lcyBhbmQgcmV0dXJuCisg
ICAgLy8gT1VUX09GX01FTU9SWSBpZiB0aGF0IGZhaWxzLgorICAgIEdMYm9vbGVhbiB1bm1hcFJl
c3VsdCAgICAgPSBHTF9GQUxTRTsKICAgICBzaXplX3QgdW5tYXBSZXRyeUF0dGVtcHRzID0gNTsK
ICAgICB3aGlsZSAodW5tYXBSZXN1bHQgIT0gR0xfVFJVRSAmJiAtLXVubWFwUmV0cnlBdHRlbXB0
cyA+IDApCiAgICAgewpAQCAtMjkzLDE4ICszMTgsMjYgQEAgZ2w6OkVycm9yIFZlcnRleEFycmF5
R0w6OnN0cmVhbUF0dHJpYnV0ZXMoY29uc3QgZ2w6OkF0dHJpYnV0ZXNNYXNrICZhY3RpdmVBdHRy
aWIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVpcmVkQnVmZmVyU2l6ZSwgR0xfTUFQX1dSSVRFX0JJVCk7CiAgICAgICAgIHNp
emVfdCBjdXJCdWZmZXJPZmZzZXQgPSBidWZmZXJFbXB0eVNwYWNlOwogCi0gICAgICAgIGNvbnN0
IGF1dG8gJmF0dHJpYnMgPSBtRGF0YS5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7CisgICAgICAgIGNv
bnN0IGF1dG8gJmF0dHJpYnMgID0gbURhdGEuZ2V0VmVydGV4QXR0cmlidXRlcygpOworICAgICAg
ICBjb25zdCBhdXRvICZiaW5kaW5ncyA9IG1EYXRhLmdldFZlcnRleEJpbmRpbmdzKCk7CiAgICAg
ICAgIGZvciAoYXV0byBpZHggOiBhbmdsZTo6SXRlcmF0ZUJpdFNldChtQXR0cmlidXRlc05lZWRT
dHJlYW1pbmcgJiBhY3RpdmVBdHRyaWJ1dGVzTWFzaykpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnN0IGF1dG8gJmF0dHJpYiA9IGF0dHJpYnNbaWR4XTsKLSAgICAgICAgICAgIEFTU0VSVChB
dHRyaWJ1dGVOZWVkc1N0cmVhbWluZyhhdHRyaWIpKTsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8g
JmF0dHJpYiAgPSBhdHRyaWJzW2lkeF07CisgICAgICAgICAgICBjb25zdCBhdXRvICZiaW5kaW5n
ID0gYmluZGluZ3NbYXR0cmliLmJpbmRpbmdJbmRleF07CisgICAgICAgICAgICBBU1NFUlQoQXR0
cmlidXRlTmVlZHNTdHJlYW1pbmcoYXR0cmliLCBiaW5kaW5nKSk7CiAKICAgICAgICAgICAgIGNv
bnN0IHNpemVfdCBzdHJlYW1lZFZlcnRleENvdW50ID0KLSAgICAgICAgICAgICAgICBDb21wdXRl
VmVydGV4QXR0cmlidXRlRWxlbWVudENvdW50KGF0dHJpYiwgaW5kZXhSYW5nZS52ZXJ0ZXhDb3Vu
dCgpLCBpbnN0YW5jZUNvdW50KTsKKyAgICAgICAgICAgICAgICBDb21wdXRlVmVydGV4QmluZGlu
Z0VsZW1lbnRDb3VudChiaW5kaW5nLCBpbmRleFJhbmdlLnZlcnRleENvdW50KCksIGluc3RhbmNl
Q291bnQpOwogCi0gICAgICAgICAgICBjb25zdCBzaXplX3Qgc291cmNlU3RyaWRlID0gQ29tcHV0
ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShhdHRyaWIpOworICAgICAgICAgICAgY29uc3Qgc2l6ZV90
IHNvdXJjZVN0cmlkZSA9IENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJpZGUoYXR0cmliLCBiaW5k
aW5nKTsKICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBkZXN0U3RyaWRlICAgPSBDb21wdXRlVmVy
dGV4QXR0cmlidXRlVHlwZVNpemUoYXR0cmliKTsKIAorICAgICAgICAgICAgLy8gVmVydGljZXMg
ZG8gbm90IGFwcGx5IHRoZSAnc3RhcnQnIG9mZnNldCB3aGVuIHRoZSBkaXZpc29yIGlzIG5vbi16
ZXJvIGV2ZW4gd2hlbiBkb2luZworICAgICAgICAgICAgLy8gYSBub24taW5zdGFuY2VkIGRyYXcg
Y2FsbAorICAgICAgICAgICAgY29uc3Qgc2l6ZV90IGZpcnN0SW5kZXggPSBiaW5kaW5nLmRpdmlz
b3IgPT0gMCA/IGluZGV4UmFuZ2Uuc3RhcnQgOiAwOworCisgICAgICAgICAgICAvLyBBdHRyaWJ1
dGVzIHVzaW5nIGNsaWVudCBtZW1vcnkgaWdub3JlIHRoZSBWRVJURVhfQVRUUklCX0JJTkRJTkcg
c3RhdGUuCisgICAgICAgICAgICAvLyBodHRwczovL3d3dy5vcGVuZ2wub3JnL3JlZ2lzdHJ5L3Nw
ZWNzL0FSQi92ZXJ0ZXhfYXR0cmliX2JpbmRpbmcudHh0CiAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICppbnB1dFBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4oYXR0
cmliLnBvaW50ZXIpOwogCiAgICAgICAgICAgICAvLyBQYWNrIHRoZSBkYXRhIHdoZW4gY29weWlu
ZyBpdCwgdXNlciBjb3VsZCBoYXZlIHN1cHBsaWVkIGEgdmVyeSBsYXJnZSBzdHJpZGUgdGhhdApA
QCAtMzEyLDggKzM0NSw3IEBAIGdsOjpFcnJvciBWZXJ0ZXhBcnJheUdMOjpzdHJlYW1BdHRyaWJ1
dGVzKGNvbnN0IGdsOjpBdHRyaWJ1dGVzTWFzayAmYWN0aXZlQXR0cmliCiAgICAgICAgICAgICBp
ZiAoZGVzdFN0cmlkZSA9PSBzb3VyY2VTdHJpZGUpCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgLy8gQ2FuIGNvcHkgaW4gb25lIGdvLCB0aGUgZGF0YSBpcyBwYWNrZWQKLSAgICAgICAg
ICAgICAgICBtZW1jcHkoYnVmZmVyUG9pbnRlciArIGN1ckJ1ZmZlck9mZnNldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgaW5wdXRQb2ludGVyICsgKHNvdXJjZVN0cmlkZSAqIGluZGV4UmFuZ2Uu
c3RhcnQpLAorICAgICAgICAgICAgICAgIG1lbWNweShidWZmZXJQb2ludGVyICsgY3VyQnVmZmVy
T2Zmc2V0LCBpbnB1dFBvaW50ZXIgKyAoc291cmNlU3RyaWRlICogZmlyc3RJbmRleCksCiAgICAg
ICAgICAgICAgICAgICAgICAgIGRlc3RTdHJpZGUgKiBzdHJlYW1lZFZlcnRleENvdW50KTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKQEAgLTMyMSwxNSArMzUzLDE0IEBAIGdsOjpF
cnJvciBWZXJ0ZXhBcnJheUdMOjpzdHJlYW1BdHRyaWJ1dGVzKGNvbnN0IGdsOjpBdHRyaWJ1dGVz
TWFzayAmYWN0aXZlQXR0cmliCiAgICAgICAgICAgICAgICAgLy8gQ29weSBlYWNoIHZlcnRleCBp
bmRpdmlkdWFsbHkKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCB2ZXJ0ZXhJZHggPSAwOyB2
ZXJ0ZXhJZHggPCBzdHJlYW1lZFZlcnRleENvdW50OyB2ZXJ0ZXhJZHgrKykKICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dCA9IGJ1ZmZlclBvaW50ZXIg
KyBjdXJCdWZmZXJPZmZzZXQgKyAoZGVzdFN0cmlkZSAqIHZlcnRleElkeCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmluID0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlu
cHV0UG9pbnRlciArIHNvdXJjZVN0cmlkZSAqICh2ZXJ0ZXhJZHggKyBpbmRleFJhbmdlLnN0YXJ0
KTsKKyAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0ICAgICAgPSBidWZmZXJQb2ludGVy
ICsgY3VyQnVmZmVyT2Zmc2V0ICsgKGRlc3RTdHJpZGUgKiB2ZXJ0ZXhJZHgpOworICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICppbiA9IGlucHV0UG9pbnRlciArIHNvdXJjZVN0cmlk
ZSAqICh2ZXJ0ZXhJZHggKyBmaXJzdEluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgbWVtY3B5
KG91dCwgaW4sIGRlc3RTdHJpZGUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgLy8gQ29tcHV0ZSB3aGVyZSB0aGUgMC1pbmRleCB2ZXJ0ZXggd291bGQg
YmUuCi0gICAgICAgICAgICBjb25zdCBzaXplX3QgdmVydGV4U3RhcnRPZmZzZXQgPSBjdXJCdWZm
ZXJPZmZzZXQgLSAoaW5kZXhSYW5nZS5zdGFydCAqIGRlc3RTdHJpZGUpOworICAgICAgICAgICAg
Y29uc3Qgc2l6ZV90IHZlcnRleFN0YXJ0T2Zmc2V0ID0gY3VyQnVmZmVyT2Zmc2V0IC0gKGZpcnN0
SW5kZXggKiBkZXN0U3RyaWRlKTsKIAogICAgICAgICAgICAgaWYgKGF0dHJpYi5wdXJlSW50ZWdl
cikKICAgICAgICAgICAgIHsKQEAgLTM2Miw3ICszOTMsNyBAQCBnbDo6RXJyb3IgVmVydGV4QXJy
YXlHTDo6c3RyZWFtQXR0cmlidXRlcyhjb25zdCBnbDo6QXR0cmlidXRlc01hc2sgJmFjdGl2ZUF0
dHJpYgogICAgICAgICByZXR1cm4gRXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byB1
bm1hcCB0aGUgY2xpZW50IGRhdGEgc3RyZWFtaW5nIGJ1ZmZlci4iKTsKICAgICB9CiAKLSAgICBy
ZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKIEdM
dWludCBWZXJ0ZXhBcnJheUdMOjpnZXRWZXJ0ZXhBcnJheUlEKCkgY29uc3QKQEAgLTM4Miw4ICs0
MTMsOSBAQCBHTHVpbnQgVmVydGV4QXJyYXlHTDo6Z2V0QXBwbGllZEVsZW1lbnRBcnJheUJ1ZmZl
cklEKCkgY29uc3QKIAogdm9pZCBWZXJ0ZXhBcnJheUdMOjp1cGRhdGVOZWVkc1N0cmVhbWluZyhz
aXplX3QgYXR0cmliSW5kZXgpCiB7Ci0gICAgY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIg
PSBtRGF0YS5nZXRWZXJ0ZXhBdHRyaWJ1dGUoYXR0cmliSW5kZXgpOwotICAgIG1BdHRyaWJ1dGVz
TmVlZFN0cmVhbWluZy5zZXQoYXR0cmliSW5kZXgsIEF0dHJpYnV0ZU5lZWRzU3RyZWFtaW5nKGF0
dHJpYikpOworICAgIGNvbnN0IGF1dG8gJmF0dHJpYiAgPSBtRGF0YS5nZXRWZXJ0ZXhBdHRyaWJ1
dGUoYXR0cmliSW5kZXgpOworICAgIGNvbnN0IGF1dG8gJmJpbmRpbmcgPSBtRGF0YS5nZXRCaW5k
aW5nRnJvbUF0dHJpYkluZGV4KGF0dHJpYkluZGV4KTsKKyAgICBtQXR0cmlidXRlc05lZWRTdHJl
YW1pbmcuc2V0KGF0dHJpYkluZGV4LCBBdHRyaWJ1dGVOZWVkc1N0cmVhbWluZyhhdHRyaWIsIGJp
bmRpbmcpKTsKIH0KIAogdm9pZCBWZXJ0ZXhBcnJheUdMOjp1cGRhdGVBdHRyaWJFbmFibGVkKHNp
emVfdCBhdHRyaWJJbmRleCkKQEAgLTQxMSw3ICs0NDMsMTIgQEAgdm9pZCBWZXJ0ZXhBcnJheUdM
Ojp1cGRhdGVBdHRyaWJFbmFibGVkKHNpemVfdCBhdHRyaWJJbmRleCkKIHZvaWQgVmVydGV4QXJy
YXlHTDo6dXBkYXRlQXR0cmliUG9pbnRlcihzaXplX3QgYXR0cmliSW5kZXgpCiB7CiAgICAgY29u
c3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIgPSBtRGF0YS5nZXRWZXJ0ZXhBdHRyaWJ1dGUoYXR0
cmliSW5kZXgpOwotICAgIGlmIChtQXBwbGllZEF0dHJpYnV0ZXNbYXR0cmliSW5kZXhdID09IGF0
dHJpYikKKyAgICBBU1NFUlQoYXR0cmliSW5kZXggPT0gYXR0cmliLmJpbmRpbmdJbmRleCk7CisK
KyAgICBHTHVpbnQgYmluZGluZ0luZGV4ICAgICAgICAgID0gYXR0cmliLmJpbmRpbmdJbmRleDsK
KyAgICBjb25zdCBWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nID0gbURhdGEuZ2V0VmVydGV4QmluZGlu
ZyhiaW5kaW5nSW5kZXgpOworCisgICAgaWYgKG1BcHBsaWVkQXR0cmlidXRlc1thdHRyaWJJbmRl
eF0gPT0gYXR0cmliICYmIG1BcHBsaWVkQmluZGluZ3NbYmluZGluZ0luZGV4XSA9PSBiaW5kaW5n
KQogICAgIHsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQyNSw3ICs0NjIsNyBAQCB2b2lk
IFZlcnRleEFycmF5R0w6OnVwZGF0ZUF0dHJpYlBvaW50ZXIoc2l6ZV90IGF0dHJpYkluZGV4KQog
ICAgIH0KIAogICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRWZXJ0ZXhBcnJheShtVmVydGV4QXJyYXlJ
RCwgZ2V0QXBwbGllZEVsZW1lbnRBcnJheUJ1ZmZlcklEKCkpOwotICAgIGNvbnN0IEJ1ZmZlciAq
YXJyYXlCdWZmZXIgPSBhdHRyaWIuYnVmZmVyLmdldCgpOworICAgIGNvbnN0IEJ1ZmZlciAqYXJy
YXlCdWZmZXIgPSBiaW5kaW5nLmJ1ZmZlci5nZXQoKTsKICAgICBpZiAoYXJyYXlCdWZmZXIgIT0g
bnVsbHB0cikKICAgICB7CiAgICAgICAgIGNvbnN0IEJ1ZmZlckdMICphcnJheUJ1ZmZlckdMID0g
R2V0SW1wbEFzPEJ1ZmZlckdMPihhcnJheUJ1ZmZlcik7CkBAIC00MzUsNjEgKzQ3Miw4OSBAQCB2
b2lkIFZlcnRleEFycmF5R0w6OnVwZGF0ZUF0dHJpYlBvaW50ZXIoc2l6ZV90IGF0dHJpYkluZGV4
KQogICAgIHsKICAgICAgICAgbVN0YXRlTWFuYWdlci0+YmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZG
RVIsIDApOwogICAgIH0KLSAgICBtQXBwbGllZEF0dHJpYnV0ZXNbYXR0cmliSW5kZXhdLmJ1ZmZl
ciA9IGF0dHJpYi5idWZmZXI7CisKKyAgICBtQXBwbGllZEJpbmRpbmdzW2JpbmRpbmdJbmRleF0u
YnVmZmVyID0gYmluZGluZy5idWZmZXI7CisKKyAgICBjb25zdCBHTHZvaWQgKmlucHV0UG9pbnRl
ciA9IG51bGxwdHI7CisgICAgaWYgKGFycmF5QnVmZmVyICE9IG51bGxwdHIpCisgICAgeworICAg
ICAgICBpbnB1dFBvaW50ZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBHTHZvaWQgKj4oCisgICAgICAg
ICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QgKj4oYmluZGluZy5vZmZzZXQgKyBh
dHRyaWIucmVsYXRpdmVPZmZzZXQpKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg
Ly8gQXR0cmlidXRlcyB1c2luZyBjbGllbnQgbWVtb3J5IGlnbm9yZSB0aGUgVkVSVEVYX0FUVFJJ
Ql9CSU5ESU5HIHN0YXRlLgorICAgICAgICAvLyBodHRwczovL3d3dy5vcGVuZ2wub3JnL3JlZ2lz
dHJ5L3NwZWNzL0FSQi92ZXJ0ZXhfYXR0cmliX2JpbmRpbmcKKyAgICAgICAgaW5wdXRQb2ludGVy
ID0gYXR0cmliLnBvaW50ZXI7CisgICAgfQogCiAgICAgaWYgKGF0dHJpYi5wdXJlSW50ZWdlcikK
ICAgICB7CiAgICAgICAgIG1GdW5jdGlvbnMtPnZlcnRleEF0dHJpYklQb2ludGVyKHN0YXRpY19j
YXN0PEdMdWludD4oYXR0cmliSW5kZXgpLCBhdHRyaWIuc2l6ZSwgYXR0cmliLnR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYi5zdHJpZGUsIGF0dHJp
Yi5wb2ludGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlu
ZGluZy5zdHJpZGUsIGlucHV0UG9pbnRlcik7CiAgICAgfQogICAgIGVsc2UKICAgICB7CiAgICAg
ICAgIG1GdW5jdGlvbnMtPnZlcnRleEF0dHJpYlBvaW50ZXIoc3RhdGljX2Nhc3Q8R0x1aW50Pihh
dHRyaWJJbmRleCksIGF0dHJpYi5zaXplLCBhdHRyaWIudHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWIubm9ybWFsaXplZCwgYXR0cmliLnN0cmlkZSwg
YXR0cmliLnBvaW50ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF0dHJpYi5ub3JtYWxpemVkLCBiaW5kaW5nLnN0cmlkZSwgaW5wdXRQb2ludGVyKTsKICAgICB9
Ci0gICAgbUFwcGxpZWRBdHRyaWJ1dGVzW2F0dHJpYkluZGV4XS5zaXplICAgICAgICA9IGF0dHJp
Yi5zaXplOwotICAgIG1BcHBsaWVkQXR0cmlidXRlc1thdHRyaWJJbmRleF0udHlwZSAgICAgICAg
PSBhdHRyaWIudHlwZTsKLSAgICBtQXBwbGllZEF0dHJpYnV0ZXNbYXR0cmliSW5kZXhdLm5vcm1h
bGl6ZWQgID0gYXR0cmliLm5vcm1hbGl6ZWQ7Ci0gICAgbUFwcGxpZWRBdHRyaWJ1dGVzW2F0dHJp
YkluZGV4XS5wdXJlSW50ZWdlciA9IGF0dHJpYi5wdXJlSW50ZWdlcjsKLSAgICBtQXBwbGllZEF0
dHJpYnV0ZXNbYXR0cmliSW5kZXhdLnN0cmlkZSAgICAgID0gYXR0cmliLnN0cmlkZTsKLSAgICBt
QXBwbGllZEF0dHJpYnV0ZXNbYXR0cmliSW5kZXhdLnBvaW50ZXIgICAgID0gYXR0cmliLnBvaW50
ZXI7CisgICAgbUFwcGxpZWRBdHRyaWJ1dGVzW2F0dHJpYkluZGV4XS5zaXplICAgICAgICAgICAg
ICAgICAgICA9IGF0dHJpYi5zaXplOworICAgIG1BcHBsaWVkQXR0cmlidXRlc1thdHRyaWJJbmRl
eF0udHlwZSAgICAgICAgICAgICAgICAgICAgPSBhdHRyaWIudHlwZTsKKyAgICBtQXBwbGllZEF0
dHJpYnV0ZXNbYXR0cmliSW5kZXhdLm5vcm1hbGl6ZWQgICAgICAgICAgICAgID0gYXR0cmliLm5v
cm1hbGl6ZWQ7CisgICAgbUFwcGxpZWRBdHRyaWJ1dGVzW2F0dHJpYkluZGV4XS5wdXJlSW50ZWdl
ciAgICAgICAgICAgICA9IGF0dHJpYi5wdXJlSW50ZWdlcjsKKyAgICBtQXBwbGllZEF0dHJpYnV0
ZXNbYXR0cmliSW5kZXhdLnBvaW50ZXIgICAgICAgICAgICAgICAgID0gYXR0cmliLnBvaW50ZXI7
CisgICAgbUFwcGxpZWRBdHRyaWJ1dGVzW2F0dHJpYkluZGV4XS5yZWxhdGl2ZU9mZnNldCAgICAg
ICAgICA9IGF0dHJpYi5yZWxhdGl2ZU9mZnNldDsKKyAgICBtQXBwbGllZEF0dHJpYnV0ZXNbYXR0
cmliSW5kZXhdLnZlcnRleEF0dHJpYkFycmF5U3RyaWRlID0gYXR0cmliLnZlcnRleEF0dHJpYkFy
cmF5U3RyaWRlOworCisgICAgbUFwcGxpZWRCaW5kaW5nc1tiaW5kaW5nSW5kZXhdLnN0cmlkZSA9
IGJpbmRpbmcuc3RyaWRlOworICAgIG1BcHBsaWVkQmluZGluZ3NbYmluZGluZ0luZGV4XS5vZmZz
ZXQgPSBiaW5kaW5nLm9mZnNldDsKIH0KIAotdm9pZCBWZXJ0ZXhBcnJheUdMOjpzeW5jU3RhdGUo
Y29uc3QgVmVydGV4QXJyYXk6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQordm9pZCBWZXJ0ZXhBcnJh
eUdMOjp1cGRhdGVBdHRyaWJEaXZpc29yKHNpemVfdCBhdHRyaWJJbmRleCkKK3sKKyAgICBBU1NF
UlQoYXR0cmliSW5kZXggPT0gbURhdGEuZ2V0QmluZGluZ0luZGV4RnJvbUF0dHJpYkluZGV4KGF0
dHJpYkluZGV4KSk7CisKKyAgICBjb25zdCBWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nID0gbURhdGEu
Z2V0VmVydGV4QmluZGluZyhhdHRyaWJJbmRleCk7CisgICAgaWYgKG1BcHBsaWVkQmluZGluZ3Nb
YXR0cmliSW5kZXhdLmRpdmlzb3IgIT0gYmluZGluZy5kaXZpc29yKQorICAgIHsKKyAgICAgICAg
bVN0YXRlTWFuYWdlci0+YmluZFZlcnRleEFycmF5KG1WZXJ0ZXhBcnJheUlELCBnZXRBcHBsaWVk
RWxlbWVudEFycmF5QnVmZmVySUQoKSk7CisgICAgICAgIG1GdW5jdGlvbnMtPnZlcnRleEF0dHJp
YkRpdmlzb3Ioc3RhdGljX2Nhc3Q8R0x1aW50PihhdHRyaWJJbmRleCksIGJpbmRpbmcuZGl2aXNv
cik7CisKKyAgICAgICAgbUFwcGxpZWRCaW5kaW5nc1thdHRyaWJJbmRleF0uZGl2aXNvciA9IGJp
bmRpbmcuZGl2aXNvcjsKKyAgICB9Cit9CisKK3ZvaWQgVmVydGV4QXJyYXlHTDo6c3luY1N0YXRl
KENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwgY29uc3QgVmVydGV4QXJyYXk6OkRpcnR5Qml0cyAm
ZGlydHlCaXRzKQogewogICAgIGZvciAodW5zaWduZWQgbG9uZyBkaXJ0eUJpdCA6IGFuZ2xlOjpJ
dGVyYXRlQml0U2V0KGRpcnR5Qml0cykpCiAgICAgewogICAgICAgICBpZiAoZGlydHlCaXQgPT0g
VmVydGV4QXJyYXk6OkRJUlRZX0JJVF9FTEVNRU5UX0FSUkFZX0JVRkZFUikKICAgICAgICAgewog
ICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogRWxlbWVudCBhcnJheSBidWZmZXIgYmluZGlu
Z3MKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGRp
cnR5Qml0ID49IFZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRUUklCXzBfRU5BQkxFRCAmJgotICAg
ICAgICAgICAgICAgICBkaXJ0eUJpdCA8IFZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRUUklCX01B
WF9FTkFCTEVEKQorCisgICAgICAgIHNpemVfdCBpbmRleCA9IFZlcnRleEFycmF5OjpHZXRBdHRy
aWJJbmRleChkaXJ0eUJpdCk7CisgICAgICAgIGlmIChkaXJ0eUJpdCA+PSBWZXJ0ZXhBcnJheTo6
RElSVFlfQklUX0FUVFJJQl8wX0VOQUJMRUQgJiYKKyAgICAgICAgICAgIGRpcnR5Qml0IDwgVmVy
dGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJfTUFYX0VOQUJMRUQpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHNpemVfdCBhdHRyaWJJbmRleCA9Ci0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
c2l6ZV90PihkaXJ0eUJpdCkgLSBWZXJ0ZXhBcnJheTo6RElSVFlfQklUX0FUVFJJQl8wX0VOQUJM
RUQ7Ci0gICAgICAgICAgICB1cGRhdGVBdHRyaWJFbmFibGVkKGF0dHJpYkluZGV4KTsKKyAgICAg
ICAgICAgIHVwZGF0ZUF0dHJpYkVuYWJsZWQoaW5kZXgpOwogICAgICAgICB9CiAgICAgICAgIGVs
c2UgaWYgKGRpcnR5Qml0ID49IFZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRUUklCXzBfUE9JTlRF
UiAmJgogICAgICAgICAgICAgICAgICBkaXJ0eUJpdCA8IFZlcnRleEFycmF5OjpESVJUWV9CSVRf
QVRUUklCX01BWF9QT0lOVEVSKQogICAgICAgICB7Ci0gICAgICAgICAgICBzaXplX3QgYXR0cmli
SW5kZXggPQotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4oZGlydHlCaXQpIC0g
VmVydGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJfMF9QT0lOVEVSOwotICAgICAgICAgICAgdXBk
YXRlQXR0cmliUG9pbnRlcihhdHRyaWJJbmRleCk7CisgICAgICAgICAgICB1cGRhdGVBdHRyaWJQ
b2ludGVyKGluZGV4KTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChkaXJ0eUJpdCA+PSBW
ZXJ0ZXhBcnJheTo6RElSVFlfQklUX0FUVFJJQl8wX0RJVklTT1IgJiYKLSAgICAgICAgICAgICAg
ICAgZGlydHlCaXQgPCBWZXJ0ZXhBcnJheTo6RElSVFlfQklUX0FUVFJJQl9NQVhfRElWSVNPUikK
KyAgICAgICAgZWxzZSBpZiAoZGlydHlCaXQgPj0gVmVydGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRS
SUJfMF9GT1JNQVQgJiYKKyAgICAgICAgICAgICAgICAgZGlydHlCaXQgPCBWZXJ0ZXhBcnJheTo6
RElSVFlfQklUX0JJTkRJTkdfTUFYX0JVRkZFUikKICAgICAgICAgewotICAgICAgICAgICAgc2l6
ZV90IGF0dHJpYkluZGV4ID0KLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KGRp
cnR5Qml0KSAtIFZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRUUklCXzBfRElWSVNPUjsKLSAgICAg
ICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0gbURhdGEuZ2V0VmVydGV4QXR0
cmlidXRlKGF0dHJpYkluZGV4KTsKLQotICAgICAgICAgICAgaWYgKG1BcHBsaWVkQXR0cmlidXRl
c1thdHRyaWJJbmRleF0uZGl2aXNvciAhPSBhdHRyaWIuZGl2aXNvcikKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVmVydGV4QXJyYXkobVZlcnRleEFy
cmF5SUQsIGdldEFwcGxpZWRFbGVtZW50QXJyYXlCdWZmZXJJRCgpKTsKLSAgICAgICAgICAgICAg
ICBtRnVuY3Rpb25zLT52ZXJ0ZXhBdHRyaWJEaXZpc29yKHN0YXRpY19jYXN0PEdMdWludD4oYXR0
cmliSW5kZXgpLCBhdHRyaWIuZGl2aXNvcik7Ci0gICAgICAgICAgICAgICAgbUFwcGxpZWRBdHRy
aWJ1dGVzW2F0dHJpYkluZGV4XS5kaXZpc29yID0gYXR0cmliLmRpdmlzb3I7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICAvLyBUT0RPKGppYXdlaS5zaGFvQGludGVsLmNvbSk6IFZlcnRleCBB
dHRyaWIgQmluZGluZ3MKKyAgICAgICAgICAgIEFTU0VSVChpbmRleCA9PSBtRGF0YS5nZXRCaW5k
aW5nSW5kZXhGcm9tQXR0cmliSW5kZXgoaW5kZXgpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNl
IGlmIChkaXJ0eUJpdCA+PSBWZXJ0ZXhBcnJheTo6RElSVFlfQklUX0JJTkRJTkdfMF9ESVZJU09S
ICYmCisgICAgICAgICAgICAgICAgIGRpcnR5Qml0IDwgVmVydGV4QXJyYXk6OkRJUlRZX0JJVF9C
SU5ESU5HX01BWF9ESVZJU09SKQorICAgICAgICB7CisgICAgICAgICAgICB1cGRhdGVBdHRyaWJE
aXZpc29yKGluZGV4KTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL1ZlcnRleEFycmF5R0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9WZXJ0ZXhBcnJheUdMLmgKaW5kZXggMjYxYjYzZDkx
OGZjYmNkMTY2Yzg4OTkwYzJkY2FmMTUzMDg2NGQwZi4uYTExNGJkMTEzNjQ5MGQ5ZmUwZTk0YWY0
ZjE2OWYzZjM0MTM2YzNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL1ZlcnRleEFycmF5R0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVmVydGV4QXJyYXlHTC5oCkBAIC0z
NiwxMSArMzYsMTIgQEAgY2xhc3MgVmVydGV4QXJyYXlHTCA6IHB1YmxpYyBWZXJ0ZXhBcnJheUlt
cGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VD
b3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJpbWl0aXZl
UmVzdGFydEVuYWJsZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHZvaWQgKipvdXRJbmRpY2VzKSBjb25zdDsKKyAgICBnbDo6RXJyb3Igc3luY0VsZW1lbnRB
cnJheVN0YXRlKCkgY29uc3Q7CiAKICAgICBHTHVpbnQgZ2V0VmVydGV4QXJyYXlJRCgpIGNvbnN0
OwogICAgIEdMdWludCBnZXRBcHBsaWVkRWxlbWVudEFycmF5QnVmZmVySUQoKSBjb25zdDsKIAot
ICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGlydHlCaXRzICZkaXJ0
eUJpdHMpIG92ZXJyaWRlOworICAgIHZvaWQgc3luY1N0YXRlKENvbnRleHRJbXBsICpjb250ZXh0
SW1wbCwgY29uc3QgZ2w6OlZlcnRleEFycmF5OjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3ZlcnJp
ZGU7CiAKICAgcHJpdmF0ZToKICAgICBnbDo6RXJyb3Igc3luY0RyYXdTdGF0ZShjb25zdCBnbDo6
QXR0cmlidXRlc01hc2sgJmFjdGl2ZUF0dHJpYnV0ZXNNYXNrLApAQCAtNzcsNiArNzgsNyBAQCBj
bGFzcyBWZXJ0ZXhBcnJheUdMIDogcHVibGljIFZlcnRleEFycmF5SW1wbAogICAgIHZvaWQgdXBk
YXRlTmVlZHNTdHJlYW1pbmcoc2l6ZV90IGF0dHJpYkluZGV4KTsKICAgICB2b2lkIHVwZGF0ZUF0
dHJpYkVuYWJsZWQoc2l6ZV90IGF0dHJpYkluZGV4KTsKICAgICB2b2lkIHVwZGF0ZUF0dHJpYlBv
aW50ZXIoc2l6ZV90IGF0dHJpYkluZGV4KTsKKyAgICB2b2lkIHVwZGF0ZUF0dHJpYkRpdmlzb3Io
c2l6ZV90IGF0dHJpYkluZGV4KTsKIAogICAgIGNvbnN0IEZ1bmN0aW9uc0dMICptRnVuY3Rpb25z
OwogICAgIFN0YXRlTWFuYWdlckdMICptU3RhdGVNYW5hZ2VyOwpAQCAtODQsNyArODYsOSBAQCBj
bGFzcyBWZXJ0ZXhBcnJheUdMIDogcHVibGljIFZlcnRleEFycmF5SW1wbAogICAgIEdMdWludCBt
VmVydGV4QXJyYXlJRDsKIAogICAgIG11dGFibGUgQmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4g
bUFwcGxpZWRFbGVtZW50QXJyYXlCdWZmZXI7CisKICAgICBtdXRhYmxlIHN0ZDo6dmVjdG9yPGds
OjpWZXJ0ZXhBdHRyaWJ1dGU+IG1BcHBsaWVkQXR0cmlidXRlczsKKyAgICBtdXRhYmxlIHN0ZDo6
dmVjdG9yPGdsOjpWZXJ0ZXhCaW5kaW5nPiBtQXBwbGllZEJpbmRpbmdzOwogCiAgICAgbXV0YWJs
ZSBzaXplX3QgbVN0cmVhbWluZ0VsZW1lbnRBcnJheUJ1ZmZlclNpemU7CiAgICAgbXV0YWJsZSBH
THVpbnQgbVN0cmVhbWluZ0VsZW1lbnRBcnJheUJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Xb3JrYXJvdW5kc0dMLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvV29ya2Fy
b3VuZHNHTC5oCmluZGV4IDQwNTZkYzY4NzZmNzA0ZjZiNjZiZmFlY2Y2NzU0MTRjZTZiODlmMTIu
LmVjNTljMDQ1MjQyMDNjZDI4YjM5Mzg3ZTNhY2RkMmU1ZGJjNTMyNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Xb3JrYXJvdW5k
c0dMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL1dvcmthcm91bmRzR0wuaApAQCAtMTQsMjEgKzE0LDYgQEAgbmFtZXNwYWNlIHJ4CiAKIHN0
cnVjdCBXb3JrYXJvdW5kc0dMCiB7Ci0gICAgV29ya2Fyb3VuZHNHTCgpCi0gICAgICAgIDogYXZv
aWQxQml0QWxwaGFUZXh0dXJlRm9ybWF0cyhmYWxzZSksCi0gICAgICAgICAgcmdiYTRJc05vdFN1
cHBvcnRlZEZvckNvbG9yUmVuZGVyaW5nKGZhbHNlKSwKLSAgICAgICAgICBkb2VzU1JHQkNsZWFy
c09uTGluZWFyRnJhbWVidWZmZXJBdHRhY2htZW50cyhmYWxzZSksCi0gICAgICAgICAgZG9XaGls
ZUdMU0xDYXVzZXNHUFVIYW5nKGZhbHNlKSwKLSAgICAgICAgICBmaW5pc2hEb2VzTm90Q2F1c2VR
dWVyaWVzVG9CZUF2YWlsYWJsZShmYWxzZSksCi0gICAgICAgICAgYWx3YXlzQ2FsbFVzZVByb2dy
YW1BZnRlckxpbmsoZmFsc2UpLAotICAgICAgICAgIHVucGFja092ZXJsYXBwaW5nUm93c1NlcGFy
YXRlbHlVbnBhY2tCdWZmZXIoZmFsc2UpLAotICAgICAgICAgIGVtdWxhdGVBYnNJbnRGdW5jdGlv
bihmYWxzZSksCi0gICAgICAgICAgYWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvbihmYWxzZSksCi0g
ICAgICAgICAgZW11bGF0ZUlzbmFuRmxvYXQoZmFsc2UpLAotICAgICAgICAgIHVzZVVudXNlZEJs
b2Nrc1dpdGhTdGFuZGFyZE9yU2hhcmVkTGF5b3V0KGZhbHNlKQotICAgIHsKLSAgICB9Ci0KICAg
ICAvLyBXaGVuIHdyaXRpbmcgYSBmbG9hdCB0byBhIG5vcm1hbGl6ZWQgaW50ZWdlciBmcmFtZWJ1
ZmZlciwgZGVza3RvcCBPcGVuR0wgaXMgYWxsb3dlZCB0byB3cml0ZQogICAgIC8vIG9uZSBvZiB0
aGUgdHdvIGNsb3Nlc3Qgbm9ybWFsaXplZCBpbnRlZ2VyIHJlcHJlc2VudGF0aW9ucyAoYWx0aG91
Z2ggcm91bmQgdG8gbmVhcmVzdCBpcwogICAgIC8vIHByZWZlcnJlZCkgKHNlZSBzZWN0aW9uIDIu
My41LjIgb2YgdGhlIEdMIDQuNSBjb3JlIHNwZWNpZmljYXRpb24pLiBPcGVuR0wgRVMgcmVxdWly
ZXMgdGhhdApAQCAtMzYsMTggKzIxLDE4IEBAIHN0cnVjdCBXb3JrYXJvdW5kc0dMCiAgICAgLy8g
c2VjdGlvbiAyLjEuMiBvZiB0aGUgT3BlbkdMIEVTIDIuMC4yNSBzcGVjKS4gIFRoaXMgaXNzdWUg
b25seSBzaG93cyB1cCBvbiBJbnRlbCBhbmQgQU1ECiAgICAgLy8gZHJpdmVycyBvbiBmcmFtZWJ1
ZmZlciBmb3JtYXRzIHRoYXQgaGF2ZSAxLWJpdCBhbHBoYSwgd29yayBhcm91bmQgdGhpcyBieSB1
c2luZyBoaWdoZXIKICAgICAvLyBwcmVjaXNpb24gZm9ybWF0cyBpbnN0ZWFkLgotICAgIGJvb2wg
YXZvaWQxQml0QWxwaGFUZXh0dXJlRm9ybWF0czsKKyAgICBib29sIGF2b2lkMUJpdEFscGhhVGV4
dHVyZUZvcm1hdHMgPSBmYWxzZTsKIAogICAgIC8vIE9uIHNvbWUgb2xkZXIgSW50ZWwgZHJpdmVy
cywgR0xfUkdCQTQgaXMgbm90IGNvbG9yIHJlbmRlcmFibGUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cwogICAgIC8vIHJldHVybnMgR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQuIFdvcmsgYXJv
dW5kIHRoaXMgYnkgdXNpbmcgYSBrbm93biBjb2xvci1yZW5kZXJhYmxlCiAgICAgLy8gZm9ybWF0
LgotICAgIGJvb2wgcmdiYTRJc05vdFN1cHBvcnRlZEZvckNvbG9yUmVuZGVyaW5nOworICAgIGJv
b2wgcmdiYTRJc05vdFN1cHBvcnRlZEZvckNvbG9yUmVuZGVyaW5nID0gZmFsc2U7CiAKICAgICAv
LyBXaGVuIGNsZWFyaW5nIGEgZnJhbWVidWZmZXIgb24gSW50ZWwgb3IgQU1EIGRyaXZlcnMsIHdo
ZW4gR0xfRlJBTUVCVUZGRVJfU1JHQiBpcyBlbmFibGVkLCB0aGUKICAgICAvLyBkcml2ZXIgY2xl
YXJzIHRvIHRoZSBsaW5lYXJpemVkIGNsZWFyIGNvbG9yIGRlc3BpdGUgdGhlIGZyYW1lYnVmZmVy
IG5vdCBzdXBwb3J0aW5nIFNSR0IKICAgICAvLyBibGVuZGluZy4gIEl0IG9ubHkgc2VlbXMgdG8g
ZG8gdGhpcyB3aGVuIHRoZSBmcmFtZWJ1ZmZlciBoYXMgb25seSBsaW5lYXIgYXR0YWNobWVudHMs
IG1peGVkCiAgICAgLy8gYXR0YWNobWVudHMgYXBwZWFyIHRvIGdldCB0aGUgY29ycmVjdCBjbGVh
ciBjb2xvci4KLSAgICBib29sIGRvZXNTUkdCQ2xlYXJzT25MaW5lYXJGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRzOworICAgIGJvb2wgZG9lc1NSR0JDbGVhcnNPbkxpbmVhckZyYW1lYnVmZmVyQXR0YWNo
bWVudHMgPSBmYWxzZTsKIAogICAgIC8vIE9uIE1hYyBzb21lIEdMU0wgY29uc3RydWN0cyBpbnZv
bHZpbmcgZG8td2hpbGUgbG9vcHMgY2F1c2UgR1BVIGhhbmdzLCBzdWNoIGFzIHRoZSBmb2xsb3dp
bmc6CiAgICAgLy8gIGludCBpID0gMTsKQEAgLTU2LDM0ICs0MSwzNCBAQCBzdHJ1Y3QgV29ya2Fy
b3VuZHNHTAogICAgIC8vICAgICAgY29udGludWU7CiAgICAgLy8gIH0gd2hpbGUgKGkgPiAwKQog
ICAgIC8vIFdvcmsgYXJvdW5kIHRoaXMgYnkgcmV3cml0aW5nIHRoZSBkby13aGlsZSB0byB1c2Ug
YW5vdGhlciBHTFNMIGNvbnN0cnVjdCAoYmxvY2sgKyB3aGlsZSkKLSAgICBib29sIGRvV2hpbGVH
TFNMQ2F1c2VzR1BVSGFuZzsKKyAgICBib29sIGRvV2hpbGVHTFNMQ2F1c2VzR1BVSGFuZyA9IGZh
bHNlOwogCiAgICAgLy8gQ2FsbGluZyBnbEZpbmlzaCBkb2Vzbid0IGNhdXNlIGFsbCBxdWVyaWVz
IHRvIHJlcG9ydCB0aGF0IHRoZSByZXN1bHQgaXMgYXZhaWxhYmxlIG9uIHNvbWUKICAgICAvLyAo
TlZJRElBKSBkcml2ZXJzLiAgSXQgd2FzIGZvdW5kIHRoYXQgZW5hYmxpbmcgR0xfREVCVUdfT1VU
UFVUX1NZTkNIUk9OT1VTIGJlZm9yZSB0aGUgZmluaXNoCiAgICAgLy8gY2F1c2VzIGl0IHRvIGZ1
bGx5IGZpbmlzaC4KLSAgICBib29sIGZpbmlzaERvZXNOb3RDYXVzZVF1ZXJpZXNUb0JlQXZhaWxh
YmxlOworICAgIGJvb2wgZmluaXNoRG9lc05vdENhdXNlUXVlcmllc1RvQmVBdmFpbGFibGUgPSBm
YWxzZTsKIAogICAgIC8vIEFsd2F5cyBjYWxsIHVzZVByb2dyYW0gYWZ0ZXIgYSBzdWNjZXNzZnVs
IGxpbmsgdG8gYXZvaWQgYSBkcml2ZXIgYnVnLgogICAgIC8vIFRoaXMgd29ya2Fyb3VuZCBpcyBt
ZWFudCB0byByZXByb2R1Y2UgdGhlIHVzZV9jdXJyZW50X3Byb2dyYW1fYWZ0ZXJfc3VjY2Vzc2Z1
bF9saW5rCiAgICAgLy8gd29ya2Fyb3VuZCBpbiBDaHJvbWl1bSAoaHR0cDovL2NyYnVnLmNvbS8x
MTAyNjMpLiBJdCBoYXMgYmVlbiBzaG93biB0aGF0IHRoaXMgd29ya2Fyb3VuZCBpcwogICAgIC8v
IG5vdCBuZWNlc3NhcnkgZm9yIE1hY09TWCAxMC45IGFuZCBoaWdoZXIgKGh0dHA6Ly9jcnJldi5j
b20vMzllYjUzNWIpLgotICAgIGJvb2wgYWx3YXlzQ2FsbFVzZVByb2dyYW1BZnRlckxpbms7Cisg
ICAgYm9vbCBhbHdheXNDYWxsVXNlUHJvZ3JhbUFmdGVyTGluayA9IGZhbHNlOwogCiAgICAgLy8g
SW4gdGhlIGNhc2Ugb2YgdW5wYWNraW5nIGZyb20gYSBwaXhlbCB1bnBhY2sgYnVmZmVyLCB1bnBh
Y2sgb3ZlcmxhcHBpbmcgcm93cyByb3cgYnkgcm93LgotICAgIGJvb2wgdW5wYWNrT3ZlcmxhcHBp
bmdSb3dzU2VwYXJhdGVseVVucGFja0J1ZmZlcjsKKyAgICBib29sIHVucGFja092ZXJsYXBwaW5n
Um93c1NlcGFyYXRlbHlVbnBhY2tCdWZmZXIgPSBmYWxzZTsKICAgICAvLyBJbiB0aGUgY2FzZSBv
ZiBwYWNraW5nIHRvIGEgcGl4ZWwgcGFjayBidWZmZXIsIHBhY2sgb3ZlcmxhcHBpbmcgcm93cyBy
b3cgYnkgcm93LgotICAgIGJvb2wgcGFja092ZXJsYXBwaW5nUm93c1NlcGFyYXRlbHlQYWNrQnVm
ZmVyOworICAgIGJvb2wgcGFja092ZXJsYXBwaW5nUm93c1NlcGFyYXRlbHlQYWNrQnVmZmVyID0g
ZmFsc2U7CiAKICAgICAvLyBEdXJpbmcgaW5pdGlhbGl6YXRpb24sIGFzc2lnbiB0aGUgY3VycmVu
dCB2ZXJ0ZXggYXR0cmlidXRlcyB0byB0aGUgc3BlYy1tYW5kYXRlZCBkZWZhdWx0cy4KLSAgICBi
b29sIGluaXRpYWxpemVDdXJyZW50VmVydGV4QXR0cmlidXRlczsKKyAgICBib29sIGluaXRpYWxp
emVDdXJyZW50VmVydGV4QXR0cmlidXRlcyA9IGZhbHNlOwogCiAgICAgLy8gYWJzKGkpIHdoZXJl
IGkgaXMgYW4gaW50ZWdlciByZXR1cm5zIHVuZXhwZWN0ZWQgcmVzdWx0IG9uIEludGVsIE1hYy4K
ICAgICAvLyBFbXVsYXRlIGFicyhpKSB3aXRoIGkgKiBzaWduKGkpLgotICAgIGJvb2wgZW11bGF0
ZUFic0ludEZ1bmN0aW9uOworICAgIGJvb2wgZW11bGF0ZUFic0ludEZ1bmN0aW9uID0gZmFsc2U7
CiAKICAgICAvLyBPbiBJbnRlbCBNYWMsIGNhbGN1bGF0aW9uIG9mIGxvb3AgY29uZGl0aW9ucyBp
biBmb3IgYW5kIHdoaWxlIGxvb3AgaGFzIGJ1Zy4KICAgICAvLyBBZGQgIiYmIHRydWUiIHRvIHRo
ZSBlbmQgb2YgdGhlIGNvbmRpdGlvbiBleHByZXNzaW9uIHRvIHdvcmsgYXJvdW5kIHRoZSBidWcu
Ci0gICAgYm9vbCBhZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uOworICAgIGJvb2wgYWRkQW5kVHJ1
ZVRvTG9vcENvbmRpdGlvbiA9IGZhbHNlOwogCiAgICAgLy8gV2hlbiB1cGxvYWRpbmcgdGV4dHVy
ZXMgZnJvbSBhbiB1bnBhY2sgYnVmZmVyLCBzb21lIGRyaXZlcnMgY291bnQgYW4gZXh0cmEgcm93
IHBhZGRpbmcgd2hlbgogICAgIC8vIGNoZWNraW5nIGlmIHRoZSBwaXhlbCB1bnBhY2sgYnVmZmVy
IGlzIGJpZyBlbm91Z2guIFRyYWNraW5nIGJ1ZzogaHR0cDovL2FuZ2xlYnVnLmNvbS8xNTEyCkBA
IC05NywyMSArODIsNDkgQEAgc3RydWN0IFdvcmthcm91bmRzR0wKICAgICAvLyAgICAgKy0tLS0t
LS1BLS1CCiAgICAgLy8gVGhlIGxhc3QgcGl4ZWwgcmVhZCB3aWxsIGJlIEEsIGJ1dCB0aGUgZHJp
dmVyIHdpbGwgdGhpbmsgaXQgaXMgQiwgY2F1c2luZyBpdCB0byBnZW5lcmF0ZSBhbgogICAgIC8v
IGVycm9yIHdoZW4gdGhlIHBpeGVsIGJ1ZmZlciBpcyBqdXN0IGJpZyBlbm91Z2guCi0gICAgYm9v
bCB1bnBhY2tMYXN0Um93U2VwYXJhdGVseUZvclBhZGRpbmdJbmNsdXNpb247CisgICAgYm9vbCB1
bnBhY2tMYXN0Um93U2VwYXJhdGVseUZvclBhZGRpbmdJbmNsdXNpb24gPSBmYWxzZTsKIAogICAg
IC8vIEVxdWl2YWxlbnQgd29ya2Fyb3VuZCB3aGVuIHVwbG9hZGluZyBkYXRhIGZyb20gYSBwaXhl
bCBwYWNrIGJ1ZmZlci4KLSAgICBib29sIHBhY2tMYXN0Um93U2VwYXJhdGVseUZvclBhZGRpbmdJ
bmNsdXNpb247CisgICAgYm9vbCBwYWNrTGFzdFJvd1NlcGFyYXRlbHlGb3JQYWRkaW5nSW5jbHVz
aW9uID0gZmFsc2U7CiAKICAgICAvLyBPbiBzb21lIEludGVsIGRyaXZlcnMsIHVzaW5nIGlzbmFu
KCkgb24gaGlnaHAgZmxvYXQgd2lsbCBnZXQgd3JvbmcgYW5zd2VyLiBUbyB3b3JrIGFyb3VuZAog
ICAgIC8vIHRoaXMgYnVnLCB3ZSB1c2UgYW4gZXhwcmVzc2lvbiB0byBlbXVsYXRlIGZ1bmN0aW9u
IGlzbmFuKCkuCiAgICAgLy8gVHJhY2tpbmcgYnVnOiBodHRwOi8vY3JidWcuY29tLzY1MDU0Nwot
ICAgIGJvb2wgZW11bGF0ZUlzbmFuRmxvYXQ7CisgICAgYm9vbCBlbXVsYXRlSXNuYW5GbG9hdCA9
IGZhbHNlOwogCiAgICAgLy8gT24gTWFjIHdpdGggT3BlbkdMIHZlcnNpb24gNC4xLCB1bnVzZWQg
c3RkMTQwIG9yIHNoYXJlZCB1bmlmb3JtIGJsb2NrcyB3aWxsIGJlCiAgICAgLy8gdHJlYXRlZCBh
cyBpbmFjdGl2ZSB3aGljaCBpcyBub3QgY29uc2lzdGVudCB3aXRoIFdlYkdMMi4wIHNwZWMuIFJl
ZmVyZW5jZSBhbGwgbWVtYmVycyBpbiBhCiAgICAgLy8gdW51c2VkIHN0ZDE0MCBvciBzaGFyZWQg
dW5pZm9ybSBibG9jayBhdCB0aGUgYmVnaW5uaW5nIG9mIG1haW4gdG8gd29yayBhcm91bmQgaXQu
Ci0gICAgYm9vbCB1c2VVbnVzZWRCbG9ja3NXaXRoU3RhbmRhcmRPclNoYXJlZExheW91dDsKKyAg
ICBib29sIHVzZVVudXNlZEJsb2Nrc1dpdGhTdGFuZGFyZE9yU2hhcmVkTGF5b3V0ID0gZmFsc2U7
CisKKyAgICAvLyBUaGlzIGZsYWcgd2lsbCBrZWVwIGludmFyaWFudCBkZWNsYXJhdGlvbiBmb3Ig
aW5wdXQgaW4gZnJhZ21lbnQgc2hhZGVyIGZvciBHTFNMID49NC4yMAorICAgIC8vIG9uIEFNRC4K
KyAgICBib29sIGRvbnRSZW1vdmVJbnZhcmlhbnRGb3JGcmFnbWVudElucHV0ID0gZmFsc2U7CisK
KyAgICAvLyBUaGlzIGZsYWcgaXMgdXNlZCB0byBmaXggc3BlYyBkaWZmZXJlbmNlIGJldHdlZW4g
R0xTTCA0LjEgb3IgbG93ZXIgYW5kIEVTU0wzLgorICAgIGJvb2wgcmVtb3ZlSW52YXJpYW50QW5k
Q2VudHJvaWRGb3JFU1NMMyA9IGZhbHNlOworCisgICAgLy8gT24gSW50ZWwgTWFjIE9TWCAxMC4x
MSBkcml2ZXIsIHVzaW5nICItZmxvYXQiIHdpbGwgZ2V0IHdyb25nIGFuc3dlci4gVXNlICIwLjAg
LSBmbG9hdCIgdG8KKyAgICAvLyByZXBsYWNlICItZmxvYXQiLgorICAgIC8vIFRyYWNraW5nIGJ1
ZzogaHR0cDovL2NyYnVnLmNvbS8zMDgzNjYKKyAgICBib29sIHJld3JpdGVGbG9hdFVuYXJ5TWlu
dXNPcGVyYXRvciA9IGZhbHNlOworCisgICAgLy8gT24gTlZJRElBIGRyaXZlcnMsIGF0YW4oeSwg
eCkgbWF5IHJldHVybiBhIHdyb25nIGFuc3dlci4KKyAgICAvLyBUcmFja2luZyBidWc6IGh0dHA6
Ly9jcmJ1Zy5jb20vNjcyMzgwCisgICAgYm9vbCBlbXVsYXRlQXRhbjJGbG9hdCA9IGZhbHNlOwor
CisgICAgLy8gU29tZSBkcml2ZXJzIHNlZW0gdG8gZm9yZ2V0IGFib3V0IFVCTyBiaW5kaW5ncyB3
aGVuIGxvYWRpbmcgcHJvZ3JhbSBiaW5hcmllcy4gV29yayBhcm91bmQKKyAgICAvLyB0aGlzIGJ5
IHJlLWFwcGx5aW5nIHRoZSBiaW5kaW5ncyBhZnRlciB0aGUgcHJvZ3JhbSBiaW5hcnkgaXMgbG9h
ZGVkLgorICAgIC8vIFRoaXMgb25seSBzZWVtcyB0byBhZmZlY3QgQU1EIE9wZW5HTCBkcml2ZXJz
LCBhbmQgc29tZSBBbmRyb2lkIGRldmljZXMuCisgICAgLy8gaHR0cDovL2FuZ2xlYnVnLmNvbS8x
NjM3CisgICAgYm9vbCByZWFwcGx5VUJPQmluZGluZ3NBZnRlckxvYWRpbmdCaW5hcnlQcm9ncmFt
ID0gZmFsc2U7CisKKyAgICAvLyBTb21lIE9wZW5HTCBkcml2ZXJzIHJldHVybiAwIHdoZW4gd2Ug
cXVlcnkgTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFIGluIGFuIE9wZW5HTCA0LjQgb3IKKyAgICAv
LyBoaWdoZXIgY29udGV4dC4KKyAgICAvLyBUaGlzIG9ubHkgc2VlbXMgdG8gYWZmZWN0IEFNRCBP
cGVuR0wgZHJpdmVycy4KKyAgICAvLyBUcmFja2luZyBidWc6IGh0dHA6Ly9hbmdsZWJ1Zy5jb20v
MTkzNgorICAgIGJvb2wgZW11bGF0ZU1heFZlcnRleEF0dHJpYlN0cmlkZSA9IGZhbHNlOwogfTsK
LX0KK30gIC8vIG5hbWVzcGFjZSByeAogCiAjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0dM
X1dPUktBUk9VTkRTR0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLmgKaW5kZXgg
MGJhNTdiNjJiY2QzZDFjNWQ1YjAyODU2YzkzZjQ3ZGNkYjgzOThmMi4uNDA3ODM3YWQ5YmM5MjIx
ZjNkODMyZGE4ZmQzOThiOTE3MmE2ZjNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5
Q0dMLmgKQEAgLTIwLDI1ICsyMCwyMiBAQCBuYW1lc3BhY2UgcngKIGNsYXNzIERpc3BsYXlDR0wg
OiBwdWJsaWMgRGlzcGxheUdMCiB7CiAgIHB1YmxpYzoKLSAgICBEaXNwbGF5Q0dMKCk7CisgICAg
RGlzcGxheUNHTChjb25zdCBlZ2w6OkRpc3BsYXlTdGF0ZSAmc3RhdGUpOwogICAgIH5EaXNwbGF5
Q0dMKCkgb3ZlcnJpZGU7CiAKICAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoZWdsOjpEaXNwbGF5
ICpkaXNwbGF5KSBvdmVycmlkZTsKICAgICB2b2lkIHRlcm1pbmF0ZSgpIG92ZXJyaWRlOwogCiAg
ICAgU3VyZmFjZUltcGwgKmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3Rh
dGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVn
bDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlk
ZTsKICAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJm
YWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRl
OwogICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBl
Z2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIg
c2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAg
JmF0dHJpYnMpIG92ZXJyaWRlOwogICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQaXhtYXBTdXJmYWNl
KGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1h
cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJp
YnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAKQEAgLTU4LDEwICs1NSw5IEBAIGNsYXNzIERp
c3BsYXlDR0wgOiBwdWJsaWMgRGlzcGxheUdMCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVn
bDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6
U3VyZmFjZSAqcmVhZFN1cmZhY2UpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgZWdsOjpFcnJvciBn
ZXREcml2ZXJWZXJzaW9uKHN0ZDo6c3RyaW5nICp2ZXJzaW9uKSBjb25zdCBvdmVycmlkZTsKLQog
ICBwcml2YXRlOgogICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpnZXRGdW5jdGlvbnNHTCgpIGNvbnN0
IG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgbWFrZUN1cnJlbnRTdXJmYWNlbGVzcyhnbDo6Q29u
dGV4dCAqY29udGV4dCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdlbmVyYXRlRXh0ZW5zaW9ucyhl
Z2w6OkRpc3BsYXlFeHRlbnNpb25zICpvdXRFeHRlbnNpb25zKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIGdlbmVyYXRlQ2FwcyhlZ2w6OkNhcHMgKm91dENhcHMpIGNvbnN0IG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2NnbC9EaXNwbGF5Q0dMLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLm1tCmluZGV4IGI5ZDVmMzliMGMyZDI4MjZi
OTQ5ZGVkMzM0M2E0ZDU0ODkxYmYxNWMuLjhjNzUxMDEwYzUwZTJlYTMwOTU2MTE0Nzc2NWJmMTg2
NWQ4ODQ0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wubW0KQEAgLTQ0LDcg
KzQ0LDggQEAgY2xhc3MgRnVuY3Rpb25zR0xDR0wgOiBwdWJsaWMgRnVuY3Rpb25zR0wKICAgICB2
b2lkICptRHlsaWJIYW5kbGU7CiB9OwogCi1EaXNwbGF5Q0dMOjpEaXNwbGF5Q0dMKCkgOiBEaXNw
bGF5R0woKSwgbUVHTERpc3BsYXkobnVsbHB0ciksIG1GdW5jdGlvbnMobnVsbHB0ciksIG1Db250
ZXh0KG51bGxwdHIpCitEaXNwbGF5Q0dMOjpEaXNwbGF5Q0dMKGNvbnN0IGVnbDo6RGlzcGxheVN0
YXRlICZzdGF0ZSkKKyAgICA6IERpc3BsYXlHTChzdGF0ZSksIG1FR0xEaXNwbGF5KG51bGxwdHIp
LCBtRnVuY3Rpb25zKG51bGxwdHIpLCBtQ29udGV4dChudWxscHRyKQogewogfQogCkBAIC0xMTAs
NyArMTExLDYgQEAgdm9pZCBEaXNwbGF5Q0dMOjp0ZXJtaW5hdGUoKQogfQogCiBTdXJmYWNlSW1w
bCAqRGlzcGxheUNHTDo6Y3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0
ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1
dGVNYXAgJmF0dHJpYnMpCiB7CkBAIC0xMTgsNyArMTE4LDYgQEAgU3VyZmFjZUltcGwgKkRpc3Bs
YXlDR0w6OmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRl
LAogfQogCiBTdXJmYWNlSW1wbCAqRGlzcGxheUNHTDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29u
c3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0
cmlidXRlTWFwICZhdHRyaWJzKQogewogICAgIEVHTGludCB3aWR0aCAgPSBzdGF0aWNfY2FzdDxF
R0xpbnQ+KGF0dHJpYnMuZ2V0KEVHTF9XSURUSCwgMCkpOwpAQCAtMTI3LDggKzEyNiw4IEBAIFN1
cmZhY2VJbXBsICpEaXNwbGF5Q0dMOjpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1
cmZhY2VTdGF0ZSAmc3RhdGUsCiB9CiAKIFN1cmZhY2VJbXBsICpEaXNwbGF5Q0dMOjpjcmVhdGVQ
YnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6
QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKQEAgLTEzNiw3
ICsxMzUsNiBAQCBTdXJmYWNlSW1wbCAqRGlzcGxheUNHTDo6Y3JlYXRlUGJ1ZmZlckZyb21DbGll
bnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJgogfQogCiBTdXJmYWNlSW1wbCAqRGlz
cGxheUNHTDo6Y3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3Rh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0aXZlUGl4bWFwLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVN
YXAgJmF0dHJpYnMpCiB7CkBAIC0yMTAsNiArMjA4LDggQEAgZWdsOjpDb25maWdTZXQgRGlzcGxh
eUNHTDo6Z2VuZXJhdGVDb25maWdzKCkKIAogICAgIGNvbmZpZy5tYXRjaE5hdGl2ZVBpeG1hcCA9
IEVHTF9OT05FOwogCisgICAgY29uZmlnLmNvbG9yQ29tcG9uZW50VHlwZSA9IEVHTF9DT0xPUl9D
T01QT05FTlRfVFlQRV9GSVhFRF9FWFQ7CisKICAgICBjb25maWdzLmFkZChjb25maWcpOwogICAg
IHJldHVybiBjb25maWdzOwogfQpAQCAtMjI4LDggKzIyOCw4IEBAIGVnbDo6RXJyb3IgRGlzcGxh
eUNHTDo6cmVzdG9yZUxvc3REZXZpY2UoKQogCiBib29sIERpc3BsYXlDR0w6OmlzVmFsaWROYXRp
dmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpIGNvbnN0CiB7Ci0gICAgLy8gVE9E
Tyhjd2FsbGV6KSBpbnZlc3RpZ2F0ZSBpbXBsZW1lbnRpbmcgdGhpcwotICAgIHJldHVybiB0cnVl
OworICAgIE5TT2JqZWN0ICpsYXllciA9IHJlaW50ZXJwcmV0X2Nhc3Q8TlNPYmplY3QgKj4od2lu
ZG93KTsKKyAgICByZXR1cm4gW2xheWVyIGlzS2luZE9mQ2xhc3M6W0NBTGF5ZXIgY2xhc3NdXTsK
IH0KIAogc3RkOjpzdHJpbmcgRGlzcGxheUNHTDo6Z2V0VmVuZG9yU3RyaW5nKCkgY29uc3QKQEAg
LTI0NSw2ICsyNDUsMTAgQEAgY29uc3QgRnVuY3Rpb25zR0wgKkRpc3BsYXlDR0w6OmdldEZ1bmN0
aW9uc0dMKCkgY29uc3QKIAogdm9pZCBEaXNwbGF5Q0dMOjpnZW5lcmF0ZUV4dGVuc2lvbnMoZWds
OjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykgY29uc3QKIHsKKyAgICBvdXRFeHRl
bnNpb25zLT5zdXJmYWNlbGVzc0NvbnRleHQgPSB0cnVlOworCisgICAgLy8gQ29udGV4dHMgYXJl
IHZpcnR1YWxpemVkIHNvIHRleHR1cmVzIGNhbiBiZSBzaGFyZWQgZ2xvYmFsbHkKKyAgICBvdXRF
eHRlbnNpb25zLT5kaXNwbGF5VGV4dHVyZVNoYXJlR3JvdXAgPSB0cnVlOwogfQogCiB2b2lkIERp
c3BsYXlDR0w6OmdlbmVyYXRlQ2FwcyhlZ2w6OkNhcHMgKm91dENhcHMpIGNvbnN0CkBAIC0yNjYs
OSArMjcwLDEwIEBAIGVnbDo6RXJyb3IgRGlzcGxheUNHTDo6d2FpdE5hdGl2ZShFR0xpbnQgZW5n
aW5lLAogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0KIAotZWdsOjpFcnJv
ciBEaXNwbGF5Q0dMOjpnZXREcml2ZXJWZXJzaW9uKHN0ZDo6c3RyaW5nICp2ZXJzaW9uKSBjb25z
dAorZWdsOjpFcnJvciBEaXNwbGF5Q0dMOjptYWtlQ3VycmVudFN1cmZhY2VsZXNzKGdsOjpDb250
ZXh0ICpjb250ZXh0KQogewotICAgICp2ZXJzaW9uID0gIiI7Ci0gICAgcmV0dXJuIGVnbDo6RXJy
b3IoRUdMX1NVQ0NFU1MpOworICAgIC8vIFdlIGhhdmUgbm90aGluZyB0byBkbyBhcyBtQ29udGV4
dCBpcyBhbHdheXMgY3VycmVudCwgYW5kIHRoYXQgQ0dMIGlzIHN1cmZhY2VsZXNzIGJ5CisgICAg
Ly8gZGVmYXVsdC4KKyAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7CiB9CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1Bi
dWZmZXJTdXJmYWNlQ0dMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvY2dsL1BidWZmZXJTdXJmYWNlQ0dMLmgKaW5kZXggN2NiYjc0ZGE0YzNhMThi
ODY5MmNmMzk4NWQ0MTJkNDllMGE2Nzk1OS4uZjJjNjBkZGZiNTRkMTU3ZjE3NGZkYTk1M2YyOGVm
NTFhNTEyMWYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFjZUNHTC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VD
R0wuaApAQCAtMjksMTAgKzI5LDEwIEBAIGNsYXNzIFBidWZmZXJTdXJmYWNlQ0dMIDogcHVibGlj
IFN1cmZhY2VHTAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5j
dGlvbnMpOwogICAgIH5QYnVmZmVyU3VyZmFjZUNHTCgpIG92ZXJyaWRlOwogCi0gICAgZWdsOjpF
cnJvciBpbml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBpbml0aWFsaXplKGNv
bnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciBt
YWtlQ3VycmVudCgpIG92ZXJyaWRlOwogCi0gICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJpZGU7
CisgICAgZWdsOjpFcnJvciBzd2FwKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgb3Zl
cnJpZGU7CiAgICAgZWdsOjpFcnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwg
RUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHF1
ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92
ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJl
LCBFR0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKQEAgLTYwLDYgKzYwLDYgQEAgY2xhc3MgUGJ1ZmZl
clN1cmZhY2VDR0wgOiBwdWJsaWMgU3VyZmFjZUdMCiAgICAgR0x1aW50IG1EU1JlbmRlcmJ1ZmZl
cjsKIH07CiAKLX0KK30gIC8vIG5hbWVzcGFjZSByeAogCiAjZW5kaWYgLy8gTElCQU5HTEVfUkVO
REVSRVJfR0xfQ0dMX1BCVUZGRVJTVVJGQUNFQ0dMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1BidWZmZXJTdXJmYWNl
Q0dMLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2NnbC9QYnVmZmVyU3VyZmFjZUNHTC5tbQppbmRleCBjMDNkMzgzNmY4NWU1ZjQwNDdjMjQ2NzU2
ZGM4MWU2ZDk0YjFhOWIxLi40YzNkMTcyNzkzZTcyZjMwMDRlNGI0MzJiYzE3YjgwYWVhNDAwMzE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvY2dsL1BidWZmZXJTdXJmYWNlQ0dMLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wubW0KQEAg
LTU1LDcgKzU1LDcgQEAgUGJ1ZmZlclN1cmZhY2VDR0w6On5QYnVmZmVyU3VyZmFjZUNHTCgpCiAg
ICAgfQogfQogCi1lZ2w6OkVycm9yIFBidWZmZXJTdXJmYWNlQ0dMOjppbml0aWFsaXplKCkKK2Vn
bDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VDR0w6OmluaXRpYWxpemUoY29uc3QgRGlzcGxheUltcGwg
KmRpc3BsYXlJbXBsKQogewogICAgIG1GdW5jdGlvbnMtPmdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1D
b2xvclJlbmRlcmJ1ZmZlcik7CiAgICAgbVN0YXRlTWFuYWdlci0+YmluZFJlbmRlcmJ1ZmZlcihH
TF9SRU5ERVJCVUZGRVIsIG1Db2xvclJlbmRlcmJ1ZmZlcik7CkBAIC04MCw3ICs4MCw3IEBAIGVn
bDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VDR0w6Om1ha2VDdXJyZW50KCkKICAgICByZXR1cm4gZWds
OjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKLWVnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VDR0w6
OnN3YXAoKQorZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUNHTDo6c3dhcChjb25zdCBEaXNwbGF5
SW1wbCAqZGlzcGxheUltcGwpCiB7CiAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1Mp
OwogfQpAQCAtMTQwLDQgKzE0MCw0IEBAIEZyYW1lYnVmZmVySW1wbCAqUGJ1ZmZlclN1cmZhY2VD
R0w6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1SZW5kZXJlci0+Z2V0QmxpdHRlcigpLCBtU3RhdGVNYW5h
Z2VyKTsKIH0KIAotfQorfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VD
R0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9j
Z2wvV2luZG93U3VyZmFjZUNHTC5oCmluZGV4IDEwMzBjNDRhNDAzYjlmMTNhYTMwM2VhZGQ2ZGZh
NGY0MTdhOTljZjAuLjQ0YTViZjc5NGJlYzk3NDY1MWM2NzdhNGYxNTc5MmYzN2M0ZjRhODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9jZ2wvV2luZG93U3VyZmFjZUNHTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvV2luZG93U3VyZmFjZUNHTC5oCkBAIC0xNyw3ICsx
Nyw3IEBAIHR5cGVkZWYgX0NHTENvbnRleHRPYmplY3QgKkNHTENvbnRleHRPYmo7CiBzdHJ1Y3Qg
X19JT1N1cmZhY2U7CiB0eXBlZGVmIF9fSU9TdXJmYWNlICpJT1N1cmZhY2VSZWY7CiAKLUBjbGFz
cyBXZWJTd2FwTGF5ZXI7CitAY2xhc3MgU3dhcExheWVyOwogCiBuYW1lc3BhY2UgcngKIHsKQEAg
LTU2LDE1ICs1NiwxNSBAQCBjbGFzcyBXaW5kb3dTdXJmYWNlQ0dMIDogcHVibGljIFN1cmZhY2VH
TAogICBwdWJsaWM6CiAgICAgV2luZG93U3VyZmFjZUNHTChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0
ZSAmc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckdMICpyZW5kZXJlciwKLSAg
ICAgICAgICAgICAgICAgICAgIENBTGF5ZXIgKmxheWVyLAorICAgICAgICAgICAgICAgICAgICAg
RUdMTmF0aXZlV2luZG93VHlwZSBsYXllciwKICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1
bmN0aW9uc0dMICpmdW5jdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICBDR0xDb250ZXh0T2Jq
IGNvbnRleHQpOwogICAgIH5XaW5kb3dTdXJmYWNlQ0dMKCkgb3ZlcnJpZGU7CiAKLSAgICBlZ2w6
OkVycm9yIGluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUo
Y29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9y
IG1ha2VDdXJyZW50KCkgb3ZlcnJpZGU7CiAKLSAgICBlZ2w6OkVycm9yIHN3YXAoKSBvdmVycmlk
ZTsKKyAgICBlZ2w6OkVycm9yIHN3YXAoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKSBv
dmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHBvc3RTdWJCdWZmZXIoRUdMaW50IHgsIEVHTGludCB5
LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3Ig
cXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTGludCBhdHRyaWJ1dGUsIHZvaWQgKip2YWx1ZSkg
b3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciBiaW5kVGV4SW1hZ2UoZ2w6OlRleHR1cmUgKnRleHR1
cmUsIEVHTGludCBidWZmZXIpIG92ZXJyaWRlOwpAQCAtODAsNyArODAsNyBAQCBjbGFzcyBXaW5k
b3dTdXJmYWNlQ0dMIDogcHVibGljIFN1cmZhY2VHTAogICAgIEZyYW1lYnVmZmVySW1wbCAqY3Jl
YXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkg
b3ZlcnJpZGU7CiAKICAgcHJpdmF0ZToKLSAgICBXZWJTd2FwTGF5ZXIgKm1Td2FwTGF5ZXI7Cisg
ICAgU3dhcExheWVyICptU3dhcExheWVyOwogICAgIFNoYXJlZFN3YXBTdGF0ZSBtU3dhcFN0YXRl
OwogICAgIHVpbnQ2NF90IG1DdXJyZW50U3dhcElkOwogCkBAIC05NSw2ICs5NSw2IEBAIGNsYXNz
IFdpbmRvd1N1cmZhY2VDR0wgOiBwdWJsaWMgU3VyZmFjZUdMCiAgICAgR0x1aW50IG1EU1JlbmRl
cmJ1ZmZlcjsKIH07CiAKLX0KK30gIC8vIG5hbWVzcGFjZSByeAogCiAjZW5kaWYgLy8gTElCQU5H
TEVfUkVOREVSRVJfR0xfQ0dMX1dJTkRPV1NVUkZBQ0VDR0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvV2luZG93U3Vy
ZmFjZUNHTC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9jZ2wvV2luZG93U3VyZmFjZUNHTC5tbQppbmRleCA4MDYwMDllYWE4MjFkYjBmZmVhMjAy
YWZmYmNhMzBiYzM1YWU0OGVjLi5lYTg3OTE5ODNmOTgyYmI0YTg1NmE5MmVhMDY3ZmEzZTU4YWY5
ZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dMLm1tCkBA
IC0xOCw3ICsxOCw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJH
TC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgiCiAK
LUBpbnRlcmZhY2UgV2ViU3dhcExheWVyIDogQ0FPcGVuR0xMYXllcgorQGludGVyZmFjZSBTd2Fw
TGF5ZXIgOiBDQU9wZW5HTExheWVyCiB7CiAgICAgQ0dMQ29udGV4dE9iaiBtRGlzcGxheUNvbnRl
eHQ7CiAKQEAgLTMzLDcgKzMzLDcgQEAKICAgICAgICAgICAgIHdpdGhGdW5jdGlvbnM6KGNvbnN0
IHJ4OjpGdW5jdGlvbnNHTCAqKWZ1bmN0aW9uczsKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdl
YlN3YXBMYXllcgorQGltcGxlbWVudGF0aW9uIFN3YXBMYXllcgogLSAoaWQpaW5pdFdpdGhTaGFy
ZWRTdGF0ZToocng6OlNoYXJlZFN3YXBTdGF0ZSAqKXN3YXBTdGF0ZQogICAgICAgICAgICAgICB3
aXRoQ29udGV4dDooQ0dMQ29udGV4dE9iailkaXNwbGF5Q29udGV4dAogICAgICAgICAgICAgd2l0
aEZ1bmN0aW9uczooY29uc3Qgcng6OkZ1bmN0aW9uc0dMICopZnVuY3Rpb25zCkBAIC0xNDQsMTMg
KzE0NCwxMyBAQAogCiAgICAgV2luZG93U3VyZmFjZUNHTDo6V2luZG93U3VyZmFjZUNHTChjb25z
dCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZW5kZXJlckdMICpyZW5kZXJlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENBTGF5ZXIgKmxheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSBsYXllciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDR0xDb250ZXh0T2JqIGNvbnRl
eHQpCiAgICAgICAgIDogU3VyZmFjZUdMKHN0YXRlLCByZW5kZXJlciksCiAgICAgICAgICAgbVN3
YXBMYXllcihuaWwpLAogICAgICAgICAgIG1DdXJyZW50U3dhcElkKDApLAotICAgICAgICAgIG1M
YXllcihsYXllciksCisgICAgICAgICAgbUxheWVyKHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXllciAq
PihsYXllcikpLAogICAgICAgICAgIG1Db250ZXh0KGNvbnRleHQpLAogICAgICAgICAgIG1GdW5j
dGlvbnMoZnVuY3Rpb25zKSwKICAgICAgICAgICBtU3RhdGVNYW5hZ2VyKHJlbmRlcmVyLT5nZXRT
dGF0ZU1hbmFnZXIoKSksCkBAIC0xOTQsNyArMTk0LDcgQEAgV2luZG93U3VyZmFjZUNHTDo6fldp
bmRvd1N1cmZhY2VDR0woKQogICAgIH0KIH0KIAotZWdsOjpFcnJvciBXaW5kb3dTdXJmYWNlQ0dM
Ojppbml0aWFsaXplKCkKK2VnbDo6RXJyb3IgV2luZG93U3VyZmFjZUNHTDo6aW5pdGlhbGl6ZShj
b25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUltcGwpCiB7CiAgICAgdW5zaWduZWQgd2lkdGggID0g
Z2V0V2lkdGgoKTsKICAgICB1bnNpZ25lZCBoZWlnaHQgPSBnZXRIZWlnaHQoKTsKQEAgLTIxMyw3
ICsyMTMsNyBAQCBlZ2w6OkVycm9yIFdpbmRvd1N1cmZhY2VDR0w6OmluaXRpYWxpemUoKQogICAg
IG1Td2FwU3RhdGUubGFzdFJlbmRlcmVkICAgPSAmbVN3YXBTdGF0ZS50ZXh0dXJlc1sxXTsKICAg
ICBtU3dhcFN0YXRlLmJlaW5nUHJlc2VudGVkID0gJm1Td2FwU3RhdGUudGV4dHVyZXNbMl07CiAK
LSAgICBtU3dhcExheWVyID0gW1tXZWJTd2FwTGF5ZXIgYWxsb2NdIGluaXRXaXRoU2hhcmVkU3Rh
dGU6Jm1Td2FwU3RhdGUKKyAgICBtU3dhcExheWVyID0gW1tTd2FwTGF5ZXIgYWxsb2NdIGluaXRX
aXRoU2hhcmVkU3RhdGU6Jm1Td2FwU3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd2l0aENvbnRleHQ6bUNvbnRleHQKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHdpdGhGdW5jdGlvbnM6bUZ1bmN0aW9uc107CiAgICAgW21M
YXllciBhZGRTdWJsYXllcjptU3dhcExheWVyXTsKQEAgLTIzNyw3ICsyMzcsNyBAQCBlZ2w6OkVy
cm9yIFdpbmRvd1N1cmZhY2VDR0w6Om1ha2VDdXJyZW50KCkKICAgICByZXR1cm4gZWdsOjpFcnJv
cihFR0xfU1VDQ0VTUyk7CiB9CiAKLWVnbDo6RXJyb3IgV2luZG93U3VyZmFjZUNHTDo6c3dhcCgp
CitlZ2w6OkVycm9yIFdpbmRvd1N1cmZhY2VDR0w6OnN3YXAoY29uc3QgRGlzcGxheUltcGwgKmRp
c3BsYXlJbXBsKQogewogICAgIG1GdW5jdGlvbnMtPmZsdXNoKCk7CiAgICAgbVN3YXBTdGF0ZS5i
ZWluZ1JlbmRlcmVkLT5zd2FwSWQgPSArK21DdXJyZW50U3dhcElkOwpAQCAtMzI5LDQgKzMyOSw0
IEBAIEZyYW1lYnVmZmVySW1wbCAqV2luZG93U3VyZmFjZUNHTDo6Y3JlYXRlRGVmYXVsdEZyYW1l
YnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1TdGF0ZU1hbmFnZXIpOwogfQogCi19Cit9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRGlz
cGxheUVHTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZWdsL0Rpc3BsYXlFR0wuY3BwCmluZGV4IDk4OGIyMzNiNGY3Njg0Nzg3Mjk0YzI1M2Uy
OTVjMzE5OWY3MjVkYWYuLmQ3MjE1ZDBhOTYyYmM2NTcyZmM1NzAzY2JmMTcyYWY3NTFkMjgyOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9lZ2wvRGlzcGxheUVHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9EaXNwbGF5RUdMLmNwcApAQCAtMTMsOCArMTMsOCBA
QCBuYW1lc3BhY2UgcngKIAogI2RlZmluZSBFR0xfTk9fQ09ORklHICgoRUdMQ29uZmlnKTApCiAK
LURpc3BsYXlFR0w6OkRpc3BsYXlFR0woKQotICAgIDogRGlzcGxheUdMKCksCitEaXNwbGF5RUdM
OjpEaXNwbGF5RUdMKGNvbnN0IGVnbDo6RGlzcGxheVN0YXRlICZzdGF0ZSkKKyAgICA6IERpc3Bs
YXlHTChzdGF0ZSksCiAgICAgICBtRUdMKG51bGxwdHIpLAogICAgICAgbUNvbmZpZyhFR0xfTk9f
Q09ORklHKSwKICAgICAgIG1Db250ZXh0KEVHTF9OT19DT05URVhUKSwKQEAgLTEwMiw2ICsxMDIs
OSBAQCB2b2lkIERpc3BsYXlFR0w6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRl
bnNpb25zICpvdXRFeHRlbnNpb25zKSBjb25zdAogICAgICAgICBtRUdMLT5oYXNFeHRlbnNpb24o
IkVHTF9FWFRfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcyIpOwogCiAgICAgb3V0RXh0ZW5zaW9u
cy0+cG9zdFN1YkJ1ZmZlciA9IGZhbHNlOyAgLy8gU2luY2UgU3VyZmFjZUVHTDo6cG9zdFN1YkJ1
ZmZlciBpcyBub3QgaW1wbGVtZW50ZWQKKworICAgIC8vIENvbnRleHRzIGFyZSB2aXJ0dWFsaXpl
ZCBzbyB0ZXh0dXJlcyBjYW4gYmUgc2hhcmVkIGdsb2JhbGx5CisgICAgb3V0RXh0ZW5zaW9ucy0+
ZGlzcGxheVRleHR1cmVTaGFyZUdyb3VwID0gdHJ1ZTsKIH0KIAogdm9pZCBEaXNwbGF5RUdMOjpn
ZW5lcmF0ZUNhcHMoZWdsOjpDYXBzICpvdXRDYXBzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9EaXNwbGF5RUdM
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWds
L0Rpc3BsYXlFR0wuaAppbmRleCBlNDk4Y2Q3OWE3Nzk3NmM4ODNiODcyYzBmYTRjMTEzYTEwODdl
NTdhLi41NGY4YTVhOWM4MTBkNDBiMzUwMjY0ODhiMzU4ZTdjN2NjMzY0NzNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Rp
c3BsYXlFR0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvZWdsL0Rpc3BsYXlFR0wuaApAQCAtMTgsNyArMTgsNyBAQCBuYW1lc3BhY2UgcngK
IGNsYXNzIERpc3BsYXlFR0wgOiBwdWJsaWMgRGlzcGxheUdMCiB7CiAgIHB1YmxpYzoKLSAgICBE
aXNwbGF5RUdMKCk7CisgICAgRGlzcGxheUVHTChjb25zdCBlZ2w6OkRpc3BsYXlTdGF0ZSAmc3Rh
dGUpOwogICAgIH5EaXNwbGF5RUdMKCkgb3ZlcnJpZGU7CiAKICAgICBzdGQ6OnN0cmluZyBnZXRW
ZW5kb3JTdHJpbmcoKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvUGJ1ZmZlclN1cmZhY2VFR0wu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Vn
bC9QYnVmZmVyU3VyZmFjZUVHTC5jcHAKaW5kZXggNjhkYTlmMmI4ZGU3MGE3M2Y5YTIyZjczMzUz
NWNhMDE3ZTM5ZWE1Ny4uNGRkNjM3MDI4ZjMzYTJhMWVhYTQwZTNmMmU5MmVhY2M3MjUxZDdmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2VnbC9QYnVmZmVyU3VyZmFjZUVHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9QYnVmZmVyU3VyZmFjZUVHTC5jcHAKQEAg
LTI1LDcgKzI1LDcgQEAgUGJ1ZmZlclN1cmZhY2VFR0w6On5QYnVmZmVyU3VyZmFjZUVHTCgpCiB7
CiB9CiAKLWVnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VFR0w6OmluaXRpYWxpemUoKQorZWdsOjpF
cnJvciBQYnVmZmVyU3VyZmFjZUVHTDo6aW5pdGlhbGl6ZShjb25zdCBEaXNwbGF5SW1wbCAqZGlz
cGxheUltcGwpCiB7CiAgICAgbVN1cmZhY2UgPSBtRUdMLT5jcmVhdGVQYnVmZmVyU3VyZmFjZSht
Q29uZmlnLCBtQXR0cmliTGlzdC5kYXRhKCkpOwogICAgIGlmIChtU3VyZmFjZSA9PSBFR0xfTk9f
U1VSRkFDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9lZ2wvUGJ1ZmZlclN1cmZhY2VFR0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvUGJ1ZmZlclN1cmZhY2VFR0wuaApp
bmRleCBmZjU1N2YyY2EwZTlkYmU4Y2RlYjllZjMxNjRjNzZiMzVkMDBhMTI2Li5mYjRmZTZiNzFj
NjcyMGZhZGI3OWUxN2FjNGIyMzM5NzE0MzE0YjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1BidWZmZXJTdXJmYWNlRUdM
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2VnbC9QYnVmZmVyU3VyZmFjZUVHTC5oCkBAIC0yOCw3ICsyOCw3IEBAIGNsYXNzIFBidWZmZXJT
dXJmYWNlRUdMIDogcHVibGljIFN1cmZhY2VFR0wKICAgICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJlckdMICpyZW5kZXJlcik7CiAgICAgflBidWZmZXJTdXJmYWNlRUdMKCkgb3ZlcnJpZGU7CiAK
LSAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIGlu
aXRpYWxpemUoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKSBvdmVycmlkZTsKIH07CiAK
IH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9TdXJmYWNlRUdMLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvU3VyZmFjZUVHTC5jcHAK
aW5kZXggMzg4ODMyYjJhNmEzNDJiY2Y3YWExNGIxNGZkYWVmMjViMzgxNWQwMi4uMzY0ZGVmOTZk
YjU4ZjgxNDNkM2NkMTBhOGZjMWQ0MWE5MjNhYThhZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9TdXJmYWNlRUdMLmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWds
L1N1cmZhY2VFR0wuY3BwCkBAIC0zMyw3ICszMyw2IEBAIFN1cmZhY2VFR0w6On5TdXJmYWNlRUdM
KCkKICAgICBpZiAobVN1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0UpCiAgICAgewogICAgICAgICBF
R0xCb29sZWFuIHN1Y2Nlc3MgPSBtRUdMLT5kZXN0cm95U3VyZmFjZShtU3VyZmFjZSk7Ci0gICAg
ICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUoc3VjY2Vzcyk7CiAgICAgICAgIEFTU0VSVChz
dWNjZXNzID09IEVHTF9UUlVFKTsKICAgICB9CiB9CkBAIC00OCw3ICs0Nyw3IEBAIGVnbDo6RXJy
b3IgU3VyZmFjZUVHTDo6bWFrZUN1cnJlbnQoKQogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9T
VUNDRVNTKTsKIH0KIAotZWdsOjpFcnJvciBTdXJmYWNlRUdMOjpzd2FwKCkKK2VnbDo6RXJyb3Ig
U3VyZmFjZUVHTDo6c3dhcChjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUltcGwpCiB7CiAgICAg
RUdMQm9vbGVhbiBzdWNjZXNzID0gbUVHTC0+c3dhcEJ1ZmZlcnMobVN1cmZhY2UpOwogICAgIGlm
IChzdWNjZXNzID09IEVHTF9GQUxTRSkKQEAgLTk1LDcgKzk0LDcgQEAgdm9pZCBTdXJmYWNlRUdM
OjpzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFsKQogICAgIEVHTEJvb2xlYW4gc3VjY2Vz
cyA9IG1FR0wtPnN3YXBJbnRlcnZhbChpbnRlcnZhbCk7CiAgICAgaWYgKHN1Y2Nlc3MgPT0gRUdM
X0ZBTFNFKQogICAgIHsKLSAgICAgICAgRVJSKCJlZ2xTd2FwSW50ZXJ2YWwgZXJyb3IgMHglMDR4
IiwgbUVHTC0+Z2V0RXJyb3IoKSk7CisgICAgICAgIEVSUigpIDw8ICJlZ2xTd2FwSW50ZXJ2YWwg
ZXJyb3IgIiA8PCBlZ2w6OkVycm9yKG1FR0wtPmdldEVycm9yKCkpOwogICAgICAgICBBU1NFUlQo
ZmFsc2UpOwogICAgIH0KIH0KQEAgLTEwNCw3ICsxMDMsNiBAQCBFR0xpbnQgU3VyZmFjZUVHTDo6
Z2V0V2lkdGgoKSBjb25zdAogewogICAgIEVHTGludCB2YWx1ZTsKICAgICBFR0xCb29sZWFuIHN1
Y2Nlc3MgPSBtRUdMLT5xdWVyeVN1cmZhY2UobVN1cmZhY2UsIEVHTF9XSURUSCwgJnZhbHVlKTsK
LSAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHN1Y2Nlc3MpOwogICAgIEFTU0VSVChzdWNj
ZXNzID09IEVHTF9UUlVFKTsKICAgICByZXR1cm4gdmFsdWU7CiB9CkBAIC0xMTMsNyArMTExLDYg
QEAgRUdMaW50IFN1cmZhY2VFR0w6OmdldEhlaWdodCgpIGNvbnN0CiB7CiAgICAgRUdMaW50IHZh
bHVlOwogICAgIEVHTEJvb2xlYW4gc3VjY2VzcyA9IG1FR0wtPnF1ZXJ5U3VyZmFjZShtU3VyZmFj
ZSwgRUdMX0hFSUdIVCwgJnZhbHVlKTsKLSAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHN1
Y2Nlc3MpOwogICAgIEFTU0VSVChzdWNjZXNzID09IEVHTF9UUlVFKTsKICAgICByZXR1cm4gdmFs
dWU7CiB9CkBAIC0xMjgsNyArMTI1LDYgQEAgRUdMaW50IFN1cmZhY2VFR0w6OmdldFN3YXBCZWhh
dmlvcigpIGNvbnN0CiB7CiAgICAgRUdMaW50IHZhbHVlOwogICAgIEVHTEJvb2xlYW4gc3VjY2Vz
cyA9IG1FR0wtPnF1ZXJ5U3VyZmFjZShtU3VyZmFjZSwgRUdMX1NXQVBfQkVIQVZJT1IsICZ2YWx1
ZSk7Ci0gICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShzdWNjZXNzKTsKICAgICBBU1NFUlQo
c3VjY2VzcyA9PSBFR0xfVFJVRSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9TdXJm
YWNlRUdMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvZWdsL1N1cmZhY2VFR0wuaAppbmRleCBlZTE1NjhjOWU3Yjk5YmRjMDdkNzc0OTFlNWY4M2Q3
ODhkZWZkMTk0Li42MDMzYWNlNTRlMzlmMmFmNjM3YjgzYjA0MTQzN2NlMGMyYzRmMWQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
ZWdsL1N1cmZhY2VFR0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvZWdsL1N1cmZhY2VFR0wuaApAQCAtMjksNyArMjksNyBAQCBjbGFzcyBT
dXJmYWNlRUdMIDogcHVibGljIFN1cmZhY2VHTAogICAgIH5TdXJmYWNlRUdMKCkgb3ZlcnJpZGU7
CiAKICAgICBlZ2w6OkVycm9yIG1ha2VDdXJyZW50KCkgb3ZlcnJpZGU7Ci0gICAgZWdsOjpFcnJv
ciBzd2FwKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBzd2FwKGNvbnN0IERpc3BsYXlJbXBs
ICpkaXNwbGF5SW1wbCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciBwb3N0U3ViQnVmZmVyKEVH
TGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSBvdmVycmlkZTsK
ICAgICBlZ2w6OkVycm9yIHF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRl
LCB2b2lkICoqdmFsdWUpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgYmluZFRleEltYWdlKGds
OjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvV2lu
ZG93U3VyZmFjZUVHTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvZWdsL1dpbmRvd1N1cmZhY2VFR0wuY3BwCmluZGV4IGRiMjI2ZWUxOGYxNjEw
Njg1Njg2NzBmYzllYWE0NzVmODQwNWZkZDkuLmM0ZDM4NTM2NTE5YzY5M2MyN2E2MGYwZWU3ZTcw
MTcwYTQ1OTc3YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9lZ2wvV2luZG93U3VyZmFjZUVHTC5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9XaW5kb3dTdXJmYWNl
RUdMLmNwcApAQCAtMjYsNyArMjYsNyBAQCBXaW5kb3dTdXJmYWNlRUdMOjp+V2luZG93U3VyZmFj
ZUVHTCgpCiB7CiB9CiAKLWVnbDo6RXJyb3IgV2luZG93U3VyZmFjZUVHTDo6aW5pdGlhbGl6ZSgp
CitlZ2w6OkVycm9yIFdpbmRvd1N1cmZhY2VFR0w6OmluaXRpYWxpemUoY29uc3QgRGlzcGxheUlt
cGwgKmRpc3BsYXlJbXBsKQogewogICAgIG1TdXJmYWNlID0gbUVHTC0+Y3JlYXRlV2luZG93U3Vy
ZmFjZShtQ29uZmlnLCBtV2luZG93LCBtQXR0cmliTGlzdC5kYXRhKCkpOwogICAgIGlmIChtU3Vy
ZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvV2luZG93U3VyZmFjZUVHTC5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9XaW5kb3dT
dXJmYWNlRUdMLmgKaW5kZXggZjlkYTRjMjdjNGFmNWRjMzI4Zjg1N2I4MjNlYzdmYTIxNzkyZWM3
OS4uNTFmODk0NTkwYjY1NzVhYzQ5OGZiM2Q4Zjg3NTFhNTk4Y2Q3YmUzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9XaW5k
b3dTdXJmYWNlRUdMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2VnbC9XaW5kb3dTdXJmYWNlRUdMLmgKQEAgLTI2LDcgKzI2LDcgQEAgY2xh
c3MgV2luZG93U3VyZmFjZUVHTCA6IHB1YmxpYyBTdXJmYWNlRUdMCiAgICAgICAgICAgICAgICAg
ICAgICBSZW5kZXJlckdMICpyZW5kZXJlcik7CiAgICAgfldpbmRvd1N1cmZhY2VFR0woKSBvdmVy
cmlkZTsKIAotICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworICAgIGVnbDo6
RXJyb3IgaW5pdGlhbGl6ZShjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUltcGwpIG92ZXJyaWRl
OwogCiAgIHByaXZhdGU6CiAgICAgRUdMTmF0aXZlV2luZG93VHlwZSBtV2luZG93OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Vn
bC9hbmRyb2lkL0Rpc3BsYXlBbmRyb2lkLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5kcm9pZC9EaXNwbGF5QW5kcm9pZC5jcHAKaW5k
ZXggNDk1NmM1YjNmZTg1ZmNiNDVkZGNiZmQ1Yzc3MGQzMDJlN2IwN2RhNi4uMzhkYWQwMGY1MWEx
Y2FjMTY3N2MzZjdkNDM0ZjNjZmNkZjIxMjg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9hbmRyb2lkL0Rpc3BsYXlBbmRy
b2lkLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZWdsL2FuZHJvaWQvRGlzcGxheUFuZHJvaWQuY3BwCkBAIC0xMCw2ICsxMCw3IEBACiAK
ICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9EaXNwbGF5Lmgi
CisjaW5jbHVkZSAibGliQU5HTEUvU3VyZmFjZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9n
bC9lZ2wvYW5kcm9pZC9EaXNwbGF5QW5kcm9pZC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2dsL2VnbC9GdW5jdGlvbnNFR0xETC5oIgpAQCAtMzEsNyArMzIsOCBAQCBjb25zdCBjaGFy
ICpHZXRFR0xQYXRoKCkKIG5hbWVzcGFjZSByeAogewogCi1EaXNwbGF5QW5kcm9pZDo6RGlzcGxh
eUFuZHJvaWQoKSA6IERpc3BsYXlFR0woKSwgbUR1bW15UGJ1ZmZlcihFR0xfTk9fU1VSRkFDRSkK
K0Rpc3BsYXlBbmRyb2lkOjpEaXNwbGF5QW5kcm9pZChjb25zdCBlZ2w6OkRpc3BsYXlTdGF0ZSAm
c3RhdGUpCisgICAgOiBEaXNwbGF5RUdMKHN0YXRlKSwgbUR1bW15UGJ1ZmZlcihFR0xfTk9fU1VS
RkFDRSkKIHsKIH0KIApAQCAtNzIsOCArNzQsMTggQEAgZWdsOjpFcnJvciBEaXNwbGF5QW5kcm9p
ZDo6aW5pdGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCiAgICAgICAgIEVHTF9DT05GSUdf
Q0FWRUFULCBFR0xfTk9ORSwKICAgICAgICAgRUdMX0NPTkZPUk1BTlQsIGVzQml0LAogICAgICAg
ICBFR0xfUkVOREVSQUJMRV9UWVBFLCBlc0JpdCwKLSAgICAgICAgRUdMX05PTkUKICAgICB9Owor
CisgICAgaWYgKG1FR0wtPmhhc0V4dGVuc2lvbigiRUdMX0VYVF9waXhlbF9mb3JtYXRfZmxvYXQi
KSkKKyAgICB7CisgICAgICAgIC8vIERvbid0IHJlcXVlc3QgZmxvYXRpbmcgcG9pbnQgY29uZmln
cworICAgICAgICBtQ29uZmlnQXR0cmliTGlzdC5wdXNoX2JhY2soRUdMX0NPTE9SX0NPTVBPTkVO
VF9UWVBFX0VYVCk7CisgICAgICAgIG1Db25maWdBdHRyaWJMaXN0LnB1c2hfYmFjayhFR0xfQ09M
T1JfQ09NUE9ORU5UX1RZUEVfRklYRURfRVhUKTsKKyAgICB9CisKKyAgICAvLyBDb21wbGV0ZSB0
aGUgYXR0cmliIGxpc3QKKyAgICBtQ29uZmlnQXR0cmliTGlzdC5wdXNoX2JhY2soRUdMX05PTkUp
OworCiAgICAgLy8gY2xhbmctZm9ybWF0IG9uCiAgICAgRUdMaW50IG51bUNvbmZpZzsKIApAQCAt
MTEzLDcgKzEyNSw3IEBAIHZvaWQgRGlzcGxheUFuZHJvaWQ6OnRlcm1pbmF0ZSgpCiAgICAgRUdM
Qm9vbGVhbiBzdWNjZXNzID0gbUVHTC0+bWFrZUN1cnJlbnQoRUdMX05PX1NVUkZBQ0UsIEVHTF9O
T19DT05URVhUKTsKICAgICBpZiAoc3VjY2VzcyA9PSBFR0xfRkFMU0UpCiAgICAgewotICAgICAg
ICBFUlIoImVnbE1ha2VDdXJyZW50IGVycm9yIDB4JTA0eCIsIG1FR0wtPmdldEVycm9yKCkpOwor
ICAgICAgICBFUlIoKSA8PCAiZWdsTWFrZUN1cnJlbnQgZXJyb3IgIiA8PCBlZ2w6OkVycm9yKG1F
R0wtPmdldEVycm9yKCkpOwogICAgIH0KIAogICAgIGlmIChtRHVtbXlQYnVmZmVyICE9IEVHTF9O
T19TVVJGQUNFKQpAQCAtMTIyLDcgKzEzNCw3IEBAIHZvaWQgRGlzcGxheUFuZHJvaWQ6OnRlcm1p
bmF0ZSgpCiAgICAgICAgIG1EdW1teVBidWZmZXIgPSBFR0xfTk9fU1VSRkFDRTsKICAgICAgICAg
aWYgKHN1Y2Nlc3MgPT0gRUdMX0ZBTFNFKQogICAgICAgICB7Ci0gICAgICAgICAgICBFUlIoImVn
bERlc3Ryb3lTdXJmYWNlIGVycm9yIDB4JTA0eCIsIG1FR0wtPmdldEVycm9yKCkpOworICAgICAg
ICAgICAgRVJSKCkgPDwgImVnbERlc3Ryb3lTdXJmYWNlIGVycm9yICIgPDwgZWdsOjpFcnJvciht
RUdMLT5nZXRFcnJvcigpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTMyLDE0ICsxNDQsMTQg
QEAgdm9pZCBEaXNwbGF5QW5kcm9pZDo6dGVybWluYXRlKCkKICAgICAgICAgbUNvbnRleHQgPSBF
R0xfTk9fQ09OVEVYVDsKICAgICAgICAgaWYgKHN1Y2Nlc3MgPT0gRUdMX0ZBTFNFKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBFUlIoImVnbERlc3Ryb3lDb250ZXh0IGVycm9yIDB4JTA0eCIsIG1F
R0wtPmdldEVycm9yKCkpOworICAgICAgICAgICAgRVJSKCkgPDwgImVnbERlc3Ryb3lDb250ZXh0
IGVycm9yICIgPDwgZWdsOjpFcnJvcihtRUdMLT5nZXRFcnJvcigpKTsKICAgICAgICAgfQogICAg
IH0KIAogICAgIGVnbDo6RXJyb3IgcmVzdWx0ID0gbUVHTC0+dGVybWluYXRlKCk7CiAgICAgaWYg
KHJlc3VsdC5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBFUlIoImVnbFRlcm1pbmF0ZSBlcnJv
ciAweCUwNHgiLCByZXN1bHQuZ2V0Q29kZSgpKTsKKyAgICAgICAgRVJSKCkgPDwgImVnbFRlcm1p
bmF0ZSBlcnJvciAiIDw8IHJlc3VsdDsKICAgICB9CiAKICAgICBTYWZlRGVsZXRlKG1FR0wpOwpA
QCAtMTQ3LDcgKzE1OSw2IEBAIHZvaWQgRGlzcGxheUFuZHJvaWQ6OnRlcm1pbmF0ZSgpCiB9CiAK
IFN1cmZhY2VJbXBsICpEaXNwbGF5QW5kcm9pZDo6Y3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBl
Z2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2lu
ZG93VHlwZSB3aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7CkBAIC0xNTUsMzcg
KzE2NiwzMiBAQCBTdXJmYWNlSW1wbCAqRGlzcGxheUFuZHJvaWQ6OmNyZWF0ZVdpbmRvd1N1cmZh
Y2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAogICAgIEVHTGludCBudW1Db25maWc7
CiAgICAgRUdMQm9vbGVhbiBzdWNjZXNzOwogCi0gICAgY29uc3QgRUdMaW50IGNvbmZpZ0F0dHJp
Ykxpc3RbXSA9IHtFR0xfQ09ORklHX0lELCBtQ29uZmlnSWRzW2NvbmZpZ3VyYXRpb24tPmNvbmZp
Z0lEXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9OT05FfTsK
KyAgICBjb25zdCBFR0xpbnQgY29uZmlnQXR0cmliTGlzdFtdID0ge0VHTF9DT05GSUdfSUQsIG1D
b25maWdJZHNbc3RhdGUuY29uZmlnLT5jb25maWdJRF0sIEVHTF9OT05FfTsKICAgICBzdWNjZXNz
ID0gbUVHTC0+Y2hvb3NlQ29uZmlnKGNvbmZpZ0F0dHJpYkxpc3QsICZjb25maWcsIDEsICZudW1D
b25maWcpOwogICAgIEFTU0VSVChzdWNjZXNzICYmIG51bUNvbmZpZyA9PSAxKTsKLSAgICBVTlVT
RURfQVNTRVJUSU9OX1ZBUklBQkxFKHN1Y2Nlc3MpOwogCiAgICAgcmV0dXJuIG5ldyBXaW5kb3dT
dXJmYWNlRUdMKHN0YXRlLCBtRUdMLCBjb25maWcsIHdpbmRvdywgYXR0cmlicy50b0ludFZlY3Rv
cigpLCBtQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UmVuZGVy
ZXIoKSk7CiB9CiAKIFN1cmZhY2VJbXBsICpEaXNwbGF5QW5kcm9pZDo6Y3JlYXRlUGJ1ZmZlclN1
cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmln
dXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7CiAgICAgRUdMQ29uZmlnIGNv
bmZpZzsKICAgICBFR0xpbnQgbnVtQ29uZmlnOwogICAgIEVHTEJvb2xlYW4gc3VjY2VzczsKIAot
ICAgIGNvbnN0IEVHTGludCBjb25maWdBdHRyaWJMaXN0W10gPSB7RUdMX0NPTkZJR19JRCwgbUNv
bmZpZ0lkc1tjb25maWd1cmF0aW9uLT5jb25maWdJRF0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xfTk9ORX07CisgICAgY29uc3QgRUdMaW50IGNvbmZpZ0F0dHJp
Ykxpc3RbXSA9IHtFR0xfQ09ORklHX0lELCBtQ29uZmlnSWRzW3N0YXRlLmNvbmZpZy0+Y29uZmln
SURdLCBFR0xfTk9ORX07CiAgICAgc3VjY2VzcyA9IG1FR0wtPmNob29zZUNvbmZpZyhjb25maWdB
dHRyaWJMaXN0LCAmY29uZmlnLCAxLCAmbnVtQ29uZmlnKTsKICAgICBBU1NFUlQoc3VjY2VzcyAm
JiBudW1Db25maWcgPT0gMSk7Ci0gICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShzdWNjZXNz
KTsKIAogICAgIHJldHVybiBuZXcgUGJ1ZmZlclN1cmZhY2VFR0woc3RhdGUsIG1FR0wsIGNvbmZp
ZywgYXR0cmlicy50b0ludFZlY3RvcigpLCBtQ29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdldFJlbmRlcmVyKCkpOwogfQogCiBTdXJmYWNlSW1wbCAqRGlzcGxheUFu
ZHJvaWQ6OmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0
YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENs
aWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRC
dWZmZXIgY2xpZW50QnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykK
IHsKICAgICBVTklNUExFTUVOVEVEKCk7CkBAIC0xOTMsNyArMTk5LDYgQEAgU3VyZmFjZUltcGwg
KkRpc3BsYXlBbmRyb2lkOjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6
OlN1cmZhY2VTdGEKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlBbmRyb2lkOjpjcmVhdGVQaXht
YXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29u
ZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0
cmlicykKIHsKQEAgLTIxNSwxMCArMjIwLDI2IEBAIHZvaWQgRGlzcGxheUFuZHJvaWQ6OmdldENv
bmZpZ0F0dHJpYihFR0xDb25maWcgY29uZmlnLCBFR0xpbnQgYXR0cmlidXRlLCBUICp2YWx1CiAg
ICAgRUdMaW50IHRtcDsKICAgICBFR0xCb29sZWFuIHN1Y2Nlc3MgPSBtRUdMLT5nZXRDb25maWdB
dHRyaWIoY29uZmlnLCBhdHRyaWJ1dGUsICZ0bXApOwogICAgIEFTU0VSVChzdWNjZXNzID09IEVH
TF9UUlVFKTsKLSAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHN1Y2Nlc3MpOwogICAgICp2
YWx1ZSA9IHRtcDsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Cit2b2lk
IERpc3BsYXlBbmRyb2lkOjpnZXRDb25maWdBdHRyaWJJZkV4dGVuc2lvbihFR0xDb25maWcgY29u
ZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
aW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFQgKnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqZXh0ZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVSAmZGVmYXVsdFZhbHVlKSBjb25zdAorewor
ICAgIGlmIChtRUdMLT5oYXNFeHRlbnNpb24oZXh0ZW5zaW9uKSkKKyAgICB7CisgICAgICAgIGdl
dENvbmZpZ0F0dHJpYihjb25maWcsIGF0dHJpYnV0ZSwgdmFsdWUpOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICAqdmFsdWUgPSBzdGF0aWNfY2FzdDxUPihkZWZhdWx0VmFsdWUpOwor
ICAgIH0KK30KKwogZWdsOjpDb25maWdTZXQgRGlzcGxheUFuZHJvaWQ6OmdlbmVyYXRlQ29uZmln
cygpCiB7CiAgICAgZWdsOjpDb25maWdTZXQgY29uZmlnU2V0OwpAQCAtMjMzLDcgKzI1NCw2IEBA
IGVnbDo6Q29uZmlnU2V0IERpc3BsYXlBbmRyb2lkOjpnZW5lcmF0ZUNvbmZpZ3MoKQogICAgIHN1
Y2Nlc3MgPQogICAgICAgICBtRUdMLT5jaG9vc2VDb25maWcobUNvbmZpZ0F0dHJpYkxpc3QuZGF0
YSgpLCBjb25maWdzLmRhdGEoKSwgbnVtQ29uZmlncywgJm51bUNvbmZpZ3MyKTsKICAgICBBU1NF
UlQoc3VjY2VzcyA9PSBFR0xfVFJVRSAmJiBudW1Db25maWdzMiA9PSBudW1Db25maWdzKTsKLSAg
ICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHN1Y2Nlc3MpOwogCiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBudW1Db25maWdzOyBpKyspCiAgICAgewpAQCAtMjcxLDkgKzI5MSwxMyBAQCBlZ2w6
OkNvbmZpZ1NldCBEaXNwbGF5QW5kcm9pZDo6Z2VuZXJhdGVDb25maWdzKCkKICAgICAgICAgZ2V0
Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9UUkFOU1BBUkVOVF9SRURfVkFMVUUsICZjb25m
aWcudHJhbnNwYXJlbnRSZWRWYWx1ZSk7CiAgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdz
W2ldLCBFR0xfVFJBTlNQQVJFTlRfR1JFRU5fVkFMVUUsICZjb25maWcudHJhbnNwYXJlbnRHcmVl
blZhbHVlKTsKICAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9UUkFOU1BB
UkVOVF9CTFVFX1ZBTFVFLCAmY29uZmlnLnRyYW5zcGFyZW50Qmx1ZVZhbHVlKTsKKyAgICAgICAg
Z2V0Q29uZmlnQXR0cmliSWZFeHRlbnNpb24oY29uZmlnc1tpXSwgRUdMX0NPTE9SX0NPTVBPTkVO
VF9UWVBFX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbmZpZy5j
b2xvckNvbXBvbmVudFR5cGUsICJFR0xfRVhUX3BpeGVsX2Zvcm1hdF9mbG9hdCIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9DT0xPUl9DT01QT05FTlRfVFlQRV9GSVhF
RF9FWFQpOwogCiAgICAgICAgIGlmIChjb25maWcuY29sb3JCdWZmZXJUeXBlID09IEVHTF9SR0Jf
QlVGRkVSKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoY29uZmlnLmNvbG9yQ29tcG9u
ZW50VHlwZSA9PSBFR0xfQ09MT1JfQ09NUE9ORU5UX1RZUEVfRklYRURfRVhUKTsKICAgICAgICAg
ICAgIGlmIChjb25maWcucmVkU2l6ZSA9PSA4ICYmIGNvbmZpZy5ncmVlblNpemUgPT0gOCAmJiBj
b25maWcuYmx1ZVNpemUgPT0gOCAmJgogICAgICAgICAgICAgICAgIGNvbmZpZy5hbHBoYVNpemUg
PT0gOCkKICAgICAgICAgICAgIHsKQEAgLTM3MCwxOSArMzk0LDQgQEAgZWdsOjpFcnJvciBEaXNw
bGF5QW5kcm9pZDo6d2FpdE5hdGl2ZShFR0xpbnQgZW5naW5lLAogICAgIHJldHVybiBlZ2w6OkVy
cm9yKEVHTF9TVUNDRVNTKTsKIH0KIAotZWdsOjpFcnJvciBEaXNwbGF5QW5kcm9pZDo6Z2V0RHJp
dmVyVmVyc2lvbihzdGQ6OnN0cmluZyAqdmVyc2lvbikgY29uc3QKLXsKLSAgICBWZW5kb3JJRCB2
ZW5kb3IgPSBHZXRWZW5kb3JJRChtRnVuY3Rpb25zR0wpOwotCi0gICAgc3dpdGNoICh2ZW5kb3Ip
Ci0gICAgewotICAgICAgICBjYXNlIFZFTkRPUl9JRF9RVUFMQ09NTToKLSAgICAgICAgICAgICp2
ZXJzaW9uID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KG1GdW5jdGlvbnNHTC0+Z2V0
U3RyaW5nKEdMX1ZFUlNJT04pKTsKLSAgICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9T
VUNDRVNTKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICp2ZXJzaW9uID0gIiI7Ci0g
ICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Ci0gICAgfQotfQotCiB9
ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5kcm9pZC9EaXNwbGF5QW5kcm9pZC5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9hbmRyb2lk
L0Rpc3BsYXlBbmRyb2lkLmgKaW5kZXggNjkzNTMyZmI0M2Y5N2VlNDc1M2E2YjE5Mjg4YjNhZGNm
NGQzNzY2ZS4uNDg5OTg2ZmEzMDQ4Yjg3Yjg5NzA5MDY2ZTE1OWQ2Nzg1ODI4ZGI4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Vn
bC9hbmRyb2lkL0Rpc3BsYXlBbmRyb2lkLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9hbmRyb2lkL0Rpc3BsYXlBbmRyb2lkLmgKQEAg
LTIxLDI1ICsyMSwyMiBAQCBuYW1lc3BhY2UgcngKIGNsYXNzIERpc3BsYXlBbmRyb2lkIDogcHVi
bGljIERpc3BsYXlFR0wKIHsKICAgcHVibGljOgotICAgIERpc3BsYXlBbmRyb2lkKCk7CisgICAg
RGlzcGxheUFuZHJvaWQoY29uc3QgZWdsOjpEaXNwbGF5U3RhdGUgJnN0YXRlKTsKICAgICB+RGlz
cGxheUFuZHJvaWQoKSBvdmVycmlkZTsKIAogICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShlZ2w6
OkRpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOwogICAgIHZvaWQgdGVybWluYXRlKCkgb3ZlcnJp
ZGU7CiAKICAgICBTdXJmYWNlSW1wbCAqY3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OlN1
cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMp
IG92ZXJyaWRlOwogICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBl
Z2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykg
b3ZlcnJpZGU7CiAgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVy
KGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVu
dEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJp
YnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBpeG1h
cFN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0
aXZlUGl4bWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVn
bDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKIApAQCAtNjEsMTIgKzU4LDE3IEBA
IGNsYXNzIERpc3BsYXlBbmRyb2lkIDogcHVibGljIERpc3BsYXlFR0wKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpkcmF3U3VyZmFjZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWdsOjpTdXJmYWNlICpyZWFkU3VyZmFjZSkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICBlZ2w6OkVycm9yIGdldERyaXZlclZlcnNpb24oc3RkOjpzdHJpbmcgKnZlcnNpb24pIGNvbnN0
IG92ZXJyaWRlOwotCiAgIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgICAg
dm9pZCBnZXRDb25maWdBdHRyaWIoRUdMQ29uZmlnIGNvbmZpZywgRUdMaW50IGF0dHJpYnV0ZSwg
VCAqdmFsdWUpIGNvbnN0OwogCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
CisgICAgdm9pZCBnZXRDb25maWdBdHRyaWJJZkV4dGVuc2lvbihFR0xDb25maWcgY29uZmlnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGF0dHJpYnV0ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQgKnZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXh0ZW5zaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVSAmZGVmYXVsdFZhbHVlKSBjb25zdDsK
KwogICAgIHN0ZDo6dmVjdG9yPEVHTGludD4gbUNvbmZpZ0F0dHJpYkxpc3Q7CiAgICAgc3RkOjpt
YXA8RUdMaW50LCBFR0xpbnQ+IG1Db25maWdJZHM7CiAgICAgRUdMU3VyZmFjZSBtRHVtbXlQYnVm
ZmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL2VnbC9vem9uZS9EaXNwbGF5T3pvbmUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9vem9uZS9EaXNwbGF5T3pvbmUuY3Bw
CmluZGV4IDk4MmM4MDY5M2ExOGQ2NDRjOGZjMDI3N2EzNzNhMGM1MjAzYTQ2N2MuLjZkODlkOWFk
MTk2OGYzZGNjNDg0OGY5ZGEzNzYxYzllNTM5YTEwNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvRGlzcGxheU96
b25lLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZWdsL296b25lL0Rpc3BsYXlPem9uZS5jcHAKQEAgLTEwLDcgKzEwLDYgQEAKIAogI2lu
Y2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8cG9sbC5oPgotI2luY2x1ZGUgPGlvc3RyZWFtPgog
I2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAKQEAgLTI5NSw3ICsy
OTQsNyBAQCB1aW50MzJfdCBEaXNwbGF5T3pvbmU6OkJ1ZmZlcjo6Z2V0RFJNRkIoKQogICAgICAg
ICB1aW50MzJfdCBvZmZzZXRzWzRdID0gezB9OwogICAgICAgICBpZiAoZHJtTW9kZUFkZEZCMihm
ZCwgbVdpZHRoLCBtSGVpZ2h0LCBtRFJNRm9ybWF0RkIsIGhhbmRsZXMsIHBpdGNoZXMsIG9mZnNl
dHMsICZtRFJNRkIsIDApKQogICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmNlcnIgPDwgImRy
bU1vZGVBZGRGQjIgZmFpbGVkIiA8PCBzdGQ6OmVuZGw7CisgICAgICAgICAgICBXQVJOKCkgPDwg
ImRybU1vZGVBZGRGQjIgZmFpbGVkOiAiIDw8IGVycm5vIDw8ICIgIiA8PCBzdHJlcnJvcihlcnJu
byk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CkBAIC0zMjUsOCArMzI0LDgg
QEAgdm9pZCBEaXNwbGF5T3pvbmU6OkJ1ZmZlcjo6cHJlc2VudCgpCiAgICAgfQogfQogCi1EaXNw
bGF5T3pvbmU6OkRpc3BsYXlPem9uZSgpCi0gICAgOiBEaXNwbGF5RUdMKCksCitEaXNwbGF5T3pv
bmU6OkRpc3BsYXlPem9uZShjb25zdCBlZ2w6OkRpc3BsYXlTdGF0ZSAmc3RhdGUpCisgICAgOiBE
aXNwbGF5RUdMKHN0YXRlKSwKICAgICAgIG1Td2FwQ29udHJvbChTd2FwQ29udHJvbDo6QUJTRU5U
KSwKICAgICAgIG1NaW5Td2FwSW50ZXJ2YWwoMCksCiAgICAgICBtTWF4U3dhcEludGVydmFsKDAp
LApAQCAtMzM2LDggKzMzNSw4IEBAIERpc3BsYXlPem9uZTo6RGlzcGxheU96b25lKCkKICAgICAg
IG1Nb2RlKG51bGxwdHIpLAogICAgICAgbUNSVEMobnVsbHB0ciksCiAgICAgICBtU2V0Q1JUQyh0
cnVlKSwKLSAgICAgIG1XaWR0aCgwKSwKLSAgICAgIG1IZWlnaHQoMCksCisgICAgICBtV2lkdGgo
MTI4MCksCisgICAgICBtSGVpZ2h0KDEwMjQpLAogICAgICAgbVNjYW5uaW5nKG51bGxwdHIpLAog
ICAgICAgbVBlbmRpbmcobnVsbHB0ciksCiAgICAgICBtRHJhd2luZyhudWxscHRyKSwKQEAgLTM1
OCw0NyArMzU3LDIxIEBAIERpc3BsYXlPem9uZTo6fkRpc3BsYXlPem9uZSgpCiB7CiB9CiAKLWVn
bDo6RXJyb3IgRGlzcGxheU96b25lOjppbml0aWFsaXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkK
K2Jvb2wgRGlzcGxheU96b25lOjpoYXNVc2FibGVTY3JlZW4oaW50IGZkKQogewotICAgIGludCBm
ZDsKLSAgICBjaGFyIGRldmljZU5hbWVbMzBdOwotICAgIGRybU1vZGVSZXNQdHIgcmVzb3VyY2Vz
ID0gbnVsbHB0cjsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgOTsgKytpKQotICAgIHsKLSAg
ICAgICAgc25wcmludGYoZGV2aWNlTmFtZSwgc2l6ZW9mKGRldmljZU5hbWUpLCAiL2Rldi9kcmkv
Y2FyZCVkIiwgaSk7Ci0gICAgICAgIGZkID0gb3BlbihkZXZpY2VOYW1lLCBPX1JEV1IgfCBPX0NM
T0VYRUMpOwotICAgICAgICBpZiAoZmQgPj0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmVz
b3VyY2VzID0gZHJtTW9kZUdldFJlc291cmNlcyhmZCk7Ci0gICAgICAgICAgICBpZiAocmVzb3Vy
Y2VzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChyZXNvdXJjZXMtPmNvdW50
X2Nvbm5lY3RvcnMgPiAwKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGRybU1vZGVGcmVlUmVz
b3VyY2VzKHJlc291cmNlcyk7Ci0gICAgICAgICAgICAgICAgcmVzb3VyY2VzID0gbnVsbHB0cjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgfQotICAgIH0K
KyAgICBkcm1Nb2RlUmVzUHRyIHJlc291cmNlcyA9IGRybU1vZGVHZXRSZXNvdXJjZXMoZmQpOwog
ICAgIGlmICghcmVzb3VyY2VzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdM
X05PVF9JTklUSUFMSVpFRCwgIkNvdWxkIG5vdCBvcGVuIGRybSBkZXZpY2UuIik7CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9Ci0KLSAgICBtR0JNID0gZ2JtX2NyZWF0ZV9kZXZpY2UoZmQp
OwotICAgIGlmICghbUdCTSkKKyAgICBpZiAocmVzb3VyY2VzLT5jb3VudF9jb25uZWN0b3JzIDwg
MSkKICAgICB7Ci0gICAgICAgIGNsb3NlKGZkKTsKICAgICAgICAgZHJtTW9kZUZyZWVSZXNvdXJj
ZXMocmVzb3VyY2VzKTsKLSAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFM
SVpFRCwgIkNvdWxkIG5vdCBjcmVhdGUgZ2JtIGRldmljZS4iKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgIG1Db25uZWN0b3IgICAgICAgICAgICA9IG51bGxwdHI7Ci0gICAg
Ym9vbCBtb25pdG9yQ29ubmVjdGVkID0gZmFsc2U7Ci0gICAgZm9yIChpbnQgaSA9IDA7ICFtQ1JU
QyAmJiBpIDwgcmVzb3VyY2VzLT5jb3VudF9jb25uZWN0b3JzOyArK2kpCisgICAgbUNvbm5lY3Rv
ciA9IG51bGxwdHI7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXNvdXJjZXMtPmNvdW50X2Nv
bm5lY3RvcnM7ICsraSkKICAgICB7CiAgICAgICAgIGRybU1vZGVGcmVlQ29ubmVjdG9yKG1Db25u
ZWN0b3IpOwogICAgICAgICBtQ29ubmVjdG9yID0gZHJtTW9kZUdldENvbm5lY3RvcihmZCwgcmVz
b3VyY2VzLT5jb25uZWN0b3JzW2ldKTsKQEAgLTQwNiw3ICszNzksNiBAQCBlZ2w6OkVycm9yIERp
c3BsYXlPem9uZTo6aW5pdGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIG1vbml0b3JDb25uZWN0
ZWQgPSB0cnVlOwogICAgICAgICBtTW9kZSA9IENob29zZU1vZGUobUNvbm5lY3Rvcik7CiAgICAg
ICAgIGlmICghbU1vZGUpCiAgICAgICAgIHsKQEAgLTQxOCwyNSArMzkwLDY4IEBAIGVnbDo6RXJy
b3IgRGlzcGxheU96b25lOjppbml0aWFsaXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIG1DUlRDID0gZHJtTW9kZUdldENy
dGMoZmQsIHJlc291cmNlcy0+Y3J0Y3Nbbl0pOworICAgICAgICBpZiAobUNSVEMpCisgICAgICAg
IHsKKyAgICAgICAgICAgIC8vIGZvdW5kIGEgc2NyZWVuCisgICAgICAgICAgICBtR0JNID0gZ2Jt
X2NyZWF0ZV9kZXZpY2UoZmQpOworICAgICAgICAgICAgaWYgKG1HQk0pCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgbVdpZHRoICA9IG1Nb2RlLT5oZGlzcGxheTsKKyAgICAgICAgICAg
ICAgICBtSGVpZ2h0ID0gbU1vZGUtPnZkaXNwbGF5OworICAgICAgICAgICAgICAgIGRybU1vZGVG
cmVlUmVzb3VyY2VzKHJlc291cmNlcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBjYW4ndCB1c2UgdGhpcyBzY3JlZW4KKyAgICAg
ICAgICAgIGRybU1vZGVGcmVlQ3J0YyhtQ1JUQyk7CisgICAgICAgICAgICBtQ1JUQyA9IG51bGxw
dHI7CisgICAgICAgIH0KICAgICB9CisKICAgICBkcm1Nb2RlRnJlZVJlc291cmNlcyhyZXNvdXJj
ZXMpOworICAgIHJldHVybiBmYWxzZTsKK30KIAotICAgIGlmIChtQ1JUQykKK2VnbDo6RXJyb3Ig
RGlzcGxheU96b25lOjppbml0aWFsaXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkKK3sKKyAgICBp
bnQgZmQ7CisgICAgY2hhciBkZXZpY2VOYW1lWzMwXTsKKworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgNjQ7ICsraSkKICAgICB7Ci0gICAgICAgIG1XaWR0aCAgPSBtTW9kZS0+aGRpc3BsYXk7Ci0g
ICAgICAgIG1IZWlnaHQgPSBtTW9kZS0+dmRpc3BsYXk7CisgICAgICAgIHNucHJpbnRmKGRldmlj
ZU5hbWUsIHNpemVvZihkZXZpY2VOYW1lKSwgIi9kZXYvZHJpL2NhcmQlZCIsIGkpOworICAgICAg
ICBmZCA9IG9wZW4oZGV2aWNlTmFtZSwgT19SRFdSIHwgT19DTE9FWEVDKTsKKyAgICAgICAgaWYg
KGZkID49IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChoYXNVc2FibGVTY3JlZW4oZmQp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgaWYgKCFt
b25pdG9yQ29ubmVjdGVkKQorCisgICAgaWYgKCFtR0JNKQogICAgIHsKLSAgICAgICAgLy8gRXZl
biB0aG91Z2ggdGhlcmUgaXMgbm8gbW9uaXRvciB0byBzaG93IGl0LCB3ZSBzdGlsbCBkbwotICAg
ICAgICAvLyBldmVyeXRoaW5nIHRoZSBzYW1lIGFzIGlmIHRoZXJlIHdlcmUgb25lLCBzbyB3ZSBu
ZWVkIGFuCi0gICAgICAgIC8vIGFyYml0cmFyeSBzaXplIGZvciBvdXIgYnVmZmVycy4KLSAgICAg
ICAgbVdpZHRoICA9IDEyODA7Ci0gICAgICAgIG1IZWlnaHQgPSAxMDI0OworICAgICAgICAvLyB0
aGVyZSdzIG5vIHVzYWJsZSBzY3JlZW4gc28gdHJ5IHRvIHByb2NlZWQgd2l0aG91dCBvbmUKKyAg
ICAgICAgZm9yIChpbnQgaSA9IDEyODsgaSA8IDE5MjsgKytpKQorICAgICAgICB7CisgICAgICAg
ICAgICBzbnByaW50ZihkZXZpY2VOYW1lLCBzaXplb2YoZGV2aWNlTmFtZSksICIvZGV2L2RyaS9y
ZW5kZXJEJWQiLCBpKTsKKyAgICAgICAgICAgIGZkID0gb3BlbihkZXZpY2VOYW1lLCBPX1JEV1Ig
fCBPX0NMT0VYRUMpOworICAgICAgICAgICAgaWYgKGZkID49IDApCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgbUdCTSA9IGdibV9jcmVhdGVfZGV2aWNlKGZkKTsKKyAgICAgICAgICAg
ICAgICBpZiAobUdCTSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjbG9zZShmZCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KICAgICB9Ci0gICAgZWxzZQorCisgICAgaWYgKCFtR0JNKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgIkZh
aWxlZCB0byBjaG9vc2UgbW9kZS9jcnRjLiIpOworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfTk9UX0lOSVRJQUxJWkVELCAiQ291bGQgbm90IG9wZW4gZHJtIGRldmljZS4iKTsKICAgICB9
CiAKICAgICAvLyBBTkdMRSBidWlsZHMgaXRzIGV4ZWN1dGFibGVzIHdpdGggYW4gUlBBVEggc28g
dGhleSBwdWxsIGluIEFOR0xFJ3MgbGliR0wgYW5kIGxpYkVHTC4KQEAgLTUzNiw3ICs1NTEsNyBA
QCB2b2lkIERpc3BsYXlPem9uZTo6cHJlc2VudFNjcmVlbigpCiAgICAgICAgIHBmZC5ldmVudHMg
PSBQT0xMSU47CiAgICAgICAgIGlmIChwb2xsKCZwZmQsIDEsIDApIDwgMCkKICAgICAgICAgewot
ICAgICAgICAgICAgc3RkOjpjZXJyIDw8ICJwb2xsIGZhaWxlZDogIiA8PCBlcnJubyA8PCAiICIg
PDwgc3RyZXJyb3IoZXJybm8pIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAgIFdBUk4oKSA8PCAi
cG9sbCBmYWlsZWQ6ICIgPDwgZXJybm8gPDwgIiAiIDw8IHN0cmVycm9yKGVycm5vKTsKICAgICAg
ICAgfQogICAgICAgICBpZiAocGZkLnJldmVudHMgJiBQT0xMSU4pCiAgICAgICAgIHsKQEAgLTU1
NiwxNCArNTcxLDE0IEBAIHZvaWQgRGlzcGxheU96b25lOjpwcmVzZW50U2NyZWVuKCkKICAgICAg
ICAgICAgIGlmIChkcm1Nb2RlU2V0Q3J0YyhmZCwgbUNSVEMtPmNydGNfaWQsIG1EcmF3aW5nLT5n
ZXREUk1GQigpLCAwLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtQ29ubmVj
dG9yLT5jb25uZWN0b3JfaWQsIDEsIG1Nb2RlKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBzdGQ6OmNlcnIgPDwgInNldCBjcnRjIGZhaWxlZDogIiA8PCBlcnJubyA8PCAiICIgPDwg
c3RyZXJyb3IoZXJybm8pIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAgICAgICBXQVJOKCkgPDwg
InNldCBjcnRjIGZhaWxlZDogIiA8PCBlcnJubyA8PCAiICIgPDwgc3RyZXJyb3IoZXJybm8pOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgbVNldENSVEMgPSBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoZHJtTW9kZVBhZ2VGbGlwKGZkLCBtQ1JUQy0+Y3J0Y19pZCwgbURyYXdpbmct
PmdldERSTUZCKCksIERSTV9NT0RFX1BBR0VfRkxJUF9FVkVOVCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzKSkKICAgICAgICAgewotICAgICAgICAgICAgc3RkOjpjZXJyIDw8ICJw
YWdlIGZsaXAgZmFpbGVkOiAiIDw8IGVycm5vIDw8ICIgIiA8PCBzdHJlcnJvcihlcnJubykgPDwg
c3RkOjplbmRsOworICAgICAgICAgICAgV0FSTigpIDw8ICJwYWdlIGZsaXAgZmFpbGVkOiAiIDw8
IGVycm5vIDw8ICIgIiA8PCBzdHJlcnJvcihlcnJubyk7CiAgICAgICAgIH0KICAgICAgICAgbVBl
bmRpbmcgPSBtRHJhd2luZzsKICAgICAgICAgbURyYXdpbmcgPSBudWxscHRyOwpAQCAtNTg0LDgg
KzU5OSw3IEBAIEdMdWludCBEaXNwbGF5T3pvbmU6Om1ha2VTaGFkZXIoR0x1aW50IHR5cGUsIGNv
bnN0IGNoYXIgKnNyYykKICAgICBnbC0+Z2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9DT01QSUxFX1NU
QVRVUywgJmNvbXBpbGVkKTsKICAgICBpZiAoY29tcGlsZWQgIT0gR0xfVFJVRSkKICAgICB7Ci0g
ICAgICAgIEFOR0xFUGxhdGZvcm1DdXJyZW50KCktPmxvZ0Vycm9yKCJEaXNwbGF5T3pvbmUgc2hh
ZGVyIGNvbXBpbGF0aW9uIGVycm9yOiIpOwotICAgICAgICBBTkdMRVBsYXRmb3JtQ3VycmVudCgp
LT5sb2dFcnJvcihidWYpOworICAgICAgICBXQVJOKCkgPDwgIkRpc3BsYXlPem9uZSBzaGFkZXIg
Y29tcGlsYXRpb24gZXJyb3I6ICIgPDwgYnVmOwogICAgIH0KIAogICAgIHJldHVybiBzaGFkZXI7
CkBAIC02NDAsNyArNjU0LDExIEBAIHZvaWQgRGlzcGxheU96b25lOjpkcmF3V2l0aFRleHR1cmUo
QnVmZmVyICpidWZmZXIpCiAgICAgICAgIGdsLT5saW5rUHJvZ3JhbShtUHJvZ3JhbSk7CiAgICAg
ICAgIEdMaW50IGxpbmtlZDsKICAgICAgICAgZ2wtPmdldFByb2dyYW1pdihtUHJvZ3JhbSwgR0xf
TElOS19TVEFUVVMsICZsaW5rZWQpOwotICAgICAgICBBU1NFUlQobGlua2VkKTsKKyAgICAgICAg
aWYgKCFsaW5rZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdBUk4oKSA8PCAic2hhZGVyIGxp
bmsgZmFpbGVkOiBjYW5ub3QgZGlzcGxheSBidWZmZXIiOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAgICAgICAgIG1DZW50ZXJVbmlmb3JtICAgICA9IGdsLT5nZXRVbmlmb3JtTG9j
YXRpb24obVByb2dyYW0sICJjZW50ZXIiKTsKICAgICAgICAgbVdpbmRvd1NpemVVbmlmb3JtID0g
Z2wtPmdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgIndpbmRvd1NpemUiKTsKICAgICAgICAg
bUJvcmRlclNpemVVbmlmb3JtID0gZ2wtPmdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgImJv
cmRlclNpemUiKTsKQEAgLTgxNyw3ICs4MzUsMTEgQEAgdm9pZCBEaXNwbGF5T3pvbmU6OnRlcm1p
bmF0ZSgpCiAgICAgICAgIFNhZmVEZWxldGUobUVHTCk7CiAgICAgfQogCisgICAgZHJtTW9kZUZy
ZWVDb25uZWN0b3IobUNvbm5lY3Rvcik7CisgICAgbUNvbm5lY3RvciA9IG51bGxwdHI7CisgICAg
bU1vZGUgICAgICA9IG51bGxwdHI7CiAgICAgZHJtTW9kZUZyZWVDcnRjKG1DUlRDKTsKKyAgICBt
Q1JUQyA9IG51bGxwdHI7CiAKICAgICBpZiAobUdCTSkKICAgICB7CkBAIC04MjksNyArODUxLDYg
QEAgdm9pZCBEaXNwbGF5T3pvbmU6OnRlcm1pbmF0ZSgpCiB9CiAKIFN1cmZhY2VJbXBsICpEaXNw
bGF5T3pvbmU6OmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0
YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmli
dXRlTWFwICZhdHRyaWJzKQogewpAQCAtODQzLDcgKzg2NCw2IEBAIFN1cmZhY2VJbXBsICpEaXNw
bGF5T3pvbmU6OmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0
YXRlLAogfQogCiBTdXJmYWNlSW1wbCAqRGlzcGxheU96b25lOjpjcmVhdGVQYnVmZmVyU3VyZmFj
ZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewogICAgIEVHTEF0dHJpYiB3aWR0aCAgPSBh
dHRyaWJzLmdldChFR0xfV0lEVEgsIDApOwpAQCAtODU4LDggKzg3OCw4IEBAIFN1cmZhY2VJbXBs
ICpEaXNwbGF5T3pvbmU6OmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0
YXRlICZzdGF0ZSwKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlPem9uZTo6Y3JlYXRlUGJ1ZmZl
ckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xlbnVtIGJ1ZnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwpAQCAt
ODY3LDcgKzg4Nyw2IEBAIFN1cmZhY2VJbXBsICpEaXNwbGF5T3pvbmU6OmNyZWF0ZVBidWZmZXJG
cm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlCiB9CiAKIFN1cmZhY2VJbXBs
ICpEaXNwbGF5T3pvbmU6OmNyZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3Rh
dGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVQaXhtYXAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVn
bDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewpAQCAtODk1LDYgKzkxNCw4IEBAIGVnbDo6Q29u
ZmlnU2V0IERpc3BsYXlPem9uZTo6Z2VuZXJhdGVDb25maWdzKCkKICAgICBjb25maWcuYmluZFRv
VGV4dHVyZVJHQkEgPSBFR0xfVFJVRTsKICAgICBjb25maWcucmVuZGVyYWJsZVR5cGUgICAgPSBF
R0xfT1BFTkdMX0VTMl9CSVQ7CiAgICAgY29uZmlnLnN1cmZhY2VUeXBlICAgICAgID0gRUdMX1dJ
TkRPV19CSVQgfCBFR0xfUEJVRkZFUl9CSVQ7CisgICAgY29uZmlnLnJlbmRlclRhcmdldEZvcm1h
dCA9IEdMX1JHQkE4OworICAgIGNvbmZpZy5kZXB0aFN0ZW5jaWxGb3JtYXQgPSBHTF9ERVBUSDI0
X1NURU5DSUw4OwogCiAgICAgY29uZmlncy5hZGQoY29uZmlnKTsKICAgICByZXR1cm4gY29uZmln
czsKQEAgLTkxNiwxMiArOTM3LDYgQEAgYm9vbCBEaXNwbGF5T3pvbmU6OmlzVmFsaWROYXRpdmVX
aW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWVnbDo6RXJyb3IgRGlzcGxheU96b25lOjpnZXREcml2ZXJWZXJzaW9uKHN0ZDo6c3Ry
aW5nICp2ZXJzaW9uKSBjb25zdAotewotICAgICp2ZXJzaW9uID0gIiI7Ci0gICAgcmV0dXJuIGVn
bDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwotfQotCiBlZ2w6OkVycm9yIERpc3BsYXlPem9uZTo6d2Fp
dENsaWVudCgpIGNvbnN0CiB7CiAgICAgLy8gVE9ETyhmamhlbmlnbWFuKSBJbXBsZW1lbnQgdGhp
cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9lZ2wvb3pvbmUvRGlzcGxheU96b25lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL0Rpc3BsYXlPem9uZS5oCmluZGV4
IDU1YTE4OGMzZThlMzI4N2RhMDExM2E1YzI1YTE0Yzg3ZTkxMWQzZjIuLmM4NjdhYzE1YjUxMzA0
MzU0NmM3NWU5ZmZmMzA5NTkwMzIzNjllN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvRGlzcGxheU96b25lLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Vn
bC9vem9uZS9EaXNwbGF5T3pvbmUuaApAQCAtMTA3LDI1ICsxMDcsMjIgQEAgY2xhc3MgRGlzcGxh
eU96b25lIGZpbmFsIDogcHVibGljIERpc3BsYXlFR0wKICAgICAgICAgR0x1aW50IG1UZXh0dXJl
OwogICAgIH07CiAKLSAgICBEaXNwbGF5T3pvbmUoKTsKKyAgICBEaXNwbGF5T3pvbmUoY29uc3Qg
ZWdsOjpEaXNwbGF5U3RhdGUgJnN0YXRlKTsKICAgICB+RGlzcGxheU96b25lKCkgb3ZlcnJpZGU7
CiAKICAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoZWdsOjpEaXNwbGF5ICpkaXNwbGF5KSBvdmVy
cmlkZTsKICAgICB2b2lkIHRlcm1pbmF0ZSgpIG92ZXJyaWRlOwogCiAgICAgU3VyZmFjZUltcGwg
KmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25m
aWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2
ZVdpbmRvd1R5cGUgd2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKICAgICBTdXJmYWNl
SW1wbCAqY3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZp
ZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwogICAgIFN1cmZhY2VJ
bXBsICpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0
ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gYnVm
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
Q2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJy
aWRlOwogICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6U3Vy
ZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmli
cykgb3ZlcnJpZGU7CiAKQEAgLTE0OSwxNCArMTQ2LDEzIEBAIGNsYXNzIERpc3BsYXlPem9uZSBm
aW5hbCA6IHB1YmxpYyBEaXNwbGF5RUdMCiAgICAgLy8gb25lIHJlcXVpcmVkIHNvIHRoYXQgdGhl
IHN1YnNlcXVlbnQgc3dhcEJ1ZmZlcnMgYWN0cyBhcyBleHBlY3RlZC4KICAgICB2b2lkIHNldFN3
YXBJbnRlcnZhbChFR0xTdXJmYWNlIGRyYXdhYmxlLCBTd2FwQ29udHJvbERhdGEgKmRhdGEpOwog
Ci0gICAgZWdsOjpFcnJvciBnZXREcml2ZXJWZXJzaW9uKHN0ZDo6c3RyaW5nICp2ZXJzaW9uKSBj
b25zdCBvdmVycmlkZTsKLQogICBwcml2YXRlOgogICAgIEdMdWludCBtYWtlU2hhZGVyKEdMdWlu
dCB0eXBlLCBjb25zdCBjaGFyICpzcmMpOwogICAgIHZvaWQgZHJhd0J1ZmZlcihCdWZmZXIgKmJ1
ZmZlcik7CiAgICAgdm9pZCBkcmF3V2l0aEJsaXQoQnVmZmVyICpidWZmZXIpOwogICAgIHZvaWQg
ZHJhd1dpdGhUZXh0dXJlKEJ1ZmZlciAqYnVmZmVyKTsKICAgICB2b2lkIGZsdXNoR0woKTsKKyAg
ICBib29sIGhhc1VzYWJsZVNjcmVlbihpbnQgZmQpOwogICAgIHZvaWQgcHJlc2VudFNjcmVlbigp
OwogICAgIHN0YXRpYyB2b2lkIHBhZ2VGbGlwSGFuZGxlcihpbnQgZmQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzZXF1ZW5jZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUv
U3VyZmFjZU96b25lLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9lZ2wvb3pvbmUvU3VyZmFjZU96b25lLmNwcAppbmRleCA2MTRmZWQwZmRiZDA5
YjJlYWUxYWIxMGE2M2JiNWFkOTJjNjE1MmRkLi5mMWIwNTZjMmVhNjAzMzk1NjAwZTVhZDZkYTdj
YmE5MTA3MmRjYjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL1N1cmZhY2VPem9uZS5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9vem9uZS9TdXJm
YWNlT3pvbmUuY3BwCkBAIC0yNiw3ICsyNiw3IEBAIFN1cmZhY2VPem9uZTo6flN1cmZhY2VPem9u
ZSgpCiAgICAgZGVsZXRlIG1CdWZmZXI7CiB9CiAKLWVnbDo6RXJyb3IgU3VyZmFjZU96b25lOjpp
bml0aWFsaXplKCkKK2VnbDo6RXJyb3IgU3VyZmFjZU96b25lOjppbml0aWFsaXplKGNvbnN0IERp
c3BsYXlJbXBsICpkaXNwbGF5SW1wbCkKIHsKICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VD
Q0VTUyk7CiB9CkBAIC00MSw3ICs0MSw3IEBAIGVnbDo6RXJyb3IgU3VyZmFjZU96b25lOjptYWtl
Q3VycmVudCgpCiAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCi1lZ2w6
OkVycm9yIFN1cmZhY2VPem9uZTo6c3dhcCgpCitlZ2w6OkVycm9yIFN1cmZhY2VPem9uZTo6c3dh
cChjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUltcGwpCiB7CiAgICAgbUJ1ZmZlci0+cHJlc2Vu
dCgpOwogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUv
U3VyZmFjZU96b25lLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvZWdsL296b25lL1N1cmZhY2VPem9uZS5oCmluZGV4IDI0YjhlYzhjOTY5OTlmYmJm
ZWYyNzIxZmMyNTQ5NDg2ZTNkNTBiMDMuLjkxOGI3MmIxMGZkNWEwNjc1NjZmY2YwNmUwMThkMjc5
NzY1NDRlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvU3VyZmFjZU96b25lLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9vem9uZS9TdXJmYWNlT3pv
bmUuaApAQCAtMjUsMTAgKzI1LDEwIEBAIGNsYXNzIFN1cmZhY2VPem9uZSA6IHB1YmxpYyBTdXJm
YWNlR0wKIAogICAgIEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNv
bnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CiAKLSAgICBlZ2w6OkVy
cm9yIGluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoY29u
c3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIG1h
a2VDdXJyZW50KCkgb3ZlcnJpZGU7CiAKLSAgICBlZ2w6OkVycm9yIHN3YXAoKSBvdmVycmlkZTsK
KyAgICBlZ2w6OkVycm9yIHN3YXAoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKSBvdmVy
cmlkZTsKICAgICBlZ2w6OkVycm9yIHBvc3RTdWJCdWZmZXIoRUdMaW50IHgsIEVHTGludCB5LCBF
R0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgcXVl
cnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTGludCBhdHRyaWJ1dGUsIHZvaWQgKip2YWx1ZSkgb3Zl
cnJpZGU7CiAgICAgZWdsOjpFcnJvciBiaW5kVGV4SW1hZ2UoZ2w6OlRleHR1cmUgKnRleHR1cmUs
IEVHTGludCBidWZmZXIpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Zvcm1hdHV0aWxzZ2wuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Zvcm1hdHV0aWxzZ2wu
Y3BwCmluZGV4IDBiMmRiYWU1NDA2ODJjMDNmNTVhMzkwOGZjYzgwNTVmMDQ2Nzc2Y2EuLmM1MjE5
YjRiOGJmNDUwNjAxMDhkZTA4Mjk5NGFjNDYwNzQ2NTBlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9mb3JtYXR1dGlsc2dsLmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
Zm9ybWF0dXRpbHNnbC5jcHAKQEAgLTI1NywxMCArMjU3LDcgQEAgc3RhdGljIEludGVybmFsRm9y
bWF0SW5mb01hcCBCdWlsZEludGVybmFsRm9ybWF0SW5mb01hcCgpCiAKIHN0YXRpYyBjb25zdCBJ
bnRlcm5hbEZvcm1hdEluZm9NYXAgJkdldEludGVybmFsRm9ybWF0TWFwKCkKIHsKLSNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAi
LVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCiAgICAgc3RhdGljIGNvbnN0IEludGVybmFsRm9ybWF0
SW5mb01hcCBmb3JtYXRNYXAgPSBCdWlsZEludGVybmFsRm9ybWF0SW5mb01hcCgpOwotI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHBvcAogICAgIHJldHVybiBmb3JtYXRNYXA7CiB9CiAKQEAgLTI3
OSwxMCArMjc2LDcgQEAgY29uc3QgSW50ZXJuYWxGb3JtYXQgJkdldEludGVybmFsRm9ybWF0SW5m
byhHTGVudW0gaW50ZXJuYWxGb3JtYXQsIFN0YW5kYXJkR0wgc3QKICAgICAgICAgfQogICAgIH0K
IAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9ycyIKICAgICBzdGF0aWMgY29uc3QgSW50
ZXJuYWxGb3JtYXQgZGVmYXVsdEludGVybmFsRm9ybWF0OwotI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHBvcAogICAgIHJldHVybiBkZWZhdWx0SW50ZXJuYWxGb3JtYXQ7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgv
RGlzcGxheUdMWC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvZ2x4L0Rpc3BsYXlHTFguY3BwCmluZGV4IDAzNThhNDI4ZWQ1OTcwMjJlMDRlYTQ2
NGI2ZGI5ZjY1YTNiODQ1ZDIuLmE5ZDQxOGY3ZDQzN2U0YWZjYTRlNmRjM2UyMTJkOGM4NGFlN2Jk
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9nbHgvRGlzcGxheUdMWC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9EaXNwbGF5R0xYLmNwcApAQCAtMjEsNTYgKzIx
LDYgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvV2luZG93U3VyZmFjZUdM
WC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmVyR0wuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmgiCi0jaW5jbHVkZSAi
dGhpcmRfcGFydHkvbGliWE5WQ3RybC9OVkN0cmwuaCIKLSNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9s
aWJYTlZDdHJsL05WQ3RybExpYi5oIgotCi1uYW1lc3BhY2UKLXsKLQotLy8gU2NhbiAvZXRjL2F0
aS9hbWRwY3NkYi5kZWZhdWx0IGZvciAiUmVsZWFzZVZlcnNpb24iLgotLy8gUmV0dXJuIGVtcHR5
IHN0cmluZyBvbiBmYWlsaW5nLgotZWdsOjpFcnJvciBHZXRBTUREcml2ZXJWZXJzaW9uKHN0ZDo6
c3RyaW5nICp2ZXJzaW9uKQotewotICAgICp2ZXJzaW9uID0gIiI7Ci0KLSAgICBjb25zdCBjaGFy
IGtBTUREcml2ZXJJbmZvRmlsZU5hbWVbXSA9ICIvZXRjL2F0aS9hbWRwY3NkYi5kZWZhdWx0IjsK
LSAgICBzdGQ6Omlmc3RyZWFtIGZpbGUoa0FNRERyaXZlckluZm9GaWxlTmFtZSk7Ci0KLSAgICBp
ZiAoIWZpbGUpCi0gICAgewotICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7
Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgbGluZTsKLSAgICB3aGlsZSAoc3RkOjpnZXRsaW5l
KGZpbGUsIGxpbmUpKQotICAgIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIga1JlbGVhc2VW
ZXJzaW9uW10gPSAiUmVsZWFzZVZlcnNpb249IjsKLSAgICAgICAgaWYgKGxpbmUuY29tcGFyZSgw
LCBzdGQ6OnN0cmxlbihrUmVsZWFzZVZlcnNpb24pLCBrUmVsZWFzZVZlcnNpb24pICE9IDApCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgY29u
c3Qgc2l6ZV90IGJlZ2luID0gbGluZS5maW5kX2ZpcnN0X29mKCIwMTIzNDU2Nzg5Iik7Ci0gICAg
ICAgIGlmIChiZWdpbiA9PSBzdGQ6OnN0cmluZzo6bnBvcykKLSAgICAgICAgewotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBzaXplX3QgZW5kID0gbGlu
ZS5maW5kX2ZpcnN0X25vdF9vZigiMDEyMzQ1Njc4OS4iLCBiZWdpbik7Ci0gICAgICAgIGlmIChl
bmQgPT0gc3RkOjpzdHJpbmc6Om5wb3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgICp2ZXJzaW9u
ID0gbGluZS5zdWJzdHIoYmVnaW4pOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ewotICAgICAgICAgICAgKnZlcnNpb24gPSBsaW5lLnN1YnN0cihiZWdpbiwgZW5kIC0gYmVnaW4p
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKLSAg
ICB9Ci0gICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwotfQotCi19ICAvLyBhbm9u
eW1vdXMgbmFtZXNwYWNlCiAKIG5hbWVzcGFjZSByeAogewpAQCAtMTA2LDggKzU2LDggQEAgY2xh
c3MgRnVuY3Rpb25zR0xHTFggOiBwdWJsaWMgRnVuY3Rpb25zR0wKICAgICBQRk5HRVRQUk9DUFJP
QyBtR2V0UHJvYzsKIH07CiAKLURpc3BsYXlHTFg6OkRpc3BsYXlHTFgoKQotICAgIDogRGlzcGxh
eUdMKCksCitEaXNwbGF5R0xYOjpEaXNwbGF5R0xYKGNvbnN0IGVnbDo6RGlzcGxheVN0YXRlICZz
dGF0ZSkKKyAgICA6IERpc3BsYXlHTChzdGF0ZSksCiAgICAgICBtRnVuY3Rpb25zR0wobnVsbHB0
ciksCiAgICAgICBtUmVxdWVzdGVkVmlzdWFsKC0xKSwKICAgICAgIG1Db250ZXh0Q29uZmlnKG51
bGxwdHIpLApAQCAtMzUwLDcgKzMwMCw3IEBAIGVnbDo6RXJyb3IgRGlzcGxheUdMWDo6aW5pdGlh
bGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCiAgICAgYm9vbCBpc09wZW5HTEVTID0KICAgICAg
ICAgZWdsQXR0cmlidXRlcy5nZXQoRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUsIEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX0RFRkFVTFRfQU5HTEUpID09CiAgICAgICAgIEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFOwotICAgIGlmIChpc09wZW5HTEVTICYmICh2ZW5k
b3IgPT0gVkVORE9SX0lEX0lOVEVMIHx8IHZlbmRvciA9PSBWRU5ET1JfSURfTlZJRElBKSkKKyAg
ICBpZiAoaXNPcGVuR0xFUyAmJiAoSXNJbnRlbCh2ZW5kb3IpIHx8IElzTnZpZGlhKHZlbmRvcikp
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwg
IkludGVsIG9yIE5WSURJQSBPcGVuR0wgRVMgZHJpdmVycyBhcmUgbm90IHN1cHBvcnRlZC4iKTsK
ICAgICB9CkBAIC0zODIsMjMgKzMzMiwyMSBAQCB2b2lkIERpc3BsYXlHTFg6OnRlcm1pbmF0ZSgp
CiB9CiAKIFN1cmZhY2VJbXBsICpEaXNwbGF5R0xYOjpjcmVhdGVXaW5kb3dTdXJmYWNlKGNvbnN0
IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlw
ZSB3aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKLSAgICBBU1NFUlQoY29uZmlnSWRU
b0dMWENvbmZpZy5jb3VudChjb25maWd1cmF0aW9uLT5jb25maWdJRCkgPiAwKTsKLSAgICBnbHg6
OkZCQ29uZmlnIGZiQ29uZmlnID0gY29uZmlnSWRUb0dMWENvbmZpZ1tjb25maWd1cmF0aW9uLT5j
b25maWdJRF07CisgICAgQVNTRVJUKGNvbmZpZ0lkVG9HTFhDb25maWcuY291bnQoc3RhdGUuY29u
ZmlnLT5jb25maWdJRCkgPiAwKTsKKyAgICBnbHg6OkZCQ29uZmlnIGZiQ29uZmlnID0gY29uZmln
SWRUb0dMWENvbmZpZ1tzdGF0ZS5jb25maWctPmNvbmZpZ0lEXTsKIAogICAgIHJldHVybiBuZXcg
V2luZG93U3VyZmFjZUdMWChzdGF0ZSwgbUdMWCwgdGhpcywgZ2V0UmVuZGVyZXIoKSwgd2luZG93
LCBtR0xYLmdldERpc3BsYXkoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNv
bnRleHQsIGZiQ29uZmlnKTsKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlHTFg6OmNyZWF0ZVBi
dWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29u
ZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKLSAgICBBU1NFUlQoY29uZmln
SWRUb0dMWENvbmZpZy5jb3VudChjb25maWd1cmF0aW9uLT5jb25maWdJRCkgPiAwKTsKLSAgICBn
bHg6OkZCQ29uZmlnIGZiQ29uZmlnID0gY29uZmlnSWRUb0dMWENvbmZpZ1tjb25maWd1cmF0aW9u
LT5jb25maWdJRF07CisgICAgQVNTRVJUKGNvbmZpZ0lkVG9HTFhDb25maWcuY291bnQoc3RhdGUu
Y29uZmlnLT5jb25maWdJRCkgPiAwKTsKKyAgICBnbHg6OkZCQ29uZmlnIGZiQ29uZmlnID0gY29u
ZmlnSWRUb0dMWENvbmZpZ1tzdGF0ZS5jb25maWctPmNvbmZpZ0lEXTsKIAogICAgIEVHTGludCB3
aWR0aCAgPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMuZ2V0KEVHTF9XSURUSCwgMCkpOwog
ICAgIEVHTGludCBoZWlnaHQgPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMuZ2V0KEVHTF9I
RUlHSFQsIDApKTsKQEAgLTQwOSw4ICszNTcsOCBAQCBTdXJmYWNlSW1wbCAqRGlzcGxheUdMWDo6
Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAogfQog
CiBTdXJmYWNlSW1wbCAqRGlzcGxheUdMWDo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIo
Y29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1
cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xp
ZW50QnVmZmVyIGNsaWVudEJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykK
IHsKICAgICBVTklNUExFTUVOVEVEKCk7CkBAIC00MTgsNyArMzY2LDYgQEAgU3VyZmFjZUltcGwg
KkRpc3BsYXlHTFg6OmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3Vy
ZmFjZVN0YXRlICYKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlHTFg6OmNyZWF0ZVBpeG1hcFN1
cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQ
aXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewpAQCAtNDY5
LDc0ICs0MTYsNjcgQEAgZWdsOjpFcnJvciBEaXNwbGF5R0xYOjppbml0aWFsaXplQ29udGV4dChn
bHg6OkZCQ29uZmlnIGNvbmZpZywKICAgICAgICAgcmV0dXJuIGNyZWF0ZUNvbnRleHRBdHRyaWJz
KGNvbmZpZywgcmVxdWVzdGVkVmVyc2lvbiwgcHJvZmlsZU1hc2ssIGNvbnRleHQpOwogICAgIH0K
IAotICAgIC8vIEl0IGlzIGNvbW1vbmx5IGFzc3VtZWQgdGhhdCBnbFhDcmVhdGVDb250ZXh0QXR0
cmliIHdpbGwgY3JlYXRlIGEgY29udGV4dAotICAgIC8vIG9mIHRoZSBoaWdoZXN0IHZlcnNpb24g
cG9zc2libGUgYnV0IGl0IGlzIG5vdCBzcGVjaWZpZWQgaW4gdGhlIHNwZWMgYW5kCi0gICAgLy8g
aXMgbm90IHRydWUgb24gdGhlIE1lc2EgZHJpdmVycy4gT24gTWVzYSwgSW5zdGVhZCB3ZSB0cnkg
dG8gY3JlYXRlIGEKLSAgICAvLyBjb250ZXh0IHBlciBHTCB2ZXJzaW9uIHVudGlsIHdlIHN1Y2Nl
ZWQsIHN0YXJ0aW5nIGZyb20gbmV3ZXIgdmVyc2lvbi4KLSAgICAvLyBPbiBib3RoIE1lc2EgYW5k
IG90aGVyIGRyaXZlcnMgd2UgdHJ5IHRvIGNyZWF0ZSBhIGRlc2t0b3AgY29udGV4dCBhbmQgZmFs
bAotICAgIC8vIGJhY2sgdG8gRVMgY29udGV4dC4KLSAgICAvLyBUaGUgY29kZSBjb3VsZCBiZSBz
aW1wbGVyIGlmIHRoZSBNZXNhIGNvZGUgcGF0aCB3YXMgdXNlZCBmb3IgYWxsIGRyaXZlcnMsCi0g
ICAgLy8gaG93ZXZlciB0aGUgY29zdCBvZiBmYWlsaW5nIGEgY29udGV4dCBjcmVhdGlvbiBjYW4g
YmUgaGlnaCAoMyBtaWxsaXNlY29uZHMKLSAgICAvLyBmb3IgdGhlIE5WSURJQSBkcml2ZXIpLiBU
aGUgZ29vZCB0aGluZyBpcyB0aGF0IGZhaWxlZCBjb250ZXh0IGNyZWF0aW9uIG9ubHkKLSAgICAv
LyB0YWtlcyAwLjEgbWlsbGlzZWNvbmRzIG9uIE1lc2EuCisgICAgLy8gVGhlIG9ubHkgd2F5IHRv
IGdldCBhIGNvcmUgcHJvZmlsZSBjb250ZXh0IG9mIHRoZSBoaWdoZXN0IHZlcnNpb24gdXNpbmcK
KyAgICAvLyBnbFhDcmVhdGVDb250ZXh0QXR0cmliIGlzIHRvIHRyeSBjcmVhdGlvbmcgY29udGV4
dHMgaW4gZGVjcmVhc2luZyB2ZXJzaW9uCisgICAgLy8gbnVtYmVycy4gSXQgbWlnaHQgbG9vayB0
aGF0IGFza2luZyBmb3IgYSBjb3JlIGNvbnRleHQgb2YgdmVyc2lvbiAoMCwgMCkKKyAgICAvLyB3
b3JrcyBvbiBzb21lIGRyaXZlciBidXQgaXQgY3JlYXRlIGEgX2NvbXBhdGliaWxpdHlfIGNvbnRl
eHQgb2YgdGhlIGhpZ2hlc3QKKyAgICAvLyB2ZXJzaW9uIGluc3RlYWQuIFRoZSBjb3N0IG9mIGZh
aWxpbmcgYSBjb250ZXh0IGNyZWF0aW9uIGlzIHNtYWxsICg8IDAuMSBtcykKKyAgICAvLyBvbiBN
ZXNhIGJ1dCBpcyB1bmZvcnR1bmF0ZWx5IGEgYml0IGV4cGVuc2l2ZSBvbiB0aGUgTnZpZGlhIGRy
aXZlciAofjNtcykuCisgICAgLy8gQWxzbyB0cnkgdG8gZ2V0IGFueSBEZXNrdG9wIEdMIGNvbnRl
eHQsIGJ1dCBpZiB0aGF0IGZhaWxzIGZhbGxiYWNrIHRvCisgICAgLy8gYXNraW5nIGZvciBPcGVu
R0wgRVMgY29udGV4dHMuCiAKICAgICBzdHJ1Y3QgQ29udGV4dENyZWF0aW9uSW5mbwogICAgIHsK
KyAgICAgICAgQ29udGV4dENyZWF0aW9uSW5mbyhFR0xpbnQgZGlzcGxheVR5cGUsIGludCBwcm9m
aWxlRmxhZywgZ2w6OlZlcnNpb24gdmVyc2lvbikKKyAgICAgICAgICAgIDogZGlzcGxheVR5cGUo
ZGlzcGxheVR5cGUpLCBwcm9maWxlRmxhZyhwcm9maWxlRmxhZyksIHZlcnNpb24odmVyc2lvbikK
KyAgICAgICAgeworICAgICAgICB9CisKICAgICAgICAgRUdMaW50IGRpc3BsYXlUeXBlOwogICAg
ICAgICBpbnQgcHJvZmlsZUZsYWc7Ci0gICAgICAgIE9wdGlvbmFsPGdsOjpWZXJzaW9uPiB2ZXJz
aW9uOworICAgICAgICBnbDo6VmVyc2lvbiB2ZXJzaW9uOwogICAgIH07CiAKICAgICAvLyBjbGFu
Zy1mb3JtYXQgb2ZmCi0gICAgLy8gRm9yIHJlZ3VsYXIgZHJpdmVycyB3ZSB0cnkgdG8gY3JlYXRl
IGEgY29yZSwgY29tcGF0aWJpbGl0eSwgdGhlbiBFUyBjb250ZXh0LgotICAgIC8vIFdpdGhvdXQg
cmVxdWlyaW5nIGFueSBzcGVjaWZpYyB2ZXJzaW9uICh0aGUgT3B0aW9uYWwgdmVyc2lvbiBpcyB1
bmRlZmluZWQpLgotICAgIGNvbnN0IENvbnRleHRDcmVhdGlvbkluZm8gY29udGV4dHNUb1RyeVtd
ID0gewotICAgICAgICB7IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgR0xY
X0NPTlRFWFRfQ09SRV9QUk9GSUxFX0JJVF9BUkIsIHt9IH0sCi0gICAgICAgIHsgRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCAwLCB7fSB9LAotICAgICAgICB7IEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFLCBHTFhfQ09OVEVYVF9FUzJfUFJPRklMRV9C
SVRfRVhULCB7fSB9LAotICAgIH07Ci0KLSAgICAvLyBPbiBNZXNhIHdlIHRyeSB0byBjcmVhdGUg
YSBjb3JlIGNvbnRleHQsIGV4Y2VwdCBmb3IgdmVyc2lvbnMgYmVsb3cgMy4yCi0gICAgLy8gd2hl
cmUgaXQgaXMgbm90IGFwcGxpY2FibGUuIChhbmQgZmFsbGJhY2sgdG8gRVMgYXMgd2VsbCkKLSAg
ICBjb25zdCBDb250ZXh0Q3JlYXRpb25JbmZvIG1lc2FDb250ZXh0c1RvVHJ5W10gPSB7Ci0gICAg
ICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCBHTFhfQ09OVEVYVF9D
T1JFX1BST0ZJTEVfQklUX0FSQiwgeyBnbDo6VmVyc2lvbig0LCA1KSB9IH0sCi0gICAgICAgIHsg
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCBHTFhfQ09OVEVYVF9DT1JFX1BS
T0ZJTEVfQklUX0FSQiwgeyBnbDo6VmVyc2lvbig0LCA0KSB9IH0sCi0gICAgICAgIHsgRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCBHTFhfQ09OVEVYVF9DT1JFX1BST0ZJTEVf
QklUX0FSQiwgeyBnbDo6VmVyc2lvbig0LCAzKSB9IH0sCi0gICAgICAgIHsgRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCBHTFhfQ09OVEVYVF9DT1JFX1BST0ZJTEVfQklUX0FS
QiwgeyBnbDo6VmVyc2lvbig0LCAyKSB9IH0sCi0gICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfT1BFTkdMX0FOR0xFLCBHTFhfQ09OVEVYVF9DT1JFX1BST0ZJTEVfQklUX0FSQiwgeyBn
bDo6VmVyc2lvbig0LCAxKSB9IH0sCi0gICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVf
T1BFTkdMX0FOR0xFLCBHTFhfQ09OVEVYVF9DT1JFX1BST0ZJTEVfQklUX0FSQiwgeyBnbDo6VmVy
c2lvbig0LCAwKSB9IH0sCi0gICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdM
X0FOR0xFLCBHTFhfQ09OVEVYVF9DT1JFX1BST0ZJTEVfQklUX0FSQiwgeyBnbDo6VmVyc2lvbigz
LCAzKSB9IH0sCi0gICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xF
LCBHTFhfQ09OVEVYVF9DT1JFX1BST0ZJTEVfQklUX0FSQiwgeyBnbDo6VmVyc2lvbigzLCAyKSB9
IH0sCi0gICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCAwLCB7
IGdsOjpWZXJzaW9uKDMsIDEpIH0gfSwKLSAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9PUEVOR0xfQU5HTEUsIDAsIHsgZ2w6OlZlcnNpb24oMywgMCkgfSB9LAotICAgICAgICB7IEVH
TF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgeyBnbDo6VmVyc2lvbigyLCAw
KSB9IH0sCi0gICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCAw
LCB7IGdsOjpWZXJzaW9uKDEsIDUpIH0gfSwKLSAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9PUEVOR0xfQU5HTEUsIDAsIHsgZ2w6OlZlcnNpb24oMSwgNCkgfSB9LAotICAgICAgICB7
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgeyBnbDo6VmVyc2lvbigx
LCAzKSB9IH0sCi0gICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xF
LCAwLCB7IGdsOjpWZXJzaW9uKDEsIDIpIH0gfSwKLSAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9PUEVOR0xfQU5HTEUsIDAsIHsgZ2w6OlZlcnNpb24oMSwgMSkgfSB9LAotICAgICAg
ICB7IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgeyBnbDo6VmVyc2lv
bigxLCAwKSB9IH0sCi0gICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNf
QU5HTEUsIEdMWF9DT05URVhUX0VTMl9QUk9GSUxFX0JJVF9FWFQsIHsgZ2w6OlZlcnNpb24oMywg
MikgfSB9LAotICAgICAgICB7IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xF
LCBHTFhfQ09OVEVYVF9FUzJfUFJPRklMRV9CSVRfRVhULCB7IGdsOjpWZXJzaW9uKDMsIDEpIH0g
fSwKLSAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRSwgR0xY
X0NPTlRFWFRfRVMyX1BST0ZJTEVfQklUX0VYVCwgeyBnbDo6VmVyc2lvbigzLCAwKSB9IH0sCi0g
ICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUsIEdMWF9DT05U
RVhUX0VTMl9QUk9GSUxFX0JJVF9FWFQsIHsgZ2w6OlZlcnNpb24oMiwgMCkgfSB9LAotICAgIH07
CisgICAgc3RkOjp2ZWN0b3I8Q29udGV4dENyZWF0aW9uSW5mbz4gY29udGV4dHNUb1RyeTsKKyAg
ICBjb250ZXh0c1RvVHJ5LmVtcGxhY2VfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVO
R0xfQU5HTEUsIEdMWF9DT05URVhUX0NPUkVfUFJPRklMRV9CSVRfQVJCLCBnbDo6VmVyc2lvbig0
LCA1KSk7CisgICAgY29udGV4dHNUb1RyeS5lbXBsYWNlX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfT1BFTkdMX0FOR0xFLCBHTFhfQ09OVEVYVF9DT1JFX1BST0ZJTEVfQklUX0FSQiwgZ2w6
OlZlcnNpb24oNCwgNCkpOworICAgIGNvbnRleHRzVG9UcnkuZW1wbGFjZV9iYWNrKEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgR0xYX0NPTlRFWFRfQ09SRV9QUk9GSUxFX0JJ
VF9BUkIsIGdsOjpWZXJzaW9uKDQsIDMpKTsKKyAgICBjb250ZXh0c1RvVHJ5LmVtcGxhY2VfYmFj
ayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsIEdMWF9DT05URVhUX0NPUkVf
UFJPRklMRV9CSVRfQVJCLCBnbDo6VmVyc2lvbig0LCAyKSk7CisgICAgY29udGV4dHNUb1RyeS5l
bXBsYWNlX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCBHTFhfQ09O
VEVYVF9DT1JFX1BST0ZJTEVfQklUX0FSQiwgZ2w6OlZlcnNpb24oNCwgMSkpOworICAgIGNvbnRl
eHRzVG9UcnkuZW1wbGFjZV9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdM
RSwgR0xYX0NPTlRFWFRfQ09SRV9QUk9GSUxFX0JJVF9BUkIsIGdsOjpWZXJzaW9uKDQsIDApKTsK
KyAgICBjb250ZXh0c1RvVHJ5LmVtcGxhY2VfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9P
UEVOR0xfQU5HTEUsIEdMWF9DT05URVhUX0NPUkVfUFJPRklMRV9CSVRfQVJCLCBnbDo6VmVyc2lv
bigzLCAzKSk7CisgICAgY29udGV4dHNUb1RyeS5lbXBsYWNlX2JhY2soRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfT1BFTkdMX0FOR0xFLCBHTFhfQ09OVEVYVF9DT1JFX1BST0ZJTEVfQklUX0FSQiwg
Z2w6OlZlcnNpb24oMywgMikpOworICAgIGNvbnRleHRzVG9UcnkuZW1wbGFjZV9iYWNrKEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgZ2w6OlZlcnNpb24oMywgMykpOwor
CisgICAgLy8gT24gTWVzYSwgZG8gbm90IHRyeSB0byBjcmVhdGUgT3BlbkdMIGNvbnRleHQgdmVy
c2lvbnMgYmV0d2VlbiAzLjAgYW5kCisgICAgLy8gMy4yIGJlY2F1c2Ugb2YgY29tcGF0aWJpbGl0
eSBwcm9ibGVtcy4gU2VlIGNyYnVnLmNvbS82NTkwMzAKKyAgICBpZiAoIW1Jc01lc2EpCisgICAg
eworICAgICAgICBjb250ZXh0c1RvVHJ5LmVtcGxhY2VfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9PUEVOR0xfQU5HTEUsIDAsIGdsOjpWZXJzaW9uKDMsIDIpKTsKKyAgICAgICAgY29udGV4
dHNUb1RyeS5lbXBsYWNlX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xF
LCAwLCBnbDo6VmVyc2lvbigzLCAxKSk7CisgICAgICAgIGNvbnRleHRzVG9UcnkuZW1wbGFjZV9i
YWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgZ2w6OlZlcnNpb24o
MywgMCkpOworICAgIH0KKworICAgIGNvbnRleHRzVG9UcnkuZW1wbGFjZV9iYWNrKEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgZ2w6OlZlcnNpb24oMiwgMSkpOworICAg
IGNvbnRleHRzVG9UcnkuZW1wbGFjZV9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5H
TF9BTkdMRSwgMCwgZ2w6OlZlcnNpb24oMiwgMCkpOworICAgIGNvbnRleHRzVG9UcnkuZW1wbGFj
ZV9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgZ2w6OlZlcnNp
b24oMSwgNSkpOworICAgIGNvbnRleHRzVG9UcnkuZW1wbGFjZV9iYWNrKEVHTF9QTEFURk9STV9B
TkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgZ2w6OlZlcnNpb24oMSwgNCkpOworICAgIGNvbnRl
eHRzVG9UcnkuZW1wbGFjZV9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdM
RSwgMCwgZ2w6OlZlcnNpb24oMSwgMykpOworICAgIGNvbnRleHRzVG9UcnkuZW1wbGFjZV9iYWNr
KEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgZ2w6OlZlcnNpb24oMSwg
MikpOworICAgIGNvbnRleHRzVG9UcnkuZW1wbGFjZV9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX09QRU5HTF9BTkdMRSwgMCwgZ2w6OlZlcnNpb24oMSwgMSkpOworICAgIGNvbnRleHRzVG9U
cnkuZW1wbGFjZV9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwg
Z2w6OlZlcnNpb24oMSwgMCkpOworICAgIGNvbnRleHRzVG9UcnkuZW1wbGFjZV9iYWNrKEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFLCBHTFhfQ09OVEVYVF9FUzJfUFJPRklM
RV9CSVRfRVhULCBnbDo6VmVyc2lvbigzLCAyKSk7CisgICAgY29udGV4dHNUb1RyeS5lbXBsYWNl
X2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUsIEdMWF9DT05URVhU
X0VTMl9QUk9GSUxFX0JJVF9FWFQsIGdsOjpWZXJzaW9uKDMsIDEpKTsKKyAgICBjb250ZXh0c1Rv
VHJ5LmVtcGxhY2VfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRSwg
R0xYX0NPTlRFWFRfRVMyX1BST0ZJTEVfQklUX0VYVCwgZ2w6OlZlcnNpb24oMywgMCkpOworICAg
IGNvbnRleHRzVG9UcnkuZW1wbGFjZV9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5H
TEVTX0FOR0xFLCBHTFhfQ09OVEVYVF9FUzJfUFJPRklMRV9CSVRfRVhULCBnbDo6VmVyc2lvbigy
LCAwKSk7CiAgICAgLy8gY2xhbmctZm9ybWF0IG9uCiAKLSAgICBjb25zdCBDb250ZXh0Q3JlYXRp
b25JbmZvICp0b1RyeSA9IGNvbnRleHRzVG9Ucnk7Ci0gICAgc2l6ZV90IHRvVHJ5TGVuZ3RoID0g
QXJyYXlTaXplKGNvbnRleHRzVG9UcnkpOwotICAgIGlmIChtSXNNZXNhKQotICAgIHsKLSAgICAg
ICAgdG9UcnkgICAgICAgPSBtZXNhQ29udGV4dHNUb1RyeTsKLSAgICAgICAgdG9UcnlMZW5ndGgg
PSBBcnJheVNpemUobWVzYUNvbnRleHRzVG9UcnkpOwotICAgIH0KLQogICAgIC8vIE5PVEU6IGJl
bG93IHdlIHJldHVybiBhcyBzb29uIGFzIHdlJ3JlIGFibGUgdG8gY3JlYXRlIGEgY29udGV4dCBz
byB0aGUKICAgICAvLyAiZXJyb3IiIHZhcmlhYmxlIGlzIEVHTF9TVUNDRVNTIHdoZW4gcmV0dXJu
ZWQgY29udHJhcnkgdG8gdGhlIGNvbW1vbiBpZGlvbQogICAgIC8vIG9mIHJldHVybmluZyAiZXJy
b3IiIHdoZW4gdGhlcmUgaXMgYW4gYWN0dWFsIGVycm9yLgotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgdG9UcnlMZW5ndGg7ICsraSkKKyAgICBmb3IgKGNvbnN0IGF1dG8gJmluZm8gOiBjb250
ZXh0c1RvVHJ5KQogICAgIHsKLSAgICAgICAgY29uc3QgQ29udGV4dENyZWF0aW9uSW5mbyAmaW5m
byA9IHRvVHJ5W2ldOwogICAgICAgICBpZiAocmVxdWVzdGVkRGlzcGxheVR5cGUgIT0gRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfREVGQVVMVF9BTkdMRSAmJgogICAgICAgICAgICAgcmVxdWVzdGVk
RGlzcGxheVR5cGUgIT0gaW5mby5kaXNwbGF5VHlwZSkKICAgICAgICAgewpAQCAtNzE5LDYgKzY1
OSw4IEBAIGVnbDo6Q29uZmlnU2V0IERpc3BsYXlHTFg6OmdlbmVyYXRlQ29uZmlncygpCiAgICAg
ICAgIC8vIFRPRE8oY3dhbGxleikgSSBoYXZlIG5vIGlkZWEgd2hhdCB0aGlzIGlzCiAgICAgICAg
IGNvbmZpZy5tYXRjaE5hdGl2ZVBpeG1hcCA9IEVHTF9OT05FOwogCisgICAgICAgIGNvbmZpZy5j
b2xvckNvbXBvbmVudFR5cGUgPSBFR0xfQ09MT1JfQ09NUE9ORU5UX1RZUEVfRklYRURfRVhUOwor
CiAgICAgICAgIGludCBpZCA9IGNvbmZpZ3MuYWRkKGNvbmZpZyk7CiAgICAgICAgIGNvbmZpZ0lk
VG9HTFhDb25maWdbaWRdID0gZ2x4Q29uZmlnOwogICAgIH0KQEAgLTc3NywyMiArNzE5LDYgQEAg
ZWdsOjpFcnJvciBEaXNwbGF5R0xYOjp3YWl0Q2xpZW50KCkgY29uc3QKICAgICByZXR1cm4gZWds
OjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKLWVnbDo6RXJyb3IgRGlzcGxheUdMWDo6Z2V0RHJp
dmVyVmVyc2lvbihzdGQ6OnN0cmluZyAqdmVyc2lvbikgY29uc3QKLXsKLSAgICBWZW5kb3JJRCB2
ZW5kb3IgPSBHZXRWZW5kb3JJRChtRnVuY3Rpb25zR0wpOwotCi0gICAgc3dpdGNoICh2ZW5kb3Ip
Ci0gICAgewotICAgICAgICBjYXNlIFZFTkRPUl9JRF9OVklESUE6Ci0gICAgICAgICAgICByZXR1
cm4gZ2V0TlZJRElBRHJpdmVyVmVyc2lvbih2ZXJzaW9uKTsKLSAgICAgICAgY2FzZSBWRU5ET1Jf
SURfQU1EOgotICAgICAgICAgICAgcmV0dXJuIEdldEFNRERyaXZlclZlcnNpb24odmVyc2lvbik7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAqdmVyc2lvbiA9ICIiOwotICAgICAgICAg
ICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwotICAgIH0KLX0KLQogZWdsOjpFcnJv
ciBEaXNwbGF5R0xYOjp3YWl0TmF0aXZlKEVHTGludCBlbmdpbmUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpkcmF3U3VyZmFjZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKnJlYWRTdXJmYWNlKSBjb25zdApA
QCAtODkyLDYgKzgxOCw5IEBAIGNvbnN0IEZ1bmN0aW9uc0dMICpEaXNwbGF5R0xYOjpnZXRGdW5j
dGlvbnNHTCgpIGNvbnN0CiB2b2lkIERpc3BsYXlHTFg6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6
OkRpc3BsYXlFeHRlbnNpb25zICpvdXRFeHRlbnNpb25zKSBjb25zdAogewogICAgIG91dEV4dGVu
c2lvbnMtPmNyZWF0ZUNvbnRleHRSb2J1c3RuZXNzID0gbUhhc0FSQkNyZWF0ZUNvbnRleHRSb2J1
c3RuZXNzOworCisgICAgLy8gQ29udGV4dHMgYXJlIHZpcnR1YWxpemVkIHNvIHRleHR1cmVzIGNh
biBiZSBzaGFyZWQgZ2xvYmFsbHkKKyAgICBvdXRFeHRlbnNpb25zLT5kaXNwbGF5VGV4dHVyZVNo
YXJlR3JvdXAgPSB0cnVlOwogfQogCiB2b2lkIERpc3BsYXlHTFg6OmdlbmVyYXRlQ2FwcyhlZ2w6
OkNhcHMgKm91dENhcHMpIGNvbnN0CkBAIC05NTMsMjggKzg4Miw0IEBAIGVnbDo6RXJyb3IgRGlz
cGxheUdMWDo6Y3JlYXRlQ29udGV4dEF0dHJpYnMoZ2x4OjpGQkNvbmZpZywKICAgICByZXR1cm4g
ZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKLWVnbDo6RXJyb3IgRGlzcGxheUdMWDo6Z2V0
TlZJRElBRHJpdmVyVmVyc2lvbihzdGQ6OnN0cmluZyAqdmVyc2lvbikgY29uc3QKLXsKLSAgICAq
dmVyc2lvbiA9ICIiOwotCi0gICAgaW50IGV2ZW50QmFzZSA9IDA7Ci0gICAgaW50IGVycm9yQmFz
ZSA9IDA7Ci0gICAgaWYgKFhOVkNUUkxRdWVyeUV4dGVuc2lvbihtWERpc3BsYXksICZldmVudEJh
c2UsICZlcnJvckJhc2UpKQotICAgIHsKLSAgICAgICAgaW50IHNjcmVlbkNvdW50ID0gU2NyZWVu
Q291bnQobVhEaXNwbGF5KTsKLSAgICAgICAgZm9yIChpbnQgc2NyZWVuID0gMDsgc2NyZWVuIDwg
c2NyZWVuQ291bnQ7ICsrc2NyZWVuKQotICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyICpidWZm
ZXIgPSBudWxscHRyOwotICAgICAgICAgICAgaWYgKFhOVkNUUkxJc052U2NyZWVuKG1YRGlzcGxh
eSwgc2NyZWVuKSAmJgotICAgICAgICAgICAgICAgIFhOVkNUUkxRdWVyeVN0cmluZ0F0dHJpYnV0
ZShtWERpc3BsYXksIHNjcmVlbiwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTlZfQ1RSTF9TVFJJTkdfTlZJRElBX0RSSVZFUl9WRVJTSU9OLCAmYnVmZmVy
KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAqdmVyc2lvbiA9IGJ1ZmZlcjsKLSAg
ICAgICAgICAgICAgICBYRnJlZShidWZmZXIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwotfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2ds
eC9EaXNwbGF5R0xYLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvZ2x4L0Rpc3BsYXlHTFguaAppbmRleCA3OTE5ODM5NWRlZDNlMDViOTAwMzEzZWYw
NmQ5MGU1OWUyODgyMmIzLi5jZDU0MmNjNmE1OWVmODMxZWMzZDFiM2ZhYjA2ZGNmNTBkMWIwZmE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZ2x4L0Rpc3BsYXlHTFguaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Rpc3BsYXlHTFguaApAQCAtMzgsMjUgKzM4LDIyIEBA
IHN0cnVjdCBTd2FwQ29udHJvbERhdGEKIGNsYXNzIERpc3BsYXlHTFggOiBwdWJsaWMgRGlzcGxh
eUdMCiB7CiAgIHB1YmxpYzoKLSAgICBEaXNwbGF5R0xYKCk7CisgICAgRGlzcGxheUdMWChjb25z
dCBlZ2w6OkRpc3BsYXlTdGF0ZSAmc3RhdGUpOwogICAgIH5EaXNwbGF5R0xYKCkgb3ZlcnJpZGU7
CiAKICAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoZWdsOjpEaXNwbGF5ICpkaXNwbGF5KSBvdmVy
cmlkZTsKICAgICB2b2lkIHRlcm1pbmF0ZSgpIG92ZXJyaWRlOwogCiAgICAgU3VyZmFjZUltcGwg
KmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25m
aWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2
ZVdpbmRvd1R5cGUgd2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKICAgICBTdXJmYWNl
SW1wbCAqY3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZp
ZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwogICAgIFN1cmZhY2VJ
bXBsICpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0
ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gYnVm
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
Q2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJy
aWRlOwogICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6U3Vy
ZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmli
cykgb3ZlcnJpZGU7CiAKQEAgLTc2LDggKzczLDYgQEAgY2xhc3MgRGlzcGxheUdMWCA6IHB1Ymxp
YyBEaXNwbGF5R0wKICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpkcmF3
U3VyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpyZWFkU3Vy
ZmFjZSkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBlZ2w6OkVycm9yIGdldERyaXZlclZlcnNpb24o
c3RkOjpzdHJpbmcgKnZlcnNpb24pIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgLy8gU3luY2hyb25p
emVzIHdpdGggdGhlIFggc2VydmVyLCBpZiB0aGUgZGlzcGxheSBoYXMgYmVlbiBvcGVuZWQgYnkg
QU5HTEUuCiAgICAgLy8gQ2FsbGluZyB0aGlzIGlzIHJlcXVpcmVkIGF0IHRoZSBlbmQgb2YgZXZl
cnkgZnVuY3Rpb25zIHRoYXQgZG9lcyBidWZmZXJlZAogICAgIC8vIFggY2FsbHMgKG5vdCBmb3Ig
Z2xYIGNhbGxzKSBvdGhlcndpc2UgdGhlcmUgbWlnaHQgYmUgcmFjZSBjb25kaXRpb25zCkBAIC0x
MDgsOCArMTAzLDYgQEAgY2xhc3MgRGlzcGxheUdMWCA6IHB1YmxpYyBEaXNwbGF5R0wKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwcm9maWxlTWFzaywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdseDo6Q29udGV4dCAqY29udGV4dCkgY29uc3Q7
CiAKLSAgICBlZ2w6OkVycm9yIGdldE5WSURJQURyaXZlclZlcnNpb24oc3RkOjpzdHJpbmcgKnZl
cnNpb24pIGNvbnN0OwotCiAgICAgRnVuY3Rpb25zR0wgKm1GdW5jdGlvbnNHTDsKIAogICAgIHN0
ZDo6bWFwPGludCwgZ2x4OjpGQkNvbmZpZz4gY29uZmlnSWRUb0dMWENvbmZpZzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgv
UGJ1ZmZlclN1cmZhY2VHTFguY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL2dseC9QYnVmZmVyU3VyZmFjZUdMWC5jcHAKaW5kZXggYTk3MDIxYjQw
MmE3MDc0NTE3ZDRmMDMwMDhmYTRmZDc4MGM4MWZmNy4uNTdlMjI4MzFiN2E1ZTc5ZjRmN2QzMDdl
NGIyM2U5MGM1ZjhlZmFiMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9QYnVmZmVyU3VyZmFjZUdMWC5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9QYnVmZmVy
U3VyZmFjZUdMWC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgUGJ1ZmZlclN1cmZhY2VHTFg6On5QYnVm
ZmVyU3VyZmFjZUdMWCgpCiAgICAgfQogfQogCi1lZ2w6OkVycm9yIFBidWZmZXJTdXJmYWNlR0xY
Ojppbml0aWFsaXplKCkKK2VnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VHTFg6OmluaXRpYWxpemUo
Y29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKQogewogICAgIC8vIEF2b2lkIGNyZWF0aW5n
IDAtc2l6ZWQgUEJ1ZmZlcnMgYXMgaXQgZmFpbHMgb24gdGhlIEludGVsIE1lc2EgZHJpdmVyCiAg
ICAgLy8gYXMgY29tbWVudGVkIG9uIGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4ODY5IHNvIHdlCkBAIC04Miw3ICs4Miw3IEBAIGVnbDo6RXJyb3IgUGJ1ZmZl
clN1cmZhY2VHTFg6Om1ha2VDdXJyZW50KCkKICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VD
Q0VTUyk7CiB9CiAKLWVnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VHTFg6OnN3YXAoKQorZWdsOjpF
cnJvciBQYnVmZmVyU3VyZmFjZUdMWDo6c3dhcChjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUlt
cGwpCiB7CiAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQpAQCAtMTQwLDQg
KzE0MCw0IEBAIGVnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VHTFg6OmNoZWNrRm9yUmVzaXplKCkK
ICAgICAvLyBUaGUgc2l6ZSBvZiBwYnVmZmVycyBuZXZlciBjaGFuZ2UKICAgICByZXR1cm4gZWds
OjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9Ci19Cit9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgv
UGJ1ZmZlclN1cmZhY2VHTFguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9nbHgvUGJ1ZmZlclN1cmZhY2VHTFguaAppbmRleCBkMzQ2NjM0YjIwYTYz
YWFkM2Y4NmRkMzcxNWYwNTNjMzMwZTg5MGVlLi5jZjM5MGU1NDY3NTVlOWJlOGQyNTZkNDU5MzRk
NjFlZTYyMGJhNTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1BidWZmZXJTdXJmYWNlR0xYLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9QYnVmZmVyU3VyZmFj
ZUdMWC5oCkBAIC0zMCwxMCArMzAsMTAgQEAgY2xhc3MgUGJ1ZmZlclN1cmZhY2VHTFggOiBwdWJs
aWMgU3VyZmFjZUdMWAogICAgICAgICAgICAgICAgICAgICAgIGdseDo6RkJDb25maWcgZmJDb25m
aWcpOwogICAgIH5QYnVmZmVyU3VyZmFjZUdMWCgpIG92ZXJyaWRlOwogCi0gICAgZWdsOjpFcnJv
ciBpbml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBpbml0aWFsaXplKGNvbnN0
IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciBtYWtl
Q3VycmVudCgpIG92ZXJyaWRlOwogCi0gICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJpZGU7Cisg
ICAgZWdsOjpFcnJvciBzd2FwKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJp
ZGU7CiAgICAgZWdsOjpFcnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdM
aW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHF1ZXJ5
U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJy
aWRlOwogICAgIGVnbDo6RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBF
R0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKQEAgLTU5LDYgKzU5LDYgQEAgY2xhc3MgUGJ1ZmZlclN1
cmZhY2VHTFggOiBwdWJsaWMgU3VyZmFjZUdMWAogICAgIGdseDo6UGJ1ZmZlciBtUGJ1ZmZlcjsK
IH07CiAKLX0KK30gIC8vIG5hbWVzcGFjZSByeAogCiAjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVS
RVJfR0xfR0xYX1BCVUZGRVJTVVJGQUNFR0xYX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1dpbmRvd1N1cmZhY2VHTFgu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2ds
eC9XaW5kb3dTdXJmYWNlR0xYLmNwcAppbmRleCAyMWIxYjMxNmY0N2RmYzI4ODQ4NTg0YTg5MjBk
YTNkOGJkMmY4Mzk0Li5jMzU3ZjlkNDFjMjI3ZDM4ZTU4OWI1ZmY2ZjExNGMzNjJmYjhjZDg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvZ2x4L1dpbmRvd1N1cmZhY2VHTFguY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvV2luZG93U3VyZmFjZUdMWC5jcHAKQEAgLTYz
LDcgKzYzLDcgQEAgV2luZG93U3VyZmFjZUdMWDo6fldpbmRvd1N1cmZhY2VHTFgoKQogICAgIG1H
TFhEaXNwbGF5LT5zeW5jWENvbW1hbmRzKCk7CiB9CiAKLWVnbDo6RXJyb3IgV2luZG93U3VyZmFj
ZUdMWDo6aW5pdGlhbGl6ZSgpCitlZ2w6OkVycm9yIFdpbmRvd1N1cmZhY2VHTFg6OmluaXRpYWxp
emUoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKQogewogICAgIC8vIENoZWNrIHRoYXQg
dGhlIHdpbmRvdydzIHZpc3VhbCBJRCBpcyB2YWxpZCwgYXMgcGFydCBvZiB0aGUgQU1HTEVfeDEx
X3Zpc3VhbAogICAgIC8vIGV4dGVuc2lvbi4KQEAgLTE0MSw3ICsxNDEsNyBAQCBlZ2w6OkVycm9y
IFdpbmRvd1N1cmZhY2VHTFg6Om1ha2VDdXJyZW50KCkKICAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfU1VDQ0VTUyk7CiB9CiAKLWVnbDo6RXJyb3IgV2luZG93U3VyZmFjZUdMWDo6c3dhcCgpCitl
Z2w6OkVycm9yIFdpbmRvd1N1cmZhY2VHTFg6OnN3YXAoY29uc3QgRGlzcGxheUltcGwgKmRpc3Bs
YXlJbXBsKQogewogICAgIC8vIFdlIG5lZWQgdG8gc3dhcCBiZWZvcmUgcmVzaXppbmcgYXMgc29t
ZSBkcml2ZXJzIGNsb2JiZXIgdGhlIGJhY2sgYnVmZmVyCiAgICAgLy8gd2hlbiB0aGUgd2luZG93
IGlzIHJlc2l6ZWQuCkBAIC0yNDEsNCArMjQxLDQgQEAgYm9vbCBXaW5kb3dTdXJmYWNlR0xYOjpn
ZXRXaW5kb3dEaW1lbnNpb25zKFdpbmRvdyB3aW5kb3csIHVuc2lnbmVkIGludCAqd2lkdGgsIHUK
ICAgICByZXR1cm4gWEdldEdlb21ldHJ5KG1EaXNwbGF5LCB3aW5kb3csICZyb290LCAmeCwgJnks
IHdpZHRoLCBoZWlnaHQsICZib3JkZXIsICZkZXB0aCkgIT0gMDsKIH0KIAotfQorfSAgLy8gbmFt
ZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvZ2x4L1dpbmRvd1N1cmZhY2VHTFguaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvV2luZG93U3VyZmFjZUdMWC5oCmlu
ZGV4IDBjZGRhOTZlNjcyZDUzMzRkMjk0NmI1MjJhMzBlZmFkMzk1OWZkZjEuLjAwNTE1Y2M1NDgz
NDQwNWY2Njg0MzM5MWRkYWQyNzY5NGQ5NzExMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvV2luZG93U3VyZmFjZUdMWC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9n
bHgvV2luZG93U3VyZmFjZUdMWC5oCkBAIC0zMiwxMCArMzIsMTAgQEAgY2xhc3MgV2luZG93U3Vy
ZmFjZUdMWCA6IHB1YmxpYyBTdXJmYWNlR0xYCiAgICAgICAgICAgICAgICAgICAgICBnbHg6OkZC
Q29uZmlnIGZiQ29uZmlnKTsKICAgICB+V2luZG93U3VyZmFjZUdMWCgpIG92ZXJyaWRlOwogCi0g
ICAgZWdsOjpFcnJvciBpbml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBpbml0
aWFsaXplKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJpZGU7CiAgICAgZWds
OjpFcnJvciBtYWtlQ3VycmVudCgpIG92ZXJyaWRlOwogCi0gICAgZWdsOjpFcnJvciBzd2FwKCkg
b3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBzd2FwKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5
SW1wbCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBF
R0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSBvdmVycmlkZTsKICAgICBlZ2w6
OkVycm9yIHF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoq
dmFsdWUpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJl
ICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKQEAgLTY4LDYgKzY4LDYgQEAgY2xh
c3MgV2luZG93U3VyZmFjZUdMWCA6IHB1YmxpYyBTdXJmYWNlR0xYCiAgICAgU3dhcENvbnRyb2xE
YXRhIG1Td2FwQ29udHJvbDsKIH07CiAKLX0KK30gIC8vIG5hbWVzcGFjZSByeAogCiAjZW5kaWYg
Ly8gTElCQU5HTEVfUkVOREVSRVJfR0xfR0xYX1dJTkRPV1NVUkZBQ0VHTFhfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9yZW5k
ZXJlcmdsX3V0aWxzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmNwcAppbmRleCAxNWNmNjI3MWEzYzcxZjlkMWYw
ODE2NTE0YzE2ZTA2NmViN2NmZmNmLi4zMTE3NGJhOGM1MWRlYTFiMzJiY2RiNWNiNzBiNzU5NjE1
MGQwZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvcmVuZGVyZXJnbF91dGlscy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuY3BwCkBAIC0x
Niw2ICsxNiw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL2Zvcm1hdHV0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rp
b25zR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9RdWVyeUdMLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvV29ya2Fyb3VuZHNHTC5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL2dsL2Zvcm1hdHV0aWxzZ2wuaCIKIApAQCAtMTYyLDcgKzE2Myw4IEBA
IHN0YXRpYyBHTGZsb2F0IFF1ZXJ5R0xGbG9hdFJhbmdlKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5j
dGlvbnMsIEdMZW51bSBuYW1lLCBzaXplCiBzdGF0aWMgZ2w6OlR5cGVQcmVjaXNpb24gUXVlcnlU
eXBlUHJlY2lzaW9uKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIEdMZW51bSBzaGFkZXJU
eXBlLCBHTGVudW0gcHJlY2lzaW9uVHlwZSkKIHsKICAgICBnbDo6VHlwZVByZWNpc2lvbiBwcmVj
aXNpb247Ci0gICAgZnVuY3Rpb25zLT5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlw
ZSwgcHJlY2lzaW9uVHlwZSwgcHJlY2lzaW9uLnJhbmdlLCAmcHJlY2lzaW9uLnByZWNpc2lvbik7
CisgICAgZnVuY3Rpb25zLT5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVyVHlwZSwgcHJl
Y2lzaW9uVHlwZSwgcHJlY2lzaW9uLnJhbmdlLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmcHJlY2lzaW9uLnByZWNpc2lvbik7CiAgICAgcmV0dXJuIHBy
ZWNpc2lvbjsKIH0KIApAQCAtMTgxLDggKzE4MywxMiBAQCBzdGF0aWMgdm9pZCBMaW1pdFZlcnNp
b24oZ2w6OlZlcnNpb24gKmN1clZlcnNpb24sIGNvbnN0IGdsOjpWZXJzaW9uICZtYXhWZXJzaW9u
KQogICAgIH0KIH0KIAotdm9pZCBHZW5lcmF0ZUNhcHMoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0
aW9ucywgZ2w6OkNhcHMgKmNhcHMsIGdsOjpUZXh0dXJlQ2Fwc01hcCAqdGV4dHVyZUNhcHNNYXAs
Ci0gICAgICAgICAgICAgICAgICBnbDo6RXh0ZW5zaW9ucyAqZXh0ZW5zaW9ucywgZ2w6OlZlcnNp
b24gKm1heFN1cHBvcnRlZEVTVmVyc2lvbikKK3ZvaWQgR2VuZXJhdGVDYXBzKGNvbnN0IEZ1bmN0
aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dM
ICZ3b3JrYXJvdW5kcywKKyAgICAgICAgICAgICAgICAgIGdsOjpDYXBzICpjYXBzLAorICAgICAg
ICAgICAgICAgICAgZ2w6OlRleHR1cmVDYXBzTWFwICp0ZXh0dXJlQ2Fwc01hcCwKKyAgICAgICAg
ICAgICAgICAgIGdsOjpFeHRlbnNpb25zICpleHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAg
Z2w6OlZlcnNpb24gKm1heFN1cHBvcnRlZEVTVmVyc2lvbikKIHsKICAgICAvLyBUZXh0dXJlIGZv
cm1hdCBzdXBwb3J0IGNoZWNrcwogICAgIGNvbnN0IGdsOjpGb3JtYXRTZXQgJmFsbEZvcm1hdHMg
PSBnbDo6R2V0QWxsU2l6ZWRJbnRlcm5hbEZvcm1hdHMoKTsKQEAgLTU0NywxNiArNTUzLDExIEBA
IHZvaWQgR2VuZXJhdGVDYXBzKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIGdsOjpDYXBz
ICpjYXBzLCBnbDo6VGV4dHVyZUNhcHNNCiAgICAgICAgIExpbWl0VmVyc2lvbihtYXhTdXBwb3J0
ZWRFU1ZlcnNpb24sIGdsOjpWZXJzaW9uKDIsIDApKTsKICAgICB9CiAKLSAgICAvLyBDaGVjayBp
ZiBpbmRleCBjb25zdGFudCBzYW1wbGVyIGFycmF5IGluZGV4aW5nIGlzIHN1cHBvcnRlZAotICAg
IGlmICghZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbig0LCAwKSkgJiYKLSAgICAg
ICAgIWZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigyLCAwKSkgJiYKLSAgICAg
ICAgIWZ1bmN0aW9ucy0+aGFzRXh0ZW5zaW9uKCJHTF9BUkJfZ3B1X3NoYWRlcjUiKSkKLSAgICB7
Ci0gICAgICAgIC8vIFRoaXMgc2hvdWxkIGFsc28gYmUgcmVxdWlyZWQgZm9yIEVTMiBidXQgdGhl
cmUgYXJlIHNvbWUgZHJpdmVyIHN1cHBvcnQgaW5kZXggY29uc3RhbnQKLSAgICAgICAgLy8gc2Ft
cGxlciBhcnJheSBpbmRleGluZyB3aXRob3V0IG1lZXRpbmcgdGhlIHJlcXVpcmVtZW50cyBhYm92
ZS4gRG9uJ3QgbGltaXQgdGhlaXIgRVMKLSAgICAgICAgLy8gdmVyc2lvbiBhcyBpdCB3b3VsZCBi
cmVhayBXZWJHTCBmb3Igc29tZSB1c2Vycy4KLSAgICAgICAgTGltaXRWZXJzaW9uKG1heFN1cHBv
cnRlZEVTVmVyc2lvbiwgZ2w6OlZlcnNpb24oMiwgMCkpOwotICAgIH0KKyAgICAvLyBOb24tY29u
c3RhbnQgc2FtcGxlciBhcnJheSBpbmRleGluZyBpcyByZXF1aXJlZCBmb3IgT3BlbkdMIEVTIDIg
YW5kIE9wZW5HTCBFUyBhZnRlciAzLjIuCisgICAgLy8gSG93ZXZlciBoYXZpbmcgaXQgYXZhaWxh
YmxlIG9uIE9wZW5HTCBFUyAyIGlzIGEgc3BlY2lmaWNhdGlvbiBidWcsIGFuZCB1c2luZyB0aGlz
CisgICAgLy8gaW5kZXhpbmcgaW4gV2ViR0wgaXMgdW5kZWZpbmVkLiBSZXF1aXJpbmcgdGhpcyBm
ZWF0dXJlIHdvdWxkIGJyZWFrIFdlYkdMIDEgZm9yIHNvbWUgdXNlcnMKKyAgICAvLyBzbyB3ZSBk
b24ndCBjaGVjayBmb3IgaXQuIChpdCBpcyBwcmVzZW50IHdpdGggRVNTTCAxMDAsIEVTU0wgPj0g
MzIwLCBHTFNMID49IDQwMCBhbmQKKyAgICAvLyBHTF9BUkJfZ3B1X3NoYWRlcjUpCiAKICAgICAv
LyBDaGVjayBpZiBzYW1wbGVyIG9iamVjdHMgYXJlIHN1cHBvcnRlZAogICAgIGlmICghZnVuY3Rp
b25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbigzLCAzKSkgJiYKQEAgLTYzNCw3ICs2MzUsMTgg
QEAgdm9pZCBHZW5lcmF0ZUNhcHMoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgZ2w6OkNh
cHMgKmNhcHMsIGdsOjpUZXh0dXJlQ2Fwc00KICAgICAgICAgY2Fwcy0+bWF4VmVydGV4QXR0cmli
UmVsYXRpdmVPZmZzZXQgPQogICAgICAgICAgICAgUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMs
IEdMX01BWF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVCk7CiAgICAgICAgIGNhcHMtPm1h
eFZlcnRleEF0dHJpYkJpbmRpbmdzID0gUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01B
WF9WRVJURVhfQVRUUklCX0JJTkRJTkdTKTsKLSAgICAgICAgY2Fwcy0+bWF4VmVydGV4QXR0cmli
U3RyaWRlICAgPSBRdWVyeVNpbmdsZUdMSW50KGZ1bmN0aW9ucywgR0xfTUFYX1ZFUlRFWF9BVFRS
SUJfU1RSSURFKTsKKworICAgICAgICAvLyBPcGVuR0wgNC4zIGhhcyBubyBsaW1pdCBvbiBtYXhp
bXVtIHZhbHVlIG9mIHN0cmlkZS4KKyAgICAgICAgLy8gW09wZW5HTCA0LjMgKENvcmUgUHJvZmls
ZSkgLSBGZWJydWFyeSAxNCwgMjAxM10gQ2hhcHRlciAxMC4zLjEgUGFnZSAyOTgKKyAgICAgICAg
aWYgKHdvcmthcm91bmRzLmVtdWxhdGVNYXhWZXJ0ZXhBdHRyaWJTdHJpZGUgfHwKKyAgICAgICAg
ICAgIChmdW5jdGlvbnMtPnN0YW5kYXJkID09IFNUQU5EQVJEX0dMX0RFU0tUT1AgJiYgZnVuY3Rp
b25zLT52ZXJzaW9uID09IGdsOjpWZXJzaW9uKDQsIDMpKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgY2Fwcy0+bWF4VmVydGV4QXR0cmliU3RyaWRlID0gMjA0ODsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhcHMtPm1heFZlcnRleEF0dHJpYlN0cmlk
ZSA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9NQVhfVkVSVEVYX0FUVFJJQl9TVFJJ
REUpOworICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC02NjQsOCArNjc2LDEy
IEBAIHZvaWQgR2VuZXJhdGVDYXBzKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIGdsOjpD
YXBzICpjYXBzLCBnbDo6VGV4dHVyZUNhcHNNCiAgICAgICAgIExpbWl0VmVyc2lvbihtYXhTdXBw
b3J0ZWRFU1ZlcnNpb24sIGdsOjpWZXJzaW9uKDMsIDApKTsKICAgICB9CiAKKyAgICAvLyBPcGVu
R0wgNC4yIGlzIHJlcXVpcmVkIGZvciBHTF9BUkJfY29tcHV0ZV9zaGFkZXIsIHNvbWUgcGxhdGZv
cm0gZHJpdmVycyBoYXZlIHRoZSBleHRlbnNpb24sCisgICAgLy8gYnV0IHRoZWlyIG1heGltdW0g
c3VwcG9ydGVkIEdMIHZlcnNpb25zIGFyZSBsZXNzIHRoYW4gNC4yLiBFeHBsaWNpdGx5IGxpbWl0
IHRoZSBtaW5pbXVtCisgICAgLy8gR0wgdmVyc2lvbiB0byA0LjIuCiAgICAgaWYgKGZ1bmN0aW9u
cy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oNCwgMykpIHx8IGZ1bmN0aW9ucy0+aXNBdExlYXN0
R0xFUyhnbDo6VmVyc2lvbigzLCAxKSkgfHwKLSAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEV4dGVu
c2lvbigiR0xfQVJCX2NvbXB1dGVfc2hhZGVyIikpCisgICAgICAgIChmdW5jdGlvbnMtPmlzQXRM
ZWFzdEdMKGdsOjpWZXJzaW9uKDQsIDIpKSAmJgorICAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEV4
dGVuc2lvbigiR0xfQVJCX2NvbXB1dGVfc2hhZGVyIikpKQogICAgIHsKICAgICAgICAgZm9yIChH
THVpbnQgaW5kZXggPSAwdTsgaW5kZXggPCAzdTsgKytpbmRleCkKICAgICAgICAgewpAQCAtNzg3
LDIwICs4MDMsMTkgQEAgdm9pZCBHZW5lcmF0ZUNhcHMoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0
aW9ucywgZ2w6OkNhcHMgKmNhcHMsIGdsOjpUZXh0dXJlQ2Fwc00KICAgICBleHRlbnNpb25zLT5y
ZWFkRm9ybWF0QkdSQSA9IGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oMSwgMikp
IHx8IGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0VYVF9iZ3JhIikgfHwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xf
RVhUX3JlYWRfZm9ybWF0X2JncmEiKTsKICAgICBleHRlbnNpb25zLT5tYXBCdWZmZXIgPSBmdW5j
dGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDEsIDUpKSB8fAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigzLCAwKSkg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNp
b24oIkdMX09FU19tYXBidWZmZXIiKTsKICAgICBleHRlbnNpb25zLT5tYXBCdWZmZXJSYW5nZSA9
IGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oMywgMCkpIHx8IGZ1bmN0aW9ucy0+
aGFzR0xFeHRlbnNpb24oIkdMX0FSQl9tYXBfYnVmZmVyX3JhbmdlIikgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lv
bigzLCAwKSkgfHwgZnVuY3Rpb25zLT5oYXNHTEVTRXh0ZW5zaW9uKCJHTF9FWFRfbWFwX2J1ZmZl
cl9yYW5nZSIpOwogICAgIGV4dGVuc2lvbnMtPnRleHR1cmVOUE9UID0gZnVuY3Rpb25zLT5zdGFu
ZGFyZCA9PSBTVEFOREFSRF9HTF9ERVNLVE9QIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywgMCkpIHx8IGZ1bmN0
aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfT0VTX3RleHR1cmVfbnBvdCIpOwotICAgIGV4dGVu
c2lvbnMtPmRyYXdCdWZmZXJzID0gZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbigy
LCAwKSkgfHwgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiQVJCX2RyYXdfYnVmZmVycyIpIHx8
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMo
Z2w6OlZlcnNpb24oMywgMCkpIHx8IGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfRVhU
X2RyYXdfYnVmZmVycyIpOworICAgIC8vIFRPRE8oam1hZGlsbCk6IEludmVzdGlnYXRlIGVtdWxh
dGluZyBFWFRfZHJhd19idWZmZXJzIG9uIEVTIDMuMCdzIGNvcmUgZnVuY3Rpb25hbGl0eS4KKyAg
ICBleHRlbnNpb25zLT5kcmF3QnVmZmVycyA9IGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZl
cnNpb24oMiwgMCkpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMt
Pmhhc0dMRXh0ZW5zaW9uKCJBUkJfZHJhd19idWZmZXJzIikgfHwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfRVhUX2RyYXdfYnVm
ZmVycyIpOwogICAgIGV4dGVuc2lvbnMtPnRleHR1cmVTdG9yYWdlID0gdHJ1ZTsKICAgICBleHRl
bnNpb25zLT50ZXh0dXJlRmlsdGVyQW5pc290cm9waWMgPSBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5z
aW9uKCJHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMiKSB8fCBmdW5jdGlvbnMtPmhh
c0dMRVNFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpOwotICAg
IGV4dGVuc2lvbnMtPm9jY2x1c2lvblF1ZXJ5Qm9vbGVhbiA9Ci0gICAgICAgIGZ1bmN0aW9ucy0+
aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oMSwgNSkpIHx8Ci0gICAgICAgIGZ1bmN0aW9ucy0+aGFz
R0xFeHRlbnNpb24oIkdMX0FSQl9vY2NsdXNpb25fcXVlcnkyIikgfHwKLSAgICAgICAgZnVuY3Rp
b25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDApKSB8fAotICAgICAgICBmdW5jdGlv
bnMtPmhhc0dMRVNFeHRlbnNpb24oIkdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiIpOwor
ICAgIGV4dGVuc2lvbnMtPm9jY2x1c2lvblF1ZXJ5Qm9vbGVhbiAgICA9IG5hdGl2ZWdsOjpTdXBw
b3J0c09jY2x1c2lvblF1ZXJpZXMoZnVuY3Rpb25zKTsKICAgICBleHRlbnNpb25zLT5tYXhUZXh0
dXJlQW5pc290cm9weSA9IGV4dGVuc2lvbnMtPnRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyA/IFF1
ZXJ5U2luZ2xlR0xGbG9hdChmdW5jdGlvbnMsIEdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZ
X0VYVCkgOiAwLjBmOwogICAgIGV4dGVuc2lvbnMtPmZlbmNlID0gZnVuY3Rpb25zLT5oYXNHTEV4
dGVuc2lvbigiR0xfTlZfZmVuY2UiKSB8fCBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdM
X05WX2ZlbmNlIik7CiAgICAgZXh0ZW5zaW9ucy0+YmxlbmRNaW5NYXggPSBmdW5jdGlvbnMtPmlz
QXRMZWFzdEdMKGdsOjpWZXJzaW9uKDEsIDUpKSB8fCBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9u
KCJHTF9FWFRfYmxlbmRfbWlubWF4IikgfHwKQEAgLTg1OCw2ICs4NzMsOSBAQCB2b2lkIEdlbmVy
YXRlQ2Fwcyhjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBnbDo6Q2FwcyAqY2FwcywgZ2w6
OlRleHR1cmVDYXBzTQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmhh
c0dMRVNFeHRlbnNpb24oIkdMX0tIUl9yb2J1c3RuZXNzIikgfHwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEVTRXh0ZW5zaW9uKCJHTF9FWFRfcm9idXN0bmVz
cyIpOwogCisgICAgZXh0ZW5zaW9ucy0+Y29weVRleHR1cmUgPSB0cnVlOworICAgIGV4dGVuc2lv
bnMtPnN5bmNRdWVyeSAgID0gU3luY1F1ZXJ5R0w6OklzU3VwcG9ydGVkKGZ1bmN0aW9ucyk7CisK
ICAgICAvLyBOVl9wYXRoX3JlbmRlcmluZwogICAgIC8vIFdlIGFsc28gbmVlZCBpbnRlcmZhY2Ug
cXVlcnkgd2hpY2ggaXMgYXZhaWxhYmxlIGluCiAgICAgLy8gPj0gNC4zIGNvcmUgb3IgQVJCX2lu
dGVyZmFjZV9xdWVyeSBvciA+PSBHTEVTIDMuMQpAQCAtODcxLDU1ICs4ODksMTI5IEBAIHZvaWQg
R2VuZXJhdGVDYXBzKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIGdsOjpDYXBzICpjYXBz
LCBnbDo6VGV4dHVyZUNhcHNNCiAgICAgICAgIGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6
VmVyc2lvbigzLCAxKSk7CiAKICAgICBleHRlbnNpb25zLT5wYXRoUmVuZGVyaW5nID0gY2FuRW5h
YmxlR0xQYXRoUmVuZGVyaW5nIHx8IGNhbkVuYWJsZUVTUGF0aFJlbmRlcmluZzsKKworICAgIGV4
dGVuc2lvbnMtPnRleHR1cmVTUkdCRGVjb2RlID0gZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigi
R0xfRVhUX3RleHR1cmVfc1JHQl9kZWNvZGUiKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEVTRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9z
UkdCX2RlY29kZSIpOworCisjaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9BUFBMRSkKKyAgICBW
ZW5kb3JJRCB2ZW5kb3IgPSBHZXRWZW5kb3JJRChmdW5jdGlvbnMpOworICAgIGlmICgoSXNBTUQo
dmVuZG9yKSB8fCBJc0ludGVsKHZlbmRvcikpICYmICptYXhTdXBwb3J0ZWRFU1ZlcnNpb24gPj0g
Z2w6OlZlcnNpb24oMywgMCkpCisgICAgeworICAgICAgICAvLyBBcHBsZSBJbnRlbC9BTUQgZHJp
dmVycyBkbyBub3QgY29ycmVjdGx5IHVzZSB0aGUgVEVYVFVSRV9TUkdCX0RFQ09ERSBwcm9wZXJ0
eSBvZiBzYW1wbGVyCisgICAgICAgIC8vIHN0YXRlcy4gIERpc2FibGUgdGhpcyBleHRlbnNpb24g
d2hlbiB3ZSB3b3VsZCBhZHZlcnRpc2UgYW55IEVTIHZlcnNpb24gdGhhdCBoYXMgc2FtcGxlcnMu
CisgICAgICAgIGV4dGVuc2lvbnMtPnRleHR1cmVTUkdCRGVjb2RlID0gZmFsc2U7CisgICAgfQor
I2VuZGlmCisKKyAgICBleHRlbnNpb25zLT5zUkdCV3JpdGVDb250cm9sID0gZnVuY3Rpb25zLT5p
c0F0TGVhc3RHTChnbDo6VmVyc2lvbigzLCAwKSkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfRVhUX2ZyYW1lYnVmZmVy
X3NSR0IiKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMt
Pmhhc0dMRXh0ZW5zaW9uKCJHTF9BUkJfZnJhbWVidWZmZXJfc1JHQiIpIHx8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xf
RVhUX3NSR0Jfd3JpdGVfY29udHJvbCIpOworCisjaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9B
TkRST0lEKQorICAgIC8vIFNSR0IgYmxlbmRpbmcgZG9lcyBub3QgYXBwZWFyIHRvIHdvcmsgY29y
cmVjdGx5IG9uIHRoZSBOZXh1cyA1LiBXcml0aW5nIHRvIGFuIFNSR0IKKyAgICAvLyBmcmFtZWJ1
ZmZlciB3aXRoIEdMX0ZSQU1FQlVGRkVSX1NSR0IgZW5hYmxlZCBhbmQgdGhlbiByZWFkaW5nIGJh
Y2sgcmV0dXJucyB0aGUgc2FtZSB2YWx1ZS4KKyAgICAvLyBEaXNhYmxpbmcgR0xfRlJBTUVCVUZG
RVJfU1JHQiB3aWxsIHRoZW4gY29udmVydCBpbiB0aGUgd3JvbmcgZGlyZWN0aW9uLgorICAgIGV4
dGVuc2lvbnMtPnNSR0JXcml0ZUNvbnRyb2wgPSBmYWxzZTsKKyNlbmRpZgorCisgICAgLy8gRVhU
X2Rpc2NhcmRfZnJhbWVidWZmZXIgY2FuIGJlIGltcGxlbWVudGVkIGFzIGxvbmcgYXMgZ2xEaXNj
YXJkRnJhbWVidWZmZXJFWFQgb3IKKyAgICAvLyBnbEludmFsaWRhdGVGcmFtZWJ1ZmZlciBpcyBh
dmFpbGFibGUKKyAgICBleHRlbnNpb25zLT5kaXNjYXJkRnJhbWVidWZmZXIgPSBmdW5jdGlvbnMt
PmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDQsIDMpKSB8fAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0FSQl9pbnZhbGlk
YXRlX3N1YmRhdGEiKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1
bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigzLCAwKSkgfHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdM
X0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyIikgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdMX0FSQl9pbnZhbGlkYXRl
X3N1YmRhdGEiKTsKKworICAgIGV4dGVuc2lvbnMtPnRyYW5zbGF0ZWRTaGFkZXJTb3VyY2UgPSB0
cnVlOwogfQogCiB2b2lkIEdlbmVyYXRlV29ya2Fyb3VuZHMoY29uc3QgRnVuY3Rpb25zR0wgKmZ1
bmN0aW9ucywgV29ya2Fyb3VuZHNHTCAqd29ya2Fyb3VuZHMpCiB7CiAgICAgVmVuZG9ySUQgdmVu
ZG9yID0gR2V0VmVuZG9ySUQoZnVuY3Rpb25zKTsKIAorICAgIHdvcmthcm91bmRzLT5kb250UmVt
b3ZlSW52YXJpYW50Rm9yRnJhZ21lbnRJbnB1dCA9CisgICAgICAgIGZ1bmN0aW9ucy0+c3RhbmRh
cmQgPT0gU1RBTkRBUkRfR0xfREVTS1RPUCAmJiBJc0FNRCh2ZW5kb3IpOworCiAgICAgLy8gRG9u
J3QgdXNlIDEtYml0IGFscGhhIGZvcm1hdHMgb24gZGVza3RvcCBHTCB3aXRoIEFNRCBvciBJbnRl
bCBkcml2ZXJzLgogICAgIHdvcmthcm91bmRzLT5hdm9pZDFCaXRBbHBoYVRleHR1cmVGb3JtYXRz
ID0KLSAgICAgICAgZnVuY3Rpb25zLT5zdGFuZGFyZCA9PSBTVEFOREFSRF9HTF9ERVNLVE9QICYm
Ci0gICAgICAgICh2ZW5kb3IgPT0gVkVORE9SX0lEX0FNRCB8fCB2ZW5kb3IgPT0gVkVORE9SX0lE
X0lOVEVMKTsKKyAgICAgICAgZnVuY3Rpb25zLT5zdGFuZGFyZCA9PSBTVEFOREFSRF9HTF9ERVNL
VE9QICYmIChJc0FNRCh2ZW5kb3IpIHx8IElzSW50ZWwodmVuZG9yKSk7CiAKICAgICB3b3JrYXJv
dW5kcy0+cmdiYTRJc05vdFN1cHBvcnRlZEZvckNvbG9yUmVuZGVyaW5nID0KLSAgICAgICAgZnVu
Y3Rpb25zLT5zdGFuZGFyZCA9PSBTVEFOREFSRF9HTF9ERVNLVE9QICYmIHZlbmRvciA9PSBWRU5E
T1JfSURfSU5URUw7CisgICAgICAgIGZ1bmN0aW9ucy0+c3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xf
REVTS1RPUCAmJiBJc0ludGVsKHZlbmRvcik7CiAKLSAgICB3b3JrYXJvdW5kcy0+ZW11bGF0ZUFi
c0ludEZ1bmN0aW9uID0gdmVuZG9yID09IFZFTkRPUl9JRF9JTlRFTDsKKyAgICB3b3JrYXJvdW5k
cy0+ZW11bGF0ZUFic0ludEZ1bmN0aW9uID0gSXNJbnRlbCh2ZW5kb3IpOwogCi0gICAgd29ya2Fy
b3VuZHMtPmFkZEFuZFRydWVUb0xvb3BDb25kaXRpb24gPSB2ZW5kb3IgPT0gVkVORE9SX0lEX0lO
VEVMOworICAgIHdvcmthcm91bmRzLT5hZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uID0gSXNJbnRl
bCh2ZW5kb3IpOwogCi0gICAgd29ya2Fyb3VuZHMtPmVtdWxhdGVJc25hbkZsb2F0ID0gdmVuZG9y
ID09IFZFTkRPUl9JRF9JTlRFTDsKKyAgICB3b3JrYXJvdW5kcy0+ZW11bGF0ZUlzbmFuRmxvYXQg
PSBJc0ludGVsKHZlbmRvcik7CiAKICAgICB3b3JrYXJvdW5kcy0+ZG9lc1NSR0JDbGVhcnNPbkxp
bmVhckZyYW1lYnVmZmVyQXR0YWNobWVudHMgPQotICAgICAgICBmdW5jdGlvbnMtPnN0YW5kYXJk
ID09IFNUQU5EQVJEX0dMX0RFU0tUT1AgJiYKLSAgICAgICAgKHZlbmRvciA9PSBWRU5ET1JfSURf
SU5URUwgfHwgdmVuZG9yID09IFZFTkRPUl9JRF9BTUQpOworICAgICAgICBmdW5jdGlvbnMtPnN0
YW5kYXJkID09IFNUQU5EQVJEX0dMX0RFU0tUT1AgJiYgKElzSW50ZWwodmVuZG9yKSB8fCBJc0FN
RCh2ZW5kb3IpKTsKKworI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fTElOVVgpCisgICAgd29y
a2Fyb3VuZHMtPmVtdWxhdGVNYXhWZXJ0ZXhBdHRyaWJTdHJpZGUgPQorICAgICAgICBmdW5jdGlv
bnMtPnN0YW5kYXJkID09IFNUQU5EQVJEX0dMX0RFU0tUT1AgJiYgSXNBTUQodmVuZG9yKTsKKyNl
bmRpZgogCiAjaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9BUFBMRSkKICAgICB3b3JrYXJvdW5k
cy0+ZG9XaGlsZUdMU0xDYXVzZXNHUFVIYW5nID0gdHJ1ZTsKICAgICB3b3JrYXJvdW5kcy0+dXNl
VW51c2VkQmxvY2tzV2l0aFN0YW5kYXJkT3JTaGFyZWRMYXlvdXQgPSB0cnVlOworICAgIHdvcmth
cm91bmRzLT5yZXdyaXRlRmxvYXRVbmFyeU1pbnVzT3BlcmF0b3IgICAgICAgICAgICA9IElzSW50
ZWwodmVuZG9yKTsKICNlbmRpZgogCiAgICAgd29ya2Fyb3VuZHMtPmZpbmlzaERvZXNOb3RDYXVz
ZVF1ZXJpZXNUb0JlQXZhaWxhYmxlID0KLSAgICAgICAgZnVuY3Rpb25zLT5zdGFuZGFyZCA9PSBT
VEFOREFSRF9HTF9ERVNLVE9QICYmIHZlbmRvciA9PSBWRU5ET1JfSURfTlZJRElBOworICAgICAg
ICBmdW5jdGlvbnMtPnN0YW5kYXJkID09IFNUQU5EQVJEX0dMX0RFU0tUT1AgJiYgSXNOdmlkaWEo
dmVuZG9yKTsKIAogICAgIC8vIFRPRE8oY3dhbGxleik6IERpc2FibGUgdGhpcyB3b3JrYXJvdW5k
IGZvciBNYWNPU1ggdmVyc2lvbnMgMTAuOSBvciBsYXRlci4KICAgICB3b3JrYXJvdW5kcy0+YWx3
YXlzQ2FsbFVzZVByb2dyYW1BZnRlckxpbmsgPSB0cnVlOwogCi0gICAgd29ya2Fyb3VuZHMtPnVu
cGFja092ZXJsYXBwaW5nUm93c1NlcGFyYXRlbHlVbnBhY2tCdWZmZXIgPSB2ZW5kb3IgPT0gVkVO
RE9SX0lEX05WSURJQTsKLSAgICB3b3JrYXJvdW5kcy0+cGFja092ZXJsYXBwaW5nUm93c1NlcGFy
YXRlbHlQYWNrQnVmZmVyICAgICA9IHZlbmRvciA9PSBWRU5ET1JfSURfTlZJRElBOworICAgIHdv
cmthcm91bmRzLT51bnBhY2tPdmVybGFwcGluZ1Jvd3NTZXBhcmF0ZWx5VW5wYWNrQnVmZmVyID0g
SXNOdmlkaWEodmVuZG9yKTsKKyAgICB3b3JrYXJvdW5kcy0+cGFja092ZXJsYXBwaW5nUm93c1Nl
cGFyYXRlbHlQYWNrQnVmZmVyICAgICA9IElzTnZpZGlhKHZlbmRvcik7CiAKLSAgICB3b3JrYXJv
dW5kcy0+aW5pdGlhbGl6ZUN1cnJlbnRWZXJ0ZXhBdHRyaWJ1dGVzID0gdmVuZG9yID09IFZFTkRP
Ul9JRF9OVklESUE7CisgICAgd29ya2Fyb3VuZHMtPmluaXRpYWxpemVDdXJyZW50VmVydGV4QXR0
cmlidXRlcyA9IElzTnZpZGlhKHZlbmRvcik7CiAKICNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JN
X0FQUExFKQogICAgIHdvcmthcm91bmRzLT51bnBhY2tMYXN0Um93U2VwYXJhdGVseUZvclBhZGRp
bmdJbmNsdXNpb24gPSB0cnVlOwogICAgIHdvcmthcm91bmRzLT5wYWNrTGFzdFJvd1NlcGFyYXRl
bHlGb3JQYWRkaW5nSW5jbHVzaW9uICAgPSB0cnVlOwogI2Vsc2UKLSAgICB3b3JrYXJvdW5kcy0+
dW5wYWNrTGFzdFJvd1NlcGFyYXRlbHlGb3JQYWRkaW5nSW5jbHVzaW9uID0gdmVuZG9yID09IFZF
TkRPUl9JRF9OVklESUE7Ci0gICAgd29ya2Fyb3VuZHMtPnBhY2tMYXN0Um93U2VwYXJhdGVseUZv
clBhZGRpbmdJbmNsdXNpb24gICA9IHZlbmRvciA9PSBWRU5ET1JfSURfTlZJRElBOworICAgIHdv
cmthcm91bmRzLT51bnBhY2tMYXN0Um93U2VwYXJhdGVseUZvclBhZGRpbmdJbmNsdXNpb24gPSBJ
c052aWRpYSh2ZW5kb3IpOworICAgIHdvcmthcm91bmRzLT5wYWNrTGFzdFJvd1NlcGFyYXRlbHlG
b3JQYWRkaW5nSW5jbHVzaW9uICAgPSBJc052aWRpYSh2ZW5kb3IpOworI2VuZGlmCisKKyAgICB3
b3JrYXJvdW5kcy0+cmVtb3ZlSW52YXJpYW50QW5kQ2VudHJvaWRGb3JFU1NMMyA9CisgICAgICAg
IGZ1bmN0aW9ucy0+aXNBdE1vc3RHTChnbDo6VmVyc2lvbig0LCAxKSkgfHwKKyAgICAgICAgKGZ1
bmN0aW9ucy0+c3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfREVTS1RPUCAmJiBJc0FNRCh2ZW5kb3Ip
KTsKKworICAgIC8vIFRPRE8ob2V0dWFobyk6IE1ha2UgdGhpcyBzcGVjaWZpYyB0byB0aGUgYWZm
ZWN0ZWQgZHJpdmVyIHZlcnNpb25zLiBWZXJzaW9ucyB0aGF0IGNhbWUgYWZ0ZXIKKyAgICAvLyAz
NjQgYXJlIGtub3duIHRvIGJlIGFmZmVjdGVkLCBhdCBsZWFzdCB1cCB0byAzNzUuCisgICAgd29y
a2Fyb3VuZHMtPmVtdWxhdGVBdGFuMkZsb2F0ID0gSXNOdmlkaWEodmVuZG9yKTsKKworICAgIHdv
cmthcm91bmRzLT5yZWFwcGx5VUJPQmluZGluZ3NBZnRlckxvYWRpbmdCaW5hcnlQcm9ncmFtID0g
SXNBTUQodmVuZG9yKTsKKworI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQU5EUk9JRCkKKyAg
ICAvLyBUT0RPKGptYWRpbGwpOiBOYXJyb3cgd29ya2Fyb3VuZCByYW5nZSBmb3Igc3BlY2lmaWMg
ZGV2aWNlcy4KKyAgICB3b3JrYXJvdW5kcy0+cmVhcHBseVVCT0JpbmRpbmdzQWZ0ZXJMb2FkaW5n
QmluYXJ5UHJvZ3JhbSA9IHRydWU7CiAjZW5kaWYKIH0KIAorfSAgLy8gbmFtZXNwYWNlIG5hdGl2
ZWdsX2dsCisKK25hbWVzcGFjZSBuYXRpdmVnbAoreworYm9vbCBTdXBwb3J0c0ZlbmNlU3luYyhj
b25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zKQoreworICAgIHJldHVybiBmdW5jdGlvbnMtPmlz
QXRMZWFzdEdMKGdsOjpWZXJzaW9uKDMsIDIpKSB8fCBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9u
KCJHTF9BUkJfc3luYyIpIHx8CisgICAgICAgICAgIGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhn
bDo6VmVyc2lvbigzLCAwKSk7Cit9CisKK2Jvb2wgU3VwcG9ydHNPY2NsdXNpb25RdWVyaWVzKGNv
bnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMpCit7CisgICAgcmV0dXJuIGZ1bmN0aW9ucy0+aXNB
dExlYXN0R0woZ2w6OlZlcnNpb24oMSwgNSkpIHx8CisgICAgICAgICAgIGZ1bmN0aW9ucy0+aGFz
R0xFeHRlbnNpb24oIkdMX0FSQl9vY2NsdXNpb25fcXVlcnkyIikgfHwKKyAgICAgICAgICAgZnVu
Y3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDApKSB8fAorICAgICAgICAgICBm
dW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVh
biIpOworfQogfQogCiBib29sIENhbk1hcEJ1ZmZlckZvclJlYWQoY29uc3QgRnVuY3Rpb25zR0wg
KmZ1bmN0aW9ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvcmVuZGVyZXJnbF91dGlscy5oCmluZGV4IGJk
NWE0MjVkMDliNWJlZjlhZjQ1ZTRhYmFhNjgwMjMxNzYxODMxODEuLjk4NzE2ZGI5ODA1YThlZmE1
MGRlNjIwYzY1OTI2YTE3NGNkNTE1MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xf
dXRpbHMuaApAQCAtMTIsNiArMTIsNyBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0eXBl
cy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZHJpdmVyX3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZnVu
Y3Rpb25zZ2xfdHlwZWRlZnMuaCIKIAogI2luY2x1ZGUgPHN0cmluZz4KQEAgLTM2LDEyICszNywy
MiBAQCBzdGQ6OnN0cmluZyBHZXREcml2ZXJWZXJzaW9uKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5j
dGlvbnMpOwogbmFtZXNwYWNlIG5hdGl2ZWdsX2dsCiB7CiAKLXZvaWQgR2VuZXJhdGVDYXBzKGNv
bnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIGdsOjpDYXBzICpjYXBzLCBnbDo6VGV4dHVyZUNh
cHNNYXAgKnRleHR1cmVDYXBzTWFwLAotICAgICAgICAgICAgICAgICAgZ2w6OkV4dGVuc2lvbnMg
KmV4dGVuc2lvbnMsIGdsOjpWZXJzaW9uICptYXhTdXBwb3J0ZWRFU1ZlcnNpb24pOwordm9pZCBH
ZW5lcmF0ZUNhcHMoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKKyAgICAgICAgICAgICAg
ICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJndvcmthcm91bmRzLAorICAgICAgICAgICAgICAgICAg
Z2w6OkNhcHMgKmNhcHMsCisgICAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZUNhcHNNYXAgKnRl
eHR1cmVDYXBzTWFwLAorICAgICAgICAgICAgICAgICAgZ2w6OkV4dGVuc2lvbnMgKmV4dGVuc2lv
bnMsCisgICAgICAgICAgICAgICAgICBnbDo6VmVyc2lvbiAqbWF4U3VwcG9ydGVkRVNWZXJzaW9u
KTsKIAogdm9pZCBHZW5lcmF0ZVdvcmthcm91bmRzKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlv
bnMsIFdvcmthcm91bmRzR0wgKndvcmthcm91bmRzKTsKIH0KIAorbmFtZXNwYWNlIG5hdGl2ZWds
Cit7Citib29sIFN1cHBvcnRzRmVuY2VTeW5jKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMp
OworYm9vbCBTdXBwb3J0c09jY2x1c2lvblF1ZXJpZXMoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0
aW9ucyk7Cit9CisKIGJvb2wgQ2FuTWFwQnVmZmVyRm9yUmVhZChjb25zdCBGdW5jdGlvbnNHTCAq
ZnVuY3Rpb25zKTsKIHVpbnQ4X3QgKk1hcEJ1ZmZlclJhbmdlV2l0aEZhbGxiYWNrKGNvbnN0IEZ1
bmN0aW9uc0dMICpmdW5jdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EM0RUZXh0dXJlU3VyZmFjZVdHTC5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0QzRFRleHR1
cmVTdXJmYWNlV0dMLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjBmOTgxODI3M2UyNDM2NGE1MzJjOWUyZGMz
Y2U5NTBhZjk4ODA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EM0RUZXh0dXJlU3VyZmFjZVdHTC5jcHAKQEAg
LTAsMCArMSw0ODIgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBEM0RUZXh0dXJlU3VyZmFjZVdHTC5j
cHA6IFdHTCBpbXBsZW1lbnRhdGlvbiBvZiBlZ2w6OlN1cmZhY2UgZm9yIEQzRCB0ZXh0dXJlIGlu
dGVyb3AuCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRDNEVGV4dHVyZVN1
cmZhY2VXR0wuaCIKKworI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvVGV4dHVyZUdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wv
UmVuZGVyZXJHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdl
ckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Rpc3BsYXlXR0wuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRnVuY3Rpb25zV0dMLmgiCisKK25h
bWVzcGFjZSByeAoreworCituYW1lc3BhY2UKK3sKKworZWdsOjpFcnJvciBHZXREM0QxMVRleHR1
cmVJbmZvKEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
RDNEMTFUZXh0dXJlMkQgKnRleHR1cmUxMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgKndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAq
aGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElVbmtub3duICoqb2JqZWN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElVbmtub3duICoqZGV2aWNlKQorewor
ICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleHR1cmVEZXNjOworICAgIHRleHR1cmUxMS0+R2V0
RGVzYygmdGV4dHVyZURlc2MpOworCisgICAgaWYgKGJ1ZnR5cGUgPT0gRUdMX0QzRF9URVhUVVJF
X0FOR0xFKQorICAgIHsKKyAgICAgICAgLy8gRnJvbSB0YWJsZSBlZ2wucmVzdHJpY3Rpb25zIGlu
IEVHTF9BTkdMRV9kM2RfdGV4dHVyZV9jbGllbnRfYnVmZmVyLgorICAgICAgICBzd2l0Y2ggKHRl
eHR1cmVEZXNjLkZvcm1hdCkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9VTk9STToKKyAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjhHOEI4QThf
VU5PUk1fU1JHQjoKKyAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk06
CisgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNX1NSR0I6CisgICAg
ICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDoKKyAgICAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOgorICAgICAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFNhZmVSZWxlYXNl
KHRleHR1cmUxMSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9Q
QVJBTUVURVIsICJVbmtub3duIGNsaWVudCBidWZmZXIgdGV4dHVyZSBmb3JtYXQ6ICV1LiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZURlc2MuRm9ybWF0KTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIElEM0QxMURldmljZSAqZDNkMTFEZXZpY2UgPSBudWxscHRy
OworICAgIHRleHR1cmUxMS0+R2V0RGV2aWNlKCZkM2QxMURldmljZSk7CisgICAgaWYgKGQzZDEx
RGV2aWNlID09IG51bGxwdHIpCisgICAgeworICAgICAgICBTYWZlUmVsZWFzZSh0ZXh0dXJlMTEp
OworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBxdWVyeSB0aGUgRDNEMTEgZGV2aWNlIGZyb20g
dGhlIGNsaWVudCBidWZmZXIuIik7CisgICAgfQorCisgICAgaWYgKHdpZHRoKQorICAgIHsKKyAg
ICAgICAgKndpZHRoID0gdGV4dHVyZURlc2MuV2lkdGg7CisgICAgfQorICAgIGlmIChoZWlnaHQp
CisgICAgeworICAgICAgICAqaGVpZ2h0ID0gdGV4dHVyZURlc2MuSGVpZ2h0OworICAgIH0KKwor
ICAgIGlmIChkZXZpY2UpCisgICAgeworICAgICAgICAqZGV2aWNlID0gZDNkMTFEZXZpY2U7Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIFNhZmVSZWxlYXNlKGQzZDExRGV2aWNlKTsK
KyAgICB9CisKKyAgICBpZiAob2JqZWN0KQorICAgIHsKKyAgICAgICAgKm9iamVjdCA9IHRleHR1
cmUxMTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgU2FmZVJlbGVhc2UodGV4dHVy
ZTExKTsKKyAgICB9CisKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisK
K2VnbDo6RXJyb3IgR2V0RDNEOVRleHR1cmVJbmZvKEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIElEaXJlY3QzRFRleHR1cmU5ICp0ZXh0dXJlOSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqd2lkdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgKmhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIElVbmtub3duICoqb2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVVu
a25vd24gKipkZXZpY2UpCit7CisgICAgRDNEU1VSRkFDRV9ERVNDIHN1cmZhY2VEZXNjOworICAg
IGlmIChGQUlMRUQodGV4dHVyZTktPkdldExldmVsRGVzYygwLCAmc3VyZmFjZURlc2MpKSkKKyAg
ICB7CisgICAgICAgIFNhZmVSZWxlYXNlKHRleHR1cmU5KTsKKyAgICAgICAgcmV0dXJuIGVnbDo6
RXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJDb3VsZCBub3QgcXVlcnkgZGVzY3JpcHRpb24gb2Yg
dGhlIEQzRDkgc3VyZmFjZS4iKTsKKyAgICB9CisKKyAgICBpZiAoYnVmdHlwZSA9PSBFR0xfRDNE
X1RFWFRVUkVfQU5HTEUpCisgICAgeworICAgICAgICAvLyBGcm9tIHRhYmxlIGVnbC5yZXN0cmlj
dGlvbnMgaW4gRUdMX0FOR0xFX2QzZF90ZXh0dXJlX2NsaWVudF9idWZmZXIuCisgICAgICAgIHN3
aXRjaCAoc3VyZmFjZURlc2MuRm9ybWF0KQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEQz
REZNVF9SOEc4Qjg6CisgICAgICAgICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKKyAgICAgICAg
ICAgIGNhc2UgRDNERk1UX0ExNkIxNkcxNlIxNkY6CisgICAgICAgICAgICBjYXNlIEQzREZNVF9B
MzJCMzJHMzJSMzJGOgorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIFNhZmVSZWxlYXNlKHRleHR1cmU5KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgIlVua25vd24gY2xpZW50
IGJ1ZmZlciB0ZXh0dXJlIGZvcm1hdDogJXUuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdXJmYWNlRGVzYy5Gb3JtYXQpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KHdpZHRoKQorICAgIHsKKyAgICAgICAgKndpZHRoID0gc3VyZmFjZURlc2MuV2lkdGg7CisgICAg
fQorICAgIGlmIChoZWlnaHQpCisgICAgeworICAgICAgICAqaGVpZ2h0ID0gc3VyZmFjZURlc2Mu
SGVpZ2h0OworICAgIH0KKworICAgIElEaXJlY3QzRERldmljZTkgKmQzZDlEZXZpY2UgPSBudWxs
cHRyOworICAgIEhSRVNVTFQgcmVzdWx0ICAgICAgICAgICAgICAgPSB0ZXh0dXJlOS0+R2V0RGV2
aWNlKCZkM2Q5RGV2aWNlKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgeworICAgICAg
ICBTYWZlUmVsZWFzZSh0ZXh0dXJlOSk7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9C
QURfUEFSQU1FVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IHF1ZXJ5
IHRoZSBEM0Q5IGRldmljZSBmcm9tIHRoZSBjbGllbnQgYnVmZmVyLiIpOworICAgIH0KKworICAg
IGlmIChkZXZpY2UpCisgICAgeworICAgICAgICAqZGV2aWNlID0gZDNkOURldmljZTsKKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgU2FmZVJlbGVhc2UoZDNkOURldmljZSk7CisgICAg
fQorCisgICAgaWYgKG9iamVjdCkKKyAgICB7CisgICAgICAgICpvYmplY3QgPSB0ZXh0dXJlOTsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgU2FmZVJlbGVhc2UodGV4dHVyZTkpOwor
ICAgIH0KKworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworZWdsOjpF
cnJvciBHZXREM0RUZXh0dXJlSW5mbyhFR0xlbnVtIGJ1ZnR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIElEM0QxMURldmljZSAqZDNkMTFEZXZpY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCAqd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCAqaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJVW5rbm93
biAqKm9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVVua25vd24gKipkZXZp
Y2UpCit7CisgICAgaWYgKGJ1ZnR5cGUgPT0gRUdMX0QzRF9URVhUVVJFX0FOR0xFKQorICAgIHsK
KyAgICAgICAgSVVua25vd24gKmJ1ZmZlciAgICAgICAgICAgID0gc3RhdGljX2Nhc3Q8SVVua25v
d24gKj4oY2xpZW50QnVmZmVyKTsKKyAgICAgICAgSUQzRDExVGV4dHVyZTJEICp0ZXh0dXJlMTEg
ID0gbnVsbHB0cjsKKyAgICAgICAgSURpcmVjdDNEVGV4dHVyZTkgKnRleHR1cmU5ID0gbnVsbHB0
cjsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChidWZmZXItPlF1ZXJ5SW50ZXJmYWNlPElEM0QxMVRl
eHR1cmUyRD4oJnRleHR1cmUxMSkpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gR2V0
RDNEMTFUZXh0dXJlSW5mbyhidWZ0eXBlLCB0ZXh0dXJlMTEsIHdpZHRoLCBoZWlnaHQsIG9iamVj
dCwgZGV2aWNlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChTVUNDRUVERUQoYnVmZmVy
LT5RdWVyeUludGVyZmFjZTxJRGlyZWN0M0RUZXh0dXJlOT4oJnRleHR1cmU5KSkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBHZXREM0Q5VGV4dHVyZUluZm8oYnVmdHlwZSwgdGV4dHVy
ZTksIHdpZHRoLCBoZWlnaHQsIG9iamVjdCwgZGV2aWNlKTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfUEFS
QU1FVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByb3ZpZGVkIGJ1ZmZlciBp
cyBub3QgYSBJRGlyZWN0M0RUZXh0dXJlOSBvciBJRDNEMTFUZXh0dXJlMkQuIik7CisgICAgICAg
IH0KKyAgICB9CisgICAgZWxzZSBpZiAoYnVmdHlwZSA9PSBFR0xfRDNEX1RFWFRVUkVfMkRfU0hB
UkVfSEFORExFX0FOR0xFKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGQzZDExRGV2aWNlKTsKKyAg
ICAgICAgSEFORExFIHNoYXJlSGFuZGxlICAgICAgICAgPSBzdGF0aWNfY2FzdDxIQU5ETEU+KGNs
aWVudEJ1ZmZlcik7CisgICAgICAgIElEM0QxMVRleHR1cmUyRCAqdGV4dHVyZTExID0gbnVsbHB0
cjsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkM2QxMURldmljZS0+T3BlblNoYXJlZFJlc291
cmNlKHNoYXJlSGFuZGxlLCBfX3V1aWRvZihJRDNEMTFUZXh0dXJlMkQpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkICoqPigmdGV4dHVyZTExKSk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9QQVJBTUVU
RVIsICJGYWlsZWQgdG8gb3BlbiBzaGFyZSBoYW5kbGUsIHJlc3VsdDogMHglWC4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBHZXREM0QxMVRleHR1cmVJbmZvKGJ1ZnR5cGUsIHRleHR1cmUxMSwgd2lkdGgsIGhlaWdo
dCwgb2JqZWN0LCBkZXZpY2UpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0RJU1BMQVksICJV
bmtub3duIGJ1ZnR5cGUgZm9yIEQzRFRleHR1cmVTdXJmYWNlV0dMLiIpOworICAgIH0KK30KKwor
fSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitEM0RUZXh0dXJlU3VyZmFjZVdHTDo6RDNEVGV4
dHVyZVN1cmZhY2VXR0woY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyR0wgKnJlbmRlcmVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gYnVmdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRC
dWZmZXIgY2xpZW50QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERpc3BsYXlXR0wgKmRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSEdMUkMgd2dsQ29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBIREMgZGV2aWNlQ29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFEZXZpY2UgKmRpc3BsYXlEM0QxMURldmlj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5j
dGlvbnNHTCAqZnVuY3Rpb25zR0wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgRnVuY3Rpb25zV0dMICpmdW5jdGlvbnNXR0wpCisgICAgOiBTdXJmYWNl
R0woc3RhdGUsIHJlbmRlcmVyKSwKKyAgICAgIG1CdWZ0eXBlKGJ1ZnR5cGUpLAorICAgICAgbUNs
aWVudEJ1ZmZlcihjbGllbnRCdWZmZXIpLAorICAgICAgbVJlbmRlcmVyKHJlbmRlcmVyKSwKKyAg
ICAgIG1EaXNwbGF5RDNEMTFEZXZpY2UoZGlzcGxheUQzRDExRGV2aWNlKSwKKyAgICAgIG1EaXNw
bGF5KGRpc3BsYXkpLAorICAgICAgbVN0YXRlTWFuYWdlcihyZW5kZXJlci0+Z2V0U3RhdGVNYW5h
Z2VyKCkpLAorICAgICAgbVdvcmthcm91bmRzKHJlbmRlcmVyLT5nZXRXb3JrYXJvdW5kcygpKSwK
KyAgICAgIG1GdW5jdGlvbnNHTChmdW5jdGlvbnNHTCksCisgICAgICBtRnVuY3Rpb25zV0dMKGZ1
bmN0aW9uc1dHTCksCisgICAgICBtV0dMQ29udGV4dCh3Z2xDb250ZXh0KSwKKyAgICAgIG1EZXZp
Y2VDb250ZXh0KGRldmljZUNvbnRleHQpLAorICAgICAgbVdpZHRoKDApLAorICAgICAgbUhlaWdo
dCgwKSwKKyAgICAgIG1EZXZpY2VIYW5kbGUobnVsbHB0ciksCisgICAgICBtT2JqZWN0KG51bGxw
dHIpLAorICAgICAgbUtleWVkTXV0ZXgobnVsbHB0ciksCisgICAgICBtQm91bmRPYmplY3RUZXh0
dXJlSGFuZGxlKG51bGxwdHIpLAorICAgICAgbUJvdW5kT2JqZWN0UmVuZGVyYnVmZmVySGFuZGxl
KG51bGxwdHIpLAorICAgICAgbUNvbG9yUmVuZGVyYnVmZmVySUQoMCksCisgICAgICBtRGVwdGhT
dGVuY2lsUmVuZGVyYnVmZmVySUQoMCksCisgICAgICBtRnJhbWVidWZmZXJJRCgwKQoreworfQor
CitEM0RUZXh0dXJlU3VyZmFjZVdHTDo6fkQzRFRleHR1cmVTdXJmYWNlV0dMKCkKK3sKKyAgICBB
U1NFUlQobUJvdW5kT2JqZWN0VGV4dHVyZUhhbmRsZSA9PSBudWxscHRyKTsKKworICAgIFNhZmVS
ZWxlYXNlKG1PYmplY3QpOworICAgIFNhZmVSZWxlYXNlKG1LZXllZE11dGV4KTsKKworICAgIGlm
IChtRGV2aWNlSGFuZGxlKQorICAgIHsKKyAgICAgICAgaWYgKG1Cb3VuZE9iamVjdFJlbmRlcmJ1
ZmZlckhhbmRsZSkKKyAgICAgICAgeworICAgICAgICAgICAgbUZ1bmN0aW9uc1dHTC0+ZHhVbnJl
Z2lzdGVyT2JqZWN0TlYobURldmljZUhhbmRsZSwgbUJvdW5kT2JqZWN0UmVuZGVyYnVmZmVySGFu
ZGxlKTsKKyAgICAgICAgICAgIG1Cb3VuZE9iamVjdFJlbmRlcmJ1ZmZlckhhbmRsZSA9IG51bGxw
dHI7CisgICAgICAgIH0KKyAgICAgICAgbVN0YXRlTWFuYWdlci0+ZGVsZXRlUmVuZGVyYnVmZmVy
KG1Db2xvclJlbmRlcmJ1ZmZlcklEKTsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+ZGVsZXRlUmVu
ZGVyYnVmZmVyKG1EZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXJJRCk7CisKKyAgICAgICAgaWYgKG1C
b3VuZE9iamVjdFRleHR1cmVIYW5kbGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1GdW5jdGlv
bnNXR0wtPmR4VW5yZWdpc3Rlck9iamVjdE5WKG1EZXZpY2VIYW5kbGUsIG1Cb3VuZE9iamVjdFRl
eHR1cmVIYW5kbGUpOworICAgICAgICAgICAgbUJvdW5kT2JqZWN0VGV4dHVyZUhhbmRsZSA9IG51
bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICAvLyBHTCBmcmFtZWJ1ZmZlciBpcyBkZWxldGVk
IGJ5IHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIG9iamVjdAorICAgICAgICBtRnJhbWVidWZmZXJJ
RCA9IDA7CisKKyAgICAgICAgbURpc3BsYXktPnJlbGVhc2VEM0REZXZpY2UobURldmljZUhhbmRs
ZSk7CisgICAgICAgIG1EZXZpY2VIYW5kbGUgPSBudWxscHRyOworICAgIH0KK30KKworZWdsOjpF
cnJvciBEM0RUZXh0dXJlU3VyZmFjZVdHTDo6VmFsaWRhdGVEM0RUZXh0dXJlQ2xpZW50QnVmZmVy
KEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIElEM0QxMURldmljZSAqZDNkMTFEZXZpY2UpCit7CisgICAgcmV0dXJuIEdldEQzRFRl
eHR1cmVJbmZvKGJ1ZnR5cGUsIGNsaWVudEJ1ZmZlciwgZDNkMTFEZXZpY2UsIG51bGxwdHIsIG51
bGxwdHIsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwor
fQorCitlZ2w6OkVycm9yIEQzRFRleHR1cmVTdXJmYWNlV0dMOjppbml0aWFsaXplKGNvbnN0IERp
c3BsYXlJbXBsICpkaXNwbGF5SW1wbCkKK3sKKyAgICBJVW5rbm93biAqZGV2aWNlID0gbnVsbHB0
cjsKKyAgICBBTkdMRV9UUlkoR2V0RDNEVGV4dHVyZUluZm8obUJ1ZnR5cGUsIG1DbGllbnRCdWZm
ZXIsIG1EaXNwbGF5RDNEMTFEZXZpY2UsICZtV2lkdGgsICZtSGVpZ2h0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmbU9iamVjdCwgJmRldmljZSkpOworCisgICAgLy8gR3JhYiB0
aGUga2V5ZWQgbXV0ZXgsIGlmIG9uZSBleGlzdHMKKyAgICBtT2JqZWN0LT5RdWVyeUludGVyZmFj
ZSgmbUtleWVkTXV0ZXgpOworCisgICAgQVNTRVJUKGRldmljZSAhPSBudWxscHRyKTsKKyAgICBl
Z2w6OkVycm9yIGVycm9yID0gbURpc3BsYXktPnJlZ2lzdGVyRDNERGV2aWNlKGRldmljZSwgJm1E
ZXZpY2VIYW5kbGUpOworICAgIFNhZmVSZWxlYXNlKGRldmljZSk7CisgICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9CisKKyAgICBtRnVu
Y3Rpb25zR0wtPmdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1Db2xvclJlbmRlcmJ1ZmZlcklEKTsKKyAg
ICBtU3RhdGVNYW5hZ2VyLT5iaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbUNvbG9y
UmVuZGVyYnVmZmVySUQpOworICAgIG1Cb3VuZE9iamVjdFJlbmRlcmJ1ZmZlckhhbmRsZSA9IG1G
dW5jdGlvbnNXR0wtPmR4UmVnaXN0ZXJPYmplY3ROVigKKyAgICAgICAgbURldmljZUhhbmRsZSwg
bU9iamVjdCwgbUNvbG9yUmVuZGVyYnVmZmVySUQsIEdMX1JFTkRFUkJVRkZFUiwgV0dMX0FDQ0VT
U19SRUFEX1dSSVRFX05WKTsKKyAgICBpZiAobUJvdW5kT2JqZWN0UmVuZGVyYnVmZmVySGFuZGxl
ID09IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FM
TE9DLCAiRmFpbGVkIHRvIHJlZ2lzdGVyIEQzRCBvYmplY3QsIGVycm9yOiAweCUwOHguIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgSFJFU1VMVF9DT0RFKEdldExhc3RFcnJvcigpKSk7Cisg
ICAgfQorCisgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZyA9IG1TdGF0ZS5jb25maWc7Cisg
ICAgaWYgKGNvbmZpZy0+ZGVwdGhTdGVuY2lsRm9ybWF0ICE9IEdMX05PTkUpCisgICAgeworICAg
ICAgICBtRnVuY3Rpb25zR0wtPmdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1EZXB0aFN0ZW5jaWxSZW5k
ZXJidWZmZXJJRCk7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRSZW5kZXJidWZmZXIoR0xf
UkVOREVSQlVGRkVSLCBtRGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVySUQpOworICAgICAgICBtRnVu
Y3Rpb25zR0wtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBjb25maWctPmRl
cHRoU3RlbmNpbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1XaWR0aCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVpPihtSGVpZ2h0KSk7CisgICAg
fQorCisgICAgbUZ1bmN0aW9uc0dMLT5nZW5GcmFtZWJ1ZmZlcnMoMSwgJm1GcmFtZWJ1ZmZlcklE
KTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1G
cmFtZWJ1ZmZlcklEKTsKKyAgICBtRnVuY3Rpb25zR0wtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfUkVOREVSQlVGRkVSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNvbG9yUmVuZGVyYnVm
ZmVySUQpOworICAgIGlmIChjb25maWctPmRlcHRoU2l6ZSA+IDApCisgICAgeworICAgICAgICBt
RnVuY3Rpb25zR0wtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9E
RVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbURlcHRoU3RlbmNpbFJlbmRlcmJ1ZmZlcklEKTsKKyAg
ICB9CisgICAgaWYgKGNvbmZpZy0+c3RlbmNpbFNpemUgPiAwKQorICAgIHsKKyAgICAgICAgbUZ1
bmN0aW9uc0dMLT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RF
TkNJTF9BVFRBQ0hNRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1JFTkRFUkJVRkZFUiwgbURlcHRoU3RlbmNpbFJlbmRlcmJ1ZmZlcklEKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJy
b3IgRDNEVGV4dHVyZVN1cmZhY2VXR0w6Om1ha2VDdXJyZW50KCkKK3sKKyAgICBpZiAoIW1GdW5j
dGlvbnNXR0wtPm1ha2VDdXJyZW50KG1EZXZpY2VDb250ZXh0LCBtV0dMQ29udGV4dCkpCisgICAg
eworICAgICAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IFdoYXQgZXJyb3IgdHlwZSBoZXJlPworICAg
ICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQ09OVEVYVF9MT1NULCAiRmFpbGVkIHRvIG1ha2Ug
dGhlIFdHTCBjb250ZXh0IGN1cnJlbnQuIik7CisgICAgfQorCisgICAgaWYgKCFtRnVuY3Rpb25z
V0dMLT5keExvY2tPYmplY3RzTlYobURldmljZUhhbmRsZSwgMSwgJm1Cb3VuZE9iamVjdFJlbmRl
cmJ1ZmZlckhhbmRsZSkpCisgICAgeworICAgICAgICBEV09SRCBlcnJvciA9IEdldExhc3RFcnJv
cigpOworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FMTE9DLCAiRmFpbGVkIHRv
IGxvY2sgb2JqZWN0LCBlcnJvcjogMHglMDh4LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IEhSRVNVTFRfQ09ERShlcnJvcikpOworICAgIH0KKworICAgIHJldHVybiBlZ2w6OkVycm9yKEVH
TF9TVUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBEM0RUZXh0dXJlU3VyZmFjZVdHTDo6dW5NYWtl
Q3VycmVudCgpCit7CisgICAgaWYgKCFtRnVuY3Rpb25zV0dMLT5keFVubG9ja09iamVjdHNOViht
RGV2aWNlSGFuZGxlLCAxLCAmbUJvdW5kT2JqZWN0UmVuZGVyYnVmZmVySGFuZGxlKSkKKyAgICB7
CisgICAgICAgIERXT1JEIGVycm9yID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgIHJldHVybiBl
Z2w6OkVycm9yKEVHTF9CQURfQUxMT0MsICJGYWlsZWQgdG8gdW5sb2NrIG9iamVjdCwgZXJyb3I6
IDB4JTA4eC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBIUkVTVUxUX0NPREUoZXJyb3Ip
KTsKKyAgICB9CisKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2Vn
bDo6RXJyb3IgRDNEVGV4dHVyZVN1cmZhY2VXR0w6OnN3YXAoY29uc3QgRGlzcGxheUltcGwgKmRp
c3BsYXlJbXBsKQoreworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKwor
ZWdsOjpFcnJvciBEM0RUZXh0dXJlU3VyZmFjZVdHTDo6cG9zdFN1YkJ1ZmZlcihFR0xpbnQgeCwg
RUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCkKK3sKKyAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitlZ2w6OkVy
cm9yIEQzRFRleHR1cmVTdXJmYWNlV0dMOjpxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMaW50
IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKQoreworICAgIHN3aXRjaCAoYXR0cmlidXRlKQorICAg
IHsKKyAgICAgICAgY2FzZSBFR0xfRDNEX1RFWFRVUkVfMkRfU0hBUkVfSEFORExFX0FOR0xFOgor
ICAgICAgICAgICAgKnZhbHVlID0gKG1CdWZ0eXBlID09IEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFS
RV9IQU5ETEVfQU5HTEUpID8gbUNsaWVudEJ1ZmZlciA6IG51bGxwdHI7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIEVHTF9EWEdJX0tFWUVEX01VVEVYX0FOR0xFOgorICAgICAg
ICAgICAgKnZhbHVlID0gbUtleWVkTXV0ZXg7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgRDNEVGV4dHVyZVN1
cmZhY2VXR0w6OmJpbmRUZXhJbWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50IGJ1ZmZl
cikKK3sKKyAgICBBU1NFUlQobUJvdW5kT2JqZWN0VGV4dHVyZUhhbmRsZSA9PSBudWxscHRyKTsK
KworICAgIGNvbnN0IFRleHR1cmVHTCAqdGV4dHVyZUdMID0gR2V0SW1wbEFzPFRleHR1cmVHTD4o
dGV4dHVyZSk7CisgICAgR0x1aW50IHRleHR1cmVJRCAgICAgICAgICAgPSB0ZXh0dXJlR0wtPmdl
dFRleHR1cmVJRCgpOworCisgICAgbUJvdW5kT2JqZWN0VGV4dHVyZUhhbmRsZSA9IG1GdW5jdGlv
bnNXR0wtPmR4UmVnaXN0ZXJPYmplY3ROVigKKyAgICAgICAgbURldmljZUhhbmRsZSwgbU9iamVj
dCwgdGV4dHVyZUlELCBHTF9URVhUVVJFXzJELCBXR0xfQUNDRVNTX1JFQURfV1JJVEVfTlYpOwor
ICAgIGlmIChtQm91bmRPYmplY3RUZXh0dXJlSGFuZGxlID09IG51bGxwdHIpCisgICAgeworICAg
ICAgICBEV09SRCBlcnJvciA9IEdldExhc3RFcnJvcigpOworICAgICAgICByZXR1cm4gZWdsOjpF
cnJvcihFR0xfQkFEX0FMTE9DLCAiRmFpbGVkIHRvIHJlZ2lzdGVyIEQzRCBvYmplY3QsIGVycm9y
OiAweCUwOHguIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSFJFU1VMVF9DT0RFKGVycm9y
KSk7CisgICAgfQorCisgICAgaWYgKCFtRnVuY3Rpb25zV0dMLT5keExvY2tPYmplY3RzTlYobURl
dmljZUhhbmRsZSwgMSwgJm1Cb3VuZE9iamVjdFRleHR1cmVIYW5kbGUpKQorICAgIHsKKyAgICAg
ICAgRFdPUkQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJy
b3IoRUdMX0JBRF9BTExPQywgIkZhaWxlZCB0byBsb2NrIG9iamVjdCwgZXJyb3I6IDB4JTA4eC4i
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBIUkVTVUxUX0NPREUoZXJyb3IpKTsKKyAgICB9
CisKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3Ig
RDNEVGV4dHVyZVN1cmZhY2VXR0w6OnJlbGVhc2VUZXhJbWFnZShFR0xpbnQgYnVmZmVyKQorewor
ICAgIEFTU0VSVChtQm91bmRPYmplY3RUZXh0dXJlSGFuZGxlICE9IG51bGxwdHIpOworICAgIGlm
ICghbUZ1bmN0aW9uc1dHTC0+ZHhVbmxvY2tPYmplY3RzTlYobURldmljZUhhbmRsZSwgMSwgJm1C
b3VuZE9iamVjdFRleHR1cmVIYW5kbGUpKQorICAgIHsKKyAgICAgICAgRFdPUkQgZXJyb3IgPSBH
ZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BTExPQywg
IkZhaWxlZCB0byB1bmxvY2sgb2JqZWN0LCBlcnJvcjogMHglMDh4LiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIEhSRVNVTFRfQ09ERShlcnJvcikpOworICAgIH0KKworICAgIGlmICghbUZ1
bmN0aW9uc1dHTC0+ZHhVbnJlZ2lzdGVyT2JqZWN0TlYobURldmljZUhhbmRsZSwgbUJvdW5kT2Jq
ZWN0VGV4dHVyZUhhbmRsZSkpCisgICAgeworICAgICAgICBEV09SRCBlcnJvciA9IEdldExhc3RF
cnJvcigpOworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FMTE9DLCAiRmFpbGVk
IHRvIHVucmVnaXN0ZXIgRDNEIG9iamVjdCwgZXJyb3I6IDB4JTA4eC4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBIUkVTVUxUX0NPREUoZXJyb3IpKTsKKyAgICB9CisgICAgbUJvdW5kT2Jq
ZWN0VGV4dHVyZUhhbmRsZSA9IG51bGxwdHI7CisKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xf
U1VDQ0VTUyk7Cit9CisKK3ZvaWQgRDNEVGV4dHVyZVN1cmZhY2VXR0w6OnNldFN3YXBJbnRlcnZh
bChFR0xpbnQgaW50ZXJ2YWwpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitFR0xpbnQg
RDNEVGV4dHVyZVN1cmZhY2VXR0w6OmdldFdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUdMaW50PihtV2lkdGgpOworfQorCitFR0xpbnQgRDNEVGV4dHVyZVN1cmZhY2VX
R0w6OmdldEhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVHTGludD4o
bUhlaWdodCk7Cit9CisKK0VHTGludCBEM0RUZXh0dXJlU3VyZmFjZVdHTDo6aXNQb3N0U3ViQnVm
ZmVyU3VwcG9ydGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRUdMX0ZBTFNFOworfQorCitFR0xp
bnQgRDNEVGV4dHVyZVN1cmZhY2VXR0w6OmdldFN3YXBCZWhhdmlvcigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIEVHTF9CVUZGRVJfUFJFU0VSVkVEOworfQorCitGcmFtZWJ1ZmZlckltcGwgKkQzRFRl
eHR1cmVTdXJmYWNlV0dMOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1l
YnVmZmVyU3RhdGUgJmRhdGEpCit7CisgICAgcmV0dXJuIG5ldyBGcmFtZWJ1ZmZlckdMKG1GcmFt
ZWJ1ZmZlcklELCBkYXRhLCBtRnVuY3Rpb25zR0wsIG1Xb3JrYXJvdW5kcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbVJlbmRlcmVyLT5nZXRCbGl0dGVyKCksIG1TdGF0ZU1hbmFnZXIp
OworfQorfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0QzRFRleHR1cmVTdXJmYWNlV0dMLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Qz
RFRleHR1cmVTdXJmYWNlV0dMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNlMmIwNWY0NWJmMDZkY2VjMjdjYzQz
MDJmZmUxYTcyZmEzNGYxMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRDNEVGV4dHVyZVN1cmZhY2VXR0wuaApA
QCAtMCwwICsxLDk1IEBACisKKy8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIEQzRFRleHR1cmVTdXJmYWNlV0dMLmg6
IFdHTCBpbXBsZW1lbnRhdGlvbiBvZiBlZ2w6OlN1cmZhY2UgZm9yIEQzRCB0ZXh0dXJlIGludGVy
b3AuCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfR0xfV0dMX0QzRFRFWFRJUkVTVVJGQUNF
V0dMX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0dMX1dHTF9EM0RURVhUSVJFU1VSRkFD
RVdHTF9IXworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvU3VyZmFjZUdMLmgiCisK
KyNpbmNsdWRlIDxHTC93Z2xleHQuaD4KKworbmFtZXNwYWNlIHJ4Cit7CisKK2NsYXNzIEZ1bmN0
aW9uc0dMOworY2xhc3MgRnVuY3Rpb25zV0dMOworY2xhc3MgRGlzcGxheVdHTDsKK2NsYXNzIFN0
YXRlTWFuYWdlckdMOworc3RydWN0IFdvcmthcm91bmRzR0w7CisKK2NsYXNzIEQzRFRleHR1cmVT
dXJmYWNlV0dMIDogcHVibGljIFN1cmZhY2VHTAoreworICBwdWJsaWM6CisgICAgRDNEVGV4dHVy
ZVN1cmZhY2VXR0woY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlbmRlcmVyR0wgKnJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRC
dWZmZXIgY2xpZW50QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlXR0wg
KmRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgSEdMUkMgd2dsQ29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBIREMgZGV2aWNlQ29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBJRDNEMTFEZXZpY2UgKmRpc3BsYXlEM0QxMURldmljZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zR0wsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25zV0dMICpmdW5jdGlvbnNXR0wpOworICAgIH5E
M0RUZXh0dXJlU3VyZmFjZVdHTCgpIG92ZXJyaWRlOworCisgICAgc3RhdGljIGVnbDo6RXJyb3Ig
VmFsaWRhdGVEM0RUZXh0dXJlQ2xpZW50QnVmZmVyKEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVm
ZmVyIGNsaWVudEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSUQzRDExRGV2aWNlICpkM2QxMURldmljZSk7CisKKyAgICBlZ2w6OkVy
cm9yIGluaXRpYWxpemUoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKSBvdmVycmlkZTsK
KyAgICBlZ2w6OkVycm9yIG1ha2VDdXJyZW50KCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciB1
bk1ha2VDdXJyZW50KCkgb3ZlcnJpZGU7CisKKyAgICBlZ2w6OkVycm9yIHN3YXAoY29uc3QgRGlz
cGxheUltcGwgKmRpc3BsYXlJbXBsKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHBvc3RTdWJC
dWZmZXIoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpIG92
ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgcXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTGludCBh
dHRyaWJ1dGUsIHZvaWQgKip2YWx1ZSkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBiaW5kVGV4
SW1hZ2UoZ2w6OlRleHR1cmUgKnRleHR1cmUsIEVHTGludCBidWZmZXIpIG92ZXJyaWRlOworICAg
IGVnbDo6RXJyb3IgcmVsZWFzZVRleEltYWdlKEVHTGludCBidWZmZXIpIG92ZXJyaWRlOworICAg
IHZvaWQgc2V0U3dhcEludGVydmFsKEVHTGludCBpbnRlcnZhbCkgb3ZlcnJpZGU7CisKKyAgICBF
R0xpbnQgZ2V0V2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBFR0xpbnQgZ2V0SGVpZ2h0KCkg
Y29uc3Qgb3ZlcnJpZGU7CisKKyAgICBFR0xpbnQgaXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVkKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgRUdMaW50IGdldFN3YXBCZWhhdmlvcigpIGNvbnN0IG92ZXJy
aWRlOworCisgICAgRnJhbWVidWZmZXJJbXBsICpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29u
c3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJmRhdGEpIG92ZXJyaWRlOworCisgIHByaXZhdGU6Cisg
ICAgRUdMZW51bSBtQnVmdHlwZTsKKyAgICBFR0xDbGllbnRCdWZmZXIgbUNsaWVudEJ1ZmZlcjsK
KworICAgIFJlbmRlcmVyR0wgKm1SZW5kZXJlcjsKKworICAgIElEM0QxMURldmljZSAqbURpc3Bs
YXlEM0QxMURldmljZTsKKworICAgIERpc3BsYXlXR0wgKm1EaXNwbGF5OworICAgIFN0YXRlTWFu
YWdlckdMICptU3RhdGVNYW5hZ2VyOworICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJm1Xb3JrYXJv
dW5kczsKKyAgICBjb25zdCBGdW5jdGlvbnNHTCAqbUZ1bmN0aW9uc0dMOworICAgIGNvbnN0IEZ1
bmN0aW9uc1dHTCAqbUZ1bmN0aW9uc1dHTDsKKworICAgIEhHTFJDIG1XR0xDb250ZXh0OworICAg
IEhEQyBtRGV2aWNlQ29udGV4dDsKKworICAgIHNpemVfdCBtV2lkdGg7CisgICAgc2l6ZV90IG1I
ZWlnaHQ7CisKKyAgICBIQU5ETEUgbURldmljZUhhbmRsZTsKKyAgICBJVW5rbm93biAqbU9iamVj
dDsKKyAgICBJRFhHSUtleWVkTXV0ZXggKm1LZXllZE11dGV4OworICAgIEhBTkRMRSBtQm91bmRP
YmplY3RUZXh0dXJlSGFuZGxlOworICAgIEhBTkRMRSBtQm91bmRPYmplY3RSZW5kZXJidWZmZXJI
YW5kbGU7CisKKyAgICBHTHVpbnQgbUNvbG9yUmVuZGVyYnVmZmVySUQ7CisgICAgR0x1aW50IG1E
ZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXJJRDsKKyAgICBHTHVpbnQgbUZyYW1lYnVmZmVySUQ7Cit9
OworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfR0xf
V0dMX0QzRFRFWFRJUkVTVVJGQUNFV0dMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0RYR0lTd2FwQ2hhaW5XaW5kb3dT
dXJmYWNlV0dMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC93Z2wvRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0wuY3BwCmluZGV4IDdjNTIx
NGU4MjI3NWRjNWUyY2VmNWZjYWUxMmQ2ODJjNmM3MzQyZTcuLjM4NDcyMWNmYjdjN2JlMTg3ODNj
NTk0Yzk0OGQ3MmM5ODY0Y2FhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VX
R0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC93Z2wvRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0wuY3BwCkBAIC04Niw3ICs4Niw3
IEBAIERYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMOjp+RFhHSVN3YXBDaGFpbldpbmRvd1N1
cmZhY2VXR0woKQogICAgIFNhZmVSZWxlYXNlKG1Td2FwQ2hhaW4xKTsKIH0KIAotZWdsOjpFcnJv
ciBEWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTDo6aW5pdGlhbGl6ZSgpCitlZ2w6OkVycm9y
IERYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMOjppbml0aWFsaXplKGNvbnN0IERpc3BsYXlJ
bXBsICpkaXNwbGF5SW1wbCkKIHsKICAgICBpZiAobU9yaWVudGF0aW9uICE9IEVHTF9TVVJGQUNF
X09SSUVOVEFUSU9OX0lOVkVSVF9ZX0FOR0xFKQogICAgIHsKQEAgLTEyOCw3ICsxMjgsNyBAQCBl
Z2w6OkVycm9yIERYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMOjptYWtlQ3VycmVudCgpCiAg
ICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCi1lZ2w6OkVycm9yIERYR0lT
d2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMOjpzd2FwKCkKK2VnbDo6RXJyb3IgRFhHSVN3YXBDaGFp
bldpbmRvd1N1cmZhY2VXR0w6OnN3YXAoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKQog
ewogICAgIG1GdW5jdGlvbnNHTC0+Zmx1c2goKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EWEdJU3dhcENoYWluV2lu
ZG93U3VyZmFjZVdHTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL3dnbC9EWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTC5oCmluZGV4IGY1MTYy
MzljOWU3ODk2OWU0Zjc3ZTlhMmU4YjE1ZDlhNmJhOGM1MWUuLmE0YzM0YTc2ZjIwYmRiMTcxOGQ5
MGQyYjg0Mzk5YWU0N2IzNzE0ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VX
R0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvd2dsL0RYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMLmgKQEAgLTM4LDEwICszOCwxMCBA
QCBjbGFzcyBEWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTCA6IHB1YmxpYyBTdXJmYWNlR0wK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgb3JpZW50YXRpb24pOwog
ICAgIH5EWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTCgpIG92ZXJyaWRlOwogCi0gICAgZWds
OjpFcnJvciBpbml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBpbml0aWFsaXpl
KGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJv
ciBtYWtlQ3VycmVudCgpIG92ZXJyaWRlOwogCi0gICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJp
ZGU7CisgICAgZWdsOjpFcnJvciBzd2FwKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkg
b3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQg
eSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9y
IHF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUp
IG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0
dXJlLCBFR0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRGlzcGxheVdHTC5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Rpc3Bs
YXlXR0wuY3BwCmluZGV4IDMyNDE0MDkzNGNkODA2MjZkZmZlODM0NWFmZGExZmU1NjdkZjkxN2Iu
LjJlNDk2ODQwOGU5YTc1NTkxYWRmYmFkZWJjNjIwNDc4Mzc4MWU4NmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRGlzcGxh
eVdHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL3dnbC9EaXNwbGF5V0dMLmNwcApAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUgImxp
YkFOR0xFL1N1cmZhY2UuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJl
ckdMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvcmVuZGVyZXJnbF91dGlscy5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EM0RUZXh0dXJlU3VyZmFjZVdH
TC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EWEdJU3dhcENoYWluV2lu
ZG93U3VyZmFjZVdHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9GdW5j
dGlvbnNXR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvUGJ1ZmZlclN1
cmZhY2VXR0wuaCIKQEAgLTU3LDggKzU4LDggQEAgY2xhc3MgRnVuY3Rpb25zR0xXaW5kb3dzIDog
cHVibGljIEZ1bmN0aW9uc0dMCiAgICAgUEZOV0dMR0VUUFJPQ0FERFJFU1NQUk9DIG1HZXRQcm9j
QWRkcmVzc1dHTDsKIH07CiAKLURpc3BsYXlXR0w6OkRpc3BsYXlXR0woKQotICAgIDogRGlzcGxh
eUdMKCksCitEaXNwbGF5V0dMOjpEaXNwbGF5V0dMKGNvbnN0IGVnbDo6RGlzcGxheVN0YXRlICZz
dGF0ZSkKKyAgICA6IERpc3BsYXlHTChzdGF0ZSksCiAgICAgICBtT3BlbkdMTW9kdWxlKG51bGxw
dHIpLAogICAgICAgbUZ1bmN0aW9uc1dHTChudWxscHRyKSwKICAgICAgIG1GdW5jdGlvbnNHTChu
dWxscHRyKSwKQEAgLTM0NSwxNCArMzQ2LDEzIEBAIGVnbDo6RXJyb3IgRGlzcGxheVdHTDo6aW5p
dGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCiAgICAgbUhhc1JvYnVzdG5lc3MgPSBtRnVu
Y3Rpb25zR0wtPmdldEdyYXBoaWNzUmVzZXRTdGF0dXMgIT0gbnVsbHB0cjsKICAgICBpZiAoaGFz
V0dMQ3JlYXRlQ29udGV4dFJvYnVzdG5lc3MgIT0gbUhhc1JvYnVzdG5lc3MpCiAgICAgewotICAg
ICAgICBBTkdMRVBsYXRmb3JtQ3VycmVudCgpLT5sb2dXYXJuaW5nKAotICAgICAgICAgICAgIldH
TF9BUkJfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcyBleGlzdHMgYnV0IHVuYWJsZSB0byBPcGVu
R0wgY29udGV4dCB3aXRoICIKLSAgICAgICAgICAgICJyb2J1c3RuZXNzLiIpOworICAgICAgICBX
QVJOKCkgPDwgIldHTF9BUkJfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcyBleGlzdHMgYnV0IHVu
YWJsZSB0byBPcGVuR0wgY29udGV4dCB3aXRoICIKKyAgICAgICAgICAgICAgICAgICJyb2J1c3Ru
ZXNzLiI7CiAgICAgfQogCiAgICAgLy8gSW50ZWwgT3BlbkdMIEVTIGRyaXZlcnMgYXJlIG5vdCBj
dXJyZW50bHkgc3VwcG9ydGVkIGR1ZSB0byBidWdzIGluIHRoZSBkcml2ZXIgYW5kIEFOR0xFCiAg
ICAgVmVuZG9ySUQgdmVuZG9yID0gR2V0VmVuZG9ySUQobUZ1bmN0aW9uc0dMKTsKLSAgICBpZiAo
cmVxdWVzdGVkRGlzcGxheVR5cGUgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNf
QU5HTEUgJiYgdmVuZG9yID09IFZFTkRPUl9JRF9JTlRFTCkKKyAgICBpZiAocmVxdWVzdGVkRGlz
cGxheVR5cGUgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUgJiYgSXNJ
bnRlbCh2ZW5kb3IpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9J
TklUSUFMSVpFRCwgIkludGVsIE9wZW5HTCBFUyBkcml2ZXJzIGFyZSBub3Qgc3VwcG9ydGVkLiIp
OwogICAgIH0KQEAgLTM2OCwxNCArMzY4LDE0IEBAIGVnbDo6RXJyb3IgRGlzcGxheVdHTDo6aW5p
dGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCiAgICAgICAgIEdldFdpbmRvd1RocmVhZFBy
b2Nlc3NJZChuYXRpdmVXaW5kb3csICZ3aW5kb3dQcm9jZXNzSWQpOwogCiAgICAgICAgIC8vIEFN
RCBkcml2ZXJzIGFkdmVydGlzZSB0aGUgV0dMX05WX0RYX2ludGVyb3AgYW5kIFdHTF9OVl9EWF9p
bnRlcm9wMiBleHRlbnNpb25zIGJ1dCBmYWlsCi0gICAgICAgIG1Vc2VEWEdJU3dhcENoYWlucyA9
IHZlbmRvciAhPSBWRU5ET1JfSURfQU1EICYmIChjdXJyZW50UHJvY2Vzc0lkICE9IHdpbmRvd1By
b2Nlc3NJZCk7CisgICAgICAgIG1Vc2VEWEdJU3dhcENoYWlucyA9ICFJc0FNRCh2ZW5kb3IpICYm
IChjdXJyZW50UHJvY2Vzc0lkICE9IHdpbmRvd1Byb2Nlc3NJZCk7CiAgICAgfQogICAgIGVsc2UK
ICAgICB7CiAgICAgICAgIG1Vc2VEWEdJU3dhcENoYWlucyA9IGZhbHNlOwogICAgIH0KIAotICAg
IGlmIChtVXNlRFhHSVN3YXBDaGFpbnMpCisgICAgaWYgKG1GdW5jdGlvbnNXR0wtPmhhc0V4dGVu
c2lvbigiV0dMX05WX0RYX2ludGVyb3AyIikpCiAgICAgewogICAgICAgICBlZ2w6OkVycm9yIGVy
cm9yID0gaW5pdGlhbGl6ZUQzRERldmljZSgpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQpAQCAtMzgzLDYgKzM4MywxMSBAQCBlZ2w6OkVycm9yIERpc3BsYXlXR0w6OmluaXRpYWxpemUo
ZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQogICAgICAgICAgICAgcmV0dXJuIGVycm9yOwogICAgICAg
ICB9CiAgICAgfQorICAgIGVsc2UgaWYgKG1Vc2VEWEdJU3dhcENoYWlucykKKyAgICB7CisgICAg
ICAgIC8vIFdhbnQgdG8gdXNlIERYR0kgc3dhcCBjaGFpbnMgYnV0IFdHTF9OVl9EWF9pbnRlcm9w
MiBpcyBub3QgcHJlc2VudCwgZmFpbCBpbml0aWFsaXphdGlvbgorICAgICAgICByZXR1cm4gZWds
OjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELCAiV0dMX05WX0RYX2ludGVyb3AyIGlzIHJlcXVp
cmVkIGJ1dCBub3QgcHJlc2VudC4iKTsKKyAgICB9CiAKICAgICByZXR1cm4gRGlzcGxheUdMOjpp
bml0aWFsaXplKGRpc3BsYXkpOwogfQpAQCAtNDMwLDcgKzQzNSw2IEBAIHZvaWQgRGlzcGxheVdH
TDo6dGVybWluYXRlKCkKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlXR0w6OmNyZWF0ZVdpbmRv
d1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3Vy
YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xO
YXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewpAQCAtNDQ5
LDcgKzQ1Myw2IEBAIFN1cmZhY2VJbXBsICpEaXNwbGF5V0dMOjpjcmVhdGVXaW5kb3dTdXJmYWNl
KGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKIH0KIAogU3VyZmFjZUltcGwgKkRpc3Bs
YXlXR0w6OmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKICAg
ICBFR0xpbnQgd2lkdGggICAgICAgICAgPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGF0dHJpYnMuZ2V0
KEVHTF9XSURUSCwgMCkpOwpAQCAtNDYzLDE2ICs0NjYsMTUgQEAgU3VyZmFjZUltcGwgKkRpc3Bs
YXlXR0w6OmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0
ZSwKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlXR0w6OmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50
QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAq
Y29uZmlndXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0
dHJpYnMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBudWxscHRyOworICAg
IHJldHVybiBuZXcgRDNEVGV4dHVyZVN1cmZhY2VXR0woc3RhdGUsIGdldFJlbmRlcmVyKCksIGJ1
ZnR5cGUsIGNsaWVudEJ1ZmZlciwgdGhpcywgbVdHTENvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtRGV2aWNlQ29udGV4dCwgbUQzRDExRGV2aWNlLCBtRnVuY3Rp
b25zR0wsIG1GdW5jdGlvbnNXR0wpOwogfQogCiBTdXJmYWNlSW1wbCAqRGlzcGxheVdHTDo6Y3Jl
YXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAq
Y29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0aXZlUGl4bWFwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMp
CiB7CkBAIC01NTAsNiArNTUyLDcgQEAgZWdsOjpDb25maWdTZXQgRGlzcGxheVdHTDo6Z2VuZXJh
dGVDb25maWdzKCkKICAgICAgICAgKChnZXRBdHRyaWIoV0dMX1NXQVBfTUVUSE9EX0FSQikgPT0g
V0dMX1NXQVBfQ09QWV9BUkIpID8gRUdMX1NXQVBfQkVIQVZJT1JfUFJFU0VSVkVEX0JJVAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOiAwKTsKICAgICBjb25maWcub3B0aW1hbE9yaWVudGF0aW9uID0gb3B0aW1hbFN1cmZhY2VP
cmllbnRhdGlvbjsKKyAgICBjb25maWcuY29sb3JDb21wb25lbnRUeXBlID0gRUdMX0NPTE9SX0NP
TVBPTkVOVF9UWVBFX0ZJWEVEX0VYVDsKIAogICAgIGNvbmZpZy50cmFuc3BhcmVudFR5cGUgPSBF
R0xfTk9ORTsKICAgICBjb25maWcudHJhbnNwYXJlbnRSZWRWYWx1ZSA9IDA7CkBAIC01ODEsNiAr
NTg0LDIzIEBAIGJvb2wgRGlzcGxheVdHTDo6aXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVX
aW5kb3dUeXBlIHdpbmRvdykgY29uc3QKICAgICByZXR1cm4gKElzV2luZG93KHdpbmRvdykgPT0g
VFJVRSk7CiB9CiAKK2VnbDo6RXJyb3IgRGlzcGxheVdHTDo6dmFsaWRhdGVDbGllbnRCdWZmZXIo
Y29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpB
dHRyaWJ1dGVNYXAgJmF0dHJpYnMpIGNvbnN0Cit7CisgICAgc3dpdGNoIChidWZ0eXBlKQorICAg
IHsKKyAgICAgICAgY2FzZSBFR0xfRDNEX1RFWFRVUkVfQU5HTEU6CisgICAgICAgIGNhc2UgRUdM
X0QzRF9URVhUVVJFXzJEX1NIQVJFX0hBTkRMRV9BTkdMRToKKyAgICAgICAgICAgIHJldHVybiBE
M0RUZXh0dXJlU3VyZmFjZVdHTDo6VmFsaWRhdGVEM0RUZXh0dXJlQ2xpZW50QnVmZmVyKGJ1ZnR5
cGUsIGNsaWVudEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EM0QxMURldmljZSk7CisKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBEaXNwbGF5R0w6OnZhbGlkYXRlQ2xpZW50
QnVmZmVyKGNvbmZpZ3VyYXRpb24sIGJ1ZnR5cGUsIGNsaWVudEJ1ZmZlciwgYXR0cmlicyk7Cisg
ICAgfQorfQorCiBzdGQ6OnN0cmluZyBEaXNwbGF5V0dMOjpnZXRWZW5kb3JTdHJpbmcoKSBjb25z
dAogewogICAgIC8vVU5JTVBMRU1FTlRFRCgpOwpAQCAtNjQ0LDYgKzY2NCwxNSBAQCB2b2lkIERp
c3BsYXlXR0w6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRlbnNpb25zICpvdXRF
eHRlbnNpb25zKSBjb25zdAogICAgIG91dEV4dGVuc2lvbnMtPnN1cmZhY2VPcmllbnRhdGlvbiA9
IG1Vc2VEWEdJU3dhcENoYWluczsKIAogICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0ZUNvbnRleHRS
b2J1c3RuZXNzID0gbUhhc1JvYnVzdG5lc3M7CisKKyAgICBvdXRFeHRlbnNpb25zLT5kM2RUZXh0
dXJlQ2xpZW50QnVmZmVyICAgICAgICAgPSBtRDNEMTFEZXZpY2UgIT0gbnVsbHB0cjsKKyAgICBv
dXRFeHRlbnNpb25zLT5kM2RTaGFyZUhhbmRsZUNsaWVudEJ1ZmZlciAgICAgPSBtRDNEMTFEZXZp
Y2UgIT0gbnVsbHB0cjsKKyAgICBvdXRFeHRlbnNpb25zLT5zdXJmYWNlRDNEVGV4dHVyZTJEU2hh
cmVIYW5kbGUgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPnF1ZXJ5U3VyZmFjZVBvaW50ZXIg
ICAgICAgICAgICA9IHRydWU7CisgICAgb3V0RXh0ZW5zaW9ucy0+a2V5ZWRNdXRleCAgICAgICAg
ICAgICAgICAgICAgID0gdHJ1ZTsKKworICAgIC8vIENvbnRleHRzIGFyZSB2aXJ0dWFsaXplZCBz
byB0ZXh0dXJlcyBjYW4gYmUgc2hhcmVkIGdsb2JhbGx5CisgICAgb3V0RXh0ZW5zaW9ucy0+ZGlz
cGxheVRleHR1cmVTaGFyZUdyb3VwID0gdHJ1ZTsKIH0KIAogdm9pZCBEaXNwbGF5V0dMOjpnZW5l
cmF0ZUNhcHMoZWdsOjpDYXBzICpvdXRDYXBzKSBjb25zdApAQCAtNjY1LDEyICs2OTQsNiBAQCBl
Z2w6OkVycm9yIERpc3BsYXlXR0w6OndhaXROYXRpdmUoRUdMaW50IGVuZ2luZSwKICAgICByZXR1
cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKLWVnbDo6RXJyb3IgRGlzcGxheVdHTDo6
Z2V0RHJpdmVyVmVyc2lvbihzdGQ6OnN0cmluZyAqdmVyc2lvbikgY29uc3QKLXsKLSAgICAqdmVy
c2lvbiA9ICIiOwotICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKLX0KLQogZWds
OjpFcnJvciBEaXNwbGF5V0dMOjpyZWdpc3RlckQzRERldmljZShJVW5rbm93biAqZGV2aWNlLCBI
QU5ETEUgKm91dEhhbmRsZSkKIHsKICAgICBBU1NFUlQoZGV2aWNlICE9IG51bGxwdHIpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L3dnbC9EaXNwbGF5V0dMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvd2dsL0Rpc3BsYXlXR0wuaAppbmRleCA3ZWFiZTI4MDc5ZmI4ODc2NjZiNzk4
YWY5MTdiYzU0NzAzZjA3ZDVjLi4xNjgxMzA0YTdjMzU5NzRhZDBmMDk1MzI2ZjE3YTAzY2NlOGI4
N2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvd2dsL0Rpc3BsYXlXR0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Rpc3BsYXlXR0wuaApAQCAtMjEsNyArMjEsNyBA
QCBjbGFzcyBGdW5jdGlvbnNXR0w7CiBjbGFzcyBEaXNwbGF5V0dMIDogcHVibGljIERpc3BsYXlH
TAogewogICBwdWJsaWM6Ci0gICAgRGlzcGxheVdHTCgpOworICAgIERpc3BsYXlXR0woY29uc3Qg
ZWdsOjpEaXNwbGF5U3RhdGUgJnN0YXRlKTsKICAgICB+RGlzcGxheVdHTCgpIG92ZXJyaWRlOwog
CiAgICAgZWdsOjpFcnJvciBpbml0aWFsaXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkgb3ZlcnJp
ZGU7CkBAIC0yOSwxOCArMjksMTUgQEAgY2xhc3MgRGlzcGxheVdHTCA6IHB1YmxpYyBEaXNwbGF5
R0wKIAogICAgIC8vIFN1cmZhY2UgY3JlYXRpb24KICAgICBTdXJmYWNlSW1wbCAqY3JlYXRlV2lu
ZG93U3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlw
ZSB3aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWds
OjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwogICAgIFN1cmZhY2VJbXBsICpjcmVh
dGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1
cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6
OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAgICAgU3VyZmFjZUltcGwgKmNyZWF0
ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWds
OjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZm
ZXIgY2xpZW50QnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAgICAg
U3VyZmFjZUltcGwgKmNyZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUg
JnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6
Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0aXZlUGl4bWFwLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlk
ZTsKIApAQCAtNTAsNiArNDcsMTAgQEAgY2xhc3MgRGlzcGxheVdHTCA6IHB1YmxpYyBEaXNwbGF5
R0wKICAgICBlZ2w6OkVycm9yIHJlc3RvcmVMb3N0RGV2aWNlKCkgb3ZlcnJpZGU7CiAKICAgICBi
b29sIGlzVmFsaWROYXRpdmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpIGNvbnN0
IG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgdmFsaWRhdGVDbGllbnRCdWZmZXIoY29uc3QgZWds
OjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFR0xlbnVtIGJ1ZnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xDbGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIGNvbnN0IG92ZXJy
aWRlOwogCiAgICAgZWdsOjpFcnJvciBnZXREZXZpY2UoRGV2aWNlSW1wbCAqKmRldmljZSkgb3Zl
cnJpZGU7CiAKQEAgLTYwLDggKzYxLDYgQEAgY2xhc3MgRGlzcGxheVdHTCA6IHB1YmxpYyBEaXNw
bGF5R0wKICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpkcmF3U3VyZmFj
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpyZWFkU3VyZmFjZSkg
Y29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBlZ2w6OkVycm9yIGdldERyaXZlclZlcnNpb24oc3RkOjpz
dHJpbmcgKnZlcnNpb24pIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgZWdsOjpFcnJvciByZWdpc3Rl
ckQzRERldmljZShJVW5rbm93biAqZGV2aWNlLCBIQU5ETEUgKm91dEhhbmRsZSk7CiAgICAgdm9p
ZCByZWxlYXNlRDNERGV2aWNlKEhBTkRMRSBoYW5kbGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL1BidWZmZXJTdXJm
YWNlV0dMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC93Z2wvUGJ1ZmZlclN1cmZhY2VXR0wuY3BwCmluZGV4IGYyYzUwMzYxNmIxZGIxN2JmMmUy
NDMxZjczZTVhMTgxMjE0NDg3MTcuLjA2NTBlOTFlOTY1YmU4NjYyMTJjN2U5ZDlkMjA5NTUyMjgy
OTk0ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC93Z2wvUGJ1ZmZlclN1cmZhY2VXR0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvUGJ1ZmZlclN1cmZhY2VXR0wu
Y3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBpbnQgR2V0V0dMVGV4dHVyZVRhcmdldChFR0xl
bnVtIGVnbFRleHR1cmVUYXJnZXQpCiAgICAgfQogfQogCi1lZ2w6OkVycm9yIFBidWZmZXJTdXJm
YWNlV0dMOjppbml0aWFsaXplKCkKK2VnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VXR0w6OmluaXRp
YWxpemUoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKQogewogICAgIGNvbnN0IGludCBw
YnVmZmVyQ3JlYXRpb25BdHRyaWJ1dGVzW10gPQogICAgIHsKQEAgLTEyMiw3ICsxMjIsNyBAQCBl
Z2w6OkVycm9yIFBidWZmZXJTdXJmYWNlV0dMOjptYWtlQ3VycmVudCgpCiAgICAgcmV0dXJuIGVn
bDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCi1lZ2w6OkVycm9yIFBidWZmZXJTdXJmYWNlV0dM
Ojpzd2FwKCkKK2VnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VXR0w6OnN3YXAoY29uc3QgRGlzcGxh
eUltcGwgKmRpc3BsYXlJbXBsKQogewogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNT
KTsKIH0KQEAgLTEzNCw3ICsxMzQsNyBAQCBlZ2w6OkVycm9yIFBidWZmZXJTdXJmYWNlV0dMOjpw
b3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFRwogCiBlZ2w6
OkVycm9yIFBidWZmZXJTdXJmYWNlV0dMOjpxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMaW50
IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAq
dmFsdWUgPSBudWxscHRyOwogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL3dnbC9QYnVmZmVyU3VyZmFjZVdHTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9QYnVmZmVyU3VyZmFjZVdHTC5oCmluZGV4IDU2
MjM1MjkzYWU2NjgxZTg1NDE3OGMxNmY4YTNiNGJjYTA3M2UwNjUuLmFlZDQyNzkyMWVmOWRiNDc0
M2Q3YzIxZWM0ZDk3YmY3ZjY5ZDk0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvUGJ1ZmZlclN1cmZhY2VXR0wuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL1Bi
dWZmZXJTdXJmYWNlV0dMLmgKQEAgLTM0LDEwICszNCwxMCBAQCBjbGFzcyBQYnVmZmVyU3VyZmFj
ZVdHTCA6IHB1YmxpYyBTdXJmYWNlR0wKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5j
dGlvbnNXR0wgKmZ1bmN0aW9ucyk7CiAgICAgflBidWZmZXJTdXJmYWNlV0dMKCkgb3ZlcnJpZGU7
CiAKLSAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9y
IGluaXRpYWxpemUoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKSBvdmVycmlkZTsKICAg
ICBlZ2w6OkVycm9yIG1ha2VDdXJyZW50KCkgb3ZlcnJpZGU7CiAKLSAgICBlZ2w6OkVycm9yIHN3
YXAoKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHN3YXAoY29uc3QgRGlzcGxheUltcGwgKmRp
c3BsYXlJbXBsKSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHBvc3RTdWJCdWZmZXIoRUdMaW50
IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpIG92ZXJyaWRlOwogICAg
IGVnbDo6RXJyb3IgcXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTGludCBhdHRyaWJ1dGUsIHZv
aWQgKip2YWx1ZSkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciBiaW5kVGV4SW1hZ2UoZ2w6OlRl
eHR1cmUgKnRleHR1cmUsIEVHTGludCBidWZmZXIpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9XaW5kb3dT
dXJmYWNlV0dMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC93Z2wvV2luZG93U3VyZmFjZVdHTC5jcHAKaW5kZXggZjIyOTQzYWNiNjlkM2I1ZTU3
ZDc1ZmE4MzlkMjg3MTNlM2Q2NTRhOS4uYjY4NjU0NzdiY2U0OTYyZWM1YmQyMzkyMzVmMDU2YTA2
NDlmOWUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL3dnbC9XaW5kb3dTdXJmYWNlV0dMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL1dpbmRvd1N1cmZhY2VXR0wu
Y3BwCkBAIC00MSw3ICs0MSw3IEBAIFdpbmRvd1N1cmZhY2VXR0w6On5XaW5kb3dTdXJmYWNlV0dM
KCkKICAgICBtRGV2aWNlQ29udGV4dCA9IG51bGxwdHI7CiB9CiAKLWVnbDo6RXJyb3IgV2luZG93
U3VyZmFjZVdHTDo6aW5pdGlhbGl6ZSgpCitlZ2w6OkVycm9yIFdpbmRvd1N1cmZhY2VXR0w6Omlu
aXRpYWxpemUoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKQogewogICAgIG1EZXZpY2VD
b250ZXh0ID0gR2V0REMobVdpbmRvdyk7CiAgICAgaWYgKCFtRGV2aWNlQ29udGV4dCkKQEAgLTEw
MCw3ICsxMDAsNyBAQCBlZ2w6OkVycm9yIFdpbmRvd1N1cmZhY2VXR0w6Om1ha2VDdXJyZW50KCkK
ICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKLWVnbDo6RXJyb3IgV2lu
ZG93U3VyZmFjZVdHTDo6c3dhcCgpCitlZ2w6OkVycm9yIFdpbmRvd1N1cmZhY2VXR0w6OnN3YXAo
Y29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKQogewogICAgIGlmICghbUZ1bmN0aW9uc1dH
TC0+c3dhcEJ1ZmZlcnMobURldmljZUNvbnRleHQpKQogICAgIHsKQEAgLTExOSw3ICsxMTksNyBA
QCBlZ2w6OkVycm9yIFdpbmRvd1N1cmZhY2VXR0w6OnBvc3RTdWJCdWZmZXIoRUdMaW50IHgsIEVH
TGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTAogCiBlZ2w6OkVycm9yIFdpbmRvd1N1cmZhY2VXR0w6
OnF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUp
CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgICp2YWx1ZSA9IG51bGxwdHI7CiAgICAgcmV0
dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL1dpbmRvd1N1cmZhY2VX
R0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93
Z2wvV2luZG93U3VyZmFjZVdHTC5oCmluZGV4IGViOTVlNGRjMjM4YzFiMWE2MDRkNzRmODUwODM3
MjFmOTliYjFlNTMuLjk4MWVmNDFiYzljYzAwZjdiZWM2NzllYjY2ODgwMGQyOTczMWQ4NTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC93Z2wvV2luZG93U3VyZmFjZVdHTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvV2luZG93U3VyZmFjZVdHTC5oCkBAIC0zMCwxMCAr
MzAsMTAgQEAgY2xhc3MgV2luZG93U3VyZmFjZVdHTCA6IHB1YmxpYyBTdXJmYWNlR0wKICAgICAg
ICAgICAgICAgICAgICAgIEVHTGludCBvcmllbnRhdGlvbik7CiAgICAgfldpbmRvd1N1cmZhY2VX
R0woKSBvdmVycmlkZTsKIAotICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOwor
ICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUltcGwp
IG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgbWFrZUN1cnJlbnQoKSBvdmVycmlkZTsKIAotICAg
IGVnbDo6RXJyb3Igc3dhcCgpIG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3Igc3dhcChjb25zdCBE
aXNwbGF5SW1wbCAqZGlzcGxheUltcGwpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgcG9zdFN1
YkJ1ZmZlcihFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCkg
b3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciBxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMaW50
IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIGJpbmRU
ZXhJbWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50IGJ1ZmZlcikgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
bG9hZF9mdW5jdGlvbnNfZGF0YS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rpb25zX2RhdGEuanNvbgppbmRleCA4MTQ1NzA0ZDYw
MWJiOGZhOTc0MjQ2OTc5YjA3ZGIyOWI1ZGJiY2M4Li4xOTgyNzQ5OThjZmMyN2E2ZWQxYzczNzky
NTk4YTU0ZjNmNDgzOTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbG9hZF9mdW5jdGlvbnNfZGF0YS5qc29uCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9sb2FkX2Z1bmN0aW9uc19kYXRh
Lmpzb24KQEAgLTUxOSw2ICs1MTksMjYgQEAKICAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxv
YWRFVEMxUkdCOFRvQkMxIgogICAgIH0KICAgfSwKKyAgIkdMX0NPTVBSRVNTRURfUkdCOF9MT1NT
WV9ERUNPREVfRVRDMl9BTkdMRSI6IHsKKyAgICAiQkMxX1JHQl9VTk9STV9CTE9DSyI6IHsKKyAg
ICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRFVEMyUkdCOFRvQkMxIgorICAgIH0KKyAgfSwK
KyAgIkdMX0NPTVBSRVNTRURfU1JHQjhfTE9TU1lfREVDT0RFX0VUQzJfQU5HTEUiOiB7CisgICAg
IkJDMV9SR0JfVU5PUk1fU1JHQl9CTE9DSyI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjog
IkxvYWRFVEMyU1JHQjhUb0JDMSIKKyAgICB9CisgIH0sCisgICJHTF9DT01QUkVTU0VEX1JHQjhf
UFVOQ0hUSFJPVUdIX0FMUEhBMV9MT1NTWV9ERUNPREVfRVRDMl9BTkdMRSI6IHsKKyAgICAiQkMx
X1JHQkFfVU5PUk1fQkxPQ0siOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkRVRD
MlJHQjhBMVRvQkMxIgorICAgIH0KKyAgfSwKKyAgIkdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hU
SFJPVUdIX0FMUEhBMV9MT1NTWV9ERUNPREVfRVRDMl9BTkdMRSI6IHsKKyAgICAiQkMxX1JHQkFf
VU5PUk1fU1JHQl9CTE9DSyI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRFVEMy
U1JHQjhBMVRvQkMxIgorICAgIH0KKyAgfSwKICAgIkdMX1IxNl9FWFQiOiB7CiAgICAgIlIxNl9V
Tk9STSI6IHsKICAgICAgICJHTF9VTlNJR05FRF9TSE9SVCI6ICJMb2FkVG9OYXRpdmU8R0x1c2hv
cnQsIDE+IgpAQCAtNTU4LDUgKzU3OCwyNSBAQAogICAgICJSMTZHMTZCMTZBMTZfU05PUk0iOiB7
CiAgICAgICAiR0xfU0hPUlQiOiAiTG9hZFRvTmF0aXZlPEdMdXNob3J0LCA0PiIKICAgICB9Cisg
IH0sCisgICJHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVCI6IHsKKyAgICAi
Tk9ORSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRDb21wcmVzc2VkVG9OYXRp
dmU8NCwgNCwgMTY+IgorICAgIH0KKyAgfSwKKyAgIkdMX0NPTVBSRVNTRURfU1JHQl9TM1RDX0RY
VDFfRVhUIjogeworICAgICJOT05FIjogeworICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9h
ZENvbXByZXNzZWRUb05hdGl2ZTw0LCA0LCA4PiIKKyAgICB9CisgIH0sCisgICJHTF9DT01QUkVT
U0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQxX0VYVCI6IHsKKyAgICAiTk9ORSI6IHsKKyAgICAgICJH
TF9VTlNJR05FRF9CWVRFIjogIkxvYWRDb21wcmVzc2VkVG9OYXRpdmU8NCwgNCwgOD4iCisgICAg
fQorICB9LAorICAiR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQiOiB7Cisg
ICAgIk5PTkUiOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJMb2FkQ29tcHJlc3NlZFRv
TmF0aXZlPDQsIDQsIDE2PiIKKyAgICB9CiAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9sb2FkX2Z1bmN0aW9uc190YWJsZV9h
dXRvZ2VuLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9sb2FkX2Z1bmN0aW9uc190YWJsZV9hdXRvZ2VuLmNwcAppbmRleCBjOTNmODczODVmZjY4OTQy
MzgxNzg4M2JiMzY0ZDBiZjdlNDkyMjlhLi5lZDlmZTI4NjRjOTAzYTBkMTFhYWVhNjNkYWJkNjQz
OGYyMDA3YWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rpb25zX3Rh
YmxlX2F1dG9nZW4uY3BwCkBAIC0yNTAsNiArMjUwLDE4IEBAIExvYWRJbWFnZUZ1bmN0aW9uSW5m
byBDT01QUkVTU0VEX1JHQjhfRVRDMl90b19SOEc4QjhBOF9VTk9STShHTGVudW0gdHlwZSkKICAg
ICB9CiB9CiAKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBDT01QUkVTU0VEX1JHQjhfTE9TU1lfREVD
T0RFX0VUQzJfQU5HTEVfdG9fQkMxX1JHQl9VTk9STV9CTE9DSyhHTGVudW0gdHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Cisg
ICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRFVEMyUkdCOFRvQkMx
LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1
bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyBDT01QUkVT
U0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyX3RvX1I4RzhCOEE4X1VOT1JNKEdMZW51
bSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkKQEAgLTI2Miw2ICsyNzQsMTkgQEAgTG9hZElt
YWdlRnVuY3Rpb25JbmZvIENPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzJf
dG9fUjhHOEI4QThfVU5PUk0KICAgICB9CiB9CiAKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbworQ09N
UFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfTE9TU1lfREVDT0RFX0VUQzJfQU5HTEVf
dG9fQkMxX1JHQkFfVU5PUk1fQkxPQ0soR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBl
KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0
dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkRVRDMlJHQjhBMVRvQkMxLCB0cnVlKTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBy
ZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVl
KTsKKyAgICB9Cit9CisKIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyBDT01QUkVTU0VEX1JHQkE4X0VU
QzJfRUFDX3RvX1I4RzhCOEE4X1VOT1JNKEdMZW51bSB0eXBlKQogewogICAgIHN3aXRjaCAodHlw
ZSkKQEAgLTM3MCw2ICszOTUsMTkgQEAgTG9hZEltYWdlRnVuY3Rpb25JbmZvIENPTVBSRVNTRURf
U1JHQjhfRVRDMl90b19SOEc4QjhBOF9VTk9STV9TUkdCKEdMZW51bSB0eXBlKQogICAgIH0KIH0K
IAorTG9hZEltYWdlRnVuY3Rpb25JbmZvIENPTVBSRVNTRURfU1JHQjhfTE9TU1lfREVDT0RFX0VU
QzJfQU5HTEVfdG9fQkMxX1JHQl9VTk9STV9TUkdCX0JMT0NLKAorICAgIEdMZW51bSB0eXBlKQor
eworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllU
RToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEVUQzJTUkdC
OFRvQkMxLCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxl
TG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyBD
T01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMl90b19SOEc4QjhBOF9VTk9S
TV9TUkdCKEdMZW51bSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkKQEAgLTM4Miw2ICs0MjAs
NjggQEAgTG9hZEltYWdlRnVuY3Rpb25JbmZvIENPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdI
X0FMUEhBMV9FVEMyX3RvX1I4RzhCOEE4X1VOT1IKICAgICB9CiB9CiAKK0xvYWRJbWFnZUZ1bmN0
aW9uSW5mbworQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0xPU1NZX0RFQ09E
RV9FVEMyX0FOR0xFX3RvX0JDMV9SR0JBX1VOT1JNX1NSR0JfQkxPQ0soCisgICAgR0xlbnVtIHR5
cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkRVRD
MlNSR0I4QTFUb0JDMSwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJl
YWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlv
bkluZm8gQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFRfdG9fZGVmYXVsdChHTGVu
dW0gdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX0JZVEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExv
YWRDb21wcmVzc2VkVG9OYXRpdmU8NCwgNCwgOD4sIHRydWUpOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VG
dW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKwor
TG9hZEltYWdlRnVuY3Rpb25JbmZvIENPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhU
X3RvX2RlZmF1bHQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFn
ZUZ1bmN0aW9uSW5mbyhMb2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQsIDQsIDE2PiwgdHJ1ZSk7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAg
cmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1
ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gQ09NUFJFU1NFRF9TUkdCX0FM
UEhBX1MzVENfRFhUNV9FWFRfdG9fZGVmYXVsdChHTGVudW0gdHlwZSkKK3sKKyAgICBzd2l0Y2gg
KHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAg
ICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRDb21wcmVzc2VkVG9OYXRpdmU8NCwg
NCwgMTY+LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKFVucmVhY2hhYmxl
TG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBD
T01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVF90b19kZWZhdWx0KEdMZW51bSB0eXBlKQorewor
ICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToK
KyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZENvbXByZXNzZWRU
b05hdGl2ZTw0LCA0LCA4PiwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhV
bnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCiBMb2FkSW1hZ2VGdW5j
dGlvbkluZm8gREVQVEgyNF9TVEVOQ0lMOF90b19EMjRfVU5PUk1fUzhfVUlOVChHTGVudW0gdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpCkBAIC0xNTI5LDYgKzE2MjksMTYgQEAgTG9hZEZ1bmN0
aW9uTWFwIEdldExvYWRGdW5jdGlvbnNNYXAoR0xlbnVtIGludGVybmFsRm9ybWF0LCBGb3JtYXQ6
OklEIGFuZ2xlRm9ybWEKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQjhfTE9TU1lfREVDT0RF
X0VUQzJfQU5HTEU6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpCQzFfUkdC
X1VOT1JNX0JMT0NLOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ09NUFJFU1NFRF9SR0I4
X0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFX3RvX0JDMV9SR0JfVU5PUk1fQkxPQ0s7CisgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJP
VUdIX0FMUEhBMV9FVEMyOgogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9y
bWF0KQpAQCAtMTUzOSw2ICsxNjQ5LDE2IEBAIExvYWRGdW5jdGlvbk1hcCBHZXRMb2FkRnVuY3Rp
b25zTWFwKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgRm9ybWF0OjpJRCBhbmdsZUZvcm1hCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfTE9TU1lfREVDT0RF
X0VUQzJfQU5HTEU6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpCQzFfUkdC
QV9VTk9STV9CTE9DSzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENPTVBSRVNTRURfUkdC
OF9QVU5DSFRIUk9VR0hfQUxQSEExX0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFX3RvX0JDMV9SR0JB
X1VOT1JNX0JMT0NLOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQ09N
UFJFU1NFRF9SR0JBOF9FVEMyX0VBQzoKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoIChh
bmdsZUZvcm1hdCkKQEAgLTE1OTcsNiArMTcxNywxNiBAQCBMb2FkRnVuY3Rpb25NYXAgR2V0TG9h
ZEZ1bmN0aW9uc01hcChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEZvcm1hdDo6SUQgYW5nbGVGb3Jt
YQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQor
ICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfTE9TU1lfREVDT0RFX0VUQzJfQU5HTEU6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN3aXRjaCAoYW5nbGVGb3JtYXQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY2FzZSBGb3JtYXQ6OklEOjpCQzFfUkdCX1VOT1JNX1NSR0Jf
QkxPQ0s6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBDT01QUkVTU0VEX1NSR0I4X0xPU1NZ
X0RFQ09ERV9FVEMyX0FOR0xFX3RvX0JDMV9SR0JfVU5PUk1fU1JHQl9CTE9DSzsKKyAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJP
VUdIX0FMUEhBMV9FVEMyOgogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9y
bWF0KQpAQCAtMTYwNyw2ICsxNzM3LDI0IEBAIExvYWRGdW5jdGlvbk1hcCBHZXRMb2FkRnVuY3Rp
b25zTWFwKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgRm9ybWF0OjpJRCBhbmdsZUZvcm1hCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0xPU1NZX0RFQ09E
RV9FVEMyX0FOR0xFOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6QkMxX1JH
QkFfVU5PUk1fU1JHQl9CTE9DSzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENPTVBSRVNT
RURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9MT1NTWV9ERUNPREVfRVRDMl9BTkdMRV90b19C
QzFfUkdCQV9VTk9STV9TUkdCX0JMT0NLOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAg
ICByZXR1cm4gQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFRfdG9fZGVmYXVsdDsK
KyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVDoKKyAg
ICAgICAgICAgIHJldHVybiBDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVF90b19k
ZWZhdWx0OworICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVf
RVhUOgorICAgICAgICAgICAgcmV0dXJuIENPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVf
RVhUX3RvX2RlZmF1bHQ7CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCX1MzVENfRFhU
MV9FWFQ6CisgICAgICAgICAgICByZXR1cm4gQ09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFRf
dG9fZGVmYXVsdDsKICAgICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4OgogICAgICAgICB7
CiAgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQnVmZmVyTlVMTC5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9CdWZm
ZXJOVUxMLmNwcAppbmRleCA3NjZlNzhiYzZiMjk0MzVmMTM1YmI5NDM0N2NjZjhkYTlmZjBlZjc0
Li4xZDM2MmMzNzNiMWQzZmEwZTA1MzE0NDBmOTNiOGM3MWZkY2U0NzAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9CdWZmZXJO
VUxMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbnVsbC9CdWZmZXJOVUxMLmNwcApAQCAtMTAsNTUgKzEwLDkxIEBACiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvbnVsbC9CdWZmZXJOVUxMLmgiCiAKICNpbmNsdWRlICJjb21tb24vZGVi
dWcuaCIKKyNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
YW5nbGV0eXBlcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvQ29udGV4dE5V
TEwuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CiAKLUJ1ZmZlck5VTEw6OkJ1ZmZlck5VTEwoKSA6IEJ1
ZmZlckltcGwoKQorQnVmZmVyTlVMTDo6QnVmZmVyTlVMTChjb25zdCBnbDo6QnVmZmVyU3RhdGUg
JnN0YXRlLCBBbGxvY2F0aW9uVHJhY2tlck5VTEwgKmFsbG9jYXRpb25UcmFja2VyKQorICAgIDog
QnVmZmVySW1wbChzdGF0ZSksIG1BbGxvY2F0aW9uVHJhY2tlcihhbGxvY2F0aW9uVHJhY2tlcikK
IHsKKyAgICBBU1NFUlQobUFsbG9jYXRpb25UcmFja2VyICE9IG51bGxwdHIpOwogfQogCiBCdWZm
ZXJOVUxMOjp+QnVmZmVyTlVMTCgpCiB7CisgICAgYm9vbCBtZW1vcnlSZWxlYXNlUmVzdWx0ID0g
bUFsbG9jYXRpb25UcmFja2VyLT51cGRhdGVNZW1vcnlBbGxvY2F0aW9uKG1EYXRhLnNpemUoKSwg
MCk7CisgICAgQVNTRVJUKG1lbW9yeVJlbGVhc2VSZXN1bHQpOwogfQogCi1nbDo6RXJyb3IgQnVm
ZmVyTlVMTDo6c2V0RGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qg
c2l6ZSwgR0xlbnVtIHVzYWdlKQorZ2w6OkVycm9yIEJ1ZmZlck5VTEw6OnNldERhdGEoQ29udGV4
dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHVzYWdlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICBpZiAoIW1BbGxv
Y2F0aW9uVHJhY2tlci0+dXBkYXRlTWVtb3J5QWxsb2NhdGlvbihtRGF0YS5zaXplKCksIHNpemUp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpPdXRPZk1lbW9yeSgpIDw8ICJVbmFibGUgdG8g
YWxsb2NhdGUgaW50ZXJuYWwgYnVmZmVyIHN0b3JhZ2UuIjsKKyAgICB9CisKKyAgICBtRGF0YS5y
ZXNpemUoc2l6ZSwgMCk7CisgICAgaWYgKHNpemUgPiAwICYmIGRhdGEgIT0gbnVsbHB0cikKKyAg
ICB7CisgICAgICAgIG1lbWNweShtRGF0YS5kYXRhKCksIGRhdGEsIHNpemUpOworICAgIH0KKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlck5VTEw6OnNldFN1
YkRhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIHNpemVf
dCBvZmZzZXQpCitnbDo6RXJyb3IgQnVmZmVyTlVMTDo6c2V0U3ViRGF0YShDb250ZXh0SW1wbCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0KQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICBpZiAo
c2l6ZSA+IDApCisgICAgeworICAgICAgICBtZW1jcHkobURhdGEuZGF0YSgpICsgb2Zmc2V0LCBk
YXRhLCBzaXplKTsKKyAgICB9CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpF
cnJvciBCdWZmZXJOVUxMOjpjb3B5U3ViRGF0YShCdWZmZXJJbXBsICpzb3VyY2UsCitnbDo6RXJy
b3IgQnVmZmVyTlVMTDo6Y29weVN1YkRhdGEoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySW1wbCAqc291cmNlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIHNvdXJjZU9mZnNldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBkZXN0T2Zmc2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSkKIHsKLSAgICBVTklNUExF
TUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cisg
ICAgQnVmZmVyTlVMTCAqc291cmNlTlVMTCA9IEdldEFzPEJ1ZmZlck5VTEw+KHNvdXJjZSk7Cisg
ICAgaWYgKHNpemUgPiAwKQorICAgIHsKKyAgICAgICAgbWVtY3B5KG1EYXRhLmRhdGEoKSArIGRl
c3RPZmZzZXQsIHNvdXJjZU5VTEwtPm1EYXRhLmRhdGEoKSArIHNvdXJjZU9mZnNldCwgc2l6ZSk7
CisgICAgfQorICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgQnVmZmVy
TlVMTDo6bWFwKEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikKK2dsOjpFcnJvciBCdWZm
ZXJOVUxMOjptYXAoQ29udGV4dEltcGwgKmNvbnRleHQsIEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAq
Km1hcFB0cikKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgKm1hcFB0ciA9IG1EYXRhLmRhdGEoKTsKKyAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlck5VTEw6Om1hcFJhbmdl
KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzLCBHTHZvaWQg
KiptYXBQdHIpCitnbDo6RXJyb3IgQnVmZmVyTlVMTDo6bWFwUmFuZ2UoQ29udGV4dEltcGwgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgYWNjZXNzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdm9pZCAqKm1hcFB0cikKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgKm1hcFB0ciA9
IG1EYXRhLmRhdGEoKSArIG9mZnNldDsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAot
Z2w6OkVycm9yIEJ1ZmZlck5VTEw6OnVubWFwKEdMYm9vbGVhbiAqcmVzdWx0KQorZ2w6OkVycm9y
IEJ1ZmZlck5VTEw6OnVubWFwKENvbnRleHRJbXBsICpjb250ZXh0LCBHTGJvb2xlYW4gKnJlc3Vs
dCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgKnJlc3VsdCA9IEdMX1RSVUU7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBCdWZmZXJOVUxMOjpnZXRJbmRleFJhbmdlKEdMZW51
bSB0eXBlLApAQCAtNjcsOCArMTAzLDggQEAgZ2w6OkVycm9yIEJ1ZmZlck5VTEw6OmdldEluZGV4
UmFuZ2UoR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2w6OkluZGV4UmFuZ2UgKm91dFJhbmdlKQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAqb3V0
UmFuZ2UgPSBnbDo6Q29tcHV0ZUluZGV4UmFuZ2UodHlwZSwgbURhdGEuZGF0YSgpICsgb2Zmc2V0
LCBjb3VudCwgcHJpbWl0aXZlUmVzdGFydEVuYWJsZWQpOworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0J1ZmZlck5VTEwuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0J1ZmZlck5VTEwu
aAppbmRleCBkYWEyY2U4NTI4YzIxYzQzYmU4YjlkNzQ1Y2Y3MjJhOTk0NzQ1OGNkLi5lMmJkMTQz
ZDZhNDc5MWI4MmYwYWFlYmJjYzg1NjE1YjJjMWUxNzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9CdWZmZXJOVUxMLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQnVm
ZmVyTlVMTC5oCkBAIC0xNSwyNyArMTUsNDcgQEAKIG5hbWVzcGFjZSByeAogewogCitjbGFzcyBB
bGxvY2F0aW9uVHJhY2tlck5VTEw7CisKIGNsYXNzIEJ1ZmZlck5VTEwgOiBwdWJsaWMgQnVmZmVy
SW1wbAogewogICBwdWJsaWM6Ci0gICAgQnVmZmVyTlVMTCgpOworICAgIEJ1ZmZlck5VTEwoY29u
c3QgZ2w6OkJ1ZmZlclN0YXRlICZzdGF0ZSwgQWxsb2NhdGlvblRyYWNrZXJOVUxMICphbGxvY2F0
aW9uVHJhY2tlcik7CiAgICAgfkJ1ZmZlck5VTEwoKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJv
ciBzZXREYXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBH
TGVudW0gdXNhZ2UpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBzZXRTdWJEYXRhKEdMZW51bSB0
YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBzaXplX3Qgb2Zmc2V0KSBvdmVy
cmlkZTsKLSAgICBnbDo6RXJyb3IgY29weVN1YkRhdGEoQnVmZmVySW1wbCAqc291cmNlLAorICAg
IGdsOjpFcnJvciBzZXREYXRhKENvbnRleHRJbXBsICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAq
ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdXNhZ2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRTdWJEYXRh
KENvbnRleHRJbXBsICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY29weVN1YkRhdGEoQ29u
dGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJ
bXBsICpzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIHNvdXJjZU9m
ZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgZGVzdE9mZnNldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKSBvdmVycmlkZTsKLSAgICBn
bDo6RXJyb3IgbWFwKEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikgb3ZlcnJpZGU7Ci0g
ICAgZ2w6OkVycm9yIG1hcFJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgsIEdMYml0
ZmllbGQgYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciB1
bm1hcChHTGJvb2xlYW4gKnJlc3VsdCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIG1hcChDb250
ZXh0SW1wbCAqY29udGV4dEltcGwsIEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikgb3Zl
cnJpZGU7CisgICAgZ2w6OkVycm9yIG1hcFJhbmdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBh
Y2Nlc3MsCisgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqKm1hcFB0cikgb3ZlcnJpZGU7
CisgICAgZ2w6OkVycm9yIHVubWFwKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwgR0xib29sZWFu
ICpyZXN1bHQpIG92ZXJyaWRlOwogCiAgICAgZ2w6OkVycm9yIGdldEluZGV4UmFuZ2UoR0xlbnVt
IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbDo6SW5kZXhSYW5nZSAqb3V0UmFuZ2UpIG92ZXJyaWRlOworCisgIHByaXZh
dGU6CisgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gbURhdGE7CisKKyAgICBBbGxvY2F0aW9uVHJh
Y2tlck5VTEwgKm1BbGxvY2F0aW9uVHJhY2tlcjsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSByeApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L251bGwvQ29tcGlsZXJOVUxMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9udWxsL0NvbXBpbGVyTlVMTC5jcHAKaW5kZXggNTQ3ZjRjNGUxMWNmNWY1
OGJiMjY3MDQyZWMyYmMyZWQzMzkwYzQ5Yy4uODAyYzVjZDE4YjY0ODU3NGQ3OGZkNjBlMGVjOTlj
NzZjMmQ5ZGQzMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL251bGwvQ29tcGlsZXJOVUxMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db21waWxlck5VTEwuY3BwCkBAIC0y
NCwxNCArMjQsMTIgQEAgQ29tcGlsZXJOVUxMOjp+Q29tcGlsZXJOVUxMKCkKIAogZ2w6OkVycm9y
IENvbXBpbGVyTlVMTDo6cmVsZWFzZSgpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwogfQogCiBTaFNoYWRlck91dHB1dCBDb21waWxlck5VTEw6OmdldFRyYW5zbGF0b3JP
dXRwdXRUeXBlKCkgY29uc3QKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIFNo
U2hhZGVyT3V0cHV0KCk7CisgICAgcmV0dXJuIFNIX0VTU0xfT1VUUFVUOwogfQogCiB9ICAvLyBu
YW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9udWxsL0NvbnRleHROVUxMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0NvbnRleHROVUxMLmNwcAppbmRleCAyZjRi
Y2I0ZjZjYzljN2VhNTBmOGIyMmMyYzRmMjg5OWNkMTk2Mjk2Li5kNmZiYTZmY2U5ZTZiMzE3YmQ2
NGY3MjkyN2JiNGE1ZjE0N2ZjMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db250ZXh0TlVMTC5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQ29udGV4dE5VTEwu
Y3BwCkBAIC0xMSwxMSArMTEsNjYgQEAKIAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogCisj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVsbC9CdWZmZXJOVUxMLmgiCisjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db21waWxlck5VTEwuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9udWxsL0Rpc3BsYXlOVUxMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvbnVsbC9GZW5jZU5WTlVMTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwv
RmVuY2VTeW5jTlVMTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvRnJhbWVi
dWZmZXJOVUxMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVsbC9JbWFnZU5VTEwu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9udWxsL1BhdGhOVUxMLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Qcm9ncmFtTlVMTC5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL251bGwvUXVlcnlOVUxMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvbnVsbC9SZW5kZXJidWZmZXJOVUxMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
bnVsbC9TYW1wbGVyTlVMTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvU2hh
ZGVyTlVMTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvVGV4dHVyZU5VTEwu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9udWxsL1RyYW5zZm9ybUZlZWRiYWNrTlVM
TC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvVmVydGV4QXJyYXlOVUxMLmgi
CisKIG5hbWVzcGFjZSByeAogewogCi1Db250ZXh0TlVMTDo6Q29udGV4dE5VTEwoY29uc3QgZ2w6
OkNvbnRleHRTdGF0ZSAmc3RhdGUpIDogQ29udGV4dEltcGwoc3RhdGUpCitBbGxvY2F0aW9uVHJh
Y2tlck5VTEw6OkFsbG9jYXRpb25UcmFja2VyTlVMTChzaXplX3QgbWF4VG90YWxBbGxvY2F0aW9u
U2l6ZSkKKyAgICA6IG1BbGxvY2F0ZWRCeXRlcygwKSwgbU1heEJ5dGVzKG1heFRvdGFsQWxsb2Nh
dGlvblNpemUpCit7Cit9CisKK0FsbG9jYXRpb25UcmFja2VyTlVMTDo6fkFsbG9jYXRpb25UcmFj
a2VyTlVMTCgpCit7CisgICAgLy8gQVNTRVJUIHRoYXQgYWxsIG9iamVjdHMgd2l0aCB0aGUgTlVM
TCByZW5kZXJlciBjbGVhbiB1cCBhZnRlciB0aGVtc2VsdmVzCisgICAgQVNTRVJUKG1BbGxvY2F0
ZWRCeXRlcyA9PSAwKTsKK30KKworYm9vbCBBbGxvY2F0aW9uVHJhY2tlck5VTEw6OnVwZGF0ZU1l
bW9yeUFsbG9jYXRpb24oc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQogeworICAgIEFT
U0VSVChtQWxsb2NhdGVkQnl0ZXMgPj0gb2xkU2l6ZSk7CisKKyAgICBzaXplX3Qgc2l6ZUFmdGVy
UmVsZWFzZSAgICA9IG1BbGxvY2F0ZWRCeXRlcyAtIG9sZFNpemU7CisgICAgc2l6ZV90IHNpemVB
ZnRlclJlYWxsb2NhdGUgPSBzaXplQWZ0ZXJSZWxlYXNlICsgbmV3U2l6ZTsKKyAgICBpZiAoc2l6
ZUFmdGVyUmVhbGxvY2F0ZSA8IHNpemVBZnRlclJlbGVhc2UgfHwgc2l6ZUFmdGVyUmVhbGxvY2F0
ZSA+IG1NYXhCeXRlcykKKyAgICB7CisgICAgICAgIC8vIE92ZXJmbG93IG9yIGFsbG9jYXRpb24g
d291bGQgYmUgdG9vIGxhcmdlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBt
QWxsb2NhdGVkQnl0ZXMgPSBzaXplQWZ0ZXJSZWFsbG9jYXRlOworICAgIHJldHVybiB0cnVlOwor
fQorCitDb250ZXh0TlVMTDo6Q29udGV4dE5VTEwoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3Rh
dGUsIEFsbG9jYXRpb25UcmFja2VyTlVMTCAqYWxsb2NhdGlvblRyYWNrZXIpCisgICAgOiBDb250
ZXh0SW1wbChzdGF0ZSksIG1BbGxvY2F0aW9uVHJhY2tlcihhbGxvY2F0aW9uVHJhY2tlcikKK3sK
KyAgICBBU1NFUlQobUFsbG9jYXRpb25UcmFja2VyICE9IG51bGxwdHIpOworCisgICAgY29uc3Qg
Z2w6OlZlcnNpb24gbWF4Q2xpZW50VmVyc2lvbigzLCAxKTsKKyAgICBtQ2FwcyAgICAgICAgPSBH
ZW5lcmF0ZU1pbmltdW1DYXBzKG1heENsaWVudFZlcnNpb24pOworCisgICAgbUV4dGVuc2lvbnMg
ID0gZ2w6OkV4dGVuc2lvbnMoKTsKKyAgICBtRXh0ZW5zaW9ucy5jb3B5VGV4dHVyZSAgICAgICAg
ICAgPSB0cnVlOworICAgIG1FeHRlbnNpb25zLmNvcHlDb21wcmVzc2VkVGV4dHVyZSA9IHRydWU7
CisKKyAgICBtVGV4dHVyZUNhcHMgPSBHZW5lcmF0ZU1pbmltdW1UZXh0dXJlQ2Fwc01hcChtYXhD
bGllbnRWZXJzaW9uLCBtRXh0ZW5zaW9ucyk7CiB9CiAKIENvbnRleHROVUxMOjp+Q29udGV4dE5V
TEwoKQpAQCAtMjQsMjYgKzc5LDIyIEBAIENvbnRleHROVUxMOjp+Q29udGV4dE5VTEwoKQogCiBn
bDo6RXJyb3IgQ29udGV4dE5VTEw6OmluaXRpYWxpemUoKQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIENvbnRleHROVUxMOjpmbHVzaCgpCiB7
Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgQ29u
dGV4dE5VTEw6OmZpbmlzaCgpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OwogfQogCiBnbDo6RXJyb3IgQ29udGV4dE5VTEw6OmRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdM
aW50IGZpcnN0LCBHTHNpemVpIGNvdW50KQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIENvbnRleHROVUxMOjpkcmF3QXJyYXlzSW5zdGFuY2Vk
KEdMZW51bSBtb2RlLApAQCAtNTEsOCArMTAyLDcgQEAgZ2w6OkVycm9yIENvbnRleHROVUxMOjpk
cmF3QXJyYXlzSW5zdGFuY2VkKEdMZW51bSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZUNvdW50KQogewotICAgIFVOSU1Q
TEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIENvbnRleHROVUxMOjpk
cmF3RWxlbWVudHMoR0xlbnVtIG1vZGUsCkBAIC02MSw4ICsxMTEsNyBAQCBnbDo6RXJyb3IgQ29u
dGV4dE5VTEw6OmRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKQogewot
ICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIENvbnRl
eHROVUxMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCkBAIC03Miw4ICsxMjEs
NyBAQCBnbDo6RXJyb3IgQ29udGV4dE5VTEw6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHTGVudW0g
bW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgaW5zdGFuY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpCiB7Ci0gICAgVU5JTVBMRU1FTlRF
RCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgQ29udGV4dE5VTEw6OmRyYXdSYW5n
ZUVsZW1lbnRzKEdMZW51bSBtb2RlLApAQCAtODQsOTIgKzEzMiwyNDAgQEAgZ2w6OkVycm9yIENv
bnRleHROVUxMOjpkcmF3UmFuZ2VFbGVtZW50cyhHTGVudW0gbW9kZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAm
aW5kZXhSYW5nZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisK
K2dsOjpFcnJvciBDb250ZXh0TlVMTDo6ZHJhd0FycmF5c0luZGlyZWN0KEdMZW51bSBtb2RlLCBj
b25zdCBHTHZvaWQgKmluZGlyZWN0KQoreworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQor
CitnbDo6RXJyb3IgQ29udGV4dE5VTEw6OmRyYXdFbGVtZW50c0luZGlyZWN0KEdMZW51bSBtb2Rl
LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpcmVjdCkKK3sKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKK30KKwordm9pZCBDb250ZXh0TlVMTDo6c3RlbmNpbEZpbGxQYXRoKGNvbnN0
IGdsOjpQYXRoICpwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKQoreworfQorCit2
b2lkIENvbnRleHROVUxMOjpzdGVuY2lsU3Ryb2tlUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwg
R0xpbnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzaykKK3sKK30KKwordm9pZCBDb250ZXh0TlVMTDo6
Y292ZXJGaWxsUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkKK3sK
K30KKwordm9pZCBDb250ZXh0TlVMTDo6Y292ZXJTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpw
YXRoLCBHTGVudW0gY292ZXJNb2RlKQoreworfQorCit2b2lkIENvbnRleHROVUxMOjpzdGVuY2ls
VGhlbkNvdmVyRmlsbFBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCit7Cit9CisK
K3ZvaWQgQ29udGV4dE5VTEw6OnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoKGNvbnN0IGdsOjpQ
YXRoICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgcmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gY292ZXJNb2RlKQoreworfQorCit2b2lkIENvbnRleHROVUxMOjpjb3Zl
ckZpbGxQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5z
Zm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKK30KKwordm9pZCBDb250ZXh0TlVMTDo6Y292
ZXJTdHJva2VQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRo
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292
ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKK30KKwordm9pZCBDb250ZXh0
TlVMTDo6c3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRo
ICo+ICZwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQoreworfQorCit2b2lk
IENvbnRleHROVUxMOjpzdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3Rv
cjxnbDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFs
dWVzKQoreworfQorCit2b2lkIENvbnRleHROVUxMOjpzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJ
bnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1v
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcykKK3sKK30KKwordm9pZCBDb250ZXh0TlVMTDo6c3RlbmNpbFRoZW5Db3Zl
clN0cm9rZVBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9y
bVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCit7Cit9CisKK0dMZW51bSBDb250
ZXh0TlVMTDo6Z2V0UmVzZXRTdGF0dXMoKQoreworICAgIHJldHVybiBHTF9OT19FUlJPUjsKK30K
Kworc3RkOjpzdHJpbmcgQ29udGV4dE5VTEw6OmdldFZlbmRvclN0cmluZygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICJOVUxMIjsKK30KKworc3RkOjpzdHJpbmcgQ29udGV4dE5VTEw6OmdldFJlbmRl
cmVyRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIHJldHVybiAiTlVMTCI7Cit9CisKK3ZvaWQg
Q29udGV4dE5VTEw6Omluc2VydEV2ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFy
ICptYXJrZXIpCit7Cit9CisKK3ZvaWQgQ29udGV4dE5VTEw6OnB1c2hHcm91cE1hcmtlcihHTHNp
emVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKQoreworfQorCit2b2lkIENvbnRleHROVUxM
Ojpwb3BHcm91cE1hcmtlcigpCit7Cit9CisKK3ZvaWQgQ29udGV4dE5VTEw6OnN5bmNTdGF0ZShj
b25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQoreworfQorCitHTGludCBDb250
ZXh0TlVMTDo6Z2V0R1BVRGlzam9pbnQoKQoreworICAgIHJldHVybiAwOworfQorCitHTGludDY0
IENvbnRleHROVUxMOjpnZXRUaW1lc3RhbXAoKQoreworICAgIHJldHVybiAwOworfQorCit2b2lk
IENvbnRleHROVUxMOjpvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEp
Cit7Cit9CisKK2NvbnN0IGdsOjpDYXBzICZDb250ZXh0TlVMTDo6Z2V0TmF0aXZlQ2FwcygpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1DYXBzOworfQorCitjb25zdCBnbDo6VGV4dHVyZUNhcHNNYXAg
JkNvbnRleHROVUxMOjpnZXROYXRpdmVUZXh0dXJlQ2FwcygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1UZXh0dXJlQ2FwczsKK30KKworY29uc3QgZ2w6OkV4dGVuc2lvbnMgJkNvbnRleHROVUxMOjpn
ZXROYXRpdmVFeHRlbnNpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUV4dGVuc2lvbnM7Cit9
CisKK2NvbnN0IGdsOjpMaW1pdGF0aW9ucyAmQ29udGV4dE5VTEw6OmdldE5hdGl2ZUxpbWl0YXRp
b25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUxpbWl0YXRpb25zOwogfQogCiBDb21waWxlcklt
cGwgKkNvbnRleHROVUxMOjpjcmVhdGVDb21waWxlcigpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb21waWxlckltcGwgKj4oMCk7CisgICAgcmV0dXJu
IG5ldyBDb21waWxlck5VTEwoKTsKIH0KIAogU2hhZGVySW1wbCAqQ29udGV4dE5VTEw6OmNyZWF0
ZVNoYWRlcihjb25zdCBnbDo6U2hhZGVyU3RhdGUgJmRhdGEpCiB7Ci0gICAgVU5JTVBMRU1FTlRF
RCgpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTaGFkZXJJbXBsICo+KDApOworICAgIHJldHVy
biBuZXcgU2hhZGVyTlVMTChkYXRhKTsKIH0KIAogUHJvZ3JhbUltcGwgKkNvbnRleHROVUxMOjpj
cmVhdGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJmRhdGEpCiB7Ci0gICAgVU5JTVBM
RU1FTlRFRCgpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm9ncmFtSW1wbCAqPigwKTsKKyAg
ICByZXR1cm4gbmV3IFByb2dyYW1OVUxMKGRhdGEpOwogfQogCiBGcmFtZWJ1ZmZlckltcGwgKkNv
bnRleHROVUxMOjpjcmVhdGVGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAm
ZGF0YSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEZy
YW1lYnVmZmVySW1wbCAqPigwKTsKKyAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyTlVMTChkYXRh
KTsKIH0KIAogVGV4dHVyZUltcGwgKkNvbnRleHROVUxMOjpjcmVhdGVUZXh0dXJlKGNvbnN0IGds
OjpUZXh0dXJlU3RhdGUgJnN0YXRlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VGV4dHVyZUltcGwgKj4oMCk7CisgICAgcmV0dXJuIG5ldyBUZXh0dXJl
TlVMTChzdGF0ZSk7CiB9CiAKIFJlbmRlcmJ1ZmZlckltcGwgKkNvbnRleHROVUxMOjpjcmVhdGVS
ZW5kZXJidWZmZXIoKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8UmVuZGVyYnVmZmVySW1wbCAqPigwKTsKKyAgICByZXR1cm4gbmV3IFJlbmRlcmJ1ZmZl
ck5VTEwoKTsKIH0KIAotQnVmZmVySW1wbCAqQ29udGV4dE5VTEw6OmNyZWF0ZUJ1ZmZlcigpCitC
dWZmZXJJbXBsICpDb250ZXh0TlVMTDo6Y3JlYXRlQnVmZmVyKGNvbnN0IGdsOjpCdWZmZXJTdGF0
ZSAmc3RhdGUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxCdWZmZXJJbXBsICo+KDApOworICAgIHJldHVybiBuZXcgQnVmZmVyTlVMTChzdGF0ZSwgbUFs
bG9jYXRpb25UcmFja2VyKTsKIH0KIAogVmVydGV4QXJyYXlJbXBsICpDb250ZXh0TlVMTDo6Y3Jl
YXRlVmVydGV4QXJyYXkoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJmRhdGEpCiB7Ci0gICAg
VU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxWZXJ0ZXhBcnJheUltcGwg
Kj4oMCk7CisgICAgcmV0dXJuIG5ldyBWZXJ0ZXhBcnJheU5VTEwoZGF0YSk7CiB9CiAKIFF1ZXJ5
SW1wbCAqQ29udGV4dE5VTEw6OmNyZWF0ZVF1ZXJ5KEdMZW51bSB0eXBlKQogewotICAgIFVOSU1Q
TEVNRU5URUQoKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UXVlcnlJbXBsICo+KDApOworICAg
IHJldHVybiBuZXcgUXVlcnlOVUxMKHR5cGUpOwogfQogCiBGZW5jZU5WSW1wbCAqQ29udGV4dE5V
TEw6OmNyZWF0ZUZlbmNlTlYoKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8RmVuY2VOVkltcGwgKj4oMCk7CisgICAgcmV0dXJuIG5ldyBGZW5jZU5WTlVM
TCgpOwogfQogCiBGZW5jZVN5bmNJbXBsICpDb250ZXh0TlVMTDo6Y3JlYXRlRmVuY2VTeW5jKCkK
IHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEZlbmNlU3lu
Y0ltcGwgKj4oMCk7CisgICAgcmV0dXJuIG5ldyBGZW5jZVN5bmNOVUxMKCk7CiB9CiAKIFRyYW5z
Zm9ybUZlZWRiYWNrSW1wbCAqQ29udGV4dE5VTEw6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKGNv
bnN0IGdsOjpUcmFuc2Zvcm1GZWVkYmFja1N0YXRlICZzdGF0ZSkKIHsKLSAgICBVTklNUExFTUVO
VEVEKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFRyYW5zZm9ybUZlZWRiYWNrSW1wbCAqPigw
KTsKKyAgICByZXR1cm4gbmV3IFRyYW5zZm9ybUZlZWRiYWNrTlVMTChzdGF0ZSk7CiB9CiAKIFNh
bXBsZXJJbXBsICpDb250ZXh0TlVMTDo6Y3JlYXRlU2FtcGxlcigpCiB7Ci0gICAgVU5JTVBMRU1F
TlRFRCgpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTYW1wbGVySW1wbCAqPigwKTsKKyAgICBy
ZXR1cm4gbmV3IFNhbXBsZXJOVUxMKCk7CiB9CiAKIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IENv
bnRleHROVUxMOjpjcmVhdGVQYXRocyhHTHNpemVpIHJhbmdlKQogewotICAgIFVOSU1QTEVNRU5U
RUQoKTsKLSAgICByZXR1cm4gc3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4oKTsKKyAgICBzdGQ6OnZl
Y3RvcjxQYXRoSW1wbCAqPiByZXN1bHQocmFuZ2UpOworICAgIGZvciAoR0xzaXplaSBpZHggPSAw
OyBpZHggPCByYW5nZTsgaWR4KyspCisgICAgeworICAgICAgICByZXN1bHRbaWR4XSA9IG5ldyBQ
YXRoTlVMTCgpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitnbDo6RXJyb3IgQ29u
dGV4dE5VTEw6OmRpc3BhdGNoQ29tcHV0ZShHTHVpbnQgbnVtR3JvdXBzWCwgR0x1aW50IG51bUdy
b3Vwc1ksIEdMdWludCBudW1Hcm91cHNaKQoreworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
fQogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0NvbnRleHROVUxMLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db250ZXh0TlVMTC5oCmlu
ZGV4IDNmYzQwYjYyZTlkMDA4N2Y5ZjRmMmQ1MDNkNTM0NzE3OTI3ZTQxMWIuLjE5ZGVkMThjMzI0
NWNhMTA4OGI2MzM3ZDg2N2ZiOWNkNTI2YTJhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0NvbnRleHROVUxMLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQ29udGV4
dE5VTEwuaApAQCAtMTUsMTAgKzE1LDI1IEBACiBuYW1lc3BhY2UgcngKIHsKIAorY2xhc3MgQWxs
b2NhdGlvblRyYWNrZXJOVUxMIDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAg
ICBleHBsaWNpdCBBbGxvY2F0aW9uVHJhY2tlck5VTEwoc2l6ZV90IG1heFRvdGFsQWxsb2NhdGlv
blNpemUpOworICAgIH5BbGxvY2F0aW9uVHJhY2tlck5VTEwoKTsKKworICAgIC8vIENoZWNrIGlm
IGl0IGlzIHBvc3NpYmxlIHRvIGNoYW5nZSBhbiBhbGxvY2F0aW9uIGZyb20gb2xkU2l6ZSB0byBu
ZXdTaXplLiAgSWYgaXQgaXMgcG9zc2libGUsCisgICAgLy8gdGhlIGFsbG9jYXRpb24gaXMgcmVn
aXN0ZXJlZCBhbmQgdHJ1ZSBpcyByZXR1cm5lZCBlbHNlIGZhbHNlIGlzIHJldHVybmVkLgorICAg
IGJvb2wgdXBkYXRlTWVtb3J5QWxsb2NhdGlvbihzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1Np
emUpOworCisgIHByaXZhdGU6CisgICAgc2l6ZV90IG1BbGxvY2F0ZWRCeXRlczsKKyAgICBjb25z
dCBzaXplX3QgbU1heEJ5dGVzOworfTsKKwogY2xhc3MgQ29udGV4dE5VTEwgOiBwdWJsaWMgQ29u
dGV4dEltcGwKIHsKICAgcHVibGljOgotICAgIENvbnRleHROVUxMKGNvbnN0IGdsOjpDb250ZXh0
U3RhdGUgJnN0YXRlKTsKKyAgICBDb250ZXh0TlVMTChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZz
dGF0ZSwgQWxsb2NhdGlvblRyYWNrZXJOVUxMICphbGxvY2F0aW9uVHJhY2tlcik7CiAgICAgfkNv
bnRleHROVUxMKCkgb3ZlcnJpZGU7CiAKICAgICBnbDo6RXJyb3IgaW5pdGlhbGl6ZSgpIG92ZXJy
aWRlOwpAQCAtNTIsOCArNjcsODIgQEAgY2xhc3MgQ29udGV4dE5VTEwgOiBwdWJsaWMgQ29udGV4
dEltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFu
Z2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBkcmF3QXJyYXlzSW5kaXJlY3QoR0xlbnVtIG1v
ZGUsIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBkcmF3
RWxlbWVudHNJbmRpcmVjdChHTGVudW0gbW9kZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAq
aW5kaXJlY3QpIG92ZXJyaWRlOwogCiAgICAgLy8gQ0hST01JVU1fcGF0aF9yZW5kZXJpbmcgcGF0
aCBkcmF3aW5nIG1ldGhvZHMuCisgICAgdm9pZCBzdGVuY2lsRmlsbFBhdGgoY29uc3QgZ2w6OlBh
dGggKnBhdGgsIEdMZW51bSBmaWxsTW9kZSwgR0x1aW50IG1hc2spIG92ZXJyaWRlOworICAgIHZv
aWQgc3RlbmNpbFN0cm9rZVBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdMaW50IHJlZmVyZW5j
ZSwgR0x1aW50IG1hc2spIG92ZXJyaWRlOworICAgIHZvaWQgY292ZXJGaWxsUGF0aChjb25zdCBn
bDo6UGF0aCAqcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBjb3Zl
clN0cm9rZVBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsIEdMZW51bSBjb3Zlck1vZGUpIG92ZXJy
aWRlOworICAgIHZvaWQgc3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpQYXRoICpw
YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJNb2RlKSBvdmVycmlkZTsKKwor
ICAgIHZvaWQgc3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpIG92ZXJyaWRlOwor
CisgICAgdm9pZCBjb3ZlckZpbGxQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQ
YXRoICo+ICZwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNv
dmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9y
bVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRy
YW5zZm9ybVZhbHVlcykgb3ZlcnJpZGU7CisgICAgdm9pZCBjb3ZlclN0cm9rZVBhdGhJbnN0YW5j
ZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKSBvdmVycmlkZTsK
KyAgICB2b2lkIHN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6
UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNr
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5z
Zm9ybVZhbHVlcykgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNl
ZChjb25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3Rv
cjxnbDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVz
KSBvdmVycmlkZTsKKyAgICB2b2lkIHN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2Vk
KGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCByZWZlcmVuY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zv
cm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKSBvdmVycmlkZTsKKworICAgIC8vIERldmljZSBs
b3NzCisgICAgR0xlbnVtIGdldFJlc2V0U3RhdHVzKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBWZW5k
b3IgYW5kIGRlc2NyaXB0aW9uIHN0cmluZ3MuCisgICAgc3RkOjpzdHJpbmcgZ2V0VmVuZG9yU3Ry
aW5nKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgc3RkOjpzdHJpbmcgZ2V0UmVuZGVyZXJEZXNjcmlw
dGlvbigpIGNvbnN0IG92ZXJyaWRlOworCisgICAgLy8gRGVidWcgbWFya2Vycy4KKyAgICB2b2lk
IGluc2VydEV2ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpIG92
ZXJyaWRlOworICAgIHZvaWQgcHVzaEdyb3VwTWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBj
aGFyICptYXJrZXIpIG92ZXJyaWRlOworICAgIHZvaWQgcG9wR3JvdXBNYXJrZXIoKSBvdmVycmlk
ZTsKKworICAgIC8vIFN0YXRlIHN5bmMgd2l0aCBkaXJ0eSBiaXRzLgorICAgIHZvaWQgc3luY1N0
YXRlKGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpIG92ZXJyaWRlOworCisg
ICAgLy8gRGlzam9pbnQgdGltZXIgcXVlcmllcworICAgIEdMaW50IGdldEdQVURpc2pvaW50KCkg
b3ZlcnJpZGU7CisgICAgR0xpbnQ2NCBnZXRUaW1lc3RhbXAoKSBvdmVycmlkZTsKKworICAgIC8v
IENvbnRleHQgc3dpdGNoaW5nCisgICAgdm9pZCBvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250
ZXh0U3RhdGUgJmRhdGEpIG92ZXJyaWRlOworCisgICAgLy8gTmF0aXZlIGNhcGFiaWxpdGllcywg
dW5tb2RpZmllZCBieSBnbDo6Q29udGV4dC4KKyAgICBjb25zdCBnbDo6Q2FwcyAmZ2V0TmF0aXZl
Q2FwcygpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IGdsOjpUZXh0dXJlQ2Fwc01hcCAmZ2V0
TmF0aXZlVGV4dHVyZUNhcHMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBnbDo6RXh0ZW5z
aW9ucyAmZ2V0TmF0aXZlRXh0ZW5zaW9ucygpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IGds
OjpMaW1pdGF0aW9ucyAmZ2V0TmF0aXZlTGltaXRhdGlvbnMoKSBjb25zdCBvdmVycmlkZTsKIAog
ICAgIC8vIFNoYWRlciBjcmVhdGlvbgogICAgIENvbXBpbGVySW1wbCAqY3JlYXRlQ29tcGlsZXIo
KSBvdmVycmlkZTsKQEAgLTcwLDcgKzE1OSw3IEBAIGNsYXNzIENvbnRleHROVUxMIDogcHVibGlj
IENvbnRleHRJbXBsCiAgICAgUmVuZGVyYnVmZmVySW1wbCAqY3JlYXRlUmVuZGVyYnVmZmVyKCkg
b3ZlcnJpZGU7CiAKICAgICAvLyBCdWZmZXIgY3JlYXRpb24KLSAgICBCdWZmZXJJbXBsICpjcmVh
dGVCdWZmZXIoKSBvdmVycmlkZTsKKyAgICBCdWZmZXJJbXBsICpjcmVhdGVCdWZmZXIoY29uc3Qg
Z2w6OkJ1ZmZlclN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBWZXJ0ZXggQXJyYXkg
Y3JlYXRpb24KICAgICBWZXJ0ZXhBcnJheUltcGwgKmNyZWF0ZVZlcnRleEFycmF5KGNvbnN0IGds
OjpWZXJ0ZXhBcnJheVN0YXRlICZkYXRhKSBvdmVycmlkZTsKQEAgLTg4LDYgKzE3NywxNiBAQCBj
bGFzcyBDb250ZXh0TlVMTCA6IHB1YmxpYyBDb250ZXh0SW1wbAogICAgIFNhbXBsZXJJbXBsICpj
cmVhdGVTYW1wbGVyKCkgb3ZlcnJpZGU7CiAKICAgICBzdGQ6OnZlY3RvcjxQYXRoSW1wbCAqPiBj
cmVhdGVQYXRocyhHTHNpemVpIHJhbmdlKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBkaXNw
YXRjaENvbXB1dGUoR0x1aW50IG51bUdyb3Vwc1gsIEdMdWludCBudW1Hcm91cHNZLCBHTHVpbnQg
bnVtR3JvdXBzWikgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICBnbDo6Q2FwcyBtQ2FwczsK
KyAgICBnbDo6VGV4dHVyZUNhcHNNYXAgbVRleHR1cmVDYXBzOworICAgIGdsOjpFeHRlbnNpb25z
IG1FeHRlbnNpb25zOworICAgIGdsOjpMaW1pdGF0aW9ucyBtTGltaXRhdGlvbnM7CisKKyAgICBB
bGxvY2F0aW9uVHJhY2tlck5VTEwgKm1BbGxvY2F0aW9uVHJhY2tlcjsKIH07CiAKIH0gIC8vIG5h
bWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL251bGwvRGV2aWNlTlVMTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9EZXZpY2VOVUxMLmNwcAppbmRleCA0ODkzZjk0
NjYyMzAzNTRjNmU0ODFhNjBiMmQ1MTg5ZDViYjZmYWU2Li40NzM1ZWVhNDFhYzgyM2VkNWNkNzhk
MDE3MzhmNjJmNjc5Y2M2NzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9EZXZpY2VOVUxMLmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9EZXZpY2VOVUxMLmNwcApA
QCAtMzAsMTkgKzMwLDE2IEBAIGVnbDo6RXJyb3IgRGV2aWNlTlVMTDo6Z2V0RGV2aWNlKHZvaWQg
KipvdXRWYWx1ZSkKIAogRUdMaW50IERldmljZU5VTEw6OmdldFR5cGUoKQogewotICAgIFVOSU1Q
TEVNRU5URUQoKTsKLSAgICByZXR1cm4gRUdMaW50KCk7CisgICAgcmV0dXJuIDA7CiB9CiAKIHZv
aWQgRGV2aWNlTlVMTDo6Z2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGV2aWNlRXh0ZW5zaW9ucyAq
b3V0RXh0ZW5zaW9ucykgY29uc3QKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKIGJvb2wg
RGV2aWNlTlVMTDo6ZGV2aWNlRXh0ZXJuYWxseVNvdXJjZWQoKQogewotICAgIFVOSU1QTEVNRU5U
RUQoKTsKLSAgICByZXR1cm4gYm9vbCgpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogfSAgLy8g
bmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbnVsbC9EaXNwbGF5TlVMTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9EaXNwbGF5TlVMTC5jcHAKaW5kZXggYmRm
NmQ0YTE0NTA2YTQyMGY0ZmRmMjU0OWM1NzMyY2U2NjZhMzgwMC4uMWNhYTdjODkyYWI3ODQwNGI2
NWJkMDRkZDI5ODdlZWViM2I3YzliNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRGlzcGxheU5VTEwuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0Rpc3BsYXlOVUxM
LmNwcApAQCAtMTEsMTAgKzExLDE1IEBACiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKIAor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvQ29udGV4dE5VTEwuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9udWxsL0RldmljZU5VTEwuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9udWxsL0ltYWdlTlVMTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L251bGwvU3VyZmFjZU5VTEwuaCIKKwogbmFtZXNwYWNlIHJ4CiB7CiAKLURpc3BsYXlOVUxMOjpE
aXNwbGF5TlVMTCgpIDogRGlzcGxheUltcGwoKQorRGlzcGxheU5VTEw6OkRpc3BsYXlOVUxMKGNv
bnN0IGVnbDo6RGlzcGxheVN0YXRlICZzdGF0ZSkgOiBEaXNwbGF5SW1wbChzdGF0ZSksIG1EZXZp
Y2UobnVsbHB0cikKIHsKIH0KIApAQCAtMjQsMTI2ICsyOSwxNTEgQEAgRGlzcGxheU5VTEw6On5E
aXNwbGF5TlVMTCgpCiAKIGVnbDo6RXJyb3IgRGlzcGxheU5VTEw6OmluaXRpYWxpemUoZWdsOjpE
aXNwbGF5ICpkaXNwbGF5KQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZWds
OjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7CisgICAgbURldmljZSA9IG5ldyBEZXZpY2VOVUxMKCk7
CisKKyAgICBjb25zdGV4cHIgc2l6ZV90IGtNYXhUb3RhbEFsbG9jYXRpb25TaXplID0gMSA8PCAy
ODsgIC8vIDI1Nk1CCisgICAgbUFsbG9jYXRpb25UcmFja2VyLnJlc2V0KG5ldyBBbGxvY2F0aW9u
VHJhY2tlck5VTEwoa01heFRvdGFsQWxsb2NhdGlvblNpemUpKTsKKworICAgIHJldHVybiBlZ2w6
Ok5vRXJyb3IoKTsKIH0KIAogdm9pZCBEaXNwbGF5TlVMTDo6dGVybWluYXRlKCkKIHsKLSAgICBV
TklNUExFTUVOVEVEKCk7CisgICAgbUFsbG9jYXRpb25UcmFja2VyLnJlc2V0KCk7CisgICAgU2Fm
ZURlbGV0ZShtRGV2aWNlKTsKIH0KIAogZWdsOjpFcnJvciBEaXNwbGF5TlVMTDo6bWFrZUN1cnJl
bnQoZWdsOjpTdXJmYWNlICpkcmF3U3VyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZhY2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCkKIHsKLSAgICBVTklNUExFTUVO
VEVEKCk7Ci0gICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworICAgIHJldHVy
biBlZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZWdsOjpDb25maWdTZXQgRGlzcGxheU5VTEw6OmdlbmVy
YXRlQ29uZmlncygpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBlZ2w6OkNv
bmZpZ1NldCgpOworICAgIGVnbDo6Q29uZmlnIGNvbmZpZzsKKyAgICBjb25maWcucmVuZGVyVGFy
Z2V0Rm9ybWF0ICAgID0gR0xfUkdCQTg7CisgICAgY29uZmlnLmRlcHRoU3RlbmNpbEZvcm1hdCAg
ICA9IEdMX0RFUFRIMjRfU1RFTkNJTDg7CisgICAgY29uZmlnLmJ1ZmZlclNpemUgICAgICAgICAg
ICA9IDMyOworICAgIGNvbmZpZy5yZWRTaXplICAgICAgICAgICAgICAgPSA4OworICAgIGNvbmZp
Zy5ncmVlblNpemUgICAgICAgICAgICAgPSA4OworICAgIGNvbmZpZy5ibHVlU2l6ZSAgICAgICAg
ICAgICAgPSA4OworICAgIGNvbmZpZy5hbHBoYVNpemUgICAgICAgICAgICAgPSA4OworICAgIGNv
bmZpZy5hbHBoYU1hc2tTaXplICAgICAgICAgPSAwOworICAgIGNvbmZpZy5iaW5kVG9UZXh0dXJl
UkdCICAgICAgPSBFR0xfVFJVRTsKKyAgICBjb25maWcuYmluZFRvVGV4dHVyZVJHQkEgICAgID0g
RUdMX1RSVUU7CisgICAgY29uZmlnLmNvbG9yQnVmZmVyVHlwZSAgICAgICA9IEVHTF9SR0JfQlVG
RkVSOworICAgIGNvbmZpZy5jb25maWdDYXZlYXQgICAgICAgICAgPSBFR0xfTk9ORTsKKyAgICBj
b25maWcuY29uZm9ybWFudCAgICAgICAgICAgID0gRUdMX09QRU5HTF9FUzJfQklUIHwgRUdMX09Q
RU5HTF9FUzNfQklUOworICAgIGNvbmZpZy5kZXB0aFNpemUgICAgICAgICAgICAgPSAyNDsKKyAg
ICBjb25maWcubGV2ZWwgICAgICAgICAgICAgICAgID0gMDsKKyAgICBjb25maWcubWF0Y2hOYXRp
dmVQaXhtYXAgICAgID0gRUdMX05PTkU7CisgICAgY29uZmlnLm1heFBCdWZmZXJXaWR0aCAgICAg
ICA9IDA7CisgICAgY29uZmlnLm1heFBCdWZmZXJIZWlnaHQgICAgICA9IDA7CisgICAgY29uZmln
Lm1heFBCdWZmZXJQaXhlbHMgICAgICA9IDA7CisgICAgY29uZmlnLm1heFN3YXBJbnRlcnZhbCAg
ICAgICA9IDE7CisgICAgY29uZmlnLm1pblN3YXBJbnRlcnZhbCAgICAgICA9IDE7CisgICAgY29u
ZmlnLm5hdGl2ZVJlbmRlcmFibGUgICAgICA9IEVHTF9UUlVFOworICAgIGNvbmZpZy5uYXRpdmVW
aXN1YWxJRCAgICAgICAgPSAwOworICAgIGNvbmZpZy5uYXRpdmVWaXN1YWxUeXBlICAgICAgPSBF
R0xfTk9ORTsKKyAgICBjb25maWcucmVuZGVyYWJsZVR5cGUgICAgICAgID0gRUdMX09QRU5HTF9F
UzJfQklUIHwgRUdMX09QRU5HTF9FUzNfQklUOworICAgIGNvbmZpZy5zYW1wbGVCdWZmZXJzICAg
ICAgICAgPSAwOworICAgIGNvbmZpZy5zYW1wbGVzICAgICAgICAgICAgICAgPSAwOworICAgIGNv
bmZpZy5zdGVuY2lsU2l6ZSAgICAgICAgICAgPSA4OworICAgIGNvbmZpZy5zdXJmYWNlVHlwZSAg
ICAgICAgICAgPSBFR0xfV0lORE9XX0JJVCB8IEVHTF9QQlVGRkVSX0JJVDsKKyAgICBjb25maWcu
b3B0aW1hbE9yaWVudGF0aW9uICAgID0gMDsKKyAgICBjb25maWcudHJhbnNwYXJlbnRUeXBlICAg
ICAgID0gRUdMX05PTkU7CisgICAgY29uZmlnLnRyYW5zcGFyZW50UmVkVmFsdWUgICA9IDA7Cisg
ICAgY29uZmlnLnRyYW5zcGFyZW50R3JlZW5WYWx1ZSA9IDA7CisgICAgY29uZmlnLnRyYW5zcGFy
ZW50Qmx1ZVZhbHVlICA9IDA7CisKKyAgICBlZ2w6OkNvbmZpZ1NldCBjb25maWdTZXQ7CisgICAg
Y29uZmlnU2V0LmFkZChjb25maWcpOworICAgIHJldHVybiBjb25maWdTZXQ7CiB9CiAKIGJvb2wg
RGlzcGxheU5VTEw6OnRlc3REZXZpY2VMb3N0KCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0g
ICAgcmV0dXJuIGJvb2woKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGVnbDo6RXJyb3IgRGlz
cGxheU5VTEw6OnJlc3RvcmVMb3N0RGV2aWNlKCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0g
ICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworICAgIHJldHVybiBlZ2w6Ok5v
RXJyb3IoKTsKIH0KIAogYm9vbCBEaXNwbGF5TlVMTDo6aXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xO
YXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3QKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0g
ICAgcmV0dXJuIGJvb2woKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RkOjpzdHJpbmcgRGlz
cGxheU5VTEw6OmdldFZlbmRvclN0cmluZygpIGNvbnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgp
OwotICAgIHJldHVybiBzdGQ6OnN0cmluZygpOworICAgIHJldHVybiAiTlVMTCI7CiB9CiAKIGVn
bDo6RXJyb3IgRGlzcGxheU5VTEw6OmdldERldmljZShEZXZpY2VJbXBsICoqZGV2aWNlKQogewot
ICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VT
Uyk7CisgICAgKmRldmljZSA9IG1EZXZpY2U7CisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOwog
fQogCiBlZ2w6OkVycm9yIERpc3BsYXlOVUxMOjp3YWl0Q2xpZW50KCkgY29uc3QKIHsKLSAgICBV
TklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOwor
ICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZWdsOjpFcnJvciBEaXNwbGF5TlVMTDo6
d2FpdE5hdGl2ZShFR0xpbnQgZW5naW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKnJlYWRTdXJmYWNlKSBjb25zdAogewotICAgIFVOSU1Q
TEVNRU5URUQoKTsKLSAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7CisgICAg
cmV0dXJuIGVnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6VmVyc2lvbiBEaXNwbGF5TlVMTDo6Z2V0
TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCkgY29uc3QKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0g
ICAgcmV0dXJuIGdsOjpWZXJzaW9uKCk7CisgICAgcmV0dXJuIGdsOjpWZXJzaW9uKDMsIDIpOwog
fQogCiBTdXJmYWNlSW1wbCAqRGlzcGxheU5VTEw6OmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3Qg
ZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5
cGUgd2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3VyZmFjZUltcGwgKj4oMCk7CisgICAgcmV0dXJu
IG5ldyBTdXJmYWNlTlVMTChzdGF0ZSk7CiB9CiAKIFN1cmZhY2VJbXBsICpEaXNwbGF5TlVMTDo6
Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNv
bmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7Ci0gICAgVU5J
TVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdXJmYWNlSW1wbCAqPigwKTsK
KyAgICByZXR1cm4gbmV3IFN1cmZhY2VOVUxMKHN0YXRlKTsKIH0KIAogU3VyZmFjZUltcGwgKkRp
c3BsYXlOVUxMOjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZh
Y2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGll
bnRCdWZmZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGJ1
ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7Ci0gICAgVU5JTVBMRU1F
TlRFRCgpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdXJmYWNlSW1wbCAqPigwKTsKKyAgICBy
ZXR1cm4gbmV3IFN1cmZhY2VOVUxMKHN0YXRlKTsKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlO
VUxMOjpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6
OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1h
cCAmYXR0cmlicykKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PFN1cmZhY2VJbXBsICo+KDApOworICAgIHJldHVybiBuZXcgU3VyZmFjZU5VTEwoc3RhdGUp
OwogfQogCiBJbWFnZUltcGwgKkRpc3BsYXlOVUxMOjpjcmVhdGVJbWFnZShFR0xlbnVtIHRhcmdl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6SW1hZ2VTaWJsaW5n
ICpidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6
OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PEltYWdlSW1wbCAqPigwKTsKKyAgICByZXR1cm4gbmV3IEltYWdlTlVM
TCgpOwogfQogCiBDb250ZXh0SW1wbCAqRGlzcGxheU5VTEw6OmNyZWF0ZUNvbnRleHQoY29uc3Qg
Z2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxDb250ZXh0SW1wbCAqPigwKTsKKyAgICByZXR1cm4gbmV3IENvbnRl
eHROVUxMKHN0YXRlLCBtQWxsb2NhdGlvblRyYWNrZXIuZ2V0KCkpOwogfQogCiBTdHJlYW1Qcm9k
dWNlckltcGwgKkRpc3BsYXlOVUxMOjpjcmVhdGVTdHJlYW1Qcm9kdWNlckQzRFRleHR1cmVOVjEy
KApAQCAtMTUxLDE3ICsxODEsMzMgQEAgU3RyZWFtUHJvZHVjZXJJbXBsICpEaXNwbGF5TlVMTDo6
Y3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYxMigKICAgICBjb25zdCBlZ2w6OkF0dHJp
YnV0ZU1hcCAmYXR0cmlicykKIHsKICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PFN0cmVhbVByb2R1Y2VySW1wbCAqPigwKTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogdm9pZCBEaXNwbGF5TlVMTDo6Z2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4
dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0ZUNvbnRleHRSb2J1c3RuZXNzICAgICAgICAgICAgPSB0
cnVlOworICAgIG91dEV4dGVuc2lvbnMtPnBvc3RTdWJCdWZmZXIgICAgICAgICAgICAgICAgICAg
ICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0ZUNvbnRleHQgICAgICAgICAgICAg
ICAgICAgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmRldmljZVF1ZXJ5ICAgICAgICAg
ICAgICAgICAgICAgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmltYWdlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmltYWdlQmFz
ZSAgICAgICAgICAgICAgICAgICAgICAgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmds
VGV4dHVyZTJESW1hZ2UgICAgICAgICAgICAgICAgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lv
bnMtPmdsVGV4dHVyZUN1YmVtYXBJbWFnZSAgICAgICAgICAgICAgPSB0cnVlOworICAgIG91dEV4
dGVuc2lvbnMtPmdsVGV4dHVyZTNESW1hZ2UgICAgICAgICAgICAgICAgICAgPSB0cnVlOworICAg
IG91dEV4dGVuc2lvbnMtPmdsUmVuZGVyYnVmZmVySW1hZ2UgICAgICAgICAgICAgICAgPSB0cnVl
OworICAgIG91dEV4dGVuc2lvbnMtPmdldEFsbFByb2NBZGRyZXNzZXMgICAgICAgICAgICAgICAg
PSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmZsZXhpYmxlU3VyZmFjZUNvbXBhdGliaWxpdHkg
ICAgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmRpcmVjdENvbXBvc2l0aW9uICAgICAg
ICAgICAgICAgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0ZUNvbnRleHROb0Vy
cm9yICAgICAgICAgICAgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0ZUNvbnRl
eHRXZWJHTENvbXBhdGliaWxpdHkgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0
ZUNvbnRleHRCaW5kR2VuZXJhdGVzUmVzb3VyY2UgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMt
PnN3YXBCdWZmZXJzV2l0aERhbWFnZSAgICAgICAgICAgICAgPSB0cnVlOwogfQogCiB2b2lkIERp
c3BsYXlOVUxMOjpnZW5lcmF0ZUNhcHMoZWdsOjpDYXBzICpvdXRDYXBzKSBjb25zdAogewotICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICBvdXRDYXBzLT50ZXh0dXJlTlBPVCA9IHRydWU7CiB9CiAK
IH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRGlzcGxheU5VTEwuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0Rpc3BsYXlOVUxMLmgKaW5kZXgg
OGE3NTBiMWQyMDYzMDRkMDQ2YTBjY2JmNjY0OTNlNTAxYWI4ZDFhZS4uZDVmNDVjZTdlMmVhM2Ez
NDRiNWM1NzY3ODkxM2RlOTI0MzAxMzdjOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRGlzcGxheU5VTEwuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9EaXNwbGF5TlVM
TC5oCkBAIC0xNSwxMCArMTUsMTIgQEAKIG5hbWVzcGFjZSByeAogewogCitjbGFzcyBBbGxvY2F0
aW9uVHJhY2tlck5VTEw7CisKIGNsYXNzIERpc3BsYXlOVUxMIDogcHVibGljIERpc3BsYXlJbXBs
CiB7CiAgIHB1YmxpYzoKLSAgICBEaXNwbGF5TlVMTCgpOworICAgIERpc3BsYXlOVUxMKGNvbnN0
IGVnbDo6RGlzcGxheVN0YXRlICZzdGF0ZSk7CiAgICAgfkRpc3BsYXlOVUxMKCkgb3ZlcnJpZGU7
CiAKICAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoZWdsOjpEaXNwbGF5ICpkaXNwbGF5KSBvdmVy
cmlkZTsKQEAgLTQ2LDE4ICs0OCwxNSBAQCBjbGFzcyBEaXNwbGF5TlVMTCA6IHB1YmxpYyBEaXNw
bGF5SW1wbAogICAgIGdsOjpWZXJzaW9uIGdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3Qg
ZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZh
dHRyaWJzKSBvdmVycmlkZTsKICAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlclN1cmZhY2Uo
Y29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0
dHJpYnMpIG92ZXJyaWRlOwogICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyRnJvbUNsaWVu
dEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1
cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRy
aWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwogICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQaXht
YXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5h
dGl2ZVBpeG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAKQEAgLTc0LDYgKzczLDEwIEBA
IGNsYXNzIERpc3BsYXlOVUxMIDogcHVibGljIERpc3BsYXlJbXBsCiAgIHByaXZhdGU6CiAgICAg
dm9pZCBnZW5lcmF0ZUV4dGVuc2lvbnMoZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5z
aW9ucykgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZW5lcmF0ZUNhcHMoZWdsOjpDYXBzICpv
dXRDYXBzKSBjb25zdCBvdmVycmlkZTsKKworICAgIERldmljZUltcGwgKm1EZXZpY2U7CisKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8QWxsb2NhdGlvblRyYWNrZXJOVUxMPiBtQWxsb2NhdGlvblRyYWNr
ZXI7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0ZlbmNlU3luY05VTEwuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRmVuY2VT
eW5jTlVMTC5jcHAKaW5kZXggMzdiZmRmZWRiNjFlNGRhZWM2MjhjY2RkNzJkOWVhZDA1Njk1NzU3
MS4uYWU2NWMwYjI3NjYwNDI2ZWEzMmZkZWEzNjRmNzgxMTE2OGRmM2MyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRmVuY2VT
eW5jTlVMTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL251bGwvRmVuY2VTeW5jTlVMTC5jcHAKQEAgLTI0LDI2ICsyNCwyNCBAQCBGZW5jZVN5
bmNOVUxMOjp+RmVuY2VTeW5jTlVMTCgpCiAKIGdsOjpFcnJvciBGZW5jZVN5bmNOVUxMOjpzZXQo
R0xlbnVtIGNvbmRpdGlvbiwgR0xiaXRmaWVsZCBmbGFncykKIHsKLSAgICBVTklNUExFTUVOVEVE
KCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgcmV0
dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBGZW5jZVN5bmNOVUxMOjpjbGllbnRX
YWl0KEdMYml0ZmllbGQgZmxhZ3MsIEdMdWludDY0IHRpbWVvdXQsIEdMZW51bSAqb3V0UmVzdWx0
KQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICAqb3V0UmVzdWx0ID0gR0xfQUxSRUFEWV9TSUdOQUxFRDsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEZlbmNlU3luY05VTEw6OnNl
cnZlcldhaXQoR0xiaXRmaWVsZCBmbGFncywgR0x1aW50NjQgdGltZW91dCkKIHsKLSAgICBVTklN
UExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBGZW5jZVN5bmNOVUxM
OjpnZXRTdGF0dXMoR0xpbnQgKm91dFJlc3VsdCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgKm91dFJlc3Vs
dCA9IEdMX1NJR05BTEVEOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB9ICAvLyBu
YW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9udWxsL0ZyYW1lYnVmZmVyTlVMTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GcmFtZWJ1ZmZlck5VTEwuY3BwCmlu
ZGV4IDE0ZWJlMWViYTdmOWEzZmE1YzU4M2UzNGZhYWY2ZThjYjY3NjYzNDUuLmZlOTdiNjY3YjJm
MDRjNjI1ZDA3Y2I2MjJkYTFhZGQyNzhiMWUyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0ZyYW1lYnVmZmVyTlVMTC5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwv
RnJhbWVidWZmZXJOVUxMLmNwcApAQCAtOSw2ICs5LDggQEAKIAogI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL251bGwvRnJhbWVidWZmZXJOVUxMLmgiCiAKKyNpbmNsdWRlICJsaWJBTkdMRS9m
b3JtYXR1dGlscy5oIgorCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCiAKIG5hbWVzcGFjZSBy
eApAQCAtMjQsMjggKzI2LDI0IEBAIEZyYW1lYnVmZmVyTlVMTDo6fkZyYW1lYnVmZmVyTlVMTCgp
CiAKIGdsOjpFcnJvciBGcmFtZWJ1ZmZlck5VTEw6OmRpc2NhcmQoc2l6ZV90IGNvdW50LCBjb25z
dCBHTGVudW0gKmF0dGFjaG1lbnRzKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKIH0KIAogZ2w6OkVycm9yIEZyYW1lYnVmZmVyTlVMTDo6aW52YWxpZGF0ZShzaXplX3Qg
Y291bnQsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgp
OwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgRnJhbWVidWZmZXJOVUxMOjppbnZhbGlk
YXRlU3ViKHNpemVfdCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50cywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSkKIHsKLSAgICBVTklN
UExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBGcmFtZWJ1ZmZlck5V
TEw6OmNsZWFyKENvbnRleHRJbXBsICpjb250ZXh0LCBHTGJpdGZpZWxkIG1hc2spCiB7Ci0gICAg
VU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgRnJhbWVidWZm
ZXJOVUxMOjpjbGVhckJ1ZmZlcmZ2KENvbnRleHRJbXBsICpjb250ZXh0LApAQCAtNTMsOCArNTEs
NyBAQCBnbDo6RXJyb3IgRnJhbWVidWZmZXJOVUxMOjpjbGVhckJ1ZmZlcmZ2KENvbnRleHRJbXBs
ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBkcmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZXMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCiBnbDo6RXJyb3IgRnJhbWVidWZmZXJOVUxMOjpjbGVhckJ1ZmZlcnVpdihDb250
ZXh0SW1wbCAqY29udGV4dCwKQEAgLTYyLDggKzU5LDcgQEAgZ2w6OkVycm9yIEZyYW1lYnVmZmVy
TlVMTDo6Y2xlYXJCdWZmZXJ1aXYoQ29udGV4dEltcGwgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZXMpCiB7
Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgRnJh
bWVidWZmZXJOVUxMOjpjbGVhckJ1ZmZlcml2KENvbnRleHRJbXBsICpjb250ZXh0LApAQCAtNzEs
OCArNjcsNyBAQCBnbDo6RXJyb3IgRnJhbWVidWZmZXJOVUxMOjpjbGVhckJ1ZmZlcml2KENvbnRl
eHRJbXBsICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBkcmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGludCAqdmFsdWVzKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEZyYW1lYnVmZmVyTlVMTDo6Y2xlYXJCdWZmZXJmaShD
b250ZXh0SW1wbCAqY29udGV4dCwKQEAgLTgxLDIwICs3NiwzMyBAQCBnbDo6RXJyb3IgRnJhbWVi
dWZmZXJOVUxMOjpjbGVhckJ1ZmZlcmZpKENvbnRleHRJbXBsICpjb250ZXh0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGRlcHRoLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzdGVuY2lsKQogewotICAgIFVO
SU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogR0xlbnVtIEZyYW1lYnVmZmVyTlVM
TDo6Z2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQoKSBjb25zdAogewotICAgIFVOSU1Q
TEVNRU5URUQoKTsKLSAgICByZXR1cm4gR0xlbnVtKCk7CisgICAgY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyQXR0YWNobWVudCAqcmVhZEF0dGFjaG1lbnQgPSBtU3RhdGUuZ2V0UmVhZEF0dGFjaG1lbnQo
KTsKKyAgICBpZiAocmVhZEF0dGFjaG1lbnQgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJl
dHVybiBHTF9OT05FOworICAgIH0KKworICAgIGNvbnN0IGdsOjpGb3JtYXQgJmZvcm1hdCA9IHJl
YWRBdHRhY2htZW50LT5nZXRGb3JtYXQoKTsKKyAgICBBU1NFUlQoZm9ybWF0LmluZm8gIT0gbnVs
bHB0cik7CisgICAgcmV0dXJuIGZvcm1hdC5pbmZvLT5nZXRSZWFkUGl4ZWxzRm9ybWF0KCk7CiB9
CiAKIEdMZW51bSBGcmFtZWJ1ZmZlck5VTEw6OmdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkVHlw
ZSgpIGNvbnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBHTGVudW0oKTsK
KyAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpyZWFkQXR0YWNobWVudCA9IG1T
dGF0ZS5nZXRSZWFkQXR0YWNobWVudCgpOworICAgIGlmIChyZWFkQXR0YWNobWVudCA9PSBudWxs
cHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX05PTkU7CisgICAgfQorCisgICAgY29uc3Qg
Z2w6OkZvcm1hdCAmZm9ybWF0ID0gcmVhZEF0dGFjaG1lbnQtPmdldEZvcm1hdCgpOworICAgIEFT
U0VSVChmb3JtYXQuaW5mbyAhPSBudWxscHRyKTsKKyAgICByZXR1cm4gZm9ybWF0LmluZm8tPmdl
dFJlYWRQaXhlbHNUeXBlKCk7CiB9CiAKIGdsOjpFcnJvciBGcmFtZWJ1ZmZlck5VTEw6OnJlYWRQ
aXhlbHMoQ29udGV4dEltcGwgKmNvbnRleHQsCkBAIC0xMDMsOCArMTExLDcgQEAgZ2w6OkVycm9y
IEZyYW1lYnVmZmVyTlVMTDo6cmVhZFBpeGVscyhDb250ZXh0SW1wbCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKSBjb25zdAogewotICAg
IFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEZyYW1lYnVm
ZmVyTlVMTDo6YmxpdChDb250ZXh0SW1wbCAqY29udGV4dCwKQEAgLTExMywxOSArMTIwLDIyIEBA
IGdsOjpFcnJvciBGcmFtZWJ1ZmZlck5VTEw6OmJsaXQoQ29udGV4dEltcGwgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzaywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbHRlcikKIHsKLSAgICBVTklNUExFTUVO
VEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGJvb2wgRnJhbWVidWZmZXJOVUxMOjpjaGVja1N0
YXR1cygpIGNvbnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBib29sKCk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgRnJhbWVidWZmZXJOVUxMOjpzeW5jU3RhdGUo
Q29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQorewogfQogCi12
b2lkIEZyYW1lYnVmZmVyTlVMTDo6c3luY1N0YXRlKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGly
dHlCaXRzICZkaXJ0eUJpdHMpCitnbDo6RXJyb3IgRnJhbWVidWZmZXJOVUxMOjpnZXRTYW1wbGVQ
b3NpdGlvbihzaXplX3QgaW5kZXgsIEdMZmxvYXQgKnh5KSBjb25zdAogewotICAgIFVOSU1QTEVN
RU5URUQoKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNl
IHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbnVsbC9GcmFtZWJ1ZmZlck5VTEwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0ZyYW1lYnVmZmVyTlVMTC5oCmluZGV4IGM1MzEzMmMx
OGQxZmI1MmQ5M2QyM2UyYmM0NzhiMTRhNWU3OWNkNzQuLmNkNDhjMjVjYzdlNDAwMzE2Y2I4ZTU1
YjE3ZmRhOTU5ZmVkNzcyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0ZyYW1lYnVmZmVyTlVMTC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0ZyYW1lYnVmZmVyTlVM
TC5oCkBAIC02Miw3ICs2Miw5IEBAIGNsYXNzIEZyYW1lYnVmZmVyTlVMTCA6IHB1YmxpYyBGcmFt
ZWJ1ZmZlckltcGwKIAogICAgIGJvb2wgY2hlY2tTdGF0dXMoKSBjb25zdCBvdmVycmlkZTsKIAot
ICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGlydHlCaXRzICZkaXJ0
eUJpdHMpIG92ZXJyaWRlOworICAgIHZvaWQgc3luY1N0YXRlKENvbnRleHRJbXBsICpjb250ZXh0
SW1wbCwgY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3ZlcnJp
ZGU7CisKKyAgICBnbDo6RXJyb3IgZ2V0U2FtcGxlUG9zaXRpb24oc2l6ZV90IGluZGV4LCBHTGZs
b2F0ICp4eSkgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxs
L1Byb2dyYW1OVUxMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9udWxsL1Byb2dyYW1OVUxMLmNwcAppbmRleCAyOGNhYjRkMzY3ZDM3OWNmNDRkYzQ3
YTQ2ZjNkMzA1ZWU5NzRlMGIzLi4zNWJkNDZkYjUzNWM3M2VmOGFmYjAwNGI1YjMwYTRkMWM0YjI2
MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbnVsbC9Qcm9ncmFtTlVMTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUHJvZ3JhbU5VTEwuY3BwCkBAIC0yMiw5MyArMjIs
ODQgQEAgUHJvZ3JhbU5VTEw6On5Qcm9ncmFtTlVMTCgpCiB7CiB9CiAKLUxpbmtSZXN1bHQgUHJv
Z3JhbU5VTEw6OmxvYWQoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGdsOjpCaW5hcnlJbnB1dFN0cmVh
bSAqc3RyZWFtKQorTGlua1Jlc3VsdCBQcm9ncmFtTlVMTDo6bG9hZChjb25zdCBDb250ZXh0SW1w
bCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpJbmZvTG9n
ICZpbmZvTG9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6QmluYXJ5SW5wdXRT
dHJlYW0gKnN0cmVhbSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIExpbmtS
ZXN1bHQoZmFsc2UsIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgIHJldHVy
biB0cnVlOwogfQogCiBnbDo6RXJyb3IgUHJvZ3JhbU5VTEw6OnNhdmUoZ2w6OkJpbmFyeU91dHB1
dFN0cmVhbSAqc3RyZWFtKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAogdm9pZCBQcm9ncmFtTlVMTDo6c2V0QmluYXJ5UmV0cmlldmFibGVIaW50KGJvb2wgcmV0
cmlldmFibGUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCi1MaW5rUmVzdWx0IFByb2dy
YW1OVUxMOjpsaW5rKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIGdsOjpJbmZvTG9nICZp
bmZvTG9nKQordm9pZCBQcm9ncmFtTlVMTDo6c2V0U2VwYXJhYmxlKGJvb2wgc2VwYXJhYmxlKQog
ewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwgZ2w6
OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Cit9CisKK0xpbmtSZXN1bHQgUHJvZ3JhbU5V
TEw6OmxpbmsoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6VmFyeWluZ1BhY2tpbmcgJnBhY2tpbmcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsOjpJbmZvTG9nICZpbmZvTG9nKQoreworICAgIHJldHVybiB0cnVl
OwogfQogCiBHTGJvb2xlYW4gUHJvZ3JhbU5VTEw6OnZhbGlkYXRlKGNvbnN0IGdsOjpDYXBzICZj
YXBzLCBnbDo6SW5mb0xvZyAqaW5mb0xvZykKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAg
cmV0dXJuIEdMYm9vbGVhbigpOworICAgIHJldHVybiBHTF9UUlVFOwogfQogCiB2b2lkIFByb2dy
YW1OVUxMOjpzZXRVbmlmb3JtMWZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGZsb2F0ICp2KQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAogdm9pZCBQcm9ncmFt
TlVMTDo6c2V0VW5pZm9ybTJmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0xmbG9hdCAqdikKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgUHJvZ3JhbU5V
TEw6OnNldFVuaWZvcm0zZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
ZmxvYXQgKnYpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCiB2b2lkIFByb2dyYW1OVUxM
OjpzZXRVbmlmb3JtNGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZs
b2F0ICp2KQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAogdm9pZCBQcm9ncmFtTlVMTDo6
c2V0VW5pZm9ybTFpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQg
KnYpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCiB2b2lkIFByb2dyYW1OVUxMOjpzZXRV
bmlmb3JtMml2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikK
IHsKLSAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZv
cm0zaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQogewot
ICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAogdm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybTRp
dihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCiB7Ci0gICAg
VU5JTVBMRU1FTlRFRCgpOwogfQogCiB2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtMXVpdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KQogewotICAgIFVO
SU1QTEVNRU5URUQoKTsKIH0KIAogdm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybTJ1aXYoR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikKIHsKLSAgICBVTklN
UExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm0zdWl2KEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYpCiB7Ci0gICAgVU5JTVBM
RU1FTlRFRCgpOwogfQogCiB2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtNHVpdihHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KQogewotICAgIFVOSU1QTEVN
RU5URUQoKTsKIH0KIAogdm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybU1hdHJpeDJmdihHTGlu
dCBsb2NhdGlvbiwKQEAgLTExNiw3ICsxMDcsNiBAQCB2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlm
b3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKLSAgICBVTklNUExFTUVOVEVE
KCk7CiB9CiAKIHZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm1NYXRyaXgzZnYoR0xpbnQgbG9j
YXRpb24sCkBAIC0xMjQsNyArMTE0LDYgQEAgdm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybU1h
dHJpeDNmdihHTGludCBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwog
fQogCiB2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtTWF0cml4NGZ2KEdMaW50IGxvY2F0aW9u
LApAQCAtMTMyLDcgKzEyMSw2IEBAIHZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm1NYXRyaXg0
ZnYoR0xpbnQgbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAog
dm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybU1hdHJpeDJ4M2Z2KEdMaW50IGxvY2F0aW9uLApA
QCAtMTQwLDcgKzEyOCw2IEBAIHZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm1NYXRyaXgyeDNm
dihHTGludCBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKIH0K
IAogdm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybU1hdHJpeDN4MmZ2KEdMaW50IGxvY2F0aW9u
LApAQCAtMTQ4LDcgKzEzNSw2IEBAIHZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm1NYXRyaXgz
eDJmdihHTGludCBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsK
IH0KIAogdm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybU1hdHJpeDJ4NGZ2KEdMaW50IGxvY2F0
aW9uLApAQCAtMTU2LDcgKzE0Miw2IEBAIHZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm1NYXRy
aXgyeDRmdihHTGludCBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKIH0KIAogdm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybU1hdHJpeDR4MmZ2KEdMaW50IGxv
Y2F0aW9uLApAQCAtMTY0LDcgKzE0OSw2IEBAIHZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm1N
YXRyaXg0eDJmdihHTGludCBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewotICAgIFVOSU1QTEVNRU5U
RUQoKTsKIH0KIAogdm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybU1hdHJpeDN4NGZ2KEdMaW50
IGxvY2F0aW9uLApAQCAtMTcyLDcgKzE1Niw2IEBAIHZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZv
cm1NYXRyaXgzeDRmdihHTGludCBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewotICAgIFVOSU1QTEVN
RU5URUQoKTsKIH0KIAogdm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybU1hdHJpeDR4M2Z2KEdM
aW50IGxvY2F0aW9uLApAQCAtMTgwLDI1ICsxNjMsMjQgQEAgdm9pZCBQcm9ncmFtTlVMTDo6c2V0
VW5pZm9ybU1hdHJpeDR4M2Z2KEdMaW50IGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7Ci0gICAgVU5J
TVBMRU1FTlRFRCgpOwogfQogCiB2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtQmxvY2tCaW5k
aW5nKEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0x1aW50IHVuaWZvcm1CbG9ja0JpbmRpbmcp
CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCiBib29sIFByb2dyYW1OVUxMOjpnZXRVbmlm
b3JtQmxvY2tTaXplKGNvbnN0IHN0ZDo6c3RyaW5nICZibG9ja05hbWUsIHNpemVfdCAqc2l6ZU91
dCkgY29uc3QKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGJvb2woKTsKKyAg
ICAvLyBUT0RPKGdlb2ZmbGFuZyk6IENvbXB1dGUgcmVhc29uYWJsZSBzaXplcz8KKyAgICAqc2l6
ZU91dCA9IDA7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgUHJvZ3JhbU5VTEw6OmdldFVu
aWZvcm1CbG9ja01lbWJlckluZm8oY29uc3Qgc3RkOjpzdHJpbmcgJm1lbWJlclVuaWZvcm1OYW1l
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaDo6QmxvY2tN
ZW1iZXJJbmZvICptZW1iZXJJbmZvT3V0KSBjb25zdAogewotICAgIFVOSU1QTEVNRU5URUQoKTsK
LSAgICByZXR1cm4gYm9vbCgpOworICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogQ29tcHV0ZSByZWFz
b25hYmxlIHZhbHVlcz8KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBQcm9ncmFtTlVMTDo6
c2V0UGF0aEZyYWdtZW50SW5wdXRHZW4oY29uc3Qgc3RkOjpzdHJpbmcgJmlucHV0TmFtZSwKQEAg
LTIwNiw3ICsxODgsNiBAQCB2b2lkIFByb2dyYW1OVUxMOjpzZXRQYXRoRnJhZ21lbnRJbnB1dEdl
bihjb25zdCBzdGQ6OnN0cmluZyAmaW5wdXROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgY29tcG9uZW50cywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvZWZmcykKIHsKLSAgICBVTklN
UExFTUVOVEVEKCk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUHJvZ3JhbU5VTEwu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1By
b2dyYW1OVUxMLmgKaW5kZXggNTc2YTUyYzE4MzVlYTZiYTQwYWM0YjEzZDU3NDU1MzEwYzMzYTI0
Mi4uODhjMDU5OGVjMWUzMTdiMTBlNTY1ZTdkMGNlZmIyNDRlNTNiODdlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUHJvZ3Jh
bU5VTEwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbnVsbC9Qcm9ncmFtTlVMTC5oCkBAIC0yMSwxMSArMjEsMTYgQEAgY2xhc3MgUHJvZ3JhbU5V
TEwgOiBwdWJsaWMgUHJvZ3JhbUltcGwKICAgICBQcm9ncmFtTlVMTChjb25zdCBnbDo6UHJvZ3Jh
bVN0YXRlICZzdGF0ZSk7CiAgICAgflByb2dyYW1OVUxMKCkgb3ZlcnJpZGU7CiAKLSAgICBMaW5r
UmVzdWx0IGxvYWQoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAq
c3RyZWFtKSBvdmVycmlkZTsKKyAgICBMaW5rUmVzdWx0IGxvYWQoY29uc3QgQ29udGV4dEltcGwg
KmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICBnbDo6SW5mb0xvZyAmaW5mb0xvZywK
KyAgICAgICAgICAgICAgICAgICAgZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0pIG92ZXJy
aWRlOwogICAgIGdsOjpFcnJvciBzYXZlKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0cmVhbSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRCaW5hcnlSZXRyaWV2YWJsZUhpbnQoYm9vbCByZXRyaWV2
YWJsZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRTZXBhcmFibGUoYm9vbCBzZXBhcmFibGUpIG92
ZXJyaWRlOwogCi0gICAgTGlua1Jlc3VsdCBsaW5rKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRh
dGEsIGdsOjpJbmZvTG9nICZpbmZvTG9nKSBvdmVycmlkZTsKKyAgICBMaW5rUmVzdWx0IGxpbmso
Q29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
VmFyeWluZ1BhY2tpbmcgJnBhY2tpbmcsCisgICAgICAgICAgICAgICAgICAgIGdsOjpJbmZvTG9n
ICZpbmZvTG9nKSBvdmVycmlkZTsKICAgICBHTGJvb2xlYW4gdmFsaWRhdGUoY29uc3QgZ2w6OkNh
cHMgJmNhcHMsIGdsOjpJbmZvTG9nICppbmZvTG9nKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0
VW5pZm9ybTFmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAq
dikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbnVsbC9RdWVyeU5VTEwuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUXVlcnlOVUxMLmNwcAppbmRleCA2Mjc2YTBm
ZjE2NTFlNDVmMzgzODRiYTIwOThjNmFjYzEzMjNkZTRhLi44ODg4MDI4YzZhZGQzNzlhMjc0NThl
OTA3MTlkMTY0NjNkZWY0M2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9RdWVyeU5VTEwuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1F1ZXJ5TlVMTC5jcHAKQEAg
LTI0LDUwICsyNCw0NyBAQCBRdWVyeU5VTEw6On5RdWVyeU5VTEwoKQogCiBnbDo6RXJyb3IgUXVl
cnlOVUxMOjpiZWdpbigpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
fQogCiBnbDo6RXJyb3IgUXVlcnlOVUxMOjplbmQoKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsK
LSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFF1ZXJ5TlVMTDo6cXVlcnlDb3VudGVyKCkK
IHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBR
dWVyeU5VTEw6OmdldFJlc3VsdChHTGludCAqcGFyYW1zKQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAqcGFy
YW1zID0gMDsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFF1ZXJ5
TlVMTDo6Z2V0UmVzdWx0KEdMdWludCAqcGFyYW1zKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsK
LSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAqcGFyYW1z
ID0gMDsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFF1ZXJ5TlVM
TDo6Z2V0UmVzdWx0KEdMaW50NjQgKnBhcmFtcykKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgKnBhcmFtcyA9
IDA7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBRdWVyeU5VTEw6
OmdldFJlc3VsdChHTHVpbnQ2NCAqcGFyYW1zKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAqcGFyYW1zID0g
MDsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFF1ZXJ5TlVMTDo6
aXNSZXN1bHRBdmFpbGFibGUoYm9vbCAqYXZhaWxhYmxlKQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAqYXZh
aWxhYmxlID0gdHJ1ZTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogfSAgLy8gbmFt
ZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbnVsbC9SZW5kZXJidWZmZXJOVUxMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1JlbmRlcmJ1ZmZlck5VTEwuY3BwCmlu
ZGV4IDUwZjU0YTYyMDM3YTBhYzNkNzNmOGU2NTFmNDliNDRkOGI0ZjhjNzIuLjIyYjkwZTE2ZGQ2
NmM0NTgyZjExYTRjMjgwMjYwZTI1ZDgwYTdiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1JlbmRlcmJ1ZmZlck5VTEwuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxs
L1JlbmRlcmJ1ZmZlck5VTEwuY3BwCkBAIC0yNCw4ICsyNCw3IEBAIFJlbmRlcmJ1ZmZlck5VTEw6
On5SZW5kZXJidWZmZXJOVUxMKCkKIAogZ2w6OkVycm9yIFJlbmRlcmJ1ZmZlck5VTEw6OnNldFN0
b3JhZ2UoR0xlbnVtIGludGVybmFsZm9ybWF0LCBzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQp
CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3Ig
UmVuZGVyYnVmZmVyTlVMTDo6c2V0U3RvcmFnZU11bHRpc2FtcGxlKHNpemVfdCBzYW1wbGVzLApA
QCAtMzMsMTQgKzMyLDEyIEBAIGdsOjpFcnJvciBSZW5kZXJidWZmZXJOVUxMOjpzZXRTdG9yYWdl
TXVsdGlzYW1wbGUoc2l6ZV90IHNhbXBsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCkKIHsKLSAgICBVTklN
UExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBSZW5kZXJidWZmZXJO
VUxMOjpzZXRTdG9yYWdlRUdMSW1hZ2VUYXJnZXQoZWdsOjpJbWFnZSAqaW1hZ2UpCiB7Ci0gICAg
VU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgcngK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9udWxsL1NoYWRlck5VTEwuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL251bGwvU2hhZGVyTlVMTC5jcHAKaW5kZXggMTY4ZjRiZGNhYTY0NTUyZDc4
OGFlOTE1MDJkOGJkZjVmOWM3NDI2OC4uZTdkODM4MzNhZWI0N2JhODNmMzBhOWFkYTBjYmRmODkz
ZTNhZDJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL251bGwvU2hhZGVyTlVMTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvU2hhZGVyTlVMTC5jcHAKQEAgLTI1LDIwICsy
NSwxOCBAQCBTaGFkZXJOVUxMOjp+U2hhZGVyTlVMTCgpCiBTaENvbXBpbGVPcHRpb25zIFNoYWRl
ck5VTEw6OnByZXBhcmVTb3VyY2VBbmRSZXR1cm5PcHRpb25zKHN0ZDo6c3RyaW5nc3RyZWFtICpz
b3VyY2VTdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICpzb3VyY2VQYXRoKQogewotICAgIFVOSU1QTEVN
RU5URUQoKTsKLSAgICByZXR1cm4gU2hDb21waWxlT3B0aW9ucygpOworICAgICpzb3VyY2VTdHJl
YW0gPDwgbURhdGEuZ2V0U291cmNlKCk7CisgICAgcmV0dXJuIDA7CiB9CiAKIGJvb2wgU2hhZGVy
TlVMTDo6cG9zdFRyYW5zbGF0ZUNvbXBpbGUoZ2w6OkNvbXBpbGVyICpjb21waWxlciwgc3RkOjpz
dHJpbmcgKmluZm9Mb2cpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBib29s
KCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0ZDo6c3RyaW5nIFNoYWRlck5VTEw6OmdldERl
YnVnSW5mbygpIGNvbnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBzdGQ6
OnN0cmluZygpOworICAgIHJldHVybiAiIjsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVs
bC9TaGFkZXJOVUxMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbnVsbC9TaGFkZXJOVUxMLmgKaW5kZXggZjdkODk3MTBiZjM3YTk2OTE0OTI2MTE5M2Vk
YjE0NjU3ZjYwOTU1MS4uZDI5YjRjZmI3NmY0ZDQ5MzgzNjE0YTNiY2EwNDYxNGI0MWUxMDJkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L251bGwvU2hhZGVyTlVMTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9udWxsL1NoYWRlck5VTEwuaApAQCAtMjEsNyArMjEsNyBAQCBjbGFzcyBT
aGFkZXJOVUxMIDogcHVibGljIFNoYWRlckltcGwKICAgICBTaGFkZXJOVUxMKGNvbnN0IGdsOjpT
aGFkZXJTdGF0ZSAmZGF0YSk7CiAgICAgflNoYWRlck5VTEwoKSBvdmVycmlkZTsKIAotICAgIC8v
IFJldHVybnMgYWRkaXRpb25hbCBTaENvbXBpbGUgb3B0aW9ucy4KKyAgICAvLyBSZXR1cm5zIGFk
ZGl0aW9uYWwgc2g6OkNvbXBpbGUgb3B0aW9ucy4KICAgICBTaENvbXBpbGVPcHRpb25zIHByZXBh
cmVTb3VyY2VBbmRSZXR1cm5PcHRpb25zKHN0ZDo6c3RyaW5nc3RyZWFtICpzb3VyY2VTdHJlYW0s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6
OnN0cmluZyAqc291cmNlUGF0aCkgb3ZlcnJpZGU7CiAgICAgLy8gUmV0dXJucyBzdWNjZXNzIGZv
ciBjb21waWxpbmcgb24gdGhlIGRyaXZlci4gUmV0dXJucyBzdWNjZXNzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvU3VyZmFj
ZU5VTEwuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L251bGwvU3VyZmFjZU5VTEwuY3BwCmluZGV4IDgxZDc2Mzc4MzE4OGUwMzI1MDE1ZTk1MDhiYWFh
OTE4Njc2ODUxM2IuLjg2ODI2OWI5OTk5Mjg2YjFmYTkyMjgwNGU3MWQwYTIyMTg5OGQ3YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9u
dWxsL1N1cmZhY2VOVUxMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbnVsbC9TdXJmYWNlTlVMTC5jcHAKQEAgLTExLDYgKzExLDggQEAKIAog
I2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
bnVsbC9GcmFtZWJ1ZmZlck5VTEwuaCIKKwogbmFtZXNwYWNlIHJ4CiB7CiAKQEAgLTIyLDgyICsy
NCw3MiBAQCBTdXJmYWNlTlVMTDo6flN1cmZhY2VOVUxMKCkKIHsKIH0KIAotZWdsOjpFcnJvciBT
dXJmYWNlTlVMTDo6aW5pdGlhbGl6ZSgpCitlZ2w6OkVycm9yIFN1cmZhY2VOVUxMOjppbml0aWFs
aXplKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkKIHsKLSAgICBVTklNUExFTUVOVEVE
KCk7Ci0gICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworICAgIHJldHVybiBl
Z2w6Ok5vRXJyb3IoKTsKIH0KIAogRnJhbWVidWZmZXJJbXBsICpTdXJmYWNlTlVMTDo6Y3JlYXRl
RGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkKIHsK
LSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEZyYW1lYnVmZmVy
SW1wbCAqPigwKTsKKyAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyTlVMTChzdGF0ZSk7CiB9CiAK
LWVnbDo6RXJyb3IgU3VyZmFjZU5VTEw6OnN3YXAoKQorZWdsOjpFcnJvciBTdXJmYWNlTlVMTDo6
c3dhcChjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUltcGwpCiB7Ci0gICAgVU5JTVBMRU1FTlRF
RCgpOwotICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQUNDRVNTKTsKKyAgICByZXR1cm4g
ZWdsOjpOb0Vycm9yKCk7CiB9CiAKIGVnbDo6RXJyb3IgU3VyZmFjZU5VTEw6OnBvc3RTdWJCdWZm
ZXIoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpCiB7Ci0g
ICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQUNDRVNT
KTsKKyAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7CiB9CiAKIGVnbDo6RXJyb3IgU3VyZmFjZU5V
TEw6OnF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFs
dWUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9C
QURfQUNDRVNTKTsKKyAgICBVTlJFQUNIQUJMRSgpOworICAgIHJldHVybiBlZ2w6Ok5vRXJyb3Io
KTsKIH0KIAogZWdsOjpFcnJvciBTdXJmYWNlTlVMTDo6YmluZFRleEltYWdlKGdsOjpUZXh0dXJl
ICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVyKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICBy
ZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7CisgICAgcmV0dXJuIGVnbDo6Tm9FcnJv
cigpOwogfQogCiBlZ2w6OkVycm9yIFN1cmZhY2VOVUxMOjpyZWxlYXNlVGV4SW1hZ2UoRUdMaW50
IGJ1ZmZlcikKIHsKKyAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Cit9CisKK2VnbDo6RXJyb3Ig
U3VyZmFjZU5VTEw6OmdldFN5bmNWYWx1ZXMoRUdMdWludDY0S0hSICp1c3QsIEVHTHVpbnQ2NEtI
UiAqbXNjLCBFR0x1aW50NjRLSFIgKnNiYykKK3sKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAg
cmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOwogfQogCiB2b2lkIFN1cmZhY2VOVUxM
OjpzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFsKQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKIH0KIAogRUdMaW50IFN1cmZhY2VOVUxMOjpnZXRXaWR0aCgpIGNvbnN0CiB7Ci0gICAgVU5J
TVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBFR0xpbnQoKTsKKyAgICAvLyBUT0RPKGdlb2ZmbGFu
Zyk6IFJlYWQgZnJvbSBhbiBhY3R1YWwgd2luZG93PworICAgIHJldHVybiAxMDA7CiB9CiAKIEVH
TGludCBTdXJmYWNlTlVMTDo6Z2V0SGVpZ2h0KCkgY29uc3QKIHsKLSAgICBVTklNUExFTUVOVEVE
KCk7Ci0gICAgcmV0dXJuIEVHTGludCgpOworICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogUmVhZCBm
cm9tIGFuIGFjdHVhbCB3aW5kb3c/CisgICAgcmV0dXJuIDEwMDsKIH0KIAogRUdMaW50IFN1cmZh
Y2VOVUxMOjppc1Bvc3RTdWJCdWZmZXJTdXBwb3J0ZWQoKSBjb25zdAogewotICAgIFVOSU1QTEVN
RU5URUQoKTsKLSAgICByZXR1cm4gRUdMaW50KCk7CisgICAgcmV0dXJuIEVHTF9UUlVFOwogfQog
CiBFR0xpbnQgU3VyZmFjZU5VTEw6OmdldFN3YXBCZWhhdmlvcigpIGNvbnN0CiB7Ci0gICAgVU5J
TVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBFR0xpbnQoKTsKLX0KLQotZ2w6OkVycm9yIFN1cmZh
Y2VOVUxMOjpnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0
dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudFJlbmRlclRhcmdldCAqKnJ0
T3V0KQotewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4gRUdMX0JVRkZFUl9QUkVTRVJWRUQ7CiB9CiAK
IH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvU3VyZmFjZU5VTEwuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1N1cmZhY2VOVUxMLmgKaW5kZXgg
NTk3ZjFjMjFjOTQwYTM1MTQxMTZiNDQ5NDIwMmU0Mjc2ODdmNTBjZS4uNGIwODRhMzJmOWU4YjJi
NzY1MDVmZjc4N2JlYTg3ZTA1ODE5YWM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvU3VyZmFjZU5VTEwuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TdXJmYWNlTlVM
TC5oCkBAIC0yMSwxMyArMjEsMTQgQEAgY2xhc3MgU3VyZmFjZU5VTEwgOiBwdWJsaWMgU3VyZmFj
ZUltcGwKICAgICBTdXJmYWNlTlVMTChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3VyZmFjZVN0
YXRlKTsKICAgICB+U3VyZmFjZU5VTEwoKSBvdmVycmlkZTsKIAotICAgIGVnbDo6RXJyb3IgaW5p
dGlhbGl6ZSgpIG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShjb25zdCBEaXNw
bGF5SW1wbCAqZGlzcGxheUltcGwpIG92ZXJyaWRlOwogICAgIEZyYW1lYnVmZmVySW1wbCAqY3Jl
YXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkg
b3ZlcnJpZGU7Ci0gICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJv
ciBzd2FwKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJpZGU7CiAgICAgZWds
OjpFcnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBF
R0xpbnQgaGVpZ2h0KSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHF1ZXJ5U3VyZmFjZVBvaW50
ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJyaWRlOwogICAgIGVn
bDo6RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVy
KSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHJlbGVhc2VUZXhJbWFnZShFR0xpbnQgYnVmZmVy
KSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIGdldFN5bmNWYWx1ZXMoRUdMdWludDY0S0hSICp1
c3QsIEVHTHVpbnQ2NEtIUiAqbXNjLCBFR0x1aW50NjRLSFIgKnNiYykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFsKSBvdmVycmlkZTsKIAogICAgIC8v
IHdpZHRoIGFuZCBoZWlnaHQgY2FuIGNoYW5nZSB3aXRoIGNsaWVudCB3aW5kb3cgcmVzaXppbmcK
QEAgLTM2LDkgKzM3LDYgQEAgY2xhc3MgU3VyZmFjZU5VTEwgOiBwdWJsaWMgU3VyZmFjZUltcGwK
IAogICAgIEVHTGludCBpc1Bvc3RTdWJCdWZmZXJTdXBwb3J0ZWQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICBFR0xpbnQgZ2V0U3dhcEJlaGF2aW9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBnbDo6
RXJyb3IgZ2V0QXR0YWNobWVudFJlbmRlclRhcmdldChjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRh
Y2htZW50OjpUYXJnZXQgJnRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkgb3ZlcnJp
ZGU7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1RleHR1cmVOVUxMLmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1RleHR1cmVO
VUxMLmNwcAppbmRleCAyYzk1MmU1MjgyOGVkMWU5MTgyY2JkYzFiNGZmZTUxOTAxMWI1ZTZmLi4x
NmVmNGNjYzNiMWQ2NzBmZTM0MjRhZjYwZjViYjI3MjgwN2Y1Njc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9UZXh0dXJlTlVM
TC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L251bGwvVGV4dHVyZU5VTEwuY3BwCkBAIC0yMiw3ICsyMiw4IEBAIFRleHR1cmVOVUxMOjp+VGV4
dHVyZU5VTEwoKQogewogfQogCi1nbDo6RXJyb3IgVGV4dHVyZU5VTEw6OnNldEltYWdlKEdMZW51
bSB0YXJnZXQsCitnbDo6RXJyb3IgVGV4dHVyZU5VTEw6OnNldEltYWdlKENvbnRleHRJbXBsICpj
b250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLApAQCAtMzEs
MTEgKzMyLDEzIEBAIGdsOjpFcnJvciBUZXh0dXJlTlVMTDo6c2V0SW1hZ2UoR0xlbnVtIHRhcmdl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNr
U3RhdGUgJnVucGFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqcGl4ZWxzKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IFJlYWQg
YWxsIGluY29taW5nIHBpeGVsIGRhdGEgKG1heWJlIGhhc2ggaXQ/KSB0byBtYWtlIHN1cmUgd2Ug
ZG9uJ3QgcmVhZCBvdXQKKyAgICAvLyBvZiBib3VuZHMgZHVlIHRvIHZhbGlkYXRpb24gYnVncy4K
KyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVOVUxMOjpz
ZXRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAorZ2w6OkVycm9yIFRleHR1cmVOVUxMOjpzZXRTdWJJ
bWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkJveCAmYXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGZvcm1hdCwKQEAgLTQzLDExICs0NiwxMSBAQCBnbDo6RXJyb3IgVGV4dHVyZU5VTEw6OnNl
dFN1YkltYWdlKEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKIHsKLSAgICBVTklNUExF
TUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cisg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlTlVMTDo6c2V0
Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsCitnbDo6RXJyb3IgVGV4dHVyZU5VTEw6OnNl
dENvbXByZXNzZWRJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMg
JnNpemUsCkBAIC01NSwxMSArNTgsMTEgQEAgZ2w6OkVycm9yIFRleHR1cmVOVUxMOjpzZXRDb21w
cmVzc2VkSW1hZ2UoR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpCiB7Ci0gICAgVU5JTVBMRU1F
TlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAg
IHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZU5VTEw6OnNldENv
bXByZXNzZWRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAorZ2w6OkVycm9yIFRleHR1cmVOVUxMOjpz
ZXRDb21wcmVzc2VkU3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3gg
JmFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZm9ybWF0LApAQCAtNjcsNzcgKzcwLDc5IEBAIGdsOjpFcnJvciBUZXh0dXJlTlVMTDo6c2V0
Q29tcHJlc3NlZFN1YkltYWdlKEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQogewot
ICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1
cmVOVUxMOjpjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlTlVMTDo6
Y29weUltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpCiB7Ci0gICAgVU5JTVBMRU1FTlRF
RCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZU5VTEw6OmNvcHlTdWJJ
bWFnZShHTGVudW0gdGFyZ2V0LAorZ2w6OkVycm9yIFRleHR1cmVOVUxMOjpjb3B5U3ViSW1hZ2Uo
Q29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpCiB7Ci0gICAg
VU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZU5V
TEw6OnNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlTlVMTDo6c2V0
U3RvcmFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGV2ZWxzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6RXh0ZW50cyAmc2l6ZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlTlVMTDo6c2V0RUdMSW1hZ2VUYXJnZXQoR0xl
bnVtIHRhcmdldCwgZWdsOjpJbWFnZSAqaW1hZ2UpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZU5VTEw6OnNldEltYWdlRXh0ZXJu
YWwoR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlZ2w6OlN0cmVhbSAqc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGVnbDo6U3RyZWFtOjpHTFRleHR1cmVEZXNjcmlwdGlvbiAmZGVzYykKIHsK
LSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBUZXh0
dXJlTlVMTDo6Z2VuZXJhdGVNaXBtYXAoKQorZ2w6OkVycm9yIFRleHR1cmVOVUxMOjpnZW5lcmF0
ZU1pcG1hcChDb250ZXh0SW1wbCAqY29udGV4dEltcGwpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgp
OwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogfQogCiB2b2lkIFRleHR1cmVOVUxMOjpzZXRCYXNlTGV2ZWwoR0x1
aW50IGJhc2VMZXZlbCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgVGV4dHVy
ZU5VTEw6OmJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCiB7Ci0gICAgVU5JTVBM
RU1FTlRFRCgpOwogfQogCiB2b2lkIFRleHR1cmVOVUxMOjpyZWxlYXNlVGV4SW1hZ2UoKQogewot
ICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAogdm9pZCBUZXh0dXJlTlVMTDo6c3luY1N0YXRlKGNv
bnN0IGdsOjpUZXh0dXJlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykKIHsKLSAgICBVTklNUExFTUVO
VEVEKCk7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlTlVMTDo6c2V0U3RvcmFnZU11bHRpc2FtcGxl
KENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZz
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIGZpeGVkU2FtcGxlTG9jYXRpb25zKQoreworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
fQogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1RleHR1cmVOVUxMLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9UZXh0dXJlTlVMTC5oCmlu
ZGV4IDEwYzJkMzUwM2E5ZDA0N2U3M2Y4NmNiZDFmNTQ1MmE2NjQ0NDljMzguLmM1MjkwOTBmYjA2
NDUwYTYyMTc2NzI3ZGZhOWZlZjBjNmRlZGZhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1RleHR1cmVOVUxMLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVGV4dHVy
ZU5VTEwuaApAQCAtMjEsNyArMjEsOCBAQCBjbGFzcyBUZXh0dXJlTlVMTCA6IHB1YmxpYyBUZXh0
dXJlSW1wbAogICAgIFRleHR1cmVOVUxMKGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnN0YXRlKTsK
ICAgICB+VGV4dHVyZU5VTEwoKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciBzZXRJbWFnZShH
TGVudW0gdGFyZ2V0LAorICAgIGdsOjpFcnJvciBzZXRJbWFnZShDb250ZXh0SW1wbCAqY29udGV4
dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50
cyAmc2l6ZSwKQEAgLTI5LDcgKzMwLDggQEAgY2xhc3MgVGV4dHVyZU5VTEwgOiBwdWJsaWMgVGV4
dHVyZUltcGwKICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCiAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgZ2w6
OkVycm9yIHNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgZ2w6OkVycm9yIHNldFN1Yklt
YWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LApAQCAtMzcsMTQgKzM5LDE2IEBAIGNsYXNz
IFRleHR1cmVOVUxMIDogcHVibGljIFRleHR1cmVJbXBsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJy
b3Igc2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgZ2w6OkVycm9yIHNldENv
bXByZXNzZWRJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9y
IHNldENvbXByZXNzZWRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAorICAgIGdsOjpFcnJvciBzZXRD
b21wcmVzc2VkU3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LApAQCAtNTIsMTggKzU2LDIxIEBAIGNsYXNzIFRl
eHR1cmVOVUxMIDogcHVibGljIFRleHR1cmVJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJv
ciBjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICBnbDo6RXJyb3IgY29weUltYWdlKENvbnRl
eHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAogICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJv
ciBjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICBnbDo6RXJyb3IgY29weVN1YkltYWdl
KENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJl
YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291
cmNlKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciBzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQs
CisgICAgZ2w6OkVycm9yIHNldFN0b3JhZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGxldmVscywKICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMg
JnNpemUpIG92ZXJyaWRlOwpAQCAtNzQsNyArODEsNyBAQCBjbGFzcyBUZXh0dXJlTlVMTCA6IHB1
YmxpYyBUZXh0dXJlSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3Ry
ZWFtICpzdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpT
dHJlYW06OkdMVGV4dHVyZURlc2NyaXB0aW9uICZkZXNjKSBvdmVycmlkZTsKIAotICAgIGdsOjpF
cnJvciBnZW5lcmF0ZU1pcG1hcCgpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBnZW5lcmF0ZU1p
cG1hcChDb250ZXh0SW1wbCAqY29udGV4dEltcGwpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRC
YXNlTGV2ZWwoR0x1aW50IGJhc2VMZXZlbCkgb3ZlcnJpZGU7CiAKQEAgLTgyLDYgKzg5LDEzIEBA
IGNsYXNzIFRleHR1cmVOVUxMIDogcHVibGljIFRleHR1cmVJbXBsCiAgICAgdm9pZCByZWxlYXNl
VGV4SW1hZ2UoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpUZXh0
dXJlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJyb3Igc2V0
U3RvcmFnZU11bHRpc2FtcGxlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGZpeGVkU2FtcGxlTG9jYXRpb25zKSBv
dmVycmlkZTsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVHJhbnNmb3JtRmVlZGJh
Y2tOVUxMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9udWxsL1RyYW5zZm9ybUZlZWRiYWNrTlVMTC5jcHAKaW5kZXggZTE0MzNmYjJkMDU2ZTY3MDQ5
MmQ4Y2NjMmI5NjVkZDY0NDRmMmI2OS4uYjI2ZjI5YWQxNzY1YTM5NWZiM2JjZjMxMjE0ZjlmYTE2
NWM4N2JlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL251bGwvVHJhbnNmb3JtRmVlZGJhY2tOVUxMLmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9UcmFuc2Zvcm1GZWVkYmFj
a05VTEwuY3BwCkBAIC0yNSwzMyArMjUsMjcgQEAgVHJhbnNmb3JtRmVlZGJhY2tOVUxMOjp+VHJh
bnNmb3JtRmVlZGJhY2tOVUxMKCkKIAogdm9pZCBUcmFuc2Zvcm1GZWVkYmFja05VTEw6OmJlZ2lu
KEdMZW51bSBwcmltaXRpdmVNb2RlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAogdm9p
ZCBUcmFuc2Zvcm1GZWVkYmFja05VTEw6OmVuZCgpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwog
fQogCiB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrTlVMTDo6cGF1c2UoKQogewotICAgIFVOSU1QTEVN
RU5URUQoKTsKIH0KIAogdm9pZCBUcmFuc2Zvcm1GZWVkYmFja05VTEw6OnJlc3VtZSgpCiB7Ci0g
ICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCiB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrTlVMTDo6Ymlu
ZEdlbmVyaWNCdWZmZXIoY29uc3QgQmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4gJmJpbmRpbmcp
CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCiB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrTlVM
TDo6YmluZEluZGV4ZWRCdWZmZXIoc2l6ZV90IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPGdsOjpC
dWZmZXI+ICZiaW5kaW5nKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAogfSAgLy8gbmFt
ZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvcmVuZGVyZXJfdXRpbHMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVyX3V0aWxzLmNwcAppbmRleCA2ZTc2MDM4YjU1
NGJmZmQxMDIyOTdkOWFiNjQ1NGE4ZDE4OGMxMjZhLi5jYzA0ZGJiMTQzN2FlZmIyZTJjMjk1MDM0
Y2Q5ZTU0YWI0ZWVhMGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvcmVuZGVyZXJfdXRpbHMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9yZW5kZXJlcl91dGlscy5jcHAKQEAgLTI1
MiwxMCArMjUyLDcgQEAgdm9pZCBQYWNrUGl4ZWxzKGNvbnN0IFBhY2tQaXhlbHNQYXJhbXMgJnBh
cmFtcywKIAogQ29sb3JXcml0ZUZ1bmN0aW9uIEdldENvbG9yV3JpdGVGdW5jdGlvbihjb25zdCBn
bDo6Rm9ybWF0VHlwZSAmZm9ybWF0VHlwZSkKIHsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
dXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1
Y3RvcnMiCiAgICAgc3RhdGljIGNvbnN0IEZvcm1hdFdyaXRlRnVuY3Rpb25NYXAgZm9ybWF0VHlw
ZU1hcCA9IEJ1aWxkRm9ybWF0V3JpdGVGdW5jdGlvbk1hcCgpOwotI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHBvcAogICAgIGF1dG8gaXRlciA9IGZvcm1hdFR5cGVNYXAuZmluZChmb3JtYXRUeXBl
KTsKICAgICBBU1NFUlQoaXRlciAhPSBmb3JtYXRUeXBlTWFwLmVuZCgpKTsKICAgICBpZiAoaXRl
ciAhPSBmb3JtYXRUeXBlTWFwLmVuZCgpKQpAQCAtMjcxLDggKzI2OCwyNSBAQCBDb2xvcldyaXRl
RnVuY3Rpb24gR2V0Q29sb3JXcml0ZUZ1bmN0aW9uKGNvbnN0IGdsOjpGb3JtYXRUeXBlICZmb3Jt
YXRUeXBlKQogQ29sb3JDb3B5RnVuY3Rpb24gR2V0RmFzdENvcHlGdW5jdGlvbihjb25zdCBGYXN0
Q29weUZ1bmN0aW9uTWFwICZmYXN0Q29weUZ1bmN0aW9ucywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZvcm1hdFR5cGUgJmZvcm1hdFR5cGUpCiB7Ci0g
ICAgYXV0byBpdGVyID0gZmFzdENvcHlGdW5jdGlvbnMuZmluZChmb3JtYXRUeXBlKTsKLSAgICBy
ZXR1cm4gKGl0ZXIgIT0gZmFzdENvcHlGdW5jdGlvbnMuZW5kKCkpID8gaXRlci0+c2Vjb25kIDog
bnVsbHB0cjsKKyAgICByZXR1cm4gZmFzdENvcHlGdW5jdGlvbnMuZ2V0KGZvcm1hdFR5cGUpOwor
fQorCitib29sIEZhc3RDb3B5RnVuY3Rpb25NYXA6Omhhcyhjb25zdCBnbDo6Rm9ybWF0VHlwZSAm
Zm9ybWF0VHlwZSkgY29uc3QKK3sKKyAgICByZXR1cm4gKGdldChmb3JtYXRUeXBlKSAhPSBudWxs
cHRyKTsKK30KKworQ29sb3JDb3B5RnVuY3Rpb24gRmFzdENvcHlGdW5jdGlvbk1hcDo6Z2V0KGNv
bnN0IGdsOjpGb3JtYXRUeXBlICZmb3JtYXRUeXBlKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBtU2l6ZTsgKytpbmRleCkKKyAgICB7CisgICAgICAgIGlmICht
RGF0YVtpbmRleF0uZm9ybWF0ID09IGZvcm1hdFR5cGUuZm9ybWF0ICYmIG1EYXRhW2luZGV4XS50
eXBlID09IGZvcm1hdFR5cGUudHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1E
YXRhW2luZGV4XS5mdW5jOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVyX3V0aWxzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvcmVuZGVyZXJfdXRpbHMuaAppbmRl
eCBlMDg3MDMwMDA5N2NhOGQyOTBjMzM3YjMyMmIzNWZmN2E5ZjE1M2M5Li44MDNjOGMyOTg2ZTRi
ODNiODI0NWI1ZWVhZGYzZDllM2RlM2EzMzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvcmVuZGVyZXJfdXRpbHMuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvcmVuZGVyZXJfdXRpbHMu
aApAQCAtNDQsNyArNDQsMjcgQEAgdHlwZWRlZiB2b2lkICgqQ29sb3JSZWFkRnVuY3Rpb24pKGNv
bnN0IHVpbnQ4X3QgKnNvdXJjZSwgdWludDhfdCAqZGVzdCk7CiB0eXBlZGVmIHZvaWQgKCpDb2xv
cldyaXRlRnVuY3Rpb24pKGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSwgdWludDhfdCAqZGVzdCk7CiB0
eXBlZGVmIHZvaWQgKCpDb2xvckNvcHlGdW5jdGlvbikoY29uc3QgdWludDhfdCAqc291cmNlLCB1
aW50OF90ICpkZXN0KTsKIAotdHlwZWRlZiBzdGQ6Om1hcDxnbDo6Rm9ybWF0VHlwZSwgQ29sb3JD
b3B5RnVuY3Rpb24+IEZhc3RDb3B5RnVuY3Rpb25NYXA7CitjbGFzcyBGYXN0Q29weUZ1bmN0aW9u
TWFwCit7CisgIHB1YmxpYzoKKyAgICBzdHJ1Y3QgRW50cnkKKyAgICB7CisgICAgICAgIEdMZW51
bSBmb3JtYXQ7CisgICAgICAgIEdMZW51bSB0eXBlOworICAgICAgICBDb2xvckNvcHlGdW5jdGlv
biBmdW5jOworICAgIH07CisKKyAgICBjb25zdGV4cHIgRmFzdENvcHlGdW5jdGlvbk1hcCgpIDog
RmFzdENvcHlGdW5jdGlvbk1hcChudWxscHRyLCAwKSB7fQorCisgICAgY29uc3RleHByIEZhc3RD
b3B5RnVuY3Rpb25NYXAoY29uc3QgRW50cnkgKmRhdGEsIHNpemVfdCBzaXplKSA6IG1TaXplKHNp
emUpLCBtRGF0YShkYXRhKSB7fQorCisgICAgYm9vbCBoYXMoY29uc3QgZ2w6OkZvcm1hdFR5cGUg
JmZvcm1hdFR5cGUpIGNvbnN0OworICAgIENvbG9yQ29weUZ1bmN0aW9uIGdldChjb25zdCBnbDo6
Rm9ybWF0VHlwZSAmZm9ybWF0VHlwZSkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBzaXplX3Qg
bVNpemU7CisgICAgY29uc3QgRW50cnkgKm1EYXRhOworfTsKIAogc3RydWN0IFBhY2tQaXhlbHNQ
YXJhbXMKIHsKQEAgLTc1LDYgKzk1LDEzIEBAIENvbG9yV3JpdGVGdW5jdGlvbiBHZXRDb2xvcldy
aXRlRnVuY3Rpb24oY29uc3QgZ2w6OkZvcm1hdFR5cGUgJmZvcm1hdFR5cGUpOwogQ29sb3JDb3B5
RnVuY3Rpb24gR2V0RmFzdENvcHlGdW5jdGlvbihjb25zdCBGYXN0Q29weUZ1bmN0aW9uTWFwICZm
YXN0Q29weUZ1bmN0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkZvcm1hdFR5cGUgJmZvcm1hdFR5cGUpOwogCit1c2luZyBJbml0aWFsaXplVGV4
dHVyZURhdGFGdW5jdGlvbiA9IHZvaWQgKCopKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRw
dXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBvdXRwdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOworCiB1c2luZyBMb2FkSW1hZ2VGdW5j
dGlvbiA9IHZvaWQgKCopKHNpemVfdCB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGRlcHRoLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9CdWZmZXJWay5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmNwcAppbmRleCBi
YzE2YzgyZTkyNzc1OTU0ZDcyYzM0YzVhYTdkOTc1ODlkYzQ0ZGJiLi5lYjc2Yjg1NzY5OTdhODA0
MjQyNTNjZDllMmYyYjkyOWZmZTU3OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmNwcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZr
LmNwcApAQCAtMTAsMTEgKzEwLDEzIEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL0J1ZmZlclZrLmgiCiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL1JlbmRlcmVyVmsuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CiAKLUJ1ZmZl
clZrOjpCdWZmZXJWaygpIDogQnVmZmVySW1wbCgpCitCdWZmZXJWazo6QnVmZmVyVmsoY29uc3Qg
Z2w6OkJ1ZmZlclN0YXRlICZzdGF0ZSkgOiBCdWZmZXJJbXBsKHN0YXRlKSwgbVJlcXVpcmVkU2l6
ZSgwKQogewogfQogCkBAIC0yMiwxOSArMjQsOTMgQEAgQnVmZmVyVms6On5CdWZmZXJWaygpCiB7
CiB9CiAKLWdsOjpFcnJvciBCdWZmZXJWazo6c2V0RGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2
b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgR0xlbnVtIHVzYWdlKQordm9pZCBCdWZmZXJWazo6ZGVz
dHJveShDb250ZXh0SW1wbCAqY29udGV4dEltcGwpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIFZrRGV2aWNl
IGRldmljZSA9IEdldEFzPENvbnRleHRWaz4oY29udGV4dEltcGwpLT5nZXREZXZpY2UoKTsKKwor
ICAgIG1CdWZmZXIuZGVzdHJveShkZXZpY2UpOwogfQogCi1nbDo6RXJyb3IgQnVmZmVyVms6OnNl
dFN1YkRhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIHNp
emVfdCBvZmZzZXQpCitnbDo6RXJyb3IgQnVmZmVyVms6OnNldERhdGEoQ29udGV4dEltcGwgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB1c2FnZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgQ29udGV4dFZrICpjb250ZXh0VmsgPSBHZXRB
czxDb250ZXh0Vms+KGNvbnRleHQpOworICAgIGF1dG8gZGV2aWNlICAgICAgICAgID0gY29udGV4
dFZrLT5nZXREZXZpY2UoKTsKKworICAgIC8vIFRPRE8oam1hZGlsbCk6IFByb3BlciB1c2FnZSBi
aXQgaW1wbGVtZW50YXRpb24uIExpa2VseSB3aWxsIGludm9sdmUgbXVsdGlwbGUgYmFja2luZyBi
dWZmZXJzCisgICAgLy8gbGlrZSBpbiBEM0QxMS4KKyAgICBWa0J1ZmZlckNyZWF0ZUluZm8gY3Jl
YXRlSW5mbzsKKyAgICBjcmVhdGVJbmZvLnNUeXBlICAgICAgICAgICAgICAgICA9IFZLX1NUUlVD
VFVSRV9UWVBFX0JVRkZFUl9DUkVBVEVfSU5GTzsKKyAgICBjcmVhdGVJbmZvLnBOZXh0ICAgICAg
ICAgICAgICAgICA9IG51bGxwdHI7CisgICAgY3JlYXRlSW5mby5mbGFncyAgICAgICAgICAgICAg
ICAgPSAwOworICAgIGNyZWF0ZUluZm8uc2l6ZSAgICAgICAgICAgICAgICAgID0gc2l6ZTsKKyAg
ICBjcmVhdGVJbmZvLnVzYWdlICAgICAgICAgICAgICAgICA9IFZLX0JVRkZFUl9VU0FHRV9WRVJU
RVhfQlVGRkVSX0JJVDsKKyAgICBjcmVhdGVJbmZvLnNoYXJpbmdNb2RlICAgICAgICAgICA9IFZL
X1NIQVJJTkdfTU9ERV9FWENMVVNJVkU7CisgICAgY3JlYXRlSW5mby5xdWV1ZUZhbWlseUluZGV4
Q291bnQgPSAwOworICAgIGNyZWF0ZUluZm8ucFF1ZXVlRmFtaWx5SW5kaWNlcyAgID0gbnVsbHB0
cjsKKworICAgIHZrOjpCdWZmZXIgbmV3QnVmZmVyOworICAgIEFOR0xFX1RSWShuZXdCdWZmZXIu
aW5pdChkZXZpY2UsIGNyZWF0ZUluZm8pKTsKKworICAgIC8vIEZpbmQgYSBjb21wYXRpYmxlIG1l
bW9yeSBwb29sIGluZGV4LiBJZiB0aGUgaW5kZXggZG9lc24ndCBjaGFuZ2UsIHdlIGNvdWxkIGNh
Y2hlIGl0LgorICAgIC8vIE5vdCBmaW5kaW5nIGEgdmFsaWQgbWVtb3J5IHBvb2wgbWVhbnMgYW4g
b3V0LW9mLXNwZWMgZHJpdmVyLCBvciBpbnRlcm5hbCBlcnJvci4KKyAgICAvLyBUT0RPKGptYWRp
bGwpOiBNb3JlIGVmZmljaWVudCBtZW1vcnkgYWxsb2NhdGlvbi4KKyAgICBWa01lbW9yeVJlcXVp
cmVtZW50cyBtZW1vcnlSZXF1aXJlbWVudHM7CisgICAgdmtHZXRCdWZmZXJNZW1vcnlSZXF1aXJl
bWVudHMoZGV2aWNlLCBuZXdCdWZmZXIuZ2V0SGFuZGxlKCksICZtZW1vcnlSZXF1aXJlbWVudHMp
OworCisgICAgLy8gVGhlIHJlcXVpcmVtZW50cyBzaXplIGlzIG5vdCBhbHdheXMgZXF1YWwgdG8g
dGhlIHNwZWNpZmllZCBBUEkgc2l6ZS4KKyAgICBBU1NFUlQobWVtb3J5UmVxdWlyZW1lbnRzLnNp
emUgPj0gc2l6ZSk7CisgICAgbVJlcXVpcmVkU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obWVt
b3J5UmVxdWlyZW1lbnRzLnNpemUpOworCisgICAgVmtQaHlzaWNhbERldmljZU1lbW9yeVByb3Bl
cnRpZXMgbWVtb3J5UHJvcGVydGllczsKKyAgICB2a0dldFBoeXNpY2FsRGV2aWNlTWVtb3J5UHJv
cGVydGllcyhjb250ZXh0VmstPmdldFJlbmRlcmVyKCktPmdldFBoeXNpY2FsRGV2aWNlKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1lbW9yeVByb3BlcnRpZXMp
OworCisgICAgYXV0byBtZW1vcnlUeXBlSW5kZXggPQorICAgICAgICBGaW5kTWVtb3J5VHlwZSht
ZW1vcnlQcm9wZXJ0aWVzLCBtZW1vcnlSZXF1aXJlbWVudHMsCisgICAgICAgICAgICAgICAgICAg
ICAgIFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX1ZJU0lCTEVfQklUIHwgVktfTUVNT1JZX1BST1BF
UlRZX0hPU1RfQ09IRVJFTlRfQklUKTsKKyAgICBBTkdMRV9WS19DSEVDSyhtZW1vcnlUeXBlSW5k
ZXgudmFsaWQoKSwgVktfRVJST1JfSU5DT01QQVRJQkxFX0RSSVZFUik7CisKKyAgICBWa01lbW9y
eUFsbG9jYXRlSW5mbyBhbGxvY0luZm87CisgICAgYWxsb2NJbmZvLnNUeXBlICAgICAgICAgICA9
IFZLX1NUUlVDVFVSRV9UWVBFX01FTU9SWV9BTExPQ0FURV9JTkZPOworICAgIGFsbG9jSW5mby5w
TmV4dCAgICAgICAgICAgPSBudWxscHRyOworICAgIGFsbG9jSW5mby5tZW1vcnlUeXBlSW5kZXgg
PSBtZW1vcnlUeXBlSW5kZXgudmFsdWUoKTsKKyAgICBhbGxvY0luZm8uYWxsb2NhdGlvblNpemUg
ID0gbWVtb3J5UmVxdWlyZW1lbnRzLnNpemU7CisKKyAgICBBTkdMRV9UUlkobmV3QnVmZmVyLmdl
dE1lbW9yeSgpLmFsbG9jYXRlKGRldmljZSwgYWxsb2NJbmZvKSk7CisgICAgQU5HTEVfVFJZKG5l
d0J1ZmZlci5iaW5kTWVtb3J5KGRldmljZSkpOworCisgICAgbUJ1ZmZlci5yZXRhaW4oZGV2aWNl
LCBzdGQ6Om1vdmUobmV3QnVmZmVyKSk7CisKKyAgICBpZiAoZGF0YSkKKyAgICB7CisgICAgICAg
IEFOR0xFX1RSWShzZXREYXRhSW1wbChkZXZpY2UsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qg
Kj4oZGF0YSksIHNpemUsIDApKTsKKyAgICB9CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAotZ2w6OkVycm9yIEJ1ZmZlclZrOjpjb3B5U3ViRGF0YShCdWZmZXJJbXBsICpzb3VyY2Us
CitnbDo6RXJyb3IgQnVmZmVyVms6OnNldFN1YkRhdGEoQ29udGV4dEltcGwgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvZmZzZXQpCit7CisgICAgQVNTRVJUKG1CdWZmZXIuZ2V0SGFuZGxlKCkgIT0gVktf
TlVMTF9IQU5ETEUpOworICAgIEFTU0VSVChtQnVmZmVyLmdldE1lbW9yeSgpLmdldEhhbmRsZSgp
ICE9IFZLX05VTExfSEFORExFKTsKKworICAgIFZrRGV2aWNlIGRldmljZSA9IEdldEFzPENvbnRl
eHRWaz4oY29udGV4dCktPmdldERldmljZSgpOworCisgICAgQU5HTEVfVFJZKHNldERhdGFJbXBs
KGRldmljZSwgc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCAqPihkYXRhKSwgc2l6ZSwgb2Zmc2V0
KSk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKworZ2w6OkVycm9yIEJ1ZmZlclZr
Ojpjb3B5U3ViRGF0YShDb250ZXh0SW1wbCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQnVmZmVySW1wbCAqc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludHB0ciBzb3VyY2VPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50cHRyIGRlc3RPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWlwdHIgc2l6ZSkKQEAgLTQzLDIyICsxMTksNDYgQEAgZ2w6OkVycm9yIEJ1ZmZl
clZrOjpjb3B5U3ViRGF0YShCdWZmZXJJbXBsICpzb3VyY2UsCiAgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLWdsOjpFcnJvciBCdWZmZXJWazo6bWFwKEdM
ZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikKK2dsOjpFcnJvciBCdWZmZXJWazo6bWFwKENv
bnRleHRJbXBsICpjb250ZXh0LCBHTGVudW0gYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpCiB7Ci0g
ICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgIEFTU0VSVChtQnVmZmVyLmdldEhhbmRsZSgpICE9IFZLX05VTExfSEFORExF
KTsKKyAgICBBU1NFUlQobUJ1ZmZlci5nZXRNZW1vcnkoKS5nZXRIYW5kbGUoKSAhPSBWS19OVUxM
X0hBTkRMRSk7CisKKyAgICBWa0RldmljZSBkZXZpY2UgPSBHZXRBczxDb250ZXh0Vms+KGNvbnRl
eHQpLT5nZXREZXZpY2UoKTsKKworICAgIEFOR0xFX1RSWShtQnVmZmVyLmdldE1lbW9yeSgpLm1h
cChkZXZpY2UsIDAsIG1TdGF0ZS5nZXRTaXplKCksIDAsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCAqKj4obWFwUHRyKSkpOwor
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBCdWZmZXJWazo6bWFw
UmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nlc3MsIEdM
dm9pZCAqKm1hcFB0cikKK2dsOjpFcnJvciBCdWZmZXJWazo6bWFwUmFuZ2UoQ29udGV4dEltcGwg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgYWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHZvaWQgKiptYXBQdHIpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIEFTU0VSVChtQnVmZmVy
LmdldEhhbmRsZSgpICE9IFZLX05VTExfSEFORExFKTsKKyAgICBBU1NFUlQobUJ1ZmZlci5nZXRN
ZW1vcnkoKS5nZXRIYW5kbGUoKSAhPSBWS19OVUxMX0hBTkRMRSk7CisKKyAgICBWa0RldmljZSBk
ZXZpY2UgPSBHZXRBczxDb250ZXh0Vms+KGNvbnRleHQpLT5nZXREZXZpY2UoKTsKKworICAgIEFO
R0xFX1RSWSgKKyAgICAgICAgbUJ1ZmZlci5nZXRNZW1vcnkoKS5tYXAoZGV2aWNlLCBvZmZzZXQs
IGxlbmd0aCwgMCwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90ICoqPihtYXBQdHIpKSk7CisKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlclZrOjp1bm1hcChH
TGJvb2xlYW4gKnJlc3VsdCkKK2dsOjpFcnJvciBCdWZmZXJWazo6dW5tYXAoQ29udGV4dEltcGwg
KmNvbnRleHQsIEdMYm9vbGVhbiAqcmVzdWx0KQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICBBU1NFUlQobUJ1
ZmZlci5nZXRIYW5kbGUoKSAhPSBWS19OVUxMX0hBTkRMRSk7CisgICAgQVNTRVJUKG1CdWZmZXIu
Z2V0TWVtb3J5KCkuZ2V0SGFuZGxlKCkgIT0gVktfTlVMTF9IQU5ETEUpOworCisgICAgVmtEZXZp
Y2UgZGV2aWNlID0gR2V0QXM8Q29udGV4dFZrPihjb250ZXh0KS0+Z2V0RGV2aWNlKCk7CisKKyAg
ICBtQnVmZmVyLmdldE1lbW9yeSgpLnVubWFwKGRldmljZSk7CisKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEJ1ZmZlclZrOjpnZXRJbmRleFJhbmdlKEdMZW51bSB0
eXBlLApAQCAtNzEsNCArMTcxLDIyIEBAIGdsOjpFcnJvciBCdWZmZXJWazo6Z2V0SW5kZXhSYW5n
ZShHTGVudW0gdHlwZSwKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKIH0KIAordms6OkVycm9yIEJ1ZmZlclZrOjpzZXREYXRhSW1wbChWa0RldmljZSBkZXZpY2Us
IGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplLCBzaXplX3Qgb2Zmc2V0KQoreworICAg
IHVpbnQ4X3QgKm1hcFBvaW50ZXIgPSBudWxscHRyOworICAgIEFOR0xFX1RSWShtQnVmZmVyLmdl
dE1lbW9yeSgpLm1hcChkZXZpY2UsIG9mZnNldCwgc2l6ZSwgMCwgJm1hcFBvaW50ZXIpKTsKKyAg
ICBBU1NFUlQobWFwUG9pbnRlcik7CisKKyAgICBtZW1jcHkobWFwUG9pbnRlciwgZGF0YSwgc2l6
ZSk7CisKKyAgICBtQnVmZmVyLmdldE1lbW9yeSgpLnVubWFwKGRldmljZSk7CisKKyAgICByZXR1
cm4gdms6Ok5vRXJyb3IoKTsKK30KKworY29uc3Qgdms6OkJ1ZmZlciAmQnVmZmVyVms6OmdldFZr
QnVmZmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUJ1ZmZlcjsKK30KKwogfSAgLy8gbmFtZXNw
YWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmgKaW5kZXggZDAwMDY2MzQ1MjJkYTIz
ZWY0MDdlMDk2NjM5MmM0OWJmNjFhZGY4My4uNDVhZDUyYzBmOTY5NjE1NjczNWI3NGMyM2ZiNjVh
OTc5ZWQ5OWExNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9CdWZmZXJWay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQnVmZmVyVmsuaApAQCAtMTEsMzEgKzEx
LDU0IEBACiAjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9CVUZGRVJWS19IXwogCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvQnVmZmVySW1wbC5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9yZW5kZXJlcnZrX3V0aWxzLmgiCiAKIG5hbWVzcGFjZSByeAog
ewogCi1jbGFzcyBCdWZmZXJWayA6IHB1YmxpYyBCdWZmZXJJbXBsCitjbGFzcyBCdWZmZXJWayA6
IHB1YmxpYyBCdWZmZXJJbXBsLCBwdWJsaWMgUmVzb3VyY2VWawogewogICBwdWJsaWM6Ci0gICAg
QnVmZmVyVmsoKTsKKyAgICBCdWZmZXJWayhjb25zdCBnbDo6QnVmZmVyU3RhdGUgJnN0YXRlKTsK
ICAgICB+QnVmZmVyVmsoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRlc3Ryb3koQ29udGV4dEltcGwg
KmNvbnRleHRJbXBsKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciBzZXREYXRhKEdMZW51bSB0
YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBHTGVudW0gdXNhZ2UpIG92ZXJy
aWRlOwotICAgIGdsOjpFcnJvciBzZXRTdWJEYXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQg
KmRhdGEsIHNpemVfdCBzaXplLCBzaXplX3Qgb2Zmc2V0KSBvdmVycmlkZTsKLSAgICBnbDo6RXJy
b3IgY29weVN1YkRhdGEoQnVmZmVySW1wbCAqc291cmNlLAorICAgIGdsOjpFcnJvciBzZXREYXRh
KENvbnRleHRJbXBsICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKyAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdXNh
Z2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRTdWJEYXRhKENvbnRleHRJbXBsICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0KSBv
dmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY29weVN1YkRhdGEoQ29udGV4dEltcGwgKmNvbnRleHRJ
bXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJJbXBsICpzb3VyY2UsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIHNvdXJjZU9mZnNldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnRwdHIgZGVzdE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaXB0ciBzaXplKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgbWFwKEdMZW51
bSBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIG1hcFJh
bmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzLCBHTHZv
aWQgKiptYXBQdHIpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciB1bm1hcChHTGJvb2xlYW4gKnJl
c3VsdCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIG1hcChDb250ZXh0SW1wbCAqY29udGV4dElt
cGwsIEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikgb3ZlcnJpZGU7CisgICAgZ2w6OkVy
cm9yIG1hcFJhbmdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MsCisgICAgICAgICAg
ICAgICAgICAgICAgIEdMdm9pZCAqKm1hcFB0cikgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHVu
bWFwKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwgR0xib29sZWFuICpyZXN1bHQpIG92ZXJyaWRl
OwogCiAgICAgZ2w6OkVycm9yIGdldEluZGV4UmFuZ2UoR0xlbnVtIHR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmlt
aXRpdmVSZXN0YXJ0RW5hYmxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SW5k
ZXhSYW5nZSAqb3V0UmFuZ2UpIG92ZXJyaWRlOworCisgICAgY29uc3Qgdms6OkJ1ZmZlciAmZ2V0
VmtCdWZmZXIoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIHZrOjpFcnJvciBzZXREYXRhSW1w
bChWa0RldmljZSBkZXZpY2UsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplLCBzaXpl
X3Qgb2Zmc2V0KTsKKworICAgIHZrOjpCdWZmZXIgbUJ1ZmZlcjsKKyAgICBzaXplX3QgbVJlcXVp
cmVkU2l6ZTsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21waWxlclZrLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
Q29tcGlsZXJWay5jcHAKaW5kZXggZDNmMzFlYjBiNmU4NTczNTBhZGEwNjI2ZTliZTA2ZGVkNGM1
ODZmMS4uZjc4MWMwNzBiMDk4NDZjYjZjYWYxN2QyNzg1MjNhMTJkMjRmMDkzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9D
b21waWxlclZrLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL0NvbXBpbGVyVmsuY3BwCkBAIC0yNCwxNCArMjQsMTIgQEAgQ29tcGls
ZXJWazo6fkNvbXBpbGVyVmsoKQogCiBnbDo6RXJyb3IgQ29tcGlsZXJWazo6cmVsZWFzZSgpCiB7
Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBTaFNoYWRlck91dHB1
dCBDb21waWxlclZrOjpnZXRUcmFuc2xhdG9yT3V0cHV0VHlwZSgpIGNvbnN0CiB7Ci0gICAgVU5J
TVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBTaFNoYWRlck91dHB1dCgpOworICAgIHJldHVybiBT
SF9HTFNMX1ZVTEtBTl9PVVRQVVQ7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9D
b250ZXh0VmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9Db250ZXh0VmsuY3BwCmluZGV4IDhiZDA2MzMwMDE1MDlkZTNmNjMzMjQyYTdm
MTNjMjg4YTU0MTUzMjAuLjRiZmNjMmIwODU0MmY2MGM1ZDg0YzFmM2MyOWRhMDcxM2RjMDAzZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vQ29udGV4dFZrLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5jcHAKQEAgLTksNyArOSw5IEBACiAK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmgiCiAKKyNpbmNs
dWRlICJjb21tb24vYml0c2V0X3V0aWxzLmgiCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisj
aW5jbHVkZSAibGliQU5HTEUvUHJvZ3JhbS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9CdWZmZXJWay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9D
b21waWxlclZrLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRW
ay5oIgpAQCAtMjcsMjMgKzI5LDI0IEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL1RleHR1cmVWay5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UcmFu
c2Zvcm1GZWVkYmFja1ZrLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Zl
cnRleEFycmF5VmsuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vZm9ybWF0
dXRpbHN2ay5oIgogCiBuYW1lc3BhY2UgcngKIHsKIAogQ29udGV4dFZrOjpDb250ZXh0VmsoY29u
c3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUsIFJlbmRlcmVyVmsgKnJlbmRlcmVyKQotICAgIDog
Q29udGV4dEltcGwoc3RhdGUpLCBtUmVuZGVyZXIocmVuZGVyZXIpCisgICAgOiBDb250ZXh0SW1w
bChzdGF0ZSksIG1SZW5kZXJlcihyZW5kZXJlciksIG1DdXJyZW50RHJhd01vZGUoR0xfTk9ORSkK
IHsKIH0KIAogQ29udGV4dFZrOjp+Q29udGV4dFZrKCkKIHsKKyAgICBpbnZhbGlkYXRlQ3VycmVu
dFBpcGVsaW5lKCk7CiB9CiAKIGdsOjpFcnJvciBDb250ZXh0Vms6OmluaXRpYWxpemUoKQogewot
ICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIENvbnRl
eHRWazo6Zmx1c2goKQpAQCAtNTgsMTAgKzYxLDI3MSBAQCBnbDo6RXJyb3IgQ29udGV4dFZrOjpm
aW5pc2goKQogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQog
CitnbDo6RXJyb3IgQ29udGV4dFZrOjppbml0UGlwZWxpbmUoKQoreworICAgIEFTU0VSVCghbUN1
cnJlbnRQaXBlbGluZS52YWxpZCgpKTsKKworICAgIFZrRGV2aWNlIGRldmljZSAgICAgICA9IG1S
ZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgY29uc3QgYXV0byAmc3RhdGUgICAgID0gbVN0YXRl
LmdldFN0YXRlKCk7CisgICAgY29uc3QgYXV0byAmcHJvZ3JhbUdMID0gc3RhdGUuZ2V0UHJvZ3Jh
bSgpOworICAgIGNvbnN0IGF1dG8gJnZhbyAgICAgICA9IHN0YXRlLmdldFZlcnRleEFycmF5KCk7
CisgICAgY29uc3QgYXV0byAmYXR0cmlicyAgID0gdmFvLT5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7
CisgICAgY29uc3QgYXV0byAmYmluZGluZ3MgID0gdmFvLT5nZXRWZXJ0ZXhCaW5kaW5ncygpOwor
ICAgIGNvbnN0IGF1dG8gJnByb2dyYW1WayA9IEdldEltcGxBczxQcm9ncmFtVms+KHByb2dyYW1H
TCk7CisgICAgY29uc3QgYXV0byAqZHJhd0ZCTyAgID0gc3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVy
KCk7CisgICAgRnJhbWVidWZmZXJWayAqdmtGQk8gID0gR2V0SW1wbEFzPEZyYW1lYnVmZmVyVms+
KGRyYXdGQk8pOworCisgICAgLy8geyB2ZXJ0ZXgsIGZyYWdtZW50IH0KKyAgICBWa1BpcGVsaW5l
U2hhZGVyU3RhZ2VDcmVhdGVJbmZvIHNoYWRlclN0YWdlc1syXTsKKworICAgIHNoYWRlclN0YWdl
c1swXS5zVHlwZSAgICAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfUElQRUxJTkVfU0hB
REVSX1NUQUdFX0NSRUFURV9JTkZPOworICAgIHNoYWRlclN0YWdlc1swXS5wTmV4dCAgICAgICAg
ICAgICAgID0gbnVsbHB0cjsKKyAgICBzaGFkZXJTdGFnZXNbMF0uZmxhZ3MgICAgICAgICAgICAg
ICA9IDA7CisgICAgc2hhZGVyU3RhZ2VzWzBdLnN0YWdlICAgICAgICAgICAgICAgPSBWS19TSEFE
RVJfU1RBR0VfVkVSVEVYX0JJVDsKKyAgICBzaGFkZXJTdGFnZXNbMF0ubW9kdWxlICAgICAgICAg
ICAgICA9IHByb2dyYW1Way0+Z2V0TGlua2VkVmVydGV4TW9kdWxlKCkuZ2V0SGFuZGxlKCk7Cisg
ICAgc2hhZGVyU3RhZ2VzWzBdLnBOYW1lICAgICAgICAgICAgICAgPSAibWFpbiI7CisgICAgc2hh
ZGVyU3RhZ2VzWzBdLnBTcGVjaWFsaXphdGlvbkluZm8gPSBudWxscHRyOworCisgICAgc2hhZGVy
U3RhZ2VzWzFdLnNUeXBlICAgICAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9QSVBFTElO
RV9TSEFERVJfU1RBR0VfQ1JFQVRFX0lORk87CisgICAgc2hhZGVyU3RhZ2VzWzFdLnBOZXh0ICAg
ICAgICAgICAgICAgPSBudWxscHRyOworICAgIHNoYWRlclN0YWdlc1sxXS5mbGFncyAgICAgICAg
ICAgICAgID0gMDsKKyAgICBzaGFkZXJTdGFnZXNbMV0uc3RhZ2UgICAgICAgICAgICAgICA9IFZL
X1NIQURFUl9TVEFHRV9GUkFHTUVOVF9CSVQ7CisgICAgc2hhZGVyU3RhZ2VzWzFdLm1vZHVsZSAg
ICAgICAgICAgICAgPSBwcm9ncmFtVmstPmdldExpbmtlZEZyYWdtZW50TW9kdWxlKCkuZ2V0SGFu
ZGxlKCk7CisgICAgc2hhZGVyU3RhZ2VzWzFdLnBOYW1lICAgICAgICAgICAgICAgPSAibWFpbiI7
CisgICAgc2hhZGVyU3RhZ2VzWzFdLnBTcGVjaWFsaXphdGlvbkluZm8gPSBudWxscHRyOworCisg
ICAgLy8gUHJvY2VzcyB2ZXJ0ZXggYXR0cmlidXRlcworICAgIC8vIFRPRE8oam1hZGlsbCk6IENh
Y2hpbmcgd2l0aCBkaXJ0eSBiaXRzLgorICAgIHN0ZDo6dmVjdG9yPFZrVmVydGV4SW5wdXRCaW5k
aW5nRGVzY3JpcHRpb24+IHZlcnRleEJpbmRpbmdzOworICAgIHN0ZDo6dmVjdG9yPFZrVmVydGV4
SW5wdXRBdHRyaWJ1dGVEZXNjcmlwdGlvbj4gdmVydGV4QXR0cmliczsKKworICAgIGZvciAoYXV0
byBhdHRyaWJJbmRleCA6IGFuZ2xlOjpJdGVyYXRlQml0U2V0KHByb2dyYW1HTC0+Z2V0QWN0aXZl
QXR0cmliTG9jYXRpb25zTWFzaygpKSkKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8gJmF0dHJp
YiA9IGF0dHJpYnNbYXR0cmliSW5kZXhdOworICAgICAgICBjb25zdCBhdXRvICZiaW5kaW5nID0g
YmluZGluZ3NbYXR0cmliLmJpbmRpbmdJbmRleF07CisgICAgICAgIGlmIChhdHRyaWIuZW5hYmxl
ZCkKKyAgICAgICAgeworICAgICAgICAgICAgVmtWZXJ0ZXhJbnB1dEJpbmRpbmdEZXNjcmlwdGlv
biBiaW5kaW5nRGVzYzsKKyAgICAgICAgICAgIGJpbmRpbmdEZXNjLmJpbmRpbmcgPSBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4odmVydGV4QmluZGluZ3Muc2l6ZSgpKTsKKyAgICAgICAgICAgIGJpbmRp
bmdEZXNjLnN0cmlkZSAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZ2w6OkNvbXB1dGVWZXJ0ZXhB
dHRyaWJ1dGVUeXBlU2l6ZShhdHRyaWIpKTsKKyAgICAgICAgICAgIGJpbmRpbmdEZXNjLmlucHV0
UmF0ZSA9CisgICAgICAgICAgICAgICAgKGJpbmRpbmcuZGl2aXNvciA+IDAgPyBWS19WRVJURVhf
SU5QVVRfUkFURV9JTlNUQU5DRSA6IFZLX1ZFUlRFWF9JTlBVVF9SQVRFX1ZFUlRFWCk7CisKKyAg
ICAgICAgICAgIGdsOjpWZXJ0ZXhGb3JtYXRUeXBlIHZlcnRleEZvcm1hdFR5cGUgPSBnbDo6R2V0
VmVydGV4Rm9ybWF0VHlwZShhdHRyaWIpOworCisgICAgICAgICAgICBWa1ZlcnRleElucHV0QXR0
cmlidXRlRGVzY3JpcHRpb24gYXR0cmliRGVzYzsKKyAgICAgICAgICAgIGF0dHJpYkRlc2MuYmlu
ZGluZyAgPSBiaW5kaW5nRGVzYy5iaW5kaW5nOworICAgICAgICAgICAgYXR0cmliRGVzYy5mb3Jt
YXQgICA9IHZrOjpHZXROYXRpdmVWZXJ0ZXhGb3JtYXQodmVydGV4Rm9ybWF0VHlwZSk7CisgICAg
ICAgICAgICBhdHRyaWJEZXNjLmxvY2F0aW9uID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGF0dHJp
YkluZGV4KTsKKyAgICAgICAgICAgIGF0dHJpYkRlc2Mub2Zmc2V0ID0KKyAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZU9mZnNldChhdHRy
aWIsIGJpbmRpbmcpKTsKKworICAgICAgICAgICAgdmVydGV4QmluZGluZ3MucHVzaF9iYWNrKGJp
bmRpbmdEZXNjKTsKKyAgICAgICAgICAgIHZlcnRleEF0dHJpYnMucHVzaF9iYWNrKGF0dHJpYkRl
c2MpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgVU5J
TVBMRU1FTlRFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVE9ETyhqbWFkaWxsKTog
VmFsaWRhdGUgd2l0aCBBU1NFUlQgYWdhaW5zdCBwaHlzaWNhbCBkZXZpY2UgbGltaXRzL2NhcHM/
CisgICAgVmtQaXBlbGluZVZlcnRleElucHV0U3RhdGVDcmVhdGVJbmZvIHZlcnRleElucHV0U3Rh
dGU7CisgICAgdmVydGV4SW5wdXRTdGF0ZS5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX1BJUEVM
SU5FX1ZFUlRFWF9JTlBVVF9TVEFURV9DUkVBVEVfSU5GTzsKKyAgICB2ZXJ0ZXhJbnB1dFN0YXRl
LnBOZXh0ID0gbnVsbHB0cjsKKyAgICB2ZXJ0ZXhJbnB1dFN0YXRlLmZsYWdzID0gMDsKKyAgICB2
ZXJ0ZXhJbnB1dFN0YXRlLnZlcnRleEJpbmRpbmdEZXNjcmlwdGlvbkNvdW50ICAgPSBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4odmVydGV4QmluZGluZ3Muc2l6ZSgpKTsKKyAgICB2ZXJ0ZXhJbnB1dFN0
YXRlLnBWZXJ0ZXhCaW5kaW5nRGVzY3JpcHRpb25zICAgICAgPSB2ZXJ0ZXhCaW5kaW5ncy5kYXRh
KCk7CisgICAgdmVydGV4SW5wdXRTdGF0ZS52ZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdGlvbkNvdW50
ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZlcnRleEF0dHJpYnMuc2l6ZSgpKTsKKyAgICB2ZXJ0
ZXhJbnB1dFN0YXRlLnBWZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdGlvbnMgICAgPSB2ZXJ0ZXhBdHRy
aWJzLmRhdGEoKTsKKworICAgIFZrUGlwZWxpbmVJbnB1dEFzc2VtYmx5U3RhdGVDcmVhdGVJbmZv
IGlucHV0QXNzZW1ibHlTdGF0ZTsKKyAgICBpbnB1dEFzc2VtYmx5U3RhdGUuc1R5cGUgICAgPSBW
S19TVFJVQ1RVUkVfVFlQRV9QSVBFTElORV9JTlBVVF9BU1NFTUJMWV9TVEFURV9DUkVBVEVfSU5G
TzsKKyAgICBpbnB1dEFzc2VtYmx5U3RhdGUucE5leHQgICAgPSBudWxscHRyOworICAgIGlucHV0
QXNzZW1ibHlTdGF0ZS5mbGFncyAgICA9IDA7CisgICAgaW5wdXRBc3NlbWJseVN0YXRlLnRvcG9s
b2d5ID0gZ2xfdms6OkdldFByaW1pdGl2ZVRvcG9sb2d5KG1DdXJyZW50RHJhd01vZGUpOworICAg
IGlucHV0QXNzZW1ibHlTdGF0ZS5wcmltaXRpdmVSZXN0YXJ0RW5hYmxlID0gVktfRkFMU0U7CisK
KyAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZ2aWV3cG9ydEdMID0gc3RhdGUuZ2V0Vmlld3BvcnQo
KTsKKyAgICBWa1ZpZXdwb3J0IHZpZXdwb3J0Vms7CisgICAgdmlld3BvcnRWay54ICAgICAgICA9
IHN0YXRpY19jYXN0PGZsb2F0Pih2aWV3cG9ydEdMLngpOworICAgIHZpZXdwb3J0VmsueSAgICAg
ICAgPSBzdGF0aWNfY2FzdDxmbG9hdD4odmlld3BvcnRHTC55KTsKKyAgICB2aWV3cG9ydFZrLndp
ZHRoICAgID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZpZXdwb3J0R0wud2lkdGgpOworICAgIHZpZXdw
b3J0VmsuaGVpZ2h0ICAgPSBzdGF0aWNfY2FzdDxmbG9hdD4odmlld3BvcnRHTC5oZWlnaHQpOwor
ICAgIHZpZXdwb3J0VmsubWluRGVwdGggPSBzdGF0ZS5nZXROZWFyUGxhbmUoKTsKKyAgICB2aWV3
cG9ydFZrLm1heERlcHRoID0gc3RhdGUuZ2V0RmFyUGxhbmUoKTsKKworICAgIC8vIFRPRE8oam1h
ZGlsbCk6IFNjaXNzb3IuCisgICAgVmtSZWN0MkQgc2Npc3NvclZrOworICAgIHNjaXNzb3JWay5v
ZmZzZXQueCAgICAgID0gdmlld3BvcnRHTC54OworICAgIHNjaXNzb3JWay5vZmZzZXQueSAgICAg
ID0gdmlld3BvcnRHTC55OworICAgIHNjaXNzb3JWay5leHRlbnQud2lkdGggID0gdmlld3BvcnRH
TC53aWR0aDsKKyAgICBzY2lzc29yVmsuZXh0ZW50LmhlaWdodCA9IHZpZXdwb3J0R0wuaGVpZ2h0
OworCisgICAgVmtQaXBlbGluZVZpZXdwb3J0U3RhdGVDcmVhdGVJbmZvIHZpZXdwb3J0U3RhdGU7
CisgICAgdmlld3BvcnRTdGF0ZS5zVHlwZSAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfUElQ
RUxJTkVfVklFV1BPUlRfU1RBVEVfQ1JFQVRFX0lORk87CisgICAgdmlld3BvcnRTdGF0ZS5wTmV4
dCAgICAgICAgID0gbnVsbHB0cjsKKyAgICB2aWV3cG9ydFN0YXRlLmZsYWdzICAgICAgICAgPSAw
OworICAgIHZpZXdwb3J0U3RhdGUudmlld3BvcnRDb3VudCA9IDE7CisgICAgdmlld3BvcnRTdGF0
ZS5wVmlld3BvcnRzICAgID0gJnZpZXdwb3J0Vms7CisgICAgdmlld3BvcnRTdGF0ZS5zY2lzc29y
Q291bnQgID0gMTsKKyAgICB2aWV3cG9ydFN0YXRlLnBTY2lzc29ycyAgICAgPSAmc2Npc3NvclZr
OworCisgICAgLy8gVE9ETyhqbWFkaWxsKTogRXh0cmEgcmFzdGVyaXplciBzdGF0ZSBmZWF0dXJl
cy4KKyAgICBWa1BpcGVsaW5lUmFzdGVyaXphdGlvblN0YXRlQ3JlYXRlSW5mbyByYXN0ZXJTdGF0
ZTsKKyAgICByYXN0ZXJTdGF0ZS5zVHlwZSAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVf
UElQRUxJTkVfUkFTVEVSSVpBVElPTl9TVEFURV9DUkVBVEVfSU5GTzsKKyAgICByYXN0ZXJTdGF0
ZS5wTmV4dCAgICAgICAgICAgID0gbnVsbHB0cjsKKyAgICByYXN0ZXJTdGF0ZS5mbGFncyAgICAg
ICAgICAgID0gMDsKKyAgICByYXN0ZXJTdGF0ZS5kZXB0aENsYW1wRW5hYmxlID0gVktfRkFMU0U7
CisgICAgcmFzdGVyU3RhdGUucmFzdGVyaXplckRpc2NhcmRFbmFibGUgPSBWS19GQUxTRTsKKyAg
ICByYXN0ZXJTdGF0ZS5wb2x5Z29uTW9kZSAgICAgICAgICAgICA9IFZLX1BPTFlHT05fTU9ERV9G
SUxMOworICAgIHJhc3RlclN0YXRlLmN1bGxNb2RlICAgICAgICAgICAgICAgID0gZ2xfdms6Okdl
dEN1bGxNb2RlKHN0YXRlLmdldFJhc3Rlcml6ZXJTdGF0ZSgpKTsKKyAgICByYXN0ZXJTdGF0ZS5m
cm9udEZhY2UgICAgICAgICAgICAgICA9IGdsX3ZrOjpHZXRGcm9udEZhY2Uoc3RhdGUuZ2V0UmFz
dGVyaXplclN0YXRlKCkuZnJvbnRGYWNlKTsKKyAgICByYXN0ZXJTdGF0ZS5kZXB0aEJpYXNFbmFi
bGUgICAgICAgICA9IFZLX0ZBTFNFOworICAgIHJhc3RlclN0YXRlLmRlcHRoQmlhc0NvbnN0YW50
RmFjdG9yID0gMC4wZjsKKyAgICByYXN0ZXJTdGF0ZS5kZXB0aEJpYXNDbGFtcCAgICAgICAgICA9
IDAuMGY7CisgICAgcmFzdGVyU3RhdGUuZGVwdGhCaWFzU2xvcGVGYWN0b3IgICAgPSAwLjBmOwor
ICAgIHJhc3RlclN0YXRlLmxpbmVXaWR0aCAgICAgICAgICAgICAgID0gc3RhdGUuZ2V0TGluZVdp
ZHRoKCk7CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBNdWx0aXNhbXBsZSBzdGF0ZS4KKyAgICBW
a1BpcGVsaW5lTXVsdGlzYW1wbGVTdGF0ZUNyZWF0ZUluZm8gbXVsdGlzYW1wbGVTdGF0ZTsKKyAg
ICBtdWx0aXNhbXBsZVN0YXRlLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfUElQRUxJTkVfTVVM
VElTQU1QTEVfU1RBVEVfQ1JFQVRFX0lORk87CisgICAgbXVsdGlzYW1wbGVTdGF0ZS5wTmV4dCA9
IG51bGxwdHI7CisgICAgbXVsdGlzYW1wbGVTdGF0ZS5mbGFncyA9IDA7CisgICAgbXVsdGlzYW1w
bGVTdGF0ZS5yYXN0ZXJpemF0aW9uU2FtcGxlcyA9IFZLX1NBTVBMRV9DT1VOVF8xX0JJVDsKKyAg
ICBtdWx0aXNhbXBsZVN0YXRlLnNhbXBsZVNoYWRpbmdFbmFibGUgID0gVktfRkFMU0U7CisgICAg
bXVsdGlzYW1wbGVTdGF0ZS5taW5TYW1wbGVTaGFkaW5nICAgICA9IDAuMGY7CisgICAgbXVsdGlz
YW1wbGVTdGF0ZS5wU2FtcGxlTWFzayAgICAgICAgICA9IG51bGxwdHI7CisgICAgbXVsdGlzYW1w
bGVTdGF0ZS5hbHBoYVRvQ292ZXJhZ2VFbmFibGUgPSBWS19GQUxTRTsKKyAgICBtdWx0aXNhbXBs
ZVN0YXRlLmFscGhhVG9PbmVFbmFibGUgICAgICA9IFZLX0ZBTFNFOworCisgICAgLy8gVE9ETyhq
bWFkaWxsKTogRGVwdGgvc3RlbmNpbCBzdGF0ZS4KKworICAgIC8vIFRPRE8oam1hZGlsbCk6IEJs
ZW5kIHN0YXRlL01SVC4KKyAgICBWa1BpcGVsaW5lQ29sb3JCbGVuZEF0dGFjaG1lbnRTdGF0ZSBi
bGVuZEF0dGFjaG1lbnRTdGF0ZTsKKyAgICBibGVuZEF0dGFjaG1lbnRTdGF0ZS5ibGVuZEVuYWJs
ZSAgICAgICAgID0gVktfRkFMU0U7CisgICAgYmxlbmRBdHRhY2htZW50U3RhdGUuc3JjQ29sb3JC
bGVuZEZhY3RvciA9IFZLX0JMRU5EX0ZBQ1RPUl9PTkU7CisgICAgYmxlbmRBdHRhY2htZW50U3Rh
dGUuZHN0Q29sb3JCbGVuZEZhY3RvciA9IFZLX0JMRU5EX0ZBQ1RPUl9PTkU7CisgICAgYmxlbmRB
dHRhY2htZW50U3RhdGUuY29sb3JCbGVuZE9wICAgICAgICA9IFZLX0JMRU5EX09QX0FERDsKKyAg
ICBibGVuZEF0dGFjaG1lbnRTdGF0ZS5zcmNBbHBoYUJsZW5kRmFjdG9yID0gVktfQkxFTkRfRkFD
VE9SX09ORTsKKyAgICBibGVuZEF0dGFjaG1lbnRTdGF0ZS5kc3RBbHBoYUJsZW5kRmFjdG9yID0g
VktfQkxFTkRfRkFDVE9SX09ORTsKKyAgICBibGVuZEF0dGFjaG1lbnRTdGF0ZS5hbHBoYUJsZW5k
T3AgICAgICAgID0gVktfQkxFTkRfT1BfQUREOworICAgIGJsZW5kQXR0YWNobWVudFN0YXRlLmNv
bG9yV3JpdGVNYXNrID0gKFZLX0NPTE9SX0NPTVBPTkVOVF9SX0JJVCB8IFZLX0NPTE9SX0NPTVBP
TkVOVF9HX0JJVCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VktfQ09MT1JfQ09NUE9ORU5UX0JfQklUIHwgVktfQ09MT1JfQ09NUE9ORU5UX0FfQklUKTsKKwor
ICAgIFZrUGlwZWxpbmVDb2xvckJsZW5kU3RhdGVDcmVhdGVJbmZvIGJsZW5kU3RhdGU7CisgICAg
YmxlbmRTdGF0ZS5zVHlwZSAgICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX1BJUEVMSU5F
X0NPTE9SX0JMRU5EX1NUQVRFX0NSRUFURV9JTkZPOworICAgIGJsZW5kU3RhdGUucE5leHQgICAg
ICAgICAgICAgPSAwOworICAgIGJsZW5kU3RhdGUuZmxhZ3MgICAgICAgICAgICAgPSAwOworICAg
IGJsZW5kU3RhdGUubG9naWNPcEVuYWJsZSAgICAgPSBWS19GQUxTRTsKKyAgICBibGVuZFN0YXRl
LmxvZ2ljT3AgICAgICAgICAgID0gVktfTE9HSUNfT1BfQ0xFQVI7CisgICAgYmxlbmRTdGF0ZS5h
dHRhY2htZW50Q291bnQgICA9IDE7CisgICAgYmxlbmRTdGF0ZS5wQXR0YWNobWVudHMgICAgICA9
ICZibGVuZEF0dGFjaG1lbnRTdGF0ZTsKKyAgICBibGVuZFN0YXRlLmJsZW5kQ29uc3RhbnRzWzBd
ID0gMC4wZjsKKyAgICBibGVuZFN0YXRlLmJsZW5kQ29uc3RhbnRzWzFdID0gMC4wZjsKKyAgICBi
bGVuZFN0YXRlLmJsZW5kQ29uc3RhbnRzWzJdID0gMC4wZjsKKyAgICBibGVuZFN0YXRlLmJsZW5k
Q29uc3RhbnRzWzNdID0gMC4wZjsKKworICAgIC8vIFRPRE8oam1hZGlsbCk6IER5bmFtaWMgc3Rh
dGUuCisgICAgdms6OlJlbmRlclBhc3MgKnJlbmRlclBhc3MgPSBudWxscHRyOworICAgIEFOR0xF
X1RSWV9SRVNVTFQodmtGQk8tPmdldFJlbmRlclBhc3MoZGV2aWNlKSwgcmVuZGVyUGFzcyk7Cisg
ICAgQVNTRVJUKHJlbmRlclBhc3MgJiYgcmVuZGVyUGFzcy0+dmFsaWQoKSk7CisKKyAgICB2azo6
UGlwZWxpbmVMYXlvdXQgKnBpcGVsaW5lTGF5b3V0ID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUllf
UkVTVUxUKHByb2dyYW1Way0+Z2V0UGlwZWxpbmVMYXlvdXQoZGV2aWNlKSwgcGlwZWxpbmVMYXlv
dXQpOworICAgIEFTU0VSVChwaXBlbGluZUxheW91dCAmJiBwaXBlbGluZUxheW91dC0+dmFsaWQo
KSk7CisKKyAgICBWa0dyYXBoaWNzUGlwZWxpbmVDcmVhdGVJbmZvIHBpcGVsaW5lSW5mbzsKKyAg
ICBwaXBlbGluZUluZm8uc1R5cGUgICAgICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX0dS
QVBISUNTX1BJUEVMSU5FX0NSRUFURV9JTkZPOworICAgIHBpcGVsaW5lSW5mby5wTmV4dCAgICAg
ICAgICAgICAgID0gbnVsbHB0cjsKKyAgICBwaXBlbGluZUluZm8uZmxhZ3MgICAgICAgICAgICAg
ICA9IDA7CisgICAgcGlwZWxpbmVJbmZvLnN0YWdlQ291bnQgICAgICAgICAgPSAyOworICAgIHBp
cGVsaW5lSW5mby5wU3RhZ2VzICAgICAgICAgICAgID0gc2hhZGVyU3RhZ2VzOworICAgIHBpcGVs
aW5lSW5mby5wVmVydGV4SW5wdXRTdGF0ZSAgID0gJnZlcnRleElucHV0U3RhdGU7CisgICAgcGlw
ZWxpbmVJbmZvLnBJbnB1dEFzc2VtYmx5U3RhdGUgPSAmaW5wdXRBc3NlbWJseVN0YXRlOworICAg
IHBpcGVsaW5lSW5mby5wVGVzc2VsbGF0aW9uU3RhdGUgID0gbnVsbHB0cjsKKyAgICBwaXBlbGlu
ZUluZm8ucFZpZXdwb3J0U3RhdGUgICAgICA9ICZ2aWV3cG9ydFN0YXRlOworICAgIHBpcGVsaW5l
SW5mby5wUmFzdGVyaXphdGlvblN0YXRlID0gJnJhc3RlclN0YXRlOworICAgIHBpcGVsaW5lSW5m
by5wTXVsdGlzYW1wbGVTdGF0ZSAgID0gJm11bHRpc2FtcGxlU3RhdGU7CisgICAgcGlwZWxpbmVJ
bmZvLnBEZXB0aFN0ZW5jaWxTdGF0ZSAgPSBudWxscHRyOworICAgIHBpcGVsaW5lSW5mby5wQ29s
b3JCbGVuZFN0YXRlICAgID0gJmJsZW5kU3RhdGU7CisgICAgcGlwZWxpbmVJbmZvLnBEeW5hbWlj
U3RhdGUgICAgICAgPSBudWxscHRyOworICAgIHBpcGVsaW5lSW5mby5sYXlvdXQgICAgICAgICAg
ICAgID0gcGlwZWxpbmVMYXlvdXQtPmdldEhhbmRsZSgpOworICAgIHBpcGVsaW5lSW5mby5yZW5k
ZXJQYXNzICAgICAgICAgID0gcmVuZGVyUGFzcy0+Z2V0SGFuZGxlKCk7CisgICAgcGlwZWxpbmVJ
bmZvLnN1YnBhc3MgICAgICAgICAgICAgPSAwOworICAgIHBpcGVsaW5lSW5mby5iYXNlUGlwZWxp
bmVIYW5kbGUgID0gVktfTlVMTF9IQU5ETEU7CisgICAgcGlwZWxpbmVJbmZvLmJhc2VQaXBlbGlu
ZUluZGV4ICAgPSAwOworCisgICAgdms6OlBpcGVsaW5lIG5ld1BpcGVsaW5lOworICAgIEFOR0xF
X1RSWShuZXdQaXBlbGluZS5pbml0R3JhcGhpY3MoZGV2aWNlLCBwaXBlbGluZUluZm8pKTsKKwor
ICAgIG1DdXJyZW50UGlwZWxpbmUucmV0YWluKGRldmljZSwgc3RkOjptb3ZlKG5ld1BpcGVsaW5l
KSk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKwogZ2w6OkVycm9yIENvbnRleHRW
azo6ZHJhd0FycmF5cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpCiB7
Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOworICAgIGlmIChtb2RlICE9IG1DdXJyZW50RHJhd01vZGUpCisgICAgeworICAg
ICAgICBpbnZhbGlkYXRlQ3VycmVudFBpcGVsaW5lKCk7CisgICAgICAgIG1DdXJyZW50RHJhd01v
ZGUgPSBtb2RlOworICAgIH0KKworICAgIGlmICghbUN1cnJlbnRQaXBlbGluZS52YWxpZCgpKQor
ICAgIHsKKyAgICAgICAgQU5HTEVfVFJZKGluaXRQaXBlbGluZSgpKTsKKyAgICAgICAgQVNTRVJU
KG1DdXJyZW50UGlwZWxpbmUudmFsaWQoKSk7CisgICAgfQorCisgICAgVmtEZXZpY2UgZGV2aWNl
ICAgICAgID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKyAgICBjb25zdCBhdXRvICZzdGF0ZSAg
ICAgPSBtU3RhdGUuZ2V0U3RhdGUoKTsKKyAgICBjb25zdCBhdXRvICZwcm9ncmFtR0wgPSBzdGF0
ZS5nZXRQcm9ncmFtKCk7CisgICAgY29uc3QgYXV0byAmdmFvICAgICAgID0gc3RhdGUuZ2V0VmVy
dGV4QXJyYXkoKTsKKyAgICBjb25zdCBhdXRvICZhdHRyaWJzICAgPSB2YW8tPmdldFZlcnRleEF0
dHJpYnV0ZXMoKTsKKyAgICBjb25zdCBhdXRvICZiaW5kaW5ncyAgPSB2YW8tPmdldFZlcnRleEJp
bmRpbmdzKCk7CisgICAgY29uc3QgYXV0byAqZHJhd0ZCTyAgID0gc3RhdGUuZ2V0RHJhd0ZyYW1l
YnVmZmVyKCk7CisgICAgRnJhbWVidWZmZXJWayAqdmtGQk8gID0gR2V0SW1wbEFzPEZyYW1lYnVm
ZmVyVms+KGRyYXdGQk8pOworICAgIFNlcmlhbCBxdWV1ZVNlcmlhbCAgICA9IG1SZW5kZXJlci0+
Z2V0Q3VycmVudFF1ZXVlU2VyaWFsKCk7CisKKyAgICAvLyBQcm9jZXNzIHZlcnRleCBhdHRyaWJ1
dGVzCisgICAgLy8gVE9ETyhqbWFkaWxsKTogQ2FjaGluZyB3aXRoIGRpcnR5IGJpdHMuCisgICAg
c3RkOjp2ZWN0b3I8VmtCdWZmZXI+IHZlcnRleEhhbmRsZXM7CisgICAgc3RkOjp2ZWN0b3I8VmtE
ZXZpY2VTaXplPiB2ZXJ0ZXhPZmZzZXRzOworCisgICAgZm9yIChhdXRvIGF0dHJpYkluZGV4IDog
YW5nbGU6Okl0ZXJhdGVCaXRTZXQocHJvZ3JhbUdMLT5nZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNN
YXNrKCkpKQorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byAmYXR0cmliICA9IGF0dHJpYnNbYXR0
cmliSW5kZXhdOworICAgICAgICBjb25zdCBhdXRvICZiaW5kaW5nID0gYmluZGluZ3NbYXR0cmli
LmJpbmRpbmdJbmRleF07CisgICAgICAgIGlmIChhdHRyaWIuZW5hYmxlZCkKKyAgICAgICAgewor
ICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogT2Zmc2V0IGhhbmRsaW5nLgorICAgICAgICAg
ICAgZ2w6OkJ1ZmZlciAqYnVmZmVyR0wgPSBiaW5kaW5nLmJ1ZmZlci5nZXQoKTsKKyAgICAgICAg
ICAgIEFTU0VSVChidWZmZXJHTCk7CisgICAgICAgICAgICBCdWZmZXJWayAqYnVmZmVyVmsgPSBH
ZXRJbXBsQXM8QnVmZmVyVms+KGJ1ZmZlckdMKTsKKyAgICAgICAgICAgIHZlcnRleEhhbmRsZXMu
cHVzaF9iYWNrKGJ1ZmZlclZrLT5nZXRWa0J1ZmZlcigpLmdldEhhbmRsZSgpKTsKKyAgICAgICAg
ICAgIHZlcnRleE9mZnNldHMucHVzaF9iYWNrKDApOworCisgICAgICAgICAgICBidWZmZXJWay0+
c2V0UXVldWVTZXJpYWwocXVldWVTZXJpYWwpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAg
ICAgICAgeworICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICB9CisgICAgfQor
CisgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIgPSBtUmVuZGVyZXItPmdldENv
bW1hbmRCdWZmZXIoKTsKKyAgICBBTkdMRV9UUlkodmtGQk8tPmJlZ2luUmVuZGVyUGFzcyhkZXZp
Y2UsIGNvbW1hbmRCdWZmZXIsIHF1ZXVlU2VyaWFsLCBzdGF0ZSkpOworCisgICAgY29tbWFuZEJ1
ZmZlci0+YmluZFBpcGVsaW5lKFZLX1BJUEVMSU5FX0JJTkRfUE9JTlRfR1JBUEhJQ1MsIG1DdXJy
ZW50UGlwZWxpbmUpOworICAgIGNvbW1hbmRCdWZmZXItPmJpbmRWZXJ0ZXhCdWZmZXJzKDAsIHZl
cnRleEhhbmRsZXMsIHZlcnRleE9mZnNldHMpOworICAgIGNvbW1hbmRCdWZmZXItPmRyYXcoY291
bnQsIDEsIGZpcnN0LCAwKTsKKyAgICBjb21tYW5kQnVmZmVyLT5lbmRSZW5kZXJQYXNzKCk7Cisg
ICAgQU5HTEVfVFJZKGNvbW1hbmRCdWZmZXItPmVuZCgpKTsKKworICAgIEFOR0xFX1RSWShzdWJt
aXRDb21tYW5kcygqY29tbWFuZEJ1ZmZlcikpOworCisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CiB9CiAKIGdsOjpFcnJvciBDb250ZXh0Vms6OmRyYXdBcnJheXNJbnN0YW5jZWQoR0xlbnVtIG1v
ZGUsCkBAIC0xMDIsOCArMzY2LDM3IEBAIGdsOjpFcnJvciBDb250ZXh0Vms6OmRyYXdSYW5nZUVs
ZW1lbnRzKEdMZW51bSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpCiB7CisgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7Cit9CisKK1ZrRGV2aWNlIENvbnRleHRWazo6Z2V0RGV2aWNlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKK30KKwordms6OkNvbW1h
bmRCdWZmZXIgKkNvbnRleHRWazo6Z2V0Q29tbWFuZEJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1S
ZW5kZXJlci0+Z2V0Q29tbWFuZEJ1ZmZlcigpOworfQorCit2azo6RXJyb3IgQ29udGV4dFZrOjpz
dWJtaXRDb21tYW5kcyhjb25zdCB2azo6Q29tbWFuZEJ1ZmZlciAmY29tbWFuZEJ1ZmZlcikKK3sK
KyAgICBzZXRRdWV1ZVNlcmlhbChtUmVuZGVyZXItPmdldEN1cnJlbnRRdWV1ZVNlcmlhbCgpKTsK
KyAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5zdWJtaXRDb21tYW5kQnVmZmVyKGNvbW1hbmRCdWZm
ZXIpKTsKKyAgICByZXR1cm4gdms6Ok5vRXJyb3IoKTsKK30KKworZ2w6OkVycm9yIENvbnRleHRW
azo6ZHJhd0FycmF5c0luZGlyZWN0KEdMZW51bSBtb2RlLCBjb25zdCBHTHZvaWQgKmluZGlyZWN0
KQorewogICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4gZ2w6OkludGVybmFsRXJyb3IoKSA8PCAiRHJhd0Fy
cmF5c0luZGlyZWN0IGhhc24ndCBiZWVuIGltcGxlbWVudGVkIGZvciB2dWxrYW4gYmFja2VuZC4i
OworfQorCitnbDo6RXJyb3IgQ29udGV4dFZrOjpkcmF3RWxlbWVudHNJbmRpcmVjdChHTGVudW0g
bW9kZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpCit7CisgICAgVU5JTVBM
RU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6SW50ZXJuYWxFcnJvcigpCisgICAgICAgICAgIDw8
ICJEcmF3RWxlbWVudHNJbmRpcmVjdCBoYXNuJ3QgYmVlbiBpbXBsZW1lbnRlZCBmb3IgdnVsa2Fu
IGJhY2tlbmQuIjsKIH0KIAogR0xlbnVtIENvbnRleHRWazo6Z2V0UmVzZXRTdGF0dXMoKQpAQCAt
MTIwLDggKzQxMyw3IEBAIHN0ZDo6c3RyaW5nIENvbnRleHRWazo6Z2V0VmVuZG9yU3RyaW5nKCkg
Y29uc3QKIAogc3RkOjpzdHJpbmcgQ29udGV4dFZrOjpnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkg
Y29uc3QKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7
CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpOwogfQogCiB2
b2lkIENvbnRleHRWazo6aW5zZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNo
YXIgKm1hcmtlcikKQEAgLTEzOSw5ICs0MzEsMTMgQEAgdm9pZCBDb250ZXh0Vms6OnBvcEdyb3Vw
TWFya2VyKCkKICAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKLXZvaWQgQ29udGV4dFZrOjpzeW5j
U3RhdGUoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMg
JmRpcnR5Qml0cykKK3ZvaWQgQ29udGV4dFZrOjpzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRlOjpE
aXJ0eUJpdHMgJmRpcnR5Qml0cykKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CisgICAgLy8gVE9E
TyhqbWFkaWxsKTogVnVsa2FuIGRpcnR5IGJpdHMuCisgICAgaWYgKGRpcnR5Qml0cy5hbnkoKSkK
KyAgICB7CisgICAgICAgIGludmFsaWRhdGVDdXJyZW50UGlwZWxpbmUoKTsKKyAgICB9CiB9CiAK
IEdMaW50IENvbnRleHRWazo6Z2V0R1BVRGlzam9pbnQoKQpAQCAtMTU2LDkgKzQ1Miw4IEBAIEdM
aW50NjQgQ29udGV4dFZrOjpnZXRUaW1lc3RhbXAoKQogICAgIHJldHVybiBHTGludDY0KCk7CiB9
CiAKLXZvaWQgQ29udGV4dFZrOjpvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUg
JmRhdGEpCit2b2lkIENvbnRleHRWazo6b25NYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dFN0
YXRlICYgLypkYXRhKi8pCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCiBjb25zdCBnbDo6
Q2FwcyAmQ29udGV4dFZrOjpnZXROYXRpdmVDYXBzKCkgY29uc3QKQEAgLTE5OCw3ICs0OTMsNyBA
QCBQcm9ncmFtSW1wbCAqQ29udGV4dFZrOjpjcmVhdGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9ncmFt
U3RhdGUgJnN0YXRlKQogCiBGcmFtZWJ1ZmZlckltcGwgKkNvbnRleHRWazo6Y3JlYXRlRnJhbWVi
dWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKQogewotICAgIHJldHVybiBu
ZXcgRnJhbWVidWZmZXJWayhzdGF0ZSk7CisgICAgcmV0dXJuIEZyYW1lYnVmZmVyVms6OkNyZWF0
ZVVzZXJGQk8oc3RhdGUpOwogfQogCiBUZXh0dXJlSW1wbCAqQ29udGV4dFZrOjpjcmVhdGVUZXh0
dXJlKGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnN0YXRlKQpAQCAtMjExLDkgKzUwNiw5IEBAIFJl
bmRlcmJ1ZmZlckltcGwgKkNvbnRleHRWazo6Y3JlYXRlUmVuZGVyYnVmZmVyKCkKICAgICByZXR1
cm4gbmV3IFJlbmRlcmJ1ZmZlclZrKCk7CiB9CiAKLUJ1ZmZlckltcGwgKkNvbnRleHRWazo6Y3Jl
YXRlQnVmZmVyKCkKK0J1ZmZlckltcGwgKkNvbnRleHRWazo6Y3JlYXRlQnVmZmVyKGNvbnN0IGds
OjpCdWZmZXJTdGF0ZSAmc3RhdGUpCiB7Ci0gICAgcmV0dXJuIG5ldyBCdWZmZXJWaygpOworICAg
IHJldHVybiBuZXcgQnVmZmVyVmsoc3RhdGUpOwogfQogCiBWZXJ0ZXhBcnJheUltcGwgKkNvbnRl
eHRWazo6Y3JlYXRlVmVydGV4QXJyYXkoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJnN0YXRl
KQpAQCAtMjUxLDQgKzU0NiwxNiBAQCBzdGQ6OnZlY3RvcjxQYXRoSW1wbCAqPiBDb250ZXh0Vms6
OmNyZWF0ZVBhdGhzKEdMc2l6ZWkpCiAgICAgcmV0dXJuIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+
KCk7CiB9CiAKKy8vIFRPRE8oam1hZGlsbCk6IFVzZSBwaXBlbGluZSBjYWNoZS4KK3ZvaWQgQ29u
dGV4dFZrOjppbnZhbGlkYXRlQ3VycmVudFBpcGVsaW5lKCkKK3sKKyAgICBtUmVuZGVyZXItPmVu
cXVldWVHYXJiYWdlT3JEZWxldGVOb3coKnRoaXMsIG1DdXJyZW50UGlwZWxpbmUpOworfQorCitn
bDo6RXJyb3IgQ29udGV4dFZrOjpkaXNwYXRjaENvbXB1dGUoR0x1aW50IG51bUdyb3Vwc1gsIEdM
dWludCBudW1Hcm91cHNZLCBHTHVpbnQgbnVtR3JvdXBzWikKK3sKKyAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKIH0g
IC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmgKaW5kZXggNjFi
NGY1YjMwY2I1NWNlZjQ2M2E2Yjg5NGE4NWI3YWFhOGUyM2QwZC4uOWM0ZmNkNzUwYjAxMDcyMDJm
M2RiNzdlYjc1M2FjYTY1ZDdiYjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5o
CkBAIC0xMCwxMyArMTAsMTYgQEAKICNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX0NP
TlRFWFRWS19IXwogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fQ09OVEVYVFZLX0hf
CiAKKyNpbmNsdWRlIDx2dWxrYW4vdnVsa2FuLmg+CisKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9Db250ZXh0SW1wbC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9y
ZW5kZXJlcnZrX3V0aWxzLmgiCiAKIG5hbWVzcGFjZSByeAogewogY2xhc3MgUmVuZGVyZXJWazsK
IAotY2xhc3MgQ29udGV4dFZrIDogcHVibGljIENvbnRleHRJbXBsCitjbGFzcyBDb250ZXh0Vmsg
OiBwdWJsaWMgQ29udGV4dEltcGwsIHB1YmxpYyBSZXNvdXJjZVZrCiB7CiAgIHB1YmxpYzoKICAg
ICBDb250ZXh0VmsoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUsIFJlbmRlcmVyVmsgKnJl
bmRlcmVyKTsKQEAgLTUzLDYgKzU2LDggQEAgY2xhc3MgQ29udGV4dFZrIDogcHVibGljIENvbnRl
eHRJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJh
bmdlKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZHJhd0FycmF5c0luZGlyZWN0KEdMZW51bSBt
b2RlLCBjb25zdCBHTHZvaWQgKmluZGlyZWN0KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZHJh
d0VsZW1lbnRzSW5kaXJlY3QoR0xlbnVtIG1vZGUsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQg
KmluZGlyZWN0KSBvdmVycmlkZTsKIAogICAgIC8vIERldmljZSBsb3NzCiAgICAgR0xlbnVtIGdl
dFJlc2V0U3RhdHVzKCkgb3ZlcnJpZGU7CkBAIC02Nyw3ICs3Miw3IEBAIGNsYXNzIENvbnRleHRW
ayA6IHB1YmxpYyBDb250ZXh0SW1wbAogICAgIHZvaWQgcG9wR3JvdXBNYXJrZXIoKSBvdmVycmlk
ZTsKIAogICAgIC8vIFN0YXRlIHN5bmMgd2l0aCBkaXJ0eSBiaXRzLgotICAgIHZvaWQgc3luY1N0
YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZk
aXJ0eUJpdHMpIG92ZXJyaWRlOworICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZTo6
RGlydHlCaXRzICZkaXJ0eUJpdHMpIG92ZXJyaWRlOwogCiAgICAgLy8gRGlzam9pbnQgdGltZXIg
cXVlcmllcwogICAgIEdMaW50IGdldEdQVURpc2pvaW50KCkgb3ZlcnJpZGU7CkBAIC05Nyw3ICsx
MDIsNyBAQCBjbGFzcyBDb250ZXh0VmsgOiBwdWJsaWMgQ29udGV4dEltcGwKICAgICBSZW5kZXJi
dWZmZXJJbXBsICpjcmVhdGVSZW5kZXJidWZmZXIoKSBvdmVycmlkZTsKIAogICAgIC8vIEJ1ZmZl
ciBjcmVhdGlvbgotICAgIEJ1ZmZlckltcGwgKmNyZWF0ZUJ1ZmZlcigpIG92ZXJyaWRlOworICAg
IEJ1ZmZlckltcGwgKmNyZWF0ZUJ1ZmZlcihjb25zdCBnbDo6QnVmZmVyU3RhdGUgJnN0YXRlKSBv
dmVycmlkZTsKIAogICAgIC8vIFZlcnRleCBBcnJheSBjcmVhdGlvbgogICAgIFZlcnRleEFycmF5
SW1wbCAqY3JlYXRlVmVydGV4QXJyYXkoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJnN0YXRl
KSBvdmVycmlkZTsKQEAgLTExNyw4ICsxMjIsMjMgQEAgY2xhc3MgQ29udGV4dFZrIDogcHVibGlj
IENvbnRleHRJbXBsCiAgICAgLy8gUGF0aCBvYmplY3QgY3JlYXRpb24KICAgICBzdGQ6OnZlY3Rv
cjxQYXRoSW1wbCAqPiBjcmVhdGVQYXRocyhHTHNpemVpKSBvdmVycmlkZTsKIAorICAgIFZrRGV2
aWNlIGdldERldmljZSgpIGNvbnN0OworICAgIHZrOjpDb21tYW5kQnVmZmVyICpnZXRDb21tYW5k
QnVmZmVyKCk7CisgICAgdms6OkVycm9yIHN1Ym1pdENvbW1hbmRzKGNvbnN0IHZrOjpDb21tYW5k
QnVmZmVyICZjb21tYW5kQnVmZmVyKTsKKworICAgIFJlbmRlcmVyVmsgKmdldFJlbmRlcmVyKCkg
eyByZXR1cm4gbVJlbmRlcmVyOyB9CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBVc2UgcGlwZWxp
bmUgY2FjaGUuCisgICAgdm9pZCBpbnZhbGlkYXRlQ3VycmVudFBpcGVsaW5lKCk7CisKKyAgICBn
bDo6RXJyb3IgZGlzcGF0Y2hDb21wdXRlKEdMdWludCBudW1Hcm91cHNYLCBHTHVpbnQgbnVtR3Jv
dXBzWSwgR0x1aW50IG51bUdyb3Vwc1opIG92ZXJyaWRlOworCiAgIHByaXZhdGU6CisgICAgZ2w6
OkVycm9yIGluaXRQaXBlbGluZSgpOworCiAgICAgUmVuZGVyZXJWayAqbVJlbmRlcmVyOworICAg
IHZrOjpQaXBlbGluZSBtQ3VycmVudFBpcGVsaW5lOworICAgIEdMZW51bSBtQ3VycmVudERyYXdN
b2RlOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3BsYXlWay5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3Bs
YXlWay5jcHAKaW5kZXggOTVlOGVhNjUzMDdlMjk3MjIxYzc3NzY4OTVjZjZiYjliNDU3NTIzMy4u
M2JkMDgzMjMwMzhhZmUzNjhiMmQ0NTM2MzA2MTkyYzY4NDg1ZmQ4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5
VmsuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vRGlzcGxheVZrLmNwcApAQCAtMTAsMTIgKzEwLDE2IEBACiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3BsYXlWay5oIgogCiAjaW5jbHVkZSAiY29tbW9uL2Rl
YnVnLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L0Rpc3BsYXkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZr
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlcmVyVmsuaCIKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU3VyZmFjZVZrLmgiCiAKIG5hbWVzcGFj
ZSByeAogewogCi1EaXNwbGF5Vms6OkRpc3BsYXlWaygpIDogRGlzcGxheUltcGwoKSwgbVJlbmRl
cmVyKG51bGxwdHIpCitEaXNwbGF5Vms6OkRpc3BsYXlWayhjb25zdCBlZ2w6OkRpc3BsYXlTdGF0
ZSAmc3RhdGUpIDogRGlzcGxheUltcGwoc3RhdGUpLCBtUmVuZGVyZXIobnVsbHB0cikKIHsKIH0K
IApAQCAtMjUsMzMgKzI5LDcyIEBAIERpc3BsYXlWazo6fkRpc3BsYXlWaygpCiAKIGVnbDo6RXJy
b3IgRGlzcGxheVZrOjppbml0aWFsaXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkKIHsKLSAgICBV
TklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOwor
ICAgIEFTU0VSVCghbVJlbmRlcmVyICYmIGRpc3BsYXkgIT0gbnVsbHB0cik7CisgICAgbVJlbmRl
cmVyLnJlc2V0KG5ldyBSZW5kZXJlclZrKCkpOworICAgIHJldHVybiBtUmVuZGVyZXItPmluaXRp
YWxpemUoZGlzcGxheS0+Z2V0QXR0cmlidXRlTWFwKCkpLnRvRUdMKEVHTF9OT1RfSU5JVElBTEla
RUQpOwogfQogCiB2b2lkIERpc3BsYXlWazo6dGVybWluYXRlKCkKIHsKLSAgICBVTklNUExFTUVO
VEVEKCk7CisgICAgbVJlbmRlcmVyLnJlc2V0KG51bGxwdHIpOwogfQogCi1lZ2w6OkVycm9yIERp
c3BsYXlWazo6bWFrZUN1cnJlbnQoZWdsOjpTdXJmYWNlICpkcmF3U3VyZmFjZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKnJlYWRTdXJmYWNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0KQorZWds
OjpFcnJvciBEaXNwbGF5Vms6Om1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqIC8qZHJhd1N1cmZh
Y2UqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKiAv
KnJlYWRTdXJmYWNlKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkNv
bnRleHQgKiAvKmNvbnRleHQqLykKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJu
IGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9T
VUNDRVNTKTsKIH0KIAogZWdsOjpDb25maWdTZXQgRGlzcGxheVZrOjpnZW5lcmF0ZUNvbmZpZ3Mo
KQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZWdsOjpDb25maWdTZXQoKTsK
KyAgICAvLyBUT0RPKGptYWRpbGwpOiBNdWx0aXBsZSBjb25maWdzLCBwYnVmZmVycywgYW5kIHBy
b3BlciBjaGVja2luZyBvZiBjb25maWcgYXR0cmlicy4KKyAgICBlZ2w6OkNvbmZpZyBzaW5nbGV0
b247CisgICAgc2luZ2xldG9uLnJlbmRlclRhcmdldEZvcm1hdCAgICA9IEdMX1JHQkE4OworICAg
IHNpbmdsZXRvbi5kZXB0aFN0ZW5jaWxGb3JtYXQgICAgPSBHTF9OT05FOworICAgIHNpbmdsZXRv
bi5idWZmZXJTaXplICAgICAgICAgICAgPSAzMjsKKyAgICBzaW5nbGV0b24ucmVkU2l6ZSAgICAg
ICAgICAgICAgID0gODsKKyAgICBzaW5nbGV0b24uZ3JlZW5TaXplICAgICAgICAgICAgID0gODsK
KyAgICBzaW5nbGV0b24uYmx1ZVNpemUgICAgICAgICAgICAgID0gODsKKyAgICBzaW5nbGV0b24u
YWxwaGFTaXplICAgICAgICAgICAgID0gODsKKyAgICBzaW5nbGV0b24uYWxwaGFNYXNrU2l6ZSAg
ICAgICAgID0gMDsKKyAgICBzaW5nbGV0b24uYmluZFRvVGV4dHVyZVJHQiAgICAgID0gRUdMX0ZB
TFNFOworICAgIHNpbmdsZXRvbi5iaW5kVG9UZXh0dXJlUkdCQSAgICAgPSBFR0xfRkFMU0U7Cisg
ICAgc2luZ2xldG9uLmNvbG9yQnVmZmVyVHlwZSAgICAgICA9IEVHTF9SR0JfQlVGRkVSOworICAg
IHNpbmdsZXRvbi5jb25maWdDYXZlYXQgICAgICAgICAgPSBFR0xfTk9ORTsKKyAgICBzaW5nbGV0
b24uY29uZm9ybWFudCAgICAgICAgICAgID0gMDsKKyAgICBzaW5nbGV0b24uZGVwdGhTaXplICAg
ICAgICAgICAgID0gMDsKKyAgICBzaW5nbGV0b24uc3RlbmNpbFNpemUgICAgICAgICAgID0gMDsK
KyAgICBzaW5nbGV0b24ubGV2ZWwgICAgICAgICAgICAgICAgID0gMDsKKyAgICBzaW5nbGV0b24u
bWF0Y2hOYXRpdmVQaXhtYXAgICAgID0gRUdMX05PTkU7CisgICAgc2luZ2xldG9uLm1heFBCdWZm
ZXJXaWR0aCAgICAgICA9IDA7CisgICAgc2luZ2xldG9uLm1heFBCdWZmZXJIZWlnaHQgICAgICA9
IDA7CisgICAgc2luZ2xldG9uLm1heFBCdWZmZXJQaXhlbHMgICAgICA9IDA7CisgICAgc2luZ2xl
dG9uLm1heFN3YXBJbnRlcnZhbCAgICAgICA9IDE7CisgICAgc2luZ2xldG9uLm1pblN3YXBJbnRl
cnZhbCAgICAgICA9IDE7CisgICAgc2luZ2xldG9uLm5hdGl2ZVJlbmRlcmFibGUgICAgICA9IEVH
TF9UUlVFOworICAgIHNpbmdsZXRvbi5uYXRpdmVWaXN1YWxJRCAgICAgICAgPSAwOworICAgIHNp
bmdsZXRvbi5uYXRpdmVWaXN1YWxUeXBlICAgICAgPSBFR0xfTk9ORTsKKyAgICBzaW5nbGV0b24u
cmVuZGVyYWJsZVR5cGUgICAgICAgID0gRUdMX09QRU5HTF9FUzJfQklUOworICAgIHNpbmdsZXRv
bi5zYW1wbGVCdWZmZXJzICAgICAgICAgPSAwOworICAgIHNpbmdsZXRvbi5zYW1wbGVzICAgICAg
ICAgICAgICAgPSAwOworICAgIHNpbmdsZXRvbi5zdXJmYWNlVHlwZSAgICAgICAgICAgPSBFR0xf
V0lORE9XX0JJVDsKKyAgICBzaW5nbGV0b24ub3B0aW1hbE9yaWVudGF0aW9uICAgID0gMDsKKyAg
ICBzaW5nbGV0b24udHJhbnNwYXJlbnRUeXBlICAgICAgID0gRUdMX05PTkU7CisgICAgc2luZ2xl
dG9uLnRyYW5zcGFyZW50UmVkVmFsdWUgICA9IDA7CisgICAgc2luZ2xldG9uLnRyYW5zcGFyZW50
R3JlZW5WYWx1ZSA9IDA7CisgICAgc2luZ2xldG9uLnRyYW5zcGFyZW50Qmx1ZVZhbHVlICA9IDA7
CisgICAgc2luZ2xldG9uLmNvbG9yQ29tcG9uZW50VHlwZSAgICA9IEVHTF9DT0xPUl9DT01QT05F
TlRfVFlQRV9GSVhFRF9FWFQ7CisKKyAgICBlZ2w6OkNvbmZpZ1NldCBjb25maWdTZXQ7CisgICAg
Y29uZmlnU2V0LmFkZChzaW5nbGV0b24pOworICAgIHJldHVybiBjb25maWdTZXQ7CiB9CiAKIGJv
b2wgRGlzcGxheVZrOjp0ZXN0RGV2aWNlTG9zdCgpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwot
ICAgIHJldHVybiBib29sKCk7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCBob3cg
dG8gZG8gZGV2aWNlIGxvc3QgaW4gVnVsa2FuLgorICAgIHJldHVybiBmYWxzZTsKIH0KIAogZWds
OjpFcnJvciBEaXNwbGF5Vms6OnJlc3RvcmVMb3N0RGV2aWNlKCkKQEAgLTYyLDIwICsxMDUsMjQg
QEAgZWdsOjpFcnJvciBEaXNwbGF5Vms6OnJlc3RvcmVMb3N0RGV2aWNlKCkKIAogYm9vbCBEaXNw
bGF5Vms6OmlzVmFsaWROYXRpdmVXaW5kb3coRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3cpIGNv
bnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBib29sKCk7CisgICAgLy8g
VE9ETyhqbWFkaWxsKTogQ3Jvc3MtcGxhdGZvcm0gdGhpcy4KKyAgICByZXR1cm4gKElzV2luZG93
KHdpbmRvdykgPT0gVFJVRSk7CiB9CiAKIHN0ZDo6c3RyaW5nIERpc3BsYXlWazo6Z2V0VmVuZG9y
U3RyaW5nKCkgY29uc3QKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIHN0ZDo6
c3RyaW5nKCk7CisgICAgc3RkOjpzdHJpbmcgdmVuZG9yU3RyaW5nID0gIkdvb2dsZSBJbmMuIjsK
KyAgICBpZiAobVJlbmRlcmVyKQorICAgIHsKKyAgICAgICAgdmVuZG9yU3RyaW5nICs9ICIgIiAr
IG1SZW5kZXJlci0+Z2V0VmVuZG9yU3RyaW5nKCk7CisgICAgfQorCisgICAgcmV0dXJuIHZlbmRv
clN0cmluZzsKIH0KIAogZWdsOjpFcnJvciBEaXNwbGF5Vms6OmdldERldmljZShEZXZpY2VJbXBs
ICoqZGV2aWNlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZWdsOjpFcnJv
cihFR0xfQkFEX0FDQ0VTUyk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwog
fQogCiBlZ2w6OkVycm9yIERpc3BsYXlWazo6d2FpdENsaWVudCgpIGNvbnN0CkBAIC05MywyNSAr
MTQwLDI5IEBAIGVnbDo6RXJyb3IgRGlzcGxheVZrOjp3YWl0TmF0aXZlKEVHTGludCBlbmdpbmUs
CiB9CiAKIFN1cmZhY2VJbXBsICpEaXNwbGF5Vms6OmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3Qg
ZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3
aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8U3VyZmFjZUltcGwgKj4oMCk7CisgICAgRUdMaW50IHdpZHRo
ICA9IGF0dHJpYnMuZ2V0QXNJbnQoRUdMX1dJRFRILCAwKTsKKyAgICBFR0xpbnQgaGVpZ2h0ID0g
YXR0cmlicy5nZXRBc0ludChFR0xfSEVJR0hULCAwKTsKKworICAgIHJldHVybiBuZXcgV2luZG93
U3VyZmFjZVZrKHN0YXRlLCB3aW5kb3csIHdpZHRoLCBoZWlnaHQpOwogfQogCiBTdXJmYWNlSW1w
bCAqRGlzcGxheVZrOjpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0
ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQog
ewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3VyZmFjZUlt
cGwgKj4oMCk7CisgICAgQVNTRVJUKG1SZW5kZXJlcik7CisKKyAgICBFR0xpbnQgd2lkdGggID0g
YXR0cmlicy5nZXRBc0ludChFR0xfV0lEVEgsIDApOworICAgIEVHTGludCBoZWlnaHQgPSBhdHRy
aWJzLmdldEFzSW50KEVHTF9IRUlHSFQsIDApOworCisgICAgcmV0dXJuIG5ldyBPZmZzY3JlZW5T
dXJmYWNlVmsoc3RhdGUsIHdpZHRoLCBoZWlnaHQpOwogfQogCiBTdXJmYWNlSW1wbCAqRGlzcGxh
eVZrOjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0
ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBz
aGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CkBA
IC0xMTksNyArMTcwLDYgQEAgU3VyZmFjZUltcGwgKkRpc3BsYXlWazo6Y3JlYXRlUGJ1ZmZlckZy
b21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnMKIH0KIAogU3VyZmFjZUlt
cGwgKkRpc3BsYXlWazo6Y3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0
ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1
dGVNYXAgJmF0dHJpYnMpCiB7CkBAIC0xMzcsNyArMTg3LDcgQEAgSW1hZ2VJbXBsICpEaXNwbGF5
Vms6OmNyZWF0ZUltYWdlKEVHTGVudW0gdGFyZ2V0LAogCiBDb250ZXh0SW1wbCAqRGlzcGxheVZr
OjpjcmVhdGVDb250ZXh0KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlKQogewotICAgIHJl
dHVybiBuZXcgQ29udGV4dFZrKHN0YXRlLCBtUmVuZGVyZXIpOworICAgIHJldHVybiBuZXcgQ29u
dGV4dFZrKHN0YXRlLCBtUmVuZGVyZXIuZ2V0KCkpOwogfQogCiBTdHJlYW1Qcm9kdWNlckltcGwg
KkRpc3BsYXlWazo6Y3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYxMigKQEAgLTE1Niwx
MiArMjA2LDExIEBAIGdsOjpWZXJzaW9uIERpc3BsYXlWazo6Z2V0TWF4U3VwcG9ydGVkRVNWZXJz
aW9uKCkgY29uc3QKIAogdm9pZCBEaXNwbGF5Vms6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRp
c3BsYXlFeHRlbnNpb25zICpvdXRFeHRlbnNpb25zKSBjb25zdAogewotICAgIFVOSU1QTEVNRU5U
RUQoKTsKIH0KIAogdm9pZCBEaXNwbGF5Vms6OmdlbmVyYXRlQ2FwcyhlZ2w6OkNhcHMgKm91dENh
cHMpIGNvbnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIG91dENhcHMtPnRleHR1cmVO
UE9UID0gdHJ1ZTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3BsYXlWay5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9E
aXNwbGF5VmsuaAppbmRleCA5MTgzODk4MGRjMzY0MzdmNjVmOTVlM2MyZTg2NmFmYTA3N2VmYjQ3
Li44ZDM3NmQzZTgyMmZkMmU3ZGI4M2RjOThhMDA5M2MzYjNkZDMzMjU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3Bs
YXlWay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vRGlzcGxheVZrLmgKQEAgLTE5LDcgKzE5LDcgQEAgY2xhc3MgUmVuZGVyZXJWazsK
IGNsYXNzIERpc3BsYXlWayA6IHB1YmxpYyBEaXNwbGF5SW1wbAogewogICBwdWJsaWM6Ci0gICAg
RGlzcGxheVZrKCk7CisgICAgRGlzcGxheVZrKGNvbnN0IGVnbDo6RGlzcGxheVN0YXRlICZzdGF0
ZSk7CiAgICAgfkRpc3BsYXlWaygpIG92ZXJyaWRlOwogCiAgICAgZWdsOjpFcnJvciBpbml0aWFs
aXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7CkBAIC00NiwxOCArNDYsMTUgQEAg
Y2xhc3MgRGlzcGxheVZrIDogcHVibGljIERpc3BsYXlJbXBsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZhY2UpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
U3VyZmFjZUltcGwgKmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUg
JnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6
Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsK
ICAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNl
U3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwog
ICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6
OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hh
cmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0
dHJpYnMpIG92ZXJyaWRlOwogICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQaXhtYXBTdXJmYWNlKGNv
bnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0
ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAKQEAgLTcyLDExICs2OSwxMyBAQCBjbGFzcyBEaXNw
bGF5VmsgOiBwdWJsaWMgRGlzcGxheUltcGwKICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVN
YXAgJmF0dHJpYnMpIG92ZXJyaWRlOwogICAgIGdsOjpWZXJzaW9uIGdldE1heFN1cHBvcnRlZEVT
VmVyc2lvbigpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgUmVuZGVyZXJWayAqZ2V0UmVuZGVyZXIo
KSBjb25zdCB7IHJldHVybiBtUmVuZGVyZXIuZ2V0KCk7IH0KKwogICBwcml2YXRlOgogICAgIHZv
aWQgZ2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4dGVuc2lv
bnMpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgZ2VuZXJhdGVDYXBzKGVnbDo6Q2FwcyAqb3V0
Q2FwcykgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBSZW5kZXJlclZrICptUmVuZGVyZXI7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlcmVyVms+IG1SZW5kZXJlcjsKIH07CiAKIH0gIC8vIG5hbWVz
cGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9GcmFtZWJ1ZmZlclZrLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRnJhbWVidWZmZXJWay5jcHAKaW5kZXgg
ZTM1MWRlYTkzNmNhNmYwMmUwNmNiZGFjZWUwMDJiMDE5M2NlOWIxOC4uMTc1MjgzN2Y1OGU5N2Jj
NGZhNjMwN2UzZjIzZDM2MWIxMjIzZmEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GcmFtZWJ1ZmZlclZrLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Zy
YW1lYnVmZmVyVmsuY3BwCkBAIC05LDEyICs5LDgxIEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vRnJhbWVidWZmZXJWay5oIgogCisjaW5jbHVkZSA8YXJyYXk+CisjaW5j
bHVkZSA8dnVsa2FuL3Z1bGthbi5oPgorCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5j
bHVkZSAiaW1hZ2VfdXRpbC9pbWFnZWZvcm1hdHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9mb3Jt
YXR1dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVyX3V0aWxzLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5VmsuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyVGFyZ2V0VmsuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9TdXJmYWNlVmsuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vZm9ybWF0dXRpbHN2ay5oIgogCiBuYW1lc3BhY2UgcngKIHsKIAotRnJhbWVidWZmZXJWazo6
RnJhbWVidWZmZXJWayhjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpIDogRnJhbWVi
dWZmZXJJbXBsKHN0YXRlKQorbmFtZXNwYWNlCit7CisKK2dsOjpFcnJvck9yUmVzdWx0PGNvbnN0
IGdsOjpJbnRlcm5hbEZvcm1hdCAqPiBHZXRSZWFkQXR0YWNobWVudEluZm8oCisgICAgY29uc3Qg
Z2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqcmVhZEF0dGFjaG1lbnQpCit7CisgICAgUmVuZGVy
VGFyZ2V0VmsgKnJlbmRlclRhcmdldCA9IG51bGxwdHI7CisgICAgQU5HTEVfVFJZKHJlYWRBdHRh
Y2htZW50LT5nZXRSZW5kZXJUYXJnZXQoJnJlbmRlclRhcmdldCkpOworCisgICAgR0xlbnVtIGlt
cGxGb3JtYXQgPSByZW5kZXJUYXJnZXQtPmZvcm1hdC0+Zm9ybWF0KCkuZmJvSW1wbGVtZW50YXRp
b25JbnRlcm5hbEZvcm1hdDsKKyAgICByZXR1cm4gJmdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8o
aW1wbEZvcm1hdCk7Cit9CisKK1ZrU2FtcGxlQ291bnRGbGFnQml0cyBDb252ZXJ0U2FtcGxlcyhH
TGludCBzYW1wbGVDb3VudCkKK3sKKyAgICBzd2l0Y2ggKHNhbXBsZUNvdW50KQorICAgIHsKKyAg
ICAgICAgY2FzZSAwOgorICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICByZXR1cm4gVktfU0FN
UExFX0NPVU5UXzFfQklUOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICByZXR1cm4gVktf
U0FNUExFX0NPVU5UXzJfQklUOworICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICByZXR1cm4g
VktfU0FNUExFX0NPVU5UXzRfQklUOworICAgICAgICBjYXNlIDg6CisgICAgICAgICAgICByZXR1
cm4gVktfU0FNUExFX0NPVU5UXzhfQklUOworICAgICAgICBjYXNlIDE2OgorICAgICAgICAgICAg
cmV0dXJuIFZLX1NBTVBMRV9DT1VOVF8xNl9CSVQ7CisgICAgICAgIGNhc2UgMzI6CisgICAgICAg
ICAgICByZXR1cm4gVktfU0FNUExFX0NPVU5UXzMyX0JJVDsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gVktfU0FNUExFX0NP
VU5UX0ZMQUdfQklUU19NQVhfRU5VTTsKKyAgICB9Cit9CisKK30gIC8vIGFub255bW91cyBuYW1l
c3BhY2UKKworLy8gc3RhdGljCitGcmFtZWJ1ZmZlclZrICpGcmFtZWJ1ZmZlclZrOjpDcmVhdGVV
c2VyRkJPKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkKK3sKKyAgICByZXR1cm4g
bmV3IEZyYW1lYnVmZmVyVmsoc3RhdGUpOworfQorCisvLyBzdGF0aWMKK0ZyYW1lYnVmZmVyVmsg
KkZyYW1lYnVmZmVyVms6OkNyZWF0ZURlZmF1bHRGQk8oY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3Rh
dGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXaW5kb3dTdXJmYWNlVmsgKmJhY2tidWZmZXIpCit7CisgICAgcmV0dXJuIG5ldyBGcmFtZWJ1
ZmZlclZrKHN0YXRlLCBiYWNrYnVmZmVyKTsKK30KKworRnJhbWVidWZmZXJWazo6RnJhbWVidWZm
ZXJWayhjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpCisgICAgOiBGcmFtZWJ1ZmZl
ckltcGwoc3RhdGUpLCBtQmFja2J1ZmZlcihudWxscHRyKSwgbVJlbmRlclBhc3MoKSwgbUZyYW1l
YnVmZmVyKCkKK3sKK30KKworRnJhbWVidWZmZXJWazo6RnJhbWVidWZmZXJWayhjb25zdCBnbDo6
RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUsIFdpbmRvd1N1cmZhY2VWayAqYmFja2J1ZmZlcikKKyAg
ICA6IEZyYW1lYnVmZmVySW1wbChzdGF0ZSksIG1CYWNrYnVmZmVyKGJhY2tidWZmZXIpLCBtUmVu
ZGVyUGFzcygpLCBtRnJhbWVidWZmZXIoKQogewogfQogCkBAIC0yMiw2ICs5MSwyMiBAQCBGcmFt
ZWJ1ZmZlclZrOjp+RnJhbWVidWZmZXJWaygpCiB7CiB9CiAKK3ZvaWQgRnJhbWVidWZmZXJWazo6
ZGVzdHJveShDb250ZXh0SW1wbCAqY29udGV4dEltcGwpCit7CisgICAgVmtEZXZpY2UgZGV2aWNl
ID0gR2V0QXM8Q29udGV4dFZrPihjb250ZXh0SW1wbCktPmdldERldmljZSgpOworCisgICAgbVJl
bmRlclBhc3MuZGVzdHJveShkZXZpY2UpOworICAgIG1GcmFtZWJ1ZmZlci5kZXN0cm95KGRldmlj
ZSk7Cit9CisKK3ZvaWQgRnJhbWVidWZmZXJWazo6ZGVzdHJveURlZmF1bHQoRGlzcGxheUltcGwg
KmRpc3BsYXlJbXBsKQoreworICAgIFZrRGV2aWNlIGRldmljZSA9IEdldEFzPERpc3BsYXlWaz4o
ZGlzcGxheUltcGwpLT5nZXRSZW5kZXJlcigpLT5nZXREZXZpY2UoKTsKKworICAgIG1SZW5kZXJQ
YXNzLmRlc3Ryb3koZGV2aWNlKTsKKyAgICBtRnJhbWVidWZmZXIuZGVzdHJveShkZXZpY2UpOwor
fQorCiBnbDo6RXJyb3IgRnJhbWVidWZmZXJWazo6ZGlzY2FyZChzaXplX3QgY291bnQsIGNvbnN0
IEdMZW51bSAqYXR0YWNobWVudHMpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwpAQCAtNDQsOCAr
MTI5LDU5IEBAIGdsOjpFcnJvciBGcmFtZWJ1ZmZlclZrOjppbnZhbGlkYXRlU3ViKHNpemVfdCBj
b3VudCwKIAogZ2w6OkVycm9yIEZyYW1lYnVmZmVyVms6OmNsZWFyKENvbnRleHRJbXBsICpjb250
ZXh0LCBHTGJpdGZpZWxkIG1hc2spCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIENvbnRleHRWayAqY29udGV4
dFZrID0gR2V0QXM8Q29udGV4dFZrPihjb250ZXh0KTsKKworICAgIGlmIChtU3RhdGUuZ2V0RGVw
dGhBdHRhY2htZW50KCkgJiYgKG1hc2sgJiBHTF9ERVBUSF9CVUZGRVJfQklUKSAhPSAwKQorICAg
IHsKKyAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogRGVwdGggY2xlYXIKKyAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOworICAgIH0KKworICAgIGlmIChtU3RhdGUuZ2V0U3RlbmNpbEF0dGFjaG1lbnQo
KSAmJiAobWFzayAmIEdMX1NURU5DSUxfQlVGRkVSX0JJVCkgIT0gMCkKKyAgICB7CisgICAgICAg
IC8vIFRPRE8oam1hZGlsbCk6IFN0ZW5jaWwgY2xlYXIKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgIH0KKworICAgIGlmICgobWFzayAmIEdMX0NPTE9SX0JVRkZFUl9CSVQpID09IDApCisg
ICAgeworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICB9CisKKyAgICBjb25zdCBh
dXRvICZnbFN0YXRlICAgID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpOworICAgIGNvbnN0IGF1dG8g
JmNsZWFyQ29sb3IgPSBnbFN0YXRlLmdldENvbG9yQ2xlYXJWYWx1ZSgpOworICAgIFZrQ2xlYXJD
b2xvclZhbHVlIGNsZWFyQ29sb3JWYWx1ZTsKKyAgICBjbGVhckNvbG9yVmFsdWUuZmxvYXQzMlsw
XSA9IGNsZWFyQ29sb3IucmVkOworICAgIGNsZWFyQ29sb3JWYWx1ZS5mbG9hdDMyWzFdID0gY2xl
YXJDb2xvci5ncmVlbjsKKyAgICBjbGVhckNvbG9yVmFsdWUuZmxvYXQzMlsyXSA9IGNsZWFyQ29s
b3IuYmx1ZTsKKyAgICBjbGVhckNvbG9yVmFsdWUuZmxvYXQzMlszXSA9IGNsZWFyQ29sb3IuYWxw
aGE7CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBTY2lzc29yZWQgY2xlYXJzLgorICAgIGNvbnN0
IGF1dG8gKmF0dGFjaG1lbnQgPSBtU3RhdGUuZ2V0Rmlyc3ROb25OdWxsQXR0YWNobWVudCgpOwor
ICAgIEFTU0VSVChhdHRhY2htZW50ICYmIGF0dGFjaG1lbnQtPmlzQXR0YWNoZWQoKSk7CisgICAg
Y29uc3QgYXV0byAmc2l6ZSA9IGF0dGFjaG1lbnQtPmdldFNpemUoKTsKKyAgICBjb25zdCBnbDo6
UmVjdGFuZ2xlIHJlbmRlckFyZWEoMCwgMCwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpOworCisg
ICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIgPSBjb250ZXh0VmstPmdldENvbW1h
bmRCdWZmZXIoKTsKKyAgICBBTkdMRV9UUlkoY29tbWFuZEJ1ZmZlci0+YmVnaW4oY29udGV4dFZr
LT5nZXREZXZpY2UoKSkpOworCisgICAgZm9yIChjb25zdCBhdXRvICZjb2xvckF0dGFjaG1lbnQg
OiBtU3RhdGUuZ2V0Q29sb3JBdHRhY2htZW50cygpKQorICAgIHsKKyAgICAgICAgaWYgKGNvbG9y
QXR0YWNobWVudC5pc0F0dGFjaGVkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIFJlbmRlclRh
cmdldFZrICpyZW5kZXJUYXJnZXQgPSBudWxscHRyOworICAgICAgICAgICAgQU5HTEVfVFJZKGNv
bG9yQXR0YWNobWVudC5nZXRSZW5kZXJUYXJnZXQoJnJlbmRlclRhcmdldCkpOworICAgICAgICAg
ICAgcmVuZGVyVGFyZ2V0LT5pbWFnZS0+Y2hhbmdlTGF5b3V0VG9wKAorICAgICAgICAgICAgICAg
IFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIFZLX0lNQUdFX0xBWU9VVF9UUkFOU0ZFUl9EU1Rf
T1BUSU1BTCwgY29tbWFuZEJ1ZmZlcik7CisgICAgICAgICAgICBjb21tYW5kQnVmZmVyLT5jbGVh
clNpbmdsZUNvbG9ySW1hZ2UoKnJlbmRlclRhcmdldC0+aW1hZ2UsIGNsZWFyQ29sb3JWYWx1ZSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb21tYW5kQnVmZmVyLT5lbmQoKTsKKworICAgIEFO
R0xFX1RSWShjb250ZXh0VmstPnN1Ym1pdENvbW1hbmRzKCpjb21tYW5kQnVmZmVyKSk7CisKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEZyYW1lYnVmZmVyVms6OmNs
ZWFyQnVmZmVyZnYoQ29udGV4dEltcGwgKmNvbnRleHQsCkBAIC04NywxNCArMjIzLDMwIEBAIGds
OjpFcnJvciBGcmFtZWJ1ZmZlclZrOjpjbGVhckJ1ZmZlcmZpKENvbnRleHRJbXBsICpjb250ZXh0
LAogCiBHTGVudW0gRnJhbWVidWZmZXJWazo6Z2V0SW1wbGVtZW50YXRpb25Db2xvclJlYWRGb3Jt
YXQoKSBjb25zdAogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gR0xlbnVtKCk7
CisgICAgYXV0byBlcnJPclJlc3VsdCA9IEdldFJlYWRBdHRhY2htZW50SW5mbyhtU3RhdGUuZ2V0
UmVhZEF0dGFjaG1lbnQoKSk7CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBIYW5kbGUgZ2V0UmVu
ZGVyVGFyZ2V0IGVycm9yLgorICAgIGlmIChlcnJPclJlc3VsdC5pc0Vycm9yKCkpCisgICAgewor
ICAgICAgICBFUlIoKSA8PCAiSW50ZXJuYWwgZXJyb3IgaW4gRnJhbWVidWZmZXJWazo6Z2V0SW1w
bGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQuIjsKKyAgICAgICAgcmV0dXJuIEdMX05PTkU7Cisg
ICAgfQorCisgICAgcmV0dXJuIGVyck9yUmVzdWx0LmdldFJlc3VsdCgpLT5mb3JtYXQ7CiB9CiAK
IEdMZW51bSBGcmFtZWJ1ZmZlclZrOjpnZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZFR5cGUoKSBj
b25zdAogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gR0xlbnVtKCk7CisgICAg
YXV0byBlcnJPclJlc3VsdCA9IEdldFJlYWRBdHRhY2htZW50SW5mbyhtU3RhdGUuZ2V0UmVhZEF0
dGFjaG1lbnQoKSk7CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBIYW5kbGUgZ2V0UmVuZGVyVGFy
Z2V0IGVycm9yLgorICAgIGlmIChlcnJPclJlc3VsdC5pc0Vycm9yKCkpCisgICAgeworICAgICAg
ICBFUlIoKSA8PCAiSW50ZXJuYWwgZXJyb3IgaW4gRnJhbWVidWZmZXJWazo6Z2V0SW1wbGVtZW50
YXRpb25Db2xvclJlYWRGb3JtYXQuIjsKKyAgICAgICAgcmV0dXJuIEdMX05PTkU7CisgICAgfQor
CisgICAgcmV0dXJuIGVyck9yUmVzdWx0LmdldFJlc3VsdCgpLT50eXBlOwogfQogCiBnbDo6RXJy
b3IgRnJhbWVidWZmZXJWazo6cmVhZFBpeGVscyhDb250ZXh0SW1wbCAqY29udGV4dCwKQEAgLTEw
Myw4ICsyNTUsNzEgQEAgZ2w6OkVycm9yIEZyYW1lYnVmZmVyVms6OnJlYWRQaXhlbHMoQ29udGV4
dEltcGwgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4
ZWxzKSBjb25zdAogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICBjb25zdCBhdXRvICZnbFN0YXRlICAgICAgICAg
PSBjb250ZXh0LT5nZXRHTFN0YXRlKCk7CisgICAgY29uc3QgYXV0byAqcmVhZEZyYW1lYnVmZmVy
ID0gZ2xTdGF0ZS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKKyAgICBjb25zdCBhdXRvICpyZWFkQXR0
YWNobWVudCAgPSByZWFkRnJhbWVidWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZlcigpOworCisgICAg
UmVuZGVyVGFyZ2V0VmsgKnJlbmRlclRhcmdldCA9IG51bGxwdHI7CisgICAgQU5HTEVfVFJZKHJl
YWRBdHRhY2htZW50LT5nZXRSZW5kZXJUYXJnZXQoJnJlbmRlclRhcmdldCkpOworCisgICAgQ29u
dGV4dFZrICpjb250ZXh0VmsgPSBHZXRBczxDb250ZXh0Vms+KGNvbnRleHQpOworICAgIFJlbmRl
cmVyVmsgKnJlbmRlcmVyID0gY29udGV4dFZrLT5nZXRSZW5kZXJlcigpOworICAgIFZrRGV2aWNl
IGRldmljZSAgICAgID0gcmVuZGVyZXItPmdldERldmljZSgpOworCisgICAgdms6OkltYWdlICpy
ZWFkSW1hZ2UgPSByZW5kZXJUYXJnZXQtPmltYWdlOworICAgIHZrOjpTdGFnaW5nSW1hZ2Ugc3Rh
Z2luZ0ltYWdlOworICAgIEFOR0xFX1RSWShyZW5kZXJlci0+Y3JlYXRlU3RhZ2luZ0ltYWdlKFRl
eHR1cmVEaW1lbnNpb246OlRFWF8yRCwgKnJlbmRlclRhcmdldC0+Zm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlclRhcmdldC0+ZXh0ZW50cywg
JnN0YWdpbmdJbWFnZSkpOworCisgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIg
PSBjb250ZXh0VmstPmdldENvbW1hbmRCdWZmZXIoKTsKKyAgICBjb21tYW5kQnVmZmVyLT5iZWdp
bihkZXZpY2UpOworICAgIHN0YWdpbmdJbWFnZS5nZXRJbWFnZSgpLmNoYW5nZUxheW91dFRvcChW
S19JTUFHRV9BU1BFQ1RfQ09MT1JfQklULCBWS19JTUFHRV9MQVlPVVRfR0VORVJBTCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZEJ1ZmZlcik7CisK
KyAgICBnbDo6Qm94IGNvcHlSZWdpb247CisgICAgY29weVJlZ2lvbi54ICAgICAgPSBhcmVhLng7
CisgICAgY29weVJlZ2lvbi55ICAgICAgPSBhcmVhLnk7CisgICAgY29weVJlZ2lvbi56ICAgICAg
PSAwOworICAgIGNvcHlSZWdpb24ud2lkdGggID0gYXJlYS53aWR0aDsKKyAgICBjb3B5UmVnaW9u
LmhlaWdodCA9IGFyZWEuaGVpZ2h0OworICAgIGNvcHlSZWdpb24uZGVwdGggID0gMTsKKworICAg
IHJlYWRJbWFnZS0+Y2hhbmdlTGF5b3V0VG9wKFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIFZL
X0lNQUdFX0xBWU9VVF9UUkFOU0ZFUl9TUkNfT1BUSU1BTCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21tYW5kQnVmZmVyKTsKKyAgICBjb21tYW5kQnVmZmVyLT5jb3B5U2luZ2xl
SW1hZ2UoKnJlYWRJbWFnZSwgc3RhZ2luZ0ltYWdlLmdldEltYWdlKCksIGNvcHlSZWdpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9C
SVQpOworICAgIGNvbW1hbmRCdWZmZXItPmVuZCgpOworCisgICAgQU5HTEVfVFJZKHJlbmRlcmVy
LT5zdWJtaXRBbmRGaW5pc2hDb21tYW5kQnVmZmVyKCpjb21tYW5kQnVmZmVyKSk7CisKKyAgICAv
LyBUT0RPKGptYWRpbGwpOiBwYXJhbWV0ZXJzCisgICAgdWludDhfdCAqbWFwUG9pbnRlciA9IG51
bGxwdHI7CisgICAgQU5HTEVfVFJZKAorICAgICAgICBzdGFnaW5nSW1hZ2UuZ2V0RGV2aWNlTWVt
b3J5KCkubWFwKGRldmljZSwgMCwgc3RhZ2luZ0ltYWdlLmdldFNpemUoKSwgMCwgJm1hcFBvaW50
ZXIpKTsKKworICAgIGNvbnN0IGF1dG8gJmFuZ2xlRm9ybWF0ID0gcmVuZGVyVGFyZ2V0LT5mb3Jt
YXQtPmZvcm1hdCgpOworCisgICAgLy8gVE9ETyhqbWFkaWxsKTogVXNlIHBpeGVsIGJ5dGVzIGZy
b20gdGhlIEFOR0xFIGZvcm1hdCBkaXJlY3RseS4KKyAgICBjb25zdCBhdXRvICZnbEZvcm1hdCA9
IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oYW5nbGVGb3JtYXQuZ2xJbnRlcm5hbEZvcm1hdCk7
CisgICAgaW50IGlucHV0UGl0Y2ggICAgICAgPSBnbEZvcm1hdC5waXhlbEJ5dGVzICogYXJlYS53
aWR0aDsKKworICAgIFBhY2tQaXhlbHNQYXJhbXMgcGFyYW1zOworICAgIHBhcmFtcy5hcmVhICAg
ICAgICA9IGFyZWE7CisgICAgcGFyYW1zLmZvcm1hdCAgICAgID0gZm9ybWF0OworICAgIHBhcmFt
cy50eXBlICAgICAgICA9IHR5cGU7CisgICAgcGFyYW1zLm91dHB1dFBpdGNoID0gaW5wdXRQaXRj
aDsKKyAgICBwYXJhbXMucGFjayAgICAgICAgPSBnbFN0YXRlLmdldFBhY2tTdGF0ZSgpOworCisg
ICAgUGFja1BpeGVscyhwYXJhbXMsIGFuZ2xlRm9ybWF0LCBpbnB1dFBpdGNoLCBtYXBQb2ludGVy
LCByZWludGVycHJldF9jYXN0PHVpbnQ4X3QgKj4ocGl4ZWxzKSk7CisKKyAgICBzdGFnaW5nSW1h
Z2UuZ2V0RGV2aWNlTWVtb3J5KCkudW5tYXAoZGV2aWNlKTsKKyAgICByZW5kZXJlci0+ZW5xdWV1
ZUdhcmJhZ2UocmVuZGVyZXItPmdldEN1cnJlbnRRdWV1ZVNlcmlhbCgpLCBzdGQ6Om1vdmUoc3Rh
Z2luZ0ltYWdlKSk7CisKKyAgICBzdGFnaW5nSW1hZ2UuZ2V0SW1hZ2UoKS5kZXN0cm95KHJlbmRl
cmVyLT5nZXREZXZpY2UoKSk7CisKKyAgICBzdGFnaW5nSW1hZ2UuZGVzdHJveShkZXZpY2UpOwor
CisgICAgcmV0dXJuIHZrOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBGcmFtZWJ1ZmZlclZr
OjpibGl0KENvbnRleHRJbXBsICpjb250ZXh0LApAQCAtMTIzLDkgKzMzOCwyNjYgQEAgYm9vbCBG
cmFtZWJ1ZmZlclZrOjpjaGVja1N0YXR1cygpIGNvbnN0CiAgICAgcmV0dXJuIGJvb2woKTsKIH0K
IAotdm9pZCBGcmFtZWJ1ZmZlclZrOjpzeW5jU3RhdGUoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpE
aXJ0eUJpdHMgJmRpcnR5Qml0cykKK3ZvaWQgRnJhbWVidWZmZXJWazo6c3luY1N0YXRlKENvbnRl
eHRJbXBsICpjb250ZXh0SW1wbCwgY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEaXJ0eUJpdHMgJmRp
cnR5Qml0cykKK3sKKyAgICBhdXRvIGNvbnRleHRWayA9IEdldEFzPENvbnRleHRWaz4oY29udGV4
dEltcGwpOworCisgICAgQVNTRVJUKGRpcnR5Qml0cy5hbnkoKSk7CisKKyAgICAvLyBUT0RPKGpt
YWRpbGwpOiBTbWFydGVyIHVwZGF0ZS4KKyAgICBtUmVuZGVyUGFzcy5kZXN0cm95KGNvbnRleHRW
ay0+Z2V0RGV2aWNlKCkpOworICAgIG1GcmFtZWJ1ZmZlci5kZXN0cm95KGNvbnRleHRWay0+Z2V0
RGV2aWNlKCkpOworCisgICAgLy8gVE9ETyhqbWFkaWxsKTogVXNlIHBpcGVsaW5lIGNhY2hlLgor
ICAgIGNvbnRleHRWay0+aW52YWxpZGF0ZUN1cnJlbnRQaXBlbGluZSgpOworfQorCitnbDo6RXJy
b3JPclJlc3VsdDx2azo6UmVuZGVyUGFzcyAqPiBGcmFtZWJ1ZmZlclZrOjpnZXRSZW5kZXJQYXNz
KFZrRGV2aWNlIGRldmljZSkKK3sKKyAgICBpZiAobVJlbmRlclBhc3MudmFsaWQoKSkKKyAgICB7
CisgICAgICAgIHJldHVybiAmbVJlbmRlclBhc3M7CisgICAgfQorCisgICAgLy8gVE9ETyhqbWFk
aWxsKTogQ2FuIHdlIHVzZSBzdGFjay1vbmx5IG1lbW9yeT8KKyAgICBzdGQ6OnZlY3RvcjxWa0F0
dGFjaG1lbnREZXNjcmlwdGlvbj4gYXR0YWNobWVudERlc2NzOworICAgIHN0ZDo6dmVjdG9yPFZr
QXR0YWNobWVudFJlZmVyZW5jZT4gY29sb3JBdHRhY2htZW50UmVmczsKKworICAgIGNvbnN0IGF1
dG8gJmNvbG9yQXR0YWNobWVudHMgPSBtU3RhdGUuZ2V0Q29sb3JBdHRhY2htZW50cygpOworICAg
IGZvciAoc2l6ZV90IGF0dGFjaG1lbnRJbmRleCA9IDA7IGF0dGFjaG1lbnRJbmRleCA8IGNvbG9y
QXR0YWNobWVudHMuc2l6ZSgpOyArK2F0dGFjaG1lbnRJbmRleCkKKyAgICB7CisgICAgICAgIGNv
bnN0IGF1dG8gJmNvbG9yQXR0YWNobWVudCA9IGNvbG9yQXR0YWNobWVudHNbYXR0YWNobWVudElu
ZGV4XTsKKyAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVudC5pc0F0dGFjaGVkKCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIFZrQXR0YWNobWVudERlc2NyaXB0aW9uIGNvbG9yRGVzYzsKKyAgICAg
ICAgICAgIFZrQXR0YWNobWVudFJlZmVyZW5jZSBjb2xvclJlZjsKKworICAgICAgICAgICAgUmVu
ZGVyVGFyZ2V0VmsgKnJlbmRlclRhcmdldCA9IG51bGxwdHI7CisgICAgICAgICAgICBBTkdMRV9U
UlkoY29sb3JBdHRhY2htZW50LmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0KSk7CisKKyAg
ICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IFdlIHdvdWxkIG9ubHkgbmVlZCB0aGlzIGZsYWcg
Zm9yIGR1cGxpY2F0ZWQgYXR0YWNobWVudHMuCisgICAgICAgICAgICBjb2xvckRlc2MuZmxhZ3Mg
ICA9IFZLX0FUVEFDSE1FTlRfREVTQ1JJUFRJT05fTUFZX0FMSUFTX0JJVDsKKyAgICAgICAgICAg
IGNvbG9yRGVzYy5mb3JtYXQgID0gcmVuZGVyVGFyZ2V0LT5mb3JtYXQtPm5hdGl2ZTsKKyAgICAg
ICAgICAgIGNvbG9yRGVzYy5zYW1wbGVzID0gQ29udmVydFNhbXBsZXMoY29sb3JBdHRhY2htZW50
LmdldFNhbXBsZXMoKSk7CisKKyAgICAgICAgICAgIC8vIFRoZSBsb2FkIG9wIGNvbnRyb2xzIHRo
ZSBwcmlvciBleGlzdGluZyBkZXB0aC9jb2xvciBhdHRhY2htZW50IGRhdGEuCisgICAgICAgICAg
ICAvLyBUT0RPKGptYWRpbGwpOiBQcm9wZXIgbG9hZCBvcHMuIFNob3VsZCBub3QgYmUgaGFyZCBj
b2RlZCB0byBjbGVhci4KKyAgICAgICAgICAgIGNvbG9yRGVzYy5sb2FkT3AgICAgICAgICA9IFZL
X0FUVEFDSE1FTlRfTE9BRF9PUF9DTEVBUjsKKyAgICAgICAgICAgIGNvbG9yRGVzYy5zdG9yZU9w
ICAgICAgICA9IFZLX0FUVEFDSE1FTlRfU1RPUkVfT1BfU1RPUkU7CisgICAgICAgICAgICBjb2xv
ckRlc2Muc3RlbmNpbExvYWRPcCAgPSBWS19BVFRBQ0hNRU5UX0xPQURfT1BfRE9OVF9DQVJFOwor
ICAgICAgICAgICAgY29sb3JEZXNjLnN0ZW5jaWxTdG9yZU9wID0gVktfQVRUQUNITUVOVF9TVE9S
RV9PUF9ET05UX0NBUkU7CisgICAgICAgICAgICBjb2xvckRlc2MuaW5pdGlhbExheW91dCAgPSBW
S19JTUFHRV9MQVlPVVRfVU5ERUZJTkVEOworCisgICAgICAgICAgICAvLyBXZSBtaWdodCB3YW50
IHRvIHRyYW5zaXRpb24gZGlyZWN0bHkgdG8gUFJFU0VOVF9TUkMgZm9yIFN1cmZhY2UgYXR0YWNo
bWVudHMuCisgICAgICAgICAgICBjb2xvckRlc2MuZmluYWxMYXlvdXQgPSBWS19JTUFHRV9MQVlP
VVRfQ09MT1JfQVRUQUNITUVOVF9PUFRJTUFMOworCisgICAgICAgICAgICBjb2xvclJlZi5hdHRh
Y2htZW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNvbG9yQXR0YWNobWVudHMuc2l6ZSgpKSAt
IDF1OworICAgICAgICAgICAgY29sb3JSZWYubGF5b3V0ICAgICA9IFZLX0lNQUdFX0xBWU9VVF9D
T0xPUl9BVFRBQ0hNRU5UX09QVElNQUw7CisKKyAgICAgICAgICAgIGF0dGFjaG1lbnREZXNjcy5w
dXNoX2JhY2soY29sb3JEZXNjKTsKKyAgICAgICAgICAgIGNvbG9yQXR0YWNobWVudFJlZnMucHVz
aF9iYWNrKGNvbG9yUmVmKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbnN0IGF1dG8gKmRl
cHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBtU3RhdGUuZ2V0RGVwdGhTdGVuY2lsQXR0YWNobWVudCgp
OworICAgIFZrQXR0YWNobWVudFJlZmVyZW5jZSBkZXB0aFN0ZW5jaWxBdHRhY2htZW50UmVmOwor
ICAgIGJvb2wgdXNlRGVwdGggPSBkZXB0aFN0ZW5jaWxBdHRhY2htZW50ICYmIGRlcHRoU3RlbmNp
bEF0dGFjaG1lbnQtPmlzQXR0YWNoZWQoKTsKKworICAgIGlmICh1c2VEZXB0aCkKKyAgICB7Cisg
ICAgICAgIFZrQXR0YWNobWVudERlc2NyaXB0aW9uIGRlcHRoU3RlbmNpbERlc2M7CisKKyAgICAg
ICAgUmVuZGVyVGFyZ2V0VmsgKnJlbmRlclRhcmdldCA9IG51bGxwdHI7CisgICAgICAgIEFOR0xF
X1RSWShkZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5nZXRSZW5kZXJUYXJnZXQoJnJlbmRlclRhcmdl
dCkpOworCisgICAgICAgIGRlcHRoU3RlbmNpbERlc2MuZmxhZ3MgICAgICAgICAgPSAwOworICAg
ICAgICBkZXB0aFN0ZW5jaWxEZXNjLmZvcm1hdCAgICAgICAgID0gcmVuZGVyVGFyZ2V0LT5mb3Jt
YXQtPm5hdGl2ZTsKKyAgICAgICAgZGVwdGhTdGVuY2lsRGVzYy5zYW1wbGVzICAgICAgICA9IENv
bnZlcnRTYW1wbGVzKGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmdldFNhbXBsZXMoKSk7CisgICAg
ICAgIGRlcHRoU3RlbmNpbERlc2MubG9hZE9wICAgICAgICAgPSBWS19BVFRBQ0hNRU5UX0xPQURf
T1BfQ0xFQVI7CisgICAgICAgIGRlcHRoU3RlbmNpbERlc2Muc3RvcmVPcCAgICAgICAgPSBWS19B
VFRBQ0hNRU5UX1NUT1JFX09QX1NUT1JFOworICAgICAgICBkZXB0aFN0ZW5jaWxEZXNjLnN0ZW5j
aWxMb2FkT3AgID0gVktfQVRUQUNITUVOVF9MT0FEX09QX0RPTlRfQ0FSRTsKKyAgICAgICAgZGVw
dGhTdGVuY2lsRGVzYy5zdGVuY2lsU3RvcmVPcCA9IFZLX0FUVEFDSE1FTlRfU1RPUkVfT1BfRE9O
VF9DQVJFOworICAgICAgICBkZXB0aFN0ZW5jaWxEZXNjLmluaXRpYWxMYXlvdXQgID0gVktfSU1B
R0VfTEFZT1VUX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVF9PUFRJTUFMOworICAgICAgICBkZXB0
aFN0ZW5jaWxEZXNjLmZpbmFsTGF5b3V0ICAgID0gVktfSU1BR0VfTEFZT1VUX0RFUFRIX1NURU5D
SUxfQVRUQUNITUVOVF9PUFRJTUFMOworCisgICAgICAgIGRlcHRoU3RlbmNpbEF0dGFjaG1lbnRS
ZWYuYXR0YWNobWVudCA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihhdHRhY2htZW50RGVzY3Muc2l6
ZSgpKTsKKyAgICAgICAgZGVwdGhTdGVuY2lsQXR0YWNobWVudFJlZi5sYXlvdXQgICAgID0gVktf
SU1BR0VfTEFZT1VUX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVF9PUFRJTUFMOworCisgICAgICAg
IGF0dGFjaG1lbnREZXNjcy5wdXNoX2JhY2soZGVwdGhTdGVuY2lsRGVzYyk7CisgICAgfQorCisg
ICAgQVNTRVJUKCFhdHRhY2htZW50RGVzY3MuZW1wdHkoKSk7CisKKyAgICBWa1N1YnBhc3NEZXNj
cmlwdGlvbiBzdWJwYXNzRGVzYzsKKworICAgIHN1YnBhc3NEZXNjLmZsYWdzICAgICAgICAgICAg
ICAgICAgID0gMDsKKyAgICBzdWJwYXNzRGVzYy5waXBlbGluZUJpbmRQb2ludCAgICAgICA9IFZL
X1BJUEVMSU5FX0JJTkRfUE9JTlRfR1JBUEhJQ1M7CisgICAgc3VicGFzc0Rlc2MuaW5wdXRBdHRh
Y2htZW50Q291bnQgICAgPSAwOworICAgIHN1YnBhc3NEZXNjLnBJbnB1dEF0dGFjaG1lbnRzICAg
ICAgID0gbnVsbHB0cjsKKyAgICBzdWJwYXNzRGVzYy5jb2xvckF0dGFjaG1lbnRDb3VudCAgICA9
IHN0YXRpY19jYXN0PHVpbnQzMl90Pihjb2xvckF0dGFjaG1lbnRSZWZzLnNpemUoKSk7CisgICAg
c3VicGFzc0Rlc2MucENvbG9yQXR0YWNobWVudHMgICAgICAgPSBjb2xvckF0dGFjaG1lbnRSZWZz
LmRhdGEoKTsKKyAgICBzdWJwYXNzRGVzYy5wUmVzb2x2ZUF0dGFjaG1lbnRzICAgICA9IG51bGxw
dHI7CisgICAgc3VicGFzc0Rlc2MucERlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSAodXNlRGVwdGgg
PyAmZGVwdGhTdGVuY2lsQXR0YWNobWVudFJlZiA6IG51bGxwdHIpOworICAgIHN1YnBhc3NEZXNj
LnByZXNlcnZlQXR0YWNobWVudENvdW50ID0gMDsKKyAgICBzdWJwYXNzRGVzYy5wUHJlc2VydmVB
dHRhY2htZW50cyAgICA9IG51bGxwdHI7CisKKyAgICBWa1JlbmRlclBhc3NDcmVhdGVJbmZvIHJl
bmRlclBhc3NJbmZvOworCisgICAgcmVuZGVyUGFzc0luZm8uc1R5cGUgICAgICAgICAgID0gVktf
U1RSVUNUVVJFX1RZUEVfUkVOREVSX1BBU1NfQ1JFQVRFX0lORk87CisgICAgcmVuZGVyUGFzc0lu
Zm8ucE5leHQgICAgICAgICAgID0gbnVsbHB0cjsKKyAgICByZW5kZXJQYXNzSW5mby5mbGFncyAg
ICAgICAgICAgPSAwOworICAgIHJlbmRlclBhc3NJbmZvLmF0dGFjaG1lbnRDb3VudCA9IHN0YXRp
Y19jYXN0PHVpbnQzMl90PihhdHRhY2htZW50RGVzY3Muc2l6ZSgpKTsKKyAgICByZW5kZXJQYXNz
SW5mby5wQXR0YWNobWVudHMgICAgPSBhdHRhY2htZW50RGVzY3MuZGF0YSgpOworICAgIHJlbmRl
clBhc3NJbmZvLnN1YnBhc3NDb3VudCAgICA9IDE7CisgICAgcmVuZGVyUGFzc0luZm8ucFN1YnBh
c3NlcyAgICAgID0gJnN1YnBhc3NEZXNjOworICAgIHJlbmRlclBhc3NJbmZvLmRlcGVuZGVuY3lD
b3VudCA9IDA7CisgICAgcmVuZGVyUGFzc0luZm8ucERlcGVuZGVuY2llcyAgID0gbnVsbHB0cjsK
KworICAgIHZrOjpSZW5kZXJQYXNzIHJlbmRlclBhc3M7CisgICAgQU5HTEVfVFJZKHJlbmRlclBh
c3MuaW5pdChkZXZpY2UsIHJlbmRlclBhc3NJbmZvKSk7CisKKyAgICBtUmVuZGVyUGFzcy5yZXRh
aW4oZGV2aWNlLCBzdGQ6Om1vdmUocmVuZGVyUGFzcykpOworCisgICAgcmV0dXJuICZtUmVuZGVy
UGFzczsKK30KKworZ2w6OkVycm9yT3JSZXN1bHQ8dms6OkZyYW1lYnVmZmVyICo+IEZyYW1lYnVm
ZmVyVms6OmdldEZyYW1lYnVmZmVyKFZrRGV2aWNlIGRldmljZSkKK3sKKyAgICAvLyBJZiB3ZSd2
ZSBhbHJlYWR5IGNyZWF0ZWQgb3VyIGNhY2hlZCBGcmFtZWJ1ZmZlciwgcmV0dXJuIGl0LgorICAg
IGlmIChtRnJhbWVidWZmZXIudmFsaWQoKSkKKyAgICB7CisgICAgICAgIHJldHVybiAmbUZyYW1l
YnVmZmVyOworICAgIH0KKworICAgIHZrOjpSZW5kZXJQYXNzICpyZW5kZXJQYXNzID0gbnVsbHB0
cjsKKyAgICBBTkdMRV9UUllfUkVTVUxUKGdldFJlbmRlclBhc3MoZGV2aWNlKSwgcmVuZGVyUGFz
cyk7CisKKyAgICAvLyBJZiB3ZSd2ZSBhIEZyYW1lYnVmZmVyIHByb3ZpZGVkIGJ5IGEgU3VyZmFj
ZSAoZGVmYXVsdCBGQk8vYmFja2J1ZmZlciksIHF1ZXJ5IGl0LgorICAgIGlmIChtQmFja2J1ZmZl
cikKKyAgICB7CisgICAgICAgIHJldHVybiBtQmFja2J1ZmZlci0+Z2V0Q3VycmVudEZyYW1lYnVm
ZmVyKGRldmljZSwgKnJlbmRlclBhc3MpOworICAgIH0KKworICAgIC8vIEdhdGhlciBWa0ltYWdl
Vmlld3Mgb3ZlciBhbGwgRkJPIGF0dGFjaG1lbnRzLCBhbHNvIHNpemUgb2YgYXR0YWNoZWQgcmVn
aW9uLgorICAgIHN0ZDo6dmVjdG9yPFZrSW1hZ2VWaWV3PiBhdHRhY2htZW50czsKKyAgICBnbDo6
RXh0ZW50cyBhdHRhY2htZW50c1NpemU7CisKKyAgICBjb25zdCBhdXRvICZjb2xvckF0dGFjaG1l
bnRzID0gbVN0YXRlLmdldENvbG9yQXR0YWNobWVudHMoKTsKKyAgICBmb3IgKHNpemVfdCBhdHRh
Y2htZW50SW5kZXggPSAwOyBhdHRhY2htZW50SW5kZXggPCBjb2xvckF0dGFjaG1lbnRzLnNpemUo
KTsgKythdHRhY2htZW50SW5kZXgpCisgICAgeworICAgICAgICBjb25zdCBhdXRvICZjb2xvckF0
dGFjaG1lbnQgPSBjb2xvckF0dGFjaG1lbnRzW2F0dGFjaG1lbnRJbmRleF07CisgICAgICAgIGlm
IChjb2xvckF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpKQorICAgICAgICB7CisgICAgICAgICAgICBS
ZW5kZXJUYXJnZXRWayAqcmVuZGVyVGFyZ2V0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEFOR0xF
X1RSWShjb2xvckF0dGFjaG1lbnQuZ2V0UmVuZGVyVGFyZ2V0PFJlbmRlclRhcmdldFZrPigmcmVu
ZGVyVGFyZ2V0KSk7CisgICAgICAgICAgICBhdHRhY2htZW50cy5wdXNoX2JhY2socmVuZGVyVGFy
Z2V0LT5pbWFnZVZpZXctPmdldEhhbmRsZSgpKTsKKworICAgICAgICAgICAgQVNTRVJUKGF0dGFj
aG1lbnRzU2l6ZS5lbXB0eSgpIHx8IGF0dGFjaG1lbnRzU2l6ZSA9PSBjb2xvckF0dGFjaG1lbnQu
Z2V0U2l6ZSgpKTsKKyAgICAgICAgICAgIGF0dGFjaG1lbnRzU2l6ZSA9IGNvbG9yQXR0YWNobWVu
dC5nZXRTaXplKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBhdXRvICpkZXB0aFN0
ZW5jaWxBdHRhY2htZW50ID0gbVN0YXRlLmdldERlcHRoU3RlbmNpbEF0dGFjaG1lbnQoKTsKKyAg
ICBpZiAoZGVwdGhTdGVuY2lsQXR0YWNobWVudCAmJiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5p
c0F0dGFjaGVkKCkpCisgICAgeworICAgICAgICBSZW5kZXJUYXJnZXRWayAqcmVuZGVyVGFyZ2V0
ID0gbnVsbHB0cjsKKyAgICAgICAgQU5HTEVfVFJZKGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmdl
dFJlbmRlclRhcmdldDxSZW5kZXJUYXJnZXRWaz4oJnJlbmRlclRhcmdldCkpOworICAgICAgICBh
dHRhY2htZW50cy5wdXNoX2JhY2socmVuZGVyVGFyZ2V0LT5pbWFnZVZpZXctPmdldEhhbmRsZSgp
KTsKKworICAgICAgICBBU1NFUlQoYXR0YWNobWVudHNTaXplLmVtcHR5KCkgfHwgYXR0YWNobWVu
dHNTaXplID09IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmdldFNpemUoKSk7CisgICAgICAgIGF0
dGFjaG1lbnRzU2l6ZSA9IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmdldFNpemUoKTsKKyAgICB9
CisKKyAgICBBU1NFUlQoIWF0dGFjaG1lbnRzLmVtcHR5KCkpOworCisgICAgVmtGcmFtZWJ1ZmZl
ckNyZWF0ZUluZm8gZnJhbWVidWZmZXJJbmZvOworCisgICAgZnJhbWVidWZmZXJJbmZvLnNUeXBl
ICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX0ZSQU1FQlVGRkVSX0NSRUFURV9JTkZPOwor
ICAgIGZyYW1lYnVmZmVySW5mby5wTmV4dCAgICAgICAgICAgPSBudWxscHRyOworICAgIGZyYW1l
YnVmZmVySW5mby5mbGFncyAgICAgICAgICAgPSAwOworICAgIGZyYW1lYnVmZmVySW5mby5yZW5k
ZXJQYXNzICAgICAgPSBtUmVuZGVyUGFzcy5nZXRIYW5kbGUoKTsKKyAgICBmcmFtZWJ1ZmZlcklu
Zm8uYXR0YWNobWVudENvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGF0dGFjaG1lbnRzLnNp
emUoKSk7CisgICAgZnJhbWVidWZmZXJJbmZvLnBBdHRhY2htZW50cyAgICA9IGF0dGFjaG1lbnRz
LmRhdGEoKTsKKyAgICBmcmFtZWJ1ZmZlckluZm8ud2lkdGggICAgICAgICAgID0gc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGF0dGFjaG1lbnRzU2l6ZS53aWR0aCk7CisgICAgZnJhbWVidWZmZXJJbmZv
LmhlaWdodCAgICAgICAgICA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihhdHRhY2htZW50c1NpemUu
aGVpZ2h0KTsKKyAgICBmcmFtZWJ1ZmZlckluZm8ubGF5ZXJzICAgICAgICAgID0gMTsKKworICAg
IHZrOjpGcmFtZWJ1ZmZlciBmcmFtZWJ1ZmZlcjsKKyAgICBBTkdMRV9UUlkoc3RhdGljX2Nhc3Q8
Z2w6OkVycm9yPihmcmFtZWJ1ZmZlci5pbml0KGRldmljZSwgZnJhbWVidWZmZXJJbmZvKSkpOwor
CisgICAgbUZyYW1lYnVmZmVyLnJldGFpbihkZXZpY2UsIHN0ZDo6bW92ZShmcmFtZWJ1ZmZlcikp
OworCisgICAgcmV0dXJuICZtRnJhbWVidWZmZXI7Cit9CisKK2dsOjpFcnJvciBGcmFtZWJ1ZmZl
clZrOjpnZXRTYW1wbGVQb3NpdGlvbihzaXplX3QgaW5kZXgsIEdMZmxvYXQgKnh5KSBjb25zdAog
ewogICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkludGVybmFsRXJyb3IoKSA8
PCAiZ2V0U2FtcGxlUG9zaXRpb24gaXMgdW5pbXBsZW1lbnRlZC4iOworfQorCitnbDo6RXJyb3Ig
RnJhbWVidWZmZXJWazo6YmVnaW5SZW5kZXJQYXNzKFZrRGV2aWNlIGRldmljZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1h
bmRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcmlh
bCBxdWV1ZVNlcmlhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlKQoreworICAgIC8vIFRPRE8oam1hZGlsbCk6IENhY2hl
IHJlbmRlciB0YXJnZXRzLgorICAgIGZvciAoY29uc3QgYXV0byAmY29sb3JBdHRhY2htZW50IDog
bVN0YXRlLmdldENvbG9yQXR0YWNobWVudHMoKSkKKyAgICB7CisgICAgICAgIGlmIChjb2xvckF0
dGFjaG1lbnQuaXNBdHRhY2hlZCgpKQorICAgICAgICB7CisgICAgICAgICAgICBSZW5kZXJUYXJn
ZXRWayAqcmVuZGVyVGFyZ2V0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEFOR0xFX1RSWShjb2xv
ckF0dGFjaG1lbnQuZ2V0UmVuZGVyVGFyZ2V0PFJlbmRlclRhcmdldFZrPigmcmVuZGVyVGFyZ2V0
KSk7CisgICAgICAgICAgICByZW5kZXJUYXJnZXQtPnJlc291cmNlLT5zZXRRdWV1ZVNlcmlhbChx
dWV1ZVNlcmlhbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBhdXRvICpkZXB0aFN0
ZW5jaWxBdHRhY2htZW50ID0gbVN0YXRlLmdldERlcHRoU3RlbmNpbEF0dGFjaG1lbnQoKTsKKyAg
ICBpZiAoZGVwdGhTdGVuY2lsQXR0YWNobWVudCAmJiBkZXB0aFN0ZW5jaWxBdHRhY2htZW50LT5p
c0F0dGFjaGVkKCkpCisgICAgeworICAgICAgICBSZW5kZXJUYXJnZXRWayAqcmVuZGVyVGFyZ2V0
ID0gbnVsbHB0cjsKKyAgICAgICAgQU5HTEVfVFJZKGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmdl
dFJlbmRlclRhcmdldDxSZW5kZXJUYXJnZXRWaz4oJnJlbmRlclRhcmdldCkpOworICAgICAgICBy
ZW5kZXJUYXJnZXQtPnJlc291cmNlLT5zZXRRdWV1ZVNlcmlhbChxdWV1ZVNlcmlhbCk7CisgICAg
fQorCisgICAgdms6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IG51bGxwdHI7CisgICAgQU5H
TEVfVFJZX1JFU1VMVChnZXRGcmFtZWJ1ZmZlcihkZXZpY2UpLCBmcmFtZWJ1ZmZlcik7CisgICAg
QVNTRVJUKGZyYW1lYnVmZmVyICYmIGZyYW1lYnVmZmVyLT52YWxpZCgpKTsKKworICAgIHZrOjpS
ZW5kZXJQYXNzICpyZW5kZXJQYXNzID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUllfUkVTVUxUKGdl
dFJlbmRlclBhc3MoZGV2aWNlKSwgcmVuZGVyUGFzcyk7CisgICAgQVNTRVJUKHJlbmRlclBhc3Mg
JiYgcmVuZGVyUGFzcy0+dmFsaWQoKSk7CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBQcm9wZXIg
Y2xlYXIgdmFsdWUgaW1wbGVtZW50YXRpb24uCisgICAgVmtDbGVhckNvbG9yVmFsdWUgY29sb3JD
bGVhcjsKKyAgICBtZW1zZXQoJmNvbG9yQ2xlYXIsIDAsIHNpemVvZihWa0NsZWFyQ29sb3JWYWx1
ZSkpOworICAgIGNvbG9yQ2xlYXIuZmxvYXQzMlswXSA9IGdsU3RhdGUuZ2V0Q29sb3JDbGVhclZh
bHVlKCkucmVkOworICAgIGNvbG9yQ2xlYXIuZmxvYXQzMlsxXSA9IGdsU3RhdGUuZ2V0Q29sb3JD
bGVhclZhbHVlKCkuZ3JlZW47CisgICAgY29sb3JDbGVhci5mbG9hdDMyWzJdID0gZ2xTdGF0ZS5n
ZXRDb2xvckNsZWFyVmFsdWUoKS5ibHVlOworICAgIGNvbG9yQ2xlYXIuZmxvYXQzMlszXSA9IGds
U3RhdGUuZ2V0Q29sb3JDbGVhclZhbHVlKCkuYWxwaGE7CisKKyAgICBzdGQ6OnZlY3RvcjxWa0Ns
ZWFyVmFsdWU+IGF0dGFjaG1lbnRDbGVhclZhbHVlczsKKyAgICBhdHRhY2htZW50Q2xlYXJWYWx1
ZXMucHVzaF9iYWNrKHtjb2xvckNsZWFyfSk7CisKKyAgICAvLyBVcGRhdGVkIHRoZSBjYWNoZWQg
aW1hZ2UgbGF5b3V0IG9mIHRoZSBhdHRhY2htZW50cyBpbiB0aGlzIEZCTy4KKyAgICAvLyBGb3Ig
YSBkZWZhdWx0IEZCTywgd2UgbmVlZCB0byBjYWxsIHRocm91Z2ggdG8gdGhlIFdpbmRvd1N1cmZh
Y2VWaworICAgIC8vIFRPRE8oam1hZGlsbCk6IEl0ZXJhdGUgb3ZlciBhbGwgYXR0YWNobWVudHMu
CisgICAgQVNTRVJUKG1CYWNrYnVmZmVyKTsKKyAgICBSZW5kZXJUYXJnZXRWayAqcmVuZGVyVGFy
Z2V0ID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUlkobVN0YXRlLmdldEZpcnN0Q29sb3JBdHRhY2ht
ZW50KCktPmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0KSk7CisgICAgcmVuZGVyVGFyZ2V0
LT5pbWFnZS0+dXBkYXRlTGF5b3V0KFZLX0lNQUdFX0xBWU9VVF9DT0xPUl9BVFRBQ0hNRU5UX09Q
VElNQUwpOworCisgICAgQU5HTEVfVFJZKGNvbW1hbmRCdWZmZXItPmJlZ2luKGRldmljZSkpOwor
ICAgIGNvbW1hbmRCdWZmZXItPmJlZ2luUmVuZGVyUGFzcygqcmVuZGVyUGFzcywgKmZyYW1lYnVm
ZmVyLCBnbFN0YXRlLmdldFZpZXdwb3J0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGF0dGFjaG1lbnRDbGVhclZhbHVlcyk7CisKKyAgICBzZXRRdWV1ZVNlcmlhbChxdWV1
ZVNlcmlhbCk7CisgICAgaWYgKG1CYWNrYnVmZmVyKQorICAgIHsKKyAgICAgICAgbUJhY2tidWZm
ZXItPnNldFF1ZXVlU2VyaWFsKHF1ZXVlU2VyaWFsKTsKKyAgICB9CisKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZyYW1lYnVmZmVy
VmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vRnJhbWVidWZmZXJWay5oCmluZGV4IDllYjRhYmY5MjE2NDYxYTc4ZmY1NjkxZDkxNmY4YjVl
MDJjMmZlZTIuLjk1ZTA0YzJlMjcxZTg4NmEwMzdhOTdjNDNiZmU4MmEyMGE3NzcxMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vRnJhbWVidWZmZXJWay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vRnJhbWVidWZmZXJWay5oCkBAIC0xMSwxNSArMTEsMjggQEAK
ICNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX0ZSQU1FQlVGRkVSVktfSF8KIAogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0ZyYW1lYnVmZmVySW1wbC5oIgorI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9yZW5kZXJlcnZrX3V0aWxzLmgiCiAKIG5hbWVzcGFjZSBy
eAogeworY2xhc3MgUmVuZGVyVGFyZ2V0Vms7CitjbGFzcyBXaW5kb3dTdXJmYWNlVms7CiAKLWNs
YXNzIEZyYW1lYnVmZmVyVmsgOiBwdWJsaWMgRnJhbWVidWZmZXJJbXBsCitjbGFzcyBGcmFtZWJ1
ZmZlclZrIDogcHVibGljIEZyYW1lYnVmZmVySW1wbCwgcHVibGljIFJlc291cmNlVmsKIHsKICAg
cHVibGljOgotICAgIEZyYW1lYnVmZmVyVmsoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0
YXRlKTsKKyAgICAvLyBGYWN0b3J5IG1ldGhvZHMgc28gd2UgZG9uJ3QgaGF2ZSB0byB1c2UgY29u
c3RydWN0b3JzIHdpdGggb3ZlcmxvYWRzLgorICAgIHN0YXRpYyBGcmFtZWJ1ZmZlclZrICpDcmVh
dGVVc2VyRkJPKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSk7CisKKyAgICAvLyBU
aGUgcGFzc2VkLWluIFN1cmZhY2VWSyBtdXN0IGJlIGRlc3Ryb3llZCBhZnRlciB0aGlzIEZCTyBp
cyBkZXN0cm95ZWQuIE91ciBTdXJmYWNlIGNvZGUgaXMKKyAgICAvLyByZWYtY291bnRlZCBvbiB0
aGUgbnVtYmVyIG9mICdjdXJyZW50JyBjb250ZXh0cywgc28gd2Ugc2hvdWxkbid0IGdldCBhbnkg
ZGFuZ2xpbmcgc3VyZmFjZQorICAgIC8vIHJlZmVyZW5jZXMuIFNlZSBTdXJmYWNlOjpzZXRJc0N1
cnJlbnQoYm9vbCkuCisgICAgc3RhdGljIEZyYW1lYnVmZmVyVmsgKkNyZWF0ZURlZmF1bHRGQk8o
Y29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdpbmRvd1N1cmZhY2VWayAqYmFja2J1ZmZlcik7CisKICAg
ICB+RnJhbWVidWZmZXJWaygpIG92ZXJyaWRlOworICAgIHZvaWQgZGVzdHJveShDb250ZXh0SW1w
bCAqY29udGV4dEltcGwpIG92ZXJyaWRlOworICAgIHZvaWQgZGVzdHJveURlZmF1bHQoRGlzcGxh
eUltcGwgKmRpc3BsYXlJbXBsKSBvdmVycmlkZTsKIAogICAgIGdsOjpFcnJvciBkaXNjYXJkKHNp
emVfdCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykgb3ZlcnJpZGU7CiAgICAgZ2w6
OkVycm9yIGludmFsaWRhdGUoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRz
KSBvdmVycmlkZTsKQEAgLTYyLDcgKzc1LDI3IEBAIGNsYXNzIEZyYW1lYnVmZmVyVmsgOiBwdWJs
aWMgRnJhbWVidWZmZXJJbXBsCiAKICAgICBib29sIGNoZWNrU3RhdHVzKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0
cyAmZGlydHlCaXRzKSBvdmVycmlkZTsKKyAgICB2b2lkIHN5bmNTdGF0ZShDb250ZXh0SW1wbCAq
Y29udGV4dEltcGwsIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGlydHlCaXRzICZkaXJ0eUJpdHMp
IG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGdldFNhbXBsZVBvc2l0aW9uKHNpemVfdCBpbmRl
eCwgR0xmbG9hdCAqeHkpIGNvbnN0IG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGJlZ2luUmVu
ZGVyUGFzcyhWa0RldmljZSBkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNlcmlhbCBxdWV1ZVNlcmlhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpTdGF0ZSAmZ2xTdGF0ZSk7CisKKyAgICBnbDo6RXJyb3JPclJlc3VsdDx2azo6
UmVuZGVyUGFzcyAqPiBnZXRSZW5kZXJQYXNzKFZrRGV2aWNlIGRldmljZSk7CisKKyAgcHJpdmF0
ZToKKyAgICBGcmFtZWJ1ZmZlclZrKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSk7
CisgICAgRnJhbWVidWZmZXJWayhjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUsIFdp
bmRvd1N1cmZhY2VWayAqYmFja2J1ZmZlcik7CisKKyAgICBnbDo6RXJyb3JPclJlc3VsdDx2azo6
RnJhbWVidWZmZXIgKj4gZ2V0RnJhbWVidWZmZXIoVmtEZXZpY2UgZGV2aWNlKTsKKworICAgIFdp
bmRvd1N1cmZhY2VWayAqbUJhY2tidWZmZXI7CisKKyAgICB2azo6UmVuZGVyUGFzcyBtUmVuZGVy
UGFzczsKKyAgICB2azo6RnJhbWVidWZmZXIgbUZyYW1lYnVmZmVyOwogfTsKIAogfSAgLy8gbmFt
ZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL0dsc2xhbmdXcmFwcGVyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vR2xzbGFuZ1dyYXBwZXIuY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU4NzFjNTRhNjI0ODY3ZTBkNDg1ODM1Zjk2MWVmZjgwOGQyZDdmODAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL0dsc2xhbmdXcmFwcGVyLmNwcApAQCAtMCwwICsxLDEyMSBAQAorLy8KKy8vIENv
cHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisvLyBHbHNsYW5nV3JhcHBlcjogV3JhcHBlciBmb3IgVnVsa2FuJ3MgZ2xzbGFuZyBjb21w
aWxlci4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vR2xzbGFuZ1dy
YXBwZXIuaCIKKworLy8gZ2xzbGFuZydzIHZlcnNpb24gb2YgU2hhZGVyTGFuZy5oLCBub3QgdG8g
YmUgY29uZnVzZWQgd2l0aCBBTkdMRSdzLgorLy8gT3VyIGZ1bmN0aW9uIGRlZnMgY29uZmxpY3Qg
d2l0aCB0aGVpcnMsIGJ1dCB3ZSBjYXJlZnVsbHkgbWFuYWdlIG91ciBpbmNsdWRlcyB0byBwcmV2
ZW50IHRoaXMuCisjaW5jbHVkZSA8U2hhZGVyTGFuZy5oPgorCisvLyBPdGhlciBnbHNsYW5nIGlu
Y2x1ZGVzLgorI2luY2x1ZGUgPFN0YW5kQWxvbmUvUmVzb3VyY2VMaW1pdHMuaD4KKyNpbmNsdWRl
IDxTUElSVi9HbHNsYW5nVG9TcHYuaD4KKworI2luY2x1ZGUgPGFycmF5PgorCituYW1lc3BhY2Ug
cngKK3sKKworLy8gc3RhdGljCitHbHNsYW5nV3JhcHBlciAqR2xzbGFuZ1dyYXBwZXI6Om1JbnN0
YW5jZSA9IG51bGxwdHI7CisKKy8vIHN0YXRpYworR2xzbGFuZ1dyYXBwZXIgKkdsc2xhbmdXcmFw
cGVyOjpHZXRSZWZlcmVuY2UoKQoreworICAgIGlmICghbUluc3RhbmNlKQorICAgIHsKKyAgICAg
ICAgbUluc3RhbmNlID0gbmV3IEdsc2xhbmdXcmFwcGVyKCk7CisgICAgfQorCisgICAgbUluc3Rh
bmNlLT5hZGRSZWYoKTsKKworICAgIHJldHVybiBtSW5zdGFuY2U7Cit9CisKKy8vIHN0YXRpYwor
dm9pZCBHbHNsYW5nV3JhcHBlcjo6UmVsZWFzZVJlZmVyZW5jZSgpCit7CisgICAgaWYgKG1JbnN0
YW5jZS0+Z2V0UmVmQ291bnQoKSA9PSAxKQorICAgIHsKKyAgICAgICAgbUluc3RhbmNlLT5yZWxl
YXNlKCk7CisgICAgICAgIG1JbnN0YW5jZSA9IG51bGxwdHI7CisgICAgfQorICAgIGVsc2UKKyAg
ICB7CisgICAgICAgIG1JbnN0YW5jZS0+cmVsZWFzZSgpOworICAgIH0KK30KKworR2xzbGFuZ1dy
YXBwZXI6Okdsc2xhbmdXcmFwcGVyKCkKK3sKKyAgICBpbnQgcmVzdWx0ID0gU2hJbml0aWFsaXpl
KCk7CisgICAgQVNTRVJUKHJlc3VsdCAhPSAwKTsKK30KKworR2xzbGFuZ1dyYXBwZXI6On5HbHNs
YW5nV3JhcHBlcigpCit7CisgICAgaW50IHJlc3VsdCA9IFNoRmluYWxpemUoKTsKKyAgICBBU1NF
UlQocmVzdWx0ICE9IDApOworfQorCitMaW5rUmVzdWx0IEdsc2xhbmdXcmFwcGVyOjpsaW5rUHJv
Z3JhbShjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U291cmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U291cmNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8dWludDMy
X3Q+ICp2ZXJ0ZXhDb2RlT3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+ICpmcmFnbWVudENvZGVPdXQpCit7CisgICAgc3RkOjph
cnJheTxjb25zdCBjaGFyICosIDI+IHN0cmluZ3MgPSB7e3ZlcnRleFNvdXJjZS5jX3N0cigpLCBm
cmFnbWVudFNvdXJjZS5jX3N0cigpfX07CisKKyAgICBzdGQ6OmFycmF5PGludCwgMj4gbGVuZ3Ro
cyA9IHsKKyAgICAgICAge3N0YXRpY19jYXN0PGludD4odmVydGV4U291cmNlLmxlbmd0aCgpKSwg
c3RhdGljX2Nhc3Q8aW50PihmcmFnbWVudFNvdXJjZS5sZW5ndGgoKSl9fTsKKworICAgIC8vIEVu
YWJsZSBTUElSLVYgYW5kIFZ1bGthbiBydWxlcyB3aGVuIHBhcnNpbmcgR0xTTAorICAgIEVTaE1l
c3NhZ2VzIG1lc3NhZ2VzID0gc3RhdGljX2Nhc3Q8RVNoTWVzc2FnZXM+KEVTaE1zZ1NwdlJ1bGVz
IHwgRVNoTXNnVnVsa2FuUnVsZXMpOworCisgICAgZ2xzbGFuZzo6VFNoYWRlciB2ZXJ0ZXhTaGFk
ZXIoRVNoTGFuZ1ZlcnRleCk7CisgICAgdmVydGV4U2hhZGVyLnNldFN0cmluZ3NXaXRoTGVuZ3Ro
cygmc3RyaW5nc1swXSwgJmxlbmd0aHNbMF0sIDEpOworICAgIHZlcnRleFNoYWRlci5zZXRFbnRy
eVBvaW50KCJtYWluIik7CisgICAgYm9vbCB2ZXJ0ZXhSZXN1bHQgPSB2ZXJ0ZXhTaGFkZXIucGFy
c2UoJmdsc2xhbmc6OkRlZmF1bHRUQnVpbHRJblJlc291cmNlLCA0NTAsIEVDb3JlUHJvZmlsZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgZmFsc2Us
IG1lc3NhZ2VzKTsKKyAgICBpZiAoIXZlcnRleFJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVy
biBnbDo6SW50ZXJuYWxFcnJvcigpIDw8ICJJbnRlcm5hbCBlcnJvciBwYXJzaW5nIFZ1bGthbiB2
ZXJ0ZXggc2hhZGVyOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCB2
ZXJ0ZXhTaGFkZXIuZ2V0SW5mb0xvZygpIDw8ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPDwgdmVydGV4U2hhZGVyLmdldEluZm9EZWJ1Z0xvZygpIDw8ICJcbiI7Cisg
ICAgfQorCisgICAgZ2xzbGFuZzo6VFNoYWRlciBmcmFnbWVudFNoYWRlcihFU2hMYW5nRnJhZ21l
bnQpOworICAgIGZyYWdtZW50U2hhZGVyLnNldFN0cmluZ3NXaXRoTGVuZ3Rocygmc3RyaW5nc1sx
XSwgJmxlbmd0aHNbMV0sIDEpOworICAgIGZyYWdtZW50U2hhZGVyLnNldEVudHJ5UG9pbnQoIm1h
aW4iKTsKKyAgICBib29sIGZyYWdtZW50UmVzdWx0ID0gZnJhZ21lbnRTaGFkZXIucGFyc2UoJmds
c2xhbmc6OkRlZmF1bHRUQnVpbHRJblJlc291cmNlLCA0NTAsIEVDb3JlUHJvZmlsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIGZhbHNlLCBt
ZXNzYWdlcyk7CisgICAgaWYgKCFmcmFnbWVudFJlc3VsdCkKKyAgICB7CisgICAgICAgIHJldHVy
biBnbDo6SW50ZXJuYWxFcnJvcigpIDw8ICJJbnRlcm5hbCBlcnJvciBwYXJzaW5nIFZ1bGthbiBm
cmFnbWVudCBzaGFkZXI6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8
IGZyYWdtZW50U2hhZGVyLmdldEluZm9Mb2coKSA8PCAiXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8IGZyYWdtZW50U2hhZGVyLmdldEluZm9EZWJ1Z0xvZygpIDw8ICJc
biI7CisgICAgfQorCisgICAgZ2xzbGFuZzo6VFByb2dyYW0gcHJvZ3JhbTsKKyAgICBwcm9ncmFt
LmFkZFNoYWRlcigmdmVydGV4U2hhZGVyKTsKKyAgICBwcm9ncmFtLmFkZFNoYWRlcigmZnJhZ21l
bnRTaGFkZXIpOworICAgIGJvb2wgbGlua1Jlc3VsdCA9IHByb2dyYW0ubGluayhtZXNzYWdlcyk7
CisgICAgaWYgKCFsaW5rUmVzdWx0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpJbnRlcm5h
bEVycm9yKCkgPDwgIkludGVybmFsIGVycm9yIGxpbmtpbmcgVnVsa2FuIHNoYWRlcnM6XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHByb2dyYW0uZ2V0SW5mb0xvZygp
IDw8ICJcbiI7CisgICAgfQorCisgICAgZ2xzbGFuZzo6VEludGVybWVkaWF0ZSAqdmVydGV4U3Rh
Z2UgICA9IHByb2dyYW0uZ2V0SW50ZXJtZWRpYXRlKEVTaExhbmdWZXJ0ZXgpOworICAgIGdsc2xh
bmc6OlRJbnRlcm1lZGlhdGUgKmZyYWdtZW50U3RhZ2UgPSBwcm9ncmFtLmdldEludGVybWVkaWF0
ZShFU2hMYW5nRnJhZ21lbnQpOworICAgIGdsc2xhbmc6Okdsc2xhbmdUb1NwdigqdmVydGV4U3Rh
Z2UsICp2ZXJ0ZXhDb2RlT3V0KTsKKyAgICBnbHNsYW5nOjpHbHNsYW5nVG9TcHYoKmZyYWdtZW50
U3RhZ2UsICpmcmFnbWVudENvZGVPdXQpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gIC8v
IG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9HbHNsYW5nV3JhcHBlci5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9HbHNsYW5nV3JhcHBlci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmRhODQ4YjcxMTcwMTcyNDdhNmU4ZWQwYTViMDQxZjE4NGQ5M2NiMDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL0dsc2xhbmdXcmFwcGVyLmgKQEAgLTAsMCArMSw0MCBAQAorLy8KKy8vIENvcHly
aWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisvLyBHbHNsYW5nV3JhcHBlcjogV3JhcHBlciBmb3IgVnVsa2FuJ3MgZ2xzbGFuZyBjb21waWxl
ci4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX0dMU0xBTkdfV1JBUFBF
Ul9IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fR0xTTEFOR19XUkFQUEVSX0hf
CisKKyNpbmNsdWRlICJsaWJBTkdMRS9SZWZDb3VudE9iamVjdC5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsLmgiCisKK25hbWVzcGFjZSByeAoreworCitjbGFzcyBH
bHNsYW5nV3JhcHBlciA6IHB1YmxpYyBSZWZDb3VudE9iamVjdE5vSUQKK3sKKyAgcHVibGljOgor
ICAgIC8vIEluY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50LgorICAgIC8vIFRPRE8oam1hZGls
bCk6IERldGVybWluZSBob3cgdG8gaGFuZGxlIHRoaXMgYXRvbWljYWxseS4KKyAgICBzdGF0aWMg
R2xzbGFuZ1dyYXBwZXIgKkdldFJlZmVyZW5jZSgpOworICAgIHN0YXRpYyB2b2lkIFJlbGVhc2VS
ZWZlcmVuY2UoKTsKKworICAgIExpbmtSZXN1bHQgbGlua1Byb2dyYW0oY29uc3Qgc3RkOjpzdHJp
bmcgJnZlcnRleFNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZmcmFnbWVudFNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
dmVjdG9yPHVpbnQzMl90PiAqdmVydGV4Q29kZU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiAqZnJhZ21lbnRDb2RlT3V0KTsKKworICBwcml2YXRl
OgorICAgIEdsc2xhbmdXcmFwcGVyKCk7CisgICAgfkdsc2xhbmdXcmFwcGVyKCkgb3ZlcnJpZGU7
CisKKyAgICBzdGF0aWMgR2xzbGFuZ1dyYXBwZXIgKm1JbnN0YW5jZTsKK307CisKK30gIC8vIG5h
bWVzcGFjZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9HTFNMQU5H
X1dSQVBQRVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbVZrLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbVZrLmNwcAppbmRleCA1OTFj
ZjA2MmM1MzMwMzIxNjgxZmUwMzY5YjNkYmYxMWI3NDhjOWNlLi42ZTUzODgzZGY4MTU3YWM4NDIy
ZWM4ZWE3YjdmODgwZGNjYmU3Y2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Byb2dyYW1Way5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtVmsu
Y3BwCkBAIC0xMCw2ICsxMCw5IEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L1Byb2dyYW1Way5oIgogCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9HbHNsYW5nV3JhcHBlci5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9SZW5kZXJlclZrLmgiCiAKIG5hbWVzcGFjZSByeAogewpAQCAtMjIsMTAgKzI1
LDIxIEBAIFByb2dyYW1Wazo6flByb2dyYW1WaygpCiB7CiB9CiAKLUxpbmtSZXN1bHQgUHJvZ3Jh
bVZrOjpsb2FkKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0
cmVhbSkKK3ZvaWQgUHJvZ3JhbVZrOjpkZXN0cm95KGNvbnN0IENvbnRleHRJbXBsICpjb250ZXh0
SW1wbCkKK3sKKyAgICBWa0RldmljZSBkZXZpY2UgPSBHZXRBczxDb250ZXh0Vms+KGNvbnRleHRJ
bXBsKS0+Z2V0RGV2aWNlKCk7CisKKyAgICBtTGlua2VkRnJhZ21lbnRNb2R1bGUuZGVzdHJveShk
ZXZpY2UpOworICAgIG1MaW5rZWRWZXJ0ZXhNb2R1bGUuZGVzdHJveShkZXZpY2UpOworICAgIG1Q
aXBlbGluZUxheW91dC5kZXN0cm95KGRldmljZSk7Cit9CisKK0xpbmtSZXN1bHQgUHJvZ3JhbVZr
Ojpsb2FkKGNvbnN0IENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsOjpJbmZvTG9nICZpbmZvTG9nLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0pCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgp
OwotICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNlLCBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKKyAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0K
IAogZ2w6OkVycm9yIFByb2dyYW1Wazo6c2F2ZShnbDo6QmluYXJ5T3V0cHV0U3RyZWFtICpzdHJl
YW0pCkBAIC0zOSwxMCArNTMsNjUgQEAgdm9pZCBQcm9ncmFtVms6OnNldEJpbmFyeVJldHJpZXZh
YmxlSGludChib29sIHJldHJpZXZhYmxlKQogICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAotTGlu
a1Jlc3VsdCBQcm9ncmFtVms6OmxpbmsoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgZ2w6
OkluZm9Mb2cgJmluZm9Mb2cpCit2b2lkIFByb2dyYW1Wazo6c2V0U2VwYXJhYmxlKGJvb2wgc2Vw
YXJhYmxlKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gTGlua1Jlc3VsdChm
YWxzZSwgZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Cit9CisKK0xpbmtSZXN1bHQg
UHJvZ3JhbVZrOjpsaW5rKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpWYXJ5aW5nUGFja2luZyAmcGFja2luZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdsOjpJbmZvTG9nICZpbmZvTG9nKQoreworICAgIENvbnRleHRW
ayAqY29udGV4dCAgICAgICAgICAgICA9IEdldEFzPENvbnRleHRWaz4oY29udGV4dEltcGwpOwor
ICAgIFJlbmRlcmVyVmsgKnJlbmRlcmVyICAgICAgICAgICA9IGNvbnRleHQtPmdldFJlbmRlcmVy
KCk7CisgICAgR2xzbGFuZ1dyYXBwZXIgKmdsc2xhbmdXcmFwcGVyID0gcmVuZGVyZXItPmdldEds
c2xhbmdXcmFwcGVyKCk7CisKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U291cmNlICAg
PSBtU3RhdGUuZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKS0+Z2V0VHJhbnNsYXRlZFNvdXJjZSgp
OworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNvdXJjZSA9IG1TdGF0ZS5nZXRBdHRh
Y2hlZEZyYWdtZW50U2hhZGVyKCktPmdldFRyYW5zbGF0ZWRTb3VyY2UoKTsKKworICAgIHN0ZDo6
dmVjdG9yPHVpbnQzMl90PiB2ZXJ0ZXhDb2RlOworICAgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBm
cmFnbWVudENvZGU7CisgICAgYm9vbCBsaW5rU3VjY2VzcyA9IGZhbHNlOworICAgIEFOR0xFX1RS
WV9SRVNVTFQoCisgICAgICAgIGdsc2xhbmdXcmFwcGVyLT5saW5rUHJvZ3JhbSh2ZXJ0ZXhTb3Vy
Y2UsIGZyYWdtZW50U291cmNlLCAmdmVydGV4Q29kZSwgJmZyYWdtZW50Q29kZSksCisgICAgICAg
IGxpbmtTdWNjZXNzKTsKKyAgICBpZiAoIWxpbmtTdWNjZXNzKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHZrOjpTaGFkZXJNb2R1bGUgdmVydGV4TW9kdWxlOwor
ICAgIHZrOjpTaGFkZXJNb2R1bGUgZnJhZ21lbnRNb2R1bGU7CisgICAgVmtEZXZpY2UgZGV2aWNl
ID0gcmVuZGVyZXItPmdldERldmljZSgpOworCisgICAgeworICAgICAgICBWa1NoYWRlck1vZHVs
ZUNyZWF0ZUluZm8gdmVydGV4U2hhZGVySW5mbzsKKyAgICAgICAgdmVydGV4U2hhZGVySW5mby5z
VHlwZSAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX1NIQURFUl9NT0RVTEVfQ1JFQVRFX0lORk87Cisg
ICAgICAgIHZlcnRleFNoYWRlckluZm8ucE5leHQgICAgPSBudWxscHRyOworICAgICAgICB2ZXJ0
ZXhTaGFkZXJJbmZvLmZsYWdzICAgID0gMDsKKyAgICAgICAgdmVydGV4U2hhZGVySW5mby5jb2Rl
U2l6ZSA9IHZlcnRleENvZGUuc2l6ZSgpICogc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgdmVy
dGV4U2hhZGVySW5mby5wQ29kZSAgICA9IHZlcnRleENvZGUuZGF0YSgpOworICAgICAgICBBTkdM
RV9UUlkodmVydGV4TW9kdWxlLmluaXQoZGV2aWNlLCB2ZXJ0ZXhTaGFkZXJJbmZvKSk7CisgICAg
fQorCisgICAgeworICAgICAgICBWa1NoYWRlck1vZHVsZUNyZWF0ZUluZm8gZnJhZ21lbnRTaGFk
ZXJJbmZvOworICAgICAgICBmcmFnbWVudFNoYWRlckluZm8uc1R5cGUgICAgPSBWS19TVFJVQ1RV
UkVfVFlQRV9TSEFERVJfTU9EVUxFX0NSRUFURV9JTkZPOworICAgICAgICBmcmFnbWVudFNoYWRl
ckluZm8ucE5leHQgICAgPSBudWxscHRyOworICAgICAgICBmcmFnbWVudFNoYWRlckluZm8uZmxh
Z3MgICAgPSAwOworICAgICAgICBmcmFnbWVudFNoYWRlckluZm8uY29kZVNpemUgPSBmcmFnbWVu
dENvZGUuc2l6ZSgpICogc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgZnJhZ21lbnRTaGFkZXJJ
bmZvLnBDb2RlICAgID0gZnJhZ21lbnRDb2RlLmRhdGEoKTsKKworICAgICAgICBBTkdMRV9UUlko
ZnJhZ21lbnRNb2R1bGUuaW5pdChkZXZpY2UsIGZyYWdtZW50U2hhZGVySW5mbykpOworICAgIH0K
KworICAgIG1MaW5rZWRWZXJ0ZXhNb2R1bGUucmV0YWluKGRldmljZSwgc3RkOjptb3ZlKHZlcnRl
eE1vZHVsZSkpOworICAgIG1MaW5rZWRGcmFnbWVudE1vZHVsZS5yZXRhaW4oZGV2aWNlLCBzdGQ6
Om1vdmUoZnJhZ21lbnRNb2R1bGUpKTsKKworICAgIC8vIFRPRE8oam1hZGlsbCk6IFVzZSBwaXBl
bGluZSBjYWNoZS4KKyAgICBjb250ZXh0LT5pbnZhbGlkYXRlQ3VycmVudFBpcGVsaW5lKCk7CisK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogR0xib29sZWFuIFByb2dyYW1Wazo6dmFsaWRhdGUoY29u
c3QgZ2w6OkNhcHMgJmNhcHMsIGdsOjpJbmZvTG9nICppbmZvTG9nKQpAQCAtMjA5LDQgKzI3OCwz
NiBAQCB2b2lkIFByb2dyYW1Wazo6c2V0UGF0aEZyYWdtZW50SW5wdXRHZW4oY29uc3Qgc3RkOjpz
dHJpbmcgJmlucHV0TmFtZSwKICAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKK2NvbnN0IHZrOjpT
aGFkZXJNb2R1bGUgJlByb2dyYW1Wazo6Z2V0TGlua2VkVmVydGV4TW9kdWxlKCkgY29uc3QKK3sK
KyAgICBBU1NFUlQobUxpbmtlZFZlcnRleE1vZHVsZS5nZXRIYW5kbGUoKSAhPSBWS19OVUxMX0hB
TkRMRSk7CisgICAgcmV0dXJuIG1MaW5rZWRWZXJ0ZXhNb2R1bGU7Cit9CisKK2NvbnN0IHZrOjpT
aGFkZXJNb2R1bGUgJlByb2dyYW1Wazo6Z2V0TGlua2VkRnJhZ21lbnRNb2R1bGUoKSBjb25zdAor
eworICAgIEFTU0VSVChtTGlua2VkRnJhZ21lbnRNb2R1bGUuZ2V0SGFuZGxlKCkgIT0gVktfTlVM
TF9IQU5ETEUpOworICAgIHJldHVybiBtTGlua2VkRnJhZ21lbnRNb2R1bGU7Cit9CisKK2dsOjpF
cnJvck9yUmVzdWx0PHZrOjpQaXBlbGluZUxheW91dCAqPiBQcm9ncmFtVms6OmdldFBpcGVsaW5l
TGF5b3V0KFZrRGV2aWNlIGRldmljZSkKK3sKKyAgICB2azo6UGlwZWxpbmVMYXlvdXQgbmV3TGF5
b3V0OworCisgICAgLy8gVE9ETyhqbWFkaWxsKTogRGVzY3JpcHRvciBzZXRzLgorICAgIFZrUGlw
ZWxpbmVMYXlvdXRDcmVhdGVJbmZvIGNyZWF0ZUluZm87CisgICAgY3JlYXRlSW5mby5zVHlwZSAg
ICAgICAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfUElQRUxJTkVfTEFZT1VUX0NSRUFU
RV9JTkZPOworICAgIGNyZWF0ZUluZm8ucE5leHQgICAgICAgICAgICAgICAgICA9IG51bGxwdHI7
CisgICAgY3JlYXRlSW5mby5mbGFncyAgICAgICAgICAgICAgICAgID0gMDsKKyAgICBjcmVhdGVJ
bmZvLnNldExheW91dENvdW50ICAgICAgICAgPSAwOworICAgIGNyZWF0ZUluZm8ucFNldExheW91
dHMgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgY3JlYXRlSW5mby5wdXNoQ29uc3RhbnRSYW5n
ZUNvdW50ID0gMDsKKyAgICBjcmVhdGVJbmZvLnBQdXNoQ29uc3RhbnRSYW5nZXMgICAgPSBudWxs
cHRyOworCisgICAgQU5HTEVfVFJZKG5ld0xheW91dC5pbml0KGRldmljZSwgY3JlYXRlSW5mbykp
OworICAgIG1QaXBlbGluZUxheW91dC5yZXRhaW4oZGV2aWNlLCBzdGQ6Om1vdmUobmV3TGF5b3V0
KSk7CisKKyAgICByZXR1cm4gJm1QaXBlbGluZUxheW91dDsKK30KKwogfSAgLy8gbmFtZXNwYWNl
IHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL1Byb2dyYW1Way5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtVmsuaAppbmRleCA4ZDhhMWY3Y2E0ZTQwOTUw
NDhhMjYwZjlhMWQxYTUyOTMxNWE0NTMwLi5mZjhlZmM1ZDJkMDVkN2IyZDZiMGMwMzY1MGJlNGQ0
YTM1NzMxMmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL1Byb2dyYW1Way5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbVZrLmgKQEAgLTExLDYgKzEx
LDcgQEAKICNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1BST0dSQU1WS19IXwogCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUltcGwuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vcmVuZGVyZXJ2a191dGlscy5oIgogCiBuYW1lc3BhY2UgcngK
IHsKQEAgLTIwLDEyICsyMSwxOCBAQCBjbGFzcyBQcm9ncmFtVmsgOiBwdWJsaWMgUHJvZ3JhbUlt
cGwKICAgcHVibGljOgogICAgIFByb2dyYW1Wayhjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZzdGF0
ZSk7CiAgICAgflByb2dyYW1WaygpIG92ZXJyaWRlOworICAgIHZvaWQgZGVzdHJveShjb25zdCBD
b250ZXh0SW1wbCAqY29udGV4dEltcGwpIG92ZXJyaWRlOwogCi0gICAgTGlua1Jlc3VsdCBsb2Fk
KGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkgb3Zl
cnJpZGU7CisgICAgTGlua1Jlc3VsdCBsb2FkKGNvbnN0IENvbnRleHRJbXBsICpjb250ZXh0SW1w
bCwKKyAgICAgICAgICAgICAgICAgICAgZ2w6OkluZm9Mb2cgJmluZm9Mb2csCisgICAgICAgICAg
ICAgICAgICAgIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtKSBvdmVycmlkZTsKICAgICBn
bDo6RXJyb3Igc2F2ZShnbDo6QmluYXJ5T3V0cHV0U3RyZWFtICpzdHJlYW0pIG92ZXJyaWRlOwog
ICAgIHZvaWQgc2V0QmluYXJ5UmV0cmlldmFibGVIaW50KGJvb2wgcmV0cmlldmFibGUpIG92ZXJy
aWRlOworICAgIHZvaWQgc2V0U2VwYXJhYmxlKGJvb2wgc2VwYXJhYmxlKSBvdmVycmlkZTsKIAot
ICAgIExpbmtSZXN1bHQgbGluayhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBnbDo6SW5m
b0xvZyAmaW5mb0xvZykgb3ZlcnJpZGU7CisgICAgTGlua1Jlc3VsdCBsaW5rKENvbnRleHRJbXBs
ICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZhcnlpbmdQYWNr
aW5nICZwYWNraW5nLAorICAgICAgICAgICAgICAgICAgICBnbDo6SW5mb0xvZyAmaW5mb0xvZykg
b3ZlcnJpZGU7CiAgICAgR0xib29sZWFuIHZhbGlkYXRlKGNvbnN0IGdsOjpDYXBzICZjYXBzLCBn
bDo6SW5mb0xvZyAqaW5mb0xvZykgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHNldFVuaWZvcm0xZnYo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpIG92ZXJyaWRl
OwpAQCAtOTMsNiArMTAwLDE1IEBAIGNsYXNzIFByb2dyYW1WayA6IHB1YmxpYyBQcm9ncmFtSW1w
bAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdlbk1vZGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb21wb25lbnRzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqY29lZmZzKSBvdmVycmlkZTsK
KworICAgIGNvbnN0IHZrOjpTaGFkZXJNb2R1bGUgJmdldExpbmtlZFZlcnRleE1vZHVsZSgpIGNv
bnN0OworICAgIGNvbnN0IHZrOjpTaGFkZXJNb2R1bGUgJmdldExpbmtlZEZyYWdtZW50TW9kdWxl
KCkgY29uc3Q7CisgICAgZ2w6OkVycm9yT3JSZXN1bHQ8dms6OlBpcGVsaW5lTGF5b3V0ICo+IGdl
dFBpcGVsaW5lTGF5b3V0KFZrRGV2aWNlIGRldmljZSk7CisKKyAgcHJpdmF0ZToKKyAgICB2azo6
U2hhZGVyTW9kdWxlIG1MaW5rZWRWZXJ0ZXhNb2R1bGU7CisgICAgdms6OlNoYWRlck1vZHVsZSBt
TGlua2VkRnJhZ21lbnRNb2R1bGU7CisgICAgdms6OlBpcGVsaW5lTGF5b3V0IG1QaXBlbGluZUxh
eW91dDsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJUYXJnZXRWay5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L1JlbmRlclRhcmdldFZrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTU5MzIwYWI3MWRkYjQ4MzViYjVhOGJj
ODkwMGYwMGQyMzEyYmUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJUYXJnZXRWay5jcHAKQEAgLTAs
MCArMSwyNSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFJlbmRlclRhcmdldFZrOgorLy8gICBXcmFwcGVyIGFy
b3VuZCBhIFZ1bGthbiByZW5kZXJhYmxlIHJlc291cmNlLCB1c2luZyBhbiBJbWFnZVZpZXcuCisv
LworCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlclRhcmdldFZrLmgi
CisKK25hbWVzcGFjZSByeAoreworCitSZW5kZXJUYXJnZXRWazo6UmVuZGVyVGFyZ2V0VmsoKQor
ICAgIDogZm9ybWF0KG51bGxwdHIpLAorICAgICAgaW1hZ2UobnVsbHB0ciksCisgICAgICBpbWFn
ZVZpZXcobnVsbHB0ciksCisgICAgICBleHRlbnRzKCksCisgICAgICBzYW1wbGVzKFZLX1NBTVBM
RV9DT1VOVF8xX0JJVCksCisgICAgICByZXNvdXJjZShudWxscHRyKQoreworfQorCit9ICAvLyBu
YW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyVGFyZ2V0VmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyVGFyZ2V0VmsuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZGU5ZTA3YmFkN2I5YTBmODc2NWE4ZDRhNDJiOWRkY2M0Zjk1NTUxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9SZW5kZXJUYXJnZXRWay5oCkBAIC0wLDAgKzEsNDYgQEAKKy8vCisvLyBDb3B5cmln
aHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBS
ZW5kZXJUYXJnZXRWazoKKy8vICAgV3JhcHBlciBhcm91bmQgYSBWdWxrYW4gcmVuZGVyYWJsZSBy
ZXNvdXJjZSwgdXNpbmcgYW4gSW1hZ2VWaWV3LgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5E
RVJFUl9WVUxLQU5fUkVOREVSVEFSR0VUVktfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJf
VlVMS0FOX1JFTkRFUlRBUkdFVFZLX0hfCisKKyNpbmNsdWRlIDx2dWxrYW4vdnVsa2FuLmg+CisK
KyNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKKworbmFtZXNwYWNl
IHJ4Cit7CitjbGFzcyBSZXNvdXJjZVZrOworCituYW1lc3BhY2UgdmsKK3sKK3N0cnVjdCBGb3Jt
YXQ7CitjbGFzcyBJbWFnZTsKK2NsYXNzIEltYWdlVmlldzsKK30KKworLy8gVGhpcyBpcyBhIHZl
cnkgbGlnaHQtd2VpZ2h0IGNsYXNzIHRoYXQgZG9lcyBub3Qgb3duIHRvIHRoZSByZXNvdXJjZXMg
aXQgcG9pbnRzIHRvLgorLy8gSXQncyBtZWFudCBvbmx5IHRvIGNvcHkgYWNyb3NzIHNvbWUgaW5m
b3JtYXRpb24gZnJvbSBhIEZyYW1lYnVmZmVyQXR0YWNobWVudCB0byB0aGUKKy8vIGJ1c2luZXNz
IHJlbmRlcmluZyBsb2dpYy4KK2NsYXNzIFJlbmRlclRhcmdldFZrIGZpbmFsIDogcHVibGljIEZy
YW1lYnVmZmVyQXR0YWNobWVudFJlbmRlclRhcmdldAoreworICBwdWJsaWM6CisgICAgUmVuZGVy
VGFyZ2V0VmsoKTsKKworICAgIGNvbnN0IHZrOjpGb3JtYXQgKmZvcm1hdDsKKyAgICB2azo6SW1h
Z2UgKmltYWdlOworICAgIHZrOjpJbWFnZVZpZXcgKmltYWdlVmlldzsKKyAgICBnbDo6RXh0ZW50
cyBleHRlbnRzOworICAgIFZrU2FtcGxlQ291bnRGbGFnQml0cyBzYW1wbGVzOworICAgIFJlc291
cmNlVmsgKnJlc291cmNlOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8g
TElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1JFTkRFUlRBUkdFVFZLX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRl
cmVyVmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9SZW5kZXJlclZrLmNwcAppbmRleCBhOWRjMWY2NzlhZmU1NmMzYjc2MTdkZTJiMjM3
YmRhNGIzOTcwMGY0Li4xY2E2MjQ5MjJhMzFjZmIwYzI0ZDc3MGI5ZGQzMDUxZTNhNjkwZjIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL1JlbmRlcmVyVmsuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5jcHAKQEAgLTksMTcgKzksNTE3IEBA
CiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5oIgogCisv
LyBQbGFjaW5nIHRoaXMgZmlyc3Qgc2VlbXMgdG8gc29sdmUgYW4gaW50ZWxsaXNlbnNlIGJ1Zy4K
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vcmVuZGVyZXJ2a191dGlscy5oIgor
CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisj
aW5jbHVkZSAiY29tbW9uL3N5c3RlbV91dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2RyaXZlcl91dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9D
b21waWxlclZrLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZyYW1lYnVm
ZmVyVmsuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vR2xzbGFuZ1dyYXBw
ZXIuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmgiCisj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1ZlcnRleEFycmF5VmsuaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vZm9ybWF0dXRpbHN2ay5oIgorI2luY2x1ZGUg
InBsYXRmb3JtL1BsYXRmb3JtLmgiCiAKIG5hbWVzcGFjZSByeAogewogCi1SZW5kZXJlclZrOjpS
ZW5kZXJlclZrKCkgOiBtQ2Fwc0luaXRpYWxpemVkKGZhbHNlKQorbmFtZXNwYWNlCit7CisKK1Zr
UmVzdWx0IFZlcmlmeUV4dGVuc2lvbnNQcmVzZW50KGNvbnN0IHN0ZDo6dmVjdG9yPFZrRXh0ZW5z
aW9uUHJvcGVydGllcz4gJmV4dGVuc2lvblByb3BzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3QgY2hhciAqPiAmZW5hYmxlZEV4dGVuc2lv
bk5hbWVzKQogeworICAgIC8vIENvbXBpbGUgdGhlIGV4dGVuc2lvbnMgbmFtZXMgaW50byBhIHNl
dC4KKyAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gZXh0ZW5zaW9uTmFtZXM7CisgICAgZm9yIChj
b25zdCBhdXRvICZleHRlbnNpb25Qcm9wIDogZXh0ZW5zaW9uUHJvcHMpCisgICAgeworICAgICAg
ICBleHRlbnNpb25OYW1lcy5pbnNlcnQoZXh0ZW5zaW9uUHJvcC5leHRlbnNpb25OYW1lKTsKKyAg
ICB9CisKKyAgICBmb3IgKGNvbnN0IGF1dG8gJmV4dGVuc2lvbk5hbWUgOiBlbmFibGVkRXh0ZW5z
aW9uTmFtZXMpCisgICAgeworICAgICAgICBpZiAoZXh0ZW5zaW9uTmFtZXMuY291bnQoZXh0ZW5z
aW9uTmFtZSkgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIFZLX0VSUk9SX0VY
VEVOU0lPTl9OT1RfUFJFU0VOVDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBWS19T
VUNDRVNTOworfQorCitWa0Jvb2wzMiBWS0FQSV9DQUxMIERlYnVnUmVwb3J0Q2FsbGJhY2soVmtE
ZWJ1Z1JlcG9ydEZsYWdzRVhUIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZrRGVidWdSZXBvcnRPYmplY3RUeXBlRVhUIG9iamVjdFR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3Qgb2JqZWN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsb2NhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IG1lc3NhZ2VDb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmxheWVy
UHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9p
ZCAqdXNlckRhdGEpCit7CisgICAgaWYgKChmbGFncyAmIFZLX0RFQlVHX1JFUE9SVF9FUlJPUl9C
SVRfRVhUKSAhPSAwKQorICAgIHsKKyAgICAgICAgRVJSKCkgPDwgbWVzc2FnZTsKKyNpZiAhZGVm
aW5lZChOREVCVUcpCisgICAgICAgIC8vIEFib3J0IHRoZSBjYWxsIGluIERlYnVnIGJ1aWxkcy4K
KyAgICAgICAgcmV0dXJuIFZLX1RSVUU7CisjZW5kaWYKKyAgICB9CisgICAgZWxzZSBpZiAoKGZs
YWdzICYgVktfREVCVUdfUkVQT1JUX1dBUk5JTkdfQklUX0VYVCkgIT0gMCkKKyAgICB7CisgICAg
ICAgIFdBUk4oKSA8PCBtZXNzYWdlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAv
LyBVbmNvbW1lbnQgdGhpcyBpZiB5b3Ugd2FudCBWdWxrYW4gc3BhbS4KKyAgICAgICAgLy8gV0FS
TigpIDw8IG1lc3NhZ2U7CisgICAgfQorCisgICAgcmV0dXJuIFZLX0ZBTFNFOworfQorCit9ICAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK1JlbmRlcmVyVms6OlJlbmRlcmVyVmsoKQorICAgIDog
bUNhcHNJbml0aWFsaXplZChmYWxzZSksCisgICAgICBtSW5zdGFuY2UoVktfTlVMTF9IQU5ETEUp
LAorICAgICAgbUVuYWJsZVZhbGlkYXRpb25MYXllcnMoZmFsc2UpLAorICAgICAgbURlYnVnUmVw
b3J0Q2FsbGJhY2soVktfTlVMTF9IQU5ETEUpLAorICAgICAgbVBoeXNpY2FsRGV2aWNlKFZLX05V
TExfSEFORExFKSwKKyAgICAgIG1RdWV1ZShWS19OVUxMX0hBTkRMRSksCisgICAgICBtQ3VycmVu
dFF1ZXVlRmFtaWx5SW5kZXgoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKSwK
KyAgICAgIG1EZXZpY2UoVktfTlVMTF9IQU5ETEUpLAorICAgICAgbUhvc3RWaXNpYmxlTWVtb3J5
SW5kZXgoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKSwKKyAgICAgIG1HbHNs
YW5nV3JhcHBlcihudWxscHRyKSwKKyAgICAgIG1DdXJyZW50UXVldWVTZXJpYWwoKSwKKyAgICAg
IG1MYXN0Q29tcGxldGVkUXVldWVTZXJpYWwoKSwKKyAgICAgIG1JbkZsaWdodENvbW1hbmRzKCkK
K3sKKyAgICArK21DdXJyZW50UXVldWVTZXJpYWw7CiB9CiAKIFJlbmRlcmVyVms6On5SZW5kZXJl
clZrKCkKIHsKKyAgICBpZiAoIW1JbkZsaWdodENvbW1hbmRzLmVtcHR5KCkpCisgICAgeworICAg
ICAgICB2azo6RXJyb3IgZXJyb3IgPSBmaW5pc2goKTsKKyAgICAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCkgPDwgIkVycm9yIGR1cmluZyBWSyBz
aHV0ZG93bjogIiA8PCBlcnJvcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtR2xzbGFu
Z1dyYXBwZXIpCisgICAgeworICAgICAgICBHbHNsYW5nV3JhcHBlcjo6UmVsZWFzZVJlZmVyZW5j
ZSgpOworICAgICAgICBtR2xzbGFuZ1dyYXBwZXIgPSBudWxscHRyOworICAgIH0KKworICAgIGlm
IChtQ29tbWFuZEJ1ZmZlci52YWxpZCgpKQorICAgIHsKKyAgICAgICAgbUNvbW1hbmRCdWZmZXIu
ZGVzdHJveShtRGV2aWNlKTsKKyAgICB9CisKKyAgICBpZiAobUNvbW1hbmRQb29sLnZhbGlkKCkp
CisgICAgeworICAgICAgICBtQ29tbWFuZFBvb2wuZGVzdHJveShtRGV2aWNlKTsKKyAgICB9CisK
KyAgICBpZiAobURldmljZSkKKyAgICB7CisgICAgICAgIHZrRGVzdHJveURldmljZShtRGV2aWNl
LCBudWxscHRyKTsKKyAgICAgICAgbURldmljZSA9IFZLX05VTExfSEFORExFOworICAgIH0KKwor
ICAgIGlmIChtRGVidWdSZXBvcnRDYWxsYmFjaykKKyAgICB7CisgICAgICAgIEFTU0VSVChtSW5z
dGFuY2UpOworICAgICAgICBhdXRvIGRlc3Ryb3lEZWJ1Z1JlcG9ydENhbGxiYWNrID0gcmVpbnRl
cnByZXRfY2FzdDxQRk5fdmtEZXN0cm95RGVidWdSZXBvcnRDYWxsYmFja0VYVD4oCisgICAgICAg
ICAgICB2a0dldEluc3RhbmNlUHJvY0FkZHIobUluc3RhbmNlLCAidmtEZXN0cm95RGVidWdSZXBv
cnRDYWxsYmFja0VYVCIpKTsKKyAgICAgICAgQVNTRVJUKGRlc3Ryb3lEZWJ1Z1JlcG9ydENhbGxi
YWNrKTsKKyAgICAgICAgZGVzdHJveURlYnVnUmVwb3J0Q2FsbGJhY2sobUluc3RhbmNlLCBtRGVi
dWdSZXBvcnRDYWxsYmFjaywgbnVsbHB0cik7CisgICAgfQorCisgICAgaWYgKG1JbnN0YW5jZSkK
KyAgICB7CisgICAgICAgIHZrRGVzdHJveUluc3RhbmNlKG1JbnN0YW5jZSwgbnVsbHB0cik7Cisg
ICAgICAgIG1JbnN0YW5jZSA9IFZLX05VTExfSEFORExFOworICAgIH0KKworICAgIG1QaHlzaWNh
bERldmljZSA9IFZLX05VTExfSEFORExFOworfQorCit2azo6RXJyb3IgUmVuZGVyZXJWazo6aW5p
dGlhbGl6ZShjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyNpZiAhZGVmaW5l
ZChOREVCVUcpCisgICAgLy8gVmFsaWRhdGlvbiBsYXllcnMgZW5hYmxlZCBieSBkZWZhdWx0IGlu
IERlYnVnLgorICAgIG1FbmFibGVWYWxpZGF0aW9uTGF5ZXJzID0gdHJ1ZTsKKyNlbmRpZgorCisg
ICAgLy8gSWYgc3BlY2lmaWVkIGluIHRoZSBhdHRyaWJ1dGVzLCBvdmVycmlkZSB0aGUgZGVmYXVs
dC4KKyAgICBpZiAoYXR0cmlicy5jb250YWlucyhFR0xfUExBVEZPUk1fQU5HTEVfRU5BQkxFX1ZB
TElEQVRJT05fTEFZRVJfQU5HTEUpKQorICAgIHsKKyAgICAgICAgbUVuYWJsZVZhbGlkYXRpb25M
YXllcnMgPQorICAgICAgICAgICAgKGF0dHJpYnMuZ2V0KEVHTF9QTEFURk9STV9BTkdMRV9FTkFC
TEVfVkFMSURBVElPTl9MQVlFUl9BTkdMRSwgRUdMX0ZBTFNFKSA9PSBFR0xfVFJVRSk7CisgICAg
fQorCisgICAgLy8gSWYgd2UncmUgbG9hZGluZyB0aGUgdmFsaWRhdGlvbiBsYXllcnMsIHdlIGNv
dWxkIGJlIHJ1bm5pbmcgZnJvbSBhbnkgcmFuZG9tIGRpcmVjdG9yeS4KKyAgICAvLyBDaGFuZ2Ug
dG8gdGhlIGV4ZWN1dGFibGUgZGlyZWN0b3J5IHNvIHdlIGNhbiBmaW5kIHRoZSBsYXllcnMsIHRo
ZW4gY2hhbmdlIGJhY2sgdG8gdGhlCisgICAgLy8gcHJldmlvdXMgZGlyZWN0b3J5IHRvIGJlIHNh
ZmUgd2UgZG9uJ3QgZGlzcnVwdCB0aGUgYXBwbGljYXRpb24uCisgICAgc3RkOjpzdHJpbmcgcHJl
dmlvdXNDV0Q7CisKKyAgICBpZiAobUVuYWJsZVZhbGlkYXRpb25MYXllcnMpCisgICAgeworICAg
ICAgICBjb25zdCBhdXRvICZjd2QgPSBhbmdsZTo6R2V0Q1dEKCk7CisgICAgICAgIGlmICghY3dk
LnZhbGlkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigpIDw8ICJFcnJvciBnZXR0aW5n
IENXRCBmb3IgVnVsa2FuIGxheWVycyBpbml0LiI7CisgICAgICAgICAgICBtRW5hYmxlVmFsaWRh
dGlvbkxheWVycyA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewor
ICAgICAgICAgICAgcHJldmlvdXNDV0QgPSBjd2QudmFsdWUoKTsKKyAgICAgICAgfQorICAgICAg
ICBjb25zdCBjaGFyICpleGVEaXIgPSBhbmdsZTo6R2V0RXhlY3V0YWJsZURpcmVjdG9yeSgpOwor
ICAgICAgICBhbmdsZTo6U2V0Q1dEKGV4ZURpcik7CisgICAgfQorCisgICAgLy8gR2F0aGVyIGds
b2JhbCBsYXllciBwcm9wZXJ0aWVzLgorICAgIHVpbnQzMl90IGluc3RhbmNlTGF5ZXJDb3VudCA9
IDA7CisgICAgQU5HTEVfVktfVFJZKHZrRW51bWVyYXRlSW5zdGFuY2VMYXllclByb3BlcnRpZXMo
Jmluc3RhbmNlTGF5ZXJDb3VudCwgbnVsbHB0cikpOworCisgICAgc3RkOjp2ZWN0b3I8VmtMYXll
clByb3BlcnRpZXM+IGluc3RhbmNlTGF5ZXJQcm9wcyhpbnN0YW5jZUxheWVyQ291bnQpOworICAg
IGlmIChpbnN0YW5jZUxheWVyQ291bnQgPiAwKQorICAgIHsKKyAgICAgICAgQU5HTEVfVktfVFJZ
KAorICAgICAgICAgICAgdmtFbnVtZXJhdGVJbnN0YW5jZUxheWVyUHJvcGVydGllcygmaW5zdGFu
Y2VMYXllckNvdW50LCBpbnN0YW5jZUxheWVyUHJvcHMuZGF0YSgpKSk7CisgICAgfQorCisgICAg
dWludDMyX3QgaW5zdGFuY2VFeHRlbnNpb25Db3VudCA9IDA7CisgICAgQU5HTEVfVktfVFJZKHZr
RW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzKG51bGxwdHIsICZpbnN0YW5jZUV4
dGVuc2lvbkNvdW50LCBudWxscHRyKSk7CisKKyAgICBzdGQ6OnZlY3RvcjxWa0V4dGVuc2lvblBy
b3BlcnRpZXM+IGluc3RhbmNlRXh0ZW5zaW9uUHJvcHMoaW5zdGFuY2VFeHRlbnNpb25Db3VudCk7
CisgICAgaWYgKGluc3RhbmNlRXh0ZW5zaW9uQ291bnQgPiAwKQorICAgIHsKKyAgICAgICAgQU5H
TEVfVktfVFJZKHZrRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzKG51bGxwdHIs
ICZpbnN0YW5jZUV4dGVuc2lvbkNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VFeHRlbnNpb25Qcm9wcy5kYXRh
KCkpKTsKKyAgICB9CisKKyAgICBpZiAobUVuYWJsZVZhbGlkYXRpb25MYXllcnMpCisgICAgewor
ICAgICAgICAvLyBWZXJpZnkgdGhlIHN0YW5kYXJkIHZhbGlkYXRpb24gbGF5ZXJzIGFyZSBhdmFp
bGFibGUuCisgICAgICAgIGlmICghSGFzU3RhbmRhcmRWYWxpZGF0aW9uTGF5ZXIoaW5zdGFuY2VM
YXllclByb3BzKSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gR2VuZXJhdGUgYW4gZXJyb3Ig
aWYgdGhlIGF0dHJpYnV0ZSB3YXMgcmVxdWVzdGVkLCB3YXJuaW5nIG90aGVyd2lzZS4KKyAgICAg
ICAgICAgIGlmIChhdHRyaWJzLmNvbnRhaW5zKEVHTF9QTEFURk9STV9BTkdMRV9FTkFCTEVfVkFM
SURBVElPTl9MQVlFUl9BTkdMRSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgRVJS
KCkgPDwgIlZ1bGthbiBzdGFuZGFyZCB2YWxpZGF0aW9uIGxheWVycyBhcmUgbWlzc2luZy4iOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIFdBUk4oKSA8PCAiVnVsa2FuIHN0YW5kYXJkIHZhbGlkYXRpb24gbGF5ZXJzIGFyZSBt
aXNzaW5nLiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtRW5hYmxlVmFsaWRhdGlvbkxh
eWVycyA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgc3RkOjp2ZWN0b3I8Y29uc3Qg
Y2hhciAqPiBlbmFibGVkSW5zdGFuY2VFeHRlbnNpb25zOworICAgIGVuYWJsZWRJbnN0YW5jZUV4
dGVuc2lvbnMucHVzaF9iYWNrKFZLX0tIUl9TVVJGQUNFX0VYVEVOU0lPTl9OQU1FKTsKKyNpZiBk
ZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1dJTkRPV1MpCisgICAgZW5hYmxlZEluc3RhbmNlRXh0ZW5z
aW9ucy5wdXNoX2JhY2soVktfS0hSX1dJTjMyX1NVUkZBQ0VfRVhURU5TSU9OX05BTUUpOworI2Vs
c2UKKyNlcnJvciBVbnN1cHBvcnRlZCBWdWxrYW4gcGxhdGZvcm0uCisjZW5kaWYgIC8vIGRlZmlu
ZWQoQU5HTEVfUExBVEZPUk1fV0lORE9XUykKKworICAgIC8vIFRPRE8oam1hZGlsbCk6IFNob3Vs
ZCBiZSBhYmxlIHRvIGNvbnRpbnVlIGluaXRpYWxpemF0aW9uIGlmIGRlYnVnIHJlcG9ydCBleHQg
bWlzc2luZy4KKyAgICBpZiAobUVuYWJsZVZhbGlkYXRpb25MYXllcnMpCisgICAgeworICAgICAg
ICBlbmFibGVkSW5zdGFuY2VFeHRlbnNpb25zLnB1c2hfYmFjayhWS19FWFRfREVCVUdfUkVQT1JU
X0VYVEVOU0lPTl9OQU1FKTsKKyAgICB9CisKKyAgICAvLyBWZXJpZnkgdGhlIHJlcXVpcmVkIGV4
dGVuc2lvbnMgYXJlIGluIHRoZSBleHRlbnNpb24gbmFtZXMgc2V0LiBGYWlsIGlmIG5vdC4KKyAg
ICBBTkdMRV9WS19UUlkoVmVyaWZ5RXh0ZW5zaW9uc1ByZXNlbnQoaW5zdGFuY2VFeHRlbnNpb25Q
cm9wcywgZW5hYmxlZEluc3RhbmNlRXh0ZW5zaW9ucykpOworCisgICAgVmtBcHBsaWNhdGlvbklu
Zm8gYXBwbGljYXRpb25JbmZvOworICAgIGFwcGxpY2F0aW9uSW5mby5zVHlwZSAgICAgICAgICAg
ICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9BUFBMSUNBVElPTl9JTkZPOworICAgIGFwcGxpY2F0aW9u
SW5mby5wTmV4dCAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIGFwcGxpY2F0aW9uSW5mby5w
QXBwbGljYXRpb25OYW1lICAgPSAiQU5HTEUiOworICAgIGFwcGxpY2F0aW9uSW5mby5hcHBsaWNh
dGlvblZlcnNpb24gPSAxOworICAgIGFwcGxpY2F0aW9uSW5mby5wRW5naW5lTmFtZSAgICAgICAg
PSAiQU5HTEUiOworICAgIGFwcGxpY2F0aW9uSW5mby5lbmdpbmVWZXJzaW9uICAgICAgPSAxOwor
ICAgIGFwcGxpY2F0aW9uSW5mby5hcGlWZXJzaW9uICAgICAgICAgPSBWS19BUElfVkVSU0lPTl8x
XzA7CisKKyAgICBWa0luc3RhbmNlQ3JlYXRlSW5mbyBpbnN0YW5jZUluZm87CisgICAgaW5zdGFu
Y2VJbmZvLnNUeXBlICAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9JTlNUQU5DRV9DUkVB
VEVfSU5GTzsKKyAgICBpbnN0YW5jZUluZm8ucE5leHQgICAgICAgICAgICA9IG51bGxwdHI7Cisg
ICAgaW5zdGFuY2VJbmZvLmZsYWdzICAgICAgICAgICAgPSAwOworICAgIGluc3RhbmNlSW5mby5w
QXBwbGljYXRpb25JbmZvID0gJmFwcGxpY2F0aW9uSW5mbzsKKworICAgIC8vIEVuYWJsZSByZXF1
ZXN0ZWQgbGF5ZXJzIGFuZCBleHRlbnNpb25zLgorICAgIGluc3RhbmNlSW5mby5lbmFibGVkRXh0
ZW5zaW9uQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZW5hYmxlZEluc3RhbmNlRXh0ZW5z
aW9ucy5zaXplKCkpOworICAgIGluc3RhbmNlSW5mby5wcEVuYWJsZWRFeHRlbnNpb25OYW1lcyA9
CisgICAgICAgIGVuYWJsZWRJbnN0YW5jZUV4dGVuc2lvbnMuZW1wdHkoKSA/IG51bGxwdHIgOiBl
bmFibGVkSW5zdGFuY2VFeHRlbnNpb25zLmRhdGEoKTsKKyAgICBpbnN0YW5jZUluZm8uZW5hYmxl
ZExheWVyQ291bnQgPSBtRW5hYmxlVmFsaWRhdGlvbkxheWVycyA/IDF1IDogMHU7CisgICAgaW5z
dGFuY2VJbmZvLnBwRW5hYmxlZExheWVyTmFtZXMgPQorICAgICAgICBtRW5hYmxlVmFsaWRhdGlv
bkxheWVycyA/ICZnX1ZrU3RkVmFsaWRhdGlvbkxheWVyTmFtZSA6IG51bGxwdHI7CisKKyAgICBB
TkdMRV9WS19UUlkodmtDcmVhdGVJbnN0YW5jZSgmaW5zdGFuY2VJbmZvLCBudWxscHRyLCAmbUlu
c3RhbmNlKSk7CisKKyAgICBpZiAobUVuYWJsZVZhbGlkYXRpb25MYXllcnMpCisgICAgeworICAg
ICAgICAvLyBDaGFuZ2UgYmFjayB0byB0aGUgcHJldmlvdXMgd29ya2luZyBkaXJlY3Rvcnkgbm93
IHRoYXQgd2UndmUgbG9hZGVkIHRoZSBpbnN0YW5jZSAtCisgICAgICAgIC8vIHRoZSB2YWxpZGF0
aW9uIGxheWVycyBzaG91bGQgYmUgbG9hZGVkIGF0IHRoaXMgcG9pbnQuCisgICAgICAgIGFuZ2xl
OjpTZXRDV0QocHJldmlvdXNDV0QuY19zdHIoKSk7CisKKyAgICAgICAgVmtEZWJ1Z1JlcG9ydENh
bGxiYWNrQ3JlYXRlSW5mb0VYVCBkZWJ1Z1JlcG9ydEluZm87CisKKyAgICAgICAgZGVidWdSZXBv
cnRJbmZvLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfREVCVUdfUkVQT1JUX0NSRUFURV9JTkZP
X0VYVDsKKyAgICAgICAgZGVidWdSZXBvcnRJbmZvLnBOZXh0ID0gbnVsbHB0cjsKKyAgICAgICAg
ZGVidWdSZXBvcnRJbmZvLmZsYWdzID0gVktfREVCVUdfUkVQT1JUX0VSUk9SX0JJVF9FWFQgfCBW
S19ERUJVR19SRVBPUlRfV0FSTklOR19CSVRfRVhUIHwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVktfREVCVUdfUkVQT1JUX1BFUkZPUk1BTkNFX1dBUk5JTkdfQklUX0VYVCB8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0RFQlVHX1JFUE9SVF9JTkZPUk1BVElP
Tl9CSVRfRVhUIHwgVktfREVCVUdfUkVQT1JUX0RFQlVHX0JJVF9FWFQ7CisgICAgICAgIGRlYnVn
UmVwb3J0SW5mby5wZm5DYWxsYmFjayA9ICZEZWJ1Z1JlcG9ydENhbGxiYWNrOworICAgICAgICBk
ZWJ1Z1JlcG9ydEluZm8ucFVzZXJEYXRhICAgPSB0aGlzOworCisgICAgICAgIGF1dG8gY3JlYXRl
RGVidWdSZXBvcnRDYWxsYmFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOX3ZrQ3JlYXRlRGVidWdS
ZXBvcnRDYWxsYmFja0VYVD4oCisgICAgICAgICAgICB2a0dldEluc3RhbmNlUHJvY0FkZHIobUlu
c3RhbmNlLCAidmtDcmVhdGVEZWJ1Z1JlcG9ydENhbGxiYWNrRVhUIikpOworICAgICAgICBBU1NF
UlQoY3JlYXRlRGVidWdSZXBvcnRDYWxsYmFjayk7CisgICAgICAgIEFOR0xFX1ZLX1RSWSgKKyAg
ICAgICAgICAgIGNyZWF0ZURlYnVnUmVwb3J0Q2FsbGJhY2sobUluc3RhbmNlLCAmZGVidWdSZXBv
cnRJbmZvLCBudWxscHRyLCAmbURlYnVnUmVwb3J0Q2FsbGJhY2spKTsKKyAgICB9CisKKyAgICB1
aW50MzJfdCBwaHlzaWNhbERldmljZUNvdW50ID0gMDsKKyAgICBBTkdMRV9WS19UUlkodmtFbnVt
ZXJhdGVQaHlzaWNhbERldmljZXMobUluc3RhbmNlLCAmcGh5c2ljYWxEZXZpY2VDb3VudCwgbnVs
bHB0cikpOworICAgIEFOR0xFX1ZLX0NIRUNLKHBoeXNpY2FsRGV2aWNlQ291bnQgPiAwLCBWS19F
UlJPUl9JTklUSUFMSVpBVElPTl9GQUlMRUQpOworCisgICAgLy8gVE9ETyhqbWFkaWxsKTogSGFu
ZGxlIG11bHRpcGxlIHBoeXNpY2FsIGRldmljZXMuIEZvciBub3csIHVzZSB0aGUgZmlyc3QgZGV2
aWNlLgorICAgIHBoeXNpY2FsRGV2aWNlQ291bnQgPSAxOworICAgIEFOR0xFX1ZLX1RSWSh2a0Vu
dW1lcmF0ZVBoeXNpY2FsRGV2aWNlcyhtSW5zdGFuY2UsICZwaHlzaWNhbERldmljZUNvdW50LCAm
bVBoeXNpY2FsRGV2aWNlKSk7CisKKyAgICB2a0dldFBoeXNpY2FsRGV2aWNlUHJvcGVydGllcyht
UGh5c2ljYWxEZXZpY2UsICZtUGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzKTsKKworICAgIC8vIEVu
c3VyZSB3ZSBjYW4gZmluZCBhIGdyYXBoaWNzIHF1ZXVlIGZhbWlseS4KKyAgICB1aW50MzJfdCBx
dWV1ZUNvdW50ID0gMDsKKyAgICB2a0dldFBoeXNpY2FsRGV2aWNlUXVldWVGYW1pbHlQcm9wZXJ0
aWVzKG1QaHlzaWNhbERldmljZSwgJnF1ZXVlQ291bnQsIG51bGxwdHIpOworCisgICAgQU5HTEVf
VktfQ0hFQ0socXVldWVDb3VudCA+IDAsIFZLX0VSUk9SX0lOSVRJQUxJWkFUSU9OX0ZBSUxFRCk7
CisKKyAgICBtUXVldWVGYW1pbHlQcm9wZXJ0aWVzLnJlc2l6ZShxdWV1ZUNvdW50KTsKKyAgICB2
a0dldFBoeXNpY2FsRGV2aWNlUXVldWVGYW1pbHlQcm9wZXJ0aWVzKG1QaHlzaWNhbERldmljZSwg
JnF1ZXVlQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtUXVldWVGYW1pbHlQcm9wZXJ0aWVzLmRhdGEoKSk7CisKKyAgICBzaXplX3QgZ3JhcGhpY3NR
dWV1ZUZhbWlseUNvdW50ICAgPSBmYWxzZTsKKyAgICB1aW50MzJfdCBmaXJzdEdyYXBoaWNzUXVl
dWVGYW1pbHkgPSAwOworICAgIGZvciAodWludDMyX3QgZmFtaWx5SW5kZXggPSAwOyBmYW1pbHlJ
bmRleCA8IHF1ZXVlQ291bnQ7ICsrZmFtaWx5SW5kZXgpCisgICAgeworICAgICAgICBjb25zdCBh
dXRvICZxdWV1ZUluZm8gPSBtUXVldWVGYW1pbHlQcm9wZXJ0aWVzW2ZhbWlseUluZGV4XTsKKyAg
ICAgICAgaWYgKChxdWV1ZUluZm8ucXVldWVGbGFncyAmIFZLX1FVRVVFX0dSQVBISUNTX0JJVCkg
IT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHF1ZXVlSW5mby5xdWV1ZUNvdW50
ID4gMCk7CisgICAgICAgICAgICBncmFwaGljc1F1ZXVlRmFtaWx5Q291bnQrKzsKKyAgICAgICAg
ICAgIGlmIChmaXJzdEdyYXBoaWNzUXVldWVGYW1pbHkgPT0gMCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBmaXJzdEdyYXBoaWNzUXVldWVGYW1pbHkgPSBmYW1pbHlJbmRleDsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAg
QU5HTEVfVktfQ0hFQ0soZ3JhcGhpY3NRdWV1ZUZhbWlseUNvdW50ID4gMCwgVktfRVJST1JfSU5J
VElBTElaQVRJT05fRkFJTEVEKTsKKworICAgIC8vIElmIG9ubHkgb25lIHF1ZXVlIGZhbWlseSwg
Z28gYWhlYWQgYW5kIGluaXRpYWxpemUgdGhlIGRldmljZS4gSWYgdGhlcmUgaXMgbW9yZSB0aGFu
IG9uZQorICAgIC8vIHF1ZXVlLCB3ZSdsbCBoYXZlIHRvIHdhaXQgdW50aWwgd2Ugc2VlIGEgV2lu
ZG93U3VyZmFjZSB0byBrbm93IHdoaWNoIHN1cHBvcnRzIHByZXNlbnQuCisgICAgaWYgKGdyYXBo
aWNzUXVldWVGYW1pbHlDb3VudCA9PSAxKQorICAgIHsKKyAgICAgICAgQU5HTEVfVFJZKGluaXRp
YWxpemVEZXZpY2UoZmlyc3RHcmFwaGljc1F1ZXVlRmFtaWx5KSk7CisgICAgfQorCisgICAgVmtQ
aHlzaWNhbERldmljZU1lbW9yeVByb3BlcnRpZXMgbWVtb3J5UHJvcGVydGllczsKKyAgICB2a0dl
dFBoeXNpY2FsRGV2aWNlTWVtb3J5UHJvcGVydGllcyhtUGh5c2ljYWxEZXZpY2UsICZtZW1vcnlQ
cm9wZXJ0aWVzKTsKKworICAgIGZvciAodWludDMyX3QgbWVtb3J5SW5kZXggPSAwOyBtZW1vcnlJ
bmRleCA8IG1lbW9yeVByb3BlcnRpZXMubWVtb3J5VHlwZUNvdW50OyArK21lbW9yeUluZGV4KQor
ICAgIHsKKyAgICAgICAgaWYgKChtZW1vcnlQcm9wZXJ0aWVzLm1lbW9yeVR5cGVzW21lbW9yeUlu
ZGV4XS5wcm9wZXJ0eUZsYWdzICYKKyAgICAgICAgICAgICBWS19NRU1PUllfUFJPUEVSVFlfSE9T
VF9WSVNJQkxFX0JJVCkgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgbUhvc3RWaXNpYmxl
TWVtb3J5SW5kZXggPSBtZW1vcnlJbmRleDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgfQorCisgICAgQU5HTEVfVktfQ0hFQ0sobUhvc3RWaXNpYmxlTWVtb3J5SW5kZXggPCBz
dGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisgICAgICAgICAgICAgICAgICAg
VktfRVJST1JfSU5JVElBTElaQVRJT05fRkFJTEVEKTsKKworICAgIG1HbHNsYW5nV3JhcHBlciA9
IEdsc2xhbmdXcmFwcGVyOjpHZXRSZWZlcmVuY2UoKTsKKworICAgIHJldHVybiB2azo6Tm9FcnJv
cigpOworfQorCit2azo6RXJyb3IgUmVuZGVyZXJWazo6aW5pdGlhbGl6ZURldmljZSh1aW50MzJf
dCBxdWV1ZUZhbWlseUluZGV4KQoreworICAgIHVpbnQzMl90IGRldmljZUxheWVyQ291bnQgPSAw
OworICAgIEFOR0xFX1ZLX1RSWSh2a0VudW1lcmF0ZURldmljZUxheWVyUHJvcGVydGllcyhtUGh5
c2ljYWxEZXZpY2UsICZkZXZpY2VMYXllckNvdW50LCBudWxscHRyKSk7CisKKyAgICBzdGQ6OnZl
Y3RvcjxWa0xheWVyUHJvcGVydGllcz4gZGV2aWNlTGF5ZXJQcm9wcyhkZXZpY2VMYXllckNvdW50
KTsKKyAgICBpZiAoZGV2aWNlTGF5ZXJDb3VudCA+IDApCisgICAgeworICAgICAgICBBTkdMRV9W
S19UUlkodmtFbnVtZXJhdGVEZXZpY2VMYXllclByb3BlcnRpZXMobVBoeXNpY2FsRGV2aWNlLCAm
ZGV2aWNlTGF5ZXJDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRldmljZUxheWVyUHJvcHMuZGF0YSgpKSk7CisgICAgfQorCisgICAg
dWludDMyX3QgZGV2aWNlRXh0ZW5zaW9uQ291bnQgPSAwOworICAgIEFOR0xFX1ZLX1RSWSh2a0Vu
dW1lcmF0ZURldmljZUV4dGVuc2lvblByb3BlcnRpZXMobVBoeXNpY2FsRGV2aWNlLCBudWxscHRy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmRldmljZUV4dGVuc2lvbkNvdW50LCBudWxscHRyKSk7CisKKyAgICBzdGQ6OnZlY3RvcjxWa0V4
dGVuc2lvblByb3BlcnRpZXM+IGRldmljZUV4dGVuc2lvblByb3BzKGRldmljZUV4dGVuc2lvbkNv
dW50KTsKKyAgICBpZiAoZGV2aWNlRXh0ZW5zaW9uQ291bnQgPiAwKQorICAgIHsKKyAgICAgICAg
QU5HTEVfVktfVFJZKHZrRW51bWVyYXRlRGV2aWNlRXh0ZW5zaW9uUHJvcGVydGllcygKKyAgICAg
ICAgICAgIG1QaHlzaWNhbERldmljZSwgbnVsbHB0ciwgJmRldmljZUV4dGVuc2lvbkNvdW50LCBk
ZXZpY2VFeHRlbnNpb25Qcm9wcy5kYXRhKCkpKTsKKyAgICB9CisKKyAgICBpZiAobUVuYWJsZVZh
bGlkYXRpb25MYXllcnMpCisgICAgeworICAgICAgICBpZiAoIUhhc1N0YW5kYXJkVmFsaWRhdGlv
bkxheWVyKGRldmljZUxheWVyUHJvcHMpKQorICAgICAgICB7CisgICAgICAgICAgICBXQVJOKCkg
PDwgIlZ1bGthbiBzdGFuZGFyZCB2YWxpZGF0aW9uIGxheWVyIGlzIG1pc3NpbmcuIjsKKyAgICAg
ICAgICAgIG1FbmFibGVWYWxpZGF0aW9uTGF5ZXJzID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBjaGFyICo+IGVuYWJsZWREZXZpY2VFeHRlbnNpb25z
OworICAgIGVuYWJsZWREZXZpY2VFeHRlbnNpb25zLnB1c2hfYmFjayhWS19LSFJfU1dBUENIQUlO
X0VYVEVOU0lPTl9OQU1FKTsKKworICAgIEFOR0xFX1ZLX1RSWShWZXJpZnlFeHRlbnNpb25zUHJl
c2VudChkZXZpY2VFeHRlbnNpb25Qcm9wcywgZW5hYmxlZERldmljZUV4dGVuc2lvbnMpKTsKKwor
ICAgIFZrRGV2aWNlUXVldWVDcmVhdGVJbmZvIHF1ZXVlQ3JlYXRlSW5mbzsKKworICAgIGZsb2F0
IHplcm9Qcmlvcml0eSA9IDAuMGY7CisKKyAgICBxdWV1ZUNyZWF0ZUluZm8uc1R5cGUgICAgICAg
ICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX0RFVklDRV9RVUVVRV9DUkVBVEVfSU5GTzsKKyAgICBx
dWV1ZUNyZWF0ZUluZm8ucE5leHQgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgcXVldWVDcmVh
dGVJbmZvLmZsYWdzICAgICAgICAgICAgPSAwOworICAgIHF1ZXVlQ3JlYXRlSW5mby5xdWV1ZUZh
bWlseUluZGV4ID0gcXVldWVGYW1pbHlJbmRleDsKKyAgICBxdWV1ZUNyZWF0ZUluZm8ucXVldWVD
b3VudCAgICAgICA9IDE7CisgICAgcXVldWVDcmVhdGVJbmZvLnBRdWV1ZVByaW9yaXRpZXMgPSAm
emVyb1ByaW9yaXR5OworCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGV2aWNlCisgICAgVmtEZXZp
Y2VDcmVhdGVJbmZvIGNyZWF0ZUluZm87CisKKyAgICBjcmVhdGVJbmZvLnNUeXBlICAgICAgICAg
ICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfREVWSUNFX0NSRUFURV9JTkZPOworICAgIGNyZWF0
ZUluZm8ucE5leHQgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIGNyZWF0ZUluZm8uZmxh
Z3MgICAgICAgICAgICAgICAgPSAwOworICAgIGNyZWF0ZUluZm8ucXVldWVDcmVhdGVJbmZvQ291
bnQgPSAxOworICAgIGNyZWF0ZUluZm8ucFF1ZXVlQ3JlYXRlSW5mb3MgICAgPSAmcXVldWVDcmVh
dGVJbmZvOworICAgIGNyZWF0ZUluZm8uZW5hYmxlZExheWVyQ291bnQgICAgPSBtRW5hYmxlVmFs
aWRhdGlvbkxheWVycyA/IDF1IDogMHU7CisgICAgY3JlYXRlSW5mby5wcEVuYWJsZWRMYXllck5h
bWVzID0KKyAgICAgICAgbUVuYWJsZVZhbGlkYXRpb25MYXllcnMgPyAmZ19Wa1N0ZFZhbGlkYXRp
b25MYXllck5hbWUgOiBudWxscHRyOworICAgIGNyZWF0ZUluZm8uZW5hYmxlZEV4dGVuc2lvbkNv
dW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGVuYWJsZWREZXZpY2VFeHRlbnNpb25zLnNpemUo
KSk7CisgICAgY3JlYXRlSW5mby5wcEVuYWJsZWRFeHRlbnNpb25OYW1lcyA9CisgICAgICAgIGVu
YWJsZWREZXZpY2VFeHRlbnNpb25zLmVtcHR5KCkgPyBudWxscHRyIDogZW5hYmxlZERldmljZUV4
dGVuc2lvbnMuZGF0YSgpOworICAgIGNyZWF0ZUluZm8ucEVuYWJsZWRGZWF0dXJlcyA9IG51bGxw
dHI7ICAvLyBUT0RPKGptYWRpbGwpOiBmZWF0dXJlcworCisgICAgQU5HTEVfVktfVFJZKHZrQ3Jl
YXRlRGV2aWNlKG1QaHlzaWNhbERldmljZSwgJmNyZWF0ZUluZm8sIG51bGxwdHIsICZtRGV2aWNl
KSk7CisKKyAgICBtQ3VycmVudFF1ZXVlRmFtaWx5SW5kZXggPSBxdWV1ZUZhbWlseUluZGV4Owor
CisgICAgdmtHZXREZXZpY2VRdWV1ZShtRGV2aWNlLCBtQ3VycmVudFF1ZXVlRmFtaWx5SW5kZXgs
IDAsICZtUXVldWUpOworCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29tbWFuZCBwb29sIG5vdyB0
aGF0IHdlIGtub3cgdGhlIHF1ZXVlIGZhbWlseSBpbmRleC4KKyAgICBWa0NvbW1hbmRQb29sQ3Jl
YXRlSW5mbyBjb21tYW5kUG9vbEluZm87CisgICAgY29tbWFuZFBvb2xJbmZvLnNUeXBlID0gVktf
U1RSVUNUVVJFX1RZUEVfQ09NTUFORF9QT09MX0NSRUFURV9JTkZPOworICAgIGNvbW1hbmRQb29s
SW5mby5wTmV4dCA9IG51bGxwdHI7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogSW52ZXN0aWdhdGUg
dHJhbnNpZW50IGNvbW1hbmQgYnVmZmVycy4KKyAgICBjb21tYW5kUG9vbEluZm8uZmxhZ3MgICAg
ICAgICAgICA9IFZLX0NPTU1BTkRfUE9PTF9DUkVBVEVfUkVTRVRfQ09NTUFORF9CVUZGRVJfQklU
OworICAgIGNvbW1hbmRQb29sSW5mby5xdWV1ZUZhbWlseUluZGV4ID0gbUN1cnJlbnRRdWV1ZUZh
bWlseUluZGV4OworCisgICAgQU5HTEVfVFJZKG1Db21tYW5kUG9vbC5pbml0KG1EZXZpY2UsIGNv
bW1hbmRQb29sSW5mbykpOworCisgICAgbUNvbW1hbmRCdWZmZXIuc2V0Q29tbWFuZFBvb2woJm1D
b21tYW5kUG9vbCk7CisKKyAgICByZXR1cm4gdms6Ok5vRXJyb3IoKTsKK30KKwordms6OkVycm9y
T3JSZXN1bHQ8dWludDMyX3Q+IFJlbmRlcmVyVms6OnNlbGVjdFByZXNlbnRRdWV1ZUZvclN1cmZh
Y2UoVmtTdXJmYWNlS0hSIHN1cmZhY2UpCit7CisgICAgLy8gV2UndmUgYWxyZWFkeSBpbml0aWFs
aXplZCBhIGRldmljZSwgYW5kIGNhbid0IHJlLWNyZWF0ZSBpdCB1bmxlc3MgaXQncyBuZXZlciBi
ZWVuIHVzZWQuCisgICAgLy8gVE9ETyhqbWFkaWxsKTogSGFuZGxlIHRoZSByZS1jcmVhdGlvbiBj
YXNlIGlmIG5lY2Vzc2FyeS4KKyAgICBpZiAobURldmljZSAhPSBWS19OVUxMX0hBTkRMRSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtQ3VycmVudFF1ZXVlRmFtaWx5SW5kZXggIT0gc3RkOjpudW1l
cmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKTsKKworICAgICAgICAvLyBDaGVjayBpZiB0aGUg
Y3VycmVudCBkZXZpY2Ugc3VwcG9ydHMgcHJlc2VudCBvbiB0aGlzIHN1cmZhY2UuCisgICAgICAg
IFZrQm9vbDMyIHN1cHBvcnRzUHJlc2VudCA9IFZLX0ZBTFNFOworICAgICAgICBBTkdMRV9WS19U
UlkodmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VTdXBwb3J0S0hSKG1QaHlzaWNhbERldmljZSwg
bUN1cnJlbnRRdWV1ZUZhbWlseUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cmZhY2UsICZzdXBwb3J0c1ByZXNlbnQpKTsK
KworICAgICAgICByZXR1cm4gKHN1cHBvcnRzUHJlc2VudCA9PSBWS19UUlVFKTsKKyAgICB9CisK
KyAgICAvLyBGaW5kIGEgZ3JhcGhpY3MgYW5kIHByZXNlbnQgcXVldWUuCisgICAgT3B0aW9uYWw8
dWludDMyX3Q+IG5ld1ByZXNlbnRRdWV1ZTsKKyAgICB1aW50MzJfdCBxdWV1ZUNvdW50ID0gc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KG1RdWV1ZUZhbWlseVByb3BlcnRpZXMuc2l6ZSgpKTsKKyAgICBm
b3IgKHVpbnQzMl90IHF1ZXVlSW5kZXggPSAwOyBxdWV1ZUluZGV4IDwgcXVldWVDb3VudDsgKytx
dWV1ZUluZGV4KQorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byAmcXVldWVJbmZvID0gbVF1ZXVl
RmFtaWx5UHJvcGVydGllc1txdWV1ZUluZGV4XTsKKyAgICAgICAgaWYgKChxdWV1ZUluZm8ucXVl
dWVGbGFncyAmIFZLX1FVRVVFX0dSQVBISUNTX0JJVCkgIT0gMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgVmtCb29sMzIgc3VwcG9ydHNQcmVzZW50ID0gVktfRkFMU0U7CisgICAgICAgICAgICBB
TkdMRV9WS19UUlkodmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VTdXBwb3J0S0hSKG1QaHlzaWNh
bERldmljZSwgcXVldWVJbmRleCwgc3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1cHBvcnRzUHJlc2VudCkpOwor
CisgICAgICAgICAgICBpZiAoc3VwcG9ydHNQcmVzZW50ID09IFZLX1RSVUUpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgbmV3UHJlc2VudFF1ZXVlID0gcXVldWVJbmRleDsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IEFOR0xFX1ZLX0NIRUNLKG5ld1ByZXNlbnRRdWV1ZS52YWxpZCgpLCBWS19FUlJPUl9JTklUSUFM
SVpBVElPTl9GQUlMRUQpOworICAgIEFOR0xFX1RSWShpbml0aWFsaXplRGV2aWNlKG5ld1ByZXNl
bnRRdWV1ZS52YWx1ZSgpKSk7CisKKyAgICByZXR1cm4gbmV3UHJlc2VudFF1ZXVlLnZhbHVlKCk7
Cit9CisKK3N0ZDo6c3RyaW5nIFJlbmRlcmVyVms6OmdldFZlbmRvclN0cmluZygpIGNvbnN0Cit7
CisgICAgc3dpdGNoIChtUGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzLnZlbmRvcklEKQorICAgIHsK
KyAgICAgICAgY2FzZSBWRU5ET1JfSURfQU1EOgorICAgICAgICAgICAgcmV0dXJuICJBZHZhbmNl
ZCBNaWNybyBEZXZpY2VzIjsKKyAgICAgICAgY2FzZSBWRU5ET1JfSURfTlZJRElBOgorICAgICAg
ICAgICAgcmV0dXJuICJOVklESUEiOworICAgICAgICBjYXNlIFZFTkRPUl9JRF9JTlRFTDoKKyAg
ICAgICAgICAgIHJldHVybiAiSW50ZWwiOworICAgICAgICBkZWZhdWx0OgorICAgICAgICB7Cisg
ICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBNb3JlIHZlbmRvciBJRHMuCisgICAgICAgICAg
ICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJzdHI7CisgICAgICAgICAgICBzdHJzdHIgPDwgIlZlbmRv
ciBJRDogIiA8PCBtUGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzLnZlbmRvcklEOworICAgICAgICAg
ICAgcmV0dXJuIHN0cnN0ci5zdHIoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RkOjpzdHJp
bmcgUmVuZGVyZXJWazo6Z2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgc3Rk
OjpzdHJpbmdzdHJlYW0gc3Ryc3RyOworCisgICAgdWludDMyX3QgYXBpVmVyc2lvbiA9IG1QaHlz
aWNhbERldmljZVByb3BlcnRpZXMuYXBpVmVyc2lvbjsKKworICAgIHN0cnN0ciA8PCAiVnVsa2Fu
ICI7CisgICAgc3Ryc3RyIDw8IFZLX1ZFUlNJT05fTUFKT1IoYXBpVmVyc2lvbikgPDwgIi4iOwor
ICAgIHN0cnN0ciA8PCBWS19WRVJTSU9OX01JTk9SKGFwaVZlcnNpb24pIDw8ICIuIjsKKyAgICBz
dHJzdHIgPDwgVktfVkVSU0lPTl9QQVRDSChhcGlWZXJzaW9uKTsKKworICAgIHN0cnN0ciA8PCAi
KCIgPDwgbVBoeXNpY2FsRGV2aWNlUHJvcGVydGllcy5kZXZpY2VOYW1lIDw8ICIpIjsKKworICAg
IHJldHVybiBzdHJzdHIuc3RyKCk7CiB9CiAKIHZvaWQgUmVuZGVyZXJWazo6ZW5zdXJlQ2Fwc0lu
aXRpYWxpemVkKCkgY29uc3QKQEAgLTMxLDEyICs1MzEsMjAgQEAgdm9pZCBSZW5kZXJlclZrOjpl
bnN1cmVDYXBzSW5pdGlhbGl6ZWQoKSBjb25zdAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJlclZr
OjpnZW5lcmF0ZUNhcHMoZ2w6OkNhcHMgKiAvKm91dENhcHMqLywKK3ZvaWQgUmVuZGVyZXJWazo6
Z2VuZXJhdGVDYXBzKGdsOjpDYXBzICpvdXRDYXBzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2w6OlRleHR1cmVDYXBzTWFwICogLypvdXRUZXh0dXJlQ2FwcyovLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2w6OkV4dGVuc2lvbnMgKiAvKm91dEV4dGVuc2lvbnMqLywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpFeHRlbnNpb25zICpvdXRFeHRlbnNp
b25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkxpbWl0YXRpb25zICogLyog
b3V0TGltaXRhdGlvbnMgKi8pIGNvbnN0CiB7Ci0gICAgLy8gVE9ETyhqbWFkaWxsKTogQ2Fwcwor
ICAgIC8vIFRPRE8oam1hZGlsbCk6IENhcHMuCisgICAgb3V0Q2Fwcy0+bWF4RHJhd0J1ZmZlcnMg
ICAgICA9IDE7CisgICAgb3V0Q2Fwcy0+bWF4VmVydGV4QXR0cmlidXRlcyAgICAgPSBnbDo6TUFY
X1ZFUlRFWF9BVFRSSUJTOworICAgIG91dENhcHMtPm1heFZlcnRleEF0dHJpYkJpbmRpbmdzID0g
Z2w6Ok1BWF9WRVJURVhfQVRUUklCX0JJTkRJTkdTOworCisgICAgLy8gRW5hYmxlIHRoaXMgZm9y
IHNpbXBsZSBidWZmZXIgcmVhZGJhY2sgdGVzdGluZywgYnV0IHNvbWUgZnVuY3Rpb25hbGl0eSBp
cyBtaXNzaW5nLgorICAgIC8vIFRPRE8oam1hZGlsbCk6IFN1cHBvcnQgZnVsbCBtYXBCdWZmZXJS
YW5nZSBleHRlbnNpb24uCisgICAgb3V0RXh0ZW5zaW9ucy0+bWFwQnVmZmVyICAgICAgPSB0cnVl
OworICAgIG91dEV4dGVuc2lvbnMtPm1hcEJ1ZmZlclJhbmdlID0gdHJ1ZTsKIH0KIAogY29uc3Qg
Z2w6OkNhcHMgJlJlbmRlcmVyVms6OmdldE5hdGl2ZUNhcHMoKSBjb25zdApAQCAtNjMsNCArNTcx
LDE2OCBAQCBjb25zdCBnbDo6TGltaXRhdGlvbnMgJlJlbmRlcmVyVms6OmdldE5hdGl2ZUxpbWl0
YXRpb25zKCkgY29uc3QKICAgICByZXR1cm4gbU5hdGl2ZUxpbWl0YXRpb25zOwogfQogCit2azo6
Q29tbWFuZEJ1ZmZlciAqUmVuZGVyZXJWazo6Z2V0Q29tbWFuZEJ1ZmZlcigpCit7CisgICAgcmV0
dXJuICZtQ29tbWFuZEJ1ZmZlcjsKK30KKwordms6OkVycm9yIFJlbmRlcmVyVms6OnN1Ym1pdENv
bW1hbmRCdWZmZXIoY29uc3Qgdms6OkNvbW1hbmRCdWZmZXIgJmNvbW1hbmRCdWZmZXIpCit7Cisg
ICAgVmtGZW5jZUNyZWF0ZUluZm8gZmVuY2VJbmZvOworICAgIGZlbmNlSW5mby5zVHlwZSA9IFZL
X1NUUlVDVFVSRV9UWVBFX0ZFTkNFX0NSRUFURV9JTkZPOworICAgIGZlbmNlSW5mby5wTmV4dCA9
IG51bGxwdHI7CisgICAgZmVuY2VJbmZvLmZsYWdzID0gMDsKKworICAgIFZrQ29tbWFuZEJ1ZmZl
ciBjb21tYW5kQnVmZmVySGFuZGxlID0gY29tbWFuZEJ1ZmZlci5nZXRIYW5kbGUoKTsKKworICAg
IFZrU3VibWl0SW5mbyBzdWJtaXRJbmZvOworICAgIHN1Ym1pdEluZm8uc1R5cGUgICAgICAgICAg
ICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9TVUJNSVRfSU5GTzsKKyAgICBzdWJtaXRJbmZvLnBO
ZXh0ICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKKyAgICBzdWJtaXRJbmZvLndhaXRTZW1hcGhv
cmVDb3VudCAgID0gMDsKKyAgICBzdWJtaXRJbmZvLnBXYWl0U2VtYXBob3JlcyAgICAgID0gbnVs
bHB0cjsKKyAgICBzdWJtaXRJbmZvLnBXYWl0RHN0U3RhZ2VNYXNrICAgID0gbnVsbHB0cjsKKyAg
ICBzdWJtaXRJbmZvLmNvbW1hbmRCdWZmZXJDb3VudCAgID0gMTsKKyAgICBzdWJtaXRJbmZvLnBD
b21tYW5kQnVmZmVycyAgICAgID0gJmNvbW1hbmRCdWZmZXJIYW5kbGU7CisgICAgc3VibWl0SW5m
by5zaWduYWxTZW1hcGhvcmVDb3VudCA9IDA7CisgICAgc3VibWl0SW5mby5wU2lnbmFsU2VtYXBo
b3JlcyAgICA9IG51bGxwdHI7CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBJbnZlc3RpZ2F0ZSBo
b3cgdG8gcHJvcGVybHkgc3VibWl0IGNvbW1hbmQgYnVmZmVycy4KKyAgICBBTkdMRV9UUlkoc3Vi
bWl0KHN1Ym1pdEluZm8pKTsKKworICAgIHJldHVybiB2azo6Tm9FcnJvcigpOworfQorCit2azo6
RXJyb3IgUmVuZGVyZXJWazo6c3VibWl0QW5kRmluaXNoQ29tbWFuZEJ1ZmZlcihjb25zdCB2azo6
Q29tbWFuZEJ1ZmZlciAmY29tbWFuZEJ1ZmZlcikKK3sKKyAgICBBTkdMRV9UUlkoc3VibWl0Q29t
bWFuZEJ1ZmZlcihjb21tYW5kQnVmZmVyKSk7CisgICAgQU5HTEVfVFJZKGZpbmlzaCgpKTsKKwor
ICAgIHJldHVybiB2azo6Tm9FcnJvcigpOworfQorCit2azo6RXJyb3IgUmVuZGVyZXJWazo6c3Vi
bWl0Q29tbWFuZHNXaXRoU3luYyhjb25zdCB2azo6Q29tbWFuZEJ1ZmZlciAmY29tbWFuZEJ1ZmZl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZr
OjpTZW1hcGhvcmUgJndhaXRTZW1hcGhvcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB2azo6U2VtYXBob3JlICZzaWduYWxTZW1hcGhvcmUpCit7
CisgICAgVmtQaXBlbGluZVN0YWdlRmxhZ3Mgd2FpdFN0YWdlTWFzayAgPSBWS19QSVBFTElORV9T
VEFHRV9CT1RUT01fT0ZfUElQRV9CSVQ7CisKKyAgICBWa1N1Ym1pdEluZm8gc3VibWl0SW5mbzsK
KyAgICBzdWJtaXRJbmZvLnNUeXBlICAgICAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVf
U1VCTUlUX0lORk87CisgICAgc3VibWl0SW5mby5wTmV4dCAgICAgICAgICAgICAgICA9IG51bGxw
dHI7CisgICAgc3VibWl0SW5mby53YWl0U2VtYXBob3JlQ291bnQgICA9IDE7CisgICAgc3VibWl0
SW5mby5wV2FpdFNlbWFwaG9yZXMgICAgICA9IHdhaXRTZW1hcGhvcmUucHRyKCk7CisgICAgc3Vi
bWl0SW5mby5wV2FpdERzdFN0YWdlTWFzayAgICA9ICZ3YWl0U3RhZ2VNYXNrOworICAgIHN1Ym1p
dEluZm8uY29tbWFuZEJ1ZmZlckNvdW50ICAgPSAxOworICAgIHN1Ym1pdEluZm8ucENvbW1hbmRC
dWZmZXJzICAgICAgPSBjb21tYW5kQnVmZmVyLnB0cigpOworICAgIHN1Ym1pdEluZm8uc2lnbmFs
U2VtYXBob3JlQ291bnQgPSAxOworICAgIHN1Ym1pdEluZm8ucFNpZ25hbFNlbWFwaG9yZXMgICAg
PSBzaWduYWxTZW1hcGhvcmUucHRyKCk7CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBJbnZlc3Rp
Z2F0ZSBob3cgdG8gcHJvcGVybHkgcXVldWUgY29tbWFuZCBidWZmZXIgd29yay4KKyAgICBBTkdM
RV9UUlkoc3VibWl0KHN1Ym1pdEluZm8pKTsKKworICAgIHJldHVybiB2azo6Tm9FcnJvcigpOwor
fQorCit2azo6RXJyb3IgUmVuZGVyZXJWazo6ZmluaXNoKCkKK3sKKyAgICBBU1NFUlQobVF1ZXVl
ICE9IFZLX05VTExfSEFORExFKTsKKyAgICBBTkdMRV9WS19UUlkodmtRdWV1ZVdhaXRJZGxlKG1R
dWV1ZSkpOworICAgIGNoZWNrSW5GbGlnaHRDb21tYW5kcygpOworICAgIHJldHVybiB2azo6Tm9F
cnJvcigpOworfQorCit2azo6RXJyb3IgUmVuZGVyZXJWazo6Y2hlY2tJbkZsaWdodENvbW1hbmRz
KCkKK3sKKyAgICBib29sIGFueUZpbmlzaGVkID0gZmFsc2U7CisKKyAgICAvLyBDaGVjayBpZiBh
bnkgaW4tZmxpZ2h0IGNvbW1hbmQgYnVmZmVycyBhcmUgZmluaXNoZWQuCisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IG1JbkZsaWdodENvbW1hbmRzLnNpemUoKTspCisgICAgewor
ICAgICAgICBhdXRvICppbkZsaWdodENvbW1hbmQgPSAmbUluRmxpZ2h0Q29tbWFuZHNbaW5kZXhd
OworCisgICAgICAgIGJvb2wgZG9uZSA9IGZhbHNlOworICAgICAgICBBTkdMRV9UUllfUkVTVUxU
KGluRmxpZ2h0Q29tbWFuZC0+ZmluaXNoZWQobURldmljZSksIGRvbmUpOworICAgICAgICBpZiAo
ZG9uZSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGluRmxpZ2h0Q29tbWFuZC0+cXVl
dWVTZXJpYWwoKSA+IG1MYXN0Q29tcGxldGVkUXVldWVTZXJpYWwpOworICAgICAgICAgICAgbUxh
c3RDb21wbGV0ZWRRdWV1ZVNlcmlhbCA9IGluRmxpZ2h0Q29tbWFuZC0+cXVldWVTZXJpYWwoKTsK
KyAgICAgICAgICAgIGluRmxpZ2h0Q29tbWFuZC0+ZGVzdHJveShtRGV2aWNlKTsKKyAgICAgICAg
ICAgIG1JbkZsaWdodENvbW1hbmRzLmVyYXNlKG1JbkZsaWdodENvbW1hbmRzLmJlZ2luKCkgKyBp
bmRleCk7CisgICAgICAgICAgICBhbnlGaW5pc2hlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAg
ICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICArK2luZGV4OworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKGFueUZpbmlzaGVkKQorICAgIHsKKyAgICAgICAgc2l6ZV90IGZyZWVJbmRl
eCA9IDA7CisgICAgICAgIGZvciAoOyBmcmVlSW5kZXggPCBtR2FyYmFnZS5zaXplKCk7ICsrZnJl
ZUluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1HYXJiYWdlW2ZyZWVJbmRleF0t
PmRlc3Ryb3lJZkNvbXBsZXRlKG1EZXZpY2UsIG1MYXN0Q29tcGxldGVkUXVldWVTZXJpYWwpKQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVtb3ZlIHRo
ZSBlbnRyaWVzIGZyb20gdGhlIGdhcmJhZ2UgbGlzdCAtIHRoZXkgc2hvdWxkIGJlIHJlYWR5IHRv
IGdvLgorICAgICAgICBpZiAoZnJlZUluZGV4ID4gMCkKKyAgICAgICAgeworICAgICAgICAgICAg
bUdhcmJhZ2UuZXJhc2UobUdhcmJhZ2UuYmVnaW4oKSwgbUdhcmJhZ2UuYmVnaW4oKSArIGZyZWVJ
bmRleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdms6Ok5vRXJyb3IoKTsKK30K
Kwordms6OkVycm9yIFJlbmRlcmVyVms6OnN1Ym1pdChjb25zdCBWa1N1Ym1pdEluZm8gJnN1Ym1p
dEluZm8pCit7CisgICAgY2hlY2tJbkZsaWdodENvbW1hbmRzKCk7CisKKyAgICAvLyBTdGFydCBh
IEZlbmNlIHRvIHJlY29yZCB3aGVuIHRoaXMgY29tbWFuZCBidWZmZXIgZmluaXNoZXMuCisgICAg
VmtGZW5jZUNyZWF0ZUluZm8gZmVuY2VJbmZvOworICAgIGZlbmNlSW5mby5zVHlwZSA9IFZLX1NU
UlVDVFVSRV9UWVBFX0ZFTkNFX0NSRUFURV9JTkZPOworICAgIGZlbmNlSW5mby5wTmV4dCA9IG51
bGxwdHI7CisgICAgZmVuY2VJbmZvLmZsYWdzID0gMDsKKworICAgIHZrOjpGZW5jZSBmZW5jZTsK
KyAgICBBTkdMRV9UUlkoZmVuY2UuaW5pdChtRGV2aWNlLCBmZW5jZUluZm8pKTsKKworICAgIEFO
R0xFX1ZLX1RSWSh2a1F1ZXVlU3VibWl0KG1RdWV1ZSwgMSwgJnN1Ym1pdEluZm8sIGZlbmNlLmdl
dEhhbmRsZSgpKSk7CisKKyAgICAvLyBTdG9yZSB0aGlzIGNvbW1hbmQgYnVmZmVyIGluIHRoZSBp
bi1mbGlnaHQgbGlzdC4KKyAgICBtSW5GbGlnaHRDb21tYW5kcy5lbXBsYWNlX2JhY2sodms6OkZl
bmNlQW5kQ29tbWFuZEJ1ZmZlcihtQ3VycmVudFF1ZXVlU2VyaWFsLCBzdGQ6Om1vdmUoZmVuY2Up
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6bW92ZShtQ29tbWFuZEJ1ZmZlcikpKTsKKworICAgIC8vIFNhbml0eSBjaGVj
ay4KKyAgICBBU1NFUlQobUluRmxpZ2h0Q29tbWFuZHMuc2l6ZSgpIDwgMTAwMHUpOworCisgICAg
Ly8gSW5jcmVtZW50IHRoZSBjb21tYW5kIGJ1ZmZlciBzZXJpYWwuIElmIHRoaXMgZmFpbHMsIHdl
IG5lZWQgdG8gcmVzdGFydCBBTkdMRS4KKyAgICBBTkdMRV9WS19DSEVDSygrK21DdXJyZW50UXVl
dWVTZXJpYWwsIFZLX0VSUk9SX09VVF9PRl9IT1NUX01FTU9SWSk7CisgICAgcmV0dXJuIHZrOjpO
b0Vycm9yKCk7Cit9CisKK3ZrOjpFcnJvciBSZW5kZXJlclZrOjpjcmVhdGVTdGFnaW5nSW1hZ2Uo
VGV4dHVyZURpbWVuc2lvbiBkaW1lbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHZrOjpGb3JtYXQgJmZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJmV4dGVudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OlN0YWdpbmdJbWFnZSAqaW1h
Z2VPdXQpCit7CisgICAgQVNTRVJUKG1Ib3N0VmlzaWJsZU1lbW9yeUluZGV4ICE9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSk7CisKKyAgICBBTkdMRV9UUlkoaW1hZ2VPdXQt
PmluaXQobURldmljZSwgbUN1cnJlbnRRdWV1ZUZhbWlseUluZGV4LCBtSG9zdFZpc2libGVNZW1v
cnlJbmRleCwgZGltZW5zaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQu
bmF0aXZlLCBleHRlbnQpKTsKKworICAgIHJldHVybiB2azo6Tm9FcnJvcigpOworfQorCitHbHNs
YW5nV3JhcHBlciAqUmVuZGVyZXJWazo6Z2V0R2xzbGFuZ1dyYXBwZXIoKQoreworICAgIHJldHVy
biBtR2xzbGFuZ1dyYXBwZXI7Cit9CisKK1NlcmlhbCBSZW5kZXJlclZrOjpnZXRDdXJyZW50UXVl
dWVTZXJpYWwoKSBjb25zdAoreworICAgIHJldHVybiBtQ3VycmVudFF1ZXVlU2VyaWFsOworfQor
CiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmgKaW5k
ZXggOGE3NDg5NDk2ZGQ2ZWUzMWExYzgxNTk3NzVjMDY2NDM2MGI5MTVhNi4uZjA0MDVjYWVmMTZh
NjNhZDRkNDcwNDk0MTkxODY1ODdhNWIxYmRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5k
ZXJlclZrLmgKQEAgLTEwLDExICsxMCwyNiBAQAogI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9W
VUxLQU5fUkVOREVSRVJWS19IXwogI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fUkVO
REVSRVJWS19IXwogCisjaW5jbHVkZSA8bWVtb3J5PgorI2luY2x1ZGUgPHZ1bGthbi92dWxrYW4u
aD4KKwogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
Q2Fwcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9yZW5kZXJlcnZrX3V0
aWxzLmgiCisKK25hbWVzcGFjZSBlZ2wKK3sKK2NsYXNzIEF0dHJpYnV0ZU1hcDsKK30KIAogbmFt
ZXNwYWNlIHJ4CiB7CitjbGFzcyBHbHNsYW5nV3JhcHBlcjsKKworbmFtZXNwYWNlIHZrCit7Citz
dHJ1Y3QgRm9ybWF0OworfQogCiBjbGFzcyBSZW5kZXJlclZrIDogYW5nbGU6Ok5vbkNvcHlhYmxl
CiB7CkBAIC0yMiwyMyArMzcsOTUgQEAgY2xhc3MgUmVuZGVyZXJWayA6IGFuZ2xlOjpOb25Db3B5
YWJsZQogICAgIFJlbmRlcmVyVmsoKTsKICAgICB+UmVuZGVyZXJWaygpOwogCisgICAgdms6OkVy
cm9yIGluaXRpYWxpemUoY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpOworCisgICAg
c3RkOjpzdHJpbmcgZ2V0VmVuZG9yU3RyaW5nKCkgY29uc3Q7CisgICAgc3RkOjpzdHJpbmcgZ2V0
UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNvbnN0OworCisgICAgVmtJbnN0YW5jZSBnZXRJbnN0YW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIG1JbnN0YW5jZTsgfQorICAgIFZrUGh5c2ljYWxEZXZpY2UgZ2V0
UGh5c2ljYWxEZXZpY2UoKSBjb25zdCB7IHJldHVybiBtUGh5c2ljYWxEZXZpY2U7IH0KKyAgICBW
a1F1ZXVlIGdldFF1ZXVlKCkgY29uc3QgeyByZXR1cm4gbVF1ZXVlOyB9CisgICAgVmtEZXZpY2Ug
Z2V0RGV2aWNlKCkgY29uc3QgeyByZXR1cm4gbURldmljZTsgfQorCisgICAgdms6OkVycm9yT3JS
ZXN1bHQ8dWludDMyX3Q+IHNlbGVjdFByZXNlbnRRdWV1ZUZvclN1cmZhY2UoVmtTdXJmYWNlS0hS
IHN1cmZhY2UpOworCisgICAgLy8gVE9ETyhqbWFkaWxsKTogVXNlIENvbnRleHRJbXBsIGZvciBj
b21tYW5kIGJ1ZmZlcnMgdG8gZW5hYmxlIHRocmVhZGVkIGNvbnRleHRzLgorICAgIHZrOjpDb21t
YW5kQnVmZmVyICpnZXRDb21tYW5kQnVmZmVyKCk7CisgICAgdms6OkVycm9yIHN1Ym1pdENvbW1h
bmRCdWZmZXIoY29uc3Qgdms6OkNvbW1hbmRCdWZmZXIgJmNvbW1hbmRCdWZmZXIpOworICAgIHZr
OjpFcnJvciBzdWJtaXRBbmRGaW5pc2hDb21tYW5kQnVmZmVyKGNvbnN0IHZrOjpDb21tYW5kQnVm
ZmVyICZjb21tYW5kQnVmZmVyKTsKKyAgICB2azo6RXJyb3Igc3VibWl0Q29tbWFuZHNXaXRoU3lu
Yyhjb25zdCB2azo6Q29tbWFuZEJ1ZmZlciAmY29tbWFuZEJ1ZmZlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2azo6U2VtYXBob3JlICZ3YWl0U2VtYXBob3Jl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZrOjpTZW1hcGhv
cmUgJnNpZ25hbFNlbWFwaG9yZSk7CisgICAgdms6OkVycm9yIGZpbmlzaCgpOworCiAgICAgY29u
c3QgZ2w6OkNhcHMgJmdldE5hdGl2ZUNhcHMoKSBjb25zdDsKICAgICBjb25zdCBnbDo6VGV4dHVy
ZUNhcHNNYXAgJmdldE5hdGl2ZVRleHR1cmVDYXBzKCkgY29uc3Q7CiAgICAgY29uc3QgZ2w6OkV4
dGVuc2lvbnMgJmdldE5hdGl2ZUV4dGVuc2lvbnMoKSBjb25zdDsKICAgICBjb25zdCBnbDo6TGlt
aXRhdGlvbnMgJmdldE5hdGl2ZUxpbWl0YXRpb25zKCkgY29uc3Q7CiAKKyAgICB2azo6RXJyb3Ig
Y3JlYXRlU3RhZ2luZ0ltYWdlKFRleHR1cmVEaW1lbnNpb24gZGltZW5zaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdms6OkZvcm1hdCAmZm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJmV4dGVudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrOjpTdGFnaW5nSW1hZ2UgKmltYWdlT3V0
KTsKKworICAgIEdsc2xhbmdXcmFwcGVyICpnZXRHbHNsYW5nV3JhcHBlcigpOworCisgICAgU2Vy
aWFsIGdldEN1cnJlbnRRdWV1ZVNlcmlhbCgpIGNvbnN0OworCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CisgICAgdm9pZCBlbnF1ZXVlR2FyYmFnZShTZXJpYWwgc2VyaWFsLCBUICYmb2JqZWN0
KQorICAgIHsKKyAgICAgICAgbUdhcmJhZ2UuZW1wbGFjZV9iYWNrKHN0ZDo6dW5pcXVlX3B0cjx2
azo6R2FyYmFnZU9iamVjdDxUPj4oCisgICAgICAgICAgICBuZXcgdms6OkdhcmJhZ2VPYmplY3Q8
VD4oc2VyaWFsLCBzdGQ6Om1vdmUob2JqZWN0KSkpKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KKyAgICB2b2lkIGVucXVldWVHYXJiYWdlT3JEZWxldGVOb3coY29uc3QgUmVz
b3VyY2VWayAmcmVzb3VjZSwgVCAmJm9iamVjdCkKKyAgICB7CisgICAgICAgIGlmIChyZXNvdWNl
LmdldERlbGV0ZVNjaGVkdWxlKG1MYXN0Q29tcGxldGVkUXVldWVTZXJpYWwpID09IERlbGV0ZVNj
aGVkdWxlOjpOT1cpCisgICAgICAgIHsKKyAgICAgICAgICAgIG9iamVjdC5kZXN0cm95KG1EZXZp
Y2UpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgZW5x
dWV1ZUdhcmJhZ2UocmVzb3VjZS5nZXRTdG9yZWRRdWV1ZVNlcmlhbCgpLCBzdGQ6Om1vdmUob2Jq
ZWN0KSk7CisgICAgICAgIH0KKyAgICB9CisKICAgcHJpdmF0ZToKICAgICB2b2lkIGVuc3VyZUNh
cHNJbml0aWFsaXplZCgpIGNvbnN0OwogICAgIHZvaWQgZ2VuZXJhdGVDYXBzKGdsOjpDYXBzICpv
dXRDYXBzLAogICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ2Fwc01hcCAqb3V0VGV4
dHVyZUNhcHMsCiAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkV4dGVuc2lvbnMgKm91dEV4dGVu
c2lvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkxpbWl0YXRpb25zICpvdXRMaW1pdGF0
aW9ucykgY29uc3Q7CisgICAgdms6OkVycm9yIHN1Ym1pdChjb25zdCBWa1N1Ym1pdEluZm8gJnN1
Ym1pdEluZm8pOworICAgIHZrOjpFcnJvciBjaGVja0luRmxpZ2h0Q29tbWFuZHMoKTsKIAogICAg
IG11dGFibGUgYm9vbCBtQ2Fwc0luaXRpYWxpemVkOwogICAgIG11dGFibGUgZ2w6OkNhcHMgbU5h
dGl2ZUNhcHM7CiAgICAgbXV0YWJsZSBnbDo6VGV4dHVyZUNhcHNNYXAgbU5hdGl2ZVRleHR1cmVD
YXBzOwogICAgIG11dGFibGUgZ2w6OkV4dGVuc2lvbnMgbU5hdGl2ZUV4dGVuc2lvbnM7CiAgICAg
bXV0YWJsZSBnbDo6TGltaXRhdGlvbnMgbU5hdGl2ZUxpbWl0YXRpb25zOworCisgICAgdms6OkVy
cm9yIGluaXRpYWxpemVEZXZpY2UodWludDMyX3QgcXVldWVGYW1pbHlJbmRleCk7CisKKyAgICBW
a0luc3RhbmNlIG1JbnN0YW5jZTsKKyAgICBib29sIG1FbmFibGVWYWxpZGF0aW9uTGF5ZXJzOwor
ICAgIFZrRGVidWdSZXBvcnRDYWxsYmFja0VYVCBtRGVidWdSZXBvcnRDYWxsYmFjazsKKyAgICBW
a1BoeXNpY2FsRGV2aWNlIG1QaHlzaWNhbERldmljZTsKKyAgICBWa1BoeXNpY2FsRGV2aWNlUHJv
cGVydGllcyBtUGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzOworICAgIHN0ZDo6dmVjdG9yPFZrUXVl
dWVGYW1pbHlQcm9wZXJ0aWVzPiBtUXVldWVGYW1pbHlQcm9wZXJ0aWVzOworICAgIFZrUXVldWUg
bVF1ZXVlOworICAgIHVpbnQzMl90IG1DdXJyZW50UXVldWVGYW1pbHlJbmRleDsKKyAgICBWa0Rl
dmljZSBtRGV2aWNlOworICAgIHZrOjpDb21tYW5kUG9vbCBtQ29tbWFuZFBvb2w7CisgICAgdms6
OkNvbW1hbmRCdWZmZXIgbUNvbW1hbmRCdWZmZXI7CisgICAgdWludDMyX3QgbUhvc3RWaXNpYmxl
TWVtb3J5SW5kZXg7CisgICAgR2xzbGFuZ1dyYXBwZXIgKm1HbHNsYW5nV3JhcHBlcjsKKyAgICBT
ZXJpYWwgbUN1cnJlbnRRdWV1ZVNlcmlhbDsKKyAgICBTZXJpYWwgbUxhc3RDb21wbGV0ZWRRdWV1
ZVNlcmlhbDsKKyAgICBzdGQ6OnZlY3Rvcjx2azo6RmVuY2VBbmRDb21tYW5kQnVmZmVyPiBtSW5G
bGlnaHRDb21tYW5kczsKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8dms6OklHYXJi
YWdlT2JqZWN0Pj4gbUdhcmJhZ2U7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
U2hhZGVyVmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9TaGFkZXJWay5jcHAKaW5kZXggOGJlY2U5YjQ1NGViNmEzMzNkNjliODU5YWY1
N2Y2ZTUzYjIxNDdhYi4uNzgwMjRhNjM1YTRiOTRiNjRhMjBiNGRmMmI1NmI3ZjNlYTZjM2NkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9TaGFkZXJWay5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TaGFkZXJWay5jcHAKQEAgLTI1LDE5ICsyNSwxOCBAQCBT
aGFkZXJWazo6flNoYWRlclZrKCkKIFNoQ29tcGlsZU9wdGlvbnMgU2hhZGVyVms6OnByZXBhcmVT
b3VyY2VBbmRSZXR1cm5PcHRpb25zKHN0ZDo6c3RyaW5nc3RyZWFtICpzb3VyY2VTdHJlYW0sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OnN0cmluZyAqc291cmNlUGF0aCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0
dXJuIGludCgpOworICAgICpzb3VyY2VTdHJlYW0gPDwgbURhdGEuZ2V0U291cmNlKCk7CisgICAg
cmV0dXJuIDA7CiB9CiAKIGJvb2wgU2hhZGVyVms6OnBvc3RUcmFuc2xhdGVDb21waWxlKGdsOjpD
b21waWxlciAqY29tcGlsZXIsIHN0ZDo6c3RyaW5nICppbmZvTG9nKQogewotICAgIFVOSU1QTEVN
RU5URUQoKTsKLSAgICByZXR1cm4gYm9vbCgpOworICAgIC8vIE5vIHdvcmsgdG8gZG8gaGVyZS4K
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RkOjpzdHJpbmcgU2hhZGVyVms6OmdldERlYnVnSW5m
bygpIGNvbnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiBzdGQ6OnN0cmlu
ZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL1NoYWRlclZrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1NoYWRlclZrLmgKaW5kZXggMWQ3MTNjYWY4OGIx
MTZmNzRjMmVhZjljZWU2Nzk0MTYxZGRmMjcyYi4uMTBmOGZlNDIzNjQ5YTQ4MmU4Y2RlMTljZGRm
MjE3NTUxYzBmYzY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TaGFkZXJWay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2hhZGVyVmsuaApAQCAtMjEsNyAr
MjEsNyBAQCBjbGFzcyBTaGFkZXJWayA6IHB1YmxpYyBTaGFkZXJJbXBsCiAgICAgU2hhZGVyVmso
Y29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRhKTsKICAgICB+U2hhZGVyVmsoKSBvdmVycmlkZTsK
IAotICAgIC8vIFJldHVybnMgYWRkaXRpb25hbCBTaENvbXBpbGUgb3B0aW9ucy4KKyAgICAvLyBS
ZXR1cm5zIGFkZGl0aW9uYWwgc2g6OkNvbXBpbGUgb3B0aW9ucy4KICAgICBTaENvbXBpbGVPcHRp
b25zIHByZXBhcmVTb3VyY2VBbmRSZXR1cm5PcHRpb25zKHN0ZDo6c3RyaW5nc3RyZWFtICpzb3Vy
Y2VTdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnN0cmluZyAqc291cmNlUGF0aCkgb3ZlcnJpZGU7CiAgICAgLy8gUmV0dXJucyBz
dWNjZXNzIGZvciBjb21waWxpbmcgb24gdGhlIGRyaXZlci4gUmV0dXJucyBzdWNjZXNzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9TdXJmYWNlVmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9TdXJmYWNlVmsuY3BwCmluZGV4IGJhOWQ2ZjFjZWYxNGZjMGNjZDIz
NTExZjI5NWYwN2I4ZjE2MzQwNjMuLjA0ZmNmZmVlMzBlOThjZTg2YzI5ODc1ZjgzZDJlMzhiZGNl
MGQzNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vU3VyZmFjZVZrLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1N1cmZhY2VWay5jcHAKQEAgLTEwLDEwMCAr
MTAsNTc0IEBACiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1N1cmZhY2VWay5o
IgogCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAibGliQU5HTEUvU3VyZmFj
ZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5VmsuaCIKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRnJhbWVidWZmZXJWay5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL2Zvcm1hdHV0aWxzdmsuaCIKIAogbmFtZXNwYWNlIHJ4CiB7
CiAKLVN1cmZhY2VWazo6U3VyZmFjZVZrKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdXJmYWNl
U3RhdGUpIDogU3VyZmFjZUltcGwoc3VyZmFjZVN0YXRlKQorbmFtZXNwYWNlCiB7CisKK2NvbnN0
IHZrOjpGb3JtYXQgJkdldFZrRm9ybWF0RnJvbUNvbmZpZyhjb25zdCBlZ2w6OkNvbmZpZyAmY29u
ZmlnKQoreworICAgIC8vIFRPRE8oam1hZGlsbCk6IFByb3Blcmx5IGhhbmRsZSBmb3JtYXQgaW50
ZXJwcmV0YXRpb24uCisgICAgcmV0dXJuIHZrOjpGb3JtYXQ6OkdldChHTF9CR1JBOF9FWFQpOwog
fQogCi1TdXJmYWNlVms6On5TdXJmYWNlVmsoKQorVmtQcmVzZW50TW9kZUtIUiBHZXREZXNpcmVk
UHJlc2VudE1vZGUoY29uc3Qgc3RkOjp2ZWN0b3I8VmtQcmVzZW50TW9kZUtIUj4gJnByZXNlbnRN
b2RlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBtaW5T
d2FwSW50ZXJ2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xp
bnQgbWF4U3dhcEludGVydmFsKQogeworICAgIEFTU0VSVCghcHJlc2VudE1vZGVzLmVtcHR5KCkp
OworCisgICAgLy8gVXNlIEZJRk8gbW9kZSBmb3Igdi1zeW5jLCBzaW5jZSBpdCB0aHJvdHRsZXMg
eW91IHRvIHRoZSBkaXNwbGF5IHJhdGUuIE1haWxib3ggaXMgbW9yZQorICAgIC8vIHNpbWlsYXIg
dG8gdHJpcGxlLWJ1ZmZlcmluZy4gRm9yIG5vdyB3ZSBoYXJkLWNvZGUgTWFpbGJveCBmb3IgcGVy
ZiB0c2V0aW5nLgorICAgIC8vIFRPRE8oam1hZGlsbCk6IFByb3Blcmx5IHNlbGVjdCBwcmVzZW50
IG1vZGUgYW5kIHJlLWNyZWF0ZSBkaXNwbGF5IGlmIGNoYW5nZWQuCisgICAgVmtQcmVzZW50TW9k
ZUtIUiBiZXN0Q2hvaWNlID0gVktfUFJFU0VOVF9NT0RFX01BSUxCT1hfS0hSOworCisgICAgZm9y
IChhdXRvIHByZXNlbnRNb2RlIDogcHJlc2VudE1vZGVzKQorICAgIHsKKyAgICAgICAgaWYgKHBy
ZXNlbnRNb2RlID09IGJlc3RDaG9pY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBi
ZXN0Q2hvaWNlOworICAgICAgICB9CisgICAgfQorCisgICAgRVJSKCkgPDwgIkRlc2lyZWQgcHJl
c2VudCBtb2RlIG5vdCBhdmFpbGFibGUuIEZhbGxpbmcgYmFjayB0byAiIDw8IHByZXNlbnRNb2Rl
c1swXTsKKyAgICByZXR1cm4gcHJlc2VudE1vZGVzWzBdOwogfQogCi1lZ2w6OkVycm9yIFN1cmZh
Y2VWazo6aW5pdGlhbGl6ZSgpCit9ICAvLyBuYW1lc3BhY2UKKworT2Zmc2NyZWVuU3VyZmFjZVZr
OjpPZmZzY3JlZW5TdXJmYWNlVmsoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN1cmZhY2VTdGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCB3aWR0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBoZWlnaHQpCisg
ICAgOiBTdXJmYWNlSW1wbChzdXJmYWNlU3RhdGUpLCBtV2lkdGgod2lkdGgpLCBtSGVpZ2h0KGhl
aWdodCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdM
X0JBRF9BQ0NFU1MpOwogfQogCi1GcmFtZWJ1ZmZlckltcGwgKlN1cmZhY2VWazo6Y3JlYXRlRGVm
YXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkKK09mZnNj
cmVlblN1cmZhY2VWazo6fk9mZnNjcmVlblN1cmZhY2VWaygpCiB7Ci0gICAgVU5JTVBMRU1FTlRF
RCgpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxGcmFtZWJ1ZmZlckltcGwgKj4oMCk7CiB9CiAK
LWVnbDo6RXJyb3IgU3VyZmFjZVZrOjpzd2FwKCkKK2VnbDo6RXJyb3IgT2Zmc2NyZWVuU3VyZmFj
ZVZrOjppbml0aWFsaXplKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkKIHsKLSAgICBV
TklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOwor
ICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0KIAotZWdsOjpFcnJvciBTdXJm
YWNlVms6OnBvc3RTdWJCdWZmZXIoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVH
TGludCBoZWlnaHQpCitGcmFtZWJ1ZmZlckltcGwgKk9mZnNjcmVlblN1cmZhY2VWazo6Y3JlYXRl
RGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkKIHsK
LSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NF
U1MpOworICAgIC8vIFVzZSBhIHVzZXIgRkJPIGZvciBhbiBvZmZzY3JlZW4gUlQuCisgICAgcmV0
dXJuIEZyYW1lYnVmZmVyVms6OkNyZWF0ZVVzZXJGQk8oc3RhdGUpOwogfQogCi1lZ2w6OkVycm9y
IFN1cmZhY2VWazo6cXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTGludCBhdHRyaWJ1dGUsIHZv
aWQgKip2YWx1ZSkKK2VnbDo6RXJyb3IgT2Zmc2NyZWVuU3VyZmFjZVZrOjpzd2FwKGNvbnN0IERp
c3BsYXlJbXBsICpkaXNwbGF5SW1wbCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0
dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVH
TF9TVUNDRVNTKTsKIH0KIAotZWdsOjpFcnJvciBTdXJmYWNlVms6OmJpbmRUZXhJbWFnZShnbDo6
VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50IGJ1ZmZlcikKK2VnbDo6RXJyb3IgT2Zmc2NyZWVuU3Vy
ZmFjZVZrOjpwb3N0U3ViQnVmZmVyKEVHTGludCAvKngqLywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCAvKnkqLywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCAvKndpZHRoKi8sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgLypoZWlnaHQqLykKIHsK
LSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NF
U1MpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworZWdsOjpFcnJv
ciBPZmZzY3JlZW5TdXJmYWNlVms6OnF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgLyph
dHRyaWJ1dGUqLywgdm9pZCAqKiAvKnZhbHVlKi8pCit7CisgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0NVUlJFTlRfU1VSRkFDRSk7CiB9CiAKLWVnbDo6
RXJyb3IgU3VyZmFjZVZrOjpyZWxlYXNlVGV4SW1hZ2UoRUdMaW50IGJ1ZmZlcikKK2VnbDo6RXJy
b3IgT2Zmc2NyZWVuU3VyZmFjZVZrOjpiaW5kVGV4SW1hZ2UoZ2w6OlRleHR1cmUgKiAvKnRleHR1
cmUqLywgRUdMaW50IC8qYnVmZmVyKi8pCit7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NV
Q0NFU1MpOworfQorCitlZ2w6OkVycm9yIE9mZnNjcmVlblN1cmZhY2VWazo6cmVsZWFzZVRleElt
YWdlKEVHTGludCAvKmJ1ZmZlciovKQoreworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUND
RVNTKTsKK30KKworZWdsOjpFcnJvciBPZmZzY3JlZW5TdXJmYWNlVms6OmdldFN5bmNWYWx1ZXMo
RUdMdWludDY0S0hSICogLyp1c3QqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTHVpbnQ2NEtIUiAqIC8qbXNjKi8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0x1aW50NjRLSFIgKiAvKnNiYyovKQogewogICAg
IFVOSU1QTEVNRU5URUQoKTsKICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7
CiB9CiAKLWVnbDo6RXJyb3IgU3VyZmFjZVZrOjpnZXRTeW5jVmFsdWVzKEVHTHVpbnQ2NEtIUiAq
dXN0LCBFR0x1aW50NjRLSFIgKm1zYywgRUdMdWludDY0S0hSICpzYmMpCit2b2lkIE9mZnNjcmVl
blN1cmZhY2VWazo6c2V0U3dhcEludGVydmFsKEVHTGludCAvKmludGVydmFsKi8pCit7Cit9CisK
K0VHTGludCBPZmZzY3JlZW5TdXJmYWNlVms6OmdldFdpZHRoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbVdpZHRoOworfQorCitFR0xpbnQgT2Zmc2NyZWVuU3VyZmFjZVZrOjpnZXRIZWlnaHQoKSBj
b25zdAoreworICAgIHJldHVybiBtSGVpZ2h0OworfQorCitFR0xpbnQgT2Zmc2NyZWVuU3VyZmFj
ZVZrOjppc1Bvc3RTdWJCdWZmZXJTdXBwb3J0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBFR0xf
RkFMU0U7Cit9CisKK0VHTGludCBPZmZzY3JlZW5TdXJmYWNlVms6OmdldFN3YXBCZWhhdmlvcigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIEVHTF9CVUZGRVJfUFJFU0VSVkVEOworfQorCitnbDo6RXJy
b3IgT2Zmc2NyZWVuU3VyZmFjZVZrOjpnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KAorICAgIGNv
bnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAmIC8qdGFyZ2V0Ki8sCisgICAg
RnJhbWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqIC8qcnRPdXQqLykKK3sKKyAgICBV
TlJFQUNIQUJMRSgpOworICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworfQorCitXaW5kb3dTdXJmYWNlVms6OldpbmRvd1N1cmZhY2VWayhjb25zdCBlZ2w6OlN1cmZh
Y2VTdGF0ZSAmc3VyZmFjZVN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFR0xpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xp
bnQgaGVpZ2h0KQorICAgIDogU3VyZmFjZUltcGwoc3VyZmFjZVN0YXRlKSwKKyAgICAgIG1OYXRp
dmVXaW5kb3dUeXBlKHdpbmRvdyksCisgICAgICBtU3VyZmFjZShWS19OVUxMX0hBTkRMRSksCisg
ICAgICBtU3dhcGNoYWluKFZLX05VTExfSEFORExFKSwKKyAgICAgIG1SZW5kZXJUYXJnZXQoKSwK
KyAgICAgIG1DdXJyZW50U3dhcGNoYWluSW1hZ2VJbmRleCgwKQoreworICAgIG1SZW5kZXJUYXJn
ZXQuZXh0ZW50cy53aWR0aCAgPSBzdGF0aWNfY2FzdDxHTGludD4od2lkdGgpOworICAgIG1SZW5k
ZXJUYXJnZXQuZXh0ZW50cy5oZWlnaHQgPSBzdGF0aWNfY2FzdDxHTGludD4oaGVpZ2h0KTsKKyAg
ICBtUmVuZGVyVGFyZ2V0LmV4dGVudHMuZGVwdGggID0gMTsKKyAgICBtUmVuZGVyVGFyZ2V0LnJl
c291cmNlICAgICAgID0gdGhpczsKK30KKworV2luZG93U3VyZmFjZVZrOjp+V2luZG93U3VyZmFj
ZVZrKCkKK3sKKyAgICBBU1NFUlQobVN1cmZhY2UgPT0gVktfTlVMTF9IQU5ETEUpOworICAgIEFT
U0VSVChtU3dhcGNoYWluID09IFZLX05VTExfSEFORExFKTsKK30KKwordm9pZCBXaW5kb3dTdXJm
YWNlVms6OmRlc3Ryb3koY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKQoreworICAgIGNv
bnN0IERpc3BsYXlWayAqZGlzcGxheVZrID0gR2V0QXM8RGlzcGxheVZrPihkaXNwbGF5SW1wbCk7
CisgICAgUmVuZGVyZXJWayAqcmVuZGVyZXJWayAgICAgPSBkaXNwbGF5VmstPmdldFJlbmRlcmVy
KCk7CisgICAgVmtEZXZpY2UgZGV2aWNlICAgICAgICAgICAgPSByZW5kZXJlclZrLT5nZXREZXZp
Y2UoKTsKKyAgICBWa0luc3RhbmNlIGluc3RhbmNlICAgICAgICA9IHJlbmRlcmVyVmstPmdldElu
c3RhbmNlKCk7CisKKyAgICByZW5kZXJlclZrLT5maW5pc2goKTsKKworICAgIG1JbWFnZUF2YWls
YWJsZVNlbWFwaG9yZS5kZXN0cm95KGRldmljZSk7CisgICAgbVJlbmRlcmluZ0NvbXBsZXRlU2Vt
YXBob3JlLmRlc3Ryb3koZGV2aWNlKTsKKworICAgIGZvciAoYXV0byAmaW1hZ2VWaWV3IDogbVN3
YXBjaGFpbkltYWdlVmlld3MpCisgICAgeworICAgICAgICBpbWFnZVZpZXcuZGVzdHJveShkZXZp
Y2UpOworICAgIH0KKworICAgIC8vIEFsdGhvdWdoIHdlIGRvbid0IG93biB0aGUgc3dhcGNoYWlu
IGltYWdlIGhhbmRsZXMsIHdlIG5lZWQgdG8ga2VlcCBvdXIgc2h1dGRvd24gY2xlYW4uCisgICAg
Zm9yIChhdXRvICZpbWFnZSA6IG1Td2FwY2hhaW5JbWFnZXMpCisgICAgeworICAgICAgICBpbWFn
ZS5yZXNldCgpOworICAgIH0KKworICAgIGZvciAoYXV0byAmZnJhbWVidWZmZXIgOiBtU3dhcGNo
YWluRnJhbWVidWZmZXJzKQorICAgIHsKKyAgICAgICAgZnJhbWVidWZmZXIuZGVzdHJveShkZXZp
Y2UpOworICAgIH0KKworICAgIGlmIChtU3dhcGNoYWluKQorICAgIHsKKyAgICAgICAgdmtEZXN0
cm95U3dhcGNoYWluS0hSKGRldmljZSwgbVN3YXBjaGFpbiwgbnVsbHB0cik7CisgICAgICAgIG1T
d2FwY2hhaW4gPSBWS19OVUxMX0hBTkRMRTsKKyAgICB9CisKKyAgICBpZiAobVN1cmZhY2UpCisg
ICAgeworICAgICAgICB2a0Rlc3Ryb3lTdXJmYWNlS0hSKGluc3RhbmNlLCBtU3VyZmFjZSwgbnVs
bHB0cik7CisgICAgICAgIG1TdXJmYWNlID0gVktfTlVMTF9IQU5ETEU7CisgICAgfQorfQorCitl
Z2w6OkVycm9yIFdpbmRvd1N1cmZhY2VWazo6aW5pdGlhbGl6ZShjb25zdCBEaXNwbGF5SW1wbCAq
ZGlzcGxheUltcGwpCit7CisgICAgY29uc3QgRGlzcGxheVZrICpkaXNwbGF5VmsgPSBHZXRBczxE
aXNwbGF5Vms+KGRpc3BsYXlJbXBsKTsKKyAgICByZXR1cm4gaW5pdGlhbGl6ZUltcGwoZGlzcGxh
eVZrLT5nZXRSZW5kZXJlcigpKS50b0VHTChFR0xfQkFEX1NVUkZBQ0UpOworfQorCit2azo6RXJy
b3IgV2luZG93U3VyZmFjZVZrOjppbml0aWFsaXplSW1wbChSZW5kZXJlclZrICpyZW5kZXJlcikK
K3sKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBNYWtlIHRoaXMgcGxhdGZvcm0tc3BlY2lmaWMuCisg
ICAgVmtXaW4zMlN1cmZhY2VDcmVhdGVJbmZvS0hSIGNyZWF0ZUluZm87CisKKyAgICBjcmVhdGVJ
bmZvLnNUeXBlICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX1dJTjMyX1NVUkZBQ0VfQ1JFQVRFX0lO
Rk9fS0hSOworICAgIGNyZWF0ZUluZm8ucE5leHQgICAgID0gbnVsbHB0cjsKKyAgICBjcmVhdGVJ
bmZvLmZsYWdzICAgICA9IDA7CisgICAgY3JlYXRlSW5mby5oaW5zdGFuY2UgPSBHZXRNb2R1bGVI
YW5kbGUobnVsbHB0cik7CisgICAgY3JlYXRlSW5mby5od25kICAgICAgPSBtTmF0aXZlV2luZG93
VHlwZTsKKyAgICBBTkdMRV9WS19UUlkodmtDcmVhdGVXaW4zMlN1cmZhY2VLSFIocmVuZGVyZXIt
PmdldEluc3RhbmNlKCksICZjcmVhdGVJbmZvLCBudWxscHRyLCAmbVN1cmZhY2UpKTsKKworICAg
IHVpbnQzMl90IHByZXNlbnRRdWV1ZSA9IDA7CisgICAgQU5HTEVfVFJZX1JFU1VMVChyZW5kZXJl
ci0+c2VsZWN0UHJlc2VudFF1ZXVlRm9yU3VyZmFjZShtU3VyZmFjZSksIHByZXNlbnRRdWV1ZSk7
CisKKyAgICBjb25zdCBhdXRvICZwaHlzaWNhbERldmljZSA9IHJlbmRlcmVyLT5nZXRQaHlzaWNh
bERldmljZSgpOworCisgICAgVmtTdXJmYWNlQ2FwYWJpbGl0aWVzS0hSIHN1cmZhY2VDYXBzOwor
ICAgIEFOR0xFX1ZLX1RSWSh2a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUNhcGFiaWxpdGllc0tI
UihwaHlzaWNhbERldmljZSwgbVN1cmZhY2UsICZzdXJmYWNlQ2FwcykpOworCisgICAgLy8gQWRq
dXN0IHdpZHRoIGFuZCBoZWlnaHQgdG8gdGhlIHN3YXBjaGFpbiBpZiBuZWNlc3NhcnkuCisgICAg
dWludDMyX3Qgd2lkdGggID0gc3VyZmFjZUNhcHMuY3VycmVudEV4dGVudC53aWR0aDsKKyAgICB1
aW50MzJfdCBoZWlnaHQgPSBzdXJmYWNlQ2Fwcy5jdXJyZW50RXh0ZW50LmhlaWdodDsKKworICAg
IC8vIFRPRE8oam1hZGlsbCk6IFN1cHBvcnQgZGV2aWNlcyB3aGljaCBkb24ndCBzdXBwb3J0IGNv
cHkuIFdlIHVzZSB0aGlzIGZvciBSZWFkUGl4ZWxzLgorICAgIEFOR0xFX1ZLX0NIRUNLKChzdXJm
YWNlQ2Fwcy5zdXBwb3J0ZWRVc2FnZUZsYWdzICYgVktfSU1BR0VfVVNBR0VfVFJBTlNGRVJfU1JD
X0JJVCkgIT0gMCwKKyAgICAgICAgICAgICAgICAgICBWS19FUlJPUl9JTklUSUFMSVpBVElPTl9G
QUlMRUQpOworCisgICAgaWYgKHN1cmZhY2VDYXBzLmN1cnJlbnRFeHRlbnQud2lkdGggPT0gMHhG
RkZGRkZGRnUpCisgICAgeworICAgICAgICBBU1NFUlQoc3VyZmFjZUNhcHMuY3VycmVudEV4dGVu
dC5oZWlnaHQgPT0gMHhGRkZGRkZGRnUpOworCisgICAgICAgIFJFQ1QgcmVjdDsKKyAgICAgICAg
QU5HTEVfVktfQ0hFQ0soR2V0Q2xpZW50UmVjdChtTmF0aXZlV2luZG93VHlwZSwgJnJlY3QpID09
IFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgIFZLX0VSUk9SX0lOSVRJQUxJWkFUSU9OX0ZB
SUxFRCk7CisgICAgICAgIGlmIChtUmVuZGVyVGFyZ2V0LmV4dGVudHMud2lkdGggPT0gMCkKKyAg
ICAgICAgeworICAgICAgICAgICAgd2lkdGggPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmVjdC5y
aWdodCAtIHJlY3QubGVmdCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1SZW5kZXJUYXJnZXQu
ZXh0ZW50cy5oZWlnaHQgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgaGVpZ2h0ID0gc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHJlY3QuYm90dG9tIC0gcmVjdC50b3ApOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbVJlbmRlclRhcmdldC5leHRlbnRzLndpZHRoICA9IHN0YXRpY19jYXN0PGlu
dD4od2lkdGgpOworICAgIG1SZW5kZXJUYXJnZXQuZXh0ZW50cy5oZWlnaHQgPSBzdGF0aWNfY2Fz
dDxpbnQ+KGhlaWdodCk7CisKKyAgICB1aW50MzJfdCBwcmVzZW50TW9kZUNvdW50ID0gMDsKKyAg
ICBBTkdMRV9WS19UUlkodmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VQcmVzZW50TW9kZXNLSFIo
cGh5c2ljYWxEZXZpY2UsIG1TdXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJlc2VudE1vZGVDb3VudCwgbnVsbHB0cikp
OworICAgIEFTU0VSVChwcmVzZW50TW9kZUNvdW50ID4gMCk7CisKKyAgICBzdGQ6OnZlY3RvcjxW
a1ByZXNlbnRNb2RlS0hSPiBwcmVzZW50TW9kZXMocHJlc2VudE1vZGVDb3VudCk7CisgICAgQU5H
TEVfVktfVFJZKHZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlUHJlc2VudE1vZGVzS0hSKHBoeXNp
Y2FsRGV2aWNlLCBtU3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJnByZXNlbnRNb2RlQ291bnQsIHByZXNlbnRNb2Rlcy5k
YXRhKCkpKTsKKworICAgIC8vIFNlbGVjdCBhcHByb3ByaWF0ZSBwcmVzZW50IG1vZGUgYmFzZWQg
b24gdnN5bmMgcGFyYW1ldGVyLgorICAgIC8vIFRPRE8oam1hZGlsbCk6IE1vcmUgY29tcGxldGUg
aW1wbGVtZW50YXRpb24sIHdoaWNoIGFsbG93cyBmb3IgY2hhbmdpbmcgYW5kIG1vcmUgdmFsdWVz
LgorICAgIGNvbnN0IEVHTGludCBtaW5Td2FwSW50ZXJ2YWwgPSBtU3RhdGUuY29uZmlnLT5taW5T
d2FwSW50ZXJ2YWw7CisgICAgY29uc3QgRUdMaW50IG1heFN3YXBJbnRlcnZhbCA9IG1TdGF0ZS5j
b25maWctPm1heFN3YXBJbnRlcnZhbDsKKyAgICBBU1NFUlQobWluU3dhcEludGVydmFsID09IDAg
fHwgbWluU3dhcEludGVydmFsID09IDEpOworICAgIEFTU0VSVChtYXhTd2FwSW50ZXJ2YWwgPT0g
MCB8fCBtYXhTd2FwSW50ZXJ2YWwgPT0gMSk7CisKKyAgICBWa1ByZXNlbnRNb2RlS0hSIHN3YXBj
aGFpblByZXNlbnRNb2RlID0KKyAgICAgICAgR2V0RGVzaXJlZFByZXNlbnRNb2RlKHByZXNlbnRN
b2RlcywgbWluU3dhcEludGVydmFsLCBtYXhTd2FwSW50ZXJ2YWwpOworCisgICAgLy8gRGV0ZXJt
aW5lIG51bWJlciBvZiBzd2FwY2hhaW4gaW1hZ2VzLiBBaW0gZm9yIG9uZSBtb3JlIHRoYW4gdGhl
IG1pbmltdW0uCisgICAgdWludDMyX3QgbWluSW1hZ2VDb3VudCA9IHN1cmZhY2VDYXBzLm1pbklt
YWdlQ291bnQgKyAxOworICAgIGlmIChzdXJmYWNlQ2Fwcy5tYXhJbWFnZUNvdW50ID4gMCAmJiBt
aW5JbWFnZUNvdW50ID4gc3VyZmFjZUNhcHMubWF4SW1hZ2VDb3VudCkKKyAgICB7CisgICAgICAg
IG1pbkltYWdlQ291bnQgPSBzdXJmYWNlQ2Fwcy5tYXhJbWFnZUNvdW50OworICAgIH0KKworICAg
IC8vIERlZmF1bHQgdG8gaWRlbnRpdHkgdHJhbnNmb3JtLgorICAgIFZrU3VyZmFjZVRyYW5zZm9y
bUZsYWdCaXRzS0hSIHByZVRyYW5zZm9ybSA9IFZLX1NVUkZBQ0VfVFJBTlNGT1JNX0lERU5USVRZ
X0JJVF9LSFI7CisgICAgaWYgKChzdXJmYWNlQ2Fwcy5zdXBwb3J0ZWRUcmFuc2Zvcm1zICYgcHJl
VHJhbnNmb3JtKSA9PSAwKQorICAgIHsKKyAgICAgICAgcHJlVHJhbnNmb3JtID0gc3VyZmFjZUNh
cHMuY3VycmVudFRyYW5zZm9ybTsKKyAgICB9CisKKyAgICB1aW50MzJfdCBzdXJmYWNlRm9ybWF0
Q291bnQgPSAwOworICAgIEFOR0xFX1ZLX1RSWSh2a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUZv
cm1hdHNLSFIocGh5c2ljYWxEZXZpY2UsIG1TdXJmYWNlLCAmc3VyZmFjZUZvcm1hdENvdW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cikpOworCisgICAgc3RkOjp2ZWN0b3I8VmtTdXJmYWNlRm9ybWF0S0hSPiBzdXJmYWNlRm9y
bWF0cyhzdXJmYWNlRm9ybWF0Q291bnQpOworICAgIEFOR0xFX1ZLX1RSWSh2a0dldFBoeXNpY2Fs
RGV2aWNlU3VyZmFjZUZvcm1hdHNLSFIocGh5c2ljYWxEZXZpY2UsIG1TdXJmYWNlLCAmc3VyZmFj
ZUZvcm1hdENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3VyZmFjZUZvcm1hdHMuZGF0YSgpKSk7CisKKyAgICBtUmVuZGVyVGFyZ2V0
LmZvcm1hdCA9ICZHZXRWa0Zvcm1hdEZyb21Db25maWcoKm1TdGF0ZS5jb25maWcpOworICAgIGF1
dG8gbmF0aXZlRm9ybWF0ICAgID0gbVJlbmRlclRhcmdldC5mb3JtYXQtPm5hdGl2ZTsKKworICAg
IGlmIChzdXJmYWNlRm9ybWF0Q291bnQgPT0gMXUgJiYgc3VyZmFjZUZvcm1hdHNbMF0uZm9ybWF0
ID09IFZLX0ZPUk1BVF9VTkRFRklORUQpCisgICAgeworICAgICAgICAvLyBUaGlzIGlzIGZpbmUu
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGJvb2wgZm91bmRGb3JtYXQgPSBmYWxz
ZTsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvICZzdXJmYWNlRm9ybWF0IDogc3VyZmFjZUZvcm1h
dHMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChzdXJmYWNlRm9ybWF0LmZvcm1hdCA9PSBu
YXRpdmVGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm91bmRGb3JtYXQg
PSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisKKyAgICAgICAgQU5HTEVfVktfQ0hFQ0soZm91bmRGb3JtYXQsIFZLX0VSUk9SX0lOSVRJQUxJ
WkFUSU9OX0ZBSUxFRCk7CisgICAgfQorCisgICAgVmtTd2FwY2hhaW5DcmVhdGVJbmZvS0hSIHN3
YXBjaGFpbkluZm87CisgICAgc3dhcGNoYWluSW5mby5zVHlwZSAgICAgICAgICAgICAgPSBWS19T
VFJVQ1RVUkVfVFlQRV9TV0FQQ0hBSU5fQ1JFQVRFX0lORk9fS0hSOworICAgIHN3YXBjaGFpbklu
Zm8ucE5leHQgICAgICAgICAgICAgID0gbnVsbHB0cjsKKyAgICBzd2FwY2hhaW5JbmZvLmZsYWdz
ICAgICAgICAgICAgICA9IDA7CisgICAgc3dhcGNoYWluSW5mby5zdXJmYWNlICAgICAgICAgICAg
PSBtU3VyZmFjZTsKKyAgICBzd2FwY2hhaW5JbmZvLm1pbkltYWdlQ291bnQgICAgICA9IG1pbklt
YWdlQ291bnQ7CisgICAgc3dhcGNoYWluSW5mby5pbWFnZUZvcm1hdCAgICAgICAgPSBuYXRpdmVG
b3JtYXQ7CisgICAgc3dhcGNoYWluSW5mby5pbWFnZUNvbG9yU3BhY2UgICAgPSBWS19DT0xPUlNQ
QUNFX1NSR0JfTk9OTElORUFSX0tIUjsKKyAgICBzd2FwY2hhaW5JbmZvLmltYWdlRXh0ZW50Lndp
ZHRoICA9IHdpZHRoOworICAgIHN3YXBjaGFpbkluZm8uaW1hZ2VFeHRlbnQuaGVpZ2h0ID0gaGVp
Z2h0OworICAgIHN3YXBjaGFpbkluZm8uaW1hZ2VBcnJheUxheWVycyAgID0gMTsKKyAgICBzd2Fw
Y2hhaW5JbmZvLmltYWdlVXNhZ2UgICAgICAgICA9IChWS19JTUFHRV9VU0FHRV9DT0xPUl9BVFRB
Q0hNRU5UX0JJVCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0lNQUdFX1VT
QUdFX1RSQU5TRkVSX1NSQ19CSVQgfCBWS19JTUFHRV9VU0FHRV9UUkFOU0ZFUl9EU1RfQklUKTsK
KyAgICBzd2FwY2hhaW5JbmZvLmltYWdlU2hhcmluZ01vZGUgICAgICA9IFZLX1NIQVJJTkdfTU9E
RV9FWENMVVNJVkU7CisgICAgc3dhcGNoYWluSW5mby5xdWV1ZUZhbWlseUluZGV4Q291bnQgPSAw
OworICAgIHN3YXBjaGFpbkluZm8ucFF1ZXVlRmFtaWx5SW5kaWNlcyAgID0gbnVsbHB0cjsKKyAg
ICBzd2FwY2hhaW5JbmZvLnByZVRyYW5zZm9ybSAgICAgICAgICA9IHByZVRyYW5zZm9ybTsKKyAg
ICBzd2FwY2hhaW5JbmZvLmNvbXBvc2l0ZUFscGhhICAgICAgICA9IFZLX0NPTVBPU0lURV9BTFBI
QV9PUEFRVUVfQklUX0tIUjsKKyAgICBzd2FwY2hhaW5JbmZvLnByZXNlbnRNb2RlICAgICAgICAg
ICA9IHN3YXBjaGFpblByZXNlbnRNb2RlOworICAgIHN3YXBjaGFpbkluZm8uY2xpcHBlZCAgICAg
ICAgICAgICAgID0gVktfVFJVRTsKKyAgICBzd2FwY2hhaW5JbmZvLm9sZFN3YXBjaGFpbiAgICAg
ICAgICA9IFZLX05VTExfSEFORExFOworCisgICAgY29uc3QgYXV0byAmZGV2aWNlID0gcmVuZGVy
ZXItPmdldERldmljZSgpOworICAgIEFOR0xFX1ZLX1RSWSh2a0NyZWF0ZVN3YXBjaGFpbktIUihk
ZXZpY2UsICZzd2FwY2hhaW5JbmZvLCBudWxscHRyLCAmbVN3YXBjaGFpbikpOworCisgICAgLy8g
SW50aWFsaXplIHRoZSBzd2FwY2hhaW4gaW1hZ2Ugdmlld3MuCisgICAgdWludDMyX3QgaW1hZ2VD
b3VudCA9IDA7CisgICAgQU5HTEVfVktfVFJZKHZrR2V0U3dhcGNoYWluSW1hZ2VzS0hSKGRldmlj
ZSwgbVN3YXBjaGFpbiwgJmltYWdlQ291bnQsIG51bGxwdHIpKTsKKworICAgIHN0ZDo6dmVjdG9y
PFZrSW1hZ2U+IHN3YXBjaGFpbkltYWdlcyhpbWFnZUNvdW50KTsKKyAgICBBTkdMRV9WS19UUlko
dmtHZXRTd2FwY2hhaW5JbWFnZXNLSFIoZGV2aWNlLCBtU3dhcGNoYWluLCAmaW1hZ2VDb3VudCwg
c3dhcGNoYWluSW1hZ2VzLmRhdGEoKSkpOworCisgICAgLy8gQ29tbWFuZEJ1ZmZlciBpcyBhIHNp
bmdsZXRvbiBpbiB0aGUgUmVuZGVyZXIuCisgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRC
dWZmZXIgPSByZW5kZXJlci0+Z2V0Q29tbWFuZEJ1ZmZlcigpOworICAgIEFOR0xFX1RSWShjb21t
YW5kQnVmZmVyLT5iZWdpbihkZXZpY2UpKTsKKworICAgIFZrQ2xlYXJDb2xvclZhbHVlIHRyYW5z
cGFyZW50QmxhY2s7CisgICAgdHJhbnNwYXJlbnRCbGFjay5mbG9hdDMyWzBdID0gMC4wZjsKKyAg
ICB0cmFuc3BhcmVudEJsYWNrLmZsb2F0MzJbMV0gPSAwLjBmOworICAgIHRyYW5zcGFyZW50Qmxh
Y2suZmxvYXQzMlsyXSA9IDAuMGY7CisgICAgdHJhbnNwYXJlbnRCbGFjay5mbG9hdDMyWzNdID0g
MC4wZjsKKworICAgIG1Td2FwY2hhaW5JbWFnZXMucmVzaXplKGltYWdlQ291bnQpOworICAgIG1T
d2FwY2hhaW5JbWFnZVZpZXdzLnJlc2l6ZShpbWFnZUNvdW50KTsKKworICAgIGZvciAodWludDMy
X3QgaW1hZ2VJbmRleCA9IDA7IGltYWdlSW5kZXggPCBpbWFnZUNvdW50OyArK2ltYWdlSW5kZXgp
CisgICAgeworICAgICAgICBWa0ltYWdlIHN3YXBjaGFpbkltYWdlID0gc3dhcGNoYWluSW1hZ2Vz
W2ltYWdlSW5kZXhdOworCisgICAgICAgIFZrSW1hZ2VWaWV3Q3JlYXRlSW5mbyBpbWFnZVZpZXdJ
bmZvOworICAgICAgICBpbWFnZVZpZXdJbmZvLnNUeXBlICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9JTUFHRV9WSUVXX0NSRUFURV9JTkZPOworICAgICAgICBp
bWFnZVZpZXdJbmZvLnBOZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOwor
ICAgICAgICBpbWFnZVZpZXdJbmZvLmZsYWdzICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAw
OworICAgICAgICBpbWFnZVZpZXdJbmZvLmltYWdlICAgICAgICAgICAgICAgICAgICAgICAgICAg
PSBzd2FwY2hhaW5JbWFnZTsKKyAgICAgICAgaW1hZ2VWaWV3SW5mby52aWV3VHlwZSAgICAgICAg
ICAgICAgICAgICAgICAgID0gVktfSU1BR0VfVklFV19UWVBFXzJEOworICAgICAgICBpbWFnZVZp
ZXdJbmZvLmZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgPSBuYXRpdmVGb3JtYXQ7Cisg
ICAgICAgIGltYWdlVmlld0luZm8uY29tcG9uZW50cy5yICAgICAgICAgICAgICAgICAgICA9IFZL
X0NPTVBPTkVOVF9TV0laWkxFX1I7CisgICAgICAgIGltYWdlVmlld0luZm8uY29tcG9uZW50cy5n
ICAgICAgICAgICAgICAgICAgICA9IFZLX0NPTVBPTkVOVF9TV0laWkxFX0c7CisgICAgICAgIGlt
YWdlVmlld0luZm8uY29tcG9uZW50cy5iICAgICAgICAgICAgICAgICAgICA9IFZLX0NPTVBPTkVO
VF9TV0laWkxFX0I7CisgICAgICAgIGltYWdlVmlld0luZm8uY29tcG9uZW50cy5hICAgICAgICAg
ICAgICAgICAgICA9IFZLX0NPTVBPTkVOVF9TV0laWkxFX0E7CisgICAgICAgIGltYWdlVmlld0lu
Zm8uc3VicmVzb3VyY2VSYW5nZS5hc3BlY3RNYXNrICAgICA9IFZLX0lNQUdFX0FTUEVDVF9DT0xP
Ul9CSVQ7CisgICAgICAgIGltYWdlVmlld0luZm8uc3VicmVzb3VyY2VSYW5nZS5iYXNlTWlwTGV2
ZWwgICA9IDA7CisgICAgICAgIGltYWdlVmlld0luZm8uc3VicmVzb3VyY2VSYW5nZS5sZXZlbENv
dW50ICAgICA9IDE7CisgICAgICAgIGltYWdlVmlld0luZm8uc3VicmVzb3VyY2VSYW5nZS5iYXNl
QXJyYXlMYXllciA9IDA7CisgICAgICAgIGltYWdlVmlld0luZm8uc3VicmVzb3VyY2VSYW5nZS5s
YXllckNvdW50ICAgICA9IDE7CisKKyAgICAgICAgdms6OkltYWdlIGltYWdlKHN3YXBjaGFpbklt
YWdlKTsKKyAgICAgICAgdms6OkltYWdlVmlldyBpbWFnZVZpZXc7CisgICAgICAgIEFOR0xFX1RS
WShpbWFnZVZpZXcuaW5pdChkZXZpY2UsIGltYWdlVmlld0luZm8pKTsKKworICAgICAgICAvLyBT
ZXQgdHJhbnNmZXIgZGVzdCBsYXlvdXQsIGFuZCBjbGVhciB0aGUgaW1hZ2UgdG8gYmxhY2suCisg
ICAgICAgIGltYWdlLmNoYW5nZUxheW91dFRvcChWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklULCBW
S19JTUFHRV9MQVlPVVRfVFJBTlNGRVJfRFNUX09QVElNQUwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb21tYW5kQnVmZmVyKTsKKyAgICAgICAgY29tbWFuZEJ1ZmZlci0+Y2xlYXJT
aW5nbGVDb2xvckltYWdlKGltYWdlLCB0cmFuc3BhcmVudEJsYWNrKTsKKworICAgICAgICBtU3dh
cGNoYWluSW1hZ2VzW2ltYWdlSW5kZXhdLnJldGFpbihkZXZpY2UsIHN0ZDo6bW92ZShpbWFnZSkp
OworICAgICAgICBtU3dhcGNoYWluSW1hZ2VWaWV3c1tpbWFnZUluZGV4XS5yZXRhaW4oZGV2aWNl
LCBzdGQ6Om1vdmUoaW1hZ2VWaWV3KSk7CisgICAgfQorCisgICAgQU5HTEVfVFJZKGNvbW1hbmRC
dWZmZXItPmVuZCgpKTsKKyAgICBBTkdMRV9UUlkocmVuZGVyZXItPnN1Ym1pdEFuZEZpbmlzaENv
bW1hbmRCdWZmZXIoKmNvbW1hbmRCdWZmZXIpKTsKKworICAgIEFOR0xFX1RSWShtSW1hZ2VBdmFp
bGFibGVTZW1hcGhvcmUuaW5pdChkZXZpY2UpKTsKKyAgICBBTkdMRV9UUlkobVJlbmRlcmluZ0Nv
bXBsZXRlU2VtYXBob3JlLmluaXQoZGV2aWNlKSk7CisKKyAgICAvLyBHZXQgdGhlIGZpcnN0IGF2
YWlsYWJsZSBzd2FwY2hhaW4gaWFtZ2UuCisgICAgQU5HTEVfVFJZKG5leHRTd2FwY2hhaW5JbWFn
ZShyZW5kZXJlcikpOworCisgICAgcmV0dXJuIHZrOjpOb0Vycm9yKCk7Cit9CisKK0ZyYW1lYnVm
ZmVySW1wbCAqV2luZG93U3VyZmFjZVZrOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3Qg
Z2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKQoreworICAgIHJldHVybiBGcmFtZWJ1ZmZlclZr
OjpDcmVhdGVEZWZhdWx0RkJPKHN0YXRlLCB0aGlzKTsKK30KKworZWdsOjpFcnJvciBXaW5kb3dT
dXJmYWNlVms6OnN3YXAoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKQoreworICAgIGNv
bnN0IERpc3BsYXlWayAqZGlzcGxheVZrID0gR2V0QXM8RGlzcGxheVZrPihkaXNwbGF5SW1wbCk7
CisgICAgcmV0dXJuIHN3YXBJbXBsKGRpc3BsYXlWay0+Z2V0UmVuZGVyZXIoKSkudG9FR0woRUdM
X0JBRF9BTExPQyk7Cit9CisKK3ZrOjpFcnJvciBXaW5kb3dTdXJmYWNlVms6OnN3YXBJbXBsKFJl
bmRlcmVyVmsgKnJlbmRlcmVyKQoreworICAgIHZrOjpDb21tYW5kQnVmZmVyICpjdXJyZW50Q0Ig
PSByZW5kZXJlci0+Z2V0Q29tbWFuZEJ1ZmZlcigpOworCisgICAgYXV0byAqaW1hZ2UgPSAmbVN3
YXBjaGFpbkltYWdlc1ttQ3VycmVudFN3YXBjaGFpbkltYWdlSW5kZXhdOworCisgICAgY3VycmVu
dENCLT5iZWdpbihyZW5kZXJlci0+Z2V0RGV2aWNlKCkpOworICAgIGltYWdlLT5jaGFuZ2VMYXlv
dXRXaXRoU3RhZ2VzKFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIFZLX0lNQUdFX0xBWU9VVF9Q
UkVTRU5UX1NSQ19LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfUElQ
RUxJTkVfU1RBR0VfQUxMX0NPTU1BTkRTX0JJVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWS19QSVBFTElORV9TVEFHRV9CT1RUT01fT0ZfUElQRV9CSVQsIGN1cnJlbnRDQik7
CisgICAgY3VycmVudENCLT5lbmQoKTsKKworICAgIEFOR0xFX1RSWShyZW5kZXJlci0+c3VibWl0
Q29tbWFuZHNXaXRoU3luYygqY3VycmVudENCLCBtSW1hZ2VBdmFpbGFibGVTZW1hcGhvcmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1SZW5kZXJpbmdD
b21wbGV0ZVNlbWFwaG9yZSkpOworCisgICAgVmtQcmVzZW50SW5mb0tIUiBwcmVzZW50SW5mbzsK
KyAgICBwcmVzZW50SW5mby5zVHlwZSAgICAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9Q
UkVTRU5UX0lORk9fS0hSOworICAgIHByZXNlbnRJbmZvLnBOZXh0ICAgICAgICAgICAgICA9IG51
bGxwdHI7CisgICAgcHJlc2VudEluZm8ud2FpdFNlbWFwaG9yZUNvdW50ID0gMTsKKyAgICBwcmVz
ZW50SW5mby5wV2FpdFNlbWFwaG9yZXMgICAgPSBtUmVuZGVyaW5nQ29tcGxldGVTZW1hcGhvcmUu
cHRyKCk7CisgICAgcHJlc2VudEluZm8uc3dhcGNoYWluQ291bnQgICAgID0gMTsKKyAgICBwcmVz
ZW50SW5mby5wU3dhcGNoYWlucyAgICAgICAgPSAmbVN3YXBjaGFpbjsKKyAgICBwcmVzZW50SW5m
by5wSW1hZ2VJbmRpY2VzICAgICAgPSAmbUN1cnJlbnRTd2FwY2hhaW5JbWFnZUluZGV4OworICAg
IHByZXNlbnRJbmZvLnBSZXN1bHRzICAgICAgICAgICA9IG51bGxwdHI7CisKKyAgICBBTkdMRV9W
S19UUlkodmtRdWV1ZVByZXNlbnRLSFIocmVuZGVyZXItPmdldFF1ZXVlKCksICZwcmVzZW50SW5m
bykpOworCisgICAgLy8gR2V0IHRoZSBuZXh0IGF2YWlsYWJsZSBzd2FwY2hhaW4gaW1hZ2UuCisg
ICAgQU5HTEVfVFJZKG5leHRTd2FwY2hhaW5JbWFnZShyZW5kZXJlcikpOworCisgICAgcmV0dXJu
IHZrOjpOb0Vycm9yKCk7Cit9CisKK3ZrOjpFcnJvciBXaW5kb3dTdXJmYWNlVms6Om5leHRTd2Fw
Y2hhaW5JbWFnZShSZW5kZXJlclZrICpyZW5kZXJlcikKK3sKKyAgICBWa0RldmljZSBkZXZpY2Ug
PSByZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisKKyAgICBBTkdMRV9WS19UUlkodmtBY3F1aXJlTmV4
dEltYWdlS0hSKGRldmljZSwgbVN3YXBjaGFpbiwgc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRf
dD46Om1heCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUltYWdl
QXZhaWxhYmxlU2VtYXBob3JlLmdldEhhbmRsZSgpLCBWS19OVUxMX0hBTkRMRSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtQ3VycmVudFN3YXBjaGFpbkltYWdlSW5k
ZXgpKTsKKworICAgIC8vIFVwZGF0ZSBSZW5kZXJUYXJnZXQgcG9pbnRlcnMuCisgICAgbVJlbmRl
clRhcmdldC5pbWFnZSAgICAgPSAmbVN3YXBjaGFpbkltYWdlc1ttQ3VycmVudFN3YXBjaGFpbklt
YWdlSW5kZXhdOworICAgIG1SZW5kZXJUYXJnZXQuaW1hZ2VWaWV3ID0gJm1Td2FwY2hhaW5JbWFn
ZVZpZXdzW21DdXJyZW50U3dhcGNoYWluSW1hZ2VJbmRleF07CisKKyAgICByZXR1cm4gdms6Ok5v
RXJyb3IoKTsKK30KKworZWdsOjpFcnJvciBXaW5kb3dTdXJmYWNlVms6OnBvc3RTdWJCdWZmZXIo
RUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpCit7CisgICAg
Ly8gVE9ETyhqbWFkaWxsKQorICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30K
KworZWdsOjpFcnJvciBXaW5kb3dTdXJmYWNlVms6OnF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShF
R0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0NVUlJFTlRfU1VSRkFDRSk7Cit9CisKK2VnbDo6
RXJyb3IgV2luZG93U3VyZmFjZVZrOjpiaW5kVGV4SW1hZ2UoZ2w6OlRleHR1cmUgKnRleHR1cmUs
IEVHTGludCBidWZmZXIpCit7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwor
fQorCitlZ2w6OkVycm9yIFdpbmRvd1N1cmZhY2VWazo6cmVsZWFzZVRleEltYWdlKEVHTGludCBi
dWZmZXIpCit7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitlZ2w6
OkVycm9yIFdpbmRvd1N1cmZhY2VWazo6Z2V0U3luY1ZhbHVlcyhFR0x1aW50NjRLSFIgKiAvKnVz
dCovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMdWludDY0
S0hSICogLyptc2MqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTHVpbnQ2NEtIUiAqIC8qc2JjKi8pCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJl
dHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQUNDRVNTKTsKIH0KIAotdm9pZCBTdXJmYWNlVms6OnNl
dFN3YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpCit2b2lkIFdpbmRvd1N1cmZhY2VWazo6c2V0
U3dhcEludGVydmFsKEVHTGludCBpbnRlcnZhbCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CiB9
CiAKLUVHTGludCBTdXJmYWNlVms6OmdldFdpZHRoKCkgY29uc3QKK0VHTGludCBXaW5kb3dTdXJm
YWNlVms6OmdldFdpZHRoKCkgY29uc3QKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0
dXJuIEVHTGludCgpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFR0xpbnQ+KG1SZW5kZXJUYXJn
ZXQuZXh0ZW50cy53aWR0aCk7CiB9CiAKLUVHTGludCBTdXJmYWNlVms6OmdldEhlaWdodCgpIGNv
bnN0CitFR0xpbnQgV2luZG93U3VyZmFjZVZrOjpnZXRIZWlnaHQoKSBjb25zdAogewotICAgIFVO
SU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gRUdMaW50KCk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEVHTGludD4obVJlbmRlclRhcmdldC5leHRlbnRzLmhlaWdodCk7CiB9CiAKLUVHTGludCBT
dXJmYWNlVms6OmlzUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCgpIGNvbnN0CitFR0xpbnQgV2luZG93
U3VyZmFjZVZrOjppc1Bvc3RTdWJCdWZmZXJTdXBwb3J0ZWQoKSBjb25zdAogewotICAgIFVOSU1Q
TEVNRU5URUQoKTsKLSAgICByZXR1cm4gRUdMaW50KCk7CisgICAgLy8gVE9ETyhqbWFkaWxsKQor
ICAgIHJldHVybiBFR0xfRkFMU0U7CiB9CiAKLUVHTGludCBTdXJmYWNlVms6OmdldFN3YXBCZWhh
dmlvcigpIGNvbnN0CitFR0xpbnQgV2luZG93U3VyZmFjZVZrOjpnZXRTd2FwQmVoYXZpb3IoKSBj
b25zdAogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gRUdMaW50KCk7CisgICAg
Ly8gVE9ETyhqbWFkaWxsKQorICAgIHJldHVybiBFR0xfQlVGRkVSX0RFU1RST1lFRDsKIH0KIAot
Z2w6OkVycm9yIFN1cmZhY2VWazo6Z2V0QXR0YWNobWVudFJlbmRlclRhcmdldChjb25zdCBnbDo6
RnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJBdHRhY2htZW50UmVuZGVy
VGFyZ2V0ICoqcnRPdXQpCitnbDo6RXJyb3IgV2luZG93U3VyZmFjZVZrOjpnZXRBdHRhY2htZW50
UmVuZGVyVGFyZ2V0KAorICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdl
dCAmIC8qdGFyZ2V0Ki8sCisgICAgRnJhbWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0ICoq
cnRPdXQpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOworICAgICpydE91dCA9ICZtUmVuZGVyVGFyZ2V0OworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOworfQorCitnbDo6RXJyb3JPclJlc3VsdDx2azo6RnJhbWVidWZm
ZXIgKj4gV2luZG93U3VyZmFjZVZrOjpnZXRDdXJyZW50RnJhbWVidWZmZXIoCisgICAgVmtEZXZp
Y2UgZGV2aWNlLAorICAgIGNvbnN0IHZrOjpSZW5kZXJQYXNzICZjb21wYXRpYmxlUmVuZGVyUGFz
cykKK3sKKyAgICBpZiAoIW1Td2FwY2hhaW5GcmFtZWJ1ZmZlcnMuZW1wdHkoKSkKKyAgICB7Cisg
ICAgICAgIC8vIFZhbGlkYXRpb24gbGF5ZXJzIHNob3VsZCBkZXRlY3QgaWYgdGhlIHJlbmRlciBw
YXNzIGlzIHJlYWxseSBjb21wYXRpYmxlLgorICAgICAgICByZXR1cm4gJm1Td2FwY2hhaW5GcmFt
ZWJ1ZmZlcnNbbUN1cnJlbnRTd2FwY2hhaW5JbWFnZUluZGV4XTsKKyAgICB9CisKKyAgICBWa0Zy
YW1lYnVmZmVyQ3JlYXRlSW5mbyBmcmFtZWJ1ZmZlckluZm87CisKKyAgICAvLyBUT0RPKGptYWRp
bGwpOiBEZXB0aC9TdGVuY2lsIGF0dGFjaG1lbnRzLgorICAgIGZyYW1lYnVmZmVySW5mby5zVHlw
ZSAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9GUkFNRUJVRkZFUl9DUkVBVEVfSU5GTzsK
KyAgICBmcmFtZWJ1ZmZlckluZm8ucE5leHQgICAgICAgICAgID0gbnVsbHB0cjsKKyAgICBmcmFt
ZWJ1ZmZlckluZm8uZmxhZ3MgICAgICAgICAgID0gMDsKKyAgICBmcmFtZWJ1ZmZlckluZm8ucmVu
ZGVyUGFzcyAgICAgID0gY29tcGF0aWJsZVJlbmRlclBhc3MuZ2V0SGFuZGxlKCk7CisgICAgZnJh
bWVidWZmZXJJbmZvLmF0dGFjaG1lbnRDb3VudCA9IDF1OworICAgIGZyYW1lYnVmZmVySW5mby5w
QXR0YWNobWVudHMgICAgPSBudWxscHRyOworICAgIGZyYW1lYnVmZmVySW5mby53aWR0aCAgICAg
ICAgICAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obVJlbmRlclRhcmdldC5leHRlbnRzLndpZHRo
KTsKKyAgICBmcmFtZWJ1ZmZlckluZm8uaGVpZ2h0ICAgICAgICAgID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KG1SZW5kZXJUYXJnZXQuZXh0ZW50cy5oZWlnaHQpOworICAgIGZyYW1lYnVmZmVySW5m
by5sYXllcnMgICAgICAgICAgPSAxOworCisgICAgbVN3YXBjaGFpbkZyYW1lYnVmZmVycy5yZXNp
emUobVN3YXBjaGFpbkltYWdlVmlld3Muc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpbWFnZUlu
ZGV4ID0gMDsgaW1hZ2VJbmRleCA8IG1Td2FwY2hhaW5GcmFtZWJ1ZmZlcnMuc2l6ZSgpOyArK2lt
YWdlSW5kZXgpCisgICAgeworICAgICAgICBjb25zdCBhdXRvICZpbWFnZVZpZXcgICAgICAgID0g
bVN3YXBjaGFpbkltYWdlVmlld3NbaW1hZ2VJbmRleF07CisgICAgICAgIFZrSW1hZ2VWaWV3IGlt
YWdlVmlld0hhbmRsZSAgPSBpbWFnZVZpZXcuZ2V0SGFuZGxlKCk7CisgICAgICAgIGZyYW1lYnVm
ZmVySW5mby5wQXR0YWNobWVudHMgPSAmaW1hZ2VWaWV3SGFuZGxlOworCisgICAgICAgIHZrOjpG
cmFtZWJ1ZmZlciBmcmFtZWJ1ZmZlcjsKKyAgICAgICAgQU5HTEVfVFJZKGZyYW1lYnVmZmVyLmlu
aXQoZGV2aWNlLCBmcmFtZWJ1ZmZlckluZm8pKTsKKworICAgICAgICBtU3dhcGNoYWluRnJhbWVi
dWZmZXJzW2ltYWdlSW5kZXhdLnJldGFpbihkZXZpY2UsIHN0ZDo6bW92ZShmcmFtZWJ1ZmZlcikp
OworICAgIH0KKworICAgIC8vIFdlIHNob3VsZCBvbmx5IGluaXRpYWxpemUgZnJhbWVidWZmZXJz
IG9uIHRoZSBmaXJzdCBzd2FwLgorICAgIEFTU0VSVChtQ3VycmVudFN3YXBjaGFpbkltYWdlSW5k
ZXggPT0gMHUpOworICAgIHJldHVybiAmbVN3YXBjaGFpbkZyYW1lYnVmZmVyc1ttQ3VycmVudFN3
YXBjaGFpbkltYWdlSW5kZXhdOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU3Vy
ZmFjZVZrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL1N1cmZhY2VWay5oCmluZGV4IGI1ODA1MzA4ZmVjY2RlMDg3ZGZhZGNkZDFmNGRmMzgw
ZjkwZGQyYjkuLmZjMTA0NjFjMDkwMDZmYTMzYTRjNzFhZDQ0YzA0YThhY2IzN2Q5YzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vU3VyZmFjZVZrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9TdXJmYWNlVmsuaApAQCAtMTAsMjAgKzEwLDYxIEBACiAjaWZuZGVm
IExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9TVVJGQUNFVktfSF8KICNkZWZpbmUgTElCQU5HTEVf
UkVOREVSRVJfVlVMS0FOX1NVUkZBQ0VWS19IXwogCisjaW5jbHVkZSA8dnVsa2FuL3Z1bGthbi5o
PgorCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvU3VyZmFjZUltcGwuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyVGFyZ2V0VmsuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vcmVuZGVyZXJ2a191dGlscy5oIgogCiBuYW1lc3BhY2Ug
cngKIHsKK2NsYXNzIFJlbmRlcmVyVms7CisKK2NsYXNzIE9mZnNjcmVlblN1cmZhY2VWayA6IHB1
YmxpYyBTdXJmYWNlSW1wbAoreworICBwdWJsaWM6CisgICAgT2Zmc2NyZWVuU3VyZmFjZVZrKGNv
bnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdXJmYWNlU3RhdGUsIEVHTGludCB3aWR0aCwgRUdMaW50
IGhlaWdodCk7CisgICAgfk9mZnNjcmVlblN1cmZhY2VWaygpIG92ZXJyaWRlOworCisgICAgZWds
OjpFcnJvciBpbml0aWFsaXplKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJp
ZGU7CisgICAgRnJhbWVidWZmZXJJbXBsICpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3Qg
Z2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHN3
YXAoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVy
cm9yIHBvc3RTdWJCdWZmZXIoRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGlu
dCBoZWlnaHQpIG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgcXVlcnlTdXJmYWNlUG9pbnRlckFO
R0xFKEVHTGludCBhdHRyaWJ1dGUsIHZvaWQgKip2YWx1ZSkgb3ZlcnJpZGU7CisgICAgZWdsOjpF
cnJvciBiaW5kVGV4SW1hZ2UoZ2w6OlRleHR1cmUgKnRleHR1cmUsIEVHTGludCBidWZmZXIpIG92
ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgcmVsZWFzZVRleEltYWdlKEVHTGludCBidWZmZXIpIG92
ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgZ2V0U3luY1ZhbHVlcyhFR0x1aW50NjRLSFIgKnVzdCwg
RUdMdWludDY0S0hSICptc2MsIEVHTHVpbnQ2NEtIUiAqc2JjKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldFN3YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpIG92ZXJyaWRlOworCisgICAgLy8gd2lk
dGggYW5kIGhlaWdodCBjYW4gY2hhbmdlIHdpdGggY2xpZW50IHdpbmRvdyByZXNpemluZworICAg
IEVHTGludCBnZXRXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEVHTGludCBnZXRIZWlnaHQo
KSBjb25zdCBvdmVycmlkZTsKKworICAgIEVHTGludCBpc1Bvc3RTdWJCdWZmZXJTdXBwb3J0ZWQo
KSBjb25zdCBvdmVycmlkZTsKKyAgICBFR0xpbnQgZ2V0U3dhcEJlaGF2aW9yKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKLWNsYXNzIFN1cmZhY2VWayA6IHB1YmxpYyBTdXJmYWNlSW1wbAorICAgIGdsOjpF
cnJvciBnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQ6OlRhcmdldCAmdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudFJlbmRlclRhcmdldCAqKnJ0T3V0KSBvdmVycmlk
ZTsKKworICBwcml2YXRlOgorICAgIEVHTGludCBtV2lkdGg7CisgICAgRUdMaW50IG1IZWlnaHQ7
Cit9OworCitjbGFzcyBXaW5kb3dTdXJmYWNlVmsgOiBwdWJsaWMgU3VyZmFjZUltcGwsIHB1Ymxp
YyBSZXNvdXJjZVZrCiB7CiAgIHB1YmxpYzoKLSAgICBTdXJmYWNlVmsoY29uc3QgZWdsOjpTdXJm
YWNlU3RhdGUgJnN1cmZhY2VTdGF0ZSk7Ci0gICAgflN1cmZhY2VWaygpIG92ZXJyaWRlOworICAg
IFdpbmRvd1N1cmZhY2VWayhjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3VyZmFjZVN0YXRlLAor
ICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKKyAgICAgICAg
ICAgICAgICAgICAgRUdMaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICBFR0xpbnQgaGVp
Z2h0KTsKKyAgICB+V2luZG93U3VyZmFjZVZrKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGRlc3Ry
b3koY29uc3QgRGlzcGxheUltcGwgKmNvbnRleHRJbXBsKSBvdmVycmlkZTsKIAotICAgIGVnbDo6
RXJyb3IgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShj
b25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUltcGwpIG92ZXJyaWRlOwogICAgIEZyYW1lYnVmZmVy
SW1wbCAqY3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRl
ICZzdGF0ZSkgb3ZlcnJpZGU7Ci0gICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJpZGU7CisgICAg
ZWdsOjpFcnJvciBzd2FwKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJpZGU7
CiAgICAgZWdsOjpFcnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50
IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHF1ZXJ5U3Vy
ZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJyaWRl
OwogICAgIGVnbDo6RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xp
bnQgYnVmZmVyKSBvdmVycmlkZTsKQEAgLTQwLDYgKzgxLDI4IEBAIGNsYXNzIFN1cmZhY2VWayA6
IHB1YmxpYyBTdXJmYWNlSW1wbAogCiAgICAgZ2w6OkVycm9yIGdldEF0dGFjaG1lbnRSZW5kZXJU
YXJnZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICZ0YXJnZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJBdHRhY2ht
ZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yT3JSZXN1
bHQ8dms6OkZyYW1lYnVmZmVyICo+IGdldEN1cnJlbnRGcmFtZWJ1ZmZlcigKKyAgICAgICAgVmtE
ZXZpY2UgZGV2aWNlLAorICAgICAgICBjb25zdCB2azo6UmVuZGVyUGFzcyAmY29tcGF0aWJsZVJl
bmRlclBhc3MpOworCisgIHByaXZhdGU6CisgICAgdms6OkVycm9yIGluaXRpYWxpemVJbXBsKFJl
bmRlcmVyVmsgKnJlbmRlcmVyKTsKKyAgICB2azo6RXJyb3IgbmV4dFN3YXBjaGFpbkltYWdlKFJl
bmRlcmVyVmsgKnJlbmRlcmVyKTsKKyAgICB2azo6RXJyb3Igc3dhcEltcGwoUmVuZGVyZXJWayAq
cmVuZGVyZXIpOworCisgICAgRUdMTmF0aXZlV2luZG93VHlwZSBtTmF0aXZlV2luZG93VHlwZTsK
KyAgICBWa1N1cmZhY2VLSFIgbVN1cmZhY2U7CisgICAgVmtTd2FwY2hhaW5LSFIgbVN3YXBjaGFp
bjsKKworICAgIFJlbmRlclRhcmdldFZrIG1SZW5kZXJUYXJnZXQ7CisgICAgdms6OlNlbWFwaG9y
ZSBtSW1hZ2VBdmFpbGFibGVTZW1hcGhvcmU7CisgICAgdms6OlNlbWFwaG9yZSBtUmVuZGVyaW5n
Q29tcGxldGVTZW1hcGhvcmU7CisKKyAgICB1aW50MzJfdCBtQ3VycmVudFN3YXBjaGFpbkltYWdl
SW5kZXg7CisgICAgc3RkOjp2ZWN0b3I8dms6OkltYWdlPiBtU3dhcGNoYWluSW1hZ2VzOworICAg
IHN0ZDo6dmVjdG9yPHZrOjpJbWFnZVZpZXc+IG1Td2FwY2hhaW5JbWFnZVZpZXdzOworICAgIHN0
ZDo6dmVjdG9yPHZrOjpGcmFtZWJ1ZmZlcj4gbVN3YXBjaGFpbkZyYW1lYnVmZmVyczsKIH07CiAK
IH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UZXh0dXJlVmsuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UZXh0dXJlVmsuY3BwCmlu
ZGV4IGEyMjIwZmNhZGQ0MjhkY2QyMzE1NmFiNDcwNmUyN2YxZWE3NDVhYzEuLmQ1OTFiYTExYWZh
Yzg5NDI1MTdjOGQ2MGZkNzk2YTlhMDQ3YjhhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Rl
eHR1cmVWay5jcHAKQEAgLTIyLDcgKzIyLDggQEAgVGV4dHVyZVZrOjp+VGV4dHVyZVZrKCkKIHsK
IH0KIAotZ2w6OkVycm9yIFRleHR1cmVWazo6c2V0SW1hZ2UoR0xlbnVtIHRhcmdldCwKK2dsOjpF
cnJvciBUZXh0dXJlVms6OnNldEltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKQEAgLTM1LDcgKzM2LDggQEAgZ2w6OkVycm9yIFRleHR1
cmVWazo6c2V0SW1hZ2UoR0xlbnVtIHRhcmdldCwKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVWazo6c2V0U3ViSW1hZ2Uo
R0xlbnVtIHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlVms6OnNldFN1YkltYWdlKENvbnRleHRJ
bXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWws
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKQEAgLTQ3LDcg
KzQ5LDggQEAgZ2w6OkVycm9yIFRleHR1cmVWazo6c2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwK
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotZ2w6OkVy
cm9yIFRleHR1cmVWazo6c2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsCitnbDo6RXJy
b3IgVGV4dHVyZVZrOjpzZXRDb21wcmVzc2VkSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
RXh0ZW50cyAmc2l6ZSwKQEAgLTU5LDcgKzYyLDggQEAgZ2w6OkVycm9yIFRleHR1cmVWazo6c2V0
Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlVms6OnNldENvbXByZXNz
ZWRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAorZ2w6OkVycm9yIFRleHR1cmVWazo6c2V0Q29tcHJl
c3NlZFN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCkBAIC03
MSw3ICs3NSw4IEBAIGdsOjpFcnJvciBUZXh0dXJlVms6OnNldENvbXByZXNzZWRTdWJJbWFnZShH
TGVudW0gdGFyZ2V0LAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZVZrOjpjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwKK2ds
OjpFcnJvciBUZXh0dXJlVms6OmNvcHlJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCkBAIC04MSw3ICs4Niw4IEBA
IGdsOjpFcnJvciBUZXh0dXJlVms6OmNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LAogICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi1nbDo6RXJyb3IgVGV4dHVy
ZVZrOjpjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlVms6OmNv
cHlTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLApAQCAtOTEsNyArOTcsOCBA
QCBnbDo6RXJyb3IgVGV4dHVyZVZrOjpjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKICAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotZ2w6OkVycm9yIFRl
eHR1cmVWazo6c2V0U3RvcmFnZShHTGVudW0gdGFyZ2V0LAorZ2w6OkVycm9yIFRleHR1cmVWazo6
c2V0U3RvcmFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OkV4dGVudHMgJnNpemUpCkBAIC0xMTQsNyArMTIxLDcgQEAgZ2w6OkVycm9yIFRleHR1cmVW
azo6c2V0SW1hZ2VFeHRlcm5hbChHTGVudW0gdGFyZ2V0LAogICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZVZrOjpnZW5lcmF0
ZU1pcG1hcCgpCitnbDo6RXJyb3IgVGV4dHVyZVZrOjpnZW5lcmF0ZU1pcG1hcChDb250ZXh0SW1w
bCAqY29udGV4dEltcGwpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMTQ3LDQgKzE1NCwxNSBAQCB2b2lkIFRl
eHR1cmVWazo6c3luY1N0YXRlKGNvbnN0IGdsOjpUZXh0dXJlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0
cykKICAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKK2dsOjpFcnJvciBUZXh0dXJlVms6OnNldFN0
b3JhZ2VNdWx0aXNhbXBsZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4
dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIGZpeGVkU2FtcGxlTG9jYXRpb25zKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICByZXR1cm4gZ2w6OkludGVybmFsRXJyb3IoKSA8PCAic2V0U3RvcmFnZU11bHRpc2FtcGxl
IGlzIHVuaW1wbGVtZW50ZWQuIjsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Rl
eHR1cmVWay5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9UZXh0dXJlVmsuaAppbmRleCBkNWI5MTA2YzcxMzViZjFhZTFjZGY0MDEwY2VkYTFj
ZmEzODU1YmMyLi4yYzY4ZTE2YTdlNmY0YjNhZDI2NWFhNmU5M2IzNjU3YjUzMWZjNTk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL1RleHR1cmVWay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmgKQEAgLTIxLDcgKzIxLDggQEAgY2xhc3MgVGV4
dHVyZVZrIDogcHVibGljIFRleHR1cmVJbXBsCiAgICAgVGV4dHVyZVZrKGNvbnN0IGdsOjpUZXh0
dXJlU3RhdGUgJnN0YXRlKTsKICAgICB+VGV4dHVyZVZrKCkgb3ZlcnJpZGU7CiAKLSAgICBnbDo6
RXJyb3Igc2V0SW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICBnbDo6RXJyb3Igc2V0SW1hZ2UoQ29u
dGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCkBAIC0yOSw3ICszMCw4IEBAIGNsYXNzIFRleHR1cmVW
ayA6IHB1YmxpYyBUZXh0dXJlSW1wbAogICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVu
cGFjaywKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVy
cmlkZTsKLSAgICBnbDo6RXJyb3Igc2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICBnbDo6
RXJyb3Igc2V0U3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFy
ZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCkBAIC0zNywxNCAr
MzksMTYgQEAgY2xhc3MgVGV4dHVyZVZrIDogcHVibGljIFRleHR1cmVJbXBsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CiAK
LSAgICBnbDo6RXJyb3Igc2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgZ2w6
OkVycm9yIHNldENvbXByZXNzZWRJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlU2l6ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7Ci0g
ICAgZ2w6OkVycm9yIHNldENvbXByZXNzZWRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAorICAgIGds
OjpFcnJvciBzZXRDb21wcmVzc2VkU3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LApAQCAtNTIsMTggKzU2LDIx
IEBAIGNsYXNzIFRleHR1cmVWayA6IHB1YmxpYyBUZXh0dXJlSW1wbAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlU2l6ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CiAKLSAg
ICBnbDo6RXJyb3IgY29weUltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgZ2w6OkVycm9yIGNvcHlJ
bWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKSBvdmVycmlkZTsKLSAg
ICBnbDo6RXJyb3IgY29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgZ2w6OkVycm9yIGNv
cHlTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVz
dE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVi
dWZmZXIgKnNvdXJjZSkgb3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJyb3Igc2V0U3RvcmFnZShHTGVu
dW0gdGFyZ2V0LAorICAgIGdsOjpFcnJvciBzZXRTdG9yYWdlKENvbnRleHRJbXBsICpjb250ZXh0
SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpFeHRlbnRzICZzaXplKSBvdmVycmlkZTsKQEAgLTc0LDcgKzgxLDcgQEAgY2xhc3MgVGV4dHVy
ZVZrIDogcHVibGljIFRleHR1cmVJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWdsOjpTdHJlYW0gKnN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBlZ2w6OlN0cmVhbTo6R0xUZXh0dXJlRGVzY3JpcHRpb24gJmRlc2MpIG92ZXJyaWRlOwogCi0g
ICAgZ2w6OkVycm9yIGdlbmVyYXRlTWlwbWFwKCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGdl
bmVyYXRlTWlwbWFwKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCkgb3ZlcnJpZGU7CiAKICAgICB2
b2lkIHNldEJhc2VMZXZlbChHTHVpbnQgYmFzZUxldmVsKSBvdmVycmlkZTsKIApAQCAtODUsNiAr
OTIsMTMgQEAgY2xhc3MgVGV4dHVyZVZrIDogcHVibGljIFRleHR1cmVJbXBsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJBdHRhY2htZW50UmVuZGVy
VGFyZ2V0ICoqcnRPdXQpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6
OlRleHR1cmU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJv
ciBzZXRTdG9yYWdlTXVsdGlzYW1wbGUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlv
bnMpIG92ZXJyaWRlOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1ZlcnRleEFy
cmF5VmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9WZXJ0ZXhBcnJheVZrLmNwcAppbmRleCA5ZjYzOWI5NTE0OGU3NTMxMzdhYTQyMjc3
NWU0MTk1Mjg4ZTFiMDZjLi5lODM1YmU3ZmFhZGNkYjUzZDEyZjQzMWE2OTU0N2MwMTk3Y2YyYTk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL1ZlcnRleEFycmF5VmsuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVmVydGV4QXJyYXlWay5jcHAKQEAgLTExLDYg
KzExLDggQEAKIAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogCisjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5oIgorCiBuYW1lc3BhY2UgcngKIHsKIApAQCAt
MjIsNCArMjQsMTMgQEAgVmVydGV4QXJyYXlWazo6flZlcnRleEFycmF5VmsoKQogewogfQogCit2
b2lkIFZlcnRleEFycmF5Vms6OnN5bmNTdGF0ZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsIGNv
bnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpCit7CisgICAgQVNTRVJU
KGRpcnR5Qml0cy5hbnkoKSk7CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBVc2UgcGlwZWxpbmUg
Y2FjaGUuCisgICAgYXV0byBjb250ZXh0VmsgPSBHZXRBczxDb250ZXh0Vms+KGNvbnRleHRJbXBs
KTsKKyAgICBjb250ZXh0VmstPmludmFsaWRhdGVDdXJyZW50UGlwZWxpbmUoKTsKK30KKwogfSAg
Ly8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1ZlcnRleEFycmF5VmsuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVmVydGV4QXJyYXlWay5oCmlu
ZGV4IDkzNDBkMjc1N2E0Yzg4MmY4ZTk3MjQ0ZmVjMzcwYzdjYmFjMjQ3MjMuLjc1OTJiYzBkZmYz
NGIzN2Y2ZWM2M2EyOWI3MzBhNjhkYmU2MzhjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVmVydGV4QXJyYXlWay5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
VmVydGV4QXJyYXlWay5oCkBAIC0yMCw2ICsyMCw4IEBAIGNsYXNzIFZlcnRleEFycmF5VmsgOiBw
dWJsaWMgVmVydGV4QXJyYXlJbXBsCiAgIHB1YmxpYzoKICAgICBWZXJ0ZXhBcnJheVZrKGNvbnN0
IGdsOjpWZXJ0ZXhBcnJheVN0YXRlICZkYXRhKTsKICAgICB+VmVydGV4QXJyYXlWaygpIG92ZXJy
aWRlOworCisgICAgdm9pZCBzeW5jU3RhdGUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLCBjb25z
dCBnbDo6VmVydGV4QXJyYXk6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVycmlkZTsKIH07CiAK
IH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9mb3JtYXR1dGlsc3ZrLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vZm9ybWF0dXRpbHN2
ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTAxODA0NGJkNWRmZWZjMjU2OTJlMzYyMzhlMDc1YjY2Y2IzZmRj
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vZm9ybWF0dXRpbHN2ay5jcHAKQEAgLTAsMCArMSwzMTEgQEAKKy8v
CisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KKy8vCisvLyBmb3JtYXR1dGlsc3ZrOgorLy8gICBIZWxwZXIgZm9yIFZ1bGthbiBmb3JtYXQg
Y29kZS4KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9mb3JtYXR1dGlsc3Zr
LmgiCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9sb2FkX2Z1bmN0aW9uc190YWJsZS5o
IgorCituYW1lc3BhY2UgcngKK3sKKworbmFtZXNwYWNlIHZrCit7CisKK2NvbnN0IGFuZ2xlOjpG
b3JtYXQgJkZvcm1hdDo6Zm9ybWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYW5nbGU6OkZvcm1h
dDo6R2V0KGZvcm1hdElEKTsKK30KKworTG9hZEZ1bmN0aW9uTWFwIEZvcm1hdDo6Z2V0TG9hZEZ1
bmN0aW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIEdldExvYWRGdW5jdGlvbnNNYXAoaW50ZXJu
YWxGb3JtYXQsIGZvcm1hdElEKTsKK30KKworLy8gVE9ETyhqbWFkaWxsKTogVGhpcyBpcyB0ZW1w
b3JhcnkuIEZpZ3VyZSBvdXQgaG93IHRvIGhhbmRsZSBmb3JtYXQgY29udmVyc2lvbnMuCitWa0Zv
cm1hdCBHZXROYXRpdmVWZXJ0ZXhGb3JtYXQoZ2w6OlZlcnRleEZvcm1hdFR5cGUgdmVydGV4Rm9y
bWF0KQoreworICAgIHN3aXRjaCAodmVydGV4Rm9ybWF0KQorICAgIHsKKyAgICAgICAgY2FzZSBn
bDo6VkVSVEVYX0ZPUk1BVF9JTlZBTElEOgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpW
RVJURVhfRk9STUFUX1NCWVRFMToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAg
ICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJU
RVhfRk9STUFUX1NCWVRFMV9OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
ICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZF
UlRFWF9GT1JNQVRfU0JZVEUyOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAg
ICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRF
WF9GT1JNQVRfU0JZVEUyX05PUk06CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
ICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVS
VEVYX0ZPUk1BVF9TQllURTM6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAg
ICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVY
X0ZPUk1BVF9TQllURTNfTk9STToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAg
ICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJU
RVhfRk9STUFUX1NCWVRFNDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhf
Rk9STUFUX1NCWVRFNF9OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAg
ICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRF
WF9GT1JNQVRfVUJZVEUxOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9G
T1JNQVRfVUJZVEUxX05PUk06CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAg
ICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVY
X0ZPUk1BVF9VQllURTI6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAg
ICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZP
Uk1BVF9VQllURTJfTk9STToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhf
Rk9STUFUX1VCWVRFMzoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAg
IHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9S
TUFUX1VCWVRFM19OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9G
T1JNQVRfVUJZVEU0OgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAg
cmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JN
QVRfVUJZVEU0X05PUk06CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAg
ICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZP
Uk1BVF9TU0hPUlQxOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAg
cmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JN
QVRfU1NIT1JUMV9OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9G
T1JNQVRfU1NIT1JUMjoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAg
IHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9S
TUFUX1NTSE9SVDJfTk9STToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhf
Rk9STUFUX1NTSE9SVDM6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAg
ICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZP
Uk1BVF9TU0hPUlQzX05PUk06CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAg
ICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVY
X0ZPUk1BVF9TU0hPUlQ0OgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9G
T1JNQVRfU1NIT1JUNF9OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAg
ICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRF
WF9GT1JNQVRfVVNIT1JUMToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhf
Rk9STUFUX1VTSE9SVDFfTk9STToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAg
ICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJU
RVhfRk9STUFUX1VTSE9SVDI6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAg
ICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVY
X0ZPUk1BVF9VU0hPUlQyX05PUk06CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
ICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVS
VEVYX0ZPUk1BVF9VU0hPUlQzOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAg
ICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRF
WF9GT1JNQVRfVVNIT1JUM19OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
ICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZF
UlRFWF9GT1JNQVRfVVNIT1JUNDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAg
ICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJU
RVhfRk9STUFUX1VTSE9SVDRfTk9STToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpW
RVJURVhfRk9STUFUX1NJTlQxOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAg
ICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRF
WF9GT1JNQVRfU0lOVDFfTk9STToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAg
ICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJU
RVhfRk9STUFUX1NJTlQyOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9G
T1JNQVRfU0lOVDJfTk9STToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhf
Rk9STUFUX1NJTlQzOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAg
cmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JN
QVRfU0lOVDNfTk9STToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAg
IHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9S
TUFUX1NJTlQ0OgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgcmV0
dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRf
U0lOVDRfTk9STToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJl
dHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFU
X1VJTlQxOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgcmV0dXJu
IFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlO
VDFfTk9STToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJldHVy
biBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VJ
TlQyOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgcmV0dXJuIFZL
X0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDJf
Tk9STToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJldHVybiBW
S19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VJTlQz
OgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZP
Uk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDNfTk9S
TToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJldHVybiBWS19G
T1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VJTlQ0Ogor
ICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1B
VF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDRfTk9STToK
KyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJldHVybiBWS19GT1JN
QVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NCWVRFMV9JTlQ6
CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICByZXR1cm4gVktfRk9S
TUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TQllURTJfSU5U
OgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZP
Uk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZVEUzX0lO
VDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJldHVybiBWS19G
T1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NCWVRFNF9J
TlQ6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICByZXR1cm4gVktf
Rk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VQllURTFf
SU5UOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgcmV0dXJuIFZL
X0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUJZVEUy
X0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJldHVybiBW
S19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VCWVRF
M19JTlQ6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICByZXR1cm4g
VktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VQllU
RTRfSU5UOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgcmV0dXJu
IFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU1NI
T1JUMV9JTlQ6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICByZXR1
cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9T
U0hPUlQyX0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJl
dHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFU
X1NTSE9SVDNfSU5UOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAg
cmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JN
QVRfU1NIT1JUNF9JTlQ6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAg
ICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZP
Uk1BVF9VU0hPUlQxX0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhf
Rk9STUFUX1VTSE9SVDJfSU5UOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAg
ICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRF
WF9GT1JNQVRfVVNIT1JUM19JTlQ6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
ICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVS
VEVYX0ZPUk1BVF9VU0hPUlQ0X0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpW
RVJURVhfRk9STUFUX1NJTlQxX0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpW
RVJURVhfRk9STUFUX1NJTlQyX0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpW
RVJURVhfRk9STUFUX1NJTlQzX0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpW
RVJURVhfRk9STUFUX1NJTlQ0X0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpW
RVJURVhfRk9STUFUX1VJTlQxX0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpW
RVJURVhfRk9STUFUX1VJTlQyX0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpW
RVJURVhfRk9STUFUX1VJTlQzX0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpW
RVJURVhfRk9STUFUX1VJTlQ0X0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpW
RVJURVhfRk9STUFUX0ZJWEVEMToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAg
ICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJU
RVhfRk9STUFUX0ZJWEVEMjoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhf
Rk9STUFUX0ZJWEVEMzoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAg
IHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9S
TUFUX0ZJWEVENDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJl
dHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFU
X0hBTEYxOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgcmV0dXJu
IFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfSEFM
RjI6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICByZXR1cm4gVktf
Rk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9IQUxGMzoK
KyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJldHVybiBWS19GT1JN
QVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX0hBTEY0OgorICAg
ICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9V
TkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfRkxPQVQxOgorICAgICAg
ICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9SMzJfU0ZMT0FUOworICAgICAgICBjYXNlIGdsOjpWRVJU
RVhfRk9STUFUX0ZMT0FUMjoKKyAgICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfUjMyRzMyX1NG
TE9BVDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9GTE9BVDM6CisgICAgICAgICAg
ICByZXR1cm4gVktfRk9STUFUX1IzMkczMkIzMl9TRkxPQVQ7CisgICAgICAgIGNhc2UgZ2w6OlZF
UlRFWF9GT1JNQVRfRkxPQVQ0OgorICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9SMzJHMzJC
MzJBMzJfU0ZMT0FUOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQyMTA6Cisg
ICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICByZXR1cm4gVktfRk9STUFU
X1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VSU5UMjEwOgorICAg
ICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9V
TkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0lOVDIxMF9OT1JNOgor
ICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1B
VF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDIxMF9OT1JN
OgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZP
Uk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0lOVDIxMF9J
TlQ6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICByZXR1cm4gVktf
Rk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VSU5UMjEw
X0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJldHVybiBW
S19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgIH0K
K30KKworfSAgLy8gbmFtZXNwYWNlIHZrCisKK30gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9m
b3JtYXR1dGlsc3ZrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL2Zvcm1hdHV0aWxzdmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDBhZTgyYmEyOWU4OGFh
Y2I1NTA5MzFkYmJhYWRmNDdhMmRjMzIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9mb3JtYXR1dGlsc3ZrLmgK
QEAgLTAsMCArMSw1OSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFZrOjpGb3JtYXQ6CisvLyAgIFZ1bGthbiBp
bXBsZW1lbnRhdGlvbiBvZiBhIHN0b3JhZ2UgZm9ybWF0LgorCisjaWZuZGVmIExJQkFOR0xFX1JF
TkRFUkVSX1ZVTEtBTl9GT1JNQVRfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FO
X0ZPUk1BVF9IXworCisjaW5jbHVkZSA8dnVsa2FuL3Z1bGthbi5oPgorCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvRm9ybWF0LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvcmVu
ZGVyZXJfdXRpbHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK25hbWVzcGFjZSB2aworeworCitz
dHJ1Y3QgRm9ybWF0IGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgICAgY29uc3RleHBy
IEZvcm1hdChHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6Rm9ybWF0OjpJRCBmb3JtYXRJRCwKKyAgICAgICAgICAgICAgICAgICAgIFZrRm9ybWF0IG5h
dGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemVUZXh0dXJlRGF0YUZ1bmN0aW9u
IGluaXRGdW5jdGlvbik7CisKKyAgICBzdGF0aWMgY29uc3QgRm9ybWF0ICZHZXQoR0xlbnVtIGlu
dGVybmFsRm9ybWF0KTsKKworICAgIGNvbnN0IGFuZ2xlOjpGb3JtYXQgJmZvcm1hdCgpIGNvbnN0
OworICAgIExvYWRGdW5jdGlvbk1hcCBnZXRMb2FkRnVuY3Rpb25zKCkgY29uc3Q7CisKKyAgICBH
TGVudW0gaW50ZXJuYWxGb3JtYXQ7CisgICAgYW5nbGU6OkZvcm1hdDo6SUQgZm9ybWF0SUQ7Cisg
ICAgVmtGb3JtYXQgbmF0aXZlOworICAgIEluaXRpYWxpemVUZXh0dXJlRGF0YUZ1bmN0aW9uIGRh
dGFJbml0aWFsaXplckZ1bmN0aW9uOworfTsKKworY29uc3RleHByIEZvcm1hdDo6Rm9ybWF0KEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9y
bWF0OjpJRCBmb3JtYXRJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBWa0Zvcm1hdCBuYXRp
dmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZVRleHR1cmVEYXRhRnVuY3Rp
b24gaW5pdEZ1bmN0aW9uKQorICAgIDogaW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxGb3JtYXQpLAor
ICAgICAgZm9ybWF0SUQoZm9ybWF0SUQpLAorICAgICAgbmF0aXZlKG5hdGl2ZSksCisgICAgICBk
YXRhSW5pdGlhbGl6ZXJGdW5jdGlvbihpbml0RnVuY3Rpb24pCit7Cit9CisKKy8vIFRPRE8oam1h
ZGlsbCk6IFRoaXMgaXMgdGVtcG9yYXJ5LiBGaWd1cmUgb3V0IGhvdyB0byBoYW5kbGUgZm9ybWF0
IGNvbnZlcnNpb25zLgorVmtGb3JtYXQgR2V0TmF0aXZlVmVydGV4Rm9ybWF0KGdsOjpWZXJ0ZXhG
b3JtYXRUeXBlIHZlcnRleEZvcm1hdCk7CisKK30gIC8vIG5hbWVzcGFjZSB2aworCit9ICAvLyBu
YW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fRk9STUFU
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL2dlbl92a19mb3JtYXRfdGFibGUucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL2dlbl92a19mb3JtYXRfdGFibGUucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzhlN2M1OGJlN2IyYzk1NWQ2N2Y3NmRjN2ZkN2FkMGFjYmZjZTE5MQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vZ2VuX3ZrX2Zvcm1hdF90YWJsZS5weQpAQCAtMCwwICsxLDEyMyBAQAorIyEv
dXNyL2Jpbi9weXRob24KKyMgQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgorIworIyBnZW5fdmtfZm9ybWF0X3RhYmxlLnB5OgorIyAgQ29kZSBnZW5l
cmF0aW9uIGZvciB2ayBmb3JtYXQgbWFwCisKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGUKK2lt
cG9ydCBqc29uCitpbXBvcnQgbWF0aAoraW1wb3J0IHBwcmludAoraW1wb3J0IG9zCitpbXBvcnQg
cmUKK2ltcG9ydCBzeXMKKworc3lzLnBhdGguYXBwZW5kKCcuLicpCitpbXBvcnQgYW5nbGVfZm9y
bWF0CisKK3RlbXBsYXRlX3RhYmxlX2F1dG9nZW5fY3BwID0gIiIiLy8gR0VORVJBVEVEIEZJTEUg
LSBETyBOT1QgRURJVC4KKy8vIEdlbmVyYXRlZCBieSB7c2NyaXB0X25hbWV9IHVzaW5nIGRhdGEg
ZnJvbSB7aW5wdXRfZmlsZV9uYW1lfQorLy8KKy8vIENvcHlyaWdodCB7Y29weXJpZ2h0X3llYXJ9
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIHtvdXRfZmls
ZV9uYW1lfToKKy8vICAgUXVlcmllcyBmb3IgZnVsbCBWdWxrYW4gZm9ybWF0IGluZm9ybWF0aW9u
IGJhc2VkIG9uIEdMIGZvcm1hdC4KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9mb3JtYXR1dGlsc3ZrLmgiCisKKyNpbmNsdWRlICJpbWFnZV91dGlsL2NvcHlpbWFnZS5oIgor
I2luY2x1ZGUgImltYWdlX3V0aWwvZ2VuZXJhdGVtaXAuaCIKKyNpbmNsdWRlICJpbWFnZV91dGls
L2xvYWRpbWFnZS5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZSByeAor
e3sKKworbmFtZXNwYWNlIHZrCit7eworCisvLyBzdGF0aWMKK2NvbnN0IEZvcm1hdCAmRm9ybWF0
OjpHZXQoR0xlbnVtIGludGVybmFsRm9ybWF0KQore3sKKyAgICAvLyBjbGFuZy1mb3JtYXQgb2Zm
CisgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICB7ewore2Zvcm1hdF9jYXNlX2RhdGF9
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9fQorICAgIC8vIGNs
YW5nLWZvcm1hdCBvbgorCisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IG5vSW5mbyhHTF9OT05FLCBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwgVktfRk9STUFUX1VO
REVGSU5FRCwgbnVsbHB0cik7CisgICAgcmV0dXJuIG5vSW5mbzsKK319CisKK319ICAvLyBuYW1l
c3BhY2UgdmsKKworfX0gIC8vIG5hbWVzcGFjZSByeAorIiIiCisKK2Zvcm1hdF9lbnRyeV90ZW1w
bGF0ZSA9ICIiIntzcGFjZX17ewore3NwYWNlfSAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBp
bmZvKHtpbnRlcm5hbEZvcm1hdH0sCit7c3BhY2V9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ontmb3JtYXROYW1lfSwKK3tzcGFjZX0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7dmtGb3JtYXR9LAore3NwYWNlfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHtpbml0aWFsaXplcn0pOwore3NwYWNlfSAgICByZXR1cm4gaW5m
bzsKK3tzcGFjZX19fQorIiIiCisKK2RlZiBwYXJzZV9mb3JtYXRfY2FzZShpbnRlcm5hbF9mb3Jt
YXQsIGZvcm1hdF9uYW1lLCBuYXRpdmVfZm9ybWF0KToKKworICAgIHRhYmxlX2RhdGEgPSAiIgor
CisgICAgcGFyc2VkID0geworICAgICAgICAic3BhY2UiOiAiICAgICAgICAiLAorICAgICAgICAi
aW50ZXJuYWxGb3JtYXQiOiBpbnRlcm5hbF9mb3JtYXQsCisgICAgICAgICJmb3JtYXROYW1lIjog
Zm9ybWF0X25hbWUsCisgICAgICAgICJ2a0Zvcm1hdCI6IG5hdGl2ZV9mb3JtYXQsCisgICAgfQor
CisgICAgIyBEZXJpdmVkIHZhbHVlcy4KKyAgICBwYXJzZWRbImluaXRpYWxpemVyIl0gPSBhbmds
ZV9mb3JtYXQuZ2V0X2ludGVybmFsX2Zvcm1hdF9pbml0aWFsaXplcigKKyAgICAgICAgaW50ZXJu
YWxfZm9ybWF0LCBmb3JtYXRfbmFtZSkKKworICAgIHJldHVybiBmb3JtYXRfZW50cnlfdGVtcGxh
dGUuZm9ybWF0KCoqcGFyc2VkKQorCitkZWYgcGFyc2VfanNvbl9pbnRvX2Nhc2VzKGpzb25fbWFw
LCB2a19tYXApOgorICAgIHRhYmxlX2RhdGEgPSAnJworCisgICAgZm9yIGludGVybmFsX2Zvcm1h
dCwgZm9ybWF0X25hbWUgaW4gc29ydGVkKGpzb25fbWFwLml0ZXJpdGVtcygpKToKKworICAgICAg
ICBpZiBmb3JtYXRfbmFtZSBub3QgaW4gdmtfbWFwOgorICAgICAgICAgICAgY29udGludWUKKwor
ICAgICAgICBuYXRpdmVfZm9ybWF0ID0gdmtfbWFwW2Zvcm1hdF9uYW1lXQorCisgICAgICAgIHRh
YmxlX2RhdGEgKz0gJyAgICAgICAgY2FzZSAnICsgaW50ZXJuYWxfZm9ybWF0ICsgJzpcbicKKyAg
ICAgICAgdGFibGVfZGF0YSArPSBwYXJzZV9mb3JtYXRfY2FzZShpbnRlcm5hbF9mb3JtYXQsIGZv
cm1hdF9uYW1lLCBuYXRpdmVfZm9ybWF0KQorCisgICAgcmV0dXJuIHRhYmxlX2RhdGEKKworaW5w
dXRfZmlsZV9uYW1lID0gJ3ZrX2Zvcm1hdF9tYXAuanNvbicKK291dF9maWxlX25hbWUgPSAndmtf
Zm9ybWF0X3RhYmxlJworCitqc29uX21hcCA9IGFuZ2xlX2Zvcm1hdC5sb2FkX3dpdGhvdXRfb3Zl
cnJpZGUoKQordmtfbWFwID0gYW5nbGVfZm9ybWF0LmxvYWRfanNvbihpbnB1dF9maWxlX25hbWUp
CisKK2Zvcm1hdF9jYXNlX2RhdGEgPSBwYXJzZV9qc29uX2ludG9fY2FzZXMoanNvbl9tYXAsIHZr
X21hcCkKK291dHB1dF9jcHAgPSB0ZW1wbGF0ZV90YWJsZV9hdXRvZ2VuX2NwcC5mb3JtYXQoCisg
ICAgY29weXJpZ2h0X3llYXIgPSBkYXRlLnRvZGF5KCkueWVhciwKKyAgICBmb3JtYXRfY2FzZV9k
YXRhID0gZm9ybWF0X2Nhc2VfZGF0YSwKKyAgICBzY3JpcHRfbmFtZSA9IF9fZmlsZV9fLAorICAg
IG91dF9maWxlX25hbWUgPSBvdXRfZmlsZV9uYW1lLAorICAgIGlucHV0X2ZpbGVfbmFtZSA9IGlu
cHV0X2ZpbGVfbmFtZSkKKword2l0aCBvcGVuKG91dF9maWxlX25hbWUgKyAnX2F1dG9nZW4uY3Bw
JywgJ3d0JykgYXMgb3V0X2ZpbGU6CisgICAgb3V0X2ZpbGUud3JpdGUob3V0cHV0X2NwcCkKKyAg
ICBvdXRfZmlsZS5jbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3JlbmRlcmVydmtfdXRpbHMuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9yZW5kZXJlcnZr
X3V0aWxzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWQzZjIxOThiMWVkZWYwZWVhYWY4NTFjYjczNzUzYTdk
ODk4NGIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9yZW5kZXJlcnZrX3V0aWxzLmNwcApAQCAtMCwwICsxLDk5
NSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKy8vIHJlbmRlcmVydmtfdXRpbHM6CisvLyAgICBIZWxwZXIgZnVuY3Rp
b25zIGZvciB0aGUgVnVsa2FuIFJlbmRlcmVyLgorLy8KKworI2luY2x1ZGUgInJlbmRlcmVydmtf
dXRpbHMuaCIKKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZr
LmgiCisKK25hbWVzcGFjZSByeAoreworCituYW1lc3BhY2UKK3sKK0dMZW51bSBEZWZhdWx0R0xF
cnJvckNvZGUoVmtSZXN1bHQgcmVzdWx0KQoreworICAgIHN3aXRjaCAocmVzdWx0KQorICAgIHsK
KyAgICAgICAgY2FzZSBWS19FUlJPUl9PVVRfT0ZfSE9TVF9NRU1PUlk6CisgICAgICAgIGNhc2Ug
VktfRVJST1JfT1VUX09GX0RFVklDRV9NRU1PUlk6CisgICAgICAgIGNhc2UgVktfRVJST1JfVE9P
X01BTllfT0JKRUNUUzoKKyAgICAgICAgICAgIHJldHVybiBHTF9PVVRfT0ZfTUVNT1JZOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIEdMX0lOVkFMSURfT1BFUkFUSU9OOwor
ICAgIH0KK30KKworRUdMaW50IERlZmF1bHRFR0xFcnJvckNvZGUoVmtSZXN1bHQgcmVzdWx0KQor
eworICAgIHN3aXRjaCAocmVzdWx0KQorICAgIHsKKyAgICAgICAgY2FzZSBWS19FUlJPUl9PVVRf
T0ZfSE9TVF9NRU1PUlk6CisgICAgICAgIGNhc2UgVktfRVJST1JfT1VUX09GX0RFVklDRV9NRU1P
Ulk6CisgICAgICAgIGNhc2UgVktfRVJST1JfVE9PX01BTllfT0JKRUNUUzoKKyAgICAgICAgICAg
IHJldHVybiBFR0xfQkFEX0FMTE9DOworICAgICAgICBjYXNlIFZLX0VSUk9SX0lOSVRJQUxJWkFU
SU9OX0ZBSUxFRDoKKyAgICAgICAgICAgIHJldHVybiBFR0xfTk9UX0lOSVRJQUxJWkVEOworICAg
ICAgICBjYXNlIFZLX0VSUk9SX1NVUkZBQ0VfTE9TVF9LSFI6CisgICAgICAgIGNhc2UgVktfRVJS
T1JfREVWSUNFX0xPU1Q6CisgICAgICAgICAgICByZXR1cm4gRUdMX0NPTlRFWFRfTE9TVDsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBFR0xfQkFEX0FDQ0VTUzsKKyAgICB9
Cit9CisKKy8vIEdldHMgYWNjZXNzIGZsYWdzIHRoYXQgYXJlIGNvbW1vbiBiZXR3ZWVuIHNvdXJj
ZSBhbmQgZGVzdCBsYXlvdXRzLgorVmtBY2Nlc3NGbGFncyBHZXRCYXNpY0xheW91dEFjY2Vzc0Zs
YWdzKFZrSW1hZ2VMYXlvdXQgbGF5b3V0KQoreworICAgIHN3aXRjaCAobGF5b3V0KQorICAgIHsK
KyAgICAgICAgY2FzZSBWS19JTUFHRV9MQVlPVVRfQ09MT1JfQVRUQUNITUVOVF9PUFRJTUFMOgor
ICAgICAgICAgICAgcmV0dXJuIFZLX0FDQ0VTU19DT0xPUl9BVFRBQ0hNRU5UX1dSSVRFX0JJVDsK
KyAgICAgICAgY2FzZSBWS19JTUFHRV9MQVlPVVRfVFJBTlNGRVJfRFNUX09QVElNQUw6CisgICAg
ICAgICAgICByZXR1cm4gVktfQUNDRVNTX1RSQU5TRkVSX1dSSVRFX0JJVDsKKyAgICAgICAgY2Fz
ZSBWS19JTUFHRV9MQVlPVVRfUFJFU0VOVF9TUkNfS0hSOgorICAgICAgICAgICAgcmV0dXJuIFZL
X0FDQ0VTU19NRU1PUllfUkVBRF9CSVQ7CisgICAgICAgIGNhc2UgVktfSU1BR0VfTEFZT1VUX1RS
QU5TRkVSX1NSQ19PUFRJTUFMOgorICAgICAgICAgICAgcmV0dXJuIFZLX0FDQ0VTU19UUkFOU0ZF
Ul9SRUFEX0JJVDsKKyAgICAgICAgY2FzZSBWS19JTUFHRV9MQVlPVVRfVU5ERUZJTkVEOgorICAg
ICAgICBjYXNlIFZLX0lNQUdFX0xBWU9VVF9HRU5FUkFMOgorICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBJbnZlc3Rp
Z2F0ZSBvdGhlciBmbGFncy4KKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICB9Cit9Cit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKKy8vIE1p
cnJvcnMgc3RkX3ZhbGlkYXRpb25fc3RyIGluIGxvYWRlci5oCisvLyBUT0RPKGptYWRpbGwpOiBQ
b3NzaWJseSB3cmFwIHRoZSBsb2FkZXIgaW50byBhIHNhZmUgc291cmNlIGZpbGUuIENhbid0IGJl
IGluY2x1ZGVkIHRyaXZpYWxseS4KK2NvbnN0IGNoYXIgKmdfVmtTdGRWYWxpZGF0aW9uTGF5ZXJO
YW1lID0gIlZLX0xBWUVSX0xVTkFSR19zdGFuZGFyZF92YWxpZGF0aW9uIjsKKworY29uc3QgY2hh
ciAqVnVsa2FuUmVzdWx0U3RyaW5nKFZrUmVzdWx0IHJlc3VsdCkKK3sKKyAgICBzd2l0Y2ggKHJl
c3VsdCkKKyAgICB7CisgICAgICAgIGNhc2UgVktfU1VDQ0VTUzoKKyAgICAgICAgICAgIHJldHVy
biAiQ29tbWFuZCBzdWNjZXNzZnVsbHkgY29tcGxldGVkLiI7CisgICAgICAgIGNhc2UgVktfTk9U
X1JFQURZOgorICAgICAgICAgICAgcmV0dXJuICJBIGZlbmNlIG9yIHF1ZXJ5IGhhcyBub3QgeWV0
IGNvbXBsZXRlZC4iOworICAgICAgICBjYXNlIFZLX1RJTUVPVVQ6CisgICAgICAgICAgICByZXR1
cm4gIkEgd2FpdCBvcGVyYXRpb24gaGFzIG5vdCBjb21wbGV0ZWQgaW4gdGhlIHNwZWNpZmllZCB0
aW1lLiI7CisgICAgICAgIGNhc2UgVktfRVZFTlRfU0VUOgorICAgICAgICAgICAgcmV0dXJuICJB
biBldmVudCBpcyBzaWduYWxlZC4iOworICAgICAgICBjYXNlIFZLX0VWRU5UX1JFU0VUOgorICAg
ICAgICAgICAgcmV0dXJuICJBbiBldmVudCBpcyB1bnNpZ25hbGVkLiI7CisgICAgICAgIGNhc2Ug
VktfSU5DT01QTEVURToKKyAgICAgICAgICAgIHJldHVybiAiQSByZXR1cm4gYXJyYXkgd2FzIHRv
byBzbWFsbCBmb3IgdGhlIHJlc3VsdC4iOworICAgICAgICBjYXNlIFZLX1NVQk9QVElNQUxfS0hS
OgorICAgICAgICAgICAgcmV0dXJuICJBIHN3YXBjaGFpbiBubyBsb25nZXIgbWF0Y2hlcyB0aGUg
c3VyZmFjZSBwcm9wZXJ0aWVzIGV4YWN0bHksIGJ1dCBjYW4gc3RpbGwgYmUgIgorICAgICAgICAg
ICAgICAgICAgICJ1c2VkIHRvIHByZXNlbnQgdG8gdGhlIHN1cmZhY2Ugc3VjY2Vzc2Z1bGx5LiI7
CisgICAgICAgIGNhc2UgVktfRVJST1JfT1VUX09GX0hPU1RfTUVNT1JZOgorICAgICAgICAgICAg
cmV0dXJuICJBIGhvc3QgbWVtb3J5IGFsbG9jYXRpb24gaGFzIGZhaWxlZC4iOworICAgICAgICBj
YXNlIFZLX0VSUk9SX09VVF9PRl9ERVZJQ0VfTUVNT1JZOgorICAgICAgICAgICAgcmV0dXJuICJB
IGRldmljZSBtZW1vcnkgYWxsb2NhdGlvbiBoYXMgZmFpbGVkLiI7CisgICAgICAgIGNhc2UgVktf
RVJST1JfSU5JVElBTElaQVRJT05fRkFJTEVEOgorICAgICAgICAgICAgcmV0dXJuICJJbml0aWFs
aXphdGlvbiBvZiBhbiBvYmplY3QgY291bGQgbm90IGJlIGNvbXBsZXRlZCBmb3IgaW1wbGVtZW50
YXRpb24tc3BlY2lmaWMgIgorICAgICAgICAgICAgICAgICAgICJyZWFzb25zLiI7CisgICAgICAg
IGNhc2UgVktfRVJST1JfREVWSUNFX0xPU1Q6CisgICAgICAgICAgICByZXR1cm4gIlRoZSBsb2dp
Y2FsIG9yIHBoeXNpY2FsIGRldmljZSBoYXMgYmVlbiBsb3N0LiI7CisgICAgICAgIGNhc2UgVktf
RVJST1JfTUVNT1JZX01BUF9GQUlMRUQ6CisgICAgICAgICAgICByZXR1cm4gIk1hcHBpbmcgb2Yg
YSBtZW1vcnkgb2JqZWN0IGhhcyBmYWlsZWQuIjsKKyAgICAgICAgY2FzZSBWS19FUlJPUl9MQVlF
Ul9OT1RfUFJFU0VOVDoKKyAgICAgICAgICAgIHJldHVybiAiQSByZXF1ZXN0ZWQgbGF5ZXIgaXMg
bm90IHByZXNlbnQgb3IgY291bGQgbm90IGJlIGxvYWRlZC4iOworICAgICAgICBjYXNlIFZLX0VS
Uk9SX0VYVEVOU0lPTl9OT1RfUFJFU0VOVDoKKyAgICAgICAgICAgIHJldHVybiAiQSByZXF1ZXN0
ZWQgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQuIjsKKyAgICAgICAgY2FzZSBWS19FUlJPUl9G
RUFUVVJFX05PVF9QUkVTRU5UOgorICAgICAgICAgICAgcmV0dXJuICJBIHJlcXVlc3RlZCBmZWF0
dXJlIGlzIG5vdCBzdXBwb3J0ZWQuIjsKKyAgICAgICAgY2FzZSBWS19FUlJPUl9JTkNPTVBBVElC
TEVfRFJJVkVSOgorICAgICAgICAgICAgcmV0dXJuICJUaGUgcmVxdWVzdGVkIHZlcnNpb24gb2Yg
VnVsa2FuIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlciBvciBpcyBvdGhlcndpc2UgIgor
ICAgICAgICAgICAgICAgICAgICJpbmNvbXBhdGlibGUgZm9yIGltcGxlbWVudGF0aW9uLXNwZWNp
ZmljIHJlYXNvbnMuIjsKKyAgICAgICAgY2FzZSBWS19FUlJPUl9UT09fTUFOWV9PQkpFQ1RTOgor
ICAgICAgICAgICAgcmV0dXJuICJUb28gbWFueSBvYmplY3RzIG9mIHRoZSB0eXBlIGhhdmUgYWxy
ZWFkeSBiZWVuIGNyZWF0ZWQuIjsKKyAgICAgICAgY2FzZSBWS19FUlJPUl9GT1JNQVRfTk9UX1NV
UFBPUlRFRDoKKyAgICAgICAgICAgIHJldHVybiAiQSByZXF1ZXN0ZWQgZm9ybWF0IGlzIG5vdCBz
dXBwb3J0ZWQgb24gdGhpcyBkZXZpY2UuIjsKKyAgICAgICAgY2FzZSBWS19FUlJPUl9TVVJGQUNF
X0xPU1RfS0hSOgorICAgICAgICAgICAgcmV0dXJuICJBIHN1cmZhY2UgaXMgbm8gbG9uZ2VyIGF2
YWlsYWJsZS4iOworICAgICAgICBjYXNlIFZLX0VSUk9SX05BVElWRV9XSU5ET1dfSU5fVVNFX0tI
UjoKKyAgICAgICAgICAgIHJldHVybiAiVGhlIHJlcXVlc3RlZCB3aW5kb3cgaXMgYWxyZWFkeSBj
b25uZWN0ZWQgdG8gYSBWa1N1cmZhY2VLSFIsIG9yIHRvIHNvbWUgb3RoZXIgIgorICAgICAgICAg
ICAgICAgICAgICJub24tVnVsa2FuIEFQSS4iOworICAgICAgICBjYXNlIFZLX0VSUk9SX09VVF9P
Rl9EQVRFX0tIUjoKKyAgICAgICAgICAgIHJldHVybiAiQSBzdXJmYWNlIGhhcyBjaGFuZ2VkIGlu
IHN1Y2ggYSB3YXkgdGhhdCBpdCBpcyBubyBsb25nZXIgY29tcGF0aWJsZSB3aXRoIHRoZSAiCisg
ICAgICAgICAgICAgICAgICAgInN3YXBjaGFpbi4iOworICAgICAgICBjYXNlIFZLX0VSUk9SX0lO
Q09NUEFUSUJMRV9ESVNQTEFZX0tIUjoKKyAgICAgICAgICAgIHJldHVybiAiVGhlIGRpc3BsYXkg
dXNlZCBieSBhIHN3YXBjaGFpbiBkb2VzIG5vdCB1c2UgdGhlIHNhbWUgcHJlc2VudGFibGUgaW1h
Z2UgIgorICAgICAgICAgICAgICAgICAgICJsYXlvdXQsIG9yIGlzIGluY29tcGF0aWJsZSBpbiBh
IHdheSB0aGF0IHByZXZlbnRzIHNoYXJpbmcgYW4gaW1hZ2UuIjsKKyAgICAgICAgY2FzZSBWS19F
UlJPUl9WQUxJREFUSU9OX0ZBSUxFRF9FWFQ6CisgICAgICAgICAgICByZXR1cm4gIlRoZSB2YWxp
ZGF0aW9uIGxheWVycyBkZXRlY3RlZCBpbnZhbGlkIEFQSSB1c2FnZS4iOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgcmV0dXJuICJVbmtub3duIHZ1bGthbiBlcnJvciBjb2RlLiI7Cisg
ICAgfQorfQorCitib29sIEhhc1N0YW5kYXJkVmFsaWRhdGlvbkxheWVyKGNvbnN0IHN0ZDo6dmVj
dG9yPFZrTGF5ZXJQcm9wZXJ0aWVzPiAmbGF5ZXJQcm9wcykKK3sKKyAgICBmb3IgKGNvbnN0IGF1
dG8gJmxheWVyUHJvcCA6IGxheWVyUHJvcHMpCisgICAgeworICAgICAgICBpZiAoc3RkOjpzdHJp
bmcobGF5ZXJQcm9wLmxheWVyTmFtZSkgPT0gZ19Wa1N0ZFZhbGlkYXRpb25MYXllck5hbWUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCituYW1lc3BhY2UgdmsKK3sKKworRXJyb3I6OkVycm9yKFZr
UmVzdWx0IHJlc3VsdCkgOiBtUmVzdWx0KHJlc3VsdCksIG1GaWxlKG51bGxwdHIpLCBtTGluZSgw
KQoreworICAgIEFTU0VSVChyZXN1bHQgPT0gVktfU1VDQ0VTUyk7Cit9CisKK0Vycm9yOjpFcnJv
cihWa1Jlc3VsdCByZXN1bHQsIGNvbnN0IGNoYXIgKmZpbGUsIHVuc2lnbmVkIGludCBsaW5lKQor
ICAgIDogbVJlc3VsdChyZXN1bHQpLCBtRmlsZShmaWxlKSwgbUxpbmUobGluZSkKK3sKK30KKwor
RXJyb3I6On5FcnJvcigpCit7Cit9CisKK0Vycm9yOjpFcnJvcihjb25zdCBFcnJvciAmb3RoZXIp
ID0gZGVmYXVsdDsKK0Vycm9yICZFcnJvcjo6b3BlcmF0b3I9KGNvbnN0IEVycm9yICZvdGhlcikg
PSBkZWZhdWx0OworCitnbDo6RXJyb3IgRXJyb3I6OnRvR0woR0xlbnVtIGdsRXJyb3JDb2RlKSBj
b25zdAoreworICAgIGlmICghaXNFcnJvcigpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CisgICAgfQorCisgICAgLy8gVE9ETyhqbWFkaWxsKTogU2V0IGV4dGVuZGVkIGVy
cm9yIGNvZGUgdG8gJ3Z1bGthbiBpbnRlcm5hbCBlcnJvcicuCisgICAgY29uc3Qgc3RkOjpzdHJp
bmcgJm1lc3NhZ2UgPSB0b1N0cmluZygpOworICAgIHJldHVybiBnbDo6RXJyb3IoZ2xFcnJvckNv
ZGUsIG1lc3NhZ2UuY19zdHIoKSk7Cit9CisKK2VnbDo6RXJyb3IgRXJyb3I6OnRvRUdMKEVHTGlu
dCBlZ2xFcnJvckNvZGUpIGNvbnN0Cit7CisgICAgaWYgKCFpc0Vycm9yKCkpCisgICAgeworICAg
ICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CisgICAgfQorCisgICAgLy8gVE9E
TyhqbWFkaWxsKTogU2V0IGV4dGVuZGVkIGVycm9yIGNvZGUgdG8gJ3Z1bGthbiBpbnRlcm5hbCBl
cnJvcicuCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm1lc3NhZ2UgPSB0b1N0cmluZygpOworICAg
IHJldHVybiBlZ2w6OkVycm9yKGVnbEVycm9yQ29kZSwgbWVzc2FnZS5jX3N0cigpKTsKK30KKwor
c3RkOjpzdHJpbmcgRXJyb3I6OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICBzdGQ6OnN0cmluZ3N0
cmVhbSBlcnJvclN0cmVhbTsKKyAgICBlcnJvclN0cmVhbSA8PCAiSW50ZXJuYWwgVnVsa2FuIGVy
cm9yOiAiIDw8IFZ1bGthblJlc3VsdFN0cmluZyhtUmVzdWx0KSA8PCAiLCBpbiAiIDw8IG1GaWxl
CisgICAgICAgICAgICAgICAgPDwgIiwgbGluZSAiIDw8IG1MaW5lIDw8ICIuIjsKKyAgICByZXR1
cm4gZXJyb3JTdHJlYW0uc3RyKCk7Cit9CisKK0Vycm9yOjpvcGVyYXRvciBnbDo6RXJyb3IoKSBj
b25zdAoreworICAgIHJldHVybiB0b0dMKERlZmF1bHRHTEVycm9yQ29kZShtUmVzdWx0KSk7Cit9
CisKK0Vycm9yOjpvcGVyYXRvciBlZ2w6OkVycm9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdG9F
R0woRGVmYXVsdEVHTEVycm9yQ29kZShtUmVzdWx0KSk7Cit9CisKK2Jvb2wgRXJyb3I6OmlzRXJy
b3IoKSBjb25zdAoreworICAgIHJldHVybiAobVJlc3VsdCAhPSBWS19TVUNDRVNTKTsKK30KKwor
Ly8gQ29tbWFuZFBvb2wgaW1wbGVtZW50YXRpb24uCitDb21tYW5kUG9vbDo6Q29tbWFuZFBvb2wo
KQoreworfQorCit2b2lkIENvbW1hbmRQb29sOjpkZXN0cm95KFZrRGV2aWNlIGRldmljZSkKK3sK
KyAgICBpZiAodmFsaWQoKSkKKyAgICB7CisgICAgICAgIHZrRGVzdHJveUNvbW1hbmRQb29sKGRl
dmljZSwgbUhhbmRsZSwgbnVsbHB0cik7CisgICAgICAgIG1IYW5kbGUgPSBWS19OVUxMX0hBTkRM
RTsKKyAgICB9Cit9CisKK0Vycm9yIENvbW1hbmRQb29sOjppbml0KFZrRGV2aWNlIGRldmljZSwg
Y29uc3QgVmtDb21tYW5kUG9vbENyZWF0ZUluZm8gJmNyZWF0ZUluZm8pCit7CisgICAgQVNTRVJU
KCF2YWxpZCgpKTsKKyAgICBBTkdMRV9WS19UUlkodmtDcmVhdGVDb21tYW5kUG9vbChkZXZpY2Us
ICZjcmVhdGVJbmZvLCBudWxscHRyLCAmbUhhbmRsZSkpOworICAgIHJldHVybiBOb0Vycm9yKCk7
Cit9CisKKy8vIENvbW1hbmRCdWZmZXIgaW1wbGVtZW50YXRpb24uCitDb21tYW5kQnVmZmVyOjpD
b21tYW5kQnVmZmVyKCkgOiBtQ29tbWFuZFBvb2wobnVsbHB0cikKK3sKK30KKwordm9pZCBDb21t
YW5kQnVmZmVyOjpzZXRDb21tYW5kUG9vbChDb21tYW5kUG9vbCAqY29tbWFuZFBvb2wpCit7Cisg
ICAgQVNTRVJUKCFtQ29tbWFuZFBvb2wgJiYgY29tbWFuZFBvb2wtPnZhbGlkKCkpOworICAgIG1D
b21tYW5kUG9vbCA9IGNvbW1hbmRQb29sOworfQorCitFcnJvciBDb21tYW5kQnVmZmVyOjpiZWdp
bihWa0RldmljZSBkZXZpY2UpCit7CisgICAgaWYgKG1IYW5kbGUgPT0gVktfTlVMTF9IQU5ETEUp
CisgICAgeworICAgICAgICBWa0NvbW1hbmRCdWZmZXJBbGxvY2F0ZUluZm8gY29tbWFuZEJ1ZmZl
ckluZm87CisgICAgICAgIGNvbW1hbmRCdWZmZXJJbmZvLnNUeXBlICAgICAgICAgICAgICA9IFZL
X1NUUlVDVFVSRV9UWVBFX0NPTU1BTkRfQlVGRkVSX0FMTE9DQVRFX0lORk87CisgICAgICAgIGNv
bW1hbmRCdWZmZXJJbmZvLnBOZXh0ICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgICAgIGNv
bW1hbmRCdWZmZXJJbmZvLmNvbW1hbmRQb29sICAgICAgICA9IG1Db21tYW5kUG9vbC0+Z2V0SGFu
ZGxlKCk7CisgICAgICAgIGNvbW1hbmRCdWZmZXJJbmZvLmxldmVsICAgICAgICAgICAgICA9IFZL
X0NPTU1BTkRfQlVGRkVSX0xFVkVMX1BSSU1BUlk7CisgICAgICAgIGNvbW1hbmRCdWZmZXJJbmZv
LmNvbW1hbmRCdWZmZXJDb3VudCA9IDE7CisKKyAgICAgICAgQU5HTEVfVktfVFJZKHZrQWxsb2Nh
dGVDb21tYW5kQnVmZmVycyhkZXZpY2UsICZjb21tYW5kQnVmZmVySW5mbywgJm1IYW5kbGUpKTsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmVzZXQoKTsKKyAgICB9CisKKyAgICBW
a0NvbW1hbmRCdWZmZXJCZWdpbkluZm8gYmVnaW5JbmZvOworICAgIGJlZ2luSW5mby5zVHlwZSA9
IFZLX1NUUlVDVFVSRV9UWVBFX0NPTU1BTkRfQlVGRkVSX0JFR0lOX0lORk87CisgICAgYmVnaW5J
bmZvLnBOZXh0ID0gbnVsbHB0cjsKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBVc2Ugb3RoZXIgZmxh
Z3M/CisgICAgYmVnaW5JbmZvLmZsYWdzICAgICAgICAgICAgPSAwOworICAgIGJlZ2luSW5mby5w
SW5oZXJpdGFuY2VJbmZvID0gbnVsbHB0cjsKKworICAgIEFOR0xFX1ZLX1RSWSh2a0JlZ2luQ29t
bWFuZEJ1ZmZlcihtSGFuZGxlLCAmYmVnaW5JbmZvKSk7CisKKyAgICByZXR1cm4gTm9FcnJvcigp
OworfQorCitFcnJvciBDb21tYW5kQnVmZmVyOjplbmQoKQoreworICAgIEFTU0VSVCh2YWxpZCgp
KTsKKyAgICBBTkdMRV9WS19UUlkodmtFbmRDb21tYW5kQnVmZmVyKG1IYW5kbGUpKTsKKyAgICBy
ZXR1cm4gTm9FcnJvcigpOworfQorCitFcnJvciBDb21tYW5kQnVmZmVyOjpyZXNldCgpCit7Cisg
ICAgQVNTRVJUKHZhbGlkKCkpOworICAgIEFOR0xFX1ZLX1RSWSh2a1Jlc2V0Q29tbWFuZEJ1ZmZl
cihtSGFuZGxlLCAwKSk7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKK30KKwordm9pZCBDb21tYW5k
QnVmZmVyOjpzaW5nbGVJbWFnZUJhcnJpZXIoVmtQaXBlbGluZVN0YWdlRmxhZ3Mgc3JjU3RhZ2VN
YXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtQaXBlbGluZVN0
YWdlRmxhZ3MgZHN0U3RhZ2VNYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmtEZXBlbmRlbmN5RmxhZ3MgZGVwZW5kZW5jeUZsYWdzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtJbWFnZU1lbW9yeUJhcnJpZXIgJmltYWdl
TWVtb3J5QmFycmllcikKK3sKKyAgICBBU1NFUlQodmFsaWQoKSk7CisgICAgdmtDbWRQaXBlbGlu
ZUJhcnJpZXIobUhhbmRsZSwgc3JjU3RhZ2VNYXNrLCBkc3RTdGFnZU1hc2ssIGRlcGVuZGVuY3lG
bGFncywgMCwgbnVsbHB0ciwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCAx
LCAmaW1hZ2VNZW1vcnlCYXJyaWVyKTsKK30KKwordm9pZCBDb21tYW5kQnVmZmVyOjpkZXN0cm95
KFZrRGV2aWNlIGRldmljZSkKK3sKKyAgICBpZiAodmFsaWQoKSkKKyAgICB7CisgICAgICAgIEFT
U0VSVChtQ29tbWFuZFBvb2wgJiYgbUNvbW1hbmRQb29sLT52YWxpZCgpKTsKKyAgICAgICAgdmtG
cmVlQ29tbWFuZEJ1ZmZlcnMoZGV2aWNlLCBtQ29tbWFuZFBvb2wtPmdldEhhbmRsZSgpLCAxLCAm
bUhhbmRsZSk7CisgICAgICAgIG1IYW5kbGUgPSBWS19OVUxMX0hBTkRMRTsKKyAgICB9Cit9CisK
K3ZvaWQgQ29tbWFuZEJ1ZmZlcjo6Y2xlYXJTaW5nbGVDb2xvckltYWdlKGNvbnN0IHZrOjpJbWFn
ZSAmaW1hZ2UsIGNvbnN0IFZrQ2xlYXJDb2xvclZhbHVlICZjb2xvcikKK3sKKyAgICBBU1NFUlQo
dmFsaWQoKSk7CisgICAgQVNTRVJUKGltYWdlLmdldEN1cnJlbnRMYXlvdXQoKSA9PSBWS19JTUFH
RV9MQVlPVVRfR0VORVJBTCB8fAorICAgICAgICAgICBpbWFnZS5nZXRDdXJyZW50TGF5b3V0KCkg
PT0gVktfSU1BR0VfTEFZT1VUX1RSQU5TRkVSX0RTVF9PUFRJTUFMKTsKKworICAgIFZrSW1hZ2VT
dWJyZXNvdXJjZVJhbmdlIHJhbmdlOworICAgIHJhbmdlLmFzcGVjdE1hc2sgICAgID0gVktfSU1B
R0VfQVNQRUNUX0NPTE9SX0JJVDsKKyAgICByYW5nZS5iYXNlTWlwTGV2ZWwgICA9IDA7CisgICAg
cmFuZ2UubGV2ZWxDb3VudCAgICAgPSAxOworICAgIHJhbmdlLmJhc2VBcnJheUxheWVyID0gMDsK
KyAgICByYW5nZS5sYXllckNvdW50ICAgICA9IDE7CisKKyAgICB2a0NtZENsZWFyQ29sb3JJbWFn
ZShtSGFuZGxlLCBpbWFnZS5nZXRIYW5kbGUoKSwgaW1hZ2UuZ2V0Q3VycmVudExheW91dCgpLCAm
Y29sb3IsIDEsICZyYW5nZSk7Cit9CisKK3ZvaWQgQ29tbWFuZEJ1ZmZlcjo6Y29weVNpbmdsZUlt
YWdlKGNvbnN0IHZrOjpJbWFnZSAmc3JjSW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB2azo6SW1hZ2UgJmRlc3RJbWFnZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmNvcHlSZWdpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWa0ltYWdlQXNwZWN0RmxhZ3MgYXNwZWN0TWFzaykK
K3sKKyAgICBBU1NFUlQodmFsaWQoKSk7CisgICAgQVNTRVJUKHNyY0ltYWdlLmdldEN1cnJlbnRM
YXlvdXQoKSA9PSBWS19JTUFHRV9MQVlPVVRfVFJBTlNGRVJfU1JDX09QVElNQUwgfHwKKyAgICAg
ICAgICAgc3JjSW1hZ2UuZ2V0Q3VycmVudExheW91dCgpID09IFZLX0lNQUdFX0xBWU9VVF9HRU5F
UkFMKTsKKyAgICBBU1NFUlQoZGVzdEltYWdlLmdldEN1cnJlbnRMYXlvdXQoKSA9PSBWS19JTUFH
RV9MQVlPVVRfVFJBTlNGRVJfRFNUX09QVElNQUwgfHwKKyAgICAgICAgICAgZGVzdEltYWdlLmdl
dEN1cnJlbnRMYXlvdXQoKSA9PSBWS19JTUFHRV9MQVlPVVRfR0VORVJBTCk7CisKKyAgICBWa0lt
YWdlQ29weSByZWdpb247CisgICAgcmVnaW9uLnNyY1N1YnJlc291cmNlLmFzcGVjdE1hc2sgICAg
ID0gYXNwZWN0TWFzazsKKyAgICByZWdpb24uc3JjU3VicmVzb3VyY2UubWlwTGV2ZWwgICAgICAg
PSAwOworICAgIHJlZ2lvbi5zcmNTdWJyZXNvdXJjZS5iYXNlQXJyYXlMYXllciA9IDA7CisgICAg
cmVnaW9uLnNyY1N1YnJlc291cmNlLmxheWVyQ291bnQgICAgID0gMTsKKyAgICByZWdpb24uc3Jj
T2Zmc2V0LnggICAgICAgICAgICAgICAgICAgPSBjb3B5UmVnaW9uLng7CisgICAgcmVnaW9uLnNy
Y09mZnNldC55ICAgICAgICAgICAgICAgICAgID0gY29weVJlZ2lvbi55OworICAgIHJlZ2lvbi5z
cmNPZmZzZXQueiAgICAgICAgICAgICAgICAgICA9IGNvcHlSZWdpb24uejsKKyAgICByZWdpb24u
ZHN0U3VicmVzb3VyY2UuYXNwZWN0TWFzayAgICAgPSBhc3BlY3RNYXNrOworICAgIHJlZ2lvbi5k
c3RTdWJyZXNvdXJjZS5taXBMZXZlbCAgICAgICA9IDA7CisgICAgcmVnaW9uLmRzdFN1YnJlc291
cmNlLmJhc2VBcnJheUxheWVyID0gMDsKKyAgICByZWdpb24uZHN0U3VicmVzb3VyY2UubGF5ZXJD
b3VudCAgICAgPSAxOworICAgIHJlZ2lvbi5kc3RPZmZzZXQueCAgICAgICAgICAgICAgICAgICA9
IGNvcHlSZWdpb24ueDsKKyAgICByZWdpb24uZHN0T2Zmc2V0LnkgICAgICAgICAgICAgICAgICAg
PSBjb3B5UmVnaW9uLnk7CisgICAgcmVnaW9uLmRzdE9mZnNldC56ICAgICAgICAgICAgICAgICAg
ID0gY29weVJlZ2lvbi56OworICAgIHJlZ2lvbi5leHRlbnQud2lkdGggICAgICAgICAgICAgICAg
ICA9IGNvcHlSZWdpb24ud2lkdGg7CisgICAgcmVnaW9uLmV4dGVudC5oZWlnaHQgICAgICAgICAg
ICAgICAgID0gY29weVJlZ2lvbi5oZWlnaHQ7CisgICAgcmVnaW9uLmV4dGVudC5kZXB0aCAgICAg
ICAgICAgICAgICAgID0gY29weVJlZ2lvbi5kZXB0aDsKKworICAgIHZrQ21kQ29weUltYWdlKG1I
YW5kbGUsIHNyY0ltYWdlLmdldEhhbmRsZSgpLCBzcmNJbWFnZS5nZXRDdXJyZW50TGF5b3V0KCks
CisgICAgICAgICAgICAgICAgICAgZGVzdEltYWdlLmdldEhhbmRsZSgpLCBkZXN0SW1hZ2UuZ2V0
Q3VycmVudExheW91dCgpLCAxLCAmcmVnaW9uKTsKK30KKwordm9pZCBDb21tYW5kQnVmZmVyOjpi
ZWdpblJlbmRlclBhc3MoY29uc3QgUmVuZGVyUGFzcyAmcmVuZGVyUGFzcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyICZmcmFtZWJ1ZmZlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JnJlbmRlckFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnZlY3RvcjxWa0NsZWFyVmFsdWU+ICZjbGVhclZhbHVlcykKK3sKKyAgICBBU1NFUlQoIWNs
ZWFyVmFsdWVzLmVtcHR5KCkpOworICAgIEFTU0VSVChtSGFuZGxlICE9IFZLX05VTExfSEFORExF
KTsKKworICAgIFZrUmVuZGVyUGFzc0JlZ2luSW5mbyBiZWdpbkluZm87CisgICAgYmVnaW5JbmZv
LnNUeXBlICAgICAgICAgICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX1JFTkRFUl9QQVNT
X0JFR0lOX0lORk87CisgICAgYmVnaW5JbmZvLnBOZXh0ICAgICAgICAgICAgICAgICAgICA9IG51
bGxwdHI7CisgICAgYmVnaW5JbmZvLnJlbmRlclBhc3MgICAgICAgICAgICAgICA9IHJlbmRlclBh
c3MuZ2V0SGFuZGxlKCk7CisgICAgYmVnaW5JbmZvLmZyYW1lYnVmZmVyICAgICAgICAgICAgICA9
IGZyYW1lYnVmZmVyLmdldEhhbmRsZSgpOworICAgIGJlZ2luSW5mby5yZW5kZXJBcmVhLm9mZnNl
dC54ICAgICAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmVuZGVyQXJlYS54KTsKKyAgICBiZWdp
bkluZm8ucmVuZGVyQXJlYS5vZmZzZXQueSAgICAgID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJl
bmRlckFyZWEueSk7CisgICAgYmVnaW5JbmZvLnJlbmRlckFyZWEuZXh0ZW50LndpZHRoICA9IHN0
YXRpY19jYXN0PHVpbnQzMl90PihyZW5kZXJBcmVhLndpZHRoKTsKKyAgICBiZWdpbkluZm8ucmVu
ZGVyQXJlYS5leHRlbnQuaGVpZ2h0ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlbmRlckFyZWEu
aGVpZ2h0KTsKKyAgICBiZWdpbkluZm8uY2xlYXJWYWx1ZUNvdW50ICAgICAgICAgID0gc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KGNsZWFyVmFsdWVzLnNpemUoKSk7CisgICAgYmVnaW5JbmZvLnBDbGVh
clZhbHVlcyAgICAgICAgICAgICA9IGNsZWFyVmFsdWVzLmRhdGEoKTsKKworICAgIHZrQ21kQmVn
aW5SZW5kZXJQYXNzKG1IYW5kbGUsICZiZWdpbkluZm8sIFZLX1NVQlBBU1NfQ09OVEVOVFNfSU5M
SU5FKTsKK30KKwordm9pZCBDb21tYW5kQnVmZmVyOjplbmRSZW5kZXJQYXNzKCkKK3sKKyAgICBB
U1NFUlQobUhhbmRsZSAhPSBWS19OVUxMX0hBTkRMRSk7CisgICAgdmtDbWRFbmRSZW5kZXJQYXNz
KG1IYW5kbGUpOworfQorCit2b2lkIENvbW1hbmRCdWZmZXI6OmRyYXcodWludDMyX3QgdmVydGV4
Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5zdGFuY2VDb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmaXJzdFZlcnRleCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBmaXJzdEluc3RhbmNlKQoreworICAgIEFTU0VSVCh2
YWxpZCgpKTsKKyAgICB2a0NtZERyYXcobUhhbmRsZSwgdmVydGV4Q291bnQsIGluc3RhbmNlQ291
bnQsIGZpcnN0VmVydGV4LCBmaXJzdEluc3RhbmNlKTsKK30KKwordm9pZCBDb21tYW5kQnVmZmVy
OjpiaW5kUGlwZWxpbmUoVmtQaXBlbGluZUJpbmRQb2ludCBwaXBlbGluZUJpbmRQb2ludCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZrOjpQaXBlbGluZSAmcGlwZWxp
bmUpCit7CisgICAgQVNTRVJUKHZhbGlkKCkgJiYgcGlwZWxpbmUudmFsaWQoKSk7CisgICAgdmtD
bWRCaW5kUGlwZWxpbmUobUhhbmRsZSwgcGlwZWxpbmVCaW5kUG9pbnQsIHBpcGVsaW5lLmdldEhh
bmRsZSgpKTsKK30KKwordm9pZCBDb21tYW5kQnVmZmVyOjpiaW5kVmVydGV4QnVmZmVycyh1aW50
MzJfdCBmaXJzdEJpbmRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPFZrQnVmZmVyPiAmYnVmZmVycywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmtEZXZpY2VTaXplPiAmb2Zm
c2V0cykKK3sKKyAgICBBU1NFUlQodmFsaWQoKSAmJiBidWZmZXJzLnNpemUoKSA9PSBvZmZzZXRz
LnNpemUoKSk7CisgICAgdmtDbWRCaW5kVmVydGV4QnVmZmVycyhtSGFuZGxlLCBmaXJzdEJpbmRp
bmcsIHN0YXRpY19jYXN0PHVpbnQzMl90PihidWZmZXJzLnNpemUoKSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBidWZmZXJzLmRhdGEoKSwgb2Zmc2V0cy5kYXRhKCkpOworfQorCisvLyBJ
bWFnZSBpbXBsZW1lbnRhdGlvbi4KK0ltYWdlOjpJbWFnZSgpIDogbUN1cnJlbnRMYXlvdXQoVktf
SU1BR0VfTEFZT1VUX1VOREVGSU5FRCkKK3sKK30KKworSW1hZ2U6OkltYWdlKFZrSW1hZ2UgaW1h
Z2UpIDogV3JhcHBlZE9iamVjdChpbWFnZSksIG1DdXJyZW50TGF5b3V0KFZLX0lNQUdFX0xBWU9V
VF9VTkRFRklORUQpCit7Cit9CisKK3ZvaWQgSW1hZ2U6OnJldGFpbihWa0RldmljZSBkZXZpY2Us
IEltYWdlICYmb3RoZXIpCit7CisgICAgV3JhcHBlZE9iamVjdDo6cmV0YWluKGRldmljZSwgc3Rk
Ojptb3ZlKG90aGVyKSk7CisgICAgc3RkOjpzd2FwKG1DdXJyZW50TGF5b3V0LCBvdGhlci5tQ3Vy
cmVudExheW91dCk7Cit9CisKK3ZvaWQgSW1hZ2U6OnJlc2V0KCkKK3sKKyAgICBtSGFuZGxlID0g
VktfTlVMTF9IQU5ETEU7Cit9CisKK3ZvaWQgSW1hZ2U6OmRlc3Ryb3koVmtEZXZpY2UgZGV2aWNl
KQoreworICAgIGlmICh2YWxpZCgpKQorICAgIHsKKyAgICAgICAgdmtEZXN0cm95SW1hZ2UoZGV2
aWNlLCBtSGFuZGxlLCBudWxscHRyKTsKKyAgICAgICAgbUhhbmRsZSA9IFZLX05VTExfSEFORExF
OworICAgIH0KK30KKworRXJyb3IgSW1hZ2U6OmluaXQoVmtEZXZpY2UgZGV2aWNlLCBjb25zdCBW
a0ltYWdlQ3JlYXRlSW5mbyAmY3JlYXRlSW5mbykKK3sKKyAgICBBU1NFUlQoIXZhbGlkKCkpOwor
ICAgIEFOR0xFX1ZLX1RSWSh2a0NyZWF0ZUltYWdlKGRldmljZSwgJmNyZWF0ZUluZm8sIG51bGxw
dHIsICZtSGFuZGxlKSk7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKK30KKwordm9pZCBJbWFnZTo6
Y2hhbmdlTGF5b3V0VG9wKFZrSW1hZ2VBc3BlY3RGbGFncyBhc3BlY3RNYXNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZrSW1hZ2VMYXlvdXQgbmV3TGF5b3V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIpCit7CisgICAgaWYg
KG5ld0xheW91dCA9PSBtQ3VycmVudExheW91dCkKKyAgICB7CisgICAgICAgIC8vIE5vLW9wLgor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2hhbmdlTGF5b3V0V2l0aFN0YWdlcyhhc3Bl
Y3RNYXNrLCBuZXdMYXlvdXQsIFZLX1BJUEVMSU5FX1NUQUdFX1RPUF9PRl9QSVBFX0JJVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZLX1BJUEVMSU5FX1NUQUdFX1RPUF9PRl9QSVBFX0JJ
VCwgY29tbWFuZEJ1ZmZlcik7Cit9CisKK3ZvaWQgSW1hZ2U6OmNoYW5nZUxheW91dFdpdGhTdGFn
ZXMoVmtJbWFnZUFzcGVjdEZsYWdzIGFzcGVjdE1hc2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZrSW1hZ2VMYXlvdXQgbmV3TGF5b3V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWa1BpcGVsaW5lU3RhZ2VGbGFncyBzcmNTdGFnZU1hc2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrUGlwZWxpbmVTdGFnZUZsYWdzIGRzdFN0
YWdlTWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEJ1ZmZl
ciAqY29tbWFuZEJ1ZmZlcikKK3sKKyAgICBWa0ltYWdlTWVtb3J5QmFycmllciBpbWFnZU1lbW9y
eUJhcnJpZXI7CisgICAgaW1hZ2VNZW1vcnlCYXJyaWVyLnNUeXBlICAgICAgICAgICAgICAgPSBW
S19TVFJVQ1RVUkVfVFlQRV9JTUFHRV9NRU1PUllfQkFSUklFUjsKKyAgICBpbWFnZU1lbW9yeUJh
cnJpZXIucE5leHQgICAgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgaW1hZ2VNZW1vcnlCYXJy
aWVyLnNyY0FjY2Vzc01hc2sgICAgICAgPSAwOworICAgIGltYWdlTWVtb3J5QmFycmllci5kc3RB
Y2Nlc3NNYXNrICAgICAgID0gMDsKKyAgICBpbWFnZU1lbW9yeUJhcnJpZXIub2xkTGF5b3V0ICAg
ICAgICAgICA9IG1DdXJyZW50TGF5b3V0OworICAgIGltYWdlTWVtb3J5QmFycmllci5uZXdMYXlv
dXQgICAgICAgICAgID0gbmV3TGF5b3V0OworICAgIGltYWdlTWVtb3J5QmFycmllci5zcmNRdWV1
ZUZhbWlseUluZGV4ID0gVktfUVVFVUVfRkFNSUxZX0lHTk9SRUQ7CisgICAgaW1hZ2VNZW1vcnlC
YXJyaWVyLmRzdFF1ZXVlRmFtaWx5SW5kZXggPSBWS19RVUVVRV9GQU1JTFlfSUdOT1JFRDsKKyAg
ICBpbWFnZU1lbW9yeUJhcnJpZXIuaW1hZ2UgICAgICAgICAgICAgICA9IG1IYW5kbGU7CisKKyAg
ICAvLyBUT0RPKGptYWRpbGwpOiBJcyB0aGlzIG5lZWRlZCBmb3IgbWlwcGVkL2xheWVyIGltYWdl
cz8KKyAgICBpbWFnZU1lbW9yeUJhcnJpZXIuc3VicmVzb3VyY2VSYW5nZS5hc3BlY3RNYXNrICAg
ICA9IGFzcGVjdE1hc2s7CisgICAgaW1hZ2VNZW1vcnlCYXJyaWVyLnN1YnJlc291cmNlUmFuZ2Uu
YmFzZU1pcExldmVsICAgPSAwOworICAgIGltYWdlTWVtb3J5QmFycmllci5zdWJyZXNvdXJjZVJh
bmdlLmxldmVsQ291bnQgICAgID0gMTsKKyAgICBpbWFnZU1lbW9yeUJhcnJpZXIuc3VicmVzb3Vy
Y2VSYW5nZS5iYXNlQXJyYXlMYXllciA9IDA7CisgICAgaW1hZ2VNZW1vcnlCYXJyaWVyLnN1YnJl
c291cmNlUmFuZ2UubGF5ZXJDb3VudCAgICAgPSAxOworCisgICAgLy8gVE9ETyhqbWFkaWxsKTog
VGVzdCBhbGwgdGhlIHBlcm11dGF0aW9ucyBvZiB0aGUgYWNjZXNzIGZsYWdzLgorICAgIGltYWdl
TWVtb3J5QmFycmllci5zcmNBY2Nlc3NNYXNrID0gR2V0QmFzaWNMYXlvdXRBY2Nlc3NGbGFncyht
Q3VycmVudExheW91dCk7CisKKyAgICBpZiAobUN1cnJlbnRMYXlvdXQgPT0gVktfSU1BR0VfTEFZ
T1VUX1BSRUlOSVRJQUxJWkVEKQorICAgIHsKKyAgICAgICAgaW1hZ2VNZW1vcnlCYXJyaWVyLnNy
Y0FjY2Vzc01hc2sgfD0gVktfQUNDRVNTX0hPU1RfV1JJVEVfQklUOworICAgIH0KKworICAgIGlt
YWdlTWVtb3J5QmFycmllci5kc3RBY2Nlc3NNYXNrID0gR2V0QmFzaWNMYXlvdXRBY2Nlc3NGbGFn
cyhuZXdMYXlvdXQpOworCisgICAgaWYgKG5ld0xheW91dCA9PSBWS19JTUFHRV9MQVlPVVRfU0hB
REVSX1JFQURfT05MWV9PUFRJTUFMKQorICAgIHsKKyAgICAgICAgaW1hZ2VNZW1vcnlCYXJyaWVy
LnNyY0FjY2Vzc01hc2sgfD0KKyAgICAgICAgICAgIChWS19BQ0NFU1NfSE9TVF9XUklURV9CSVQg
fCBWS19BQ0NFU1NfVFJBTlNGRVJfV1JJVEVfQklUKTsKKyAgICAgICAgaW1hZ2VNZW1vcnlCYXJy
aWVyLmRzdEFjY2Vzc01hc2sgfD0gVktfQUNDRVNTX1NIQURFUl9SRUFEX0JJVDsKKyAgICB9CisK
KyAgICBpZiAobmV3TGF5b3V0ID09IFZLX0lNQUdFX0xBWU9VVF9ERVBUSF9TVEVOQ0lMX0FUVEFD
SE1FTlRfT1BUSU1BTCkKKyAgICB7CisgICAgICAgIGltYWdlTWVtb3J5QmFycmllci5kc3RBY2Nl
c3NNYXNrIHw9IFZLX0FDQ0VTU19ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlRfV1JJVEVfQklUOwor
ICAgIH0KKworICAgIGNvbW1hbmRCdWZmZXItPnNpbmdsZUltYWdlQmFycmllcihzcmNTdGFnZU1h
c2ssIGRzdFN0YWdlTWFzaywgMCwgaW1hZ2VNZW1vcnlCYXJyaWVyKTsKKworICAgIG1DdXJyZW50
TGF5b3V0ID0gbmV3TGF5b3V0OworfQorCit2b2lkIEltYWdlOjpnZXRNZW1vcnlSZXF1aXJlbWVu
dHMoVmtEZXZpY2UgZGV2aWNlLCBWa01lbW9yeVJlcXVpcmVtZW50cyAqcmVxdWlyZW1lbnRzT3V0
KSBjb25zdAoreworICAgIEFTU0VSVCh2YWxpZCgpKTsKKyAgICB2a0dldEltYWdlTWVtb3J5UmVx
dWlyZW1lbnRzKGRldmljZSwgbUhhbmRsZSwgcmVxdWlyZW1lbnRzT3V0KTsKK30KKworRXJyb3Ig
SW1hZ2U6OmJpbmRNZW1vcnkoVmtEZXZpY2UgZGV2aWNlLCBjb25zdCB2azo6RGV2aWNlTWVtb3J5
ICZkZXZpY2VNZW1vcnkpCit7CisgICAgQVNTRVJUKHZhbGlkKCkgJiYgZGV2aWNlTWVtb3J5LnZh
bGlkKCkpOworICAgIEFOR0xFX1ZLX1RSWSh2a0JpbmRJbWFnZU1lbW9yeShkZXZpY2UsIG1IYW5k
bGUsIGRldmljZU1lbW9yeS5nZXRIYW5kbGUoKSwgMCkpOworICAgIHJldHVybiBOb0Vycm9yKCk7
Cit9CisKKy8vIEltYWdlVmlldyBpbXBsZW1lbnRhdGlvbi4KK0ltYWdlVmlldzo6SW1hZ2VWaWV3
KCkKK3sKK30KKwordm9pZCBJbWFnZVZpZXc6OmRlc3Ryb3koVmtEZXZpY2UgZGV2aWNlKQorewor
ICAgIGlmICh2YWxpZCgpKQorICAgIHsKKyAgICAgICAgdmtEZXN0cm95SW1hZ2VWaWV3KGRldmlj
ZSwgbUhhbmRsZSwgbnVsbHB0cik7CisgICAgICAgIG1IYW5kbGUgPSBWS19OVUxMX0hBTkRMRTsK
KyAgICB9Cit9CisKK0Vycm9yIEltYWdlVmlldzo6aW5pdChWa0RldmljZSBkZXZpY2UsIGNvbnN0
IFZrSW1hZ2VWaWV3Q3JlYXRlSW5mbyAmY3JlYXRlSW5mbykKK3sKKyAgICBBTkdMRV9WS19UUlko
dmtDcmVhdGVJbWFnZVZpZXcoZGV2aWNlLCAmY3JlYXRlSW5mbywgbnVsbHB0ciwgJm1IYW5kbGUp
KTsKKyAgICByZXR1cm4gTm9FcnJvcigpOworfQorCisvLyBTZW1hcGhvcmUgaW1wbGVtZW50YXRp
b24uCitTZW1hcGhvcmU6OlNlbWFwaG9yZSgpCit7Cit9CisKK3ZvaWQgU2VtYXBob3JlOjpkZXN0
cm95KFZrRGV2aWNlIGRldmljZSkKK3sKKyAgICBpZiAodmFsaWQoKSkKKyAgICB7CisgICAgICAg
IHZrRGVzdHJveVNlbWFwaG9yZShkZXZpY2UsIG1IYW5kbGUsIG51bGxwdHIpOworICAgICAgICBt
SGFuZGxlID0gVktfTlVMTF9IQU5ETEU7CisgICAgfQorfQorCitFcnJvciBTZW1hcGhvcmU6Omlu
aXQoVmtEZXZpY2UgZGV2aWNlKQoreworICAgIEFTU0VSVCghdmFsaWQoKSk7CisKKyAgICBWa1Nl
bWFwaG9yZUNyZWF0ZUluZm8gc2VtYXBob3JlSW5mbzsKKyAgICBzZW1hcGhvcmVJbmZvLnNUeXBl
ID0gVktfU1RSVUNUVVJFX1RZUEVfU0VNQVBIT1JFX0NSRUFURV9JTkZPOworICAgIHNlbWFwaG9y
ZUluZm8ucE5leHQgPSBudWxscHRyOworICAgIHNlbWFwaG9yZUluZm8uZmxhZ3MgPSAwOworCisg
ICAgQU5HTEVfVktfVFJZKHZrQ3JlYXRlU2VtYXBob3JlKGRldmljZSwgJnNlbWFwaG9yZUluZm8s
IG51bGxwdHIsICZtSGFuZGxlKSk7CisKKyAgICByZXR1cm4gTm9FcnJvcigpOworfQorCisvLyBG
cmFtZWJ1ZmZlciBpbXBsZW1lbnRhdGlvbi4KK0ZyYW1lYnVmZmVyOjpGcmFtZWJ1ZmZlcigpCit7
Cit9CisKK3ZvaWQgRnJhbWVidWZmZXI6OmRlc3Ryb3koVmtEZXZpY2UgZGV2aWNlKQoreworICAg
IGlmICh2YWxpZCgpKQorICAgIHsKKyAgICAgICAgdmtEZXN0cm95RnJhbWVidWZmZXIoZGV2aWNl
LCBtSGFuZGxlLCBudWxscHRyKTsKKyAgICAgICAgbUhhbmRsZSA9IFZLX05VTExfSEFORExFOwor
ICAgIH0KK30KKworRXJyb3IgRnJhbWVidWZmZXI6OmluaXQoVmtEZXZpY2UgZGV2aWNlLCBjb25z
dCBWa0ZyYW1lYnVmZmVyQ3JlYXRlSW5mbyAmY3JlYXRlSW5mbykKK3sKKyAgICBBU1NFUlQoIXZh
bGlkKCkpOworICAgIEFOR0xFX1ZLX1RSWSh2a0NyZWF0ZUZyYW1lYnVmZmVyKGRldmljZSwgJmNy
ZWF0ZUluZm8sIG51bGxwdHIsICZtSGFuZGxlKSk7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKK30K
KworLy8gRGV2aWNlTWVtb3J5IGltcGxlbWVudGF0aW9uLgorRGV2aWNlTWVtb3J5OjpEZXZpY2VN
ZW1vcnkoKQoreworfQorCit2b2lkIERldmljZU1lbW9yeTo6ZGVzdHJveShWa0RldmljZSBkZXZp
Y2UpCit7CisgICAgaWYgKHZhbGlkKCkpCisgICAgeworICAgICAgICB2a0ZyZWVNZW1vcnkoZGV2
aWNlLCBtSGFuZGxlLCBudWxscHRyKTsKKyAgICAgICAgbUhhbmRsZSA9IFZLX05VTExfSEFORExF
OworICAgIH0KK30KKworRXJyb3IgRGV2aWNlTWVtb3J5OjphbGxvY2F0ZShWa0RldmljZSBkZXZp
Y2UsIGNvbnN0IFZrTWVtb3J5QWxsb2NhdGVJbmZvICZhbGxvY0luZm8pCit7CisgICAgQVNTRVJU
KCF2YWxpZCgpKTsKKyAgICBBTkdMRV9WS19UUlkodmtBbGxvY2F0ZU1lbW9yeShkZXZpY2UsICZh
bGxvY0luZm8sIG51bGxwdHIsICZtSGFuZGxlKSk7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKK30K
KworRXJyb3IgRGV2aWNlTWVtb3J5OjptYXAoVmtEZXZpY2UgZGV2aWNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgVmtEZXZpY2VTaXplIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IFZrRGV2aWNlU2l6ZSBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgVmtNZW1vcnlNYXBG
bGFncyBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKiptYXBQb2ludGVy
KQoreworICAgIEFTU0VSVCh2YWxpZCgpKTsKKyAgICBBTkdMRV9WS19UUlkoCisgICAgICAgIHZr
TWFwTWVtb3J5KGRldmljZSwgbUhhbmRsZSwgb2Zmc2V0LCBzaXplLCBmbGFncywgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkICoqPihtYXBQb2ludGVyKSkpOworICAgIHJldHVybiBOb0Vycm9yKCk7Cit9
CisKK3ZvaWQgRGV2aWNlTWVtb3J5Ojp1bm1hcChWa0RldmljZSBkZXZpY2UpCit7CisgICAgQVNT
RVJUKHZhbGlkKCkpOworICAgIHZrVW5tYXBNZW1vcnkoZGV2aWNlLCBtSGFuZGxlKTsKK30KKwor
Ly8gUmVuZGVyUGFzcyBpbXBsZW1lbnRhdGlvbi4KK1JlbmRlclBhc3M6OlJlbmRlclBhc3MoKQor
eworfQorCit2b2lkIFJlbmRlclBhc3M6OmRlc3Ryb3koVmtEZXZpY2UgZGV2aWNlKQoreworICAg
IGlmICh2YWxpZCgpKQorICAgIHsKKyAgICAgICAgdmtEZXN0cm95UmVuZGVyUGFzcyhkZXZpY2Us
IG1IYW5kbGUsIG51bGxwdHIpOworICAgICAgICBtSGFuZGxlID0gVktfTlVMTF9IQU5ETEU7Cisg
ICAgfQorfQorCitFcnJvciBSZW5kZXJQYXNzOjppbml0KFZrRGV2aWNlIGRldmljZSwgY29uc3Qg
VmtSZW5kZXJQYXNzQ3JlYXRlSW5mbyAmY3JlYXRlSW5mbykKK3sKKyAgICBBU1NFUlQoIXZhbGlk
KCkpOworICAgIEFOR0xFX1ZLX1RSWSh2a0NyZWF0ZVJlbmRlclBhc3MoZGV2aWNlLCAmY3JlYXRl
SW5mbywgbnVsbHB0ciwgJm1IYW5kbGUpKTsKKyAgICByZXR1cm4gTm9FcnJvcigpOworfQorCisv
LyBTdGFnaW5nSW1hZ2UgaW1wbGVtZW50YXRpb24uCitTdGFnaW5nSW1hZ2U6OlN0YWdpbmdJbWFn
ZSgpIDogbVNpemUoMCkKK3sKK30KKworU3RhZ2luZ0ltYWdlOjpTdGFnaW5nSW1hZ2UoU3RhZ2lu
Z0ltYWdlICYmb3RoZXIpCisgICAgOiBtSW1hZ2Uoc3RkOjptb3ZlKG90aGVyLm1JbWFnZSkpLAor
ICAgICAgbURldmljZU1lbW9yeShzdGQ6Om1vdmUob3RoZXIubURldmljZU1lbW9yeSkpLAorICAg
ICAgbVNpemUob3RoZXIubVNpemUpCit7CisgICAgb3RoZXIubVNpemUgPSAwOworfQorCit2b2lk
IFN0YWdpbmdJbWFnZTo6ZGVzdHJveShWa0RldmljZSBkZXZpY2UpCit7CisgICAgbUltYWdlLmRl
c3Ryb3koZGV2aWNlKTsKKyAgICBtRGV2aWNlTWVtb3J5LmRlc3Ryb3koZGV2aWNlKTsKK30KKwor
dm9pZCBTdGFnaW5nSW1hZ2U6OnJldGFpbihWa0RldmljZSBkZXZpY2UsIFN0YWdpbmdJbWFnZSAm
Jm90aGVyKQoreworICAgIG1JbWFnZS5yZXRhaW4oZGV2aWNlLCBzdGQ6Om1vdmUob3RoZXIubUlt
YWdlKSk7CisgICAgbURldmljZU1lbW9yeS5yZXRhaW4oZGV2aWNlLCBzdGQ6Om1vdmUob3RoZXIu
bURldmljZU1lbW9yeSkpOworICAgIHN0ZDo6c3dhcChtU2l6ZSwgb3RoZXIubVNpemUpOworfQor
CitFcnJvciBTdGFnaW5nSW1hZ2U6OmluaXQoVmtEZXZpY2UgZGV2aWNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IHF1ZXVlRmFtaWx5SW5kZXgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgdWludDMyX3QgaG9zdFZpc2libGVNZW1vcnlJbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBUZXh0dXJlRGltZW5zaW9uIGRpbWVuc2lvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBWa0Zvcm1hdCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OkV4dGVudHMgJmV4dGVudCkKK3sKKyAgICBWa0ltYWdlQ3JlYXRlSW5mbyBjcmVhdGVJbmZv
OworCisgICAgY3JlYXRlSW5mby5zVHlwZSAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfSU1B
R0VfQ1JFQVRFX0lORk87CisgICAgY3JlYXRlSW5mby5wTmV4dCAgICAgICAgID0gbnVsbHB0cjsK
KyAgICBjcmVhdGVJbmZvLmZsYWdzICAgICAgICAgPSAwOworICAgIGNyZWF0ZUluZm8uaW1hZ2VU
eXBlICAgICA9IFZLX0lNQUdFX1RZUEVfMkQ7CisgICAgY3JlYXRlSW5mby5mb3JtYXQgICAgICAg
ID0gZm9ybWF0OworICAgIGNyZWF0ZUluZm8uZXh0ZW50LndpZHRoICA9IHN0YXRpY19jYXN0PHVp
bnQzMl90PihleHRlbnQud2lkdGgpOworICAgIGNyZWF0ZUluZm8uZXh0ZW50LmhlaWdodCA9IHN0
YXRpY19jYXN0PHVpbnQzMl90PihleHRlbnQuaGVpZ2h0KTsKKyAgICBjcmVhdGVJbmZvLmV4dGVu
dC5kZXB0aCAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZXh0ZW50LmRlcHRoKTsKKyAgICBjcmVh
dGVJbmZvLm1pcExldmVscyAgICAgPSAxOworICAgIGNyZWF0ZUluZm8uYXJyYXlMYXllcnMgICA9
IDE7CisgICAgY3JlYXRlSW5mby5zYW1wbGVzICAgICAgID0gVktfU0FNUExFX0NPVU5UXzFfQklU
OworICAgIGNyZWF0ZUluZm8udGlsaW5nICAgICAgICA9IFZLX0lNQUdFX1RJTElOR19MSU5FQVI7
CisgICAgY3JlYXRlSW5mby51c2FnZSAgICAgICAgID0gKFZLX0lNQUdFX1VTQUdFX1RSQU5TRkVS
X0RTVF9CSVQgfCBWS19JTUFHRV9VU0FHRV9UUkFOU0ZFUl9TUkNfQklUKTsKKyAgICBjcmVhdGVJ
bmZvLnNoYXJpbmdNb2RlICAgPSBWS19TSEFSSU5HX01PREVfRVhDTFVTSVZFOworICAgIGNyZWF0
ZUluZm8ucXVldWVGYW1pbHlJbmRleENvdW50ID0gMTsKKyAgICBjcmVhdGVJbmZvLnBRdWV1ZUZh
bWlseUluZGljZXMgICA9ICZxdWV1ZUZhbWlseUluZGV4OworICAgIGNyZWF0ZUluZm8uaW5pdGlh
bExheW91dCAgICAgICAgID0gVktfSU1BR0VfTEFZT1VUX1VOREVGSU5FRDsKKworICAgIEFOR0xF
X1RSWShtSW1hZ2UuaW5pdChkZXZpY2UsIGNyZWF0ZUluZm8pKTsKKworICAgIFZrTWVtb3J5UmVx
dWlyZW1lbnRzIG1lbW9yeVJlcXVpcmVtZW50czsKKyAgICBtSW1hZ2UuZ2V0TWVtb3J5UmVxdWly
ZW1lbnRzKGRldmljZSwgJm1lbW9yeVJlcXVpcmVtZW50cyk7CisKKyAgICAvLyBFbnN1cmUgd2Ug
Y2FuIHJlYWQgdGhpcyBtZW1vcnkuCisgICAgQU5HTEVfVktfQ0hFQ0soKG1lbW9yeVJlcXVpcmVt
ZW50cy5tZW1vcnlUeXBlQml0cyAmICgxIDw8IGhvc3RWaXNpYmxlTWVtb3J5SW5kZXgpKSAhPSAw
LAorICAgICAgICAgICAgICAgICAgIFZLX0VSUk9SX1ZBTElEQVRJT05fRkFJTEVEX0VYVCk7CisK
KyAgICBWa01lbW9yeUFsbG9jYXRlSW5mbyBhbGxvY2F0ZUluZm87CisgICAgYWxsb2NhdGVJbmZv
LnNUeXBlICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX01FTU9SWV9BTExPQ0FURV9JTkZP
OworICAgIGFsbG9jYXRlSW5mby5wTmV4dCAgICAgICAgICAgPSBudWxscHRyOworICAgIGFsbG9j
YXRlSW5mby5hbGxvY2F0aW9uU2l6ZSAgPSBtZW1vcnlSZXF1aXJlbWVudHMuc2l6ZTsKKyAgICBh
bGxvY2F0ZUluZm8ubWVtb3J5VHlwZUluZGV4ID0gaG9zdFZpc2libGVNZW1vcnlJbmRleDsKKwor
ICAgIEFOR0xFX1RSWShtRGV2aWNlTWVtb3J5LmFsbG9jYXRlKGRldmljZSwgYWxsb2NhdGVJbmZv
KSk7CisgICAgQU5HTEVfVFJZKG1JbWFnZS5iaW5kTWVtb3J5KGRldmljZSwgbURldmljZU1lbW9y
eSkpOworCisgICAgbVNpemUgPSBtZW1vcnlSZXF1aXJlbWVudHMuc2l6ZTsKKworICAgIHJldHVy
biBOb0Vycm9yKCk7Cit9CisKKy8vIEJ1ZmZlciBpbXBsZW1lbnRhdGlvbi4KK0J1ZmZlcjo6QnVm
ZmVyKCkKK3sKK30KKwordm9pZCBCdWZmZXI6OmRlc3Ryb3koVmtEZXZpY2UgZGV2aWNlKQorewor
ICAgIGlmICh2YWxpZCgpKQorICAgIHsKKyAgICAgICAgbU1lbW9yeS5kZXN0cm95KGRldmljZSk7
CisKKyAgICAgICAgdmtEZXN0cm95QnVmZmVyKGRldmljZSwgbUhhbmRsZSwgbnVsbHB0cik7Cisg
ICAgICAgIG1IYW5kbGUgPSBWS19OVUxMX0hBTkRMRTsKKyAgICB9Cit9CisKK3ZvaWQgQnVmZmVy
OjpyZXRhaW4oVmtEZXZpY2UgZGV2aWNlLCBCdWZmZXIgJiZvdGhlcikKK3sKKyAgICBXcmFwcGVk
T2JqZWN0OjpyZXRhaW4oZGV2aWNlLCBzdGQ6Om1vdmUob3RoZXIpKTsKKyAgICBtTWVtb3J5LnJl
dGFpbihkZXZpY2UsIHN0ZDo6bW92ZShvdGhlci5tTWVtb3J5KSk7Cit9CisKK0Vycm9yIEJ1ZmZl
cjo6aW5pdChWa0RldmljZSBkZXZpY2UsIGNvbnN0IFZrQnVmZmVyQ3JlYXRlSW5mbyAmY3JlYXRl
SW5mbykKK3sKKyAgICBBU1NFUlQoIXZhbGlkKCkpOworICAgIEFOR0xFX1ZLX1RSWSh2a0NyZWF0
ZUJ1ZmZlcihkZXZpY2UsICZjcmVhdGVJbmZvLCBudWxscHRyLCAmbUhhbmRsZSkpOworICAgIHJl
dHVybiBOb0Vycm9yKCk7Cit9CisKK0Vycm9yIEJ1ZmZlcjo6YmluZE1lbW9yeShWa0RldmljZSBk
ZXZpY2UpCit7CisgICAgQVNTRVJUKHZhbGlkKCkgJiYgbU1lbW9yeS52YWxpZCgpKTsKKyAgICBB
TkdMRV9WS19UUlkodmtCaW5kQnVmZmVyTWVtb3J5KGRldmljZSwgbUhhbmRsZSwgbU1lbW9yeS5n
ZXRIYW5kbGUoKSwgMCkpOworICAgIHJldHVybiBOb0Vycm9yKCk7Cit9CisKKy8vIFNoYWRlck1v
ZHVsZSBpbXBsZW1lbnRhdGlvbi4KK1NoYWRlck1vZHVsZTo6U2hhZGVyTW9kdWxlKCkKK3sKK30K
Kwordm9pZCBTaGFkZXJNb2R1bGU6OmRlc3Ryb3koVmtEZXZpY2UgZGV2aWNlKQoreworICAgIGlm
IChtSGFuZGxlICE9IFZLX05VTExfSEFORExFKQorICAgIHsKKyAgICAgICAgdmtEZXN0cm95U2hh
ZGVyTW9kdWxlKGRldmljZSwgbUhhbmRsZSwgbnVsbHB0cik7CisgICAgICAgIG1IYW5kbGUgPSBW
S19OVUxMX0hBTkRMRTsKKyAgICB9Cit9CisKK0Vycm9yIFNoYWRlck1vZHVsZTo6aW5pdChWa0Rl
dmljZSBkZXZpY2UsIGNvbnN0IFZrU2hhZGVyTW9kdWxlQ3JlYXRlSW5mbyAmY3JlYXRlSW5mbykK
K3sKKyAgICBBU1NFUlQoIXZhbGlkKCkpOworICAgIEFOR0xFX1ZLX1RSWSh2a0NyZWF0ZVNoYWRl
ck1vZHVsZShkZXZpY2UsICZjcmVhdGVJbmZvLCBudWxscHRyLCAmbUhhbmRsZSkpOworICAgIHJl
dHVybiBOb0Vycm9yKCk7Cit9CisKKy8vIFBpcGVsaW5lIGltcGxlbWVudGF0aW9uLgorUGlwZWxp
bmU6OlBpcGVsaW5lKCkKK3sKK30KKwordm9pZCBQaXBlbGluZTo6ZGVzdHJveShWa0RldmljZSBk
ZXZpY2UpCit7CisgICAgaWYgKHZhbGlkKCkpCisgICAgeworICAgICAgICB2a0Rlc3Ryb3lQaXBl
bGluZShkZXZpY2UsIG1IYW5kbGUsIG51bGxwdHIpOworICAgICAgICBtSGFuZGxlID0gVktfTlVM
TF9IQU5ETEU7CisgICAgfQorfQorCitFcnJvciBQaXBlbGluZTo6aW5pdEdyYXBoaWNzKFZrRGV2
aWNlIGRldmljZSwgY29uc3QgVmtHcmFwaGljc1BpcGVsaW5lQ3JlYXRlSW5mbyAmY3JlYXRlSW5m
bykKK3sKKyAgICBBU1NFUlQoIXZhbGlkKCkpOworICAgIEFOR0xFX1ZLX1RSWSgKKyAgICAgICAg
dmtDcmVhdGVHcmFwaGljc1BpcGVsaW5lcyhkZXZpY2UsIFZLX05VTExfSEFORExFLCAxLCAmY3Jl
YXRlSW5mbywgbnVsbHB0ciwgJm1IYW5kbGUpKTsKKyAgICByZXR1cm4gTm9FcnJvcigpOworfQor
CisvLyBQaXBlbGluZUxheW91dCBpbXBsZW1lbnRhdGlvbi4KK1BpcGVsaW5lTGF5b3V0OjpQaXBl
bGluZUxheW91dCgpCit7Cit9CisKK3ZvaWQgUGlwZWxpbmVMYXlvdXQ6OmRlc3Ryb3koVmtEZXZp
Y2UgZGV2aWNlKQoreworICAgIGlmICh2YWxpZCgpKQorICAgIHsKKyAgICAgICAgdmtEZXN0cm95
UGlwZWxpbmVMYXlvdXQoZGV2aWNlLCBtSGFuZGxlLCBudWxscHRyKTsKKyAgICAgICAgbUhhbmRs
ZSA9IFZLX05VTExfSEFORExFOworICAgIH0KK30KKworRXJyb3IgUGlwZWxpbmVMYXlvdXQ6Omlu
aXQoVmtEZXZpY2UgZGV2aWNlLCBjb25zdCBWa1BpcGVsaW5lTGF5b3V0Q3JlYXRlSW5mbyAmY3Jl
YXRlSW5mbykKK3sKKyAgICBBU1NFUlQoIXZhbGlkKCkpOworICAgIEFOR0xFX1ZLX1RSWSh2a0Ny
ZWF0ZVBpcGVsaW5lTGF5b3V0KGRldmljZSwgJmNyZWF0ZUluZm8sIG51bGxwdHIsICZtSGFuZGxl
KSk7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKK30KKworLy8gRmVuY2UgaW1wbGVtZW50YXRpb24u
CitGZW5jZTo6RmVuY2UoKQoreworfQorCit2b2lkIEZlbmNlOjpkZXN0cm95KFZrRGV2aWNlIGRl
dmljZSkKK3sKKyAgICBpZiAodmFsaWQoKSkKKyAgICB7CisgICAgICAgIHZrRGVzdHJveUZlbmNl
KGRldmljZSwgbUhhbmRsZSwgbnVsbHB0cik7CisgICAgICAgIG1IYW5kbGUgPSBWS19OVUxMX0hB
TkRMRTsKKyAgICB9Cit9CisKK0Vycm9yIEZlbmNlOjppbml0KFZrRGV2aWNlIGRldmljZSwgY29u
c3QgVmtGZW5jZUNyZWF0ZUluZm8gJmNyZWF0ZUluZm8pCit7CisgICAgQVNTRVJUKCF2YWxpZCgp
KTsKKyAgICBBTkdMRV9WS19UUlkodmtDcmVhdGVGZW5jZShkZXZpY2UsICZjcmVhdGVJbmZvLCBu
dWxscHRyLCAmbUhhbmRsZSkpOworICAgIHJldHVybiBOb0Vycm9yKCk7Cit9CisKK1ZrUmVzdWx0
IEZlbmNlOjpnZXRTdGF0dXMoVmtEZXZpY2UgZGV2aWNlKSBjb25zdAoreworICAgIHJldHVybiB2
a0dldEZlbmNlU3RhdHVzKGRldmljZSwgbUhhbmRsZSk7Cit9CisKKy8vIEZlbmNlQW5kQ29tbWFu
ZEJ1ZmZlciBpbXBsZW1lbnRhdGlvbi4KK0ZlbmNlQW5kQ29tbWFuZEJ1ZmZlcjo6RmVuY2VBbmRD
b21tYW5kQnVmZmVyKFNlcmlhbCBxdWV1ZVNlcmlhbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZlbmNlICYmZmVuY2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kQnVmZmVyICYmY29tbWFuZEJ1ZmZlcikK
KyAgICA6IG1RdWV1ZVNlcmlhbChxdWV1ZVNlcmlhbCksIG1GZW5jZShzdGQ6Om1vdmUoZmVuY2Up
KSwgbUNvbW1hbmRCdWZmZXIoc3RkOjptb3ZlKGNvbW1hbmRCdWZmZXIpKQoreworfQorCitGZW5j
ZUFuZENvbW1hbmRCdWZmZXI6OkZlbmNlQW5kQ29tbWFuZEJ1ZmZlcihGZW5jZUFuZENvbW1hbmRC
dWZmZXIgJiZvdGhlcikKKyAgICA6IG1RdWV1ZVNlcmlhbChzdGQ6Om1vdmUob3RoZXIubVF1ZXVl
U2VyaWFsKSksCisgICAgICBtRmVuY2Uoc3RkOjptb3ZlKG90aGVyLm1GZW5jZSkpLAorICAgICAg
bUNvbW1hbmRCdWZmZXIoc3RkOjptb3ZlKG90aGVyLm1Db21tYW5kQnVmZmVyKSkKK3sKK30KKwor
dm9pZCBGZW5jZUFuZENvbW1hbmRCdWZmZXI6OmRlc3Ryb3koVmtEZXZpY2UgZGV2aWNlKQorewor
ICAgIG1GZW5jZS5kZXN0cm95KGRldmljZSk7CisgICAgbUNvbW1hbmRCdWZmZXIuZGVzdHJveShk
ZXZpY2UpOworfQorCit2azo6RXJyb3JPclJlc3VsdDxib29sPiBGZW5jZUFuZENvbW1hbmRCdWZm
ZXI6OmZpbmlzaGVkKFZrRGV2aWNlIGRldmljZSkgY29uc3QKK3sKKyAgICBWa1Jlc3VsdCByZXN1
bHQgPSBtRmVuY2UuZ2V0U3RhdHVzKGRldmljZSk7CisgICAgLy8gU2hvdWxkIHRoaXMgYmUgYSBw
YXJ0IG9mIEFOR0xFX1ZLX1RSWT8KKyAgICBpZiAocmVzdWx0ID09IFZLX05PVF9SRUFEWSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgQU5HTEVfVktfVFJZKHJlc3Vs
dCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0ZlbmNlQW5kQ29tbWFuZEJ1ZmZlciAmRmVuY2VB
bmRDb21tYW5kQnVmZmVyOjpvcGVyYXRvcj0oRmVuY2VBbmRDb21tYW5kQnVmZmVyICYmb3RoZXIp
Cit7CisgICAgc3RkOjpzd2FwKG1RdWV1ZVNlcmlhbCwgb3RoZXIubVF1ZXVlU2VyaWFsKTsKKyAg
ICBtRmVuY2UgICAgICAgICA9IHN0ZDo6bW92ZShvdGhlci5tRmVuY2UpOworICAgIG1Db21tYW5k
QnVmZmVyID0gc3RkOjptb3ZlKG90aGVyLm1Db21tYW5kQnVmZmVyKTsKKyAgICByZXR1cm4gKnRo
aXM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSB2aworCitPcHRpb25hbDx1aW50MzJfdD4gRmluZE1l
bW9yeVR5cGUoY29uc3QgVmtQaHlzaWNhbERldmljZU1lbW9yeVByb3BlcnRpZXMgJm1lbW9yeVBy
b3BzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZrTWVtb3J5UmVx
dWlyZW1lbnRzICZyZXF1aXJlbWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdWludDMyX3QgcHJvcGVydHlGbGFnTWFzaykKK3sKKyAgICBmb3IgKHVpbnQzMl90IHR5cGVJ
bmRleCA9IDA7IHR5cGVJbmRleCA8IG1lbW9yeVByb3BzLm1lbW9yeVR5cGVDb3VudDsgKyt0eXBl
SW5kZXgpCisgICAgeworICAgICAgICBpZiAoKHJlcXVpcmVtZW50cy5tZW1vcnlUeXBlQml0cyAm
ICgxdSA8PCB0eXBlSW5kZXgpKSAhPSAwICYmCisgICAgICAgICAgICAoKG1lbW9yeVByb3BzLm1l
bW9yeVR5cGVzW3R5cGVJbmRleF0ucHJvcGVydHlGbGFncyAmIHByb3BlcnR5RmxhZ01hc2spID09
CisgICAgICAgICAgICAgcHJvcGVydHlGbGFnTWFzaykpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiB0eXBlSW5kZXg7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gT3B0aW9u
YWw8dWludDMyX3Q+OjpJbnZhbGlkKCk7Cit9CisKK25hbWVzcGFjZSBnbF92aworeworVmtQcmlt
aXRpdmVUb3BvbG9neSBHZXRQcmltaXRpdmVUb3BvbG9neShHTGVudW0gbW9kZSkKK3sKKyAgICBz
d2l0Y2ggKG1vZGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1RSSUFOR0xFUzoKKyAgICAgICAg
ICAgIHJldHVybiBWS19QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVfTElTVDsKKyAgICAgICAg
Y2FzZSBHTF9QT0lOVFM6CisgICAgICAgICAgICByZXR1cm4gVktfUFJJTUlUSVZFX1RPUE9MT0dZ
X1BPSU5UX0xJU1Q7CisgICAgICAgIGNhc2UgR0xfTElORVM6CisgICAgICAgICAgICByZXR1cm4g
VktfUFJJTUlUSVZFX1RPUE9MT0dZX0xJTkVfTElTVDsKKyAgICAgICAgY2FzZSBHTF9MSU5FX1NU
UklQOgorICAgICAgICAgICAgcmV0dXJuIFZLX1BSSU1JVElWRV9UT1BPTE9HWV9MSU5FX1NUUklQ
OworICAgICAgICBjYXNlIEdMX1RSSUFOR0xFX0ZBTjoKKyAgICAgICAgICAgIHJldHVybiBWS19Q
UklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVfRkFOOworICAgICAgICBjYXNlIEdMX1RSSUFOR0xF
X1NUUklQOgorICAgICAgICAgICAgcmV0dXJuIFZLX1BSSU1JVElWRV9UT1BPTE9HWV9UUklBTkdM
RV9TVFJJUDsKKyAgICAgICAgY2FzZSBHTF9MSU5FX0xPT1A6CisgICAgICAgICAgICAvLyBUT0RP
KGptYWRpbGwpOiBJbXBsZW1lbnQgbGluZSBsb29wIHN1cHBvcnQuCisgICAgICAgICAgICBVTklN
UExFTUVOVEVEKCk7CisgICAgICAgICAgICByZXR1cm4gVktfUFJJTUlUSVZFX1RPUE9MT0dZX0xJ
TkVfU1RSSVA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgcmV0dXJuIFZLX1BSSU1JVElWRV9UT1BPTE9HWV9QT0lOVF9MSVNUOworICAg
IH0KK30KKworVmtDdWxsTW9kZUZsYWdzIEdldEN1bGxNb2RlKGNvbnN0IGdsOjpSYXN0ZXJpemVy
U3RhdGUgJnJhc3RlclN0YXRlKQoreworICAgIGlmICghcmFzdGVyU3RhdGUuY3VsbEZhY2UpCisg
ICAgeworICAgICAgICByZXR1cm4gVktfQ1VMTF9NT0RFX05PTkU7CisgICAgfQorCisgICAgc3dp
dGNoIChyYXN0ZXJTdGF0ZS5jdWxsTW9kZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRlJPTlQ6
CisgICAgICAgICAgICByZXR1cm4gVktfQ1VMTF9NT0RFX0ZST05UX0JJVDsKKyAgICAgICAgY2Fz
ZSBHTF9CQUNLOgorICAgICAgICAgICAgcmV0dXJuIFZLX0NVTExfTU9ERV9CQUNLX0JJVDsKKyAg
ICAgICAgY2FzZSBHTF9GUk9OVF9BTkRfQkFDSzoKKyAgICAgICAgICAgIHJldHVybiBWS19DVUxM
X01PREVfRlJPTlRfQU5EX0JBQ0s7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0NVTExfTU9ERV9OT05FOworICAgIH0K
K30KKworVmtGcm9udEZhY2UgR2V0RnJvbnRGYWNlKEdMZW51bSBmcm9udEZhY2UpCit7CisgICAg
c3dpdGNoIChmcm9udEZhY2UpCisgICAgeworICAgICAgICBjYXNlIEdMX0NXOgorICAgICAgICAg
ICAgcmV0dXJuIFZLX0ZST05UX0ZBQ0VfQ0xPQ0tXSVNFOworICAgICAgICBjYXNlIEdMX0NDVzoK
KyAgICAgICAgICAgIHJldHVybiBWS19GUk9OVF9GQUNFX0NPVU5URVJfQ0xPQ0tXSVNFOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJl
dHVybiBWS19GUk9OVF9GQUNFX0NPVU5URVJfQ0xPQ0tXSVNFOworICAgIH0KK30KKworfSAgLy8g
bmFtZXNwYWNlIGdsX3ZrCisKK30gIC8vIG5hbWVzcGFjZSByeAorCitzdGQ6Om9zdHJlYW0gJm9w
ZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZzdHJlYW0sIGNvbnN0IHJ4Ojp2azo6RXJyb3IgJmVycm9y
KQoreworICAgIHN0cmVhbSA8PCBlcnJvci50b1N0cmluZygpOworICAgIHJldHVybiBzdHJlYW07
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL3JlbmRlcmVydmtfdXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vcmVuZGVyZXJ2a191dGlscy5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmIzMTA2OTliYWJkYzgxNzcwY2Y3ODIzNzU3ZGE3MzE5YWFkNDM2ZGUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL3JlbmRlcmVydmtfdXRpbHMuaApAQCAtMCwwICsxLDUwNiBAQAorLy8KKy8vIENvcHlyaWdo
dCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIHJl
bmRlcmVydmtfdXRpbHM6CisvLyAgICBIZWxwZXIgZnVuY3Rpb25zIGZvciB0aGUgVnVsa2FuIFJl
bmRlcmVyLgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fUkVOREVSRVJW
S19VVElMU19IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fUkVOREVSRVJWS19V
VElMU19IXworCisjaW5jbHVkZSA8dnVsa2FuL3Z1bGthbi5oPgorCisjaW5jbHVkZSAiY29tbW9u
L2RlYnVnLmgiCisjaW5jbHVkZSAiY29tbW9uL09wdGlvbmFsLmgiCisjaW5jbHVkZSAibGliQU5H
TEUvRXJyb3IuaCIKKworbmFtZXNwYWNlIGdsCit7CitzdHJ1Y3QgQm94Oworc3RydWN0IEV4dGVu
dHM7CitzdHJ1Y3QgUmFzdGVyaXplclN0YXRlOworc3RydWN0IFJlY3RhbmdsZTsKK30KKworbmFt
ZXNwYWNlIHJ4Cit7Citjb25zdCBjaGFyICpWdWxrYW5SZXN1bHRTdHJpbmcoVmtSZXN1bHQgcmVz
dWx0KTsKK2Jvb2wgSGFzU3RhbmRhcmRWYWxpZGF0aW9uTGF5ZXIoY29uc3Qgc3RkOjp2ZWN0b3I8
VmtMYXllclByb3BlcnRpZXM+ICZsYXllclByb3BzKTsKKworZXh0ZXJuIGNvbnN0IGNoYXIgKmdf
VmtTdGRWYWxpZGF0aW9uTGF5ZXJOYW1lOworCitlbnVtIGNsYXNzIFRleHR1cmVEaW1lbnNpb24K
K3sKKyAgICBURVhfMkQsCisgICAgVEVYX0NVQkUsCisgICAgVEVYXzNELAorICAgIFRFWF8yRF9B
UlJBWSwKK307CisKK2VudW0gRGVsZXRlU2NoZWR1bGUKK3sKKyAgICBOT1csCisgICAgTEFURVIs
Cit9OworCisvLyBBIHNlcmlhbCBzdXBwb3J0cyBhIGZldyBvcGVyYXRpb25zIC0gY29tcGFyaXNv
biwgaW5jcmVtZW50LCBhbmQgYXNzaWdubWVudC4KKy8vIFRPRE8oam1hZGlsbCk6IFZlcmlmeSBp
dCdzIG5vdCBlYXN5IHRvIG92ZXJmbG93IHRoZSBxdWV1ZSBzZXJpYWwuCitjbGFzcyBTZXJpYWwg
ZmluYWwKK3sKKyAgcHVibGljOgorICAgIFNlcmlhbCgpIDogbVZhbHVlKDApIHt9CisgICAgU2Vy
aWFsKGNvbnN0IFNlcmlhbCAmb3RoZXIpIDogbVZhbHVlKG90aGVyLm1WYWx1ZSkge30KKyAgICBT
ZXJpYWwoU2VyaWFsICYmb3RoZXIpIDogbVZhbHVlKG90aGVyLm1WYWx1ZSkgeyBvdGhlci5tVmFs
dWUgPSAwOyB9CisgICAgU2VyaWFsICZvcGVyYXRvcj0oY29uc3QgU2VyaWFsICZvdGhlcikKKyAg
ICB7CisgICAgICAgIG1WYWx1ZSA9IG90aGVyLm1WYWx1ZTsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KKyAgICBib29sIG9wZXJhdG9yPj0oU2VyaWFsIG90aGVyKSBjb25zdCB7IHJldHVy
biBtVmFsdWUgPj0gb3RoZXIubVZhbHVlOyB9CisgICAgYm9vbCBvcGVyYXRvcj4oU2VyaWFsIG90
aGVyKSBjb25zdCB7IHJldHVybiBtVmFsdWUgPiBvdGhlci5tVmFsdWU7IH0KKworICAgIC8vIFRo
aXMgZnVuY3Rpb24gZmFpbHMgaWYgd2UncmUgYXQgdGhlIGxpbWl0cyBvZiBvdXIgY291bnRpbmcu
CisgICAgYm9vbCBvcGVyYXRvcisrKCkKKyAgICB7CisgICAgICAgIGlmIChtVmFsdWUgPT0gc3Rk
OjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBtVmFsdWUrKzsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
IHByaXZhdGU6CisgICAgdWludDMyX3QgbVZhbHVlOworfTsKKworLy8gVGhpcyBpcyBhIHNtYWxs
IGhlbHBlciBtaXhpbiBmb3IgYW55IEdMIG9iamVjdCB1c2VkIGluIFZrIGNvbW1hbmQgYnVmZmVy
cy4gSXQgcmVjb3JkcyBhIHNlcmlhbAorLy8gYXQgY29tbWFuZCBzdWJtaXNzaW9uIHRpbWVzIGlu
ZGljYXRpbmcgaXQncyBvcmRlciBpbiB0aGUgcXVldWUuIFdlIHdpbGwgdXNlIEZlbmNlcyB0byBk
ZXRlY3QKKy8vIHdoZW4gY29tbWFuZHMgYXJlIGZpbmlzaGVkLCBhbmQgdGhlbiBoYW5kbGUgbGlm
ZXRpbWUgbWFuYWdlbWVudCBmb3IgdGhlIHJlc291cmNlcy4KKy8vIE5vdGUgdGhhdCB3ZSB1c2Ug
YSBxdWV1ZSBvcmRlciBzZXJpYWwgaW5zdGVhZCBvZiBhIGNvbW1hbmQgYnVmZmVyIGlkIHNlcmlh
bCBzaW5jZSBhIHF1ZXVlIGNhbgorLy8gc3VibWl0IG11bHRpcGxlIGNvbW1hbmQgYnVmZmVycyBp
biBvbmUgQVBJIGNhbGwuCitjbGFzcyBSZXNvdXJjZVZrCit7CisgIHB1YmxpYzoKKyAgICB2b2lk
IHNldFF1ZXVlU2VyaWFsKFNlcmlhbCBxdWV1ZVNlcmlhbCkKKyAgICB7CisgICAgICAgIEFTU0VS
VChxdWV1ZVNlcmlhbCA+PSBtU3RvcmVkUXVldWVTZXJpYWwpOworICAgICAgICBtU3RvcmVkUXVl
dWVTZXJpYWwgPSBxdWV1ZVNlcmlhbDsKKyAgICB9CisKKyAgICBEZWxldGVTY2hlZHVsZSBnZXRE
ZWxldGVTY2hlZHVsZShTZXJpYWwgbGFzdENvbXBsZXRlZFF1ZXVlU2VyaWFsKSBjb25zdAorICAg
IHsKKyAgICAgICAgaWYgKGxhc3RDb21wbGV0ZWRRdWV1ZVNlcmlhbCA+PSBtU3RvcmVkUXVldWVT
ZXJpYWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBEZWxldGVTY2hlZHVsZTo6Tk9X
OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IERlbGV0ZVNjaGVkdWxlOjpMQVRFUjsKKyAgICAgICAgfQorICAgIH0KKworICAgIFNlcmlhbCBn
ZXRTdG9yZWRRdWV1ZVNlcmlhbCgpIGNvbnN0IHsgcmV0dXJuIG1TdG9yZWRRdWV1ZVNlcmlhbDsg
fQorCisgIHByaXZhdGU6CisgICAgU2VyaWFsIG1TdG9yZWRRdWV1ZVNlcmlhbDsKK307CisKK25h
bWVzcGFjZSB2aworeworY2xhc3MgRGV2aWNlTWVtb3J5OworY2xhc3MgRnJhbWVidWZmZXI7Citj
bGFzcyBJbWFnZTsKK2NsYXNzIFBpcGVsaW5lOworY2xhc3MgUmVuZGVyUGFzczsKKworY2xhc3Mg
RXJyb3IgZmluYWwKK3sKKyAgcHVibGljOgorICAgIEVycm9yKFZrUmVzdWx0IHJlc3VsdCk7Cisg
ICAgRXJyb3IoVmtSZXN1bHQgcmVzdWx0LCBjb25zdCBjaGFyICpmaWxlLCB1bnNpZ25lZCBpbnQg
bGluZSk7CisgICAgfkVycm9yKCk7CisKKyAgICBFcnJvcihjb25zdCBFcnJvciAmb3RoZXIpOwor
ICAgIEVycm9yICZvcGVyYXRvcj0oY29uc3QgRXJyb3IgJm90aGVyKTsKKworICAgIGdsOjpFcnJv
ciB0b0dMKEdMZW51bSBnbEVycm9yQ29kZSkgY29uc3Q7CisgICAgZWdsOjpFcnJvciB0b0VHTChF
R0xpbnQgZWdsRXJyb3JDb2RlKSBjb25zdDsKKworICAgIG9wZXJhdG9yIGdsOjpFcnJvcigpIGNv
bnN0OworICAgIG9wZXJhdG9yIGVnbDo6RXJyb3IoKSBjb25zdDsKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KKyAgICBvcGVyYXRvciBnbDo6RXJyb3JPclJlc3VsdDxUPigpIGNvbnN0CisgICAg
eworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Z2w6OkVycm9yPigqdGhpcyk7CisgICAgfQor
CisgICAgYm9vbCBpc0Vycm9yKCkgY29uc3Q7CisKKyAgICBzdGQ6OnN0cmluZyB0b1N0cmluZygp
IGNvbnN0OworCisgIHByaXZhdGU6CisgICAgVmtSZXN1bHQgbVJlc3VsdDsKKyAgICBjb25zdCBj
aGFyICptRmlsZTsKKyAgICB1bnNpZ25lZCBpbnQgbUxpbmU7Cit9OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgUmVzdWx0VD4KK3VzaW5nIEVycm9yT3JSZXN1bHQgPSBhbmdsZTo6RXJyb3JPclJlc3Vs
dEJhc2U8RXJyb3IsIFJlc3VsdFQsIFZrUmVzdWx0LCBWS19TVUNDRVNTPjsKKworLy8gQXZvaWQg
Y29uZmxpY3Rpbmcgd2l0aCBYIGhlYWRlcnMgd2hpY2ggZGVmaW5lICJTdWNjZXNzIi4KK2lubGlu
ZSBFcnJvciBOb0Vycm9yKCkKK3sKKyAgICByZXR1cm4gRXJyb3IoVktfU1VDQ0VTUyk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBEZXJpdmVkVCwgdHlwZW5hbWUgSGFuZGxlVD4KK2NsYXNzIFdy
YXBwZWRPYmplY3QgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAgIEhhbmRs
ZVQgZ2V0SGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbUhhbmRsZTsgfQorICAgIGJvb2wgdmFsaWQo
KSBjb25zdCB7IHJldHVybiAobUhhbmRsZSAhPSBWS19OVUxMX0hBTkRMRSk7IH0KKworICAgIGNv
bnN0IEhhbmRsZVQgKnB0cigpIGNvbnN0IHsgcmV0dXJuICZtSGFuZGxlOyB9CisKKyAgcHJvdGVj
dGVkOgorICAgIFdyYXBwZWRPYmplY3QoKSA6IG1IYW5kbGUoVktfTlVMTF9IQU5ETEUpIHt9Cisg
ICAgV3JhcHBlZE9iamVjdChIYW5kbGVUIGhhbmRsZSkgOiBtSGFuZGxlKGhhbmRsZSkge30KKyAg
ICB+V3JhcHBlZE9iamVjdCgpIHsgQVNTRVJUKCF2YWxpZCgpKTsgfQorCisgICAgV3JhcHBlZE9i
amVjdChXcmFwcGVkT2JqZWN0ICYmb3RoZXIpIDogbUhhbmRsZShvdGhlci5tSGFuZGxlKQorICAg
IHsKKyAgICAgICAgb3RoZXIubUhhbmRsZSA9IFZLX05VTExfSEFORExFOworICAgIH0KKworICAg
IC8vIE9ubHkgd29ya3MgdG8gaW5pdGlhbGl6ZSBlbXB0eSBvYmplY3RzLCBzaW5jZSB3ZSBkb24n
dCBoYXZlIHRoZSBkZXZpY2UgaGFuZGxlLgorICAgIFdyYXBwZWRPYmplY3QgJm9wZXJhdG9yPShX
cmFwcGVkT2JqZWN0ICYmb3RoZXIpCisgICAgeworICAgICAgICBBU1NFUlQoIXZhbGlkKCkpOwor
ICAgICAgICBzdGQ6OnN3YXAobUhhbmRsZSwgb3RoZXIubUhhbmRsZSk7CisgICAgICAgIHJldHVy
biAqdGhpczsKKyAgICB9CisKKyAgICB2b2lkIHJldGFpbihWa0RldmljZSBkZXZpY2UsIERlcml2
ZWRUICYmb3RoZXIpCisgICAgeworICAgICAgICBpZiAodmFsaWQoKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8RGVyaXZlZFQgKj4odGhpcyktPmRlc3Ryb3koZGV2aWNlKTsK
KyAgICAgICAgfQorICAgICAgICBzdGQ6OnN3YXAobUhhbmRsZSwgb3RoZXIubUhhbmRsZSk7Cisg
ICAgfQorCisgICAgSGFuZGxlVCBtSGFuZGxlOworfTsKKworY2xhc3MgQ29tbWFuZFBvb2wgZmlu
YWwgOiBwdWJsaWMgV3JhcHBlZE9iamVjdDxDb21tYW5kUG9vbCwgVmtDb21tYW5kUG9vbD4KK3sK
KyAgcHVibGljOgorICAgIENvbW1hbmRQb29sKCk7CisKKyAgICB2b2lkIGRlc3Ryb3koVmtEZXZp
Y2UgZGV2aWNlKTsKKworICAgIEVycm9yIGluaXQoVmtEZXZpY2UgZGV2aWNlLCBjb25zdCBWa0Nv
bW1hbmRQb29sQ3JlYXRlSW5mbyAmY3JlYXRlSW5mbyk7Cit9OworCisvLyBIZWxwZXIgY2xhc3Mg
dGhhdCB3cmFwcyBhIFZ1bGthbiBjb21tYW5kIGJ1ZmZlci4KK2NsYXNzIENvbW1hbmRCdWZmZXIg
ZmluYWwgOiBwdWJsaWMgV3JhcHBlZE9iamVjdDxDb21tYW5kQnVmZmVyLCBWa0NvbW1hbmRCdWZm
ZXI+Cit7CisgIHB1YmxpYzoKKyAgICBDb21tYW5kQnVmZmVyKCk7CisKKyAgICB2b2lkIGRlc3Ry
b3koVmtEZXZpY2UgZGV2aWNlKTsKKyAgICB1c2luZyBXcmFwcGVkT2JqZWN0OjpvcGVyYXRvcj07
CisKKyAgICB2b2lkIHNldENvbW1hbmRQb29sKENvbW1hbmRQb29sICpjb21tYW5kUG9vbCk7Cisg
ICAgRXJyb3IgYmVnaW4oVmtEZXZpY2UgZGV2aWNlKTsKKyAgICBFcnJvciBlbmQoKTsKKyAgICBF
cnJvciByZXNldCgpOworCisgICAgdm9pZCBzaW5nbGVJbWFnZUJhcnJpZXIoVmtQaXBlbGluZVN0
YWdlRmxhZ3Mgc3JjU3RhZ2VNYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrUGlw
ZWxpbmVTdGFnZUZsYWdzIGRzdFN0YWdlTWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWa0RlcGVuZGVuY3lGbGFncyBkZXBlbmRlbmN5RmxhZ3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVmtJbWFnZU1lbW9yeUJhcnJpZXIgJmltYWdlTWVtb3J5QmFycmllcik7
CisKKyAgICB2b2lkIGNsZWFyU2luZ2xlQ29sb3JJbWFnZShjb25zdCB2azo6SW1hZ2UgJmltYWdl
LCBjb25zdCBWa0NsZWFyQ29sb3JWYWx1ZSAmY29sb3IpOworCisgICAgdm9pZCBjb3B5U2luZ2xl
SW1hZ2UoY29uc3Qgdms6OkltYWdlICZzcmNJbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2azo6SW1hZ2UgJmRlc3RJbWFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6Qm94ICZjb3B5UmVnaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIFZrSW1h
Z2VBc3BlY3RGbGFncyBhc3BlY3RNYXNrKTsKKworICAgIHZvaWQgYmVnaW5SZW5kZXJQYXNzKGNv
bnN0IFJlbmRlclBhc3MgJnJlbmRlclBhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgRnJhbWVidWZmZXIgJmZyYW1lYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpSZWN0YW5nbGUgJnJlbmRlckFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8VmtDbGVhclZhbHVlPiAmY2xlYXJWYWx1ZXMpOworICAgIHZvaWQg
ZW5kUmVuZGVyUGFzcygpOworCisgICAgdm9pZCBkcmF3KHVpbnQzMl90IHZlcnRleENvdW50LAor
ICAgICAgICAgICAgICB1aW50MzJfdCBpbnN0YW5jZUNvdW50LAorICAgICAgICAgICAgICB1aW50
MzJfdCBmaXJzdFZlcnRleCwKKyAgICAgICAgICAgICAgdWludDMyX3QgZmlyc3RJbnN0YW5jZSk7
CisKKyAgICB2b2lkIGJpbmRQaXBlbGluZShWa1BpcGVsaW5lQmluZFBvaW50IHBpcGVsaW5lQmlu
ZFBvaW50LCBjb25zdCB2azo6UGlwZWxpbmUgJnBpcGVsaW5lKTsKKyAgICB2b2lkIGJpbmRWZXJ0
ZXhCdWZmZXJzKHVpbnQzMl90IGZpcnN0QmluZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZrQnVmZmVyPiAmYnVmZmVycywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZrRGV2aWNlU2l6ZT4gJm9mZnNldHMpOwor
CisgIHByaXZhdGU6CisgICAgQ29tbWFuZFBvb2wgKm1Db21tYW5kUG9vbDsKK307CisKK2NsYXNz
IEltYWdlIGZpbmFsIDogcHVibGljIFdyYXBwZWRPYmplY3Q8SW1hZ2UsIFZrSW1hZ2U+Cit7Cisg
IHB1YmxpYzoKKyAgICAvLyBVc2UgdGhpcyBjb25zdHJ1Y3RvciBpZiB0aGUgbGlmZXRpbWUgb2Yg
dGhlIGltYWdlIGlzIG5vdCBjb250cm9sbGVkIGJ5IEFOR0xFLiAoU3dhcENoYWluKQorICAgIElt
YWdlKCk7CisgICAgZXhwbGljaXQgSW1hZ2UoVmtJbWFnZSBpbWFnZSk7CisKKyAgICAvLyBDYWxs
ZWQgb24gc2h1dGRvd24gd2hlbiB0aGUgaGVscGVyIGNsYXNzICpkb2Vzbid0KiBvd24gdGhlIGhh
bmRsZSB0byB0aGUgaW1hZ2UgcmVzb3VyY2UuCisgICAgdm9pZCByZXNldCgpOworCisgICAgLy8g
Q2FsbGVkIG9uIHNodXRkb3duIHdoZW4gdGhlIGhlbHBlciBjbGFzcyAqZG9lcyogb3duIHRoZSBo
YW5kbGUgdG8gdGhlIGltYWdlIHJlc291cmNlLgorICAgIHZvaWQgZGVzdHJveShWa0RldmljZSBk
ZXZpY2UpOworCisgICAgdm9pZCByZXRhaW4oVmtEZXZpY2UgZGV2aWNlLCBJbWFnZSAmJm90aGVy
KTsKKworICAgIEVycm9yIGluaXQoVmtEZXZpY2UgZGV2aWNlLCBjb25zdCBWa0ltYWdlQ3JlYXRl
SW5mbyAmY3JlYXRlSW5mbyk7CisKKyAgICB2b2lkIGNoYW5nZUxheW91dFRvcChWa0ltYWdlQXNw
ZWN0RmxhZ3MgYXNwZWN0TWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICBWa0ltYWdlTGF5
b3V0IG5ld0xheW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kQnVmZmVyICpj
b21tYW5kQnVmZmVyKTsKKworICAgIHZvaWQgY2hhbmdlTGF5b3V0V2l0aFN0YWdlcyhWa0ltYWdl
QXNwZWN0RmxhZ3MgYXNwZWN0TWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmtJbWFnZUxheW91dCBuZXdMYXlvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZrUGlwZWxpbmVTdGFnZUZsYWdzIHNyY1N0YWdlTWFzaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmtQaXBlbGluZVN0YWdlRmxhZ3MgZHN0U3RhZ2VNYXNrLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5kQnVmZmVyICpjb21tYW5kQnVmZmVyKTsKKwor
ICAgIHZvaWQgZ2V0TWVtb3J5UmVxdWlyZW1lbnRzKFZrRGV2aWNlIGRldmljZSwgVmtNZW1vcnlS
ZXF1aXJlbWVudHMgKnJlcXVpcmVtZW50c091dCkgY29uc3Q7CisgICAgRXJyb3IgYmluZE1lbW9y
eShWa0RldmljZSBkZXZpY2UsIGNvbnN0IHZrOjpEZXZpY2VNZW1vcnkgJmRldmljZU1lbW9yeSk7
CisKKyAgICBWa0ltYWdlTGF5b3V0IGdldEN1cnJlbnRMYXlvdXQoKSBjb25zdCB7IHJldHVybiBt
Q3VycmVudExheW91dDsgfQorICAgIHZvaWQgdXBkYXRlTGF5b3V0KFZrSW1hZ2VMYXlvdXQgbGF5
b3V0KSB7IG1DdXJyZW50TGF5b3V0ID0gbGF5b3V0OyB9CisKKyAgcHJpdmF0ZToKKyAgICBWa0lt
YWdlTGF5b3V0IG1DdXJyZW50TGF5b3V0OworfTsKKworY2xhc3MgSW1hZ2VWaWV3IGZpbmFsIDog
cHVibGljIFdyYXBwZWRPYmplY3Q8SW1hZ2VWaWV3LCBWa0ltYWdlVmlldz4KK3sKKyAgcHVibGlj
OgorICAgIEltYWdlVmlldygpOworICAgIHZvaWQgZGVzdHJveShWa0RldmljZSBkZXZpY2UpOwor
ICAgIHVzaW5nIFdyYXBwZWRPYmplY3Q6OnJldGFpbjsKKworICAgIEVycm9yIGluaXQoVmtEZXZp
Y2UgZGV2aWNlLCBjb25zdCBWa0ltYWdlVmlld0NyZWF0ZUluZm8gJmNyZWF0ZUluZm8pOworfTsK
KworY2xhc3MgU2VtYXBob3JlIGZpbmFsIDogcHVibGljIFdyYXBwZWRPYmplY3Q8U2VtYXBob3Jl
LCBWa1NlbWFwaG9yZT4KK3sKKyAgcHVibGljOgorICAgIFNlbWFwaG9yZSgpOworICAgIHZvaWQg
ZGVzdHJveShWa0RldmljZSBkZXZpY2UpOworICAgIHVzaW5nIFdyYXBwZWRPYmplY3Q6OnJldGFp
bjsKKworICAgIEVycm9yIGluaXQoVmtEZXZpY2UgZGV2aWNlKTsKK307CisKK2NsYXNzIEZyYW1l
YnVmZmVyIGZpbmFsIDogcHVibGljIFdyYXBwZWRPYmplY3Q8RnJhbWVidWZmZXIsIFZrRnJhbWVi
dWZmZXI+Cit7CisgIHB1YmxpYzoKKyAgICBGcmFtZWJ1ZmZlcigpOworICAgIHZvaWQgZGVzdHJv
eShWa0RldmljZSBkZXZpY2UpOworICAgIHVzaW5nIFdyYXBwZWRPYmplY3Q6OnJldGFpbjsKKwor
ICAgIEVycm9yIGluaXQoVmtEZXZpY2UgZGV2aWNlLCBjb25zdCBWa0ZyYW1lYnVmZmVyQ3JlYXRl
SW5mbyAmY3JlYXRlSW5mbyk7Cit9OworCitjbGFzcyBEZXZpY2VNZW1vcnkgZmluYWwgOiBwdWJs
aWMgV3JhcHBlZE9iamVjdDxEZXZpY2VNZW1vcnksIFZrRGV2aWNlTWVtb3J5PgoreworICBwdWJs
aWM6CisgICAgRGV2aWNlTWVtb3J5KCk7CisgICAgdm9pZCBkZXN0cm95KFZrRGV2aWNlIGRldmlj
ZSk7CisgICAgdXNpbmcgV3JhcHBlZE9iamVjdDo6cmV0YWluOworCisgICAgRXJyb3IgYWxsb2Nh
dGUoVmtEZXZpY2UgZGV2aWNlLCBjb25zdCBWa01lbW9yeUFsbG9jYXRlSW5mbyAmYWxsb2NJbmZv
KTsKKyAgICBFcnJvciBtYXAoVmtEZXZpY2UgZGV2aWNlLAorICAgICAgICAgICAgICBWa0Rldmlj
ZVNpemUgb2Zmc2V0LAorICAgICAgICAgICAgICBWa0RldmljZVNpemUgc2l6ZSwKKyAgICAgICAg
ICAgICAgVmtNZW1vcnlNYXBGbGFncyBmbGFncywKKyAgICAgICAgICAgICAgdWludDhfdCAqKm1h
cFBvaW50ZXIpOworICAgIHZvaWQgdW5tYXAoVmtEZXZpY2UgZGV2aWNlKTsKK307CisKK2NsYXNz
IFJlbmRlclBhc3MgZmluYWwgOiBwdWJsaWMgV3JhcHBlZE9iamVjdDxSZW5kZXJQYXNzLCBWa1Jl
bmRlclBhc3M+Cit7CisgIHB1YmxpYzoKKyAgICBSZW5kZXJQYXNzKCk7CisgICAgdm9pZCBkZXN0
cm95KFZrRGV2aWNlIGRldmljZSk7CisgICAgdXNpbmcgV3JhcHBlZE9iamVjdDo6cmV0YWluOwor
CisgICAgRXJyb3IgaW5pdChWa0RldmljZSBkZXZpY2UsIGNvbnN0IFZrUmVuZGVyUGFzc0NyZWF0
ZUluZm8gJmNyZWF0ZUluZm8pOworfTsKKworY2xhc3MgU3RhZ2luZ0ltYWdlIGZpbmFsIDogYW5n
bGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBTdGFnaW5nSW1hZ2UoKTsKKyAgICBT
dGFnaW5nSW1hZ2UoU3RhZ2luZ0ltYWdlICYmb3RoZXIpOworICAgIHZvaWQgZGVzdHJveShWa0Rl
dmljZSBkZXZpY2UpOworICAgIHZvaWQgcmV0YWluKFZrRGV2aWNlIGRldmljZSwgU3RhZ2luZ0lt
YWdlICYmb3RoZXIpOworCisgICAgdms6OkVycm9yIGluaXQoVmtEZXZpY2UgZGV2aWNlLAorICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IHF1ZXVlRmFtaWx5SW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgdWludDMyX3QgaG9zdFZpc2libGVNZW1vcnlJbmRleCwKKyAgICAgICAgICAgICAgICAg
ICBUZXh0dXJlRGltZW5zaW9uIGRpbWVuc2lvbiwKKyAgICAgICAgICAgICAgICAgICBWa0Zvcm1h
dCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJmV4dGVudCk7
CisKKyAgICBJbWFnZSAmZ2V0SW1hZ2UoKSB7IHJldHVybiBtSW1hZ2U7IH0KKyAgICBjb25zdCBJ
bWFnZSAmZ2V0SW1hZ2UoKSBjb25zdCB7IHJldHVybiBtSW1hZ2U7IH0KKyAgICBEZXZpY2VNZW1v
cnkgJmdldERldmljZU1lbW9yeSgpIHsgcmV0dXJuIG1EZXZpY2VNZW1vcnk7IH0KKyAgICBjb25z
dCBEZXZpY2VNZW1vcnkgJmdldERldmljZU1lbW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1EZXZpY2VN
ZW1vcnk7IH0KKyAgICBWa0RldmljZVNpemUgZ2V0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1TaXpl
OyB9CisKKyAgcHJpdmF0ZToKKyAgICBJbWFnZSBtSW1hZ2U7CisgICAgRGV2aWNlTWVtb3J5IG1E
ZXZpY2VNZW1vcnk7CisgICAgVmtEZXZpY2VTaXplIG1TaXplOworfTsKKworY2xhc3MgQnVmZmVy
IGZpbmFsIDogcHVibGljIFdyYXBwZWRPYmplY3Q8QnVmZmVyLCBWa0J1ZmZlcj4KK3sKKyAgcHVi
bGljOgorICAgIEJ1ZmZlcigpOworICAgIHZvaWQgZGVzdHJveShWa0RldmljZSBkZXZpY2UpOwor
ICAgIHZvaWQgcmV0YWluKFZrRGV2aWNlIGRldmljZSwgQnVmZmVyICYmb3RoZXIpOworCisgICAg
RXJyb3IgaW5pdChWa0RldmljZSBkZXZpY2UsIGNvbnN0IFZrQnVmZmVyQ3JlYXRlSW5mbyAmY3Jl
YXRlSW5mbyk7CisgICAgRXJyb3IgYmluZE1lbW9yeShWa0RldmljZSBkZXZpY2UpOworCisgICAg
RGV2aWNlTWVtb3J5ICZnZXRNZW1vcnkoKSB7IHJldHVybiBtTWVtb3J5OyB9CisgICAgY29uc3Qg
RGV2aWNlTWVtb3J5ICZnZXRNZW1vcnkoKSBjb25zdCB7IHJldHVybiBtTWVtb3J5OyB9CisKKyAg
cHJpdmF0ZToKKyAgICBEZXZpY2VNZW1vcnkgbU1lbW9yeTsKK307CisKK2NsYXNzIFNoYWRlck1v
ZHVsZSBmaW5hbCA6IHB1YmxpYyBXcmFwcGVkT2JqZWN0PFNoYWRlck1vZHVsZSwgVmtTaGFkZXJN
b2R1bGU+Cit7CisgIHB1YmxpYzoKKyAgICBTaGFkZXJNb2R1bGUoKTsKKyAgICB2b2lkIGRlc3Ry
b3koVmtEZXZpY2UgZGV2aWNlKTsKKyAgICB1c2luZyBXcmFwcGVkT2JqZWN0OjpyZXRhaW47CisK
KyAgICBFcnJvciBpbml0KFZrRGV2aWNlIGRldmljZSwgY29uc3QgVmtTaGFkZXJNb2R1bGVDcmVh
dGVJbmZvICZjcmVhdGVJbmZvKTsKK307CisKK2NsYXNzIFBpcGVsaW5lIGZpbmFsIDogcHVibGlj
IFdyYXBwZWRPYmplY3Q8UGlwZWxpbmUsIFZrUGlwZWxpbmU+Cit7CisgIHB1YmxpYzoKKyAgICBQ
aXBlbGluZSgpOworICAgIHZvaWQgZGVzdHJveShWa0RldmljZSBkZXZpY2UpOworICAgIHVzaW5n
IFdyYXBwZWRPYmplY3Q6OnJldGFpbjsKKworICAgIEVycm9yIGluaXRHcmFwaGljcyhWa0Rldmlj
ZSBkZXZpY2UsIGNvbnN0IFZrR3JhcGhpY3NQaXBlbGluZUNyZWF0ZUluZm8gJmNyZWF0ZUluZm8p
OworfTsKKworY2xhc3MgUGlwZWxpbmVMYXlvdXQgZmluYWwgOiBwdWJsaWMgV3JhcHBlZE9iamVj
dDxQaXBlbGluZUxheW91dCwgVmtQaXBlbGluZUxheW91dD4KK3sKKyAgcHVibGljOgorICAgIFBp
cGVsaW5lTGF5b3V0KCk7CisgICAgdm9pZCBkZXN0cm95KFZrRGV2aWNlIGRldmljZSk7CisgICAg
dXNpbmcgV3JhcHBlZE9iamVjdDo6cmV0YWluOworCisgICAgRXJyb3IgaW5pdChWa0RldmljZSBk
ZXZpY2UsIGNvbnN0IFZrUGlwZWxpbmVMYXlvdXRDcmVhdGVJbmZvICZjcmVhdGVJbmZvKTsKK307
CisKK2NsYXNzIEZlbmNlIGZpbmFsIDogcHVibGljIFdyYXBwZWRPYmplY3Q8RmVuY2UsIFZrRmVu
Y2U+Cit7CisgIHB1YmxpYzoKKyAgICBGZW5jZSgpOworICAgIHZvaWQgZGVzdHJveShWa0Rldmlj
ZSBmZW5jZSk7CisgICAgdXNpbmcgV3JhcHBlZE9iamVjdDo6cmV0YWluOworICAgIHVzaW5nIFdy
YXBwZWRPYmplY3Q6Om9wZXJhdG9yPTsKKworICAgIEVycm9yIGluaXQoVmtEZXZpY2UgZGV2aWNl
LCBjb25zdCBWa0ZlbmNlQ3JlYXRlSW5mbyAmY3JlYXRlSW5mbyk7CisgICAgVmtSZXN1bHQgZ2V0
U3RhdHVzKFZrRGV2aWNlIGRldmljZSkgY29uc3Q7Cit9OworCitjbGFzcyBGZW5jZUFuZENvbW1h
bmRCdWZmZXIgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAgIEZl
bmNlQW5kQ29tbWFuZEJ1ZmZlcihTZXJpYWwgcXVldWVTZXJpYWwsIEZlbmNlICYmZmVuY2UsIENv
bW1hbmRCdWZmZXIgJiZjb21tYW5kQnVmZmVyKTsKKyAgICBGZW5jZUFuZENvbW1hbmRCdWZmZXIo
RmVuY2VBbmRDb21tYW5kQnVmZmVyICYmb3RoZXIpOworICAgIEZlbmNlQW5kQ29tbWFuZEJ1ZmZl
ciAmb3BlcmF0b3I9KEZlbmNlQW5kQ29tbWFuZEJ1ZmZlciAmJm90aGVyKTsKKworICAgIHZvaWQg
ZGVzdHJveShWa0RldmljZSBkZXZpY2UpOworICAgIHZrOjpFcnJvck9yUmVzdWx0PGJvb2w+IGZp
bmlzaGVkKFZrRGV2aWNlIGRldmljZSkgY29uc3Q7CisKKyAgICBTZXJpYWwgcXVldWVTZXJpYWwo
KSBjb25zdCB7IHJldHVybiBtUXVldWVTZXJpYWw7IH0KKworICBwcml2YXRlOgorICAgIFNlcmlh
bCBtUXVldWVTZXJpYWw7CisgICAgRmVuY2UgbUZlbmNlOworICAgIENvbW1hbmRCdWZmZXIgbUNv
bW1hbmRCdWZmZXI7Cit9OworCitjbGFzcyBJR2FyYmFnZU9iamVjdCA6IGFuZ2xlOjpOb25Db3B5
YWJsZQoreworICBwdWJsaWM6CisgICAgdmlydHVhbCBib29sIGRlc3Ryb3lJZkNvbXBsZXRlKFZr
RGV2aWNlIGRldmljZSwgU2VyaWFsIGNvbXBsZXRlZFNlcmlhbCkgPSAwOworfTsKKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CitjbGFzcyBHYXJiYWdlT2JqZWN0IGZpbmFsIDogcHVibGljIElHYXJi
YWdlT2JqZWN0Cit7CisgIHB1YmxpYzoKKyAgICBHYXJiYWdlT2JqZWN0KFNlcmlhbCBzZXJpYWws
IFQgJiZvYmplY3QpIDogbVNlcmlhbChzZXJpYWwpLCBtT2JqZWN0KHN0ZDo6bW92ZShvYmplY3Qp
KSB7fQorCisgICAgYm9vbCBkZXN0cm95SWZDb21wbGV0ZShWa0RldmljZSBkZXZpY2UsIFNlcmlh
bCBjb21wbGV0ZWRTZXJpYWwpIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoY29tcGxldGVk
U2VyaWFsID49IG1TZXJpYWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1PYmplY3QuZGVzdHJv
eShkZXZpY2UpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgIHByaXZhdGU6CisgICAgU2VyaWFsIG1TZXJpYWw7
CisgICAgVCBtT2JqZWN0OworfTsKKworfSAgLy8gbmFtZXNwYWNlIHZrCisKK09wdGlvbmFsPHVp
bnQzMl90PiBGaW5kTWVtb3J5VHlwZShjb25zdCBWa1BoeXNpY2FsRGV2aWNlTWVtb3J5UHJvcGVy
dGllcyAmbWVtb3J5UHJvcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVmtNZW1vcnlSZXF1aXJlbWVudHMgJnJlcXVpcmVtZW50cywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBwcm9wZXJ0eUZsYWdNYXNrKTsKKworbmFtZXNwYWNl
IGdsX3ZrCit7CitWa1ByaW1pdGl2ZVRvcG9sb2d5IEdldFByaW1pdGl2ZVRvcG9sb2d5KEdMZW51
bSBtb2RlKTsKK1ZrQ3VsbE1vZGVGbGFncyBHZXRDdWxsTW9kZShjb25zdCBnbDo6UmFzdGVyaXpl
clN0YXRlICZyYXN0ZXJTdGF0ZSk7CitWa0Zyb250RmFjZSBHZXRGcm9udEZhY2UoR0xlbnVtIGZy
b250RmFjZSk7Cit9ICAvLyBuYW1lc3BhY2UgZ2xfdmsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisK
KyNkZWZpbmUgQU5HTEVfVktfVFJZKGNvbW1hbmQpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGF1dG8gQU5HTEVfTE9D
QUxfVkFSID0gY29tbWFuZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgaWYgKEFOR0xFX0xPQ0FMX1ZBUiAhPSBWS19TVUNDRVNTKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXR1cm4gcng6OnZrOjpF
cnJvcihBTkdMRV9MT0NBTF9WQVIsIF9fRklMRV9fLCBfX0xJTkVfXyk7IFwKKyAgICAgICAgfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgQU5HTEVfRU1QVFlfU1RBVEVNRU5UCisKKyNkZWZp
bmUgQU5HTEVfVktfQ0hFQ0sodGVzdCwgZXJyb3IpIEFOR0xFX1ZLX1RSWSh0ZXN0ID8gVktfU1VD
Q0VTUyA6IGVycm9yKQorCitzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZz
dHJlYW0sIGNvbnN0IHJ4Ojp2azo6RXJyb3IgJmVycm9yKTsKKworI2VuZGlmICAvLyBMSUJBTkdM
RV9SRU5ERVJFUl9WVUxLQU5fUkVOREVSRVJWS19VVElMU19IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19mb3JtYXRf
bWFwLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL3ZrX2Zvcm1hdF9tYXAuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kY2U2MGI3MGExM2RlZDRiYTc1
ZTYwNjIzYWE2NzM2Yjk3MzRiZmJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19mb3JtYXRfbWFwLmpzb24K
QEAgLTAsMCArMSwxNjEgQEAKK3sKKyAgICAiTk9ORSI6ICJWS19GT1JNQVRfVU5ERUZJTkVEIiwK
KyAgICAiUjRHNEI0QTRfVU5PUk0iOiAiVktfRk9STUFUX1I0RzRCNEE0X1VOT1JNX1BBQ0sxNiIs
CisgICAgIkI0RzRSNEE0X1VOT1JNIjogIlZLX0ZPUk1BVF9CNEc0UjRBNF9VTk9STV9QQUNLMTYi
LAorICAgICJSNUc2QjVfVU5PUk0iOiAiVktfRk9STUFUX1I1RzZCNV9VTk9STV9QQUNLMTYiLAor
ICAgICJCNUc2UjVfVU5PUk0iOiAiVktfRk9STUFUX0I1RzZSNV9VTk9STV9QQUNLMTYiLAorICAg
ICJSNUc1QjVBMV9VTk9STSI6ICJWS19GT1JNQVRfUjVHNUI1QTFfVU5PUk1fUEFDSzE2IiwKKyAg
ICAiQjVHNVI1QTFfVU5PUk0iOiAiVktfRk9STUFUX0I1RzVSNUExX1VOT1JNX1BBQ0sxNiIsCisg
ICAgIkExUjVHNUI1X1VOT1JNIjogIlZLX0ZPUk1BVF9BMVI1RzVCNV9VTk9STV9QQUNLMTYiLAor
ICAgICJSOF9VTk9STSI6ICJWS19GT1JNQVRfUjhfVU5PUk0iLAorICAgICJSOF9TTk9STSI6ICJW
S19GT1JNQVRfUjhfU05PUk0iLAorICAgICJSOF9VSU5UIjogIlZLX0ZPUk1BVF9SOF9VSU5UIiwK
KyAgICAiUjhfU0lOVCI6ICJWS19GT1JNQVRfUjhfU0lOVCIsCisgICAgIlI4X1NSR0IiOiAiVktf
Rk9STUFUX1I4X1NSR0IiLAorICAgICJSOEc4X1VOT1JNIjogIlZLX0ZPUk1BVF9SOEc4X1VOT1JN
IiwKKyAgICAiUjhHOF9TTk9STSI6ICJWS19GT1JNQVRfUjhHOF9TTk9STSIsCisgICAgIlI4Rzhf
VUlOVCI6ICJWS19GT1JNQVRfUjhHOF9VSU5UIiwKKyAgICAiUjhHOF9TSU5UIjogIlZLX0ZPUk1B
VF9SOEc4X1NJTlQiLAorICAgICJSOEc4X1NSR0IiOiAiVktfRk9STUFUX1I4RzhfU1JHQiIsCisg
ICAgIlI4RzhCOF9VTk9STSI6ICJWS19GT1JNQVRfUjhHOEI4X1VOT1JNIiwKKyAgICAiUjhHOEI4
X1NOT1JNIjogIlZLX0ZPUk1BVF9SOEc4QjhfU05PUk0iLAorICAgICJSOEc4QjhfVUlOVCI6ICJW
S19GT1JNQVRfUjhHOEI4X1VJTlQiLAorICAgICJSOEc4QjhfU0lOVCI6ICJWS19GT1JNQVRfUjhH
OEI4X1NJTlQiLAorICAgICJSOEc4QjhfU1JHQiI6ICJWS19GT1JNQVRfUjhHOEI4X1NSR0IiLAor
ICAgICJCOEc4UjhfVU5PUk0iOiAiVktfRk9STUFUX0I4RzhSOF9VTk9STSIsCisgICAgIkI4RzhS
OF9TTk9STSI6ICJWS19GT1JNQVRfQjhHOFI4X1NOT1JNIiwKKyAgICAiQjhHOFI4X1VJTlQiOiAi
VktfRk9STUFUX0I4RzhSOF9VSU5UIiwKKyAgICAiQjhHOFI4X1NJTlQiOiAiVktfRk9STUFUX0I4
RzhSOF9TSU5UIiwKKyAgICAiQjhHOFI4X1NSR0IiOiAiVktfRk9STUFUX0I4RzhSOF9TUkdCIiwK
KyAgICAiUjhHOEI4QThfVU5PUk0iOiAiVktfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwKKyAgICAi
UjhHOEI4QThfU05PUk0iOiAiVktfRk9STUFUX1I4RzhCOEE4X1NOT1JNIiwKKyAgICAiUjhHOEI4
QThfVUlOVCI6ICJWS19GT1JNQVRfUjhHOEI4QThfVUlOVCIsCisgICAgIlI4RzhCOEE4X1NJTlQi
OiAiVktfRk9STUFUX1I4RzhCOEE4X1NJTlQiLAorICAgICJSOEc4QjhBOF9TUkdCIjogIlZLX0ZP
Uk1BVF9SOEc4QjhBOF9TUkdCIiwKKyAgICAiQjhHOFI4QThfVU5PUk0iOiAiVktfRk9STUFUX0I4
RzhSOEE4X1VOT1JNIiwKKyAgICAiQjhHOFI4QThfU05PUk0iOiAiVktfRk9STUFUX0I4RzhSOEE4
X1NOT1JNIiwKKyAgICAiQjhHOFI4QThfVVNDQUxFRCI6ICJWS19GT1JNQVRfQjhHOFI4QThfVVND
QUxFRCIsCisgICAgIkI4RzhSOEE4X1NTQ0FMRUQiOiAiVktfRk9STUFUX0I4RzhSOEE4X1NTQ0FM
RUQiLAorICAgICJCOEc4UjhBOF9VSU5UIjogIlZLX0ZPUk1BVF9COEc4UjhBOF9VSU5UIiwKKyAg
ICAiQjhHOFI4QThfU0lOVCI6ICJWS19GT1JNQVRfQjhHOFI4QThfU0lOVCIsCisgICAgIkI4RzhS
OEE4X1NSR0IiOiAiVktfRk9STUFUX0I4RzhSOEE4X1NSR0IiLAorICAgICJBMlIxMEcxMEIxMF9V
Tk9STV9QQUNLMzIiOiAiVktfRk9STUFUX0EyUjEwRzEwQjEwX1VOT1JNX1BBQ0szMiIsCisgICAg
IkEyUjEwRzEwQjEwX1NOT1JNX1BBQ0szMiI6ICJWS19GT1JNQVRfQTJSMTBHMTBCMTBfU05PUk1f
UEFDSzMyIiwKKyAgICAiQTJSMTBHMTBCMTBfVVNDQUxFRF9QQUNLMzIiOiAiVktfRk9STUFUX0Ey
UjEwRzEwQjEwX1VTQ0FMRURfUEFDSzMyIiwKKyAgICAiQTJSMTBHMTBCMTBfU1NDQUxFRF9QQUNL
MzIiOiAiVktfRk9STUFUX0EyUjEwRzEwQjEwX1NTQ0FMRURfUEFDSzMyIiwKKyAgICAiQTJSMTBH
MTBCMTBfVUlOVF9QQUNLMzIiOiAiVktfRk9STUFUX0EyUjEwRzEwQjEwX1VJTlRfUEFDSzMyIiwK
KyAgICAiQTJSMTBHMTBCMTBfU0lOVF9QQUNLMzIiOiAiVktfRk9STUFUX0EyUjEwRzEwQjEwX1NJ
TlRfUEFDSzMyIiwKKyAgICAiQTJCMTBHMTBSMTBfVU5PUk1fUEFDSzMyIjogIlZLX0ZPUk1BVF9B
MkIxMEcxMFIxMF9VTk9STV9QQUNLMzIiLAorICAgICJBMkIxMEcxMFIxMF9TTk9STV9QQUNLMzIi
OiAiVktfRk9STUFUX0EyQjEwRzEwUjEwX1NOT1JNX1BBQ0szMiIsCisgICAgIkEyQjEwRzEwUjEw
X1VTQ0FMRURfUEFDSzMyIjogIlZLX0ZPUk1BVF9BMkIxMEcxMFIxMF9VU0NBTEVEX1BBQ0szMiIs
CisgICAgIkEyQjEwRzEwUjEwX1NTQ0FMRURfUEFDSzMyIjogIlZLX0ZPUk1BVF9BMkIxMEcxMFIx
MF9TU0NBTEVEX1BBQ0szMiIsCisgICAgIkEyQjEwRzEwUjEwX1VJTlRfUEFDSzMyIjogIlZLX0ZP
Uk1BVF9BMkIxMEcxMFIxMF9VSU5UX1BBQ0szMiIsCisgICAgIkEyQjEwRzEwUjEwX1NJTlRfUEFD
SzMyIjogIlZLX0ZPUk1BVF9BMkIxMEcxMFIxMF9TSU5UX1BBQ0szMiIsCisgICAgIlIxNl9VTk9S
TSI6ICJWS19GT1JNQVRfUjE2X1VOT1JNIiwKKyAgICAiUjE2X1NOT1JNIjogIlZLX0ZPUk1BVF9S
MTZfU05PUk0iLAorICAgICJSMTZfVUlOVCI6ICJWS19GT1JNQVRfUjE2X1VJTlQiLAorICAgICJS
MTZfU0lOVCI6ICJWS19GT1JNQVRfUjE2X1NJTlQiLAorICAgICJSMTZfRkxPQVQiOiAiVktfRk9S
TUFUX1IxNl9TRkxPQVQiLAorICAgICJSMTZHMTZfVU5PUk0iOiAiVktfRk9STUFUX1IxNkcxNl9V
Tk9STSIsCisgICAgIlIxNkcxNl9TTk9STSI6ICJWS19GT1JNQVRfUjE2RzE2X1NOT1JNIiwKKyAg
ICAiUjE2RzE2X1VJTlQiOiAiVktfRk9STUFUX1IxNkcxNl9VSU5UIiwKKyAgICAiUjE2RzE2X1NJ
TlQiOiAiVktfRk9STUFUX1IxNkcxNl9TSU5UIiwKKyAgICAiUjE2RzE2X0ZMT0FUIjogIlZLX0ZP
Uk1BVF9SMTZHMTZfU0ZMT0FUIiwKKyAgICAiUjE2RzE2QjE2X1VOT1JNIjogIlZLX0ZPUk1BVF9S
MTZHMTZCMTZfVU5PUk0iLAorICAgICJSMTZHMTZCMTZfU05PUk0iOiAiVktfRk9STUFUX1IxNkcx
NkIxNl9TTk9STSIsCisgICAgIlIxNkcxNkIxNl9VSU5UIjogIlZLX0ZPUk1BVF9SMTZHMTZCMTZf
VUlOVCIsCisgICAgIlIxNkcxNkIxNl9TSU5UIjogIlZLX0ZPUk1BVF9SMTZHMTZCMTZfU0lOVCIs
CisgICAgIlIxNkcxNkIxNl9GTE9BVCI6ICJWS19GT1JNQVRfUjE2RzE2QjE2X1NGTE9BVCIsCisg
ICAgIlIxNkcxNkIxNkExNl9VTk9STSI6ICJWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNIiwK
KyAgICAiUjE2RzE2QjE2QTE2X1NOT1JNIjogIlZLX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk0i
LAorICAgICJSMTZHMTZCMTZBMTZfVUlOVCI6ICJWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQi
LAorICAgICJSMTZHMTZCMTZBMTZfU0lOVCI6ICJWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQi
LAorICAgICJSMTZHMTZCMTZBMTZfRkxPQVQiOiAiVktfRk9STUFUX1IxNkcxNkIxNkExNl9TRkxP
QVQiLAorICAgICJSMzJfVUlOVCI6ICJWS19GT1JNQVRfUjMyX1VJTlQiLAorICAgICJSMzJfU0lO
VCI6ICJWS19GT1JNQVRfUjMyX1NJTlQiLAorICAgICJSMzJfRkxPQVQiOiAiVktfRk9STUFUX1Iz
Ml9TRkxPQVQiLAorICAgICJSMzJHMzJfVUlOVCI6ICJWS19GT1JNQVRfUjMyRzMyX1VJTlQiLAor
ICAgICJSMzJHMzJfU0lOVCI6ICJWS19GT1JNQVRfUjMyRzMyX1NJTlQiLAorICAgICJSMzJHMzJf
RkxPQVQiOiAiVktfRk9STUFUX1IzMkczMl9TRkxPQVQiLAorICAgICJSMzJHMzJCMzJfVUlOVCI6
ICJWS19GT1JNQVRfUjMyRzMyQjMyX1VJTlQiLAorICAgICJSMzJHMzJCMzJfU0lOVCI6ICJWS19G
T1JNQVRfUjMyRzMyQjMyX1NJTlQiLAorICAgICJSMzJHMzJCMzJfRkxPQVQiOiAiVktfRk9STUFU
X1IzMkczMkIzMl9TRkxPQVQiLAorICAgICJSMzJHMzJCMzJBMzJfVUlOVCI6ICJWS19GT1JNQVRf
UjMyRzMyQjMyQTMyX1VJTlQiLAorICAgICJSMzJHMzJCMzJBMzJfU0lOVCI6ICJWS19GT1JNQVRf
UjMyRzMyQjMyQTMyX1NJTlQiLAorICAgICJSMzJHMzJCMzJBMzJfRkxPQVQiOiAiVktfRk9STUFU
X1IzMkczMkIzMkEzMl9TRkxPQVQiLAorICAgICJSNjRfVUlOVCI6ICJWS19GT1JNQVRfUjY0X1VJ
TlQiLAorICAgICJSNjRfU0lOVCI6ICJWS19GT1JNQVRfUjY0X1NJTlQiLAorICAgICJSNjRfRkxP
QVQiOiAiVktfRk9STUFUX1I2NF9TRkxPQVQiLAorICAgICJSNjRHNjRfVUlOVCI6ICJWS19GT1JN
QVRfUjY0RzY0X1VJTlQiLAorICAgICJSNjRHNjRfU0lOVCI6ICJWS19GT1JNQVRfUjY0RzY0X1NJ
TlQiLAorICAgICJSNjRHNjRfRkxPQVQiOiAiVktfRk9STUFUX1I2NEc2NF9TRkxPQVQiLAorICAg
ICJSNjRHNjRCNjRfVUlOVCI6ICJWS19GT1JNQVRfUjY0RzY0QjY0X1VJTlQiLAorICAgICJSNjRH
NjRCNjRfU0lOVCI6ICJWS19GT1JNQVRfUjY0RzY0QjY0X1NJTlQiLAorICAgICJSNjRHNjRCNjRf
RkxPQVQiOiAiVktfRk9STUFUX1I2NEc2NEI2NF9TRkxPQVQiLAorICAgICJSNjRHNjRCNjRBNjRf
VUlOVCI6ICJWS19GT1JNQVRfUjY0RzY0QjY0QTY0X1VJTlQiLAorICAgICJSNjRHNjRCNjRBNjRf
U0lOVCI6ICJWS19GT1JNQVRfUjY0RzY0QjY0QTY0X1NJTlQiLAorICAgICJSNjRHNjRCNjRBNjRf
RkxPQVQiOiAiVktfRk9STUFUX1I2NEc2NEI2NEE2NF9TRkxPQVQiLAorICAgICJCMTBHMTFSMTFf
VUZMT0FUX1BBQ0szMiI6ICJWS19GT1JNQVRfQjEwRzExUjExX1VGTE9BVF9QQUNLMzIiLAorICAg
ICJFNUI5RzlSOV9VRkxPQVRfUEFDSzMyIjogIlZLX0ZPUk1BVF9FNUI5RzlSOV9VRkxPQVRfUEFD
SzMyIiwKKyAgICAiRDE2X1VOT1JNIjogIlZLX0ZPUk1BVF9EMTZfVU5PUk0iLAorICAgICJYOF9E
MjRfVU5PUk1fUEFDSzMyIjogIlZLX0ZPUk1BVF9YOF9EMjRfVU5PUk1fUEFDSzMyIiwKKyAgICAi
RDMyX0ZMT0FUIjogIlZLX0ZPUk1BVF9EMzJfU0ZMT0FUIiwKKyAgICAiUzhfVUlOVCI6ICJWS19G
T1JNQVRfUzhfVUlOVCIsCisgICAgIkQxNl9VTk9STV9TOF9VSU5UIjogIlZLX0ZPUk1BVF9EMTZf
VU5PUk1fUzhfVUlOVCIsCisgICAgIkQyNF9VTk9STV9TOF9VSU5UIjogIlZLX0ZPUk1BVF9EMjRf
VU5PUk1fUzhfVUlOVCIsCisgICAgIkQzMl9TRkxPQVRfUzhfVUlOVCI6ICJWS19GT1JNQVRfRDMy
X1NGTE9BVF9TOF9VSU5UIiwKKyAgICAiQkMxX1JHQl9VTk9STV9CTE9DSyI6ICJWS19GT1JNQVRf
QkMxX1JHQl9VTk9STV9CTE9DSyIsCisgICAgIkJDMV9SR0JfU1JHQl9CTE9DSyI6ICJWS19GT1JN
QVRfQkMxX1JHQl9TUkdCX0JMT0NLIiwKKyAgICAiQkMxX1JHQkFfVU5PUk1fQkxPQ0siOiAiVktf
Rk9STUFUX0JDMV9SR0JBX1VOT1JNX0JMT0NLIiwKKyAgICAiQkMxX1JHQkFfU1JHQl9CTE9DSyI6
ICJWS19GT1JNQVRfQkMxX1JHQkFfU1JHQl9CTE9DSyIsCisgICAgIkJDMl9VTk9STV9CTE9DSyI6
ICJWS19GT1JNQVRfQkMyX1VOT1JNX0JMT0NLIiwKKyAgICAiQkMyX1NSR0JfQkxPQ0siOiAiVktf
Rk9STUFUX0JDMl9TUkdCX0JMT0NLIiwKKyAgICAiQkMzX1VOT1JNX0JMT0NLIjogIlZLX0ZPUk1B
VF9CQzNfVU5PUk1fQkxPQ0siLAorICAgICJCQzNfU1JHQl9CTE9DSyI6ICJWS19GT1JNQVRfQkMz
X1NSR0JfQkxPQ0siLAorICAgICJCQzRfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0JDNF9VTk9S
TV9CTE9DSyIsCisgICAgIkJDNF9TTk9STV9CTE9DSyI6ICJWS19GT1JNQVRfQkM0X1NOT1JNX0JM
T0NLIiwKKyAgICAiQkM1X1VOT1JNX0JMT0NLIjogIlZLX0ZPUk1BVF9CQzVfVU5PUk1fQkxPQ0si
LAorICAgICJCQzVfU05PUk1fQkxPQ0siOiAiVktfRk9STUFUX0JDNV9TTk9STV9CTE9DSyIsCisg
ICAgIkJDNkhfVUZMT0FUX0JMT0NLIjogIlZLX0ZPUk1BVF9CQzZIX1VGTE9BVF9CTE9DSyIsCisg
ICAgIkJDNkhfU0ZMT0FUX0JMT0NLIjogIlZLX0ZPUk1BVF9CQzZIX1NGTE9BVF9CTE9DSyIsCisg
ICAgIkJDN19VTk9STV9CTE9DSyI6ICJWS19GT1JNQVRfQkM3X1VOT1JNX0JMT0NLIiwKKyAgICAi
QkM3X1NSR0JfQkxPQ0siOiAiVktfRk9STUFUX0JDN19TUkdCX0JMT0NLIiwKKyAgICAiRVRDMl9S
OEc4QjhfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0VUQzJfUjhHOEI4X1VOT1JNX0JMT0NLIiwK
KyAgICAiRVRDMl9SOEc4QjhfU1JHQl9CTE9DSyI6ICJWS19GT1JNQVRfRVRDMl9SOEc4QjhfU1JH
Ql9CTE9DSyIsCisgICAgIkVUQzJfUjhHOEI4QTFfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0VU
QzJfUjhHOEI4QTFfVU5PUk1fQkxPQ0siLAorICAgICJFVEMyX1I4RzhCOEExX1NSR0JfQkxPQ0si
OiAiVktfRk9STUFUX0VUQzJfUjhHOEI4QTFfU1JHQl9CTE9DSyIsCisgICAgIkVUQzJfUjhHOEI4
QThfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0VUQzJfUjhHOEI4QThfVU5PUk1fQkxPQ0siLAor
ICAgICJFVEMyX1I4RzhCOEE4X1NSR0JfQkxPQ0siOiAiVktfRk9STUFUX0VUQzJfUjhHOEI4QThf
U1JHQl9CTE9DSyIsCisgICAgIkVBQ19SMTFfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0VBQ19S
MTFfVU5PUk1fQkxPQ0siLAorICAgICJFQUNfUjExX1NOT1JNX0JMT0NLIjogIlZLX0ZPUk1BVF9F
QUNfUjExX1NOT1JNX0JMT0NLIiwKKyAgICAiRUFDX1IxMUcxMV9VTk9STV9CTE9DSyI6ICJWS19G
T1JNQVRfRUFDX1IxMUcxMV9VTk9STV9CTE9DSyIsCisgICAgIkVBQ19SMTFHMTFfU05PUk1fQkxP
Q0siOiAiVktfRk9STUFUX0VBQ19SMTFHMTFfU05PUk1fQkxPQ0siLAorICAgICJBU1RDXzR4NF9V
Tk9STV9CTE9DSyI6ICJWS19GT1JNQVRfQVNUQ180eDRfVU5PUk1fQkxPQ0siLAorICAgICJBU1RD
XzR4NF9TUkdCX0JMT0NLIjogIlZLX0ZPUk1BVF9BU1RDXzR4NF9TUkdCX0JMT0NLIiwKKyAgICAi
QVNUQ181eDRfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0FTVENfNXg0X1VOT1JNX0JMT0NLIiwK
KyAgICAiQVNUQ181eDRfU1JHQl9CTE9DSyI6ICJWS19GT1JNQVRfQVNUQ181eDRfU1JHQl9CTE9D
SyIsCisgICAgIkFTVENfNXg1X1VOT1JNX0JMT0NLIjogIlZLX0ZPUk1BVF9BU1RDXzV4NV9VTk9S
TV9CTE9DSyIsCisgICAgIkFTVENfNXg1X1NSR0JfQkxPQ0siOiAiVktfRk9STUFUX0FTVENfNXg1
X1NSR0JfQkxPQ0siLAorICAgICJBU1RDXzZ4NV9VTk9STV9CTE9DSyI6ICJWS19GT1JNQVRfQVNU
Q182eDVfVU5PUk1fQkxPQ0siLAorICAgICJBU1RDXzZ4NV9TUkdCX0JMT0NLIjogIlZLX0ZPUk1B
VF9BU1RDXzZ4NV9TUkdCX0JMT0NLIiwKKyAgICAiQVNUQ182eDZfVU5PUk1fQkxPQ0siOiAiVktf
Rk9STUFUX0FTVENfNng2X1VOT1JNX0JMT0NLIiwKKyAgICAiQVNUQ182eDZfU1JHQl9CTE9DSyI6
ICJWS19GT1JNQVRfQVNUQ182eDZfU1JHQl9CTE9DSyIsCisgICAgIkFTVENfOHg1X1VOT1JNX0JM
T0NLIjogIlZLX0ZPUk1BVF9BU1RDXzh4NV9VTk9STV9CTE9DSyIsCisgICAgIkFTVENfOHg1X1NS
R0JfQkxPQ0siOiAiVktfRk9STUFUX0FTVENfOHg1X1NSR0JfQkxPQ0siLAorICAgICJBU1RDXzh4
Nl9VTk9STV9CTE9DSyI6ICJWS19GT1JNQVRfQVNUQ184eDZfVU5PUk1fQkxPQ0siLAorICAgICJB
U1RDXzh4Nl9TUkdCX0JMT0NLIjogIlZLX0ZPUk1BVF9BU1RDXzh4Nl9TUkdCX0JMT0NLIiwKKyAg
ICAiQVNUQ184eDhfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0FTVENfOHg4X1VOT1JNX0JMT0NL
IiwKKyAgICAiQVNUQ184eDhfU1JHQl9CTE9DSyI6ICJWS19GT1JNQVRfQVNUQ184eDhfU1JHQl9C
TE9DSyIsCisgICAgIkFTVENfMTB4NV9VTk9STV9CTE9DSyI6ICJWS19GT1JNQVRfQVNUQ18xMHg1
X1VOT1JNX0JMT0NLIiwKKyAgICAiQVNUQ18xMHg1X1NSR0JfQkxPQ0siOiAiVktfRk9STUFUX0FT
VENfMTB4NV9TUkdCX0JMT0NLIiwKKyAgICAiQVNUQ18xMHg2X1VOT1JNX0JMT0NLIjogIlZLX0ZP
Uk1BVF9BU1RDXzEweDZfVU5PUk1fQkxPQ0siLAorICAgICJBU1RDXzEweDZfU1JHQl9CTE9DSyI6
ICJWS19GT1JNQVRfQVNUQ18xMHg2X1NSR0JfQkxPQ0siLAorICAgICJBU1RDXzEweDhfVU5PUk1f
QkxPQ0siOiAiVktfRk9STUFUX0FTVENfMTB4OF9VTk9STV9CTE9DSyIsCisgICAgIkFTVENfMTB4
OF9TUkdCX0JMT0NLIjogIlZLX0ZPUk1BVF9BU1RDXzEweDhfU1JHQl9CTE9DSyIsCisgICAgIkFT
VENfMTB4MTBfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0FTVENfMTB4MTBfVU5PUk1fQkxPQ0si
LAorICAgICJBU1RDXzEweDEwX1NSR0JfQkxPQ0siOiAiVktfRk9STUFUX0FTVENfMTB4MTBfU1JH
Ql9CTE9DSyIsCisgICAgIkFTVENfMTJ4MTBfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0FTVENf
MTJ4MTBfVU5PUk1fQkxPQ0siLAorICAgICJBU1RDXzEyeDEwX1NSR0JfQkxPQ0siOiAiVktfRk9S
TUFUX0FTVENfMTJ4MTBfU1JHQl9CTE9DSyIsCisgICAgIkFTVENfMTJ4MTJfVU5PUk1fQkxPQ0si
OiAiVktfRk9STUFUX0FTVENfMTJ4MTJfVU5PUk1fQkxPQ0siLAorICAgICJBU1RDXzEyeDEyX1NS
R0JfQkxPQyI6ICJWS19GT1JNQVRfQVNUQ18xMngxMl9TUkdCX0JMT0NLIgorfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92
a19mb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40MDc3OGQyMzRmZTE2NGY2MTk0OWM0NjllNTFkZjY2MjAzMzczMDhlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi92a19mb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAKQEAgLTAsMCArMSw4NjggQEAKKy8v
IEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQuCisvLyBHZW5lcmF0ZWQgYnkgZ2VuX3ZrX2Zv
cm1hdF90YWJsZS5weSB1c2luZyBkYXRhIGZyb20gdmtfZm9ybWF0X21hcC5qc29uCisvLworLy8g
Q29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworLy8gdmtfZm9ybWF0X3RhYmxlOgorLy8gICBRdWVyaWVzIGZvciBmdWxsIFZ1bGthbiBmb3Jt
YXQgaW5mb3JtYXRpb24gYmFzZWQgb24gR0wgZm9ybWF0LgorCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL2Zvcm1hdHV0aWxzdmsuaCIKKworI2luY2x1ZGUgImltYWdlX3V0aWwv
Y29weWltYWdlLmgiCisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9nZW5lcmF0ZW1pcC5oIgorI2luY2x1
ZGUgImltYWdlX3V0aWwvbG9hZGltYWdlLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBhbmdsZTsKKwor
bmFtZXNwYWNlIHJ4Cit7CisKK25hbWVzcGFjZSB2aworeworCisvLyBzdGF0aWMKK2NvbnN0IEZv
cm1hdCAmRm9ybWF0OjpHZXQoR0xlbnVtIGludGVybmFsRm9ybWF0KQoreworICAgIC8vIGNsYW5n
LWZvcm1hdCBvZmYKKyAgICBzd2l0Y2ggKGludGVybmFsRm9ybWF0KQorICAgIHsKKyAgICAgICAg
Y2FzZSBHTF9CR1I1NjVfQU5HTEVYOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3RleHByIEZvcm1hdCBpbmZvKEdMX0JHUjU2NV9BTkdMRVgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCNUc2UjVfVU5PUk0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9CNUc2UjVf
VU5PUk1fUEFDSzE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgR0xfQkdSNV9BMV9BTkdMRVg6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgRm9ybWF0IGluZm8oR0xfQkdSNV9BMV9BTkdMRVgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCNUc1UjVBMV9VTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0I1RzVS
NUExX1VOT1JNX1BBQ0sxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEdMX0JHUkE0X0FOR0xFWDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9CR1JBNF9BTkdMRVgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCNEc0UjRBNF9VTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0I0RzRS
NEE0X1VOT1JNX1BBQ0sxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEdMX0JHUkE4X0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBGb3JtYXQgaW5mbyhHTF9CR1JBOF9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCOEc4UjhBOF9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0I4RzhSOEE4X1VO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsK
KyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09N
UFJFU1NFRF9SMTFfRUFDOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHBy
IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUjExX0VBQywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkVBQ19SMTFfVU5PUk1fQkxP
Q0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9F
QUNfUjExX1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SRzExX0VBQzoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHMTFfRUFDLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6
RUFDX1IxMUcxMV9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVktfRk9STUFUX0VBQ19SMTFHMTFfVU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQjhfRVRDMjoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9D
T01QUkVTU0VEX1JHQjhfRVRDMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkVUQzJfUjhHOEI4X1VOT1JNX0JMT0NLLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfRVRDMl9SOEc4Qjhf
VU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURf
UkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpFVEMyX1I4RzhCOEExX1VOT1JNX0JM
T0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRf
RVRDMl9SOEc4QjhBMV9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4RkY+KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQzoKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkE4X0VU
QzJfRUFDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6
Rm9ybWF0OjpJRDo6RVRDMl9SOEc4QjhBOF9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0VUQzJfUjhHOEI4QThfVU5PUk1fQkxP
Q0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hS
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0
OjpJRDo6QVNUQ18xMHgxMF9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVktfRk9STUFUX0FTVENfMTB4MTBfVU5PUk1fQkxPQ0ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFf
QVNUQ18xMHg1X0tIUjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBG
b3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tIUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkFTVENfMTB4
NV9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VktfRk9STUFUX0FTVENfMTB4NV9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NP
TVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QVNUQ18xMHg2X1VOT1JNX0JMT0NLLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfQVNUQ18x
MHg2X1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFI6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FT
VENfMTB4OF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEOjpBU1RDXzEweDhfVU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9BU1RDXzEweDhfVU5PUk1fQkxPQ0ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1JHQkFfQVNUQ18xMngxMF9LSFI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJ
RDo6QVNUQ18xMngxMF9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVktfRk9STUFUX0FTVENfMTJ4MTBfVU5PUk1fQkxPQ0ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNU
Q18xMngxMl9LSFI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9y
bWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hSLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QVNUQ18xMngx
Ml9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VktfRk9STUFUX0FTVENfMTJ4MTJfVU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ180eDRfS0hSOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NP
TVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpBU1RDXzR4NF9VTk9STV9CTE9DSywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0FTVENfNHg0
X1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg0X0tIUjoKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181
eDRfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6
Rm9ybWF0OjpJRDo6QVNUQ181eDRfVU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9BU1RDXzV4NF9VTk9STV9CTE9DSywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdC
QV9BU1RDXzV4NV9LSFI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Rm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNXg1X0tIUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkFTVENfNXg1
X1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
S19GT1JNQVRfQVNUQ181eDVfVU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDVfS0hSOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBS
RVNTRURfUkdCQV9BU1RDXzZ4NV9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpBU1RDXzZ4NV9VTk9STV9CTE9DSywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0FTVENfNng1X1VO
T1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
R0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUjoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDZf
S0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9y
bWF0OjpJRDo6QVNUQ182eDZfVU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9BU1RDXzZ4Nl9VTk9STV9CTE9DSywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9B
U1RDXzh4NV9LSFI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9y
bWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg1X0tIUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkFTVENfOHg1X1VO
T1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19G
T1JNQVRfQVNUQ184eDVfVU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDZfS0hSOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNT
RURfUkdCQV9BU1RDXzh4Nl9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpBU1RDXzh4Nl9VTk9STV9CTE9DSywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0FTVENfOHg2X1VOT1JN
X0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xf
Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUjoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hS
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0
OjpJRDo6QVNUQ184eDhfVU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFZLX0ZPUk1BVF9BU1RDXzh4OF9VTk9STV9CTE9DSywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDFfRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1h
dCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QkMxX1JHQkFfVU5P
Uk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZP
Uk1BVF9CQzFfUkdCQV9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NF
RF9SR0JfUzNUQ19EWFQxX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkJDMV9SR0JfVU5PUk1fQkxPQ0ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9CQzFfUkdCX1VOT1JNX0JM
T0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsK
KyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09N
UFJFU1NFRF9TSUdORURfUjExX0VBQzoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RUFD
X1IxMV9TTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVktfRk9STUFUX0VBQ19SMTFfU05PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQzoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01Q
UkVTU0VEX1NJR05FRF9SRzExX0VBQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkVBQ19SMTFHMTFfU05PUk1fQkxPQ0ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9FQUNfUjExRzEx
X1NOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFI6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpBU1RDXzEweDEwX1NSR0JfQkxPQ0ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9BU1RDXzEw
eDEwX1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpBU1RDXzEweDVfU1JHQl9CTE9DSywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0FTVENfMTB4
NV9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg2X0tIUjoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QVNUQ18xMHg2X1NSR0JfQkxPQ0ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9BU1RDXzEweDZf
U1JHQl9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFI6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ18xMHg4X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkFTVENfMTB4OF9TUkdCX0JMT0NLLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfQVNUQ18xMHg4X1NS
R0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBH
TF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUjoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkFTVENfMTJ4MTBfU1JHQl9CTE9DSywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0FTVENfMTJ4MTBf
U1JHQl9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUjoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzR4NF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpBU1RDXzR4NF9TUkdCX0JMT0NLLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfQVNUQ180eDRfU1JHQl9C
TE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg0X0tIUjoKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzV4NF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlOjpGb3JtYXQ6OklEOjpBU1RDXzV4NF9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfQVNUQ181eDRfU1JHQl9CTE9DSywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUjoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzV4NV9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
OjpGb3JtYXQ6OklEOjpBU1RDXzV4NV9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfQVNUQ181eDVfU1JHQl9CTE9DSywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfNng1X0tIUjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9L
SFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpBU1RDXzZ4NV9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWS19GT1JNQVRfQVNUQ182eDVfU1JHQl9CTE9DSywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfNng2X0tIUjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklE
OjpBU1RDXzZ4Nl9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWS19GT1JNQVRfQVNUQ182eDZfU1JHQl9CTE9DSywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfOHg1X0tIUjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3Jt
YXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9LSFIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpBU1RD
Xzh4NV9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWS19GT1JNQVRfQVNUQ184eDVfU1JHQl9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2
X0tIUjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5m
byhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpBU1RDXzh4Nl9T
UkdCX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19G
T1JNQVRfQVNUQ184eDZfU1JHQl9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUjoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9D
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpBU1RDXzh4OF9TUkdCX0JM
T0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRf
QVNUQ184eDhfU1JHQl9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0VUQzJfRUFDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RVRDMl9SOEc4QjhBOF9TUkdCX0JMT0NLLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfRVRDMl9SOEc4
QjhBOF9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6
OkVUQzJfUjhHOEI4X1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZLX0ZPUk1BVF9FVEMyX1I4RzhCOF9TUkdCX0JMT0NLLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5D
SFRIUk9VR0hfQUxQSEExX0VUQzI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEEx
X0VUQzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpFVEMyX1I4RzhCOEExX1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9FVEMyX1I4RzhCOEExX1NSR0JfQkxPQ0ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9ERVBUSDI0
X1NURU5DSUw4OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1h
dCBpbmZvKEdMX0RFUFRIMjRfU1RFTkNJTDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpEMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0QyNF9VTk9STV9T
OF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xf
REVQVEhfQ09NUE9ORU5UMTY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgRm9ybWF0IGluZm8oR0xfREVQVEhfQ09NUE9ORU5UMTYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpEMTZfVU5PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9EMTZfVU5PUk0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9ERVBUSF9D
T01QT05FTlQzMkY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9y
bWF0IGluZm8oR0xfREVQVEhfQ09NUE9ORU5UMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RDMyX0ZMT0FULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfRDMyX1NGTE9BVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9M
T1NTWV9ERUNPREVfQU5HTEU6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgRm9ybWF0IGluZm8oR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9VTkRF
RklORUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9F
VEMxX1JHQjhfT0VTOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZv
cm1hdCBpbmZvKEdMX0VUQzFfUkdCOF9PRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfVU5ERUZJTkVELAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfTk9ORToKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9OT05FLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX1VOREVG
SU5FRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1Ix
NkY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8o
R0xfUjE2RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OkZvcm1hdDo6SUQ6OlIxNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVktfRk9STUFUX1IxNl9TRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBHTF9SMTZJOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1IxNkksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZfU0lOVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX1IxNl9TSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUjE2VUk6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUjE2VUks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VktfRk9STUFUX1IxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgR0xfUjE2X0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBGb3JtYXQgaW5mbyhHTF9SMTZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2X1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjE2X1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAg
IHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUjE2X1NOT1JNX0VYVDoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9S
MTZfU05PUk1fRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZTo6Rm9ybWF0OjpJRDo6UjE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWS19GT1JNQVRfUjE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUjMyRjoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SMzJGLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyX0ZMT0FULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjMyX1NGTE9B
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1IzMkk6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xf
UjMySSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZv
cm1hdDo6SUQ6OlIzMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWS19GT1JNQVRfUjMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBHTF9SMzJVSToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SMzJVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMl9VSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjMyX1VJTlQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SODoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SOCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4X1VO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRf
UjhfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBH
TF9SOEk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGlu
Zm8oR0xfUjhJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6Rm9ybWF0OjpJRDo6UjhfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVktfRk9STUFUX1I4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBHTF9SOFVJOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1I4VUksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOF9VSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjhfVUlOVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1I4X1NOT1JNOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1I4X1NOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0
OjpJRDo6UjhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZLX0ZPUk1BVF9SOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEdMX1JHMTZGOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIEZvcm1hdCBpbmZvKEdMX1JHMTZGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2X0ZMT0FULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjE2RzE2X1NGTE9BVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHMTZJOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHMTZJ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0
OjpJRDo6UjE2RzE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZLX0ZPUk1BVF9SMTZHMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIEdMX1JHMTZVSToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SRzE2VUksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZfVUlOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX1IxNkcxNl9VSU5U
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkcxNl9F
WFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8o
R0xfUkcxNl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SMTZHMTZfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SRzE2X1NOT1JNX0VYVDoKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SRzE2X1NOT1JN
X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZv
cm1hdDo6SUQ6OlIxNkcxNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVktfRk9STUFUX1IxNkcxNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHMzJGOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHMzJGLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyRzMyX0ZMT0FULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjMyRzMy
X1NGTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdM
X1JHMzJJOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBp
bmZvKEdMX1JHMzJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZTo6Rm9ybWF0OjpJRDo6UjMyRzMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SMzJHMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5m
bzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHMzJVSToKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SRzMyVUksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMzJHMzJf
VUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFU
X1IzMkczMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgR0xfUkc4OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1h
dCBpbmZvKEdMX1JHOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SOEc4X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkc4SToKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SRzhJLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOF9TSU5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjhHOF9T
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsK
KyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkc4
VUk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8o
R0xfUkc4VUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
OjpGb3JtYXQ6OklEOjpSOEc4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZLX0ZPUk1BVF9SOEc4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBHTF9SRzhfU05PUk06CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkc4X1NOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOF9TTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX1I4
RzhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBH
TF9SR0I6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGlu
Zm8oR0xfUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6Rm9ybWF0OjpJRDo6UjhHOEI4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWS19GT1JNQVRfUjhHOEI4X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCMTZGOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQjE2RiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIx
Nl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9S
TUFUX1IxNkcxNkIxNl9TRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9SR0IxNkk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCMTZJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2X1NJTlQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SMTZHMTZCMTZfU0lO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQjE2
VUk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8o
R0xfUkdCMTZVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjE2RzE2QjE2X1VJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0IxNl9FWFQ6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCMTZfRVhULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJ
RDo6UjE2RzE2QjE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWS19GT1JNQVRfUjE2RzE2QjE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCMTZfU05PUk1fRVhUOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQjE2X1NOT1JNX0VYVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6
SUQ6OlIxNkcxNkIxNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVktfRk9STUFUX1IxNkcxNkIxNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQjMyRjoKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0IzMkYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMzJHMzJCMzJfRkxP
QVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9S
MzJHMzJCMzJfU0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfUkdCMzJJOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHBy
IEZvcm1hdCBpbmZvKEdMX1JHQjMySSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIzMl9TSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjMyRzMyQjMyX1NJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0IzMlVJOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JH
QjMyVUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpSMzJHMzJCMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVktfRk9STUFUX1IzMkczMkIzMl9VSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCNTY1OgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQjU2NSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI1RzZCNV9V
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFU
X1I1RzZCNV9VTk9STV9QQUNLMTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9SR0I1X0ExOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQjVfQTEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSNUc1QjVBMV9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX1I1RzVCNUExX1VO
T1JNX1BBQ0sxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IEdMX1JHQjg6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0
IGluZm8oR0xfUkdCOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVktfRk9STUFUX1I4RzhCOF9VTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQjhJOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQjhJLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4
X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1B
VF9SOEc4QjhfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIEdMX1JHQjhVSToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBG
b3JtYXQgaW5mbyhHTF9SR0I4VUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhfVUlOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX1I4RzhCOF9VSU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCOF9TTk9STToKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0I4X1NO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9y
bWF0OjpJRDo6UjhHOEI4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWS19GT1JNQVRfUjhHOEI4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0JBLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdM
X1JHQkExNkY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0
IGluZm8oR0xfUkdCQTE2RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX1IxNkcxNkIxNkExNl9TRkxPQVQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAg
ICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0JBMTZJ
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdM
X1JHQkExNkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
OjpGb3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVktfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQTE2VUk6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCQTE2VUks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSMTZHMTZCMTZBMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVktfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQTE2X0VYVDoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0JBMTZfRVhULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6
UjE2RzE2QjE2QTE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQTE2X1NOT1JNX0VYVDoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0JBMTZfU05PUk1f
RVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9y
bWF0OjpJRDo6UjE2RzE2QjE2QTE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQTMyRjoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0JBMzJGLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6
UjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWS19GT1JNQVRfUjMyRzMyQjMyQTMyX1NGTE9BVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQkEzMkk6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCQTMySSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIz
MkEzMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19G
T1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBHTF9SR0JBMzJVSToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0JBMzJVSSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9VSU5U
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjMy
RzMyQjMyQTMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBHTF9SR0JBNDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBG
b3JtYXQgaW5mbyhHTF9SR0JBNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI0RzRCNEE0X1VOT1JNLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjRHNEI0QTRfVU5PUk1fUEFDSzE2
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQTg6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xf
UkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVktfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQThJOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQkE4SSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4
X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1B
VF9SOEc4QjhBOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfUkdCQThVSToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBGb3JtYXQgaW5mbyhHTF9SR0JBOFVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVUlOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX1I4RzhCOEE4X1VJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0JBOF9TTk9S
TToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhH
TF9SR0JBOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjhHOEI4QThfU05PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0lOREVYODoKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9TVEVO
Q0lMX0lOREVYOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6OlM4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZLX0ZPUk1BVF9TOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAv
LyBjbGFuZy1mb3JtYXQgb24KKworICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBub0luZm8oR0xfTk9ORSwgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsIFZLX0ZPUk1B
VF9VTkRFRklORUQsIG51bGxwdHIpOworICAgIHJldHVybiBub0luZm87Cit9CisKK30gIC8vIG5h
bWVzcGFjZSB2aworCit9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9zaWduYWxfdXRpbHMuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3NpZ25hbF91dGlscy5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDYyZDQ1Yjk1M2ZjN2U2YzU2M2I5ODE3ZTRlOTBhOTQ0NTdjODBmODgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3NpZ25hbF91dGlscy5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwxMDMgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIHNpZ25hbF91dGlsczoKLS8vICAgSGVs
cGVyIGNsYXNzZXMgZm9yIHRyYWNraW5nIGRlcGVuZGVudCBzdGF0ZSBjaGFuZ2VzIGJldHdlZW4g
b2JqZWN0cy4KLS8vICAgVGhlc2UgY2hhbmdlcyBhcmUgc2lnbmFsZWQgdG8gdGhlIGRlcGVuZGVu
dCBjbGFzcyB2aWEgY2hhbm5lbHMuCi0KLSNpbmNsdWRlICJsaWJBTkdMRS9zaWduYWxfdXRpbHMu
aCIKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4KLQotI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgot
Ci1uYW1lc3BhY2UgYW5nbGUKLXsKLQotQnJvYWRjYXN0Q2hhbm5lbDo6QnJvYWRjYXN0Q2hhbm5l
bCgpCi17Ci19Ci0KLUJyb2FkY2FzdENoYW5uZWw6On5Ccm9hZGNhc3RDaGFubmVsKCkKLXsKLSAg
ICByZXNldCgpOwotfQotCi12b2lkIEJyb2FkY2FzdENoYW5uZWw6OmFkZFJlY2VpdmVyKENoYW5u
ZWxCaW5kaW5nICpyZWNlaXZlcikKLXsKLSAgICBBU1NFUlQoc3RkOjpmaW5kKG1SZWNlaXZlcnMu
YmVnaW4oKSwgbVJlY2VpdmVycy5lbmQoKSwgcmVjZWl2ZXIpID09IG1SZWNlaXZlcnMuZW5kKCkp
OwotICAgIG1SZWNlaXZlcnMucHVzaF9iYWNrKHJlY2VpdmVyKTsKLX0KLQotdm9pZCBCcm9hZGNh
c3RDaGFubmVsOjpyZW1vdmVSZWNlaXZlcihDaGFubmVsQmluZGluZyAqcmVjZWl2ZXIpCi17Ci0g
ICAgYXV0byBpdGVyID0gc3RkOjpmaW5kKG1SZWNlaXZlcnMuYmVnaW4oKSwgbVJlY2VpdmVycy5l
bmQoKSwgcmVjZWl2ZXIpOwotICAgIEFTU0VSVChpdGVyICE9IG1SZWNlaXZlcnMuZW5kKCkpOwot
ICAgIG1SZWNlaXZlcnMuZXJhc2UoaXRlcik7Ci19Ci0KLXZvaWQgQnJvYWRjYXN0Q2hhbm5lbDo6
c2lnbmFsKCkgY29uc3QKLXsKLSAgICBpZiAobVJlY2VpdmVycy5lbXB0eSgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8gKnJlY2VpdmVyIDogbVJlY2VpdmVycykKLSAg
ICB7Ci0gICAgICAgIHJlY2VpdmVyLT5zaWduYWwoKTsKLSAgICB9Ci19Ci0KLXZvaWQgQnJvYWRj
YXN0Q2hhbm5lbDo6cmVzZXQoKQotewotICAgIGZvciAoYXV0byByZWNlaXZlciA6IG1SZWNlaXZl
cnMpCi0gICAgewotICAgICAgICByZWNlaXZlci0+b25DaGFubmVsQ2xvc2VkKCk7Ci0gICAgfQot
ICAgIG1SZWNlaXZlcnMuY2xlYXIoKTsKLX0KLQotQ2hhbm5lbEJpbmRpbmc6OkNoYW5uZWxCaW5k
aW5nKFNpZ25hbFJlY2VpdmVyICpyZWNlaXZlciwgU2lnbmFsVG9rZW4gdG9rZW4pCi0gICAgOiBt
Q2hhbm5lbChudWxscHRyKSwgbVJlY2VpdmVyKHJlY2VpdmVyKSwgbVRva2VuKHRva2VuKQotewot
ICAgIEFTU0VSVChyZWNlaXZlcik7Ci19Ci0KLUNoYW5uZWxCaW5kaW5nOjp+Q2hhbm5lbEJpbmRp
bmcoKQotewotICAgIHJlc2V0KCk7Ci19Ci0KLXZvaWQgQ2hhbm5lbEJpbmRpbmc6OmJpbmQoQnJv
YWRjYXN0Q2hhbm5lbCAqY2hhbm5lbCkKLXsKLSAgICBBU1NFUlQobVJlY2VpdmVyKTsKLSAgICBp
ZiAobUNoYW5uZWwpCi0gICAgewotICAgICAgICBtQ2hhbm5lbC0+cmVtb3ZlUmVjZWl2ZXIodGhp
cyk7Ci0gICAgfQotCi0gICAgbUNoYW5uZWwgPSBjaGFubmVsOwotCi0gICAgaWYgKG1DaGFubmVs
KQotICAgIHsKLSAgICAgICAgbUNoYW5uZWwtPmFkZFJlY2VpdmVyKHRoaXMpOwotICAgIH0KLX0K
LQotdm9pZCBDaGFubmVsQmluZGluZzo6cmVzZXQoKQotewotICAgIGJpbmQobnVsbHB0cik7Ci19
Ci0KLXZvaWQgQ2hhbm5lbEJpbmRpbmc6OnNpZ25hbCgpIGNvbnN0Ci17Ci0gICAgbVJlY2VpdmVy
LT5zaWduYWwobVRva2VuKTsKLX0KLQotdm9pZCBDaGFubmVsQmluZGluZzo6b25DaGFubmVsQ2xv
c2VkKCkKLXsKLSAgICBtQ2hhbm5lbCA9IG51bGxwdHI7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBh
bmdsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Np
Z25hbF91dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3NpZ25h
bF91dGlscy5oCmluZGV4IDgzNWYyYzYwMmQyYTYyNmM2NjA5YjlhYmFkYmFhZjVjNzBjNDMwOWYu
Ljg0ZDc0Nzg3NjI5MDQyNjk1YTI0OTZjYWFhMTM0ODg4ZDc4ZjA3NmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9zaWduYWxfdXRpbHMuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvc2lnbmFsX3V0aWxzLmgKQEAgLTEz
LDYyICsxMywxNjUgQEAKICNpbmNsdWRlIDxzZXQ+CiAKICNpbmNsdWRlICJjb21tb24vYW5nbGV1
dGlscy5oIgorI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogCiBuYW1lc3BhY2UgYW5nbGUKIHsK
IAotLy8gTWVzc2FnZSB0b2tlbiBwYXNzZWQgdG8gdGhlIHJlY2VpdmVyOwotdXNpbmcgU2lnbmFs
VG9rZW4gPSB1aW50MzJfdDsKLQogLy8gSW50ZXJmYWNlIHRoYXQgdGhlIGRlcGVuZGluZyBjbGFz
cyBpbmhlcml0cyBmcm9tLgordGVtcGxhdGUgPHR5cGVuYW1lIENoYW5uZWxJRCA9IHVpbnQzMl90
LCB0eXBlbmFtZS4uLiBNZXNzYWdlVD4KIGNsYXNzIFNpZ25hbFJlY2VpdmVyCiB7CiAgIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5TaWduYWxSZWNlaXZlcigpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFs
IHZvaWQgc2lnbmFsKFNpZ25hbFRva2VuIHRva2VuKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNp
Z25hbChDaGFubmVsSUQgY2hhbm5lbElELCBNZXNzYWdlVC4uLiBtZXNzYWdlKSA9IDA7CiB9Owog
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhbm5lbElELCB0eXBlbmFtZS4uLiBNZXNzYWdlVD4KIGNs
YXNzIENoYW5uZWxCaW5kaW5nOwogCiAvLyBUaGUgaG9zdCBjbGFzcyBvd25zIHRoZSBjaGFubmVs
LiBJdCB1c2VzIHRoZSBjaGFubmVsIHRvIGZpcmUgc2lnbmFscyB0byB0aGUgcmVjZWl2ZXIuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhbm5lbElEID0gdWludDMyX3QsIHR5cGVuYW1lLi4uIE1lc3Nh
Z2VUPgogY2xhc3MgQnJvYWRjYXN0Q2hhbm5lbCBmaW5hbCA6IE5vbkNvcHlhYmxlCiB7CiAgIHB1
YmxpYzoKICAgICBCcm9hZGNhc3RDaGFubmVsKCk7CiAgICAgfkJyb2FkY2FzdENoYW5uZWwoKTsK
IAotICAgIHZvaWQgc2lnbmFsKCkgY29uc3Q7CisgICAgdm9pZCBzaWduYWwoTWVzc2FnZVQuLi4g
bWVzc2FnZSkgY29uc3Q7CisKICAgICB2b2lkIHJlc2V0KCk7CiAKICAgcHJpdmF0ZToKICAgICAv
LyBPbmx5IHRoZSBDaGFubmVsQmluZGluZyBjbGFzcyBzaG91bGQgYWRkIG9yIHJlbW92ZSByZWNl
aXZlcnMuCi0gICAgZnJpZW5kIGNsYXNzIENoYW5uZWxCaW5kaW5nOwotICAgIHZvaWQgYWRkUmVj
ZWl2ZXIoQ2hhbm5lbEJpbmRpbmcgKnJlY2VpdmVyKTsKLSAgICB2b2lkIHJlbW92ZVJlY2VpdmVy
KENoYW5uZWxCaW5kaW5nICpyZWNlaXZlcik7CisgICAgZnJpZW5kIGNsYXNzIENoYW5uZWxCaW5k
aW5nPENoYW5uZWxJRCwgTWVzc2FnZVQuLi4+OworICAgIHZvaWQgYWRkUmVjZWl2ZXIoQ2hhbm5l
bEJpbmRpbmc8Q2hhbm5lbElELCBNZXNzYWdlVC4uLj4gKnJlY2VpdmVyKTsKKyAgICB2b2lkIHJl
bW92ZVJlY2VpdmVyKENoYW5uZWxCaW5kaW5nPENoYW5uZWxJRCwgTWVzc2FnZVQuLi4+ICpyZWNl
aXZlcik7CiAKLSAgICBzdGQ6OnZlY3RvcjxDaGFubmVsQmluZGluZyAqPiBtUmVjZWl2ZXJzOwor
ICAgIHN0ZDo6dmVjdG9yPENoYW5uZWxCaW5kaW5nPENoYW5uZWxJRCwgTWVzc2FnZVQuLi4+ICo+
IG1SZWNlaXZlcnM7CiB9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhbm5lbElELCB0eXBlbmFt
ZS4uLiBNZXNzYWdlVD4KK0Jyb2FkY2FzdENoYW5uZWw8Q2hhbm5lbElELCBNZXNzYWdlVC4uLj46
OkJyb2FkY2FzdENoYW5uZWwoKQoreworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhbm5lbElE
LCB0eXBlbmFtZS4uLiBNZXNzYWdlVD4KK0Jyb2FkY2FzdENoYW5uZWw8Q2hhbm5lbElELCBNZXNz
YWdlVC4uLj46On5Ccm9hZGNhc3RDaGFubmVsKCkKK3sKKyAgICByZXNldCgpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhbm5lbElELCB0eXBlbmFtZS4uLiBNZXNzYWdlVD4KK3ZvaWQgQnJv
YWRjYXN0Q2hhbm5lbDxDaGFubmVsSUQsIE1lc3NhZ2VULi4uPjo6YWRkUmVjZWl2ZXIoCisgICAg
Q2hhbm5lbEJpbmRpbmc8Q2hhbm5lbElELCBNZXNzYWdlVC4uLj4gKnJlY2VpdmVyKQoreworICAg
IEFTU0VSVChzdGQ6OmZpbmQobVJlY2VpdmVycy5iZWdpbigpLCBtUmVjZWl2ZXJzLmVuZCgpLCBy
ZWNlaXZlcikgPT0gbVJlY2VpdmVycy5lbmQoKSk7CisgICAgbVJlY2VpdmVycy5wdXNoX2JhY2so
cmVjZWl2ZXIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhbm5lbElELCB0eXBlbmFtZS4u
LiBNZXNzYWdlVD4KK3ZvaWQgQnJvYWRjYXN0Q2hhbm5lbDxDaGFubmVsSUQsIE1lc3NhZ2VULi4u
Pjo6cmVtb3ZlUmVjZWl2ZXIoCisgICAgQ2hhbm5lbEJpbmRpbmc8Q2hhbm5lbElELCBNZXNzYWdl
VC4uLj4gKnJlY2VpdmVyKQoreworICAgIGF1dG8gaXRlciA9IHN0ZDo6ZmluZChtUmVjZWl2ZXJz
LmJlZ2luKCksIG1SZWNlaXZlcnMuZW5kKCksIHJlY2VpdmVyKTsKKyAgICBBU1NFUlQoaXRlciAh
PSBtUmVjZWl2ZXJzLmVuZCgpKTsKKyAgICBtUmVjZWl2ZXJzLmVyYXNlKGl0ZXIpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhbm5lbElELCB0eXBlbmFtZS4uLiBNZXNzYWdlVD4KK3ZvaWQg
QnJvYWRjYXN0Q2hhbm5lbDxDaGFubmVsSUQsIE1lc3NhZ2VULi4uPjo6c2lnbmFsKE1lc3NhZ2VU
Li4uIG1lc3NhZ2UpIGNvbnN0Cit7CisgICAgaWYgKG1SZWNlaXZlcnMuZW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZm9yIChjb25zdCBhdXRvICpyZWNlaXZlciA6IG1SZWNlaXZlcnMp
CisgICAgeworICAgICAgICByZWNlaXZlci0+c2lnbmFsKG1lc3NhZ2UuLi4pOworICAgIH0KK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIENoYW5uZWxJRCwgdHlwZW5hbWUuLi4gTWVzc2FnZVQ+Cit2
b2lkIEJyb2FkY2FzdENoYW5uZWw8Q2hhbm5lbElELCBNZXNzYWdlVC4uLj46OnJlc2V0KCkKK3sK
KyAgICBmb3IgKGF1dG8gcmVjZWl2ZXIgOiBtUmVjZWl2ZXJzKQorICAgIHsKKyAgICAgICAgcmVj
ZWl2ZXItPm9uQ2hhbm5lbENsb3NlZCgpOworICAgIH0KKyAgICBtUmVjZWl2ZXJzLmNsZWFyKCk7
Cit9CisKIC8vIFRoZSBkZXBlbmRlbnQgY2xhc3Mga2VlcHMgYmluZGluZ3MgdG8gdGhlIGhvc3Qn
cyBCcm9hZGNhc3RDaGFubmVsLgordGVtcGxhdGUgPHR5cGVuYW1lIENoYW5uZWxJRCA9IHVpbnQz
Ml90LCB0eXBlbmFtZS4uLiBNZXNzYWdlVD4KIGNsYXNzIENoYW5uZWxCaW5kaW5nIGZpbmFsCiB7
CiAgIHB1YmxpYzoKLSAgICBDaGFubmVsQmluZGluZyhTaWduYWxSZWNlaXZlciAqcmVjZWl2ZXIs
IFNpZ25hbFRva2VuIHRva2VuKTsKKyAgICBDaGFubmVsQmluZGluZyhTaWduYWxSZWNlaXZlcjxD
aGFubmVsSUQsIE1lc3NhZ2VULi4uPiAqcmVjZWl2ZXIsIENoYW5uZWxJRCBjaGFubmVsSUQpOwog
ICAgIH5DaGFubmVsQmluZGluZygpOwogICAgIENoYW5uZWxCaW5kaW5nKGNvbnN0IENoYW5uZWxC
aW5kaW5nICZvdGhlcikgPSBkZWZhdWx0OwogICAgIENoYW5uZWxCaW5kaW5nICZvcGVyYXRvcj0o
Y29uc3QgQ2hhbm5lbEJpbmRpbmcgJm90aGVyKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIGJpbmQo
QnJvYWRjYXN0Q2hhbm5lbCAqY2hhbm5lbCk7CisgICAgdm9pZCBiaW5kKEJyb2FkY2FzdENoYW5u
ZWw8Q2hhbm5lbElELCBNZXNzYWdlVC4uLj4gKmNoYW5uZWwpOwogICAgIHZvaWQgcmVzZXQoKTsK
LSAgICB2b2lkIHNpZ25hbCgpIGNvbnN0OworICAgIHZvaWQgc2lnbmFsKE1lc3NhZ2VULi4uIG1l
c3NhZ2UpIGNvbnN0OwogICAgIHZvaWQgb25DaGFubmVsQ2xvc2VkKCk7CiAKICAgcHJpdmF0ZToK
LSAgICBCcm9hZGNhc3RDaGFubmVsICptQ2hhbm5lbDsKLSAgICBTaWduYWxSZWNlaXZlciAqbVJl
Y2VpdmVyOwotICAgIFNpZ25hbFRva2VuIG1Ub2tlbjsKKyAgICBCcm9hZGNhc3RDaGFubmVsPENo
YW5uZWxJRCwgTWVzc2FnZVQuLi4+ICptQ2hhbm5lbDsKKyAgICBTaWduYWxSZWNlaXZlcjxDaGFu
bmVsSUQsIE1lc3NhZ2VULi4uPiAqbVJlY2VpdmVyOworICAgIENoYW5uZWxJRCBtQ2hhbm5lbElE
OwogfTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIENoYW5uZWxJRCwgdHlwZW5hbWUuLi4gTWVzc2Fn
ZVQ+CitDaGFubmVsQmluZGluZzxDaGFubmVsSUQsIE1lc3NhZ2VULi4uPjo6Q2hhbm5lbEJpbmRp
bmcoCisgICAgU2lnbmFsUmVjZWl2ZXI8Q2hhbm5lbElELCBNZXNzYWdlVC4uLj4gKnJlY2VpdmVy
LAorICAgIENoYW5uZWxJRCBjaGFubmVsSUQpCisgICAgOiBtQ2hhbm5lbChudWxscHRyKSwgbVJl
Y2VpdmVyKHJlY2VpdmVyKSwgbUNoYW5uZWxJRChjaGFubmVsSUQpCit7CisgICAgQVNTRVJUKHJl
Y2VpdmVyKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYW5uZWxJRCwgdHlwZW5hbWUuLi4g
TWVzc2FnZVQ+CitDaGFubmVsQmluZGluZzxDaGFubmVsSUQsIE1lc3NhZ2VULi4uPjo6fkNoYW5u
ZWxCaW5kaW5nKCkKK3sKKyAgICByZXNldCgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hh
bm5lbElELCB0eXBlbmFtZS4uLiBNZXNzYWdlVD4KK3ZvaWQgQ2hhbm5lbEJpbmRpbmc8Q2hhbm5l
bElELCBNZXNzYWdlVC4uLj46OmJpbmQoQnJvYWRjYXN0Q2hhbm5lbDxDaGFubmVsSUQsIE1lc3Nh
Z2VULi4uPiAqY2hhbm5lbCkKK3sKKyAgICBBU1NFUlQobVJlY2VpdmVyKTsKKyAgICBpZiAobUNo
YW5uZWwpCisgICAgeworICAgICAgICBtQ2hhbm5lbC0+cmVtb3ZlUmVjZWl2ZXIodGhpcyk7Cisg
ICAgfQorCisgICAgbUNoYW5uZWwgPSBjaGFubmVsOworCisgICAgaWYgKG1DaGFubmVsKQorICAg
IHsKKyAgICAgICAgbUNoYW5uZWwtPmFkZFJlY2VpdmVyKHRoaXMpOworICAgIH0KK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIENoYW5uZWxJRCwgdHlwZW5hbWUuLi4gTWVzc2FnZVQ+Cit2b2lkIENo
YW5uZWxCaW5kaW5nPENoYW5uZWxJRCwgTWVzc2FnZVQuLi4+OjpyZXNldCgpCit7CisgICAgYmlu
ZChudWxscHRyKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYW5uZWxJRCwgdHlwZW5hbWUu
Li4gTWVzc2FnZVQ+Cit2b2lkIENoYW5uZWxCaW5kaW5nPENoYW5uZWxJRCwgTWVzc2FnZVQuLi4+
OjpzaWduYWwoTWVzc2FnZVQuLi4gbWVzc2FnZSkgY29uc3QKK3sKKyAgICBtUmVjZWl2ZXItPnNp
Z25hbChtQ2hhbm5lbElELCBtZXNzYWdlLi4uKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENo
YW5uZWxJRCwgdHlwZW5hbWUuLi4gTWVzc2FnZVQ+Cit2b2lkIENoYW5uZWxCaW5kaW5nPENoYW5u
ZWxJRCwgTWVzc2FnZVQuLi4+OjpvbkNoYW5uZWxDbG9zZWQoKQoreworICAgIG1DaGFubmVsID0g
bnVsbHB0cjsKK30KKwogfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCiAKICNlbmRpZiAgLy8gTElCQU5H
TEVfU0lHTkFMX1VUSUxTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvc2lnbmFsX3V0aWxzX3VuaXR0ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9zaWduYWxfdXRpbHNfdW5pdHRlc3QuY3BwCmluZGV4IGZhYzli
NjdkZjQzMWYwMmMzOTdiZDU0NTI1YzM3YTA5NGM4NDFmMTMuLjA2Y2IzOTIyOTE2YmMxNzBkN2Y3
YTk2YzkzNzVmMzVhYzc4NTU0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9zaWduYWxfdXRpbHNfdW5pdHRlc3QuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9zaWduYWxfdXRpbHNfdW5pdHRlc3QuY3BwCkBAIC0x
NiwxOCArMTYsMTggQEAgdXNpbmcgbmFtZXNwYWNlIHRlc3Rpbmc7CiBuYW1lc3BhY2UKIHsKIAot
c3RydWN0IFNpZ25hbFRoaW5nIDogcHVibGljIFNpZ25hbFJlY2VpdmVyCitzdHJ1Y3QgU2lnbmFs
VGhpbmcgOiBwdWJsaWMgU2lnbmFsUmVjZWl2ZXI8PgogewotICAgIHZvaWQgc2lnbmFsKFNpZ25h
bFRva2VuIHRva2VuKSBvdmVycmlkZSB7IHdhc1NpZ25hbGVkID0gdHJ1ZTsgfQorICAgIHZvaWQg
c2lnbmFsKHVpbnQzMl90IGNoYW5uZWxJRCkgb3ZlcnJpZGUgeyB3YXNTaWduYWxlZCA9IHRydWU7
IH0KICAgICBib29sIHdhc1NpZ25hbGVkID0gZmFsc2U7CiB9OwogCiAvLyBUZXN0IHRoYXQgYnJv
YWRjYXN0IHNpZ25hbHMgd29yay4KIFRFU1QoU2lnbmFsVGVzdCwgQnJvYWRjYXN0U2lnbmFscykK
IHsKLSAgICBCcm9hZGNhc3RDaGFubmVsIGNoYW5uZWw7CisgICAgQnJvYWRjYXN0Q2hhbm5lbDw+
IGNoYW5uZWw7CiAgICAgU2lnbmFsVGhpbmcgdGhpbmc7Ci0gICAgQ2hhbm5lbEJpbmRpbmcgYmlu
ZGluZygmdGhpbmcsIDB1KTsKKyAgICBDaGFubmVsQmluZGluZzw+IGJpbmRpbmcoJnRoaW5nLCAw
dSk7CiAKICAgICBiaW5kaW5nLmJpbmQoJmNoYW5uZWwpOwogICAgIEFTU0VSVF9GQUxTRSh0aGlu
Zy53YXNTaWduYWxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvdmFsaWRhdGlvbkVHTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvdmFsaWRhdGlvbkVHTC5jcHAKaW5kZXggZmFhMjQzYzczZTA5YWI0ZTUwZDlhNjE0
OTE4ODVmNWU3ZWFhYWYyNC4uMjYxOWEzYTBlZDUwOWZhMzc3ODk2ZDdmYWQzMzYyZTQ3MmY5Zjg3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlk
YXRpb25FR0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92
YWxpZGF0aW9uRUdMLmNwcApAQCAtMTUyLDYgKzE1Miw3OCBAQCBlZ2w6OkVycm9yIFZhbGlkYXRl
Q3JlYXRlSW1hZ2VLSFJNaXBMZXZlbENvbW1vbihnbDo6Q29udGV4dCAqY29udGV4dCwKICAgICBy
ZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKK2VnbDo6RXJyb3IgVmFsaWRhdGVD
b25maWdBdHRyaWJ1dGUoY29uc3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5LCBFR0xBdHRyaWIgYXR0
cmlidXRlKQoreworICAgIHN3aXRjaCAoYXR0cmlidXRlKQorICAgIHsKKyAgICAgICAgY2FzZSBF
R0xfQlVGRkVSX1NJWkU6CisgICAgICAgIGNhc2UgRUdMX0FMUEhBX1NJWkU6CisgICAgICAgIGNh
c2UgRUdMX0JMVUVfU0laRToKKyAgICAgICAgY2FzZSBFR0xfR1JFRU5fU0laRToKKyAgICAgICAg
Y2FzZSBFR0xfUkVEX1NJWkU6CisgICAgICAgIGNhc2UgRUdMX0RFUFRIX1NJWkU6CisgICAgICAg
IGNhc2UgRUdMX1NURU5DSUxfU0laRToKKyAgICAgICAgY2FzZSBFR0xfQ09ORklHX0NBVkVBVDoK
KyAgICAgICAgY2FzZSBFR0xfQ09ORklHX0lEOgorICAgICAgICBjYXNlIEVHTF9MRVZFTDoKKyAg
ICAgICAgY2FzZSBFR0xfTkFUSVZFX1JFTkRFUkFCTEU6CisgICAgICAgIGNhc2UgRUdMX05BVElW
RV9WSVNVQUxfSUQ6CisgICAgICAgIGNhc2UgRUdMX05BVElWRV9WSVNVQUxfVFlQRToKKyAgICAg
ICAgY2FzZSBFR0xfU0FNUExFUzoKKyAgICAgICAgY2FzZSBFR0xfU0FNUExFX0JVRkZFUlM6Cisg
ICAgICAgIGNhc2UgRUdMX1NVUkZBQ0VfVFlQRToKKyAgICAgICAgY2FzZSBFR0xfVFJBTlNQQVJF
TlRfVFlQRToKKyAgICAgICAgY2FzZSBFR0xfVFJBTlNQQVJFTlRfQkxVRV9WQUxVRToKKyAgICAg
ICAgY2FzZSBFR0xfVFJBTlNQQVJFTlRfR1JFRU5fVkFMVUU6CisgICAgICAgIGNhc2UgRUdMX1RS
QU5TUEFSRU5UX1JFRF9WQUxVRToKKyAgICAgICAgY2FzZSBFR0xfQklORF9UT19URVhUVVJFX1JH
QjoKKyAgICAgICAgY2FzZSBFR0xfQklORF9UT19URVhUVVJFX1JHQkE6CisgICAgICAgIGNhc2Ug
RUdMX01JTl9TV0FQX0lOVEVSVkFMOgorICAgICAgICBjYXNlIEVHTF9NQVhfU1dBUF9JTlRFUlZB
TDoKKyAgICAgICAgY2FzZSBFR0xfTFVNSU5BTkNFX1NJWkU6CisgICAgICAgIGNhc2UgRUdMX0FM
UEhBX01BU0tfU0laRToKKyAgICAgICAgY2FzZSBFR0xfQ09MT1JfQlVGRkVSX1RZUEU6CisgICAg
ICAgIGNhc2UgRUdMX1JFTkRFUkFCTEVfVFlQRToKKyAgICAgICAgY2FzZSBFR0xfTUFUQ0hfTkFU
SVZFX1BJWE1BUDoKKyAgICAgICAgY2FzZSBFR0xfQ09ORk9STUFOVDoKKyAgICAgICAgY2FzZSBF
R0xfTUFYX1BCVUZGRVJfV0lEVEg6CisgICAgICAgIGNhc2UgRUdMX01BWF9QQlVGRkVSX0hFSUdI
VDoKKyAgICAgICAgY2FzZSBFR0xfTUFYX1BCVUZGRVJfUElYRUxTOgorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBFR0xfT1BUSU1BTF9TVVJGQUNFX09SSUVOVEFUSU9OX0FOR0xF
OgorICAgICAgICAgICAgaWYgKCFkaXNwbGF5LT5nZXRFeHRlbnNpb25zKCkuc3VyZmFjZU9yaWVu
dGF0aW9uKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9y
KEVHTF9CQURfQVRUUklCVVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJF
R0xfQU5HTEVfc3VyZmFjZV9vcmllbnRhdGlvbiBpcyBub3QgZW5hYmxlZC4iKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRUdMX0NPTE9SX0NPTVBP
TkVOVF9UWVBFX0VYVDoKKyAgICAgICAgICAgIGlmICghZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygp
LnBpeGVsRm9ybWF0RmxvYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGVnbDo6RXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsICJFR0xfRVhUX3BpeGVsX2Zvcm1hdF9mbG9h
dCBpcyBub3QgZW5hYmxlZC4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFE
X0FUVFJJQlVURSwgIlVua25vd24gYXR0cmlidXRlLiIpOworICAgIH0KKworICAgIHJldHVybiBl
Z2w6Ok5vRXJyb3IoKTsKK30KKworZWdsOjpFcnJvciBWYWxpZGF0ZUNvbmZpZ0F0dHJpYnV0ZXMo
Y29uc3QgZWdsOjpEaXNwbGF5ICpkaXNwbGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnV0ZXMpCit7CisgICAgZm9y
IChjb25zdCBhdXRvICZhdHRyaWIgOiBhdHRyaWJ1dGVzKQorICAgIHsKKyAgICAgICAgQU5HTEVf
VFJZKFZhbGlkYXRlQ29uZmlnQXR0cmlidXRlKGRpc3BsYXksIGF0dHJpYi5maXJzdCkpOworICAg
IH0KKworICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlCiAK
IG5hbWVzcGFjZSBlZ2wKQEAgLTE4Miw3ICsyNTQsNyBAQCBFcnJvciBWYWxpZGF0ZURpc3BsYXko
Y29uc3QgRGlzcGxheSAqZGlzcGxheSkKICAgICByZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOwog
fQogCi1FcnJvciBWYWxpZGF0ZVN1cmZhY2UoY29uc3QgRGlzcGxheSAqZGlzcGxheSwgU3VyZmFj
ZSAqc3VyZmFjZSkKK0Vycm9yIFZhbGlkYXRlU3VyZmFjZShjb25zdCBEaXNwbGF5ICpkaXNwbGF5
LCBjb25zdCBTdXJmYWNlICpzdXJmYWNlKQogewogICAgIEFOR0xFX1RSWShWYWxpZGF0ZURpc3Bs
YXkoZGlzcGxheSkpOwogCkBAIC0yMDYsNyArMjc4LDcgQEAgRXJyb3IgVmFsaWRhdGVDb25maWco
Y29uc3QgRGlzcGxheSAqZGlzcGxheSwgY29uc3QgQ29uZmlnICpjb25maWcpCiAgICAgcmV0dXJu
IEVycm9yKEVHTF9TVUNDRVNTKTsKIH0KIAotRXJyb3IgVmFsaWRhdGVDb250ZXh0KGNvbnN0IERp
c3BsYXkgKmRpc3BsYXksIGdsOjpDb250ZXh0ICpjb250ZXh0KQorRXJyb3IgVmFsaWRhdGVDb250
ZXh0KGNvbnN0IERpc3BsYXkgKmRpc3BsYXksIGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQog
ewogICAgIEFOR0xFX1RSWShWYWxpZGF0ZURpc3BsYXkoZGlzcGxheSkpOwogCkBAIC0yNTgsNyAr
MzMwLDYgQEAgRXJyb3IgVmFsaWRhdGVDcmVhdGVDb250ZXh0KERpc3BsYXkgKmRpc3BsYXksIENv
bmZpZyAqY29uZmlndXJhdGlvbiwgZ2w6OkNvbnRleHQKICAgICBFR0xBdHRyaWIgY2xpZW50TWlu
b3JWZXJzaW9uID0gMDsKICAgICBFR0xBdHRyaWIgY29udGV4dEZsYWdzICAgICAgID0gMDsKICAg
ICBib29sIHJlc2V0Tm90aWZpY2F0aW9uID0gZmFsc2U7Ci0gICAgYm9vbCByb2J1c3RBY2Nlc3Mg
PSBmYWxzZTsKICAgICBmb3IgKEF0dHJpYnV0ZU1hcDo6Y29uc3RfaXRlcmF0b3IgYXR0cmlidXRl
SXRlciA9IGF0dHJpYnV0ZXMuYmVnaW4oKTsgYXR0cmlidXRlSXRlciAhPSBhdHRyaWJ1dGVzLmVu
ZCgpOyBhdHRyaWJ1dGVJdGVyKyspCiAgICAgewogICAgICAgICBFR0xBdHRyaWIgYXR0cmlidXRl
ID0gYXR0cmlidXRlSXRlci0+Zmlyc3Q7CkBAIC0yOTQsNyArMzY1LDYgQEAgRXJyb3IgVmFsaWRh
dGVDcmVhdGVDb250ZXh0KERpc3BsYXkgKmRpc3BsYXksIENvbmZpZyAqY29uZmlndXJhdGlvbiwg
Z2w6OkNvbnRleHQKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3Io
RUdMX0JBRF9BVFRSSUJVVEUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcm9idXN0QWNj
ZXNzID0gKHZhbHVlID09IEVHTF9UUlVFKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAg
ICAgY2FzZSBFR0xfQ09OVEVYVF9PUEVOR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZX0tI
UjoKQEAgLTM1Nyw4ICs0MjcsNjAgQEAgRXJyb3IgVmFsaWRhdGVDcmVhdGVDb250ZXh0KERpc3Bs
YXkgKmRpc3BsYXksIENvbmZpZyAqY29uZmlndXJhdGlvbiwgZ2w6OkNvbnRleHQKICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICAgIGNhc2UgRUdMX0RJU1BM
QVlfVEVYVFVSRV9TSEFSRV9HUk9VUF9BTkdMRToKKyAgICAgICAgICAgICAgaWYgKCFkaXNwbGF5
LT5nZXRFeHRlbnNpb25zKCkuZGlzcGxheVRleHR1cmVTaGFyZUdyb3VwKQorICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkF0dHJpYnV0ZSBFR0xfRElTUExBWV9URVhU
VVJFX1NIQVJFX0dST1VQX0FOR0xFIHJlcXVpcmVzICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiRUdMX0FOR0xFX2Rpc3BsYXlfdGV4dHVyZV9zaGFyZV9ncm91cC4iKTsKKyAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gRUdMX1RSVUUgJiYgdmFsdWUg
IT0gRUdMX0ZBTFNFKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICByZXR1cm4g
RXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgRUdMX0JBRF9BVFRSSUJVVEUsCisgICAgICAg
ICAgICAgICAgICAgICAgIkVHTF9ESVNQTEFZX1RFWFRVUkVfU0hBUkVfR1JPVVBfQU5HTEUgbXVz
dCBiZSBFR0xfVFJVRSBvciBFR0xfRkFMU0UuIik7CisgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgaWYgKHNoYXJlQ29udGV4dCAmJgorICAgICAgICAgICAgICAgICAgKHNoYXJlQ29udGV4
dC0+dXNpbmdEaXNwbGF5VGV4dHVyZVNoYXJlR3JvdXAoKSAhPSAodmFsdWUgPT0gRUdMX1RSVUUp
KSkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9C
QURfQVRUUklCVVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbGwgY29udGV4
dHMgd2l0aGluIGEgc2hhcmUgZ3JvdXAgbXVzdCBiZSBjcmVhdGVkIHdpdGggdGhlIHNhbWUgIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSBvZiBFR0xfRElTUExBWV9URVhU
VVJFX1NIQVJFX0dST1VQX0FOR0xFLiIpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgY2FzZSBFR0xfQ09OVEVYVF9DTElFTlRfQVJSQVlTX0VOQUJM
RURfQU5HTEU6CisgICAgICAgICAgICAgIGlmICghZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygpLmNy
ZWF0ZUNvbnRleHRDbGllbnRBcnJheXMpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FUVFJJQlVURSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiQXR0cmlidXRlIEVHTF9DT05URVhUX0NMSUVOVF9BUlJBWVNfRU5BQkxFRF9B
TkdMRSByZXF1aXJlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9BTkdM
RV9jcmVhdGVfY29udGV4dF9jbGllbnRfYXJyYXlzLiIpOworICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgIGlmICh2YWx1ZSAhPSBFR0xfVFJVRSAmJiB2YWx1ZSAhPSBFR0xfRkFMU0UpCisg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FU
VFJJQlVURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRUdMX0NPTlRFWFRfQ0xJ
RU5UX0FSUkFZU19FTkFCTEVEX0FOR0xFIG11c3QgYmUgRUdMX1RSVUUgb3IgIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJFR0xfRkFMU0UuIik7CisgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIEVHTF9DT05URVhUX1JPQlVTVF9S
RVNPVVJDRV9JTklUSUFMSVpBVElPTl9BTkdMRToKKyAgICAgICAgICAgICAgaWYgKCFkaXNwbGF5
LT5nZXRFeHRlbnNpb25zKCkuY3JlYXRlQ29udGV4dFJvYnVzdFJlc291cmNlSW5pdGlhbGl6YXRp
b24pCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xf
QkFEX0FUVFJJQlVURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXR0cmlidXRl
IEVHTF9DT05URVhUX1JPQlVTVF9SRVNPVVJDRV9JTklUSUFMSVpBVElPTl9BTkdMRSAiCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIEVHTF9BTkdMRV9jcmVhdGVfY29u
dGV4dF9yb2J1c3RfcmVzb3VyY2VfaW5pdGlhbGl6YXRpb24uIik7CisgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IEVHTF9UUlVFICYmIHZhbHVlICE9IEVHTF9GQUxT
RSkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9C
QURfQVRUUklCVVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfQ09OVEVY
VF9ST0JVU1RfUkVTT1VSQ0VfSU5JVElBTElaQVRJT05fQU5HTEUgbXVzdCBiZSAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImVpdGhlciBFR0xfVFJVRSBvciBFR0xfRkFMU0UuIik7
CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQVRUUklCVVRFKTsKKyAgICAg
ICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQVRUUklCVVRFLCAiVW5rbm93biBhdHRyaWJ1
dGUuIik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM5OSwxNyArNTIxLDYgQEAgRXJyb3IgVmFs
aWRhdGVDcmVhdGVDb250ZXh0KERpc3BsYXkgKmRpc3BsYXksIENvbmZpZyAqY29uZmlndXJhdGlv
biwgZ2w6OkNvbnRleHQKICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQVRUUklCVVRFKTsK
ICAgICB9CiAKLSAgICBpZiAoKGNvbnRleHRGbGFncyAmIEVHTF9DT05URVhUX09QRU5HTF9ST0JV
U1RfQUNDRVNTX0JJVF9LSFIpID4gMCkKLSAgICB7Ci0gICAgICAgIHJvYnVzdEFjY2VzcyA9IHRy
dWU7Ci0gICAgfQotCi0gICAgaWYgKHJvYnVzdEFjY2VzcykKLSAgICB7Ci0gICAgICAgIC8vIFVu
aW1wbGVtZW50ZWQKLSAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQ09ORklHKTsKLSAgICB9
Ci0KICAgICBpZiAoc2hhcmVDb250ZXh0KQogICAgIHsKICAgICAgICAgLy8gU2hhcmVkIGNvbnRl
eHQgaXMgaW52YWxpZCBvciBpcyBvd25lZCBieSBhbm90aGVyIGRpc3BsYXkKQEAgLTY1Myw2ICs3
NjQsMTcgQEAgRXJyb3IgVmFsaWRhdGVDcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihEaXNw
bGF5ICpkaXNwbGF5LCBFR0xlbnVtIGJ1ZnR5cGUsIEUKICAgICAgICAgfQogICAgICAgICBicmVh
azsKIAorICAgICAgY2FzZSBFR0xfRDNEX1RFWFRVUkVfQU5HTEU6CisgICAgICAgICAgaWYgKCFk
aXNwbGF5RXh0ZW5zaW9ucy5kM2RUZXh0dXJlQ2xpZW50QnVmZmVyKQorICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfUEFSQU1FVEVSKTsKKyAgICAgICAgICB9
CisgICAgICAgICAgaWYgKGJ1ZmZlciA9PSBudWxscHRyKQorICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfUEFSQU1FVEVSKTsKKyAgICAgICAgICB9CisgICAg
ICAgICAgYnJlYWs7CisKICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBFcnJvcihFR0xf
QkFEX1BBUkFNRVRFUik7CiAgICAgfQpAQCAtNzUzLDkgKzg3NSw5OSBAQCBFcnJvciBWYWxpZGF0
ZUNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKERpc3BsYXkgKmRpc3BsYXksIEVHTGVudW0g
YnVmdHlwZSwgRQogICAgICAgICB9CiAgICAgfQogCisgICAgQU5HTEVfVFJZKGRpc3BsYXktPnZh
bGlkYXRlQ2xpZW50QnVmZmVyKGNvbmZpZywgYnVmdHlwZSwgYnVmZmVyLCBhdHRyaWJ1dGVzKSk7
CisKICAgICByZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCitFcnJvciBWYWxpZGF0ZU1h
a2VDdXJyZW50KERpc3BsYXkgKmRpc3BsYXksIEVHTFN1cmZhY2UgZHJhdywgRUdMU3VyZmFjZSBy
ZWFkLCBnbDo6Q29udGV4dCAqY29udGV4dCkKK3sKKyAgICBpZiAoY29udGV4dCA9PSBFR0xfTk9f
Q09OVEVYVCAmJiAoZHJhdyAhPSBFR0xfTk9fU1VSRkFDRSB8fCByZWFkICE9IEVHTF9OT19TVVJG
QUNFKSkKKyAgICB7CisgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX01BVENILCAiSWYgY3R4
IGlzIEVHTF9OT19DT05URVhULCBzdXJmYWNlcyBtdXN0IGJlIEVHTF9OT19TVVJGQUNFIik7Cisg
ICAgfQorCisgICAgLy8gSWYgY3R4IGlzIEVHTF9OT19DT05URVhUIGFuZCBlaXRoZXIgZHJhdyBv
ciByZWFkIGFyZSBub3QgRUdMX05PX1NVUkZBQ0UsIGFuIEVHTF9CQURfTUFUQ0gKKyAgICAvLyBl
cnJvciBpcyBnZW5lcmF0ZWQuIEVHTF9LSFJfc3VyZmFjZWxlc3NfY29udGV4dCBhbGxvd3MgYm90
aCBzdXJmYWNlcyB0byBiZSBFR0xfTk9fU1VSRkFDRS4KKyAgICBpZiAoY29udGV4dCAhPSBFR0xf
Tk9fQ09OVEVYVCAmJiAoZHJhdyA9PSBFR0xfTk9fU1VSRkFDRSB8fCByZWFkID09IEVHTF9OT19T
VVJGQUNFKSkKKyAgICB7CisgICAgICAgIGlmIChkaXNwbGF5LT5nZXRFeHRlbnNpb25zKCkuc3Vy
ZmFjZWxlc3NDb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoKGRyYXcgPT0gRUdM
X05PX1NVUkZBQ0UpICE9IChyZWFkID09IEVHTF9OT19TVVJGQUNFKSkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9NQVRDSCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIklmIGN0eCBpcyBub3QgRUdMX05PVF9DT05URVhULCBkcmF3IG9y
IHJlYWQgbXVzdCBib3RoIGJlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9O
T19TVVJGQUNFLCBvciBib3RoIG5vdCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfTUFU
Q0gsCisgICAgICAgICAgICAgICAgICAgICAgICAgIklmIGN0eCBpcyBub3QgRUdMX05PX0NPTlRF
WFQsIHN1cmZhY2VzIG11c3Qgbm90IGJlIEVHTF9OT19TVVJGQUNFIik7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyBJZiBlaXRoZXIgb2YgZHJhdyBvciByZWFkIGlzIGEgdmFsaWQgc3VyZmFj
ZSBhbmQgdGhlIG90aGVyIGlzIEVHTF9OT19TVVJGQUNFLCBhbgorICAgIC8vIEVHTF9CQURfTUFU
Q0ggZXJyb3IgaXMgZ2VuZXJhdGVkLgorICAgIGlmICgocmVhZCA9PSBFR0xfTk9fU1VSRkFDRSkg
IT0gKGRyYXcgPT0gRUdMX05PX1NVUkZBQ0UpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9y
KEVHTF9CQURfTUFUQ0gsCisgICAgICAgICAgICAgICAgICAgICAicmVhZCBhbmQgZHJhdyBtdXN0
IGJvdGggYmUgdmFsaWQgc3VyZmFjZXMsIG9yIGJvdGggYmUgRUdMX05PX1NVUkZBQ0UiKTsKKyAg
ICB9CisKKyAgICBpZiAoZGlzcGxheSA9PSBFR0xfTk9fRElTUExBWSB8fCAhRGlzcGxheTo6aXNW
YWxpZERpc3BsYXkoZGlzcGxheSkpCisgICAgeworICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JB
RF9ESVNQTEFZLCAiJ2RweScgbm90IGEgdmFsaWQgRUdMRGlzcGxheSBoYW5kbGUiKTsKKyAgICB9
CisKKyAgICAvLyBFR0wgMS41IHNwZWM6IGRweSBjYW4gYmUgdW5pbml0aWFsaXplZCBpZiBhbGwg
b3RoZXIgcGFyYW1ldGVycyBhcmUgbnVsbAorICAgIGlmICghZGlzcGxheS0+aXNJbml0aWFsaXpl
ZCgpICYmCisgICAgICAgIChjb250ZXh0ICE9IEVHTF9OT19DT05URVhUIHx8IGRyYXcgIT0gRUdM
X05PX1NVUkZBQ0UgfHwgcmVhZCAhPSBFR0xfTk9fU1VSRkFDRSkpCisgICAgeworICAgICAgICBy
ZXR1cm4gRXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgIidkcHknIG5vdCBpbml0aWFsaXplZCIp
OworICAgIH0KKworICAgIGlmIChjb250ZXh0ICE9IEVHTF9OT19DT05URVhUKQorICAgIHsKKyAg
ICAgICAgQU5HTEVfVFJZKFZhbGlkYXRlQ29udGV4dChkaXNwbGF5LCBjb250ZXh0KSk7CisgICAg
fQorCisgICAgaWYgKGRpc3BsYXktPmlzSW5pdGlhbGl6ZWQoKSAmJiBkaXNwbGF5LT50ZXN0RGV2
aWNlTG9zdCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9DT05URVhUX0xPU1Qp
OworICAgIH0KKworICAgIFN1cmZhY2UgKmRyYXdTdXJmYWNlID0gc3RhdGljX2Nhc3Q8U3VyZmFj
ZSAqPihkcmF3KTsKKyAgICBpZiAoZHJhdyAhPSBFR0xfTk9fU1VSRkFDRSkKKyAgICB7CisgICAg
ICAgIEFOR0xFX1RSWShWYWxpZGF0ZVN1cmZhY2UoZGlzcGxheSwgZHJhd1N1cmZhY2UpKTsKKyAg
ICB9CisKKyAgICBTdXJmYWNlICpyZWFkU3VyZmFjZSA9IHN0YXRpY19jYXN0PFN1cmZhY2UgKj4o
cmVhZCk7CisgICAgaWYgKHJlYWQgIT0gRUdMX05PX1NVUkZBQ0UpCisgICAgeworICAgICAgICBB
TkdMRV9UUlkoVmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIHJlYWRTdXJmYWNlKSk7CisgICAgfQor
CisgICAgaWYgKHJlYWRTdXJmYWNlKQorICAgIHsKKyAgICAgICAgQU5HTEVfVFJZKFZhbGlkYXRl
Q29tcGF0aWJsZUNvbmZpZ3MoZGlzcGxheSwgcmVhZFN1cmZhY2UtPmdldENvbmZpZygpLCByZWFk
U3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC0+Z2V0Q29uZmlnKCksIHJlYWRTdXJmYWNlLT5nZXRUeXBlKCkpKTsKKyAgICB9CisKKyAg
ICBpZiAoZHJhdyAhPSByZWFkKQorICAgIHsKKyAgICAgICAgVU5JTVBMRU1FTlRFRCgpOyAgLy8g
RklYTUUKKworICAgICAgICBpZiAoZHJhd1N1cmZhY2UpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEFOR0xFX1RSWShWYWxpZGF0ZUNvbXBhdGlibGVDb25maWdzKGRpc3BsYXksIGRyYXdTdXJmYWNl
LT5nZXRDb25maWcoKSwgZHJhd1N1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRDb25maWcoKSwgZHJhd1N1cmZhY2UtPmdl
dFR5cGUoKSkpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsK
K30KKwogRXJyb3IgVmFsaWRhdGVDb21wYXRpYmxlQ29uZmlncyhjb25zdCBEaXNwbGF5ICpkaXNw
bGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb25maWcgKmNvbmZp
ZzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN1cmZhY2UgKnN1cmZh
Y2UsCkBAIC03ODIsNiArOTk0LDEyIEBAIEVycm9yIFZhbGlkYXRlQ29tcGF0aWJsZUNvbmZpZ3Mo
Y29uc3QgRGlzcGxheSAqZGlzcGxheSwKICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFE
X01BVENILCAiQ29sb3IgYnVmZmVyIHNpemVzIGFyZSBub3QgY29tcGF0aWJsZS4iKTsKICAgICAg
ICAgfQogCisgICAgICAgIGJvb2wgY29tcG9uZW50VHlwZUNvbXBhdCA9IGNvbmZpZzEtPmNvbG9y
Q29tcG9uZW50VHlwZSA9PSBjb25maWcyLT5jb2xvckNvbXBvbmVudFR5cGU7CisgICAgICAgIGlm
ICghY29tcG9uZW50VHlwZUNvbXBhdCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEVy
cm9yKEVHTF9CQURfTUFUQ0gsICJDb2xvciBidWZmZXIgY29tcG9uZW50IHR5cGVzIGFyZSBub3Qg
Y29tcGF0aWJsZS4iKTsKKyAgICAgICAgfQorCiAgICAgICAgIGJvb2wgZHNDb21wYXQgPSBjb25m
aWcxLT5kZXB0aFNpemUgPT0gY29uZmlnMi0+ZGVwdGhTaXplICYmCiAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25maWcxLT5zdGVuY2lsU2l6ZSA9PSBjb25maWcyLT5zdGVuY2lsU2l6ZTsKICAg
ICAgICAgaWYgKCFkc0NvbXBhdCkKQEAgLTE2MjQsNCArMTg0MiwxMjMgQEAgRXJyb3IgVmFsaWRh
dGVHZXRTeW5jVmFsdWVzQ0hST01JVU0oY29uc3QgRGlzcGxheSAqZGlzcGxheSwKIAogICAgIHJl
dHVybiBFcnJvcihFR0xfU1VDQ0VTUyk7CiB9Ci19ICAvLyBuYW1lc3BhY2UgZ2wKKworRXJyb3Ig
VmFsaWRhdGVTd2FwQnVmZmVyc1dpdGhEYW1hZ2VFWFQoY29uc3QgRGlzcGxheSAqZGlzcGxheSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN1cmZhY2UgKnN1
cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgKnJl
Y3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IG5fcmVj
dHMpCit7CisgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZVN1cmZhY2UoZGlzcGxheSwgc3VyZmFj
ZSk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJv
cjsKKyAgICB9CisKKyAgICBpZiAoIWRpc3BsYXktPmdldEV4dGVuc2lvbnMoKS5zd2FwQnVmZmVy
c1dpdGhEYW1hZ2UpCisgICAgeworICAgICAgICAvLyBJdCBpcyBvdXQgb2Ygc3BlYyB3aGF0IGhh
cHBlbnMgd2hlbiBjYWxsaW5nIGFuIGV4dGVuc2lvbiBmdW5jdGlvbiB3aGVuIHRoZSBleHRlbnNp
b24gaXMKKyAgICAgICAgLy8gbm90IGF2YWlsYWJsZS4gRUdMX0JBRF9ESVNQTEFZIHNlZW1zIGxp
a2UgYSByZWFzb25hYmxlIGVycm9yLgorICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9ESVNQ
TEFZLCAiRUdMX0VYVF9zd2FwX2J1ZmZlcnNfd2l0aF9kYW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4i
KTsKKyAgICB9CisKKyAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1NVUkZBQ0UsICJTd2FwIHN1cmZhY2UgY2Fubm90
IGJlIEVHTF9OT19TVVJGQUNFLiIpOworICAgIH0KKworICAgIGlmIChuX3JlY3RzIDwgMCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgIm5fcmVjdHMgY2Fu
bm90IGJlIG5lZ2F0aXZlLiIpOworICAgIH0KKworICAgIGlmIChuX3JlY3RzID4gMCAmJiByZWN0
cyA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfUEFSQU1F
VEVSLCAibl9yZWN0cyBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIHplcm8gd2hlbiByZWN0cyBpcyBO
VUxMLiIpOworICAgIH0KKworICAgIHJldHVybiBFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK0Vy
cm9yIFZhbGlkYXRlR2V0Q29uZmlnQXR0cmliKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksIGNvbnN0
IENvbmZpZyAqY29uZmlnLCBFR0xpbnQgYXR0cmlidXRlKQoreworICAgIEFOR0xFX1RSWShWYWxp
ZGF0ZUNvbmZpZyhkaXNwbGF5LCBjb25maWcpKTsKKyAgICBBTkdMRV9UUlkoVmFsaWRhdGVDb25m
aWdBdHRyaWJ1dGUoZGlzcGxheSwgc3RhdGljX2Nhc3Q8RUdMQXR0cmliPihhdHRyaWJ1dGUpKSk7
CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKK30KKworRXJyb3IgVmFsaWRhdGVDaG9vc2VDb25maWco
Y29uc3QgRGlzcGxheSAqZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEF0dHJpYnV0ZU1hcCAmYXR0cmlicywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGlu
dCBjb25maWdTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50ICpudW1Db25m
aWcpCit7CisgICAgQU5HTEVfVFJZKFZhbGlkYXRlRGlzcGxheShkaXNwbGF5KSk7CisgICAgQU5H
TEVfVFJZKFZhbGlkYXRlQ29uZmlnQXR0cmlidXRlcyhkaXNwbGF5LCBhdHRyaWJzKSk7CisKKyAg
ICBpZiAobnVtQ29uZmlnID09IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gRXJyb3Io
RUdMX0JBRF9QQVJBTUVURVIsICJudW1fY29uZmlnIGNhbm5vdCBiZSBudWxsLiIpOworICAgIH0K
KworICAgIHJldHVybiBOb0Vycm9yKCk7Cit9CisKK0Vycm9yIFZhbGlkYXRlR2V0Q29uZmlncyhj
b25zdCBEaXNwbGF5ICpkaXNwbGF5LCBFR0xpbnQgY29uZmlnU2l6ZSwgRUdMaW50ICpudW1Db25m
aWcpCit7CisgICAgQU5HTEVfVFJZKFZhbGlkYXRlRGlzcGxheShkaXNwbGF5KSk7CisKKyAgICBp
ZiAobnVtQ29uZmlnID09IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gRXJyb3IoRUdM
X0JBRF9QQVJBTUVURVIsICJudW1fY29uZmlnIGNhbm5vdCBiZSBudWxsLiIpOworICAgIH0KKwor
ICAgIHJldHVybiBOb0Vycm9yKCk7Cit9CisKK0Vycm9yIFZhbGlkYXRlUGxhdGZvcm1UeXBlKGNv
bnN0IENsaWVudEV4dGVuc2lvbnMgJmNsaWVudEV4dGVuc2lvbnMsIEVHTGludCBwbGF0Zm9ybVR5
cGUpCit7CisgICAgc3dpdGNoIChwbGF0Zm9ybVR5cGUpCisgICAgeworICAgICAgICBjYXNlIEVH
TF9QTEFURk9STV9BTkdMRV9UWVBFX0RFRkFVTFRfQU5HTEU6CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDlfQU5HTEU6CisgICAg
ICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEU6CisgICAgICAgICAg
ICBpZiAoIWNsaWVudEV4dGVuc2lvbnMucGxhdGZvcm1BTkdMRUQzRCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsICJEaXJlY3Qz
RCBwbGF0Zm9ybSBpcyB1bnN1cHBvcnRlZC4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FO
R0xFOgorICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xF
OgorICAgICAgICAgICAgaWYgKCFjbGllbnRFeHRlbnNpb25zLnBsYXRmb3JtQU5HTEVPcGVuR0wp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQVRU
UklCVVRFLCAiT3BlbkdMIHBsYXRmb3JtIGlzIHVuc3VwcG9ydGVkLiIpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9OVUxMX0FOR0xFOgorICAgICAgICAgICAgaWYgKCFjbGllbnRFeHRlbnNpb25zLnBsYXRm
b3JtQU5HTEVOVUxMKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBFcnJv
cihFR0xfQkFEX0FUVFJJQlVURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpc3Bs
YXkgdHlwZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9OVUxMX0FOR0xFICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVp
cmVzIEVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9udWxsLiIpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9W
VUxLQU5fQU5HTEU6CisgICAgICAgICAgICBpZiAoIWNsaWVudEV4dGVuc2lvbnMucGxhdGZvcm1B
TkdMRVZ1bGthbikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3Io
RUdMX0JBRF9BVFRSSUJVVEUsICJWdWxrYW4gcGxhdGZvcm0gaXMgdW5zdXBwb3J0ZWQuIik7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQVRUUklCVVRFLCAiVW5rbm93biBwbGF0Zm9y
bSB0eXBlLiIpOworICAgIH0KKworICAgIHJldHVybiBFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisK
K30gIC8vIG5hbWVzcGFjZSBlZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRUdMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkVHTC5oCmluZGV4IDNlM2YyY2FjZTMxYzA5YTc5Mjg4NzRl
ZTk0Y2VkNDgxYTVkMTQ0N2IuLjdjNWRiZTY0MGExOWNhNDg3ZGRjY2NkMmI1YzIyODk4OGE0OTYx
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxp
ZGF0aW9uRUdMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Zh
bGlkYXRpb25FR0wuaApAQCAtMjMsNiArMjMsNyBAQCBuYW1lc3BhY2UgZWdsCiB7CiAKIGNsYXNz
IEF0dHJpYnV0ZU1hcDsKK3N0cnVjdCBDbGllbnRFeHRlbnNpb25zOwogc3RydWN0IENvbmZpZzsK
IGNsYXNzIERldmljZTsKIGNsYXNzIERpc3BsYXk7CkBAIC0zMiw5ICszMyw5IEBAIGNsYXNzIFN1
cmZhY2U7CiAKIC8vIE9iamVjdCB2YWxpZGF0aW9uCiBFcnJvciBWYWxpZGF0ZURpc3BsYXkoY29u
c3QgRGlzcGxheSAqZGlzcGxheSk7Ci1FcnJvciBWYWxpZGF0ZVN1cmZhY2UoY29uc3QgRGlzcGxh
eSAqZGlzcGxheSwgU3VyZmFjZSAqc3VyZmFjZSk7CitFcnJvciBWYWxpZGF0ZVN1cmZhY2UoY29u
c3QgRGlzcGxheSAqZGlzcGxheSwgY29uc3QgU3VyZmFjZSAqc3VyZmFjZSk7CiBFcnJvciBWYWxp
ZGF0ZUNvbmZpZyhjb25zdCBEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBDb25maWcgKmNvbmZpZyk7
Ci1FcnJvciBWYWxpZGF0ZUNvbnRleHQoY29uc3QgRGlzcGxheSAqZGlzcGxheSwgZ2w6OkNvbnRl
eHQgKmNvbnRleHQpOworRXJyb3IgVmFsaWRhdGVDb250ZXh0KGNvbnN0IERpc3BsYXkgKmRpc3Bs
YXksIGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KTsKIEVycm9yIFZhbGlkYXRlSW1hZ2UoY29u
c3QgRGlzcGxheSAqZGlzcGxheSwgY29uc3QgSW1hZ2UgKmltYWdlKTsKIAogLy8gRW50cnkgcG9p
bnQgdmFsaWRhdGlvbgpAQCAtNDgsNiArNDksOCBAQCBFcnJvciBWYWxpZGF0ZUNyZWF0ZVBidWZm
ZXJTdXJmYWNlKERpc3BsYXkgKmRpc3BsYXksIENvbmZpZyAqY29uZmlnLCBjb25zdCBBdHRyaQog
RXJyb3IgVmFsaWRhdGVDcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihEaXNwbGF5ICpkaXNw
bGF5LCBFR0xlbnVtIGJ1ZnR5cGUsIEVHTENsaWVudEJ1ZmZlciBidWZmZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZyAqY29uZmlnLCBjb25zdCBB
dHRyaWJ1dGVNYXAmIGF0dHJpYnV0ZXMpOwogCitFcnJvciBWYWxpZGF0ZU1ha2VDdXJyZW50KERp
c3BsYXkgKmRpc3BsYXksIEVHTFN1cmZhY2UgZHJhdywgRUdMU3VyZmFjZSByZWFkLCBnbDo6Q29u
dGV4dCAqY29udGV4dCk7CisKIEVycm9yIFZhbGlkYXRlQ3JlYXRlSW1hZ2VLSFIoY29uc3QgRGlz
cGxheSAqZGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gdGFyZ2V0LApA
QCAtOTQsMTggKzk3LDMzIEBAIEVycm9yIFZhbGlkYXRlU3RyZWFtUG9zdEQzRFRleHR1cmVOVjEy
QU5HTEUoY29uc3QgRGlzcGxheSAqZGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU3RyZWFtICpzdHJlYW0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnRleHR1cmUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmli
cyk7CisKIEVycm9yIFZhbGlkYXRlR2V0U3luY1ZhbHVlc0NIUk9NSVVNKGNvbnN0IERpc3BsYXkg
KmRpc3BsYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdXJm
YWNlICpzdXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RUdMdWludDY0S0hSICp1c3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBFR0x1aW50NjRLSFIgKm1zYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEVHTHVpbnQ2NEtIUiAqc2JjKTsKIAorRXJyb3IgVmFsaWRhdGVTd2FwQnVmZmVy
c1dpdGhEYW1hZ2VFWFQoY29uc3QgRGlzcGxheSAqZGlzcGxheSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN1cmZhY2UgKnN1cmZhY2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgKnJlY3RzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IG5fcmVjdHMpOworCitFcnJvciBWYWxp
ZGF0ZUdldENvbmZpZ0F0dHJpYihjb25zdCBEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBDb25maWcg
KmNvbmZpZywgRUdMaW50IGF0dHJpYnV0ZSk7CitFcnJvciBWYWxpZGF0ZUNob29zZUNvbmZpZyhj
b25zdCBEaXNwbGF5ICpkaXNwbGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
QXR0cmlidXRlTWFwICZhdHRyaWJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50
IGNvbmZpZ1NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgKm51bUNvbmZp
Zyk7CitFcnJvciBWYWxpZGF0ZUdldENvbmZpZ3MoY29uc3QgRGlzcGxheSAqZGlzcGxheSwgRUdM
aW50IGNvbmZpZ1NpemUsIEVHTGludCAqbnVtQ29uZmlnKTsKKwogLy8gT3RoZXIgdmFsaWRhdGlv
bgogRXJyb3IgVmFsaWRhdGVDb21wYXRpYmxlQ29uZmlncyhjb25zdCBEaXNwbGF5ICpkaXNwbGF5
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb25maWcgKmNvbmZpZzEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN1cmZhY2UgKnN1cmZhY2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbmZpZyAqY29uZmlnMiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IHN1cmZhY2VUeXBlKTsKLX0K
KworRXJyb3IgVmFsaWRhdGVQbGF0Zm9ybVR5cGUoY29uc3QgQ2xpZW50RXh0ZW5zaW9ucyAmY2xp
ZW50RXh0ZW5zaW9ucywgRUdMaW50IHBsYXRmb3JtVHlwZSk7Cit9ICAvLyBuYW1lc3BhY2UgZ2wK
IAogI2VuZGlmIC8vIExJQkFOR0xFX1ZBTElEQVRJT05FR0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5jcHAKaW5kZXggYTdi
OWY5YTFkNGRlNDU0NzE3ZDNhZmIyYTBlNTNlMGVmNmEyOWJmZi4uOTdlZjUyYmU1YmVlMzQ3NTBm
NGRlOWU1OGEzMjc0MTA3NmVmMTkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5jcHAKQEAgLTM0LDY1ICszNCwxMTAgQEAg
Y29uc3QgY2hhciAqZ19FeGNlZWRzTWF4RWxlbWVudEVycm9yTWVzc2FnZSA9ICJFbGVtZW50IHZh
bHVlIGV4Y2VlZHMgbWF4aW11bSBlbGUKIAogbmFtZXNwYWNlCiB7Ci1ib29sIFZhbGlkYXRlRHJh
d0F0dHJpYnMoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMaW50IHByaW1jb3VudCwgR0xp
bnQgbWF4VmVydGV4KQorYm9vbCBWYWxpZGF0ZURyYXdBdHRyaWJzKFZhbGlkYXRpb25Db250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHByaW1jb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBtYXhWZXJ0ZXgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgdmVydGV4Q291bnQpCiB7CiAgICAgY29uc3QgZ2w6OlN0YXRlICZzdGF0
ZSAgICAgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCk7CiAgICAgY29uc3QgZ2w6OlByb2dyYW0gKnBy
b2dyYW0gPSBzdGF0ZS5nZXRQcm9ncmFtKCk7CiAKLSAgICBjb25zdCBWZXJ0ZXhBcnJheSAqdmFv
ICAgICA9IHN0YXRlLmdldFZlcnRleEFycmF5KCk7Ci0gICAgY29uc3QgYXV0byAmdmVydGV4QXR0
cmlicyAgPSB2YW8tPmdldFZlcnRleEF0dHJpYnV0ZXMoKTsKLSAgICBzaXplX3QgbWF4RW5hYmxl
ZEF0dHJpYiA9IHZhby0+Z2V0TWF4RW5hYmxlZEF0dHJpYnV0ZSgpOworICAgIGJvb2wgd2ViZ2xD
b21wYXRpYmlsaXR5ID0gY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLndlYmdsQ29tcGF0aWJpbGl0
eTsKKworICAgIGNvbnN0IFZlcnRleEFycmF5ICp2YW8gICAgPSBzdGF0ZS5nZXRWZXJ0ZXhBcnJh
eSgpOworICAgIGNvbnN0IGF1dG8gJnZlcnRleEF0dHJpYnMgPSB2YW8tPmdldFZlcnRleEF0dHJp
YnV0ZXMoKTsKKyAgICBjb25zdCBhdXRvICZ2ZXJ0ZXhCaW5kaW5ncyA9IHZhby0+Z2V0VmVydGV4
QmluZGluZ3MoKTsKKyAgICBzaXplX3QgbWF4RW5hYmxlZEF0dHJpYiAgID0gdmFvLT5nZXRNYXhF
bmFibGVkQXR0cmlidXRlKCk7CiAgICAgZm9yIChzaXplX3QgYXR0cmlidXRlSW5kZXggPSAwOyBh
dHRyaWJ1dGVJbmRleCA8IG1heEVuYWJsZWRBdHRyaWI7ICsrYXR0cmlidXRlSW5kZXgpCiAgICAg
ewogICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiA9IHZlcnRleEF0dHJpYnNb
YXR0cmlidXRlSW5kZXhdOwotICAgICAgICBpZiAocHJvZ3JhbS0+aXNBdHRyaWJMb2NhdGlvbkFj
dGl2ZShhdHRyaWJ1dGVJbmRleCkgJiYgYXR0cmliLmVuYWJsZWQpCisgICAgICAgIGlmICghcHJv
Z3JhbS0+aXNBdHRyaWJMb2NhdGlvbkFjdGl2ZShhdHRyaWJ1dGVJbmRleCkgfHwgIWF0dHJpYi5l
bmFibGVkKQogICAgICAgICB7Ci0gICAgICAgICAgICBnbDo6QnVmZmVyICpidWZmZXIgPSBhdHRy
aWIuYnVmZmVyLmdldCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KIAotICAg
ICAgICAgICAgaWYgKGJ1ZmZlcikKKyAgICAgICAgY29uc3QgVmVydGV4QmluZGluZyAmYmluZGlu
ZyA9IHZlcnRleEJpbmRpbmdzW2F0dHJpYi5iaW5kaW5nSW5kZXhdOworICAgICAgICAvLyBJZiB3
ZSBoYXZlIG5vIGJ1ZmZlciwgdGhlbiB3ZSBlaXRoZXIgZ2V0IGFuIGVycm9yLCBvciB0aGVyZSBh
cmUgbm8gbW9yZSBjaGVja3MgdG8gYmUgZG9uZS4KKyAgICAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVy
ID0gYmluZGluZy5idWZmZXIuZ2V0KCk7CisgICAgICAgIGlmICghYnVmZmVyKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAod2ViZ2xDb21wYXRpYmlsaXR5IHx8ICFzdGF0ZS5hcmVDbGllbnRB
cnJheXNFbmFibGVkKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgR0xpbnQ2NCBh
dHRyaWJTdHJpZGUgICAgID0gc3RhdGljX2Nhc3Q8R0xpbnQ2ND4oQ29tcHV0ZVZlcnRleEF0dHJp
YnV0ZVN0cmlkZShhdHRyaWIpKTsKLSAgICAgICAgICAgICAgICBHTGludDY0IG1heFZlcnRleEVs
ZW1lbnQgPSAwOwotCi0gICAgICAgICAgICAgICAgaWYgKGF0dHJpYi5kaXZpc29yID4gMCkKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG1heFZlcnRleEVsZW1lbnQgPQot
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xpbnQ2ND4ocHJpbWNvdW50KSAv
IHN0YXRpY19jYXN0PEdMaW50NjQ+KGF0dHJpYi5kaXZpc29yKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgbWF4VmVydGV4RWxlbWVudCA9IHN0YXRpY19jYXN0PEdMaW50NjQ+KG1heFZlcnRleCk7
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gSWYgd2UncmUgZHJhd2lu
ZyB6ZXJvIHZlcnRpY2VzLCB3ZSBoYXZlIGVub3VnaCBkYXRhLgotICAgICAgICAgICAgICAgIGlm
IChtYXhWZXJ0ZXhFbGVtZW50ID4gMCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIE5vdGU6IExhc3QgdmVydGV4IGVsZW1lbnQgZG9lcyBub3QgdGFrZSB0aGUgZnVs
bCBzdHJpZGUhCi0gICAgICAgICAgICAgICAgICAgIEdMaW50NjQgYXR0cmliU2l6ZSA9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTGludDY0PihDb21wdXRlVmVydGV4QXR0
cmlidXRlVHlwZVNpemUoYXR0cmliKSk7Ci0gICAgICAgICAgICAgICAgICAgIEdMaW50NjQgYXR0
cmliRGF0YVNpemUgPSAobWF4VmVydGV4RWxlbWVudCAtIDEpICogYXR0cmliU3RyaWRlICsgYXR0
cmliU2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCBhdHRyaWJPZmZzZXQgICA9IHN0
YXRpY19jYXN0PEdMaW50NjQ+KGF0dHJpYi5vZmZzZXQpOwotCi0gICAgICAgICAgICAgICAgICAg
IC8vIFtPcGVuR0wgRVMgMy4wLjJdIHNlY3Rpb24gMi45LjQgcGFnZSA0MDoKLSAgICAgICAgICAg
ICAgICAgICAgLy8gV2UgY2FuIHJldHVybiBJTlZBTElEX09QRVJBVElPTiBpZiBvdXIgdmVydGV4
IGF0dHJpYnV0ZSBkb2VzIG5vdCBoYXZlCi0gICAgICAgICAgICAgICAgICAgIC8vIGVub3VnaCBi
YWNraW5nIGRhdGEuCi0gICAgICAgICAgICAgICAgICAgIGlmIChhdHRyaWJEYXRhU2l6ZSArIGF0
dHJpYk9mZnNldCA+IGJ1ZmZlci0+Z2V0U2l6ZSgpKQotICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiVmVydGV4IGJ1ZmZlciBpcyBub3QgYmlnIGVub3VnaCBm
b3IgdGhlIGRyYXcgY2FsbCIpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAvLyBbV2ViR0wgMS4wXSBTZWN0aW9uIDYuNSBFbmFibGVkIFZlcnRleCBBdHRyaWJ1dGVz
IGFuZCBSYW5nZSBDaGVja2luZworICAgICAgICAgICAgICAgIC8vIElmIGEgdmVydGV4IGF0dHJp
YnV0ZSBpcyBlbmFibGVkIGFzIGFuIGFycmF5IHZpYSBlbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSBi
dXQKKyAgICAgICAgICAgICAgICAvLyBubyBidWZmZXIgaXMgYm91bmQgdG8gdGhhdCBhdHRyaWJ1
dGUgdmlhIGJpbmRCdWZmZXIgYW5kIHZlcnRleEF0dHJpYlBvaW50ZXIsCisgICAgICAgICAgICAg
ICAgLy8gdGhlbiBjYWxscyB0byBkcmF3QXJyYXlzIG9yIGRyYXdFbGVtZW50cyB3aWxsIGdlbmVy
YXRlIGFuIElOVkFMSURfT1BFUkFUSU9OCisgICAgICAgICAgICAgICAgLy8gZXJyb3IuCisgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQW4gZW5hYmxlZCB2ZXJ0ZXggYXJyYXkgaGFzIG5v
IGJ1ZmZlci4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZSBpZiAoYXR0cmliLnBvaW50ZXIgPT0gTlVMTCkKKyAgICAgICAg
ICAgIGVsc2UgaWYgKGF0dHJpYi5wb2ludGVyID09IG51bGxwdHIpCiAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBhcHBsaWNhdGlvbiBlcnJvciB0aGF0IHdvdWxk
IG5vcm1hbGx5IHJlc3VsdCBpbiBhIGNyYXNoLAogICAgICAgICAgICAgICAgIC8vIGJ1dCB3ZSBj
YXRjaCBpdCBhbmQgcmV0dXJuIGFuIGVycm9yCi0gICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgIEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiQW4gZW5hYmxlZCB2ZXJ0ZXggYXJyYXkgaGFzIG5vIGJ1ZmZlciBhbmQgbm8gcG9pbnRlci4i
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAg
ICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAiQW4gZW5hYmxlZCB2ZXJ0ZXggYXJyYXkgaGFzIG5vIGJ1ZmZlciBhbmQgbm8gcG9pbnRl
ci4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB3ZSdyZSBkcmF3
aW5nIHplcm8gdmVydGljZXMsIHdlIGhhdmUgZW5vdWdoIGRhdGEuCisgICAgICAgIGlmICh2ZXJ0
ZXhDb3VudCA8PSAwIHx8IHByaW1jb3VudCA8PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIEdMaW50IG1heFZlcnRleEVsZW1lbnQgPSAw
OworICAgICAgICBpZiAoYmluZGluZy5kaXZpc29yID09IDApCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1heFZlcnRleEVsZW1lbnQgPSBtYXhWZXJ0ZXg7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZQorICAgICAgICB7CisgICAgICAgICAgICBtYXhWZXJ0ZXhFbGVtZW50ID0gKHByaW1jb3VudCAt
IDEpIC8gYmluZGluZy5kaXZpc29yOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2UgZG8gbWFu
dWFsIG92ZXJmbG93IGNoZWNrcyBoZXJlIGluc3RlYWQgb2YgdXNpbmcgc2FmZV9tYXRoLmggYmVj
YXVzZSBpdCB3YXMKKyAgICAgICAgLy8gYSBib3R0bGVuZWNrLiBUaGFua3MgdG8gc29tZSBwcm9w
ZXJ0aWVzIG9mIEdMIHdlIGtub3cgaW5lcXVhbGl0aWVzIHRoYXQgY2FuCisgICAgICAgIC8vIGhl
bHAgdXMgbWFrZSB0aGUgb3ZlcmZsb3cgY2hlY2tzIGZhc3Rlci4KKworICAgICAgICAvLyBUaGUg
bWF4IHBvc3NpYmxlIGF0dHJpYlNpemUgaXMgMTYgZm9yIGEgdmVjdG9yIG9mIDQgMzIgYml0IHZh
bHVlcy4KKyAgICAgICAgY29uc3RleHByIHVpbnQ2NF90IGtNYXhBdHRyaWJTaXplID0gMTY7Cisg
ICAgICAgIGNvbnN0ZXhwciB1aW50NjRfdCBrSW50TWF4ICAgICAgICA9IHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50Pjo6bWF4KCk7CisgICAgICAgIGNvbnN0ZXhwciB1aW50NjRfdCBrVWludDY0TWF4
ICAgICA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKTsKKworICAgICAgICAv
LyBXZSBrbm93IGF0dHJpYlN0cmlkZSBpcyBnaXZlbiBhcyBhIEdMc2l6ZWkgd2hpY2ggaXMgdHlw
ZWRlZmVkIHRvIGludC4KKyAgICAgICAgLy8gV2UgYWxzbyBrbm93IGFuIHVwcGVyIGJvdW5kIGZv
ciBhdHRyaWJTaXplLgorICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxpbnQsIEdM
c2l6ZWk+Ojp2YWx1ZSwgIiIpOworICAgICAgICB1aW50NjRfdCBhdHRyaWJTdHJpZGUgPSBDb21w
dXRlVmVydGV4QXR0cmlidXRlU3RyaWRlKGF0dHJpYiwgYmluZGluZyk7CisgICAgICAgIHVpbnQ2
NF90IGF0dHJpYlNpemUgICA9IENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVUeXBlU2l6ZShhdHRyaWIp
OworICAgICAgICBBU1NFUlQoYXR0cmliU3RyaWRlIDw9IGtJbnRNYXggJiYgYXR0cmliU2l6ZSA8
PSBrTWF4QXR0cmliU2l6ZSk7CisKKyAgICAgICAgLy8gQ29tcHV0aW5nIHRoZSBtYXggb2Zmc2V0
IHVzaW5nIHVpbnQ2NF90IHdpdGhvdXQgYXR0cmliLm9mZnNldCBpcyBvdmVyZmxvdworICAgICAg
ICAvLyBzYWZlLiBOb3RlOiBMYXN0IHZlcnRleCBlbGVtZW50IGRvZXMgbm90IHRha2UgdGhlIGZ1
bGwgc3RyaWRlIQorICAgICAgICBzdGF0aWNfYXNzZXJ0KGtJbnRNYXggKiBrSW50TWF4IDwga1Vp
bnQ2NE1heCAtIGtNYXhBdHRyaWJTaXplLCAiIik7CisgICAgICAgIHVpbnQ2NF90IGF0dHJpYkRh
dGFTaXplTm9PZmZzZXQgPSBtYXhWZXJ0ZXhFbGVtZW50ICogYXR0cmliU3RyaWRlICsgYXR0cmli
U2l6ZTsKKworICAgICAgICAvLyBBbiBvdmVyZmxvdyBjYW4gaGFwcGVuIHdoZW4gYWRkaW5nIHRo
ZSBvZmZzZXQsIGNoZWNrIGZvciBpdC4KKyAgICAgICAgdWludDY0X3QgYXR0cmliT2Zmc2V0ID0g
Q29tcHV0ZVZlcnRleEF0dHJpYnV0ZU9mZnNldChhdHRyaWIsIGJpbmRpbmcpOworICAgICAgICBp
ZiAoYXR0cmliRGF0YVNpemVOb09mZnNldCA+IGtVaW50NjRNYXggLSBhdHRyaWJPZmZzZXQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAiSW50ZWdlciBvdmVyZmxvdy4iKSk7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgdWludDY0X3QgYXR0cmliRGF0YVNpemVXaXRoT2Zm
c2V0ID0gYXR0cmliRGF0YVNpemVOb09mZnNldCArIGF0dHJpYk9mZnNldDsKKworICAgICAgICAv
LyBbT3BlbkdMIEVTIDMuMC4yXSBzZWN0aW9uIDIuOS40IHBhZ2UgNDA6CisgICAgICAgIC8vIFdl
IGNhbiByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT04gaWYgb3VyIHZlcnRleCBhdHRyaWJ1dGUgZG9l
cyBub3QgaGF2ZQorICAgICAgICAvLyBlbm91Z2ggYmFja2luZyBkYXRhLgorICAgICAgICBpZiAo
YXR0cmliRGF0YVNpemVXaXRoT2Zmc2V0ID4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGJ1ZmZlci0+
Z2V0U2l6ZSgpKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiVmVydGV4IGJ1ZmZlciBpcyBub3QgYmlnIGVub3VnaCBmb3IgdGhlIGRyYXcg
Y2FsbCIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMTYyLDYgKzIwNywxOCBAQCBib29sIFZhbGlkQ2FwKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBjYXAsIGJvb2wgcXVlcnlPbmx5KQogICAgICAgICBjYXNlIEdMX0JJTkRfR0VORVJB
VEVTX1JFU09VUkNFX0NIUk9NSVVNOgogICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5T25seSAmJiBj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuYmluZEdlbmVyYXRlc1Jlc291cmNlOwogCisgICAgICAg
IGNhc2UgR0xfQ0xJRU5UX0FSUkFZU19BTkdMRToKKyAgICAgICAgICAgIHJldHVybiBxdWVyeU9u
bHkgJiYgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNsaWVudEFycmF5czsKKworICAgICAgICBj
YXNlIEdMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5zUkdCV3JpdGVDb250cm9sOworCisgICAgICAgIGNhc2UgR0xfU0FN
UExFX01BU0s6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigp
ID49IFZlcnNpb24oMywgMSk7CisKKyAgICAgICAgY2FzZSBHTF9DT05URVhUX1JPQlVTVF9SRVNP
VVJDRV9JTklUSUFMSVpBVElPTl9BTkdMRToKKyAgICAgICAgICAgIHJldHVybiBxdWVyeU9ubHkg
JiYgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJvYnVzdFJlc291cmNlSW5pdGlhbGl6YXRpb247
CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBA
IC0xNzYsMTIgKzIzMywyMiBAQCBib29sIFZhbGlkYXRlUmVhZFBpeGVsc0Jhc2UoVmFsaWRhdGlv
bkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpjb2x1bW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgKnJvd3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpwaXhl
bHMpCiB7CiAgICAgaWYgKGxlbmd0aCAhPSBudWxscHRyKQogICAgIHsKICAgICAgICAgKmxlbmd0
aCA9IDA7CiAgICAgfQorICAgIGlmIChyb3dzICE9IG51bGxwdHIpCisgICAgeworICAgICAgICAq
cm93cyA9IDA7CisgICAgfQorICAgIGlmIChjb2x1bW5zICE9IG51bGxwdHIpCisgICAgeworICAg
ICAgICAqY29sdW1ucyA9IDA7CisgICAgfQogCiAgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQg
PCAwKQogICAgIHsKQEAgLTE5MSwxMyArMjU4LDEzIEBAIGJvb2wgVmFsaWRhdGVSZWFkUGl4ZWxz
QmFzZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKIAogICAgIGF1dG8gcmVhZEZyYW1lYnVm
ZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpOwogCi0gICAg
aWYgKHJlYWRGcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXMoY29udGV4dC0+Z2V0Q29udGV4dFN0YXRl
KCkpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgIGlmIChyZWFkRnJhbWVidWZmZXIt
PmNoZWNrU3RhdHVzKGNvbnRleHQpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQogICAgIHsK
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZF
Ul9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChy
ZWFkRnJhbWVidWZmZXItPmlkKCkgIT0gMCAmJiByZWFkRnJhbWVidWZmZXItPmdldFNhbXBsZXMo
Y29udGV4dC0+Z2V0Q29udGV4dFN0YXRlKCkpICE9IDApCisgICAgaWYgKHJlYWRGcmFtZWJ1ZmZl
ci0+aWQoKSAhPSAwICYmIHJlYWRGcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcyhjb250ZXh0KSAhPSAw
KQogICAgIHsKICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjEzLDkgKzI4MCwxMyBAQCBi
b29sIFZhbGlkYXRlUmVhZFBpeGVsc0Jhc2UoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAg
ICAgfQogCiAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpyZWFkQnVmZmVyID0gZnJh
bWVidWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZlcigpOwotICAgIGlmICghcmVhZEJ1ZmZlcikKKyAg
ICAvLyBXZWJHTCAxLjAgW1NlY3Rpb24gNi4yNl0gUmVhZGluZyBGcm9tIGEgTWlzc2luZyBBdHRh
Y2htZW50CisgICAgLy8gSW4gT3BlbkdMIEVTIGl0IGlzIHVuZGVmaW5lZCB3aGF0IGhhcHBlbnMg
d2hlbiBhbiBvcGVyYXRpb24gdHJpZXMgdG8gcmVhZCBmcm9tIGEgbWlzc2luZworICAgIC8vIGF0
dGFjaG1lbnQgYW5kIFdlYkdMIGRlZmluZXMgaXQgdG8gYmUgYW4gZXJyb3IuIFdlIGRvIHRoZSBj
aGVjayB1bmNvbmRpdGlvbm5hbHkgYXMgdGhlCisgICAgLy8gc2l0dWF0aW9uIGlzIGFuIGFwcGxp
Y2F0aW9uIGVycm9yIHRoYXQgd291bGQgbGVhZCB0byBhIGNyYXNoIGluIEFOR0xFLgorICAgIGlm
IChyZWFkQnVmZmVyID09IG51bGxwdHIpCiAgICAgewotICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIk1pc3NpbmcgcmVhZCBhdHRhY2ht
ZW50IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yNTksOCArMzMwLDcg
QEAgYm9vbCBWYWxpZGF0ZVJlYWRQaXhlbHNCYXNlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0
LAogICAgIHNpemVfdCBlbmRCeXRlID0gZW5kQnl0ZU9yRXJyLmdldFJlc3VsdCgpOwogICAgIGlm
IChidWZTaXplID49IDApCiAgICAgewotCi0gICAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+
KGJ1ZlNpemUpIDwgZW5kQnl0ZSkKKyAgICAgICAgaWYgKHBpeGVsUGFja0J1ZmZlciA9PSBudWxs
cHRyICYmIHN0YXRpY19jYXN0PHNpemVfdD4oYnVmU2l6ZSkgPCBlbmRCeXRlKQogICAgICAgICB7
CiAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKICAgICAgICAgICAgICAgICBFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwgImJ1ZlNpemUgbXVzdCBiZSBhdCBsZWFzdCAldSBieXRl
cy4iLCBlbmRCeXRlKSk7CkBAIC0yODMsNyArMzUzLDcgQEAgYm9vbCBWYWxpZGF0ZVJlYWRQaXhl
bHNCYXNlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgICAgICB9CiAgICAgfQogCi0g
ICAgaWYgKGxlbmd0aCAhPSBudWxscHRyKQorICAgIGlmIChwaXhlbFBhY2tCdWZmZXIgPT0gbnVs
bHB0ciAmJiBsZW5ndGggIT0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChlbmRCeXRlID4g
c3RhdGljX2Nhc3Q8c2l6ZV90PihzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSkp
CiAgICAgICAgIHsKQEAgLTI5NSw2ICszNjUsMzkgQEAgYm9vbCBWYWxpZGF0ZVJlYWRQaXhlbHNC
YXNlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgICAgICAqbGVuZ3RoID0gc3RhdGlj
X2Nhc3Q8R0xzaXplaT4oZW5kQnl0ZSk7CiAgICAgfQogCisgICAgYXV0byBnZXRDbGlwcGVkRXh0
ZW50ID0gW10oR0xpbnQgc3RhcnQsIEdMc2l6ZWkgbGVuZ3RoLCBpbnQgYnVmZmVyU2l6ZSkgewor
ICAgICAgICBhbmdsZTo6Q2hlY2tlZE51bWVyaWM8aW50PiBjbGlwcGVkRXh0ZW50KGxlbmd0aCk7
CisgICAgICAgIGlmIChzdGFydCA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vICJzdWJ0
cmFjdCIgdGhlIGFyZWEgdGhhdCBpcyBsZXNzIHRoYW4gMAorICAgICAgICAgICAgY2xpcHBlZEV4
dGVudCArPSBzdGFydDsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGludCByZWFkRXh0ZW50
ID0gc3RhcnQgKyBsZW5ndGg7CisgICAgICAgIGlmIChyZWFkRXh0ZW50ID4gYnVmZmVyU2l6ZSkK
KyAgICAgICAgeworICAgICAgICAgICAgLy8gU3VidHJhY3QgdGhlIHJlZ2lvbiB0byB0aGUgcmln
aHQgb2YgdGhlIHJlYWQgYnVmZmVyCisgICAgICAgICAgICBjbGlwcGVkRXh0ZW50IC09IChyZWFk
RXh0ZW50IC0gYnVmZmVyU2l6ZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWNsaXBwZWRF
eHRlbnQuSXNWYWxpZCgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBzdGQ6Om1heChjbGlwcGVkRXh0ZW50LlZhbHVlT3JEaWUo
KSwgMCk7CisgICAgfTsKKworICAgIGlmIChjb2x1bW5zICE9IG51bGxwdHIpCisgICAgeworICAg
ICAgICAqY29sdW1ucyA9IGdldENsaXBwZWRFeHRlbnQoeCwgd2lkdGgsIHJlYWRCdWZmZXItPmdl
dFNpemUoKS53aWR0aCk7CisgICAgfQorCisgICAgaWYgKHJvd3MgIT0gbnVsbHB0cikKKyAgICB7
CisgICAgICAgICpyb3dzID0gZ2V0Q2xpcHBlZEV4dGVudCh5LCBoZWlnaHQsIHJlYWRCdWZmZXIt
PmdldFNpemUoKS5oZWlnaHQpOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00
NzEsNiArNTc0LDE1IEBAIGJvb2wgVmFsaWRhdGVHZXRUZXhQYXJhbWV0ZXJCYXNlKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TUkdCX0RFQ09ERV9F
WFQ6CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlU1JH
QkRlY29kZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcigKKyAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiR0xfRVhU
X3RleHR1cmVfc1JHQl9kZWNvZGUgaXMgbm90IGVuYWJsZWQuIikpOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0sICJVbmtub3duIHBuYW1lLiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTYwMyw2ICs3MTUsMjkgQEAgYm9vbCBWYWxpZGF0ZVRleHR1cmVDb21wYXJlRnVuY1Zh
bHVlKENvbnRleHQgKmNvbnRleHQsIFBhcmFtVHlwZSAqcGFyYW1zKQogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgUGFyYW1UeXBlPgorYm9vbCBWYWxpZGF0ZVRleHR1cmVTUkdCRGVjb2RlVmFsdWUo
Q29udGV4dCAqY29udGV4dCwgUGFyYW1UeXBlICpwYXJhbXMpCit7CisgICAgaWYgKCFjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZVNSR0JEZWNvZGUpCisgICAgeworICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJHTF9FWFRfdGV4dHVyZV9z
UkdCX2RlY29kZSBpcyBub3QgZW5hYmxlZC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBzd2l0Y2ggKENvbnZlcnRUb0dMZW51bShwYXJhbXNbMF0pKQorICAgIHsKKyAg
ICAgICAgY2FzZSBHTF9ERUNPREVfRVhUOgorICAgICAgICBjYXNlIEdMX1NLSVBfREVDT0RFX0VY
VDoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJVbmtub3duIHBhcmFt
IHZhbHVlLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtVHlwZT4KIGJvb2wgVmFsaWRh
dGVUZXhQYXJhbWV0ZXJCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLApAQCAtNzc3LDYgKzkxMiwzMSBAQCBib29sIFZhbGlkYXRlVGV4UGFyYW1l
dGVyQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7CiAKKyAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERToKKyAgICAg
ICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBWZXJzaW9uKDMsIDEpKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSwgInBuYW1lIHJlcXVpcmVzIE9wZW5HTCBFUyAzLjEuIikpOworICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN3
aXRjaCAoQ29udmVydFRvR0xlbnVtKHBhcmFtc1swXSkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6CisgICAgICAgICAgICAgICAgY2FzZSBH
TF9TVEVOQ0lMX0lOREVYOgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlVua25vd24gcGFyYW0gdmFsdWUuIikpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhUOgorICAgICAg
ICAgICAgaWYgKCFWYWxpZGF0ZVRleHR1cmVTUkdCRGVjb2RlVmFsdWUoY29udGV4dCwgcGFyYW1z
KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiVW5rbm93biBw
bmFtZS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04NTcsNiArMTAxNywxMyBA
QCBib29sIFZhbGlkYXRlU2FtcGxlclBhcmFtZXRlckJhc2UoQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9TUkdCX0RFQ09ERV9FWFQ6CisgICAgICAgICAgICBpZiAoIVZhbGlkYXRlVGV4dHVyZVNSR0JE
ZWNvZGVWYWx1ZShjb250ZXh0LCBwYXJhbXMpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0sICJVbmtub3duIHBuYW1lLiIpKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTkwMSw2ICsxMDY4LDE1IEBAIGJvb2wgVmFsaWRhdGVHZXRTYW1wbGVyUGFyYW1l
dGVyQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFS
RV9GVU5DOgogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NS
R0JfREVDT0RFX0VYVDoKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnRleHR1cmVTUkdCRGVjb2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX0VO
VU0sICJHTF9FWFRfdGV4dHVyZV9zUkdCX2RlY29kZSBpcyBub3QgZW5hYmxlZC4iKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlVua25vd24gcG5hbWUuIikpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtOTc3LDcgKzExNTMsMTggQEAgYm9vbCBWYWxpZGF0ZUdldFZlcnRl
eEF0dHJpYkJhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIGNhc2UgR0xfVkVSVEVY
X0FUVFJJQl9BUlJBWV9JTlRFR0VSOgogICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRD
bGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJwbmFt
ZSByZXF1aXJlcyBPcGVuR0wgRVMgMy4wLiIpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlZBTElE
X0VOVU0sICJHTF9WRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVIgcmVxdWlyZXMgT3BlbkdMIEVT
IDMuMC4iKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgR0xfVkVS
VEVYX0FUVFJJQl9CSU5ESU5HOgorICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX1JF
TEFUSVZFX09GRlNFVDoKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpIDwgRVNfM18xKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9J
TlZBTElEX0VOVU0sICJWZXJ0ZXggQXR0cmliIEJpbmRpbmdzIHJlcXVpcmUgT3BlbkdMIEVTIDMu
MS4iKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTA0LDcgKzEyOTEsNyBAQCBib29sIFZh
bGlkYXRlR2V0QnVmZmVyUGFyYW1ldGVyQmFzZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwK
ICAgICAgICAgICAgIGlmICghZXh0ZW5zaW9ucy5tYXBCdWZmZXIpCiAgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAg
IEVycm9yKEdMX0lOVkFMSURfRU5VTSwgInBuYW1lIHJlcXVpcmVzIE9wZW5HTCBFUyAzLjAgb3Ig
R0xfT0VTX21hcF9idWZmZXIuIikpOworICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZB
TElEX0VOVU0sICJwbmFtZSByZXF1aXJlcyBPcGVuR0wgRVMgMy4wIG9yIEdMX09FU19tYXBidWZm
ZXIuIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTExNiw3ICsxMzAzLDcgQEAgYm9vbCBWYWxpZGF0ZUdldEJ1
ZmZlclBhcmFtZXRlckJhc2UoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoCiAgICAgICAg
ICAgICAgICAgICAgIEdMX0lOVkFMSURfRU5VTSwKLSAgICAgICAgICAgICAgICAgICAgInBuYW1l
IHJlcXVpcmVzIE9wZW5HTCBFUyAzLjAsIEdMX09FU19tYXBfYnVmZmVyIG9yIEdMX0VYVF9tYXBf
YnVmZmVyX3JhbmdlLiIpKTsKKyAgICAgICAgICAgICAgICAgICAgInBuYW1lIHJlcXVpcmVzIE9w
ZW5HTCBFUyAzLjAsIEdMX09FU19tYXBidWZmZXIgb3IgR0xfRVhUX21hcF9idWZmZXJfcmFuZ2Uu
IikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTE4Nyw2ICsxMzc0LDE1IEBAIGJvb2wgVmFsaWRhdGVHZXRJbnRl
cm5hbEZvcm1hdGl2QmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICBjYXNlIEdMX1JFTkRF
UkJVRkZFUjoKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8y
RF9NVUxUSVNBTVBMRToKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9u
KCkgPCBFU18zXzEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiVGV4dHVyZSB0YXJnZXQgcmVxdWlyZXMgYXQgbGVhc3QgT3BlbkdMIEVTIDMuMS4iKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgdGFyZ2V0LiIpKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTEyMjAsNyArMTQxNiw0MDkgQEAgYm9vbCBWYWxpZGF0ZUdl
dEludGVybmFsRm9ybWF0aXZCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICpudW1QYXJh
bXMgPSBzdGQ6Om1pbihidWZTaXplLCBtYXhXcml0ZVBhcmFtcyk7CiAgICAgfQogCi0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtQ29t
bW9uQmFzZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExpbmtl
ZFVuaWZvcm0gKip1bmlmb3JtT3V0KQoreworICAgIC8vIFRPRE8oSmlhamlhKTogQWRkIGltYWdl
IHVuaWZvcm0gY2hlY2sgaW4gZnV0dXJlLgorICAgIGlmIChjb3VudCA8IDApCisgICAgeworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIXByb2dyYW0gfHwgIXByb2dyYW0t
PmlzTGlua2VkKCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgaWYgKGxvY2F0aW9uID09IC0xKQorICAgIHsKKyAgICAgICAgLy8gU2lsZW50bHkgaWdub3Jl
IHRoZSB1bmlmb3JtIGNvbW1hbmQKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGNvbnN0IGF1dG8gJnVuaWZvcm1Mb2NhdGlvbnMgPSBwcm9ncmFtLT5nZXRVbmlmb3JtTG9jYXRp
b25zKCk7CisgICAgc2l6ZV90IGNhc3RlZExvY2F0aW9uID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihs
b2NhdGlvbik7CisgICAgaWYgKGNhc3RlZExvY2F0aW9uID49IHVuaWZvcm1Mb2NhdGlvbnMuc2l6
ZSgpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJJbnZhbGlkIHVuaWZvcm0gbG9jYXRpb24iKSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBhdXRvICZ1bmlmb3JtTG9jYXRpb24gPSB1bmlm
b3JtTG9jYXRpb25zW2Nhc3RlZExvY2F0aW9uXTsKKyAgICBpZiAodW5pZm9ybUxvY2F0aW9uLmln
bm9yZWQpCisgICAgeworICAgICAgICAvLyBTaWxlbnRseSBpZ25vcmUgdGhlIHVuaWZvcm0gY29t
bWFuZAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCF1bmlmb3JtTG9j
YXRpb24udXNlZCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBjb25zdCBhdXRvICZ1bmlmb3JtID0gcHJvZ3JhbS0+Z2V0VW5pZm9ybUJ5SW5kZXgodW5pZm9y
bUxvY2F0aW9uLmluZGV4KTsKKworICAgIC8vIGF0dGVtcHRpbmcgdG8gd3JpdGUgYW4gYXJyYXkg
dG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElEX09QRVJBVElPTgorICAgIGlmICgh
dW5pZm9ybS5pc0FycmF5KCkgJiYgY291bnQgPiAxKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgICp1bmlmb3JtT3V0ID0gJnVuaWZvcm07CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMWl2VmFsdWUoVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB1bmlmb3Jt
VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKQoreworICAgIC8vIFZh
bHVlIHR5cGUgaXMgR0xfSU5ULCBiZWNhdXNlIHdlIG9ubHkgZ2V0IGhlcmUgZnJvbSBnbFVuaWZv
cm0xaXt2fS4KKyAgICAvLyBJdCBpcyBjb21wYXRpYmxlIHdpdGggSU5UIG9yIEJPT0wuCisgICAg
Ly8gRG8gdGhlc2UgY2hlYXAgdGVzdHMgZmlyc3QsIGZvciBhIGxpdHRsZSBleHRyYSBzcGVlZC4K
KyAgICBpZiAoR0xfSU5UID09IHVuaWZvcm1UeXBlIHx8IEdMX0JPT0wgPT0gdW5pZm9ybVR5cGUp
CisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoSXNTYW1wbGVy
VHlwZSh1bmlmb3JtVHlwZSkpCisgICAgeworICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSB2YWx1
ZXMgYXJlIGluIHJhbmdlLgorICAgICAgICBjb25zdCBHTGludCBtYXggPSBjb250ZXh0LT5nZXRD
YXBzKCkubWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0czsKKyAgICAgICAgZm9yIChHTHNpemVp
IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHZhbHVl
W2ldIDwgMCB8fCB2YWx1ZVtpXSA+PSBtYXgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgInNhbXBsZXIg
dW5pZm9ybSB2YWx1ZSBvdXQgb2YgcmFuZ2UiKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKworICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAid3JvbmcgdHlwZSBvZiB2YWx1ZSBmb3IgdW5pZm9ybSIpKTsKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtVmFsdWUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSB2YWx1ZVR5cGUsIEdMZW51bSB1bmlmb3JtVHlwZSkKK3sKKyAgICAvLyBDaGVj
ayB0aGF0IHRoZSB2YWx1ZSB0eXBlIGlzIGNvbXBhdGlibGUgd2l0aCB1bmlmb3JtIHR5cGUuCisg
ICAgLy8gRG8gdGhlIGNoZWFwZXIgdGVzdCBmaXJzdCwgZm9yIGEgbGl0dGxlIGV4dHJhIHNwZWVk
LgorICAgIGlmICh2YWx1ZVR5cGUgPT0gdW5pZm9ybVR5cGUgfHwgVmFyaWFibGVCb29sVmVjdG9y
VHlwZSh2YWx1ZVR5cGUpID09IHVuaWZvcm1UeXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJ3cm9uZyB0eXBlIG9mIHZhbHVlIGZvciB1bmlmb3JtIikpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXhWYWx1ZShWYWxpZGF0aW9u
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHZhbHVlVHlwZSwgR0xlbnVtIHVuaWZvcm1UeXBlKQor
eworICAgIC8vIENoZWNrIHRoYXQgdGhlIHZhbHVlIHR5cGUgaXMgY29tcGF0aWJsZSB3aXRoIHVu
aWZvcm0gdHlwZS4KKyAgICBpZiAodmFsdWVUeXBlID09IHVuaWZvcm1UeXBlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJ3cm9uZyB0eXBlIG9mIHZhbHVlIGZvciB1bmlmb3Jt
IikpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBWYWxpZGF0ZUVTMkNvcHlUZXhJbWFn
ZVBhcmFtZXRlcnMoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzU3ViSW1hZ2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgYm9yZGVyKQoreworICAgIGlmICghVmFsaWRUZXh0dXJlMkREZXN0aW5hdGlvblRhcmdl
dChjb250ZXh0LCB0YXJnZXQpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCB0ZXh0dXJlIHRhcmdldCIpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRJbWFnZVNpemVQYXJhbWV0
ZXJzKGNvbnRleHQsIHRhcmdldCwgbGV2ZWwsIHdpZHRoLCBoZWlnaHQsIDEsIGlzU3ViSW1hZ2Up
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSwgIkludmFsaWQgdGV4dHVyZSBkaW1lbnNpb25zLiIpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIEZvcm1hdCB0ZXh0dXJlRm9ybWF0ID0gRm9ybWF0OjpJbnZhbGlk
KCk7CisgICAgaWYgKCFWYWxpZGF0ZUNvcHlUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKGNvbnRleHQs
IHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBpc1N1YkltYWdlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4b2Zmc2V0LCB5b2Zmc2V0LCAwLCB4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZ0ZXh0dXJlRm9ybWF0KSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gY29u
dGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpOworICAgIEdMZW51bSBjb2xv
cmJ1ZmZlckZvcm1hdCAgICAgICAgICAgPSBmcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVy
KCktPmdldEZvcm1hdCgpLmFzU2l6ZWQoKTsKKyAgICBjb25zdCBhdXRvICZmb3JtYXRJbmZvICAg
ICAgICAgICAgID0gKnRleHR1cmVGb3JtYXQuaW5mbzsKKworICAgIC8vIFtPcGVuR0wgRVMgMi4w
LjI0XSB0YWJsZSAzLjkKKyAgICBpZiAoaXNTdWJJbWFnZSkKKyAgICB7CisgICAgICAgIHN3aXRj
aCAoZm9ybWF0SW5mby5mb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgR0xfQUxQ
SEE6CisgICAgICAgICAgICAgICAgaWYgKGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0FMUEhBOF9F
WFQgJiYgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTQgJiYKKyAgICAgICAgICAgICAgICAg
ICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9BMSAmJiBjb2xvcmJ1ZmZlckZvcm1hdCAh
PSBHTF9SR0JBOF9PRVMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U6CisgICAgICAgICAg
ICAgICAgaWYgKGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1I4X0VYVCAmJiBjb2xvcmJ1ZmZlckZv
cm1hdCAhPSBHTF9SRzhfRVhUICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9y
bWF0ICE9IEdMX1JHQjU2NSAmJiBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I4X09FUyAmJgor
ICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBNCAmJiBjb2xv
cmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0ExICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9y
YnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUykKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX1JFRF9FWFQ6
CisgICAgICAgICAgICAgICAgaWYgKGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1I4X0VYVCAmJiBj
b2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SRzhfRVhUICYmCisgICAgICAgICAgICAgICAgICAgIGNv
bG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjU2NSAmJiBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9S
R0I4X09FUyAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9S
R0JBNCAmJiBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0ExICYmCisgICAgICAgICAgICAg
ICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUyAmJiBjb2xvcmJ1ZmZlckZv
cm1hdCAhPSBHTF9SMzJGICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0
ICE9IEdMX1JHMzJGICYmIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjMyRiAmJgorICAgICAg
ICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBMzJGKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgR0xfUkdfRVhUOgorICAgICAgICAgICAgICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAh
PSBHTF9SRzhfRVhUICYmIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjU2NSAmJgorICAgICAg
ICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I4X09FUyAmJiBjb2xvcmJ1
ZmZlckZvcm1hdCAhPSBHTF9SR0JBNCAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZl
ckZvcm1hdCAhPSBHTF9SR0I1X0ExICYmIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09F
UyAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SRzMyRiAm
JiBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0IzMkYgJiYKKyAgICAgICAgICAgICAgICAgICAg
Y29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTMyRikKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX1JHQjoK
KyAgICAgICAgICAgICAgICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNTY1ICYmIGNv
bG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjhfT0VTICYmCisgICAgICAgICAgICAgICAgICAgIGNv
bG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JH
QjVfQTEgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdC
QThfT0VTICYmIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjMyRiAmJgorICAgICAgICAgICAg
ICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBMzJGKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
R0xfTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgY2FzZSBHTF9SR0JBOgorICAgICAgICAg
ICAgICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBNCAmJiBjb2xvcmJ1ZmZlckZv
cm1hdCAhPSBHTF9SR0I1X0ExICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9y
bWF0ICE9IEdMX1JHQkE4X09FUyAmJiBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBMzJGKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgICBj
YXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6CisgICAgICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgICAgICBjYXNlIEdM
X0VUQzFfUkdCOF9PRVM6CisgICAgICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNP
REVfQU5HTEU6CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCOF9MT1NTWV9ERUNP
REVfRVRDMl9BTkdMRToKKyAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9MT1NT
WV9ERUNPREVfRVRDMl9BTkdMRToKKyAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0I4
X1BVTkNIVEhST1VHSF9BTFBIQTFfTE9TU1lfREVDT0RFX0VUQzJfQU5HTEU6CisgICAgICAgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9MT1NTWV9ERUNP
REVfRVRDMl9BTkdMRToKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UOgorICAgICAgICAgICAgY2FzZSBH
TF9ERVBUSF9TVEVOQ0lMX09FUzoKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZm9ybWF0SW5mby50eXBlID09
IEdMX0ZMT0FUICYmICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUZsb2F0KQorICAg
ICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNhc2UgR0xfQUxQSEE6CisgICAgICAgICAgICAgICAgaWYgKGNv
bG9yYnVmZmVyRm9ybWF0ICE9IEdMX0FMUEhBOF9FWFQgJiYgY29sb3JidWZmZXJGb3JtYXQgIT0g
R0xfUkdCQTQgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xf
UkdCNV9BMSAmJiBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9CR1JBOF9FWFQgJiYKKyAgICAgICAg
ICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTICYmIGNvbG9yYnVm
ZmVyRm9ybWF0ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfTFVNSU5B
TkNFOgorICAgICAgICAgICAgICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SOF9FWFQg
JiYgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkc4X0VYVCAmJgorICAgICAgICAgICAgICAgICAg
ICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1NjUgJiYgY29sb3JidWZmZXJGb3JtYXQgIT0g
R0xfUkdCOF9PRVMgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0g
R0xfUkdCQTQgJiYgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9BMSAmJgorICAgICAgICAg
ICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9CR1JBOF9FWFQgJiYgY29sb3JidWZm
ZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVm
ZmVyRm9ybWF0ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfUkVEX0VY
VDoKKyAgICAgICAgICAgICAgICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUjhfRVhUICYm
IGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHOF9FWFQgJiYKKyAgICAgICAgICAgICAgICAgICAg
Y29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNTY1ICYmIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdM
X1JHQjhfT0VTICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdM
X1JHQkE0ICYmIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjVfQTEgJiYKKyAgICAgICAgICAg
ICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfQkdSQThfRVhUICYmIGNvbG9yYnVmZmVy
Rm9ybWF0ICE9IEdMX1JHQkE4X09FUyAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZl
ckZvcm1hdCAhPSBHTF9CR1I1X0ExX0FOR0xFWCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX1JHX0VYVDoK
KyAgICAgICAgICAgICAgICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkc4X0VYVCAmJiBj
b2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1NjUgJiYKKyAgICAgICAgICAgICAgICAgICAgY29s
b3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCOF9PRVMgJiYgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xf
UkdCQTQgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdC
NV9BMSAmJiBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9CR1JBOF9FWFQgJiYKKyAgICAgICAgICAg
ICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTICYmIGNvbG9yYnVmZmVy
Rm9ybWF0ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfUkdCOgorICAg
ICAgICAgICAgICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1NjUgJiYgY29sb3Ji
dWZmZXJGb3JtYXQgIT0gR0xfUkdCOF9PRVMgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3Ji
dWZmZXJGb3JtYXQgIT0gR0xfUkdCQTQgJiYgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9B
MSAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9CR1JBOF9F
WFQgJiYgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTICYmCisgICAgICAgICAgICAg
ICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBOgorICAgICAgICAgICAgY2FzZSBHTF9SR0JBOgorICAg
ICAgICAgICAgICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBNCAmJiBjb2xvcmJ1
ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0ExICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVm
ZmVyRm9ybWF0ICE9IEdMX0JHUkE4X0VYVCAmJiBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JB
OF9PRVMgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfQkdS
NV9BMV9BTkdMRVgpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFf
RVhUOgorICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoK
KyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVDb21w
cmVzc2lvbkRYVDEpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgor
ICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUNvbXBy
ZXNzaW9uRFhUMykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6Cisg
ICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJl
c3Npb25EWFQ1KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgR0xfRVRDMV9SR0I4X09FUzoKKyAgICAgICAgICAgICAgICBpZiAo
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmUpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFOgorICAgICAgICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1JHQjhfTE9TU1lfREVDT0RFX0VUQzJfQU5HTEU6CisgICAgICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfU1JHQjhfTE9TU1lfREVDT0RFX0VUQzJfQU5HTEU6CisgICAgICAgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0xPU1NZX0RFQ09E
RV9FVEMyX0FOR0xFOgorICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNI
VEhST1VHSF9BTFBIQTFfTE9TU1lfREVDT0RFX0VUQzJfQU5HTEU6CisgICAgICAgICAgICAgICAg
aWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5sb3NzeUVUQ0RlY29kZSkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiRVRDIGxvc3N5IGRlY29kZSBmb3JtYXRzIGNhbid0IGJlIGNvcGllZCB0by4i
KSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9JTlZBTElEX0VOVU0sICJBTkdMRV9sb3NzeV9ldGNfZGVjb2RlIGV4dGVuc2lvbiBpcyBu
b3Qgc3VwcG9ydGVkLiIpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
R0xfREVQVEhfQ09NUE9ORU5UOgorICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQx
NjoKKyAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTOgorICAgICAgICAg
ICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX09FUzoKKyAgICAgICAgICAgIGNhc2UgR0xfREVQVEgy
NF9TVEVOQ0lMOF9PRVM6CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5kZXB0aFRleHR1cmVzKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gSWYgd2lkdGggb3IgaGVpZ2h0IGlzIHplcm8sIGl0IGlzIGEgbm8tb3Au
ICBSZXR1cm4gZmFsc2Ugd2l0aG91dCBzZXR0aW5nIGFuIGVycm9yLgorICAgIHJldHVybiAod2lk
dGggPiAwICYmIGhlaWdodCA+IDApOwogfQogCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkBA
IC0xMjI5LDE2ICsxODI3LDE5IEBAIGJvb2wgVmFsaWRUZXh0dXJlVGFyZ2V0KGNvbnN0IFZhbGlk
YXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KQogewogICAgIHN3aXRjaCAodGFy
Z2V0KQogICAgIHsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKLSAgICAgIGNhc2UgR0xfVEVY
VFVSRV9DVUJFX01BUDoKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV8yRDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQOgorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFXzNEOgorICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfMkRfQVJSQVk6CisgICAgICAgICAgICByZXR1cm4gKGNvbnRleHQtPmdldENs
aWVudE1ham9yVmVyc2lvbigpID49IDMpOwogCi0gICAgICBjYXNlIEdMX1RFWFRVUkVfM0Q6Ci0g
ICAgICBjYXNlIEdMX1RFWFRVUkVfMkRfQVJSQVk6Ci0gICAgICAgICAgcmV0dXJuIChjb250ZXh0
LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzKTsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJF
XzJEX01VTFRJU0FNUExFOgorICAgICAgICAgICAgcmV0dXJuIChjb250ZXh0LT5nZXRDbGllbnRW
ZXJzaW9uKCkgPj0gVmVyc2lvbigzLCAxKSk7CiAKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiB9CiAKQEAgLTEyODUsMTYgKzE4ODYsMTYgQEAgYm9vbCBWYWxpZFRleHR1cmUyRERl
c3RpbmF0aW9uVGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dGEKIHsKICAgICBzd2l0Y2ggKHRhcmdldCkKICAgICB7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVf
MkQ6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDoKLSAgICAgIGNh
c2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOgotICAgICAgY2FzZSBHTF9URVhUVVJF
X0NVQkVfTUFQX1BPU0lUSVZFX1k6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVH
QVRJVkVfWToKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOgotICAg
ICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1o6Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1g6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOgorICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKKyAgICAgICAgY2FzZSBH
TF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9D
VUJFX01BUF9QT1NJVElWRV9aOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVH
QVRJVkVfWjoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KIApAQCAtMTMwMiwyNSArMTkwMyw1MCBA
QCBib29sIFZhbGlkVGV4dHVyZTNERGVzdGluYXRpb25UYXJnZXQoY29uc3QgVmFsaWRhdGlvbkNv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YQogewogICAgIHN3aXRjaCAodGFyZ2V0KQogICAgIHsK
LSAgICAgIGNhc2UgR0xfVEVYVFVSRV8zRDoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRF9BUlJB
WToKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFXzNEOgorICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfMkRfQVJSQVk6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgVmFsaWRUZXhM
ZXZlbERlc3RpbmF0aW9uVGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBH
TGVudW0gdGFyZ2V0KQoreworICAgIHN3aXRjaCAodGFyZ2V0KQorICAgIHsKKyAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFXzJEOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJ
VkVfWDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6CisgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZOgorICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWToKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NV
QkVfTUFQX1BPU0lUSVZFX1o6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdB
VElWRV9aOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfM0Q6CisgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV8yRF9BUlJBWToKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFOgor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCiBib29sIFZhbGlkRnJhbWVidWZmZXJUYXJnZXQoR0xl
bnVtIHRhcmdldCkKIHsKLSAgICBzdGF0aWNfYXNzZXJ0KEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5H
TEUgPT0gR0xfRFJBV19GUkFNRUJVRkZFUiAmJiBHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFID09
IEdMX1JFQURfRlJBTUVCVUZGRVIsCisgICAgc3RhdGljX2Fzc2VydChHTF9EUkFXX0ZSQU1FQlVG
RkVSX0FOR0xFID09IEdMX0RSQVdfRlJBTUVCVUZGRVIgJiYKKyAgICAgICAgICAgICAgICAgICAg
ICBHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFID09IEdMX1JFQURfRlJBTUVCVUZGRVIsCiAgICAg
ICAgICAgICAgICAgICAiQU5HTEUgZnJhbWVidWZmZXIgZW51bXMgbXVzdCBlcXVhbCB0aGUgRVMz
IGZyYW1lYnVmZmVyIGVudW1zLiIpOwogCiAgICAgc3dpdGNoICh0YXJnZXQpCiAgICAgewotICAg
ICAgY2FzZSBHTF9GUkFNRUJVRkZFUjogICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGNhc2UgR0xf
UkVBRF9GUkFNRUJVRkZFUjogcmV0dXJuIHRydWU7Ci0gICAgICBjYXNlIEdMX0RSQVdfRlJBTUVC
VUZGRVI6IHJldHVybiB0cnVlOwotICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVI6CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBHTF9SRUFEX0ZSQU1FQlVGRkVSOgorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgR0xfRFJBV19GUkFNRUJVRkZFUjoKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIH0KIApAQCAtMTMyOCwyMyArMTk1NCwyOSBAQCBib29sIFZhbGlkQnVmZmVy
VGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KQog
ewogICAgIHN3aXRjaCAodGFyZ2V0KQogICAgIHsKLSAgICAgIGNhc2UgR0xfQVJSQVlfQlVGRkVS
OgotICAgICAgY2FzZSBHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUjoKLSAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGNhc2UgR0xfQVJSQVlfQlVGRkVSOgorICAgICAgICBjYXNlIEdMX0VMRU1F
TlRfQVJSQVlfQlVGRkVSOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgY2Fz
ZSBHTF9QSVhFTF9QQUNLX0JVRkZFUjoKKyAgICAgICAgY2FzZSBHTF9QSVhFTF9VTlBBQ0tfQlVG
RkVSOgorICAgICAgICAgICAgcmV0dXJuIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucGl4ZWxC
dWZmZXJPYmplY3QgfHwKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0Q2xpZW50TWFq
b3JWZXJzaW9uKCkgPj0gMyk7CiAKLSAgICAgIGNhc2UgR0xfUElYRUxfUEFDS19CVUZGRVI6Ci0g
ICAgICBjYXNlIEdMX1BJWEVMX1VOUEFDS19CVUZGRVI6Ci0gICAgICAgICAgcmV0dXJuIChjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkucGl4ZWxCdWZmZXJPYmplY3QgfHwKLSAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMpOworICAgICAgICBjYXNl
IEdMX0NPUFlfUkVBRF9CVUZGRVI6CisgICAgICAgIGNhc2UgR0xfQ09QWV9XUklURV9CVUZGRVI6
CisgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUjoKKyAgICAgICAgY2Fz
ZSBHTF9VTklGT1JNX0JVRkZFUjoKKyAgICAgICAgICAgIHJldHVybiAoY29udGV4dC0+Z2V0Q2xp
ZW50TWFqb3JWZXJzaW9uKCkgPj0gMyk7CiAKLSAgICAgIGNhc2UgR0xfQ09QWV9SRUFEX0JVRkZF
UjoKLSAgICAgIGNhc2UgR0xfQ09QWV9XUklURV9CVUZGRVI6Ci0gICAgICBjYXNlIEdMX1RSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVI6Ci0gICAgICBjYXNlIEdMX1VOSUZPUk1fQlVGRkVSOgotICAg
ICAgICAgIHJldHVybiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMyk7Cisg
ICAgICAgIGNhc2UgR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSOgorICAgICAgICBjYXNlIEdMX1NI
QURFUl9TVE9SQUdFX0JVRkZFUjoKKyAgICAgICAgY2FzZSBHTF9EUkFXX0lORElSRUNUX0JVRkZF
UjoKKyAgICAgICAgY2FzZSBHTF9ESVNQQVRDSF9JTkRJUkVDVF9CVUZGRVI6CisgICAgICAgICAg
ICByZXR1cm4gY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpID49IFZlcnNpb24oMywgMSk7CiAK
LSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKQEAgLTEzNTcsMjggKzE5ODks
MzIgQEAgYm9vbCBWYWxpZE1pcExldmVsKGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCkKICAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJE
OgogICAgICAgICAgICAgbWF4RGltZW5zaW9uID0gY2Fwcy5tYXgyRFRleHR1cmVTaXplOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVA6Ci0gICAgICBj
YXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDoKLSAgICAgIGNhc2UgR0xfVEVYVFVS
RV9DVUJFX01BUF9ORUdBVElWRV9YOgotICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BP
U0lUSVZFX1k6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWToKLSAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOgotICAgICAgY2FzZSBHTF9U
RVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1o6Ci0gICAgICAgICAgbWF4RGltZW5zaW9uID0gY2Fw
cy5tYXhDdWJlTWFwVGV4dHVyZVNpemU7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdM
X1RFWFRVUkVfM0Q6Ci0gICAgICAgICAgbWF4RGltZW5zaW9uID0gY2Fwcy5tYXgzRFRleHR1cmVT
aXplOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9URVhUVVJFXzJEX0FSUkFZOgot
ICAgICAgICAgIG1heERpbWVuc2lvbiA9IGNhcHMubWF4MkRUZXh0dXJlU2l6ZTsKLSAgICAgICAg
ICBicmVhazsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9DVUJFX01BUDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1g6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YOgorICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKKyAgICAgICAgY2FzZSBH
TF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9D
VUJFX01BUF9QT1NJVElWRV9aOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVH
QVRJVkVfWjoKKyAgICAgICAgICAgIG1heERpbWVuc2lvbiA9IGNhcHMubWF4Q3ViZU1hcFRleHR1
cmVTaXplOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8zRDoK
KyAgICAgICAgICAgIG1heERpbWVuc2lvbiA9IGNhcHMubWF4M0RUZXh0dXJlU2l6ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkRfQVJSQVk6CisgICAgICAg
ICAgICBtYXhEaW1lbnNpb24gPSBjYXBzLm1heDJEVGV4dHVyZVNpemU7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFOgorICAgICAgICAg
ICAgbWF4RGltZW5zaW9uID0gY2Fwcy5tYXgyRFRleHR1cmVTaXplOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgIH0K
IAogICAgIHJldHVybiBsZXZlbCA8PSBnbDo6bG9nMihzdGF0aWNfY2FzdDxpbnQ+KG1heERpbWVu
c2lvbikpOwogfQogCi1ib29sIFZhbGlkSW1hZ2VTaXplUGFyYW1ldGVycyhjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorYm9vbCBWYWxpZEltYWdlU2l6ZVBhcmFtZXRlcnMoY29uc3QgVmFsaWRhdGlv
bkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLApAQCAtMTM5Myw3ICsyMDI5
LDkgQEAgYm9vbCBWYWxpZEltYWdlU2l6ZVBhcmFtZXRlcnMoY29uc3QgQ29udGV4dCAqY29udGV4
dCwKIAogICAgIC8vIFRleFN1YkltYWdlIHBhcmFtZXRlcnMgY2FuIGJlIE5QT1Qgd2l0aG91dCB0
ZXh0dXJlTlBPVCBleHRlbnNpb24sCiAgICAgLy8gYXMgbG9uZyBhcyB0aGUgZGVzdGluYXRpb24g
dGV4dHVyZSBpcyBQT1QuCi0gICAgaWYgKCFpc1N1YkltYWdlICYmICFjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkudGV4dHVyZU5QT1QgJiYKKyAgICBib29sIGhhc05QT1RTdXBwb3J0ID0KKyAgICAg
ICAgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVOUE9UIHx8IGNvbnRleHQtPmdldENs
aWVudFZlcnNpb24oKSA+PSBWZXJzaW9uKDMsIDApOworICAgIGlmICghaXNTdWJJbWFnZSAmJiAh
aGFzTlBPVFN1cHBvcnQgJiYKICAgICAgICAgKGxldmVsICE9IDAgJiYgKCFnbDo6aXNQb3cyKHdp
ZHRoKSB8fCAhZ2w6OmlzUG93MihoZWlnaHQpIHx8ICFnbDo6aXNQb3cyKGRlcHRoKSkpKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQxOCw2ICsyMDU2LDEyIEBAIGJvb2wgQ29t
cHJlc3NlZFRleHR1cmVGb3JtYXRSZXF1aXJlc0V4YWN0U2l6ZShHTGVudW0gaW50ZXJuYWxGb3Jt
YXQpCiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKICAg
ICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgogICAgICAgICBj
YXNlIEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEU6CisgICAgICAgIGNhc2UgR0xfQ09N
UFJFU1NFRF9SR0I4X0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFOgorICAgICAgICBjYXNlIEdMX0NP
TVBSRVNTRURfU1JHQjhfTE9TU1lfREVDT0RFX0VUQzJfQU5HTEU6CisgICAgICAgIGNhc2UgR0xf
Q09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfTE9TU1lfREVDT0RFX0VUQzJfQU5H
TEU6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEEx
X0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFOgorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdC
QThfTE9TU1lfREVDT0RFX0VUQzJfRUFDX0FOR0xFOgorICAgICAgICBjYXNlIEdMX0NPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0xPU1NZX0RFQ09ERV9FVEMyX0VBQ19BTkdMRToKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC0xNDI3LDYgKzIwNzEsOCBAQCBi
b29sIENvbXByZXNzZWRUZXh0dXJlRm9ybWF0UmVxdWlyZXNFeGFjdFNpemUoR0xlbnVtIGludGVy
bmFsRm9ybWF0KQogCiBib29sIFZhbGlkQ29tcHJlc3NlZEltYWdlU2l6ZShjb25zdCBWYWxpZGF0
aW9uQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhv
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQogewpAQCAtMTQzNiwxNCArMjA4MiwxNiBA
QCBib29sIFZhbGlkQ29tcHJlc3NlZEltYWdlU2l6ZShjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICh3aWR0aCA8
IDAgfHwgaGVpZ2h0IDwgMCkKKyAgICBpZiAoeG9mZnNldCA8IDAgfHwgeW9mZnNldCA8IDAgfHwg
d2lkdGggPCAwIHx8IGhlaWdodCA8IDApCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCiAgICAgaWYgKENvbXByZXNzZWRUZXh0dXJlRm9ybWF0UmVxdWlyZXNFeGFjdFNpemUo
aW50ZXJuYWxGb3JtYXQpKQogICAgIHsKLSAgICAgICAgaWYgKChzdGF0aWNfY2FzdDxHTHVpbnQ+
KHdpZHRoKSA+IGZvcm1hdEluZm8uY29tcHJlc3NlZEJsb2NrV2lkdGggJiYKKyAgICAgICAgaWYg
KHhvZmZzZXQgJSBmb3JtYXRJbmZvLmNvbXByZXNzZWRCbG9ja1dpZHRoICE9IDAgfHwKKyAgICAg
ICAgICAgIHlvZmZzZXQgJSBmb3JtYXRJbmZvLmNvbXByZXNzZWRCbG9ja0hlaWdodCAhPSAwIHx8
CisgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8R0x1aW50Pih3aWR0aCkgPiBmb3JtYXRJbmZvLmNv
bXByZXNzZWRCbG9ja1dpZHRoICYmCiAgICAgICAgICAgICAgd2lkdGggJSBmb3JtYXRJbmZvLmNv
bXByZXNzZWRCbG9ja1dpZHRoICE9IDApIHx8CiAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8R0x1
aW50PihoZWlnaHQpID4gZm9ybWF0SW5mby5jb21wcmVzc2VkQmxvY2tIZWlnaHQgJiYKICAgICAg
ICAgICAgICBoZWlnaHQgJSBmb3JtYXRJbmZvLmNvbXByZXNzZWRCbG9ja0hlaWdodCAhPSAwKSkK
QEAgLTE1MTAsOSArMjE1OCwxMCBAQCBib29sIFZhbGlkSW1hZ2VEYXRhU2l6ZShWYWxpZGF0aW9u
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgewogICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoCiAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJpbWFn
ZVNpemUgbXVzdCBiZSAwIGlmIG5vIHRleHR1cmUgZGF0YSBpcyBwcm92aWRlZC4iKSk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoZW5kQnl0ZSA+
IHN0YXRpY19jYXN0PEdMdWludD4oaW1hZ2VTaXplKSkKKyAgICAgICAgaWYgKHBpeGVscyAhPSBu
dWxscHRyICYmIGVuZEJ5dGUgPiBzdGF0aWNfY2FzdDxHTHVpbnQ+KGltYWdlU2l6ZSkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAogICAgICAgICAgICAgICAg
IEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiaW1hZ2VTaXplIG11c3QgYmUgYXQgbGVhc3Qg
JXUuIiwgZW5kQnl0ZSkpOwpAQCAtMTUyNSwzMCArMjE3NCw4MCBAQCBib29sIFZhbGlkSW1hZ2VE
YXRhU2l6ZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKIAogYm9vbCBWYWxpZFF1ZXJ5VHlw
ZShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcXVlcnlUeXBlKQogewotICAgIHN0YXRp
Y19hc3NlcnQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEID09IEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9F
WFQsICJHTCBleHRlbnNpb24gZW51bXMgbm90IGVxdWFsLiIpOwotICAgIHN0YXRpY19hc3NlcnQo
R0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRSA9PSBHTF9BTllfU0FNUExFU19QQVNT
RURfQ09OU0VSVkFUSVZFX0VYVCwgIkdMIGV4dGVuc2lvbiBlbnVtcyBub3QgZXF1YWwuIik7Cisg
ICAgc3RhdGljX2Fzc2VydChHTF9BTllfU0FNUExFU19QQVNTRUQgPT0gR0xfQU5ZX1NBTVBMRVNf
UEFTU0VEX0VYVCwKKyAgICAgICAgICAgICAgICAgICJHTCBleHRlbnNpb24gZW51bXMgbm90IGVx
dWFsLiIpOworICAgIHN0YXRpY19hc3NlcnQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZB
VElWRSA9PSBHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFX0VYVCwKKyAgICAgICAg
ICAgICAgICAgICJHTCBleHRlbnNpb24gZW51bXMgbm90IGVxdWFsLiIpOwogCiAgICAgc3dpdGNo
IChxdWVyeVR5cGUpCiAgICAgewotICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRUQ6Ci0g
ICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkU6Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19X
UklUVEVOOgotICAgICAgICAgIHJldHVybiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCkgPj0gMyk7Ci0gICAgICBjYXNlIEdMX1RJTUVfRUxBUFNFRF9FWFQ6Ci0gICAgICAgICAgcmV0
dXJuIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnk7Ci0gICAgICBj
YXNlIEdMX0NPTU1BTkRTX0NPTVBMRVRFRF9DSFJPTUlVTToKLSAgICAgICAgICByZXR1cm4gY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnN5bmNRdWVyeTsKLSAgICAgIGRlZmF1bHQ6CisgICAgICAg
IGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEOgorICAgICAgICBjYXNlIEdMX0FOWV9TQU1QTEVT
X1BBU1NFRF9DT05TRVJWQVRJVkU6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
Y2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOOgorICAgICAgICAg
ICAgcmV0dXJuIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzKTsKKyAgICAg
ICAgY2FzZSBHTF9USU1FX0VMQVBTRURfRVhUOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5kaXNqb2ludFRpbWVyUXVlcnk7CisgICAgICAgIGNhc2UgR0xfQ09N
TUFORFNfQ09NUExFVEVEX0NIUk9NSVVNOgorICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS5zeW5jUXVlcnk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitib29sIFZhbGlkYXRlV2ViR0xWZXJ0ZXhBdHRyaWJQ
b2ludGVyKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIG5vcm1hbGl6ZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBwdXJlSW50ZWdlcikKK3sKKyAgICBBU1NFUlQoY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLndlYmdsQ29tcGF0aWJpbGl0eSk7CisKKyAgICAvLyBXZWJHTCAxLjAg
W1NlY3Rpb24gNi4xMV0gVmVydGV4IEF0dHJpYnV0ZSBEYXRhIFN0cmlkZQorICAgIC8vIFRoZSBX
ZWJHTCBBUEkgc3VwcG9ydHMgdmVydGV4IGF0dHJpYnV0ZSBkYXRhIHN0cmlkZXMgdXAgdG8gMjU1
IGJ5dGVzLiBBIGNhbGwgdG8KKyAgICAvLyB2ZXJ0ZXhBdHRyaWJQb2ludGVyIHdpbGwgZ2VuZXJh
dGUgYW4gSU5WQUxJRF9WQUxVRSBlcnJvciBpZiB0aGUgdmFsdWUgZm9yIHRoZSBzdHJpZGUKKyAg
ICAvLyBwYXJhbWV0ZXIgZXhjZWVkcyAyNTUuCisgICAgY29uc3RleHByIEdMc2l6ZWkga01heFdl
YkdMU3RyaWRlID0gMjU1OworICAgIGlmIChzdHJpZGUgPiBrTWF4V2ViR0xTdHJpZGUpCisgICAg
eworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lO
VkFMSURfVkFMVUUsICJTdHJpZGUgaXMgb3ZlciB0aGUgbWF4aW11bSBzdHJpZGUgYWxsb3dlZCBi
eSBXZWJHTC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBXZWJH
TCAxLjAgW1NlY3Rpb24gNi40XSBCdWZmZXIgT2Zmc2V0IGFuZCBTdHJpZGUgUmVxdWlyZW1lbnRz
CisgICAgLy8gVGhlIG9mZnNldCBhcmd1bWVudHMgdG8gZHJhd0VsZW1lbnRzIGFuZCB2ZXJ0ZXhB
dHRyaWJQb2ludGVyLCBhbmQgdGhlIHN0cmlkZSBhcmd1bWVudCB0bworICAgIC8vIHZlcnRleEF0
dHJpYlBvaW50ZXIsIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aGUgc2l6ZSBvZiB0aGUgZGF0YSB0
eXBlIHBhc3NlZCB0byB0aGUgY2FsbCwKKyAgICAvLyBvciBhbiBJTlZBTElEX09QRVJBVElPTiBl
cnJvciBpcyBnZW5lcmF0ZWQuCisgICAgVmVydGV4Rm9ybWF0VHlwZSBpbnRlcm5hbFR5cGUgPSBH
ZXRWZXJ0ZXhGb3JtYXRUeXBlKHR5cGUsIG5vcm1hbGl6ZWQsIDEsIHB1cmVJbnRlZ2VyKTsKKyAg
ICBzaXplX3QgdHlwZVNpemUgICAgICAgICAgICAgICA9IEdldFZlcnRleEZvcm1hdFR5cGVTaXpl
KGludGVybmFsVHlwZSk7CisKKyAgICBBU1NFUlQoaXNQb3cyKHR5cGVTaXplKSAmJiB0eXBlU2l6
ZSA+IDApOworICAgIHNpemVfdCBzaXplTWFzayA9ICh0eXBlU2l6ZSAtIDEpOworICAgIGlmICgo
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4ocHRyKSAmIHNpemVNYXNrKSAhPSAwKQorICAgIHsK
KyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTiwgIk9mZnNldCBpcyBub3QgYSBtdWx0aXBsZSBvZiB0aGUgdHlwZSBzaXpl
LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICgoc3RyaWRlICYg
c2l6ZU1hc2spICE9IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAg
ICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiU3RyaWRlIGlzIG5vdCBhIG11
bHRpcGxlIG9mIHRoZSB0eXBlIHNpemUuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQorCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIFByb2dyYW0gKkdldFZhbGlkUHJvZ3JhbShWYWxp
ZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkKQogewotICAgIC8vIEVTMyBzcGVjIChz
ZWN0aW9uIDIuMTEuMSkgLS0gIkNvbW1hbmRzIHRoYXQgYWNjZXB0IHNoYWRlciBvciBwcm9ncmFt
IG9iamVjdCBuYW1lcyB3aWxsIGdlbmVyYXRlIHRoZQotICAgIC8vIGVycm9yIElOVkFMSURfVkFM
VUUgaWYgdGhlIHByb3ZpZGVkIG5hbWUgaXMgbm90IHRoZSBuYW1lIG9mIGVpdGhlciBhIHNoYWRl
ciBvciBwcm9ncmFtIG9iamVjdCBhbmQKLSAgICAvLyBJTlZBTElEX09QRVJBVElPTiBpZiB0aGUg
cHJvdmlkZWQgbmFtZSBpZGVudGlmaWVzIGFuIG9iamVjdCB0aGF0IGlzIG5vdCB0aGUgZXhwZWN0
ZWQgdHlwZS4iCisgICAgLy8gRVMzIHNwZWMgKHNlY3Rpb24gMi4xMS4xKSAtLSAiQ29tbWFuZHMg
dGhhdCBhY2NlcHQgc2hhZGVyIG9yIHByb2dyYW0gb2JqZWN0IG5hbWVzIHdpbGwKKyAgICAvLyBn
ZW5lcmF0ZSB0aGUgZXJyb3IgSU5WQUxJRF9WQUxVRSBpZiB0aGUgcHJvdmlkZWQgbmFtZSBpcyBu
b3QgdGhlIG5hbWUgb2YgZWl0aGVyIGEgc2hhZGVyCisgICAgLy8gb3IgcHJvZ3JhbSBvYmplY3Qg
YW5kIElOVkFMSURfT1BFUkFUSU9OIGlmIHRoZSBwcm92aWRlZCBuYW1lIGlkZW50aWZpZXMgYW4g
b2JqZWN0CisgICAgLy8gdGhhdCBpcyBub3QgdGhlIGV4cGVjdGVkIHR5cGUuIgogCiAgICAgUHJv
Z3JhbSAqdmFsaWRQcm9ncmFtID0gY29udGV4dC0+Z2V0UHJvZ3JhbShpZCk7CiAKQEAgLTE2MDYs
MzggKzIzMDUsNDIgQEAgYm9vbCBWYWxpZGF0ZUF0dGFjaG1lbnRUYXJnZXQoZ2w6OkNvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBhdHRhY2htZW50KQogICAgIHsKICAgICAgICAgc3dpdGNoIChhdHRh
Y2htZW50KQogICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9ERVBUSF9BVFRBQ0hNRU5UOgot
ICAgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UOgotICAgICAgICAgICAgICBicmVh
azsKLQotICAgICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgotICAgICAg
ICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS53ZWJnbENvbXBhdGliaWxpdHkg
JiYKLSAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwg
MykKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY2Fz
ZSBHTF9ERVBUSF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0FUVEFD
SE1FTlQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgR0xfREVQ
VEhfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLndlYmdsQ29tcGF0aWJpbGl0eSAmJgorICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CiAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VQYXJh
bWV0ZXJzQmFzZShnbDo6Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBz
YW1wbGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQorYm9v
bCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShWYWxpZGF0aW9uQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQog
ewogICAgIHN3aXRjaCAodGFyZ2V0KQogICAgIHsKLSAgICAgIGNhc2UgR0xfUkVOREVSQlVGRkVS
OgotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVI6CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlm
ICh3aWR0aCA8IDAgfHwgaGVpZ2h0IDwgMCB8fCBzYW1wbGVzIDwgMCkKQEAgLTE2NDYsNyArMjM0
OSwxMCBAQCBib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRlcnNCYXNlKGds
OjpDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgY29uc3QgVGV4dHVyZUNhcHMgJmZvcm1hdENhcHMgPSBjb250ZXh0LT5nZXRU
ZXh0dXJlQ2FwcygpLmdldChpbnRlcm5hbGZvcm1hdCk7CisgICAgLy8gSGFjayBmb3IgdGhlIHNw
ZWNpYWwgV2ViR0wgMSAiREVQVEhfU1RFTkNJTCIgaW50ZXJuYWwgZm9ybWF0LgorICAgIEdMZW51
bSBjb252ZXJ0ZWRJbnRlcm5hbEZvcm1hdCA9IGNvbnRleHQtPmdldENvbnZlcnRlZFJlbmRlcmJ1
ZmZlckZvcm1hdChpbnRlcm5hbGZvcm1hdCk7CisKKyAgICBjb25zdCBUZXh0dXJlQ2FwcyAmZm9y
bWF0Q2FwcyA9IGNvbnRleHQtPmdldFRleHR1cmVDYXBzKCkuZ2V0KGNvbnZlcnRlZEludGVybmFs
Rm9ybWF0KTsKICAgICBpZiAoIWZvcm1hdENhcHMucmVuZGVyYWJsZSkKICAgICB7CiAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwpAQCAtMTY1Niw3
ICsyMzYyLDcgQEAgYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VQYXJhbWV0ZXJzQmFz
ZShnbDo6Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmcKICAgICAvLyBBTkdMRV9mcmFtZWJ1
ZmZlcl9tdWx0aXNhbXBsZSBkb2VzIG5vdCBleHBsaWNpdGx5IHN0YXRlIHRoYXQgdGhlIGludGVy
bmFsIGZvcm1hdCBtdXN0IGJlCiAgICAgLy8gc2l6ZWQgYnV0IGl0IGRvZXMgc3RhdGUgdGhhdCB0
aGUgZm9ybWF0IG11c3QgYmUgaW4gdGhlIEVTMi4wIHNwZWMgdGFibGUgNC41IHdoaWNoIGNvbnRh
aW5zCiAgICAgLy8gb25seSBzaXplZCBpbnRlcm5hbCBmb3JtYXRzLgotICAgIGNvbnN0IGdsOjpJ
bnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50
ZXJuYWxmb3JtYXQpOworICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9
IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oY29udmVydGVkSW50ZXJuYWxGb3JtYXQpOwogICAg
IGlmIChmb3JtYXRJbmZvLnBpeGVsQnl0ZXMgPT0gMCkKICAgICB7CiAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwpAQCAtMTY3OSwzOSArMjM4NSwx
MSBAQCBib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRlcnNCYXNlKGdsOjpD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRlcnNBTkdMRShnbDo6Q29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LCBH
THNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKLXsKLSAgICBBU1NFUlQoc2FtcGxlcyA9PSAw
IHx8IGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5mcmFtZWJ1ZmZlck11bHRpc2FtcGxlKTsKLQot
ICAgIC8vIEFOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIHN0YXRlcyB0aGF0IHRoZSB2YWx1
ZSBvZiBzYW1wbGVzIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsCi0gICAgLy8gdG8gTUFYX1NB
TVBMRVNfQU5HTEUgKENvbnRleHQ6OmdldENhcHMoKS5tYXhTYW1wbGVzKSBvdGhlcndpc2UgR0xf
SU5WQUxJRF9WQUxVRSBpcwotICAgIC8vIGdlbmVyYXRlZC4KLSAgICBpZiAoc3RhdGljX2Nhc3Q8
R0x1aW50PihzYW1wbGVzKSA+IGNvbnRleHQtPmdldENhcHMoKS5tYXhTYW1wbGVzKQotICAgIHsK
LSAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLy8gQU5HTEVfZnJhbWVidWZmZXJf
bXVsdGlzYW1wbGUgc3RhdGVzIEdMX09VVF9PRl9NRU1PUlkgaXMgZ2VuZXJhdGVkIG9uIGEgZmFp
bHVyZSB0byBjcmVhdGUKLSAgICAvLyB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UuIFRoaXMgaXMgZGlm
ZmVyZW50IHRoYW4gRVMgMy4wIGluIHdoaWNoIGEgc2FtcGxlIG51bWJlciBoaWdoZXIKLSAgICAv
LyB0aGFuIHRoZSBtYXhpbXVtIHNhbXBsZSBudW1iZXIgc3VwcG9ydGVkICBieSB0aGlzIGZvcm1h
dCBnZW5lcmF0ZXMgYSBHTF9JTlZBTElEX1ZBTFVFLgotICAgIC8vIFRoZSBUZXh0dXJlQ2Fwczo6
Z2V0TWF4U2FtcGxlcyBtZXRob2QgaXMgb25seSBndWFyZW50ZWVkIHRvIGJlIHZhbGlkIHdoZW4g
dGhlIGNvbnRleHQgaXMgRVMzLgotICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNp
b24oKSA+PSAzKQotICAgIHsKLSAgICAgICAgY29uc3QgVGV4dHVyZUNhcHMgJmZvcm1hdENhcHMg
PSBjb250ZXh0LT5nZXRUZXh0dXJlQ2FwcygpLmdldChpbnRlcm5hbGZvcm1hdCk7Ci0gICAgICAg
IGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KHNhbXBsZXMpID4gZm9ybWF0Q2Fwcy5nZXRNYXhTYW1w
bGVzKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX09VVF9PRl9NRU1PUlkpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIHJldHVybiBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VQYXJhbWV0
ZXJzQmFzZShjb250ZXh0LCB0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwg
aGVpZ2h0KTsKLX0KLQotYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyUGFyYW1l
dGVycyhnbDo6Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1l
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSByZW5kZXJidWZmZXJ0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpCitib29sIFZhbGlkYXRl
RnJhbWVidWZmZXJSZW5kZXJidWZmZXJQYXJhbWV0ZXJzKGdsOjpDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJlbmRlcmJ1ZmZlcikKIHsKICAgICBpZiAo
IVZhbGlkRnJhbWVidWZmZXJUYXJnZXQodGFyZ2V0KSkKICAgICB7CkBAIC0xNzY0LDEzICsyNDQy
LDEzIEBAIGJvb2wgVmFsaWRhdGVCbGl0RnJhbWVidWZmZXJQYXJhbWV0ZXJzKFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LAogewogICAgIHN3aXRjaCAoZmlsdGVyKQogICAgIHsKLSAgICAgIGNh
c2UgR0xfTkVBUkVTVDoKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX0xJTkVBUjoKLSAg
ICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGNhc2UgR0xfTkVBUkVTVDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdM
X0xJTkVBUjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKChtYXNrICYgfihHTF9DT0xPUl9C
VUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCkp
ICE9IDApCkBAIC0xODEwLDE5ICsyNDg4LDE5IEBAIGJvb2wgVmFsaWRhdGVCbGl0RnJhbWVidWZm
ZXJQYXJhbWV0ZXJzKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHJlYWRGcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXMoY29u
dGV4dC0+Z2V0Q29udGV4dFN0YXRlKCkpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAg
IGlmIChyZWFkRnJhbWVidWZmZXItPmNoZWNrU3RhdHVzKGNvbnRleHQpICE9IEdMX0ZSQU1FQlVG
RkVSX0NPTVBMRVRFKQogICAgIHsKICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIGlmIChkcmF3RnJhbWVidWZmZXItPmNoZWNrU3RhdHVzKGNvbnRleHQt
PmdldENvbnRleHRTdGF0ZSgpKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICBpZiAo
ZHJhd0ZyYW1lYnVmZmVyLT5jaGVja1N0YXR1cyhjb250ZXh0KSAhPSBHTF9GUkFNRUJVRkZFUl9D
T01QTEVURSkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBpZiAoZHJhd0ZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKGNvbnRleHQtPmdldENv
bnRleHRTdGF0ZSgpKSAhPSAwKQorICAgIGlmIChkcmF3RnJhbWVidWZmZXItPmdldFNhbXBsZXMo
Y29udGV4dCkgIT0gMCkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4MzMs
MTAgKzI1MTEsOSBAQCBib29sIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyUGFyYW1ldGVycyhWYWxp
ZGF0aW9uQ29udGV4dCAqY29udGV4dCwKICAgICBpZiAobWFzayAmIEdMX0NPTE9SX0JVRkZFUl9C
SVQpCiAgICAgewogICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpyZWFk
Q29sb3JCdWZmZXIgPSByZWFkRnJhbWVidWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZlcigpOwotICAg
ICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpkcmF3Q29sb3JCdWZmZXIgPSBk
cmF3RnJhbWVidWZmZXItPmdldEZpcnN0Q29sb3JidWZmZXIoKTsKICAgICAgICAgY29uc3QgRXh0
ZW5zaW9ucyAmZXh0ZW5zaW9ucyAgICAgICAgICAgICAgICAgICAgID0gY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpOwogCi0gICAgICAgIGlmIChyZWFkQ29sb3JCdWZmZXIgJiYgZHJhd0NvbG9yQnVm
ZmVyKQorICAgICAgICBpZiAocmVhZENvbG9yQnVmZmVyKQogICAgICAgICB7CiAgICAgICAgICAg
ICBjb25zdCBGb3JtYXQgJnJlYWRGb3JtYXQgPSByZWFkQ29sb3JCdWZmZXItPmdldEZvcm1hdCgp
OwogCkBAIC0xODUxLDEzICsyNTI4LDE1IEBAIGJvb2wgVmFsaWRhdGVCbGl0RnJhbWVidWZmZXJQ
YXJhbWV0ZXJzKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogCiAgICAgICAgICAgICAgICAg
ICAgIC8vIFRoZSBHTCBFUyAzLjAuMiBzcGVjIChwZyAxOTMpIHN0YXRlcyB0aGF0OgogICAgICAg
ICAgICAgICAgICAgICAvLyAxKSBJZiB0aGUgcmVhZCBidWZmZXIgaXMgZml4ZWQgcG9pbnQgZm9y
bWF0LCB0aGUgZHJhdyBidWZmZXIgbXVzdCBiZSBhcyB3ZWxsCi0gICAgICAgICAgICAgICAgICAg
IC8vIDIpIElmIHRoZSByZWFkIGJ1ZmZlciBpcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGZvcm1hdCwg
dGhlIGRyYXcgYnVmZmVyIG11c3QgYmUgYXMgd2VsbAotICAgICAgICAgICAgICAgICAgICAvLyAz
KSBJZiB0aGUgcmVhZCBidWZmZXIgaXMgYSBzaWduZWQgaW50ZWdlciBmb3JtYXQsIHRoZSBkcmF3
IGJ1ZmZlciBtdXN0IGJlIGFzIHdlbGwKKyAgICAgICAgICAgICAgICAgICAgLy8gMikgSWYgdGhl
IHJlYWQgYnVmZmVyIGlzIGFuIHVuc2lnbmVkIGludGVnZXIgZm9ybWF0LCB0aGUgZHJhdyBidWZm
ZXIgbXVzdCBiZQorICAgICAgICAgICAgICAgICAgICAvLyBhcyB3ZWxsCisgICAgICAgICAgICAg
ICAgICAgIC8vIDMpIElmIHRoZSByZWFkIGJ1ZmZlciBpcyBhIHNpZ25lZCBpbnRlZ2VyIGZvcm1h
dCwgdGhlIGRyYXcgYnVmZmVyIG11c3QgYmUgYXMKKyAgICAgICAgICAgICAgICAgICAgLy8gd2Vs
bAogICAgICAgICAgICAgICAgICAgICAvLyBDaGFuZ2VzIHdpdGggRVhUX2NvbG9yX2J1ZmZlcl9m
bG9hdDoKICAgICAgICAgICAgICAgICAgICAgLy8gQ2FzZSAxKSBpcyBjaGFuZ2VkIHRvIGZpeGVk
IHBvaW50IE9SIGZsb2F0aW5nIHBvaW50CiAgICAgICAgICAgICAgICAgICAgIEdMZW51bSByZWFk
Q29tcG9uZW50VHlwZSA9IHJlYWRGb3JtYXQuaW5mby0+Y29tcG9uZW50VHlwZTsKICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGRyYXdDb21wb25lbnRUeXBlID0gZHJhd0Zvcm1hdC5pbmZvLT5j
b21wb25lbnRUeXBlOwotICAgICAgICAgICAgICAgICAgICBib29sIHJlYWRGaXhlZFBvaW50ID0g
KHJlYWRDb21wb25lbnRUeXBlID09IEdMX1VOU0lHTkVEX05PUk1BTElaRUQgfHwKKyAgICAgICAg
ICAgICAgICAgICAgYm9vbCByZWFkRml4ZWRQb2ludCAgICAgID0gKHJlYWRDb21wb25lbnRUeXBl
ID09IEdMX1VOU0lHTkVEX05PUk1BTElaRUQgfHwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWFkQ29tcG9uZW50VHlwZSA9PSBHTF9TSUdORURfTk9STUFMSVpF
RCk7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgZHJhd0ZpeGVkUG9pbnQgPSAoZHJhd0NvbXBv
bmVudFR5cGUgPT0gR0xfVU5TSUdORURfTk9STUFMSVpFRCB8fAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdDb21wb25lbnRUeXBlID09IEdMX1NJR05FRF9O
T1JNQUxJWkVEKTsKQEAgLTE5MTQsMTYgKzI1OTMsMjkgQEAgYm9vbCBWYWxpZGF0ZUJsaXRGcmFt
ZWJ1ZmZlclBhcmFtZXRlcnMoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIC8v
IFdlYkdMIDIuMCBCbGl0RnJhbWVidWZmZXIgd2hlbiBibGl0dGluZyBmcm9tIGEgbWlzc2luZyBh
dHRhY2htZW50CisgICAgICAgIC8vIEluIE9wZW5HTCBFUyBpdCBpcyB1bmRlZmluZWQgd2hhdCBo
YXBwZW5zIHdoZW4gYW4gb3BlcmF0aW9uIHRyaWVzIHRvIGJsaXQgZnJvbSBhIG1pc3NpbmcKKyAg
ICAgICAgLy8gYXR0YWNobWVudCBhbmQgV2ViR0wgZGVmaW5lcyBpdCB0byBiZSBhbiBlcnJvci4g
V2UgZG8gdGhlIGNoZWNrIHVuY29uZGl0aW9uYWxseSBhcyB0aGUKKyAgICAgICAgLy8gc2l0dWF0
aW9uIGlzIGFuIGFwcGxpY2F0aW9uIGVycm9yIHRoYXQgd291bGQgbGVhZCB0byBhIGNyYXNoIGlu
IEFOR0xFLgorICAgICAgICBlbHNlIGlmIChkcmF3RnJhbWVidWZmZXItPmhhc0VuYWJsZWREcmF3
QnVmZmVyKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKAorICAgICAgICAgICAgICAgIEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAg
ICAgICJBdHRlbXB0IHRvIHJlYWQgZnJvbSBhIG1pc3NpbmcgY29sb3IgYXR0YWNobWVudCBvZiBh
IGNvbXBsZXRlIGZyYW1lYnVmZmVyLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgfQogICAgIH0KIAotICAgIEdMZW51bSBtYXNrc1tdID0ge0dMX0RFUFRIX0JVRkZFUl9C
SVQsIEdMX1NURU5DSUxfQlVGRkVSX0JJVH07CisgICAgR0xlbnVtIG1hc2tzW10gICAgICAgPSB7
R0xfREVQVEhfQlVGRkVSX0JJVCwgR0xfU1RFTkNJTF9CVUZGRVJfQklUfTsKICAgICBHTGVudW0g
YXR0YWNobWVudHNbXSA9IHtHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9TVEVOQ0lMX0FUVEFDSE1F
TlR9OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjsgaSsrKQogICAgIHsKICAgICAgICAg
aWYgKG1hc2sgJiBtYXNrc1tpXSkKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgZ2w6OkZy
YW1lYnVmZmVyQXR0YWNobWVudCAqcmVhZEJ1ZmZlciA9IHJlYWRGcmFtZWJ1ZmZlci0+Z2V0QXR0
YWNobWVudChhdHRhY2htZW50c1tpXSk7Ci0gICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZm
ZXJBdHRhY2htZW50ICpkcmF3QnVmZmVyID0gZHJhd0ZyYW1lYnVmZmVyLT5nZXRBdHRhY2htZW50
KGF0dGFjaG1lbnRzW2ldKTsKKyAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFj
aG1lbnQgKnJlYWRCdWZmZXIgPQorICAgICAgICAgICAgICAgIHJlYWRGcmFtZWJ1ZmZlci0+Z2V0
QXR0YWNobWVudChhdHRhY2htZW50c1tpXSk7CisgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVi
dWZmZXJBdHRhY2htZW50ICpkcmF3QnVmZmVyID0KKyAgICAgICAgICAgICAgICBkcmF3RnJhbWVi
dWZmZXItPmdldEF0dGFjaG1lbnQoYXR0YWNobWVudHNbaV0pOwogCiAgICAgICAgICAgICBpZiAo
cmVhZEJ1ZmZlciAmJiBkcmF3QnVmZmVyKQogICAgICAgICAgICAgewpAQCAtMTkzOSw2ICsyNjMx
LDE0IEBAIGJvb2wgVmFsaWRhdGVCbGl0RnJhbWVidWZmZXJQYXJhbWV0ZXJzKFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gV2ViR0wgMi4wIEJs
aXRGcmFtZWJ1ZmZlciB3aGVuIGJsaXR0aW5nIGZyb20gYSBtaXNzaW5nIGF0dGFjaG1lbnQKKyAg
ICAgICAgICAgIGVsc2UgaWYgKGRyYXdCdWZmZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkF0dGVtcHQgdG8gcmVh
ZCBmcm9tIGEgbWlzc2luZyBkZXB0aC9zdGVuY2lsICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiYXR0YWNobWVudCBvZiBhIGNvbXBsZXRlIGZyYW1lYnVmZmVy
LiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTE5NTQsNyArMjY1NCw4IEBAIGJvb2wgVmFsaWRhdGVSZWFkUGl4
ZWxzKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKnBpeGVscykKIHsK
LSAgICByZXR1cm4gVmFsaWRhdGVSZWFkUGl4ZWxzQmFzZShjb250ZXh0LCB4LCB5LCB3aWR0aCwg
aGVpZ2h0LCBmb3JtYXQsIHR5cGUsIC0xLCBudWxscHRyLCBwaXhlbHMpOworICAgIHJldHVybiBW
YWxpZGF0ZVJlYWRQaXhlbHNCYXNlKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1h
dCwgdHlwZSwgLTEsIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwgcGl4ZWxzKTsKIH0KIAogYm9vbCBWYWxpZGF0ZVJlYWRQaXhlbHNS
b2J1c3RBTkdMRShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKQEAgLTE5NjYsNiArMjY2Nyw4
IEBAIGJvb2wgVmFsaWRhdGVSZWFkUGl4ZWxzUm9idXN0QU5HTEUoVmFsaWRhdGlvbkNvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqY29sdW1ucywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqcm93cywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpwaXhlbHMpCiB7CiAgICAgaWYgKCFWYWxpZGF0
ZVJvYnVzdEVudHJ5UG9pbnQoY29udGV4dCwgYnVmU2l6ZSkpCkBAIC0xOTc0LDcgKzI2NzcsNyBA
QCBib29sIFZhbGlkYXRlUmVhZFBpeGVsc1JvYnVzdEFOR0xFKFZhbGlkYXRpb25Db250ZXh0ICpj
b250ZXh0LAogICAgIH0KIAogICAgIGlmICghVmFsaWRhdGVSZWFkUGl4ZWxzQmFzZShjb250ZXh0
LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIGxlbmd0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxzKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29sdW1ucywgcm93cywgcGl4ZWxzKSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC0yMDA0LDcgKzI3MDcsNyBAQCBib29sIFZhbGlkYXRlUmVh
ZG5QaXhlbHNFWFQoQ29udGV4dCAqY29udGV4dCwKICAgICB9CiAKICAgICByZXR1cm4gVmFsaWRh
dGVSZWFkUGl4ZWxzQmFzZShjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5
cGUsIGJ1ZlNpemUsIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGl4ZWxzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLCBudWxs
cHRyLCBwaXhlbHMpOwogfQogCiBib29sIFZhbGlkYXRlUmVhZG5QaXhlbHNSb2J1c3RBTkdMRShW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKQEAgLTIwMTYsNiArMjcxOSw4IEBAIGJvb2wgVmFs
aWRhdGVSZWFkblBpeGVsc1JvYnVzdEFOR0xFKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpjb2x1bW5zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqcm93cywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdm9pZCAqZGF0YSkKIHsKICAgICBpZiAoIVZhbGlkYXRlUm9idXN0
RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKQEAgLTIwMjMsNyArMjcyOCw4IEBAIGJvb2wg
VmFsaWRhdGVSZWFkblBpeGVsc1JvYnVzdEFOR0xFKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0
LAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFWYWxpZGF0ZVJlYWRQ
aXhlbHNCYXNlKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVm
U2l6ZSwgbGVuZ3RoLCBkYXRhKSkKKyAgICBpZiAoIVZhbGlkYXRlUmVhZFBpeGVsc0Jhc2UoY29u
dGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnMsIHJvd3MsIGRhdGEpKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTI0NzYsODMgKzMxODIsOTYg
QEAgYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShDb250ZXh0ICpj
b250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBWYWxpZGF0ZVVuaWZv
cm1Db21tb25CYXNlKGdsOjpDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0VW5pZm9ybVR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBMaW5rZWRVbmlmb3JtICoqdW5pZm9ybU91dCkKK2Jv
b2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybShnbDo6Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdmFsdWVUeXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQp
CiB7Ci0gICAgaWYgKGNvdW50IDwgMCkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdl
dFByb2dyYW0oKTsKLSAgICBpZiAoIXByb2dyYW0pCisgICAgLy8gQ2hlY2sgZm9yIEVTMzEgcHJv
Z3JhbSB1bmlmb3JtIGVudHJ5IHBvaW50cworICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJz
aW9uKCkgPCBWZXJzaW9uKDMsIDEpKQogICAgIHsKICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIGlmIChwcm9ncmFtLT5pc0lnbm9yZWRVbmlmb3JtTG9jYXRpb24obG9jYXRp
b24pKQotICAgIHsKLSAgICAgICAgLy8gU2lsZW50bHkgaWdub3JlIHRoZSB1bmlmb3JtIGNvbW1h
bmQKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBjb25zdCBMaW5rZWRVbmlmb3Jt
ICp1bmlmb3JtID0gbnVsbHB0cjsKKyAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCAgID0g
R2V0VmFsaWRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pOworICAgIHJldHVybiBWYWxpZGF0ZVVu
aWZvcm1Db21tb25CYXNlKGNvbnRleHQsIHByb2dyYW1PYmplY3QsIGxvY2F0aW9uLCBjb3VudCwg
JnVuaWZvcm0pICYmCisgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybVZhbHVlKGNvbnRleHQsIHZh
bHVlVHlwZSwgdW5pZm9ybS0+dHlwZSk7Cit9CiAKLSAgICBpZiAoIXByb2dyYW0tPmlzVmFsaWRV
bmlmb3JtTG9jYXRpb24obG9jYXRpb24pKQorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtMWl2
KGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKQoreworICAgIC8v
IENoZWNrIGZvciBFUzMxIHByb2dyYW0gdW5pZm9ybSBlbnRyeSBwb2ludHMKKyAgICBpZiAoY29u
dGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgVmVyc2lvbigzLCAxKSkKICAgICB7CiAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBjb25zdCBMaW5rZWRVbmlmb3JtICZ1bmlm
b3JtID0gcHJvZ3JhbS0+Z2V0VW5pZm9ybUJ5TG9jYXRpb24obG9jYXRpb24pOworICAgIGNvbnN0
IExpbmtlZFVuaWZvcm0gKnVuaWZvcm0gPSBudWxscHRyOworICAgIGdsOjpQcm9ncmFtICpwcm9n
cmFtT2JqZWN0ICAgPSBHZXRWYWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CisgICAgcmV0
dXJuIFZhbGlkYXRlVW5pZm9ybUNvbW1vbkJhc2UoY29udGV4dCwgcHJvZ3JhbU9iamVjdCwgbG9j
YXRpb24sIGNvdW50LCAmdW5pZm9ybSkgJiYKKyAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtMWl2
VmFsdWUoY29udGV4dCwgdW5pZm9ybS0+dHlwZSwgY291bnQsIHZhbHVlKTsKK30KIAotICAgIC8v
IGF0dGVtcHRpbmcgdG8gd3JpdGUgYW4gYXJyYXkgdG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBh
biBJTlZBTElEX09QRVJBVElPTgotICAgIGlmICghdW5pZm9ybS5pc0FycmF5KCkgJiYgY291bnQg
PiAxKQorYm9vbCBWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4KGdsOjpDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB2YWx1ZVR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlKQoreworICAgIC8vIENoZWNrIGZv
ciBFUzMxIHByb2dyYW0gdW5pZm9ybSBlbnRyeSBwb2ludHMKKyAgICBpZiAoY29udGV4dC0+Z2V0
Q2xpZW50VmVyc2lvbigpIDwgVmVyc2lvbigzLCAxKSkKICAgICB7CiAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICAqdW5pZm9ybU91dCA9ICZ1bmlmb3JtOwotICAgIHJldHVy
biB0cnVlOworICAgIGNvbnN0IExpbmtlZFVuaWZvcm0gKnVuaWZvcm0gPSBudWxscHRyOworICAg
IGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ICAgPSBHZXRWYWxpZFByb2dyYW0oY29udGV4dCwg
cHJvZ3JhbSk7CisgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybUNvbW1vbkJhc2UoY29udGV4dCwg
cHJvZ3JhbU9iamVjdCwgbG9jYXRpb24sIGNvdW50LCAmdW5pZm9ybSkgJiYKKyAgICAgICAgICAg
VmFsaWRhdGVVbmlmb3JtTWF0cml4VmFsdWUoY29udGV4dCwgdmFsdWVUeXBlLCB1bmlmb3JtLT50
eXBlKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm0oZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB1bmlmb3JtVHlwZSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQpCitib29sIFZh
bGlkYXRlVW5pZm9ybShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHZhbHVlVHlw
ZSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQpCiB7CiAgICAgLy8gQ2hlY2sgZm9yIEVT
MyB1bmlmb3JtIGVudHJ5IHBvaW50cwotICAgIGlmIChWYXJpYWJsZUNvbXBvbmVudFR5cGUodW5p
Zm9ybVR5cGUpID09IEdMX1VOU0lHTkVEX0lOVCAmJgotICAgICAgICBjb250ZXh0LT5nZXRDbGll
bnRNYWpvclZlcnNpb24oKSA8IDMpCisgICAgaWYgKFZhcmlhYmxlQ29tcG9uZW50VHlwZSh2YWx1
ZVR5cGUpID09IEdMX1VOU0lHTkVEX0lOVCAmJiBjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNp
b24oKSA8IDMpCiAgICAgewogICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAg
Y29uc3QgTGlua2VkVW5pZm9ybSAqdW5pZm9ybSA9IG51bGxwdHI7Ci0gICAgaWYgKCFWYWxpZGF0
ZVVuaWZvcm1Db21tb25CYXNlKGNvbnRleHQsIHVuaWZvcm1UeXBlLCBsb2NhdGlvbiwgY291bnQs
ICZ1bmlmb3JtKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBH
TGVudW0gdGFyZ2V0Qm9vbFR5cGUgPSBWYXJpYWJsZUJvb2xWZWN0b3JUeXBlKHVuaWZvcm1UeXBl
KTsKLSAgICBib29sIHNhbXBsZXJVbmlmb3JtQ2hlY2sgPSAoSXNTYW1wbGVyVHlwZSh1bmlmb3Jt
LT50eXBlKSAmJiB1bmlmb3JtVHlwZSA9PSBHTF9JTlQpOwotICAgIGlmICghc2FtcGxlclVuaWZv
cm1DaGVjayAmJiB1bmlmb3JtVHlwZSAhPSB1bmlmb3JtLT50eXBlICYmIHRhcmdldEJvb2xUeXBl
ICE9IHVuaWZvcm0tPnR5cGUpCi0gICAgewotICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQorICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ICAgPSBjb250ZXh0LT5nZXRHTFN0YXRl
KCkuZ2V0UHJvZ3JhbSgpOworICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm1Db21tb25CYXNlKGNv
bnRleHQsIHByb2dyYW1PYmplY3QsIGxvY2F0aW9uLCBjb3VudCwgJnVuaWZvcm0pICYmCisgICAg
ICAgICAgIFZhbGlkYXRlVW5pZm9ybVZhbHVlKGNvbnRleHQsIHZhbHVlVHlwZSwgdW5pZm9ybS0+
dHlwZSk7Cit9CiAKLSAgICByZXR1cm4gdHJ1ZTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMWl2KGds
OjpDb250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0xpbnQgKnZhbHVlKQoreworICAgIGNvbnN0IExpbmtlZFVuaWZvcm0gKnVuaWZvcm0gPSBudWxs
cHRyOworICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ICAgPSBjb250ZXh0LT5nZXRHTFN0
YXRlKCkuZ2V0UHJvZ3JhbSgpOworICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm1Db21tb25CYXNl
KGNvbnRleHQsIHByb2dyYW1PYmplY3QsIGxvY2F0aW9uLCBjb3VudCwgJnVuaWZvcm0pICYmCisg
ICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybTFpdlZhbHVlKGNvbnRleHQsIHVuaWZvcm0tPnR5cGUs
IGNvdW50LCB2YWx1ZSk7CiB9CiAKLWJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4KGdsOjpDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gbWF0cml4VHlwZSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsCitib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeChWYWxpZGF0aW9uQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB2YWx1ZVR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gdHJhbnNwb3NlKQogewogICAgIC8vIENoZWNrIGZvciBFUzMgdW5pZm9ybSBlbnRyeSBw
b2ludHMKLSAgICBpbnQgcm93cyA9IFZhcmlhYmxlUm93Q291bnQobWF0cml4VHlwZSk7Ci0gICAg
aW50IGNvbHMgPSBWYXJpYWJsZUNvbHVtbkNvdW50KG1hdHJpeFR5cGUpOworICAgIGludCByb3dz
ID0gVmFyaWFibGVSb3dDb3VudCh2YWx1ZVR5cGUpOworICAgIGludCBjb2xzID0gVmFyaWFibGVD
b2x1bW5Db3VudCh2YWx1ZVR5cGUpOwogICAgIGlmIChyb3dzICE9IGNvbHMgJiYgY29udGV4dC0+
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQogICAgIHsKICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKQEAgLTI1NjYsMTggKzMyODUs
OSBAQCBib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeChnbDo6Q29udGV4dCAqY29udGV4dCwgR0xl
bnVtIG1hdHJpeFR5cGUsIEdMaW50IGxvY2F0aQogICAgIH0KIAogICAgIGNvbnN0IExpbmtlZFVu
aWZvcm0gKnVuaWZvcm0gPSBudWxscHRyOwotICAgIGlmICghVmFsaWRhdGVVbmlmb3JtQ29tbW9u
QmFzZShjb250ZXh0LCBtYXRyaXhUeXBlLCBsb2NhdGlvbiwgY291bnQsICZ1bmlmb3JtKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAodW5pZm9ybS0+dHlw
ZSAhPSBtYXRyaXhUeXBlKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LQotICAgIHJldHVybiB0cnVlOworICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ICAgPSBj
b250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOworICAgIHJldHVybiBWYWxpZGF0ZVVu
aWZvcm1Db21tb25CYXNlKGNvbnRleHQsIHByb2dyYW1PYmplY3QsIGxvY2F0aW9uLCBjb3VudCwg
JnVuaWZvcm0pICYmCisgICAgICAgICAgIFZhbGlkYXRlVW5pZm9ybU1hdHJpeFZhbHVlKGNvbnRl
eHQsIHZhbHVlVHlwZSwgdW5pZm9ybS0+dHlwZSk7CiB9CiAKIGJvb2wgVmFsaWRhdGVTdGF0ZVF1
ZXJ5KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LApAQCAtMjYwNiwyNyArMzMxNiwyNyBAQCBi
b29sIFZhbGlkYXRlU3RhdGVRdWVyeShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKIAogICAg
IHN3aXRjaCAocG5hbWUpCiAgICAgewotICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfMkQ6
Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUDoKLSAgICAgIGNhc2UgR0xf
VEVYVFVSRV9CSU5ESU5HXzNEOgotICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfMkRfQVJS
QVk6Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfRVhURVJO
QUxfT0VTOgotICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVnbFN0cmVh
bUNvbnN1bWVyRXh0ZXJuYWwgJiYKLSAgICAgICAgICAgICAgIWNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5lZ2xJbWFnZUV4dGVybmFsKQotICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiTmVpdGhlciBOVl9FR0xfc3RyZWFtX2NvbnN1bWVyX2V4
dGVybmFsIG5vciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJH
TF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIGV4dGVuc2lvbnMgZW5hYmxlZCIpKTsKLSAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgICBicmVhazsKLQotICAg
ICAgY2FzZSBHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEU6Ci0gICAgICBjYXNlIEdM
X0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUOgorICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfQklORElOR18yRDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVA6
CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HXzNEOgorICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfQklORElOR18yRF9BUlJBWToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfQklORElOR19FWFRFUk5BTF9PRVM6CisgICAgICAgICAgICBpZiAoIWNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5lZ2xTdHJlYW1Db25zdW1lckV4dGVybmFsICYmCisgICAgICAg
ICAgICAgICAgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lZ2xJbWFnZUV4dGVybmFsKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiTmVpdGhlciBOVl9FR0xfc3RyZWFtX2NvbnN1bWVyX2V4dGVybmFsIG5vciAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdMX09FU19FR0xfaW1hZ2VfZXh0
ZXJuYWwgZXh0ZW5zaW9ucyBlbmFibGVkIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xf
SU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFOgorICAgICAgICBjYXNlIEdMX0lNUExFTUVO
VEFUSU9OX0NPTE9SX1JFQURfRk9STUFUOgogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoY29u
dGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpLT5jaGVja1N0YXR1cygKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0Q29udGV4dFN0YXRlKCkpICE9IEdMX0ZSQU1F
QlVGRkVSX0NPTVBMRVRFKQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEdMU3RhdGUoKS5n
ZXRSZWFkRnJhbWVidWZmZXIoKS0+Y2hlY2tTdGF0dXMoY29udGV4dCkgIT0KKyAgICAgICAgICAg
ICAgICBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2NTAsOCArMzM2MCw4IEBAIGJvb2wg
VmFsaWRhdGVTdGF0ZVF1ZXJ5KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgICAgICB9
CiAgICAgICAgIGJyZWFrOwogCi0gICAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIC8vIHBuYW1lIGlz
IHZhbGlkLCBidXQgdGhlcmUgYXJlIG5vIHBhcmFtZXRlcnMgdG8gcmV0dXJuCkBAIC0yNzA4LDcg
KzM0MTgsOCBAQCBib29sIFZhbGlkYXRlQ29weVRleEltYWdlUGFyYW1ldGVyc0Jhc2UoVmFsaWRh
dGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBpZiAoc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB4b2Zmc2V0IDwgd2lk
dGggfHwgc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB5b2Zmc2V0IDwgaGVp
Z2h0KQorICAgIGlmIChzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAtIHhvZmZz
ZXQgPCB3aWR0aCB8fAorICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgo
KSAtIHlvZmZzZXQgPCBoZWlnaHQpCiAgICAgewogICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI3
MjgsMTMgKzM0MzksMTMgQEAgYm9vbCBWYWxpZGF0ZUNvcHlUZXhJbWFnZVBhcmFtZXRlcnNCYXNl
KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogCiAgICAgY29uc3QgYXV0byAmc3RhdGUgICAg
PSBjb250ZXh0LT5nZXRHTFN0YXRlKCk7CiAgICAgYXV0byByZWFkRnJhbWVidWZmZXIgPSBzdGF0
ZS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKLSAgICBpZiAocmVhZEZyYW1lYnVmZmVyLT5jaGVja1N0
YXR1cyhjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKSkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExF
VEUpCisgICAgaWYgKHJlYWRGcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXMoY29udGV4dCkgIT0gR0xf
RlJBTUVCVUZGRVJfQ09NUExFVEUpCiAgICAgewogICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTikpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHJlYWRGcmFtZWJ1ZmZlci0+aWQoKSAhPSAwICYm
IHJlYWRGcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcyhjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKSkg
IT0gMCkKKyAgICBpZiAocmVhZEZyYW1lYnVmZmVyLT5pZCgpICE9IDAgJiYgcmVhZEZyYW1lYnVm
ZmVyLT5nZXRTYW1wbGVzKGNvbnRleHQpICE9IDApCiAgICAgewogICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yNzQ2LDM1ICszNDU3LDQ1IEBAIGJvb2wgVmFsaWRhdGVDb3B5VGV4SW1hZ2VQ
YXJhbWV0ZXJzQmFzZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAorICAgIC8vIFdlYkdMIDEuMCBbU2VjdGlvbiA2LjI2XSBSZWFkaW5n
IEZyb20gYSBNaXNzaW5nIEF0dGFjaG1lbnQKKyAgICAvLyBJbiBPcGVuR0wgRVMgaXQgaXMgdW5k
ZWZpbmVkIHdoYXQgaGFwcGVucyB3aGVuIGFuIG9wZXJhdGlvbiB0cmllcyB0byByZWFkIGZyb20g
YSBtaXNzaW5nCisgICAgLy8gYXR0YWNobWVudCBhbmQgV2ViR0wgZGVmaW5lcyBpdCB0byBiZSBh
biBlcnJvci4gV2UgZG8gdGhlIGNoZWNrIHVuY29uZGl0aW9uYWxseSBhcyB0aGUKKyAgICAvLyBz
aXR1YXRpb24gaXMgYW4gYXBwbGljYXRpb24gZXJyb3IgdGhhdCB3b3VsZCBsZWFkIHRvIGEgY3Jh
c2ggaW4gQU5HTEUuCisgICAgaWYgKHJlYWRGcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVy
KCkgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTWlzc2luZyByZWFkIGF0dGFjaG1lbnQiKSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBjb25zdCBnbDo6Q2FwcyAmY2FwcyA9IGNv
bnRleHQtPmdldENhcHMoKTsKIAogICAgIEdMdWludCBtYXhEaW1lbnNpb24gPSAwOwogICAgIHN3
aXRjaCAodGFyZ2V0KQogICAgIHsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKLSAgICAgICAg
bWF4RGltZW5zaW9uID0gY2Fwcy5tYXgyRFRleHR1cmVTaXplOwotICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOgorICAgICAgICAgICAgbWF4RGltZW5zaW9uID0gY2Fw
cy5tYXgyRFRleHR1cmVTaXplOworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgIGNhc2UgR0xf
VEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgotICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1g6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVf
WToKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZOgotICAgICAgY2Fz
ZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVf
Q1VCRV9NQVBfTkVHQVRJVkVfWjoKLSAgICAgICAgbWF4RGltZW5zaW9uID0gY2Fwcy5tYXhDdWJl
TWFwVGV4dHVyZVNpemU7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
Q1VCRV9NQVBfUE9TSVRJVkVfWDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05F
R0FUSVZFX1g6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZOgor
ICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWToKKyAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6CisgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9DVUJFX01BUF9ORUdBVElWRV9aOgorICAgICAgICAgICAgbWF4RGltZW5zaW9uID0gY2Fwcy5t
YXhDdWJlTWFwVGV4dHVyZVNpemU7CisgICAgICAgICAgICBicmVhazsKIAotICAgICAgY2FzZSBH
TF9URVhUVVJFXzJEX0FSUkFZOgotICAgICAgICBtYXhEaW1lbnNpb24gPSBjYXBzLm1heDJEVGV4
dHVyZVNpemU7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkRfQVJS
QVk6CisgICAgICAgICAgICBtYXhEaW1lbnNpb24gPSBjYXBzLm1heDJEVGV4dHVyZVNpemU7Cisg
ICAgICAgICAgICBicmVhazsKIAotICAgICAgY2FzZSBHTF9URVhUVVJFXzNEOgotICAgICAgICBt
YXhEaW1lbnNpb24gPSBjYXBzLm1heDNEVGV4dHVyZVNpemU7Ci0gICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEdMX1RFWFRVUkVfM0Q6CisgICAgICAgICAgICBtYXhEaW1lbnNpb24gPSBjYXBz
Lm1heDNEVGV4dHVyZVNpemU7CisgICAgICAgICAgICBicmVhazsKIAotICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUgPQpAQCAtMjc5
OSw3ICszNTIwLDggQEAgYm9vbCBWYWxpZGF0ZUNvcHlUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKFZh
bGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgaWYgKGZvcm1hdEluZm8uY29tcHJlc3NlZCAmJiAhVmFsaWRDb21wcmVzc2VkSW1hZ2VT
aXplKGNvbnRleHQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSkKKyAgICBpZiAoZm9y
bWF0SW5mby5jb21wcmVzc2VkICYmCisgICAgICAgICFWYWxpZENvbXByZXNzZWRJbWFnZVNpemUo
Y29udGV4dCwgaW50ZXJuYWxmb3JtYXQsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQp
KQogICAgIHsKICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjgyMywxNCArMzU0NSwxNSBA
QCBib29sIFZhbGlkYXRlQ29weVRleEltYWdlUGFyYW1ldGVyc0Jhc2UoVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoIWZvcm1hdEluZm8udGV4dHVyZVN1cHBvcnQoY29udGV4dC0+Z2V0Q2xpZW50TWFq
b3JWZXJzaW9uKCksIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSkpCisgICAgICAgIGlmICghZm9y
bWF0SW5mby50ZXh0dXJlU3VwcG9ydChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCksIGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAKICAgICAgICAgaW50IG1heExldmVsRGltZW5zaW9uID0gKG1heERp
bWVuc2lvbiA+PiBsZXZlbCk7Ci0gICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHdpZHRoKSA+
IG1heExldmVsRGltZW5zaW9uIHx8IHN0YXRpY19jYXN0PGludD4oaGVpZ2h0KSA+IG1heExldmVs
RGltZW5zaW9uKQorICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50Pih3aWR0aCkgPiBtYXhMZXZl
bERpbWVuc2lvbiB8fAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihoZWlnaHQpID4gbWF4
TGV2ZWxEaW1lbnNpb24pCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTI4NDEsMjcgKzM1NjQsMzcgQEAgYm9vbCBWYWxpZGF0ZUNvcHlUZXhJbWFnZVBhcmFtZXRl
cnNCYXNlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgIHsKICAgICAgICAgKnRleHR1
cmVGb3JtYXRPdXQgPSB0ZXh0dXJlLT5nZXRGb3JtYXQodGFyZ2V0LCBsZXZlbCk7CiAgICAgfQor
CisgICAgLy8gRGV0ZWN0IHRleHR1cmUgY29weWluZyBmZWVkYmFjayBsb29wcyBmb3IgV2ViR0wu
CisgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS53ZWJnbENvbXBhdGliaWxpdHkpCisg
ICAgeworICAgICAgICBpZiAocmVhZEZyYW1lYnVmZmVyLT5mb3Jtc0NvcHlpbmdGZWVkYmFja0xv
b3BXaXRoKHRleHR1cmUtPmlkKCksIGxldmVsLCB6b2Zmc2V0KSkKKyAgICAgICAgeworICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGV4dHVyZSBjb3B5aW5nIGZl
ZWRiYWNrIGxvb3AgZm9ybWVkIGJldHdlZW4gRnJhbWVidWZmZXIgIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBzcGVjaWZpZWQgVGV4dHVyZSBsZXZlbC4iKSk7
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgVmFsaWRhdGVEcmF3QmFzZShWYWxpZGF0aW9uQ29u
dGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50KQorYm9vbCBWYWxpZGF0ZURyYXdC
YXNlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSwgR0xzaXplaSBjb3Vu
dCkKIHsKICAgICBzd2l0Y2ggKG1vZGUpCiAgICAgewotICAgICAgY2FzZSBHTF9QT0lOVFM6Ci0g
ICAgICBjYXNlIEdMX0xJTkVTOgotICAgICAgY2FzZSBHTF9MSU5FX0xPT1A6Ci0gICAgICBjYXNl
IEdMX0xJTkVfU1RSSVA6Ci0gICAgICBjYXNlIEdMX1RSSUFOR0xFUzoKLSAgICAgIGNhc2UgR0xf
VFJJQU5HTEVfU1RSSVA6Ci0gICAgICBjYXNlIEdMX1RSSUFOR0xFX0ZBTjoKLSAgICAgICAgYnJl
YWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2Ug
R0xfUE9JTlRTOgorICAgICAgICBjYXNlIEdMX0xJTkVTOgorICAgICAgICBjYXNlIEdMX0xJTkVf
TE9PUDoKKyAgICAgICAgY2FzZSBHTF9MSU5FX1NUUklQOgorICAgICAgICBjYXNlIEdMX1RSSUFO
R0xFUzoKKyAgICAgICAgY2FzZSBHTF9UUklBTkdMRV9TVFJJUDoKKyAgICAgICAgY2FzZSBHTF9U
UklBTkdMRV9GQU46CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChjb3VudCA8IDApCkBAIC0y
ODc5LDMwICszNjEyLDM4IEBAIHN0YXRpYyBib29sIFZhbGlkYXRlRHJhd0Jhc2UoVmFsaWRhdGlv
bkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICAv
LyBOb3RlOiB0aGVzZSBzZXBhcmF0ZSB2YWx1ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gV2ViR0ws
IGR1ZSB0byBEM0QncyBsaW1pdGF0aW9ucy4gU2VlCisgICAgLy8gU2VjdGlvbiA2LjEwIG9mIHRo
ZSBXZWJHTCAxLjAgc3BlYy4KICAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBzdGF0ZS5n
ZXREcmF3RnJhbWVidWZmZXIoKTsKLSAgICBpZiAoY29udGV4dC0+Z2V0TGltaXRhdGlvbnMoKS5u
b1NlcGFyYXRlU3RlbmNpbFJlZnNBbmRNYXNrcykKKyAgICBpZiAoY29udGV4dC0+Z2V0TGltaXRh
dGlvbnMoKS5ub1NlcGFyYXRlU3RlbmNpbFJlZnNBbmRNYXNrcyB8fAorICAgICAgICBjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkud2ViZ2xDb21wYXRpYmlsaXR5KQogICAgIHsKLSAgICAgICAgY29u
c3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpzdGVuY2lsQnVmZmVyID0gZnJhbWVidWZmZXItPmdl
dFN0ZW5jaWxidWZmZXIoKTsKLSAgICAgICAgR0x1aW50IHN0ZW5jaWxCaXRzICAgICAgICAgICAg
ICAgICAgICAgICAgID0gc3RlbmNpbEJ1ZmZlciA/IHN0ZW5jaWxCdWZmZXItPmdldFN0ZW5jaWxT
aXplKCkgOiAwOwotICAgICAgICBHTHVpbnQgbWluaW11bVJlcXVpcmVkU3RlbmNpbE1hc2sgICAg
ICAgICAgPSAoMSA8PCBzdGVuY2lsQml0cykgLSAxOworICAgICAgICBjb25zdCBGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQgKmRzQXR0YWNobWVudCA9CisgICAgICAgICAgICBmcmFtZWJ1ZmZlci0+Z2V0
U3RlbmNpbE9yRGVwdGhTdGVuY2lsQXR0YWNobWVudCgpOworICAgICAgICBHTHVpbnQgc3RlbmNp
bEJpdHMgICAgICAgICAgICAgICAgPSBkc0F0dGFjaG1lbnQgPyBkc0F0dGFjaG1lbnQtPmdldFN0
ZW5jaWxTaXplKCkgOiAwOworICAgICAgICBHTHVpbnQgbWluaW11bVJlcXVpcmVkU3RlbmNpbE1h
c2sgPSAoMSA8PCBzdGVuY2lsQml0cykgLSAxOwogICAgICAgICBjb25zdCBEZXB0aFN0ZW5jaWxT
dGF0ZSAmZGVwdGhTdGVuY2lsU3RhdGUgPSBzdGF0ZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgpOwot
ICAgICAgICBpZiAoKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxXcml0ZW1hc2sgJiBtaW5pbXVt
UmVxdWlyZWRTdGVuY2lsTWFzaykgIT0KLSAgICAgICAgICAgICAgICAoZGVwdGhTdGVuY2lsU3Rh
dGUuc3RlbmNpbEJhY2tXcml0ZW1hc2sgJiBtaW5pbXVtUmVxdWlyZWRTdGVuY2lsTWFzaykgfHwK
LSAgICAgICAgICAgIHN0YXRlLmdldFN0ZW5jaWxSZWYoKSAhPSBzdGF0ZS5nZXRTdGVuY2lsQmFj
a1JlZigpIHx8Ci0gICAgICAgICAgICAoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbE1hc2sgJiBt
aW5pbXVtUmVxdWlyZWRTdGVuY2lsTWFzaykgIT0KLSAgICAgICAgICAgICAgICAoZGVwdGhTdGVu
Y2lsU3RhdGUuc3RlbmNpbEJhY2tNYXNrICYgbWluaW11bVJlcXVpcmVkU3RlbmNpbE1hc2spKQor
CisgICAgICAgIGJvb2wgZGlmZmVyZW50UmVmcyA9IHN0YXRlLmdldFN0ZW5jaWxSZWYoKSAhPSBz
dGF0ZS5nZXRTdGVuY2lsQmFja1JlZigpOworICAgICAgICBib29sIGRpZmZlcmVudFdyaXRlbWFz
a3MgPQorICAgICAgICAgICAgKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxXcml0ZW1hc2sgJiBt
aW5pbXVtUmVxdWlyZWRTdGVuY2lsTWFzaykgIT0KKyAgICAgICAgICAgIChkZXB0aFN0ZW5jaWxT
dGF0ZS5zdGVuY2lsQmFja1dyaXRlbWFzayAmIG1pbmltdW1SZXF1aXJlZFN0ZW5jaWxNYXNrKTsK
KyAgICAgICAgYm9vbCBkaWZmZXJlbnRNYXNrcyA9IChkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2ls
TWFzayAmIG1pbmltdW1SZXF1aXJlZFN0ZW5jaWxNYXNrKSAhPQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrTWFzayAmIG1pbmltdW1S
ZXF1aXJlZFN0ZW5jaWxNYXNrKTsKKworICAgICAgICBpZiAoZGlmZmVyZW50UmVmcyB8fCBkaWZm
ZXJlbnRXcml0ZW1hc2tzIHx8IGRpZmZlcmVudE1hc2tzKQogICAgICAgICB7Ci0gICAgICAgICAg
ICAvLyBOb3RlOiB0aGVzZSBzZXBhcmF0ZSB2YWx1ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gV2Vi
R0wsIGR1ZSB0byBEM0QncyBsaW1pdGF0aW9ucy4gU2VlCi0gICAgICAgICAgICAvLyBTZWN0aW9u
IDYuMTAgb2YgdGhlIFdlYkdMIDEuMCBzcGVjCi0gICAgICAgICAgICBFUlIoCi0gICAgICAgICAg
ICAgICAgIlRoaXMgQU5HTEUgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBzZXBhcmF0
ZSBmcm9udC9iYWNrIHN0ZW5jaWwgIgotICAgICAgICAgICAgICAgICJ3cml0ZW1hc2tzLCByZWZl
cmVuY2UgdmFsdWVzLCBvciBzdGVuY2lsIG1hc2sgdmFsdWVzLiIpOworICAgICAgICAgICAgaWYg
KCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkud2ViZ2xDb21wYXRpYmlsaXR5KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIEVSUigpIDw8ICJUaGlzIEFOR0xFIGltcGxlbWVudGF0aW9u
IGRvZXMgbm90IHN1cHBvcnQgc2VwYXJhdGUgZnJvbnQvYmFjayBzdGVuY2lsICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAid3JpdGVtYXNrcywgcmVmZXJlbmNlIHZhbHVlcywgb3Igc3RlbmNp
bCBtYXNrIHZhbHVlcy4iOworICAgICAgICAgICAgfQogICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChmcmFtZWJ1ZmZlci0+Y2hlY2tT
dGF0dXMoY29udGV4dC0+Z2V0Q29udGV4dFN0YXRlKCkpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBM
RVRFKQorICAgIGlmIChmcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXMoY29udGV4dCkgIT0gR0xfRlJB
TUVCVUZGRVJfQ09NUExFVEUpCiAgICAgewogICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yOTIyLDEwICszNjYzLDExIEBAIHN0YXRpYyBib29sIFZhbGlkYXRlRHJhd0Jh
c2UoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgfQogCiAgICAgLy8gVW5pZm9ybSBi
dWZmZXIgdmFsaWRhdGlvbgotICAgIGZvciAodW5zaWduZWQgaW50IHVuaWZvcm1CbG9ja0luZGV4
ID0gMDsgdW5pZm9ybUJsb2NrSW5kZXggPCBwcm9ncmFtLT5nZXRBY3RpdmVVbmlmb3JtQmxvY2tD
b3VudCgpOyB1bmlmb3JtQmxvY2tJbmRleCsrKQorICAgIGZvciAodW5zaWduZWQgaW50IHVuaWZv
cm1CbG9ja0luZGV4ID0gMDsKKyAgICAgICAgIHVuaWZvcm1CbG9ja0luZGV4IDwgcHJvZ3JhbS0+
Z2V0QWN0aXZlVW5pZm9ybUJsb2NrQ291bnQoKTsgdW5pZm9ybUJsb2NrSW5kZXgrKykKICAgICB7
CiAgICAgICAgIGNvbnN0IGdsOjpVbmlmb3JtQmxvY2sgJnVuaWZvcm1CbG9jayA9IHByb2dyYW0t
PmdldFVuaWZvcm1CbG9ja0J5SW5kZXgodW5pZm9ybUJsb2NrSW5kZXgpOwotICAgICAgICBHTHVp
bnQgYmxvY2tCaW5kaW5nID0gcHJvZ3JhbS0+Z2V0VW5pZm9ybUJsb2NrQmluZGluZyh1bmlmb3Jt
QmxvY2tJbmRleCk7CisgICAgICAgIEdMdWludCBibG9ja0JpbmRpbmcgICAgICAgICAgICAgICAg
ICA9IHByb2dyYW0tPmdldFVuaWZvcm1CbG9ja0JpbmRpbmcodW5pZm9ybUJsb2NrSW5kZXgpOwog
ICAgICAgICBjb25zdCBPZmZzZXRCaW5kaW5nUG9pbnRlcjxCdWZmZXI+ICZ1bmlmb3JtQnVmZmVy
ID0KICAgICAgICAgICAgIHN0YXRlLmdldEluZGV4ZWRVbmlmb3JtQnVmZmVyKGJsb2NrQmluZGlu
Zyk7CiAKQEAgLTI5NTUsMTUgKzM2OTcsMjcgQEAgc3RhdGljIGJvb2wgVmFsaWRhdGVEcmF3QmFz
ZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgfQogICAgIH0KIAorICAgIC8v
IERldGVjdCByZW5kZXJpbmcgZmVlZGJhY2sgbG9vcHMgZm9yIFdlYkdMLgorICAgIGlmIChjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkud2ViZ2xDb21wYXRpYmlsaXR5KQorICAgIHsKKyAgICAgICAg
aWYgKGZyYW1lYnVmZmVyLT5mb3Jtc1JlbmRlcmluZ0ZlZWRiYWNrTG9vcFdpdGgoc3RhdGUpKQor
ICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAg
ICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAi
UmVuZGVyaW5nIGZlZWRiYWNrIGxvb3AgZm9ybWVkIGJldHdlZW4gRnJhbWVidWZmZXIgYW5kIGFj
dGl2ZSBUZXh0dXJlLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
ICAgIH0KKwogICAgIC8vIE5vLW9wIGlmIHplcm8gY291bnQKICAgICByZXR1cm4gKGNvdW50ID4g
MCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzKFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCkKK2Jvb2wg
VmFsaWRhdGVEcmF3QXJyYXlzQ29tbW9uKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHBy
aW1jb3VudCkKIHsKICAgICBpZiAoZmlyc3QgPCAwKQogICAgIHsKQEAgLTI5NzMsMjIgKzM3Mjcs
MzUgQEAgYm9vbCBWYWxpZGF0ZURyYXdBcnJheXMoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQs
CiAKICAgICBjb25zdCBTdGF0ZSAmc3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgID0gY29u
dGV4dC0+Z2V0R0xTdGF0ZSgpOwogICAgIGdsOjpUcmFuc2Zvcm1GZWVkYmFjayAqY3VyVHJhbnNm
b3JtRmVlZGJhY2sgPSBzdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKTsKLSAgICBp
ZiAoY3VyVHJhbnNmb3JtRmVlZGJhY2sgJiYgY3VyVHJhbnNmb3JtRmVlZGJhY2stPmlzQWN0aXZl
KCkgJiYgIWN1clRyYW5zZm9ybUZlZWRiYWNrLT5pc1BhdXNlZCgpICYmCi0gICAgICAgIGN1clRy
YW5zZm9ybUZlZWRiYWNrLT5nZXRQcmltaXRpdmVNb2RlKCkgIT0gbW9kZSkKKyAgICBpZiAoY3Vy
VHJhbnNmb3JtRmVlZGJhY2sgJiYgY3VyVHJhbnNmb3JtRmVlZGJhY2stPmlzQWN0aXZlKCkgJiYK
KyAgICAgICAgIWN1clRyYW5zZm9ybUZlZWRiYWNrLT5pc1BhdXNlZCgpICYmIGN1clRyYW5zZm9y
bUZlZWRiYWNrLT5nZXRQcmltaXRpdmVNb2RlKCkgIT0gbW9kZSkKICAgICB7CiAgICAgICAgIC8v
IEl0IGlzIGFuIGludmFsaWQgb3BlcmF0aW9uIHRvIGNhbGwgRHJhd0FycmF5cyBvciBEcmF3QXJy
YXlzSW5zdGFuY2VkIHdpdGggYSBkcmF3IG1vZGUKLSAgICAgICAgLy8gdGhhdCBkb2VzIG5vdCBt
YXRjaCB0aGUgY3VycmVudCB0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0J3MgZHJhdyBtb2RlIChp
ZiB0cmFuc2Zvcm0gZmVlZGJhY2sKKyAgICAgICAgLy8gdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGUg
Y3VycmVudCB0cmFuc2Zvcm0gZmVlZGJhY2sgb2JqZWN0J3MgZHJhdyBtb2RlIChpZiB0cmFuc2Zv
cm0KKyAgICAgICAgLy8gZmVlZGJhY2sKICAgICAgICAgLy8gaXMgYWN0aXZlKSwgKDMuMC4yLCBz
ZWN0aW9uIDIuMTQsIHBnIDg2KQogICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgaWYgKCFWYWxpZGF0ZURyYXdCYXNlKGNvbnRleHQsIG1vZGUsIGNvdW50LCBwcmltY291bnQp
KQorICAgIGlmICghVmFsaWRhdGVEcmF3QmFzZShjb250ZXh0LCBtb2RlLCBjb3VudCkpCiAgICAg
ewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFWYWxpZGF0ZURyYXdB
dHRyaWJzKGNvbnRleHQsIHByaW1jb3VudCwgY291bnQpKQorICAgIC8vIENoZWNrIHRoZSBjb21w
dXRhdGlvbiBvZiBtYXhWZXJ0ZXggZG9lc24ndCBvdmVyZmxvdy4KKyAgICAvLyAtIGZpcnN0IDwg
MCBvciBjb3VudCA8IDAgaGF2ZSBiZWVuIGNoZWNrZWQgYXMgYW4gZXJyb3IgY29uZGl0aW9uCisg
ICAgLy8gLSBjb3VudCA+IDAgaGFzIGJlZW4gY2hlY2tlZCBpbiBWYWxpZGF0ZURyYXdCYXNlIGFz
IGl0IG1ha2VzIHRoZSBjYWxsIGEgbm9vcAorICAgIC8vIEZyb20gdGhpcyB3ZSBrbm93IG1heFZl
cnRleCB3aWxsIGJlIHBvc2l0aXZlLCBhbmQgb25seSBuZWVkIHRvIGNoZWNrIGlmIGl0IG92ZXJm
bG93cyBHTGludC4KKyAgICBBU1NFUlQoY291bnQgPiAwICYmIGZpcnN0ID49IDApOworICAgIGlu
dDY0X3QgbWF4VmVydGV4ID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oZmlyc3QpICsgc3RhdGljX2Nh
c3Q8aW50NjRfdD4oY291bnQpIC0gMTsKKyAgICBpZiAobWF4VmVydGV4ID4gc3RhdGljX2Nhc3Q8
aW50NjRfdD4oc3RkOjpudW1lcmljX2xpbWl0czxHTGludD46Om1heCgpKSkKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiSW50
ZWdlciBvdmVyZmxvdy4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBp
ZiAoIVZhbGlkYXRlRHJhd0F0dHJpYnMoY29udGV4dCwgcHJpbWNvdW50LCBzdGF0aWNfY2FzdDxH
TGludD4obWF4VmVydGV4KSwgY291bnQpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KQEAgLTI5OTYsNyArMzc2MywxMSBAQCBib29sIFZhbGlkYXRlRHJhd0FycmF5cyhWYWxp
ZGF0aW9uQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxp
ZGF0ZURyYXdBcnJheXNJbnN0YW5jZWQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUsIEdM
aW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIHByaW1jb3VudCkKK2Jvb2wgVmFsaWRh
dGVEcmF3QXJyYXlzSW5zdGFuY2VkKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJp
bWNvdW50KQogewogICAgIGlmIChwcmltY291bnQgPCAwKQogICAgIHsKQEAgLTMwMDQsNyArMzc3
NSw3IEBAIGJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkKENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBpZiAoIVZhbGlkYXRlRHJhd0FycmF5cyhjb250ZXh0LCBtb2RlLCBmaXJzdCwg
Y291bnQsIHByaW1jb3VudCkpCisgICAgaWYgKCFWYWxpZGF0ZURyYXdBcnJheXNDb21tb24oY29u
dGV4dCwgbW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KQEAgLTMwMjAsMTEgKzM3OTEsMTMgQEAgc3RhdGljIGJvb2wgVmFs
aWRhdGVEcmF3SW5zdGFuY2VkQU5HTEUoQ29udGV4dCAqY29udGV4dCkKIAogICAgIGdsOjpQcm9n
cmFtICpwcm9ncmFtID0gc3RhdGUuZ2V0UHJvZ3JhbSgpOwogCi0gICAgY29uc3QgVmVydGV4QXJy
YXkgKnZhbyA9IHN0YXRlLmdldFZlcnRleEFycmF5KCk7CisgICAgY29uc3QgYXV0byAmYXR0cmli
cyAgPSBzdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7CisgICAg
Y29uc3QgYXV0byAmYmluZGluZ3MgPSBzdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0ZXhC
aW5kaW5ncygpOwogICAgIGZvciAoc2l6ZV90IGF0dHJpYnV0ZUluZGV4ID0gMDsgYXR0cmlidXRl
SW5kZXggPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGF0dHJpYnV0ZUluZGV4KyspCiAgICAgewotICAg
ICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiA9IHZhby0+Z2V0VmVydGV4QXR0cmli
dXRlKGF0dHJpYnV0ZUluZGV4KTsKLSAgICAgICAgaWYgKHByb2dyYW0tPmlzQXR0cmliTG9jYXRp
b25BY3RpdmUoYXR0cmlidXRlSW5kZXgpICYmIGF0dHJpYi5kaXZpc29yID09IDApCisgICAgICAg
IGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0gYXR0cmlic1thdHRyaWJ1dGVJbmRleF07
CisgICAgICAgIGNvbnN0IFZlcnRleEJpbmRpbmcgJmJpbmRpbmcgID0gYmluZGluZ3NbYXR0cmli
LmJpbmRpbmdJbmRleF07CisgICAgICAgIGlmIChwcm9ncmFtLT5pc0F0dHJpYkxvY2F0aW9uQWN0
aXZlKGF0dHJpYnV0ZUluZGV4KSAmJiBiaW5kaW5nLmRpdmlzb3IgPT0gMCkKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTMwMzYsNyArMzgwOSwxMSBA
QCBzdGF0aWMgYm9vbCBWYWxpZGF0ZURyYXdJbnN0YW5jZWRBTkdMRShDb250ZXh0ICpjb250ZXh0
KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6
ZWkgY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KQorYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbnN0
YW5jZWRBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgcHJpbWNvdW50KQogewogICAgIGlmICghVmFsaWRhdGVEcmF3SW5zdGFuY2VkQU5HTEUo
Y29udGV4dCkpCiAgICAgewpAQCAtMzA0Niw4NyArMzgyMywxNDkgQEAgYm9vbCBWYWxpZGF0ZURy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSwgR0xp
bnQgZmlyc3QKICAgICByZXR1cm4gVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkKGNvbnRleHQs
IG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKIH0KIAotYm9vbCBWYWxpZGF0ZURyYXdF
bGVtZW50cyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRl
eFJhbmdlICppbmRleFJhbmdlT3V0KQorYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0Jhc2UoVmFs
aWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlKQogewogICAgIHN3aXRjaCAodHlw
ZSkKICAgICB7Ci0gICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Ci0gICAgICBjYXNlIEdMX1VO
U0lHTkVEX1NIT1JUOgotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9VTlNJR05FRF9J
TlQ6Ci0gICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAm
JiAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVsZW1lbnRJbmRleFVpbnQpCi0gICAgICAgICAg
ewotICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0pKTsKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAg
ICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAg
ICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuZWxlbWVudEluZGV4VWludCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAogICAgIGNvbnN0IFN0YXRlICZzdGF0ZSA9IGNvbnRleHQtPmdldEdMU3RhdGUo
KTsKIAogICAgIGdsOjpUcmFuc2Zvcm1GZWVkYmFjayAqY3VyVHJhbnNmb3JtRmVlZGJhY2sgPSBz
dGF0ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKTsKLSAgICBpZiAoY3VyVHJhbnNmb3Jt
RmVlZGJhY2sgJiYgY3VyVHJhbnNmb3JtRmVlZGJhY2stPmlzQWN0aXZlKCkgJiYgIWN1clRyYW5z
Zm9ybUZlZWRiYWNrLT5pc1BhdXNlZCgpKQorICAgIGlmIChjdXJUcmFuc2Zvcm1GZWVkYmFjayAm
JiBjdXJUcmFuc2Zvcm1GZWVkYmFjay0+aXNBY3RpdmUoKSAmJgorICAgICAgICAhY3VyVHJhbnNm
b3JtRmVlZGJhY2stPmlzUGF1c2VkKCkpCiAgICAgewotICAgICAgICAvLyBJdCBpcyBhbiBpbnZh
bGlkIG9wZXJhdGlvbiB0byBjYWxsIERyYXdFbGVtZW50cywgRHJhd1JhbmdlRWxlbWVudHMgb3Ig
RHJhd0VsZW1lbnRzSW5zdGFuY2VkCisgICAgICAgIC8vIEl0IGlzIGFuIGludmFsaWQgb3BlcmF0
aW9uIHRvIGNhbGwgRHJhd0VsZW1lbnRzLCBEcmF3UmFuZ2VFbGVtZW50cyBvcgorICAgICAgICAv
LyBEcmF3RWxlbWVudHNJbnN0YW5jZWQKICAgICAgICAgLy8gd2hpbGUgdHJhbnNmb3JtIGZlZWRi
YWNrIGlzIGFjdGl2ZSwgKDMuMC4yLCBzZWN0aW9uIDIuMTQsIHBnIDg2KQogICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRh
dGVEcmF3RWxlbWVudHMoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHByaW1jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgSW5kZXhSYW5nZSAqaW5kZXhSYW5nZU91dCkKK3sKKyAgICBpZiAoIVZhbGlkYXRlRHJhd0Vs
ZW1lbnRzQmFzZShjb250ZXh0LCB0eXBlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Y29uc3QgU3RhdGUgJnN0YXRlID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpOworCiAgICAgLy8gQ2hl
Y2sgZm9yIG1hcHBlZCBidWZmZXJzCiAgICAgaWYgKHN0YXRlLmhhc01hcHBlZEJ1ZmZlcihHTF9F
TEVNRU5UX0FSUkFZX0JVRkZFUikpCiAgICAgewotICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkluZGV4IGJ1ZmZlciBpcyBtYXBwZWQu
IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgY29uc3QgZ2w6OlZlcnRl
eEFycmF5ICp2YW8gPSBzdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpOworICAgIGNvbnN0IGdsOjpWZXJ0
ZXhBcnJheSAqdmFvICAgICA9IHN0YXRlLmdldFZlcnRleEFycmF5KCk7CiAgICAgZ2w6OkJ1ZmZl
ciAqZWxlbWVudEFycmF5QnVmZmVyID0gdmFvLT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKS5nZXQo
KTsKLSAgICBpZiAoIWluZGljZXMgJiYgIWVsZW1lbnRBcnJheUJ1ZmZlcikKLSAgICB7Ci0gICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKLSAgICBpZiAoZWxlbWVudEFycmF5QnVmZmVy
KQotICAgIHsKLSAgICAgICAgY29uc3QgZ2w6OlR5cGUgJnR5cGVJbmZvID0gZ2w6OkdldFR5cGVJ
bmZvKHR5cGUpOworICAgIEdMdWludCB0eXBlQnl0ZXMgPSBnbDo6R2V0VHlwZUluZm8odHlwZSku
Ynl0ZXM7CiAKLSAgICAgICAgR0xpbnQ2NCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0PEdMaW50
NjQ+KGluZGljZXMpOwotICAgICAgICBHTGludDY0IGJ5dGVDb3VudCA9IHN0YXRpY19jYXN0PEdM
aW50NjQ+KHR5cGVJbmZvLmJ5dGVzKSAqIHN0YXRpY19jYXN0PEdMaW50NjQ+KGNvdW50KStvZmZz
ZXQ7CisgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS53ZWJnbENvbXBhdGliaWxpdHkp
CisgICAgeworICAgICAgICBBU1NFUlQoaXNQb3cyKHR5cGVCeXRlcykgJiYgdHlwZUJ5dGVzID4g
MCk7CisgICAgICAgIGlmICgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGluZGljZXMpICYg
c3RhdGljX2Nhc3Q8dWludHB0cl90Pih0eXBlQnl0ZXMgLSAxKSkgIT0gMCkKKyAgICAgICAgewor
ICAgICAgICAgICAgLy8gW1dlYkdMIDEuMF0gU2VjdGlvbiA2LjQgQnVmZmVyIE9mZnNldCBhbmQg
U3RyaWRlIFJlcXVpcmVtZW50cworICAgICAgICAgICAgLy8gVGhlIG9mZnNldCBhcmd1bWVudHMg
dG8gZHJhd0VsZW1lbnRzIGFuZCBbLi4uXSwgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBzaXpl
IG9mIHRoZQorICAgICAgICAgICAgLy8gZGF0YSB0eXBlIHBhc3NlZCB0byB0aGUgY2FsbCwgb3Ig
YW4gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IgaXMgZ2VuZXJhdGVkLgorICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5kaWNlcyBtdXN0IGJlIGEgbXVsdGlwbGUg
b2YgdGhlIGVsZW1lbnQgdHlwZSBzaXplLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQogCi0gICAgICAgIC8vIGNoZWNrIGZvciBpbnRlZ2VyIG92ZXJmbG93cwotICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50Pihjb3VudCkgPiAoc3RkOjpudW1lcmljX2xpbWl0
czxHTHVpbnQ+OjptYXgoKSAvIHR5cGVJbmZvLmJ5dGVzKSB8fAotICAgICAgICAgICAgYnl0ZUNv
dW50ID4gc3RhdGljX2Nhc3Q8R0xpbnQ2ND4oc3RkOjpudW1lcmljX2xpbWl0czxHTHVpbnQ+Ojpt
YXgoKSkpCisgICAgICAgIC8vIFtXZWJHTCAxLjBdIFNlY3Rpb24gNi40IEJ1ZmZlciBPZmZzZXQg
YW5kIFN0cmlkZSBSZXF1aXJlbWVudHMKKyAgICAgICAgLy8gSW4gYWRkaXRpb24gdGhlIG9mZnNl
dCBhcmd1bWVudCB0byBkcmF3RWxlbWVudHMgbXVzdCBiZSBub24tbmVnYXRpdmUgb3IgYW4gSU5W
QUxJRF9WQUxVRQorICAgICAgICAvLyBlcnJvciBpcyBnZW5lcmF0ZWQuCisgICAgICAgIGlmIChy
ZWludGVycHJldF9jYXN0PGludHB0cl90PihpbmRpY2VzKSA8IDApCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX09VVF9PRl9NRU1PUlkpKTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJP
ZmZzZXQgPCAwLiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorICAg
IH0KIAotICAgICAgICAvLyBDaGVjayBmb3IgcmVhZGluZyBwYXN0IHRoZSBlbmQgb2YgdGhlIGJv
dW5kIGJ1ZmZlciBvYmplY3QKLSAgICAgICAgaWYgKGJ5dGVDb3VudCA+IGVsZW1lbnRBcnJheUJ1
ZmZlci0+Z2V0U2l6ZSgpKQorICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkud2ViZ2xD
b21wYXRpYmlsaXR5IHx8CisgICAgICAgICFjb250ZXh0LT5nZXRHTFN0YXRlKCkuYXJlQ2xpZW50
QXJyYXlzRW5hYmxlZCgpKQorICAgIHsKKyAgICAgICAgaWYgKCFlbGVtZW50QXJyYXlCdWZmZXIg
JiYgY291bnQgPiAwKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgLy8gW1dlYkdMIDEu
MF0gU2VjdGlvbiA2LjIgTm8gQ2xpZW50IFNpZGUgQXJyYXlzCisgICAgICAgICAgICAvLyBJZiBk
cmF3RWxlbWVudHMgaXMgY2FsbGVkIHdpdGggYSBjb3VudCBncmVhdGVyIHRoYW4gemVybywgYW5k
IG5vIFdlYkdMQnVmZmVyIGlzIGJvdW5kCisgICAgICAgICAgICAvLyB0byB0aGUgRUxFTUVOVF9B
UlJBWV9CVUZGRVIgYmluZGluZyBwb2ludCwgYW4gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IgaXMg
Z2VuZXJhdGVkLgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
VGhlcmUgaXMgbm8gZWxlbWVudCBhcnJheSBidWZmZXIgYm91bmQgYW5kIGNvdW50ID4gMC4iKSk7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9Ci0gICAgZWxzZSBp
ZiAoIWluZGljZXMpCisKKyAgICBpZiAoY291bnQgPiAwKQogICAgIHsKLSAgICAgICAgLy8gQ2F0
Y2ggdGhpcyBwcm9ncmFtbWluZyBlcnJvciBoZXJlCi0gICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgaWYgKGVsZW1lbnRBcnJheUJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAg
Ly8gVGhlIG1heCBwb3NzaWJsZSB0eXBlIHNpemUgaXMgOCBhbmQgY291bnQgaXMgb24gMzIgYml0
cyBzbyBkb2luZyB0aGUgbXVsdGlwbGljYXRpb24KKyAgICAgICAgICAgIC8vIGluIGEgNjQgYml0
IGludGVnZXIgaXMgc2FmZS4gQWxzbyB3ZSBhcmUgZ3VhcmFudGVlZCB0aGF0IGhlcmUgY291bnQg
PiAwLgorICAgICAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8aW50LCBHTHNpemVp
Pjo6dmFsdWUsICJHTHNpemVpIGlzbid0IHRoZSBleHBlY3RlZCB0eXBlIik7CisgICAgICAgICAg
ICBjb25zdGV4cHIgdWludDY0X3Qga01heFR5cGVTaXplID0gODsKKyAgICAgICAgICAgIGNvbnN0
ZXhwciB1aW50NjRfdCBrSW50TWF4ICAgICAgPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1h
eCgpOworICAgICAgICAgICAgY29uc3RleHByIHVpbnQ2NF90IGtVaW50NjRNYXggICA9IHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDY0X3Q+OjptYXgoKTsKKyAgICAgICAgICAgIHN0YXRpY19hc3Nl
cnQoa0ludE1heCA8IGtVaW50NjRNYXggLyBrTWF4VHlwZVNpemUsICIiKTsKKworICAgICAgICAg
ICAgdWludDY0X3QgdHlwZVNpemUgICAgID0gdHlwZUJ5dGVzOworICAgICAgICAgICAgdWludDY0
X3QgZWxlbWVudENvdW50ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGNvdW50KTsKKyAgICAgICAg
ICAgIEFTU0VSVChlbGVtZW50Q291bnQgPiAwICYmIHR5cGVTaXplIDw9IGtNYXhUeXBlU2l6ZSk7
CisKKyAgICAgICAgICAgIC8vIERvaW5nIHRoZSBtdWx0aXBsaWNhdGlvbiBoZXJlIGlzIG92ZXJm
bG93LXNhZmUKKyAgICAgICAgICAgIHVpbnQ2NF90IGVsZW1lbnREYXRhU2l6ZU5vT2Zmc2V0ID0g
dHlwZVNpemUgKiBlbGVtZW50Q291bnQ7CisKKyAgICAgICAgICAgIC8vIFRoZSBvZmZzZXQgY2Fu
IGJlIGFueSB2YWx1ZSwgY2hlY2sgZm9yIG92ZXJmbG93cworICAgICAgICAgICAgdWludDY0X3Qg
b2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihpbmRpY2VzKSk7CisgICAgICAgICAgICBpZiAoZWxlbWVudERhdGFTaXplTm9PZmZzZXQgPiBr
VWludDY0TWF4IC0gb2Zmc2V0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiSW50ZWdlciBvdmVy
Zmxvdy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB1aW50NjRfdCBlbGVtZW50RGF0YVNpemVXaXRoT2Zmc2V0ID0gZWxlbWVu
dERhdGFTaXplTm9PZmZzZXQgKyBvZmZzZXQ7CisgICAgICAgICAgICBpZiAoZWxlbWVudERhdGFT
aXplV2l0aE9mZnNldCA+IHN0YXRpY19jYXN0PHVpbnQ2NF90PihlbGVtZW50QXJyYXlCdWZmZXIt
PmdldFNpemUoKSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiSW5kZXggYnVmZmVyIGlzIG5vdCBiaWcgZW5vdWdoIGZvciB0aGUgZHJhdy4iKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGVsc2UgaWYgKCFpbmRpY2VzKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGlzIGlz
IGFuIGFwcGxpY2F0aW9uIGVycm9yIHRoYXQgd291bGQgbm9ybWFsbHkgcmVzdWx0IGluIGEgY3Jh
c2gsCisgICAgICAgICAgICAvLyBidXQgd2UgY2F0Y2ggaXQgYW5kIHJldHVybiBhbiBlcnJvcgor
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJObyBlbGVtZW50IGFycmF5IGJ1ZmZlciBhbmQgbm8gcG9p
bnRlci4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAK
LSAgICBpZiAoIVZhbGlkYXRlRHJhd0Jhc2UoY29udGV4dCwgbW9kZSwgY291bnQsIHByaW1jb3Vu
dCkpCisgICAgaWYgKCFWYWxpZGF0ZURyYXdCYXNlKGNvbnRleHQsIG1vZGUsIGNvdW50KSkKICAg
ICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0zMTYwLDcgKzM5OTksOCBAQCBi
b29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFWYWxpZGF0ZURyYXdBdHRyaWJz
KGNvbnRleHQsIHByaW1jb3VudCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGluZGV4UmFuZ2VPdXQtPnZl
cnRleENvdW50KCkpKSkKKyAgICBpZiAoIVZhbGlkYXRlRHJhd0F0dHJpYnMoY29udGV4dCwgcHJp
bWNvdW50LCBzdGF0aWNfY2FzdDxHTGludD4oaW5kZXhSYW5nZU91dC0+ZW5kKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xpbnQ+KGluZGV4UmFuZ2VPdXQtPnZl
cnRleENvdW50KCkpKSkKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0z
MjA1LDExICs0MDQ1LDE1IEBAIGJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdM
RShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
cmV0dXJuIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkKGNvbnRleHQsIG1vZGUsIGNvdW50
LCB0eXBlLCBpbmRpY2VzLCBwcmltY291bnQsIGluZGV4UmFuZ2VPdXQpOworICAgIHJldHVybiBW
YWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZChjb250ZXh0LCBtb2RlLCBjb3VudCwgdHlwZSwg
aW5kaWNlcywgcHJpbWNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmRleFJhbmdlT3V0KTsKIH0KIAotYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVy
ZUJhc2UoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZSwgR0xp
bnQgbGV2ZWwpCitib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlQmFzZShDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCkKIHsKICAgICBp
ZiAoIVZhbGlkRnJhbWVidWZmZXJUYXJnZXQodGFyZ2V0KSkKICAgICB7CkBAIC0zMjUyLDEwICs0
MDk2LDE1IEBAIGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVCYXNlKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUyRChDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwpCiti
b29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlMkQoQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0ZXh0YXJnZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgbGV2ZWwpCiB7Ci0gICAgLy8gQXR0YWNobWVudHMgYXJlIHJlcXVpcmVk
IHRvIGJlIGJvdW5kIHRvIGxldmVsIDAgd2l0aG91dCBFUzMgb3IgdGhlIEdMX09FU19mYm9fcmVu
ZGVyX21pcG1hcCBleHRlbnNpb24KKyAgICAvLyBBdHRhY2htZW50cyBhcmUgcmVxdWlyZWQgdG8g
YmUgYm91bmQgdG8gbGV2ZWwgMCB3aXRob3V0IEVTMyBvciB0aGUgR0xfT0VTX2Zib19yZW5kZXJf
bWlwbWFwCisgICAgLy8gZXh0ZW5zaW9uCiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9y
VmVyc2lvbigpIDwgMyAmJiAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmZib1JlbmRlck1pcG1h
cCAmJgogICAgICAgICBsZXZlbCAhPSAwKQogICAgIHsKQEAgLTMyNzcsNyArNDEyNiw3IEBAIGJv
b2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUyRChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dGFyZ2V0LCBHTGVudW0gYXR0YWNoCiAKICAgICAgICAgc3dpdGNoICh0ZXh0YXJnZXQpCiAgICAg
ICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6CisgICAgICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfMkQ6CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKGxldmVsID4g
Z2w6OmxvZzIoY2Fwcy5tYXgyRFRleHR1cmVTaXplKSkKICAgICAgICAgICAgICAgICB7CkBAIC0z
Mjg2LDE4ICs0MTM1LDE5IEBAIGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUyRChDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNoCiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGlmICh0ZXgtPmdldFRhcmdldCgpICE9IEdMX1RFWFRVUkVf
MkQpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRleHRhcmdldCBtdXN0
IG1hdGNoIHRoZSB0ZXh0dXJlIHRhcmdldCB0eXBlLiIpKTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZF
X1g6Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6Ci0gICAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6Ci0gICAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6Ci0gICAgICAgICAgY2FzZSBHTF9URVhU
VVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6Ci0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1o6CisgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9T
SVRJVkVfWDoKKyAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9Y
OgorICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6CisgICAg
ICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWToKKyAgICAgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOgorICAgICAgICAgICAgY2FzZSBH
TF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1o6CiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgaWYgKGxldmVsID4gZ2w6OmxvZzIoY2Fwcy5tYXhDdWJlTWFwVGV4dHVyZVNpemUpKQog
ICAgICAgICAgICAgICAgIHsKQEAgLTMzMDYsMTUgKzQxNTYsNDAgQEAgYm9vbCBWYWxpZGF0ZUZy
YW1lYnVmZmVyVGV4dHVyZTJEKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51
bSBhdHRhY2gKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHRleC0+Z2V0
VGFyZ2V0KCkgIT0gR0xfVEVYVFVSRV9DVUJFX01BUCkKICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiVGV4dGFyZ2V0IG11c3QgbWF0Y2ggdGhlIHRleHR1cmUgdGFyZ2V0IHR5
cGUuIikpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV8yRF9NVUxUSVNBTVBMRToKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJUZXh0dXJlIHRhcmdldCByZXF1aXJlcyBhdCBsZWFzdCBPcGVuR0wgRVMgMy4xLiIp
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgICAgIGlmIChsZXZlbCAhPSAwKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAg
ICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiTGV2ZWwgbXVzdCBiZSAwIGZvciBURVhU
VVJFXzJEX01VTFRJU0FNUExFLiIpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGV4LT5nZXRUYXJnZXQo
KSAhPSBHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJU
ZXh0YXJnZXQgbXVzdCBtYXRjaCB0aGUgdGV4dHVyZSB0YXJnZXQgdHlwZS4iKSk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBG
b3JtYXQgJmZvcm1hdCA9IHRleC0+Z2V0Rm9ybWF0KHRleHRhcmdldCwgbGV2ZWwpOwpAQCAtMzM1
NywxMiArNDIzMiwxMiBAQCBib29sIFZhbGlkYXRlR2V0VW5pZm9ybUJhc2UoQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uKQogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlR2V0VW5pZm9ybWZ2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBw
cm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCogcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdl
dFVuaWZvcm1mdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRp
b24sIEdMZmxvYXQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVHZXRVbmlmb3JtQmFz
ZShjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRVbmlm
b3JtaXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBH
TGludCogcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1pdihDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50ICpwYXJhbXMpCiB7CiAgICAg
cmV0dXJuIFZhbGlkYXRlR2V0VW5pZm9ybUJhc2UoY29udGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24p
OwogfQpAQCAtMzM5NCw3ICs0MjY5LDcgQEAgc3RhdGljIGJvb2wgVmFsaWRhdGVTaXplZEdldFVu
aWZvcm0oQ29udGV4dCAqY29udGV4dCwKIAogICAgIC8vIHNpemVkIHF1ZXJpZXMgLS0gZW5zdXJl
IHRoZSBwcm92aWRlZCBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoCiAgICAgY29uc3QgTGlua2VkVW5p
Zm9ybSAmdW5pZm9ybSA9IHByb2dyYW1PYmplY3QtPmdldFVuaWZvcm1CeUxvY2F0aW9uKGxvY2F0
aW9uKTsKLSAgICBzaXplX3QgcmVxdWlyZWRCeXRlcyA9IFZhcmlhYmxlRXh0ZXJuYWxTaXplKHVu
aWZvcm0udHlwZSk7CisgICAgc2l6ZV90IHJlcXVpcmVkQnl0ZXMgICAgICAgICA9IFZhcmlhYmxl
RXh0ZXJuYWxTaXplKHVuaWZvcm0udHlwZSk7CiAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4o
YnVmU2l6ZSkgPCByZXF1aXJlZEJ5dGVzKQogICAgIHsKICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoCkBAIC0zNDA0LDE5ICs0Mjc5LDI2IEBAIHN0YXRpYyBib29sIFZhbGlkYXRlU2l6ZWRH
ZXRVbmlmb3JtKENvbnRleHQgKmNvbnRleHQsCiAKICAgICBpZiAobGVuZ3RoKQogICAgIHsKLSAg
ICAgICAgLy8gQ2FzdCBpcyBzYWZlIGJlY2F1c2Ugb2YgY29tcGFyaXNvbiB0byBidWZTaXplLgot
ICAgICAgICAqbGVuZ3RoID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4ocmVxdWlyZWRCeXRlcyk7Cisg
ICAgICAgICpsZW5ndGggPSBWYXJpYWJsZUNvbXBvbmVudENvdW50KHVuaWZvcm0udHlwZSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2
RVhUKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBidWZTaXplLCBHTGZsb2F0KiBwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0blVuaWZvcm1m
dkVYVChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKIHsKICAgICByZXR1cm4g
VmFsaWRhdGVTaXplZEdldFVuaWZvcm0oY29udGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNp
emUsIG51bGxwdHIpOwogfQogCi1ib29sIFZhbGlkYXRlR2V0blVuaWZvcm1pdkVYVChDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6
ZSwgR0xpbnQqIHBhcmFtcykKK2Jvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWl2RVhUKENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gVmFsaWRhdGVTaXplZEdl
dFVuaWZvcm0oY29udGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIG51bGxwdHIpOwog
fQpAQCAtMzQ3Niw4ICs0MzU4LDExIEBAIGJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtdWl2Um9idXN0
QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICByZXR1cm4gVmFsaWRhdGVTaXplZEdldFVuaWZv
cm0oY29udGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIGxlbmd0aCk7CiB9CiAKLWJv
b2wgVmFsaWRhdGVEaXNjYXJkRnJhbWVidWZmZXJCYXNlKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0YXJnZXQsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzLCBib29sIGRlZmF1bHRGcmFt
ZWJ1ZmZlcikKK2Jvb2wgVmFsaWRhdGVEaXNjYXJkRnJhbWVidWZmZXJCYXNlKENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1BdHRhY2ht
ZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAq
YXR0YWNobWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRl
ZmF1bHRGcmFtZWJ1ZmZlcikKIHsKICAgICBpZiAobnVtQXR0YWNobWVudHMgPCAwKQogICAgIHsK
QEAgLTM1MDgsMzEgKzQzOTMsMzEgQEAgYm9vbCBWYWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckJh
c2UoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW0KICAgICAgICAg
ewogICAgICAgICAgICAgc3dpdGNoIChhdHRhY2htZW50c1tpXSkKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9BVFRBQ0hNRU5UOgotICAgICAgICAgICAgICBjYXNl
IEdMX1NURU5DSUxfQVRUQUNITUVOVDoKLSAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVO
Q0lMX0FUVEFDSE1FTlQ6Ci0gICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRGcmFtZWJ1ZmZlcikK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYXR0YWNobWVudCB3aGVuIHRoZSBk
ZWZhdWx0IGZyYW1lYnVmZmVyIGlzIGJvdW5kIikpOwotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICBjYXNlIEdMX0NPTE9SOgotICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIOgot
ICAgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUw6Ci0gICAgICAgICAgICAgICAgaWYgKCFkZWZh
dWx0RnJhbWVidWZmZXIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lO
VkFMSURfRU5VTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIGF0dGFj
aG1lbnQgd2hlbiB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBpcyBub3QgYm91bmQiKSk7CisgICAg
ICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgICAgIGNh
c2UgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgICAgIGNhc2UgR0xfREVQVEhf
U1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdEZyYW1l
YnVmZmVyKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvcihH
TF9JTlZBTElEX0VOVU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFs
aWQgYXR0YWNobWVudCB3aGVuIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGlzIGJvdW5kIikpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgR0xf
Q09MT1I6CisgICAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSDoKKyAgICAgICAgICAgICAgICBj
YXNlIEdMX1NURU5DSUw6CisgICAgICAgICAgICAgICAgICAgIGlmICghZGVmYXVsdEZyYW1lYnVm
ZmVyKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9J
TlZBTElEX0VOVU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQg
YXR0YWNobWVudCB3aGVuIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGlzIG5vdCBib3VuZCIpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0sICJJbnZhbGlkIGF0dGFjaG1lbnQiKSk7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGF0dGFjaG1lbnQiKSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQpAQCAtMzY5NCw2ICs0NTc5LDEzIEBAIGJvb2wgVmFsaWRhdGVMaW5rUHJvZ3JhbShDb250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInRyYW5zZm9ybSBmZWVkYmFjayBvYmplY3QuIikpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQorCisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJvZ3Jh
bShjb250ZXh0LCBwcm9ncmFtKTsKKyAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM3
NDgsNiArNDY0MCwxMiBAQCBib29sIFZhbGlkYXRlR2V0UHJvZ3JhbUJpbmFyeUJhc2UoQ29udGV4
dCAqY29udGV4dCwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGlmIChjb250
ZXh0LT5nZXRDYXBzKCkucHJvZ3JhbUJpbmFyeUZvcm1hdHMuZW1wdHkoKSkKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTm8g
cHJvZ3JhbSBiaW5hcnkgZm9ybWF0cyBzdXBwb3J0ZWQuIikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM5MzYsNyArNDgzNCw3IEBA
IGJvb2wgVmFsaWRhdGVHZXRCdWZmZXJQb2ludGVydkJhc2UoQ29udGV4dCAqY29udGV4dCwKICAg
ICB7CiAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAogICAgICAgICAgICAgRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sCi0gICAgICAgICAgICAgICAgICAiQ29udGV4dCBkb2VzIG5vdCBz
dXBwb3J0IE9wZW5HTCBFUyAzLjAgb3IgR0xfT0VTX21hcF9idWZmZXIgaXMgbm90IGVuYWJsZWQu
IikpOworICAgICAgICAgICAgICAgICAgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBPcGVuR0wg
RVMgMy4wIG9yIEdMX09FU19tYXBidWZmZXIgaXMgbm90IGVuYWJsZWQuIikpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC00MTgyLDEyICs1MDgwLDExIEBAIGJvb2wgVmFsaWRh
dGVHZW5lcmF0ZU1pcG1hcChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KQogICAgIH0K
IAogICAgIC8vIE5vbi1wb3dlciBvZiAyIEVTMiBjaGVjawotICAgIGlmICghY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnRleHR1cmVOUE9UICYmCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZl
cnNpb24oKSA8IFZlcnNpb24oMywgMCkgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0
dXJlTlBPVCAmJgogICAgICAgICAoIWlzUG93MihzdGF0aWNfY2FzdDxpbnQ+KHRleHR1cmUtPmdl
dFdpZHRoKGJhc2VUYXJnZXQsIDApKSkgfHwKICAgICAgICAgICFpc1BvdzIoc3RhdGljX2Nhc3Q8
aW50Pih0ZXh0dXJlLT5nZXRIZWlnaHQoYmFzZVRhcmdldCwgMCkpKSkpCiAgICAgewotICAgICAg
ICBBU1NFUlQoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPD0gMiAmJgotICAgICAg
ICAgICAgICAgKHRhcmdldCA9PSBHTF9URVhUVVJFXzJEIHx8IHRhcmdldCA9PSBHTF9URVhUVVJF
X0NVQkVfTUFQKSk7CisgICAgICAgIEFTU0VSVCh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCB8fCB0
YXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCk7CiAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CkBAIC00MjY4LDcgKzUxNjUsNyBAQCBib29sIFZhbGlkYXRlRW5hYmxlKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBjYXApCiAKICAgICAgICAgLy8gV2UgYWxzbyBvdXRwdXQgYW4gZXJy
b3IgbWVzc2FnZSB0byB0aGUgZGVidWdnZXIgd2luZG93IGlmIHRyYWNpbmcgaXMgYWN0aXZlLCBz
byB0aGF0CiAgICAgICAgIC8vIGRldmVsb3BlcnMgY2FuIHNlZSB0aGUgZXJyb3IgbWVzc2FnZS4K
LSAgICAgICAgRVJSKCIlcyIsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIEVSUigpIDw8IGVycm9y
TWVzc2FnZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDY5Myw2ICs1NTkw
LDE0IEBAIGJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtaXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xzaXplCiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKIAorICAgICAgICBjYXNlIEdMX1BST0dSQU1fU0VQQVJBQkxFOgorICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IFZlcnNpb24oMywgMSkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNLCAiUXVlcnlpbmcgcmVxdWlyZXMgYXQgbGVhc3QgRVMgMy4xLiIpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiVW5rbm93biBwYXJhbWV0ZXIgbmFtZS4iKSk7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MjI5LDQgKzYxMzQsMTIxIEBAIGJvb2wgVmFs
aWRhdGVHZXRJbnRlcm5hbEZvcm1hdGl2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBWYWxpZGF0ZVZlcnRleEZvcm1hdEJhc2UoVmFsaWRh
dGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgYXR0cmliSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gcHVyZUludGVnZXIpCit7CisgICAgY29uc3Qg
Q2FwcyAmY2FwcyA9IGNvbnRleHQtPmdldENhcHMoKTsKKyAgICBpZiAoYXR0cmliSW5kZXggPj0g
Y2Fwcy5tYXhWZXJ0ZXhBdHRyaWJ1dGVzKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiYXR0cmliaW5kZXgg
bXVzdCBiZSBzbWFsbGVyIHRoYW4gTUFYX1ZFUlRFWF9BVFRSSUJTLiIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChzaXplIDwgMSB8fCBzaXplID4gNCkKKyAgICB7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJz
aXplIG11c3QgYmUgYmV0d2VlbiBvbmUgYW5kIGZvdXIuIikpOworICAgIH0KKworICAgIHN3aXRj
aCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfQllURToKKyAgICAgICAgY2FzZSBHTF9V
TlNJR05FRF9CWVRFOgorICAgICAgICBjYXNlIEdMX1NIT1JUOgorICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9JTlQ6
CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAgICAgaWYgKGNvbnRleHQt
PmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xf
SU5WQUxJRF9FTlVNLCAiVmVydGV4IHR5cGUgbm90IHN1cHBvcnRlZCBiZWZvcmUgT3BlbkdMIEVT
IDMuMC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9GSVhFRDoKKyAgICAgICAgY2Fz
ZSBHTF9GTE9BVDoKKyAgICAgICAgICAgIGlmIChwdXJlSW50ZWdlcikKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0sICJUeXBlIGlzIG5vdCBpbnRlZ2VyLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdM
X0hBTEZfRkxPQVQ6CisgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCkgPCAzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKAorICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX0VOVU0sICJWZXJ0
ZXggdHlwZSBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPcGVuR0wgRVMgMy4wLiIpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocHVy
ZUludGVnZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiVHlwZSBpcyBub3QgaW50ZWdlci4iKSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9JTlRfMl8xMF8xMF8xMF9SRVY6CisgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWOgorICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgRXJyb3Io
R0xfSU5WQUxJRF9FTlVNLCAiVmVydGV4IHR5cGUgbm90IHN1cHBvcnRlZCBiZWZvcmUgT3BlbkdM
IEVTIDMuMC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKHB1cmVJbnRlZ2VyKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlR5cGUg
aXMgbm90IGludGVnZXIuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzaXplICE9IDQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlR5cGUgaXMg
SU5UXzJfMTBfMTBfMTBfUkVWIG9yICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWIGFuZCBzaXplIGlzIG5vdCA0
LiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCB2ZXJ0ZXggdHlwZS4i
KSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKKy8vIFBlcmZvcm0gdmFsaWRhdGlvbiBmcm9tIFdlYkdMIDIgc2VjdGlvbiA1LjEwICJJ
bnZhbGlkIENsZWFycyI6CisvLyBJbiB0aGUgV2ViR0wgMiBBUEksIHRyeWluZyB0byBwZXJmb3Jt
IGEgY2xlYXIgd2hlbiB0aGVyZSBpcyBhIG1pc21hdGNoIGJldHdlZW4gdGhlIHR5cGUgb2YgdGhl
CisvLyBzcGVjaWZpZWQgY2xlYXIgdmFsdWUgYW5kIHRoZSB0eXBlIG9mIGEgYnVmZmVyIHRoYXQg
aXMgYmVpbmcgY2xlYXJlZCBnZW5lcmF0ZXMgYW4KKy8vIElOVkFMSURfT1BFUkFUSU9OIGVycm9y
IGluc3RlYWQgb2YgcHJvZHVjaW5nIHVuZGVmaW5lZCByZXN1bHRzCitib29sIFZhbGlkYXRlV2Vi
R0xGcmFtZWJ1ZmZlckF0dGFjaG1lbnRDbGVhclR5cGUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgZHJhd2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGVudW0gKnZhbGlkQ29tcG9uZW50VHlwZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHZhbGlkQ29tcG9uZW50
VHlwZUNvdW50KQoreworICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNobWVu
dCA9CisgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXREcmF3RnJhbWVidWZmZXIoKS0+
Z2V0RHJhd0J1ZmZlcihkcmF3YnVmZmVyKTsKKyAgICBpZiAoYXR0YWNobWVudCkKKyAgICB7Cisg
ICAgICAgIEdMZW51bSBjb21wb25lbnRUeXBlID0gYXR0YWNobWVudC0+Z2V0Rm9ybWF0KCkuaW5m
by0+Y29tcG9uZW50VHlwZTsKKyAgICAgICAgY29uc3QgR0xlbnVtICplbmQgICAgPSB2YWxpZENv
bXBvbmVudFR5cGVzICsgdmFsaWRDb21wb25lbnRUeXBlQ291bnQ7CisgICAgICAgIGlmIChzdGQ6
OmZpbmQodmFsaWRDb21wb25lbnRUeXBlcywgZW5kLCBjb21wb25lbnRUeXBlKSA9PSBlbmQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAg
ICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICJO
byBkZWZpbmVkIGNvbnZlcnNpb24gYmV0d2VlbiBjbGVhciB2YWx1ZSBhbmQgYXR0YWNobWVudCBm
b3JtYXQuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBnbApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5oCmluZGV4IDA2
ZGEzNzY5MGZjYmJjNDcyMjM4MWUwMDEwZmJmN2RlMTY2NGIzMDIuLjUzMTUzMTlhY2U4MWYwOGZj
OGU2MmY3YWZjOWQzZDU1NTMyM2M4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmgKQEAgLTM1LDExICszNSwxMiBAQCBib29s
IFZhbGlkVGV4dHVyZTNEVGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBH
TGVudW0gdGFyZ2V0KTsKIGJvb2wgVmFsaWRUZXh0dXJlRXh0ZXJuYWxUYXJnZXQoY29uc3QgVmFs
aWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpOwogYm9vbCBWYWxpZFRleHR1
cmUyRERlc3RpbmF0aW9uVGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBH
TGVudW0gdGFyZ2V0KTsKIGJvb2wgVmFsaWRUZXh0dXJlM0REZXN0aW5hdGlvblRhcmdldChjb25z
dCBWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCk7Citib29sIFZhbGlk
VGV4TGV2ZWxEZXN0aW5hdGlvblRhcmdldChjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHRhcmdldCk7CiBib29sIFZhbGlkRnJhbWVidWZmZXJUYXJnZXQoR0xlbnVtIHRh
cmdldCk7CiBib29sIFZhbGlkQnVmZmVyVGFyZ2V0KGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpj
b250ZXh0LCBHTGVudW0gdGFyZ2V0KTsKIGJvb2wgVmFsaWRCdWZmZXJQYXJhbWV0ZXIoY29uc3Qg
VmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xzaXplaSAqbnVtUGFy
YW1zKTsKIGJvb2wgVmFsaWRNaXBMZXZlbChjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpOwotYm9vbCBWYWxpZEltYWdlU2l6ZVBhcmFt
ZXRlcnMoY29uc3QgQ29udGV4dCAqY29udGV4dCwKK2Jvb2wgVmFsaWRJbWFnZVNpemVQYXJhbWV0
ZXJzKGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0
aCwKQEAgLTQ4LDYgKzQ5LDggQEAgYm9vbCBWYWxpZEltYWdlU2l6ZVBhcmFtZXRlcnMoY29uc3Qg
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNT
dWJJbWFnZSk7CiBib29sIFZhbGlkQ29tcHJlc3NlZEltYWdlU2l6ZShjb25zdCBWYWxpZGF0aW9u
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBp
bnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZz
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KTsKIGJvb2wgVmFsaWRJbWFnZURhdGFTaXplKFZh
bGlkYXRpb25Db250ZXh0ICpjb250ZXh0LApAQCAtNjIsNiArNjUsMTMgQEAgYm9vbCBWYWxpZElt
YWdlRGF0YVNpemUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAKIGJvb2wgVmFsaWRRdWVy
eVR5cGUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHF1ZXJ5VHlwZSk7CiAKK2Jvb2wg
VmFsaWRhdGVXZWJHTFZlcnRleEF0dHJpYlBvaW50ZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXpl
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcHRy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHB1cmVJbnRlZ2Vy
KTsKKwogLy8gUmV0dXJucyB2YWxpZCBwcm9ncmFtIGlmIGlkIGlzIGEgdmFsaWQgcHJvZ3JhbSBu
YW1lCiAvLyBFcnJvcnMgSU5WQUxJRF9PUEVSQVRJT04gaWYgdmFsaWQgc2hhZGVyIGlzIGdpdmVu
IGFuZCByZXR1cm5zIE5VTEwKIC8vIEVycm9ycyBJTlZBTElEX1ZBTFVFIG90aGVyd2lzZSBhbmQg
cmV0dXJucyBOVUxMCkBAIC03MywxMyArODMsMTcgQEAgUHJvZ3JhbSAqR2V0VmFsaWRQcm9ncmFt
KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQpOwogU2hhZGVyICpHZXRWYWxp
ZFNoYWRlcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkKTsKIAogYm9vbCBW
YWxpZGF0ZUF0dGFjaG1lbnRUYXJnZXQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGF0dGFjaG1l
bnQpOwotYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1h
dCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1
ZmZlclN0b3JhZ2VQYXJhbWV0ZXJzQU5HTEUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdl
dCwgR0xzaXplaSBzYW1wbGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCk7Ci0KLWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlclBhcmFtZXRl
cnMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSByZW5k
ZXJidWZmZXJ0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpOworYm9vbCBWYWxpZGF0ZVJlbmRl
cmJ1ZmZlclN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KTsKK2Jvb2wgVmFsaWRhdGVG
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlclBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0
dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSByZW5kZXJidWZmZXJ0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCByZW5kZXJidWZmZXIpOwogCiBib29sIFZhbGlkYXRl
QmxpdEZyYW1lYnVmZmVyUGFyYW1ldGVycyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNyY1gwLApAQCAtMTEw
LDYgKzEyNCw4IEBAIGJvb2wgVmFsaWRhdGVSZWFkUGl4ZWxzUm9idXN0QU5HTEUoVmFsaWRhdGlv
bkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqY29sdW1ucywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqcm93cywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICpwaXhlbHMpOwogYm9vbCBWYWxp
ZGF0ZVJlYWRuUGl4ZWxzRVhUKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgeCwKQEAgLTEyOSw2ICsxNDUsOCBAQCBib29sIFZhbGlkYXRlUmVhZG5Q
aXhlbHNSb2J1c3RBTkdMRShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqY29sdW1ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKnJvd3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHZvaWQgKmRhdGEpOwogCiBib29sIFZhbGlkYXRlR2VuUXVlcmllc0VYVChnbDo6Q29u
dGV4dCAqY29udGV4dCwgR0xzaXplaSBuKTsKQEAgLTE3OSw4ICsxOTcsMjkgQEAgYm9vbCBWYWxp
ZGF0ZUdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludDY0ICpw
YXJhbXMpOwogCi1ib29sIFZhbGlkYXRlVW5pZm9ybShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
dW5pZm9ybVR5cGUsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50KTsKLWJvb2wgVmFsaWRh
dGVVbmlmb3JtTWF0cml4KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtYXRyaXhUeXBlLCBHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9ybShD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB1bmlm
b3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50KTsKK2Jvb2wgVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bTFpdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgKnZhbHVlKTsKK2Jvb2wgVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtYXRyaXhUeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIHRyYW5zcG9zZSk7CisKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtKFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdW5pZm9ybVR5cGUsIEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50KTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMWl2KENvbnRleHQgKmNvbnRleHQsIEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOworYm9vbCBW
YWxpZGF0ZVVuaWZvcm1NYXRyaXgoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gbWF0cml4VHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bv
c2UpOwogCiBib29sIFZhbGlkYXRlU3RhdGVRdWVyeShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4
dCwKQEAgLTIwOSwxNCArMjQ4LDI0IEBAIGJvb2wgVmFsaWRhdGVDb3B5VGV4SW1hZ2VQYXJhbWV0
ZXJzQmFzZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRm9ybWF0ICp0ZXh0dXJlRm9ybWF0T3V0KTsKIAotYm9vbCBWYWxp
ZGF0ZURyYXdBcnJheXMoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZp
cnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50KTsKLWJvb2wgVmFsaWRhdGVEcmF3QXJyYXlz
SW5zdGFuY2VkKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xz
aXplaSBjb3VudCwgR0xzaXplaSBwcmltY291bnQpOwotYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3Qs
IEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KTsKLQorYm9vbCBWYWxpZGF0ZURyYXdC
YXNlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSwgR0xzaXplaSBjb3Vu
dCk7Citib29sIFZhbGlkYXRlRHJhd0FycmF5c0NvbW1vbihWYWxpZGF0aW9uQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBwcmltY291bnQpOworYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWQoQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBt
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcmltY291bnQpOworYm9vbCBWYWxpZGF0ZURy
YXdBcnJheXNJbnN0YW5jZWRBTkdMRShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50KTsKKworYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50
c0Jhc2UoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlKTsKIGJvb2wgVmFs
aWRhdGVEcmF3RWxlbWVudHMoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LApAQCAtMjQwLDEwICsyODksMTcgQEAgYm9vbCBWYWxpZGF0ZURyYXdFbGVt
ZW50c0luc3RhbmNlZEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcmltY291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXhSYW5nZSAqaW5kZXhSYW5nZU91dCk7CiAKLWJv
b2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVCYXNlKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsKTsKLWJvb2wgVmFsaWRhdGVGcmFt
ZWJ1ZmZlclRleHR1cmUyRChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0g
YXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRl
eHRhcmdldCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsKTsKK2Jvb2wgVmFsaWRhdGVGcmFt
ZWJ1ZmZlclRleHR1cmVCYXNlKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxldmVsKTsKK2Jvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUyRChD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFj
aG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRleHRhcmdl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCk7CiBib29sIFZhbGlk
YXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LApAQCAtMjUxLDEwICszMDcs
MTggQEAgYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJlbmRlcmJ1
ZmZlcik7CiAKIGJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtQmFzZShDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24pOwotYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1m
dihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxv
YXQqIHBhcmFtcyk7Ci1ib29sIFZhbGlkYXRlR2V0VW5pZm9ybWl2KENvbnRleHQgKmNvbnRleHQs
IEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQqIHBhcmFtcyk7Ci1ib29sIFZh
bGlkYXRlR2V0blVuaWZvcm1mdkVYVChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwg
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xmbG9hdCogcGFyYW1zKTsKLWJvb2wg
VmFsaWRhdGVHZXRuVW5pZm9ybWl2RVhUKENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTGludCogcGFyYW1zKTsKK2Jvb2wg
VmFsaWRhdGVHZXRVbmlmb3JtZnYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHTGZsb2F0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1p
dihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50
ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtZnZFWFQoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtaXZFWFQoQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9n
cmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKIGJvb2wgVmFsaWRhdGVHZXRVbmlmb3Jt
ZnZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uLApAQCAtMjc0LDggKzMzOCwxMSBAQCBib29sIFZhbGlk
YXRlR2V0VW5pZm9ybXVpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpOwogCi1ib29sIFZhbGlk
YXRlRGlzY2FyZEZyYW1lYnVmZmVyQmFzZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0
LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50cywgYm9vbCBkZWZhdWx0RnJhbWVidWZmZXIp
OworYm9vbCBWYWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckJhc2UoQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUF0dGFjaG1lbnRzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICphdHRhY2ht
ZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVmYXVsdEZy
YW1lYnVmZmVyKTsKIAogYm9vbCBWYWxpZGF0ZUluc2VydEV2ZW50TWFya2VyRVhUKENvbnRleHQg
KmNvbnRleHQsIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICptYXJrZXIpOwogYm9vbCBWYWxp
ZGF0ZVB1c2hHcm91cE1hcmtlckVYVChDb250ZXh0ICpjb250ZXh0LCBHTHNpemVpIGxlbmd0aCwg
Y29uc3QgY2hhciAqbWFya2VyKTsKQEAgLTU0Niw2ICs2MTMsNyBAQCBib29sIFZhbGlkYXRlR2V0
SW50ZXJuYWxGb3JtYXRpdihDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKnBhcmFtcyk7CisKIGJvb2wgVmFsaWRhdGVHZXRJbnRlcm5hbEZvcm1hdGl2Um9idXN0QU5H
TEUoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LApAQCAtNTU0LDggKzYyMiwxOSBAQCBi
b29sIFZhbGlkYXRlR2V0SW50ZXJuYWxGb3JtYXRpdlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgKnBhcmFtcyk7CiAKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhGb3JtYXRCYXNlKFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGF0
dHJpYkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIHB1cmVJbnRlZ2VyKTsKKworYm9vbCBWYWxpZGF0ZVdl
YkdMRnJhbWVidWZmZXJBdHRhY2htZW50Q2xlYXJUeXBlKFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGRyYXdidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xlbnVtICp2YWxpZENvbXBvbmVudFR5cGVzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB2YWxpZENvbXBvbmVu
dFR5cGVDb3VudCk7CisKIC8vIEVycm9yIG1lc3NhZ2VzIHNoYXJlZCBoZXJlIGZvciB1c2UgaW4g
dGVzdGluZy4KIGV4dGVybiBjb25zdCBjaGFyICpnX0V4Y2VlZHNNYXhFbGVtZW50RXJyb3JNZXNz
YWdlOwogfSAgLy8gbmFtZXNwYWNlIGdsCiAKLSNlbmRpZiAvLyBMSUJBTkdMRV9WQUxJREFUSU9O
X0VTX0hfCisjZW5kaWYgIC8vIExJQkFOR0xFX1ZBTElEQVRJT05fRVNfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMyLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMyLmNwcApp
bmRleCA5MmZkMGQ2OWUxNTBkYWRmYjJmNjExNDY5NGYzMTliYjU5YTFiMmY2Li5mYjIzY2FjY2M1
YTg5MzY2MzkxMGY5Y2JiMDE3NTdkMDJmMTFlYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMi5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzIuY3BwCkBAIC0yMyw2ICsy
Myw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS92YWxpZGF0aW9uRVMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS92YWxpZGF0aW9uRVMzLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvVmVydGV4QXJyYXkuaCIKIAogbmFtZXNwYWNlIGdsCiB7CkBA
IC0yODMsNiArMjg0LDU4IEBAIGJvb2wgSXNWYWxpZENvcHlUZXh0dXJlU291cmNlVGFyZ2V0KENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiti
b29sIElzVmFsaWRTdGVuY2lsRnVuYyhHTGVudW0gZnVuYykKK3sKKyAgICBzd2l0Y2ggKGZ1bmMp
CisgICAgeworICAgICAgICBjYXNlIEdMX05FVkVSOgorICAgICAgICBjYXNlIEdMX0FMV0FZUzoK
KyAgICAgICAgY2FzZSBHTF9MRVNTOgorICAgICAgICBjYXNlIEdMX0xFUVVBTDoKKyAgICAgICAg
Y2FzZSBHTF9FUVVBTDoKKyAgICAgICAgY2FzZSBHTF9HRVFVQUw6CisgICAgICAgIGNhc2UgR0xf
R1JFQVRFUjoKKyAgICAgICAgY2FzZSBHTF9OT1RFUVVBTDoKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCitib29sIElzVmFsaWRTdGVuY2lsRmFjZShHTGVudW0gZmFjZSkKK3sKKyAgICBzd2l0
Y2ggKGZhY2UpCisgICAgeworICAgICAgICBjYXNlIEdMX0ZST05UOgorICAgICAgICBjYXNlIEdM
X0JBQ0s6CisgICAgICAgIGNhc2UgR0xfRlJPTlRfQU5EX0JBQ0s6CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KK30KKworYm9vbCBJc1ZhbGlkU3RlbmNpbE9wKEdMZW51bSBvcCkKK3sKKyAgICBzd2l0
Y2ggKG9wKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9aRVJPOgorICAgICAgICBjYXNlIEdMX0tF
RVA6CisgICAgICAgIGNhc2UgR0xfUkVQTEFDRToKKyAgICAgICAgY2FzZSBHTF9JTkNSOgorICAg
ICAgICBjYXNlIEdMX0RFQ1I6CisgICAgICAgIGNhc2UgR0xfSU5WRVJUOgorICAgICAgICBjYXNl
IEdMX0lOQ1JfV1JBUDoKKyAgICAgICAgY2FzZSBHTF9ERUNSX1dSQVA6CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KK30KKwogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCiBib29sIFZhbGlkYXRl
RVMyVGV4SW1hZ2VQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCkBAIC0zMTMsOCArMzY2LDcg
QEAgYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGxldmVsIDwgMCB8fCB4b2Zm
c2V0IDwgMCB8fAotICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAt
IHhvZmZzZXQgPCB3aWR0aCB8fAorICAgIGlmIChsZXZlbCA8IDAgfHwgeG9mZnNldCA8IDAgfHwg
c3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB4b2Zmc2V0IDwgd2lkdGggfHwK
ICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB5b2Zmc2V0IDwg
aGVpZ2h0KQogICAgIHsKICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSkpOwpAQCAtMzU5LDcgKzQxMSw4IEBAIGJvb2wgVmFsaWRhdGVFUzJUZXhJbWFn
ZVBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGFyZ2V0VGV4dHVy
ZShJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkgPyBHTF9URVhUVVJFX0NVQkVfTUFQIDog
dGFyZ2V0KTsKKyAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9CisgICAgICAgIGNvbnRleHQtPmdl
dFRhcmdldFRleHR1cmUoSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpID8gR0xfVEVYVFVS
RV9DVUJFX01BUCA6IHRhcmdldCk7CiAgICAgaWYgKCF0ZXh0dXJlKQogICAgIHsKICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKQEAgLTM2
OCwxMCArNDIxLDE2IEBAIGJvb2wgVmFsaWRhdGVFUzJUZXhJbWFnZVBhcmFtZXRlcnMoQ29udGV4
dCAqY29udGV4dCwKIAogICAgIGlmIChpc1N1YkltYWdlKQogICAgIHsKKyAgICAgICAgR0xlbnVt
IHRleHR1cmVGb3JtYXQgPSB0ZXh0dXJlLT5nZXRGb3JtYXQodGFyZ2V0LCBsZXZlbCkuYXNTaXpl
ZCgpOworICAgICAgICBpZiAodGV4dHVyZUZvcm1hdCA9PSBHTF9OT05FKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwgIlRleHR1cmUgbGV2ZWwgZG9lcyBub3QgZXhpc3QuIikpOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisKICAgICAgICAgaWYgKGZvcm1hdCAhPSBHTF9OT05FKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoZ2w6OkdldFNpemVkSW50ZXJuYWxGb3JtYXQoZm9ybWF0
LCB0eXBlKSAhPQotICAgICAgICAgICAgICAgIHRleHR1cmUtPmdldEZvcm1hdCh0YXJnZXQsIGxl
dmVsKS5hc1NpemVkKCkpCisgICAgICAgICAgICBpZiAoZ2w6OkdldFNpemVkSW50ZXJuYWxGb3Jt
YXQoZm9ybWF0LCB0eXBlKSAhPSB0ZXh0dXJlRm9ybWF0KQogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDA3LDQ5ICs0NjYsNjUgQEAg
Ym9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgaXNTdWJJbWFnZSA/IHRleHR1cmUtPmdldEZvcm1hdCh0YXJnZXQsIGxldmVsKS5h
c1NpemVkKCkgOiBpbnRlcm5hbGZvcm1hdDsKICAgICAgICAgc3dpdGNoIChhY3R1YWxJbnRlcm5h
bEZvcm1hdCkKICAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNU
Q19EWFQxX0VYVDoKLSAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFf
RVhUOgotICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUNv
bXByZXNzaW9uRFhUMSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBj
YXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6Ci0gICAgICAgICAgICBpZiAo
IWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQxKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUNV9BTkdMRToKLSAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLnRleHR1cmVDb21wcmVzc2lvbkRYVDUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfT0VTOgotICAgICAgICAgICAgaWYgKCFjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZEVUQzFSR0I4VGV4dHVyZSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0pKTsKKyAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQx
X0VYVDoKKyAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6
CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUNv
bXByZXNzaW9uRFhUMSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FO
R0xFOgorICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1
cmVDb21wcmVzc2lvbkRYVDEpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
NV9BTkdMRToKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50
ZXh0dXJlQ29tcHJlc3Npb25EWFQ1KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQl9TM1RD
X0RYVDFfRVhUOgorICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNU
Q19EWFQxX0VYVDoKKyAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1Mz
VENfRFhUM19FWFQ6CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9T
M1RDX0RYVDVfRVhUOgorICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLnRleHR1cmVDb21wcmVzc2lvblMzVENzUkdCKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
KSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9P
RVM6CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJl
c3NlZEVUQzFSR0I4VGV4dHVyZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RF
X0FOR0xFOgorICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQjhfTE9TU1lfREVDT0RF
X0VUQzJfQU5HTEU6CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfTE9TU1lf
REVDT0RFX0VUQzJfQU5HTEU6CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCOF9Q
VU5DSFRIUk9VR0hfQUxQSEExX0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFOgorICAgICAgICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfTE9TU1lfREVDT0RF
X0VUQzJfQU5HTEU6CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkubG9zc3lFVENEZWNvZGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0lOVkFMSURfRU5VTSwgIkFOR0xFX2xvc3N5X2V0Y19kZWNvZGUgZXh0ZW5zaW9uIGlzIG5vdCBz
dXBwb3J0ZWQiKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgICAg
ICBFcnJvcihHTF9JTlZBTElEX0VOVU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRl
cm5hbGZvcm1hdCBpcyBub3QgYSBzdXBwb3J0ZWQgY29tcHJlc3NlZCBpbnRlcm5hbCBmb3JtYXQi
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FO
R0xFOgotICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5sb3NzeUVU
Q0RlY29kZSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAi
QU5HTEVfbG9zc3lfZXRjX2RlY29kZSBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZCIpKTsKLSAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcigKLSAgICAgICAgICAgICAgICAgIEdMX0lOVkFMSURfRU5VTSwgImlu
dGVybmFsZm9ybWF0IGlzIG5vdCBhIHN1cHBvcnRlZCBjb21wcmVzc2VkIGludGVybmFsIGZvcm1h
dCIpKTsKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIGlm
ICghVmFsaWRDb21wcmVzc2VkSW1hZ2VTaXplKGNvbnRleHQsIGFjdHVhbEludGVybmFsRm9ybWF0
LCB3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgaWYgKCFWYWxpZENvbXByZXNzZWRJbWFnZVNpemUo
Y29udGV4dCwgYWN0dWFsSW50ZXJuYWxGb3JtYXQsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpKQogICAgICAgICB7
CiAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDYwLDE5ICs1MzUsMTkgQEAg
Ym9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAvLyB2YWxpZGF0ZSA8dHlwZT4gYnkgaXRzZWxmICh1c2VkIGFzIHNlY29uZGFyeSBrZXkg
YmVsb3cpCiAgICAgICAgIHN3aXRjaCAodHlwZSkKICAgICAgICAgewotICAgICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfQllURToKLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81
OgotICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNDoKLSAgICAgICAgICBj
YXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzE6Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9TSE9SVDoKLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKLSAgICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0lOVF8yNF84X09FUzoKLSAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRf
T0VTOgotICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hP
UlRfNV82XzU6CisgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQ6Cisg
ICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzE6CisgICAgICAgICAgICBj
YXNlIEdMX1VOU0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6
CisgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yNF84X09FUzoKKyAgICAgICAgICAg
IGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICAvLyB2YWxpZGF0ZSA8
Zm9ybWF0PiArIDx0eXBlPiBjb21iaW5hdGlvbnMKQEAgLTQ4MCwyMjMgKzU1NSwyMjggQEAgYm9v
bCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAvLyAtIGludmFsaWQgPGZvcm1hdD4rPHR5cGU+IGNvbWJpbmF0aW9uIC0+IHNldHMgSU5WQUxJ
RF9PUEVSQVRJT04KICAgICAgICAgc3dpdGNoIChmb3JtYXQpCiAgICAgICAgIHsKLSAgICAgICAg
ICBjYXNlIEdMX0FMUEhBOgotICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOgotICAgICAgICAg
IGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBOgotICAgICAgICAgICAgc3dpdGNoICh0eXBlKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Ci0gICAgICAg
ICAgICAgIGNhc2UgR0xfRkxPQVQ6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9P
RVM6CisgICAgICAgICAgICBjYXNlIEdMX0FMUEhBOgorICAgICAgICAgICAgY2FzZSBHTF9MVU1J
TkFOQ0U6CisgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxP
QVQ6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfUkVEOgot
ICAgICAgICAgIGNhc2UgR0xfUkc6Ci0gICAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnRleHR1cmVSRykKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgc3dp
dGNoICh0eXBlKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9CWVRFOgotICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6Ci0gICAgICAgICAgICAg
ICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgY2FzZSBHTF9SR0I6Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAgICAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNToKLSAgICAgICAgICAgICAgY2FzZSBHTF9GTE9B
VDoKLSAgICAgICAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoKKyAgICAgICAgICAgIGNh
c2UgR0xfUkVEOgorICAgICAgICAgICAgY2FzZSBHTF9SRzoKKyAgICAgICAgICAgICAgICBpZiAo
IWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlUkcpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAg
ICAgICAgIGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9G
TE9BVF9PRVM6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICBjYXNlIEdMX1JHQkE6Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAgICAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80OgotICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lH
TkVEX1NIT1JUXzVfNV81XzE6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6Ci0gICAgICAg
ICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICBjYXNlIEdMX1JHQjoK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV82XzU6CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
R0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0JH
UkFfRVhUOgotICAgICAgICAgICAgc3dpdGNoICh0eXBlKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICBjYXNlIEdMX1JHQkE6
CisgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQ6CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMToKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBH
TF9GTE9BVDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfU1JH
Ql9FWFQ6Ci0gICAgICAgICAgY2FzZSBHTF9TUkdCX0FMUEhBX0VYVDoKLSAgICAgICAgICAgIGlm
ICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnNSR0IpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
c3dpdGNoICh0eXBlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lH
TkVEX0JZVEU6CisgICAgICAgICAgICBjYXNlIEdMX0JHUkFfRVhUOgorICAgICAgICAgICAgICAg
IHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDogIC8vIGVy
cm9yIGNhc2VzIGZvciBjb21wcmVzc2VkIHRleHR1cmVzIGFyZSBoYW5kbGVkIGJlbG93Ci0gICAg
ICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKLSAgICAgICAgICBj
YXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6Ci0gICAgICAgICAgY2FzZSBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5
cGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6
Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAgICAgY2FzZSBH
TF9TUkdCX0VYVDoKKyAgICAgICAgICAgIGNhc2UgR0xfU1JHQl9BTFBIQV9FWFQ6CisgICAgICAg
ICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc1JHQikKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfREVQVEhf
U1RFTkNJTF9PRVM6Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UXzI0XzhfT0VTOgorICAgICAgICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOiAgLy8gZXJyb3IgY2FzZXMgZm9y
IGNvbXByZXNzZWQgdGV4dHVyZXMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGVkIGJlbG93CisgICAgICAgICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgICAgICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0
eXBlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9TSE9SVDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfU1RF
TkNJTF9PRVM6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfMjRfOF9PRVM6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAoZm9ybWF0
KQogICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFf
RVhUOgotICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0g
ICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVDb21wcmVzc2lv
bkRYVDEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQz
X0FOR0xFOgotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJl
Q29tcHJlc3Npb25EWFQzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAgICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICAgICAgICBp
ZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVDb21wcmVzc2lvbkRYVDEpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAgICAgICAgIGlm
IChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUNvbXByZXNzaW9uRFhUMykKKyAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQ1KQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
R0xfRVRDMV9SR0I4X09FUzoKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5z
aW9ucygpLmNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmUpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfTE9T
U1lfREVDT0RFX0FOR0xFOgorICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQjhfTE9T
U1lfREVDT0RFX0VUQzJfQU5HTEU6CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JH
QjhfTE9TU1lfREVDT0RFX0VUQzJfQU5HTEU6CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNT
RURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFOgorICAg
ICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfTE9T
U1lfREVDT0RFX0VUQzJfQU5HTEU6CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS5sb3NzeUVUQ0RlY29kZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAg
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiRVRDIGxvc3N5IGRlY29kZSBmb3JtYXRzIGNhbid0IHdvcmsgd2l0aCB0aGlzIHR5cGUuIikp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAg
R0xfSU5WQUxJRF9FTlVNLCAiQU5HTEVfbG9zc3lfZXRjX2RlY29kZSBleHRlbnNpb24gaXMgbm90
IHN1cHBvcnRlZC4iKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdM
X0RFUFRIX0NPTVBPTkVOVDoKKyAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTF9PRVM6
CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVwdGhUZXh0
dXJlcykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGFy
Z2V0ICE9IEdMX1RFWFRVUkVfMkQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIC8vIE9FU19kZXB0aF90ZXh0dXJlIHN1cHBvcnRzIGxvYWRpbmcgZGVwdGgg
ZGF0YSBhbmQgbXVsdGlwbGUgbGV2ZWxzLAorICAgICAgICAgICAgICAgIC8vIGJ1dCBBTkdMRV9k
ZXB0aF90ZXh0dXJlIGRvZXMgbm90CisgICAgICAgICAgICAgICAgaWYgKHBpeGVscyAhPSBOVUxM
IHx8IGxldmVsICE9IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0eXBlID09IEdMX0ZMT0FUKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlRmxvYXQp
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQ1KQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ug
R0xfRVRDMV9SR0I4X09FUzoKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkuY29tcHJlc3NlZEVUQzFSR0I4VGV4dHVyZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0VU
QzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEU6Ci0gICAgICAgICAgICAgIGlmIChjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkubG9zc3lFVENEZWNvZGUpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAgIEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJF
VEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFIGNhbid0IHdvcmsgd2l0aCB0aGlzIHR5cGUuIikp
OwotICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9F
TlVNLCAiQU5HTEVfbG9zc3lfZXRjX2RlY29kZSBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZC4i
KSk7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6Ci0g
ICAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX09FUzoKLSAgICAgICAgICAgIGlmICghY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRlcHRoVGV4dHVyZXMpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkp
OwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmICh0YXJnZXQgIT0gR0xfVEVYVFVSRV8yRCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIC8vIE9FU19kZXB0aF90ZXh0dXJlIHN1cHBvcnRzIGxvYWRpbmcgZGVwdGggZGF0YSBhbmQg
bXVsdGlwbGUgbGV2ZWxzLAotICAgICAgICAgICAgLy8gYnV0IEFOR0xFX2RlcHRoX3RleHR1cmUg
ZG9lcyBub3QKLSAgICAgICAgICAgIGlmIChwaXhlbHMgIT0gTlVMTCB8fCBsZXZlbCAhPSAwKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHR5cGUgPT0gR0xfRkxP
QVQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LnRleHR1cmVGbG9hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAodHlw
ZSA9PSBHTF9IQUxGX0ZMT0FUX09FUykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUhhbGZGbG9hdCkKKyAgICAgICAgfQorICAgICAg
ICBlbHNlIGlmICh0eXBlID09IEdMX0hBTEZfRkxPQVRfT0VTKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlSGFsZkZsb2F0KQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTcxMyw0
ODAgKzc5MywxNzcgQEAgYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZXh0
ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRVMyQ29weVRl
eEltYWdlUGFyYW1ldGVycyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTdWJJbWFnZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBib3JkZXIpCitib29sIFZhbGlkYXRlRVMyVGV4U3RvcmFnZVBhcmFtZXRlcnMo
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgbGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBp
bnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
aGVpZ2h0KQogewotICAgIGlmICghVmFsaWRUZXh0dXJlMkREZXN0aW5hdGlvblRhcmdldChjb250
ZXh0LCB0YXJnZXQpKQorICAgIGlmICh0YXJnZXQgIT0gR0xfVEVYVFVSRV8yRCAmJiB0YXJnZXQg
IT0gR0xfVEVYVFVSRV9DVUJFX01BUCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgdGV4dHVyZSB0YXJnZXQiKSk7Cisg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgRm9ybWF0IHRleHR1cmVGb3JtYXQgPSBG
b3JtYXQ6OkludmFsaWQoKTsKLSAgICBpZiAoIVZhbGlkYXRlQ29weVRleEltYWdlUGFyYW1ldGVy
c0Jhc2UoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIGlzU3ViSW1hZ2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhvZmZzZXQsIHlv
ZmZzZXQsIDAsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRleHR1cmVGb3JtYXQpKQorICAgIGlmICh3aWR0
aCA8IDEgfHwgaGVpZ2h0IDwgMSB8fCBsZXZlbHMgPCAxKQogICAgIHsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCi0gICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9
IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKLSAgICBHTGVudW0g
Y29sb3JidWZmZXJGb3JtYXQgICAgICAgICAgID0gZnJhbWVidWZmZXItPmdldFJlYWRDb2xvcmJ1
ZmZlcigpLT5nZXRGb3JtYXQoKS5hc1NpemVkKCk7Ci0gICAgY29uc3QgYXV0byAmZm9ybWF0SW5m
byAgICAgICAgICAgICA9ICp0ZXh0dXJlRm9ybWF0LmluZm87CisgICAgaWYgKHRhcmdldCA9PSBH
TF9URVhUVVJFX0NVQkVfTUFQICYmIHdpZHRoICE9IGhlaWdodCkKKyAgICB7CisgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KIAotICAgIC8vIFtPcGVuR0wgRVMgMi4wLjI0XSB0YWJsZSAzLjkK
LSAgICBpZiAoaXNTdWJJbWFnZSkKKyAgICBpZiAobGV2ZWxzICE9IDEgJiYgbGV2ZWxzICE9IGds
Ojpsb2cyKHN0ZDo6bWF4KHdpZHRoLCBoZWlnaHQpKSArIDEpCiAgICAgewotICAgICAgICBzd2l0
Y2ggKGZvcm1hdEluZm8uZm9ybWF0KQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9BTFBI
QToKLSAgICAgICAgICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9BTFBIQThfRVhUICYm
Ci0gICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTQgJiYKLSAgICAg
ICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0ExICYmCi0gICAgICAgICAg
ICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U6Ci0gICAgICAg
ICAgICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SOF9FWFQgJiYKLSAgICAgICAgICAg
ICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHOF9FWFQgJiYKLSAgICAgICAgICAgICAg
ICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjU2NSAmJgotICAgICAgICAgICAgICAgICAg
Y29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCOF9PRVMgJiYKLSAgICAgICAgICAgICAgICAgIGNv
bG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1
ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0ExICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZl
ckZvcm1hdCAhPSBHTF9SR0JBOF9PRVMpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0g
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9SRURfRVhUOgotICAgICAgICAgICAgICBp
ZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUjhfRVhUICYmCi0gICAgICAgICAgICAgICAgICBj
b2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SRzhfRVhUICYmCi0gICAgICAgICAgICAgICAgICBjb2xv
cmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1NjUgJiYKLSAgICAgICAgICAgICAgICAgIGNvbG9yYnVm
ZmVyRm9ybWF0ICE9IEdMX1JHQjhfT0VTICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZl
ckZvcm1hdCAhPSBHTF9SR0JBNCAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3Jt
YXQgIT0gR0xfUkdCNV9BMSAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQg
IT0gR0xfUkdCQThfT0VTICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAh
PSBHTF9SMzJGICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9S
RzMyRiAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCMzJG
ICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBMzJGKQot
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNh
c2UgR0xfUkdfRVhUOgotICAgICAgICAgICAgICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xf
Ukc4X0VYVCAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdC
NTY1ICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I4X09F
UyAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTQgJiYK
LSAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjVfQTEgJiYKLSAg
ICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUyAmJgotICAg
ICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkczMkYgJiYKLSAgICAgICAg
ICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjMyRiAmJgotICAgICAgICAgICAg
ICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTMyRikKLSAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1JHQjoKLSAgICAg
ICAgICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1NjUgJiYKLSAgICAgICAgICAg
ICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I4X09FUyAmJgotICAgICAgICAgICAgICAg
IGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmCi0gICAgICAgICAgICAgICAgY29sb3Ji
dWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9BMSAmJgotICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVy
Rm9ybWF0ICE9IEdMX1JHQkE4X09FUyAmJgotICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9y
bWF0ICE9IEdMX1JHQjMyRiAmJgotICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9
IEdMX1JHQkEzMkYpCisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25z
dCBnbDo6SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJ
bmZvKGludGVybmFsZm9ybWF0KTsKKyAgICBpZiAoZm9ybWF0SW5mby5mb3JtYXQgPT0gR0xfTk9O
RSB8fCBmb3JtYXRJbmZvLnR5cGUgPT0gR0xfTk9ORSkKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgY29uc3QgZ2w6OkNhcHMgJmNhcHMgPSBjb250ZXh0LT5nZXRDYXBz
KCk7CisKKyAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV8yRDoKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KHdpZHRoKSA+IGNhcHMu
bWF4MkRUZXh0dXJlU2l6ZSB8fAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4o
aGVpZ2h0KSA+IGNhcHMubWF4MkRUZXh0dXJlU2l6ZSkKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKLSAg
ICAgICAgICBjYXNlIEdMX1JHQkE6Ci0gICAgICAgICAgICBpZiAoY29sb3JidWZmZXJGb3JtYXQg
IT0gR0xfUkdCQTQgJiYKLSAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9S
R0I1X0ExICYmCi0gICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQThf
T0VTICYmCi0gICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTMyRikK
KyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQOgorICAgICAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PEdMdWludD4od2lkdGgpID4gY2Fwcy5tYXhDdWJlTWFwVGV4dHVyZVNpemUgfHwKKyAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGhlaWdodCkgPiBjYXBzLm1heEN1YmVN
YXBUZXh0dXJlU2l6ZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6Ci0gICAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKLSAgICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6Ci0gICAgICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgotICAgICAgICAgIGNhc2UgR0xfRVRDMV9S
R0I4X09FUzoKLSAgICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEU6
Ci0gICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgY2FzZSBHTF9E
RVBUSF9DT01QT05FTlQ6Ci0gICAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX09FUzoKLSAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KKyAgICB9CiAKLSAgICAgICAgaWYgKGZvcm1hdEluZm8udHlwZSA9PSBHTF9GTE9BVCAm
JiAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVGbG9hdCkKKyAgICBpZiAobGV2ZWxz
ICE9IDEgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlTlBPVCkKKyAgICB7Cisg
ICAgICAgIGlmICghZ2w6OmlzUG93Mih3aWR0aCkgfHwgIWdsOjppc1BvdzIoaGVpZ2h0KSkKICAg
ICAgICAgewogICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
IH0KLSAgICBlbHNlCisKKyAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KQogICAgIHsKLSAgICAg
ICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xf
QUxQSEE6Ci0gICAgICAgICAgICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfQUxQSEE4X0VY
VCAmJgotICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmCi0g
ICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9BMSAmJgotICAgICAg
ICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUkE4X0VYVCAmJgotICAgICAgICAg
ICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUyAmJgotICAgICAgICAgICAg
ICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQorICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgICAgIGNhc2UgR0xfQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQxKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U6Ci0gICAgICAg
ICAgICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SOF9FWFQgJiYKLSAgICAgICAgICAg
ICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHOF9FWFQgJiYKLSAgICAgICAgICAgICAg
ICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjU2NSAmJgotICAgICAgICAgICAgICAgICAg
Y29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCOF9PRVMgJiYKLSAgICAgICAgICAgICAgICAgIGNv
bG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1
ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0ExICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZl
ckZvcm1hdCAhPSBHTF9CR1JBOF9FWFQgJiYKLSAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVy
Rm9ybWF0ICE9IEdMX1JHQkE4X09FUyAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJG
b3JtYXQgIT0gR0xfQkdSNV9BMV9BTkdMRVgpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9SRURfRVhUOgotICAgICAgICAgICAg
ICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUjhfRVhUICYmCi0gICAgICAgICAgICAgICAg
ICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SRzhfRVhUICYmCi0gICAgICAgICAgICAgICAgICBj
b2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1NjUgJiYKLSAgICAgICAgICAgICAgICAgIGNvbG9y
YnVmZmVyRm9ybWF0ICE9IEdMX1JHQjhfT0VTICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1
ZmZlckZvcm1hdCAhPSBHTF9SR0JBNCAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJG
b3JtYXQgIT0gR0xfUkdCNV9BMSAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3Jt
YXQgIT0gR0xfQkdSQThfRVhUICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1h
dCAhPSBHTF9SR0JBOF9PRVMgJiYKLSAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0
ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfUkdfRVhUOgotICAgICAgICAgICAgICBpZiAo
Y29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkc4X0VYVCAmJgotICAgICAgICAgICAgICAgICAgY29s
b3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNTY1ICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1
ZmZlckZvcm1hdCAhPSBHTF9SR0I4X09FUyAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZm
ZXJGb3JtYXQgIT0gR0xfUkdCQTQgJiYKLSAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9y
bWF0ICE9IEdMX1JHQjVfQTEgJiYKLSAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0
ICE9IEdMX0JHUkE4X0VYVCAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQg
IT0gR0xfUkdCQThfT0VTICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAh
PSBHTF9CR1I1X0ExX0FOR0xFWCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1JHQjoKLSAgICAgICAgICAgIGlmIChjb2xvcmJ1
ZmZlckZvcm1hdCAhPSBHTF9SR0I1NjUgJiYKLSAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZv
cm1hdCAhPSBHTF9SR0I4X09FUyAmJgotICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0
ICE9IEdMX1JHQkE0ICYmCi0gICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xf
UkdCNV9BMSAmJgotICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUkE4
X0VYVCAmJgotICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09F
UyAmJgotICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUjVfQTFfQU5H
TEVYKQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6Cisg
ICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Np
b25EWFQzKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6Ci0gICAgICAgICAgY2FzZSBHTF9SR0JBOgotICAg
ICAgICAgICAgaWYgKGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmCi0gICAgICAgICAg
ICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9BMSAmJgotICAgICAgICAgICAgICAg
IGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUkE4X0VYVCAmJgotICAgICAgICAgICAgICAgIGNv
bG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUyAmJgotICAgICAgICAgICAgICAgIGNvbG9y
YnVmZmVyRm9ybWF0ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQorICAgICAgICBjYXNlIEdMX0NPTVBS
RVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQ1KQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9T
M1RDX0RYVDFfRVhUOgotICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
MV9FWFQ6Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVD
b21wcmVzc2lvbkRYVDEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCisgICAgICAg
IGNhc2UgR0xfRVRDMV9SR0I4X09FUzoKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLmNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmUpCiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FO
R0xFOgotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29t
cHJlc3Npb25EWFQzKQorICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5H
TEU6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0I4X0xPU1NZX0RFQ09ERV9FVEMyX0FO
R0xFOgorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfTE9TU1lfREVDT0RFX0VUQzJf
QU5HTEU6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBI
QTFfTE9TU1lfREVDT0RFX0VUQzJfQU5HTEU6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9T
UkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFOgorICAgICAg
ICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubG9zc3lFVENEZWNvZGUpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cigKKyAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiQU5HTEVfbG9z
c3lfZXRjX2RlY29kZSBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZC4iKSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfUkdCQTMyRl9FWFQ6CisgICAgICAgIGNh
c2UgR0xfUkdCMzJGX0VYVDoKKyAgICAgICAgY2FzZSBHTF9BTFBIQTMyRl9FWFQ6CisgICAgICAg
IGNhc2UgR0xfTFVNSU5BTkNFMzJGX0VYVDoKKyAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQ
SEEzMkZfRVhUOgorICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4
dHVyZUZsb2F0KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2Ug
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKLSAgICAgICAgICAgIGlmIChjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUNvbXByZXNzaW9uRFhUNSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTikpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgY2FzZSBHTF9SR0JBMTZGX0VYVDoKKyAgICAg
ICAgY2FzZSBHTF9SR0IxNkZfRVhUOgorICAgICAgICBjYXNlIEdMX0FMUEhBMTZGX0VYVDoKKyAg
ICAgICAgY2FzZSBHTF9MVU1JTkFOQ0UxNkZfRVhUOgorICAgICAgICBjYXNlIEdMX0xVTUlOQU5D
RV9BTFBIQTE2Rl9FWFQ6CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS50ZXh0dXJlSGFsZkZsb2F0KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgIGNhc2UgR0xfRVRDMV9SR0I4X09FUzoKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkuY29tcHJlc3NlZEVUQzFSR0I4VGV4dHVyZSkKKyAgICAgICAgY2FzZSBHTF9S
OF9FWFQ6CisgICAgICAgIGNhc2UgR0xfUkc4X0VYVDoKKyAgICAgICAgY2FzZSBHTF9SMTZGX0VY
VDoKKyAgICAgICAgY2FzZSBHTF9SRzE2Rl9FWFQ6CisgICAgICAgIGNhc2UgR0xfUjMyRl9FWFQ6
CisgICAgICAgIGNhc2UgR0xfUkczMkZfRVhUOgorICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkudGV4dHVyZVJHKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9O
RU5UMTY6CisgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTOgorICAgICAgICBj
YXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOgorICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuZGVwdGhUZXh0dXJlcykKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEU6Ci0gICAg
ICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubG9zc3lFVENEZWNvZGUpCi0g
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkVUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEUgY2FuJ3QgYmUgY29w
aWVkIHRvLiIpKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAgIEVycm9yKEdM
X0lOVkFMSURfRU5VTSwgIkFOR0xFX2xvc3N5X2V0Y19kZWNvZGUgZXh0ZW5zaW9uIGlzIG5vdCBz
dXBwb3J0ZWQuIikpOwotICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09N
UE9ORU5UOgotICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6Ci0gICAgICAgICAg
Y2FzZSBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVM6Ci0gICAgICAgICAgY2FzZSBHTF9ERVBUSF9T
VEVOQ0lMX09FUzoKLSAgICAgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOgotICAg
ICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZXB0aFRleHR1cmVzKQorICAg
ICAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9URVhUVVJFXzJEKQogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgLy8gQU5HTEVfZGVwdGhfdGV4dHVyZSBvbmx5IHN1
cHBvcnRzIDEtbGV2ZWwgdGV4dHVyZXMKKyAgICAgICAgICAgIGlmIChsZXZlbHMgIT0gMSkKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIElmIHdpZHRoIG9yIGhlaWdo
dCBpcyB6ZXJvLCBpdCBpcyBhIG5vLW9wLiAgUmV0dXJuIGZhbHNlIHdpdGhvdXQgc2V0dGluZyBh
biBlcnJvci4KLSAgICByZXR1cm4gKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKTsKLX0KLQotYm9v
bCBWYWxpZGF0ZUVTMlRleFN0b3JhZ2VQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQpCi17Ci0gICAgaWYgKHRhcmdldCAhPSBHTF9URVhUVVJFXzJEICYmIHRhcmdldCAhPSBHTF9U
RVhUVVJFX0NVQkVfTUFQKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBpZiAod2lkdGggPCAxIHx8IGhlaWdodCA8IDEgfHwgbGV2ZWxzIDwgMSkKLSAgICB7Ci0gICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV9D
VUJFX01BUCAmJiB3aWR0aCAhPSBoZWlnaHQpCi0gICAgewotICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9Ci0KLSAgICBpZiAobGV2ZWxzICE9IDEgJiYgbGV2ZWxzICE9IGdsOjpsb2cyKHN0ZDo6
bWF4KHdpZHRoLCBoZWlnaHQpKSArIDEpCi0gICAgewotICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgfQotCi0gICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6
OkdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbGZvcm1hdCk7Ci0gICAgaWYgKGZvcm1hdElu
Zm8uZm9ybWF0ID09IEdMX05PTkUgfHwgZm9ybWF0SW5mby50eXBlID09IEdMX05PTkUpCi0gICAg
ewotICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGNvbnN0IGdsOjpDYXBzICZjYXBz
ID0gY29udGV4dC0+Z2V0Q2FwcygpOwotCi0gICAgc3dpdGNoICh0YXJnZXQpCi0gICAgewotICAg
ICAgY2FzZSBHTF9URVhUVVJFXzJEOgotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50Pih3
aWR0aCkgPiBjYXBzLm1heDJEVGV4dHVyZVNpemUgfHwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0
PEdMdWludD4oaGVpZ2h0KSA+IGNhcHMubWF4MkRUZXh0dXJlU2l6ZSkKLSAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQOgotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1
aW50Pih3aWR0aCkgPiBjYXBzLm1heEN1YmVNYXBUZXh0dXJlU2l6ZSB8fAotICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8R0x1aW50PihoZWlnaHQpID4gY2Fwcy5tYXhDdWJlTWFwVGV4dHVyZVNpemUp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAg
ICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBpZiAobGV2ZWxzICE9IDEgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0
dXJlTlBPVCkKLSAgICB7Ci0gICAgICAgIGlmICghZ2w6OmlzUG93Mih3aWR0aCkgfHwgIWdsOjpp
c1BvdzIoaGVpZ2h0KSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCi0gICAg
ewotICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgotICAgICAgY2Fz
ZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKLSAgICAgICAgaWYgKCFjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUNvbXByZXNzaW9uRFhUMSkKLSAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6Ci0gICAgICAgIGlmICgh
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVDb21wcmVzc2lvbkRYVDMpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgotICAgICAg
ICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQ1KQot
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgR0xfRVRDMV9SR0I4X09FUzoKLSAgICAgICAgaWYgKCFjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZEVUQzFSR0I4VGV4dHVyZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
KSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEU6Ci0gICAgICAgICAg
aWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubG9zc3lFVENEZWNvZGUpCi0gICAgICAgICAg
ewotICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKLSAgICAgICAgICAgICAgICAg
IEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkFOR0xFX2xvc3N5X2V0Y19kZWNvZGUgZXh0ZW5zaW9u
IGlzIG5vdCBzdXBwb3J0ZWQuIikpOwotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgfQotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9SR0JBMzJGX0VYVDoKLSAg
ICAgIGNhc2UgR0xfUkdCMzJGX0VYVDoKLSAgICAgIGNhc2UgR0xfQUxQSEEzMkZfRVhUOgotICAg
ICAgY2FzZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOgotICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQ
SEEzMkZfRVhUOgotICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJl
RmxvYXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9SR0JBMTZGX0VYVDoKLSAgICAgIGNhc2Ug
R0xfUkdCMTZGX0VYVDoKLSAgICAgIGNhc2UgR0xfQUxQSEExNkZfRVhUOgotICAgICAgY2FzZSBH
TF9MVU1JTkFOQ0UxNkZfRVhUOgotICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhU
OgotICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlSGFsZkZsb2F0
KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfUjhfRVhUOgotICAgICAgY2FzZSBHTF9SRzhfRVhU
OgotICAgICAgY2FzZSBHTF9SMTZGX0VYVDoKLSAgICAgIGNhc2UgR0xfUkcxNkZfRVhUOgotICAg
ICAgY2FzZSBHTF9SMzJGX0VYVDoKLSAgICAgIGNhc2UgR0xfUkczMkZfRVhUOgotICAgICAgICBp
ZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlUkcpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBHTF9ERVBUSF9DT01QT05FTlQxNjoKLSAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5U
MzJfT0VTOgotICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzoKLSAgICAgICAgaWYg
KCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVwdGhUZXh0dXJlcykKLSAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHRhcmdldCAh
PSBHTF9URVhUVVJFXzJEKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICB9Ci0gICAgICAgIC8vIEFOR0xFX2RlcHRoX3RleHR1cmUgb25seSBzdXBw
b3J0cyAxLWxldmVsIHRleHR1cmVzCi0gICAgICAgIGlmIChsZXZlbHMgIT0gMSkKLSAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBi
cmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBnbDo6
VGV4dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKQEAg
LTEyMDUsNyArOTgyLDkgQEAgYm9vbCBWYWxpZGF0ZUVTMlRleFN0b3JhZ2VQYXJhbWV0ZXJzKENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGUKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckVYVChDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLAorYm9vbCBWYWxpZGF0
ZURpc2NhcmRGcmFtZWJ1ZmZlckVYVChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIG51bUF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQogewogICAgIGlmICgh
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRpc2NhcmRGcmFtZWJ1ZmZlcikKQEAgLTEyMTgsMTYg
Kzk5NywxNyBAQCBib29sIFZhbGlkYXRlRGlzY2FyZEZyYW1lYnVmZmVyRVhUKENvbnRleHQgKmNv
bnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbnVtQQogCiAgICAgc3dpdGNoICh0YXJnZXQp
CiAgICAgewotICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUjoKLSAgICAgICAgICBkZWZhdWx0RnJh
bWVidWZmZXIgPQotICAgICAgICAgICAgICAoY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFRhcmdl
dEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSKS0+aWQoKSA9PSAwKTsKLSAgICAgICAgICBicmVh
azsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBmcmFtZWJ1ZmZlciB0YXJnZXQiKSk7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUjoKKyAgICAgICAgICAg
IGRlZmF1bHRGcmFtZWJ1ZmZlciA9CisgICAgICAgICAgICAgICAgKGNvbnRleHQtPmdldEdMU3Rh
dGUoKS5nZXRUYXJnZXRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiktPmlkKCkgPT0gMCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgZnJhbWVidWZmZXIg
dGFyZ2V0IikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVy
biBWYWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckJhc2UoY29udGV4dCwgdGFyZ2V0LCBudW1BdHRh
Y2htZW50cywgYXR0YWNobWVudHMsIGRlZmF1bHRGcmFtZWJ1ZmZlcik7CisgICAgcmV0dXJuIFZh
bGlkYXRlRGlzY2FyZEZyYW1lYnVmZmVyQmFzZShjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFjaG1l
bnRzLCBhdHRhY2htZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHRGcmFtZWJ1ZmZlcik7CiB9CiAKIGJvb2wgVmFsaWRhdGVCaW5kVmVydGV4QXJy
YXlPRVMoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGFycmF5KQpAQCAtMTg5MCw3ICsxNjcwLDcg
QEAgYm9vbCBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlckFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAocmVhZEZy
YW1lYnVmZmVyLT5nZXRTYW1wbGVzKGNvbnRleHQtPmdldENvbnRleHRTdGF0ZSgpKSAhPSAwICYm
CisgICAgICAgICAgICBpZiAocmVhZEZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKGNvbnRleHQpICE9
IDAgJiYKICAgICAgICAgICAgICAgICBJc1BhcnRpYWxCbGl0KGNvbnRleHQsIHJlYWRDb2xvckF0
dGFjaG1lbnQsIGRyYXdDb2xvckF0dGFjaG1lbnQsIHNyY1gwLCBzcmNZMCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0
WTEpKQogICAgICAgICAgICAgewpAQCAtMTkxNywxMCArMTY5Nyw5IEBAIGJvb2wgVmFsaWRhdGVC
bGl0RnJhbWVidWZmZXJBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxKSkKICAgICAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgd2hvbGUtYnVmZmVyIGNvcGllcyBh
cmUgcGVybWl0dGVkCi0gICAgICAgICAgICAgICAgICAgIEVSUigKLSAgICAgICAgICAgICAgICAg
ICAgICAgICJPbmx5IHdob2xlLWJ1ZmZlciBkZXB0aCBhbmQgc3RlbmNpbCBibGl0cyBhcmUgc3Vw
cG9ydGVkIGJ5IHRoaXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgImltcGxlbWVudGF0aW9u
LiIpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIk9ubHkgd2hvbGUtYnVmZmVyIGRlcHRoIGFuZCBzdGVu
Y2lsIGJsaXRzIGFyZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJzdXBwb3J0ZWQgYnkgdGhpcyBleHRlbnNpb24uIikpOwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xOTQwLDcgKzE3MTks
NyBAQCBib29sIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyQU5HTEUoQ29udGV4dCAqY29udGV4dCwK
IGJvb2wgVmFsaWRhdGVDbGVhcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xiaXRmaWVs
ZCBtYXNrKQogewogICAgIGF1dG8gZmJvID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldERyYXdG
cmFtZWJ1ZmZlcigpOwotICAgIGlmIChmYm8tPmNoZWNrU3RhdHVzKGNvbnRleHQtPmdldENvbnRl
eHRTdGF0ZSgpKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICBpZiAoZmJvLT5jaGVj
a1N0YXR1cyhjb250ZXh0KSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKICAgICB7CiAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BF
UkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5NTIsNiArMTczMSwyMiBAQCBi
b29sIFZhbGlkYXRlQ2xlYXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMYml0ZmllbGQg
bWFzaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGlmIChjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkud2ViZ2xDb21wYXRpYmlsaXR5ICYmIChtYXNrICYgR0xfQ09MT1JfQlVG
RkVSX0JJVCkgIT0gMCkKKyAgICB7CisgICAgICAgIGNvbnN0ZXhwciBHTGVudW0gdmFsaWRDb21w
b25lbnRUeXBlc1tdID0ge0dMX0ZMT0FULCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9TSUdORURfTk9S
TUFMSVpFRH07CisKKyAgICAgICAgZm9yIChHTHVpbnQgZHJhd0J1ZmZlcklkeCA9IDA7IGRyYXdC
dWZmZXJJZHggPCBjb250ZXh0LT5nZXRDYXBzKCkubWF4RHJhd0J1ZmZlcnM7CisgICAgICAgICAg
ICAgZHJhd0J1ZmZlcklkeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIVZhbGlkYXRl
V2ViR0xGcmFtZWJ1ZmZlckF0dGFjaG1lbnRDbGVhclR5cGUoCisgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQsIGRyYXdCdWZmZXJJZHgsIHZhbGlkQ29tcG9uZW50VHlwZXMsIEFycmF5U2l6ZSh2
YWxpZENvbXBvbmVudFR5cGVzKSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKQEAgLTIyODIsOCArMjA3NywxNyBAQCBib29sIFZhbGlkYXRlQmluZFRleHR1
cmUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IHRleHR1cmUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVM6Ci0gICAgICAgICAgICBp
ZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5lZ2xJbWFnZUV4dGVybmFsICYmCisKKyAgICAg
ICAgY2FzZSBHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFOgorICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmdldENsaWVudFZlcnNpb24oKSA8IFZlcnNpb24oMywgMSkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
LCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLjEiKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX0VYVEVSTkFMX09FUzoKKyAgICAgICAgICAgIGlmICghY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmVnbEltYWdlRXh0ZXJuYWwgJiYKICAgICAgICAgICAgICAgICAh
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVnbFN0cmVhbUNvbnN1bWVyRXh0ZXJuYWwpCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCkBAIC0zMTMz
LDggKzI5MzcsOSBAQCBib29sIFZhbGlkYXRlUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuKENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgZXhwZWN0ZWRDb21wb25lbnRzID0gNDsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCi0g
ICAgICAgICAgICAgICAgICAgICJGcmFnbWVudCBpbnB1dCB0eXBlIGlzIG5vdCBhIGZsb2F0aW5n
IHBvaW50IHNjYWxhciBvciB2ZWN0b3IuIikpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKAorICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkZyYWdtZW50IGlucHV0IHR5cGUgaXMgbm90
IGEgZmxvYXRpbmcgcG9pbnQgc2NhbGFyIG9yIHZlY3Rvci4iKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlmIChleHBlY3RlZENvbXBvbmVudHMg
IT0gY29tcG9uZW50cyAmJiBnZW5Nb2RlICE9IEdMX05PTkUpCkBAIC0zMTQ4LDcgKzI5NTMsMTAg
QEAgYm9vbCBWYWxpZGF0ZVByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbihDb250ZXh0ICpjb250
ZXh0LAogCiBib29sIFZhbGlkYXRlQ29weVRleHR1cmVDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNvdXJjZUlkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc291cmNlTGV2ZWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFRhcmdldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBkZXN0SWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBkZXN0TGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBkZXN0VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiB1bnBhY2tGbGlwWSwKQEAgLTMyMjYsNyArMzAzNCwxMCBAQCBib29sIFZhbGlk
YXRlQ29weVRleHR1cmVDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAogCiBib29sIFZhbGlkYXRl
Q29weVN1YlRleHR1cmVDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgc291cmNlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBkZXN0SWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBkZXN0TGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB4b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHgsCkBAIC0zMzA5LDcgKzMxMjAsNiBAQCBib29sIFZhbGlkYXRlQ29weVN1YlRleHR1cmVD
SFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgR0xlbnVtIGRlc3RUYXJnZXQgPSBkZXN0LT5nZXRUYXJnZXQoKTsKICAgICBBU1NFUlQo
ZGVzdFRhcmdldCAhPSBHTF9URVhUVVJFX0NVQkVfTUFQKTsKICAgICBpZiAoZGVzdC0+Z2V0V2lk
dGgoc291cmNlVGFyZ2V0LCAwKSA9PSAwIHx8IGRlc3QtPmdldEhlaWdodChzb3VyY2VUYXJnZXQs
IDApID09IDApCiAgICAgewpAQCAtMzQxMywxMyArMzIyMywxOCBAQCBib29sIFZhbGlkYXRlQ3Jl
YXRlU2hhZGVyKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlKQogICAgICAgICBjYXNlIEdM
X1ZFUlRFWF9TSEFERVI6CiAgICAgICAgIGNhc2UgR0xfRlJBR01FTlRfU0hBREVSOgogICAgICAg
ICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBHTF9DT01QVVRFX1NIQURFUjoKLSAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5nZXRHTFZlcnNpb24oKS5pc0VTMzEoKSkKKyAgICAgICAgICAgIGlm
IChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBWZXJzaW9uKDMsIDEpKQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKAorICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX0VOVU0sICJH
TF9DT01QVVRFX1NIQURFUiByZXF1aXJlcyBPcGVuR0wgRVMgMy4xLiIpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKwog
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0sICJVbmtub3duIHNoYWRlciB0eXBlLiIpKTsKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTM1MzAsMjAgKzMzNDUsMjAgQEAgYm9vbCBWYWxp
ZGF0ZUJ1ZmZlclN1YkRhdGEoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVFbmFibGVFeHRlbnNpb25BTkdMRShWYWxpZGF0aW9u
Q29udGV4dCAqY29udGV4dCwgY29uc3QgR0xjaGFyICpuYW1lKQorYm9vbCBWYWxpZGF0ZVJlcXVl
c3RFeHRlbnNpb25BTkdMRShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xjaGFy
ICpuYW1lKQogewotICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLndlYmdsQ29tcGF0
aWJpbGl0eSkKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZXF1ZXN0RXh0ZW5z
aW9uKQogICAgIHsKICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCi0gICAgICAgICAgICBF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkdMX0FOR0xFX3dlYmdsX2NvbXBhdGliaWxpdHkg
aXMgbm90IGF2YWlsYWJsZS4iKSk7CisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIkdMX0FOR0xFX3JlcXVlc3RfZXh0ZW5zaW9uIGlzIG5vdCBhdmFpbGFibGUuIikpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3QgRXh0ZW5zaW9uSW5mb01h
cCAmZXh0ZW5zaW9uSW5mb3MgPSBHZXRFeHRlbnNpb25JbmZvTWFwKCk7CiAgICAgYXV0byBleHRl
bnNpb24gICAgICAgICAgICAgICAgICAgICAgICAgPSBleHRlbnNpb25JbmZvcy5maW5kKG5hbWUp
OwotICAgIGlmIChleHRlbnNpb24gPT0gZXh0ZW5zaW9uSW5mb3MuZW5kKCkgfHwgIWV4dGVuc2lv
bi0+c2Vjb25kLkVuYWJsZWFibGUpCisgICAgaWYgKGV4dGVuc2lvbiA9PSBleHRlbnNpb25JbmZv
cy5lbmQoKSB8fCAhZXh0ZW5zaW9uLT5zZWNvbmQuUmVxdWVzdGFibGUpCiAgICAgewotICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVu
c2lvbiAlcyBpcyBub3QgZW5hYmxlYWJsZS4iLCBuYW1lKSk7CisgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uICVzIGlzIG5v
dCByZXF1ZXN0YWJsZS4iLCBuYW1lKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTM2MTMsNCArMzQyOCwxNDA3IEBAIGJvb2wgVmFsaWRhdGVBdHRhY2hTaGFkZXIoVmFsaWRh
dGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKK2Jvb2wgVmFsaWRhdGVCaW5kQXR0cmliTG9jYXRpb24oVmFsaWRhdGlv
bkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKK3sK
KyAgICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgIHsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIkluZGV4IGV4Y2VlZHMg
TUFYX1ZFUlRFWF9BVFRSSUJTIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgaWYgKHN0cm5jbXAobmFtZSwgImdsXyIsIDMpID09IDApCisgICAgeworICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNhbm5vdCBCaW5k
IGJ1aWx0LWluIGF0dHJpYnV0ZXMiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICByZXR1cm4gR2V0VmFsaWRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pICE9IG51bGxwdHI7
Cit9CisKK2Jvb2wgVmFsaWRhdGVCaW5kQnVmZmVyKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0
LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgYnVmZmVyKQoreworICAgIGlmICghVmFsaWRCdWZmZXJU
YXJnZXQoY29udGV4dCwgdGFyZ2V0KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgQnVmZmVyIHRhcmdldCIpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghY29udGV4dC0+Z2V0R0xTdGF0
ZSgpLmlzQmluZEdlbmVyYXRlc1Jlc291cmNlRW5hYmxlZCgpICYmCisgICAgICAgICFjb250ZXh0
LT5pc0J1ZmZlckdlbmVyYXRlZChidWZmZXIpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJCdWZmZXIgd2FzIG5vdCBnZW5l
cmF0ZWQiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBWYWxpZGF0ZUJpbmRGcmFtZWJ1ZmZlcihWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGZyYW1lYnVmZmVyKQoreworICAgIGlmICgh
VmFsaWRGcmFtZWJ1ZmZlclRhcmdldCh0YXJnZXQpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBGcmFtZWJ1ZmZlciB0
YXJnZXQiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIWNvbnRl
eHQtPmdldEdMU3RhdGUoKS5pc0JpbmRHZW5lcmF0ZXNSZXNvdXJjZUVuYWJsZWQoKSAmJgorICAg
ICAgICAhY29udGV4dC0+aXNGcmFtZWJ1ZmZlckdlbmVyYXRlZChmcmFtZWJ1ZmZlcikpCisgICAg
eworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwgIkZyYW1lYnVmZmVyIHdhcyBub3QgZ2VuZXJhdGVkIikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVCaW5kUmVu
ZGVyYnVmZmVyKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVp
bnQgcmVuZGVyYnVmZmVyKQoreworICAgIGlmICh0YXJnZXQgIT0gR0xfUkVOREVSQlVGRkVSKQor
ICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
LCAiSW52YWxpZCBSZW5kZXJidWZmZXIgdGFyZ2V0IikpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKCFjb250ZXh0LT5nZXRHTFN0YXRlKCkuaXNCaW5kR2VuZXJhdGVz
UmVzb3VyY2VFbmFibGVkKCkgJiYKKyAgICAgICAgIWNvbnRleHQtPmlzUmVuZGVyYnVmZmVyR2Vu
ZXJhdGVkKHJlbmRlcmJ1ZmZlcikpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlJlbmRlcmJ1ZmZlciB3YXMgbm90IGdlbmVy
YXRlZCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitzdGF0aWMgYm9vbCBWYWxpZEJsZW5kRXF1YXRpb25Nb2RlKEdMZW51bSBtb2RlKQor
eworICAgIHN3aXRjaCAobW9kZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRlVOQ19BREQ6Cisg
ICAgICAgIGNhc2UgR0xfRlVOQ19TVUJUUkFDVDoKKyAgICAgICAgY2FzZSBHTF9GVU5DX1JFVkVS
U0VfU1VCVFJBQ1Q6CisgICAgICAgIGNhc2UgR0xfTUlOOgorICAgICAgICBjYXNlIEdMX01BWDoK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitib29sIFZhbGlkYXRlQmxlbmRDb2xvcihWYWxp
ZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMY2xhbXBm
IHJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMY2xhbXBmIGdyZWVuLAorICAgICAgICAg
ICAgICAgICAgICAgICAgR0xjbGFtcGYgYmx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdM
Y2xhbXBmIGFscGhhKQoreworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlQmxl
bmRFcXVhdGlvbihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUpCit7Cisg
ICAgaWYgKCFWYWxpZEJsZW5kRXF1YXRpb25Nb2RlKG1vZGUpKQorICAgIHsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBibGVuZCBl
cXVhdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRlKFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSkKK3sKKyAg
ICBpZiAoIVZhbGlkQmxlbmRFcXVhdGlvbk1vZGUobW9kZVJHQikpCisgICAgeworICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIFJHQiBi
bGVuZCBlcXVhdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlm
ICghVmFsaWRCbGVuZEVxdWF0aW9uTW9kZShtb2RlQWxwaGEpKQorICAgIHsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBhbHBoYSBi
bGVuZCBlcXVhdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlQmxlbmRGdW5jKFZhbGlkYXRpb25Db250ZXh0
ICpjb250ZXh0LCBHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpCit7CisgICAgcmV0dXJu
IFZhbGlkYXRlQmxlbmRGdW5jU2VwYXJhdGUoY29udGV4dCwgc2ZhY3RvciwgZGZhY3Rvciwgc2Zh
Y3RvciwgZGZhY3Rvcik7Cit9CisKK3N0YXRpYyBib29sIFZhbGlkU3JjQmxlbmRGdW5jKEdMZW51
bSBzcmNCbGVuZCkKK3sKKyAgICBzd2l0Y2ggKHNyY0JsZW5kKQorICAgIHsKKyAgICAgICAgY2Fz
ZSBHTF9aRVJPOgorICAgICAgICBjYXNlIEdMX09ORToKKyAgICAgICAgY2FzZSBHTF9TUkNfQ09M
T1I6CisgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19DT0xPUjoKKyAgICAgICAgY2FzZSBH
TF9EU1RfQ09MT1I6CisgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9DT0xPUjoKKyAgICAg
ICAgY2FzZSBHTF9TUkNfQUxQSEE6CisgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19BTFBI
QToKKyAgICAgICAgY2FzZSBHTF9EU1RfQUxQSEE6CisgICAgICAgIGNhc2UgR0xfT05FX01JTlVT
X0RTVF9BTFBIQToKKyAgICAgICAgY2FzZSBHTF9DT05TVEFOVF9DT0xPUjoKKyAgICAgICAgY2Fz
ZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6CisgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRf
QUxQSEE6CisgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOgorICAgICAg
ICBjYXNlIEdMX1NSQ19BTFBIQV9TQVRVUkFURToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQor
CitzdGF0aWMgYm9vbCBWYWxpZERzdEJsZW5kRnVuYyhHTGVudW0gZHN0QmxlbmQsIEdMaW50IGNv
bnRleHRNYWpvclZlcnNpb24pCit7CisgICAgc3dpdGNoIChkc3RCbGVuZCkKKyAgICB7CisgICAg
ICAgIGNhc2UgR0xfWkVSTzoKKyAgICAgICAgY2FzZSBHTF9PTkU6CisgICAgICAgIGNhc2UgR0xf
U1JDX0NPTE9SOgorICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19TUkNfQ09MT1I6CisgICAgICAg
IGNhc2UgR0xfRFNUX0NPTE9SOgorICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19EU1RfQ09MT1I6
CisgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhBOgorICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19T
UkNfQUxQSEE6CisgICAgICAgIGNhc2UgR0xfRFNUX0FMUEhBOgorICAgICAgICBjYXNlIEdMX09O
RV9NSU5VU19EU1RfQUxQSEE6CisgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQ09MT1I6CisgICAg
ICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SOgorICAgICAgICBjYXNlIEdMX0NP
TlNUQU5UX0FMUEhBOgorICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQToK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhBX1NB
VFVSQVRFOgorICAgICAgICAgICAgcmV0dXJuIChjb250ZXh0TWFqb3JWZXJzaW9uID49IDMpOwor
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQor
Citib29sIFZhbGlkYXRlQmxlbmRGdW5jU2VwYXJhdGUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY1JHQiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0UkdCLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBzcmNBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZHN0QWxwaGEpCit7CisgICAgaWYgKCFWYWxpZFNyY0JsZW5kRnVuYyhz
cmNSR0IpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNLCAiSW52YWxpZCBibGVuZCBmdW5jdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGlmICghVmFsaWREc3RCbGVuZEZ1bmMoZHN0UkdCLCBjb250ZXh0
LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGJsZW5kIGZ1bmN0aW9uIikp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZFNyY0JsZW5k
RnVuYyhzcmNBbHBoYSkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGJsZW5kIGZ1bmN0aW9uIikpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZERzdEJsZW5kRnVuYyhkc3RBbHBo
YSwgY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkpKQorICAgIHsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBibGVuZCBm
dW5jdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChjb250
ZXh0LT5nZXRMaW1pdGF0aW9ucygpLm5vU2ltdWx0YW5lb3VzQ29uc3RhbnRDb2xvckFuZEFscGhh
QmxlbmRGdW5jIHx8CisgICAgICAgIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS53ZWJnbENvbXBh
dGliaWxpdHkpCisgICAgeworICAgICAgICBib29sIGNvbnN0YW50Q29sb3JVc2VkID0KKyAgICAg
ICAgICAgIChzcmNSR0IgPT0gR0xfQ09OU1RBTlRfQ09MT1IgfHwgc3JjUkdCID09IEdMX09ORV9N
SU5VU19DT05TVEFOVF9DT0xPUiB8fAorICAgICAgICAgICAgIGRzdFJHQiA9PSBHTF9DT05TVEFO
VF9DT0xPUiB8fCBkc3RSR0IgPT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SKTsKKworICAg
ICAgICBib29sIGNvbnN0YW50QWxwaGFVc2VkID0KKyAgICAgICAgICAgIChzcmNSR0IgPT0gR0xf
Q09OU1RBTlRfQUxQSEEgfHwgc3JjUkdCID09IEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSB8
fAorICAgICAgICAgICAgIGRzdFJHQiA9PSBHTF9DT05TVEFOVF9BTFBIQSB8fCBkc3RSR0IgPT0g
R0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBKTsKKworICAgICAgICBpZiAoY29uc3RhbnRDb2xv
clVzZWQgJiYgY29uc3RhbnRBbHBoYVVzZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0
IGNoYXIgKm1zZzsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkud2Vi
Z2xDb21wYXRpYmlsaXR5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1zZyA9Cisg
ICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHNpbXVsdGFuZW91cyB1c2Ugb2YgR0xfQ09OU1RB
TlRfQUxQSEEvR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBIGFuZCAiCisgICAgICAgICAgICAg
ICAgICAgICJHTF9DT05TVEFOVF9DT0xPUi9HTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IuIjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBtc2cgPQorICAgICAgICAgICAgICAgICAgICAiU2ltdWx0YW5lb3VzIHVzZSBvZiBH
TF9DT05TVEFOVF9BTFBIQS9HTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEgYW5kICIKKyAgICAg
ICAgICAgICAgICAgICAgIkdMX0NPTlNUQU5UX0NPTE9SL0dMX09ORV9NSU5VU19DT05TVEFOVF9D
T0xPUiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgIgorICAgICAgICAgICAgICAgICAgICAiaW1wbGVt
ZW50YXRpb24uIjsKKyAgICAgICAgICAgICAgICBFUlIoKSA8PCBtc2c7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgbXNnKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFN0cmluZyhDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gbmFtZSkKK3sKKyAgICBzd2l0Y2ggKG5hbWUpCisgICAgeworICAg
ICAgICBjYXNlIEdMX1ZFTkRPUjoKKyAgICAgICAgY2FzZSBHTF9SRU5ERVJFUjoKKyAgICAgICAg
Y2FzZSBHTF9WRVJTSU9OOgorICAgICAgICBjYXNlIEdMX1NIQURJTkdfTEFOR1VBR0VfVkVSU0lP
TjoKKyAgICAgICAgY2FzZSBHTF9FWFRFTlNJT05TOgorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFOgorICAgICAgICAgICAg
aWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucmVxdWVzdEV4dGVuc2lvbikKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0sICJJbnZhbGlkIG5hbWUuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0s
ICJJbnZhbGlkIG5hbWUuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlTGluZVdpZHRoKFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHdpZHRoKQoreworICAgIGlmICh3aWR0aCA8PSAwLjBm
IHx8IGlzTmFOKHdpZHRoKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUsICJJbnZhbGlkIHdpZHRoIHZhbHVlLiIpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlk
YXRlVmVydGV4QXR0cmliUG9pbnRlcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiBub3JtYWxpemVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBzdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZv
aWQgKnB0cikKK3sKKyAgICBpZiAoIVZhbGlkYXRlVmVydGV4Rm9ybWF0QmFzZShjb250ZXh0LCBp
bmRleCwgc2l6ZSwgdHlwZSwgZmFsc2UpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmIChzdHJpZGUgPCAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgInN0cmlkZSBjYW5ub3QgYmUgbmVnYXRp
dmUuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgQ2FwcyAm
Y2FwcyA9IGNvbnRleHQtPmdldENhcHMoKTsKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVy
c2lvbigpID49IEVTXzNfMSkKKyAgICB7CisgICAgICAgIGlmIChzdHJpZGUgPiBjYXBzLm1heFZl
cnRleEF0dHJpYlN0cmlkZSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoCisgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgInN0cmlkZSBj
YW5ub3QgYmUgZ3JlYXRlciB0aGFuIE1BWF9WRVJURVhfQVRUUklCX1NUUklERS4iKSk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW5kZXggPj0g
Y2Fwcy5tYXhWZXJ0ZXhBdHRyaWJCaW5kaW5ncykKKyAgICAgICAgeworICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSwgImluZGV4IG11c3QgYmUgc21hbGxlciB0aGFuIE1BWF9WRVJURVhfQVRUUklCX0JJTkRJTkdT
LiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IC8vIFtPcGVuR0wgRVMgMy4wLjJdIFNlY3Rpb24gMi44IHBhZ2UgMjQ6CisgICAgLy8gQW4gSU5W
QUxJRF9PUEVSQVRJT04gZXJyb3IgaXMgZ2VuZXJhdGVkIHdoZW4gYSBub24temVybyB2ZXJ0ZXgg
YXJyYXkgb2JqZWN0CisgICAgLy8gaXMgYm91bmQsIHplcm8gaXMgYm91bmQgdG8gdGhlIEFSUkFZ
X0JVRkZFUiBidWZmZXIgb2JqZWN0IGJpbmRpbmcgcG9pbnQsCisgICAgLy8gYW5kIHRoZSBwb2lu
dGVyIGFyZ3VtZW50IGlzIG5vdCBOVUxMLgorICAgIGJvb2wgbnVsbEJ1ZmZlckFsbG93ZWQgPSBj
b250ZXh0LT5nZXRHTFN0YXRlKCkuYXJlQ2xpZW50QXJyYXlzRW5hYmxlZCgpICYmCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBcnJh
eSgpLT5pZCgpID09IDA7CisgICAgaWYgKCFudWxsQnVmZmVyQWxsb3dlZCAmJiBjb250ZXh0LT5n
ZXRHTFN0YXRlKCkuZ2V0QXJyYXlCdWZmZXJJZCgpID09IDAgJiYgcHRyICE9IG51bGxwdHIpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgIkNsaWVudCBkYXRhIGNhbm5v
dCBiZSB1c2VkIHdpdGggYSBub24tZGVmYXVsdCB2ZXJ0ZXggYXJyYXkgb2JqZWN0LiIpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkud2ViZ2xDb21wYXRpYmlsaXR5KQorICAgIHsKKyAgICAgICAgLy8gV2ViR0wgMS4wIFtT
ZWN0aW9uIDYuMTRdIEZpeGVkIHBvaW50IHN1cHBvcnQKKyAgICAgICAgLy8gVGhlIFdlYkdMIEFQ
SSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBHTF9GSVhFRCBkYXRhIHR5cGUuCisgICAgICAgIGlmICh0
eXBlID09IEdMX0ZJWEVEKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJHTF9GSVhFRCBpcyBub3Qgc3VwcG9ydGVkIGlu
IFdlYkdMLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmICghVmFsaWRhdGVXZWJHTFZlcnRleEF0dHJpYlBvaW50ZXIoY29udGV4dCwgdHlwZSwg
bm9ybWFsaXplZCwgc3RyaWRlLCBwdHIsIGZhbHNlKSkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgVmFsaWRhdGVEZXB0aFJhbmdlZihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xj
bGFtcGYgek5lYXIsIEdMY2xhbXBmIHpGYXIpCit7CisgICAgaWYgKGNvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS53ZWJnbENvbXBhdGliaWxpdHkgJiYgek5lYXIgPiB6RmFyKQorICAgIHsKKyAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJEZXB0
aCBuZWFyID4gZmFyLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZShWYWxpZGF0
aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpCit7
CisgICAgcmV0dXJuIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRlcnNCYXNlKGNv
bnRleHQsIHRhcmdldCwgMCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpOworfQorCitib29s
IFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoVmFsaWRhdGlvbkNv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBoZWlnaHQpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZnJhbWVidWZm
ZXJNdWx0aXNhbXBsZSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAg
ICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJHTF9BTkdMRV9mcmFtZWJ1ZmZl
cl9tdWx0aXNhbXBsZSBub3QgYXZhaWxhYmxlIikpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgLy8gQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgc3RhdGVzIHRoYXQg
dGhlIHZhbHVlIG9mIHNhbXBsZXMgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwKKyAgICAvLyB0
byBNQVhfU0FNUExFU19BTkdMRSAoQ29udGV4dDo6Z2V0Q2FwcygpLm1heFNhbXBsZXMpIG90aGVy
d2lzZSBHTF9JTlZBTElEX09QRVJBVElPTiBpcworICAgIC8vIGdlbmVyYXRlZC4KKyAgICBpZiAo
c3RhdGljX2Nhc3Q8R0x1aW50PihzYW1wbGVzKSA+IGNvbnRleHQtPmdldENhcHMoKS5tYXhTYW1w
bGVzKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQU5HTEVf
ZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgc3RhdGVzIEdMX09VVF9PRl9NRU1PUlkgaXMgZ2VuZXJh
dGVkIG9uIGEgZmFpbHVyZSB0byBjcmVhdGUKKyAgICAvLyB0aGUgc3BlY2lmaWVkIHN0b3JhZ2Uu
IFRoaXMgaXMgZGlmZmVyZW50IHRoYW4gRVMgMy4wIGluIHdoaWNoIGEgc2FtcGxlIG51bWJlciBo
aWdoZXIKKyAgICAvLyB0aGFuIHRoZSBtYXhpbXVtIHNhbXBsZSBudW1iZXIgc3VwcG9ydGVkIGJ5
IHRoaXMgZm9ybWF0IGdlbmVyYXRlcyBhIEdMX0lOVkFMSURfVkFMVUUuCisgICAgLy8gVGhlIFRl
eHR1cmVDYXBzOjpnZXRNYXhTYW1wbGVzIG1ldGhvZCBpcyBvbmx5IGd1YXJlbnRlZWQgdG8gYmUg
dmFsaWQgd2hlbiB0aGUgY29udGV4dCBpcyBFUzMuCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVu
dE1ham9yVmVyc2lvbigpID49IDMpCisgICAgeworICAgICAgICBjb25zdCBUZXh0dXJlQ2FwcyAm
Zm9ybWF0Q2FwcyA9IGNvbnRleHQtPmdldFRleHR1cmVDYXBzKCkuZ2V0KGludGVybmFsZm9ybWF0
KTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PEdMdWludD4oc2FtcGxlcykgPiBmb3JtYXRDYXBz
LmdldE1heFNhbXBsZXMoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfT1VUX09GX01FTU9SWSkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3Rv
cmFnZVBhcmFtZXRlcnNCYXNlKGNvbnRleHQsIHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdpZHRoLCBoZWlnaHQpOworfQorCitib29sIFZhbGlkYXRlQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCkKK3sKKyAgICBpZiAo
IVZhbGlkRnJhbWVidWZmZXJUYXJnZXQodGFyZ2V0KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgRnJhbWVidWZmZXIg
dGFyZ2V0IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVDbGVhckNvbG9yKFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xjbGFtcGYgcmVkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgR0xjbGFtcGYgZ3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICBHTGNs
YW1wZiBibHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xjbGFtcGYgYWxwaGEpCit7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVDbGVhckRlcHRoZihWYWxpZGF0aW9u
Q29udGV4dCAqY29udGV4dCwgR0xjbGFtcGYgZGVwdGgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgVmFsaWRhdGVDbGVhclN0ZW5jaWwoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQs
IEdMaW50IHMpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVDb2xvck1h
c2soVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiByZWQsCisgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBncmVlbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGJsdWUsCisgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiBhbHBoYSkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxp
ZGF0ZUNvbXBpbGVTaGFkZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBzaGFk
ZXIpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVDcmVhdGVQcm9ncmFt
KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0KQoreworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIFZhbGlkYXRlQ3VsbEZhY2UoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSBt
b2RlKQoreworICAgIHN3aXRjaCAobW9kZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRlJPTlQ6
CisgICAgICAgIGNhc2UgR0xfQkFDSzoKKyAgICAgICAgY2FzZSBHTF9GUk9OVF9BTkRfQkFDSzoK
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGN1bGwgZmFj
ZSBwYXJhbWV0ZXIiKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVEZWxldGVQcm9ncmFtKFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSkKK3sKKyAgICBpZiAocHJvZ3JhbSA9PSAw
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghY29udGV4
dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKSkKKyAgICB7CisgICAgICAgIGlmIChjb250ZXh0LT5nZXRT
aGFkZXIocHJvZ3JhbSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKAorICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiU2hhZGVy
IGhhbmRsZSBwYXNzZWQgdG8gRGVsZXRlUHJvZ3JhbSIpKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJJbnZhbGlkIHByb2dy
YW0gaGFuZGxlIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVEZWxldGVTaGFkZXIoVmFs
aWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBzaGFkZXIpCit7CisgICAgaWYgKHNoYWRl
ciA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICgh
Y29udGV4dC0+Z2V0U2hhZGVyKHNoYWRlcikpCisgICAgeworICAgICAgICBpZiAoY29udGV4dC0+
Z2V0UHJvZ3JhbShzaGFkZXIpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcigKKyAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlBy
b2dyYW0gaGFuZGxlIHBhc3NlZCB0byBEZWxldGVTaGFkZXIiKSk7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiSW52YWxpZCBz
aGFkZXIgaGFuZGxlIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVEZXB0aEZ1bmMoVmFs
aWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmdW5jKQoreworICAgIHN3aXRjaCAoZnVu
YykKKyAgICB7CisgICAgICAgIGNhc2UgR0xfTkVWRVI6CisgICAgICAgIGNhc2UgR0xfQUxXQVlT
OgorICAgICAgICBjYXNlIEdMX0xFU1M6CisgICAgICAgIGNhc2UgR0xfTEVRVUFMOgorICAgICAg
ICBjYXNlIEdMX0VRVUFMOgorICAgICAgICBjYXNlIEdMX0dSRUFURVI6CisgICAgICAgIGNhc2Ug
R0xfR0VRVUFMOgorICAgICAgICBjYXNlIEdMX05PVEVRVUFMOgorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgZGVwdGggZnVuY3Rpb24iKSk7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
VmFsaWRhdGVEZXB0aE1hc2soVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMYm9vbGVhbiBm
bGFnKQoreworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlRGV0YWNoU2hhZGVy
KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRl
cikKK3sKKyAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9ncmFtKGNvbnRl
eHQsIHByb2dyYW0pOworICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBTaGFkZXIgKnNoYWRlck9iamVjdCA9IEdldFZhbGlk
U2hhZGVyKGNvbnRleHQsIHNoYWRlcik7CisgICAgaWYgKCFzaGFkZXJPYmplY3QpCisgICAgewor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgU2hhZGVyICphdHRhY2hl
ZFNoYWRlciA9IG51bGxwdHI7CisKKyAgICBzd2l0Y2ggKHNoYWRlck9iamVjdC0+Z2V0VHlwZSgp
KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9WRVJURVhfU0hBREVSOgorICAgICAgICB7CisgICAg
ICAgICAgICBhdHRhY2hlZFNoYWRlciA9IHByb2dyYW1PYmplY3QtPmdldEF0dGFjaGVkVmVydGV4
U2hhZGVyKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdM
X0ZSQUdNRU5UX1NIQURFUjoKKyAgICAgICAgeworICAgICAgICAgICAgYXR0YWNoZWRTaGFkZXIg
PSBwcm9ncmFtT2JqZWN0LT5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBVVEVfU0hBREVSOgorICAg
ICAgICB7CisgICAgICAgICAgICBhdHRhY2hlZFNoYWRlciA9IHByb2dyYW1PYmplY3QtPmdldEF0
dGFjaGVkQ29tcHV0ZVNoYWRlcigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGF0dGFjaGVkU2hhZGVyICE9IHNoYWRlck9i
amVjdCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAiQ2Fubm90IGRldGFjaCBub24tYXR0YWNoZWQgc2hhZGVyLiIpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IFZhbGlkYXRlRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaW5kZXgpCit7CisgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklC
UykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUsICJBdHRyaWIgYXJyYXkgaW5kZXggb3V0IG9mIHJhbmdlIikpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IGluZGV4KQoreworICAgIGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgewor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiQXR0
cmliIGFycmF5IGluZGV4IG91dCBvZiByYW5nZSIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlRmluaXNoKFZhbGlk
YXRpb25Db250ZXh0ICpjb250ZXh0KQoreworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZh
bGlkYXRlRmx1c2goVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQpCit7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVGcm9udEZhY2UoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBtb2RlKQoreworICAgIHN3aXRjaCAobW9kZSkKKyAgICB7CisgICAgICAgIGNh
c2UgR0xfQ1c6CisgICAgICAgIGNhc2UgR0xfQ0NXOgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0sICJJbnZhbGlkIG1vZGUgZm9yIEZyb250RmFjZSIpKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxp
ZGF0ZUdldEFjdGl2ZUF0dHJpYihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBidWZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpzaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMY2hhciAqbmFtZSkKK3sKKyAgICBpZiAoYnVmc2l6ZSA8IDApCisgICAgeworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiYnVmc2l6
ZSBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9ncmFtKGNvbnRleHQs
IHByb2dyYW0pOworCisgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChpbmRleCA+PSBzdGF0aWNfY2FzdDxHTHVpbnQ+
KHByb2dyYW1PYmplY3QtPmdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KCkpKQorICAgIHsKKyAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZB
TFVFLCAiaW5kZXggZXhlZWRzIHByb2dyYW0gYWN0aXZlIGF0dHJpYnV0ZSBjb3VudC4iKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9v
bCBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm0oVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpzaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICp0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lKQoreworICAgIGlmIChidWZzaXplIDwg
MCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUsICJidWZzaXplIG11c3QgYmUgbm9uLW5lZ2F0aXZlLiIpKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFBy
b2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CisKKyAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGluZGV4ID49IHN0YXRp
Y19jYXN0PEdMdWludD4ocHJvZ3JhbU9iamVjdC0+Z2V0QWN0aXZlVW5pZm9ybUNvdW50KCkpKQor
ICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihH
TF9JTlZBTElEX1ZBTFVFLCAiaW5kZXggZXhjZWVkcyBwcm9ncmFtIGFjdGl2ZSB1bmlmb3JtIGNv
dW50LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFZhbGlkYXRlR2V0QXR0YWNoZWRTaGFkZXJzKFZhbGlkYXRpb25Db250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3Jh
bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBtYXhjb3VudCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqc2hhZGVycykKK3sKKyAgICBpZiAobWF4Y291
bnQgPCAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSwgIm1heCBjb3VudCBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4iKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0
VmFsaWRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pOworCisgICAgaWYgKCFwcm9ncmFtT2JqZWN0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFZhbGlkYXRlR2V0QXR0cmliTG9jYXRpb24oVmFsaWRhdGlvbkNvbnRleHQg
KmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpCit7CisgICAgUHJv
Z3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtKTsK
KworICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBpZiAoIXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkpCisgICAgeworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgInBy
b2dyYW0gbm90IGxpbmtlZC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldEJvb2xlYW52KFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1zKQoreworICAg
IEdMZW51bSBuYXRpdmVUeXBlOworICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXMgPSAwOworICAg
IHJldHVybiBWYWxpZGF0ZVN0YXRlUXVlcnkoY29udGV4dCwgcG5hbWUsICZuYXRpdmVUeXBlLCAm
bnVtUGFyYW1zKTsKK30KKworYm9vbCBWYWxpZGF0ZUdldEVycm9yKFZhbGlkYXRpb25Db250ZXh0
ICpjb250ZXh0KQoreworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlR2V0Rmxv
YXR2KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBh
cmFtcykKK3sKKyAgICBHTGVudW0gbmF0aXZlVHlwZTsKKyAgICB1bnNpZ25lZCBpbnQgbnVtUGFy
YW1zID0gMDsKKyAgICByZXR1cm4gVmFsaWRhdGVTdGF0ZVF1ZXJ5KGNvbnRleHQsIHBuYW1lLCAm
bmF0aXZlVHlwZSwgJm51bVBhcmFtcyk7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlZ2VydihW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQor
eworICAgIEdMZW51bSBuYXRpdmVUeXBlOworICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXMgPSAw
OworICAgIHJldHVybiBWYWxpZGF0ZVN0YXRlUXVlcnkoY29udGV4dCwgcG5hbWUsICZuYXRpdmVU
eXBlLCAmbnVtUGFyYW1zKTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1JbmZvTG9nKFZh
bGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICppbmZvbG9nKQoreworICAg
IGlmIChidWZzaXplIDwgMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUsICJidWZzaXplIG11c3QgYmUgbm9uLW5lZ2F0aXZlLiIpKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFByb2dyYW0gKnByb2dyYW1PYmpl
Y3QgPSBHZXRWYWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CisgICAgaWYgKCFwcm9ncmFt
T2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIFZhbGlkYXRlR2V0U2hhZGVySW5mb0xvZyhWYWxpZGF0aW9uQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzaGFk
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZnNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGNoYXIgKmluZm9sb2cpCit7CisgICAgaWYgKGJ1ZnNpemUgPCAw
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSwgImJ1ZnNpemUgbXVzdCBiZSBub24tbmVnYXRpdmUuIikpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgU2hhZGVyICpzaGFkZXJPYmplY3QgPSBHZXRWYWxpZFNoYWRl
cihjb250ZXh0LCBzaGFkZXIpOworICAgIGlmICghc2hhZGVyT2JqZWN0KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZh
bGlkYXRlR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2hhZGVydHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByZWNpc2lv
bnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpyYW5n
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnByZWNpc2lv
bikKK3sKKyAgICBzd2l0Y2ggKHNoYWRlcnR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1ZF
UlRFWF9TSEFERVI6CisgICAgICAgIGNhc2UgR0xfRlJBR01FTlRfU0hBREVSOgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQ09NUFVURV9TSEFERVI6CisgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgImNvbXB1dGUgc2hhZGVyIHByZWNpc2lvbiBub3QgeWV0IGltcGxlbWVudGVkLiIp
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgImludmFsaWQg
c2hhZGVyIHR5cGUuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHN3aXRjaCAocHJlY2lzaW9udHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfTE9XX0ZMT0FU
OgorICAgICAgICBjYXNlIEdMX01FRElVTV9GTE9BVDoKKyAgICAgICAgY2FzZSBHTF9ISUdIX0ZM
T0FUOgorICAgICAgICBjYXNlIEdMX0xPV19JTlQ6CisgICAgICAgIGNhc2UgR0xfTUVESVVNX0lO
VDoKKyAgICAgICAgY2FzZSBHTF9ISUdIX0lOVDoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0sICJpbnZhbGlkIHByZWNpc2lvbiB0eXBlLiIpKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0
ZUdldFNoYWRlclNvdXJjZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHNoYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqc291cmNl
KQoreworICAgIGlmIChidWZzaXplIDwgMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJidWZzaXplIG11c3QgYmUgbm9uLW5lZ2F0
aXZlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFNoYWRlciAqc2hh
ZGVyT2JqZWN0ID0gR2V0VmFsaWRTaGFkZXIoY29udGV4dCwgc2hhZGVyKTsKKyAgICBpZiAoIXNo
YWRlck9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1Mb2NhdGlvbihWYWxpZGF0
aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciAqbmFtZSkK
K3sKKyAgICBpZiAoc3Ryc3RyKG5hbWUsICJnbF8iKSA9PSBuYW1lKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRW
YWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CisKKyAgICBpZiAoIXByb2dyYW1PYmplY3Qp
CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFwcm9ncmFt
T2JqZWN0LT5pc0xpbmtlZCgpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJwcm9ncmFtIGlzIG5vdCBsaW5rZWQuIikpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgVmFsaWRhdGVIaW50KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0
LCBHTGVudW0gbW9kZSkKK3sKKyAgICBzd2l0Y2ggKG1vZGUpCisgICAgeworICAgICAgICBjYXNl
IEdMX0ZBU1RFU1Q6CisgICAgICAgIGNhc2UgR0xfTklDRVNUOgorICAgICAgICBjYXNlIEdMX0RP
TlRfQ0FSRToKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJpbnZhbGlk
IGhpbnQgbW9kZS4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
c3dpdGNoICh0YXJnZXQpCisgICAgeworICAgICAgICBjYXNlIEdMX0dFTkVSQVRFX01JUE1BUF9I
SU5UOgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFE
RVJfREVSSVZBVElWRV9ISU5UX09FUzoKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnN0YW5kYXJkRGVyaXZhdGl2ZXMpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiaGludCByZXF1aXJlcyBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2
ZXMuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJpbnZhbGlkIGhpbnQgdGFyZ2V0
LiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBWYWxpZGF0ZUlzQnVmZmVyKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgYnVmZmVyKQoreworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRl
SXNGcmFtZWJ1ZmZlcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGZyYW1lYnVm
ZmVyKQoreworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlSXNQcm9ncmFtKFZh
bGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSkKK3sKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUlzUmVuZGVyYnVmZmVyKFZhbGlkYXRpb25Db250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKQoreworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIFZhbGlkYXRlSXNTaGFkZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBzaGFkZXIpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVJc1RleHR1
cmUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCB0ZXh0dXJlKQoreworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlUGl4ZWxTdG9yZWkoVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCit7CisgICAgaWYgKGNvbnRl
eHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
cG5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgR0xfVU5QQUNLX0lNQUdFX0hFSUdI
VDoKKyAgICAgICAgICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfSU1BR0VTOgorICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgY2FzZSBHTF9VTlBBQ0tfUk9X
X0xFTkdUSDoKKyAgICAgICAgICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfUk9XUzoKKyAgICAgICAg
ICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfUElYRUxTOgorICAgICAgICAgICAgICAgIGlmICghY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnVucGFja1N1YmltYWdlKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgR0xfUEFD
S19ST1dfTEVOR1RIOgorICAgICAgICAgICAgY2FzZSBHTF9QQUNLX1NLSVBfUk9XUzoKKyAgICAg
ICAgICAgIGNhc2UgR0xfUEFDS19TS0lQX1BJWEVMUzoKKyAgICAgICAgICAgICAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5wYWNrU3ViaW1hZ2UpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlm
IChwYXJhbSA8IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX1ZBTFVFLCAiQ2Fubm90IHVzZSBuZWdhdGl2ZSB2YWx1ZXMgaW4gUGl4ZWxTdG9y
ZWkiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHBuYW1l
KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlBBQ0tfQUxJR05NRU5UOgorICAgICAgICAgICAg
aWYgKHBhcmFtICE9IDEgJiYgcGFyYW0gIT0gMiAmJiBwYXJhbSAhPSA0ICYmIHBhcmFtICE9IDgp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfUEFDS19B
TElHTk1FTlQ6CisgICAgICAgICAgICBpZiAocGFyYW0gIT0gMSAmJiBwYXJhbSAhPSAyICYmIHBh
cmFtICE9IDQgJiYgcGFyYW0gIT0gOCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBHTF9QQUNLX1JFVkVSU0VfUk9XX09SREVSX0FOR0xFOgorICAgICAgICBj
YXNlIEdMX1VOUEFDS19ST1dfTEVOR1RIOgorICAgICAgICBjYXNlIEdMX1VOUEFDS19JTUFHRV9I
RUlHSFQ6CisgICAgICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfSU1BR0VTOgorICAgICAgICBjYXNl
IEdMX1VOUEFDS19TS0lQX1JPV1M6CisgICAgICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfUElYRUxT
OgorICAgICAgICBjYXNlIEdMX1BBQ0tfUk9XX0xFTkdUSDoKKyAgICAgICAgY2FzZSBHTF9QQUNL
X1NLSVBfUk9XUzoKKyAgICAgICAgY2FzZSBHTF9QQUNLX1NLSVBfUElYRUxTOgorICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlUG9seWdvbk9m
ZnNldChWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQg
dW5pdHMpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVSZWxlYXNlU2hh
ZGVyQ29tcGlsZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQpCit7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVTYW1wbGVDb3ZlcmFnZShWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwgR0xjbGFtcGYgdmFsdWUsIEdMYm9vbGVhbiBpbnZlcnQpCit7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVTY2lzc29yKFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sK
KyAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDApCisgICAgeworICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJTY2lz
c29yIHdpZHRoIGFuZCBoZWlnaHQgbXVzdCBiZSBub24tbmVnYXRpdmUuIikpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRh
dGVTaGFkZXJCaW5hcnkoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0x1aW50ICpzaGFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmluYXJ5
Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmJpbmFyeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgpCit7CisgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8R0xlbnVtPiAmc2hhZGVyQmluYXJ5Rm9ybWF0cyA9IGNvbnRleHQtPmdldENh
cHMoKS5zaGFkZXJCaW5hcnlGb3JtYXRzOworICAgIGlmIChzdGQ6OmZpbmQoc2hhZGVyQmluYXJ5
Rm9ybWF0cy5iZWdpbigpLCBzaGFkZXJCaW5hcnlGb3JtYXRzLmVuZCgpLCBiaW5hcnlmb3JtYXQp
ID09CisgICAgICAgIHNoYWRlckJpbmFyeUZvcm1hdHMuZW5kKCkpCisgICAgeworICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHNoYWRl
ciBiaW5hcnkgZm9ybWF0LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlU2hhZGVyU291cmNlKFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2hhZGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKmNvbnN0ICpzdHJpbmcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMaW50ICpsZW5ndGgpCit7CisgICAgaWYgKGNvdW50IDwgMCkK
KyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUsICJDb3VudCBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBTaGFkZXIgKnNoYWRlck9iamVjdCA9IEdldFZhbGlkU2hhZGVyKGNv
bnRleHQsIHNoYWRlcik7CisgICAgaWYgKCFzaGFkZXJPYmplY3QpCisgICAgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRh
dGVTdGVuY2lsRnVuYyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZ1bmMsIEdM
aW50IHJlZiwgR0x1aW50IG1hc2spCit7CisgICAgaWYgKCFJc1ZhbGlkU3RlbmNpbEZ1bmMoZnVu
YykpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0sICJJbnZhbGlkIHN0ZW5jaWwgZnVuY3Rpb24uIikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVTdGVuY2ls
RnVuY1NlcGFyYXRlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHJlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrKQor
eworICAgIGlmICghSXNWYWxpZFN0ZW5jaWxGYWNlKGZhY2UpKQorICAgIHsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBzdGVuY2ls
IGZhY2UuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFJc1Zh
bGlkU3RlbmNpbEZ1bmMoZnVuYykpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHN0ZW5jaWwgZnVuY3Rpb24uIikpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgVmFsaWRhdGVTdGVuY2lsTWFzayhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IG1hc2spCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVTdGVuY2lsTWFz
a1NlcGFyYXRlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gZmFjZSwgR0x1aW50
IG1hc2spCit7CisgICAgaWYgKCFJc1ZhbGlkU3RlbmNpbEZhY2UoZmFjZSkpCisgICAgeworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlk
IHN0ZW5jaWwgZmFjZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZVN0ZW5jaWxPcChWYWxpZGF0aW9uQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKQorewor
ICAgIGlmICghSXNWYWxpZFN0ZW5jaWxPcChmYWlsKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgc3RlbmNpbCBmYWls
IG9wLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghSXNWYWxp
ZFN0ZW5jaWxPcCh6ZmFpbCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHN0ZW5jaWwgeiBmYWlsIG9wLiIpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghSXNWYWxpZFN0ZW5jaWxPcCh6
cGFzcykpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0sICJJbnZhbGlkIHN0ZW5jaWwgeiBwYXNzIG9wLiIpKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlU3Rl
bmNpbE9wU2VwYXJhdGUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGZhaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHpmYWlsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB6cGFzcykKK3sK
KyAgICBpZiAoIUlzVmFsaWRTdGVuY2lsRmFjZShmYWNlKSkKKyAgICB7CisgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgc3RlbmNpbCBm
YWNlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxp
ZGF0ZVN0ZW5jaWxPcChjb250ZXh0LCBmYWlsLCB6ZmFpbCwgenBhc3MpOworfQorCitib29sIFZh
bGlkYXRlVW5pZm9ybTFmKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlv
biwgR0xmbG9hdCB4KQoreworICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xf
RkxPQVQsIGxvY2F0aW9uLCAxKTsKK30KKworYm9vbCBWYWxpZGF0ZVVuaWZvcm0xZnYoVmFsaWRh
dGlvbkNvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGZsb2F0ICp2KQoreworICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xf
RkxPQVQsIGxvY2F0aW9uLCBjb3VudCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMmYoVmFs
aWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxv
YXQgeSkKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVVbmlmb3JtKGNvbnRleHQsIEdMX0ZMT0FUX1ZF
QzIsIGxvY2F0aW9uLCAxKTsKK30KKworYm9vbCBWYWxpZGF0ZVVuaWZvcm0yZnYoVmFsaWRhdGlv
bkNvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
TGZsb2F0ICp2KQoreworICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfRkxP
QVRfVkVDMiwgbG9jYXRpb24sIGNvdW50KTsKK30KKworYm9vbCBWYWxpZGF0ZVVuaWZvcm0yaShW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHgsIEdMaW50
IHkpCit7CisgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybShjb250ZXh0LCBHTF9JTlRfVkVDMiwg
bG9jYXRpb24sIDEpOworfQorCitib29sIFZhbGlkYXRlVW5pZm9ybTJpdihWYWxpZGF0aW9uQ29u
dGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50
ICp2KQoreworICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfSU5UX1ZFQzIs
IGxvY2F0aW9uLCBjb3VudCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtM2YoVmFsaWRhdGlv
bkNvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwg
R0xmbG9hdCB6KQoreworICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfRkxP
QVRfVkVDMywgbG9jYXRpb24sIDEpOworfQorCitib29sIFZhbGlkYXRlVW5pZm9ybTNmdihWYWxp
ZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMZmxvYXQgKnYpCit7CisgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybShjb250ZXh0LCBH
TF9GTE9BVF9WRUMzLCBsb2NhdGlvbiwgY291bnQpOworfQorCitib29sIFZhbGlkYXRlVW5pZm9y
bTNpKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xpbnQgeCwg
R0xpbnQgeSwgR0xpbnQgeikKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVVbmlmb3JtKGNvbnRleHQs
IEdMX0lOVF9WRUMzLCBsb2NhdGlvbiwgMSk7Cit9CisKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtM2l2
KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0xpbnQgKnYpCit7CisgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybShjb250ZXh0
LCBHTF9JTlRfVkVDMywgbG9jYXRpb24sIGNvdW50KTsKK30KKworYm9vbCBWYWxpZGF0ZVVuaWZv
cm00ZihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCB5LAorICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0IHosCisgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdykKK3sKKyAgICByZXR1cm4g
VmFsaWRhdGVVbmlmb3JtKGNvbnRleHQsIEdMX0ZMT0FUX1ZFQzQsIGxvY2F0aW9uLCAxKTsKK30K
KworYm9vbCBWYWxpZGF0ZVVuaWZvcm00ZnYoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQoreworICAgIHJl
dHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfRkxPQVRfVkVDNCwgbG9jYXRpb24sIGNv
dW50KTsKK30KKworYm9vbCBWYWxpZGF0ZVVuaWZvcm00aShWYWxpZGF0aW9uQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHosCisgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHcpCit7CisgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybShjb250ZXh0LCBHTF9JTlRfVkVD
NCwgbG9jYXRpb24sIDEpOworfQorCitib29sIFZhbGlkYXRlVW5pZm9ybTRpdihWYWxpZGF0aW9u
Q29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
aW50ICp2KQoreworICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfSU5UX1ZF
QzQsIGxvY2F0aW9uLCBjb3VudCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4MmZ2
KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9z
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQor
eworICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgoY29udGV4dCwgR0xfRkxPQVRfTUFU
MiwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UpOworfQorCitib29sIFZhbGlkYXRlVW5pZm9y
bU1hdHJpeDNmdihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0
ICp2YWx1ZSkKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVVbmlmb3JtTWF0cml4KGNvbnRleHQsIEdM
X0ZMT0FUX01BVDMsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlKTsKK30KKworYm9vbCBWYWxp
ZGF0ZVVuaWZvcm1NYXRyaXg0ZnYoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xmbG9hdCAqdmFsdWUpCit7CisgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybU1hdHJpeChj
b250ZXh0LCBHTF9GTE9BVF9NQVQ0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSk7Cit9CisK
K2Jvb2wgVmFsaWRhdGVWYWxpZGF0ZVByb2dyYW0oVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQs
IEdMdWludCBwcm9ncmFtKQoreworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxp
ZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CisKKyAgICBpZiAoIXByb2dyYW1PYmplY3QpCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJbmRleChWYWxpZGF0aW9uQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGluZGV4KQoreworICAgIGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJ
QlMpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFLCAiVmVydGV4IGF0dHJpYiBpbmRleCBvdXQgb2YgcmFuZ2UuIikpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRh
dGVWZXJ0ZXhBdHRyaWIxZihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4
LCBHTGZsb2F0IHgpCit7CisgICAgcmV0dXJuIFZhbGlkYXRlVmVydGV4QXR0cmliSW5kZXgoY29u
dGV4dCwgaW5kZXgpOworfQorCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliMWZ2KFZhbGlkYXRp
b25Db250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykK
K3sKKyAgICByZXR1cm4gVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJbmRleChjb250ZXh0LCBpbmRleCk7
Cit9CisKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIyZihWYWxpZGF0aW9uQ29udGV4dCAqY29u
dGV4dCwgR0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSkKK3sKKyAgICByZXR1cm4g
VmFsaWRhdGVWZXJ0ZXhBdHRyaWJJbmRleChjb250ZXh0LCBpbmRleCk7Cit9CisKK2Jvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWIyZnYoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBp
bmRleCwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKQoreworICAgIHJldHVybiBWYWxpZGF0ZVZlcnRl
eEF0dHJpYkluZGV4KGNvbnRleHQsIGluZGV4KTsKK30KKworYm9vbCBWYWxpZGF0ZVZlcnRleEF0
dHJpYjNmKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0
IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZmxvYXQgeikKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVWZXJ0ZXhB
dHRyaWJJbmRleChjb250ZXh0LCBpbmRleCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRy
aWIzZnYoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xm
bG9hdCAqdmFsdWVzKQoreworICAgIHJldHVybiBWYWxpZGF0ZVZlcnRleEF0dHJpYkluZGV4KGNv
bnRleHQsIGluZGV4KTsKK30KKworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRmKFZhbGlkYXRp
b25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBp
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZmxvYXQgeiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHcpCit7Cisg
ICAgcmV0dXJuIFZhbGlkYXRlVmVydGV4QXR0cmliSW5kZXgoY29udGV4dCwgaW5kZXgpOworfQor
Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliNGZ2KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKK3sKKyAgICByZXR1cm4gVmFs
aWRhdGVWZXJ0ZXhBdHRyaWJJbmRleChjb250ZXh0LCBpbmRleCk7Cit9CisKK2Jvb2wgVmFsaWRh
dGVWaWV3cG9ydChWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xpbnQgeCwgR0xpbnQgeSwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7CisgICAgaWYgKHdpZHRoIDwgMCB8fCBo
ZWlnaHQgPCAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAg
ICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiVmlld3BvcnQgd2lkdGggYW5kIGhlaWdodCBt
dXN0IGJlIG5vbi1uZWdhdGl2ZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZURyYXdBcnJheXMoVmFsaWRhdGlv
bkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3Vu
dCkKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVEcmF3QXJyYXlzQ29tbW9uKGNvbnRleHQsIG1vZGUs
IGZpcnN0LCBjb3VudCwgMSk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBnbApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzIuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMyLmgKaW5kZXgg
NjVmZDMwZWI3MzhiNjRlZjA2NTEyZDVjNTdhMjJhOWEwNTkwNTIxNC4uNzEwN2RkODQwOWZmMzkz
ZmY4ZTIyZWRiZDViMmViNzkzNDM2YzZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMi5oCkBAIC0xOCwzNSArMTgsNiBAQCBj
bGFzcyBDb250ZXh0OwogY2xhc3MgVmFsaWRhdGlvbkNvbnRleHQ7CiBjbGFzcyBUZXh0dXJlOwog
Ci1ib29sIFZhbGlkYXRlRVMyVGV4SW1hZ2VQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNDb21wcmVzc2VkLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIGlzU3ViSW1hZ2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHlvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBi
b3JkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwaXhlbHMpOwotCi1ib29s
IFZhbGlkYXRlRVMyQ29weVRleEltYWdlUGFyYW1ldGVycyhWYWxpZGF0aW9uQ29udGV4dCAqY29u
dGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTdWJJ
bWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZz
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBib3JkZXIpOwotCiBib29sIFZhbGlkYXRlRVMy
VGV4U3RvcmFnZVBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xz
aXplaSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVp
Z2h0KTsKIApAQCAtMzE4LDcgKzI4OSwxMCBAQCBib29sIFZhbGlkYXRlUHJvZ3JhbVBhdGhGcmFn
bWVudElucHV0R2VuKENvbnRleHQgKmNvbnRleHQsCiAKIGJvb2wgVmFsaWRhdGVDb3B5VGV4dHVy
ZUNIUk9NSVVNKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgc291cmNlSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBzb3VyY2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBkZXN0VGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRl
c3RJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRlc3RMZXZlbCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsRm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RUeXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja0ZsaXBZLApAQCAtMzI2
LDcgKzMwMCwxMCBAQCBib29sIFZhbGlkYXRlQ29weVRleHR1cmVDSFJPTUlVTShDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFj
a1VubXVsdGlwbHlBbHBoYSk7CiBib29sIFZhbGlkYXRlQ29weVN1YlRleHR1cmVDSFJPTUlVTShD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
c291cmNlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
ZGVzdFRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBk
ZXN0SWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkZXN0TGV2
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCkBAIC0zNTAsMTAgKzMyNywy
MzYgQEAgYm9vbCBWYWxpZGF0ZUJ1ZmZlclN1YkRhdGEoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmRhdGEpOwogCi1ib29sIFZhbGlkYXRl
RW5hYmxlRXh0ZW5zaW9uQU5HTEUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIGNvbnN0IEdM
Y2hhciAqbmFtZSk7Citib29sIFZhbGlkYXRlUmVxdWVzdEV4dGVuc2lvbkFOR0xFKFZhbGlkYXRp
b25Db250ZXh0ICpjb250ZXh0LCBjb25zdCBHTGNoYXIgKm5hbWUpOwogCiBib29sIFZhbGlkYXRl
QWN0aXZlVGV4dHVyZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRleHR1cmUp
OwogYm9vbCBWYWxpZGF0ZUF0dGFjaFNoYWRlcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwg
R0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIpOworYm9vbCBWYWxpZGF0ZUJpbmRBdHRyaWJM
b2NhdGlvbihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xjaGFyICpuYW1lKTsKK2Jvb2wgVmFsaWRhdGVCaW5kQnVmZmVyKFZhbGlkYXRpb25Db250ZXh0
ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgYnVmZmVyKTsKK2Jvb2wgVmFsaWRhdGVC
aW5kRnJhbWVidWZmZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQs
IEdMdWludCBmcmFtZWJ1ZmZlcik7Citib29sIFZhbGlkYXRlQmluZFJlbmRlcmJ1ZmZlcihWYWxp
ZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IHJlbmRlcmJ1ZmZl
cik7Citib29sIFZhbGlkYXRlQmxlbmRDb2xvcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdMY2xhbXBmIHJlZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEdMY2xhbXBmIGdyZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xjbGFtcGYg
Ymx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMY2xhbXBmIGFscGhhKTsKK2Jvb2wgVmFs
aWRhdGVCbGVuZEVxdWF0aW9uKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9k
ZSk7Citib29sIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRlKFZhbGlkYXRpb25Db250ZXh0
ICpjb250ZXh0LCBHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSk7Citib29sIFZhbGlk
YXRlQmxlbmRGdW5jKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gc2ZhY3Rvciwg
R0xlbnVtIGRmYWN0b3IpOworYm9vbCBWYWxpZGF0ZUJsZW5kRnVuY1NlcGFyYXRlKFZhbGlkYXRp
b25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBzcmNSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRzdFJHQiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjQWxwaGEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRzdEFscGhhKTsKKworYm9vbCBWYWxpZGF0
ZUdldFN0cmluZyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbmFtZSk7Citib29sIFZhbGlkYXRl
TGluZVdpZHRoKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGZsb2F0IHdpZHRoKTsKK2Jv
b2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQb2ludGVyKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIG5vcm1hbGl6ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMdm9pZCAqcHRyKTsKKworYm9vbCBWYWxpZGF0ZURlcHRoUmFuZ2VmKFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LCBHTGNsYW1wZiB6TmVhciwgR0xjbGFtcGYgekZhcik7Citib29sIFZh
bGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpOworYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KTsKKworYm9vbCBW
YWxpZGF0ZUNoZWNrRnJhbWVidWZmZXJTdGF0dXMoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQs
IEdMZW51bSB0YXJnZXQpOworYm9vbCBWYWxpZGF0ZUNsZWFyQ29sb3IoVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGNsYW1wZiByZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICBHTGNsYW1wZiBncmVlbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEdMY2xhbXBmIGJsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGNsYW1wZiBhbHBo
YSk7Citib29sIFZhbGlkYXRlQ2xlYXJEZXB0aGYoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQs
IEdMY2xhbXBmIGRlcHRoKTsKK2Jvb2wgVmFsaWRhdGVDbGVhclN0ZW5jaWwoVmFsaWRhdGlvbkNv
bnRleHQgKmNvbnRleHQsIEdMaW50IHMpOworYm9vbCBWYWxpZGF0ZUNvbG9yTWFzayhWYWxpZGF0
aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHJl
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGdyZWVuLAorICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gYmx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIGFscGhhKTsKK2Jvb2wgVmFsaWRhdGVDb21waWxlU2hhZGVyKFZhbGlkYXRpb25Db250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgc2hhZGVyKTsKK2Jvb2wgVmFsaWRhdGVDcmVhdGVQcm9ncmFtKFZh
bGlkYXRpb25Db250ZXh0ICpjb250ZXh0KTsKK2Jvb2wgVmFsaWRhdGVDdWxsRmFjZShWYWxpZGF0
aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUpOworYm9vbCBWYWxpZGF0ZURlbGV0ZVBy
b2dyYW0oVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtKTsKK2Jvb2wg
VmFsaWRhdGVEZWxldGVTaGFkZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBz
aGFkZXIpOworYm9vbCBWYWxpZGF0ZURlcHRoRnVuYyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIGZ1bmMpOworYm9vbCBWYWxpZGF0ZURlcHRoTWFzayhWYWxpZGF0aW9uQ29udGV4
dCAqY29udGV4dCwgR0xib29sZWFuIGZsYWcpOworYm9vbCBWYWxpZGF0ZURldGFjaFNoYWRlcihW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIp
OworYm9vbCBWYWxpZGF0ZURpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShWYWxpZGF0aW9uQ29udGV4
dCAqY29udGV4dCwgR0x1aW50IGluZGV4KTsKK2Jvb2wgVmFsaWRhdGVFbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4KTsKK2Jvb2wg
VmFsaWRhdGVGaW5pc2goVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQpOworYm9vbCBWYWxpZGF0
ZUZsdXNoKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0KTsKK2Jvb2wgVmFsaWRhdGVGcm9udEZh
Y2UoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlKTsKK2Jvb2wgVmFsaWRh
dGVHZXRBY3RpdmVBdHRyaWIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgYnVmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqc2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGNoYXIgKm5hbWUpOworYm9vbCBWYWxpZGF0ZUdldEFjdGl2ZVVuaWZvcm0oVmFsaWRh
dGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmc2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50ICpzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1l
KTsKK2Jvb2wgVmFsaWRhdGVHZXRBdHRhY2hlZFNoYWRlcnMoVmFsaWRhdGlvbkNvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG1heGNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpjb3VudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50ICpzaGFkZXJzKTsKK2Jvb2wgVmFsaWRhdGVHZXRBdHRy
aWJMb2NhdGlvbihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0sIGNv
bnN0IEdMY2hhciAqbmFtZSk7Citib29sIFZhbGlkYXRlR2V0Qm9vbGVhbnYoVmFsaWRhdGlvbkNv
bnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpwYXJhbXMpOworYm9vbCBW
YWxpZGF0ZUdldEVycm9yKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0KTsKK2Jvb2wgVmFsaWRh
dGVHZXRGbG9hdHYoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xm
bG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlZ2VydihWYWxpZGF0aW9uQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVH
ZXRQcm9ncmFtSW5mb0xvZyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hh
ciAqaW5mb2xvZyk7Citib29sIFZhbGlkYXRlR2V0U2hhZGVySW5mb0xvZyhWYWxpZGF0aW9uQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzaGFk
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZnNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGNoYXIgKmluZm9sb2cpOworYm9vbCBWYWxpZGF0ZUdldFNoYWRl
clByZWNpc2lvbkZvcm1hdChWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNoYWRlcnR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcmVjaXNpb250eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcmFuZ2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwcmVjaXNpb24pOworYm9vbCBWYWxp
ZGF0ZUdldFNoYWRlclNvdXJjZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNoYWRlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqc291
cmNlKTsKK2Jvb2wgVmFsaWRhdGVHZXRVbmlmb3JtTG9jYXRpb24oVmFsaWRhdGlvbkNvbnRleHQg
KmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpOworYm9vbCBWYWxp
ZGF0ZUhpbnQoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51
bSBtb2RlKTsKK2Jvb2wgVmFsaWRhdGVJc0J1ZmZlcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IGJ1ZmZlcik7Citib29sIFZhbGlkYXRlSXNGcmFtZWJ1ZmZlcihWYWxpZGF0aW9u
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGZyYW1lYnVmZmVyKTsKK2Jvb2wgVmFsaWRhdGVJc1By
b2dyYW0oVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtKTsKK2Jvb2wg
VmFsaWRhdGVJc1JlbmRlcmJ1ZmZlcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IHJlbmRlcmJ1ZmZlcik7Citib29sIFZhbGlkYXRlSXNTaGFkZXIoVmFsaWRhdGlvbkNvbnRleHQg
KmNvbnRleHQsIEdMdWludCBzaGFkZXIpOworYm9vbCBWYWxpZGF0ZUlzVGV4dHVyZShWYWxpZGF0
aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHRleHR1cmUpOworYm9vbCBWYWxpZGF0ZVBpeGVs
U3RvcmVpKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBh
cmFtKTsKK2Jvb2wgVmFsaWRhdGVQb2x5Z29uT2Zmc2V0KFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LCBHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cyk7Citib29sIFZhbGlkYXRlUmVsZWFz
ZVNoYWRlckNvbXBpbGVyKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0KTsKK2Jvb2wgVmFsaWRh
dGVTYW1wbGVDb3ZlcmFnZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xjbGFtcGYgdmFs
dWUsIEdMYm9vbGVhbiBpbnZlcnQpOworYm9vbCBWYWxpZGF0ZVNjaXNzb3IoVmFsaWRhdGlvbkNv
bnRleHQgKmNvbnRleHQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0KTsKK2Jvb2wgVmFsaWRhdGVTaGFkZXJCaW5hcnkoVmFsaWRhdGlvbkNvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICpzaGFkZXJzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gYmluYXJ5Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTHZvaWQgKmJpbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBs
ZW5ndGgpOworYm9vbCBWYWxpZGF0ZVNoYWRlclNvdXJjZShWYWxpZGF0aW9uQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNoYWRlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xjaGFyICpjb25zdCAqc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGludCAqbGVuZ3RoKTsKK2Jvb2wgVmFsaWRhdGVTdGVuY2lsRnVuYyhWYWxpZGF0
aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2sp
OworYm9vbCBWYWxpZGF0ZVN0ZW5jaWxGdW5jU2VwYXJhdGUoVmFsaWRhdGlvbkNvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmFjZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmdW5jLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcmVmLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IG1hc2spOworYm9vbCBWYWxpZGF0ZVN0ZW5jaWxNYXNrKFZhbGlkYXRp
b25Db250ZXh0ICpjb250ZXh0LCBHTHVpbnQgbWFzayk7Citib29sIFZhbGlkYXRlU3RlbmNpbE1h
c2tTZXBhcmF0ZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZhY2UsIEdMdWlu
dCBtYXNrKTsKK2Jvb2wgVmFsaWRhdGVTdGVuY2lsT3AoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBmYWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcyk7Citib29sIFZhbGlk
YXRlU3RlbmNpbE9wU2VwYXJhdGUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZhY2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZhaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHpmYWlsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB6cGFz
cyk7Citib29sIFZhbGlkYXRlVW5pZm9ybTFmKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBH
TGludCBsb2NhdGlvbiwgR0xmbG9hdCB4KTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMWZ2KFZhbGlk
YXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdik7Citib29sIFZhbGlkYXRlVW5pZm9ybTJm
KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBH
TGZsb2F0IHkpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm0yZnYoVmFsaWRhdGlvbkNvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2KTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMmkoVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5KTsKK2Jvb2wgVmFs
aWRhdGVVbmlmb3JtMml2KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm0z
ZihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgeCwg
R0xmbG9hdCB5LCBHTGZsb2F0IHopOworYm9vbCBWYWxpZGF0ZVVuaWZvcm0zZnYoVmFsaWRhdGlv
bkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2KTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtM2koVmFs
aWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5
LCBHTGludCB6KTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtM2l2KFZhbGlkYXRpb25Db250ZXh0ICpj
b250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOwor
Ym9vbCBWYWxpZGF0ZVVuaWZvcm00ZihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
IEdMZmxvYXQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB5LAorICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0IHosCisgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
dyk7Citib29sIFZhbGlkYXRlVW5pZm9ybTRmdihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnYpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm00aShWYWxpZGF0aW9uQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHosCisgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IHcpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm00aXYoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRl
eHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdik7Citib29s
IFZhbGlkYXRlVW5pZm9ybU1hdHJpeDJmdihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Citib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDNmdihW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBj
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Citi
b29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeDRmdihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Citib29sIFZhbGlkYXRlVmFsaWRhdGVQcm9ncmFt
KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSk7Citib29sIFZhbGlk
YXRlVmVydGV4QXR0cmliMWYoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRl
eCwgR0xmbG9hdCB4KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZnYoVmFsaWRhdGlvbkNv
bnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKTsKK2Jv
b2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIyZihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1
aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSk7Citib29sIFZhbGlkYXRlVmVydGV4QXR0
cmliMmZ2KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdM
ZmxvYXQgKnZhbHVlcyk7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliM2YoVmFsaWRhdGlvbkNv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGZsb2F0IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xm
bG9hdCB6KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIzZnYoVmFsaWRhdGlvbkNvbnRleHQg
KmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKTsKK2Jvb2wgVmFs
aWRhdGVWZXJ0ZXhBdHRyaWI0ZihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xmbG9hdCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHosCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xmbG9hdCB3KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0ZnYoVmFs
aWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdmFs
dWVzKTsKK2Jvb2wgVmFsaWRhdGVWaWV3cG9ydChWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwg
R0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworCitib29s
IFZhbGlkYXRlRHJhd0FycmF5cyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1v
ZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KTsKIAogfSAgLy8gbmFtZXNwYWNlIGdsCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0
aW9uRVMzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0
aW9uRVMzLmNwcAppbmRleCAwZTI1N2ZmNDY3OTNhNjIxNzU3Yjg3ZWM2ZWQyYWY4ODlkMTlhNGIy
Li43Mjg4ZGRlZGY5MWM3OWE0YjM1MjQxODk5YmZmNDAwNGY3YzNjNDk1IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMy5jcHAKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuY3Bw
CkBAIC04LDYgKzgsOSBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlvbkVTMy5oIgog
CisjaW5jbHVkZSAiYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zLmgiCisjaW5jbHVkZSAi
Y29tbW9uL21hdGh1dGlsLmgiCisjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9UZXh0dXJlLmgiCkBAIC0xNiwyMiArMTksMjIgQEAKICNp
bmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1l
YnVmZmVyQXR0YWNobWVudC5oIgogCi0jaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgiCi0jaW5j
bHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgotCiB1c2luZyBuYW1lc3BhY2UgYW5nbGU7CiAKIG5h
bWVzcGFjZSBnbAogewogCi1zdGF0aWMgYm9vbCBWYWxpZGF0ZVRleEltYWdlRm9ybWF0Q29tYmlu
YXRpb24oZ2w6OkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVt
IGZvcm1hdCwgR0xlbnVtIHR5cGUpCitzdGF0aWMgYm9vbCBWYWxpZGF0ZVRleEltYWdlRm9ybWF0
Q29tYmluYXRpb24oZ2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUpCiB7
CiAgICAgLy8gRm9yIGhpc3RvcmljYWwgcmVhc29ucywgZ2xUZXhJbWFnZTJEIGFuZCBnbFRleElt
YWdlM0QgcGFzcyBpbiB0aGVpciBpbnRlcm5hbCBmb3JtYXQgYXMgYQogICAgIC8vIEdMaW50IGlu
c3RlYWQgb2YgYSBHTGVudW0uIFRoZXJlZm9yIGFuIGludmFsaWQgaW50ZXJuYWwgZm9ybWF0IGdp
dmVzIGEgR0xfSU5WQUxJRF9WQUxVRQogICAgIC8vIGVycm9yIGluc3RlYWQgb2YgYSBHTF9JTlZB
TElEX0VOVU0gZXJyb3IuIEFzIHRoaXMgdmFsaWRhdGlvbiBmdW5jdGlvbiBpcyBvbmx5IGNhbGxl
ZCBpbgogICAgIC8vIHRoZSB2YWxpZGF0aW9uIGNvZGVwYXRocyBmb3IgZ2xUZXhJbWFnZTJELzNE
LCB3ZSByZWNvcmQgYSBHTF9JTlZBTElEX1ZBTFVFIGVycm9yLgogICAgIGNvbnN0IGdsOjpJbnRl
cm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oaW50ZXJu
YWxGb3JtYXQpOwotICAgIGlmICghZm9ybWF0SW5mby50ZXh0dXJlU3VwcG9ydChjb250ZXh0LT5n
ZXRDbGllbnRNYWpvclZlcnNpb24oKSwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKSkKKyAgICBp
ZiAoIWZvcm1hdEluZm8udGV4dHVyZVN1cHBvcnQoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigp
LCBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpKQogICAgIHsKICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC05OSw2MCArMTAyLDYxIEBAIGJvb2wgVmFsaWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRlcnNC
YXNlKENvbnRleHQgKmNvbnRleHQsCiAKICAgICBzd2l0Y2ggKHRhcmdldCkKICAgICB7Ci0gICAg
ICBjYXNlIEdMX1RFWFRVUkVfMkQ6Ci0gICAgICAgIGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KHdp
ZHRoKSA+IChjYXBzLm1heDJEVGV4dHVyZVNpemUgPj4gbGV2ZWwpIHx8Ci0gICAgICAgICAgICBz
dGF0aWNfY2FzdDxHTHVpbnQ+KGhlaWdodCkgPiAoY2Fwcy5tYXgyRFRleHR1cmVTaXplID4+IGxl
dmVsKSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
Ci0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6CisgICAgICAgICAg
ICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50Pih3aWR0aCkgPiAoY2Fwcy5tYXgyRFRleHR1cmVTaXpl
ID4+IGxldmVsKSB8fAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4oaGVpZ2h0
KSA+IChjYXBzLm1heDJEVGV4dHVyZVNpemUgPj4gbGV2ZWwpKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKIAotICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6
Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWDoKLSAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZOgotICAgICAgY2FzZSBHTF9URVhUVVJFX0NV
QkVfTUFQX05FR0FUSVZFX1k6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJ
VkVfWjoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aOgotICAgICAg
ICBpZiAoIWlzU3ViSW1hZ2UgJiYgd2lkdGggIT0gaGVpZ2h0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9URVhUVVJF
X0NVQkVfTUFQX1BPU0lUSVZFX1g6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9O
RUdBVElWRV9YOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToK
KyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6CisgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aOgorICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjoKKyAgICAgICAgICAgIGlmICghaXNTdWJJbWFnZSAmJiB3
aWR0aCAhPSBoZWlnaHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1
aW50Pih3aWR0aCkgPiAoY2Fwcy5tYXhDdWJlTWFwVGV4dHVyZVNpemUgPj4gbGV2ZWwpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFKSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50Pih3aWR0aCkgPiAoY2Fw
cy5tYXhDdWJlTWFwVGV4dHVyZVNpemUgPj4gbGV2ZWwpKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgY2FzZSBHTF9URVhUVVJFXzNEOgotICAgICAgICBpZiAoc3RhdGlj
X2Nhc3Q8R0x1aW50Pih3aWR0aCkgPiAoY2Fwcy5tYXgzRFRleHR1cmVTaXplID4+IGxldmVsKSB8
fAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihoZWlnaHQpID4gKGNhcHMubWF4M0RU
ZXh0dXJlU2l6ZSA+PiBsZXZlbCkgfHwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4o
ZGVwdGgpID4gKGNhcHMubWF4M0RUZXh0dXJlU2l6ZSA+PiBsZXZlbCkpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBHTF9URVhUVVJFXzNEOgorICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PEdM
dWludD4od2lkdGgpID4gKGNhcHMubWF4M0RUZXh0dXJlU2l6ZSA+PiBsZXZlbCkgfHwKKyAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGhlaWdodCkgPiAoY2Fwcy5tYXgzRFRleHR1
cmVTaXplID4+IGxldmVsKSB8fAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4o
ZGVwdGgpID4gKGNhcHMubWF4M0RUZXh0dXJlU2l6ZSA+PiBsZXZlbCkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEdMX1RFWFRVUkVfMkRfQVJSQVk6Ci0gICAg
ICAgIGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KHdpZHRoKSA+IChjYXBzLm1heDJEVGV4dHVyZVNp
emUgPj4gbGV2ZWwpIHx8Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGhlaWdodCkg
PiAoY2Fwcy5tYXgyRFRleHR1cmVTaXplID4+IGxldmVsKSB8fAotICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8R0x1aW50PihkZXB0aCkgPiBjYXBzLm1heEFycmF5VGV4dHVyZUxheWVycykKLSAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkRfQVJSQVk6CisgICAgICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8R0x1aW50Pih3aWR0aCkgPiAoY2Fwcy5tYXgyRFRleHR1cmVTaXplID4+IGxl
dmVsKSB8fAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4oaGVpZ2h0KSA+IChj
YXBzLm1heDJEVGV4dHVyZVNpemUgPj4gbGV2ZWwpIHx8CisgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8R0x1aW50PihkZXB0aCkgPiBjYXBzLm1heEFycmF5VGV4dHVyZUxheWVycykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGFyZ2V0VGV4
dHVyZShJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkgPyBHTF9URVhUVVJFX0NVQkVfTUFQ
IDogdGFyZ2V0KTsKKyAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9CisgICAgICAgIGNvbnRleHQt
PmdldFRhcmdldFRleHR1cmUoSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpID8gR0xfVEVY
VFVSRV9DVUJFX01BUCA6IHRhcmdldCk7CiAgICAgaWYgKCF0ZXh0dXJlKQogICAgIHsKICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKQEAg
LTE2OCw2ICsxNzIsMTIgQEAgYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdlUGFyYW1ldGVyc0Jhc2Uo
Q29udGV4dCAqY29udGV4dCwKICAgICAvLyBWYWxpZGF0ZSB0ZXh0dXJlIGZvcm1hdHMKICAgICBH
TGVudW0gYWN0dWFsSW50ZXJuYWxGb3JtYXQgPQogICAgICAgICBpc1N1YkltYWdlID8gdGV4dHVy
ZS0+Z2V0Rm9ybWF0KHRhcmdldCwgbGV2ZWwpLmFzU2l6ZWQoKSA6IGludGVybmFsZm9ybWF0Owor
ICAgIGlmIChpc1N1YkltYWdlICYmIGFjdHVhbEludGVybmFsRm9ybWF0ID09IEdMX05PTkUpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIlRleHR1cmUgbGV2ZWwgZG9lcyBub3QgZXhpc3QuIikpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCiAgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZhY3R1YWxGb3Jt
YXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhhY3R1YWxJbnRlcm5hbEZvcm1hdCk7
CiAgICAgaWYgKGlzQ29tcHJlc3NlZCkKICAgICB7CkBAIC0xNzgsMTQgKzE4OCwxNCBAQCBib29s
IFZhbGlkYXRlRVMzVGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFWYWxpZENv
bXByZXNzZWRJbWFnZVNpemUoY29udGV4dCwgYWN0dWFsSW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBo
ZWlnaHQpKQorICAgICAgICBpZiAoIVZhbGlkQ29tcHJlc3NlZEltYWdlU2l6ZShjb250ZXh0LCBh
Y3R1YWxJbnRlcm5hbEZvcm1hdCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCkpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWFjdHVh
bEZvcm1hdEluZm8udGV4dHVyZVN1cHBvcnQoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkpKQorICAgICAgICBpZiAoIWFjdHVhbEZvcm1hdEluZm8udGV4dHVy
ZVN1cHBvcnQoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpLCBjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI1OCw3
ICsyNjgsOCBAQCBib29sIFZhbGlkYXRlRVMzVGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShDb250ZXh0
ICpjb250ZXh0LAogICAgIGdsOjpCdWZmZXIgKnBpeGVsVW5wYWNrQnVmZmVyID0gY29udGV4dC0+
Z2V0R0xTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcihHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSKTsKICAg
ICBpZiAocGl4ZWxVbnBhY2tCdWZmZXIgIT0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIC8vIC4u
LmRhdGEgaXMgbm90IGV2ZW5seSBkaXZpc2libGUgaW50byB0aGUgbnVtYmVyIG9mIGJ5dGVzIG5l
ZWRlZCB0byBzdG9yZSBpbiBtZW1vcnkgYSBkYXR1bQorICAgICAgICAvLyAuLi5kYXRhIGlzIG5v
dCBldmVubHkgZGl2aXNpYmxlIGludG8gdGhlIG51bWJlciBvZiBieXRlcyBuZWVkZWQgdG8gc3Rv
cmUgaW4gbWVtb3J5IGEKKyAgICAgICAgLy8gZGF0dW0KICAgICAgICAgLy8gaW5kaWNhdGVkIGJ5
IHR5cGUuCiAgICAgICAgIGlmICghaXNDb21wcmVzc2VkKQogICAgICAgICB7CkBAIC00MzcsNyAr
NDQ4LDggQEAgYm9vbCBHZXRVbnNpemVkRWZmZWN0aXZlSW50ZXJuYWxGb3JtYXRJbmZvKGNvbnN0
IEludGVybmFsRm9ybWF0ICZzcmNGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvdXRFZmZlY3RpdmVGb3JtYXQpOwogfQogCi1zdGF0aWMgYm9vbCBHZXRFZmZlY3Rp
dmVJbnRlcm5hbEZvcm1hdChjb25zdCBJbnRlcm5hbEZvcm1hdCAmc3JjRm9ybWF0LCBjb25zdCBJ
bnRlcm5hbEZvcm1hdCAmZGVzdEZvcm1hdCwKK3N0YXRpYyBib29sIEdldEVmZmVjdGl2ZUludGVy
bmFsRm9ybWF0KGNvbnN0IEludGVybmFsRm9ybWF0ICZzcmNGb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAmZGVzdEZvcm1h
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqb3V0RWZm
ZWN0aXZlRm9ybWF0KQogewogICAgIGlmIChkZXN0Rm9ybWF0LnBpeGVsQnl0ZXMgPiAwKQpAQCAt
NDUwLDY4ICs0NjIsNiBAQCBzdGF0aWMgYm9vbCBHZXRFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdChj
b25zdCBJbnRlcm5hbEZvcm1hdCAmc3JjRm9ybWF0LCBjb25zdCBJbgogICAgIH0KIH0KIAotc3Ry
dWN0IENvcHlDb252ZXJzaW9uCi17Ci0gICAgR0xlbnVtIG1UZXh0dXJlRm9ybWF0OwotICAgIEdM
ZW51bSBtRnJhbWVidWZmZXJGb3JtYXQ7Ci0KLSAgICBDb3B5Q29udmVyc2lvbihHTGVudW0gdGV4
dHVyZUZvcm1hdCwgR0xlbnVtIGZyYW1lYnVmZmVyRm9ybWF0KQotICAgICAgICA6IG1UZXh0dXJl
Rm9ybWF0KHRleHR1cmVGb3JtYXQpLCBtRnJhbWVidWZmZXJGb3JtYXQoZnJhbWVidWZmZXJGb3Jt
YXQpIHsgfQotCi0gICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgQ29weUNvbnZlcnNpb24mIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1lbWNtcCh0aGlzLCAmb3RoZXIsIHNpemVv
ZihDb3B5Q29udmVyc2lvbikpIDwgMDsKLSAgICB9Ci19OwotCi10eXBlZGVmIHN0ZDo6c2V0PENv
cHlDb252ZXJzaW9uPiBDb3B5Q29udmVyc2lvblNldDsKLQotc3RhdGljIENvcHlDb252ZXJzaW9u
U2V0IEJ1aWxkVmFsaWRFUzNDb3B5VGV4SW1hZ2VDb21iaW5hdGlvbnMoKQotewotICAgIENvcHlD
b252ZXJzaW9uU2V0IHNldDsKLQotICAgIC8vIEZyb20gRVMgMy4wLjEgc3BlYywgdGFibGUgMy4x
NQotICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24oR0xfQUxQSEEsIEdMX1JHQkEpKTsKLSAg
ICBzZXQuaW5zZXJ0KENvcHlDb252ZXJzaW9uKEdMX0xVTUlOQU5DRSwgR0xfUkVEKSk7Ci0gICAg
c2V0Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9MVU1JTkFOQ0UsIEdMX1JHKSk7Ci0gICAgc2V0
Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9MVU1JTkFOQ0UsIEdMX1JHQikpOwotICAgIHNldC5p
bnNlcnQoQ29weUNvbnZlcnNpb24oR0xfTFVNSU5BTkNFLCBHTF9SR0JBKSk7Ci0gICAgc2V0Lmlu
c2VydChDb3B5Q29udmVyc2lvbihHTF9MVU1JTkFOQ0VfQUxQSEEsIEdMX1JHQkEpKTsKLSAgICBz
ZXQuaW5zZXJ0KENvcHlDb252ZXJzaW9uKEdMX1JFRCwgR0xfUkVEKSk7Ci0gICAgc2V0Lmluc2Vy
dChDb3B5Q29udmVyc2lvbihHTF9SRUQsIEdMX1JHKSk7Ci0gICAgc2V0Lmluc2VydChDb3B5Q29u
dmVyc2lvbihHTF9SRUQsIEdMX1JHQikpOwotICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24o
R0xfUkVELCBHTF9SR0JBKSk7Ci0gICAgc2V0Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9SRywg
R0xfUkcpKTsKLSAgICBzZXQuaW5zZXJ0KENvcHlDb252ZXJzaW9uKEdMX1JHLCBHTF9SR0IpKTsK
LSAgICBzZXQuaW5zZXJ0KENvcHlDb252ZXJzaW9uKEdMX1JHLCBHTF9SR0JBKSk7Ci0gICAgc2V0
Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9SR0IsIEdMX1JHQikpOwotICAgIHNldC5pbnNlcnQo
Q29weUNvbnZlcnNpb24oR0xfUkdCLCBHTF9SR0JBKSk7Ci0gICAgc2V0Lmluc2VydChDb3B5Q29u
dmVyc2lvbihHTF9SR0JBLCBHTF9SR0JBKSk7Ci0KLSAgICAvLyBOZWNlc3NhcnkgZm9yIEFOR0xF
IGJhY2stYnVmZmVycwotICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24oR0xfQUxQSEEsIEdM
X0JHUkFfRVhUKSk7Ci0gICAgc2V0Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9MVU1JTkFOQ0Us
IEdMX0JHUkFfRVhUKSk7Ci0gICAgc2V0Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9MVU1JTkFO
Q0VfQUxQSEEsIEdMX0JHUkFfRVhUKSk7Ci0gICAgc2V0Lmluc2VydChDb3B5Q29udmVyc2lvbihH
TF9SRUQsIEdMX0JHUkFfRVhUKSk7Ci0gICAgc2V0Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9S
RywgR0xfQkdSQV9FWFQpKTsKLSAgICBzZXQuaW5zZXJ0KENvcHlDb252ZXJzaW9uKEdMX1JHQiwg
R0xfQkdSQV9FWFQpKTsKLSAgICBzZXQuaW5zZXJ0KENvcHlDb252ZXJzaW9uKEdMX1JHQkEsIEdM
X0JHUkFfRVhUKSk7Ci0gICAgc2V0Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9CR1JBX0VYVCwg
R0xfQkdSQV9FWFQpKTsKLQotICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24oR0xfUkVEX0lO
VEVHRVIsIEdMX1JFRF9JTlRFR0VSKSk7Ci0gICAgc2V0Lmluc2VydChDb3B5Q29udmVyc2lvbihH
TF9SRURfSU5URUdFUiwgR0xfUkdfSU5URUdFUikpOwotICAgIHNldC5pbnNlcnQoQ29weUNvbnZl
cnNpb24oR0xfUkVEX0lOVEVHRVIsIEdMX1JHQl9JTlRFR0VSKSk7Ci0gICAgc2V0Lmluc2VydChD
b3B5Q29udmVyc2lvbihHTF9SRURfSU5URUdFUiwgR0xfUkdCQV9JTlRFR0VSKSk7Ci0gICAgc2V0
Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9SR19JTlRFR0VSLCBHTF9SR19JTlRFR0VSKSk7Ci0g
ICAgc2V0Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9SR19JTlRFR0VSLCBHTF9SR0JfSU5URUdF
UikpOwotICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24oR0xfUkdfSU5URUdFUiwgR0xfUkdC
QV9JTlRFR0VSKSk7Ci0gICAgc2V0Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9SR0JfSU5URUdF
UiwgR0xfUkdCX0lOVEVHRVIpKTsKLSAgICBzZXQuaW5zZXJ0KENvcHlDb252ZXJzaW9uKEdMX1JH
Ql9JTlRFR0VSLCBHTF9SR0JBX0lOVEVHRVIpKTsKLSAgICBzZXQuaW5zZXJ0KENvcHlDb252ZXJz
aW9uKEdMX1JHQkFfSU5URUdFUiwgR0xfUkdCQV9JTlRFR0VSKSk7Ci0KLSAgICByZXR1cm4gc2V0
OwotfQotCiBzdGF0aWMgYm9vbCBFcXVhbE9yRmlyc3RaZXJvKEdMdWludCBmaXJzdCwgR0x1aW50
IHNlY29uZCkKIHsKICAgICByZXR1cm4gZmlyc3QgPT0gMCB8fCBmaXJzdCA9PSBzZWNvbmQ7CkBA
IC01MjQsMTMyICs0NzQsMTI5IEBAIHN0YXRpYyBib29sIElzVmFsaWRFUzNDb3B5VGV4SW1hZ2VD
b21iaW5hdGlvbihjb25zdCBGb3JtYXQgJnRleHR1cmVGb3JtYXQsCiAgICAgY29uc3QgYXV0byAm
dGV4dHVyZUZvcm1hdEluZm8gICAgID0gKnRleHR1cmVGb3JtYXQuaW5mbzsKICAgICBjb25zdCBh
dXRvICZmcmFtZWJ1ZmZlckZvcm1hdEluZm8gPSAqZnJhbWVidWZmZXJGb3JtYXQuaW5mbzsKIAot
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9ycyIKLSAgICBzdGF0aWMgY29uc3QgQ29weUNv
bnZlcnNpb25TZXQgY29udmVyc2lvblNldCA9IEJ1aWxkVmFsaWRFUzNDb3B5VGV4SW1hZ2VDb21i
aW5hdGlvbnMoKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICBpZiAoY29udmVy
c2lvblNldC5maW5kKENvcHlDb252ZXJzaW9uKHRleHR1cmVGb3JtYXRJbmZvLmZvcm1hdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyRm9ybWF0
SW5mby5mb3JtYXQpKSAhPSBjb252ZXJzaW9uU2V0LmVuZCgpKQorICAgIGlmICghVmFsaWRFUzND
b3B5Q29udmVyc2lvbih0ZXh0dXJlRm9ybWF0SW5mby5mb3JtYXQsIGZyYW1lYnVmZmVyRm9ybWF0
SW5mby5mb3JtYXQpKQogICAgIHsKLSAgICAgICAgLy8gU2VjdGlvbiAzLjguNSBvZiB0aGUgR0xF
UyAzLjAuMyBzcGVjIHN0YXRlcyB0aGF0IHNvdXJjZSBhbmQgZGVzdGluYXRpb24gZm9ybWF0cwot
ICAgICAgICAvLyBtdXN0IGJvdGggYmUgc2lnbmVkLCB1bnNpZ25lZCwgb3IgZml4ZWQgcG9pbnQg
YW5kIGJvdGggc291cmNlIGFuZCBkZXN0aW5hdGlvbnMKLSAgICAgICAgLy8gbXVzdCBiZSBlaXRo
ZXIgYm90aCBTUkdCIG9yIGJvdGggbm90IFNSR0IuIEVYVF9jb2xvcl9idWZmZXJfZmxvYXQgYWRk
cyBhbGxvd2VkCi0gICAgICAgIC8vIGNvbnZlcnNpb24gYmV0d2VlbiBmaXhlZCBhbmQgZmxvYXRp
bmcgcG9pbnQuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKLSAgICAgICAgaWYgKCh0
ZXh0dXJlRm9ybWF0SW5mby5jb2xvckVuY29kaW5nID09IEdMX1NSR0IpICE9Ci0gICAgICAgICAg
ICAoZnJhbWVidWZmZXJGb3JtYXRJbmZvLmNvbG9yRW5jb2RpbmcgPT0gR0xfU1JHQikpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAgIC8vIFNlY3Rp
b24gMy44LjUgb2YgdGhlIEdMRVMgMy4wLjMgc3BlYyBzdGF0ZXMgdGhhdCBzb3VyY2UgYW5kIGRl
c3RpbmF0aW9uIGZvcm1hdHMKKyAgICAvLyBtdXN0IGJvdGggYmUgc2lnbmVkLCB1bnNpZ25lZCwg
b3IgZml4ZWQgcG9pbnQgYW5kIGJvdGggc291cmNlIGFuZCBkZXN0aW5hdGlvbnMKKyAgICAvLyBt
dXN0IGJlIGVpdGhlciBib3RoIFNSR0Igb3IgYm90aCBub3QgU1JHQi4gRVhUX2NvbG9yX2J1ZmZl
cl9mbG9hdCBhZGRzIGFsbG93ZWQKKyAgICAvLyBjb252ZXJzaW9uIGJldHdlZW4gZml4ZWQgYW5k
IGZsb2F0aW5nIHBvaW50LgogCi0gICAgICAgIGlmICgoKHRleHR1cmVGb3JtYXRJbmZvLmNvbXBv
bmVudFR5cGUgPT0gR0xfSU5UKSAhPQotICAgICAgICAgICAgIChmcmFtZWJ1ZmZlckZvcm1hdElu
Zm8uY29tcG9uZW50VHlwZSA9PSBHTF9JTlQpKSB8fAotICAgICAgICAgICAgKCh0ZXh0dXJlRm9y
bWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX1VOU0lHTkVEX0lOVCkgIT0KLSAgICAgICAgICAg
ICAoZnJhbWVidWZmZXJGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfVU5TSUdORURfSU5U
KSkpCisgICAgaWYgKCh0ZXh0dXJlRm9ybWF0SW5mby5jb2xvckVuY29kaW5nID09IEdMX1NSR0Ip
ICE9CisgICAgICAgIChmcmFtZWJ1ZmZlckZvcm1hdEluZm8uY29sb3JFbmNvZGluZyA9PSBHTF9T
UkdCKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoKCh0
ZXh0dXJlRm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX0lOVCkgIT0KKyAgICAgICAgIChm
cmFtZWJ1ZmZlckZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9JTlQpKSB8fAorICAgICAg
ICAoKHRleHR1cmVGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfVU5TSUdORURfSU5UKSAh
PQorICAgICAgICAgKGZyYW1lYnVmZmVyRm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX1VO
U0lHTkVEX0lOVCkpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IGlmICgodGV4dHVyZUZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9OT1JN
QUxJWkVEIHx8CisgICAgICAgICB0ZXh0dXJlRm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdM
X1NJR05FRF9OT1JNQUxJWkVEIHx8CisgICAgICAgICB0ZXh0dXJlRm9ybWF0SW5mby5jb21wb25l
bnRUeXBlID09IEdMX0ZMT0FUKSAmJgorICAgICAgICAhKGZyYW1lYnVmZmVyRm9ybWF0SW5mby5j
b21wb25lbnRUeXBlID09IEdMX1VOU0lHTkVEX05PUk1BTElaRUQgfHwKKyAgICAgICAgICBmcmFt
ZWJ1ZmZlckZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9TSUdORURfTk9STUFMSVpFRCB8
fAorICAgICAgICAgIGZyYW1lYnVmZmVyRm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX0ZM
T0FUKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBHTEVT
IHNwZWNpZmljYXRpb24gMy4wLjMsIHNlYyAzLjguNSwgcGcgMTM5LTE0MDoKKyAgICAvLyBUaGUg
ZWZmZWN0aXZlIGludGVybmFsIGZvcm1hdCBvZiB0aGUgc291cmNlIGJ1ZmZlciBpcyBkZXRlcm1p
bmVkIHdpdGggdGhlIGZvbGxvd2luZyBydWxlcworICAgIC8vIGFwcGxpZWQgaW4gb3JkZXI6Cisg
ICAgLy8gICAgKiBJZiB0aGUgc291cmNlIGJ1ZmZlciBpcyBhIHRleHR1cmUgb3IgcmVuZGVyYnVm
ZmVyIHRoYXQgd2FzIGNyZWF0ZWQgd2l0aCBhIHNpemVkIGludGVybmFsCisgICAgLy8gICAgICBm
b3JtYXQgdGhlbiB0aGUgZWZmZWN0aXZlIGludGVybmFsIGZvcm1hdCBpcyB0aGUgc291cmNlIGJ1
ZmZlcidzIHNpemVkIGludGVybmFsIGZvcm1hdC4KKyAgICAvLyAgICAqIElmIHRoZSBzb3VyY2Ug
YnVmZmVyIGlzIGEgdGV4dHVyZSB0aGF0IHdhcyBjcmVhdGVkIHdpdGggYW4gdW5zaXplZCBiYXNl
IGludGVybmFsIGZvcm1hdCwKKyAgICAvLyAgICAgIHRoZW4gdGhlIGVmZmVjdGl2ZSBpbnRlcm5h
bCBmb3JtYXQgaXMgdGhlIHNvdXJjZSBpbWFnZSBhcnJheSdzIGVmZmVjdGl2ZSBpbnRlcm5hbAor
ICAgIC8vICAgICAgZm9ybWF0LCBhcyBzcGVjaWZpZWQgYnkgdGFibGUgMy4xMiwgd2hpY2ggaXMg
ZGV0ZXJtaW5lZCBmcm9tIHRoZSA8Zm9ybWF0PiBhbmQgPHR5cGU+CisgICAgLy8gICAgICB0aGF0
IHdlcmUgdXNlZCB3aGVuIHRoZSBzb3VyY2UgaW1hZ2UgYXJyYXkgd2FzIHNwZWNpZmllZCBieSBU
ZXhJbWFnZSouCisgICAgLy8gICAgKiBPdGhlcndpc2UgdGhlIGVmZmVjdGl2ZSBpbnRlcm5hbCBm
b3JtYXQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgcm93IGluIHRhYmxlIDMuMTcgb3IgMy4xOAorICAg
IC8vICAgICAgd2hlcmUgRGVzdGluYXRpb24gSW50ZXJuYWwgRm9ybWF0IG1hdGNoZXMgaW50ZXJu
YWxmb3JtYXQgYW5kIHdoZXJlIHRoZSBbc291cmNlIGNoYW5uZWwKKyAgICAvLyAgICAgIHNpemVz
XSBhcmUgY29uc2lzdGVudCB3aXRoIHRoZSB2YWx1ZXMgb2YgdGhlIHNvdXJjZSBidWZmZXIncyBb
Y2hhbm5lbCBzaXplc10uIFRhYmxlIDMuMTcKKyAgICAvLyAgICAgIGlzIHVzZWQgaWYgdGhlIEZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfRU5DT0RJTkcgaXMgTElORUFSIGFuZCB0YWJsZSAzLjE4IGlz
IHVzZWQgaWYgdGhlCisgICAgLy8gICAgICBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0VOQ09ESU5H
IGlzIFNSR0IuCisgICAgY29uc3QgSW50ZXJuYWxGb3JtYXQgKnNvdXJjZUVmZmVjdGl2ZUZvcm1h
dCA9IE5VTEw7CisgICAgaWYgKHJlYWRCdWZmZXJIYW5kbGUgIT0gMCkKKyAgICB7CisgICAgICAg
IC8vIE5vdCB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciwgdGhlcmVmb3JlIHRoZSByZWFkIGJ1ZmZl
ciBtdXN0IGJlIGEgdXNlci1jcmVhdGVkIHRleHR1cmUgb3IKKyAgICAgICAgLy8gcmVuZGVyYnVm
ZmVyCisgICAgICAgIGlmIChmcmFtZWJ1ZmZlckZvcm1hdC5zaXplZCkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgc291cmNlRWZmZWN0aXZlRm9ybWF0
ID0gJmZyYW1lYnVmZmVyRm9ybWF0SW5mbzsKICAgICAgICAgfQotCi0gICAgICAgIGlmICgodGV4
dHVyZUZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9OT1JNQUxJWkVEIHx8
Ci0gICAgICAgICAgICAgdGV4dHVyZUZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9TSUdO
RURfTk9STUFMSVpFRCB8fAotICAgICAgICAgICAgIHRleHR1cmVGb3JtYXRJbmZvLmNvbXBvbmVu
dFR5cGUgPT0gR0xfRkxPQVQpICYmCi0gICAgICAgICAgICAhKGZyYW1lYnVmZmVyRm9ybWF0SW5m
by5jb21wb25lbnRUeXBlID09IEdMX1VOU0lHTkVEX05PUk1BTElaRUQgfHwKLSAgICAgICAgICAg
ICAgZnJhbWVidWZmZXJGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfU0lHTkVEX05PUk1B
TElaRUQgfHwKLSAgICAgICAgICAgICAgZnJhbWVidWZmZXJGb3JtYXRJbmZvLmNvbXBvbmVudFR5
cGUgPT0gR0xfRkxPQVQpKQorICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIC8vIFJlbmRlcmJ1ZmZlcnMgY2Fubm90IGJlIGNyZWF0
ZWQgd2l0aCBhbiB1bnNpemVkIGludGVybmFsIGZvcm1hdCwgc28gdGhpcyBtdXN0IGJlIGFuCisg
ICAgICAgICAgICAvLyB1bnNpemVkLWZvcm1hdCB0ZXh0dXJlLiBXZSBjYW4gdXNlIHRoZSBzYW1l
IHRhYmxlIHdlIHVzZSB3aGVuIGNyZWF0aW5nIHRleHR1cmVzIHRvCisgICAgICAgICAgICAvLyBn
ZXQgaXRzIGVmZmVjdGl2ZSBzaXplZCBmb3JtYXQuCisgICAgICAgICAgICBHTGVudW0gc2l6ZWRJ
bnRlcm5hbEZvcm1hdCA9CisgICAgICAgICAgICAgICAgR2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChm
cmFtZWJ1ZmZlckZvcm1hdEluZm8uZm9ybWF0LCBmcmFtZWJ1ZmZlckZvcm1hdEluZm8udHlwZSk7
CisgICAgICAgICAgICBzb3VyY2VFZmZlY3RpdmVGb3JtYXQgPSAmR2V0SW50ZXJuYWxGb3JtYXRJ
bmZvKHNpemVkSW50ZXJuYWxGb3JtYXQpOwogICAgICAgICB9Ci0KLSAgICAgICAgLy8gR0xFUyBz
cGVjaWZpY2F0aW9uIDMuMC4zLCBzZWMgMy44LjUsIHBnIDEzOS0xNDA6Ci0gICAgICAgIC8vIFRo
ZSBlZmZlY3RpdmUgaW50ZXJuYWwgZm9ybWF0IG9mIHRoZSBzb3VyY2UgYnVmZmVyIGlzIGRldGVy
bWluZWQgd2l0aCB0aGUgZm9sbG93aW5nIHJ1bGVzIGFwcGxpZWQgaW4gb3JkZXI6Ci0gICAgICAg
IC8vICAgICogSWYgdGhlIHNvdXJjZSBidWZmZXIgaXMgYSB0ZXh0dXJlIG9yIHJlbmRlcmJ1ZmZl
ciB0aGF0IHdhcyBjcmVhdGVkIHdpdGggYSBzaXplZCBpbnRlcm5hbCBmb3JtYXQgdGhlbiB0aGUK
LSAgICAgICAgLy8gICAgICBlZmZlY3RpdmUgaW50ZXJuYWwgZm9ybWF0IGlzIHRoZSBzb3VyY2Ug
YnVmZmVyJ3Mgc2l6ZWQgaW50ZXJuYWwgZm9ybWF0LgotICAgICAgICAvLyAgICAqIElmIHRoZSBz
b3VyY2UgYnVmZmVyIGlzIGEgdGV4dHVyZSB0aGF0IHdhcyBjcmVhdGVkIHdpdGggYW4gdW5zaXpl
ZCBiYXNlIGludGVybmFsIGZvcm1hdCwgdGhlbiB0aGUKLSAgICAgICAgLy8gICAgICBlZmZlY3Rp
dmUgaW50ZXJuYWwgZm9ybWF0IGlzIHRoZSBzb3VyY2UgaW1hZ2UgYXJyYXkncyBlZmZlY3RpdmUg
aW50ZXJuYWwgZm9ybWF0LCBhcyBzcGVjaWZpZWQgYnkgdGFibGUKLSAgICAgICAgLy8gICAgICAz
LjEyLCB3aGljaCBpcyBkZXRlcm1pbmVkIGZyb20gdGhlIDxmb3JtYXQ+IGFuZCA8dHlwZT4gdGhh
dCB3ZXJlIHVzZWQgd2hlbiB0aGUgc291cmNlIGltYWdlIGFycmF5IHdhcwotICAgICAgICAvLyAg
ICAgIHNwZWNpZmllZCBieSBUZXhJbWFnZSouCi0gICAgICAgIC8vICAgICogT3RoZXJ3aXNlIHRo
ZSBlZmZlY3RpdmUgaW50ZXJuYWwgZm9ybWF0IGlzIGRldGVybWluZWQgYnkgdGhlIHJvdyBpbiB0
YWJsZSAzLjE3IG9yIDMuMTggd2hlcmUKLSAgICAgICAgLy8gICAgICBEZXN0aW5hdGlvbiBJbnRl
cm5hbCBGb3JtYXQgbWF0Y2hlcyBpbnRlcm5hbGZvcm1hdCBhbmQgd2hlcmUgdGhlIFtzb3VyY2Ug
Y2hhbm5lbCBzaXplc10gYXJlIGNvbnNpc3RlbnQKLSAgICAgICAgLy8gICAgICB3aXRoIHRoZSB2
YWx1ZXMgb2YgdGhlIHNvdXJjZSBidWZmZXIncyBbY2hhbm5lbCBzaXplc10uIFRhYmxlIDMuMTcg
aXMgdXNlZCBpZiB0aGUKLSAgICAgICAgLy8gICAgICBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0VO
Q09ESU5HIGlzIExJTkVBUiBhbmQgdGFibGUgMy4xOCBpcyB1c2VkIGlmIHRoZSBGUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX0VOQ09ESU5HCi0gICAgICAgIC8vICAgICAgaXMgU1JHQi4KLSAgICAgICAg
Y29uc3QgSW50ZXJuYWxGb3JtYXQgKnNvdXJjZUVmZmVjdGl2ZUZvcm1hdCA9IE5VTEw7Ci0gICAg
ICAgIGlmIChyZWFkQnVmZmVySGFuZGxlICE9IDApCisgICAgfQorICAgIGVsc2UKKyAgICB7Cisg
ICAgICAgIC8vIFRoZSBlZmZlY3RpdmUgaW50ZXJuYWwgZm9ybWF0IG11c3QgYmUgZGVyaXZlZCBm
cm9tIHRoZSBzb3VyY2UgZnJhbWVidWZmZXIncyBjaGFubmVsCisgICAgICAgIC8vIHNpemVzLiBU
aGlzIGlzIGRvbmUgaW4gR2V0RWZmZWN0aXZlSW50ZXJuYWxGb3JtYXQgZm9yIGxpbmVhciBidWZm
ZXJzICh0YWJsZSAzLjE3KQorICAgICAgICBpZiAoZnJhbWVidWZmZXJGb3JtYXRJbmZvLmNvbG9y
RW5jb2RpbmcgPT0gR0xfTElORUFSKQogICAgICAgICB7Ci0gICAgICAgICAgICAvLyBOb3QgdGhl
IGRlZmF1bHQgZnJhbWVidWZmZXIsIHRoZXJlZm9yZSB0aGUgcmVhZCBidWZmZXIgbXVzdCBiZSBh
IHVzZXItY3JlYXRlZCB0ZXh0dXJlIG9yIHJlbmRlcmJ1ZmZlcgotICAgICAgICAgICAgaWYgKGZy
YW1lYnVmZmVyRm9ybWF0LnNpemVkKQorICAgICAgICAgICAgR0xlbnVtIGVmZmVjdGl2ZUZvcm1h
dDsKKyAgICAgICAgICAgIGlmIChHZXRFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdChmcmFtZWJ1ZmZl
ckZvcm1hdEluZm8sIHRleHR1cmVGb3JtYXRJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZlZmZlY3RpdmVGb3JtYXQpKQogICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHNvdXJjZUVmZmVjdGl2ZUZvcm1hdCA9ICZmcmFtZWJ1ZmZlckZvcm1hdElu
Zm87CisgICAgICAgICAgICAgICAgc291cmNlRWZmZWN0aXZlRm9ybWF0ID0gJkdldEludGVybmFs
Rm9ybWF0SW5mbyhlZmZlY3RpdmVGb3JtYXQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIFJlbmRlcmJ1ZmZlcnMgY2Fu
bm90IGJlIGNyZWF0ZWQgd2l0aCBhbiB1bnNpemVkIGludGVybmFsIGZvcm1hdCwgc28gdGhpcyBt
dXN0IGJlIGFuIHVuc2l6ZWQtZm9ybWF0Ci0gICAgICAgICAgICAgICAgLy8gdGV4dHVyZS4gV2Ug
Y2FuIHVzZSB0aGUgc2FtZSB0YWJsZSB3ZSB1c2Ugd2hlbiBjcmVhdGluZyB0ZXh0dXJlcyB0byBn
ZXQgaXRzIGVmZmVjdGl2ZSBzaXplZCBmb3JtYXQuCi0gICAgICAgICAgICAgICAgR0xlbnVtIHNp
emVkSW50ZXJuYWxGb3JtYXQgPSBHZXRTaXplZEludGVybmFsRm9ybWF0KGZyYW1lYnVmZmVyRm9y
bWF0SW5mby5mb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lYnVmZmVyRm9ybWF0SW5mby50eXBlKTsK
LSAgICAgICAgICAgICAgICBzb3VyY2VFZmZlY3RpdmVGb3JtYXQgPSAmR2V0SW50ZXJuYWxGb3Jt
YXRJbmZvKHNpemVkSW50ZXJuYWxGb3JtYXQpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBlbHNlCisgICAgICAgIGVsc2Ug
aWYgKGZyYW1lYnVmZmVyRm9ybWF0SW5mby5jb2xvckVuY29kaW5nID09IEdMX1NSR0IpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIC8vIFRoZSBlZmZlY3RpdmUgaW50ZXJuYWwgZm9ybWF0IG11c3Qg
YmUgZGVyaXZlZCBmcm9tIHRoZSBzb3VyY2UgZnJhbWVidWZmZXIncyBjaGFubmVsIHNpemVzLgot
ICAgICAgICAgICAgLy8gVGhpcyBpcyBkb25lIGluIEdldEVmZmVjdGl2ZUludGVybmFsRm9ybWF0
IGZvciBsaW5lYXIgYnVmZmVycyAodGFibGUgMy4xNykKLSAgICAgICAgICAgIGlmIChmcmFtZWJ1
ZmZlckZvcm1hdEluZm8uY29sb3JFbmNvZGluZyA9PSBHTF9MSU5FQVIpCisgICAgICAgICAgICAv
LyBTUkdCIGJ1ZmZlcnMgY2FuIG9ubHkgYmUgY29waWVkIHRvIHNpemVkIGZvcm1hdCBkZXN0aW5h
dGlvbnMgYWNjb3JkaW5nIHRvIHRhYmxlIDMuMTgKKyAgICAgICAgICAgIGlmICh0ZXh0dXJlRm9y
bWF0LnNpemVkICYmCisgICAgICAgICAgICAgICAgKGZyYW1lYnVmZmVyRm9ybWF0SW5mby5yZWRC
aXRzID49IDEgJiYgZnJhbWVidWZmZXJGb3JtYXRJbmZvLnJlZEJpdHMgPD0gOCkgJiYKKyAgICAg
ICAgICAgICAgICAoZnJhbWVidWZmZXJGb3JtYXRJbmZvLmdyZWVuQml0cyA+PSAxICYmIGZyYW1l
YnVmZmVyRm9ybWF0SW5mby5ncmVlbkJpdHMgPD0gOCkgJiYKKyAgICAgICAgICAgICAgICAoZnJh
bWVidWZmZXJGb3JtYXRJbmZvLmJsdWVCaXRzID49IDEgJiYgZnJhbWVidWZmZXJGb3JtYXRJbmZv
LmJsdWVCaXRzIDw9IDgpICYmCisgICAgICAgICAgICAgICAgKGZyYW1lYnVmZmVyRm9ybWF0SW5m
by5hbHBoYUJpdHMgPj0gMSAmJiBmcmFtZWJ1ZmZlckZvcm1hdEluZm8uYWxwaGFCaXRzIDw9IDgp
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEdMZW51bSBlZmZlY3RpdmVGb3JtYXQ7
Ci0gICAgICAgICAgICAgICAgaWYgKEdldEVmZmVjdGl2ZUludGVybmFsRm9ybWF0KGZyYW1lYnVm
ZmVyRm9ybWF0SW5mbywgdGV4dHVyZUZvcm1hdEluZm8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZlZmZlY3RpdmVGb3JtYXQpKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc291cmNlRWZmZWN0aXZlRm9ybWF0ID0gJkdldElu
dGVybmFsRm9ybWF0SW5mbyhlZmZlY3RpdmVGb3JtYXQpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgZWxzZSBpZiAoZnJhbWVidWZmZXJGb3JtYXRJbmZvLmNvbG9yRW5jb2RpbmcgPT0gR0xf
U1JHQikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBTUkdCIGJ1ZmZlcnMgY2Fu
IG9ubHkgYmUgY29waWVkIHRvIHNpemVkIGZvcm1hdCBkZXN0aW5hdGlvbnMgYWNjb3JkaW5nIHRv
IHRhYmxlIDMuMTgKLSAgICAgICAgICAgICAgICBpZiAodGV4dHVyZUZvcm1hdC5zaXplZCAmJgot
ICAgICAgICAgICAgICAgICAgICAoZnJhbWVidWZmZXJGb3JtYXRJbmZvLnJlZEJpdHMgPj0gMSAm
JiBmcmFtZWJ1ZmZlckZvcm1hdEluZm8ucmVkQml0cyA8PSA4KSAmJgotICAgICAgICAgICAgICAg
ICAgICAoZnJhbWVidWZmZXJGb3JtYXRJbmZvLmdyZWVuQml0cyA+PSAxICYmCi0gICAgICAgICAg
ICAgICAgICAgICBmcmFtZWJ1ZmZlckZvcm1hdEluZm8uZ3JlZW5CaXRzIDw9IDgpICYmCi0gICAg
ICAgICAgICAgICAgICAgIChmcmFtZWJ1ZmZlckZvcm1hdEluZm8uYmx1ZUJpdHMgPj0gMSAmJiBm
cmFtZWJ1ZmZlckZvcm1hdEluZm8uYmx1ZUJpdHMgPD0gOCkgJiYKLSAgICAgICAgICAgICAgICAg
ICAgKGZyYW1lYnVmZmVyRm9ybWF0SW5mby5hbHBoYUJpdHMgPj0gMSAmJiBmcmFtZWJ1ZmZlckZv
cm1hdEluZm8uYWxwaGFCaXRzIDw9IDgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgc291cmNlRWZmZWN0aXZlRm9ybWF0ID0gJkdldEludGVybmFsRm9ybWF0SW5mbyhH
TF9TUkdCOF9BTFBIQTgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNvdXJjZUVmZmVjdGl2ZUZvcm1hdCA9
ICZHZXRJbnRlcm5hbEZvcm1hdEluZm8oR0xfU1JHQjhfQUxQSEE4KTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotCi0gICAgICAgIGlmICh0ZXh0dXJlRm9ybWF0LnNpemVkKQorICAgICAgICBlbHNl
CiAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFNlY3Rpb24gMy44LjUgb2YgdGhlIEdMRVMgMy4w
LjMgc3BlYywgcGcgMTM5LCByZXF1aXJlcyB0aGF0LCBpZiB0aGUgZGVzdGluYXRpb24KLSAgICAg
ICAgICAgIC8vIGZvcm1hdCBpcyBzaXplZCwgY29tcG9uZW50IHNpemVzIG9mIHRoZSBzb3VyY2Ug
YW5kIGRlc3RpbmF0aW9uIGZvcm1hdHMgbXVzdCBleGFjdGx5Ci0gICAgICAgICAgICAvLyBtYXRj
aCBpZiB0aGUgZGVzdGluYXRpb24gZm9ybWF0IGV4aXN0cy4KLSAgICAgICAgICAgIGlmICghRXF1
YWxPckZpcnN0WmVybyh0ZXh0dXJlRm9ybWF0SW5mby5yZWRCaXRzLCBzb3VyY2VFZmZlY3RpdmVG
b3JtYXQtPnJlZEJpdHMpIHx8Ci0gICAgICAgICAgICAgICAgIUVxdWFsT3JGaXJzdFplcm8odGV4
dHVyZUZvcm1hdEluZm8uZ3JlZW5CaXRzLCBzb3VyY2VFZmZlY3RpdmVGb3JtYXQtPmdyZWVuQml0
cykgfHwKLSAgICAgICAgICAgICAgICAhRXF1YWxPckZpcnN0WmVybyh0ZXh0dXJlRm9ybWF0SW5m
by5ibHVlQml0cywgc291cmNlRWZmZWN0aXZlRm9ybWF0LT5ibHVlQml0cykgfHwKLSAgICAgICAg
ICAgICAgICAhRXF1YWxPckZpcnN0WmVybyh0ZXh0dXJlRm9ybWF0SW5mby5hbHBoYUJpdHMsIHNv
dXJjZUVmZmVjdGl2ZUZvcm1hdC0+YWxwaGFCaXRzKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgfQogCi0g
ICAgICAgIHJldHVybiB0cnVlOyAvLyBBIGNvbnZlcnNpb24gZnVuY3Rpb24gZXhpc3RzLCBhbmQg
bm8gcnVsZSBpbiB0aGUgc3BlY2lmaWNhdGlvbiBoYXMgcHJlY2x1ZGVkIGNvbnZlcnNpb24KLSAg
ICAgICAgICAgICAgICAgICAgIC8vIGJldHdlZW4gdGhlc2UgZm9ybWF0cy4KKyAgICBpZiAodGV4
dHVyZUZvcm1hdC5zaXplZCkKKyAgICB7CisgICAgICAgIC8vIFNlY3Rpb24gMy44LjUgb2YgdGhl
IEdMRVMgMy4wLjMgc3BlYywgcGcgMTM5LCByZXF1aXJlcyB0aGF0LCBpZiB0aGUgZGVzdGluYXRp
b24gZm9ybWF0IGlzCisgICAgICAgIC8vIHNpemVkLCBjb21wb25lbnQgc2l6ZXMgb2YgdGhlIHNv
dXJjZSBhbmQgZGVzdGluYXRpb24gZm9ybWF0cyBtdXN0IGV4YWN0bHkgbWF0Y2ggaWYgdGhlCisg
ICAgICAgIC8vIGRlc3RpbmF0aW9uIGZvcm1hdCBleGlzdHMuCisgICAgICAgIGlmICghRXF1YWxP
ckZpcnN0WmVybyh0ZXh0dXJlRm9ybWF0SW5mby5yZWRCaXRzLCBzb3VyY2VFZmZlY3RpdmVGb3Jt
YXQtPnJlZEJpdHMpIHx8CisgICAgICAgICAgICAhRXF1YWxPckZpcnN0WmVybyh0ZXh0dXJlRm9y
bWF0SW5mby5ncmVlbkJpdHMsIHNvdXJjZUVmZmVjdGl2ZUZvcm1hdC0+Z3JlZW5CaXRzKSB8fAor
ICAgICAgICAgICAgIUVxdWFsT3JGaXJzdFplcm8odGV4dHVyZUZvcm1hdEluZm8uYmx1ZUJpdHMs
IHNvdXJjZUVmZmVjdGl2ZUZvcm1hdC0+Ymx1ZUJpdHMpIHx8CisgICAgICAgICAgICAhRXF1YWxP
ckZpcnN0WmVybyh0ZXh0dXJlRm9ybWF0SW5mby5hbHBoYUJpdHMsIHNvdXJjZUVmZmVjdGl2ZUZv
cm1hdC0+YWxwaGFCaXRzKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOyAg
Ly8gQSBjb252ZXJzaW9uIGZ1bmN0aW9uIGV4aXN0cywgYW5kIG5vIHJ1bGUgaW4gdGhlIHNwZWNp
ZmljYXRpb24gaGFzIHByZWNsdWRlZAorICAgICAgICAgICAgICAgICAgLy8gY29udmVyc2lvbiBi
ZXR3ZWVuIHRoZXNlIGZvcm1hdHMuCiB9CiAKIGJvb2wgVmFsaWRhdGVFUzNDb3B5VGV4SW1hZ2VQ
YXJhbWV0ZXJzQmFzZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKQEAgLTY3OSwxMyArNjI2
LDEzIEBAIGJvb2wgVmFsaWRhdGVFUzNDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShWYWxpZGF0
aW9uQ29udGV4dCAqY29udGV4dCwKICAgICBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0g
c3RhdGUuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7CiAgICAgR0x1aW50IHJlYWRGcmFtZWJ1ZmZlcklE
ICAgICA9IGZyYW1lYnVmZmVyLT5pZCgpOwogCi0gICAgaWYgKGZyYW1lYnVmZmVyLT5jaGVja1N0
YXR1cyhjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKSkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExF
VEUpCisgICAgaWYgKGZyYW1lYnVmZmVyLT5jaGVja1N0YXR1cyhjb250ZXh0KSAhPSBHTF9GUkFN
RUJVRkZFUl9DT01QTEVURSkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBpZiAocmVhZEZyYW1lYnVmZmVySUQgIT0gMCAmJiBmcmFtZWJ1
ZmZlci0+Z2V0U2FtcGxlcyhjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKSkgIT0gMCkKKyAgICBp
ZiAocmVhZEZyYW1lYnVmZmVySUQgIT0gMCAmJiBmcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcyhjb250
ZXh0KSAhPSAwKQogICAgIHsKICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzk4LDcgKzc0
NSw3IEBAIGJvb2wgVmFsaWRhdGVFUzNUZXhTdG9yYWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAq
Y29udGV4dCwKIAogICAgIHN3aXRjaCAodGFyZ2V0KQogICAgIHsKLSAgICAgIGNhc2UgR0xfVEVY
VFVSRV8yRDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOgogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50Pih3aWR0aCkgPiBjYXBzLm1heDJEVGV4dHVyZVNp
emUgfHwKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGhlaWdodCkgPiBjYXBz
Lm1heDJEVGV4dHVyZVNpemUpCkBAIC04MDksNyArNzU2LDcgQEAgYm9vbCBWYWxpZGF0ZUVTM1Rl
eFN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICB9CiAgICAg
ICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVA6CisgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9DVUJFX01BUDoKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHdpZHRo
ICE9IGhlaWdodCkKICAgICAgICAgICAgIHsKQEAgLTgyNSw3ICs3NzIsNyBAQCBib29sIFZhbGlk
YXRlRVMzVGV4U3RvcmFnZVBhcmFtZXRlcnNCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
IH0KICAgICAgICAgYnJlYWs7CiAKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV8zRDoKKyAgICAgICAg
Y2FzZSBHTF9URVhUVVJFXzNEOgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoc3RhdGljX2Nh
c3Q8R0x1aW50Pih3aWR0aCkgPiBjYXBzLm1heDNEVGV4dHVyZVNpemUgfHwKICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGhlaWdodCkgPiBjYXBzLm1heDNEVGV4dHVyZVNpemUg
fHwKQEAgLTgzNyw3ICs3ODQsNyBAQCBib29sIFZhbGlkYXRlRVMzVGV4U3RvcmFnZVBhcmFtZXRl
cnNCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgIGNhc2UgR0xfVEVYVFVSRV8yRF9BUlJBWToKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJE
X0FSUkFZOgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50Pih3
aWR0aCkgPiBjYXBzLm1heDJEVGV4dHVyZVNpemUgfHwKICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxHTHVpbnQ+KGhlaWdodCkgPiBjYXBzLm1heDJEVGV4dHVyZVNpemUgfHwKQEAgLTg0OSw5
ICs3OTYsOSBAQCBib29sIFZhbGlkYXRlRVMzVGV4U3RvcmFnZVBhcmFtZXRlcnNCYXNlKENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKLSAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQtPmdl
dFRhcmdldFRleHR1cmUodGFyZ2V0KTsKQEAgLTg2OCw3ICs4MTUsNyBAQCBib29sIFZhbGlkYXRl
RVMzVGV4U3RvcmFnZVBhcmFtZXRlcnNCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgfQogCiAg
ICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFs
Rm9ybWF0SW5mbyhpbnRlcm5hbGZvcm1hdCk7Ci0gICAgaWYgKCFmb3JtYXRJbmZvLnRleHR1cmVT
dXBwb3J0KGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpLCBjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkpKQorICAgIGlmICghZm9ybWF0SW5mby50ZXh0dXJlU3VwcG9ydChjb250ZXh0LT5n
ZXRDbGllbnRWZXJzaW9uKCksIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSkpCiAgICAgewogICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtOTYzLDggKzkxMCwxMiBAQCBib29sIFZhbGlkYXRlR2V0UXVl
cnlPYmplY3R1aXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkLCBHTGVudW0gcG5hbWUsIEdM
dWludAogICAgIHJldHVybiBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0VmFsdWVCYXNlKGNvbnRleHQs
IGlkLCBwbmFtZSwgbnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1
cmVMYXllcihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZSwg
R0xpbnQgbGV2ZWwsIEdMaW50IGxheWVyKQorYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVy
ZUxheWVyKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gYXR0YWNobWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
YXllcikKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQog
ICAgIHsKQEAgLTk5MSw3ICs5NDIsNyBAQCBib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJl
TGF5ZXIoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dAogCiAgICAg
ICAgIHN3aXRjaCAodGV4LT5nZXRUYXJnZXQoKSkKICAgICAgICAgewotICAgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV8yRF9BUlJBWToKKyAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRF9BUlJB
WToKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAobGV2ZWwgPiBnbDo6bG9nMihj
YXBzLm1heDJEVGV4dHVyZVNpemUpKQogICAgICAgICAgICAgICAgIHsKQEAgLTEwMDcsNyArOTU4
LDcgQEAgYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHQKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBHTF9URVhUVVJFXzNEOgorICAgICAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFXzNEOgogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmIChsZXZl
bCA+IGdsOjpsb2cyKGNhcHMubWF4M0RUZXh0dXJlU2l6ZSkpCiAgICAgICAgICAgICAgICAgewpA
QCAtMTAyMyw5ICs5NzQsOSBAQCBib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dAogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0
IGF1dG8gJmZvcm1hdCA9IHRleC0+Z2V0Rm9ybWF0KHRleC0+Z2V0VGFyZ2V0KCksIGxldmVsKTsK
QEAgLTEwMzksMzYgKzk5MCw5IEBAIGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVMYXll
cihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgVmFsaWRhdGVFUzNSZW5kZXJidWZmZXJTdG9yYWdlUGFyYW1ldGVy
cyhnbDo6Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCi17Ci0gICAgaWYgKCFW
YWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShjb250ZXh0LCB0YXJnZXQs
IHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvL1RoZSBFUzMgc3BlYyhzZWN0aW9uIDQuNC4y
KSBzdGF0ZXMgdGhhdCB0aGUgaW50ZXJuYWwgZm9ybWF0IG11c3QgYmUgc2l6ZWQgYW5kIG5vdCBh
biBpbnRlZ2VyIGZvcm1hdCBpZiBzYW1wbGVzIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLgotICAgIGNv
bnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1h
dEluZm8oaW50ZXJuYWxmb3JtYXQpOwotICAgIGlmICgoZm9ybWF0SW5mby5jb21wb25lbnRUeXBl
ID09IEdMX1VOU0lHTkVEX0lOVCB8fCBmb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfSU5U
KSAmJiBzYW1wbGVzID4gMCkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICAvLyBUaGUgYmVoYXZpb3IgaXMgZGlmZmVyZW50IHRoYW4gdGhlIEFOR0xFIHZlcnNp
b24sIHdoaWNoIHdvdWxkIGdlbmVyYXRlIGEgR0xfT1VUX09GX01FTU9SWS4KLSAgICBjb25zdCBU
ZXh0dXJlQ2FwcyAmZm9ybWF0Q2FwcyA9IGNvbnRleHQtPmdldFRleHR1cmVDYXBzKCkuZ2V0KGlu
dGVybmFsZm9ybWF0KTsKLSAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50PihzYW1wbGVzKSA+IGZv
cm1hdENhcHMuZ2V0TWF4U2FtcGxlcygpKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoCi0gICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKLSAgICAgICAg
ICAgICAgICAgICJTYW1wbGVzIG11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiBtYXhpbXVtIHN1cHBv
cnRlZCB2YWx1ZSBmb3IgdGhlIGZvcm1hdC4iKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBWYWxpZGF0ZUludmFsaWRhdGVGcmFt
ZWJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0dGFj
aG1lbnRzLAorYm9vbCBWYWxpZGF0ZUludmFsaWRhdGVGcmFtZWJ1ZmZlcihDb250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUF0dGFjaG1lbnRz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFj
aG1lbnRzKQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMp
CkBAIC0xMDgyLDE5ICsxMDA2LDIwIEBAIGJvb2wgVmFsaWRhdGVJbnZhbGlkYXRlRnJhbWVidWZm
ZXIoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW1BCiAKICAgICBz
d2l0Y2ggKHRhcmdldCkKICAgICB7Ci0gICAgICBjYXNlIEdMX0RSQVdfRlJBTUVCVUZGRVI6Ci0g
ICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSOgotICAgICAgICAgIGRlZmF1bHRGcmFtZWJ1ZmZlciA9
IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXREcmF3RnJhbWVidWZmZXIoKS0+aWQoKSA9PSAwOwot
ICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9SRUFEX0ZSQU1FQlVGRkVSOgotICAgICAg
ICAgIGRlZmF1bHRGcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRSZWFkRnJh
bWVidWZmZXIoKS0+aWQoKSA9PSAwOwotICAgICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJ
bnZhbGlkIGZyYW1lYnVmZmVyIHRhcmdldCIpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBjYXNlIEdMX0RSQVdfRlJBTUVCVUZGRVI6CisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZG
RVI6CisgICAgICAgICAgICBkZWZhdWx0RnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRl
KCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCktPmlkKCkgPT0gMDsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEdMX1JFQURfRlJBTUVCVUZGRVI6CisgICAgICAgICAgICBkZWZhdWx0RnJh
bWVidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UmVhZEZyYW1lYnVmZmVyKCktPmlk
KCkgPT0gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBm
cmFtZWJ1ZmZlciB0YXJnZXQiKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgcmV0dXJuIFZhbGlkYXRlRGlzY2FyZEZyYW1lYnVmZmVyQmFzZShjb250ZXh0LCB0YXJn
ZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cywgZGVmYXVsdEZyYW1lYnVmZmVyKTsKKyAg
ICByZXR1cm4gVmFsaWRhdGVEaXNjYXJkRnJhbWVidWZmZXJCYXNlKGNvbnRleHQsIHRhcmdldCwg
bnVtQXR0YWNobWVudHMsIGF0dGFjaG1lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdEZyYW1lYnVmZmVyKTsKIH0KIAogYm9vbCBWYWxpZGF0ZUNs
ZWFyQnVmZmVyKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0KQpAQCAtMTEwNSw4ICsxMDMwLDcg
QEAgYm9vbCBWYWxpZGF0ZUNsZWFyQnVmZmVyKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGNvbnRleHQtPmdldEdMU3Rh
dGUoKS5nZXREcmF3RnJhbWVidWZmZXIoKS0+Y2hlY2tTdGF0dXMoY29udGV4dC0+Z2V0Q29udGV4
dFN0YXRlKCkpICE9Ci0gICAgICAgIEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgIGlmIChj
b250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCktPmNoZWNrU3RhdHVzKGNv
bnRleHQpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQogICAgIHsKICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE1MSw3ICsxMDc1LDcgQEAgYm9vbCBWYWxpZGF0
ZURyYXdSYW5nZUVsZW1lbnRzKENvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtdWl2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBw
cm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50KiBwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0
VW5pZm9ybXVpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRp
b24sIEdMdWludCAqcGFyYW1zKQogewogICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZl
cnNpb24oKSA8IDMpCiAgICAgewpAQCAtMTE5Myw3ICsxMTE3LDggQEAgYm9vbCBWYWxpZGF0ZVJl
YWRCdWZmZXIoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHNyYykKICAgICB7CiAgICAgICAgIGlm
IChzcmMgIT0gR0xfQkFDSykKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgY2hhciAqZXJy
b3JNc2cgPSAiJ3NyYycgbXVzdCBiZSBHTF9OT05FIG9yIEdMX0JBQ0sgd2hlbiByZWFkaW5nIGZy
b20gdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIuIjsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVy
cm9yTXNnID0KKyAgICAgICAgICAgICAgICAiJ3NyYycgbXVzdCBiZSBHTF9OT05FIG9yIEdMX0JB
Q0sgd2hlbiByZWFkaW5nIGZyb20gdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIuIjsKICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
ZXJyb3JNc2cpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTMw
NCw2ICsxMjI5LDE1NiBAQCBib29sIFZhbGlkYXRlSXNWZXJ0ZXhBcnJheShDb250ZXh0ICpjb250
ZXh0KQogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgYm9vbCBWYWxpZGF0ZUJpbmRCdWZm
ZXJDb21tb24oQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
cHRyIHNpemUpCit7CisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwg
MykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoYnVm
ZmVyICE9IDAgJiYgb2Zmc2V0IDwgMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJidWZmZXIgaXMgbm9uLXplcm8gYW5kIG9mZnNl
dCBpcyBuZWdhdGl2ZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBp
ZiAoIWNvbnRleHQtPmdldEdMU3RhdGUoKS5pc0JpbmRHZW5lcmF0ZXNSZXNvdXJjZUVuYWJsZWQo
KSAmJgorICAgICAgICAhY29udGV4dC0+aXNCdWZmZXJHZW5lcmF0ZWQoYnVmZmVyKSkKKyAgICB7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiQnVmZmVyIHdhcyBub3QgZ2VuZXJhdGVkLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGNvbnN0IENhcHMgJmNhcHMgPSBjb250ZXh0LT5nZXRDYXBzKCk7CisgICAg
c3dpdGNoICh0YXJnZXQpCisgICAgeworICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFD
S19CVUZGRVI6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBjYXBzLm1heFRy
YW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVBdHRyaWJ1dGVzKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluZGV4IGlzIGdyZWF0
ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyIG9mICIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiBpbmRleGVk
IGJpbmRpbmcgcG9pbnRzLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoYnVmZmVyICE9IDAgJiYgKChvZmZzZXQgJSA0KSAh
PSAwIHx8IChzaXplICUgNCkgIT0gMCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFM
SURfVkFMVUUsICJvZmZzZXQgYW5kIHNpemUgbXVzdCBiZSBtdWx0aXBsZSBvZiA0LiIpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IFRyYW5zZm9ybUZlZWRiYWNrICpjdXJUcmFuc2Zvcm1GZWVkYmFjayA9CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOwor
ICAgICAgICAgICAgaWYgKGN1clRyYW5zZm9ybUZlZWRiYWNrICYmIGN1clRyYW5zZm9ybUZlZWRi
YWNrLT5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXJnZXQgaXMgVFJBTlNGT1JNX0ZFRURCQUNL
X0JVRkZFUiBhbmQgdHJhbnNmb3JtICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZmVlZGJhY2sgaXMgY3VycmVudGx5IGFjdGl2ZS4iKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JVRkZFUjoKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKGluZGV4ID49IGNhcHMubWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdzKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImluZGV4IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyIG9mICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVU5JRk9STV9CVUZGRVIg
aW5kZXhlZCBiaW5kaW5nIHBvaW50cy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYnVmZmVyICE9IDAgJiYgKG9mZnNl
dCAlIGNhcHMudW5pZm9ybUJ1ZmZlck9mZnNldEFsaWdubWVudCkgIT0gMCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAg
ICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Im9mZnNldCBtdXN0IGJlIG11bHRpcGxlIG9mIHZhbHVlIG9mIFVOSUZPUk1fQlVGRkVSX09GRlNF
VF9BTElHTk1FTlQuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQVRP
TUlDX0NPVU5URVJfQlVGRkVSOgorICAgICAgICB7CisgICAgICAgICAgICBpZiAoY29udGV4dC0+
Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKAorICAgICAgICAgICAgICAgICAgICBHTF9J
TlZBTElEX0VOVU0sICJBVE9NSUNfQ09VTlRFUl9CVUZGRVIgaXMgbm90IHN1cHBvcnRlZCBiZWZv
cmUgR0xFUyAzLjEiKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKGluZGV4ID49IGNhcHMubWF4QXRvbWljQ291bnRlckJ1ZmZl
ckJpbmRpbmdzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImluZGV4IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUg
bnVtYmVyIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
QVRPTUlDX0NPVU5URVJfQlVGRkVSIGluZGV4ZWQgYmluZGluZyBwb2ludHMuIikpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChi
dWZmZXIgIT0gMCAmJiAob2Zmc2V0ICUgNCkgIT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAib2Zm
c2V0IG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0LiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUjoKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAg
ICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiU0hBREVSX1NUT1JBR0VfQlVGRkVSIGlzIG5v
dCBzdXBwb3J0ZWQgaW4gR0xFUzMuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBjYXBzLm1heFNoYWRlclN0
b3JhZ2VCdWZmZXJCaW5kaW5ncykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmRleCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1
YWwgdG8gdGhlIG51bWJlciBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlNIQURFUl9TVE9SQUdFX0JVRkZFUiBpbmRleGVkIGJpbmRpbmcgcG9pbnRzLiIp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAoYnVmZmVyICE9IDAgJiYgKG9mZnNldCAlIGNhcHMuc2hhZGVyU3RvcmFnZUJ1ZmZl
ck9mZnNldEFsaWdubWVudCkgIT0gMCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgR0xfSU5WQUxJ
RF9WQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgIm9mZnNldCBtdXN0IGJlIG11bHRpcGxlIG9m
IHZhbHVlIG9mIFNIQURFUl9TVE9SQUdFX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5ULiIpKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAidGhlIHRhcmdldCBpcyBub3Qgc3Vw
cG9ydGVkLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUJpbmRCdWZmZXJCYXNlKENvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0x1aW50IGJ1ZmZlcikKK3sKKyAgICBy
ZXR1cm4gVmFsaWRhdGVCaW5kQnVmZmVyQ29tbW9uKGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGJ1
ZmZlciwgMCwgMCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVCaW5kQnVmZmVyUmFuZ2UoQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludHB0ciBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlw
dHIgc2l6ZSkKK3sKKyAgICBpZiAoYnVmZmVyICE9IDAgJiYgc2l6ZSA8PSAwKQorICAgIHsKKyAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElE
X1ZBTFVFLCAiYnVmZmVyIGlzIG5vbi16ZXJvIGFuZCBzaXplIGlzIGxlc3MgdGhhbiBvciBlcXVh
bCB0byB6ZXJvLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4g
VmFsaWRhdGVCaW5kQnVmZmVyQ29tbW9uKGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwg
b2Zmc2V0LCBzaXplKTsKK30KKwogYm9vbCBWYWxpZGF0ZVByb2dyYW1CaW5hcnkoQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJpbmFyeUZvcm1hdCwKQEAgLTEzNTksNiAr
MTQzNCwyMiBAQCBib29sIFZhbGlkYXRlUHJvZ3JhbVBhcmFtZXRlcmkoQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgRwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBHTF9QUk9HUkFNX1NFUEFSQUJMRToKKyAgICAg
ICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzEpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAg
ICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlBST0dSQU1fU0VQQVJBQkxFIGlzIG5v
dCBzdXBwb3J0ZWQgYmVmb3JlIEdMRVMgMy4xIikpOworICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHZhbHVlICE9IEdMX0ZBTFNF
ICYmIHZhbHVlICE9IEdMX1RSVUUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEdMX0lOVkFMSURf
VkFMVUUsICJJbnZhbGlkIHZhbHVlLCBleHBlY3RlZCBHTF9GQUxTRSBvciBHTF9UUlVFOiAlaSIs
IHZhbHVlKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgcG5hbWU6IDB4
JVgiLCBwbmFtZSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTQwMyw2ICsxNDk0
LDE1IEBAIGJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlcml2KFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LAogICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLndlYmdsQ29tcGF0aWJp
bGl0eSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdGV4cHIgR0xlbnVtIHZh
bGlkQ29tcG9uZW50VHlwZXNbXSA9IHtHTF9JTlR9OworICAgICAgICAgICAgICAgIGlmIChWYWxp
ZGF0ZVdlYkdMRnJhbWVidWZmZXJBdHRhY2htZW50Q2xlYXJUeXBlKAorICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGV4dCwgZHJhd2J1ZmZlciwgdmFsaWRDb21wb25lbnRUeXBlcywgQXJyYXlT
aXplKHZhbGlkQ29tcG9uZW50VHlwZXMpKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEdMX1NURU5DSUw6CkBAIC0xNDM1
LDYgKzE1MzUsMTUgQEAgYm9vbCBWYWxpZGF0ZUNsZWFyQnVmZmVydWl2KFZhbGlkYXRpb25Db250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLndlYmds
Q29tcGF0aWJpbGl0eSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdGV4cHIg
R0xlbnVtIHZhbGlkQ29tcG9uZW50VHlwZXNbXSA9IHtHTF9VTlNJR05FRF9JTlR9OworICAgICAg
ICAgICAgICAgIGlmIChWYWxpZGF0ZVdlYkdMRnJhbWVidWZmZXJBdHRhY2htZW50Q2xlYXJUeXBl
KAorICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwgZHJhd2J1ZmZlciwgdmFsaWRDb21w
b25lbnRUeXBlcywgQXJyYXlTaXplKHZhbGlkQ29tcG9uZW50VHlwZXMpKSkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0
OgpAQCAtMTQ1OSw2ICsxNTY4LDE2IEBAIGJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlcmZ2KFZhbGlk
YXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLndlYmdsQ29tcGF0aWJpbGl0eSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
b25zdGV4cHIgR0xlbnVtIHZhbGlkQ29tcG9uZW50VHlwZXNbXSA9IHtHTF9GTE9BVCwgR0xfVU5T
SUdORURfTk9STUFMSVpFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRH07CisgICAgICAgICAgICAg
ICAgaWYgKFZhbGlkYXRlV2ViR0xGcmFtZWJ1ZmZlckF0dGFjaG1lbnRDbGVhclR5cGUoCisgICAg
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LCBkcmF3YnVmZmVyLCB2YWxpZENvbXBvbmVudFR5
cGVzLCBBcnJheVNpemUodmFsaWRDb21wb25lbnRUeXBlcykpKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgR0xfREVQVEg6
CkBAIC0xNjU5LDYgKzE3NzgsMTIgQEAgYm9vbCBWYWxpZGF0ZUNvbXByZXNzZWRUZXhTdWJJbWFn
ZTNEKENvbnRleHQgKmNvbnRleHQsCiAgICAgfQogCiAgICAgY29uc3QgSW50ZXJuYWxGb3JtYXQg
JmZvcm1hdEluZm8gPSBHZXRJbnRlcm5hbEZvcm1hdEluZm8oZm9ybWF0KTsKKyAgICBpZiAoIWZv
cm1hdEluZm8uY29tcHJlc3NlZCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIk5vdCBhIHZhbGlkIGNvbXByZXNzZWQgdGV4dHVyZSBm
b3JtYXQiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICBhdXRvIGJsb2Nr
U2l6ZU9yRXJyID0KICAgICAgICAgZm9ybWF0SW5mby5jb21wdXRlQ29tcHJlc3NlZEltYWdlU2l6
ZShHTF9VTlNJR05FRF9CWVRFLCBnbDo6RXh0ZW50cyh3aWR0aCwgaGVpZ2h0LCBkZXB0aCkpOwog
ICAgIGlmIChibG9ja1NpemVPckVyci5pc0Vycm9yKCkpCkBAIC0xOTAyLDYgKzIwMjcsNyBAQCBi
b29sIFZhbGlkYXRlSW5kZXhlZFN0YXRlUXVlcnkoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBHTF9NQVhfQ09NUFVURV9XT1JLX0dST1VQX1NJWkU6
CiAgICAgICAgIGNhc2UgR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9DT1VOVDoKICAgICAgICAg
ICAgIGlmIChpbmRleCA+PSAzdSkKQEAgLTE5MTAsNiArMjAzNiw2NCBAQCBib29sIFZhbGlkYXRl
SW5kZXhlZFN0YXRlUXVlcnkoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfU1RBUlQ6CisgICAgICAgIGNh
c2UgR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NJWkU6CisgICAgICAgIGNhc2UgR0xfQVRPTUlD
X0NPVU5URVJfQlVGRkVSX0JJTkRJTkc6CisgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50VmVyc2lvbigpIDwgRVNfM18xKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElE
X0VOVU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICJBdG9taWMgQ291bnRlciBidWZmZXJz
IGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgdmVyc2lvbiBvZiBHTCIpKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaW5kZXgg
Pj0gY2Fwcy5tYXhBdG9taWNDb3VudGVyQnVmZmVyQmluZGluZ3MpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAg
IEVycm9yKEdMX0lOVkFMSURfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmRl
eCBpcyBvdXRzaWRlIHRoZSB2YWxpZCByYW5nZSBmb3IgR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVS
X0JJTkRJTkciKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9TSEFERVJfU1RPUkFHRV9C
VUZGRVJfU1RBUlQ6CisgICAgICAgIGNhc2UgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NJWkU6
CisgICAgICAgIGNhc2UgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkc6CisgICAgICAg
ICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAg
ICAgICAgICBFcnJvcihHTF9JTlZBTElEX0VOVU0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJTaGFkZXIgc3RvcmFnZSBidWZmZXJzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgdmVyc2lv
biBvZiBHTCIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoaW5kZXggPj0gY2Fwcy5tYXhTaGFkZXJTdG9yYWdlQnVmZmVyQmlu
ZGluZ3MpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICJpbmRleCBpcyBvdXRzaWRlIHRoZSB2YWxpZCByYW5nZSBmb3Ig
R0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX0JJTkRJTkciKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBHTF9WRVJURVhfQklORElOR19CVUZGRVI6CisgICAgICAgIGNhc2UgR0xfVkVSVEVYX0JJ
TkRJTkdfRElWSVNPUjoKKyAgICAgICAgY2FzZSBHTF9WRVJURVhfQklORElOR19PRkZTRVQ6Cisg
ICAgICAgIGNhc2UgR0xfVkVSVEVYX0JJTkRJTkdfU1RSSURFOgorICAgICAgICAgICAgaWYgKGNv
bnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgRXJy
b3IoR0xfSU5WQUxJRF9FTlVNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiVmVydGV4IEF0
dHJpYiBCaW5kaW5ncyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHZlcnNpb24gb2YgR0wiKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaWYgKGluZGV4ID49IGNhcHMubWF4VmVydGV4QXR0cmliQmluZGluZ3MpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAg
ICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJiaW5kaW5naW5kZXggbXVzdCBiZSBzbWFsbGVyIHRoYW4gTUFYX1ZFUlRFWF9BVFRSSUJfQklO
RElOR1MuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xOTI1LDcgKzIxMDksNyBAQCBib29sIFZhbGlkYXRlSW5kZXhlZFN0YXRl
UXVlcnkoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAKIGJvb2wgVmFsaWRhdGVHZXRJbnRl
Z2VyaV92KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQg
aW5kZXgsIEdMaW50ICpkYXRhKQogewotICAgIGlmICghY29udGV4dC0+Z2V0R0xWZXJzaW9uKCku
aXNFUzNPckdyZWF0ZXIoKSkKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwg
RVNfM18wKQogICAgIHsKICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMuMCIpKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTk0MCw3ICsyMTI0LDcgQEAgYm9vbCBWYWxpZGF0ZUdl
dEludGVnZXJpX3ZSb2J1c3RBTkdMRShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqZGF0YSkKIHsKLSAgICBpZiAo
IWNvbnRleHQtPmdldEdMVmVyc2lvbigpLmlzRVMzT3JHcmVhdGVyKCkpCisgICAgaWYgKGNvbnRl
eHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMCkKICAgICB7CiAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5v
dCBzdXBwb3J0IEdMRVMzLjAiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5NjYsNyAr
MjE1MCw3IEBAIGJvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyaV92Um9idXN0QU5HTEUoVmFsaWRhdGlv
bkNvbnRleHQgKmNvbnRleHQsCiAKIGJvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyNjRpX3YoVmFsaWRh
dGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQ2
NCAqZGF0YSkKIHsKLSAgICBpZiAoIWNvbnRleHQtPmdldEdMVmVyc2lvbigpLmlzRVMzT3JHcmVh
dGVyKCkpCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMCkKICAg
ICB7CiAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLjAiKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTE5ODEsNyArMjE2NSw3IEBAIGJvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyNjRp
X3ZSb2J1c3RBTkdMRShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCAqZGF0YSkKIHsKLSAgICBpZiAoIWNv
bnRleHQtPmdldEdMVmVyc2lvbigpLmlzRVMzT3JHcmVhdGVyKCkpCisgICAgaWYgKGNvbnRleHQt
PmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMCkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBz
dXBwb3J0IEdMRVMzLjAiKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIwMDUsNCArMjE4
OSwyOTIgQEAgYm9vbCBWYWxpZGF0ZUdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKFZhbGlkYXRp
b25Db250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFZhbGlkYXRl
Q29weUJ1ZmZlclN1YkRhdGEoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHJlYWRUYXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHdyaXRlVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50cHRyIHJlYWRPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnRwdHIgd3JpdGVPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaXB0ciBzaXplKQoreworICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZl
cnNpb24oKSA8IDMpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAg
ICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29weUJ1ZmZlclN1YkRhdGEgcmVx
dWlyZXMgRVMgMyBvciBncmVhdGVyIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgaWYgKCFWYWxpZEJ1ZmZlclRhcmdldChjb250ZXh0LCByZWFkVGFyZ2V0KSB8fCAhVmFs
aWRCdWZmZXJUYXJnZXQoY29udGV4dCwgd3JpdGVUYXJnZXQpKQorICAgIHsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBidWZmZXIg
dGFyZ2V0IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQnVmZmVyICpy
ZWFkQnVmZmVyICA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIocmVhZFRh
cmdldCk7CisgICAgQnVmZmVyICp3cml0ZUJ1ZmZlciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5n
ZXRUYXJnZXRCdWZmZXIod3JpdGVUYXJnZXQpOworCisgICAgaWYgKCFyZWFkQnVmZmVyIHx8ICF3
cml0ZUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiTm8gYnVmZmVyIGJvdW5kIHRvIHRhcmdldCIpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFZlcmlmeSB0aGF0IHJlYWRCdWZmZXIg
YW5kIHdyaXRlQnVmZmVyIGFyZSBub3QgY3VycmVudGx5IG1hcHBlZAorICAgIGlmIChyZWFkQnVm
ZmVyLT5pc01hcHBlZCgpIHx8IHdyaXRlQnVmZmVyLT5pc01hcHBlZCgpKQorICAgIHsKKyAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkNhbm5vdCBjYWxsIENvcHlCdWZmZXJTdWJEYXRhIG9uIGEgbWFwcGVkIGJ1ZmZl
ciIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIENoZWNrZWROdW1lcmlj
PEdMaW50cHRyPiBjaGVja2VkUmVhZE9mZnNldChyZWFkT2Zmc2V0KTsKKyAgICBDaGVja2VkTnVt
ZXJpYzxHTGludHB0cj4gY2hlY2tlZFdyaXRlT2Zmc2V0KHdyaXRlT2Zmc2V0KTsKKyAgICBDaGVj
a2VkTnVtZXJpYzxHTGludHB0cj4gY2hlY2tlZFNpemUoc2l6ZSk7CisKKyAgICBhdXRvIGNoZWNr
ZWRSZWFkU3VtICA9IGNoZWNrZWRSZWFkT2Zmc2V0ICsgY2hlY2tlZFNpemU7CisgICAgYXV0byBj
aGVja2VkV3JpdGVTdW0gPSBjaGVja2VkV3JpdGVPZmZzZXQgKyBjaGVja2VkU2l6ZTsKKworICAg
IGlmICghY2hlY2tlZFJlYWRTdW0uSXNWYWxpZCgpIHx8ICFjaGVja2VkV3JpdGVTdW0uSXNWYWxp
ZCgpIHx8CisgICAgICAgICFJc1ZhbHVlSW5SYW5nZUZvck51bWVyaWNUeXBlPEdMaW50cHRyPihy
ZWFkQnVmZmVyLT5nZXRTaXplKCkpIHx8CisgICAgICAgICFJc1ZhbHVlSW5SYW5nZUZvck51bWVy
aWNUeXBlPEdMaW50cHRyPih3cml0ZUJ1ZmZlci0+Z2V0U2l6ZSgpKSkKKyAgICB7CisgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSwgIkludGVnZXIgb3ZlcmZsb3cgd2hlbiB2YWxpZGF0aW5nIGNvcHkgb2Zmc2V0cy4iKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAocmVhZE9mZnNldCA8IDAgfHwg
d3JpdGVPZmZzZXQgPCAwIHx8IHNpemUgPCAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAicmVhZE9mZnNl
dCwgd3JpdGVPZmZzZXQgYW5kIHNpemUgbXVzdCBhbGwgYmUgbm9uLW5lZ2F0aXZlIikpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGNoZWNrZWRSZWFkU3VtLlZhbHVl
T3JEaWUoKSA+IHJlYWRCdWZmZXItPmdldFNpemUoKSB8fAorICAgICAgICBjaGVja2VkV3JpdGVT
dW0uVmFsdWVPckRpZSgpID4gd3JpdGVCdWZmZXItPmdldFNpemUoKSkKKyAgICB7CisgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSwgIkJ1ZmZlciBvZmZzZXQgb3ZlcmZsb3cgaW4gQ29weUJ1ZmZlclN1YkRhdGEiKSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAocmVhZEJ1ZmZlciA9PSB3cml0ZUJ1
ZmZlcikKKyAgICB7CisgICAgICAgIGF1dG8gY2hlY2tlZE9mZnNldERpZmYgPSAoY2hlY2tlZFJl
YWRPZmZzZXQgLSBjaGVja2VkV3JpdGVPZmZzZXQpLkFicygpOworICAgICAgICBpZiAoIWNoZWNr
ZWRPZmZzZXREaWZmLklzVmFsaWQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVGhpcyBz
aG9sZCBub3QgYmUgcG9zc2libGUuCisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5W
QUxJRF9WQUxVRSwgIkludGVnZXIgb3ZlcmZsb3cgd2hlbiB2YWxpZGF0aW5nIHNhbWUgYnVmZmVy
IGNvcHkuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGNoZWNrZWRPZmZzZXREaWZmLlZhbHVlT3JEaWUoKSA8IHNpemUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUp
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlR2V0U3RyaW5naShDb250ZXh0ICpjb250ZXh0
LCBHTGVudW0gbmFtZSwgR0x1aW50IGluZGV4KQoreworICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRNYWpvclZlcnNpb24oKSA8IDMpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiZ2xHZXRTdHJpbmdp
IHJlcXVpcmVzIE9wZW5HTCBFUyAzLjAgb3IgaGlnaGVyLiIpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHN3aXRjaCAobmFtZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xf
RVhURU5TSU9OUzoKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBjb250ZXh0LT5nZXRFeHRlbnNp
b25TdHJpbmdDb3VudCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKAorICAgICAgICAgICAgICAgICAgICBHTF9JTlZBTElEX1ZBTFVF
LCAiaW5kZXggbXVzdCBiZSBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBleHRlbnNpb24gc3RyaW5n
cy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05T
X0FOR0xFOgorICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkucmVxdWVz
dEV4dGVuc2lvbikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIG5hbWUuIikpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChp
bmRleCA+PSBjb250ZXh0LT5nZXRSZXF1ZXN0YWJsZUV4dGVuc2lvblN0cmluZ0NvdW50KCkpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAg
ICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICJpbmRleCBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgbnVtYmVyIG9mIHJlcXVlc3Rh
YmxlIGV4dGVuc2lvbiBzdHJpbmdzLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAi
SW52YWxpZCBuYW1lLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0
aXNhbXBsZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVp
Z2h0KQoreworICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0
ZVJlbmRlcmJ1ZmZlclN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShjb250ZXh0LCB0YXJnZXQsIHNhbXBs
ZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgLy8gVGhlIEVTMyBzcGVjKHNlY3Rpb24gNC40LjIpIHN0YXRlcyB0
aGF0IHRoZSBpbnRlcm5hbCBmb3JtYXQgbXVzdCBiZSBzaXplZCBhbmQgbm90IGFuIGludGVnZXIK
KyAgICAvLyBmb3JtYXQgaWYgc2FtcGxlcyBpcyBncmVhdGVyIHRoYW4gemVyby4KKyAgICBjb25z
dCBnbDo6SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJ
bmZvKGludGVybmFsZm9ybWF0KTsKKyAgICBpZiAoKGZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9
PSBHTF9VTlNJR05FRF9JTlQgfHwgZm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX0lOVCkg
JiYKKyAgICAgICAgc2FtcGxlcyA+IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgLy8gVGhlIGJlaGF2aW9yIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBBTkdM
RSB2ZXJzaW9uLCB3aGljaCB3b3VsZCBnZW5lcmF0ZSBhIEdMX09VVF9PRl9NRU1PUlkuCisgICAg
Y29uc3QgVGV4dHVyZUNhcHMgJmZvcm1hdENhcHMgPSBjb250ZXh0LT5nZXRUZXh0dXJlQ2Fwcygp
LmdldChpbnRlcm5hbGZvcm1hdCk7CisgICAgaWYgKHN0YXRpY19jYXN0PEdMdWludD4oc2FtcGxl
cykgPiBmb3JtYXRDYXBzLmdldE1heFNhbXBsZXMoKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisg
ICAgICAgICAgICAgICAgICAiU2FtcGxlcyBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gbWF4aW11
bSBzdXBwb3J0ZWQgdmFsdWUgZm9yIHRoZSBmb3JtYXQuIikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhB
dHRyaWJJUG9pbnRlcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IHN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQg
KnBvaW50ZXIpCit7CisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwg
MykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJWZXJ0ZXhBdHRyaWJJUG9pbnRlciByZXF1aXJlcyBP
cGVuR0wgRVMgMy4wIG9yIGhpZ2hlci4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBpZiAoIVZhbGlkYXRlVmVydGV4Rm9ybWF0QmFzZShjb250ZXh0LCBpbmRleCwgc2l6
ZSwgdHlwZSwgdHJ1ZSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgaWYgKHN0cmlkZSA8IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX1ZBTFVFLCAic3RyaWRlIGNhbm5vdCBiZSBuZWdhdGl2ZS4iKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBDYXBzICZjYXBzID0gY29u
dGV4dC0+Z2V0Q2FwcygpOworICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0g
RVNfM18xKQorICAgIHsKKyAgICAgICAgaWYgKHN0cmlkZSA+IGNhcHMubWF4VmVydGV4QXR0cmli
U3RyaWRlKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAg
ICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAic3RyaWRlIGNhbm5vdCBiZSBn
cmVhdGVyIHRoYW4gTUFYX1ZFUlRFWF9BVFRSSUJfU1RSSURFLiIpKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFtPcGVuR0wgRVMgMy4xXSBTZWN0
aW9uIDEwLjMuMSBwYWdlIDI0NToKKyAgICAgICAgLy8gZ2xWZXJ0ZXhBdHRyaWJCaW5kaW5nIGlz
IHBhcnQgb2YgdGhlIGVxdWl2YWxlbnQgY29kZSBvZiBWZXJ0ZXhBdHRyaWJJUG9pbnRlciwgc28g
aXRzCisgICAgICAgIC8vIHZhbGlkYXRpb24gc2hvdWxkIGJlIGluaGVyaXRlZC4KKyAgICAgICAg
aWYgKGluZGV4ID49IGNhcHMubWF4VmVydGV4QXR0cmliQmluZGluZ3MpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgIEVycm9yKEdM
X0lOVkFMSURfVkFMVUUsICJpbmRleCBtdXN0IGJlIHNtYWxsZXIgdGhhbiBNQVhfVkVSVEVYX0FU
VFJJQl9CSU5ESU5HUy4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBbT3BlbkdMIEVTIDMuMC4yXSBTZWN0aW9uIDIuOCBwYWdlIDI0Ogor
ICAgIC8vIEFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZCB3aGVuIGEgbm9u
LXplcm8gdmVydGV4IGFycmF5IG9iamVjdAorICAgIC8vIGlzIGJvdW5kLCB6ZXJvIGlzIGJvdW5k
IHRvIHRoZSBBUlJBWV9CVUZGRVIgYnVmZmVyIG9iamVjdCBiaW5kaW5nIHBvaW50LAorICAgIC8v
IGFuZCB0aGUgcG9pbnRlciBhcmd1bWVudCBpcyBub3QgTlVMTC4KKyAgICBpZiAoY29udGV4dC0+
Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEFycmF5SWQoKSAhPSAwICYmCisgICAgICAgIGNvbnRleHQt
PmdldEdMU3RhdGUoKS5nZXRBcnJheUJ1ZmZlcklkKCkgPT0gMCAmJiBwb2ludGVyICE9IG51bGxw
dHIpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgIkNsaWVudCBkYXRh
IGNhbm5vdCBiZSB1c2VkIHdpdGggYSBub24tZGVmYXVsdCB2ZXJ0ZXggYXJyYXkgb2JqZWN0LiIp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkud2ViZ2xDb21wYXRpYmlsaXR5KQorICAgIHsKKyAgICAgICAgaWYgKCFWYWxp
ZGF0ZVdlYkdMVmVydGV4QXR0cmliUG9pbnRlcihjb250ZXh0LCB0eXBlLCBmYWxzZSwgc3RyaWRl
LCBwb2ludGVyLCB0cnVlKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVH
ZXRTeW5jaXYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xzeW5j
IHN5bmMsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICp2YWx1ZXMpCit7Cisg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJHZXRTeW5jaXYgcmVxdWlyZXMgT3BlbkdMIEVTIDMuMCBvciBoaWdoZXIuIikp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGJ1ZlNpemUgPCAwKQor
ICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSwgImJ1ZlNpemUgY2Fubm90IGJlIG5lZ2F0aXZlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIEZlbmNlU3luYyAqZmVuY2VTeW5jID0gY29udGV4dC0+Z2V0RmVuY2VT
eW5jKHN5bmMpOworICAgIGlmICghZmVuY2VTeW5jKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIkludmFsaWQgc3luYyBvYmplY3Qu
IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNoIChwbmFtZSkK
KyAgICB7CisgICAgICAgIGNhc2UgR0xfT0JKRUNUX1RZUEU6CisgICAgICAgIGNhc2UgR0xfU1lO
Q19DT05ESVRJT046CisgICAgICAgIGNhc2UgR0xfU1lOQ19GTEFHUzoKKyAgICAgICAgY2FzZSBH
TF9TWU5DX1NUQVRVUzoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJ
bnZhbGlkIHBuYW1lLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIGdsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMy5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuaAppbmRleCA0MTQ0
MzRiMDdiNDVhMzYyZWNhOTYzODUyZWFmNTczYThiYTdjMDczLi4yZmU1NTFhMTE4MjQ2MGFlN2I5
OTlmMTJkMWJhMzdjMDZjMzkxZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzLmgKQEAgLTE1Niw5ICsxNTYsNiBAQCBib29s
IFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkLCBH
TGVudW0gcG5hbWUsIEdMdWludAogYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUxheWVy
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlLCBHTGludCBs
ZXZlbCwgR0xpbnQgbGF5ZXIpOwogCi1ib29sIFZhbGlkYXRlRVMzUmVuZGVyYnVmZmVyU3RvcmFn
ZVBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1w
bGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotCiBib29s
IFZhbGlkYXRlSW52YWxpZGF0ZUZyYW1lYnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
YXJnZXQsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpOwogCkBAIC0xOTEsNiArMTg4LDE0
IEBAIGJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UzRChDb250ZXh0ICpjb250ZXh0LAog
Ym9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhBcnJheShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgYXJy
YXkpOwogYm9vbCBWYWxpZGF0ZUlzVmVydGV4QXJyYXkoQ29udGV4dCAqY29udGV4dCk7CiAKK2Jv
b2wgVmFsaWRhdGVCaW5kQnVmZmVyQmFzZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0
LCBHTHVpbnQgaW5kZXgsIEdMdWludCBidWZmZXIpOworYm9vbCBWYWxpZGF0ZUJpbmRCdWZmZXJS
YW5nZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWZmZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaXB0ciBzaXplKTsKKwogYm9vbCBWYWxpZGF0ZVByb2dyYW1CaW5hcnkoQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFt
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJpbmFyeUZvcm1hdCwKQEAgLTM1
Niw2ICszNjEsMzYgQEAgYm9vbCBWYWxpZGF0ZUdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKFZh
bGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQ2NCAqZGF0YSk7CisKK2Jvb2wgVmFsaWRhdGVDb3B5QnVmZmVyU3Vi
RGF0YShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcmVhZFRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gd3JpdGVUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnRwdHIgcmVhZE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0
ciB3cml0ZU9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRy
IHNpemUpOworCitib29sIFZhbGlkYXRlR2V0U3RyaW5naShDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gbmFtZSwgR0x1aW50IGluZGV4KTsKK2Jvb2wgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGhlaWdodCk7CisKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJUG9pbnRlcihWYWxpZGF0aW9u
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOworCitib29sIFZhbGlk
YXRlR2V0U3luY2l2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIEdM
c3luYyBzeW5jLAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqdmFsdWVzKTsK
KwogfSAgLy8gbmFtZXNwYWNlIGdsCiAKICNlbmRpZiAvLyBMSUJBTkdMRV9WQUxJREFUSU9OX0VT
M19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Zh
bGlkYXRpb25FUzMxLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92
YWxpZGF0aW9uRVMzMS5jcHAKaW5kZXggN2Q1YmI0ZjM0Y2ZlMzQyNmE3MTk2NzY4ZTIyNDU4NDlj
ODQyNjFkYS4uYjEyOGYzYTNhNGQwYzcyYTlhMTk5NDFlODgwOGE4YjQ5MGM2ZTNmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMx
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlv
bkVTMzEuY3BwCkBAIC05LDE3ICs5LDcwIEBACiAjaW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlv
bkVTMzEuaCIKIAogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9GcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUy5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUzMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9W
ZXJ0ZXhBcnJheS5oIgorCisjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgogCiB1c2luZyBu
YW1lc3BhY2UgYW5nbGU7CiAKIG5hbWVzcGFjZSBnbAogewogCituYW1lc3BhY2UKK3sKKworYm9v
bCBWYWxpZGF0ZU5hbWVkUHJvZ3JhbUludGVyZmFjZShHTGVudW0gcHJvZ3JhbUludGVyZmFjZSkK
K3sKKyAgICBzd2l0Y2ggKHByb2dyYW1JbnRlcmZhY2UpCisgICAgeworICAgICAgICBjYXNlIEdM
X1VOSUZPUk06CisgICAgICAgIGNhc2UgR0xfVU5JRk9STV9CTE9DSzoKKyAgICAgICAgY2FzZSBH
TF9QUk9HUkFNX0lOUFVUOgorICAgICAgICBjYXNlIEdMX1BST0dSQU1fT1VUUFVUOgorICAgICAg
ICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HOgorICAgICAgICBjYXNlIEdMX0JV
RkZFUl9WQVJJQUJMRToKKyAgICAgICAgY2FzZSBHTF9TSEFERVJfU1RPUkFHRV9CTE9DSzoKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBWYWxpZGF0ZVByb2dyYW1SZXNvdXJjZUluZGV4
KGNvbnN0IFByb2dyYW0gKnByb2dyYW1PYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGluZGV4KQoreworICAgIHN3aXRjaCAocHJvZ3JhbUludGVyZmFj
ZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfUFJPR1JBTV9JTlBVVDoKKyAgICAgICAgICAgIHJl
dHVybiAoaW5kZXggPCBzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dyYW1PYmplY3QtPmdldEFjdGl2
ZUF0dHJpYnV0ZUNvdW50KCkpKTsKKworICAgICAgICBjYXNlIEdMX1BST0dSQU1fT1VUUFVUOgor
ICAgICAgICAgICAgcmV0dXJuIChpbmRleCA8IHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbU9i
amVjdC0+Z2V0T3V0cHV0UmVzb3VyY2VDb3VudCgpKSk7CisKKyAgICAgICAgLy8gVE9ETyhKaWUp
OiBtb3JlIGludGVyZmFjZXMuCisgICAgICAgIGNhc2UgR0xfVU5JRk9STToKKyAgICAgICAgY2Fz
ZSBHTF9VTklGT1JNX0JMT0NLOgorICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19W
QVJZSU5HOgorICAgICAgICBjYXNlIEdMX0JVRkZFUl9WQVJJQUJMRToKKyAgICAgICAgY2FzZSBH
TF9TSEFERVJfU1RPUkFHRV9CTE9DSzoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK30g
IC8vIGFub255bW91cyBuYW1lc3BhY2UKKwogYm9vbCBWYWxpZGF0ZUdldEJvb2xlYW5pX3YoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGJvb2xlYW4gKmRh
dGEpCiB7Ci0gICAgaWYgKCFjb250ZXh0LT5nZXRHTFZlcnNpb24oKS5pc0VTMzEoKSkKKyAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQogICAgIHsKICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0
IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMuMSIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
NDAsNyArOTMsNyBAQCBib29sIFZhbGlkYXRlR2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuICpkYXRhKQogewotICAgIGlmICghY29udGV4dC0+Z2V0R0xWZXJzaW9uKCkuaXNFUzMxKCkp
CisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMSkKICAgICB7CiAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAi
Q29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLjEiKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTY0LDQgKzExNyw3MTQgQEAgYm9vbCBWYWxpZGF0ZUdldEJvb2xlYW5pX3ZSb2J1c3RB
TkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCitib29sIFZhbGlk
YXRlRHJhd0luZGlyZWN0QmFzZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSwgY29uc3Qg
R0x2b2lkICppbmRpcmVjdCkKK3sKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigp
IDwgRVNfM18xKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMuMSIpKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIEhlcmUgdGhlIHRoaXJkIHBh
cmFtZXRlciAxIGlzIG9ubHkgdG8gcGFzcyB0aGUgY291bnQgdmFsaWRhdGlvbi4KKyAgICBpZiAo
IVZhbGlkYXRlRHJhd0Jhc2UoY29udGV4dCwgbW9kZSwgMSkpCisgICAgeworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgU3RhdGUgJnN0YXRlID0gY29udGV4dC0+Z2V0
R0xTdGF0ZSgpOworCisgICAgLy8gQW4gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IgaXMgZ2VuZXJh
dGVkIGlmIHplcm8gaXMgYm91bmQgdG8gVkVSVEVYX0FSUkFZX0JJTkRJTkcsCisgICAgLy8gRFJB
V19JTkRJUkVDVF9CVUZGRVIgb3IgdG8gYW55IGVuYWJsZWQgdmVydGV4IGFycmF5LgorICAgIGlm
ICghc3RhdGUuZ2V0VmVydGV4QXJyYXlJZCgpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJ6ZXJvIGlzIGJvdW5kIHRvIFZF
UlRFWF9BUlJBWV9CSU5ESU5HIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgZ2w6OkJ1ZmZlciAqZHJhd0luZGlyZWN0QnVmZmVyID0gc3RhdGUuZ2V0RHJhd0luZGlyZWN0
QnVmZmVyKCk7CisgICAgaWYgKCFkcmF3SW5kaXJlY3RCdWZmZXIpCisgICAgeworICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgInplcm8gaXMg
Ym91bmQgdG8gRFJBV19JTkRJUkVDVF9CVUZGRVIiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICAvLyBBbiBJTlZBTElEX1ZBTFVFIGVycm9yIGlzIGdlbmVyYXRlZCBpZiBp
bmRpcmVjdCBpcyBub3QgYSBtdWx0aXBsZSBvZiB0aGUgc2l6ZSwgaW4gYmFzaWMKKyAgICAvLyBt
YWNoaW5lIHVuaXRzLCBvZiB1aW50LgorICAgIEdMaW50NjQgb2Zmc2V0ID0gcmVpbnRlcnByZXRf
Y2FzdDxHTGludDY0PihpbmRpcmVjdCk7CisgICAgaWYgKChzdGF0aWNfY2FzdDxHTHVpbnQ+KG9m
ZnNldCkgJSBzaXplb2YoR0x1aW50KSkgIT0gMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwKKyAgICAgICAg
ICAgICAgICAgICJpbmRpcmVjdCBpcyBub3QgYSBtdWx0aXBsZSBvZiB0aGUgc2l6ZSwgaW4gYmFz
aWMgbWFjaGluZSB1bml0cywgb2YgdWludCIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlRHJhd0FycmF5c0luZGly
ZWN0KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlLCBjb25zdCBHTHZvaWQgKmluZGlyZWN0
KQoreworICAgIGNvbnN0IFN0YXRlICZzdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgPSBj
b250ZXh0LT5nZXRHTFN0YXRlKCk7CisgICAgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrICpjdXJUcmFu
c2Zvcm1GZWVkYmFjayA9IHN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOworICAg
IGlmIChjdXJUcmFuc2Zvcm1GZWVkYmFjayAmJiBjdXJUcmFuc2Zvcm1GZWVkYmFjay0+aXNBY3Rp
dmUoKSAmJgorICAgICAgICAhY3VyVHJhbnNmb3JtRmVlZGJhY2stPmlzUGF1c2VkKCkpCisgICAg
eworICAgICAgICAvLyBBbiBJTlZBTElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQgaWYg
dHJhbnNmb3JtIGZlZWRiYWNrIGlzIGFjdGl2ZSBhbmQgbm90IHBhdXNlZC4KKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwgInRyYW5zZm9ybSBmZWVkYmFjayBpcyBhY3RpdmUgYW5kIG5vdCBwYXVzZWQuIikpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZURyYXdJbmRpcmVj
dEJhc2UoY29udGV4dCwgbW9kZSwgaW5kaXJlY3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBnbDo6QnVmZmVyICpkcmF3SW5kaXJlY3RCdWZmZXIgPSBzdGF0ZS5nZXREcmF3SW5kaXJl
Y3RCdWZmZXIoKTsKKyAgICBDaGVja2VkTnVtZXJpYzxzaXplX3Q+IGNoZWNrZWRPZmZzZXQocmVp
bnRlcnByZXRfY2FzdDxzaXplX3Q+KGluZGlyZWN0KSk7CisgICAgLy8gSW4gT3BlbkdMIEVTMy4x
IHNwZWMsIHNlc3Npb24gMTAuNSwgaXQgZGVmaW5lcyB0aGUgc3RydWN0IG9mIERyYXdBcnJheXNJ
bmRpcmVjdENvbW1hbmQKKyAgICAvLyB3aGljaCdzIHNpemUgaXMgNCAqIHNpemVvZih1aW50KS4K
KyAgICBhdXRvIGNoZWNrZWRTdW0gPSBjaGVja2VkT2Zmc2V0ICsgNCAqIHNpemVvZihHTHVpbnQp
OworICAgIGlmICghY2hlY2tlZFN1bS5Jc1ZhbGlkKCkgfHwKKyAgICAgICAgY2hlY2tlZFN1bS5W
YWx1ZU9yRGllKCkgPiBzdGF0aWNfY2FzdDxzaXplX3Q+KGRyYXdJbmRpcmVjdEJ1ZmZlci0+Z2V0
U2l6ZSgpKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAg
ICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAidGhlICBj
b21tYW5kICB3b3VsZCBzb3VyY2UgZGF0YSBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIG9i
amVjdC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luZGlyZWN0KENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpcmVjdCkKK3sKKyAgICBpZiAo
IVZhbGlkYXRlRHJhd0VsZW1lbnRzQmFzZShjb250ZXh0LCB0eXBlKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgY29uc3QgU3RhdGUgJnN0YXRlICAgICAgICAgICAgID0gY29udGV4dC0+
Z2V0R0xTdGF0ZSgpOworICAgIGNvbnN0IFZlcnRleEFycmF5ICp2YW8gICAgICAgICA9IHN0YXRl
LmdldFZlcnRleEFycmF5KCk7CisgICAgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVyID0g
dmFvLT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKS5nZXQoKTsKKyAgICBpZiAoIWVsZW1lbnRBcnJh
eUJ1ZmZlcikKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiemVybyBpcyBib3VuZCB0byBFTEVNRU5UX0FSUkFZX0JVRkZFUiIp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVEcmF3
SW5kaXJlY3RCYXNlKGNvbnRleHQsIG1vZGUsIGluZGlyZWN0KSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgZ2w6OkJ1ZmZlciAqZHJhd0luZGlyZWN0QnVmZmVyID0gc3RhdGUuZ2V0RHJh
d0luZGlyZWN0QnVmZmVyKCk7CisgICAgQ2hlY2tlZE51bWVyaWM8c2l6ZV90PiBjaGVja2VkT2Zm
c2V0KHJlaW50ZXJwcmV0X2Nhc3Q8c2l6ZV90PihpbmRpcmVjdCkpOworICAgIC8vIEluIE9wZW5H
TCBFUzMuMSBzcGVjLCBzZXNzaW9uIDEwLjUsIGl0IGRlZmluZXMgdGhlIHN0cnVjdCBvZiBEcmF3
RWxlbWVudHNJbmRpcmVjdENvbW1hbmQKKyAgICAvLyB3aGljaCdzIHNpemUgaXMgNSAqIHNpemVv
Zih1aW50KS4KKyAgICBhdXRvIGNoZWNrZWRTdW0gPSBjaGVja2VkT2Zmc2V0ICsgNSAqIHNpemVv
ZihHTHVpbnQpOworICAgIGlmICghY2hlY2tlZFN1bS5Jc1ZhbGlkKCkgfHwKKyAgICAgICAgY2hl
Y2tlZFN1bS5WYWx1ZU9yRGllKCkgPiBzdGF0aWNfY2FzdDxzaXplX3Q+KGRyYXdJbmRpcmVjdEJ1
ZmZlci0+Z2V0U2l6ZSgpKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAor
ICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAg
ICAidGhlICBjb21tYW5kICB3b3VsZCBzb3VyY2UgZGF0YSBiZXlvbmQgdGhlIGVuZCBvZiB0aGUg
YnVmZmVyIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyQmFzZShD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgpCit7CisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMSkKKyAg
ICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLjEiKSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobGVuZ3RoKQorICAgIHsKKyAgICAgICAgKmxlbmd0
aCA9IDA7CisgICAgfQorCisgICAgaWYgKCFWYWxpZFRleExldmVsRGVzdGluYXRpb25UYXJnZXQo
Y29udGV4dCwgdGFyZ2V0KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgdGV4dHVyZSB0YXJnZXQiKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoY29udGV4dC0+Z2V0VGFyZ2V0VGV4dHVy
ZShJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkgPyBHTF9URVhUVVJFX0NVQkVfTUFQIDog
dGFyZ2V0KSA9PQorICAgICAgICBudWxscHRyKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiTm8gdGV4dHVyZSBib3VuZC4iKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkTWlwTGV2ZWwoY29u
dGV4dCwgdGFyZ2V0LCBsZXZlbCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1JF
RF9UWVBFOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfR1JFRU5fVFlQRToKKyAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX0JMVUVfVFlQRToKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0FMUEhBX1RZ
UEU6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9ERVBUSF9UWVBFOgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9SRURfU0laRToKKyAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX0dSRUVOX1NJWkU6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CTFVFX1NJWkU6Cisg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9BTFBIQV9TSVpFOgorICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfREVQVEhfU0laRToKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NURU5DSUxfU0laRToKKyAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX1NIQVJFRF9TSVpFOgorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVQ6CisgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9XSURUSDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0hFSUdIVDoKKyAgICAgICAg
Y2FzZSBHTF9URVhUVVJFX0RFUFRIOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9TQU1QTEVTOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfRklYRURfU0FNUExF
X0xPQ0FUSU9OUzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
Q09NUFJFU1NFRDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiVW5rbm93
biBwbmFtZS4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYg
KGxlbmd0aCkKKyAgICB7CisgICAgICAgICpsZW5ndGggPSAxOworICAgIH0KKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyZnYoQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICByZXR1
cm4gVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlckJhc2UoY29udGV4dCwgdGFyZ2V0LCBsZXZl
bCwgcG5hbWUsIG51bGxwdHIpOworfQorCitib29sIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0
ZXJpdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykK
K3sKKyAgICByZXR1cm4gVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlckJhc2UoY29udGV4dCwg
dGFyZ2V0LCBsZXZlbCwgcG5hbWUsIG51bGxwdHIpOworfQorCitib29sIFZhbGlkYXRlVGV4U3Rv
cmFnZTJETXVsdGlTYW1wbGUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMYm9vbGVhbiBmaXhlZFNhbXBsZUxvY2F0aW9ucykKK3sKKyAgICBpZiAoY29udGV4
dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90
IHN1cHBvcnQgR0xFUzMuMS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBpZiAodGFyZ2V0ICE9IEdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUpCisgICAgeworICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJUYXJnZXQgbXVz
dCBiZSBURVhUVVJFXzJEX01VTFRJU0FNUExFLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmICh3aWR0aCA8IDEgfHwgaGVpZ2h0IDwgMSkKKyAgICB7CisgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJXaWR0aCBhbmQg
aGVpZ2h0IG11c3QgYmUgcG9zaXRpdmUuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgY29uc3QgQ2FwcyAmY2FwcyA9IGNvbnRleHQtPmdldENhcHMoKTsKKyAgICBpZiAo
c3RhdGljX2Nhc3Q8R0x1aW50Pih3aWR0aCkgPiBjYXBzLm1heDJEVGV4dHVyZVNpemUgfHwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihoZWlnaHQpID4gY2Fwcy5tYXgyRFRleHR1cmVTaXpl
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJv
cihHTF9JTlZBTElEX1ZBTFVFLAorICAgICAgICAgICAgICAgICAgIldpZHRoIGFuZCBoZWlnaHQg
bXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gR0xfTUFYX1RFWFRVUkVfU0laRS4iKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoc2FtcGxlcyA9PSAwKQorICAg
IHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwg
IlNhbXBsZXMgbWF5IG5vdCBiZSB6ZXJvLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGNvbnN0IFRleHR1cmVDYXBzICZmb3JtYXRDYXBzID0gY29udGV4dC0+Z2V0VGV4
dHVyZUNhcHMoKS5nZXQoaW50ZXJuYWxGb3JtYXQpOworICAgIGlmICghZm9ybWF0Q2Fwcy5yZW5k
ZXJhYmxlKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAg
ICBFcnJvcihHTF9JTlZBTElEX0VOVU0sCisgICAgICAgICAgICAgICAgICAiU2l6ZWRJbnRlcm5h
bGZvcm1hdCBtdXN0IGJlIGNvbG9yLXJlbmRlcmFibGUsIGRlcHRoLXJlbmRlcmFibGUsICIKKyAg
ICAgICAgICAgICAgICAgICJvciBzdGVuY2lsLXJlbmRlcmFibGUuIikpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gVGhlIEVTMy4xIHNwZWMoc2VjdGlvbiA4LjgpIHN0
YXRlcyB0aGF0IGFuIElOVkFMSURfRU5VTSBlcnJvciBpcyBnZW5lcmF0ZWQgaWYgaW50ZXJuYWxm
b3JtYXQKKyAgICAvLyBpcyBvbmUgb2YgdGhlIHVuc2l6ZWQgYmFzZSBpbnRlcm5hbGZvcm1hdHMg
bGlzdGVkIGluIHRhYmxlIDguMTEuCisgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZmb3Jt
YXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbEZvcm1hdCk7CisgICAg
aWYgKGZvcm1hdEluZm8ucGl4ZWxCeXRlcyA9PSAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX0VOVU0sCisgICAgICAg
ICAgICAgICAgICAiSW50ZXJuYWxmb3JtYXQgaXMgb25lIG9mIHRoZSB1bnN1cHBvcnRlZCB1bnNp
emVkIGJhc2UgaW50ZXJuYWxmb3JtYXRzLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KHNhbXBsZXMpID4gZm9ybWF0Q2Fwcy5n
ZXRNYXhTYW1wbGVzKCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAg
ICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAg
IlNhbXBsZXMgbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIG1heGltdW0gc3VwcG9ydGVkIHZhbHVl
IGZvciB0aGUgZm9ybWF0LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IFRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7Cisg
ICAgaWYgKCF0ZXh0dXJlIHx8IHRleHR1cmUtPmlkKCkgPT0gMCkKKyAgICB7CisgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiWmVybyBpcyBi
b3VuZCB0byB0YXJnZXQuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
aWYgKHRleHR1cmUtPmdldEltbXV0YWJsZUZvcm1hdCgpKQorICAgIHsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwK
KyAgICAgICAgICAgICAgICAgICJUaGUgdmFsdWUgb2YgVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFU
IGZvciB0aGUgdGV4dHVyZSAiCisgICAgICAgICAgICAgICAgICAiY3VycmVudGx5IGJvdW5kIHRv
IHRhcmdldCBvbiB0aGUgYWN0aXZlIHRleHR1cmUgdW5pdCBpcyB0cnVlLiIpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlk
YXRlR2V0TXVsdGlzYW1wbGVmdihDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMdWlu
dCBpbmRleCwgR0xmbG9hdCAqdmFsKQoreworICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJz
aW9uKCkgPCBFU18zXzEpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBHTEVTMy4x
LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChwbmFtZSAhPSBH
TF9TQU1QTEVfUE9TSVRJT04pCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0sICJQbmFtZSBtdXN0IGJlIFNBTVBMRV9QT1NJVElPTi4iKSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBHTGludCBtYXhTYW1wbGVzID0g
Y29udGV4dC0+Z2V0Q2FwcygpLm1heFNhbXBsZXM7CisgICAgaWYgKGluZGV4ID49IHN0YXRpY19j
YXN0PEdMdWludD4obWF4U2FtcGxlcykpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJJbmRleCBtdXN0IGJl
IGxlc3MgdGhhbiB0aGUgdmFsdWUgb2YgU0FNUExFUy4iKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0aW9uRnJhbWVi
dWZmZXJQYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBw
bmFtZSwgR0xpbnQgcGFyYW0pCit7CisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24o
KSA8IEVTXzNfMSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLjEuIikp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZEZyYW1lYnVm
ZmVyVGFyZ2V0KHRhcmdldCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGZyYW1lYnVmZmVyIHRhcmdldC4iKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsK
KyAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9ERUZBVUxUX1dJRFRIOgorICAgICAgICB7Cisg
ICAgICAgICAgICBHTGludCBtYXhXaWR0aCA9IGNvbnRleHQtPmdldENhcHMoKS5tYXhGcmFtZWJ1
ZmZlcldpZHRoOworICAgICAgICAgICAgaWYgKHBhcmFtIDwgMCB8fCBwYXJhbSA+IG1heFdpZHRo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAor
ICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiUGFyYW1zIGxlc3MgdGhhbiAwIG9yIGdyZWF0ZXIgdGhhbiBHTF9NQVhf
RlJBTUVCVUZGRVJfV0lEVEguIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
R0xfRlJBTUVCVUZGRVJfREVGQVVMVF9IRUlHSFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIEdM
aW50IG1heEhlaWdodCA9IGNvbnRleHQtPmdldENhcHMoKS5tYXhGcmFtZWJ1ZmZlckhlaWdodDsK
KyAgICAgICAgICAgIGlmIChwYXJhbSA8IDAgfHwgcGFyYW0gPiBtYXhIZWlnaHQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAg
ICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJQYXJhbXMgbGVzcyB0aGFuIDAgb3IgZ3JlYXRlciB0aGFuIEdMX01BWF9GUkFNRUJVRkZF
Ul9IRUlHSFQuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfRlJBTUVC
VUZGRVJfREVGQVVMVF9TQU1QTEVTOgorICAgICAgICB7CisgICAgICAgICAgICBHTGludCBtYXhT
YW1wbGVzID0gY29udGV4dC0+Z2V0Q2FwcygpLm1heEZyYW1lYnVmZmVyU2FtcGxlczsKKyAgICAg
ICAgICAgIGlmIChwYXJhbSA8IDAgfHwgcGFyYW0gPiBtYXhTYW1wbGVzKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAg
ICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAi
UGFyYW1zIGxlc3MgdGhhbiAwIG9yIGdyZWF0ZXIgdGhhbiBHTF9NQVhfRlJBTUVCVUZGRVJfU0FN
UExFUy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZF
Ul9ERUZBVUxUX0ZJWEVEX1NBTVBMRV9MT0NBVElPTlM6CisgICAgICAgIHsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQg
cG5hbWU6IDB4JVgiLCBwbmFtZSkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgfQorCisgICAgY29uc3QgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gY29udGV4
dC0+Z2V0R0xTdGF0ZSgpLmdldFRhcmdldEZyYW1lYnVmZmVyKHRhcmdldCk7CisgICAgQVNTRVJU
KGZyYW1lYnVmZmVyKTsKKyAgICBpZiAoZnJhbWVidWZmZXItPmlkKCkgPT0gMCkKKyAgICB7Cisg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJEZWZhdWx0IGZyYW1lYnVmZmVyIGlzIGJvdW5kIHRvIHRhcmdldC4iKSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgVmFsaWRhdGlvbkdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaShDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCit7Cisg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMSkKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29u
dGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLjEuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKCFWYWxpZEZyYW1lYnVmZmVyVGFyZ2V0KHRhcmdldCkpCisgICAg
eworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJ
bnZhbGlkIGZyYW1lYnVmZmVyIHRhcmdldC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9GUkFNRUJV
RkZFUl9ERUZBVUxUX1dJRFRIOgorICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRf
SEVJR0hUOgorICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfU0FNUExFUzoKKyAg
ICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9ERUZBVUxUX0ZJWEVEX1NBTVBMRV9MT0NBVElPTlM6
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgcG5hbWU6IDB4
JVgiLCBwbmFtZSkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNv
bnN0IEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRU
YXJnZXRGcmFtZWJ1ZmZlcih0YXJnZXQpOworICAgIEFTU0VSVChmcmFtZWJ1ZmZlcik7CisKKyAg
ICBpZiAoZnJhbWVidWZmZXItPmlkKCkgPT0gMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJEZWZh
dWx0IGZyYW1lYnVmZmVyIGlzIGJvdW5kIHRvIHRhcmdldC4iKSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRQcm9n
cmFtUmVzb3VyY2VJbmRleChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKK3sKKyAgICBpZiAoY29udGV4
dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90
IHN1cHBvcnQgR0xFUyAzLjEuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9n
cmFtKTsKKyAgICBpZiAocHJvZ3JhbU9iamVjdCA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVOYW1lZFByb2dyYW1JbnRl
cmZhY2UocHJvZ3JhbUludGVyZmFjZSkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgcHJvZ3Jh
bSBpbnRlcmZhY2U6IDB4JVgiLCBwcm9ncmFtSW50ZXJmYWNlKSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUJpbmRW
ZXJ0ZXhCdWZmZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgYmluZGluZ0luZGV4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3Ry
aWRlKQoreworICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzEpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBHTEVTMy4xLiIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghY29udGV4dC0+aXNCdWZmZXJHZW5lcmF0ZWQo
YnVmZmVyKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiQnVmZmVyIGlzIG5vdCBnZW5lcmF0ZWQuIikpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgQ2FwcyAmY2FwcyA9IGNvbnRleHQtPmdl
dENhcHMoKTsKKyAgICBpZiAoYmluZGluZ0luZGV4ID49IGNhcHMubWF4VmVydGV4QXR0cmliQmlu
ZGluZ3MpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcigKKyAgICAg
ICAgICAgIEdMX0lOVkFMSURfVkFMVUUsICJiaW5kaW5naW5kZXggbXVzdCBiZSBzbWFsbGVyIHRo
YW4gTUFYX1ZFUlRFWF9BVFRSSUJfQklORElOR1MuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKG9mZnNldCA8IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAib2Zmc2V0IGNhbm5vdCBiZSBuZWdh
dGl2ZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoc3RyaWRl
IDwgMCB8fCBzdHJpZGUgPiBjYXBzLm1heFZlcnRleEF0dHJpYlN0cmlkZSkKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSwgInN0cmlkZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgTUFYX1ZFUlRFWF9BVFRSSUJfU1RS
SURFLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFtPcGVuR0wg
RVMgMy4xXSBTZWN0aW9uIDEwLjMuMSBwYWdlIDI0NDoKKyAgICAvLyBBbiBJTlZBTElEX09QRVJB
VElPTiBlcnJvciBpcyBnZW5lcmF0ZWQgaWYgdGhlIGRlZmF1bHQgdmVydGV4IGFycmF5IG9iamVj
dCBpcyBib3VuZC4KKyAgICBpZiAoY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEFycmF5
SWQoKSA9PSAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJEZWZhdWx0IHZlcnRleCBhcnJheSBidWZmZXIgaXMgYm91bmQu
IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhCaW5kaW5nRGl2aXNvcihWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IGJpbmRpbmdJbmRleCwgR0x1aW50IGRpdmlzb3IpCit7CisgICAgaWYg
KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMSkKKyAgICB7CisgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBk
b2VzIG5vdCBzdXBwb3J0IEdMRVMzLjEuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgY29uc3QgQ2FwcyAmY2FwcyA9IGNvbnRleHQtPmdldENhcHMoKTsKKyAgICBpZiAo
YmluZGluZ0luZGV4ID49IGNhcHMubWF4VmVydGV4QXR0cmliQmluZGluZ3MpCisgICAgeworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcigKKyAgICAgICAgICAgIEdMX0lOVkFMSURf
VkFMVUUsICJiaW5kaW5naW5kZXggbXVzdCBiZSBzbWFsbGVyIHRoYW4gTUFYX1ZFUlRFWF9BVFRS
SUJfQklORElOR1MuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8g
W09wZW5HTCBFUyAzLjFdIFNlY3Rpb24gMTAuMy4xIHBhZ2UgMjQzOgorICAgIC8vIEFuIElOVkFM
SURfT1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZCBpZiB0aGUgZGVmYXVsdCB2ZXJ0ZXggYXJy
YXkgb2JqZWN0IGlzIGJvdW5kLgorICAgIGlmIChjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVy
dGV4QXJyYXlJZCgpID09IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkRlZmF1bHQgdmVydGV4IGFycmF5IG9iamVjdCBp
cyBib3VuZC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYkZvcm1hdChWYWxpZGF0aW9uQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGF0
dHJpYkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJlbGF0aXZlT2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gcHVyZUludGVnZXIpCit7CisgICAgaWYgKGNv
bnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMSkKKyAgICB7CisgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2Vz
IG5vdCBzdXBwb3J0IEdMRVMzLjEuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgY29uc3QgQ2FwcyAmY2FwcyA9IGNvbnRleHQtPmdldENhcHMoKTsKKyAgICBpZiAocmVs
YXRpdmVPZmZzZXQgPiBzdGF0aWNfY2FzdDxHTHVpbnQ+KGNhcHMubWF4VmVydGV4QXR0cmliUmVs
YXRpdmVPZmZzZXQpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAg
ICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLAorICAgICAgICAgICAgICAgICAgInJlbGF0
aXZlT2Zmc2V0IGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gTUFYX1ZFUlRFWF9BVFRSSUJfUkVMQVRJ
VkVfT0ZGU0VULiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFtP
cGVuR0wgRVMgMy4xXSBTZWN0aW9uIDEwLjMuMSBwYWdlIDI0MzoKKyAgICAvLyBBbiBJTlZBTElE
X09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQgaWYgdGhlIGRlZmF1bHQgdmVydGV4IGFycmF5
IG9iamVjdCBpcyBib3VuZC4KKyAgICBpZiAoY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFZlcnRl
eEFycmF5SWQoKSA9PSAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJEZWZhdWx0IHZlcnRleCBhcnJheSBvYmplY3QgaXMg
Ym91bmQuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIFZh
bGlkYXRlVmVydGV4Rm9ybWF0QmFzZShjb250ZXh0LCBhdHRyaWJJbmRleCwgc2l6ZSwgdHlwZSwg
cHVyZUludGVnZXIpOworfQorCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliQmluZGluZyhWYWxp
ZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBhdHRyaWJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBiaW5kaW5nSW5kZXgpCit7CisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24o
KSA8IEVTXzNfMSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLjEuIikp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gW09wZW5HTCBFUyAzLjFd
IFNlY3Rpb24gMTAuMy4xIHBhZ2UgMjQzOgorICAgIC8vIEFuIElOVkFMSURfT1BFUkFUSU9OIGVy
cm9yIGlzIGdlbmVyYXRlZCBpZiB0aGUgZGVmYXVsdCB2ZXJ0ZXggYXJyYXkgb2JqZWN0IGlzIGJv
dW5kLgorICAgIGlmIChjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXJyYXlJZCgpID09
IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgIkRlZmF1bHQgdmVydGV4IGFycmF5IG9iamVjdCBpcyBib3VuZC4iKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBDYXBzICZjYXBzID0gY29u
dGV4dC0+Z2V0Q2FwcygpOworICAgIGlmIChhdHRyaWJJbmRleCA+PSBjYXBzLm1heFZlcnRleEF0
dHJpYnV0ZXMpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAg
ICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJhdHRyaWJpbmRleCBtdXN0IGJlIHNtYWxsZXIg
dGhhbiBNQVhfVkVSVEVYX0FUVFJJQlMuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgaWYgKGJpbmRpbmdJbmRleCA+PSBjYXBzLm1heFZlcnRleEF0dHJpYkJpbmRpbmdz
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJpbmRpbmdpbmRleCBt
dXN0IGJlIHNtYWxsZXIgdGhhbiBNQVhfVkVSVEVYX0FUVFJJQl9CSU5ESU5HUyIpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZh
bGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlTmFtZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMY2hhciAqbmFtZSkKK3sKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50VmVyc2lvbigpIDwgRVNfM18xKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQg
R0xFUzMuMS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBQcm9ncmFt
ICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pOworICAg
IGlmIChwcm9ncmFtT2JqZWN0ID09IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZU5hbWVkUHJvZ3JhbUludGVyZmFjZShwcm9n
cmFtSW50ZXJmYWNlKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAg
ICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBwcm9ncmFtIGludGVyZmFj
ZTogMHglWCIsIHByb2dyYW1JbnRlcmZhY2UpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIGlmICghVmFsaWRhdGVQcm9ncmFtUmVzb3VyY2VJbmRleChwcm9ncmFtT2JqZWN0
LCBwcm9ncmFtSW50ZXJmYWNlLCBpbmRleCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiSW52YWxpZCBpbmRleDogJWQiLCBpbmRl
eCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGJ1ZlNpemUgPCAw
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSwgIkludmFsaWQgYnVmU2l6ZTogJWQiLCBidWZTaXplKSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZURpc3Bh
dGNoQ29tcHV0ZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbnVtR3JvdXBzWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IG51bUdyb3Vwc1ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1Hcm91
cHNaKQoreworICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzEpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBHTEVTMy4xLiIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IFN0YXRlICZzdGF0ZSA9IGNvbnRleHQtPmdl
dEdMU3RhdGUoKTsKKyAgICBQcm9ncmFtICpwcm9ncmFtICAgPSBzdGF0ZS5nZXRQcm9ncmFtKCk7
CisKKyAgICBpZiAocHJvZ3JhbSA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIk5v
IGFjdGl2ZSBwcm9ncmFtIG9iamVjdCBmb3IgdGhlIGNvbXB1dGUgc2hhZGVyIHN0YWdlLiIpKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChwcm9ncmFtLT5pc0xpbmtl
ZCgpID09IGZhbHNlIHx8IHByb2dyYW0tPmdldEF0dGFjaGVkQ29tcHV0ZVNoYWRlcigpID09IG51
bGxwdHIpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcigKKyAgICAg
ICAgICAgIEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgIlByb2dyYW0gaGFzIG5v
dCBiZWVuIHN1Y2Nlc3NmdWxseSBsaW5rZWQsIG9yIHByb2dyYW0gY29udGFpbnMgbm8gY29tcHV0
ZSBzaGFkZXJzLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0
IENhcHMgJmNhcHMgPSBjb250ZXh0LT5nZXRDYXBzKCk7CisgICAgaWYgKG51bUdyb3Vwc1ggPiBj
YXBzLm1heENvbXB1dGVXb3JrR3JvdXBDb3VudFswXSkKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwKKyAgICAg
ICAgICAgICAgICAgICJudW1fZ3JvdXBzX3ggY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiBNQVhfQ09N
UFVURV9XT1JLX0dST1VQX0NPVU5UWzBdKCV1KS4iLAorICAgICAgICAgICAgICAgICAgY2Fwcy5t
YXhDb21wdXRlV29ya0dyb3VwQ291bnRbMF0pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICBpZiAobnVtR3JvdXBzWSA+IGNhcHMubWF4Q29tcHV0ZVdvcmtHcm91cENvdW50WzFd
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJv
cihHTF9JTlZBTElEX1ZBTFVFLAorICAgICAgICAgICAgICAgICAgIm51bV9ncm91cHNfeSBjYW5u
b3QgYmUgZ3JlYXRlciB0aGFuIE1BWF9DT01QVVRFX1dPUktfR1JPVVBfQ09VTlRbMV0oJXUpLiIs
CisgICAgICAgICAgICAgICAgICBjYXBzLm1heENvbXB1dGVXb3JrR3JvdXBDb3VudFsxXSkpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChudW1Hcm91cHNaID4gY2Fwcy5t
YXhDb21wdXRlV29ya0dyb3VwQ291bnRbMl0pCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsCisgICAgICAgICAg
ICAgICAgICAibnVtX2dyb3Vwc196IGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gTUFYX0NPTVBVVEVf
V09SS19HUk9VUF9DT1VOVFsyXSgldSkuIiwKKyAgICAgICAgICAgICAgICAgIGNhcHMubWF4Q29t
cHV0ZVdvcmtHcm91cENvdW50WzJdKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIGdsCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMzEuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzMS5oCmluZGV4
IDYzY2EwZGI1YmRmNDQ4NGViNmM4ODc2NDY3Mjk4NGE2NTlhZDY0YTcuLmE4YWU0OWVhMDY2NGM4
NmIwYmM2ZDc3MzAxZDg3ZmU2M2IzODE5NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzMS5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzMS5oCkBAIC0xNCw2ICsxNCw3IEBA
CiBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENvbnRleHQ7CitjbGFzcyBWYWxpZGF0aW9uQ29udGV4
dDsKIAogYm9vbCBWYWxpZGF0ZUdldEJvb2xlYW5pX3YoQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGJvb2xlYW4gKmRhdGEpOwogYm9vbCBWYWxpZGF0ZUdl
dEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LApAQCAtMjMsNiArMjQsNzIg
QEAgYm9vbCBWYWxpZGF0ZUdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiAqZGF0YSk7
CiAKK2Jvb2wgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2KENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFRl
eExldmVsUGFyYW1ldGVyaXYoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50ICpwYXJhbSk7CisKK2Jvb2wgVmFsaWRhdGVUZXhTdG9yYWdlMkRNdWx0aVNhbXBsZShDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBz
YW1wbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVy
bmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
d2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWln
aHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGZpeGVk
U2FtcGxlTG9jYXRpb25zKTsKK2Jvb2wgVmFsaWRhdGVHZXRNdWx0aXNhbXBsZWZ2KENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0x1aW50IGluZGV4LCBHTGZsb2F0ICp2YWwpOworCiti
b29sIFZhbGlkYXRlRHJhd0luZGlyZWN0QmFzZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9k
ZSwgY29uc3QgR0x2b2lkICppbmRpcmVjdCk7Citib29sIFZhbGlkYXRlRHJhd0FycmF5c0luZGly
ZWN0KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlLCBjb25zdCBHTHZvaWQgKmluZGlyZWN0
KTsKK2Jvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJbmRpcmVjdChDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpOworCitib29sIFZhbGlkYXRp
b25GcmFtZWJ1ZmZlclBhcmFtZXRlcmkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Citib29sIFZhbGlkYXRpb25HZXRGcmFtZWJ1ZmZl
clBhcmFtZXRlcmkoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKKworYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1SZXNv
dXJjZUluZGV4KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsKK2Jvb2wgVmFsaWRhdGVHZXRQcm9ncmFt
UmVzb3VyY2VOYW1lKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xjaGFyICpuYW1lKTsKKworYm9vbCBWYWxpZGF0ZUJpbmRWZXJ0ZXhCdWZmZXIoVmFsaWRhdGlv
bkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
YmluZGluZ0luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZmZl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlKTsKK2Jvb2wgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWJGb3JtYXQoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBhdHRyaWJJbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCByZWxhdGl2ZU9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHB1cmVJbnRlZ2VyKTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJCaW5kaW5nKFZhbGlk
YXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGF0dHJpYkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGJpbmRpbmdJbmRleCk7Citib29sIFZhbGlkYXRlVmVydGV4QmluZGluZ0Rpdmlzb3IoVmFs
aWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBiaW5kaW5nSW5kZXgsIEdMdWludCBkaXZp
c29yKTsKKworYm9vbCBWYWxpZGF0ZURpc3BhdGNoQ29tcHV0ZShDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtR3JvdXBzWCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bUdyb3Vwc1ksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBudW1Hcm91cHNaKTsKKwogfSAgLy8gbmFtZXNwYWNlIGdsCiAK
ICNlbmRpZiAgLy8gTElCQU5HTEVfVkFMSURBVElPTl9FUzMxX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTX3VuaXR0ZXN0LmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVNfdW5p
dHRlc3QuY3BwCmluZGV4IGMwMTg5MjRlMTM5ZmMyZTAyNmU4MWU3MmQ3YjY5MTE3OWMyYWFkZTgu
LmM1MWI4YjNmNmVkYzMyNjBjZjEyZTEzYmZmODQwMzM4ZDMxYWIzZWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVNfdW5pdHRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9u
RVNfdW5pdHRlc3QuY3BwCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KIAogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHRTdGF0ZS5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL1ZhcnlpbmdQYWNraW5nLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRnJhbWVi
dWZmZXJJbXBsX21vY2suaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1w
bF9tb2NrLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGxfbW9jay5o
IgpAQCAtMjksNDQgKzMwLDM1IEBAIG5hbWVzcGFjZQogY2xhc3MgTW9ja1ZhbGlkYXRpb25Db250
ZXh0IDogcHVibGljIFZhbGlkYXRpb25Db250ZXh0CiB7CiAgIHB1YmxpYzoKLSAgICBNb2NrVmFs
aWRhdGlvbkNvbnRleHQoR0xpbnQgbWFqb3JDbGllbnRWZXJzaW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBtaW5vckNsaWVudFZlcnNpb24sCisgICAgTW9ja1ZhbGlkYXRpb25D
b250ZXh0KGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpzaGFyZUNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVNYW5hZ2VyICpzaGFyZVRleHR1cmVzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBWZXJzaW9uICZ2ZXJzaW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBTdGF0ZSAqc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENhcHMgJmNhcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmVDYXBz
TWFwICZ0ZXh0dXJlQ2FwcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRXh0ZW5z
aW9ucyAmZXh0ZW5zaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3Vy
Y2VNYW5hZ2VyICpyZXNvdXJjZU1hbmFnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IExpbWl0YXRpb25zICZsaW1pdGF0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBza2lwVmFsaWRhdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2tp
cFZhbGlkYXRpb24pCisgICAgICAgIDogVmFsaWRhdGlvbkNvbnRleHQoc2hhcmVDb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlVGV4dHVyZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXBzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRleHR1cmVDYXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVu
c2lvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRhdGlvbnMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2tpcFZhbGlkYXRpb24pCisgICAgeworICAgIH0KIAogICAg
IE1PQ0tfTUVUSE9EMShoYW5kbGVFcnJvciwgdm9pZChjb25zdCBFcnJvciAmKSk7CiB9OwogCi1N
b2NrVmFsaWRhdGlvbkNvbnRleHQ6Ok1vY2tWYWxpZGF0aW9uQ29udGV4dChHTGludCBtYWpvckNs
aWVudFZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBtaW5vckNsaWVudFZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTdGF0ZSAqc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBDYXBzICZjYXBzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZUNhcHNNYXAgJnRleHR1cmVD
YXBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlTWFuYWdlciAqcmVzb3VyY2VNYW5hZ2VyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGltaXRhdGlv
bnMgJmxpbWl0YXRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBza2lwVmFsaWRhdGlvbikKLSAgICA6IFZhbGlkYXRpb25Db250ZXh0KG1ham9y
Q2xpZW50VmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1pbm9yQ2xpZW50VmVyc2lv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgY2FwcywKLSAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVDYXBzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgZXh0ZW5zaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc291
cmNlTWFuYWdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0YXRpb25zLAotICAgICAg
ICAgICAgICAgICAgICAgICAgc2tpcFZhbGlkYXRpb24pCi17Ci19Ci0KIC8vIFRlc3QgdGhhdCBB
TkdMRSBnZW5lcmF0ZXMgYW4gSU5WQUxJRF9PUEVSQVRJT04gd2hlbiB2YWxpZGF0aW5nIGluZGV4
IGRhdGEgdGhhdCB1c2VzIGEgdmFsdWUKIC8vIGxhcmdlciB0aGFuIE1BWF9FTEVNRU5UX0lOREVY
LiBOb3Qgc3BlY2lmaWVkIGluIHRoZSBHTEVTIDMgc3BlYywgaXQncyB1bmRlZmluZWQgYmVoYXZp
b3VyLAogLy8gYnV0IHdlIHdhbnQgYSB0ZXN0IHRvIGVuc3VyZSB3ZSBtYWludGFpbiB0aGlzIGJl
aGF2aW91ci4KLVRFU1QoVmFsaWRhdGlvbkVTVGVzdCwgRHJhd0VsZW1lbnRzV2l0aE1heEluZGV4
R2l2ZXNFcnJvcikKKy8vIFRPRE8oam1hZGlsbCk6IFJlLWVuYWJsZSB3aGVuIGZyYW1lYnVmZmVy
IHN5bmMgc3RhdGUgZG9lc24ndCBoYXBwZW4gaW4gdmFsaWRhdGlvbi4KK1RFU1QoVmFsaWRhdGlv
bkVTVGVzdCwgRElTQUJMRURfRHJhd0VsZW1lbnRzV2l0aE1heEluZGV4R2l2ZXNFcnJvcikKIHsK
ICAgICBhdXRvIGZyYW1lYnVmZmVySW1wbCA9IE1ha2VGcmFtZWJ1ZmZlck1vY2soKTsKICAgICBh
dXRvIHByb2dyYW1JbXBsICAgICA9IE1ha2VQcm9ncmFtTW9jaygpOwpAQCAtODcsMjkgKzc5LDMw
IEBAIFRFU1QoVmFsaWRhdGlvbkVTVGVzdCwgRHJhd0VsZW1lbnRzV2l0aE1heEluZGV4R2l2ZXNF
cnJvcikKICAgICBjYXBzLm1heEVsZW1lbnRJbmRleCAgICAgPSAxMDA7CiAgICAgY2Fwcy5tYXhE
cmF3QnVmZmVycyAgICAgID0gMTsKICAgICBjYXBzLm1heENvbG9yQXR0YWNobWVudHMgPSAxOwot
ICAgIHN0YXRlLmluaXRpYWxpemUoY2FwcywgZXh0ZW5zaW9ucywgMywgZmFsc2UsIHRydWUpOwor
ICAgIHN0YXRlLmluaXRpYWxpemUoY2FwcywgZXh0ZW5zaW9ucywgVmVyc2lvbigzLCAwKSwgZmFs
c2UsIHRydWUsIHRydWUsIGZhbHNlKTsKIAogICAgIE5pY2VNb2NrPE1vY2tUZXh0dXJlSW1wbD4g
KnRleHR1cmVJbXBsID0gbmV3IE5pY2VNb2NrPE1vY2tUZXh0dXJlSW1wbD4oKTsKICAgICBFWFBF
Q1RfQ0FMTChtb2NrRmFjdG9yeSwgY3JlYXRlVGV4dHVyZShfKSkuV2lsbE9uY2UoUmV0dXJuKHRl
eHR1cmVJbXBsKSk7Ci0gICAgRVhQRUNUX0NBTEwoKnRleHR1cmVJbXBsLCBzZXRTdG9yYWdlKF8s
IF8sIF8sIF8pKS5XaWxsT25jZShSZXR1cm4oRXJyb3IoR0xfTk9fRVJST1IpKSk7CisgICAgRVhQ
RUNUX0NBTEwoKnRleHR1cmVJbXBsLCBzZXRTdG9yYWdlKF8sIF8sIF8sIF8sIF8pKS5XaWxsT25j
ZShSZXR1cm4oTm9FcnJvcigpKSk7CiAgICAgRVhQRUNUX0NBTEwoKnRleHR1cmVJbXBsLCBkZXN0
cnVjdG9yKCkpLlRpbWVzKDEpLlJldGlyZXNPblNhdHVyYXRpb24oKTsKIAogICAgIFRleHR1cmUg
KnRleHR1cmUgPSBuZXcgVGV4dHVyZSgmbW9ja0ZhY3RvcnksIDAsIEdMX1RFWFRVUkVfMkQpOwog
ICAgIHRleHR1cmUtPmFkZFJlZigpOwotICAgIHRleHR1cmUtPnNldFN0b3JhZ2UoR0xfVEVYVFVS
RV8yRCwgMSwgR0xfUkdCQTgsIEV4dGVudHMoMSwgMSwgMCkpOworICAgIHRleHR1cmUtPnNldFN0
b3JhZ2UobnVsbHB0ciwgR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQTgsIEV4dGVudHMoMSwgMSwg
MCkpOwogCi0gICAgVmVydGV4QXJyYXkgKnZlcnRleEFycmF5ID0gbmV3IFZlcnRleEFycmF5KCZt
b2NrRmFjdG9yeSwgMCwgMSk7CisgICAgVmVydGV4QXJyYXkgKnZlcnRleEFycmF5ID0gbmV3IFZl
cnRleEFycmF5KCZtb2NrRmFjdG9yeSwgMCwgMSwgMSk7CiAgICAgRnJhbWVidWZmZXIgKmZyYW1l
YnVmZmVyID0gbmV3IEZyYW1lYnVmZmVyKGNhcHMsICZtb2NrRmFjdG9yeSwgMSk7Ci0gICAgZnJh
bWVidWZmZXItPnNldEF0dGFjaG1lbnQoR0xfRlJBTUVCVUZGRVJfREVGQVVMVCwgR0xfQkFDSywg
SW1hZ2VJbmRleDo6TWFrZTJEKDApLCB0ZXh0dXJlKTsKKyAgICBmcmFtZWJ1ZmZlci0+c2V0QXR0
YWNobWVudChudWxscHRyLCBHTF9GUkFNRUJVRkZFUl9ERUZBVUxULCBHTF9CQUNLLCBJbWFnZUlu
ZGV4OjpNYWtlMkQoMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSk7
CiAKICAgICBQcm9ncmFtICpwcm9ncmFtID0gbmV3IFByb2dyYW0oJm1vY2tGYWN0b3J5LCBudWxs
cHRyLCAxKTsKIAogICAgIHN0YXRlLnNldFZlcnRleEFycmF5QmluZGluZyh2ZXJ0ZXhBcnJheSk7
CiAgICAgc3RhdGUuc2V0RHJhd0ZyYW1lYnVmZmVyQmluZGluZyhmcmFtZWJ1ZmZlcik7Ci0gICAg
c3RhdGUuc2V0UHJvZ3JhbShwcm9ncmFtKTsKKyAgICBzdGF0ZS5zZXRQcm9ncmFtKG51bGxwdHIs
IHByb2dyYW0pOwogCi0gICAgTmljZU1vY2s8TW9ja1ZhbGlkYXRpb25Db250ZXh0PiB0ZXN0Q29u
dGV4dCgzLCAwLCAmc3RhdGUsIGNhcHMsIHRleHR1cmVDYXBzLCBleHRlbnNpb25zLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbGltaXRh
dGlvbnMsIGZhbHNlKTsKKyAgICBOaWNlTW9jazxNb2NrVmFsaWRhdGlvbkNvbnRleHQ+IHRlc3RD
b250ZXh0KG51bGxwdHIsIG51bGxwdHIsIFZlcnNpb24oMywgMCksICZzdGF0ZSwgY2FwcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVDYXBz
LCBleHRlbnNpb25zLCBsaW1pdGF0aW9ucywgZmFsc2UpOwogCiAgICAgLy8gU2V0IHRoZSBleHBl
Y3RhdGlvbiBmb3IgdGhlIHZhbGlkYXRpb24gZXJyb3IgaGVyZS4KICAgICBFcnJvciBleHBlY3Rl
ZEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBnX0V4Y2VlZHNNYXhFbGVtZW50RXJyb3JNZXNz
YWdlKTsKQEAgLTEyOCw3ICsxMjEsNyBAQCBURVNUKFZhbGlkYXRpb25FU1Rlc3QsIERyYXdFbGVt
ZW50c1dpdGhNYXhJbmRleEdpdmVzRXJyb3IpCiAKICAgICBzdGF0ZS5zZXRWZXJ0ZXhBcnJheUJp
bmRpbmcobnVsbHB0cik7CiAgICAgc3RhdGUuc2V0RHJhd0ZyYW1lYnVmZmVyQmluZGluZyhudWxs
cHRyKTsKLSAgICBzdGF0ZS5zZXRQcm9ncmFtKG51bGxwdHIpOworICAgIHN0YXRlLnNldFByb2dy
YW0obnVsbHB0ciwgbnVsbHB0cik7CiAKICAgICBTYWZlRGVsZXRlKHZlcnRleEFycmF5KTsKICAg
ICBTYWZlRGVsZXRlKGZyYW1lYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJFR0wuZ3lwaSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJF
R0wuZ3lwaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODEzYjAwNmM1OTgyOGU2Mjk1
OGY4ZTFjYTY4YzJkNGMxNTM2Y2UwMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdMLmd5cGkKKysr
IC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0jIENvcHlyaWdodCAoYykgMjAxMyBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci0jIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLXsKLSAgICAjIEV2ZXJ5dGhpbmcgYmVs
b3cgdGhpcyBpcyBkdXBsaWNhdGVkIGluIHRoZSBHTiBidWlsZC4gSWYgeW91IGNoYW5nZQotICAg
ICMgYW55dGhpbmcgYWxzbyBjaGFuZ2UgYW5nbGUvQlVJTEQuZ24KLSAgICAndGFyZ2V0cyc6Ci0g
ICAgWwotICAgICAgICB7Ci0gICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnbGliRUdMJywKLSAg
ICAgICAgICAgICd0eXBlJzogJzwoYW5nbGVfZ2xfbGlicmFyeV90eXBlKScsCi0gICAgICAgICAg
ICAnZGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAnbGliQU5H
TEUnLAotICAgICAgICAgICAgICAgICdsaWJHTEVTdjInLAotICAgICAgICAgICAgXSwKLSAgICAg
ICAgICAgICdpbmNsdWRlcyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgJy4uL2J1
aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdp
bmNsdWRlX2RpcnMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICcuJywKLSAgICAg
ICAgICAgICAgICAnLi4vaW5jbHVkZScsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgJ3Nv
dXJjZXMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICc8QChsaWJlZ2xfc291cmNl
cyknLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdjb25kaXRpb25zJzoKLSAgICAgICAg
ICAgIFsKLSAgICAgICAgICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0xJywKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdtc3ZzX3JlcXVpcmVzX2ltcG9ydGxpYnJh
cnknIDogJ3RydWUnLAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgXSwKLSAgICAg
ICAgfSwKLSAgICBdLAotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkVHTC9saWJFR0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9s
aWJFR0wuY3BwCmluZGV4IDVjNDAxMWM1Mjk1NjE1MTg1ZDYzMWJhMTk3YzdjNjkzMTc5ODFhZTAu
LjMwY2UwODE1MjU2OTk1YzJkNjk3NjUzZTVmYjFlYzc0YjE3MzBiZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5jcHAKQEAgLTM2Nyw0ICszNjcsMTIg
QEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xHZXRTeW5jVmFsdWVzQ0hST01JVU0oRUdMRGlz
cGxheSBkcHksCiB7CiAgICAgcmV0dXJuIGVnbDo6R2V0U3luY1ZhbHVlc0NIUk9NSVVNKGRweSwg
c3VyZmFjZSwgdXN0LCBtc2MsIHNiYyk7CiB9CisKK0VHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWds
U3dhcEJ1ZmZlcnNXaXRoRGFtYWdlRVhUKEVHTERpc3BsYXkgZHB5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMU3VyZmFjZSBzdXJmYWNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50
ICpyZWN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVHTGludCBuX3JlY3RzKQoreworICAgIHJldHVybiBlZ2w6OlN3YXBCdWZmZXJzV2l0aERh
bWFnZUVYVChkcHksIHN1cmZhY2UsIHJlY3RzLCBuX3JlY3RzKTsKK30KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLmRlZiBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvbGliRUdMLmRlZgppbmRleCBjYWQ3OGQ3ZDQ4ZGJj
Mjg3MjM4MjY4ODZmZmY4YTQzOWIyN2FkYThiLi4xZmUzMzcxMzMzNGEwMjBiYWQ1NTA2MTc5Njhh
NGJmZTZiNzk0MzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
RUdML2xpYkVHTC5kZWYKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9s
aWJFR0wuZGVmCkBAIC01OCw2ICs1OCw3IEBAIEVYUE9SVFMKICAgICBlZ2xDcmVhdGVTdHJlYW1Q
cm9kdWNlckQzRFRleHR1cmVOVjEyQU5HTEUgIEA2NAogICAgIGVnbFN0cmVhbVBvc3REM0RUZXh0
dXJlTlYxMkFOR0xFICAgICAgICAgICAgQDY1CiAgICAgZWdsR2V0U3luY1ZhbHVlc0NIUk9NSVVN
ICAgICAgICAgICAgICAgICAgICBANjYKKyAgICBlZ2xTd2FwQnVmZmVyc1dpdGhEYW1hZ2VFWFQg
ICAgICAgICAgICAgICAgIEA2NwogCiAgICAgOyAxLjUgZW50cnkgcG9pbnRzCiAgICAgZWdsQ3Jl
YXRlU3luYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMzgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIuZ3lwaSBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIuZ3lwaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNDE0MjA4MzU2MGQzZWQzMjg0MTdlOTU4NmVhYzNlOGQ4OGZhYzZjNi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyLmd5cGkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUzICswLDAgQEAKLSMg
Q29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
LQotewotICAgICd2YXJpYWJsZXMnOgotICAgIHsKLSAgICAgICAgIyBUaGVzZSBmaWxlIGxpc3Rz
IGFyZSBzaGFyZWQgd2l0aCB0aGUgR04gYnVpbGQuCi0gICAgICAgICdsaWJhbmdsZV9jb21tb25f
c291cmNlcyc6Ci0gICAgICAgIFsKLSAgICAgICAgICAgICdjb21tb24vQml0U2V0SXRlcmF0b3Iu
aCcsCi0gICAgICAgICAgICAnY29tbW9uL0NvbG9yLmgnLAotICAgICAgICAgICAgJ2NvbW1vbi9D
b2xvci5pbmwnLAotICAgICAgICAgICAgJ2NvbW1vbi9GbG9hdDE2VG9GbG9hdDMyLmNwcCcsCi0g
ICAgICAgICAgICAnY29tbW9uL01lbW9yeUJ1ZmZlci5jcHAnLAotICAgICAgICAgICAgJ2NvbW1v
bi9NZW1vcnlCdWZmZXIuaCcsCi0gICAgICAgICAgICAnY29tbW9uL09wdGlvbmFsLmgnLAotICAg
ICAgICAgICAgJ2NvbW1vbi9hbmdsZXV0aWxzLmNwcCcsCi0gICAgICAgICAgICAnY29tbW9uL2Fu
Z2xldXRpbHMuaCcsCi0gICAgICAgICAgICAnY29tbW9uL2RlYnVnLmNwcCcsCi0gICAgICAgICAg
ICAnY29tbW9uL2RlYnVnLmgnLAotICAgICAgICAgICAgJ2NvbW1vbi9tYXRodXRpbC5jcHAnLAot
ICAgICAgICAgICAgJ2NvbW1vbi9tYXRodXRpbC5oJywKLSAgICAgICAgICAgICdjb21tb24vbWF0
cml4X3V0aWxzLmgnLAotICAgICAgICAgICAgJ2NvbW1vbi9wbGF0Zm9ybS5oJywKLSAgICAgICAg
ICAgICdjb21tb24vc3RyaW5nX3V0aWxzLmNwcCcsCi0gICAgICAgICAgICAnY29tbW9uL3N0cmlu
Z191dGlscy5oJywKLSAgICAgICAgICAgICdjb21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3MvYmFz
ZS9sb2dnaW5nLmgnLAotICAgICAgICAgICAgJ2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9i
YXNlL251bWVyaWNzL3NhZmVfY29udmVyc2lvbnMuaCcsCi0gICAgICAgICAgICAnY29tbW9uL3Ro
aXJkX3BhcnR5L251bWVyaWNzL2Jhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9uc19pbXBsLmgn
LAotICAgICAgICAgICAgJ2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9iYXNlL251bWVyaWNz
L3NhZmVfbWF0aC5oJywKLSAgICAgICAgICAgICdjb21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3Mv
YmFzZS9udW1lcmljcy9zYWZlX21hdGhfaW1wbC5oJywKLSAgICAgICAgICAgICdjb21tb24vdGxz
LmNwcCcsCi0gICAgICAgICAgICAnY29tbW9uL3Rscy5oJywKLSAgICAgICAgICAgICdjb21tb24v
dXRpbGl0aWVzLmNwcCcsCi0gICAgICAgICAgICAnY29tbW9uL3V0aWxpdGllcy5oJywKLSAgICAg
ICAgICAgICdjb21tb24vdmVyc2lvbi5oJywKLSAgICAgICAgXSwKLSAgICAgICAgJ2xpYmFuZ2xl
X2ltYWdlX3V0aWxfc291cmNlcyc6Ci0gICAgICAgIFsKLSAgICAgICAgICAgICdpbWFnZV91dGls
L2NvcHlpbWFnZS5jcHAnLAotICAgICAgICAgICAgJ2ltYWdlX3V0aWwvY29weWltYWdlLmgnLAot
ICAgICAgICAgICAgJ2ltYWdlX3V0aWwvY29weWltYWdlLmlubCcsCi0gICAgICAgICAgICAnaW1h
Z2VfdXRpbC9nZW5lcmF0ZW1pcC5oJywKLSAgICAgICAgICAgICdpbWFnZV91dGlsL2dlbmVyYXRl
bWlwLmlubCcsCi0gICAgICAgICAgICAnaW1hZ2VfdXRpbC9pbWFnZWZvcm1hdHMuY3BwJywKLSAg
ICAgICAgICAgICdpbWFnZV91dGlsL2ltYWdlZm9ybWF0cy5oJywKLSAgICAgICAgICAgICdpbWFn
ZV91dGlsL2xvYWRpbWFnZS5jcHAnLAotICAgICAgICAgICAgJ2ltYWdlX3V0aWwvbG9hZGltYWdl
LmgnLAotICAgICAgICAgICAgJ2ltYWdlX3V0aWwvbG9hZGltYWdlLmlubCcsCi0gICAgICAgICAg
ICAnaW1hZ2VfdXRpbC9sb2FkaW1hZ2VfZXRjLmNwcCcsCi0gICAgICAgIF0sCi0gICAgICAgICds
aWJhbmdsZV9pbmNsdWRlcyc6Ci0gICAgICAgIFsKLSAgICAgICAgICAgICcuLi9pbmNsdWRlL2Fu
Z2xlX2dsLmgnLAotICAgICAgICAgICAgJy4uL2luY2x1ZGUvZXhwb3J0LmgnLAotICAgICAgICAg
ICAgJy4uL2luY2x1ZGUvRUdML2VnbC5oJywKLSAgICAgICAgICAgICcuLi9pbmNsdWRlL0VHTC9l
Z2xleHQuaCcsCi0gICAgICAgICAgICAnLi4vaW5jbHVkZS9FR0wvZWdscGxhdGZvcm0uaCcsCi0g
ICAgICAgICAgICAnLi4vaW5jbHVkZS9HTEVTMi9nbDIuaCcsCi0gICAgICAgICAgICAnLi4vaW5j
bHVkZS9HTEVTMi9nbDJleHQuaCcsCi0gICAgICAgICAgICAnLi4vaW5jbHVkZS9HTEVTMi9nbDJw
bGF0Zm9ybS5oJywKLSAgICAgICAgICAgICcuLi9pbmNsdWRlL0dMRVMzL2dsMy5oJywKLSAgICAg
ICAgICAgICcuLi9pbmNsdWRlL0dMRVMzL2dsM3BsYXRmb3JtLmgnLAotICAgICAgICAgICAgJy4u
L2luY2x1ZGUvR0xFUzMvZ2wzMS5oJywKLSAgICAgICAgICAgICcuLi9pbmNsdWRlL0dMRVMzL2ds
MzIuaCcsCi0gICAgICAgICAgICAnLi4vaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaCcsCi0g
ICAgICAgICAgICAnLi4vaW5jbHVkZS9HTFNMQU5HL1NoYWRlclZhcnMuaCcsCi0gICAgICAgICAg
ICAnLi4vaW5jbHVkZS9LSFIva2hycGxhdGZvcm0uaCcsCi0gICAgICAgICAgICAnLi4vaW5jbHVk
ZS9wbGF0Zm9ybS9QbGF0Zm9ybS5oJywKLSAgICAgICAgXSwKLSAgICAgICAgJ2xpYmFuZ2xlX3Nv
dXJjZXMnOgotICAgICAgICBbCi0gICAgICAgICAgICAnY29tbW9uL2V2ZW50X3RyYWNlci5jcHAn
LAotICAgICAgICAgICAgJ2NvbW1vbi9ldmVudF90cmFjZXIuaCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvQXR0cmlidXRlTWFwLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvQXR0cmlidXRl
TWFwLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0JpbmFyeVN0cmVhbS5oJywKLSAgICAgICAg
ICAgICdsaWJBTkdMRS9CdWZmZXIuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9CdWZmZXIu
aCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvQ2Fwcy5jcHAnLAotICAgICAgICAgICAgJ2xpYkFO
R0xFL0NhcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvQ29tcGlsZXIuY3BwJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9Db21waWxlci5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9Db25m
aWcuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9Db25maWcuaCcsCi0gICAgICAgICAgICAn
bGliQU5HTEUvQ29uc3RhbnRzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0NvbnRleHQuY3Bw
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9Db250ZXh0LmgnLAotICAgICAgICAgICAgJ2xpYkFO
R0xFL0NvbnRleHRTdGF0ZS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0NvbnRleHRTdGF0
ZS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9EZWJ1Zy5jcHAnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL0RlYnVnLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0RldmljZS5jcHAnLAotICAg
ICAgICAgICAgJ2xpYkFOR0xFL0RldmljZS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9EaXNw
bGF5LmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvRGlzcGxheS5oJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9FcnJvci5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0Vycm9yLmgnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL0Vycm9yLmlubCcsCi0gICAgICAgICAgICAnbGliQU5HTEUv
RmVuY2UuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9GZW5jZS5oJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9GcmFtZWJ1ZmZlci5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0ZyYW1l
YnVmZmVyLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5j
cHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuY3BwJywKLSAgICAgICAgICAgICds
aWJBTkdMRS9IYW5kbGVBbGxvY2F0b3IuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvSGFuZGxl
UmFuZ2VBbGxvY2F0b3IuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxv
Y2F0b3IuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9JbWFnZS5oJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9JbWFnZS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0ltYWdlSW5kZXgu
aCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvSW1hZ2VJbmRleC5jcHAnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL0luZGV4UmFuZ2VDYWNoZS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0lu
ZGV4UmFuZ2VDYWNoZS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9QYXRoLmgnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL1BhdGguY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9QbGF0Zm9y
bS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL1Byb2dyYW0uY3BwJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9Qcm9ncmFtLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL1F1ZXJ5LmNwcCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvUXVlcnkuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUv
UmVmQ291bnRPYmplY3QuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvUmVuZGVyYnVmZmVyLmNw
cCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvUmVuZGVyYnVmZmVyLmgnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL1Jl
c291cmNlTWFuYWdlci5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9TYW1wbGVyLmNwcCcsCi0g
ICAgICAgICAgICAnbGliQU5HTEUvU2FtcGxlci5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9T
aGFkZXIuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9TaGFkZXIuaCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvU3RhdGUuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9TdGF0ZS5oJywK
LSAgICAgICAgICAgICdsaWJBTkdMRS9TdHJlYW0uY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdM
RS9TdHJlYW0uaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvU3VyZmFjZS5jcHAnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL1N1cmZhY2UuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvVGV4dHVy
ZS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL1RleHR1cmUuaCcsCi0gICAgICAgICAgICAn
bGliQU5HTEUvVHJhbnNmb3JtRmVlZGJhY2suY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9U
cmFuc2Zvcm1GZWVkYmFjay5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9Vbmlmb3JtLmNwcCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvVW5pZm9ybS5oJywKLSAgICAgICAgICAgICdsaWJBTkdM
RS9WZXJzaW9uLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL1ZlcnNpb24uaW5sJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9WZXJ0ZXhBcnJheS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L1ZlcnRleEFycmF5LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL1ZlcnRleEF0dHJpYnV0ZS5j
cHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL1ZlcnRleEF0dHJpYnV0ZS5oJywKLSAgICAgICAg
ICAgICdsaWJBTkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuaW5sJywKLSAgICAgICAgICAgICdsaWJBTkdM
RS9hbmdsZXR5cGVzLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvYW5nbGV0eXBlcy5oJywK
LSAgICAgICAgICAgICdsaWJBTkdMRS9hbmdsZXR5cGVzLmlubCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvZmVhdHVyZXMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvZm9ybWF0X21hcF9hdXRv
Z2VuLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvZm9ybWF0dXRpbHMuY3BwJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9mb3JtYXR1dGlscy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9o
aXN0b2dyYW1fbWFjcm9zLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3F1ZXJ5Y29udmVyc2lv
bnMuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9xdWVyeWNvbnZlcnNpb25zLmgnLAotICAg
ICAgICAgICAgJ2xpYkFOR0xFL3F1ZXJ5dXRpbHMuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdM
RS9xdWVyeXV0aWxzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL0J1ZmZlcklt
cGwuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvQ29tcGlsZXJJbXBsLmgnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL0NvbnRleHRJbXBsLmNwcCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvQ29udGV4dEltcGwuaCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvRGV2aWNlSW1wbC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL0RldmljZUltcGwuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvRGlz
cGxheUltcGwuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9EaXNwbGF5SW1w
bC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9FR0xJbXBsRmFjdG9yeS5oJywK
LSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9GZW5jZU5WSW1wbC5oJywKLSAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9GZW5jZVN5bmNJbXBsLmgnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL0Zvcm1hdF9JRF9hdXRvZ2VuLmlubCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvRm9ybWF0X2F1dG9nZW4uY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci9Gb3JtYXQuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9G
b3JtYXQuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJBdHRh
Y2htZW50T2JqZWN0SW1wbC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9GcmFt
ZWJ1ZmZlckltcGwuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvR0xJbXBsRmFj
dG9yeS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9JbWFnZUltcGwuaCcsCi0g
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUltcGwuaCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvUXVlcnlJbXBsLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL1JlbmRlcmJ1ZmZlckltcGwuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvU2FtcGxlckltcGwuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvU2hh
ZGVySW1wbC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9TdHJlYW1Qcm9kdWNl
ckltcGwuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvU3VyZmFjZUltcGwuY3Bw
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5oJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbC5jcHAnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL1RyYW5zZm9ybUZlZWRiYWNrSW1wbC5oJywKLSAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci9WZXJ0ZXhBcnJheUltcGwuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvbG9hZF9mdW5jdGlvbnNfdGFibGUuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvbG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVyX3V0aWxzLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvcmVuZGVyZXJfdXRpbHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvc2ln
bmFsX3V0aWxzLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvc2lnbmFsX3V0aWxzLmgnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3ZhbGlkYXRpb25FR0wuY3BwJywKLSAgICAgICAgICAgICds
aWJBTkdMRS92YWxpZGF0aW9uRUdMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3ZhbGlkYXRp
b25FUy5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5oJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS92YWxpZGF0aW9uRVMyLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5H
TEUvdmFsaWRhdGlvbkVTMi5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS92YWxpZGF0aW9uRVMz
LmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvdmFsaWRhdGlvbkVTMy5oJywKLSAgICAgICAg
ICAgICdsaWJBTkdMRS92YWxpZGF0aW9uRVMzMS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3ZhbGlkYXRpb25FUzMxLmgnLAotICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L211cm11cmhhc2gv
TXVybXVySGFzaDMuY3BwJywKLSAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011
cm11ckhhc2gzLmgnLAotICAgICAgICBdLAotICAgICAgICAnbGliYW5nbGVfZDNkX3NoYXJlZF9z
b3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9C
dWZmZXJEM0QuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvQnVmZmVy
RDNELmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Db21waWxlckQzRC5j
cHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Db21waWxlckQzRC5oJywK
LSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvRGV2aWNlRDNELmNwcCcsCi0gICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL0RldmljZUQzRC5oJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvRGlzcGxheUQzRC5jcHAnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9EaXNwbGF5RDNELmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9EeW5hbWljSExTTC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9EeW5hbWljSExTTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvRUdMSW1hZ2VEM0QuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9k
M2QvRUdMSW1hZ2VEM0QuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zv
cm1hdHV0aWxzRDNELmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFt
ZWJ1ZmZlckQzRC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFt
ZWJ1ZmZlckQzRC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvSExTTENv
bXBpbGVyLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL0hMU0xDb21w
aWxlci5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvSW1hZ2VEM0QuY3Bw
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvSW1hZ2VEM0QuaCcsCi0gICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL0luZGV4QnVmZmVyLmNwcCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL0luZGV4QnVmZmVyLmgnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9JbmRleERhdGFNYW5hZ2VyLmNwcCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL0luZGV4RGF0YU1hbmFnZXIuaCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL05hdGl2ZVdpbmRvd0QzRC5jcHAnLAotICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9OYXRpdmVXaW5kb3dEM0QuaCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0QuY3BwJywKLSAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5oJywKLSAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci9kM2QvUmVuZGVyYnVmZmVyRDNELmNwcCcsCi0gICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvZDNkL1JlbmRlcmJ1ZmZlckQzRC5oJywKLSAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci9kM2QvUmVuZGVyZXJEM0QuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvUmVuZGVyZXJEM0QuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1JlbmRlclRhcmdldEQzRC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvUmVuZGVyVGFyZ2V0RDNELmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1NhbXBsZXJEM0QuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNk
L1NoYWRlckQzRC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TaGFk
ZXJEM0QuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRlckV4ZWN1
dGFibGVEM0QuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvU2hhZGVy
RXhlY3V0YWJsZUQzRC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvU3Vy
ZmFjZUQzRC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TdXJmYWNl
RDNELmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Td2FwQ2hhaW5EM0Qu
aCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVEM0QuY3BwJywK
LSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4dHVyZUQzRC5oJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4dHVyZVN0b3JhZ2UuaCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZhcnlpbmdQYWNraW5nLmNwcCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZhcnlpbmdQYWNraW5nLmgnLAotICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhCdWZmZXIuY3BwJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4QnVmZmVyLmgnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhEYXRhTWFuYWdlci5jcHAnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhEYXRhTWFuYWdlci5oJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvV29ya2Fyb3VuZHNEM0QuaCcsCi0gICAgICAgIF0sCi0g
ICAgICAgICdsaWJhbmdsZV9kM2Q5X3NvdXJjZXMnOgotICAgICAgICBbCi0gICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQmxpdDkuY3BwJywKLSAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9CbGl0OS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9CdWZmZXI5LmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDkvQnVmZmVyOS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9Db250ZXh0OS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L0NvbnRleHQ5LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L0RlYnVnQW5ub3RhdG9yOS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L0RlYnVnQW5ub3RhdG9yOS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9GZW5jZTkuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkOS9GZW5jZTkuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L0ZyYW1lYnVmZmVyOS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2Q5L0ZyYW1lYnVmZmVyOS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9JbWFnZTkuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkOS9JbWFnZTkuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvSW5kZXhCdWZmZXI5LmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvSW5kZXhCdWZmZXI5LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L05hdGl2ZVdpbmRvdzkuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9OYXRpdmVXaW5kb3c5LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L1F1ZXJ5OS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2Q5L1F1ZXJ5OS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9SZW5kZXJlcjkuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9SZW5kZXJlcjkuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxzLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRlclRhcmdldDkuY3BwJywKLSAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJUYXJnZXQ5LmgnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1NoYWRlckNhY2hlLmgnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1NoYWRlckV4ZWN1dGFibGU5LmNwcCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU2hhZGVyRXhlY3V0YWJsZTkuaCcsCi0g
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9j
b21wb25lbnRtYXNrcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvc2hhZGVycy9jb21waWxlZC9mbGlweXZzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvbHVtaW5hbmNlcHMuaCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9wYXNzdGhy
b3VnaHBzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRl
cnMvY29tcGlsZWQvc3RhbmRhcmR2cy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9TdGF0ZU1hbmFnZXI5LmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDkvU3RhdGVNYW5hZ2VyOS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9Td2FwQ2hhaW45LmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDkvU3dhcENoYWluOS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9UZXh0dXJlU3RvcmFnZTkuY3BwJywKLSAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9UZXh0dXJlU3RvcmFnZTkuaCcsCi0gICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4QXJyYXk5LmgnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRleEJ1ZmZlcjkuY3BwJywKLSAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9WZXJ0ZXhCdWZmZXI5LmgnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3ZlcnRleGNvbnZlcnNpb24uaCcsCi0g
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4RGVjbGFyYXRpb25D
YWNoZS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRl
eERlY2xhcmF0aW9uQ2FjaGUuaCcsCi0gICAgICAgIF0sCi0gICAgICAgICdsaWJhbmdsZV9kM2Qx
MV9zb3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9CbGl0MTEuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvQmxpdDExLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9CdWZmZXIxMS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9CdWZmZXIxMS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
Q2xlYXIxMS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9D
bGVhcjExLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Db250
ZXh0MTEuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ29u
dGV4dDExLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9jb3B5
dmVydGV4LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9jb3B5
dmVydGV4LmlubCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0Rl
YnVnQW5ub3RhdG9yMTEuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvRGVidWdBbm5vdGF0b3IxMS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvZHhnaV9mb3JtYXRfbWFwX2F1dG9nZW4uY3BwJywKLSAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlLmNwcCcsCi0gICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF90YWJsZS5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRmVuY2UxMS5jcHAn
LAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GZW5jZTExLmgnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczExLmNw
cCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxz
MTEuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZyYW1lYnVm
ZmVyMTEuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRnJh
bWVidWZmZXIxMS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
SW1hZ2UxMS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9J
bWFnZTExLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbmRl
eEJ1ZmZlcjExLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L0luZGV4QnVmZmVyMTEuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL0lucHV0TGF5b3V0Q2FjaGUuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvSW5wdXRMYXlvdXRDYWNoZS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvTmF0aXZlV2luZG93MTEuaCcsCi0gICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL1BpeGVsVHJhbnNmZXIxMS5jcHAnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9QaXhlbFRyYW5zZmVyMTEuaCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1F1ZXJ5MTEuY3BwJywKLSAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUXVlcnkxMS5oJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5jcHAnLAotICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmgnLAotICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmNwcCcsCi0g
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMu
aCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRl
Q2FjaGUuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVu
ZGVyU3RhdGVDYWNoZS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvUmVuZGVyVGFyZ2V0MTEuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvUmVuZGVyVGFyZ2V0MTEuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1NoYWRlckV4ZWN1dGFibGUxMS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TaGFkZXJFeGVjdXRhYmxlMTEuaCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvYnVmZmVydG90
ZXh0dXJlMTFfZ3MuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L3NoYWRlcnMvY29tcGlsZWQvYnVmZmVydG90ZXh0dXJlMTFfcHNfNGYuaCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvYnVmZmVydG90
ZXh0dXJlMTFfcHNfNGkuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL3NoYWRlcnMvY29tcGlsZWQvYnVmZmVydG90ZXh0dXJlMTFfcHNfNHVpLmgnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL2J1ZmZl
cnRvdGV4dHVyZTExX3ZzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyZmxvYXQxMXBzLmgnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL2NsZWFyZmxvYXQxMXZz
LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2Nv
bXBpbGVkL2NsZWFyc2ludDExcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJzaW50MTF2cy5oJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9jbGVhcnVpbnQx
MXBzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJz
L2NvbXBpbGVkL2NsZWFydWludDExdnMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2gyZDExdnMuaCcsCi0gICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFz
c3Rocm91Z2gzZDExZ3MuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2gzZDExdnMuaCcsCi0gICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hk
ZXB0aDJkMTFwcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
c2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bTJkMTFwcy5oJywKLSAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1
bTNkMTFwcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hh
ZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGx1bWFscGhhMmQxMXBzLmgnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdo
bHVtYWxwaGEzZDExcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyMmQxMXBzLmgnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdo
cjJkaTExcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3No
YWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyMmR1aTExcHMuaCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyM2Qx
MXBzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJz
L2NvbXBpbGVkL3Bhc3N0aHJvdWdocjNkaTExcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyM2R1aTExcHMu
aCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29t
cGlsZWQvcGFzc3Rocm91Z2hyZzJkMTFwcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnMmRpMTFwcy5oJywK
LSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxl
ZC9wYXNzdGhyb3VnaHJnMmR1aTExcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZzNkMTFwcy5oJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9w
YXNzdGhyb3VnaHJnM2RpMTFwcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnM2R1aTExcHMuaCcsCi0gICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFz
c3Rocm91Z2hyZ2IyZDExcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JwcmVtdWx0aXBseTJkMTFwcy5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21w
aWxlZC9wYXNzdGhyb3VnaHJnYnVubXVsdGlwbHkyZDExcHMuaCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2Iy
ZGkxMXBzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFk
ZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiMmR1aTExcHMuaCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2Iz
ZDExcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRl
cnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IzZGkxMXBzLmgnLAotICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiM2R1
aTExcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRl
cnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JhMmQxMXBzLmgnLAotICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYXBy
ZW11bHRpcGx5MmQxMXBzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYXVubXVsdGlwbHkyZDExcHMuaCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGls
ZWQvcGFzc3Rocm91Z2hyZ2JhMmRpMTFwcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmEyZHVpMTFwcy5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21w
aWxlZC9wYXNzdGhyb3VnaHJnYmEzZDExcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JhM2RpMTFwcy5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21w
aWxlZC9wYXNzdGhyb3VnaHJnYmEzZHVpMTFwcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9zd2l6emxlZjJkYXJyYXlwcy5oJywK
LSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxl
ZC9zd2l6emxlZjJkcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL3NoYWRlcnMvY29tcGlsZWQvc3dpenpsZWYzZHBzLmgnLAotICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3N3aXp6bGVpMmRhcnJheXBz
LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2Nv
bXBpbGVkL3N3aXp6bGVpMmRwcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9zd2l6emxlaTNkcHMuaCcsCi0gICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvc3dpenpsZXVpMmRh
cnJheXBzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFk
ZXJzL2NvbXBpbGVkL3N3aXp6bGV1aTJkcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvc3dpenpsZXVpM2Rwcy5oJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RhdGVNYW5hZ2VyMTEuY3BwJywK
LSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RhdGVNYW5hZ2VyMTEu
aCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbVByb2R1
Y2VyTlYxMi5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9T
dHJlYW1Qcm9kdWNlck5WMTIuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL1N3YXBDaGFpbjExLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL1N3YXBDaGFpbjExLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1RleHR1cmVTdG9yYWdlMTEuaCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RyYW5zZm9ybUZlZWRiYWNrMTEuY3BwJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJhbnNmb3JtRmVlZGJhY2sxMS5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJpbTExLmNwcCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RyaW0xMS5oJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFi
bGVfYXV0b2dlbi5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS90ZXh0dXJlX2Zvcm1hdF90YWJsZV91dGlscy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGUuY3BwJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGUuaCcsCi0g
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEFycmF5MTEuY3Bw
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4QXJyYXkx
MS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4QnVm
ZmVyMTEuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVy
dGV4QnVmZmVyMTEuaCcsCi0gICAgICAgIF0sCi0gICAgICAgICdsaWJhbmdsZV9kM2QxMV93aW4z
Ml9zb3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS93aW4zMi9OYXRpdmVXaW5kb3cxMVdpbjMyLmNwcCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbjMyL05hdGl2ZVdpbmRvdzExV2luMzIuaCcsCi0g
ICAgICAgICAgICAndGhpcmRfcGFydHkvc3lzdGVtaW5mby9TeXN0ZW1JbmZvLmNwcCcsCi0gICAg
ICAgICAgICAndGhpcmRfcGFydHkvc3lzdGVtaW5mby9TeXN0ZW1JbmZvLmgnLAotICAgICAgICBd
LAotICAgICAgICAnbGliYW5nbGVfZDNkMTFfd2lucnRfc291cmNlcyc6Ci0gICAgICAgIFsKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvQ29yZVdpbmRvd05h
dGl2ZVdpbmRvdy5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS93aW5ydC9Db3JlV2luZG93TmF0aXZlV2luZG93LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9JbnNwZWN0YWJsZU5hdGl2ZVdpbmRvdy5jcHAnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9JbnNwZWN0YWJs
ZU5hdGl2ZVdpbmRvdy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvd2lucnQvTmF0aXZlV2luZG93MTFXaW5SVC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9OYXRpdmVXaW5kb3cxMVdpblJULmgnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9Td2FwQ2hhaW5QYW5lbE5h
dGl2ZVdpbmRvdy5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS93aW5ydC9Td2FwQ2hhaW5QYW5lbE5hdGl2ZVdpbmRvdy5oJywKLSAgICAgICAgXSwKLSAgICAg
ICAgJ2xpYmFuZ2xlX2dsX3NvdXJjZXMnOgotICAgICAgICBbCi0gICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvZ2wvQmxpdEdMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvQmxpdEdMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL0J1ZmZl
ckdMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvQnVmZmVyR0wuaCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29tcGlsZXJHTC5jcHAnLAotICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL0NvbXBpbGVyR0wuaCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29udGV4dEdMLmNwcCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZ2wvQ29udGV4dEdMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL0Rpc3BsYXlHTC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L2dsL0Rpc3BsYXlHTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9GZW5j
ZU5WR0wuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9GZW5jZU5WR0wu
aCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvRmVuY2VTeW5jR0wuY3BwJywK
LSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9GZW5jZVN5bmNHTC5oJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmNwcCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5jcHAnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2dsL1BhdGhHTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9n
bC9QYXRoR0wuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFt
R0wuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFtR0wuaCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvUXVlcnlHTC5jcHAnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL1F1ZXJ5R0wuaCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyYnVmZmVyR0wuY3BwJywKLSAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9nbC9SZW5kZXJidWZmZXJHTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvUmVuZGVyZXJHTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9n
bC9TYW1wbGVyR0wuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9TYW1w
bGVyR0wuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvU2hhZGVyR0wuY3Bw
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9TaGFkZXJHTC5oJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5jcHAnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgnLAotICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N1cmZhY2VHTC5jcHAnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2dsL1N1cmZhY2VHTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9nbC9UZXh0dXJlR0wuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9nbC9UZXh0dXJlR0wuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvVHJh
bnNmb3JtRmVlZGJhY2tHTC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2ds
L1RyYW5zZm9ybUZlZWRiYWNrR0wuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
Z2wvVmVydGV4QXJyYXlHTC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2ds
L1ZlcnRleEFycmF5R0wuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvV29y
a2Fyb3VuZHNHTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9mb3JtYXR1
dGlsc2dsLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZm9ybWF0dXRp
bHNnbC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9mdW5jdGlvbnNnbF9l
bnVtcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9mdW5jdGlvbnNnbF90
eXBlZGVmcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmds
X3V0aWxzLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvcmVuZGVyZXJn
bF91dGlscy5oJywKLSAgICAgICAgXSwKLSAgICAgICAgJ2xpYmFuZ2xlX2dsX3dnbF9zb3VyY2Vz
JzoKLSAgICAgICAgWwotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EaXNw
bGF5V0dMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Rpc3Bs
YXlXR0wuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0RYR0lTd2Fw
Q2hhaW5XaW5kb3dTdXJmYWNlV0dMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvd2dsL0RYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMLmgnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9GdW5jdGlvbnNXR0wuY3BwJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRnVuY3Rpb25zV0dMLmgnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9QYnVmZmVyU3VyZmFjZVdHTC5jcHAnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9QYnVmZmVyU3VyZmFjZVdHTC5oJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvV2luZG93U3VyZmFjZVdHTC5jcHAn
LAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9XaW5kb3dTdXJmYWNlV0dM
LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9mdW5jdGlvbnN3Z2xf
dHlwZWRlZnMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL3dnbF91
dGlscy5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC93Z2xfdXRp
bHMuaCcsCi0gICAgICAgICAgICAndGhpcmRfcGFydHkva2hyb25vcy9HTC93Z2xleHQuaCcsCi0g
ICAgICAgIF0sCi0gICAgICAgICdsaWJhbmdsZV9nbF9nbHhfc291cmNlcyc6Ci0gICAgICAgIFsK
LSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvRGlzcGxheUdMWC5jcHAnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9EaXNwbGF5R0xYLmgnLAotICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9GdW5jdGlvbnNHTFguY3BwJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvRnVuY3Rpb25zR0xYLmgnLAotICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9QYnVmZmVyU3VyZmFjZUdMWC5jcHAn
LAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9QYnVmZmVyU3VyZmFjZUdM
WC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvU3VyZmFjZUdMWC5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvV2luZG93U3VyZmFjZUdM
WC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9XaW5kb3dTdXJm
YWNlR0xYLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9mdW5jdGlv
bnNnbHhfdHlwZWRlZnMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4
L3BsYXRmb3JtX2dseC5oJywKLSAgICAgICAgXSwKLSAgICAgICAgJ2xpYmFuZ2xlX2dsX2VnbF9z
b3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Vn
bC9EaXNwbGF5RUdMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWds
L0Rpc3BsYXlFR0wuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1
bmN0aW9uc0VHTC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9G
dW5jdGlvbnNFR0wuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2Z1
bmN0aW9uc2VnbF90eXBlZGVmcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9n
bC9lZ2wvUGJ1ZmZlclN1cmZhY2VFR0wuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9nbC9lZ2wvUGJ1ZmZlclN1cmZhY2VFR0wuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZ2wvZWdsL1N1cmZhY2VFR0wuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9nbC9lZ2wvU3VyZmFjZUVHTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9nbC9lZ2wvV2luZG93U3VyZmFjZUVHTC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2VnbC9XaW5kb3dTdXJmYWNlRUdMLmgnLAotICAgICAgICBdLAotICAgICAg
ICAnbGliYW5nbGVfZ2xfZWdsX2RsX3NvdXJjZXMnOgotICAgICAgICBbCi0gICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTERMLmNwcCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTERMLmgnLAotICAgICAgICBd
LAotICAgICAgICAnbGliYW5nbGVfZ2xfb3pvbmVfc291cmNlcyc6Ci0gICAgICAgIFsKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvRGlzcGxheU96b25lLmNwcCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL0Rpc3BsYXlPem9u
ZS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvU3VyZmFj
ZU96b25lLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25l
L1N1cmZhY2VPem9uZS5oJywKLSAgICAgICAgXSwKLSAgICAgICAgJ2xpYmFuZ2xlX2dsX2VnbF9h
bmRyb2lkX3NvdXJjZXMnOgotICAgICAgICBbCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZWdsL2FuZHJvaWQvRGlzcGxheUFuZHJvaWQuY3BwJywKLSAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5kcm9pZC9EaXNwbGF5QW5kcm9pZC5oJywKLSAgICAgICAg
XSwKLSAgICAgICAgJ2xpYmFuZ2xlX2dsX2NnbF9zb3VyY2VzJzoKLSAgICAgICAgWwotICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLm1tJywKLSAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5oJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wubW0nLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFjZUNHTC5oJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvV2luZG93U3VyZmFjZUNHTC5tbScs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wu
aCcsCi0gICAgICAgIF0sCi0gICAgICAgICdsaWJhbmdsZV92dWxrYW5fc291cmNlcyc6Ci0gICAg
ICAgIFsKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQnVmZmVyVmsuY3Bw
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQnVmZmVyVmsuaCcsCi0g
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbXBpbGVyVmsuY3BwJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29tcGlsZXJWay5oJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmNwcCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5oJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRGV2aWNlVmsuY3BwJywKLSAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRGV2aWNlVmsuaCcsCi0gICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3BsYXlWay5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5VmsuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL0ZlbmNlTlZWay5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9GZW5jZU5WVmsuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL0ZlbmNlU3luY1ZrLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL0ZlbmNlU3luY1ZrLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9GcmFtZWJ1ZmZlclZrLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL0ZyYW1lYnVmZmVyVmsuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL0ltYWdlVmsuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vSW1hZ2VWay5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUHJv
Z3JhbVZrLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Byb2dy
YW1Way5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUXVlcnlWay5j
cHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9RdWVyeVZrLmgnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJidWZmZXJWay5jcHAn
LAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJidWZmZXJWay5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5jcHAn
LAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmgnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TYW1wbGVyVmsuY3BwJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2FtcGxlclZrLmgnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TaGFkZXJWay5jcHAnLAotICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TaGFkZXJWay5oJywKLSAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU3VyZmFjZVZrLmNwcCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1N1cmZhY2VWay5oJywKLSAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL1RleHR1cmVWay5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vVHJhbnNmb3JtRmVlZGJhY2tWay5jcHAnLAotICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9UcmFuc2Zvcm1GZWVkYmFja1ZrLmgnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9WZXJ0ZXhBcnJheVZrLmNwcCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1ZlcnRleEFycmF5VmsuaCcsCi0gICAgICAgIF0s
Ci0gICAgICAgICdsaWJhbmdsZV9udWxsX3NvdXJjZXMnOgotICAgICAgICBbCi0gICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9CdWZmZXJOVUxMLmNwcCcsCi0gICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvbnVsbC9CdWZmZXJOVUxMLmgnLAotICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL251bGwvQ29tcGlsZXJOVUxMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvbnVsbC9Db21waWxlck5VTEwuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvbnVsbC9Db250ZXh0TlVMTC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL251bGwvQ29udGV4dE5VTEwuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvbnVsbC9EZXZpY2VOVUxMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
bnVsbC9EZXZpY2VOVUxMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwv
RGlzcGxheU5VTEwuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL0Rp
c3BsYXlOVUxMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRmVuY2VO
Vk5VTEwuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL0ZlbmNlTlZO
VUxMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRmVuY2VTeW5jTlVM
TC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRmVuY2VTeW5jTlVM
TC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL0ZyYW1lYnVmZmVyTlVM
TC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRnJhbWVidWZmZXJO
VUxMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvSW1hZ2VOVUxMLmNw
cCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9JbWFnZU5VTEwuaCcsCi0g
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9QYXRoTlVMTC5jcHAnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUGF0aE5VTEwuaCcsCi0gICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Qcm9ncmFtTlVMTC5jcHAnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL251bGwvUHJvZ3JhbU5VTEwuaCcsCi0gICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvbnVsbC9RdWVyeU5VTEwuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9udWxsL1F1ZXJ5TlVMTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9udWxsL1JlbmRlcmJ1ZmZlck5VTEwuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9udWxsL1JlbmRlcmJ1ZmZlck5VTEwuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvbnVsbC9TYW1wbGVyTlVMTC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL251bGwvU2FtcGxlck5VTEwuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
bnVsbC9TaGFkZXJOVUxMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVs
bC9TaGFkZXJOVUxMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvU3Vy
ZmFjZU5VTEwuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL1N1cmZh
Y2VOVUxMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVGV4dHVyZU5V
TEwuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL1RleHR1cmVOVUxM
LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVHJhbnNmb3JtRmVlZGJh
Y2tOVUxMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9UcmFuc2Zv
cm1GZWVkYmFja05VTEwuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9W
ZXJ0ZXhBcnJheU5VTEwuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxs
L1ZlcnRleEFycmF5TlVMTC5oJywKLSAgICAgICAgXSwKLSAgICAgICAgJ2xpYmdsZXN2Ml9zb3Vy
Y2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJ2NvbW1vbi9hbmdsZXV0aWxzLmgnLAotICAg
ICAgICAgICAgJ2NvbW1vbi9kZWJ1Zy5oJywKLSAgICAgICAgICAgICdsaWJHTEVTdjIvZW50cnlf
cG9pbnRzX2VnbC5jcHAnLAotICAgICAgICAgICAgJ2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWds
LmgnLAotICAgICAgICAgICAgJ2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsX2V4dC5jcHAnLAot
ICAgICAgICAgICAgJ2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsX2V4dC5oJywKLSAgICAgICAg
ICAgICdsaWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfMl8wLmNwcCcsCi0gICAgICAgICAgICAn
bGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMC5oJywKLSAgICAgICAgICAgICdsaWJHTEVT
djIvZW50cnlfcG9pbnRzX2dsZXNfMl8wX2V4dC5jcHAnLAotICAgICAgICAgICAgJ2xpYkdMRVN2
Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0LmgnLAotICAgICAgICAgICAgJ2xpYkdMRVN2Mi9l
bnRyeV9wb2ludHNfZ2xlc18zXzAuY3BwJywKLSAgICAgICAgICAgICdsaWJHTEVTdjIvZW50cnlf
cG9pbnRzX2dsZXNfM18wLmgnLAotICAgICAgICAgICAgJ2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNf
Z2xlc18zXzEuY3BwJywKLSAgICAgICAgICAgICdsaWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNf
M18xLmgnLAotICAgICAgICAgICAgJ2xpYkdMRVN2Mi9nbG9iYWxfc3RhdGUuY3BwJywKLSAgICAg
ICAgICAgICdsaWJHTEVTdjIvZ2xvYmFsX3N0YXRlLmgnLAotICAgICAgICAgICAgJ2xpYkdMRVN2
Mi9saWJHTEVTdjIuY3BwJywKLSAgICAgICAgICAgICdsaWJHTEVTdjIvbGliR0xFU3YyLmRlZics
Ci0gICAgICAgICAgICAnbGliR0xFU3YyL2xpYkdMRVN2Mi5yYycsCi0gICAgICAgICAgICAnbGli
R0xFU3YyL3Jlc291cmNlLmgnLAotICAgICAgICBdLAotICAgICAgICAnbGliZWdsX3NvdXJjZXMn
OgotICAgICAgICBbCi0gICAgICAgICAgICAnbGliRUdML2xpYkVHTC5jcHAnLAotICAgICAgICAg
ICAgJ2xpYkVHTC9saWJFR0wuZGVmJywKLSAgICAgICAgICAgICdsaWJFR0wvbGliRUdMLnJjJywK
LSAgICAgICAgICAgICdsaWJFR0wvcmVzb3VyY2UuaCcsCi0gICAgICAgIF0sCi0gICAgfSwKLSAg
ICAjIEV2ZXJ5dGhpbmcgYmVsb3cgdGhpcyBpcyBkdXBsaWNhdGVkIGluIHRoZSBHTiBidWlsZC4g
SWYgeW91IGNoYW5nZQotICAgICMgYW55dGhpbmcgYWxzbyBjaGFuZ2UgYW5nbGUvQlVJTEQuZ24K
LSAgICAndGFyZ2V0cyc6Ci0gICAgWwotICAgICAgICB7Ci0gICAgICAgICAgICAndGFyZ2V0X25h
bWUnOiAnbGliQU5HTEUnLAotICAgICAgICAgICAgJ3R5cGUnOiAnc3RhdGljX2xpYnJhcnknLAot
ICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAg
ICAgJ3RyYW5zbGF0b3Jfc3RhdGljJywKLSAgICAgICAgICAgICAgICAnY29tbWl0X2lkJywKLSAg
ICAgICAgICAgICAgICAnYW5nbGVfY29tbW9uJywKLSAgICAgICAgICAgICAgICAnYW5nbGVfaW1h
Z2VfdXRpbCcsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2luY2x1ZGVzJzogWyAnLi4v
YnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScsIF0sCi0gICAgICAgICAgICAnaW5jbHVkZV9kaXJz
JzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAnLicsCi0gICAgICAgICAgICAgICAg
Jy4uL2luY2x1ZGUnLAotICAgICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9raHJvbm9zJywKLSAg
ICAgICAgICAgIF0sCi0gICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgJzxAKGxpYmFuZ2xlX3NvdXJjZXMpJywKLSAgICAgICAgICAgICAgICAnPEAo
bGliYW5nbGVfaW5jbHVkZXMpJywKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnZGVmaW5l
cyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgJ0xJQkFOR0xFX0lNUExFTUVOVEFU
SU9OJywKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnZXhwb3J0X2RlcGVuZGVudF9zZXR0
aW5ncyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgJ2FuZ2xlX2NvbW1vbicsCi0g
ICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnOgot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOgotICAgICAgICAg
ICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjJywKLSAgICAg
ICAgICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvaW5jbHVkZScsCi0gICAgICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAgICAgICAnR0xfR0xFWFRfUFJPVE9UWVBFUycsCi0gICAgICAgICAgICAgICAgICAg
ICdBTkdMRV9QUkVMT0FERURfRDNEQ09NUElMRVJfTU9EVUxFX05BTUVTPXsgImQzZGNvbXBpbGVy
XzQ3LmRsbCIsICJkM2Rjb21waWxlcl80Ni5kbGwiLCAiZDNkY29tcGlsZXJfNDMuZGxsIiB9JywK
LSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzoKLSAgICAg
ICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgIFsnT1M9PSJ3aW4iJywgewotICAgICAg
ICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgWwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHTF9BUElDQUxMPScsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0VHTEFQST0nLAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMn
OgotICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdHTF9BUElDQUxMPV9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnRUdMQVBJPV9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoImRlZmF1bHQiKSkpJywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAg
ICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgICAgICBbJ09TID09ICJtYWMiJywKLSAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ3hjb2RlX3NldHRpbmdz
JzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnRFlMSUJfSU5TVEFMTF9OQU1FX0JBU0UnOiAnQHJwYXRoJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgICAgICBb
J2FuZ2xlX2VuYWJsZV9kM2Q5PT0xJywKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9FTkFCTEVfRDNEOScsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAg
ICAgICAgWydhbmdsZV9lbmFibGVfZDNkMTE9PTEnLAotICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FOR0xFX0VOQUJMRV9EM0QxMScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAg
ICAgICAgICAgICAgICAgWydhbmdsZV9lbmFibGVfZ2w9PTEnLAotICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FOR0xFX0VOQUJMRV9PUEVO
R0wnLAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICdjb25kaXRpb25zJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbJ2FuZ2xlX3VzZV9nbHg9PTEnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnQU5HTEVfVVNFX1gxMScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAgICAg
WydhbmdsZV9lbmFibGVfdnVsa2FuPT0xJywKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgWwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9FTkFCTEVfVlVMS0FOJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAg
ICAgICAgIF0sCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgotICAg
ICAgICAgICAgWwotICAgICAgICAgICAgICAgIFsnYW5nbGVfZW5hYmxlX2QzZDk9PTEgb3IgYW5n
bGVfZW5hYmxlX2QzZDExPT0xJywKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICdzb3VyY2VzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAg
ICAgICAgJzxAKGxpYmFuZ2xlX2QzZF9zaGFyZWRfc291cmNlcyknLAotICAgICAgICAgICAgICAg
ICAgICBdLAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgIFsnYW5nbGVfZW5h
YmxlX2QzZDk9PTEnLAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Nv
dXJjZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAn
PEAobGliYW5nbGVfZDNkOV9zb3VyY2VzKScsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAg
ICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAgICAgICAgICAgJ0FOR0xFX0VOQUJMRV9EM0Q5JywKLSAgICAgICAgICAgICAgICAg
ICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2xpbmtfc2V0dGluZ3MnOgotICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnbXN2c19zZXR0aW5ncyc6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZDTGlu
a2VyVG9vbCc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnQWRkaXRpb25hbERlcGVuZGVuY2llcyc6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdkM2Q5LmxpYicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgIFsn
YW5nbGVfZW5hYmxlX2QzZDExPT0xJywKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAg
ICAgICAgICAgJzxAKGxpYmFuZ2xlX2QzZDExX3NvdXJjZXMpJywKLSAgICAgICAgICAgICAgICAg
ICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAgICAgICAgICAg
ICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVfRU5BQkxFX0QzRDExJywKLSAgICAg
ICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2xpbmtfc2V0dGluZ3MnOgot
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnbXN2c19zZXR0
aW5ncyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ1ZDTGlua2VyVG9vbCc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsnYW5nbGVfYnVpbGRfd2lucnQ9PTAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBZGRpdGlv
bmFsRGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkeGd1aWQu
bGliJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0xJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnQWRkaXRpb25hbERlcGVuZGVuY2llcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnZHhndWlkLmxpYicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdkM2QxMS5saWInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnZDNkY29tcGlsZXIubGliJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgotICAgICAgICAgICAgICAgICAg
ICBbCi0gICAgICAgICAgICAgICAgICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0xJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc291
cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnPEAobGliYW5nbGVfZDNkMTFfd2lucnRfc291cmNlcyknLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICAgICAgeyAjIHdpbjMyCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3NvdXJjZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJzxAKGxpYmFuZ2xlX2QzZDExX3dpbjMyX3NvdXJjZXMpJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAg
fV0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfV0sCi0gICAgICAg
ICAgICAgICAgWydhbmdsZV9lbmFibGVfZ2w9PTEnLAotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAg
ICAgICAgICAgICAgICAgICAnPEAobGliYW5nbGVfZ2xfc291cmNlcyknLAotICAgICAgICAgICAg
ICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAg
ICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9FTkFCTEVfT1BFTkdMJywK
LSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMn
OgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICBbJ09TPT0i
d2luIicsCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3NvdXJjZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJzxAKGxpYmFuZ2xlX2dsX3dnbF9zb3VyY2VzKScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH1d
LAotICAgICAgICAgICAgICAgICAgICAgICAgWydhbmdsZV91c2VfZ2x4PT0xJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnQU5HTEVfVVNFX1gxMScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGFu
Z2xlX3BhdGgpL3NyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsL2xpYlhOVkN0cmwuZ3lwOmxpYlhO
VkN0cmwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxAKGxpYmFuZ2xlX2dsX2dseF9zb3VyY2Vz
KScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnbGlua19zZXR0aW5ncyc6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2xkZmxhZ3MnOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPCFA
KDwocGtnLWNvbmZpZykgLS1saWJzLW9ubHktTCAtLWxpYnMtb25seS1vdGhlciB4MTEgeGkgeGV4
dCknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnbGlicmFyaWVzJzogWwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJzwhQCg8KHBrZy1jb25maWcpIC0tbGlicy1vbmx5LWwgeDExIHhpIHhleHQp
IC1sZGwnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIFsndXNlX296b25lPT0xJywKLSAgICAgICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVf
VVNFX09aT05FJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8QChsaWJhbmdsZV9nbF9lZ2xfc291
cmNlcyknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPEAobGliYW5nbGVfZ2xf
ZWdsX2RsX3NvdXJjZXMpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxAKGxp
YmFuZ2xlX2dsX296b25lX3NvdXJjZXMpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwhQCg8KHBr
Zy1jb25maWcpIC0tY2ZsYWdzIGxpYmRybSBnYm0pJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaW5rX3NldHRpbmdzJzogewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGRmbGFncyc6IFsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICc8IUAoPChwa2ctY29uZmlnKSAtLWxpYnMtb25seS1M
IC0tbGlicy1vbmx5LW90aGVyIGxpYmRybSBnYm0pJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpYnJhcmllcyc6
IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8IUAoPChwa2ctY29uZmln
KSAtLWxpYnMtb25seS1sIGxpYmRybSBnYm0pIC1sZGwnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsnYW5nbGVfbGlua19n
bHg9PTEnLAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdsaW5rX3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJyYXJpZXMnOgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnLWxHTCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5l
cyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnQU5HTEVfTElOS19HTFgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IFsnT1M9PSJtYWMiJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPEAobGliYW5nbGVfZ2xfY2dsX3NvdXJj
ZXMpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdsaW5rX3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJyYXJpZXMnOgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnJChTREtST09UKS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0NvY29hLmZyYW1ld29y
aycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJChTREtST09UKS9TeXN0
ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPU3VyZmFjZS5mcmFtZXdvcmsnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJyQoU0RLUk9PVCkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3Jrcy9PcGVuR0wuZnJhbWV3b3JrJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICckKFNES1JPT1QpL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVhcnR6Q29yZS5mcmFt
ZXdvcmsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsbF9kZXBl
bmRlbnRfc2V0dGluZ3MnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3hjb2RlX3NldHRpbmdzJzogewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0xEX1JVTlBBVEhfU0VBUkNIX1BBVEhTJzogWydAZXhl
Y3V0YWJsZV9wYXRoLy4nXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9XSwK
LSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAg
ICAgICBbJ2FuZ2xlX2VuYWJsZV92dWxrYW49PTEnLAotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAg
ICAgICAgICAgICAgICAgICAnPEAobGliYW5nbGVfdnVsa2FuX3NvdXJjZXMpJywKLSAgICAgICAg
ICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAg
ICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVfRU5BQkxFX1ZVTEtB
TicsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfV0sCi0gICAgICAg
ICAgICAgICAgWydhbmdsZV9lbmFibGVfbnVsbD09MScsCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICc8QChsaWJhbmdsZV9udWxsX3NvdXJjZXMpJywKLSAgICAgICAg
ICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAg
ICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVfRU5BQkxFX05VTEwn
LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAg
ICAgICAgIFsnYW5nbGVfYnVpbGRfd2lucnQ9PTAgYW5kIE9TPT0id2luIicsCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAg
ICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJ2NvcHlfY29tcGlsZXJfZGxsJwot
ICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAg
ICAgIFsnYW5nbGVfYnVpbGRfd2lucnQ9PTEnLAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgJ21zdnNfcmVxdWlyZXNfaW1wb3J0bGlicmFyeScgOiAndHJ1ZScsCi0gICAg
ICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAotICAgICAgICB7Ci0g
ICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnbGliR0xFU3YyJywKLSAgICAgICAgICAgICd0eXBl
JzogJzwoYW5nbGVfZ2xfbGlicmFyeV90eXBlKScsCi0gICAgICAgICAgICAnZGVwZW5kZW5jaWVz
JzogWyAnbGliQU5HTEUnLCAnYW5nbGVfY29tbW9uJyBdLAotICAgICAgICAgICAgJ2luY2x1ZGVz
JzogWyAnLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScsIF0sCi0gICAgICAgICAgICAnc291
cmNlcyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgJzxAKGxpYmdsZXN2Ml9zb3Vy
Y2VzKScsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAg
ICAgWwotICAgICAgICAgICAgICAgICdMSUJHTEVTVjJfSU1QTEVNRU5UQVRJT04nLAotICAgICAg
ICAgICAgXSwKLSAgICAgICAgICAgICdjb25kaXRpb25zJzoKLSAgICAgICAgICAgIFsKLSAgICAg
ICAgICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0xJywKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICdtc3ZzX3JlcXVpcmVzX2ltcG9ydGxpYnJhcnknIDogJ3RydWUn
LAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICBd
LAotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9l
bnRyeV9wb2ludHNfZWdsLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvZW50cnlfcG9pbnRzX2VnbC5jcHAKaW5kZXggZjJmZTE3ZjYzMzMwNGZmYjAzYjUyNTg1ZTdh
ZjM1ODkwNjg5NmU2Yi4uYzY2MzcxMGE1OWFiYzcwMzZhMjY5MTc5YTU3ODc0MTAzNTBlZjM5MiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9w
b2ludHNfZWdsLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L2VudHJ5X3BvaW50c19lZ2wuY3BwCkBAIC0xNywyNCArMTcsNTEgQEAKICNpbmNsdWRlICJsaWJB
TkdMRS9Db250ZXh0LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRGlzcGxheS5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL1RleHR1cmUuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9UaHJlYWQuaCIKICNpbmNs
dWRlICJsaWJBTkdMRS9TdXJmYWNlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlvbkVH
TC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3F1ZXJ5dXRpbHMuaCIKIAogI2luY2x1ZGUgImNvbW1v
bi9kZWJ1Zy5oIgogI2luY2x1ZGUgImNvbW1vbi92ZXJzaW9uLmgiCiAKKyNpbmNsdWRlICJwbGF0
Zm9ybS9QbGF0Zm9ybS5oIgorCiAjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgogCiBuYW1lc3BhY2Ug
ZWdsCiB7CiAKK25hbWVzcGFjZQoreworCit2b2lkIENsaXBDb25maWdzKGNvbnN0IHN0ZDo6dmVj
dG9yPGNvbnN0IENvbmZpZyAqPiAmZmlsdGVyZWRDb25maWdzLAorICAgICAgICAgICAgICAgICBF
R0xDb25maWcgKm91dHB1dF9jb25maWdzLAorICAgICAgICAgICAgICAgICBFR0xpbnQgY29uZmln
X3NpemUsCisgICAgICAgICAgICAgICAgIEVHTGludCAqbnVtX2NvbmZpZykKK3sKKyAgICBFR0xp
bnQgcmVzdWx0X3NpemUgPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGZpbHRlcmVkQ29uZmlncy5zaXpl
KCkpOworICAgIGlmIChvdXRwdXRfY29uZmlncykKKyAgICB7CisgICAgICAgIHJlc3VsdF9zaXpl
ID0gc3RkOjptYXgoc3RkOjptaW4ocmVzdWx0X3NpemUsIGNvbmZpZ19zaXplKSwgMCk7CisgICAg
ICAgIGZvciAoRUdMaW50IGkgPSAwOyBpIDwgcmVzdWx0X3NpemU7IGkrKykKKyAgICAgICAgewor
ICAgICAgICAgICAgb3V0cHV0X2NvbmZpZ3NbaV0gPSBjb25zdF9jYXN0PENvbmZpZyAqPihmaWx0
ZXJlZENvbmZpZ3NbaV0pOworICAgICAgICB9CisgICAgfQorICAgICpudW1fY29uZmlnID0gcmVz
dWx0X3NpemU7Cit9CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKwogLy8gRUdMIDEuMAog
RUdMaW50IEVHTEFQSUVOVFJZIEdldEVycm9yKHZvaWQpCiB7CiAgICAgRVZFTlQoIigpIik7Cisg
ICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7CiAKLSAgICBFR0xpbnQgZXJy
b3IgPSBHZXRHbG9iYWxFcnJvcigpOwotICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUND
RVNTKSk7CisgICAgRUdMaW50IGVycm9yID0gdGhyZWFkLT5nZXRFcnJvcigpOworICAgIHRocmVh
ZC0+c2V0RXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKICAgICByZXR1cm4gZXJyb3I7CiB9CiAK
QEAgLTQyLDYzICs2OSw2MyBAQCBFR0xEaXNwbGF5IEVHTEFQSUVOVFJZIEdldERpc3BsYXkoRUdM
TmF0aXZlRGlzcGxheVR5cGUgZGlzcGxheV9pZCkKIHsKICAgICBFVkVOVCgiKEVHTE5hdGl2ZURp
c3BsYXlUeXBlIGRpc3BsYXlfaWQgPSAweCUwLjhwKSIsIGRpc3BsYXlfaWQpOwogCi0gICAgcmV0
dXJuIERpc3BsYXk6OkdldERpc3BsYXlGcm9tQXR0cmlicyhyZWludGVycHJldF9jYXN0PHZvaWQg
Kj4oZGlzcGxheV9pZCksIEF0dHJpYnV0ZU1hcCgpKTsKKyAgICByZXR1cm4gRGlzcGxheTo6R2V0
RGlzcGxheUZyb21OYXRpdmVEaXNwbGF5KGRpc3BsYXlfaWQsIEF0dHJpYnV0ZU1hcCgpKTsKIH0K
IAogRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBJbml0aWFsaXplKEVHTERpc3BsYXkgZHB5LCBFR0xp
bnQgKm1ham9yLCBFR0xpbnQgKm1pbm9yKQogewotICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkg
PSAweCUwLjhwLCBFR0xpbnQgKm1ham9yID0gMHglMC44cCwgRUdMaW50ICptaW5vciA9IDB4JTAu
OHApIiwKLSAgICAgICAgICBkcHksIG1ham9yLCBtaW5vcik7CisgICAgRVZFTlQoIihFR0xEaXNw
bGF5IGRweSA9IDB4JTAuOHAsIEVHTGludCAqbWFqb3IgPSAweCUwLjhwLCBFR0xpbnQgKm1pbm9y
ID0gMHglMC44cCkiLCBkcHksCisgICAgICAgICAgbWFqb3IsIG1pbm9yKTsKKyAgICBUaHJlYWQg
KnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAgIERpc3BsYXkgKmRpc3BsYXkgPSBz
dGF0aWNfY2FzdDxEaXNwbGF5ICo+KGRweSk7CiAgICAgaWYgKGRweSA9PSBFR0xfTk9fRElTUExB
WSB8fCAhRGlzcGxheTo6aXNWYWxpZERpc3BsYXkoZGlzcGxheSkpCiAgICAgewotICAgICAgICBT
ZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0RJU1BMQVkpKTsKKyAgICAgICAgdGhyZWFkLT5z
ZXRFcnJvcihFcnJvcihFR0xfQkFEX0RJU1BMQVkpKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxT
RTsKICAgICB9CiAKICAgICBFcnJvciBlcnJvciA9IGRpc3BsYXktPmluaXRpYWxpemUoKTsKICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJy
b3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVH
TF9GQUxTRTsKICAgICB9CiAKICAgICBpZiAobWFqb3IpICptYWpvciA9IDE7CiAgICAgaWYgKG1p
bm9yKSAqbWlub3IgPSA0OwogCi0gICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1Mp
KTsKKyAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CiAgICAgcmV0dXJu
IEVHTF9UUlVFOwogfQogCiBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFRlcm1pbmF0ZShFR0xEaXNw
bGF5IGRweSkKIHsKICAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCkiLCBkcHkp
OworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgRGlzcGxh
eSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PERpc3BsYXkgKj4oZHB5KTsKICAgICBpZiAoZHB5ID09
IEVHTF9OT19ESVNQTEFZIHx8ICFEaXNwbGF5Ojppc1ZhbGlkRGlzcGxheShkaXNwbGF5KSkKICAg
ICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfRElTUExBWSkpOworICAg
ICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfRElTUExBWSkpOwogICAgICAgICBy
ZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAotICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gR2V0
R2xvYmFsQ29udGV4dCgpOwotCi0gICAgaWYgKGRpc3BsYXktPmlzVmFsaWRDb250ZXh0KGNvbnRl
eHQpKQorICAgIGlmIChkaXNwbGF5LT5pc1ZhbGlkQ29udGV4dCh0aHJlYWQtPmdldENvbnRleHQo
KSkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxDb250ZXh0KE5VTEwpOwotICAgICAgICBTZXRH
bG9iYWxEaXNwbGF5KE5VTEwpOworICAgICAgICB0aHJlYWQtPnNldEN1cnJlbnQobnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgfQogCiAgICAgZGlzcGxheS0+dGVybWlu
YXRlKCk7CiAKLSAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOworICAgIHRo
cmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKICAgICByZXR1cm4gRUdMX1RSVUU7
CiB9CiAKIGNvbnN0IGNoYXIgKkVHTEFQSUVOVFJZIFF1ZXJ5U3RyaW5nKEVHTERpc3BsYXkgZHB5
LCBFR0xpbnQgbmFtZSkKIHsKICAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwg
RUdMaW50IG5hbWUgPSAlZCkiLCBkcHksIG5hbWUpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0
Q3VycmVudFRocmVhZCgpOwogCiAgICAgRGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PERp
c3BsYXkqPihkcHkpOwogICAgIGlmICghKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkgJiYgbmFt
ZSA9PSBFR0xfRVhURU5TSU9OUykpCkBAIC0xMDYsNyArMTMzLDcgQEAgY29uc3QgY2hhciAqRUdM
QVBJRU5UUlkgUXVlcnlTdHJpbmcoRUdMRGlzcGxheSBkcHksIEVHTGludCBuYW1lKQogICAgICAg
ICBFcnJvciBlcnJvciA9IFZhbGlkYXRlRGlzcGxheShkaXNwbGF5KTsKICAgICAgICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKICAgICAgICAgewotICAgICAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJy
b3IpOworICAgICAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgICAgICBy
ZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KQEAgLTEzNCwxMTYgKzE2MSw5MiBAQCBjb25z
dCBjaGFyICpFR0xBUElFTlRSWSBRdWVyeVN0cmluZyhFR0xEaXNwbGF5IGRweSwgRUdMaW50IG5h
bWUpCiAgICAgICAgIHJlc3VsdCA9ICIxLjQgKEFOR0xFICIgQU5HTEVfVkVSU0lPTl9TVFJJTkcg
IikiOwogICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIFNldEdsb2JhbEVy
cm9yKEVycm9yKEVHTF9CQURfUEFSQU1FVEVSKSk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAg
ICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9QQVJBTUVURVIpKTsKKyAgICAg
ICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xf
U1VDQ0VTUykpOworICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIEdldENvbmZpZ3Mo
RUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyAqY29uZmlncywgRUdMaW50IGNvbmZpZ19zaXplLCBF
R0xpbnQgKm51bV9jb25maWcpCiB7Ci0gICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAu
OHAsIEVHTENvbmZpZyAqY29uZmlncyA9IDB4JTAuOHAsICIKLSAgICAgICAgICAiRUdMaW50IGNv
bmZpZ19zaXplID0gJWQsIEVHTGludCAqbnVtX2NvbmZpZyA9IDB4JTAuOHApIiwKLSAgICAgICAg
ICBkcHksIGNvbmZpZ3MsIGNvbmZpZ19zaXplLCBudW1fY29uZmlnKTsKKyAgICBFVkVOVCgKKyAg
ICAgICAgIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTENvbmZpZyAqY29uZmlncyA9IDB4
JTAuOHAsICIKKyAgICAgICAgIkVHTGludCBjb25maWdfc2l6ZSA9ICVkLCBFR0xpbnQgKm51bV9j
b25maWcgPSAweCUwLjhwKSIsCisgICAgICAgIGRweSwgY29uZmlncywgY29uZmlnX3NpemUsIG51
bV9jb25maWcpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAg
ICAgRGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PERpc3BsYXkqPihkcHkpOwogCi0gICAg
RXJyb3IgZXJyb3IgPSBWYWxpZGF0ZURpc3BsYXkoZGlzcGxheSk7CisgICAgRXJyb3IgZXJyb3Ig
PSBWYWxpZGF0ZUdldENvbmZpZ3MoZGlzcGxheSwgY29uZmlnX3NpemUsIG51bV9jb25maWcpOwog
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihl
cnJvcik7Ci0gICAgICAgIHJldHVybiBFR0xfRkFMU0U7Ci0gICAgfQotCi0gICAgaWYgKCFudW1f
Y29uZmlnKQotICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9QQVJB
TUVURVIpKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVy
biBFR0xfRkFMU0U7CiAgICAgfQogCi0gICAgc3RkOjp2ZWN0b3I8Y29uc3QgQ29uZmlnKj4gZmls
dGVyZWRDb25maWdzID0gZGlzcGxheS0+Z2V0Q29uZmlncyhBdHRyaWJ1dGVNYXAoKSk7Ci0gICAg
aWYgKGNvbmZpZ3MpCi0gICAgewotICAgICAgICBmaWx0ZXJlZENvbmZpZ3MucmVzaXplKHN0ZDo6
bWluPHNpemVfdD4oZmlsdGVyZWRDb25maWdzLnNpemUoKSwgY29uZmlnX3NpemUpKTsKLSAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWx0ZXJlZENvbmZpZ3Muc2l6ZSgpOyBpKyspCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbmZpZ3NbaV0gPSBjb25zdF9jYXN0PENvbmZpZyo+KGZp
bHRlcmVkQ29uZmlnc1tpXSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgKm51bV9jb25maWcgPSBz
dGF0aWNfY2FzdDxFR0xpbnQ+KGZpbHRlcmVkQ29uZmlncy5zaXplKCkpOworICAgIENsaXBDb25m
aWdzKGRpc3BsYXktPmdldENvbmZpZ3MoQXR0cmlidXRlTWFwKCkpLCBjb25maWdzLCBjb25maWdf
c2l6ZSwgbnVtX2NvbmZpZyk7CiAKLSAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfU1VDQ0VT
UykpOworICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKICAgICByZXR1
cm4gRUdMX1RSVUU7CiB9CiAKIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgQ2hvb3NlQ29uZmlnKEVH
TERpc3BsYXkgZHB5LCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0LCBFR0xDb25maWcgKmNvbmZp
Z3MsIEVHTGludCBjb25maWdfc2l6ZSwgRUdMaW50ICpudW1fY29uZmlnKQogewotICAgIEVWRU5U
KCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0ID0g
MHglMC44cCwgIgotICAgICAgICAgICJFR0xDb25maWcgKmNvbmZpZ3MgPSAweCUwLjhwLCBFR0xp
bnQgY29uZmlnX3NpemUgPSAlZCwgRUdMaW50ICpudW1fY29uZmlnID0gMHglMC44cCkiLAotICAg
ICAgICAgIGRweSwgYXR0cmliX2xpc3QsIGNvbmZpZ3MsIGNvbmZpZ19zaXplLCBudW1fY29uZmln
KTsKKyAgICBFVkVOVCgKKyAgICAgICAgIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIGNvbnN0
IEVHTGludCAqYXR0cmliX2xpc3QgPSAweCUwLjhwLCAiCisgICAgICAgICJFR0xDb25maWcgKmNv
bmZpZ3MgPSAweCUwLjhwLCBFR0xpbnQgY29uZmlnX3NpemUgPSAlZCwgRUdMaW50ICpudW1fY29u
ZmlnID0gMHglMC44cCkiLAorICAgICAgICBkcHksIGF0dHJpYl9saXN0LCBjb25maWdzLCBjb25m
aWdfc2l6ZSwgbnVtX2NvbmZpZyk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhy
ZWFkKCk7CiAKICAgICBEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGRw
eSk7CisgICAgQXR0cmlidXRlTWFwIGF0dHJpYk1hcCA9IEF0dHJpYnV0ZU1hcDo6Q3JlYXRlRnJv
bUludEFycmF5KGF0dHJpYl9saXN0KTsKIAotICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVEaXNw
bGF5KGRpc3BsYXkpOworICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVDaG9vc2VDb25maWcoZGlz
cGxheSwgYXR0cmliTWFwLCBjb25maWdfc2l6ZSwgbnVtX2NvbmZpZyk7CiAgICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAg
ICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAg
ICAgfQogCi0gICAgaWYgKCFudW1fY29uZmlnKQotICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJy
b3IoRXJyb3IoRUdMX0JBRF9QQVJBTUVURVIpKTsKLSAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsK
LSAgICB9Ci0KLSAgICBzdGQ6OnZlY3Rvcjxjb25zdCBDb25maWcgKj4gZmlsdGVyZWRDb25maWdz
ID0KLSAgICAgICAgZGlzcGxheS0+Z2V0Q29uZmlncyhBdHRyaWJ1dGVNYXA6OkNyZWF0ZUZyb21J
bnRBcnJheShhdHRyaWJfbGlzdCkpOwotICAgIGlmIChjb25maWdzKQotICAgIHsKLSAgICAgICAg
ZmlsdGVyZWRDb25maWdzLnJlc2l6ZShzdGQ6Om1pbjxzaXplX3Q+KGZpbHRlcmVkQ29uZmlncy5z
aXplKCksIGNvbmZpZ19zaXplKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmls
dGVyZWRDb25maWdzLnNpemUoKTsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25maWdz
W2ldID0gY29uc3RfY2FzdDxDb25maWcqPihmaWx0ZXJlZENvbmZpZ3NbaV0pOwotICAgICAgICB9
Ci0gICAgfQotICAgICpudW1fY29uZmlnID0gc3RhdGljX2Nhc3Q8RUdMaW50PihmaWx0ZXJlZENv
bmZpZ3Muc2l6ZSgpKTsKKyAgICBDbGlwQ29uZmlncyhkaXNwbGF5LT5nZXRDb25maWdzKGF0dHJp
Yk1hcCksIGNvbmZpZ3MsIGNvbmZpZ19zaXplLCBudW1fY29uZmlnKTsKIAotICAgIFNldEdsb2Jh
bEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihF
R0xfU1VDQ0VTUykpOwogICAgIHJldHVybiBFR0xfVFJVRTsKIH0KIAogRUdMQm9vbGVhbiBFR0xB
UElFTlRSWSBHZXRDb25maWdBdHRyaWIoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcs
IEVHTGludCBhdHRyaWJ1dGUsIEVHTGludCAqdmFsdWUpCiB7Ci0gICAgRVZFTlQoIihFR0xEaXNw
bGF5IGRweSA9IDB4JTAuOHAsIEVHTENvbmZpZyBjb25maWcgPSAweCUwLjhwLCBFR0xpbnQgYXR0
cmlidXRlID0gJWQsIEVHTGludCAqdmFsdWUgPSAweCUwLjhwKSIsCi0gICAgICAgICAgZHB5LCBj
b25maWcsIGF0dHJpYnV0ZSwgdmFsdWUpOworICAgIEVWRU5UKAorICAgICAgICAiKEVHTERpc3Bs
YXkgZHB5ID0gMHglMC44cCwgRUdMQ29uZmlnIGNvbmZpZyA9IDB4JTAuOHAsIEVHTGludCBhdHRy
aWJ1dGUgPSAlZCwgRUdMaW50ICIKKyAgICAgICAgIip2YWx1ZSA9IDB4JTAuOHApIiwKKyAgICAg
ICAgZHB5LCBjb25maWcsIGF0dHJpYnV0ZSwgdmFsdWUpOworICAgIFRocmVhZCAqdGhyZWFkID0g
R2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgRGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0
PERpc3BsYXkqPihkcHkpOwogICAgIENvbmZpZyAqY29uZmlndXJhdGlvbiA9IHN0YXRpY19jYXN0
PENvbmZpZyo+KGNvbmZpZyk7CiAKLSAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlQ29uZmlnKGRp
c3BsYXksIGNvbmZpZ3VyYXRpb24pOworICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVHZXRDb25m
aWdBdHRyaWIoZGlzcGxheSwgY29uZmlndXJhdGlvbiwgYXR0cmlidXRlKTsKICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAg
ICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsK
ICAgICB9CiAKLSAgICBpZiAoIWRpc3BsYXktPmdldENvbmZpZ0F0dHJpYihjb25maWd1cmF0aW9u
LCBhdHRyaWJ1dGUsIHZhbHVlKSkKLSAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9y
KEVHTF9CQURfQVRUUklCVVRFKSk7Ci0gICAgICAgIHJldHVybiBFR0xfRkFMU0U7Ci0gICAgfQor
ICAgIFF1ZXJ5Q29uZmlnQXR0cmliKGNvbmZpZ3VyYXRpb24sIGF0dHJpYnV0ZSwgdmFsdWUpOwog
Ci0gICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKKyAgICB0aHJlYWQtPnNl
dEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CiAgICAgcmV0dXJuIEVHTF9UUlVFOwogfQogCiBF
R0xTdXJmYWNlIEVHTEFQSUVOVFJZIENyZWF0ZVdpbmRvd1N1cmZhY2UoRUdMRGlzcGxheSBkcHks
IEVHTENvbmZpZyBjb25maWcsIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luLCBjb25zdCBFR0xpbnQg
KmF0dHJpYl9saXN0KQogewotICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBF
R0xDb25maWcgY29uZmlnID0gMHglMC44cCwgRUdMTmF0aXZlV2luZG93VHlwZSB3aW4gPSAweCUw
LjhwLCAiCi0gICAgICAgICAgImNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QgPSAweCUwLjhwKSIs
IGRweSwgY29uZmlnLCB3aW4sIGF0dHJpYl9saXN0KTsKKyAgICBFVkVOVCgKKyAgICAgICAgIihF
R0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTENvbmZpZyBjb25maWcgPSAweCUwLjhwLCBFR0xO
YXRpdmVXaW5kb3dUeXBlIHdpbiA9IDB4JTAuOHAsICIKKyAgICAgICAgImNvbnN0IEVHTGludCAq
YXR0cmliX2xpc3QgPSAweCUwLjhwKSIsCisgICAgICAgIGRweSwgY29uZmlnLCB3aW4sIGF0dHJp
Yl9saXN0KTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAg
IERpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxEaXNwbGF5Kj4oZHB5KTsKICAgICBDb25m
aWcgKmNvbmZpZ3VyYXRpb24gPSBzdGF0aWNfY2FzdDxDb25maWcqPihjb25maWcpOwpAQCAtMjUy
LDcgKzI1NSw3IEBAIEVHTFN1cmZhY2UgRUdMQVBJRU5UUlkgQ3JlYXRlV2luZG93U3VyZmFjZShF
R0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgRUdMCiAgICAgRXJyb3IgZXJyb3IgPSBW
YWxpZGF0ZUNyZWF0ZVdpbmRvd1N1cmZhY2UoZGlzcGxheSwgY29uZmlndXJhdGlvbiwgd2luLCBh
dHRyaWJ1dGVzKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0
R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAg
ICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOwogICAgIH0KIApAQCAtMjYwLDcgKzI2Myw3IEBA
IEVHTFN1cmZhY2UgRUdMQVBJRU5UUlkgQ3JlYXRlV2luZG93U3VyZmFjZShFR0xEaXNwbGF5IGRw
eSwgRUdMQ29uZmlnIGNvbmZpZywgRUdMCiAgICAgZXJyb3IgPSBkaXNwbGF5LT5jcmVhdGVXaW5k
b3dTdXJmYWNlKGNvbmZpZ3VyYXRpb24sIHdpbiwgYXR0cmlidXRlcywgJnN1cmZhY2UpOwogICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJv
cik7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdM
X05PX1NVUkZBQ0U7CiAgICAgfQogCkBAIC0yNjksOCArMjcyLDExIEBAIEVHTFN1cmZhY2UgRUdM
QVBJRU5UUlkgQ3JlYXRlV2luZG93U3VyZmFjZShFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGNv
bmZpZywgRUdMCiAKIEVHTFN1cmZhY2UgRUdMQVBJRU5UUlkgQ3JlYXRlUGJ1ZmZlclN1cmZhY2Uo
RUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIGNvbnN0IEVHTGludCAqYXR0cmliX2xp
c3QpCiB7Ci0gICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTENvbmZpZyBj
b25maWcgPSAweCUwLjhwLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0ID0gMHglMC44cCkiLAot
ICAgICAgICAgIGRweSwgY29uZmlnLCBhdHRyaWJfbGlzdCk7CisgICAgRVZFTlQoCisgICAgICAg
ICIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xDb25maWcgY29uZmlnID0gMHglMC44cCwg
Y29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCA9ICIKKyAgICAgICAgIjB4JTAuOHApIiwKKyAgICAg
ICAgZHB5LCBjb25maWcsIGF0dHJpYl9saXN0KTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1
cnJlbnRUaHJlYWQoKTsKIAogICAgIERpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxEaXNw
bGF5Kj4oZHB5KTsKICAgICBDb25maWcgKmNvbmZpZ3VyYXRpb24gPSBzdGF0aWNfY2FzdDxDb25m
aWcqPihjb25maWcpOwpAQCAtMjc5LDcgKzI4NSw3IEBAIEVHTFN1cmZhY2UgRUdMQVBJRU5UUlkg
Q3JlYXRlUGJ1ZmZlclN1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIGNv
CiAgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZUNyZWF0ZVBidWZmZXJTdXJmYWNlKGRpc3BsYXks
IGNvbmZpZ3VyYXRpb24sIGF0dHJpYnV0ZXMpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAg
ICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0
RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX05PX1NVUkZBQ0U7CiAgICAgfQogCkBA
IC0yODcsNyArMjkzLDcgQEAgRUdMU3VyZmFjZSBFR0xBUElFTlRSWSBDcmVhdGVQYnVmZmVyU3Vy
ZmFjZShFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgY28KICAgICBlcnJvciA9IGRp
c3BsYXktPmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbmZpZ3VyYXRpb24sIGF0dHJpYnV0ZXMsICZz
dXJmYWNlKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xv
YmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAg
ICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOwogICAgIH0KIApAQCAtMjk4LDYgKzMwNCw3IEBAIEVH
TFN1cmZhY2UgRUdMQVBJRU5UUlkgQ3JlYXRlUGl4bWFwU3VyZmFjZShFR0xEaXNwbGF5IGRweSwg
RUdMQ29uZmlnIGNvbmZpZywgRUdMCiB7CiAgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4
JTAuOHAsIEVHTENvbmZpZyBjb25maWcgPSAweCUwLjhwLCBFR0xOYXRpdmVQaXhtYXBUeXBlIHBp
eG1hcCA9IDB4JTAuOHAsICIKICAgICAgICAgICAiY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCA9
IDB4JTAuOHApIiwgZHB5LCBjb25maWcsIHBpeG1hcCwgYXR0cmliX2xpc3QpOworICAgIFRocmVh
ZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgRGlzcGxheSAqZGlzcGxheSA9
IHN0YXRpY19jYXN0PERpc3BsYXkqPihkcHkpOwogICAgIENvbmZpZyAqY29uZmlndXJhdGlvbiA9
IHN0YXRpY19jYXN0PENvbmZpZyo+KGNvbmZpZyk7CkBAIC0zMDUsMTkgKzMxMiwyMCBAQCBFR0xT
dXJmYWNlIEVHTEFQSUVOVFJZIENyZWF0ZVBpeG1hcFN1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVH
TENvbmZpZyBjb25maWcsIEVHTAogICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVDb25maWcoZGlz
cGxheSwgY29uZmlndXJhdGlvbik7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0g
ICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihl
cnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfTk9fU1VSRkFDRTsKICAgICB9CiAKICAgICBVTklN
UExFTUVOVEVEKCk7ICAgLy8gRklYTUUKIAotICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9T
VUNDRVNTKSk7CisgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOwogICAg
IHJldHVybiBFR0xfTk9fU1VSRkFDRTsKIH0KIAogRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBEZXN0
cm95U3VyZmFjZShFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlKQogewogICAgIEVW
RU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUw
LjhwKSIsIGRweSwgc3VyZmFjZSk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhy
ZWFkKCk7CiAKICAgICBEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGRw
eSk7CiAgICAgU3VyZmFjZSAqZWdsU3VyZmFjZSA9IHN0YXRpY19jYXN0PFN1cmZhY2UqPihzdXJm
YWNlKTsKQEAgLTMyNSwxOSArMzMzLDE5IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgRGVzdHJv
eVN1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSkKICAgICBFcnJvciBl
cnJvciA9IFZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBlZ2xTdXJmYWNlKTsKICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAg
ICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsK
ICAgICB9CiAKICAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKICAgICB7Ci0gICAg
ICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfU1VSRkFDRSkpOworICAgICAgICB0aHJl
YWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfU1VSRkFDRSkpOwogICAgICAgICByZXR1cm4gRUdM
X0ZBTFNFOwogICAgIH0KIAogICAgIGRpc3BsYXktPmRlc3Ryb3lTdXJmYWNlKChTdXJmYWNlKilz
dXJmYWNlKTsKIAotICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAg
dGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOwogICAgIHJldHVybiBFR0xfVFJV
RTsKIH0KIApAQCAtMzQ1LDYgKzM1Myw3IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgUXVlcnlT
dXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBhCiB7CiAg
ICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2Ugc3VyZmFjZSA9
IDB4JTAuOHAsIEVHTGludCBhdHRyaWJ1dGUgPSAlZCwgRUdMaW50ICp2YWx1ZSA9IDB4JTAuOHAp
IiwKICAgICAgICAgICBkcHksIHN1cmZhY2UsIGF0dHJpYnV0ZSwgdmFsdWUpOworICAgIFRocmVh
ZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgRGlzcGxheSAqZGlzcGxheSA9
IHN0YXRpY19jYXN0PERpc3BsYXkqPihkcHkpOwogICAgIFN1cmZhY2UgKmVnbFN1cmZhY2UgPSAo
U3VyZmFjZSopc3VyZmFjZTsKQEAgLTM1MiwxMyArMzYxLDEzIEBAIEVHTEJvb2xlYW4gRUdMQVBJ
RU5UUlkgUXVlcnlTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVH
TGludCBhCiAgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZVN1cmZhY2UoZGlzcGxheSwgZWdsU3Vy
ZmFjZSk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2Jh
bEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAg
IHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCiAgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NV
UkZBQ0UpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX1NVUkZB
Q0UpKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfQkFEX1NVUkZBQ0UpKTsK
ICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKQEAgLTQxNSw3ICs0MjQsNyBAQCBF
R0xCb29sZWFuIEVHTEFQSUVOVFJZIFF1ZXJ5U3VyZmFjZShFR0xEaXNwbGF5IGRweSwgRUdMU3Vy
ZmFjZSBzdXJmYWNlLCBFR0xpbnQgYQogICAgICAgY2FzZSBFR0xfUE9TVF9TVUJfQlVGRkVSX1NV
UFBPUlRFRF9OVjoKICAgICAgICAgaWYgKCFkaXNwbGF5LT5nZXRFeHRlbnNpb25zKCkucG9zdFN1
YkJ1ZmZlcikKICAgICAgICAgewotICAgICAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdM
X0JBRF9BVFRSSUJVVEUpKTsKKyAgICAgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdM
X0JBRF9BVFRSSUJVVEUpKTsKICAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgICAg
IH0KICAgICAgICAgKnZhbHVlID0gZWdsU3VyZmFjZS0+aXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVk
KCk7CkBAIC00MjMsNyArNDMyLDcgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBRdWVyeVN1cmZh
Y2UoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGEKICAgICAgIGNh
c2UgRUdMX0ZJWEVEX1NJWkVfQU5HTEU6CiAgICAgICAgIGlmICghZGlzcGxheS0+Z2V0RXh0ZW5z
aW9ucygpLndpbmRvd0ZpeGVkU2l6ZSkKICAgICAgICAgewotICAgICAgICAgICAgU2V0R2xvYmFs
RXJyb3IoRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUpKTsKKyAgICAgICAgICAgIHRocmVhZC0+c2V0
RXJyb3IoRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUpKTsKICAgICAgICAgICAgIHJldHVybiBFR0xf
RkFMU0U7CiAgICAgICAgIH0KICAgICAgICAgKnZhbHVlID0gZWdsU3VyZmFjZS0+aXNGaXhlZFNp
emUoKTsKQEAgLTQzMSw3ICs0NDAsNyBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFF1ZXJ5U3Vy
ZmFjZShFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYQogICAgICAg
Y2FzZSBFR0xfRkxFWElCTEVfU1VSRkFDRV9DT01QQVRJQklMSVRZX1NVUFBPUlRFRF9BTkdMRToK
ICAgICAgICAgICBpZiAoIWRpc3BsYXktPmdldEV4dGVuc2lvbnMoKS5mbGV4aWJsZVN1cmZhY2VD
b21wYXRpYmlsaXR5KQogICAgICAgICAgIHsKLSAgICAgICAgICAgICAgU2V0R2xvYmFsRXJyb3Io
CisgICAgICAgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoCiAgICAgICAgICAgICAgICAgICBFcnJv
cihFR0xfQkFEX0FUVFJJQlVURSwKICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfRkxFWElC
TEVfU1VSRkFDRV9DT01QQVRJQklMSVRZX1NVUFBPUlRFRF9BTkdMRSBjYW5ub3QgYmUgdXNlZCB3
aXRob3V0ICIKICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfQU5HTEVfZmxleGlibGVfc3Vy
ZmFjZV9jb21wYXRpYmlsaXR5IHN1cHBvcnQuIikpOwpAQCAtNDQyLDkgKzQ1MSw5IEBAIEVHTEJv
b2xlYW4gRUdMQVBJRU5UUlkgUXVlcnlTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNl
IHN1cmZhY2UsIEVHTGludCBhCiAgICAgICBjYXNlIEVHTF9TVVJGQUNFX09SSUVOVEFUSU9OX0FO
R0xFOgogICAgICAgICAgIGlmICghZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygpLnN1cmZhY2VPcmll
bnRhdGlvbikKICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9y
KEVHTF9CQURfQVRUUklCVVRFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
RUdMX1NVUkZBQ0VfT1JJRU5UQVRJT05fQU5HTEUgY2Fubm90IGJlIHF1ZXJpZWQgd2l0aG91dCAi
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfQU5HTEVfc3VyZmFjZV9v
cmllbnRhdGlvbiBzdXBwb3J0LiIpKTsKKyAgICAgICAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihF
cnJvcihFR0xfQkFEX0FUVFJJQlVURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiRUdMX1NVUkZBQ0VfT1JJRU5UQVRJT05fQU5HTEUgY2Fubm90IGJlIHF1ZXJpZWQgd2l0
aG91dCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9BTkdMRV9z
dXJmYWNlX29yaWVudGF0aW9uIHN1cHBvcnQuIikpOwogICAgICAgICAgICAgICByZXR1cm4gRUdM
X0ZBTFNFOwogICAgICAgICAgIH0KICAgICAgICAgICAqdmFsdWUgPSBlZ2xTdXJmYWNlLT5nZXRP
cmllbnRhdGlvbigpOwpAQCAtNDUyLDE5ICs0NjEsMTkgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRS
WSBRdWVyeVN1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50
IGEKICAgICAgIGNhc2UgRUdMX0RJUkVDVF9DT01QT1NJVElPTl9BTkdMRToKICAgICAgICAgICBp
ZiAoIWRpc3BsYXktPmdldEV4dGVuc2lvbnMoKS5kaXJlY3RDb21wb3NpdGlvbikKICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRF
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRUdMX0RJUkVDVF9DT01QT1NJ
VElPTl9BTkdMRSBjYW5ub3QgYmUgdXNlZCB3aXRob3V0ICIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkVHTF9BTkdMRV9kaXJlY3RfY29tcG9zaXRpb24gc3VwcG9ydC4iKSk7
CisgICAgICAgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9ESVJFQ1RfQ09NUE9T
SVRJT05fQU5HTEUgY2Fubm90IGJlIHVzZWQgd2l0aG91dCAiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkVHTF9BTkdMRV9kaXJlY3RfY29tcG9zaXRpb24gc3VwcG9ydC4i
KSk7CiAgICAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgICAgICAgfQogICAgICAg
ICAgICp2YWx1ZSA9IGVnbFN1cmZhY2UtPmRpcmVjdENvbXBvc2l0aW9uKCk7CiAgICAgICAgICAg
YnJlYWs7CiAgICAgICBkZWZhdWx0OgotICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xf
QkFEX0FUVFJJQlVURSkpOwotICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICAgIHRo
cmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUpKTsKKyAgICAgICAgICByZXR1
cm4gRUdMX0ZBTFNFOwogICAgIH0KIAotICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUND
RVNTKSk7CisgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOwogICAgIHJl
dHVybiBFR0xfVFJVRTsKIH0KIApAQCAtNDcyLDYgKzQ4MSw3IEBAIEVHTENvbnRleHQgRUdMQVBJ
RU5UUlkgQ3JlYXRlQ29udGV4dChFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgRUdM
Q29udGV4CiB7CiAgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTENvbmZp
ZyBjb25maWcgPSAweCUwLjhwLCBFR0xDb250ZXh0IHNoYXJlX2NvbnRleHQgPSAweCUwLjhwLCAi
CiAgICAgICAgICAgImNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QgPSAweCUwLjhwKSIsIGRweSwg
Y29uZmlnLCBzaGFyZV9jb250ZXh0LCBhdHRyaWJfbGlzdCk7CisgICAgVGhyZWFkICp0aHJlYWQg
PSBHZXRDdXJyZW50VGhyZWFkKCk7CiAKICAgICBEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nh
c3Q8RGlzcGxheSo+KGRweSk7CiAgICAgQ29uZmlnICpjb25maWd1cmF0aW9uID0gc3RhdGljX2Nh
c3Q8Q29uZmlnKj4oY29uZmlnKTsKQEAgLTQ4MSw3ICs0OTEsNyBAQCBFR0xDb250ZXh0IEVHTEFQ
SUVOVFJZIENyZWF0ZUNvbnRleHQoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVH
TENvbnRleAogICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVDcmVhdGVDb250ZXh0KGRpc3BsYXks
IGNvbmZpZ3VyYXRpb24sIHNoYXJlZEdMQ29udGV4dCwgYXR0cmlidXRlcyk7CiAgICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAg
ICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfTk9fQ09O
VEVYVDsKICAgICB9CiAKQEAgLTQ4OSwxNyArNDk5LDE4IEBAIEVHTENvbnRleHQgRUdMQVBJRU5U
UlkgQ3JlYXRlQ29udGV4dChFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgRUdMQ29u
dGV4CiAgICAgZXJyb3IgPSBkaXNwbGF5LT5jcmVhdGVDb250ZXh0KGNvbmZpZ3VyYXRpb24sIHNo
YXJlZEdMQ29udGV4dCwgYXR0cmlidXRlcywgJmNvbnRleHQpOwogICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHRo
cmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX05PX0NPTlRFWFQ7CiAg
ICAgfQogCi0gICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKKyAgICB0aHJl
YWQtPnNldEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEVHTENvbnRleHQ+KGNvbnRleHQpOwogfQogCiBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIERlc3Ry
b3lDb250ZXh0KEVHTERpc3BsYXkgZHB5LCBFR0xDb250ZXh0IGN0eCkKIHsKICAgICBFVkVOVCgi
KEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMQ29udGV4dCBjdHggPSAweCUwLjhwKSIsIGRw
eSwgY3R4KTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAg
IERpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxEaXNwbGF5Kj4oZHB5KTsKICAgICBnbDo6
Q29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0Kj4oY3R4KTsKQEAgLTUw
NywyNSArNTE4LDI0IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgRGVzdHJveUNvbnRleHQoRUdM
RGlzcGxheSBkcHksIEVHTENvbnRleHQgY3R4KQogICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVD
b250ZXh0KGRpc3BsYXksIGNvbnRleHQpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAg
ewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0RXJy
b3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAogICAgIGlmIChj
dHggPT0gRUdMX05PX0NPTlRFWFQpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJv
cihFR0xfQkFEX0NPTlRFWFQpKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xf
QkFEX0NPTlRFWFQpKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKLSAgICBp
ZiAoY29udGV4dCA9PSBHZXRHbG9iYWxDb250ZXh0KCkpCisgICAgaWYgKGNvbnRleHQgPT0gdGhy
ZWFkLT5nZXRDb250ZXh0KCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxEaXNwbGF5KE5VTEwp
OwotICAgICAgICBTZXRHbG9iYWxDb250ZXh0KE5VTEwpOworICAgICAgICB0aHJlYWQtPnNldEN1
cnJlbnQobnVsbHB0ciwgdGhyZWFkLT5nZXREcmF3U3VyZmFjZSgpLCB0aHJlYWQtPmdldFJlYWRT
dXJmYWNlKCksIG51bGxwdHIpOwogICAgIH0KIAogICAgIGRpc3BsYXktPmRlc3Ryb3lDb250ZXh0
KGNvbnRleHQpOwogCi0gICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKKyAg
ICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CiAgICAgcmV0dXJuIEVHTF9U
UlVFOwogfQogCkBAIC01MzMsMTU1ICs1NDMsNTkgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBN
YWtlQ3VycmVudChFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBkcmF3LCBFR0xTdXJmYWNlIHIK
IHsKICAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBkcmF3
ID0gMHglMC44cCwgRUdMU3VyZmFjZSByZWFkID0gMHglMC44cCwgRUdMQ29udGV4dCBjdHggPSAw
eCUwLjhwKSIsCiAgICAgICAgICAgZHB5LCBkcmF3LCByZWFkLCBjdHgpOworICAgIFRocmVhZCAq
dGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgRGlzcGxheSAqZGlzcGxheSA9IHN0
YXRpY19jYXN0PERpc3BsYXkqPihkcHkpOwogICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8Z2w6OkNvbnRleHQqPihjdHgpOwogCi0gICAgLy8gSWYgY3R4IGlzIEVHTF9OT19D
T05URVhUIGFuZCBlaXRoZXIgZHJhdyBvciByZWFkIGFyZSBub3QgRUdMX05PX1NVUkZBQ0UsIGFu
IEVHTF9CQURfTUFUQ0gKLSAgICAvLyBlcnJvciBpcyBnZW5lcmF0ZWQuCi0gICAgaWYgKGN0eCA9
PSBFR0xfTk9fQ09OVEVYVCAmJiAoZHJhdyAhPSBFR0xfTk9fU1VSRkFDRSB8fCByZWFkICE9IEVH
TF9OT19TVVJGQUNFKSkKLSAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9C
QURfTUFUQ0gpKTsKLSAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKLSAgICB9Ci0KLSAgICBpZiAo
Y3R4ICE9IEVHTF9OT19DT05URVhUICYmIGRyYXcgPT0gRUdMX05PX1NVUkZBQ0UgJiYgcmVhZCA9
PSBFR0xfTk9fU1VSRkFDRSkKLSAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVH
TF9CQURfTUFUQ0gpKTsKLSAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKLSAgICB9Ci0KLSAgICAv
LyBJZiBlaXRoZXIgb2YgZHJhdyBvciByZWFkIGlzIGEgdmFsaWQgc3VyZmFjZSBhbmQgdGhlIG90
aGVyIGlzIEVHTF9OT19TVVJGQUNFLCBhbgotICAgIC8vIEVHTF9CQURfTUFUQ0ggZXJyb3IgaXMg
Z2VuZXJhdGVkLgotICAgIGlmICgocmVhZCA9PSBFR0xfTk9fU1VSRkFDRSkgIT0gKGRyYXcgPT0g
RUdMX05PX1NVUkZBQ0UpKQotICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoCi0g
ICAgICAgICAgICBFR0xfQkFEX01BVENILCAicmVhZCBhbmQgZHJhdyBtdXN0IGJvdGggYmUgdmFs
aWQgc3VyZmFjZXMsIG9yIGJvdGggYmUgRUdMX05PX1NVUkZBQ0UiKSk7Ci0gICAgICAgIHJldHVy
biBFR0xfRkFMU0U7Ci0gICAgfQotCi0gICAgaWYgKGRweSA9PSBFR0xfTk9fRElTUExBWSB8fCAh
RGlzcGxheTo6aXNWYWxpZERpc3BsYXkoZGlzcGxheSkpCi0gICAgewotICAgICAgICBTZXRHbG9i
YWxFcnJvcihFcnJvcihFR0xfQkFEX0RJU1BMQVksICInZHB5JyBub3QgYSB2YWxpZCBFR0xEaXNw
bGF5IGhhbmRsZSIpKTsKLSAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKLSAgICB9Ci0KLSAgICAv
LyBFR0wgMS41IHNwZWM6IGRweSBjYW4gYmUgdW5pbml0aWFsaXplZCBpZiBhbGwgb3RoZXIgcGFy
YW1ldGVycyBhcmUgbnVsbAotICAgIGlmICghZGlzcGxheS0+aXNJbml0aWFsaXplZCgpICYmIChj
dHggIT0gRUdMX05PX0NPTlRFWFQgfHwgZHJhdyAhPSBFR0xfTk9fU1VSRkFDRSB8fCByZWFkICE9
IEVHTF9OT19TVVJGQUNFKSkKLSAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVH
TF9OT1RfSU5JVElBTElaRUQsICInZHB5JyBub3QgaW5pdGlhbGl6ZWQiKSk7Ci0gICAgICAgIHJl
dHVybiBFR0xfRkFMU0U7Ci0gICAgfQotCi0gICAgaWYgKGN0eCAhPSBFR0xfTk9fQ09OVEVYVCkK
LSAgICB7Ci0gICAgICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVDb250ZXh0KGRpc3BsYXksIGNv
bnRleHQpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNF
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGRpc3BsYXktPmlzSW5pdGlhbGl6ZWQoKSAm
JiBkaXNwbGF5LT50ZXN0RGV2aWNlTG9zdCgpKQorICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVN
YWtlQ3VycmVudChkaXNwbGF5LCBkcmF3LCByZWFkLCBjb250ZXh0KTsKKyAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0NPTlRF
WFRfTE9TVCkpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0
dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKLSAgICBTdXJmYWNlICpkcmF3U3VyZmFjZSA9IHN0YXRp
Y19jYXN0PFN1cmZhY2UqPihkcmF3KTsKLSAgICBpZiAoZHJhdyAhPSBFR0xfTk9fU1VSRkFDRSkK
LSAgICB7Ci0gICAgICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGRy
YXdTdXJmYWNlKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAg
ICAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIEVHTF9G
QUxTRTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIFN1cmZhY2UgKnJlYWRTdXJmYWNlID0gc3Rh
dGljX2Nhc3Q8U3VyZmFjZSo+KHJlYWQpOwotICAgIGlmIChyZWFkICE9IEVHTF9OT19TVVJGQUNF
KQotICAgIHsKLSAgICAgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZVN1cmZhY2UoZGlzcGxheSwg
cmVhZFN1cmZhY2UpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm4gRUdM
X0ZBTFNFOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHJlYWRTdXJmYWNlKQotICAgIHsK
LSAgICAgICAgRXJyb3IgcmVhZENvbXBhdEVycm9yID0KLSAgICAgICAgICAgIFZhbGlkYXRlQ29t
cGF0aWJsZUNvbmZpZ3MoZGlzcGxheSwgcmVhZFN1cmZhY2UtPmdldENvbmZpZygpLCByZWFkU3Vy
ZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0
Q29uZmlnKCksIHJlYWRTdXJmYWNlLT5nZXRUeXBlKCkpOwotICAgICAgICBpZiAocmVhZENvbXBh
dEVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgU2V0R2xvYmFsRXJyb3Io
cmVhZENvbXBhdEVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBpZiAoZHJhdyAhPSByZWFkKQotICAgIHsKLSAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOyAgIC8vIEZJWE1FCi0KLSAgICAgICAgaWYgKGRyYXdTdXJmYWNlKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBFcnJvciBkcmF3Q29tcGF0RXJyb3IgPQotICAgICAgICAgICAgICAg
IFZhbGlkYXRlQ29tcGF0aWJsZUNvbmZpZ3MoZGlzcGxheSwgZHJhd1N1cmZhY2UtPmdldENvbmZp
ZygpLCBkcmF3U3VyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmdldENvbmZpZygpLCBkcmF3U3VyZmFjZS0+Z2V0VHlwZSgpKTsKLSAgICAg
ICAgICAgIGlmIChkcmF3Q29tcGF0RXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKGRyYXdDb21wYXRFcnJvcik7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LQorICAgIFN1cmZhY2UgKmRyYXdTdXJmYWNlICAgPSBzdGF0aWNfY2FzdDxTdXJmYWNlICo+KGRy
YXcpOwogICAgIEVycm9yIG1ha2VDdXJyZW50RXJyb3IgPSBkaXNwbGF5LT5tYWtlQ3VycmVudChk
cmF3U3VyZmFjZSwgcmVhZFN1cmZhY2UsIGNvbnRleHQpOwogICAgIGlmIChtYWtlQ3VycmVudEVy
cm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKG1ha2VDdXJyZW50
RXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKG1ha2VDdXJyZW50RXJyb3IpOwogICAg
ICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAotICAgIGdsOjpDb250ZXh0ICpwcmV2aW91
c0NvbnRleHQgPSBHZXRHbG9iYWxDb250ZXh0KCk7Ci0KLSAgICBTZXRHbG9iYWxEaXNwbGF5KGRp
c3BsYXkpOwotICAgIFNldEdsb2JhbERyYXdTdXJmYWNlKGRyYXdTdXJmYWNlKTsKLSAgICBTZXRH
bG9iYWxSZWFkU3VyZmFjZShyZWFkU3VyZmFjZSk7Ci0gICAgU2V0R2xvYmFsQ29udGV4dChjb250
ZXh0KTsKKyAgICBnbDo6Q29udGV4dCAqcHJldmlvdXNDb250ZXh0ID0gdGhyZWFkLT5nZXRDb250
ZXh0KCk7CisgICAgdGhyZWFkLT5zZXRDdXJyZW50KGRpc3BsYXksIGRyYXdTdXJmYWNlLCByZWFk
U3VyZmFjZSwgY29udGV4dCk7CiAKICAgICAvLyBSZWxlYXNlIHRoZSBzdXJmYWNlIGZyb20gdGhl
IHByZXZpb3VzbHktY3VycmVudCBjb250ZXh0LCB0byBhbGxvdwogICAgIC8vIGRlc3Ryb3llZCBz
dXJmYWNlcyB0byBkZWxldGUgdGhlbXNlbHZlcy4KICAgICBpZiAocHJldmlvdXNDb250ZXh0ICE9
IG51bGxwdHIgJiYgY29udGV4dCAhPSBwcmV2aW91c0NvbnRleHQpCiAgICAgewotICAgICAgICBw
cmV2aW91c0NvbnRleHQtPnJlbGVhc2VTdXJmYWNlKCk7CisgICAgICAgIHByZXZpb3VzQ29udGV4
dC0+cmVsZWFzZVN1cmZhY2UoZGlzcGxheSk7CiAgICAgfQogCi0gICAgU2V0R2xvYmFsRXJyb3Io
RXJyb3IoRUdMX1NVQ0NFU1MpKTsKKyAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9TVUND
RVNTKSk7CiAgICAgcmV0dXJuIEVHTF9UUlVFOwogfQogCiBFR0xTdXJmYWNlIEVHTEFQSUVOVFJZ
IEdldEN1cnJlbnRTdXJmYWNlKEVHTGludCByZWFkZHJhdykKIHsKICAgICBFVkVOVCgiKEVHTGlu
dCByZWFkZHJhdyA9ICVkKSIsIHJlYWRkcmF3KTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1
cnJlbnRUaHJlYWQoKTsKIAogICAgIGlmIChyZWFkZHJhdyA9PSBFR0xfUkVBRCkKICAgICB7Ci0g
ICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7Ci0gICAgICAgIHJldHVy
biBHZXRHbG9iYWxSZWFkU3VyZmFjZSgpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9y
KEVHTF9TVUNDRVNTKSk7CisgICAgICAgIHJldHVybiB0aHJlYWQtPmdldFJlYWRTdXJmYWNlKCk7
CiAgICAgfQogICAgIGVsc2UgaWYgKHJlYWRkcmF3ID09IEVHTF9EUkFXKQogICAgIHsKLSAgICAg
ICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKLSAgICAgICAgcmV0dXJuIEdl
dEdsb2JhbERyYXdTdXJmYWNlKCk7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdM
X1NVQ0NFU1MpKTsKKyAgICAgICAgcmV0dXJuIHRocmVhZC0+Z2V0RHJhd1N1cmZhY2UoKTsKICAg
ICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JB
RF9QQVJBTUVURVIpKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfQkFEX1BB
UkFNRVRFUikpOwogICAgICAgICByZXR1cm4gRUdMX05PX1NVUkZBQ0U7CiAgICAgfQogfQpAQCAt
Njg5LDEwICs2MDMsMTEgQEAgRUdMU3VyZmFjZSBFR0xBUElFTlRSWSBHZXRDdXJyZW50U3VyZmFj
ZShFR0xpbnQgcmVhZGRyYXcpCiBFR0xEaXNwbGF5IEVHTEFQSUVOVFJZIEdldEN1cnJlbnREaXNw
bGF5KHZvaWQpCiB7CiAgICAgRVZFTlQoIigpIik7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRD
dXJyZW50VGhyZWFkKCk7CiAKLSAgICBFR0xEaXNwbGF5IGRweSA9IEdldEdsb2JhbERpc3BsYXko
KTsKKyAgICBFR0xEaXNwbGF5IGRweSA9IHRocmVhZC0+Z2V0RGlzcGxheSgpOwogCi0gICAgU2V0
R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKKyAgICB0aHJlYWQtPnNldEVycm9yKEVy
cm9yKEVHTF9TVUNDRVNTKSk7CiAgICAgcmV0dXJuIGRweTsKIH0KIApAQCAtNzAwLDYgKzYxNSw3
IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgUXVlcnlDb250ZXh0KEVHTERpc3BsYXkgZHB5LCBF
R0xDb250ZXh0IGN0eCwgRUdMaW50IGF0dHJpCiB7CiAgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRw
eSA9IDB4JTAuOHAsIEVHTENvbnRleHQgY3R4ID0gMHglMC44cCwgRUdMaW50IGF0dHJpYnV0ZSA9
ICVkLCBFR0xpbnQgKnZhbHVlID0gMHglMC44cCkiLAogICAgICAgICAgIGRweSwgY3R4LCBhdHRy
aWJ1dGUsIHZhbHVlKTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsK
IAogICAgIERpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxEaXNwbGF5Kj4oZHB5KTsKICAg
ICBnbDo6Q29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250ZXh0Kj4oY3R4KTsK
QEAgLTcwNyw3ICs2MjMsNyBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFF1ZXJ5Q29udGV4dChF
R0xEaXNwbGF5IGRweSwgRUdMQ29udGV4dCBjdHgsIEVHTGludCBhdHRyaQogICAgIEVycm9yIGVy
cm9yID0gVmFsaWRhdGVDb250ZXh0KGRpc3BsYXksIGNvbnRleHQpOwogICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAg
IHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAg
IH0KIApAQCAtNzI2LDI0ICs2NDIsMjUgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBRdWVyeUNv
bnRleHQoRUdMRGlzcGxheSBkcHksIEVHTENvbnRleHQgY3R4LCBFR0xpbnQgYXR0cmkKICAgICAg
ICAgKnZhbHVlID0gY29udGV4dC0+Z2V0UmVuZGVyQnVmZmVyKCk7CiAgICAgICAgIGJyZWFrOwog
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9BVFRS
SUJVVEUpKTsKLSAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAgICB0aHJlYWQtPnNl
dEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFKSk7CisgICAgICAgICAgcmV0dXJuIEVHTF9G
QUxTRTsKICAgICB9CiAKLSAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOwor
ICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKICAgICByZXR1cm4gRUdM
X1RSVUU7CiB9CiAKIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgV2FpdEdMKHZvaWQpCiB7CiAgICAg
RVZFTlQoIigpIik7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7CiAK
LSAgICBEaXNwbGF5ICpkaXNwbGF5ID0gR2V0R2xvYmFsRGlzcGxheSgpOworICAgIERpc3BsYXkg
KmRpc3BsYXkgPSB0aHJlYWQtPmdldERpc3BsYXkoKTsKIAogICAgIEVycm9yIGVycm9yID0gVmFs
aWRhdGVEaXNwbGF5KGRpc3BsYXkpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewot
ICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3Io
ZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIApAQCAtNzUyLDQ3ICs2
NjksNDkgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBXYWl0R0wodm9pZCkKICAgICBlcnJvciA9
IGRpc3BsYXktPndhaXRDbGllbnQoKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsK
LSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9y
KGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKLSAgICBTZXRHbG9i
YWxFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOworICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3Io
RUdMX1NVQ0NFU1MpKTsKICAgICByZXR1cm4gRUdMX1RSVUU7CiB9CiAKIEVHTEJvb2xlYW4gRUdM
QVBJRU5UUlkgV2FpdE5hdGl2ZShFR0xpbnQgZW5naW5lKQogewogICAgIEVWRU5UKCIoRUdMaW50
IGVuZ2luZSA9ICVkKSIsIGVuZ2luZSk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50
VGhyZWFkKCk7CiAKLSAgICBEaXNwbGF5ICpkaXNwbGF5ID0gR2V0R2xvYmFsRGlzcGxheSgpOwor
ICAgIERpc3BsYXkgKmRpc3BsYXkgPSB0aHJlYWQtPmdldERpc3BsYXkoKTsKIAogICAgIEVycm9y
IGVycm9yID0gVmFsaWRhdGVEaXNwbGF5KGRpc3BsYXkpOwogICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHRocmVh
ZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAog
ICAgIGlmIChlbmdpbmUgIT0gRUdMX0NPUkVfTkFUSVZFX0VOR0lORSkKICAgICB7Ci0gICAgICAg
IFNldEdsb2JhbEVycm9yKAorICAgICAgICB0aHJlYWQtPnNldEVycm9yKAogICAgICAgICAgICAg
RXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJ0aGUgJ2VuZ2luZScgcGFyYW1ldGVyIGhhcyBhbiB1
bnJlY29nbml6ZWQgdmFsdWUiKSk7CiAgICAgfQogCi0gICAgZXJyb3IgPSBkaXNwbGF5LT53YWl0
TmF0aXZlKGVuZ2luZSwgR2V0R2xvYmFsRHJhd1N1cmZhY2UoKSwgR2V0R2xvYmFsUmVhZFN1cmZh
Y2UoKSk7CisgICAgZXJyb3IgPSBkaXNwbGF5LT53YWl0TmF0aXZlKGVuZ2luZSwgdGhyZWFkLT5n
ZXREcmF3U3VyZmFjZSgpLCB0aHJlYWQtPmdldFJlYWRTdXJmYWNlKCkpOwogICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAg
ICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwog
ICAgIH0KIAotICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAgdGhy
ZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOwogICAgIHJldHVybiBFR0xfVFJVRTsK
IH0KIAogRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBTd2FwQnVmZmVycyhFR0xEaXNwbGF5IGRweSwg
RUdMU3VyZmFjZSBzdXJmYWNlKQogewogICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUw
LjhwLCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhwKSIsIGRweSwgc3VyZmFjZSk7CisgICAg
VGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7CiAKICAgICBEaXNwbGF5ICpkaXNw
bGF5ID0gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGRweSk7CiAgICAgU3VyZmFjZSAqZWdsU3VyZmFj
ZSA9IChTdXJmYWNlKilzdXJmYWNlOwpAQCAtODAwLDM2ICs3MTksMzcgQEAgRUdMQm9vbGVhbiBF
R0xBUElFTlRSWSBTd2FwQnVmZmVycyhFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNl
KQogICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2Up
OwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJv
cihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1
cm4gRUdMX0ZBTFNFOwogICAgIH0KIAogICAgIGlmIChkaXNwbGF5LT50ZXN0RGV2aWNlTG9zdCgp
KQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0NPTlRFWFRfTE9TVCkp
OworICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9DT05URVhUX0xPU1QpKTsKICAg
ICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKICAgICBpZiAoc3VyZmFjZSA9PSBFR0xf
Tk9fU1VSRkFDRSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURf
U1VSRkFDRSkpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfU1VSRkFD
RSkpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAotICAgIGVycm9yID0gZWds
U3VyZmFjZS0+c3dhcCgpOworICAgIGVycm9yID0gZWdsU3VyZmFjZS0+c3dhcCgqZGlzcGxheSk7
CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9y
KGVycm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVy
biBFR0xfRkFMU0U7CiAgICAgfQogCi0gICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NF
U1MpKTsKKyAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CiAgICAgcmV0
dXJuIEVHTF9UUlVFOwogfQogCiBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIENvcHlCdWZmZXJzKEVH
TERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTE5hdGl2ZVBpeG1hcFR5cGUgdGFy
Z2V0KQogewogICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdXJmYWNl
IHN1cmZhY2UgPSAweCUwLjhwLCBFR0xOYXRpdmVQaXhtYXBUeXBlIHRhcmdldCA9IDB4JTAuOHAp
IiwgZHB5LCBzdXJmYWNlLCB0YXJnZXQpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVu
dFRocmVhZCgpOwogCiAgICAgRGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PERpc3BsYXkq
PihkcHkpOwogICAgIFN1cmZhY2UgKmVnbFN1cmZhY2UgPSBzdGF0aWNfY2FzdDxTdXJmYWNlKj4o
c3VyZmFjZSk7CkBAIC04MzcsMTkgKzc1NywxOSBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIENv
cHlCdWZmZXJzKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTE5hdGl2ZQog
ICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2UpOwog
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihl
cnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4g
RUdMX0ZBTFNFOwogICAgIH0KIAogICAgIGlmIChkaXNwbGF5LT50ZXN0RGV2aWNlTG9zdCgpKQog
ICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0NPTlRFWFRfTE9TVCkpOwor
ICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9DT05URVhUX0xPU1QpKTsKICAgICAg
ICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8g
RklYTUUKIAotICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAgdGhy
ZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOwogICAgIHJldHVybiAwOwogfQogCkBA
IC04NTcsNiArNzc3LDcgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBDb3B5QnVmZmVycyhFR0xE
aXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xOYXRpdmUKIEVHTEJvb2xlYW4gRUdM
QVBJRU5UUlkgQmluZFRleEltYWdlKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2Us
IEVHTGludCBidWZmZXIpCiB7CiAgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAs
IEVHTFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAsIEVHTGludCBidWZmZXIgPSAlZCkiLCBkcHks
IHN1cmZhY2UsIGJ1ZmZlcik7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFk
KCk7CiAKICAgICBEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGRweSk7
CiAgICAgU3VyZmFjZSAqZWdsU3VyZmFjZSA9IHN0YXRpY19jYXN0PFN1cmZhY2UqPihzdXJmYWNl
KTsKQEAgLTg2NCwzNSArNzg1LDM1IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgQmluZFRleElt
YWdlKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBiCiAgICAgRXJy
b3IgZXJyb3IgPSBWYWxpZGF0ZVN1cmZhY2UoZGlzcGxheSwgZWdsU3VyZmFjZSk7CiAgICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsK
KyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfRkFM
U0U7CiAgICAgfQogCiAgICAgaWYgKGJ1ZmZlciAhPSBFR0xfQkFDS19CVUZGRVIpCiAgICAgewot
ICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX1BBUkFNRVRFUikpOworICAgICAg
ICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfUEFSQU1FVEVSKSk7CiAgICAgICAgIHJl
dHVybiBFR0xfRkFMU0U7CiAgICAgfQogCiAgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZB
Q0UgfHwgZWdsU3VyZmFjZS0+Z2V0VHlwZSgpID09IEVHTF9XSU5ET1dfQklUKQogICAgIHsKLSAg
ICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9TVVJGQUNFKSk7CisgICAgICAgIHRo
cmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9TVVJGQUNFKSk7CiAgICAgICAgIHJldHVybiBF
R0xfRkFMU0U7CiAgICAgfQogCiAgICAgaWYgKGVnbFN1cmZhY2UtPmdldEJvdW5kVGV4dHVyZSgp
KQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9BQ0NFU1MpKTsK
KyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfQkFEX0FDQ0VTUykpOwogICAgICAg
ICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAogICAgIGlmIChlZ2xTdXJmYWNlLT5nZXRUZXh0
dXJlRm9ybWF0KCkgPT0gRUdMX05PX1RFWFRVUkUpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxF
cnJvcihFcnJvcihFR0xfQkFEX01BVENIKSk7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJy
b3IoRUdMX0JBRF9NQVRDSCkpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAot
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gR2V0R2xvYmFsQ29udGV4dCgpOworICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gdGhyZWFkLT5nZXRDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewogICAgICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZU9iamVjdCA9IGNvbnRleHQtPmdl
dFRhcmdldFRleHR1cmUoR0xfVEVYVFVSRV8yRCk7CkBAIC05MDAsMTkgKzgyMSwxOSBAQCBFR0xC
b29sZWFuIEVHTEFQSUVOVFJZIEJpbmRUZXhJbWFnZShFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFj
ZSBzdXJmYWNlLCBFR0xpbnQgYgogCiAgICAgICAgIGlmICh0ZXh0dXJlT2JqZWN0LT5nZXRJbW11
dGFibGVGb3JtYXQoKSkKICAgICAgICAgewotICAgICAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJy
b3IoRUdMX0JBRF9NQVRDSCkpOworICAgICAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihF
R0xfQkFEX01BVENIKSk7CiAgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgICAgICB9
CiAKICAgICAgICAgZXJyb3IgPSBlZ2xTdXJmYWNlLT5iaW5kVGV4SW1hZ2UodGV4dHVyZU9iamVj
dCwgYnVmZmVyKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewotICAg
ICAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICAgICAgdGhyZWFkLT5zZXRF
cnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKKyAgICB0aHJl
YWQtPnNldEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CiAgICAgcmV0dXJuIEVHTF9UUlVFOwog
fQogCkBAIC05MjAsNiArODQxLDcgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBTdXJmYWNlQXR0
cmliKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludAogewogICAgIEVW
RU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUw
LjhwLCBFR0xpbnQgYXR0cmlidXRlID0gJWQsIEVHTGludCB2YWx1ZSA9ICVkKSIsCiAgICAgICAg
IGRweSwgc3VyZmFjZSwgYXR0cmlidXRlLCB2YWx1ZSk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBH
ZXRDdXJyZW50VGhyZWFkKCk7CiAKICAgICBEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8
RGlzcGxheSo+KGRweSk7CiAgICAgU3VyZmFjZSAqZWdsU3VyZmFjZSA9IHN0YXRpY19jYXN0PFN1
cmZhY2UqPihzdXJmYWNlKTsKQEAgLTkyNywxOSArODQ5LDIwIEBAIEVHTEJvb2xlYW4gRUdMQVBJ
RU5UUlkgU3VyZmFjZUF0dHJpYihFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBF
R0xpbnQKICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBlZ2xTdXJm
YWNlKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFs
RXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAg
cmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKICAgICBVTklNUExFTUVOVEVEKCk7ICAgLy8gRklY
TUUKIAotICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAgdGhyZWFk
LT5zZXRFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOwogICAgIHJldHVybiBFR0xfVFJVRTsKIH0K
IAogRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBSZWxlYXNlVGV4SW1hZ2UoRUdMRGlzcGxheSBkcHks
IEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1ZmZlcikKIHsKICAgICBFVkVOVCgiKEVHTERp
c3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44cCwgRUdMaW50
IGJ1ZmZlciA9ICVkKSIsIGRweSwgc3VyZmFjZSwgYnVmZmVyKTsKKyAgICBUaHJlYWQgKnRocmVh
ZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAgIERpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNf
Y2FzdDxEaXNwbGF5Kj4oZHB5KTsKICAgICBTdXJmYWNlICplZ2xTdXJmYWNlID0gc3RhdGljX2Nh
c3Q8U3VyZmFjZSo+KHN1cmZhY2UpOwpAQCAtOTQ3LDI1ICs4NzAsMjUgQEAgRUdMQm9vbGVhbiBF
R0xBUElFTlRSWSBSZWxlYXNlVGV4SW1hZ2UoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3Vy
ZmFjZSwgRUdMaW4KICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBl
Z2xTdXJmYWNlKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0
R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAg
ICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKICAgICBpZiAoYnVmZmVyICE9IEVHTF9C
QUNLX0JVRkZFUikKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURf
UEFSQU1FVEVSKSk7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9QQVJB
TUVURVIpKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKICAgICBpZiAoc3Vy
ZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSB8fCBlZ2xTdXJmYWNlLT5nZXRUeXBlKCkgPT0gRUdMX1dJ
TkRPV19CSVQpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX1NV
UkZBQ0UpKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfQkFEX1NVUkZBQ0Up
KTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKICAgICBpZiAoZWdsU3VyZmFj
ZS0+Z2V0VGV4dHVyZUZvcm1hdCgpID09IEVHTF9OT19URVhUVVJFKQogICAgIHsKLSAgICAgICAg
U2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9NQVRDSCkpOworICAgICAgICB0aHJlYWQtPnNl
dEVycm9yKEVycm9yKEVHTF9CQURfTUFUQ0gpKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsK
ICAgICB9CiAKQEAgLTk3NiwzMyArODk5LDM0IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgUmVs
ZWFzZVRleEltYWdlKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGluCiAg
ICAgICAgIGVycm9yID0gZWdsU3VyZmFjZS0+cmVsZWFzZVRleEltYWdlKGJ1ZmZlcik7CiAgICAg
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFNldEdsb2Jh
bEVycm9yKGVycm9yKTsKKyAgICAgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAg
ICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICAgICAgfQogICAgIH0KIAotICAgIFNldEds
b2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJv
cihFR0xfU1VDQ0VTUykpOwogICAgIHJldHVybiBFR0xfVFJVRTsKIH0KIAogRUdMQm9vbGVhbiBF
R0xBUElFTlRSWSBTd2FwSW50ZXJ2YWwoRUdMRGlzcGxheSBkcHksIEVHTGludCBpbnRlcnZhbCkK
IHsKICAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMaW50IGludGVydmFs
ID0gJWQpIiwgZHB5LCBpbnRlcnZhbCk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50
VGhyZWFkKCk7CiAKICAgICBEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8RGlzcGxheSo+
KGRweSk7CiAKICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlRGlzcGxheShkaXNwbGF5KTsKICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJy
b3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVH
TF9GQUxTRTsKICAgICB9CiAKLSAgICBTdXJmYWNlICpkcmF3X3N1cmZhY2UgPSBzdGF0aWNfY2Fz
dDxTdXJmYWNlKj4oR2V0R2xvYmFsRHJhd1N1cmZhY2UoKSk7CisgICAgU3VyZmFjZSAqZHJhd19z
dXJmYWNlID0gc3RhdGljX2Nhc3Q8U3VyZmFjZSAqPih0aHJlYWQtPmdldERyYXdTdXJmYWNlKCkp
OwogCiAgICAgaWYgKGRyYXdfc3VyZmFjZSA9PSBOVUxMKQogICAgIHsKLSAgICAgICAgU2V0R2xv
YmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9TVVJGQUNFKSk7CisgICAgICAgIHRocmVhZC0+c2V0RXJy
b3IoRXJyb3IoRUdMX0JBRF9TVVJGQUNFKSk7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAg
ICAgfQogCkBAIC0xMDExLDcgKzkzNSw3IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgU3dhcElu
dGVydmFsKEVHTERpc3BsYXkgZHB5LCBFR0xpbnQgaW50ZXJ2YWwpCiAKICAgICBkcmF3X3N1cmZh
Y2UtPnNldFN3YXBJbnRlcnZhbChjbGFtcGVkSW50ZXJ2YWwpOwogCi0gICAgU2V0R2xvYmFsRXJy
b3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKKyAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9T
VUNDRVNTKSk7CiAgICAgcmV0dXJuIEVHTF9UUlVFOwogfQogCkBAIC0xMDIwLDMzICs5NDQsMzUg
QEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBTd2FwSW50ZXJ2YWwoRUdMRGlzcGxheSBkcHksIEVH
TGludCBpbnRlcnZhbCkKIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgQmluZEFQSShFR0xlbnVtIGFw
aSkKIHsKICAgICBFVkVOVCgiKEVHTGVudW0gYXBpID0gMHglWCkiLCBhcGkpOworICAgIFRocmVh
ZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgc3dpdGNoIChhcGkpCiAgICAg
ewogICAgICAgY2FzZSBFR0xfT1BFTkdMX0FQSToKICAgICAgIGNhc2UgRUdMX09QRU5WR19BUEk6
Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfUEFSQU1FVEVSKSk7Ci0gICAg
ICAgIHJldHVybiBFR0xfRkFMU0U7ICAgLy8gTm90IHN1cHBvcnRlZCBieSB0aGlzIGltcGxlbWVu
dGF0aW9uCisgICAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfQkFEX1BBUkFNRVRF
UikpOworICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7ICAvLyBOb3Qgc3VwcG9ydGVkIGJ5IHRo
aXMgaW1wbGVtZW50YXRpb24KICAgICAgIGNhc2UgRUdMX09QRU5HTF9FU19BUEk6CiAgICAgICAg
IGJyZWFrOwogICAgICAgZGVmYXVsdDoKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdM
X0JBRF9QQVJBTUVURVIpKTsKLSAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAgICB0
aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfUEFSQU1FVEVSKSk7CisgICAgICAgICAgcmV0
dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKLSAgICBTZXRHbG9iYWxBUEkoYXBpKTsKKyAgICB0aHJl
YWQtPnNldEFQSShhcGkpOwogCi0gICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1Mp
KTsKKyAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CiAgICAgcmV0dXJu
IEVHTF9UUlVFOwogfQogCiBFR0xlbnVtIEVHTEFQSUVOVFJZIFF1ZXJ5QVBJKHZvaWQpCiB7CiAg
ICAgRVZFTlQoIigpIik7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7
CiAKLSAgICBFR0xlbnVtIEFQSSA9IEdldEdsb2JhbEFQSSgpOworICAgIEVHTGVudW0gQVBJID0g
dGhyZWFkLT5nZXRBUEkoKTsKIAotICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNT
KSk7CisgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOwogICAgIHJldHVy
biBBUEk7CiB9CiAKQEAgLTEwNTUsNiArOTgxLDcgQEAgRUdMU3VyZmFjZSBFR0xBUElFTlRSWSBD
cmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihFR0xEaXNwbGF5IGRweSwgRUdMZW51bSBidWYK
ICAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMZW51bSBidWZ0eXBlID0g
MHglWCwgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciA9IDB4JTAuOHAsICIKICAgICAgICAgICAiRUdM
Q29uZmlnIGNvbmZpZyA9IDB4JTAuOHAsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QgPSAweCUw
LjhwKSIsCiAgICAgICAgICAgZHB5LCBidWZ0eXBlLCBidWZmZXIsIGNvbmZpZywgYXR0cmliX2xp
c3QpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgRGlz
cGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PERpc3BsYXkqPihkcHkpOwogICAgIENvbmZpZyAq
Y29uZmlndXJhdGlvbiA9IHN0YXRpY19jYXN0PENvbmZpZyo+KGNvbmZpZyk7CkBAIC0xMDYzLDE1
ICs5OTAsMTYgQEAgRUdMU3VyZmFjZSBFR0xBUElFTlRSWSBDcmVhdGVQYnVmZmVyRnJvbUNsaWVu
dEJ1ZmZlcihFR0xEaXNwbGF5IGRweSwgRUdMZW51bSBidWYKICAgICBFcnJvciBlcnJvciA9IFZh
bGlkYXRlQ3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoZGlzcGxheSwgYnVmdHlwZSwgYnVm
ZmVyLCBjb25maWd1cmF0aW9uLCBhdHRyaWJ1dGVzKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigp
KQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQt
PnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOwogICAgIH0K
IAogICAgIGVnbDo6U3VyZmFjZSAqc3VyZmFjZSA9IG51bGxwdHI7Ci0gICAgZXJyb3IgPSBkaXNw
bGF5LT5jcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25maWd1cmF0aW9uLCBidWZmZXIs
IGF0dHJpYnV0ZXMsICZzdXJmYWNlKTsKKyAgICBlcnJvciA9IGRpc3BsYXktPmNyZWF0ZVBidWZm
ZXJGcm9tQ2xpZW50QnVmZmVyKGNvbmZpZ3VyYXRpb24sIGJ1ZnR5cGUsIGJ1ZmZlciwgYXR0cmli
dXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZzdXJmYWNlKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0
R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAg
ICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOwogICAgIH0KIApAQCAtMTA4MSwzNCArMTAwOSwz
NiBAQCBFR0xTdXJmYWNlIEVHTEFQSUVOVFJZIENyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVy
KEVHTERpc3BsYXkgZHB5LCBFR0xlbnVtIGJ1ZgogRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBSZWxl
YXNlVGhyZWFkKHZvaWQpCiB7CiAgICAgRVZFTlQoIigpIik7CisgICAgVGhyZWFkICp0aHJlYWQg
PSBHZXRDdXJyZW50VGhyZWFkKCk7CiAKICAgICBNYWtlQ3VycmVudChFR0xfTk9fRElTUExBWSwg
RUdMX05PX0NPTlRFWFQsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSk7CiAKLSAgICBT
ZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOworICAgIHRocmVhZC0+c2V0RXJyb3Io
RXJyb3IoRUdMX1NVQ0NFU1MpKTsKICAgICByZXR1cm4gRUdMX1RSVUU7CiB9CiAKIEVHTEJvb2xl
YW4gRUdMQVBJRU5UUlkgV2FpdENsaWVudCh2b2lkKQogewogICAgIEVWRU5UKCIoKSIpOworICAg
IFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCi0gICAgRGlzcGxheSAqZGlz
cGxheSA9IEdldEdsb2JhbERpc3BsYXkoKTsKKyAgICBEaXNwbGF5ICpkaXNwbGF5ID0gdGhyZWFk
LT5nZXREaXNwbGF5KCk7CiAKICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlRGlzcGxheShkaXNw
bGF5KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFs
RXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAg
cmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKICAgICBlcnJvciA9IGRpc3BsYXktPndhaXRDbGll
bnQoKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFs
RXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAg
cmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKLSAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xf
U1VDQ0VTUykpOworICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKICAg
ICByZXR1cm4gRUdMX1RSVUU7CiB9CiAKQEAgLTExMTYsMTAgKzEwNDYsMTEgQEAgRUdMQm9vbGVh
biBFR0xBUElFTlRSWSBXYWl0Q2xpZW50KHZvaWQpCiBFR0xDb250ZXh0IEVHTEFQSUVOVFJZIEdl
dEN1cnJlbnRDb250ZXh0KHZvaWQpCiB7CiAgICAgRVZFTlQoIigpIik7CisgICAgVGhyZWFkICp0
aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7CiAKLSAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IEdldEdsb2JhbENvbnRleHQoKTsKKyAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IHRocmVhZC0+
Z2V0Q29udGV4dCgpOwogCi0gICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsK
KyAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEVHTENvbnRleHQ+KGNvbnRleHQpOwogfQogCkBAIC0xMTI3LDMyICsxMDU4LDQw
IEBAIEVHTENvbnRleHQgRUdMQVBJRU5UUlkgR2V0Q3VycmVudENvbnRleHQodm9pZCkKIEVHTFN5
bmMgRUdMQVBJRU5UUlkgQ3JlYXRlU3luYyhFR0xEaXNwbGF5IGRweSwgRUdMZW51bSB0eXBlLCBj
b25zdCBFR0xBdHRyaWIgKmF0dHJpYl9saXN0KQogewogICAgIEVWRU5UKCIoRUdMRGlzcGxheSBk
cHkgPSAweCUwLjhwLCBFR0xlbnVtIHR5cGUgPSAweCVYLCBjb25zdCBFR0xpbnQqIGF0dHJpYl9s
aXN0ID0gMHglMC44cCkiLCBkcHksIHR5cGUsIGF0dHJpYl9saXN0KTsKKyAgICBUaHJlYWQgKnRo
cmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB0
aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfRElTUExBWSwgImVnbENyZWF0ZVN5bmMgdW5p
bXBsZW1lbnRlZC4iKSk7CiAgICAgcmV0dXJuIEVHTF9OT19TWU5DOwogfQogCiBFR0xCb29sZWFu
IEVHTEFQSUVOVFJZIERlc3Ryb3lTeW5jKEVHTERpc3BsYXkgZHB5LCBFR0xTeW5jIHN5bmMpCiB7
CiAgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN5bmMgc3luYyA9IDB4
JTAuOHApIiwgZHB5LCBzeW5jKTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJl
YWQoKTsKIAogICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB0aHJlYWQtPnNldEVycm9yKEVycm9y
KEVHTF9CQURfRElTUExBWSwgImVnbERlc3Ryb3lTeW5jIHVuaW1wbGVtZW50ZWQuIikpOwogICAg
IHJldHVybiBFR0xfRkFMU0U7CiB9CiAKIEVHTGludCBFR0xBUElFTlRSWSBDbGllbnRXYWl0U3lu
YyhFR0xEaXNwbGF5IGRweSwgRUdMU3luYyBzeW5jLCBFR0xpbnQgZmxhZ3MsIEVHTFRpbWUgdGlt
ZW91dCkKIHsKICAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3luYyBz
eW5jID0gMHglMC44cCwgRUdMaW50IGZsYWdzID0gMHglWCwgRUdMVGltZSB0aW1lb3V0ID0gJWQp
IiwgZHB5LCBzeW5jLCBmbGFncywgdGltZW91dCk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRD
dXJyZW50VGhyZWFkKCk7CiAKICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgdGhyZWFkLT5zZXRF
cnJvcihFcnJvcihFR0xfQkFEX0RJU1BMQVksICJlZ2xDbGllbnRXYWl0U3luYyB1bmltcGxlbWVu
dGVkLiIpKTsKICAgICByZXR1cm4gMDsKIH0KIAogRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBHZXRT
eW5jQXR0cmliKEVHTERpc3BsYXkgZHB5LCBFR0xTeW5jIHN5bmMsIEVHTGludCBhdHRyaWJ1dGUs
IEVHTEF0dHJpYiAqdmFsdWUpCiB7CiAgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAu
OHAsIEVHTFN5bmMgc3luYyA9IDB4JTAuOHAsIEVHTGludCBhdHRyaWJ1dGUgPSAweCVYLCBFR0xB
dHRyaWIgKnZhbHVlID0gMHglMC44cCkiLCBkcHksIHN5bmMsIGF0dHJpYnV0ZSwgdmFsdWUpOwor
ICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgVU5JTVBMRU1F
TlRFRCgpOworICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9ESVNQTEFZLCAiZWds
U3luY0F0dHJpYiB1bmltcGxlbWVudGVkLiIpKTsKICAgICByZXR1cm4gRUdMX0ZBTFNFOwogfQog
CkBAIC0xMTYxLDE2ICsxMTAwLDIwIEBAIEVHTEltYWdlIEVHTEFQSUVOVFJZIENyZWF0ZUltYWdl
KEVHTERpc3BsYXkgZHB5LCBFR0xDb250ZXh0IGN0eCwgRUdMZW51bSB0YXJnZXQsCiAgICAgRVZF
TlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTENvbnRleHQgY3R4ID0gMHglMC44cCwg
RUdMZW51bSB0YXJnZXQgPSAweCVYLCAiCiAgICAgICAgICAgIkVHTENsaWVudEJ1ZmZlciBidWZm
ZXIgPSAweCUwLjhwLCBjb25zdCBFR0xBdHRyaWIgKmF0dHJpYl9saXN0ID0gMHglMC44cCkiLAog
ICAgICAgICAgIGRweSwgY3R4LCB0YXJnZXQsIGJ1ZmZlciwgYXR0cmliX2xpc3QpOworICAgIFRo
cmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9ESVNQTEFZLCAiZWdsQ3JlYXRl
SW1hZ2UgdW5pbXBsZW1lbnRlZC4iKSk7CiAgICAgcmV0dXJuIEVHTF9OT19JTUFHRTsKIH0KIAog
RUdMQm9vbGVhbiBFR0xBUElFTlRSWSBEZXN0cm95SW1hZ2UoRUdMRGlzcGxheSBkcHksIEVHTElt
YWdlIGltYWdlKQogewogICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xJ
bWFnZSBpbWFnZSA9IDB4JTAuOHApIiwgZHB5LCBpbWFnZSk7CisgICAgVGhyZWFkICp0aHJlYWQg
PSBHZXRDdXJyZW50VGhyZWFkKCk7CiAKICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgdGhyZWFk
LT5zZXRFcnJvcihFcnJvcihFR0xfQkFEX0RJU1BMQVksICJlZ2xEZXN0cm95SW1hZ2UgdW5pbXBs
ZW1lbnRlZC4iKSk7CiAgICAgcmV0dXJuIEVHTF9GQUxTRTsKIH0KIApAQCAtMTE3OCw4ICsxMTIx
LDEwIEBAIEVHTERpc3BsYXkgRUdMQVBJRU5UUlkgR2V0UGxhdGZvcm1EaXNwbGF5KEVHTGVudW0g
cGxhdGZvcm0sIHZvaWQgKm5hdGl2ZV9kaXNwbGF5CiB7CiAgICAgRVZFTlQoIihFR0xlbnVtIHBs
YXRmb3JtID0gJWQsIHZvaWQqIG5hdGl2ZV9kaXNwbGF5ID0gMHglMC44cCwgY29uc3QgRUdMaW50
KiBhdHRyaWJfbGlzdCA9IDB4JTAuOHApIiwKICAgICAgICAgICBwbGF0Zm9ybSwgbmF0aXZlX2Rp
c3BsYXksIGF0dHJpYl9saXN0KTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJl
YWQoKTsKIAogICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB0aHJlYWQtPnNldEVycm9yKEVycm9y
KEVHTF9CQURfRElTUExBWSwgImVnbEdldFBsYXRmb3JtRGlzcGxheSB1bmltcGxlbWVudGVkLiIp
KTsKICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CiB9CiAKQEAgLTExODcsOCArMTEzMiwxMCBA
QCBFR0xTdXJmYWNlIEVHTEFQSUVOVFJZIENyZWF0ZVBsYXRmb3JtV2luZG93U3VyZmFjZShFR0xE
aXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbgogewogICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkg
PSAweCUwLjhwLCBFR0xDb25maWcgY29uZmlnID0gMHglMC44cCwgdm9pZCogbmF0aXZlX3dpbmRv
dyA9IDB4JTAuOHAsIGNvbnN0IEVHTGludCogYXR0cmliX2xpc3QgPSAweCUwLjhwKSIsCiAgICAg
ICAgICAgZHB5LCBjb25maWcsIG5hdGl2ZV93aW5kb3csIGF0dHJpYl9saXN0KTsKKyAgICBUaHJl
YWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfRElTUExBWSwgImVnbENyZWF0ZVBs
YXRmb3JtV2luZG93U3VyZmFjZSB1bmltcGxlbWVudGVkLiIpKTsKICAgICByZXR1cm4gRUdMX05P
X1NVUkZBQ0U7CiB9CiAKQEAgLTExOTYsMjIgKzExNDMsMjcgQEAgRUdMU3VyZmFjZSBFR0xBUElF
TlRSWSBDcmVhdGVQbGF0Zm9ybVBpeG1hcFN1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTENvbmZp
ZyBjb24KIHsKICAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMQ29uZmln
IGNvbmZpZyA9IDB4JTAuOHAsIHZvaWQqIG5hdGl2ZV9waXhtYXAgPSAweCUwLjhwLCBjb25zdCBF
R0xpbnQqIGF0dHJpYl9saXN0ID0gMHglMC44cCkiLAogICAgICAgICAgIGRweSwgY29uZmlnLCBu
YXRpdmVfcGl4bWFwLCBhdHRyaWJfbGlzdCk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJy
ZW50VGhyZWFkKCk7CiAKICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgdGhyZWFkLT5zZXRFcnJv
cihFcnJvcihFR0xfQkFEX0RJU1BMQVksICJlZ2xDcmFldGVQbGF0Zm9ybVBpeG1hU3VyZmFjZSB1
bmltcGxlbWVudGVkLiIpKTsKICAgICByZXR1cm4gRUdMX05PX1NVUkZBQ0U7CiB9CiAKIEVHTEJv
b2xlYW4gRUdMQVBJRU5UUlkgV2FpdFN5bmMoRUdMRGlzcGxheSBkcHksIEVHTFN5bmMgc3luYywg
RUdMaW50IGZsYWdzKQogewogICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBF
R0xTeW5jIHN5bmMgPSAweCUwLjhwLCBFR0xpbnQgZmxhZ3MgPSAweCVYKSIsIGRweSwgc3luYywg
ZmxhZ3MpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAg
VU5JTVBMRU1FTlRFRCgpOworICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9ESVNQ
TEFZLCAiZWdsV2FpdFN5bmMgdW5pbXBsZW1lbnRlZC4iKSk7CiAgICAgcmV0dXJuIEVHTF9GQUxT
RTsKIH0KIAogX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSBFR0xBUElF
TlRSWSBHZXRQcm9jQWRkcmVzcyhjb25zdCBjaGFyICpwcm9jbmFtZSkKIHsKICAgICBFVkVOVCgi
KGNvbnN0IGNoYXIgKnByb2NuYW1lID0gXCIlc1wiKSIsIHByb2NuYW1lKTsKKyAgICBUaHJlYWQg
KnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAgIHR5cGVkZWYgc3RkOjptYXA8c3Rk
OjpzdHJpbmcsIF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGU+IFByb2NB
ZGRyZXNzTWFwOwogICAgIGF1dG8gZ2VuZXJhdGVQcm9jQWRkcmVzc01hcCA9IFtdKCkKQEAgLTEy
MjAsNiArMTE3Miw5IEBAIF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUg
RUdMQVBJRU5UUlkgR2V0UHJvY0FkZHJlc3MoY29uc3QgY2hhciAqCiAjZGVmaW5lIElOU0VSVF9Q
Uk9DX0FERFJFU1MobnMsIHByb2MpIFwKICAgICBtYXBbI25zICNwcm9jXSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8X19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZT4obnM6OnByb2Mp
CiAKKyNkZWZpbmUgSU5TRVJUX1BST0NfQUREUkVTU19OT19OUyhuYW1lLCBwcm9jKSBcCisgICAg
bWFwW25hbWVdID0gcmVpbnRlcnByZXRfY2FzdDxfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlv
blBvaW50ZXJUeXBlPihwcm9jKQorCiAgICAgICAgIC8vIEdMRVMyIGNvcmUKICAgICAgICAgSU5T
RVJUX1BST0NfQUREUkVTUyhnbCwgQWN0aXZlVGV4dHVyZSk7CiAgICAgICAgIElOU0VSVF9QUk9D
X0FERFJFU1MoZ2wsIEF0dGFjaFNoYWRlcik7CkBAIC0xNDA0LDE1ICsxMzU5LDE3IEBAIF9fZWds
TXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUgRUdMQVBJRU5UUlkgR2V0UHJvY0Fk
ZHJlc3MoY29uc3QgY2hhciAqCiAgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFF1
ZXJ5T2JqZWN0dWl2RVhUKTsKIAogICAgICAgICAvLyBHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVl
cnkKLSAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2VuUXVlcmllc0VYVCk7Ci0gICAg
ICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIERlbGV0ZVF1ZXJpZXNFWFQpOwotICAgICAgICBJ
TlNFUlRfUFJPQ19BRERSRVNTKGdsLCBJc1F1ZXJ5RVhUKTsKLSAgICAgICAgSU5TRVJUX1BST0Nf
QUREUkVTUyhnbCwgQmVnaW5RdWVyeUVYVCk7Ci0gICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1Mo
Z2wsIEVuZFF1ZXJ5RVhUKTsKKyAgICAgICAgLy8gQ29tbWVudGVkIG91dCBmdW5jdGlvbnMgYXJl
IG5lZWRlZCBmb3IgR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5CisgICAgICAgIC8vIGJ1dCBh
cmUgcHVsbGVkIGluIGJ5IEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbi4KKyAgICAgICAg
Ly8gSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2VuUXVlcmllc0VYVCk7CisgICAgICAgIC8vIElO
U0VSVF9QUk9DX0FERFJFU1MoZ2wsIERlbGV0ZVF1ZXJpZXNFWFQpOworICAgICAgICAvLyBJTlNF
UlRfUFJPQ19BRERSRVNTKGdsLCBJc1F1ZXJ5RVhUKTsKKyAgICAgICAgLy8gSU5TRVJUX1BST0Nf
QUREUkVTUyhnbCwgQmVnaW5RdWVyeUVYVCk7CisgICAgICAgIC8vIElOU0VSVF9QUk9DX0FERFJF
U1MoZ2wsIEVuZFF1ZXJ5RVhUKTsKICAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgUXVl
cnlDb3VudGVyRVhUKTsKLSAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0UXVlcnlp
dkVYVCk7CisgICAgICAgIC8vIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFF1ZXJ5aXZFWFQp
OwogICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRRdWVyeU9iamVjdGl2RVhUKTsK
LSAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0UXVlcnlPYmplY3R1aXZFWFQpOwor
ICAgICAgICAvLyBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRRdWVyeU9iamVjdHVpdkVYVCk7
CiAgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFF1ZXJ5T2JqZWN0aTY0dkVYVCk7
CiAgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQp
OwogCkBAIC0xNDc1LDggKzE0MzIsOCBAQCBfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBv
aW50ZXJUeXBlIEVHTEFQSUVOVFJZIEdldFByb2NBZGRyZXNzKGNvbnN0IGNoYXIgKgogICAgICAg
ICAvLyBHTF9DSFJPTUlVTV9jb3B5X2NvbXByZXNzZWRfdGV4dHVyZQogICAgICAgICBJTlNFUlRf
UFJPQ19BRERSRVNTKGdsLCBDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTSk7CiAKLSAgICAg
ICAgLy8gR0xfQU5HTEVfd2ViZ2xfY29tcGF0aWJpbGl0eQotICAgICAgICBJTlNFUlRfUFJPQ19B
RERSRVNTKGdsLCBFbmFibGVFeHRlbnNpb25BTkdMRSk7CisgICAgICAgIC8vIEdMX0FOR0xFX3Jl
cXVlc3RfZXh0ZW5zaW9uCisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFJlcXVlc3RF
eHRlbnNpb25BTkdMRSk7CiAKICAgICAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1v
cnkKICAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgR2V0Qm9vbGVhbnZSb2J1c3RBTkdM
RSk7CkBAIC0xNjExLDggKzE1NjgsOCBAQCBfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBv
aW50ZXJUeXBlIEVHTEFQSUVOVFJZIEdldFByb2NBZGRyZXNzKGNvbnN0IGNoYXIgKgogICAgICAg
ICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBVbmlmb3JtQmxvY2tCaW5kaW5nKTsKICAgICAgICAg
SU5TRVJUX1BST0NfQUREUkVTUyhnbCwgRHJhd0FycmF5c0luc3RhbmNlZCk7CiAgICAgICAgIElO
U0VSVF9QUk9DX0FERFJFU1MoZ2wsIERyYXdFbGVtZW50c0luc3RhbmNlZCk7Ci0gICAgICAgIG1h
cFsiZ2xGZW5jZVN5bmMiXSA9Ci0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PF9fZWdsTXVz
dENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGU+KGdsOjpGZW5jZVN5bmNfKTsKKyAgICAg
ICAgLy8gRmVuY2VTeW5jIGlzIHRoZSBuYW1lIG9mIGEgY2xhc3MsIHRoZSBmdW5jdGlvbiBoYXMg
YW4gYWRkZWQgXyB0byBwcmV2ZW50IGEgbmFtZSBjb25mbGljdC4KKyAgICAgICAgSU5TRVJUX1BS
T0NfQUREUkVTU19OT19OUygiZ2xGZW5jZVN5bmMiLCBnbDo6RmVuY2VTeW5jXyk7CiAgICAgICAg
IElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIElzU3luYyk7CiAgICAgICAgIElOU0VSVF9QUk9DX0FE
RFJFU1MoZ2wsIERlbGV0ZVN5bmMpOwogICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBD
bGllbnRXYWl0U3luYyk7CkBAIC0xODE0LDI0ICsxNzcxLDI1IEBAIF9fZWdsTXVzdENhc3RUb1By
b3BlckZ1bmN0aW9uUG9pbnRlclR5cGUgRUdMQVBJRU5UUlkgR2V0UHJvY0FkZHJlc3MoY29uc3Qg
Y2hhciAqCiAKICAgICAgICAgLy8gRUdMX0NIUk9NSVVNX2dldF9zeW5jX3ZhbHVlcwogICAgICAg
ICBJTlNFUlRfUFJPQ19BRERSRVNTKGVnbCwgR2V0U3luY1ZhbHVlc0NIUk9NSVVNKTsKKworICAg
ICAgICAvLyBFR0xfRVhUX3N3YXBfYnVmZmVyc193aXRoX2RhbWFnZQorICAgICAgICBJTlNFUlRf
UFJPQ19BRERSRVNTKGVnbCwgU3dhcEJ1ZmZlcnNXaXRoRGFtYWdlRVhUKTsKKworICAgICAgICAv
LyBhbmdsZTo6UGxhdGZvcm0gcmVsYXRlZCBlbnRyeSBwb2ludHMKKyAgICAgICAgSU5TRVJUX1BS
T0NfQUREUkVTU19OT19OUygiQU5HTEVHZXREaXNwbGF5UGxhdGZvcm0iLCBBTkdMRUdldERpc3Bs
YXlQbGF0Zm9ybSk7CisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1NfTk9fTlMoIkFOR0xFUmVz
ZXREaXNwbGF5UGxhdGZvcm0iLCBBTkdMRVJlc2V0RGlzcGxheVBsYXRmb3JtKTsKKwogI3VuZGVm
IElOU0VSVF9QUk9DX0FERFJFU1MKKyN1bmRlZiBJTlNFUlRfUFJPQ19BRERSRVNTX05PX05TCisK
ICAgICAgICAgcmV0dXJuIG1hcDsKICAgICB9OwogCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZXhpdC10aW1lLWRlc3Ry
dWN0b3JzIgogICAgIHN0YXRpYyBjb25zdCBQcm9jQWRkcmVzc01hcCBwcm9jQWRkcmVzc01hcCA9
IGdlbmVyYXRlUHJvY0FkZHJlc3NNYXAoKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AK
IAorICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKICAgICBhdXRvIGl0
ZXIgPSBwcm9jQWRkcmVzc01hcC5maW5kKHByb2NuYW1lKTsKLSAgICBpZiAoaXRlciAhPSBwcm9j
QWRkcmVzc01hcC5lbmQoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBpdGVyLT5zZWNvbmQ7Ci0g
ICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KKyAg
ICByZXR1cm4gaXRlciAhPSBwcm9jQWRkcmVzc01hcC5lbmQoKSA/IGl0ZXItPnNlY29uZCA6IG51
bGxwdHI7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvZW50cnlfcG9pbnRzX2VnbC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsLmgKaW5kZXggNTExMWY5ZGQ2NDM0ZGU4MzA1MzJj
ZWJkNWEzMzdjYjU4Y2NiOGJlOC4uMjU5YTIwOTY4NDA3NjA4ZDA2YmNkYTc3Zjk0MmM1Y2M5NzAx
ZTFkMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9l
bnRyeV9wb2ludHNfZWdsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9lbnRyeV9wb2ludHNfZWdsLmgKQEAgLTksOCArOSw4IEBACiAjaWZuZGVmIExJQkdMRVNW
Ml9FTlRSWVBPSU5UU0VHTF9IXwogI2RlZmluZSBMSUJHTEVTVjJfRU5UUllQT0lOVFNFR0xfSF8K
IAotI2luY2x1ZGUgPEFOR0xFL2VnbC5oPgotI2luY2x1ZGUgPEFOR0xFL2V4cG9ydC5oPgorI2lu
Y2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxleHBvcnQuaD4KIAogbmFtZXNwYWNlIGVnbAog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRy
eV9wb2ludHNfZWdsX2V4dC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL2VudHJ5X3BvaW50c19lZ2xfZXh0LmNwcAppbmRleCAzMDVhZDQwNzAyZTM1ZTUyOGQ4MjM4
N2I3MDEzYzI4MGI3YmM5OGQwLi4wOWE0YTY4MjgyNDg3YjY4NjFhYmVmNzMxMmFiOWMzMjM3ZTBi
MmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2Vu
dHJ5X3BvaW50c19lZ2xfZXh0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL2VudHJ5X3BvaW50c19lZ2xfZXh0LmNwcApAQCAtMTQsNiArMTQsNyBAQAogI2lu
Y2x1ZGUgImxpYkFOR0xFL0RldmljZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9TdHJlYW0uaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9UaHJlYWQu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS92YWxpZGF0aW9uRUdMLmgiCiAKICNpbmNsdWRlICJjb21t
b24vZGVidWcuaCIKQEAgLTI2LDYgKzI3LDcgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBRdWVy
eVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmEKIHsK
ICAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNl
ID0gMHglMC44cCwgRUdMaW50IGF0dHJpYnV0ZSA9ICVkLCB2b2lkICoqdmFsdWUgPSAweCUwLjhw
KSIsCiAgICAgICAgICAgZHB5LCBzdXJmYWNlLCBhdHRyaWJ1dGUsIHZhbHVlKTsKKyAgICBUaHJl
YWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAgIERpc3BsYXkgKmRpc3BsYXkg
PSBzdGF0aWNfY2FzdDxEaXNwbGF5Kj4oZHB5KTsKICAgICBTdXJmYWNlICplZ2xTdXJmYWNlID0g
c3RhdGljX2Nhc3Q8U3VyZmFjZSo+KHN1cmZhY2UpOwpAQCAtMzMsMTkgKzM1LDE5IEBAIEVHTEJv
b2xlYW4gRUdMQVBJRU5UUlkgUXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTERpc3BsYXkgZHB5
LCBFR0xTdXJmYWNlIHN1cmZhCiAgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZVN1cmZhY2UoZGlz
cGxheSwgZWdsU3VyZmFjZSk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAg
ICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJv
cik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCiAgICAgaWYgKCFkaXNwbGF5
LT5nZXRFeHRlbnNpb25zKCkucXVlcnlTdXJmYWNlUG9pbnRlcikKICAgICB7Ci0gICAgICAgIFNl
dEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAgICAgIHRocmVhZC0+c2V0RXJy
b3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9
CiAKICAgICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKICAgICB7Ci0gICAgICAgIFNl
dEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfU1VSRkFDRSkpOworICAgICAgICB0aHJlYWQtPnNl
dEVycm9yKEVycm9yKEVHTF9CQURfU1VSRkFDRSkpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNF
OwogICAgIH0KIApAQCAtNTUsMjQgKzU3LDI0IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgUXVl
cnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhCiAg
ICAgICBjYXNlIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEU6CiAgICAgICAg
IGlmICghZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygpLnN1cmZhY2VEM0RUZXh0dXJlMkRTaGFyZUhh
bmRsZSkKICAgICAgICAgewotICAgICAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JB
RF9BVFRSSUJVVEUpKTsKKyAgICAgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JB
RF9BVFRSSUJVVEUpKTsKICAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVHTF9EWEdJX0tFWUVEX01VVEVYX0FOR0xFOgog
ICAgICAgICBpZiAoIWRpc3BsYXktPmdldEV4dGVuc2lvbnMoKS5rZXllZE11dGV4KQogICAgICAg
ICB7Ci0gICAgICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVURSkp
OworICAgICAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVURSkp
OwogICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICAgICAgfQogICAgICAgICBicmVh
azsKICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURf
QVRUUklCVVRFKSk7Ci0gICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgICAgdGhyZWFk
LT5zZXRFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVURSkpOworICAgICAgICAgIHJldHVybiBF
R0xfRkFMU0U7CiAgICAgfQogCiAgICAgZXJyb3IgPSBlZ2xTdXJmYWNlLT5xdWVyeVN1cmZhY2VQ
b2ludGVyQU5HTEUoYXR0cmlidXRlLCB2YWx1ZSk7Ci0gICAgU2V0R2xvYmFsRXJyb3IoZXJyb3Ip
OworICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgIHJldHVybiAoZXJyb3IuaXNFcnJv
cigpID8gRUdMX0ZBTFNFIDogRUdMX1RSVUUpOwogfQogCkBAIC04MSwxMCArODMsMTEgQEAgRUdM
Qm9vbGVhbiBFR0xBUElFTlRSWSBRdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMRGlzcGxheSBk
cHksIEVHTFN1cmZhY2Ugc3VyZmEKIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgUG9zdFN1YkJ1ZmZl
ck5WKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCB4LCBFR0xpbnQg
eSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KQogewogICAgIEVWRU5UKCIoRUdMRGlzcGxh
eSBkcHkgPSAweCUwLjhwLCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhwLCBFR0xpbnQgeCA9
ICVkLCBFR0xpbnQgeSA9ICVkLCBFR0xpbnQgd2lkdGggPSAlZCwgRUdMaW50IGhlaWdodCA9ICVk
KSIsIGRweSwgc3VyZmFjZSwgeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAgVGhyZWFkICp0aHJl
YWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7CiAKICAgICBpZiAoeCA8IDAgfHwgeSA8IDAgfHwgd2lk
dGggPCAwIHx8IGhlaWdodCA8IDApCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJv
cihFR0xfQkFEX1BBUkFNRVRFUikpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVH
TF9CQURfUEFSQU1FVEVSKSk7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCkBA
IC05NCwzNyArOTcsMzcgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBQb3N0U3ViQnVmZmVyTlYo
RUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW4KICAgICBFcnJvciBlcnJv
ciA9IFZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBlZ2xTdXJmYWNlKTsKICAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAg
ICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAg
ICB9CiAKICAgICBpZiAoZGlzcGxheS0+dGVzdERldmljZUxvc3QoKSkKICAgICB7Ci0gICAgICAg
IFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9DT05URVhUX0xPU1QpKTsKKyAgICAgICAgdGhyZWFk
LT5zZXRFcnJvcihFcnJvcihFR0xfQ09OVEVYVF9MT1NUKSk7CiAgICAgICAgIHJldHVybiBFR0xf
RkFMU0U7CiAgICAgfQogCiAgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCiAgICAg
ewotICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX1NVUkZBQ0UpKTsKKyAgICAg
ICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfQkFEX1NVUkZBQ0UpKTsKICAgICAgICAgcmV0
dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKICAgICBpZiAoIWRpc3BsYXktPmdldEV4dGVuc2lvbnMo
KS5wb3N0U3ViQnVmZmVyKQogICAgIHsKICAgICAgICAgLy8gU3BlYyBpcyBub3QgY2xlYXIgYWJv
dXQgaG93IHRoaXMgc2hvdWxkIGJlIGhhbmRsZWQuCi0gICAgICAgIFNldEdsb2JhbEVycm9yKEVy
cm9yKEVHTF9TVUNDRVNTKSk7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX1NV
Q0NFU1MpKTsKICAgICAgICAgcmV0dXJuIEVHTF9UUlVFOwogICAgIH0KIAogICAgIGVycm9yID0g
ZWdsU3VyZmFjZS0+cG9zdFN1YkJ1ZmZlcih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKICAgICBpZiAo
ZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOwor
ICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxT
RTsKICAgICB9CiAKLSAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOworICAg
IHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKICAgICByZXR1cm4gRUdMX1RS
VUU7CiB9CiAKQEAgLTEzMyw2ICsxMzYsNyBAQCBFR0xEaXNwbGF5IEVHTEFQSUVOVFJZIEdldFBs
YXRmb3JtRGlzcGxheUVYVChFR0xlbnVtIHBsYXRmb3JtLCB2b2lkICpuYXRpdmVfZGlzcAogewog
ICAgIEVWRU5UKCIoRUdMZW51bSBwbGF0Zm9ybSA9ICVkLCB2b2lkKiBuYXRpdmVfZGlzcGxheSA9
IDB4JTAuOHAsIGNvbnN0IEVHTGludCogYXR0cmliX2xpc3QgPSAweCUwLjhwKSIsCiAgICAgICAg
ICAgcGxhdGZvcm0sIG5hdGl2ZV9kaXNwbGF5LCBhdHRyaWJfbGlzdCk7CisgICAgVGhyZWFkICp0
aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7CiAKICAgICBjb25zdCBDbGllbnRFeHRlbnNpb25z
ICZjbGllbnRFeHRlbnNpb25zID0gRGlzcGxheTo6Z2V0Q2xpZW50RXh0ZW5zaW9ucygpOwogCkBA
IC0xNDEsMzIgKzE0NSwzMyBAQCBFR0xEaXNwbGF5IEVHTEFQSUVOVFJZIEdldFBsYXRmb3JtRGlz
cGxheUVYVChFR0xlbnVtIHBsYXRmb3JtLCB2b2lkICpuYXRpdmVfZGlzcAogICAgICAgY2FzZSBF
R0xfUExBVEZPUk1fQU5HTEVfQU5HTEU6CiAgICAgICAgIGlmICghY2xpZW50RXh0ZW5zaW9ucy5w
bGF0Zm9ybUFOR0xFKQogICAgICAgICB7Ci0gICAgICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJv
cihFR0xfQkFEX1BBUkFNRVRFUikpOworICAgICAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJv
cihFR0xfQkFEX1BBUkFNRVRFUikpOwogICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19ESVNQTEFZ
OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBFR0xfUExBVEZPUk1fREVW
SUNFX0VYVDoKICAgICAgICAgICBpZiAoIWNsaWVudEV4dGVuc2lvbnMucGxhdGZvcm1EZXZpY2Up
CiAgICAgICAgICAgewotICAgICAgICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFE
X1BBUkFNRVRFUiwgIlBsYXRmb3JtIERldmljZSBleHRlbnNpb24gaXMgbm90IGFjdGl2ZSIpKTsK
KyAgICAgICAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwg
IlBsYXRmb3JtIERldmljZSBleHRlbnNpb24gaXMgbm90IGFjdGl2ZSIpKTsKICAgICAgICAgICAg
ICAgcmV0dXJuIEVHTF9OT19ESVNQTEFZOwogICAgICAgICAgIH0KICAgICAgICAgICBicmVhazsK
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfQ09O
RklHKSk7Ci0gICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKKyAgICAgICAgICB0aHJlYWQt
PnNldEVycm9yKEVycm9yKEVHTF9CQURfQ09ORklHKSk7CisgICAgICAgICAgcmV0dXJuIEVHTF9O
T19ESVNQTEFZOwogICAgIH0KIAogICAgIGlmIChwbGF0Zm9ybSA9PSBFR0xfUExBVEZPUk1fQU5H
TEVfQU5HTEUpCiAgICAgewogICAgICAgICBFR0xpbnQgcGxhdGZvcm1UeXBlICAgICAgICAgID0g
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfREVGQVVMVF9BTkdMRTsKICAgICAgICAgRUdMaW50IGRl
dmljZVR5cGUgICAgICAgICAgICA9IEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJE
V0FSRV9BTkdMRTsKLSAgICAgICAgYm9vbCBtYWpvclZlcnNpb25TcGVjaWZpZWQgICA9IGZhbHNl
OwotICAgICAgICBib29sIG1pbm9yVmVyc2lvblNwZWNpZmllZCAgID0gZmFsc2U7CiAgICAgICAg
IGJvb2wgZW5hYmxlQXV0b1RyaW1TcGVjaWZpZWQgPSBmYWxzZTsKICAgICAgICAgYm9vbCBkZXZp
Y2VUeXBlU3BlY2lmaWVkICAgICA9IGZhbHNlOwogICAgICAgICBib29sIHByZXNlbnRQYXRoU3Bl
Y2lmaWVkICAgID0gZmFsc2U7CiAKKyAgICAgICAgT3B0aW9uYWw8RUdMaW50PiBtYWpvclZlcnNp
b247CisgICAgICAgIE9wdGlvbmFsPEVHTGludD4gbWlub3JWZXJzaW9uOworCiAgICAgICAgIGlm
IChhdHRyaWJfbGlzdCkKICAgICAgICAgewogICAgICAgICAgICAgZm9yIChjb25zdCBFR0xpbnQg
KmN1ckF0dHJpYiA9IGF0dHJpYl9saXN0OyBjdXJBdHRyaWJbMF0gIT0gRUdMX05PTkU7IGN1ckF0
dHJpYiArPSAyKQpAQCAtMTc0LDU4ICsxNzksMjggQEAgRUdMRGlzcGxheSBFR0xBUElFTlRSWSBH
ZXRQbGF0Zm9ybURpc3BsYXlFWFQoRUdMZW51bSBwbGF0Zm9ybSwgdm9pZCAqbmF0aXZlX2Rpc3AK
ICAgICAgICAgICAgICAgICBzd2l0Y2ggKGN1ckF0dHJpYlswXSkKICAgICAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEU6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGN1ckF0dHJpYlsxXSkKICAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xFOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX0QzRDlfQU5HTEU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghY2xpZW50RXh0ZW5zaW9ucy5wbGF0Zm9ybUFOR0xFRDNEKQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0R2xvYmFsRXJy
b3IoRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEVHTF9OT19ESVNQTEFZOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEU6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTEVT
X0FOR0xFOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2xpZW50RXh0ZW5zaW9u
cy5wbGF0Zm9ybUFOR0xFT3BlbkdMKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JB
RF9BVFRSSUJVVEUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVH
TF9OT19ESVNQTEFZOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9OVUxMX0FOR0xFOgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghY2xpZW50RXh0ZW5zaW9ucy5wbGF0Zm9ybUFOR0xFTlVMTCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNl
dEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGlzcGxheSB0eXBlICIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX05VTExfQU5HTEUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAicmVxdWlyZXMgRUdMX0FOR0xFX3BsYXRmb3JtX2Fu
Z2xlX251bGwuIikpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRUdM
X05PX0RJU1BMQVk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgICAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9B
VFRSSUJVVEUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFR0xfTk9fRElTUExB
WTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6RXJyb3IgZXJyb3IgPSBWYWxpZGF0ZVBs
YXRmb3JtVHlwZShjbGllbnRFeHRlbnNpb25zLCBjdXJBdHRyaWJbMV0pOworICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybVR5
cGUgPSBjdXJBdHRyaWJbMV07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybVR5cGUgPSBjdXJB
dHRyaWJbMV07Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01BSk9SX0FOR0xFOgogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGN1ckF0dHJpYlsxXSAhPSBFR0xfRE9OVF9DQVJFKQog
ICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h
am9yVmVyc2lvblNwZWNpZmllZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWFqb3JWZXJzaW9uID0gY3VyQXR0cmliWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUlOT1JfQU5HTEU6CiAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoY3VyQXR0cmliWzFdICE9IEVHTF9ET05UX0NBUkUpCiAgICAgICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3JWZXJz
aW9uU3BlY2lmaWVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5vclZl
cnNpb24gPSBjdXJBdHRyaWJbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtMjM2LDggKzIxMSw4IEBAIEVHTERpc3BsYXkg
RUdMQVBJRU5UUlkgR2V0UGxhdGZvcm1EaXNwbGF5RVhUKEVHTGVudW0gcGxhdGZvcm0sIHZvaWQg
Km5hdGl2ZV9kaXNwCiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9GQUxTRToKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihF
R0xfQkFEX0FUVFJJQlVURSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVHTF9O
T19ESVNQTEFZOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZC0+c2V0RXJyb3Io
RXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gRUdMX05PX0RJU1BMQVk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgZW5hYmxlQXV0b1RyaW1TcGVjaWZpZWQgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTI0NSw3ICsyMjAsNyBAQCBFR0xEaXNwbGF5IEVHTEFQSUVOVFJZIEdl
dFBsYXRmb3JtRGlzcGxheUVYVChFR0xlbnVtIHBsYXRmb3JtLCB2b2lkICpuYXRpdmVfZGlzcAog
ICAgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0FO
R0xFOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjbGllbnRFeHRlbnNpb25zLmV4cGVy
aW1lbnRhbFByZXNlbnRQYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRocmVhZC0+c2V0RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVycm9yKEVHTF9CQURfQVRUUklCVVRFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiRUdMX0FOR0xFX2V4cGVyaW1lbnRhbF9wcmVzZW50X3BhdGggZXh0ZW5zaW9uIG5v
dCBhY3RpdmUiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19E
SVNQTEFZOwpAQCAtMjU3LDcgKzIzMiw3IEBAIEVHTERpc3BsYXkgRUdMQVBJRU5UUlkgR2V0UGxh
dGZvcm1EaXNwbGF5RVhUKEVHTGVudW0gcGxhdGZvcm0sIHZvaWQgKm5hdGl2ZV9kaXNwCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfRVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFU
SF9DT1BZX0FOR0xFOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTZXRHbG9iYWxFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGhyZWFkLT5zZXRFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVycm9yKEVHTF9CQURfQVRUUklCVVRFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkludmFsaWQgdmFsdWUgZm9yIEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9Q
QVRIX0FOR0xFIikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRUdM
X05PX0RJU1BMQVk7CkBAIC0yNzksMzEgKzI1NCw1NSBAQCBFR0xEaXNwbGF5IEVHTEFQSUVOVFJZ
IEdldFBsYXRmb3JtRGlzcGxheUVYVChFR0xlbnVtIHBsYXRmb3JtLCB2b2lkICpuYXRpdmVfZGlz
cAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCB2YWx1ZSBmb3Ig
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
RUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0FOR0xFICIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYiIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfQkFEX0FU
VFJJQlVURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiSW52YWxpZCB2YWx1ZSBmb3IgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZ
UEVfQU5HTEUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJhdHRyaWIiKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBFR0xfTk9fRElTUExBWTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgICAgIGRldmljZVR5cGUgPSBjdXJBdHRyaWJbMV07CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogCisgICAgICAgICAgICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FO
R0xFX0VOQUJMRV9WQUxJREFUSU9OX0xBWUVSX0FOR0xFOgorICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFjbGllbnRFeHRlbnNpb25zLnBsYXRmb3JtQU5HTEVWdWxrYW4pCisgICAgICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkLT5zZXRF
cnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IoRUdMX0JBRF9BVFRS
SUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfQU5HTEVf
cGxhdGZvcm1fYW5nbGVfdnVsa2FuIGV4dGVuc2lvbiBub3QgYWN0aXZlIikpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwbGF0Zm9ybVR5cGUgIT0g
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfVlVMS0FOX0FOR0xFKQorICAgICAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yKEVHTF9CQURfQVRUUklCVVRFLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsaWRhdGlvbiBjYW4gb25s
eSBiZSBlbmFibGVkIGZvciB0aGUgVnVsa2FuIGJhY2stZW5kLiIpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyQXR0cmliWzFdICE9IEVHTF9U
UlVFICYmIGN1ckF0dHJpYlsxXSAhPSBFR0xfRkFMU0UpCisgICAgICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkLT5zZXRFcnJvcigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWYWxpZGF0aW9uIGxheWVyIGF0dHJp
YnV0ZSBtdXN0IGJlIEVHTF9UUlVFIG9yIEVHTF9GQUxTRS4iKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19ESVNQTEFZOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGlmICghbWFqb3JWZXJz
aW9uU3BlY2lmaWVkICYmIG1pbm9yVmVyc2lvblNwZWNpZmllZCkKKyAgICAgICAgaWYgKCFtYWpv
clZlcnNpb24udmFsaWQoKSAmJiBtaW5vclZlcnNpb24udmFsaWQoKSkKICAgICAgICAgewotICAg
ICAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUpKTsKKyAgICAg
ICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUpKTsKICAgICAg
ICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChk
ZXZpY2VUeXBlID09IEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9XQVJQX0FOR0xFICYm
CiAgICAgICAgICAgICBwbGF0Zm9ybVR5cGUgIT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNE
MTFfQU5HTEUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKAorICAgICAg
ICAgICAgdGhyZWFkLT5zZXRFcnJvcigKICAgICAgICAgICAgICAgICBFcnJvcihFR0xfQkFEX0FU
VFJJQlVURSwKICAgICAgICAgICAgICAgICAgICAgICAiRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklD
RV9UWVBFX1dBUlBfQU5HTEUgcmVxdWlyZXMgYSBkZXZpY2UgdHlwZSBvZiAiCiAgICAgICAgICAg
ICAgICAgICAgICAgIkVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLiIpKTsKQEAg
LTMxMiw3ICszMTEsNyBAQCBFR0xEaXNwbGF5IEVHTEFQSUVOVFJZIEdldFBsYXRmb3JtRGlzcGxh
eUVYVChFR0xlbnVtIHBsYXRmb3JtLCB2b2lkICpuYXRpdmVfZGlzcAogCiAgICAgICAgIGlmIChl
bmFibGVBdXRvVHJpbVNwZWNpZmllZCAmJiBwbGF0Zm9ybVR5cGUgIT0gRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfRDNEMTFfQU5HTEUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFNldEdsb2JhbEVy
cm9yKAorICAgICAgICAgICAgdGhyZWFkLT5zZXRFcnJvcigKICAgICAgICAgICAgICAgICBFcnJv
cihFR0xfQkFEX0FUVFJJQlVURSwKICAgICAgICAgICAgICAgICAgICAgICAiRUdMX1BMQVRGT1JN
X0FOR0xFX0VOQUJMRV9BVVRPTUFUSUNfVFJJTV9BTkdMRSByZXF1aXJlcyBhIGRldmljZSB0eXBl
IG9mICIKICAgICAgICAgICAgICAgICAgICAgICAiRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNE
MTFfQU5HTEUuIikpOwpAQCAtMzIxLDM5ICszMjAsNTIgQEAgRUdMRGlzcGxheSBFR0xBUElFTlRS
WSBHZXRQbGF0Zm9ybURpc3BsYXlFWFQoRUdMZW51bSBwbGF0Zm9ybSwgdm9pZCAqbmF0aXZlX2Rp
c3AKIAogICAgICAgICBpZiAocHJlc2VudFBhdGhTcGVjaWZpZWQgJiYgcGxhdGZvcm1UeXBlICE9
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVURSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJFR0xfRVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9BTkdM
RSByZXF1aXJlcyBhIGRldmljZSB0eXBlIG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRS4iKSk7CisgICAgICAg
ICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5UX1BBVEhf
QU5HTEUgcmVxdWlyZXMgYSBkZXZpY2UgdHlwZSBvZiAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRS4iKSk7CiAg
ICAgICAgICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoZGV2aWNlVHlwZVNwZWNpZmllZCAmJiBwbGF0Zm9ybVR5cGUgIT0gRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfRDNEOV9BTkdMRSAmJgogICAgICAgICAgICAgcGxhdGZvcm1UeXBlICE9IEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKQogICAgICAgICB7Ci0gICAgICAgICAgICBT
ZXRHbG9iYWxFcnJvcigKKyAgICAgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoCiAgICAgICAgICAg
ICAgICAgRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsCiAgICAgICAgICAgICAgICAgICAgICAgIkVH
TF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9BTkdMRSByZXF1aXJlcyBhIGRldmljZSB0eXBl
IG9mICIKICAgICAgICAgICAgICAgICAgICAgICAiRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNE
OV9BTkdMRSBvciBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFLiIpKTsKICAgICAg
ICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKICAgICAgICAgfQogCi0gICAgICAgIFNldEds
b2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7Ci0gICAgICAgIHJldHVybiBEaXNwbGF5OjpH
ZXREaXNwbGF5RnJvbUF0dHJpYnMobmF0aXZlX2Rpc3BsYXksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwOjpDcmVhdGVGcm9tSW50QXJy
YXkoYXR0cmliX2xpc3QpKTsKKyAgICAgICAgaWYgKHBsYXRmb3JtVHlwZSA9PSBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9WVUxLQU5fQU5HTEUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgo
bWFqb3JWZXJzaW9uLnZhbGlkKCkgJiYgbWFqb3JWZXJzaW9uLnZhbHVlKCkgIT0gMSkgfHwKKyAg
ICAgICAgICAgICAgICAobWlub3JWZXJzaW9uLnZhbGlkKCkgJiYgbWlub3JWZXJzaW9uLnZhbHVl
KCkgIT0gMCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhyZWFkLT5zZXRFcnJv
cihFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgRUdMX0JBRF9BVFRSSUJVVEUsCisgICAgICAg
ICAgICAgICAgICAgICJFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9WVUxLQU5fQU5HTEUgY3VycmVu
dGx5IG9ubHkgc3VwcG9ydHMgVnVsa2FuIDEuMC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IEVHTF9OT19ESVNQTEFZOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdGhy
ZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOworICAgICAgICByZXR1cm4gRGlzcGxh
eTo6R2V0RGlzcGxheUZyb21OYXRpdmVEaXNwbGF5KAorICAgICAgICAgICAgZ2w6OmJpdENhc3Q8
RUdMTmF0aXZlRGlzcGxheVR5cGU+KG5hdGl2ZV9kaXNwbGF5KSwKKyAgICAgICAgICAgIEF0dHJp
YnV0ZU1hcDo6Q3JlYXRlRnJvbUludEFycmF5KGF0dHJpYl9saXN0KSk7CiAgICAgfQogICAgIGVs
c2UgaWYgKHBsYXRmb3JtID09IEVHTF9QTEFURk9STV9ERVZJQ0VfRVhUKQogICAgIHsKICAgICAg
ICAgRGV2aWNlICplZ2xEZXZpY2UgPSByZWludGVycHJldF9jYXN0PERldmljZSAqPihuYXRpdmVf
ZGlzcGxheSk7CiAgICAgICAgIGlmIChlZ2xEZXZpY2UgPT0gbnVsbHB0ciB8fCAhRGV2aWNlOjpJ
c1ZhbGlkRGV2aWNlKGVnbERldmljZSkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFNldEdsb2Jh
bEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIm5hdGl2ZV9kaXNwbGF5IHNob3VsZCBiZSBhIHZhbGlkIEVHTCBkZXZpY2UgaWYg
cGxhdGZvcm0gZXF1YWxzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xf
UExBVEZPUk1fREVWSUNFX0VYVCIpKTsKKyAgICAgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJy
b3IoRUdMX0JBRF9BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJuYXRpdmVfZGlzcGxheSBzaG91bGQgYmUgYSB2YWxpZCBFR0wgZGV2aWNlIGlmIHBsYXRmb3Jt
IGVxdWFscyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfUExBVEZP
Uk1fREVWSUNFX0VYVCIpKTsKICAgICAgICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKICAg
ICAgICAgfQogCi0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7Ci0g
ICAgICAgIHJldHVybiBEaXNwbGF5OjpHZXREaXNwbGF5RnJvbURldmljZShuYXRpdmVfZGlzcGxh
eSk7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKKyAgICAg
ICAgcmV0dXJuIERpc3BsYXk6OkdldERpc3BsYXlGcm9tRGV2aWNlKGVnbERldmljZSk7CiAgICAg
fQogICAgIGVsc2UKICAgICB7CkBAIC0zNjcsMTEgKzM3OSwxMiBAQCBFR0xCb29sZWFuIEVHTEFQ
SUVOVFJZIFF1ZXJ5RGV2aWNlQXR0cmliRVhUKEVHTERldmljZUVYVCBkZXZpY2UsIEVHTGludCBh
dHRyaWJ1dAogewogICAgIEVWRU5UKCIoRUdMRGV2aWNlRVhUIGRldmljZSA9IDB4JTAuOHAsIEVH
TGludCBhdHRyaWJ1dGUgPSAlZCwgRUdMQXR0cmliICp2YWx1ZSA9IDB4JTAuOHApIiwKICAgICAg
ICAgICBkZXZpY2UsIGF0dHJpYnV0ZSwgdmFsdWUpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0
Q3VycmVudFRocmVhZCgpOwogCiAgICAgRGV2aWNlICpkZXYgPSBzdGF0aWNfY2FzdDxEZXZpY2Uq
PihkZXZpY2UpOwogICAgIGlmIChkZXYgPT0gRUdMX05PX0RFVklDRV9FWFQgfHwgIURldmljZTo6
SXNWYWxpZERldmljZShkZXYpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3Io
RUdMX0JBRF9BQ0NFU1MpKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfQkFE
X0FDQ0VTUykpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIApAQCAtMzgwLDkg
KzM5Myw5IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgUXVlcnlEZXZpY2VBdHRyaWJFWFQoRUdM
RGV2aWNlRVhUIGRldmljZSwgRUdMaW50IGF0dHJpYnV0CiAgICAgRGlzcGxheSAqb3duaW5nRGlz
cGxheSA9IGRldi0+Z2V0T3duaW5nRGlzcGxheSgpOwogICAgIGlmIChvd25pbmdEaXNwbGF5ICE9
IG51bGxwdHIgJiYgIW93bmluZ0Rpc3BsYXktPmdldEV4dGVuc2lvbnMoKS5kZXZpY2VRdWVyeSkK
ICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfQUNDRVNTLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiRGV2aWNlIHdhc24ndCBjcmVhdGVkIHVzaW5nIGVn
bENyZWF0ZURldmljZUFOR0xFLCBhbmQgdGhlIERpc3BsYXkgIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAidGhhdCBjcmVhdGVkIGl0IGRvZXNuJ3Qgc3VwcG9ydCBkZXZpY2UgcXVlcnlp
bmciKSk7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9BQ0NFU1MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRldmljZSB3YXNuJ3QgY3JlYXRlZCB1c2lu
ZyBlZ2xDcmVhdGVEZXZpY2VBTkdMRSwgYW5kIHRoZSBEaXNwbGF5ICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAidGhhdCBjcmVhdGVkIGl0IGRvZXNuJ3Qgc3VwcG9ydCBkZXZpY2Ug
cXVlcnlpbmciKSk7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCkBAIC0zOTUs
MTcgKzQwOCwxNyBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFF1ZXJ5RGV2aWNlQXR0cmliRVhU
KEVHTERldmljZUVYVCBkZXZpY2UsIEVHTGludCBhdHRyaWJ1dAogICAgICAgY2FzZSBFR0xfRDNE
OV9ERVZJQ0VfQU5HTEU6CiAgICAgICAgIGlmICghZGV2LT5nZXRFeHRlbnNpb25zKCkuZGV2aWNl
RDNEIHx8IGRldi0+Z2V0VHlwZSgpICE9IGF0dHJpYnV0ZSkKICAgICAgICAgewotICAgICAgICAg
ICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUpKTsKKyAgICAgICAgICAg
IHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUpKTsKICAgICAgICAgICAg
IHJldHVybiBFR0xfRkFMU0U7CiAgICAgICAgIH0KICAgICAgICAgZXJyb3IgPSBkZXYtPmdldERl
dmljZSh2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDoKLSAgICAgICAgU2V0
R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUpKTsKLSAgICAgICAgcmV0dXJuIEVH
TF9GQUxTRTsKKyAgICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklC
VVRFKSk7CisgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKLSAgICBTZXRHbG9i
YWxFcnJvcihlcnJvcik7CisgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgcmV0dXJu
IChlcnJvci5pc0Vycm9yKCkgPyBFR0xfRkFMU0UgOiBFR0xfVFJVRSk7CiB9CiAKQEAgLTQxNCwx
MSArNDI3LDEyIEBAIGNvbnN0IGNoYXIgKiBFR0xBUElFTlRSWSBRdWVyeURldmljZVN0cmluZ0VY
VChFR0xEZXZpY2VFWFQgZGV2aWNlLCBFR0xpbnQgbmFtZSkKIHsKICAgICBFVkVOVCgiKEVHTERl
dmljZUVYVCBkZXZpY2UgPSAweCUwLjhwLCBFR0xpbnQgbmFtZSA9ICVkKSIsCiAgICAgICAgICAg
ZGV2aWNlLCBuYW1lKTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsK
IAogICAgIERldmljZSAqZGV2ID0gc3RhdGljX2Nhc3Q8RGV2aWNlKj4oZGV2aWNlKTsKICAgICBp
ZiAoZGV2ID09IEVHTF9OT19ERVZJQ0VfRVhUIHx8ICFEZXZpY2U6OklzVmFsaWREZXZpY2UoZGV2
KSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfREVWSUNFX0VY
VCkpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfREVWSUNFX0VYVCkp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTQyOSwxMSArNDQzLDExIEBA
IGNvbnN0IGNoYXIgKiBFR0xBUElFTlRSWSBRdWVyeURldmljZVN0cmluZ0VYVChFR0xEZXZpY2VF
WFQgZGV2aWNlLCBFR0xpbnQgbmFtZSkKICAgICAgICAgcmVzdWx0ID0gZGV2LT5nZXRFeHRlbnNp
b25TdHJpbmcoKS5jX3N0cigpOwogICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfREVWSUNFX0VYVCkpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURf
REVWSUNFX0VYVCkpOworICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIFNl
dEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAgdGhyZWFkLT5zZXRFcnJvcihF
cnJvcihFR0xfU1VDQ0VTUykpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQ0MiwxOSAr
NDU2LDIwIEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgUXVlcnlEaXNwbGF5QXR0cmliRVhUKEVH
TERpc3BsYXkgZHB5LCBFR0xpbnQgYXR0cmlidXRlLCBFCiB7CiAgICAgRVZFTlQoIihFR0xEaXNw
bGF5IGRweSA9IDB4JTAuOHAsIEVHTGludCBhdHRyaWJ1dGUgPSAlZCwgRUdMQXR0cmliICp2YWx1
ZSA9IDB4JTAuOHApIiwKICAgICAgICAgICBkcHksIGF0dHJpYnV0ZSwgdmFsdWUpOworICAgIFRo
cmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgRGlzcGxheSAqZGlzcGxh
eSA9IHN0YXRpY19jYXN0PERpc3BsYXkqPihkcHkpOwogCiAgICAgRXJyb3IgZXJyb3IgPSBWYWxp
ZGF0ZURpc3BsYXkoZGlzcGxheSk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0g
ICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihl
cnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCiAgICAgaWYgKCFkaXNw
bGF5LT5nZXRFeHRlbnNpb25zKCkuZGV2aWNlUXVlcnkpCiAgICAgewotICAgICAgICBTZXRHbG9i
YWxFcnJvcihFcnJvcihFR0xfQkFEX0FDQ0VTUykpOworICAgICAgICB0aHJlYWQtPnNldEVycm9y
KEVycm9yKEVHTF9CQURfQUNDRVNTKSk7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAg
fQogCkBAIC00NjYsMTEgKzQ4MSwxMSBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFF1ZXJ5RGlz
cGxheUF0dHJpYkVYVChFR0xEaXNwbGF5IGRweSwgRUdMaW50IGF0dHJpYnV0ZSwgRQogICAgICAg
ICBicmVhazsKIAogICAgICAgZGVmYXVsdDoKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3Io
RUdMX0JBRF9BVFRSSUJVVEUpKTsKLSAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAg
ICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFKSk7CisgICAgICAgICAg
cmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKLSAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7Cisg
ICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgcmV0dXJuIChlcnJvci5pc0Vycm9yKCkg
PyBFR0xfRkFMU0UgOiBFR0xfVFJVRSk7CiB9CiAKQEAgLTQ4NCw2ICs0OTksNyBAQCBBTkdMRV9F
WFBPUlQgRUdMSW1hZ2VLSFIgRUdMQVBJRU5UUlkgQ3JlYXRlSW1hZ2VLSFIoRUdMRGlzcGxheSBk
cHksCiAgICAgICAgICIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xDb250ZXh0IGN0eCA9
IDB4JTAuOHAsIEVHTGVudW0gdGFyZ2V0ID0gMHglWCwgIgogICAgICAgICAiRUdMQ2xpZW50QnVm
ZmVyIGJ1ZmZlciA9IDB4JTAuOHAsIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QgPSAweCUw
LjhwKSIsCiAgICAgICAgIGRweSwgY3R4LCB0YXJnZXQsIGJ1ZmZlciwgYXR0cmliX2xpc3QpOwor
ICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgRGlzcGxheSAq
ZGlzcGxheSAgICAgPSBzdGF0aWNfY2FzdDxEaXNwbGF5ICo+KGRweSk7CiAgICAgZ2w6OkNvbnRl
eHQgKmNvbnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCAqPihjdHgpOwpAQCAtNDkyLDcg
KzUwOCw3IEBAIEFOR0xFX0VYUE9SVCBFR0xJbWFnZUtIUiBFR0xBUElFTlRSWSBDcmVhdGVJbWFn
ZUtIUihFR0xEaXNwbGF5IGRweSwKICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlQ3JlYXRlSW1h
Z2VLSFIoZGlzcGxheSwgY29udGV4dCwgdGFyZ2V0LCBidWZmZXIsIGF0dHJpYnV0ZXMpOwogICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJv
cik7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdM
X05PX0lNQUdFOwogICAgIH0KIApAQCAtNTAwLDcgKzUxNiw3IEBAIEFOR0xFX0VYUE9SVCBFR0xJ
bWFnZUtIUiBFR0xBUElFTlRSWSBDcmVhdGVJbWFnZUtIUihFR0xEaXNwbGF5IGRweSwKICAgICBl
cnJvciA9IGRpc3BsYXktPmNyZWF0ZUltYWdlKGNvbnRleHQsIHRhcmdldCwgYnVmZmVyLCBhdHRy
aWJ1dGVzLCAmaW1hZ2UpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAg
ICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3Ip
OwogICAgICAgICByZXR1cm4gRUdMX05PX0lNQUdFOwogICAgIH0KIApAQCAtNTEwLDYgKzUyNiw3
IEBAIEFOR0xFX0VYUE9SVCBFR0xJbWFnZUtIUiBFR0xBUElFTlRSWSBDcmVhdGVJbWFnZUtIUihF
R0xEaXNwbGF5IGRweSwKIEFOR0xFX0VYUE9SVCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIERlc3Ry
b3lJbWFnZUtIUihFR0xEaXNwbGF5IGRweSwgRUdMSW1hZ2VLSFIgaW1hZ2UpCiB7CiAgICAgRVZF
TlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTEltYWdlIGltYWdlID0gMHglMC44cCki
LCBkcHksIGltYWdlKTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsK
IAogICAgIERpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxEaXNwbGF5ICo+KGRweSk7CiAg
ICAgSW1hZ2UgKmltZyAgICAgICA9IHN0YXRpY19jYXN0PEltYWdlICo+KGltYWdlKTsKQEAgLTUx
Nyw3ICs1MzQsNyBAQCBBTkdMRV9FWFBPUlQgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBEZXN0cm95
SW1hZ2VLSFIoRUdMRGlzcGxheSBkcHksIEVHTEltYWdlS0hSCiAgICAgRXJyb3IgZXJyb3IgPSBW
YWxpZGF0ZURlc3Ryb3lJbWFnZUtIUihkaXNwbGF5LCBpbWcpOwogICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHRo
cmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0K
IApAQCAtNTM0LDExICs1NTEsMTIgQEAgQU5HTEVfRVhQT1JUIEVHTERldmljZUVYVCBFR0xBUElF
TlRSWSBDcmVhdGVEZXZpY2VBTkdMRShFR0xpbnQgZGV2aWNlX3R5cGUsCiAgICAgICAgICIoRUdM
aW50IGRldmljZV90eXBlID0gJWQsIHZvaWQqIG5hdGl2ZV9kZXZpY2UgPSAweCUwLjhwLCBjb25z
dCBFR0xBdHRyaWIqIGF0dHJpYl9saXN0ID0gIgogICAgICAgICAiMHglMC44cCkiLAogICAgICAg
ICBkZXZpY2VfdHlwZSwgbmF0aXZlX2RldmljZSwgYXR0cmliX2xpc3QpOworICAgIFRocmVhZCAq
dGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0
ZUNyZWF0ZURldmljZUFOR0xFKGRldmljZV90eXBlLCBuYXRpdmVfZGV2aWNlLCBhdHRyaWJfbGlz
dCk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVy
cm9yKGVycm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJl
dHVybiBFR0xfTk9fREVWSUNFX0VYVDsKICAgICB9CiAKQEAgLTU0Nyw3ICs1NjUsNyBAQCBBTkdM
RV9FWFBPUlQgRUdMRGV2aWNlRVhUIEVHTEFQSUVOVFJZIENyZWF0ZURldmljZUFOR0xFKEVHTGlu
dCBkZXZpY2VfdHlwZSwKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKICAgICAgICAg
QVNTRVJUKGRldmljZSA9PSBudWxscHRyKTsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3Ip
OworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9O
T19ERVZJQ0VfRVhUOwogICAgIH0KIApAQCAtNTU3LDEzICs1NzUsMTQgQEAgQU5HTEVfRVhQT1JU
IEVHTERldmljZUVYVCBFR0xBUElFTlRSWSBDcmVhdGVEZXZpY2VBTkdMRShFR0xpbnQgZGV2aWNl
X3R5cGUsCiBBTkdMRV9FWFBPUlQgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBSZWxlYXNlRGV2aWNl
QU5HTEUoRUdMRGV2aWNlRVhUIGRldmljZSkKIHsKICAgICBFVkVOVCgiKEVHTERldmljZUVYVCBk
ZXZpY2UgPSAweCUwLjhwKSIsIGRldmljZSk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJy
ZW50VGhyZWFkKCk7CiAKICAgICBEZXZpY2UgKmRldiA9IHN0YXRpY19jYXN0PERldmljZSAqPihk
ZXZpY2UpOwogCiAgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZVJlbGVhc2VEZXZpY2VBTkdMRShk
ZXYpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxF
cnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICBy
ZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIApAQCAtNTc2LDYgKzU5NSw3IEBAIEFOR0xFX0VYUE9S
VCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFJlbGVhc2VEZXZpY2VBTkdMRShFR0xEZXZpY2VFWFQg
ZGV2aWNlKQogRUdMU3RyZWFtS0hSIEVHTEFQSUVOVFJZIENyZWF0ZVN0cmVhbUtIUihFR0xEaXNw
bGF5IGRweSwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCkKIHsKICAgICBFVkVOVCgiKEVHTERp
c3BsYXkgZHB5ID0gMHglMC44cCwgY29uc3QgRUdMQXR0cmliKiBhdHRyaWJfbGlzdCA9IDB4JTAu
OHApIiwgZHB5LCBhdHRyaWJfbGlzdCk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50
VGhyZWFkKCk7CiAKICAgICBEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8RGlzcGxheSAq
PihkcHkpOwogICAgIEF0dHJpYnV0ZU1hcCBhdHRyaWJ1dGVzID0gQXR0cmlidXRlTWFwOjpDcmVh
dGVGcm9tSW50QXJyYXkoYXR0cmliX2xpc3QpOwpAQCAtNTgzLDcgKzYwMyw3IEBAIEVHTFN0cmVh
bUtIUiBFR0xBUElFTlRSWSBDcmVhdGVTdHJlYW1LSFIoRUdMRGlzcGxheSBkcHksIGNvbnN0IEVH
TGludCAqYXR0cmliX2xpCiAgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZUNyZWF0ZVN0cmVhbUtI
UihkaXNwbGF5LCBhdHRyaWJ1dGVzKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsK
LSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9y
KGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9OT19TVFJFQU1fS0hSOwogICAgIH0KIApAQCAt
NTkxLDE3ICs2MTEsMTggQEAgRUdMU3RyZWFtS0hSIEVHTEFQSUVOVFJZIENyZWF0ZVN0cmVhbUtI
UihFR0xEaXNwbGF5IGRweSwgY29uc3QgRUdMaW50ICphdHRyaWJfbGkKICAgICBlcnJvciA9IGRp
c3BsYXktPmNyZWF0ZVN0cmVhbShhdHRyaWJ1dGVzLCAmc3RyZWFtKTsKICAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAg
ICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9OT19TVFJFQU1f
S0hSOwogICAgIH0KIAotICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICB0aHJlYWQtPnNl
dEVycm9yKGVycm9yKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RUdMU3RyZWFtS0hSPihzdHJl
YW0pOwogfQogCiBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIERlc3Ryb3lTdHJlYW1LSFIoRUdMRGlz
cGxheSBkcHksIEVHTFN0cmVhbUtIUiBzdHJlYW0pCiB7CiAgICAgRVZFTlQoIihFR0xEaXNwbGF5
IGRweSA9IDB4JTAuOHAsIEVHTFN0cmVhbUtIUiA9IDB4JTAuOHApIiwgZHB5LCBzdHJlYW0pOwor
ICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgRGlzcGxheSAq
ZGlzcGxheSAgICAgPSBzdGF0aWNfY2FzdDxEaXNwbGF5ICo+KGRweSk7CiAgICAgU3RyZWFtICpz
dHJlYW1PYmplY3QgPSBzdGF0aWNfY2FzdDxTdHJlYW0gKj4oc3RyZWFtKTsKQEAgLTYwOSwxMiAr
NjMwLDEyIEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgRGVzdHJveVN0cmVhbUtIUihFR0xEaXNw
bGF5IGRweSwgRUdMU3RyZWFtS0hSIHN0cmVhbSkKICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRl
RGVzdHJveVN0cmVhbUtIUihkaXNwbGF5LCBzdHJlYW1PYmplY3QpOwogICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAg
IHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAg
IH0KIAogICAgIGRpc3BsYXktPmRlc3Ryb3lTdHJlYW0oc3RyZWFtT2JqZWN0KTsKLSAgICBTZXRH
bG9iYWxFcnJvcihlcnJvcik7CisgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgcmV0
dXJuIEVHTF9UUlVFOwogfQogCkBAIC02MjcsNiArNjQ4LDcgQEAgRUdMQm9vbGVhbiBFR0xBUElF
TlRSWSBTdHJlYW1BdHRyaWJLSFIoRUdMRGlzcGxheSBkcHksCiAgICAgICAgICIoRUdMRGlzcGxh
eSBkcHkgPSAweCUwLjhwLCBFR0xTdHJlYW1LSFIgc3RyZWFtID0gMHglMC44cCwgRUdMZW51bSBh
dHRyaWJ1dGUgPSAweCVYLCAiCiAgICAgICAgICJFR0xpbnQgdmFsdWUgPSAweCVYKSIsCiAgICAg
ICAgIGRweSwgc3RyZWFtLCBhdHRyaWJ1dGUsIHZhbHVlKTsKKyAgICBUaHJlYWQgKnRocmVhZCA9
IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAgIERpc3BsYXkgKmRpc3BsYXkgICAgID0gc3RhdGlj
X2Nhc3Q8RGlzcGxheSAqPihkcHkpOwogICAgIFN0cmVhbSAqc3RyZWFtT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8U3RyZWFtICo+KHN0cmVhbSk7CkBAIC02MzQsNyArNjU2LDcgQEAgRUdMQm9vbGVhbiBF
R0xBUElFTlRSWSBTdHJlYW1BdHRyaWJLSFIoRUdMRGlzcGxheSBkcHksCiAgICAgRXJyb3IgZXJy
b3IgPSBWYWxpZGF0ZVN0cmVhbUF0dHJpYktIUihkaXNwbGF5LCBzdHJlYW1PYmplY3QsIGF0dHJp
YnV0ZSwgdmFsdWUpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBT
ZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwog
ICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIApAQCAtNjUwLDcgKzY3Miw3IEBAIEVH
TEJvb2xlYW4gRUdMQVBJRU5UUlkgU3RyZWFtQXR0cmliS0hSKEVHTERpc3BsYXkgZHB5LAogICAg
ICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9CiAKLSAgICBTZXRHbG9iYWxFcnJvcihlcnJv
cik7CisgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgcmV0dXJuIEVHTF9UUlVFOwog
fQogCkBAIC02NjMsNiArNjg1LDcgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBRdWVyeVN0cmVh
bUtIUihFR0xEaXNwbGF5IGRweSwKICAgICAgICAgIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAs
IEVHTFN0cmVhbUtIUiBzdHJlYW0gPSAweCUwLjhwLCBFR0xlbnVtIGF0dHJpYnV0ZSA9IDB4JVgs
ICIKICAgICAgICAgIkVHTGludCB2YWx1ZSA9IDB4JTAuOHApIiwKICAgICAgICAgZHB5LCBzdHJl
YW0sIGF0dHJpYnV0ZSwgdmFsdWUpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRo
cmVhZCgpOwogCiAgICAgRGlzcGxheSAqZGlzcGxheSAgICAgPSBzdGF0aWNfY2FzdDxEaXNwbGF5
ICo+KGRweSk7CiAgICAgU3RyZWFtICpzdHJlYW1PYmplY3QgPSBzdGF0aWNfY2FzdDxTdHJlYW0g
Kj4oc3RyZWFtKTsKQEAgLTY3MCw3ICs2OTMsNyBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFF1
ZXJ5U3RyZWFtS0hSKEVHTERpc3BsYXkgZHB5LAogICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVR
dWVyeVN0cmVhbUtIUihkaXNwbGF5LCBzdHJlYW1PYmplY3QsIGF0dHJpYnV0ZSwgdmFsdWUpOwog
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihl
cnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4g
RUdMX0ZBTFNFOwogICAgIH0KIApAQCAtNjg5LDcgKzcxMiw3IEBAIEVHTEJvb2xlYW4gRUdMQVBJ
RU5UUlkgUXVlcnlTdHJlYW1LSFIoRUdMRGlzcGxheSBkcHksCiAgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOwogICAgIH0KIAotICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICB0aHJlYWQt
PnNldEVycm9yKGVycm9yKTsKICAgICByZXR1cm4gRUdMX1RSVUU7CiB9CiAKQEAgLTcwMiw2ICs3
MjUsNyBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFF1ZXJ5U3RyZWFtdTY0S0hSKEVHTERpc3Bs
YXkgZHB5LAogICAgICAgICAiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3RyZWFtS0hS
IHN0cmVhbSA9IDB4JTAuOHAsIEVHTGVudW0gYXR0cmlidXRlID0gMHglWCwgIgogICAgICAgICAi
RUdMdWludDY0S0hSIHZhbHVlID0gMHglMC44cCkiLAogICAgICAgICBkcHksIHN0cmVhbSwgYXR0
cmlidXRlLCB2YWx1ZSk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7
CiAKICAgICBEaXNwbGF5ICpkaXNwbGF5ICAgICA9IHN0YXRpY19jYXN0PERpc3BsYXkgKj4oZHB5
KTsKICAgICBTdHJlYW0gKnN0cmVhbU9iamVjdCA9IHN0YXRpY19jYXN0PFN0cmVhbSAqPihzdHJl
YW0pOwpAQCAtNzA5LDcgKzczMyw3IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgUXVlcnlTdHJl
YW11NjRLSFIoRUdMRGlzcGxheSBkcHksCiAgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZVF1ZXJ5
U3RyZWFtdTY0S0hSKGRpc3BsYXksIHN0cmVhbU9iamVjdCwgYXR0cmlidXRlLCB2YWx1ZSk7CiAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVy
cm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBF
R0xfRkFMU0U7CiAgICAgfQogCkBAIC03MjUsMTMgKzc0OSwxNSBAQCBFR0xCb29sZWFuIEVHTEFQ
SUVOVFJZIFF1ZXJ5U3RyZWFtdTY0S0hSKEVHTERpc3BsYXkgZHB5LAogICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKICAgICB9CiAKLSAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgdGhy
ZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgcmV0dXJuIEVHTF9UUlVFOwogfQogCiBFR0xCb29s
ZWFuIEVHTEFQSUVOVFJZIFN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWxLSFIoRUdMRGlz
cGxheSBkcHksIEVHTFN0cmVhbUtIUiBzdHJlYW0pCiB7CiAgICAgRVZFTlQoIihFR0xEaXNwbGF5
IGRweSA9IDB4JTAuOHAsIEVHTFN0cmVhbUtIUiA9IDB4JTAuOHApIiwgZHB5LCBzdHJlYW0pOwor
ICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOworCiAgICAgRGlzcGxheSAq
ZGlzcGxheSAgICAgPSBzdGF0aWNfY2FzdDxEaXNwbGF5ICo+KGRweSk7CiAgICAgU3RyZWFtICpz
dHJlYW1PYmplY3QgPSBzdGF0aWNfY2FzdDxTdHJlYW0gKj4oc3RyZWFtKTsKICAgICBnbDo6Q29u
dGV4dCAqY29udGV4dCA9IGdsOjpHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKQEAgLTczOSwyNCAr
NzY1LDI2IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVF
eHRlcm5hbEtIUihFR0xEaXNwbGF5IGRweSwgRUdMU3RyCiAgICAgRXJyb3IgZXJyb3IgPSBWYWxp
ZGF0ZVN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWxLSFIoZGlzcGxheSwgY29udGV4dCwg
c3RyZWFtT2JqZWN0KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAg
U2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsK
ICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKICAgICBlcnJvciA9IHN0cmVhbU9i
amVjdC0+Y3JlYXRlQ29uc3VtZXJHTFRleHR1cmVFeHRlcm5hbChBdHRyaWJ1dGVNYXAoKSwgY29u
dGV4dCk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2Jh
bEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAg
IHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCi0gICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOwor
ICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgIHJldHVybiBFR0xfVFJVRTsKIH0KIAog
RUdMQm9vbGVhbiBFR0xBUElFTlRSWSBTdHJlYW1Db25zdW1lckFjcXVpcmVLSFIoRUdMRGlzcGxh
eSBkcHksIEVHTFN0cmVhbUtIUiBzdHJlYW0pCiB7CiAgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRw
eSA9IDB4JTAuOHAsIEVHTFN0cmVhbUtIUiA9IDB4JTAuOHApIiwgZHB5LCBzdHJlYW0pOworICAg
IFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOworCiAgICAgRGlzcGxheSAqZGlz
cGxheSAgICAgPSBzdGF0aWNfY2FzdDxEaXNwbGF5ICo+KGRweSk7CiAgICAgU3RyZWFtICpzdHJl
YW1PYmplY3QgPSBzdGF0aWNfY2FzdDxTdHJlYW0gKj4oc3RyZWFtKTsKICAgICBnbDo6Q29udGV4
dCAqY29udGV4dCA9IGdsOjpHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKQEAgLTc2NCwyNCArNzky
LDI2IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgU3RyZWFtQ29uc3VtZXJBY3F1aXJlS0hSKEVH
TERpc3BsYXkgZHB5LCBFR0xTdHJlYW1LSFIgc3RyCiAgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0
ZVN0cmVhbUNvbnN1bWVyQWNxdWlyZUtIUihkaXNwbGF5LCBjb250ZXh0LCBzdHJlYW1PYmplY3Qp
OwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJv
cihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1
cm4gRUdMX0ZBTFNFOwogICAgIH0KIAogICAgIGVycm9yID0gc3RyZWFtT2JqZWN0LT5jb25zdW1l
ckFjcXVpcmUoKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0
R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAg
ICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKLSAgICBTZXRHbG9iYWxFcnJvcihlcnJv
cik7CisgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgcmV0dXJuIEVHTF9UUlVFOwog
fQogCiBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFN0cmVhbUNvbnN1bWVyUmVsZWFzZUtIUihFR0xE
aXNwbGF5IGRweSwgRUdMU3RyZWFtS0hSIHN0cmVhbSkKIHsKICAgICBFVkVOVCgiKEVHTERpc3Bs
YXkgZHB5ID0gMHglMC44cCwgRUdMU3RyZWFtS0hSID0gMHglMC44cCkiLCBkcHksIHN0cmVhbSk7
CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7CisKICAgICBEaXNwbGF5
ICpkaXNwbGF5ICAgICA9IHN0YXRpY19jYXN0PERpc3BsYXkgKj4oZHB5KTsKICAgICBTdHJlYW0g
KnN0cmVhbU9iamVjdCA9IHN0YXRpY19jYXN0PFN0cmVhbSAqPihzdHJlYW0pOwogICAgIGdsOjpD
b250ZXh0ICpjb250ZXh0ID0gZ2w6OkdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwpAQCAtNzg5LDE4
ICs4MTksMTggQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBTdHJlYW1Db25zdW1lclJlbGVhc2VL
SFIoRUdMRGlzcGxheSBkcHksIEVHTFN0cmVhbUtIUiBzdHIKICAgICBFcnJvciBlcnJvciA9IFZh
bGlkYXRlU3RyZWFtQ29uc3VtZXJSZWxlYXNlS0hSKGRpc3BsYXksIGNvbnRleHQsIHN0cmVhbU9i
amVjdCk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2Jh
bEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAg
IHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCiAgICAgZXJyb3IgPSBzdHJlYW1PYmplY3QtPmNv
bnN1bWVyUmVsZWFzZSgpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAg
ICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3Ip
OwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAotICAgIFNldEdsb2JhbEVycm9y
KGVycm9yKTsKKyAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICByZXR1cm4gRUdMX1RS
VUU7CiB9CiAKQEAgLTgxMSw2ICs4NDEsOCBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFN0cmVh
bUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWxBdHRyaWJzTlYoRUdMRGlzcGxheSBkcHksCiAgICAg
RVZFTlQoCiAgICAgICAgICIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdHJlYW1LSFIg
c3RyZWFtID0gMHglMC44cCwgRUdMQXR0cmliIGF0dHJpYl9saXN0ID0gMHglMC44cCIsCiAgICAg
ICAgIGRweSwgc3RyZWFtLCBhdHRyaWJfbGlzdCk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRD
dXJyZW50VGhyZWFkKCk7CisKICAgICBEaXNwbGF5ICpkaXNwbGF5ICAgICAgICA9IHN0YXRpY19j
YXN0PERpc3BsYXkgKj4oZHB5KTsKICAgICBTdHJlYW0gKnN0cmVhbU9iamVjdCAgICA9IHN0YXRp
Y19jYXN0PFN0cmVhbSAqPihzdHJlYW0pOwogICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ICAgID0g
Z2w6OkdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwpAQCAtODIwLDE4ICs4NTIsMTggQEAgRUdMQm9v
bGVhbiBFR0xBUElFTlRSWSBTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dGVybmFsQXR0cmlic05W
KEVHTERpc3BsYXkgZHB5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMpOwogICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAg
IHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAg
IH0KIAogICAgIGVycm9yID0gc3RyZWFtT2JqZWN0LT5jcmVhdGVDb25zdW1lckdMVGV4dHVyZUV4
dGVybmFsKGF0dHJpYnV0ZXMsIGNvbnRleHQpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAg
ICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0
RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAotICAgIFNl
dEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICBy
ZXR1cm4gRUdMX1RSVUU7CiB9CiAKQEAgLTg0Miw2ICs4NzQsOCBAQCBFR0xCb29sZWFuIEVHTEFQ
SUVOVFJZIENyZWF0ZVN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTJBTkdMRShFR0xEaXNwbGF5
IGRweSwKICAgICBFVkVOVCgKICAgICAgICAgIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVH
TFN0cmVhbUtIUiBzdHJlYW0gPSAweCUwLjhwLCBFR0xBdHRyaWIgYXR0cmliX2xpc3QgPSAweCUw
LjhwIiwKICAgICAgICAgZHB5LCBzdHJlYW0sIGF0dHJpYl9saXN0KTsKKyAgICBUaHJlYWQgKnRo
cmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKKwogICAgIERpc3BsYXkgKmRpc3BsYXkgICAgICAg
ID0gc3RhdGljX2Nhc3Q8RGlzcGxheSAqPihkcHkpOwogICAgIFN0cmVhbSAqc3RyZWFtT2JqZWN0
ICAgID0gc3RhdGljX2Nhc3Q8U3RyZWFtICo+KHN0cmVhbSk7CiAgICAgQXR0cmlidXRlTWFwIGF0
dHJpYnV0ZXMgPSBBdHRyaWJ1dGVNYXA6OkNyZWF0ZUZyb21BdHRyaWJBcnJheShhdHRyaWJfbGlz
dCk7CkBAIC04NTAsMTggKzg4NCwxOCBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIENyZWF0ZVN0
cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTJBTkdMRShFR0xEaXNwbGF5IGRweSwKICAgICAgICAg
VmFsaWRhdGVDcmVhdGVTdHJlYW1Qcm9kdWNlckQzRFRleHR1cmVOVjEyQU5HTEUoZGlzcGxheSwg
c3RyZWFtT2JqZWN0LCBhdHRyaWJ1dGVzKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAg
IHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVy
cm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKICAgICBlcnJv
ciA9IHN0cmVhbU9iamVjdC0+Y3JlYXRlUHJvZHVjZXJEM0QxMVRleHR1cmVOVjEyKGF0dHJpYnV0
ZXMpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxF
cnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICBy
ZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAotICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAg
ICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICByZXR1cm4gRUdMX1RSVUU7CiB9CiAKQEAg
LTg3NCw2ICs5MDgsOCBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFN0cmVhbVBvc3REM0RUZXh0
dXJlTlYxMkFOR0xFKEVHTERpc3BsYXkgZHB5LAogICAgICAgICAiKEVHTERpc3BsYXkgZHB5ID0g
MHglMC44cCwgRUdMU3RyZWFtS0hSIHN0cmVhbSA9IDB4JTAuOHAsIHZvaWQqIHRleHR1cmUgPSAw
eCUwLjhwLCAiCiAgICAgICAgICJFR0xBdHRyaWIgYXR0cmliX2xpc3QgPSAweCUwLjhwIiwKICAg
ICAgICAgZHB5LCBzdHJlYW0sIHRleHR1cmUsIGF0dHJpYl9saXN0KTsKKyAgICBUaHJlYWQgKnRo
cmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKKwogICAgIERpc3BsYXkgKmRpc3BsYXkgICAgICAg
ID0gc3RhdGljX2Nhc3Q8RGlzcGxheSAqPihkcHkpOwogICAgIFN0cmVhbSAqc3RyZWFtT2JqZWN0
ICAgID0gc3RhdGljX2Nhc3Q8U3RyZWFtICo+KHN0cmVhbSk7CiAgICAgQXR0cmlidXRlTWFwIGF0
dHJpYnV0ZXMgPSBBdHRyaWJ1dGVNYXA6OkNyZWF0ZUZyb21BdHRyaWJBcnJheShhdHRyaWJfbGlz
dCk7CkBAIC04ODEsMTggKzkxNywxOCBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFN0cmVhbVBv
c3REM0RUZXh0dXJlTlYxMkFOR0xFKEVHTERpc3BsYXkgZHB5LAogICAgIEVycm9yIGVycm9yID0g
VmFsaWRhdGVTdHJlYW1Qb3N0RDNEVGV4dHVyZU5WMTJBTkdMRShkaXNwbGF5LCBzdHJlYW1PYmpl
Y3QsIHRleHR1cmUsIGF0dHJpYnV0ZXMpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAg
ewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0RXJy
b3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAogICAgIGVycm9y
ID0gc3RyZWFtT2JqZWN0LT5wb3N0RDNEMTFOVjEyVGV4dHVyZSh0ZXh0dXJlLCBhdHRyaWJ1dGVz
KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJy
b3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0
dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKLSAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAg
dGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgcmV0dXJuIEVHTF9UUlVFOwogfQogCkBAIC05
MDYsNiArOTQyLDcgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBHZXRTeW5jVmFsdWVzQ0hST01J
VU0oRUdMRGlzcGxheSBkcHksCiAgICAgICAgICIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBF
R0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhwLCBFR0x1aW50NjRLSFIqIHVzdCA9IDB4JTAuOHAs
ICIKICAgICAgICAgIkVHTHVpbnQ2NEtIUiogbXNjID0gMHglMC44cCwgRUdMdWludDY0S0hSKiBz
YmMgPSAweCUwLjhwIiwKICAgICAgICAgZHB5LCBzdXJmYWNlLCB1c3QsIG1zYywgc2JjKTsKKyAg
ICBUaHJlYWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAgIERpc3BsYXkgKmRp
c3BsYXkgICAgPSBzdGF0aWNfY2FzdDxEaXNwbGF5ICo+KGRweSk7CiAgICAgU3VyZmFjZSAqZWds
U3VyZmFjZSA9IHN0YXRpY19jYXN0PFN1cmZhY2UgKj4oc3VyZmFjZSk7CkBAIC05MTMsMTggKzk1
MCw0OSBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIEdldFN5bmNWYWx1ZXNDSFJPTUlVTShFR0xE
aXNwbGF5IGRweSwKICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlR2V0U3luY1ZhbHVlc0NIUk9N
SVVNKGRpc3BsYXksIGVnbFN1cmZhY2UsIHVzdCwgbXNjLCBzYmMpOwogICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAg
IHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAg
IH0KIAogICAgIGVycm9yID0gZWdsU3VyZmFjZS0+Z2V0U3luY1ZhbHVlcyh1c3QsIG1zYywgc2Jj
KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJy
b3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKKyAgICAgICAgcmV0
dXJuIEVHTF9GQUxTRTsKKyAgICB9CisKKyAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKKyAg
ICByZXR1cm4gRUdMX1RSVUU7Cit9CisKK0FOR0xFX0VYUE9SVCBFR0xCb29sZWFuIFN3YXBCdWZm
ZXJzV2l0aERhbWFnZUVYVChFR0xEaXNwbGF5IGRweSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xTdXJmYWNlIHN1cmZhY2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50ICpyZWN0cywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgbl9y
ZWN0cykKK3sKKyAgICBFVkVOVCgKKyAgICAgICAgIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAs
IEVHTFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAsIEVHTGludCAqcmVjdHMgPSAweCUwLjhwLCBF
R0xpbnQgIgorICAgICAgICAibl9yZWN0cyA9ICVkKSIsCisgICAgICAgIGRweSwgc3VyZmFjZSwg
cmVjdHMsIG5fcmVjdHMpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgp
OworCisgICAgRGlzcGxheSAqZGlzcGxheSAgICA9IHN0YXRpY19jYXN0PERpc3BsYXkgKj4oZHB5
KTsKKyAgICBTdXJmYWNlICplZ2xTdXJmYWNlID0gc3RhdGljX2Nhc3Q8U3VyZmFjZSAqPihzdXJm
YWNlKTsKKworICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVTd2FwQnVmZmVyc1dpdGhEYW1hZ2VF
WFQoZGlzcGxheSwgZWdsU3VyZmFjZSwgcmVjdHMsIG5fcmVjdHMpOworICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCisgICAgeworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKKyAgICAg
ICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICB9CisKKyAgICBlcnJvciA9IGVnbFN1cmZhY2UtPnN3
YXBXaXRoRGFtYWdlKHJlY3RzLCBuX3JlY3RzKTsKKyAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQor
ICAgIHsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBF
R0xfRkFMU0U7CiAgICAgfQogCi0gICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOwogICAgIHJldHVy
biBFR0xfVFJVRTsKIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2VnbF9leHQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2VnbF9leHQuaAppbmRleCAxMDlhY2Y4ZjU0
ZTNmMjkwMjJjNjhmMmY2ODI1YjU2ZGE3OTVlMDA4Li5kMDViMTJhZGM1NDgyZDBhMDliMTUwOTkz
YTQ3Y2U0ODRmMzI0MTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL2VudHJ5X3BvaW50c19lZ2xfZXh0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsX2V4dC5oCkBAIC05LDkgKzksOSBA
QAogI2lmbmRlZiBMSUJHTEVTVjJfRU5UUllQT0lOVFNFR0xFWFRfSF8KICNkZWZpbmUgTElCR0xF
U1YyX0VOVFJZUE9JTlRTRUdMRVhUX0hfCiAKLSNpbmNsdWRlIDxBTkdMRS9lZ2wuaD4KLSNpbmNs
dWRlIDxBTkdMRS9lZ2xleHQuaD4KLSNpbmNsdWRlIDxBTkdMRS9leHBvcnQuaD4KKyNpbmNsdWRl
IDxFR0wvZWdsLmg+CisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorI2luY2x1ZGUgPGV4cG9ydC5o
PgogCiBuYW1lc3BhY2UgZWdsCiB7CkBAIC04Nyw2ICs4NywxMiBAQCBBTkdMRV9FWFBPUlQgRUdM
Qm9vbGVhbiBFR0xBUElFTlRSWSBHZXRTeW5jVmFsdWVzQ0hST01JVU0oRUdMRGlzcGxheSBkcHks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMdWludDY0S0hSICptc2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMdWludDY0S0hSICpzYmMpOwogCisvLyBFR0xfRVhU
X3N3YXBfYnVmZmVyc193aXRoX2RhbWFnZQorQU5HTEVfRVhQT1JUIEVHTEJvb2xlYW4gU3dhcEJ1
ZmZlcnNXaXRoRGFtYWdlRVhUKEVHTERpc3BsYXkgZHB5LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgKnJlY3RzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBu
X3JlY3RzKTsKKwogfSAgLy8gbmFtZXNwYWNlIGVnbAogCiAjZW5kaWYgLy8gTElCR0xFU1YyX0VO
VFJZUE9JTlRTRUdMRVhUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMC5jcHAKaW5kZXggOTgz
ZTFlZjI3MGM3ZmNkMzY4ZWQxYWQwMzQ2YWE1ZGUwYTVlZTU4MS4uZDVjMjk3NTViYzY5Y2M1ODcy
MTIyMWM5MzdlOGMwZWEzMmE2OTYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzAuY3BwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfMl8wLmNwcApA
QCAtMjEsNyArMjEsNiBAQAogI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9UZXh0dXJlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvVmVydGV4QXJyYXkuaCIK
LSNpbmNsdWRlICJsaWJBTkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuaCIKIAogI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRp
b25FUy5oIgpAQCAtMzIsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCiAj
aW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgotI2luY2x1ZGUgImNvbW1vbi92ZXJzaW9uLmgi
CiAKIG5hbWVzcGFjZSBnbAogewpAQCAtNzYsMjYgKzc0LDEzIEBAIHZvaWQgR0xfQVBJRU5UUlkg
QmluZEF0dHJpYkxvY2F0aW9uKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdM
Y2hhcioKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9B
VFRSSUJTKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9ncmFtKGNvbnRleHQs
IHByb2dyYW0pOwotCi0gICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKLSAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHN0cm5jbXAobmFtZSwg
ImdsXyIsIDMpID09IDApCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAm
JgorICAgICAgICAgICAgIVZhbGlkYXRlQmluZEF0dHJpYkxvY2F0aW9uKGNvbnRleHQsIHByb2dy
YW0sIGluZGV4LCBuYW1lKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIHByb2dyYW1PYmplY3QtPmJpbmRBdHRyaWJ1dGVMb2NhdGlv
bihpbmRleCwgbmFtZSk7CisgICAgICAgIGNvbnRleHQtPmJpbmRBdHRyaWJMb2NhdGlvbihwcm9n
cmFtLCBpbmRleCwgbmFtZSk7CiAgICAgfQogfQogCkBAIC0xMDYsNTAgKzkxLDEyIEBAIHZvaWQg
R0xfQVBJRU5UUlkgQmluZEJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgYnVmZmVyKQogICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghVmFsaWRCdWZmZXJUYXJnZXQoY29udGV4dCwgdGFy
Z2V0KSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoIWNvbnRleHQtPmdldEdMU3RhdGUoKS5pc0JpbmRHZW5lcmF0ZXNSZXNvdXJjZUVu
YWJsZWQoKSAmJgotICAgICAgICAgICAgIWNvbnRleHQtPmlzQnVmZmVyR2VuZXJhdGVkKGJ1ZmZl
cikpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVC
aW5kQnVmZmVyKGNvbnRleHQsIHRhcmdldCwgYnVmZmVyKSkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJCdWZm
ZXIgd2FzIG5vdCBnZW5lcmF0ZWQiKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBzd2l0Y2ggKHRhcmdldCkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xf
QVJSQVlfQlVGRkVSOgotICAgICAgICAgICAgY29udGV4dC0+YmluZEFycmF5QnVmZmVyKGJ1ZmZl
cik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgY2FzZSBHTF9FTEVNRU5UX0FSUkFZ
X0JVRkZFUjoKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmRFbGVtZW50QXJyYXlCdWZmZXIoYnVm
ZmVyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICBjYXNlIEdMX0NPUFlfUkVBRF9C
VUZGRVI6Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5kQ29weVJlYWRCdWZmZXIoYnVmZmVyKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICBjYXNlIEdMX0NPUFlfV1JJVEVfQlVGRkVS
OgotICAgICAgICAgICAgY29udGV4dC0+YmluZENvcHlXcml0ZUJ1ZmZlcihidWZmZXIpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIGNhc2UgR0xfUElYRUxfUEFDS19CVUZGRVI6Ci0g
ICAgICAgICAgICBjb250ZXh0LT5iaW5kUGl4ZWxQYWNrQnVmZmVyKGJ1ZmZlcik7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgY2FzZSBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSOgotICAg
ICAgICAgICAgY29udGV4dC0+YmluZFBpeGVsVW5wYWNrQnVmZmVyKGJ1ZmZlcik7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JVRkZFUjoKLSAgICAgICAg
ICAgIGNvbnRleHQtPmJpbmRHZW5lcmljVW5pZm9ybUJ1ZmZlcihidWZmZXIpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUjoK
LSAgICAgICAgICAgIGNvbnRleHQtPmJpbmRHZW5lcmljVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIo
YnVmZmVyKTsKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmJpbmRCdWZm
ZXIodGFyZ2V0LCBidWZmZXIpOwogICAgIH0KIH0KIApAQCAtMTYwLDI4ICsxMDcsMTIgQEAgdm9p
ZCBHTF9BUElFTlRSWSBCaW5kRnJhbWVidWZmZXIoR0xlbnVtIHRhcmdldCwgR0x1aW50IGZyYW1l
YnVmZmVyKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghVmFsaWRGcmFtZWJ1ZmZlclRh
cmdldCh0YXJnZXQpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYg
IVZhbGlkYXRlQmluZEZyYW1lYnVmZmVyKGNvbnRleHQsIHRhcmdldCwgZnJhbWVidWZmZXIpKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlm
ICghY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmlzQmluZEdlbmVyYXRlc1Jlc291cmNlRW5hYmxlZCgp
ICYmCi0gICAgICAgICAgICAhY29udGV4dC0+aXNGcmFtZWJ1ZmZlckdlbmVyYXRlZChmcmFtZWJ1
ZmZlcikpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRnJhbWVidWZmZXIgd2FzIG5vdCBnZW5lcmF0ZWQiKSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGFyZ2V0ID09
IEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUgfHwgdGFyZ2V0ID09IEdMX0ZSQU1FQlVGRkVSKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5kUmVhZEZyYW1lYnVmZmVyKGZyYW1l
YnVmZmVyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0YXJnZXQgPT0gR0xfRFJBV19GUkFN
RUJVRkZFUl9BTkdMRSB8fCB0YXJnZXQgPT0gR0xfRlJBTUVCVUZGRVIpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmJpbmREcmF3RnJhbWVidWZmZXIoZnJhbWVidWZmZXIpOwotICAg
ICAgICB9CisgICAgICAgIGNvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGZyYW1lYnVm
ZmVyKTsKICAgICB9CiB9CiAKQEAgLTE5MiwyMCArMTIzLDEyIEBAIHZvaWQgR0xfQVBJRU5UUlkg
QmluZFJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKQogICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIGlmICh0YXJnZXQgIT0gR0xfUkVOREVSQlVGRkVSKQorICAg
ICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlQmluZFJlbmRl
cmJ1ZmZlcihjb250ZXh0LCB0YXJnZXQsIHJlbmRlcmJ1ZmZlcikpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRH
TFN0YXRlKCkuaXNCaW5kR2VuZXJhdGVzUmVzb3VyY2VFbmFibGVkKCkgJiYKLSAgICAgICAgICAg
ICFjb250ZXh0LT5pc1JlbmRlcmJ1ZmZlckdlbmVyYXRlZChyZW5kZXJidWZmZXIpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIlJlbmRlcmJ1ZmZlciB3YXMgbm90IGdlbmVyYXRlZCIpKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnRleHQtPmJpbmRSZW5kZXJidWZmZXIo
cmVuZGVyYnVmZmVyKTsKKyAgICAgICAgY29udGV4dC0+YmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQs
IHJlbmRlcmJ1ZmZlcik7CiAgICAgfQogfQogCkBAIC0yMTYsNyArMTM5LDcgQEAgdm9pZCBHTF9B
UElFTlRSWSBCaW5kVGV4dHVyZShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSkKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBpZiAoIVZhbGlkYXRlQmluZFRleHR1cmUoY29udGV4dCwgdGFy
Z2V0LCB0ZXh0dXJlKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYm
ICFWYWxpZGF0ZUJpbmRUZXh0dXJlKGNvbnRleHQsIHRhcmdldCwgdGV4dHVyZSkpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjMzLDEzICsxNTYsMjkgQEAg
dm9pZCBHTF9BUElFTlRSWSBCbGVuZENvbG9yKEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4s
IEdMY2xhbXBmIGJsdWUsIEdMY2xhbXAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgeworICAgICAgICBpZiAoIWNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlQmxlbmRDb2xvcihjb250ZXh0LCBy
ZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCiAgICAgICAgIGNvbnRleHQtPmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1
ZSwgYWxwaGEpOwogICAgIH0KIH0KIAogdm9pZCBHTF9BUElFTlRSWSBCbGVuZEVxdWF0aW9uKEdM
ZW51bSBtb2RlKQogewotICAgIEJsZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlLCBtb2RlKTsKKyAg
ICBFVkVOVCgiKEdMZW51bSBtb2RlID0gMHglWCkiLCBtb2RlKTsKKworICAgIENvbnRleHQgKmNv
bnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7
CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVCbGVu
ZEVxdWF0aW9uKGNvbnRleHQsIG1vZGUpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT5ibGVuZEVxdWF0aW9uKG1vZGUpOworICAg
IH0KIH0KIAogdm9pZCBHTF9BUElFTlRSWSBCbGVuZEVxdWF0aW9uU2VwYXJhdGUoR0xlbnVtIG1v
ZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpCkBAIC0yNDksMzEgKzE4OCw5IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgQmxlbmRFcXVhdGlvblNlcGFyYXRlKEdMZW51bSBtb2RlUkdCLCBHTGVudW0gbW9kZUFs
cGhhKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAobW9kZVJHQikKLSAgICAgICAg
ewotICAgICAgICAgIGNhc2UgR0xfRlVOQ19BREQ6Ci0gICAgICAgICAgY2FzZSBHTF9GVU5DX1NV
QlRSQUNUOgotICAgICAgICAgIGNhc2UgR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUOgotICAgICAg
ICAgIGNhc2UgR0xfTUlOOgotICAgICAgICAgIGNhc2UgR0xfTUFYOgotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIHN3aXRjaCAobW9kZUFscGhhKQorICAgICAgICBpZiAoIWNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZUJsZW5kRXF1YXRpb25T
ZXBhcmF0ZShjb250ZXh0LCBtb2RlUkdCLCBtb2RlQWxwaGEpKQogICAgICAgICB7Ci0gICAgICAg
ICAgY2FzZSBHTF9GVU5DX0FERDoKLSAgICAgICAgICBjYXNlIEdMX0ZVTkNfU1VCVFJBQ1Q6Ci0g
ICAgICAgICAgY2FzZSBHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1Q6Ci0gICAgICAgICAgY2FzZSBH
TF9NSU46Ci0gICAgICAgICAgY2FzZSBHTF9NQVg6Ci0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTI4Myw3ICsyMDAsMTggQEAgdm9pZCBHTF9BUElFTlRSWSBCbGVuZEVxdWF0aW9uU2VwYXJhdGUo
R0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpCiAKIHZvaWQgR0xfQVBJRU5UUlkgQmxl
bmRGdW5jKEdMZW51bSBzZmFjdG9yLCBHTGVudW0gZGZhY3RvcikKIHsKLSAgICBCbGVuZEZ1bmNT
ZXBhcmF0ZShzZmFjdG9yLCBkZmFjdG9yLCBzZmFjdG9yLCBkZmFjdG9yKTsKKyAgICBFVkVOVCgi
KEdMZW51bSBzZmFjdG9yID0gMHglWCwgR0xlbnVtIGRmYWN0b3IgPSAweCVYKSIsIHNmYWN0b3Is
IGRmYWN0b3IpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUJsZW5kRnVuYyhjb250ZXh0LCBzZmFjdG9yLCBkZmFj
dG9yKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgY29udGV4dC0+YmxlbmRGdW5jKHNmYWN0b3IsIGRmYWN0b3IpOworICAgIH0KIH0KIAogdm9p
ZCBHTF9BUElFTlRSWSBCbGVuZEZ1bmNTZXBhcmF0ZShHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0
UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSkKQEAgLTI5NCwxMzUgKzIyMiwx
MCBAQCB2b2lkIEdMX0FQSUVOVFJZIEJsZW5kRnVuY1NlcGFyYXRlKEdMZW51bSBzcmNSR0IsIEdM
ZW51bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBoYQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN3
aXRjaCAoc3JjUkdCKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9aRVJPOgotICAgICAg
ICAgIGNhc2UgR0xfT05FOgotICAgICAgICAgIGNhc2UgR0xfU1JDX0NPTE9SOgotICAgICAgICAg
IGNhc2UgR0xfT05FX01JTlVTX1NSQ19DT0xPUjoKLSAgICAgICAgICBjYXNlIEdMX0RTVF9DT0xP
UjoKLSAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19EU1RfQ09MT1I6Ci0gICAgICAgICAgY2Fz
ZSBHTF9TUkNfQUxQSEE6Ci0gICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBOgot
ICAgICAgICAgIGNhc2UgR0xfRFNUX0FMUEhBOgotICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVT
X0RTVF9BTFBIQToKLSAgICAgICAgICBjYXNlIEdMX0NPTlNUQU5UX0NPTE9SOgotICAgICAgICAg
IGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SOgotICAgICAgICAgIGNhc2UgR0xfQ09O
U1RBTlRfQUxQSEE6Ci0gICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEE6
Ci0gICAgICAgICAgY2FzZSBHTF9TUkNfQUxQSEFfU0FUVVJBVEU6Ci0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBzd2l0Y2ggKGRzdFJHQikKLSAgICAgICAgewotICAgICAgICAgICAg
Y2FzZSBHTF9aRVJPOgotICAgICAgICAgICAgY2FzZSBHTF9PTkU6Ci0gICAgICAgICAgICBjYXNl
IEdMX1NSQ19DT0xPUjoKLSAgICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19DT0xPUjoK
LSAgICAgICAgICAgIGNhc2UgR0xfRFNUX0NPTE9SOgotICAgICAgICAgICAgY2FzZSBHTF9PTkVf
TUlOVVNfRFNUX0NPTE9SOgotICAgICAgICAgICAgY2FzZSBHTF9TUkNfQUxQSEE6Ci0gICAgICAg
ICAgICBjYXNlIEdMX09ORV9NSU5VU19TUkNfQUxQSEE6Ci0gICAgICAgICAgICBjYXNlIEdMX0RT
VF9BTFBIQToKLSAgICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9BTFBIQToKLSAgICAg
ICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQ09MT1I6Ci0gICAgICAgICAgICBjYXNlIEdMX09ORV9N
SU5VU19DT05TVEFOVF9DT0xPUjoKLSAgICAgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQUxQSEE6
Ci0gICAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQToKLSAgICAgICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgY2FzZSBHTF9TUkNfQUxQSEFfU0FUVVJBVEU6
Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwg
MykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIHN3aXRjaCAoc3JjQWxwaGEpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdM
X1pFUk86Ci0gICAgICAgICAgY2FzZSBHTF9PTkU6Ci0gICAgICAgICAgY2FzZSBHTF9TUkNfQ09M
T1I6Ci0gICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfU1JDX0NPTE9SOgotICAgICAgICAgIGNh
c2UgR0xfRFNUX0NPTE9SOgotICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9DT0xPUjoK
LSAgICAgICAgICBjYXNlIEdMX1NSQ19BTFBIQToKLSAgICAgICAgICBjYXNlIEdMX09ORV9NSU5V
U19TUkNfQUxQSEE6Ci0gICAgICAgICAgY2FzZSBHTF9EU1RfQUxQSEE6Ci0gICAgICAgICAgY2Fz
ZSBHTF9PTkVfTUlOVVNfRFNUX0FMUEhBOgotICAgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQ09M
T1I6Ci0gICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6Ci0gICAgICAg
ICAgY2FzZSBHTF9DT05TVEFOVF9BTFBIQToKLSAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19D
T05TVEFOVF9BTFBIQToKLSAgICAgICAgICBjYXNlIEdMX1NSQ19BTFBIQV9TQVRVUkFURToKLSAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAoZHN0QWxwaGEpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGNhc2UgR0xfWkVSTzoKLSAgICAgICAgICAgIGNhc2UgR0xfT05FOgot
ICAgICAgICAgICAgY2FzZSBHTF9TUkNfQ09MT1I6Ci0gICAgICAgICAgICBjYXNlIEdMX09ORV9N
SU5VU19TUkNfQ09MT1I6Ci0gICAgICAgICAgICBjYXNlIEdMX0RTVF9DT0xPUjoKLSAgICAgICAg
ICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9DT0xPUjoKLSAgICAgICAgICAgIGNhc2UgR0xfU1JD
X0FMUEhBOgotICAgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBOgotICAgICAg
ICAgICAgY2FzZSBHTF9EU1RfQUxQSEE6Ci0gICAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19E
U1RfQUxQSEE6Ci0gICAgICAgICAgICBjYXNlIEdMX0NPTlNUQU5UX0NPTE9SOgotICAgICAgICAg
ICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6Ci0gICAgICAgICAgICBjYXNlIEdM
X0NPTlNUQU5UX0FMUEhBOgotICAgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRf
QUxQSEE6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGNhc2UgR0xfU1JD
X0FMUEhBX1NBVFVSQVRFOgotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRN
YWpvclZlcnNpb24oKSA8IDMpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoY29udGV4dC0+Z2V0TGltaXRhdGlvbnMoKS5u
b1NpbXVsdGFuZW91c0NvbnN0YW50Q29sb3JBbmRBbHBoYUJsZW5kRnVuYykKLSAgICAgICAgewot
ICAgICAgICAgICAgYm9vbCBjb25zdGFudENvbG9yVXNlZCA9Ci0gICAgICAgICAgICAgICAgKHNy
Y1JHQiA9PSBHTF9DT05TVEFOVF9DT0xPUiB8fCBzcmNSR0IgPT0gR0xfT05FX01JTlVTX0NPTlNU
QU5UX0NPTE9SIHx8Ci0gICAgICAgICAgICAgICAgIGRzdFJHQiA9PSBHTF9DT05TVEFOVF9DT0xP
UiB8fCBkc3RSR0IgPT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SKTsKLQotICAgICAgICAg
ICAgYm9vbCBjb25zdGFudEFscGhhVXNlZCA9Ci0gICAgICAgICAgICAgICAgKHNyY1JHQiA9PSBH
TF9DT05TVEFOVF9BTFBIQSB8fCBzcmNSR0IgPT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhB
IHx8Ci0gICAgICAgICAgICAgICAgIGRzdFJHQiA9PSBHTF9DT05TVEFOVF9BTFBIQSB8fCBkc3RS
R0IgPT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBKTsKLQotICAgICAgICAgICAgaWYgKGNv
bnN0YW50Q29sb3JVc2VkICYmIGNvbnN0YW50QWxwaGFVc2VkKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIEVSUigKLSAgICAgICAgICAgICAgICAgICAgIlNpbXVsdGFuZW91cyB1c2Ug
b2YgR0xfQ09OU1RBTlRfQUxQSEEvR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBIGFuZCAiCi0g
ICAgICAgICAgICAgICAgICAgICJHTF9DT05TVEFOVF9DT0xPUi9HTF9PTkVfTUlOVVNfQ09OU1RB
TlRfQ09MT1Igbm90IHN1cHBvcnRlZCBieSB0aGlzICIKLSAgICAgICAgICAgICAgICAgICAgImlt
cGxlbWVudGF0aW9uLiIpOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAg
ICAgICAgICAgICFWYWxpZGF0ZUJsZW5kRnVuY1NlcGFyYXRlKGNvbnRleHQsIHNyY1JHQiwgZHN0
UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAogICAgICAgICBjb250ZXh0LT5ibGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0Is
IGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKQEAgLTQ3MSwxNiArMjc0LDEyIEBAIEdMZW51
bSBHTF9BUElFTlRSWSBDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMZW51bSB0YXJnZXQpCiAgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFWYWxpZEZyYW1lYnVmZmVyVGFyZ2V0KHRhcmdldCkp
CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVDaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKGNvbnRleHQsIHRhcmdldCkpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIAotICAgICAgICBGcmFtZWJ1ZmZlciAqZnJhbWVi
dWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0
KTsKLSAgICAgICAgQVNTRVJUKGZyYW1lYnVmZmVyKTsKLQotICAgICAgICByZXR1cm4gZnJhbWVi
dWZmZXItPmNoZWNrU3RhdHVzKGNvbnRleHQtPmdldENvbnRleHRTdGF0ZSgpKTsKKyAgICAgICAg
cmV0dXJuIGNvbnRleHQtPmNoZWNrRnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsKICAgICB9CiAK
ICAgICByZXR1cm4gMDsKQEAgLTUxMCw2ICszMDksMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBDbGVh
ckNvbG9yKEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xh
bXAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAg
aWYgKGNvbnRleHQpCiAgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgJiYgIVZhbGlkYXRlQ2xlYXJDb2xvcihjb250ZXh0LCByZWQsIGdyZWVuLCBibHVlLCBhbHBo
YSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAg
IGNvbnRleHQtPmNsZWFyQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogICAgIH0KIH0K
QEAgLTUyMSw2ICszMjUsMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBDbGVhckRlcHRoZihHTGNsYW1w
ZiBkZXB0aCkKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgJiYgIVZhbGlkYXRlQ2xlYXJEZXB0aGYoY29udGV4dCwgZGVwdGgpKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBjb250ZXh0LT5j
bGVhckRlcHRoZihkZXB0aCk7CiAgICAgfQogfQpAQCAtNTMyLDYgKzM0MSwxMSBAQCB2b2lkIEdM
X0FQSUVOVFJZIENsZWFyU3RlbmNpbChHTGludCBzKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CisgICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVDbGVhclN0ZW5jaWwo
Y29udGV4dCwgcykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CiAgICAgICAgIGNvbnRleHQtPmNsZWFyU3RlbmNpbChzKTsKICAgICB9CiB9CkBAIC01NDQsNiAr
MzU4LDExIEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29sb3JNYXNrKEdMYm9vbGVhbiByZWQsIEdMYm9v
bGVhbiBncmVlbiwgR0xib29sZWFuIGJsdWUsIEdMYm9vCiAgICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKKyAgICAg
ICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUNvbG9yTWFzayhj
b250ZXh0LCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGNvbnRleHQtPmNvbG9yTWFzayhyZWQsIGdy
ZWVuLCBibHVlLCBhbHBoYSk7CiAgICAgfQogfQpAQCAtNTU1LDEyICszNzQsMTIgQEAgdm9pZCBH
TF9BUElFTlRSWSBDb21waWxlU2hhZGVyKEdMdWludCBzaGFkZXIpCiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgU2hhZGVyICpzaGFkZXJPYmplY3QgPSBHZXRWYWxpZFNoYWRlcihjb250ZXh0LCBz
aGFkZXIpOwotICAgICAgICBpZiAoIXNoYWRlck9iamVjdCkKKyAgICAgICAgaWYgKCFjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUNvbXBpbGVTaGFkZXIoY29udGV4dCwgc2hh
ZGVyKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAg
IHNoYWRlck9iamVjdC0+Y29tcGlsZShjb250ZXh0LT5nZXRDb21waWxlcigpKTsKKworICAgICAg
ICBjb250ZXh0LT5jb21waWxlU2hhZGVyKHNoYWRlcik7CiAgICAgfQogfQogCkBAIC02NTUsNiAr
NDc0LDExIEBAIEdMdWludCBHTF9BUElFTlRSWSBDcmVhdGVQcm9ncmFtKHZvaWQpCiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0
KQogICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxp
ZGF0ZUNyZWF0ZVByb2dyYW0oY29udGV4dCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biAwOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIGNvbnRleHQtPmNyZWF0ZVByb2dyYW0o
KTsKICAgICB9CiAKQEAgLTY2OCw3ICs0OTIsNiBAQCBHTHVpbnQgR0xfQVBJRU5UUlkgQ3JlYXRl
U2hhZGVyKEdMZW51bSB0eXBlKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0KICAgICAgICAgaWYgKCFjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUNyZWF0ZVNoYWRlcihjb250ZXh0LCB0
eXBlKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC02ODUsMTUgKzUwOCw4
IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ3VsbEZhY2UoR0xlbnVtIG1vZGUpCiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgc3dpdGNoIChtb2RlKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgJiYgIVZhbGlkYXRlQ3VsbEZhY2UoY29udGV4dCwgbW9kZSkpCiAgICAgICAgIHsK
LSAgICAgICAgICBjYXNlIEdMX0ZST05UOgotICAgICAgICAgIGNhc2UgR0xfQkFDSzoKLSAgICAg
ICAgICBjYXNlIEdMX0ZST05UX0FORF9CQUNLOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC03
MTMsMTAgKzUyOSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlQnVmZmVycyhHTHNpemVpIG4s
IGNvbnN0IEdMdWludCogYnVmZmVycykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5kZWxldGVCdWZmZXIoYnVmZmVyc1tpXSk7Ci0gICAgICAgIH0KKyAgICAg
ICAgY29udGV4dC0+ZGVsZXRlQnVmZmVycyhuLCBidWZmZXJzKTsKICAgICB9CiB9CiAKQEAgLTcz
MiwxMyArNTQ1LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEZWxldGVGcmFtZWJ1ZmZlcnMoR0xzaXpl
aSBuLCBjb25zdCBHTHVpbnQqIGZyYW1lYnVmZmVycykKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoZnJhbWVidWZmZXJzW2ldICE9IDApCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlRnJhbWVidWZmZXIoZnJhbWVidWZmZXJzW2ld
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5kZWxldGVGcmFt
ZWJ1ZmZlcnMobiwgZnJhbWVidWZmZXJzKTsKICAgICB9CiB9CiAKQEAgLTc0OSwyNSArNTU2LDEx
IEBAIHZvaWQgR0xfQVBJRU5UUlkgRGVsZXRlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBpZiAocHJvZ3JhbSA9PSAwKQorICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlRGVsZXRlUHJvZ3JhbShjb250ZXh0LCBw
cm9ncmFtKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKCFjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZihjb250ZXh0LT5nZXRTaGFkZXIocHJvZ3JhbSkpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCiAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVByb2dy
YW0ocHJvZ3JhbSk7CiAgICAgfQogfQpAQCAtNzg0LDEwICs1NzcsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIERlbGV0ZVJlbmRlcmJ1ZmZlcnMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHJlbmRlcmJ1
ZmZlcnMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG47IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGVs
ZXRlUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcnNbaV0pOwotICAgICAgICB9CisgICAgICAgIGNv
bnRleHQtPmRlbGV0ZVJlbmRlcmJ1ZmZlcnMobiwgcmVuZGVyYnVmZmVycyk7CiAgICAgfQogfQog
CkBAIC03OTgsMjUgKzU4OCwxMSBAQCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVNoYWRlcihHTHVp
bnQgc2hhZGVyKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChzaGFkZXIgPT0gMCkKKyAg
ICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZURlbGV0ZVNo
YWRlcihjb250ZXh0LCBzaGFkZXIpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAoIWNvbnRleHQtPmdldFNoYWRlcihzaGFkZXIpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZihjb250ZXh0LT5nZXRQcm9ncmFtKHNoYWRlcikpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCiAgICAgICAgIGNvbnRleHQt
PmRlbGV0ZVNoYWRlcihzaGFkZXIpOwogICAgIH0KIH0KQEAgLTgzMywxMyArNjA5LDcgQEAgdm9p
ZCBHTF9BUElFTlRSWSBEZWxldGVUZXh0dXJlcyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCogdGV4
dHVyZXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG47IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHRleHR1cmVz
W2ldICE9IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRl
VGV4dHVyZSh0ZXh0dXJlc1tpXSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAg
Y29udGV4dC0+ZGVsZXRlVGV4dHVyZXMobiwgdGV4dHVyZXMpOwogICAgIH0KIH0KIApAQCAtODUw
LDIwICs2MjAsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIERlcHRoRnVuYyhHTGVudW0gZnVuYykKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzd2l0Y2ggKGZ1bmMpCisgICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVEZXB0aEZ1bmMoY29udGV4dCwgZnVuYykp
CiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX05FVkVSOgotICAgICAgICAgIGNhc2UgR0xf
QUxXQVlTOgotICAgICAgICAgIGNhc2UgR0xfTEVTUzoKLSAgICAgICAgICBjYXNlIEdMX0xFUVVB
TDoKLSAgICAgICAgICBjYXNlIEdMX0VRVUFMOgotICAgICAgICAgIGNhc2UgR0xfR1JFQVRFUjoK
LSAgICAgICAgICBjYXNlIEdMX0dFUVVBTDoKLSAgICAgICAgICBjYXNlIEdMX05PVEVRVUFMOgot
ICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTg3OCw2ICs2MzYsMTEgQEAgdm9pZCBHTF9BUElF
TlRSWSBEZXB0aE1hc2soR0xib29sZWFuIGZsYWcpCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKKyAgICAgICAg
aWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZURlcHRoTWFzayhjb250
ZXh0LCBmbGFnKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
ICAgICAgICAgY29udGV4dC0+ZGVwdGhNYXNrKGZsYWcpOwogICAgIH0KIH0KQEAgLTg4OSw2ICs2
NTIsMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBEZXB0aFJhbmdlZihHTGNsYW1wZiB6TmVhciwgR0xj
bGFtcGYgekZhcikKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlRGVwdGhSYW5nZWYoY29udGV4dCwgek5lYXIsIHpGYXIp
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBj
b250ZXh0LT5kZXB0aFJhbmdlZih6TmVhciwgekZhcik7CiAgICAgfQogfQpAQCAtOTAwLDIzICs2
NjgsMTIgQEAgdm9pZCBHTF9BUElFTlRSWSBEZXRhY2hTaGFkZXIoR0x1aW50IHByb2dyYW0sIEdM
dWludCBzaGFkZXIpCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9i
amVjdCA9IEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtKTsKLSAgICAgICAgaWYgKCFw
cm9ncmFtT2JqZWN0KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBTaGFkZXIgKnNoYWRlck9iamVjdCA9IEdldFZhbGlkU2hhZGVyKGNvbnRleHQs
IHNoYWRlcik7Ci0gICAgICAgIGlmICghc2hhZGVyT2JqZWN0KQorICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlRGV0YWNoU2hhZGVyKGNvbnRleHQsIHBy
b2dyYW0sIHNoYWRlcikpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIGlmICghcHJvZ3JhbU9iamVjdC0+ZGV0YWNoU2hhZGVyKHNoYWRlck9iamVj
dCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAg
ICAgICAgY29udGV4dC0+ZGV0YWNoU2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CiAgICAgfQogfQog
CkBAIC05NDMsOSArNzAwLDggQEAgdm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlVmVydGV4QXR0cmli
QXJyYXkoR0x1aW50IGluZGV4KQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChpbmRleCA+
PSBNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSAmJiAhVmFsaWRhdGVEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoY29udGV4dCwgaW5kZXgp
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtOTYw
LDE3ICs3MTYsMTIgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3QXJyYXlzKEdMZW51bSBtb2RlLCBH
TGludCBmaXJzdCwgR0xzaXplaSBjb3VudCkKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAo
IVZhbGlkYXRlRHJhd0FycmF5cyhjb250ZXh0LCBtb2RlLCBmaXJzdCwgY291bnQsIDApKQorICAg
ICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlRHJhd0FycmF5
cyhjb250ZXh0LCBtb2RlLCBmaXJzdCwgY291bnQpKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBFcnJvciBlcnJvciA9IGNvbnRleHQtPmRyYXdB
cnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
LSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmRyYXdBcnJheXMo
bW9kZSwgZmlyc3QsIGNvdW50KTsKICAgICB9CiB9CiAKQEAgLTk4MiwxOCArNzMzLDE0IEBAIHZv
aWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBH
TGVudW0gdHlwZSwgY29uc3QgR0x2CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKKyAgICAgICAgLy8gVE9ETyhq
bWFkaWxsKTogQ2FjaGUgaW5kZXggcmFuZ2UgaW4gdGhlIGNvbnRleHQuCiAgICAgICAgIEluZGV4
UmFuZ2UgaW5kZXhSYW5nZTsKLSAgICAgICAgaWYgKCFWYWxpZGF0ZURyYXdFbGVtZW50cyhjb250
ZXh0LCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgMCwgJmluZGV4UmFuZ2UpKQorICAgICAg
ICBpZiAoIVZhbGlkYXRlRHJhd0VsZW1lbnRzKGNvbnRleHQsIG1vZGUsIGNvdW50LCB0eXBlLCBp
bmRpY2VzLCAxLCAmaW5kZXhSYW5nZSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIEVycm9yIGVycm9yID0gY29udGV4dC0+ZHJhd0VsZW1lbnRz
KG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbmRleFJhbmdlKTsKLSAgICAgICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGNvbnRl
eHQtPmRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgaW5kZXhSYW5nZSk7
CiAgICAgfQogfQogCkBAIC0xMDIwLDkgKzc2Nyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRW5hYmxl
VmVydGV4QXR0cmliQXJyYXkoR0x1aW50IGluZGV4KQogICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgICAgIGlmICghY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShjb250
ZXh0LCBpbmRleCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCkBAIC0xMDM3LDEyICs3ODMsMTIgQEAgdm9pZCBHTF9BUElFTlRSWSBGaW5pc2godm9pZCkK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBFcnJvciBlcnJvciA9IGNvbnRleHQtPmZpbmlzaCgp
OwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlRmluaXNoKGNvbnRleHQpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT5maW5pc2goKTsKICAgICB9CiB9CiAK
QEAgLTEwNTMsMTIgKzc5OSwxMiBAQCB2b2lkIEdMX0FQSUVOVFJZIEZsdXNoKHZvaWQpCiAgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgRXJyb3IgZXJyb3IgPSBjb250ZXh0LT5mbHVzaCgpOwotICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgJiYgIVZhbGlkYXRlRmx1c2goY29udGV4dCkpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQorCisgICAgICAgIGNvbnRleHQtPmZsdXNoKCk7CiAgICAgfQogfQogCkBAIC0xMTA2
LDEzICs4NTIsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIEZyb250RmFjZShHTGVudW0gbW9kZSkKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBzd2l0Y2ggKG1vZGUpCisgICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVGcm9udEZhY2UoY29udGV4dCwgbW9kZSkp
CiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0NXOgotICAgICAgICAgIGNhc2UgR0xfQ0NX
OgotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMTMyLDEwICs4NzMsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIEdlbkJ1ZmZlcnMoR0xzaXplaSBuLCBHTHVpbnQqIGJ1ZmZlcnMpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkr
KykKLSAgICAgICAgewotICAgICAgICAgICAgYnVmZmVyc1tpXSA9IGNvbnRleHQtPmNyZWF0ZUJ1
ZmZlcigpOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmdlbkJ1ZmZlcnMobiwgYnVmZmVy
cyk7CiAgICAgfQogfQogCkBAIC0xMTY3LDEwICs5MDUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdl
bkZyYW1lYnVmZmVycyhHTHNpemVpIG4sIEdMdWludCogZnJhbWVidWZmZXJzKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBp
KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZyYW1lYnVmZmVyc1tpXSA9IGNvbnRleHQtPmNy
ZWF0ZUZyYW1lYnVmZmVyKCk7Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+Z2VuRnJhbWVi
dWZmZXJzKG4sIGZyYW1lYnVmZmVycyk7CiAgICAgfQogfQogCkBAIC0xMTg2LDEwICs5MjEsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIEdlblJlbmRlcmJ1ZmZlcnMoR0xzaXplaSBuLCBHTHVpbnQqIHJl
bmRlcmJ1ZmZlcnMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgcmVuZGVy
YnVmZmVyc1tpXSA9IGNvbnRleHQtPmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwotICAgICAgICB9Cisg
ICAgICAgIGNvbnRleHQtPmdlblJlbmRlcmJ1ZmZlcnMobiwgcmVuZGVyYnVmZmVycyk7CiAgICAg
fQogfQogCkBAIC0xMjA1LDEwICs5MzcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdlblRleHR1cmVz
KEdMc2l6ZWkgbiwgR0x1aW50KiB0ZXh0dXJlcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQotICAgICAgICB7Ci0g
ICAgICAgICAgICB0ZXh0dXJlc1tpXSA9IGNvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKLSAgICAg
ICAgfQorICAgICAgICBjb250ZXh0LT5nZW5UZXh0dXJlcyhuLCB0ZXh0dXJlcyk7CiAgICAgfQog
fQogCkBAIC0xMjIxLDI2ICs5NTAsMTMgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVBdHRy
aWIoR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLAogICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIGlmIChidWZzaXplIDwgMCkKLSAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVj
dCA9IEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtKTsKLQotICAgICAgICBpZiAoIXBy
b2dyYW1PYmplY3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChpbmRleCA+PSAoR0x1aW50KXByb2dyYW1PYmplY3QtPmdldEFjdGl2ZUF0
dHJpYnV0ZUNvdW50KCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAm
JgorICAgICAgICAgICAgIVZhbGlkYXRlR2V0QWN0aXZlQXR0cmliKGNvbnRleHQsIHByb2dyYW0s
IGluZGV4LCBidWZzaXplLCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwcm9ncmFtT2JqZWN0
LT5nZXRBY3RpdmVBdHRyaWJ1dGUoaW5kZXgsIGJ1ZnNpemUsIGxlbmd0aCwgc2l6ZSwgdHlwZSwg
bmFtZSk7CisgICAgICAgIGNvbnRleHQtPmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwg
YnVmc2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lKTsKICAgICB9CiB9CiAKQEAgLTEyNTAs
MzAgKzk2NiwxNiBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEFjdGl2ZVVuaWZvcm0oR0x1aW50IHBy
b2dyYW0sIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLAogICAgICAgICAgICJHTHNpemVp
KiBsZW5ndGggPSAweCUwLjhwLCBHTGludCogc2l6ZSA9IDB4JTAuOHAsIEdMZW51bSogdHlwZSA9
IDB4JTAuOHAsIEdMY2hhciogbmFtZSA9IDB4JTAuOHApIiwKICAgICAgICAgICBwcm9ncmFtLCBp
bmRleCwgYnVmc2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lKTsKIAotCiAgICAgQ29udGV4
dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgaWYgKGJ1ZnNpemUgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0g
R2V0VmFsaWRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pOwotCi0gICAgICAgIGlmICghcHJvZ3Jh
bU9iamVjdCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKGluZGV4ID49IChHTHVpbnQpcHJvZ3JhbU9iamVjdC0+Z2V0QWN0aXZlVW5pZm9y
bUNvdW50KCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAg
ICAgICAgICAgIVZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybShjb250ZXh0LCBwcm9ncmFtLCBpbmRl
eCwgYnVmc2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lKSkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcHJvZ3JhbU9iamVjdC0+Z2V0
QWN0aXZlVW5pZm9ybShpbmRleCwgYnVmc2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lKTsK
KyAgICAgICAgY29udGV4dC0+Z2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgYnVmc2l6
ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lKTsKICAgICB9CiB9CiAKQEAgLTEyODUsMjAgKzk4
NywxMyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldEF0dGFjaGVkU2hhZGVycyhHTHVpbnQgcHJvZ3Jh
bSwgR0xzaXplaSBtYXhjb3VudCwgR0xzaXplaSogYwogICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IGlmIChtYXhjb3VudCA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFByb2dy
YW0oY29udGV4dCwgcHJvZ3JhbSk7Ci0KLSAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAg
ICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxp
ZGF0ZUdldEF0dGFjaGVkU2hhZGVycyhjb250ZXh0LCBwcm9ncmFtLCBtYXhjb3VudCwgY291bnQs
IHNoYWRlcnMpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICByZXR1cm4gcHJvZ3JhbU9iamVjdC0+Z2V0QXR0YWNoZWRTaGFkZXJzKG1heGNvdW50
LCBjb3VudCwgc2hhZGVycyk7CisgICAgICAgIGNvbnRleHQtPmdldEF0dGFjaGVkU2hhZGVycyhw
cm9ncmFtLCBtYXhjb3VudCwgY291bnQsIHNoYWRlcnMpOwogICAgIH0KIH0KIApAQCAtMTMwOSwy
MCArMTAwNCwxMiBAQCBHTGludCBHTF9BUElFTlRSWSBHZXRBdHRyaWJMb2NhdGlvbihHTHVpbnQg
cHJvZ3JhbSwgY29uc3QgR0xjaGFyKiBuYW1lKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFBy
b2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7
Ci0KLSAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gLTE7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QtPmlzTGlu
a2VkKCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRh
dGVHZXRBdHRyaWJMb2NhdGlvbihjb250ZXh0LCBwcm9ncmFtLCBuYW1lKSkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVy
biBwcm9ncmFtT2JqZWN0LT5nZXRBdHRyaWJ1dGVMb2NhdGlvbihuYW1lKTsKKyAgICAgICAgcmV0
dXJuIGNvbnRleHQtPmdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIG5hbWUpOwogICAgIH0KIAog
ICAgIHJldHVybiAtMTsKQEAgLTEzMzUsMjEgKzEwMjIsMTIgQEAgdm9pZCBHTF9BUElFTlRSWSBH
ZXRCb29sZWFudihHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiogcGFyYW1zKQogICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIEdMZW51bSBuYXRpdmVUeXBlOwotICAgICAgICB1bnNpZ25lZCBpbnQgbnVt
UGFyYW1zID0gMDsKLSAgICAgICAgaWYgKCFWYWxpZGF0ZVN0YXRlUXVlcnkoY29udGV4dCwgcG5h
bWUsICZuYXRpdmVUeXBlLCAmbnVtUGFyYW1zKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUdldEJvb2xlYW52KGNvbnRleHQsIHBuYW1lLCBwYXJh
bXMpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAobmF0aXZlVHlwZSA9PSBHTF9CT09MKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5nZXRCb29sZWFudihwbmFtZSwgcGFyYW1zKTsKLSAgICAgICAgfQotICAgICAgICBlbHNl
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIENhc3RTdGF0ZVZhbHVlcyhjb250ZXh0LCBuYXRpdmVU
eXBlLCBwbmFtZSwgbnVtUGFyYW1zLCBwYXJhbXMpOwotICAgICAgICB9CisgICAgICAgIGNvbnRl
eHQtPmdldEJvb2xlYW52KHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIApAQCAtMTM2Niw4ICsx
MDQ0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRCdWZmZXJQYXJhbWV0ZXJpdihHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIEJ1ZmZlciAqYnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgp
LmdldFRhcmdldEJ1ZmZlcih0YXJnZXQpOwotICAgICAgICBRdWVyeUJ1ZmZlclBhcmFtZXRlcml2
KGJ1ZmZlciwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGNvbnRleHQtPmdldEJ1ZmZlclBhcmFt
ZXRlcml2KHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0xMzc5LDYgKzEw
NTYsMTEgQEAgR0xlbnVtIEdMX0FQSUVOVFJZIEdldEVycm9yKHZvaWQpCiAKICAgICBpZiAoY29u
dGV4dCkKICAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAh
VmFsaWRhdGVHZXRFcnJvcihjb250ZXh0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IEdMX05PX0VSUk9SOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIGNvbnRleHQtPmdldEVy
cm9yKCk7CiAgICAgfQogCkBAIC0xMzkyLDIxICsxMDc0LDEyIEBAIHZvaWQgR0xfQVBJRU5UUlkg
R2V0RmxvYXR2KEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKQogICAgIENvbnRleHQgKmNv
bnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIEdMZW51bSBuYXRpdmVUeXBlOwotICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUGFy
YW1zID0gMDsKLSAgICAgICAgaWYgKCFWYWxpZGF0ZVN0YXRlUXVlcnkoY29udGV4dCwgcG5hbWUs
ICZuYXRpdmVUeXBlLCAmbnVtUGFyYW1zKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpICYmICFWYWxpZGF0ZUdldEZsb2F0dihjb250ZXh0LCBwbmFtZSwgcGFyYW1zKSkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYg
KG5hdGl2ZVR5cGUgPT0gR0xfRkxPQVQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmdldEZsb2F0dihwbmFtZSwgcGFyYW1zKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIENhc3RTdGF0ZVZhbHVlcyhjb250ZXh0LCBuYXRpdmVUeXBlLCBw
bmFtZSwgbnVtUGFyYW1zLCBwYXJhbXMpOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmdl
dEZsb2F0dihwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTE0MjYsOCArMTA5OSw3IEBA
IHZvaWQgR0xfQVBJRU5UUlkgR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0xl
bnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRH
TFN0YXRlKCkuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsKLSAgICAgICAgUXVlcnlGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihmcmFtZWJ1ZmZlciwgYXR0YWNobWVudCwgcG5h
bWUsIHBhcmFtcyk7CisgICAgICAgIGNvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBh
cmFtZXRlcml2KHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQog
CkBAIC0xNDM4LDIyICsxMTEwLDEyIEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdlcnYoR0xl
bnVtIHBuYW1lLCBHTGludCogcGFyYW1zKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxp
ZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEdMZW51
bSBuYXRpdmVUeXBlOwotICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zID0gMDsKLQotICAg
ICAgICBpZiAoIVZhbGlkYXRlU3RhdGVRdWVyeShjb250ZXh0LCBwbmFtZSwgJm5hdGl2ZVR5cGUs
ICZudW1QYXJhbXMpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYg
IVZhbGlkYXRlR2V0SW50ZWdlcnYoY29udGV4dCwgcG5hbWUsIHBhcmFtcykpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChuYXRpdmVUeXBl
ID09IEdMX0lOVCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdlcnYo
cG5hbWUsIHBhcmFtcyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAg
ICAgICAgICBDYXN0U3RhdGVWYWx1ZXMoY29udGV4dCwgbmF0aXZlVHlwZSwgcG5hbWUsIG51bVBh
cmFtcywgcGFyYW1zKTsKLSAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5nZXRJbnRlZ2Vydihw
bmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTE0NzEsOCArMTEzMyw3IEBAIHZvaWQgR0xf
QVBJRU5UUlkgR2V0UHJvZ3JhbWl2KEdMdWludCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMaW50
KiBwYXJhbXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBQcm9n
cmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKLSAgICAg
ICAgUXVlcnlQcm9ncmFtaXYocHJvZ3JhbU9iamVjdCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAg
IGNvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFtLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9
CiAKQEAgLTE0ODQsMTkgKzExNDUsMTMgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtSW5m
b0xvZyhHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW4KICAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBpZiAoYnVmc2l6ZSA8IDApCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmpl
Y3QgPSBHZXRWYWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7Ci0gICAgICAgIGlmICghcHJv
Z3JhbU9iamVjdCkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisg
ICAgICAgICAgICAhVmFsaWRhdGVHZXRQcm9ncmFtSW5mb0xvZyhjb250ZXh0LCBwcm9ncmFtLCBi
dWZzaXplLCBsZW5ndGgsIGluZm9sb2cpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBwcm9ncmFtT2JqZWN0LT5nZXRJbmZvTG9nKGJ1ZnNpemUs
IGxlbmd0aCwgaW5mb2xvZyk7CisgICAgICAgIGNvbnRleHQtPmdldEluZm9Mb2cocHJvZ3JhbSwg
YnVmc2l6ZSwgbGVuZ3RoLCBpbmZvbG9nKTsKICAgICB9CiB9CiAKQEAgLTE1MTMsOCArMTE2OCw3
IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyID0gY29udGV4dC0+Z2V0R0xT
dGF0ZSgpLmdldEN1cnJlbnRSZW5kZXJidWZmZXIoKTsKLSAgICAgICAgUXVlcnlSZW5kZXJidWZm
ZXJpdihyZW5kZXJidWZmZXIsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBjb250ZXh0LT5nZXRS
ZW5kZXJidWZmZXJQYXJhbWV0ZXJpdih0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0K
IApAQCAtMTUzMCw4ICsxMTg0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRTaGFkZXJpdihHTHVp
bnQgc2hhZGVyLCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBTaGFkZXIgKnNoYWRlck9iamVjdCA9IGNvbnRleHQt
PmdldFNoYWRlcihzaGFkZXIpOwotICAgICAgICBRdWVyeVNoYWRlcml2KHNoYWRlck9iamVjdCwg
cG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGNvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgcG5h
bWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0xNTQzLDE5ICsxMTk2LDEzIEBAIHZvaWQgR0xf
QVBJRU5UUlkgR2V0U2hhZGVySW5mb0xvZyhHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZnNpemUs
IEdMc2l6ZWkqIGxlbmd0CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGJ1ZnNpemUgPCAw
KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBTaGFkZXIgKnNoYWRlck9iamVjdCA9IEdldFZhbGlkU2hhZGVyKGNvbnRleHQsIHNoYWRlcik7
Ci0gICAgICAgIGlmICghc2hhZGVyT2JqZWN0KQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZUdldFNoYWRlckluZm9Mb2coY29u
dGV4dCwgc2hhZGVyLCBidWZzaXplLCBsZW5ndGgsIGluZm9sb2cpKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBzaGFkZXJPYmplY3QtPmdldElu
Zm9Mb2coYnVmc2l6ZSwgbGVuZ3RoLCBpbmZvbG9nKTsKKyAgICAgICAgY29udGV4dC0+Z2V0U2hh
ZGVySW5mb0xvZyhzaGFkZXIsIGJ1ZnNpemUsIGxlbmd0aCwgaW5mb2xvZyk7CiAgICAgfQogfQog
CkBAIC0xNTY3LDY5ICsxMjE0LDEzIEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2hhZGVyUHJlY2lz
aW9uRm9ybWF0KEdMZW51bSBzaGFkZXJ0eXBlLCBHTGVudW0gcHJlY2lzaW9udHlwCiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgc3dpdGNoIChzaGFkZXJ0eXBlKQotICAgICAgICB7Ci0gICAgICAg
ICAgY2FzZSBHTF9WRVJURVhfU0hBREVSOgotICAgICAgICAgICAgc3dpdGNoIChwcmVjaXNpb250
eXBlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEdMX0xPV19GTE9BVDoKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5nZXRDYXBzKCkudmVydGV4TG93cEZsb2F0LmdldChyYW5n
ZSwgcHJlY2lzaW9uKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2Fz
ZSBHTF9NRURJVU1fRkxPQVQ6Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0Q2FwcygpLnZl
cnRleE1lZGl1bXBGbG9hdC5nZXQocmFuZ2UsIHByZWNpc2lvbik7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfSElHSF9GTE9BVDoKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5nZXRDYXBzKCkudmVydGV4SGlnaHBGbG9hdC5nZXQocmFuZ2UsIHByZWNpc2lv
bik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgY2FzZSBHTF9MT1df
SU5UOgotICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldENhcHMoKS52ZXJ0ZXhMb3dwSW50Lmdl
dChyYW5nZSwgcHJlY2lzaW9uKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgY2FzZSBHTF9NRURJVU1fSU5UOgotICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldENhcHMo
KS52ZXJ0ZXhNZWRpdW1wSW50LmdldChyYW5nZSwgcHJlY2lzaW9uKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9ISUdIX0lOVDoKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5nZXRDYXBzKCkudmVydGV4SGlnaHBJbnQuZ2V0KHJhbmdlLCBwcmVjaXNpb24p
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICBjYXNlIEdMX0ZSQUdNRU5UX1NIQURFUjoKLSAgICAgICAgICAgIHN3
aXRjaCAocHJlY2lzaW9udHlwZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBH
TF9MT1dfRkxPQVQ6Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0Q2FwcygpLmZyYWdtZW50
TG93cEZsb2F0LmdldChyYW5nZSwgcHJlY2lzaW9uKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgY2FzZSBHTF9NRURJVU1fRkxPQVQ6Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+Z2V0Q2FwcygpLmZyYWdtZW50TWVkaXVtcEZsb2F0LmdldChyYW5nZSwgcHJlY2lzaW9u
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9ISUdIX0ZM
T0FUOgotICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldENhcHMoKS5mcmFnbWVudEhpZ2hwRmxv
YXQuZ2V0KHJhbmdlLCBwcmVjaXNpb24pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgICAgICAgIGNhc2UgR0xfTE9XX0lOVDoKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRD
YXBzKCkuZnJhZ21lbnRMb3dwSW50LmdldChyYW5nZSwgcHJlY2lzaW9uKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9NRURJVU1fSU5UOgotICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmdldENhcHMoKS5mcmFnbWVudE1lZGl1bXBJbnQuZ2V0KHJhbmdlLCBw
cmVjaXNpb24pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdM
X0hJR0hfSU5UOgotICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldENhcHMoKS5mcmFnbWVudEhp
Z2hwSW50LmdldChyYW5nZSwgcHJlY2lzaW9uKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAg
IVZhbGlkYXRlR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KGNvbnRleHQsIHNoYWRlcnR5cGUsIHBy
ZWNpc2lvbnR5cGUsIHJhbmdlLCBwcmVjaXNpb24pKQorICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBjb250ZXh0LT5nZXRTaGFkZXJQcmVjaXNpb25G
b3JtYXQoc2hhZGVydHlwZSwgcHJlY2lzaW9udHlwZSwgcmFuZ2UsIHByZWNpc2lvbik7CiAgICAg
fQogfQogCkBAIC0xNjQxLDE5ICsxMjMyLDEzIEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2hhZGVy
U291cmNlKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoCiAg
ICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChj
b250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGJ1ZnNpemUgPCAwKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBTaGFkZXIgKnNoYWRlck9i
amVjdCA9IEdldFZhbGlkU2hhZGVyKGNvbnRleHQsIHNoYWRlcik7Ci0gICAgICAgIGlmICghc2hh
ZGVyT2JqZWN0KQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAg
ICAgICAgICAgICFWYWxpZGF0ZUdldFNoYWRlclNvdXJjZShjb250ZXh0LCBzaGFkZXIsIGJ1ZnNp
emUsIGxlbmd0aCwgc291cmNlKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgc2hhZGVyT2JqZWN0LT5nZXRTb3VyY2UoYnVmc2l6ZSwgbGVuZ3Ro
LCBzb3VyY2UpOworICAgICAgICBjb250ZXh0LT5nZXRTaGFkZXJTb3VyY2Uoc2hhZGVyLCBidWZz
aXplLCBsZW5ndGgsIHNvdXJjZSk7CiAgICAgfQogfQogCkBAIC0xNjY1LDQ1ICsxMjUwLDEyIEBA
IGNvbnN0IEdMdWJ5dGUgKkdMX0FQSUVOVFJZIEdldFN0cmluZyhHTGVudW0gbmFtZSkKIAogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3dpdGNoIChuYW1lKQorICAgICAgICBpZiAo
IWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlR2V0U3RyaW5nKGNvbnRleHQs
IG5hbWUpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjYXNlIEdMX1ZFTkRPUjoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVieXRlICo+KCJHb29nbGUg
SW5jLiIpOwotCi0gICAgICAgICAgICBjYXNlIEdMX1JFTkRFUkVSOgotICAgICAgICAgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUgKj4oY29udGV4dC0+Z2V0UmVu
ZGVyZXJTdHJpbmcoKSk7Ci0KLSAgICAgICAgICAgIGNhc2UgR0xfVkVSU0lPTjoKLSAgICAgICAg
ICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPT0gMikKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IEdMdWJ5dGUgKj4oCi0gICAgICAgICAgICAgICAgICAgICAgICAiT3BlbkdMIEVTIDIu
MCAoQU5HTEUgIiBBTkdMRV9WRVJTSU9OX1NUUklORyAiKSIpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVieXRlICo+KAotICAgICAgICAg
ICAgICAgICAgICAgICAgIk9wZW5HTCBFUyAzLjAgKEFOR0xFICIgQU5HTEVfVkVSU0lPTl9TVFJJ
TkcgIikiKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNhc2UgR0xfU0hBRElO
R19MQU5HVUFHRV9WRVJTSU9OOgotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRNYWpvclZlcnNpb24oKSA9PSAyKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSAqPigKLSAgICAgICAg
ICAgICAgICAgICAgICAgICJPcGVuR0wgRVMgR0xTTCBFUyAxLjAwIChBTkdMRSAiIEFOR0xFX1ZF
UlNJT05fU1RSSU5HICIpIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUgKj4oCi0gICAgICAgICAgICAgICAgICAgICAgICAiT3Bl
bkdMIEVTIEdMU0wgRVMgMy4wMCAoQU5HTEUgIiBBTkdMRV9WRVJTSU9OX1NUUklORyAiKSIpOwot
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY2FzZSBHTF9FWFRFTlNJT05TOgotICAg
ICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUgKj4oY29u
dGV4dC0+Z2V0RXh0ZW5zaW9uU3RyaW5nKCkpOwotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gY29udGV4dC0+Z2V0U3RyaW5nKG5hbWUpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRy
OwpAQCAtMTcyMiw4ICsxMjc0LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJm
dihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQqIHBhcmFtcykKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBjb250
ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7Ci0gICAgICAgIFF1ZXJ5VGV4UGFyYW1ldGVy
ZnYodGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGNvbnRleHQtPmdldFRleFBhcmFt
ZXRlcmZ2KHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0xNzQwLDggKzEy
OTEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFRleFBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQs
IEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0
dXJlKHRhcmdldCk7Ci0gICAgICAgIFF1ZXJ5VGV4UGFyYW1ldGVyaXYodGV4dHVyZSwgcG5hbWUs
IHBhcmFtcyk7CisgICAgICAgIGNvbnRleHQtPmdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5h
bWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0xNzUyLDE1ICsxMzAyLDEyIEBAIHZvaWQgR0xf
QVBJRU5UUlkgR2V0VW5pZm9ybWZ2KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xm
bG9hdCogcGFyYW1zKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghVmFsaWRhdGVHZXRV
bmlmb3JtZnYoY29udGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24sIHBhcmFtcykpCisgICAgICAgIGlm
ICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVHZXRVbmlmb3JtZnYoY29u
dGV4dCwgcHJvZ3JhbSwgbG9jYXRpb24sIHBhcmFtcykpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBj
b250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOwotICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVj
dCk7Ci0KLSAgICAgICAgcHJvZ3JhbU9iamVjdC0+Z2V0VW5pZm9ybWZ2KGxvY2F0aW9uLCBwYXJh
bXMpOworICAgICAgICBjb250ZXh0LT5nZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHBh
cmFtcyk7CiAgICAgfQogfQogCkBAIC0xNzcxLDE1ICsxMzE4LDEyIEBAIHZvaWQgR0xfQVBJRU5U
UlkgR2V0VW5pZm9ybWl2KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQqIHBh
cmFtcykKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIVZhbGlkYXRlR2V0VW5pZm9ybWl2
KGNvbnRleHQsIHByb2dyYW0sIGxvY2F0aW9uLCBwYXJhbXMpKQorICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlR2V0VW5pZm9ybWl2KGNvbnRleHQsIHBy
b2dyYW0sIGxvY2F0aW9uLCBwYXJhbXMpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+
Z2V0UHJvZ3JhbShwcm9ncmFtKTsKLSAgICAgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOwotCi0g
ICAgICAgIHByb2dyYW1PYmplY3QtPmdldFVuaWZvcm1pdihsb2NhdGlvbiwgcGFyYW1zKTsKKyAg
ICAgICAgY29udGV4dC0+Z2V0VW5pZm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCBwYXJhbXMpOwog
ICAgIH0KIH0KIApAQCAtMTc5MCwyNSArMTMzNCwxMiBAQCBHTGludCBHTF9BUElFTlRSWSBHZXRV
bmlmb3JtTG9jYXRpb24oR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciogbmFtZSkKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBpZiAoc3Ryc3RyKG5hbWUsICJnbF8iKSA9PSBuYW1lKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLQotICAgICAgICBQcm9n
cmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pOwot
Ci0gICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUdldFVuaWZvcm1Mb2NhdGlvbihjb250ZXh0LCBwcm9n
cmFtLCBuYW1lKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0LT5pc0xpbmtlZCgpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJu
IHByb2dyYW1PYmplY3QtPmdldFVuaWZvcm1Mb2NhdGlvbihuYW1lKTsKKyAgICAgICAgcmV0dXJu
IGNvbnRleHQtPmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCBuYW1lKTsKICAgICB9CiAKICAg
ICByZXR1cm4gLTE7CkBAIC0xODI2LDExICsxMzU3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRW
ZXJ0ZXhBdHRyaWJmdihHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1z
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29uc3QgVmVydGV4
QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlcyA9Ci0gICAgICAgICAgICBjb250
ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXR0cmliQ3VycmVudFZhbHVlKGluZGV4KTsKLSAg
ICAgICAgY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIgPQotICAgICAgICAgICAgY29udGV4
dC0+Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0ZShpbmRl
eCk7Ci0gICAgICAgIFF1ZXJ5VmVydGV4QXR0cmliZnYoYXR0cmliLCBjdXJyZW50VmFsdWVzLCBw
bmFtZSwgcGFyYW1zKTsKKyAgICAgICAgY29udGV4dC0+Z2V0VmVydGV4QXR0cmliZnYoaW5kZXgs
IHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIApAQCAtMTg0NiwxMSArMTM3Myw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliaXYoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUs
IEdMaW50KiBwYXJhbXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWVzID0KLSAg
ICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFs
dWUoaW5kZXgpOwotICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiA9Ci0gICAg
ICAgICAgICBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXJyYXkoKS0+Z2V0VmVydGV4
QXR0cmlidXRlKGluZGV4KTsKLSAgICAgICAgUXVlcnlWZXJ0ZXhBdHRyaWJpdihhdHRyaWIsIGN1
cnJlbnRWYWx1ZXMsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBjb250ZXh0LT5nZXRWZXJ0ZXhB
dHRyaWJpdihpbmRleCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0xODY3LDkgKzEz
OTAsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KEdMdWludCBp
bmRleCwgR0xlbnVtIHBuYW1lLCBHTHZvaWQqKiBwbwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIgPQotICAgICAg
ICAgICAgY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0
dHJpYnV0ZShpbmRleCk7Ci0gICAgICAgIFF1ZXJ5VmVydGV4QXR0cmliUG9pbnRlcnYoYXR0cmli
LCBwbmFtZSwgcG9pbnRlcik7CisgICAgICAgIGNvbnRleHQtPmdldFZlcnRleEF0dHJpYlBvaW50
ZXJ2KGluZGV4LCBwbmFtZSwgcG9pbnRlcik7CiAgICAgfQogfQogCkBAIC0xODgwLDI2ICsxNDAx
LDggQEAgdm9pZCBHTF9BUElFTlRSWSBIaW50KEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKQog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAobW9kZSkKLSAgICAgICAgewotICAgICAg
ICAgIGNhc2UgR0xfRkFTVEVTVDoKLSAgICAgICAgICBjYXNlIEdMX05JQ0VTVDoKLSAgICAgICAg
ICBjYXNlIEdMX0RPTlRfQ0FSRToKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0
Y2ggKHRhcmdldCkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFW
YWxpZGF0ZUhpbnQoY29udGV4dCwgdGFyZ2V0LCBtb2RlKSkKICAgICAgICAgewotICAgICAgICAg
IGNhc2UgR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQ6Ci0gICAgICAgICAgY2FzZSBHTF9GUkFHTUVO
VF9TSEFERVJfREVSSVZBVElWRV9ISU5UX09FUzoKLSAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBA
IC0xOTEyLDE0ICsxNDE1LDE0IEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0J1ZmZlcihHTHVp
bnQgYnVmZmVyKQogICAgIEVWRU5UKCIoR0x1aW50IGJ1ZmZlciA9ICVkKSIsIGJ1ZmZlcik7CiAK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgaWYg
KGNvbnRleHQgJiYgYnVmZmVyKQorICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVm
ZmVyICpidWZmZXJPYmplY3QgPSBjb250ZXh0LT5nZXRCdWZmZXIoYnVmZmVyKTsKLQotICAgICAg
ICBpZiAoYnVmZmVyT2JqZWN0KQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgJiYgIVZhbGlkYXRlSXNCdWZmZXIoY29udGV4dCwgYnVmZmVyKSkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIEdMX1RSVUU7CisgICAgICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gY29udGV4dC0+aXNCdWZmZXIoYnVmZmVyKTsKICAg
ICB9CiAKICAgICByZXR1cm4gR0xfRkFMU0U7CkBAIC0xOTM3LDEwICsxNDQwLDEwIEBAIEdMYm9v
bGVhbiBHTF9BUElFTlRSWSBJc0VuYWJsZWQoR0xlbnVtIGNhcCkKICAgICAgICAgICAgIHJldHVy
biBHTF9GQUxTRTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBjb250ZXh0LT5nZXRHTFN0
YXRlKCkuZ2V0RW5hYmxlRmVhdHVyZShjYXApOworICAgICAgICByZXR1cm4gY29udGV4dC0+aXNF
bmFibGVkKGNhcCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBHTF9G
QUxTRTsKIH0KIAogR0xib29sZWFuIEdMX0FQSUVOVFJZIElzRnJhbWVidWZmZXIoR0x1aW50IGZy
YW1lYnVmZmVyKQpAQCAtMTk0OCwxNCArMTQ1MSwxNCBAQCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkg
SXNGcmFtZWJ1ZmZlcihHTHVpbnQgZnJhbWVidWZmZXIpCiAgICAgRVZFTlQoIihHTHVpbnQgZnJh
bWVidWZmZXIgPSAlZCkiLCBmcmFtZWJ1ZmZlcik7CiAKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgaWYgKGNvbnRleHQgJiYgZnJhbWVidWZmZXIp
CisgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZm
ZXJPYmplY3QgPSBjb250ZXh0LT5nZXRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7Ci0KLSAgICAg
ICAgaWYgKGZyYW1lYnVmZmVyT2JqZWN0KQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgJiYgIVZhbGlkYXRlSXNGcmFtZWJ1ZmZlcihjb250ZXh0LCBmcmFtZWJ1ZmZlcikp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBHTF9UUlVFOworICAgICAgICAgICAgcmV0
dXJuIEdMX0ZBTFNFOwogICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvbnRleHQtPmlzRnJh
bWVidWZmZXIoZnJhbWVidWZmZXIpOwogICAgIH0KIAogICAgIHJldHVybiBHTF9GQUxTRTsKQEAg
LTE5NjYsMTQgKzE0NjksMTQgQEAgR0xib29sZWFuIEdMX0FQSUVOVFJZIElzUHJvZ3JhbShHTHVp
bnQgcHJvZ3JhbSkKICAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJWQpIiwgcHJvZ3JhbSk7
CiAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAg
aWYgKGNvbnRleHQgJiYgcHJvZ3JhbSkKKyAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOwot
Ci0gICAgICAgIGlmIChwcm9ncmFtT2JqZWN0KQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlSXNQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pKQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gR0xfVFJVRTsKKyAgICAgICAgICAgIHJldHVybiBH
TF9GQUxTRTsKICAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjb250ZXh0LT5pc1Byb2dyYW0o
cHJvZ3JhbSk7CiAgICAgfQogCiAgICAgcmV0dXJuIEdMX0ZBTFNFOwpAQCAtMTk4NCwxNCArMTQ4
NywxNCBAQCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRl
cmJ1ZmZlcikKICAgICBFVkVOVCgiKEdMdWludCByZW5kZXJidWZmZXIgPSAlZCkiLCByZW5kZXJi
dWZmZXIpOwogCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
OwotICAgIGlmIChjb250ZXh0ICYmIHJlbmRlcmJ1ZmZlcikKKyAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyT2JqZWN0ID0gY29udGV4dC0+
Z2V0UmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7Ci0KLSAgICAgICAgaWYgKHJlbmRlcmJ1ZmZl
ck9iamVjdCkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxp
ZGF0ZUlzUmVuZGVyYnVmZmVyKGNvbnRleHQsIHJlbmRlcmJ1ZmZlcikpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybiBHTF9UUlVFOworICAgICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwog
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvbnRleHQtPmlzUmVuZGVyYnVmZmVyKHJlbmRl
cmJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIEdMX0ZBTFNFOwpAQCAtMjAwMiwxNCArMTUw
NSwxNCBAQCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNTaGFkZXIoR0x1aW50IHNoYWRlcikKICAg
ICBFVkVOVCgiKEdMdWludCBzaGFkZXIgPSAlZCkiLCBzaGFkZXIpOwogCiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIGlmIChjb250ZXh0ICYmIHNo
YWRlcikKKyAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFNoYWRlciAqc2hhZGVyT2Jq
ZWN0ID0gY29udGV4dC0+Z2V0U2hhZGVyKHNoYWRlcik7Ci0KLSAgICAgICAgaWYgKHNoYWRlck9i
amVjdCkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0
ZUlzU2hhZGVyKGNvbnRleHQsIHNoYWRlcikpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBHTF9UUlVFOworICAgICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIGNvbnRleHQtPmlzU2hhZGVyKHNoYWRlcik7CiAgICAgfQogCiAgICAgcmV0
dXJuIEdMX0ZBTFNFOwpAQCAtMjAyMCwxNCArMTUyMywxNCBAQCBHTGJvb2xlYW4gR0xfQVBJRU5U
UlkgSXNUZXh0dXJlKEdMdWludCB0ZXh0dXJlKQogICAgIEVWRU5UKCIoR0x1aW50IHRleHR1cmUg
PSAlZCkiLCB0ZXh0dXJlKTsKIAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dCAmJiB0ZXh0dXJlKQorICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgVGV4dHVyZSAqdGV4dHVyZU9iamVjdCA9IGNvbnRleHQtPmdldFRl
eHR1cmUodGV4dHVyZSk7Ci0KLSAgICAgICAgaWYgKHRleHR1cmVPYmplY3QpCisgICAgICAgIGlm
ICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVJc1RleHR1cmUoY29udGV4
dCwgdGV4dHVyZSkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBHTF9UUlVFOworICAg
ICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNv
bnRleHQtPmlzVGV4dHVyZSh0ZXh0dXJlKTsKICAgICB9CiAKICAgICByZXR1cm4gR0xfRkFMU0U7
CkBAIC0yMDQwLDkgKzE1NDMsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIExpbmVXaWR0aChHTGZsb2F0
IHdpZHRoKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICh3aWR0aCA8PSAwLjBmKQorICAg
ICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlTGluZVdpZHRo
KGNvbnRleHQsIHdpZHRoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTIwNjIsMTggKzE1NjQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIExpbmtQcm9n
cmFtKEdMdWludCBwcm9ncmFtKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBw
cm9ncmFtKTsKLSAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBFcnJvciBlcnJvciA9IHByb2dyYW1P
YmplY3QtPmxpbmsoY29udGV4dC0+Z2V0Q29udGV4dFN0YXRlKCkpOwotICAgICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4
dC0+bGlua1Byb2dyYW0ocHJvZ3JhbSk7CiAgICAgfQogfQogCkBAIC0yMDg0LDc1ICsxNTc1LDgg
QEAgdm9pZCBHTF9BUElFTlRSWSBQaXhlbFN0b3JlaShHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFt
KQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZl
cnNpb24oKSA8IDMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN3aXRjaCAocG5hbWUpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVU5QQUNLX0lNQUdFX0hFSUdIVDoKLSAg
ICAgICAgICAgICAgY2FzZSBHTF9VTlBBQ0tfU0tJUF9JTUFHRVM6Ci0gICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICBjYXNlIEdMX1VOUEFDS19ST1dfTEVO
R1RIOgotICAgICAgICAgICAgICBjYXNlIEdMX1VOUEFDS19TS0lQX1JPV1M6Ci0gICAgICAgICAg
ICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfUElYRUxTOgotICAgICAgICAgICAgICAgICAgaWYgKCFj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkudW5wYWNrU3ViaW1hZ2UpCi0gICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgY2Fz
ZSBHTF9QQUNLX1JPV19MRU5HVEg6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUEFDS19TS0lQX1JP
V1M6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUEFDS19TS0lQX1BJWEVMUzoKLSAgICAgICAgICAg
ICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnBhY2tTdWJpbWFnZSkKLSAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChwYXJhbSA8IDApCisgICAgICAgIGlmICgh
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVQaXhlbFN0b3JlaShjb250ZXh0
LCBwbmFtZSwgcGFyYW0pKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcigKLSAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiQ2Fubm90IHVz
ZSBuZWdhdGl2ZSB2YWx1ZXMgaW4gUGl4ZWxTdG9yZWkiKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKHBuYW1lKQotICAgICAgICB7Ci0gICAgICAg
ICAgY2FzZSBHTF9VTlBBQ0tfQUxJR05NRU5UOgotICAgICAgICAgICAgaWYgKHBhcmFtICE9IDEg
JiYgcGFyYW0gIT0gMiAmJiBwYXJhbSAhPSA0ICYmIHBhcmFtICE9IDgpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgICAgY2FzZSBHTF9QQUNLX0FMSUdOTUVOVDoKLSAgICAgICAg
ICAgIGlmIChwYXJhbSAhPSAxICYmIHBhcmFtICE9IDIgJiYgcGFyYW0gIT0gNCAmJiBwYXJhbSAh
PSA4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGNhc2UgR0xfUEFDS19S
RVZFUlNFX1JPV19PUkRFUl9BTkdMRToKLSAgICAgICAgICBjYXNlIEdMX1VOUEFDS19ST1dfTEVO
R1RIOgotICAgICAgICAgIGNhc2UgR0xfVU5QQUNLX0lNQUdFX0hFSUdIVDoKLSAgICAgICAgICBj
YXNlIEdMX1VOUEFDS19TS0lQX0lNQUdFUzoKLSAgICAgICAgICBjYXNlIEdMX1VOUEFDS19TS0lQ
X1JPV1M6Ci0gICAgICAgICAgY2FzZSBHTF9VTlBBQ0tfU0tJUF9QSVhFTFM6Ci0gICAgICAgICAg
Y2FzZSBHTF9QQUNLX1JPV19MRU5HVEg6Ci0gICAgICAgICAgY2FzZSBHTF9QQUNLX1NLSVBfUk9X
UzoKLSAgICAgICAgICBjYXNlIEdMX1BBQ0tfU0tJUF9QSVhFTFM6Ci0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKQEAgLTIxNjcsNiArMTU5MSwxMSBAQCB2b2lkIEdMX0FQSUVOVFJZIFBvbHlnb25PZmZz
ZXQoR0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMpCiAgICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKKyAgICAg
ICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVBvbHlnb25PZmZz
ZXQoY29udGV4dCwgZmFjdG9yLCB1bml0cykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCiAgICAgICAgIGNvbnRleHQtPnBvbHlnb25PZmZzZXQoZmFjdG9yLCB1
bml0cyk7CiAgICAgfQogfQpAQCAtMjE5OSwxMyArMTYyOCwxMiBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFJlbGVhc2VTaGFkZXJDb21waWxlcih2b2lkKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBDb21waWxlciAqY29tcGlsZXIgPSBjb250ZXh0LT5nZXRDb21waWxlcigpOwotICAg
ICAgICBFcnJvciBlcnJvciA9IGNvbXBpbGVyLT5yZWxlYXNlKCk7Ci0gICAgICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAh
VmFsaWRhdGVSZWxlYXNlU2hhZGVyQ29tcGlsZXIoY29udGV4dCkpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQorCisgICAgICAgIGNvbnRleHQtPnJlbGVhc2VTaGFkZXJDb21waWxlcigpOwog
ICAgIH0KIH0KIApAQCAtMjIxNywxOSArMTY0NSwxMyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJlbmRl
cmJ1ZmZlclN0b3JhZ2UoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNp
egogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9y
YWdlUGFyYW1ldGVyc0FOR0xFKGNvbnRleHQsIHRhcmdldCwgMCwgaW50ZXJuYWxmb3JtYXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp
ZHRoLCBoZWlnaHQpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYK
KyAgICAgICAgICAgICFWYWxpZGF0ZVJlbmRlcmJ1ZmZlclN0b3JhZ2UoY29udGV4dCwgdGFyZ2V0
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVy
ID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldEN1cnJlbnRSZW5kZXJidWZmZXIoKTsKLSAgICAg
ICAgRXJyb3IgZXJyb3IgPSByZW5kZXJidWZmZXItPnNldFN0b3JhZ2UoaW50ZXJuYWxmb3JtYXQs
IHdpZHRoLCBoZWlnaHQpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0
YXJnZXQsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKICAgICB9CiB9CiAKQEAgLTIy
NDEsNiArMTY2MywxMSBAQCB2b2lkIEdMX0FQSUVOVFJZIFNhbXBsZUNvdmVyYWdlKEdMY2xhbXBm
IHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgeworICAg
ICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlU2FtcGxlQ292
ZXJhZ2UoY29udGV4dCwgdmFsdWUsIGludmVydCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGNvbnRleHQtPnNhbXBsZUNvdmVyYWdlKHZhbHVl
LCBpbnZlcnQpOwogICAgIH0KIH0KQEAgLTIyNTIsOSArMTY3OSw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgU2Npc3NvcihHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCkKICAgICBDb250ZXh0KiBjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAg
aWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDAp
CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVTY2lz
c29yKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQpKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjI3MSwxNSArMTY5NywxMyBAQCB2b2lkIEdM
X0FQSUVOVFJZIFNoYWRlckJpbmFyeShHTHNpemVpIG4sIGNvbnN0IEdMdWludCogc2hhZGVycywg
R0xlbnVtIGJpbmFyeWZvcgogICAgIENvbnRleHQqIGNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnN0IHN0ZDo6dmVj
dG9yPEdMZW51bT4gJnNoYWRlckJpbmFyeUZvcm1hdHMgPSBjb250ZXh0LT5nZXRDYXBzKCkuc2hh
ZGVyQmluYXJ5Rm9ybWF0czsKLSAgICAgICAgaWYgKHN0ZDo6ZmluZChzaGFkZXJCaW5hcnlGb3Jt
YXRzLmJlZ2luKCksIHNoYWRlckJpbmFyeUZvcm1hdHMuZW5kKCksIGJpbmFyeWZvcm1hdCkgPT0g
c2hhZGVyQmluYXJ5Rm9ybWF0cy5lbmQoKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVTaGFkZXJCaW5hcnkoY29udGV4dCwg
biwgc2hhZGVycywgYmluYXJ5Zm9ybWF0LCBiaW5hcnksIGxlbmd0aCkpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gTm8gYmluYXJ5IHNo
YWRlciBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCi0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICAgICAgY29udGV4dC0+c2hhZGVyQmluYXJ5KG4sIHNoYWRlcnMsIGJpbmFyeWZvcm1hdCwgYmlu
YXJ5LCBsZW5ndGgpOwogICAgIH0KIH0KIApAQCAtMjI5MSwyNCArMTcxNSwzMCBAQCB2b2lkIEdM
X0FQSUVOVFJZIFNoYWRlclNvdXJjZShHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGNoYXIqIGNvbnN0KgogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb3VudCA8IDAp
CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAg
IVZhbGlkYXRlU2hhZGVyU291cmNlKGNvbnRleHQsIHNoYWRlciwgY291bnQsIHN0cmluZywgbGVu
Z3RoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgU2hhZGVyICpzaGFkZXJPYmplY3QgPSBHZXRWYWxpZFNoYWRlcihjb250ZXh0LCBzaGFk
ZXIpOwotICAgICAgICBpZiAoIXNoYWRlck9iamVjdCkKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIHNoYWRlck9iamVjdC0+c2V0U291cmNlKGNvdW50
LCBzdHJpbmcsIGxlbmd0aCk7CisgICAgICAgIGNvbnRleHQtPnNoYWRlclNvdXJjZShzaGFkZXIs
IGNvdW50LCBzdHJpbmcsIGxlbmd0aCk7CiAgICAgfQogfQogCiB2b2lkIEdMX0FQSUVOVFJZIFN0
ZW5jaWxGdW5jKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKQogewotICAgIFN0
ZW5jaWxGdW5jU2VwYXJhdGUoR0xfRlJPTlRfQU5EX0JBQ0ssIGZ1bmMsIHJlZiwgbWFzayk7Cisg
ICAgRVZFTlQoIihHTGVudW0gZnVuYyA9IDB4JVgsIEdMaW50IHJlZiA9ICVkLCBHTHVpbnQgbWFz
ayA9ICVkKSIsIGZ1bmMsIHJlZiwgbWFzayk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBp
ZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlU3RlbmNpbEZ1bmMoY29u
dGV4dCwgZnVuYywgcmVmLCBtYXNrKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgY29udGV4dC0+c3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNr
KTsKKyAgICB9CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbEZ1bmNTZXBhcmF0ZShHTGVu
dW0gZmFjZSwgR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spCkBAIC0yMzE4LDMy
ICsxNzQ4LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsRnVuY1NlcGFyYXRlKEdMZW51bSBm
YWNlLCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBzd2l0Y2ggKGZhY2UpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0ZST05UOgot
ICAgICAgICAgIGNhc2UgR0xfQkFDSzoKLSAgICAgICAgICBjYXNlIEdMX0ZST05UX0FORF9CQUNL
OgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAoZnVuYykKKyAgICAgICAg
aWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVT
dGVuY2lsRnVuY1NlcGFyYXRlKGNvbnRleHQsIGZhY2UsIGZ1bmMsIHJlZiwgbWFzaykpCiAgICAg
ICAgIHsKLSAgICAgICAgICBjYXNlIEdMX05FVkVSOgotICAgICAgICAgIGNhc2UgR0xfQUxXQVlT
OgotICAgICAgICAgIGNhc2UgR0xfTEVTUzoKLSAgICAgICAgICBjYXNlIEdMX0xFUVVBTDoKLSAg
ICAgICAgICBjYXNlIEdMX0VRVUFMOgotICAgICAgICAgIGNhc2UgR0xfR0VRVUFMOgotICAgICAg
ICAgIGNhc2UgR0xfR1JFQVRFUjoKLSAgICAgICAgICBjYXNlIEdMX05PVEVRVUFMOgotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCkBAIC0yMzUzLDcgKzE3NjAsMTggQEAgdm9pZCBHTF9BUElFTlRSWSBT
dGVuY2lsRnVuY1NlcGFyYXRlKEdMZW51bSBmYWNlLCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBH
THVpbnQKIAogdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsTWFzayhHTHVpbnQgbWFzaykKIHsKLSAg
ICBTdGVuY2lsTWFza1NlcGFyYXRlKEdMX0ZST05UX0FORF9CQUNLLCBtYXNrKTsKKyAgICBFVkVO
VCgiKEdMdWludCBtYXNrID0gJWQpIiwgbWFzayk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAg
ICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlU3RlbmNpbE1hc2so
Y29udGV4dCwgbWFzaykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIGNvbnRleHQtPnN0ZW5jaWxNYXNrKG1hc2spOworICAgIH0KIH0KIAogdm9p
ZCBHTF9BUElFTlRSWSBTdGVuY2lsTWFza1NlcGFyYXRlKEdMZW51bSBmYWNlLCBHTHVpbnQgbWFz
aykKQEAgLTIzNjMsMTUgKzE3ODEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxNYXNrU2Vw
YXJhdGUoR0xlbnVtIGZhY2UsIEdMdWludCBtYXNrKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IHN3aXRjaCAoZmFjZSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYm
ICFWYWxpZGF0ZVN0ZW5jaWxNYXNrU2VwYXJhdGUoY29udGV4dCwgZmFjZSwgbWFzaykpCiAgICAg
ICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0ZST05UOgotICAgICAgICAgIGNhc2UgR0xfQkFDSzoK
LSAgICAgICAgICBjYXNlIEdMX0ZST05UX0FORF9CQUNLOgotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CkBAIC0yMzgxLDc3ICsxNzkyLDMxIEBAIHZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbE1hc2tTZXBh
cmF0ZShHTGVudW0gZmFjZSwgR0x1aW50IG1hc2spCiAKIHZvaWQgR0xfQVBJRU5UUlkgU3RlbmNp
bE9wKEdMZW51bSBmYWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcykKIHsKLSAgICBTdGVu
Y2lsT3BTZXBhcmF0ZShHTF9GUk9OVF9BTkRfQkFDSywgZmFpbCwgemZhaWwsIHpwYXNzKTsKLX0K
LQotdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsT3BTZXBhcmF0ZShHTGVudW0gZmFjZSwgR0xlbnVt
IGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKQotewotICAgIEVWRU5UKCIoR0xlbnVt
IGZhY2UgPSAweCVYLCBHTGVudW0gZmFpbCA9IDB4JVgsIEdMZW51bSB6ZmFpbCA9IDB4JVgsIEdM
ZW51bSB6cGFzID0gMHglWHMpIiwKLSAgICAgICAgICBmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3Mp
OworICAgIEVWRU5UKCIoR0xlbnVtIGZhaWwgPSAweCVYLCBHTGVudW0gemZhaWwgPSAweCVYLCBH
TGVudW0genBhcyA9IDB4JVhzKSIsIGZhaWwsIHpmYWlsLCB6cGFzcyk7CiAKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBzd2l0Y2ggKGZhY2UpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdM
X0ZST05UOgotICAgICAgICAgIGNhc2UgR0xfQkFDSzoKLSAgICAgICAgICBjYXNlIEdMX0ZST05U
X0FORF9CQUNLOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAoZmFpbCkK
KyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVN0ZW5j
aWxPcChjb250ZXh0LCBmYWlsLCB6ZmFpbCwgenBhc3MpKQogICAgICAgICB7Ci0gICAgICAgICAg
Y2FzZSBHTF9aRVJPOgotICAgICAgICAgIGNhc2UgR0xfS0VFUDoKLSAgICAgICAgICBjYXNlIEdM
X1JFUExBQ0U6Ci0gICAgICAgICAgY2FzZSBHTF9JTkNSOgotICAgICAgICAgIGNhc2UgR0xfREVD
UjoKLSAgICAgICAgICBjYXNlIEdMX0lOVkVSVDoKLSAgICAgICAgICBjYXNlIEdMX0lOQ1JfV1JB
UDoKLSAgICAgICAgICBjYXNlIEdMX0RFQ1JfV1JBUDoKLSAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBzd2l0Y2ggKHpmYWlsKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9aRVJP
OgotICAgICAgICAgIGNhc2UgR0xfS0VFUDoKLSAgICAgICAgICBjYXNlIEdMX1JFUExBQ0U6Ci0g
ICAgICAgICAgY2FzZSBHTF9JTkNSOgotICAgICAgICAgIGNhc2UgR0xfREVDUjoKLSAgICAgICAg
ICBjYXNlIEdMX0lOVkVSVDoKLSAgICAgICAgICBjYXNlIEdMX0lOQ1JfV1JBUDoKLSAgICAgICAg
ICBjYXNlIEdMX0RFQ1JfV1JBUDoKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjb250ZXh0
LT5zdGVuY2lsT3AoZmFpbCwgemZhaWwsIHpwYXNzKTsKKyAgICB9Cit9CiAKLSAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQordm9pZCBHTF9BUElF
TlRSWSBTdGVuY2lsT3BTZXBhcmF0ZShHTGVudW0gZmFjZSwgR0xlbnVtIGZhaWwsIEdMZW51bSB6
ZmFpbCwgR0xlbnVtIHpwYXNzKQoreworICAgIEVWRU5UKCIoR0xlbnVtIGZhY2UgPSAweCVYLCBH
TGVudW0gZmFpbCA9IDB4JVgsIEdMZW51bSB6ZmFpbCA9IDB4JVgsIEdMZW51bSB6cGFzID0gMHgl
WHMpIiwKKyAgICAgICAgICBmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOwogCi0gICAgICAgIHN3
aXRjaCAoenBhc3MpCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVTdGVuY2lsT3BTZXBhcmF0ZShj
b250ZXh0LCBmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpKQogICAgICAgICB7Ci0gICAgICAgICAg
Y2FzZSBHTF9aRVJPOgotICAgICAgICAgIGNhc2UgR0xfS0VFUDoKLSAgICAgICAgICBjYXNlIEdM
X1JFUExBQ0U6Ci0gICAgICAgICAgY2FzZSBHTF9JTkNSOgotICAgICAgICAgIGNhc2UgR0xfREVD
UjoKLSAgICAgICAgICBjYXNlIEdMX0lOVkVSVDoKLSAgICAgICAgICBjYXNlIEdMX0lOQ1JfV1JB
UDoKLSAgICAgICAgICBjYXNlIEdMX0RFQ1JfV1JBUDoKLSAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApA
QCAtMjQ5Myw4ICsxODU4LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJmKEdMZW51
bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRU
YXJnZXRUZXh0dXJlKHRhcmdldCk7Ci0gICAgICAgIFNldFRleFBhcmFtZXRlcmYodGV4dHVyZSwg
cG5hbWUsIHBhcmFtKTsKKyAgICAgICAgY29udGV4dC0+dGV4UGFyYW1ldGVyZih0YXJnZXQsIHBu
YW1lLCBwYXJhbSk7CiAgICAgfQogfQogCkBAIC0yNTExLDggKzE4NzUsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFRleFBhcmFtZXRlcmZ2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3Qg
R0xmbG9hdCAqcGFyYQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
VGV4dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKLSAg
ICAgICAgU2V0VGV4UGFyYW1ldGVyZnYodGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAg
IGNvbnRleHQtPnRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQog
fQogCkBAIC0yNTI4LDggKzE4OTEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlcmko
R0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5n
ZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7Ci0gICAgICAgIFNldFRleFBhcmFtZXRlcmkodGV4dHVy
ZSwgcG5hbWUsIHBhcmFtKTsKKyAgICAgICAgY29udGV4dC0+dGV4UGFyYW1ldGVyaSh0YXJnZXQs
IHBuYW1lLCBwYXJhbSk7CiAgICAgfQogfQogCkBAIC0yNTQ2LDggKzE5MDgsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIFRleFBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29u
c3QgR0xpbnQgKnBhcmFtcwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgVGV4dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsK
LSAgICAgICAgU2V0VGV4UGFyYW1ldGVyaXYodGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7CisgICAg
ICAgIGNvbnRleHQtPnRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CiAgICAg
fQogfQogCkBAIC0yNTc2LDcgKzE5MzcsMTggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhTdWJJbWFn
ZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludAogCiB2
b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0xZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4KQogewot
ICAgIFVuaWZvcm0xZnYobG9jYXRpb24sIDEsICZ4KTsKKyAgICBFVkVOVCgiKEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMZmxvYXQgeCA9ICVmKSIsIGxvY2F0aW9uLCB4KTsKKworICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAg
ICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVV
bmlmb3JtMWYoY29udGV4dCwgbG9jYXRpb24sIHgpKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT51bmlmb3JtMWYobG9jYXRpb24s
IHgpOworICAgIH0KIH0KIAogdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMWZ2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KQpAQCAtMjU4NiwxOSArMTk1OCwy
OSBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMZmxvYXQqIHYpCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFW
YWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfRkxPQVQsIGxvY2F0aW9uLCBjb3VudCkpCisgICAg
ICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVVbmlmb3JtMWZ2
KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdikpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5n
ZXRHTFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOwotICAgICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtMWZ2
KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRp
b24sIGNvdW50LCB2KTsKICAgICB9CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTFpKEdM
aW50IGxvY2F0aW9uLCBHTGludCB4KQogewotICAgIFVuaWZvcm0xaXYobG9jYXRpb24sIDEsICZ4
KTsKKyAgICBFVkVOVCgiKEdMaW50IGxvY2F0aW9uID0gJWQsIEdMaW50IHggPSAlZCkiLCBsb2Nh
dGlvbiwgeCk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlVW5pZm9ybTFpdihjb250ZXh0LCBsb2NhdGlvbiwgMSwg
JngpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBjb250ZXh0LT51bmlmb3JtMWkobG9jYXRpb24sIHgpOworICAgIH0KIH0KIAogdm9pZCBHTF9B
UElFTlRSWSBVbmlmb3JtMWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
TGludCogdikKQEAgLTI2MDgsMjEgKzE5OTAsMjkgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3Jt
MWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCogdikKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBpZiAoIVZhbGlkYXRlVW5pZm9ybShjb250ZXh0LCBHTF9JTlQs
IGxvY2F0aW9uLCBjb3VudCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSAmJiAhVmFsaWRhdGVVbmlmb3JtMWl2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdikpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dy
YW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOwotICAgICAg
ICBwcm9ncmFtLT5zZXRVbmlmb3JtMWl2KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAgICAgIGNv
bnRleHQtPnVuaWZvcm0xaXYobG9jYXRpb24sIGNvdW50LCB2KTsKICAgICB9CiB9CiAKIHZvaWQg
R0xfQVBJRU5UUlkgVW5pZm9ybTJmKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQg
eSkKIHsKLSAgICBHTGZsb2F0IHh5WzJdID0ge3gsIHl9OworICAgIEVWRU5UKCIoR0xpbnQgbG9j
YXRpb24gPSAlZCwgR0xmbG9hdCB4ID0gJWYsIEdMZmxvYXQgeSA9ICVmKSIsIGxvY2F0aW9uLCB4
LCB5KTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsK
KyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSAmJiAhVmFsaWRhdGVVbmlmb3JtMmYoY29udGV4dCwgbG9jYXRpb24sIHgsIHkpKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgIFVuaWZvcm0y
ZnYobG9jYXRpb24sIDEsIHh5KTsKKyAgICAgICAgY29udGV4dC0+dW5pZm9ybTJmKGxvY2F0aW9u
LCB4LCB5KTsKKyAgICB9CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTJmdihHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCogdikKQEAgLTI2MzIsMjEgKzIw
MjIsMjkgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlm
ICghVmFsaWRhdGVVbmlmb3JtKGNvbnRleHQsIEdMX0ZMT0FUX1ZFQzIsIGxvY2F0aW9uLCBjb3Vu
dCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVV
bmlmb3JtMmZ2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdikpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBj
b250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOwotICAgICAgICBwcm9ncmFtLT5zZXRV
bmlmb3JtMmZ2KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAgICAgIGNvbnRleHQtPnVuaWZvcm0y
ZnYobG9jYXRpb24sIGNvdW50LCB2KTsKICAgICB9CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgVW5p
Zm9ybTJpKEdMaW50IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5KQogewotICAgIEdMaW50IHh5
WzJdID0ge3gsIHl9OworICAgIEVWRU5UKCIoR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xpbnQgeCA9
ICVkLCBHTGludCB5ID0gJWQpIiwgbG9jYXRpb24sIHgsIHkpOwogCi0gICAgVW5pZm9ybTJpdihs
b2NhdGlvbiwgMSwgeHkpOworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENv
bnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVVbmlmb3JtMmkoY29udGV4dCwgbG9jYXRpb24s
IHgsIHkpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBjb250ZXh0LT51bmlmb3JtMmkobG9jYXRpb24sIHgsIHkpOworICAgIH0KIH0KIAogdm9p
ZCBHTF9BUElFTlRSWSBVbmlmb3JtMml2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGludCogdikKQEAgLTI2NTYsMjEgKzIwNTQsMzAgQEAgdm9pZCBHTF9BUElFTlRSWSBV
bmlmb3JtMml2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCogdikK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIVZhbGlkYXRlVW5pZm9ybShjb250ZXh0LCBH
TF9JTlRfVkVDMiwgbG9jYXRpb24sIGNvdW50KSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVVuaWZvcm0yaXYoY29udGV4dCwgbG9jYXRpb24sIGNv
dW50LCB2KSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQcm9ncmFt
KCk7Ci0gICAgICAgIHByb2dyYW0tPnNldFVuaWZvcm0yaXYobG9jYXRpb24sIGNvdW50LCB2KTsK
KyAgICAgICAgY29udGV4dC0+dW5pZm9ybTJpdihsb2NhdGlvbiwgY291bnQsIHYpOwogICAgIH0K
IH0KIAogdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtM2YoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQg
eCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopCiB7Ci0gICAgR0xmbG9hdCB4eXpbM10gPSB7eCwgeSwg
en07CisgICAgRVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTGZsb2F0IHggPSAlZiwgR0xm
bG9hdCB5ID0gJWYsIEdMZmxvYXQgeiA9ICVmKSIsIGxvY2F0aW9uLCB4LCB5LAorICAgICAgICAg
IHopOwogCi0gICAgVW5pZm9ybTNmdihsb2NhdGlvbiwgMSwgeHl6KTsKKyAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAg
eworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlVW5p
Zm9ybTNmKGNvbnRleHQsIGxvY2F0aW9uLCB4LCB5LCB6KSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29udGV4dC0+dW5pZm9ybTNmKGxvY2F0
aW9uLCB4LCB5LCB6KTsKKyAgICB9CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTNmdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCogdikKQEAgLTI2ODAs
MjEgKzIwODcsMjkgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtM2Z2KEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KQogICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIGlmICghVmFsaWRhdGVVbmlmb3JtKGNvbnRleHQsIEdMX0ZMT0FUX1ZFQzMsIGxvY2F0aW9u
LCBjb3VudCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFs
aWRhdGVVbmlmb3JtM2Z2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdikpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnByb2dy
YW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOwotICAgICAgICBwcm9ncmFt
LT5zZXRVbmlmb3JtM2Z2KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAgICAgIGNvbnRleHQtPnVu
aWZvcm0zZnYobG9jYXRpb24sIGNvdW50LCB2KTsKICAgICB9CiB9CiAKIHZvaWQgR0xfQVBJRU5U
UlkgVW5pZm9ybTNpKEdMaW50IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KQog
ewotICAgIEdMaW50IHh5elszXSA9IHt4LCB5LCB6fTsKKyAgICBFVkVOVCgiKEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTGludCB6ID0gJWQpIiwgbG9j
YXRpb24sIHgsIHksIHopOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVVuaWZvcm0zaShjb250ZXh0LCBsb2NhdGlv
biwgeCwgeSwgeikpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQog
Ci0gICAgVW5pZm9ybTNpdihsb2NhdGlvbiwgMSwgeHl6KTsKKyAgICAgICAgY29udGV4dC0+dW5p
Zm9ybTNpKGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAgICB9CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkg
VW5pZm9ybTNpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYp
CkBAIC0yNzA0LDIxICsyMTE5LDMwIEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTNpdihHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYpCiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgaWYgKCFWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfSU5UX1ZFQzMsIGxv
Y2F0aW9uLCBjb3VudCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAm
JiAhVmFsaWRhdGVVbmlmb3JtM2l2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdikpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0g
KnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOwotICAgICAgICBw
cm9ncmFtLT5zZXRVbmlmb3JtM2l2KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAgICAgIGNvbnRl
eHQtPnVuaWZvcm0zaXYobG9jYXRpb24sIGNvdW50LCB2KTsKICAgICB9CiB9CiAKIHZvaWQgR0xf
QVBJRU5UUlkgVW5pZm9ybTRmKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwg
R0xmbG9hdCB6LCBHTGZsb2F0IHcpCiB7Ci0gICAgR0xmbG9hdCB4eXp3WzRdID0ge3gsIHksIHos
IHd9OworICAgIEVWRU5UKCIoR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCB4ID0gJWYsIEdM
ZmxvYXQgeSA9ICVmLCBHTGZsb2F0IHogPSAlZiwgR0xmbG9hdCB3ID0gJWYpIiwKKyAgICAgICAg
ICBsb2NhdGlvbiwgeCwgeSwgeiwgdyk7CiAKLSAgICBVbmlmb3JtNGZ2KGxvY2F0aW9uLCAxLCB4
eXp3KTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Cisg
ICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgJiYgIVZhbGlkYXRlVW5pZm9ybTRmKGNvbnRleHQsIGxvY2F0aW9uLCB4LCB5LCB6LCB3
KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
Y29udGV4dC0+dW5pZm9ybTRmKGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKKyAgICB9CiB9CiAKIHZv
aWQgR0xfQVBJRU5UUlkgVW5pZm9ybTRmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0xmbG9hdCogdikKQEAgLTI3MjgsMjEgKzIxNTIsMzAgQEAgdm9pZCBHTF9BUElFTlRS
WSBVbmlmb3JtNGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0
KiB2KQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghVmFsaWRhdGVVbmlmb3JtKGNvbnRl
eHQsIEdMX0ZMT0FUX1ZFQzQsIGxvY2F0aW9uLCBjb3VudCkpCisgICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVVbmlmb3JtNGZ2KGNvbnRleHQsIGxvY2F0
aW9uLCBjb3VudCwgdikpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0
UHJvZ3JhbSgpOwotICAgICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtNGZ2KGxvY2F0aW9uLCBjb3Vu
dCwgdik7CisgICAgICAgIGNvbnRleHQtPnVuaWZvcm00ZnYobG9jYXRpb24sIGNvdW50LCB2KTsK
ICAgICB9CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTRpKEdMaW50IGxvY2F0aW9uLCBH
TGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KQogewotICAgIEdMaW50IHh5endbNF0g
PSB7eCwgeSwgeiwgd307CisgICAgRVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTGludCB4
ID0gJWQsIEdMaW50IHkgPSAlZCwgR0xpbnQgeiA9ICVkLCBHTGludCB3ID0gJWQpIiwgbG9jYXRp
b24sCisgICAgICAgICAgeCwgeSwgeiwgdyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBp
ZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlVW5pZm9ybTRpKGNvbnRl
eHQsIGxvY2F0aW9uLCB4LCB5LCB6LCB3KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CiAKLSAgICBVbmlmb3JtNGl2KGxvY2F0aW9uLCAxLCB4eXp3KTsKKyAgICAg
ICAgY29udGV4dC0+dW5pZm9ybTRpKGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKKyAgICB9CiB9CiAK
IHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTRpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0xpbnQqIHYpCkBAIC0yNzUyLDEzICsyMTg1LDEyIEBAIHZvaWQgR0xfQVBJRU5U
UlkgVW5pZm9ybTRpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQq
IHYpCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFWYWxpZGF0ZVVuaWZvcm0oY29udGV4
dCwgR0xfSU5UX1ZFQzQsIGxvY2F0aW9uLCBjb3VudCkpCisgICAgICAgIGlmICghY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVVbmlmb3JtNGl2KGNvbnRleHQsIGxvY2F0aW9u
LCBjb3VudCwgdikpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJv
Z3JhbSgpOwotICAgICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtNGl2KGxvY2F0aW9uLCBjb3VudCwg
dik7CisgICAgICAgIGNvbnRleHQtPnVuaWZvcm00aXYobG9jYXRpb24sIGNvdW50LCB2KTsKICAg
ICB9CiB9CiAKQEAgLTI3NzAsMTMgKzIyMDIsMTMgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3Jt
TWF0cml4MmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnMK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIVZhbGlkYXRlVW5pZm9ybU1hdHJpeChjb250
ZXh0LCBHTF9GTE9BVF9NQVQyLCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSkpCisgICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRl
VW5pZm9ybU1hdHJpeDJmdihjb250ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBQcm9ncmFtICpwcm9ncmFtID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFByb2dyYW0oKTsK
LSAgICAgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpOworICAgICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0
aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0yNzg4LDEzICsy
MjIwLDEzIEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybU1hdHJpeDNmdihHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zCiAgICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgaWYgKCFWYWxpZGF0ZVVuaWZvcm1NYXRyaXgoY29udGV4dCwgR0xfRkxPQVRfTUFUMywgbG9j
YXRpb24sIGNvdW50LCB0cmFuc3Bvc2UpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzZnYoY29udGV4
dCwgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKSkKICAgICAgICAgewogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNv
bnRleHQtPmdldEdMU3RhdGUoKS5nZXRQcm9ncmFtKCk7Ci0gICAgICAgIHByb2dyYW0tPnNldFVu
aWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAg
ICAgY29udGV4dC0+dW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwg
dmFsdWUpOwogICAgIH0KIH0KIApAQCAtMjgwNiwxMyArMjIzOCwxMyBAQCB2b2lkIEdMX0FQSUVO
VFJZIFVuaWZvcm1NYXRyaXg0ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9v
bGVhbiB0cmFucwogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghVmFsaWRhdGVVbmlmb3Jt
TWF0cml4KGNvbnRleHQsIEdMX0ZMT0FUX01BVDQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3Nl
KSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAg
ICAhVmFsaWRhdGVVbmlmb3JtTWF0cml4NGZ2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJh
bnNwb3NlLCB2YWx1ZSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0
UHJvZ3JhbSgpOwotICAgICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9u
LCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CisgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRy
aXg0ZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAg
LTI4MzksMTQgKzIyNzEsMTIgQEAgdm9pZCBHTF9BUElFTlRSWSBWYWxpZGF0ZVByb2dyYW0oR0x1
aW50IHByb2dyYW0pCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9i
amVjdCA9IEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtKTsKLQotICAgICAgICBpZiAo
IXByb2dyYW1PYmplY3QpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAm
JiAhVmFsaWRhdGVWYWxpZGF0ZVByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSkpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHByb2dyYW1PYmplY3Qt
PnZhbGlkYXRlKGNvbnRleHQtPmdldENhcHMoKSk7CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRl
UHJvZ3JhbShwcm9ncmFtKTsKICAgICB9CiB9CiAKQEAgLTI4NTcsOSArMjI4Nyw4IEBAIHZvaWQg
R0xfQVBJRU5UUlkgVmVydGV4QXR0cmliMWYoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgpCiAgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKKyAg
ICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVZlcnRleEF0
dHJpYjFmKGNvbnRleHQsIGluZGV4LCB4KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTI4NzQsOSArMjMwMyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkg
VmVydGV4QXR0cmliMWZ2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCogdmFsdWVzKQogICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCisg
ICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVWZXJ0ZXhB
dHRyaWIxZnYoY29udGV4dCwgaW5kZXgsIHZhbHVlcykpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yODkxLDkgKzIzMTksOCBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFZlcnRleEF0dHJpYjJmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkp
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklC
UykKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVZl
cnRleEF0dHJpYjJmKGNvbnRleHQsIGluZGV4LCB4LCB5KSkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI5MDgsOSArMjMzNSw4IEBAIHZvaWQgR0xf
QVBJRU5UUlkgVmVydGV4QXR0cmliMmZ2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCogdmFs
dWVzKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FU
VFJJQlMpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRh
dGVWZXJ0ZXhBdHRyaWIyZnYoY29udGV4dCwgaW5kZXgsIHZhbHVlcykpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yOTI1LDkgKzIzNTEsOCBAQCB2
b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjNmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBH
TGZsb2F0IHksIEdMZmxvYXQgeikKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoaW5kZXgg
Pj0gTUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgJiYgIVZhbGlkYXRlVmVydGV4QXR0cmliM2YoY29udGV4dCwgaW5kZXgsIHgsIHksIHop
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjk0
Miw5ICsyMzY3LDggQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWIzZnYoR0x1aW50IGlu
ZGV4LCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMpCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYg
KGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVZlcnRleEF0dHJpYjNmdihjb250ZXh0LCBpbmRleCwg
dmFsdWVzKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTI5NTksOSArMjM4Myw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliNGYoR0x1
aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHCiAgICAgQ29udGV4
dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAg
aWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVZlcnRleEF0dHJpYjRm
KGNvbnRleHQsIGluZGV4LCB4LCB5LCB6LCB3KSkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI5NzYsOSArMjM5OSw4IEBAIHZvaWQgR0xfQVBJRU5U
UlkgVmVydGV4QXR0cmliNGZ2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCogdmFsdWVzKQog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMp
CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVWZXJ0
ZXhBdHRyaWI0ZnYoY29udGV4dCwgaW5kZXgsIHZhbHVlcykpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yOTk1LDY1ICsyNDE3LDkgQEAgdm9pZCBH
TF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJQb2ludGVyKEdMdWludCBpbmRleCwgR0xpbnQgc2l6ZSwg
R0xlbnVtIHR5cGUsIEdMYm8KICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoaW5kZXggPj0g
TUFYX1ZFUlRFWF9BVFRSSUJTKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoc2l6ZSA8IDEgfHwgc2l6ZSA+IDQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUp
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAodHlw
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgY2FzZSBHTF9CWVRFOgotICAgICAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9CWVRFOgotICAgICAgICAgICAgY2FzZSBHTF9TSE9SVDoKLSAgICAgICAg
ICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6Ci0gICAgICAgICAgICBjYXNlIEdMX0ZJWEVEOgot
ICAgICAgICAgICAgY2FzZSBHTF9GTE9BVDoKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUOgotICAgICAgICAgICAgY2FzZSBHTF9JTlQ6Ci0g
ICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKLSAgICAgICAgICAgIGNhc2UgR0xfSU5U
XzJfMTBfMTBfMTBfUkVWOgotICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfMl8xMF8x
MF8xMF9SRVY6Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVy
c2lvbigpIDwgMykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChzdHJpZGUgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoKHR5cGUgPT0gR0xfSU5UXzJf
MTBfMTBfMTBfUkVWIHx8IHR5cGUgPT0gR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWKSAm
JiBzaXplICE9IDQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBbT3BlbkdMIEVTIDMuMC4yXSBTZWN0aW9uIDIuOCBwYWdlIDI0
OgotICAgICAgICAvLyBBbiBJTlZBTElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQgd2hl
biBhIG5vbi16ZXJvIHZlcnRleCBhcnJheSBvYmplY3QKLSAgICAgICAgLy8gaXMgYm91bmQsIHpl
cm8gaXMgYm91bmQgdG8gdGhlIEFSUkFZX0JVRkZFUiBidWZmZXIgb2JqZWN0IGJpbmRpbmcgcG9p
bnQsCi0gICAgICAgIC8vIGFuZCB0aGUgcG9pbnRlciBhcmd1bWVudCBpcyBub3QgTlVMTC4KLSAg
ICAgICAgaWYgKGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgpLT5pZCgpICE9
IDAgJiYKLSAgICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRBcnJheUJ1ZmZlcklk
KCkgPT0gMCAmJiBwdHIgIT0gTlVMTCkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQb2ludGVyKGNvbnRl
eHQsIGluZGV4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJpZGUsIHB0cikpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzA2OCw5ICsy
NDM0LDggQEAgdm9pZCBHTF9BUElFTlRSWSBWaWV3cG9ydChHTGludCB4LCBHTGludCB5LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAo
d2lkdGggPCAwIHx8IGhlaWdodCA8IDApCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSAmJiAhVmFsaWRhdGVWaWV3cG9ydChjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0
KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRz
X2dsZXNfMl8wLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5
X3BvaW50c19nbGVzXzJfMC5oCmluZGV4IGYxZmY0MDg3YWRlM2YwMGVhNGM5OTI3ODM5ZmYxZDU0
MmU1NzE0NmMuLmVlZTVmYjU0NjgxYjJjZTZmZGE5ZjEwYzEzNTVjYjlkNmZhOTI5YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRz
X2dsZXNfMl8wLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9l
bnRyeV9wb2ludHNfZ2xlc18yXzAuaApAQCAtOSw4ICs5LDggQEAKICNpZm5kZWYgTElCR0xFU1Yy
X0VOVFJZUE9JTlRHTEVTMjBfSF8KICNkZWZpbmUgTElCR0xFU1YyX0VOVFJZUE9JTlRHTEVTMjBf
SF8KIAotI2luY2x1ZGUgPEFOR0xFL2dsMi5oPgotI2luY2x1ZGUgPEFOR0xFL2V4cG9ydC5oPgor
I2luY2x1ZGUgPEdMRVMyL2dsMi5oPgorI2luY2x1ZGUgPGV4cG9ydC5oPgogCiBuYW1lc3BhY2Ug
Z2wKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
ZW50cnlfcG9pbnRzX2dsZXNfMl8wX2V4dC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMF9leHQuY3BwCmluZGV4IDBhZmFmODNi
NmI1ODA3NTQ4N2M5ZTMzZmFhNzM5MDRmYTRkMTY2ZDQuLmNiY2E4ZGRkNDVkYmQ4NThkMjJlZDFj
MjNiMjc1YThkMGQ2YmZhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfMl8wX2V4dC5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0LmNw
cApAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgImxpYkFOR0xFL1F1ZXJ5LmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3F1ZXJ5
dXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9UaHJlYWQuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9WZXJ0ZXhBcnJheS5oIgogCiAjaW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlvbkVTLmgiCkBA
IC0yNzUsMTIgKzI3Niw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0FycmF5c0luc3RhbmNlZEFO
R0xFKEdMZW51bSBtb2RlLAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgRXJyb3IgZXJyb3IgPSBjb250ZXh0LT5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0
LCBjb3VudCwgcHJpbWNvdW50KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmRyYXdBcnJheXNJbnN0YW5j
ZWQobW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogICAgIH0KIH0KIApAQCAtMzA1LDEz
ICszMDEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdM
ZW51bSBtb2RlLAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgRXJy
b3IgZXJyb3IgPQotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1v
ZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBwcmltY291bnQsIGluZGV4UmFuZ2UpOwotICAgICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAg
ICAgY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBpbmRp
Y2VzLCBwcmltY291bnQsIGluZGV4UmFuZ2UpOwogICAgIH0KIH0KIApAQCAtNTQ4LDE5ICs1Mzgs
MTQgQEAgdm9pZCBHTF9BUElFTlRSWSBSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RShHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBp
ZiAoIVZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRlcnNBTkdMRShjb250ZXh0LCB0
YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgd2lkdGgsIGhlaWdo
dCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAg
ICAgIVZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoY29udGV4dCwg
dGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQpKQogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBSZW5kZXJidWZm
ZXIgKnJlbmRlcmJ1ZmZlciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRDdXJyZW50UmVuZGVy
YnVmZmVyKCk7Ci0gICAgICAgIEVycm9yIGVycm9yID0gcmVuZGVyYnVmZmVyLT5zZXRTdG9yYWdl
TXVsdGlzYW1wbGUoc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAg
ICAgICAgY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKHRhcmdldCwgc2Ft
cGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwogICAgIH0KIH0KIApAQCAtNjU5
LDcgKzY0NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZTJERVhUKEdMZW51bSB0YXJn
ZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmCiAKICAgICAgICAgRXh0ZW50cyBz
aXplKHdpZHRoLCBoZWlnaHQsIDEpOwogICAgICAgICBUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4
dC0+Z2V0VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOwotICAgICAgICBFcnJvciBlcnJvciA9IHRleHR1
cmUtPnNldFN0b3JhZ2UodGFyZ2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCBzaXplKTsKKyAg
ICAgICAgRXJyb3IgZXJyb3IgICAgICA9IHRleHR1cmUtPnNldFN0b3JhZ2UoY29udGV4dCwgdGFy
Z2V0LCBsZXZlbHMsIGludGVybmFsZm9ybWF0LCBzaXplKTsKICAgICAgICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKICAgICAgICAgewogICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJy
b3IpOwpAQCAtNjkwLDcgKzY3NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliRGl2
aXNvckFOR0xFKEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlzb3IpCiAgICAgICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGVycm9yTWVz
c2FnZSkpOwogCiAgICAgICAgICAgICAgICAgLy8gV2UgYWxzbyBvdXRwdXQgYW4gZXJyb3IgbWVz
c2FnZSB0byB0aGUgZGVidWdnZXIgd2luZG93IGlmIHRyYWNpbmcgaXMgYWN0aXZlLCBzbyB0aGF0
IGRldmVsb3BlcnMgY2FuIHNlZSB0aGUgZXJyb3IgbWVzc2FnZS4KLSAgICAgICAgICAgICAgICBF
UlIoIiVzIiwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgICAgICAgICBFUlIoKSA8PCBlcnJvck1l
c3NhZ2U7CiAKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC03Njcs
NyArNzUyLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtQmluYXJ5T0VTKEdMdWludCBw
cm9ncmFtLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmwKICAgICAgICAgUHJvZ3JhbSAqcHJv
Z3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CiAgICAgICAgIEFTU0VS
VChwcm9ncmFtT2JqZWN0ICE9IG51bGxwdHIpOwogCi0gICAgICAgIEVycm9yIGVycm9yID0gcHJv
Z3JhbU9iamVjdC0+c2F2ZUJpbmFyeShiaW5hcnlGb3JtYXQsIGJpbmFyeSwgYnVmU2l6ZSwgbGVu
Z3RoKTsKKyAgICAgICAgRXJyb3IgZXJyb3IgPSBwcm9ncmFtT2JqZWN0LT5zYXZlQmluYXJ5KGNv
bnRleHQsIGJpbmFyeUZvcm1hdCwgYmluYXJ5LCBidWZTaXplLCBsZW5ndGgpOwogICAgICAgICBp
ZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihlcnJvcik7CkBAIC03OTIsNyArNzc3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9n
cmFtQmluYXJ5T0VTKEdMdWludCBwcm9ncmFtLCBHTGVudW0gYmluYXJ5Rm9ybWF0LCBjb25zdCB2
b2kKICAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0o
cHJvZ3JhbSk7CiAgICAgICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0ICE9IG51bGxwdHIpOwogCi0g
ICAgICAgIEVycm9yIGVycm9yID0gcHJvZ3JhbU9iamVjdC0+bG9hZEJpbmFyeShiaW5hcnlGb3Jt
YXQsIGJpbmFyeSwgbGVuZ3RoKTsKKyAgICAgICAgRXJyb3IgZXJyb3IgPSBwcm9ncmFtT2JqZWN0
LT5sb2FkQmluYXJ5KGNvbnRleHQsIGJpbmFyeUZvcm1hdCwgYmluYXJ5LCBsZW5ndGgpOwogICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihlcnJvcik7CkBAIC05OTAsMTAgKzk3NSwxMSBAQCBBTkdMRV9FWFBPUlQg
dm9pZCBHTF9BUElFTlRSWSBFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyhHTGVudW0gdGFyZ2V0
LCBHTGVnbEltYQogewogICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMZWdsSW1h
Z2VPRVMgaW1hZ2UgPSAweCUwLjhwKSIsIHRhcmdldCwgaW1hZ2UpOwogCi0gICAgQ29udGV4dCAq
Y29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGVnbDo6VGhyZWFkICp0aHJl
YWQgPSBlZ2w6OkdldEN1cnJlbnRUaHJlYWQoKTsKKyAgICBDb250ZXh0ICpjb250ZXh0ICAgID0g
dGhyZWFkLT5nZXRWYWxpZENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSAgID0gZWdsOjpHZXRHbG9iYWxEaXNwbGF5KCk7Cisg
ICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSAgID0gdGhyZWFkLT5nZXREaXNwbGF5KCk7CiAg
ICAgICAgIGVnbDo6SW1hZ2UgKmltYWdlT2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxlZ2w6Oklt
YWdlICo+KGltYWdlKTsKICAgICAgICAgaWYgKCFWYWxpZGF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVy
ZTJET0VTKGNvbnRleHQsIGRpc3BsYXksIHRhcmdldCwgaW1hZ2VPYmplY3QpKQogICAgICAgICB7
CkBAIC0xMDE1LDEwICsxMDAxLDExIEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEVH
TEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyhHTGVudW0gdGFyZ2V0CiB7CiAgICAg
RVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xlZ2xJbWFnZU9FUyBpbWFnZSA9IDB4JTAu
OHApIiwgdGFyZ2V0LCBpbWFnZSk7CiAKLSAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CisgICAgZWdsOjpUaHJlYWQgKnRocmVhZCA9IGVnbDo6R2V0Q3VycmVu
dFRocmVhZCgpOworICAgIENvbnRleHQgKmNvbnRleHQgICAgPSB0aHJlYWQtPmdldFZhbGlkQ29u
dGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgZWdsOjpEaXNwbGF5ICpk
aXNwbGF5ICAgPSBlZ2w6OkdldEdsb2JhbERpc3BsYXkoKTsKKyAgICAgICAgZWdsOjpEaXNwbGF5
ICpkaXNwbGF5ICAgPSB0aHJlYWQtPmdldERpc3BsYXkoKTsKICAgICAgICAgZWdsOjpJbWFnZSAq
aW1hZ2VPYmplY3QgPSByZWludGVycHJldF9jYXN0PGVnbDo6SW1hZ2UgKj4oaW1hZ2UpOwogICAg
ICAgICBpZiAoIVZhbGlkYXRlRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VTKGNv
bnRleHQsIGRpc3BsYXksIHRhcmdldCwgaW1hZ2VPYmplY3QpKQogICAgICAgICB7CkBAIC0xODY3
LDcgKzE4NTQsMTAgQEAgQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVBhdGhG
cmFnbWVudElucHV0R2VuQ0hST01JVU0oR0x1aW50IHByb2dyYW0KIH0KIAogQU5HTEVfRVhQT1JU
IHZvaWQgR0xfQVBJRU5UUlkgQ29weVRleHR1cmVDSFJPTUlVTShHTHVpbnQgc291cmNlSWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNv
dXJjZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZGVzdFRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGRlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZGVzdExldmVsLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1h
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGRlc3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gdW5wYWNrRmxpcFksCkBAIC0xODc1LDMwICsxODY1LDM1IEBAIEFO
R0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvcHlUZXh0dXJlQ0hST01JVU0oR0x1aW50IHNv
dXJjZUlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdW5wYWNrVW5tdWx0aXBseUFscGhhKQogewogICAgIEVWRU5UKAotICAgICAg
ICAiKEdMdWludCBzb3VyY2VJZCA9ICV1LCBHTHVpbnQgZGVzdElkID0gJXUsIEdMaW50IGludGVy
bmFsRm9ybWF0ID0gMHglWCwgR0xlbnVtIGRlc3RUeXBlID0gIgorICAgICAgICAiKEdMdWludCBz
b3VyY2VJZCA9ICV1LCBHTGludCBzb3VyY2VMZXZlbCA9ICVkLCBHTGVudW0gZGVzdFRhcmdldCA9
IDB4JVgsIEdMdWludCBkZXN0SWQgPSAiCisgICAgICAgICIldSwgR0xpbnQgZGVzdExldmVsID0g
JWQsIEdMaW50IGludGVybmFsRm9ybWF0ID0gMHglWCwgR0xlbnVtIGRlc3RUeXBlID0gIgogICAg
ICAgICAiMHglWCwgR0xib29sZWFuIHVucGFja0ZsaXBZID0gJXUsIEdMYm9vbGVhbiB1bnBhY2tQ
cmVtdWx0aXBseUFscGhhID0gJXUsIEdMYm9vbGVhbiAiCiAgICAgICAgICJ1bnBhY2tVbm11bHRp
cGx5QWxwaGEgPSAldSkiLAotICAgICAgICBzb3VyY2VJZCwgZGVzdElkLCBpbnRlcm5hbEZvcm1h
dCwgZGVzdFR5cGUsIHVucGFja0ZsaXBZLCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAotICAgICAg
ICB1bnBhY2tVbm11bHRpcGx5QWxwaGEpOworICAgICAgICBzb3VyY2VJZCwgc291cmNlTGV2ZWws
IGRlc3RUYXJnZXQsIGRlc3RJZCwgZGVzdExldmVsLCBpbnRlcm5hbEZvcm1hdCwgZGVzdFR5cGUs
IHVucGFja0ZsaXBZLAorICAgICAgICB1bnBhY2tQcmVtdWx0aXBseUFscGhhLCB1bnBhY2tVbm11
bHRpcGx5QWxwaGEpOwogCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpICYmCi0gICAgICAgICAgICAhVmFsaWRhdGVDb3B5VGV4dHVyZUNIUk9N
SVVNKGNvbnRleHQsIHNvdXJjZUlkLCBkZXN0SWQsIGludGVybmFsRm9ybWF0LCBkZXN0VHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wYWNrRmxpcFksIHVu
cGFja1ByZW11bHRpcGx5QWxwaGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVucGFja1VubXVsdGlwbHlBbHBoYSkpCisgICAgICAgICAgICAhVmFsaWRhdGVDb3B5
VGV4dHVyZUNIUk9NSVVNKGNvbnRleHQsIHNvdXJjZUlkLCBzb3VyY2VMZXZlbCwgZGVzdFRhcmdl
dCwgZGVzdElkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0
TGV2ZWwsIGludGVybmFsRm9ybWF0LCBkZXN0VHlwZSwgdW5wYWNrRmxpcFksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGFja1ByZW11bHRpcGx5QWxwaGEsIHVu
cGFja1VubXVsdGlwbHlBbHBoYSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIGNvbnRleHQtPmNvcHlUZXh0dXJlQ0hST01JVU0oc291cmNlSWQs
IGRlc3RJZCwgaW50ZXJuYWxGb3JtYXQsIGRlc3RUeXBlLCB1bnBhY2tGbGlwWSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tQcmVtdWx0aXBseUFscGhhLCB1bnBh
Y2tVbm11bHRpcGx5QWxwaGEpOworICAgICAgICBjb250ZXh0LT5jb3B5VGV4dHVyZUNIUk9NSVVN
KHNvdXJjZUlkLCBzb3VyY2VMZXZlbCwgZGVzdFRhcmdldCwgZGVzdElkLCBkZXN0TGV2ZWwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXQsIGRlc3RU
eXBlLCB1bnBhY2tGbGlwWSwgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tVbm11bHRpcGx5QWxwaGEpOwogICAgIH0KIH0K
IAogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ29weVN1YlRleHR1cmVDSFJPTUlVTShH
THVpbnQgc291cmNlSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHNvdXJjZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFRhcmdldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRlc3RJ
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgZGVzdExldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LApAQCAtMTkxMCwy
NSArMTkwNSwyNyBAQCBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBDb3B5U3ViVGV4dHVy
ZUNIUk9NSVVNKEdMdWludCBzb3VyY2VJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1VubXVsdGlwbHlBbHBoYSkK
IHsKICAgICBFVkVOVCgKLSAgICAgICAgIihHTHVpbnQgc291cmNlSWQgPSAldSwgR0x1aW50IGRl
c3RJZCA9ICV1LCAsIEdMYm9vbGVhbiB1bnBhY2tGbGlwWSA9ICV1LCBHTGludCB4b2Zmc2V0ID0g
IgorICAgICAgICAiKEdMdWludCBzb3VyY2VJZCA9ICV1LCBHTGludCBzb3VyY2VMZXZlbCA9ICVk
LCBHTGVudW0gZGVzdFRhcmdldCA9IDB4JVgsIEdMdWludCBkZXN0SWQgPSAiCisgICAgICAgICIl
dSwgR0xpbnQgZGVzdExldmVsID0gJWQsIEdMaW50IHhvZmZzZXQgPSAiCiAgICAgICAgICIlZCwg
R0xpbnQgeW9mZnNldCA9ICVkLCBHTGludCB4ID0gJWQsIEdMaW50IHkgPSAlZCwgR0xzaXplaSB3
aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICIKICAgICAgICAgIiVkLCBHTGJvb2xlYW4gdW5w
YWNrUHJlbXVsdGlwbHlBbHBoYSA9ICV1LCBHTGJvb2xlYW4gdW5wYWNrVW5tdWx0aXBseUFscGhh
ID0gJXUpIiwKLSAgICAgICAgc291cmNlSWQsIGRlc3RJZCwgeG9mZnNldCwgeW9mZnNldCwgeCwg
eSwgd2lkdGgsIGhlaWdodCwgdW5wYWNrRmxpcFksCi0gICAgICAgIHVucGFja1ByZW11bHRpcGx5
QWxwaGEsIHVucGFja1VubXVsdGlwbHlBbHBoYSk7CisgICAgICAgIHNvdXJjZUlkLCBzb3VyY2VM
ZXZlbCwgZGVzdFRhcmdldCwgZGVzdElkLCBkZXN0TGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHgs
IHksIHdpZHRoLCBoZWlnaHQsCisgICAgICAgIHVucGFja0ZsaXBZLCB1bnBhY2tQcmVtdWx0aXBs
eUFscGhhLCB1bnBhY2tVbm11bHRpcGx5QWxwaGEpOwogCiAgICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAg
ICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCi0gICAgICAgICAgICAhVmFsaWRh
dGVDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKGNvbnRleHQsIHNvdXJjZUlkLCBkZXN0SWQsIHhvZmZz
ZXQsIHlvZmZzZXQsIHgsIHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHdpZHRoLCBoZWlnaHQsIHVucGFja0ZsaXBZLCB1bnBhY2tQcmVtdWx0aXBseUFscGhh
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tVbm11
bHRpcGx5QWxwaGEpKQorICAgICAgICAgICAgIVZhbGlkYXRlQ29weVN1YlRleHR1cmVDSFJPTUlV
TSgKKyAgICAgICAgICAgICAgICBjb250ZXh0LCBzb3VyY2VJZCwgc291cmNlTGV2ZWwsIGRlc3RU
YXJnZXQsIGRlc3RJZCwgZGVzdExldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LAorICAgICAgICAg
ICAgICAgIHksIHdpZHRoLCBoZWlnaHQsIHVucGFja0ZsaXBZLCB1bnBhY2tQcmVtdWx0aXBseUFs
cGhhLCB1bnBhY2tVbm11bHRpcGx5QWxwaGEpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb250ZXh0LT5jb3B5U3ViVGV4dHVyZUNIUk9NSVVN
KHNvdXJjZUlkLCBkZXN0SWQsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wYWNrRmxpcFksIHVu
cGFja1ByZW11bHRpcGx5QWxwaGEsIHVucGFja1VubXVsdGlwbHlBbHBoYSk7CisgICAgICAgIGNv
bnRleHQtPmNvcHlTdWJUZXh0dXJlQ0hST01JVU0oc291cmNlSWQsIHNvdXJjZUxldmVsLCBkZXN0
VGFyZ2V0LCBkZXN0SWQsIGRlc3RMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCB1bnBhY2tG
bGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tQcmVt
dWx0aXBseUFscGhhLCB1bnBhY2tVbm11bHRpcGx5QWxwaGEpOwogICAgIH0KIH0KIApAQCAtMTk0
OSwyMiArMTk0NiwyMCBAQCBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBDb21wcmVzc2Vk
Q29weVRleHR1cmVDSFJPTUlVTShHTHVpbnQgc291cmNlSWQsIEdMdQogICAgIH0KIH0KIAotR0xf
QVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgRW5hYmxlRXh0ZW5zaW9uQU5HTEUoY29uc3Qg
R0xjaGFyICpuYW1lKQorQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUmVxdWVzdEV4dGVu
c2lvbkFOR0xFKGNvbnN0IEdMY2hhciAqbmFtZSkKIHsKICAgICBFVkVOVCgiKGNvbnN0IEdMY2hh
ciAqbmFtZSA9ICVwKSIsIG5hbWUpOwogCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUVuYWJsZUV4dGVuc2lvbkFOR0xF
KGNvbnRleHQsIG5hbWUpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
JiYgIVZhbGlkYXRlUmVxdWVzdEV4dGVuc2lvbkFOR0xFKGNvbnRleHQsIG5hbWUpKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gR0xfRkFMU0U7CisgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICByZXR1cm4gY29udGV4dC0+ZW5hYmxlRXh0ZW5zaW9uKG5hbWUp
ID8gR0xfVFJVRSA6IEdMX0ZBTFNFOworICAgICAgICBjb250ZXh0LT5yZXF1ZXN0RXh0ZW5zaW9u
KG5hbWUpOwogICAgIH0KLQotICAgIHJldHVybiBHTF9GQUxTRTsKIH0KIAogQU5HTEVfRVhQT1JU
IHZvaWQgR0xfQVBJRU5UUlkgR2V0Qm9vbGVhbnZSb2J1c3RBTkdMRShHTGVudW0gcG5hbWUsCkBA
IC0xOTg3LDE1ICsxOTgyLDcgQEAgQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0Qm9v
bGVhbnZSb2J1c3RBTkdMRShHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAobmF0aXZlVHlwZSA9PSBHTF9CT09MKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5nZXRCb29sZWFudihwbmFtZSwgcGFyYW1zKTsKLSAgICAgICAg
fQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIENhc3RTdGF0ZVZhbHVlcyhj
b250ZXh0LCBuYXRpdmVUeXBlLCBwbmFtZSwgbnVtUGFyYW1zLCBwYXJhbXMpOwotICAgICAgICB9
Ci0KKyAgICAgICAgY29udGV4dC0+Z2V0Qm9vbGVhbnYocG5hbWUsIHBhcmFtcyk7CiAgICAgICAg
IFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgbnVtUGFyYW1zKTsKICAgICB9CiB9CkBAIC0y
MDQ1LDE1ICsyMDMyLDcgQEAgQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0RmxvYXR2
Um9idXN0QU5HTEUoR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGUgPT0gR0xfRkxPQVQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmdldEZsb2F0dihwbmFtZSwgcGFyYW1zKTsKLSAgICAgICAgfQotICAg
ICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIENhc3RTdGF0ZVZhbHVlcyhjb250ZXh0
LCBuYXRpdmVUeXBlLCBwbmFtZSwgbnVtUGFyYW1zLCBwYXJhbXMpOwotICAgICAgICB9Ci0KKyAg
ICAgICAgY29udGV4dC0+Z2V0RmxvYXR2KHBuYW1lLCBwYXJhbXMpOwogICAgICAgICBTZXRSb2J1
c3RMZW5ndGhQYXJhbShsZW5ndGgsIG51bVBhcmFtcyk7CiAgICAgfQogfQpAQCAtMjEwNiwxNCAr
MjA4NSw3IEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEludGVnZXJ2Um9idXN0
QU5HTEUoR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKG5hdGl2ZVR5cGUgPT0gR0xfSU5UKQotICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgZGF0YSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBDYXN0U3RhdGVWYWx1ZXMoY29udGV4dCwgbmF0aXZl
VHlwZSwgcG5hbWUsIG51bVBhcmFtcywgZGF0YSk7Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4
dC0+Z2V0SW50ZWdlcnYocG5hbWUsIGRhdGEpOwogICAgICAgICBTZXRSb2J1c3RMZW5ndGhQYXJh
bShsZW5ndGgsIG51bVBhcmFtcyk7CiAgICAgfQogfQpAQCAtMjE2Niw3ICsyMTM4LDcgQEAgQU5H
TEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRShHTGVudW0gdGFyZ2UKICAgICAgICAgfQogCiAgICAgICAgIFJlbmRlcmJ1ZmZlciAq
cmVuZGVyYnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldEN1cnJlbnRSZW5kZXJidWZm
ZXIoKTsKLSAgICAgICAgUXVlcnlSZW5kZXJidWZmZXJpdihyZW5kZXJidWZmZXIsIHBuYW1lLCBw
YXJhbXMpOworICAgICAgICBRdWVyeVJlbmRlcmJ1ZmZlcml2KGNvbnRleHQsIHJlbmRlcmJ1ZmZl
ciwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwg
bnVtUGFyYW1zKTsKICAgICB9CiB9CkBAIC0yMzI3LDExICsyMjk5LDcgQEAgQU5HTEVfRVhQT1JU
IHZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRShHTHVpbnQgaW5k
ZXgsCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdCBWZXJ0
ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWVzID0KLSAgICAgICAgICAgIGNv
bnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWUoaW5kZXgpOwot
ICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiA9Ci0gICAgICAgICAgICBjb250
ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXJyYXkoKS0+Z2V0VmVydGV4QXR0cmlidXRlKGlu
ZGV4KTsKLSAgICAgICAgUXVlcnlWZXJ0ZXhBdHRyaWJmdihhdHRyaWIsIGN1cnJlbnRWYWx1ZXMs
IHBuYW1lLCBwYXJhbXMpOworICAgICAgICBjb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJmdihpbmRl
eCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwg
d3JpdGVMZW5ndGgpOwogICAgIH0KIH0KQEAgLTIzNTcsMTEgKzIzMjUsNyBAQCBBTkdMRV9FWFBP
UlQgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFKEdMdWludCBp
bmRleCwKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IFZl
cnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZXMgPQotICAgICAgICAgICAg
Y29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZShpbmRleCk7
Ci0gICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0KLSAgICAgICAgICAgIGNv
bnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0ZXhBdHRyaWJ1dGUo
aW5kZXgpOwotICAgICAgICBRdWVyeVZlcnRleEF0dHJpYml2KGF0dHJpYiwgY3VycmVudFZhbHVl
cywgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGNvbnRleHQtPmdldFZlcnRleEF0dHJpYml2KGlu
ZGV4LCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0obGVuZ3Ro
LCB3cml0ZUxlbmd0aCk7CiAgICAgfQogfQpAQCAtMjM4Nyw5ICsyMzUxLDcgQEAgQU5HTEVfRVhQ
T1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliUG9pbnRlcnZSb2J1c3RBTkdMRShH
THVpbnQgaW5kZXgsCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBj
b25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiA9Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRH
TFN0YXRlKCkuZ2V0VmVydGV4QXJyYXkoKS0+Z2V0VmVydGV4QXR0cmlidXRlKGluZGV4KTsKLSAg
ICAgICAgUXVlcnlWZXJ0ZXhBdHRyaWJQb2ludGVydihhdHRyaWIsIHBuYW1lLCBwb2ludGVyKTsK
KyAgICAgICAgY29udGV4dC0+Z2V0VmVydGV4QXR0cmliUG9pbnRlcnYoaW5kZXgsIHBuYW1lLCBw
b2ludGVyKTsKICAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0obGVuZ3RoLCB3cml0ZUxlbmd0
aCk7CiAgICAgfQogfQpAQCAtMjQwMiwyMCArMjM2NCwyNCBAQCBBTkdMRV9FWFBPUlQgdm9pZCBH
TF9BUElFTlRSWSBSZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0xpbnQgeCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1
ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmNvbHVtbnMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqcm93cywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwaXhlbHMpCiB7
CiAgICAgRVZFTlQoCiAgICAgICAgICIoR0xpbnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6
ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWlnaHQgPSAlZCwgIgogICAgICAgICAiR0xlbnVtIGZv
cm1hdCA9IDB4JVgsIEdMZW51bSB0eXBlID0gMHglWCwgR0xzaXplaSBidWZzaXplID0gJWQsIEdM
c2l6ZWkqIGxlbmd0aCA9ICIKLSAgICAgICAgIjB4JTAuOHAsIEdMdm9pZCogcGl4ZWxzID0gMHgl
MC44cCkiLAotICAgICAgICB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNp
emUsIGxlbmd0aCwgcGl4ZWxzKTsKKyAgICAgICAgIjB4JTAuOHAsIEdMc2l6ZWkqIGNvbHVtbnMg
PSAweCUwLjhwLCBHTHNpemVpKiByb3dzID0gMHglMC44cCwgR0x2b2lkKiBwaXhlbHMgPSAweCUw
LjhwKSIsCisgICAgICAgIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6
ZSwgbGVuZ3RoLCBjb2x1bW5zLCByb3dzLCBwaXhlbHMpOwogCiAgICAgQ29udGV4dCAqY29udGV4
dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAg
ICAgICAgR0xzaXplaSB3cml0ZUxlbmd0aCA9IDA7CisgICAgICAgIEdMc2l6ZWkgd3JpdGVDb2x1
bW5zID0gMDsKKyAgICAgICAgR0xzaXplaSB3cml0ZVJvd3MgICAgPSAwOwogICAgICAgICBpZiAo
IVZhbGlkYXRlUmVhZFBpeGVsc1JvYnVzdEFOR0xFKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmd3JpdGVMZW5ndGgsIHBpeGVscykpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJndyaXRlTGVuZ3RoLCAmd3JpdGVDb2x1bW5zLCAmd3Jp
dGVSb3dzLCBwaXhlbHMpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTI0MjMsNiArMjM4OSw4IEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFJl
YWRQaXhlbHNSb2J1c3RBTkdMRShHTGludCB4LAogICAgICAgICBjb250ZXh0LT5yZWFkUGl4ZWxz
KHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKIAogICAgICAgICBT
ZXRSb2J1c3RMZW5ndGhQYXJhbShsZW5ndGgsIHdyaXRlTGVuZ3RoKTsKKyAgICAgICAgU2V0Um9i
dXN0TGVuZ3RoUGFyYW0oY29sdW1ucywgd3JpdGVDb2x1bW5zKTsKKyAgICAgICAgU2V0Um9idXN0
TGVuZ3RoUGFyYW0ocm93cywgd3JpdGVSb3dzKTsKICAgICB9CiB9CiAKQEAgLTI3NDUsMTEgKzI3
MTMsNyBAQCBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJJaXZS
b2J1c3RBTkdMRShHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFs
dWVzID0KLSAgICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBdHRyaWJD
dXJyZW50VmFsdWUoaW5kZXgpOwotICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJp
YiA9Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXJyYXkoKS0+
Z2V0VmVydGV4QXR0cmlidXRlKGluZGV4KTsKLSAgICAgICAgUXVlcnlWZXJ0ZXhBdHRyaWJJaXYo
YXR0cmliLCBjdXJyZW50VmFsdWVzLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgY29udGV4dC0+
Z2V0VmVydGV4QXR0cmliSWl2KGluZGV4LCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgU2V0Um9i
dXN0TGVuZ3RoUGFyYW0obGVuZ3RoLCB3cml0ZUxlbmd0aCk7CiAgICAgfQogfQpAQCAtMjc3NSwx
MSArMjczOSw3IEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJp
Ykl1aXZSb2J1c3RBTkdMRShHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJy
ZW50VmFsdWVzID0KLSAgICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhB
dHRyaWJDdXJyZW50VmFsdWUoaW5kZXgpOwotICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUg
JmF0dHJpYiA9Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXJy
YXkoKS0+Z2V0VmVydGV4QXR0cmlidXRlKGluZGV4KTsKLSAgICAgICAgUXVlcnlWZXJ0ZXhBdHRy
aWJJdWl2KGF0dHJpYiwgY3VycmVudFZhbHVlcywgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGNv
bnRleHQtPmdldFZlcnRleEF0dHJpYkl1aXYoaW5kZXgsIHBuYW1lLCBwYXJhbXMpOwogICAgICAg
ICBTZXRSb2J1c3RMZW5ndGhQYXJhbShsZW5ndGgsIHdyaXRlTGVuZ3RoKTsKICAgICB9CiB9CkBA
IC0zMTMxLDIwICszMDkxLDI0IEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFJlYWRu
UGl4ZWxzUm9idXN0QU5HTEUoR0xpbnQgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpjb2x1bW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpyb3dzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhKQogewogICAgIEVWRU5U
KAogICAgICAgICAiKEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0g
JWQsIEdMc2l6ZWkgaGVpZ2h0ID0gJWQsICIKICAgICAgICAgIkdMZW51bSBmb3JtYXQgPSAweCVY
LCBHTGVudW0gdHlwZSA9IDB4JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5n
dGggPSAiCi0gICAgICAgICIweCUwLjhwLCBHTHZvaWQgKmRhdGEgPSAweCUwLjhwKSIsCi0gICAg
ICAgIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLCBk
YXRhKTsKKyAgICAgICAgIjB4JTAuOHAsIEdMc2l6ZWkqIGNvbHVtbnMgPSAweCUwLjhwLCBHTHNp
emVpKiByb3dzID0gMHglMC44cCwgR0x2b2lkICpkYXRhID0gMHglMC44cCkiLAorICAgICAgICB4
LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIGxlbmd0aCwgY29sdW1u
cywgcm93cywgZGF0YSk7CiAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewogICAgICAgICBHTHNpemVpIHdyaXRl
TGVuZ3RoID0gMDsKKyAgICAgICAgR0xzaXplaSB3cml0ZUNvbHVtbnMgPSAwOworICAgICAgICBH
THNpemVpIHdyaXRlUm93cyAgICA9IDA7CiAgICAgICAgIGlmICghVmFsaWRhdGVSZWFkblBpeGVs
c1JvYnVzdEFOR0xFKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
YnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndy
aXRlTGVuZ3RoLCBkYXRhKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJndyaXRlTGVuZ3RoLCAmd3JpdGVDb2x1bW5zLCAmd3JpdGVSb3dzLCBkYXRhKSkKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMTUyLDYgKzMxMTYs
OCBAQCBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBSZWFkblBpeGVsc1JvYnVzdEFOR0xF
KEdMaW50IHgsCiAgICAgICAgIGNvbnRleHQtPnJlYWRQaXhlbHMoeCwgeSwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKIAogICAgICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShs
ZW5ndGgsIHdyaXRlTGVuZ3RoKTsKKyAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0oY29sdW1u
cywgd3JpdGVDb2x1bW5zKTsKKyAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0ocm93cywgd3Jp
dGVSb3dzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfMl8wX2V4dC5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0LmgKaW5k
ZXggZDg0MGNkNDRlZGIyYmZjY2I4ODE2OWZhNDRmMWZkZmFiYjI0M2QzNy4uNzcyNWI5NzUwMDJi
NDc3Y2YxNGZjMWEzYTZhYzYwZWJhNDIzOWNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0LmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18y
XzBfZXh0LmgKQEAgLTksOSArOSw5IEBACiAjaWZuZGVmIExJQkdMRVNWMl9FTlRSWVBPSU5UR0xF
UzIwRVhUX0hfCiAjZGVmaW5lIExJQkdMRVNWMl9FTlRSWVBPSU5UR0xFUzIwRVhUX0hfCiAKLSNp
bmNsdWRlIDxBTkdMRS9nbDIuaD4KLSNpbmNsdWRlIDxBTkdMRS9nbDJleHQuaD4KLSNpbmNsdWRl
IDxBTkdMRS9leHBvcnQuaD4KKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKyNpbmNsdWRlIDxHTEVT
Mi9nbDJleHQuaD4KKyNpbmNsdWRlIDxleHBvcnQuaD4KIAogbmFtZXNwYWNlIGdsCiB7CkBAIC0y
NDAsNyArMjQwLDEwIEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1QYXRo
RnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKEdMdWludCBwcm9ncmFtCiAKIC8vIEdMX0NIUk9NSVVN
X2NvcHlfdGV4dHVyZQogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ29weVRleHR1cmVD
SFJPTUlVTShHTHVpbnQgc291cmNlSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHNvdXJjZUxldmVsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFRhcmdldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRlc3RJ
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgZGVzdExldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RUeXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrRmxpcFks
CkBAIC0yNDgsNyArMjUxLDEwIEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvcHlU
ZXh0dXJlQ0hST01JVU0oR0x1aW50IHNvdXJjZUlkLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrVW5tdWx0aXBseUFscGhh
KTsKIAogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ29weVN1YlRleHR1cmVDSFJPTUlV
TShHTHVpbnQgc291cmNlSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHNvdXJjZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFRhcmdldCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRl
c3RJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgZGVzdExldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LApAQCAtMjYy
LDggKzI2OCw4IEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvcHlTdWJUZXh0dXJl
Q0hST01JVU0oR0x1aW50IHNvdXJjZUlkLAogLy8gR0xfQ0hST01JVU1fY29weV9jb21wcmVzc2Vk
X3RleHR1cmUKIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvbXByZXNzZWRDb3B5VGV4
dHVyZUNIUk9NSVVNKEdMdWludCBzb3VyY2VJZCwgR0x1aW50IGRlc3RJZCk7CiAKLS8vIEdMX0FO
R0xFX3dlYmdsX2NvbXBhdGliaWxpdHkKLUdMX0FQSUNBTEwgR0xib29sZWFuIEdMX0FQSUVOVFJZ
IEVuYWJsZUV4dGVuc2lvbkFOR0xFKGNvbnN0IEdMY2hhciAqbmFtZSk7CisvLyBHTF9BTkdMRV9y
ZXF1ZXN0X2V4dGVuc2lvbgorQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUmVxdWVzdEV4
dGVuc2lvbkFOR0xFKGNvbnN0IEdMY2hhciAqbmFtZSk7CiAKIC8vIEdMX0FOR0xFX3JvYnVzdF9j
bGllbnRfbWVtb3J5CiBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBHZXRCb29sZWFudlJv
YnVzdEFOR0xFKEdMZW51bSBwbmFtZSwKQEAgLTM0Nyw2ICszNTMsOCBAQCBBTkdMRV9FWFBPUlQg
dm9pZCBHTF9BUElFTlRSWSBSZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0xpbnQgeCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmNvbHVtbnMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqcm93cywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwaXhl
bHMpOwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgVGV4SW1hZ2UyRFJvYnVzdEFOR0xF
KEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCkBAIC01MjMsNiArNTMxLDggQEAgQU5HTEVfRVhQT1JU
IHZvaWQgR0xfQVBJRU5UUlkgUmVhZG5QaXhlbHNSb2J1c3RBTkdMRShHTGludCB4LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmNvbHVtbnMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKnJvd3Ms
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZv
aWQgKmRhdGEpOwogQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0blVuaWZvcm1mdlJv
YnVzdEFOR0xFKEdMdWludCBwcm9ncmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzAu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNf
Z2xlc18zXzAuY3BwCmluZGV4IDI5ZWMxZGI3OGI5ODg4MzcxMGU2ODUxMzQ5MzIzZDk5NTcxMWE2
MmIuLjE2YzY2Njc3NTk5ZjRlYzIwYmFmZmZhY2MyYWQ2MGM4M2VjZTYyMDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNf
M18wLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5
X3BvaW50c19nbGVzXzNfMC5jcHAKQEAgLTYxLDE3ICs2MSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
RHJhd1JhbmdlRWxlbWVudHMoR0xlbnVtIG1vZGUsIEdMdWludCBzdGFydCwgR0x1aW50IGVuZCwg
R0xzaXplCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICAvLyBBcyBs
b25nIGFzIGluZGV4IHZhbGlkYXRpb24gaXMgZG9uZSwgaXQgZG9lc24ndCBtYXR0ZXIgd2hldGhl
ciB0aGUgY29udGV4dCByZWNlaXZlcyBhIGRyYXdFbGVtZW50cyBvcgotICAgICAgICAvLyBhIGRy
YXdSYW5nZUVsZW1lbnRzIGNhbGwgLSB0aGUgR0wgYmFjay1lbmQgaXMgZnJlZSB0byBjaG9vc2Ug
dG8gY2FsbCBkcmF3UmFuZ2VFbGVtZW50cyBiYXNlZCBvbiB0aGUKLSAgICAgICAgLy8gdmFsaWRh
dGVkIGluZGV4IHJhbmdlLiBJZiBpbmRleCB2YWxpZGF0aW9uIGlzIHJlbW92ZWQsIGFkZGluZyBk
cmF3UmFuZ2VFbGVtZW50cyB0byB0aGUgY29udGV4dCBpbnRlcmZhY2UKLSAgICAgICAgLy8gc2hv
dWxkIGJlIHJlY29uc2lkZXJlZC4KLSAgICAgICAgRXJyb3IgZXJyb3IgPQotICAgICAgICAgICAg
Y29udGV4dC0+ZHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUs
IGluZGljZXMsIGluZGV4UmFuZ2UpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+ZHJhd1JhbmdlRWxlbWVu
dHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5cGUsIGluZGljZXMsIGluZGV4UmFuZ2UpOwog
ICAgIH0KIH0KIApAQCAtNTAwLDE5ICs0OTAsMTQgQEAgdm9pZCBHTF9BUElFTlRSWSBSZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLAog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNp
b24oKSA8IDMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoIVZhbGlkYXRlRVMzUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRl
cnMoY29udGV4dCwgdGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAg
ICAgIVZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKGNvbnRleHQsIHRhcmdl
dCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCkpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVy
YnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldEN1cnJlbnRSZW5kZXJidWZmZXIoKTsK
LSAgICAgICAgcmVuZGVyYnVmZmVyLT5zZXRTdG9yYWdlTXVsdGlzYW1wbGUoc2FtcGxlcywgaW50
ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBjb250ZXh0LT5yZW5kZXJidWZm
ZXJTdG9yYWdlTXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCk7CiAgICAgfQogfQogCkBAIC03MDcsNyArNjkyLDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBFbmRUcmFuc2Zvcm1GZWVkYmFjayh2b2lkKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2stPmVuZCgpOworICAgICAgICB0cmFu
c2Zvcm1GZWVkYmFjay0+ZW5kKGNvbnRleHQpOwogICAgIH0KIH0KIApAQCAtNzE5LDkwICs3MDQs
MTIgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kQnVmZmVyUmFuZ2UoR0xlbnVtIHRhcmdldCwgR0x1
aW50IGluZGV4LCBHTHVpbnQgYnVmZmVyLCBHTGkKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgQ2FwcyAm
Y2FwcyA9IGNvbnRleHQtPmdldENhcHMoKTsKLSAgICAgICAgc3dpdGNoICh0YXJnZXQpCi0gICAg
ICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVI6Ci0gICAg
ICAgICAgICBpZiAoaW5kZXggPj0gY2Fwcy5tYXhUcmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0
cmlidXRlcykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBjYXNlIEdMX1VO
SUZPUk1fQlVGRkVSOgotICAgICAgICAgICAgaWYgKGluZGV4ID49IGNhcHMubWF4VW5pZm9ybUJ1
ZmZlckJpbmRpbmdzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGJ1
ZmZlciAhPSAwICYmIHNpemUgPD0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRHTFN0YXRlKCkuaXNCaW5k
R2VuZXJhdGVzUmVzb3VyY2VFbmFibGVkKCkgJiYKLSAgICAgICAgICAgICFjb250ZXh0LT5pc0J1
ZmZlckdlbmVyYXRlZChidWZmZXIpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZUJpbmRCdWZmZXJSYW5nZShjb250ZXh0LCB0
YXJnZXQsIGluZGV4LCBidWZmZXIsIG9mZnNldCwgc2l6ZSkpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQnVm
ZmVyIHdhcyBub3QgZ2VuZXJhdGVkIikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
Ci0KLSAgICAgICAgc3dpdGNoICh0YXJnZXQpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdM
X1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVI6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgLy8gc2l6ZSBhbmQgb2Zmc2V0IG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0Ci0gICAgICAgICAg
ICAgICAgaWYgKGJ1ZmZlciAhPSAwICYmICgob2Zmc2V0ICUgNCkgIT0gMCB8fCAoc2l6ZSAlIDQp
ICE9IDApKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gQ2Fubm90
IGJpbmQgYSB0cmFuc2Zvcm0gZmVlZGJhY2sgYnVmZmVyIGlmIHRoZSBjdXJyZW50IHRyYW5zZm9y
bSBmZWVkYmFjayBpcyBhY3RpdmUgKDMuMC40IHBnIDkxIHNlY3Rpb24gMi4xNS4yKQotICAgICAg
ICAgICAgICAgIFRyYW5zZm9ybUZlZWRiYWNrICpjdXJUcmFuc2Zvcm1GZWVkYmFjayA9Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRDdXJyZW50VHJhbnNmb3Jt
RmVlZGJhY2soKTsKLSAgICAgICAgICAgICAgICBpZiAoY3VyVHJhbnNmb3JtRmVlZGJhY2sgJiYg
Y3VyVHJhbnNmb3JtRmVlZGJhY2stPmlzQWN0aXZlKCkpCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTikpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICAgICAgY29udGV4dC0+YmluZEluZGV4ZWRUcmFuc2Zvcm1GZWVkYmFj
a0J1ZmZlcihidWZmZXIsIGluZGV4LCBvZmZzZXQsIHNpemUpOwotICAgICAgICAgICAgICAgIGNv
bnRleHQtPmJpbmRHZW5lcmljVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIoYnVmZmVyKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgIGNhc2UgR0xfVU5J
Rk9STV9CVUZGRVI6Ci0KLSAgICAgICAgICAgIC8vIGl0IGlzIGFuIGVycm9yIHRvIGJpbmQgYW4g
b2Zmc2V0IG5vdCBhIG11bHRpcGxlIG9mIHRoZSBhbGlnbm1lbnQKLSAgICAgICAgICAgIGlmIChi
dWZmZXIgIT0gMCAmJiAob2Zmc2V0ICUgY2Fwcy51bmlmb3JtQnVmZmVyT2Zmc2V0QWxpZ25tZW50
KSAhPSAwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmRJbmRleGVkVW5pZm9ybUJ1
ZmZlcihidWZmZXIsIGluZGV4LCBvZmZzZXQsIHNpemUpOwotICAgICAgICAgICAgY29udGV4dC0+
YmluZEdlbmVyaWNVbmlmb3JtQnVmZmVyKGJ1ZmZlcik7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICB9
CisgICAgICAgIGNvbnRleHQtPmJpbmRCdWZmZXJSYW5nZSh0YXJnZXQsIGluZGV4LCBidWZmZXIs
IG9mZnNldCwgc2l6ZSk7CiAgICAgfQogfQogCkBAIC04MTQsNjggKzcyMSwxMSBAQCB2b2lkIEdM
X0FQSUVOVFJZIEJpbmRCdWZmZXJCYXNlKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0x1
aW50IGJ1ZmZlcikKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xp
ZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgJiYgIVZhbGlkYXRlQmluZEJ1ZmZlckJhc2UoY29udGV4dCwgdGFyZ2V0LCBpbmRleCwg
YnVmZmVyKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotCi0gICAgICAgIGNvbnN0IENhcHMgJmNhcHMgPSBjb250ZXh0LT5nZXRDYXBzKCk7Ci0gICAg
ICAgIHN3aXRjaCAodGFyZ2V0KQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9UUkFOU0ZP
Uk1fRkVFREJBQ0tfQlVGRkVSOgotICAgICAgICAgICAgaWYgKGluZGV4ID49IGNhcHMubWF4VHJh
bnNmb3JtRmVlZGJhY2tTZXBhcmF0ZUF0dHJpYnV0ZXMpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JVRkZFUjoKLSAgICAgICAgICAgIGlmIChp
bmRleCA+PSBjYXBzLm1heFVuaWZvcm1CdWZmZXJCaW5kaW5ncykKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmICghY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmlzQmluZEdlbmVy
YXRlc1Jlc291cmNlRW5hYmxlZCgpICYmCi0gICAgICAgICAgICAhY29udGV4dC0+aXNCdWZmZXJH
ZW5lcmF0ZWQoYnVmZmVyKSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJCdWZmZXIgd2FzIG5vdCBnZW5lcmF0
ZWQiKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2gg
KHRhcmdldCkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNL
X0JVRkZFUjoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBDYW5ub3QgYmluZCBh
IHRyYW5zZm9ybSBmZWVkYmFjayBidWZmZXIgaWYgdGhlIGN1cnJlbnQgdHJhbnNmb3JtIGZlZWRi
YWNrIGlzIGFjdGl2ZSAoMy4wLjQgcGcgOTEgc2VjdGlvbiAyLjE1LjIpCi0gICAgICAgICAgICAg
ICAgVHJhbnNmb3JtRmVlZGJhY2sgKmN1clRyYW5zZm9ybUZlZWRiYWNrID0KLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFj
aygpOwotICAgICAgICAgICAgICAgIGlmIChjdXJUcmFuc2Zvcm1GZWVkYmFjayAmJiBjdXJUcmFu
c2Zvcm1GZWVkYmFjay0+aXNBY3RpdmUoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5iaW5kSW5kZXhlZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVy
KGJ1ZmZlciwgaW5kZXgsIDAsIDApOwotICAgICAgICAgICAgICAgIGNvbnRleHQtPmJpbmRHZW5l
cmljVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIoYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQlVGRkVSOgotICAg
ICAgICAgICAgY29udGV4dC0+YmluZEluZGV4ZWRVbmlmb3JtQnVmZmVyKGJ1ZmZlciwgaW5kZXgs
IDAsIDApOwotICAgICAgICAgICAgY29udGV4dC0+YmluZEdlbmVyaWNVbmlmb3JtQnVmZmVyKGJ1
ZmZlcik7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmJpbmRCdWZm
ZXJCYXNlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlcik7CiAgICAgfQogfQogCkBAIC05NzEsNTMgKzgy
MSw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliSVBvaW50ZXIoR0x1aW50IGluZGV4
LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
aWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKLSAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpbmRleCA+
PSBNQVhfVkVSVEVYX0FUVFJJQlMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChzaXplIDwgMSB8fCBzaXplID4gNCkKLSAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgc3dpdGNoICh0
eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9CWVRFOgotICAgICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfQllURToKLSAgICAgICAgICBjYXNlIEdMX1NIT1JUOgotICAgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfU0hPUlQ6Ci0gICAgICAgICAgY2FzZSBHTF9JTlQ6Ci0gICAgICAgICAg
Y2FzZSBHTF9VTlNJR05FRF9JTlQ6Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KHN0cmlkZSA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIFtPcGVuR0wgRVMgMy4wLjJdIFNlY3Rpb24gMi44IHBhZ2UgMjQ6Ci0g
ICAgICAgIC8vIEFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZCB3aGVuIGEg
bm9uLXplcm8gdmVydGV4IGFycmF5IG9iamVjdAotICAgICAgICAvLyBpcyBib3VuZCwgemVybyBp
cyBib3VuZCB0byB0aGUgQVJSQVlfQlVGRkVSIGJ1ZmZlciBvYmplY3QgYmluZGluZyBwb2ludCwK
LSAgICAgICAgLy8gYW5kIHRoZSBwb2ludGVyIGFyZ3VtZW50IGlzIG5vdCBOVUxMLgotICAgICAg
ICBpZiAoY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEFycmF5KCktPmlkKCkgIT0gMCAm
JgotICAgICAgICAgICAgY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldEFycmF5QnVmZmVySWQoKSA9
PSAwICYmIHBvaW50ZXIgIT0gTlVMTCkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJUG9pbnRlcihjb250
ZXh0LCBpbmRleCwgc2l6ZSwgdHlwZSwgc3RyaWRlLCBwb2ludGVyKSkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMDM5LDExICs4NDUsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYklpdihHTHVpbnQgaW5kZXgsIEdMZW51
bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1
ZXMgPQotICAgICAgICAgICAgY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEF0dHJpYkN1
cnJlbnRWYWx1ZShpbmRleCk7Ci0gICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmli
ID0KLSAgICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgpLT5n
ZXRWZXJ0ZXhBdHRyaWJ1dGUoaW5kZXgpOwotICAgICAgICBRdWVyeVZlcnRleEF0dHJpYklpdihh
dHRyaWIsIGN1cnJlbnRWYWx1ZXMsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBjb250ZXh0LT5n
ZXRWZXJ0ZXhBdHRyaWJJaXYoaW5kZXgsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIApAQCAt
MTA2MSwxMSArODYzLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJJdWl2KEdM
dWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQqIHBhcmFtcykKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1
ZURhdGEgJmN1cnJlbnRWYWx1ZXMgPQotICAgICAgICAgICAgY29udGV4dC0+Z2V0R0xTdGF0ZSgp
LmdldFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZShpbmRleCk7Ci0gICAgICAgIGNvbnN0IFZlcnRl
eEF0dHJpYnV0ZSAmYXR0cmliID0KLSAgICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5n
ZXRWZXJ0ZXhBcnJheSgpLT5nZXRWZXJ0ZXhBdHRyaWJ1dGUoaW5kZXgpOwotICAgICAgICBRdWVy
eVZlcnRleEF0dHJpYkl1aXYoYXR0cmliLCBjdXJyZW50VmFsdWVzLCBwbmFtZSwgcGFyYW1zKTsK
KyAgICAgICAgY29udGV4dC0+Z2V0VmVydGV4QXR0cmliSXVpdihpbmRleCwgcG5hbWUsIHBhcmFt
cyk7CiAgICAgfQogfQogCkBAIC0xMzkxLDI4ICsxMTg5LDE1IEBAIGNvbnN0IEdMdWJ5dGUgKkdM
X0FQSUVOVFJZIEdldFN0cmluZ2koR0xlbnVtIG5hbWUsIEdMdWludCBpbmRleCkKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAz
KQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlR2V0
U3RyaW5naShjb250ZXh0LCBuYW1lLCBpbmRleCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChuYW1lICE9IEdMX0VY
VEVOU0lPTlMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoaW5kZXggPj0gY29udGV4dC0+Z2V0RXh0ZW5zaW9uU3RyaW5nQ291
bnQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IEdMdWJ5dGUgKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9uU3RyaW5nKGluZGV4
KSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LT5nZXRTdHJpbmdpKG5hbWUsIGluZGV4KTsKICAg
ICB9CiAKLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdm9pZCBH
TF9BUElFTlRSWSBDb3B5QnVmZmVyU3ViRGF0YShHTGVudW0gcmVhZFRhcmdldCwgR0xlbnVtIHdy
aXRlVGFyZ2V0LCBHTGludHB0ciByZWFkT2Zmc2V0LCBHTGludHB0ciB3cml0ZU9mZnNldCwgR0xz
aXplaXB0ciBzaXplKQpAQCAtMTQyMyw1OCArMTIwOCwxNCBAQCB2b2lkIEdMX0FQSUVOVFJZIENv
cHlCdWZmZXJTdWJEYXRhKEdMZW51bSByZWFkVGFyZ2V0LCBHTGVudW0gd3JpdGVUYXJnZXQsIEdM
aW50cAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpv
clZlcnNpb24oKSA8IDMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoIVZhbGlkQnVmZmVyVGFyZ2V0KGNvbnRleHQsIHJlYWRU
YXJnZXQpIHx8ICFWYWxpZEJ1ZmZlclRhcmdldChjb250ZXh0LCB3cml0ZVRhcmdldCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgQnVmZmVy
ICpyZWFkQnVmZmVyICA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIocmVh
ZFRhcmdldCk7Ci0gICAgICAgIEJ1ZmZlciAqd3JpdGVCdWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0
YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHdyaXRlVGFyZ2V0KTsKLQotICAgICAgICBpZiAoIXJlYWRC
dWZmZXIgfHwgIXdyaXRlQnVmZmVyKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVmVyaWZ5IHRoYXQgcmVhZEJ1ZmZlciBhbmQg
d3JpdGVCdWZmZXIgYXJlIG5vdCBjdXJyZW50bHkgbWFwcGVkCi0gICAgICAgIGlmIChyZWFkQnVm
ZmVyLT5pc01hcHBlZCgpIHx8IHdyaXRlQnVmZmVyLT5pc01hcHBlZCgpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJlYWRP
ZmZzZXQgPCAwIHx8IHdyaXRlT2Zmc2V0IDwgMCB8fCBzaXplIDwgMCB8fAotICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihyZWFkT2Zmc2V0ICsgc2l6ZSkgPiByZWFkQnVmZmVy
LT5nZXRTaXplKCkgfHwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4od3Jp
dGVPZmZzZXQgKyBzaXplKSA+IHdyaXRlQnVmZmVyLT5nZXRTaXplKCkpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChyZWFkQnVmZmVy
ID09IHdyaXRlQnVmZmVyICYmIHN0ZDo6YWJzKHJlYWRPZmZzZXQgLSB3cml0ZU9mZnNldCkgPCBz
aXplKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAg
ICAgICFWYWxpZGF0ZUNvcHlCdWZmZXJTdWJEYXRhKGNvbnRleHQsIHJlYWRUYXJnZXQsIHdyaXRl
VGFyZ2V0LCByZWFkT2Zmc2V0LCB3cml0ZU9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemUpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICAvLyBpZiBzaXplIGlzIHplcm8sIHRoZSBjb3B5IGlzIGEg
c3VjY2Vzc2Z1bCBuby1vcAotICAgICAgICBpZiAoc2l6ZSA+IDApCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEVycm9yIGVycm9yID0gd3JpdGVCdWZmZXItPmNvcHlCdWZmZXJTdWJEYXRhKHJlYWRC
dWZmZXIsIHJlYWRPZmZzZXQsIHdyaXRlT2Zmc2V0LCBzaXplKTsKLSAgICAgICAgICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5jb3B5QnVmZmVyU3ViRGF0YShyZWFkVGFy
Z2V0LCB3cml0ZVRhcmdldCwgcmVhZE9mZnNldCwgd3JpdGVPZmZzZXQsIHNpemUpOwogICAgIH0K
IH0KIApAQCAtMTcyMywxMiArMTQ2NCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0FycmF5c0lu
c3RhbmNlZChHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIEdMCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBFcnJvciBlcnJvciA9IGNvbnRl
eHQtPmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNvdW50LCBpbnN0YW5jZUNvdW50
KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9CisgICAgICAgIGNvbnRleHQtPmRyYXdBcnJheXNJbnN0YW5jZWQobW9kZSwgZmlyc3QsIGNv
dW50LCBpbnN0YW5jZUNvdW50KTsKICAgICB9CiB9CiAKQEAgLTE3NTIsMTMgKzE0ODgsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0luc3RhbmNlZChHTGVudW0gbW9kZSwgR0xzaXpl
aSBjb3VudCwgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBFcnJvciBlcnJvciA9Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVudHNJ
bnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIGluc3RhbmNlQ291bnQsIGluZGV4
UmFuZ2UpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNv
dW50LCB0eXBlLCBpbmRpY2VzLCBpbnN0YW5jZUNvdW50LCBpbmRleFJhbmdlKTsKICAgICB9CiB9
CiAKQEAgLTE5NzAsNDcgKzE3MDAsMTMgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRTeW5jaXYoR0xz
eW5jIHN5bmMsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpKgogICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8
IDMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAoYnVmU2l6ZSA8IDApCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlR2V0U3luY2l2KGNvbnRleHQsIHN5bmMs
IHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHZhbHVlcykpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIEZlbmNlU3luYyAqZmVuY2VTeW5jID0g
Y29udGV4dC0+Z2V0RmVuY2VTeW5jKHN5bmMpOwotCi0gICAgICAgIGlmICghZmVuY2VTeW5jKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBz
d2l0Y2ggKHBuYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9PQkpFQ1RfVFlQRTog
ICAgIHZhbHVlc1swXSA9IHN0YXRpY19jYXN0PEdMaW50PihHTF9TWU5DX0ZFTkNFKTsgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfU1lOQ19DT05ESVRJT046ICB2YWx1ZXNb
MF0gPSBzdGF0aWNfY2FzdDxHTGludD4oZmVuY2VTeW5jLT5nZXRDb25kaXRpb24oKSk7ICBicmVh
azsKLSAgICAgICAgICBjYXNlIEdMX1NZTkNfRkxBR1M6ICAgICAgdmFsdWVzWzBdID0gc3RhdGlj
X2Nhc3Q8R0xpbnQ+KGZlbmNlU3luYy0+Z2V0RmxhZ3MoKSk7ICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgICBjYXNlIEdMX1NZTkNfU1RBVFVTOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IEVycm9yIGVycm9yID0gZmVuY2VTeW5jLT5nZXRTdGF0dXModmFsdWVzKTsKLSAgICAgICAgICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+Z2V0U3luY2l2KHN5bmMsIHBuYW1lLCBidWZT
aXplLCBsZW5ndGgsIHZhbHVlcyk7CiAgICAgfQogfQogCkBAIC0yNDQ0LDcgKzIxNDAsNyBAQCB2
b2lkIEdMX0FQSUVOVFJZIEdldFByb2dyYW1CaW5hcnkoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xzaXplaSogbGVuZwogICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0g
Y29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKICAgICAgICAgQVNTRVJUKHByb2dyYW1PYmpl
Y3QgIT0gbnVsbHB0cik7CiAKLSAgICAgICAgRXJyb3IgZXJyb3IgPSBwcm9ncmFtT2JqZWN0LT5z
YXZlQmluYXJ5KGJpbmFyeUZvcm1hdCwgYmluYXJ5LCBidWZTaXplLCBsZW5ndGgpOworICAgICAg
ICBFcnJvciBlcnJvciA9IHByb2dyYW1PYmplY3QtPnNhdmVCaW5hcnkoY29udGV4dCwgYmluYXJ5
Rm9ybWF0LCBiaW5hcnksIGJ1ZlNpemUsIGxlbmd0aCk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGVycm9y
KTsKQEAgLTI0NjksNyArMjE2NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbUJpbmFyeShH
THVpbnQgcHJvZ3JhbSwgR0xlbnVtIGJpbmFyeUZvcm1hdCwgY29uc3QgR0x2b2lkCiAgICAgICAg
IFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOwog
ICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCAhPSBudWxscHRyKTsKIAotICAgICAgICBFcnJv
ciBlcnJvciA9IHByb2dyYW1PYmplY3QtPmxvYWRCaW5hcnkoYmluYXJ5Rm9ybWF0LCBiaW5hcnks
IGxlbmd0aCk7CisgICAgICAgIEVycm9yIGVycm9yID0gcHJvZ3JhbU9iamVjdC0+bG9hZEJpbmFy
eShjb250ZXh0LCBiaW5hcnlGb3JtYXQsIGJpbmFyeSwgbGVuZ3RoKTsKICAgICAgICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKICAgICAgICAgewogICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoZXJyb3IpOwpAQCAtMjU1NSw3ICsyMjUxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhTdG9y
YWdlMkQoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm0K
IAogICAgICAgICBFeHRlbnRzIHNpemUod2lkdGgsIGhlaWdodCwgMSk7CiAgICAgICAgIFRleHR1
cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7Ci0gICAgICAg
IEVycm9yIGVycm9yID0gdGV4dHVyZS0+c2V0U3RvcmFnZSh0YXJnZXQsIGxldmVscywgaW50ZXJu
YWxmb3JtYXQsIHNpemUpOworICAgICAgICBFcnJvciBlcnJvciAgICAgID0gdGV4dHVyZS0+c2V0
U3RvcmFnZShjb250ZXh0LCB0YXJnZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHNpemUpOwog
ICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CkBAIC0yNTg3LDcgKzIyODMsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFRleFN0b3JhZ2UzRChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxldmVscywgR0xlbnVt
IGludGVybmFsZm9ybQogCiAgICAgICAgIEV4dGVudHMgc2l6ZSh3aWR0aCwgaGVpZ2h0LCBkZXB0
aCk7CiAgICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJl
KHRhcmdldCk7Ci0gICAgICAgIEVycm9yIGVycm9yID0gdGV4dHVyZS0+c2V0U3RvcmFnZSh0YXJn
ZXQsIGxldmVscywgaW50ZXJuYWxmb3JtYXQsIHNpemUpOworICAgICAgICBFcnJvciBlcnJvciAg
ICAgID0gdGV4dHVyZS0+c2V0U3RvcmFnZShjb250ZXh0LCB0YXJnZXQsIGxldmVscywgaW50ZXJu
YWxmb3JtYXQsIHNpemUpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7
CiAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNf
MC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNf
Z2xlc18zXzAuaAppbmRleCA1ZGFhZTU1YTAzZWJlOTZjOWQ2ZjJhYjI1NmE3ZjFlNTE4MmU2YzQ0
Li4wOWNhMGU0NjQxMzE3ZjVjMzliNmJjYjJjMmI0YjdkNDgyMzVlNDYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNf
MC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9p
bnRzX2dsZXNfM18wLmgKQEAgLTksOCArOSw4IEBACiAjaWZuZGVmIExJQkdMRVNWMl9FTlRSWVBP
SU5UR0xFUzMwX0hfCiAjZGVmaW5lIExJQkdMRVNWMl9FTlRSWVBPSU5UR0xFUzMwX0hfCiAKLSNp
bmNsdWRlIDxBTkdMRS9nbDMuaD4KLSNpbmNsdWRlIDxBTkdMRS9leHBvcnQuaD4KKyNpbmNsdWRl
IDxHTEVTMy9nbDMuaD4KKyNpbmNsdWRlIDxleHBvcnQuaD4KIAogbmFtZXNwYWNlIGdsCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3Bv
aW50c19nbGVzXzNfMS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L2VudHJ5X3BvaW50c19nbGVzXzNfMS5jcHAKaW5kZXggYWUwNDA1ZTk5MmM1ODM0ZjY5NjQ5OWYy
ZDEyZjVlYTQ1ZDk3YmEzZC4uMWU0MTAwYjBhM2E0OTE4NmNlYWZkMjM5ZTU0MWJiYTc2NTgyNGY3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRy
eV9wb2ludHNfZ2xlc18zXzEuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18xLmNwcApAQCAtMTIsOSArMTIsMTMgQEAKICNp
bmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRXJyb3IuaCIK
IAorI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUy5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L3ZhbGlkYXRpb25FUzMxLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3F1ZXJ5dXRpbHMuaCIKIAogI2luY2x1ZGUgImNvbW1vbi9k
ZWJ1Zy5oIgorI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKIAogbmFtZXNwYWNlIGdsCiB7
CkBAIC0yNiwxMSArMzAsMTMgQEAgdm9pZCBHTF9BUElFTlRSWSBEaXNwYXRjaENvbXB1dGUoR0x1
aW50IG51bUdyb3Vwc1gsIEdMdWludCBudW1Hcm91cHNZLCBHTHVpbnQgbnUKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlm
ICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlRGlz
cGF0Y2hDb21wdXRlKGNvbnRleHQsIG51bUdyb3Vwc1gsIG51bUdyb3Vwc1ksIG51bUdyb3Vwc1op
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBVTklNUExFTUVOVEVEKCk7CisKKyAg
ICAgICAgY29udGV4dC0+ZGlzcGF0Y2hDb21wdXRlKG51bUdyb3Vwc1gsIG51bUdyb3Vwc1ksIG51
bUdyb3Vwc1opOwogICAgIH0KIH0KIApAQCAtNTQsMTEgKzYwLDEyIEBAIHZvaWQgR0xfQVBJRU5U
UlkgRHJhd0FycmF5c0luZGlyZWN0KEdMZW51bSBtb2RlLCBjb25zdCB2b2lkICppbmRpcmVjdCkK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkp
CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVEcmF3
QXJyYXlzSW5kaXJlY3QoY29udGV4dCwgbW9kZSwgaW5kaXJlY3QpKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
IkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICBVTklNUExFTUVOVEVEKCk7CisKKyAgICAgICAgY29udGV4dC0+ZHJh
d0FycmF5c0luZGlyZWN0KG1vZGUsIGluZGlyZWN0KTsKICAgICB9CiB9CiAKQEAgLTY4LDExICs3
NSwxMyBAQCB2b2lkIEdMX0FQSUVOVFJZIERyYXdFbGVtZW50c0luZGlyZWN0KEdMZW51bSBtb2Rl
LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaQogICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVEcmF3RWxlbWVudHNJbmRp
cmVjdChjb250ZXh0LCBtb2RlLCB0eXBlLCBpbmRpcmVjdCkpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50
cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKworICAgICAgICBjb250ZXh0LT5kcmF3RWxl
bWVudHNJbmRpcmVjdChtb2RlLCB0eXBlLCBpbmRpcmVjdCk7CiAgICAgfQogfQogCkBAIC04Miwx
MSArOTEsMTMgQEAgdm9pZCBHTF9BUElFTlRSWSBGcmFtZWJ1ZmZlclBhcmFtZXRlcmkoR0xlbnVt
IHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRpb25GcmFtZWJ1ZmZl
clBhcmFtZXRlcmkoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW0pKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBVTklNUExFTUVOVEVEKCk7CisKKyAgICAgICAgY29udGV4dC0+
c2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpKHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKICAgICB9CiB9
CiAKQEAgLTk3LDExICsxMDgsMTMgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRGcmFtZWJ1ZmZlclBh
cmFtZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnAKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRp
b25HZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcmkoY29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1z
KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworCisg
ICAgICAgIGNvbnRleHQtPmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwg
cGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTEzNCwxMSArMTQ3LDEyIEBAIEdMdWludCBHTF9BUElF
TlRSWSBHZXRQcm9ncmFtUmVzb3VyY2VJbmRleChHTHVpbnQgcHJvZ3JhbSwKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlm
ICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlR2V0
UHJvZ3JhbVJlc291cmNlSW5kZXgoY29udGV4dCwgcHJvZ3JhbSwgcHJvZ3JhbUludGVyZmFjZSwg
bmFtZSkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOwor
ICAgICAgICAgICAgcmV0dXJuIEdMX0lOVkFMSURfSU5ERVg7CiAgICAgICAgIH0KLSAgICAgICAg
VU5JTVBMRU1FTlRFRCgpOworICAgICAgICByZXR1cm4gY29udGV4dC0+Z2V0UHJvZ3JhbVJlc291
cmNlSW5kZXgocHJvZ3JhbSwgcHJvZ3JhbUludGVyZmFjZSwgbmFtZSk7CiAgICAgfQogICAgIHJl
dHVybiAwdTsKIH0KQEAgLTE1NywxMSArMTcxLDEzIEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJv
Z3JhbVJlc291cmNlTmFtZShHTHVpbnQgcHJvZ3JhbSwKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlmICghY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlR2V0UHJvZ3JhbVJlc291
cmNlTmFtZShjb250ZXh0LCBwcm9ncmFtLCBwcm9ncmFtSW50ZXJmYWNlLCBpbmRleCwgYnVmU2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLCBu
YW1lKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7Cisg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgICAgICBjb250ZXh0LT5nZXRQcm9ncmFtUmVzb3VyY2VOYW1lKHByb2dyYW0sIHByb2dyYW1J
bnRlcmZhY2UsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIG5hbWUpOwogICAgIH0KIH0KIApAQCAt
MjU5LDExICsyNzUsMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kUHJvZ3JhbVBpcGVsaW5lKEdM
dWludCBwaXBlbGluZSkKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlmIChwaXBlbGluZSAhPSAwKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgICAgIC8vIEJpbmRp
bmcgbm9uLXplcm8gcGlwZWxpbmVzIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgICAgICAg
ICBVTklNUExFTUVOVEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwog
ICAgIH0KIH0KIApAQCAtMzI3LDE5MyArMzQzLDc1IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJv
Z3JhbVBpcGVsaW5laXYoR0x1aW50IHBpcGVsaW5lLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJh
CiAKIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0xaShHTHVpbnQgcHJvZ3JhbSwgR0xp
bnQgbG9jYXRpb24sIEdMaW50IHYwKQogewotICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAl
dSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xpbnQgdjAgPSAlZCkiLCBwcm9ncmFtLCBsb2NhdGlv
biwgdjApOwotICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsK
LSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIH0KKyAgICBQcm9ncmFt
VW5pZm9ybTFpdihwcm9ncmFtLCBsb2NhdGlvbiwgMSwgJnYwKTsKIH0KIAogdm9pZCBHTF9BUElF
TlRSWSBQcm9ncmFtVW5pZm9ybTJpKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xp
bnQgdjAsIEdMaW50IHYxKQogewotICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xp
bnQgbG9jYXRpb24gPSAlZCwgR0xpbnQgdjAgPSAlZCwgR0xpbnQgdjEgPSAlZCkiLCBwcm9ncmFt
LAotICAgICAgICAgIGxvY2F0aW9uLCB2MCwgdjEpOwotICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKLSAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBw
b2ludCBub3QgaW1wbGVtZW50ZWQiKSk7Ci0gICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOwotICAgIH0KKyAgICBHTGludCB4eVsyXSA9IHt2MCwgdjF9OworICAgIFByb2dyYW1Vbmlm
b3JtMml2KHByb2dyYW0sIGxvY2F0aW9uLCAxLCB4eSk7CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkg
UHJvZ3JhbVVuaWZvcm0zaShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYw
LCBHTGludCB2MSwgR0xpbnQgdjIpCiB7Ci0gICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICV1
LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGludCB2MCA9ICVkLCBHTGludCB2MSA9ICVkLCBHTGlu
dCB2MiA9ICVkKSIsCi0gICAgICAgICAgcHJvZ3JhbSwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOwot
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBpZiAo
Y29udGV4dCkKLSAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkK
LSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIH0KKyAgICBHTGludCB4eXpbM10gPSB7
djAsIHYxLCB2Mn07CisgICAgUHJvZ3JhbVVuaWZvcm0zaXYocHJvZ3JhbSwgbG9jYXRpb24sIDEs
IHh5eik7CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkKIFByb2dyYW1Vbmlmb3JtNGkoR0x1aW50IHBy
b2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyLCBHTGlu
dCB2MykKIHsKLSAgICBFVkVOVCgKLSAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGlu
dCBsb2NhdGlvbiA9ICVkLCBHTGludCB2MCA9ICVkLCBHTGludCB2MSA9ICVkLCBHTGludCB2MiA9
ICVkLCAiCi0gICAgICAgICJHTGludCB2MyA9ICVkKSIsCi0gICAgICAgIHByb2dyYW0sIGxvY2F0
aW9uLCB2MCwgdjEsIHYyLCB2Myk7Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOwotICAgIGlmIChjb250ZXh0KQotICAgIHsKLSAgICAgICAgaWYgKCFjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBp
bXBsZW1lbnRlZCIpKTsKLSAgICAgICAgfQotICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAg
fQorICAgIEdMaW50IHh5endbNF0gPSB7djAsIHYxLCB2MiwgdjN9OworICAgIFByb2dyYW1Vbmlm
b3JtNGl2KHByb2dyYW0sIGxvY2F0aW9uLCAxLCB4eXp3KTsKIH0KIAogdm9pZCBHTF9BUElFTlRS
WSBQcm9ncmFtVW5pZm9ybTF1aShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWlu
dCB2MCkKIHsKLSAgICBFVkVOVCgiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9u
ID0gJWQsIEdMdWludCB2MCA9ICV1KSIsIHByb2dyYW0sIGxvY2F0aW9uLCB2MCk7Ci0gICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIGlmIChjb250ZXh0
KQotICAgIHsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKLSAgICAgICAgfQotICAg
ICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgfQorICAgIFByb2dyYW1Vbmlmb3JtMXVpdihwcm9n
cmFtLCBsb2NhdGlvbiwgMSwgJnYwKTsKIH0KIAogdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5p
Zm9ybTJ1aShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50
IHYxKQogewotICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24g
PSAlZCwgR0x1aW50IHYwID0gJXUsIEdMdWludCB2MSA9ICV1KSIsIHByb2dyYW0sCi0gICAgICAg
ICAgbG9jYXRpb24sIHYwLCB2MSk7Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOwotICAgIGlmIChjb250ZXh0KQotICAgIHsKLSAgICAgICAgaWYgKCFjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBp
bXBsZW1lbnRlZCIpKTsKLSAgICAgICAgfQotICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAg
fQorICAgIEdMdWludCB4eVsyXSA9IHt2MCwgdjF9OworICAgIFByb2dyYW1Vbmlmb3JtMnVpdihw
cm9ncmFtLCBsb2NhdGlvbiwgMSwgeHkpOwogfQogCiB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1V
bmlmb3JtM3VpKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVp
bnQgdjEsIEdMdWludCB2MikKIHsKLSAgICBFVkVOVCgKLSAgICAgICAgIihHTHVpbnQgcHJvZ3Jh
bSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTHVpbnQgdjAgPSAldSwgR0x1aW50IHYxID0g
JXUsIEdMdWludCB2MiA9ICIKLSAgICAgICAgIiV1KSIsCi0gICAgICAgIHByb2dyYW0sIGxvY2F0
aW9uLCB2MCwgdjEsIHYyKTsKLSAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7Ci0gICAgaWYgKGNvbnRleHQpCi0gICAgewotICAgICAgICBpZiAoIWNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxl
bWVudGVkIikpOwotICAgICAgICB9Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICB9Cisg
ICAgR0x1aW50IHh5elszXSA9IHt2MCwgdjEsIHYyfTsKKyAgICBQcm9ncmFtVW5pZm9ybTN1aXYo
cHJvZ3JhbSwgbG9jYXRpb24sIDEsIHh5eik7CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkKIFByb2dy
YW1Vbmlmb3JtNHVpKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBH
THVpbnQgdjEsIEdMdWludCB2MiwgR0x1aW50IHYzKQogewotICAgIEVWRU5UKAotICAgICAgICAi
KEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMdWludCB2MCA9ICV1
LCBHTHVpbnQgdjEgPSAldSwgR0x1aW50IHYyID0gIgotICAgICAgICAiJXUsIEdMdWludCB2MyA9
ICV1KSIsCi0gICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7Ci0gICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIGlmIChjb250
ZXh0KQotICAgIHsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKLSAgICAgICAgfQot
ICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgfQorICAgIEdMdWludCB4eXp3WzRdID0ge3Yw
LCB2MSwgdjIsIHYzfTsKKyAgICBQcm9ncmFtVW5pZm9ybTR1aXYocHJvZ3JhbSwgbG9jYXRpb24s
IDEsIHh5encpOwogfQogCiB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMWYoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwKQogewotICAgIEVWRU5UKCIoR0x1
aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCB2MCA9ICVnKSIs
IHByb2dyYW0sIGxvY2F0aW9uLCB2MCk7Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOwotICAgIGlmIChjb250ZXh0KQotICAgIHsKLSAgICAgICAgaWYgKCFj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5v
dCBpbXBsZW1lbnRlZCIpKTsKLSAgICAgICAgfQotICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0g
ICAgfQorICAgIFByb2dyYW1Vbmlmb3JtMWZ2KHByb2dyYW0sIGxvY2F0aW9uLCAxLCAmdjApOwog
fQogCiB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMmYoR0x1aW50IHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxKQogewotICAgIEVWRU5UKCIoR0x1
aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCB2MCA9ICVnLCBH
TGZsb2F0IHYxID0gJWcpIiwgcHJvZ3JhbSwKLSAgICAgICAgICBsb2NhdGlvbiwgdjAsIHYxKTsK
LSAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgaWYg
KGNvbnRleHQpCi0gICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOwotICAgICAg
ICB9Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICB9CisgICAgR0xmbG9hdCB4eVsyXSA9
IHt2MCwgdjF9OworICAgIFByb2dyYW1Vbmlmb3JtMmZ2KHByb2dyYW0sIGxvY2F0aW9uLCAxLCB4
eSk7CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkKIFByb2dyYW1Vbmlmb3JtM2YoR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyKQog
ewotICAgIEVWRU5UKAotICAgICAgICAiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0
aW9uID0gJWQsIEdMZmxvYXQgdjAgPSAlZywgR0xmbG9hdCB2MSA9ICVnLCBHTGZsb2F0IHYyID0g
IgotICAgICAgICAiJWcpIiwKLSAgICAgICAgcHJvZ3JhbSwgbG9jYXRpb24sIHYwLCB2MSwgdjIp
OwotICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBp
ZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIH0KKyAgICBHTGZsb2F0IHh5elsz
XSA9IHt2MCwgdjEsIHYyfTsKKyAgICBQcm9ncmFtVW5pZm9ybTNmdihwcm9ncmFtLCBsb2NhdGlv
biwgMSwgeHl6KTsKIH0KIAogdm9pZCBHTF9BUElFTlRSWQogUHJvZ3JhbVVuaWZvcm00ZihHTHVp
bnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxv
YXQgdjIsIEdMZmxvYXQgdjMpCiB7Ci0gICAgRVZFTlQoCi0gICAgICAgICIoR0x1aW50IHByb2dy
YW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCB2MCA9ICVnLCBHTGZsb2F0IHYx
ID0gJWcsIEdMZmxvYXQgdjIgPSAiCi0gICAgICAgICIlZywgR0xmbG9hdCB2MyA9ICVnKSIsCi0g
ICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7Ci0gICAgQ29udGV4dCAq
Y29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIGlmIChjb250ZXh0KQotICAg
IHsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKLSAgICAgICAgfQotICAgICAgICBV
TklNUExFTUVOVEVEKCk7Ci0gICAgfQorICAgIEdMZmxvYXQgeHl6d1s0XSA9IHt2MCwgdjEsIHYy
LCB2M307CisgICAgUHJvZ3JhbVVuaWZvcm00ZnYocHJvZ3JhbSwgbG9jYXRpb24sIDEsIHh5encp
OwogfQogCiB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMWl2KEdMdWludCBwcm9ncmFt
LApAQCAtNTI4LDExICs0MjYsMTQgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTFp
dihHTHVpbnQgcHJvZ3JhbSwKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlmICghVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFp
dihjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsIHZhbHVlKSkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworCisgICAgICAgIFByb2dyYW0g
KnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBB
U1NFUlQocHJvZ3JhbU9iamVjdCk7CisgICAgICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZvcm0x
aXYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC01NDgsMTEgKzQ0OSwx
NCBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMml2KEdMdWludCBwcm9ncmFtLAog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkK
KyAgICAgICAgaWYgKCFWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtKGNvbnRleHQsIEdMX0lOVF9WRUMy
LCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50
IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAg
ICAgICBVTklNUExFTUVOVEVEKCk7CisKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9
IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIEFTU0VSVChwcm9ncmFtT2Jq
ZWN0KTsKKyAgICAgICAgcHJvZ3JhbU9iamVjdC0+c2V0VW5pZm9ybTJpdihsb2NhdGlvbiwgY291
bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTU2OCwxMSArNDcyLDE0IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgUHJvZ3JhbVVuaWZvcm0zaXYoR0x1aW50IHByb2dyYW0sCiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICBpZiAoIVZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm0oY29udGV4dCwgR0xfSU5UX1ZFQzMsIHByb2dyYW0sIGxvY2F0
aW9uLCBjb3VudCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVk
IikpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIFVOSU1QTEVNRU5U
RUQoKTsKKworICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJv
Z3JhbShwcm9ncmFtKTsKKyAgICAgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOworICAgICAgICBw
cm9ncmFtT2JqZWN0LT5zZXRVbmlmb3JtM2l2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwogICAg
IH0KIH0KIApAQCAtNTg4LDExICs0OTUsMTQgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5p
Zm9ybTRpdihHTHVpbnQgcHJvZ3JhbSwKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIWNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlmICghVmFsaWRhdGVQcm9ncmFtVW5p
Zm9ybShjb250ZXh0LCBHTF9JTlRfVkVDNCwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50KSkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworCisgICAgICAg
IFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOwor
ICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CisgICAgICAgIHByb2dyYW1PYmplY3QtPnNl
dFVuaWZvcm00aXYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC02MDgs
MTEgKzUxOCwxNCBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtMXVpdihHTHVpbnQg
cHJvZ3JhbSwKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkpCisgICAgICAgIGlmICghVmFsaWRhdGVQcm9ncmFtVW5pZm9ybShjb250ZXh0LCBH
TF9VTlNJR05FRF9JTlQsIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCkpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKworICAgICAgICBQcm9ncmFtICpw
cm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgQVNT
RVJUKHByb2dyYW1PYmplY3QpOworICAgICAgICBwcm9ncmFtT2JqZWN0LT5zZXRVbmlmb3JtMXVp
dihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTYyOCwxMSArNTQxLDE0
IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0ydWl2KEdMdWludCBwcm9ncmFtLAog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkK
KyAgICAgICAgaWYgKCFWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtKGNvbnRleHQsIEdMX1VOU0lHTkVE
X0lOVF9WRUMyLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQpKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVu
dHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQotICAgICAgICBVTklNUExFTUVOVEVEKCk7CisKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3Jh
bU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIEFTU0VSVChw
cm9ncmFtT2JqZWN0KTsKKyAgICAgICAgcHJvZ3JhbU9iamVjdC0+c2V0VW5pZm9ybTJ1aXYobG9j
YXRpb24sIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC02NDgsMTEgKzU2NCwxNCBAQCB2
b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtM3VpdihHTHVpbnQgcHJvZ3JhbSwKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAg
ICAgIGlmICghVmFsaWRhdGVQcm9ncmFtVW5pZm9ybShjb250ZXh0LCBHTF9VTlNJR05FRF9JTlRf
VkVDMywgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50KSkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBw
b2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
LSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworCisgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmpl
Y3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBBU1NFUlQocHJvZ3Jh
bU9iamVjdCk7CisgICAgICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZvcm0zdWl2KGxvY2F0aW9u
LCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtNjY4LDExICs1ODcsMTQgQEAgdm9pZCBH
TF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTR1aXYoR0x1aW50IHByb2dyYW0sCiAgICAgQ29udGV4
dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICBp
ZiAoIVZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0oY29udGV4dCwgR0xfVU5TSUdORURfSU5UX1ZFQzQs
IHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQg
bm90IGltcGxlbWVudGVkIikpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAg
ICAgIFVOSU1QTEVNRU5URUQoKTsKKworICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0g
Y29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgQVNTRVJUKHByb2dyYW1PYmpl
Y3QpOworICAgICAgICBwcm9ncmFtT2JqZWN0LT5zZXRVbmlmb3JtNHVpdihsb2NhdGlvbiwgY291
bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTY4OCwxMSArNjEwLDE0IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgUHJvZ3JhbVVuaWZvcm0xZnYoR0x1aW50IHByb2dyYW0sCiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICBpZiAoIVZh
bGlkYXRlUHJvZ3JhbVVuaWZvcm0oY29udGV4dCwgR0xfRkxPQVQsIHByb2dyYW0sIGxvY2F0aW9u
LCBjb3VudCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikp
OworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIFVOSU1QTEVNRU5URUQo
KTsKKworICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3Jh
bShwcm9ncmFtKTsKKyAgICAgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOworICAgICAgICBwcm9n
cmFtT2JqZWN0LT5zZXRVbmlmb3JtMWZ2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwogICAgIH0K
IH0KIApAQCAtNzA4LDExICs2MzMsMTQgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9y
bTJmdihHTHVpbnQgcHJvZ3JhbSwKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlmICghVmFsaWRhdGVQcm9ncmFtVW5pZm9y
bShjb250ZXh0LCBHTF9GTE9BVF9WRUMyLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQpKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQotICAgICAgICBVTklNUExFTUVOVEVEKCk7CisKKyAgICAgICAg
UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7Cisg
ICAgICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKKyAgICAgICAgcHJvZ3JhbU9iamVjdC0+c2V0
VW5pZm9ybTJmdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTcyOCwx
MSArNjU2LDE0IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0zZnYoR0x1aW50IHBy
b2dyYW0sCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRh
dGlvbigpKQorICAgICAgICBpZiAoIVZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0oY29udGV4dCwgR0xf
RkxPQVRfVkVDMywgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50KSkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJF
bnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworCisgICAgICAgIFByb2dyYW0gKnByb2dy
YW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBBU1NFUlQo
cHJvZ3JhbU9iamVjdCk7CisgICAgICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZvcm0zZnYobG9j
YXRpb24sIGNvdW50LCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC03NDgsMTEgKzY3OSwxNCBAQCB2
b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtNGZ2KEdMdWludCBwcm9ncmFtLAogICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAg
ICAgaWYgKCFWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtKGNvbnRleHQsIEdMX0ZMT0FUX1ZFQzQsIHBy
b2dyYW0sIGxvY2F0aW9uLCBjb3VudCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90
IGltcGxlbWVudGVkIikpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAg
IFVOSU1QTEVNRU5URUQoKTsKKworICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29u
dGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgQVNTRVJUKHByb2dyYW1PYmplY3Qp
OworICAgICAgICBwcm9ncmFtT2JqZWN0LT5zZXRVbmlmb3JtNGZ2KGxvY2F0aW9uLCBjb3VudCwg
dmFsdWUpOwogICAgIH0KIH0KIApAQCAtNzY5LDExICs3MDMsMTUgQEAgdm9pZCBHTF9BUElFTlRS
WSBQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdihHTHVpbnQgcHJvZ3JhbSwKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlmICgh
VmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeChjb250ZXh0LCBHTF9GTE9BVF9NQVQyLCBwcm9n
cmFtLCBsb2NhdGlvbiwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0cmFuc3Bvc2UpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBs
ZW1lbnRlZCIpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBVTklN
UExFTUVOVEVEKCk7CisKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQt
PmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKKyAg
ICAgICAgcHJvZ3JhbU9iamVjdC0+c2V0VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtNzkwLDExICs3MjgsMTUgQEAgdm9p
ZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdihHTHVpbnQgcHJvZ3JhbSwKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisg
ICAgICAgIGlmICghVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeChjb250ZXh0LCBHTF9GTE9B
VF9NQVQzLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UpKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBv
aW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
ICAgICAgICBVTklNUExFTUVOVEVEKCk7CisKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVj
dCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIEFTU0VSVChwcm9ncmFt
T2JqZWN0KTsKKyAgICAgICAgcHJvZ3JhbU9iamVjdC0+c2V0VW5pZm9ybU1hdHJpeDNmdihsb2Nh
dGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtODExLDExICs3
NTMsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdihHTHVpbnQg
cHJvZ3JhbSwKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkpCisgICAgICAgIGlmICghVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeChjb250
ZXh0LCBHTF9GTE9BVF9NQVQ0LCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBVTklNUExFTUVOVEVEKCk7CisKKyAgICAgICAgUHJvZ3JhbSAq
cHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIEFT
U0VSVChwcm9ncmFtT2JqZWN0KTsKKyAgICAgICAgcHJvZ3JhbU9iamVjdC0+c2V0VW5pZm9ybU1h
dHJpeDRmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApA
QCAtODMyLDExICs3NzgsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJp
eDJ4M2Z2KEdMdWludCBwcm9ncmFtLAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtTWF0cml4KGNvbnRleHQsIEdMX0ZMT0FUX01BVDJ4MywgcHJvZ3JhbSwgbG9jYXRpb24sIGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3Nl
KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworCisg
ICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dy
YW0pOworICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CisgICAgICAgIHByb2dyYW1PYmpl
Y3QtPnNldFVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpOwogICAgIH0KIH0KIApAQCAtODUzLDExICs4MDMsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBQ
cm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2KEdMdWludCBwcm9ncmFtLAogICAgIENvbnRleHQgKmNv
bnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgaWYgKCFW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4KGNvbnRleHQsIEdMX0ZMT0FUX01BVDN4MiwgcHJv
Z3JhbSwgbG9jYXRpb24sIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdHJhbnNwb3NlKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1w
bGVtZW50ZWQiKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgVU5J
TVBMRU1FTlRFRCgpOworCisgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0
LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7Cisg
ICAgICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgY291
bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtODc0LDExICs4MjgsMTUgQEAg
dm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4NGZ2KEdMdWludCBwcm9ncmFt
LAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSkKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4KGNvbnRleHQsIEdM
X0ZMT0FUX01BVDJ4NCwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlKSkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJF
bnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworCisgICAgICAgIFByb2dyYW0gKnByb2dy
YW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBBU1NFUlQo
cHJvZ3JhbU9iamVjdCk7CisgICAgICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZvcm1NYXRyaXgy
eDRmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAt
ODk1LDExICs4NTMsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDR4
MmZ2KEdMdWludCBwcm9ncmFtLAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVByb2dyYW1Vbmlmb3Jt
TWF0cml4KGNvbnRleHQsIEdMX0ZMT0FUX01BVDR4MiwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlKSkK
ICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworCisgICAg
ICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0p
OworICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CisgICAgICAgIHByb2dyYW1PYmplY3Qt
PnNldFVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
OwogICAgIH0KIH0KIApAQCAtOTE2LDExICs4NzgsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9n
cmFtVW5pZm9ybU1hdHJpeDN4NGZ2KEdMdWludCBwcm9ncmFtLAogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgaWYgKCFWYWxp
ZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4KGNvbnRleHQsIEdMX0ZMT0FUX01BVDN4NCwgcHJvZ3Jh
bSwgbG9jYXRpb24sIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdHJhbnNwb3NlKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVt
ZW50ZWQiKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOworCisgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5n
ZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CisgICAg
ICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgY291bnQs
IHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtOTM3LDExICs5MDMsMTUgQEAgdm9p
ZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2KEdMdWludCBwcm9ncmFtLAog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkK
KyAgICAgICAgaWYgKCFWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4KGNvbnRleHQsIEdMX0ZM
T0FUX01BVDR4MywgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlKSkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRy
eSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworCisgICAgICAgIFByb2dyYW0gKnByb2dyYW1P
YmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBBU1NFUlQocHJv
Z3JhbU9iamVjdCk7CisgICAgICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZvcm1NYXRyaXg0eDNm
dihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtOTk0
LDExICs5NjQsMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kSW1hZ2VUZXh0dXJlKEdMdWludCB1
bml0LAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSkKKyAgICAgICAgaWYgKHRleHR1cmUgIT0gMCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBw
b2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgICAgICAvLyBCaW5kaW5nIG5vbi16ZXJv
IGltYWdlIHRleHR1cmVzIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgICAgICAgICBVTklN
UExFTUVOVEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIH0K
IH0KIApAQCAtMTA2MCwxOCArMTAzMCwzMSBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2Uy
RE11bHRpc2FtcGxlKEdMZW51bSB0YXJnZXQsCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYg
KCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZVRleFN0b3JhZ2UyRE11bHRpU2Ft
cGxlKGNvbnRleHQsIHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBmaXhlZHNh
bXBsZWxvY2F0aW9ucykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVu
dGVkIikpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIFVOSU1QTEVN
RU5URUQoKTsKKyAgICAgICAgY29udGV4dC0+dGV4U3RvcmFnZTJETXVsdGlzYW1wbGUodGFyZ2V0
LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4ZWRzYW1wbGVsb2NhdGlvbnMpOwogICAgIH0K
IH0KIAogdm9pZCBHTF9BUElFTlRSWSBHZXRNdWx0aXNhbXBsZWZ2KEdMZW51bSBwbmFtZSwgR0x1
aW50IGluZGV4LCBHTGZsb2F0ICp2YWwpCiB7CiAgICAgRVZFTlQoIihHTGVudW0gcG5hbWUgPSAw
eCVYLCBHTHVpbnQgaW5kZXggPSAldSwgR0xmbG9hdCogdmFsID0gMHglMC44cCkiLCBwbmFtZSwg
aW5kZXgsIHZhbCk7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworCisgICAgQ29udGV4dCAqY29udGV4
dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAg
ICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUdldE11bHRp
c2FtcGxlZnYoY29udGV4dCwgcG5hbWUsIGluZGV4LCB2YWwpKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT5nZXRNdWx0aXNhbXBs
ZWZ2KHBuYW1lLCBpbmRleCwgdmFsKTsKKyAgICB9CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgU2Ft
cGxlTWFza2koR0x1aW50IG1hc2tOdW1iZXIsIEdMYml0ZmllbGQgbWFzaykKQEAgLTEwODAsMTEg
KzEwNjMsMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBTYW1wbGVNYXNraShHTHVpbnQgbWFza051bWJl
ciwgR0xiaXRmaWVsZCBtYXNrKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgaWYgKG1hc2sgIT0gfkdMYml0ZmllbGQoMCkp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAg
ICAgICAgLy8gU2V0dGluZyBhIG5vbi1kZWZhdWx0IHNhbXBsZSBtYXNrIGlzIG5vdCBpbXBsZW1l
bnRlZCB5ZXQuCisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgICAgIH0KLSAgICAg
ICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIH0KIH0KIApAQCAtMTA5Miw3ICsxMDc1LDIwIEBAIHZv
aWQgR0xfQVBJRU5UUlkgR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGlu
dCBsZXZlbCwgR0xlbnVtIHBuYW1lCiB7CiAgICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHgl
WCwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xlbnVtIHBuYW1lID0gMHglWCwgR0xpbnQqIHBhcmFtcyA9
IDB4JTAuOHApIiwKICAgICAgICAgICB0YXJnZXQsIGxldmVsLCBwbmFtZSwgcGFyYW1zKTsKLSAg
ICBVTklNUExFTUVOVEVEKCk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZUdldFRleExldmVs
UGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgcG5hbWUsIHBhcmFtcykpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFRleHR1cmUg
KnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKAorICAgICAgICAgICAgSXNDdWJl
TWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpID8gR0xfVEVYVFVSRV9DVUJFX01BUCA6IHRhcmdldCk7
CisgICAgICAgIFF1ZXJ5VGV4TGV2ZWxQYXJhbWV0ZXJpdih0ZXh0dXJlLCB0YXJnZXQsIGxldmVs
LCBwbmFtZSwgcGFyYW1zKTsKKyAgICB9CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4TGV2
ZWxQYXJhbWV0ZXJmdihHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lLCBH
TGZsb2F0ICpwYXJhbXMpCkBAIC0xMTAwLDE0ICsxMDk2LDE5IEBAIHZvaWQgR0xfQVBJRU5UUlkg
R2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdihHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVt
IHBuYW1lCiAgICAgRVZFTlQoCiAgICAgICAgICIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMaW50
IGxldmVsID0gJWQsIEdMZW51bSBwbmFtZSA9IDB4JVgsIEdMZmxvYXQqIHBhcmFtcyA9IDB4JTAu
OHApIiwKICAgICAgICAgdGFyZ2V0LCBsZXZlbCwgcG5hbWUsIHBhcmFtcyk7CisKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRl
R2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdihjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBwbmFtZSwgcGFy
YW1zKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7Cisg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
CisgICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKAor
ICAgICAgICAgICAgSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpID8gR0xfVEVYVFVSRV9D
VUJFX01BUCA6IHRhcmdldCk7CisgICAgICAgIFF1ZXJ5VGV4TGV2ZWxQYXJhbWV0ZXJmdih0ZXh0
dXJlLCB0YXJnZXQsIGxldmVsLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTExMjIs
MTEgKzExMjMsMTMgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kVmVydGV4QnVmZmVyKEdMdWludCBi
aW5kaW5naW5kZXgsCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYK
KyAgICAgICAgICAgICFWYWxpZGF0ZUJpbmRWZXJ0ZXhCdWZmZXIoY29udGV4dCwgYmluZGluZ2lu
ZGV4LCBidWZmZXIsIG9mZnNldCwgc3RyaWRlKSkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2lu
dCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgVU5JTVBMRU1FTlRFRCgpOworCisgICAgICAgIGNvbnRleHQtPmJpbmRWZXJ0ZXhCdWZm
ZXIoYmluZGluZ2luZGV4LCBidWZmZXIsIG9mZnNldCwgc3RyaWRlKTsKICAgICB9CiB9CiAKQEAg
LTExNDMsMTEgKzExNDYsMTMgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJGb3JtYXQo
R0x1aW50IGF0dHJpYmluZGV4LAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlv
bigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVWZXJ0ZXhBdHRyaWJGb3JtYXQoY29udGV4dCwg
YXR0cmliaW5kZXgsIHNpemUsIHR5cGUsIHJlbGF0aXZlb2Zmc2V0LCBmYWxzZSkpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKworICAgICAgICBjb250
ZXh0LT52ZXJ0ZXhBdHRyaWJGb3JtYXQoYXR0cmliaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6
ZWQsIHJlbGF0aXZlb2Zmc2V0KTsKICAgICB9CiB9CiAKQEAgLTExNjMsMTEgKzExNjgsMTMgQEAg
dm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJJRm9ybWF0KEdMdWludCBhdHRyaWJpbmRleCwK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkp
CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAg
IVZhbGlkYXRlVmVydGV4QXR0cmliRm9ybWF0KGNvbnRleHQsIGF0dHJpYmluZGV4LCBzaXplLCB0
eXBlLCByZWxhdGl2ZW9mZnNldCwgdHJ1ZSkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQg
bm90IGltcGxlbWVudGVkIikpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAg
ICAgIFVOSU1QTEVNRU5URUQoKTsKKworICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJJRm9y
bWF0KGF0dHJpYmluZGV4LCBzaXplLCB0eXBlLCByZWxhdGl2ZW9mZnNldCk7CiAgICAgfQogfQog
CkBAIC0xMTc3LDExICsxMTg0LDEzIEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliQmlu
ZGluZyhHTHVpbnQgYXR0cmliaW5kZXgsIEdMdWludCBiaW5kaW5naW5kZXgpCiAgICAgQ29udGV4
dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQog
ICAgIHsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICBp
ZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZVZl
cnRleEF0dHJpYkJpbmRpbmcoY29udGV4dCwgYXR0cmliaW5kZXgsIGJpbmRpbmdpbmRleCkpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKworICAgICAg
ICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJCaW5kaW5nKGF0dHJpYmluZGV4LCBiaW5kaW5naW5kZXgp
OwogICAgIH0KIH0KIApAQCAtMTE5MSwxMSArMTIwMCwxMyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZl
cnRleEJpbmRpbmdEaXZpc29yKEdMdWludCBiaW5kaW5naW5kZXgsIEdMdWludCBkaXZpc29yKQog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkK
KyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAh
VmFsaWRhdGVWZXJ0ZXhCaW5kaW5nRGl2aXNvcihjb250ZXh0LCBiaW5kaW5naW5kZXgsIGRpdmlz
b3IpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBVTklNUExFTUVOVEVEKCk7CisK
KyAgICAgICAgY29udGV4dC0+c2V0VmVydGV4QmluZGluZ0Rpdmlzb3IoYmluZGluZ2luZGV4LCBk
aXZpc29yKTsKICAgICB9CiB9CiB9ICAvLyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18xLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVz
XzNfMS5oCmluZGV4IDRiNDRhYTcwOTBjODkxOGE0MjgzODQ2NmRkNzZkODcxZjc2YTdmMDkuLjE1
MDBmZGVlODRkOTRhYWJiY2ZjZmU4YTMzN2JhZDgyOGM3OTc4NGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18xLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNf
Z2xlc18zXzEuaApAQCAtOSw4ICs5LDggQEAKICNpZm5kZWYgTElCR0xFU1YyX0VOVFJZUE9JTlRH
TEVTMzFfSF8KICNkZWZpbmUgTElCR0xFU1YyX0VOVFJZUE9JTlRHTEVTMzFfSF8KIAotI2luY2x1
ZGUgPEFOR0xFL2dsMzEuaD4KLSNpbmNsdWRlIDxBTkdMRS9leHBvcnQuaD4KKyNpbmNsdWRlIDxH
TEVTMy9nbDMxLmg+CisjaW5jbHVkZSA8ZXhwb3J0Lmg+CiAKIC8vIHdlIGluY2x1ZGUgdGhlIHBs
YXRmb3JtLmggaGVhZGVyIHNpbmNlIGl0IHVuZGVmaW5lcyB0aGUgY29uZmxpY3RpbmcgTWVtb3J5
QmFycmllciBtYWNybwogI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9nbG9iYWxfc3RhdGUuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9nbG9iYWxfc3RhdGUuY3BwCmlu
ZGV4IGZhNjgxYmRlMWYyMTM2MWVkNjk1OGZlM2FhOWYyMzc5OTQwOGE0NTEuLmM1ZjNkZmU0ZTEy
Njk1Y2ExZTk0ZjVlMzI1YzhhZjE0Nzc1NDBmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZ2xvYmFsX3N0YXRlLmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5jcHAKQEAgLTgsMjI5ICs4
LDE0MSBAQAogCiAjaW5jbHVkZSAibGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5oIgogCi0jaW5jbHVk
ZSAibGliQU5HTEUvQ29udGV4dC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCi0KICNp
bmNsdWRlICJjb21tb24vZGVidWcuaCIKICNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0uaCIKICNp
bmNsdWRlICJjb21tb24vdGxzLmgiCiAKLW5hbWVzcGFjZQotewotCi1zdGF0aWMgVExTSW5kZXgg
Y3VycmVudFRMUyA9IFRMU19JTlZBTElEX0lOREVYOwotCi1zdHJ1Y3QgQ3VycmVudAotewotICAg
IEVHTGludCBlcnJvcjsKLSAgICBFR0xlbnVtIEFQSTsKLSAgICBlZ2w6OkRpc3BsYXkgKmRpc3Bs
YXk7Ci0gICAgZWdsOjpTdXJmYWNlICpkcmF3U3VyZmFjZTsKLSAgICBlZ2w6OlN1cmZhY2UgKnJl
YWRTdXJmYWNlOwotICAgIGdsOjpDb250ZXh0ICpjb250ZXh0OwotfTsKLQotQ3VycmVudCAqQWxs
b2NhdGVDdXJyZW50KCkKLXsKLSAgICBBU1NFUlQoY3VycmVudFRMUyAhPSBUTFNfSU5WQUxJRF9J
TkRFWCk7Ci0gICAgaWYgKGN1cnJlbnRUTFMgPT0gVExTX0lOVkFMSURfSU5ERVgpCi0gICAgewot
ICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBDdXJyZW50ICpjdXJyZW50ID0gbmV3
IEN1cnJlbnQoKTsKLSAgICBjdXJyZW50LT5lcnJvciA9IEVHTF9TVUNDRVNTOwotICAgIGN1cnJl
bnQtPkFQSSA9IEVHTF9PUEVOR0xfRVNfQVBJOwotICAgIGN1cnJlbnQtPmRpc3BsYXkgPSByZWlu
dGVycHJldF9jYXN0PGVnbDo6RGlzcGxheSo+KEVHTF9OT19ESVNQTEFZKTsKLSAgICBjdXJyZW50
LT5kcmF3U3VyZmFjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZWdsOjpTdXJmYWNlKj4oRUdMX05PX1NV
UkZBQ0UpOwotICAgIGN1cnJlbnQtPnJlYWRTdXJmYWNlID0gcmVpbnRlcnByZXRfY2FzdDxlZ2w6
OlN1cmZhY2UqPihFR0xfTk9fU1VSRkFDRSk7Ci0gICAgY3VycmVudC0+Y29udGV4dCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Z2w6OkNvbnRleHQqPihFR0xfTk9fQ09OVEVYVCk7Ci0KLSAgICBpZiAoIVNl
dFRMU1ZhbHVlKGN1cnJlbnRUTFMsIGN1cnJlbnQpKQotICAgIHsKLSAgICAgICAgRVJSKCJDb3Vs
ZCBub3Qgc2V0IHRocmVhZCBsb2NhbCBzdG9yYWdlLiIpOwotICAgICAgICByZXR1cm4gTlVMTDsK
LSAgICB9CisjaW5jbHVkZSAibGliQU5HTEUvVGhyZWFkLmgiCiAKLSAgICByZXR1cm4gY3VycmVu
dDsKLX0KLQotQ3VycmVudCAqR2V0Q3VycmVudERhdGEoKQorbmFtZXNwYWNlIGdsCiB7Ci0gICAg
Ly8gQ3JlYXRlIGEgVExTIGluZGV4IGlmIG9uZSBoYXMgbm90IGJlZW4gY3JlYXRlZCBmb3IgdGhp
cyBETEwKLSAgICBpZiAoY3VycmVudFRMUyA9PSBUTFNfSU5WQUxJRF9JTkRFWCkKLSAgICB7Ci0g
ICAgICAgIGN1cnJlbnRUTFMgPSBDcmVhdGVUTFNJbmRleCgpOwotICAgIH0KIAotICAgIEN1cnJl
bnQgKmN1cnJlbnQgPSByZWludGVycHJldF9jYXN0PEN1cnJlbnQqPihHZXRUTFNWYWx1ZShjdXJy
ZW50VExTKSk7Ci0KLSAgICAvLyBBTkdMRSBpc3N1ZSA0ODg6IHdoZW4gdGhlIGRsbCBpcyBsb2Fk
ZWQgYWZ0ZXIgdGhyZWFkIGluaXRpYWxpemF0aW9uLAotICAgIC8vIHRocmVhZCBsb2NhbCBzdG9y
YWdlIChjdXJyZW50KSBtaWdodCBub3QgZXhpc3QgeWV0LgotICAgIHJldHVybiAoY3VycmVudCA/
IGN1cnJlbnQgOiBBbGxvY2F0ZUN1cnJlbnQoKSk7Ci19Ci0KLSNpZmRlZiBBTkdMRV9QTEFURk9S
TV9XSU5ET1dTCi0KLXZvaWQgRGVhbGxvY2F0ZUN1cnJlbnQoKQorQ29udGV4dCAqR2V0R2xvYmFs
Q29udGV4dCgpCiB7Ci0gICAgQ3VycmVudCAqY3VycmVudCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q3Vy
cmVudCo+KEdldFRMU1ZhbHVlKGN1cnJlbnRUTFMpKTsKLSAgICBTYWZlRGVsZXRlKGN1cnJlbnQp
OwotICAgIFNldFRMU1ZhbHVlKGN1cnJlbnRUTFMsIE5VTEwpOworICAgIGVnbDo6VGhyZWFkICp0
aHJlYWQgPSBlZ2w6OkdldEN1cnJlbnRUaHJlYWQoKTsKKyAgICByZXR1cm4gdGhyZWFkLT5nZXRD
b250ZXh0KCk7CiB9CiAKLWV4dGVybiAiQyIgQk9PTCBXSU5BUEkgRGxsTWFpbihISU5TVEFOQ0Us
IERXT1JEIHJlYXNvbiwgTFBWT0lEKQorQ29udGV4dCAqR2V0VmFsaWRHbG9iYWxDb250ZXh0KCkK
IHsKLSAgICBzd2l0Y2ggKHJlYXNvbikKLSAgICB7Ci0gICAgICBjYXNlIERMTF9QUk9DRVNTX0FU
VEFDSDoKLSAgICAgICAgY3VycmVudFRMUyA9IENyZWF0ZVRMU0luZGV4KCk7Ci0gICAgICAgIGlm
IChjdXJyZW50VExTID09IFRMU19JTlZBTElEX0lOREVYKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gRkFMU0U7Ci0gICAgICAgIH0KLSAgICAgICAgQWxsb2NhdGVDdXJyZW50KCk7Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIERMTF9USFJFQURfQVRUQUNIOgotICAgICAgICBB
bGxvY2F0ZUN1cnJlbnQoKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRExMX1RIUkVB
RF9ERVRBQ0g6Ci0gICAgICAgIERlYWxsb2NhdGVDdXJyZW50KCk7Ci0gICAgICAgIGJyZWFrOwot
Ci0gICAgICBjYXNlIERMTF9QUk9DRVNTX0RFVEFDSDoKLSAgICAgICAgRGVhbGxvY2F0ZUN1cnJl
bnQoKTsKLSAgICAgICAgaWYgKGN1cnJlbnRUTFMgIT0gVExTX0lOVkFMSURfSU5ERVgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIERlc3Ryb3lUTFNJbmRleChjdXJyZW50VExTKTsKLSAgICAgICAg
ICAgIGN1cnJlbnRUTFMgPSBUTFNfSU5WQUxJRF9JTkRFWDsKLSAgICAgICAgfQotICAgICAgICBi
cmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4gVFJVRTsKKyAgICBlZ2w6OlRocmVhZCAqdGhyZWFk
ID0gZWdsOjpHZXRDdXJyZW50VGhyZWFkKCk7CisgICAgcmV0dXJuIHRocmVhZC0+Z2V0VmFsaWRD
b250ZXh0KCk7CiB9Ci0jZW5kaWYKIAotfQorfSAgLy8gbmFtZXNwYWNlIGdsCiAKLW5hbWVzcGFj
ZSBnbAorbmFtZXNwYWNlIGVnbAogewogCi1Db250ZXh0ICpHZXRHbG9iYWxDb250ZXh0KCkKK25h
bWVzcGFjZQogewotICAgIEN1cnJlbnQgKmN1cnJlbnQgPSBHZXRDdXJyZW50RGF0YSgpOwogCi0g
ICAgcmV0dXJuIGN1cnJlbnQtPmNvbnRleHQ7Ci19CitzdGF0aWMgVExTSW5kZXggdGhyZWFkVExT
ID0gVExTX0lOVkFMSURfSU5ERVg7CiAKLUNvbnRleHQgKkdldFZhbGlkR2xvYmFsQ29udGV4dCgp
CitUaHJlYWQgKkFsbG9jYXRlQ3VycmVudFRocmVhZCgpCiB7Ci0gICAgZ2w6OkNvbnRleHQgKmNv
bnRleHQgPSBHZXRHbG9iYWxDb250ZXh0KCk7Ci0gICAgaWYgKGNvbnRleHQpCisgICAgQVNTRVJU
KHRocmVhZFRMUyAhPSBUTFNfSU5WQUxJRF9JTkRFWCk7CisgICAgaWYgKHRocmVhZFRMUyA9PSBU
TFNfSU5WQUxJRF9JTkRFWCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5pc0NvbnRleHRM
b3N0KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGdsOjpF
cnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiQ29udGV4dCBoYXMgYmVlbiBsb3N0LiIpKTsKLSAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQ7Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgVGhyZWFkICp0aHJlYWQgPSBuZXcgVGhyZWFkKCk7Cisg
ICAgaWYgKCFTZXRUTFNWYWx1ZSh0aHJlYWRUTFMsIHRocmVhZCkpCisgICAgeworICAgICAgICBF
UlIoKSA8PCAiQ291bGQgbm90IHNldCB0aHJlYWQgbG9jYWwgc3RvcmFnZS4iOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19CiAKKyAgICByZXR1
cm4gdGhyZWFkOwogfQogCi1uYW1lc3BhY2UgZWdsCi17Cit9ICAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCiAKLXZvaWQgU2V0R2xvYmFsRXJyb3IoY29uc3QgRXJyb3IgJmVycm9yKQorVGhyZWFkICpH
ZXRDdXJyZW50VGhyZWFkKCkKIHsKLSAgICBDdXJyZW50ICpjdXJyZW50ID0gR2V0Q3VycmVudERh
dGEoKTsKLQotICAgIGN1cnJlbnQtPmVycm9yID0gZXJyb3IuZ2V0Q29kZSgpOwotfQorICAgIC8v
IENyZWF0ZSBhIFRMUyBpbmRleCBpZiBvbmUgaGFzIG5vdCBiZWVuIGNyZWF0ZWQgZm9yIHRoaXMg
RExMCisgICAgaWYgKHRocmVhZFRMUyA9PSBUTFNfSU5WQUxJRF9JTkRFWCkKKyAgICB7CisgICAg
ICAgIHRocmVhZFRMUyA9IENyZWF0ZVRMU0luZGV4KCk7CisgICAgfQogCi1FR0xpbnQgR2V0R2xv
YmFsRXJyb3IoKQotewotICAgIEN1cnJlbnQgKmN1cnJlbnQgPSBHZXRDdXJyZW50RGF0YSgpOwor
ICAgIFRocmVhZCAqY3VycmVudCA9IHN0YXRpY19jYXN0PFRocmVhZCAqPihHZXRUTFNWYWx1ZSh0
aHJlYWRUTFMpKTsKIAotICAgIHJldHVybiBjdXJyZW50LT5lcnJvcjsKKyAgICAvLyBBTkdMRSBp
c3N1ZSA0ODg6IHdoZW4gdGhlIGRsbCBpcyBsb2FkZWQgYWZ0ZXIgdGhyZWFkIGluaXRpYWxpemF0
aW9uLAorICAgIC8vIHRocmVhZCBsb2NhbCBzdG9yYWdlIChjdXJyZW50KSBtaWdodCBub3QgZXhp
c3QgeWV0LgorICAgIHJldHVybiAoY3VycmVudCA/IGN1cnJlbnQgOiBBbGxvY2F0ZUN1cnJlbnRU
aHJlYWQoKSk7CiB9CiAKLUVHTGVudW0gR2V0R2xvYmFsQVBJKCkKLXsKLSAgICBDdXJyZW50ICpj
dXJyZW50ID0gR2V0Q3VycmVudERhdGEoKTsKLQotICAgIHJldHVybiBjdXJyZW50LT5BUEk7Ci19
Cit9ICAvLyBuYW1lc3BhY2UgZWdsCiAKLXZvaWQgU2V0R2xvYmFsQVBJKEVHTGVudW0gQVBJKQor
I2lmZGVmIEFOR0xFX1BMQVRGT1JNX1dJTkRPV1MKK25hbWVzcGFjZSBlZ2wKIHsKLSAgICBDdXJy
ZW50ICpjdXJyZW50ID0gR2V0Q3VycmVudERhdGEoKTsKLQotICAgIGN1cnJlbnQtPkFQSSA9IEFQ
STsKLX0KIAotdm9pZCBTZXRHbG9iYWxEaXNwbGF5KERpc3BsYXkgKmRweSkKK25hbWVzcGFjZQog
ewotICAgIEN1cnJlbnQgKmN1cnJlbnQgPSBHZXRDdXJyZW50RGF0YSgpOwotCi0gICAgY3VycmVu
dC0+ZGlzcGxheSA9IGRweTsKLX0KIAotRGlzcGxheSAqR2V0R2xvYmFsRGlzcGxheSgpCitib29s
IERlYWxsb2NhdGVDdXJyZW50VGhyZWFkKCkKIHsKLSAgICBDdXJyZW50ICpjdXJyZW50ID0gR2V0
Q3VycmVudERhdGEoKTsKLQotICAgIHJldHVybiBjdXJyZW50LT5kaXNwbGF5OworICAgIFRocmVh
ZCAqdGhyZWFkID0gc3RhdGljX2Nhc3Q8VGhyZWFkICo+KEdldFRMU1ZhbHVlKHRocmVhZFRMUykp
OworICAgIFNhZmVEZWxldGUodGhyZWFkKTsKKyAgICByZXR1cm4gU2V0VExTVmFsdWUodGhyZWFk
VExTLCBudWxscHRyKTsKIH0KIAotdm9pZCBTZXRHbG9iYWxEcmF3U3VyZmFjZShTdXJmYWNlICpz
dXJmYWNlKQorYm9vbCBJbml0aWFsaXplUHJvY2VzcygpCiB7Ci0gICAgQ3VycmVudCAqY3VycmVu
dCA9IEdldEN1cnJlbnREYXRhKCk7CisgICAgdGhyZWFkVExTID0gQ3JlYXRlVExTSW5kZXgoKTsK
KyAgICBpZiAodGhyZWFkVExTID09IFRMU19JTlZBTElEX0lOREVYKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KIAotICAgIGN1cnJlbnQtPmRyYXdTdXJmYWNlID0gc3VyZmFj
ZTsKKyAgICByZXR1cm4gQWxsb2NhdGVDdXJyZW50VGhyZWFkKCkgIT0gbnVsbHB0cjsKIH0KIAot
U3VyZmFjZSAqR2V0R2xvYmFsRHJhd1N1cmZhY2UoKQorYm9vbCBUZXJtaW5hdGVQcm9jZXNzKCkK
IHsKLSAgICBDdXJyZW50ICpjdXJyZW50ID0gR2V0Q3VycmVudERhdGEoKTsKKyAgICBpZiAoIURl
YWxsb2NhdGVDdXJyZW50VGhyZWFkKCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQogCi0gICAgcmV0dXJuIGN1cnJlbnQtPmRyYXdTdXJmYWNlOwotfQorICAgIGlmICh0aHJl
YWRUTFMgIT0gVExTX0lOVkFMSURfSU5ERVgpCisgICAgeworICAgICAgICBUTFNJbmRleCB0bHND
b3B5ID0gdGhyZWFkVExTOworICAgICAgICB0aHJlYWRUTFMgICAgICAgID0gVExTX0lOVkFMSURf
SU5ERVg7CiAKLXZvaWQgU2V0R2xvYmFsUmVhZFN1cmZhY2UoU3VyZmFjZSAqc3VyZmFjZSkKLXsK
LSAgICBDdXJyZW50ICpjdXJyZW50ID0gR2V0Q3VycmVudERhdGEoKTsKKyAgICAgICAgaWYgKCFE
ZXN0cm95VExTSW5kZXgodGxzQ29weSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KIAotICAgIGN1cnJlbnQtPnJlYWRTdXJmYWNlID0gc3Vy
ZmFjZTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU3VyZmFjZSAqR2V0R2xvYmFsUmVhZFN1cmZh
Y2UoKQotewotICAgIEN1cnJlbnQgKmN1cnJlbnQgPSBHZXRDdXJyZW50RGF0YSgpOworfSAgLy8g
YW5vbnltb3VzIG5hbWVzcGFjZQogCi0gICAgcmV0dXJuIGN1cnJlbnQtPnJlYWRTdXJmYWNlOwot
fQorfSAgLy8gbmFtZXNwYWNlIGVnbAogCi12b2lkIFNldEdsb2JhbENvbnRleHQoZ2w6OkNvbnRl
eHQgKmNvbnRleHQpCitleHRlcm4gIkMiIEJPT0wgV0lOQVBJIERsbE1haW4oSElOU1RBTkNFLCBE
V09SRCByZWFzb24sIExQVk9JRCkKIHsKLSAgICBDdXJyZW50ICpjdXJyZW50ID0gR2V0Q3VycmVu
dERhdGEoKTsKKyAgICBzd2l0Y2ggKHJlYXNvbikKKyAgICB7CisgICAgICAgIGNhc2UgRExMX1BS
T0NFU1NfQVRUQUNIOgorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEJPT0w+KGVnbDo6
SW5pdGlhbGl6ZVByb2Nlc3MoKSk7CiAKLSAgICBjdXJyZW50LT5jb250ZXh0ID0gY29udGV4dDsK
LX0KKyAgICAgICAgY2FzZSBETExfVEhSRUFEX0FUVEFDSDoKKyAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxCT09MPihlZ2w6OkFsbG9jYXRlQ3VycmVudFRocmVhZCgpICE9IG51bGxwdHIp
OwogCi1nbDo6Q29udGV4dCAqR2V0R2xvYmFsQ29udGV4dCgpCi17Ci0gICAgQ3VycmVudCAqY3Vy
cmVudCA9IEdldEN1cnJlbnREYXRhKCk7CisgICAgICAgIGNhc2UgRExMX1RIUkVBRF9ERVRBQ0g6
CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Qk9PTD4oZWdsOjpEZWFsbG9jYXRlQ3Vy
cmVudFRocmVhZCgpKTsKIAotICAgIHJldHVybiBjdXJyZW50LT5jb250ZXh0OwotfQorICAgICAg
ICBjYXNlIERMTF9QUk9DRVNTX0RFVEFDSDoKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxCT09MPihlZ2w6OlRlcm1pbmF0ZVByb2Nlc3MoKSk7CisgICAgfQogCisgICAgcmV0dXJuIFRS
VUU7CiB9CisjZW5kaWYgIC8vIEFOR0xFX1BMQVRGT1JNX1dJTkRPV1MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZ2xvYmFsX3N0YXRlLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5oCmluZGV4IGRi
MjAyNTM5Y2I5N2I3ZDg1YmMxNGJiYzljYWJmNDY0ZjBjYzE4ZGYuLjNlMzc0MGM5MGVmMmNhZDg3
MTNmMDFhMDJhOWYzNWJjNDFhN2M2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvZ2xvYmFsX3N0YXRlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9nbG9iYWxfc3RhdGUuaApAQCAtOSw4ICs5LDYgQEAKICNpZm5k
ZWYgTElCR0xFU1YyX0dMT0JBTFNUQVRFX0hfCiAjZGVmaW5lIExJQkdMRVNWMl9HTE9CQUxTVEFU
RV9IXwogCi0jaW5jbHVkZSA8RUdML2VnbC5oPgotCiBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENv
bnRleHQ7CkBAIC0xOCwzMiArMTYsMTQgQEAgY2xhc3MgQ29udGV4dDsKIENvbnRleHQgKkdldEds
b2JhbENvbnRleHQoKTsKIENvbnRleHQgKkdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogCi19Cit9
ICAvLyBuYW1lc3BhY2UgZ2wKIAogbmFtZXNwYWNlIGVnbAogewotY2xhc3MgRXJyb3I7Ci1jbGFz
cyBEaXNwbGF5OwotY2xhc3MgU3VyZmFjZTsKLQotdm9pZCBTZXRHbG9iYWxFcnJvcihjb25zdCBF
cnJvciAmZXJyb3IpOwotRUdMaW50IEdldEdsb2JhbEVycm9yKCk7Ci0KLXZvaWQgU2V0R2xvYmFs
QVBJKEVHTGVudW0gQVBJKTsKLUVHTGVudW0gR2V0R2xvYmFsQVBJKCk7Ci0KLXZvaWQgU2V0R2xv
YmFsRGlzcGxheShEaXNwbGF5ICpkcHkpOwotRGlzcGxheSAqR2V0R2xvYmFsRGlzcGxheSgpOwot
Ci12b2lkIFNldEdsb2JhbERyYXdTdXJmYWNlKFN1cmZhY2UgKnN1cmZhY2UpOwotU3VyZmFjZSAq
R2V0R2xvYmFsRHJhd1N1cmZhY2UoKTsKLQotdm9pZCBTZXRHbG9iYWxSZWFkU3VyZmFjZShTdXJm
YWNlICpzdXJmYWNlKTsKLVN1cmZhY2UgKkdldEdsb2JhbFJlYWRTdXJmYWNlKCk7CitjbGFzcyBU
aHJlYWQ7CiAKLXZvaWQgU2V0R2xvYmFsQ29udGV4dChnbDo6Q29udGV4dCAqY29udGV4dCk7Ci1n
bDo6Q29udGV4dCAqR2V0R2xvYmFsQ29udGV4dCgpOworVGhyZWFkICpHZXRDdXJyZW50VGhyZWFk
KCk7CiAKLX0KK30gIC8vIG5hbWVzcGFjZSBlZ2wKIAogI2VuZGlmIC8vIExJQkdMRVNWMl9HTE9C
QUxTVEFURV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9saWJHTEVTdjIuZGVmIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9saWJHTEVTdjIuZGVmCmluZGV4IDM5OTZiOTU1NTdhMTdhYjRhNGNiMWRiM2MxNjg0ODUzNDE3
NjlhY2EuLjJlNzNiOTc0ZGUzZjcyNGUxY2UzMjIyZWY3YTQxMGQyMzVkNjU2ZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLmRlZgor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5kZWYK
QEAgLTQwOCw2ICs0MDgsNSBAQCBFWFBPUlRTCiAgICAgZ2xWZXJ0ZXhCaW5kaW5nRGl2aXNvciAg
ICAgICAgICBANDEyCiAKICAgICA7IEFOR0xFIFBsYXRmb3JtIEltcGxlbWVudGF0aW9uCi0gICAg
QU5HTEVQbGF0Zm9ybUN1cnJlbnQgICAgICAgICAgICBAMjkwCi0gICAgQU5HTEVQbGF0Zm9ybUlu
aXRpYWxpemUgICAgICAgICBAMjkxCi0gICAgQU5HTEVQbGF0Zm9ybVNodXRkb3duICAgICAgICAg
ICBAMjkyCisgICAgQU5HTEVHZXREaXNwbGF5UGxhdGZvcm0gICAgICAgICBAMjkwCisgICAgQU5H
TEVSZXNldERpc3BsYXlQbGF0Zm9ybSAgICAgICBAMjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvQlVJTEQuZ24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3N2Q1
ZjViNGMwZDEyNmIwMmQ2N2NkMjkyMzgyMzBjNmEwZDgxMjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL0JVSUxELmduCisrKyAvZGV2L251bGwKQEAgLTEsMzQ4ICswLDAgQEAKLSMgQ29weXJpZ2h0
IDIwMTUgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKLSMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLQotaW1wb3J0KCIvL3Rlc3Rp
bmcvdGVzdC5nbmkiKQotaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9jaHJvbWVjYXN0X2J1aWxkLmdu
aSIpCi1pbXBvcnQoIi8vdGhpcmRfcGFydHkvYW5nbGUvYnVpbGQvYW5nbGVfY29tbW9uLmduaSIp
Ci0KLXVuaXR0ZXN0c19neXBpID0gZXhlY19zY3JpcHQoIi8vYnVpbGQvZ3lwaV90b19nbi5weSIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWJhc2VfcGF0aCgiYW5nbGVfdW5pdHRlc3RzLmd5cGkiKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiLS1yZXBsYWNlPTwoYW5nbGVfcGF0aCk9LiIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJz
Y29wZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgImFuZ2xlX3VuaXR0ZXN0cy5n
eXBpIiBdKQotCi10ZXN0KCJhbmdsZV91bml0dGVzdHMiKSB7Ci0gIGluY2x1ZGVfZGlycyA9IFsK
LSAgICAidGVzdGluZy9ndGVzdC9pbmNsdWRlIiwKLSAgICAiLi4vLi4vc3JjIiwKLSAgXQotCi0g
IHNvdXJjZXMgPSByZWJhc2VfcGF0aCh1bml0dGVzdHNfZ3lwaS5hbmdsZV91bml0dGVzdHNfc291
cmNlcywgIi4iLCAiLi4vLi4iKQotCi0gIGlmIChhbmdsZV9lbmFibGVfaGxzbCkgewotICAgIHNv
dXJjZXMgKz0KLSAgICAgICAgcmViYXNlX3BhdGgodW5pdHRlc3RzX2d5cGkuYW5nbGVfdW5pdHRl
c3RzX2hsc2xfc291cmNlcywgIi4iLCAiLi4vLi4iKQotICAgIGRlZmluZXMgPSBbICJBTkdMRV9F
TkFCTEVfSExTTCIgXQotICB9Ci0KLSAgc291cmNlcyArPSBbICIvL2dwdS9hbmdsZV91bml0dGVz
dF9tYWluLmNjIiBdCi0KLSAgZGVwcyA9IFsKLSAgICAiLy9iYXNlIiwKLSAgICAiLy9iYXNlL3Rl
c3Q6dGVzdF9zdXBwb3J0IiwKLSAgICAiLy90ZXN0aW5nL2dtb2NrIiwKLSAgICAiLy90ZXN0aW5n
L2d0ZXN0IiwKLSAgICAiLy90aGlyZF9wYXJ0eS9hbmdsZTpsaWJBTkdMRSIsCi0gICAgIi8vdGhp
cmRfcGFydHkvYW5nbGU6cHJlcHJvY2Vzc29yIiwKLSAgICAiLy90aGlyZF9wYXJ0eS9hbmdsZTp0
cmFuc2xhdG9yX3N0YXRpYyIsCi0gIF0KLX0KLQotaWYgKGlzX3dpbiB8fCBpc19saW51eCB8fCBp
c19tYWMgfHwgaXNfYW5kcm9pZCkgewotICBlbmQyZW5kX2d5cGkgPSBleGVjX3NjcmlwdCgiLy9i
dWlsZC9neXBpX3RvX2duLnB5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYmFzZV9wYXRoKCJhbmdsZV9lbmQyZW5kX3Rl
c3RzLmd5cGkiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1yZXBsYWNlPTwo
YW5nbGVfcGF0aCk9LiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJzY29wZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsgImFuZ2xlX2VuZDJlbmRfdGVzdHMuZ3lwaSIgXSkKLQotICB0ZXN0KCJhbmdsZV9lbmQy
ZW5kX3Rlc3RzIikgewotICAgIGluY2x1ZGVfZGlycyA9IFsKLSAgICAgICJ0ZXN0aW5nL2d0ZXN0
L2luY2x1ZGUiLAotICAgICAgIi4uLy4uL3NyYy90ZXN0cyIsCi0gICAgICAiLi4vLi4vdXRpbCIs
Ci0gICAgXQotCi0gICAgaWYgKGlzX2FuZHJvaWQpIHsKLSAgICAgIHVzZV9uYXRpdmVfYWN0aXZp
dHkgPSB0cnVlCi0gICAgfQotCi0gICAgc291cmNlcyA9Ci0gICAgICAgIHJlYmFzZV9wYXRoKGVu
ZDJlbmRfZ3lwaS5hbmdsZV9lbmQyZW5kX3Rlc3RzX3NvdXJjZXMsICIuIiwgIi4uLy4uIikKLQot
ICAgIGlmIChpc193aW4pIHsKLSAgICAgIHNvdXJjZXMgKz0gcmViYXNlX3BhdGgoZW5kMmVuZF9n
eXBpLmFuZ2xlX2VuZDJlbmRfdGVzdHNfd2luX3NvdXJjZXMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi4uLy4uIikKLSAg
ICB9Ci0gICAgaWYgKHVzZV94MTEpIHsKLSAgICAgIHNvdXJjZXMgKz0gcmViYXNlX3BhdGgoZW5k
MmVuZF9neXBpLmFuZ2xlX2VuZDJlbmRfdGVzdHNfeDExX3NvdXJjZXMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi4uLy4u
IikKLSAgICB9Ci0KLSAgICBzb3VyY2VzICs9IFsgIi8vZ3B1L2FuZ2xlX2VuZDJlbmRfdGVzdHNf
bWFpbi5jYyIgXQotCi0gICAgY29uZmlncyArPSBbCi0gICAgICAiLy90aGlyZF9wYXJ0eS9hbmds
ZTppbnRlcm5hbF9jb25maWciLAotICAgICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6bGliQU5HTEVf
Y29uZmlnIiwKLSAgICBdCi0KLSAgICBpZiAoaXNfbGludXggJiYgIWlzX2NvbXBvbmVudF9idWls
ZCkgewotICAgICAgIyBTZXQgcnBhdGggdG8gZmluZCBsaWJFR0wuc28gYW5kIGxpYkdMRVN2Mi5z
byBldmVuIGluIGEgbm9uLWNvbXBvbmVudCBidWlsZC4KLSAgICAgIGNvbmZpZ3MgKz0gWyAiLy9i
dWlsZC9jb25maWcvZ2NjOnJwYXRoX2Zvcl9idWlsdF9zaGFyZWRfbGlicmFyaWVzIiBdCi0gICAg
fQotCi0gICAgZGVwcyA9IFsKLSAgICAgICIvL2Jhc2UiLAotICAgICAgIi8vYmFzZS90ZXN0OnRl
c3Rfc3VwcG9ydCIsCi0gICAgICAiLy90ZXN0aW5nL2dtb2NrIiwKLSAgICAgICIvL3Rlc3Rpbmcv
Z3Rlc3QiLAotICAgICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6YW5nbGVfdXRpbCIsCi0gICAgICAi
Ly90aGlyZF9wYXJ0eS9hbmdsZTpsaWJBTkdMRSIsCi0gICAgICAiLy90aGlyZF9wYXJ0eS9hbmds
ZTpsaWJFR0wiLAotICAgICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6bGliR0xFU3YyIiwKLSAgICAg
ICIvL3RoaXJkX3BhcnR5L2FuZ2xlOnByZXByb2Nlc3NvciIsCi0gICAgICAiLy90aGlyZF9wYXJ0
eS9hbmdsZTp0cmFuc2xhdG9yX3N0YXRpYyIsCi0gICAgXQotICB9Ci19Ci0KLWlmIChpc193aW4p
IHsKLSAgcGVyZnRlc3RzX2d5cGkgPSBleGVjX3NjcmlwdCgiLy9idWlsZC9neXBpX3RvX2duLnB5
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWJhc2VfcGF0aCgiYW5nbGVfcGVyZnRlc3RzLmd5cGkiKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXJlcGxhY2U9PChhbmdsZV9wYXRoKT0uIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJzY29wZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyAiYW5n
bGVfcGVyZnRlc3RzLmd5cGkiIF0pCi0KLSAgdGVzdCgiYW5nbGVfcGVyZnRlc3RzIikgewotICAg
IGluY2x1ZGVfZGlycyA9IFsKLSAgICAgICJ0ZXN0aW5nL2d0ZXN0L2luY2x1ZGUiLAotICAgICAg
Ii4uLy4uL3NyYy90ZXN0cyIsCi0gICAgICAiLi4vLi4vdXRpbCIsCi0gICAgXQotCi0gICAgc291
cmNlcyA9IHJlYmFzZV9wYXRoKHBlcmZ0ZXN0c19neXBpLmFuZ2xlX3BlcmZfdGVzdHNfc291cmNl
cywgIi4iLCAiLi4vLi4iKQotCi0gICAgc291cmNlcyArPQotICAgICAgICByZWJhc2VfcGF0aChw
ZXJmdGVzdHNfZ3lwaS5hbmdsZV9wZXJmX3Rlc3RzX3dpbl9zb3VyY2VzLCAiLiIsICIuLi8uLiIp
Ci0KLSAgICBzb3VyY2VzICs9IFsgIi8vZ3B1L2FuZ2xlX3BlcmZ0ZXN0c19tYWluLmNjIiBdCi0K
LSAgICBjb25maWdzICs9IFsKLSAgICAgICIvL3RoaXJkX3BhcnR5L2FuZ2xlOmludGVybmFsX2Nv
bmZpZyIsCi0gICAgICAiLy90aGlyZF9wYXJ0eS9hbmdsZTpsaWJBTkdMRV9jb25maWciLAotICAg
IF0KLQotICAgIGRlcHMgPSBbCi0gICAgICAiLy9iYXNlIiwKLSAgICAgICIvL2Jhc2UvdGVzdDp0
ZXN0X3N1cHBvcnQiLAotICAgICAgIi8vdGVzdGluZy9nbW9jayIsCi0gICAgICAiLy90ZXN0aW5n
L2d0ZXN0IiwKLSAgICAgICIvL3RoaXJkX3BhcnR5L2FuZ2xlOmFuZ2xlX3V0aWwiLAotICAgICAg
Ii8vdGhpcmRfcGFydHkvYW5nbGU6bGliQU5HTEUiLAotICAgICAgIi8vdGhpcmRfcGFydHkvYW5n
bGU6bGliRUdMIiwKLSAgICAgICIvL3RoaXJkX3BhcnR5L2FuZ2xlOmxpYkdMRVN2MiIsCi0gICAg
XQotICB9Ci19Ci0KLSMjIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0jIyMgZEVRUCB0ZXN0cwotIyMjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotZGVjbGFyZV9hcmdzKCkgewotICAjIERv
bid0IGJ1aWxkIGRFUVAgYnkgZGVmYXVsdC4KLSAgYnVpbGRfYW5nbGVfZGVxcF90ZXN0cyA9IGZh
bHNlCi19Ci0KLSMgVE9ETyhqbWFkaWxsKTogT3RoZXIgcGxhdGZvcm1zLgotaWYgKGJ1aWxkX2Fu
Z2xlX2RlcXBfdGVzdHMpIHsKLSAgZGVxcF9neXBpID0gZXhlY19zY3JpcHQoIi8vYnVpbGQvZ3lw
aV90b19nbi5weSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWJhc2VfcGF0aCgiZGVxcC5neXBpIiksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIi0tcmVwbGFjZT08KGFuZ2xlX3BhdGgpPS4iLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICItLXJlcGxhY2U9PChkZXFwX3BhdGgpPS4uL2RlcXAvc3JjIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNjb3Bl
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgWyAiZGVxcC5neXBpIiBdKQotCi0gIGNvbmZp
ZygiYW5nbGVfZGVxcF9zdXBwb3J0IikgewotICAgIGluY2x1ZGVfZGlycyA9IHJlYmFzZV9wYXRo
KGRlcXBfZ3lwaS5kZXFwX2luY2x1ZGVfZGlycywgIi4iLCAiLi4vLi4iKQotICAgIGlmIChpc193
aW4pIHsKLSAgICAgIGluY2x1ZGVfZGlycyArPSBbICIuLi9kZXFwL3NyYy9mcmFtZXdvcmsvcGxh
dGZvcm0vd2luMzIiIF0KLSAgICAgIGNmbGFncyA9IGRlcXBfZ3lwaS5kZXFwX3dpbl9jZmxhZ3MK
LSAgICB9Ci0gICAgZGVmaW5lcyA9IGRlcXBfZ3lwaS5kZXFwX2RlZmluZXMKLSAgICBkZWZpbmVz
ICs9IFsgIl9NQkNTIiBdCi0KLSAgICAjIEFzayB0aGUgc3lzdGVtIGhlYWRlcnMgdG8gZXhwb3Nl
IGFsbCB0aGUgcmVndWxhciBmdW5jdGlvbiBvdGhlcndpc2UKLSAgICAjIGRFUVAgZG9lc24ndCBj
b21waWxlIGFuZCBwcm9kdWNlcyB3YXJuaW5ncyBhYm91dCBpbXBsaWNpdGx5IGRlZmluZWQKLSAg
ICAjIGZ1bmN0aW9ucy4KLSAgICBpZiAoaXNfbGludXgpIHsKLSAgICAgICMgVGhpcyBoYXMgdG8g
YmUgR05VX1NPVVJDRSBhcyBvbiBMaW51eCBkRVFQIHVzZXMgc3lzY2FsbCgpCi0gICAgICBkZWZp
bmVzICs9IFsgIl9HTlVfU09VUkNFIiBdCi0gICAgfQotICAgIGlmIChpc19hbmRyb2lkKSB7Ci0g
ICAgICAjIF9YT1BFTl9TT1VSQ0U9NjAwIGlzIHdoYXQgaXMgdXNlZCBpbiBkZXFwL3NyYy9BbmRy
b2lkLm1rCi0gICAgICBkZWZpbmVzICs9IFsgIl9YT1BFTl9TT1VSQ0U9NjAwIiBdCi0gICAgfQot
ICB9Ci0KLSAgZGVxcF91bmRlZmluZV9jb25maWdzID0gWwotICAgICIvL2J1aWxkL2NvbmZpZy9j
b21waWxlcjpjaHJvbWl1bV9jb2RlIiwKLSAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9f
cnR0aSIsCi0gIF0KLQotICBpZiAoaXNfd2luKSB7Ci0gICAgZGVxcF91bmRlZmluZV9jb25maWdz
ICs9IFsKLSAgICAgICIvL2J1aWxkL2NvbmZpZy93aW46bGVhbl9hbmRfbWVhbiIsCi0gICAgICAi
Ly9idWlsZC9jb25maWcvd2luOm5vbWlubWF4IiwKLSAgICAgICIvL2J1aWxkL2NvbmZpZy93aW46
dW5pY29kZSIsCi0gICAgXQotICB9Ci0KLSAgaWYgKGlzX2xpbnV4IHx8IGlzX2FuZHJvaWQpIHsK
LSAgICBkZXFwX3VuZGVmaW5lX2NvbmZpZ3MgKz0gWyAiLy9idWlsZC9jb25maWcvZ2NjOm5vX2V4
Y2VwdGlvbnMiIF0KLSAgfQotCi0gIHN0YXRpY19saWJyYXJ5KCJhbmdsZV9kZXFwX2RlY3BwIikg
ewotICAgIGNvbmZpZ3MgLT0gZGVxcF91bmRlZmluZV9jb25maWdzCi0gICAgcHVibGljX2NvbmZp
Z3MgPSBbCi0gICAgICAiOmFuZ2xlX2RlcXBfc3VwcG9ydCIsCi0gICAgICAiLy9idWlsZC9jb25m
aWcvY29tcGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCi0gICAgICAiLy90aGlyZF9wYXJ0eS9hbmds
ZTppbnRlcm5hbF9jb25maWciLAotICAgIF0KLSAgICBzb3VyY2VzID0gcmViYXNlX3BhdGgoZGVx
cF9neXBpLmRlcXBfbGlidGVzdGVyX2RlY3BwX3NvdXJjZXMsICIuIiwgIi4uLy4uIikKLSAgfQot
Ci0gIGNvbmZpZygiYW5nbGVfZGVxcF9saWJ0ZXN0ZXJfY29uZmlnIikgewotICAgIGRlZmluZXMg
PSBbICJBTkdMRV9ERVFQX0xJQlRFU1RFUl9JTVBMRU1FTlRBVElPTiIgXQotCi0gICAgaWYgKGlz
X2NsYW5nKSB7Ci0gICAgICAjIFRPRE8oam1hZGlsbCk6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgZml4
IGRFUVAuCi0gICAgICBjZmxhZ3NfY2MgPSBbICItV25vLWRlbGV0ZS1ub24tdmlydHVhbC1kdG9y
IiBdCi0gICAgfQotICB9Ci0KLSAgc3RhdGljX2xpYnJhcnkoImFuZ2xlX2RlcXBfbGlidGVzdGVy
IikgewotICAgIHB1YmxpY19kZXBzID0gWwotICAgICAgIjphbmdsZV9kZXFwX2RlY3BwIiwKLSAg
ICAgICIvL3RoaXJkX3BhcnR5L2FuZ2xlOmFuZ2xlX3V0aWwiLAotICAgICAgIi8vdGhpcmRfcGFy
dHkvYW5nbGU6bGliRUdMIiwKLSAgICAgICIvL3RoaXJkX3BhcnR5L2xpYnBuZzpsaWJwbmciLAot
ICAgIF0KLSAgICBjb25maWdzIC09IGRlcXBfdW5kZWZpbmVfY29uZmlncwotICAgIHB1YmxpY19j
b25maWdzID0gWyAiOmFuZ2xlX2RlcXBfbGlidGVzdGVyX2NvbmZpZyIgXQotICAgIHNvdXJjZXMg
PSByZWJhc2VfcGF0aChkZXFwX2d5cGkuZGVxcF9saWJ0ZXN0ZXJfc291cmNlcywgIi4iLCAiLi4v
Li4iKQotICAgIGlmIChpc193aW4pIHsKLSAgICAgIHNvdXJjZXMgKz0gcmViYXNlX3BhdGgoZGVx
cF9neXBpLmRlcXBfbGlidGVzdGVyX3NvdXJjZXNfd2luLCAiLiIsICIuLi8uLiIpCi0gICAgfQot
ICAgIGlmIChpc19saW51eCB8fCBpc19hbmRyb2lkKSB7Ci0gICAgICBzb3VyY2VzICs9Ci0gICAg
ICAgICAgcmViYXNlX3BhdGgoZGVxcF9neXBpLmRlcXBfbGlidGVzdGVyX3NvdXJjZXNfdW5peCwg
Ii4iLCAiLi4vLi4iKQotICAgIH0KLSAgICBpZiAoaXNfYW5kcm9pZCkgewotICAgICAgbGlicyA9
IFsgImxvZyIgXQotICAgIH0KLSAgfQotCi0gIGNvbmZpZygiYW5nbGVfZGVxcF9ndGVzdF9zdXBw
b3J0X2NvbmZpZyIpIHsKLSAgICBpbmNsdWRlX2RpcnMgPSBbICJ0aGlyZF9wYXJ0eS9ncHVfdGVz
dF9leHBlY3RhdGlvbnMiIF0KLSAgfQotCi0gIHNvdXJjZV9zZXQoImFuZ2xlX2RlcXBfZ3Rlc3Rf
c3VwcG9ydCIpIHsKLSAgICB0ZXN0b25seSA9IHRydWUKLSAgICBwdWJsaWNfZGVwcyA9IFsKLSAg
ICAgICIvL2Jhc2UiLAotICAgICAgIi8vYmFzZS90ZXN0OnRlc3Rfc3VwcG9ydCIsCi0gICAgICAi
Ly90ZXN0aW5nL2d0ZXN0IiwKLSAgICAgICIvL3RoaXJkX3BhcnR5L2FuZ2xlOmFuZ2xlX2NvbW1v
biIsCi0gICAgICAiLy90aGlyZF9wYXJ0eS9hbmdsZTphbmdsZV91dGlsIiwKLSAgICBdCi0gICAg
cHVibGljX2NvbmZpZ3MgPSBbICI6YW5nbGVfZGVxcF9ndGVzdF9zdXBwb3J0X2NvbmZpZyIgXQot
ICAgIHNvdXJjZXMgPSBkZXFwX2d5cGkuZGVxcF9ncHVfdGVzdF9leHBlY3RhdGlvbnNfc291cmNl
cwotICAgIHNvdXJjZXMgKz0gWyAiLy9ncHUvYW5nbGVfZGVxcF90ZXN0c19tYWluLmNjIiBdCi0K
LSAgICAjIFRha2VuIGZyb20gZ3B1L0JVSUxELmduCi0gICAgIyBUT0RPKGptYWRpbGwpOiB0aGlz
IHNob3VsZCBiZSBpbiBhIHNoYXJlZCBsb2NhdGlvbgotICAgIGlmIChpc19saW51eCAmJiAhaXNf
Y2hyb21lY2FzdCkgewotICAgICAgbGlicyA9IFsgInBjaSIgXQotICAgIH0KLSAgfQotCi0gIGFw
aV9uYW1lcyA9IFsKLSAgICAiZ2xlczIiLAotICAgICJnbGVzMyIsCi0gICAgImdsZXMzMSIsCi0g
ICAgImVnbCIsCi0gIF0KLSAgdGFyZ2V0X2RlZmluZXMgPSBbCi0gICAgIkFOR0xFX0RFUVBfR0xF
UzJfVEVTVFMiLAotICAgICJBTkdMRV9ERVFQX0dMRVMzX1RFU1RTIiwKLSAgICAiQU5HTEVfREVR
UF9HTEVTMzFfVEVTVFMiLAotICAgICJBTkdMRV9ERVFQX0VHTF9URVNUUyIsCi0gIF0KLSAgdGFy
Z2V0X3NvdXJjZXMgPSBbCi0gICAgZGVxcF9neXBpLmRlcXBfZ2xlczJfc291cmNlcywKLSAgICBk
ZXFwX2d5cGkuZGVxcF9nbGVzM19zb3VyY2VzLAotICAgIGRlcXBfZ3lwaS5kZXFwX2dsZXMzMV9z
b3VyY2VzLAotICAgIGRlcXBfZ3lwaS5kZXFwX2VnbF9zb3VyY2VzLAotICBdCi0KLSAgZm9yZWFj
aChpbmRleCwKLSAgICAgICAgICBbCi0gICAgICAgICAgICAwLAotICAgICAgICAgICAgMSwKLSAg
ICAgICAgICAgIDIsCi0gICAgICAgICAgICAzLAotICAgICAgICAgIF0pIHsKLSAgICBhcGlfbmFt
ZSA9IGFwaV9uYW1lc1tpbmRleF0KLSAgICBjb25maWdfbmFtZSA9ICJhbmdsZV9kZXFwX2xpYiR7
YXBpX25hbWV9X2NvbmZpZyIKLSAgICBjb25maWcoY29uZmlnX25hbWUpIHsKLSAgICAgIGRlZmlu
ZXMgPSBbIHRhcmdldF9kZWZpbmVzW2luZGV4XSBdCi0gICAgfQotCi0gICAgc2hhcmVkX2xpYnJh
cnlfbmFtZSA9ICJhbmdsZV9kZXFwX2xpYiR7YXBpX25hbWV9IgotICAgIHNoYXJlZF9saWJyYXJ5
KHNoYXJlZF9saWJyYXJ5X25hbWUpIHsKLSAgICAgIGRlcHMgPSBbCi0gICAgICAgICI6YW5nbGVf
ZGVxcF9saWJ0ZXN0ZXIiLAotICAgICAgICAiLy90aGlyZF9wYXJ0eS9hbmdsZTphbmdsZV91dGls
IiwKLSAgICAgIF0KLQotICAgICAgY29uZmlncyAtPSBkZXFwX3VuZGVmaW5lX2NvbmZpZ3MKLSAg
ICAgIHB1YmxpY19jb25maWdzID0gWyAiOiR7Y29uZmlnX25hbWV9IiBdCi0KLSAgICAgIHNvdXJj
ZXMgPSByZWJhc2VfcGF0aCh0YXJnZXRfc291cmNlc1tpbmRleF0sICIuIiwgIi4uLy4uIikKLSAg
ICAgIHNvdXJjZXMgKz0gWwotICAgICAgICAiZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfbGlidGVz
dGVyX21haW4uY3BwIiwKLSAgICAgICAgImRlcXBfc3VwcG9ydC90Y3VBTkdMRVBsYXRmb3JtLmNw
cCIsCi0gICAgICAgICJkZXFwX3N1cHBvcnQvdGN1QU5HTEVQbGF0Zm9ybS5oIiwKLSAgICAgIF0K
LSAgICB9Ci0KLSAgICB0ZXN0X25hbWUgPSAiYW5nbGVfZGVxcF8ke2FwaV9uYW1lfV90ZXN0cyIK
LSAgICB0ZXN0KHRlc3RfbmFtZSkgewotICAgICAgZGVwcyA9IFsKLSAgICAgICAgIjoke3NoYXJl
ZF9saWJyYXJ5X25hbWV9IiwKLSAgICAgICAgIjphbmdsZV9kZXFwX2d0ZXN0X3N1cHBvcnQiLAot
ICAgICAgXQotCi0gICAgICAjIE11c3QgYmUgaW5jbHVkZWQgb3V0c2lkZSBvZiB0aGUgc291cmNl
IHNldCBmb3IgdGhlIGRlZmluZQotICAgICAgc291cmNlcyA9IFsKLSAgICAgICAgImRlcXBfc3Vw
cG9ydC9hbmdsZV9kZXFwX2d0ZXN0LmNwcCIsCi0gICAgICBdCi0KLSAgICAgIGRhdGEgPSBbCi0g
ICAgICAgICJkZXFwX3N1cHBvcnQvZGVxcF8ke2FwaV9uYW1lfV90ZXN0X2V4cGVjdGF0aW9ucy50
eHQiLAotICAgICAgICAiLi4vLi4vLi4vZGVxcC9zcmMvYW5kcm9pZC9jdHMvbWFzdGVyLyR7YXBp
X25hbWV9LW1hc3Rlci50eHQiLAotICAgICAgICAiLi4vLi4vLi4vZGVxcC9zcmMvZGF0YS8iLAot
ICAgICAgXQotCi0gICAgICBpZiAoaXNfbGludXggJiYgIWlzX2NvbXBvbmVudF9idWlsZCkgewot
ICAgICAgICAjIFNldCBycGF0aCB0byBmaW5kICouc28gZmlsZXMgZXZlbiBpbiBhIG5vbi1jb21w
b25lbnQgYnVpbGQuCi0gICAgICAgIGNvbmZpZ3MgKz0gWyAiLy9idWlsZC9jb25maWcvZ2NjOnJw
YXRoX2Zvcl9idWlsdF9zaGFyZWRfbGlicmFyaWVzIiBdCi0gICAgICB9Ci0KLSAgICAgIGlmIChp
c19hbmRyb2lkKSB7Ci0gICAgICAgIHVzZV9uYXRpdmVfYWN0aXZpdHkgPSB0cnVlCi0gICAgICB9
Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvV2ViR0wtQ1RTLWtub3duLWZhaWx1cmVzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9XZWJHTC1DVFMta25vd24tZmFpbHVyZXMudHh0CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjNjdmM2EyOTEyODhmNmZmMWNlZjQzMjc5YzNmNzVlM2RjODg4ZTNh
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9XZWJHTC1DVFMta25vd24tZmFpbHVyZXMudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1Lbm93biBmYWlsdXJlcyBpbiB0aGUgV2ViR0wg
Q1RTIDEuMC40LCB1c2luZyBDYW5hcnkgNDguMC4yNTQ3LjAgd2l0aCBBTkdMRSBhMzM0NzViMzZm
N2IwCi1odHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS93ZWJnbC9zZGsvdGVzdHMvd2Vi
Z2wtY29uZm9ybWFuY2UtdGVzdHMuaHRtbAotCi1jb25mb3JtYW5jZS9leHRlbnNpb25zL2V4dC1z
UkdCLmh0bWw6IDUgdGVzdHMgZmFpbGVkCi1jb25mb3JtYW5jZS9nbHNsL2J1Z3MvcG93LW9mLXNt
YWxsLWNvbnN0YW50LWluLXVzZXItZGVmaW5lZC1mdW5jdGlvbi5odG1sOiAxIHRlc3RzIGZhaWxl
ZAotY29uZm9ybWFuY2UvZ2xzbC9idWdzL3NhbXBsZXItc3RydWN0LWZ1bmN0aW9uLWFyZy5odG1s
OiAxIHRlc3RzIGZhaWxlZAotY29uZm9ybWFuY2UvdGV4dHVyZXMvbWlzYy9jdWJlLWluY29tcGxl
dGUtZmJvLmh0bWw6IDEgdGVzdHMgZmFpbGVkCi1kZXFwL2RhdGEvZ2xlczIvc2hhZGVycy9mdW5j
dGlvbnMuaHRtbDogOCB0ZXN0cyBmYWlsZWQKLWRlcXAvZGF0YS9nbGVzMi9zaGFkZXJzL3Njb3Bp
bmcuaHRtbDogNCB0ZXN0cyBmYWlsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9hbmdsZV9lbmQyZW5kX3Rlc3RzLmd5cGkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfZW5kMmVuZF90ZXN0cy5neXBpCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3M2JlNDg2MGY4Nzg2MjkyMzdkZGM1OTIyOWUzMzMwNzFlYjNiYmNk
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV9lbmQyZW5kX3Rlc3RzLmd5cGkKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
IyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotCi0jIFRoaXMgLmd5cGkgZGVzY3JpYmVzIGFs
bCBvZiB0aGUgc291cmNlcyBhbmQgZGVwZW5kZW5jaWVzIHRvIGJ1aWxkIGEKLSMgdW5pZmllZCAi
YW5nbGVfZW5kMmVuZF90ZXN0cyIgdGFyZ2V0LCB3aGljaCBjb250YWlucyBhbGwgb2YgdGhlCi0j
IHRlc3RzIHRoYXQgZXhlcmNpc2UgdGhlIEFOR0xFIGltcGxlbWVudGF0aW9uLiBJdCByZXF1aXJl
cyBhIHBhcmVudAotIyB0YXJnZXQgdG8gaW5jbHVkZSB0aGlzIGd5cGkgaW4gYW4gZXhlY3V0YWJs
ZSB0YXJnZXQgY29udGFpbmluZyBhCi0jIGd0ZXN0IGhhcm5lc3MgaW4gYSBtYWluLmNwcC4KLQot
ewotICAgICMgRXZlcnl0aGluZyBiZWxvdyB0aGlzIGlzIGR1cGxpY2F0ZWQgaW4gdGhlIEdOIGJ1
aWxkLgotICAgICMgSWYgeW91IGNoYW5nZSBhbnl0aGluZyBhbHNvIGNoYW5nZSBhbmdsZS9zcmMv
dGVzdHMvQlVJTEQuZ24KLSAgICAndmFyaWFibGVzJzoKLSAgICB7Ci0gICAgICAgICdhbmdsZV9l
bmQyZW5kX3Rlc3RzX3NvdXJjZXMnOgotICAgICAgICBbCi0gICAgICAgICAgICAnPChhbmdsZV9w
YXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvQmluZEdlbmVyYXRlc1Jlc291cmNlVGVzdC5jcHAnLAot
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0JpbmRVbmlmb3Jt
TG9jYXRpb25UZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMv
Z2xfdGVzdHMvQmxlbmRNaW5NYXhUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvdGVzdHMvZ2xfdGVzdHMvQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0LmNwcCcsCi0gICAg
ICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvQnVmZmVyRGF0YVRlc3Qu
Y3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9CdWls
dGluVmFyaWFibGVUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVz
dHMvZ2xfdGVzdHMvQ2xlYXJUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvdGVzdHMvZ2xfdGVzdHMvQ29sb3JNYXNrVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvbXB1dGVTaGFkZXJUZXN0LmNwcCcsCi0gICAg
ICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29weUNvbXByZXNzZWRU
ZXh0dXJlVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2ds
X3Rlc3RzL0NvcHlUZXhJbWFnZVRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgp
L3NyYy90ZXN0cy9nbF90ZXN0cy9Db3B5VGV4dHVyZVRlc3QuY3BwJywKLSAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9DdWJlTWFwVGV4dHVyZVRlc3QuY3BwJywK
LSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9EZWJ1Z01hcmtl
clRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0
cy9EZWJ1Z1Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9n
bF90ZXN0cy9EZXB0aFN0ZW5jaWxGb3JtYXRzVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0Rpc2NhcmRGcmFtZWJ1ZmZlckVYVFRlc3QuY3Bw
JywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9EcmF3QnVm
ZmVyc1Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90
ZXN0cy9EcmF3RWxlbWVudHNUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvdGVzdHMvZ2xfdGVzdHMvRFhUMUNvbXByZXNzZWRUZXh0dXJlVGVzdC5jcHAnLAotICAgICAg
ICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0VUQ1RleHR1cmVUZXN0LmNw
cCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvRmVuY2VT
eW5jVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90
ZXN0cy9GcmFtZWJ1ZmZlck1peGVkU2FtcGxlc1Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFu
Z2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9GcmFtZWJ1ZmZlclJlbmRlck1pcG1hcFRlc3Qu
Y3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9GcmFt
ZWJ1ZmZlclRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9n
bF90ZXN0cy9HTFNMVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0ltYWdlVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkv
c3JjL3Rlc3RzL2dsX3Rlc3RzL0luY29tcGxldGVUZXh0dXJlVGVzdC5jcHAnLAotICAgICAgICAg
ICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0luZGV4QnVmZmVyT2Zmc2V0VGVz
dC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0lu
ZGV4ZWRQb2ludHNUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVz
dHMvZ2xfdGVzdHMvSW5zdGFuY2luZ1Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3Bh
dGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9MaW5lTG9vcFRlc3QuY3BwJywKLSAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9NYXhUZXh0dXJlU2l6ZVRlc3QuY3BwJywK
LSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9NaXBtYXBUZXN0
LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvTXVs
dGlzYW1wbGVDb21wYXRpYmlsaXR5VGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0
aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL21lZGlhL3BpeGVsLmlubCcsCi0gICAgICAgICAgICAnPChh
bmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvUGFja1VucGFja1Rlc3QuY3BwJywKLSAgICAg
ICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9QYXRoUmVuZGVyaW5nVGVz
dC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1Bi
dWZmZXJUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xf
dGVzdHMvUEJPRXh0ZW5zaW9uVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkv
c3JjL3Rlc3RzL2dsX3Rlc3RzL1BvaW50U3ByaXRlc1Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9Qcm92b2tpbmdWZXJ0ZXhUZXN0LmNwcCcs
Ci0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvT2JqZWN0QWxs
b2NhdGlvblRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9n
bF90ZXN0cy9PY2NsdXNpb25RdWVyaWVzVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVf
cGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1Byb2dyYW1CaW5hcnlUZXN0LmNwcCcsCi0gICAgICAg
ICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvUmVhZFBpeGVsc1Rlc3QuY3Bw
JywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9SZW5kZXJl
clRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0
cy9Sb2J1c3RDbGllbnRNZW1vcnlUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvdGVzdHMvZ2xfdGVzdHMvU2ltcGxlT3BlcmF0aW9uVGVzdC5jcHAnLAotICAgICAgICAg
ICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1NpeHRlZW5CcHBUZXh0dXJlVGVz
dC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1NS
R0JUZXh0dXJlVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL1N0YXRlQ2hhbmdlVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0
aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1N3aXp6bGVUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChh
bmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvU3luY1F1ZXJpZXNUZXN0LmNwcCcsCi0gICAg
ICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvVGV4dHVyZVRlc3QuY3Bw
JywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9UaW1lclF1
ZXJpZXNUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xf
dGVzdHMvVHJhbnNmb3JtRmVlZGJhY2tUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9w
YXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvVW5pZm9ybUJ1ZmZlclRlc3QuY3BwJywKLSAgICAgICAg
ICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9Vbmlmb3JtVGVzdC5jcHAnLAot
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1VucGFja0FsaWdu
bWVudFRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90
ZXN0cy9VbnBhY2tSb3dMZW5ndGguY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9WZXJ0ZXhBdHRyaWJ1dGVUZXN0LmNwcCcsCi0gICAgICAgICAgICAn
PChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvVmlld3BvcnRUZXN0LmNwcCcsCi0gICAg
ICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvV2ViR0xDb21wYXRpYmls
aXR5VGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2VnbF90
ZXN0cy9FR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFu
Z2xlX3BhdGgpL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMQ29udGV4dFNoYXJpbmdUZXN0LmNwcCcs
Ci0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFF1ZXJ5
Q29udGV4dFRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9l
Z2xfdGVzdHMvRUdMUm9idXN0bmVzc1Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3Bh
dGgpL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMU2FuaXR5Q2hlY2tUZXN0LmNwcCcsCi0gICAgICAg
ICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFN1cmZhY2VUZXN0LmNw
cCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvdGVzdF91dGlscy9BTkdM
RVRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy90ZXN0X3V0
aWxzL0FOR0xFVGVzdC5oJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy90
ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVf
cGF0aCkvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdzLmgnLAotICAgICAg
ICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0
YW50aWF0ZS5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3Rlc3Rf
dXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3Bh
dGgpL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2dsX3JhaWkuaCcsCi0gICAgICAgIF0sCi0gICAgICAg
ICdhbmdsZV9lbmQyZW5kX3Rlc3RzX3dpbl9zb3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAg
ICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0QzREltYWdlRm9ybWF0Q29udmVy
c2lvblRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90
ZXN0cy9EM0QxMUVtdWxhdGVkSW5kZXhlZEJ1ZmZlclRlc3QuY3BwJywKLSAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9EM0QxMUZvcm1hdFRhYmxlc1Rlc3QuY3Bw
JywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9EM0QxMUlu
cHV0TGF5b3V0Q2FjaGVUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMv
dGVzdHMvZWdsX3Rlc3RzL0VHTERldmljZVRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xl
X3BhdGgpL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMUHJlc2VudFBhdGhEM0QxMVRlc3QuY3BwJywK
LSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMU3RyZWFt
VGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2VnbF90ZXN0
cy9FR0xTeW5jQ29udHJvbFRlc3QuY3BwJywKLSAgICAgICAgICAgICMgVE9ETyhjd2FsbGV6KSBm
b3IgTGludXgsIHJlcXVpcmVzIGEgcG9ydGFibGUgaW1wbGVtZW50YXRpb24gb2YgdGhyZWFkcwot
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xUaHJlYWRU
ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZWdsX3Rlc3Rz
L21lZGlhL3l1dnRlc3QuaW5sJywKLSAgICAgICAgXSwKLSAgICAgICAgJ2FuZ2xlX2VuZDJlbmRf
dGVzdHNfeDExX3NvdXJjZXMnOgotICAgICAgICBbCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFgxMVZpc3VhbFRlc3QuY3BwJywKLSAgICAgICAgXSwK
LSAgICB9LAotICAgICdkZXBlbmRlbmNpZXMnOgotICAgIFsKLSAgICAgICAgJzwoYW5nbGVfcGF0
aCkvc3JjL2FuZ2xlLmd5cDpsaWJBTkdMRScsCi0gICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9h
bmdsZS5neXA6bGliRUdMJywKLSAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2FuZ2xlLmd5cDps
aWJHTEVTdjInLAotICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvdGVzdHMuZ3lwOmFu
Z2xlX3Rlc3Rfc3VwcG9ydCcsCi0gICAgICAgICc8KGFuZ2xlX3BhdGgpL3V0aWwvdXRpbC5neXA6
YW5nbGVfdXRpbCcsCi0gICAgXSwKLSAgICAnaW5jbHVkZV9kaXJzJzoKLSAgICBbCi0gICAgICAg
ICc8KGFuZ2xlX3BhdGgpL2luY2x1ZGUnLAotICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVz
dHMnCi0gICAgXSwKLSAgICAnc291cmNlcyc6Ci0gICAgWwotICAgICAgICAnPEAoYW5nbGVfZW5k
MmVuZF90ZXN0c19zb3VyY2VzKScsCi0gICAgXSwKLSAgICAnY29uZGl0aW9ucyc6Ci0gICAgWwot
ICAgICAgICBbJ09TPT0id2luIicsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdzb3VyY2VzJzoK
LSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAnPEAoYW5nbGVfZW5kMmVuZF90ZXN0c193
aW5fc291cmNlcyknLAotICAgICAgICAgICAgXSwKLSAgICAgICAgfV0sCi0gICAgICAgIFsndXNl
X3gxMT09MScsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAgICAg
IFsKLSAgICAgICAgICAgICAgICAnPEAoYW5nbGVfZW5kMmVuZF90ZXN0c194MTFfc291cmNlcykn
LAotICAgICAgICAgICAgXSwKLSAgICAgICAgfV0sCi0gICAgXQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2FuZ2xlX2VuZDJlbmRfdGVzdHNfbWFpbi5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfZW5kMmVuZF90ZXN0
c19tYWluLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRiOWYwMmY0ZGNkMTli
MmUxZWNhNTE1NWI5NWU1Y2E0ZjBlMzZhNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVf
ZW5kMmVuZF90ZXN0c19tYWluLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLS8v
Ci0vLyBDb3B5cmlnaHQgKGMpIDIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCi0vLwotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJ0ZXN0X3V0
aWxzL0FOR0xFVGVzdC5oIgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0g
ICAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotICAgIHRlc3Rpbmc6OkFk
ZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgQU5HTEVUZXN0RW52aXJvbm1lbnQoKSk7Ci0gICAg
aW50IHJ0ID0gUlVOX0FMTF9URVNUUygpOwotICAgIHJldHVybiBydDsKLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV9wZXJmdGVzdHMuZ3lwaSBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV9wZXJmdGVzdHMuZ3lwaQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmE4NmRhOWMwOWMwNzM4ODU4YTY5NTg1Mjlj
YmIxM2NmNWUxNjRlOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfcGVyZnRlc3RzLmd5
cGkKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0jIENvcHlyaWdodCAyMDE1IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKLSMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLSMKLSMgYW5nbGVfcGVyZnRlc3RzLmd5
cGk6Ci0jCi0jIFRoaXMgLmd5cGkgZGVzY3JpYmVzIGFsbCBvZiB0aGUgc291cmNlcyBhbmQgZGVw
ZW5kZW5jaWVzIHRvIGJ1aWxkIGEKLSMgdW5pZmllZCAiYW5nbGVfcGVyZnRlc3RzIiB0YXJnZXQs
IHdoaWNoIGNvbnRhaW5zIGFsbCBvZiBBTkdMRSdzCi0jIHBlcmZvcm1hbmNlIHRlc3RzIChidWZm
ZXIgdXBkYXRlcywgdGV4dHVyZSB1cGRhdGVzLCBkcmF3IGNhbGxzLCBldGMpCi0jIEl0IHJlcXVp
cmVzIGEgcGFyZW50IHRhcmdldCB0byBpbmNsdWRlIHRoaXMgZ3lwaSBpbiBhbiBleGVjdXRhYmxl
Ci0jIHRhcmdldCBjb250YWluaW5nIGEgZ3Rlc3QgaGFybmVzcyBpbiBhIG1haW4uY3BwLgotCi17
Ci0gICAgJ3ZhcmlhYmxlcyc6Ci0gICAgewotICAgICAgICAnYW5nbGVfcGVyZl90ZXN0c19zb3Vy
Y2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3Bl
cmZfdGVzdHMvQU5HTEVQZXJmVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkv
c3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdC5oJywKLSAgICAgICAgICAgICc8KGFu
Z2xlX3BhdGgpL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0J1ZmZlclN1YkRhdGEuY3BwJywKLSAgICAg
ICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0RyYXdDYWxsUGVyZi5j
cHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvRHlu
YW1pY1Byb21vdGlvblBlcmZUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvdGVzdHMvcGVyZl90ZXN0cy9FR0xJbml0aWFsaXplUGVyZi5jcHAnLAotICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvSW5kZXhDb252ZXJzaW9uUGVyZi5j
cHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvSW5z
dGFuY2luZ1BlcmYuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9w
ZXJmX3Rlc3RzL0ludGVybGVhdmVkQXR0cmlidXRlRGF0YS5jcHAnLAotICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvUG9pbnRTcHJpdGVzLmNwcCcsCi0gICAg
ICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9UZXhTdWJJbWFnZS5j
cHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVGV4
dHVyZVNhbXBsaW5nLmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMv
cGVyZl90ZXN0cy9UZXh0dXJlc1BlcmYuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgp
L3NyYy90ZXN0cy9wZXJmX3Rlc3RzL1VuaWZvcm1zUGVyZi5jcHAnLAotICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRfcGFydHkvcGVyZi9wZXJmX3Rl
c3QuY2MnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMv
dGhpcmRfcGFydHkvcGVyZi9wZXJmX3Rlc3QuaCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuY3BwJywKLSAgICAgICAg
ICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmln
cy5oJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2Fu
Z2xlX3Rlc3RfaW5zdGFudGlhdGUuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3Ny
Yy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaCcsCi0gICAgICAgIF0s
Ci0gICAgICAgICdhbmdsZV9wZXJmX3Rlc3RzX3dpbl9zb3VyY2VzJzoKLSAgICAgICAgWwotICAg
ICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvSW5kZXhEYXRhTWFu
YWdlclRlc3QuY3BwJywKLSAgICAgICAgXQotICAgIH0sCi0gICAgIyBFdmVyeXRoaW5nIGJlbG93
IChleGNlcHQgV2luUlQtcmVsYXRlZCBjb25maWcpIG11c3QgYmUgYWxzbyBtYWludGFpbmVkIGZv
ciBHTi4KLSAgICAjIElmIHlvdSBjaGFuZ2UgYW55dGhpbmcgYmVsb3csIGFsc28gdXBkYXRlIGFu
Z2xlL3NyYy90ZXN0cy9CVUlMRC5nbi4KLSAgICAnZGVwZW5kZW5jaWVzJzoKLSAgICBbCi0gICAg
ICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9hbmdsZS5neXA6YW5nbGVfY29tbW9uJywKLSAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL2FuZ2xlLmd5cDpsaWJBTkdMRScsICMgZm9yIHVuaXQgdGVzdGlu
ZwotICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmxpYkdMRVN2MicsCi0gICAg
ICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9hbmdsZS5neXA6bGliRUdMJywKLSAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL3Rlc3RzL3Rlc3RzLmd5cDphbmdsZV90ZXN0X3N1cHBvcnQnLAotICAgICAg
ICAnPChhbmdsZV9wYXRoKS91dGlsL3V0aWwuZ3lwOmFuZ2xlX3V0aWwnLAotICAgIF0sCi0gICAg
J2luY2x1ZGVfZGlycyc6Ci0gICAgWwotICAgICAgICAnPChhbmdsZV9wYXRoKS9pbmNsdWRlJywK
LSAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzJwotICAgIF0sCi0gICAgJ3NvdXJjZXMn
OgotICAgIFsKLSAgICAgICAgJzxAKGFuZ2xlX3BlcmZfdGVzdHNfc291cmNlcyknLAotICAgIF0s
Ci0gICAgJ2NvbmRpdGlvbnMnOgotICAgIFsKLSAgICAgICAgWydPUz09IndpbiInLAotICAgICAg
ICB7Ci0gICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAg
ICAgJzxAKGFuZ2xlX3BlcmZfdGVzdHNfd2luX3NvdXJjZXMpJywKLSAgICAgICAgICAgIF0sCi0g
ICAgICAgIH1dLAotICAgIF0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9hbmdsZV9wZXJmdGVzdHNfbWFpbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvYW5nbGVfcGVyZnRlc3RzX21haW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyMGY4ZGFjOWZlZDM2YTg2ZjFkNDYzNDE0ZjhiODNhZTM4NzZjNTI0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV9wZXJmdGVzdHNfbWFpbi5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxOCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIGFuZ2xlX3BlcmZ0ZXN0c19t
YWluLmNwcAotLy8gICBFbnRyeSBwb2ludCBmb3IgdGhlIGd0ZXN0LWJhc2VkIHBlcmZvcm1hbmNl
IHRlc3RzLgotLy8KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLWludCBtYWluKGludCBh
cmdjLCBjaGFyICoqYXJndikKLXsKLSAgICB0ZXN0aW5nOjpJbml0R29vZ2xlVGVzdCgmYXJnYywg
YXJndik7Ci0gICAgdGVzdGluZzo6QWRkR2xvYmFsVGVzdEVudmlyb25tZW50KG5ldyB0ZXN0aW5n
OjpFbnZpcm9ubWVudCgpKTsKLSAgICBpbnQgcnQgPSBSVU5fQUxMX1RFU1RTKCk7Ci0gICAgcmV0
dXJuIHJ0OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2FuZ2xlX3VuaXR0ZXN0cy5neXBpIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2FuZ2xlX3VuaXR0ZXN0cy5neXBpCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzNj
OWRjMTlhY2UzYmYyN2JiZmQ5MGI3Nzg4YTUxZjQyYTMzM2M1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9hbmdsZV91bml0dGVzdHMuZ3lwaQorKysgL2Rldi9udWxsCkBAIC0xLDE1MiArMCwwIEBA
Ci0jIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0jIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCi0KLSMgVGhpcyAuZ3lwaSBkZXNjcmliZXMgYWxsIG9mIHRoZSBzb3VyY2VzIGFuZCBkZXBl
bmRlbmNpZXMgdG8gYnVpbGQgYQotIyB1bmlmaWVkICJhbmdsZV91bml0dGVzdHMiIHRhcmdldCwg
d2hpY2ggY29udGFpbnMgYWxsIG9mIEFOR0xFJ3MKLSMgdGVzdHMgdGhhdCBkb24ndCByZXF1aXJl
IGEgZnVsbHkgZnVuY3Rpb25hbCBBTkdMRSBpbiBvcmRlciB0byBydW4KLSMgKGNvbXBpbGVyIHRl
c3RzLCBwcmVwcm9jZXNzb3IgdGVzdHMsIGV0Yy4pLiBJdCByZXF1aXJlcyBhIHBhcmVudAotIyB0
YXJnZXQgdG8gaW5jbHVkZSB0aGlzIGd5cGkgaW4gYW4gZXhlY3V0YWJsZSB0YXJnZXQgY29udGFp
bmluZyBhCi0jIGd0ZXN0IGhhcm5lc3MgaW4gYSBtYWluLmNwcC4KLQotewotICAgICd2YXJpYWJs
ZXMnOgotICAgIHsKLSAgICAgICAgJ2FuZ2xlX3VuaXR0ZXN0c19zb3VyY2VzJzoKLSAgICAgICAg
WwotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2NvbW1vbi9CaXRTZXRJdGVyYXRvcl91
bml0dGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2NvbW1vbi9PcHRp
b25hbF91bml0dGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2NvbW1v
bi9tYXRodXRpbF91bml0dGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3Jj
L2NvbW1vbi9tYXRyaXhfdXRpbHNfdW5pdHRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xl
X3BhdGgpL3NyYy9jb21tb24vc3RyaW5nX3V0aWxzX3VuaXR0ZXN0LmNwcCcsCi0gICAgICAgICAg
ICAnPChhbmdsZV9wYXRoKS9zcmMvY29tbW9uL3V0aWxpdGllc191bml0dGVzdC5jcHAnLAotICAg
ICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2xpYkFOR0xFL0JpbmFyeVN0cmVhbV91bml0dGVz
dC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2xpYkFOR0xFL0NvbmZpZ191
bml0dGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2xpYkFOR0xFL0Zl
bmNlX3VuaXR0ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5H
TEUvSGFuZGxlQWxsb2NhdG9yX3VuaXR0ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9w
YXRoKS9zcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3JfdW5pdHRlc3QuY3BwJywKLSAg
ICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9saWJBTkdMRS9JbWFnZV91bml0dGVzdC5jcHAn
LAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2xpYkFOR0xFL0ltYWdlSW5kZXhJdGVy
YXRvcl91bml0dGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2xpYkFO
R0xFL1Byb2dyYW1fdW5pdHRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3Ny
Yy9saWJBTkdMRS9SZXNvdXJjZU1hbmFnZXJfdW5pdHRlc3QuY3BwJywKLSAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy9saWJBTkdMRS9TdXJmYWNlX3VuaXR0ZXN0LmNwcCcsCi0gICAgICAg
ICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5HTEUvVHJhbnNmb3JtRmVlZGJhY2tfdW5pdHRl
c3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9CdWZmZXJJbXBsX21vY2suaCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJJbXBsX21vY2suaCcsCi0gICAgICAgICAgICAnPChh
bmdsZV9wYXRoKS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUltcGxfbW9jay5oJywKLSAg
ICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9saWJBTkdMRS9yZW5kZXJlci9SZW5kZXJidWZm
ZXJJbXBsX21vY2suaCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvSW1hZ2VJbXBsX21vY2suaCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGxfbW9jay5oJywKLSAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy9saWJBTkdMRS9yZW5kZXJlci9UcmFuc2Zvcm1GZWVkYmFja0ltcGxf
bW9jay5oJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9saWJBTkdMRS9zaWduYWxf
dXRpbHNfdW5pdHRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9saWJB
TkdMRS92YWxpZGF0aW9uRVNfdW5pdHRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3Bh
dGgpL3NyYy90ZXN0cy9hbmdsZV91bml0dGVzdHNfdXRpbHMuaCcsCi0gICAgICAgICAgICAnPChh
bmdsZV9wYXRoKS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvQVBJX3Rlc3QuY3BwJywKLSAgICAg
ICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9Db2xsZWN0VmFy
aWFibGVzX3Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9j
b21waWxlcl90ZXN0cy9Db25zdGFudEZvbGRpbmdfdGVzdC5jcHAnLAotICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0RlYnVnU2hhZGVyUHJlY2lzaW9u
X3Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxl
cl90ZXN0cy9FbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3RfdGVzdC5jcHAnLAotICAgICAgICAg
ICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0V4cHJlc3Npb25MaW1p
dF90ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvY29tcGls
ZXJfdGVzdHMvRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWRfdGVzdC5jcHAnLAotICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0ZyYWdEZXB0aF90ZXN0LmNw
cCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMv
R0xTTENvbXBhdGliaWxpdHlPdXRwdXRfdGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVf
cGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0ludGVybU5vZGVfdGVzdC5jcHAnLAotICAg
ICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL01hbGZvcm1l
ZFNoYWRlcl90ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMv
Y29tcGlsZXJfdGVzdHMvTlZfZHJhd19idWZmZXJzX3Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9QYWNrX1VucGFja190ZXN0LmNw
cCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMv
UHJ1bmVFbXB0eURlY2xhcmF0aW9uc190ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9w
YXRoKS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvUHJ1bmVVbnVzZWRGdW5jdGlvbnNfdGVzdC5j
cHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3Rz
L1F1YWxpZmljYXRpb25PcmRlckVTU0wzMV90ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmds
ZV9wYXRoKS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvUXVhbGlmaWNhdGlvbk9yZGVyX3Rlc3Qu
Y3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0
cy9SZWNvcmRDb25zdGFudFByZWNpc2lvbl90ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmds
ZV9wYXRoKS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvUmVtb3ZlUG93X3Rlc3QuY3BwJywKLSAg
ICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9TaGFkZXJF
eHRlbnNpb25fdGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3Rz
L2NvbXBpbGVyX3Rlc3RzL1NoYWRlclZhcmlhYmxlX3Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9TaENvbXBpbGVfdGVzdC5jcHAn
LAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1R5
cGVUcmFja2luZ190ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVz
dHMvY29tcGlsZXJfdGVzdHMvVmFyaWFibGVQYWNrZXJfdGVzdC5jcHAnLAotICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1dvcmtHcm91cFNpemVfdGVz
dC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nv
cl90ZXN0cy9jaGFyX3Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90
ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvY29tbWVudF90ZXN0LmNwcCcsCi0gICAgICAgICAgICAn
PChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2RlZmluZV90ZXN0LmNw
cCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rl
c3RzL2Vycm9yX3Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0
cy9wcmVwcm9jZXNzb3JfdGVzdHMvZXh0ZW5zaW9uX3Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvaWRlbnRpZmllcl90ZXN0
LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29y
X3Rlc3RzL2lmX3Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0
cy9wcmVwcm9jZXNzb3JfdGVzdHMvaW5wdXRfdGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9sb2NhdGlvbl90ZXN0LmNwcCcs
Ci0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3Rz
L01vY2tEaWFnbm9zdGljcy5oJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0
cy9wcmVwcm9jZXNzb3JfdGVzdHMvTW9ja0RpcmVjdGl2ZUhhbmRsZXIuaCcsCi0gICAgICAgICAg
ICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL251bWJlcl90ZXN0
LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29y
X3Rlc3RzL29wZXJhdG9yX3Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3Ny
Yy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvcHJhZ21hX3Rlc3QuY3BwJywKLSAgICAgICAgICAg
ICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvUHJlcHJvY2Vzc29y
VGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3ByZXByb2Nl
c3Nvcl90ZXN0cy9QcmVwcm9jZXNzb3JUZXN0LmgnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0
aCkvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9zcGFjZV90ZXN0LmNwcCcsCi0gICAgICAg
ICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL3Rva2VuX3Rl
c3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wcmVwcm9jZXNz
b3JfdGVzdHMvdmVyc2lvbl90ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvdGVzdHMvdGVzdF91dGlscy9jb21waWxlcl90ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChh
bmdsZV9wYXRoKS9zcmMvdGVzdHMvdGVzdF91dGlscy9jb21waWxlcl90ZXN0LmgnLAotICAgICAg
ICBdLAotICAgICAgICAjIFRPRE8oam1hZGlsbCk6IHNob3VsZCBwcm9iYWJseSBjYWxsIHRoaXMg
d2luZG93cyBzb3VyY2VzCi0gICAgICAgICdhbmdsZV91bml0dGVzdHNfaGxzbF9zb3VyY2VzJzoK
LSAgICAgICAgWwotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVy
X3Rlc3RzL1Vucm9sbEZsYXR0ZW5fdGVzdC5jcHAnLAotICAgICAgICBdLAotICAgIH0sCi0gICAg
IyBFdmVyeXRoaW5nIGJlbG93IHRoaXMgYnV0IHRoZSBXaW5SVCBjb25maWd1cmF0aW9uIGlzIGR1
cGxpY2F0ZWQgaW4gdGhlIEdOIGJ1aWxkLgotICAgICMgSWYgeW91IGNoYW5nZSBhbnl0aGluZyBh
bHNvIGNoYW5nZSBhbmdsZS9zcmMvdGVzdHMvQlVJTEQuZ24KLSAgICAnZGVwZW5kZW5jaWVzJzoK
LSAgICBbCi0gICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9hbmdsZS5neXA6bGliQU5HTEUnLAot
ICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOnByZXByb2Nlc3NvcicsCi0gICAg
ICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9hbmdsZS5neXA6dHJhbnNsYXRvcl9zdGF0aWMnLAotICAg
ICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvdGVzdHMuZ3lwOmFuZ2xlX3Rlc3Rfc3VwcG9y
dCcsCi0gICAgXSwKLSAgICAnaW5jbHVkZV9kaXJzJzoKLSAgICBbCi0gICAgICAgICc8KGFuZ2xl
X3BhdGgpL2luY2x1ZGUnLAotICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMnLAotICAgIF0sCi0g
ICAgJ3NvdXJjZXMnOgotICAgIFsKLSAgICAgICAgJzxAKGFuZ2xlX3VuaXR0ZXN0c19zb3VyY2Vz
KScsCi0gICAgXSwKLSAgICAnY29uZGl0aW9ucyc6Ci0gICAgWwotICAgICAgICBbJ2FuZ2xlX2J1
aWxkX3dpbnJ0PT0xJywKLSAgICAgICAgewotICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAg
ICAgICAgWwotICAgICAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvd2lucnQvQ29yZVdpbmRvd05hdGl2ZVdpbmRvd191bml0dGVzdC5jcHAn
LAotICAgICAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvd2lucnQvU3dhcENoYWluUGFuZWxOYXRpdmVXaW5kb3dfdW5pdHRlc3QuY3BwJywK
LSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICBbCi0g
ICAgICAgICAgICAgICAgJ0FOR0xFX0VOQUJMRV9EM0QxMScsCi0gICAgICAgICAgICBdLAotICAg
ICAgICAgICAgJ21zdnNfc2V0dGluZ3MnOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICdWQ0xpbmtlclRvb2wnOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
J0FkZGl0aW9uYWxEZXBlbmRlbmNpZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAg
ICAgICAgICAgICAgICAgICAncnVudGltZW9iamVjdC5saWInLAotICAgICAgICAgICAgICAgICAg
ICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9LAotICAgICAgICB9XSwKLSAg
ICAgICAgWydPUz09IndpbiInLAotICAgICAgICB7Ci0gICAgICAgICAgICAjIFRPRE8oY3dhbGxl
eik6IG1ha2UgdGhpcyBhbmdsZV9lbmFibGVfaGxzbCBpbnN0ZWFkIChyZXF1aXJlcyBneXAgZmls
ZSByZWZhY3RvcmluZykKLSAgICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAgIFsKLSAg
ICAgICAgICAgICAgICAnQU5HTEVfRU5BQkxFX0hMU0wnLAotICAgICAgICAgICAgXSwKLSAgICAg
ICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAnPEAoYW5n
bGVfdW5pdHRlc3RzX2hsc2xfc291cmNlcyknLAotICAgICAgICAgICAgXSwKLSAgICAgICAgfV0s
Ci0gICAgXSwKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9hbmdsZV91bml0dGVzdHNfbWFpbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvYW5nbGVfdW5pdHRlc3RzX21haW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjNTJkZjE0ODdkMDhmNmY1YzkyNTMzMDM1MjEzZjlhNzcyNjNmZDMxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9hbmdsZV91bml0dGVzdHNfbWFpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwzNiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0j
aW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLWNsYXNzIENvbXBpbGVyVGVzdEVudmly
b25tZW50IDogcHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50Ci17Ci0gIHB1YmxpYzoKLSAgICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKQotICAgIHsKLSAgICAgICAgaWYgKCFTaEluaXRpYWxpemUoKSkK
LSAgICAgICAgewotICAgICAgICAgICAgRkFJTCgpIDw8ICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0
aGUgY29tcGlsZXIuIjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpCi0gICAgewotICAgICAgICBpZiAoIVNoRmluYWxpemUoKSkKLSAgICAgICAgewotICAg
ICAgICAgICAgRkFJTCgpIDw8ICJGYWlsZWQgdG8gZmluYWxpemUgdGhlIGNvbXBpbGVyLiI7Ci0g
ICAgICAgIH0KLSAgICB9Ci19OwotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17
Ci0gICAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotICAgIHRlc3Rpbmc6
OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgQ29tcGlsZXJUZXN0RW52aXJvbm1lbnQoKSk7
Ci0gICAgaW50IHJ0ID0gUlVOX0FMTF9URVNUUygpOwotICAgIHJldHVybiBydDsKLX0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV91bml0dGVzdHNf
dXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV91bml0dGVz
dHNfdXRpbHMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg3YzE2ODVjZWYxMDhi
NzViZDFkN2Y5NTRjNmUwNDM4YWMwYTE0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVf
dW5pdHRlc3RzX3V0aWxzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBAQAotLy8KLS8v
IENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgot
Ly8KLS8vIGFuZ2xlX3VuaXR0ZXN0c191dGlscy5oOgotLy8gICBIZWxwZXJzIGZvciBtb2NraW5n
IGFuZCB1bml0IHRlc3RpbmcuCi0KLSNpZm5kZWYgVEVTVFNfQU5HTEVfVU5JVFRFU1RTX1VUSUxT
X0hfCi0jZGVmaW5lIFRFU1RTX0FOR0xFX1VOSVRURVNUU19VVElMU19IXwotCi0jaW5jbHVkZSAi
bGliQU5HTEUvU3VyZmFjZS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0NvbnRleHRJ
bXBsLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRUdMSW1wbEZhY3RvcnkuaCIKLSNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9HTEltcGxGYWN0b3J5LmgiCi0KLW5hbWVzcGFjZSBy
eAotewotCi0vLyBVc2VmdWwgd2hlbiBtb2NraW5nIGEgcGFydCBvZiB0aGUgR0xJbXBsRmFjdG9y
eSBjbGFzcwotY2xhc3MgTnVsbEZhY3RvcnkgOiBwdWJsaWMgR0xJbXBsRmFjdG9yeQotewotICBw
dWJsaWM6Ci0gICAgTnVsbEZhY3RvcnkoKSB7fQotCi0gICAgLy8gU2hhZGVyIGNyZWF0aW9uCi0g
ICAgQ29tcGlsZXJJbXBsICpjcmVhdGVDb21waWxlcigpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxw
dHI7IH0KLSAgICBTaGFkZXJJbXBsICpjcmVhdGVTaGFkZXIoY29uc3QgZ2w6OlNoYWRlclN0YXRl
ICZkYXRhKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAgUHJvZ3JhbUltcGwgKmNy
ZWF0ZVByb2dyYW0oY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmZGF0YSkgb3ZlcnJpZGUgeyByZXR1
cm4gbnVsbHB0cjsgfQotCi0gICAgLy8gRnJhbWVidWZmZXIgY3JlYXRpb24KLSAgICBGcmFtZWJ1
ZmZlckltcGwgKmNyZWF0ZUZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZk
YXRhKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0g
ICAgLy8gVGV4dHVyZSBjcmVhdGlvbgotICAgIFRleHR1cmVJbXBsICpjcmVhdGVUZXh0dXJlKGNv
bnN0IGdsOjpUZXh0dXJlU3RhdGUgJmRhdGEpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0K
LQotICAgIC8vIFJlbmRlcmJ1ZmZlciBjcmVhdGlvbgotICAgIFJlbmRlcmJ1ZmZlckltcGwgKmNy
ZWF0ZVJlbmRlcmJ1ZmZlcigpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLQotICAgIC8v
IEJ1ZmZlciBjcmVhdGlvbgotICAgIEJ1ZmZlckltcGwgKmNyZWF0ZUJ1ZmZlcigpIG92ZXJyaWRl
IHsgcmV0dXJuIG51bGxwdHI7IH0KLQotICAgIC8vIFZlcnRleCBBcnJheSBjcmVhdGlvbgotICAg
IFZlcnRleEFycmF5SW1wbCAqY3JlYXRlVmVydGV4QXJyYXkoY29uc3QgZ2w6OlZlcnRleEFycmF5
U3RhdGUgJmRhdGEpIG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAg
ICB9Ci0KLSAgICAvLyBRdWVyeSBhbmQgRmVuY2UgY3JlYXRpb24KLSAgICBRdWVyeUltcGwgKmNy
ZWF0ZVF1ZXJ5KEdMZW51bSB0eXBlKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0gICAg
RmVuY2VOVkltcGwgKmNyZWF0ZUZlbmNlTlYoKSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9
Ci0gICAgRmVuY2VTeW5jSW1wbCAqY3JlYXRlRmVuY2VTeW5jKCkgb3ZlcnJpZGUgeyByZXR1cm4g
bnVsbHB0cjsgfQotCi0gICAgLy8gVHJhbnNmb3JtIEZlZWRiYWNrIGNyZWF0aW9uCi0gICAgVHJh
bnNmb3JtRmVlZGJhY2tJbXBsICpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjayhjb25zdCBnbDo6VHJh
bnNmb3JtRmVlZGJhY2tTdGF0ZSAmc3RhdGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICAvLyBTYW1wbGVyIG9iamVjdCBjcmVhdGlvbgotICAg
IFNhbXBsZXJJbXBsICpjcmVhdGVTYW1wbGVyKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsg
fQotCi0gICAgc3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4gY3JlYXRlUGF0aHMoR0xzaXplaSByYW5n
ZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnZlY3RvcjxQYXRoSW1wbCAq
PigpOwotICAgIH0KLX07Ci0KLS8vIEEgY2xhc3Mgd2l0aCBhbGwgdGhlIGZhY3RvcnkgbWV0aG9k
cyBtb2NrZWQuCi1jbGFzcyBNb2NrR0xGYWN0b3J5IDogcHVibGljIEdMSW1wbEZhY3RvcnkKLXsK
LSAgcHVibGljOgotICAgIE1PQ0tfTUVUSE9EMShjcmVhdGVDb250ZXh0LCBDb250ZXh0SW1wbCAq
KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJikpOwotICAgIE1PQ0tfTUVUSE9EMChjcmVhdGVDb21w
aWxlciwgQ29tcGlsZXJJbXBsICooKSk7Ci0gICAgTU9DS19NRVRIT0QxKGNyZWF0ZVNoYWRlciwg
U2hhZGVySW1wbCAqKGNvbnN0IGdsOjpTaGFkZXJTdGF0ZSAmKSk7Ci0gICAgTU9DS19NRVRIT0Qx
KGNyZWF0ZVByb2dyYW0sIFByb2dyYW1JbXBsICooY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmKSk7
Ci0gICAgTU9DS19NRVRIT0QxKGNyZWF0ZUZyYW1lYnVmZmVyLCBGcmFtZWJ1ZmZlckltcGwgKihj
b25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmKSk7Ci0gICAgTU9DS19NRVRIT0QxKGNyZWF0ZVRl
eHR1cmUsIFRleHR1cmVJbXBsICooY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmKSk7Ci0gICAgTU9D
S19NRVRIT0QwKGNyZWF0ZVJlbmRlcmJ1ZmZlciwgUmVuZGVyYnVmZmVySW1wbCAqKCkpOwotICAg
IE1PQ0tfTUVUSE9EMChjcmVhdGVCdWZmZXIsIEJ1ZmZlckltcGwgKigpKTsKLSAgICBNT0NLX01F
VEhPRDEoY3JlYXRlVmVydGV4QXJyYXksIFZlcnRleEFycmF5SW1wbCAqKGNvbnN0IGdsOjpWZXJ0
ZXhBcnJheVN0YXRlICYpKTsKLSAgICBNT0NLX01FVEhPRDEoY3JlYXRlUXVlcnksIFF1ZXJ5SW1w
bCAqKEdMZW51bSB0eXBlKSk7Ci0gICAgTU9DS19NRVRIT0QwKGNyZWF0ZUZlbmNlTlYsIEZlbmNl
TlZJbXBsICooKSk7Ci0gICAgTU9DS19NRVRIT0QwKGNyZWF0ZUZlbmNlU3luYywgRmVuY2VTeW5j
SW1wbCAqKCkpOwotICAgIE1PQ0tfTUVUSE9EMShjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaywKLSAg
ICAgICAgICAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tJbXBsICooY29uc3QgZ2w6OlRyYW5zZm9y
bUZlZWRiYWNrU3RhdGUgJikpOwotICAgIE1PQ0tfTUVUSE9EMChjcmVhdGVTYW1wbGVyLCBTYW1w
bGVySW1wbCAqKCkpOwotICAgIE1PQ0tfTUVUSE9EMShjcmVhdGVQYXRocywgc3RkOjp2ZWN0b3I8
UGF0aEltcGwgKj4oR0xzaXplaSkpOwotfTsKLQotY2xhc3MgTW9ja0VHTEZhY3RvcnkgOiBwdWJs
aWMgRUdMSW1wbEZhY3RvcnkKLXsKLSAgcHVibGljOgotICAgIE1PQ0tfTUVUSE9ENChjcmVhdGVX
aW5kb3dTdXJmYWNlLAotICAgICAgICAgICAgICAgICBTdXJmYWNlSW1wbCAqKGNvbnN0IGVnbDo6
U3VyZmFjZVN0YXRlICYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWds
OjpDb25maWcgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5k
b3dUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmli
dXRlTWFwICYpKTsKLSAgICBNT0NLX01FVEhPRDMoY3JlYXRlUGJ1ZmZlclN1cmZhY2UsCi0gICAg
ICAgICAgICAgICAgIFN1cmZhY2VJbXBsICooY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICYpKTsKLSAg
ICBNT0NLX01FVEhPRDQoY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIsCi0gICAgICAgICAg
ICAgICAgIFN1cmZhY2VJbXBsICooY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmKSk7Ci0gICAgTU9DS19NRVRIT0Q0
KGNyZWF0ZVBpeG1hcFN1cmZhY2UsCi0gICAgICAgICAgICAgICAgIFN1cmZhY2VJbXBsICooY29u
c3QgZWdsOjpTdXJmYWNlU3RhdGUgJiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkNvbmZpZyAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdGl2
ZVBpeG1hcFR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpB
dHRyaWJ1dGVNYXAgJikpOwotICAgIE1PQ0tfTUVUSE9EMyhjcmVhdGVJbWFnZSwgSW1hZ2VJbXBs
ICooRUdMZW51bSwgZWdsOjpJbWFnZVNpYmxpbmcgKiwgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAg
JikpOwotICAgIE1PQ0tfTUVUSE9EMShjcmVhdGVDb250ZXh0LCBDb250ZXh0SW1wbCAqKGNvbnN0
IGdsOjpDb250ZXh0U3RhdGUgJikpOwotICAgIE1PQ0tfTUVUSE9EMihjcmVhdGVTdHJlYW1Qcm9k
dWNlckQzRFRleHR1cmVOVjEyLAotICAgICAgICAgICAgICAgICBTdHJlYW1Qcm9kdWNlckltcGwg
KihlZ2w6OlN0cmVhbTo6Q29uc3VtZXJUeXBlLCBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmKSk7
Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgcngKLQotI2VuZGlmIC8vIFRFU1RTX0FOR0xFX1VOSVRU
RVNUU19VVElMU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2NvbXBpbGVyX3Rlc3RzL0FQSV90ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9BUElfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDIxN2EyNjBmYThjNTA4NGQxODNkMWU2YTYwMDU2YTk5M2JjNzFiNzUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0FQSV90ZXN0LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gQVBJX3Rlc3QuY3BwOgot
Ly8gICBTb21lIHRlc3RzIGZvciB0aGUgY29tcGlsZXIgQVBJLgotLy8KLQotI2luY2x1ZGUgImFu
Z2xlX2dsLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJHTFNMQU5HL1No
YWRlckxhbmcuaCIKLQotVEVTVChBUElUZXN0LCBDb21wYXJlU2hCdWlsdEluUmVzb3VyY2VzKQot
ewotICAgIFNoQnVpbHRJblJlc291cmNlcyBhX3Jlc291cmNlczsKLSAgICBtZW1zZXQoJmFfcmVz
b3VyY2VzLCA4OCwgc2l6ZW9mKGFfcmVzb3VyY2VzKSk7Ci0gICAgU2hJbml0QnVpbHRJblJlc291
cmNlcygmYV9yZXNvdXJjZXMpOwotCi0gICAgU2hCdWlsdEluUmVzb3VyY2VzIGJfcmVzb3VyY2Vz
OwotICAgIG1lbXNldCgmYl9yZXNvdXJjZXMsIDc3LCBzaXplb2YoYl9yZXNvdXJjZXMpKTsKLSAg
ICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZiX3Jlc291cmNlcyk7Ci0KLSAgICBFWFBFQ1RfVFJV
RShtZW1jbXAoJmFfcmVzb3VyY2VzLCAmYl9yZXNvdXJjZXMsIHNpemVvZihhX3Jlc291cmNlcykp
ID09IDApOwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvY29tcGlsZXJfdGVzdHMvQ29sbGVjdFZhcmlhYmxlc190ZXN0LmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9Db2xsZWN0VmFyaWFibGVzX3Rl
c3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjkzNzRmNTQ0YTFkOTBkNThl
NzhiOGExYmFjZWExZmY3OWJiM2UwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90
ZXN0cy9Db2xsZWN0VmFyaWFibGVzX3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzQwICsw
LDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gQ29sbGVjdFZhcmlhYmxlc190ZXN0LmNwcDoKLS8vICAg
U29tZSB0ZXN0cyBmb3Igc2hhZGVyIGluc3BlY3Rpb24KLS8vCi0KLSNpbmNsdWRlIDxtZW1vcnk+
Ci0KLSNpbmNsdWRlICJhbmdsZV9nbC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0jaW5j
bHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9UcmFuc2xhdG9yR0xTTC5oIgotCi0jZGVmaW5lIEVYUEVDVF9HTEVOVU1fRVEoZXhwZWN0ZWQs
IGFjdHVhbCkgXAotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTGVudW0+KGV4cGVjdGVkKSwg
c3RhdGljX2Nhc3Q8R0xlbnVtPihhY3R1YWwpKQotCi1jbGFzcyBDb2xsZWN0VmFyaWFibGVzVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICBDb2xsZWN0VmFyaWFi
bGVzVGVzdChHTGVudW0gc2hhZGVyVHlwZSkgOiBtU2hhZGVyVHlwZShzaGFkZXJUeXBlKSB7fQot
Ci0gIHByb3RlY3RlZDoKLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXM7Ci0gICAgICAgIFNoSW5pdEJ1aWx0SW5SZXNv
dXJjZXMoJnJlc291cmNlcyk7Ci0gICAgICAgIHJlc291cmNlcy5NYXhEcmF3QnVmZmVycyA9IDg7
Ci0KLSAgICAgICAgaW5pdFRyYW5zbGF0b3IocmVzb3VyY2VzKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGluaXRUcmFuc2xhdG9yKGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVzb3VyY2VzKQotICAg
IHsKLSAgICAgICAgbVRyYW5zbGF0b3IucmVzZXQoCi0gICAgICAgICAgICBuZXcgVHJhbnNsYXRv
ckdMU0wobVNoYWRlclR5cGUsIFNIX0dMRVMzX1NQRUMsIFNIX0dMU0xfQ09NUEFUSUJJTElUWV9P
VVRQVVQpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUobVRyYW5zbGF0b3ItPkluaXQocmVzb3VyY2Vz
KSk7Ci0gICAgfQotCi0gICAgLy8gRm9yIHVzZSBpbiB0aGUgZ2xfRGVwdGhSYW5nZSB0ZXN0cy4K
LSAgICB2b2lkIHZhbGlkYXRlRGVwdGhSYW5nZVNoYWRlcihjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nKQotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciAqc2hhZGVyU3RyaW5nc1tdID0g
eyBzaGFkZXJTdHJpbmcuY19zdHIoKSB9OwotICAgICAgICBBU1NFUlRfVFJVRShtVHJhbnNsYXRv
ci0+Y29tcGlsZShzaGFkZXJTdHJpbmdzLCAxLCBTSF9WQVJJQUJMRVMpKTsKLQotICAgICAgICBj
b25zdCBzdGQ6OnZlY3RvcjxzaDo6VW5pZm9ybT4gJnVuaWZvcm1zID0gbVRyYW5zbGF0b3ItPmdl
dFVuaWZvcm1zKCk7Ci0gICAgICAgIEFTU0VSVF9FUSgxdSwgdW5pZm9ybXMuc2l6ZSgpKTsKLQot
ICAgICAgICBjb25zdCBzaDo6VW5pZm9ybSAmdW5pZm9ybSA9IHVuaWZvcm1zWzBdOwotICAgICAg
ICBFWFBFQ1RfRVEoImdsX0RlcHRoUmFuZ2UiLCB1bmlmb3JtLm5hbWUpOwotICAgICAgICBBU1NF
UlRfVFJVRSh1bmlmb3JtLmlzU3RydWN0KCkpOwotICAgICAgICBBU1NFUlRfRVEoM3UsIHVuaWZv
cm0uZmllbGRzLnNpemUoKSk7Ci0KLSAgICAgICAgYm9vbCBmb3VuZE5lYXIgPSBmYWxzZTsKLSAg
ICAgICAgYm9vbCBmb3VuZEZhciA9IGZhbHNlOwotICAgICAgICBib29sIGZvdW5kRGlmZiA9IGZh
bHNlOwotCi0gICAgICAgIGZvciAoY29uc3QgYXV0byAmZmllbGQgOiB1bmlmb3JtLmZpZWxkcykK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKGZpZWxkLm5hbWUgPT0gIm5lYXIiKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShmb3VuZE5lYXIpOwotICAgICAg
ICAgICAgICAgIGZvdW5kTmVhciA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBl
bHNlIGlmIChmaWVsZC5uYW1lID09ICJmYXIiKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIEVYUEVDVF9GQUxTRShmb3VuZEZhcik7Ci0gICAgICAgICAgICAgICAgZm91bmRGYXIgPSB0
cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIEFTU0VSVF9FUSgiZGlmZiIsIGZpZWxkLm5hbWUpOwotICAgICAgICAgICAg
ICAgIEVYUEVDVF9GQUxTRShmb3VuZERpZmYpOwotICAgICAgICAgICAgICAgIGZvdW5kRGlmZiA9
IHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEVYUEVDVF9FUSgwdSwgZmllbGQu
YXJyYXlTaXplKTsKLSAgICAgICAgICAgIEVYUEVDVF9GQUxTRShmaWVsZC5pc1N0cnVjdCgpKTsK
LSAgICAgICAgICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfSElHSF9GTE9BVCwgZmllbGQucHJlY2lz
aW9uKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGZpZWxkLnN0YXRpY1VzZSk7Ci0gICAgICAg
ICAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FULCBmaWVsZC50eXBlKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIEVYUEVDVF9UUlVFKGZvdW5kTmVhciAmJiBmb3VuZEZhciAmJiBmb3VuZERpZmYp
OwotICAgIH0KLQotICAgIC8vIEZvciB1c2UgaW4gdGVzdHMgZm9yIG91dHB1dCB2YXJpYmxlcy4K
LSAgICB2b2lkIHZhbGlkYXRlT3V0cHV0VmFyaWFibGVGb3JTaGFkZXIoY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHZhckluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICp2YXJOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzaDo6T3V0cHV0VmFyaWFibGUgKipvdXRSZXN1bHQpCi0g
ICAgewotICAgICAgICBjb25zdCBjaGFyICpzaGFkZXJTdHJpbmdzW10gPSB7c2hhZGVyU3RyaW5n
LmNfc3RyKCl9OwotICAgICAgICBBU1NFUlRfVFJVRShtVHJhbnNsYXRvci0+Y29tcGlsZShzaGFk
ZXJTdHJpbmdzLCAxLCBTSF9WQVJJQUJMRVMpKQotICAgICAgICAgICAgPDwgbVRyYW5zbGF0b3It
PmdldEluZm9TaW5rKCkuaW5mby5zdHIoKTsKLQotICAgICAgICBjb25zdCBhdXRvICZvdXRwdXRW
YXJpYWJsZXMgPSBtVHJhbnNsYXRvci0+Z2V0T3V0cHV0VmFyaWFibGVzKCk7Ci0gICAgICAgIEFT
U0VSVF9MVCh2YXJJbmRleCwgb3V0cHV0VmFyaWFibGVzLnNpemUoKSk7Ci0gICAgICAgIGNvbnN0
IHNoOjpPdXRwdXRWYXJpYWJsZSAmb3V0cHV0VmFyaWFibGUgPSBvdXRwdXRWYXJpYWJsZXNbdmFy
SW5kZXhdOwotICAgICAgICBFWFBFQ1RfRVEoLTEsIG91dHB1dFZhcmlhYmxlLmxvY2F0aW9uKTsK
LSAgICAgICAgRVhQRUNUX1RSVUUob3V0cHV0VmFyaWFibGUuc3RhdGljVXNlKTsKLSAgICAgICAg
RVhQRUNUX0VRKHZhck5hbWUsIG91dHB1dFZhcmlhYmxlLm5hbWUpOwotICAgICAgICAqb3V0UmVz
dWx0ID0gJm91dHB1dFZhcmlhYmxlOwotICAgIH0KLQotICAgIHZvaWQgY29tcGlsZShjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nKQotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciAqc2hh
ZGVyU3RyaW5nc1tdID0ge3NoYWRlclN0cmluZy5jX3N0cigpfTsKLSAgICAgICAgQVNTRVJUX1RS
VUUobVRyYW5zbGF0b3ItPmNvbXBpbGUoc2hhZGVyU3RyaW5ncywgMSwgU0hfVkFSSUFCTEVTKSk7
Ci0gICAgfQotCi0gICAgR0xlbnVtIG1TaGFkZXJUeXBlOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxU
cmFuc2xhdG9yR0xTTD4gbVRyYW5zbGF0b3I7Ci19OwotCi1jbGFzcyBDb2xsZWN0VmVydGV4VmFy
aWFibGVzVGVzdCA6IHB1YmxpYyBDb2xsZWN0VmFyaWFibGVzVGVzdAotewotICBwdWJsaWM6Ci0g
ICAgQ29sbGVjdFZlcnRleFZhcmlhYmxlc1Rlc3QoKSA6IENvbGxlY3RWYXJpYWJsZXNUZXN0KEdM
X1ZFUlRFWF9TSEFERVIpIHt9Ci19OwotCi1jbGFzcyBDb2xsZWN0RnJhZ21lbnRWYXJpYWJsZXNU
ZXN0IDogcHVibGljIENvbGxlY3RWYXJpYWJsZXNUZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICAgIENv
bGxlY3RGcmFnbWVudFZhcmlhYmxlc1Rlc3QoKSA6IENvbGxlY3RWYXJpYWJsZXNUZXN0KEdMX0ZS
QUdNRU5UX1NIQURFUikge30KLX07Ci0KLVRFU1RfRihDb2xsZWN0RnJhZ21lbnRWYXJpYWJsZXNU
ZXN0LCBTaW1wbGVPdXRwdXRWYXIpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgb3V0X2ZyYWdDb2xvcjtcbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIG91dF9mcmFnQ29sb3IgPSB2ZWM0
KDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwot
Ci0gICAgY29uc3QgYXV0byAmb3V0cHV0VmFyaWFibGVzID0gbVRyYW5zbGF0b3ItPmdldE91dHB1
dFZhcmlhYmxlcygpOwotICAgIEFTU0VSVF9FUSgxdSwgb3V0cHV0VmFyaWFibGVzLnNpemUoKSk7
Ci0KLSAgICBjb25zdCBzaDo6T3V0cHV0VmFyaWFibGUgJm91dHB1dFZhcmlhYmxlID0gb3V0cHV0
VmFyaWFibGVzWzBdOwotCi0gICAgRVhQRUNUX0VRKDB1LCBvdXRwdXRWYXJpYWJsZS5hcnJheVNp
emUpOwotICAgIEVYUEVDVF9FUSgtMSwgb3V0cHV0VmFyaWFibGUubG9jYXRpb24pOwotICAgIEVY
UEVDVF9HTEVOVU1fRVEoR0xfTUVESVVNX0ZMT0FULCBvdXRwdXRWYXJpYWJsZS5wcmVjaXNpb24p
OwotICAgIEVYUEVDVF9UUlVFKG91dHB1dFZhcmlhYmxlLnN0YXRpY1VzZSk7Ci0gICAgRVhQRUNU
X0dMRU5VTV9FUShHTF9GTE9BVF9WRUM0LCBvdXRwdXRWYXJpYWJsZS50eXBlKTsKLSAgICBFWFBF
Q1RfRVEoIm91dF9mcmFnQ29sb3IiLCBvdXRwdXRWYXJpYWJsZS5uYW1lKTsKLX0KLQotVEVTVF9G
KENvbGxlY3RGcmFnbWVudFZhcmlhYmxlc1Rlc3QsIExvY2F0aW9uT3V0cHV0VmFyKQotewotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAw
IGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImxh
eW91dChsb2NhdGlvbj01KSBvdXQgdmVjNCBvdXRfZnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgotICAgICAgICAiICAgb3V0X2ZyYWdDb2xvciA9IHZlYzQoMS4wKTtcbiIK
LSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0KLSAgICBjb25z
dCBhdXRvICZvdXRwdXRWYXJpYWJsZXMgPSBtVHJhbnNsYXRvci0+Z2V0T3V0cHV0VmFyaWFibGVz
KCk7Ci0gICAgQVNTRVJUX0VRKDF1LCBvdXRwdXRWYXJpYWJsZXMuc2l6ZSgpKTsKLQotICAgIGNv
bnN0IHNoOjpPdXRwdXRWYXJpYWJsZSAmb3V0cHV0VmFyaWFibGUgPSBvdXRwdXRWYXJpYWJsZXNb
MF07Ci0KLSAgICBFWFBFQ1RfRVEoMHUsIG91dHB1dFZhcmlhYmxlLmFycmF5U2l6ZSk7Ci0gICAg
RVhQRUNUX0VRKDUsIG91dHB1dFZhcmlhYmxlLmxvY2F0aW9uKTsKLSAgICBFWFBFQ1RfR0xFTlVN
X0VRKEdMX01FRElVTV9GTE9BVCwgb3V0cHV0VmFyaWFibGUucHJlY2lzaW9uKTsKLSAgICBFWFBF
Q1RfVFJVRShvdXRwdXRWYXJpYWJsZS5zdGF0aWNVc2UpOwotICAgIEVYUEVDVF9HTEVOVU1fRVEo
R0xfRkxPQVRfVkVDNCwgb3V0cHV0VmFyaWFibGUudHlwZSk7Ci0gICAgRVhQRUNUX0VRKCJvdXRf
ZnJhZ0NvbG9yIiwgb3V0cHV0VmFyaWFibGUubmFtZSk7Ci19Ci0KLVRFU1RfRihDb2xsZWN0VmVy
dGV4VmFyaWFibGVzVGVzdCwgTG9jYXRpb25BdHRyaWJ1dGUpCi17Ci0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAg
ICAgImxheW91dChsb2NhdGlvbj01KSBpbiB2ZWM0IGluX1Bvc2l0aW9uO1xuIgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfUG9zaXRpb24gPSBpbl9Qb3NpdGlvbjtc
biIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0KLSAgICBj
b25zdCBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiAmYXR0cmlidXRlcyA9IG1UcmFuc2xhdG9y
LT5nZXRBdHRyaWJ1dGVzKCk7Ci0gICAgQVNTRVJUX0VRKDF1LCBhdHRyaWJ1dGVzLnNpemUoKSk7
Ci0KLSAgICBjb25zdCBzaDo6QXR0cmlidXRlICZhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzWzBdOwot
Ci0gICAgRVhQRUNUX0VRKDB1LCBhdHRyaWJ1dGUuYXJyYXlTaXplKTsKLSAgICBFWFBFQ1RfRVEo
NSwgYXR0cmlidXRlLmxvY2F0aW9uKTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0hJR0hfRkxP
QVQsIGF0dHJpYnV0ZS5wcmVjaXNpb24pOwotICAgIEVYUEVDVF9UUlVFKGF0dHJpYnV0ZS5zdGF0
aWNVc2UpOwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVRfVkVDNCwgYXR0cmlidXRlLnR5
cGUpOwotICAgIEVYUEVDVF9FUSgiaW5fUG9zaXRpb24iLCBhdHRyaWJ1dGUubmFtZSk7Ci19Ci0K
LVRFU1RfRihDb2xsZWN0VmVydGV4VmFyaWFibGVzVGVzdCwgU2ltcGxlSW50ZXJmYWNlQmxvY2sp
Ci17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVy
c2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInVuaWZvcm0gYiB7XG4iCi0gICAgICAgICIgIGZsb2F0
IGY7XG4iCi0gICAgICAgICJ9OyIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAg
IiAgIGdsX1Bvc2l0aW9uID0gdmVjNChmLCAwLjAsIDAuMCwgMS4wKTtcbiIKLSAgICAgICAgIn1c
biI7Ci0KLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0KLSAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxzaDo6SW50ZXJmYWNlQmxvY2s+ICZpbnRlcmZhY2VCbG9ja3MgPSBtVHJhbnNsYXRvci0+Z2V0
SW50ZXJmYWNlQmxvY2tzKCk7Ci0gICAgQVNTRVJUX0VRKDF1LCBpbnRlcmZhY2VCbG9ja3Muc2l6
ZSgpKTsKLQotICAgIGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmaW50ZXJmYWNlQmxvY2sgPSBp
bnRlcmZhY2VCbG9ja3NbMF07Ci0KLSAgICBFWFBFQ1RfRVEoMHUsIGludGVyZmFjZUJsb2NrLmFy
cmF5U2l6ZSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGludGVyZmFjZUJsb2NrLmlzUm93TWFqb3JMYXlv
dXQpOwotICAgIEVYUEVDVF9FUShzaDo6QkxPQ0tMQVlPVVRfU0hBUkVELCBpbnRlcmZhY2VCbG9j
ay5sYXlvdXQpOwotICAgIEVYUEVDVF9FUSgiYiIsIGludGVyZmFjZUJsb2NrLm5hbWUpOwotICAg
IEVYUEVDVF9UUlVFKGludGVyZmFjZUJsb2NrLnN0YXRpY1VzZSk7Ci0KLSAgICBBU1NFUlRfRVEo
MXUsIGludGVyZmFjZUJsb2NrLmZpZWxkcy5zaXplKCkpOwotCi0gICAgY29uc3Qgc2g6OkludGVy
ZmFjZUJsb2NrRmllbGQgJmZpZWxkID0gaW50ZXJmYWNlQmxvY2suZmllbGRzWzBdOwotCi0gICAg
RVhQRUNUX0dMRU5VTV9FUShHTF9ISUdIX0ZMT0FULCBmaWVsZC5wcmVjaXNpb24pOwotICAgIEVY
UEVDVF9UUlVFKGZpZWxkLnN0YXRpY1VzZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9B
VCwgZmllbGQudHlwZSk7Ci0gICAgRVhQRUNUX0VRKCJmIiwgZmllbGQubmFtZSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKGZpZWxkLmlzUm93TWFqb3JMYXlvdXQpOwotICAgIEVYUEVDVF9UUlVFKGZpZWxk
LmZpZWxkcy5lbXB0eSgpKTsKLX0KLQotVEVTVF9GKENvbGxlY3RWZXJ0ZXhWYXJpYWJsZXNUZXN0
LCBTaW1wbGVJbnN0YW5jZWRJbnRlcmZhY2VCbG9jaykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAi
dW5pZm9ybSBiIHtcbiIKLSAgICAgICAgIiAgZmxvYXQgZjtcbiIKLSAgICAgICAgIn0gYmxvY2tJ
bnN0YW5jZTsiCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9Qb3Np
dGlvbiA9IHZlYzQoYmxvY2tJbnN0YW5jZS5mLCAwLjAsIDAuMCwgMS4wKTtcbiIKLSAgICAgICAg
In1cbiI7Ci0KLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0KLSAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxzaDo6SW50ZXJmYWNlQmxvY2s+ICZpbnRlcmZhY2VCbG9ja3MgPSBtVHJhbnNsYXRvci0+
Z2V0SW50ZXJmYWNlQmxvY2tzKCk7Ci0gICAgQVNTRVJUX0VRKDF1LCBpbnRlcmZhY2VCbG9ja3Mu
c2l6ZSgpKTsKLQotICAgIGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmaW50ZXJmYWNlQmxvY2sg
PSBpbnRlcmZhY2VCbG9ja3NbMF07Ci0KLSAgICBFWFBFQ1RfRVEoMHUsIGludGVyZmFjZUJsb2Nr
LmFycmF5U2l6ZSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGludGVyZmFjZUJsb2NrLmlzUm93TWFqb3JM
YXlvdXQpOwotICAgIEVYUEVDVF9FUShzaDo6QkxPQ0tMQVlPVVRfU0hBUkVELCBpbnRlcmZhY2VC
bG9jay5sYXlvdXQpOwotICAgIEVYUEVDVF9FUSgiYiIsIGludGVyZmFjZUJsb2NrLm5hbWUpOwot
ICAgIEVYUEVDVF9FUSgiYmxvY2tJbnN0YW5jZSIsIGludGVyZmFjZUJsb2NrLmluc3RhbmNlTmFt
ZSk7Ci0gICAgRVhQRUNUX1RSVUUoaW50ZXJmYWNlQmxvY2suc3RhdGljVXNlKTsKLQotICAgIEFT
U0VSVF9FUSgxdSwgaW50ZXJmYWNlQmxvY2suZmllbGRzLnNpemUoKSk7Ci0KLSAgICBjb25zdCBz
aDo6SW50ZXJmYWNlQmxvY2tGaWVsZCAmZmllbGQgPSBpbnRlcmZhY2VCbG9jay5maWVsZHNbMF07
Ci0KLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0hJR0hfRkxPQVQsIGZpZWxkLnByZWNpc2lvbik7
Ci0gICAgRVhQRUNUX1RSVUUoZmllbGQuc3RhdGljVXNlKTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VR
KEdMX0ZMT0FULCBmaWVsZC50eXBlKTsKLSAgICBFWFBFQ1RfRVEoImYiLCBmaWVsZC5uYW1lKTsK
LSAgICBFWFBFQ1RfRkFMU0UoZmllbGQuaXNSb3dNYWpvckxheW91dCk7Ci0gICAgRVhQRUNUX1RS
VUUoZmllbGQuZmllbGRzLmVtcHR5KCkpOwotfQotCi1URVNUX0YoQ29sbGVjdFZlcnRleFZhcmlh
Ymxlc1Rlc3QsIFN0cnVjdEludGVyZmFjZUJsb2NrKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJz
dHJ1Y3Qgc3QgeyBmbG9hdCBmOyB9OyIKLSAgICAgICAgInVuaWZvcm0gYiB7XG4iCi0gICAgICAg
ICIgIHN0IHM7XG4iCi0gICAgICAgICJ9OyIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAg
ICAgICAgIiAgIGdsX1Bvc2l0aW9uID0gdmVjNChzLmYsIDAuMCwgMC4wLCAxLjApO1xuIgotICAg
ICAgICAifVxuIjsKLQotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLQotICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4gJmludGVyZmFjZUJsb2NrcyA9IG1UcmFuc2xh
dG9yLT5nZXRJbnRlcmZhY2VCbG9ja3MoKTsKLSAgICBBU1NFUlRfRVEoMXUsIGludGVyZmFjZUJs
b2Nrcy5zaXplKCkpOwotCi0gICAgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZpbnRlcmZhY2VC
bG9jayA9IGludGVyZmFjZUJsb2Nrc1swXTsKLQotICAgIEVYUEVDVF9FUSgwdSwgaW50ZXJmYWNl
QmxvY2suYXJyYXlTaXplKTsKLSAgICBFWFBFQ1RfRkFMU0UoaW50ZXJmYWNlQmxvY2suaXNSb3dN
YWpvckxheW91dCk7Ci0gICAgRVhQRUNUX0VRKHNoOjpCTE9DS0xBWU9VVF9TSEFSRUQsIGludGVy
ZmFjZUJsb2NrLmxheW91dCk7Ci0gICAgRVhQRUNUX0VRKCJiIiwgaW50ZXJmYWNlQmxvY2submFt
ZSk7Ci0gICAgRVhQRUNUX1RSVUUoaW50ZXJmYWNlQmxvY2suc3RhdGljVXNlKTsKLQotICAgIEFT
U0VSVF9FUSgxdSwgaW50ZXJmYWNlQmxvY2suZmllbGRzLnNpemUoKSk7Ci0KLSAgICBjb25zdCBz
aDo6SW50ZXJmYWNlQmxvY2tGaWVsZCAmZmllbGQgPSBpbnRlcmZhY2VCbG9jay5maWVsZHNbMF07
Ci0KLSAgICBFWFBFQ1RfVFJVRShmaWVsZC5pc1N0cnVjdCgpKTsKLSAgICBFWFBFQ1RfVFJVRShm
aWVsZC5zdGF0aWNVc2UpOwotICAgIEVYUEVDVF9FUSgicyIsIGZpZWxkLm5hbWUpOwotICAgIEVY
UEVDVF9GQUxTRShmaWVsZC5pc1Jvd01ham9yTGF5b3V0KTsKLQotICAgIGNvbnN0IHNoOjpTaGFk
ZXJWYXJpYWJsZSAmbWVtYmVyID0gZmllbGQuZmllbGRzWzBdOwotCi0gICAgLy8gTk9URTogd2Ug
ZG9uJ3QgY3VycmVudGx5IG1hcmsgc3RydWN0IG1lbWJlcnMgYXMgc3RhdGljYWxseSB1c2VkIG9y
IG5vdAotICAgIEVYUEVDVF9GQUxTRShtZW1iZXIuaXNTdHJ1Y3QoKSk7Ci0gICAgRVhQRUNUX0VR
KCJmIiwgbWVtYmVyLm5hbWUpOwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVQsIG1lbWJl
ci50eXBlKTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0hJR0hfRkxPQVQsIG1lbWJlci5wcmVj
aXNpb24pOwotfQotCi1URVNUX0YoQ29sbGVjdFZlcnRleFZhcmlhYmxlc1Rlc3QsIFN0cnVjdElu
c3RhbmNlZEludGVyZmFjZUJsb2NrKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJT
dHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJzdHJ1Y3Qgc3Qg
eyBmbG9hdCBmOyB9OyIKLSAgICAgICAgInVuaWZvcm0gYiB7XG4iCi0gICAgICAgICIgIHN0IHM7
XG4iCi0gICAgICAgICJ9IGluc3RhbmNlTmFtZTsiCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
Ci0gICAgICAgICIgICBnbF9Qb3NpdGlvbiA9IHZlYzQoaW5zdGFuY2VOYW1lLnMuZiwgMC4wLCAw
LjAsIDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcp
OwotCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPiAmaW50ZXJmYWNl
QmxvY2tzID0gbVRyYW5zbGF0b3ItPmdldEludGVyZmFjZUJsb2NrcygpOwotICAgIEFTU0VSVF9F
USgxdSwgaW50ZXJmYWNlQmxvY2tzLnNpemUoKSk7Ci0KLSAgICBjb25zdCBzaDo6SW50ZXJmYWNl
QmxvY2sgJmludGVyZmFjZUJsb2NrID0gaW50ZXJmYWNlQmxvY2tzWzBdOwotCi0gICAgRVhQRUNU
X0VRKDB1LCBpbnRlcmZhY2VCbG9jay5hcnJheVNpemUpOwotICAgIEVYUEVDVF9GQUxTRShpbnRl
cmZhY2VCbG9jay5pc1Jvd01ham9yTGF5b3V0KTsKLSAgICBFWFBFQ1RfRVEoc2g6OkJMT0NLTEFZ
T1VUX1NIQVJFRCwgaW50ZXJmYWNlQmxvY2subGF5b3V0KTsKLSAgICBFWFBFQ1RfRVEoImIiLCBp
bnRlcmZhY2VCbG9jay5uYW1lKTsKLSAgICBFWFBFQ1RfRVEoImluc3RhbmNlTmFtZSIsIGludGVy
ZmFjZUJsb2NrLmluc3RhbmNlTmFtZSk7Ci0gICAgRVhQRUNUX1RSVUUoaW50ZXJmYWNlQmxvY2su
c3RhdGljVXNlKTsKLQotICAgIEFTU0VSVF9FUSgxdSwgaW50ZXJmYWNlQmxvY2suZmllbGRzLnNp
emUoKSk7Ci0KLSAgICBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2tGaWVsZCAmZmllbGQgPSBpbnRl
cmZhY2VCbG9jay5maWVsZHNbMF07Ci0KLSAgICBFWFBFQ1RfVFJVRShmaWVsZC5pc1N0cnVjdCgp
KTsKLSAgICBFWFBFQ1RfVFJVRShmaWVsZC5zdGF0aWNVc2UpOwotICAgIEVYUEVDVF9FUSgicyIs
IGZpZWxkLm5hbWUpOwotICAgIEVYUEVDVF9GQUxTRShmaWVsZC5pc1Jvd01ham9yTGF5b3V0KTsK
LQotICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmbWVtYmVyID0gZmllbGQuZmllbGRzWzBd
OwotCi0gICAgLy8gTk9URTogd2UgZG9uJ3QgY3VycmVudGx5IG1hcmsgc3RydWN0IG1lbWJlcnMg
YXMgc3RhdGljYWxseSB1c2VkIG9yIG5vdAotICAgIEVYUEVDVF9GQUxTRShtZW1iZXIuaXNTdHJ1
Y3QoKSk7Ci0gICAgRVhQRUNUX0VRKCJmIiwgbWVtYmVyLm5hbWUpOwotICAgIEVYUEVDVF9HTEVO
VU1fRVEoR0xfRkxPQVQsIG1lbWJlci50eXBlKTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0hJ
R0hfRkxPQVQsIG1lbWJlci5wcmVjaXNpb24pOwotfQotCi1URVNUX0YoQ29sbGVjdFZlcnRleFZh
cmlhYmxlc1Rlc3QsIE5lc3RlZFN0cnVjdFJvd01ham9ySW50ZXJmYWNlQmxvY2spCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAg
ZXNcbiIKLSAgICAgICAgInN0cnVjdCBzdCB7IG1hdDIgbTsgfTsiCi0gICAgICAgICJsYXlvdXQo
cm93X21ham9yKSB1bmlmb3JtIGIge1xuIgotICAgICAgICAiICBzdCBzO1xuIgotICAgICAgICAi
fTsiCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9Qb3NpdGlvbiA9
IHZlYzQocy5tKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb21waWxlKHNoYWRlclN0cmlu
Zyk7Ci0KLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNlQmxvY2s+ICZpbnRlcmZh
Y2VCbG9ja3MgPSBtVHJhbnNsYXRvci0+Z2V0SW50ZXJmYWNlQmxvY2tzKCk7Ci0gICAgQVNTRVJU
X0VRKDF1LCBpbnRlcmZhY2VCbG9ja3Muc2l6ZSgpKTsKLQotICAgIGNvbnN0IHNoOjpJbnRlcmZh
Y2VCbG9jayAmaW50ZXJmYWNlQmxvY2sgPSBpbnRlcmZhY2VCbG9ja3NbMF07Ci0KLSAgICBFWFBF
Q1RfRVEoMHUsIGludGVyZmFjZUJsb2NrLmFycmF5U2l6ZSk7Ci0gICAgRVhQRUNUX1RSVUUoaW50
ZXJmYWNlQmxvY2suaXNSb3dNYWpvckxheW91dCk7Ci0gICAgRVhQRUNUX0VRKHNoOjpCTE9DS0xB
WU9VVF9TSEFSRUQsIGludGVyZmFjZUJsb2NrLmxheW91dCk7Ci0gICAgRVhQRUNUX0VRKCJiIiwg
aW50ZXJmYWNlQmxvY2submFtZSk7Ci0gICAgRVhQRUNUX1RSVUUoaW50ZXJmYWNlQmxvY2suc3Rh
dGljVXNlKTsKLQotICAgIEFTU0VSVF9FUSgxdSwgaW50ZXJmYWNlQmxvY2suZmllbGRzLnNpemUo
KSk7Ci0KLSAgICBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2tGaWVsZCAmZmllbGQgPSBpbnRlcmZh
Y2VCbG9jay5maWVsZHNbMF07Ci0KLSAgICBFWFBFQ1RfVFJVRShmaWVsZC5pc1N0cnVjdCgpKTsK
LSAgICBFWFBFQ1RfVFJVRShmaWVsZC5zdGF0aWNVc2UpOwotICAgIEVYUEVDVF9FUSgicyIsIGZp
ZWxkLm5hbWUpOwotICAgIEVYUEVDVF9UUlVFKGZpZWxkLmlzUm93TWFqb3JMYXlvdXQpOwotCi0g
ICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZtZW1iZXIgPSBmaWVsZC5maWVsZHNbMF07Ci0K
LSAgICAvLyBOT1RFOiB3ZSBkb24ndCBjdXJyZW50bHkgbWFyayBzdHJ1Y3QgbWVtYmVycyBhcyBz
dGF0aWNhbGx5IHVzZWQgb3Igbm90Ci0gICAgRVhQRUNUX0ZBTFNFKG1lbWJlci5pc1N0cnVjdCgp
KTsKLSAgICBFWFBFQ1RfRVEoIm0iLCBtZW1iZXIubmFtZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9F
UShHTF9GTE9BVF9NQVQyLCBtZW1iZXIudHlwZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9I
SUdIX0ZMT0FULCBtZW1iZXIucHJlY2lzaW9uKTsKLX0KLQotVEVTVF9GKENvbGxlY3RWZXJ0ZXhW
YXJpYWJsZXNUZXN0LCBWYXJ5aW5nSW50ZXJwb2xhdGlvbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJjZW50cm9pZCBvdXQgZmxv
YXQgdmFyeTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGdsX1Bv
c2l0aW9uID0gdmVjNCgxLjApO1xuIgotICAgICAgICAiICAgdmFyeSA9IDEuMDtcbiIKLSAgICAg
ICAgIn1cbiI7Ci0KLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0KLSAgICBjb25zdCBzdGQ6
OnZlY3RvcjxzaDo6VmFyeWluZz4gJnZhcnlpbmdzID0gbVRyYW5zbGF0b3ItPmdldFZhcnlpbmdz
KCk7Ci0gICAgQVNTRVJUX0VRKDJ1LCB2YXJ5aW5ncy5zaXplKCkpOwotCi0gICAgY29uc3Qgc2g6
OlZhcnlpbmcgKnZhcnlpbmcgPSAmdmFyeWluZ3NbMF07Ci0KLSAgICBpZiAodmFyeWluZy0+bmFt
ZSA9PSAiZ2xfUG9zaXRpb24iKQotICAgIHsKLSAgICAgICAgdmFyeWluZyA9ICZ2YXJ5aW5nc1sx
XTsKLSAgICB9Ci0KLSAgICBFWFBFQ1RfRVEoMHUsIHZhcnlpbmctPmFycmF5U2l6ZSk7Ci0gICAg
RVhQRUNUX0dMRU5VTV9FUShHTF9NRURJVU1fRkxPQVQsIHZhcnlpbmctPnByZWNpc2lvbik7Ci0g
ICAgRVhQRUNUX1RSVUUodmFyeWluZy0+c3RhdGljVXNlKTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VR
KEdMX0ZMT0FULCB2YXJ5aW5nLT50eXBlKTsKLSAgICBFWFBFQ1RfRVEoInZhcnkiLCB2YXJ5aW5n
LT5uYW1lKTsKLSAgICBFWFBFQ1RfRVEoc2g6OklOVEVSUE9MQVRJT05fQ0VOVFJPSUQsIHZhcnlp
bmctPmludGVycG9sYXRpb24pOwotfQotCi0vLyBUZXN0IGZvciBidWlsdGluIHVuaWZvcm0gImds
X0RlcHRoUmFuZ2UiIChWZXJ0ZXggc2hhZGVyKQotVEVTVF9GKENvbGxlY3RWZXJ0ZXhWYXJpYWJs
ZXNUZXN0LCBEZXB0aFJhbmdlKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQotICAgICAgICAiYXR0cmlidXRlIHZlYzQgcG9zaXRpb247XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uICsgdmVjNChn
bF9EZXB0aFJhbmdlLm5lYXIsIGdsX0RlcHRoUmFuZ2UuZmFyLCBnbF9EZXB0aFJhbmdlLmRpZmYs
IDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgdmFsaWRhdGVEZXB0aFJhbmdlU2hhZGVy
KHNoYWRlclN0cmluZyk7Ci19Ci0KLS8vIFRlc3QgZm9yIGJ1aWx0aW4gdW5pZm9ybSAiZ2xfRGVw
dGhSYW5nZSIgKEZyYWdtZW50IHNoYWRlcikKLVRFU1RfRihDb2xsZWN0RnJhZ21lbnRWYXJpYWJs
ZXNUZXN0LCBEZXB0aFJhbmdlKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGdsX0RlcHRoUmFu
Z2UubmVhciwgZ2xfRGVwdGhSYW5nZS5mYXIsIGdsX0RlcHRoUmFuZ2UuZGlmZiwgMS4wKTtcbiIK
LSAgICAgICAgIn1cbiI7Ci0KLSAgICB2YWxpZGF0ZURlcHRoUmFuZ2VTaGFkZXIoc2hhZGVyU3Ry
aW5nKTsKLX0KLQotLy8gVGVzdCB0aGF0IGdsX0ZyYWdDb2xvciBidWlsdC1pbiB1c2FnZSBpbiBF
U1NMMSBmcmFnbWVudCBzaGFkZXIgaXMgcmVmbGVjdGVkIGluIHRoZSBvdXRwdXQKLS8vIHZhcmlh
YmxlcyBsaXN0LgotVEVTVF9GKENvbGxlY3RGcmFnbWVudFZhcmlhYmxlc1Rlc3QsIE91dHB1dFZh
ckVTU0wxRnJhZ0NvbG9yKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnQ29sb3JTaGFk
ZXIgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCi0g
ICAgICAgICJ9XG4iOwotCi0gICAgY29uc3Qgc2g6Ok91dHB1dFZhcmlhYmxlICpvdXRwdXRWYXJp
YWJsZSA9IG51bGxwdHI7Ci0gICAgdmFsaWRhdGVPdXRwdXRWYXJpYWJsZUZvclNoYWRlcihmcmFn
Q29sb3JTaGFkZXIsIDB1LCAiZ2xfRnJhZ0NvbG9yIiwgJm91dHB1dFZhcmlhYmxlKTsKLSAgICBB
U1NFUlRfTkUob3V0cHV0VmFyaWFibGUsIG51bGxwdHIpOwotICAgIEVYUEVDVF9FUSgwdSwgb3V0
cHV0VmFyaWFibGUtPmFycmF5U2l6ZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVF9W
RUM0LCBvdXRwdXRWYXJpYWJsZS0+dHlwZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9NRURJ
VU1fRkxPQVQsIG91dHB1dFZhcmlhYmxlLT5wcmVjaXNpb24pOwotfQotCi0vLyBUZXN0IHRoYXQg
Z2xfRnJhZ0RhdGEgYnVpbHQtaW4gdXNhZ2UgaW4gRVNTTDEgZnJhZ21lbnQgc2hhZGVyIGlzIHJl
ZmxlY3RlZCBpbiB0aGUgb3V0cHV0Ci0vLyB2YXJpYWJsZXMgbGlzdC4KLVRFU1RfRihDb2xsZWN0
RnJhZ21lbnRWYXJpYWJsZXNUZXN0LCBPdXRwdXRWYXJFU1NMMUZyYWdEYXRhKQotewotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZmcmFnRGF0YVNoYWRlciA9Ci0gICAgICAgICIjZXh0ZW5zaW9uIEdM
X0VYVF9kcmF3X2J1ZmZlcnMgOiByZXF1aXJlXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGdsX0Zy
YWdEYXRhWzBdID0gdmVjNCgxLjApO1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0RhdGFbMV0gPSB2
ZWM0KDAuNSk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgU2hCdWlsdEluUmVzb3VyY2VzIHJl
c291cmNlcyAgICAgICA9IG1UcmFuc2xhdG9yLT5nZXRSZXNvdXJjZXMoKTsKLSAgICByZXNvdXJj
ZXMuRVhUX2RyYXdfYnVmZmVycyAgICAgICAgID0gMTsKLSAgICBjb25zdCB1bnNpZ25lZCBpbnQg
a01heERyYXdCdWZmZXJzID0gM3U7Ci0gICAgcmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0ga01h
eERyYXdCdWZmZXJzOwotICAgIGluaXRUcmFuc2xhdG9yKHJlc291cmNlcyk7Ci0KLSAgICBjb25z
dCBzaDo6T3V0cHV0VmFyaWFibGUgKm91dHB1dFZhcmlhYmxlID0gbnVsbHB0cjsKLSAgICB2YWxp
ZGF0ZU91dHB1dFZhcmlhYmxlRm9yU2hhZGVyKGZyYWdEYXRhU2hhZGVyLCAwdSwgImdsX0ZyYWdE
YXRhIiwgJm91dHB1dFZhcmlhYmxlKTsKLSAgICBBU1NFUlRfTkUob3V0cHV0VmFyaWFibGUsIG51
bGxwdHIpOwotICAgIEVYUEVDVF9FUShrTWF4RHJhd0J1ZmZlcnMsIG91dHB1dFZhcmlhYmxlLT5h
cnJheVNpemUpOwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVRfVkVDNCwgb3V0cHV0VmFy
aWFibGUtPnR5cGUpOwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfTUVESVVNX0ZMT0FULCBvdXRw
dXRWYXJpYWJsZS0+cHJlY2lzaW9uKTsKLX0KLQotLy8gVGVzdCB0aGF0IGdsX0ZyYWdEYXRhRVhU
IGJ1aWx0LWluIHVzYWdlIGluIEVTU0wxIGZyYWdtZW50IHNoYWRlciBpcyByZWZsZWN0ZWQgaW4g
dGhlIG91dHB1dAotLy8gdmFyaWFibGVzIGxpc3QuIEFsc28gdGVzdCB0aGF0IHRoZSBwcmVjaXNp
b24gaXMgbWVkaXVtcC4KLVRFU1RfRihDb2xsZWN0RnJhZ21lbnRWYXJpYWJsZXNUZXN0LCBPdXRw
dXRWYXJFU1NMMUZyYWdEZXB0aE1lZGl1bXApCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZy
YWdEZXB0aFNoYWRlciA9Ci0gICAgICAgICIjZXh0ZW5zaW9uIEdMX0VYVF9mcmFnX2RlcHRoIDog
cmVxdWlyZVxuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAg
ICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9GcmFnRGVwdGhFWFQgPSAwLjc7Igot
ICAgICAgICAifVxuIjsKLQotICAgIFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXMgPSBtVHJh
bnNsYXRvci0+Z2V0UmVzb3VyY2VzKCk7Ci0gICAgcmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoID0g
MTsKLSAgICBpbml0VHJhbnNsYXRvcihyZXNvdXJjZXMpOwotCi0gICAgY29uc3Qgc2g6Ok91dHB1
dFZhcmlhYmxlICpvdXRwdXRWYXJpYWJsZSA9IG51bGxwdHI7Ci0gICAgdmFsaWRhdGVPdXRwdXRW
YXJpYWJsZUZvclNoYWRlcihmcmFnRGVwdGhTaGFkZXIsIDB1LCAiZ2xfRnJhZ0RlcHRoRVhUIiwg
Jm91dHB1dFZhcmlhYmxlKTsKLSAgICBBU1NFUlRfTkUob3V0cHV0VmFyaWFibGUsIG51bGxwdHIp
OwotICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0VmFyaWFibGUtPmFycmF5U2l6ZSk7Ci0gICAgRVhQ
RUNUX0dMRU5VTV9FUShHTF9GTE9BVCwgb3V0cHV0VmFyaWFibGUtPnR5cGUpOwotICAgIEVYUEVD
VF9HTEVOVU1fRVEoR0xfTUVESVVNX0ZMT0FULCBvdXRwdXRWYXJpYWJsZS0+cHJlY2lzaW9uKTsK
LX0KLQotLy8gVGVzdCB0aGF0IGdsX0ZyYWdEYXRhRVhUIGJ1aWx0LWluIHVzYWdlIGluIEVTU0wx
IGZyYWdtZW50IHNoYWRlciBpcyByZWZsZWN0ZWQgaW4gdGhlIG91dHB1dAotLy8gdmFyaWFibGVz
IGxpc3QuIEFsc28gdGVzdCB0aGF0IHRoZSBwcmVjaXNpb24gaXMgaGlnaHAgaWYgdXNlciByZXF1
ZXN0cyBpdC4KLVRFU1RfRihDb2xsZWN0RnJhZ21lbnRWYXJpYWJsZXNUZXN0LCBPdXRwdXRWYXJF
U1NMMUZyYWdEZXB0aEhpZ2hwKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnRGVwdGhI
aWdoU2hhZGVyID0KLSAgICAgICAgIiNleHRlbnNpb24gR0xfRVhUX2ZyYWdfZGVwdGggOiByZXF1
aXJlXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9GcmFnRGVw
dGhFWFQgPSAwLjc7IgotICAgICAgICAifVxuIjsKLQotICAgIFNoQnVpbHRJblJlc291cmNlcyBy
ZXNvdXJjZXMgICAgPSBtVHJhbnNsYXRvci0+Z2V0UmVzb3VyY2VzKCk7Ci0gICAgcmVzb3VyY2Vz
LkVYVF9mcmFnX2RlcHRoICAgICAgICA9IDE7Ci0gICAgcmVzb3VyY2VzLkZyYWdtZW50UHJlY2lz
aW9uSGlnaCA9IDE7Ci0gICAgaW5pdFRyYW5zbGF0b3IocmVzb3VyY2VzKTsKLQotICAgIGNvbnN0
IHNoOjpPdXRwdXRWYXJpYWJsZSAqb3V0cHV0VmFyaWFibGUgPSBudWxscHRyOwotICAgIHZhbGlk
YXRlT3V0cHV0VmFyaWFibGVGb3JTaGFkZXIoZnJhZ0RlcHRoSGlnaFNoYWRlciwgMHUsICJnbF9G
cmFnRGVwdGhFWFQiLCAmb3V0cHV0VmFyaWFibGUpOwotICAgIEFTU0VSVF9ORShvdXRwdXRWYXJp
YWJsZSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX0VRKDB1LCBvdXRwdXRWYXJpYWJsZS0+YXJyYXlT
aXplKTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FULCBvdXRwdXRWYXJpYWJsZS0+dHlw
ZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9ISUdIX0ZMT0FULCBvdXRwdXRWYXJpYWJsZS0+
cHJlY2lzaW9uKTsKLX0KLQotLy8gVGVzdCB0aGF0IGdsX0ZyYWdEYXRhIGJ1aWx0LWluIHVzYWdl
IGluIEVTU0wzIGZyYWdtZW50IHNoYWRlciBpcyByZWZsZWN0ZWQgaW4gdGhlIG91dHB1dAotLy8g
dmFyaWFibGVzIGxpc3QuIEFsc28gdGVzdCB0aGF0IHRoZSBwcmVjaXNpb24gaXMgaGlnaHAuCi1U
RVNUX0YoQ29sbGVjdEZyYWdtZW50VmFyaWFibGVzVGVzdCwgT3V0cHV0VmFyRVNTTDNGcmFnRGVw
dGhIaWdocCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ0RlcHRoSGlnaFNoYWRlciA9
Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfRnJh
Z0RlcHRoID0gMC43OyIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBTaEJ1aWx0SW5SZXNvdXJjZXMg
cmVzb3VyY2VzID0gbVRyYW5zbGF0b3ItPmdldFJlc291cmNlcygpOwotICAgIHJlc291cmNlcy5F
WFRfZnJhZ19kZXB0aCA9IDE7Ci0gICAgaW5pdFRyYW5zbGF0b3IocmVzb3VyY2VzKTsKLQotICAg
IGNvbnN0IHNoOjpPdXRwdXRWYXJpYWJsZSAqb3V0cHV0VmFyaWFibGUgPSBudWxscHRyOwotICAg
IHZhbGlkYXRlT3V0cHV0VmFyaWFibGVGb3JTaGFkZXIoZnJhZ0RlcHRoSGlnaFNoYWRlciwgMHUs
ICJnbF9GcmFnRGVwdGgiLCAmb3V0cHV0VmFyaWFibGUpOwotICAgIEFTU0VSVF9ORShvdXRwdXRW
YXJpYWJsZSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX0VRKDB1LCBvdXRwdXRWYXJpYWJsZS0+YXJy
YXlTaXplKTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FULCBvdXRwdXRWYXJpYWJsZS0+
dHlwZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9ISUdIX0ZMT0FULCBvdXRwdXRWYXJpYWJs
ZS0+cHJlY2lzaW9uKTsKLX0KLQotLy8gVGVzdCB0aGF0IGdsX1NlY29uZGFyeUZyYWdDb2xvckVY
VCBidWlsdC1pbiB1c2FnZSBpbiBFU1NMMSBmcmFnbWVudCBzaGFkZXIgaXMgcmVmbGVjdGVkIGlu
IHRoZQotLy8gb3V0cHV0IHZhcmlhYmxlcyBsaXN0LgotVEVTVF9GKENvbGxlY3RGcmFnbWVudFZh
cmlhYmxlc1Rlc3QsIE91dHB1dFZhckVTU0wxRVhUQmxlbmRGdW5jRXh0ZW5kZWRTZWNvbmRhcnlG
cmFnQ29sb3IpCi17Ci0gICAgY29uc3QgY2hhciAqc2Vjb25kYXJ5RnJhZ0NvbG9yU2hhZGVyID0K
LSAgICAgICAgIiNleHRlbnNpb24gR0xfRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQgOiByZXF1aXJl
XG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wKTtcbiIKLSAg
ICAgICAgIiAgIGdsX1NlY29uZGFyeUZyYWdDb2xvckVYVCA9IHZlYzQoMS4wKTtcbiIKLSAgICAg
ICAgIn1cbiI7Ci0KLSAgICBjb25zdCB1bnNpZ25lZCBpbnQga01heERyYXdCdWZmZXJzID0gM3U7
Ci0gICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlcyAgICAgICA9IG1UcmFuc2xhdG9yLT5n
ZXRSZXNvdXJjZXMoKTsKLSAgICByZXNvdXJjZXMuRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQgID0g
MTsKLSAgICByZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycyAgICAgICAgID0gMTsKLSAgICByZXNv
dXJjZXMuTWF4RHJhd0J1ZmZlcnMgICAgICAgICAgID0ga01heERyYXdCdWZmZXJzOwotICAgIHJl
c291cmNlcy5NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnMgPSByZXNvdXJjZXMuTWF4RHJhd0J1ZmZl
cnM7Ci0gICAgaW5pdFRyYW5zbGF0b3IocmVzb3VyY2VzKTsKLQotICAgIGNvbnN0IHNoOjpPdXRw
dXRWYXJpYWJsZSAqb3V0cHV0VmFyaWFibGUgPSBudWxscHRyOwotICAgIHZhbGlkYXRlT3V0cHV0
VmFyaWFibGVGb3JTaGFkZXIoc2Vjb25kYXJ5RnJhZ0NvbG9yU2hhZGVyLCAwdSwgImdsX0ZyYWdD
b2xvciIsICZvdXRwdXRWYXJpYWJsZSk7Ci0gICAgQVNTRVJUX05FKG91dHB1dFZhcmlhYmxlLCBu
dWxscHRyKTsKLSAgICBFWFBFQ1RfRVEoMHUsIG91dHB1dFZhcmlhYmxlLT5hcnJheVNpemUpOwot
ICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVRfVkVDNCwgb3V0cHV0VmFyaWFibGUtPnR5cGUp
OwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfTUVESVVNX0ZMT0FULCBvdXRwdXRWYXJpYWJsZS0+
cHJlY2lzaW9uKTsKLQotICAgIG91dHB1dFZhcmlhYmxlID0gbnVsbHB0cjsKLSAgICB2YWxpZGF0
ZU91dHB1dFZhcmlhYmxlRm9yU2hhZGVyKHNlY29uZGFyeUZyYWdDb2xvclNoYWRlciwgMXUsICJn
bF9TZWNvbmRhcnlGcmFnQ29sb3JFWFQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJm91dHB1dFZhcmlhYmxlKTsKLSAgICBBU1NFUlRfTkUob3V0cHV0VmFyaWFibGUsIG51
bGxwdHIpOwotICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0VmFyaWFibGUtPmFycmF5U2l6ZSk7Ci0g
ICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVF9WRUM0LCBvdXRwdXRWYXJpYWJsZS0+dHlwZSk7
Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9NRURJVU1fRkxPQVQsIG91dHB1dFZhcmlhYmxlLT5w
cmVjaXNpb24pOwotfQotCi0vLyBUZXN0IHRoYXQgZ2xfU2Vjb25kYXJ5RnJhZ0RhdGFFWFQgYnVp
bHQtaW4gdXNhZ2UgaW4gRVNTTDEgZnJhZ21lbnQgc2hhZGVyIGlzIHJlZmxlY3RlZCBpbiB0aGUK
LS8vIG91dHB1dCB2YXJpYWJsZXMgbGlzdC4KLVRFU1RfRihDb2xsZWN0RnJhZ21lbnRWYXJpYWJs
ZXNUZXN0LCBPdXRwdXRWYXJFU1NMMUVYVEJsZW5kRnVuY0V4dGVuZGVkU2Vjb25kYXJ5RnJhZ0Rh
dGEpCi17Ci0gICAgY29uc3QgY2hhciAqc2Vjb25kYXJ5RnJhZ0RhdGFTaGFkZXIgPQotICAgICAg
ICAiI2V4dGVuc2lvbiBHTF9FWFRfYmxlbmRfZnVuY19leHRlbmRlZCA6IHJlcXVpcmVcbiIKLSAg
ICAgICAgIiNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmVcbiIKLSAgICAg
ICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xu
IgotICAgICAgICAiICAgZ2xfRnJhZ0RhdGFbMF0gPSB2ZWM0KDEuMCk7XG4iCi0gICAgICAgICIg
ICBnbF9GcmFnRGF0YVsxXSA9IHZlYzQoMC41KTtcbiIKLSAgICAgICAgIiAgIGdsX1NlY29uZGFy
eUZyYWdEYXRhRVhUWzBdID0gdmVjNCgxLjApO1xuIgotICAgICAgICAiICAgZ2xfU2Vjb25kYXJ5
RnJhZ0RhdGFFWFRbMV0gPSB2ZWM0KDAuOCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbnN0
IHVuc2lnbmVkIGludCBrTWF4RHJhd0J1ZmZlcnMgPSAzdTsKLSAgICBTaEJ1aWx0SW5SZXNvdXJj
ZXMgcmVzb3VyY2VzICAgICAgID0gbVRyYW5zbGF0b3ItPmdldFJlc291cmNlcygpOwotICAgIHJl
c291cmNlcy5FWFRfYmxlbmRfZnVuY19leHRlbmRlZCAgPSAxOwotICAgIHJlc291cmNlcy5FWFRf
ZHJhd19idWZmZXJzICAgICAgICAgPSAxOwotICAgIHJlc291cmNlcy5NYXhEcmF3QnVmZmVycyAg
ICAgICAgICAgPSBrTWF4RHJhd0J1ZmZlcnM7Ci0gICAgcmVzb3VyY2VzLk1heER1YWxTb3VyY2VE
cmF3QnVmZmVycyA9IHJlc291cmNlcy5NYXhEcmF3QnVmZmVyczsKLSAgICBpbml0VHJhbnNsYXRv
cihyZXNvdXJjZXMpOwotCi0gICAgY29uc3Qgc2g6Ok91dHB1dFZhcmlhYmxlICpvdXRwdXRWYXJp
YWJsZSA9IG51bGxwdHI7Ci0gICAgdmFsaWRhdGVPdXRwdXRWYXJpYWJsZUZvclNoYWRlcihzZWNv
bmRhcnlGcmFnRGF0YVNoYWRlciwgMHUsICJnbF9GcmFnRGF0YSIsICZvdXRwdXRWYXJpYWJsZSk7
Ci0gICAgQVNTRVJUX05FKG91dHB1dFZhcmlhYmxlLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfRVEo
a01heERyYXdCdWZmZXJzLCBvdXRwdXRWYXJpYWJsZS0+YXJyYXlTaXplKTsKLSAgICBFWFBFQ1Rf
R0xFTlVNX0VRKEdMX0ZMT0FUX1ZFQzQsIG91dHB1dFZhcmlhYmxlLT50eXBlKTsKLSAgICBFWFBF
Q1RfR0xFTlVNX0VRKEdMX01FRElVTV9GTE9BVCwgb3V0cHV0VmFyaWFibGUtPnByZWNpc2lvbik7
Ci0KLSAgICBvdXRwdXRWYXJpYWJsZSA9IG51bGxwdHI7Ci0gICAgdmFsaWRhdGVPdXRwdXRWYXJp
YWJsZUZvclNoYWRlcihzZWNvbmRhcnlGcmFnRGF0YVNoYWRlciwgMXUsICJnbF9TZWNvbmRhcnlG
cmFnRGF0YUVYVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0
VmFyaWFibGUpOwotICAgIEFTU0VSVF9ORShvdXRwdXRWYXJpYWJsZSwgbnVsbHB0cik7Ci0gICAg
RVhQRUNUX0VRKGtNYXhEcmF3QnVmZmVycywgb3V0cHV0VmFyaWFibGUtPmFycmF5U2l6ZSk7Ci0g
ICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVF9WRUM0LCBvdXRwdXRWYXJpYWJsZS0+dHlwZSk7
Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9NRURJVU1fRkxPQVQsIG91dHB1dFZhcmlhYmxlLT5w
cmVjaXNpb24pOwotfQotCi1zdGF0aWMga2hyb25vc191aW50NjRfdCBTaW1wbGVUZXN0SGFzaChj
b25zdCBjaGFyICpzdHIsIHNpemVfdCBsZW4pCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHVp
bnQ2NF90PihsZW4pOwotfQotCi1jbGFzcyBDb2xsZWN0SGFzaGVkVmVydGV4VmFyaWFibGVzVGVz
dCA6IHB1YmxpYyBDb2xsZWN0VmVydGV4VmFyaWFibGVzVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0g
ICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICAvLyBJbml0aWFsaXplIHRo
ZSB0cmFuc2xhdGUgd2l0aCBhIGhhc2ggZnVuY3Rpb24KLSAgICAgICAgU2hCdWlsdEluUmVzb3Vy
Y2VzIHJlc291cmNlczsKLSAgICAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2Vz
KTsKLSAgICAgICAgcmVzb3VyY2VzLkhhc2hGdW5jdGlvbiA9IFNpbXBsZVRlc3RIYXNoOwotICAg
ICAgICBpbml0VHJhbnNsYXRvcihyZXNvdXJjZXMpOwotICAgIH0KLX07Ci0KLVRFU1RfRihDb2xs
ZWN0SGFzaGVkVmVydGV4VmFyaWFibGVzVGVzdCwgSW5zdGFuY2VkSW50ZXJmYWNlQmxvY2spCi17
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lv
biAzMDAgZXNcbiIKLSAgICAgICAgInVuaWZvcm0gYmxvY2tOYW1lIHtcbiIKLSAgICAgICAgIiAg
ZmxvYXQgZmllbGQ7XG4iCi0gICAgICAgICJ9IGJsb2NrSW5zdGFuY2U7IgotICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGJsb2NrSW5zdGFu
Y2UuZmllbGQsIDAuMCwgMC4wLCAxLjApO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGNvbXBp
bGUoc2hhZGVyU3RyaW5nKTsKLQotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpJbnRlcmZhY2VC
bG9jaz4gJmludGVyZmFjZUJsb2NrcyA9IG1UcmFuc2xhdG9yLT5nZXRJbnRlcmZhY2VCbG9ja3Mo
KTsKLSAgICBBU1NFUlRfRVEoMXUsIGludGVyZmFjZUJsb2Nrcy5zaXplKCkpOwotCi0gICAgY29u
c3Qgc2g6OkludGVyZmFjZUJsb2NrICZpbnRlcmZhY2VCbG9jayA9IGludGVyZmFjZUJsb2Nrc1sw
XTsKLQotICAgIEVYUEVDVF9FUSgwdSwgaW50ZXJmYWNlQmxvY2suYXJyYXlTaXplKTsKLSAgICBF
WFBFQ1RfRkFMU0UoaW50ZXJmYWNlQmxvY2suaXNSb3dNYWpvckxheW91dCk7Ci0gICAgRVhQRUNU
X0VRKHNoOjpCTE9DS0xBWU9VVF9TSEFSRUQsIGludGVyZmFjZUJsb2NrLmxheW91dCk7Ci0gICAg
RVhQRUNUX0VRKCJibG9ja05hbWUiLCBpbnRlcmZhY2VCbG9jay5uYW1lKTsKLSAgICBFWFBFQ1Rf
RVEoImJsb2NrSW5zdGFuY2UiLCBpbnRlcmZhY2VCbG9jay5pbnN0YW5jZU5hbWUpOwotICAgIEVY
UEVDVF9FUSgid2ViZ2xfOSIsIGludGVyZmFjZUJsb2NrLm1hcHBlZE5hbWUpOwotICAgIEVYUEVD
VF9UUlVFKGludGVyZmFjZUJsb2NrLnN0YXRpY1VzZSk7Ci0KLSAgICBBU1NFUlRfRVEoMXUsIGlu
dGVyZmFjZUJsb2NrLmZpZWxkcy5zaXplKCkpOwotCi0gICAgY29uc3Qgc2g6OkludGVyZmFjZUJs
b2NrRmllbGQgJmZpZWxkID0gaW50ZXJmYWNlQmxvY2suZmllbGRzWzBdOwotCi0gICAgRVhQRUNU
X0dMRU5VTV9FUShHTF9ISUdIX0ZMT0FULCBmaWVsZC5wcmVjaXNpb24pOwotICAgIEVYUEVDVF9U
UlVFKGZpZWxkLnN0YXRpY1VzZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVCwgZmll
bGQudHlwZSk7Ci0gICAgRVhQRUNUX0VRKCJmaWVsZCIsIGZpZWxkLm5hbWUpOwotICAgIEVYUEVD
VF9FUSgid2ViZ2xfNSIsIGZpZWxkLm1hcHBlZE5hbWUpOwotICAgIEVYUEVDVF9GQUxTRShmaWVs
ZC5pc1Jvd01ham9yTGF5b3V0KTsKLSAgICBFWFBFQ1RfVFJVRShmaWVsZC5maWVsZHMuZW1wdHko
KSk7Ci19Ci0KLVRFU1RfRihDb2xsZWN0SGFzaGVkVmVydGV4VmFyaWFibGVzVGVzdCwgU3RydWN0
VW5pZm9ybSkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAg
ICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAic3RydWN0IHNUeXBlIHtcbiIKLSAgICAg
ICAgIiAgZmxvYXQgZmllbGQ7XG4iCi0gICAgICAgICJ9OyIKLSAgICAgICAgInVuaWZvcm0gc1R5
cGUgdTsiCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9Qb3NpdGlv
biA9IHZlYzQodS5maWVsZCwgMC4wLCAwLjAsIDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0g
ICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotCi0gICAgY29uc3QgYXV0byAmdW5pZm9ybXMgPSBt
VHJhbnNsYXRvci0+Z2V0VW5pZm9ybXMoKTsKLSAgICBBU1NFUlRfRVEoMXUsIHVuaWZvcm1zLnNp
emUoKSk7Ci0KLSAgICBjb25zdCBzaDo6VW5pZm9ybSAmdW5pZm9ybSA9IHVuaWZvcm1zWzBdOwot
Ci0gICAgRVhQRUNUX0VRKDB1LCB1bmlmb3JtLmFycmF5U2l6ZSk7Ci0gICAgRVhQRUNUX0VRKCJ1
IiwgdW5pZm9ybS5uYW1lKTsKLSAgICBFWFBFQ1RfRVEoIndlYmdsXzEiLCB1bmlmb3JtLm1hcHBl
ZE5hbWUpOwotICAgIEVYUEVDVF9UUlVFKHVuaWZvcm0uc3RhdGljVXNlKTsKLQotICAgIEFTU0VS
VF9FUSgxdSwgdW5pZm9ybS5maWVsZHMuc2l6ZSgpKTsKLQotICAgIGNvbnN0IHNoOjpTaGFkZXJW
YXJpYWJsZSAmZmllbGQgPSB1bmlmb3JtLmZpZWxkc1swXTsKLQotICAgIEVYUEVDVF9HTEVOVU1f
RVEoR0xfSElHSF9GTE9BVCwgZmllbGQucHJlY2lzaW9uKTsKLSAgICAvLyBFWFBFQ1RfVFJVRShm
aWVsZC5zdGF0aWNVc2UpOyAvLyB3ZSBkb24ndCB5ZXQgc3VwcG9ydCBzdHJ1Y3Qgc3RhdGljIHVz
ZQotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVQsIGZpZWxkLnR5cGUpOwotICAgIEVYUEVD
VF9FUSgiZmllbGQiLCBmaWVsZC5uYW1lKTsKLSAgICBFWFBFQ1RfRVEoIndlYmdsXzUiLCBmaWVs
ZC5tYXBwZWROYW1lKTsKLSAgICBFWFBFQ1RfVFJVRShmaWVsZC5maWVsZHMuZW1wdHkoKSk7Ci19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJf
dGVzdHMvQ29uc3RhbnRGb2xkaW5nX3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0NvbnN0YW50Rm9sZGluZ190ZXN0LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEzMmU2MzgzMTJhYjE1YzBkNTQwNmE3MDYwMmEwMDFh
NjRiMTA0MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvQ29uc3RhbnRG
b2xkaW5nX3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyNiArMCwwIEBACi0vLwotLy8g
Q29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgotLy8KLS8vIENvbnN0YW50Rm9sZGluZ190ZXN0LmNwcDoKLS8vICAgVGVzdHMgZm9yIGNvbnN0
YW50IGZvbGRpbmcKLS8vCi0KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlICJhbmdsZV9n
bC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJM
YW5nLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Qb29sQWxsb2MuaCIKLSNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NMLmgiCi0KLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotY2xhc3MgQ29uc3RhbnRGaW5kZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNl
cgotewotICBwdWJsaWM6Ci0gICAgQ29uc3RhbnRGaW5kZXIoY29uc3Qgc3RkOjp2ZWN0b3I8VD4g
JmNvbnN0YW50VmVjdG9yKQotICAgICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2Us
IGZhbHNlKSwKLSAgICAgICAgICBtQ29uc3RhbnRWZWN0b3IoY29uc3RhbnRWZWN0b3IpLAotICAg
ICAgICAgIG1GYXVsdFRvbGVyYW5jZShUKCkpLAotICAgICAgICAgIG1Gb3VuZChmYWxzZSkKLSAg
ICB7fQotCi0gICAgQ29uc3RhbnRGaW5kZXIoY29uc3Qgc3RkOjp2ZWN0b3I8VD4gJmNvbnN0YW50
VmVjdG9yLCBjb25zdCBUICZmYXVsdFRvbGVyYW5jZSkKLSAgICAgICAgOiBUSW50ZXJtVHJhdmVy
c2VyKHRydWUsIGZhbHNlLCBmYWxzZSksCi0gICAgICAgIG1Db25zdGFudFZlY3Rvcihjb25zdGFu
dFZlY3RvciksCi0gICAgICAgIG1GYXVsdFRvbGVyYW5jZShmYXVsdFRvbGVyYW5jZSksCi0gICAg
ICAgIG1Gb3VuZChmYWxzZSkKLSAgICB7fQotCi0gICAgQ29uc3RhbnRGaW5kZXIoY29uc3QgVCAm
dmFsdWUpCi0gICAgICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLAot
ICAgICAgICAgIG1GYXVsdFRvbGVyYW5jZShUKCkpLAotICAgICAgICAgIG1Gb3VuZChmYWxzZSkK
LSAgICB7Ci0gICAgICAgIG1Db25zdGFudFZlY3Rvci5wdXNoX2JhY2sodmFsdWUpOwotICAgIH0K
LQotICAgIHZvaWQgdmlzaXRDb25zdGFudFVuaW9uKFRJbnRlcm1Db25zdGFudFVuaW9uICpub2Rl
KQotICAgIHsKLSAgICAgICAgaWYgKG5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCkgPT0g
bUNvbnN0YW50VmVjdG9yLnNpemUoKSkKLSAgICAgICAgewotICAgICAgICAgICAgYm9vbCBmb3Vu
ZCA9IHRydWU7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1Db25zdGFudFZl
Y3Rvci5zaXplKCk7IGkrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoIWlz
RXF1YWwobm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVtpXSwgbUNvbnN0YW50VmVjdG9yW2ld
KSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmIChmb3VuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBtRm91bmQgPSBmb3VuZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQot
ICAgIGJvb2wgZm91bmQoKSBjb25zdCB7IHJldHVybiBtRm91bmQ7IH0KLQotICBwcml2YXRlOgot
ICAgIGJvb2wgaXNFcXVhbChjb25zdCBUQ29uc3RhbnRVbmlvbiAmbm9kZSwgY29uc3QgZmxvYXQg
JnZhbHVlKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1GYXVsdFRvbGVyYW5jZSA+PSBm
YWJzZihub2RlLmdldEZDb25zdCgpIC0gdmFsdWUpOwotICAgIH0KLQotICAgIGJvb2wgaXNFcXVh
bChjb25zdCBUQ29uc3RhbnRVbmlvbiAmbm9kZSwgY29uc3QgaW50ICZ2YWx1ZSkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChtRmF1bHRUb2xlcmFuY2UgPCBzdGQ6Om51bWVyaWNfbGltaXRz
PGludD46Om1heCgpKTsKLSAgICAgICAgLy8gYWJzKCkgcmV0dXJucyAwIGF0IGxlYXN0IG9uIHNv
bWUgcGxhdGZvcm1zIHdoZW4gdGhlIG1pbmltdW0gaW50IHZhbHVlIGlzIHBhc3NlZCBpbiAoaXQK
LSAgICAgICAgLy8gZG9lc24ndCBoYXZlIGEgcG9zaXRpdmUgY291bnRlcnBhcnQpLgotICAgICAg
ICByZXR1cm4gbUZhdWx0VG9sZXJhbmNlID49IGFicyhub2RlLmdldElDb25zdCgpIC0gdmFsdWUp
ICYmCi0gICAgICAgICAgICAgICAobm9kZS5nZXRJQ29uc3QoKSAtIHZhbHVlKSAhPSBzdGQ6Om51
bWVyaWNfbGltaXRzPGludD46Om1pbigpOwotICAgIH0KLQotICAgIGJvb2wgaXNFcXVhbChjb25z
dCBUQ29uc3RhbnRVbmlvbiAmbm9kZSwgY29uc3QgdW5zaWduZWQgaW50ICZ2YWx1ZSkgY29uc3QK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtRmF1bHRUb2xlcmFuY2UgPCBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpKTsKLSAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4obUZhdWx0VG9sZXJhbmNlKSA+PQotICAgICAgICAgICAgICAg
ICAgIGFicyhzdGF0aWNfY2FzdDxpbnQ+KG5vZGUuZ2V0VUNvbnN0KCkgLSB2YWx1ZSkpICYmCi0g
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KG5vZGUuZ2V0VUNvbnN0KCkgLSB2YWx1ZSkg
IT0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptaW4oKTsKLSAgICB9Ci0KLSAgICBib29sIGlz
RXF1YWwoY29uc3QgVENvbnN0YW50VW5pb24gJm5vZGUsIGNvbnN0IGJvb2wgJnZhbHVlKSBjb25z
dAotICAgIHsKLSAgICAgICAgcmV0dXJuIG5vZGUuZ2V0QkNvbnN0KCkgPT0gdmFsdWU7Ci0gICAg
fQotCi0gICAgc3RkOjp2ZWN0b3I8VD4gbUNvbnN0YW50VmVjdG9yOwotICAgIFQgbUZhdWx0VG9s
ZXJhbmNlOwotICAgIGJvb2wgbUZvdW5kOwotfTsKLQotY2xhc3MgQ29uc3RhbnRGb2xkaW5nVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICBDb25zdGFudEZvbGRp
bmdUZXN0KCkge30KLQotICBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIFNldFVwKCkKLSAg
ICB7Ci0gICAgICAgIGFsbG9jYXRvci5wdXNoKCk7Ci0gICAgICAgIFNldEdsb2JhbFBvb2xBbGxv
Y2F0b3IoJmFsbG9jYXRvcik7Ci0gICAgICAgIFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXM7
Ci0gICAgICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7Ci0KLSAgICAgICAg
bVRyYW5zbGF0b3JFU1NMID0gbmV3IFRyYW5zbGF0b3JFU1NMKEdMX0ZSQUdNRU5UX1NIQURFUiwg
U0hfR0xFUzNfU1BFQyk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKG1UcmFuc2xhdG9yRVNTTC0+SW5p
dChyZXNvdXJjZXMpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQotICAg
IHsKLSAgICAgICAgZGVsZXRlIG1UcmFuc2xhdG9yRVNTTDsKLSAgICAgICAgU2V0R2xvYmFsUG9v
bEFsbG9jYXRvcihOVUxMKTsKLSAgICAgICAgYWxsb2NhdG9yLnBvcCgpOwotICAgIH0KLQotICAg
IHZvaWQgY29tcGlsZShjb25zdCBzdGQ6OnN0cmluZyYgc2hhZGVyU3RyaW5nKQotICAgIHsKLSAg
ICAgICAgY29uc3QgY2hhciAqc2hhZGVyU3RyaW5nc1tdID0geyBzaGFkZXJTdHJpbmcuY19zdHIo
KSB9OwotCi0gICAgICAgIG1BU1RSb290ID0gbVRyYW5zbGF0b3JFU1NMLT5jb21waWxlVHJlZUZv
clRlc3Rpbmcoc2hhZGVyU3RyaW5ncywgMSwgU0hfT0JKRUNUX0NPREUpOwotICAgICAgICBpZiAo
IW1BU1RSb290KQotICAgICAgICB7Ci0gICAgICAgICAgICBUSW5mb1NpbmsgJmluZm9TaW5rID0g
bVRyYW5zbGF0b3JFU1NMLT5nZXRJbmZvU2luaygpOwotICAgICAgICAgICAgRkFJTCgpIDw8ICJT
aGFkZXIgY29tcGlsYXRpb24gaW50byBFU1NMIGZhaWxlZCAiIDw8IGluZm9TaW5rLmluZm8uY19z
dHIoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAg
IGJvb2wgY29uc3RhbnRGb3VuZEluQVNUKFQgY29uc3RhbnQpCi0gICAgewotICAgICAgICBDb25z
dGFudEZpbmRlcjxUPiBmaW5kZXIoY29uc3RhbnQpOwotICAgICAgICBtQVNUUm9vdC0+dHJhdmVy
c2UoJmZpbmRlcik7Ci0gICAgICAgIHJldHVybiBmaW5kZXIuZm91bmQoKTsKLSAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBib29sIGNvbnN0YW50VmVjdG9yRm91bmRJbkFT
VChjb25zdCBzdGQ6OnZlY3RvcjxUPiAmY29uc3RhbnRWZWN0b3IpCi0gICAgewotICAgICAgICBD
b25zdGFudEZpbmRlcjxUPiBmaW5kZXIoY29uc3RhbnRWZWN0b3IpOwotICAgICAgICBtQVNUUm9v
dC0+dHJhdmVyc2UoJmZpbmRlcik7Ci0gICAgICAgIHJldHVybiBmaW5kZXIuZm91bmQoKTsKLSAg
ICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBib29sIGNvbnN0YW50Q29sdW1u
TWFqb3JNYXRyaXhGb3VuZEluQVNUKGNvbnN0IHN0ZDo6dmVjdG9yPFQ+ICZjb25zdGFudE1hdHJp
eCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb25zdGFudFZlY3RvckZvdW5kSW5BU1QoY29uc3Rh
bnRNYXRyaXgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIGJvb2wg
Y29uc3RhbnRWZWN0b3JOZWFyRm91bmRJbkFTVChjb25zdCBzdGQ6OnZlY3RvcjxUPiAmY29uc3Rh
bnRWZWN0b3IsIGNvbnN0IFQgJmZhdWx0VG9sZXJhbmNlKQotICAgIHsKLSAgICAgICAgQ29uc3Rh
bnRGaW5kZXI8VD4gZmluZGVyKGNvbnN0YW50VmVjdG9yLCBmYXVsdFRvbGVyYW5jZSk7Ci0gICAg
ICAgIG1BU1RSb290LT50cmF2ZXJzZSgmZmluZGVyKTsKLSAgICAgICAgcmV0dXJuIGZpbmRlci5m
b3VuZCgpOwotICAgIH0KLQotICBwcml2YXRlOgotICAgIFRyYW5zbGF0b3JFU1NMICptVHJhbnNs
YXRvckVTU0w7Ci0gICAgVEludGVybU5vZGUgKm1BU1RSb290OwotCi0gICAgVFBvb2xBbGxvY2F0
b3IgYWxsb2NhdG9yOwotfTsKLQotVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGRJbnRl
Z2VyQWRkKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAg
ICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc
biIKLSAgICAgICAgIm91dCBpbnQgbXlfSW50O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xu
IgotICAgICAgICAiICAgY29uc3QgaW50IGkgPSAxMTI0ICsgNTtcbiIKLSAgICAgICAgIiAgIG15
X0ludCA9IGk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsK
LSAgICBBU1NFUlRfRkFMU0UoY29uc3RhbnRGb3VuZEluQVNUKDExMjQpKTsKLSAgICBBU1NFUlRf
RkFMU0UoY29uc3RhbnRGb3VuZEluQVNUKDUpKTsKLSAgICBBU1NFUlRfVFJVRShjb25zdGFudEZv
dW5kSW5BU1QoMTEyOSkpOwotfQotCi1URVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZElu
dGVnZXJTdWIpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgotICAgICAgICAib3V0IGludCBteV9JbnQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCi0gICAgICAgICIgICBjb25zdCBpbnQgaSA9IDExMjQgLSA1O1xuIgotICAgICAgICAiICAg
bXlfSW50ID0gaTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcp
OwotICAgIEFTU0VSVF9GQUxTRShjb25zdGFudEZvdW5kSW5BU1QoMTEyNCkpOwotICAgIEFTU0VS
VF9GQUxTRShjb25zdGFudEZvdW5kSW5BU1QoNSkpOwotICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50
Rm91bmRJbkFTVCgxMTE5KSk7Ci19Ci0KLVRFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xk
SW50ZWdlck11bCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJvdXQgaW50IG15X0ludDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKLSAgICAgICAgIiAgIGNvbnN0IGludCBpID0gMTEyNCAqIDU7XG4iCi0gICAgICAgICIg
ICBteV9JbnQgPSBpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmlu
Zyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGNvbnN0YW50Rm91bmRJbkFTVCgxMTI0KSk7Ci0gICAgQVNT
RVJUX0ZBTFNFKGNvbnN0YW50Rm91bmRJbkFTVCg1KSk7Ci0gICAgQVNTRVJUX1RSVUUoY29uc3Rh
bnRGb3VuZEluQVNUKDU2MjApKTsKLX0KLQotVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZv
bGRJbnRlZ2VyRGl2KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQot
ICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKLSAgICAgICAgIm91dCBpbnQgbXlfSW50O1xuIgotICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgotICAgICAgICAiICAgY29uc3QgaW50IGkgPSAxMTI0IC8gNTtcbiIKLSAgICAgICAg
IiAgIG15X0ludCA9IGk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3Ry
aW5nKTsKLSAgICBBU1NFUlRfRkFMU0UoY29uc3RhbnRGb3VuZEluQVNUKDExMjQpKTsKLSAgICBB
U1NFUlRfRkFMU0UoY29uc3RhbnRGb3VuZEluQVNUKDUpKTsKLSAgICAvLyBSb3VuZGluZyBtb2Rl
IG9mIGRpdmlzaW9uIGlzIHVuZGVmaW5lZCBpbiB0aGUgc3BlYyBidXQgQU5HTEUgY2FuIGJlIGV4
cGVjdGVkIHRvIHJvdW5kIGRvd24uCi0gICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNU
KDIyNCkpOwotfQotCi1URVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZEludGVnZXJNb2R1
bHVzKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAi
I3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
LSAgICAgICAgIm91dCBpbnQgbXlfSW50O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgot
ICAgICAgICAiICAgY29uc3QgaW50IGkgPSAxMTI0ICUgNTtcbiIKLSAgICAgICAgIiAgIG15X0lu
dCA9IGk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAg
ICBBU1NFUlRfRkFMU0UoY29uc3RhbnRGb3VuZEluQVNUKDExMjQpKTsKLSAgICBBU1NFUlRfRkFM
U0UoY29uc3RhbnRGb3VuZEluQVNUKDUpKTsKLSAgICBBU1NFUlRfVFJVRShjb25zdGFudEZvdW5k
SW5BU1QoNCkpOwotfQotCi1URVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZFZlY3RvckNy
b3NzUHJvZHVjdCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJvdXQgdmVjMyBteV9WZWMzOyIKLSAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKLSAgICAgICAgIiAgIGNvbnN0IHZlYzMgdjMgPSBjcm9zcyh2ZWMzKDEuMGYsIDEuMGYs
IDEuMGYpLCB2ZWMzKDEuMGYsIC0xLjBmLCAxLjBmKSk7XG4iCi0gICAgICAgICIgICBteV9WZWMz
ID0gdjM7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAg
ICBzdGQ6OnZlY3RvcjxmbG9hdD4gaW5wdXQxKDMsIDEuMGYpOwotICAgIEFTU0VSVF9GQUxTRShj
b25zdGFudFZlY3RvckZvdW5kSW5BU1QoaW5wdXQxKSk7Ci0gICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+
IGlucHV0MjsKLSAgICBpbnB1dDIucHVzaF9iYWNrKDEuMGYpOwotICAgIGlucHV0Mi5wdXNoX2Jh
Y2soLTEuMGYpOwotICAgIGlucHV0Mi5wdXNoX2JhY2soMS4wZik7Ci0gICAgQVNTRVJUX0ZBTFNF
KGNvbnN0YW50VmVjdG9yRm91bmRJbkFTVChpbnB1dDIpKTsKLSAgICBzdGQ6OnZlY3RvcjxmbG9h
dD4gcmVzdWx0OwotICAgIHJlc3VsdC5wdXNoX2JhY2soMi4wZik7Ci0gICAgcmVzdWx0LnB1c2hf
YmFjaygwLjBmKTsKLSAgICByZXN1bHQucHVzaF9iYWNrKC0yLjBmKTsKLSAgICBBU1NFUlRfVFJV
RShjb25zdGFudFZlY3RvckZvdW5kSW5BU1QocmVzdWx0KSk7Ci19Ci0KLS8vIEZvbGRNeE5NYXRy
aXhJbnZlcnNlIHRlc3RzIGNoZWNrIGlmIHRoZSBtYXRyaXggJ2ludmVyc2UnIG9wZXJhdGlvbgot
Ly8gb24gTXhOIG1hdHJpeCBpcyBjb25zdGFudCBmb2xkZWQgd2hlbiBhcmd1bWVudCBpcyBjb25z
dGFudCBleHByZXNzaW9uIGFuZCBhbHNvCi0vLyBjaGVja3MgdGhlIGNvcnJlY3RuZXNzIG9mIHRo
ZSByZXN1bHQgcmV0dXJuZWQgYnkgdGhlIGNvbnN0YW50IGZvbGRpbmcgb3BlcmF0aW9uLgotLy8g
QWxsIHRoZSBtYXRyaWNlcyBpbmNsdWRpbmcgbWF0cmljZXMgaW4gdGhlIHNoYWRlciBjb2RlIGFy
ZSBpbiBjb2x1bW4tbWFqb3Igb3JkZXIuCi1URVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9s
ZDJ4Mk1hdHJpeEludmVyc2UpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgotICAgICAgICAiaW4gZmxvYXQgaTtcbiIKLSAgICAgICAgIm91dCB2ZWMy
IG15X1ZlYztcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGNvbnN0
IG1hdDIgbTIgPSBpbnZlcnNlKG1hdDIoMi4wZiwgMy4wZixcbiIKLSAgICAgICAgIiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgNS4wZiwgNy4wZikpO1xuIgotICAgICAgICAiICAgbWF0
MiBtID0gbTIgKiBtYXQyKGkpO1xuIgotICAgICAgICAiICAgbXlfVmVjID0gbVswXTtcbiIKLSAg
ICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIGZsb2F0IGlucHV0
RWxlbWVudHNbXSA9Ci0gICAgewotICAgICAgICAyLjBmLCAzLjBmLAotICAgICAgICA1LjBmLCA3
LjBmCi0gICAgfTsKLSAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gaW5wdXQoaW5wdXRFbGVtZW50cywg
aW5wdXRFbGVtZW50cyArIDQpOwotICAgIEFTU0VSVF9GQUxTRShjb25zdGFudENvbHVtbk1ham9y
TWF0cml4Rm91bmRJbkFTVChpbnB1dCkpOwotICAgIGZsb2F0IG91dHB1dEVsZW1lbnRzW10gPQot
ICAgIHsKLSAgICAgICAgLTcuMGYsIDMuMGYsCi0gICAgICAgIDUuMGYsIC0yLjBmCi0gICAgfTsK
LSAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gcmVzdWx0KG91dHB1dEVsZW1lbnRzLCBvdXRwdXRFbGVt
ZW50cyArIDQpOwotICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Q29sdW1uTWFqb3JNYXRyaXhGb3Vu
ZEluQVNUKHJlc3VsdCkpOwotfQotCi0vLyBDaGVjayBpZiB0aGUgbWF0cml4ICdpbnZlcnNlJyBv
cGVyYXRpb24gb24gM3gzIG1hdHJpeCBpcyBjb25zdGFudCBmb2xkZWQuCi1URVNUX0YoQ29uc3Rh
bnRGb2xkaW5nVGVzdCwgRm9sZDN4M01hdHJpeEludmVyc2UpCi17Ci0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAg
ICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAiaW4gZmxvYXQgaTtcbiIK
LSAgICAgICAgIm91dCB2ZWMzIG15X1ZlYztcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
LSAgICAgICAgIiAgIGNvbnN0IG1hdDMgbTMgPSBpbnZlcnNlKG1hdDMoMTEuMGYsIDEzLjBmLCAx
OS4wZixcbiIKLSAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuMGYs
IDI5LjBmLCAzMS4wZixcbiIKLSAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMzcuMGYsIDQxLjBmLCA0My4wZikpO1xuIgotICAgICAgICAiICAgbWF0MyBtID0gbTMgKiBt
YXQzKGkpO1xuIgotICAgICAgICAiICAgbXlfVmVjID0gbTNbMF07XG4iCi0gICAgICAgICJ9XG4i
OwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBmbG9hdCBpbnB1dEVsZW1lbnRzW10g
PQotICAgIHsKLSAgICAgICAgMTEuMGYsIDEzLjBmLCAxOS4wZiwKLSAgICAgICAgMjMuMGYsIDI5
LjBmLCAzMS4wZiwKLSAgICAgICAgMzcuMGYsIDQxLjBmLCA0My4wZgotICAgIH07Ci0gICAgc3Rk
Ojp2ZWN0b3I8ZmxvYXQ+IGlucHV0KGlucHV0RWxlbWVudHMsIGlucHV0RWxlbWVudHMgKyA5KTsK
LSAgICBBU1NFUlRfRkFMU0UoY29uc3RhbnRWZWN0b3JGb3VuZEluQVNUKGlucHV0KSk7Ci0gICAg
ZmxvYXQgb3V0cHV0RWxlbWVudHNbXSA9Ci0gICAgewotICAgICAgICAzLjBmIC8gODUuMGYsIC0x
MS4wZiAvIDM0LjBmLCAzNy4wZiAvIDE3MC4wZiwKLSAgICAgICAgLTc5LjBmIC8gMzQwLjBmLCAy
My4wZiAvIDY4LjBmLCAtMTIuMGYgLyA4NS4wZiwKLSAgICAgICAgMTMuMGYgLyA2OC4wZiwgLTMu
MGYgLyA2OC4wZiwgLTEuMGYgLyAzNC4wZgotICAgIH07Ci0gICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+
IHJlc3VsdChvdXRwdXRFbGVtZW50cywgb3V0cHV0RWxlbWVudHMgKyA5KTsKLSAgICBjb25zdCBm
bG9hdCBmbG9hdEZhdWx0VG9sZXJhbmNlID0gMC4wMDAwMDFmOwotICAgIEFTU0VSVF9UUlVFKGNv
bnN0YW50VmVjdG9yTmVhckZvdW5kSW5BU1QocmVzdWx0LCBmbG9hdEZhdWx0VG9sZXJhbmNlKSk7
Ci19Ci0KLS8vIENoZWNrIGlmIHRoZSBtYXRyaXggJ2ludmVyc2UnIG9wZXJhdGlvbiBvbiA0eDQg
bWF0cml4IGlzIGNvbnN0YW50IGZvbGRlZC4KLVRFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBG
b2xkNHg0TWF0cml4SW52ZXJzZSkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJpbiBmbG9hdCBpO1xuIgotICAgICAgICAib3V0IHZl
YzQgbXlfVmVjO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgY29u
c3QgbWF0NCBtNCA9IGludmVyc2UobWF0NCgyOS4wZiwgMzEuMGYsIDM3LjBmLCA0MS4wZixcbiIK
LSAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDMuMGYsIDQ3LjBmLCA1
My4wZiwgNTkuMGYsXG4iCi0gICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDYxLjBmLCA2Ny4wZiwgNzEuMGYsIDczLjBmLFxuIgotICAgICAgICAiICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA3OS4wZiwgODMuMGYsIDg5LjBmLCA5Ny4wZikpO1xuIgotICAgICAg
ICAiICAgbWF0NCBtID0gbTQgKiBtYXQ0KGkpO1xuIgotICAgICAgICAiICAgbXlfVmVjID0gbVsw
XTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIGZs
b2F0IGlucHV0RWxlbWVudHNbXSA9Ci0gICAgewotICAgICAgICAyOS4wZiwgMzEuMGYsIDM3LjBm
LCA0MS4wZiwKLSAgICAgICAgNDMuMGYsIDQ3LjBmLCA1My4wZiwgNTkuMGYsCi0gICAgICAgIDYx
LjBmLCA2Ny4wZiwgNzEuMGYsIDczLjBmLAotICAgICAgICA3OS4wZiwgODMuMGYsIDg5LjBmLCA5
Ny4wZgotICAgIH07Ci0gICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IGlucHV0KGlucHV0RWxlbWVudHMs
IGlucHV0RWxlbWVudHMgKyAxNik7Ci0gICAgQVNTRVJUX0ZBTFNFKGNvbnN0YW50VmVjdG9yRm91
bmRJbkFTVChpbnB1dCkpOwotICAgIGZsb2F0IG91dHB1dEVsZW1lbnRzW10gPQotICAgIHsKLSAg
ICAgICAgNDMuMGYgLyAxMjYuMGYsIC0xMS4wZiAvIDIxLjBmLCAtMi4wZiAvIDIxLjBmLCAzMS4w
ZiAvIDEyNi4wZiwKLSAgICAgICAgLTUuMGYgLyA3LjBmLCA5LjBmIC8gMTQuMGYsIDEuMGYgLyAx
NC4wZiwgLTEuMGYgLyA3LjBmLAotICAgICAgICA4NS4wZiAvIDEyNi4wZiwgLTExLjBmIC8gMjEu
MGYsIDQzLjBmIC8gMjEwLjBmLCAtMzguMGYgLyAzMTUuMGYsCi0gICAgICAgIC0yLjBmIC8gNy4w
ZiwgNS4wZiAvIDE0LjBmLCAtNi4wZiAvIDM1LjBmLCAzLjBmIC8gNzAuMGYKLSAgICB9OwotICAg
IHN0ZDo6dmVjdG9yPGZsb2F0PiByZXN1bHQob3V0cHV0RWxlbWVudHMsIG91dHB1dEVsZW1lbnRz
ICsgMTYpOwotICAgIGNvbnN0IGZsb2F0IGZsb2F0RmF1bHRUb2xlcmFuY2UgPSAwLjAwMDAxZjsK
LSAgICBBU1NFUlRfVFJVRShjb25zdGFudFZlY3Rvck5lYXJGb3VuZEluQVNUKHJlc3VsdCwgZmxv
YXRGYXVsdFRvbGVyYW5jZSkpOwotfQotCi0vLyBGb2xkTXhOTWF0cml4RGV0ZXJtaW5hbnQgdGVz
dHMgY2hlY2sgaWYgdGhlIG1hdHJpeCAnZGV0ZXJtaW5hbnQnIG9wZXJhdGlvbgotLy8gb24gTXhO
IG1hdHJpeCBpcyBjb25zdGFudCBmb2xkZWQgd2hlbiBhcmd1bWVudCBpcyBjb25zdGFudCBleHBy
ZXNzaW9uIGFuZCBhbHNvCi0vLyBjaGVja3MgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSByZXN1bHQg
cmV0dXJuZWQgYnkgdGhlIGNvbnN0YW50IGZvbGRpbmcgb3BlcmF0aW9uLgotLy8gQWxsIHRoZSBt
YXRyaWNlcyBpbmNsdWRpbmcgbWF0cmljZXMgaW4gdGhlIHNoYWRlciBjb2RlIGFyZSBpbiBjb2x1
bW4tbWFqb3Igb3JkZXIuCi1URVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZDJ4Mk1hdHJp
eERldGVybWluYW50KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQot
ICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKLSAgICAgICAgIm91dCBmbG9hdCBteV9GbG9hdDsiCi0gICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iCi0gICAgICAgICIgICBjb25zdCBmbG9hdCBmID0gZGV0ZXJtaW5hbnQobWF0Migy
LjBmLCAzLjBmLFxuIgotICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgNS4wZiwgNy4wZikpO1xuIgotICAgICAgICAiICAgbXlfRmxvYXQgPSBmO1xuIgotICAgICAg
ICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgZmxvYXQgaW5wdXRFbGVt
ZW50c1tdID0KLSAgICB7Ci0gICAgICAgIDIuMGYsIDMuMGYsCi0gICAgICAgIDUuMGYsIDcuMGYK
LSAgICB9OwotICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBpbnB1dChpbnB1dEVsZW1lbnRzLCBpbnB1
dEVsZW1lbnRzICsgNCk7Ci0gICAgQVNTRVJUX0ZBTFNFKGNvbnN0YW50Q29sdW1uTWFqb3JNYXRy
aXhGb3VuZEluQVNUKGlucHV0KSk7Ci0gICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNU
KC0xLjBmKSk7Ci19Ci0KLS8vIENoZWNrIGlmIHRoZSBtYXRyaXggJ2RldGVybWluYW50JyBvcGVy
YXRpb24gb24gM3gzIG1hdHJpeCBpcyBjb25zdGFudCBmb2xkZWQuCi1URVNUX0YoQ29uc3RhbnRG
b2xkaW5nVGVzdCwgRm9sZDN4M01hdHJpeERldGVybWluYW50KQotewotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCBmbG9hdCBteV9G
bG9hdDsiCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBjb25zdCBmbG9h
dCBmID0gZGV0ZXJtaW5hbnQobWF0MygxMS4wZiwgMTMuMGYsIDE5LjBmLFxuIgotICAgICAgICAg
ICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjMuMGYsIDI5LjBmLCAzMS4wZixc
biIKLSAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM3LjBmLCA0
MS4wZiwgNDMuMGYpKTtcbiIKLSAgICAgICAgIiAgIG15X0Zsb2F0ID0gZjtcbiIKLSAgICAgICAg
In1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIGZsb2F0IGlucHV0RWxlbWVu
dHNbXSA9Ci0gICAgewotICAgICAgICAxMS4wZiwgMTMuMGYsIDE5LjBmLAotICAgICAgICAyMy4w
ZiwgMjkuMGYsIDMxLjBmLAotICAgICAgICAzNy4wZiwgNDEuMGYsIDQzLjBmCi0gICAgfTsKLSAg
ICBzdGQ6OnZlY3RvcjxmbG9hdD4gaW5wdXQoaW5wdXRFbGVtZW50cywgaW5wdXRFbGVtZW50cyAr
IDkpOwotICAgIEFTU0VSVF9GQUxTRShjb25zdGFudENvbHVtbk1ham9yTWF0cml4Rm91bmRJbkFT
VChpbnB1dCkpOwotICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJbkFTVCgtNjgwLjBmKSk7
Ci19Ci0KLS8vIENoZWNrIGlmIHRoZSBtYXRyaXggJ2RldGVybWluYW50JyBvcGVyYXRpb24gb24g
NHg0IG1hdHJpeCBpcyBjb25zdGFudCBmb2xkZWQuCi1URVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVz
dCwgRm9sZDR4NE1hdHJpeERldGVybWluYW50KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCBmbG9hdCBteV9GbG9hdDsiCi0g
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBjb25zdCBmbG9hdCBmID0gZGV0
ZXJtaW5hbnQobWF0NCgyOS4wZiwgMzEuMGYsIDM3LjBmLCA0MS4wZixcbiIKLSAgICAgICAgIiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQzLjBmLCA0Ny4wZiwgNTMuMGYsIDU5
LjBmLFxuIgotICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNjEu
MGYsIDY3LjBmLCA3MS4wZiwgNzMuMGYsXG4iCi0gICAgICAgICIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA3OS4wZiwgODMuMGYsIDg5LjBmLCA5Ny4wZikpO1xuIgotICAgICAg
ICAiICAgbXlfRmxvYXQgPSBmO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRl
clN0cmluZyk7Ci0gICAgZmxvYXQgaW5wdXRFbGVtZW50c1tdID0KLSAgICB7Ci0gICAgICAgIDI5
LjBmLCAzMS4wZiwgMzcuMGYsIDQxLjBmLAotICAgICAgICA0My4wZiwgNDcuMGYsIDUzLjBmLCA1
OS4wZiwKLSAgICAgICAgNjEuMGYsIDY3LjBmLCA3MS4wZiwgNzMuMGYsCi0gICAgICAgIDc5LjBm
LCA4My4wZiwgODkuMGYsIDk3LjBmCi0gICAgfTsKLSAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gaW5w
dXQoaW5wdXRFbGVtZW50cywgaW5wdXRFbGVtZW50cyArIDE2KTsKLSAgICBBU1NFUlRfRkFMU0Uo
Y29uc3RhbnRDb2x1bW5NYWpvck1hdHJpeEZvdW5kSW5BU1QoaW5wdXQpKTsKLSAgICBBU1NFUlRf
VFJVRShjb25zdGFudEZvdW5kSW5BU1QoLTI1MjAuMGYpKTsKLX0KLQotLy8gQ2hlY2sgaWYgdGhl
IG1hdHJpeCAndHJhbnNwb3NlJyBvcGVyYXRpb24gb24gM3gzIG1hdHJpeCBpcyBjb25zdGFudCBm
b2xkZWQuCi0vLyBBbGwgdGhlIG1hdHJpY2VzIGluY2x1ZGluZyBtYXRyaWNlcyBpbiB0aGUgc2hh
ZGVyIGNvZGUgYXJlIGluIGNvbHVtbi1tYWpvciBvcmRlci4KLVRFU1RfRihDb25zdGFudEZvbGRp
bmdUZXN0LCBGb2xkM3gzTWF0cml4VHJhbnNwb3NlKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImluIGZsb2F0IGk7XG4iCi0gICAg
ICAgICJvdXQgdmVjMyBteV9WZWM7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAg
ICAgICIgICBjb25zdCBtYXQzIG0zID0gdHJhbnNwb3NlKG1hdDMoMTEuMGYsIDEzLjBmLCAxOS4w
ZixcbiIKLSAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMy4wZiwg
MjkuMGYsIDMxLjBmLFxuIgotICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDM3LjBmLCA0MS4wZiwgNDMuMGYpKTtcbiIKLSAgICAgICAgIiAgIG1hdDMgbSA9IG0zICog
bWF0MyhpKTtcbiIKLSAgICAgICAgIiAgIG15X1ZlYyA9IG1bMF07XG4iCi0gICAgICAgICJ9XG4i
OwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBmbG9hdCBpbnB1dEVsZW1lbnRzW10g
PQotICAgIHsKLSAgICAgICAgMTEuMGYsIDEzLjBmLCAxOS4wZiwKLSAgICAgICAgMjMuMGYsIDI5
LjBmLCAzMS4wZiwKLSAgICAgICAgMzcuMGYsIDQxLjBmLCA0My4wZgotICAgIH07Ci0gICAgc3Rk
Ojp2ZWN0b3I8ZmxvYXQ+IGlucHV0KGlucHV0RWxlbWVudHMsIGlucHV0RWxlbWVudHMgKyA5KTsK
LSAgICBBU1NFUlRfRkFMU0UoY29uc3RhbnRDb2x1bW5NYWpvck1hdHJpeEZvdW5kSW5BU1QoaW5w
dXQpKTsKLSAgICBmbG9hdCBvdXRwdXRFbGVtZW50c1tdID0KLSAgICB7Ci0gICAgICAgIDExLjBm
LCAyMy4wZiwgMzcuMGYsCi0gICAgICAgIDEzLjBmLCAyOS4wZiwgNDEuMGYsCi0gICAgICAgIDE5
LjBmLCAzMS4wZiwgNDMuMGYKLSAgICB9OwotICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiByZXN1bHQo
b3V0cHV0RWxlbWVudHMsIG91dHB1dEVsZW1lbnRzICsgOSk7Ci0gICAgQVNTRVJUX1RSVUUoY29u
c3RhbnRDb2x1bW5NYWpvck1hdHJpeEZvdW5kSW5BU1QocmVzdWx0KSk7Ci19Ci0KLS8vIFRlc3Qg
dGhhdCAweEZGRkZGRkZGIHdyYXBzIHRvIC0xIHdoZW4gcGFyc2VkIGFzIGludGVnZXIuCi0vLyBU
aGlzIGlzIGZlYXR1cmVkIGluIHRoZSBleGFtcGxlcyBvZiBFU1NMMyBzZWN0aW9uIDQuMS4zLiBF
U1NMMyBzZWN0aW9uIDEyLjQyCi0vLyBtZWFucyB0aGF0IGFueSAzMi1iaXQgdW5zaWduZWQgaW50
ZWdlciB2YWx1ZSBpcyBhIHZhbGlkIGxpdGVyYWwuCi1URVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVz
dCwgUGFyc2VXcmFwcGVkSGV4SW50TGl0ZXJhbCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJwcmVjaXNpb24gaGlnaHAgaW50O1xu
IgotICAgICAgICAidW5pZm9ybSBpbnQgaW5JbnQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9W
ZWM7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBjb25zdCBpbnQg
aSA9IDB4RkZGRkZGRkY7XG4iCi0gICAgICAgICIgICBteV9WZWMgPSB2ZWM0KGkgKiBpbkludCk7
XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NF
UlRfVFJVRShjb25zdGFudEZvdW5kSW5BU1QoLTEpKTsKLX0KLQotLy8gVGVzdCB0aGF0IDMwMDAw
MDAwMDAgd3JhcHMgdG8gLTEyOTQ5NjcyOTYgd2hlbiBwYXJzZWQgYXMgaW50ZWdlci4KLS8vIFRo
aXMgaXMgZmVhdHVyZWQgaW4gdGhlIGV4YW1wbGVzIG9mIEdMU0wgNC41LCBhbmQgRVNTTCBiZWhh
dmlvciBzaG91bGQgbWF0Y2gKLS8vIGRlc2t0b3AgR0xTTCB3aGVuIGl0IGNvbWVzIHRvIGludGVn
ZXIgcGFyc2luZy4KLVRFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBQYXJzZVdyYXBwZWREZWNp
bWFsSW50TGl0ZXJhbCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0K
LSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCi0gICAgICAgICJwcmVjaXNpb24gaGlnaHAgaW50O1xuIgotICAgICAgICAidW5p
Zm9ybSBpbnQgaW5JbnQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9WZWM7XG4iCi0gICAgICAg
ICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBjb25zdCBpbnQgaSA9IDMwMDAwMDAwMDA7
XG4iCi0gICAgICAgICIgICBteV9WZWMgPSB2ZWM0KGkgKiBpbkludCk7XG4iCi0gICAgICAgICJ9
XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShjb25zdGFu
dEZvdW5kSW5BU1QoLTEyOTQ5NjcyOTYpKTsKLX0KLQotLy8gVGVzdCB0aGF0IDB4RkZGRkZGRkZ1
IGlzIHBhcnNlZCBjb3JyZWN0bHkgYXMgYW4gdW5zaWduZWQgaW50ZWdlciBsaXRlcmFsLgotLy8g
VGhpcyBpcyBmZWF0dXJlZCBpbiB0aGUgZXhhbXBsZXMgb2YgRVNTTDMgc2VjdGlvbiA0LjEuMy4g
RVNTTDMgc2VjdGlvbiAxMi40MgotLy8gbWVhbnMgdGhhdCBhbnkgMzItYml0IHVuc2lnbmVkIGlu
dGVnZXIgdmFsdWUgaXMgYSB2YWxpZCBsaXRlcmFsLgotVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rl
c3QsIFBhcnNlTWF4VWludExpdGVyYWwpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRl
clN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGludDtcbiIKLSAg
ICAgICAgInVuaWZvcm0gdWludCBpbkludDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X1ZlYztc
biIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGNvbnN0IHVpbnQgaSA9
IDB4RkZGRkZGRkZ1O1xuIgotICAgICAgICAiICAgbXlfVmVjID0gdmVjNChpICogaW5JbnQpO1xu
IgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJU
X1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKDB4RkZGRkZGRkZ1KSk7Ci19Ci0KLS8vIFRlc3QgdGhh
dCB1bmFyeSBtaW51cyBhcHBsaWVkIHRvIHVuc2lnbmVkIGludCBpcyBjb25zdGFudCBmb2xkZWQg
Y29ycmVjdGx5LgotLy8gVGhpcyBpcyBmZWF0dXJlZCBpbiB0aGUgZXhhbXBsZXMgb2YgRVNTTDMg
c2VjdGlvbiA0LjEuMy4gRVNTTDMgc2VjdGlvbiAxMi40MgotLy8gbWVhbnMgdGhhdCBhbnkgMzIt
Yml0IHVuc2lnbmVkIGludGVnZXIgdmFsdWUgaXMgYSB2YWxpZCBsaXRlcmFsLgotVEVTVF9GKENv
bnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGRVbmFyeU1pbnVzT25VaW50TGl0ZXJhbCkKLXsKLSAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBl
c1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJwcmVj
aXNpb24gaGlnaHAgaW50O1xuIgotICAgICAgICAidW5pZm9ybSB1aW50IGluSW50O1xuIgotICAg
ICAgICAib3V0IHZlYzQgbXlfVmVjO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAg
ICAgICAiICAgY29uc3QgdWludCBpID0gLTF1O1xuIgotICAgICAgICAiICAgbXlfVmVjID0gdmVj
NChpICogaW5JbnQpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmlu
Zyk7Ci0gICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKDB4RkZGRkZGRkZ1KSk7Ci19
Ci0KLS8vIFRlc3QgdGhhdCBjb25zdGFudCBtYXQyIGluaXRpYWxpemF0aW9uIHdpdGggYSBtYXQy
IHBhcmFtZXRlciB3b3JrcyBjb3JyZWN0bHkuCi1URVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwg
Rm9sZE1hdDJDb25zdHJ1Y3RvclRha2luZ01hdDIpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAg
ICAgICAgInVuaWZvcm0gZmxvYXQgbXVsdDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
LSAgICAgICAgIiAgIGNvbnN0IG1hdDIgY20gPSBtYXQyKG1hdDIoMC4wLCAxLjAsIDIuMCwgMy4w
KSk7XG4iCi0gICAgICAgICIgICBtYXQyIG0gPSBjbSAqIG11bHQ7XG4iCi0gICAgICAgICIgICBn
bF9GcmFnQ29sb3IgPSB2ZWM0KG1bMF0sIG1bMV0pO1xuIgotICAgICAgICAifVxuIjsKLSAgICBj
b21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgZmxvYXQgb3V0cHV0RWxlbWVudHNbXSA9Ci0gICAg
ewotICAgICAgICAwLjBmLCAxLjBmLAotICAgICAgICAyLjBmLCAzLjBmCi0gICAgfTsKLSAgICBz
dGQ6OnZlY3RvcjxmbG9hdD4gcmVzdWx0KG91dHB1dEVsZW1lbnRzLCBvdXRwdXRFbGVtZW50cyAr
IDQpOwotICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Q29sdW1uTWFqb3JNYXRyaXhGb3VuZEluQVNU
KHJlc3VsdCkpOwotfQotCi0vLyBUZXN0IHRoYXQgY29uc3RhbnQgbWF0MiBpbml0aWFsaXphdGlv
biB3aXRoIGFuIGludCBwYXJhbWV0ZXIgd29ya3MgY29ycmVjdGx5LgotVEVTVF9GKENvbnN0YW50
Rm9sZGluZ1Rlc3QsIEZvbGRNYXQyQ29uc3RydWN0b3JUYWtpbmdTY2FsYXIpCi17Ci0gICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgbXVsdDtcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGNvbnN0IG1hdDIgY20gPSBtYXQyKDMpO1xuIgot
ICAgICAgICAiICAgbWF0MiBtID0gY20gKiBtdWx0O1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNChtWzBdLCBtWzFdKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShz
aGFkZXJTdHJpbmcpOwotICAgIGZsb2F0IG91dHB1dEVsZW1lbnRzW10gPQotICAgIHsKLSAgICAg
ICAgMy4wZiwgMC4wZiwKLSAgICAgICAgMC4wZiwgMy4wZgotICAgIH07Ci0gICAgc3RkOjp2ZWN0
b3I8ZmxvYXQ+IHJlc3VsdChvdXRwdXRFbGVtZW50cywgb3V0cHV0RWxlbWVudHMgKyA0KTsKLSAg
ICBBU1NFUlRfVFJVRShjb25zdGFudENvbHVtbk1ham9yTWF0cml4Rm91bmRJbkFTVChyZXN1bHQp
KTsKLX0KLQotLy8gVGVzdCB0aGF0IGNvbnN0YW50IG1hdDIgaW5pdGlhbGl6YXRpb24gd2l0aCBh
IG1peCBvZiBwYXJhbWV0ZXJzIHdvcmtzIGNvcnJlY3RseS4KLVRFU1RfRihDb25zdGFudEZvbGRp
bmdUZXN0LCBGb2xkTWF0MkNvbnN0cnVjdG9yVGFraW5nTWl4KQotewotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IG11bHQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCi0gICAgICAgICIgICBjb25zdCBtYXQyIGNtID0gbWF0MigtMSwgdmVjMigwLjAsIDEu
MCksIHZlYzQoMi4wKSk7XG4iCi0gICAgICAgICIgICBtYXQyIG0gPSBjbSAqIG11bHQ7XG4iCi0g
ICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KG1bMF0sIG1bMV0pO1xuIgotICAgICAgICAi
fVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgZmxvYXQgb3V0cHV0RWxlbWVu
dHNbXSA9Ci0gICAgewotICAgICAgICAtMS4wLCAwLjBmLAotICAgICAgICAxLjBmLCAyLjBmCi0g
ICAgfTsKLSAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gcmVzdWx0KG91dHB1dEVsZW1lbnRzLCBvdXRw
dXRFbGVtZW50cyArIDQpOwotICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Q29sdW1uTWFqb3JNYXRy
aXhGb3VuZEluQVNUKHJlc3VsdCkpOwotfQotCi0vLyBUZXN0IHRoYXQgY29uc3RhbnQgbWF0MiBp
bml0aWFsaXphdGlvbiB3aXRoIGEgbWF0MyBwYXJhbWV0ZXIgd29ya3MgY29ycmVjdGx5LgotVEVT
VF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGRNYXQyQ29uc3RydWN0b3JUYWtpbmdNYXQzKQot
ewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IG11bHQ7XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBjb25zdCBtYXQyIGNtID0gbWF0
MihtYXQzKDAuMCwgMS4wLCAyLjAsIDMuMCwgNC4wLCA1LjAsIDYuMCwgNy4wLCA4LjApKTtcbiIK
LSAgICAgICAgIiAgIG1hdDIgbSA9IGNtICogbXVsdDtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQobVswXSwgbVsxXSk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUo
c2hhZGVyU3RyaW5nKTsKLSAgICBmbG9hdCBvdXRwdXRFbGVtZW50c1tdID0KLSAgICB7Ci0gICAg
ICAgIDAuMGYsIDEuMGYsCi0gICAgICAgIDMuMGYsIDQuMGYKLSAgICB9OwotICAgIHN0ZDo6dmVj
dG9yPGZsb2F0PiByZXN1bHQob3V0cHV0RWxlbWVudHMsIG91dHB1dEVsZW1lbnRzICsgNCk7Ci0g
ICAgQVNTRVJUX1RSVUUoY29uc3RhbnRDb2x1bW5NYWpvck1hdHJpeEZvdW5kSW5BU1QocmVzdWx0
KSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBjb25zdGFudCBtYXQ0eDMgaW5pdGlhbGl6YXRpb24gd2l0
aCBhIG1hdDN4MiBwYXJhbWV0ZXIgd29ya3MgY29ycmVjdGx5LgotVEVTVF9GKENvbnN0YW50Rm9s
ZGluZ1Rlc3QsIEZvbGRNYXQ0eDNDb25zdHJ1Y3RvclRha2luZ01hdDN4MikKLXsKLSAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xu
IgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3Jt
IGZsb2F0IG11bHQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBjb25zdCBtYXQ0eDMgY20gPSBtYXQ0
eDMobWF0M3gyKDEuMCwgMi4wLFxuIgotICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAzLjAsIDQuMCxcbiIKLSAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgNS4wLCA2LjApKTtcbiIKLSAgICAgICAgIiAgIG1hdDR4MyBtID0gY20gKiBt
dWx0O1xuIgotICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNChtWzBdLCBtWzFdWzBdKTtc
biIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIGZsb2F0
IG91dHB1dEVsZW1lbnRzW10gPQotICAgIHsKLSAgICAgICAgMS4wZiwgMi4wZiwgMC4wZiwKLSAg
ICAgICAgMy4wZiwgNC4wZiwgMC4wZiwKLSAgICAgICAgNS4wZiwgNi4wZiwgMS4wZiwKLSAgICAg
ICAgMC4wZiwgMC4wZiwgMC4wZgotICAgIH07Ci0gICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHJlc3Vs
dChvdXRwdXRFbGVtZW50cywgb3V0cHV0RWxlbWVudHMgKyAxMik7Ci0gICAgQVNTRVJUX1RSVUUo
Y29uc3RhbnRDb2x1bW5NYWpvck1hdHJpeEZvdW5kSW5BU1QocmVzdWx0KSk7Ci19Ci0KLQotLy8g
VGVzdCB0aGF0IGNvbnN0YW50IG1hdDIgaW5pdGlhbGl6YXRpb24gd2l0aCBhIHZlYzQgcGFyYW1l
dGVyIHdvcmtzIGNvcnJlY3RseS4KLVRFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkTWF0
MkNvbnN0cnVjdG9yVGFraW5nVmVjNCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAi
dW5pZm9ybSBmbG9hdCBtdWx0O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAg
ICAiICAgY29uc3QgbWF0MiBjbSA9IG1hdDIodmVjNCgwLjAsIDEuMCwgMi4wLCAzLjApKTtcbiIK
LSAgICAgICAgIiAgIG1hdDIgbSA9IGNtICogbXVsdDtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQobVswXSwgbVsxXSk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUo
c2hhZGVyU3RyaW5nKTsKLSAgICBmbG9hdCBvdXRwdXRFbGVtZW50c1tdID0KLSAgICB7Ci0gICAg
ICAgIDAuMGYsIDEuMGYsCi0gICAgICAgIDIuMGYsIDMuMGYKLSAgICB9OwotICAgIHN0ZDo6dmVj
dG9yPGZsb2F0PiByZXN1bHQob3V0cHV0RWxlbWVudHMsIG91dHB1dEVsZW1lbnRzICsgNCk7Ci0g
ICAgQVNTRVJUX1RSVUUoY29uc3RhbnRDb2x1bW5NYWpvck1hdHJpeEZvdW5kSW5BU1QocmVzdWx0
KSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBlcXVhbGl0eSBjb21wYXJpc29uIG9mIHR3byBkaWZmZXJl
bnQgc3RydWN0cyB3aXRoIGEgbmVzdGVkIHN0cnVjdCBpbnNpZGUgcmV0dXJucyBmYWxzZS4KLVRF
U1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkTmVzdGVkRGlmZmVyZW50U3RydWN0RXF1YWxp
dHlDb21wYXJpc29uKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQot
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJzdHJ1Y3QgbmVz
dGVkIHtcbiIKLSAgICAgICAgIiAgICBmbG9hdCBmXG47IgotICAgICAgICAifTtcbiIKLSAgICAg
ICAgInN0cnVjdCBTIHtcbiIKLSAgICAgICAgIiAgICBuZXN0ZWQgYTtcbiIKLSAgICAgICAgIiAg
ICBmbG9hdCBmO1xuIgotICAgICAgICAifTtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCBtdWx0
O1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAg
ICBjb25zdCBTIHMxID0gUyhuZXN0ZWQoMC4wKSwgMi4wKTtcbiIKLSAgICAgICAgIiAgICBjb25z
dCBTIHMyID0gUyhuZXN0ZWQoMC4wKSwgMy4wKTtcbiIKLSAgICAgICAgIiAgICBnbF9GcmFnQ29s
b3IgPSAoczEgPT0gczIgPyAxLjAgOiAwLjUpICogbXVsdDtcbiIKLSAgICAgICAgIn1cbiI7Ci0g
ICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJ
bkFTVCgwLjVmKSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBlcXVhbGl0eSBjb21wYXJpc29uIG9mIHR3
byBpZGVudGljYWwgc3RydWN0cyB3aXRoIGEgbmVzdGVkIHN0cnVjdCBpbnNpZGUgcmV0dXJucyB0
cnVlLgotVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGROZXN0ZWRJZGVudGljYWxTdHJ1
Y3RFcXVhbGl0eUNvbXBhcmlzb24pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInN0
cnVjdCBuZXN0ZWQge1xuIgotICAgICAgICAiICAgIGZsb2F0IGZcbjsiCi0gICAgICAgICJ9O1xu
IgotICAgICAgICAic3RydWN0IFMge1xuIgotICAgICAgICAiICAgIG5lc3RlZCBhO1xuIgotICAg
ICAgICAiICAgIGZsb2F0IGY7XG4iCi0gICAgICAgICIgICAgaW50IGk7XG4iCi0gICAgICAgICJ9
O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IG11bHQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIGNvbnN0IFMgczEgPSBTKG5lc3RlZCgw
LjApLCAyLjAsIDMpO1xuIgotICAgICAgICAiICAgIGNvbnN0IFMgczIgPSBTKG5lc3RlZCgwLjAp
LCAyLjAsIDMpO1xuIgotICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IChzMSA9PSBzMiA/IDEu
MCA6IDAuNSkgKiBtdWx0O1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0
cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKDEuMGYpKTsKLX0KLQot
Ly8gVGVzdCB0aGF0IHJpZ2h0IGVsZW1lbnRzIGFyZSBjaG9zZW4gZnJvbSBub24tc3F1YXJlIG1h
dHJpeAotVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGROb25TcXVhcmVNYXRyaXhJbmRl
eGluZykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAg
IiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
Ci0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IG1hdDN4NCgw
LCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEpWzFdO1xuIgotICAgICAgICAifVxu
IjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgZmxvYXQgb3V0cHV0RWxlbWVudHNb
XSA9IHs0LjBmLCA1LjBmLCA2LjBmLCA3LjBmfTsKLSAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gcmVz
dWx0KG91dHB1dEVsZW1lbnRzLCBvdXRwdXRFbGVtZW50cyArIDQpOwotICAgIEFTU0VSVF9UUlVF
KGNvbnN0YW50VmVjdG9yRm91bmRJbkFTVChyZXN1bHQpKTsKLX0KLQotLy8gVGVzdCB0aGF0IGZv
bGRpbmcgb3V0ZXIgcHJvZHVjdCBvZiB2ZWN0b3JzIHdpdGggbm9uLW1hdGNoaW5nIGxlbmd0aHMg
d29ya3MuCi1URVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZE5vblNxdWFyZU91dGVyUHJv
ZHVjdCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAg
IiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
Ci0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIG1hdDN4MiBwcm9kID0gb3V0ZXJQcm9k
dWN0KHZlYzIoMi4wLCAzLjApLCB2ZWMzKDUuMCwgNy4wLCAxMS4wKSk7XG4iCi0gICAgICAgICIg
ICAgbXlfRnJhZ0NvbG9yID0gdmVjNChwcm9kWzBdLngpO1xuIgotICAgICAgICAifVxuIjsKLSAg
ICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgIGZs
b2F0IG91dHB1dEVsZW1lbnRzW10gPQotICAgIHsKLSAgICAgICAgMTAuMGYsIDE1LjBmLAotICAg
ICAgICAxNC4wZiwgMjEuMGYsCi0gICAgICAgIDIyLjBmLCAzMy4wZgotICAgIH07Ci0gICAgLy8g
Y2xhbmctZm9ybWF0IG9uCi0gICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHJlc3VsdChvdXRwdXRFbGVt
ZW50cywgb3V0cHV0RWxlbWVudHMgKyA2KTsKLSAgICBBU1NFUlRfVFJVRShjb25zdGFudENvbHVt
bk1ham9yTWF0cml4Rm91bmRJbkFTVChyZXN1bHQpKTsKLX0KLQotLy8gVGVzdCB0aGF0IGZvbGRp
bmcgYml0IHNoaWZ0IGxlZnQgd2l0aCBub24tbWF0Y2hpbmcgc2lnbmVkbmVzcyB3b3Jrcy4KLVRF
U1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkQml0U2hpZnRMZWZ0RGlmZmVyZW50U2lnbmVk
bmVzcykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAg
IiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
Ci0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIHVpbnQgdSA9IDB4ZmZmZmZmZmZ1IDw8
IDMxO1xuIgotICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQodSk7XG4iCi0gICAgICAg
ICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShjb25z
dGFudEZvdW5kSW5BU1QoMHg4MDAwMDAwMHUpKTsKLX0KLQotLy8gVGVzdCB0aGF0IGZvbGRpbmcg
Yml0IHNoaWZ0IHJpZ2h0IHdpdGggbm9uLW1hdGNoaW5nIHNpZ25lZG5lc3Mgd29ya3MuCi1URVNU
X0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZEJpdFNoaWZ0UmlnaHREaWZmZXJlbnRTaWduZWRu
ZXNzKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAi
I3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
LSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigp
XG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgdWludCB1ID0gMHhmZmZmZmZmZnUgPj4g
MzA7XG4iCi0gICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCh1KTtcbiIKLSAgICAgICAg
In1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGNvbnN0
YW50Rm91bmRJbkFTVCgweDN1KSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBmb2xkaW5nIHNpZ25lZCBi
aXQgc2hpZnQgcmlnaHQgZXh0ZW5kcyB0aGUgc2lnbiBiaXQuCi0vLyBFU1NMIDMuMDAuNiBzZWN0
aW9uIDUuOSBFeHByZXNzaW9ucy4KLVRFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkQml0
U2hpZnRSaWdodEV4dGVuZFNpZ25CaXQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRl
clN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgot
ICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBjb25z
dCBpbnQgaSA9IDB4OGZmZmUwMDAgPj4gNjtcbiIKLSAgICAgICAgIiAgICB1aW50IHUgPSB1aW50
KGkpOyIKLSAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgotICAgICAgICAi
fVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgLy8gVGhlIGJpdHMgb2YgdGhl
IG9wZXJhbmQgYXJlIDB4OGZmZmUwMDAgPSAxMDAwIDExMTEgMTExMSAxMTExIDExMTAgMDAwMCAw
MDAwIDAwMDAKLSAgICAvLyBBZnRlciBzaGlmdGluZywgdGhleSBiZWNvbWUgICAgICAgICAgICAg
IDExMTEgMTExMCAwMDExIDExMTEgMTExMSAxMTExIDEwMDAgMDAwMCA9IDB4ZmUzZmZmODAKLSAg
ICBBU1NFUlRfVFJVRShjb25zdGFudEZvdW5kSW5BU1QoMHhmZTNmZmY4MHUpKTsKLX0KLQotLy8g
U2lnbmVkIGJpdCBzaGlmdCBsZWZ0IHNob3VsZCBpbnRlcnByZXQgaXRzIG9wZXJhbmQgYXMgYSBi
aXQgcGF0dGVybi4gQXMgYSBjb25zZXF1ZW5jZSBhIG51bWJlcgotLy8gbWF5IHR1cm4gZnJvbSBw
b3NpdGl2ZSB0byBuZWdhdGl2ZSB3aGVuIHNoaWZ0ZWQgbGVmdC4KLS8vIEVTU0wgMy4wMC42IHNl
Y3Rpb24gNS45IEV4cHJlc3Npb25zLgotVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGRC
aXRTaGlmdExlZnRJbnRlcnByZXRlZEFzQml0UGF0dGVybikKLXsKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFn
Q29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAg
ICAiICAgIGNvbnN0IGludCBpID0gMHgxZmZmZmZmZiA8PCAzO1xuIgotICAgICAgICAiICAgIHVp
bnQgdSA9IHVpbnQoaSk7IgotICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQodSk7XG4i
Ci0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRf
VFJVRShjb25zdGFudEZvdW5kSW5BU1QoMHhmZmZmZmZmOHUpKTsKLX0KLQotLy8gVGVzdCB0aGF0
IGRpdmlkaW5nIHRoZSBtaW5pbXVtIHNpZ25lZCBpbnRlZ2VyIGJ5IC0xIHdvcmtzLgotLy8gRVNT
TCAzLjAwLjYgc2VjdGlvbiA0LjEuMyBJbnRlZ2VyczoKLS8vICJIb3dldmVyLCBmb3IgdGhlIGNh
c2Ugd2hlcmUgdGhlIG1pbmltdW0gcmVwcmVzZW50YWJsZSB2YWx1ZSBpcyBkaXZpZGVkIGJ5IC0x
LCBpdCBpcyBhbGxvd2VkIHRvCi0vLyByZXR1cm4gZWl0aGVyIHRoZSBtaW5pbXVtIHJlcHJlc2Vu
dGFibGUgdmFsdWUgb3IgdGhlIG1heGltdW0gcmVwcmVzZW50YWJsZSB2YWx1ZS4iCi1URVNUX0Yo
Q29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZERpdmlkZU1pbmltdW1JbnRlZ2VyQnlNaW51c09uZSkK
LXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAg
ICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgot
ICAgICAgICAie1xuIgotICAgICAgICAiICAgIGludCBpID0gMHg4MDAwMDAwMCAvICgtMSk7XG4i
Ci0gICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNChpKTtcbiIKLSAgICAgICAgIn1cbiI7
Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91
bmRJbkFTVCgweDdmZmZmZmZmKSB8fCBjb25zdGFudEZvdW5kSW5BU1QoLTB4N2ZmZmZmZmYgLSAx
KSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBmb2xkaW5nIGFuIHVuc2lnbmVkIGludGVnZXIgYWRkaXRp
b24gdGhhdCBvdmVyZmxvd3Mgd29ya3MuCi0vLyBFU1NMIDMuMDAuNiBzZWN0aW9uIDQuMS4zIElu
dGVnZXJzOgotLy8gIkZvciBhbGwgcHJlY2lzaW9ucywgb3BlcmF0aW9ucyByZXN1bHRpbmcgaW4g
b3ZlcmZsb3cgb3IgdW5kZXJmbG93IHdpbGwgbm90IGNhdXNlIGFueSBleGNlcHRpb24sCi0vLyBu
b3Igd2lsbCB0aGV5IHNhdHVyYXRlLCByYXRoZXIgdGhleSB3aWxsICd3cmFwJyB0byB5aWVsZCB0
aGUgbG93LW9yZGVyIG4gYml0cyBvZiB0aGUgcmVzdWx0IHdoZXJlCi0vLyBuIGlzIHRoZSBzaXpl
IGluIGJpdHMgb2YgdGhlIGludGVnZXIuIgotVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZv
bGRVbnNpZ25lZEludGVnZXJBZGRPdmVyZmxvdykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7
XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAg
IHVpbnQgdSA9IDB4ZmZmZmZmZmZ1ICsgNDN1O1xuIgotICAgICAgICAiICAgIG15X0ZyYWdDb2xv
ciA9IHZlYzQodSk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5n
KTsKLSAgICBBU1NFUlRfVFJVRShjb25zdGFudEZvdW5kSW5BU1QoNDJ1KSk7Ci19Ci0KLS8vIFRl
c3QgdGhhdCBmb2xkaW5nIGEgc2lnbmVkIGludGVnZXIgYWRkaXRpb24gdGhhdCBvdmVyZmxvd3Mg
d29ya3MuCi0vLyBFU1NMIDMuMDAuNiBzZWN0aW9uIDQuMS4zIEludGVnZXJzOgotLy8gIkZvciBh
bGwgcHJlY2lzaW9ucywgb3BlcmF0aW9ucyByZXN1bHRpbmcgaW4gb3ZlcmZsb3cgb3IgdW5kZXJm
bG93IHdpbGwgbm90IGNhdXNlIGFueSBleGNlcHRpb24sCi0vLyBub3Igd2lsbCB0aGV5IHNhdHVy
YXRlLCByYXRoZXIgdGhleSB3aWxsICd3cmFwJyB0byB5aWVsZCB0aGUgbG93LW9yZGVyIG4gYml0
cyBvZiB0aGUgcmVzdWx0IHdoZXJlCi0vLyBuIGlzIHRoZSBzaXplIGluIGJpdHMgb2YgdGhlIGlu
dGVnZXIuIgotVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGRTaWduZWRJbnRlZ2VyQWRk
T3ZlcmZsb3cpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBt
YWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBpbnQgaSA9IDB4N2ZmZmZmZmYg
KyA0O1xuIgotICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoaSk7XG4iCi0gICAgICAg
ICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShjb25z
dGFudEZvdW5kSW5BU1QoLTB4N2ZmZmZmZmQpKTsKLX0KLQotLy8gVGVzdCB0aGF0IGZvbGRpbmcg
YW4gdW5zaWduZWQgaW50ZWdlciBzdWJ0cmFjdGlvbiB0aGF0IG92ZXJmbG93cyB3b3Jrcy4KLS8v
IEVTU0wgMy4wMC42IHNlY3Rpb24gNC4xLjMgSW50ZWdlcnM6Ci0vLyAiRm9yIGFsbCBwcmVjaXNp
b25zLCBvcGVyYXRpb25zIHJlc3VsdGluZyBpbiBvdmVyZmxvdyBvciB1bmRlcmZsb3cgd2lsbCBu
b3QgY2F1c2UgYW55IGV4Y2VwdGlvbiwKLS8vIG5vciB3aWxsIHRoZXkgc2F0dXJhdGUsIHJhdGhl
ciB0aGV5IHdpbGwgJ3dyYXAnIHRvIHlpZWxkIHRoZSBsb3ctb3JkZXIgbiBiaXRzIG9mIHRoZSBy
ZXN1bHQgd2hlcmUKLS8vIG4gaXMgdGhlIHNpemUgaW4gYml0cyBvZiB0aGUgaW50ZWdlci4iCi1U
RVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZFVuc2lnbmVkSW50ZWdlckRpZmZPdmVyZmxv
dykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2
ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0g
ICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxu
IgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIHVpbnQgdSA9IDB1IC0gNXU7XG4iCi0gICAg
ICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCh1KTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAg
Y29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJbkFT
VCgweGZmZmZmZmZidSkpOwotfQotCi0vLyBUZXN0IHRoYXQgZm9sZGluZyBhIHNpZ25lZCBpbnRl
Z2VyIHN1YnRyYWN0aW9uIHRoYXQgb3ZlcmZsb3dzIHdvcmtzLgotLy8gRVNTTCAzLjAwLjYgc2Vj
dGlvbiA0LjEuMyBJbnRlZ2VyczoKLS8vICJGb3IgYWxsIHByZWNpc2lvbnMsIG9wZXJhdGlvbnMg
cmVzdWx0aW5nIGluIG92ZXJmbG93IG9yIHVuZGVyZmxvdyB3aWxsIG5vdCBjYXVzZSBhbnkgZXhj
ZXB0aW9uLAotLy8gbm9yIHdpbGwgdGhleSBzYXR1cmF0ZSwgcmF0aGVyIHRoZXkgd2lsbCAnd3Jh
cCcgdG8geWllbGQgdGhlIGxvdy1vcmRlciBuIGJpdHMgb2YgdGhlIHJlc3VsdCB3aGVyZQotLy8g
biBpcyB0aGUgc2l6ZSBpbiBiaXRzIG9mIHRoZSBpbnRlZ2VyLiIKLVRFU1RfRihDb25zdGFudEZv
bGRpbmdUZXN0LCBGb2xkU2lnbmVkSW50ZWdlckRpZmZPdmVyZmxvdykKLXsKLSAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgot
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBt
eV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgot
ICAgICAgICAiICAgIGludCBpID0gLTB4N2ZmZmZmZmYgLSA3O1xuIgotICAgICAgICAiICAgIG15
X0ZyYWdDb2xvciA9IHZlYzQoaSk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hh
ZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShjb25zdGFudEZvdW5kSW5BU1QoMHg3ZmZmZmZm
YSkpOwotfQotCi0vLyBUZXN0IHRoYXQgZm9sZGluZyBhbiB1bnNpZ25lZCBpbnRlZ2VyIG11bHRp
cGxpY2F0aW9uIHRoYXQgb3ZlcmZsb3dzIHdvcmtzLgotLy8gRVNTTCAzLjAwLjYgc2VjdGlvbiA0
LjEuMyBJbnRlZ2VyczoKLS8vICJGb3IgYWxsIHByZWNpc2lvbnMsIG9wZXJhdGlvbnMgcmVzdWx0
aW5nIGluIG92ZXJmbG93IG9yIHVuZGVyZmxvdyB3aWxsIG5vdCBjYXVzZSBhbnkgZXhjZXB0aW9u
LAotLy8gbm9yIHdpbGwgdGhleSBzYXR1cmF0ZSwgcmF0aGVyIHRoZXkgd2lsbCAnd3JhcCcgdG8g
eWllbGQgdGhlIGxvdy1vcmRlciBuIGJpdHMgb2YgdGhlIHJlc3VsdCB3aGVyZQotLy8gbiBpcyB0
aGUgc2l6ZSBpbiBiaXRzIG9mIHRoZSBpbnRlZ2VyLiIKLVRFU1RfRihDb25zdGFudEZvbGRpbmdU
ZXN0LCBGb2xkVW5zaWduZWRJbnRlZ2VyTXVsdGlwbHlPdmVyZmxvdykKLXsKLSAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgot
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBt
eV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgot
ICAgICAgICAiICAgIHVpbnQgdSA9IDB4ZmZmZmZmZmZ1ICogMTB1O1xuIgotICAgICAgICAiICAg
IG15X0ZyYWdDb2xvciA9IHZlYzQodSk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUo
c2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShjb25zdGFudEZvdW5kSW5BU1QoMHhmZmZm
ZmZmNnUpKTsKLX0KLQotLy8gVGVzdCB0aGF0IGZvbGRpbmcgYSBzaWduZWQgaW50ZWdlciBtdWx0
aXBsaWNhdGlvbiB0aGF0IG92ZXJmbG93cyB3b3Jrcy4KLS8vIEVTU0wgMy4wMC42IHNlY3Rpb24g
NC4xLjMgSW50ZWdlcnM6Ci0vLyAiRm9yIGFsbCBwcmVjaXNpb25zLCBvcGVyYXRpb25zIHJlc3Vs
dGluZyBpbiBvdmVyZmxvdyBvciB1bmRlcmZsb3cgd2lsbCBub3QgY2F1c2UgYW55IGV4Y2VwdGlv
biwKLS8vIG5vciB3aWxsIHRoZXkgc2F0dXJhdGUsIHJhdGhlciB0aGV5IHdpbGwgJ3dyYXAnIHRv
IHlpZWxkIHRoZSBsb3ctb3JkZXIgbiBiaXRzIG9mIHRoZSByZXN1bHQgd2hlcmUKLS8vIG4gaXMg
dGhlIHNpemUgaW4gYml0cyBvZiB0aGUgaW50ZWdlci4iCi1URVNUX0YoQ29uc3RhbnRGb2xkaW5n
VGVzdCwgRm9sZFNpZ25lZEludGVnZXJNdWx0aXBseU92ZXJmbG93KQotewotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0g
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15
X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0g
ICAgICAgICIgICAgaW50IGkgPSAweDdmZmZmZmZmICogNDI7XG4iCi0gICAgICAgICIgICAgbXlf
RnJhZ0NvbG9yID0gdmVjNChpKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFk
ZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJbkFTVCgtNDIpKTsKLX0K
LQotLy8gVGVzdCB0aGF0IGZvbGRpbmcgb2YgbmVnYXRpbmcgdGhlIG1pbmltdW0gcmVwcmVzZW50
YWJsZSBpbnRlZ2VyIHdvcmtzLiBOb3RlIHRoYXQgaW4gdGhlIHRlc3QKLS8vICIweDgwMDAwMDAw
IiBpcyBhIG5lZ2F0aXZlIGxpdGVyYWwsIGFuZCB0aGUgbWludXMgc2lnbiBiZWZvcmUgaXQgaXMg
dGhlIG5lZ2F0aW9uIG9wZXJhdG9yLgotLy8gRVNTTCAzLjAwLjYgc2VjdGlvbiA0LjEuMyBJbnRl
Z2VyczoKLS8vICJGb3IgYWxsIHByZWNpc2lvbnMsIG9wZXJhdGlvbnMgcmVzdWx0aW5nIGluIG92
ZXJmbG93IG9yIHVuZGVyZmxvdyB3aWxsIG5vdCBjYXVzZSBhbnkgZXhjZXB0aW9uLAotLy8gbm9y
IHdpbGwgdGhleSBzYXR1cmF0ZSwgcmF0aGVyIHRoZXkgd2lsbCAnd3JhcCcgdG8geWllbGQgdGhl
IGxvdy1vcmRlciBuIGJpdHMgb2YgdGhlIHJlc3VsdCB3aGVyZQotLy8gbiBpcyB0aGUgc2l6ZSBp
biBiaXRzIG9mIHRoZSBpbnRlZ2VyLiIKLVRFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xk
TWluaW11bVNpZ25lZEludGVnZXJOZWdhdGlvbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7
XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAg
IGludCBpID0gLTB4ODAwMDAwMDA7XG4iCi0gICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVj
NChpKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAg
IC8vIE5lZ2F0aW5nIHRoZSBtaW5pbXVtIHNpZ25lZCBpbnRlZ2VyIG92ZXJmbG93cyB0aGUgcG9z
aXRpdmUgcmFuZ2UsIHNvIGl0IHdyYXBzIGJhY2sgdG8gaXRzZWxmLgotICAgIEFTU0VSVF9UUlVF
KGNvbnN0YW50Rm91bmRJbkFTVCgtMHg3ZmZmZmZmZiAtIDEpKTsKLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9EZWJ1Z1NoYWRl
clByZWNpc2lvbl90ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9j
b21waWxlcl90ZXN0cy9EZWJ1Z1NoYWRlclByZWNpc2lvbl90ZXN0LmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNDI0Y2I4YjlhNDZhOTY0NzA2Yzg0NGM0ZmQ4NWRlNTMwMjc2YTUw
ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvRGVidWdTaGFkZXJQcmVj
aXNpb25fdGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQ1ICswLDAgQEAKLS8vCi0vLyBD
b3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
Ci0vLwotLy8gRGVidWdTaGFkZXJQcmVjaXNpb25fdGVzdC5jcHA6Ci0vLyAgIFRlc3RzIGZvciB3
cml0aW5nIHRoZSBjb2RlIGZvciBzaGFkZXIgcHJlY2lzaW9uIGVtdWxhdGlvbi4KLS8vCi0KLSNp
bmNsdWRlICJhbmdsZV9nbC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAi
R0xTTEFORy9TaGFkZXJMYW5nLmgiCi0jaW5jbHVkZSAidGVzdHMvdGVzdF91dGlscy9jb21waWxl
cl90ZXN0LmgiCi0KLWNsYXNzIERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCA6IHB1YmxpYyBNYXRj
aE91dHB1dENvZGVUZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICBEZWJ1Z1NoYWRlclByZWNpc2lvblRl
c3QoKSA6IE1hdGNoT3V0cHV0Q29kZVRlc3QoR0xfRlJBR01FTlRfU0hBREVSLCAwLCBTSF9FU1NM
X09VVFBVVCkKLSAgICB7Ci0gICAgICAgIGFkZE91dHB1dFR5cGUoU0hfR0xTTF9DT01QQVRJQklM
SVRZX09VVFBVVCk7Ci0jaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfSExTTCkKLSAgICAgICAgYWRk
T3V0cHV0VHlwZShTSF9ITFNMXzRfMV9PVVRQVVQpOwotI2VuZGlmCi0gICAgICAgIGdldFJlc291
cmNlcygpLT5XRUJHTF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9uID0gMTsKLSAgICB9Ci0KLSAgcHJv
dGVjdGVkOgotICAgIGJvb2wgZm91bmRJbkFsbEdMU0xDb2RlKGNvbnN0IGNoYXIgKnN0cikKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBmb3VuZEluQ29kZShTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VU
UFVULCBzdHIpICYmIGZvdW5kSW5Db2RlKFNIX0VTU0xfT1VUUFVULCBzdHIpOwotICAgIH0KLQot
ICAgIGJvb2wgZm91bmRJbkhMU0xDb2RlKGNvbnN0IGNoYXIgKnN0cmluZ1RvRmluZCkgY29uc3QK
LSAgICB7Ci0jaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfSExTTCkKLSAgICAgICAgcmV0dXJuIGZv
dW5kSW5Db2RlKFNIX0hMU0xfNF8xX09VVFBVVCwgc3RyaW5nVG9GaW5kKTsKLSNlbHNlCi0gICAg
ICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgfQotfTsKLQotY2xhc3MgTm9EZWJ1Z1NoYWRl
clByZWNpc2lvblRlc3QgOiBwdWJsaWMgTWF0Y2hPdXRwdXRDb2RlVGVzdAotewotICBwdWJsaWM6
Ci0gICAgTm9EZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QoKQotICAgICAgICA6IE1hdGNoT3V0cHV0
Q29kZVRlc3QoR0xfRlJBR01FTlRfU0hBREVSLCAwLCBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VU
UFVUKQotICAgIHsKLSAgICB9Ci19OwotCi1URVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0
LCBSb3VuZGluZ0Z1bmN0aW9uc0RlZmluZWQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAg
ICAgInVuaWZvcm0gZmxvYXQgdTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAg
ICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQodSk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNv
bXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoImhp
Z2hwIGZsb2F0IGFuZ2xlX2ZybShpbiBoaWdocCBmbG9hdCIpKTsKLSAgICBBU1NFUlRfVFJVRShm
b3VuZEluRVNTTENvZGUoImhpZ2hwIHZlYzIgYW5nbGVfZnJtKGluIGhpZ2hwIHZlYzIiKSk7Ci0g
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCB2ZWMzIGFuZ2xlX2ZybShpbiBo
aWdocCB2ZWMzIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgdmVj
NCBhbmdsZV9mcm0oaW4gaGlnaHAgdmVjNCIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNT
TENvZGUoImhpZ2hwIG1hdDIgYW5nbGVfZnJtKGluIGhpZ2hwIG1hdDIiKSk7Ci0gICAgQVNTRVJU
X1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCBtYXQzIGFuZ2xlX2ZybShpbiBoaWdocCBtYXQz
IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgbWF0NCBhbmdsZV9m
cm0oaW4gaGlnaHAgbWF0NCIpKTsKLQotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgi
aGlnaHAgZmxvYXQgYW5nbGVfZnJsKGluIGhpZ2hwIGZsb2F0IikpOwotICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgdmVjMiBhbmdsZV9mcmwoaW4gaGlnaHAgdmVjMiIpKTsK
LSAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoImhpZ2hwIHZlYzMgYW5nbGVfZnJsKGlu
IGhpZ2hwIHZlYzMiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCB2
ZWM0IGFuZ2xlX2ZybChpbiBoaWdocCB2ZWM0IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5F
U1NMQ29kZSgiaGlnaHAgbWF0MiBhbmdsZV9mcmwoaW4gaGlnaHAgbWF0MiIpKTsKLSAgICBBU1NF
UlRfVFJVRShmb3VuZEluRVNTTENvZGUoImhpZ2hwIG1hdDMgYW5nbGVfZnJsKGluIGhpZ2hwIG1h
dDMiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCBtYXQ0IGFuZ2xl
X2ZybChpbiBoaWdocCBtYXQ0IikpOwotCi0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2Rl
KCJmbG9hdCBhbmdsZV9mcm0oaW4gZmxvYXQiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkdM
U0xDb2RlKCJ2ZWMyIGFuZ2xlX2ZybShpbiB2ZWMyIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5k
SW5HTFNMQ29kZSgidmVjMyBhbmdsZV9mcm0oaW4gdmVjMyIpKTsKLSAgICBBU1NFUlRfVFJVRShm
b3VuZEluR0xTTENvZGUoInZlYzQgYW5nbGVfZnJtKGluIHZlYzQiKSk7Ci0gICAgQVNTRVJUX1RS
VUUoZm91bmRJbkdMU0xDb2RlKCJtYXQyIGFuZ2xlX2ZybShpbiBtYXQyIikpOwotICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgibWF0MyBhbmdsZV9mcm0oaW4gbWF0MyIpKTsKLSAgICBB
U1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoIm1hdDQgYW5nbGVfZnJtKGluIG1hdDQiKSk7Ci0K
LSAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoImZsb2F0IGFuZ2xlX2ZybChpbiBmbG9h
dCIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoInZlYzIgYW5nbGVfZnJsKGlu
IHZlYzIiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJ2ZWMzIGFuZ2xlX2Zy
bChpbiB2ZWMzIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgidmVjNCBhbmds
ZV9mcmwoaW4gdmVjNCIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoIm1hdDIg
YW5nbGVfZnJsKGluIG1hdDIiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJt
YXQzIGFuZ2xlX2ZybChpbiBtYXQzIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29k
ZSgibWF0NCBhbmdsZV9mcmwoaW4gbWF0NCIpKTsKLQotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5I
TFNMQ29kZSgiZmxvYXQxIGFuZ2xlX2ZybShmbG9hdDEiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91
bmRJbkhMU0xDb2RlKCJmbG9hdDIgYW5nbGVfZnJtKGZsb2F0MiIpKTsKLSAgICBBU1NFUlRfVFJV
RShmb3VuZEluSExTTENvZGUoImZsb2F0MyBhbmdsZV9mcm0oZmxvYXQzIikpOwotICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQ0IGFuZ2xlX2ZybShmbG9hdDQiKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDJ4MiBhbmdsZV9mcm0oZmxvYXQyeDIi
KSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDN4MyBhbmdsZV9mcm0o
ZmxvYXQzeDMiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDR4NCBh
bmdsZV9mcm0oZmxvYXQ0eDQiKSk7Ci0KLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUo
ImZsb2F0MSBhbmdsZV9mcmwoZmxvYXQxIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNM
Q29kZSgiZmxvYXQyIGFuZ2xlX2ZybChmbG9hdDIiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJ
bkhMU0xDb2RlKCJmbG9hdDMgYW5nbGVfZnJsKGZsb2F0MyIpKTsKLSAgICBBU1NFUlRfVFJVRShm
b3VuZEluSExTTENvZGUoImZsb2F0NCBhbmdsZV9mcmwoZmxvYXQ0IikpOwotICAgIEFTU0VSVF9U
UlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQyeDIgYW5nbGVfZnJsKGZsb2F0MngyIikpOwotICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQzeDMgYW5nbGVfZnJsKGZsb2F0M3gz
IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQ0eDQgYW5nbGVfZnJs
KGZsb2F0NHg0IikpOwotCi0gICAgLy8gQ2hlY2sgdGhhdCBFU1NMIDMuMDAgcm91bmRpbmcgZnVu
Y3Rpb25zIGZvciBub24tc3F1YXJlIG1hdHJpY2VzIGFyZSBub3QgZGVmaW5lZC4KLSAgICBBU1NF
UlRfVFJVRShub3RGb3VuZEluQ29kZSgibWF0MngiKSk7Ci0gICAgQVNTRVJUX1RSVUUobm90Rm91
bmRJbkNvZGUoIm1hdDN4IikpOwotICAgIEFTU0VSVF9UUlVFKG5vdEZvdW5kSW5Db2RlKCJtYXQ0
eCIpKTsKLX0KLQotLy8gVGVzdCB0aGF0IGFsbCBFU1NMIDMuMDAgc2hhZGVycyBnZXQgcm91bmRp
bmcgZnVuY3Rpb24gZGVmaW5pdGlvbnMgZm9yIG5vbi1zcXVhcmUgbWF0cmljZXMuCi1URVNUX0Yo
RGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBOb25TcXVhcmVNYXRyaXhSb3VuZGluZ0Z1bmN0aW9u
c0RlZmluZWRFUzMpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0g
ICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgotICAgICAgICAib3V0IHZlYzQg
bXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAg
bXlfRnJhZ0NvbG9yID0gdmVjNCh1KTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShz
aGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgbWF0
MngzIGFuZ2xlX2ZybShpbiBoaWdocCBtYXQyeDMiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJ
bkVTU0xDb2RlKCJoaWdocCBtYXQyeDQgYW5nbGVfZnJtKGluIGhpZ2hwIG1hdDJ4NCIpKTsKLSAg
ICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoImhpZ2hwIG1hdDN4MiBhbmdsZV9mcm0oaW4g
aGlnaHAgbWF0M3gyIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAg
bWF0M3g0IGFuZ2xlX2ZybShpbiBoaWdocCBtYXQzeDQiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91
bmRJbkVTU0xDb2RlKCJoaWdocCBtYXQ0eDIgYW5nbGVfZnJtKGluIGhpZ2hwIG1hdDR4MiIpKTsK
LSAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoImhpZ2hwIG1hdDR4MyBhbmdsZV9mcm0o
aW4gaGlnaHAgbWF0NHgzIikpOwotCi0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJo
aWdocCBtYXQyeDMgYW5nbGVfZnJsKGluIGhpZ2hwIG1hdDJ4MyIpKTsKLSAgICBBU1NFUlRfVFJV
RShmb3VuZEluRVNTTENvZGUoImhpZ2hwIG1hdDJ4NCBhbmdsZV9mcmwoaW4gaGlnaHAgbWF0Mng0
IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgbWF0M3gyIGFuZ2xl
X2ZybChpbiBoaWdocCBtYXQzeDIiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2Rl
KCJoaWdocCBtYXQzeDQgYW5nbGVfZnJsKGluIGhpZ2hwIG1hdDN4NCIpKTsKLSAgICBBU1NFUlRf
VFJVRShmb3VuZEluRVNTTENvZGUoImhpZ2hwIG1hdDR4MiBhbmdsZV9mcmwoaW4gaGlnaHAgbWF0
NHgyIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgbWF0NHgzIGFu
Z2xlX2ZybChpbiBoaWdocCBtYXQ0eDMiKSk7Ci0KLSAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xT
TENvZGUoIm1hdDJ4MyBhbmdsZV9mcm0oaW4gbWF0MngzIikpOwotICAgIEFTU0VSVF9UUlVFKGZv
dW5kSW5HTFNMQ29kZSgibWF0Mng0IGFuZ2xlX2ZybShpbiBtYXQyeDQiKSk7Ci0gICAgQVNTRVJU
X1RSVUUoZm91bmRJbkdMU0xDb2RlKCJtYXQzeDIgYW5nbGVfZnJtKGluIG1hdDN4MiIpKTsKLSAg
ICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoIm1hdDN4NCBhbmdsZV9mcm0oaW4gbWF0M3g0
IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgibWF0NHgyIGFuZ2xlX2ZybShp
biBtYXQ0eDIiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJtYXQ0eDMgYW5n
bGVfZnJtKGluIG1hdDR4MyIpKTsKLQotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgi
bWF0MngzIGFuZ2xlX2ZybChpbiBtYXQyeDMiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkdM
U0xDb2RlKCJtYXQyeDQgYW5nbGVfZnJsKGluIG1hdDJ4NCIpKTsKLSAgICBBU1NFUlRfVFJVRShm
b3VuZEluR0xTTENvZGUoIm1hdDN4MiBhbmdsZV9mcmwoaW4gbWF0M3gyIikpOwotICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgibWF0M3g0IGFuZ2xlX2ZybChpbiBtYXQzeDQiKSk7Ci0g
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJtYXQ0eDIgYW5nbGVfZnJsKGluIG1hdDR4
MiIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoIm1hdDR4MyBhbmdsZV9mcmwo
aW4gbWF0NHgzIikpOwotCi0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDJ4
MyBhbmdsZV9mcm0oZmxvYXQyeDMiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2Rl
KCJmbG9hdDJ4NCBhbmdsZV9mcm0oZmxvYXQyeDQiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJ
bkhMU0xDb2RlKCJmbG9hdDN4MiBhbmdsZV9mcm0oZmxvYXQzeDIiKSk7Ci0gICAgQVNTRVJUX1RS
VUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDN4NCBhbmdsZV9mcm0oZmxvYXQzeDQiKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDR4MiBhbmdsZV9mcm0oZmxvYXQ0eDIi
KSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDR4MyBhbmdsZV9mcm0o
ZmxvYXQ0eDMiKSk7Ci0KLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImZsb2F0Mngz
IGFuZ2xlX2ZybChmbG9hdDJ4MyIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUo
ImZsb2F0Mng0IGFuZ2xlX2ZybChmbG9hdDJ4NCIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZElu
SExTTENvZGUoImZsb2F0M3gyIGFuZ2xlX2ZybChmbG9hdDN4MiIpKTsKLSAgICBBU1NFUlRfVFJV
RShmb3VuZEluSExTTENvZGUoImZsb2F0M3g0IGFuZ2xlX2ZybChmbG9hdDN4NCIpKTsKLSAgICBB
U1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImZsb2F0NHgyIGFuZ2xlX2ZybChmbG9hdDR4MiIp
KTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImZsb2F0NHgzIGFuZ2xlX2ZybChm
bG9hdDR4MyIpKTsKLX0KLQotVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgUHJhZ21h
RGlzYWJsZXNFbXVsYXRpb24pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9Ci0gICAgICAgICIjcHJhZ21hIHdlYmdsX2RlYnVnX3NoYWRlcl9wcmVjaXNpb24ob2ZmKVxu
IgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3Jt
IGZsb2F0IHU7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRl
clN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUobm90Rm91bmRJbkNvZGUoImFuZ2xlX2ZybSIpKTsK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nUHJhZ21hT24gPQotICAgICAgICAi
I3ByYWdtYSB3ZWJnbF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9uKG9uKVxuIgotICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IHU7XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KHUpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZ1ByYWdtYU9u
KTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQ29kZSgiYW5nbGVfZnJtIikpOwotfQotCi0vLyBF
bXVsYXRpb24gY2FuJ3QgYmUgdG9nZ2xlZCBvbiBmb3Igb25seSBhIHBhcnQgb2YgYSBzaGFkZXIu
Ci0vLyBPbmx5IHRoZSBsYXN0IHByYWdtYSBpbiB0aGUgc2hhZGVyIGhhcyBhbiBlZmZlY3QuCi1U
RVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBNdWx0aXBsZVByYWdtYXMpCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjcHJhZ21hIHdlYmds
X2RlYnVnX3NoYWRlcl9wcmVjaXNpb24ob2ZmKVxuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IHU7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgotICAg
ICAgICAifVxuIgotICAgICAgICAiI3ByYWdtYSB3ZWJnbF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9u
KG9uKVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUoZm91
bmRJbkNvZGUoImFuZ2xlX2ZybSIpKTsKLX0KLQotVEVTVF9GKE5vRGVidWdTaGFkZXJQcmVjaXNp
b25UZXN0LCBIZWxwZXJzV3JpdHRlbk9ubHlXaXRoRXh0ZW5zaW9uKQotewotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IHU7XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgotICAgICAgICAi
fVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5k
SW5Db2RlKCJhbmdsZV9mcm0iKSk7Ci19Ci0KLVRFU1RfRihOb0RlYnVnU2hhZGVyUHJlY2lzaW9u
VGVzdCwgUHJhZ21hSGFzRWZmZWN0c09ubHlXaXRoRXh0ZW5zaW9uKQotewotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ByYWdtYSB3ZWJnbF9kZWJ1Z19z
aGFkZXJfcHJlY2lzaW9uKG9uKVxuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IHU7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgotICAgICAgICAifVxu
IjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5kSW5D
b2RlKCJhbmdsZV9mcm0iKSk7Ci19Ci0KLVRFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3Qs
IERlY2xhcmF0aW9uc0FuZENvbnN0YW50cykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAg
ICAidW5pZm9ybSB2ZWM0IGY7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IHV1LCB1dTI7XG4i
Ci0gICAgICAgICJ2YXJ5aW5nIGZsb2F0IHZ2LCB2djI7XG4iCi0gICAgICAgICJmbG9hdCBnZyA9
IDAuMCwgZ2cyO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZmxv
YXQgYWEgPSAwLjAsIGFhMjtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IGY7XG4iCi0g
ICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICAvLyBEZWNsYXJh
dGlvbnMgb3IgY29uc3RhbnRzIHNob3VsZCBub3QgaGF2ZSByb3VuZGluZyBpbnNlcnRlZCBhcm91
bmQgdGhlbQotICAgIEFTU0VSVF9UUlVFKG5vdEZvdW5kSW5Db2RlKCJhbmdsZV9mcm0oMCIpKTsK
LSAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgiYW5nbGVfZnJtKHV1IikpOwotICAgIEFT
U0VSVF9UUlVFKG5vdEZvdW5kSW5Db2RlKCJhbmdsZV9mcm0odnYiKSk7Ci0gICAgQVNTRVJUX1RS
VUUobm90Rm91bmRJbkNvZGUoImFuZ2xlX2ZybShnZyIpKTsKLSAgICBBU1NFUlRfVFJVRShub3RG
b3VuZEluQ29kZSgiYW5nbGVfZnJtKGFhIikpOwotfQotCi0vLyBUZXN0IHRoYXQgZXhwcmVzc2lv
bnMgdGhhdCBhcmUgcGFydCBvZiBpbml0aWFsaXphdGlvbiBoYXZlIHJvdW5kaW5nLgotVEVTVF9G
KERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgSW5pdGlhbGl6ZXJSb3VuZGluZykKLXsKLSAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgotICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZmxvYXQgYSA9IHU7XG4iCi0gICAgICAgICIgICBn
bF9GcmFnQ29sb3IgPSB2ZWM0KGEpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNo
YWRlclN0cmluZyk7Ci0gICAgLy8gQW4gZXhwcmVzc2lvbiB0aGF0J3MgcGFydCBvZiBpbml0aWFs
aXphdGlvbiBzaG91bGQgaGF2ZSByb3VuZGluZwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxH
TFNMQ29kZSgiYW5nbGVfZnJtKHUpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29k
ZSgiYW5nbGVfZnJtKF91KSIpKTsKLX0KLQotLy8gVGVzdCB0aGF0IGNvbXBvdW5kIGFkZGl0aW9u
cyBoYXZlIHJvdW5kaW5nIGluIHRoZSBHTFNMIHRyYW5zbGF0aW9ucy4KLVRFU1RfRihEZWJ1Z1No
YWRlclByZWNpc2lvblRlc3QsIENvbXBvdW5kQWRkRnVuY3Rpb24pCi17Ci0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0
IHUyO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgdmVjNCB2ID0g
dTtcbiIKLSAgICAgICAgIiAgIHYgKz0gdTI7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3Ig
PSB2O1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAg
QVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKAotICAgICAgICAiaGlnaHAgdmVjNCBhbmdsZV9j
b21wb3VuZF9hZGRfZnJtKGlub3V0IGhpZ2hwIHZlYzQgeCwgaW4gaGlnaHAgdmVjNCB5KSB7XG4i
Ci0gICAgICAgICIgICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgKyB5KTsiCi0gICAgKSk7
Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKAotICAgICAgICAidmVjNCBhbmdsZV9j
b21wb3VuZF9hZGRfZnJtKGlub3V0IHZlYzQgeCwgaW4gdmVjNCB5KSB7XG4iCi0gICAgICAgICIg
ICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgKyB5KTsiCi0gICAgKSk7Ci0gICAgQVNTRVJU
X1RSVUUoCi0gICAgICAgIGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQ0IGFuZ2xlX2NvbXBvdW5kX2Fk
ZF9mcm0oaW5vdXQgZmxvYXQ0IHgsIGluIGZsb2F0NCB5KSB7XG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICsgeSk7IikpOwotICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYW5nbGVfY29tcG91bmRfYWRkX2ZybSh2LCBh
bmdsZV9mcm0odTIpKTsiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJhbmds
ZV9jb21wb3VuZF9hZGRfZnJtKF92LCBhbmdsZV9mcm0oX3UyKSk7IikpOwotICAgIEFTU0VSVF9U
UlVFKG5vdEZvdW5kSW5Db2RlKCIrPSIpKTsKLX0KLQotVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lz
aW9uVGVzdCwgQ29tcG91bmRTdWJGdW5jdGlvbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAg
ICAgICAidW5pZm9ybSB2ZWM0IHU7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgdTI7XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICB2ZWM0IHYgPSB1O1xuIgotICAg
ICAgICAiICAgdiAtPSB1MjtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHY7XG4iCi0g
ICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJV
RShmb3VuZEluRVNTTENvZGUoCi0gICAgICAgICJoaWdocCB2ZWM0IGFuZ2xlX2NvbXBvdW5kX3N1
Yl9mcm0oaW5vdXQgaGlnaHAgdmVjNCB4LCBpbiBoaWdocCB2ZWM0IHkpIHtcbiIKLSAgICAgICAg
IiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSAtIHkpOyIKLSAgICApKTsKLSAgICBBU1NF
UlRfVFJVRShmb3VuZEluR0xTTENvZGUoCi0gICAgICAgICJ2ZWM0IGFuZ2xlX2NvbXBvdW5kX3N1
Yl9mcm0oaW5vdXQgdmVjNCB4LCBpbiB2ZWM0IHkpIHtcbiIKLSAgICAgICAgIiAgICB4ID0gYW5n
bGVfZnJtKGFuZ2xlX2ZybSh4KSAtIHkpOyIKLSAgICApKTsKLSAgICBBU1NFUlRfVFJVRSgKLSAg
ICAgICAgZm91bmRJbkhMU0xDb2RlKCJmbG9hdDQgYW5nbGVfY29tcG91bmRfc3ViX2ZybShpbm91
dCBmbG9hdDQgeCwgaW4gZmxvYXQ0IHkpIHtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIg
ICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgLSB5KTsiKSk7Ci0gICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkFsbEdMU0xDb2RlKCJhbmdsZV9jb21wb3VuZF9zdWJfZnJtKHYsIGFuZ2xlX2ZybSh1
MikpOyIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImFuZ2xlX2NvbXBvdW5k
X3N1Yl9mcm0oX3YsIGFuZ2xlX2ZybShfdTIpKTsiKSk7Ci0gICAgQVNTRVJUX1RSVUUobm90Rm91
bmRJbkNvZGUoIi09IikpOwotfQotCi1URVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBD
b21wb3VuZERpdkZ1bmN0aW9uKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlm
b3JtIHZlYzQgdTtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1MjtcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIHZlYzQgdiA9IHU7XG4iCi0gICAgICAgICIgICB2
IC89IHUyO1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdjtcbiIKLSAgICAgICAgIn1c
biI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5F
U1NMQ29kZSgKLSAgICAgICAgImhpZ2hwIHZlYzQgYW5nbGVfY29tcG91bmRfZGl2X2ZybShpbm91
dCBoaWdocCB2ZWM0IHgsIGluIGhpZ2hwIHZlYzQgeSkge1xuIgotICAgICAgICAiICAgIHggPSBh
bmdsZV9mcm0oYW5nbGVfZnJtKHgpIC8geSk7IgotICAgICkpOwotICAgIEFTU0VSVF9UUlVFKGZv
dW5kSW5HTFNMQ29kZSgKLSAgICAgICAgInZlYzQgYW5nbGVfY29tcG91bmRfZGl2X2ZybShpbm91
dCB2ZWM0IHgsIGluIHZlYzQgeSkge1xuIgotICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5n
bGVfZnJtKHgpIC8geSk7IgotICAgICkpOwotICAgIEFTU0VSVF9UUlVFKAotICAgICAgICBmb3Vu
ZEluSExTTENvZGUoImZsb2F0NCBhbmdsZV9jb21wb3VuZF9kaXZfZnJtKGlub3V0IGZsb2F0NCB4
LCBpbiBmbG9hdDQgeSkge1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4ID0gYW5n
bGVfZnJtKGFuZ2xlX2ZybSh4KSAvIHkpOyIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxs
R0xTTENvZGUoImFuZ2xlX2NvbXBvdW5kX2Rpdl9mcm0odiwgYW5nbGVfZnJtKHUyKSk7IikpOwot
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiYW5nbGVfY29tcG91bmRfZGl2X2ZybShf
diwgYW5nbGVfZnJtKF91MikpOyIpKTsKLSAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgi
Lz0iKSk7Ci19Ci0KLVRFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIENvbXBvdW5kTXVs
RnVuY3Rpb24pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1
O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHUyO1xuIgotICAgICAgICAidm9pZCBtYWluKCkg
e1xuIgotICAgICAgICAiICAgdmVjNCB2ID0gdTtcbiIKLSAgICAgICAgIiAgIHYgKj0gdTI7XG4i
Ci0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2O1xuIgotICAgICAgICAifVxuIjsKLSAgICBj
b21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKAot
ICAgICAgICAiaGlnaHAgdmVjNCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IGhpZ2hwIHZl
YzQgeCwgaW4gaGlnaHAgdmVjNCB5KSB7XG4iCi0gICAgICAgICIgICAgeCA9IGFuZ2xlX2ZybShh
bmdsZV9mcm0oeCkgKiB5KTsiCi0gICAgKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xD
b2RlKAotICAgICAgICAidmVjNCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IHZlYzQgeCwg
aW4gdmVjNCB5KSB7XG4iCi0gICAgICAgICIgICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkg
KiB5KTsiCi0gICAgKSk7Ci0gICAgQVNTRVJUX1RSVUUoCi0gICAgICAgIGZvdW5kSW5ITFNMQ29k
ZSgiZmxvYXQ0IGFuZ2xlX2NvbXBvdW5kX211bF9mcm0oaW5vdXQgZmxvYXQ0IHgsIGluIGZsb2F0
NCB5KSB7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5n
bGVfZnJtKHgpICogeSk7IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgi
YW5nbGVfY29tcG91bmRfbXVsX2ZybSh2LCBhbmdsZV9mcm0odTIpKTsiKSk7Ci0gICAgQVNTRVJU
X1RSVUUoZm91bmRJbkhMU0xDb2RlKCJhbmdsZV9jb21wb3VuZF9tdWxfZnJtKF92LCBhbmdsZV9m
cm0oX3UyKSk7IikpOwotICAgIEFTU0VSVF9UUlVFKG5vdEZvdW5kSW5Db2RlKCIqPSIpKTsKLX0K
LQotVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgQ29tcG91bmRBZGRWZWN0b3JQbHVz
U2NhbGFyRnVuY3Rpb24pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9
Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0g
dmVjNCB1O1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCB1MjtcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKLSAgICAgICAgIiAgIHZlYzQgdiA9IHU7XG4iCi0gICAgICAgICIgICB2ICs9
IHUyO1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdjtcbiIKLSAgICAgICAgIn1cbiI7
Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NM
Q29kZSgKLSAgICAgICAgImhpZ2hwIHZlYzQgYW5nbGVfY29tcG91bmRfYWRkX2ZybShpbm91dCBo
aWdocCB2ZWM0IHgsIGluIGhpZ2hwIGZsb2F0IHkpIHtcbiIKLSAgICAgICAgIiAgICB4ID0gYW5n
bGVfZnJtKGFuZ2xlX2ZybSh4KSArIHkpOyIKLSAgICApKTsKLSAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluR0xTTENvZGUoCi0gICAgICAgICJ2ZWM0IGFuZ2xlX2NvbXBvdW5kX2FkZF9mcm0oaW5vdXQg
dmVjNCB4LCBpbiBmbG9hdCB5KSB7XG4iCi0gICAgICAgICIgICAgeCA9IGFuZ2xlX2ZybShhbmds
ZV9mcm0oeCkgKyB5KTsiCi0gICAgKSk7Ci0gICAgQVNTRVJUX1RSVUUoCi0gICAgICAgIGZvdW5k
SW5ITFNMQ29kZSgiZmxvYXQ0IGFuZ2xlX2NvbXBvdW5kX2FkZF9mcm0oaW5vdXQgZmxvYXQ0IHgs
IGluIGZsb2F0IHkpIHtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeCA9IGFuZ2xl
X2ZybShhbmdsZV9mcm0oeCkgKyB5KTsiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdM
U0xDb2RlKCJhbmdsZV9jb21wb3VuZF9hZGRfZnJtKHYsIGFuZ2xlX2ZybSh1MikpOyIpKTsKLSAg
ICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImFuZ2xlX2NvbXBvdW5kX2FkZF9mcm0oX3Ys
IGFuZ2xlX2ZybShfdTIpKTsiKSk7Ci0gICAgQVNTRVJUX1RSVUUobm90Rm91bmRJbkNvZGUoIis9
IikpOwotfQotCi1URVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBDb21wb3VuZE1hdHJp
eFRpbWVzTWF0cml4RnVuY3Rpb24pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVu
aWZvcm0gbWF0NCB1O1xuIgotICAgICAgICAidW5pZm9ybSBtYXQ0IHUyO1xuIgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgbWF0NCBtID0gdTtcbiIKLSAgICAgICAgIiAg
IG0gKj0gdTI7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSBtWzBdO1xuIgotICAgICAg
ICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUoZm91
bmRJbkVTU0xDb2RlKAotICAgICAgICAiaGlnaHAgbWF0NCBhbmdsZV9jb21wb3VuZF9tdWxfZnJt
KGlub3V0IGhpZ2hwIG1hdDQgeCwgaW4gaGlnaHAgbWF0NCB5KSB7XG4iCi0gICAgICAgICIgICAg
eCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgKiB5KTsiCi0gICAgKSk7Ci0gICAgQVNTRVJUX1RS
VUUoZm91bmRJbkdMU0xDb2RlKAotICAgICAgICAibWF0NCBhbmdsZV9jb21wb3VuZF9tdWxfZnJt
KGlub3V0IG1hdDQgeCwgaW4gbWF0NCB5KSB7XG4iCi0gICAgICAgICIgICAgeCA9IGFuZ2xlX2Zy
bShhbmdsZV9mcm0oeCkgKiB5KTsiCi0gICAgKSk7Ci0gICAgQVNTRVJUX1RSVUUoCi0gICAgICAg
IGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQ0eDQgYW5nbGVfY29tcG91bmRfbXVsX2ZybShpbm91dCBm
bG9hdDR4NCB4LCBpbiBmbG9hdDR4NCB5KSB7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAi
ICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IikpOwotICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5BbGxHTFNMQ29kZSgiYW5nbGVfY29tcG91bmRfbXVsX2ZybShtLCBhbmdsZV9mcm0o
dTIpKTsiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJhbmdsZV9jb21wb3Vu
ZF9tdWxfZnJtKF9tLCBhbmdsZV9mcm0oX3UyKSk7IikpOwotICAgIEFTU0VSVF9UUlVFKG5vdEZv
dW5kSW5Db2RlKCIqPSIpKTsKLX0KLQotLy8gVGVzdCB0aGF0IGNvbXBvdW5kIG11bHRpcGx5aW5n
IGEgbm9uLXNxdWFyZSBtYXRyaXggd2l0aCBhbm90aGVyIG1hdHJpeCBnZXRzIHRyYW5zbGF0ZWQg
aW50byBhbgotLy8gYW5nbGVfY29tcG91bmRfbXVsIGZ1bmN0aW9uIGNhbGwuCi1URVNUX0YoRGVi
dWdTaGFkZXJQcmVjaXNpb25UZXN0LCBDb21wb3VuZE5vblNxdWFyZU1hdHJpeFRpbWVzTWF0cml4
RnVuY3Rpb24pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgotICAgICAgICAidW5pZm9ybSBtYXQyeDQgdTtcbiIKLSAgICAgICAgInVuaWZvcm0gbWF0
MiB1MjtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIG1hdDJ4NCBtID0gdTtcbiIKLSAgICAgICAgIiAg
IG0gKj0gdTI7XG4iCi0gICAgICAgICIgICBteV9GcmFnQ29sb3IgPSBtWzBdO1xuIgotICAgICAg
ICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUoZm91
bmRJbkVTU0xDb2RlKAotICAgICAgICAiaGlnaHAgbWF0Mng0IGFuZ2xlX2NvbXBvdW5kX211bF9m
cm0oaW5vdXQgaGlnaHAgbWF0Mng0IHgsIGluIGhpZ2hwIG1hdDIgeSkge1xuIgotICAgICAgICAi
ICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IikpOwotICAgIEFTU0VSVF9UUlVF
KAotICAgICAgICBmb3VuZEluR0xTTENvZGUoIm1hdDJ4NCBhbmdsZV9jb21wb3VuZF9tdWxfZnJt
KGlub3V0IG1hdDJ4NCB4LCBpbiBtYXQyIHkpIHtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICIgICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgKiB5KTsiKSk7Ci0gICAgQVNTRVJUX1RS
VUUoCi0gICAgICAgIGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQyeDQgYW5nbGVfY29tcG91bmRfbXVs
X2ZybShpbm91dCBmbG9hdDJ4NCB4LCBpbiBmbG9hdDJ4MiB5KSB7XG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IikpOwotICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYW5nbGVfY29tcG91bmRfbXVsX2ZybSht
LCBhbmdsZV9mcm0odTIpKTsiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJh
bmdsZV9jb21wb3VuZF9tdWxfZnJtKF9tLCBhbmdsZV9mcm0oX3UyKSk7IikpOwotICAgIEFTU0VS
VF9UUlVFKG5vdEZvdW5kSW5Db2RlKCIqPSIpKTsKLX0KLQotVEVTVF9GKERlYnVnU2hhZGVyUHJl
Y2lzaW9uVGVzdCwgQ29tcG91bmRNYXRyaXhUaW1lc1NjYWxhckZ1bmN0aW9uKQotewotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDQgdTtcbiIKLSAgICAgICAgInVuaWZv
cm0gZmxvYXQgdTI7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBt
YXQ0IG0gPSB1O1xuIgotICAgICAgICAiICAgbSAqPSB1MjtcbiIKLSAgICAgICAgIiAgIGdsX0Zy
YWdDb2xvciA9IG1bMF07XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3Ry
aW5nKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoCi0gICAgICAgICJoaWdocCBt
YXQ0IGFuZ2xlX2NvbXBvdW5kX211bF9mcm0oaW5vdXQgaGlnaHAgbWF0NCB4LCBpbiBoaWdocCBm
bG9hdCB5KSB7XG4iCi0gICAgICAgICIgICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgKiB5
KTsiCi0gICAgKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKAotICAgICAgICAi
bWF0NCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IG1hdDQgeCwgaW4gZmxvYXQgeSkge1xu
IgotICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IgotICAgICkp
OwotICAgIEFTU0VSVF9UUlVFKAotICAgICAgICBmb3VuZEluSExTTENvZGUoImZsb2F0NHg0IGFu
Z2xlX2NvbXBvdW5kX211bF9mcm0oaW5vdXQgZmxvYXQ0eDQgeCwgaW4gZmxvYXQgeSkge1xuIgot
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSAq
IHkpOyIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImFuZ2xlX2NvbXBv
dW5kX211bF9mcm0obSwgYW5nbGVfZnJtKHUyKSk7IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5k
SW5ITFNMQ29kZSgiYW5nbGVfY29tcG91bmRfbXVsX2ZybShfbSwgYW5nbGVfZnJtKF91MikpOyIp
KTsKLSAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgiKj0iKSk7Ci19Ci0KLVRFU1RfRihE
ZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIENvbXBvdW5kVmVjdG9yVGltZXNNYXRyaXhGdW5jdGlv
bikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHU7XG4iCi0g
ICAgICAgICJ1bmlmb3JtIG1hdDQgdTI7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0g
ICAgICAgICIgICB2ZWM0IHYgPSB1O1xuIgotICAgICAgICAiICAgdiAqPSB1MjtcbiIKLSAgICAg
ICAgIiAgIGdsX0ZyYWdDb2xvciA9IHY7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUo
c2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoCi0gICAgICAg
ICJoaWdocCB2ZWM0IGFuZ2xlX2NvbXBvdW5kX211bF9mcm0oaW5vdXQgaGlnaHAgdmVjNCB4LCBp
biBoaWdocCBtYXQ0IHkpIHtcbiIKLSAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2Zy
bSh4KSAqIHkpOyIKLSAgICApKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoInZl
YzQgYW5nbGVfY29tcG91bmRfbXVsX2ZybShpbm91dCB2ZWM0IHgsIGluIG1hdDQgeSkge1xuIgot
ICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IgotICAgICkpOwot
ICAgIEFTU0VSVF9UUlVFKAotICAgICAgICBmb3VuZEluSExTTENvZGUoImZsb2F0NCBhbmdsZV9j
b21wb3VuZF9tdWxfZnJtKGlub3V0IGZsb2F0NCB4LCBpbiBmbG9hdDR4NCB5KSB7XG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7
IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYW5nbGVfY29tcG91bmRf
bXVsX2ZybSh2LCBhbmdsZV9mcm0odTIpKTsiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhM
U0xDb2RlKCJhbmdsZV9jb21wb3VuZF9tdWxfZnJtKF92LCBhbmdsZV9mcm0oX3UyKSk7IikpOwot
ICAgIEFTU0VSVF9UUlVFKG5vdEZvdW5kSW5Db2RlKCIqPSIpKTsKLX0KLQotVEVTVF9GKERlYnVn
U2hhZGVyUHJlY2lzaW9uVGVzdCwgQ29tcG91bmRWZWN0b3JUaW1lc1NjYWxhckZ1bmN0aW9uKQot
ewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgdTtcbiIKLSAgICAg
ICAgInVuaWZvcm0gZmxvYXQgdTI7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAg
ICAgICIgICB2ZWM0IHYgPSB1O1xuIgotICAgICAgICAiICAgdiAqPSB1MjtcbiIKLSAgICAgICAg
IiAgIGdsX0ZyYWdDb2xvciA9IHY7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hh
ZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoCi0gICAgICAgICJo
aWdocCB2ZWM0IGFuZ2xlX2NvbXBvdW5kX211bF9mcm0oaW5vdXQgaGlnaHAgdmVjNCB4LCBpbiBo
aWdocCBmbG9hdCB5KSB7XG4iCi0gICAgICAgICIgICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0o
eCkgKiB5KTsiCi0gICAgKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKAotICAg
ICAgICAidmVjNCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IHZlYzQgeCwgaW4gZmxvYXQg
eSkge1xuIgotICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7Igot
ICAgICkpOwotICAgIEFTU0VSVF9UUlVFKAotICAgICAgICBmb3VuZEluSExTTENvZGUoImZsb2F0
NCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IGZsb2F0NCB4LCBpbiBmbG9hdCB5KSB7XG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgp
ICogeSk7IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYW5nbGVfY29t
cG91bmRfbXVsX2ZybSh2LCBhbmdsZV9mcm0odTIpKTsiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91
bmRJbkhMU0xDb2RlKCJhbmdsZV9jb21wb3VuZF9tdWxfZnJtKF92LCBhbmdsZV9mcm0oX3UyKSk7
IikpOwotICAgIEFTU0VSVF9UUlVFKG5vdEZvdW5kSW5Db2RlKCIqPSIpKTsKLX0KLQotVEVTVF9G
KERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgQmluYXJ5TWF0aFJvdW5kaW5nKQotewotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgdTE7XG4iCi0gICAgICAgICJ1bmlm
b3JtIHZlYzQgdTI7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgdTM7XG4iCi0gICAgICAgICJ1
bmlmb3JtIHZlYzQgdTQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgdTU7XG4iCi0gICAgICAg
ICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICB2ZWM0IHYxID0gdTEgKyB1MjtcbiIKLSAg
ICAgICAgIiAgIHZlYzQgdjIgPSB1MiAtIHUzO1xuIgotICAgICAgICAiICAgdmVjNCB2MyA9IHUz
ICogdTQ7XG4iCi0gICAgICAgICIgICB2ZWM0IHY0ID0gdTQgLyB1NTtcbiIKLSAgICAgICAgIiAg
IHZlYzQgdjU7XG4iCi0gICAgICAgICIgICB2ZWM0IHY2ID0gKHY1ID0gdTUpO1xuIgotICAgICAg
ICAiICAgZ2xfRnJhZ0NvbG9yID0gdjEgKyB2MiArIHYzICsgdjQ7XG4iCi0gICAgICAgICJ9XG4i
OwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxs
R0xTTENvZGUoInYxID0gYW5nbGVfZnJtKChhbmdsZV9mcm0odTEpICsgYW5nbGVfZnJtKHUyKSkp
IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjIgPSBhbmdsZV9mcm0o
KGFuZ2xlX2ZybSh1MikgLSBhbmdsZV9mcm0odTMpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91
bmRJbkFsbEdMU0xDb2RlKCJ2MyA9IGFuZ2xlX2ZybSgoYW5nbGVfZnJtKHUzKSAqIGFuZ2xlX2Zy
bSh1NCkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInY0ID0gYW5n
bGVfZnJtKChhbmdsZV9mcm0odTQpIC8gYW5nbGVfZnJtKHU1KSkpIikpOwotICAgIEFTU0VSVF9U
UlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjYgPSBhbmdsZV9mcm0oKHY1ID0gYW5nbGVfZnJtKHU1
KSkpIikpOwotCi0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MSA9IGFuZ2xlX2Zy
bSgoYW5nbGVfZnJtKF91MSkgKyBhbmdsZV9mcm0oX3UyKSkpIikpOwotICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5ITFNMQ29kZSgidjIgPSBhbmdsZV9mcm0oKGFuZ2xlX2ZybShfdTIpIC0gYW5nbGVf
ZnJtKF91MykpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYzID0gYW5n
bGVfZnJtKChhbmdsZV9mcm0oX3UzKSAqIGFuZ2xlX2ZybShfdTQpKSkiKSk7Ci0gICAgQVNTRVJU
X1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2NCA9IGFuZ2xlX2ZybSgoYW5nbGVfZnJtKF91NCkgLyBh
bmdsZV9mcm0oX3U1KSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjYg
PSBhbmdsZV9mcm0oKF92NSA9IGFuZ2xlX2ZybShfdTUpKSkiKSk7Ci19Ci0KLVRFU1RfRihEZWJ1
Z1NoYWRlclByZWNpc2lvblRlc3QsIEJ1aWx0SW5NYXRoRnVuY3Rpb25Sb3VuZGluZykKLXsKLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHUxO1xuIgotICAgICAgICAi
dW5pZm9ybSB2ZWM0IHUyO1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHUzO1xuIgotICAgICAg
ICAidW5pZm9ybSBmbG9hdCB1ZjtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgdWYyO1xuIgot
ICAgICAgICAidW5pZm9ybSB2ZWMzIHVmMzE7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzMgdWYz
MjtcbiIKLSAgICAgICAgInVuaWZvcm0gbWF0NCB1bTE7XG4iCi0gICAgICAgICJ1bmlmb3JtIG1h
dDQgdW0yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgdmVjNCB2
MSA9IHJhZGlhbnModTEpO1xuIgotICAgICAgICAiICAgdmVjNCB2MiA9IGRlZ3JlZXModTEpO1xu
IgotICAgICAgICAiICAgdmVjNCB2MyA9IHNpbih1MSk7XG4iCi0gICAgICAgICIgICB2ZWM0IHY0
ID0gY29zKHUxKTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjUgPSB0YW4odTEpO1xuIgotICAgICAg
ICAiICAgdmVjNCB2NiA9IGFzaW4odTEpO1xuIgotICAgICAgICAiICAgdmVjNCB2NyA9IGFjb3Mo
dTEpO1xuIgotICAgICAgICAiICAgdmVjNCB2OCA9IGF0YW4odTEpO1xuIgotICAgICAgICAiICAg
dmVjNCB2OSA9IGF0YW4odTEsIHUyKTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjEwID0gcG93KHUx
LCB1Mik7XG4iCi0gICAgICAgICIgICB2ZWM0IHYxMSA9IGV4cCh1MSk7XG4iCi0gICAgICAgICIg
ICB2ZWM0IHYxMiA9IGxvZyh1MSk7XG4iCi0gICAgICAgICIgICB2ZWM0IHYxMyA9IGV4cDIodTEp
O1xuIgotICAgICAgICAiICAgdmVjNCB2MTQgPSBsb2cyKHUxKTtcbiIKLSAgICAgICAgIiAgIHZl
YzQgdjE1ID0gc3FydCh1MSk7XG4iCi0gICAgICAgICIgICB2ZWM0IHYxNiA9IGludmVyc2VzcXJ0
KHUxKTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjE3ID0gYWJzKHUxKTtcbiIKLSAgICAgICAgIiAg
IHZlYzQgdjE4ID0gc2lnbih1MSk7XG4iCi0gICAgICAgICIgICB2ZWM0IHYxOSA9IGZsb29yKHUx
KTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjIwID0gY2VpbCh1MSk7XG4iCi0gICAgICAgICIgICB2
ZWM0IHYyMSA9IGZyYWN0KHUxKTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjIyID0gbW9kKHUxLCB1
Zik7XG4iCi0gICAgICAgICIgICB2ZWM0IHYyMyA9IG1vZCh1MSwgdTIpO1xuIgotICAgICAgICAi
ICAgdmVjNCB2MjQgPSBtaW4odTEsIHVmKTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjI1ID0gbWlu
KHUxLCB1Mik7XG4iCi0gICAgICAgICIgICB2ZWM0IHYyNiA9IG1heCh1MSwgdWYpO1xuIgotICAg
ICAgICAiICAgdmVjNCB2MjcgPSBtYXgodTEsIHUyKTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjI4
ID0gY2xhbXAodTEsIHUyLCB1Myk7XG4iCi0gICAgICAgICIgICB2ZWM0IHYyOSA9IGNsYW1wKHUx
LCB1ZiwgdWYyKTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjMwID0gbWl4KHUxLCB1MiwgdTMpO1xu
IgotICAgICAgICAiICAgdmVjNCB2MzEgPSBtaXgodTEsIHUyLCB1Zik7XG4iCi0gICAgICAgICIg
ICB2ZWM0IHYzMiA9IHN0ZXAodTEsIHUyKTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjMzID0gc3Rl
cCh1ZiwgdTEpO1xuIgotICAgICAgICAiICAgdmVjNCB2MzQgPSBzbW9vdGhzdGVwKHUxLCB1Miwg
dTMpO1xuIgotICAgICAgICAiICAgdmVjNCB2MzUgPSBzbW9vdGhzdGVwKHVmLCB1ZjIsIHUxKTtc
biIKLSAgICAgICAgIiAgIHZlYzQgdjM2ID0gbm9ybWFsaXplKHUxKTtcbiIKLSAgICAgICAgIiAg
IHZlYzQgdjM3ID0gZmFjZWZvcndhcmQodTEsIHUyLCB1Myk7XG4iCi0gICAgICAgICIgICB2ZWM0
IHYzOCA9IHJlZmxlY3QodTEsIHUyKTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjM5ID0gcmVmcmFj
dCh1MSwgdTIsIHVmKTtcbiIKLQotICAgICAgICAiICAgZmxvYXQgZjEgPSBsZW5ndGgodTEpO1xu
IgotICAgICAgICAiICAgZmxvYXQgZjIgPSBkaXN0YW5jZSh1MSwgdTIpO1xuIgotICAgICAgICAi
ICAgZmxvYXQgZjMgPSBkb3QodTEsIHUyKTtcbiIKLSAgICAgICAgIiAgIHZlYzMgdmYzMSA9IGNy
b3NzKHVmMzEsIHVmMzIpO1xuIgotICAgICAgICAiICAgbWF0NCBtMSA9IG1hdHJpeENvbXBNdWx0
KHVtMSwgdW0yKTtcbiIKLQotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdjEgKyB2MiArIHYz
ICsgdjQgKyB2NSArIHY2ICsgdjcgKyB2OCArIHY5ICsgdjEwICsiCi0gICAgICAgICAgICAidjEx
ICsgdjEyICsgdjEzICsgdjE0ICsgdjE1ICsgdjE2ICsgdjE3ICsgdjE4ICsgdjE5ICsgdjIwICsi
Ci0gICAgICAgICAgICAidjIxICsgdjIyICsgdjIzICsgdjI0ICsgdjI1ICsgdjI2ICsgdjI3ICsg
djI4ICsgdjI5ICsgdjMwICsiCi0gICAgICAgICAgICAidjMxICsgdjMyICsgdjMzICsgdjM0ICsg
djM1ICsgdjM2ICsgdjM3ICsgdjM4ICsgdjM5ICsiCi0gICAgICAgICAgICAidmVjNChmMSwgZjIs
IGYzLCAwLjApICsgdmVjNCh2ZjMxLCAwLjApICsgbTFbMF07XG4iCi0gICAgICAgICJ9XG4iOwot
ICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xT
TENvZGUoInYxID0gYW5nbGVfZnJtKHJhZGlhbnMoYW5nbGVfZnJtKHUxKSkpIikpOwotICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjIgPSBhbmdsZV9mcm0oZGVncmVlcyhhbmds
ZV9mcm0odTEpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MyA9
IGFuZ2xlX2ZybShzaW4oYW5nbGVfZnJtKHUxKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5k
SW5BbGxHTFNMQ29kZSgidjQgPSBhbmdsZV9mcm0oY29zKGFuZ2xlX2ZybSh1MSkpKSIpKTsKLSAg
ICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInY1ID0gYW5nbGVfZnJtKHRhbihhbmds
ZV9mcm0odTEpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2NiA9
IGFuZ2xlX2ZybShhc2luKGFuZ2xlX2ZybSh1MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluQWxsR0xTTENvZGUoInY3ID0gYW5nbGVfZnJtKGFjb3MoYW5nbGVfZnJtKHUxKSkpIikpOwot
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjggPSBhbmdsZV9mcm0oYXRhbihh
bmdsZV9mcm0odTEpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2
OSA9IGFuZ2xlX2ZybShhdGFuKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpKSIpKTsKLSAg
ICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYxMCA9IGFuZ2xlX2ZybShwb3coYW5n
bGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5B
bGxHTFNMQ29kZSgidjExID0gYW5nbGVfZnJtKGV4cChhbmdsZV9mcm0odTEpKSkiKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MTIgPSBhbmdsZV9mcm0obG9nKGFuZ2xl
X2ZybSh1MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYxMyA9
IGFuZ2xlX2ZybShleHAyKGFuZ2xlX2ZybSh1MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluQWxsR0xTTENvZGUoInYxNCA9IGFuZ2xlX2ZybShsb2cyKGFuZ2xlX2ZybSh1MSkpKSIpKTsK
LSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYxNSA9IGFuZ2xlX2ZybShzcXJ0
KGFuZ2xlX2ZybSh1MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUo
InYxNiA9IGFuZ2xlX2ZybShpbnZlcnNlc3FydChhbmdsZV9mcm0odTEpKSkiKSk7Ci0gICAgQVNT
RVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MTcgPSBhbmdsZV9mcm0oYWJzKGFuZ2xlX2Zy
bSh1MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYxOCA9IGFu
Z2xlX2ZybShzaWduKGFuZ2xlX2ZybSh1MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZElu
QWxsR0xTTENvZGUoInYxOSA9IGFuZ2xlX2ZybShmbG9vcihhbmdsZV9mcm0odTEpKSkiKSk7Ci0g
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MjAgPSBhbmdsZV9mcm0oY2VpbChh
bmdsZV9mcm0odTEpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2
MjEgPSBhbmdsZV9mcm0oZnJhY3QoYW5nbGVfZnJtKHUxKSkpIikpOwotICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5BbGxHTFNMQ29kZSgidjIyID0gYW5nbGVfZnJtKG1vZChhbmdsZV9mcm0odTEpLCBh
bmdsZV9mcm0odWYpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2
MjMgPSBhbmdsZV9mcm0obW9kKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpKSIpKTsKLSAg
ICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYyNCA9IGFuZ2xlX2ZybShtaW4oYW5n
bGVfZnJtKHUxKSwgYW5nbGVfZnJtKHVmKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5B
bGxHTFNMQ29kZSgidjI1ID0gYW5nbGVfZnJtKG1pbihhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0o
dTIpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MjYgPSBhbmds
ZV9mcm0obWF4KGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1ZikpKSIpKTsKLSAgICBBU1NFUlRf
VFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYyNyA9IGFuZ2xlX2ZybShtYXgoYW5nbGVfZnJtKHUx
KSwgYW5nbGVfZnJtKHUyKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKAotICAgICAgICBmb3VuZElu
QWxsR0xTTENvZGUoInYyOCA9IGFuZ2xlX2ZybShjbGFtcChhbmdsZV9mcm0odTEpLCBhbmdsZV9m
cm0odTIpLCBhbmdsZV9mcm0odTMpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoCi0gICAgICAgIGZv
dW5kSW5BbGxHTFNMQ29kZSgidjI5ID0gYW5nbGVfZnJtKGNsYW1wKGFuZ2xlX2ZybSh1MSksIGFu
Z2xlX2ZybSh1ZiksIGFuZ2xlX2ZybSh1ZjIpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoCi0gICAg
ICAgIGZvdW5kSW5BbGxHTFNMQ29kZSgidjMwID0gYW5nbGVfZnJtKG1peChhbmdsZV9mcm0odTEp
LCBhbmdsZV9mcm0odTIpLCBhbmdsZV9mcm0odTMpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoCi0g
ICAgICAgIGZvdW5kSW5BbGxHTFNMQ29kZSgidjMxID0gYW5nbGVfZnJtKG1peChhbmdsZV9mcm0o
dTEpLCBhbmdsZV9mcm0odTIpLCBhbmdsZV9mcm0odWYpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkFsbEdMU0xDb2RlKCJ2MzIgPSBhbmdsZV9mcm0oc3RlcChhbmdsZV9mcm0odTEpLCBh
bmdsZV9mcm0odTIpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2
MzMgPSBhbmdsZV9mcm0oc3RlcChhbmdsZV9mcm0odWYpLCBhbmdsZV9mcm0odTEpKSkiKSk7Ci0g
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKAotICAgICAgICAidjM0ID0gYW5nbGVf
ZnJtKHNtb290aHN0ZXAoYW5nbGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSwgYW5nbGVfZnJtKHUz
KSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgKLSAgICAgICAgInYz
NSA9IGFuZ2xlX2ZybShzbW9vdGhzdGVwKGFuZ2xlX2ZybSh1ZiksIGFuZ2xlX2ZybSh1ZjIpLCBh
bmdsZV9mcm0odTEpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2
MzYgPSBhbmdsZV9mcm0obm9ybWFsaXplKGFuZ2xlX2ZybSh1MSkpKSIpKTsKLSAgICBBU1NFUlRf
VFJVRShmb3VuZEluQWxsR0xTTENvZGUoCi0gICAgICAgICJ2MzcgPSBhbmdsZV9mcm0oZmFjZWZv
cndhcmQoYW5nbGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSwgYW5nbGVfZnJtKHUzKSkpIikpOwot
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjM4ID0gYW5nbGVfZnJtKHJlZmxl
Y3QoYW5nbGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZv
dW5kSW5BbGxHTFNMQ29kZSgKLSAgICAgICAgInYzOSA9IGFuZ2xlX2ZybShyZWZyYWN0KGFuZ2xl
X2ZybSh1MSksIGFuZ2xlX2ZybSh1MiksIGFuZ2xlX2ZybSh1ZikpKSIpKTsKLQotICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiZjEgPSBhbmdsZV9mcm0obGVuZ3RoKGFuZ2xlX2Zy
bSh1MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImYyID0gYW5n
bGVfZnJtKGRpc3RhbmNlKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpKSIpKTsKLSAgICBB
U1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImYzID0gYW5nbGVfZnJtKGRvdChhbmdsZV9m
cm0odTEpLCBhbmdsZV9mcm0odTIpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdM
U0xDb2RlKCJ2ZjMxID0gYW5nbGVfZnJtKGNyb3NzKGFuZ2xlX2ZybSh1ZjMxKSwgYW5nbGVfZnJt
KHVmMzIpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoCi0gICAgICAgIGZvdW5kSW5BbGxHTFNMQ29k
ZSgibTEgPSBhbmdsZV9mcm0obWF0cml4Q29tcE11bHQoYW5nbGVfZnJtKHVtMSksIGFuZ2xlX2Zy
bSh1bTIpKSkiKSk7Ci0KLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYxID0gYW5n
bGVfZnJtKHJhZGlhbnMoYW5nbGVfZnJtKF91MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluSExTTENvZGUoInYyID0gYW5nbGVfZnJtKGRlZ3JlZXMoYW5nbGVfZnJtKF91MSkpKSIpKTsK
LSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYzID0gYW5nbGVfZnJtKHNpbihhbmds
ZV9mcm0oX3UxKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjQgPSBh
bmdsZV9mcm0oY29zKGFuZ2xlX2ZybShfdTEpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJ
bkhMU0xDb2RlKCJ2NSA9IGFuZ2xlX2ZybSh0YW4oYW5nbGVfZnJtKF91MSkpKSIpKTsKLSAgICBB
U1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInY2ID0gYW5nbGVfZnJtKGFzaW4oYW5nbGVfZnJt
KF91MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInY3ID0gYW5nbGVf
ZnJtKGFjb3MoYW5nbGVfZnJtKF91MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExT
TENvZGUoInY4ID0gYW5nbGVfZnJtKGF0YW4oYW5nbGVfZnJtKF91MSkpKSIpKTsKLSAgICBBU1NF
UlRfVFJVRShmb3VuZEluSExTTENvZGUoInY5ID0gYW5nbGVfZnJtKHdlYmdsX2F0YW5fZW11KGFu
Z2xlX2ZybShfdTEpLCBhbmdsZV9mcm0oX3UyKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5k
SW5ITFNMQ29kZSgidjEwID0gYW5nbGVfZnJtKHBvdyhhbmdsZV9mcm0oX3UxKSwgYW5nbGVfZnJt
KF91MikpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYxMSA9IGFuZ2xl
X2ZybShleHAoYW5nbGVfZnJtKF91MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExT
TENvZGUoInYxMiA9IGFuZ2xlX2ZybShsb2coYW5nbGVfZnJtKF91MSkpKSIpKTsKLSAgICBBU1NF
UlRfVFJVRShmb3VuZEluSExTTENvZGUoInYxMyA9IGFuZ2xlX2ZybShleHAyKGFuZ2xlX2ZybShf
dTEpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MTQgPSBhbmdsZV9m
cm0obG9nMihhbmdsZV9mcm0oX3UxKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNM
Q29kZSgidjE1ID0gYW5nbGVfZnJtKHNxcnQoYW5nbGVfZnJtKF91MSkpKSIpKTsKLSAgICBBU1NF
UlRfVFJVRShmb3VuZEluSExTTENvZGUoInYxNiA9IGFuZ2xlX2ZybShyc3FydChhbmdsZV9mcm0o
X3UxKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjE3ID0gYW5nbGVf
ZnJtKGFicyhhbmdsZV9mcm0oX3UxKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNM
Q29kZSgidjE4ID0gYW5nbGVfZnJtKHNpZ24oYW5nbGVfZnJtKF91MSkpKSIpKTsKLSAgICBBU1NF
UlRfVFJVRShmb3VuZEluSExTTENvZGUoInYxOSA9IGFuZ2xlX2ZybShmbG9vcihhbmdsZV9mcm0o
X3UxKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjIwID0gYW5nbGVf
ZnJtKGNlaWwoYW5nbGVfZnJtKF91MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExT
TENvZGUoInYyMSA9IGFuZ2xlX2ZybShmcmFjKGFuZ2xlX2ZybShfdTEpKSkiKSk7Ci0gICAgQVNT
RVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MjIgPSBhbmdsZV9mcm0od2ViZ2xfbW9kX2VtdShh
bmdsZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91ZikpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluSExTTENvZGUoInYyMyA9IGFuZ2xlX2ZybSh3ZWJnbF9tb2RfZW11KGFuZ2xlX2ZybShfdTEp
LCBhbmdsZV9mcm0oX3UyKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgi
djI0ID0gYW5nbGVfZnJtKG1pbihhbmdsZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91ZikpKSIpKTsK
LSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYyNSA9IGFuZ2xlX2ZybShtaW4oYW5n
bGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdTIpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJ
bkhMU0xDb2RlKCJ2MjYgPSBhbmdsZV9mcm0obWF4KGFuZ2xlX2ZybShfdTEpLCBhbmdsZV9mcm0o
X3VmKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjI3ID0gYW5nbGVf
ZnJtKG1heChhbmdsZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91MikpKSIpKTsKLSAgICBBU1NFUlRf
VFJVRSgKLSAgICAgICAgZm91bmRJbkhMU0xDb2RlKCJ2MjggPSBhbmdsZV9mcm0oY2xhbXAoYW5n
bGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdTIpLCBhbmdsZV9mcm0oX3UzKSkpIikpOwotICAgIEFT
U0VSVF9UUlVFKAotICAgICAgICBmb3VuZEluSExTTENvZGUoInYyOSA9IGFuZ2xlX2ZybShjbGFt
cChhbmdsZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91ZiksIGFuZ2xlX2ZybShfdWYyKSkpIikpOwot
ICAgIEFTU0VSVF9UUlVFKAotICAgICAgICBmb3VuZEluSExTTENvZGUoInYzMCA9IGFuZ2xlX2Zy
bShsZXJwKGFuZ2xlX2ZybShfdTEpLCBhbmdsZV9mcm0oX3UyKSwgYW5nbGVfZnJtKF91MykpKSIp
KTsKLSAgICBBU1NFUlRfVFJVRSgKLSAgICAgICAgZm91bmRJbkhMU0xDb2RlKCJ2MzEgPSBhbmds
ZV9mcm0obGVycChhbmdsZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91MiksIGFuZ2xlX2ZybShfdWYp
KSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MzIgPSBhbmdsZV9mcm0o
c3RlcChhbmdsZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91MikpKSIpKTsKLSAgICBBU1NFUlRfVFJV
RShmb3VuZEluSExTTENvZGUoInYzMyA9IGFuZ2xlX2ZybShzdGVwKGFuZ2xlX2ZybShfdWYpLCBh
bmdsZV9mcm0oX3UxKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgKLSAg
ICAgICAgInYzNCA9IGFuZ2xlX2ZybShzbW9vdGhzdGVwKGFuZ2xlX2ZybShfdTEpLCBhbmdsZV9m
cm0oX3UyKSwgYW5nbGVfZnJtKF91MykpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExT
TENvZGUoCi0gICAgICAgICJ2MzUgPSBhbmdsZV9mcm0oc21vb3Roc3RlcChhbmdsZV9mcm0oX3Vm
KSwgYW5nbGVfZnJtKF91ZjIpLCBhbmdsZV9mcm0oX3UxKSkpIikpOwotICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5ITFNMQ29kZSgidjM2ID0gYW5nbGVfZnJtKG5vcm1hbGl6ZShhbmdsZV9mcm0oX3Ux
KSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgKLSAgICAgICAgInYzNyA9
IGFuZ2xlX2ZybSh3ZWJnbF9mYWNlZm9yd2FyZF9lbXUoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2Zy
bShfdTIpLCBhbmdsZV9mcm0oX3UzKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNM
Q29kZSgidjM4ID0gYW5nbGVfZnJtKHJlZmxlY3QoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShf
dTIpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKAotICAgICAgICAidjM5
ID0gYW5nbGVfZnJtKHJlZnJhY3QoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdTIpLCBhbmds
ZV9mcm0oX3VmKSkpIikpOwotCi0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmMSA9
IGFuZ2xlX2ZybShsZW5ndGgoYW5nbGVfZnJtKF91MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShm
b3VuZEluSExTTENvZGUoImYyID0gYW5nbGVfZnJtKGRpc3RhbmNlKGFuZ2xlX2ZybShfdTEpLCBh
bmdsZV9mcm0oX3UyKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZjMg
PSBhbmdsZV9mcm0oZG90KGFuZ2xlX2ZybShfdTEpLCBhbmdsZV9mcm0oX3UyKSkpIikpOwotICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidmYzMSA9IGFuZ2xlX2ZybShjcm9zcyhhbmds
ZV9mcm0oX3VmMzEpLCBhbmdsZV9mcm0oX3VmMzIpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91
bmRJbkhMU0xDb2RlKCJtMSA9IGFuZ2xlX2ZybSgoYW5nbGVfZnJtKF91bTEpICogYW5nbGVfZnJt
KF91bTIpKSkiKSk7Ci19Ci0KLVRFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIEJ1aWx0
SW5SZWxhdGlvbmFsRnVuY3Rpb25Sb3VuZGluZykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAg
ICAgICAidW5pZm9ybSB2ZWM0IHUxO1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHUyO1xuIgot
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgYnZlYzQgYnYxID0gbGVzc1Ro
YW4odTEsIHUyKTtcbiIKLSAgICAgICAgIiAgIGJ2ZWM0IGJ2MiA9IGxlc3NUaGFuRXF1YWwodTEs
IHUyKTtcbiIKLSAgICAgICAgIiAgIGJ2ZWM0IGJ2MyA9IGdyZWF0ZXJUaGFuKHUxLCB1Mik7XG4i
Ci0gICAgICAgICIgICBidmVjNCBidjQgPSBncmVhdGVyVGhhbkVxdWFsKHUxLCB1Mik7XG4iCi0g
ICAgICAgICIgICBidmVjNCBidjUgPSBlcXVhbCh1MSwgdTIpO1xuIgotICAgICAgICAiICAgYnZl
YzQgYnY2ID0gbm90RXF1YWwodTEsIHUyKTtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9
IHZlYzQoYnYxKSArIHZlYzQoYnYyKSArIHZlYzQoYnYzKSArIHZlYzQoYnY0KSArIHZlYzQoYnY1
KSArIHZlYzQoYnY2KTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJp
bmcpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYnYxID0gbGVzc1RoYW4o
YW5nbGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJ
bkFsbEdMU0xDb2RlKCJidjIgPSBsZXNzVGhhbkVxdWFsKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2Zy
bSh1MikpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYnYzID0gZ3Jl
YXRlclRoYW4oYW5nbGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSkiKSk7Ci0gICAgQVNTRVJUX1RS
VUUoZm91bmRJbkFsbEdMU0xDb2RlKCJidjQgPSBncmVhdGVyVGhhbkVxdWFsKGFuZ2xlX2ZybSh1
MSksIGFuZ2xlX2ZybSh1MikpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29k
ZSgiYnY1ID0gZXF1YWwoYW5nbGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSkiKSk7Ci0gICAgQVNT
RVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJidjYgPSBub3RFcXVhbChhbmdsZV9mcm0odTEp
LCBhbmdsZV9mcm0odTIpKSIpKTsKLQotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgi
YnYxID0gKGFuZ2xlX2ZybShfdTEpIDwgYW5nbGVfZnJtKF91MikpIikpOwotICAgIEFTU0VSVF9U
UlVFKGZvdW5kSW5ITFNMQ29kZSgiYnYyID0gKGFuZ2xlX2ZybShfdTEpIDw9IGFuZ2xlX2ZybShf
dTIpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImJ2MyA9IChhbmdsZV9m
cm0oX3UxKSA+IGFuZ2xlX2ZybShfdTIpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExT
TENvZGUoImJ2NCA9IChhbmdsZV9mcm0oX3UxKSA+PSBhbmdsZV9mcm0oX3UyKSkiKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJidjUgPSAoYW5nbGVfZnJtKF91MSkgPT0gYW5n
bGVfZnJtKF91MikpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiYnY2ID0g
KGFuZ2xlX2ZybShfdTEpICE9IGFuZ2xlX2ZybShfdTIpKSIpKTsKLX0KLQotVEVTVF9GKERlYnVn
U2hhZGVyUHJlY2lzaW9uVGVzdCwgQ29uc3RydWN0b3JSb3VuZGluZykKLXsKLSAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuIgotICAgICAgICAidW5p
Zm9ybSBmbG9hdCB1MTtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgdTI7XG4iCi0gICAgICAg
ICJ1bmlmb3JtIGZsb2F0IHUzO1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCB1NDtcbiIKLSAg
ICAgICAgInVuaWZvcm0gaXZlYzQgdWl2O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgot
ICAgICAgICAiICAgdmVjNCB2MSA9IHZlYzQodTEsIHUyLCB1MywgdTQpO1xuIgotICAgICAgICAi
ICAgdmVjNCB2MiA9IHZlYzQodWl2KTtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHYx
ICsgdjI7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAg
ICAvLyBOb3RlOiB0aGlzIGlzIHN1Ym9wdGltYWwgZm9yIHRoZSBjYXNlIHRha2luZyBmb3VyIGZs
b2F0cywgYnV0IG9wdGltaXppbmcgd291bGQgYmUgdHJpY2t5LgotICAgIEFTU0VSVF9UUlVFKGZv
dW5kSW5BbGxHTFNMQ29kZSgKLSAgICAgICAgInYxID0gYW5nbGVfZnJtKHZlYzQoYW5nbGVfZnJt
KHUxKSwgYW5nbGVfZnJtKHUyKSwgYW5nbGVfZnJtKHUzKSwgYW5nbGVfZnJtKHU0KSkpIikpOwot
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjIgPSBhbmdsZV9mcm0odmVjNCh1
aXYpKSIpKTsKLQotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgKLSAgICAgICAgInYx
ID0gYW5nbGVfZnJtKHZlYzQoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdTIpLCBhbmdsZV9m
cm0oX3UzKSwgYW5nbGVfZnJtKF91NCkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExT
TENvZGUoInYyID0gYW5nbGVfZnJtKHZlYzQoX3VpdikpIikpOwotfQotCi1URVNUX0YoRGVidWdT
aGFkZXJQcmVjaXNpb25UZXN0LCBTdHJ1Y3RDb25zdHJ1Y3Rvck5vUm91bmRpbmcpCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInN0cnVjdCBTIHsgbWVkaXVtcCB2ZWM0IGE7IH07XG4i
Ci0gICAgICAgICJ1bmlmb3JtIHZlYzQgdTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
LSAgICAgICAgIiAgIFMgcyA9IFModSk7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSBz
LmE7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBB
U1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInMgPSBTKGFuZ2xlX2ZybSh1KSkiKSk7Ci0g
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJzID0gX1NfY3RvcihhbmdsZV9mcm0oX3Up
KSIpKTsKLSAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgiYW5nbGVfZnJtKFMiKSk7Ci19
Ci0KLVRFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIFN3aXp6bGVSb3VuZGluZykKLXsK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHU7XG4iCi0gICAgICAg
ICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICB2ZWM0IHYgPSB1Lnh5eHk7IgotICAgICAg
ICAiICAgZ2xfRnJhZ0NvbG9yID0gdjtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShz
aGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidiA9IGFu
Z2xlX2ZybSh1KS54eXh5IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidiA9
IGFuZ2xlX2ZybShfdSkueHl4eSIpKTsKLX0KLQotVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9u
VGVzdCwgQnVpbHRJblRleEZ1bmN0aW9uUm91bmRpbmcpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
LSAgICAgICAgInByZWNpc2lvbiBsb3dwIHNhbXBsZXIyRDtcbiIKLSAgICAgICAgInVuaWZvcm0g
dmVjMiB1O1xuIgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgcztcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGxvd3AgdmVjNCB2ID0gdGV4dHVyZTJEKHMsIHUp
O1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdjtcbiIKLSAgICAgICAgIn1cbiI7Ci0g
ICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNM
Q29kZSgidiA9IGFuZ2xlX2ZybCh0ZXh0dXJlMkQocywgYW5nbGVfZnJtKHUpKSkiKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2ID0gYW5nbGVfZnJsKGdsX3RleHR1cmUyRChf
cywgYW5nbGVfZnJtKF91KSkpIikpOwotfQotCi1URVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25U
ZXN0LCBGdW5jdGlvbkNhbGxQYXJhbWV0ZXJRdWFsaWZpZXJzRnJvbURlZmluaXRpb24pCi17Ci0g
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1MTtcbiIKLSAgICAgICAg
InVuaWZvcm0gdmVjNCB1MjtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1MztcbiIKLSAgICAg
ICAgInVuaWZvcm0gdmVjNCB1NDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1NTtcbiIKLSAg
ICAgICAgInZlYzQgYWRkKGluIHZlYzQgeCwgaW4gdmVjNCB5KSB7XG4iCi0gICAgICAgICIgICBy
ZXR1cm4geCArIHk7XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJ2b2lkIGNvbXBvdW5kX2Fk
ZChpbm91dCB2ZWM0IHgsIGluIHZlYzQgeSkge1xuIgotICAgICAgICAiICAgeCA9IHggKyB5O1xu
IgotICAgICAgICAifVxuIgotICAgICAgICAidm9pZCBhZGRfdG9fbGFzdChpbiB2ZWM0IHgsIGlu
IHZlYzQgeSwgb3V0IHZlYzQgeikge1xuIgotICAgICAgICAiICAgeiA9IHggKyB5O1xuIgotICAg
ICAgICAifVxuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgdmVjNCB2
ID0gYWRkKHUxLCB1Mik7XG4iCi0gICAgICAgICIgICBjb21wb3VuZF9hZGQodiwgdTMpO1xuIgot
ICAgICAgICAiICAgdmVjNCB2MjtcbiIKLSAgICAgICAgIiAgIGFkZF90b19sYXN0KHU0LCB1NSwg
djIpO1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdiArIHYyO1xuIgotICAgICAgICAi
fVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgLy8gTm90ZSB0aGF0IHRoaXMg
aXMgbm90IG9wdGltYWwgY29kZSwgdGhlcmUgYXJlIHJlZHVuZGFudCBmcm0gY2FsbHMuCi0gICAg
Ly8gSG93ZXZlciwgZ2V0dGluZyB0aGUgaW1wbGVtZW50YXRpb24gd29ya2luZyB3aGVuIG90aGVy
IG9wZXJhdGlvbnMKLSAgICAvLyBhcmUgbmVzdGVkIHdpdGhpbiBmdW5jdGlvbiBjYWxscyB3b3Vs
ZCBiZSB0cmlja3kgaWYgdG8gZ2V0IHJpZ2h0Ci0gICAgLy8gb3RoZXJ3aXNlLgotICAgIC8vIFRl
c3QgaW4gcGFyYW1ldGVycwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidiA9
IGFkZChhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odTIpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShm
b3VuZEluSExTTENvZGUoInYgPSBfYWRkX2Zsb2F0NF9mbG9hdDQoYW5nbGVfZnJtKF91MSksIGFu
Z2xlX2ZybShfdTIpKSIpKTsKLSAgICAvLyBUZXN0IGlub3V0IHBhcmFtZXRlcgotICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiY29tcG91bmRfYWRkKHYsIGFuZ2xlX2ZybSh1Mykp
IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiY29tcG91bmRfYWRkX2Zsb2F0
NF9mbG9hdDQoX3YsIGFuZ2xlX2ZybShfdTMpKSIpKTsKLSAgICAvLyBUZXN0IG91dCBwYXJhbWV0
ZXIKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImFkZF90b19sYXN0KGFuZ2xl
X2ZybSh1NCksIGFuZ2xlX2ZybSh1NSksIHYyKSIpKTsKLSAgICBBU1NFUlRfVFJVRSgKLSAgICAg
ICAgZm91bmRJbkhMU0xDb2RlKCJhZGRfdG9fbGFzdF9mbG9hdDRfZmxvYXQ0X2Zsb2F0NChhbmds
ZV9mcm0oX3U0KSwgYW5nbGVfZnJtKF91NSksIF92MikiKSk7Ci19Ci0KLVRFU1RfRihEZWJ1Z1No
YWRlclByZWNpc2lvblRlc3QsIEZ1bmN0aW9uQ2FsbFBhcmFtZXRlclF1YWxpZmllcnNGcm9tUHJv
dG90eXBlKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgdTE7
XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgdTI7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQg
dTM7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgdTQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZl
YzQgdTU7XG4iCi0gICAgICAgICJ2ZWM0IGFkZChpbiB2ZWM0IHgsIGluIHZlYzQgeSk7XG4iCi0g
ICAgICAgICJ2b2lkIGNvbXBvdW5kX2FkZChpbm91dCB2ZWM0IHgsIGluIHZlYzQgeSk7XG4iCi0g
ICAgICAgICJ2b2lkIGFkZF90b19sYXN0KGluIHZlYzQgeCwgaW4gdmVjNCB5LCBvdXQgdmVjNCB6
KTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIHZlYzQgdiA9IGFk
ZCh1MSwgdTIpO1xuIgotICAgICAgICAiICAgY29tcG91bmRfYWRkKHYsIHUzKTtcbiIKLSAgICAg
ICAgIiAgIHZlYzQgdjI7XG4iCi0gICAgICAgICIgICBhZGRfdG9fbGFzdCh1NCwgdTUsIHYyKTtc
biIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHYgKyB2MjtcbiIKLSAgICAgICAgIn1cbiIK
LSAgICAgICAgInZlYzQgYWRkKGluIHZlYzQgeCwgaW4gdmVjNCB5KSB7XG4iCi0gICAgICAgICIg
ICByZXR1cm4geCArIHk7XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJ2b2lkIGNvbXBvdW5k
X2FkZChpbm91dCB2ZWM0IHgsIGluIHZlYzQgeSkge1xuIgotICAgICAgICAiICAgeCA9IHggKyB5
O1xuIgotICAgICAgICAifVxuIgotICAgICAgICAidm9pZCBhZGRfdG9fbGFzdChpbiB2ZWM0IHgs
IGluIHZlYzQgeSwgb3V0IHZlYzQgeikge1xuIgotICAgICAgICAiICAgeiA9IHggKyB5O1xuIgot
ICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgLy8gVGVzdCBp
biBwYXJhbWV0ZXJzCi0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2ID0gYWRk
KGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5k
SW5ITFNMQ29kZSgidiA9IF9hZGRfZmxvYXQ0X2Zsb2F0NChhbmdsZV9mcm0oX3UxKSwgYW5nbGVf
ZnJtKF91MikpIikpOwotICAgIC8vIFRlc3QgaW5vdXQgcGFyYW1ldGVyCi0gICAgQVNTRVJUX1RS
VUUoZm91bmRJbkFsbEdMU0xDb2RlKCJjb21wb3VuZF9hZGQodiwgYW5nbGVfZnJtKHUzKSkiKSk7
Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJjb21wb3VuZF9hZGRfZmxvYXQ0X2Zs
b2F0NChfdiwgYW5nbGVfZnJtKF91MykpIikpOwotICAgIC8vIFRlc3Qgb3V0IHBhcmFtZXRlcgot
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYWRkX3RvX2xhc3QoYW5nbGVfZnJt
KHU0KSwgYW5nbGVfZnJtKHU1KSwgdjIpIikpOwotICAgIEFTU0VSVF9UUlVFKAotICAgICAgICBm
b3VuZEluSExTTENvZGUoImFkZF90b19sYXN0X2Zsb2F0NF9mbG9hdDRfZmxvYXQ0KGFuZ2xlX2Zy
bShfdTQpLCBhbmdsZV9mcm0oX3U1KSwgX3YyKSIpKTsKLX0KLQotVEVTVF9GKERlYnVnU2hhZGVy
UHJlY2lzaW9uVGVzdCwgTmVzdGVkRnVuY3Rpb25DYWxscykKLXsKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgotICAgICAgICAidW5pZm9ybSB2ZWM0IHUxO1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHUy
O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHUzO1xuIgotICAgICAgICAidmVjNCBhZGQoaW4g
dmVjNCB4LCBpbiB2ZWM0IHkpIHtcbiIKLSAgICAgICAgIiAgIHJldHVybiB4ICsgeTtcbiIKLSAg
ICAgICAgIn1cbiIKLSAgICAgICAgInZlYzQgY29tcG91bmRfYWRkKGlub3V0IHZlYzQgeCwgaW4g
dmVjNCB5KSB7XG4iCi0gICAgICAgICIgICB4ID0geCArIHk7XG4iCi0gICAgICAgICIgICByZXR1
cm4geDtcbiIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAg
ICAgIiAgIHZlYzQgdiA9IHUxO1xuIgotICAgICAgICAiICAgdmVjNCB2MiA9IGFkZChjb21wb3Vu
ZF9hZGQodiwgdTIpLCBmcmFjdCh1MykpO1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0g
diArIHYyO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0g
ICAgLy8gVGVzdCBuZXN0ZWQgY2FsbHMKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENv
ZGUoCi0gICAgICAgICJ2MiA9IGFkZChjb21wb3VuZF9hZGQodiwgYW5nbGVfZnJtKHUyKSksIGFu
Z2xlX2ZybShmcmFjdChhbmdsZV9mcm0odTMpKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKAotICAg
ICAgICBmb3VuZEluSExTTENvZGUoInYyID0gX2FkZF9mbG9hdDRfZmxvYXQ0KF9jb21wb3VuZF9h
ZGRfZmxvYXQ0X2Zsb2F0NChfdiwgYW5nbGVfZnJtKF91MikpLCAiCi0gICAgICAgICAgICAgICAg
ICAgICAgICAiYW5nbGVfZnJtKGZyYWMoYW5nbGVfZnJtKF91MykpKSkiKSk7Ci19Ci0KLS8vIFRl
c3QgdGhhdCBjb2RlIGluc2lkZSBhbiBpbmRleCBvZiBhIGZ1bmN0aW9uIG91dCBwYXJhbWV0ZXIg
Z2V0cyBwcm9jZXNzZWQuCi1URVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBPcEluSW5k
ZXhPZkZ1bmN0aW9uT3V0UGFyYW1ldGVyKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAg
ICJ2b2lkIGZvbyhvdXQgdmVjNCBmKSB7IGYueCA9IDAuMDsgfVxuIgotICAgICAgICAidW5pZm9y
bSBmbG9hdCB1MjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIHZl
YzQgdlsyXTtcbiIKLSAgICAgICAgIiAgIGZvbyh2W2ludChleHAyKHUyKSldKTtcbiIKLSAgICAg
ICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZbMF07XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBp
bGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImFu
Z2xlX2ZybShleHAyKGFuZ2xlX2ZybSh1MikpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZElu
SExTTENvZGUoImFuZ2xlX2ZybShleHAyKGFuZ2xlX2ZybShfdTIpKSkiKSk7Ci19Ci0KLS8vIFRl
c3QgdGhhdCBjb2RlIGluc2lkZSBhbiBpbmRleCBvZiBhbiBsLXZhbHVlIGdldHMgcHJvY2Vzc2Vk
LgotVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgT3BJbkluZGV4T2ZMVmFsdWUpCi17
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1MTtcbiIKLSAgICAg
ICAgInVuaWZvcm0gZmxvYXQgdTI7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAg
ICAgICIgICB2ZWM0IHZbMl07XG4iCi0gICAgICAgICIgICB2W2ludChleHAyKHUyKSldID0gdTE7
XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2WzBdO1xuIgotICAgICAgICAifVxuIjsK
LSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdM
U0xDb2RlKCJhbmdsZV9mcm0oZXhwMihhbmdsZV9mcm0odTIpKSkiKSk7Ci0gICAgQVNTRVJUX1RS
VUUoZm91bmRJbkhMU0xDb2RlKCJhbmdsZV9mcm0oZXhwMihhbmdsZV9mcm0oX3UyKSkpIikpOwot
fQotCi0vLyBUZXN0IHRoYXQgdGhlIG91dCBwYXJhbWV0ZXIgb2YgbW9kZiBkb2Vzbid0IGdldCBy
b3VuZGVkCi1URVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBNb2RmT3V0UGFyYW1ldGVy
KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAg
ICAgICAgInVuaWZvcm0gZmxvYXQgdTtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xv
cjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGZsb2F0IG87XG4i
Ci0gICAgICAgICIgICBmbG9hdCBmID0gbW9kZih1LCBvKTtcbiIKLSAgICAgICAgIiAgIG15X0Zy
YWdDb2xvciA9IHZlYzQoZiwgbywgMCwgMSk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBp
bGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoIm1v
ZGYoYW5nbGVfZnJtKHUpLCBvKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUo
Im1vZGYoYW5nbGVfZnJtKF91KSwgX28pIikpOwotfQotCi0jaWYgZGVmaW5lZChBTkdMRV9FTkFC
TEVfSExTTCkKLS8vIFRlc3RzIHByZWNpc2lvbiBlbXVsYXRpb24gd2l0aCBITFNMIDMuMCBvdXRw
dXQgLS0gc2hvdWxkIGVycm9yIGdyYWNlZnVsbHkuCi1URVNUKERlYnVnU2hhZGVyUHJlY2lzaW9u
TmVnYXRpdmVUZXN0LCBITFNMM1Vuc3VwcG9ydGVkKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0g
ICAgICAgICJ1bmlmb3JtIGZsb2F0IHU7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0g
ICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgotICAgICAgICAifVxuIjsKLSAg
ICBzdGQ6OnN0cmluZyBpbmZvTG9nOwotICAgIHN0ZDo6c3RyaW5nIHRyYW5zbGF0ZWRDb2RlOwot
ICAgIFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXM7Ci0gICAgU2hJbml0QnVpbHRJblJlc291
cmNlcygmcmVzb3VyY2VzKTsKLSAgICByZXNvdXJjZXMuV0VCR0xfZGVidWdfc2hhZGVyX3ByZWNp
c2lvbiA9IDE7Ci0gICAgQVNTRVJUX0ZBTFNFKGNvbXBpbGVUZXN0U2hhZGVyKEdMX0ZSQUdNRU5U
X1NIQURFUiwgU0hfR0xFUzNfU1BFQywgU0hfSExTTF8zXzBfT1VUUFVULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJTdHJpbmcsICZyZXNvdXJjZXMsIDAsICZ0cmFu
c2xhdGVkQ29kZSwgJmluZm9Mb2cpKTsKLX0KLSNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9FTkFC
TEVfSExTTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9j
b21waWxlcl90ZXN0cy9FWFRfYmxlbmRfZnVuY19leHRlbmRlZF90ZXN0LmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9FWFRfYmxlbmRfZnVuY19l
eHRlbmRlZF90ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBhZWVkMjhk
YmE1YzhhZjI4N2YwZDU2MmUzOWQ0M2FlZGU5YzNiNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Y29tcGlsZXJfdGVzdHMvRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWRfdGVzdC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwyODUgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBFWFRfYmxlbmRfZnVuY19l
eHRlbmRlZC5jcHA6Ci0vLyAgIFRlc3QgZm9yIEVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkX3Rlc3QK
LS8vCi0KLSNpbmNsdWRlICJhbmdsZV9nbC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0j
aW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLXVzaW5nIHRlc3Rpbmc6OkNvbWJpbmU7
Ci11c2luZyB0ZXN0aW5nOjpWYWx1ZXM7Ci11c2luZyB0ZXN0aW5nOjptYWtlX3R1cGxlOwotCi1u
YW1lc3BhY2UKLXsKLWNvbnN0IGNoYXIgRVNTTFZlcnNpb24xMDBbXSA9ICIjdmVyc2lvbiAxMDBc
biI7Ci1jb25zdCBjaGFyIEVTU0xWZXJzaW9uMzAwW10gPSAiI3ZlcnNpb24gMzAwIGVzXG4iOwot
Y29uc3QgY2hhciBFU1NMVmVyc2lvbjMxMFtdID0gIiN2ZXJzaW9uIDMxMCBlc1xuIjsKLWNvbnN0
IGNoYXIgRVhUQkZFUHJhZ21hW10gICA9ICIjZXh0ZW5zaW9uIEdMX0VYVF9ibGVuZF9mdW5jX2V4
dGVuZGVkIDogcmVxdWlyZVxuIjsKLQotY29uc3QgY2hhciBFU1NMMTAwX1NpbXBsZVNoYWRlcjFb
XSA9Ci0gICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICJ2b2lkIG1haW4oKSB7
IFxuIgotICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAgICIgICAgZ2xf
U2Vjb25kYXJ5RnJhZ0NvbG9yRVhUID0gdmVjNChnbF9NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnNF
WFQgLyAxMCk7XG4iCi0gICAgIn1cbiI7Ci0KLS8vIFNoYWRlciB0aGF0IHRlc3RzIG9ubHkgdGhl
IGFjY2VzcyB0byBnbF9NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnNFWFQuCi1jb25zdCBjaGFyIEVT
U0wxMDBfTWF4RHVhbFNvdXJjZUFjY2Vzc1NoYWRlcltdID0KLSAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCi0gICAgInZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNChnbF9N
YXhEdWFsU291cmNlRHJhd0J1ZmZlcnNFWFQgLyAxMCk7IH1cbiI7Ci0KLS8vIFNoYWRlciB0aGF0
IHdyaXRlcyB0byBTZWNvbmRhcnlGcmFnRGF0YS4KLWNvbnN0IGNoYXIgRVNTTDEwMF9GcmFnRGF0
YVNoYWRlcltdID0KLSAgICAiI2V4dGVuc2lvbiBHTF9FWFRfZHJhd19idWZmZXJzIDogcmVxdWly
ZVxuIgotICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAidm9pZCBtYWluKCkg
e1xuIgotICAgICIgICAgZ2xfRnJhZ0RhdGFbZ2xfTWF4RHJhd0J1ZmZlcnMgLSAxXSA9IHZlYzQo
MS4wKTtcbiIKLSAgICAiICAgIGdsX1NlY29uZGFyeUZyYWdEYXRhRVhUW2dsX01heER1YWxTb3Vy
Y2VEcmF3QnVmZmVyc0VYVCAtIDFdID0gdmVjNCgwLjEpO1xuIgotICAgICJ9XG4iOwotCi0vLyBT
aGFkZXIgdGhhdCB3cml0ZXMgdG8gU2Vjb25kYXJ5RnJhZ0NvbG9yIGFuZCBTZWNvbmRhcnlGcmFn
RGF0YSBkb2VzIG5vdCBjb21waWxlLgotY29uc3QgY2hhciBFU1NMMTAwX0NvbG9yQW5kRGF0YVdy
aXRlRmFpbHVyZVNoYWRlcjFbXSA9Ci0gICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgot
ICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgIiAgICBnbF9TZWNvbmRhcnlGcmFnQ29sb3JFWFQg
PSB2ZWM0KDEuMCk7XG4iCi0gICAgIiAgICBnbF9TZWNvbmRhcnlGcmFnRGF0YUVYVFtnbF9NYXhE
dWFsU291cmNlRHJhd0J1ZmZlcnNFWFRdID0gdmVjNCgwLjEpO1xuIgotICAgICJ9XG4iOwotCi0v
LyBTaGFkZXIgdGhhdCB3cml0ZXMgdG8gRnJhZ0NvbG9yIGFuZCBTZWNvbmRhcnlGcmFnRGF0YSBk
b2VzIG5vdCBjb21waWxlLgotY29uc3QgY2hhciBFU1NMMTAwX0NvbG9yQW5kRGF0YVdyaXRlRmFp
bHVyZVNoYWRlcjJbXSA9Ci0gICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICJ2
b2lkIG1haW4oKSB7XG4iCi0gICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCi0g
ICAgIiAgICBnbF9TZWNvbmRhcnlGcmFnRGF0YUVYVFtnbF9NYXhEdWFsU291cmNlRHJhd0J1ZmZl
cnNFWFRdID0gdmVjNCgwLjEpO1xuIgotICAgICJ9XG4iOwotCi0vLyBTaGFkZXIgdGhhdCB3cml0
ZXMgdG8gRnJhZ0RhdGEgYW5kIFNlY29uZGFyeUZyYWdDb2xvci4KLWNvbnN0IGNoYXIgRVNTTDEw
MF9Db2xvckFuZERhdGFXcml0ZUZhaWx1cmVTaGFkZXIzW10gPQotICAgICIjZXh0ZW5zaW9uIEdM
X0VYVF9kcmF3X2J1ZmZlcnMgOiByZXF1aXJlXG4iCi0gICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgotICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgIiAgICBnbF9TZWNvbmRhcnlGcmFn
Q29sb3JFWFQgPSB2ZWM0KDEuMCk7XG4iCi0gICAgIiAgICBnbF9GcmFnRGF0YVtnbF9NYXhEcmF3
QnVmZmVyc10gPSB2ZWM0KDAuMSk7XG4iCi0gICAgIn1cbiI7Ci0KLS8vIEluIEdMU0wgdmVyc2lv
biAzMDAgZXMsIHRoZSBnbF9NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnNFWFQgaXMgYXZhaWxhYmxl
LgotY29uc3QgY2hhciBFU1NMMzAwX01heER1YWxTb3VyY2VBY2Nlc3NTaGFkZXJbXSA9Ci0gICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICJsYXlvdXQobG9jYXRpb24gPSAwKSBv
dXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xvcjsiCi0gICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAi
ICAgIGZyYWdDb2xvciA9IHZlYzQoZ2xfTWF4RHVhbFNvdXJjZURyYXdCdWZmZXJzRVhUIC8gMTAp
O1xuIgotICAgICJ9XG4iOwotCi0vLyBJbiBHTFNMIHZlcnNpb24gMzAwIGVzLCB0aGUgb25seSB3
YXkgdG8gd3JpdGUgYSBjb3JyZWN0IHNoYWRlciBpcyB0byByZXF1aXJlIHRoZSBleHRlbnNpb24g
YW5kCi0vLyB0aGVuIGxlYXZlIHRoZSBsb2NhdGlvbnMgdW5zcGVjaWZpZWQuIFRoZSBjYWxsZXIg
d2lsbCB0aGVuIGJpbmQgdGhlIHZhcmlhYmxlcyB3aXRoIHRoZSBleHRlbnNpb24KLS8vIGJpbmRp
bmcgZnVuY3Rpb25zLgotY29uc3QgY2hhciBFU1NMMzAwX0xvY2F0aW9uQW5kVW5zcGVjaWZpZWRP
dXRwdXRTaGFkZXJbXSA9Ci0gICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICJs
YXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xvcjsiCi0gICAgIm91
dCBtZWRpdW1wIHZlYzQgc2Vjb25kYXJ5RnJhZ0NvbG9yOyIKLSAgICAidm9pZCBtYWluKCkge1xu
IgotICAgICIgICAgZnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAgICIgICAgc2Vjb25kYXJ5
RnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAgICJ9XG4iOwotCi1jb25zdCBjaGFyIEVTU0wz
MDBfVHdvVW5zcGVjaWZpZWRMb2NhdGlvbk91dHB1dHNTaGFkZXJbXSA9Ci0gICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgotICAgICJvdXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xvcjsiCi0g
ICAgIm91dCBtZWRpdW1wIHZlYzQgc2Vjb25kYXJ5RnJhZ0NvbG9yOyIKLSAgICAidm9pZCBtYWlu
KCkge1xuIgotICAgICIgICAgZnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAgICIgICAgc2Vj
b25kYXJ5RnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAgICJ9XG4iOwotCi0vLyBTaGFkZXIg
dGhhdCBpcyBjb3JyZWN0IGluIEdMU0wgRVMgMy4xMCBmYWlscyB3aGVuIHVzZWQgaW4gdmVyc2lv
biAzMDAgZXMuCi1jb25zdCBjaGFyIEVTU0wzMTBfTG9jYXRpb25JbmRleFNoYWRlcltdID0KLSAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgImxheW91dChsb2NhdGlvbiA9IDAp
IG91dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9yOyIKLSAgICAibGF5b3V0KGxvY2F0aW9uID0gMCwg
aW5kZXggPSAxKSBvdXQgbWVkaXVtcCB2ZWM0IHNlY29uZGFyeUZyYWdDb2xvcjsiCi0gICAgInZv
aWQgbWFpbigpIHtcbiIKLSAgICAiICAgZnJhZ0NvbG9yID0gdmVjNCgxKTtcbiIKLSAgICAiICAg
c2Vjb25kYXJ5RnJhZ0NvbG9yID0gdmVjNCgxKTtcbiIKLSAgICAifVxuIjsKLQotLy8gU2hhZGVy
IHRoYXQgc3BlY2lmaWVzIGluZGV4IGxheW91dCBxdWFsaWZpZXIgYnV0IG5vdCBsb2NhdGlvbiBm
YWlscyB0byBjb21waWxlLiBDdXJyZW50bHkgZmFpbHMKLS8vIHRvIGNvbXBpbGUgZHVlIHRvIHZl
cnNpb24gMzEwIGVzIG5vdCBiZWluZyBzdXBwb3J0ZWQuCi1jb25zdCBjaGFyIEVTU0wzMTBfTG9j
YXRpb25JbmRleEZhaWx1cmVTaGFkZXJbXSA9Ci0gICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgotICAgICJsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xv
cjsiCi0gICAgImxheW91dChpbmRleCA9IDEpIG91dCBtZWRpdW1wIHZlYzQgc2Vjb25kYXJ5RnJh
Z0NvbG9yOyIKLSAgICAidm9pZCBtYWluKCkge1xuIgotICAgICIgICBmcmFnQ29sb3IgPSB2ZWM0
KDEuMCk7XG4iCi0gICAgIiAgIHNlY29uZGFyeUZyYWdDb2xvciA9IHZlYzQoMS4wKTtcbiIKLSAg
ICAifVxuIjsKLQotY2xhc3MgRVhUQmxlbmRGdW5jRXh0ZW5kZWRUZXN0Ci0gICAgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdFdpdGhQYXJhbTx0ZXN0aW5nOjp0dXBsZTxTaFNoYWRlclNwZWMsIGNvbnN0
IGNoYXIgKiwgY29uc3QgY2hhciAqPj4KLXsKLSAgcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9p
ZCBTZXRVcCgpCi0gICAgewotICAgICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZtUmVzb3Vy
Y2VzKTsKLSAgICAgICAgLy8gRVhUX2RyYXdfYnVmZmVycyBpcyB1c2VkIGluIHNvbWUgb2YgdGhl
IHNoYWRlcnMgZm9yIHRlc3QgcHVycG9zZXMuCi0gICAgICAgIG1SZXNvdXJjZXMuRVhUX2RyYXdf
YnVmZmVycyA9IDE7Ci0gICAgICAgIG1SZXNvdXJjZXMuTlZfZHJhd19idWZmZXJzICA9IDI7Ci0K
LSAgICAgICAgbUNvbXBpbGVyID0gTlVMTDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKSB7IERlc3Ryb3lDb21waWxlcigpOyB9Ci0gICAgdm9pZCBEZXN0cm95Q29tcGlsZXIo
KQotICAgIHsKLSAgICAgICAgaWYgKG1Db21waWxlcikKLSAgICAgICAgewotICAgICAgICAgICAg
U2hEZXN0cnVjdChtQ29tcGlsZXIpOwotICAgICAgICAgICAgbUNvbXBpbGVyID0gTlVMTDsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgSW5pdGlhbGl6ZUNvbXBpbGVyKCkKLSAgICB7Ci0g
ICAgICAgIERlc3Ryb3lDb21waWxlcigpOwotICAgICAgICBtQ29tcGlsZXIgPSBTaENvbnN0cnVj
dENvbXBpbGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgdGVzdGluZzo6Z2V0PDA+KEdldFBhcmFtKCkp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIX0dMU0xfQ09NUEFU
SUJJTElUWV9PVVRQVVQsICZtUmVzb3VyY2VzKTsKLSAgICAgICAgQVNTRVJUX1RSVUUobUNvbXBp
bGVyICE9IE5VTEwpIDw8ICJDb21waWxlciBjb3VsZCBub3QgYmUgY29uc3RydWN0ZWQuIjsKLSAg
ICB9Ci0KLSAgICB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgVGVzdFNoYWRlckNvbXBpbGUoY29u
c3QgY2hhciAqcHJhZ21hKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFRlc3RTaGFkZXJDb21waWxl
KHRlc3Rpbmc6OmdldDwxPihHZXRQYXJhbSgpKSwgIC8vIFZlcnNpb24uCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcmFnbWEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0ZXN0aW5nOjpnZXQ8Mj4oR2V0UGFyYW0oKSkgIC8vIFNoYWRlci4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgfQotCi0gICAgdGVzdGluZzo6QXNzZXJ0aW9u
UmVzdWx0IFRlc3RTaGFkZXJDb21waWxlKGNvbnN0IGNoYXIgKnZlcnNpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnByYWdtYSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqc2hhZGVyKQotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciAqc2hhZGVyU3RyaW5nc1tdID0g
e3ZlcnNpb24sIHByYWdtYSwgc2hhZGVyfTsKLSAgICAgICAgYm9vbCBzdWNjZXNzID0gU2hDb21w
aWxlKG1Db21waWxlciwgc2hhZGVyU3RyaW5ncywgMywgMCk7Ci0gICAgICAgIGlmIChzdWNjZXNz
KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25TdWNj
ZXNzKCkgPDwgIkNvbXBpbGF0aW9uIHN1Y2Nlc3MiOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBTaEdldEluZm9Mb2cobUNvbXBpbGVy
KTsKLSAgICB9Ci0KLSAgcHJvdGVjdGVkOgotICAgIFNoQnVpbHRJblJlc291cmNlcyBtUmVzb3Vy
Y2VzOwotICAgIFNoSGFuZGxlIG1Db21waWxlcjsKLX07Ci0KLS8vIEV4dGVuc2lvbiBmbGFnIGlz
IHJlcXVpcmVkIHRvIGNvbXBpbGUgcHJvcGVybHkuIEV4cGVjdCBmYWlsdXJlIHdoZW4gaXQgaXMK
LS8vIG5vdCBwcmVzZW50LgotVEVTVF9QKEVYVEJsZW5kRnVuY0V4dGVuZGVkVGVzdCwgQ29tcGls
ZUZhaWxzV2l0aG91dEV4dGVuc2lvbikKLXsKLSAgICBtUmVzb3VyY2VzLkVYVF9ibGVuZF9mdW5j
X2V4dGVuZGVkID0gMDsKLSAgICBJbml0aWFsaXplQ29tcGlsZXIoKTsKLSAgICBFWFBFQ1RfRkFM
U0UoVGVzdFNoYWRlckNvbXBpbGUoRVhUQkZFUHJhZ21hKSk7Ci19Ci0KLS8vIEV4dGVuc2lvbiBk
aXJlY3RpdmUgaXMgcmVxdWlyZWQgdG8gY29tcGlsZSBwcm9wZXJseS4gRXhwZWN0IGZhaWx1cmUg
d2hlbgotLy8gaXQgaXMgbm90IHByZXNlbnQuCi1URVNUX1AoRVhUQmxlbmRGdW5jRXh0ZW5kZWRU
ZXN0LCBDb21waWxlRmFpbHNXaXRoRXh0ZW5zaW9uV2l0aG91dFByYWdtYSkKLXsKLSAgICBtUmVz
b3VyY2VzLkVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkICA9IDE7Ci0gICAgbVJlc291cmNlcy5NYXhE
dWFsU291cmNlRHJhd0J1ZmZlcnMgPSAxOwotICAgIEluaXRpYWxpemVDb21waWxlcigpOwotICAg
IEVYUEVDVF9GQUxTRShUZXN0U2hhZGVyQ29tcGlsZSgiIikpOwotfQotCi0vLyBXaXRoIGV4dGVu
c2lvbiBmbGFnIGFuZCBleHRlbnNpb24gZGlyZWN0aXZlLCBjb21waWxpbmcgc3VjY2VlZHMuCi0v
LyBBbHNvIHRlc3QgdGhhdCB0aGUgZXh0ZW5zaW9uIGRpcmVjdGl2ZSBzdGF0ZSBpcyByZXNldCBj
b3JyZWN0bHkuCi1URVNUX1AoRVhUQmxlbmRGdW5jRXh0ZW5kZWRUZXN0LCBDb21waWxlU3VjY2Vl
ZHNXaXRoRXh0ZW5zaW9uQW5kUHJhZ21hKQotewotICAgIG1SZXNvdXJjZXMuRVhUX2JsZW5kX2Z1
bmNfZXh0ZW5kZWQgID0gMTsKLSAgICBtUmVzb3VyY2VzLk1heER1YWxTb3VyY2VEcmF3QnVmZmVy
cyA9IDE7Ci0gICAgSW5pdGlhbGl6ZUNvbXBpbGVyKCk7Ci0gICAgRVhQRUNUX1RSVUUoVGVzdFNo
YWRlckNvbXBpbGUoRVhUQkZFUHJhZ21hKSk7Ci0gICAgLy8gVGVzdCByZXNldCBmdW5jdGlvbmFs
aXR5LgotICAgIEVYUEVDVF9GQUxTRShUZXN0U2hhZGVyQ29tcGlsZSgiIikpOwotICAgIEVYUEVD
VF9UUlVFKFRlc3RTaGFkZXJDb21waWxlKEVYVEJGRVByYWdtYSkpOwotfQotCi0vLyBUaGUgU0wg
I3ZlcnNpb24gMTAwIHNoYWRlcnMgdGhhdCBhcmUgY29ycmVjdCB3b3JrIHNpbWlsYXJseQotLy8g
aW4gYm90aCBHTDIgYW5kIEdMMywgd2l0aCBhbmQgd2l0aG91dCB0aGUgdmVyc2lvbiBzdHJpbmcu
Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChDb3JyZWN0RVNTTDEwMFNoYWRlcnMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBFWFRCbGVuZEZ1bmNFeHRlbmRlZFRlc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBDb21iaW5lKFZhbHVlcyhTSF9HTEVTMl9TUEVDLCBTSF9HTEVTM19TUEVDKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKCIiLCBFU1NMVmVyc2lvbjEw
MCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhFU1NMMTAwX1NpbXBs
ZVNoYWRlcjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFU1NMMTAw
X01heER1YWxTb3VyY2VBY2Nlc3NTaGFkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFU1NMMTAwX0ZyYWdEYXRhU2hhZGVyKSkpOwotCi1JTlNUQU5USUFURV9URVNU
X0NBU0VfUChDb3JyZWN0RVNTTDMwMFNoYWRlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICBF
WFRCbGVuZEZ1bmNFeHRlbmRlZFRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBDb21iaW5l
KFZhbHVlcyhTSF9HTEVTM19TUEVDKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsdWVzKEVTU0xWZXJzaW9uMzAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VmFsdWVzKEVTU0wzMDBfTWF4RHVhbFNvdXJjZUFjY2Vzc1NoYWRlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVTU0wzMDBfTG9jYXRpb25BbmRVbnNwZWNpZmllZE91
dHB1dFNoYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTU0wz
MDBfVHdvVW5zcGVjaWZpZWRMb2NhdGlvbk91dHB1dHNTaGFkZXIpKSk7Ci0KLWNsYXNzIEVYVEJs
ZW5kRnVuY0V4dGVuZGVkQ29tcGlsZUZhaWx1cmVUZXN0IDogcHVibGljIEVYVEJsZW5kRnVuY0V4
dGVuZGVkVGVzdAotewotfTsKLQotVEVTVF9QKEVYVEJsZW5kRnVuY0V4dGVuZGVkQ29tcGlsZUZh
aWx1cmVUZXN0LCBDb21waWxlRmFpbHMpCi17Ci0gICAgLy8gRXhwZWN0IGNvbXBpbGUgZmFpbHVy
ZSBkdWUgdG8gc2hhZGVyIGVycm9yLCB3aXRoIHNoYWRlciBoYXZpbmcgY29ycmVjdCBwcmFnbWEu
Ci0gICAgbVJlc291cmNlcy5FWFRfYmxlbmRfZnVuY19leHRlbmRlZCAgPSAxOwotICAgIG1SZXNv
dXJjZXMuTWF4RHVhbFNvdXJjZURyYXdCdWZmZXJzID0gMTsKLSAgICBJbml0aWFsaXplQ29tcGls
ZXIoKTsKLSAgICBFWFBFQ1RfRkFMU0UoVGVzdFNoYWRlckNvbXBpbGUoRVhUQkZFUHJhZ21hKSk7
Ci19Ci0KLS8vIEluY29ycmVjdCAjdmVyc2lvbiAxMDAgc2hhZGVycyBmYWlsLgotSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoSW5jb3JyZWN0RVNTTDEwMFNoYWRlcnMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBFWFRCbGVuZEZ1bmNFeHRlbmRlZENvbXBpbGVGYWlsdXJlVGVzdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIENvbWJpbmUoVmFsdWVzKFNIX0dMRVMyX1NQRUMpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoRVNTTFZlcnNpb24xMDApLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoRVNTTDEwMF9Db2xvckFuZERhdGFXcml0ZUZh
aWx1cmVTaGFkZXIxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVNT
TDEwMF9Db2xvckFuZERhdGFXcml0ZUZhaWx1cmVTaGFkZXIyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRVNTTDEwMF9Db2xvckFuZERhdGFXcml0ZUZhaWx1cmVTaGFk
ZXIzKSkpOwotCi0vLyBDb3JyZWN0ICN2ZXJzaW9uIDMwMCBlcyBzaGFkZXJzIGZhaWwgaW4gR0xF
UzIgY29udGV4dCwgcmVnYXJkbGVzcyBvZiB2ZXJzaW9uIHN0cmluZy4KLUlOU1RBTlRJQVRFX1RF
U1RfQ0FTRV9QKENvcnJlY3RFU1NMMzAwU2hhZGVycywKLSAgICAgICAgICAgICAgICAgICAgICAg
IEVYVEJsZW5kRnVuY0V4dGVuZGVkQ29tcGlsZUZhaWx1cmVUZXN0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgQ29tYmluZShWYWx1ZXMoU0hfR0xFUzJfU1BFQyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZhbHVlcygiIiwgRVNTTFZlcnNpb24xMDAsIEVTU0xWZXJzaW9uMzAw
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEVTU0wzMDBfTG9jYXRp
b25BbmRVbnNwZWNpZmllZE91dHB1dFNoYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVTU0wzMDBfVHdvVW5zcGVjaWZpZWRMb2NhdGlvbk91dHB1dHNTaGFkZXIp
KSk7Ci0KLS8vIENvcnJlY3QgI3ZlcnNpb24gMTAwIHNoYWRlcnMgZmFpbCB3aGVuIHVzZWQgd2l0
aCAjdmVyc2lvbiAzMDAgZXMuCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChDb3JyZWN0RVNTTDEw
MFNoYWRlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICBFWFRCbGVuZEZ1bmNFeHRlbmRlZENv
bXBpbGVGYWlsdXJlVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIENvbWJpbmUoVmFsdWVz
KFNIX0dMRVMzX1NQRUMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMo
RVNTTFZlcnNpb24zMDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMo
RVNTTDEwMF9TaW1wbGVTaGFkZXIxLCBFU1NMMTAwX0ZyYWdEYXRhU2hhZGVyKSkpOwotCi0vLyBJ
bmNvcnJlY3QgI3ZlcnNpb24gMzEwIGVzIGFsd2F5cyBmYWlscy4KLUlOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKEluY29ycmVjdEVTU0wzMTBTaGFkZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAg
RVhUQmxlbmRGdW5jRXh0ZW5kZWRDb21waWxlRmFpbHVyZVRlc3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBDb21iaW5lKFZhbHVlcyhTSF9HTEVTM19TUEVDKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVmFsdWVzKEVTU0xWZXJzaW9uMzAwLCBFU1NMVmVyc2lvbjMxMCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhFU1NMMzEwX0xvY2F0aW9uSW5k
ZXhGYWlsdXJlU2hhZGVyKSkpOwotCi0vLyBDb3JyZWN0ICN2ZXJzaW9uIDMxMCBlcyBmYWlscyBp
biAjdmVyc2lvbiAzMDAgZXMuCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUCgKLSAgICBDb3JyZWN0
RVNTTDMxMFNoYWRlcnNJbkVTU0wzMDAsCi0gICAgRVhUQmxlbmRGdW5jRXh0ZW5kZWRDb21waWxl
RmFpbHVyZVRlc3QsCi0gICAgVmFsdWVzKG1ha2VfdHVwbGUoU0hfR0xFUzNfU1BFQywgJkVTU0xW
ZXJzaW9uMzAwWzBdLCAmRVNTTDMxMF9Mb2NhdGlvbkluZGV4U2hhZGVyWzBdKSkpOwotCi0vLyBD
b3JyZWN0ICN2ZXJzaW9uIDMxMCBlcyBmYWlscyBpbiAjdmVyc2lvbiAzMTAgZXMsIGR1ZSB0byAz
LjEgbm90IGJlaW5nIHN1cHBvcnRlZC4KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKAotICAgIENv
cnJlY3RFU1NMMzEwU2hhZGVycywKLSAgICBFWFRCbGVuZEZ1bmNFeHRlbmRlZENvbXBpbGVGYWls
dXJlVGVzdCwKLSAgICBWYWx1ZXMobWFrZV90dXBsZShTSF9HTEVTM19TUEVDLCAmRVNTTFZlcnNp
b24zMTBbMF0sICZFU1NMMzEwX0xvY2F0aW9uSW5kZXhTaGFkZXJbMF0pKSk7Ci0KLX0gIC8vIG5h
bWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2Nv
bXBpbGVyX3Rlc3RzL0VtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdF90ZXN0LmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9FbXVsYXRlR0xGcmFn
Q29sb3JCcm9hZGNhc3RfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRj
Mjg2YjgxNGQ0ZmZkZGVkYjVjYTgwNTg0MTk4NmZhY2RkMTk1M2IuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0VtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdF90ZXN0LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDc5ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIw
MTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gRW11bGF0
ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0X3Rlc3QuY3BwOgotLy8gICBUZXN0cyBmb3IgZ2xfRnJhZ0Nv
bG9yIGJyb2FkY2FzdCBiZWhhdmlvciBlbXVsYXRpb24uCi0vLwotCi0jaW5jbHVkZSAiYW5nbGVf
Z2wuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVy
TGFuZy5oIgotI2luY2x1ZGUgInRlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5oIgotCi1u
YW1lc3BhY2UKLXsKLQotY29uc3QgaW50IGtNYXhEcmF3QnVmZmVycyA9IDI7Ci0KLWNsYXNzIEVt
dWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdFRlc3QgOiBwdWJsaWMgTWF0Y2hPdXRwdXRDb2RlVGVz
dAotewotICBwdWJsaWM6Ci0gICAgRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0VGVzdCgpCi0g
ICAgICAgIDogTWF0Y2hPdXRwdXRDb2RlVGVzdChHTF9GUkFHTUVOVF9TSEFERVIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLCAgLy8gY29tcGlsZSBvcHRpb25zCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVUKQotICAgIHsK
LSAgICAgICAgZ2V0UmVzb3VyY2VzKCktPk1heERyYXdCdWZmZXJzICAgPSBrTWF4RHJhd0J1ZmZl
cnM7Ci0gICAgICAgIGdldFJlc291cmNlcygpLT5FWFRfZHJhd19idWZmZXJzID0gMTsKLSAgICB9
Ci19OwotCi0vLyBWZXJpZmllcyB0aGF0IHdpdGhvdXQgZXhwbGljaXRseSBlbmFibGluZyBHTF9F
WFRfZHJhd19idWZmZXJzIGV4dGVuc2lvbgotLy8gaW4gdGhlIHNoYWRlciwgbm8gYnJvYWRjYXN0
IGVtdWxhdGlvbi4KLVRFU1RfRihFbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3RUZXN0LCBGcmFn
Q29sb3JOb0Jyb2FkY2FzdCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBzaGFkZXJTdHJpbmcg
PQotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBn
bF9GcmFnQ29sb3IgPSB2ZWM0KDEsIDAsIDAsIDApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBj
b21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgRVhQRUNUX1RSVUUoZm91bmRJbkNvZGUoImdsX0Zy
YWdDb2xvciIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoZm91bmRJbkNvZGUoImdsX0ZyYWdEYXRhWzBd
IikpOwotICAgIEVYUEVDVF9GQUxTRShmb3VuZEluQ29kZSgiZ2xfRnJhZ0RhdGFbMV0iKSk7Ci19
Ci0KLS8vIFZlcmlmaWVzIHRoYXQgd2l0aCBleHBsaWNpdGx5IGVuYWJsaW5nIEdMX0VYVF9kcmF3
X2J1ZmZlcnMgZXh0ZW5zaW9uCi0vLyBpbiB0aGUgc2hhZGVyLCBicm9hZGNhc3QgaXMgZW11YWx0
ZWQgYnkgcmVwbGFjaW5nIGdsX0ZyYWdDb2xvciB3aXRoIGdsX0ZyYWdEYXRhLgotVEVTVF9GKEVt
dWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdFRlc3QsIEZyYWdDb2xvckJyb2FkY2FzdCkKLXsKLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyBzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI2V4dGVuc2lvbiBH
TF9FWFRfZHJhd19idWZmZXJzIDogcmVxdWlyZVxuIgotICAgICAgICAidm9pZCBtYWluKClcbiIK
LSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEsIDAsIDAs
IDApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAg
RVhQRUNUX0ZBTFNFKGZvdW5kSW5Db2RlKCJnbF9GcmFnQ29sb3IiKSk7Ci0gICAgRVhQRUNUX1RS
VUUoZm91bmRJbkNvZGUoImdsX0ZyYWdEYXRhWzBdIikpOwotICAgIEVYUEVDVF9UUlVFKGZvdW5k
SW5Db2RlKCJnbF9GcmFnRGF0YVsxXSIpKTsKLX0KLQotLy8gVmVyaWZpZXMgdGhhdCB3aXRoIGV4
cGxpY2l0bHkgZW5hYmxpbmcgR0xfRVhUX2RyYXdfYnVmZmVycyBleHRlbnNpb24KLS8vIGluIHRo
ZSBzaGFkZXIgd2l0aCBhbiBlbXB0eSBtYWluKCksIGFub3RoaW5nIGhhcHBlbnMuCi1URVNUX0Yo
RW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0VGVzdCwgRW1wdHlNYWluKQotewotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIHNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjZXh0ZW5zaW9uIEdMX0VYVF9k
cmF3X2J1ZmZlcnMgOiByZXF1aXJlXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAg
ICAie1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAg
RVhQRUNUX0ZBTFNFKGZvdW5kSW5Db2RlKCJnbF9GcmFnQ29sb3IiKSk7Ci0gICAgRVhQRUNUX0ZB
TFNFKGZvdW5kSW5Db2RlKCJnbF9GcmFnRGF0YVswXSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoZm91
bmRJbkNvZGUoImdsX0ZyYWdEYXRhWzFdIikpOwotfQotCi19ICAvLyBuYW1lc3BhY2UgYW5vbnlt
b3VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGls
ZXJfdGVzdHMvRXhwcmVzc2lvbkxpbWl0X3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0V4cHJlc3Npb25MaW1pdF90ZXN0LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJhMjRhNWY0N2JmNjllMzlmODE0OGZhNTBmMTU2
ZjM2MmUyM2JkMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvRXhwcmVz
c2lvbkxpbWl0X3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTYyICswLDAgQEAKLS8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KLS8vCi0jaW5jbHVkZSA8c3N0cmVhbT4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5j
bHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgImFuZ2xlX2dsLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKLSNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKLQotI2RlZmluZSBTSEFERVIo
U3JjKSAjU3JjCi0KLWNsYXNzIEV4cHJlc3Npb25MaW1pdFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdCB7Ci1wcm90ZWN0ZWQ6Ci0gICAgc3RhdGljIGNvbnN0IGludCBrTWF4RXhwcmVzc2lvbkNv
bXBsZXhpdHkgPSAxNjsKLSAgICBzdGF0aWMgY29uc3QgaW50IGtNYXhDYWxsU3RhY2tEZXB0aCAg
ICAgICA9IDE2OwotICAgIHN0YXRpYyBjb25zdCBpbnQga01heEZ1bmN0aW9uUGFyYW1ldGVycyAg
ID0gMTY7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGtFeHByZXNzaW9uVG9vQ29tcGxleDsKLSAg
ICBzdGF0aWMgY29uc3QgY2hhcioga0NhbGxTdGFja1Rvb0RlZXA7Ci0gICAgc3RhdGljIGNvbnN0
IGNoYXIqIGtIYXNSZWN1cnNpb247Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgKmtUb29NYW55UGFy
YW1ldGVyczsKLQotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCi0gICAgewotICAgICAgICBtZW1z
ZXQoJnJlc291cmNlcywgMCwgc2l6ZW9mKHJlc291cmNlcykpOwotCi0gICAgICAgIEdlbmVyYXRl
UmVzb3VyY2VzKCZyZXNvdXJjZXMpOwotICAgIH0KLQotICAgIC8vIFNldCB1cCB0aGUgcGVyIGNv
bXBpbGUgcmVzb3VyY2VzCi0gICAgc3RhdGljIHZvaWQgR2VuZXJhdGVSZXNvdXJjZXMoU2hCdWls
dEluUmVzb3VyY2VzICpyZXMpCi0gICAgewotICAgICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2Vz
KHJlcyk7Ci0KLSAgICAgICAgcmVzLT5NYXhWZXJ0ZXhBdHRyaWJzICAgICAgICAgICAgID0gODsK
LSAgICAgICAgcmVzLT5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyAgICAgID0gMTI4OwotICAgICAg
ICByZXMtPk1heFZhcnlpbmdWZWN0b3JzICAgICAgICAgICAgPSA4OwotICAgICAgICByZXMtPk1h
eFZlcnRleFRleHR1cmVJbWFnZVVuaXRzICAgPSAwOwotICAgICAgICByZXMtPk1heENvbWJpbmVk
VGV4dHVyZUltYWdlVW5pdHMgPSA4OwotICAgICAgICByZXMtPk1heFRleHR1cmVJbWFnZVVuaXRz
ICAgICAgICAgPSA4OwotICAgICAgICByZXMtPk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgICAg
PSAxNjsKLSAgICAgICAgcmVzLT5NYXhEcmF3QnVmZmVycyAgICAgICAgICAgICAgID0gMTsKLQot
ICAgICAgICByZXMtPk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA9IDA7Ci0gICAgICAgIHJlcy0+
T0VTX0VHTF9pbWFnZV9leHRlcm5hbCAgID0gMDsKLQotICAgICAgICByZXMtPk1heEV4cHJlc3Np
b25Db21wbGV4aXR5ID0ga01heEV4cHJlc3Npb25Db21wbGV4aXR5OwotICAgICAgICByZXMtPk1h
eENhbGxTdGFja0RlcHRoICAgICAgID0ga01heENhbGxTdGFja0RlcHRoOwotICAgICAgICByZXMt
Pk1heEZ1bmN0aW9uUGFyYW1ldGVycyAgID0ga01heEZ1bmN0aW9uUGFyYW1ldGVyczsKLSAgICB9
Ci0KLSAgICB2b2lkIEdlbmVyYXRlTG9uZ0V4cHJlc3Npb24oaW50IGxlbmd0aCwgc3RkOjpzdHJp
bmdzdHJlYW0qIHNzKQotICAgIHsKLSAgICAgICAgZm9yIChpbnQgaWkgPSAwOyBpaSA8IGxlbmd0
aDsgKytpaSkgewotICAgICAgICAgICpzcyA8PCAiKyB2ZWM0KCIgPDwgaWkgPDwgIikiOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgR2VuZXJhdGVTaGFkZXJXaXRoTG9uZ0V4
cHJlc3Npb24oaW50IGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBz
aGFkZXJTdGFydCA9IFNIQURFUigKLSAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OwotICAgICAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7Ci0gICAgICAgICAgICB2b2lkIG1h
aW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdV9jb2xv
cgotICAgICAgICApOwotCi0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotICAgICAgICBz
cyA8PCBzaGFkZXJTdGFydDsKLSAgICAgICAgR2VuZXJhdGVMb25nRXhwcmVzc2lvbihsZW5ndGgs
ICZzcyk7Ci0gICAgICAgIHNzIDw8ICI7IH0iOwotCi0gICAgICAgIHJldHVybiBzcy5zdHIoKTsK
LSAgICB9Ci0KLSAgICBzdGQ6OnN0cmluZyBHZW5lcmF0ZVNoYWRlcldpdGhVbnVzZWRMb25nRXhw
cmVzc2lvbihpbnQgbGVuZ3RoKQotICAgIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNo
YWRlclN0YXJ0ID0gU0hBREVSKAotICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
Ci0gICAgICAgICAgICB1bmlmb3JtIHZlYzQgdV9jb2xvcjsKLSAgICAgICAgICAgIHZvaWQgbWFp
bigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB1X2NvbG9y
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmVjNCBzb21lRnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICAgIHJldHVybiB1X2NvbG9yCi0gICAgICAgICk7Ci0KLSAgICAgICAgc3RkOjpzdHJp
bmdzdHJlYW0gc3M7Ci0KLSAgICAgICAgc3MgPDwgc2hhZGVyU3RhcnQ7Ci0gICAgICAgIEdlbmVy
YXRlTG9uZ0V4cHJlc3Npb24obGVuZ3RoLCAmc3MpOwotICAgICAgICBzcyA8PCAiOyB9IjsKLQot
ICAgICAgICByZXR1cm4gc3Muc3RyKCk7Ci0gICAgfQotCi0gICAgdm9pZCBHZW5lcmF0ZURlZXBG
dW5jdGlvblN0YWNrKGludCBsZW5ndGgsIHN0ZDo6c3RyaW5nc3RyZWFtKiBzcykKLSAgICB7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJTdGFydCA9IFNIQURFUigKLSAgICAgICAg
ICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICAgICAgdW5pZm9ybSB2ZWM0IHVf
Y29sb3I7Ci0gICAgICAgICAgICB2ZWM0IGZ1bmN0aW9uMCgpICB7Ci0gICAgICAgICAgICAgIHJl
dHVybiB1X2NvbG9yOwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgICpzcyA8
PCBzaGFkZXJTdGFydDsKLSAgICAgICAgZm9yIChpbnQgaWkgPSAwOyBpaSA8IGxlbmd0aDsgKytp
aSkgewotICAgICAgICAgICpzcyA8PCAidmVjNCBmdW5jdGlvbiIgPDwgKGlpICsgMSkgPDwgIigp
IHtcbiIKLSAgICAgICAgICAgICAgPDwgIiAgcmV0dXJuIGZ1bmN0aW9uIiA8PCBpaSA8PCAiKCk7
XG4iCi0gICAgICAgICAgICAgIDw8ICJ9XG4iOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3Rk
OjpzdHJpbmcgR2VuZXJhdGVTaGFkZXJXaXRoRGVlcEZ1bmN0aW9uU3RhY2soaW50IGxlbmd0aCkK
LSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotCi0gICAgICAgIEdlbmVyYXRl
RGVlcEZ1bmN0aW9uU3RhY2sobGVuZ3RoLCAmc3MpOwotCi0gICAgICAgIHNzIDw8ICJ2b2lkIG1h
aW4oKSB7XG4iCi0gICAgICAgICAgIDw8ICIgIGdsX0ZyYWdDb2xvciA9IGZ1bmN0aW9uIiA8PCBs
ZW5ndGggPDwgIigpO1xuIgotICAgICAgICAgICA8PCAifSI7Ci0KLSAgICAgICAgcmV0dXJuIHNz
LnN0cigpOwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nIEdlbmVyYXRlU2hhZGVyV2l0aFVudXNl
ZERlZXBGdW5jdGlvblN0YWNrKGludCBsZW5ndGgpCi0gICAgewotICAgICAgICBzdGQ6OnN0cmlu
Z3N0cmVhbSBzczsKLQotICAgICAgICBHZW5lcmF0ZURlZXBGdW5jdGlvblN0YWNrKGxlbmd0aCwg
JnNzKTsKLQotICAgICAgICBzcyA8PCAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAgICA8PCAi
ICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsMCwwLDApO1xuIgotICAgICAgICAgICA8PCAifSI7Ci0K
LQotICAgICAgICByZXR1cm4gc3Muc3RyKCk7Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgR2Vu
ZXJhdGVTaGFkZXJXaXRoRnVuY3Rpb25QYXJhbWV0ZXJzKGludCBwYXJhbWV0ZXJzKQotICAgIHsK
LSAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0KLSAgICAgICAgc3MgPDwgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAgICA8PCAiXG4iCi0gICAgICAgICAgIDw8ICJm
bG9hdCBmb28oIjsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzOyArK2kp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHNzIDw8ICJmbG9hdCBmIiA8PCBpOwotICAgICAgICAg
ICAgaWYgKGkgKyAxIDwgcGFyYW1ldGVycykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBzcyA8PCAiLCAiOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHNzIDw8ICIp
XG4iCi0gICAgICAgICAgIDw8ICJ7XG4iCi0gICAgICAgICAgIDw8ICIgICAgcmV0dXJuIGYwO1xu
IgotICAgICAgICAgICA8PCAifVxuIgotICAgICAgICAgICA8PCAiXG4iCi0gICAgICAgICAgIDw8
ICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAgICA8PCAie1xuIgotICAgICAgICAgICA8PCAiICAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwwLDAsMCk7XG4iCi0gICAgICAgICAgIDw8ICJ9IjsKLQot
ICAgICAgICByZXR1cm4gc3Muc3RyKCk7Ci0gICAgfQotCi0gICAgLy8gQ29tcGlsZXMgYSBzaGFk
ZXIgYW5kIGlmIHRoZXJlJ3MgYW4gZXJyb3IgY2hlY2tzIGZvciBhIHNwZWNpZmljCi0gICAgLy8g
c3Vic3RyaW5nIGluIHRoZSBlcnJvciBsb2cuIFRoaXMgd2F5IHdlIGtub3cgdGhlIGVycm9yIGlz
IHNwZWNpZmljCi0gICAgLy8gdG8gdGhlIGlzc3VlIHdlIGFyZSB0ZXN0aW5nLgotICAgIGJvb2wg
Q2hlY2tTaGFkZXJDb21waWxhdGlvbihTaEhhbmRsZSBjb21waWxlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc291cmNlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpleHBlY3RlZF9lcnJvcikKLSAgICB7
Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IFNoQ29tcGlsZShjb21waWxlciwgJnNvdXJjZSwgMSwg
Y29tcGlsZU9wdGlvbnMpICE9IDA7Ci0gICAgICAgIGlmIChzdWNjZXNzKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBzdWNjZXNzID0gIWV4cGVjdGVkX2Vycm9yOwotICAgICAgICB9Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpzdHJpbmcgbG9nID0gU2hHZXRJbmZv
TG9nKGNvbXBpbGVyKTsKLSAgICAgICAgICAgIGlmIChleHBlY3RlZF9lcnJvcikKLSAgICAgICAg
ICAgICAgICBzdWNjZXNzID0gbG9nLmZpbmQoZXhwZWN0ZWRfZXJyb3IpICE9IHN0ZDo6c3RyaW5n
OjpucG9zOwotCi0gICAgICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKSA8PCBsb2cgPDwgIlxu
LS0tLXNoYWRlci0tLS1cbiIgPDwgc291cmNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBz
dWNjZXNzOwotICAgIH0KLQotICAgIFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXM7Ci19Owot
Ci1jb25zdCBjaGFyKiBFeHByZXNzaW9uTGltaXRUZXN0OjprRXhwcmVzc2lvblRvb0NvbXBsZXgg
PQotICAgICJFeHByZXNzaW9uIHRvbyBjb21wbGV4IjsKLWNvbnN0IGNoYXIqIEV4cHJlc3Npb25M
aW1pdFRlc3Q6OmtDYWxsU3RhY2tUb29EZWVwID0KLSAgICAiQ2FsbCBzdGFjayB0b28gZGVlcCI7
Ci1jb25zdCBjaGFyKiBFeHByZXNzaW9uTGltaXRUZXN0OjprSGFzUmVjdXJzaW9uID0KLSAgICAi
RnVuY3Rpb24gcmVjdXJzaW9uIGRldGVjdGVkIjsKLWNvbnN0IGNoYXIqIEV4cHJlc3Npb25MaW1p
dFRlc3Q6OmtUb29NYW55UGFyYW1ldGVycyA9Ci0gICAgIkZ1bmN0aW9uIGhhcyB0b28gbWFueSBw
YXJhbWV0ZXJzIjsKLQotVEVTVF9GKEV4cHJlc3Npb25MaW1pdFRlc3QsIEV4cHJlc3Npb25Db21w
bGV4aXR5KQotewotICAgIFNoU2hhZGVyU3BlYyBzcGVjID0gU0hfV0VCR0xfU1BFQzsKLSAgICBT
aFNoYWRlck91dHB1dCBvdXRwdXQgPSBTSF9FU1NMX09VVFBVVDsKLSAgICBTaEhhbmRsZSB2ZXJ0
ZXhDb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoCi0gICAgICAgIEdMX0ZSQUdNRU5UX1NI
QURFUiwgc3BlYywgb3V0cHV0LCAmcmVzb3VyY2VzKTsKLSAgICBTaENvbXBpbGVPcHRpb25zIGNv
bXBpbGVPcHRpb25zID0gU0hfTElNSVRfRVhQUkVTU0lPTl9DT01QTEVYSVRZOwotCi0gICAgLy8g
VGVzdCBleHByZXNzaW9uIHVuZGVyIHRoZSBsaW1pdCBwYXNzZXMuCi0gICAgRVhQRUNUX1RSVUUo
Q2hlY2tTaGFkZXJDb21waWxhdGlvbigKLSAgICAgICAgdmVydGV4Q29tcGlsZXIsCi0gICAgICAg
IEdlbmVyYXRlU2hhZGVyV2l0aExvbmdFeHByZXNzaW9uKAotICAgICAgICAgICAga01heEV4cHJl
c3Npb25Db21wbGV4aXR5IC0gMTApLmNfc3RyKCksCi0gICAgICAgIGNvbXBpbGVPcHRpb25zLCBO
VUxMKSk7Ci0gICAgLy8gVGVzdCBleHByZXNzaW9uIG92ZXIgdGhlIGxpbWl0IGZhaWxzLgotICAg
IEVYUEVDVF9UUlVFKENoZWNrU2hhZGVyQ29tcGlsYXRpb24oCi0gICAgICAgIHZlcnRleENvbXBp
bGVyLAotICAgICAgICBHZW5lcmF0ZVNoYWRlcldpdGhMb25nRXhwcmVzc2lvbigKLSAgICAgICAg
ICAgIGtNYXhFeHByZXNzaW9uQ29tcGxleGl0eSArIDEwKS5jX3N0cigpLAotICAgICAgICBjb21w
aWxlT3B0aW9ucywga0V4cHJlc3Npb25Ub29Db21wbGV4KSk7Ci0gICAgLy8gVGVzdCBleHByZXNz
aW9uIG92ZXIgdGhlIGxpbWl0IHdpdGhvdXQgYSBsaW1pdCBkb2VzIG5vdCBmYWlsLgotICAgIEVY
UEVDVF9UUlVFKENoZWNrU2hhZGVyQ29tcGlsYXRpb24oCi0gICAgICAgIHZlcnRleENvbXBpbGVy
LAotICAgICAgICBHZW5lcmF0ZVNoYWRlcldpdGhMb25nRXhwcmVzc2lvbigKLSAgICAgICAgICAg
IGtNYXhFeHByZXNzaW9uQ29tcGxleGl0eSArIDEwKS5jX3N0cigpLAotICAgICAgICBjb21waWxl
T3B0aW9ucyAmIH5TSF9MSU1JVF9FWFBSRVNTSU9OX0NPTVBMRVhJVFksIE5VTEwpKTsKLSAgICBT
aERlc3RydWN0KHZlcnRleENvbXBpbGVyKTsKLX0KLQotVEVTVF9GKEV4cHJlc3Npb25MaW1pdFRl
c3QsIFVudXNlZEV4cHJlc3Npb25Db21wbGV4aXR5KQotewotICAgIFNoU2hhZGVyU3BlYyBzcGVj
ID0gU0hfV0VCR0xfU1BFQzsKLSAgICBTaFNoYWRlck91dHB1dCBvdXRwdXQgPSBTSF9FU1NMX09V
VFBVVDsKLSAgICBTaEhhbmRsZSB2ZXJ0ZXhDb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIo
Ci0gICAgICAgIEdMX0ZSQUdNRU5UX1NIQURFUiwgc3BlYywgb3V0cHV0LCAmcmVzb3VyY2VzKTsK
LSAgICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zID0gU0hfTElNSVRfRVhQUkVTU0lP
Tl9DT01QTEVYSVRZOwotCi0gICAgLy8gVGVzdCBleHByZXNzaW9uIHVuZGVyIHRoZSBsaW1pdCBw
YXNzZXMuCi0gICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFkZXJDb21waWxhdGlvbigKLSAgICAgICAg
dmVydGV4Q29tcGlsZXIsCi0gICAgICAgIEdlbmVyYXRlU2hhZGVyV2l0aFVudXNlZExvbmdFeHBy
ZXNzaW9uKAotICAgICAgICAgICAga01heEV4cHJlc3Npb25Db21wbGV4aXR5IC0gMTApLmNfc3Ry
KCksCi0gICAgICAgIGNvbXBpbGVPcHRpb25zLCBOVUxMKSk7Ci0gICAgLy8gVGVzdCBleHByZXNz
aW9uIG92ZXIgdGhlIGxpbWl0IGZhaWxzLgotICAgIEVYUEVDVF9UUlVFKENoZWNrU2hhZGVyQ29t
cGlsYXRpb24oCi0gICAgICAgIHZlcnRleENvbXBpbGVyLAotICAgICAgICBHZW5lcmF0ZVNoYWRl
cldpdGhVbnVzZWRMb25nRXhwcmVzc2lvbigKLSAgICAgICAgICAgIGtNYXhFeHByZXNzaW9uQ29t
cGxleGl0eSArIDEwKS5jX3N0cigpLAotICAgICAgICBjb21waWxlT3B0aW9ucywga0V4cHJlc3Np
b25Ub29Db21wbGV4KSk7Ci0gICAgLy8gVGVzdCBleHByZXNzaW9uIG92ZXIgdGhlIGxpbWl0IHdp
dGhvdXQgYSBsaW1pdCBkb2VzIG5vdCBmYWlsLgotICAgIEVYUEVDVF9UUlVFKENoZWNrU2hhZGVy
Q29tcGlsYXRpb24oCi0gICAgICAgIHZlcnRleENvbXBpbGVyLAotICAgICAgICBHZW5lcmF0ZVNo
YWRlcldpdGhVbnVzZWRMb25nRXhwcmVzc2lvbigKLSAgICAgICAgICAgIGtNYXhFeHByZXNzaW9u
Q29tcGxleGl0eSArIDEwKS5jX3N0cigpLAotICAgICAgICBjb21waWxlT3B0aW9ucyAmIH5TSF9M
SU1JVF9FWFBSRVNTSU9OX0NPTVBMRVhJVFksIE5VTEwpKTsKLSAgICBTaERlc3RydWN0KHZlcnRl
eENvbXBpbGVyKTsKLX0KLQotVEVTVF9GKEV4cHJlc3Npb25MaW1pdFRlc3QsIENhbGxTdGFja0Rl
cHRoKQotewotICAgIFNoU2hhZGVyU3BlYyBzcGVjID0gU0hfV0VCR0xfU1BFQzsKLSAgICBTaFNo
YWRlck91dHB1dCBvdXRwdXQgPSBTSF9FU1NMX09VVFBVVDsKLSAgICBTaEhhbmRsZSB2ZXJ0ZXhD
b21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoCi0gICAgICAgIEdMX0ZSQUdNRU5UX1NIQURF
Uiwgc3BlYywgb3V0cHV0LCAmcmVzb3VyY2VzKTsKLSAgICBTaENvbXBpbGVPcHRpb25zIGNvbXBp
bGVPcHRpb25zID0gU0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSDsKLQotICAgIC8vIFRlc3QgY2Fs
bCBzdGFjayB1bmRlciB0aGUgbGltaXQgcGFzc2VzLgotICAgIEVYUEVDVF9UUlVFKENoZWNrU2hh
ZGVyQ29tcGlsYXRpb24oCi0gICAgICAgIHZlcnRleENvbXBpbGVyLAotICAgICAgICBHZW5lcmF0
ZVNoYWRlcldpdGhEZWVwRnVuY3Rpb25TdGFjaygKLSAgICAgICAgICAgIGtNYXhDYWxsU3RhY2tE
ZXB0aCAtIDEwKS5jX3N0cigpLAotICAgICAgICBjb21waWxlT3B0aW9ucywgTlVMTCkpOwotICAg
IC8vIFRlc3QgY2FsbCBzdGFjayBvdmVyIHRoZSBsaW1pdCBmYWlscy4KLSAgICBFWFBFQ1RfVFJV
RShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAotICAgICAgICB2ZXJ0ZXhDb21waWxlciwKLSAgICAg
ICAgR2VuZXJhdGVTaGFkZXJXaXRoRGVlcEZ1bmN0aW9uU3RhY2soCi0gICAgICAgICAgICBrTWF4
Q2FsbFN0YWNrRGVwdGggKyAxMCkuY19zdHIoKSwKLSAgICAgICAgY29tcGlsZU9wdGlvbnMsIGtD
YWxsU3RhY2tUb29EZWVwKSk7Ci0gICAgLy8gVGVzdCBjYWxsIHN0YWNrIG92ZXIgdGhlIGxpbWl0
IHdpdGhvdXQgbGltaXQgZG9lcyBub3QgZmFpbC4KLSAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRl
ckNvbXBpbGF0aW9uKAotICAgICAgICB2ZXJ0ZXhDb21waWxlciwKLSAgICAgICAgR2VuZXJhdGVT
aGFkZXJXaXRoRGVlcEZ1bmN0aW9uU3RhY2soCi0gICAgICAgICAgICBrTWF4Q2FsbFN0YWNrRGVw
dGggKyAxMCkuY19zdHIoKSwKLSAgICAgICAgY29tcGlsZU9wdGlvbnMgJiB+U0hfTElNSVRfQ0FM
TF9TVEFDS19ERVBUSCwgTlVMTCkpOwotICAgIFNoRGVzdHJ1Y3QodmVydGV4Q29tcGlsZXIpOwot
fQotCi1URVNUX0YoRXhwcmVzc2lvbkxpbWl0VGVzdCwgVW51c2VkQ2FsbFN0YWNrRGVwdGgpCi17
Ci0gICAgU2hTaGFkZXJTcGVjIHNwZWMgPSBTSF9XRUJHTF9TUEVDOwotICAgIFNoU2hhZGVyT3V0
cHV0IG91dHB1dCA9IFNIX0VTU0xfT1VUUFVUOwotICAgIFNoSGFuZGxlIHZlcnRleENvbXBpbGVy
ID0gU2hDb25zdHJ1Y3RDb21waWxlcigKLSAgICAgICAgR0xfRlJBR01FTlRfU0hBREVSLCBzcGVj
LCBvdXRwdXQsICZyZXNvdXJjZXMpOwotICAgIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlv
bnMgPSBTSF9MSU1JVF9DQUxMX1NUQUNLX0RFUFRIOwotCi0gICAgLy8gVGVzdCBjYWxsIHN0YWNr
IHVuZGVyIHRoZSBsaW1pdCBwYXNzZXMuCi0gICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFkZXJDb21w
aWxhdGlvbigKLSAgICAgICAgdmVydGV4Q29tcGlsZXIsCi0gICAgICAgIEdlbmVyYXRlU2hhZGVy
V2l0aFVudXNlZERlZXBGdW5jdGlvblN0YWNrKAotICAgICAgICAgICAga01heENhbGxTdGFja0Rl
cHRoIC0gMTApLmNfc3RyKCksCi0gICAgICAgIGNvbXBpbGVPcHRpb25zLCBOVUxMKSk7Ci0gICAg
Ly8gVGVzdCBjYWxsIHN0YWNrIG92ZXIgdGhlIGxpbWl0IGZhaWxzLgotICAgIEVYUEVDVF9UUlVF
KENoZWNrU2hhZGVyQ29tcGlsYXRpb24oCi0gICAgICAgIHZlcnRleENvbXBpbGVyLAotICAgICAg
ICBHZW5lcmF0ZVNoYWRlcldpdGhVbnVzZWREZWVwRnVuY3Rpb25TdGFjaygKLSAgICAgICAgICAg
IGtNYXhDYWxsU3RhY2tEZXB0aCArIDEwKS5jX3N0cigpLAotICAgICAgICBjb21waWxlT3B0aW9u
cywga0NhbGxTdGFja1Rvb0RlZXApKTsKLSAgICAvLyBUZXN0IGNhbGwgc3RhY2sgb3ZlciB0aGUg
bGltaXQgd2l0aG91dCBsaW1pdCBkb2VzIG5vdCBmYWlsLgotICAgIEVYUEVDVF9UUlVFKENoZWNr
U2hhZGVyQ29tcGlsYXRpb24oCi0gICAgICAgIHZlcnRleENvbXBpbGVyLAotICAgICAgICBHZW5l
cmF0ZVNoYWRlcldpdGhVbnVzZWREZWVwRnVuY3Rpb25TdGFjaygKLSAgICAgICAgICAgIGtNYXhD
YWxsU3RhY2tEZXB0aCArIDEwKS5jX3N0cigpLAotICAgICAgICBjb21waWxlT3B0aW9ucyAmIH5T
SF9MSU1JVF9DQUxMX1NUQUNLX0RFUFRILCBOVUxMKSk7Ci0gICAgU2hEZXN0cnVjdCh2ZXJ0ZXhD
b21waWxlcik7Ci19Ci0KLVRFU1RfRihFeHByZXNzaW9uTGltaXRUZXN0LCBSZWN1cnNpb24pCi17
Ci0gICAgU2hTaGFkZXJTcGVjIHNwZWMgPSBTSF9XRUJHTF9TUEVDOwotICAgIFNoU2hhZGVyT3V0
cHV0IG91dHB1dCA9IFNIX0VTU0xfT1VUUFVUOwotICAgIFNoSGFuZGxlIHZlcnRleENvbXBpbGVy
ID0gU2hDb25zdHJ1Y3RDb21waWxlcigKLSAgICAgICAgR0xfRlJBR01FTlRfU0hBREVSLCBzcGVj
LCBvdXRwdXQsICZyZXNvdXJjZXMpOwotICAgIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlv
bnMgPSAwOwotCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlcldpdGhSZWN1cnNpb24wID0g
U0hBREVSKAotICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLSAgICAgICAgdW5pZm9y
bSB2ZWM0IHVfY29sb3I7Ci0gICAgICAgIHZlYzQgc29tZUZ1bmMoKSAgewotICAgICAgICAgICAg
cmV0dXJuIHNvbWVGdW5jKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG1haW4oKSB7Ci0g
ICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB1X2NvbG9yICogc29tZUZ1bmMoKTsKLSAgICAgICAg
fQotICAgICk7Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyV2l0aFJlY3Vyc2lvbjEg
PSBTSEFERVIoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICB1bmlm
b3JtIHZlYzQgdV9jb2xvcjsKLQotICAgICAgICB2ZWM0IHNvbWVGdW5jKCk7Ci0KLSAgICAgICAg
dmVjNCBzb21lRnVuYzEoKSAgewotICAgICAgICAgICAgcmV0dXJuIHNvbWVGdW5jKCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB2ZWM0IHNvbWVGdW5jKCkgIHsKLSAgICAgICAgICAgIHJldHVybiBz
b21lRnVuYzEoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbWFpbigpIHsKLSAgICAgICAg
ICAgIGdsX0ZyYWdDb2xvciA9IHVfY29sb3IgKiBzb21lRnVuYygpOwotICAgICAgICB9Ci0gICAg
KTsKLQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJXaXRoUmVjdXJzaW9uMiA9IFNIQURF
UigKLSAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Ci0gICAgICAgIHVuaWZvcm0gdmVj
NCB1X2NvbG9yOwotICAgICAgICB2ZWM0IHNvbWVGdW5jKCkgIHsKLSAgICAgICAgICAgIGlmICh1
X2NvbG9yLnggPiAwLjUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc29tZUZ1bmMoKTsKLSAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZlYzQoMSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG1haW4oKSB7Ci0gICAgICAgICAg
ICBnbF9GcmFnQ29sb3IgPSBzb21lRnVuYygpOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJXaXRoUmVjdXJzaW9uMyA9IFNIQURFUigKLSAgICAgICAg
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Ci0gICAgICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yOwot
ICAgICAgICB2ZWM0IHNvbWVGdW5jKCkgIHsKLSAgICAgICAgICAgIGlmICh1X2NvbG9yLnggPiAw
LjUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdmVjNCgxKTsKLSAgICAgICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNvbWVGdW5jKCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICB2b2lkIG1haW4oKSB7Ci0gICAgICAgICAgICBnbF9GcmFnQ29s
b3IgPSBzb21lRnVuYygpOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzaGFkZXJXaXRoUmVjdXJzaW9uNCA9IFNIQURFUigKLSAgICAgICAgcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7Ci0gICAgICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yOwotICAgICAgICB2ZWM0
IHNvbWVGdW5jKCkgIHsKLSAgICAgICAgICAgIHJldHVybiAodV9jb2xvci54ID4gMC41KSA/IHZl
YzQoMSkgOiBzb21lRnVuYygpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtYWluKCkgewot
ICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gc29tZUZ1bmMoKTsKLSAgICAgICAgfQotICAgICk7
Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyV2l0aFJlY3Vyc2lvbjUgPSBTSEFERVIo
Ci0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICB1bmlmb3JtIHZlYzQg
dV9jb2xvcjsKLSAgICAgICAgdmVjNCBzb21lRnVuYygpICB7Ci0gICAgICAgICAgICByZXR1cm4g
KHVfY29sb3IueCA+IDAuNSkgPyBzb21lRnVuYygpIDogdmVjNCgxKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZvaWQgbWFpbigpIHsKLSAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHNvbWVGdW5j
KCk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlcldp
dGhSZWN1cnNpb242ID0gU0hBREVSKAotICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
LSAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7Ci0gICAgICAgIHZlYzQgc29tZUZ1bmMoKSAg
ewotICAgICAgICAgICAgcmV0dXJuIHNvbWVGdW5jKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2
b2lkIG1haW4oKSB7Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB1X2NvbG9yOwotICAgICAg
ICB9Ci0gICAgKTsKLQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJXaXRoTm9SZWN1cnNp
b24gPSBTSEFERVIoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICB1
bmlmb3JtIHZlYzQgdV9jb2xvcjsKLQotICAgICAgICB2ZWMzIHJnYihpbnQgciwgaW50IGcsIGlu
dCBiKSB7Ci0gICAgICAgICAgICByZXR1cm4gdmVjMyhmbG9hdChyKSAvIDI1NS4wLCBmbG9hdChn
KSAvIDI1NS4wLCBmbG9hdChiKSAvIDI1NS4wKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
bWFpbigpIHsKLSAgICAgICAgICAgIHZlYzMgaGFpckNvbG9yMCA9IHJnYigxNTEsIDIwMCwgMjM0
KTsKLSAgICAgICAgICAgIHZlYzMgZmFjZUNvbG9yMiA9IHJnYigxODMsIDE0OCwgMTMzKTsKLSAg
ICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHVfY29sb3IgKyB2ZWM0KGhhaXJDb2xvcjAgKyBmYWNl
Q29sb3IyLCAwKTsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciog
c2hhZGVyV2l0aFJlY3Vyc2lvbjcgPSBTSEFERVIoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OwotICAgICAgICB1bmlmb3JtIHZlYzQgdV9jb2xvcjsKLQotICAgICAgICB2ZWM0IGZ1
bmN0aW9uMigpIHsKLSAgICAgICAgICAgIHJldHVybiB1X2NvbG9yOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdmVjNCBmdW5jdGlvbjEoKSB7Ci0gICAgICAgICAgICB2ZWM0IGEgPSBmdW5jdGlvbjIo
KTsKLSAgICAgICAgICAgIHZlYzQgYiA9IGZ1bmN0aW9uMSgpOwotICAgICAgICAgICAgcmV0dXJu
IGEgKyBiOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtYWluKCkgewotICAgICAgICAgICAg
Z2xfRnJhZ0NvbG9yID0gZnVuY3Rpb24xKCk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgc3Rh
dGljIGNvbnN0IGNoYXIqIHNoYWRlcldpdGhSZWN1cnNpb244ID0gU0hBREVSKAotICAgICAgICBw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLSAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7Ci0K
LSAgICAgICAgdmVjNCBmdW5jdGlvbjEoKTsKLQotICAgICAgICB2ZWM0IGZ1bmN0aW9uMygpIHsK
LSAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjEoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZl
YzQgZnVuY3Rpb24yKCkgewotICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uMygpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdmVjNCBmdW5jdGlvbjEoKSB7Ci0gICAgICAgICAgICByZXR1cm4gZnVu
Y3Rpb24yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG1haW4oKSB7Ci0gICAgICAgICAg
ICBnbF9GcmFnQ29sb3IgPSBmdW5jdGlvbjEoKTsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICAv
LyBDaGVjayBzaW1wbGUgcmVjdXJzaW9ucyBmYWlscy4KLSAgICBFWFBFQ1RfVFJVRShDaGVja1No
YWRlckNvbXBpbGF0aW9uKAotICAgICAgICB2ZXJ0ZXhDb21waWxlciwgc2hhZGVyV2l0aFJlY3Vy
c2lvbjAsCi0gICAgICAgIGNvbXBpbGVPcHRpb25zLCBrSGFzUmVjdXJzaW9uKSk7Ci0gICAgLy8g
Q2hlY2sgc2ltcGxlIHJlY3Vyc2lvbnMgZmFpbHMuCi0gICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFk
ZXJDb21waWxhdGlvbigKLSAgICAgICAgdmVydGV4Q29tcGlsZXIsIHNoYWRlcldpdGhSZWN1cnNp
b24xLAotICAgICAgICBjb21waWxlT3B0aW9ucywga0hhc1JlY3Vyc2lvbikpOwotICAgIC8vIENo
ZWNrIGlmIHJlY3Vyc2lvbnMgZmFpbHMuCi0gICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFkZXJDb21w
aWxhdGlvbigKLSAgICAgICAgdmVydGV4Q29tcGlsZXIsIHNoYWRlcldpdGhSZWN1cnNpb24yLAot
ICAgICAgICBjb21waWxlT3B0aW9ucywga0hhc1JlY3Vyc2lvbikpOwotICAgIC8vIENoZWNrIGlm
IHJlY3Vyc2lvbnMgZmFpbHMuCi0gICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFkZXJDb21waWxhdGlv
bigKLSAgICAgICAgdmVydGV4Q29tcGlsZXIsIHNoYWRlcldpdGhSZWN1cnNpb24zLAotICAgICAg
ICBjb21waWxlT3B0aW9ucywga0hhc1JlY3Vyc2lvbikpOwotICAgIC8vIENoZWNrIHRlcm5hcnkg
cmVjdXJzaW9ucyBmYWlscy4KLSAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9u
KAotICAgICAgICB2ZXJ0ZXhDb21waWxlciwgc2hhZGVyV2l0aFJlY3Vyc2lvbjQsCi0gICAgICAg
IGNvbXBpbGVPcHRpb25zLCBrSGFzUmVjdXJzaW9uKSk7Ci0gICAgLy8gQ2hlY2sgdGVybmFyeSBy
ZWN1cnNpb25zIGZhaWxzLgotICAgIEVYUEVDVF9UUlVFKENoZWNrU2hhZGVyQ29tcGlsYXRpb24o
Ci0gICAgICAgIHZlcnRleENvbXBpbGVyLCBzaGFkZXJXaXRoUmVjdXJzaW9uNSwKLSAgICAgICAg
Y29tcGlsZU9wdGlvbnMsIGtIYXNSZWN1cnNpb24pKTsKLQotICAgIC8vIENoZWNrIHNvbWUgbW9y
ZSBmb3JtcyBvZiByZWN1cnNpb24KLSAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0
aW9uKAotICAgICAgICB2ZXJ0ZXhDb21waWxlciwgc2hhZGVyV2l0aFJlY3Vyc2lvbjYsCi0gICAg
ICAgIGNvbXBpbGVPcHRpb25zLCBrSGFzUmVjdXJzaW9uKSk7Ci0gICAgRVhQRUNUX1RSVUUoQ2hl
Y2tTaGFkZXJDb21waWxhdGlvbigKLSAgICAgICAgdmVydGV4Q29tcGlsZXIsIHNoYWRlcldpdGhS
ZWN1cnNpb243LAotICAgICAgICBjb21waWxlT3B0aW9ucywga0hhc1JlY3Vyc2lvbikpOwotICAg
IEVYUEVDVF9UUlVFKENoZWNrU2hhZGVyQ29tcGlsYXRpb24oCi0gICAgICAgIHZlcnRleENvbXBp
bGVyLCBzaGFkZXJXaXRoUmVjdXJzaW9uOCwKLSAgICAgICAgY29tcGlsZU9wdGlvbnMsIGtIYXNS
ZWN1cnNpb24pKTsKLSAgICAvLyBDaGVjayB1bnVzZWQgcmVjdXJzaW9ucyBmYWlscyBpZiBsaW1p
dGluZyBjYWxsIHN0YWNrCi0gICAgLy8gc2luY2Ugd2UgY2hlY2sgYWxsIHBhdGhzLgotICAgIEVY
UEVDVF9UUlVFKENoZWNrU2hhZGVyQ29tcGlsYXRpb24oCi0gICAgICAgIHZlcnRleENvbXBpbGVy
LCBzaGFkZXJXaXRoUmVjdXJzaW9uNiwKLSAgICAgICAgY29tcGlsZU9wdGlvbnMgfCBTSF9MSU1J
VF9DQUxMX1NUQUNLX0RFUFRILCBrSGFzUmVjdXJzaW9uKSk7Ci0KLSAgICAvLyBDaGVjayB1bnVz
ZWQgcmVjdXJzaW9ucyBwYXNzZXMuCi0gICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFkZXJDb21waWxh
dGlvbigKLSAgICAgICAgdmVydGV4Q29tcGlsZXIsIHNoYWRlcldpdGhOb1JlY3Vyc2lvbiwKLSAg
ICAgICAgY29tcGlsZU9wdGlvbnMsIE5VTEwpKTsKLSAgICAvLyBDaGVjayB1bnVzZWQgcmVjdXJz
aW9ucyBwYXNzZXMgaWYgbGltaXRpbmcgY2FsbCBzdGFjay4KLSAgICBFWFBFQ1RfVFJVRShDaGVj
a1NoYWRlckNvbXBpbGF0aW9uKAotICAgICAgICB2ZXJ0ZXhDb21waWxlciwgc2hhZGVyV2l0aE5v
UmVjdXJzaW9uLAotICAgICAgICBjb21waWxlT3B0aW9ucyB8IFNIX0xJTUlUX0NBTExfU1RBQ0tf
REVQVEgsIE5VTEwpKTsKLSAgICBTaERlc3RydWN0KHZlcnRleENvbXBpbGVyKTsKLX0KLQotVEVT
VF9GKEV4cHJlc3Npb25MaW1pdFRlc3QsIEZ1bmN0aW9uUGFyYW1ldGVyQ291bnQpCi17Ci0gICAg
U2hTaGFkZXJTcGVjIHNwZWMgICAgID0gU0hfV0VCR0xfU1BFQzsKLSAgICBTaFNoYWRlck91dHB1
dCBvdXRwdXQgPSBTSF9FU1NMX09VVFBVVDsKLSAgICBTaEhhbmRsZSBjb21waWxlciAgICAgPSBT
aENvbnN0cnVjdENvbXBpbGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgc3BlYywgb3V0cHV0LCAmcmVz
b3VyY2VzKTsKLSAgICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zID0gU0hfTElNSVRf
RVhQUkVTU0lPTl9DT01QTEVYSVRZOwotCi0gICAgLy8gVGVzdCBwYXJhbWV0ZXJzIHVuZGVyIHRo
ZSBsaW1pdCBzdWNjZWVkcy4KLSAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9u
KAotICAgICAgICBjb21waWxlciwgR2VuZXJhdGVTaGFkZXJXaXRoRnVuY3Rpb25QYXJhbWV0ZXJz
KGtNYXhGdW5jdGlvblBhcmFtZXRlcnMpLmNfc3RyKCksCi0gICAgICAgIGNvbXBpbGVPcHRpb25z
LCBudWxscHRyKSk7Ci0gICAgLy8gVGVzdCBwYXJhbWV0ZXJzIG92ZXIgdGhlIGxpbWl0IGZhaWxz
LgotICAgIEVYUEVDVF9UUlVFKENoZWNrU2hhZGVyQ29tcGlsYXRpb24oCi0gICAgICAgIGNvbXBp
bGVyLCBHZW5lcmF0ZVNoYWRlcldpdGhGdW5jdGlvblBhcmFtZXRlcnMoa01heEZ1bmN0aW9uUGFy
YW1ldGVycyArIDEpLmNfc3RyKCksCi0gICAgICAgIGNvbXBpbGVPcHRpb25zLCBrVG9vTWFueVBh
cmFtZXRlcnMpKTsKLSAgICAvLyBUZXN0IHBhcmFtZXRlcnMgb3ZlciB0aGUgbGltaXQgd2l0aG91
dCBsaW1pdCBkb2VzIG5vdCBmYWlsLgotICAgIEVYUEVDVF9UUlVFKENoZWNrU2hhZGVyQ29tcGls
YXRpb24oCi0gICAgICAgIGNvbXBpbGVyLCBHZW5lcmF0ZVNoYWRlcldpdGhGdW5jdGlvblBhcmFt
ZXRlcnMoa01heEZ1bmN0aW9uUGFyYW1ldGVycyArIDEpLmNfc3RyKCksCi0gICAgICAgIGNvbXBp
bGVPcHRpb25zICYgflNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWSwgbnVsbHB0cikpOwot
ICAgIFNoRGVzdHJ1Y3QoY29tcGlsZXIpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0ZyYWdEZXB0aF90ZXN0LmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9GcmFnRGVwdGhf
dGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzYzg3OTg3YWNhODRkYjdk
MzNiNjI5NzQ1MDRjZDRmYTRiYThkZDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVy
X3Rlc3RzL0ZyYWdEZXB0aF90ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBA
Ci0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgotLy8KLS8vIEZyYWdEZXB0aF90ZXN0LmNwcDoKLS8vICAgVGVzdCBmb3IgR0xF
UyBTTCAzLjAgZ2xfRnJhZ0RlcHRoIHZhcmlhYmxlIGltcGxlbWVudGF0aW9uLgotLy8KLQotI2lu
Y2x1ZGUgImFuZ2xlX2dsLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJH
TFNMQU5HL1NoYWRlckxhbmcuaCIKLQotbmFtZXNwYWNlCi17Ci1jb25zdCBjaGFyIEVTU0xWZXJz
aW9uMTAwW10gPSAiI3ZlcnNpb24gMTAwXG4iOwotY29uc3QgY2hhciBFU1NMVmVyc2lvbjMwMFtd
ID0gIiN2ZXJzaW9uIDMwMCBlc1xuIjsKLWNvbnN0IGNoYXIgRVhURkRQcmFnbWFbXSAgICA9ICIj
ZXh0ZW5zaW9uIEdMX0VYVF9mcmFnX2RlcHRoIDogcmVxdWlyZVxuIjsKLX0gIC8vIG5hbWVzcGFj
ZQotCi1jbGFzcyBGcmFnRGVwdGhUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08
Ym9vbD4KLXsKLSAgcHJvdGVjdGVkOgotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsK
LSAgICAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmbVJlc291cmNlcyk7Ci0gICAgICAgIG1D
b21waWxlciAgICAgICAgICAgICAgICAgPSBudWxscHRyOwotICAgICAgICBtUmVzb3VyY2VzLkVY
VF9mcmFnX2RlcHRoID0gR2V0UGFyYW0oKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkg
b3ZlcnJpZGUgeyBEZXN0cm95Q29tcGlsZXIoKTsgfQotICAgIHZvaWQgRGVzdHJveUNvbXBpbGVy
KCkKLSAgICB7Ci0gICAgICAgIGlmIChtQ29tcGlsZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IFNoRGVzdHJ1Y3QobUNvbXBpbGVyKTsKLSAgICAgICAgICAgIG1Db21waWxlciA9IG51bGxwdHI7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIEluaXRpYWxpemVDb21waWxlcigpCi0gICAg
ewotICAgICAgICBEZXN0cm95Q29tcGlsZXIoKTsKLSAgICAgICAgbUNvbXBpbGVyID0gU2hDb25z
dHJ1Y3RDb21waWxlcihHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQRUMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hfR0xTTF9DT01QQVRJQklMSVRZX09V
VFBVVCwgJm1SZXNvdXJjZXMpOwotICAgICAgICBBU1NFUlRfVFJVRShtQ29tcGlsZXIgIT0gbnVs
bHB0cikgPDwgIkNvbXBpbGVyIGNvdWxkIG5vdCBiZSBjb25zdHJ1Y3RlZC4iOwotICAgIH0KLQot
ICAgIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBUZXN0U2hhZGVyQ29tcGlsZShjb25zdCBjaGFy
ICp2ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBjaGFyICpwcmFnbWEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNoYWRlcikKLSAgICB7Ci0gICAgICAgIGNvbnN0IGNo
YXIgKnNoYWRlclN0cmluZ3NbXSA9IHt2ZXJzaW9uLCBwcmFnbWEsIHNoYWRlcn07Ci0gICAgICAg
IGJvb2wgc3VjY2VzcyA9IFNoQ29tcGlsZShtQ29tcGlsZXIsIHNoYWRlclN0cmluZ3MsIDMsIDAp
OwotICAgICAgICBpZiAoc3VjY2VzcykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6
dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpIDw8ICJDb21waWxhdGlvbiBzdWNjZXNzIjsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWlsdXJlKCkgPDwg
U2hHZXRJbmZvTG9nKG1Db21waWxlcik7Ci0gICAgfQotCi0gIHByb3RlY3RlZDoKLSAgICBTaEJ1
aWx0SW5SZXNvdXJjZXMgbVJlc291cmNlczsKLSAgICBTaEhhbmRsZSBtQ29tcGlsZXI7Ci19Owot
Ci0vLyBUaGUgR0xFUyBTTCAzLjAgYnVpbHQtaW4gdmFyaWFibGUgZ2xfRnJhZ0RlcHRoIGZhaWxz
IHRvIGNvbXBpbGUgd2l0aCBHTEVTIFNMIDEuMC4KLVRFU1RfUChGcmFnRGVwdGhUZXN0LCBDb21w
aWxlRmFpbHNFU1NMMTAwKQotewotICAgIHN0YXRpYyBjb25zdCBjaGFyIHNoYWRlclN0cmluZ1td
ID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidm9pZCBt
YWluKCkgeyBcbiIKLSAgICAgICAgIiAgICBnbF9GcmFnRGVwdGggPSAxLjA7XG4iCi0gICAgICAg
ICJ9XG4iOwotCi0gICAgSW5pdGlhbGl6ZUNvbXBpbGVyKCk7Ci0gICAgRVhQRUNUX0ZBTFNFKFRl
c3RTaGFkZXJDb21waWxlKEVTU0xWZXJzaW9uMTAwLCAiIiwgc2hhZGVyU3RyaW5nKSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKFRlc3RTaGFkZXJDb21waWxlKCIiLCAiIiwgc2hhZGVyU3RyaW5nKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKFRlc3RTaGFkZXJDb21waWxlKCIiLCBFWFRGRFByYWdtYSwgc2hhZGVy
U3RyaW5nKSk7Ci19Ci0KLS8vIFRoZSBHTEVTIFNMIDMuMCBidWlsdC1pbiB2YXJpYWJsZSBnbF9G
cmFnRGVwdGggY29tcGlsZXMgd2l0aCBHTEVTIFNMIDMuMC4KLVRFU1RfUChGcmFnRGVwdGhUZXN0
LCBDb21waWxlU3VjY2VlZHNFU1NMMzAwKQotewotICAgIHN0YXRpYyBjb25zdCBjaGFyIHNoYWRl
clN0cmluZ1tdID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAg
ICAidm9pZCBtYWluKCkgeyBcbiIKLSAgICAgICAgIiAgICBnbF9GcmFnRGVwdGggPSAxLjA7XG4i
Ci0gICAgICAgICJ9XG4iOwotICAgIEluaXRpYWxpemVDb21waWxlcigpOwotICAgIEVYUEVDVF9U
UlVFKFRlc3RTaGFkZXJDb21waWxlKEVTU0xWZXJzaW9uMzAwLCAiIiwgc2hhZGVyU3RyaW5nKSk7
Ci19Ci0KLS8vIFVzaW5nICNleHRlbnNpb24gR0xfRVhUX2ZyYWdfZGVwdGggaW4gR0xTTCBFUyAz
LjAgc2hhZGVyIGZhaWxzIHRvIGNvbXBpbGUuCi1URVNUX1AoRnJhZ0RlcHRoVGVzdCwgRXh0ZW5z
aW9uRkRGYWlsc0VTU0wzMDApCi17Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgc2hhZGVyU3RyaW5n
W10gPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQg
dmVjNCBmcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IFxuIgotICAgICAgICAi
ICAgIGZyYWdDb2xvciA9IHZlYzQoMS4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgSW5pdGlh
bGl6ZUNvbXBpbGVyKCk7Ci0gICAgaWYgKG1SZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGggPT0gMSkK
LSAgICB7Ci0gICAgICAgIC8vIFRPRE8oa2tpbm51bmVuLCBnZW9mZmxhbmcpOiB0aGlzIHNob3Vs
ZCBmYWlsLiBFeHRlbnNpb25zIG5lZWQgdG8gaGF2ZSBzaW1pbGFyIGxldmVsCi0gICAgICAgIC8v
IHN5c3RlbSB0byBTeW1ib2xUYWJsZS4gIFRoZSBiaWdnZXN0IHRhc2sgaXMgdG8gaW1wbGVtZW50
IHZlcnNpb24tYXdhcmUgcHJlcHJvY2Vzc29yLCBzbwotICAgICAgICAvLyB0aGF0IHRoZSBleHRl
bnNpb24gZGVmaW5lcyBjYW4gYmUgZGVmaW5lZCBkZXBlbmRpbmcgb24gdGhlIHZlcnNpb24gdGhh
dCB0aGUgcHJlcHJvY2Vzc29yCi0gICAgICAgIC8vIHNhdyBvciBkaWQgbm90IHNlZS4KLSAgICAg
ICAgRVhQRUNUX1RSVUUoVGVzdFNoYWRlckNvbXBpbGUoRVNTTFZlcnNpb24zMDAsIEVYVEZEUHJh
Z21hLCBzaGFkZXJTdHJpbmcpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgRVhQ
RUNUX0ZBTFNFKFRlc3RTaGFkZXJDb21waWxlKEVTU0xWZXJzaW9uMzAwLCBFWFRGRFByYWdtYSwg
c2hhZGVyU3RyaW5nKSk7Ci0gICAgfQotfQotCi0vLyBUaGUgdGVzdHMgc2hvdWxkIHBhc3MgcmVn
YXJkbGVzcyB3aGV0aGVyIHRoZSBFWFRfZnJhZ19kZXB0aCBpcyBvbiBvciBub3QuCi1JTlNUQU5U
SUFURV9URVNUX0NBU0VfUChGcmFnRGVwdGhUZXN0cywgRnJhZ0RlcHRoVGVzdCwgdGVzdGluZzo6
VmFsdWVzKGZhbHNlLCB0cnVlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvR0xTTENvbXBhdGliaWxpdHlPdXRwdXRfdGVzdC5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvR0xT
TENvbXBhdGliaWxpdHlPdXRwdXRfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDMyNmQ3MGQyOWQ3MThlZjY4M2M5MWQyODk3ZmEyMDk0NDc3ZDRiYmEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0dMU0xDb21wYXRpYmlsaXR5T3V0cHV0X3Rlc3Qu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykg
MjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBHTFNM
Q29tcGF0aWJpbGl0eU91dHB1dFRlc3QuY3BwCi0vLyAgIFRlc3QgY29tcGlsZXIgb3V0cHV0IGZv
ciBnbHNsIGNvbXBhdGliaWxpdHkgbW9kZQotLy8KLQotI2luY2x1ZGUgImFuZ2xlX2dsLmgiCi0j
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIK
LSNpbmNsdWRlICJ0ZXN0cy90ZXN0X3V0aWxzL2NvbXBpbGVyX3Rlc3QuaCIKLQotY2xhc3MgR0xT
TENvbXBhdGliaWxpdHlPdXRwdXRUZXN0IDogcHVibGljIE1hdGNoT3V0cHV0Q29kZVRlc3QKLXsK
LSAgcHVibGljOgotICAgIEdMU0xDb21wYXRpYmlsaXR5T3V0cHV0VGVzdCgpCi0gICAgICAgIDog
TWF0Y2hPdXRwdXRDb2RlVGVzdChHTF9WRVJURVhfU0hBREVSLCBTSF9WQVJJQUJMRVMsIFNIX0dM
U0xfQ09NUEFUSUJJTElUWV9PVVRQVVQpCi0gICAgewotICAgIH0KLX07Ci0KLS8vIFZlcmlmeSBn
bF9Qb3NpdGlvbiBpcyB3cml0dGVuIHdoZW4gY29tcGlsaW5nIGluIGNvbXBhdGliaWxpdHkgbW9k
ZQotVEVTVF9GKEdMU0xDb21wYXRpYmlsaXR5T3V0cHV0VGVzdCwgR0xQb3NpdGlvbldyaXR0ZW5U
ZXN0KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0g
ICAgICAgICJ9IjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgRVhQRUNUX1RSVUUo
Zm91bmRJbkNvZGUoImdsX1Bvc2l0aW9uIikpOwotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxl
cl90ZXN0cy9JbnRlcm1Ob2RlX3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0ludGVybU5vZGVfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDM4MGU2NDFjMTg1NTY0ODYzNGY2YTE4Y2E0MjNjMTlhODgzYjdiYWMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0ludGVybU5vZGVfdGVzdC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzAgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykg
MjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBJbnRl
cm1Ob2RlX3Rlc3QuY3BwOgotLy8gICBVbml0IHRlc3RzIGZvciB0aGUgQVNUIG5vZGUgY2xhc3Nl
cy4KLS8vCi0KLSNpbmNsdWRlICJhbmdsZV9nbC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0Lmgi
Ci0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbmZvU2luay5oIgotI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvUG9vbEFsbG9jLmgiCi0KLWNsYXNzIEludGVybU5vZGVUZXN0IDogcHVibGljIHRlc3Rp
bmc6OlRlc3QKLXsKLSAgcHVibGljOgotICAgIEludGVybU5vZGVUZXN0KCkgOiBtVW5pcXVlSW5k
ZXgoMCkge30KLQotICBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBhbGxvY2F0b3IucHVzaCgpOwotICAgICAgICBTZXRHbG9iYWxQb29sQWxsb2Nh
dG9yKCZhbGxvY2F0b3IpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgU2V0R2xvYmFsUG9vbEFsbG9jYXRvcihudWxscHRyKTsKLSAgICAgICAg
YWxsb2NhdG9yLnBvcCgpOwotICAgIH0KLQotICAgIFRJbnRlcm1TeW1ib2wgKmNyZWF0ZVRlc3RT
eW1ib2woY29uc3QgVFR5cGUgJnR5cGUpCi0gICAgewotICAgICAgICBUSW5mb1NpbmtCYXNlIHN5
bWJvbE5hbWVPdXQ7Ci0gICAgICAgIHN5bWJvbE5hbWVPdXQgPDwgInRlc3QiIDw8IG1VbmlxdWVJ
bmRleDsKLSAgICAgICAgVFN0cmluZyBzeW1ib2xOYW1lID0gc3ltYm9sTmFtZU91dC5jX3N0cigp
OwotICAgICAgICArK21VbmlxdWVJbmRleDsKLQotICAgICAgICBUSW50ZXJtU3ltYm9sICpub2Rl
ID0gbmV3IFRJbnRlcm1TeW1ib2woMCwgc3ltYm9sTmFtZSwgdHlwZSk7Ci0gICAgICAgIG5vZGUt
PnNldExpbmUoY3JlYXRlVW5pcXVlU291cmNlTG9jKCkpOwotICAgICAgICBub2RlLT5zZXRJbnRl
cm5hbCh0cnVlKTsKLSAgICAgICAgbm9kZS0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UXVhbGlmaWVy
KEV2cVRlbXBvcmFyeSk7Ci0gICAgICAgIHJldHVybiBub2RlOwotICAgIH0KLQotICAgIFRJbnRl
cm1TeW1ib2wgKmNyZWF0ZVRlc3RTeW1ib2woKQotICAgIHsKLSAgICAgICAgVFR5cGUgdHlwZShF
YnRGbG9hdCwgRWJwSGlnaCk7Ci0gICAgICAgIHJldHVybiBjcmVhdGVUZXN0U3ltYm9sKHR5cGUp
OwotICAgIH0KLQotICAgIHZvaWQgY2hlY2tUeXBlRXF1YWxXaXRoUXVhbGlmaWVycyhjb25zdCBU
VHlwZSAmb3JpZ2luYWwsIGNvbnN0IFRUeXBlICZjb3B5KQotICAgIHsKLSAgICAgICAgQVNTRVJU
X0VRKG9yaWdpbmFsLCBjb3B5KTsKLSAgICAgICAgQVNTRVJUX0VRKG9yaWdpbmFsLmdldFByZWNp
c2lvbigpLCBjb3B5LmdldFByZWNpc2lvbigpKTsKLSAgICAgICAgQVNTRVJUX0VRKG9yaWdpbmFs
LmdldFF1YWxpZmllcigpLCBjb3B5LmdldFF1YWxpZmllcigpKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGNoZWNrU3ltYm9sQ29weShUSW50ZXJtTm9kZSAqYU9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqYUNv
cHkpCi0gICAgewotICAgICAgICBBU1NFUlRfTkUoYU9yaWdpbmFsLCBhQ29weSk7Ci0gICAgICAg
IFRJbnRlcm1TeW1ib2wgKmNvcHkgICAgID0gYUNvcHktPmdldEFzU3ltYm9sTm9kZSgpOwotICAg
ICAgICBUSW50ZXJtU3ltYm9sICpvcmlnaW5hbCA9IGFPcmlnaW5hbC0+Z2V0QXNTeW1ib2xOb2Rl
KCk7Ci0gICAgICAgIEFTU0VSVF9ORShudWxscHRyLCBjb3B5KTsKLSAgICAgICAgQVNTRVJUX05F
KG51bGxwdHIsIG9yaWdpbmFsKTsKLSAgICAgICAgQVNTRVJUX05FKG9yaWdpbmFsLCBjb3B5KTsK
LSAgICAgICAgQVNTRVJUX0VRKG9yaWdpbmFsLT5nZXRJZCgpLCBjb3B5LT5nZXRJZCgpKTsKLSAg
ICAgICAgQVNTRVJUX0VRKG9yaWdpbmFsLT5nZXROYW1lKCkuZ2V0U3RyaW5nKCksIGNvcHktPmdl
dE5hbWUoKS5nZXRTdHJpbmcoKSk7Ci0gICAgICAgIEFTU0VSVF9FUShvcmlnaW5hbC0+Z2V0TmFt
ZSgpLmlzSW50ZXJuYWwoKSwgY29weS0+Z2V0TmFtZSgpLmlzSW50ZXJuYWwoKSk7Ci0gICAgICAg
IGNoZWNrVHlwZUVxdWFsV2l0aFF1YWxpZmllcnMob3JpZ2luYWwtPmdldFR5cGUoKSwgY29weS0+
Z2V0VHlwZSgpKTsKLSAgICAgICAgQVNTRVJUX0VRKG9yaWdpbmFsLT5nZXRMaW5lKCkuZmlyc3Rf
ZmlsZSwgY29weS0+Z2V0TGluZSgpLmZpcnN0X2ZpbGUpOwotICAgICAgICBBU1NFUlRfRVEob3Jp
Z2luYWwtPmdldExpbmUoKS5maXJzdF9saW5lLCBjb3B5LT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7
Ci0gICAgICAgIEFTU0VSVF9FUShvcmlnaW5hbC0+Z2V0TGluZSgpLmxhc3RfZmlsZSwgY29weS0+
Z2V0TGluZSgpLmxhc3RfZmlsZSk7Ci0gICAgICAgIEFTU0VSVF9FUShvcmlnaW5hbC0+Z2V0TGlu
ZSgpLmxhc3RfbGluZSwgY29weS0+Z2V0TGluZSgpLmxhc3RfbGluZSk7Ci0gICAgfQotCi0gICAg
VFNvdXJjZUxvYyBjcmVhdGVVbmlxdWVTb3VyY2VMb2MoKQotICAgIHsKLSAgICAgICAgVFNvdXJj
ZUxvYyBsb2M7Ci0gICAgICAgIGxvYy5maXJzdF9maWxlID0gbVVuaXF1ZUluZGV4OwotICAgICAg
ICBsb2MuZmlyc3RfbGluZSA9IG1VbmlxdWVJbmRleCArIDE7Ci0gICAgICAgIGxvYy5sYXN0X2Zp
bGUgID0gbVVuaXF1ZUluZGV4ICsgMjsKLSAgICAgICAgbG9jLmxhc3RfbGluZSAgPSBtVW5pcXVl
SW5kZXggKyAzOwotICAgICAgICArK21VbmlxdWVJbmRleDsKLSAgICAgICAgcmV0dXJuIGxvYzsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgVFNvdXJjZUxvYyBnZXRUZXN0U291cmNlTG9jKCkKLSAgICB7
Ci0gICAgICAgIFRTb3VyY2VMb2MgbG9jOwotICAgICAgICBsb2MuZmlyc3RfZmlsZSA9IDE7Ci0g
ICAgICAgIGxvYy5maXJzdF9saW5lID0gMjsKLSAgICAgICAgbG9jLmxhc3RfZmlsZSAgPSAzOwot
ICAgICAgICBsb2MubGFzdF9saW5lICA9IDQ7Ci0gICAgICAgIHJldHVybiBsb2M7Ci0gICAgfQot
Ci0gICAgc3RhdGljIHZvaWQgY2hlY2tUZXN0U291cmNlTG9jKGNvbnN0IFRTb3VyY2VMb2MgJmxv
YykKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9FUSgxLCBsb2MuZmlyc3RfZmlsZSk7Ci0gICAgICAg
IEFTU0VSVF9FUSgyLCBsb2MuZmlyc3RfbGluZSk7Ci0gICAgICAgIEFTU0VSVF9FUSgzLCBsb2Mu
bGFzdF9maWxlKTsKLSAgICAgICAgQVNTRVJUX0VRKDQsIGxvYy5sYXN0X2xpbmUpOwotICAgIH0K
LQotICBwcml2YXRlOgotICAgIFRQb29sQWxsb2NhdG9yIGFsbG9jYXRvcjsKLSAgICBpbnQgbVVu
aXF1ZUluZGV4OwotfTsKLQotLy8gQ2hlY2sgdGhhdCB0aGUgZGVlcCBjb3B5IG9mIGEgc3ltYm9s
IG5vZGUgaXMgYW4gYWN0dWFsIGNvcHkgd2l0aCB0aGUgc2FtZSBhdHRyaWJ1dGVzIGFzIHRoZQot
Ly8gb3JpZ2luYWwuCi1URVNUX0YoSW50ZXJtTm9kZVRlc3QsIERlZXBDb3B5U3ltYm9sTm9kZSkK
LXsKLSAgICBUVHlwZSB0eXBlKEVidEludCwgRWJwSGlnaCk7Ci0gICAgVEludGVybVN5bWJvbCAq
b3JpZ2luYWwgPSBuZXcgVEludGVybVN5bWJvbCgwLCBUU3RyaW5nKCJuYW1lIiksIHR5cGUpOwot
ICAgIG9yaWdpbmFsLT5zZXRMaW5lKGdldFRlc3RTb3VyY2VMb2MoKSk7Ci0gICAgb3JpZ2luYWwt
PnNldEludGVybmFsKHRydWUpOwotICAgIFRJbnRlcm1UeXBlZCAqY29weSA9IG9yaWdpbmFsLT5k
ZWVwQ29weSgpOwotICAgIGNoZWNrU3ltYm9sQ29weShvcmlnaW5hbCwgY29weSk7Ci0gICAgY2hl
Y2tUZXN0U291cmNlTG9jKGNvcHktPmdldExpbmUoKSk7Ci19Ci0KLS8vIENoZWNrIHRoYXQgdGhl
IGRlZXAgY29weSBvZiBhIGNvbnN0YW50IHVuaW9uIG5vZGUgaXMgYW4gYWN0dWFsIGNvcHkgd2l0
aCB0aGUgc2FtZSBhdHRyaWJ1dGVzIGFzCi0vLyB0aGUgb3JpZ2luYWwuCi1URVNUX0YoSW50ZXJt
Tm9kZVRlc3QsIERlZXBDb3B5Q29uc3RhbnRVbmlvbk5vZGUpCi17Ci0gICAgVFR5cGUgdHlwZShF
YnRJbnQsIEVicEhpZ2gpOwotICAgIFRDb25zdGFudFVuaW9uICpjb25zdFZhbHVlID0gbmV3IFRD
b25zdGFudFVuaW9uWzFdOwotICAgIGNvbnN0VmFsdWVbMF0uc2V0SUNvbnN0KDEwMSk7Ci0gICAg
VEludGVybUNvbnN0YW50VW5pb24gKm9yaWdpbmFsID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9u
KGNvbnN0VmFsdWUsIHR5cGUpOwotICAgIG9yaWdpbmFsLT5zZXRMaW5lKGdldFRlc3RTb3VyY2VM
b2MoKSk7Ci0gICAgVEludGVybVR5cGVkICpjb3B5VHlwZWQgICAgPSBvcmlnaW5hbC0+ZGVlcENv
cHkoKTsKLSAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqY29weSA9IGNvcHlUeXBlZC0+Z2V0QXND
b25zdGFudFVuaW9uKCk7Ci0gICAgQVNTRVJUX05FKG51bGxwdHIsIGNvcHkpOwotICAgIEFTU0VS
VF9ORShvcmlnaW5hbCwgY29weSk7Ci0gICAgY2hlY2tUZXN0U291cmNlTG9jKGNvcHktPmdldExp
bmUoKSk7Ci0gICAgY2hlY2tUeXBlRXF1YWxXaXRoUXVhbGlmaWVycyhvcmlnaW5hbC0+Z2V0VHlw
ZSgpLCBjb3B5LT5nZXRUeXBlKCkpOwotICAgIEFTU0VSVF9FUSgxMDEsIGNvcHktPmdldElDb25z
dCgwKSk7Ci19Ci0KLS8vIENoZWNrIHRoYXQgdGhlIGRlZXAgY29weSBvZiBhIGJpbmFyeSBub2Rl
IGlzIGFuIGFjdHVhbCBjb3B5IHdpdGggdGhlIHNhbWUgYXR0cmlidXRlcyBhcyB0aGUKLS8vIG9y
aWdpbmFsLiBDaGlsZCBub2RlcyBhbHNvIG5lZWQgdG8gYmUgY29waWVzIHdpdGggdGhlIHNhbWUg
YXR0cmlidXRlcyBhcyB0aGUgb3JpZ2luYWwgY2hpbGRyZW4uCi1URVNUX0YoSW50ZXJtTm9kZVRl
c3QsIERlZXBDb3B5QmluYXJ5Tm9kZSkKLXsKLSAgICBUVHlwZSB0eXBlKEVidEZsb2F0LCBFYnBI
aWdoKTsKLQotICAgIFRJbnRlcm1CaW5hcnkgKm9yaWdpbmFsID0gbmV3IFRJbnRlcm1CaW5hcnko
RU9wQWRkLCBjcmVhdGVUZXN0U3ltYm9sKCksIGNyZWF0ZVRlc3RTeW1ib2woKSk7Ci0gICAgb3Jp
Z2luYWwtPnNldExpbmUoZ2V0VGVzdFNvdXJjZUxvYygpKTsKLSAgICBUSW50ZXJtVHlwZWQgKmNv
cHlUeXBlZCA9IG9yaWdpbmFsLT5kZWVwQ29weSgpOwotICAgIFRJbnRlcm1CaW5hcnkgKmNvcHkg
PSBjb3B5VHlwZWQtPmdldEFzQmluYXJ5Tm9kZSgpOwotICAgIEFTU0VSVF9ORShudWxscHRyLCBj
b3B5KTsKLSAgICBBU1NFUlRfTkUob3JpZ2luYWwsIGNvcHkpOwotICAgIGNoZWNrVGVzdFNvdXJj
ZUxvYyhjb3B5LT5nZXRMaW5lKCkpOwotICAgIGNoZWNrVHlwZUVxdWFsV2l0aFF1YWxpZmllcnMo
b3JpZ2luYWwtPmdldFR5cGUoKSwgY29weS0+Z2V0VHlwZSgpKTsKLQotICAgIGNoZWNrU3ltYm9s
Q29weShvcmlnaW5hbC0+Z2V0TGVmdCgpLCBjb3B5LT5nZXRMZWZ0KCkpOwotICAgIGNoZWNrU3lt
Ym9sQ29weShvcmlnaW5hbC0+Z2V0UmlnaHQoKSwgY29weS0+Z2V0UmlnaHQoKSk7Ci19Ci0KLS8v
IENoZWNrIHRoYXQgdGhlIGRlZXAgY29weSBvZiBhIHVuYXJ5IG5vZGUgaXMgYW4gYWN0dWFsIGNv
cHkgd2l0aCB0aGUgc2FtZSBhdHRyaWJ1dGVzIGFzIHRoZQotLy8gb3JpZ2luYWwuIFRoZSBjaGls
ZCBub2RlIGFsc28gbmVlZHMgdG8gYmUgYSBjb3B5IHdpdGggdGhlIHNhbWUgYXR0cmlidXRlcyBh
cyB0aGUgb3JpZ2luYWwgY2hpbGQuCi1URVNUX0YoSW50ZXJtTm9kZVRlc3QsIERlZXBDb3B5VW5h
cnlOb2RlKQotewotICAgIFRUeXBlIHR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gpOwotCi0gICAgVElu
dGVybVVuYXJ5ICpvcmlnaW5hbCA9IG5ldyBUSW50ZXJtVW5hcnkoRU9wUHJlSW5jcmVtZW50LCBj
cmVhdGVUZXN0U3ltYm9sKCkpOwotICAgIG9yaWdpbmFsLT5zZXRMaW5lKGdldFRlc3RTb3VyY2VM
b2MoKSk7Ci0gICAgVEludGVybVR5cGVkICpjb3B5VHlwZWQgPSBvcmlnaW5hbC0+ZGVlcENvcHko
KTsKLSAgICBUSW50ZXJtVW5hcnkgKmNvcHkgPSBjb3B5VHlwZWQtPmdldEFzVW5hcnlOb2RlKCk7
Ci0gICAgQVNTRVJUX05FKG51bGxwdHIsIGNvcHkpOwotICAgIEFTU0VSVF9ORShvcmlnaW5hbCwg
Y29weSk7Ci0gICAgY2hlY2tUZXN0U291cmNlTG9jKGNvcHktPmdldExpbmUoKSk7Ci0gICAgY2hl
Y2tUeXBlRXF1YWxXaXRoUXVhbGlmaWVycyhvcmlnaW5hbC0+Z2V0VHlwZSgpLCBjb3B5LT5nZXRU
eXBlKCkpOwotCi0gICAgY2hlY2tTeW1ib2xDb3B5KG9yaWdpbmFsLT5nZXRPcGVyYW5kKCksIGNv
cHktPmdldE9wZXJhbmQoKSk7Ci19Ci0KLS8vIENoZWNrIHRoYXQgdGhlIGRlZXAgY29weSBvZiBh
biBhZ2dyZWdhdGUgbm9kZSBpcyBhbiBhY3R1YWwgY29weSB3aXRoIHRoZSBzYW1lIGF0dHJpYnV0
ZXMgYXMgdGhlCi0vLyBvcmlnaW5hbC4gQ2hpbGQgbm9kZXMgYWxzbyBuZWVkIHRvIGJlIGNvcGll
cyB3aXRoIHRoZSBzYW1lIGF0dHJpYnV0ZXMgYXMgdGhlIG9yaWdpbmFsIGNoaWxkcmVuLgotVEVT
VF9GKEludGVybU5vZGVUZXN0LCBEZWVwQ29weUFnZ3JlZ2F0ZU5vZGUpCi17Ci0gICAgVFR5cGUg
dHlwZShFYnRGbG9hdCwgRWJwSGlnaCk7Ci0KLSAgICBUSW50ZXJtQWdncmVnYXRlICpvcmlnaW5h
bCA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcE1peCk7Ci0gICAgb3JpZ2luYWwtPnNldExpbmUo
Z2V0VGVzdFNvdXJjZUxvYygpKTsKLSAgICBUSW50ZXJtU2VxdWVuY2UgKm9yaWdpbmFsU2VxID0g
b3JpZ2luYWwtPmdldFNlcXVlbmNlKCk7Ci0gICAgb3JpZ2luYWxTZXEtPnB1c2hfYmFjayhjcmVh
dGVUZXN0U3ltYm9sKCkpOwotICAgIG9yaWdpbmFsU2VxLT5wdXNoX2JhY2soY3JlYXRlVGVzdFN5
bWJvbCgpKTsKLSAgICBvcmlnaW5hbFNlcS0+cHVzaF9iYWNrKGNyZWF0ZVRlc3RTeW1ib2woKSk7
Ci0gICAgVEludGVybVR5cGVkICpjb3B5VHlwZWQgPSBvcmlnaW5hbC0+ZGVlcENvcHkoKTsKLSAg
ICBUSW50ZXJtQWdncmVnYXRlICpjb3B5ID0gY29weVR5cGVkLT5nZXRBc0FnZ3JlZ2F0ZSgpOwot
ICAgIEFTU0VSVF9ORShudWxscHRyLCBjb3B5KTsKLSAgICBBU1NFUlRfTkUob3JpZ2luYWwsIGNv
cHkpOwotICAgIGNoZWNrVGVzdFNvdXJjZUxvYyhjb3B5LT5nZXRMaW5lKCkpOwotICAgIGNoZWNr
VHlwZUVxdWFsV2l0aFF1YWxpZmllcnMob3JpZ2luYWwtPmdldFR5cGUoKSwgY29weS0+Z2V0VHlw
ZSgpKTsKLQotICAgIEFTU0VSVF9FUShvcmlnaW5hbC0+Z2V0U2VxdWVuY2UoKS0+c2l6ZSgpLCBj
b3B5LT5nZXRTZXF1ZW5jZSgpLT5zaXplKCkpOwotICAgIFRJbnRlcm1TZXF1ZW5jZTo6c2l6ZV90
eXBlIGkgPSAwOwotICAgIGZvciAoYXV0byAqY29weUNoaWxkIDogKmNvcHktPmdldFNlcXVlbmNl
KCkpCi0gICAgewotICAgICAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWxDaGlsZCA9IG9yaWdpbmFs
U2VxLT5hdChpKTsKLSAgICAgICAgY2hlY2tTeW1ib2xDb3B5KG9yaWdpbmFsQ2hpbGQsIGNvcHlD
aGlsZCk7Ci0gICAgICAgICsraTsKLSAgICB9Ci19Ci0KLS8vIENoZWNrIHRoYXQgdGhlIGRlZXAg
Y29weSBvZiBhIHRlcm5hcnkgbm9kZSBpcyBhbiBhY3R1YWwgY29weSB3aXRoIHRoZSBzYW1lIGF0
dHJpYnV0ZXMgYXMgdGhlCi0vLyBvcmlnaW5hbC4gQ2hpbGQgbm9kZXMgYWxzbyBuZWVkIHRvIGJl
IGNvcGllcyB3aXRoIHRoZSBzYW1lIGF0dHJpYnV0ZXMgYXMgdGhlIG9yaWdpbmFsIGNoaWxkcmVu
LgotVEVTVF9GKEludGVybU5vZGVUZXN0LCBEZWVwQ29weVRlcm5hcnlOb2RlKQotewotICAgIFRU
eXBlIHR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gpOwotCi0gICAgVEludGVybVRlcm5hcnkgKm9yaWdp
bmFsID0gbmV3IFRJbnRlcm1UZXJuYXJ5KGNyZWF0ZVRlc3RTeW1ib2woVFR5cGUoRWJ0Qm9vbCwg
RWJwVW5kZWZpbmVkKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZVRlc3RTeW1ib2woKSwgY3JlYXRlVGVzdFN5bWJvbCgpKTsKLSAgICBv
cmlnaW5hbC0+c2V0TGluZShnZXRUZXN0U291cmNlTG9jKCkpOwotICAgIFRJbnRlcm1UeXBlZCAq
Y29weVR5cGVkID0gb3JpZ2luYWwtPmRlZXBDb3B5KCk7Ci0gICAgVEludGVybVRlcm5hcnkgKmNv
cHkgICAgPSBjb3B5VHlwZWQtPmdldEFzVGVybmFyeU5vZGUoKTsKLSAgICBBU1NFUlRfTkUobnVs
bHB0ciwgY29weSk7Ci0gICAgQVNTRVJUX05FKG9yaWdpbmFsLCBjb3B5KTsKLSAgICBjaGVja1Rl
c3RTb3VyY2VMb2MoY29weS0+Z2V0TGluZSgpKTsKLSAgICBjaGVja1R5cGVFcXVhbFdpdGhRdWFs
aWZpZXJzKG9yaWdpbmFsLT5nZXRUeXBlKCksIGNvcHktPmdldFR5cGUoKSk7Ci0KLSAgICBjaGVj
a1N5bWJvbENvcHkob3JpZ2luYWwtPmdldENvbmRpdGlvbigpLCBjb3B5LT5nZXRDb25kaXRpb24o
KSk7Ci0gICAgY2hlY2tTeW1ib2xDb3B5KG9yaWdpbmFsLT5nZXRUcnVlRXhwcmVzc2lvbigpLCBj
b3B5LT5nZXRUcnVlRXhwcmVzc2lvbigpKTsKLSAgICBjaGVja1N5bWJvbENvcHkob3JpZ2luYWwt
PmdldEZhbHNlRXhwcmVzc2lvbigpLCBjb3B5LT5nZXRGYWxzZUV4cHJlc3Npb24oKSk7Ci19Ci0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90
ZXN0cy9NYWxmb3JtZWRTaGFkZXJfdGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvTWFsZm9ybWVkU2hhZGVyX3Rlc3QuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDk4OTllNjU1YzQzYTUxYTE5YzIyNzk2MzgwMDhlM2Vm
YTg2Y2JhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9NYWxmb3JtZWRT
aGFkZXJfdGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNTg2ICswLDAgQEAKLS8vCi0vLyBD
b3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
Ci0vLwotLy8gTWFsZm9ybWVkU2hhZGVyX3Rlc3QuY3BwOgotLy8gICBUZXN0cyB0aGF0IG1hbGZv
cm1lZCBzaGFkZXJzIGZhaWwgY29tcGlsYXRpb24uCi0vLwotCi0jaW5jbHVkZSAiYW5nbGVfZ2wu
aCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFu
Zy5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuaCIKLQot
Y2xhc3MgTWFsZm9ybWVkU2hhZGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Ci17Ci0gIHB1
YmxpYzoKLSAgICBNYWxmb3JtZWRTaGFkZXJUZXN0KCkgOiBtRXh0cmFDb21waWxlT3B0aW9ucygw
KSB7fQotCi0gIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQotICAgIHsKLSAg
ICAgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKLSAgICAgICAgU2hJbml0QnVpbHRJ
blJlc291cmNlcygmcmVzb3VyY2VzKTsKLQotICAgICAgICBtVHJhbnNsYXRvciA9IG5ldyBUcmFu
c2xhdG9yRVNTTChHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpOwotICAgICAgICBB
U1NFUlRfVFJVRShtVHJhbnNsYXRvci0+SW5pdChyZXNvdXJjZXMpKTsKLSAgICB9Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgVGVhckRvd24oKQotICAgIHsKLSAgICAgICAgZGVsZXRlIG1UcmFuc2xhdG9y
OwotICAgIH0KLQotICAgIC8vIFJldHVybiB0cnVlIHdoZW4gY29tcGlsYXRpb24gc3VjY2VlZHMK
LSAgICBib29sIGNvbXBpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIHNoYWRlclN0cmluZykKLSAgICB7
Ci0gICAgICAgIGNvbnN0IGNoYXIgKnNoYWRlclN0cmluZ3NbXSA9IHsgc2hhZGVyU3RyaW5nLmNf
c3RyKCkgfTsKLSAgICAgICAgYm9vbCBjb21waWxhdGlvblN1Y2Nlc3MgPQotICAgICAgICAgICAg
bVRyYW5zbGF0b3ItPmNvbXBpbGUoc2hhZGVyU3RyaW5ncywgMSwgU0hfSU5URVJNRURJQVRFX1RS
RUUgfCBtRXh0cmFDb21waWxlT3B0aW9ucyk7Ci0gICAgICAgIFRJbmZvU2luayAmaW5mb1Npbmsg
PSBtVHJhbnNsYXRvci0+Z2V0SW5mb1NpbmsoKTsKLSAgICAgICAgbUluZm9Mb2cgPSBpbmZvU2lu
ay5pbmZvLmNfc3RyKCk7Ci0gICAgICAgIHJldHVybiBjb21waWxhdGlvblN1Y2Nlc3M7Ci0gICAg
fQotCi0gICAgYm9vbCBoYXNXYXJuaW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBt
SW5mb0xvZy5maW5kKCJXQVJOSU5HOiAiKSAhPSBzdGQ6OnN0cmluZzo6bnBvczsKLSAgICB9Ci0K
LSAgcHJvdGVjdGVkOgotICAgIHN0ZDo6c3RyaW5nIG1JbmZvTG9nOwotICAgIFRyYW5zbGF0b3JF
U1NMICptVHJhbnNsYXRvcjsKLSAgICBTaENvbXBpbGVPcHRpb25zIG1FeHRyYUNvbXBpbGVPcHRp
b25zOwotfTsKLQotY2xhc3MgTWFsZm9ybWVkVmVydGV4U2hhZGVyVGVzdCA6IHB1YmxpYyBNYWxm
b3JtZWRTaGFkZXJUZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICBNYWxmb3JtZWRWZXJ0ZXhTaGFkZXJU
ZXN0KCkge30KLQotICBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOwotICAgICAgICBTaEluaXRC
dWlsdEluUmVzb3VyY2VzKCZyZXNvdXJjZXMpOwotCi0gICAgICAgIG1UcmFuc2xhdG9yID0gbmV3
IFRyYW5zbGF0b3JFU1NMKEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpOwotICAgICAg
ICBBU1NFUlRfVFJVRShtVHJhbnNsYXRvci0+SW5pdChyZXNvdXJjZXMpKTsKLSAgICB9Ci19Owot
Ci1jbGFzcyBNYWxmb3JtZWRXZWJHTDJTaGFkZXJUZXN0IDogcHVibGljIE1hbGZvcm1lZFNoYWRl
clRlc3QKLXsKLSAgcHVibGljOgotICAgIE1hbGZvcm1lZFdlYkdMMlNoYWRlclRlc3QoKSB7fQot
Ci0gIHByb3RlY3RlZDoKLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXM7Ci0gICAgICAgIFNoSW5pdEJ1aWx0SW5SZXNv
dXJjZXMoJnJlc291cmNlcyk7Ci0KLSAgICAgICAgbVRyYW5zbGF0b3IgPSBuZXcgVHJhbnNsYXRv
ckVTU0woR0xfRlJBR01FTlRfU0hBREVSLCBTSF9XRUJHTDJfU1BFQyk7Ci0gICAgICAgIEFTU0VS
VF9UUlVFKG1UcmFuc2xhdG9yLT5Jbml0KHJlc291cmNlcykpOwotICAgIH0KLX07Ci0KLWNsYXNz
IE1hbGZvcm1lZFdlYkdMMVNoYWRlclRlc3QgOiBwdWJsaWMgTWFsZm9ybWVkU2hhZGVyVGVzdAot
ewotICBwdWJsaWM6Ci0gICAgTWFsZm9ybWVkV2ViR0wxU2hhZGVyVGVzdCgpIHt9Ci0KLSAgcHJv
dGVjdGVkOgotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgU2hCdWls
dEluUmVzb3VyY2VzIHJlc291cmNlczsKLSAgICAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygm
cmVzb3VyY2VzKTsKLQotICAgICAgICBtVHJhbnNsYXRvciA9IG5ldyBUcmFuc2xhdG9yRVNTTChH
TF9GUkFHTUVOVF9TSEFERVIsIFNIX1dFQkdMX1NQRUMpOwotICAgICAgICBBU1NFUlRfVFJVRSht
VHJhbnNsYXRvci0+SW5pdChyZXNvdXJjZXMpKTsKLSAgICB9Ci19OwotCi1jbGFzcyBNYWxmb3Jt
ZWRWZXJ0ZXhTaGFkZXJHTEVTMzFUZXN0IDogcHVibGljIE1hbGZvcm1lZFNoYWRlclRlc3QKLXsK
LSAgcHVibGljOgotICAgIE1hbGZvcm1lZFZlcnRleFNoYWRlckdMRVMzMVRlc3QoKSB7fQotCi0g
IHByaXZhdGU6Ci0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBTaEJ1
aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOwotICAgICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2Vz
KCZyZXNvdXJjZXMpOwotICAgICAgICBtVHJhbnNsYXRvciA9IG5ldyBUcmFuc2xhdG9yRVNTTChH
TF9WRVJURVhfU0hBREVSLCBTSF9HTEVTM18xX1NQRUMpOwotICAgICAgICBBU1NFUlRfVFJVRSht
VHJhbnNsYXRvci0+SW5pdChyZXNvdXJjZXMpKTsKLSAgICB9Ci19OwotCi1jbGFzcyBNYWxmb3Jt
ZWRGcmFnbWVudFNoYWRlckdMRVMzMVRlc3QgOiBwdWJsaWMgTWFsZm9ybWVkU2hhZGVyVGVzdAot
ewotICBwdWJsaWM6Ci0gICAgTWFsZm9ybWVkRnJhZ21lbnRTaGFkZXJHTEVTMzFUZXN0KCkge30K
LQotICBwcml2YXRlOgotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAg
U2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKLSAgICAgICAgU2hJbml0QnVpbHRJblJlc291
cmNlcygmcmVzb3VyY2VzKTsKLSAgICAgICAgbVRyYW5zbGF0b3IgPSBuZXcgVHJhbnNsYXRvckVT
U0woR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM18xX1NQRUMpOwotICAgICAgICBBU1NFUlRf
VFJVRShtVHJhbnNsYXRvci0+SW5pdChyZXNvdXJjZXMpKTsKLSAgICB9Ci19OwotCi1jbGFzcyBN
YWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCA6IHB1YmxpYyBNYWxmb3JtZWRTaGFkZXJUZXN0Ci17
Ci0gIHB1YmxpYzoKLSAgICBNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCgpIHt9Ci0KLSAgcHJp
dmF0ZToKLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFNoQnVpbHRJ
blJlc291cmNlcyByZXNvdXJjZXM7Ci0gICAgICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJl
c291cmNlcyk7Ci0gICAgICAgIG1UcmFuc2xhdG9yID0gbmV3IFRyYW5zbGF0b3JFU1NMKEdMX0NP
TVBVVEVfU0hBREVSLCBTSF9HTEVTM18xX1NQRUMpOwotICAgICAgICBBU1NFUlRfVFJVRShtVHJh
bnNsYXRvci0+SW5pdChyZXNvdXJjZXMpKTsKLSAgICB9Ci19OwotCi1jbGFzcyBVbnJvbGxGb3JM
b29wc1Rlc3QgOiBwdWJsaWMgTWFsZm9ybWVkU2hhZGVyVGVzdAotewotICBwdWJsaWM6Ci0gICAg
VW5yb2xsRm9yTG9vcHNUZXN0KCkgeyBtRXh0cmFDb21waWxlT3B0aW9ucyA9IFNIX1VOUk9MTF9G
T1JfTE9PUF9XSVRIX0lOVEVHRVJfSU5ERVg7IH0KLX07Ci0KLS8vIFRoaXMgaXMgYSB0ZXN0IGZv
ciBhIGJ1ZyB0aGF0IHVzZWQgdG8gZXhpc3QgaW4gQU5HTEU6Ci0vLyBDYWxsaW5nIGEgZnVuY3Rp
b24gd2l0aCBhbGwgcGFyYW1ldGVycyBtaXNzaW5nIHNob3VsZCBub3Qgc3VjY2VlZC4KLVRFU1Rf
RihNYWxmb3JtZWRTaGFkZXJUZXN0LCBGdW5jdGlvblBhcmFtZXRlck1pc21hdGNoKQotewotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJmbG9hdCBmdW4oZmxvYXQgYSkge1xuIgotICAgICAg
ICAiICAgcmV0dXJuIGEgKiAyLjA7XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iCi0gICAgICAgICIgICBmbG9hdCBmZiA9IGZ1bigpO1xuIgotICAgICAgICAiICAg
Z2xfRnJhZ0NvbG9yID0gdmVjNChmZik7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21w
aWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAg
fQotfQotCi0vLyBGdW5jdGlvbnMgY2FuJ3QgYmUgcmVkZWNsYXJlZCBhcyB2YXJpYWJsZXMgaW4g
dGhlIHNhbWUgc2NvcGUgKEVTU0wgMS4wMCBzZWN0aW9uIDQuMi43KQotVEVTVF9GKE1hbGZvcm1l
ZFNoYWRlclRlc3QsIFJlZGVjbGFyaW5nRnVuY3Rpb25Bc1ZhcmlhYmxlKQotewotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCi0gICAgICAgICJmbG9hdCBmdW4oZmxvYXQgYSkge1xuIgotICAgICAgICAiICAg
cmV0dXJuIGEgKiAyLjA7XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJmbG9hdCBmdW47XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmlu
ZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVk
ZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBGdW5j
dGlvbnMgY2FuJ3QgYmUgcmVkZWNsYXJlZCBhcyBzdHJ1Y3RzIGluIHRoZSBzYW1lIHNjb3BlIChF
U1NMIDEuMDAgc2VjdGlvbiA0LjIuNykKLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBSZWRl
Y2xhcmluZ0Z1bmN0aW9uQXNTdHJ1Y3QpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRl
clN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAg
ImZsb2F0IGZ1bihmbG9hdCBhKSB7XG4iCi0gICAgICAgICIgICByZXR1cm4gYSAqIDIuMDtcbiIK
LSAgICAgICAgIn1cbiIKLSAgICAgICAgInN0cnVjdCBmdW4geyBmbG9hdCBhOyB9O1xuIgotICAg
ICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgw
LjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQot
ICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBl
eHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gRnVuY3Rpb25z
IGNhbid0IGJlIHJlZGVjbGFyZWQgd2l0aCBkaWZmZXJlbnQgcXVhbGlmaWVycyAoRVNTTCAxLjAw
IHNlY3Rpb24gNi4xLjApCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgUmVkZWNsYXJpbmdG
dW5jdGlvbldpdGhEaWZmZXJlbnRRdWFsaWZpZXJzKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0g
ICAgICAgICJmbG9hdCBmdW4ob3V0IGZsb2F0IGEpO1xuIgotICAgICAgICAiZmxvYXQgZnVuKGZs
b2F0IGEpIHtcbiIKLSAgICAgICAgIiAgIHJldHVybiBhICogMi4wO1xuIgotICAgICAgICAifVxu
IgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNCgwLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJp
bmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2Vl
ZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gQXNz
aWdubWVudCBhbmQgZXF1YWxpdHkgYXJlIHVuZGVmaW5lZCBmb3Igc3RydWN0dXJlcyBjb250YWlu
aW5nIGFycmF5cyAoRVNTTCAxLjAwIHNlY3Rpb24gNS43KQotVEVTVF9GKE1hbGZvcm1lZFNoYWRl
clRlc3QsIENvbXBhcmVTdHJ1Y3RzQ29udGFpbmluZ0FycmF5cykKLXsKLSAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgotICAgICAgICAic3RydWN0IHMgeyBmbG9hdCBhWzNdOyB9O1xuIgotICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgotICAgICAgICAiICAgcyBhO1xuIgotICAgICAgICAiICAgcyBiO1xuIgot
ICAgICAgICAiICAgYm9vbCBjID0gKGEgPT0gYik7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KGMgPyAxLjAgOiAwLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29t
cGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29t
cGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAg
IH0KLX0KLQotLy8gQXNzaWdubWVudCBhbmQgZXF1YWxpdHkgYXJlIHVuZGVmaW5lZCBmb3Igc3Ry
dWN0dXJlcyBjb250YWluaW5nIGFycmF5cyAoRVNTTCAxLjAwIHNlY3Rpb24gNS43KQotVEVTVF9G
KE1hbGZvcm1lZFNoYWRlclRlc3QsIEFzc2lnblN0cnVjdHNDb250YWluaW5nQXJyYXlzKQotewot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJzdHJ1Y3QgcyB7IGZsb2F0IGFbM107IH07XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBzIGE7XG4iCi0gICAgICAg
ICIgICBzIGI7XG4iCi0gICAgICAgICIgICBiLmFbMF0gPSAwLjA7XG4iCi0gICAgICAgICIgICBh
ID0gYjtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYS5hWzBdKTtcbiIKLSAg
ICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAg
ICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZh
aWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEFzc2lnbm1lbnQgYW5kIGVxdWFs
aXR5IGFyZSB1bmRlZmluZWQgZm9yIHN0cnVjdHVyZXMgY29udGFpbmluZyBzYW1wbGVycyAoRVNT
TCAxLjAwIHNlY3Rpb25zIDUuNyBhbmQgNS45KQotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3Qs
IENvbXBhcmVTdHJ1Y3RzQ29udGFpbmluZ1NhbXBsZXJzKQotewotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
Ci0gICAgICAgICJzdHJ1Y3QgcyB7IHNhbXBsZXIyRCBmb287IH07XG4iCi0gICAgICAgICJ1bmlm
b3JtIHMgYTtcbiIKLSAgICAgICAgInVuaWZvcm0gcyBiO1xuIgotICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgotICAgICAgICAiICAgYm9vbCBjID0gKGEgPT0gYik7XG4iCi0gICAgICAgICIgICBn
bF9GcmFnQ29sb3IgPSB2ZWM0KGMgPyAxLjAgOiAwLjApO1xuIgotICAgICAgICAifVxuIjsKLSAg
ICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJT
aGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZv
TG9nOwotICAgIH0KLX0KLQotLy8gU2FtcGxlcnMgYXJlIG5vdCBhbGxvd2VkIGFzIGwtdmFsdWVz
IChFU1NMIDMuMDAgc2VjdGlvbiA0LjEuNyksIG91ciBpbnRlcnByZXRhdGlvbiBpcyB0aGF0IHRo
aXMKLS8vIGV4dGVuZHMgdG8gc3RydWN0cyBjb250YWluaW5nIHNhbXBsZXJzLiBFU1NMIDEuMDAg
c3BlYyBpcyBjbGVhcmVyIGFib3V0IHRoaXMuCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwg
QXNzaWduU3RydWN0c0NvbnRhaW5pbmdTYW1wbGVycykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJzdHJ1Y3QgcyB7IHNhbXBsZXIy
RCBmb287IH07XG4iCi0gICAgICAgICJ1bmlmb3JtIHMgYTtcbiIKLSAgICAgICAgIm91dCB2ZWM0
IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAg
IHMgYjtcbiIKLSAgICAgICAgIiAgIGIgPSBhO1xuIgotICAgICAgICAiICAgbXlfRnJhZ0NvbG9y
ID0gdmVjNCgxLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJT
dHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3Vj
Y2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8g
VGhpcyBpcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgYSBwYXJ0aWN1bGFyIGJ1ZyB0aGF0IHdhcyBp
biBBTkdMRS4KLS8vIEl0IGFsc28gdmVyaWZpZXMgdGhhdCBFU1NMMyBmdW5jdGlvbmFsaXR5IGRv
ZXNuJ3QgbGVhayB0byBFU1NMMS4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBBcnJheVdp
dGhOb1NpemVJbkluaXRpYWxpemVyTGlzdCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAg
ICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZmxvYXQgYVsyXSwgYltdO1xuIgotICAg
ICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAgICAgICAifVxuIjsKLSAg
ICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJT
aGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZv
TG9nOwotICAgIH0KLX0KLQotLy8gQ29uc3QgdmFyaWFibGVzIG5lZWQgYW4gaW5pdGlhbGl6ZXIu
Ci1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgQ29uc3RWYXJOb3RJbml0aWFsaXplZCkKLXsK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9u
IDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAg
ICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0g
ICAgICAgICIgICBjb25zdCBmbG9hdCBhO1xuIgotICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0g
dmVjNCgxLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJp
bmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2Vl
ZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gQ29u
c3QgdmFyaWFibGVzIG5lZWQgYW4gaW5pdGlhbGl6ZXIuIEluIEVTU0wxIGNvbnN0IHN0cnVjdHMg
Y29udGFpbmluZwotLy8gYXJyYXlzIGFyZSBub3QgYWxsb3dlZCBhdCBhbGwgc2luY2UgaXQncyBp
bXBvc3NpYmxlIHRvIGluaXRpYWxpemUgdGhlbS4KLS8vIEV2ZW4gdGhvdWdoIHRoaXMgdGVzdCBp
cyBmb3IgRVNTTDMgdGhlIG9ubHkgdGhpbmcgdGhhdCdzIGNyaXRpY2FsIGZvcgotLy8gRVNTTDEg
aXMgdGhlIG5vbi1pbml0aWFsaXphdGlvbiBjaGVjayB0aGF0J3MgdXNlZCBmb3IgYm90aCBsYW5n
dWFnZSB2ZXJzaW9ucy4KLS8vIFdoZXRoZXIgRVNTTDEgY29tcGlsYXRpb24gZ2VuZXJhdGVzIHRo
ZSBtb3N0IGhlbHBmdWwgZXJyb3IgbWVzc2FnZXMgaXMgYQotLy8gc2Vjb25kYXJ5IGNvbmNlcm4u
Ci1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgQ29uc3RTdHJ1Y3ROb3RJbml0aWFsaXplZCkK
LXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAg
ICAgICJzdHJ1Y3QgUyB7XG4iCi0gICAgICAgICIgICBmbG9hdCBhWzNdO1xuIgotICAgICAgICAi
fTtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGNvbnN0IFMgYjtcbiIKLSAgICAgICAgIiAgIG15X0Zy
YWdDb2xvciA9IHZlYzQoMS4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUo
c2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0
aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19
Ci0KLS8vIENvbnN0IHZhcmlhYmxlcyBuZWVkIGFuIGluaXRpYWxpemVyLiBJbiBFU1NMMSBjb25z
dCBhcnJheXMgYXJlIG5vdCBhbGxvd2VkCi0vLyBhdCBhbGwgc2luY2UgaXQncyBpbXBvc3NpYmxl
IHRvIGluaXRpYWxpemUgdGhlbS4KLS8vIEV2ZW4gdGhvdWdoIHRoaXMgdGVzdCBpcyBmb3IgRVNT
TDMgdGhlIG9ubHkgdGhpbmcgdGhhdCdzIGNyaXRpY2FsIGZvcgotLy8gRVNTTDEgaXMgdGhlIG5v
bi1pbml0aWFsaXphdGlvbiBjaGVjayB0aGF0J3MgdXNlZCBmb3IgYm90aCBsYW5ndWFnZSB2ZXJz
aW9ucy4KLS8vIFdoZXRoZXIgRVNTTDEgY29tcGlsYXRpb24gZ2VuZXJhdGVzIHRoZSBtb3N0IGhl
bHBmdWwgZXJyb3IgbWVzc2FnZXMgaXMgYQotLy8gc2Vjb25kYXJ5IGNvbmNlcm4uCi1URVNUX0Yo
TWFsZm9ybWVkU2hhZGVyVGVzdCwgQ29uc3RBcnJheU5vdEluaXRpYWxpemVkKQotewotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2
ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAg
IiAgIGNvbnN0IGZsb2F0IGFbM107XG4iCi0gICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0
KDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykp
Ci0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQs
IGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBCbG9jayBs
YXlvdXQgcXVhbGlmaWVycyBjYW4ndCBiZSB1c2VkIG9uIG5vbi1ibG9jayB1bmlmb3JtcyAoRVNT
TCAzLjAwIHNlY3Rpb24gNC4zLjguMykKLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBCbG9j
a0xheW91dFF1YWxpZmllck9uUmVndWxhclVuaWZvcm0pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAibGF5b3V0KHBhY2tlZCkgdW5p
Zm9ybSBtYXQyIHg7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEu
MCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0g
ICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4
cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBCbG9jayBsYXlv
dXQgcXVhbGlmaWVycyBjYW4ndCBiZSB1c2VkIG9uIG5vbi1ibG9jayB1bmlmb3JtcyAoRVNTTCAz
LjAwIHNlY3Rpb24gNC4zLjguMykKLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBCbG9ja0xh
eW91dFF1YWxpZmllck9uVW5pZm9ybVdpdGhFbXB0eURlY2wpCi17Ci0gICAgLy8gWWVzLCB0aGUg
Y29tbWEgaW4gdGhlIGRlY2xhcmF0aW9uIGJlbG93IGlzIG5vdCBhIHR5cG8uCi0gICAgLy8gRW1w
dHkgZGVjbGFyYXRpb25zIGFyZSBhbGxvd2VkIGluIEdMU0wuCi0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAibGF5b3V0KHBhY2tlZCkgdW5p
Zm9ybSBtYXQyLCB4O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAg
ICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgx
LjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQot
ICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBl
eHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gQXJyYXlzIG9m
IGFycmF5cyBhcmUgbm90IGFsbG93ZWQgKEVTU0wgMy4wMCBzZWN0aW9uIDQuMS45KQotVEVTVF9G
KE1hbGZvcm1lZFNoYWRlclRlc3QsIEFycmF5c09mQXJyYXlzMSkKLXsKLSAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9G
cmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBmbG9h
dFs1XSBhWzNdO1xuIgotICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgot
ICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAg
ICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3Rpbmcg
ZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gQXJyYXlzIG9mIGFycmF5cyBh
cmUgbm90IGFsbG93ZWQgKEVTU0wgMy4wMCBzZWN0aW9uIDQuMS45KQotVEVTVF9GKE1hbGZvcm1l
ZFNoYWRlclRlc3QsIEFycmF5c09mQXJyYXlzMikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7
XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBmbG9hdFsyXSBhLCBi
WzNdO1xuIgotICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAgICAg
ICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAg
RkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVy
ZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gSW1wbGljaXRseSBzaXplZCBhcnJheXMg
bmVlZCB0byBiZSBpbml0aWFsaXplZCAoRVNTTCAzLjAwIHNlY3Rpb24gNC4xLjkpCi1URVNUX0Yo
TWFsZm9ybWVkU2hhZGVyVGVzdCwgVW5pbml0aWFsaXplZEltcGxpY2l0QXJyYXlTaXplKQotewot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24g
MzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAg
Im91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAg
ICAgICAgIiAgIGZsb2F0W10gYTtcbiIKLSAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQo
MS4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkK
LSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwg
ZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEFuIG9wZXJh
dG9yIGNhbiBvbmx5IGZvcm0gYSBjb25zdGFudCBleHByZXNzaW9uIGlmIGFsbCB0aGUgb3BlcmFu
ZHMgYXJlIGNvbnN0YW50IGV4cHJlc3Npb25zCi0vLyAtIGV2ZW4gb3BlcmFuZHMgb2YgdGVybmFy
eSBvcGVyYXRvciB0aGF0IGFyZSBuZXZlciBldmFsdWF0ZWQuIChFU1NMIDMuMDAgc2VjdGlvbiA0
LjMuMykKLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBUZXJuYXJ5T3BlcmF0b3JOb3RDb25z
dGFudEV4cHJlc3Npb24pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9
Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAi
dW5pZm9ybSBib29sIHU7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIg
ICBjb25zdCBib29sIGEgPSB0cnVlID8gdHJ1ZSA6IHU7XG4iCi0gICAgICAgICIgICBteV9GcmFn
Q29sb3IgPSB2ZWM0KDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNo
YWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlv
biBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQot
Ci0vLyBUZXJuYXJ5IG9wZXJhdG9yIGNhbid0IG9wZXJhdGUgb24gYXJyYXlzIChFU1NMIDMuMDAg
c2VjdGlvbiA1LjcpCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgVGVybmFyeU9wZXJhdG9y
T25BcnJheXMpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBt
YWluKCkge1xuIgotICAgICAgICAiICAgZmxvYXRbMV0gYSA9IGZsb2F0WzFdKDAuMCk7XG4iCi0g
ICAgICAgICIgICBmbG9hdFsxXSBiID0gZmxvYXRbMV0oMS4wKTtcbiIKLSAgICAgICAgIiAgIGZs
b2F0WzFdIGMgPSB0cnVlID8gYSA6IGI7XG4iCi0gICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2
ZWM0KDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmlu
ZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVk
ZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBUZXJu
YXJ5IG9wZXJhdG9yIGNhbid0IG9wZXJhdGUgb24gc3RydWN0cyAoRVNTTCAzLjAwIHNlY3Rpb24g
NS43KQotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFRlcm5hcnlPcGVyYXRvck9uU3RydWN0
cykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2
ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0g
ICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJzdHJ1Y3QgUyB7IGZs
b2F0IGZvbzsgfTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIFMg
YSA9IFMoMC4wKTtcbiIKLSAgICAgICAgIiAgIFMgYiA9IFMoMS4wKTtcbiIKLSAgICAgICAgIiAg
IFMgYyA9IHRydWUgPyBhIDogYjtcbiIKLSAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQo
MS4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkK
LSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwg
ZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEFycmF5IGxl
bmd0aCgpIHJldHVybnMgYSBjb25zdGFudCBzaWduZWQgaW50ZWdyYWwgZXhwcmVzc2lvbiAoRVNT
TCAzLjAwIHNlY3Rpb24gNC4xLjkpCi0vLyBBc3NpZ25pbmcgaXQgdG8gdW5zaWduZWQgc2hvdWxk
IHJlc3VsdCBpbiBhbiBlcnJvci4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBBc3NpZ25B
cnJheUxlbmd0aFRvVW5zaWduZWQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAg
ICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgaW50WzFdIGFycjtcbiIKLSAgICAg
ICAgIiAgIHVpbnQgbCA9IGFyci5sZW5ndGgoKTtcbiIKLSAgICAgICAgIiAgIG15X0ZyYWdDb2xv
ciA9IHZlYzQoZmxvYXQobCkpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShz
aGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRp
b24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0K
LQotLy8gR2xvYmFsIHZhcmlhYmxlIGluaXRpYWxpemVycyBuZWVkIHRvIGJlIGNvbnN0YW50IGV4
cHJlc3Npb25zIChFU1NMIDEuMDAgc2VjdGlvbiA0LjMpCi0vLyBJbml0aWFsaXppbmcgd2l0aCBh
IHZhcnlpbmcgc2hvdWxkIGJlIGFuIGVycm9yLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3Qs
IEFzc2lnblZhcnlpbmdUb0dsb2JhbCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAi
dmFyeWluZyBmbG9hdCBhO1xuIgotICAgICAgICAiZmxvYXQgYiA9IGEgKiAyLjA7XG4iCi0gICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGIp
O1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAg
IHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBl
Y3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gR2xvYmFsIHZhcmlh
YmxlIGluaXRpYWxpemVycyBuZWVkIHRvIGJlIGNvbnN0YW50IGV4cHJlc3Npb25zIChFU1NMIDMu
MDAgc2VjdGlvbiA0LjMpCi0vLyBJbml0aWFsaXppbmcgd2l0aCBhbiB1bmlmb3JtIHNob3VsZCBi
ZSBhbiBlcnJvci4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBBc3NpZ25Vbmlmb3JtVG9H
bG9iYWxFU1NMMykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IGE7XG4iCi0gICAgICAgICJmbG9hdCBiID0g
YSAqIDIuMDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAg
InZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQoYik7XG4i
Ci0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewot
ICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGlu
ZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBHbG9iYWwgdmFyaWFibGUg
aW5pdGlhbGl6ZXJzIG5lZWQgdG8gYmUgY29uc3RhbnQgZXhwcmVzc2lvbnMgKEVTU0wgMS4wMCBz
ZWN0aW9uIDQuMykKLS8vIEluaXRpYWxpemluZyB3aXRoIGFuIHVuaWZvcm0gc2hvdWxkIGdlbmVy
YXRlIGEgd2FybmluZwotLy8gKHdlIGRvbid0IGdlbmVyYXRlIGFuIGVycm9yIG9uIEVTU0wgMS4w
MCBiZWNhdXNlIG9mIGxlZ2FjeSBjb21wYXRpYmlsaXR5KQotVEVTVF9GKE1hbGZvcm1lZFNoYWRl
clRlc3QsIEFzc2lnblVuaWZvcm1Ub0dsb2JhbEVTU0wxKQotewotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
Ci0gICAgICAgICJ1bmlmb3JtIGZsb2F0IGE7XG4iCi0gICAgICAgICJmbG9hdCBiID0gYSAqIDIu
MDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xv
ciA9IHZlYzQoYik7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0
cmluZykpCi0gICAgewotICAgICAgICBpZiAoIWhhc1dhcm5pbmcoKSkKLSAgICAgICAgewotICAg
ICAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkIHdpdGhvdXQg
d2FybmluZ3MsIGV4cGVjdGluZyB3YXJuaW5nICIgPDwgbUluZm9Mb2c7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRp
b24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyB3aXRoIHdhcm5pbmcgIiA8PCBtSW5mb0xvZzsK
LSAgICB9Ci19Ci0KLS8vIEdsb2JhbCB2YXJpYWJsZSBpbml0aWFsaXplcnMgbmVlZCB0byBiZSBj
b25zdGFudCBleHByZXNzaW9ucyAoRVNTTCAxLjAwIHNlY3Rpb24gNC4zKQotLy8gSW5pdGlhbGl6
aW5nIHdpdGggYW4gdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGNhbGwgc2hvdWxkIGJlIGFuIGVycm9y
LgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEFzc2lnbkZ1bmN0aW9uQ2FsbFRvR2xvYmFs
KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJmbG9hdCBmb28oKSB7IHJldHVybiAx
LjA7IH1cbiIKLSAgICAgICAgImZsb2F0IGIgPSBmb28oKTtcbiIKLSAgICAgICAgInZvaWQgbWFp
bigpIHtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYik7XG4iCi0gICAgICAg
ICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJl
ICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBHbG9iYWwgdmFyaWFibGUgaW5pdGlhbGl6
ZXJzIG5lZWQgdG8gYmUgY29uc3RhbnQgZXhwcmVzc2lvbnMgKEVTU0wgMS4wMCBzZWN0aW9uIDQu
MykKLS8vIEluaXRpYWxpemluZyB3aXRoIGFuIGFzc2lnbm1lbnQgdG8gYW5vdGhlciBnbG9iYWwg
c2hvdWxkIGJlIGFuIGVycm9yLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEFzc2lnbkFz
c2lnbm1lbnRUb0dsb2JhbCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5n
ID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAiZmxvYXQg
YyA9IDEuMDtcbiIKLSAgICAgICAgImZsb2F0IGIgPSAoYyA9IDAuMCk7XG4iCi0gICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGIpO1xuIgot
ICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAg
ICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3Rpbmcg
ZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gR2xvYmFsIHZhcmlhYmxlIGlu
aXRpYWxpemVycyBuZWVkIHRvIGJlIGNvbnN0YW50IGV4cHJlc3Npb25zIChFU1NMIDEuMDAgc2Vj
dGlvbiA0LjMpCi0vLyBJbml0aWFsaXppbmcgd2l0aCBpbmNyZW1lbnRpbmcgYW5vdGhlciBnbG9i
YWwgc2hvdWxkIGJlIGFuIGVycm9yLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEFzc2ln
bkluY3JlbWVudFRvR2xvYmFsKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJmbG9h
dCBjID0gMS4wO1xuIgotICAgICAgICAiZmxvYXQgYiA9IChjKyspO1xuIgotICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiKTtcbiIKLSAg
ICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAg
ICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZh
aWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEdsb2JhbCB2YXJpYWJsZSBpbml0
aWFsaXplcnMgbmVlZCB0byBiZSBjb25zdGFudCBleHByZXNzaW9ucyAoRVNTTCAxLjAwIHNlY3Rp
b24gNC4zKQotLy8gSW5pdGlhbGl6aW5nIHdpdGggYSB0ZXh0dXJlIGxvb2t1cCBmdW5jdGlvbiBj
YWxsIHNob3VsZCBiZSBhbiBlcnJvci4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBBc3Np
Z25UZXh0dXJlMkRUb0dsb2JhbCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5p
Zm9ybSBtZWRpdW1wIHNhbXBsZXIyRCBzO1xuIgotICAgICAgICAiZmxvYXQgYiA9IHRleHR1cmUy
RChzLCB2ZWMyKDAuNSwgMC41KSkueDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAg
ICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYik7XG4iCi0gICAgICAgICJ9XG4iOwotICAg
IGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNo
YWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9M
b2c7Ci0gICAgfQotfQotCi0vLyBHbG9iYWwgdmFyaWFibGUgaW5pdGlhbGl6ZXJzIG5lZWQgdG8g
YmUgY29uc3RhbnQgZXhwcmVzc2lvbnMgKEVTU0wgMy4wMCBzZWN0aW9uIDQuMykKLS8vIEluaXRp
YWxpemluZyB3aXRoIGEgbm9uLWNvbnN0YW50IGdsb2JhbCBzaG91bGQgYmUgYW4gZXJyb3IuCi1U
RVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgQXNzaWduTm9uQ29uc3RHbG9iYWxUb0dsb2JhbCkK
LXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAg
ICAgICJmbG9hdCBhID0gMS4wO1xuIgotICAgICAgICAiZmxvYXQgYiA9IGEgKiAyLjA7XG4iCi0g
ICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCi0gICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGIpO1xuIgotICAgICAgICAifVxu
IjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgp
IDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8
IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gR2xvYmFsIHZhcmlhYmxlIGluaXRpYWxpemVycyBu
ZWVkIHRvIGJlIGNvbnN0YW50IGV4cHJlc3Npb25zIChFU1NMIDMuMDAgc2VjdGlvbiA0LjMpCi0v
LyBJbml0aWFsaXppbmcgd2l0aCBhIGNvbnN0YW50IGdsb2JhbCBzaG91bGQgYmUgZmluZS4KLVRF
U1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBBc3NpZ25Db25zdEdsb2JhbFRvR2xvYmFsKQotewot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24g
MzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAg
ImNvbnN0IGZsb2F0IGEgPSAxLjA7XG4iCi0gICAgICAgICJmbG9hdCBiID0gYSAqIDIuMDtcbiIK
LSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKLSAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQoYik7XG4iCi0gICAgICAgICJ9
XG4iOwotICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJ
TCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8
IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gU3RhdGljYWxseSBhc3NpZ25pbmcgdG8gYm90aCBn
bF9GcmFnRGF0YSBhbmQgZ2xfRnJhZ0NvbG9yIGlzIGZvcmJpZGRlbiAoRVNTTCAxLjAwIHNlY3Rp
b24gNy4yKQotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFdyaXRlQm90aEZyYWdEYXRhQW5k
RnJhZ0NvbG9yKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lkIGZvbygpIHtc
biIKLSAgICAgICAgIiAgIGdsX0ZyYWdEYXRhWzBdLmErKztcbiIKLSAgICAgICAgIn1cbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvci54ICs9IDAu
MDtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAg
ICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhw
ZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFZlcnNpb24gZGly
ZWN0aXZlIG11c3QgYmUgb24gdGhlIGZpcnN0IGxpbmUgKEVTU0wgMy4wMCBzZWN0aW9uIDMuMykK
LVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBWZXJzaW9uT25TZWNvbmRMaW5lKQotewotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiXG4iCi0gICAgICAg
ICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgotICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgotICAgICAg
ICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAg
RkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVy
ZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gTGF5b3V0IHF1YWxpZmllciBjYW4gb25s
eSBhcHBlYXIgaW4gZ2xvYmFsIHNjb3BlIChFU1NMIDMuMDAgc2VjdGlvbiA0LjMuOCkKLVRFU1Rf
RihNYWxmb3JtZWRTaGFkZXJUZXN0LCBMYXlvdXRRdWFsaWZpZXJJbkNvbmRpdGlvbikKLXsKLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMw
MCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1
bmlmb3JtIHZlYzQgdTtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgICBpbnQgaSA9IDA7XG4iCi0gICAg
ICAgICIgICAgZm9yIChpbnQgaiA9IDA7IGxheW91dChsb2NhdGlvbiA9IDApIGJvb2wgYiA9IGZh
bHNlOyArK2opIHtcbiIKLSAgICAgICAgIiAgICAgICAgKytpO1xuIgotICAgICAgICAiICAgIH1c
biIKLSAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB1O1xuIgotICAgICAgICAifVxuIjsKLSAg
ICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJT
aGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZv
TG9nOwotICAgIH0KLX0KLQotLy8gTGF5b3V0IHF1YWxpZmllciBjYW4gb25seSBhcHBlYXIgd2hl
cmUgc3BlY2lmaWVkIChFU1NMIDMuMDAgc2VjdGlvbiA0LjMuOCkKLVRFU1RfRihNYWxmb3JtZWRT
aGFkZXJUZXN0LCBMYXlvdXRRdWFsaWZpZXJJbkZ1bmN0aW9uUmV0dXJuVHlwZSkKLXsKLSAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBl
c1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlm
b3JtIHZlYzQgdTtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAg
ICAgImxheW91dChsb2NhdGlvbiA9IDApIHZlYzQgZm9vKCkge1xuIgotICAgICAgICAiICAgIHJl
dHVybiB1O1xuIgotICAgICAgICAifVxuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAg
ICAgICAiICAgIG15X0ZyYWdDb2xvciA9IGZvbygpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBp
ZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFk
ZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9n
OwotICAgIH0KLX0KLQotLy8gSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBvdXRwdXQsIHRoZSBs
b2NhdGlvbiBtdXN0IGJlIHNwZWNpZmllZCBmb3IgYWxsIG91dHB1dHMuCi0vLyAoRVNTTCAzLjAw
LjA0IHNlY3Rpb24gNC4zLjguMikKLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBUd29PdXRw
dXRzTm9MYXlvdXRRdWFsaWZpZXJzKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJT
dHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1O1xuIgotICAgICAgICAi
b3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfU2Vjb25kYXJ5
RnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgIG15
X0ZyYWdDb2xvciA9IHZlYzQoMS4wKTtcbiIKLSAgICAgICAgIiAgICBteV9TZWNvbmRhcnlGcmFn
Q29sb3IgPSB2ZWM0KDAuNSk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNo
YWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlv
biBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQot
Ci0vLyAoRVNTTCAzLjAwLjA0IHNlY3Rpb24gNC4zLjguMikKLVRFU1RfRihNYWxmb3JtZWRTaGFk
ZXJUZXN0LCBUd29PdXRwdXRzRmlyc3RMYXlvdXRRdWFsaWZpZXIpCi17Ci0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0
IHU7XG4iCi0gICAgICAgICJsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgdmVjNCBteV9GcmFnQ29s
b3I7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9TZWNvbmRhcnlGcmFnQ29sb3I7XG4iCi0gICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgx
LjApO1xuIgotICAgICAgICAiICAgIG15X1NlY29uZGFyeUZyYWdDb2xvciA9IHZlYzQoMC41KTtc
biIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7
Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0
aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIChFU1NMIDMuMDAuMDQg
c2VjdGlvbiA0LjMuOC4yKQotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFR3b091dHB1dHNT
ZWNvbmRMYXlvdXRRdWFsaWZpZXIpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHU7XG4iCi0gICAgICAgICJv
dXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJsYXlvdXQobG9jYXRpb24gPSAwKSBv
dXQgdmVjNCBteV9TZWNvbmRhcnlGcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCi0gICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAgICAgICAi
ICAgIG15X1NlY29uZGFyeUZyYWdDb2xvciA9IHZlYzQoMC41KTtcbiIKLSAgICAgICAgIn1cbiI7
Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8
PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBt
SW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFVuaWZvcm1zIGNhbiBiZSBhcnJheXMgKEVTU0wgMy4w
MCBzZWN0aW9uIDQuMy41KQotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFVuaWZvcm1BcnJh
eSkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2
ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0g
ICAgICAgICJ1bmlmb3JtIHZlYzRbMl0gdTtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdD
b2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgICBteV9GcmFn
Q29sb3IgPSB1WzBdO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoIWNvbXBpbGUoc2hhZGVy
U3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZh
aWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEZy
YWdtZW50IHNoYWRlciBpbnB1dCB2YXJpYWJsZXMgY2Fubm90IGJlIGFycmF5cyBvZiBzdHJ1Y3Rz
IChFU1NMIDMuMDAgc2VjdGlvbiA0LjMuNCkKLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBG
cmFnbWVudElucHV0QXJyYXlPZlN0cnVjdHMpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAic3RydWN0IFMge1xuIgotICAgICAgICAi
ICAgIHZlYzQgZm9vO1xuIgotICAgICAgICAifTtcbiIKLSAgICAgICAgImluIFMgaVsyXTtcbiIK
LSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKLSAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSBpWzBdLmZvbztcbiIKLSAgICAgICAg
In1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZB
SUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUg
IiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFZlcnRleCBzaGFkZXIgaW5wdXRzIGNhbid0
IGJlIGFycmF5cyAoRVNTTCAzLjAwIHNlY3Rpb24gNC4zLjQpCi0vLyBUaGlzIHRlc3QgaXMgdGVz
dGluZyB0aGUgY2FzZSB3aGVyZSB0aGUgYXJyYXkgYnJhY2tldHMgYXJlIGFmdGVyIHRoZSB2YXJp
YWJsZSBuYW1lLCBzbwotLy8gdGhlIGFycmF5bmVzcyBpc24ndCBrbm93biB3aGVuIHRoZSB0eXBl
IGFuZCBxdWFsaWZpZXJzIGFyZSBpbml0aWFsbHkgcGFyc2VkLgotVEVTVF9GKE1hbGZvcm1lZFZl
cnRleFNoYWRlclRlc3QsIFZlcnRleFNoYWRlcklucHV0QXJyYXkpCi17Ci0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAiaW4gdmVjNCBpWzJd
O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgIGdsX1Bvc2l0aW9u
ID0gaVswXTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5n
KSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRl
ZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFZlcnRl
eCBzaGFkZXIgaW5wdXRzIGNhbid0IGJlIGFycmF5cyAoRVNTTCAzLjAwIHNlY3Rpb24gNC4zLjQp
Ci0vLyBUaGlzIHRlc3QgaXMgdGVzdGluZyB0aGUgY2FzZSB3aGVyZSB0aGUgYXJyYXkgYnJhY2tl
dHMgYXJlIGFmdGVyIHRoZSB0eXBlLgotVEVTVF9GKE1hbGZvcm1lZFZlcnRleFNoYWRlclRlc3Qs
IFZlcnRleFNoYWRlcklucHV0QXJyYXlUeXBlKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImluIHZlYzRbMl0gaTtcbiIKLSAgICAg
ICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IGlbMF07XG4i
Ci0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewot
ICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGlu
ZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBGcmFnbWVudCBzaGFkZXIg
aW5wdXRzIGNhbid0IGNvbnRhaW4gYm9vbGVhbnMgKEVTU0wgMy4wMCBzZWN0aW9uIDQuMy40KQot
VEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEZyYWdtZW50U2hhZGVySW5wdXRTdHJ1Y3RXaXRo
Qm9vbCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAg
IiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
Ci0gICAgICAgICJzdHJ1Y3QgUyB7XG4iCi0gICAgICAgICIgICAgYm9vbCBmb287XG4iCi0gICAg
ICAgICJ9O1xuIgotICAgICAgICAiaW4gUyBzO1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJh
Z0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgIG15X0Zy
YWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUo
c2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0
aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19
Ci0KLS8vIEZyYWdtZW50IHNoYWRlciBpbnB1dHMgd2l0aG91dCBhIGZsYXQgcXVhbGlmaWVyIGNh
bid0IGNvbnRhaW4gaW50ZWdlcnMgKEVTU0wgMy4wMCBzZWN0aW9uIDQuMy40KQotVEVTVF9GKE1h
bGZvcm1lZFNoYWRlclRlc3QsIEZyYWdtZW50U2hhZGVySW5wdXRTdHJ1Y3RXaXRoSW50KQotewot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24g
MzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAg
InN0cnVjdCBTIHtcbiIKLSAgICAgICAgIiAgICBpbnQgZm9vO1xuIgotICAgICAgICAifTtcbiIK
LSAgICAgICAgImluIFMgcztcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIK
LSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2
ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmlu
ZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVk
ZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBTZWxl
Y3RpbmcgYSBmaWVsZCBvZiBhIHZlY3RvciB0aGF0J3MgdGhlIHJlc3VsdCBvZiBkeW5hbWljIGlu
ZGV4aW5nIGEgY29uc3RhbnQgYXJyYXkgc2hvdWxkIHdvcmsuCi1URVNUX0YoTWFsZm9ybWVkU2hh
ZGVyVGVzdCwgU2hhZGVyU2VsZWN0aW5nRmllbGRPZlZlY3RvckluZGV4ZWRGcm9tQXJyYXkpCi17
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lv
biAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAg
ICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidW5pZm9ybSBpbnQgaTtcbiIK
LSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgICBmbG9hdCBmID0gdmVjMlsx
XSh2ZWMyKDAuMCwgMC4xKSlbaV0ueDtcbiIKLSAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2
ZWM0KGYpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5n
KSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwg
ZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFBhc3Npbmcg
YW4gYXJyYXkgaW50byBhIGZ1bmN0aW9uIGFuZCB0aGVuIHBhc3NpbmcgYSB2YWx1ZSBmcm9tIHRo
YXQgYXJyYXkgaW50byBhbm90aGVyIGZ1bmN0aW9uCi0vLyBzaG91bGQgd29yay4gVGhpcyBpcyBh
IHJlZ3Jlc3Npb24gdGVzdCBmb3IgYSBidWcgd2hlcmUgdGhlIG1hbmdsZWQgbmFtZSBvZiBhIFRU
eXBlIHdhcyBub3QKLS8vIHByb3Blcmx5IHVwZGF0ZWQgd2hlbiBkZXRlcm1pbmluZyB0aGUgdHlw
ZSByZXN1bHRpbmcgZnJvbSBhcnJheSBpbmRleGluZy4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJU
ZXN0LCBBcnJheVZhbHVlRnJvbUZ1bmN0aW9uUGFyYW1ldGVyQXNQYXJhbWV0ZXIpCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgdTtcbiIKLSAgICAgICAgImZs
b2F0IGZvbyhmbG9hdCBmKSB7XG4iCi0gICAgICAgICIgICByZXR1cm4gZiAqIDIuMDtcbiIKLSAg
ICAgICAgIn1cbiIKLSAgICAgICAgImZsb2F0IGJhcihmbG9hdFsyXSBmKSB7XG4iCi0gICAgICAg
ICIgICAgcmV0dXJuIGZvbyhmWzBdKTtcbiIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgInZvaWQg
bWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgZmxvYXQgYXJyWzJdO1xuIgot
ICAgICAgICAiICAgIGFyclswXSA9IHU7XG4iCi0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNChiYXIoYXJyKSk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmICghY29tcGlsZShzaGFk
ZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24g
ZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8g
VGVzdCB0aGF0IG91dC1vZi1yYW5nZSBpbnRlZ2VyIGxpdGVyYWwgZ2VuZXJhdGVzIGFuIGVycm9y
IGluIEVTU0wgMy4wMC4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBPdXRPZlJhbmdlSW50
ZWdlckxpdGVyYWwpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0g
ICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgotICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGludDtcbiIKLSAgICAgICAgIm91dCB2
ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAg
IiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDB4MTAwMDAwMDAwKTtcbiIKLSAgICAgICAgIn1cbiI7
Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8
PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBt
SW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCB2ZWN0b3IgZmllbGQgc2VsZWN0aW9u
IGZyb20gYSB2YWx1ZSB0YWtlbiBmcm9tIGFuIGFycmF5IGNvbnN0cnVjdG9yIGlzIGFjY2VwdGVk
IGFzIGEKLS8vIGNvbnN0YW50IGV4cHJlc3Npb24uCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVz
dCwgRmllbGRTZWxlY3Rpb25Gcm9tVmVjdG9yQXJyYXlDb25zdHJ1Y3RvcklzQ29uc3QpCi17Ci0g
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAi
b3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAg
ICAgIntcbiIKLSAgICAgICAgIiAgICBjb25zdCBmbG9hdCBmID0gdmVjMlsxXSh2ZWMyKDAuMCwg
MS4wKSlbMF0ueDtcbiIKLSAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGYpO1xuIgot
ICAgICAgICAifVxuIjsKLSAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0g
ICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1
Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCBzdHJ1Y3R1cmUg
ZmllbGQgc2VsZWN0aW9uIGZyb20gYSB2YWx1ZSB0YWtlbiBmcm9tIGFuIGFycmF5IGNvbnN0cnVj
dG9yIGlzIGFjY2VwdGVkIGFzIGEKLS8vIGNvbnN0YW50IGV4cHJlc3Npb24uCi1URVNUX0YoTWFs
Zm9ybWVkU2hhZGVyVGVzdCwgRmllbGRTZWxlY3Rpb25Gcm9tU3RydWN0QXJyYXlDb25zdHJ1Y3Rv
cklzQ29uc3QpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAic3RydWN0
IFMgeyBmbG9hdCBtZW1iZXI7IH07XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAg
ICAie1xuIgotICAgICAgICAiICAgIGNvbnN0IGZsb2F0IGYgPSBTWzFdKFMoMC4wKSlbMF0ubWVt
YmVyO1xuIgotICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoZik7XG4iCi0gICAgICAg
ICJ9XG4iOwotICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAg
RkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAi
IDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gVGVzdCB0aGF0IGEgcmVmZXJlbmNlIHRvIGEg
Y29uc3QgYXJyYXkgaXMgYWNjZXB0ZWQgYXMgYSBjb25zdGFudCBleHByZXNzaW9uLgotVEVTVF9G
KE1hbGZvcm1lZFNoYWRlclRlc3QsIEFycmF5U3ltYm9sSXNDb25zdCkKLXsKLSAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgot
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBt
eV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgot
ICAgICAgICAiICAgIGNvbnN0IGZsb2F0WzJdIGFyciA9IGZsb2F0WzJdKDAuMCwgMS4wKTtcbiIK
LSAgICAgICAgIiAgICBjb25zdCBmbG9hdCBmID0gYXJyWzBdO1xuIgotICAgICAgICAiICAgIG15
X0ZyYWdDb2xvciA9IHZlYzQoZik7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmICghY29tcGls
ZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGls
YXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0K
LQotLy8gVGVzdCB0aGF0IHVzaW5nIGFuIGFycmF5IGNvbnN0cnVjdG9yIGluIGEgcGFyYW1ldGVy
IHRvIGEgYnVpbHQtaW4gZnVuY3Rpb24gaXMgYWNjZXB0ZWQgYXMgYQotLy8gY29uc3RhbnQgZXhw
cmVzc2lvbi4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBCdWlsdEluRnVuY3Rpb25BcHBs
aWVkVG9BcnJheUNvbnN0cnVjdG9ySXNDb25zdCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7
XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAg
IGNvbnN0IGZsb2F0IGYgPSBzaW4oZmxvYXRbMl0oMC4wLCAxLjApWzBdKTtcbiIKLSAgICAgICAg
IiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGYpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAo
IWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVy
IGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKLSAg
ICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCB1c2luZyBhbiBhcnJheSBjb25zdHJ1Y3RvciBpbiBhIHBh
cmFtZXRlciB0byBhIGJ1aWx0LWluIGZ1bmN0aW9uIGlzIGFjY2VwdGVkIGFzIGEKLS8vIGNvbnN0
YW50IGV4cHJlc3Npb24uCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgQnVpbHRJbkZ1bmN0
aW9uV2l0aE11bHRpcGxlUGFyYW1ldGVyc0FwcGxpZWRUb0FycmF5Q29uc3RydWN0b3JJc0NvbnN0
KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAg
ICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4i
Ci0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgY29uc3QgZmxvYXQgZiA9IHBvdygxLjAsIGZs
b2F0WzJdKDAuMCwgMS4wKVswXSk7XG4iCi0gICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVj
NChmKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykp
Ci0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4
cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQg
dXNpbmcgYW4gYXJyYXkgY29uc3RydWN0b3IgaW4gYSBwYXJhbWV0ZXIgdG8gYSBjb25zdHJ1Y3Rv
ciBpcyBhY2NlcHRlZCBhcyBhIGNvbnN0YW50Ci0vLyBleHByZXNzaW9uLgotVEVTVF9GKE1hbGZv
cm1lZFNoYWRlclRlc3QsIENvbnN0cnVjdG9yV2l0aE11bHRpcGxlUGFyYW1ldGVyc0FwcGxpZWRU
b0FycmF5Q29uc3RydWN0b3JJc0NvbnN0KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIK
LSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgY29u
c3QgdmVjMiBmID0gdmVjMigxLjAsIGZsb2F0WzJdKDAuMCwgMS4wKVswXSk7XG4iCi0gICAgICAg
ICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNChmLngpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBp
ZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hh
ZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsK
LSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCB1c2luZyBhbiBhcnJheSBjb25zdHJ1Y3RvciBpbiBh
biBvcGVyYW5kIG9mIHRoZSB0ZXJuYXJ5IHNlbGVjdGlvbiBvcGVyYXRvciBpcyBhY2NlcHRlZAot
Ly8gYXMgYSBjb25zdGFudCBleHByZXNzaW9uLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3Qs
IFRlcm5hcnlPcGVyYXRvckFwcGxpZWRUb0FycmF5Q29uc3RydWN0b3JJc0NvbnN0KQotewotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAw
IGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91
dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAg
ICJ7XG4iCi0gICAgICAgICIgICAgY29uc3QgZmxvYXQgZiA9IHRydWUgPyBmbG9hdFsyXSgwLjAs
IDEuMClbMF0gOiAxLjA7XG4iCi0gICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNChmKTtc
biIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAg
ewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGlu
ZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQgYSB0ZXJu
YXJ5IG9wZXJhdG9yIHdpdGggb25lIHVuZXZhbHVhdGVkIG5vbi1jb25zdGFudCBvcGVyYW5kIGlz
IG5vdCBhIGNvbnN0YW50Ci0vLyBleHByZXNzaW9uLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRl
c3QsIFRlcm5hcnlPcGVyYXRvck5vbkNvbnN0YW50T3BlcmFuZCkKLXsKLSAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgotICAgICAgICAidm9pZCBtYWluKClc
biIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBjb25zdCBmbG9hdCBmID0gdHJ1ZSA/IDEu
MCA6IHU7XG4iCi0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChmKTtcbiIKLSAgICAg
ICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAg
IEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1
cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCBhIHNhbXBsZXIgY2Fu
J3QgYmUgdXNlZCBpbiBjb25zdHJ1Y3RvciBhcmd1bWVudCBsaXN0Ci1URVNUX0YoTWFsZm9ybWVk
U2hhZGVyVGVzdCwgU2FtcGxlckluQ29uc3RydWN0b3JBcmd1bWVudHMpCi17Ci0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHM7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIHZlYzIgdiA9IHZlYzIoMC4w
LCBzKTtcbiIKLSAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHYsIDAuMCwgMC4wKTtc
biIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7
Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0
aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCB2b2lk
IGNhbid0IGJlIHVzZWQgaW4gY29uc3RydWN0b3IgYXJndW1lbnQgbGlzdAotVEVTVF9GKE1hbGZv
cm1lZFNoYWRlclRlc3QsIFZvaWRJbkNvbnN0cnVjdG9yQXJndW1lbnRzKQotewotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lkIGZvbygpIHt9XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIHZlYzIgdiA9IHZlYzIoMC4wLCBmb28o
KSk7XG4iCi0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2LCAwLjAsIDAuMCk7XG4i
Ci0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewot
ICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGlu
ZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQgYSBzaGFk
ZXIgcGFzc2luZyBhIHN0cnVjdCBpbnRvIGEgY29uc3RydWN0b3Igb2YgYXJyYXkgb2Ygc3RydWN0
cyB3aXRoIDEgZWxlbWVudCB3b3Jrcy4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBTaW5n
bGVTdHJ1Y3RBcnJheUNvbnN0cnVjdG9yKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIK
LSAgICAgICAgInVuaWZvcm0gZmxvYXQgdTtcbiIKLSAgICAgICAgInN0cnVjdCBTIHsgZmxvYXQg
bWVtYmVyOyB9O1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAg
ICAgICAgIiAgICBTWzFdIHNhcnIgPSBTWzFdKFModSkpO1xuIgotICAgICAgICAiICAgIG15X0Zy
YWdDb2xvciA9IHZlYzQoc2FyclswXS5tZW1iZXIpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBp
ZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hh
ZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsK
LSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCBhIHNoYWRlciB3aXRoIGVtcHR5IGNvbnN0cnVjdG9y
IHBhcmFtZXRlciBsaXN0IGlzIG5vdCBhY2NlcHRlZC4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJU
ZXN0LCBFbXB0eUFycmF5Q29uc3RydWN0b3IpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xu
IgotICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgotICAgICAgICAiY29uc3QgZmxvYXRbXSBm
ID0gZltdKCk7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAg
ICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0g
ICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAi
U2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5m
b0xvZzsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCBpbmRleGluZyBmcmFnbWVudCBvdXRwdXRz
IHdpdGggYSBub24tY29uc3RhbnQgZXhwcmVzc2lvbiBpcyBmb3JiaWRkZW4sIGV2ZW4gaWYgQU5H
TEUKLS8vIGlzIGFibGUgdG8gY29uc3RhbnQgZm9sZCB0aGUgaW5kZXggZXhwcmVzc2lvbi4gRVNT
TCAzLjAwIHNlY3Rpb24gNC4zLjYuCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgRHluYW1p
Y2FsbHlJbmRleGVkRnJhZ21lbnRPdXRwdXQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBpbnQgYTtcbiIKLSAgICAg
ICAgIm91dCB2ZWM0WzJdIG15X0ZyYWdEYXRhO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIK
LSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBteV9GcmFnRGF0YVt0cnVlID8gMCA6IGFdID0g
dmVjNCgwLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJp
bmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2Vl
ZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gVGVz
dCB0aGF0IGluZGV4aW5nIGFuIGludGVyZmFjZSBibG9jayBhcnJheSB3aXRoIGEgbm9uLWNvbnN0
YW50IGV4cHJlc3Npb24gaXMgZm9yYmlkZGVuLCBldmVuIGlmCi0vLyBBTkdMRSBpcyBhYmxlIHRv
IGNvbnN0YW50IGZvbGQgdGhlIGluZGV4IGV4cHJlc3Npb24uIEVTU0wgMy4wMCBzZWN0aW9uIDQu
My43LgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIER5bmFtaWNhbGx5SW5kZXhlZEludGVy
ZmFjZUJsb2NrKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAg
ICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKLSAgICAgICAgInVuaWZvcm0gaW50IGE7XG4iCi0gICAgICAgICJ1bmlmb3JtIEJcbiIK
LSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICB2ZWM0IGY7XG4iCi0gICAgICAgICJ9XG4iCi0g
ICAgICAgICJibG9ja3NbMl07XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIG15
X0ZyYWdDb2xvciA9IGJsb2Nrc1t0cnVlID8gMCA6IGFdLmY7XG4iCi0gICAgICAgICJ9XG4iOwot
ICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwg
IlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUlu
Zm9Mb2c7Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQgYSBzaGFkZXIgdGhhdCB1c2VzIGEgc3Ry
dWN0IGRlZmluaXRpb24gaW4gcGxhY2Ugb2YgYSBzdHJ1Y3QgY29uc3RydWN0b3IgZG9lcyBub3QK
LS8vIGNvbXBpbGUuIFNlZSBHTFNMIEVTIDEuMDAgc2VjdGlvbiA1LjQuMy4KLVRFU1RfRihNYWxm
b3JtZWRTaGFkZXJUZXN0LCBTdHJ1Y3RDb25zdHJ1Y3RvcldpdGhTdHJ1Y3REZWZpbml0aW9uKQot
ewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAi
e1xuIgotICAgICAgICAiICAgIHN0cnVjdCBzIHsgZmxvYXQgZjsgfSAoMC4wKTtcbiIKLSAgICAg
ICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAg
IGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNo
YWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9M
b2c7Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQgaW5kZXhpbmcgZ2xfRnJhZ0RhdGEgd2l0aCBh
IG5vbi1jb25zdGFudCBleHByZXNzaW9uIGlzIGZvcmJpZGRlbiBpbiBXZWJHTCAyLjAsIGV2ZW4K
LS8vIHdoZW4gQU5HTEUgaXMgYWJsZSB0byBjb25zdGFudCBmb2xkIHRoZSBpbmRleC4KLS8vIFdl
YkdMIDIuMCBzcGVjIHNlY3Rpb24gJ0dMU0wgRVMgMS4wMCBGcmFnbWVudCBTaGFkZXIgT3V0cHV0
JwotVEVTVF9GKE1hbGZvcm1lZFdlYkdMMlNoYWRlclRlc3QsIEluZGV4RnJhZ0RhdGFXaXRoTm9u
Q29uc3RhbnQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4i
Ci0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyArK2kp
IHtcbiIKLSAgICAgICAgIiAgICAgICAgZ2xfRnJhZ0RhdGFbdHJ1ZSA/IDAgOiBpXSA9IHZlYzQo
MC4wKTtcbiIKLSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21w
aWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAg
fQotfQotCi0vLyBUZXN0IHRoYXQgYSBub24tY29uc3RhbnQgdGV4dHVyZSBvZmZzZXQgaXMgbm90
IGFjY2VwdGVkIGZvciB0ZXh0dXJlT2Zmc2V0LgotLy8gRVNTTCAzLjAwIHNlY3Rpb24gOC44Ci1U
RVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgVGV4dHVyZU9mZnNldE5vbkNvbnN0KQotewotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAw
IGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91
dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjMyB1X3RleENvb3Jk
O1xuIgotICAgICAgICAidW5pZm9ybSBtZWRpdW1wIHNhbXBsZXIzRCB1X3NhbXBsZXI7XG4iCi0g
ICAgICAgICJ1bmlmb3JtIGludCB4O1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAg
ICAgIntcbiIKLSAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHRleHR1cmVPZmZzZXQodV9zYW1w
bGVyLCB1X3RleENvb3JkLCBpdmVjMyh4LCAzLCAtOCkpO1xuIgotICAgICAgICAifVxuIjsKLSAg
ICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJT
aGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZv
TG9nOwotICAgIH0KLX0KLQotLy8gVGVzdCB0aGF0IGEgbm9uLWNvbnN0YW50IHRleHR1cmUgb2Zm
c2V0IGlzIG5vdCBhY2NlcHRlZCBmb3IgdGV4dHVyZVByb2pPZmZzZXQgd2l0aCBiaWFzLgotLy8g
RVNTTCAzLjAwIHNlY3Rpb24gOC44Ci1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgVGV4dHVy
ZVByb2pPZmZzZXROb25Db25zdCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAg
ICAgICJ1bmlmb3JtIHZlYzQgdV90ZXhDb29yZDtcbiIKLSAgICAgICAgInVuaWZvcm0gbWVkaXVt
cCBzYW1wbGVyM0QgdV9zYW1wbGVyO1xuIgotICAgICAgICAidW5pZm9ybSBpbnQgeDtcbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICBteV9GcmFn
Q29sb3IgPSB0ZXh0dXJlUHJvak9mZnNldCh1X3NhbXBsZXIsIHVfdGV4Q29vcmQsIGl2ZWMzKHgs
IDMsIC04KSwgMC4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVy
U3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1
Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8v
IFRlc3QgdGhhdCBhbiBvdXQtb2YtcmFuZ2UgdGV4dHVyZSBvZmZzZXQgaXMgbm90IGFjY2VwdGVk
LgotLy8gR0xFUyAzLjAuNCBzZWN0aW9uIDMuOC4xMCBzcGVjaWZpZXMgdGhhdCBvdXQtb2YtcmFu
Z2Ugb2Zmc2V0IGhhcyB1bmRlZmluZWQgYmVoYXZpb3IuCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVy
VGVzdCwgVGV4dHVyZUxvZE9mZnNldE91dE9mUmFuZ2UpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0Nv
bG9yO1xuIgotICAgICAgICAidW5pZm9ybSB2ZWMzIHVfdGV4Q29vcmQ7XG4iCi0gICAgICAgICJ1
bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjNEIHVfc2FtcGxlcjtcbiIKLSAgICAgICAgInZvaWQgbWFp
bigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB0ZXh0dXJl
TG9kT2Zmc2V0KHVfc2FtcGxlciwgdV90ZXhDb29yZCwgMC4wLCBpdmVjMygwLCAwLCA4KSk7XG4i
Ci0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewot
ICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGlu
ZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQgZGVmYXVs
dCBwcmVjaXNpb24gcXVhbGlmaWVyIGZvciB1aW50IGlzIG5vdCBhY2NlcHRlZC4KLS8vIEVTU0wg
My4wMC40IHNlY3Rpb24gNC41LjQ6IE9ubHkgYWxsb3dlZCBmb3IgZmxvYXQsIGludCBhbmQgc2Ft
cGxlciB0eXBlcy4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBEZWZhdWx0UHJlY2lzaW9u
VWludCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAg
IiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCB1aW50O1xuIgotICAgICAgICAib3V0IHZlYzQg
bXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIK
LSAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKLSAgICAgICAgIn1cbiI7
Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8
PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBt
SW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCBzYW1wbGVyM0QgbmVlZHMgdG8gYmUg
cHJlY2lzaW9uIHF1YWxpZmllZC4KLS8vIEVTU0wgMy4wMC40IHNlY3Rpb24gNC41LjQ6IE5ldyBF
U1NMIDMuMDAgc2FtcGxlciB0eXBlcyBkb24ndCBoYXZlIHByZWRlZmluZWQgcHJlY2lzaW9uLgot
VEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIE5vUHJlY2lzaW9uU2FtcGxlcjNEKQotewotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAw
IGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVu
aWZvcm0gc2FtcGxlcjNEIHM7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgbXlf
RnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGls
ZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGls
YXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0K
LX0KLQotLy8gVGVzdCB0aGF0IHVzaW5nIGEgbm9uLWNvbnN0YW50IGV4cHJlc3Npb24gaW4gYSBm
b3IgbG9vcCBpbml0aWFsaXplciBpcyBmb3JiaWRkZW4gaW4gV2ViR0wgMS4wLAotLy8gZXZlbiB3
aGVuIEFOR0xFIGlzIGFibGUgdG8gY29uc3RhbnQgZm9sZCB0aGUgaW5pdGlhbGl6ZXIuCi0vLyBF
U1NMIDEuMDAgQXBwZW5kaXggQS4KLVRFU1RfRihNYWxmb3JtZWRXZWJHTDFTaGFkZXJUZXN0LCBO
b25Db25zdGFudExvb3BJbmRleCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5p
Zm9ybSBpbnQgdTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0g
ICAgICAgICIgICAgZm9yIChpbnQgaSA9ICh0cnVlID8gMSA6IHUpOyBpIDwgNTsgKytpKSB7XG4i
Ci0gICAgICAgICIgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKLSAgICAgICAg
IiAgICB9XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykp
Ci0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQs
IGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBSZWdyZXNz
aW9uIHRlc3QgZm9yIGFuIG9sZCBjcmFzaCBidWcgaW4gQU5HTEUuCi0vLyBGb3JMb29wVW5yb2xs
IHVzZWQgdG8gY3Jhc2ggd2hlbiBpdCBlbmNvdW50ZXJlZCBhIHdoaWxlIGxvb3AuCi1URVNUX0Yo
VW5yb2xsRm9yTG9vcHNUZXN0LCBXaGlsZUxvb3ApCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgd2hpbGUg
KHRydWUpIHtcbiIKLSAgICAgICAgIiAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xu
IgotICAgICAgICAiICAgICAgICBicmVhaztcbiIKLSAgICAgICAgIiAgICB9XG4iCi0gICAgICAg
ICJ9XG4iOwotICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAg
RkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAi
IDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gUmVncmVzc2lvbiB0ZXN0IGZvciBhbiBvbGQg
Y3Jhc2ggYnVnIGluIEFOR0xFLgotLy8gRm9yTG9vcFVucm9sbCB1c2VkIHRvIGNyYXNoIHdoZW4g
aXQgZW5jb3VudGVyZWQgYSBsb29wIHRoYXQgZGlkbid0IGZpdCB0aGUgRVNTTCAxLjAwCi0vLyBB
cHBlbmRpeCBBIGxpbWl0YXRpb25zLgotVEVTVF9GKFVucm9sbEZvckxvb3BzVGVzdCwgVW5saW1p
dGVkRm9yTG9vcCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidm9pZCBtYWluKClc
biIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBmb3IgKDt0cnVlOykge1xuIgotICAgICAg
ICAiICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICIgICAgICAg
IGJyZWFrO1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFj
b21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBj
b21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7Ci0gICAg
fQotfQotCi0vLyBDaGVjayB0aGF0IGluZGljZXMgdGhhdCBhcmUgbm90IGludGVnZXJzIGFyZSBy
ZWplY3RlZC4KLS8vIFRoZSBjaGVjayBzaG91bGQgYmUgZG9uZSBldmVuIGlmIEVTU0wgMS4wMCBB
cHBlbmRpeCBBIGxpbWl0YXRpb25zIGFyZSBub3QgYXBwbGllZC4KLVRFU1RfRihNYWxmb3JtZWRT
aGFkZXJUZXN0LCBOb25JbnRlZ2VySW5kZXgpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAg
ICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgZmxvYXQgZlsz
XTtcbiIKLSAgICAgICAgIiAgICBjb25zdCBmbG9hdCBpID0gMi4wO1xuIgotICAgICAgICAiICAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoZltpXSk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChj
b21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBj
b21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0g
ICAgfQotfQotCi0vLyBFU1NMMSBzaGFkZXJzIHdpdGggYSBkdXBsaWNhdGUgZnVuY3Rpb24gcHJv
dG90eXBlIHNob3VsZCBiZSByZWplY3RlZC4KLS8vIEVTU0wgMS4wMC4xNyBzZWN0aW9uIDQuMi43
LgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIER1cGxpY2F0ZVByb3RvdHlwZUVTU0wxKQot
ewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lkIGZvbygpO1xuIgotICAgICAgICAi
dm9pZCBmb28oKTtcbiIKLSAgICAgICAgInZvaWQgZm9vKCkge31cbiIKLSAgICAgICAgInZvaWQg
bWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVj
NCgwLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcp
KQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVk
LCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gRVNTTDMg
c2hhZGVycyB3aXRoIGEgZHVwbGljYXRlIGZ1bmN0aW9uIHByb3RvdHlwZSBzaG91bGQgYmUgYWxs
b3dlZC4KLS8vIEVTU0wgMy4wMC40IHNlY3Rpb24gNC4yLjMuCi1URVNUX0YoTWFsZm9ybWVkU2hh
ZGVyVGVzdCwgRHVwbGljYXRlUHJvdG90eXBlRVNTTDMpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0Nv
bG9yO1xuIgotICAgICAgICAidm9pZCBmb28oKTtcbiIKLSAgICAgICAgInZvaWQgZm9vKCk7XG4i
Ci0gICAgICAgICJ2b2lkIGZvbygpIHt9XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAg
ICAgICAie1xuIgotICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKLSAg
ICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAg
ICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNj
ZXNzICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBTaGFkZXJzIHdpdGggYSBsb2NhbCBm
dW5jdGlvbiBwcm90b3R5cGUgc2hvdWxkIGJlIHJlamVjdGVkLgotLy8gRVNTTCAzLjAwLjQgc2Vj
dGlvbiA0LjIuNC4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBMb2NhbEZ1bmN0aW9uUHJv
dG90eXBlKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAg
ICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc
biIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFp
bigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgdm9pZCBmb28oKTtcbiIKLSAgICAg
ICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAg
IGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNo
YWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9M
b2c7Ci0gICAgfQotfQotCi0vLyBFU1NMIDMuMDAgZnJhZ21lbnQgc2hhZGVycyBjYW4gbm90IHVz
ZSAjcHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpLgotLy8gRVNTTCAzLjAwLjQgc2VjdGlvbiA0
LjYuMS4gRG9lcyBub3QgYXBwbHkgdG8gb3RoZXIgdmVyc2lvbnMgb2YgRVNTTC4KLVRFU1RfRihN
YWxmb3JtZWRTaGFkZXJUZXN0LCBFU1NMMzAwRnJhZ21lbnRJbnZhcmlhbnRBbGwpCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAg
ZXNcbiIKLSAgICAgICAgIiNwcmFnbWEgU1RER0wgaW52YXJpYW50KGFsbClcbiIKLSAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0Nv
bG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAg
IiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlm
IChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRl
ciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7
Ci0gICAgfQotfQotCi0vLyBCdWlsdC1pbiBmdW5jdGlvbnMgY2FuIGJlIG92ZXJsb2FkZWQgaW4g
RVNTTCAxLjAwLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEVTU0wxMDBCdWlsdEluRnVu
Y3Rpb25PdmVybG9hZCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0K
LSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAiaW50IHNpbihp
bnQgeClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICByZXR1cm4gaW50KHNpbihmbG9h
dCh4KSkpO1xuIgotICAgICAgICAifVxuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAg
ICAgIntcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoc2luKDEpKTsiCi0gICAg
ICAgICJ9XG4iOwotICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAg
ICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2Vz
cyAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gQnVpbHQtaW4gZnVuY3Rpb25zIGNhbiBu
b3QgYmUgb3ZlcmxvYWRlZCBpbiBFU1NMIDMuMDAuCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVz
dCwgRVNTTDMwMEJ1aWx0SW5GdW5jdGlvbk92ZXJsb2FkKQotewotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdD
b2xvcjtcbiIKLSAgICAgICAgImludCBzaW4oaW50IHgpXG4iCi0gICAgICAgICJ7XG4iCi0gICAg
ICAgICIgICAgcmV0dXJuIGludChzaW4oZmxvYXQoeCkpKTtcbiIKLSAgICAgICAgIn1cbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICBteV9GcmFn
Q29sb3IgPSB2ZWM0KHNpbigxKSk7IgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShz
aGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRp
b24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0K
LQotLy8gTXVsdGlwbHlpbmcgYSA0eDIgbWF0cml4IHdpdGggYSA0eDIgbWF0cml4IHNob3VsZCBu
b3Qgd29yay4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBDb21wb3VuZE11bHRpcGx5TWF0
cml4SWRlbnRpY2FsTm9uU3F1YXJlRGltZW5zaW9ucykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29s
b3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAi
ICAgbWF0NHgyIGZvbztcbiIKLSAgICAgICAgIiAgIGZvbyAqPSBtYXQ0eDIoNC4wKTtcbiIKLSAg
ICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0g
ICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAi
U2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5m
b0xvZzsKLSAgICB9Ci19Ci0KLS8vIE11bHRpcGx5aW5nIGEgbWF0cml4IHdpdGggMiBjb2x1bW5z
IGFuZCA0IHJvd3Mgd2l0aCBhIDJ4MiBtYXRyaXggc2hvdWxkIHdvcmsuCi1URVNUX0YoTWFsZm9y
bWVkU2hhZGVyVGVzdCwgQ29tcG91bmRNdWx0aXBseU1hdHJpeFZhbGlkTm9uU3F1YXJlRGltZW5z
aW9ucykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAg
IiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
Ci0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgbWF0Mng0IGZvbztcbiIKLSAgICAgICAg
IiAgIGZvbyAqPSBtYXQyeDIoNC4wKTtcbiIKLSAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZl
YzQoMC4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmlu
ZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQs
IGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBDb3ZlcnMg
YSBidWcgd2hlcmUgd2Ugd291bGQgc2V0IHRoZSBpbmNvcnJlY3QgcmVzdWx0IHNpemUgb24gYW4g
b3V0LW9mLWJvdW5kcyB2ZWN0b3Igc3dpenpsZS4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0
LCBPdXRPZkJvdW5kc1ZlY3RvclN3aXp6bGUpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICB2ZWMy
KDApLnFxO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcp
KQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVk
LCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gQ292ZXJz
IGEgYnVnIHdoZXJlIHN0cmFuZ2UgcHJlcHJvY2Vzc29yIGRlZmluZXMgY291bGQgdHJpZ2dlciBh
c3NlcnRzLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIERlZmluZVdpdGhTZW1pY29sb24p
Ci17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjZGVm
aW5lIERlZjsgaGlnaHBcbiIKLSAgICAgICAgInVuaWZvcm0gRGVmIHZlYzIgYTtcbiI7Ci0gICAg
aWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hh
ZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xv
ZzsKLSAgICB9Ci19Ci0KLS8vIENvdmVycyBhIGJ1ZyBpbiBvdXIgcGFyc2luZyBvZiBtYWxmb3Jt
ZWQgc2hpZnQgcHJlcHJvY2Vzc29yIGV4cHJlc3Npb25zLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRl
clRlc3QsIExpbmVEaXJlY3RpdmVVbmRlZmluZWRTaGlmdCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0gIiNsaW5lIHggPDwgeSI7Ci0gICAgaWYgKGNvbXBpbGUoc2hh
ZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9u
IHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0K
LS8vIENvdmVycyBhIGJ1ZyBpbiBvdXIgcGFyc2luZyBvZiBtYWxmb3JtZWQgc2hpZnQgcHJlcHJv
Y2Vzc29yIGV4cHJlc3Npb25zLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIExpbmVEaXJl
Y3RpdmVOZWdhdGl2ZVNoaWZ0KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPSAiI2xpbmUgeCA8PCAtMSI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAg
ICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhw
ZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIGdsX01heEltYWdl
VW5pdHMgaXMgb25seSBhdmFpbGFibGUgaW4gRVMgMy4xIHNoYWRlcnMuCi1URVNUX0YoTWFsZm9y
bWVkU2hhZGVyVGVzdCwgTWF4SW1hZ2VVbml0c0luRVMzU2hhZGVyKQotewotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0g
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15
T3V0cHV0OyIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGZsb2F0IGZm
ID0gZmxvYXQoZ2xfTWF4SW1hZ2VVbml0cyk7XG4iCi0gICAgICAgICIgICBteU91dHB1dCA9IHZl
YzQoZmYpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcp
KQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVk
LCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gc3RydWN0
ICs9IHN0cnVjdCBpcyBhbiBpbnZhbGlkIG9wZXJhdGlvbi4KLVRFU1RfRihNYWxmb3JtZWRTaGFk
ZXJUZXN0LCBTdHJ1Y3RDb21wb3VuZEFzc2lnblN0cnVjdCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteU91dHB1
dDtcbiIKLSAgICAgICAgInN0cnVjdCBTIHsgZmxvYXQgZm9vOyB9O1xuIgotICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgotICAgICAgICAiICAgUyBhLCBiO1xuIgotICAgICAgICAiICAgYSArPSBi
O1xuIgotICAgICAgICAiICAgbXlPdXRwdXQgPSB2ZWM0KDApO1xuIgotICAgICAgICAifVxuIjsK
LSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8
ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1J
bmZvTG9nOwotICAgIH0KLX0KLQotLy8gc3RydWN0ID09IGRpZmZlcmVudCBzdHJ1Y3QgaXMgYW4g
aW52YWxpZCBvcGVyYXRpb24uCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgU3RydWN0RXFE
aWZmZXJlbnRTdHJ1Y3QpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9
Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlPdXRwdXQ7XG4iCi0gICAgICAgICJzdHJ1
Y3QgUyB7IGZsb2F0IGZvbzsgfTtcbiIKLSAgICAgICAgInN0cnVjdCBTMiB7IGZsb2F0IGZvb2Jh
cjsgfTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIFMgYTtcbiIK
LSAgICAgICAgIiAgIFMyIGI7XG4iCi0gICAgICAgICIgICBhID09IGI7XG4iCi0gICAgICAgICIg
ICBteU91dHB1dCA9IHZlYzQoMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxl
KHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxh
dGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQot
fQotCi0vLyBDb21wdXRlIHNoYWRlcnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbnMgbG93
ZXIgdGhhbiAzMTAuCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFZlcnNpb24x
MDApCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJ2
b2lkIG1haW4oKVxuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeD0xKSBpbjtcbiIKLSAg
ICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5n
KSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRl
ZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIENvbXB1
dGUgc2hhZGVycyBhcmUgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9ucyBsb3dlciB0aGFuIDMxMC4K
LVRFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgVmVyc2lvbjMwMCkKLXsKLSAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBl
c1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgImxheW91dChsb2NhbF9zaXpl
X3g9MSkgaW47XG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21w
aWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAg
fQotfQotCi0vLyBDb21wdXRlIHNoYWRlcnMgc2hvdWxkIGhhdmUgd29yayBncm91cCBzaXplIHNw
ZWNpZmllZC4gSG93ZXZlciwgaXQgaXMgbm90IGEgY29tcGlsZSB0aW1lIGVycm9yCi0vLyB0byBu
b3QgaGF2ZSB0aGUgc2l6ZSBzcGVjaWZpZWQsIGJ1dCByYXRoZXIgYSBsaW5rIHRpbWUgb25lLgot
Ly8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRz
Ci1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIE5vV29ya0dyb3VwU2l6ZVNwZWNp
ZmllZCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAg
IiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntc
biIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAg
ewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGlu
ZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBXb3JrIGdyb3VwIHNpemUg
aXMgbGVzcyB0aGFuIDEuIEl0IHNob3VsZCBiZSBhdCBsZWFzdCAxLgotLy8gR0xTTCBFUyAzLjEw
IFJldmlzaW9uIDQsIDcuMS4zIENvbXB1dGUgU2hhZGVyIFNwZWNpYWwgVmFyaWFibGVzCi0vLyBU
aGUgc3BlYyBpcyBub3QgY2xlYXIgd2hldGhlciBoYXZpbmcgYSBsb2NhbCBzaXplIHF1YWxpZmll
ciBlcXVhbCB6ZXJvCi0vLyBpcyBjb3JyZWN0LgotLy8gVE9ETyAobXJhZGV2KTogQXNrIHBlb3Bs
ZSBmcm9tIEtocm9ub3MgdG8gY2xhcmlmeSB0aGUgc3BlYy4KLVRFU1RfRihNYWxmb3JtZWRDb21w
dXRlU2hhZGVyVGVzdCwgV29ya0dyb3VwU2l6ZVRvb1NtYWxsWGRpbWVuc2lvbikKLXsKLSAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBl
c1xuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDApIGluO1xuIgotICAgICAgICAi
dm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNv
bXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNv
bXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAg
ICB9Ci19Ci0KLS8vIFdvcmsgZ3JvdXAgc2l6ZSBpcyBjb3JyZWN0IGZvciB0aGUgeCBhbmQgeSBk
aW1lbnNpb25zLCBidXQgbm90IGZvciB0aGUgeiBkaW1lbnNpb24uCi0vLyBHTFNMIEVTIDMuMTAg
UmV2aXNpb24gNCwgNy4xLjMgQ29tcHV0ZSBTaGFkZXIgU3BlY2lhbCBWYXJpYWJsZXMKLVRFU1Rf
RihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgV29ya0dyb3VwU2l6ZVRvb1NtYWxsWkRpbWVu
c2lvbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAg
IiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDQsIGxv
Y2FsX3NpemVfeSA9IDYsIGxvY2FsX3NpemVfeiA9IDApIGluO1xuIgotICAgICAgICAidm9pZCBt
YWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUo
c2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0
aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19
Ci0KLS8vIFdvcmsgZ3JvdXAgc2l6ZSBpcyBiaWdnZXIgdGhhbiB0aGUgbWluaW11bSBpbiB0aGUg
eCBkaW1lbnNpb24uCi0vLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNC40LjEuMSBDb21wdXRl
IFNoYWRlciBJbnB1dHMKLVRFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgV29ya0dy
b3VwU2l6ZVRvb0JpZ1hEaW1lbnNpb24pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRl
clN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImxheW91dChs
b2NhbF9zaXplX3ggPSA5OTg5ODk5KSBpbjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0g
ICAgICAgICJ7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmlu
ZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVk
ZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBXb3Jr
IGdyb3VwIHNpemUgaXMgYmlnZ2VyIHRoYW4gdGhlIG1pbmltdW0gaW4gdGhlIHkgZGltZW5zaW9u
LgotLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5w
dXRzCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFdvcmtHcm91cFNpemVUb29C
aWdZRGltZW5zaW9uKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQot
ICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCi0gICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94
ID0gNSwgbG9jYWxfc2l6ZV95ID0gOTk4OTg5OSkgaW47XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KVxuIgotICAgICAgICAie1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFk
ZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24g
c3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQot
Ly8gV29yayBncm91cCBzaXplIGlzIGRlZmluaXRlbHkgYmlnZ2VyIHRoYW4gdGhlIG1pbmltdW0g
aW4gdGhlIHogZGltZW5zaW9uLgotLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEg
Q29tcHV0ZSBTaGFkZXIgSW5wdXRzCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3Qs
IFdvcmtHcm91cFNpemVUb29CaWdaRGltZW5zaW9uKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCi0gICAgICAgICJs
YXlvdXQobG9jYWxfc2l6ZV94ID0gNSwgbG9jYWxfc2l6ZV95ID0gNSwgbG9jYWxfc2l6ZV96ID0g
OTk4OTg5OSkgaW47XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgot
ICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAg
ICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3Rpbmcg
ZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gV29yayBncm91cCBzaXplIHNw
ZWNpZmllZCB0aHJvdWdoIG1hY3JvIGV4cGFuc2lvbi4KLVRFU1RfRihNYWxmb3JtZWRDb21wdXRl
U2hhZGVyVGVzdCwgV29ya0dyb3VwU2l6ZU1hY3JvKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCi0gICAgICAgICIj
ZGVmaW5lIE1ZREVGKHgpIHgiCi0gICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gTVlERUYo
MTI3KSkgaW47XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAg
ICAgICAifVxuIjsKLSAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAg
ICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nl
c3MgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFdvcmsgZ3JvdXAgc2l6ZSBzcGVjaWZp
ZWQgYXMgYW4gdW5zaWduZWQgaW50ZWdlci4KLVRFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVy
VGVzdCwgV29ya0dyb3VwU2l6ZVVuc2lnbmVkSW50ZWdlcikKLXsKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAg
ICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDEyM3UpIGluO1xuIgotICAgICAgICAidm9pZCBtYWlu
KClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21waWxlKHNo
YWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlv
biBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0v
LyBXb3JrIGdyb3VwIHNpemUgc3BlY2lmaWVkIGluIGhleGFkZWNpbWFsLgotVEVTVF9GKE1hbGZv
cm1lZENvbXB1dGVTaGFkZXJUZXN0LCBXb3JrR3JvdXBTaXplSGV4YWRlY2ltYWwpCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAg
ZXNcbiIKLSAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSAweDNBKSBpbjtcbiIKLSAgICAg
ICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlm
ICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFk
ZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8IG1JbmZvTG9nOwot
ICAgIH0KLX0KLQotLy8gbG9jYWxfc2l6ZV94IGlzIC0xIGluIGhleGFkZWNpbWFsIGZvcm1hdC4K
LS8vIC0xIGlzIHVzZWQgYXMgdW5zcGVjaWZpZWQgdmFsdWUgaW4gdGhlIFRMYXlvdXRRdWFsaWZp
ZXIgc3RydWN0dXJlLgotVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBXb3JrR3Jv
dXBTaXplTWludXNPbmVIZXhhZGVjaW1hbCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAibGF5b3V0
KGxvY2FsX3NpemVfeCA9IDB4RkZGRkZGRkYpIGluO1xuIgotICAgICAgICAidm9pZCBtYWluKClc
biIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVy
U3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1
Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8v
IFdvcmsgZ3JvdXAgc2l6ZSBzcGVjaWZpZWQgaW4gb2N0YWwuCi1URVNUX0YoTWFsZm9ybWVkQ29t
cHV0ZVNoYWRlclRlc3QsIFdvcmtHcm91cFNpemVPY3RhbCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAg
ICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDAxMykgaW47XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KVxuIgotICAgICAgICAie1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoIWNvbXBpbGUoc2hh
ZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9u
IGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8v
IFdvcmsgZ3JvdXAgc2l6ZSBpcyBuZWdhdGl2ZS4gSXQgaXMgc3BlY2lmaWVkIGluIGhleGFkZWNp
bWFsLgotVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBXb3JrR3JvdXBTaXplTmVn
YXRpdmVIZXhhZGVjaW1hbCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5n
ID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3Np
emVfeCA9IDB4RkZGRkZGRUMpIGluO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAg
ICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkK
LSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwg
ZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIE11bHRpcGxl
IHdvcmsgZ3JvdXAgbGF5b3V0IHF1YWxpZmllcnMgd2l0aCBkaWZmZXJpbmcgdmFsdWVzLgotLy8g
R0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCi1U
RVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIERpZmZlcmluZ0xheW91dFF1YWxpZmll
cnMpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIj
dmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSA1LCBsb2Nh
bF9zaXplX3ggPSA2KSBpbjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7
XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAg
ewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVj
dGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBNdWx0aXBsZSB3b3Jr
IGdyb3VwIGlucHV0IHZhcmlhYmxlcyB3aXRoIGRpZmZlcmluZyBsb2NhbCBzaXplIHZhbHVlcy4K
LS8vIEdMU0wgRVMgMy4xMCBSZXZpc2lvbiA0LCA0LjQuMS4xIENvbXB1dGUgU2hhZGVyIElucHV0
cwotVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBNdWx0aXBsZUlucHV0VmFyaWFi
bGVzRGlmZmVyaW5nTG9jYWxTaXplKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJT
dHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCi0gICAgICAgICJsYXlvdXQobG9j
YWxfc2l6ZV94ID0gNSwgbG9jYWxfc2l6ZV95ID0gNikgaW47XG4iCi0gICAgICAgICJsYXlvdXQo
bG9jYWxfc2l6ZV94ID0gNSwgbG9jYWxfc2l6ZV95ID0gNykgaW47XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGls
ZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGls
YXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0K
LX0KLQotLy8gTXVsdGlwbGUgd29yayBncm91cCBpbnB1dCB2YXJpYWJsZXMgd2l0aCBkaWZmZXJp
bmcgbG9jYWwgc2l6ZSB2YWx1ZXMuCi0vLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNC40LjEu
MSBDb21wdXRlIFNoYWRlciBJbnB1dHMKLVRFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVz
dCwgTXVsdGlwbGVJbnB1dFZhcmlhYmxlc0RpZmZlcmluZ0xvY2FsU2l6ZTIpCi17Ci0gICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNc
biIKLSAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSA1KSBpbjtcbiIKLSAgICAgICAgImxh
eW91dChsb2NhbF9zaXplX3ggPSA1LCBsb2NhbF9zaXplX3kgPSA3KSBpbjtcbiIKLSAgICAgICAg
InZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChj
b21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBj
b21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0g
ICAgfQotfQotCi0vLyBNdWx0aXBsZSB3b3JrIGdyb3VwIGlucHV0IHZhcmlhYmxlcyB3aXRoIHRo
ZSBzYW1lIGxvY2FsIHNpemUgdmFsdWVzLiBJdCBzaG91bGQgY29tcGlsZS4KLS8vIEdMU0wgRVMg
My4xMCBSZXZpc2lvbiA0LCA0LjQuMS4xIENvbXB1dGUgU2hhZGVyIElucHV0cwotVEVTVF9GKE1h
bGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBNdWx0aXBsZUlucHV0VmFyaWFibGVzU2FtZUxvY2Fs
U2l6ZSkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAg
IiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDUsIGxv
Y2FsX3NpemVfeSA9IDYpIGluO1xuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDUs
IGxvY2FsX3NpemVfeSA9IDYpIGluO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAg
ICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykp
Ci0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4
cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBNdWx0aXBsZSB3
b3JrIGdyb3VwIGlucHV0IHZhcmlhYmxlcyB3aXRoIHRoZSBzYW1lIGxvY2FsIHNpemUgdmFsdWVz
LiBJdCBzaG91bGQgY29tcGlsZS4KLS8vIFNpbmNlIHRoZSBkZWZhdWx0IHZhbHVlIGlzIDEsIGl0
IHNob3VsZCBjb21waWxlLgotLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29t
cHV0ZSBTaGFkZXIgSW5wdXRzCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIE11
bHRpcGxlSW5wdXRWYXJpYWJsZXNTYW1lTG9jYWxTaXplMikKLXsKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAg
ICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDUpIGluO1xuIgotICAgICAgICAibGF5b3V0KGxvY2Fs
X3NpemVfeCA9IDUsIGxvY2FsX3NpemVfeSA9IDEpIGluO1xuIgotICAgICAgICAidm9pZCBtYWlu
KClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21waWxlKHNo
YWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlv
biBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0v
LyBNdWx0aXBsZSB3b3JrIGdyb3VwIGlucHV0IHZhcmlhYmxlcyB3aXRoIHRoZSBzYW1lIGxvY2Fs
IHNpemUgdmFsdWVzLiBJdCBzaG91bGQgY29tcGlsZS4KLS8vIFNpbmNlIHRoZSBkZWZhdWx0IHZh
bHVlIGlzIDEsIGl0IHNob3VsZCBjb21waWxlLgotLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQs
IDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNo
YWRlclRlc3QsIE11bHRpcGxlSW5wdXRWYXJpYWJsZXNTYW1lTG9jYWxTaXplMykKLXsKLSAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBl
c1xuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDUsIGxvY2FsX3NpemVfeSA9IDEp
IGluO1xuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDUpIGluO1xuIgotICAgICAg
ICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYg
KCFjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRl
ciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7Ci0g
ICAgfQotfQotCi0vLyBTcGVjaWZ5aW5nIHJvd19tYWpvciBxdWFsaWZpZXIgaW4gYSB3b3JrIGdy
b3VwIHNpemUgbGF5b3V0LgotLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29t
cHV0ZSBTaGFkZXIgSW5wdXRzCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFJv
d01ham9ySW5Db21wdXRlSW5wdXRMYXlvdXQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImxheW91
dChsb2NhbF9zaXplX3ggPSA1LCByb3dfbWFqb3IpIGluO1xuIgotICAgICAgICAidm9pZCBtYWlu
KClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hh
ZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9u
IHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0K
LS8vIGxvY2FsIHNpemUgbGF5b3V0IGNhbiBiZSB1c2VkIG9ubHkgd2l0aCBjb21wdXRlIGlucHV0
IHZhcmlhYmxlcwotLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBT
aGFkZXIgSW5wdXRzCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFVuaWZvcm1D
b21wdXRlSW5wdXRMYXlvdXQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImxheW91dChsb2NhbF9z
aXplX3ggPSA1KSB1bmlmb3JtO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAg
IntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAg
ICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhw
ZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIGxvY2FsIHNpemUg
bGF5b3V0IGNhbiBiZSB1c2VkIG9ubHkgd2l0aCBjb21wdXRlIGlucHV0IHZhcmlhYmxlcwotLy8g
R0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCi1U
RVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFVuaWZvcm1CdWZmZXJDb21wdXRlSW5w
dXRMYXlvdXQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSA1
KSB1bmlmb3JtIFNvbWVCdWZmZXIgeyB2ZWM0IHNvbWV0aGluZzsgfTtcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21w
aWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAg
fQotfQotCi0vLyBsb2NhbCBzaXplIGxheW91dCBjYW4gYmUgdXNlZCBvbmx5IHdpdGggY29tcHV0
ZSBpbnB1dCB2YXJpYWJsZXMKLS8vIEdMU0wgRVMgMy4xMCBSZXZpc2lvbiA0LCA0LjQuMS4xIENv
bXB1dGUgU2hhZGVyIElucHV0cwotVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBT
dHJ1Y3RDb21wdXRlSW5wdXRMYXlvdXQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRl
clN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImxheW91dChs
b2NhbF9zaXplX3ggPSA1KSBzdHJ1Y3QgU29tZUJ1ZmZlciB7IHZlYzQgc29tZXRoaW5nOyB9O1xu
IgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7
Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8
PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBt
SW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIGxvY2FsIHNpemUgbGF5b3V0IGNhbiBiZSB1c2VkIG9u
bHkgd2l0aCBjb21wdXRlIGlucHV0IHZhcmlhYmxlcwotLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9u
IDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0
ZVNoYWRlclRlc3QsIFN0cnVjdEJvZHlDb21wdXRlSW5wdXRMYXlvdXQpCi17Ci0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIK
LSAgICAgICAgInN0cnVjdCBTIHtcbiIKLSAgICAgICAgIiAgIGxheW91dChsb2NhbF9zaXplX3gg
PSAxMikgdmVjNCBmb287XG4iCi0gICAgICAgICJ9O1xuIgotICAgICAgICAidm9pZCBtYWluKCki
Ci0gICAgICAgICJ7IgotICAgICAgICAifSI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5n
KSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRl
ZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIGxvY2Fs
IHNpemUgbGF5b3V0IGNhbiBiZSB1c2VkIG9ubHkgd2l0aCBjb21wdXRlIGlucHV0IHZhcmlhYmxl
cwotLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5w
dXRzCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFR5cGVDb21wdXRlSW5wdXRM
YXlvdXQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAg
ICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSA1KSB2
ZWM0O1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAg
In1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZB
SUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUg
IiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEludmFsaWQgdXNlIG9mIHRoZSBvdXQgc3Rv
cmFnZSBxdWFsaWZpZXIgaW4gYSBjb21wdXRlIHNoYWRlci4KLS8vIEdMU0wgRVMgMy4xMCBSZXZp
c2lvbiA0LCA0LjQuMS4xIENvbXB1dGUgU2hhZGVyIElucHV0cwotVEVTVF9GKE1hbGZvcm1lZENv
bXB1dGVTaGFkZXJUZXN0LCBJbnZhbGlkT3V0U3RvcmFnZVF1YWxpZmllcikKLXsKLSAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xu
IgotICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDE1KSBpbjtcbiIKLSAgICAgICAgIm91
dCB2ZWM0IG15T3V0cHV0O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAi
fVxuIjsKLQotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJl
ICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBJbnZhbGlkIHVzZSBvZiB0aGUgb3V0IHN0
b3JhZ2UgcXVhbGlmaWVyIGluIGEgY29tcHV0ZSBzaGFkZXIuCi0vLyBHTFNMIEVTIDMuMTAgUmV2
aXNpb24gNCwgNC40LjEuMSBDb21wdXRlIFNoYWRlciBJbnB1dHMKLVRFU1RfRihNYWxmb3JtZWRD
b21wdXRlU2hhZGVyVGVzdCwgSW52YWxpZE91dFN0b3JhZ2VRdWFsaWZpZXIyKQotewotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzEwIGVz
XG4iCi0gICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gMTUpIGluO1xuIgotICAgICAgICAi
b3V0IG15T3V0cHV0O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAifVxu
IjsKLQotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlM
KCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIg
PDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBJbnZhbGlkIHVzZSBvZiB0aGUgaW4gc3RvcmFn
ZSBxdWFsaWZpZXIuIENhbiBiZSBvbmx5IHVzZWQgdG8gZGVzY3JpYmUgdGhlIGxvY2FsIGJsb2Nr
IHNpemUuCi0vLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNC40LjEuMSBDb21wdXRlIFNoYWRl
ciBJbnB1dHMKLVRFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgSW52YWxpZEluU3Rv
cmFnZVF1YWxpZmllcikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0K
LSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVf
eCA9IDE1KSBpbjtcbiIKLSAgICAgICAgImluIHZlYzQgbXlJbnB1dDtcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBpZiAoY29tcGlsZShzaGFkZXJT
dHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3Vj
Y2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8g
SW52YWxpZCB1c2Ugb2YgdGhlIGluIHN0b3JhZ2UgcXVhbGlmaWVyLiBDYW4gYmUgb25seSB1c2Vk
IHRvIGRlc2NyaWJlIHRoZSBsb2NhbCBibG9jayBzaXplLgotLy8gVGhlIHRlc3QgY2hlY2tzIGEg
ZGlmZmVyZW50IHBhcnQgb2YgdGhlIEdMU0wgZ3JhbW1hciB0aGFuIHdoYXQgSW52YWxpZEluU3Rv
cmFnZVF1YWxpZmllciBjaGVja3MuCi0vLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNC40LjEu
MSBDb21wdXRlIFNoYWRlciBJbnB1dHMKLVRFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVz
dCwgSW52YWxpZEluU3RvcmFnZVF1YWxpZmllcjIpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImxh
eW91dChsb2NhbF9zaXplX3ggPSAxNSkgaW47XG4iCi0gICAgICAgICJpbiBteUlucHV0O1xuIgot
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGlmIChjb21w
aWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAg
fQotfQotCi0vLyBUaGUgbG9jYWxfc2l6ZSBsYXlvdXQgcXVhbGlmaWVyIGlzIG9ubHkgYXZhaWxh
YmxlIGluIGNvbXB1dGUgc2hhZGVycy4KLVRFU1RfRihNYWxmb3JtZWRWZXJ0ZXhTaGFkZXJHTEVT
MzFUZXN0LCBJbnZhbGlkVXNlT2ZMb2NhbFNpemVYKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCi0gICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImxheW91dChsb2NhbF9zaXplX3gg
PSAxNSkgaW4gdmVjNCBteUlucHV0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlPdXRwdXQ7XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBteU91dHB1dCA9IG15SW5w
dXQ7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkK
LSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwg
ZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFRoZSBsb2Nh
bF9zaXplIGxheW91dCBxdWFsaWZpZXIgaXMgb25seSBhdmFpbGFibGUgaW4gY29tcHV0ZSBzaGFk
ZXJzLgotVEVTVF9GKE1hbGZvcm1lZEZyYWdtZW50U2hhZGVyR0xFUzMxVGVzdCwgSW52YWxpZFVz
ZU9mTG9jYWxTaXplWCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0K
LSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCi0gICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gMTUpIGluIHZlYzQgbXlJ
bnB1dDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15T3V0cHV0O1xuIgotICAgICAgICAidm9pZCBt
YWluKCkge1xuIgotICAgICAgICAiICAgbXlPdXRwdXQgPSBteUlucHV0O1xuIgotICAgICAgICAi
fVxuIjsKLQotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJl
ICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBJdCBpcyBhIGNvbXBpbGUgdGltZSBlcnJv
ciB0byB1c2UgdGhlIGdsX1dvcmtHcm91cFNpemUgY29uc3RhbnQgaWYKLS8vIHRoZSBsb2NhbCBz
aXplIGhhcyBub3QgYmVlbiBkZWNsYXJlZCB5ZXQuCi0vLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24g
NCwgNy4xLjMgQ29tcHV0ZSBTaGFkZXIgU3BlY2lhbCBWYXJpYWJsZXMKLVRFU1RfRihNYWxmb3Jt
ZWRDb21wdXRlU2hhZGVyVGVzdCwgSW52YWxpZFVzYWdlT2ZXb3JrR3JvdXBTaXplKQotewotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzEw
IGVzXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAi
ICAgdXZlYzMgV29ya0dyb3VwU2l6ZSA9IGdsX1dvcmtHcm91cFNpemU7XG4iCi0gICAgICAgICJ9
XG4iCi0gICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gMTIpIGluO1xuIjsKLSAgICBpZiAo
Y29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIg
Y29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwot
ICAgIH0KLX0KLQotLy8gVGhlIHRlc3QgY292ZXJzIHRoZSBjb21wdXRlIHNoYWRlciBidWlsdC1p
biB2YXJpYWJsZXMgYW5kIGNvbnN0YW50cy4KLVRFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVy
VGVzdCwgQ29ycmVjdFVzYWdlT2ZDb21wdXRlQnVpbHRpbnMpCi17Ci0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAg
ICAgImxheW91dChsb2NhbF9zaXplX3ggPSAxMikgaW47XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgdXZlYzMgTnVtV29ya0dyb3VwcyA9IGds
X051bVdvcmtHcm91cHM7XG4iCi0gICAgICAgICIgICB1dmVjMyBXb3JrR3JvdXBTaXplID0gZ2xf
V29ya0dyb3VwU2l6ZTtcbiIKLSAgICAgICAgIiAgIHV2ZWMzIFdvcmtHcm91cElEID0gZ2xfV29y
a0dyb3VwSUQ7XG4iCi0gICAgICAgICIgICB1dmVjMyBHbG9iYWxJbnZvY2F0aW9uSUQgPSBnbF9H
bG9iYWxJbnZvY2F0aW9uSUQ7XG4iCi0gICAgICAgICIgICB1dmVjMyBMb2NhbEludm9jYXRpb25J
RCA9IGdsX0xvY2FsSW52b2NhdGlvbklEO1xuIgotICAgICAgICAiICAgdWludCBMb2NhbEludm9j
YXRpb25JbmRleCA9IGdsX0xvY2FsSW52b2NhdGlvbkluZGV4O1xuIgotICAgICAgICAifVxuIjsK
LSAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8
PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5m
b0xvZzsKLSAgICB9Ci19Ci0KLS8vIEl0IGlzIGlsbGVnYWwgdG8gd3JpdGUgdG8gYSBzcGVjaWFs
IHZhcmlhYmxlLgotVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBTcGVjaWFsVmFy
aWFibGVOdW1Xb3JrR3JvdXBzKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQotICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCi0gICAgICAgICJsYXlvdXQobG9jYWxf
c2l6ZV94ID0gMTIpIGluO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntc
biIKLSAgICAgICAgIiAgIGdsX051bVdvcmtHcm91cHMgPSB1dmVjMygxKTsgXG4iCi0gICAgICAg
ICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJl
ICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBJdCBpcyBpbGxlZ2FsIHRvIHdyaXRlIHRv
IGEgc3BlY2lhbCB2YXJpYWJsZS4KLVRFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwg
U3BlY2lhbFZhcmlhYmxlV29ya0dyb3VwSUQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImxheW91
dChsb2NhbF9zaXplX3ggPSAxMikgaW47XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAg
ICAgICAie1xuIgotICAgICAgICAiICAgZ2xfV29ya0dyb3VwSUQgPSB1dmVjMygxKTsgXG4iCi0g
ICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAg
ICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBm
YWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBJdCBpcyBpbGxlZ2FsIHRvIHdy
aXRlIHRvIGEgc3BlY2lhbCB2YXJpYWJsZS4KLVRFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVy
VGVzdCwgU3BlY2lhbFZhcmlhYmxlTG9jYWxJbnZvY2F0aW9uSUQpCi17Ci0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAg
ICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSAxMikgaW47XG4iCi0gICAgICAgICJ2b2lkIG1h
aW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgZ2xfTG9jYWxJbnZvY2F0aW9uSUQg
PSB1dmVjMygxKTsgXG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0
cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNj
ZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBJ
dCBpcyBpbGxlZ2FsIHRvIHdyaXRlIHRvIGEgc3BlY2lhbCB2YXJpYWJsZS4KLVRFU1RfRihNYWxm
b3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgU3BlY2lhbFZhcmlhYmxlR2xvYmFsSW52b2NhdGlvbklE
KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3Zl
cnNpb24gMzEwIGVzXG4iCi0gICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gMTIpIGluO1xu
IgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgIGds
X0dsb2JhbEludm9jYXRpb25JRCA9IHV2ZWMzKDEpOyBcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAg
aWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hh
ZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xv
ZzsKLSAgICB9Ci19Ci0KLS8vIEl0IGlzIGlsbGVnYWwgdG8gd3JpdGUgdG8gYSBzcGVjaWFsIHZh
cmlhYmxlLgotVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBTcGVjaWFsVmFyaWFi
bGVMb2NhbEludm9jYXRpb25JbmRleCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAibGF5b3V0KGxv
Y2FsX3NpemVfeCA9IDEyKSBpbjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAg
ICJ7XG4iCi0gICAgICAgICIgICBnbF9Mb2NhbEludm9jYXRpb25JbmRleCA9IDE7IFxuIgotICAg
ICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAg
ICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFp
bHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gSXQgaXMgaWxsZWdhbCB0byB3cml0
ZSB0byBhIHNwZWNpYWwgdmFyaWFibGUuCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRl
c3QsIFNwZWNpYWxWYXJpYWJsZVdvcmtHcm91cFNpemUpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAg
ImxheW91dChsb2NhbF9zaXplX3ggPSAxMikgaW47XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxu
IgotICAgICAgICAie1xuIgotICAgICAgICAiICAgZ2xfV29ya0dyb3VwU2l6ZSA9IHV2ZWMzKDEp
OyBcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAg
ICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhw
ZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEl0IGlzIGlsbGVn
YWwgdG8gYXBwbHkgYW4gdW5hcnkgb3BlcmF0b3IgdG8gYSBzYW1wbGVyLgotVEVTVF9GKE1hbGZv
cm1lZFNoYWRlclRlc3QsIFNhbXBsZXJVbmFyeU9wZXJhdG9yKQotewotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCBzO1xuIgotICAgICAgICAidm9pZCBtYWlu
KClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgIC1zO1xuIgotICAgICAgICAiICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCgwKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUo
c2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0
aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19
Ci0KLS8vIEludmFyaWFudCBjYW5ub3QgYmUgdXNlZCB3aXRoIGEgd29yayBncm91cCBzaXplIGRl
Y2xhcmF0aW9uLgotVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBJbnZhcmlhbnRC
bG9ja1NpemUpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImludmFyaWFudCBsYXlvdXQobG9jYWxf
c2l6ZV94ID0gMTUpIGluO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAi
fVxuIjsKLQotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJl
ICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBJbnZhcmlhbnQgY2Fubm90IGJlIHVzZWQg
d2l0aCBhIG5vbi1vdXRwdXQgdmFyaWFibGUgaW4gRVNTTDMuCi1URVNUX0YoTWFsZm9ybWVkU2hh
ZGVyVGVzdCwgSW52YXJpYW50Tm9uT3VwdXQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgImludmFy
aWFudCBpbnQgdmFsdWU7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICJ9
XG4iOwotCi0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZB
SUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUg
IiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEludmFyaWFudCBkZWNsYXJhdGlvbiBzaG91
bGQgZm9sbG93IHRoZSBmb2xsb3dpbmcgZm9ybWF0ICJpbnZhcmlhbnQgPG91dCB2YXJpYWJsZSBu
YW1lPiIuCi0vLyBUZXN0IGhhdmluZyBhbiBpbmNvcnJlY3QgcXVhbGlmaWVyIGluIHRoZSBpbnZh
cmlhbnQgZGVjbGFyYXRpb24uCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgSW52YXJpYW50
RGVjbGFyYXRpb25XaXRoU3RvcmFnZVF1YWxpZmllcikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBmb287XG4iCi0g
ICAgICAgICJpbnZhcmlhbnQgY2VudHJvaWQgZm9vO1xuIgotICAgICAgICAidm9pZCBtYWluKCkg
e1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAg
IHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBl
Y3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gSW52YXJpYW50IGRl
Y2xhcmF0aW9uIHNob3VsZCBmb2xsb3cgdGhlIGZvbGxvd2luZyBmb3JtYXQgImludmFyaWFudCA8
b3V0IHZhcmlhYmxlIG5hbWU+Ii4KLS8vIFRlc3QgaGF2aW5nIGFuIGluY29ycmVjdCBwcmVjaXNp
b24gcXVhbGlmaWVyIGluIHRoZSBpbnZhcmlhbnQgZGVjbGFyYXRpb24uCi1URVNUX0YoTWFsZm9y
bWVkU2hhZGVyVGVzdCwgSW52YXJpYW50RGVjbGFyYXRpb25XaXRoUHJlY2lzaW9uUXVhbGlmaWVy
KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAg
ICAgICAgIm91dCB2ZWM0IGZvbztcbiIKLSAgICAgICAgImludmFyaWFudCBoaWdocCBmb287XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21w
aWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAg
fQotfQotCi0vLyBJbnZhcmlhbnQgZGVjbGFyYXRpb24gc2hvdWxkIGZvbGxvdyB0aGUgZm9sbG93
aW5nIGZvcm1hdCAiaW52YXJpYW50IDxvdXQgdmFyaWFibGUgbmFtZT4iLgotLy8gVGVzdCBoYXZp
bmcgYW4gaW5jb3JyZWN0IGxheW91dCBxdWFsaWZpZXIgaW4gdGhlIGludmFyaWFudCBkZWNsYXJh
dGlvbi4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBJbnZhcmlhbnREZWNsYXJhdGlvbldp
dGhMYXlvdXRRdWFsaWZpZXIpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgZm9vO1xuIgotICAgICAgICAiaW52YXJp
YW50IGxheW91dChsb2NhdGlvbj0wKSBmb287XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
Ci0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewot
ICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGlu
ZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBWYXJpYWJsZSBkZWNsYXJh
dGlvbiB3aXRoIGJvdGggaW52YXJpYW50IGFuZCBsYXlvdXQgcXVhbGlmaWVycyBpcyBub3QgdmFs
aWQgaW4gdGhlIGZvcm1hbCBncmFtbWFyCi0vLyBwcm92aWRlZCBpbiB0aGUgRVNTTCAzLjAwIHNw
ZWMuIEVTU0wgMy4xMCBzdGFydHMgYWxsb3dpbmcgdGhpcyBjb21iaW5hdGlvbiwgYnV0IEVTU0wg
My4wMCBzaG91bGQKLS8vIHN0aWxsIGRpc2FsbG93IGl0LgotVEVTVF9GKE1hbGZvcm1lZFNoYWRl
clRlc3QsIFZhcmlhYmxlRGVjbGFyYXRpb25XaXRoSW52YXJpYW50QW5kTGF5b3V0UXVhbGlmaWVy
RVNTTDMwMCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAg
ICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCi0gICAgICAgICJpbnZhcmlhbnQgbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IHZlYzQgbXlf
RnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAifVxuIjsK
LSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8
ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1J
bmZvTG9nOwotICAgIH0KLX0KLQotLy8gQml0IHNoaWZ0IHdpdGggYSByaHMgdmFsdWUgPiAzMSBo
YXMgYW4gdW5kZWZpbmVkIHJlc3VsdCBpbiB0aGUgR0xTTCBzcGVjLiBXZSBkaXNhbGxvdyBpdC4K
LS8vIEVTU0wgMy4wMC42IHNlY3Rpb24gNS45LgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3Qs
IFNoaWZ0QnkzMikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICB1aW50IHUgPSAx
dSA8PCAzMnU7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmlu
ZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVk
ZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBUZXN0
IHRoYXQgZGVmZXJyaW5nIGdsb2JhbCB2YXJpYWJsZSBpbml0IHdvcmtzIHdpdGggYW4gZW1wdHkg
bWFpbigpLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIERlZmVyR2xvYmFsVmFyaWFibGVJ
bml0V2l0aEVtcHR5TWFpbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5n
ID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9y
bSBmbG9hdCB1O1xuIgotICAgICAgICAiZmxvYXQgZm9vID0gdTtcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpIHt9XG4iOwotICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAg
ICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3Vj
Y2VzcyAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gVGVzdCB0aGF0IHBydW5pbmcgZW1w
dHkgZGVjbGFyYXRpb25zIGZyb20gbG9vcCBpbml0IGV4cHJlc3Npb24gd29ya3MuCi1URVNUX0Yo
TWFsZm9ybWVkU2hhZGVyVGVzdCwgRW1wdHlEZWNsYXJhdGlvbkFzTG9vcEluaXQpCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAg
ZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0
IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAg
IntcbiIKLSAgICAgICAgIiAgICBpbnQgaSA9IDA7XG4iCi0gICAgICAgICIgICAgZm9yIChpbnQ7
IGkgPCAzOyBpKyspXG4iCi0gICAgICAgICIgICAge1xuIgotICAgICAgICAiICAgICAgICBteV9G
cmFnQ29sb3IgPSB2ZWM0KGkpO1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgIn1cbiI7
Ci0gICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkg
PDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUlu
Zm9Mb2c7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL05WX2RyYXdfYnVmZmVyc190ZXN0LmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9OVl9kcmF3X2J1ZmZlcnNf
dGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5YzQzYzkzY2IyZTA3MmZi
YzI2OGFmNzY4ZTU3ODMzYTIyMjgyOWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVy
X3Rlc3RzL05WX2RyYXdfYnVmZmVyc190ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICsw
LDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gTlZfZHJhd19idWZmZXJzX3Rlc3QuY3BwOgotLy8gICBU
ZXN0IGZvciBOVl9kcmF3X2J1ZmZlcnMgc2V0dGluZwotLy8KLQotI2luY2x1ZGUgImFuZ2xlX2ds
LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxh
bmcuaCIKLSNpbmNsdWRlICJ0ZXN0cy90ZXN0X3V0aWxzL2NvbXBpbGVyX3Rlc3QuaCIKLQotY2xh
c3MgTlZEcmF3QnVmZmVyc1Rlc3QgOiBwdWJsaWMgTWF0Y2hPdXRwdXRDb2RlVGVzdAotewotICBw
dWJsaWM6Ci0gICAgTlZEcmF3QnVmZmVyc1Rlc3QoKSA6IE1hdGNoT3V0cHV0Q29kZVRlc3QoR0xf
RlJBR01FTlRfU0hBREVSLCAwLCBTSF9FU1NMX09VVFBVVCkKLSAgICB7Ci0gICAgICAgIFNoQnVp
bHRJblJlc291cmNlcyAqcmVzb3VyY2VzID0gZ2V0UmVzb3VyY2VzKCk7Ci0gICAgICAgIHJlc291
cmNlcy0+TWF4RHJhd0J1ZmZlcnMgICAgID0gODsKLSAgICAgICAgcmVzb3VyY2VzLT5FWFRfZHJh
d19idWZmZXJzICAgPSAxOwotICAgICAgICByZXNvdXJjZXMtPk5WX2RyYXdfYnVmZmVycyAgICA9
IDE7Ci0gICAgfQotfTsKLQotVEVTVF9GKE5WRHJhd0J1ZmZlcnNUZXN0LCBOVkRyYXdCdWZmZXJz
KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI2V4
dGVuc2lvbiBHTF9FWFRfZHJhd19idWZmZXJzIDogcmVxdWlyZVxuIgotICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAg
ICIgICBnbF9GcmFnRGF0YVswXSA9IHZlYzQoMS4wKTtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdE
YXRhWzFdID0gdmVjNCgwLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRl
clN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkNvZGUoIkdMX05WX2RyYXdfYnVmZmVy
cyIpKTsKLSAgICBBU1NFUlRfRkFMU0UoZm91bmRJbkNvZGUoIkdMX0VYVF9kcmF3X2J1ZmZlcnMi
KSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29t
cGlsZXJfdGVzdHMvUGFja19VbnBhY2tfdGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvUGFja19VbnBhY2tfdGVzdC5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1NjczZDVmNzkxZmNiNTYwNzAxMjEzOWU5Y2RlZjEwZjFm
NDcwYjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1BhY2tfVW5wYWNr
X3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLS8vCi0vLyBDb3B5cmln
aHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwot
Ly8gUGFja19VbnBhY2tfdGVzdC5jcHA6Ci0vLyAgIFRlc3RzIGZvciB0aGUgZW11bGF0aW5nIHBh
Y2tfdW5wYWNrIGZ1bmN0aW9ucyBmb3IgR0xTTC4KLS8vCi0KLSNpbmNsdWRlICJhbmdsZV9nbC5o
IgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5n
LmgiCi0jaW5jbHVkZSAidGVzdHMvdGVzdF91dGlscy9jb21waWxlcl90ZXN0LmgiCi0KLW5hbWVz
cGFjZQotewotCi1jbGFzcyBQYWNrVW5wYWNrVGVzdCA6IHB1YmxpYyBNYXRjaE91dHB1dENvZGVU
ZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICBQYWNrVW5wYWNrVGVzdCgpIDogTWF0Y2hPdXRwdXRDb2Rl
VGVzdChHTF9GUkFHTUVOVF9TSEFERVIsIDAsIFNIX0dMU0xfNDAwX0NPUkVfT1VUUFVUKSB7fQot
fTsKLQotLy8gQ2hlY2sgaWYgUGFja1Nub3JtMngxNiBFbXVsYXRpb24gZm9yIEdMU0wgPCA0LjIg
Y29tcGlsZSBjb3JyZWN0bHkuCi1URVNUX0YoUGFja1VucGFja1Rlc3QsIFBhY2tTbm9ybTJ4MTZF
bXVsYXRpb24pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgotICAgICAgICAibGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFn
Q29sb3I7IgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgdmVjMiB2O1xu
IgotICAgICAgICAiICAgdWludCB1ID0gcGFja1Nub3JtMngxNih2KTtcbiIKLSAgICAgICAgIiAg
IGZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShz
aGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5Db2RlKCJ1aW50IHdlYmdsX3Bh
Y2tTbm9ybTJ4MTZfZW11KHZlYzIgdikiKSk7Ci19Ci0KLS8vIENoZWNrIGlmIFVucGFja1Nub3Jt
MngxNiBFbXVsYXRpb24gZm9yIEdMU0wgPCA0LjIgY29tcGlsZSBjb3JyZWN0bHkuCi1URVNUX0Yo
UGFja1VucGFja1Rlc3QsIFVucGFja1Nub3JtMngxNkVtdWxhdGlvbikKLXsKLSAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgot
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJsYXlvdXQobG9j
YXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xvcjsiCi0gICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iCi0gICAgICAgICIgICB1aW50IHU7XG4iCi0gICAgICAgICIgICB2ZWMyIHY9dW5w
YWNrU25vcm0yeDE2KHUpO1xuIgotICAgICAgICAiICAgZnJhZ0NvbG9yID0gdmVjNCgwLjApO1xu
IgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJU
X1RSVUUoZm91bmRJbkNvZGUoInZlYzIgd2ViZ2xfdW5wYWNrU25vcm0yeDE2X2VtdSh1aW50IHUp
IikpOwotfQotCi0vLyBDaGVjayBpZiBQYWNrVW5vcm0yeDE2IEVtdWxhdGlvbiBmb3IgR0xTTCA8
IDQuMSBjb21waWxlcyBjb3JyZWN0bHkuCi1URVNUX0YoUGFja1VucGFja1Rlc3QsIFBhY2tVbm9y
bTJ4MTZFbXVsYXRpb24pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9
Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIgotICAgICAgICAibGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVj
NCBmcmFnQ29sb3I7IgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgdmVj
MiB2O1xuIgotICAgICAgICAiICAgdWludCB1ID0gcGFja1Vub3JtMngxNih2KTtcbiIKLSAgICAg
ICAgIiAgIGZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29t
cGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5Db2RlKCJ1aW50IHdl
YmdsX3BhY2tVbm9ybTJ4MTZfZW11KHZlYzIgdikiKSk7Ci19Ci0KLS8vIENoZWNrIGlmIFVucGFj
a1Nub3JtMngxNiBFbXVsYXRpb24gZm9yIEdMU0wgPCA0LjEgY29tcGlsZXMgY29ycmVjdGx5Lgot
VEVTVF9GKFBhY2tVbnBhY2tUZXN0LCBVbnBhY2tVbm9ybTJ4MTZFbXVsYXRpb24pCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAg
ZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAibGF5
b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29sb3I7IgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgdWludCB1O1xuIgotICAgICAgICAiICAgdmVj
MiB2PXVucGFja1Vub3JtMngxNih1KTtcbiIKLSAgICAgICAgIiAgIGZyYWdDb2xvciA9IHZlYzQo
MC4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5Db2RlKCJ2ZWMyIHdlYmdsX3VucGFja1Vub3JtMngxNl9lbXUo
dWludCB1KSIpKTsKLX0KLQotLy8gQ2hlY2sgaWYgUGFja0hhbGYyeDE2IEVtdWxhdGlvbiBmb3Ig
R0xTTCA8IDQuMiBjb21waWxlcyBjb3JyZWN0bHkuCi1URVNUX0YoUGFja1VucGFja1Rlc3QsIFBh
Y2tIYWxmMngxNkVtdWxhdGlvbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVt
cCB2ZWM0IGZyYWdDb2xvcjsiCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIg
ICB2ZWMyIHY7XG4iCi0gICAgICAgICIgICB1aW50IHU9cGFja0hhbGYyeDE2KHYpO1xuIgotICAg
ICAgICAiICAgZnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBj
b21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkNvZGUoInVpbnQg
d2ViZ2xfcGFja0hhbGYyeDE2X2VtdSh2ZWMyIHYpIikpOwotfQotCi0vLyBDaGVjayBpZiBVbnBh
Y2tIYWxmMngxNiBFbXVsYXRpb24gZm9yIEdMU0wgPCA0LjIgY29tcGlsZXMgY29ycmVjdGx5Lgot
VEVTVF9GKFBhY2tVbnBhY2tUZXN0LCBVbnBhY2tIYWxmMngxNkVtdWxhdGlvbikKLXsKLSAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBl
c1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJsYXlv
dXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xvcjsiCi0gICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICB1aW50IHU7XG4iCi0gICAgICAgICIgICB2ZWMy
IHY9dW5wYWNrSGFsZjJ4MTYodSk7XG4iCi0gICAgICAgICIgICBmcmFnQ29sb3IgPSB2ZWM0KDAu
MCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBB
U1NFUlRfVFJVRShmb3VuZEluQ29kZSgidmVjMiB3ZWJnbF91bnBhY2tIYWxmMngxNl9lbXUodWlu
dCB1KSIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9QcnVuZUVtcHR5RGVjbGFyYXRpb25z
X3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rl
c3RzL1BydW5lRW1wdHlEZWNsYXJhdGlvbnNfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDQ2NTIxMTdjNGE2MmY4NDI0MjE0NzEzODg5MTRiM2Q5MWMwNmVhMTQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1BydW5lRW1wdHlEZWNsYXJhdGlvbnNf
dGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0
IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8v
IFBydW5lRW1wdHlEZWNsYXJhdGlvbnNfdGVzdC5jcHA6Ci0vLyAgIFRlc3RzIGZvciBwcnVuaW5n
IGVtcHR5IGRlY2xhcmF0aW9ucy4KLS8vCi0KLSNpbmNsdWRlICJhbmdsZV9nbC5oIgotI2luY2x1
ZGUgImd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0jaW5j
bHVkZSAidGVzdHMvdGVzdF91dGlscy9jb21waWxlcl90ZXN0LmgiCi0KLW5hbWVzcGFjZQotewot
Ci1jbGFzcyBQcnVuZUVtcHR5RGVjbGFyYXRpb25zVGVzdCA6IHB1YmxpYyBNYXRjaE91dHB1dENv
ZGVUZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICBQcnVuZUVtcHR5RGVjbGFyYXRpb25zVGVzdCgpCi0g
ICAgICAgIDogTWF0Y2hPdXRwdXRDb2RlVGVzdChHTF9WRVJURVhfU0hBREVSLCAwLCBTSF9HTFNM
X0NPTVBBVElCSUxJVFlfT1VUUFVUKQotICAgIHsKLSAgICB9Ci19OwotCi1URVNUX0YoUHJ1bmVF
bXB0eURlY2xhcmF0aW9uc1Rlc3QsIEVtcHR5RGVjbGFyYXRpb25TdGFydHNEZWNsYXJhdG9yTGlz
dCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IHU7XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgZmxvYXQs
IGY7XG4iCi0gICAgICAgICIgICBnbF9Qb3NpdGlvbiA9IHZlYzQodSAqIGYpO1xuIgotICAgICAg
ICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUoZm91
bmRJbkNvZGUoImZsb2F0IGYiKSk7Ci0gICAgQVNTRVJUX1RSVUUobm90Rm91bmRJbkNvZGUoImZs
b2F0LCBmIikpOwotfQotCi1URVNUX0YoUHJ1bmVFbXB0eURlY2xhcmF0aW9uc1Rlc3QsIEVtcHR5
U3RydWN0RGVjbGFyYXRpb25XaXRoUXVhbGlmaWVycykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyBzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0g
ICAgICAgICJjb25zdCBzdHJ1Y3QgUyB7IGZsb2F0IGY7IH07XG4iCi0gICAgICAgICJ1bmlmb3Jt
IFMgczsiCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAi
ICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHMuZik7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBp
bGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQ29kZSgic3RydWN0IFMi
KSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkNvZGUoInVuaWZvcm0gUyIpKTsKLSAgICBBU1NF
UlRfVFJVRShub3RGb3VuZEluQ29kZSgiY29uc3Qgc3RydWN0IFMiKSk7Ci19Ci0KLX0gIC8vIG5h
bWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2Nv
bXBpbGVyX3Rlc3RzL1BydW5lVW51c2VkRnVuY3Rpb25zX3Rlc3QuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1BydW5lVW51c2VkRnVuY3Rpb25z
X3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODgwYWJlM2Y4NWQ4NzUw
MTcyNWY4YTIyMzdhODFhZDVkYmY1ZjAzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxl
cl90ZXN0cy9QcnVuZVVudXNlZEZ1bmN0aW9uc190ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDkxICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gUHJ1bmVVbnVzZWRGdW5jdGlvbnNfdGVzdC5j
cHA6Ci0vLyAgIFRlc3QgZm9yIHRoZSBwcnVuaW5nIG9mIHVudXNlZCBmdW5jdGlvbiB3aXRoIHRo
ZSBTSF9QUlVORV9VTlVTRURfRlVOQ1RJT05TIGNvbXBpbGUgZmxhZwotLy8KLQotI2luY2x1ZGUg
ImFuZ2xlX2dsLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJHTFNMQU5H
L1NoYWRlckxhbmcuaCIKLSNpbmNsdWRlICJ0ZXN0cy90ZXN0X3V0aWxzL2NvbXBpbGVyX3Rlc3Qu
aCIKLQotbmFtZXNwYWNlCi17Ci0KLWNsYXNzIFBydW5lVW51c2VkRnVuY3Rpb25zVGVzdCA6IHB1
YmxpYyBNYXRjaE91dHB1dENvZGVUZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICBQcnVuZVVudXNlZEZ1
bmN0aW9uc1Rlc3QoKSA6IE1hdGNoT3V0cHV0Q29kZVRlc3QoR0xfRlJBR01FTlRfU0hBREVSLCAw
LCBTSF9FU1NMX09VVFBVVCkge30KLQotICBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBjb21waWxlKGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcsIGJvb2wgcHJ1bmUpCi0gICAgewotICAgICAg
ICBpbnQgY29tcGlsYXRpb25GbGFncyA9IFNIX1ZBUklBQkxFUyB8IChwcnVuZSA/IDAgOiBTSF9E
T05UX1BSVU5FX1VOVVNFRF9GVU5DVElPTlMpOwotICAgICAgICBNYXRjaE91dHB1dENvZGVUZXN0
Ojpjb21waWxlKHNoYWRlclN0cmluZywgY29tcGlsYXRpb25GbGFncyk7Ci0gICAgfQotfTsKLQot
Ly8gQ2hlY2sgdGhhdCB1bnVzZWQgZnVuY3Rpb24gYW5kIHByb3RvdHlwZXMgYXJlIHJlbW92ZWQg
aWZmIHRoZSBvcHRpb25zIGlzIHNldAotVEVTVF9GKFBydW5lVW51c2VkRnVuY3Rpb25zVGVzdCwg
VW51c2VkRnVuY3Rpb25BbmRQcm90bykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAi
ZmxvYXQgdW51c2VkKGZsb2F0IGEpO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAg
ICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wKTtcbiIKLSAgICAgICAgIn1cbiIKLSAg
ICAgICAgImZsb2F0IHVudXNlZChmbG9hdCBhKSB7XG4iCi0gICAgICAgICIgICAgcmV0dXJuIGE7
XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nLCB0cnVlKTsKLSAg
ICBFWFBFQ1RfVFJVRShub3RGb3VuZEluQ29kZSgidW51c2VkKCIpKTsKLSAgICBFWFBFQ1RfVFJV
RShmb3VuZEluQ29kZSgibWFpbigiLCAxKSk7Ci0KLSAgICBjb21waWxlKHNoYWRlclN0cmluZywg
ZmFsc2UpOwotICAgIEVYUEVDVF9UUlVFKGZvdW5kSW5Db2RlKCJ1bnVzZWQoIiwgMikpOwotICAg
IEVYUEVDVF9UUlVFKGZvdW5kSW5Db2RlKCJtYWluKCIsIDEpKTsKLX0KLQotLy8gQ2hlY2sgdGhh
dCB1bmltcGxlbWVudGVkIHByb3RvdHlwZXMgYXJlIHJlbW92ZWQgaWZmIHRoZSBvcHRpb25zIGlz
IHNldAotVEVTVF9GKFBydW5lVW51c2VkRnVuY3Rpb25zVGVzdCwgVW5pbXBsZW1lbnRlZFByb3Rv
dHlwZSkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAiZmxvYXQgdW51c2VkKGZsb2F0
IGEpO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQoMS4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJT
dHJpbmcsIHRydWUpOwotICAgIEVYUEVDVF9UUlVFKG5vdEZvdW5kSW5Db2RlKCJ1bnVzZWQoIikp
OwotICAgIEVYUEVDVF9UUlVFKGZvdW5kSW5Db2RlKCJtYWluKCIsIDEpKTsKLQotICAgIGNvbXBp
bGUoc2hhZGVyU3RyaW5nLCBmYWxzZSk7Ci0gICAgRVhQRUNUX1RSVUUoZm91bmRJbkNvZGUoInVu
dXNlZCgiLCAxKSk7Ci0gICAgRVhQRUNUX1RSVUUoZm91bmRJbkNvZGUoIm1haW4oIiwgMSkpOwot
fQotCi0vLyBDaGVjayB0aGF0IHVzZWQgZnVuY3Rpb25zIGFyZSBub3QgcHJ1bnVlZCAoZHVoKQot
VEVTVF9GKFBydW5lVW51c2VkRnVuY3Rpb25zVGVzdCwgVXNlZEZ1bmN0aW9uKQotewotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCi0gICAgICAgICJmbG9hdCB1c2VkKGZsb2F0IGEpO1xuIgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQodXNlZCgx
LjApKTtcbiIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgImZsb2F0IHVzZWQoZmxvYXQgYSkge1xu
IgotICAgICAgICAiICAgIHJldHVybiBhO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxl
KHNoYWRlclN0cmluZywgdHJ1ZSk7Ci0gICAgRVhQRUNUX1RSVUUoZm91bmRJbkNvZGUoInVzZWQo
IiwgMykpOwotICAgIEVYUEVDVF9UUlVFKGZvdW5kSW5Db2RlKCJtYWluKCIsIDEpKTsKLQotICAg
IGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBmYWxzZSk7Ci0gICAgRVhQRUNUX1RSVUUoZm91bmRJbkNv
ZGUoInVzZWQoIiwgMykpOwotICAgIEVYUEVDVF9UUlVFKGZvdW5kSW5Db2RlKCJtYWluKCIsIDEp
KTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2NvbXBpbGVyX3Rlc3RzL1F1YWxpZmljYXRpb25PcmRlckVTU0wzMV90ZXN0LmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9RdWFsaWZpY2F0aW9u
T3JkZXJFU1NMMzFfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmNTNi
NjgxNDJjMDI4NzI2MWM3ZWE3OGM0NjUwM2MyYzVjNzFkYjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2NvbXBpbGVyX3Rlc3RzL1F1YWxpZmljYXRpb25PcmRlckVTU0wzMV90ZXN0LmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDE4MiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIFF1YWxpZmljYXRp
b25PcmRlckVTU0wzMV90ZXN0LmNwcDoKLS8vICAgT3BlbkdMIEVTIDMuMSByZW1vdmVzIHRoZSBz
dHJpY3Qgb3JkZXIgb2YgcXVhbGlmaWVycyBpbXBvc2VkIGJ5IHRoZSBncmFtbWFyLgotLy8gICBU
aGlzIGZpbGUgY29udGFpbnMgdGVzdHMgZm9yIGludmFsaWQgb3JkZXIgYW5kIHVzYWdlIG9mIHF1
YWxpZmllcnMgaW4gR0xTTCBFUyAzLjEwLgotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQot
I2luY2x1ZGUgImFuZ2xlX2dsLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFu
c2xhdG9yRVNTTC5oIgotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgotI2luY2x1ZGUg
InRlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5oIgotCi1jbGFzcyBRdWFsaWZpY2F0aW9u
VmVydGV4U2hhZGVyVGVzdEVTU0wzMSA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Ci17Ci0gIHB1Ymxp
YzoKLSAgICBRdWFsaWZpY2F0aW9uVmVydGV4U2hhZGVyVGVzdEVTU0wzMSgpIHt9Ci0gIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQotICAgIHsKLSAgICAgICAgU2hCdWlsdElu
UmVzb3VyY2VzIHJlc291cmNlczsKLSAgICAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVz
b3VyY2VzKTsKLQotICAgICAgICBtVHJhbnNsYXRvciA9IG5ldyBUcmFuc2xhdG9yRVNTTChHTF9W
RVJURVhfU0hBREVSLCBTSF9HTEVTM18xX1NQRUMpOwotICAgICAgICBBU1NFUlRfVFJVRShtVHJh
bnNsYXRvci0+SW5pdChyZXNvdXJjZXMpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKSB7IGRlbGV0ZSBtVHJhbnNsYXRvcjsgfQotCi0gICAgLy8gUmV0dXJuIHRydWUgd2hl
biBjb21waWxhdGlvbiBzdWNjZWVkcwotICAgIGJvb2wgY29tcGlsZShjb25zdCBzdGQ6OnN0cmlu
ZyAmc2hhZGVyU3RyaW5nKQotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciAqc2hhZGVyU3RyaW5n
c1tdID0ge3NoYWRlclN0cmluZy5jX3N0cigpfTsKLSAgICAgICAgbUFTVFJvb3QgICAgICAgICAg
ICAgICAgICAgID0gbVRyYW5zbGF0b3ItPmNvbXBpbGVUcmVlRm9yVGVzdGluZyhzaGFkZXJTdHJp
bmdzLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU0hfSU5URVJNRURJQVRFX1RSRUUgfCBTSF9WQVJJQUJMRVMpOwotICAgICAgICBUSW5m
b1NpbmsgJmluZm9TaW5rID0gbVRyYW5zbGF0b3ItPmdldEluZm9TaW5rKCk7Ci0gICAgICAgIG1J
bmZvTG9nICAgICAgICAgICAgPSBpbmZvU2luay5pbmZvLmNfc3RyKCk7Ci0gICAgICAgIHJldHVy
biBtQVNUUm9vdCAhPSBudWxscHRyOwotICAgIH0KLQotICAgIGNvbnN0IFRJbnRlcm1TeW1ib2wg
KmZpbmRTeW1ib2xJbkFTVChjb25zdCBUU3RyaW5nICZzeW1ib2xOYW1lLCBUQmFzaWNUeXBlIGJh
c2ljVHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBGaW5kU3ltYm9sTm9kZShtQVNUUm9vdCwg
c3ltYm9sTmFtZSwgYmFzaWNUeXBlKTsKLSAgICB9Ci0KLSAgcHJvdGVjdGVkOgotICAgIFRyYW5z
bGF0b3JFU1NMICptVHJhbnNsYXRvcjsKLSAgICBUSW50ZXJtTm9kZSAqbUFTVFJvb3Q7Ci0gICAg
c3RkOjpzdHJpbmcgbUluZm9Mb2c7Ci19OwotCi0vLyBHTFNMIEVTIDMuMTAgaGFzIHJlbGF4ZWQg
Y2hlY2tzIG9uIHF1YWxpZmllciBvcmRlci4gQW55IG9yZGVyIGlzIGNvcnJlY3QuCi1URVNUX0Yo
UXVhbGlmaWNhdGlvblZlcnRleFNoYWRlclRlc3RFU1NMMzEsIENlbnRyb2lkT3V0KQotewotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzEw
IGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbG93cCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCBj
ZW50cm9pZCBmbG9hdCBzb21ldGhpbmc7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKXtcbiIKLSAg
ICAgICAgIiAgIHNvbWV0aGluZyA9IDEuMDtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFj
b21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBj
b21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzIiA8PCBtSW5mb0xvZzsKLSAgICB9
Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgY29uc3QgVEludGVybVN5bWJvbCAqbm9kZSA9IGZp
bmRTeW1ib2xJbkFTVCgic29tZXRoaW5nIiwgRWJ0RmxvYXQpOwotICAgICAgICBBU1NFUlRfTkUo
bnVsbHB0ciwgbm9kZSk7Ci0KLSAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUgPSBub2RlLT5nZXRU
eXBlKCk7Ci0gICAgICAgIEVYUEVDVF9FUShFdnFDZW50cm9pZE91dCwgdHlwZS5nZXRRdWFsaWZp
ZXIoKSk7Ci0gICAgfQotfQotCi0vLyBHTFNMIEVTIDMuMTAgaGFzIHJlbGF4ZWQgY2hlY2tzIG9u
IHF1YWxpZmllciBvcmRlci4gQW55IG9yZGVyIGlzIGNvcnJlY3QuCi1URVNUX0YoUXVhbGlmaWNh
dGlvblZlcnRleFNoYWRlclRlc3RFU1NMMzEsIEFsbFF1YWxpZmllcnNNaXhlZCkKLXsKLSAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBl
c1xuIgotICAgICAgICAicHJlY2lzaW9uIGxvd3AgZmxvYXQ7XG4iCi0gICAgICAgICJoaWdocCBv
dXQgaW52YXJpYW50IGNlbnRyb2lkIGZsYXQgdmVjNCBzb21ldGhpbmc7XG4iCi0gICAgICAgICJ2
b2lkIG1haW4oKXtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21waWxlKHNoYWRlclN0
cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWls
ZWQsIGV4cGVjdGluZyBzdWNjZXNzIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci0gICAgZWxzZQotICAg
IHsKLSAgICAgICAgY29uc3QgVEludGVybVN5bWJvbCAqbm9kZSA9IGZpbmRTeW1ib2xJbkFTVCgi
c29tZXRoaW5nIiwgRWJ0RmxvYXQpOwotICAgICAgICBBU1NFUlRfTkUobnVsbHB0ciwgbm9kZSk7
Ci0KLSAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUgPSBub2RlLT5nZXRUeXBlKCk7Ci0gICAgICAg
IEVYUEVDVF9UUlVFKHR5cGUuaXNJbnZhcmlhbnQoKSk7Ci0gICAgICAgIEVYUEVDVF9FUShFdnFG
bGF0T3V0LCB0eXBlLmdldFF1YWxpZmllcigpKTsKLSAgICAgICAgRVhQRUNUX0VRKEVicEhpZ2gs
IHR5cGUuZ2V0UHJlY2lzaW9uKCkpOwotICAgIH0KLX0KLQotLy8gR0xTTCBFUyAzLjEwIGFsbG93
cyBtdWx0aXBsZSBsYXlvdXQgcXVhbGlmaWVycyB0byBiZSBzcGVjaWZpZWQuCi1URVNUX0YoUXVh
bGlmaWNhdGlvblZlcnRleFNoYWRlclRlc3RFU1NMMzEsIE11bHRpcGxlTGF5b3V0cykKLXsKLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMx
MCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIGxvd3AgZmxvYXQ7XG4iCi0gICAgICAgICJpbiBs
YXlvdXQobG9jYXRpb249MSkgbGF5b3V0KGxvY2F0aW9uPTIpIHZlYzQgc29tZXRoaW5nO1xuIgot
ICAgICAgICAidm9pZCBtYWluKCl7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmICghY29tcGls
ZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGls
YXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyIgPDwgbUluZm9Mb2c7Ci0gICAgfQotICAg
IGVsc2UKLSAgICB7Ci0gICAgICAgIGNvbnN0IFRJbnRlcm1TeW1ib2wgKm5vZGUgPSBmaW5kU3lt
Ym9sSW5BU1QoInNvbWV0aGluZyIsIEVidEZsb2F0KTsKLSAgICAgICAgQVNTRVJUX05FKG51bGxw
dHIsIG5vZGUpOwotCi0gICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlID0gbm9kZS0+Z2V0VHlwZSgp
OwotICAgICAgICBFWFBFQ1RfRVEoRXZxVmVydGV4SW4sIHR5cGUuZ2V0UXVhbGlmaWVyKCkpOwot
ICAgICAgICBFWFBFQ1RfRVEoMiwgdHlwZS5nZXRMYXlvdXRRdWFsaWZpZXIoKS5sb2NhdGlvbik7
Ci0gICAgfQotfQotCi0vLyBUaGUgdGVzdCBjaGVja3MgbGF5b3V0IHF1YWxpZmllciBvdmVycmlk
aW5nIHdoZW4gbXVsdGlwbGUgbGF5b3V0cyBhcmUgc3BlY2lmaWVkLgotVEVTVF9GKFF1YWxpZmlj
YXRpb25WZXJ0ZXhTaGFkZXJUZXN0RVNTTDMxLCBNdWx0aXBsZUxheW91dHNJbnRlcmZhY2VCbG9j
aykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2
ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIGxvd3AgZmxvYXQ7XG4iCi0gICAg
ICAgICJvdXQgZmxvYXQgc29tZVZhbHVlO1xuIgotICAgICAgICAibGF5b3V0KHNoYXJlZCkgbGF5
b3V0KHN0ZDE0MCkgbGF5b3V0KGNvbHVtbl9tYWpvcikgdW5pZm9ybSBNeUludGVyZmFjZVxuIgot
ICAgICAgICAieyB2ZWM0IHNvbWV0aGluZzsgfSBNeUludGVyZmFjZU5hbWU7XG4iCi0gICAgICAg
ICJ2b2lkIG1haW4oKXtcbiIKLSAgICAgICAgIiAgIHNvbWVWYWx1ZSA9IE15SW50ZXJmYWNlTmFt
ZS5zb21ldGhpbmcucjtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21waWxlKHNoYWRl
clN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBm
YWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci0gICAgZWxzZQot
ICAgIHsKLSAgICAgICAgY29uc3QgVEludGVybVN5bWJvbCAqbm9kZSA9IGZpbmRTeW1ib2xJbkFT
VCgiTXlJbnRlcmZhY2VOYW1lIiwgRWJ0SW50ZXJmYWNlQmxvY2spOwotICAgICAgICBBU1NFUlRf
TkUobnVsbHB0ciwgbm9kZSk7Ci0KLSAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUgICAgICAgICAg
ICAgICAgPSBub2RlLT5nZXRUeXBlKCk7Ci0gICAgICAgIFRMYXlvdXRRdWFsaWZpZXIgbGF5b3V0
UXVhbGlmaWVyID0gdHlwZS5nZXRMYXlvdXRRdWFsaWZpZXIoKTsKLSAgICAgICAgRVhQRUNUX0VR
KEVic1N0ZDE0MCwgbGF5b3V0UXVhbGlmaWVyLmJsb2NrU3RvcmFnZSk7Ci0gICAgICAgIEVYUEVD
VF9FUShFbXBDb2x1bW5NYWpvciwgbGF5b3V0UXVhbGlmaWVyLm1hdHJpeFBhY2tpbmcpOwotICAg
IH0KLX0KLQotLy8gVGhlIHRlc3QgY2hlY2tzIGxheW91dCBxdWFsaWZpZXIgb3ZlcnJpZGluZyB3
aGVuIG11bHRpcGxlIGxheW91dHMgYXJlIHNwZWNpZmllZC4KLVRFU1RfRihRdWFsaWZpY2F0aW9u
VmVydGV4U2hhZGVyVGVzdEVTU0wzMSwgTXVsdGlwbGVMYXlvdXRzSW50ZXJmYWNlQmxvY2syKQot
ewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNp
b24gMzEwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbG93cCBmbG9hdDtcbiIKLSAgICAgICAg
Im91dCBmbG9hdCBzb21lVmFsdWU7XG4iCi0gICAgICAgICJsYXlvdXQocm93X21ham9yKSBsYXlv
dXQoc3RkMTQwKSBsYXlvdXQoc2hhcmVkKSB1bmlmb3JtIE15SW50ZXJmYWNlXG4iCi0gICAgICAg
ICJ7IHZlYzQgc29tZXRoaW5nOyB9IE15SW50ZXJmYWNlTmFtZTtcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpe1xuIgotICAgICAgICAiICAgc29tZVZhbHVlID0gTXlJbnRlcmZhY2VOYW1lLnNvbWV0
aGluZy5yO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5n
KSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwg
ZXhwZWN0aW5nIHN1Y2Nlc3MiIDw8IG1JbmZvTG9nOwotICAgIH0KLSAgICBlbHNlCi0gICAgewot
ICAgICAgICBjb25zdCBUSW50ZXJtU3ltYm9sICpub2RlID0gZmluZFN5bWJvbEluQVNUKCJNeUlu
dGVyZmFjZU5hbWUiLCBFYnRJbnRlcmZhY2VCbG9jayk7Ci0gICAgICAgIEFTU0VSVF9ORShudWxs
cHRyLCBub2RlKTsKLQotICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSAgICAgICAgICAgICAgICA9
IG5vZGUtPmdldFR5cGUoKTsKLSAgICAgICAgVExheW91dFF1YWxpZmllciBsYXlvdXRRdWFsaWZp
ZXIgPSB0eXBlLmdldExheW91dFF1YWxpZmllcigpOwotICAgICAgICBFWFBFQ1RfRVEoRWJzU2hh
cmVkLCBsYXlvdXRRdWFsaWZpZXIuYmxvY2tTdG9yYWdlKTsKLSAgICAgICAgRVhQRUNUX0VRKEVt
cFJvd01ham9yLCBsYXlvdXRRdWFsaWZpZXIubWF0cml4UGFja2luZyk7Ci0gICAgfQotfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3Rz
L1F1YWxpZmljYXRpb25PcmRlcl90ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9jb21waWxlcl90ZXN0cy9RdWFsaWZpY2F0aW9uT3JkZXJfdGVzdC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyZTVhNjNhNThkNmQ4MGYyMjJhNDFhMzU2MThkMTBm
ZGRhMmU1OTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1F1YWxpZmlj
YXRpb25PcmRlcl90ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2OSArMCwwIEBACi0vLwot
Ly8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgotLy8KLS8vIFF1YWxpZmljYXRpb25PcmRlcl90ZXN0LmNwcDoKLS8vICAgT3BlbkdMIEVT
IDMuMSByZW1vdmVzIHRoZSBzdHJpY3Qgb3JkZXIgb2YgcXVhbGlmaWVycyBpbXBvc2VkIGJ5IHRo
ZSBncmFtbWFyLgotLy8gICBUaGlzIGZpbGUgY29udGFpbnMgdGVzdHMgZm9yIGludmFsaWQgb3Jk
ZXIgYW5kIHVzYWdlIG9mIHF1YWxpZmllcnMuCi0KLSNpbmNsdWRlICJhbmdsZV9nbC5oIgotI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0j
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5oIgotCi1jbGFzcyBR
dWFsaWZpY2F0aW9uT3JkZXJTaGFkZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QKLXsKLSAg
cHVibGljOgotICAgIFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QoKSB7fQotCi0gIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7fQotCi0gICAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkge30KLQotICAgIC8vIFJldHVybiB0cnVlIHdoZW4gY29tcGlsYXRpb24gc3VjY2Vl
ZHMKLSAgICBib29sIGNvbXBpbGUoY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZywgR0xl
bnVtIHNoYWRlclR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjKQotICAgIHsKLSAgICAgICAgU2hCdWls
dEluUmVzb3VyY2VzIHJlc291cmNlczsKLSAgICAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygm
cmVzb3VyY2VzKTsKLSAgICAgICAgcmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0gKHNwZWMgPT0g
U0hfR0xFUzJfU1BFQykgPyAxIDogODsKLQotICAgICAgICBUcmFuc2xhdG9yRVNTTCAqdHJhbnNs
YXRvciA9IG5ldyBUcmFuc2xhdG9yRVNTTChzaGFkZXJUeXBlLCBzcGVjKTsKLSAgICAgICAgRVhQ
RUNUX1RSVUUodHJhbnNsYXRvci0+SW5pdChyZXNvdXJjZXMpKTsKLQotICAgICAgICBjb25zdCBj
aGFyICpzaGFkZXJTdHJpbmdzW10gPSB7c2hhZGVyU3RyaW5nLmNfc3RyKCl9OwotICAgICAgICBi
b29sIGNvbXBpbGF0aW9uU3VjY2VzcyAgICAgPSB0cmFuc2xhdG9yLT5jb21waWxlKHNoYWRlclN0
cmluZ3MsIDEsIFNIX0lOVEVSTUVESUFURV9UUkVFKTsKLSAgICAgICAgVEluZm9TaW5rICZpbmZv
U2luayAgICAgICAgID0gdHJhbnNsYXRvci0+Z2V0SW5mb1NpbmsoKTsKLSAgICAgICAgbUluZm9M
b2cgICAgICAgICAgICAgICAgICAgID0gaW5mb1NpbmsuaW5mby5jX3N0cigpOwotCi0gICAgICAg
IGRlbGV0ZSB0cmFuc2xhdG9yOwotCi0gICAgICAgIHJldHVybiBjb21waWxhdGlvblN1Y2Nlc3M7
Ci0gICAgfQotCi0gIHByb3RlY3RlZDoKLSAgICBzdGQ6OnN0cmluZyBtSW5mb0xvZzsKLX07Ci0K
LS8vIFJlcGVhdGluZyBjZW50cm9pZCBxdWFsaWZpZXIgaXMgaW52YWxpZC4KLVRFU1RfRihRdWFs
aWZpY2F0aW9uT3JkZXJTaGFkZXJUZXN0LCBSZXBlYXRpbmdDZW50cm9pZCkKLXsKLSAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xu
IgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJmbGF0IGNl
bnRyb2lkIGNlbnRyb2lkIGluIGZsb2F0IG15VmFsdWU7XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBH
TF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzXzFfU1BFQykpCi0gICAgewotICAgICAgICBGQUlM
KCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIg
PDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBSZXBlYXRpbmcgdW5pZm9ybSBzdG9yYWdlIHF1
YWxpZmllcnMgaXMgaW52YWxpZC4KLVRFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJTaGFkZXJUZXN0
LCBSZXBlYXRpbmdVbmlmb3JtcykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHVuaWZvcm0gZmxvYXQgbXlWYWx1ZTtc
biIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBpZiAo
Y29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX0ZSQUdNRU5UX1NIQURFUiwgU0hfR0xFUzNfMV9TUEVD
KSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRl
ZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFJlcGVh
dGluZyB2YXJ5aW5nIHN0b3JhZ2UgcXVhbGlmaWVycyBpcyBpbnZhbGlkLgotVEVTVF9GKFF1YWxp
ZmljYXRpb25PcmRlclNoYWRlclRlc3QsIFJlcGVhdGluZ1ZhcnlpbmdzKQotewotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZhcnlpbmcgdmVjNCBteUNvbG9yO1xuIgotICAg
ICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGlmIChjb21waWxl
KHNoYWRlclN0cmluZywgR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM18xX1NQRUMpKQotICAg
IHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBl
Y3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gTGF5b3V0IHF1YWxp
ZmllciBzaG91bGQgYmUgYmVmb3JlIHRoZSBzdG9yYWdlIHF1YWxpZmllcnMuCi1URVNUX0YoUXVh
bGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgV3JvbmdPcmRlclF1YWxpZmllcnMpCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAg
ZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0
IGxheW91dChsb2NhdGlvbj0xKSB2ZWM0IG15Q29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBH
TF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzXzFfU1BFQykpCi0gICAgewotICAgICAgICBGQUlM
KCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIg
PDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBDZW50cm9pZCBvdXQgaXMgdGhlIGNvcnJlY3Qg
b3JkZXIuIE91dCBjZW50cm9pZCBpcyBpbmNvcnJlY3QuCi1URVNUX0YoUXVhbGlmaWNhdGlvbk9y
ZGVyU2hhZGVyVGVzdCwgV3JvbmdPcmRlckNlbnRyb2lkT3V0KQotewotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImluIHZlYzQgdXY7XG4i
Ci0gICAgICAgICJvdXQgY2VudHJvaWQgdmVjNCBwb3NpdGlvbjtcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKLSAgICAgICAgInBvc2l0aW9uID0gdXY7XG4iCi0gICAgICAgICJnbF9Qb3Np
dGlvbiA9IHV2O1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGlmIChjb21waWxlKHNoYWRlclN0
cmluZywgR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzNfU1BFQykpCi0gICAgewotICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJl
ICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBDZW50cm9pZCBpbiBpcyB0aGUgY29ycmVj
dCBvcmRlci4gSW4gY2VudHJvaWQgaXMgaW5jb3JyZWN0LgotVEVTVF9GKFF1YWxpZmljYXRpb25P
cmRlclNoYWRlclRlc3QsIFdyb25nT3JkZXJDZW50cm9pZEluKQotewotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImluIGNlbnRyb2lkIHZl
YzQgY29sb3JJTjtcbiIKLSAgICAgICAgIm91dCB2ZWM0IGNvbG9yT1VUO1xuIgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiY29sb3JPVVQgPSBjb2xvcklOO1xuIgotICAgICAg
ICAifVxuIjsKLQotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZywgR0xfRlJBR01FTlRfU0hB
REVSLCBTSF9HTEVTM19TUEVDKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNv
bXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAg
ICB9Ci19Ci0KLS8vIFR5cGUgY2Fubm90IGJlIGJlZm9yZSB0aGUgc3RvcmFnZSBxdWFsaWZpZXIu
Ci1URVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgV3JvbmdPcmRlclR5cGVTdG9y
YWdlKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAi
I3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
LSAgICAgICAgImNlbnRyb2lkIGluIHZlYzQgY29sb3JJTjtcbiIKLSAgICAgICAgInZlYzQgb3V0
IGNvbG9yT1VUO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiY29sb3JP
VVQgPSBjb2xvcklOO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGlmIChjb21waWxlKHNoYWRl
clN0cmluZywgR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkKLSAgICB7Ci0gICAg
ICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZh
aWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEEgdmFyaWFibGUgY2Fubm90IGhh
dmUgdHdvIGNvbmZsaWN0aW5nIHN0b3JhZ2UgcXVhbGlmaWVycy4KLVRFU1RfRihRdWFsaWZpY2F0
aW9uT3JkZXJTaGFkZXJUZXN0LCBSZXBlYXRpbmdEaWZmZXJlbnRTdG9yYWdlUXVhbGlmaWVycykK
LXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAg
ICAgICJjZW50cm9pZCBpbiB2ZWM0IGNvbG9ySU47XG4iCi0gICAgICAgICJ1bmlmb3JtIG91dCB2
ZWM0IGNvbG9yT1VUO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiY29s
b3JPVVQgPSBjb2xvcklOO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGlmIChjb21waWxlKHNo
YWRlclN0cmluZywgR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkKLSAgICB7Ci0g
ICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5n
IGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEEgdmFyaWFibGUgY2Fubm90
IGhhdmUgdHdvIGRpZmZlcmVudCBsYXlvdXQgcXVhbGlmaWVycy4KLVRFU1RfRihRdWFsaWZpY2F0
aW9uT3JkZXJTaGFkZXJUZXN0LCBSZXBlYXRpbmdMYXlvdXRRdWFsaWZpZXJzKQotewotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImluIHZl
YzQgY29sb3JJTjtcbiIKLSAgICAgICAgImxheW91dChsb2NhdGlvbj0wKSBsYXlvdXQobG9jYXRp
b249MCkgb3V0IHZlYzQgY29sb3JPVVQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0g
ICAgICAgICJjb2xvck9VVCA9IGNvbG9ySU47XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgaWYg
KGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQRUMp
KQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVk
LCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gQSB2YXJp
YWJsZSBjYW5ub3QgaGF2ZSByZXBlYXRpbmcgaW52YXJpYW50IHF1YWxpZmllcnMuCi1URVNUX0Yo
UXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgUmVwZWF0aW5nSW52YXJpYW50UXVhbGlmaWVy
cykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2
ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0g
ICAgICAgICJpbiB2ZWM0IGNvbG9ySU47XG4iCi0gICAgICAgICJpbnZhcmlhbnQgaW52YXJpYW50
IG91dCB2ZWM0IGNvbG9yT1VUO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAg
ICAiY29sb3JPVVQgPSBjb2xvcklOO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGlmIChjb21w
aWxlKHNoYWRlclN0cmluZywgR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkKLSAg
ICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhw
ZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEEgdmFyaWFibGUg
Y2Fubm90IGhhdmUgcmVwZWF0aW5nIHN0b3JhZ2UgcXVhbGlmaWVycy4KLVRFU1RfRihRdWFsaWZp
Y2F0aW9uT3JkZXJTaGFkZXJUZXN0LCBSZXBlYXRpbmdBdHRyaWJ1dGVzKQotewotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCi0gICAgICAgICJhdHRyaWJ1dGUgYXR0cmlidXRlIHZlYzQgcG9zaXRpb25JTjtc
biIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgImdsX1Bvc2l0aW9uID0gcG9z
aXRpb25JTjtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJp
bmcsIEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpKQotICAgIHsKLSAgICAgICAgRkFJ
TCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAi
IDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gV3Jvbmcgb3JkZXIgZm9yIGludmFyaWFudCB2
YXJ5aW5nLiBJdCBzaG91bGQgYmUgJ2ludmFyaWFudCB2YXJ5aW5nJywgbm90ICd2YXJ5aW5nIGlu
dmFyaWFudCcuCi1URVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgVmFyeWluZ0lu
dmFyaWFudFdyb25nT3JkZXIpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImF0dHJp
YnV0ZSB2ZWM0IHBvc2l0aW9uSU47XG4iCi0gICAgICAgICJ2YXJ5aW5nIGludmFyaWFudCB2ZWM0
IGRhdGFPVVQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICJnbF9Qb3Np
dGlvbiA9IHBvc2l0aW9uSU47XG4iCi0gICAgICAgICJkYXRhT1VUID0gMC41ICogZGF0YU9VVCAr
IHZlYzQoMC41KTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBpZiAoY29tcGlsZShzaGFkZXJT
dHJpbmcsIEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpKQotICAgIHsKLSAgICAgICAg
RkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVy
ZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gQSB2YXJpYWJsZSBjYW5ub3QgaGF2ZSBy
ZXBlYXRpbmcgc3RvcmFnZSBxdWFsaWZpZXJzLgotVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNo
YWRlclRlc3QsIEF0dHJpYnV0ZVZhcnlpbmdNaXgpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnNoYWRlclN0cmluZzEgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0g
ICAgICAgICJhdHRyaWJ1dGUgdmFyeWluZyB2ZWM0IHBvc2l0aW9uSU47XG4iCi0gICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICJnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uSU47XG4iCi0g
ICAgICAgICJ9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZzIgPQot
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2YXJ5aW5nIGF0
dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uSU47XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0g
ICAgICAgICJnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uSU47XG4iCi0gICAgICAgICJ9XG4iOwotCi0g
ICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nMSwgR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzNf
U1BFQykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNj
ZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotCi0gICAgaWYg
KGNvbXBpbGUoc2hhZGVyU3RyaW5nMiwgR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzNfU1BFQykp
Ci0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQs
IGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBBIHZhcmlh
YmxlIGNhbm5vdCBoYXZlIHJlcGVhdGluZyBpbnRlcnBvbGF0aW9uIHF1YWxpZmllcnMuCi1URVNU
X0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgUmVwZWF0aW5nSW50ZXJwb2xhdGlvblF1
YWxpZmllcnMpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgotICAgICAgICAiaW4gdmVjNCBwb3NpdGlvbklOO1xuIgotICAgICAgICAiZmxhdCBmbGF0
IG91dCB2ZWM0IGRhdGFPVVQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAg
ICJnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uSU47XG4iCi0gICAgICAgICJkYXRhT1VUID0gMC41ICog
ZGF0YU9VVCArIHZlYzQoMC41KTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBpZiAoY29tcGls
ZShzaGFkZXJTdHJpbmcsIEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpKQotICAgIHsK
LSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3Rp
bmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gV3Jvbmcgb3JkZXIgZm9y
IHRoZSBpbnRlcnBvbGF0aW9uIGFuZCBzdG9yYWdlIHF1YWxpZmllci4gVGhlIGNvcnJlY3Qgb3Jk
ZXIgaXMgaW50ZXJwb2xhdGlvbgotLy8gcXVhbGlmaWVyIGFuZCB0aGVuIHN0b3JhZ2UgcXVhbGlm
aWVyLgotVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIFdyb25nT3JkZXJJbnRl
cnBvbGF0aW9uU3RvcmFnZVF1YWxpZmllcnMpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAiaW4gdmVjNCBwb3NpdGlvbklOO1xuIgot
ICAgICAgICAib3V0IGZsYXQgdmVjNCBkYXRhT1VUO1xuIgotICAgICAgICAidm9pZCBtYWluKCkg
e1xuIgotICAgICAgICAiZ2xfUG9zaXRpb24gPSBwb3NpdGlvbklOO1xuIgotICAgICAgICAiZGF0
YU9VVCA9IDAuNSAqIGRhdGFPVVQgKyB2ZWM0KDAuNSk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0g
ICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9WRVJURVhfU0hBREVSLCBTSF9HTEVTM19T
UEVDKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2Nl
ZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFRo
ZSBjb3JyZWN0IG9yZGVyIGlzIGludmFyaWFudCwgaW50ZXJwb2xhdGlvbiwgc3RvcmFnZS4KLVRF
U1RfRihRdWFsaWZpY2F0aW9uT3JkZXJTaGFkZXJUZXN0LCBXcm9uZ09yZGVySW52YXJpYW50SW50
ZXJwb2xhdGlvblN0b3JhZ2VRdWFsaWZpZXJzKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImluIHZlYzQgcG9zaXRpb25JTjtcbiIK
LSAgICAgICAgImZsYXQgaW52YXJpYW50IG91dCB2ZWM0IGRhdGFPVVQ7XG4iCi0gICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICJnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uSU47XG4iCi0g
ICAgICAgICJkYXRhT1VUID0gMC41ICogZGF0YU9VVCArIHZlYzQoMC41KTtcbiIKLSAgICAgICAg
In1cbiI7Ci0KLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX1ZFUlRFWF9TSEFERVIs
IFNIX0dMRVMzX1NQRUMpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGls
YXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0K
LX0KLQotLy8gVGhlIGludmFyaWFudCBxdWFsaWZlciBoYXMgdG8gYmUgYmVmb3JlIHRoZSBzdG9y
YWdlIHF1YWxpZmllcnMuCi1URVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgV3Jv
bmdPcmRlckludmFyaWFudE5vdEZpcnN0KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImluIHZlYzQgcG9zaXRpb25JTjtcbiIKLSAg
ICAgICAgImNlbnRyb2lkIG91dCBpbnZhcmlhbnQgdmVjNCBkYXRhT1VUO1xuIgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiZ2xfUG9zaXRpb24gPSBwb3NpdGlvbklOO1xuIgot
ICAgICAgICAiZGF0YU9VVCA9IDAuNSAqIGRhdGFPVVQgKyB2ZWM0KDAuNSk7XG4iCi0gICAgICAg
ICJ9XG4iOwotCi0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9WRVJURVhfU0hBREVS
LCBTSF9HTEVTM19TUEVDKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBp
bGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9
Ci19Ci0KLS8vIFRoZSBwcmVjaXNpb24gcXVhbGlmaWVyIGlzIGFmdGVyIHRoZSBzdG9yYWdlIHF1
YWxpZmllcnMuCi1URVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgV3JvbmdPcmRl
clByZWNpc2lvbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJpbiB2ZWM0IHBvc2l0aW9uSU47XG4iCi0gICAgICAgICJoaWdocCBj
ZW50cm9pZCBvdXQgdmVjNCBkYXRhT1VUO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgot
ICAgICAgICAiZ2xfUG9zaXRpb24gPSBwb3NpdGlvbklOO1xuIgotICAgICAgICAiZGF0YU9VVCA9
IDAuNSAqIGRhdGFPVVQgKyB2ZWM0KDAuNSk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgaWYg
KGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9WRVJURVhfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkK
LSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwg
ZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEEgdmFyaWFi
bGUgY2Fubm90IGhhdmUgbXVsdGlwbGUgZGVjbGFyYXRpb25zIG9mIHRoZSAnaW4nIHN0b3JhZ2Ug
cXVhbGlmaWVyLgotVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIFJlcGVhdGlu
Z0luUXVhbGlmaWVyKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQot
ICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKLSAgICAgICAgImluIGluIHZlYzQgcG9zaXRpb25JTjtcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKLSAgICAgICAgImdsX1Bvc2l0aW9uID0gcG9zaXRpb25JTjtcbiIKLSAg
ICAgICAgIn1cbiI7Ci0KLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX1ZFUlRFWF9T
SEFERVIsIFNIX0dMRVMzX1NQRUMpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIg
Y29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwot
ICAgIH0KLX0KLQotLy8gQSB2YXJpYWJsZSBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBkZWNsYXJhdGlv
bnMgb2YgdGhlICdhdHRyaWJ1dGUnIHN0b3JhZ2UgcXVhbGlmaWVyLgotVEVTVF9GKFF1YWxpZmlj
YXRpb25PcmRlclNoYWRlclRlc3QsIFJlcGVhdGluZ0F0dHJpYnV0ZVF1YWxpZmllcikKLXsKLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAiYXR0cmlidXRlIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0
aW9uSU47XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICJnbF9Qb3NpdGlv
biA9IHBvc2l0aW9uSU47XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgaWYgKGNvbXBpbGUoc2hh
ZGVyU3RyaW5nLCBHTF9WRVJURVhfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkKLSAgICB7Ci0gICAg
ICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZh
aWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFZlcnRleCBpbnB1dCBjYW5ub3Qg
YmUgcXVhbGlmaWVkIHdpdGggaW52YXJpYW50LgotVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNo
YWRlclRlc3QsIEludmFyaWFudFZlcnRleElucHV0KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0g
ICAgICAgICJpbnZhcmlhbnQgYXR0cmlidXRlIHZlYzQgcG9zaXRpb25JTjtcbiIKLSAgICAgICAg
InZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgImdsX1Bvc2l0aW9uID0gcG9zaXRpb25JTjtcbiIK
LSAgICAgICAgIn1cbiI7Ci0KLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX1ZFUlRF
WF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFk
ZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9n
OwotICAgIH0KLX0KLQotLy8gQ2Fubm90IGhhdmUgYSBmdW5jdGlvbiBwYXJhbWV0ZXIgd2l0aCB0
aGUgaW52YXJpYW50IHF1YWxpZmllci4KLVRFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJTaGFkZXJU
ZXN0LCBJbnZhbGlkRnVuY3Rpb25QYXJhbWV0ZXJzSW52YXJpYW50KQotewotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIGxvd3AgZmxvYXQ7
XG4iCi0gICAgICAgICJ2YXJ5aW5nIGZsb2F0IHZhbHVlO1xuIgotICAgICAgICAiZmxvYXQgZm9v
MCAoaW52YXJpYW50IGluIGZsb2F0IHgpIHtcbiIKLSAgICAgICAgIiAgIHJldHVybiAyLjAqeDtc
biIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4i
Ci0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChmb28wKHZhbHVlKSk7XG4iCi0gICAg
ICAgICJ9XG4iOwotCi0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9GUkFHTUVOVF9T
SEFERVIsIFNIX0dMRVMzX1NQRUMpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIg
Y29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSIgPDwgbUluZm9Mb2c7Ci0g
ICAgfQotfQotCi0vLyBDYW5ub3QgaGF2ZSBhIGZ1bmN0aW9uIHBhcmFtZXRlciB3aXRoIHRoZSBh
dHRyaWJ1dGUgcXVhbGlmaWVyLgotVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3Qs
IEludmFsaWRGdW5jdGlvblBhcmFtZXRlcnNBdHRyaWJ1dGUpCi17Ci0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbG93cCBmbG9hdDtcbiIK
LSAgICAgICAgInZhcnlpbmcgZmxvYXQgdmFsdWU7XG4iCi0gICAgICAgICJmbG9hdCBmb28wIChh
dHRyaWJ1dGUgZmxvYXQgeCkge1xuIgotICAgICAgICAiICAgcmV0dXJuIDIuMCp4O1xuIgotICAg
ICAgICAifVxuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAg
ICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGZvbzAodmFsdWUpKTtcbiIKLSAgICAgICAgIn1c
biI7Ci0KLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX0ZSQUdNRU5UX1NIQURFUiwg
U0hfR0xFUzNfU1BFQykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxh
dGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19
Ci0KLS8vIENhbm5vdCBoYXZlIGEgZnVuY3Rpb24gcGFyYW1ldGVyIHdpdGggdGhlIHZhcnlpbmcg
cXVhbGlmaWVyLgotVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIEludmFsaWRG
dW5jdGlvblBhcmFtZXRlcnNWYXJ5aW5nKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIGxvd3AgZmxvYXQ7XG4iCi0gICAgICAgICJ2
YXJ5aW5nIGZsb2F0IHZhbHVlO1xuIgotICAgICAgICAiZmxvYXQgZm9vMCAodmFyeWluZyBmbG9h
dCB4KSB7XG4iCi0gICAgICAgICIgICByZXR1cm4gMi4wKng7XG4iCi0gICAgICAgICJ9XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQoZm9vMCh2YWx1ZSkpO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGlm
IChjb21waWxlKHNoYWRlclN0cmluZywgR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM19TUEVD
KSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRl
ZCwgZXhwZWN0aW5nIGZhaWx1cmUiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gQ2Fubm90
IGhhdmUgYSBmdW5jdGlvbiBwYXJhbWV0ZXIgd2l0aCB0aGUgbGF5b3V0IHF1YWxpZmllcgotVEVT
VF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIEludmFsaWRGdW5jdGlvblBhcmFtZXRl
cnNMYXlvdXQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBsb3dwIGZsb2F0O1xu
IgotICAgICAgICAiaW4gZmxvYXQgdmFsdWU7XG4iCi0gICAgICAgICJmbG9hdCBmb28wIChsYXlv
dXQobG9jYXRpb24gPSAzKSBpbiBmbG9hdCB4KSB7XG4iCi0gICAgICAgICIgICByZXR1cm4gMi4w
Kng7XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJvdXQgdmVjNCBjb2xvck9VVDtcbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgY29sb3JP
VVQgPSB2ZWM0KGZvbzAodmFsdWUpKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBpZiAoY29t
cGlsZShzaGFkZXJTdHJpbmcsIEdMX0ZSQUdNRU5UX1NIQURFUiwgU0hfR0xFUzNfU1BFQykpCi0g
ICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4
cGVjdGluZyBmYWlsdXJlIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIENhbm5vdCBoYXZl
IGEgZnVuY3Rpb24gcGFyYW1ldGVyIHdpdGggdGhlIGNlbnRyb2lkIHF1YWxpZmllcgotVEVTVF9G
KFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIEludmFsaWRGdW5jdGlvblBhcmFtZXRlcnND
ZW50cm9pZEluKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAg
ICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbG93cCBmbG9hdDtc
biIKLSAgICAgICAgImluIGZsb2F0IHZhbHVlO1xuIgotICAgICAgICAiZmxvYXQgZm9vMCAoY2Vu
dHJvaWQgaW4gZmxvYXQgeCkge1xuIgotICAgICAgICAiICAgcmV0dXJuIDIuMCp4O1xuIgotICAg
ICAgICAifVxuIgotICAgICAgICAib3V0IHZlYzQgY29sb3JPVVQ7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIGNvbG9yT1VUID0gdmVjNChm
b28wKHZhbHVlKSk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgaWYgKGNvbXBpbGUoc2hhZGVy
U3RyaW5nLCBHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpKQotICAgIHsKLSAgICAg
ICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFp
bHVyZSIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBDYW5ub3QgaGF2ZSBhIGZ1bmN0aW9u
IHBhcmFtZXRlciB3aXRoIHRoZSBmbGF0IHF1YWxpZmllcgotVEVTVF9GKFF1YWxpZmljYXRpb25P
cmRlclNoYWRlclRlc3QsIEludmFsaWRGdW5jdGlvblBhcmFtZXRlcnNGbGF0SW4pCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAg
ZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBsb3dwIGZsb2F0O1xuIgotICAgICAgICAiaW4gZmxv
YXQgdmFsdWU7XG4iCi0gICAgICAgICJmbG9hdCBmb28wIChmbGF0IGluIGZsb2F0IHgpIHtcbiIK
LSAgICAgICAgIiAgIHJldHVybiAyLjAqeDtcbiIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgIm91
dCB2ZWM0IGNvbG9yT1VUO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntc
biIKLSAgICAgICAgIiAgICBjb2xvck9VVCA9IHZlYzQoZm9vMCh2YWx1ZSkpO1xuIgotICAgICAg
ICAifVxuIjsKLQotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZywgR0xfRlJBR01FTlRfU0hB
REVSLCBTSF9HTEVTM19TUEVDKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNv
bXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUiIDw8IG1JbmZvTG9nOwotICAg
IH0KLX0KLQotLy8gT3V0cHV0IGxheW91dCBsb2NhdGlvbiBxdWFsaWZpZXIgY2FuJ3QgYXBwZWFy
IG1vcmUgdGhhbiBvbmNlIHdpdGhpbiBhIGRlY2xhcmF0aW9uLgotLy8gR0xTTCBFUyAzLjAwLjYg
c2VjdGlvbiA0LjMuOC4yIE91dHB1dCBMYXlvdXQgUXVhbGlmaWVycy4KLVRFU1RfRihRdWFsaWZp
Y2F0aW9uT3JkZXJTaGFkZXJUZXN0LCBUd29PdXRwdXRMb2NhdGlvbnMpCi17Ci0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIK
LSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAibGF5b3V0KGxv
Y2F0aW9uPTEsIGxvY2F0aW9uPTIpIG91dCB2ZWM0IG15Q29sb3I7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3Ry
aW5nLCBHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpKQotICAgIHsKLSAgICAgICAg
RkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVy
ZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9SZWNvcmRDb25zdGFudFByZWNpc2lvbl90
ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0
cy9SZWNvcmRDb25zdGFudFByZWNpc2lvbl90ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNzgzYTkzYzEwMTU1YzE2YmI3NTdhZjk0OGFlNDIzYzg0YTk4Y2IzNS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25f
dGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0
IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8v
IFJlY29yZENvbnN0YW50UHJlY2lzaW9uX3Rlc3QuY3BwOgotLy8gICBUZXN0IGZvciByZWNvcmRp
bmcgY29uc3RhbnQgdmFyaWFibGUgcHJlY2lzaW9uIHdoZW4gaXQgYWZmZWN0cyBjb25zdW1pbmcg
ZXhwcmVzc2lvbi4KLS8vCi0KLSNpbmNsdWRlICJhbmdsZV9nbC5oIgotI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCi0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0jaW5jbHVkZSAidGVz
dHMvdGVzdF91dGlscy9jb21waWxlcl90ZXN0LmgiCi0KLWNsYXNzIFJlY29yZENvbnN0YW50UHJl
Y2lzaW9uVGVzdCA6IHB1YmxpYyBNYXRjaE91dHB1dENvZGVUZXN0Ci17Ci0gIHB1YmxpYzoKLSAg
ICBSZWNvcmRDb25zdGFudFByZWNpc2lvblRlc3QoKSA6IE1hdGNoT3V0cHV0Q29kZVRlc3QoR0xf
RlJBR01FTlRfU0hBREVSLCAwLCBTSF9FU1NMX09VVFBVVCkge30KLX07Ci0KLS8vIFRoZSBjb25z
dGFudCBjYW5ub3QgYmUgZm9sZGVkIGlmIGl0cyBwcmVjaXNpb24gaXMgaGlnaGVyIHRoYW4gdGhl
IG90aGVyIG9wZXJhbmRzLCBzaW5jZSBpdAotLy8gaW5jcmVhc2VzIHRoZSBwcmVjaXNpb24gb2Yg
dGhlIGNvbnN1bWluZyBleHByZXNzaW9uLgotVEVTVF9GKFJlY29yZENvbnN0YW50UHJlY2lzaW9u
VGVzdCwgSGlnaGVyUHJlY2lzaW9uQ29uc3RhbnRBc1BhcmFtZXRlcikKLXsKLSAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInVuaWZvcm0gbWVkaXVtcCBmbG9h
dCB1OyIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIg
ICAgY29uc3QgaGlnaHAgZmxvYXQgYSA9IDQwOTYuNTtcbiIKLSAgICAgICAgIiAgICBtZWRpdW1w
IGZsb2F0IGIgPSBmcmFjdChhICsgdSk7XG4iCi0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNChiKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwot
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5Db2RlKCJjb25zdCBoaWdocCBmbG9hdCBzIikpOwotICAg
IEFTU0VSVF9GQUxTRShmb3VuZEluQ29kZSgiZnJhY3QoNDA5Ni41IikpOwotICAgIEFTU0VSVF9G
QUxTRShmb3VuZEluQ29kZSgiZnJhY3QoKDQwOTYuNSIpKTsKLX0KLQotLy8gVGhlIGNvbnN0YW50
IGNhbiBiZSBmb2xkZWQgaWYgaXRzIHByZWNpc2lvbiBpcyBlcXVhbCB0byB0aGUgb3RoZXIgb3Bl
cmFuZHMsIGFzIGl0IGRvZXMgbm90Ci0vLyBpbmNyZWFzZSB0aGUgcHJlY2lzaW9uIG9mIHRoZSBj
b25zdW1pbmcgZXhwcmVzc2lvbi4KLVRFU1RfRihSZWNvcmRDb25zdGFudFByZWNpc2lvblRlc3Qs
IEVxdWFsUHJlY2lzaW9uQ29uc3RhbnRBc1BhcmFtZXRlcikKLXsKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInVuaWZvcm0gbWVkaXVtcCBmbG9hdCB1OyIK
LSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgY29u
c3QgbWVkaXVtcCBmbG9hdCBhID0gNDA5Ni41O1xuIgotICAgICAgICAiICAgIG1lZGl1bXAgZmxv
YXQgYiA9IGZyYWN0KGEgKyB1KTtcbiIKLSAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KGIpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAg
QVNTRVJUX0ZBTFNFKGZvdW5kSW5Db2RlKCJjb25zdCBtZWRpdW1wIGZsb2F0IHMiKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZm91bmRJbkNvZGUoImZyYWN0KCg0MDk2LjUiKSk7Ci19Ci0KLS8vIFRoZSBj
b25zdGFudCBjYW5ub3QgYmUgZm9sZGVkIGlmIGl0cyBwcmVjaXNpb24gaXMgaGlnaGVyIHRoYW4g
dGhlIG90aGVyIG9wZXJhbmRzLCBzaW5jZSBpdAotLy8gaW5jcmVhc2VzIHRoZSBwcmVjaXNpb24g
b2YgdGhlIGNvbnN1bWluZyBleHByZXNzaW9uLiBUaGlzIGFwcGxpZXMgYWxzbyB3aGVuIHRoZSBj
b25zdGFudCBpcwotLy8gcGFydCBvZiBhIGNvbnN0YW50IGV4cHJlc3Npb24gdGhhdCBjYW4gYmUg
Zm9sZGVkLgotVEVTVF9GKFJlY29yZENvbnN0YW50UHJlY2lzaW9uVGVzdCwgRm9sZGVkQmluYXJ5
Q29uc3RhbnRQcmVjaXNpb25Jc0hpZ2hlcikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nID0KLSAgICAgICAgInVuaWZvcm0gbWVkaXVtcCBmbG9hdCB1OyIKLSAgICAgICAg
InZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgY29uc3QgaGlnaHAg
ZmxvYXQgYSA9IDQwOTUuNTtcbiIKLSAgICAgICAgIiAgICBtZWRpdW1wIGZsb2F0IGIgPSBmcmFj
dCgoYSArIDEuMCkgKyB1KTtcbiIKLSAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGIp
O1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNT
RVJUX1RSVUUoZm91bmRJbkNvZGUoImNvbnN0IGhpZ2hwIGZsb2F0IHMiKSk7Ci0gICAgQVNTRVJU
X0ZBTFNFKGZvdW5kSW5Db2RlKCJmcmFjdCg0MDk2LjUiKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGZv
dW5kSW5Db2RlKCJmcmFjdCgoNDA5Ni41IikpOwotfQotCi0KLS8vIFRoZSBjb25zdGFudCBjYW5u
b3QgYmUgZm9sZGVkIGlmIGl0cyBwcmVjaXNpb24gaXMgaGlnaGVyIHRoYW4gdGhlIG90aGVyIG9w
ZXJhbmRzLCBzaW5jZSBpdAotLy8gaW5jcmVhc2VzIHRoZSBwcmVjaXNpb24gb2YgdGhlIGNvbnN1
bWluZyBleHByZXNzaW9uLiBUaGlzIGFwcGxpZXMgYWxzbyB3aGVuIHRoZSBjb25zdGFudCBpcwot
Ly8gcGFydCBvZiBhIGNvbnN0YW50IGV4cHJlc3Npb24gdGhhdCBjYW4gYmUgZm9sZGVkLgotVEVT
VF9GKFJlY29yZENvbnN0YW50UHJlY2lzaW9uVGVzdCwgRm9sZGVkVW5hcnlDb25zdGFudFByZWNp
c2lvbklzSGlnaGVyKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQot
ICAgICAgICAidW5pZm9ybSBtZWRpdW1wIGZsb2F0IHU7IgotICAgICAgICAidm9pZCBtYWluKClc
biIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBjb25zdCBoaWdocCBmbG9hdCBhID0gMC41
O1xuIgotICAgICAgICAiICAgIG1lZGl1bXAgZmxvYXQgYiA9IHNpbihmcmFjdChhKSArIHUpO1xu
IgotICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYik7XG4iCi0gICAgICAgICJ9XG4i
OwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQ29k
ZSgiY29uc3QgaGlnaHAgZmxvYXQgcyIpKTsKLSAgICBBU1NFUlRfRkFMU0UoZm91bmRJbkNvZGUo
InNpbigwLjUiKSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5kSW5Db2RlKCJzaW4oKDAuNSIpKTsK
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxl
cl90ZXN0cy9SZW1vdmVQb3dfdGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvY29tcGlsZXJfdGVzdHMvUmVtb3ZlUG93X3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyNDM0ZjA5YTA1MDRlNDg3Y2NiZWNhYzQ0NmI2MjVjMTQ0NWZlZGE0Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9SZW1vdmVQb3dfdGVzdC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAx
NSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBSZW1vdmVQ
b3dfdGVzdC5jcHA6Ci0vLyAgIFRlc3RzIGZvciByZW1vdmluZyBwb3coKSBmdW5jdGlvbiBjYWxs
cyBmcm9tIHRoZSBBU1QuCi0vLwotCi0jaW5jbHVkZSAiYW5nbGVfZ2wuaCIKLSNpbmNsdWRlICJn
dGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgotI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvTm9kZVNlYXJjaC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvVHJhbnNsYXRvckdMU0wuaCIKLQotY2xhc3MgUmVtb3ZlUG93VGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICBSZW1vdmVQb3dUZXN0KCkge30KLQot
ICBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBh
bGxvY2F0b3IucHVzaCgpOwotICAgICAgICBTZXRHbG9iYWxQb29sQWxsb2NhdG9yKCZhbGxvY2F0
b3IpOwotICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOwotICAgICAgICBTaElu
aXRCdWlsdEluUmVzb3VyY2VzKCZyZXNvdXJjZXMpOwotICAgICAgICBtVHJhbnNsYXRvckdMU0wg
PSBuZXcgVHJhbnNsYXRvckdMU0woR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTMl9TUEVDLCBT
SF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVUKTsKLSAgICAgICAgQVNTRVJUX1RSVUUobVRyYW5z
bGF0b3JHTFNMLT5Jbml0KHJlc291cmNlcykpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24o
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgU2FmZURlbGV0ZShtVHJhbnNsYXRvckdMU0wpOwot
ICAgICAgICBTZXRHbG9iYWxQb29sQWxsb2NhdG9yKG51bGxwdHIpOwotICAgICAgICBhbGxvY2F0
b3IucG9wKCk7Ci0gICAgfQotCi0gICAgdm9pZCBjb21waWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBz
aGFkZXJTdHJpbmcpCi0gICAgewotICAgICAgICBjb25zdCBjaGFyICpzaGFkZXJTdHJpbmdzW10g
PSB7IHNoYWRlclN0cmluZy5jX3N0cigpIH07Ci0gICAgICAgIG1BU1RSb290ID0gbVRyYW5zbGF0
b3JHTFNMLT5jb21waWxlVHJlZUZvclRlc3Rpbmcoc2hhZGVyU3RyaW5ncywgMSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSF9PQkpF
Q1RfQ09ERSB8IFNIX1JFTU9WRV9QT1dfV0lUSF9DT05TVEFOVF9FWFBPTkVOVCk7Ci0gICAgICAg
IGlmICghbUFTVFJvb3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFRJbmZvU2luayAmaW5mb1Np
bmsgPSBtVHJhbnNsYXRvckdMU0wtPmdldEluZm9TaW5rKCk7Ci0gICAgICAgICAgICBGQUlMKCkg
PDwgIlNoYWRlciBjb21waWxhdGlvbiBpbnRvIEVTU0wgZmFpbGVkICIgPDwgaW5mb1NpbmsuaW5m
by5jX3N0cigpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0g
ICAgYm9vbCBmb3VuZEluQVNUKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBUOjpzZWFyY2gobUFT
VFJvb3QpOwotICAgIH0KLQotICBwcml2YXRlOgotICAgIFRyYW5zbGF0b3JHTFNMICptVHJhbnNs
YXRvckdMU0w7Ci0gICAgVEludGVybU5vZGUgKm1BU1RSb290OwotCi0gICAgVFBvb2xBbGxvY2F0
b3IgYWxsb2NhdG9yOwotfTsKLQotLy8gQ2hlY2sgaWYgdGhlcmUncyBhIHBvdygpIG5vZGUgYW55
d2hlcmUgaW4gdGhlIHRyZWUuCi1jbGFzcyBGaW5kUG93IDogcHVibGljIHNoOjpOb2RlU2VhcmNo
VHJhdmVyc2VyPEZpbmRQb3c+Ci17Ci0gIHB1YmxpYzoKLSAgICBib29sIHZpc2l0QmluYXJ5KFZp
c2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2RlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAg
aWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wUG93KQotICAgICAgICB7Ci0gICAgICAgICAgICBtRm91
bmQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAhbUZvdW5kOwotICAgIH0KLX07
Ci0KLS8vIENoZWNrIGlmIHRoZSB0cmVlIHN0YXJ0aW5nIGF0IG5vZGUgY29ycmVzcG9uZHMgdG8g
ZXhwMih5ICogbG9nMih4KSkKLS8vIElmIHRoZSB0cmVlIG1hdGNoZXMsIHNldCBiYXNlIHRvIHRo
ZSBub2RlIGNvcnJlc3BvbmRpbmcgdG8geC4KLWJvb2wgSXNQb3dXb3JrYXJvdW5kKFRJbnRlcm1O
b2RlICpub2RlLCBUSW50ZXJtTm9kZSAqKmJhc2UpCi17Ci0gICAgVEludGVybVVuYXJ5ICpleHAg
PSBub2RlLT5nZXRBc1VuYXJ5Tm9kZSgpOwotICAgIGlmIChleHAgIT0gbnVsbHB0ciAmJiBleHAt
PmdldE9wKCkgPT0gRU9wRXhwMikKLSAgICB7Ci0gICAgICAgIFRJbnRlcm1CaW5hcnkgKm11bCA9
IGV4cC0+Z2V0T3BlcmFuZCgpLT5nZXRBc0JpbmFyeU5vZGUoKTsKLSAgICAgICAgaWYgKG11bCAh
PSBudWxscHRyICYmIG11bC0+aXNNdWx0aXBsaWNhdGlvbigpKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBUSW50ZXJtVW5hcnkgKmxvZyA9IG11bC0+Z2V0UmlnaHQoKS0+Z2V0QXNVbmFyeU5vZGUo
KTsKLSAgICAgICAgICAgIGlmIChtdWwtPmdldExlZnQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCkg
JiYgbG9nICE9IG51bGxwdHIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGxv
Zy0+Z2V0T3AoKSA9PSBFT3BMb2cyKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGJhc2UpCi0gICAgICAgICAgICAgICAgICAgICAgICAqYmFzZSA9IGxvZy0+Z2V0
T3BlcmFuZCgpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi0vLyBDaGVjayBpZiB0aGVyZSdzIGEgbm9kZSB3aXRoIHRoZSBjb3JyZWN0IHdvcmth
cm91bmQgdG8gcG93IGFueXdoZXJlIGluIHRoZSB0cmVlLgotY2xhc3MgRmluZFBvd1dvcmthcm91
bmQgOiBwdWJsaWMgc2g6Ok5vZGVTZWFyY2hUcmF2ZXJzZXI8RmluZFBvd1dvcmthcm91bmQ+Ci17
Ci0gIHB1YmxpYzoKLSAgICBib29sIHZpc2l0VW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1VbmFy
eSAqbm9kZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1Gb3VuZCA9IElzUG93V29ya2Fyb3Vu
ZChub2RlLCBudWxscHRyKTsKLSAgICAgICAgcmV0dXJuICFtRm91bmQ7Ci0gICAgfQotfTsKLQot
Ly8gQ2hlY2sgaWYgdGhlcmUncyBhIG5vZGUgd2l0aCB0aGUgY29ycmVjdCB3b3JrYXJvdW5kIHRv
IHBvdyB3aXRoIGFub3RoZXIgd29ya2Fyb3VuZCB0byBwb3cKLS8vIG5lc3RlZCB3aXRoaW4gaXQg
YW55d2hlcmUgaW4gdGhlIHRyZWUuCi1jbGFzcyBGaW5kTmVzdGVkUG93V29ya2Fyb3VuZCA6IHB1
YmxpYyBzaDo6Tm9kZVNlYXJjaFRyYXZlcnNlcjxGaW5kTmVzdGVkUG93V29ya2Fyb3VuZD4KLXsK
LSAgcHVibGljOgotICAgIGJvb2wgdmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5
ICpub2RlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVEludGVybU5vZGUgKmJhc2UgPSBudWxs
cHRyOwotICAgICAgICBib29sIG9uZUZvdW5kID0gSXNQb3dXb3JrYXJvdW5kKG5vZGUsICZiYXNl
KTsKLSAgICAgICAgaWYgKG9uZUZvdW5kICYmIGJhc2UpCi0gICAgICAgICAgICBtRm91bmQgPSBJ
c1Bvd1dvcmthcm91bmQoYmFzZSwgbnVsbHB0cik7Ci0gICAgICAgIHJldHVybiAhbUZvdW5kOwot
ICAgIH0KLX07Ci0KLVRFU1RfRihSZW1vdmVQb3dUZXN0LCBQb3dXaXRoQ29uc3RhbnRFeHBvbmVu
dCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgot
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gcG93
KHZlYzQodSksIHZlYzQoMC41KSk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hh
ZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfRkFMU0UoZm91bmRJbkFTVDxGaW5kUG93PigpKTsKLSAg
ICBBU1NFUlRfVFJVRShmb3VuZEluQVNUPEZpbmRQb3dXb3JrYXJvdW5kPigpKTsKLSAgICBBU1NF
UlRfRkFMU0UoZm91bmRJbkFTVDxGaW5kTmVzdGVkUG93V29ya2Fyb3VuZD4oKSk7Ci19Ci0KLVRF
U1RfRihSZW1vdmVQb3dUZXN0LCBOZXN0ZWRQb3dXaXRoQ29uc3RhbnRFeHBvbmVudCkKLXsKLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gcG93KHBvdyh2ZWM0
KHUpLCB2ZWM0KDIuMCkpLCB2ZWM0KDAuNSkpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21w
aWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5kSW5BU1Q8RmluZFBvdz4o
KSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFTVDxGaW5kTmVzdGVkUG93V29ya2Fyb3VuZD4o
KSk7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9j
b21waWxlcl90ZXN0cy9TaENvbXBpbGVfdGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvU2hDb21waWxlX3Rlc3QuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAyYTUxNGE5ZTRmNTVkZTFlYTRkN2QxODNiYWY0NDYwN2YxZGVj
NDBiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9TaENvbXBpbGVfdGVz
dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChj
KSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0v
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIFNo
Q29tcGlsZV90ZXN0LmNwcAotLy8gICBUZXN0IHRoZSBTaENvbXBpbGUgaW50ZXJmYWNlIHdpdGgg
ZGlmZmVyZW50IHBhcmFtZXRlcnMuCi0vLwotCi0jaW5jbHVkZSAiYW5nbGVfZ2wuaCIKLSNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgotCi1j
bGFzcyBTaENvbXBpbGVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QKLXsKLSAgcHVibGljOgot
ICAgIFNoQ29tcGlsZVRlc3QoKSB7fQotCi0gIHByb3RlY3RlZDoKLSAgICB2b2lkIFNldFVwKCkg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJm1SZXNvdXJj
ZXMpOwotICAgICAgICBtQ29tcGlsZXIgPSBTaENvbnN0cnVjdENvbXBpbGVyKEdMX0ZSQUdNRU5U
X1NIQURFUiwgU0hfV0VCR0xfU1BFQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVULCAmbVJlc291cmNlcyk7Ci0gICAg
ICAgIEFTU0VSVF9UUlVFKG1Db21waWxlciAhPSBudWxscHRyKSA8PCAiQ29tcGlsZXIgY291bGQg
bm90IGJlIGNvbnN0cnVjdGVkLiI7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBpZiAobUNvbXBpbGVyKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBTaERlc3RydWN0KG1Db21waWxlcik7Ci0gICAgICAgICAgICBtQ29tcGlsZXIgPSBudWxscHRy
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB0ZXN0Q29tcGlsZShjb25zdCBjaGFyICoq
c2hhZGVyU3RyaW5ncywgaW50IHN0cmluZ0NvdW50LCBib29sIGV4cGVjdGF0aW9uKQotICAgIHsK
LSAgICAgICAgYm9vbCBzdWNjZXNzICAgICAgICAgICAgICAgICAgPSBTaENvbXBpbGUobUNvbXBp
bGVyLCBzaGFkZXJTdHJpbmdzLCBzdHJpbmdDb3VudCwgMCk7Ci0gICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZjb21waWxlTG9nID0gU2hHZXRJbmZvTG9nKG1Db21waWxlcik7Ci0gICAgICAgIEVY
UEVDVF9FUShleHBlY3RhdGlvbiwgc3VjY2VzcykgPDwgY29tcGlsZUxvZzsKLSAgICB9Ci0KLSAg
cHJpdmF0ZToKLSAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgbVJlc291cmNlczsKLSAgICBTaEhhbmRs
ZSBtQ29tcGlsZXI7Ci19OwotCi0vLyBUZXN0IGNhbGxpbmcgU2hDb21waWxlIHdpdGggbW9yZSB0
aGFuIG9uZSBzaGFkZXIgc291cmNlIHN0cmluZy4KLVRFU1RfRihTaENvbXBpbGVUZXN0LCBNdWx0
aXBsZVNoYWRlclN0cmluZ3MpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZzEgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iOwotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcyID0KLSAg
ICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9IjsKLQot
ICAgIGNvbnN0IGNoYXIgKnNoYWRlclN0cmluZ3NbXSA9IHtzaGFkZXJTdHJpbmcxLmNfc3RyKCks
IHNoYWRlclN0cmluZzIuY19zdHIoKX07Ci0KLSAgICB0ZXN0Q29tcGlsZShzaGFkZXJTdHJpbmdz
LCAyLCB0cnVlKTsKLX0KLQotLy8gVGVzdCBjYWxsaW5nIFNoQ29tcGlsZSB3aXRoIGEgdG9rZW5z
IHNwbGl0IGludG8gZGlmZmVyZW50IHNoYWRlciBzb3VyY2Ugc3RyaW5ncy4KLVRFU1RfRihTaENv
bXBpbGVUZXN0LCBUb2tlbnNTcGxpdEluU2hhZGVyU3RyaW5ncykKLXsKLSAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nMSA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKLSAgICAgICAgInZvaWQgbWEiOwotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJT
dHJpbmcyID0KLSAgICAgICAgImluKCkge1xuIgotICAgICAgICAiI2kiOwotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmczID0KLSAgICAgICAgImYgMVxuIgotICAgICAgICAiICAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKLSAgICAgICAgIiNlbmRpZlxuIgotICAgICAg
ICAifSI7Ci0KLSAgICBjb25zdCBjaGFyICpzaGFkZXJTdHJpbmdzW10gPSB7c2hhZGVyU3RyaW5n
MS5jX3N0cigpLCBzaGFkZXJTdHJpbmcyLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNoYWRlclN0cmluZzMuY19zdHIoKX07Ci0KLSAgICB0ZXN0Q29tcGlsZShz
aGFkZXJTdHJpbmdzLCAzLCB0cnVlKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9TaGFkZXJFeHRlbnNpb25fdGVzdC5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvU2hhZGVy
RXh0ZW5zaW9uX3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjNkZTNk
ZWU0NzA1YjAxMjdiYjgwZmZlMjI3NzQ3ZGJjYmM0MThjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9jb21waWxlcl90ZXN0cy9TaGFkZXJFeHRlbnNpb25fdGVzdC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwyMTggKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBFeHRlbnNpb25fdGVzdC5jcHAKLS8v
ICAgVGVzdCB0aGF0IHNoYWRlcnMgbmVlZCB2YXJpb3VzIGV4dGVuc2lvbnMgdG8gYmUgY29tcGls
ZWQuCi0vLwotCi0jaW5jbHVkZSAiYW5nbGVfZ2wuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgotCi1zdGF0aWMgY29uc3QgY2hhciAq
RnJhZ0RlcHRoRXh0U2hkcltdID0KLXsKLSAgICAvLyBGaXJzdCBzdHJpbmcgb2YgdGhlIHNoYWRl
ci4gVGhlIHJlcXVpcmVkIHByYWdtYSBkZWNsYXJhdGlvbi4KLSAgICAiI2V4dGVuc2lvbiBHTF9F
WFRfZnJhZ19kZXB0aCA6IGVuYWJsZVxuIiwKLQotICAgIC8vIFNlY29uZCBzdHJpbmcgb2YgdGhl
IHNoYWRlci4gVGhlIHJlc3Qgb2YgdGhlIHNoYWRlciBib2R5LgotICAgICJ2b2lkIG1haW4oKSB7
IGdsX0ZyYWdEZXB0aEVYVCA9IDEuMDsgfVxuIgotfTsKLQotc3RhdGljIGNvbnN0IGNoYXIgKlN0
YW5kRGVyaXZFeHRTaGRyW10gPQotewotICAgIC8vIEZpcnN0IHN0cmluZyBvZiB0aGUgc2hhZGVy
LiBUaGUgcmVxdWlyZWQgcHJhZ21hIGRlY2xhcmF0aW9uLgotICAgICIjZXh0ZW5zaW9uIEdMX09F
U19zdGFuZGFyZF9kZXJpdmF0aXZlcyA6IGVuYWJsZVxuIiwKLQotICAgIC8vIFNlY29uZCBzdHJp
bmcgb2YgdGhlIHNoYWRlci4gVGhlIHJlc3Qgb2YgdGhlIHNoYWRlciBib2R5LgotICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAidmFyeWluZyB2ZWMyIHRleENvb3JkO1xuIgot
ICAgICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoZEZkeCh0ZXhDb29yZC54KSwg
ZEZkeSh0ZXhDb29yZC55KSwgZndpZHRoKHRleENvb3JkLngpLCAxLjApOyB9XG4iCi19OwotCi1z
dGF0aWMgY29uc3QgY2hhciAqVGV4dHVyZUxPRFNoZHJbXSA9Ci17Ci0gICAgLy8gRmlyc3Qgc3Ry
aW5nIG9mIHRoZSBzaGFkZXIuIFRoZSByZXF1aXJlZCBwcmFnbWEgZGVjbGFyYXRpb24uCi0gICAg
IiNleHRlbnNpb24gR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCA6IGVuYWJsZVxuIiwKLQotICAg
IC8vIFNlY29uZCBzdHJpbmcgb2YgdGhlIHNoYWRlci4gVGhlIHJlc3Qgb2YgdGhlIHNoYWRlciBi
b2R5LgotICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAidmFyeWluZyB2ZWMy
IHRleENvb3JkMHY7XG4iCi0gICAgInVuaWZvcm0gZmxvYXQgbG9kO1xuIgotICAgICJ1bmlmb3Jt
IHNhbXBsZXIyRCB0ZXg7XG4iCi0gICAgInZvaWQgbWFpbigpIHsgdmVjNCBjb2xvciA9IHRleHR1
cmUyRExvZEVYVCh0ZXgsIHRleENvb3JkMHYsIGxvZCk7IH1cbiIKLX07Ci0KLWNsYXNzIFNoYWRl
ckV4dGVuc2lvblRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAotewotICBwdWJsaWM6Ci0gICAg
U2hhZGVyRXh0ZW5zaW9uVGVzdCgpIHt9Ci0KLSAgcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9p
ZCBTZXRVcCgpCi0gICAgewotICAgICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZtUmVzb3Vy
Y2VzKTsKLSAgICAgICAgbUNvbXBpbGVyID0gTlVMTDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZv
aWQgVGVhckRvd24oKQotICAgIHsKLSAgICAgICAgRGVzdHJveUNvbXBpbGVyKCk7Ci0gICAgfQot
Ci0gICAgdm9pZCBEZXN0cm95Q29tcGlsZXIoKQotICAgIHsKLSAgICAgICAgaWYgKG1Db21waWxl
cikKLSAgICAgICAgewotICAgICAgICAgICAgU2hEZXN0cnVjdChtQ29tcGlsZXIpOwotICAgICAg
ICAgICAgbUNvbXBpbGVyID0gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgSW5p
dGlhbGl6ZUNvbXBpbGVyKCkKLSAgICB7Ci0gICAgICAgIERlc3Ryb3lDb21waWxlcigpOwotICAg
ICAgICBtQ29tcGlsZXIgPSBTaENvbnN0cnVjdENvbXBpbGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwg
U0hfV0VCR0xfU1BFQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
SF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVULCAmbVJlc291cmNlcyk7Ci0gICAgICAgIEFTU0VS
VF9UUlVFKG1Db21waWxlciAhPSBOVUxMKSA8PCAiQ29tcGlsZXIgY291bGQgbm90IGJlIGNvbnN0
cnVjdGVkLiI7Ci0gICAgfQotCi0gICAgdm9pZCBUZXN0U2hhZGVyRXh0ZW5zaW9uKGNvbnN0IGNo
YXIgKipzaGFkZXJTdHJpbmdzLCBpbnQgc3RyaW5nQ291bnQsIGJvb2wgZXhwZWN0YXRpb24pCi0g
ICAgewotICAgICAgICBib29sIHN1Y2Nlc3MgPSBTaENvbXBpbGUobUNvbXBpbGVyLCBzaGFkZXJT
dHJpbmdzLCBzdHJpbmdDb3VudCwgMCk7Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjb21w
aWxlTG9nID0gU2hHZXRJbmZvTG9nKG1Db21waWxlcik7Ci0gICAgICAgIEVYUEVDVF9FUShleHBl
Y3RhdGlvbiwgc3VjY2VzcykgPDwgY29tcGlsZUxvZzsKLSAgICB9Ci0KLSAgcHJvdGVjdGVkOgot
ICAgIFNoQnVpbHRJblJlc291cmNlcyBtUmVzb3VyY2VzOwotICAgIFNoSGFuZGxlIG1Db21waWxl
cjsKLX07Ci0KLVRFU1RfRihTaGFkZXJFeHRlbnNpb25UZXN0LCBGcmFnRGVwdGhFeHRSZXF1aXJl
c0V4dCkKLXsKLSAgICAvLyBFeHRlbnNpb24gaXMgcmVxdWlyZWQgdG8gY29tcGlsZSBwcm9wZXJs
eS4KLSAgICBtUmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoID0gMDsKLSAgICBJbml0aWFsaXplQ29t
cGlsZXIoKTsKLSAgICBUZXN0U2hhZGVyRXh0ZW5zaW9uKEZyYWdEZXB0aEV4dFNoZHIsIDIsIGZh
bHNlKTsKLX0KLQotVEVTVF9GKFNoYWRlckV4dGVuc2lvblRlc3QsIEZyYWdEZXB0aEV4dFJlcXVp
cmVzUHJhZ21hKQotewotICAgIC8vIFByYWdtYSBpcyByZXF1aXJlZCB0byBjb21waWxlIHByb3Bl
cmx5LgotICAgIG1SZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGggPSAxOwotICAgIEluaXRpYWxpemVD
b21waWxlcigpOwotICAgIFRlc3RTaGFkZXJFeHRlbnNpb24oJkZyYWdEZXB0aEV4dFNoZHJbMV0s
IDEsIGZhbHNlKTsKLX0KLQotVEVTVF9GKFNoYWRlckV4dGVuc2lvblRlc3QsIEZyYWdEZXB0aEV4
dENvbXBpbGVzKQotewotICAgIC8vIFRlc3QgdGhhdCBpdCBjb21waWxlcyBwcm9wZXJseSB3aXRo
IGV4dGVuc2lvbiBlbmFibGVkLgotICAgIG1SZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGggPSAxOwot
ICAgIEluaXRpYWxpemVDb21waWxlcigpOwotICAgIFRlc3RTaGFkZXJFeHRlbnNpb24oRnJhZ0Rl
cHRoRXh0U2hkciwgMiwgdHJ1ZSk7Ci19Ci0KLVRFU1RfRihTaGFkZXJFeHRlbnNpb25UZXN0LCBG
cmFnRGVwdGhFeHRSZXNldHNJbnRlcm5hbFN0YXRlcykKLXsKLSAgICAvLyBUZXN0IHRoYXQgZXh0
ZW5zaW9uIGludGVybmFsIHN0YXRlcyBhcmUgcmVzZXQgcHJvcGVybHkgYmV0d2VlbiBjb21waWxl
cy4KLSAgICBtUmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoID0gMTsKLSAgICBJbml0aWFsaXplQ29t
cGlsZXIoKTsKLQotICAgIFRlc3RTaGFkZXJFeHRlbnNpb24oRnJhZ0RlcHRoRXh0U2hkciwgMiwg
dHJ1ZSk7Ci0gICAgVGVzdFNoYWRlckV4dGVuc2lvbigmRnJhZ0RlcHRoRXh0U2hkclsxXSwgMSwg
ZmFsc2UpOwotICAgIFRlc3RTaGFkZXJFeHRlbnNpb24oRnJhZ0RlcHRoRXh0U2hkciwgMiwgdHJ1
ZSk7Ci19Ci0KLVRFU1RfRihTaGFkZXJFeHRlbnNpb25UZXN0LCBTdGFuZERlcml2RXh0UmVxdWly
ZXNFeHQpCi17Ci0gICAgLy8gRXh0ZW5zaW9uIGlzIHJlcXVpcmVkIHRvIGNvbXBpbGUgcHJvcGVy
bHkuCi0gICAgbVJlc291cmNlcy5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgPSAwOwotICAgIElu
aXRpYWxpemVDb21waWxlcigpOwotICAgIFRlc3RTaGFkZXJFeHRlbnNpb24oU3RhbmREZXJpdkV4
dFNoZHIsIDIsIGZhbHNlKTsKLX0KLQotVEVTVF9GKFNoYWRlckV4dGVuc2lvblRlc3QsIFN0YW5k
RGVyaXZFeHRSZXF1aXJlc1ByYWdtYSkKLXsKLSAgICAvLyBQcmFnbWEgaXMgcmVxdWlyZWQgdG8g
Y29tcGlsZSBwcm9wZXJseS4KLSAgICBtUmVzb3VyY2VzLk9FU19zdGFuZGFyZF9kZXJpdmF0aXZl
cyA9IDE7Ci0gICAgSW5pdGlhbGl6ZUNvbXBpbGVyKCk7Ci0gICAgVGVzdFNoYWRlckV4dGVuc2lv
bigmU3RhbmREZXJpdkV4dFNoZHJbMV0sIDEsIGZhbHNlKTsKLX0KLQotVEVTVF9GKFNoYWRlckV4
dGVuc2lvblRlc3QsIFN0YW5kRGVyaXZFeHRDb21waWxlcykKLXsKLSAgICAvLyBUZXN0IHRoYXQg
aXQgY29tcGlsZXMgcHJvcGVybHkgd2l0aCBleHRlbnNpb24gZW5hYmxlZC4KLSAgICBtUmVzb3Vy
Y2VzLk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA9IDE7Ci0gICAgSW5pdGlhbGl6ZUNvbXBpbGVy
KCk7Ci0gICAgVGVzdFNoYWRlckV4dGVuc2lvbihTdGFuZERlcml2RXh0U2hkciwgMiwgdHJ1ZSk7
Ci19Ci0KLVRFU1RfRihTaGFkZXJFeHRlbnNpb25UZXN0LCBTdGFuZERlcml2RXh0UmVzZXRzSW50
ZXJuYWxTdGF0ZXMpCi17Ci0gICAgLy8gVGVzdCB0aGF0IGV4dGVuc2lvbiBpbnRlcm5hbCBzdGF0
ZXMgYXJlIHJlc2V0IHByb3Blcmx5IGJldHdlZW4gY29tcGlsZXMuCi0gICAgbVJlc291cmNlcy5P
RVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgPSAxOwotICAgIEluaXRpYWxpemVDb21waWxlcigpOwot
Ci0gICAgVGVzdFNoYWRlckV4dGVuc2lvbihTdGFuZERlcml2RXh0U2hkciwgMiwgdHJ1ZSk7Ci0g
ICAgVGVzdFNoYWRlckV4dGVuc2lvbigmU3RhbmREZXJpdkV4dFNoZHJbMV0sIDEsIGZhbHNlKTsK
LSAgICBUZXN0U2hhZGVyRXh0ZW5zaW9uKFN0YW5kRGVyaXZFeHRTaGRyLCAyLCB0cnVlKTsKLSAg
ICBUZXN0U2hhZGVyRXh0ZW5zaW9uKCZTdGFuZERlcml2RXh0U2hkclsxXSwgMSwgZmFsc2UpOwot
fQotCi1URVNUX0YoU2hhZGVyRXh0ZW5zaW9uVGVzdCwgVGV4dHVyZUxPREV4dFJlcXVpcmVzRXh0
KQotewotICAgIC8vIEV4dGVuc2lvbiBpcyByZXF1aXJlZCB0byBjb21waWxlIHByb3Blcmx5Lgot
ICAgIG1SZXNvdXJjZXMuRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCA9IDA7Ci0gICAgSW5pdGlhbGl6
ZUNvbXBpbGVyKCk7Ci0gICAgVGVzdFNoYWRlckV4dGVuc2lvbihUZXh0dXJlTE9EU2hkciwgMiwg
ZmFsc2UpOwotfQotCi1URVNUX0YoU2hhZGVyRXh0ZW5zaW9uVGVzdCwgVGV4dHVyZUxPREV4dFJl
cXVpcmVzUHJhZ21hKQotewotICAgIC8vIFByYWdtYSBpcyByZXF1aXJlZCB0byBjb21waWxlIHBy
b3Blcmx5LgotICAgIG1SZXNvdXJjZXMuRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCA9IDE7Ci0gICAg
SW5pdGlhbGl6ZUNvbXBpbGVyKCk7Ci0gICAgVGVzdFNoYWRlckV4dGVuc2lvbigmVGV4dHVyZUxP
RFNoZHJbMV0sIDEsIGZhbHNlKTsKLX0KLQotVEVTVF9GKFNoYWRlckV4dGVuc2lvblRlc3QsIFRl
eHR1cmVMT0RFeHRDb21waWxlcykKLXsKLSAgICAvLyBUZXN0IHRoYXQgaXQgY29tcGlsZXMgcHJv
cGVybHkgd2l0aCBleHRlbnNpb24gZW5hYmxlZC4KLSAgICBtUmVzb3VyY2VzLkVYVF9zaGFkZXJf
dGV4dHVyZV9sb2QgPSAxOwotICAgIEluaXRpYWxpemVDb21waWxlcigpOwotICAgIFRlc3RTaGFk
ZXJFeHRlbnNpb24oVGV4dHVyZUxPRFNoZHIsIDIsIHRydWUpOwotfQotCi1URVNUX0YoU2hhZGVy
RXh0ZW5zaW9uVGVzdCwgVGV4dHVyZUxPREV4dFJlc2V0c0ludGVybmFsU3RhdGVzKQotewotICAg
IC8vIFRlc3QgdGhhdCBleHRlbnNpb24gaW50ZXJuYWwgc3RhdGVzIGFyZSByZXNldCBwcm9wZXJs
eSBiZXR3ZWVuIGNvbXBpbGVzLgotICAgIG1SZXNvdXJjZXMuRVhUX3NoYWRlcl90ZXh0dXJlX2xv
ZCA9IDE7Ci0gICAgSW5pdGlhbGl6ZUNvbXBpbGVyKCk7Ci0KLSAgICBUZXN0U2hhZGVyRXh0ZW5z
aW9uKCZUZXh0dXJlTE9EU2hkclsxXSwgMSwgZmFsc2UpOwotICAgIFRlc3RTaGFkZXJFeHRlbnNp
b24oVGV4dHVyZUxPRFNoZHIsIDIsIHRydWUpOwotICAgIFRlc3RTaGFkZXJFeHRlbnNpb24oJlRl
eHR1cmVMT0RTaGRyWzFdLCAxLCBmYWxzZSk7Ci0gICAgVGVzdFNoYWRlckV4dGVuc2lvbihUZXh0
dXJlTE9EU2hkciwgMiwgdHJ1ZSk7Ci19Ci0KLS8vIFRlc3QgYSBidWcgd2hlcmUgd2UgY291bGQg
bW9kaWZ5IHRoZSB2YWx1ZSBvZiBhIGJ1aWx0aW4gdmFyaWFibGUuCi1URVNUX0YoU2hhZGVyRXh0
ZW5zaW9uVGVzdCwgQnVpbHRpblJld3JpdGluZ0J1ZykKLXsKLSAgICBtUmVzb3VyY2VzLk1heERy
YXdCdWZmZXJzID0gNDsKLSAgICBtUmVzb3VyY2VzLkVYVF9kcmF3X2J1ZmZlcnMgPSAxOwotICAg
IEluaXRpYWxpemVDb21waWxlcigpOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9Ci0gICAgICAgICIjZXh0ZW5zaW9uIEdMX0VYVF9kcmF3X2J1ZmZlcnMgOiByZXF1aXJl
XG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKLSAgICAgICAgIiAgICBnbF9GcmFnRGF0YVtnbF9NYXhEcmF3QnVmZmVyc10g
PSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIGNvbnN0IGNoYXIgKnNoYWRlclN0
cmluZ3NbXSA9IHsgc2hhZGVyU3RyaW5nLmNfc3RyKCkgfTsKLQotICAgIFRlc3RTaGFkZXJFeHRl
bnNpb24oc2hhZGVyU3RyaW5ncywgMSwgZmFsc2UpOwotICAgIFRlc3RTaGFkZXJFeHRlbnNpb24o
c2hhZGVyU3RyaW5ncywgMSwgZmFsc2UpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1NoYWRlclZhcmlhYmxlX3Rlc3QuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1NoYWRl
clZhcmlhYmxlX3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjkwZjFm
NWQzZTczNjVmNjIzM2Q3N2YzMjM3YTNjY2I2YzM2Y2JiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9jb21waWxlcl90ZXN0cy9TaGFkZXJWYXJpYWJsZV90ZXN0LmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDQyMSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIENvbGxlY3RWYXJpYWJsZXNfdGVzdC5j
cHA6Ci0vLyAgIFNvbWUgdGVzdHMgZm9yIHNoYWRlciBpbnNwZWN0aW9uCi0vLwotCi0jaW5jbHVk
ZSAiYW5nbGVfZ2wuaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0NvbXBpbGVyLmgi
Ci0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcu
aCIKLQotbmFtZXNwYWNlIHNoCi17Ci0KLVRFU1QoU2hhZGVyVmFyaWFibGVUZXN0LCBGaW5kSW5m
b0J5TWFwcGVkTmFtZSkKLXsKLSAgICAvLyBzdHJ1Y3QgQSB7Ci0gICAgLy8gICBmbG9hdCB4WzJd
OwotICAgIC8vICAgdmVjMyB5OwotICAgIC8vIH07Ci0gICAgLy8gc3RydWN0IEIgewotICAgIC8v
ICAgQSBhWzNdOwotICAgIC8vIH07Ci0gICAgLy8gQiB1bmlbMl07Ci0gICAgU2hhZGVyVmFyaWFi
bGUgdW5pOwotICAgIHVuaS5hcnJheVNpemUgPSAyOwotICAgIHVuaS5uYW1lID0gInVuaSI7Ci0g
ICAgdW5pLm1hcHBlZE5hbWUgPSAibV91bmkiOwotICAgIHVuaS5zdHJ1Y3ROYW1lID0gIkIiOwot
ICAgIHsKLSAgICAgICAgU2hhZGVyVmFyaWFibGUgYTsKLSAgICAgICAgYS5hcnJheVNpemUgPSAz
OwotICAgICAgICBhLm5hbWUgPSAiYSI7Ci0gICAgICAgIGEubWFwcGVkTmFtZSA9ICJtX2EiOwot
ICAgICAgICBhLnN0cnVjdE5hbWUgPSAiQSI7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFNoYWRl
clZhcmlhYmxlIHgoR0xfRkxPQVQsIDIpOwotICAgICAgICAgICAgeC5uYW1lID0gIngiOwotICAg
ICAgICAgICAgeC5tYXBwZWROYW1lID0gIm1feCI7Ci0gICAgICAgICAgICBhLmZpZWxkcy5wdXNo
X2JhY2soeCk7Ci0KLSAgICAgICAgICAgIFNoYWRlclZhcmlhYmxlIHkoR0xfRkxPQVRfVkVDMywg
MCk7Ci0gICAgICAgICAgICB5Lm5hbWUgPSAieSI7Ci0gICAgICAgICAgICB5Lm1hcHBlZE5hbWUg
PSAibV95IjsKLSAgICAgICAgICAgIGEuZmllbGRzLnB1c2hfYmFjayh5KTsKLSAgICAgICAgfQot
ICAgICAgICB1bmkuZmllbGRzLnB1c2hfYmFjayhhKTsKLSAgICB9Ci0KLSAgICBjb25zdCBTaGFk
ZXJWYXJpYWJsZSAqbGVhZlZhciA9IG51bGxwdHI7Ci0gICAgc3RkOjpzdHJpbmcgb3JpZ2luYWxG
dWxsTmFtZTsKLQotICAgIHN0ZDo6c3RyaW5nIG1hcHBlZEZ1bGxOYW1lID0gIndyb25nTmFtZSI7
Ci0gICAgRVhQRUNUX0ZBTFNFKHVuaS5maW5kSW5mb0J5TWFwcGVkTmFtZSgKLSAgICAgICAgbWFw
cGVkRnVsbE5hbWUsICZsZWFmVmFyLCAmb3JpZ2luYWxGdWxsTmFtZSkpOwotCi0gICAgbWFwcGVk
RnVsbE5hbWUgPSAibV91bmkiOwotICAgIEVYUEVDVF9UUlVFKHVuaS5maW5kSW5mb0J5TWFwcGVk
TmFtZSgKLSAgICAgICAgbWFwcGVkRnVsbE5hbWUsICZsZWFmVmFyLCAmb3JpZ2luYWxGdWxsTmFt
ZSkpOwotICAgIEVYUEVDVF9FUSgmdW5pLCBsZWFmVmFyKTsKLSAgICBFWFBFQ1RfU1RSRVEoInVu
aSIsIG9yaWdpbmFsRnVsbE5hbWUuY19zdHIoKSk7Ci0KLSAgICBtYXBwZWRGdWxsTmFtZSA9ICJt
X3VuaVswXS5tX2FbMV0ud3JvbmdOYW1lIjsKLSAgICBFWFBFQ1RfRkFMU0UodW5pLmZpbmRJbmZv
QnlNYXBwZWROYW1lKAotICAgICAgICBtYXBwZWRGdWxsTmFtZSwgJmxlYWZWYXIsICZvcmlnaW5h
bEZ1bGxOYW1lKSk7Ci0KLSAgICBtYXBwZWRGdWxsTmFtZSA9ICJtX3VuaVswXS5tX2FbMV0ubV94
IjsKLSAgICBFWFBFQ1RfVFJVRSh1bmkuZmluZEluZm9CeU1hcHBlZE5hbWUoCi0gICAgICAgIG1h
cHBlZEZ1bGxOYW1lLCAmbGVhZlZhciwgJm9yaWdpbmFsRnVsbE5hbWUpKTsKLSAgICBFWFBFQ1Rf
RVEoJih1bmkuZmllbGRzWzBdLmZpZWxkc1swXSksIGxlYWZWYXIpOwotICAgIEVYUEVDVF9TVFJF
USgidW5pWzBdLmFbMV0ueCIsIG9yaWdpbmFsRnVsbE5hbWUuY19zdHIoKSk7Ci0KLSAgICBtYXBw
ZWRGdWxsTmFtZSA9ICJtX3VuaVswXS5tX2FbMV0ubV94WzBdIjsKLSAgICBFWFBFQ1RfVFJVRSh1
bmkuZmluZEluZm9CeU1hcHBlZE5hbWUoCi0gICAgICAgIG1hcHBlZEZ1bGxOYW1lLCAmbGVhZlZh
ciwgJm9yaWdpbmFsRnVsbE5hbWUpKTsKLSAgICBFWFBFQ1RfRVEoJih1bmkuZmllbGRzWzBdLmZp
ZWxkc1swXSksIGxlYWZWYXIpOwotICAgIEVYUEVDVF9TVFJFUSgidW5pWzBdLmFbMV0ueFswXSIs
IG9yaWdpbmFsRnVsbE5hbWUuY19zdHIoKSk7Ci0KLSAgICBtYXBwZWRGdWxsTmFtZSA9ICJtX3Vu
aVswXS5tX2FbMV0ubV95IjsKLSAgICBFWFBFQ1RfVFJVRSh1bmkuZmluZEluZm9CeU1hcHBlZE5h
bWUoCi0gICAgICAgIG1hcHBlZEZ1bGxOYW1lLCAmbGVhZlZhciwgJm9yaWdpbmFsRnVsbE5hbWUp
KTsKLSAgICBFWFBFQ1RfRVEoJih1bmkuZmllbGRzWzBdLmZpZWxkc1sxXSksIGxlYWZWYXIpOwot
ICAgIEVYUEVDVF9TVFJFUSgidW5pWzBdLmFbMV0ueSIsIG9yaWdpbmFsRnVsbE5hbWUuY19zdHIo
KSk7Ci19Ci0KLVRFU1QoU2hhZGVyVmFyaWFibGVUZXN0LCBJc1NhbWVVbmlmb3JtV2l0aERpZmZl
cmVudEZpZWxkT3JkZXIpCi17Ci0gICAgLy8gc3RydWN0IEEgewotICAgIC8vICAgZmxvYXQgeDsK
LSAgICAvLyAgIGZsb2F0IHk7Ci0gICAgLy8gfTsKLSAgICAvLyB1bmlmb3JtIEEgdW5pOwotICAg
IFVuaWZvcm0gdnhfYTsKLSAgICB2eF9hLmFycmF5U2l6ZSA9IDA7Ci0gICAgdnhfYS5uYW1lID0g
InVuaSI7Ci0gICAgdnhfYS5tYXBwZWROYW1lID0gIm1fdW5pIjsKLSAgICB2eF9hLnN0cnVjdE5h
bWUgPSAiQSI7Ci0gICAgewotICAgICAgICBTaGFkZXJWYXJpYWJsZSB4KEdMX0ZMT0FULCAwKTsK
LSAgICAgICAgeC5uYW1lID0gIngiOwotICAgICAgICB4Lm1hcHBlZE5hbWUgPSAibV94IjsKLSAg
ICAgICAgdnhfYS5maWVsZHMucHVzaF9iYWNrKHgpOwotCi0gICAgICAgIFNoYWRlclZhcmlhYmxl
IHkoR0xfRkxPQVQsIDApOwotICAgICAgICB5Lm5hbWUgPSAieSI7Ci0gICAgICAgIHkubWFwcGVk
TmFtZSA9ICJtX3kiOwotICAgICAgICB2eF9hLmZpZWxkcy5wdXNoX2JhY2soeSk7Ci0gICAgfQot
Ci0gICAgLy8gc3RydWN0IEEgewotICAgIC8vICAgZmxvYXQgeTsKLSAgICAvLyAgIGZsb2F0IHg7
Ci0gICAgLy8gfTsKLSAgICAvLyB1bmlmb3JtIEEgdW5pOwotICAgIFVuaWZvcm0gZnhfYTsKLSAg
ICBmeF9hLmFycmF5U2l6ZSA9IDA7Ci0gICAgZnhfYS5uYW1lID0gInVuaSI7Ci0gICAgZnhfYS5t
YXBwZWROYW1lID0gIm1fdW5pIjsKLSAgICBmeF9hLnN0cnVjdE5hbWUgPSAiQSI7Ci0gICAgewot
ICAgICAgICBTaGFkZXJWYXJpYWJsZSB5KEdMX0ZMT0FULCAwKTsKLSAgICAgICAgeS5uYW1lID0g
InkiOwotICAgICAgICB5Lm1hcHBlZE5hbWUgPSAibV95IjsKLSAgICAgICAgZnhfYS5maWVsZHMu
cHVzaF9iYWNrKHkpOwotCi0gICAgICAgIFNoYWRlclZhcmlhYmxlIHgoR0xfRkxPQVQsIDApOwot
ICAgICAgICB4Lm5hbWUgPSAieCI7Ci0gICAgICAgIHgubWFwcGVkTmFtZSA9ICJtX3giOwotICAg
ICAgICBmeF9hLmZpZWxkcy5wdXNoX2JhY2soeCk7Ci0gICAgfQotCi0gICAgRVhQRUNUX0ZBTFNF
KHZ4X2EuaXNTYW1lVW5pZm9ybUF0TGlua1RpbWUoZnhfYSkpOwotfQotCi1URVNUKFNoYWRlclZh
cmlhYmxlVGVzdCwgSXNTYW1lVW5pZm9ybVdpdGhEaWZmZXJlbnRTdHJ1Y3ROYW1lcykKLXsKLSAg
ICAvLyBzdHJ1Y3QgQSB7Ci0gICAgLy8gICBmbG9hdCB4OwotICAgIC8vICAgZmxvYXQgeTsKLSAg
ICAvLyB9OwotICAgIC8vIHVuaWZvcm0gQSB1bmk7Ci0gICAgVW5pZm9ybSB2eF9hOwotICAgIHZ4
X2EuYXJyYXlTaXplID0gMDsKLSAgICB2eF9hLm5hbWUgPSAidW5pIjsKLSAgICB2eF9hLm1hcHBl
ZE5hbWUgPSAibV91bmkiOwotICAgIHZ4X2Euc3RydWN0TmFtZSA9ICJBIjsKLSAgICB7Ci0gICAg
ICAgIFNoYWRlclZhcmlhYmxlIHgoR0xfRkxPQVQsIDApOwotICAgICAgICB4Lm5hbWUgPSAieCI7
Ci0gICAgICAgIHgubWFwcGVkTmFtZSA9ICJtX3giOwotICAgICAgICB2eF9hLmZpZWxkcy5wdXNo
X2JhY2soeCk7Ci0KLSAgICAgICAgU2hhZGVyVmFyaWFibGUgeShHTF9GTE9BVCwgMCk7Ci0gICAg
ICAgIHkubmFtZSA9ICJ5IjsKLSAgICAgICAgeS5tYXBwZWROYW1lID0gIm1feSI7Ci0gICAgICAg
IHZ4X2EuZmllbGRzLnB1c2hfYmFjayh5KTsKLSAgICB9Ci0KLSAgICAvLyBzdHJ1Y3QgQiB7Ci0g
ICAgLy8gICBmbG9hdCB4OwotICAgIC8vICAgZmxvYXQgeTsKLSAgICAvLyB9OwotICAgIC8vIHVu
aWZvcm0gQiB1bmk7Ci0gICAgVW5pZm9ybSBmeF9hOwotICAgIGZ4X2EuYXJyYXlTaXplID0gMDsK
LSAgICBmeF9hLm5hbWUgPSAidW5pIjsKLSAgICBmeF9hLm1hcHBlZE5hbWUgPSAibV91bmkiOwot
ICAgIHsKLSAgICAgICAgU2hhZGVyVmFyaWFibGUgeChHTF9GTE9BVCwgMCk7Ci0gICAgICAgIHgu
bmFtZSA9ICJ4IjsKLSAgICAgICAgeC5tYXBwZWROYW1lID0gIm1feCI7Ci0gICAgICAgIGZ4X2Eu
ZmllbGRzLnB1c2hfYmFjayh4KTsKLQotICAgICAgICBTaGFkZXJWYXJpYWJsZSB5KEdMX0ZMT0FU
LCAwKTsKLSAgICAgICAgeS5uYW1lID0gInkiOwotICAgICAgICB5Lm1hcHBlZE5hbWUgPSAibV95
IjsKLSAgICAgICAgZnhfYS5maWVsZHMucHVzaF9iYWNrKHkpOwotICAgIH0KLQotICAgIGZ4X2Eu
c3RydWN0TmFtZSA9ICJCIjsKLSAgICBFWFBFQ1RfRkFMU0UodnhfYS5pc1NhbWVVbmlmb3JtQXRM
aW5rVGltZShmeF9hKSk7Ci0KLSAgICBmeF9hLnN0cnVjdE5hbWUgPSAiQSI7Ci0gICAgRVhQRUNU
X1RSVUUodnhfYS5pc1NhbWVVbmlmb3JtQXRMaW5rVGltZShmeF9hKSk7Ci0KLSAgICBmeF9hLnN0
cnVjdE5hbWUgPSAiIjsKLSAgICBFWFBFQ1RfRkFMU0UodnhfYS5pc1NhbWVVbmlmb3JtQXRMaW5r
VGltZShmeF9hKSk7Ci19Ci0KLVRFU1QoU2hhZGVyVmFyaWFibGVUZXN0LCBJc1NhbWVWYXJ5aW5n
V2l0aERpZmZlcmVudEludmFyaWFuY2UpCi17Ci0gICAgLy8gaW52YXJpYW50IHZhcnlpbmcgZmxv
YXQgdmFyeTsKLSAgICBWYXJ5aW5nIHZ4OwotICAgIHZ4LnR5cGUgPSBHTF9GTE9BVDsKLSAgICB2
eC5hcnJheVNpemUgPSAwOwotICAgIHZ4LnByZWNpc2lvbiA9IEdMX01FRElVTV9GTE9BVDsKLSAg
ICB2eC5uYW1lID0gInZhcnkiOwotICAgIHZ4Lm1hcHBlZE5hbWUgPSAibV92YXJ5IjsKLSAgICB2
eC5zdGF0aWNVc2UgPSB0cnVlOwotICAgIHZ4LmlzSW52YXJpYW50ID0gdHJ1ZTsKLQotICAgIC8v
IHZhcnlpbmcgZmxvYXQgdmFyeTsKLSAgICBWYXJ5aW5nIGZ4OwotICAgIGZ4LnR5cGUgPSBHTF9G
TE9BVDsKLSAgICBmeC5hcnJheVNpemUgPSAwOwotICAgIGZ4LnByZWNpc2lvbiA9IEdMX01FRElV
TV9GTE9BVDsKLSAgICBmeC5uYW1lID0gInZhcnkiOwotICAgIGZ4Lm1hcHBlZE5hbWUgPSAibV92
YXJ5IjsKLSAgICBmeC5zdGF0aWNVc2UgPSB0cnVlOwotICAgIGZ4LmlzSW52YXJpYW50ID0gZmFs
c2U7Ci0KLSAgICAvLyBEZWZhdWx0IHRvIEVTU0wxIGJlaGF2aW9yOiBpbnZhcmlhbmNlIG11c3Qg
bWF0Y2gKLSAgICBFWFBFQ1RfRkFMU0UodnguaXNTYW1lVmFyeWluZ0F0TGlua1RpbWUoZngpKTsK
LSAgICBFWFBFQ1RfRkFMU0UodnguaXNTYW1lVmFyeWluZ0F0TGlua1RpbWUoZngsIDEwMCkpOwot
ICAgIC8vIEVTU0wzIGJlaGF2aW9yOiBpbnZhcmlhbmNlIGRvZXNuJ3QgbmVlZCB0byBtYXRjaAot
ICAgIEVYUEVDVF9UUlVFKHZ4LmlzU2FtZVZhcnlpbmdBdExpbmtUaW1lKGZ4LCAzMDApKTsKLQot
ICAgIC8vIGludmFyaWFudCB2YXJ5aW5nIGZsb2F0IHZhcnk7Ci0gICAgZnguaXNJbnZhcmlhbnQg
PSB0cnVlOwotICAgIEVYUEVDVF9UUlVFKHZ4LmlzU2FtZVZhcnlpbmdBdExpbmtUaW1lKGZ4KSk7
Ci0gICAgRVhQRUNUX1RSVUUodnguaXNTYW1lVmFyeWluZ0F0TGlua1RpbWUoZngsIDEwMCkpOwot
ICAgIEVYUEVDVF9UUlVFKHZ4LmlzU2FtZVZhcnlpbmdBdExpbmtUaW1lKGZ4LCAzMDApKTsKLX0K
LQotLy8gVGVzdCB0aGF0IHVzaW5nIGludmFyaWFudCB2YXJ5aW5ncyBkb2Vzbid0IHRyaWdnZXIg
YSBkb3VibGUgZGVsZXRlLgotVEVTVChTaGFkZXJWYXJpYWJsZVRlc3QsIEludmFyaWFudERvdWJs
ZURlbGV0ZUJ1ZykKLXsKLSAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOwotICAgIFNo
SW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7Ci0KLSAgICBTaEhhbmRsZSBjb21waWxl
ciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzJfU1BFQywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hfR0xTTF9DT01Q
QVRJQklMSVRZX09VVFBVVCwgJnJlc291cmNlcyk7Ci0gICAgRVhQRUNUX05FKHN0YXRpY19jYXN0
PFNoSGFuZGxlPigwKSwgY29tcGlsZXIpOwotCi0gICAgY29uc3QgY2hhciAqcHJvZ3JhbVtdID0K
LSAgICB7Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjtcbiIKLSAgICAgICAgInZh
cnlpbmcgZmxvYXQgdjtcbiIKLSAgICAgICAgImludmFyaWFudCB2O1xuIgotICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgotICAgICAgICAiICB2ID0gMS4wO1xuIgotICAgICAgICAiICBnbF9Qb3Np
dGlvbiA9IHBvc2l0aW9uO1xuIgotICAgICAgICAifSIKLSAgICB9OwotCi0gICAgRVhQRUNUX1RS
VUUoU2hDb21waWxlKGNvbXBpbGVyLCBwcm9ncmFtLCAxLCBTSF9PQkpFQ1RfQ09ERSkpOwotICAg
IEVYUEVDVF9UUlVFKFNoQ29tcGlsZShjb21waWxlciwgcHJvZ3JhbSwgMSwgU0hfT0JKRUNUX0NP
REUpKTsKLSAgICBTaERlc3RydWN0KGNvbXBpbGVyKTsKLX0KLQotVEVTVChTaGFkZXJWYXJpYWJs
ZVRlc3QsIElsbGVnYWxJbnZhcmlhbnRWYXJ5aW5nKQotewotICAgIFNoQnVpbHRJblJlc291cmNl
cyByZXNvdXJjZXM7Ci0gICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2VzKTsKLQot
ICAgIFNoSGFuZGxlIGNvbXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihHTF9WRVJURVhfU0hB
REVSLCBTSF9HTEVTMl9TUEVDLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVULCAmcmVzb3VyY2VzKTsKLSAgICBF
WFBFQ1RfTkUoc3RhdGljX2Nhc3Q8U2hIYW5kbGU+KDApLCBjb21waWxlcik7Ci0KLSAgICBjb25z
dCBjaGFyICpwcm9ncmFtMVtdID0KLSAgICB7Ci0gICAgICAgICJ2b2lkIGZvbygpIHtcbiIKLSAg
ICAgICAgIiAgdmVjNCB2O1xuIgotICAgICAgICAifVxuIgotICAgICAgICAidmFyeWluZyB2ZWM0
IHZfdmFyeWluZztcbiIKLSAgICAgICAgImludmFyaWFudCB2X3Zhcnlpbmc7XG4iCi0gICAgICAg
ICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGZvbygpO1xuIgotICAgICAgICAiICBnbF9Q
b3NpdGlvbiA9IHZfdmFyeWluZztcbiIKLSAgICAgICAgIn0iCi0gICAgfTsKLSAgICBjb25zdCBj
aGFyICpwcm9ncmFtMltdID0KLSAgICB7Ci0gICAgICAgICJ2YXJ5aW5nIHZlYzQgdl92YXJ5aW5n
O1xuIgotICAgICAgICAidm9pZCBmb28oKSB7XG4iCi0gICAgICAgICIgIGludmFyaWFudCB2X3Zh
cnlpbmc7XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAg
ICAgICIgIGZvbygpO1xuIgotICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZfdmFyeWluZztcbiIK
LSAgICAgICAgIn0iCi0gICAgfTsKLQotICAgIEVYUEVDVF9UUlVFKFNoQ29tcGlsZShjb21waWxl
ciwgcHJvZ3JhbTEsIDEsIFNIX1ZBUklBQkxFUykpOwotICAgIEVYUEVDVF9GQUxTRShTaENvbXBp
bGUoY29tcGlsZXIsIHByb2dyYW0yLCAxLCBTSF9WQVJJQUJMRVMpKTsKLX0KLQotVEVTVChTaGFk
ZXJWYXJpYWJsZVRlc3QsIEludmFyaWFudExlYWtBY3Jvc3NTaGFkZXJzKQotewotICAgIFNoQnVp
bHRJblJlc291cmNlcyByZXNvdXJjZXM7Ci0gICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVz
b3VyY2VzKTsKLQotICAgIFNoSGFuZGxlIGNvbXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihH
TF9WRVJURVhfU0hBREVSLCBTSF9HTEVTMl9TUEVDLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVULCAmcmVzb3Vy
Y2VzKTsKLSAgICBFWFBFQ1RfTkUoc3RhdGljX2Nhc3Q8U2hIYW5kbGU+KDApLCBjb21waWxlcik7
Ci0KLSAgICBjb25zdCBjaGFyICpwcm9ncmFtMVtdID0KLSAgICB7Ci0gICAgICAgICJ2YXJ5aW5n
IHZlYzQgdl92YXJ5aW5nO1xuIgotICAgICAgICAiaW52YXJpYW50IHZfdmFyeWluZztcbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2X3Zhcnlp
bmc7XG4iCi0gICAgICAgICJ9IgotICAgIH07Ci0gICAgY29uc3QgY2hhciAqcHJvZ3JhbTJbXSA9
Ci0gICAgewotICAgICAgICAidmFyeWluZyB2ZWM0IHZfdmFyeWluZztcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2X3Zhcnlpbmc7XG4iCi0g
ICAgICAgICJ9IgotICAgIH07Ci0KLSAgICBFWFBFQ1RfVFJVRShTaENvbXBpbGUoY29tcGlsZXIs
IHByb2dyYW0xLCAxLCBTSF9WQVJJQUJMRVMpKTsKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6
VmFyeWluZz4gKnZhcnlpbmdzID0gU2hHZXRWYXJ5aW5ncyhjb21waWxlcik7Ci0gICAgZm9yIChj
b25zdCBzaDo6VmFyeWluZyAmdmFyeWluZyA6ICp2YXJ5aW5ncykKLSAgICB7Ci0gICAgICAgIGlm
ICh2YXJ5aW5nLm5hbWUgPT0gInZfdmFyeWluZyIpCi0gICAgICAgICAgICBFWFBFQ1RfVFJVRSh2
YXJ5aW5nLmlzSW52YXJpYW50KTsKLSAgICB9Ci0gICAgRVhQRUNUX1RSVUUoU2hDb21waWxlKGNv
bXBpbGVyLCBwcm9ncmFtMiwgMSwgU0hfVkFSSUFCTEVTKSk7Ci0gICAgdmFyeWluZ3MgPSBTaEdl
dFZhcnlpbmdzKGNvbXBpbGVyKTsKLSAgICBmb3IgKGNvbnN0IHNoOjpWYXJ5aW5nICZ2YXJ5aW5n
IDogKnZhcnlpbmdzKQotICAgIHsKLSAgICAgICAgaWYgKHZhcnlpbmcubmFtZSA9PSAidl92YXJ5
aW5nIikKLSAgICAgICAgICAgIEVYUEVDVF9GQUxTRSh2YXJ5aW5nLmlzSW52YXJpYW50KTsKLSAg
ICB9Ci19Ci0KLVRFU1QoU2hhZGVyVmFyaWFibGVUZXN0LCBHbG9iYWxJbnZhcmlhbnRMZWFrQWNy
b3NzU2hhZGVycykKLXsKLSAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOwotICAgIFNo
SW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7Ci0KLSAgICBTaEhhbmRsZSBjb21waWxl
ciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzJfU1BFQywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hfR0xTTF9DT01Q
QVRJQklMSVRZX09VVFBVVCwgJnJlc291cmNlcyk7Ci0gICAgRVhQRUNUX05FKHN0YXRpY19jYXN0
PFNoSGFuZGxlPigwKSwgY29tcGlsZXIpOwotCi0gICAgY29uc3QgY2hhciAqcHJvZ3JhbTFbXSA9
Ci0gICAgewotICAgICAgICAiI3ByYWdtYSBTVERHTCBpbnZhcmlhbnQoYWxsKVxuIgotICAgICAg
ICAidmFyeWluZyB2ZWM0IHZfdmFyeWluZztcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
LSAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJ9IgotICAg
IH07Ci0gICAgY29uc3QgY2hhciAqcHJvZ3JhbTJbXSA9Ci0gICAgewotICAgICAgICAidmFyeWlu
ZyB2ZWM0IHZfdmFyeWluZztcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAg
IiAgZ2xfUG9zaXRpb24gPSB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJ9IgotICAgIH07Ci0KLSAg
ICBFWFBFQ1RfVFJVRShTaENvbXBpbGUoY29tcGlsZXIsIHByb2dyYW0xLCAxLCBTSF9WQVJJQUJM
RVMpKTsKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gKnZhcnlpbmdzID0gU2hH
ZXRWYXJ5aW5ncyhjb21waWxlcik7Ci0gICAgZm9yIChjb25zdCBzaDo6VmFyeWluZyAmdmFyeWlu
ZyA6ICp2YXJ5aW5ncykKLSAgICB7Ci0gICAgICAgIGlmICh2YXJ5aW5nLm5hbWUgPT0gInZfdmFy
eWluZyIpCi0gICAgICAgICAgICBFWFBFQ1RfVFJVRSh2YXJ5aW5nLmlzSW52YXJpYW50KTsKLSAg
ICB9Ci0gICAgRVhQRUNUX1RSVUUoU2hDb21waWxlKGNvbXBpbGVyLCBwcm9ncmFtMiwgMSwgU0hf
VkFSSUFCTEVTKSk7Ci0gICAgdmFyeWluZ3MgPSBTaEdldFZhcnlpbmdzKGNvbXBpbGVyKTsKLSAg
ICBmb3IgKGNvbnN0IHNoOjpWYXJ5aW5nICZ2YXJ5aW5nIDogKnZhcnlpbmdzKQotICAgIHsKLSAg
ICAgICAgaWYgKHZhcnlpbmcubmFtZSA9PSAidl92YXJ5aW5nIikKLSAgICAgICAgICAgIEVYUEVD
VF9GQUxTRSh2YXJ5aW5nLmlzSW52YXJpYW50KTsKLSAgICB9Ci19Ci0KLVRFU1QoU2hhZGVyVmFy
aWFibGVUZXN0LCBCdWlsdGluSW52YXJpYW50VmFyeWluZykKLXsKLQotICAgIFNoQnVpbHRJblJl
c291cmNlcyByZXNvdXJjZXM7Ci0gICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2Vz
KTsKLQotICAgIFNoSGFuZGxlIGNvbXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihHTF9WRVJU
RVhfU0hBREVSLCBTSF9HTEVTMl9TUEVDLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVULCAmcmVzb3VyY2VzKTsK
LSAgICBFWFBFQ1RfTkUoc3RhdGljX2Nhc3Q8U2hIYW5kbGU+KDApLCBjb21waWxlcik7Ci0KLSAg
ICBjb25zdCBjaGFyICpwcm9ncmFtMVtdID0KLSAgICB7Ci0gICAgICAgICJpbnZhcmlhbnQgZ2xf
UG9zaXRpb247XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGdsX1Bv
c2l0aW9uID0gdmVjNCgwLCAwLCAwLCAwKTtcbiIKLSAgICAgICAgIn0iCi0gICAgfTsKLSAgICBj
b25zdCBjaGFyICpwcm9ncmFtMltdID0KLSAgICB7Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
Ci0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLCAwLCAwLCAwKTtcbiIKLSAgICAgICAg
In0iCi0gICAgfTsKLSAgICBjb25zdCBjaGFyICpwcm9ncmFtM1tdID0KLSAgICB7Ci0gICAgICAg
ICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGludmFyaWFudCBnbF9Qb3NpdGlvbjtcbiIK
LSAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAsIDAsIDAsIDApO1xuIgotICAgICAgICAi
fSIKLSAgICB9OwotCi0gICAgRVhQRUNUX1RSVUUoU2hDb21waWxlKGNvbXBpbGVyLCBwcm9ncmFt
MSwgMSwgU0hfVkFSSUFCTEVTKSk7Ci0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+
ICp2YXJ5aW5ncyA9IFNoR2V0VmFyeWluZ3MoY29tcGlsZXIpOwotICAgIGZvciAoY29uc3Qgc2g6
OlZhcnlpbmcgJnZhcnlpbmcgOiAqdmFyeWluZ3MpCi0gICAgewotICAgICAgICBpZiAodmFyeWlu
Zy5uYW1lID09ICJnbF9Qb3NpdGlvbiIpCi0gICAgICAgICAgICBFWFBFQ1RfVFJVRSh2YXJ5aW5n
LmlzSW52YXJpYW50KTsKLSAgICB9Ci0gICAgRVhQRUNUX1RSVUUoU2hDb21waWxlKGNvbXBpbGVy
LCBwcm9ncmFtMiwgMSwgU0hfVkFSSUFCTEVTKSk7Ci0gICAgdmFyeWluZ3MgPSBTaEdldFZhcnlp
bmdzKGNvbXBpbGVyKTsKLSAgICBmb3IgKGNvbnN0IHNoOjpWYXJ5aW5nICZ2YXJ5aW5nIDogKnZh
cnlpbmdzKQotICAgIHsKLSAgICAgICAgaWYgKHZhcnlpbmcubmFtZSA9PSAiZ2xfUG9zaXRpb24i
KQotICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHZhcnlpbmcuaXNJbnZhcmlhbnQpOwotICAgIH0K
LSAgICBFWFBFQ1RfRkFMU0UoU2hDb21waWxlKGNvbXBpbGVyLCBwcm9ncmFtMywgMSwgU0hfVkFS
SUFCTEVTKSk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1R5cGVUcmFja2luZ190ZXN0
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9U
eXBlVHJhY2tpbmdfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwZjA1
ZmJjMjNjZmE2YzU4MjM1ZDM5YmExMDQ4MjMyYjVmNjgwODEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2NvbXBpbGVyX3Rlc3RzL1R5cGVUcmFja2luZ190ZXN0LmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDQ1NyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIFR5cGVUcmFja2luZ190ZXN0LmNwcDoK
LS8vICAgVGVzdCBmb3IgdHJhY2tpbmcgdHlwZXMgcmVzdWx0aW5nIGZyb20gbWF0aCBvcGVyYXRp
b25zLCBpbmNsdWRpbmcgdGhlaXIKLS8vICAgcHJlY2lzaW9uLgotLy8KLQotI2luY2x1ZGUgImFu
Z2xlX2dsLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJHTFNMQU5HL1No
YWRlckxhbmcuaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NM
LmgiCi0KLWNsYXNzIFR5cGVUcmFja2luZ1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAotewot
ICBwdWJsaWM6Ci0gICAgVHlwZVRyYWNraW5nVGVzdCgpIHt9Ci0KLSAgcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgdm9pZCBTZXRVcCgpCi0gICAgewotICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMg
cmVzb3VyY2VzOwotICAgICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZyZXNvdXJjZXMpOwot
ICAgICAgICByZXNvdXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoID0gMTsKLQotICAgICAgICBt
VHJhbnNsYXRvciA9IG5ldyBUcmFuc2xhdG9yRVNTTChHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dM
RVMzX1NQRUMpOwotICAgICAgICBBU1NFUlRfVFJVRShtVHJhbnNsYXRvci0+SW5pdChyZXNvdXJj
ZXMpKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQotICAgIHsKLSAgICAg
ICAgZGVsZXRlIG1UcmFuc2xhdG9yOwotICAgIH0KLQotICAgIHZvaWQgY29tcGlsZShjb25zdCBz
dGQ6OnN0cmluZyYgc2hhZGVyU3RyaW5nKQotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciAqc2hh
ZGVyU3RyaW5nc1tdID0geyBzaGFkZXJTdHJpbmcuY19zdHIoKSB9OwotICAgICAgICBib29sIGNv
bXBpbGF0aW9uU3VjY2VzcyA9IG1UcmFuc2xhdG9yLT5jb21waWxlKHNoYWRlclN0cmluZ3MsIDEs
IFNIX0lOVEVSTUVESUFURV9UUkVFKTsKLSAgICAgICAgVEluZm9TaW5rICZpbmZvU2luayA9IG1U
cmFuc2xhdG9yLT5nZXRJbmZvU2luaygpOwotICAgICAgICBtSW5mb0xvZyAgICAgICAgICAgICAg
ICAgICAgPSBSZW1vdmVTeW1ib2xJZHNGcm9tSW5mb0xvZyhpbmZvU2luay5pbmZvLmNfc3RyKCkp
OwotICAgICAgICBpZiAoIWNvbXBpbGF0aW9uU3VjY2VzcykKLSAgICAgICAgICAgIEZBSUwoKSA8
PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCAiIDw8IG1JbmZvTG9nOwotICAgIH0KLQotICAg
IGJvb2wgZm91bmRFcnJvckluSW50ZXJtZWRpYXRlVHJlZSgpIGNvbnN0Ci0gICAgewotICAgICAg
ICByZXR1cm4gZm91bmRJbkludGVybWVkaWF0ZVRyZWUoIkVSUk9SOiIpOwotICAgIH0KLQotICAg
IGJvb2wgZm91bmRJbkludGVybWVkaWF0ZVRyZWUoY29uc3QgY2hhciogc3RyaW5nVG9GaW5kKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1JbmZvTG9nLmZpbmQoc3RyaW5nVG9GaW5kKSAh
PSBzdGQ6OnN0cmluZzo6bnBvczsKLSAgICB9Ci0KLSAgcHJpdmF0ZToKLSAgICAvLyBSZW1vdmUg
c3ltYm9sIGlkcyBmcm9tIGluZm8gbG9nIC0gdGhlIHRlc3RzIGRvbid0IGNhcmUgYWJvdXQgdGhl
bS4KLSAgICBzdGF0aWMgc3RkOjpzdHJpbmcgUmVtb3ZlU3ltYm9sSWRzRnJvbUluZm9Mb2coY29u
c3QgY2hhciAqaW5mb0xvZykKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGZpbHRlcmVkTG9n
KGluZm9Mb2cpOwotICAgICAgICBzaXplX3QgaWRQcmVmaXhQb3MgPSAwdTsKLSAgICAgICAgZG8K
LSAgICAgICAgewotICAgICAgICAgICAgaWRQcmVmaXhQb3MgPSBmaWx0ZXJlZExvZy5maW5kKCIg
KHN5bWJvbCBpZCIpOwotICAgICAgICAgICAgaWYgKGlkUHJlZml4UG9zICE9IHN0ZDo6c3RyaW5n
OjpucG9zKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHNpemVfdCBpZFN1ZmZpeFBv
cyA9IGZpbHRlcmVkTG9nLmZpbmQoIikiLCBpZFByZWZpeFBvcyk7Ci0gICAgICAgICAgICAgICAg
ZmlsdGVyZWRMb2cuZXJhc2UoaWRQcmVmaXhQb3MsIGlkU3VmZml4UG9zIC0gaWRQcmVmaXhQb3Mg
KyAxdSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gd2hpbGUgKGlkUHJlZml4UG9zICE9IHN0
ZDo6c3RyaW5nOjpucG9zKTsKLSAgICAgICAgcmV0dXJuIGZpbHRlcmVkTG9nOwotICAgIH0KLQot
ICAgIFRyYW5zbGF0b3JFU1NMICptVHJhbnNsYXRvcjsKLSAgICBzdGQ6OnN0cmluZyBtSW5mb0xv
ZzsKLX07Ci0KLVRFU1RfRihUeXBlVHJhY2tpbmdUZXN0LCBGdW5jdGlvblByb3RvdHlwZU1hbmds
aW5nKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJmbG9hdCBmdW4oZmxvYXQgYSk7
XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IGY7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCi0gICAgICAgICIgICBmbG9hdCBmZiA9IGZ1bihmKTtcbiIKLSAgICAgICAgIiAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQoZmYpO1xuIgotICAgICAgICAifVxuIgotICAgICAgICAiZmxvYXQgZnVu
KGZsb2F0IGEpIHtcbiIKLSAgICAgICAgIiAgIHJldHVybiBhICogMi4wO1xuIgotICAgICAgICAi
fVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5k
RXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVy
bWVkaWF0ZVRyZWUoIkZ1bmN0aW9uIFByb3RvdHlwZTogZnVuKGYxOyIpKTsKLSAgICBBU1NFUlRf
VFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgiRnVuY3Rpb24gRGVmaW5pdGlvbjogZnVuKGYx
OyIpKTsKLX0KLQotVEVTVF9GKFR5cGVUcmFja2luZ1Rlc3QsIEJ1aWx0SW5GdW5jdGlvblJlc3Vs
dFByZWNpc2lvbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBmbG9h
dCBmO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZmxvYXQgZmYg
PSBzaW4oZik7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGZmKTtcbiIKLSAg
ICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9GQUxT
RShmb3VuZEVycm9ySW5JbnRlcm1lZGlhdGVUcmVlKCkpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5k
SW5JbnRlcm1lZGlhdGVUcmVlKCJzaW5lIChtZWRpdW1wIGZsb2F0KSIpKTsKLX0KLQotVEVTVF9G
KFR5cGVUcmFja2luZ1Rlc3QsIEJpbmFyeU1hdGhSZXN1bHRQcmVjaXNpb24pCi17Ci0gICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgZjtcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGZsb2F0IGZmID0gZiAqIDAuNTtcbiIKLSAgICAgICAg
IiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoZmYpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21w
aWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVk
aWF0ZVRyZWUoKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoIm11
bHRpcGx5IChtZWRpdW1wIGZsb2F0KSIpKTsKLX0KLQotVEVTVF9GKFR5cGVUcmFja2luZ1Rlc3Qs
IEJ1aWx0SW5WZWNGdW5jdGlvblJlc3VsdFR5cGVBbmRQcmVjaXNpb24pCi17Ci0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjMiBhO1xuIgotICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgotICAgICAgICAiICAgZmxvYXQgYiA9IGxlbmd0aChhKTtcbiIKLSAgICAgICAgIiAg
IGZsb2F0IGMgPSBkb3QoYSwgdmVjMigwLjUpKTtcbiIKLSAgICAgICAgIiAgIGZsb2F0IGQgPSBk
aXN0YW5jZSh2ZWMyKDAuNSksIGEpO1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVj
NChiLCBjLCBkLCAxLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0
cmluZyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7
Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoImxlbmd0aCAobWVkaXVt
cCBmbG9hdCkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoImRv
dC1wcm9kdWN0IChtZWRpdW1wIGZsb2F0KSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50
ZXJtZWRpYXRlVHJlZSgiZGlzdGFuY2UgKG1lZGl1bXAgZmxvYXQpIikpOwotfQotCi1URVNUX0Yo
VHlwZVRyYWNraW5nVGVzdCwgQnVpbHRJbk1hdEZ1bmN0aW9uUmVzdWx0VHlwZUFuZFByZWNpc2lv
bikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2
ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0g
ICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDQg
bTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIG1hdDN4MiB0bXAz
MiA9IG1hdDN4MihtKTtcbiIKLSAgICAgICAgIiAgIG1hdDJ4MyB0bXAyMyA9IG1hdDJ4MyhtKTtc
biIKLSAgICAgICAgIiAgIG1hdDR4MiB0bXA0MiA9IG1hdDR4MihtKTtcbiIKLSAgICAgICAgIiAg
IG1hdDJ4NCB0bXAyNCA9IG1hdDJ4NChtKTtcbiIKLSAgICAgICAgIiAgIG1hdDR4MyB0bXA0MyA9
IG1hdDR4MyhtKTtcbiIKLSAgICAgICAgIiAgIG1hdDN4NCB0bXAzNCA9IG1hdDN4NChtKTtcbiIK
LSAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQodG1wMzJbMl1bMV0gKiB0bXAyM1sxXVsy
XSwgdG1wNDJbM11bMV0gKiB0bXAyNFsxXVszXSwgdG1wNDNbM11bMl0gKiB0bXAzNFsyXVszXSwg
MS4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAg
IEFTU0VSVF9GQUxTRShmb3VuZEVycm9ySW5JbnRlcm1lZGlhdGVUcmVlKCkpOwotICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJDb25zdHJ1Y3QgbWF0MngzIChtZWRpdW1w
IDJYMyBtYXRyaXggb2YgZmxvYXQpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1l
ZGlhdGVUcmVlKCJDb25zdHJ1Y3QgbWF0M3gyIChtZWRpdW1wIDNYMiBtYXRyaXggb2YgZmxvYXQp
IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJDb25zdHJ1Y3Qg
bWF0Mng0IChtZWRpdW1wIDJYNCBtYXRyaXggb2YgZmxvYXQpIikpOwotICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJDb25zdHJ1Y3QgbWF0NHgyIChtZWRpdW1wIDRYMiBt
YXRyaXggb2YgZmxvYXQpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVU
cmVlKCJDb25zdHJ1Y3QgbWF0M3g0IChtZWRpdW1wIDNYNCBtYXRyaXggb2YgZmxvYXQpIikpOwot
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJDb25zdHJ1Y3QgbWF0NHgz
IChtZWRpdW1wIDRYMyBtYXRyaXggb2YgZmxvYXQpIikpOwotfQotCi1URVNUX0YoVHlwZVRyYWNr
aW5nVGVzdCwgQnVpbHRJbkZ1bmN0aW9uQ2hvb3Nlc0hpZ2hlclByZWNpc2lvbikKLXsKLSAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBsb3dw
IGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBtZWRpdW1wIHZlYzIgYTtcbiIKLSAgICAgICAg
InVuaWZvcm0gbG93cCB2ZWMyIGI7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAg
ICAgICIgICBmbG9hdCBjID0gZG90KGEsIGIpO1xuIgotICAgICAgICAiICAgZmxvYXQgZCA9IGRp
c3RhbmNlKGIsIGEpO1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjLCBkLCAw
LjAsIDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsK
LSAgICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50ZXJtZWRpYXRlVHJlZSgpKTsKLSAgICBB
U1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgiZG90LXByb2R1Y3QgKG1lZGl1bXAg
ZmxvYXQpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJkaXN0
YW5jZSAobWVkaXVtcCBmbG9hdCkiKSk7Ci19Ci0KLVRFU1RfRihUeXBlVHJhY2tpbmdUZXN0LCBC
dWlsdEluQm9vbEZ1bmN0aW9uUmVzdWx0VHlwZSkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nID0KLSAgICAgICAgInVuaWZvcm0gYnZlYzQgYmVlcztcbiIKLSAgICAgICAg
InZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGJvb2wgYiA9IGFueShiZWVzKTtcbiIKLSAg
ICAgICAgIiAgIGJvb2wgYyA9IGFsbChiZWVzKTtcbiIKLSAgICAgICAgIiAgIGJ2ZWM0IGQgPSBu
b3QoYmVlcyk7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGIgPyAxLjAgOiAw
LjAsIGMgPyAxLjAgOiAwLjAsIGQueCA/IDEuMCA6IDAuMCwgMS4wKTtcbiIKLSAgICAgICAgIn1c
biI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9GQUxTRShmb3VuZEVy
cm9ySW5JbnRlcm1lZGlhdGVUcmVlKCkpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1l
ZGlhdGVUcmVlKCJhbnkgKGJvb2wpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1l
ZGlhdGVUcmVlKCJhbGwgKGJvb2wpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1l
ZGlhdGVUcmVlKCJOZWdhdGUgY29uZGl0aW9uYWwgKDQtY29tcG9uZW50IHZlY3RvciBvZiBib29s
KSIpKTsKLX0KLQotVEVTVF9GKFR5cGVUcmFja2luZ1Rlc3QsIEJ1aWx0SW5WZWNUb0Jvb2xGdW5j
dGlvblJlc3VsdFR5cGUpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9
Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0g
dmVjMiBhcHBsZXM7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzIgb3JhbmdlcztcbiIKLSAgICAg
ICAgInVuaWZvcm0gaXZlYzIgZm9vO1xuIgotICAgICAgICAidW5pZm9ybSBpdmVjMiBiYXI7XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBidmVjMiBhID0gbGVzc1Ro
YW4oYXBwbGVzLCBvcmFuZ2VzKTtcbiIKLSAgICAgICAgIiAgIGJ2ZWMyIGIgPSBncmVhdGVyVGhh
bihmb28sIGJhcik7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGFueShhKSA/
IDEuMCA6IDAuMCwgYW55KGIpID8gMS4wIDogMC4wLCAwLjAsIDEuMCk7XG4iCi0gICAgICAgICJ9
XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfRkFMU0UoZm91bmRF
cnJvckluSW50ZXJtZWRpYXRlVHJlZSgpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJt
ZWRpYXRlVHJlZSgiTGVzcyBUaGFuICgyLWNvbXBvbmVudCB2ZWN0b3Igb2YgYm9vbCkiKSk7Ci0g
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoIkdyZWF0ZXIgVGhhbiAoMi1j
b21wb25lbnQgdmVjdG9yIG9mIGJvb2wpIikpOwotfQotCi1URVNUX0YoVHlwZVRyYWNraW5nVGVz
dCwgVGV4dHVyZTJEUmVzdWx0VHlwZUFuZFByZWNpc2lvbikKLXsKLSAgICAvLyBFU1NMIHNwZWMg
c2VjdGlvbiA0LjUuMzogc2FtcGxlcjJEIGFuZCBzYW1wbGVyQ3ViZSBhcmUgbG93cCBieSBkZWZh
dWx0Ci0gICAgLy8gRVNTTCBzcGVjIHNlY3Rpb24gODogRm9yIHRoZSB0ZXh0dXJlIGZ1bmN0aW9u
cywgdGhlIHByZWNpc2lvbiBvZiB0aGUgcmV0dXJuIHR5cGUgbWF0Y2hlcyB0aGUgcHJlY2lzaW9u
IG9mIHRoZSBzYW1wbGVyIHR5cGUuCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZv
cm0gc2FtcGxlcjJEIHM7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzIgYTtcbiIKLSAgICAgICAg
InZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIHZlYzQgYyA9IHRleHR1cmUyRChzLCBhKTtc
biIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IGM7XG4iCi0gICAgICAgICJ9XG4iOwotICAg
IGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50
ZXJtZWRpYXRlVHJlZSgpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJl
ZSgidGV4dHVyZTJEKHMyMTt2ZjI7IChsb3dwIDQtY29tcG9uZW50IHZlY3RvciBvZiBmbG9hdCki
KSk7Ci19Ci0KLVRFU1RfRihUeXBlVHJhY2tpbmdUZXN0LCBUZXh0dXJlQ3ViZVJlc3VsdFR5cGVB
bmRQcmVjaXNpb24pCi17Ci0gICAgLy8gRVNTTCBzcGVjIHNlY3Rpb24gNC41LjM6IHNhbXBsZXIy
RCBhbmQgc2FtcGxlckN1YmUgYXJlIGxvd3AgYnkgZGVmYXVsdAotICAgIC8vIEVTU0wgc3BlYyBz
ZWN0aW9uIDg6IEZvciB0aGUgdGV4dHVyZSBmdW5jdGlvbnMsIHRoZSBwcmVjaXNpb24gb2YgdGhl
IHJldHVybiB0eXBlIG1hdGNoZXMgdGhlIHByZWNpc2lvbiBvZiB0aGUgc2FtcGxlciB0eXBlLgot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXJDdWJlIHNjO1xuIgot
ICAgICAgICAidW5pZm9ybSB2ZWMzIGE7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0g
ICAgICAgICIgICB2ZWM0IGMgPSB0ZXh0dXJlQ3ViZShzYywgYSk7XG4iCi0gICAgICAgICIgICBn
bF9GcmFnQ29sb3IgPSBjO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0
cmluZyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7
Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoInRleHR1cmVDdWJlKHND
MTt2ZjM7IChsb3dwIDQtY29tcG9uZW50IHZlY3RvciBvZiBmbG9hdCkiKSk7Ci19Ci0KLVRFU1Rf
RihUeXBlVHJhY2tpbmdUZXN0LCBUZXh0dXJlU2l6ZVJlc3VsdFR5cGVBbmRQcmVjaXNpb24pCi17
Ci0gICAgLy8gRVNTTCAzLjAgc3BlYyBzZWN0aW9uIDg6IHRleHR1cmVTaXplIGhhcyBwcmVkZWZp
bmVkIHByZWNpc2lvbiBoaWdocAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcg
PQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAg
InVuaWZvcm0gc2FtcGxlcjJEIHM7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAg
ICAgICIgICBpdmVjMiBzaXplID0gdGV4dHVyZVNpemUocywgMCk7XG4iCi0gICAgICAgICIgICBp
ZiAoc2l6ZS54ID4gMTAwKSB7XG4iCi0gICAgICAgICIgICAgICAgbXlfRnJhZ0NvbG9yID0gdmVj
NCgwLjAsIDEuMCwgMC4wLCAxLjApO1xuIgotICAgICAgICAiICAgfSBlbHNlIHtcbiIKLSAgICAg
ICAgIiAgICAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7XG4iCi0g
ICAgICAgICIgICB9XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5n
KTsKLSAgICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50ZXJtZWRpYXRlVHJlZSgpKTsKLSAg
ICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgidGV4dHVyZVNpemUoczIxO2kx
OyAoaGlnaHAgMi1jb21wb25lbnQgdmVjdG9yIG9mIGludCkiKSk7Ci19Ci0KLVRFU1RfRihUeXBl
VHJhY2tpbmdUZXN0LCBCdWlsdEluQ29uc3RydWN0b3JSZXN1bHRUeXBlQW5kUHJlY2lzaW9uKQot
ewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IHUxO1xuIgotICAg
ICAgICAidW5pZm9ybSBmbG9hdCB1MjtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgdTM7XG4i
Ci0gICAgICAgICJ1bmlmb3JtIGZsb2F0IHU0O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xu
IgotICAgICAgICAiICAgdmVjNCBhID0gdmVjNCh1MSwgdTIsIHUzLCB1NCk7XG4iCi0gICAgICAg
ICIgICBnbF9GcmFnQ29sb3IgPSBhO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNo
YWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRy
ZWUoKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoIkNvbnN0cnVj
dCB2ZWM0IChtZWRpdW1wIDQtY29tcG9uZW50IHZlY3RvciBvZiBmbG9hdCkiKSk7Ci19Ci0KLVRF
U1RfRihUeXBlVHJhY2tpbmdUZXN0LCBTdHJ1Y3RDb25zdHJ1Y3RvclJlc3VsdE5vUHJlY2lzaW9u
KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgdTE7XG4iCi0g
ICAgICAgICJ1bmlmb3JtIHZlYzQgdTI7XG4iCi0gICAgICAgICJzdHJ1Y3QgUyB7IGhpZ2hwIHZl
YzQgYTsgaGlnaHAgdmVjNCBiOyB9O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAg
ICAgICAiICAgUyBzID0gUyh1MSwgdTIpO1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0g
cy5hO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAg
QVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7Ci0gICAgQVNTRVJU
X1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoIkNvbnN0cnVjdCBzdHJ1Y3R1cmUgKHN0cnVj
dHVyZSkiKSk7Ci19Ci0KLVRFU1RfRihUeXBlVHJhY2tpbmdUZXN0LCBQYWNrUmVzdWx0VHlwZUFu
ZFByZWNpc2lvbikKLXsKLSAgICAvLyBFU1NMIDMuMCBzcGVjIHNlY3Rpb24gOC40OiBwYWNrIGZ1
bmN0aW9ucyBoYXZlIHByZWRlZmluZWQgcHJlY2lzaW9uIGhpZ2hwCi0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAg
ICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgaW50O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWMyIHV2O1xuIgotICAgICAgICAib3V0IHZl
YzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAi
ICAgdWludCB1MCA9IHBhY2tTbm9ybTJ4MTYodXYpO1xuIgotICAgICAgICAiICAgdWludCB1MSA9
IHBhY2tVbm9ybTJ4MTYodXYpO1xuIgotICAgICAgICAiICAgdWludCB1MiA9IHBhY2tIYWxmMngx
Nih1dik7XG4iCi0gICAgICAgICIgICBpZiAodTAgKyB1MSArIHUyID4gMTAwdSkge1xuIgotICAg
ICAgICAiICAgICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTtcbiIK
LSAgICAgICAgIiAgIH0gZWxzZSB7XG4iCi0gICAgICAgICIgICAgICAgbXlfRnJhZ0NvbG9yID0g
dmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApO1xuIgotICAgICAgICAiICAgfVxuIgotICAgICAgICAi
fVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5k
RXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVy
bWVkaWF0ZVRyZWUoInBhY2sgU25vcm0gMngxNiAoaGlnaHAgdWludCkiKSk7Ci0gICAgQVNTRVJU
X1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoInBhY2sgVW5vcm0gMngxNiAoaGlnaHAgdWlu
dCkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoInBhY2sgaGFs
ZiAyeDE2IChoaWdocCB1aW50KSIpKTsKLX0KLQotVEVTVF9GKFR5cGVUcmFja2luZ1Rlc3QsIFVu
cGFja05vcm1SZXN1bHRUeXBlQW5kUHJlY2lzaW9uKQotewotICAgIC8vIEVTU0wgMy4wIHNwZWMg
c2VjdGlvbiA4LjQ6IHVucGFjayhTL1Upbm9ybTJ4MTYgaGFzIHByZWRlZmluZWQgcHJlY2lzaW9u
IGhpZ2hwCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIj
dmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgot
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuIgotICAgICAgICAidW5pZm9ybSB1aW50
IHV1O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgotICAgICAgICAiICAgdmVjMiB2MCA9IHVucGFja1Nub3JtMngxNih1dSk7
XG4iCi0gICAgICAgICIgICB2ZWMyIHYxID0gdW5wYWNrVW5vcm0yeDE2KHV1KTtcbiIKLSAgICAg
ICAgIiAgIGlmICh2MC54ICogdjEueCA+IDEuMCkge1xuIgotICAgICAgICAiICAgICAgIG15X0Zy
YWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTtcbiIKLSAgICAgICAgIiAgIH0gZWxz
ZSB7XG4iCi0gICAgICAgICIgICAgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4w
LCAxLjApO1xuIgotICAgICAgICAiICAgfVxuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxl
KHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0
ZVRyZWUoKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoInVucGFj
ayBTbm9ybSAyeDE2IChoaWdocCAyLWNvbXBvbmVudCB2ZWN0b3Igb2YgZmxvYXQpIikpOwotICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJ1bnBhY2sgVW5vcm0gMngxNiAo
aGlnaHAgMi1jb21wb25lbnQgdmVjdG9yIG9mIGZsb2F0KSIpKTsKLX0KLQotVEVTVF9GKFR5cGVU
cmFja2luZ1Rlc3QsIFVucGFja0hhbGZSZXN1bHRUeXBlQW5kUHJlY2lzaW9uKQotewotICAgIC8v
IEVTU0wgMy4wIHNwZWMgc2VjdGlvbiA4LjQ6IHVucGFja0hhbGYyeDE2IGhhcyBwcmVkZWZpbmVk
IHByZWNpc2lvbiBtZWRpdW1wCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9
Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBoaWdocCBm
bG9hdDtcbiIKLSAgICAgICAgInByZWNpc2lvbiBoaWdocCBpbnQ7XG4iCi0gICAgICAgICJ1bmlm
b3JtIHVpbnQgdXU7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICB2ZWMyIHYgPSB1bnBhY2tIYWxmMngx
Nih1dSk7XG4iCi0gICAgICAgICIgICBpZiAodi54ID4gMS4wKSB7XG4iCi0gICAgICAgICIgICAg
ICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApO1xuIgotICAgICAgICAi
ICAgfSBlbHNlIHtcbiIKLSAgICAgICAgIiAgICAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwg
MC4wLCAwLjAsIDEuMCk7XG4iCi0gICAgICAgICIgICB9XG4iCi0gICAgICAgICJ9XG4iOwotICAg
IGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50
ZXJtZWRpYXRlVHJlZSgpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJl
ZSgidW5wYWNrIGhhbGYgMngxNiAobWVkaXVtcCAyLWNvbXBvbmVudCB2ZWN0b3Igb2YgZmxvYXQp
IikpOwotfQotCi1URVNUX0YoVHlwZVRyYWNraW5nVGVzdCwgQnVpbHRJbkFic1NpZ25GdW5jdGlv
bkZsb2F0UmVzdWx0VHlwZUFuZFByZWNpc2lvbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAg
ICAgICAidW5pZm9ybSBmbG9hdCBmdmFsMTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
LSAgICAgICAgIiAgIGZsb2F0IGZ2YWwyID0gYWJzKGZ2YWwxKTtcbiIKLSAgICAgICAgIiAgIGZs
b2F0IGZ2YWwzID0gc2lnbihmdmFsMSk7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KGZ2YWwxLCAwLjAsIDAuMCwgMS4wKTsgXG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBp
bGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50ZXJtZWRp
YXRlVHJlZSgpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgiQWJz
b2x1dGUgdmFsdWUgKG1lZGl1bXAgZmxvYXQpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5J
bnRlcm1lZGlhdGVUcmVlKCJTaWduIChtZWRpdW1wIGZsb2F0KSIpKTsKLX0KLQotVEVTVF9GKFR5
cGVUcmFja2luZ1Rlc3QsIEJ1aWx0SW5BYnNTaWduRnVuY3Rpb25JbnRSZXN1bHRUeXBlQW5kUHJl
Y2lzaW9uKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAg
ICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc
biIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGludDtcbiIKLSAgICAgICAgInVuaWZvcm0g
aW50IGl2YWwxO1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAg
ICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgaW50IGl2YWwyID0gYWJzKGl2YWwxKTtc
biIKLSAgICAgICAgIiAgIGludCBpdmFsMyA9IHNpZ24oaXZhbDEpO1xuIgotICAgICAgICAiICAg
bXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOyBcbiIKLSAgICAgICAgIn1c
biI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9GQUxTRShmb3VuZEVy
cm9ySW5JbnRlcm1lZGlhdGVUcmVlKCkpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1l
ZGlhdGVUcmVlKCJBYnNvbHV0ZSB2YWx1ZSAobWVkaXVtcCBpbnQpIikpOwotICAgIEFTU0VSVF9U
UlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJTaWduIChtZWRpdW1wIGludCkiKSk7Ci19Ci0K
LVRFU1RfRihUeXBlVHJhY2tpbmdUZXN0LCBCdWlsdEluRmxvYXRCaXRzVG9JbnRSZXN1bHRUeXBl
QW5kUHJlY2lzaW9uKQotewotICAgIC8vIEVTU0wgMy4wMCBzZWN0aW9uIDguMzogZmxvYXRCaXRz
VG8oVSlpbnQgcmV0dXJucyBhIGhpZ2hwIHZhbHVlLgotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGludDtc
biIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgZjtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0Zy
YWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGludCBp
ID0gZmxvYXRCaXRzVG9JbnQoZik7XG4iCi0gICAgICAgICIgICB1aW50IHUgPSBmbG9hdEJpdHNU
b1VpbnQoZik7XG4iCi0gICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAw
LjAsIDEuMCk7IFxuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7
Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoImZsb2F0IGJpdHMgdG8gaW50ICho
aWdocCBpbnQpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJm
bG9hdCBiaXRzIHRvIHVpbnQgKGhpZ2hwIHVpbnQpIikpOwotfQotCi1URVNUX0YoVHlwZVRyYWNr
aW5nVGVzdCwgQnVpbHRJbkludEJpdHNUb0Zsb2F0UmVzdWx0VHlwZUFuZFByZWNpc2lvbikKLXsK
LSAgICAvLyBFU1NMIDMuMDAgc2VjdGlvbiA4LjM6ICh1KWludEJpdHNUb0Zsb2F0IHJldHVybnMg
YSBoaWdocCB2YWx1ZS4KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG4iCi0gICAgICAgICJ1bmlm
b3JtIGludCBpO1xuIgotICAgICAgICAidW5pZm9ybSB1aW50IHU7XG4iCi0gICAgICAgICJvdXQg
dmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAg
ICIgICBmbG9hdCBmMSA9IGludEJpdHNUb0Zsb2F0KGkpO1xuIgotICAgICAgICAiICAgZmxvYXQg
ZjIgPSB1aW50Qml0c1RvRmxvYXQodSk7XG4iCi0gICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2
ZWM0KGYxLCBmMiwgMC4wLCAxLjApOyBcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShz
aGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9GQUxTRShmb3VuZEVycm9ySW5JbnRlcm1lZGlhdGVU
cmVlKCkpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJpbnQgYml0
cyB0byBmbG9hdCAoaGlnaHAgZmxvYXQpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRl
cm1lZGlhdGVUcmVlKCJ1aW50IGJpdHMgdG8gZmxvYXQgKGhpZ2hwIGZsb2F0KSIpKTsKLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0
cy9VbnJvbGxGbGF0dGVuX3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2NvbXBpbGVyX3Rlc3RzL1Vucm9sbEZsYXR0ZW5fdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDM4MTljM2JlYTQwNzBkZWYwYTIwMmUwZmRiYzBmN2I5MzdmODVhZmMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1Vucm9sbEZsYXR0ZW5fdGVz
dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDcgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAo
YykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBV
bnJvbGxGbGF0dGVuX3Rlc3QuY3BwOgotLy8gICBUZXN0IGZvciB0aGUgb3V0cHV0dGluZyBvZiBb
W3Vucm9sbF1dIGFuZCBbW2ZsYXR0ZW5dXSBmb3IgdGhlIEQzRCBjb21waWxlci4KLS8vICAgVGhp
cyB0ZXN0IGNhbiBvbmx5IGJlIGVuYWJsZWQgd2hlbiBITFNMIHN1cHBvcnQgaXMgZW5hYmxlZC4K
LS8vCi0KLSNpbmNsdWRlICJhbmdsZV9nbC5oIgotI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxz
LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxh
bmcuaCIKLSNpbmNsdWRlICJ0ZXN0cy90ZXN0X3V0aWxzL2NvbXBpbGVyX3Rlc3QuaCIKLQotbmFt
ZXNwYWNlCi17Ci0KLWNsYXNzIFVucm9sbEZsYXR0ZW5UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRl
c3QKLXsKLSAgcHVibGljOgotICAgIFVucm9sbEZsYXR0ZW5UZXN0KCkge30KLQotICBwcm90ZWN0
ZWQ6Ci0gICAgdm9pZCBjb21waWxlKGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcpCi0g
ICAgewotICAgICAgICBzdGQ6OnN0cmluZyBpbmZvTG9nOwotICAgICAgICBib29sIGNvbXBpbGF0
aW9uU3VjY2VzcyA9Ci0gICAgICAgICAgICBjb21waWxlVGVzdFNoYWRlcihHTF9GUkFHTUVOVF9T
SEFERVIsIFNIX0dMRVMyX1NQRUMsIFNIX0hMU0xfNF8xX09VVFBVVCwgc2hhZGVyU3RyaW5nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hfVkFSSUFCTEVTLCAmbVRyYW5zbGF0ZWRT
b3VyY2UsICZpbmZvTG9nKTsKLSAgICAgICAgaWYgKCFjb21waWxhdGlvblN1Y2Nlc3MpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCAi
IDw8IGluZm9Mb2c7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gSWdub3JlIHRoZSBiZWdpbm5pbmcg
b2YgdGhlIHNoYWRlciB0byBhdm9pZCB0aGUgZGVmaW5pdGlvbnMgb2YgTE9PUCBhbmQgRkxBVFRF
TgotICAgICAgICBtQ3VycmVudFBvc2l0aW9uID0gc3RhdGljX2Nhc3Q8aW50PihtVHJhbnNsYXRl
ZFNvdXJjZS5maW5kKCJHTF9VU0VTX0ZSQUdfQ09MT1IiKSk7Ci0gICAgfQotCi0gICAgdm9pZCBl
eHBlY3QoY29uc3QgY2hhciAqcGF0dGVybnNbXSwgc2l6ZV90IGNvdW50KQotICAgIHsKLSAgICAg
ICAgY29uc3QgY2hhciAqYmFkUGF0dGVybnNbXSA9IHsgVU5ST0xMLCBGTEFUVEVOIH07Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKLSAgICAgICAgewotICAgICAg
ICAgICAgY29uc3QgY2hhciAqcGF0dGVybiA9IHBhdHRlcm5zW2ldOwotICAgICAgICAgICAgYXV0
byBwb3NpdGlvbiA9IG1UcmFuc2xhdGVkU291cmNlLmZpbmQocGF0dGVybiwgbUN1cnJlbnRQb3Np
dGlvbik7Ci0gICAgICAgICAgICBpZiAocG9zaXRpb24gPT0gc3RkOjpzdHJpbmc6Om5wb3MpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRkFJTCgpIDw8ICJDb3VsZG4ndCBmaW5kICci
IDw8IHBhdHRlcm4gPDwgIicgYWZ0ZXIgZXhwZWN0YXRpb25zICciCi0gICAgICAgICAgICAgICAg
ICAgICAgIDw8IG1FeHBlY3RhdGlvbkxpc3QgPDwgIicgaW4gdHJhbnNsYXRlZCBzb3VyY2U6XG4i
IDw8IG1UcmFuc2xhdGVkU291cmNlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBmb3Ig
KHNpemVfdCBqID0gMDsgaiA8IEFycmF5U2l6ZShiYWRQYXR0ZXJucyk7IGorKykKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpiYWRQYXR0ZXJuID0gYmFkUGF0dGVy
bnNbal07Ci0gICAgICAgICAgICAgICAgaWYgKHBhdHRlcm4gIT0gYmFkUGF0dGVybiAmJgotICAg
ICAgICAgICAgICAgICAgICBtVHJhbnNsYXRlZFNvdXJjZS5maW5kKGJhZFBhdHRlcm4sIG1DdXJy
ZW50UG9zaXRpb24pIDwgcG9zaXRpb24pCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICBGQUlMKCkgPDwgIkZvdW5kICciIDw8IGJhZFBhdHRlcm4gPDwgIicgYmVmb3JlICci
IDw8IHBhdHRlcm4gPDwgIicgYWZ0ZXIgZXhwZWN0YXRpb25zICciCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCBtRXhwZWN0YXRpb25MaXN0IDw8ICInIGluIHRyYW5zbGF0ZWQgc291cmNl
OlxuIiA8PCBtVHJhbnNsYXRlZFNvdXJjZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBtRXhwZWN0YXRpb25MaXN0ICs9ICIgLSAiICsgc3RkOjpzdHJpbmco
cGF0dGVybik7Ci0gICAgICAgICAgICBtQ3VycmVudFBvc2l0aW9uID0gc3RhdGljX2Nhc3Q8aW50
Pihwb3NpdGlvbikgKyAxOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGNo
YXIgKlVOUk9MTDsKLSAgICBzdGF0aWMgY29uc3QgY2hhciAqRkxBVFRFTjsKLQotICBwcml2YXRl
OgotICAgIHN0ZDo6c3RyaW5nIG1UcmFuc2xhdGVkU291cmNlOwotCi0gICAgaW50IG1DdXJyZW50
UG9zaXRpb247Ci0gICAgc3RkOjpzdHJpbmcgbUV4cGVjdGF0aW9uTGlzdDsKLX07Ci0KLWNvbnN0
IGNoYXIgKlVucm9sbEZsYXR0ZW5UZXN0OjpVTlJPTEwgPSAiTE9PUCI7Ci1jb25zdCBjaGFyICpV
bnJvbGxGbGF0dGVuVGVzdDo6RkxBVFRFTiA9ICJGTEFUVEVOIjsKLQotLy8gQ2hlY2sgdGhhdCB0
aGUgbm90aGluZyBpcyBhZGRlZCBpZiB0aGVyZSBpcyBubyBncmFkaWVudCBvcGVyYXRpb24KLS8v
IGV2ZW4gd2hlbiB0aGVyZSBpcyBpZnMgYW5kIGRpc2NvbnRpbnVvdXMgbG9vcHMKLVRFU1RfRihV
bnJvbGxGbGF0dGVuVGVzdCwgTm9HcmFkaWVudCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAg
ICAgICAidW5pZm9ybSBmbG9hdCBmO1xuIgotICAgICAgICAiZmxvYXQgZnVuKGZsb2F0IGEpe1xu
IiAvLyAxCi0gICAgICAgICIgICAgaWYgKGEgPiAxLjApIHtyZXR1cm4gZjt9XG4iIC8vIDIKLSAg
ICAgICAgIiAgICBlbHNlIHtyZXR1cm4gYSArIDEuMDt9XG4iCi0gICAgICAgICJ9XG4iCi0gICAg
ICAgICJmbG9hdCBmdW4yKGZsb2F0IGEpe1xuIiAvLyAzCi0gICAgICAgICIgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCAxMDsgaSsrKSB7XG4iIC8vIDQKLSAgICAgICAgIiAgICAgICAgaWYgKGEgPiAx
LjApIHticmVhazt9XG4iIC8vIDUKLSAgICAgICAgIiAgICAgICAgYSA9IGZ1bihhKTtcbiIgLy8g
NgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgIiAgICByZXR1cm4gYTtcbiIKLSAgICAgICAg
In1cbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgICBmbG9hdCBhY2N1
bSA9IDAuMDtcbiIKLSAgICAgICAgIiAgICBpZiAoZiA8IDUuMCkge2FjY3VtID0gZnVuMihhY2N1
bSk7fVxuIiAvLyA3Ci0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChhY2N1bSk7XG4i
Ci0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICAvLyAxIC0g
c2hvdWxkbid0IGdldCBhIExvZDAgdmVyc2lvbiBnZW5lcmF0ZWQKLSAgICAvLyAyIC0gbm8gRkxB
VFRFTiBiZWNhdXNlIGRvZXMgbm90IGNvbnRhaW4gZGlzY29udCBsb29wCi0gICAgLy8gMyAtIHNo
b3VsZG4ndCBnZXQgYSBMb2QwIHZlcnNpb24gZ2VuZXJhdGVkCi0gICAgLy8gNCAtIG5vIExPT1Ag
YmVjYXVzZSBkaXNjb250LCBhbmQgYWxzbyBubyBncmFkaWVudAotICAgIC8vIDUgLSBubyBGTEFU
VEVOIGJlY2F1c2UgZG9lcyBub3QgY29udGFpbiBsb29wIHdpdGggYSBncmFkaWVudAotICAgIC8v
IDYgLSBjYWxsIG5vbi1Mb2QwIHZlcnNpb24KLSAgICAvLyA3IC0gbm8gRkxBVFRFTgotICAgIGNv
bnN0IGNoYXIgKmV4cGVjdGF0aW9uc1tdID0KLSAgICB7Ci0gICAgICAgICJmdW4oIiwgImlmIiwK
LSAgICAgICAgImZ1bjIoIiwgImZvciIsICJpZiIsICJicmVhayIsICJmdW4oIiwKLSAgICAgICAg
Im1haW4oIiwgImlmIiwgImZ1bjIoIgotICAgIH07Ci0gICAgZXhwZWN0KGV4cGVjdGF0aW9ucywg
QXJyYXlTaXplKGV4cGVjdGF0aW9ucykpOwotfQotCi0vLyBDaGVjayB0aGF0IHdoZW4gd2UgaGF2
ZSBhIGdyYWRpZW50IGluIGEgbm9uLWRpc2NvbnRpbnVvdXMgbG9vcAotLy8gd2UgdXNlIHRoZSBy
ZWd1bGFyIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9ucy4gQWxzbyBjaGVja3MgdGhhdAotLy8gTE9P
UCBpcyBnZW5lcmF0ZWQgZm9yIHRoZSBsb29wIGNvbnRhaW5pbmcgdGhlIGdyYWRpZW50LgotVEVT
VF9GKFVucm9sbEZsYXR0ZW5UZXN0LCBHcmFkaWVudE5vdEluRGlzY29udCkKLXsKLSAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCBmO1xuIgotICAgICAgICAidW5pZm9y
bSBzYW1wbGVyMkQgdGV4OyIKLSAgICAgICAgImZsb2F0IGZ1bihmbG9hdCBhKXtcbiIgLy8gMQot
ICAgICAgICAiICAgIHJldHVybiB0ZXh0dXJlMkQodGV4LCB2ZWMyKDAuNSwgZikpLng7XG4iIC8v
IDIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgImZsb2F0IGZ1bjIoZmxvYXQgYSl7XG4iIC8vIDMK
LSAgICAgICAgIiAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspIHtcbiIgLy8gNAotICAg
ICAgICAiICAgICAgICBpZiAoYSA+IDEuMCkge31cbiIgLy8gNQotICAgICAgICAiICAgICAgICBh
ID0gZnVuKGEpO1xuIiAvLyA2Ci0gICAgICAgICIgICAgICAgIGEgKz0gdGV4dHVyZTJEKHRleCwg
dmVjMihhLCAwLjApKS54OyIgLy8gNwotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgIiAgICBy
ZXR1cm4gYTtcbiIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAg
ICAgICAgIiAgICBmbG9hdCBhY2N1bSA9IDAuMDtcbiIKLSAgICAgICAgIiAgICBpZiAoZiA8IDUu
MCkge2FjY3VtID0gZnVuMihhY2N1bSk7fVxuIiAvLyA4Ci0gICAgICAgICIgICAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNChhY2N1bSk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIC8vIDEgLSBzaG91bGRu
J3QgZ2V0IGEgTG9kMCB2ZXJzaW9uIGdlbmVyYXRlZAotICAgIC8vIDIgLSBubyBMb2QwIHZlcnNp
b24gZ2VuZXJhdGVkCi0gICAgLy8gMyAtIHNob3VsZG4ndCBnZXQgYSBMb2QwIHZlcnNpb24gZ2Vu
ZXJhdGVkIChub3QgaW4gZGlzY29udCBsb29wKQotICAgIC8vIDQgLSBzaG91bGQgaGF2ZSBMT09Q
IGJlY2F1c2UgaXQgY29udGFpbnMgYSBncmFkaWVudCBvcGVyYXRpb24gKGV2ZW4gaWYgTG9kMCkK
LSAgICAvLyA1IC0gbm8gRkxBVFRFTiBiZWNhdXNlIGRvZXNuJ3QgY29udGFpbiBsb29wIHdpdGgg
YSBncmFkaWVudAotICAgIC8vIDYgLSBjYWxsIG5vbi1Mb2QwIHZlcnNpb24KLSAgICAvLyA3IC0g
Y2FsbCBub24tTG9kMCB2ZXJzaW9uCi0gICAgLy8gOCAtIEZMQVRURU4gYmVjYXVzZSBpdCBjb250
YWlucyBhIGxvb3Agd2l0aCBhIGdyYWRpZW50Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwot
ICAgIGNvbnN0IGNoYXIgKmV4cGVjdGF0aW9uc1tdID0KLSAgICB7Ci0gICAgICAgICJmdW4oIiwg
InRleHR1cmUyRCgiLAotICAgICAgICAiZnVuMigiLCAiTE9PUCIsICJmb3IiLCAiaWYiLCAiZnVu
KCIsICJ0ZXh0dXJlMkQoIiwKLSAgICAgICAgIm1haW4oIiwgIkZMQVRURU4iLCAiaWYiLCAiZnVu
MigiCi0gICAgfTsKLSAgICBleHBlY3QoZXhwZWN0YXRpb25zLCBBcnJheVNpemUoZXhwZWN0YXRp
b25zKSk7Ci19Ci0KLS8vIENoZWNrIHRoYXQgd2hlbiB3ZSBoYXZlIGEgZ3JhZGllbnQgaW4gYSBk
aXNjb250aW51b3VzIGxvb3AKLS8vIHdlIHVzZSB0aGUgTG9kMCB2ZXJzaW9uIG9mIHRoZSBmdW5j
dGlvbnMuCi1URVNUX0YoVW5yb2xsRmxhdHRlblRlc3QsIEdyYWRpZW50SW5EaXNjb250KQotewot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IGY7XG4iCi0gICAgICAg
ICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7IgotICAgICAgICAiZmxvYXQgZnVuKGZsb2F0IGEpe1xu
IiAvLyAxCi0gICAgICAgICIgICAgcmV0dXJuIHRleHR1cmUyRCh0ZXgsIHZlYzIoMC41LCBmKSku
eDtcbiIgLy8gMgotICAgICAgICAifVxuIgotICAgICAgICAiZmxvYXQgZnVuMihmbG9hdCBhKXtc
biIgLy8gMwotICAgICAgICAiICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykge1xuIiAv
LyA0Ci0gICAgICAgICIgICAgICAgIGlmIChhID4gMS4wKSB7YnJlYWs7fVxuIiAvLyA1Ci0gICAg
ICAgICIgICAgICAgIGEgPSBmdW4oYSk7XG4iIC8vIDYKLSAgICAgICAgIiAgICAgICAgYSArPSB0
ZXh0dXJlMkQodGV4LCB2ZWMyKGEsIDAuMCkpLng7IiAvLyA3Ci0gICAgICAgICIgICAgfVxuIgot
ICAgICAgICAiICAgIHJldHVybiBhO1xuIgotICAgICAgICAifVxuIgotICAgICAgICAidm9pZCBt
YWluKCkge1xuIgotICAgICAgICAiICAgIGZsb2F0IGFjY3VtID0gMC4wO1xuIgotICAgICAgICAi
ICAgIGlmIChmIDwgNS4wKSB7YWNjdW0gPSBmdW4yKGFjY3VtKTt9XG4iIC8vIDgKLSAgICAgICAg
IiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGFjY3VtKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAg
Ly8gMSAtIHNob3VsZCBnZXQgYSBMb2QwIHZlcnNpb24gZ2VuZXJhdGVkIChncmFkaWVudCArIGRp
c2NvbnQgbG9vcCkKLSAgICAvLyAyIC0gd2lsbCBnZXQgdGhlIExvZDAgaWYgaW4gZnVuTG9kMAot
ICAgIC8vIDMgLSBzaG91bGRuJ3QgZ2V0IGEgTG9kMCB2ZXJzaW9uIGdlbmVyYXRlZCAobm90IGlu
IGRpc2NvbnQgbG9vcCkKLSAgICAvLyA0IC0gc2hvdWxkIGhhdmUgTE9PUCBiZWNhdXNlIGl0IGNv
bnRhaW5zIGEgZ3JhZGllbnQgb3BlcmF0aW9uIChldmVuIGlmIExvZDApCi0gICAgLy8gNSAtIG5v
IEZMQVRURU4gYmVjYXVzZSBkb2Vzbid0IGNvbnRhaW4gYSBsb29wIHdpdGggYSBncmFkaWVudAot
ICAgIC8vIDYgLSBjYWxsIExvZDAgdmVyc2lvbgotICAgIC8vIDcgLSBjYWxsIExvZDAgdmVyc2lv
bgotICAgIC8vIDggLSBGTEFUVEVOIGJlY2F1c2UgaXQgY29udGFpbnMgYSBsb29wIHdpdGggYSBn
cmFkaWVudAotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBjb25zdCBjaGFyICpleHBl
Y3RhdGlvbnNbXSA9Ci0gICAgewotICAgICAgICAiZnVuKCIsICJ0ZXh0dXJlMkQoIiwKLSAgICAg
ICAgImZ1bkxvZDAoIiwgInRleHR1cmUyRExvZDAoIiwKLSAgICAgICAgImZ1bjIoIiwgIkxPT1Ai
LCAiZm9yIiwgImlmIiwgImJyZWFrIiwgImZ1bkxvZDAoIiwgInRleHR1cmUyRExvZDAiLAotICAg
ICAgICAibWFpbigiLCAiRkxBVFRFTiIsICJpZiIsICJmdW4yKCIKLSAgICB9OwotICAgIGV4cGVj
dChleHBlY3RhdGlvbnMsIEFycmF5U2l6ZShleHBlY3RhdGlvbnMpKTsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1Zh
cmlhYmxlUGFja2VyX3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2NvbXBpbGVyX3Rlc3RzL1ZhcmlhYmxlUGFja2VyX3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkZDliMGI1YjZkOWZhMTMzM2IyMDg0OTYxMmVhM2M5OGEwMzFmYjhiLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9WYXJpYWJsZVBhY2tlcl90ZXN0
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzNyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChj
KSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwot
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiYW5nbGVfZ2wuaCIKLSNpbmNsdWRl
ICJjb21tb24vdXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKLSNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1ZhcmlhYmxlUGFja2VyLmgiCi0KLXN0YXRpYyBz
aDo6R0xlbnVtIHR5cGVzW10gPSB7Ci0gIEdMX0ZMT0FUX01BVDQsICAgICAgICAgICAgLy8gMAot
ICBHTF9GTE9BVF9NQVQyLCAgICAgICAgICAgIC8vIDEKLSAgR0xfRkxPQVRfVkVDNCwgICAgICAg
ICAgICAvLyAyCi0gIEdMX0lOVF9WRUM0LCAgICAgICAgICAgICAgLy8gMwotICBHTF9CT09MX1ZF
QzQsICAgICAgICAgICAgIC8vIDQKLSAgR0xfRkxPQVRfTUFUMywgICAgICAgICAgICAvLyA1Ci0g
IEdMX0ZMT0FUX1ZFQzMsICAgICAgICAgICAgLy8gNgotICBHTF9JTlRfVkVDMywgICAgICAgICAg
ICAgIC8vIDcKLSAgR0xfQk9PTF9WRUMzLCAgICAgICAgICAgICAvLyA4Ci0gIEdMX0ZMT0FUX1ZF
QzIsICAgICAgICAgICAgLy8gOQotICBHTF9JTlRfVkVDMiwgICAgICAgICAgICAgIC8vIDEwCi0g
IEdMX0JPT0xfVkVDMiwgICAgICAgICAgICAgLy8gMTEKLSAgR0xfRkxPQVQsICAgICAgICAgICAg
ICAgICAvLyAxMgotICBHTF9JTlQsICAgICAgICAgICAgICAgICAgIC8vIDEzCi0gIEdMX0JPT0ws
ICAgICAgICAgICAgICAgICAgLy8gMTQKLSAgR0xfU0FNUExFUl8yRCwgICAgICAgICAgICAvLyAx
NQotICBHTF9TQU1QTEVSX0NVQkUsICAgICAgICAgIC8vIDE2Ci0gIEdMX1NBTVBMRVJfRVhURVJO
QUxfT0VTLCAgLy8gMTcKLSAgR0xfU0FNUExFUl8yRF9SRUNUX0FSQiwgICAvLyAxOAotICBHTF9V
TlNJR05FRF9JTlQsICAgICAgICAgIC8vIDE5Ci0gIEdMX1VOU0lHTkVEX0lOVF9WRUMyLCAgICAg
Ly8gMjAKLSAgR0xfVU5TSUdORURfSU5UX1ZFQzMsICAgICAvLyAyMQotICBHTF9VTlNJR05FRF9J
TlRfVkVDNCwgICAgIC8vIDIyCi0gIEdMX0ZMT0FUX01BVDJ4MywgICAgICAgICAgLy8gMjMKLSAg
R0xfRkxPQVRfTUFUMng0LCAgICAgICAgICAvLyAyNAotICBHTF9GTE9BVF9NQVQzeDIsICAgICAg
ICAgIC8vIDI1Ci0gIEdMX0ZMT0FUX01BVDN4NCwgICAgICAgICAgLy8gMjYKLSAgR0xfRkxPQVRf
TUFUNHgyLCAgICAgICAgICAvLyAyNwotICBHTF9GTE9BVF9NQVQ0eDMsICAgICAgICAgIC8vIDI4
Ci0gIEdMX1NBTVBMRVJfM0QsICAgICAgICAgICAgLy8gMjkKLSAgR0xfU0FNUExFUl8yRF9BUlJB
WSwgICAgICAvLyAzMAotICBHTF9TQU1QTEVSXzJEX1NIQURPVywgICAgIC8vIDMxCi0gIEdMX1NB
TVBMRVJfQ1VCRV9TSEFET1csICAgLy8gMzIKLSAgR0xfU0FNUExFUl8yRF9BUlJBWV9TSEFET1cs
IC8vIDMzCi0gIEdMX0lOVF9TQU1QTEVSXzJELCAgICAgICAgLy8gMzQKLSAgR0xfSU5UX1NBTVBM
RVJfQ1VCRSwgICAgICAvLyAzNQotICBHTF9JTlRfU0FNUExFUl8zRCwgICAgICAgIC8vIDM2Ci0g
IEdMX0lOVF9TQU1QTEVSXzJEX0FSUkFZLCAgLy8gMzcKLSAgR0xfVU5TSUdORURfSU5UX1NBTVBM
RVJfMkQsIC8vIDM4Ci0gIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkUsIC8vIDM5Ci0gIEdM
X1VOU0lHTkVEX0lOVF9TQU1QTEVSXzNELCAvLyA0MAotICBHTF9VTlNJR05FRF9JTlRfU0FNUExF
Ul8yRF9BUlJBWSwgLy8gNDEKLX07Ci0KLXN0YXRpYyBzaDo6R0xlbnVtIG5vblNxTWF0VHlwZXNb
XSA9IHsKLSAgR0xfRkxPQVRfTUFUMngzLAotICBHTF9GTE9BVF9NQVQyeDQsCi0gIEdMX0ZMT0FU
X01BVDN4MiwKLSAgR0xfRkxPQVRfTUFUM3g0LAotICBHTF9GTE9BVF9NQVQ0eDIsCi0gIEdMX0ZM
T0FUX01BVDR4MwotfTsKLQotVEVTVChWYXJpYWJsZVBhY2tpbmcsIFBhY2spIHsKLSAgICBWYXJp
YWJsZVBhY2tlciBwYWNrZXI7Ci0gICAgc3RkOjp2ZWN0b3I8c2g6OlNoYWRlclZhcmlhYmxlPiB2
YXJzOwotICAgIGNvbnN0IGludCBrTWF4Um93cyA9IDE2OwotICAgIC8vIHRlc3Qgbm8gdmFycy4K
LSAgICBFWFBFQ1RfVFJVRShwYWNrZXIuQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRz
KGtNYXhSb3dzLCB2YXJzKSk7Ci0KLSAgICBmb3IgKHNpemVfdCB0dCA9IDA7IHR0IDwgQXJyYXlT
aXplKHR5cGVzKTsgKyt0dCkKLSAgICB7Ci0gICAgICAgIHNoOjpHTGVudW0gdHlwZSAgICAgICAg
ICAgID0gdHlwZXNbdHRdOwotICAgICAgICBpbnQgbnVtX3Jvd3MgICAgICAgICAgICAgICA9IFZh
cmlhYmxlUGFja2VyOjpHZXROdW1Sb3dzKHR5cGUpOwotICAgICAgICBpbnQgbnVtX2NvbXBvbmVu
dHNfcGVyX3JvdyA9IFZhcmlhYmxlUGFja2VyOjpHZXROdW1Db21wb25lbnRzUGVyUm93KHR5cGUp
OwotICAgICAgICAvLyBDaGVjayAxIG9mIHRoZSB0eXBlLgotICAgICAgICB2YXJzLmNsZWFyKCk7
Ci0gICAgICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZSh0eXBlLCAwKSk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKHBhY2tlci5DaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1p
dHMoa01heFJvd3MsIHZhcnMpKTsKLQotICAgICAgICAvLyBDaGVjayBleGFjdGx5IHRoZSByaWdo
dCBhbW91bnQgb2YgMSB0eXBlIGFzIGFuIGFycmF5LgotICAgICAgICBpbnQgbnVtX3ZhcnMgPSBr
TWF4Um93cyAvIG51bV9yb3dzOwotICAgICAgICB2YXJzLmNsZWFyKCk7Ci0gICAgICAgIHZhcnMu
cHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZSh0eXBlLCBudW1fdmFycyA9PSAxID8gMCA6IG51
bV92YXJzKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHBhY2tlci5DaGVja1ZhcmlhYmxlc1dpdGhp
blBhY2tpbmdMaW1pdHMoa01heFJvd3MsIHZhcnMpKTsKLQotICAgICAgICAvLyB0ZXN0IHRvbyBt
YW55Ci0gICAgICAgIHZhcnMuY2xlYXIoKTsKLSAgICAgICAgdmFycy5wdXNoX2JhY2soc2g6OlNo
YWRlclZhcmlhYmxlKHR5cGUsIG51bV92YXJzID09IDAgPyAwIDogKG51bV92YXJzICsgMSkpKTsK
LSAgICAgICAgRVhQRUNUX0ZBTFNFKHBhY2tlci5DaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdM
aW1pdHMoa01heFJvd3MsIHZhcnMpKTsKLQotICAgICAgICAvLyBDaGVjayBleGFjdGx5IHRoZSBy
aWdodCBhbW91bnQgb2YgMSB0eXBlIGFzIGluZGl2aWR1YWwgdmFycy4KLSAgICAgICAgbnVtX3Zh
cnMgPQotICAgICAgICAgICAga01heFJvd3MgLyBudW1fcm93cyAqICgobnVtX2NvbXBvbmVudHNf
cGVyX3JvdyA+IDIpID8gMSA6ICg0IC8gbnVtX2NvbXBvbmVudHNfcGVyX3JvdykpOwotICAgICAg
ICB2YXJzLmNsZWFyKCk7Ci0gICAgICAgIGZvciAoaW50IGlpID0gMDsgaWkgPCBudW1fdmFyczsg
KytpaSkKLSAgICAgICAgewotICAgICAgICAgICAgdmFycy5wdXNoX2JhY2soc2g6OlNoYWRlclZh
cmlhYmxlKHR5cGUsIDApKTsKLSAgICAgICAgfQotICAgICAgICBFWFBFQ1RfVFJVRShwYWNrZXIu
Q2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKGtNYXhSb3dzLCB2YXJzKSk7Ci0KLSAg
ICAgICAgLy8gQ2hlY2sgMSB0b28gbWFueS4KLSAgICAgICAgdmFycy5wdXNoX2JhY2soc2g6OlNo
YWRlclZhcmlhYmxlKHR5cGUsIDApKTsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHBhY2tlci5DaGVj
a1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMoa01heFJvd3MsIHZhcnMpKTsKLSAgICB9Ci0K
LSAgICAvLyBUZXN0IGV4YW1wbGUgZnJvbSBHTFNMIEVTIDMuMCBzcGVjIGNoYXB0ZXIgMTEuCi0g
ICAgdmFycy5jbGVhcigpOwotICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShH
TF9GTE9BVF9WRUM0LCAwKSk7Ci0gICAgdmFycy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxl
KEdMX0ZMT0FUX01BVDMsIDApKTsKLSAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFi
bGUoR0xfRkxPQVRfTUFUMywgMCkpOwotICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJp
YWJsZShHTF9GTE9BVF9WRUMyLCA2KSk7Ci0gICAgdmFycy5wdXNoX2JhY2soc2g6OlNoYWRlclZh
cmlhYmxlKEdMX0ZMT0FUX1ZFQzIsIDQpKTsKLSAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVy
VmFyaWFibGUoR0xfRkxPQVRfVkVDMiwgMCkpOwotICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFk
ZXJWYXJpYWJsZShHTF9GTE9BVCwgMykpOwotICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFkZXJW
YXJpYWJsZShHTF9GTE9BVCwgMikpOwotICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJp
YWJsZShHTF9GTE9BVCwgMCkpOwotICAgIEVYUEVDVF9UUlVFKHBhY2tlci5DaGVja1ZhcmlhYmxl
c1dpdGhpblBhY2tpbmdMaW1pdHMoa01heFJvd3MsIHZhcnMpKTsKLX0KLQotVEVTVChWYXJpYWJs
ZVBhY2tpbmcsIFBhY2tTaXplcykgewotICBmb3IgKHNpemVfdCB0dCA9IDA7IHR0IDwgQXJyYXlT
aXplKHR5cGVzKTsgKyt0dCkgewotICAgIEdMZW51bSB0eXBlID0gdHlwZXNbdHRdOwotCi0gICAg
aW50IGV4cGVjdGVkQ29tcG9uZW50cyA9IGdsOjpWYXJpYWJsZUNvbXBvbmVudENvdW50KHR5cGUp
OwotICAgIGludCBleHBlY3RlZFJvd3MgPSBnbDo6VmFyaWFibGVSb3dDb3VudCh0eXBlKTsKLQot
ICAgIGlmICh0eXBlID09IEdMX0ZMT0FUX01BVDIpIHsKLSAgICAgIGV4cGVjdGVkQ29tcG9uZW50
cyA9IDQ7Ci0gICAgfSBlbHNlIGlmIChnbDo6SXNNYXRyaXhUeXBlKHR5cGUpKSB7Ci0gICAgICBp
bnQgc3F1YXJlU2l6ZSA9IHN0ZDo6bWF4KGdsOjpWYXJpYWJsZVJvd0NvdW50KHR5cGUpLAotICAg
ICAgICAgIGdsOjpWYXJpYWJsZUNvbHVtbkNvdW50KHR5cGUpKTsKLSAgICAgIGV4cGVjdGVkQ29t
cG9uZW50cyA9IHNxdWFyZVNpemU7Ci0gICAgICBleHBlY3RlZFJvd3MgPSBzcXVhcmVTaXplOwot
ICAgIH0KLQotICAgIEVYUEVDVF9FUShleHBlY3RlZENvbXBvbmVudHMsCi0gICAgICBWYXJpYWJs
ZVBhY2tlcjo6R2V0TnVtQ29tcG9uZW50c1BlclJvdyh0eXBlKSk7Ci0gICAgRVhQRUNUX0VRKGV4
cGVjdGVkUm93cywgVmFyaWFibGVQYWNrZXI6OkdldE51bVJvd3ModHlwZSkpOwotICB9Ci19Ci0K
LS8vIENoZWNrIHNwZWNpYWwgYXNzdW1wdGlvbnMgYWJvdXQgcGFja2luZyBub24tc3F1YXJlIG1h
dHMKLVRFU1QoVmFyaWFibGVQYWNraW5nLCBOb25TcXVhcmVNYXRzKSB7Ci0KLSAgZm9yIChzaXpl
X3QgbXQgPSAwOyBtdCA8IEFycmF5U2l6ZShub25TcU1hdFR5cGVzKTsgKyttdCkgewotICAgIAot
ICAgIEdMZW51bSB0eXBlID0gbm9uU3FNYXRUeXBlc1ttdF07Ci0KLSAgICBpbnQgcm93cyA9IGds
OjpWYXJpYWJsZVJvd0NvdW50KHR5cGUpOwotICAgIGludCBjb2xzID0gZ2w6OlZhcmlhYmxlQ29s
dW1uQ291bnQodHlwZSk7Ci0gICAgaW50IHNxdWFyZVNpemUgPSBzdGQ6Om1heChyb3dzLCBjb2xz
KTsKLQotICAgIHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4gdmFyczsKLSAgICB2YXJz
LnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUodHlwZSwgMCkpOwotCi0gICAgLy8gRmlsbCBj
b2x1bW5zCi0gICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgc3F1YXJlU2l6ZTsgcm93KyspIHsK
LSAgICAgIGZvciAoaW50IGNvbCA9IHNxdWFyZVNpemU7IGNvbCA8IDQ7ICsrY29sKSB7Ci0gICAg
ICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShHTF9GTE9BVCwgMCkpOwotICAg
ICAgfQotICAgIH0KLQotICAgIFZhcmlhYmxlUGFja2VyIHBhY2tlcjsKLQotICAgIEVYUEVDVF9U
UlVFKHBhY2tlci5DaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMoc3F1YXJlU2l6ZSwg
dmFycykpOwotCi0gICAgLy8gYW5kIG9uZSBzY2FsYXIgYW5kIHBhY2tpbmcgc2hvdWxkIGZhaWwK
LSAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfRkxPQVQsIDApKTsKLSAg
ICBFWFBFQ1RfRkFMU0UocGFja2VyLkNoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyhz
cXVhcmVTaXplLCB2YXJzKSk7Ci0gIH0KLX0KLQotLy8gU2NhbGFyIHR5cGUgdmFyaWFibGVzIGNh
biBiZSBwYWNrZWQgc2hhcmluZyByb3dzIHdpdGggb3RoZXIgdmFyaWFibGVzLgotVEVTVChWYXJp
YWJsZVBhY2tpbmcsIFJldXNlUm93cykKLXsKLSAgICBWYXJpYWJsZVBhY2tlciBwYWNrZXI7Ci0g
ICAgc3RkOjp2ZWN0b3I8c2g6OlNoYWRlclZhcmlhYmxlPiB2YXJzOwotICAgIGNvbnN0IGludCBr
TWF4Um93cyA9IDUxMjsKLQotICAgIC8vIHVuaWZvcm0gYm9vbCB1MFsxMjldOwotICAgIC8vIHVu
aWZvcm0gYm9vbCB1MVsxMjldOwotICAgIC8vIHVuaWZvcm0gYm9vbCB1MlsxMjldOwotICAgIC8v
IHVuaWZvcm0gYm9vbCB1M1sxMjldOwotICAgIHsKLSAgICAgICAgaW50IG51bV9hcnJheXMgPSA0
OwotICAgICAgICBpbnQgbnVtX2VsZW1lbnRzX3Blcl9hcnJheSA9IGtNYXhSb3dzIC8gbnVtX2Fy
cmF5cyArIDE7Ci0gICAgICAgIGZvciAoaW50IGlpID0gMDsgaWkgPCBudW1fYXJyYXlzOyArK2lp
KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFi
bGUoR0xfQk9PTCwgbnVtX2VsZW1lbnRzX3Blcl9hcnJheSkpOwotICAgICAgICB9Ci0gICAgICAg
IEVYUEVDVF9UUlVFKHBhY2tlci5DaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMoa01h
eFJvd3MsIHZhcnMpKTsKLSAgICB9Ci0KLSAgICB2YXJzLmNsZWFyKCk7Ci0gICAgLy8gdW5pZm9y
bSB2ZWMyIHUwWzI1N107Ci0gICAgLy8gdW5pZm9ybSBmbG9hdCB1MVsyNTddOwotICAgIC8vIHVu
aWZvcm0gaW50IHUxWzI1N107Ci0gICAgewotICAgICAgICBpbnQgbnVtX2VsZW1lbnRzX3Blcl9h
cnJheSA9IGtNYXhSb3dzIC8gMiArIDE7Ci0gICAgICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFk
ZXJWYXJpYWJsZShHTF9GTE9BVF9WRUMyLCBudW1fZWxlbWVudHNfcGVyX2FycmF5KSk7Ci0gICAg
ICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShHTF9GTE9BVCwgbnVtX2VsZW1l
bnRzX3Blcl9hcnJheSkpOwotICAgICAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFi
bGUoR0xfSU5ULCBudW1fZWxlbWVudHNfcGVyX2FycmF5KSk7Ci0gICAgICAgIEVYUEVDVF9UUlVF
KHBhY2tlci5DaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMoa01heFJvd3MsIHZhcnMp
KTsKLSAgICB9Ci19Ci0KLS8vIENoZWNrIHRoZSBwYWNrZXIgc3VwcG9ydHMgYW5kIGZsYXR0ZW5z
IHN0cnVjdHVyZXMuCi1URVNUKFZhcmlhYmxlUGFja2luZywgU3RydWN0KQotewotICAgIFZhcmlh
YmxlUGFja2VyIHBhY2tlcjsKLSAgICBzdGQ6OnZlY3RvcjxzaDo6U2hhZGVyVmFyaWFibGU+IGZp
ZWxkczsKLSAgICBjb25zdCBpbnQga01heFJvd3MgPSAxNjsKLQotICAgIC8vIFRlc3QgZXhhbXBs
ZSBmcm9tIEdMU0wgRVMgMy4wIHNwZWMgY2hhcHRlciAxMSwgYnV0IHdpdGggc3RydWN0cwotICAg
IHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4gdmFyczsKLSAgICB2YXJzLnB1c2hfYmFj
ayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfU1RSVUNUX0FOR0xFWCwgMCkpOwotCi0gICAgc2g6OlNo
YWRlclZhcmlhYmxlICZwYXJlbnRTdHJ1Y3QgPSB2YXJzWzBdOwotICAgIHBhcmVudFN0cnVjdC5m
aWVsZHMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShHTF9GTE9BVF9WRUM0LCAwKSk7Ci0g
ICAgcGFyZW50U3RydWN0LmZpZWxkcy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX0ZM
T0FUX01BVDMsIDApKTsKLQotICAgIHBhcmVudFN0cnVjdC5maWVsZHMucHVzaF9iYWNrKHNoOjpT
aGFkZXJWYXJpYWJsZShHTF9TVFJVQ1RfQU5HTEVYLCAwKSk7Ci0gICAgc2g6OlNoYWRlclZhcmlh
YmxlICZpbm5lclN0cnVjdCA9IHBhcmVudFN0cnVjdC5maWVsZHMuYmFjaygpOwotICAgIGlubmVy
U3RydWN0LmZpZWxkcy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX0ZMT0FUX01BVDMs
IDApKTsKLSAgICBpbm5lclN0cnVjdC5maWVsZHMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJs
ZShHTF9GTE9BVF9WRUMyLCA2KSk7Ci0gICAgaW5uZXJTdHJ1Y3QuZmllbGRzLnB1c2hfYmFjayhz
aDo6U2hhZGVyVmFyaWFibGUoR0xfRkxPQVRfVkVDMiwgNCkpOwotCi0gICAgcGFyZW50U3RydWN0
LmZpZWxkcy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX0ZMT0FUX1ZFQzIsIDApKTsK
LSAgICBwYXJlbnRTdHJ1Y3QuZmllbGRzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xf
RkxPQVQsIDMpKTsKLSAgICBwYXJlbnRTdHJ1Y3QuZmllbGRzLnB1c2hfYmFjayhzaDo6U2hhZGVy
VmFyaWFibGUoR0xfRkxPQVQsIDIpKTsKLSAgICBwYXJlbnRTdHJ1Y3QuZmllbGRzLnB1c2hfYmFj
ayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfRkxPQVQsIDApKTsKLQotICAgIEVYUEVDVF9UUlVFKHBh
Y2tlci5DaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMoa01heFJvd3MsIHZhcnMpKTsK
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxl
cl90ZXN0cy9Xb3JrR3JvdXBTaXplX3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1dvcmtHcm91cFNpemVfdGVzdC5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYTlkNGU4ZDkzMzhmOTkwNjY0OWE2ZjkyNzdiZWJmNmVm
NDJiNWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1dvcmtHcm91cFNp
emVfdGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vLwotLy8gQ29weXJp
Z2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8K
LS8vIFdvcmtHcm91cFNpemVfdGVzdC5jcHA6Ci0vLyB0ZXN0cyBmb3IgbG9jYWwgZ3JvdXAgc2l6
ZSBpbiBhIGNvbXB1dGUgc2hhZGVyCi0vLwotCi0jaW5jbHVkZSAiYW5nbGVfZ2wuaCIKLSNpbmNs
dWRlICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgotI2lu
Y2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuaCIKLSNpbmNsdWRlICJ0
ZXN0cy90ZXN0X3V0aWxzL2NvbXBpbGVyX3Rlc3QuaCIKLQotY2xhc3MgV29ya0dyb3VwU2l6ZVRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAotewotICBwdWJsaWM6Ci0gICAgV29ya0dyb3VwU2l6
ZVRlc3QoKSB7fQotCi0gIHByb3RlY3RlZDoKLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXM7Ci0gICAgICAgIFNoSW5p
dEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7Ci0KLSAgICAgICAgbVRyYW5zbGF0b3IgPSBu
ZXcgVHJhbnNsYXRvckVTU0woR0xfQ09NUFVURV9TSEFERVIsIFNIX0dMRVMzXzFfU1BFQyk7Ci0g
ICAgICAgIEFTU0VSVF9UUlVFKG1UcmFuc2xhdG9yLT5Jbml0KHJlc291cmNlcykpOwotICAgIH0K
LQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZSB7IFNhZmVEZWxldGUobVRyYW5zbGF0b3Ip
OyB9Ci0KLSAgICAvLyBSZXR1cm4gdHJ1ZSB3aGVuIGNvbXBpbGF0aW9uIHN1Y2NlZWRzCi0gICAg
Ym9vbCBjb21waWxlKGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcpCi0gICAgewotICAg
ICAgICBjb25zdCBjaGFyICpzaGFkZXJTdHJpbmdzW10gPSB7c2hhZGVyU3RyaW5nLmNfc3RyKCl9
OwotICAgICAgICBib29sIHN0YXR1cyA9IG1UcmFuc2xhdG9yLT5jb21waWxlKHNoYWRlclN0cmlu
Z3MsIDEsIFNIX0lOVEVSTUVESUFURV9UUkVFIHwgU0hfVkFSSUFCTEVTKTsKLSAgICAgICAgVElu
Zm9TaW5rICZpbmZvU2luayA9IG1UcmFuc2xhdG9yLT5nZXRJbmZvU2luaygpOwotICAgICAgICBt
SW5mb0xvZyAgICAgICAgICAgID0gaW5mb1NpbmsuaW5mby5jX3N0cigpOwotICAgICAgICByZXR1
cm4gc3RhdHVzOwotICAgIH0KLQotICBwcm90ZWN0ZWQ6Ci0gICAgc3RkOjpzdHJpbmcgbUluZm9M
b2c7Ci0gICAgVHJhbnNsYXRvckVTU0wgKm1UcmFuc2xhdG9yID0gbnVsbHB0cjsKLX07Ci0KLS8v
IGNoZWNrcyB3aGV0aGVyIGNvbXBpbGVyIGhhcyBwYXJzZWQgdGhlIGxvY2FsIHNpemUgbGF5b3V0
IHF1YWxpZmllcnMgcWNvcnJlY3RseQotVEVTVF9GKFdvcmtHcm91cFNpemVUZXN0LCBPbmx5TG9j
YWxTaXplWFNwZWNpZmllZCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5n
ID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3Np
emVfeD01KSBpbjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIn1cbiI7
Ci0KLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0KLSAgICBjb25zdCBzaDo6V29ya0dyb3Vw
U2l6ZSAmbG9jYWxTaXplID0gbVRyYW5zbGF0b3ItPmdldENvbXB1dGVTaGFkZXJMb2NhbFNpemUo
KTsKLSAgICBBU1NFUlRfRVEoNSwgbG9jYWxTaXplWzBdKTsKLSAgICBBU1NFUlRfRVEoMSwgbG9j
YWxTaXplWzFdKTsKLSAgICBBU1NFUlRfRVEoMSwgbG9jYWxTaXplWzJdKTsKLX0KLQotLy8gY2hl
Y2tzIHdoZXRoZXIgY29tcGlsZXIgaGFzIHBhcnNlZCB0aGUgbG9jYWwgc2l6ZSBsYXlvdXQgcXVh
bGlmaWVycyBxY29ycmVjdGx5Ci1URVNUX0YoV29ya0dyb3VwU2l6ZVRlc3QsIExvY2FsU2l6ZVhh
bmRaKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAi
I3ZlcnNpb24gMzEwIGVzXG4iCi0gICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94PTUsIGxvY2Fs
X3NpemVfej0xMCkgaW47XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICJ9
XG4iOwotCi0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotCi0gICAgY29uc3Qgc2g6OldvcmtH
cm91cFNpemUgJmxvY2FsU2l6ZSA9IG1UcmFuc2xhdG9yLT5nZXRDb21wdXRlU2hhZGVyTG9jYWxT
aXplKCk7Ci0gICAgQVNTRVJUX0VRKDUsIGxvY2FsU2l6ZVswXSk7Ci0gICAgQVNTRVJUX0VRKDEs
IGxvY2FsU2l6ZVsxXSk7Ci0gICAgQVNTRVJUX0VRKDEwLCBsb2NhbFNpemVbMl0pOwotfQotCi0v
LyBjaGVja3Mgd2hldGhlciBjb21waWxlciBoYXMgcGFyc2VkIHRoZSBsb2NhbCBzaXplIGxheW91
dCBxdWFsaWZpZXJzIHFjb3JyZWN0bHkKLVRFU1RfRihXb3JrR3JvdXBTaXplVGVzdCwgTG9jYWxT
aXplQWxsKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAg
ICAiI3ZlcnNpb24gMzEwIGVzXG4iCi0gICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94PTUsIGxv
Y2FsX3NpemVfej0xMCwgbG9jYWxfc2l6ZV95PTE1KSBpbjtcbiIKLSAgICAgICAgInZvaWQgbWFp
bigpIHtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0K
LSAgICBjb25zdCBzaDo6V29ya0dyb3VwU2l6ZSAmbG9jYWxTaXplID0gbVRyYW5zbGF0b3ItPmdl
dENvbXB1dGVTaGFkZXJMb2NhbFNpemUoKTsKLSAgICBBU1NFUlRfRVEoNSwgbG9jYWxTaXplWzBd
KTsKLSAgICBBU1NFUlRfRVEoMTUsIGxvY2FsU2l6ZVsxXSk7Ci0gICAgQVNTRVJUX0VRKDEwLCBs
b2NhbFNpemVbMl0pOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2RlcXAuZ3lwaSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFw
Lmd5cGkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiZjZjNTY0OGMxZDY2YzkxODZk
OTg3Y2Y3ZTQ3YTNkYTc1ZDRlYjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXAuZ3lwaQor
KysgL2Rldi9udWxsCkBAIC0xLDE5MDQgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci0jIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLXsKLSAgICAndmFyaWFibGVzJzoKLSAg
ICB7Ci0gICAgICAgICMgRGVmaW5lIHRoZXNlIHZhcmlhYmxlcyB3aXRoaW4gYW4gaW5uZXIgdmFy
aWFibGVzIGRpY3QuCi0gICAgICAgICMgVGhpcyBpcyBuZWNlc3NhcnkgdG8gZ2V0IHRoZXNlIHZh
cmlhYmxlcyBkZWZpbmVkIGZvciB0aGUgY29uZGl0aW9ucwotICAgICAgICAjIHdpdGhpbiB0aGUg
b3V0ZXIgdmFyaWFibGVzIGRpY3Qgd2hpY2ggb3BlcmF0ZSBvbiB0aGVzZSB2YXJpYWJsZXMuCi0g
ICAgICAgICd2YXJpYWJsZXMnOgotICAgICAgICB7Ci0gICAgICAgICAgICAnYW5nbGVfYnVpbGRf
d2lucnQlJzogMCwKLSAgICAgICAgfSwKLQotICAgICAgICAjIENvcHkgY29uZGl0aW9uYWxseS1z
ZXQgdmFyaWFibGVzIHRvIHRoZSBvdXRlciB2YXJpYWJsZXMgZGljdC4KLSAgICAgICAgJ2FuZ2xl
X2J1aWxkX3dpbnJ0JSc6ICc8KGFuZ2xlX2J1aWxkX3dpbnJ0KScsCi0KLSAgICAgICAgJ2RlcXBf
cGF0aCc6ICc8KERFUFRIKS90aGlyZF9wYXJ0eS9kZXFwL3NyYycsCi0gICAgICAgICdsaWJwbmdf
cGF0aCc6ICc8KERFUFRIKS90aGlyZF9wYXJ0eS9saWJwbmcnLAotICAgICAgICAnemxpYl9wYXRo
JzogJzwoREVQVEgpL3RoaXJkX3BhcnR5L3psaWInLAotCi0gICAgICAgICdhbmdsZV9idWlsZF9k
ZXFwX2xpYnJhcmllcyUnIDogMCwKLSAgICAgICAgJ2FuZ2xlX2J1aWxkX2RlcXBfZ3Rlc3Rfc3Vw
cG9ydCUnIDogMCwKLSAgICAgICAgJ2FuZ2xlX2J1aWxkX2RlcXBfZXhlY3V0YWJsZXMlJyA6IDAs
Ci0gICAgICAgICdhbmdsZV9idWlsZF9kZXFwX2d0ZXN0X2V4ZWN1dGFibGVzJScgOjAsCi0KLSAg
ICAgICAgJ2NsYW5nX3dhcm5pbmdfZmxhZ3MnOgotICAgICAgICBbCi0gICAgICAgICAgICAgIyB0
Y3U6OkNvbW1hbmRMaW5lIGhhcyB2aXJ0dWFsIGZ1bmN0aW9ucyBidXQgbm8gdmlydHVhbCBkZXN0
cnVjdG9yCi0gICAgICAgICAgICAnLVduby1uby1kZWxldGUtbm9uLXZpcnR1YWwtZHRvcicsCi0g
ICAgICAgIF0sCi0KLSAgICAgICAgJ2RlcXBfd2luX2NmbGFncyc6Ci0gICAgICAgIFsKLSAgICAg
ICAgICAgICcvRUhzYycsICAgIyBkRVFQIHJlcXVpcmVzIGV4Y2VwdGlvbnMKLSAgICAgICAgICAg
ICcvd2Q0MDkxJywgIyB0eXBlZGVmIGlnbm9yZWQgd2hlbiBubyB2YXJpYWJsZSBpcyBkZWNsYXJl
ZAotICAgICAgICAgICAgJy93ZDQxMDAnLAotICAgICAgICAgICAgJy93ZDQxMjUnLCAjIGRlY2lt
YWwgZGlnaXQgdGVybWluYXRlcyBvY3RhbCBlc2NhcGUgc2VxdWVuY2UKLSAgICAgICAgICAgICcv
d2Q0MTI3JywgIyBjb25kaXRpb25hbCBleHByZXNzaW9uIGNvbnN0YW50Ci0gICAgICAgICAgICAn
L3dkNDI0NCcsICMgcG9zc2libGUgbG9zcyBvZiBkYXRhCi0gICAgICAgICAgICAnL3dkNDI0NScs
ICMgYXJndW1lbnQgc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNoCi0gICAgICAgICAgICAnL3dkNDI5
NycsICMgZnVuY3Rpb24gYXNzdW1lZCBub3QgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIGJ1dCBkb2Vz
Ci0gICAgICAgICAgICAnL3dkNDM4OScsICMgc2lnbmVkL3Vuc2lnbmVkIG1pc21hdGNoCi0gICAg
ICAgICAgICAnL3dkNDUxMCcsICMgZGVmYXVsdCBjb25zdHJ1Y3RvciBjb3VsZCBub3QgYmUgZ2Vu
ZXJhdGVkCi0gICAgICAgICAgICAnL3dkNDUxMicsCi0gICAgICAgICAgICAnL3dkNDYxMCcsICMg
Y2Fubm90IGJlIGluc3RhbnRpYXRlZAotICAgICAgICAgICAgJy93ZDQ2MTEnLCAjIHNldGptcCBp
bnRlcmFjdGlvbiBub24tcG9ydGFibGUKLSAgICAgICAgICAgICcvd2Q0NzAxJywgIyBwb3RlbnRp
YWxseSB1bmluaXQgdXNlZAotICAgICAgICAgICAgJy93ZDQ3MDInLCAjIHVucmVhY2hhYmxlIGNv
ZGUKLSAgICAgICAgICAgICcvd2Q0NzA2JywgIyBhc3NpZ25tZW50IHdpdGhpbiBjb25kaXRpb25h
bCBleHByZXNzaW9uCi0gICAgICAgICAgICAnL3dkNDgzOCcsICMgY29udmVyc2lvbiByZXF1aXJl
cyBhIG5hcnJvd2luZyBjb252ZXJzaW9uCi0gICAgICAgICAgICAnL3dkNDk5NicsICMgZGVwcmVj
YXRlZAotICAgICAgICBdLAotICAgICAgICAnZGVxcF9kZWZpbmVzJzoKLSAgICAgICAgWwotICAg
ICAgICAgICAgJ0RFUVBfU1VQUE9SVF9HTEVTMzE9MScsCi0gICAgICAgICAgICAnREVRUF9TVVBQ
T1JUX0dMRVMzPTEnLAotICAgICAgICAgICAgJ0RFUVBfU1VQUE9SVF9HTEVTMj0xJywKLSAgICAg
ICAgICAgICdERVFQX1NVUFBPUlRfRUdMPTEnLAotICAgICAgICAgICAgJ0RFUVBfVEFSR0VUX05B
TUU9ImFuZ2xlIicsCi0gICAgICAgICAgICAnREVRUF9HTEVTMzFfUlVOVElNRV9MT0FEPTEnLAot
ICAgICAgICAgICAgJ0RFUVBfR0xFUzNfUlVOVElNRV9MT0FEPTEnLAotICAgICAgICAgICAgJ0RF
UVBfR0xFUzJfUlVOVElNRV9MT0FEPTEnLAotICAgICAgICAgICAgJ1FQX1NVUFBPUlRfUE5HPTEn
LAotICAgICAgICAgICAgJ19IQVNfRVhDRVBUSU9OUz0xJywKLSAgICAgICAgXSwKLSAgICAgICAg
J2RlcXBfdW5kZWZpbmVzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJ1dJTjMyX0xFQU5fQU5E
X01FQU4nLAotICAgICAgICAgICAgJ05PTUlOTUFYJywKLSAgICAgICAgICAgICdfSEFTX0VYQ0VQ
VElPTlM9MCcsCi0gICAgICAgIF0sCi0gICAgICAgICdkZXFwX2luY2x1ZGVfZGlycyc6Ci0gICAg
ICAgIFsKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3V0b3InLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9leGVjc2VydmVyJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL2NvbW1vbicsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxp
YnMvZGViYXNlJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9k
ZWNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVwb29s
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXRocmVhZCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGV1dGlsJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXN0cmVhbScsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9lZ2wnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9mcmFtZXdvcmsvZWdsL3dyYXBwZXInLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvb3BlbmdsJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L29wZW5nbC9zaW1wbGVyZWZlcmVuY2UnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFt
ZXdvcmsvb3BlbmdsL3dyYXBwZXInLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdv
cmsvcGxhdGZvcm0vbnVsbCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9x
cGhlbHBlcicsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yYW5kb21zaGFk
ZXJzJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JlZmVyZW5jZXJlbmRl
cmVyJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMicsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvYWNjdXJhY3knLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9zdHJlc3MnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMyL3VzZWNhc2VzJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMycsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVu
Y3Rpb25hbCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvYWNjdXJh
Y3knLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNl
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJlc3MnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3VzZWNhc2VzJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMzEvc3RyZXNzJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbHNoYXJlZCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2x1c2Vj
YXNlcycsCi0gICAgICAgICAgICAnPChsaWJwbmdfcGF0aCknLAotICAgICAgICAgICAgJzwoemxp
Yl9wYXRoKScsCi0gICAgICAgIF0sCi0gICAgICAgICdkZXFwX2dsZXMyX3NvdXJjZXMnOgotICAg
ICAgICBbCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvYWNjdXJhY3kv
ZXMyYUFjY3VyYWN5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMi9hY2N1cmFjeS9lczJhQWNjdXJhY3lUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2FjY3VyYWN5L2VzMmFUZXh0dXJlRmlsdGVyaW5nVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9hY2N1cmFj
eS9lczJhVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczIvYWNjdXJhY3kvZXMyYVRleHR1cmVNaXBtYXBUZXN0cy5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2FjY3VyYWN5L2VzMmFUZXh0
dXJlTWlwbWFwVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMi9hY2N1cmFjeS9lczJhVmFyeWluZ0ludGVycG9sYXRpb25UZXN0cy5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2FjY3VyYWN5L2VzMmFWYXJ5aW5nSW50
ZXJwb2xhdGlvblRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvZnVuY3Rpb25hbC9lczJmQXBpQ2FzZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkFwaUNhc2UuaHBwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZBdHRyaWJMb2Nh
dGlvblRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
ZnVuY3Rpb25hbC9lczJmQXR0cmliTG9jYXRpb25UZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkJsZW5kVGVzdHMuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZC
bGVuZFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
ZnVuY3Rpb25hbC9lczJmQm9vbGVhblN0YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkJvb2xlYW5TdGF0ZVF1
ZXJ5VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9m
dW5jdGlvbmFsL2VzMmZCdWZmZXJPYmplY3RRdWVyeVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmQnVmZmVyT2JqZWN0UXVl
cnlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1
bmN0aW9uYWwvZXMyZkJ1ZmZlclRlc3RVdGlsLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmQnVmZmVyVGVzdFV0aWwuaHBwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZCdWZm
ZXJXcml0ZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czIvZnVuY3Rpb25hbC9lczJmQnVmZmVyV3JpdGVUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkNsaXBwaW5nVGVzdHMuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2Vz
MmZDbGlwcGluZ1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvZnVuY3Rpb25hbC9lczJmQ29sb3JDbGVhclRlc3QuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZDb2xvckNsZWFyVGVzdC5o
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwv
ZXMyZkRlYnVnTWFya2VyVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZEZWJ1Z01hcmtlclRlc3RzLmhwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRGVmYXVsdFZl
cnRleEF0dHJpYnV0ZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRlc3RzLmhwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJm
RGVwdGhSYW5nZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvZnVuY3Rpb25hbC9lczJmRGVwdGhSYW5nZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRGVwdGhTdGVuY2lsQ2xl
YXJUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1
bmN0aW9uYWwvZXMyZkRlcHRoU3RlbmNpbENsZWFyVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZEZXB0aFN0ZW5jaWxUZXN0
cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9u
YWwvZXMyZkRlcHRoU3RlbmNpbFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRGVwdGhUZXN0cy5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkRlcHRoVGVzdHMu
aHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFs
L2VzMmZEaXRoZXJpbmdUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkRpdGhlcmluZ1Rlc3RzLmhwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRHJhd1Rlc3RzLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9l
czJmRHJhd1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czIvZnVuY3Rpb25hbC9lczJmRmJvQXBpVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkZib0FwaVRlc3QuaHBwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZGYm9Db21w
bGV0ZW5lc3NUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMyL2Z1bmN0aW9uYWwvZXMyZkZib0NvbXBsZXRlbmVzc1Rlc3RzLmhwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRmJvUmVuZGVyVGVz
dC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9u
YWwvZXMyZkZib1JlbmRlclRlc3QuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZGYm9TdGF0ZVF1ZXJ5VGVzdHMuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZGYm9TdGF0
ZVF1ZXJ5VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9mdW5jdGlvbmFsL2VzMmZGbG9hdFN0YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkZsb2F0U3RhdGVRdWVy
eVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVu
Y3Rpb25hbC9lczJmRmx1c2hGaW5pc2hUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkZsdXNoRmluaXNoVGVzdHMuaHBwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZG
cmFnT3BJbnRlcmFjdGlvblRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRnJhZ09wSW50ZXJhY3Rpb25UZXN0cy5ocHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkZ1
bmN0aW9uYWxUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMyL2Z1bmN0aW9uYWwvZXMyZkZ1bmN0aW9uYWxUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkltcGxlbWVudGF0aW9uTGlt
aXRUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1
bmN0aW9uYWwvZXMyZkltcGxlbWVudGF0aW9uTGltaXRUZXN0cy5ocHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkludGVnZXJTdGF0ZVF1
ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9m
dW5jdGlvbmFsL2VzMmZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmTGlmZXRpbWVUZXN0cy5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwv
ZXMyZkxpZmV0aW1lVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZMaWdodEFtb3VudFRlc3QuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZMaWdodEFtb3VudFRl
c3QuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlv
bmFsL2VzMmZNdWx0aXNhbXBsZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmTXVsdGlzYW1wbGVUZXN0cy5ocHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZk5lZ2F0
aXZlQnVmZmVyQXBpVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZOZWdhdGl2ZUJ1ZmZlckFwaVRlc3RzLmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmTmVnYXRp
dmVGcmFnbWVudEFwaVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmTmVnYXRpdmVGcmFnbWVudEFwaVRlc3RzLmhwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmTmVn
YXRpdmVTaGFkZXJBcGlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZk5lZ2F0aXZlU2hhZGVyQXBpVGVzdHMuaHBwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZOZWdh
dGl2ZVN0YXRlQXBpVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZOZWdhdGl2ZVN0YXRlQXBpVGVzdHMuaHBwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZOZWdhdGl2
ZVRleHR1cmVBcGlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMyL2Z1bmN0aW9uYWwvZXMyZk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3RzLmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmTmVnYXRp
dmVWZXJ0ZXhBcnJheUFwaVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmTmVnYXRpdmVWZXJ0ZXhBcnJheUFwaVRlc3RzLmhw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9l
czJmUG9seWdvbk9mZnNldFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmUG9seWdvbk9mZnNldFRlc3RzLmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmUHJlcmVx
dWlzaXRlVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9mdW5jdGlvbmFsL2VzMmZQcmVyZXF1aXNpdGVUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlJhbmRvbUZyYWdtZW50T3BU
ZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0
aW9uYWwvZXMyZlJhbmRvbUZyYWdtZW50T3BUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlJhbmRvbVNoYWRlclRlc3RzLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9l
czJmUmFuZG9tU2hhZGVyVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZSYXN0ZXJpemF0aW9uVGVzdHMuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZSYXN0ZXJp
emF0aW9uVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9mdW5jdGlvbmFsL2VzMmZSYm9TdGF0ZVF1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZSYm9TdGF0ZVF1ZXJ5VGVz
dHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlv
bmFsL2VzMmZSZWFkUGl4ZWxzVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZSZWFkUGl4ZWxzVGVzdHMuaHBwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTY2lzc29y
VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5j
dGlvbmFsL2VzMmZTY2lzc29yVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJBbGdvcml0aG1UZXN0cy5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNo
YWRlckFsZ29yaXRobVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVyQXBpVGVzdHMuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJBcGlUZXN0
cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9u
YWwvZXMyZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5o
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwv
ZXMyZlNoYWRlckNvbnN0RXhwclRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVyQ29uc3RFeHByVGVzdHMuaHBwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZT
aGFkZXJEaXNjYXJkVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJEaXNjYXJkVGVzdHMuaHBwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJFeGVj
dXRlVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1
bmN0aW9uYWwvZXMyZlNoYWRlckV4ZWN1dGVUZXN0LmhwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVyRnJhZ0RhdGFUZXN0cy5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwv
ZXMyZlNoYWRlckZyYWdEYXRhVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJJbmRleGluZ1Rlc3RzLmNwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hh
ZGVySW5kZXhpbmdUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlckludmFyaWFuY2VUZXN0cy5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlcklu
dmFyaWFuY2VUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlckxvb3BUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlckxvb3BUZXN0cy5o
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwv
ZXMyZlNoYWRlck1hdHJpeFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVyTWF0cml4VGVzdHMuaHBwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJP
cGVyYXRvclRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czIvZnVuY3Rpb25hbC9lczJmU2hhZGVyT3BlcmF0b3JUZXN0cy5ocHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlclJldHVyblRl
c3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rp
b25hbC9lczJmU2hhZGVyUmV0dXJuVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2Vz
MmZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJTdHJ1Y3RUZXN0cy5jcHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRl
clN0cnVjdFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czIvZnVuY3Rpb25hbC9lczJmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJU
ZXh0dXJlRnVuY3Rpb25UZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlN0ZW5jaWxUZXN0cy5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlN0ZW5jaWxUZXN0cy5o
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwv
ZXMyZlN0cmluZ1F1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTdHJpbmdRdWVyeVRlc3RzLmhwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmVGV4dHVyZUNv
bXBsZXRlbmVzc1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvZnVuY3Rpb25hbC9lczJmVGV4dHVyZUNvbXBsZXRlbmVzc1Rlc3RzLmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmVGV4dHVy
ZUZpbHRlcmluZ1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvZnVuY3Rpb25hbC9lczJmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLmhwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmVGV4dHVyZUZv
cm1hdFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
ZnVuY3Rpb25hbC9lczJmVGV4dHVyZUZvcm1hdFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmVGV4dHVyZU1pcG1hcFRlc3Rz
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25h
bC9lczJmVGV4dHVyZU1pcG1hcFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmVGV4dHVyZVNpemVUZXN0cy5jcHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1
cmVTaXplVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9mdW5jdGlvbmFsL2VzMmZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmVGV4dHVyZVNw
ZWNpZmljYXRpb25UZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1cmVTdGF0ZVF1ZXJ5VGVzdHMuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZUZXh0dXJl
U3RhdGVRdWVyeVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvZnVuY3Rpb25hbC9lczJmVGV4dHVyZVVuaXRUZXN0cy5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1cmVVbml0VGVz
dHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlv
bmFsL2VzMmZUZXh0dXJlV3JhcFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmVGV4dHVyZVdyYXBUZXN0cy5ocHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlVuaWZv
cm1BcGlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMy
L2Z1bmN0aW9uYWwvZXMyZlVuaWZvcm1BcGlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlZlcnRleEFycmF5VGVzdC5jcHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMy
ZlZlcnRleEFycmF5VGVzdC5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlZlcnRleFRleHR1cmVUZXN0cy5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlZlcnRleFRleHR1
cmVUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3Bl
cmZvcm1hbmNlL2VzMnBCbGVuZFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycEJsZW5kVGVzdHMuaHBwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwRHJhd0NhbGxC
YXRjaGluZ1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czIvcGVyZm9ybWFuY2UvZXMycERyYXdDYWxsQmF0Y2hpbmdUZXN0cy5ocHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBQZXJmb3JtYW5j
ZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVy
Zm9ybWFuY2UvZXMycFBlcmZvcm1hbmNlVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwUmVkdW5kYW50U3RhdGVDaGFuZ2VU
ZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZv
cm1hbmNlL2VzMnBSZWR1bmRhbnRTdGF0ZUNoYW5nZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFNoYWRlckNvbXBpbGF0
aW9uQ2FzZXMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9w
ZXJmb3JtYW5jZS9lczJwU2hhZGVyQ29tcGlsYXRpb25DYXNlcy5ocHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBTaGFkZXJDb21waWxl
clRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVy
Zm9ybWFuY2UvZXMycFNoYWRlckNvbXBpbGVyVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwU2hhZGVyQ29udHJvbFN0YXRl
bWVudFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
cGVyZm9ybWFuY2UvZXMycFNoYWRlckNvbnRyb2xTdGF0ZW1lbnRUZXN0cy5ocHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBTaGFkZXJP
cGVyYXRvclRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czIvcGVyZm9ybWFuY2UvZXMycFNoYWRlck9wZXJhdG9yVGVzdHMuaHBwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwU2hhZGVyT3B0aW1p
emF0aW9uVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9wZXJmb3JtYW5jZS9lczJwU2hhZGVyT3B0aW1pemF0aW9uVGVzdHMuaHBwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwU3RhdGVDaGFu
Z2VDYWxsVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9wZXJmb3JtYW5jZS9lczJwU3RhdGVDaGFuZ2VDYWxsVGVzdHMuaHBwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwU3RhdGVDaGFuZ2VU
ZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZv
cm1hbmNlL2VzMnBTdGF0ZUNoYW5nZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFRleHR1cmVDYXNlcy5jcHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBUZXh0
dXJlQ2FzZXMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9w
ZXJmb3JtYW5jZS9lczJwVGV4dHVyZUNvdW50VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwVGV4dHVyZUNvdW50VGVzdHMu
aHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5j
ZS9lczJwVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFRleHR1cmVGaWx0ZXJpbmdUZXN0cy5o
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNl
L2VzMnBUZXh0dXJlRm9ybWF0VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwVGV4dHVyZUZvcm1hdFRlc3RzLmhwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFRl
eHR1cmVVcGxvYWRUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBUZXh0dXJlVXBsb2FkVGVzdHMuaHBwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9zdHJlc3MvZXMyc0RyYXdUZXN0cy5jcHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3N0cmVzcy9lczJzRHJh
d1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvc3Ry
ZXNzL2VzMnNMb25nUnVubmluZ1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvc3RyZXNzL2VzMnNMb25nUnVubmluZ1Rlc3RzLmhwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvc3RyZXNzL2VzMnNNZW1vcnlUZXN0cy5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3N0cmVzcy9lczJz
TWVtb3J5VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9zdHJlc3MvZXMyc1NwZWNpYWxGbG9hdFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczIvc3RyZXNzL2VzMnNTcGVjaWFsRmxvYXRUZXN0cy5ocHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3N0cmVzcy9lczJzU3RyZXNz
VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9zdHJl
c3MvZXMyc1N0cmVzc1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczIvc3RyZXNzL2VzMnNWZXJ0ZXhBcnJheVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvc3RyZXNzL2VzMnNWZXJ0ZXhBcnJheVRlc3RzLmhw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvdGVzMkNhcGFiaWxp
dHlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3Rl
czJDYXBhYmlsaXR5VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMi90ZXMyQ29udGV4dC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMyL3RlczJDb250ZXh0LmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczIvdGVzMkluZm9UZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMyL3RlczJJbmZvVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMi90ZXMyVGVzdENhc2UuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMi90ZXMyVGVzdENhc2UuaHBwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi90ZXMyVGVzdFBhY2thZ2UuY3BwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi90ZXMyVGVzdFBhY2thZ2UuaHBwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi90ZXMyVGVzdFBhY2thZ2VFbnRy
eS5jcHAnLAotICAgICAgICBdLAotICAgICAgICAnZGVxcF9nbGVzM19zb3VyY2VzJzoKLSAgICAg
ICAgWwotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2FjY3VyYWN5L2Vz
M2FBY2N1cmFjeVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvYWNjdXJhY3kvZXMzYUFjY3VyYWN5VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9hY2N1cmFjeS9lczNhVGV4dHVyZUZpbHRlcmluZ1Rlc3Rz
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvYWNjdXJhY3kv
ZXMzYVRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL2FjY3VyYWN5L2VzM2FUZXh0dXJlTWlwbWFwVGVzdHMuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9hY2N1cmFjeS9lczNhVGV4dHVy
ZU1pcG1hcFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvYWNjdXJhY3kvZXMzYVZhcnlpbmdJbnRlcnBvbGF0aW9uVGVzdHMuY3BwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9hY2N1cmFjeS9lczNhVmFyeWluZ0ludGVy
cG9sYXRpb25UZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzL2Z1bmN0aW9uYWwvZXMzZkFwaUNhc2UuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZBcGlDYXNlLmhwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQVNUQ0RlY29tcHJl
c3Npb25DYXNlcy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
L2Z1bmN0aW9uYWwvZXMzZkFTVENEZWNvbXByZXNzaW9uQ2FzZXMuaHBwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZBdHRyaWJMb2NhdGlv
blRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVu
Y3Rpb25hbC9lczNmQXR0cmliTG9jYXRpb25UZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkJsZW5kVGVzdHMuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZCbGVu
ZFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVu
Y3Rpb25hbC9lczNmQm9vbGVhblN0YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkJvb2xlYW5TdGF0ZVF1ZXJ5
VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5j
dGlvbmFsL2VzM2ZCdWZmZXJDb3B5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZCdWZmZXJDb3B5VGVzdHMuaHBwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZCdWZm
ZXJNYXBUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
L2Z1bmN0aW9uYWwvZXMzZkJ1ZmZlck1hcFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQnVmZmVyT2JqZWN0UXVlcnlUZXN0
cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9u
YWwvZXMzZkJ1ZmZlck9iamVjdFF1ZXJ5VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZCdWZmZXJXcml0ZVRlc3RzLmNwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNm
QnVmZmVyV3JpdGVUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkJ1aWx0aW5QcmVjaXNpb25UZXN0cy5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkJ1aWx0aW5Q
cmVjaXNpb25UZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzL2Z1bmN0aW9uYWwvZXMzZkNsaXBwaW5nVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZDbGlwcGluZ1Rlc3RzLmhwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNm
Q29sb3JDbGVhclRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9mdW5jdGlvbmFsL2VzM2ZDb2xvckNsZWFyVGVzdC5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkNvbXByZXNzZWRUZXh0dXJl
VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5j
dGlvbmFsL2VzM2ZDb21wcmVzc2VkVGV4dHVyZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRGVmYXVsdFZlcnRleEFycmF5
T2JqZWN0VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
My9mdW5jdGlvbmFsL2VzM2ZEZWZhdWx0VmVydGV4QXJyYXlPYmplY3RUZXN0cy5ocHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkRlZmF1
bHRWZXJ0ZXhBdHRyaWJ1dGVUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkRlZmF1bHRWZXJ0ZXhBdHRyaWJ1dGVUZXN0cy5o
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwv
ZXMzZkRlcHRoU3RlbmNpbENsZWFyVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZEZXB0aFN0ZW5jaWxDbGVhclRlc3RzLmhw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmRGVwdGhTdGVuY2lsVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZEZXB0aFN0ZW5jaWxUZXN0cy5ocHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkRlcHRoVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZEZXB0aFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRGl0aGVyaW5nVGVzdHMuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZEaXRoZXJpbmdUZXN0
cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9u
YWwvZXMzZkRyYXdUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkRyYXdUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZib0FwaVRlc3RzLmNwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJv
QXBpVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9m
dW5jdGlvbmFsL2VzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvQ29sb3JidWZmZXJUZXN0
cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9u
YWwvZXMzZkZib0NvbXBsZXRlbmVzc1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvQ29tcGxldGVuZXNzVGVzdHMuaHBw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2Vz
M2ZGYm9EZXB0aGJ1ZmZlclRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvRGVwdGhidWZmZXJUZXN0cy5ocHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZib0lu
dmFsaWRhdGVUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzL2Z1bmN0aW9uYWwvZXMzZkZib0ludmFsaWRhdGVUZXN0cy5ocHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZib011bHRpc2FtcGxl
VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5j
dGlvbmFsL2VzM2ZGYm9NdWx0aXNhbXBsZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvUmVuZGVyVGVzdC5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZi
b1JlbmRlclRlc3QuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
My9mdW5jdGlvbmFsL2VzM2ZGYm9TdGF0ZVF1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGYm9TdGF0ZVF1ZXJ5VGVz
dHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZGYm9TdGVuY2lsYnVmZmVyVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGYm9TdGVuY2lsYnVmZmVyVGVzdHMu
aHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFs
L2VzM2ZGYm9UZXN0Q2FzZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZib1Rlc3RDYXNlLmhwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvVGVzdFV0aWwuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZG
Ym9UZXN0VXRpbC5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
L2Z1bmN0aW9uYWwvZXMzZkZsb2F0U3RhdGVRdWVyeVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmxvYXRTdGF0ZVF1ZXJ5
VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5j
dGlvbmFsL2VzM2ZGbHVzaEZpbmlzaFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmx1c2hGaW5pc2hUZXN0cy5ocHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZy
YWdEZXB0aFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvZnVuY3Rpb25hbC9lczNmRnJhZ0RlcHRoVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGcmFnbWVudE91dHB1dFRlc3Rz
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmRnJhZ21lbnRPdXRwdXRUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZyYWdPcEludGVyYWN0aW9uVGVzdHMuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2Vz
M2ZGcmFnT3BJbnRlcmFjdGlvblRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRnJhbWVidWZmZXJCbGl0VGVzdHMuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZG
cmFtZWJ1ZmZlckJsaXRUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZ1bmN0aW9uYWxUZXN0cy5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZ1bmN0aW9uYWxU
ZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0
aW9uYWwvZXMzZkltcGxlbWVudGF0aW9uTGltaXRUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkltcGxlbWVudGF0aW9uTGlt
aXRUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1
bmN0aW9uYWwvZXMzZkluZGV4ZWRTdGF0ZVF1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZJbmRleGVkU3RhdGVRdWVy
eVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVu
Y3Rpb25hbC9lczNmSW5zdGFuY2VkUmVuZGVyaW5nVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZJbnN0YW5jZWRSZW5kZXJp
bmdUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1
bmN0aW9uYWwvZXMzZkludGVnZXI2NFN0YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkludGVnZXI2NFN0YXRl
UXVlcnlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
L2Z1bmN0aW9uYWwvZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZJbnRlZ2VyU3RhdGVR
dWVyeVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmSW50ZXJuYWxGb3JtYXRRdWVyeVRlc3RzLmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmSW50ZXJuYWxGb3Jt
YXRRdWVyeVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvZnVuY3Rpb25hbC9lczNmTGlmZXRpbWVUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkxpZmV0aW1lVGVzdHMuaHBwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZN
dWx0aXNhbXBsZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvZnVuY3Rpb25hbC9lczNmTXVsdGlzYW1wbGVUZXN0cy5ocHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZk5lZ2F0aXZlQnVmZmVy
QXBpVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9m
dW5jdGlvbmFsL2VzM2ZOZWdhdGl2ZUJ1ZmZlckFwaVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmTmVnYXRpdmVGcmFnbWVu
dEFwaVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmTmVnYXRpdmVGcmFnbWVudEFwaVRlc3RzLmhwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmTmVnYXRpdmVTaGFk
ZXJBcGlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
L2Z1bmN0aW9uYWwvZXMzZk5lZ2F0aXZlU2hhZGVyQXBpVGVzdHMuaHBwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZOZWdhdGl2ZVN0YXRl
QXBpVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9m
dW5jdGlvbmFsL2VzM2ZOZWdhdGl2ZVN0YXRlQXBpVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZOZWdhdGl2ZVRleHR1cmVB
cGlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1
bmN0aW9uYWwvZXMzZk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmTmVnYXRpdmVWZXJ0ZXhB
cnJheUFwaVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvZnVuY3Rpb25hbC9lczNmTmVnYXRpdmVWZXJ0ZXhBcnJheUFwaVRlc3RzLmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmT2NjbHVz
aW9uUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzL2Z1bmN0aW9uYWwvZXMzZk9jY2x1c2lvblF1ZXJ5VGVzdHMuaHBwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZQaXhlbEJ1ZmZlck9i
amVjdFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmUGl4ZWxCdWZmZXJPYmplY3RUZXN0cy5ocHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlBvbHlnb25PZmZzZXRU
ZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0
aW9uYWwvZXMzZlBvbHlnb25PZmZzZXRUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlByZXJlcXVpc2l0ZVRlc3RzLmNwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNm
UHJlcmVxdWlzaXRlVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZQcmltaXRpdmVSZXN0YXJ0VGVzdHMuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZQcmltaXRp
dmVSZXN0YXJ0VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9mdW5jdGlvbmFsL2VzM2ZSYW5kb21GcmFnbWVudE9wVGVzdHMuY3BwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZSYW5kb21GcmFn
bWVudE9wVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
My9mdW5jdGlvbmFsL2VzM2ZSYW5kb21TaGFkZXJUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlJhbmRvbVNoYWRlclRlc3Rz
LmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmUmFzdGVyaXphdGlvblRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmUmFzdGVyaXphdGlvblRlc3RzLmhwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmUmFz
dGVyaXplckRpc2NhcmRUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlJhc3Rlcml6ZXJEaXNjYXJkVGVzdHMuaHBwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZSYm9T
dGF0ZVF1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9mdW5jdGlvbmFsL2VzM2ZSYm9TdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZSZWFkUGl4ZWxzVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZSZWFkUGl4ZWxzVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTYW1wbGVyT2JqZWN0VGVzdHMuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTYW1w
bGVyT2JqZWN0VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9mdW5jdGlvbmFsL2VzM2ZTYW1wbGVyU3RhdGVRdWVyeVRlc3RzLmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2FtcGxlclN0
YXRlUXVlcnlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzL2Z1bmN0aW9uYWwvZXMzZlNjaXNzb3JUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNjaXNzb3JUZXN0cy5ocHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNo
YWRlckFwaVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvZnVuY3Rpb25hbC9lczNmU2hhZGVyQXBpVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJCdWlsdGluVmFyVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZTaGFkZXJCdWlsdGluVmFyVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJDb21tb25GdW5jdGlvblRl
c3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckNvbnN0RXhwclRl
c3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmU2hhZGVyQ29uc3RFeHByVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJEZXJpdmF0ZVRlc3RzLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmU2hhZGVyRGVyaXZhdGVUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckRpc2NhcmRUZXN0cy5jcHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRl
ckRpc2NhcmRUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckZyYWdEYXRhVGVzdHMuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJGcmFnRGF0
YVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVu
Y3Rpb25hbC9lczNmU2hhZGVySW5kZXhpbmdUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckluZGV4aW5nVGVzdHMu
aHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFs
L2VzM2ZTaGFkZXJJbnZhcmlhbmNlVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJJbnZhcmlhbmNlVGVzdHMuaHBw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2Vz
M2ZTaGFkZXJMb29wVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJMb29wVGVzdHMuaHBwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJNYXRyaXhU
ZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0
aW9uYWwvZXMzZlNoYWRlck1hdHJpeFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyT3BlcmF0b3JUZXN0cy5jcHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMz
ZlNoYWRlck9wZXJhdG9yVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5jcHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMz
ZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyUHJlY2lzaW9uVGVzdHMuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2Vz
M2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlclJldHVyblRlc3RzLmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVy
UmV0dXJuVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
My9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJTdGF0ZVF1
ZXJ5VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9m
dW5jdGlvbmFsL2VzM2ZTaGFkZXJTdHJ1Y3RUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlclN0cnVjdFRlc3RzLmhw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmU2hhZGVyU3dpdGNoVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJTd2l0Y2hUZXN0cy5ocHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlclRl
eHR1cmVGdW5jdGlvblRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyVGV4dHVyZUZ1bmN0aW9uVGVzdHMuaHBwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZT
dGVuY2lsVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
My9mdW5jdGlvbmFsL2VzM2ZTdGVuY2lsVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTdHJpbmdRdWVyeVRlc3RzLmNwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNm
U3RyaW5nUXVlcnlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlN5bmNUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlN5bmNUZXN0cy5ocHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRleHR1
cmVGaWx0ZXJpbmdUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5ocHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRleHR1cmVG
b3JtYXRUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
L2Z1bmN0aW9uYWwvZXMzZlRleHR1cmVGb3JtYXRUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRleHR1cmVNaXBtYXBUZXN0
cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9u
YWwvZXMzZlRleHR1cmVNaXBtYXBUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRleHR1cmVTaGFkb3dUZXN0cy5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRl
eHR1cmVTaGFkb3dUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRleHR1cmVTaXplVGVzdHMuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJlU2l6ZVRl
c3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRleHR1cmVTcGVjaWZpY2F0
aW9uVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9m
dW5jdGlvbmFsL2VzM2ZUZXh0dXJlU3RhdGVRdWVyeVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmVGV4dHVyZVN0YXRlUXVl
cnlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1
bmN0aW9uYWwvZXMzZlRleHR1cmVTd2l6emxlVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJlU3dpenpsZVRlc3Rz
LmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmVGV4dHVyZVVuaXRUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRleHR1cmVVbml0VGVzdHMuaHBwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJl
V3JhcFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmVGV4dHVyZVdyYXBUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRyYW5zZm9ybUZlZWRiYWNrVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZUcmFuc2Zvcm1GZWVkYmFja1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmVW5pZm9ybUFwaVRlc3RzLmNwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNm
VW5pZm9ybUFwaVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvZnVuY3Rpb25hbC9lczNmVW5pZm9ybUJsb2NrVGVzdHMuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZVbmlmb3JtQmxvY2tU
ZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0
aW9uYWwvZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZWZXJ0ZXhBcnJheU9iamVjdFRl
c3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmVmVydGV4QXJyYXlUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmVmVydGV4QXJyYXlUZXN0LmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmVmVydGV4
VGV4dHVyZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvZnVuY3Rpb25hbC9lczNmVmVydGV4VGV4dHVyZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcEJsZW5kVGVzdHMuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9l
czNwQmxlbmRUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzL3BlcmZvcm1hbmNlL2VzM3BCdWZmZXJEYXRhVXBsb2FkVGVzdHMuY3BwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwQnVmZmVyRGF0
YVVwbG9hZFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvcGVyZm9ybWFuY2UvZXMzcERlcHRoVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwRGVwdGhUZXN0cy5ocHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BQZXJm
b3JtYW5jZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvcGVyZm9ybWFuY2UvZXMzcFBlcmZvcm1hbmNlVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwUmVkdW5kYW50U3RhdGVD
aGFuZ2VUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
L3BlcmZvcm1hbmNlL2VzM3BSZWR1bmRhbnRTdGF0ZUNoYW5nZVRlc3RzLmhwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFNoYWRlckNv
bXBpbGF0aW9uQ2FzZXMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9wZXJmb3JtYW5jZS9lczNwU2hhZGVyQ29tcGlsYXRpb25DYXNlcy5ocHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BTaGFkZXJD
b21waWxlclRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvcGVyZm9ybWFuY2UvZXMzcFNoYWRlckNvbXBpbGVyVGVzdHMuaHBwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwU2hhZGVyQ29udHJv
bFN0YXRlbWVudFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvcGVyZm9ybWFuY2UvZXMzcFNoYWRlckNvbnRyb2xTdGF0ZW1lbnRUZXN0cy5ocHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BT
aGFkZXJPcGVyYXRvclRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFNoYWRlck9wZXJhdG9yVGVzdHMuaHBwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwU2hhZGVy
T3B0aW1pemF0aW9uVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwU2hhZGVyT3B0aW1pemF0aW9uVGVzdHMuaHBwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwU3Rh
dGVDaGFuZ2VDYWxsVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwU3RhdGVDaGFuZ2VDYWxsVGVzdHMuaHBwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwU3RhdGVD
aGFuZ2VUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
L3BlcmZvcm1hbmNlL2VzM3BTdGF0ZUNoYW5nZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFRleHR1cmVDYXNlcy5jcHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2Vz
M3BUZXh0dXJlQ2FzZXMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9wZXJmb3JtYW5jZS9lczNwVGV4dHVyZUNvdW50VGVzdHMuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwVGV4dHVyZUNvdW50
VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJm
b3JtYW5jZS9lczNwVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFRleHR1cmVGaWx0ZXJpbmdU
ZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZv
cm1hbmNlL2VzM3BUZXh0dXJlRm9ybWF0VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwVGV4dHVyZUZvcm1hdFRlc3RzLmhw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvc3RyZXNzL2VzM3NE
cmF3VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9z
dHJlc3MvZXMzc0RyYXdUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzL3N0cmVzcy9lczNzTG9uZ1J1bm5pbmdTaGFkZXJUZXN0cy5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNzTG9uZ1J1bm5pbmdT
aGFkZXJUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
L3N0cmVzcy9lczNzTG9uZ1J1bm5pbmdUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNzTG9uZ1J1bm5pbmdUZXN0cy5ocHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNzTG9uZ1NoYWRl
clRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvc3Ry
ZXNzL2VzM3NMb25nU2hhZGVyVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMzc01lbW9yeVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvc3RyZXNzL2VzM3NNZW1vcnlUZXN0cy5ocHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNzT2NjbHVz
aW9uUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzL3N0cmVzcy9lczNzT2NjbHVzaW9uUXVlcnlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNzU3BlY2lhbEZsb2F0VGVzdHMuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMzc1Nw
ZWNpYWxGbG9hdFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvc3RyZXNzL2VzM3NTdHJlc3NUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNzU3RyZXNzVGVzdHMuaHBwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMzc1N5bmNUZXN0cy5jcHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNzU3lu
Y1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvc3Ry
ZXNzL2VzM3NWZXJ0ZXhBcnJheVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvc3RyZXNzL2VzM3NWZXJ0ZXhBcnJheVRlc3RzLmhwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvdGVzM0NvbnRleHQuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy90ZXMzQ29udGV4dC5ocHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3RlczNJbmZvVGVzdHMuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy90ZXMzSW5mb1Rlc3RzLmhw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvdGVzM1Rlc3RDYXNl
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvdGVzM1Rlc3RD
YXNlLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvdGVzM1Rl
c3RQYWNrYWdlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
dGVzM1Rlc3RQYWNrYWdlLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvdGVzM1Rlc3RQYWNrYWdlRW50cnkuY3BwJywKLSAgICAgICAgXSwKLSAgICAgICAgJ2Rl
cXBfZ2xlczMxX3NvdXJjZXMnOgotICAgICAgICBbCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZBZHZhbmNlZEJsZW5kVGVzdHMuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMx
ZkFkdmFuY2VkQmxlbmRUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmQW5kcm9pZEV4dGVuc2lvblBhY2tFUzMxQVRlc3Rz
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9u
YWwvZXMzMWZBbmRyb2lkRXh0ZW5zaW9uUGFja0VTMzFBVGVzdHMuaHBwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkF0b21pY0NvdW50
ZXJUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9m
dW5jdGlvbmFsL2VzMzFmQXRvbWljQ291bnRlclRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZCYXNpY0NvbXB1dGVTaGFk
ZXJUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9m
dW5jdGlvbmFsL2VzMzFmQmFzaWNDb21wdXRlU2hhZGVyVGVzdHMuaHBwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkJvb2xlYW5TdGF0
ZVF1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
MzEvZnVuY3Rpb25hbC9lczMxZkJvb2xlYW5TdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkJ1aWx0aW5Q
cmVjaXNpb25UZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzMS9mdW5jdGlvbmFsL2VzMzFmQnVpbHRpblByZWNpc2lvblRlc3RzLmhwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZDb21wdXRl
U2hhZGVyQnVpbHRpblZhclRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZDb21wdXRlU2hhZGVyQnVpbHRpblZhclRlc3Rz
LmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9u
YWwvZXMzMWZDb3B5SW1hZ2VUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmQ29weUltYWdlVGVzdHMuaHBwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkRlYnVn
VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVu
Y3Rpb25hbC9lczMxZkRlYnVnVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkRlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdFRl
c3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZEZWZhdWx0VmVydGV4QXJyYXlPYmplY3RUZXN0cy5ocHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmRHJhd0J1ZmZl
cnNJbmRleGVkVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMzEvZnVuY3Rpb25hbC9lczMxZkRyYXdCdWZmZXJzSW5kZXhlZFRlc3RzLmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZEcmF3
VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVu
Y3Rpb25hbC9lczMxZkRyYXdUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmRmJvQ29sb3JidWZmZXJUZXN0cy5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFm
RmJvQ29sb3JidWZmZXJUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmRmJvTm9BdHRhY2htZW50VGVzdHMuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkZi
b05vQXR0YWNobWVudFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZGYm9UZXN0Q2FzZS5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmRmJvVGVzdENhc2Uu
aHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25h
bC9lczMxZkZib1Rlc3RVdGlsLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZGYm9UZXN0VXRpbC5ocHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmRnJhbWVidWZmZXJE
ZWZhdWx0U3RhdGVRdWVyeVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZGcmFtZWJ1ZmZlckRlZmF1bHRTdGF0ZVF1ZXJ5
VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVu
Y3Rpb25hbC9lczMxZkZ1bmN0aW9uYWxUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmRnVuY3Rpb25hbFRlc3RzLmhwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMz
MWZHZW9tZXRyeVNoYWRlclRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZHZW9tZXRyeVNoYWRlclRlc3RzLmhwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZJ
bmRleGVkU3RhdGVRdWVyeVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZJbmRleGVkU3RhdGVRdWVyeVRlc3RzLmhwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMz
MWZJbmRpcmVjdENvbXB1dGVEaXNwYXRjaFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZJbmRpcmVjdENvbXB1dGVEaXNw
YXRjaFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMx
L2Z1bmN0aW9uYWwvZXMzMWZJbmZvTG9nUXVlcnlTaGFyZWQuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkluZm9Mb2dRdWVyeVNo
YXJlZC5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5j
dGlvbmFsL2VzMzFmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmSW50ZWdlclN0YXRlUXVl
cnlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9m
dW5jdGlvbmFsL2VzMzFmSW50ZXJuYWxGb3JtYXRRdWVyeVRlc3RzLmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZJbnRlcm5hbEZv
cm1hdFF1ZXJ5VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMzEvZnVuY3Rpb25hbC9lczMxZkxheW91dEJpbmRpbmdUZXN0cy5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTGF5b3V0Qmlu
ZGluZ1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMx
L2Z1bmN0aW9uYWwvZXMzMWZNdWx0aXNhbXBsZVNoYWRlclJlbmRlckNhc2UuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk11bHRp
c2FtcGxlU2hhZGVyUmVuZGVyQ2FzZS5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTXVsdGlzYW1wbGVUZXN0cy5jcHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTXVs
dGlzYW1wbGVUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVBZHZhbmNlZEJsZW5kRXF1YXRpb25UZXN0cy5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFs
L2VzMzFmTmVnYXRpdmVBZHZhbmNlZEJsZW5kRXF1YXRpb25UZXN0cy5ocHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVB
dG9taWNDb3VudGVyVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlQXRvbWljQ291bnRlclRlc3RzLmhwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMz
MWZOZWdhdGl2ZUJ1ZmZlckFwaVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZUJ1ZmZlckFwaVRlc3RzLmhw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwv
ZXMzMWZOZWdhdGl2ZUZyYWdtZW50QXBpVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlRnJhZ21lbnRBcGlU
ZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5j
dGlvbmFsL2VzMzFmTmVnYXRpdmVQcmVjaXNlVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlUHJlY2lzZVRl
c3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZOZWdhdGl2ZVNoYWRlckFwaVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVNoYWRlckFw
aVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1
bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVNoYWRlckRpcmVjdGl2ZVRlc3RzLmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2
ZVNoYWRlckRpcmVjdGl2ZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVNoYWRlckZ1bmN0aW9uVGVzdHMu
Y3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25h
bC9lczMxZk5lZ2F0aXZlU2hhZGVyRnVuY3Rpb25UZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVTaGFkZXJJ
bWFnZUxvYWRTdG9yZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVNoYWRlckltYWdlTG9hZFN0b3JlVGVz
dHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rp
b25hbC9lczMxZk5lZ2F0aXZlU3RhdGVBcGlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVTdGF0ZUFwaVRl
c3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZOZWdhdGl2ZVRlc3RTaGFyZWQuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlVGVzdFNoYXJlZC5o
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFs
L2VzMzFmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlVGV4dHVyZUFwaVRl
c3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZOZWdhdGl2ZVZlcnRleEFycmF5QXBpVGVzdHMuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlVmVy
dGV4QXJyYXlBcGlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmT3BhcXVlVHlwZUluZGV4aW5nVGVzdHMuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk9w
YXF1ZVR5cGVJbmRleGluZ1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZQcmltaXRpdmVCb3VuZGluZ0JveFRlc3RzLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwv
ZXMzMWZQcmltaXRpdmVCb3VuZGluZ0JveFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZQcm9ncmFtSW50ZXJmYWNlRGVm
aW5pdGlvbi5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9m
dW5jdGlvbmFsL2VzMzFmUHJvZ3JhbUludGVyZmFjZURlZmluaXRpb24uaHBwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlByb2dyYW1J
bnRlcmZhY2VEZWZpbml0aW9uVXRpbC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmUHJvZ3JhbUludGVyZmFjZURlZmluaXRpb25V
dGlsLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZQcm9ncmFtSW50ZXJmYWNlUXVlcnlUZXN0Q2FzZS5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmUHJvZ3JhbUlu
dGVyZmFjZVF1ZXJ5VGVzdENhc2UuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlByb2dyYW1JbnRlcmZhY2VRdWVyeVRlc3RzLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwv
ZXMzMWZQcm9ncmFtSW50ZXJmYWNlUXVlcnlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmUHJvZ3JhbVBpcGVsaW5lU3Rh
dGVRdWVyeVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZQcm9ncmFtUGlwZWxpbmVTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMx
ZlByb2dyYW1TdGF0ZVF1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlByb2dyYW1TdGF0ZVF1ZXJ5VGVzdHMuaHBw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9l
czMxZlByb2dyYW1Vbmlmb3JtVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlByb2dyYW1Vbmlmb3JtVGVzdHMuaHBwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMx
ZlNTQk9BcnJheUxlbmd0aFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTU0JPQXJyYXlMZW5ndGhUZXN0cy5ocHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFm
U1NCT0xheW91dENhc2UuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMzEvZnVuY3Rpb25hbC9lczMxZlNTQk9MYXlvdXRDYXNlLmhwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTU0JPTGF5b3V0VGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rp
b25hbC9lczMxZlNTQk9MYXlvdXRUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2FtcGxlU2hhZGluZ1Rlc3RzLmNwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMz
MWZTYW1wbGVTaGFkaW5nVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNhbXBsZVZhcmlhYmxlVGVzdHMuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNh
bXBsZVZhcmlhYmxlVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNhbXBsZXJTdGF0ZVF1ZXJ5VGVzdHMuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNh
bXBsZXJTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNlcGFyYXRlU2hhZGVyVGVzdHMuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNl
cGFyYXRlU2hhZGVyVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNoYWRlckF0b21pY09wVGVzdHMuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNoYWRl
ckF0b21pY09wVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMzEvZnVuY3Rpb25hbC9lczMxZlNoYWRlckJ1aWx0aW5Db25zdGFudFRlc3RzLmNwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZT
aGFkZXJCdWlsdGluQ29uc3RhbnRUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0
cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlv
bmFsL2VzMzFmU2hhZGVyQ29tbW9uRnVuY3Rpb25UZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVySGVscGVySW52
b2NhdGlvblRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJIZWxwZXJJbnZvY2F0aW9uVGVzdHMuaHBwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNo
YWRlckltYWdlTG9hZFN0b3JlVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNoYWRlckltYWdlTG9hZFN0b3JlVGVzdHMu
aHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25h
bC9lczMxZlNoYWRlckludGVnZXJGdW5jdGlvblRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJJbnRlZ2VyRnVu
Y3Rpb25UZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
MS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVyTXVsdGlzYW1wbGVJbnRlcnBvbGF0aW9uU3RhdGVRdWVy
eVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1
bmN0aW9uYWwvZXMzMWZTaGFkZXJNdWx0aXNhbXBsZUludGVycG9sYXRpb25TdGF0ZVF1ZXJ5VGVz
dHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rp
b25hbC9lczMxZlNoYWRlck11bHRpc2FtcGxlSW50ZXJwb2xhdGlvblRlc3RzLmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFk
ZXJNdWx0aXNhbXBsZUludGVycG9sYXRpb25UZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVyUGFja2luZ0Z1bmN0
aW9uVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEv
ZnVuY3Rpb25hbC9lczMxZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLmhwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJT
aGFyZWRWYXJUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVyU2hhcmVkVmFyVGVzdHMuaHBwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNoYWRlclN0
YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVyU3RhdGVRdWVyeVRlc3RzLmhwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJU
ZXh0dXJlU2l6ZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJUZXh0dXJlU2l6ZVRlc3RzLmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTdGVu
Y2lsVGV4dHVyaW5nVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlN0ZW5jaWxUZXh0dXJpbmdUZXN0cy5ocHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU3lu
Y2hyb25pemF0aW9uVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlN5bmNocm9uaXphdGlvblRlc3RzLmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZUZXNz
ZWxsYXRpb25HZW9tZXRyeUludGVyYWN0aW9uVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlRlc3NlbGxhdGlvbkdlb21l
dHJ5SW50ZXJhY3Rpb25UZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGVzc2VsbGF0aW9uVGVzdHMuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlRlc3Nl
bGxhdGlvblRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZUZXh0dXJlQm9yZGVyQ2xhbXBUZXN0cy5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVy
ZUJvcmRlckNsYW1wVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlRleHR1cmVCdWZmZXJUZXN0cy5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVy
ZUJ1ZmZlclRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuY3BwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlRleHR1cmVG
aWx0ZXJpbmdUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVyZUZvcm1hdFRlc3RzLmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZUZXh0dXJlRm9y
bWF0VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEv
ZnVuY3Rpb25hbC9lczMxZlRleHR1cmVHYXRoZXJUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVyZUdhdGhlclRl
c3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZUZXh0dXJlTGV2ZWxTdGF0ZVF1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlRleHR1cmVMZXZl
bFN0YXRlUXVlcnlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVyZU11bHRpc2FtcGxlVGVzdHMuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlRl
eHR1cmVNdWx0aXNhbXBsZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwv
ZXMzMWZUZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZUZXh0dXJlU3RhdGVRdWVyeVRl
c3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZUZXh0dXJlU3RhdGVRdWVyeVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZVbmlmb3JtQmxvY2tUZXN0
cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlv
bmFsL2VzMzFmVW5pZm9ybUJsb2NrVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlVuaWZvcm1Mb2NhdGlvblRlc3RzLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwv
ZXMzMWZVbmlmb3JtTG9jYXRpb25UZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVmVydGV4QXR0cmlidXRlQmluZGluZ1N0
YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzMS9mdW5jdGlvbmFsL2VzMzFmVmVydGV4QXR0cmlidXRlQmluZGluZ1N0YXRlUXVlcnlUZXN0
cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlv
bmFsL2VzMzFmVmVydGV4QXR0cmlidXRlQmluZGluZ1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZWZXJ0ZXhBdHRyaWJ1
dGVCaW5kaW5nVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMzEvc3RyZXNzL2VzMzFzRHJhd1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMxL3N0cmVzcy9lczMxc0RyYXdUZXN0cy5ocHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9zdHJlc3MvZXMzMXNTdHJlc3NUZXN0cy5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9zdHJlc3MvZXMz
MXNTdHJlc3NUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzMS9zdHJlc3MvZXMzMXNUZXNzZWxsYXRpb25HZW9tZXRyeUludGVyYWN0aW9uVGVzdHMuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvc3RyZXNzL2VzMzFz
VGVzc2VsbGF0aW9uR2VvbWV0cnlJbnRlcmFjdGlvblRlc3RzLmhwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL3N0cmVzcy9lczMxc1ZlcnRleEF0dHJpYnV0ZUJp
bmRpbmdUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
MS9zdHJlc3MvZXMzMXNWZXJ0ZXhBdHRyaWJ1dGVCaW5kaW5nVGVzdHMuaHBwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvdGVzMzFDb250ZXh0LmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL3RlczMxQ29udGV4dC5ocHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS90ZXMzMUluZm9UZXN0cy5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS90ZXMzMUluZm9U
ZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS90ZXMz
MVRlc3RDYXNlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMx
L3RlczMxVGVzdENhc2UuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMzEvdGVzMzFUZXN0UGFja2FnZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzMS90ZXMzMVRlc3RQYWNrYWdlLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMxL3RlczMxVGVzdFBhY2thZ2VFbnRyeS5jcHAnCi0gICAgICAg
IF0sCi0gICAgICAgICdkZXFwX2VnbF9zb3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQW5kcm9pZFV0aWwuY3BwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEFuZHJvaWRVdGlsLmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xBcGlDYXNlLmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xBcGlDYXNlLmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xCdWZmZXJBZ2VUZXN0cy5jcHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQnVmZmVyQWdlVGVz
dHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbENob29z
ZUNvbmZpZ1JlZmVyZW5jZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2VnbC90ZWdsQ2hvb3NlQ29uZmlnUmVmZXJlbmNlLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xDaG9vc2VDb25maWdUZXN0cy5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQ2hvb3NlQ29uZmlnVGVzdHMuaHBwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbENsaWVudEV4dGVuc2lv
blRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xD
bGllbnRFeHRlbnNpb25UZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2VnbC90ZWdsQ29sb3JDbGVhckNhc2UuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9lZ2wvdGVnbENvbG9yQ2xlYXJDYXNlLmhwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xDb2xvckNsZWFyVGVzdHMuY3BwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbENvbG9yQ2xlYXJUZXN0cy5ocHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQ29uZmlnTGlzdC5jcHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQ29uZmlnTGlzdC5o
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQ3JlYXRlQ29u
dGV4dEV4dFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWds
L3RlZ2xDcmVhdGVDb250ZXh0RXh0VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9lZ2wvdGVnbENyZWF0ZUNvbnRleHRUZXN0cy5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQ3JlYXRlQ29udGV4dFRlc3RzLmhwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xDcmVhdGVTdXJmYWNlVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbENyZWF0
ZVN1cmZhY2VUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2Vn
bC90ZWdsR2V0UHJvY0FkZHJlc3NUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2VnbC90ZWdsR2V0UHJvY0FkZHJlc3NUZXN0cy5ocHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsR0xFUzFSZW5kZXJVdGlsLmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xHTEVTMVJlbmRlclV0aWwuaHBw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEdMRVMyUmVuZGVy
VXRpbC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsR0xF
UzJSZW5kZXJVdGlsLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWds
L3RlZ2xHTEVTMlNoYXJlZFJlbmRlcmluZ1BlcmZUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsR0xFUzJTaGFyZWRSZW5kZXJpbmdQZXJmVGVzdHMu
aHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEdMRVMyU2hh
cmluZ1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3Rl
Z2xHTEVTMlNoYXJpbmdUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2VnbC90ZWdsR0xFUzJTaGFyaW5nVGhyZWFkZWRUZXN0cy5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsR0xFUzJTaGFyaW5nVGhyZWFkZWRUZXN0cy5o
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsSW1hZ2VGb3Jt
YXRUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWds
SW1hZ2VGb3JtYXRUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2VnbC90ZWdsSW1hZ2VUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2VnbC90ZWdsSW1hZ2VUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2VnbC90ZWdsSW1hZ2VVdGlsLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZWdsL3RlZ2xJbWFnZVV0aWwuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9lZ2wvdGVnbEluZm9UZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2VnbC90ZWdsSW5mb1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xNYWtlQ3VycmVudFBlcmZUZXN0cy5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsTWFrZUN1cnJlbnRQZXJmVGVzdHMu
aHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE1lbW9yeVN0
cmVzc1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3Rl
Z2xNZW1vcnlTdHJlc3NUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2VnbC90ZWdsTXVsdGlDb250ZXh0VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE11bHRpQ29udGV4dFRlc3RzLmhwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xNdWx0aVRocmVhZFRlc3RzLmNwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xNdWx0aVRocmVhZFRlc3Rz
LmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xOYXRpdmVD
b2xvck1hcHBpbmdUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2VnbC90ZWdsTmF0aXZlQ29sb3JNYXBwaW5nVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE5hdGl2ZUNvb3JkTWFwcGluZ1Rlc3RzLmNwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xOYXRpdmVDb29yZE1hcHBp
bmdUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWds
TmVnYXRpdmVBcGlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2VnbC90ZWdsTmVnYXRpdmVBcGlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2VnbC90ZWdsTmVnYXRpdmVQYXJ0aWFsVXBkYXRlVGVzdHMuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE5lZ2F0aXZlUGFydGlhbFVwZGF0
ZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xQ
cmVzZXJ2aW5nU3dhcFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZWdsL3RlZ2xQcmVzZXJ2aW5nU3dhcFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xQYXJ0aWFsVXBkYXRlVGVzdHMuY3BwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFBhcnRpYWxVcGRhdGVUZXN0cy5ocHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsUXVlcnlDb25maWdU
ZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsUXVl
cnlDb25maWdUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2Vn
bC90ZWdsUXVlcnlDb250ZXh0VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9lZ2wvdGVnbFF1ZXJ5Q29udGV4dFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xRdWVyeVN1cmZhY2VUZXN0cy5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsUXVlcnlTdXJmYWNlVGVzdHMuaHBw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFJlbmRlckNhc2Uu
Y3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFJlbmRlckNh
c2UuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFJlbmRl
clRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xS
ZW5kZXJUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90
ZWdsUmVzaXplVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9l
Z2wvdGVnbFJlc2l6ZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZWdsL3RlZ2xTaW1wbGVDb25maWdDYXNlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZWdsL3RlZ2xTaW1wbGVDb25maWdDYXNlLmhwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xTdXJmYWNlbGVzc0NvbnRleHRUZXN0cy5jcHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsU3VyZmFjZWxlc3ND
b250ZXh0VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wv
dGVnbFN3YXBCdWZmZXJzVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9lZ2wvdGVnbFN3YXBCdWZmZXJzVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFN3YXBCdWZmZXJzV2l0aERhbWFnZVRlc3RzLmNwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xTd2FwQnVmZmVyc1dpdGhE
YW1hZ2VUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90
ZWdsU3luY1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWds
L3RlZ2xTeW5jVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9l
Z2wvdGVnbFRlc3RDYXNlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
ZWdsL3RlZ2xUZXN0Q2FzZS5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2VnbC90ZWdsVGVzdFBhY2thZ2UuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9lZ2wvdGVnbFRlc3RQYWNrYWdlLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZWdsL3RlZ2xUZXN0UGFja2FnZUVudHJ5LmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xWR1JlbmRlclV0aWwuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFZHUmVuZGVyVXRpbC5ocHAnLAotICAgICAg
ICBdLAotICAgICAgICAnZGVxcF9saWJ0ZXN0ZXJfZGVjcHBfc291cmNlcyc6Ci0gICAgICAgIFsK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZUFycmF5
QnVmZmVyLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMv
ZGVjcHAvZGVCbG9ja0J1ZmZlci5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFt
ZXdvcmsvZGVsaWJzL2RlY3BwL2RlQ29tbWFuZExpbmUuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZURlZnMuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZURpcmVjdG9yeUl0ZXJhdG9y
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAv
ZGVEeW5hbWljTGlicmFyeS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdv
cmsvZGVsaWJzL2RlY3BwL2RlRmlsZVBhdGguY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZU1lbVBvb2wuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZU11dGV4LmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVQb29sQXJyYXkuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZVBv
b2xTdHJpbmcuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGli
cy9kZWNwcC9kZVByb2Nlc3MuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3
b3JrL2RlbGlicy9kZWNwcC9kZVJhbmRvbS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlUmluZ0J1ZmZlci5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlU2VtYXBob3JlLmNwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVTaGFyZWRQ
dHIuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNw
cC9kZVNoYTEuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGli
cy9kZWNwcC9kZVNvY2tldC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdv
cmsvZGVsaWJzL2RlY3BwL2RlU1RMVXRpbC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlU3RyaW5nVXRpbC5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlVGhyZWFkLmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVUaHJlYWRMb2Nh
bC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlY3Bw
L2RlVGhyZWFkU2FmZVJpbmdCdWZmZXIuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
ZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZVVuaXF1ZVB0ci5jcHAnLAotICAgICAgICBdLAotICAg
ICAgICAnZGVxcF9saWJ0ZXN0ZXJfc291cmNlcyc6Ci0gICAgICAgIFsKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZXhlY3NlcnZlci94c0RlZnMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvZXhlY3NlcnZlci94c0V4ZWN1dGlvblNlcnZlci5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9leGVjc2VydmVyL3hzUG9zaXhGaWxlUmVhZGVyLmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL2V4ZWNzZXJ2ZXIveHNQb3NpeFRlc3RQcm9jZXNzLmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2V4ZWNzZXJ2ZXIveHNQcm90b2NvbC5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9leGVjc2VydmVyL3hzVGNwU2VydmVyLmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2V4ZWNzZXJ2ZXIveHNUZXN0RHJpdmVyLmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2V4ZWNzZXJ2ZXIveHNUZXN0UHJvY2Vzcy5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9leGVjdXRvci94ZUJhdGNoRXhlY3V0b3IuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvZXhlY3V0b3IveGVCYXRjaFJlc3VsdC5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9leGVjdXRvci94ZUNhbGxRdWV1ZS5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9leGVjdXRvci94ZUNvbW1MaW5rLmNwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2V4ZWN1dG9yL3hlQ29udGFpbmVyRm9ybWF0UGFyc2VyLmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2V4ZWN1dG9yL3hlRGVmcy5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9leGVjdXRvci94ZUxvY2FsVGNwSXBMaW5rLmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL2V4ZWN1dG9yL3hlVGNwSXBMaW5rLmNwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2V4ZWN1dG9yL3hlVGVzdENhc2UuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvZXhlY3V0b3IveGVUZXN0Q2FzZUxpc3RQYXJzZXIuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvZXhlY3V0b3IveGVUZXN0Q2FzZVJlc3VsdC5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9leGVjdXRvci94ZVRlc3RMb2dQYXJzZXIuY3BwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvZXhlY3V0b3IveGVUZXN0TG9nV3JpdGVyLmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2V4ZWN1dG9yL3hlVGVzdFJlc3VsdFBhcnNlci5jcHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjdXRvci94ZVhNTFBhcnNlci5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9leGVjdXRvci94ZVhNTFdyaXRlci5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdUFwcC5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdUFzdGNVdGlsLmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1QmlsaW5lYXJJbWFnZUNv
bXBhcmUuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90
Y3VDb21tYW5kTGluZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsv
Y29tbW9uL3RjdUNvbXByZXNzZWRUZXh0dXJlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL2ZyYW1ld29yay9jb21tb24vdGN1Q1BVV2FybXVwLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1RGVmcy5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdUVpdGhlci5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdUZhY3RvcnlSZWdpc3RyeS5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdUZsb2F0Rm9ybWF0
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1RnVu
Y3Rpb25MaWJyYXJ5LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9j
b21tb24vdGN1RnV6enlJbWFnZUNvbXBhcmUuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VJbWFnZUNvbXBhcmUuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VJbWFnZUlPLmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1SW50ZXJ2YWwuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VQbGF0Zm9ybS5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVJhbmRvbVZhbHVl
SXRlcmF0b3IuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1v
bi90Y3VSZW5kZXJUYXJnZXQuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3
b3JrL2NvbW1vbi90Y3VSZXNvdXJjZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9m
cmFtZXdvcmsvY29tbW9uL3RjdVJlc3VsdENvbGxlY3Rvci5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVJHQkEuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VTdHJpbmdUZW1wbGF0ZS5jcHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVN1cmZhY2UuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VUZXN0Q2FzZS5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVRlc3RD
b250ZXh0LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24v
dGN1VGVzdEhpZXJhcmNoeUl0ZXJhdG9yLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L2ZyYW1ld29yay9jb21tb24vdGN1VGVzdEhpZXJhcmNoeVV0aWwuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VUZXN0TG9nLmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1VGVzdFBhY2thZ2UuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VUZXN0U2Vzc2lv
bkV4ZWN1dG9yLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21t
b24vdGN1VGV4Q29tcGFyZVZlcmlmaWVyLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L2ZyYW1ld29yay9jb21tb24vdGN1VGV4TG9va3VwVmVyaWZpZXIuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VUZXh0dXJlLmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1VGV4dHVyZVV0aWwuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VUZXhWZXJpZmll
clV0aWwuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90
Y3VUaHJlYWRVdGlsLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9j
b21tb24vdGN1U2VlZEJ1aWxkZXIuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL2RlbGlicy9kZWJhc2UvZGVEZWZzLmMnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvZGVsaWJzL2RlYmFzZS9kZUZsb2F0MTYuYycsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGViYXNlL2RlSW50MzIuYycsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGViYXNlL2RlSW50MzJUZXN0LmMnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlYmFzZS9kZU1hdGgu
YycsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGViYXNlL2Rl
TWVtb3J5LmMnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2Rl
YmFzZS9kZVJhbmRvbS5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2Rl
bGlicy9kZWJhc2UvZGVTdHJpbmcuYycsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1l
d29yay9kZWxpYnMvZGViYXNlL2RlU2hhMS5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
ZnJhbWV3b3JrL2RlbGlicy9kZWltYWdlL2RlSW1hZ2UuYycsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVpbWFnZS9kZVRhcmdhLmMnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlcG9vbC9kZU1lbVBvb2wuYycsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVwb29sL2RlUG9vbEFycmF5
LmMnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlcG9vbC9k
ZVBvb2xIYXNoQXJyYXkuYycsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9k
ZWxpYnMvZGVwb29sL2RlUG9vbEhhc2guYycsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9kZWxpYnMvZGVwb29sL2RlUG9vbEhhc2hTZXQuYycsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVwb29sL2RlUG9vbEhlYXAuYycsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVwb29sL2RlUG9vbE11bHRpU2V0
LmMnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlcG9vbC9k
ZVBvb2xTZXQuYycsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMv
ZGVwb29sL2RlUG9vbFN0cmluZ0J1aWxkZXIuYycsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L2ZyYW1ld29yay9kZWxpYnMvZGVwb29sL2RlUG9vbFRlc3QuYycsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVzdHJlYW0vZGVGaWxlU3RyZWFtLmMnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2Rlc3RyZWFtL2RlUmluZ2J1
ZmZlci5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXN0
cmVhbS9kZVN0cmVhbUNweVRocmVhZC5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL2RlbGlicy9kZXN0cmVhbS9kZVRocmVhZFN0cmVhbS5jJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXRocmVhZC9kZUF0b21pYy5jJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXRocmVhZC9kZVNpbmdsZXRv
bi5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXRocmVh
ZC9kZVRocmVhZFRlc3QuYycsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9k
ZWxpYnMvZGV1dGlsL2RlQ2xvY2suYycsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1l
d29yay9kZWxpYnMvZGV1dGlsL2RlQ29tbWFuZExpbmUuYycsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGV1dGlsL2RlRHluYW1pY0xpYnJhcnkuYycsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGV1dGlsL2RlRmlsZS5jJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXV0aWwvZGVQcm9j
ZXNzLmMnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldXRp
bC9kZVNvY2tldC5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGli
cy9kZXV0aWwvZGVUaW1lci5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L2RlbGlicy9kZXV0aWwvZGVUaW1lclRlc3QuYycsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L2ZyYW1ld29yay9lZ2wvZWdsdUNhbGxMb2dXcmFwcGVyLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL2ZyYW1ld29yay9lZ2wvZWdsdUNvbmZpZ0ZpbHRlci5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZWdsL2VnbHVDb25maWdJbmZvLmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9lZ2wvZWdsdURlZnMuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2VnbC9lZ2x1R0xDb250ZXh0RmFjdG9yeS5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZWdsL2VnbHVHTEZ1bmN0
aW9uTG9hZGVyLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9lZ2wv
ZWdsdUdMVXRpbC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZWds
L2VnbHVOYXRpdmVEaXNwbGF5LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1l
d29yay9lZ2wvZWdsdU5hdGl2ZVBpeG1hcC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvZWdsL2VnbHVOYXRpdmVXaW5kb3cuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvZnJhbWV3b3JrL2VnbC9lZ2x1UGxhdGZvcm0uY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2VnbC9lZ2x1U3RhdGljRVNMaWJyYXJ5LmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9lZ2wvZWdsdVN0clV0aWwuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2VnbC9lZ2x1VW5pcXVlLmNwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9lZ2wvZWdsdVV0aWwuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2VnbC93cmFwcGVyL2VnbHdEZWZzLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9lZ2wvd3JhcHBlci9lZ2x3
RnVuY3Rpb25zLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9lZ2wv
d3JhcHBlci9lZ2x3TGlicmFyeS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFt
ZXdvcmsvb3BlbmdsL2dsdUNhbGxMb2dXcmFwcGVyLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvZ2x1Q29udGV4dEZhY3RvcnkuY3BwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVDb250ZXh0SW5mby5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdURlZnMuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVEcmF3VXRpbC5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdUR1bW15
UmVuZGVyQ29udGV4dC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsv
b3BlbmdsL2dsdUVTM1BsdXNXcmFwcGVyQ29udGV4dC5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdUZib1JlbmRlckNvbnRleHQuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVPYmplY3RXcmFwcGVyLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvZ2x1UGl4ZWxU
cmFuc2Zlci5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3Blbmds
L2dsdVBsYXRmb3JtLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9v
cGVuZ2wvZ2x1UHJvZ3JhbUludGVyZmFjZVF1ZXJ5LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvZ2x1UmVuZGVyQ29uZmlnLmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvZ2x1UmVuZGVyQ29udGV4dC5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdVNoYWRlckxpYnJh
cnkuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVT
aGFkZXJQcm9ncmFtLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9v
cGVuZ2wvZ2x1U2hhZGVyVXRpbC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFt
ZXdvcmsvb3BlbmdsL2dsdVN0YXRlUmVzZXQuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVTdHJVdGlsLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvZ2x1VGV4dHVyZS5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdVRleHR1cmVVdGlsLmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvZ2x1VmFyVHlwZS5jcHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdVZhclR5cGVVdGlsLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvc2ltcGxlcmVm
ZXJlbmNlL3NnbHJDb250ZXh0LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1l
d29yay9vcGVuZ2wvc2ltcGxlcmVmZXJlbmNlL3NnbHJDb250ZXh0VXRpbC5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL3NpbXBsZXJlZmVyZW5jZS9zZ2xy
Q29udGV4dFdyYXBwZXIuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L29wZW5nbC9zaW1wbGVyZWZlcmVuY2Uvc2dsckdMQ29udGV4dC5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL3NpbXBsZXJlZmVyZW5jZS9zZ2xyUmVmZXJl
bmNlQ29udGV4dC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3Bl
bmdsL3NpbXBsZXJlZmVyZW5jZS9zZ2xyUmVmZXJlbmNlVXRpbHMuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9zaW1wbGVyZWZlcmVuY2Uvc2dsclNoYWRl
clByb2dyYW0uY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5n
bC93cmFwcGVyL2dsd0RlZnMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3
b3JrL29wZW5nbC93cmFwcGVyL2dsd0Z1bmN0aW9ucy5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL3dyYXBwZXIvZ2x3SW5pdEVTMjBEaXJlY3QuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC93cmFwcGVyL2dsd0lu
aXRFUzMwRGlyZWN0LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9v
cGVuZ2wvd3JhcHBlci9nbHdJbml0RnVuY3Rpb25zLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvd3JhcHBlci9nbHdXcmFwcGVyLmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9wbGF0Zm9ybS9udWxsL3RjdU51bGxDb250ZXh0
RmFjdG9yeS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcGxhdGZv
cm0vbnVsbC90Y3VOdWxsQ29udGV4dEZhY3RvcnkuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvZnJhbWV3b3JrL3BsYXRmb3JtL251bGwvdGN1TnVsbFJlbmRlckNvbnRleHQuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3FwaGVscGVyL3FwQ3Jhc2hIYW5k
bGVyLmMnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcXBoZWxwZXIvcXBE
ZWJ1Z091dC5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3FwaGVscGVy
L3FwSW5mby5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3FwaGVscGVy
L3FwVGVzdExvZy5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3FwaGVs
cGVyL3FwV2F0Y2hEb2cuYycsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9x
cGhlbHBlci9xcFhtbFdyaXRlci5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3
b3JrL3JhbmRvbXNoYWRlcnMvcnNnQmluYXJ5T3BzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9yYW5kb21zaGFkZXJzL3JzZ0J1aWx0aW5GdW5jdGlvbnMuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnRGVm
cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVy
cy9yc2dFeGVjdXRpb25Db250ZXh0LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9yYW5kb21zaGFkZXJzL3JzZ0V4cHJlc3Npb24uY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnRXhwcmVzc2lvbkdlbmVyYXRv
ci5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVy
cy9yc2dGdW5jdGlvbkdlbmVyYXRvci5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9m
cmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dHZW5lcmF0b3JTdGF0ZS5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dOYW1lQWxsb2NhdG9y
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yYW5kb21zaGFkZXJz
L3JzZ1BhcmFtZXRlcnMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L3JhbmRvbXNoYWRlcnMvcnNnUHJldHR5UHJpbnRlci5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dQcm9ncmFtRXhlY3V0b3IuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnUHJv
Z3JhbUdlbmVyYXRvci5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsv
cmFuZG9tc2hhZGVycy9yc2dTYW1wbGVycy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dTaGFkZXIuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnU2hhZGVyR2VuZXJhdG9yLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yYW5kb21zaGFkZXJzL3Jz
Z1N0YXRlbWVudC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmFu
ZG9tc2hhZGVycy9yc2dUb2tlbi5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFt
ZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dVdGlscy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dWYXJpYWJsZS5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dWYXJpYWJsZU1hbmFn
ZXIuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRl
cnMvcnNnVmFyaWFibGVUeXBlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1l
d29yay9yYW5kb21zaGFkZXJzL3JzZ1ZhcmlhYmxlVmFsdWUuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3JyRGVmcy5jcHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJGcmFn
bWVudE9wZXJhdGlvbnMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L3JlZmVyZW5jZXJlbmRlcmVyL3JyTXVsdGlzYW1wbGVQaXhlbEJ1ZmZlckFjY2Vzcy5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJQ
cmltaXRpdmVQYWNrZXQuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L3JlZmVyZW5jZXJlbmRlcmVyL3JyUmFzdGVyaXplci5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJSZW5kZXJlci5jcHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJTaGFk
ZXJzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yZWZlcmVuY2Vy
ZW5kZXJlci9yclNoYWRpbmdDb250ZXh0LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yclZlcnRleEF0dHJpYi5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJWZXJ0ZXhQ
YWNrZXQuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9n
bHNBdHRyaWJ1dGVMb2NhdGlvblRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xzaGFyZWQvZ2xzQnVmZmVyVGVzdFV0aWwuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNCdWlsdGluUHJlY2lzaW9uVGVzdHMuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNDYWxpYnJh
dGlvbi5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2ds
c0RyYXdUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFy
ZWQvZ2xzRmJvQ29tcGxldGVuZXNzVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNGYm9VdGlsLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzRnJhZ21lbnRPcFV0aWwuY3BwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNGcmFnT3BJbnRlcmFjdGlvbkNh
c2UuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNJ
bnRlcmFjdGlvblRlc3RVdGlsLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xzaGFyZWQvZ2xzTGlmZXRpbWVUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc0xvbmdTdHJlc3NDYXNlLmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzTG9uZ1N0cmVzc1Rlc3RVdGlsLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzTWVtb3J5
U3RyZXNzQ2FzZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hh
cmVkL2dsc1JhbmRvbVNoYWRlckNhc2UuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbHNoYXJlZC9nbHNSYW5kb21TaGFkZXJQcm9ncmFtLmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzUmFuZG9tVW5pZm9ybUJsb2NrQ2Fz
ZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc1Jh
c3Rlcml6YXRpb25UZXN0VXRpbC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsc2hhcmVkL2dsc1NhbXBsZXJPYmplY3RUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzU2Npc3NvclRlc3RzLmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzU2hhZGVyQ29uc3RFeHByVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNT
aGFkZXJFeGVjVXRpbC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
c2hhcmVkL2dsc1NoYWRlckxpYnJhcnlDYXNlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzU2hhZGVyTGlicmFyeS5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc1NoYWRlclBlcmZvcm1hbmNlQ2FzZS5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc1NoYWRl
clBlcmZvcm1hbmNlTWVhc3VyZXIuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbHNoYXJlZC9nbHNTaGFkZXJSZW5kZXJDYXNlLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzU3RhdGVRdWVyeVV0aWwuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNTdGF0ZUNoYW5nZVBlcmZU
ZXN0Q2FzZXMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJl
ZC9nbHNUZXh0dXJlQnVmZmVyQ2FzZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsc2hhcmVkL2dsc1RleHR1cmVTdGF0ZVF1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNUZXh0dXJlVGVzdFV0aWwuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNVbmlmb3Jt
QmxvY2tDYXNlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFy
ZWQvZ2xzVmVydGV4QXJyYXlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkv
c3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VBTkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5LmNwcCcs
Ci0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L3RjdUFO
R0xFTmF0aXZlRGlzcGxheUZhY3RvcnkuaCcsCi0gICAgICAgICAgICAjIFRPRE8oam1hZGlsbCk6
IGludGVncmF0ZSB3aXRoIGRFUVAKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0
cy9kZXFwX3N1cHBvcnQvdGN1UmFuZG9tT3JkZXJFeGVjdXRvci5jcHAnLAotICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VSYW5kb21PcmRlckV4ZWN1
dG9yLmgnLAotICAgICAgICBdLAotICAgICAgICAnZGVxcF9saWJ0ZXN0ZXJfc291cmNlc193aW4n
OgotICAgICAgICBbCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMv
ZGV0aHJlYWQvd2luMzIvZGVNdXRleFdpbjMyLmMnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvZGVsaWJzL2RldGhyZWFkL3dpbjMyL2RlU2VtYXBob3JlV2luMzIuYycsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGV0aHJlYWQvd2luMzIv
ZGVUaHJlYWRMb2NhbFdpbjMyLmMnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdv
cmsvZGVsaWJzL2RldGhyZWFkL3dpbjMyL2RlVGhyZWFkV2luMzIuYycsCi0gICAgICAgIF0sCi0g
ICAgICAgICdkZXFwX2xpYnRlc3Rlcl9zb3VyY2VzX3VuaXgnOgotICAgICAgICBbCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGV0aHJlYWQvdW5peC9kZU11dGV4
VW5peC5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXRo
cmVhZC91bml4L2RlTmFtZWRTZW1hcGhvcmVVbml4LmMnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldGhyZWFkL3VuaXgvZGVTZW1hcGhvcmVVbml4LmMnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldGhyZWFkL3VuaXgv
ZGVUaHJlYWRMb2NhbFVuaXguYycsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9kZWxpYnMvZGV0aHJlYWQvdW5peC9kZVRocmVhZFVuaXguYycsCi0gICAgICAgIF0sCi0gICAg
ICAgICdkZXFwX2dwdV90ZXN0X2V4cGVjdGF0aW9uc19zb3VyY2VzJzoKLSAgICAgICAgWwotICAg
ICAgICAgICAgJ3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfaW5mby5jYycs
Ci0gICAgICAgICAgICAndGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV9pbmZv
LmgnLAotICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVf
dGVzdF9jb25maWcuY2MnLAotICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVj
dGF0aW9ucy9ncHVfdGVzdF9jb25maWcuaCcsCi0gICAgICAgICAgICAndGhpcmRfcGFydHkvZ3B1
X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIuY2MnLAotICAg
ICAgICAgICAgJ3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9leHBl
Y3RhdGlvbnNfcGFyc2VyLmgnLAotICAgICAgICBdLAotICAgICAgICAnY29uZGl0aW9ucyc6Ci0g
ICAgICAgIFsKLSAgICAgICAgICAgIFsnKE9TPT0id2luIiBvciBPUz09ImxpbnV4IiBvciBPUz09
Im1hYyIpJywKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAjIEJ1aWxkIHRoZSBkRVFQ
IGxpYnJhcmllcyBmb3IgYWxsIFdpbmRvd3MvTGludXggYnVpbGRzCi0gICAgICAgICAgICAgICAg
J2FuZ2xlX2J1aWxkX2RlcXBfbGlicmFyaWVzJSc6IDEsCi0gICAgICAgICAgICB9XSwKLSAgICAg
ICAgICAgIFsnKChPUz09IndpbiIgb3IgT1M9PSJsaW51eCIgb3IgT1M9PSJtYWMiKSBhbmQgYW5n
bGVfYnVpbGRfd2lucnQ9PTApJywKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAjIEJ1
aWxkIHRoZSBkRVFQIEdvb2dsZVRlc3Qgc3VwcG9ydCBoZWxwZXJzIGZvciBhbGwgV2luZG93cy9M
aW51eCBidWlsZHMgZXhjZXB0IFdpblJUCi0gICAgICAgICAgICAgICAgIyBHb29nbGVUZXN0IGRv
ZXNuJ3Qgc3VwcG9ydCBXaW5SVAotICAgICAgICAgICAgICAgICdhbmdsZV9idWlsZF9kZXFwX2d0
ZXN0X3N1cHBvcnQlJzogMSwKLSAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgWycoKE9TPT0i
d2luIiBvciBPUz09ImxpbnV4IiBvciBPUz09Im1hYyIpIGFuZCBhbmdsZV9idWlsZF93aW5ydD09
MCknLAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICMgQnVpbGQgdGhlIGRFUVAgZXhl
Y3V0YWJsZXMgZm9yIGFsbCBzdGFuZGFsb25lIFdpbmRvd3MvTGludXggYnVpbGRzIGV4Y2VwdCBX
aW5SVAotICAgICAgICAgICAgICAgICMgR1lQIGRvZXNuJ3Qgc3VwcG9ydCBnZW5lcmF0aW5nIHN0
YW5kYWxvbmUgV2luUlQgZXhlY3V0YWJsZXMKLSAgICAgICAgICAgICAgICAnYW5nbGVfYnVpbGRf
ZGVxcF9leGVjdXRhYmxlcyUnOiAxLAotCi0gICAgICAgICAgICAgICAgIyBCdWlsZCB0aGUgR29v
Z2xlVGVzdCB2ZXJzaW9ucyBvZiBkRVFQIGZvciBhbGwgc3RhbmRhbG9uZSBXaW5kb3dzL0xpbnV4
IGJ1aWxkcyBleGNlcHQgV2luUlQKLSAgICAgICAgICAgICAgICAjIEdvb2dsZVRlc3QgZG9lc24n
dCBzdXBwb3J0IFdpblJUCi0gICAgICAgICAgICAgICAgJ2FuZ2xlX2J1aWxkX2RlcXBfZ3Rlc3Rf
ZXhlY3V0YWJsZXMlJzogMSwKLSAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgWydPUz09Imxp
bnV4IiBhbmQgdXNlX3gxMT09MScsCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2Rl
cXBfaW5jbHVkZV9kaXJzJzoKLSAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3BsYXRmb3JtL3gxMScsCi0gICAgICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgWydPUz09ImxpbnV4IicsCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgJ2RlcXBfZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAg
WwotICAgICAgICAgICAgICAgICAgICAjIEFzayB0aGUgc3lzdGVtIGhlYWRlcnMgdG8gZXhwb3Nl
IGFsbCB0aGUgcmVndWxhciBmdW5jdGlvbiBvdGhlcndpc2UKLSAgICAgICAgICAgICAgICAgICAg
IyBkRVFQIGRvZXNuJ3QgY29tcGlsZSBhbmQgcHJvZHVjZXMgd2FybmluZ3MgYWJvdXQgaW1wbGlj
aXRseSBkZWZpbmVkCi0gICAgICAgICAgICAgICAgICAgICMgZnVuY3Rpb25zLgotICAgICAgICAg
ICAgICAgICAgICAjIFRoaXMgaGFzIHRvIGJlIEdOVV9TT1VSQ0UgYXMgb24gTGludXggZEVRUCB1
c2VzIHN5c2NhbGwoKQotICAgICAgICAgICAgICAgICAgICAnX0dOVV9TT1VSQ0UnLAotICAgICAg
ICAgICAgICAgIF0sCi0gICAgICAgICAgICB9XSwKLSAgICAgICAgICAgIFsnT1M9PSJtYWMiJywK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZGVxcF9pbmNsdWRlX2RpcnMnOgotICAg
ICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdv
cmsvcGxhdGZvcm0vb3N4JywKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICdk
ZXFwX2RlZmluZXMnOgotICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgIyBB
c2sgdGhlIHN5c3RlbSBoZWFkZXJzIHRvIGV4cG9zZSBhbGwgdGhlIHJlZ3VsYXIgZnVuY3Rpb24g
b3RoZXJ3aXNlCi0gICAgICAgICAgICAgICAgICAgICMgZEVRUCBkb2Vzbid0IGNvbXBpbGUgYW5k
IHByb2R1Y2VzIHdhcm5pbmdzIGFib3V0IGltcGxpY2l0bHkgZGVmaW5lZAotICAgICAgICAgICAg
ICAgICAgICAjIGZ1bmN0aW9ucy4KLSAgICAgICAgICAgICAgICAgICAgJ19YT1BFTl9TT1VSQ0U9
NjAwJywKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICBb
J3VzZV9vem9uZT09MScsCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJ2RlcXBfZGVm
aW5lcyc6Ci0gICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAnQU5HTEVfVVNF
X09aT05FJywKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgfV0sCi0gICAgICAgIF0s
Ci0gICAgfSwKLSAgICAnY29uZGl0aW9ucyc6Ci0gICAgWwotICAgICAgICBbJ2FuZ2xlX2J1aWxk
X2RlcXBfbGlicmFyaWVzPT0xJywKLSAgICAgICAgewotICAgICAgICAgICAgJ3RhcmdldHMnOgot
ICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Rh
cmdldF9uYW1lJzogJ2FuZ2xlX3psaWInLAotICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdz
dGF0aWNfbGlicmFyeScsCi0gICAgICAgICAgICAgICAgICAgICdpbmNsdWRlcyc6IFsgJy4uLy4u
L2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLCBdLAotICAgICAgICAgICAgICAgICAgICAnaW5j
bHVkZV9kaXJzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAg
ICAgJzwoemxpYl9wYXRoKScsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAg
ICAgICAgICdkaXJlY3RfZGVwZW5kZW50X3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKScs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICAnbXN2c19zZXR0aW5ncyc6Ci0gICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICdWQ0NMQ29tcGlsZXJUb29sJzoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWRkaXRpb25hbE9w
dGlvbnMnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJy93ZDQxMzEnLCAjIG9sZC1zdHlsZSBkZWNsYXJhdG9yCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICcvd2Q0MjQ0JywgIyBDb252ZXJzaW9uIGZyb20gJ3R5
cGUxJyB0byAndHlwZTInLCBwb3NzaWJsZSBsb3NzIG9mIGRhdGEKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJy93ZDQzMjQnLCAjIHN0cnVjdHVyZSB3YXMgcGFkZGVkCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICcvd2Q0NzAxJywgIyBwb3RlbnRpYWxseSB1bmluaXQg
dXNlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3dkNDk5NicsICMgZGVwcmVj
YXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAnY29u
ZGl0aW9ucyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAg
IFsnYW5nbGVfYnVpbGRfd2lucnQ9PTEnLAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMgSW4gemxpYiwgZGVmbGF0ZS5jL2luc2VydF9zdHJp
bmdfc3NlIGFzc3VtZXMgX01TQ19WRVIgaXMgb25seSB1c2VkIGZvciB4ODYgb3IgeDY0Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIyBUbyBjb21waWxlIHRoaXMgZnVuY3Rpb24gZm9yIEFS
TSB1c2luZyBNU0MsIHdlIHRyaWNrIGl0IGJ5IGRlZmluaW5nIF9fY2xhbmdfXwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMgX19jbGFuZ19fIGlzbid0IHVzZWQgZWxzZXdoZXJlIHpsaWIs
IHNvIHRoaXMgd29ya2Fyb3VuZCBzaG91bGRuJ3QgaW1wYWN0IGFueXRoaW5nIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX19jbGFuZ19fJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgfV0s
Ci0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoK
LSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9w
YXRoKS9hZGxlcjMyLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS9j
b21wcmVzcy5jJywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvY3JjMzIu
YycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGliX3BhdGgpL2NyYzMyLmgnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS9kZWZsYXRlLmMnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS9kZWZsYXRlLmgnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgJzwoemxpYl9wYXRoKS9nemNsb3NlLmMnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgJzwoemxpYl9wYXRoKS9nemd1dHMuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPCh6
bGliX3BhdGgpL2d6bGliLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRo
KS9nenJlYWQuYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGliX3BhdGgpL2d6d3Jp
dGUuYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGliX3BhdGgpL2luZmJhY2suYycs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGliX3BhdGgpL2luZmZhc3QuYycsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnPCh6bGliX3BhdGgpL2luZmZhc3QuaCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAnPCh6bGliX3BhdGgpL2luZmZpeGVkLmgnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgJzwoemxpYl9wYXRoKS9pbmZsYXRlLmMnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgJzwoemxpYl9wYXRoKS9pbmZsYXRlLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzwo
emxpYl9wYXRoKS9pbmZ0cmVlcy5jJywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJf
cGF0aCkvaW5mdHJlZXMuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGliX3BhdGgp
L21venpjb25mLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS90cmVl
cy5jJywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvdHJlZXMuaCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGliX3BhdGgpL3VuY29tcHIuYycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAnPCh6bGliX3BhdGgpL3g4Ni5oJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICc8KHpsaWJfcGF0aCkvemNvbmYuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAn
PCh6bGliX3BhdGgpL3psaWIuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGliX3Bh
dGgpL3p1dGlsLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS96dXRp
bC5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvc2ltZF9zdHViLmMn
LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9saWJw
bmcnLAotICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCi0gICAg
ICAgICAgICAgICAgICAgICdpbmNsdWRlcyc6IFsgJy4uLy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVz
Lmd5cGknLCBdLAotICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzoKLSAgICAgICAg
ICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX3psaWInCi0gICAg
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdtc3ZzX3NldHRpbmdzJzoK
LSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ1ZDQ0xDb21w
aWxlclRvb2wnOgotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdBZGRpdGlvbmFsT3B0aW9ucyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3dkNDAxOCcsICMgc2lnbmVk
L3Vuc2lnbmVkIG1pc21hdGNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvd2Q0
MDI4JywgIyBwYXJhbWV0ZXIgZGlmZmVycyBmcm9tIGRlY2wKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJy93ZDQxMDEnLCAjIHVucmVmZXJlbmNlZCBsb2NhbAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnL3dkNDE4OScsICMgdW5yZWZlcmVuY2VkIGJ1dCBpbml0dGVk
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvd2Q0MjQ0JywgIyBDb252ZXJzaW9u
IGZyb20gJ3R5cGUxJyB0byAndHlwZTInLCBwb3NzaWJsZSBsb3NzIG9mIGRhdGEKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJy93ZDQyNjcnLCAjIENvbnZlcnNpb24gZnJvbSAnc2l6
ZV90JyB0byAndHlwZScsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICAgICAg
ICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8KGxpYnBuZ19wYXRoKS9wbmcuYycsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAnPChsaWJwbmdfcGF0aCkvcG5nZXJyb3IuYycsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnPChsaWJwbmdfcGF0aCkvcG5nZ2V0LmMnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgJzwobGlicG5nX3BhdGgpL3BuZ21lbS5jJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICc8KGxpYnBuZ19wYXRoKS9wbmdwcmVhZC5jJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICc8KGxpYnBuZ19wYXRoKS9wbmdyZWFkLmMnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgJzwobGlicG5nX3BhdGgpL3BuZ3Jpby5jJywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8
KGxpYnBuZ19wYXRoKS9wbmdydHJhbi5jJywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8KGxp
YnBuZ19wYXRoKS9wbmdydXRpbC5jJywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8KGxpYnBu
Z19wYXRoKS9wbmdzZXQuYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPChsaWJwbmdfcGF0
aCkvcG5ndHJhbnMuYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPChsaWJwbmdfcGF0aCkv
cG5nd2lvLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzwobGlicG5nX3BhdGgpL3BuZ3dy
aXRlLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzwobGlicG5nX3BhdGgpL3BuZ3d0cmFu
LmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzwobGlicG5nX3BhdGgpL3BuZ3d1dGlsLmMn
LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICBdLCAjIHRhcmdldHMKLSAgICAgICAgfV0sICMgYW5nbGVfYnVpbGRfZGVxcF9saWJyYXJpZXM9
PTEKLSAgICAgICAgWydhbmdsZV9idWlsZF9kZXFwX2xpYnJhcmllcz09MScsCi0gICAgICAgIHsK
LSAgICAgICAgICAgICd0YXJnZXRzJzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9kZXFwX3N1cHBvcnQn
LAotICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdub25lJywKLSAgICAgICAgICAgICAgICAg
ICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnOgotICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAnY29uZmlndXJhdGlvbnMnOgotICAgICAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb21tb25fQmFzZSc6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnbXN2c19jb25maWd1cmF0aW9uX2F0dHJpYnV0ZXMnOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGRF
UVAgcmVxdWlyZXMgQVNDSUkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdD
aGFyYWN0ZXJTZXQnOiAnMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtc3ZzX3NldHRpbmdzJzoKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ1ZDTGlua2VyVG9vbCc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMn
OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydhbmdsZV9idWlsZF93aW5ydD09MCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBZGRpdGlvbmFsRGVwZW5k
ZW5jaWVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
ZGJnaGVscC5saWInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdnZGkzMi5saWInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICd1c2VyMzIubGliJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3MyXzMyLmxpYicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWydhbmdsZV9idWlsZF93aW5ydD09MScsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMgRGlzYWJsZSBDT01EQVQgb3B0aW1pemF0aW9ucywg
ZGlzYWJsZWQgYnkgZGVmYXVsdCBmb3Igbm9uLVdpblJUCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnQWRkaXRpb25hbE9wdGlvbnMnOiBbJy9PUFQ6Tk9S
RUYnLCAnL09QVDpOT0lDRiddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIyBBZGRpdGlvbmFsRGVwZW5kZW5jaWVzIGF1dG9tYXRpY2FsbHkgY29uZmln
dXJlcyB0aGUgcmVxdWlyZWQgLmxpYnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdBZGRpdGlvbmFsRGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJShBZGRpdGlvbmFsRGVwZW5kZW5jaWVz
KScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnRGVidWdfQmFzZSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnbXN2c19zZXR0aW5ncyc6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdW
Q0NMQ29tcGlsZXJUb29sJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUnVudGltZVR5cGVJbmZv
JzogJ3RydWUnLCAjIGRFUVAgbmVlZHMgUlRUSQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Jl
bGVhc2VfQmFzZSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnbXN2c19zZXR0aW5ncyc6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWQ0NM
Q29tcGlsZXJUb29sJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUnVudGltZVR5cGVJbmZvJzog
J3RydWUnLCAjIGRFUVAgbmVlZHMgUlRUSQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICMgUmUtZW5hYmxlIFJUVEkgYW5kIGV4Y2VwdGlvbnMsIGRFUVAgbmVl
ZHMgdGhlbS4KLSAgICAgICAgICAgICAgICAgICAgICAgICdjZmxhZ3NfY2MhJzoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZuby1leGNl
cHRpb25zJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWZuby1ydHRpJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZV9k
aXJzJzogWyc8QChkZXFwX2luY2x1ZGVfZGlycyknXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICdkZWZpbmVzJzogWyc8QChkZXFwX2RlZmluZXMpJ10sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAnZGVmaW5lcyEnOiBbICc8QChkZXFwX3VuZGVmaW5lcyknIF0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnbXN2c19zZXR0aW5ncyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ1ZDQ0xDb21waWxlclRvb2wnOgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FkZGl0
aW9uYWxPcHRpb25zJzogWyc8QChkZXFwX3dpbl9jZmxhZ3MpJ10sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAnY29uZGl0aW9ucyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWydjbGFuZz09MScsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRPRE8oam1hZGls
bCk6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgZml4IGRFUVAuCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdjZmxhZ3NfY2MnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLVduby1kZWxldGUtbm9uLXZp
cnR1YWwtZHRvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWydP
Uz09IndpbiInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2NmbGFncyc6IFsnPEAoZGVxcF93aW5fY2ZsYWdzKSddLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2ZsYWdzX2NjJzogWyc8QChkZXFwX3dpbl9j
ZmxhZ3MpJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMn
OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9wbGF0Zm9ybS93aW4zMics
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6Ci0gICAgICAgICAgICAg
ICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgIFsnYW5nbGVfYnVpbGRfd2lucnQ9PTEn
LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICd0eXBlJyA6ICdzaGFyZWRfbGlicmFyeScsCi0gICAgICAgICAgICAgICAgICAgICAgICB9XSwK
LSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAg
ICAgICAgIyBDb21waWxlIGRlY3BwIHNlcGFyYXRlbHkgYmVjYXVzZSBNU1ZDIGlnbm9yZXMgdGhl
IGV4dGVuc2lvbiBvZiB0aGUgZmlsZXMgd2hlbgotICAgICAgICAgICAgICAgICMgb3V0cHV0dGlu
ZyB0aGUgb2JqIGZpbGUsIGFuZCBsYXRlciB0aGlua3MgdGhhdCBhIGRlY3BwIG9iaiBhbmQgYW5v
dGhlciBvYmogYXJlIHRoZQotICAgICAgICAgICAgICAgICMgc2FtZSwgaWdub3Jpbmcgb25lIGFu
ZCBldmVudHVhbGx5IHByb2R1Y2luZyBhIGxpbmsgZXJyb3IuIFRoZSBwcm9ibGVtIG9jY3VycyBm
b3IKLSAgICAgICAgICAgICAgICAjIGV4YW1wbGUgYmV0d2VlbiBkZWNwcC9kZVJhbmRvbS5jcHAg
YW5kIGRlYmFzZS9kZVJhbmRvbS5jCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZGVxcF9kZWNwcCcsCi0gICAgICAgICAgICAgICAg
ICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKLSAgICAgICAgICAgICAgICAgICAgJ2RlcGVu
ZGVuY2llcyc6IFsgJ2FuZ2xlX2RlcXBfc3VwcG9ydCcgXSwKLSAgICAgICAgICAgICAgICAgICAg
J3NvdXJjZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAg
ICAnPEAoZGVxcF9saWJ0ZXN0ZXJfZGVjcHBfc291cmNlcyknLAotICAgICAgICAgICAgICAgICAg
ICBdLAotICAgICAgICAgICAgICAgICAgICAjIEluIGEgY2hyb21pdW0gYnVpbGQgZGwgaXMgcmVx
dWlyZWQgZm9yIGRlRHluYW1pY0xpYnJhcnkKLSAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlv
bnMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICBbJ09T
PT0ibGludXgiJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnbGlua19zZXR0aW5ncyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGlicmFyaWVzJzogWyctbGRsJ10K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAg
fV0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2FuZ2xlX2Rl
cXBfbGlidGVzdGVyJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnc3RhdGljX2xpYnJh
cnknLAotICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAgICAg
ICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX2RlcXBfZGVjcHAnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX2RlcXBfc3VwcG9ydCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAnYW5nbGVfbGlicG5nJywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8KGFu
Z2xlX3BhdGgpL3NyYy9hbmdsZS5neXA6bGliRUdMJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICc8KGFuZ2xlX3BhdGgpL3V0aWwvdXRpbC5neXA6YW5nbGVfdXRpbCcsCi0gICAgICAgICAgICAg
ICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdleHBvcnRfZGVwZW5kZW50X3NldHRpbmdz
JzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xl
X2RlcXBfc3VwcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS91
dGlsL3V0aWwuZ3lwOmFuZ2xlX3V0aWwnLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAg
ICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvaW5jbHVkZScsCi0gICAgICAgICAg
ICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdkaXJlY3RfZGVwZW5kZW50X3NldHRp
bmdzJzoKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2lu
Y2x1ZGVfZGlycyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvaW5jbHVkZScsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAgICAg
ICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9ERVFQX0xJ
QlRFU1RFUl9JTVBMRU1FTlRBVElPTicsCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAotICAg
ICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAnbXN2c19zZXR0aW5ncyc6
Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdWQ0NMQ29t
cGlsZXJUb29sJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnQWRkaXRpb25hbE9wdGlvbnMnOgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy9iaWdvYmonLCAjIG5lZWRl
ZCBmb3IgZ2xzQnVpbHRpblByZWNpc2lvblRlc3RzLmNwcAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnL3dkNDI1MScsICMgbmVlZGVkIGZvciBhbmdsZV91dGlsIFNUTCBvYmplY3Rz
IG5vdCBoYXZpbmcgRExMIGludGVyZmFjZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICc8QChkZXFwX2xpYnRlc3Rlcl9zb3VyY2VzKScsCi0gICAgICAg
ICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzoKLSAgICAg
ICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgWydPUz09Im1hYyInLAot
ICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdk
aXJlY3RfZGVwZW5kZW50X3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd4Y29kZV9zZXR0aW5ncyc6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdEWUxJQl9JTlNUQUxMX05BTUVfQkFTRSc6ICdAcnBhdGgnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFsn
T1M9PSJ3aW4iJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnc291cmNlcyc6IFsgJzxAKGRlcXBfbGlidGVzdGVyX3NvdXJjZXNfd2luKScs
IF0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IFsnT1M9PSJsaW51eCIgb3IgT1M9PSJtYWMiJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6IFsgJzxAKGRlcXBfbGlidGVz
dGVyX3NvdXJjZXNfdW5peCknLCBdLAotICAgICAgICAgICAgICAgICAgICAgICAgfV0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICBbJ09TPT0ibGludXgiJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGlua19zZXR0aW5ncyc6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnbGlicmFyaWVzJzogWyctbHJ0J10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAg
ICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
J3RhcmdldF9uYW1lJzogJ2FuZ2xlX2RlcXBfbGliZ2xlczInLAotICAgICAgICAgICAgICAgICAg
ICAndHlwZSc6ICdzaGFyZWRfbGlicmFyeScsCi0gICAgICAgICAgICAgICAgICAgICdkZXBlbmRl
bmNpZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAn
YW5nbGVfZGVxcF9saWJ0ZXN0ZXInLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAg
ICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdBTkdMRV9ERVFQX0dMRVMyX1RFU1RTJywKLSAgICAgICAgICAgICAgICAg
ICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnOgot
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
J0FOR0xFX0RFUVBfR0xFUzJfVEVTVFMnLAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAg
ICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnPEAoZGVxcF9nbGVz
Ml9zb3VyY2VzKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZGVxcF9zdXBwb3J0L2FuZ2xl
X2RlcXBfbGlidGVzdGVyX21haW4uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkZXFw
X3N1cHBvcnQvdGN1QU5HTEVQbGF0Zm9ybS5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAg
J2RlcXBfc3VwcG9ydC90Y3VBTkdMRVBsYXRmb3JtLmgnLAotICAgICAgICAgICAgICAgICAgICBd
LAotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9kZXFwX2xpYmdsZXMzJywKLSAgICAgICAgICAg
ICAgICAgICAgJ3R5cGUnOiAnc2hhcmVkX2xpYnJhcnknLAotICAgICAgICAgICAgICAgICAgICAn
ZGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAg
ICAgICAgJ2FuZ2xlX2RlcXBfbGlidGVzdGVyJywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnQU5HTEVfREVRUF9HTEVTM19URVNUUycsCi0gICAgICAgICAg
ICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdkaXJlY3RfZGVwZW5kZW50X3NldHRp
bmdzJzoKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2Rl
ZmluZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdBTkdMRV9ERVFQX0dMRVMzX1RFU1RTJywKLSAgICAgICAgICAgICAgICAgICAgICAg
IF0sCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICdzb3VyY2Vz
JzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJzxAKGRl
cXBfZ2xlczNfc291cmNlcyknLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcXBfc3VwcG9y
dC9hbmdsZV9kZXFwX2xpYnRlc3Rlcl9tYWluLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAnZGVxcF9zdXBwb3J0L3RjdUFOR0xFUGxhdGZvcm0uY3BwJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICdkZXFwX3N1cHBvcnQvdGN1QU5HTEVQbGF0Zm9ybS5oJywKLSAgICAgICAgICAgICAg
ICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZGVxcF9saWJnbGVzMzEnLAotICAg
ICAgICAgICAgICAgICAgICAndHlwZSc6ICdzaGFyZWRfbGlicmFyeScsCi0gICAgICAgICAgICAg
ICAgICAgICdkZXBlbmRlbmNpZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAg
ICAgICAgICAgICAgICAnYW5nbGVfZGVxcF9saWJ0ZXN0ZXInLAotICAgICAgICAgICAgICAgICAg
ICBdLAotICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAg
IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9ERVFQX0dMRVMzMV9URVNUUycsCi0g
ICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdkaXJlY3RfZGVwZW5k
ZW50X3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgJ2RlZmluZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdBTkdMRV9ERVFQX0dMRVMzMV9URVNUUycsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAg
ICAnc291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICc8QChkZXFwX2dsZXMzMV9zb3VyY2VzKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAn
ZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfbGlidGVzdGVyX21haW4uY3BwJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdkZXFwX3N1cHBvcnQvdGN1QU5HTEVQbGF0Zm9ybS5jcHAnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgJ2RlcXBfc3VwcG9ydC90Y3VBTkdMRVBsYXRmb3JtLmgnLAotICAg
ICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9kZXFwX2xpYmVn
bCcsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ3NoYXJlZF9saWJyYXJ5JywKLSAgICAg
ICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFwX2xpYnRlc3RlcicsCi0gICAgICAgICAg
ICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAg
ICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJ0FOR0xFX0RFUVBfRUdMX1RFU1RT
JywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdF9k
ZXBlbmRlbnRfc2V0dGluZ3MnOgotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0FOR0xFX0RFUVBfRUdMX1RFU1RTJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg
ICAgICdzb3VyY2VzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAg
ICAgICAgJzxAKGRlcXBfZWdsX3NvdXJjZXMpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdk
ZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9saWJ0ZXN0ZXJfbWFpbi5jcHAnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgJ2RlcXBfc3VwcG9ydC90Y3VBTkdMRVBsYXRmb3JtLmNwcCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAnZGVxcF9zdXBwb3J0L3RjdUFOR0xFUGxhdGZvcm0uaCcsCi0gICAg
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sICMg
dGFyZ2V0cwotICAgICAgICB9XSwgIyBhbmdsZV9idWlsZF9kZXFwX2xpYnJhcmllcwotICAgICAg
ICBbJ2FuZ2xlX2J1aWxkX2RlcXBfZXhlY3V0YWJsZXM9PTEnLAotICAgICAgICB7Ci0gICAgICAg
ICAgICAidGFyZ2V0cyI6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZGVxcF9nbGVzMl90ZXN0cycsCi0g
ICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAotICAgICAgICAgICAgICAg
ICAgICAnZGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAg
ICAgICAgICAgICAgJ2FuZ2xlX2RlcXBfbGliZ2xlczInLAotICAgICAgICAgICAgICAgICAgICBd
LAotICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsK
LSAgICAgICAgICAgICAgICAgICAgICAgICdkZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF90ZXN0c19t
YWluLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLQot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2Fu
Z2xlX2RlcXBfZ2xlczNfdGVzdHMnLAotICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdleGVj
dXRhYmxlJywKLSAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6Ci0gICAgICAgICAg
ICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFwX2xpYmdsZXMz
JywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMn
OgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnZGVxcF9z
dXBwb3J0L2FuZ2xlX2RlcXBfdGVzdHNfbWFpbi5jcHAnLAotICAgICAgICAgICAgICAgICAgICBd
LAotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9kZXFwX2dsZXMzMV90ZXN0cycsCi0gICAgICAg
ICAgICAgICAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAotICAgICAgICAgICAgICAgICAgICAn
ZGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAg
ICAgICAgJ2FuZ2xlX2RlcXBfbGliZ2xlczMxJywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfdGVzdHNfbWFpbi5j
cHAnLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9k
ZXFwX2VnbF90ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUn
LAotICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAgICAgICAg
ICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX2RlcXBfbGliZWdsJywKLSAgICAg
ICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAg
ICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnZGVxcF9zdXBwb3J0L2Fu
Z2xlX2RlcXBfdGVzdHNfbWFpbi5jcHAnLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLCAjIHRhcmdldHMKLSAgICAgICAgfV0sICMgYW5n
bGVfYnVpbGRfZGVxcF9leGVjdXRhYmxlcwotICAgICAgICBbJ2FuZ2xlX2J1aWxkX2RlcXBfZ3Rl
c3Rfc3VwcG9ydD09MScsCi0gICAgICAgIHsKLSAgICAgICAgICAgICd0YXJnZXRzJzoKLSAgICAg
ICAgICAgIFsKLSAgICAgICAgICAgICAgICAjIEhlbHBlciB0YXJnZXQgZm9yIHN5bmNoaW5nIG91
ciBpbXBsZW1lbnRhdGlvbiB3aXRoIGNocm9tZSdzCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZGVxcF9ndGVzdF9zdXBwb3J0JywK
LSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnbm9uZScsCi0gICAgICAgICAgICAgICAgICAg
ICdkZXBlbmRlbmNpZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnYW5nbGVfdGVzdF9zdXBwb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3V0aWwvdXRpbC5neXA6YW5nbGVfdXRpbCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmFuZ2xlX2NvbW1vbicsCi0gICAg
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdleHBvcnRfZGVwZW5kZW50
X3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAg
ICAgJ2FuZ2xlX3Rlc3Rfc3VwcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPChhbmds
ZV9wYXRoKS91dGlsL3V0aWwuZ3lwOmFuZ2xlX3V0aWwnLAotICAgICAgICAgICAgICAgICAgICBd
LAotCi0gICAgICAgICAgICAgICAgICAgICdkaXJlY3RfZGVwZW5kZW50X3NldHRpbmdzJzoKLSAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVfZGly
cyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2RlcXBfc3VwcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3Bh
cnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucycsCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAot
ICAgICAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAgICAgICAgICAgICAgICAg
ICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8QChkZXFwX2dwdV90ZXN0X2V4cGVj
dGF0aW9uc19zb3VyY2VzKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcXBfc3Vw
cG9ydC9hbmdsZV9kZXFwX2d0ZXN0LmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAot
Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBSZS1kZWZpbmUgdGhlIG1pc3Np
bmcgV2luZG93cyBtYWNyb3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPEAoZGVxcF91
bmRlZmluZXMpJywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICdtc3ZzX3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnVkNMaW5rZXJUb29sJzoKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBZGRpdGlv
bmFsRGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZXIzMi5saWInLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgICAgICAgICAn
Y29uZGl0aW9ucyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIyBOT1RFKHNtY2dydWVyKTogR3VhcmRpbmcgd2l0aCB1c2VfbGlicGNpIGFs
bG93cyBneXAgdG8gcnVuIHN1Y2Nlc3NmdWxseQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMgb24gc3lzdGVtcyB3aXRob3V0IGxpYnBjaSwgYnV0IHRoZSB0ZXN0IHRhcmdldHMgd2lsbCBu
b3QgY29tcGlsZSBvciBsaW5rLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnT1M9PSJs
aW51eCIgYW5kIHVzZV9saWJwY2k9PTEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xkZmxhZ3MnOgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnPCFAKDwocGtnLWNvbmZpZykgLS1saWJzLW9ubHktTCAtLWxpYnMtb25seS1vdGhlciBsaWJw
Y2kpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2xpYnJhcmllcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8IUAoPChwa2ct
Y29uZmlnKSAtLWxpYnMtb25seS1sIGxpYnBjaSknLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsnT1M9PSJtYWMiJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWdf
bWFjLm1tJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2xpbmtfc2V0dGluZ3MnOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGli
cmFyaWVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJChTREtST09UKS9TeXN0ZW0vTGlicmFy
eS9GcmFtZXdvcmtzL0lPS2l0LmZyYW1ld29yaycsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwg
IyB0YXJnZXRzCi0gICAgICAgIH1dLCAjIGFuZ2xlX2J1aWxkX2RlcXBfZ3Rlc3Rfc3VwcG9ydAot
ICAgICAgICBbJ2FuZ2xlX2J1aWxkX2RlcXBfZ3Rlc3RfZXhlY3V0YWJsZXM9PTEnLAotICAgICAg
ICB7Ci0gICAgICAgICAgICAidGFyZ2V0cyI6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZGVxcF9ndGVz
dF9nbGVzMl90ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUn
LAotICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZXMnOiBbICcuLi8uLi9idWlsZC9jb21tb25f
ZGVmaW5lcy5neXBpJywgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6Ci0g
ICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFw
X2d0ZXN0X3N1cHBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX2RlcXBfbGli
Z2xlczInLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAnc291
cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICdk
ZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9ndGVzdF9tYWluLmNwcCcsCi0gICAgICAgICAgICAgICAg
ICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2FuZ2xlX2RlcXBfZ3Rlc3RfZ2xlczNfdGVzdHMn
LAotICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKLSAgICAgICAgICAg
ICAgICAgICAgJ2luY2x1ZGVzJzogWyAnLi4vLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScs
IF0sCi0gICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOgotICAgICAgICAgICAgICAg
ICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfZGVxcF9ndGVzdF9zdXBwb3J0
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFwX2xpYmdsZXMzJywKLSAgICAg
ICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAg
ICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnZGVxcF9zdXBwb3J0L2Fu
Z2xlX2RlcXBfZ3Rlc3RfbWFpbi5jcHAnLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAg
ICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICd0
YXJnZXRfbmFtZSc6ICdhbmdsZV9kZXFwX2d0ZXN0X2dsZXMzMV90ZXN0cycsCi0gICAgICAgICAg
ICAgICAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAotICAgICAgICAgICAgICAgICAgICAnaW5j
bHVkZXMnOiBbICcuLi8uLi9idWlsZC9jb21tb25fZGVmaW5lcy5neXBpJywgXSwKLSAgICAgICAg
ICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFwX2d0ZXN0X3N1cHBvcnQnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgJ2FuZ2xlX2RlcXBfbGliZ2xlczMxJywKLSAgICAgICAgICAgICAgICAg
ICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAgICAgICAgICAgICAg
ICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfZ3Rl
c3RfbWFpbi5jcHAnLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0s
Ci0KLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6
ICdhbmdsZV9kZXFwX2d0ZXN0X2VnbF90ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICd0eXBl
JzogJ2V4ZWN1dGFibGUnLAotICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZXMnOiBbICcuLi8u
Li9idWlsZC9jb21tb25fZGVmaW5lcy5neXBpJywgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2Rl
cGVuZGVuY2llcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICdhbmdsZV9kZXFwX2d0ZXN0X3N1cHBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAg
J2FuZ2xlX2RlcXBfbGliZWdsJywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAg
ICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAg
ICAgICAgICAgICAnZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfZ3Rlc3RfbWFpbi5jcHAnLAotICAg
ICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLCAj
IHRhcmdldHMKLSAgICAgICAgfV0sICMgYW5nbGVfYnVpbGRfZGVxcF9ndGVzdF9leGVjdXRhYmxl
cwotICAgIF0sICMgY29uZGl0aW9ucwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX2d0ZXN0LmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9ndGVz
dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZGJiNWNhZGZhYjBjNTBmNmZl
MjliOTg5ZmFhZGRhZDVmOGFmYmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9y
dC9hbmdsZV9kZXFwX2d0ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxMiArMCwwIEBACi0v
LwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCi0vLwotLy8gYW5nbGVfZGVxcF9ndGVzdDoKLS8vICAgZEVRUCBhbmQgR29vZ2xlVGVzdCBp
bnRlZ3JhdGlvbiBsb2dpYy4gQ2FsbHMgdGhyb3VnaCB0byB0aGUgcmFuZG9tCi0vLyAgIG9yZGVy
IGV4ZWN1dG9yLgotCi0jaW5jbHVkZSA8ZnN0cmVhbT4KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLQot
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLSNpbmNsdWRlICJhbmdsZV9kZXFwX2xpYnRlc3Rl
ci5oIgotI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCi0jaW5jbHVkZSAiY29tbW9uL2Rl
YnVnLmgiCi0jaW5jbHVkZSAiY29tbW9uL09wdGlvbmFsLmgiCi0jaW5jbHVkZSAiY29tbW9uL3Bs
YXRmb3JtLmgiCi0jaW5jbHVkZSAiY29tbW9uL3N0cmluZ191dGlscy5oIgotI2luY2x1ZGUgImdw
dV90ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIuaCIKLSNpbmNsdWRlICJzeXN0ZW1fdXRpbHMuaCIK
LQotbmFtZXNwYWNlCi17Ci0KLSNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FORFJPSUQpCi1j
b25zdCBjaGFyICpnX0Nhc2VMaXN0UmVsYXRpdmVQYXRoID0KLSAgICAiLy4uLy4uL3NkY2FyZC9j
aHJvbWl1bV90ZXN0c19yb290L3RoaXJkX3BhcnR5L2RlcXAvc3JjL2FuZHJvaWQvY3RzL21hc3Rl
ci8iOwotI2Vsc2UKLWNvbnN0IGNoYXIgKmdfQ2FzZUxpc3RSZWxhdGl2ZVBhdGggPSAiLy4uLy4u
L3RoaXJkX3BhcnR5L2RlcXAvc3JjL2FuZHJvaWQvY3RzL21hc3Rlci8iOwotI2VuZGlmCi0KLWNv
bnN0IGNoYXIgKmdfVGVzdEV4cGVjdGF0aW9uc1NlYXJjaFBhdGhzW10gPSB7Ci0gICAgIi8uLi8u
Li9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0LyIsICIvLi4vLi4vdGhpcmRfcGFydHkvYW5nbGUvc3Jj
L3Rlc3RzL2RlcXBfc3VwcG9ydC8iLAotICAgICIvZGVxcF9zdXBwb3J0LyIsICIvLi4vLi4vc2Rj
YXJkL2Nocm9taXVtX3Rlc3RzX3Jvb3QvdGhpcmRfcGFydHkvYW5nbGUvc3JjL3Rlc3RzL2RlcXBf
c3VwcG9ydC8iLAotfTsKLQotY29uc3QgY2hhciAqZ19DYXNlTGlzdEZpbGVzW10gPSB7Ci0gICAg
ImdsZXMyLW1hc3Rlci50eHQiLCAiZ2xlczMtbWFzdGVyLnR4dCIsICJnbGVzMzEtbWFzdGVyLnR4
dCIsICJlZ2wtbWFzdGVyLnR4dCIsCi19OwotCi1jb25zdCBjaGFyICpnX1Rlc3RFeHBlY3RhdGlv
bnNGaWxlc1tdID0gewotICAgICJkZXFwX2dsZXMyX3Rlc3RfZXhwZWN0YXRpb25zLnR4dCIsICJk
ZXFwX2dsZXMzX3Rlc3RfZXhwZWN0YXRpb25zLnR4dCIsCi0gICAgImRlcXBfZ2xlczMxX3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dCIsICJkZXFwX2VnbF90ZXN0X2V4cGVjdGF0aW9ucy50eHQiLAotfTsK
LQotLy8gRHVyaW5nIHRoZSBDYXNlTGlzdCBpbml0aWFsaXphdGlvbiB3ZSBjYW5ub3QgdXNlIHRo
ZSBHVEVTVCBGQUlMIG1hY3JvIHRvIHF1aXQgdGhlIHByb2dyYW0gYmVjYXVzZQotLy8gdGhlIGlu
aXRpYWxpemF0aW9uIGlzIGNhbGxlZCBvdXRzaWRlIG9mIHRlc3RzIHRoZSBmaXJzdCB0aW1lLgot
dm9pZCBEaWUoKQotewotICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKLX0KLQotT3B0aW9uYWw8c3Rk
OjpzdHJpbmc+IEZpbmRUZXN0RXhwZWN0YXRpb25zUGF0aChjb25zdCBzdGQ6OnN0cmluZyAmZXhl
RGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IHRlc3RNb2R1bGVJbmRleCkKLXsKLSAgICBmb3IgKGNvbnN0IGNoYXIgKnRlc3RQ
YXRoIDogZ19UZXN0RXhwZWN0YXRpb25zU2VhcmNoUGF0aHMpCi0gICAgewotICAgICAgICBzdGQ6
OnN0cmluZ3N0cmVhbSB0ZXN0RXhwZWN0YXRpb25zUGF0aFN0cjsKLSAgICAgICAgdGVzdEV4cGVj
dGF0aW9uc1BhdGhTdHIgPDwgZXhlRGlyIDw8IHRlc3RQYXRoIDw8IGdfVGVzdEV4cGVjdGF0aW9u
c0ZpbGVzW3Rlc3RNb2R1bGVJbmRleF07Ci0KLSAgICAgICAgc3RkOjpzdHJpbmcgcGF0aCA9IHRl
c3RFeHBlY3RhdGlvbnNQYXRoU3RyLnN0cigpOwotICAgICAgICBzdGQ6Omlmc3RyZWFtIGluRmls
ZShwYXRoLmNfc3RyKCkpOwotICAgICAgICBpZiAoIWluRmlsZS5mYWlsKCkpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGluRmlsZS5jbG9zZSgpOwotICAgICAgICAgICAgcmV0dXJuIE9wdGlvbmFs
PHN0ZDo6c3RyaW5nPihwYXRoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBPcHRp
b25hbDxzdGQ6OnN0cmluZz46OkludmFsaWQoKTsKLX0KLQotY2xhc3MgZEVRUENhc2VMaXN0Ci17
Ci0gIHB1YmxpYzoKLSAgICBkRVFQQ2FzZUxpc3Qoc2l6ZV90IHRlc3RNb2R1bGVJbmRleCk7Ci0K
LSAgICBzdHJ1Y3QgQ2FzZUluZm8KLSAgICB7Ci0gICAgICAgIENhc2VJbmZvKGNvbnN0IHN0ZDo6
c3RyaW5nICZkRVFQTmFtZSwKLSAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdU
ZXN0TmFtZSwKLSAgICAgICAgICAgICAgICAgaW50IGV4cGVjdGF0aW9uKQotICAgICAgICAgICAg
OiBtREVRUE5hbWUoZEVRUE5hbWUpLAotICAgICAgICAgICAgICBtR1Rlc3ROYW1lKGdUZXN0TmFt
ZSksCi0gICAgICAgICAgICAgIG1FeHBlY3RhdGlvbihleHBlY3RhdGlvbikKLSAgICAgICAgewot
ICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpzdHJpbmcgbURFUVBOYW1lOwotICAgICAgICBzdGQ6
OnN0cmluZyBtR1Rlc3ROYW1lOwotICAgICAgICBpbnQgbUV4cGVjdGF0aW9uOwotICAgIH07Ci0K
LSAgICB2b2lkIGluaXRpYWxpemUoKTsKLQotICAgIGNvbnN0IENhc2VJbmZvICZnZXRDYXNlSW5m
byhzaXplX3QgY2FzZUluZGV4KSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1Jbml0aWFs
aXplZCk7Ci0gICAgICAgIEFTU0VSVChjYXNlSW5kZXggPCBtQ2FzZUluZm9MaXN0LnNpemUoKSk7
Ci0gICAgICAgIHJldHVybiBtQ2FzZUluZm9MaXN0W2Nhc2VJbmRleF07Ci0gICAgfQotCi0gICAg
c2l6ZV90IG51bUNhc2VzKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtSW5pdGlhbGl6
ZWQpOwotICAgICAgICByZXR1cm4gbUNhc2VJbmZvTGlzdC5zaXplKCk7Ci0gICAgfQotCi0gIHBy
aXZhdGU6Ci0gICAgc3RkOjp2ZWN0b3I8Q2FzZUluZm8+IG1DYXNlSW5mb0xpc3Q7Ci0gICAgZ3B1
OjpHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyIG1UZXN0RXhwZWN0YXRpb25zUGFyc2VyOwotICAg
IGdwdTo6R1BVVGVzdEJvdENvbmZpZyBtVGVzdENvbmZpZzsKLSAgICBzaXplX3QgbVRlc3RNb2R1
bGVJbmRleDsKLSAgICBib29sIG1Jbml0aWFsaXplZDsKLX07Ci0KLWRFUVBDYXNlTGlzdDo6ZEVR
UENhc2VMaXN0KHNpemVfdCB0ZXN0TW9kdWxlSW5kZXgpCi0gICAgOiBtVGVzdE1vZHVsZUluZGV4
KHRlc3RNb2R1bGVJbmRleCksCi0gICAgICBtSW5pdGlhbGl6ZWQoZmFsc2UpCi17Ci19Ci0KLXZv
aWQgZEVRUENhc2VMaXN0Ojppbml0aWFsaXplKCkKLXsKLSAgICBpZiAobUluaXRpYWxpemVkKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1Jbml0aWFsaXplZCA9IHRydWU7
Ci0KLSAgICBzdGQ6OnN0cmluZyBleGVEaXIgPSBhbmdsZTo6R2V0RXhlY3V0YWJsZURpcmVjdG9y
eSgpOwotCi0gICAgc3RkOjpzdHJpbmdzdHJlYW0gY2FzZUxpc3RQYXRoU3RyOwotICAgIGNhc2VM
aXN0UGF0aFN0ciA8PCBleGVEaXIgPDwgZ19DYXNlTGlzdFJlbGF0aXZlUGF0aCA8PCBnX0Nhc2VM
aXN0RmlsZXNbbVRlc3RNb2R1bGVJbmRleF07Ci0gICAgc3RkOjpzdHJpbmcgY2FzZUxpc3RQYXRo
ID0gY2FzZUxpc3RQYXRoU3RyLnN0cigpOwotCi0gICAgT3B0aW9uYWw8c3RkOjpzdHJpbmc+IHRl
c3RFeHBlY3RhdGlvbnNQYXRoID0gRmluZFRlc3RFeHBlY3RhdGlvbnNQYXRoKGV4ZURpciwgbVRl
c3RNb2R1bGVJbmRleCk7Ci0gICAgaWYgKCF0ZXN0RXhwZWN0YXRpb25zUGF0aC52YWxpZCgpKQot
ICAgIHsKLSAgICAgICAgc3RkOjpjZXJyIDw8ICJGYWlsZWQgdG8gZmluZCB0ZXN0IGV4cGVjdGF0
aW9ucyBmaWxlLiIgPDwgc3RkOjplbmRsOwotICAgICAgICBEaWUoKTsKLSAgICB9Ci0KLSAgICBp
ZiAoIW1UZXN0RXhwZWN0YXRpb25zUGFyc2VyLkxvYWRUZXN0RXhwZWN0YXRpb25zRnJvbUZpbGUo
dGVzdEV4cGVjdGF0aW9uc1BhdGgudmFsdWUoKSkpCi0gICAgewotICAgICAgICBzdGQ6OnN0cmlu
Z3N0cmVhbSBlcnJvck1zZ1N0cmVhbTsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvICZtZXNzYWdl
IDogbVRlc3RFeHBlY3RhdGlvbnNQYXJzZXIuR2V0RXJyb3JNZXNzYWdlcygpKQotICAgICAgICB7
Ci0gICAgICAgICAgICBlcnJvck1zZ1N0cmVhbSA8PCBzdGQ6OmVuZGwgPDwgIiAiIDw8IG1lc3Nh
Z2U7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OmNlcnIgPDwgIkZhaWxlZCB0byBsb2FkIHRl
c3QgZXhwZWN0YXRpb25zLiIgPDwgZXJyb3JNc2dTdHJlYW0uc3RyKCkgPDwgc3RkOjplbmRsOwot
ICAgICAgICBEaWUoKTsKLSAgICB9Ci0KLSAgICBpZiAoIW1UZXN0Q29uZmlnLkxvYWRDdXJyZW50
Q29uZmlnKG51bGxwdHIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjZXJyIDw8ICJGYWlsZWQgdG8g
bG9hZCB0ZXN0IGNvbmZpZ3VyYXRpb24uIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIERpZSgpOwot
ICAgIH0KLQotICAgIHN0ZDo6aWZzdHJlYW0gY2FzZUxpc3RTdHJlYW0oY2FzZUxpc3RQYXRoKTsK
LSAgICBpZiAoY2FzZUxpc3RTdHJlYW0uZmFpbCgpKQotICAgIHsKLSAgICAgICAgc3RkOjpjZXJy
IDw8ICJGYWlsZWQgdG8gbG9hZCB0aGUgY2FzZSBsaXN0LiIgPDwgc3RkOjplbmRsOwotICAgICAg
ICBEaWUoKTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoIWNhc2VMaXN0U3RyZWFtLmVvZigpKQotICAg
IHsKLSAgICAgICAgc3RkOjpzdHJpbmcgaW5TdHJpbmc7Ci0gICAgICAgIHN0ZDo6Z2V0bGluZShj
YXNlTGlzdFN0cmVhbSwgaW5TdHJpbmcpOwotCi0gICAgICAgIHN0ZDo6c3RyaW5nIGRFUVBOYW1l
ID0gYW5nbGU6OlRyaW1TdHJpbmcoaW5TdHJpbmcsIGFuZ2xlOjprV2hpdGVzcGFjZUFTQ0lJKTsK
LSAgICAgICAgaWYgKGRFUVBOYW1lLmVtcHR5KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgc3RkOjpzdHJpbmcgZ1Rlc3ROYW1lID0gZEVRUE5hbWUuc3Vic3RyKGRFUVBOYW1lLmZp
bmQoJy4nKSArIDEpOwotICAgICAgICBpZiAoZ1Rlc3ROYW1lLmVtcHR5KCkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgc3RkOjpyZXBsYWNlKGdUZXN0TmFtZS5iZWdpbigpLCBnVGVz
dE5hbWUuZW5kKCksICcuJywgJ18nKTsKLQotICAgICAgICAvLyBPY2N1cnMgaW4gc29tZSBsdW1p
bmFuY2UgdGVzdHMKLSAgICAgICAgZ1Rlc3ROYW1lLmVyYXNlKHN0ZDo6cmVtb3ZlKGdUZXN0TmFt
ZS5iZWdpbigpLCBnVGVzdE5hbWUuZW5kKCksICctJyksIGdUZXN0TmFtZS5lbmQoKSk7Ci0KLSAg
ICAgICAgaW50IGV4cGVjdGF0aW9uID0gbVRlc3RFeHBlY3RhdGlvbnNQYXJzZXIuR2V0VGVzdEV4
cGVjdGF0aW9uKGRFUVBOYW1lLCBtVGVzdENvbmZpZyk7Ci0gICAgICAgIGlmIChleHBlY3RhdGlv
biAhPSBncHU6OkdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OmtHcHVUZXN0U2tpcCkKLSAgICAg
ICAgewotICAgICAgICAgICAgbUNhc2VJbmZvTGlzdC5wdXNoX2JhY2soQ2FzZUluZm8oZEVRUE5h
bWUsIGdUZXN0TmFtZSwgZXhwZWN0YXRpb24pKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdGVt
cGxhdGUgPHNpemVfdCBUZXN0TW9kdWxlSW5kZXg+Ci1jbGFzcyBkRVFQVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPHNpemVfdD4KLXsKLSAgcHVibGljOgotICAgIHN0YXRpYyB0
ZXN0aW5nOjppbnRlcm5hbDo6UGFyYW1HZW5lcmF0b3I8c2l6ZV90PiBHZXRUZXN0aW5nUmFuZ2Uo
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRlc3Rpbmc6OlJhbmdlPHNpemVfdD4oMCwgR2V0Q2Fz
ZUxpc3QoKS5udW1DYXNlcygpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc3RkOjpzdHJpbmcgR2V0
Q2FzZUdUZXN0TmFtZShzaXplX3QgY2FzZUluZGV4KQotICAgIHsKLSAgICAgICAgY29uc3QgYXV0
byAmY2FzZUluZm8gPSBHZXRDYXNlTGlzdCgpLmdldENhc2VJbmZvKGNhc2VJbmRleCk7Ci0gICAg
ICAgIHJldHVybiBjYXNlSW5mby5tR1Rlc3ROYW1lOwotICAgIH0KLQotICAgIHN0YXRpYyBjb25z
dCBkRVFQQ2FzZUxpc3QgJkdldENhc2VMaXN0KCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBkRVFQ
Q2FzZUxpc3Qgc0Nhc2VMaXN0KFRlc3RNb2R1bGVJbmRleCk7Ci0gICAgICAgIHNDYXNlTGlzdC5p
bml0aWFsaXplKCk7Ci0gICAgICAgIHJldHVybiBzQ2FzZUxpc3Q7Ci0gICAgfQotCi0gICAgc3Rh
dGljIHZvaWQgU2V0VXBUZXN0Q2FzZSgpCi0gICAgewotICAgICAgICBzUGFzc2VzICAgICAgICAg
ICA9IDA7Ci0gICAgICAgIHNGYWlscyAgICAgICAgICAgID0gMDsKLSAgICAgICAgc1VuZXhwZWN0
ZWRQYXNzZXMgPSAwOwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIFRlYXJEb3duVGVzdENhc2Uo
KTsKLQotICBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBydW5UZXN0KCkKLSAgICB7Ci0gICAgICAgIGNv
bnN0IGF1dG8gJmNhc2VJbmZvID0gR2V0Q2FzZUxpc3QoKS5nZXRDYXNlSW5mbyhHZXRQYXJhbSgp
KTsKLSAgICAgICAgc3RkOjpjb3V0IDw8IGNhc2VJbmZvLm1ERVFQTmFtZSA8PCBzdGQ6OmVuZGw7
Ci0KLSAgICAgICAgYm9vbCByZXN1bHQgPSBkZXFwX2xpYnRlc3Rlcl9ydW4oY2FzZUluZm8ubURF
UVBOYW1lLmNfc3RyKCkpOwotCi0gICAgICAgIGlmIChjYXNlSW5mby5tRXhwZWN0YXRpb24gPT0g
Z3B1OjpHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjprR3B1VGVzdFBhc3MpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEVYUEVDVF9UUlVFKHJlc3VsdCk7Ci0gICAgICAgICAgICBzUGFzc2VzICs9
IChyZXN1bHQgPyAxdSA6IDB1KTsKLSAgICAgICAgICAgIHNGYWlscyArPSAoIXJlc3VsdCA/IDF1
IDogMHUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHJlc3VsdCkKLSAgICAgICAgewot
ICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGV4cGVjdGVkIHRvIGZhaWwgYnV0IHBhc3Nl
ZCEiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgICAgIHNVbmV4cGVjdGVkUGFzc2VzKys7Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBzRmFpbHMrKzsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgc1Bhc3NlczsKLSAgICBz
dGF0aWMgdW5zaWduZWQgaW50IHNGYWlsczsKLSAgICBzdGF0aWMgdW5zaWduZWQgaW50IHNVbmV4
cGVjdGVkUGFzc2VzOwotfTsKLQotdGVtcGxhdGUgPHNpemVfdCBUZXN0TW9kdWxlSW5kZXg+Ci11
bnNpZ25lZCBpbnQgZEVRUFRlc3Q8VGVzdE1vZHVsZUluZGV4Pjo6c1Bhc3NlcyAgICAgICAgICAg
PSAwOwotdGVtcGxhdGUgPHNpemVfdCBUZXN0TW9kdWxlSW5kZXg+Ci11bnNpZ25lZCBpbnQgZEVR
UFRlc3Q8VGVzdE1vZHVsZUluZGV4Pjo6c0ZhaWxzICAgICAgICAgICAgPSAwOwotdGVtcGxhdGUg
PHNpemVfdCBUZXN0TW9kdWxlSW5kZXg+Ci11bnNpZ25lZCBpbnQgZEVRUFRlc3Q8VGVzdE1vZHVs
ZUluZGV4Pjo6c1VuZXhwZWN0ZWRQYXNzZXMgPSAwOwotCi0vLyBzdGF0aWMKLXRlbXBsYXRlIDxz
aXplX3QgVGVzdE1vZHVsZUluZGV4Pgotdm9pZCBkRVFQVGVzdDxUZXN0TW9kdWxlSW5kZXg+OjpU
ZWFyRG93blRlc3RDYXNlKCkKLXsKLSAgICB1bnNpZ25lZCBpbnQgdG90YWwgPSBzUGFzc2VzICsg
c0ZhaWxzOwotICAgIGZsb2F0IHBhc3NGcmFjICAgICA9IHN0YXRpY19jYXN0PGZsb2F0PihzUGFz
c2VzKSAvIHN0YXRpY19jYXN0PGZsb2F0Pih0b3RhbCkgKiAxMDAuMGY7Ci0gICAgZmxvYXQgZmFp
bEZyYWMgICAgID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNGYWlscykgLyBzdGF0aWNfY2FzdDxmbG9h
dD4odG90YWwpICogMTAwLjBmOwotICAgIHN0ZDo6Y291dCA8PCAiUGFzc2VkOiAiIDw8IHNQYXNz
ZXMgPDwgIi8iIDw8IHRvdGFsIDw8ICIgdGVzdHMuICgiIDw8IHBhc3NGcmFjIDw8ICIlKSIKLSAg
ICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgIGlmIChzRmFpbHMgPiAwKQotICAgIHsKLSAg
ICAgICAgc3RkOjpjb3V0IDw8ICJGYWlsZWQ6ICIgPDwgc0ZhaWxzIDw8ICIvIiA8PCB0b3RhbCA8
PCAiIHRlc3RzLiAoIiA8PCBmYWlsRnJhYyA8PCAiJSkiCi0gICAgICAgICAgICAgICAgICA8PCBz
dGQ6OmVuZGw7Ci0gICAgfQotICAgIGlmIChzVW5leHBlY3RlZFBhc3NlcyA+IDApCi0gICAgewot
ICAgICAgICBzdGQ6OmNvdXQgPDwgc1VuZXhwZWN0ZWRQYXNzZXMgPDwgIiB0ZXN0cyB1bmV4cGVj
dGVkbHkgcGFzc2VkLiIgPDwgc3RkOjplbmRsOwotICAgIH0KLX0KLQotLy8gVE9ETyhqbWFkaWxs
KTogYWRkIGRpZmZlcmVudCBwbGF0Zm9ybSBjb25maWdzLCBvciBhYmlsaXR5IHRvIGNob29zZSBw
bGF0Zm9ybQotI2RlZmluZSBBTkdMRV9JTlNUQU5USUFURV9ERVFQX1RFU1RfQ0FTRShERVFQX1RF
U1QsIE4pICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgY2xhc3MgREVRUF9URVNUIDog
cHVibGljIGRFUVBUZXN0PE4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH07ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgVEVTVF9QKERFUVBfVEVTVCwgRGVmYXVsdCkgeyBydW5UZXN0KCk7IH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIElO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKCwgREVRUF9URVNULCBERVFQX1RFU1Q6OkdldFRlc3RpbmdS
YW5nZSgpLCAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW10oY29uc3Qg
dGVzdGluZzo6VGVzdFBhcmFtSW5mbzxzaXplX3Q+ICZpbmZvKSB7ICAgIFwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIERFUVBfVEVTVDo6R2V0Q2FzZUdUZXN0TmFtZShp
bmZvLnBhcmFtKTsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCi0KLSNpZmRlZiBB
TkdMRV9ERVFQX0dMRVMyX1RFU1RTCi1BTkdMRV9JTlNUQU5USUFURV9ERVFQX1RFU1RfQ0FTRShk
RVFQX0dMRVMyLCAwKTsKLSNlbmRpZgotCi0jaWZkZWYgQU5HTEVfREVRUF9HTEVTM19URVNUUwot
QU5HTEVfSU5TVEFOVElBVEVfREVRUF9URVNUX0NBU0UoZEVRUF9HTEVTMywgMSk7Ci0jZW5kaWYK
LQotI2lmZGVmIEFOR0xFX0RFUVBfR0xFUzMxX1RFU1RTCi1BTkdMRV9JTlNUQU5USUFURV9ERVFQ
X1RFU1RfQ0FTRShkRVFQX0dMRVMzMSwgMik7Ci0jZW5kaWYKLQotI2lmZGVmIEFOR0xFX0RFUVBf
RUdMX1RFU1RTCi1BTkdMRV9JTlNUQU5USUFURV9ERVFQX1RFU1RfQ0FTRShkRVFQX0VHTCwgMyk7
Ci0jZW5kaWYKLQotfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfZ3Rlc3Rf
bWFpbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0
L2FuZ2xlX2RlcXBfZ3Rlc3RfbWFpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDE1NDgyMGEyNmI4OGRkYTlhNTRjZTNhZjFiNzEwNGNiOGE3NmI0ZGQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX2d0ZXN0X21haW4uY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTkgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0v
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIGFuZ2xlX2RlcXBfZ3Rlc3RfbWFp
bjoKLS8vICAgRW50cnkgcG9pbnQgZm9yIHN0YW5kYWxvbmUgZEVRUCB0ZXN0cy4KLQotI2luY2x1
ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLSNpbmNsdWRlICJhbmdsZV9kZXFwX2xpYnRlc3Rlci5oIgot
Ci1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi17Ci0gICAgdGVzdGluZzo6SW5pdEdv
b2dsZVRlc3QoJmFyZ2MsIGFyZ3YpOwotICAgIGludCBydCA9IFJVTl9BTExfVEVTVFMoKTsKLSAg
ICBkZXFwX2xpYnRlc3Rlcl9zaHV0ZG93bl9wbGF0Zm9ybSgpOwotICAgIHJldHVybiBydDsKLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBv
cnQvYW5nbGVfZGVxcF9saWJ0ZXN0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9kZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9saWJ0ZXN0ZXIuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggM2U2MGY3NGZlNTFmYzcyZWI3NzZhZGZmNjY4NjkwZTE2OThmMWUyYy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfbGlidGVzdGVy
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0KGMpIDIw
MTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBhbmds
ZV9kZXFwX2xpYnRlc3Rlci5oOgotLy8gICBFeHBvcnRzIGZvciB0aGUgQU5HTEUgZEVRUCBsaWJ0
ZXN0ZXIgbW9kdWxlLgotCi0jaWZuZGVmIEFOR0xFX0RFUVBfTElCVEVTVEVSX0hfCi0jZGVmaW5l
IEFOR0xFX0RFUVBfTElCVEVTVEVSX0hfCi0KLSNpZiBkZWZpbmVkKF9XSU4zMikKLSMgICBpZiBk
ZWZpbmVkKEFOR0xFX0RFUVBfTElCVEVTVEVSX0lNUExFTUVOVEFUSU9OKQotIyAgICAgICBkZWZp
bmUgQU5HTEVfTElCVEVTVEVSX0VYUE9SVCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLSMgICBlbHNl
Ci0jICAgICAgIGRlZmluZSBBTkdMRV9MSUJURVNURVJfRVhQT1JUIF9fZGVjbHNwZWMoZGxsaW1w
b3J0KQotIyAgIGVuZGlmCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKQotIyAgIGlmIGRlZmluZWQo
QU5HTEVfREVRUF9MSUJURVNURVJfSU1QTEVNRU5UQVRJT04pCi0jICAgICAgIGRlZmluZSBBTkdM
RV9MSUJURVNURVJfRVhQT1JUIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0Iikp
KQotIyAgIGVsc2UKLSMgICAgICAgZGVmaW5lIEFOR0xFX0xJQlRFU1RFUl9FWFBPUlQKLSMgICBl
bmRpZgotI2Vsc2UKLSMgICBkZWZpbmUgQU5HTEVfTElCVEVTVEVSX0VYUE9SVAotI2VuZGlmCi0K
LS8vIEV4cG9ydGVkIHRvIHRoZSB0ZXN0ZXIgYXBwLgotQU5HTEVfTElCVEVTVEVSX0VYUE9SVCBp
bnQgZGVxcF9saWJ0ZXN0ZXJfbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKTsKLUFO
R0xFX0xJQlRFU1RFUl9FWFBPUlQgdm9pZCBkZXFwX2xpYnRlc3Rlcl9zaHV0ZG93bl9wbGF0Zm9y
bSgpOwotQU5HTEVfTElCVEVTVEVSX0VYUE9SVCBib29sIGRlcXBfbGlidGVzdGVyX3J1bihjb25z
dCBjaGFyICpjYXNlTmFtZSk7Ci0KLSNlbmRpZiAvLyBBTkdMRV9ERVFQX0xJQlRFU1RFUl9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9y
dC9hbmdsZV9kZXFwX2xpYnRlc3Rlcl9tYWluLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9saWJ0ZXN0ZXJfbWFpbi5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlYjI0YTkyYTkwOTAwNjAxZDAwZmY5MWM0NDE1
YjQ1Zjg4ZTcxNmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9hbmdsZV9k
ZXFwX2xpYnRlc3Rlcl9tYWluLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0MyArMCwwIEBACi0v
LwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCi0vLwotLy8gZGVxcF9saWJ0ZXN0ZXJfbWFpbi5jcHA6IEVudHJ5IHBvaW50IGZvciB0ZXN0
ZXIgRExMLgotCi0jaW5jbHVkZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi0jaW5j
bHVkZSAiYW5nbGVfZGVxcF9saWJ0ZXN0ZXIuaCIKLSNpbmNsdWRlICJjb21tb24vYW5nbGV1dGls
cy5oIgotI2luY2x1ZGUgImRlTWF0aC5oIgotI2luY2x1ZGUgImRlVW5pcXVlUHRyLmhwcCIKLSNp
bmNsdWRlICJ0Y3VBcHAuaHBwIgotI2luY2x1ZGUgInRjdUNvbW1hbmRMaW5lLmhwcCIKLSNpbmNs
dWRlICJ0Y3VEZWZzLmhwcCIKLSNpbmNsdWRlICJ0Y3VQbGF0Zm9ybS5ocHAiCi0jaW5jbHVkZSAi
dGN1UmFuZG9tT3JkZXJFeGVjdXRvci5oIgotI2luY2x1ZGUgInRjdVJlc291cmNlLmhwcCIKLSNp
bmNsdWRlICJ0Y3VUZXN0TG9nLmhwcCIKLSNpbmNsdWRlICJzeXN0ZW1fdXRpbHMuaCIKLQotI2lm
IChERV9PUyA9PSBERV9PU19XSU4zMikKLSNpbmNsdWRlIDxXaW5kb3dzLmg+Ci0jZWxpZiAoREVf
T1MgPT0gREVfT1NfVU5JWCkgfHwgKERFX09TID09IERFX09TX09TWCkKLSNpbmNsdWRlIDxzeXMv
dW5pc3RkLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4K
LSNlbGlmIChERV9PUyA9PSBERV9PU19BTkRST0lEKQotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0j
ZW5kaWYKLQotdGN1OjpQbGF0Zm9ybSAqY3JlYXRlUGxhdGZvcm0oKTsKLQotbmFtZXNwYWNlCi17
Ci0KLXRjdTo6UGxhdGZvcm0gKmdfcGxhdGZvcm0gPSBudWxscHRyOwotdGN1OjpDb21tYW5kTGlu
ZSAqZ19jbWRMaW5lID0gbnVsbHB0cjsKLXRjdTo6RGlyQXJjaGl2ZSAqZ19hcmNoaXZlID0gbnVs
bHB0cjsKLXRjdTo6VGVzdExvZyAqZ19sb2cgPSBudWxscHRyOwotdGN1OjpUZXN0Q29udGV4dCAq
Z190ZXN0Q3R4ID0gbnVsbHB0cjsKLXRjdTo6VGVzdFBhY2thZ2VSb290ICpnX3Jvb3QgPSBudWxs
cHRyOwotdGN1OjpSYW5kb21PcmRlckV4ZWN1dG9yICpnX2V4ZWN1dG9yID0gbnVsbHB0cjsKLQot
Y29uc3QgY2hhciAqZ19kRVFQRGF0YVNlYXJjaERpcnNbXSA9IHsKLSAgICAiZGF0YSIsCi0gICAg
InRoaXJkX3BhcnR5L2RlcXAvZGF0YSIsCi0gICAgIi4uL3RoaXJkX3BhcnR5L2RlcXAvc3JjL2Rh
dGEiLAotICAgICJkZXFwX3N1cHBvcnQvZGF0YSIsCi0gICAgInRoaXJkX3BhcnR5L2RlcXAvc3Jj
L2RhdGEiLAotICAgICIuLi8uLi90aGlyZF9wYXJ0eS9kZXFwL3NyYy9kYXRhIiwKLSAgICAiLi4v
Li4vLi4vdGhpcmRfcGFydHkvZGVxcC9zcmMvZGF0YSIsCi0gICAgIi4uLy4uL3NkY2FyZC9jaHJv
bWl1bV90ZXN0c19yb290L3RoaXJkX3BhcnR5L2RlcXAvc3JjL2RhdGEiLAotfTsKLQotLy8gVE9E
TyhqbWFkaWxsKTogdXBzdHJlYW0gdG8gZEVRUD8KLSNpZiAoREVfT1MgPT0gREVfT1NfV0lOMzIp
Ci1kZUJvb2wgZGVJc0Rpcihjb25zdCBjaGFyICpmaWxlbmFtZSkKLXsKLSAgICBXSU4zMl9GSUxF
X0FUVFJJQlVURV9EQVRBIGZpbGVJbmZvcm1hdGlvbjsKLQotICAgIEJPT0wgcmVzdWx0ID0gR2V0
RmlsZUF0dHJpYnV0ZXNFeEEoZmlsZW5hbWUsIEdldEZpbGVFeEluZm9TdGFuZGFyZCwgJmZpbGVJ
bmZvcm1hdGlvbik7Ci0gICAgaWYgKHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIERXT1JEIGF0dHJp
YnMgPSBmaWxlSW5mb3JtYXRpb24uZHdGaWxlQXR0cmlidXRlczsKLSAgICAgICAgcmV0dXJuIChh
dHRyaWJzICE9IElOVkFMSURfRklMRV9BVFRSSUJVVEVTKSAmJiAoKGF0dHJpYnMgJiBGSUxFX0FU
VFJJQlVURV9ESVJFQ1RPUlkpID4gMCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQot
I2VsaWYgKERFX09TID09IERFX09TX1VOSVgpIHx8IChERV9PUyA9PSBERV9PU19PU1gpIHx8IChE
RV9PUyA9PSBERV9PU19BTkRST0lEKQotZGVCb29sIGRlSXNEaXIoY29uc3QgY2hhciAqZmlsZW5h
bWUpCi17Ci0gICAgc3RydWN0IHN0YXQgc3Q7Ci0gICAgaW50IHJlc3VsdCA9IHN0YXQoZmlsZW5h
bWUsICZzdCk7Ci0gICAgcmV0dXJuIHJlc3VsdCA9PSAwICYmICgoc3Quc3RfbW9kZSAmIFNfSUZE
SVIpID09IFNfSUZESVIpOwotfQotI2Vsc2UKLSNlcnJvciBUT0RPKGptYWRpbGwpOiBzdXBwb3J0
IG90aGVyIHBsYXRmb3JtcwotI2VuZGlmCi0KLWJvb2wgRmluZERhdGFEaXIoc3RkOjpzdHJpbmcg
KmRhdGFEaXJPdXQpCi17Ci0gICAgZm9yIChhdXRvIHNlYXJjaERpciA6IGdfZEVRUERhdGFTZWFy
Y2hEaXJzKQotICAgIHsKLSAgICAgICAgaWYgKGRlSXNEaXIoKHN0ZDo6c3RyaW5nKHNlYXJjaERp
cikgKyAiL2dsZXMyIikuY19zdHIoKSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgICpkYXRhRGly
T3V0ID0gc2VhcmNoRGlyOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQot
ICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBkaXJTdHJlYW07Ci0gICAgICAgIGRpclN0cmVhbSA8
PCBhbmdsZTo6R2V0RXhlY3V0YWJsZURpcmVjdG9yeSgpIDw8ICIvIiA8PCBzZWFyY2hEaXI7Ci0g
ICAgICAgIHN0ZDo6c3RyaW5nIGRhdGFEaXIgPSBkaXJTdHJlYW0uc3RyKCk7Ci0gICAgICAgIGRp
clN0cmVhbSA8PCAiL2dsZXMyIjsKLSAgICAgICAgc3RkOjpzdHJpbmcgc2VhcmNoUGF0aCA9IGRp
clN0cmVhbS5zdHIoKTsKLQotICAgICAgICBpZiAoZGVJc0RpcihzZWFyY2hQYXRoLmNfc3RyKCkp
KQotICAgICAgICB7Ci0gICAgICAgICAgICAqZGF0YURpck91dCA9IGRhdGFEaXI7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotc3RkOjpzdHJpbmcgR2V0TG9nRmlsZU5hbWUoc3RkOjpzdHJpbmcgZGVxcERhdGFEaXIp
Ci17Ci0jaWYgKERFX09TID09IERFX09TX0FORFJPSUQpCi0gICAgLy8gT24gQW5kcm9pZCBleGVj
dXRhYmxlIGRpciBpcyBub3Qgd3JpdGFibGUsIHNvIHVzZSBkYXRhIGRpciBpbnN0ZWFkCi0gICAg
cmV0dXJuIGRlcXBEYXRhRGlyICsgIi8iICsgZ19jbWRMaW5lLT5nZXRMb2dGaWxlTmFtZSgpOwot
I2Vsc2UKLSAgICByZXR1cm4gZ19jbWRMaW5lLT5nZXRMb2dGaWxlTmFtZSgpOwotI2VuZGlmCi19
Ci0KLWJvb2wgSW5pdFBsYXRmb3JtKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCi17Ci0g
ICAgdHJ5Ci0gICAgewotI2lmIChERV9PUyAhPSBERV9PU19XSU4zMikKLSAgICAgICAgLy8gU2V0
IHN0ZG91dCB0byBsaW5lLWJ1ZmZlcmVkIG1vZGUgKHdpbGwgYmUgZnVsbHkgYnVmZmVyZWQgYnkg
ZGVmYXVsdCBpZiBzdGRvdXQgaXMgcGlwZSkuCi0gICAgICAgIHNldHZidWYoc3Rkb3V0LCBERV9O
VUxMLCBfSU9MQkYsIDQgKiAxMDI0KTsKLSNlbmRpZgotICAgICAgICBnX3BsYXRmb3JtID0gY3Jl
YXRlUGxhdGZvcm0oKTsKLQotICAgICAgICBpZiAoIWRlU2V0Um91bmRpbmdNb2RlKERFX1JPVU5E
SU5HTU9ERV9UT19ORUFSRVNUKSkKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8
ICJGYWlsZWQgdG8gc2V0IGZsb2F0aW5nIHBvaW50IHJvdW5kaW5nIG1vZGUuIiA8PCBzdGQ6OmVu
ZGw7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6
OnN0cmluZyBkZXFwRGF0YURpcjsKLSAgICAgICAgaWYgKCFGaW5kRGF0YURpcigmZGVxcERhdGFE
aXIpKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIkZhaWxlZCB0byBmaW5k
IGRFUVAgZGF0YSBkaXJlY3RvcnkuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBnX2NtZExpbmUgPSBuZXcgdGN1OjpDb21tYW5k
TGluZShhcmdjLCBhcmd2KTsKLSAgICAgICAgZ19hcmNoaXZlID0gbmV3IHRjdTo6RGlyQXJjaGl2
ZShkZXFwRGF0YURpci5jX3N0cigpKTsKLSAgICAgICAgZ19sb2cgICAgID0gbmV3IHRjdTo6VGVz
dExvZyhHZXRMb2dGaWxlTmFtZShkZXFwRGF0YURpcikuY19zdHIoKSwgZ19jbWRMaW5lLT5nZXRM
b2dGbGFncygpKTsKLSAgICAgICAgZ190ZXN0Q3R4ID0gbmV3IHRjdTo6VGVzdENvbnRleHQoKmdf
cGxhdGZvcm0sICpnX2FyY2hpdmUsICpnX2xvZywgKmdfY21kTGluZSwgREVfTlVMTCk7Ci0gICAg
ICAgIGdfcm9vdCA9IG5ldyB0Y3U6OlRlc3RQYWNrYWdlUm9vdCgqZ190ZXN0Q3R4LCB0Y3U6OlRl
c3RQYWNrYWdlUmVnaXN0cnk6OmdldFNpbmdsZXRvbigpKTsKLSAgICAgICAgZ19leGVjdXRvciA9
IG5ldyB0Y3U6OlJhbmRvbU9yZGVyRXhlY3V0b3IoKmdfcm9vdCwgKmdfdGVzdEN0eCk7Ci0gICAg
fQotICAgIGNhdGNoIChjb25zdCBzdGQ6OmV4Y2VwdGlvbiYgZSkKLSAgICB7Ci0gICAgICAgIHRj
dTo6ZGllKCIlcyIsIGUud2hhdCgpKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotLy8gRXhw
b3J0ZWQgdG8gdGhlIHRlc3RlciBhcHAuCi1BTkdMRV9MSUJURVNURVJfRVhQT1JUIGludCBkZXFw
X2xpYnRlc3Rlcl9tYWluKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCi17Ci0gICAgaWYg
KCFJbml0UGxhdGZvcm0oYXJnYywgYXJndikpCi0gICAgewotICAgICAgICB0Y3U6OmRpZSgiQ291
bGQgbm90IGluaXRpYWxpemUgdGhlIGRFUVAgcGxhdGZvcm0iKTsKLSAgICB9Ci0KLSAgICB0cnkK
LSAgICB7Ci0gICAgICAgIGRlOjpVbmlxdWVQdHI8dGN1OjpBcHA+IGFwcChuZXcgdGN1OjpBcHAo
KmdfcGxhdGZvcm0sICpnX2FyY2hpdmUsICpnX2xvZywgKmdfY21kTGluZSkpOwotCi0gICAgICAg
IC8vIE1haW4gbG9vcC4KLSAgICAgICAgZm9yICg7OykKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKCFhcHAtPml0ZXJhdGUoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgIH0KLSAgICBjYXRjaCAoY29uc3Qgc3RkOjpleGNlcHRpb24gJmUpCi0gICAgewotICAgICAg
ICBkZXFwX2xpYnRlc3Rlcl9zaHV0ZG93bl9wbGF0Zm9ybSgpOwotICAgICAgICB0Y3U6OmRpZSgi
JXMiLCBlLndoYXQoKSk7Ci0gICAgfQotCi0gICAgZGVxcF9saWJ0ZXN0ZXJfc2h1dGRvd25fcGxh
dGZvcm0oKTsKLSAgICByZXR1cm4gMDsKLX0KLQotQU5HTEVfTElCVEVTVEVSX0VYUE9SVCB2b2lk
IGRlcXBfbGlidGVzdGVyX3NodXRkb3duX3BsYXRmb3JtKCkKLXsKLSAgICBkZWxldGUgZ19leGVj
dXRvcjsKLSAgICBkZWxldGUgZ19yb290OwotICAgIGRlbGV0ZSBnX3Rlc3RDdHg7Ci0gICAgZGVs
ZXRlIGdfbG9nOwotICAgIGRlbGV0ZSBnX2FyY2hpdmU7Ci0gICAgZGVsZXRlIGdfY21kTGluZTsK
LSAgICBkZWxldGUgZ19wbGF0Zm9ybTsKLX0KLQotQU5HTEVfTElCVEVTVEVSX0VYUE9SVCBib29s
IGRlcXBfbGlidGVzdGVyX3J1bihjb25zdCBjaGFyICpjYXNlTmFtZSkKLXsKLSAgICBjb25zdCBj
aGFyICplbXB0eVN0cmluZyA9ICIiOwotICAgIGlmIChnX3BsYXRmb3JtID09IG51bGxwdHIgJiYg
IUluaXRQbGF0Zm9ybSgxLCAmZW1wdHlTdHJpbmcpKQotICAgIHsKLSAgICAgICAgdGN1OjpkaWUo
IkZhaWxlZCB0byBpbml0aWFsaXplIHBsYXRmb3JtLiIpOwotICAgIH0KLQotICAgIHRyeQotICAg
IHsKLSAgICAgICAgLy8gUG9sbCBwbGF0Zm9ybSBldmVudHMKLSAgICAgICAgY29uc3QgYm9vbCBw
bGF0Zm9ybU9rID0gZ19wbGF0Zm9ybS0+cHJvY2Vzc0V2ZW50cygpOwotCi0gICAgICAgIGlmIChw
bGF0Zm9ybU9rKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCB0Y3U6OlRlc3RTdGF0dXMg
JnJlc3VsdCA9IGdfZXhlY3V0b3ItPmV4ZWN1dGUoY2FzZU5hbWUpOwotICAgICAgICAgICAgc3dp
dGNoIChyZXN1bHQuZ2V0Q29kZSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNh
c2UgUVBfVEVTVF9SRVNVTFRfUEFTUzoKLSAgICAgICAgICAgICAgICBjYXNlIFFQX1RFU1RfUkVT
VUxUX05PVF9TVVBQT1JURUQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICAgICAgICAgIGNhc2UgUVBfVEVTVF9SRVNVTFRfUVVBTElUWV9XQVJOSU5HOgotICAgICAg
ICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlF1YWxpdHkgd2FybmluZyEgIiA8PCByZXN1bHQu
Z2V0RGVzY3JpcHRpb24oKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICAgICAgICAgIGNhc2UgUVBfVEVTVF9SRVNVTFRfQ09NUEFUSUJJTElU
WV9XQVJOSU5HOgotICAgICAgICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIkNvbXBhdGlibGl0
eSB3YXJuaW5nISAiIDw8IHJlc3VsdC5nZXREZXNjcmlwdGlvbigpIDw8IHN0ZDo6ZW5kbDsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJB
Ym9ydGVkIHRlc3QhIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0Y2gg
KGNvbnN0IHN0ZDo6ZXhjZXB0aW9uICZlKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJF
eGNlcHRpb24gcnVubmluZyB0ZXN0OiAiIDw8IGUud2hhdCgpIDw8IHN0ZDo6ZW5kbDsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfdGVzdHNfbWFpbi5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBf
dGVzdHNfbWFpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2OGYxYzFjZmU4
OWUyMjg5Nzk0MzdlOTUyMzg1Y2M3YzYwM2VjZGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2Rl
cXBfc3VwcG9ydC9hbmdsZV9kZXFwX3Rlc3RzX21haW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTQgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gYW5nbGVfZGVxcF90ZXN0c19tYWluLmNwcDogRW50
cnkgcG9pbnQgZm9yIEFOR0xFJ3MgZEVRUCB0ZXN0cy4KLQotI2luY2x1ZGUgImFuZ2xlX2RlcXBf
bGlidGVzdGVyLmgiCi0KLWludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCi17
Ci0gICAgcmV0dXJuIGRlcXBfbGlidGVzdGVyX21haW4oYXJnYywgYXJndik7Ci19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBf
ZWdsX3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9lZ2xfdGVzdF9leHBlY3RhdGlvbnMudHh0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODlkM2E2ZmUxNjg1YjU2NjQyMWJjOThjZWRlNDMyYmVi
YzZjNDI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9lZ2xfdGVz
dF9leHBlY3RhdGlvbnMudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjYwICswLDAgQEAKLS8vIENv
cHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotCi0v
LyBUaGlzIGZpbGUgY29udGFpbnMgYSBsaXN0IG9mIGRlZmVjdGl2ZSBkRVFQIGNvbmZvcm1hbmNl
IHRlc3RzLiBUaGUgZXhwZWN0ZWQKLS8vIGZvcm1hdCBpczoKLS8vICB7QlVHI30ge01PRElGSUVS
U30gOiB7VEVTVF9OQU1FfSA9IHtQQVNTLEZBSUwsRkxBS1ksVElNRU9VVCxTS0lQfQotLy8KLS8v
IE1PRElGSUVSUyBjYW4gYmUgYSBjb21iaW5hdGlvbiBvZiB0aGUgYmVsb3cgbGlzdDoKLS8vICBX
SU4gWFAgVklTVEEgV0lONyBNQUMgTEVPUEFSRCBTTk9XTEVPUEFSRCBMSU9OIExJTlVYIENIUk9N
RU9TIE1PVU5UQUlOTElPTgotLy8gIE1BVkVSSUNLUwotLy8gIE5WSURJQSBBTUQgSU5URUwKLS8v
ICAweGFiY2QgLSBHUFUgUENJIGRldmljZSBJRC4gU3BlY2lmeWluZyBhIFBDSSBpZCByZXF1aXJl
cyBhIHZlbmRvci4KLS8vICBERUJVRyBSRUxFQVNFCi0vLyBUT0RPKGptYWRpbGwpOiBBZGQgQU5H
TEUgUmVuZGVyZXIgc2VsZWN0aW9uIG1vZGlmaWVycwotLy8KLS8vIFRFU1RfTkFNRSBjYW4gYmUg
YSBzcGVjaWZpYyB0ZXN0IG5hbWUsIG9yIGhhdmUgYSAnKicgaW4gdGhlIGVuZCwgd2hpY2gKLS8v
IGluZGljYXRlcyBhIHByZWZpeCBtYXRjaGluZy4KLS8vCi0vLyBFeGFtcGxlczoKLS8vICA5MTUz
MCBNQUMgV0lOIExJTlVYIDogY29udGV4dF9sb3N0X3Jlc3RvcmVkID0gVElNRU9VVAotLy8gIDkx
NTMzIFdJTiA6IGdsX21pbl91bmlmb3JtcyA9IEZBSUwKLS8vICA5MTUzMSBNQUMgV0lOIExJTlVY
IDogY29uZm9ybWFuY2VfbW9yZV8qID0gU0tJUAotLy8gIDkxNTMyIE1BQyBOVklESUEgMHgwNjQw
IDogdGV4X2ltYWdlX2FuZF9zdWJfaW1hZ2VfMmRfd2l0aF92aWRlbyA9IFBBU1MgRkFJTAotCi0v
LyBBTkdMRSBkb2VzIG5vdCB5ZXQgc3VwcG9ydCBtdWx0aXRocmVhZGluZwotMTM0MCBXSU4gTUFD
IExJTlVYIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5zaGFyaW5nLmdsZXMyLm11bHRpdGhyZWFkLiog
PSBTS0lQCi0xMzQwIFdJTiBNQUMgTElOVVggOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm11bHRpdGhy
ZWFkLiogPSBTS0lQCi0xMzQwIFdJTiBNQUMgTElOVVggOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJl
bmRlci5tdWx0aV90aHJlYWQuKiA9IFNLSVAKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8v
Ci0vLyAgVGVtcHJvcnkgZW50cmllczogdGhleSBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHRoZSBi
dWdzIGFyZSBmaXhlZC4KLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyBUT0RPKGpt
YWRpbGwpOiBUcmlhZ2UgdGhlc2UgaW50byBwZXJtYW5hbmVudCBhbmQgdGVtcG9yYXJ5IGZhaWx1
cmVzLgotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxl
LndpbmRvdy5yZ2I1NjVfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS53aW5kb3cucmdiNTY1X2RlcHRo
X25vX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlf
c3VyZmFjZS5zaW1wbGUud2luZG93LnJnYjU2NV9kZXB0aF9zdGVuY2lsID0gU0tJUAotMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLndpbmRvdy5yZ2I4
ODhfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS53aW5kb3cucmdiODg4X2RlcHRoX25vX3N0ZW5jaWwg
PSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1w
bGUud2luZG93LnJnYjg4OF9kZXB0aF9zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLndpbmRvdy5yZ2JhNDQ0NF9ub19kZXB0
aF9ub19zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5
X3N1cmZhY2Uuc2ltcGxlLndpbmRvdy5yZ2JhNDQ0NF9kZXB0aF9ub19zdGVuY2lsID0gU0tJUAot
MTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLndpbmRv
dy5yZ2JhNDQ0NF9kZXB0aF9zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLndpbmRvdy5yZ2JhNTU1MV9ub19kZXB0aF9ub19z
dGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZh
Y2Uuc2ltcGxlLndpbmRvdy5yZ2JhNTU1MV9kZXB0aF9ub19zdGVuY2lsID0gU0tJUAotMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLndpbmRvdy5yZ2Jh
NTU1MV9kZXB0aF9zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFs
LnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLndpbmRvdy5yZ2JhODg4OF9ub19kZXB0aF9ub19zdGVuY2ls
ID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2lt
cGxlLndpbmRvdy5yZ2JhODg4OF9kZXB0aF9ub19zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBk
RVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLndpbmRvdy5yZ2JhODg4OF9k
ZXB0aF9zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5
X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdiNTY1X25vX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQ
Ci0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUucGJ1
ZmZlci5yZ2I1NjVfZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5wYnVmZmVyLnJnYjU2NV9kZXB0aF9zdGVu
Y2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uu
c2ltcGxlLnBidWZmZXIucmdiODg4X25vX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJ
TiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2I4
ODhfZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5wYnVmZmVyLnJnYjg4OF9kZXB0aF9zdGVuY2lsID0gU0tJ
UAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBi
dWZmZXIucmdiYTQ0NDRfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5wYnVmZmVyLnJnYmE0NDQ0X2Rl
cHRoX25vX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVl
cnlfc3VyZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2JhNDQ0NF9kZXB0aF9zdGVuY2lsID0gU0tJUAot
MTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZm
ZXIucmdiYTU1NTFfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1F
R0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5wYnVmZmVyLnJnYmE1NTUxX2RlcHRo
X25vX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlf
c3VyZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2JhNTU1MV9kZXB0aF9zdGVuY2lsID0gU0tJUAotMTM0
MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIu
cmdiYTg4ODhfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5wYnVmZmVyLnJnYmE4ODg4X2RlcHRoX25v
X3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3Vy
ZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2JhODg4OF9kZXB0aF9zdGVuY2lsID0gU0tJUAotMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS53aW5k
b3cucmdiNTY1X25vX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLndpbmRvdy5yZ2I1NjVfZGVw
dGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVy
eV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUud2luZG93LnJnYjU2NV9kZXB0aF9zdGVuY2lsID0gU0tJ
UAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJp
YnV0ZS53aW5kb3cucmdiODg4X25vX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLndpbmRvdy5y
Z2I4ODhfZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUud2luZG93LnJnYjg4OF9kZXB0aF9zdGVu
Y2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uu
c2V0X2F0dHJpYnV0ZS53aW5kb3cucmdiYTQ0NDRfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAK
LTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1
dGUud2luZG93LnJnYmE0NDQ0X2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLndpbmRvdy5yZ2Jh
NDQ0NF9kZXB0aF9zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFs
LnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS53aW5kb3cucmdiYTU1NTFfbm9fZGVwdGhfbm9f
c3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJm
YWNlLnNldF9hdHRyaWJ1dGUud2luZG93LnJnYmE1NTUxX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQ
Ci0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmli
dXRlLndpbmRvdy5yZ2JhNTU1MV9kZXB0aF9zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS53aW5kb3cucmdiYTg4
ODhfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUud2luZG93LnJnYmE4ODg4X2RlcHRoX25v
X3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3Vy
ZmFjZS5zZXRfYXR0cmlidXRlLndpbmRvdy5yZ2JhODg4OF9kZXB0aF9zdGVuY2lsID0gU0tJUAot
MTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0
ZS5wYnVmZmVyLnJnYjU2NV9ub19kZXB0aF9ub19zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBk
RVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJn
YjU2NV9kZXB0aF9ub19zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYjU2NV9kZXB0aF9zdGVu
Y2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uu
c2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYjg4OF9ub19kZXB0aF9ub19zdGVuY2lsID0gU0tJUAot
MTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0
ZS5wYnVmZmVyLnJnYjg4OF9kZXB0aF9ub19zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYjg4
OF9kZXB0aF9zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1
ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYmE0NDQ0X25vX2RlcHRoX25vX3N0
ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFj
ZS5zZXRfYXR0cmlidXRlLnBidWZmZXIucmdiYTQ0NDRfZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAK
LTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1
dGUucGJ1ZmZlci5yZ2JhNDQ0NF9kZXB0aF9zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYmE1
NTUxX25vX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLnBidWZmZXIucmdiYTU1NTFfZGVwdGhf
bm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9z
dXJmYWNlLnNldF9hdHRyaWJ1dGUucGJ1ZmZlci5yZ2JhNTU1MV9kZXB0aF9zdGVuY2lsID0gU0tJ
UAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJp
YnV0ZS5wYnVmZmVyLnJnYmE4ODg4X25vX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJ
TiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLnBidWZm
ZXIucmdiYTg4ODhfZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUucGJ1ZmZlci5yZ2JhODg4OF9k
ZXB0aF9zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5
X2NvbmZpZy5nZXRfY29uZmlncy5nZXRfY29uZmlnc19ib3VuZHMgPSBGQUlMCi0xMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHku
YnVmZmVyX3NpemUgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3Nl
X2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkucmVkX3NpemUgPSBGQUlMCi0xMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHku
Z3JlZW5fc2l6ZSA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2Vf
Y29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS5ibHVlX3NpemUgPSBGQUlMCi0xMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHku
bHVtaW5hbmNlX3NpemUgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hv
b3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkuYWxwaGFfc2l6ZSA9IEZBSUwKLTEzNDAg
V0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25f
b25seS5hbHBoYV9tYXNrX3NpemUgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9u
YWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkuYmluZF90b190ZXh0dXJlX3Jn
YiA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNp
bXBsZS5zZWxlY3Rpb25fb25seS5iaW5kX3RvX3RleHR1cmVfcmdiYSA9IEZBSUwKLTEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25s
eS5jb2xvcl9idWZmZXJfdHlwZSA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS5jb25maWdfY2F2ZWF0ID0gRkFJ
TAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNl
bGVjdGlvbl9vbmx5LmNvbmZpZ19pZCA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS5kZXB0aF9zaXplID0gRkFJ
TAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNl
bGVjdGlvbl9vbmx5LmxldmVsID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFs
LmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5Lm1heF9zd2FwX2ludGVydmFsID0g
RkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxl
LnNlbGVjdGlvbl9vbmx5Lm1pbl9zd2FwX2ludGVydmFsID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5Lm5hdGl2
ZV9yZW5kZXJhYmxlID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29z
ZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5Lm5hdGl2ZV92aXN1YWxfdHlwZSA9IEZBSUwK
LTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxl
Y3Rpb25fb25seS5zYW1wbGVfYnVmZmVycyA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVu
Y3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS5zYW1wbGVzID0gRkFJ
TAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNl
bGVjdGlvbl9vbmx5LnN0ZW5jaWxfc2l6ZSA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVu
Y3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS5zdXJmYWNlX3R5cGUg
PSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1w
bGUuc2VsZWN0aW9uX29ubHkudHJhbnNwYXJlbnRfcmVkX3ZhbHVlID0gRkFJTAotMTM0MCBXSU4g
OiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5
LnRyYW5zcGFyZW50X2dyZWVuX3ZhbHVlID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5LnRyYW5zcGFyZW50X2Js
dWVfdmFsdWUgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2Nv
bmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0LmJ1ZmZlcl9zaXplID0gRkFJTAotMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9h
bmRfc29ydC5yZWRfc2l6ZSA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5j
aG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQuZ3JlZW5fc2l6ZSA9IEZBSUwK
LTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxl
Y3Rpb25fYW5kX3NvcnQuYmx1ZV9zaXplID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC5sdW1pbmFuY2Vf
c2l6ZSA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmln
LnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQuYWxwaGFfc2l6ZSA9IEZBSUwKLTEzNDAgV0lOIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3Nv
cnQuYWxwaGFfbWFza19zaXplID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFs
LmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC5iaW5kX3RvX3RleHR1cmVf
cmdiID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcu
c2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC5iaW5kX3RvX3RleHR1cmVfcmdiYSA9IEZBSUwKLTEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rp
b25fYW5kX3NvcnQuY29sb3JfYnVmZmVyX3R5cGUgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0LmNvbmZp
Z19jYXZlYXQgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2Nv
bmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0LmNvbmZpZ19pZCA9IEZBSUwKLTEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5k
X3NvcnQuZGVwdGhfc2l6ZSA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5j
aG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQubGV2ZWwgPSBGQUlMCi0xMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9u
X2FuZF9zb3J0Lm1heF9zd2FwX2ludGVydmFsID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC5taW5fc3dh
cF9pbnRlcnZhbCA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2Vf
Y29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQubmF0aXZlX3JlbmRlcmFibGUgPSBGQUlM
Ci0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2Vs
ZWN0aW9uX2FuZF9zb3J0Lm5hdGl2ZV92aXN1YWxfdHlwZSA9IEZBSUwKLTEzNDAgV0lOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQu
c2FtcGxlX2J1ZmZlcnMgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hv
b3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0LnNhbXBsZXMgPSBGQUlMCi0xMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9u
X2FuZF9zb3J0LnN0ZW5jaWxfc2l6ZSA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQuc3VyZmFjZV90eXBl
ID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2lt
cGxlLnNlbGVjdGlvbl9hbmRfc29ydC50cmFuc3BhcmVudF9yZWRfdmFsdWUgPSBGQUlMCi0xMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9u
X2FuZF9zb3J0LnRyYW5zcGFyZW50X2dyZWVuX3ZhbHVlID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC50
cmFuc3BhcmVudF9ibHVlX3ZhbHVlID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLmNob29zZV9jb25maWcucmFuZG9tLmNvbG9yX3NpemVzID0gRkFJTAotMTM0MCBXSU4gOiBk
RVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcucmFuZG9tLmNvbG9yX2RlcHRoX3N0ZW5j
aWxfc2l6ZXMgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2Nv
bmZpZy5yYW5kb20uYnVmZmVyX3NpemVzID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLmNob29zZV9jb25maWcucmFuZG9tLnN1cmZhY2VfdHlwZSA9IEZBSUwKLTEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnJhbmRvbS5zYW1wbGVfYnVmZmVy
cyA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIuc2luZ2xlX2Nv
bnRleHQuZ2xlczIucmdiYTU1NTFfd2luZG93ID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLnJlbmRlci5zaW5nbGVfY29udGV4dC5nbGVzMi5yZ2JhNTU1MV9wYnVmZmVyID0g
RkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlbmRlci5zaW5nbGVfY29udGV4
dC5nbGVzMy5yZ2JhNTU1MV93aW5kb3cgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwucmVuZGVyLnNpbmdsZV9jb250ZXh0LmdsZXMzLnJnYmE1NTUxX3BidWZmZXIgPSBGQUlM
Ci0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLm11bHRpX2NvbnRleHQuZ2xl
czIucmdiYTU1NTFfd2luZG93ID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFs
LnJlbmRlci5tdWx0aV9jb250ZXh0LmdsZXMyLnJnYmE1NTUxX3BidWZmZXIgPSBGQUlMCi0xMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLm11bHRpX2NvbnRleHQuZ2xlczMucmdi
YTU1NTFfd2luZG93ID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlbmRl
ci5tdWx0aV9jb250ZXh0LmdsZXMzLnJnYmE1NTUxX3BidWZmZXIgPSBGQUlMCi0xMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLm11bHRpX2NvbnRleHQuZ2xlczJfZ2xlczMucmdi
YTU1NTFfd2luZG93ID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlbmRl
ci5tdWx0aV9jb250ZXh0LmdsZXMyX2dsZXMzLnJnYmE1NTUxX3BidWZmZXIgPSBGQUlMCi0xMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuaW1hZ2UubW9kaWZ5LnRleF9yZ2I4X3RleF9zdWJp
bWFnZV9yZ2I1NjUgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuaW1hZ2Uu
bW9kaWZ5LnRleF9yZ2I1NjVfdGV4X3N1YmltYWdlX3JnYjggPSBGQUlMCi0xMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwuaW1hZ2UubW9kaWZ5LnRleF9yZ2JhOF90ZXhfc3ViaW1hZ2Vfcmdi
YTVfYTEgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuaW1hZ2UubW9kaWZ5
LnRleF9yZ2JhOF90ZXhfc3ViaW1hZ2VfcmdiYTQgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwuaW1hZ2UubW9kaWZ5LnRleF9yZ2JhNV9hMV90ZXhfc3ViaW1hZ2VfcmdiYTgg
PSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuaW1hZ2UubW9kaWZ5LnRleF9y
Z2JhNV9hMV90ZXhfc3ViaW1hZ2VfcmdiYTQgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwuaW1hZ2UubW9kaWZ5LnRleF9yZ2JhNF90ZXhfc3ViaW1hZ2VfcmdiYTggPSBGQUlM
Ci0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuaW1hZ2UubW9kaWZ5LnRleF9yZ2JhNF90
ZXhfc3ViaW1hZ2VfcmdiYTVfYTEgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9u
YWwuaW1hZ2UubW9kaWZ5LnJlbmRlcmJ1ZmZlcl9yZ2JhNF90ZXhfc3ViaW1hZ2VfcmdiYTggPSBG
QUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuaW1hZ2UubW9kaWZ5LnJlbmRlcmJ1
ZmZlcl9yZ2JhNF90ZXhfc3ViaW1hZ2VfcmdiYTVfYTEgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAt
RUdMLmZ1bmN0aW9uYWwuaW1hZ2UubW9kaWZ5LnJlbmRlcmJ1ZmZlcl9yZ2I1X2ExX3RleF9zdWJp
bWFnZV9yZ2JhOCA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5pbWFnZS5t
b2RpZnkucmVuZGVyYnVmZmVyX3JnYjVfYTFfdGV4X3N1YmltYWdlX3JnYmE0ID0gRkFJTAotMTM0
MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmltYWdlLm1vZGlmeS5yZW5kZXJidWZmZXJfcmdi
NTY1X3RleF9zdWJpbWFnZV9yZ2I4ID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLm5lZ2F0aXZlX2FwaS5jaG9vc2VfY29uZmlnID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLm5lZ2F0aXZlX2FwaS5nZXRfZGlzcGxheSA9IEZBSUwKLTEzNDAgV0lOIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5uZWdhdGl2ZV9hcGkuc3VyZmFjZV9hdHRyaWIgPSBTS0lQCi0x
MzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmVnYXRpdmVfYXBpLnN3YXBfaW50ZXJ2YWwg
PSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJzLnJnYjU2
NV9ub19kZXB0aF9ub19zdGVuY2lsID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLnN3YXBfYnVmZmVycy5yZ2I1NjVfZGVwdGhfbm9fc3RlbmNpbCA9IEZBSUwKLTEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5zd2FwX2J1ZmZlcnMucmdiNTY1X2RlcHRoX3N0ZW5jaWwg
PSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJzLnJnYjg4
OF9ub19kZXB0aF9ub19zdGVuY2lsID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLnN3YXBfYnVmZmVycy5yZ2I4ODhfZGVwdGhfbm9fc3RlbmNpbCA9IEZBSUwKLTEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5zd2FwX2J1ZmZlcnMucmdiODg4X2RlcHRoX3N0ZW5jaWwg
PSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJzLnJnYmE0
NDQ0X25vX2RlcHRoX25vX3N0ZW5jaWwgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwuc3dhcF9idWZmZXJzLnJnYmE0NDQ0X2RlcHRoX25vX3N0ZW5jaWwgPSBGQUlMCi0xMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJzLnJnYmE0NDQ0X2RlcHRoX3N0
ZW5jaWwgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJz
LnJnYmE1NTUxX25vX2RlcHRoX25vX3N0ZW5jaWwgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJzLnJnYmE1NTUxX2RlcHRoX25vX3N0ZW5jaWwgPSBGQUlM
Ci0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJzLnJnYmE1NTUxX2Rl
cHRoX3N0ZW5jaWwgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuc3dhcF9i
dWZmZXJzLnJnYmE4ODg4X25vX2RlcHRoX25vX3N0ZW5jaWwgPSBGQUlMCi0xMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJzLnJnYmE4ODg4X2RlcHRoX25vX3N0ZW5jaWwg
PSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJzLnJnYmE4
ODg4X2RlcHRoX3N0ZW5jaWwgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
bmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I1NjVfbm9fZGVwdGhfbm9fc3Rl
bmNpbF9jbGVhciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVf
Y29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYjU2NV9ub19kZXB0aF9ub19zdGVuY2lsX3Jl
bmRlciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3Jf
bWFwcGluZy5uYXRpdmVfd2luZG93LnJnYjU2NV9kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJ
TAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5h
dGl2ZV93aW5kb3cucmdiNTY1X2RlcHRoX25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAotMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5k
b3cucmdiNTY1X2RlcHRoX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I1NjVfZGVw
dGhfc3RlbmNpbF9yZW5kZXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
bmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I4ODhfbm9fZGVwdGhfbm9fc3Rl
bmNpbF9jbGVhciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVf
Y29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYjg4OF9ub19kZXB0aF9ub19zdGVuY2lsX3Jl
bmRlciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3Jf
bWFwcGluZy5uYXRpdmVfd2luZG93LnJnYjg4OF9kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJ
TAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5h
dGl2ZV93aW5kb3cucmdiODg4X2RlcHRoX25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAotMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5k
b3cucmdiODg4X2RlcHRoX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I4ODhfZGVw
dGhfc3RlbmNpbF9yZW5kZXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
bmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNDQ0NF9ub19kZXB0aF9ub19z
dGVuY2lsX2NsZWFyID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2
ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTQ0NDRfbm9fZGVwdGhfbm9fc3RlbmNp
bF9yZW5kZXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nv
bG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNDQ0NF9kZXB0aF9ub19zdGVuY2lsX2NsZWFy
ID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBw
aW5nLm5hdGl2ZV93aW5kb3cucmdiYTQ0NDRfZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlM
Ci0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0
aXZlX3dpbmRvdy5yZ2JhNDQ0NF9kZXB0aF9zdGVuY2lsX2NsZWFyID0gRkFJTAotMTM0MCBXSU4g
OiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cu
cmdiYTQ0NDRfZGVwdGhfc3RlbmNpbF9yZW5kZXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNTU1MV9u
b19kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTU1NTFfbm9fZGVw
dGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9u
YWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNTU1MV9kZXB0aF9ub19z
dGVuY2lsX2NsZWFyID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2
ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTU1NTFfZGVwdGhfbm9fc3RlbmNpbF9y
ZW5kZXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9y
X21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNTU1MV9kZXB0aF9zdGVuY2lsX2NsZWFyID0gRkFJ
TAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5h
dGl2ZV93aW5kb3cucmdiYTU1NTFfZGVwdGhfc3RlbmNpbF9yZW5kZXIgPSBGQUlMCi0xMzQwIFdJ
TiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRv
dy5yZ2JhODg4OF9ub19kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAotMTM0MCBXSU4gOiBk
RVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdi
YTg4ODhfbm9fZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAt
RUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhODg4
OF9kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTg4ODhfZGVwdGhf
bm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
bmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhODg4OF9kZXB0aF9zdGVuY2ls
X2NsZWFyID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xv
cl9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTg4ODhfZGVwdGhfc3RlbmNpbF9yZW5kZXIgPSBG
QUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcu
bmF0aXZlX3dpbmRvdy5yZ2I1NjVfbm9fZGVwdGhfbm9fc3RlbmNpbF9jbGVhciA9IEZBSUwKLTEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVf
d2luZG93LnJnYjU2NV9ub19kZXB0aF9ub19zdGVuY2lsX3JlbmRlciA9IEZBSUwKLTEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93
LnJnYjU2NV9kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiNTY1X2Rl
cHRoX25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiNTY1X2RlcHRoX3N0ZW5j
aWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nv
b3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I1NjVfZGVwdGhfc3RlbmNpbF9yZW5kZXIgPSBG
QUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcu
bmF0aXZlX3dpbmRvdy5yZ2I4ODhfbm9fZGVwdGhfbm9fc3RlbmNpbF9jbGVhciA9IEZBSUwKLTEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVf
d2luZG93LnJnYjg4OF9ub19kZXB0aF9ub19zdGVuY2lsX3JlbmRlciA9IEZBSUwKLTEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93
LnJnYjg4OF9kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiODg4X2Rl
cHRoX25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiODg4X2RlcHRoX3N0ZW5j
aWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nv
b3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I4ODhfZGVwdGhfc3RlbmNpbF9yZW5kZXIgPSBG
QUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcu
bmF0aXZlX3dpbmRvdy5yZ2JhNDQ0NF9ub19kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAot
MTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2
ZV93aW5kb3cucmdiYTQ0NDRfbm9fZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCi0xMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dp
bmRvdy5yZ2JhNDQ0NF9kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAotMTM0MCBXSU4gOiBk
RVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdi
YTQ0NDRfZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNDQ0NF9k
ZXB0aF9zdGVuY2lsX2NsZWFyID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFs
Lm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTQ0NDRfZGVwdGhfc3RlbmNp
bF9yZW5kZXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nv
b3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNTU1MV9ub19kZXB0aF9ub19zdGVuY2lsX2Ns
ZWFyID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9t
YXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTU1NTFfbm9fZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIg
PSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBp
bmcubmF0aXZlX3dpbmRvdy5yZ2JhNTU1MV9kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAot
MTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2
ZV93aW5kb3cucmdiYTU1NTFfZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCi0xMzQwIFdJ
TiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRv
dy5yZ2JhNTU1MV9kZXB0aF9zdGVuY2lsX2NsZWFyID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTU1NTFf
ZGVwdGhfc3RlbmNpbF9yZW5kZXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9u
YWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhODg4OF9ub19kZXB0aF9u
b19zdGVuY2lsX2NsZWFyID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5h
dGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTg4ODhfbm9fZGVwdGhfbm9fc3Rl
bmNpbF9yZW5kZXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZl
X2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhODg4OF9kZXB0aF9ub19zdGVuY2lsX2Ns
ZWFyID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9t
YXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiYTg4ODhfZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBG
QUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcu
bmF0aXZlX3dpbmRvdy5yZ2JhODg4OF9kZXB0aF9zdGVuY2lsX2NsZWFyID0gRkFJTAotMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5k
b3cucmdiYTg4ODhfZGVwdGhfc3RlbmNpbF9yZW5kZXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAt
RUdMLmZ1bmN0aW9uYWwuZ2V0X3Byb2NfYWRkcmVzcy5leHRlbnNpb24uZWdsX2V4dF9wbGF0Zm9y
bV9iYXNlID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnByZXNlcnZlX3N3
YXAucHJlc2VydmUubm9fcmVhZF9iZWZvcmVfc3dhcC4qID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLnByZXNlcnZlX3N3YXAucHJlc2VydmUucmVhZF9iZWZvcmVfc3dhcC4q
ID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlc2l6ZS5iYWNrX2J1ZmZl
ci4qID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlc2l6ZS5waXhlbF9k
ZW5zaXR5LiogPSBTS0lQCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBfZ2xlczJfdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9kZXFwX2dsZXMyX3Rl
c3RfZXhwZWN0YXRpb25zLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI4OGY3
YzZkNDBjMmU3NmJmYWQ0MmM2NjI0YzQwY2ZjZmE3ZTExYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZGVxcF9zdXBwb3J0L2RlcXBfZ2xlczJfdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyAvZGV2
L251bGwKQEAgLTEsMjQ0ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotCi0vLyBUaGlzIGZpbGUgY29udGFpbnMgYSBsaXN0
IG9mIGRlZmVjdGl2ZSBkRVFQIGNvbmZvcm1hbmNlIHRlc3RzLiBUaGUgZXhwZWN0ZWQKLS8vIGZv
cm1hdCBpczoKLS8vICB7QlVHI30ge01PRElGSUVSU30gOiB7VEVTVF9OQU1FfSA9IHtQQVNTLEZB
SUwsRkxBS1ksVElNRU9VVCxTS0lQfQotLy8KLS8vIE1PRElGSUVSUyBjYW4gYmUgYSBjb21iaW5h
dGlvbiBvZiB0aGUgYmVsb3cgbGlzdDoKLS8vICBXSU4gWFAgVklTVEEgV0lONyBNQUMgTEVPUEFS
RCBTTk9XTEVPUEFSRCBMSU9OIExJTlVYIENIUk9NRU9TIE1PVU5UQUlOTElPTgotLy8gIE1BVkVS
SUNLUwotLy8gIE5WSURJQSBBTUQgSU5URUwKLS8vICAweGFiY2QgLSBHUFUgUENJIGRldmljZSBJ
RC4gU3BlY2lmeWluZyBhIFBDSSBpZCByZXF1aXJlcyBhIHZlbmRvci4KLS8vICBERUJVRyBSRUxF
QVNFCi0vLyBUT0RPKGptYWRpbGwpOiBBZGQgQU5HTEUgUmVuZGVyZXIgc2VsZWN0aW9uIG1vZGlm
aWVycwotLy8KLS8vIFRFU1RfTkFNRSBjYW4gYmUgYSBzcGVjaWZpYyB0ZXN0IG5hbWUsIG9yIGhh
dmUgYSAnKicgaW4gdGhlIGVuZCwgd2hpY2gKLS8vIGluZGljYXRlcyBhIHByZWZpeCBtYXRjaGlu
Zy4KLS8vCi0vLyBFeGFtcGxlczoKLS8vICA5MTUzMCBNQUMgV0lOIExJTlVYIDogY29udGV4dF9s
b3N0X3Jlc3RvcmVkID0gVElNRU9VVAotLy8gIDkxNTMzIFdJTiA6IGdsX21pbl91bmlmb3JtcyA9
IEZBSUwKLS8vICA5MTUzMSBNQUMgV0lOIExJTlVYIDogY29uZm9ybWFuY2VfbW9yZV8qID0gU0tJ
UAotLy8gIDkxNTMyIE1BQyBOVklESUEgMHgwNjQwIDogdGV4X2ltYWdlX2FuZF9zdWJfaW1hZ2Vf
MmRfd2l0aF92aWRlbyA9IFBBU1MgRkFJTAotCi0vLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0
IHdoeSB0aGVzZSBmYWlsIG9uIHRoZSBib3RzLCBidXQgbm90IGxvY2FsbHkuCi0xMDE4IFdJTiA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UuaGlnaHAubG9vcF8yID0g
RkFJTAotMTAxOCBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNl
Lm1lZGl1bXAubG9vcF8yID0gRkFJTAotCi0vLyBTa2lwIHRoZXNlIHRlc3RzIGR1ZSB0byB0aW1l
b3V0cwotMTAzNCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZsdXNoX2Zp
bmlzaC4qID0gU0tJUAotCi0vLyBEb24ndCBydW4gdGhlc2UgdGVzdHMgZm9yIGZhc3RlciB0dXJu
b3ZlcgotOTk4IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLnBlcmZvcm1hbmNlLiogPSBTS0lQ
Ci05OTggV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuc3RyZXNzLiogPSBTS0lQCi0KLS8vIFRl
c3RzIHRoYXQgd2UgZmFpbCBiZWNhdXNlIHRoZXkncmUgbm90IGluIGxpbmUgd2l0aCB0aGUgV2Vi
R0wgc3BlYwotMTMzNSBXSU4gTElOVVggTUFDIEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwuc2hhZGVycy5wcmVwcm9jZXNzb3IuY29uZGl0aW9uYWxfaW5jbHVzaW9uLmJhc2ljXzIqID0g
RkFJTAotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vICBUZW1wb3JhcnkgZW50cmll
czogdGhleSBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHRoZSBidWdzIGFyZSBmaXhlZC4KLS8vCi0v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0vLyBXaW5kb3dzIG9ubHkgZmFpbHVyZXMKLQotLy8g
VGhlc2UgdGVzdHMgY3Jhc2ggZm9yIHVua25vd24gcmVhc29uIHVuZGVyIGEgbmV3ZXIgRDNEQ29t
cGlsZXJfNDcuZGxsCi0vLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IGlmIHdlIGNhbiBzb2x2
ZSB0aGVzZSBjcmFzaGVzCi0xMjUyIFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJz
LnJhbmRvbS50cmlnb25vbWV0cmljLnZlcnRleC42MyA9IFNLSVAKLTEyNTIgV0lOIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMucmFuZG9tLnRyaWdvbm9tZXRyaWMuZnJhZ21lbnQuNjMg
PSBTS0lQCi0KLS8vIFRPRE8oam1hZGlsbCk6IHRyaWFnZSB0aGVzZSBpbnRvIHRlbXBvcmFyeSBh
bmQgcGVybWFuZW50IHN1cHByZXNzaW9ucwotCi0xMDI3IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5mYm8ucmVuZGVyLmNvbG9yX2NsZWFyLnJib19yZ2I1X2ExID0gRkFJTAotMTAyNyBXSU4g
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLnJlbmRlci5jb2xvcl9jbGVhci5yYm9fcmdiNV9h
MV9zdGVuY2lsX2luZGV4OCA9IEZBSUwKLTEwMjcgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LmZiby5yZW5kZXIuY29sb3JfY2xlYXIucmJvX3JnYjVfYTFfZGVwdGhfY29tcG9uZW50MTYgPSBG
QUlMCi0xMDI3IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8ucmVuZGVyLnN0ZW5jaWxf
Y2xlYXIucmJvX3JnYjVfYTFfc3RlbmNpbF9pbmRleDggPSBGQUlMCi0xMDI3IFdJTiA6IGRFUVAt
R0xFUzIuZnVuY3Rpb25hbC5mYm8ucmVuZGVyLnNoYXJlZF9jb2xvcmJ1ZmZlci50ZXgyZF9yZ2Jf
c3RlbmNpbF9pbmRleDggPSBGQUlMCi0xMDI3IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5m
Ym8ucmVuZGVyLnNoYXJlZF9jb2xvcmJ1ZmZlci50ZXgyZF9yZ2JhX3N0ZW5jaWxfaW5kZXg4ID0g
RkFJTAotMTAyNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLnJlbmRlci5zaGFyZWRf
Y29sb3JidWZmZXIucmJvX3JnYjU2NV9zdGVuY2lsX2luZGV4OCA9IEZBSUwKLTEwMjcgV0lOIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5yZW5kZXIuc2hhcmVkX2NvbG9yYnVmZmVyLnJib19y
Z2I1X2ExX3N0ZW5jaWxfaW5kZXg4ID0gRkFJTAotMTAyNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwuZmJvLnJlbmRlci5zaGFyZWRfY29sb3JidWZmZXIucmJvX3JnYmE0X3N0ZW5jaWxfaW5k
ZXg4ID0gRkFJTAotMTAyNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLnJlbmRlci5y
ZWNyZWF0ZV9jb2xvcmJ1ZmZlci5yZWJpbmRfdGV4MmRfcmdiX3N0ZW5jaWxfaW5kZXg4ID0gRkFJ
TAotMTAyNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLnJlbmRlci5yZWNyZWF0ZV9j
b2xvcmJ1ZmZlci5yZWJpbmRfdGV4MmRfcmdiYV9zdGVuY2lsX2luZGV4OCA9IEZBSUwKLTEwMjcg
V0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5yZW5kZXIucmVjcmVhdGVfY29sb3JidWZm
ZXIucmViaW5kX3Jib19yZ2I1NjVfc3RlbmNpbF9pbmRleDggPSBGQUlMCi0xMDI3IFdJTiA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8ucmVuZGVyLnJlY3JlYXRlX2NvbG9yYnVmZmVyLnJlYmlu
ZF9yYm9fcmdiNV9hMV9zdGVuY2lsX2luZGV4OCA9IEZBSUwKLTEwMjcgV0lOIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLmZiby5yZW5kZXIucmVjcmVhdGVfY29sb3JidWZmZXIucmViaW5kX3Jib19y
Z2JhNF9zdGVuY2lsX2luZGV4OCA9IEZBSUwKLTEwMjcgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLmZiby5yZW5kZXIucmVjcmVhdGVfY29sb3JidWZmZXIubm9fcmViaW5kX3RleDJkX3JnYl9z
dGVuY2lsX2luZGV4OCA9IEZBSUwKLTEwMjcgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZi
by5yZW5kZXIucmVjcmVhdGVfY29sb3JidWZmZXIubm9fcmViaW5kX3RleDJkX3JnYmFfc3RlbmNp
bF9pbmRleDggPSBGQUlMCi0xMDMzIFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5wb2x5Z29u
X29mZnNldC5maXhlZDE2X3JlbmRlcl93aXRoX3VuaXRzID0gRkFJTAotMTAxNyBXSU4gOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5mb3JfY29uc3RhbnRfaXRlcmF0aW9ucy5u
ZXN0ZWRfdHJpY2t5X2RhdGFmbG93XyogPSBGQUlMCi0xMDE3IFdJTiA6IGRFUVAtR0xFUzIuZnVu
Y3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMubmVzdGVkX3Ry
aWNreV9kYXRhZmxvd18qID0gRkFJTAotMTAxNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
c2hhZGVycy5sb29wcy5kb193aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLm5lc3RlZF90cmlja3lf
ZGF0YWZsb3dfKiA9IEZBSUwKLTk4OSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVy
cy5wcmVwcm9jZXNzb3IucHJhZ21hcy5pbnZhbGlkX3ByYWdtYV9pbnZhbGlkXyogPSBGQUlMCi0x
MDE4IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25z
LnZlcnRleC50ZXh0dXJlY3ViZWxvZCA9IEZBSUwKLTEwMjAgV0lOIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUuYmFzaWMubGluZWFyX25lYXJlc3QgPSBGQUlMCi0x
MDIwIFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLmJhc2lj
LmxpbmVhcl9saW5lYXIgPSBGQUlMCi0xMDIwIFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50
ZXh0dXJlLm1pcG1hcC5jdWJlLnByb2plY3RlZC5saW5lYXJfbmVhcmVzdCA9IEZBSUwKLTEwMjAg
V0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUuYmlhcy5saW5l
YXJfbmVhcmVzdCA9IEZBSUwKLTEwMjAgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1
cmUubWlwbWFwLmN1YmUuYmlhcy5saW5lYXJfbGluZWFyID0gRkFJTAotMTAyNSBXSU4gOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmRlcHRoX3N0ZW5jaWwuc3RlbmNpbF9kZXB0
aF9mdW5jcy5zdGVuY2lsXyogPSBGQUlMCi0xMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC5mcmFnbWVudF9vcHMuZGVwdGhfc3RlbmNpbC5zdGVuY2lsX29wcy4qID0gRkFJTAotMTAyNSBX
SU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmRlcHRoX3N0ZW5jaWwud3Jp
dGVfbWFzay4qID0gRkFJTAotMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21l
bnRfb3BzLmRlcHRoX3N0ZW5jaWwucmFuZG9tLiogPSBGQUlMCi0xMDI1IFdJTiA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1
bmMuYWRkX2NvbnN0YW50X2NvbG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAotMTAyNSBXSU4gOiBk
RVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5j
X2RzdF9mdW5jLmFkZF9jb25zdGFudF9jb2xvcl9vbmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBG
QUlMCi0xMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQu
ZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFudF9jb2xvcl9j
b25zdGFudF9hbHBoYSA9IEZBSUwKLTEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZy
YWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21pbnVz
X2NvbnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKLTEwMjUgV0lO
IDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNf
ZnVuY19kc3RfZnVuYy5hZGRfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCi0x
MDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRp
b25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFu
dF9jb2xvciA9IEZBSUwKLTEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50
X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0
YW50X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAotMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFk
ZF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJ
TAotMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVx
dWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X2NvbnN0YW50X2NvbG9yX2NvbnN0YW50
X2FscGhhID0gRkFJTAotMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRf
b3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X2NvbnN0YW50X2Nv
bG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKLTEwMjUgV0lOIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVu
Yy5zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlM
Ci0xMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1
YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2NvbG9y
X29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKLTEwMjUgV0lOIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5z
dWJ0cmFjdF9jb25zdGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKLTEwMjUgV0lOIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVu
Y19kc3RfZnVuYy5zdWJ0cmFjdF9jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29s
b3IgPSBGQUlMCi0xMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMu
YmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0
YW50X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAotMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1
YnRyYWN0X29uZV9taW51c19jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29sb3Ig
PSBGQUlMCi0xMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxl
bmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9jb25zdGFudF9j
b2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwKLTEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNl
X3N1YnRyYWN0X2NvbnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwK
LTEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVh
dGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X29uZV9taW51c19jb25zdGFu
dF9jb2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwKLTEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZl
cnNlX3N1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9jb2xvcl9vbmVfbWludXNfY29uc3RhbnRf
YWxwaGEgPSBGQUlMCi0xMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9v
cHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9jb25z
dGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKLTEwMjUgV0lOIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5y
ZXZlcnNlX3N1YnRyYWN0X2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9
IEZBSUwKLTEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVu
ZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X29uZV9taW51c19j
b25zdGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKLTEwMjUgV0lOIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVu
Yy5yZXZlcnNlX3N1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29u
c3RhbnRfY29sb3IgPSBGQUlMCi0xNDE4IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5jbGlw
cGluZy50cmlhbmdsZV92ZXJ0ZXguY2xpcF90aHJlZS5jbGlwX3Bvc194X3Bvc195X3Bvc196X2Fu
ZF9uZWdfeF9wb3NfeV9wb3Nfel9hbmRfbmVnX3hfbmVnX3lfbmVnX3ogPSBGQUlMCi0KLS8vIEZh
aWx1cmVzIG9uIHRoZSBkRVFQIFdpbmRvd3MgYm90cyB0aGF0IGRvIG5vdCByZXByb2R1Y2UgbG9j
YWxseQotMTEwOCBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5zdHJ1Y3QubG9j
YWwuZHluYW1pY19sb29wX3N0cnVjdF9hcnJheV9mcmFnbWVudCA9IEZBSUwKLQotLy8gTGludXgg
b25seSBmYWlsdXJlcwotCi0xMDUxIExJTlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRl
cnMuZnVuY3Rpb25zLmFycmF5X2FyZ3VtZW50cy5jb3B5X2dsb2JhbF9pbm91dF9vbl9jYWxsX2Zy
YWdtZW50ID0gRkFJTAotMTA1MSBMSU5VWCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJz
LmZ1bmN0aW9ucy5hcnJheV9hcmd1bWVudHMuY29weV9nbG9iYWxfaW5vdXRfb25fY2FsbF92ZXJ0
ZXggPSBGQUlMCi0xMDE5IExJTlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUuc2l6
ZS5jdWJlLjI1NngyNTZfcmdiYTQ0NDQgPSBGQUlMCi0xMDE5IExJTlVYIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLnRleHR1cmUuc2l6ZS5jdWJlLjUxMng1MTJfcmdiYTQ0NDQgPSBGQUlMCi0xMDIw
IExJTlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLnByb2plY3Rl
ZC5uZWFyZXN0X2xpbmVhciogPSBGQUlMCi0xMDIwIExJTlVYIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLnRleHR1cmUubWlwbWFwLjJkLnByb2plY3RlZC5saW5lYXJfbGluZWFyKiA9IEZBSUwKLQot
Ly8gRmFpbHVyZXMgb24gdGhlIExpbnV4IGRFUVAgYm90IHRoYXQgZG8gbm90IGFwcGVhciBvbiB0
aGUgd29ya3N0YXRpb24KLTExNDMgTElOVVggOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVy
cy5yYW5kb20uYWxsX2ZlYXR1cmVzLnZlcnRleC4xMyA9IEZBSUwKLTExNDMgTElOVVggOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLm1lZGl1bXAuY29tbW9uX3N1YmV4
cHJlc3Npb25fMSA9IEZBSUwKLTExNDMgTElOVVggOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hh
ZGVycy5pbnZhcmlhbmNlLmhpZ2hwLmNvbW1vbl9zdWJleHByZXNzaW9uXzEgPSBGQUlMCi0xMTQz
IExJTlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUucHJvamVj
dGVkLmxpbmVhcl9uZWFyZXN0ID0gRkFJTAotCi0vLyBNYWMgc3BlY2lmaWMgZmFpbHVyZXMKLTEx
NDMgTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5tZWRpdW1w
LmNvbW1vbl9zdWJleHByZXNzaW9uXzEgPSBGQUlMCi0xMTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVu
Y3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UuaGlnaHAuY29tbW9uX3N1YmV4cHJlc3Npb25fMSA9
IEZBSUwKLTExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMucHJlcHJvY2Vz
c29yLnByYWdtYXMucHJhZ21hXyogPSBGQUlMCi0xMTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5zaGFkZXJzLmxpbmthZ2UudmFyeWluZ180ID0gRkFJTAotMTE0MyBNQUMgOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5zY29waW5nLnZhbGlkLmxvY2FsX2ludF92YXJpYWJsZV9o
aWRlc19zdHJ1Y3RfdHlwZV8qID0gRkFJTAotMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwuc2hhZGVycy5zY29waW5nLnZhbGlkLmxvY2FsX3N0cnVjdF92YXJpYWJsZV9oaWRlc19zdHJ1
Y3RfdHlwZV8qID0gRkFJTAotMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVy
cy5zY29waW5nLnZhbGlkLmZ1bmN0aW9uX3BhcmFtZXRlcl9oaWRlc19zdHJ1Y3RfdHlwZV8qID0g
RkFJTAotMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNl
LmhpZ2hwLmNvbW1vbl9zdWJleHByZXNzaW9uXzMgPSBGQUlMCi0xMTQzIE1BQyA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UuaGlnaHAubG9vcF8wID0gRkFJTAotMTE0
MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLmhpZ2hwLmxv
b3BfMSA9IEZBSUwKLTExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52
YXJpYW5jZS5tZWRpdW1wLmNvbW1vbl9zdWJleHByZXNzaW9uXzMgPSBGQUlMCi0xMTQzIE1BQyA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UubWVkaXVtcC5sb29wXzAg
PSBGQUlMCi0xMTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFu
Y2UubWVkaXVtcC5sb29wXzEgPSBGQUlMCi0xMTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC5zaGFkZXJzLmludmFyaWFuY2UubG93cC5jb21tb25fc3ViZXhwcmVzc2lvbl8xID0gRkFJTAot
MTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLmxvd3Au
Y29tbW9uX3N1YmV4cHJlc3Npb25fMyA9IEZBSUwKLTExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5sb3dwLmxvb3BfMCA9IEZBSUwKLTExNDMgTUFDIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5sb3dwLmxvb3BfMSA9IEZB
SUwKLTExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMucmFuZG9tLnRyaWdv
bm9tZXRyaWMudmVydGV4LjQzID0gRkFJTAotMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwuc2hhZGVycy5yYW5kb20udHJpZ29ub21ldHJpYy52ZXJ0ZXguNjUgPSBGQUlMCi0xMTQzIE1B
QyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnNpemUuY3ViZS4yNTZ4MjU2X3JnYmE0
NDQ0ID0gRkFJTAotMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5zaXpl
LmN1YmUuNTEyeDUxMl9yZ2JhNDQ0NCA9IEZBSUwKLTExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUucHJvamVjdGVkLmxpbmVhcl9saW5lYXIgPSBGQUlM
Ci0xMTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnNwZWNpZmljYXRpb24u
YmFzaWNfY29weXRleGltYWdlMmQuY3ViZV8qID0gRkFJTAotCi0vLyBBbmRyb2lkIG9ubHkgZmFp
bHVyZXMKLTE0ODQgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC52ZXJ0ZXhfYXJyYXlz
LiogPSBTS0lQCi0xNDg1IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuY2xpcHBpbmcu
dHJpYW5nbGVfdmVydGV4LmNsaXBfdGhyZWUuY2xpcF9uZWdfeF9uZWdfel9hbmRfcG9zX3hfcG9z
X3pfYW5kX25lZ194X25lZ195X3Bvc196ID0gRkFJTAotMTQ4NiBBTkRST0lEIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MuYXR0YWNobWVudF9jb21iaW5hdGlvbnMubm9u
ZV9ub25lX25vbmVfdGV4ID0gRkFJTAotMTQ4NiBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLmZiby5jb21wbGV0ZW5lc3MuYXR0YWNobWVudF9jb21iaW5hdGlvbnMubm9uZV9ub25lX3Ji
b190ZXggPSBGQUlMCi0xNDg2IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNv
bXBsZXRlbmVzcy5hdHRhY2htZW50X2NvbWJpbmF0aW9ucy5ub25lX25vbmVfdGV4X25vbmUgPSBG
QUlMCi0xNDg2IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVz
cy5hdHRhY2htZW50X2NvbWJpbmF0aW9ucy5ub25lX25vbmVfdGV4X3JibyA9IEZBSUwKLTE0ODYg
QU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLmF0dGFjaG1l
bnRfY29tYmluYXRpb25zLm5vbmVfbm9uZV90ZXhfdGV4ID0gRkFJTAotMTQ4NiBBTkRST0lEIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MuYXR0YWNobWVudF9jb21iaW5h
dGlvbnMucmJvX25vbmVfbm9uZV90ZXggPSBGQUlMCi0xNDg2IEFORFJPSUQgOiBkRVFQLUdMRVMy
LmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5hdHRhY2htZW50X2NvbWJpbmF0aW9ucy5yYm9f
bm9uZV9yYm9fdGV4ID0gRkFJTAotMTQ4NiBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LmZiby5jb21wbGV0ZW5lc3MuYXR0YWNobWVudF9jb21iaW5hdGlvbnMucmJvX25vbmVfdGV4X25v
bmUgPSBGQUlMCi0xNDg2IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBs
ZXRlbmVzcy5hdHRhY2htZW50X2NvbWJpbmF0aW9ucy5yYm9fbm9uZV90ZXhfcmJvID0gRkFJTAot
MTQ4NiBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MuYXR0
YWNobWVudF9jb21iaW5hdGlvbnMucmJvX25vbmVfdGV4X3RleCA9IEZBSUwKLTE0ODYgQU5EUk9J
RCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLmF0dGFjaG1lbnRfY29t
YmluYXRpb25zLnRleF9ub25lX25vbmVfdGV4ID0gRkFJTAotMTQ4NiBBTkRST0lEIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MuYXR0YWNobWVudF9jb21iaW5hdGlvbnMu
dGV4X25vbmVfcmJvX3RleCA9IEZBSUwKLTE0ODYgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5mYm8uY29tcGxldGVuZXNzLmF0dGFjaG1lbnRfY29tYmluYXRpb25zLnRleF9ub25lX3Rl
eF9ub25lID0gRkFJTAotMTQ4NiBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5j
b21wbGV0ZW5lc3MuYXR0YWNobWVudF9jb21iaW5hdGlvbnMudGV4X25vbmVfdGV4X3JibyA9IEZB
SUwKLTE0ODYgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNz
LmF0dGFjaG1lbnRfY29tYmluYXRpb25zLnRleF9ub25lX3RleF90ZXggPSBGQUlMCi0xNDg3IEFO
RFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxl
LnRleHR1cmUuY29sb3IwLmRlcHRoX3N0ZW5jaWxfdW5zaWduZWRfaW50XzI0XzggPSBGQUlMCi0x
NDg3IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5k
ZXJhYmxlLnRleHR1cmUuY29sb3IwLnNyZ2I4ID0gRkFJTAotMTQ4NyBBTkRST0lEIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLnN0ZW5j
aWwuZGVwdGhfc3RlbmNpbF91bnNpZ25lZF9pbnRfMjRfOCA9IEZBSUwKLTE0ODcgQU5EUk9JRCA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUudGV4dHVy
ZS5zdGVuY2lsLnNyZ2I4ID0gRkFJTAotMTQ4NyBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLmRlcHRoLmRlcHRoX3N0ZW5j
aWxfdW5zaWduZWRfaW50XzI0XzggPSBGQUlMCi0xNDg3IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuZGVwdGguc3JnYjgg
PSBGQUlMCi0xNDg4IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5yZXR1
cm4uY29uZGl0aW9uYWxfcmV0dXJuX2Fsd2F5c192ZXJ0ZXggPSBGQUlMCi0xNDg4IEFORFJPSUQg
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5yZXR1cm4uY29uZGl0aW9uYWxfcmV0dXJu
X2Fsd2F5c19mcmFnbWVudCA9IEZBSUwKLTE0ODggQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5zaGFkZXJzLnJldHVybi5vdXRwdXRfd3JpdGVfYWx3YXlzX3ZlcnRleCA9IEZBSUwKLTE0
ODggQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnJldHVybi5vdXRwdXRf
d3JpdGVfYWx3YXlzX2ZyYWdtZW50ID0gRkFJTAotMTQ4OSBBTkRST0lEIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLmdlbmVyYXRlLmE4X2Zhc3Rlc3QgPSBGQUlMCi0x
NDg5IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQuZ2Vu
ZXJhdGUuYThfbmljZXN0ID0gRkFJTAotMTQ4OSBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLnRleHR1cmUubWlwbWFwLjJkLmdlbmVyYXRlLmw4X2Zhc3Rlc3QgPSBGQUlMCi0xNDg5IEFO
RFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQuZ2VuZXJhdGUu
bDhfbmljZXN0ID0gRkFJTAotMTQ4OSBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRl
eHR1cmUubWlwbWFwLjJkLmdlbmVyYXRlLmxhODhfZmFzdGVzdCA9IEZBSUwKLTE0ODkgQU5EUk9J
RCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5nZW5lcmF0ZS5sYTg4
X25pY2VzdCA9IEZBSUwKLTE0ODkgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0
dXJlLm1pcG1hcC5jdWJlLmdlbmVyYXRlLmE4X2Zhc3Rlc3QgPSBGQUlMCi0xNDg5IEFORFJPSUQg
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5nZW5lcmF0ZS5hOF9u
aWNlc3QgPSBGQUlMCi0xNDg5IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVy
ZS5taXBtYXAuY3ViZS5nZW5lcmF0ZS5sOF9mYXN0ZXN0ID0gRkFJTAotMTQ4OSBBTkRST0lEIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUuZ2VuZXJhdGUubDhfbmlj
ZXN0ID0gRkFJTAotMTQ4OSBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUu
bWlwbWFwLmN1YmUuZ2VuZXJhdGUubGE4OF9mYXN0ZXN0ID0gRkFJTAotMTQ4OSBBTkRST0lEIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUuZ2VuZXJhdGUubGE4OF9u
aWNlc3QgPSBGQUlMCi0KLS8vIFdpbmRvd3MgYW5kIExpbnV4IGZhaWx1cmVzCi0xMDIwIFdJTiBM
SU5VWCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLnByb2plY3Rl
ZC5saW5lYXJfbGluZWFyID0gRkFJTAotCi0vLyBXaW5kb3dzIExpbnV4IGFuZCBNYWMgZmFpbHVy
ZXMKLTk4OSBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMucHJl
cHJvY2Vzc29yLmV4dGVuc2lvbnMuYWZ0ZXJfbm9uX3ByZXByb2Nlc3NpbmdfdG9rZW5zX3ZlcnRl
eCA9IEZBSUwKLTk4OSBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRl
cnMucHJlcHJvY2Vzc29yLmV4dGVuc2lvbnMuYWZ0ZXJfbm9uX3ByZXByb2Nlc3NpbmdfdG9rZW5z
X2ZyYWdtZW50ID0gRkFJTAotMTAxNSBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLnNoYWRlcnMuZnVuY3Rpb25zLmludmFsaWQucmV0dXJuX2FycmF5X2luX3N0cnVjdF92ZXJ0
ZXggPSBGQUlMCi0xMDE1IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hh
ZGVycy5mdW5jdGlvbnMuaW52YWxpZC5yZXR1cm5fYXJyYXlfaW5fc3RydWN0X2ZyYWdtZW50ID0g
RkFJTAotMTAxNiBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMu
c2NvcGluZy52YWxpZC5sb2NhbF92YXJpYWJsZV9oaWRlc19mdW5jdGlvbl9wYXJhbWV0ZXJfdmVy
dGV4ID0gRkFJTAotMTAxNiBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNo
YWRlcnMuc2NvcGluZy52YWxpZC5sb2NhbF92YXJpYWJsZV9oaWRlc19mdW5jdGlvbl9wYXJhbWV0
ZXJfZnJhZ21lbnQgPSBGQUlMCi0xMDE2IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwuc2hhZGVycy5zY29waW5nLmludmFsaWQucmVkZWNsYXJlX2Z1bmN0aW9uX3ZlcnRleCA9
IEZBSUwKLTEwMTYgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJz
LnNjb3BpbmcuaW52YWxpZC5yZWRlY2xhcmVfZnVuY3Rpb25fZnJhZ21lbnQgPSBGQUlMCi0xMDIw
IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQu
cHJvamVjdGVkLm5lYXJlc3RfbmVhcmVzdCogPSBGQUlMCi0xMDIwIFdJTiBMSU5VWCBNQUMgOiBk
RVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQucHJvamVjdGVkLmxpbmVhcl9u
ZWFyZXN0KiA9IEZBSUwKLTEwMjUgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC5mcmFnbWVudF9vcHMucmFuZG9tLiogPSBGQUlMCi0xMDI1IFdJTiBMSU5VWCBNQUMgOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmludGVyYWN0aW9uLmJhc2ljX3NoYWRlci4q
ID0gRkFJTAotMTAyNyBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5y
ZW5kZXIucmVwZWF0ZWRfY2xlYXIudGV4MmRfcmdiID0gRkFJTAotMTAyNyBXSU4gTElOVVggTUFD
IDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5yZW5kZXIucmVwZWF0ZWRfY2xlYXIudGV4MmRf
cmdiYSA9IEZBSUwKLTEwMjggV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5m
Ym8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUudGV4dHVyZS5jb2xvcjAucmdiX2Zsb2F0ID0gRkFJ
TAotMTAyOCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0
ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLmNvbG9yMC5yZ2JfaGFsZl9mbG9hdF9vZXMgPSBGQUlM
Ci0xMDI4IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRl
bmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuY29sb3IwLnJnYmFfZmxvYXQgPSBGQUlMCi0xMDI4IFdJ
TiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5k
ZXJhYmxlLnRleHR1cmUuY29sb3IwLnJnYmFfaGFsZl9mbG9hdF9vZXMgPSBGQUlMCi0xMDI4IFdJ
TiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5k
ZXJhYmxlLnRleHR1cmUuY29sb3IwLnNyZ2I4ID0gRkFJTAotMTAyOCBXSU4gTElOVVggTUFDIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJl
LnN0ZW5jaWwuc3JnYjggPSBGQUlMCi0xMDI4IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuZGVwdGguZGVwdGhf
Y29tcG9uZW50X3Vuc2lnbmVkX3Nob3J0ID0gRkFJTAotMTAyOCBXSU4gTElOVVggTUFDIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLmRl
cHRoLmRlcHRoX2NvbXBvbmVudF91bnNpZ25lZF9pbnQgPSBGQUlMCi0xMDI4IFdJTiBMSU5VWCBN
QUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRl
eHR1cmUuZGVwdGguc3JnYjggPSBGQUlMCi0xMTI4IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMy
LmZ1bmN0aW9uYWwubmVnYXRpdmVfYXBpLnRleHR1cmUuY29tcHJlc3NlZHRleHN1YmltYWdlMmRf
aW52YWxpZF9zaXplID0gRkFJTAotMTAyOSBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLm5lZ2F0aXZlX2FwaS50ZXh0dXJlLnRleGltYWdlMmRfaW52YWxpZF9mb3JtYXQgPSBG
QUlMCi0xMDI5IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwubmVnYXRpdmVf
YXBpLnRleHR1cmUudGV4aW1hZ2UyZF9pbnZhbGlkX2ludGVybmFsZm9ybWF0ID0gRkFJTAotMTAy
OSBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLm5lZ2F0aXZlX2FwaS50ZXh0
dXJlLnRleHN1YmltYWdlMmRfaW52YWxpZF90eXBlID0gRkFJTAotMTAyOSBXSU4gTElOVVggTUFD
IDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLm5lZ2F0aXZlX2FwaS50ZXh0dXJlLnRleHN1YmltYWdl
MmRfb2Zmc2V0X2FsbG93ZWQgPSBGQUlMCi0xMDMwIFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMy
LmZ1bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcuY29uZF9mbG9hdCA9
IEZBSUwKLTEwMzAgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1
dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5tYXhfY29uZF9mbG9hdCA9IEZBSUwKLTEwMzAgV0lO
IExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmlu
ZF9hbGlhc2luZy5jb25kX3ZlYzIgPSBGQUlMCi0xMDMwIFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcubWF4X2NvbmRf
dmVjMiA9IEZBSUwKLTEwMzAgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5h
dHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5jb25kX3ZlYzMgPSBGQUlMCi0xMDMwIFdJ
TiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJp
bmRfYWxpYXNpbmcubWF4X2NvbmRfdmVjMyA9IEZBSUwKLTEwMzAgV0lOIExJTlVYIE1BQyA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5jb25k
X3ZlYzQgPSBGQUlMCi0xMDMwIFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
YXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcubWF4X2NvbmRfdmVjNCA9IEZBSUwKLTEw
MzAgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRp
b24uYmluZF9hbGlhc2luZy5jb25kX21hdDIgPSBGQUlMCi0xMDMwIFdJTiBMSU5VWCBNQUMgOiBk
RVFQLUdMRVMyLmZ1bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcuY29u
ZF9tYXQyX29mZnNldF8xID0gRkFJTAotMTAzMCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5kX2FsaWFzaW5nLm1heF9jb25kX21hdDIg
PSBGQUlMCi0xMDMwIFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuYXR0cmli
dXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcuY29uZF9tYXQzID0gRkFJTAotMTAzMCBXSU4gTElO
VVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5kX2Fs
aWFzaW5nLmNvbmRfbWF0M19vZmZzZXRfMSA9IEZBSUwKLTEwMzAgV0lOIExJTlVYIE1BQyA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5tYXhf
Y29uZF9tYXQzID0gRkFJTAotMTAzMCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5kX2FsaWFzaW5nLmNvbmRfbWF0NCA9IEZBSUwKLTEw
MzAgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRp
b24uYmluZF9hbGlhc2luZy5jb25kX21hdDRfb2Zmc2V0XzEgPSBGQUlMCi0xMDMwIFdJTiBMSU5V
WCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxp
YXNpbmcubWF4X2NvbmRfbWF0NCA9IEZBSUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9nbGVzMzFfdGVzdF9leHBlY3RhdGlv
bnMudHh0IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9k
ZXFwX2dsZXMzMV90ZXN0X2V4cGVjdGF0aW9ucy50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQ5YWNiNzQ2ZTI5MTlmYWM1YjNlMzZlYjY3OWZiZWQ3MmRjMmQxZjQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9kZXFwX2dsZXMzMV90ZXN0X2V4cGVjdGF0aW9u
cy50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAxNiBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLQotLy8gVGhpcyBmaWxlIGNv
bnRhaW5zIGEgbGlzdCBvZiBkZWZlY3RpdmUgZEVRUCBjb25mb3JtYW5jZSB0ZXN0cy4gVGhlIGV4
cGVjdGVkCi0vLyBmb3JtYXQgaXM6Ci0vLyAge0JVRyN9IHtNT0RJRklFUlN9IDoge1RFU1RfTkFN
RX0gPSB7UEFTUyxGQUlMLEZMQUtZLFRJTUVPVVQsU0tJUH0KLS8vCi0vLyBNT0RJRklFUlMgY2Fu
IGJlIGEgY29tYmluYXRpb24gb2YgdGhlIGJlbG93IGxpc3Q6Ci0vLyAgV0lOIFhQIFZJU1RBIFdJ
TjcgTUFDIExFT1BBUkQgU05PV0xFT1BBUkQgTElPTiBMSU5VWCBDSFJPTUVPUyBNT1VOVEFJTkxJ
T04KLS8vICBNQVZFUklDS1MKLS8vICBOVklESUEgQU1EIElOVEVMCi0vLyAgMHhhYmNkIC0gR1BV
IFBDSSBkZXZpY2UgSUQuIFNwZWNpZnlpbmcgYSBQQ0kgaWQgcmVxdWlyZXMgYSB2ZW5kb3IuCi0v
LyAgREVCVUcgUkVMRUFTRQotLy8gVE9ETyhqbWFkaWxsKTogQWRkIEFOR0xFIFJlbmRlcmVyIHNl
bGVjdGlvbiBtb2RpZmllcnMKLS8vCi0vLyBURVNUX05BTUUgY2FuIGJlIGEgc3BlY2lmaWMgdGVz
dCBuYW1lLCBvciBoYXZlIGEgJyonIGluIHRoZSBlbmQsIHdoaWNoCi0vLyBpbmRpY2F0ZXMgYSBw
cmVmaXggbWF0Y2hpbmcuCi0vLwotLy8gRXhhbXBsZXM6Ci0vLyAgOTE1MzAgTUFDIFdJTiBMSU5V
WCA6IGNvbnRleHRfbG9zdF9yZXN0b3JlZCA9IFRJTUVPVVQKLS8vICA5MTUzMyBXSU4gOiBnbF9t
aW5fdW5pZm9ybXMgPSBGQUlMCi0vLyAgOTE1MzEgTUFDIFdJTiBMSU5VWCA6IGNvbmZvcm1hbmNl
X21vcmVfKiA9IFNLSVAKLS8vICA5MTUzMiBNQUMgTlZJRElBIDB4MDY0MCA6IHRleF9pbWFnZV9h
bmRfc3ViX2ltYWdlXzJkX3dpdGhfdmlkZW8gPSBQQVNTIEZBSUwKLQotMTQ0MiBERUJVRyA6IGRF
UVBfR0xFUzMxLiogPSBGQUlMCi0xNDQyIFJFTEVBU0UgOiBkRVFQX0dMRVMzMS4qID0gRkFJTApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9y
dC9kZXFwX2dsZXMzX3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9nbGVzM190ZXN0X2V4cGVjdGF0aW9ucy50
eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMzBlNGZhYWU5Mzk5OTg4NGVmNWEy
ZWE2YjY3YmVlODgwNGM1ZTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9k
ZXFwX2dsZXMzX3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI5MiAr
MCwwIEBACi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KLQotLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGEgbGlzdCBvZiBkZWZlY3RpdmUgZEVR
UCBjb25mb3JtYW5jZSB0ZXN0cy4gVGhlIGV4cGVjdGVkCi0vLyBmb3JtYXQgaXM6Ci0vLyAge0JV
RyN9IHtNT0RJRklFUlN9IDoge1RFU1RfTkFNRX0gPSB7UEFTUyxGQUlMLEZMQUtZLFRJTUVPVVQs
U0tJUH0KLS8vCi0vLyBNT0RJRklFUlMgY2FuIGJlIGEgY29tYmluYXRpb24gb2YgdGhlIGJlbG93
IGxpc3Q6Ci0vLyAgV0lOIFhQIFZJU1RBIFdJTjcgTUFDIExFT1BBUkQgU05PV0xFT1BBUkQgTElP
TiBMSU5VWCBDSFJPTUVPUyBNT1VOVEFJTkxJT04KLS8vICBNQVZFUklDS1MKLS8vICBOVklESUEg
QU1EIElOVEVMCi0vLyAgMHhhYmNkIC0gR1BVIFBDSSBkZXZpY2UgSUQuIFNwZWNpZnlpbmcgYSBQ
Q0kgaWQgcmVxdWlyZXMgYSB2ZW5kb3IuCi0vLyAgREVCVUcgUkVMRUFTRQotLy8gVE9ETyhqbWFk
aWxsKTogQWRkIEFOR0xFIFJlbmRlcmVyIHNlbGVjdGlvbiBtb2RpZmllcnMKLS8vCi0vLyBURVNU
X05BTUUgY2FuIGJlIGEgc3BlY2lmaWMgdGVzdCBuYW1lLCBvciBoYXZlIGEgJyonIGluIHRoZSBl
bmQsIHdoaWNoCi0vLyBpbmRpY2F0ZXMgYSBwcmVmaXggbWF0Y2hpbmcuCi0vLwotLy8gRXhhbXBs
ZXM6Ci0vLyAgOTE1MzAgTUFDIFdJTiBMSU5VWCA6IGNvbnRleHRfbG9zdF9yZXN0b3JlZCA9IFRJ
TUVPVVQKLS8vICA5MTUzMyBXSU4gOiBnbF9taW5fdW5pZm9ybXMgPSBGQUlMCi0vLyAgOTE1MzEg
TUFDIFdJTiBMSU5VWCA6IGNvbmZvcm1hbmNlX21vcmVfKiA9IFNLSVAKLS8vICA5MTUzMiBNQUMg
TlZJRElBIDB4MDY0MCA6IHRleF9pbWFnZV9hbmRfc3ViX2ltYWdlXzJkX3dpdGhfdmlkZW8gPSBQ
QVNTIEZBSUwKLQotLy8gRG9uJ3QgcnVuIHRoZXNlIHRlc3RzIGZvciBmYXN0ZXIgdHVybm92ZXIK
LTk5OCBXSU4gTElOVVggOiBkRVFQLUdMRVMzLnBlcmZvcm1hbmNlLiogPSBTS0lQCi05OTggV0lO
IExJTlVYIDogZEVRUC1HTEVTMy5zdHJlc3MuKiA9IFNLSVAKLTExMDEgV0lOIExJTlVYIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLmZsdXNoX2ZpbmlzaC4qID0gU0tJUAotCi0vLyBUT0RPKGptYWRp
bGwpOiBGaWd1cmUgb3V0IHdoeSB0aGVzZSBmYWlsIG9uIHRoZSBib3RzLCBidXQgbm90IGxvY2Fs
bHkuCi0xMTA4IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnN0cnVjdC5sb2Nh
bC5keW5hbWljX2xvb3Bfc3RydWN0X2FycmF5X2ZyYWdtZW50ID0gRkFJTAotMTA5NCBXSU4gOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLmhpZ2hwLmxvb3BfMiA9IEZB
SUwKLTEwOTQgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5t
ZWRpdW1wLmxvb3BfMiA9IEZBSUwKLQotLy8gV2UgY2FuJ3Qgc3VwcG9ydCBkaXN0aW5jdCB0ZXh0
dXJlIHNpemVzIGluIEQzRDExLgotMTA5NyBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJv
LmNvbXBsZXRlbmVzcy5zaXplLmRpc3RpbmN0ID0gRkFJTAotCi0vLyBGYWlsIGJlY2F1c2Ugd2Ug
c3VwcG9ydCB0aGVzZSBmb3JtYXRzIHRocm91Z2ggdGhlIEFOR0xFX2RlcHRoX3RleHR1cmUgZXh0
ZW5zaW9uIGluc3RlYWQgb2YgT0VTX2RlcHRoX3RleHR1cmUKLTYwNTc1NCBNQUMgV0lOIExJTlVY
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0
dXJlLmRlcHRoLmRlcHRoX2NvbXBvbmVudF91bnNpZ25lZF9zaG9ydCA9IEZBSUwKLTYwNTc1NCBN
QUMgV0lOIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVu
ZGVyYWJsZS50ZXh0dXJlLmRlcHRoLmRlcHRoX2NvbXBvbmVudF91bnNpZ25lZF9pbnQgPSBGQUlM
Ci0KLS8vIFRlc3RzIHRoYXQgd2UgZmFpbCBiZWNhdXNlIHRoZXkncmUgbm90IGluIGxpbmUgd2l0
aCB0aGUgV2ViR0wgc3BlYwotMTMzNSBNQUMgV0lOIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnNoYWRlcnMucHJlcHJvY2Vzc29yLmNvbmRpdGlvbmFsX2luY2x1c2lvbi5iYXNpY18yKiA9
IEZBSUwKLTEzMzUgTUFDIFdJTiBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJz
LnByZXByb2Nlc3Nvci5jb25kaXRpb25hbF9pbmNsdXNpb24uZGVmaW5lZF9tYWNyb19kZWZpbmVk
X3Rlc3QqID0gRkFJTAotMTMzNSBNQUMgV0lOIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnNoYWRlcnMucHJlcHJvY2Vzc29yLmNvbmRpdGlvbmFsX2luY2x1c2lvbi5kZWZpbmVkX21hY3Jv
X3VuZGVmKiA9IEZBSUwKLTEzMzUgTUFDIFdJTiBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5zaGFkZXJzLnByZXByb2Nlc3Nvci5jb25kaXRpb25hbF9pbmNsdXNpb24uZGVmaW5lX2RlZmlu
ZWQqID0gRkFJTAotMTMzNSBNQUMgV0lOIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNo
YWRlcnMucHJlcHJvY2Vzc29yLmNvbmRpdGlvbmFsX2luY2x1c2lvbi5kZWZpbmVfZGVmaW5lZF9v
dXRzaWRlX2lmKiA9IEZBSUwKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyAgVGVt
cG9yYXJ5IGVudHJpZXM6IHRoZXkgc2hvdWxkIGJlIHJlbW92ZWQgb25jZSB0aGUgYnVncyBhcmUg
Zml4ZWQuCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8gVE9ETyhqbWFkaWxsKTog
RmluZCB3aHkgdGhpcyBmYWlscyB3aGVuIHJ1biBpbiBhIGNlcnRhaW4gc2VxdWVuY2UsIGJ1dCBu
b3Qgc2luZ2x5LgotMTA5OCBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudW5pZm9ybV9hcGku
cmFuZG9tLjUwID0gRkFJTAotCi0vLyBNaXNzaW5nIHRoZSBTYW1wbGVDbXAgaW5zdHJ1Y3Rpb24g
aW4gdmVydGV4IHNoYWRlcnMuCi0xNDM1IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFk
ZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVsb2Quc2FtcGxlcjJkc2hhZG93X3ZlcnRleCA9
IEZBSUwKLTE0MzUgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9m
dW5jdGlvbnMudGV4dHVyZWxvZG9mZnNldC5zYW1wbGVyMmRzaGFkb3dfdmVydGV4ID0gRkFJTAot
MTQzNSBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9u
cy50ZXh0dXJlcHJvamxvZC5zYW1wbGVyMmRzaGFkb3dfdmVydGV4ID0gRkFJTAotMTQzNSBXSU4g
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJl
cHJvamxvZG9mZnNldC5zYW1wbGVyMmRzaGFkb3dfdmVydGV4ID0gRkFJTAotCi0vLyBTYW1wbGVD
bXAgaXMgbWlzc2luZyBncmFkaWVudC9vZmZzZXQgcGFyYW1ldGVycyBpbiBITFNMLgotMTQzNiBX
SU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0
dXJlbG9kLnNhbXBsZXIyZHNoYWRvd19mcmFnbWVudCA9IEZBSUwKLTE0MzYgV0lOIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWxvZG9mZnNl
dC5zYW1wbGVyMmRzaGFkb3dfZnJhZ21lbnQgPSBGQUlMCi0xNDM2IFdJTiA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVwcm9qbG9kLnNhbXBs
ZXIyZHNoYWRvd19mcmFnbWVudCA9IEZBSUwKLTE0MzYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZXByb2psb2RvZmZzZXQuc2FtcGxl
cjJkc2hhZG93X2ZyYWdtZW50ID0gRkFJTAotMTQzNiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZC5zYW1wbGVyMmRzaGFkb3df
dmVydGV4ID0gRkFJTAotMTQzNiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50
ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZC5zYW1wbGVyMmRzaGFkb3dfZnJhZ21lbnQgPSBG
QUlMCi0xNDM2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVu
Y3Rpb25zLnRleHR1cmVncmFkLnNhbXBsZXIyZGFycmF5c2hhZG93X3ZlcnRleCA9IEZBSUwKLTE0
MzYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMu
dGV4dHVyZWdyYWQuc2FtcGxlcjJkYXJyYXlzaGFkb3dfZnJhZ21lbnQgPSBGQUlMCi0xNDM2IFdJ
TiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1
cmVncmFkb2Zmc2V0LnNhbXBsZXIyZHNoYWRvd192ZXJ0ZXggPSBGQUlMCi0xNDM2IFdJTiA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVncmFk
b2Zmc2V0LnNhbXBsZXIyZHNoYWRvd19mcmFnbWVudCA9IEZBSUwKLTE0MzYgV0lOIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWdyYWRvZmZz
ZXQuc2FtcGxlcjJkYXJyYXlzaGFkb3dfdmVydGV4ID0gRkFJTAotMTQzNiBXSU4gOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZG9mZnNl
dC5zYW1wbGVyMmRhcnJheXNoYWRvd19mcmFnbWVudCA9IEZBSUwKLTE0MzYgV0lOIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZXByb2pncmFk
LnNhbXBsZXIyZHNoYWRvd192ZXJ0ZXggPSBGQUlMCi0xNDM2IFdJTiA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVwcm9qZ3JhZC5zYW1wbGVy
MmRzaGFkb3dfZnJhZ21lbnQgPSBGQUlMCi0xNDM2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVwcm9qZ3JhZG9mZnNldC5zYW1wbGVy
MmRzaGFkb3dfdmVydGV4ID0gRkFJTAotMTQzNiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
c2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlcHJvamdyYWRvZmZzZXQuc2FtcGxlcjJk
c2hhZG93X2ZyYWdtZW50ID0gRkFJTAotCi0vLyBUT0RPKGptYWRpbGwsIGN3YWxsZXopOiB0cmlh
Z2UgdGhlIGZhaWx1cmVzIGJlbG93IGludG8gcGVybWFuZW50IGFuZCB0ZW1wb3JhcnkgZmFpbHVy
ZXMKLQotLy8gV2luZG93cyBhbmQgTGludXggZmFpbHVyZXMKLQotMTEwMSBXSU4gTElOVVggOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwubmVnYXRpdmVfYXBpLnRleHR1cmUuY29tcHJlc3NlZHRleHN1
YmltYWdlMmQgPSBGQUlMCi0xMTAxIFdJTiBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5u
ZWdhdGl2ZV9hcGkudGV4dHVyZS5jb21wcmVzc2VkdGV4c3ViaW1hZ2UyZF9pbnZhbGlkX3NpemUg
PSBGQUlMCi0xMTAxIFdJTiBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5uZWdhdGl2ZV9h
cGkudGV4dHVyZS5jb21wcmVzc2VkdGV4c3ViaW1hZ2UzZCA9IEZBSUwKLTExMDEgV0lOIExJTlVY
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLm5lZ2F0aXZlX2FwaS50ZXh0dXJlLmNvbXByZXNzZWR0
ZXhzdWJpbWFnZTNkX2ludmFsaWRfYnVmZmVyX3RhcmdldCA9IEZBSUwKLTEwOTUgV0lOIExJTlVY
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLnByb2plY3RlZC5uZWFy
ZXN0X25lYXJlc3RfY2xhbXAgPSBGQUlMCi0xMDk1IFdJTiBMSU5VWCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5wcm9qZWN0ZWQubmVhcmVzdF9uZWFyZXN0X3JlcGVh
dCA9IEZBSUwKLTEwOTUgV0lOIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUu
bWlwbWFwLjJkLnByb2plY3RlZC5uZWFyZXN0X25lYXJlc3RfbWlycm9yID0gRkFJTAotMTA5NSBX
SU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQucHJvamVj
dGVkLmxpbmVhcl9uZWFyZXN0X2NsYW1wID0gRkFJTAotMTA5NSBXSU4gTElOVVggOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQucHJvamVjdGVkLmxpbmVhcl9uZWFyZXN0
X3JlcGVhdCA9IEZBSUwKLTEwOTUgV0lOIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRl
eHR1cmUubWlwbWFwLjJkLnByb2plY3RlZC5saW5lYXJfbmVhcmVzdF9taXJyb3IgPSBGQUlMCi0K
LS8vIFdpbmRvd3Mgb25seSBmYWlsdXJlCi0KLTEwOTMgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnNoYWRlcnMuYnVpbHRpbl9mdW5jdGlvbnMucHJlY2lzaW9uLnRhbmguaGlnaHBfdmVydGV4
LnNjYWxhciA9IEZBSUwKLTEwOTMgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMu
YnVpbHRpbl9mdW5jdGlvbnMucHJlY2lzaW9uLnRhbmguaGlnaHBfdmVydGV4LnZlYzIgPSBGQUlM
Ci0xMDkzIFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmJ1aWx0aW5fZnVuY3Rp
b25zLnByZWNpc2lvbi50YW5oLmhpZ2hwX3ZlcnRleC52ZWMzID0gRkFJTAotMTA5MyBXSU4gOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5idWlsdGluX2Z1bmN0aW9ucy5wcmVjaXNpb24u
dGFuaC5oaWdocF92ZXJ0ZXgudmVjNCA9IEZBSUwKLTEwOTMgV0lOIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnNoYWRlcnMuYnVpbHRpbl9mdW5jdGlvbnMucHJlY2lzaW9uLnRhbmguaGlnaHBfZnJh
Z21lbnQuc2NhbGFyID0gRkFJTAotMTA5MyBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hh
ZGVycy5idWlsdGluX2Z1bmN0aW9ucy5wcmVjaXNpb24udGFuaC5oaWdocF9mcmFnbWVudC52ZWMy
ID0gRkFJTAotMTA5MyBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5idWlsdGlu
X2Z1bmN0aW9ucy5wcmVjaXNpb24udGFuaC5oaWdocF9mcmFnbWVudC52ZWMzID0gRkFJTAotMTA5
MyBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5idWlsdGluX2Z1bmN0aW9ucy5w
cmVjaXNpb24udGFuaC5oaWdocF9mcmFnbWVudC52ZWM0ID0gRkFJTAotMTA5MiBXSU4gOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlb2Zmc2V0
LnNhbXBsZXIzZF9maXhlZF9mcmFnbWVudCA9IEZBSUwKLTEwOTIgV0lOIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZW9mZnNldC5zYW1wbGVy
M2RfZmxvYXRfZnJhZ21lbnQgPSBGQUlMCi0xMDkyIFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVwcm9qb2Zmc2V0LnNhbXBsZXIzZF9m
aXhlZF9mcmFnbWVudCA9IEZBSUwKLTEwOTIgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNo
YWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZXByb2pvZmZzZXQuc2FtcGxlcjNkX2Zsb2F0
X2ZyYWdtZW50ID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21l
bnRfb3BzLmRlcHRoX3N0ZW5jaWwuc3RlbmNpbF9kZXB0aF9mdW5jcy5zdGVuY2lsXyogPSBGQUlM
Ci0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuZGVwdGhfc3Rl
bmNpbC5zdGVuY2lsX29wcy4qID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwuZnJhZ21lbnRfb3BzLmRlcHRoX3N0ZW5jaWwud3JpdGVfbWFzay4qID0gRkFJTAotMTA5NiBX
SU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmRlcHRoX3N0ZW5jaWwucmFu
ZG9tLiogPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9v
cHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5h
ZGRfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5l
cXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2Nv
bnN0YW50X2FscGhhID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJh
Z21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0
X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFudF9jb2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwK
LTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZh
dWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9vbmVfbWludXNf
Y29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAotMTA5NiBXSU4g
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVi
dWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX2NvbnN0YW50X2FscGhhX2NvbnN0
YW50X2NvbG9yID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21l
bnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1
bmMuYWRkX2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZBSUwKLTEw
OTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0
X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9vbmVfbWludXNfY29u
c3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlv
bl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0YW50X2FscGhhX29uZV9taW51
c19jb25zdGFudF9jb2xvciA9IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5j
X2RzdF9mdW5jLnN1YnRyYWN0X2NvbnN0YW50X2NvbG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAot
MTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1
bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29uc3Rh
bnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIu
ZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2Nv
bG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1
bmNfZHN0X2Z1bmMuc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX29uZV9taW51c19j
b25zdGFudF9hbHBoYSA9IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZy
YWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2Rz
dF9mdW5jLnN1YnRyYWN0X2NvbnN0YW50X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAotMTA5
NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRf
ZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29uc3RhbnRf
YWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1
YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2FscGhh
X2NvbnN0YW50X2NvbG9yID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
ZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNf
ZHN0X2Z1bmMuc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25z
dGFudF9jb2xvciA9IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdt
ZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9m
dW5jLnJldmVyc2Vfc3VidHJhY3RfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlM
Ci0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVm
YXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRy
YWN0X2NvbnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKLTEwOTYg
V0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2Zy
YW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3Rfb25l
X21pbnVzX2NvbnN0YW50X2NvbG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAotMTA5NiBXSU4gOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZm
ZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9vbmVfbWludXNf
Y29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAotMTA5NiBXSU4g
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVi
dWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9jb25zdGFu
dF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3Ny
Y19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3RfY29uc3RhbnRfYWxwaGFfb25lX21pbnVz
X2NvbnN0YW50X2NvbG9yID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
ZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNf
ZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfY29uc3Rh
bnRfY29sb3IgPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVu
dF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVu
Yy5yZXZlcnNlX3N1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29u
c3RhbnRfY29sb3IgPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFn
bWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX2Nv
bnN0YW50X2NvbG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5j
X2RzdF9mdW5jLmFkZF9jb25zdGFudF9jb2xvcl9vbmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBG
QUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQu
ZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFu
dF9jb2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3Rf
ZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBo
YSA9IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5i
bGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfY29uc3RhbnRfYWxw
aGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMu
YWRkX2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZBSUwKLTEwOTYg
V0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5l
cXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0YW50X2FscGhhX2Nv
bnN0YW50X2NvbG9yID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJh
Z21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9v
bmVfbWludXNfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAot
MTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19z
cmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X2NvbnN0YW50X2NvbG9yX2Nv
bnN0YW50X2FscGhhID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJh
Z21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRy
YWN0X2NvbnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKLTEwOTYg
V0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5l
cXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfY29s
b3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMu
c3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBo
YSA9IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5i
bGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9jb25zdGFu
dF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3Rf
ZnVuYy5zdWJ0cmFjdF9jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBG
QUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQu
ZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rfb25lX21pbnVzX2Nv
bnN0YW50X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5j
X2RzdF9mdW5jLnN1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29u
c3RhbnRfY29sb3IgPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFn
bWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJz
ZV9zdWJ0cmFjdF9jb25zdGFudF9jb2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwKLTEwOTYgV0lO
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVh
dGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X2NvbnN0YW50X2NvbG9yX29u
ZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3Rf
ZnVuYy5yZXZlcnNlX3N1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9jb2xvcl9jb25zdGFudF9h
bHBoYSA9IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29w
cy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRy
YWN0X29uZV9taW51c19jb25zdGFudF9jb2xvcl9vbmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBG
QUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQu
ZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9jb25z
dGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19k
c3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFu
dF9jb2xvciA9IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50
X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1
YnRyYWN0X29uZV9taW51c19jb25zdGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKLTEw
OTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3Jn
Yi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X29uZV9taW51c19j
b25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBGQUlMCi0xMDk2IFdJTiA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMucmFuZG9tLiogPSBGQUlMCi0xMDk2
IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuaW50ZXJhY3Rpb24uYmFz
aWNfc2hhZGVyLiogPSBGQUlMCi0xMDk4IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC51bmlm
b3JtX2FwaS5yYW5kb20uOCA9IEZBSUwKLTEwOTggV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnVuaWZvcm1fYXBpLnJhbmRvbS44MSA9IEZBSUwKLTExMDEgV0lOIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnBvbHlnb25fb2Zmc2V0LmZpeGVkMTZfcmVuZGVyX3dpdGhfdW5pdHMgPSBGQUlMCi0x
MTAxIFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5wb2x5Z29uX29mZnNldC5maXhlZDI0X3Jl
bmRlcl93aXRoX3VuaXRzID0gRkFJTAotMTEwMSBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
bGlmZXRpbWUuYXR0YWNoLmRlbGV0ZWRfaW5wdXQuYnVmZmVyX3ZlcnRleF9hcnJheSA9IEZBSUwK
LQotLy8gV2luZG93cyBJbnRlbC1zcGVjaWZpYyBmYWlsdXJlcwotCi0xMzQ5IFdJTiBJTlRFTCA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVs
b2QuaXNhbXBsZXJjdWJlXyogPSBGQUlMCi0xMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVsb2QudXNhbXBsZXJjdWJl
XyogPSBGQUlMCi0xMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJz
LnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVncmFkLmlzYW1wbGVyY3ViZV92ZXJ0ZXggPSBGQUlM
Ci0xMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVf
ZnVuY3Rpb25zLnRleHR1cmVncmFkLnVzYW1wbGVyY3ViZV92ZXJ0ZXggPSBGQUlMCi0xMzQ5IFdJ
TiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25z
LnRleHR1cmVncmFkLnVzYW1wbGVyY3ViZV9mcmFnbWVudCA9IEZBSUwKLTEzNDkgV0lOIElOVEVM
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuMl91bml0cy5vbmx5X2N1YmUu
MCA9IEZBSUwKLTEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUu
dW5pdHMuMl91bml0cy5vbmx5X2N1YmUuMiA9IEZBSUwKLTEzNDkgV0lOIElOVEVMIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuMl91bml0cy5vbmx5X2N1YmUuNCA9IEZBSUwK
LTEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuMl91
bml0cy5vbmx5X2N1YmUuNyA9IEZBSUwKLTEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnRleHR1cmUudW5pdHMuMl91bml0cy5vbmx5X2N1YmUuOCA9IEZBSUwKLTEzNDkgV0lO
IElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuMl91bml0cy5taXhl
ZC40ID0gRkFJTAotMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVy
ZS51bml0cy40X3VuaXRzLm9ubHlfY3ViZS4wID0gRkFJTAotMTM0OSBXSU4gSU5URUwgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy40X3VuaXRzLm9ubHlfY3ViZS4xID0gRkFJ
TAotMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy40
X3VuaXRzLm9ubHlfY3ViZS4yID0gRkFJTAotMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwudGV4dHVyZS51bml0cy40X3VuaXRzLm9ubHlfY3ViZS42ID0gRkFJTAotMTM0OSBX
SU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy40X3VuaXRzLm9u
bHlfY3ViZS43ID0gRkFJTAotMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
dGV4dHVyZS51bml0cy40X3VuaXRzLm9ubHlfY3ViZS44ID0gRkFJTAotMTM0OSBXSU4gSU5URUwg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy40X3VuaXRzLm9ubHlfY3ViZS45
ID0gRkFJTAotMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51
bml0cy40X3VuaXRzLm1peGVkLjQgPSBGQUlMCi0xMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjRfdW5pdHMubWl4ZWQuNiA9IEZBSUwKLTEzNDkgV0lO
IElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuNF91bml0cy5taXhl
ZC43ID0gRkFJTAotMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVy
ZS51bml0cy44X3VuaXRzLm9ubHlfY3ViZS4qID0gRkFJTAotMTM0OSBXSU4gSU5URUwgOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy44X3VuaXRzLm1peGVkLjIgPSBGQUlMCi0x
MzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjhfdW5p
dHMubWl4ZWQuMyA9IEZBSUwKLTEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnRleHR1cmUudW5pdHMuOF91bml0cy5taXhlZC40ID0gRkFJTAotMTM0OSBXSU4gSU5URUwgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy44X3VuaXRzLm1peGVkLjYgPSBGQUlM
Ci0xMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjhf
dW5pdHMubWl4ZWQuNyA9IEZBSUwKLTEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnRleHR1cmUudW5pdHMuYWxsX3VuaXRzLm9ubHlfY3ViZS4qID0gRkFJTAotMTM0OSBXSU4g
SU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy5hbGxfdW5pdHMubWl4
ZWQuMiA9IEZBSUwKLTEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1
cmUudW5pdHMuYWxsX3VuaXRzLm1peGVkLjMgPSBGQUlMCi0xMzQ5IFdJTiBJTlRFTCA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLmFsbF91bml0cy5taXhlZC40ID0gRkFJTAot
MTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy5hbGxf
dW5pdHMubWl4ZWQuNiA9IEZBSUwKLTEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnRleHR1cmUudW5pdHMuYWxsX3VuaXRzLm1peGVkLjcgPSBGQUlMCi0KLS8vIExpbnV4IG9u
bHkgZmFpbHVyZXMKLQotLy8gVUJPIHRlc3RzIHRyaWdnZXIgY3Jhc2hlcyB3aGVuIGdldHRpbmcg
dGhlIHByb2dyYW0gaW5mbyBsb2csIHNraXAgdGhlbSB1bnRpbCB0aGlzIGlzIGZpeGVkLgotMTMy
MyBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC51Ym8uKiA9IFNLSVAKLQotMTMyMyBMSU5V
WCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5kcmF3LnJhbmRvbS4yMTAgPSBGQUlMCi0xMzIzIExJ
TlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5ibGl0LmRlZmF1bHRfZnJhbWVidWZmZXIu
c3JnYjhfYWxwaGE4ID0gRkFJTAotMTMyMyBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5m
Ym8uYmxpdC5kZWZhdWx0X2ZyYW1lYnVmZmVyLnNyZ2I4X2FscGhhOF9saW5lYXJfb3V0X29mX2Jv
dW5kc19ibGl0X3RvX2RlZmF1bHQgPSBGQUlMCi0xMzIzIExJTlVYIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLmZiby5ibGl0LmRlZmF1bHRfZnJhbWVidWZmZXIuc3JnYjhfYWxwaGE4X2xpbmVhcl9z
Y2FsZV9ibGl0X3RvX2RlZmF1bHQgPSBGQUlMCi0xMzIzIExJTlVYIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLmZiby5ibGl0LmRlZmF1bHRfZnJhbWVidWZmZXIuc3JnYjhfYWxwaGE4X25lYXJlc3Rf
c2NhbGVfYmxpdF90b19kZWZhdWx0ID0gRkFJTAotMTMyMyBMSU5VWCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5mYm8uZGVwdGguZGVwdGhfdGVzdF9jbGFtcC5kZXB0aF9jb21wb25lbnQzMmYgPSBG
QUlMCi0xMzIzIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5kZXB0aC5kZXB0aF90
ZXN0X2NsYW1wLmRlcHRoMzJmX3N0ZW5jaWw4ID0gRkFJTAotMTMyMyBMSU5VWCA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5mYm8uZGVwdGguZGVwdGhfd3JpdGVfY2xhbXAuZGVwdGhfY29tcG9uZW50
MzJmID0gRkFJTAotMTMyMyBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uZGVwdGgu
ZGVwdGhfd3JpdGVfY2xhbXAuZGVwdGgzMmZfc3RlbmNpbDggPSBGQUlMCi0xMzIzIExJTlVYIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnJhc3Rlcml6YXRpb24uZmJvLnJib19tdWx0aXNhbXBsZV9t
YXgucHJpbWl0aXZlcy5wb2ludHMgPSBGQUlMCi0xMzIzIExJTlVYIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnN0YXRlX3F1ZXJ5LmludGVnZXJzNjQubWF4X3NlcnZlcl93YWl0X3RpbWVvdXRfZ2V0
ZmxvYXQgPSBGQUlMCi0xMzIzIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUu
bWlwbWFwLjJkLnByb2plY3RlZC5saW5lYXJfbGluZWFyX2NsYW1wID0gRkFJTAotMTMyMyBMSU5V
WCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5wcm9qZWN0ZWQubGlu
ZWFyX2xpbmVhcl9taXJyb3IgPSBGQUlMCi0xMzIzIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnRleHR1cmUubWlwbWFwLjJkLnByb2plY3RlZC5saW5lYXJfbGluZWFyX3JlcGVhdCA9IEZB
SUwKLTEzMjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQu
cHJvamVjdGVkLm5lYXJlc3RfbGluZWFyX2NsYW1wID0gRkFJTAotMTMyMyBMSU5VWCA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5wcm9qZWN0ZWQubmVhcmVzdF9saW5l
YXJfbWlycm9yID0gRkFJTAotMTMyMyBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0
dXJlLm1pcG1hcC4yZC5wcm9qZWN0ZWQubmVhcmVzdF9saW5lYXJfcmVwZWF0ID0gRkFJTAotMTA5
OCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC51bmlmb3JtX2FwaS5yYW5kb20uNiA9IEZB
SUwKLQotLy8gV2hpbGUgbG9vcHMgd2l0aCAnY29udGludWUnIHNlZW0gZmxha3kgb24gTGludXgu
IChQb3NzaWJseSBhbGwgR0wgcmVuZGVyZXJzKQotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMuY29uZGl0aW9u
YWxfY29udGludWVfdmVydGV4ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMuY29uZGl0aW9uYWxf
Y29udGludWVfZnJhZ21lbnQgPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnNoYWRlcnMubG9vcHMud2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy51bmNvbmRpdGlvbmFs
X2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwuc2hhZGVycy5sb29wcy53aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLnVuY29uZGl0aW9uYWxf
Y29udGludWVfZnJhZ21lbnQgPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnNoYWRlcnMubG9vcHMud2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5vbmx5X2NvbnRpbnVl
X3ZlcnRleCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVy
cy5sb29wcy53aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLm9ubHlfY29udGludWVfZnJhZ21lbnQg
PSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMu
d2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5kb3VibGVfY29udGludWVfdmVydGV4ID0gRkFJTAot
MTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2Nv
bnN0YW50X2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAotMTMyNCBM
SU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2NvbnN0YW50
X2l0ZXJhdGlvbnMubWl4ZWRfYnJlYWtfY29udGludWVfdmVydGV4ID0gRkFJTAotMTMyNCBMSU5V
WCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2NvbnN0YW50X2l0
ZXJhdGlvbnMubWl4ZWRfYnJlYWtfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCi0xMzI0IExJTlVY
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfdW5pZm9ybV9pdGVy
YXRpb25zLmNvbmRpdGlvbmFsX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKLTEzMjQgTElOVVggOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV91bmlmb3JtX2l0ZXJhdGlv
bnMuY29uZGl0aW9uYWxfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCi0xMzI0IExJTlVYIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfdW5pZm9ybV9pdGVyYXRpb25z
LnVuY29uZGl0aW9uYWxfY29udGludWVfdmVydGV4ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX3VuaWZvcm1faXRlcmF0aW9ucy51
bmNvbmRpdGlvbmFsX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAt
R0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5v
bmx5X2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMub25seV9jb250aW51
ZV9mcmFnbWVudCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hh
ZGVycy5sb29wcy53aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRpbnVlX3ZlcnRl
eCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29w
cy53aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJ
TAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxl
X3VuaWZvcm1faXRlcmF0aW9ucy5taXhlZF9icmVha19jb250aW51ZV92ZXJ0ZXggPSBGQUlMCi0x
MzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfdW5p
Zm9ybV9pdGVyYXRpb25zLm1peGVkX2JyZWFrX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAotMTMy
NCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2R5bmFt
aWNfaXRlcmF0aW9ucy5jb25kaXRpb25hbF9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCi0xMzI0IExJ
TlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfZHluYW1pY19p
dGVyYXRpb25zLmNvbmRpdGlvbmFsX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAotMTMyNCBMSU5V
WCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2R5bmFtaWNfaXRl
cmF0aW9ucy51bmNvbmRpdGlvbmFsX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKLTEzMjQgTElOVVgg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9keW5hbWljX2l0ZXJh
dGlvbnMudW5jb25kaXRpb25hbF9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKLTEzMjQgTElOVVgg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9keW5hbWljX2l0ZXJh
dGlvbnMub25seV9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfZHluYW1pY19pdGVyYXRpb25zLm9ubHlf
Y29udGludWVfZnJhZ21lbnQgPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnNoYWRlcnMubG9vcHMud2hpbGVfZHluYW1pY19pdGVyYXRpb25zLmRvdWJsZV9jb250aW51
ZV92ZXJ0ZXggPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRl
cnMubG9vcHMud2hpbGVfZHluYW1pY19pdGVyYXRpb25zLmRvdWJsZV9jb250aW51ZV9mcmFnbWVu
dCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29w
cy53aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMubWl4ZWRfYnJlYWtfY29udGludWVfdmVydGV4ID0g
RkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndo
aWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5taXhlZF9icmVha19jb250aW51ZV9mcmFnbWVudCA9IEZB
SUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193
aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLmNvbmRpdGlvbmFsX2NvbnRpbnVlX3ZlcnRleCA9IEZB
SUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193
aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLmNvbmRpdGlvbmFsX2NvbnRpbnVlX2ZyYWdtZW50ID0g
RkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRv
X3doaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMudW5jb25kaXRpb25hbF9jb250aW51ZV92ZXJ0ZXgg
PSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMu
ZG9fd2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy51bmNvbmRpdGlvbmFsX2NvbnRpbnVlX2ZyYWdt
ZW50ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxv
b3BzLmRvX3doaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMub25seV9jb250aW51ZV92ZXJ0ZXggPSBG
QUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9f
d2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5vbmx5X2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAot
MTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxl
X2NvbnN0YW50X2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKLTEzMjQg
TElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9jb25z
dGFudF9pdGVyYXRpb25zLmRvdWJsZV9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKLTEzMjQgTElO
VVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9jb25zdGFu
dF9pdGVyYXRpb25zLm1peGVkX2JyZWFrX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKLTEzMjQgTElO
VVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9jb25zdGFu
dF9pdGVyYXRpb25zLm1peGVkX2JyZWFrX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAotMTMyNCBM
SU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX3VuaWZv
cm1faXRlcmF0aW9ucy5jb25kaXRpb25hbF9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCi0xMzI0IExJ
TlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfdW5pZm9y
bV9pdGVyYXRpb25zLmNvbmRpdGlvbmFsX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAotMTMyNCBM
SU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX3VuaWZv
cm1faXRlcmF0aW9ucy51bmNvbmRpdGlvbmFsX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKLTEzMjQg
TElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV91bmlm
b3JtX2l0ZXJhdGlvbnMudW5jb25kaXRpb25hbF9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKLTEz
MjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV91
bmlmb3JtX2l0ZXJhdGlvbnMub25seV9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCi0xMzI0IExJTlVY
IDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfdW5pZm9ybV9p
dGVyYXRpb25zLm9ubHlfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCi0xMzI0IExJTlVYIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfdW5pZm9ybV9pdGVyYXRp
b25zLmRvdWJsZV9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLmRv
dWJsZV9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMubWl4ZWRf
YnJlYWtfY29udGludWVfdmVydGV4ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5taXhlZF9i
cmVha19jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMuY29uZGl0
aW9uYWxfY29udGludWVfdmVydGV4ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5jb25kaXRp
b25hbF9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMudW5jb25k
aXRpb25hbF9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfZHluYW1pY19pdGVyYXRpb25zLnVuY29u
ZGl0aW9uYWxfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfZHluYW1pY19pdGVyYXRpb25zLm9u
bHlfY29udGludWVfdmVydGV4ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5vbmx5X2NvbnRp
bnVlX2ZyYWdtZW50ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5z
aGFkZXJzLmxvb3BzLmRvX3doaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5kb3VibGVfY29udGludWVf
dmVydGV4ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJz
Lmxvb3BzLmRvX3doaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5kb3VibGVfY29udGludWVfZnJhZ21l
bnQgPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9v
cHMuZG9fd2hpbGVfZHluYW1pY19pdGVyYXRpb25zLm1peGVkX2JyZWFrX2NvbnRpbnVlX3ZlcnRl
eCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29w
cy5kb193aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMubWl4ZWRfYnJlYWtfY29udGludWVfZnJhZ21l
bnQgPSBGQUlMCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
ZGVxcF9zdXBwb3J0L3RjdUFOR0xFTmF0aXZlRGlzcGxheUZhY3RvcnkuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VBTkdMRU5hdGl2ZURpc3Bs
YXlGYWN0b3J5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0MzJiNDcwNDQ2
MmM2YTJiNWUzMTUyYjlhMWU2MDE2NzkyMWE4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVx
cF9zdXBwb3J0L3RjdUFOR0xFTmF0aXZlRGlzcGxheUZhY3RvcnkuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMzI2ICswLDAgQEAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogZHJhd0VsZW1lbnRzIFF1
YWxpdHkgUHJvZ3JhbSBUZXN0ZXIgQ29yZQotICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotICoKLSAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291
cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZl
cnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUg
ZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWlu
IGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUu
b3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxp
Y2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywK
LSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIg
ZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMg
bGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIg
dGhlIExpY2Vuc2UuCi0gKgotICovCi0KLSNpbmNsdWRlICJ0Y3VBTkdMRU5hdGl2ZURpc3BsYXlG
YWN0b3J5LmgiCi0KLSNpbmNsdWRlIDxFR0wvZWdsLmg+Ci0jaW5jbHVkZSA8RUdML2VnbGV4dC5o
PgotCi0jaW5jbHVkZSAiZGVDbG9jay5oIgotI2luY2x1ZGUgImRlTWVtb3J5LmgiCi0jaW5jbHVk
ZSAiZGVUaHJlYWQuaCIKLSNpbmNsdWRlICJlZ2x1RGVmcy5ocHAiCi0jaW5jbHVkZSAiZWdsd0xp
YnJhcnkuaHBwIgotI2luY2x1ZGUgIk9TUGl4bWFwLmgiCi0jaW5jbHVkZSAiT1NXaW5kb3cuaCIK
LSNpbmNsdWRlICJ0Y3VUZXh0dXJlLmhwcCIKLQotLy8gY2xhbmctZm9ybWF0IG9mZgotI2lmIChE
RV9PUyA9PSBERV9PU19XSU4zMikKLSAgICAjZGVmaW5lIEFOR0xFX0VHTF9MSUJSQVJZX05BTUUg
ImxpYkVHTC5kbGwiCi0jZWxpZiAoREVfT1MgPT0gREVfT1NfVU5JWCkgfHwgKERFX09TID09IERF
X09TX0FORFJPSUQpCi0gICAgI2RlZmluZSBBTkdMRV9FR0xfTElCUkFSWV9OQU1FICJsaWJFR0wu
c28iCi0jZWxpZiAoREVfT1MgPT0gREVfT1NfT1NYKQotICAgICNkZWZpbmUgQU5HTEVfRUdMX0xJ
QlJBUllfTkFNRSAibGliRUdMLmR5bGliIgotI2Vsc2UKLSAgICAjZXJyb3IgIlVuc3VwcG9ydGVk
IHBsYXRmb3JtIgotI2VuZGlmCi0vLyBjbGFuZy1mb3JtYXQgb24KLQotbmFtZXNwYWNlIHRjdQot
ewotbmFtZXNwYWNlCi17Ci0KLWVudW0KLXsKLSAgICBERUZBVUxUX1NVUkZBQ0VfV0lEVEggICAg
ICAgPSA0MDAsCi0gICAgREVGQVVMVF9TVVJGQUNFX0hFSUdIVCAgICAgID0gMzAwLAotICAgIFdB
SVRfV0lORE9XX1ZJU0lCTEVfTVMgICAgICA9IDUwMCAgIC8vITwgVGltZSB0byB3YWl0IGJlZm9y
ZSBpc3N1aW5nIHNjcmVlbnNob3QgYWZ0ZXIgY2hhbmdpbmcgd2luZG93IHZpc2liaWxpdHkgKGhh
Y2sgZm9yIERXTSkKLX07Ci0KLXN0YXRpYyBjb25zdCBlZ2x1OjpOYXRpdmVEaXNwbGF5OjpDYXBh
YmlsaXR5IERJU1BMQVlfQ0FQQUJJTElUSUVTID0gZWdsdTo6TmF0aXZlRGlzcGxheTo6Q0FQQUJJ
TElUWV9HRVRfRElTUExBWV9QTEFURk9STTsKLXN0YXRpYyBjb25zdCBlZ2x1OjpOYXRpdmVQaXht
YXA6OkNhcGFiaWxpdHkgIEJJVE1BUF9DQVBBQklMSVRJRVMgID0gZWdsdTo6TmF0aXZlUGl4bWFw
OjpDQVBBQklMSVRZX0NSRUFURV9TVVJGQUNFX0xFR0FDWTsKLXN0YXRpYyBjb25zdCBlZ2x1OjpO
YXRpdmVXaW5kb3c6OkNhcGFiaWxpdHkgIFdJTkRPV19DQVBBQklMSVRJRVMgID0gKGVnbHU6Ok5h
dGl2ZVdpbmRvdzo6Q2FwYWJpbGl0eSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlZ2x1OjpOYXRpdmVXaW5kb3c6
OkNBUEFCSUxJVFlfQ1JFQVRFX1NVUkZBQ0VfTEVHQUNZICAgIHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2x1
OjpOYXRpdmVXaW5kb3c6OkNBUEFCSUxJVFlfR0VUX1NVUkZBQ0VfU0laRSAgICAgICAgIHwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlZ2x1OjpOYXRpdmVXaW5kb3c6OkNBUEFCSUxJVFlfR0VUX1NDUkVFTl9TSVpF
ICAgICAgICAgIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2x1OjpOYXRpdmVXaW5kb3c6OkNBUEFCSUxJVFlf
UkVBRF9TQ1JFRU5fUElYRUxTICAgICAgIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2x1OjpOYXRpdmVXaW5k
b3c6OkNBUEFCSUxJVFlfU0VUX1NVUkZBQ0VfU0laRSAgICAgICAgIHwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
Z2x1OjpOYXRpdmVXaW5kb3c6OkNBUEFCSUxJVFlfQ0hBTkdFX1ZJU0lCSUxJVFkpOwotCi1jbGFz
cyBBTkdMRU5hdGl2ZURpc3BsYXkgOiBwdWJsaWMgZWdsdTo6TmF0aXZlRGlzcGxheQotewotICBw
dWJsaWM6Ci0gICAgQU5HTEVOYXRpdmVEaXNwbGF5KGNvbnN0IHN0ZDo6dmVjdG9yPGVnbHc6OkVH
TEF0dHJpYj4gJmF0dHJpYnMpOwotICAgIHZpcnR1YWwgfkFOR0xFTmF0aXZlRGlzcGxheSgpIHt9
Ci0KLSAgICB2b2lkICpnZXRQbGF0Zm9ybU5hdGl2ZSgpIG92ZXJyaWRlIHsgcmV0dXJuIG1EZXZp
Y2VDb250ZXh0OyB9Ci0gICAgY29uc3QgZWdsdzo6RUdMQXR0cmliICpnZXRQbGF0Zm9ybUF0dHJp
YnV0ZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAmbVBsYXRmb3JtQXR0cmlidXRlc1swXTsg
fQotICAgIGNvbnN0IGVnbHc6OkxpYnJhcnkgJmdldExpYnJhcnkoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBtTGlicmFyeTsgfQotCi0gICAgRUdMTmF0aXZlRGlzcGxheVR5cGUgZ2V0RGV2aWNl
Q29udGV4dCgpIHsgcmV0dXJuIG1EZXZpY2VDb250ZXh0OyB9Ci0KLSAgcHJpdmF0ZToKLSAgICBF
R0xOYXRpdmVEaXNwbGF5VHlwZSBtRGV2aWNlQ29udGV4dDsKLSAgICBlZ2x3OjpEZWZhdWx0TGli
cmFyeSBtTGlicmFyeTsKLSAgICBzdGQ6OnZlY3RvcjxlZ2x3OjpFR0xBdHRyaWI+IG1QbGF0Zm9y
bUF0dHJpYnV0ZXM7Ci19OwotCi1jbGFzcyBOYXRpdmVQaXhtYXBGYWN0b3J5IDogcHVibGljIGVn
bHU6Ok5hdGl2ZVBpeG1hcEZhY3RvcnkKLXsKLSAgcHVibGljOgotICAgIE5hdGl2ZVBpeG1hcEZh
Y3RvcnkoKTsKLSAgICB+TmF0aXZlUGl4bWFwRmFjdG9yeSgpIHt9Ci0KLSAgICBlZ2x1OjpOYXRp
dmVQaXhtYXAgKmNyZWF0ZVBpeG1hcChlZ2x1OjpOYXRpdmVEaXNwbGF5ICpuYXRpdmVEaXNwbGF5
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNvbnN0IG92ZXJyaWRlOwotICAgIGVnbHU6Ok5hdGl2
ZVBpeG1hcCAqY3JlYXRlUGl4bWFwKGVnbHU6Ok5hdGl2ZURpc3BsYXkgKm5hdGl2ZURpc3BsYXks
IGVnbHc6OkVHTERpc3BsYXkgZGlzcGxheSwgZWdsdzo6RUdMQ29uZmlnIGNvbmZpZywgY29uc3Qg
ZWdsdzo6RUdMQXR0cmliKiBhdHRyaWJMaXN0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNvbnN0
IG92ZXJyaWRlOwotfTsKLQotY2xhc3MgTmF0aXZlUGl4bWFwIDogcHVibGljIGVnbHU6Ok5hdGl2
ZVBpeG1hcAotewotICBwdWJsaWM6Ci0gICAgTmF0aXZlUGl4bWFwKEVHTE5hdGl2ZURpc3BsYXlU
eXBlIGRpc3BsYXksIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGJpdERlcHRoKTsKLSAgICB2
aXJ0dWFsIH5OYXRpdmVQaXhtYXAoKTsKLQotICAgIGVnbHc6OkVHTE5hdGl2ZVBpeG1hcFR5cGUg
Z2V0TGVnYWN5TmF0aXZlKCkgb3ZlcnJpZGU7Ci0KLSAgcHJpdmF0ZToKLSAgICBPU1BpeG1hcCAq
bVBpeG1hcDsKLX07Ci0KLWNsYXNzIE5hdGl2ZVdpbmRvd0ZhY3RvcnkgOiBwdWJsaWMgZWdsdTo6
TmF0aXZlV2luZG93RmFjdG9yeQotewotICBwdWJsaWM6Ci0gICAgTmF0aXZlV2luZG93RmFjdG9y
eShFdmVudFN0YXRlICpldmVudFN0YXRlKTsKLSAgICB+TmF0aXZlV2luZG93RmFjdG9yeSgpIG92
ZXJyaWRlIHt9Ci0KLSAgICBlZ2x1OjpOYXRpdmVXaW5kb3cgKmNyZWF0ZVdpbmRvdyhlZ2x1OjpO
YXRpdmVEaXNwbGF5ICpuYXRpdmVEaXNwbGF5LCBjb25zdCBlZ2x1OjpXaW5kb3dQYXJhbXMgJnBh
cmFtcykgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgcHJpdmF0ZToKLSAgICBFdmVudFN0YXRlICptRXZl
bnRzOwotfTsKLQotY2xhc3MgTmF0aXZlV2luZG93IDogcHVibGljIGVnbHU6Ok5hdGl2ZVdpbmRv
dwotewotICBwdWJsaWM6Ci0gICAgTmF0aXZlV2luZG93KEFOR0xFTmF0aXZlRGlzcGxheSAqbmF0
aXZlRGlzcGxheSwgY29uc3QgZWdsdTo6V2luZG93UGFyYW1zICZwYXJhbXMsIEV2ZW50U3RhdGUg
KmV2ZW50U3RhdGUpOwotICAgIH5OYXRpdmVXaW5kb3coKSBvdmVycmlkZTsKLQotICAgIGVnbHc6
OkVHTE5hdGl2ZVdpbmRvd1R5cGUgZ2V0TGVnYWN5TmF0aXZlKCkgb3ZlcnJpZGU7Ci0gICAgSVZl
YzIgZ2V0U3VyZmFjZVNpemUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBJVmVjMiBnZXRTY3JlZW5T
aXplKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZ2V0U3VyZmFjZVNpemUoKTsgfQotICAgIHZv
aWQgcHJvY2Vzc0V2ZW50cygpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0U3VyZmFjZVNpemUoSVZl
YzIgc2l6ZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRWaXNpYmlsaXR5KGVnbHU6OldpbmRvd1Bh
cmFtczo6VmlzaWJpbGl0eSB2aXNpYmlsaXR5KSBvdmVycmlkZTsKLSAgICB2b2lkIHJlYWRTY3Jl
ZW5QaXhlbHModGN1OjpUZXh0dXJlTGV2ZWwqIGRzdCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgcHJp
dmF0ZToKLSAgICBPU1dpbmRvdyAqbVdpbmRvdzsKLSAgICBFdmVudFN0YXRlICptRXZlbnRzOwot
fTsKLQotLy8gQU5HTEUgTmF0aXZlRGlzcGxheQotCi1BTkdMRU5hdGl2ZURpc3BsYXk6OkFOR0xF
TmF0aXZlRGlzcGxheShjb25zdCBzdGQ6OnZlY3RvcjxFR0xBdHRyaWI+ICZhdHRyaWJzKQotICAg
IDogZWdsdTo6TmF0aXZlRGlzcGxheShESVNQTEFZX0NBUEFCSUxJVElFUywgRUdMX1BMQVRGT1JN
X0FOR0xFX0FOR0xFLCAiRUdMX0VYVF9wbGF0Zm9ybV9iYXNlIiksCi0gICAgICBtRGV2aWNlQ29u
dGV4dChFR0xfREVGQVVMVF9ESVNQTEFZKSwKLSAgICAgIG1MaWJyYXJ5KEFOR0xFX0VHTF9MSUJS
QVJZX05BTUUpLAotICAgICAgbVBsYXRmb3JtQXR0cmlidXRlcyhhdHRyaWJzKQotewotfQotCi0v
LyBOYXRpdmVQaXhtYXAKLQotTmF0aXZlUGl4bWFwOjpOYXRpdmVQaXhtYXAoRUdMTmF0aXZlRGlz
cGxheVR5cGUgZGlzcGxheSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgYml0RGVwdGgpCi0g
ICAgOiBlZ2x1OjpOYXRpdmVQaXhtYXAoQklUTUFQX0NBUEFCSUxJVElFUyksCi0gICAgICBtUGl4
bWFwKENyZWF0ZU9TUGl4bWFwKCkpCi17Ci0gICAgaWYgKCFtUGl4bWFwKQotICAgIHsKLSAgICAg
ICAgdGhyb3cgUmVzb3VyY2VFcnJvcigiRmFpbGVkIHRvIGNyZWF0ZSBwaXhtYXAiLCBERV9OVUxM
LCBfX0ZJTEVfXywgX19MSU5FX18pOwotICAgIH0KLQotICAgIGlmICghbVBpeG1hcC0+aW5pdGlh
bGl6ZShkaXNwbGF5LCB3aWR0aCwgaGVpZ2h0LCBiaXREZXB0aCkpCi0gICAgewotICAgICAgICB0
aHJvdyBSZXNvdXJjZUVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBwaXhtYXAiLCBERV9OVUxM
LCBfX0ZJTEVfXywgX19MSU5FX18pOwotICAgIH0KLX0KLQotTmF0aXZlUGl4bWFwOjp+TmF0aXZl
UGl4bWFwKCkKLXsKLSAgICBkZWxldGUgbVBpeG1hcDsKLX0KLQotZWdsdzo6RUdMTmF0aXZlUGl4
bWFwVHlwZSBOYXRpdmVQaXhtYXA6OmdldExlZ2FjeU5hdGl2ZSgpCi17Ci0gICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8ZWdsdzo6RUdMTmF0aXZlUGl4bWFwVHlwZT4obVBpeG1hcC0+Z2V0TmF0
aXZlUGl4bWFwKCkpOwotfQotCi0vLyBOYXRpdmVQaXhtYXBGYWN0b3J5Ci0KLU5hdGl2ZVBpeG1h
cEZhY3Rvcnk6Ok5hdGl2ZVBpeG1hcEZhY3RvcnkoKQotICAgIDogZWdsdTo6TmF0aXZlUGl4bWFw
RmFjdG9yeSgiYml0bWFwIiwgIkFOR0xFIEJpdG1hcCIsIEJJVE1BUF9DQVBBQklMSVRJRVMpCi17
Ci19Ci0KLWVnbHU6Ok5hdGl2ZVBpeG1hcCAqTmF0aXZlUGl4bWFwRmFjdG9yeTo6Y3JlYXRlUGl4
bWFwIChlZ2x1OjpOYXRpdmVEaXNwbGF5KiBuYXRpdmVEaXNwbGF5LCBlZ2x3OjpFR0xEaXNwbGF5
IGRpc3BsYXksIGVnbHc6OkVHTENvbmZpZyBjb25maWcsIGNvbnN0IGVnbHc6OkVHTEF0dHJpYiog
YXR0cmliTGlzdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdAotewotICAgIGNvbnN0IGVn
bHc6OkxpYnJhcnkmICAgIGVnbCAgICAgICAgID0gbmF0aXZlRGlzcGxheS0+Z2V0TGlicmFyeSgp
OwotICAgIGludCAgICAgICAgICAgICByZWRCaXRzICAgICA9IDA7Ci0gICAgaW50ICAgICAgICAg
ICAgIGdyZWVuQml0cyAgID0gMDsKLSAgICBpbnQgICAgICAgICAgICAgYmx1ZUJpdHMgICAgPSAw
OwotICAgIGludCAgICAgICAgICAgICBhbHBoYUJpdHMgICA9IDA7Ci0gICAgaW50ICAgICAgICAg
ICAgIGJpdFN1bSAgICAgID0gMDsKLQotICAgIERFX0FTU0VSVChkaXNwbGF5ICE9IEVHTF9OT19E
SVNQTEFZKTsKLQotICAgIGVnbC5nZXRDb25maWdBdHRyaWIoZGlzcGxheSwgY29uZmlnLCBFR0xf
UkVEX1NJWkUsICAgICAgJnJlZEJpdHMpOwotICAgIGVnbC5nZXRDb25maWdBdHRyaWIoZGlzcGxh
eSwgY29uZmlnLCBFR0xfR1JFRU5fU0laRSwgICAgJmdyZWVuQml0cyk7Ci0gICAgZWdsLmdldENv
bmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9CTFVFX1NJWkUsICAgICAmYmx1ZUJpdHMp
OwotICAgIGVnbC5nZXRDb25maWdBdHRyaWIoZGlzcGxheSwgY29uZmlnLCBFR0xfQUxQSEFfU0la
RSwgICAgJmFscGhhQml0cyk7Ci0gICAgRUdMVV9DSEVDS19NU0coZWdsLCAiZWdsR2V0Q29uZmln
QXR0cmliKCkiKTsKLQotICAgIGJpdFN1bSA9IHJlZEJpdHMrZ3JlZW5CaXRzK2JsdWVCaXRzK2Fs
cGhhQml0czsKLQotICAgIHJldHVybiBuZXcgTmF0aXZlUGl4bWFwKGR5bmFtaWNfY2FzdDxBTkdM
RU5hdGl2ZURpc3BsYXkqPihuYXRpdmVEaXNwbGF5KS0+Z2V0RGV2aWNlQ29udGV4dCgpLCB3aWR0
aCwgaGVpZ2h0LCBiaXRTdW0pOwotfQotCi1lZ2x1OjpOYXRpdmVQaXhtYXAgKk5hdGl2ZVBpeG1h
cEZhY3Rvcnk6OmNyZWF0ZVBpeG1hcChlZ2x1OjpOYXRpdmVEaXNwbGF5KiBuYXRpdmVEaXNwbGF5
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIGNvbnN0Ci17Ci0gICAgY29uc3QgaW50IGRlZmF1bHRE
ZXB0aCA9IDMyOwotICAgIHJldHVybiBuZXcgTmF0aXZlUGl4bWFwKGR5bmFtaWNfY2FzdDxBTkdM
RU5hdGl2ZURpc3BsYXkqPihuYXRpdmVEaXNwbGF5KS0+Z2V0RGV2aWNlQ29udGV4dCgpLCB3aWR0
aCwgaGVpZ2h0LCBkZWZhdWx0RGVwdGgpOwotfQotCi0vLyBOYXRpdmVXaW5kb3dGYWN0b3J5Ci0K
LU5hdGl2ZVdpbmRvd0ZhY3Rvcnk6Ok5hdGl2ZVdpbmRvd0ZhY3RvcnkoRXZlbnRTdGF0ZSAqZXZl
bnRTdGF0ZSkKLSAgICA6IGVnbHU6Ok5hdGl2ZVdpbmRvd0ZhY3RvcnkoIndpbmRvdyIsICJBTkdM
RSBXaW5kb3ciLCBXSU5ET1dfQ0FQQUJJTElUSUVTKSwKLSAgICAgIG1FdmVudHMoZXZlbnRTdGF0
ZSkKLXsKLX0KLQotZWdsdTo6TmF0aXZlV2luZG93ICpOYXRpdmVXaW5kb3dGYWN0b3J5OjpjcmVh
dGVXaW5kb3coZWdsdTo6TmF0aXZlRGlzcGxheSogbmF0aXZlRGlzcGxheSwgY29uc3QgZWdsdTo6
V2luZG93UGFyYW1zJiBwYXJhbXMpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG5ldyBOYXRpdmVXaW5k
b3coZHluYW1pY19jYXN0PEFOR0xFTmF0aXZlRGlzcGxheSo+KG5hdGl2ZURpc3BsYXkpLCBwYXJh
bXMsIG1FdmVudHMpOwotfQotCi0vLyBOYXRpdmVXaW5kb3cKLQotTmF0aXZlV2luZG93OjpOYXRp
dmVXaW5kb3coQU5HTEVOYXRpdmVEaXNwbGF5ICpuYXRpdmVEaXNwbGF5LCBjb25zdCBlZ2x1OjpX
aW5kb3dQYXJhbXMmIHBhcmFtcywgRXZlbnRTdGF0ZSAqZXZlbnRTdGF0ZSkKLSAgICA6IGVnbHU6
Ok5hdGl2ZVdpbmRvdyhXSU5ET1dfQ0FQQUJJTElUSUVTKSwKLSAgICAgIG1XaW5kb3coQ3JlYXRl
T1NXaW5kb3coKSksCi0gICAgICBtRXZlbnRzKGV2ZW50U3RhdGUpCi17Ci0gICAgYm9vbCBpbml0
aWFsaXplZCA9IG1XaW5kb3ctPmluaXRpYWxpemUoImRFUVAgQU5HTEUgVGVzdHMiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy53aWR0aCA9PSBlZ2x1
OjpXaW5kb3dQYXJhbXM6OlNJWkVfRE9OVF9DQVJFID8gREVGQVVMVF9TVVJGQUNFX1dJRFRIIDog
cGFyYW1zLndpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtcy5oZWlnaHQgPT0gZWdsdTo6V2luZG93UGFyYW1zOjpTSVpFX0RPTlRfQ0FSRSA/IERF
RkFVTFRfU1VSRkFDRV9IRUlHSFQgOiBwYXJhbXMuaGVpZ2h0KTsKLSAgICBUQ1VfQ0hFQ0soaW5p
dGlhbGl6ZWQpOwotCi0gICAgaWYgKHBhcmFtcy52aXNpYmlsaXR5ICE9IGVnbHU6OldpbmRvd1Bh
cmFtczo6VklTSUJJTElUWV9ET05UX0NBUkUpCi0gICAgICAgIHNldFZpc2liaWxpdHkocGFyYW1z
LnZpc2liaWxpdHkpOwotfQotCi12b2lkIE5hdGl2ZVdpbmRvdzo6c2V0VmlzaWJpbGl0eShlZ2x1
OjpXaW5kb3dQYXJhbXM6OlZpc2liaWxpdHkgdmlzaWJpbGl0eSkKLXsKLSAgICBzd2l0Y2ggKHZp
c2liaWxpdHkpCi0gICAgewotICAgICAgY2FzZSBlZ2x1OjpXaW5kb3dQYXJhbXM6OlZJU0lCSUxJ
VFlfSElEREVOOgotICAgICAgICBtV2luZG93LT5zZXRWaXNpYmxlKGZhbHNlKTsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICAgIGNhc2UgZWdsdTo6V2luZG93UGFyYW1zOjpWSVNJQklMSVRZX1ZJU0lC
TEU6Ci0gICAgICBjYXNlIGVnbHU6OldpbmRvd1BhcmFtczo6VklTSUJJTElUWV9GVUxMU0NSRUVO
OgotICAgICAgICAvLyBcdG9kbyBbMjAxNC0wMy0xMiBweXJ5XSBJbXBsZW1lbnQgRlVMTFNDUkVF
Tiwgb3IgYXQgbGVhc3QgU1dfTUFYSU1JWkUuCi0gICAgICAgIG1XaW5kb3ctPnNldFZpc2libGUo
dHJ1ZSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICBkZWZhdWx0OgotICAgICAgICBERV9BU1NF
UlQoREVfRkFMU0UpOwotICAgIH0KLX0KLQotTmF0aXZlV2luZG93Ojp+TmF0aXZlV2luZG93KCkK
LXsKLSAgICBkZWxldGUgbVdpbmRvdzsKLX0KLQotZWdsdzo6RUdMTmF0aXZlV2luZG93VHlwZSBO
YXRpdmVXaW5kb3c6OmdldExlZ2FjeU5hdGl2ZSgpCi17Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8ZWdsdzo6RUdMTmF0aXZlV2luZG93VHlwZT4obVdpbmRvdy0+Z2V0TmF0aXZlV2luZG93
KCkpOwotfQotCi1JVmVjMiBOYXRpdmVXaW5kb3c6OmdldFN1cmZhY2VTaXplKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gSVZlYzIobVdpbmRvdy0+Z2V0V2lkdGgoKSwgbVdpbmRvdy0+Z2V0SGVpZ2h0
KCkpOwotfQotCi12b2lkIE5hdGl2ZVdpbmRvdzo6cHJvY2Vzc0V2ZW50cygpCi17Ci0gICAgbVdp
bmRvdy0+bWVzc2FnZUxvb3AoKTsKLQotICAgIC8vIExvb2sgZm9yIGEgcXVpdCBldmVudCB0byBm
b3J3YXJkIHRvIHRoZSBFdmVudFN0YXRlCi0gICAgRXZlbnQgZXZlbnQ7Ci0gICAgd2hpbGUgKG1X
aW5kb3ctPnBvcEV2ZW50KCZldmVudCkpCi0gICAgewotICAgICAgICBpZiAoZXZlbnQuVHlwZSA9
PSBFdmVudDo6RVZFTlRfQ0xPU0VEKQotICAgICAgICB7Ci0gICAgICAgICAgICBtRXZlbnRzLT5z
aWduYWxRdWl0RXZlbnQoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBOYXRpdmVXaW5k
b3c6OnNldFN1cmZhY2VTaXplKElWZWMyIHNpemUpCi17Ci0gICAgbVdpbmRvdy0+cmVzaXplKHNp
emUueCgpLCBzaXplLnkoKSk7Ci19Ci0KLXZvaWQgTmF0aXZlV2luZG93OjpyZWFkU2NyZWVuUGl4
ZWxzKHRjdTo6VGV4dHVyZUxldmVsICpkc3QpIGNvbnN0Ci17Ci0gICAgZHN0LT5zZXRTdG9yYWdl
KFRleHR1cmVGb3JtYXQoVGV4dHVyZUZvcm1hdDo6QkdSQSwgVGV4dHVyZUZvcm1hdDo6VU5PUk1f
SU5UOCksIG1XaW5kb3ctPmdldFdpZHRoKCksIG1XaW5kb3ctPmdldEhlaWdodCgpKTsKLSAgICBi
b29sIHN1Y2Nlc3MgPSBtV2luZG93LT50YWtlU2NyZWVuc2hvdChyZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihkc3QtPmdldEFjY2VzcygpLmdldERhdGFQdHIoKSkpOwotICAgIERFX0FTU0VSVChz
dWNjZXNzKTsKLSAgICBERV9VTlJFRihzdWNjZXNzKTsKLX0KLQotfSAvLyBhbm9ueW1vdXMKLQot
QU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9yeTo6QU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9yeShjb25z
dCBzdGQ6OnN0cmluZyAmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmRlc2NyaXB0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxlZ2x3OjpFR0xBdHRyaWI+ICZwbGF0Zm9ybUF0dHJpYnV0ZXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50U3RhdGUgKmV2
ZW50U3RhdGUpCi0gICAgOiBlZ2x1OjpOYXRpdmVEaXNwbGF5RmFjdG9yeShuYW1lLCBkZXNjcmlw
dGlvbiwgRElTUExBWV9DQVBBQklMSVRJRVMsIEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSwgIkVH
TF9FWFRfcGxhdGZvcm1fYmFzZSIpLAotICAgICAgbVBsYXRmb3JtQXR0cmlidXRlcyhwbGF0Zm9y
bUF0dHJpYnV0ZXMpCi17Ci0gICAgbV9uYXRpdmVXaW5kb3dSZWdpc3RyeS5yZWdpc3RlckZhY3Rv
cnkobmV3IE5hdGl2ZVdpbmRvd0ZhY3RvcnkoZXZlbnRTdGF0ZSkpOwotICAgIG1fbmF0aXZlUGl4
bWFwUmVnaXN0cnkucmVnaXN0ZXJGYWN0b3J5KG5ldyBOYXRpdmVQaXhtYXBGYWN0b3J5KCkpOwot
fQotCi1BTkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5Ojp+QU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9y
eSgpCi17Ci19Ci0KLWVnbHU6Ok5hdGl2ZURpc3BsYXkgKkFOR0xFTmF0aXZlRGlzcGxheUZhY3Rv
cnk6OmNyZWF0ZURpc3BsYXkoY29uc3QgZWdsdzo6RUdMQXR0cmliICphdHRyaWJMaXN0KSBjb25z
dAotewotICAgIERFX1VOUkVGKGF0dHJpYkxpc3QpOwotICAgIHJldHVybiBuZXcgQU5HTEVOYXRp
dmVEaXNwbGF5KG1QbGF0Zm9ybUF0dHJpYnV0ZXMpOwotfQotCi19IC8vIHRjdQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VBTkdM
RU5hdGl2ZURpc3BsYXlGYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZGVxcF9zdXBwb3J0L3RjdUFOR0xFTmF0aXZlRGlzcGxheUZhY3RvcnkuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOGVlY2Y3NTdmMjY4OGZjNzE5YTE2YTI3ZmU1ZTdhMjk0NjJh
NWVkMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L3RjdUFOR0xFTmF0aXZl
RGlzcGxheUZhY3RvcnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBUZXN0ZXIgQ29yZQot
ICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICoKLSAqIENvcHly
aWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNl
ZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsK
LSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0
aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAot
ICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0g
KgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3
cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlz
dHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2Vl
IHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Np
b25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKgotICovCi0KLSNp
Zm5kZWYgVENVX0FOR0xFX1dJTjMyX05BVElWRV9ESVNQTEFZX0ZBQ1RPUllfSF8KLSNkZWZpbmUg
VENVX0FOR0xFX1dJTjMyX05BVElWRV9ESVNQTEFZX0ZBQ1RPUllfSF8KLQotI2luY2x1ZGUgInRj
dURlZnMuaHBwIgotI2luY2x1ZGUgImVnbHVOYXRpdmVEaXNwbGF5LmhwcCIKLSNpbmNsdWRlICJl
Z2x3RGVmcy5ocHAiCi0KLW5hbWVzcGFjZSB0Y3UKLXsKLQotY2xhc3MgRXZlbnRTdGF0ZQotewot
ICBwdWJsaWM6Ci0gICAgRXZlbnRTdGF0ZSgpCi0gICAgICAgIDogbVF1aXQoZmFsc2UpCi0gICAg
ewotICAgIH0KLSAgICBib29sIHF1aXRTaWduYWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1RdWl0OyB9
OwotICAgIHZvaWQgc2lnbmFsUXVpdEV2ZW50KCkgeyBtUXVpdCA9IHRydWU7IH07Ci0KLSAgcHJp
dmF0ZToKLSAgICBib29sIG1RdWl0OwotfTsKLQotY2xhc3MgQU5HTEVOYXRpdmVEaXNwbGF5RmFj
dG9yeSA6IHB1YmxpYyBlZ2x1OjpOYXRpdmVEaXNwbGF5RmFjdG9yeQotewotICBwdWJsaWM6Ci0g
ICAgQU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9yeShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZkZXNjcmlwdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGVnbHc6
OkVHTEF0dHJpYj4gJnBsYXRmb3JtQXR0cmlidXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEV2ZW50U3RhdGUgKmV2ZW50U3RhdGUpOwotICAgIH5BTkdMRU5hdGl2ZURpc3BsYXlG
YWN0b3J5KCkgb3ZlcnJpZGU7Ci0KLSAgICBlZ2x1OjpOYXRpdmVEaXNwbGF5ICpjcmVhdGVEaXNw
bGF5KGNvbnN0IGVnbHc6OkVHTEF0dHJpYiogYXR0cmliTGlzdCkgY29uc3Qgb3ZlcnJpZGU7Ci0K
LSAgcHJpdmF0ZToKLSAgICBzdGQ6OnZlY3RvcjxlZ2x3OjpFR0xBdHRyaWI+IG1QbGF0Zm9ybUF0
dHJpYnV0ZXM7Ci19OwotCi19IC8vIHRjdQotCi0jZW5kaWYgLy8gVENVX0FOR0xFX1dJTjMyX05B
VElWRV9ESVNQTEFZX0ZBQ1RPUllfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvdGN1QU5HTEVQbGF0Zm9ybS5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L3RjdUFOR0xFUGxhdGZvcm0u
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDQxY2RlOThlNGYyZGI3M2E4NDgy
MWRjNzkyMTEzNmZjZjgzYjA2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQv
dGN1QU5HTEVQbGF0Zm9ybS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotLyot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0gKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIFRlc3RlciBD
b3JlCi0gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKgotICog
Q29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExp
Y2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5z
ZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3
aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNl
IGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0y
LjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRv
IGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBp
cyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVT
IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0g
KiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVy
bWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqCi0gKi8K
LQotI2luY2x1ZGUgInRjdUFOR0xFUGxhdGZvcm0uaCIKLQotI2luY2x1ZGUgPEVHTC9lZ2wuaD4K
LSNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+Ci0KLSNpbmNsdWRlICJlZ2x1R0xDb250ZXh0RmFjdG9y
eS5ocHAiCi0jaW5jbHVkZSAic3lzdGVtX3V0aWxzLmgiCi0jaW5jbHVkZSAidGN1QU5HTEVOYXRp
dmVEaXNwbGF5RmFjdG9yeS5oIgotI2luY2x1ZGUgInRjdU51bGxDb250ZXh0RmFjdG9yeS5ocHAi
Ci0KLW5hbWVzcGFjZSB0Y3UKLXsKLQotQU5HTEVQbGF0Zm9ybTo6QU5HTEVQbGF0Zm9ybSgpCi17
Ci0gICAgYW5nbGU6OlNldExvd1ByaW9yaXR5UHJvY2VzcygpOwotCi0jaWYgKERFX09TID09IERF
X09TX1dJTjMyKQotICAgIHN0ZDo6dmVjdG9yPGVnbHc6OkVHTEF0dHJpYj4gZDNkMTFBdHRyaWJz
OwotICAgIGQzZDExQXR0cmlicy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5H
TEUpOwotICAgIGQzZDExQXR0cmlicy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVf
RDNEMTFfQU5HTEUpOwotICAgIGQzZDExQXR0cmlicy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FO
R0xFX0RFVklDRV9UWVBFX0FOR0xFKTsKLSAgICBkM2QxMUF0dHJpYnMucHVzaF9iYWNrKEVHTF9Q
TEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRSk7Ci0gICAgZDNkMTFBdHRy
aWJzLnB1c2hfYmFjayhFR0xfTk9ORSk7Ci0KLSAgICBhdXRvICpkM2QxMUZhY3RvcnkgPSBuZXcg
QU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9yeSgKLSAgICAgICAgImFuZ2xlLWQzZDExIiwgIkFOR0xF
IEQzRDExIERpc3BsYXkiLCBkM2QxMUF0dHJpYnMsICZtRXZlbnRzKTsKLSAgICBtX25hdGl2ZURp
c3BsYXlGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXJGYWN0b3J5KGQzZDExRmFjdG9yeSk7Ci0KLSAg
ICBzdGQ6OnZlY3RvcjxlZ2x3OjpFR0xBdHRyaWI+IGQzZDlBdHRyaWJzOwotICAgIGQzZDlBdHRy
aWJzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSk7Ci0gICAgZDNkOUF0
dHJpYnMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDlfQU5HTEUpOwotICAg
IGQzZDlBdHRyaWJzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5H
TEUpOwotICAgIGQzZDlBdHRyaWJzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNF
X1RZUEVfSEFSRFdBUkVfQU5HTEUpOwotICAgIGQzZDlBdHRyaWJzLnB1c2hfYmFjayhFR0xfTk9O
RSk7Ci0KLSAgICBhdXRvICpkM2Q5RmFjdG9yeSA9IG5ldyBBTkdMRU5hdGl2ZURpc3BsYXlGYWN0
b3J5KAotICAgICAgICAiYW5nbGUtZDNkOSIsICJBTkdMRSBEM0Q5IERpc3BsYXkiLCBkM2Q5QXR0
cmlicywgJm1FdmVudHMpOwotICAgIG1fbmF0aXZlRGlzcGxheUZhY3RvcnlSZWdpc3RyeS5yZWdp
c3RlckZhY3RvcnkoZDNkOUZhY3RvcnkpOwotCi0gICAgc3RkOjp2ZWN0b3I8ZWdsdzo6RUdMQXR0
cmliPiBkM2QxMTkzQXR0cmliczsKLSAgICBkM2QxMTkzQXR0cmlicy5wdXNoX2JhY2soRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUpOwotICAgIGQzZDExOTNBdHRyaWJzLnB1c2hfYmFjayhF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSk7Ci0gICAgZDNkMTE5M0F0dHJpYnMu
cHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9BTkdMRSk7Ci0gICAgZDNk
MTE5M0F0dHJpYnMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJE
V0FSRV9BTkdMRSk7Ci0gICAgZDNkMTE5M0F0dHJpYnMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9B
TkdMRV9NQVhfVkVSU0lPTl9NQUpPUl9BTkdMRSk7Ci0gICAgZDNkMTE5M0F0dHJpYnMucHVzaF9i
YWNrKDkpOwotICAgIGQzZDExOTNBdHRyaWJzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVf
TUFYX1ZFUlNJT05fTUlOT1JfQU5HTEUpOwotICAgIGQzZDExOTNBdHRyaWJzLnB1c2hfYmFjaygz
KTsKLSAgICBkM2QxMTkzQXR0cmlicy5wdXNoX2JhY2soRUdMX05PTkUpOwotCi0gICAgYXV0byAq
ZDNkMTE5M0ZhY3RvcnkgPSBuZXcgQU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9yeSgKLSAgICAgICAg
ImFuZ2xlLWQzZDExLWZsOTMiLCAiQU5HTEUgRDNEMTEgRkw5XzMgRGlzcGxheSIsIGQzZDExOTNB
dHRyaWJzLCAmbUV2ZW50cyk7Ci0gICAgbV9uYXRpdmVEaXNwbGF5RmFjdG9yeVJlZ2lzdHJ5LnJl
Z2lzdGVyRmFjdG9yeShkM2QxMTkzRmFjdG9yeSk7Ci0jZW5kaWYgLy8gKERFX09TID09IERFX09T
X1dJTjMyKQotCi0jaWYgZGVmaW5lZChBTkdMRV9VU0VfT1pPTkUpIHx8IChERV9PUyA9PSBERV9P
U19BTkRST0lEKQotICAgIHN0ZDo6dmVjdG9yPGVnbHc6OkVHTEF0dHJpYj4gZ2xlc0F0dHJpYnM7
Ci0gICAgZ2xlc0F0dHJpYnMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xF
KTsKLSAgICBnbGVzQXR0cmlicy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BF
TkdMRVNfQU5HTEUpOwotICAgIGdsZXNBdHRyaWJzLnB1c2hfYmFjayhFR0xfTk9ORSk7Ci0KLSAg
ICBhdXRvICpnbGVzRmFjdG9yeSA9IG5ldyBBTkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5KAotICAg
ICAgICAiYW5nbGUtZ2xlcyIsICJBTkdMRSBPcGVuR0wgRVMgRGlzcGxheSIsIGdsZXNBdHRyaWJz
LCAmbUV2ZW50cyk7Ci0gICAgbV9uYXRpdmVEaXNwbGF5RmFjdG9yeVJlZ2lzdHJ5LnJlZ2lzdGVy
RmFjdG9yeShnbGVzRmFjdG9yeSk7Ci0jZW5kaWYKLQotICAgIHN0ZDo6dmVjdG9yPGVnbHc6OkVH
TEF0dHJpYj4gZ2xBdHRyaWJzOwotICAgIGdsQXR0cmlicy5wdXNoX2JhY2soRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfQU5HTEUpOwotICAgIGdsQXR0cmlicy5wdXNoX2JhY2soRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKTsKLSAgICBnbEF0dHJpYnMucHVzaF9iYWNrKEVHTF9O
T05FKTsKLQotICAgIGF1dG8gKmdsRmFjdG9yeSA9IG5ldyBBTkdMRU5hdGl2ZURpc3BsYXlGYWN0
b3J5KAotICAgICAgICAiYW5nbGUtZ2wiLCAiQU5HTEUgT3BlbkdMIERpc3BsYXkiLCBnbEF0dHJp
YnMsICZtRXZlbnRzKTsKLSAgICBtX25hdGl2ZURpc3BsYXlGYWN0b3J5UmVnaXN0cnkucmVnaXN0
ZXJGYWN0b3J5KGdsRmFjdG9yeSk7Ci0KLSAgICBtX2NvbnRleHRGYWN0b3J5UmVnaXN0cnkucmVn
aXN0ZXJGYWN0b3J5KG5ldyBlZ2x1OjpHTENvbnRleHRGYWN0b3J5KG1fbmF0aXZlRGlzcGxheUZh
Y3RvcnlSZWdpc3RyeSkpOwotCi0gICAgLy8gQWRkIE51bGwgY29udGV4dCB0eXBlIGZvciB1c2Ug
aW4gZ2VuZXJhdGluZyBjYXNlIGxpc3RzCi0gICAgbV9jb250ZXh0RmFjdG9yeVJlZ2lzdHJ5LnJl
Z2lzdGVyRmFjdG9yeShuZXcgbnVsbDo6TnVsbEdMQ29udGV4dEZhY3RvcnkoKSk7Ci19Ci0KLUFO
R0xFUGxhdGZvcm06On5BTkdMRVBsYXRmb3JtKCkKLXsKLX0KLQotYm9vbCBBTkdMRVBsYXRmb3Jt
Ojpwcm9jZXNzRXZlbnRzKCkKLXsKLSAgICByZXR1cm4gIW1FdmVudHMucXVpdFNpZ25hbGVkKCk7
Ci19Ci0KLX0gLy8gdGN1Ci0KLS8vIENyZWF0ZSBwbGF0Zm9ybQotdGN1OjpQbGF0Zm9ybSAqY3Jl
YXRlUGxhdGZvcm0oKQotewotICAgIHJldHVybiBuZXcgdGN1OjpBTkdMRVBsYXRmb3JtKCk7Ci19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBw
b3J0L3RjdUFOR0xFUGxhdGZvcm0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9kZXFwX3N1cHBvcnQvdGN1QU5HTEVQbGF0Zm9ybS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkNjJjMWM2MGYyNTQyNmFhNzU5OWUyMDM0NWU4ZDFlYWFmMmY4NzcwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvdGN1QU5HTEVQbGF0Zm9ybS5oCisrKyAvZGV2
L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiBkcmF3RWxlbWVu
dHMgUXVhbGl0eSBQcm9ncmFtIFRlc3RlciBDb3JlCi0gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0gKgotICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3Bl
biBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5z
ZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMg
ZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBv
YnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFw
YWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkg
YXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0
cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJB
U0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVp
dGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVj
aWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1
bmRlciB0aGUgTGljZW5zZS4KLSAqCi0gKi8KLQotI2lmbmRlZiBUQ1VfQU5HTEVfV0lOMzJfUExB
VEZPUk1fSF8KLSNkZWZpbmUgVENVX0FOR0xFX1dJTjMyX1BMQVRGT1JNX0hfCi0KLSNpbmNsdWRl
ICJ0Y3VEZWZzLmhwcCIKLSNpbmNsdWRlICJ0Y3VQbGF0Zm9ybS5ocHAiCi0jaW5jbHVkZSAiZ2x1
UGxhdGZvcm0uaHBwIgotCi0jaWZuZGVmIF9FR0xVUExBVEZPUk1fSFBQCi0jICAgaW5jbHVkZSAi
ZWdsdVBsYXRmb3JtLmhwcCIKLSNlbmRpZgotCi0jaW5jbHVkZSAidGN1QU5HTEVOYXRpdmVEaXNw
bGF5RmFjdG9yeS5oIgotCi1uYW1lc3BhY2UgdGN1Ci17Ci0KLWNsYXNzIEFOR0xFUGxhdGZvcm0g
OiBwdWJsaWMgdGN1OjpQbGF0Zm9ybSwKLSAgICAgICAgICAgICAgICAgICAgICBwcml2YXRlIGds
dTo6UGxhdGZvcm0sCi0gICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZSBlZ2x1OjpQbGF0Zm9y
bQotewotICBwdWJsaWM6Ci0gICAgQU5HTEVQbGF0Zm9ybSgpOwotICAgIH5BTkdMRVBsYXRmb3Jt
KCk7Ci0KLSAgICBib29sIHByb2Nlc3NFdmVudHMoKSBvdmVycmlkZTsKLQotICAgIGNvbnN0IGds
dTo6UGxhdGZvcm0gJmdldEdMUGxhdGZvcm0oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBnbHU6OlBsYXRmb3JtJj4oKnRoaXMpOyB9Ci0gICAgY29uc3QgZWdsdTo6
UGxhdGZvcm0gJmdldEVHTFBsYXRmb3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgZWdsdTo6UGxhdGZvcm0mPigqdGhpcyk7IH0KLQotICBwcml2YXRlOgotICAg
IEV2ZW50U3RhdGUgbUV2ZW50czsKLX07Ci0KLX0gLy8gdGN1Ci0KLSNlbmRpZiAvLyBUQ1VfQU5H
TEVfV0lOMzJfUExBVEZPUk1fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvdGN1UmFuZG9tT3JkZXJFeGVjdXRvci5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L3RjdVJhbmRvbU9yZGVy
RXhlY3V0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzQ1YmMzY2VmNmIw
NGExMmI5N2U3YjFhOWQzYTkzYTVkMGU5N2ZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFw
X3N1cHBvcnQvdGN1UmFuZG9tT3JkZXJFeGVjdXRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwy
ODIgKzAsMCBAQAotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQ
cm9ncmFtIFRlc3RlciBDb3JlCi0gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0gKgotICogQ29weXJpZ2h0IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJv
amVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAy
LjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQg
aW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5
IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGlj
ZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBs
YXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRl
ciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lU
SE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNz
IG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFn
ZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGlj
ZW5zZS4KLSAqCi0gKi8vKiEKLSAqIFxmaWxlCi0gKiBcYnJpZWYgRXhlY3V0b3Igd2hpY2ggY2Fu
IHJ1biByYW5kb21seSBhY2Nlc3NlZCB0ZXN0cy4KLSAqLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0jaW5j
bHVkZSAidGN1UmFuZG9tT3JkZXJFeGVjdXRvci5oIgotCi0jaW5jbHVkZSAidGN1Q29tbWFuZExp
bmUuaHBwIgotI2luY2x1ZGUgInRjdVRlc3RMb2cuaHBwIgotI2luY2x1ZGUgImRlU3RyaW5nVXRp
bC5ocHAiCi0jaW5jbHVkZSAiZGVDbG9jay5oIgotCi0jaW5jbHVkZSA8Y3N0ZGlvPgotI2luY2x1
ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxmc3RyZWFtPgotCi11c2luZyBzdGQ6OnZlY3RvcjsK
LXVzaW5nIHN0ZDo6c3RyaW5nOwotCi1uYW1lc3BhY2UgdGN1Ci17Ci0KLVJhbmRvbU9yZGVyRXhl
Y3V0b3I6OlJhbmRvbU9yZGVyRXhlY3V0b3IoVGVzdFBhY2thZ2VSb290ICZyb290LCBUZXN0Q29u
dGV4dCAmdGVzdEN0eCkKLSAgICA6IG1fdGVzdEN0eCh0ZXN0Q3R4KSwgbV9pbmZsYXRlcih0ZXN0
Q3R4KQotewotICAgIG1fbm9kZVN0YWNrLnB1c2hfYmFjayhOb2RlU3RhY2tFbnRyeSgmcm9vdCkp
OwotICAgIHJvb3QuZ2V0Q2hpbGRyZW4obV9ub2RlU3RhY2tbMF0uY2hpbGRyZW4pOwotfQotCi1S
YW5kb21PcmRlckV4ZWN1dG9yOjp+UmFuZG9tT3JkZXJFeGVjdXRvcih2b2lkKQotewotICAgIHBy
dW5lU3RhY2soMSk7Ci19Ci0KLXZvaWQgUmFuZG9tT3JkZXJFeGVjdXRvcjo6cHJ1bmVTdGFjayhz
aXplX3QgbmV3U3RhY2tTaXplKQotewotICAgIC8vIFxub3RlIFJvb3QgaXMgbm90IG1hbmFnZWQg
YnkgdXMKLSAgICBERV9BU1NFUlQoZGU6OmluUmFuZ2UobmV3U3RhY2tTaXplLCBzaXplX3QoMSks
IG1fbm9kZVN0YWNrLnNpemUoKSkpOwotCi0gICAgd2hpbGUgKG1fbm9kZVN0YWNrLnNpemUoKSA+
IG5ld1N0YWNrU2l6ZSkKLSAgICB7Ci0gICAgICAgIE5vZGVTdGFja0VudHJ5ICZjdXJFbnRyeSA9
IG1fbm9kZVN0YWNrLmJhY2soKTsKLSAgICAgICAgY29uc3QgYm9vbCBpc1BrZyA9IGN1ckVudHJ5
Lm5vZGUtPmdldE5vZGVUeXBlKCkgPT0gTk9ERVRZUEVfUEFDS0FHRTsKLQotICAgICAgICBERV9B
U1NFUlQoKG1fbm9kZVN0YWNrLnNpemUoKSA9PSAyKSA9PSBpc1BrZyk7Ci0KLSAgICAgICAgaWYg
KGN1ckVudHJ5Lm5vZGUpICAvLyBKdXN0IGluIGNhc2Ugd2UgYXJlIGluCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gY2xlYW51cCBwYXRoIGFmdGVyIHBhcnRpYWwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBwcnVuZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoY3Vy
RW50cnkubm9kZS0+Z2V0Tm9kZVR5cGUoKSA9PSBOT0RFVFlQRV9HUk9VUCkKLSAgICAgICAgICAg
ICAgICBtX2luZmxhdGVyLmxlYXZlR3JvdXBOb2RlKHN0YXRpY19jYXN0PFRlc3RDYXNlR3JvdXAg
Kj4oY3VyRW50cnkubm9kZSkpOwotICAgICAgICAgICAgZWxzZSBpZiAoY3VyRW50cnkubm9kZS0+
Z2V0Tm9kZVR5cGUoKSA9PSBOT0RFVFlQRV9QQUNLQUdFKQotICAgICAgICAgICAgICAgIG1faW5m
bGF0ZXIubGVhdmVUZXN0UGFja2FnZShzdGF0aWNfY2FzdDxUZXN0UGFja2FnZSAqPihjdXJFbnRy
eS5ub2RlKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgREVfQVNTRVJUKGN1
ckVudHJ5LmNoaWxkcmVuLmVtcHR5KCkpOwotCi0gICAgICAgICAgICBjdXJFbnRyeS5ub2RlID0g
REVfTlVMTDsKLSAgICAgICAgICAgIGN1ckVudHJ5LmNoaWxkcmVuLmNsZWFyKCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoaXNQa2cpCi0gICAgICAgICAgICBtX2Nhc2VFeGVjdXRvci5jbGVh
cigpOwotCi0gICAgICAgIG1fbm9kZVN0YWNrLnBvcF9iYWNrKCk7Ci0gICAgfQotfQotCi1zdGF0
aWMgVGVzdE5vZGUgKmZpbmROb2RlQnlOYW1lKHZlY3RvcjxUZXN0Tm9kZSAqPiAmbm9kZXMsIGNv
bnN0IHN0ZDo6c3RyaW5nICZuYW1lKQotewotICAgIGZvciAodmVjdG9yPFRlc3ROb2RlICo+Ojpj
b25zdF9pdGVyYXRvciBub2RlID0gbm9kZXMuYmVnaW4oKTsgbm9kZSAhPSBub2Rlcy5lbmQoKTsg
Kytub2RlKQotICAgIHsKLSAgICAgICAgaWYgKG5hbWUgPT0gKCpub2RlKS0+Z2V0TmFtZSgpKQot
ICAgICAgICAgICAgcmV0dXJuICpub2RlOwotICAgIH0KLQotICAgIHJldHVybiBERV9OVUxMOwot
fQotCi1UZXN0Q2FzZSAqUmFuZG9tT3JkZXJFeGVjdXRvcjo6c2Vla1RvQ2FzZShjb25zdCBzdHJp
bmcgJnBhdGgpCi17Ci0gICAgY29uc3QgdmVjdG9yPHN0cmluZz4gY29tcG9uZW50cyA9IGRlOjpz
cGxpdFN0cmluZyhwYXRoLCAnLicpOwotICAgIHNpemVfdCBjb21wTmR4OwotCi0gICAgREVfQVNT
RVJUKCFtX25vZGVTdGFjay5lbXB0eSgpICYmIG1fbm9kZVN0YWNrLmZyb250KCkubm9kZS0+Z2V0
Tm9kZVR5cGUoKSA9PSBOT0RFVFlQRV9ST09UKTsKLQotICAgIGZvciAoY29tcE5keCA9IDA7IGNv
bXBOZHggPCBjb21wb25lbnRzLnNpemUoKTsgY29tcE5keCsrKQotICAgIHsKLSAgICAgICAgY29u
c3Qgc2l6ZV90IHN0YWNrUG9zID0gY29tcE5keCArIDE7Ci0KLSAgICAgICAgaWYgKHN0YWNrUG9z
ID49IG1fbm9kZVN0YWNrLnNpemUoKSkKLSAgICAgICAgICAgIGJyZWFrOyAgLy8gU3RhY2sgZW5k
Ci0gICAgICAgIGVsc2UgaWYgKGNvbXBvbmVudHNbY29tcE5keF0gIT0gbV9ub2RlU3RhY2tbc3Rh
Y2tQb3NdLm5vZGUtPmdldE5hbWUoKSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gQ3VycmVu
dCBzdGFjayBkb2Vzbid0IG1hdGNoIGFueSBtb3JlLCBwcnVuZS4KLSAgICAgICAgICAgIHBydW5l
U3RhY2soc3RhY2tQb3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBERV9BU1NFUlQobV9ub2RlU3RhY2suc2l6ZSgpID09IGNvbXBOZHggKyAxKTsKLQotICAg
IGZvciAoOyBjb21wTmR4IDwgY29tcG9uZW50cy5zaXplKCk7IGNvbXBOZHgrKykKLSAgICB7Ci0g
ICAgICAgIGNvbnN0IHNpemVfdCBwYXJlbnRTdGFja1BvcyA9IGNvbXBOZHg7Ci0gICAgICAgIFRl
c3ROb2RlICpjb25zdCBjdXJOb2RlID0KLSAgICAgICAgICAgIGZpbmROb2RlQnlOYW1lKG1fbm9k
ZVN0YWNrW3BhcmVudFN0YWNrUG9zXS5jaGlsZHJlbiwgY29tcG9uZW50c1tjb21wTmR4XSk7Ci0K
LSAgICAgICAgaWYgKCFjdXJOb2RlKQotICAgICAgICAgICAgdGhyb3cgRXhjZXB0aW9uKHN0cmlu
ZygiVGVzdCBoaWVyYXJjaHkgbm9kZSBub3QgZm91bmQ6ICIpICsgcGF0aCk7Ci0KLSAgICAgICAg
bV9ub2RlU3RhY2sucHVzaF9iYWNrKE5vZGVTdGFja0VudHJ5KGN1ck5vZGUpKTsKLQotICAgICAg
ICBpZiAoY3VyTm9kZS0+Z2V0Tm9kZVR5cGUoKSA9PSBOT0RFVFlQRV9QQUNLQUdFKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBUZXN0UGFja2FnZSAqY29uc3QgdGVzdFBhY2thZ2UgPSBzdGF0aWNf
Y2FzdDxUZXN0UGFja2FnZSAqPihjdXJOb2RlKTsKLQotICAgICAgICAgICAgbV9pbmZsYXRlci5l
bnRlclRlc3RQYWNrYWdlKHRlc3RQYWNrYWdlLCBtX25vZGVTdGFjay5iYWNrKCkuY2hpbGRyZW4p
OwotICAgICAgICAgICAgREVfQVNTRVJUKCFtX2Nhc2VFeGVjdXRvcik7Ci0gICAgICAgICAgICBt
X2Nhc2VFeGVjdXRvciA9IGRlOjpNb3ZlUHRyPFRlc3RDYXNlRXhlY3V0b3I+KHRlc3RQYWNrYWdl
LT5jcmVhdGVFeGVjdXRvcigpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjdXJOb2Rl
LT5nZXROb2RlVHlwZSgpID09IE5PREVUWVBFX0dST1VQKQotICAgICAgICAgICAgbV9pbmZsYXRl
ci5lbnRlckdyb3VwTm9kZShzdGF0aWNfY2FzdDxUZXN0Q2FzZUdyb3VwICo+KGN1ck5vZGUpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX25vZGVTdGFjay5iYWNrKCku
Y2hpbGRyZW4pOwotICAgICAgICBlbHNlIGlmIChjb21wTmR4ICsgMSAhPSBjb21wb25lbnRzLnNp
emUoKSkKLSAgICAgICAgICAgIHRocm93IEV4Y2VwdGlvbihzdHJpbmcoIkludmFsaWQgdGVzdCBo
aWVyYXJjaHkgcGF0aDogIikgKyBwYXRoKTsKLSAgICB9Ci0KLSAgICBERV9BU1NFUlQobV9ub2Rl
U3RhY2suc2l6ZSgpID09IGNvbXBvbmVudHMuc2l6ZSgpICsgMSk7Ci0KLSAgICBpZiAoaXNUZXN0
Tm9kZVR5cGVFeGVjdXRhYmxlKG1fbm9kZVN0YWNrLmJhY2soKS5ub2RlLT5nZXROb2RlVHlwZSgp
KSkKLSAgICAgICAgcmV0dXJuIGR5bmFtaWNfY2FzdDxUZXN0Q2FzZSAqPihtX25vZGVTdGFjay5i
YWNrKCkubm9kZSk7Ci0gICAgZWxzZQotICAgICAgICB0aHJvdyBFeGNlcHRpb24oc3RyaW5nKCJO
b3QgYSB0ZXN0IGNhc2U6ICIpICsgcGF0aCk7Ci19Ci0KLXN0YXRpYyBxcFRlc3RDYXNlVHlwZSBu
b2RlVHlwZVRvVGVzdENhc2VUeXBlKFRlc3ROb2RlVHlwZSBub2RlVHlwZSkKLXsKLSAgICBzd2l0
Y2ggKG5vZGVUeXBlKQotICAgIHsKLSAgICAgICAgY2FzZSBOT0RFVFlQRV9TRUxGX1ZBTElEQVRF
OgotICAgICAgICAgICAgcmV0dXJuIFFQX1RFU1RfQ0FTRV9UWVBFX1NFTEZfVkFMSURBVEU7Ci0g
ICAgICAgIGNhc2UgTk9ERVRZUEVfUEVSRk9STUFOQ0U6Ci0gICAgICAgICAgICByZXR1cm4gUVBf
VEVTVF9DQVNFX1RZUEVfUEVSRk9STUFOQ0U7Ci0gICAgICAgIGNhc2UgTk9ERVRZUEVfQ0FQQUJJ
TElUWToKLSAgICAgICAgICAgIHJldHVybiBRUF9URVNUX0NBU0VfVFlQRV9DQVBBQklMSVRZOwot
ICAgICAgICBjYXNlIE5PREVUWVBFX0FDQ1VSQUNZOgotICAgICAgICAgICAgcmV0dXJuIFFQX1RF
U1RfQ0FTRV9UWVBFX0FDQ1VSQUNZOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgREVf
QVNTRVJUKGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiBRUF9URVNUX0NBU0VfVFlQRV9MQVNU
OwotICAgIH0KLX0KLQotVGVzdFN0YXR1cyBSYW5kb21PcmRlckV4ZWN1dG9yOjpleGVjdXRlKGNv
bnN0IHN0ZDo6c3RyaW5nICZjYXNlUGF0aCkKLXsKLSAgICBUZXN0Q2FzZSAqY29uc3QgdGVzdENh
c2UgPSBzZWVrVG9DYXNlKGNhc2VQYXRoKTsKLSAgICBUZXN0TG9nICZsb2cgPSBtX3Rlc3RDdHgu
Z2V0TG9nKCk7Ci0gICAgY29uc3QgcXBUZXN0Q2FzZVR5cGUgY2FzZVR5cGUgPSBub2RlVHlwZVRv
VGVzdENhc2VUeXBlKHRlc3RDYXNlLT5nZXROb2RlVHlwZSgpKTsKLQotICAgIG1fdGVzdEN0eC5z
ZXRUZXJtaW5hdGVBZnRlcihmYWxzZSk7Ci0gICAgbG9nLnN0YXJ0Q2FzZShjYXNlUGF0aC5jX3N0
cigpLCBjYXNlVHlwZSk7Ci0KLSAgICB7Ci0gICAgICAgIGNvbnN0IFRlc3RTdGF0dXMgcmVzdWx0
ID0gZXhlY3V0ZUlubmVyKHRlc3RDYXNlLCBjYXNlUGF0aCk7Ci0gICAgICAgIGxvZy5lbmRDYXNl
KHJlc3VsdC5nZXRDb2RlKCksIHJlc3VsdC5nZXREZXNjcmlwdGlvbigpLmNfc3RyKCkpOwotICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLX0KLQotdGN1OjpUZXN0U3RhdHVzIFJhbmRvbU9y
ZGVyRXhlY3V0b3I6OmV4ZWN1dGVJbm5lcihUZXN0Q2FzZSAqdGVzdENhc2UsIGNvbnN0IHN0ZDo6
c3RyaW5nICZjYXNlUGF0aCkKLXsKLSAgICBUZXN0TG9nICZsb2cgPSBtX3Rlc3RDdHguZ2V0TG9n
KCk7Ci0gICAgY29uc3QgZGVVaW50NjQgdGVzdFN0YXJ0VGltZSA9IGRlR2V0TWljcm9zZWNvbmRz
KCk7Ci0KLSAgICBtX3Rlc3RDdHguc2V0VGVzdFJlc3VsdChRUF9URVNUX1JFU1VMVF9MQVNULCAi
Iik7Ci0KLSAgICAvLyBJbml0aWFsaXplLCB3aWxsIHJldHVybiBpbW1lZGlhdGVseSBpZiBmYWls
cwotICAgIHRyeQotICAgIHsKLSAgICAgICAgbV9jYXNlRXhlY3V0b3ItPmluaXQodGVzdENhc2Us
IGNhc2VQYXRoKTsKLSAgICB9Ci0gICAgY2F0Y2ggKGNvbnN0IHN0ZDo6YmFkX2FsbG9jICYpCi0g
ICAgewotICAgICAgICBtX3Rlc3RDdHguc2V0VGVybWluYXRlQWZ0ZXIodHJ1ZSk7Ci0gICAgICAg
IHJldHVybiBUZXN0U3RhdHVzKFFQX1RFU1RfUkVTVUxUX1JFU09VUkNFX0VSUk9SLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBpbiB0ZXN0IGNh
c2UgaW5pdCIpOwotICAgIH0KLSAgICBjYXRjaCAoY29uc3QgVGVzdEV4Y2VwdGlvbiAmZSkKLSAg
ICB7Ci0gICAgICAgIERFX0FTU0VSVChlLmdldFRlc3RSZXN1bHQoKSAhPSBRUF9URVNUX1JFU1VM
VF9MQVNUKTsKLSAgICAgICAgbV90ZXN0Q3R4LnNldFRlcm1pbmF0ZUFmdGVyKGUuaXNGYXRhbCgp
KTsKLSAgICAgICAgbG9nIDw8IGU7Ci0gICAgICAgIHJldHVybiBUZXN0U3RhdHVzKGUuZ2V0VGVz
dFJlc3VsdCgpLCBlLmdldE1lc3NhZ2UoKSk7Ci0gICAgfQotICAgIGNhdGNoIChjb25zdCBFeGNl
cHRpb24gJmUpCi0gICAgewotICAgICAgICBsb2cgPDwgZTsKLSAgICAgICAgcmV0dXJuIFRlc3RT
dGF0dXMoUVBfVEVTVF9SRVNVTFRfRkFJTCwgZS5nZXRNZXNzYWdlKCkpOwotICAgIH0KLQotICAg
IC8vIEV4ZWN1dGUKLSAgICBmb3IgKDs7KQotICAgIHsKLSAgICAgICAgVGVzdENhc2U6Okl0ZXJh
dGVSZXN1bHQgaXRlcmF0ZVJlc3VsdCA9IFRlc3RDYXNlOjpTVE9QOwotCi0gICAgICAgIG1fdGVz
dEN0eC50b3VjaFdhdGNoZG9nKCk7Ci0KLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIGl0ZXJhdGVSZXN1bHQgPSBtX2Nhc2VFeGVjdXRvci0+aXRlcmF0ZSh0ZXN0Q2FzZSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKGNvbnN0IHN0ZDo6YmFkX2FsbG9jICYpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIG1fdGVzdEN0eC5zZXRUZXN0UmVzdWx0KFFQX1RFU1RfUkVTVUxUX1JF
U09VUkNFX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxl
ZCB0byBhbGxvY2F0ZSBtZW1vcnkgZHVyaW5nIHRlc3QgIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImV4ZWN1dGlvbiIpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChj
b25zdCBUZXN0RXhjZXB0aW9uICZlKQotICAgICAgICB7Ci0gICAgICAgICAgICBsb2cgPDwgZTsK
LSAgICAgICAgICAgIG1fdGVzdEN0eC5zZXRUZXN0UmVzdWx0KGUuZ2V0VGVzdFJlc3VsdCgpLCBl
LmdldE1lc3NhZ2UoKSk7Ci0gICAgICAgICAgICBtX3Rlc3RDdHguc2V0VGVybWluYXRlQWZ0ZXIo
ZS5pc0ZhdGFsKCkpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChjb25zdCBFeGNlcHRpb24g
JmUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGxvZyA8PCBlOwotICAgICAgICAgICAgbV90ZXN0
Q3R4LnNldFRlc3RSZXN1bHQoUVBfVEVTVF9SRVNVTFRfRkFJTCwgZS5nZXRNZXNzYWdlKCkpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGl0ZXJhdGVSZXN1bHQgPT0gVGVzdENhc2U6OlNUT1Ap
Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBERV9BU1NFUlQobV90ZXN0Q3R4Lmdl
dFRlc3RSZXN1bHQoKSAhPSBRUF9URVNUX1JFU1VMVF9MQVNUKTsKLQotICAgIGlmIChtX3Rlc3RD
dHguZ2V0VGVzdFJlc3VsdCgpID09IFFQX1RFU1RfUkVTVUxUX1JFU09VUkNFX0VSUk9SKQotICAg
ICAgICBtX3Rlc3RDdHguc2V0VGVybWluYXRlQWZ0ZXIodHJ1ZSk7Ci0KLSAgICAvLyBEZS1pbml0
aWFsaXplCi0gICAgdHJ5Ci0gICAgewotICAgICAgICBtX2Nhc2VFeGVjdXRvci0+ZGVpbml0KHRl
c3RDYXNlKTsKLSAgICB9Ci0gICAgY2F0Y2ggKGNvbnN0IHRjdTo6RXhjZXB0aW9uICZlKQotICAg
IHsKLSAgICAgICAgbG9nIDw8IGUgPDwgVGVzdExvZzo6TWVzc2FnZSA8PCAiRXJyb3IgaW4gdGVz
dCBjYXNlIGRlaW5pdCwgdGVzdCBwcm9ncmFtICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAid2lsbCB0ZXJtaW5hdGUuIgotICAgICAgICAgICAgPDwgVGVzdExvZzo6
RW5kTWVzc2FnZTsKLSAgICAgICAgbV90ZXN0Q3R4LnNldFRlcm1pbmF0ZUFmdGVyKHRydWUpOwot
ICAgIH0KLQotICAgIGlmIChtX3Rlc3RDdHguZ2V0V2F0Y2hEb2coKSkKLSAgICAgICAgcXBXYXRj
aERvZ19yZXNldChtX3Rlc3RDdHguZ2V0V2F0Y2hEb2coKSk7Ci0KLSAgICB7Ci0gICAgICAgIGNv
bnN0IFRlc3RTdGF0dXMgcmVzdWx0ID0KLSAgICAgICAgICAgIFRlc3RTdGF0dXMobV90ZXN0Q3R4
LmdldFRlc3RSZXN1bHQoKSwgbV90ZXN0Q3R4LmdldFRlc3RSZXN1bHREZXNjKCkpOwotICAgICAg
ICBtX3Rlc3RDdHguc2V0VGVzdFJlc3VsdChRUF9URVNUX1JFU1VMVF9MQVNULCAiIik7Ci0gICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotfQotCi19ICAvLyB0Y3UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvdGN1UmFuZG9tT3Jk
ZXJFeGVjdXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3Vw
cG9ydC90Y3VSYW5kb21PcmRlckV4ZWN1dG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGY4YzcwODUyOWMwODIwMDc0N2I3NTczNTA4MGZjODc5YzAzMzY0YjYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VSYW5kb21PcmRlckV4ZWN1dG9yLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIGRyYXdFbGVt
ZW50cyBRdWFsaXR5IFByb2dyYW0gVGVzdGVyIENvcmUKLSAqIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCi0gKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBP
cGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNl
bnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhp
cyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5
IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cu
YXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBi
eSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRp
c3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIg
QkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwg
ZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNw
ZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25z
IHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqLyAvKiEKLSAqIFxmaWxlCi0gKiBcYnJpZWYgR2Vu
ZXJpYyBtYWluKCkuCi0gKi8gLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLSNpZm5kZWYgVENVX1JBTkRPTV9P
UkRFUl9FWEVDVVRPUl9IXwotI2RlZmluZSBUQ1VfUkFORE9NX09SREVSX0VYRUNVVE9SX0hfCi0K
LSNpbmNsdWRlICJ0Y3VUZXN0SGllcmFyY2h5SXRlcmF0b3IuaHBwIgotI2luY2x1ZGUgImRlVW5p
cXVlUHRyLmhwcCIKLQotbmFtZXNwYWNlIHRjdQotewotCi1jbGFzcyBSYW5kb21PcmRlckV4ZWN1
dG9yCi17Ci0gICBwdWJsaWM6Ci0gICAgUmFuZG9tT3JkZXJFeGVjdXRvcihUZXN0UGFja2FnZVJv
b3QgJnJvb3QsIFRlc3RDb250ZXh0ICZ0ZXN0Q3R4KTsKLSAgICB+UmFuZG9tT3JkZXJFeGVjdXRv
cih2b2lkKTsKLQotICAgIFRlc3RTdGF0dXMgZXhlY3V0ZShjb25zdCBzdGQ6OnN0cmluZyAmcGF0
aCk7Ci0KLSAgIHByaXZhdGU6Ci0gICAgdm9pZCBwcnVuZVN0YWNrKHNpemVfdCBuZXdTdGFja1Np
emUpOwotICAgIFRlc3RDYXNlICpzZWVrVG9DYXNlKGNvbnN0IHN0ZDo6c3RyaW5nICZwYXRoKTsK
LQotICAgIFRlc3RTdGF0dXMgZXhlY3V0ZUlubmVyKFRlc3RDYXNlICp0ZXN0Q2FzZSwgY29uc3Qg
c3RkOjpzdHJpbmcgJmNhc2VQYXRoKTsKLQotICAgIHN0cnVjdCBOb2RlU3RhY2tFbnRyeQotICAg
IHsKLSAgICAgICAgVGVzdE5vZGUgKm5vZGU7Ci0gICAgICAgIHN0ZDo6dmVjdG9yPFRlc3ROb2Rl
ICo+IGNoaWxkcmVuOwotCi0gICAgICAgIE5vZGVTdGFja0VudHJ5KHZvaWQpIDogbm9kZShERV9O
VUxMKSB7fQotICAgICAgICBOb2RlU3RhY2tFbnRyeShUZXN0Tm9kZSAqbm9kZV8pIDogbm9kZShu
b2RlXykge30KLSAgICB9OwotCi0gICAgVGVzdENvbnRleHQgJm1fdGVzdEN0eDsKLQotICAgIERl
ZmF1bHRIaWVyYXJjaHlJbmZsYXRlciBtX2luZmxhdGVyOwotICAgIHN0ZDo6dmVjdG9yPE5vZGVT
dGFja0VudHJ5PiBtX25vZGVTdGFjazsKLQotICAgIGRlOjpNb3ZlUHRyPFRlc3RDYXNlRXhlY3V0
b3I+IG1fY2FzZUV4ZWN1dG9yOwotfTsKLQotfSAgLy8gdGN1Ci0KLSNlbmRpZiAgLy8gVENVX1JB
TkRPTV9PUkRFUl9FWEVDVVRPUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xDb250ZXh0Q29t
cGF0aWJpbGl0eVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2M1OGFm
YmE5NzU1Yzc2MmY3N2I2OGQ2NTJiNTlkOTVlMzljNzk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9lZ2xfdGVzdHMvRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0LmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDI4NyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0v
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gRUdMQ29udGV4dENvbXBhdGli
aWxpdHlUZXN0LmNwcDoKLS8vICAgVGhpcyB0ZXN0IHdpbGwgdHJ5IHRvIHVzZSBhbGwgY29tYmlu
YXRpb25zIG9mIGNvbnRleHQgY29uZmlncyBhbmQKLS8vICAgc3VyZmFjZSBjb25maWdzLiBJZiB0
aGUgY29uZmlncyBhcmUgY29tcGF0aWJsZSwgaXQgY2hlY2tzIHRoYXQgc2ltcGxlCi0vLyAgIHJl
bmRlcmluZyB3b3Jrcywgb3RoZXJ3aXNlIGl0IGNoZWNrcyBhbiBlcnJvciBpcyBnZW5lcmF0ZWQg
b25lIE1ha2VDdXJyZW50LgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLSNpbmNsdWRlIDx2
ZWN0b3I+Ci0jaW5jbHVkZSA8RUdML2VnbC5oPgotI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KLQot
I2luY2x1ZGUgIk9TV2luZG93LmgiCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIK
LSNpbmNsdWRlICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5oIgotCi11c2luZyBuYW1l
c3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1jb25zdCBFR0xpbnQgY29udGV4dEF0dHJp
YnNbXSA9Ci17Ci0gICAgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsCi0gICAgRUdMX05P
TkUKLX07Ci0KLX0KLQotY2xhc3MgRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0IDogcHVibGlj
IEFOR0xFVGVzdAotewotICBwdWJsaWM6Ci0gICAgRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0
KCkKLSAgICAgIDogbURpc3BsYXkoMCkKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgp
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBQRk5FR0xHRVRQTEFURk9STURJU1BMQVlFWFRQUk9D
IGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMR0VUUExB
VEZPUk1ESVNQTEFZRVhUUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbEdldFBsYXRmb3JtRGlz
cGxheUVYVCIpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhU
ICE9IG51bGxwdHIpOwotCi0gICAgICAgIEVHTGludCBkaXNwYXR0cnNbXSA9Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFLCBHZXRQYXJhbSgpLmdl
dFJlbmRlcmVyKCksCi0gICAgICAgICAgICBFR0xfTk9ORQotICAgICAgICB9OwotICAgICAgICBt
RGlzcGxheSA9IGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCgKLSAgICAgICAgICAgIEVHTF9QTEFU
Rk9STV9BTkdMRV9BTkdMRSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KEVHTF9ERUZBVUxUX0RJ
U1BMQVkpLCBkaXNwYXR0cnMpOwotICAgICAgICBBU1NFUlRfVFJVRShtRGlzcGxheSAhPSBFR0xf
Tk9fRElTUExBWSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUoZWdsSW5pdGlhbGl6ZShtRGlzcGxh
eSwgbnVsbHB0ciwgbnVsbHB0cikgPT0gRUdMX1RSVUUpOwotCi0gICAgICAgIGludCBuQ29uZmln
cyA9IDA7Ci0gICAgICAgIEFTU0VSVF9UUlVFKGVnbEdldENvbmZpZ3MobURpc3BsYXksIG51bGxw
dHIsIDAsICZuQ29uZmlncykgPT0gRUdMX1RSVUUpOwotICAgICAgICBBU1NFUlRfVFJVRShuQ29u
ZmlncyAhPSAwKTsKLQotICAgICAgICBpbnQgblJldHVybmVkQ29uZmlncyA9IDA7Ci0gICAgICAg
IG1Db25maWdzLnJlc2l6ZShuQ29uZmlncyk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKGVnbEdldENv
bmZpZ3MobURpc3BsYXksIG1Db25maWdzLmRhdGEoKSwgbkNvbmZpZ3MsICZuUmV0dXJuZWRDb25m
aWdzKSA9PSBFR0xfVFJVRSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKG5Db25maWdzID09IG5SZXR1
cm5lZENvbmZpZ3MpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xf
Tk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwotICAgICAgICBlZ2xUZXJtaW5hdGUobURpc3Bs
YXkpOwotICAgIH07Ci0KLSAgcHJvdGVjdGVkOgotICAgIGJvb2wgYXJlQ29uZmlnc0NvbXBhdGli
bGUoRUdMQ29uZmlnIGMxLCBFR0xDb25maWcgYzIsIEVHTGludCBzdXJmYWNlQml0KQotICAgIHsK
LSAgICAgICAgRUdMaW50IGNvbG9yQnVmZmVyVHlwZTEsIGNvbG9yQnVmZmVyVHlwZTI7Ci0gICAg
ICAgIEVHTGludCByZWQxLCByZWQyLCBncmVlbjEsIGdyZWVuMiwgYmx1ZTEsIGJsdWUyLCBhbHBo
YTEsIGFscGhhMjsKLSAgICAgICAgRUdMaW50IGRlcHRoMSwgZGVwdGgyLCBzdGVuY2lsMSwgc3Rl
bmNpbDI7Ci0gICAgICAgIEVHTGludCBzdXJmYWNlVHlwZTEsIHN1cmZhY2VUeXBlMjsKLQotICAg
ICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIGMxLCBFR0xfQ09MT1JfQlVGRkVSX1RZ
UEUsICZjb2xvckJ1ZmZlclR5cGUxKTsKLSAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNw
bGF5LCBjMiwgRUdMX0NPTE9SX0JVRkZFUl9UWVBFLCAmY29sb3JCdWZmZXJUeXBlMik7Ci0KLSAg
ICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjMSwgRUdMX1JFRF9TSVpFLCAmcmVk
MSk7Ci0gICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgYzIsIEVHTF9SRURfU0la
RSwgJnJlZDIpOwotICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIGMxLCBFR0xf
R1JFRU5fU0laRSwgJmdyZWVuMSk7Ci0gICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxh
eSwgYzIsIEVHTF9HUkVFTl9TSVpFLCAmZ3JlZW4yKTsKLSAgICAgICAgZWdsR2V0Q29uZmlnQXR0
cmliKG1EaXNwbGF5LCBjMSwgRUdMX0JMVUVfU0laRSwgJmJsdWUxKTsKLSAgICAgICAgZWdsR2V0
Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjMiwgRUdMX0JMVUVfU0laRSwgJmJsdWUyKTsKLSAgICAg
ICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjMSwgRUdMX0FMUEhBX1NJWkUsICZhbHBo
YTEpOwotICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIGMyLCBFR0xfQUxQSEFf
U0laRSwgJmFscGhhMik7Ci0KLSAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBj
MSwgRUdMX0RFUFRIX1NJWkUsICZkZXB0aDEpOwotICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIo
bURpc3BsYXksIGMyLCBFR0xfREVQVEhfU0laRSwgJmRlcHRoMik7Ci0gICAgICAgIGVnbEdldENv
bmZpZ0F0dHJpYihtRGlzcGxheSwgYzEsIEVHTF9TVEVOQ0lMX1NJWkUsICZzdGVuY2lsMSk7Ci0g
ICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgYzIsIEVHTF9TVEVOQ0lMX1NJWkUs
ICZzdGVuY2lsMik7Ci0KLSAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjMSwg
RUdMX1NVUkZBQ0VfVFlQRSwgJnN1cmZhY2VUeXBlMSk7Ci0gICAgICAgIGVnbEdldENvbmZpZ0F0
dHJpYihtRGlzcGxheSwgYzIsIEVHTF9TVVJGQUNFX1RZUEUsICZzdXJmYWNlVHlwZTIpOwotCi0g
ICAgICAgIHJldHVybiBjb2xvckJ1ZmZlclR5cGUxID09IGNvbG9yQnVmZmVyVHlwZTIgJiYKLSAg
ICAgICAgICAgICAgIHJlZDEgPT0gcmVkMiAmJiBncmVlbjEgPT0gZ3JlZW4yICYmIGJsdWUxID09
IGJsdWUyICYmIGFscGhhMSA9PSBhbHBoYTIgJiYKLSAgICAgICAgICAgICAgIGRlcHRoMSA9PSBk
ZXB0aDIgJiYgc3RlbmNpbDEgPT0gc3RlbmNpbDIgJiYKLSAgICAgICAgICAgICAgIChzdXJmYWNl
VHlwZTEgJiBzdXJmYWNlQml0KSAhPSAwICYmCi0gICAgICAgICAgICAgICAoc3VyZmFjZVR5cGUy
ICYgc3VyZmFjZUJpdCkgIT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHRlc3RXaW5kb3dDb21wYXRp
YmlsaXR5KEVHTENvbmZpZyB3aW5kb3dDb25maWcsIEVHTENvbmZpZyBjb250ZXh0Q29uZmlnLCBi
b29sIGNvbXBhdGlibGUpIGNvbnN0Ci0gICAgewotICAgICAgICBPU1dpbmRvdyAqb3NXaW5kb3cg
PSBDcmVhdGVPU1dpbmRvdygpOwotICAgICAgICBBU1NFUlRfVFJVRShvc1dpbmRvdyAhPSBudWxs
cHRyKTsKLSAgICAgICAgb3NXaW5kb3ctPmluaXRpYWxpemUoIkVHTENvbnRleHRDb21wYXRpYmls
aXR5VGVzdCIsIDUwMCwgNTAwKTsKLSAgICAgICAgb3NXaW5kb3ctPnNldFZpc2libGUodHJ1ZSk7
Ci0KLSAgICAgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChtRGlzcGxh
eSwgY29udGV4dENvbmZpZywgRUdMX05PX0NPTlRFWFQsIGNvbnRleHRBdHRyaWJzKTsKLSAgICAg
ICAgQVNTRVJUX1RSVUUoY29udGV4dCAhPSBFR0xfTk9fQ09OVEVYVCk7Ci0KLSAgICAgICAgRUdM
U3VyZmFjZSB3aW5kb3cgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKG1EaXNwbGF5LCB3aW5kb3dD
b25maWcsIG9zV2luZG93LT5nZXROYXRpdmVXaW5kb3coKSwgbnVsbHB0cik7Ci0gICAgICAgIEFT
U0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgICAgIGlmIChjb21wYXRpYmxlKQotICAgICAgICB7
Ci0gICAgICAgICAgICB0ZXN0Q2xlYXJTdXJmYWNlKHdpbmRvdywgY29udGV4dCk7Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0TWFrZUN1cnJlbnRG
YWlscyh3aW5kb3csIGNvbnRleHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgZWdsRGVzdHJveVN1
cmZhY2UobURpc3BsYXksIHdpbmRvdyk7Ci0gICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwot
Ci0gICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KG1EaXNwbGF5LCBjb250ZXh0KTsKLSAgICAgICAg
QVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICAgICAgU2FmZURlbGV0ZShvc1dpbmRvdyk7Ci0g
ICAgfQotCi0gICAgdm9pZCB0ZXN0UGJ1ZmZlckNvbXBhdGliaWxpdHkoRUdMQ29uZmlnIHBidWZm
ZXJDb25maWcsIEVHTENvbmZpZyBjb250ZXh0Q29uZmlnLCBib29sIGNvbXBhdGlibGUpIGNvbnN0
Ci0gICAgewotICAgICAgICBFR0xDb250ZXh0IGNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1E
aXNwbGF5LCBjb250ZXh0Q29uZmlnLCBFR0xfTk9fQ09OVEVYVCwgY29udGV4dEF0dHJpYnMpOwot
ICAgICAgICBBU1NFUlRfVFJVRShjb250ZXh0ICE9IEVHTF9OT19DT05URVhUKTsKLQotICAgICAg
ICBjb25zdCBFR0xpbnQgcEJ1ZmZlckF0dHJpYnNbXSA9Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IEVHTF9XSURUSCwgNTAwLAotICAgICAgICAgICAgRUdMX0hFSUdIVCwgNTAwLAotICAgICAgICAg
ICAgRUdMX05PTkUsCi0gICAgICAgIH07Ci0gICAgICAgIEVHTFN1cmZhY2UgcGJ1ZmZlciA9IGVn
bENyZWF0ZVBidWZmZXJTdXJmYWNlKG1EaXNwbGF5LCBwYnVmZmVyQ29uZmlnLCBwQnVmZmVyQXR0
cmlicyk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKHBidWZmZXIgIT0gRUdMX05PX1NVUkZBQ0UpOwot
Ci0gICAgICAgIGlmIChjb21wYXRpYmxlKQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXN0Q2xl
YXJTdXJmYWNlKHBidWZmZXIsIGNvbnRleHQpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgewotICAgICAgICAgICAgdGVzdE1ha2VDdXJyZW50RmFpbHMocGJ1ZmZlciwgY29udGV4
dCk7Ci0gICAgICAgIH0KLQotICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShtRGlzcGxheSwgcGJ1
ZmZlcik7Ci0gICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgICAgIGVnbERlc3Ry
b3lDb250ZXh0KG1EaXNwbGF5LCBjb250ZXh0KTsKLSAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNT
KCk7Ci0gICAgfQotCi0gICAgc3RkOjp2ZWN0b3I8RUdMQ29uZmlnPiBtQ29uZmlnczsKLSAgICBF
R0xEaXNwbGF5IG1EaXNwbGF5OwotCi0gIHByaXZhdGU6Ci0gICAgdm9pZCB0ZXN0Q2xlYXJTdXJm
YWNlKEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMQ29udGV4dCBjb250ZXh0KSBjb25zdAotICAgIHsK
LSAgICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIHN1cmZhY2UsIHN1cmZhY2UsIGNvbnRl
eHQpOwotICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgICAgICBnbFZpZXdwb3J0
KDAsIDAsIDUwMCwgNTAwKTsKLSAgICAgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDEuMGYs
IDEuMGYpOwotICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgICAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDI1MCwgMjUwLCAw
LCAwLCAyNTUsIDI1NSk7Ci0KLSAgICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIEVHTF9O
T19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwotICAgICAgICBBU1NF
UlRfRUdMX1NVQ0NFU1MoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHRlc3RNYWtlQ3VycmVudEZhaWxz
KEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMQ29udGV4dCBjb250ZXh0KSBjb25zdAotICAgIHsKLSAg
ICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIHN1cmZhY2UsIHN1cmZhY2UsIGNvbnRleHQp
OwotICAgICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfTUFUQ0gpOwotICAgIH0KLX07Ci0K
LS8vIFRoZSB0ZXN0IGlzIHNwbGl0IGluIHNldmVyYWwgc3VidGVzdCBzbyB0aGF0IHNpbXBsZSBj
YXNlcwotLy8gYXJlIHRlc3RlZCBzZXBhcmF0ZWx5LiBBbHNvIGVhY2ggc3VyZmFjZSB0eXBlcyBh
cmUgbm90IHRlc3RlZAotLy8gdG9nZXRoZXIuCi0KLS8vIEJhc2ljIHRlc3QgY2hlY2tpbmcgY29u
dGV4dHMgYW5kIHdpbmRvd3MgY3JlYXRlZCB3aXRoIHRoZQotLy8gc2FtZSBjb25maWcgY2FuIHJl
bmRlci4KLVRFU1RfUChFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QsIFdpbmRvd1NhbWVDb25m
aWcpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtQ29uZmlncy5zaXplKCk7IGkrKykK
LSAgICB7Ci0gICAgICAgIEVHTENvbmZpZyBjb25maWcgPSBtQ29uZmlnc1tpXTsKLQotICAgICAg
ICBFR0xpbnQgc3VyZmFjZVR5cGU7Ci0gICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxh
eSwgY29uZmlnLCBFR0xfU1VSRkFDRV9UWVBFLCAmc3VyZmFjZVR5cGUpOwotICAgICAgICBBU1NF
UlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgICAgICBpZiAoKHN1cmZhY2VUeXBlICYgRUdMX1dJTkRP
V19CSVQpICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RXaW5kb3dDb21wYXRpYmls
aXR5KGNvbmZpZywgY29uZmlnLCB0cnVlKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotLy8gQmFz
aWMgdGVzdCBjaGVja2luZyBjb250ZXh0cyBhbmQgcGJ1ZmZlcnMgY3JlYXRlZCB3aXRoIHRoZQot
Ly8gc2FtZSBjb25maWcgY2FuIHJlbmRlci4KLVRFU1RfUChFR0xDb250ZXh0Q29tcGF0aWJpbGl0
eVRlc3QsIFBidWZmZXJTYW1lQ29uZmlnKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bUNvbmZpZ3Muc2l6ZSgpOyBpKyspCi0gICAgewotICAgICAgICBFR0xDb25maWcgY29uZmlnID0g
bUNvbmZpZ3NbaV07Ci0KLSAgICAgICAgRUdMaW50IHN1cmZhY2VUeXBlOwotICAgICAgICBlZ2xH
ZXRDb25maWdBdHRyaWIobURpc3BsYXksIGNvbmZpZywgRUdMX1NVUkZBQ0VfVFlQRSwgJnN1cmZh
Y2VUeXBlKTsKLSAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICAgICAgaWYgKChz
dXJmYWNlVHlwZSAmIEVHTF9QQlVGRkVSX0JJVCkgIT0gMCkKLSAgICAgICAgewotICAgICAgICAg
ICAgdGVzdFBidWZmZXJDb21wYXRpYmlsaXR5KGNvbmZpZywgY29uZmlnLCB0cnVlKTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQotLy8gQ2hlY2sgdGhhdCBhIGNvbnRleHQgcmVuZGVyaW5nIHRvIGEg
d2luZG93IHdpdGggYSBkaWZmZXJlbnQKLS8vIGNvbmZpZyB3b3JrcyBvciBlcnJvcnMgYWNjb3Jk
aW5nIHRvIHRoZSBFR0wgY29tcGF0aWJpbGl0eSBydWxlcwotVEVTVF9QKEVHTENvbnRleHRDb21w
YXRpYmlsaXR5VGVzdCwgV2luZG93RGlmZmVyZW50Q29uZmlnKQotewotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbUNvbmZpZ3Muc2l6ZSgpOyBpKyspCi0gICAgewotICAgICAgICBFR0xDb25m
aWcgY29uZmlnMSA9IG1Db25maWdzW2ldOwotICAgICAgICBFR0xpbnQgc3VyZmFjZVR5cGU7Ci0g
ICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgY29uZmlnMSwgRUdMX1NVUkZBQ0Vf
VFlQRSwgJnN1cmZhY2VUeXBlKTsKLSAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAg
ICAgICAgaWYgKChzdXJmYWNlVHlwZSAmIEVHTF9XSU5ET1dfQklUKSA9PSAwKQotICAgICAgICB7
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwgbUNvbmZpZ3Muc2l6ZSgpOyBqKyspCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEVHTENvbmZpZyBjb25maWcyID0gbUNvbmZpZ3Nbal07Ci0gICAgICAgICAgICB0ZXN0V2luZG93
Q29tcGF0aWJpbGl0eShjb25maWcxLCBjb25maWcyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXJlQ29uZmlnc0NvbXBhdGlibGUoY29uZmlnMSwgY29uZmlnMiwgRUdMX1dJ
TkRPV19CSVQpKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotLy8gQ2hlY2sgdGhhdCBhIGNvbnRl
eHQgcmVuZGVyaW5nIHRvIGEgcGJ1ZmZlciB3aXRoIGEgZGlmZmVyZW50Ci0vLyBjb25maWcgd29y
a3Mgb3IgZXJyb3JzIGFjY29yZGluZyB0byB0aGUgRUdMIGNvbXBhdGliaWxpdHkgcnVsZXMKLVRF
U1RfUChFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QsIFBidWZmZXJEaWZmZXJlbnRDb25maWcp
Ci17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtQ29uZmlncy5zaXplKCk7IGkrKykKLSAg
ICB7Ci0gICAgICAgIEVHTENvbmZpZyBjb25maWcxID0gbUNvbmZpZ3NbaV07Ci0gICAgICAgIEVH
TGludCBzdXJmYWNlVHlwZTsKLSAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBj
b25maWcxLCBFR0xfU1VSRkFDRV9UWVBFLCAmc3VyZmFjZVR5cGUpOwotICAgICAgICBBU1NFUlRf
RUdMX1NVQ0NFU1MoKTsKLQotICAgICAgICBpZiAoKHN1cmZhY2VUeXBlICYgRUdMX1BCVUZGRVJf
QklUKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbUNvbmZpZ3Muc2l6ZSgpOyBqKyspCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEVHTENvbmZpZyBjb25maWcyID0gbUNvbmZpZ3Nbal07Ci0g
ICAgICAgICAgICB0ZXN0UGJ1ZmZlckNvbXBhdGliaWxpdHkoY29uZmlnMSwgY29uZmlnMiwgYXJl
Q29uZmlnc0NvbXBhdGlibGUoY29uZmlnMSwgY29uZmlnMiwgRUdMX1BCVUZGRVJfQklUKSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRUdMQ29udGV4dENv
bXBhdGliaWxpdHlUZXN0LCBFUzJfRDNEOSgpLCBFUzJfRDNEMTEoKSwgRVMyX09QRU5HTCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMv
RUdMQ29udGV4dFNoYXJpbmdUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9lZ2xfdGVzdHMvRUdMQ29udGV4dFNoYXJpbmdUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZmM2NmI3OTA5NjEyMWU5YjQwMzAzYzc3ZWYxZDIzM2U2ODRlNDYwYi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTENvbnRleHRTaGFyaW5nVGVzdC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAy
MDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIEVHTENv
bnRleHRTaGFyaW5nVGVzdC5jcHA6Ci0vLyAgIFRlc3RzIHJlbGF0aW5nIHRvIHNoYXJlZCBDb250
ZXh0cy4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLSNpbmNsdWRlIDxFR0wvZWdsLmg+
Ci0jaW5jbHVkZSA8RUdML2VnbGV4dC5oPgotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRl
c3QuaCIKLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5oIgotCi11c2lu
ZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1FR0xCb29sZWFuIFNhZmVEZXN0
cm95Q29udGV4dChFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbnRleHQgJmNvbnRleHQpCi17Ci0g
ICAgRUdMQm9vbGVhbiByZXN1bHQgPSBFR0xfVFJVRTsKLSAgICBpZiAoY29udGV4dCAhPSBFR0xf
Tk9fQ09OVEVYVCkKLSAgICB7Ci0gICAgICAgIHJlc3VsdCAgPSBlZ2xEZXN0cm95Q29udGV4dChk
aXNwbGF5LCBjb250ZXh0KTsKLSAgICAgICAgY29udGV4dCA9IEVHTF9OT19DT05URVhUOwotICAg
IH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1jbGFzcyBFR0xDb250ZXh0U2hhcmluZ1Rlc3Qg
OiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICBFR0xDb250ZXh0U2hhcmluZ1Rl
c3QoKSA6IG1Db250ZXh0c3tFR0xfTk9fQ09OVEVYVCwgRUdMX05PX0NPTlRFWFR9LCBtVGV4dHVy
ZSgwKSB7fQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBn
bERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZSk7Ci0KLSAgICAgICAgRUdMRGlzcGxheSBkaXNw
bGF5ID0gZ2V0RUdMV2luZG93KCktPmdldERpc3BsYXkoKTsKLQotICAgICAgICBpZiAoZGlzcGxh
eSAhPSBFR0xfTk9fRElTUExBWSkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yIChhdXRvICZj
b250ZXh0IDogbUNvbnRleHRzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFNhZmVE
ZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICBFR0xDb250
ZXh0IG1Db250ZXh0c1syXTsKLSAgICBHTHVpbnQgbVRleHR1cmU7Ci19OwotCi0vLyBUZXN0cyB0
aGF0IGNyZWF0aW5nIHJlc291cmNlcyB3b3JrcyBhZnRlciBmcmVlaW5nIHRoZSBzaGFyZSBjb250
ZXh0LgotVEVTVF9QKEVHTENvbnRleHRTaGFyaW5nVGVzdCwgQmluZFRleHR1cmVBZnRlclNoYXJl
Q29udGV4dEZyZWUpCi17Ci0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gZ2V0RUdMV2luZG93KCkt
PmdldERpc3BsYXkoKTsKLSAgICBFR0xDb25maWcgY29uZmlnICAgPSBnZXRFR0xXaW5kb3coKS0+
Z2V0Q29uZmlnKCk7Ci0gICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gZ2V0RUdMV2luZG93KCktPmdl
dFN1cmZhY2UoKTsKLQotICAgIGNvbnN0IEVHTGludCBjb250ZXh0QXR0cmlic1tdID0ge0VHTF9D
T05URVhUX0NMSUVOVF9WRVJTSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdldEVHTFdpbmRvdygpLT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSwgRUdMX05PTkV9Owot
Ci0gICAgbUNvbnRleHRzWzBdID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIG51
bGxwdHIsIGNvbnRleHRBdHRyaWJzKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLSAgICBB
U1NFUlRfVFJVRShtQ29udGV4dHNbMF0gIT0gRUdMX05PX0NPTlRFWFQpOwotICAgIG1Db250ZXh0
c1sxXSA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBtQ29udGV4dHNbMV0sIGNv
bnRleHRBdHRyaWJzKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLSAgICBBU1NFUlRfVFJV
RShtQ29udGV4dHNbMV0gIT0gRUdMX05PX0NPTlRFWFQpOwotCi0gICAgQVNTRVJUX0VHTF9UUlVF
KFNhZmVEZXN0cm95Q29udGV4dChkaXNwbGF5LCBtQ29udGV4dHNbMF0pKTsKLSAgICBBU1NFUlRf
RUdMX1RSVUUoZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgbUNvbnRl
eHRzWzFdKSk7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBnbEdlblRleHR1cmVz
KDEsICZtVGV4dHVyZSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVy
ZSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLX0gIC8vIGFub255bW91cyBuYW1l
c3BhY2UKLQotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChFR0xDb250ZXh0U2hhcmluZ1Rlc3QsIEVT
Ml9EM0Q5KCksIEVTMl9EM0QxMSgpLCBFUzJfT1BFTkdMKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xEZXZpY2VUZXN0LmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMRGV2aWNlVGVz
dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyMTc1NDE4MTMzOWJjZWFmZDk3
ZjdjZmQ0ZmNhM2E4ODI0OGU3M2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9F
R0xEZXZpY2VUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU4NyArMCwwIEBACi0vLwotLy8g
Q29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0v
LwotCi0jaWZuZGVmIEFOR0xFX0VOQUJMRV9EM0Q5Ci0jZGVmaW5lIEFOR0xFX0VOQUJMRV9EM0Q5
Ci0jZW5kaWYKLQotI2lmbmRlZiBBTkdMRV9FTkFCTEVfRDNEMTEKLSNkZWZpbmUgQU5HTEVfRU5B
QkxFX0QzRDExCi0jZW5kaWYKLQotI2luY2x1ZGUgPGQzZDExLmg+Ci0KLSNpbmNsdWRlICJjb21f
dXRpbHMuaCIKLSNpbmNsdWRlICJPU1dpbmRvdy5oIgotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5H
TEVUZXN0LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotY2xhc3MgRUdMRGV2aWNlQ3Jl
YXRpb25UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIEVH
TERldmljZUNyZWF0aW9uVGVzdCgpCi0gICAgICAgIDogbUQzRDExQXZhaWxhYmxlKGZhbHNlKSwK
LSAgICAgICAgICBtRDNEMTFNb2R1bGUobnVsbHB0ciksCi0gICAgICAgICAgbUQzRDExQ3JlYXRl
RGV2aWNlKG51bGxwdHIpLAotICAgICAgICAgIG1EZXZpY2UobnVsbHB0ciksCi0gICAgICAgICAg
bURldmljZUNvbnRleHQobnVsbHB0ciksCi0gICAgICAgICAgbURldmljZUNyZWF0aW9uRDNEMTFF
eHRBdmFpbGFibGUoZmFsc2UpLAotICAgICAgICAgIG1PU1dpbmRvdyhudWxscHRyKSwKLSAgICAg
ICAgICBtRGlzcGxheShFR0xfTk9fRElTUExBWSksCi0gICAgICAgICAgbVN1cmZhY2UoRUdMX05P
X1NVUkZBQ0UpLAotICAgICAgICAgIG1Db250ZXh0KEVHTF9OT19DT05URVhUKSwKLSAgICAgICAg
ICBtQ29uZmlnKDApCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgbUQzRDExTW9kdWxlID0gTG9hZExpYnJhcnkoVEVYVCgiZDNkMTEuZGxs
IikpOwotICAgICAgICBpZiAobUQzRDExTW9kdWxlID09IG51bGxwdHIpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHN0ZDo6Y291dCA8PCAiVW5hYmxlIHRvIExvYWRMaWJyYXJ5IEQzRDExIiA8PCBz
dGQ6OmVuZGw7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtRDNE
MTFDcmVhdGVEZXZpY2UgPSByZWludGVycHJldF9jYXN0PFBGTl9EM0QxMV9DUkVBVEVfREVWSUNF
PigKLSAgICAgICAgICAgIEdldFByb2NBZGRyZXNzKG1EM0QxMU1vZHVsZSwgIkQzRDExQ3JlYXRl
RGV2aWNlIikpOwotICAgICAgICBpZiAobUQzRDExQ3JlYXRlRGV2aWNlID09IG51bGxwdHIpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiQ291bGQgbm90IHJldHJpZXZlIEQz
RDExQ3JlYXRlRGV2aWNlIGZyb20gZDNkMTEuZGxsIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtRDNEMTFBdmFpbGFibGUgPSB0cnVlOwot
Ci0gICAgICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvblN0cmluZyA9Ci0gICAgICAgICAgICBzdGF0
aWNfY2FzdDxjb25zdCBjaGFyICo+KGVnbFF1ZXJ5U3RyaW5nKEVHTF9OT19ESVNQTEFZLCBFR0xf
RVhURU5TSU9OUykpOwotICAgICAgICBpZiAoc3Ryc3RyKGV4dGVuc2lvblN0cmluZywgIkVHTF9B
TkdMRV9kZXZpY2VfY3JlYXRpb24iKSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHN0cnN0
cihleHRlbnNpb25TdHJpbmcsICJFR0xfQU5HTEVfZGV2aWNlX2NyZWF0aW9uX2QzZDExIikpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbURldmljZUNyZWF0aW9uRDNEMTFFeHRBdmFp
bGFibGUgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9p
ZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBTYWZlUmVsZWFzZShtRGV2aWNl
KTsKLSAgICAgICAgU2FmZVJlbGVhc2UobURldmljZUNvbnRleHQpOwotCi0gICAgICAgIFNhZmVE
ZWxldGUobU9TV2luZG93KTsKLQotICAgICAgICBpZiAobVN1cmZhY2UgIT0gRUdMX05PX1NVUkZB
Q0UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKG1EaXNwbGF5LCBt
U3VyZmFjZSk7Ci0gICAgICAgICAgICBtU3VyZmFjZSA9IEVHTF9OT19TVVJGQUNFOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKG1Db250ZXh0ICE9IEVHTF9OT19DT05URVhUKQotICAgICAgICB7
Ci0gICAgICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChtRGlzcGxheSwgbUNvbnRleHQpOwotICAg
ICAgICAgICAgbUNvbnRleHQgPSBFR0xfTk9fQ09OVEVYVDsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChtRGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSkKLSAgICAgICAgewotICAgICAgICAgICAg
ZWdsVGVybWluYXRlKG1EaXNwbGF5KTsKLSAgICAgICAgICAgIG1EaXNwbGF5ID0gRUdMX05PX0RJ
U1BMQVk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIENyZWF0ZUQzRDExRGV2aWNlKCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVF9UUlVFKG1EM0QxMUF2YWlsYWJsZSk7Ci0gICAgICAgIEFT
U0VSVF9FUShudWxscHRyLCBtRGV2aWNlKTsgIC8vIFRoZSBkZXZpY2Ugc2hvdWxkbid0IGJlIGNy
ZWF0ZWQgdHdpY2UKLQotICAgICAgICBIUkVTVUxUIGhyID0KLSAgICAgICAgICAgIG1EM0QxMUNy
ZWF0ZURldmljZShudWxscHRyLCBEM0RfRFJJVkVSX1RZUEVfSEFSRFdBUkUsIDAsIDAsIG51bGxw
dHIsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfU0RLX1ZFUlNJT04s
ICZtRGV2aWNlLCAmbUZlYXR1cmVMZXZlbCwgJm1EZXZpY2VDb250ZXh0KTsKLQotICAgICAgICBB
U1NFUlRfVFJVRShTVUNDRUVERUQoaHIpKTsKLSAgICAgICAgQVNTRVJUX0dFKG1GZWF0dXJlTGV2
ZWwsIEQzRF9GRUFUVVJFX0xFVkVMXzlfMyk7Ci0gICAgfQotCi0gICAgdm9pZCBDcmVhdGVEM0Qx
MUZMOV8zRGV2aWNlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9UUlVFKG1EM0QxMUF2YWlsYWJs
ZSk7Ci0gICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBtRGV2aWNlKTsKLQotICAgICAgICBEM0Rf
RkVBVFVSRV9MRVZFTCBmbDkzID0gRDNEX0ZFQVRVUkVfTEVWRUxfOV8zOwotCi0gICAgICAgIEhS
RVNVTFQgaHIgPQotICAgICAgICAgICAgbUQzRDExQ3JlYXRlRGV2aWNlKG51bGxwdHIsIEQzRF9E
UklWRVJfVFlQRV9IQVJEV0FSRSwgMCwgMCwgJmZsOTMsIDEsIEQzRDExX1NES19WRVJTSU9OLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtRGV2aWNlLCAmbUZlYXR1cmVMZXZlbCwg
Jm1EZXZpY2VDb250ZXh0KTsKLQotICAgICAgICBBU1NFUlRfVFJVRShTVUNDRUVERUQoaHIpKTsK
LSAgICB9Ci0KLSAgICB2b2lkIENyZWF0ZVdpbmRvd1N1cmZhY2UoKQotICAgIHsKLSAgICAgICAg
RUdMaW50IG1ham9yVmVyc2lvbiwgbWlub3JWZXJzaW9uOwotICAgICAgICBBU1NFUlRfRUdMX1RS
VUUoZWdsSW5pdGlhbGl6ZShtRGlzcGxheSwgJm1ham9yVmVyc2lvbiwgJm1pbm9yVmVyc2lvbikp
OwotCi0gICAgICAgIGVnbEJpbmRBUEkoRUdMX09QRU5HTF9FU19BUEkpOwotICAgICAgICBBU1NF
UlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgICAgICAvLyBDaG9vc2UgYSBjb25maWcKLSAgICAgICAg
Y29uc3QgRUdMaW50IGNvbmZpZ0F0dHJpYnV0ZXNbXSA9IHtFR0xfTk9ORX07Ci0gICAgICAgIEVH
TGludCBjb25maWdDb3VudCA9IDA7Ci0gICAgICAgIEFTU0VSVF9FR0xfVFJVRShlZ2xDaG9vc2VD
b25maWcobURpc3BsYXksIGNvbmZpZ0F0dHJpYnV0ZXMsICZtQ29uZmlnLCAxLCAmY29uZmlnQ291
bnQpKTsKLQotICAgICAgICAvLyBDcmVhdGUgYW4gT1MgV2luZG93Ci0gICAgICAgIG1PU1dpbmRv
dyA9IENyZWF0ZU9TV2luZG93KCk7Ci0gICAgICAgIG1PU1dpbmRvdy0+aW5pdGlhbGl6ZSgiRUdM
U3VyZmFjZVRlc3QiLCA2NCwgNjQpOwotCi0gICAgICAgIC8vIENyZWF0ZSB3aW5kb3cgc3VyZmFj
ZQotICAgICAgICBtU3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UobURpc3BsYXksIG1D
b25maWcsIG1PU1dpbmRvdy0+Z2V0TmF0aXZlV2luZG93KCksIG51bGxwdHIpOwotICAgICAgICBB
U1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgICAgICAvLyBDcmVhdGUgRUdMIGNvbnRleHQKLSAg
ICAgICAgRUdMaW50IGNvbnRleHRBdHRpYnV0ZXNbXSA9IHtFR0xfQ09OVEVYVF9DTElFTlRfVkVS
U0lPTiwgMiwgRUdMX05PTkV9OwotICAgICAgICBtQ29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQo
bURpc3BsYXksIG1Db25maWcsIG51bGxwdHIsIGNvbnRleHRBdHRpYnV0ZXMpOwotICAgICAgICBB
U1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgICAgICAvLyBNYWtlIHRoZSBzdXJmYWNlIGN1cnJl
bnQKLSAgICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIG1TdXJmYWNlLCBtU3VyZmFjZSwg
bUNvbnRleHQpOwotICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLSAgICB9Ci0KLSAgICAv
LyBUaGlzIHRyaWdnZXJzIGEgRDNEIGRldmljZSBsb3N0IG9uIGN1cnJlbnQgV2luZG93cyBzeXN0
ZW1zCi0gICAgLy8gVGhpcyBiZWhhdmlvciBjb3VsZCBwb3RlbnRpYWxseSBjaGFuZ2UgaW4gdGhl
IGZ1dHVyZQotICAgIHZvaWQgdHJpZ2dlcjlfM0RldmljZUxvc3QoKQotICAgIHsKLSAgICAgICAg
SUQzRDExQnVmZmVyICpnc0J1ZmZlciAgICAgICA9IG51bGxwdHI7Ci0gICAgICAgIEQzRDExX0JV
RkZFUl9ERVNDIGJ1ZmZlckRlc2MgPSB7MH07Ci0gICAgICAgIGJ1ZmZlckRlc2MuQnl0ZVdpZHRo
ICAgICAgICAgPSA2NDsKLSAgICAgICAgYnVmZmVyRGVzYy5Vc2FnZSAgICAgICAgICAgICA9IEQz
RDExX1VTQUdFX0RFRkFVTFQ7Ci0gICAgICAgIGJ1ZmZlckRlc2MuQmluZEZsYWdzICAgICAgICAg
PSBEM0QxMV9CSU5EX0NPTlNUQU5UX0JVRkZFUjsKLQotICAgICAgICBIUkVTVUxUIHJlc3VsdCA9
IG1EZXZpY2UtPkNyZWF0ZUJ1ZmZlcigmYnVmZmVyRGVzYywgbnVsbHB0ciwgJmdzQnVmZmVyKTsK
LSAgICAgICAgQVNTRVJUX1RSVUUoU1VDQ0VFREVEKHJlc3VsdCkpOwotCi0gICAgICAgIG1EZXZp
Y2VDb250ZXh0LT5HU1NldENvbnN0YW50QnVmZmVycygwLCAxLCAmZ3NCdWZmZXIpOwotICAgICAg
ICBTYWZlUmVsZWFzZShnc0J1ZmZlcik7Ci0gICAgICAgIGdzQnVmZmVyID0gbnVsbHB0cjsKLQot
ICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5HZXREZXZpY2VSZW1vdmVkUmVhc29uKCk7Ci0gICAg
ICAgIEFTU0VSVF9UUlVFKEZBSUxFRChyZXN1bHQpKTsKLSAgICB9Ci0KLSAgICBib29sIG1EM0Qx
MUF2YWlsYWJsZTsKLSAgICBITU9EVUxFIG1EM0QxMU1vZHVsZTsKLSAgICBQRk5fRDNEMTFfQ1JF
QVRFX0RFVklDRSBtRDNEMTFDcmVhdGVEZXZpY2U7Ci0KLSAgICBJRDNEMTFEZXZpY2UgKm1EZXZp
Y2U7Ci0gICAgSUQzRDExRGV2aWNlQ29udGV4dCAqbURldmljZUNvbnRleHQ7Ci0gICAgRDNEX0ZF
QVRVUkVfTEVWRUwgbUZlYXR1cmVMZXZlbDsKLQotICAgIGJvb2wgbURldmljZUNyZWF0aW9uRDNE
MTFFeHRBdmFpbGFibGU7Ci0KLSAgICBPU1dpbmRvdyAqbU9TV2luZG93OwotCi0gICAgRUdMRGlz
cGxheSBtRGlzcGxheTsKLSAgICBFR0xTdXJmYWNlIG1TdXJmYWNlOwotICAgIEVHTENvbnRleHQg
bUNvbnRleHQ7Ci0gICAgRUdMQ29uZmlnIG1Db25maWc7Ci19OwotCi0vLyBUZXN0IHRoYXQgY3Jl
YXRpbmcgYSBFR0xEZXZpY2VFWFQgZnJvbSBEM0QxMSBkZXZpY2Ugd29ya3MsIGFuZCBpdCBjYW4g
YmUgcXVlcmllZCB0byByZXRyaWV2ZQotLy8gRDNEMTEgZGV2aWNlCi1URVNUX0YoRUdMRGV2aWNl
Q3JlYXRpb25UZXN0LCBCYXNpY0QzRDExRGV2aWNlKQotewotICAgIGlmICghbURldmljZUNyZWF0
aW9uRDNEMTFFeHRBdmFpbGFibGUgfHwgIW1EM0QxMUF2YWlsYWJsZSkKLSAgICB7Ci0gICAgICAg
IHN0ZDo6Y291dCA8PCAiRUdMRGV2aWNlIGNyZWF0aW9uIGFuZC9vciBEM0QxMSBub3QgYXZhaWxh
YmxlLCBza2lwcGluZyB0ZXN0IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBDcmVhdGVEM0QxMURldmljZSgpOwotCi0gICAgRUdMRGV2aWNlRVhUIGVnbERldmlj
ZSA9Ci0gICAgICAgIGVnbENyZWF0ZURldmljZUFOR0xFKEVHTF9EM0QxMV9ERVZJQ0VfQU5HTEUs
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPihtRGV2aWNlKSwgbnVsbHB0cik7Ci0gICAgQVNTRVJU
X05FKEVHTF9OT19ERVZJQ0VfRVhULCBlZ2xEZXZpY2UpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VT
UygpOwotCi0gICAgRUdMQXR0cmliIGRldmljZUF0dHJpYjsKLSAgICBlZ2xRdWVyeURldmljZUF0
dHJpYkVYVChlZ2xEZXZpY2UsIEVHTF9EM0QxMV9ERVZJQ0VfQU5HTEUsICZkZXZpY2VBdHRyaWIp
OwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgSUQzRDExRGV2aWNlICpxdWVyaWVk
RGV2aWNlID0gcmVpbnRlcnByZXRfY2FzdDxJRDNEMTFEZXZpY2UgKj4oZGV2aWNlQXR0cmliKTsK
LSAgICBBU1NFUlRfRVEobUZlYXR1cmVMZXZlbCwgcXVlcmllZERldmljZS0+R2V0RmVhdHVyZUxl
dmVsKCkpOwotCi0gICAgZWdsUmVsZWFzZURldmljZUFOR0xFKGVnbERldmljZSk7Ci19Ci0KLS8v
IFRlc3QgdGhhdCBjcmVhdGluZyBhIEVHTERldmljZUVYVCBmcm9tIEQzRDExIGRldmljZSB3b3Jr
cywgYW5kIGl0IGNhbiBiZSBxdWVyaWVkIHRvIHJldHJpZXZlCi0vLyBEM0QxMSBkZXZpY2UKLVRF
U1RfRihFR0xEZXZpY2VDcmVhdGlvblRlc3QsIEJhc2ljRDNEMTFEZXZpY2VWaWFGdW5jUG9pbnRl
cikKLXsKLSAgICBpZiAoIW1EZXZpY2VDcmVhdGlvbkQzRDExRXh0QXZhaWxhYmxlIHx8ICFtRDNE
MTFBdmFpbGFibGUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIkVHTERldmljZSBjcmVh
dGlvbiBhbmQvb3IgRDNEMTEgbm90IGF2YWlsYWJsZSwgc2tpcHBpbmcgdGVzdCIgPDwgc3RkOjpl
bmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ3JlYXRlRDNEMTFEZXZpY2UoKTsK
LQotICAgIFBGTkVHTENSRUFURURFVklDRUFOR0xFUFJPQyBjcmVhdGVEZXZpY2VBTkdMRSA9Ci0g
ICAgICAgIChQRk5FR0xDUkVBVEVERVZJQ0VBTkdMRVBST0MpZWdsR2V0UHJvY0FkZHJlc3MoImVn
bENyZWF0ZURldmljZUFOR0xFIik7Ci0gICAgUEZORUdMUkVMRUFTRURFVklDRUFOR0xFUFJPQyBy
ZWxlYXNlRGV2aWNlQU5HTEUgPQotICAgICAgICAoUEZORUdMUkVMRUFTRURFVklDRUFOR0xFUFJP
QyllZ2xHZXRQcm9jQWRkcmVzcygiZWdsUmVsZWFzZURldmljZUFOR0xFIik7Ci0KLSAgICBFR0xE
ZXZpY2VFWFQgZWdsRGV2aWNlID0KLSAgICAgICAgY3JlYXRlRGV2aWNlQU5HTEUoRUdMX0QzRDEx
X0RFVklDRV9BTkdMRSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KG1EZXZpY2UpLCBudWxscHRy
KTsKLSAgICBBU1NFUlRfTkUoRUdMX05PX0RFVklDRV9FWFQsIGVnbERldmljZSk7Ci0gICAgQVNT
RVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBFR0xBdHRyaWIgZGV2aWNlQXR0cmliOwotICAgIGVn
bFF1ZXJ5RGV2aWNlQXR0cmliRVhUKGVnbERldmljZSwgRUdMX0QzRDExX0RFVklDRV9BTkdMRSwg
JmRldmljZUF0dHJpYik7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBJRDNEMTFE
ZXZpY2UgKnF1ZXJpZWREZXZpY2UgPSByZWludGVycHJldF9jYXN0PElEM0QxMURldmljZSAqPihk
ZXZpY2VBdHRyaWIpOwotICAgIEFTU0VSVF9FUShtRmVhdHVyZUxldmVsLCBxdWVyaWVkRGV2aWNl
LT5HZXRGZWF0dXJlTGV2ZWwoKSk7Ci0KLSAgICByZWxlYXNlRGV2aWNlQU5HTEUoZWdsRGV2aWNl
KTsKLX0KLQotLy8gVGVzdCB0aGF0IGNyZWF0aW5nIGEgRUdMRGV2aWNlRVhUIGZyb20gRDNEMTEg
ZGV2aWNlIHdvcmtzLCBhbmQgY2FuIGJlIHVzZWQgZm9yIHJlbmRlcmluZwotVEVTVF9GKEVHTERl
dmljZUNyZWF0aW9uVGVzdCwgUmVuZGVyaW5nVXNpbmdEM0QxMURldmljZSkKLXsKLSAgICBpZiAo
IW1EM0QxMUF2YWlsYWJsZSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiRDNEMTEgbm90
IGF2YWlsYWJsZSwgc2tpcHBpbmcgdGVzdCIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQ3JlYXRlRDNEMTFEZXZpY2UoKTsKLQotICAgIEVHTERldmljZUVYVCBl
Z2xEZXZpY2UgPQotICAgICAgICBlZ2xDcmVhdGVEZXZpY2VBTkdMRShFR0xfRDNEMTFfREVWSUNF
X0FOR0xFLCByZWludGVycHJldF9jYXN0PHZvaWQgKj4obURldmljZSksIG51bGxwdHIpOwotICAg
IEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgLy8gQ3JlYXRlIGFuIEVHTERpc3BsYXkgdXNp
bmcgdGhlIEVHTERldmljZQotICAgIG1EaXNwbGF5ID0gZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhU
KEVHTF9QTEFURk9STV9ERVZJQ0VfRVhULCBlZ2xEZXZpY2UsIG51bGxwdHIpOwotICAgIEFTU0VS
VF9ORShFR0xfTk9fRElTUExBWSwgbURpc3BsYXkpOwotCi0gICAgLy8gQ3JlYXRlIGEgc3VyZmFj
ZSB1c2luZyB0aGUgZGlzcGxheQotICAgIENyZWF0ZVdpbmRvd1N1cmZhY2UoKTsKLQotICAgIC8v
IFBlcmZvcm0gc29tZSB2ZXJ5IGJhc2ljIHJlbmRlcmluZwotICAgIGdsQ2xlYXJDb2xvcigxLjBm
LCAwLjBmLCAxLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwot
ICAgIEVYUEVDVF9QSVhFTF9FUSgzMiwgMzIsIDI1NSwgMCwgMjU1LCAyNTUpOwotCi0gICAgLy8g
Tm90ZSB0aGF0IHdlIG11c3QgY2FsbCBUZWFyRG93bigpIGJlZm9yZSB3ZSByZWxlYXNlIHRoZSBF
R0wgZGV2aWNlLCBzaW5jZSB0aGUgZGlzcGxheQotICAgIC8vIGRlcGVuZHMgb24gdGhlIGRldmlj
ZQotICAgIFRlYXJEb3duKCk7Ci0KLSAgICBlZ2xSZWxlYXNlRGV2aWNlQU5HTEUoZWdsRGV2aWNl
KTsKLX0KLQotLy8gVGVzdCB0aGF0IEFOR0xFIGRvZXNuJ3QgdHJ5IHRvIHJlY3JlYXRlIGEgRDNE
MTEgZGV2aWNlIGlmIHRoZSBpbnB1dHRlZCBvbmUgaXMgbG9zdAotVEVTVF9GKEVHTERldmljZUNy
ZWF0aW9uVGVzdCwgRDNEMTFEZXZpY2VSZWNvdmVyeSkKLXsKLSAgICBpZiAoIW1EM0QxMUF2YWls
YWJsZSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiRDNEMTEgbm90IGF2YWlsYWJsZSwg
c2tpcHBpbmcgdGVzdCIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgLy8gRm9yY2UgRmVhdHVyZSBMZXZlbCA5XzMgc28gd2UgY2FuIGVhc2lseSB0cmlnZ2VyIGEg
ZGV2aWNlIGxvc3QgbGF0ZXIKLSAgICBDcmVhdGVEM0QxMUZMOV8zRGV2aWNlKCk7Ci0KLSAgICBF
R0xEZXZpY2VFWFQgZWdsRGV2aWNlID0KLSAgICAgICAgZWdsQ3JlYXRlRGV2aWNlQU5HTEUoRUdM
X0QzRDExX0RFVklDRV9BTkdMRSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KG1EZXZpY2UpLCBu
dWxscHRyKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgIC8vIENyZWF0ZSBhbiBF
R0xEaXNwbGF5IHVzaW5nIHRoZSBFR0xEZXZpY2UKLSAgICBtRGlzcGxheSA9IGVnbEdldFBsYXRm
b3JtRGlzcGxheUVYVChFR0xfUExBVEZPUk1fREVWSUNFX0VYVCwgZWdsRGV2aWNlLCBudWxscHRy
KTsKLSAgICBBU1NFUlRfVFJVRShtRGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSk7Ci0KLSAgICAv
LyBDcmVhdGUgYSBzdXJmYWNlIHVzaW5nIHRoZSBkaXNwbGF5Ci0gICAgQ3JlYXRlV2luZG93U3Vy
ZmFjZSgpOwotCi0gICAgLy8gUGVyZm9ybSBzb21lIHZlcnkgYmFzaWMgcmVuZGVyaW5nCi0gICAg
Z2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOwotICAgIGdsQ2xlYXIoR0xfQ09M
T1JfQlVGRkVSX0JJVCk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDMyLCAzMiwgMjU1LCAwLCAyNTUs
IDI1NSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBBTkdMRSdzIFN3YXBD
aGFpbjExOjppbml0UGFzc1Rocm91Z2hSZXNvdXJjZXMgZG9lc24ndCBoYW5kbGUgZGV2aWNlIGxv
c3QgYmVmb3JlCi0gICAgLy8gZWdsU3dhcEJ1ZmZlcnMsIHNvIHdlIG11c3QgY2FsbCBlZ2xTd2Fw
QnVmZmVycyBiZWZvcmUgd2UgbG9zZSB0aGUgZGV2aWNlLgotICAgIEFTU0VSVF9FR0xfVFJVRShl
Z2xTd2FwQnVmZmVycyhtRGlzcGxheSwgbVN1cmZhY2UpKTsKLQotICAgIC8vIFRyaWdnZXIgYSBs
b3N0IGRldmljZQotICAgIHRyaWdnZXI5XzNEZXZpY2VMb3N0KCk7Ci0KLSAgICAvLyBEZXN0cm95
IHRoZSBvbGQgRUdMIFdpbmRvdyBTdXJmYWNlCi0gICAgaWYgKG1TdXJmYWNlICE9IEVHTF9OT19T
VVJGQUNFKQotICAgIHsKLSAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UobURpc3BsYXksIG1TdXJm
YWNlKTsKLSAgICAgICAgbVN1cmZhY2UgPSBFR0xfTk9fU1VSRkFDRTsKLSAgICB9Ci0KLSAgICAv
LyBUcnkgdG8gY3JlYXRlIGEgbmV3IHdpbmRvdyBzdXJmYWNlLiBJbiBjZXJ0YWluIGNvbmZpZ3Vy
YXRpb25zIHRoaXMgd2lsbCByZWNyZWF0ZSB0aGUgRDNEMTEKLSAgICAvLyBkZXZpY2UuIFdlIHdh
bnQgdG8gdGVzdCB0aGF0IGl0IGRvZXNuJ3QgcmVjcmVhdGUgdGhlIEQzRDExIGRldmljZSB3aGVu
IEVHTERldmljZUVYVCBpcwotICAgIC8vIHVzZWQuIFRoZSB3aW5kb3cgc3VyZmFjZSBjcmVhdGlv
biBzaG91bGQgZmFpbCBpZiBhIG5ldyBEM0QxMSBkZXZpY2UgaXNuJ3QgY3JlYXRlZC4KLSAgICBt
U3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UobURpc3BsYXksIG1Db25maWcsIG1PU1dp
bmRvdy0+Z2V0TmF0aXZlV2luZG93KCksIG51bGxwdHIpOwotICAgIEFTU0VSVF9FUShFR0xfTk9f
U1VSRkFDRSwgbVN1cmZhY2UpOwotICAgIEFTU0VSVF9FR0xfRVJST1IoRUdMX0JBRF9BTExPQyk7
Ci0KLSAgICAvLyBHZXQgdGhlIEQzRDExIGRldmljZSBvdXQgb2YgdGhlIEVHTERpc3BsYXkgYWdh
aW4uIEl0IHNob3VsZCBiZSB0aGUgc2FtZSBvbmUgYXMgYWJvdmUuCi0gICAgRUdMQXR0cmliIGRl
dmljZSAgICAgICA9IDA7Ci0gICAgRUdMQXR0cmliIG5ld0VnbERldmljZSA9IDA7Ci0gICAgQVNT
RVJUX0VHTF9UUlVFKGVnbFF1ZXJ5RGlzcGxheUF0dHJpYkVYVChtRGlzcGxheSwgRUdMX0RFVklD
RV9FWFQsICZuZXdFZ2xEZXZpY2UpKTsKLSAgICBBU1NFUlRfRUdMX1RSVUUoZWdsUXVlcnlEZXZp
Y2VBdHRyaWJFWFQocmVpbnRlcnByZXRfY2FzdDxFR0xEZXZpY2VFWFQ+KG5ld0VnbERldmljZSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfRDNE
MTFfREVWSUNFX0FOR0xFLCAmZGV2aWNlKSk7Ci0gICAgSUQzRDExRGV2aWNlICpuZXdEZXZpY2Ug
PSByZWludGVycHJldF9jYXN0PElEM0QxMURldmljZSAqPihkZXZpY2UpOwotCi0gICAgQVNTRVJU
X0VRKHJlaW50ZXJwcmV0X2Nhc3Q8RUdMRGV2aWNlRVhUPihuZXdFZ2xEZXZpY2UpLCBlZ2xEZXZp
Y2UpOwotICAgIEFTU0VSVF9FUShuZXdEZXZpY2UsIG1EZXZpY2UpOwotCi0gICAgLy8gTm90ZSB0
aGF0IHdlIG11c3QgY2FsbCBUZWFyRG93bigpIGJlZm9yZSB3ZSByZWxlYXNlIHRoZSBFR0wgZGV2
aWNlLCBzaW5jZSB0aGUgZGlzcGxheQotICAgIC8vIGRlcGVuZHMgb24gdGhlIGRldmljZQotICAg
IFRlYXJEb3duKCk7Ci0KLSAgICBlZ2xSZWxlYXNlRGV2aWNlQU5HTEUoZWdsRGV2aWNlKTsKLX0K
LQotLy8gVGVzdCB0aGF0IGNhbGxpbmcgZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUIHdpdGggdGhl
IHNhbWUgZGV2aWNlIHJldHVybnMgdGhlIHNhbWUgZGlzcGxheQotVEVTVF9GKEVHTERldmljZUNy
ZWF0aW9uVGVzdCwgZ2V0UGxhdGZvcm1EaXNwbGF5VHdpY2UpCi17Ci0gICAgaWYgKCFtRDNEMTFB
dmFpbGFibGUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIkQzRDExIG5vdCBhdmFpbGFi
bGUsIHNraXBwaW5nIHRlc3QiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIENyZWF0ZUQzRDExRGV2aWNlKCk7Ci0KLSAgICBFR0xEZXZpY2VFWFQgZWdsRGV2aWNl
ID0KLSAgICAgICAgZWdsQ3JlYXRlRGV2aWNlQU5HTEUoRUdMX0QzRDExX0RFVklDRV9BTkdMRSwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KG1EZXZpY2UpLCBudWxscHRyKTsKLSAgICBBU1NFUlRf
RUdMX1NVQ0NFU1MoKTsKLQotICAgIC8vIENyZWF0ZSBhbiBFR0xEaXNwbGF5IHVzaW5nIHRoZSBF
R0xEZXZpY2UKLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkxID0gZWdsR2V0UGxhdGZvcm1EaXNwbGF5
RVhUKEVHTF9QTEFURk9STV9ERVZJQ0VfRVhULCBlZ2xEZXZpY2UsIG51bGxwdHIpOwotICAgIEFT
U0VSVF9ORShFR0xfTk9fRElTUExBWSwgZGlzcGxheTEpOwotCi0gICAgRUdMRGlzcGxheSBkaXNw
bGF5MiA9IGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVChFR0xfUExBVEZPUk1fREVWSUNFX0VYVCwg
ZWdsRGV2aWNlLCBudWxscHRyKTsKLSAgICBBU1NFUlRfTkUoRUdMX05PX0RJU1BMQVksIGRpc3Bs
YXkyKTsKLQotICAgIEFTU0VSVF9FUShkaXNwbGF5MSwgZGlzcGxheTIpOwotCi0gICAgZWdsVGVy
bWluYXRlKGRpc3BsYXkxKTsKLSAgICBlZ2xSZWxlYXNlRGV2aWNlQU5HTEUoZWdsRGV2aWNlKTsK
LX0KLQotLy8gVGVzdCB0aGF0IGNyZWF0aW5nIGEgRUdMRGV2aWNlRVhUIGZyb20gYW4gaW52YWxp
ZCBEM0QxMSBkZXZpY2UgZmFpbHMKLVRFU1RfRihFR0xEZXZpY2VDcmVhdGlvblRlc3QsIEludmFs
aWREM0QxMURldmljZSkKLXsKLSAgICBpZiAoIW1EZXZpY2VDcmVhdGlvbkQzRDExRXh0QXZhaWxh
YmxlIHx8ICFtRDNEMTFBdmFpbGFibGUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIkVH
TERldmljZSBjcmVhdGlvbiBhbmQvb3IgRDNEMTEgbm90IGF2YWlsYWJsZSwgc2tpcHBpbmcgdGVz
dCIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ3JlYXRlRDNE
MTFEZXZpY2UoKTsKLQotICAgIC8vIFVzZSBtRGV2aWNlQ29udGV4dCBpbnN0ZWFkIG9mIG1EZXZp
Y2UKLSAgICBFR0xEZXZpY2VFWFQgZWdsRGV2aWNlID0gZWdsQ3JlYXRlRGV2aWNlQU5HTEUoCi0g
ICAgICAgIEVHTF9EM0QxMV9ERVZJQ0VfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPiht
RGV2aWNlQ29udGV4dCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9FUShFR0xfTk9fREVWSUNFX0VY
VCwgZWdsRGV2aWNlKTsKLSAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfQVRUUklCVVRFKTsK
LX0KLQotLy8gVGVzdCB0aGF0IEVHTERldmljZUVYVCBob2xkcyBhIHJlZiB0byB0aGUgRDNEMTEg
ZGV2aWNlCi1URVNUX0YoRUdMRGV2aWNlQ3JlYXRpb25UZXN0LCBEM0QxMURldmljZVJlZmVyZW5j
ZUNvdW50aW5nKQotewotICAgIGlmICghbURldmljZUNyZWF0aW9uRDNEMTFFeHRBdmFpbGFibGUg
fHwgIW1EM0QxMUF2YWlsYWJsZSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiRUdMRGV2
aWNlIGNyZWF0aW9uIGFuZC9vciBEM0QxMSBub3QgYXZhaWxhYmxlLCBza2lwcGluZyB0ZXN0IiA8
PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDcmVhdGVEM0QxMURl
dmljZSgpOwotCi0gICAgRUdMRGV2aWNlRVhUIGVnbERldmljZSA9Ci0gICAgICAgIGVnbENyZWF0
ZURldmljZUFOR0xFKEVHTF9EM0QxMV9ERVZJQ0VfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCAqPihtRGV2aWNlKSwgbnVsbHB0cik7Ci0gICAgQVNTRVJUX05FKEVHTF9OT19ERVZJQ0VfRVhU
LCBlZ2xEZXZpY2UpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgLy8gTm93IHJl
bGVhc2Ugb3VyIEQzRDExIGRldmljZS9jb250ZXh0Ci0gICAgU2FmZVJlbGVhc2UobURldmljZSk7
Ci0gICAgU2FmZVJlbGVhc2UobURldmljZUNvbnRleHQpOwotCi0gICAgRUdMQXR0cmliIGRldmlj
ZUF0dHJpYjsKLSAgICBlZ2xRdWVyeURldmljZUF0dHJpYkVYVChlZ2xEZXZpY2UsIEVHTF9EM0Qx
MV9ERVZJQ0VfQU5HTEUsICZkZXZpY2VBdHRyaWIpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygp
OwotCi0gICAgSUQzRDExRGV2aWNlICpxdWVyaWVkRGV2aWNlID0gcmVpbnRlcnByZXRfY2FzdDxJ
RDNEMTFEZXZpY2UgKj4oZGV2aWNlQXR0cmliKTsKLSAgICBBU1NFUlRfRVEobUZlYXR1cmVMZXZl
bCwgcXVlcmllZERldmljZS0+R2V0RmVhdHVyZUxldmVsKCkpOwotCi0gICAgZWdsUmVsZWFzZURl
dmljZUFOR0xFKGVnbERldmljZSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBjcmVhdGluZyBhIEVHTERl
dmljZUVYVCBmcm9tIGEgRDNEOSBkZXZpY2UgZmFpbHMKLVRFU1RfRihFR0xEZXZpY2VDcmVhdGlv
blRlc3QsIEFueUQzRDlEZXZpY2UpCi17Ci0gICAgaWYgKCFtRGV2aWNlQ3JlYXRpb25EM0QxMUV4
dEF2YWlsYWJsZSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiRUdMRGV2aWNlIGNyZWF0
aW9uIG5vdCBhdmFpbGFibGUsIHNraXBwaW5nIHRlc3QiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nIGZha2VEM0REZXZpY2UgPSAiVGhpcyBp
cyBhIHN0cmluZywgbm90IGEgRDNEIGRldmljZSI7Ci0KLSAgICBFR0xEZXZpY2VFWFQgZWdsRGV2
aWNlID0gZWdsQ3JlYXRlRGV2aWNlQU5HTEUoCi0gICAgICAgIEVHTF9EM0Q5X0RFVklDRV9BTkdM
RSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KCZmYWtlRDNERGV2aWNlKSwgbnVsbHB0cik7Ci0g
ICAgRVhQRUNUX0VRKEVHTF9OT19ERVZJQ0VfRVhULCBlZ2xEZXZpY2UpOwotICAgIEVYUEVDVF9F
R0xfRVJST1IoRUdMX0JBRF9BVFRSSUJVVEUpOwotfQotCi1jbGFzcyBFR0xEZXZpY2VRdWVyeVRl
c3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBFR0xEZXZpY2VRdWVy
eVRlc3QoKQotICAgIHsKLSAgICAgICAgbVF1ZXJ5RGlzcGxheUF0dHJpYkVYVCA9IG51bGxwdHI7
Ci0gICAgICAgIG1RdWVyeURldmljZUF0dHJpYkVYVCAgPSBudWxscHRyOwotICAgICAgICBtUXVl
cnlEZXZpY2VTdHJpbmdFWFQgID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBj
b25zdCBjaGFyICpleHRlbnNpb25TdHJpbmcgPQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhciAqPihlZ2xRdWVyeVN0cmluZyhnZXRFR0xXaW5kb3coKS0+Z2V0RGlzcGxheSgpLCBF
R0xfRVhURU5TSU9OUykpOwotICAgICAgICBpZiAoc3Ryc3RyKGV4dGVuc2lvblN0cmluZywgIkVH
TF9FWFRfZGV2aWNlX3F1ZXJ5IikpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1RdWVyeURpc3Bs
YXlBdHRyaWJFWFQgPQotICAgICAgICAgICAgICAgIChQRk5FR0xRVUVSWURJU1BMQVlBVFRSSUJF
WFRQUk9DKWVnbEdldFByb2NBZGRyZXNzKCJlZ2xRdWVyeURpc3BsYXlBdHRyaWJFWFQiKTsKLSAg
ICAgICAgICAgIG1RdWVyeURldmljZUF0dHJpYkVYVCA9Ci0gICAgICAgICAgICAgICAgKFBGTkVH
TFFVRVJZREVWSUNFQVRUUklCRVhUUFJPQyllZ2xHZXRQcm9jQWRkcmVzcygiZWdsUXVlcnlEZXZp
Y2VBdHRyaWJFWFQiKTsKLSAgICAgICAgICAgIG1RdWVyeURldmljZVN0cmluZ0VYVCA9Ci0gICAg
ICAgICAgICAgICAgKFBGTkVHTFFVRVJZREVWSUNFU1RSSU5HRVhUUFJPQyllZ2xHZXRQcm9jQWRk
cmVzcygiZWdsUXVlcnlEZXZpY2VTdHJpbmdFWFQiKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
ICghbVF1ZXJ5RGV2aWNlU3RyaW5nRVhUKQotICAgICAgICB7Ci0gICAgICAgICAgICBGQUlMKCkg
PDwgIkFOR0xFIGV4dGVuc2lvbiBFR0xfRVhUX2RldmljZV9xdWVyeSBleHBvcnQgZWdsUXVlcnlE
ZXZpY2VTdHJpbmdFWFQgd2FzIG5vdCAiCi0gICAgICAgICAgICAgICAgICAgICAgImZvdW5kIjsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmICghbVF1ZXJ5RGlzcGxheUF0dHJpYkVYVCkKLSAgICAg
ICAgewotICAgICAgICAgICAgRkFJTCgpIDw8ICJBTkdMRSBleHRlbnNpb24gRUdMX0VYVF9kZXZp
Y2VfcXVlcnkgZXhwb3J0IGVnbFF1ZXJ5RGlzcGxheUF0dHJpYkVYVCB3YXMgIgotICAgICAgICAg
ICAgICAgICAgICAgICJub3QgZm91bmQiOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFtUXVl
cnlEZXZpY2VBdHRyaWJFWFQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEZBSUwoKSA8PCAiQU5H
TEUgZXh0ZW5zaW9uIEVHTF9FWFRfZGV2aWNlX3F1ZXJ5IGV4cG9ydCBlZ2xRdWVyeURldmljZUF0
dHJpYkVYVCB3YXMgbm90ICIKLSAgICAgICAgICAgICAgICAgICAgICAiZm91bmQiOwotICAgICAg
ICB9Ci0KLSAgICAgICAgRUdMQXR0cmliIGFuZ2xlRGV2aWNlID0gMDsKLSAgICAgICAgRVhQRUNU
X0VHTF9UUlVFKAotICAgICAgICAgICAgbVF1ZXJ5RGlzcGxheUF0dHJpYkVYVChnZXRFR0xXaW5k
b3coKS0+Z2V0RGlzcGxheSgpLCBFR0xfREVWSUNFX0VYVCwgJmFuZ2xlRGV2aWNlKSk7Ci0gICAg
ICAgIGV4dGVuc2lvblN0cmluZyA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4oCi0gICAgICAg
ICAgICBtUXVlcnlEZXZpY2VTdHJpbmdFWFQocmVpbnRlcnByZXRfY2FzdDxFR0xEZXZpY2VFWFQ+
KGFuZ2xlRGV2aWNlKSwgRUdMX0VYVEVOU0lPTlMpKTsKLSAgICAgICAgaWYgKHN0cnN0cihleHRl
bnNpb25TdHJpbmcsICJFR0xfQU5HTEVfZGV2aWNlX2QzZCIpID09IE5VTEwpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEZBSUwoKSA8PCAiQU5HTEUgZXh0ZW5zaW9uIEVHTF9BTkdMRV9kZXZpY2Vf
ZDNkIHdhcyBub3QgZm91bmQiOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93
bigpIG92ZXJyaWRlIHsgQU5HTEVUZXN0OjpUZWFyRG93bigpOyB9Ci0KLSAgICBQRk5FR0xRVUVS
WURJU1BMQVlBVFRSSUJFWFRQUk9DIG1RdWVyeURpc3BsYXlBdHRyaWJFWFQ7Ci0gICAgUEZORUdM
UVVFUllERVZJQ0VBVFRSSUJFWFRQUk9DIG1RdWVyeURldmljZUF0dHJpYkVYVDsKLSAgICBQRk5F
R0xRVUVSWURFVklDRVNUUklOR0VYVFBST0MgbVF1ZXJ5RGV2aWNlU3RyaW5nRVhUOwotfTsKLQot
Ly8gVGhpcyB0ZXN0IGF0dGVtcHRzIHRvIG9idGFpbiBhIEQzRDExIGRldmljZSBhbmQgYSBEM0Q5
IGRldmljZSB1c2luZyB0aGUgZWdsUXVlcnlEZXZpY2VBdHRyaWJFWFQKLS8vIGZ1bmN0aW9uLgot
Ly8gSWYgdGhlIHRlc3QgaXMgY29uZmlndXJlZCB0byB1c2UgRDNEMTEgdGhlbiBpdCBzaG91bGQg
c3VjY2VlZCB0byBvYnRhaW4gYSBEM0QxMSBkZXZpY2UuCi0vLyBJZiB0aGUgdGVzdCBpcyBjb25m
aXR1cmVkIHRvIHVzZSBEM0Q5LCB0aGVuIGl0IHNob3VsZCBzdWNjZWVkIHRvIG9idGFpbiBhIEQz
RDkgZGV2aWNlLgotVEVTVF9QKEVHTERldmljZVF1ZXJ5VGVzdCwgUXVlcnlEZXZpY2UpCi17Ci0g
ICAgRUdMQXR0cmliIGRldmljZSAgICAgID0gMDsKLSAgICBFR0xBdHRyaWIgYW5nbGVEZXZpY2Ug
PSAwOwotICAgIGlmIChnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfRDNEMTFfQU5HTEUpCi0gICAgewotICAgICAgICBFWFBFQ1RfRUdMX1RSVUUoCi0gICAg
ICAgICAgICBtUXVlcnlEaXNwbGF5QXR0cmliRVhUKGdldEVHTFdpbmRvdygpLT5nZXREaXNwbGF5
KCksIEVHTF9ERVZJQ0VfRVhULCAmYW5nbGVEZXZpY2UpKTsKLSAgICAgICAgRVhQRUNUX0VHTF9U
UlVFKG1RdWVyeURldmljZUF0dHJpYkVYVChyZWludGVycHJldF9jYXN0PEVHTERldmljZUVYVD4o
YW5nbGVEZXZpY2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVHTF9EM0QxMV9ERVZJQ0VfQU5HTEUsICZkZXZpY2UpKTsKLSAgICAgICAgSUQzRDExRGV2
aWNlICpkM2QxMURldmljZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SUQzRDExRGV2aWNlICo+KGRldmlj
ZSk7Ci0gICAgICAgIElEWEdJRGV2aWNlICpkeGdpRGV2aWNlID0gRHluYW1pY0Nhc3RDb21PYmpl
Y3Q8SURYR0lEZXZpY2U+KGQzZDExRGV2aWNlKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoZHhnaURl
dmljZSAhPSBudWxscHRyKTsKLSAgICAgICAgU2FmZVJlbGVhc2UoZHhnaURldmljZSk7Ci0gICAg
fQotCi0gICAgaWYgKGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9EM0Q5X0FOR0xFKQotICAgIHsKLSAgICAgICAgRVhQRUNUX0VHTF9UUlVFKAotICAgICAg
ICAgICAgbVF1ZXJ5RGlzcGxheUF0dHJpYkVYVChnZXRFR0xXaW5kb3coKS0+Z2V0RGlzcGxheSgp
LCBFR0xfREVWSUNFX0VYVCwgJmFuZ2xlRGV2aWNlKSk7Ci0gICAgICAgIEVYUEVDVF9FR0xfVFJV
RShtUXVlcnlEZXZpY2VBdHRyaWJFWFQocmVpbnRlcnByZXRfY2FzdDxFR0xEZXZpY2VFWFQ+KGFu
Z2xlRGV2aWNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xfRDNEOV9ERVZJQ0VfQU5HTEUsICZkZXZpY2UpKTsKLSAgICAgICAgSURpcmVjdDNERGV2
aWNlOSAqZDNkOURldmljZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SURpcmVjdDNERGV2aWNlOSAqPihk
ZXZpY2UpOwotICAgICAgICBJRGlyZWN0M0Q5ICpkM2Q5ID0gbnVsbHB0cjsKLSAgICAgICAgRVhQ
RUNUX0VRKFNfT0ssIGQzZDlEZXZpY2UtPkdldERpcmVjdDNEKCZkM2Q5KSk7Ci0gICAgICAgIEVY
UEVDVF9UUlVFKGQzZDkgIT0gbnVsbHB0cik7Ci0gICAgICAgIFNhZmVSZWxlYXNlKGQzZDkpOwot
ICAgIH0KLX0KLQotLy8gVGhpcyB0ZXN0IGF0dGVtcHRzIHRvIG9idGFpbiBhIEQzRDExIGRldmlj
ZSBmcm9tIGEgRDNEOSBjb25maWd1cmVkIHN5c3RlbSBhbmQgYSBEM0Q5IGRldmljZSBmcm9tCi0v
LyBhIEQzRDExIGNvbmZpZ3VyZWQgc3lzdGVtIHVzaW5nIHRoZSBlZ2xRdWVyeURldmljZUF0dHJp
YkVYVCBmdW5jdGlvbi4KLS8vIElmIHRoZSB0ZXN0IGlzIGNvbmZpZ3VyZWQgdG8gdXNlIEQzRDEx
IHRoZW4gaXQgc2hvdWxkIGZhaWwgdG8gb2J0YWluIGEgRDNEMTEgZGV2aWNlLgotLy8gSWYgdGhl
IHRlc3QgaXMgY29uZml0dXJlZCB0byB1c2UgRDNEOSwgdGhlbiBpdCBzaG91bGQgZmFpbCB0byBv
YnRhaW4gYSBEM0Q5IGRldmljZS4KLVRFU1RfUChFR0xEZXZpY2VRdWVyeVRlc3QsIFF1ZXJ5RGV2
aWNlQmFkQXR0cmlidXRlKQotewotICAgIEVHTEF0dHJpYiBkZXZpY2UgICAgICA9IDA7Ci0gICAg
RUdMQXR0cmliIGFuZ2xlRGV2aWNlID0gMDsKLSAgICBpZiAoZ2V0UGxhdGZvcm1SZW5kZXJlcigp
ID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKQotICAgIHsKLSAgICAgICAg
RVhQRUNUX0VHTF9UUlVFKAotICAgICAgICAgICAgbVF1ZXJ5RGlzcGxheUF0dHJpYkVYVChnZXRF
R0xXaW5kb3coKS0+Z2V0RGlzcGxheSgpLCBFR0xfREVWSUNFX0VYVCwgJmFuZ2xlRGV2aWNlKSk7
Ci0gICAgICAgIEVYUEVDVF9FR0xfRkFMU0UobVF1ZXJ5RGV2aWNlQXR0cmliRVhUKHJlaW50ZXJw
cmV0X2Nhc3Q8RUdMRGV2aWNlRVhUPihhbmdsZURldmljZSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9EM0Q5X0RFVklDRV9BTkdMRSwgJmRldmlj
ZSkpOwotICAgIH0KLQotICAgIGlmIChnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfRDNEOV9BTkdMRSkKLSAgICB7Ci0gICAgICAgIEVYUEVDVF9FR0xfVFJV
RSgKLSAgICAgICAgICAgIG1RdWVyeURpc3BsYXlBdHRyaWJFWFQoZ2V0RUdMV2luZG93KCktPmdl
dERpc3BsYXkoKSwgRUdMX0RFVklDRV9FWFQsICZhbmdsZURldmljZSkpOwotICAgICAgICBFWFBF
Q1RfRUdMX0ZBTFNFKG1RdWVyeURldmljZUF0dHJpYkVYVChyZWludGVycHJldF9jYXN0PEVHTERl
dmljZUVYVD4oYW5nbGVEZXZpY2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFR0xfRDNEMTFfREVWSUNFX0FOR0xFLCAmZGV2aWNlKSk7Ci0gICAgfQot
fQotCi0vLyBFbnN1cmUgdGhhdDoKLS8vICAgIC0gY2FsbGluZyBnZXRQbGF0Zm9ybURpc3BsYXlF
WFQgdXNpbmcgQU5HTEVfUGxhdGZvcm0gd2l0aCBzb21lIHBhcmFtZXRlcnMKLS8vICAgIC0gZXh0
cmFjdGluZyB0aGUgRUdMRGV2aWNlRVhUIGZyb20gdGhlIEVHTERpc3BsYXkKLS8vICAgIC0gY2Fs
bGluZyBnZXRQbGF0Zm9ybURpc3BsYXlFWFQgd2l0aCB0aGlzIEVHTERldmljZUVYVAotLy8gcmVz
dWx0cyBpbiB0aGUgc2FtZSBFR0xEaXNwbGF5IGJlaW5nIHJldHVybmVkIGZyb20gZ2V0UGxhdGZv
cm1EaXNwbGF5RVhUIGJvdGggdGltZXMKLVRFU1RfUChFR0xEZXZpY2VRdWVyeVRlc3QsIGdldFBs
YXRmb3JtRGlzcGxheURldmljZVJldXNlKQotewotICAgIEVHTEF0dHJpYiBlZ2xEZXZpY2UgPSAw
OwotICAgIEVYUEVDVF9FR0xfVFJVRSgKLSAgICAgICAgICAgICAgZWdsUXVlcnlEaXNwbGF5QXR0
cmliRVhUKGdldEVHTFdpbmRvdygpLT5nZXREaXNwbGF5KCksIEVHTF9ERVZJQ0VfRVhULCAmZWds
RGV2aWNlKSk7Ci0KLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkyID0gZWdsR2V0UGxhdGZvcm1EaXNw
bGF5RVhUKAotICAgICAgICBFR0xfUExBVEZPUk1fREVWSUNFX0VYVCwgcmVpbnRlcnByZXRfY2Fz
dDxFR0xEZXZpY2VFWFQ+KGVnbERldmljZSksIG51bGxwdHIpOwotICAgIEVYUEVDVF9FUShnZXRF
R0xXaW5kb3coKS0+Z2V0RGlzcGxheSgpLCBkaXNwbGF5Mik7Ci19Ci0KLS8vIFVzZSB0aGlzIHRv
IHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2gg
R0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZQotLy8gdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0
LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChFR0xEZXZpY2VRdWVyeVRlc3QsIEVTMl9EM0Q5KCks
IEVTMl9EM0QxMSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9lZ2xfdGVzdHMvRUdMUHJlc2VudFBhdGhEM0QxMVRlc3QuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xQcmVzZW50UGF0aEQzRDExVGVzdC5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3M2M3YzRmZjYyMjQ4YmQyNjRkNWNh
ZjJhOTRjMzRhODc1ZDdiYmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xQ
cmVzZW50UGF0aEQzRDExVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNzggKzAsMCBAQAot
Ly8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLSNpbmNsdWRl
IDxjc3RkaW50PgotI2luY2x1ZGUgImNvbV91dGlscy5oIgotI2luY2x1ZGUgIk9TV2luZG93Lmgi
Ci0jaW5jbHVkZSA8ZDNkMTEuaD4KLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1jbGFzcyBF
R0xQcmVzZW50UGF0aEQzRDExIDogcHVibGljIHRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08UGxhdGZv
cm1QYXJhbWV0ZXJzPgotewotICBwcm90ZWN0ZWQ6Ci0gICAgRUdMUHJlc2VudFBhdGhEM0QxMSgp
Ci0gICAgICAgIDogbURpc3BsYXkoRUdMX05PX0RJU1BMQVkpLAotICAgICAgICAgIG1Db250ZXh0
KEVHTF9OT19DT05URVhUKSwKLSAgICAgICAgICBtU3VyZmFjZShFR0xfTk9fU1VSRkFDRSksCi0g
ICAgICAgICAgbU9mZnNjcmVlblN1cmZhY2VEM0QxMVRleHR1cmUobnVsbHB0ciksCi0gICAgICAg
ICAgbUNvbmZpZygwKSwKLSAgICAgICAgICBtT1NXaW5kb3cobnVsbHB0ciksCi0gICAgICAgICAg
bVdpbmRvd1dpZHRoKDApCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgbU9TV2luZG93ICAgID0gQ3JlYXRlT1NXaW5kb3coKTsKLSAgICAg
ICAgbVdpbmRvd1dpZHRoID0gNjQ7Ci0gICAgICAgIG1PU1dpbmRvdy0+aW5pdGlhbGl6ZSgiRUdM
UHJlc2VudFBhdGhEM0QxMSIsIG1XaW5kb3dXaWR0aCwgbVdpbmRvd1dpZHRoKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGluaXRpYWxpemVFR0woYm9vbCB1c2VQcmVzZW50UGF0aEZhc3QpCi0gICAgewot
ICAgICAgICBpbnQgY2xpZW50VmVyc2lvbiA9IEdldFBhcmFtKCkubWFqb3JWZXJzaW9uOwotCi0g
ICAgICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvblN0cmluZyA9Ci0gICAgICAgICAgICBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyICo+KGVnbFF1ZXJ5U3RyaW5nKEVHTF9OT19ESVNQTEFZLCBFR0xfRVhU
RU5TSU9OUykpOwotICAgICAgICBBU1NFUlRfTkUobnVsbHB0ciwgc3Ryc3RyKGV4dGVuc2lvblN0
cmluZywgIkVHTF9BTkdMRV9leHBlcmltZW50YWxfcHJlc2VudF9wYXRoIikpOwotCi0gICAgICAg
IFBGTkVHTEdFVFBMQVRGT1JNRElTUExBWUVYVFBST0MgZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhU
ID0KLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMR0VUUExBVEZPUk1ESVNQTEFZ
RVhUUFJPQz4oCi0gICAgICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImVnbEdldFBsYXRm
b3JtRGlzcGxheUVYVCIpKTsKLSAgICAgICAgQVNTRVJUX05FKG51bGxwdHIsIGVnbEdldFBsYXRm
b3JtRGlzcGxheUVYVCk7Ci0KLSAgICAgICAgLy8gU2V0IHVwIEVHTCBEaXNwbGF5Ci0gICAgICAg
IEVHTGludCBkaXNwbGF5QXR0cmlic1tdID0gewotICAgICAgICAgICAgRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfQU5HTEUsIEdldFBhcmFtKCkuZ2V0UmVuZGVyZXIoKSwKLSAgICAgICAgICAgIEVH
TF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NQUpPUl9BTkdMRSwgR2V0UGFyYW0oKS5lZ2xQ
YXJhbWV0ZXJzLm1ham9yVmVyc2lvbiwKLSAgICAgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9N
QVhfVkVSU0lPTl9NQUpPUl9BTkdMRSwgR2V0UGFyYW0oKS5lZ2xQYXJhbWV0ZXJzLm1ham9yVmVy
c2lvbiwKLSAgICAgICAgICAgIEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0FOR0xFLAot
ICAgICAgICAgICAgdXNlUHJlc2VudFBhdGhGYXN0ID8gRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5U
X1BBVEhfRkFTVF9BTkdMRQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRUdMX0VY
UEVSSU1FTlRBTF9QUkVTRU5UX1BBVEhfQ09QWV9BTkdMRSwKLSAgICAgICAgICAgIEVHTF9OT05F
fTsKLSAgICAgICAgbURpc3BsYXkgPQotICAgICAgICAgICAgZWdsR2V0UGxhdGZvcm1EaXNwbGF5
RVhUKEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSwgRUdMX0RFRkFVTFRfRElTUExBWSwgZGlzcGxh
eUF0dHJpYnMpOwotICAgICAgICBBU1NFUlRfVFJVRShFR0xfTk9fRElTUExBWSAhPSBtRGlzcGxh
eSk7Ci0gICAgICAgIEFTU0VSVF9FR0xfVFJVRShlZ2xJbml0aWFsaXplKG1EaXNwbGF5LCBOVUxM
LCBOVUxMKSk7Ci0KLSAgICAgICAgLy8gQ2hvb3NlIHRoZSBFR0wgY29uZmlnCi0gICAgICAgIEVH
TGludCBudW1Db25maWdzOwotICAgICAgICBFR0xpbnQgY29uZmlnQXR0cmlic1tdID0ge0VHTF9S
RURfU0laRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9HUkVFTl9TSVpFLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMX0JMVUVfU0laRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9BTFBIQV9TSVpFLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbGllbnRWZXJzaW9uID09IDMgPyBFR0xfT1BFTkdMX0VTM19CSVQgOiBFR0xfT1BFTkdM
X0VTMl9CSVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX1NVUkZBQ0Vf
VFlQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfUEJVRkZFUl9CSVQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX05PTkV9OwotICAgICAgICBB
U1NFUlRfRUdMX1RSVUUoZWdsQ2hvb3NlQ29uZmlnKG1EaXNwbGF5LCBjb25maWdBdHRyaWJzLCAm
bUNvbmZpZywgMSwgJm51bUNvbmZpZ3MpKTsKLSAgICAgICAgQVNTRVJUX0VRKDEsIG51bUNvbmZp
Z3MpOwotCi0gICAgICAgIC8vIFNldCB1cCB0aGUgRUdMIGNvbnRleHQKLSAgICAgICAgRUdMaW50
IGNvbnRleHRBdHRyaWJzW10gPSB7RUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIGNsaWVudFZl
cnNpb24sIEVHTF9OT05FfTsKLSAgICAgICAgbUNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1E
aXNwbGF5LCBtQ29uZmlnLCBOVUxMLCBjb250ZXh0QXR0cmlicyk7Ci0gICAgICAgIEFTU0VSVF9U
UlVFKEVHTF9OT19DT05URVhUICE9IG1Db250ZXh0KTsKLSAgICB9Ci0KLSAgICB2b2lkIGNyZWF0
ZVdpbmRvd1N1cmZhY2UoKQotICAgIHsKLSAgICAgICAgbVN1cmZhY2UgPSBlZ2xDcmVhdGVXaW5k
b3dTdXJmYWNlKG1EaXNwbGF5LCBtQ29uZmlnLCBtT1NXaW5kb3ctPmdldE5hdGl2ZVdpbmRvdygp
LCBudWxscHRyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVm
ZmVyU3VyZmFjZSgpCi0gICAgewotICAgICAgICBFR0xBdHRyaWIgZGV2aWNlICAgICAgPSAwOwot
ICAgICAgICBFR0xBdHRyaWIgYW5nbGVEZXZpY2UgPSAwOwotCi0gICAgICAgIFBGTkVHTFFVRVJZ
RElTUExBWUFUVFJJQkVYVFBST0MgcXVlcnlEaXNwbGF5QXR0cmliRVhUOwotICAgICAgICBQRk5F
R0xRVUVSWURFVklDRUFUVFJJQkVYVFBST0MgcXVlcnlEZXZpY2VBdHRyaWJFWFQ7Ci0KLSAgICAg
ICAgY29uc3QgY2hhciAqZXh0ZW5zaW9uU3RyaW5nID0KLSAgICAgICAgICAgIHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIgKj4oZWdsUXVlcnlTdHJpbmcobURpc3BsYXksIEVHTF9FWFRFTlNJT05TKSk7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKHN0cnN0cihleHRlbnNpb25TdHJpbmcsICJFR0xfRVhUX2Rl
dmljZV9xdWVyeSIpKTsKLQotICAgICAgICBxdWVyeURpc3BsYXlBdHRyaWJFWFQgPQotICAgICAg
ICAgICAgKFBGTkVHTFFVRVJZRElTUExBWUFUVFJJQkVYVFBST0MpZWdsR2V0UHJvY0FkZHJlc3Mo
ImVnbFF1ZXJ5RGlzcGxheUF0dHJpYkVYVCIpOwotICAgICAgICBxdWVyeURldmljZUF0dHJpYkVY
VCA9Ci0gICAgICAgICAgICAoUEZORUdMUVVFUllERVZJQ0VBVFRSSUJFWFRQUk9DKWVnbEdldFBy
b2NBZGRyZXNzKCJlZ2xRdWVyeURldmljZUF0dHJpYkVYVCIpOwotICAgICAgICBBU1NFUlRfTkUo
bnVsbHB0ciwgcXVlcnlEaXNwbGF5QXR0cmliRVhUKTsKLSAgICAgICAgQVNTRVJUX05FKG51bGxw
dHIsIHF1ZXJ5RGV2aWNlQXR0cmliRVhUKTsKLQotICAgICAgICBBU1NFUlRfRUdMX1RSVUUocXVl
cnlEaXNwbGF5QXR0cmliRVhUKG1EaXNwbGF5LCBFR0xfREVWSUNFX0VYVCwgJmFuZ2xlRGV2aWNl
KSk7Ci0gICAgICAgIEFTU0VSVF9FR0xfVFJVRShxdWVyeURldmljZUF0dHJpYkVYVChyZWludGVy
cHJldF9jYXN0PEVHTERldmljZUVYVD4oYW5nbGVEZXZpY2UpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0QzRDExX0RFVklDRV9BTkdMRSwgJmRldmlj
ZSkpOwotICAgICAgICBJRDNEMTFEZXZpY2UgKmQzZDExRGV2aWNlID0gcmVpbnRlcnByZXRfY2Fz
dDxJRDNEMTFEZXZpY2UgKj4oZGV2aWNlKTsKLQotICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVT
QyB0ZXh0dXJlRGVzYyA9IHswfTsKLSAgICAgICAgdGV4dHVyZURlc2MuV2lkdGggICAgICAgICAg
ICAgICAgPSBtV2luZG93V2lkdGg7Ci0gICAgICAgIHRleHR1cmVEZXNjLkhlaWdodCAgICAgICAg
ICAgICAgID0gbVdpbmRvd1dpZHRoOwotICAgICAgICB0ZXh0dXJlRGVzYy5Gb3JtYXQgICAgICAg
ICAgICAgICA9IERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNOwotICAgICAgICB0ZXh0dXJlRGVz
Yy5NaXBMZXZlbHMgICAgICAgICAgICA9IDE7Ci0gICAgICAgIHRleHR1cmVEZXNjLkFycmF5U2l6
ZSAgICAgICAgICAgID0gMTsKLSAgICAgICAgdGV4dHVyZURlc2MuU2FtcGxlRGVzYy5Db3VudCAg
ICAgPSAxOwotICAgICAgICB0ZXh0dXJlRGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgICA9IDA7Ci0g
ICAgICAgIHRleHR1cmVEZXNjLlVzYWdlICAgICAgICAgICAgICAgID0gRDNEMTFfVVNBR0VfREVG
QVVMVDsKLSAgICAgICAgdGV4dHVyZURlc2MuQmluZEZsYWdzICAgICAgICAgICAgPSBEM0QxMV9C
SU5EX1JFTkRFUl9UQVJHRVQgfCBEM0QxMV9CSU5EX1NIQURFUl9SRVNPVVJDRTsKLSAgICAgICAg
dGV4dHVyZURlc2MuQ1BVQWNjZXNzRmxhZ3MgICAgICAgPSAwOwotICAgICAgICB0ZXh0dXJlRGVz
Yy5NaXNjRmxhZ3MgICAgICAgICAgICA9IEQzRDExX1JFU09VUkNFX01JU0NfU0hBUkVEOwotCi0g
ICAgICAgIEFTU0VSVF9UUlVFKFNVQ0NFRURFRCgKLSAgICAgICAgICAgIGQzZDExRGV2aWNlLT5D
cmVhdGVUZXh0dXJlMkQoJnRleHR1cmVEZXNjLCBudWxscHRyLCAmbU9mZnNjcmVlblN1cmZhY2VE
M0QxMVRleHR1cmUpKSk7Ci0KLSAgICAgICAgSURYR0lSZXNvdXJjZSAqZHhnaVJlc291cmNlID0K
LSAgICAgICAgICAgIER5bmFtaWNDYXN0Q29tT2JqZWN0PElEWEdJUmVzb3VyY2U+KG1PZmZzY3Jl
ZW5TdXJmYWNlRDNEMTFUZXh0dXJlKTsKLSAgICAgICAgQVNTRVJUX05FKG51bGxwdHIsIGR4Z2lS
ZXNvdXJjZSk7Ci0KLSAgICAgICAgSEFORExFIHNoYXJlZEhhbmRsZSA9IDA7Ci0gICAgICAgIEFT
U0VSVF9UUlVFKFNVQ0NFRURFRChkeGdpUmVzb3VyY2UtPkdldFNoYXJlZEhhbmRsZSgmc2hhcmVk
SGFuZGxlKSkpOwotICAgICAgICBTYWZlUmVsZWFzZShkeGdpUmVzb3VyY2UpOwotCi0gICAgICAg
IEVHTGludCBwQnVmZmVyQXR0cmlidXRlc1tdID0ge0VHTF9XSURUSCwgICAgICAgICAgbVdpbmRv
d1dpZHRoLCAgICAgICBFR0xfSEVJR0hULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtV2luZG93V2lkdGgsICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgRUdMX1RFWFRV
UkVfMkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9URVhUVVJF
X0ZPUk1BVCwgRUdMX1RFWFRVUkVfUkdCQSwgICBFR0xfTk9ORX07Ci0KLSAgICAgICAgbVN1cmZh
Y2UgPSBlZ2xDcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihtRGlzcGxheSwgRUdMX0QzRF9U
RVhUVVJFXzJEX1NIQVJFX0hBTkRMRV9BTkdMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWRIYW5kbGUsIG1Db25maWcsIHBCdWZmZXJB
dHRyaWJ1dGVzKTsKLSAgICAgICAgQVNTRVJUX1RSVUUoRUdMX05PX1NVUkZBQ0UgIT0gbVN1cmZh
Y2UpOwotICAgIH0KLQotICAgIHZvaWQgbWFrZUN1cnJlbnQoKSB7IEFTU0VSVF9FR0xfVFJVRShl
Z2xNYWtlQ3VycmVudChtRGlzcGxheSwgbVN1cmZhY2UsIG1TdXJmYWNlLCBtQ29udGV4dCkpOyB9
Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFNhZmVSZWxl
YXNlKG1PZmZzY3JlZW5TdXJmYWNlRDNEMTFUZXh0dXJlKTsKLQotICAgICAgICBpZiAobURpc3Bs
YXkgIT0gRUdMX05PX0RJU1BMQVkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVnbE1ha2VDdXJy
ZW50KG1EaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19DT05U
RVhUKTsKLQotICAgICAgICAgICAgaWYgKG1TdXJmYWNlICE9IEVHTF9OT19TVVJGQUNFKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKG1EaXNwbGF5LCBt
U3VyZmFjZSk7Ci0gICAgICAgICAgICAgICAgbVN1cmZhY2UgPSBFR0xfTk9fU1VSRkFDRTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG1Db250ZXh0ICE9IEVHTF9OT19DT05URVhU
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KG1EaXNw
bGF5LCBtQ29udGV4dCk7Ci0gICAgICAgICAgICAgICAgbUNvbnRleHQgPSBFR0xfTk9fQ09OVEVY
VDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZWdsVGVybWluYXRlKG1EaXNwbGF5KTsK
LSAgICAgICAgICAgIG1EaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBtT1NXaW5kb3ctPmRlc3Ryb3koKTsKLSAgICAgICAgU2FmZURlbGV0ZShtT1NXaW5kb3cp
OwotICAgIH0KLQotICAgIHZvaWQgZHJhd1F1YWRVc2luZ0dMKCkKLSAgICB7Ci0gICAgICAgIEdM
dWludCBtMkRQcm9ncmFtOwotICAgICAgICBHTGludCBtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9u
OwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAg
ICAgICAgICBTSEFERVJfU09VUkNFKHByZWNpc2lvbiBoaWdocCBmbG9hdDsgYXR0cmlidXRlIHZl
YzQgcG9zaXRpb247IHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24ueHksIDAu
MCwgMS4wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleGNvb3JkID0gKHBvc2l0
aW9uLnh5ICogMC41KSArIDAuNTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7Ci0KLSAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UyRCA9Ci0gICAgICAg
ICAgICBTSEFERVJfU09VUkNFKHByZWNpc2lvbiBoaWdocCBmbG9hdDsgdW5pZm9ybSBzYW1wbGVy
MkQgdGV4OyB2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICBtMkRQcm9ncmFtICAg
ICAgICAgICAgICAgID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVu
dFNoYWRlclNvdXJjZTJEKTsKLSAgICAgICAgbVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiA9IGds
R2V0VW5pZm9ybUxvY2F0aW9uKG0yRFByb2dyYW0sICJ0ZXgiKTsKLQotICAgICAgICB1aW50OF90
IHRleHR1cmVJbml0RGF0YVsxNl0gPSB7Ci0gICAgICAgICAgICAyNTUsIDAsICAgMCwgICAyNTUs
ICAvLyBSZWQKLSAgICAgICAgICAgIDAsICAgMjU1LCAwLCAgIDI1NSwgIC8vIEdyZWVuCi0gICAg
ICAgICAgICAwLCAgIDAsICAgMjU1LCAyNTUsICAvLyBCbHVlCi0gICAgICAgICAgICAyNTUsIDI1
NSwgMCwgICAyNTUgICAvLyBSZWQgKyBHcmVlbgotICAgICAgICB9OwotCi0gICAgICAgIC8vIENy
ZWF0ZSBhIHNpbXBsZSBSR0JBIHRleHR1cmUKLSAgICAgICAgR0x1aW50IHRleCA9IDA7Ci0gICAg
ICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleCk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgdGV4KTsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdM
X1JHQkEsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAg
ICAgICAgICB0ZXh0dXJlSW5pdERhdGEpOwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICAgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVB
UkVTVCk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIC8vIERyYXcg
YSBxdWFkIHVzaW5nIHRoZSB0ZXh0dXJlCi0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVS
X0JJVCk7Ci0gICAgICAgIGdsVXNlUHJvZ3JhbShtMkRQcm9ncmFtKTsKLSAgICAgICAgZ2xVbmlm
b3JtMWkobVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiwgMCk7Ci0KLSAgICAgICAgR0xpbnQgcG9z
aXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obTJEUHJvZ3JhbSwgInBvc2l0aW9u
Iik7Ci0gICAgICAgIGdsVXNlUHJvZ3JhbShtMkRQcm9ncmFtKTsKLSAgICAgICAgY29uc3QgR0xm
bG9hdCB2ZXJ0aWNlc1tdID0KLSAgICAgICAgewotICAgICAgICAgICAgLTEuMGYsICAxLjBmLCAw
LjVmLAotICAgICAgICAgICAgLTEuMGYsIC0xLjBmLCAwLjVmLAotICAgICAgICAgICAgIDEuMGYs
IC0xLjBmLCAwLjVmLAotICAgICAgICAgICAgLTEuMGYsICAxLjBmLCAwLjVmLAotICAgICAgICAg
ICAgIDEuMGYsIC0xLjBmLCAwLjVmLAotICAgICAgICAgICAgIDEuMGYsICAxLjBmLCAwLjVmLAot
ICAgICAgICB9OwotCi0gICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0
aW9uLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHZlcnRpY2VzKTsKLSAgICAgICAgZ2xFbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKLQotICAgICAgICBnbERyYXdB
cnJheXMoR0xfVFJJQU5HTEVTLCAwLCA2KTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
Ci0KLSAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG0yRFByb2dyYW0pOwotICAgIH0KLQotICAgIHZv
aWQgY2hlY2tQaXhlbHNVc2luZ0dMKCkKLSAgICB7Ci0gICAgICAgIC8vIE5vdGUgdGhhdCB0aGUg
dGV4dHVyZSBpcyBpbiBCR1JBIGZvcm1hdAotICAgICAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwg
MjU1LCAwLCAwLCAyNTUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWQK
LSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKG1XaW5kb3dXaWR0aCAtIDEsIDAsIDAsIDI1NSwgMCwg
MjU1KTsgICAgICAgICAgICAgICAgICAgLy8gR3JlZW4KLSAgICAgICAgRVhQRUNUX1BJWEVMX0VR
KDAsIG1XaW5kb3dXaWR0aCAtIDEsIDAsIDAsIDI1NSwgMjU1KTsgICAgICAgICAgICAgICAgICAg
Ly8gQmx1ZQotICAgICAgICBFWFBFQ1RfUElYRUxfRVEobVdpbmRvd1dpZHRoIC0gMSwgbVdpbmRv
d1dpZHRoIC0gMSwgMjU1LCAyNTUsIDAsIDI1NSk7ICAvLyBSZWQgKyBncmVlbgotICAgIH0KLQot
ICAgIHZvaWQgY2hlY2tQaXhlbHNVc2luZ0QzRChib29sIHVzaW5nUHJlc2VudFBhdGhGYXN0KQot
ICAgIHsKLSAgICAgICAgQVNTRVJUX05FKG51bGxwdHIsIG1PZmZzY3JlZW5TdXJmYWNlRDNEMTFU
ZXh0dXJlKTsKLQotICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyB0ZXh0dXJlRGVzYyA9IHsw
fTsKLSAgICAgICAgSUQzRDExRGV2aWNlICpkZXZpY2U7Ci0gICAgICAgIElEM0QxMURldmljZUNv
bnRleHQgKmNvbnRleHQ7Ci0gICAgICAgIG1PZmZzY3JlZW5TdXJmYWNlRDNEMTFUZXh0dXJlLT5H
ZXREZXNjKCZ0ZXh0dXJlRGVzYyk7Ci0gICAgICAgIG1PZmZzY3JlZW5TdXJmYWNlRDNEMTFUZXh0
dXJlLT5HZXREZXZpY2UoJmRldmljZSk7Ci0gICAgICAgIGRldmljZS0+R2V0SW1tZWRpYXRlQ29u
dGV4dCgmY29udGV4dCk7Ci0gICAgICAgIEFTU0VSVF9ORShudWxscHRyLCBkZXZpY2UpOwotICAg
ICAgICBBU1NFUlRfTkUobnVsbHB0ciwgY29udGV4dCk7Ci0KLSAgICAgICAgdGV4dHVyZURlc2Mu
Q1BVQWNjZXNzRmxhZ3MgID0gRDNEMTFfQ1BVX0FDQ0VTU19SRUFEOwotICAgICAgICB0ZXh0dXJl
RGVzYy5Vc2FnZSAgICAgICAgICAgPSBEM0QxMV9VU0FHRV9TVEFHSU5HOwotICAgICAgICB0ZXh0
dXJlRGVzYy5CaW5kRmxhZ3MgICAgICAgPSAwOwotICAgICAgICB0ZXh0dXJlRGVzYy5NaXNjRmxh
Z3MgICAgICAgPSAwOwotICAgICAgICBJRDNEMTFUZXh0dXJlMkQgKmNwdVRleHR1cmUgPSBudWxs
cHRyOwotICAgICAgICBBU1NFUlRfVFJVRShTVUNDRUVERUQoZGV2aWNlLT5DcmVhdGVUZXh0dXJl
MkQoJnRleHR1cmVEZXNjLCBudWxscHRyLCAmY3B1VGV4dHVyZSkpKTsKLQotICAgICAgICBjb250
ZXh0LT5Db3B5UmVzb3VyY2UoY3B1VGV4dHVyZSwgbU9mZnNjcmVlblN1cmZhY2VEM0QxMVRleHR1
cmUpOwotCi0gICAgICAgIEQzRDExX01BUFBFRF9TVUJSRVNPVVJDRSBtYXBwZWRTdWJyZXNvdXJj
ZTsKLSAgICAgICAgY29udGV4dC0+TWFwKGNwdVRleHR1cmUsIDAsIEQzRDExX01BUF9SRUFELCAw
LCAmbWFwcGVkU3VicmVzb3VyY2UpOwotICAgICAgICBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8VUlO
VD4obVdpbmRvd1dpZHRoICogNCksIG1hcHBlZFN1YnJlc291cmNlLlJvd1BpdGNoKTsKLSAgICAg
ICAgQVNTRVJUX0VRKHN0YXRpY19jYXN0PFVJTlQ+KG1XaW5kb3dXaWR0aCAqIG1XaW5kb3dXaWR0
aCAqIDQpLCBtYXBwZWRTdWJyZXNvdXJjZS5EZXB0aFBpdGNoKTsKLQotICAgICAgICBhbmdsZTo6
R0xDb2xvciAqYnl0ZURhdGEgPSByZWludGVycHJldF9jYXN0PGFuZ2xlOjpHTENvbG9yICo+KG1h
cHBlZFN1YnJlc291cmNlLnBEYXRhKTsKLQotICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIHRleHR1
cmUgaXMgaW4gQkdSQSBmb3JtYXQsIGFsdGhvdWdoIHRoZSBHTENvbG9yIHN0cnVjdCBpcyBSR0JB
Ci0gICAgICAgIEdMQ29sb3IgZXhwZWN0ZWRUb3BMZWZ0UGl4ZWwgICAgID0gR0xDb2xvcigwLCAg
IDAsIDI1NSwgMjU1KTsgIC8vIFJlZAotICAgICAgICBHTENvbG9yIGV4cGVjdGVkVG9wUmlnaHRQ
aXhlbCAgICA9IEdMQ29sb3IoMCwgMjU1LCAgIDAsIDI1NSk7ICAvLyBHcmVlbgotICAgICAgICBH
TENvbG9yIGV4cGVjdGVkQm90dG9tTGVmdFBpeGVsICA9IEdMQ29sb3IoMjU1LCAwLCAgIDAsIDI1
NSk7ICAvLyBCbHVlCi0gICAgICAgIEdMQ29sb3IgZXhwZWN0ZWRCb3R0b21SaWdodFBpeGVsID0g
R0xDb2xvcigwLCAyNTUsIDI1NSwgMjU1KTsgIC8vIFJlZCArIEdyZWVuCi0KLSAgICAgICAgaWYg
KHVzaW5nUHJlc2VudFBhdGhGYXN0KQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBJbnZlcnQg
dGhlIGV4cGVjdGVkIHZhbHVlcwotICAgICAgICAgICAgR0xDb2xvciB0ZW1wVG9wTGVmdCAgICAg
ID0gZXhwZWN0ZWRUb3BMZWZ0UGl4ZWw7Ci0gICAgICAgICAgICBHTENvbG9yIHRlbXBUb3BSaWdo
dCAgICAgPSBleHBlY3RlZFRvcFJpZ2h0UGl4ZWw7Ci0gICAgICAgICAgICBleHBlY3RlZFRvcExl
ZnRQaXhlbCAgICAgPSBleHBlY3RlZEJvdHRvbUxlZnRQaXhlbDsKLSAgICAgICAgICAgIGV4cGVj
dGVkVG9wUmlnaHRQaXhlbCAgICA9IGV4cGVjdGVkQm90dG9tUmlnaHRQaXhlbDsKLSAgICAgICAg
ICAgIGV4cGVjdGVkQm90dG9tTGVmdFBpeGVsICA9IHRlbXBUb3BMZWZ0OwotICAgICAgICAgICAg
ZXhwZWN0ZWRCb3R0b21SaWdodFBpeGVsID0gdGVtcFRvcFJpZ2h0OwotICAgICAgICB9Ci0KLSAg
ICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkVG9wTGVmdFBpeGVsLCBieXRlRGF0YVswXSk7Ci0gICAg
ICAgIEVYUEVDVF9FUShleHBlY3RlZFRvcFJpZ2h0UGl4ZWwsIGJ5dGVEYXRhWyhtV2luZG93V2lk
dGggLSAxKV0pOwotICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRCb3R0b21MZWZ0UGl4ZWwsIGJ5
dGVEYXRhWyhtV2luZG93V2lkdGggLSAxKSAqIG1XaW5kb3dXaWR0aF0pOwotICAgICAgICBFWFBF
Q1RfRVEoZXhwZWN0ZWRCb3R0b21SaWdodFBpeGVsLAotICAgICAgICAgICAgICAgICAgYnl0ZURh
dGFbKG1XaW5kb3dXaWR0aCAtIDEpICogbVdpbmRvd1dpZHRoICsgKG1XaW5kb3dXaWR0aCAtIDEp
XSk7Ci0KLSAgICAgICAgY29udGV4dC0+VW5tYXAoY3B1VGV4dHVyZSwgMCk7Ci0gICAgICAgIFNh
ZmVSZWxlYXNlKGNwdVRleHR1cmUpOwotICAgICAgICBTYWZlUmVsZWFzZShkZXZpY2UpOwotICAg
ICAgICBTYWZlUmVsZWFzZShjb250ZXh0KTsKLSAgICB9Ci0KLSAgICBFR0xEaXNwbGF5IG1EaXNw
bGF5OwotICAgIEVHTENvbnRleHQgbUNvbnRleHQ7Ci0gICAgRUdMU3VyZmFjZSBtU3VyZmFjZTsK
LSAgICBJRDNEMTFUZXh0dXJlMkQgKm1PZmZzY3JlZW5TdXJmYWNlRDNEMTFUZXh0dXJlOwotICAg
IEVHTENvbmZpZyBtQ29uZmlnOwotICAgIE9TV2luZG93ICptT1NXaW5kb3c7Ci0gICAgR0xpbnQg
bVdpbmRvd1dpZHRoOwotfTsKLQotLy8gVGVzdCB0aGF0IHJlbmRlcmluZyBiYXNpYyBjb250ZW50
IG9udG8gYSB3aW5kb3cgc3VyZmFjZSB3aGVuIHByZXNlbnQgcGF0aCBmYXN0Ci0vLyBpcyBlbmFi
bGVkIHdvcmtzIGFzIGV4cGVjdGVkCi1URVNUX1AoRUdMUHJlc2VudFBhdGhEM0QxMSwgV2luZG93
UHJlc2VudFBhdGhGYXN0KQotewotICAgIGluaXRpYWxpemVFR0wodHJ1ZSk7Ci0gICAgY3JlYXRl
V2luZG93U3VyZmFjZSgpOwotICAgIG1ha2VDdXJyZW50KCk7Ci0KLSAgICBkcmF3UXVhZFVzaW5n
R0woKTsKLQotICAgIGNoZWNrUGl4ZWxzVXNpbmdHTCgpOwotfQotCi0vLyBUZXN0IHRoYXQgcmVu
ZGVyaW5nIGJhc2ljIGNvbnRlbnQgb250byBhIGNsaWVudCBidWZmZXIgc3VyZmFjZSB3aGVuIHBy
ZXNlbnQgcGF0aCBmYXN0Ci0vLyB3b3JrcyBhcyBleHBlY3RlZCwgYW5kIGlzIGFsc28gb3JpZW50
ZWQgdGhlIGNvcnJlY3Qgd2F5IGFyb3VuZAotVEVTVF9QKEVHTFByZXNlbnRQYXRoRDNEMTEsIENs
aWVudEJ1ZmZlclByZXNlbnRQYXRoRmFzdCkKLXsKLSAgICBpbml0aWFsaXplRUdMKHRydWUpOwot
ICAgIGNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyU3VyZmFjZSgpOwotICAgIG1ha2VDdXJy
ZW50KCk7Ci0KLSAgICBkcmF3UXVhZFVzaW5nR0woKTsKLQotICAgIGNoZWNrUGl4ZWxzVXNpbmdH
TCgpOwotICAgIGNoZWNrUGl4ZWxzVXNpbmdEM0QodHJ1ZSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBy
ZW5kZXJpbmcgYmFzaWMgY29udGVudCBvbnRvIGEgd2luZG93IHN1cmZhY2Ugd2hlbiBwcmVzZW50
IHBhdGggZmFzdAotLy8gaXMgZGlzYWJsZWQgd29ya3MgYXMgZXhwZWN0ZWQKLVRFU1RfUChFR0xQ
cmVzZW50UGF0aEQzRDExLCBXaW5kb3dQcmVzZW50UGF0aENvcHkpCi17Ci0gICAgaW5pdGlhbGl6
ZUVHTChmYWxzZSk7Ci0gICAgY3JlYXRlV2luZG93U3VyZmFjZSgpOwotICAgIG1ha2VDdXJyZW50
KCk7Ci0KLSAgICBkcmF3UXVhZFVzaW5nR0woKTsKLQotICAgIGNoZWNrUGl4ZWxzVXNpbmdHTCgp
OwotfQotCi0vLyBUZXN0IHRoYXQgcmVuZGVyaW5nIGJhc2ljIGNvbnRlbnQgb250byBhIGNsaWVu
dCBidWZmZXIgc3VyZmFjZSB3aGVuIHByZXNlbnQgcGF0aAotLy8gZmFzdCBpcyBkaXNhYmxlZCB3
b3JrcyBhcyBleHBlY3RlZCwgYW5kIGlzIGFsc28gb3JpZW50ZWQgdGhlIGNvcnJlY3Qgd2F5IGFy
b3VuZAotVEVTVF9QKEVHTFByZXNlbnRQYXRoRDNEMTEsIENsaWVudEJ1ZmZlclByZXNlbnRQYXRo
Q29weSkKLXsKLSAgICBpbml0aWFsaXplRUdMKGZhbHNlKTsKLSAgICBjcmVhdGVQYnVmZmVyRnJv
bUNsaWVudEJ1ZmZlclN1cmZhY2UoKTsKLSAgICBtYWtlQ3VycmVudCgpOwotCi0gICAgZHJhd1F1
YWRVc2luZ0dMKCk7Ci0KLSAgICBjaGVja1BpeGVsc1VzaW5nR0woKTsKLSAgICBjaGVja1BpeGVs
c1VzaW5nRDNEKGZhbHNlKTsKLX0KLQotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChFR0xQcmVzZW50
UGF0aEQzRDExLCBFUzJfRDNEMTEoKSwgRVMyX0QzRDExX0ZMOV8zKCkpOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9lZ2xfdGVzdHMvRUdMUXVlcnlDb250ZXh0VGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFF1ZXJ5Q29udGV4dFRlc3QuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjRhNDNmMjNkMDYzMTk2YzNkYzY2Yzk2MDU0ODZi
NTJiOTExM2RkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMUXVlcnlDb250
ZXh0VGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotLy8KLS8vIENvcHly
aWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8v
Ci0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaW5jbHVkZSA8RUdML2VnbC5oPgotI2lu
Y2x1ZGUgPEVHTC9lZ2xleHQuaD4KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9j
b25maWdzLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotY2xhc3MgRUdMUXVlcnlDb250
ZXh0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFBsYXRmb3JtUGFyYW1ldGVy
cz4KLXsKLSAgcHVibGljOgotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgaW50IGNsaWVudFZlcnNpb24gPSBHZXRQYXJhbSgpLm1ham9yVmVyc2lvbjsKLQotICAgICAg
ICBQRk5FR0xHRVRQTEFURk9STURJU1BMQVlFWFRQUk9DIGVnbEdldFBsYXRmb3JtRGlzcGxheUVY
VCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMR0VUUExBVEZPUk1ESVNQTEFZRVhUUFJPQz4oZWds
R2V0UHJvY0FkZHJlc3MoImVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCIpKTsKLSAgICAgICAgRVhQ
RUNUX1RSVUUoZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUICE9IE5VTEwpOwotCi0gICAgICAgIEVH
TGludCBkaXNwYXR0cnNbXSA9Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEVHTF9QTEFURk9STV9B
TkdMRV9UWVBFX0FOR0xFLCBHZXRQYXJhbSgpLmdldFJlbmRlcmVyKCksCi0gICAgICAgICAgICBF
R0xfTk9ORQotICAgICAgICB9OwotICAgICAgICBtRGlzcGxheSA9IGVnbEdldFBsYXRmb3JtRGlz
cGxheUVYVCgKLSAgICAgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSwgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkICo+KEVHTF9ERUZBVUxUX0RJU1BMQVkpLCBkaXNwYXR0cnMpOwotICAgICAg
ICBFWFBFQ1RfVFJVRShtRGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSk7Ci0gICAgICAgIEVYUEVD
VF9UUlVFKGVnbEluaXRpYWxpemUobURpc3BsYXksIE5VTEwsIE5VTEwpICE9IEVHTF9GQUxTRSk7
Ci0KLSAgICAgICAgRUdMaW50IG5jZmc7Ci0gICAgICAgIEVHTGludCBjZmdhdHRyc1tdID0KLSAg
ICAgICAgewotICAgICAgICAgICAgRUdMX1JFRF9TSVpFLCA4LAotICAgICAgICAgICAgRUdMX0dS
RUVOX1NJWkUsIDgsCi0gICAgICAgICAgICBFR0xfQkxVRV9TSVpFLCA4LAotICAgICAgICAgICAg
RUdMX1JFTkRFUkFCTEVfVFlQRSwgY2xpZW50VmVyc2lvbiA9PSAzID8gRUdMX09QRU5HTF9FUzNf
QklUIDogRUdMX09QRU5HTF9FUzJfQklULAotICAgICAgICAgICAgRUdMX1NVUkZBQ0VfVFlQRSwg
RUdMX1BCVUZGRVJfQklULAotICAgICAgICAgICAgRUdMX05PTkUKLSAgICAgICAgfTsKLSAgICAg
ICAgRVhQRUNUX1RSVUUoZWdsQ2hvb3NlQ29uZmlnKG1EaXNwbGF5LCBjZmdhdHRycywgJm1Db25m
aWcsIDEsICZuY2ZnKSAhPSBFR0xfRkFMU0UpOwotICAgICAgICBFWFBFQ1RfVFJVRShuY2ZnID09
IDEpOwotCi0gICAgICAgIEVHTGludCBjdHhhdHRyc1tdID0KLSAgICAgICAgewotICAgICAgICAg
ICAgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIGNsaWVudFZlcnNpb24sCi0gICAgICAgICAg
ICBFR0xfTk9ORQotICAgICAgICB9OwotICAgICAgICBtQ29udGV4dCA9IGVnbENyZWF0ZUNvbnRl
eHQobURpc3BsYXksIG1Db25maWcsIE5VTEwsIGN0eGF0dHJzKTsKLSAgICAgICAgRVhQRUNUX1RS
VUUobUNvbnRleHQgIT0gRUdMX05PX0NPTlRFWFQpOwotCi0gICAgICAgIEVHTGludCBzdXJmYXR0
cnNbXSA9Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEVHTF9XSURUSCwgMTYsCi0gICAgICAgICAg
ICBFR0xfSEVJR0hULCAxNiwKLSAgICAgICAgICAgIEVHTF9OT05FCi0gICAgICAgIH07Ci0gICAg
ICAgIG1TdXJmYWNlID0gZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2UobURpc3BsYXksIG1Db25maWcs
IHN1cmZhdHRycyk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG1TdXJmYWNlICE9IEVHTF9OT19TVVJG
QUNFKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZB
Q0UsIEVHTF9OT19DT05URVhUKTsKLSAgICAgICAgZWdsRGVzdHJveUNvbnRleHQobURpc3BsYXks
IG1Db250ZXh0KTsKLSAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UobURpc3BsYXksIG1TdXJmYWNl
KTsKLSAgICAgICAgZWdsVGVybWluYXRlKG1EaXNwbGF5KTsKLSAgICB9Ci0KLSAgICBFR0xEaXNw
bGF5IG1EaXNwbGF5OwotICAgIEVHTENvbmZpZyBtQ29uZmlnOwotICAgIEVHTENvbnRleHQgbUNv
bnRleHQ7Ci0gICAgRUdMU3VyZmFjZSBtU3VyZmFjZTsKLX07Ci0KLVRFU1RfUChFR0xRdWVyeUNv
bnRleHRUZXN0LCBHZXRDb25maWdJRCkKLXsKLSAgICBFR0xpbnQgY29uZmlnSWQsIGNvbnRleHRD
b25maWdJZDsKLSAgICBFWFBFQ1RfVFJVRShlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIG1D
b25maWcsIEVHTF9DT05GSUdfSUQsICZjb25maWdJZCkgIT0gRUdMX0ZBTFNFKTsKLSAgICBFWFBF
Q1RfVFJVRShlZ2xRdWVyeUNvbnRleHQobURpc3BsYXksIG1Db250ZXh0LCBFR0xfQ09ORklHX0lE
LCAmY29udGV4dENvbmZpZ0lkKSAhPSBFR0xfRkFMU0UpOwotICAgIEVYUEVDVF9UUlVFKGNvbmZp
Z0lkID09IGNvbnRleHRDb25maWdJZCk7Ci19Ci0KLVRFU1RfUChFR0xRdWVyeUNvbnRleHRUZXN0
LCBHZXRDbGllbnRUeXBlKQotewotICAgIEVHTGludCBjbGllbnRUeXBlOwotICAgIEVYUEVDVF9U
UlVFKGVnbFF1ZXJ5Q29udGV4dChtRGlzcGxheSwgbUNvbnRleHQsIEVHTF9DT05URVhUX0NMSUVO
VF9UWVBFLCAmY2xpZW50VHlwZSkgIT0gRUdMX0ZBTFNFKTsKLSAgICBFWFBFQ1RfVFJVRShjbGll
bnRUeXBlID09IEVHTF9PUEVOR0xfRVNfQVBJKTsKLX0KLQotVEVTVF9QKEVHTFF1ZXJ5Q29udGV4
dFRlc3QsIEdldENsaWVudFZlcnNpb24pCi17Ci0gICAgRUdMaW50IGNsaWVudFZlcnNpb247Ci0g
ICAgRVhQRUNUX1RSVUUoZWdsUXVlcnlDb250ZXh0KG1EaXNwbGF5LCBtQ29udGV4dCwgRUdMX0NP
TlRFWFRfQ0xJRU5UX1ZFUlNJT04sICZjbGllbnRWZXJzaW9uKSAhPSBFR0xfRkFMU0UpOwotICAg
IEVYUEVDVF9UUlVFKGNsaWVudFZlcnNpb24gPT0gR2V0UGFyYW0oKS5tYWpvclZlcnNpb24pOwot
fQotCi1URVNUX1AoRUdMUXVlcnlDb250ZXh0VGVzdCwgR2V0UmVuZGVyQnVmZmVyTm9TdXJmYWNl
KQotewotICAgIEVHTGludCByZW5kZXJCdWZmZXI7Ci0gICAgRVhQRUNUX1RSVUUoZWdsUXVlcnlD
b250ZXh0KG1EaXNwbGF5LCBtQ29udGV4dCwgRUdMX1JFTkRFUl9CVUZGRVIsICZyZW5kZXJCdWZm
ZXIpICE9IEVHTF9GQUxTRSk7Ci0gICAgRVhQRUNUX1RSVUUocmVuZGVyQnVmZmVyID09IEVHTF9O
T05FKTsKLX0KLQotVEVTVF9QKEVHTFF1ZXJ5Q29udGV4dFRlc3QsIEdldFJlbmRlckJ1ZmZlckJv
dW5kU3VyZmFjZSkKLXsKLSAgICBFR0xpbnQgcmVuZGVyQnVmZmVyLCBjb250ZXh0UmVuZGVyQnVm
ZmVyOwotICAgIEVYUEVDVF9UUlVFKGVnbFF1ZXJ5U3VyZmFjZShtRGlzcGxheSwgbVN1cmZhY2Us
IEVHTF9SRU5ERVJfQlVGRkVSLCAmcmVuZGVyQnVmZmVyKSAhPSBFR0xfRkFMU0UpOwotICAgIEVY
UEVDVF9UUlVFKGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBtU3VyZmFjZSwgbVN1cmZhY2UsIG1D
b250ZXh0KSAhPSBFR0xfRkFMU0UpOwotICAgIEVYUEVDVF9UUlVFKGVnbFF1ZXJ5Q29udGV4dCht
RGlzcGxheSwgbUNvbnRleHQsIEVHTF9SRU5ERVJfQlVGRkVSLCAmY29udGV4dFJlbmRlckJ1ZmZl
cikgIT0gRUdMX0ZBTFNFKTsKLSAgICBFWFBFQ1RfVFJVRShyZW5kZXJCdWZmZXIgPT0gY29udGV4
dFJlbmRlckJ1ZmZlcik7Ci19Ci0KLVRFU1RfUChFR0xRdWVyeUNvbnRleHRUZXN0LCBCYWREaXNw
bGF5KQotewotICAgIEVHTGludCB2YWw7Ci0gICAgRVhQRUNUX1RSVUUoZWdsUXVlcnlDb250ZXh0
KEVHTF9OT19ESVNQTEFZLCBtQ29udGV4dCwgRUdMX0NPTlRFWFRfQ0xJRU5UX1RZUEUsICZ2YWwp
ID09IEVHTF9GQUxTRSk7Ci0gICAgRVhQRUNUX1RSVUUoZWdsR2V0RXJyb3IoKSA9PSBFR0xfQkFE
X0RJU1BMQVkpOwotfQotCi1URVNUX1AoRUdMUXVlcnlDb250ZXh0VGVzdCwgTm90SW5pdGlhbGl6
ZWQpCi17Ci0gICAgRUdMaW50IHZhbDsKLSAgICBUZWFyRG93bigpOwotICAgIEVYUEVDVF9UUlVF
KGVnbFF1ZXJ5Q29udGV4dChtRGlzcGxheSwgbUNvbnRleHQsIEVHTF9DT05URVhUX0NMSUVOVF9U
WVBFLCAmdmFsKSA9PSBFR0xfRkFMU0UpOwotICAgIEVYUEVDVF9UUlVFKGVnbEdldEVycm9yKCkg
PT0gRUdMX05PVF9JTklUSUFMSVpFRCk7Ci0KLSAgICBtRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZ
OwotICAgIG1TdXJmYWNlID0gRUdMX05PX1NVUkZBQ0U7Ci0gICAgbUNvbnRleHQgPSBFR0xfTk9f
Q09OVEVYVDsKLX0KLQotVEVTVF9QKEVHTFF1ZXJ5Q29udGV4dFRlc3QsIEJhZENvbnRleHQpCi17
Ci0gICAgRUdMaW50IHZhbDsKLSAgICBFWFBFQ1RfVFJVRShlZ2xRdWVyeUNvbnRleHQobURpc3Bs
YXksIEVHTF9OT19DT05URVhULCBFR0xfQ09OVEVYVF9DTElFTlRfVFlQRSwgJnZhbCkgPT0gRUdM
X0ZBTFNFKTsKLSAgICBFWFBFQ1RfVFJVRShlZ2xHZXRFcnJvcigpID09IEVHTF9CQURfQ09OVEVY
VCk7Ci19Ci0KLVRFU1RfUChFR0xRdWVyeUNvbnRleHRUZXN0LCBCYWRBdHRyaWJ1dGUpCi17Ci0g
ICAgRUdMaW50IHZhbDsKLSAgICBFWFBFQ1RfVFJVRShlZ2xRdWVyeUNvbnRleHQobURpc3BsYXks
IG1Db250ZXh0LCBFR0xfSEVJR0hULCAmdmFsKSA9PSBFR0xfRkFMU0UpOwotICAgIEVYUEVDVF9U
UlVFKGVnbEdldEVycm9yKCkgPT0gRUdMX0JBRF9BVFRSSUJVVEUpOwotfQotCi1BTkdMRV9JTlNU
QU5USUFURV9URVNUKEVHTFF1ZXJ5Q29udGV4dFRlc3QsIEVTMl9EM0Q5KCksIEVTMl9EM0QxMSgp
LCBFUzJfRDNEMTFfRkw5XzMoKSwgRVMyX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMUm9idXN0bmVzc1Rlc3QuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xSb2J1c3RuZXNzVGVz
dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0ODJhN2ZlNTBmYTU4N2FmNTcz
NDgxYWZmNTg5NjYxNzhiMjFkNDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9F
R0xSb2J1c3RuZXNzVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzQgKzAsMCBAQAotLy8K
LS8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KLS8vCi0KLS8vIEVHTFJvYnVzdG5lc3NUZXN0LmNwcDogdGVzdHMgZm9yIEVHTF9FWFRf
Y3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcwotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQot
I2luY2x1ZGUgPEVHTC9lZ2wuaD4KLSNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+Ci0KLSNpbmNsdWRl
ICJPU1dpbmRvdy5oIgotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLXVzaW5n
IG5hbWVzcGFjZSBhbmdsZTsKLQotY2xhc3MgRUdMUm9idXN0bmVzc1Rlc3QgOiBwdWJsaWMgOjp0
ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGFuZ2xlOjpQbGF0Zm9ybVBhcmFtZXRlcnM+Ci17Ci0gIHB1
YmxpYzoKLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1PU1dpbmRv
dyA9IENyZWF0ZU9TV2luZG93KCk7Ci0gICAgICAgIG1PU1dpbmRvdy0+aW5pdGlhbGl6ZSgiRUdM
Um9idXN0bmVzc1Rlc3QiLCA1MDAsIDUwMCk7Ci0gICAgICAgIG1PU1dpbmRvdy0+c2V0VmlzaWJs
ZSh0cnVlKTsKLQotICAgICAgICBhdXRvIGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8UEZORUdMR0VUUExBVEZPUk1ESVNQTEFZRVhUUFJPQz4oCi0gICAgICAgICAg
ICBlZ2xHZXRQcm9jQWRkcmVzcygiZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUIikpOwotCi0gICAg
ICAgIGNvbnN0IGF1dG8gJnBsYXRmb3JtID0gR2V0UGFyYW0oKS5lZ2xQYXJhbWV0ZXJzOwotCi0g
ICAgICAgIHN0ZDo6dmVjdG9yPEVHTGludD4gZGlzcGxheUF0dHJpYnV0ZXM7Ci0gICAgICAgIGRp
c3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSk7
Ci0gICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhwbGF0Zm9ybS5yZW5kZXJlcik7
Ci0gICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVf
TUFYX1ZFUlNJT05fTUFKT1JfQU5HTEUpOwotICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNo
X2JhY2socGxhdGZvcm0ubWFqb3JWZXJzaW9uKTsKLSAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMu
cHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NSU5PUl9BTkdMRSk7Ci0g
ICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhwbGF0Zm9ybS5taW5vclZlcnNpb24p
OwotCi0gICAgICAgIGlmIChwbGF0Zm9ybS5kZXZpY2VUeXBlICE9IEVHTF9ET05UX0NBUkUpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfUExB
VEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEUpOwotICAgICAgICAgICAgZGlzcGxheUF0dHJp
YnV0ZXMucHVzaF9iYWNrKHBsYXRmb3JtLmRldmljZVR5cGUpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9OT05FKTsKLQotICAgICAgICBtRGlz
cGxheSA9IGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVChFR0xfUExBVEZPUk1fQU5HTEVfQU5HTEUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCAqPihtT1NXaW5kb3ctPmdldE5hdGl2ZURpc3BsYXkoKSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkaXNwbGF5QXR0cmlidXRlc1swXSk7
Ci0gICAgICAgIEFTU0VSVF9ORShFR0xfTk9fRElTUExBWSwgbURpc3BsYXkpOwotCi0gICAgICAg
IEFTU0VSVF9UUlVFKGVnbEluaXRpYWxpemUobURpc3BsYXksIG51bGxwdHIsIG51bGxwdHIpID09
IEVHTF9UUlVFKTsKLQotICAgICAgICBjb25zdCBjaGFyICpleHRlbnNpb25zID0gZWdsUXVlcnlT
dHJpbmcobURpc3BsYXksIEVHTF9FWFRFTlNJT05TKTsKLSAgICAgICAgaWYgKHN0cnN0cihleHRl
bnNpb25zLCAiRUdMX0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzIikgPT0gbnVsbHB0cikK
LSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgZHVlIHRv
IG1pc3NpbmcgRUdMX0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzIgotICAgICAgICAgICAg
ICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGludCBuQ29uZmlncyA9IDA7Ci0gICAgICAgIEFTU0VSVF9UUlVFKGVnbEdldENv
bmZpZ3MobURpc3BsYXksIG51bGxwdHIsIDAsICZuQ29uZmlncykgPT0gRUdMX1RSVUUpOwotICAg
ICAgICBBU1NFUlRfTEUoMSwgbkNvbmZpZ3MpOwotCi0gICAgICAgIGludCBuUmV0dXJuZWRDb25m
aWdzID0gMDsKLSAgICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0Q29uZmlncyhtRGlzcGxheSwgJm1D
b25maWcsIDEsICZuUmV0dXJuZWRDb25maWdzKSA9PSBFR0xfVFJVRSk7Ci0gICAgICAgIEFTU0VS
VF9FUSgxLCBuUmV0dXJuZWRDb25maWdzKTsKLQotICAgICAgICBtV2luZG93ID0gZWdsQ3JlYXRl
V2luZG93U3VyZmFjZShtRGlzcGxheSwgbUNvbmZpZywgbU9TV2luZG93LT5nZXROYXRpdmVXaW5k
b3coKSwgbnVsbHB0cik7Ci0gICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgICAg
IG1Jbml0aWFsaXplZCA9IHRydWU7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShtRGlzcGxheSwgbVdpbmRvdyk7
Ci0gICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KG1EaXNwbGF5LCBtQ29udGV4dCk7Ci0gICAgICAg
IGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0Us
IEVHTF9OT19DT05URVhUKTsKLSAgICAgICAgZWdsVGVybWluYXRlKG1EaXNwbGF5KTsKLSAgICAg
ICAgRVhQRUNUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICAgICAgU2FmZURlbGV0ZShtT1NXaW5kb3cp
OwotICAgIH0KLQotICAgIHZvaWQgY3JlYXRlQ29udGV4dChFR0xpbnQgcmVzZXRTdHJhdGVneSkK
LSAgICB7Ci0gICAgICAgIGNvbnN0IEVHTGludCBjb250ZXh0QXR0cmlic1tdID0ge0VHTF9DT05U
RVhUX0NMSUVOVF9WRVJTSU9OLCAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xfQ09OVEVYVF9PUEVOR0xfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZX0VY
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXRTdHJhdGVn
eSwgRUdMX05PTkV9OwotICAgICAgICBtQ29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQobURpc3Bs
YXksIG1Db25maWcsIEVHTF9OT19DT05URVhULCBjb250ZXh0QXR0cmlicyk7Ci0gICAgICAgIEFT
U0VSVF9ORShFR0xfTk9fQ09OVEVYVCwgbUNvbnRleHQpOwotCi0gICAgICAgIGVnbE1ha2VDdXJy
ZW50KG1EaXNwbGF5LCBtV2luZG93LCBtV2luZG93LCBtQ29udGV4dCk7Ci0gICAgICAgIEFTU0VS
VF9FR0xfU1VDQ0VTUygpOwotCi0gICAgICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvblN0cmluZyA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihnbEdldFN0cmluZyhHTF9FWFRFTlNJT05T
KSk7Ci0gICAgICAgIEFTU0VSVF9ORShudWxscHRyLCBzdHJzdHIoZXh0ZW5zaW9uU3RyaW5nLCAi
R0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpKTsKLQotICAgICAgICBtRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUgPQotICAgICAgICAgICAgKFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQU5H
TEVQUk9DKWVnbEdldFByb2NBZGRyZXNzKCJnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIik7
Ci0gICAgICAgIEFTU0VSVF9ORShudWxscHRyLCBtRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUp
OwotICAgIH0KLQotICAgIHZvaWQgZm9yY2VDb250ZXh0UmVzZXQoKQotICAgIHsKLSAgICAgICAg
Ly8gQ2F1c2UgYSBHUFUgcmVzZXQgYnkgZHJhd2luZyAxMDAsMDAwLDAwMCBmdWxsc2NyZWVuIHF1
YWRzCi0gICAgICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0oCi0gICAgICAgICAg
ICAiYXR0cmlidXRlIHZlYzQgcG9zO1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpIHtnbF9Q
b3NpdGlvbiA9IHBvczt9XG4iLAotICAgICAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpIHtnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7
fVxuIik7Ci0gICAgICAgIEFTU0VSVF9ORSgwdSwgcHJvZ3JhbSk7Ci0gICAgICAgIGdsVXNlUHJv
Z3JhbShwcm9ncmFtKTsKLQotICAgICAgICBHTGZsb2F0IHZlcnRpY2VzW10gPSB7Ci0gICAgICAg
ICAgICAtMS4wZiwgLTEuMGYsIDAuMGYsIDEuMGYsIC0xLjBmLCAxLjBmLCAwLjBmLCAxLjBmLAot
ICAgICAgICAgICAgMS4wZiwgIC0xLjBmLCAwLjBmLCAxLjBmLCAxLjBmLCAgMS4wZiwgMC4wZiwg
MS4wZiwKLSAgICAgICAgfTsKLQotICAgICAgICBjb25zdCBpbnQga051bVF1YWRzID0gMTAwMDA7
Ci0gICAgICAgIHN0ZDo6dmVjdG9yPEdMdXNob3J0PiBpbmRpY2VzKDYgKiBrTnVtUXVhZHMpOwot
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwga051bVF1YWRzOyBpKyspCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGluZGljZXNbaSAqIDYgKyAwXSA9IDA7Ci0gICAgICAgICAgICBpbmRp
Y2VzW2kgKiA2ICsgMV0gPSAxOwotICAgICAgICAgICAgaW5kaWNlc1tpICogNiArIDJdID0gMjsK
LSAgICAgICAgICAgIGluZGljZXNbaSAqIDYgKyAzXSA9IDE7Ci0gICAgICAgICAgICBpbmRpY2Vz
W2kgKiA2ICsgNF0gPSAyOwotICAgICAgICAgICAgaW5kaWNlc1tpICogNiArIDVdID0gMzsKLSAg
ICAgICAgfQotCi0gICAgICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIDAsICJwb3Mi
KTsKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDQsIEdMX0ZMT0FULCBHTF9GQUxT
RSwgMCwgdmVydGljZXMpOwotICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOwot
Ci0gICAgICAgIGdsVmlld3BvcnQoMCwgMCwgbU9TV2luZG93LT5nZXRXaWR0aCgpLCBtT1NXaW5k
b3ctPmdldEhlaWdodCgpKTsKLSAgICAgICAgZ2xDbGVhckNvbG9yKDEuMCwgMC4wLCAwLjAsIDEu
MCk7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgICAgIG1EcmF3
RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHTF9UUklBTkdMRVMsIGtOdW1RdWFkcyAqIDYsIEdMX1VO
U0lHTkVEX1NIT1JULCBpbmRpY2VzLmRhdGEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDEwMDAwKTsKLQotICAgICAgICBnbEZpbmlzaCgpOwotICAgIH0KLQotICBwcm90
ZWN0ZWQ6Ci0gICAgRUdMRGlzcGxheSBtRGlzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRUdMX05PX0RJU1BMQVk7Ci0gICAgRUdMU3VyZmFjZSBtV2lu
ZG93ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRUdMX05P
X1NVUkZBQ0U7Ci0gICAgYm9vbCBtSW5pdGlhbGl6ZWQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gZmFsc2U7Ci0gICAgUEZOR0xEUkFXRUxFTUVOVFNJTlNU
QU5DRURBTkdMRVBST0MgbURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFID0gbnVsbHB0cjsKLQot
ICBwcml2YXRlOgotICAgIEVHTENvbnRleHQgbUNvbnRleHQgPSBFR0xfTk9fQ09OVEVYVDsKLSAg
ICBFR0xDb25maWcgbUNvbmZpZyAgID0gMDsKLSAgICBPU1dpbmRvdyAqbU9TV2luZG93ID0gbnVs
bHB0cjsKLX07Ci0KLS8vIENoZWNrIGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCByZXR1cm5z
IEdMX05PX0VSUk9SIGlmIHdlIGRpZCBub3RoaW5nCi1URVNUX1AoRUdMUm9idXN0bmVzc1Rlc3Qs
IE5vRXJyb3JCeURlZmF1bHQpCi17Ci0gICAgaWYgKCFtSW5pdGlhbGl6ZWQpCi0gICAgewotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIEFTU0VSVF9UUlVFKGdsR2V0R3JhcGhpY3NSZXNldFN0
YXR1c0VYVCgpID09IEdMX05PX0VSUk9SKTsKLX0KLQotLy8gQ2hlY2tzIHRoYXQgdGhlIGFwcGxp
Y2F0aW9uIGdldHMgbm8gbG9zcyB3aXRoIE5PX1JFU0VUX05PVElGSUNBVElPTgotVEVTVF9QKEVH
TFJvYnVzdG5lc3NUZXN0LCBESVNBQkxFRF9Ob1Jlc2V0Tm90aWZpY2F0aW9uKQotewotICAgIGlm
ICghbUluaXRpYWxpemVkKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNy
ZWF0ZUNvbnRleHQoRUdMX05PX1JFU0VUX05PVElGSUNBVElPTl9FWFQpOwotCi0gICAgaWYgKCFJ
c1dpbmRvd3MoKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBv
biBub24gV2luZG93cyBwbGF0Zm9ybXMgYmVjYXVzZSBkcml2ZXJzIGNhbid0IHJlY292ZXIuICIK
LSAgICAgICAgICAgICAgICAgIDw8ICJTZWUgIiA8PCBfX0ZJTEVfXyA8PCAiOiIgPDwgX19MSU5F
X18gPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHN0ZDo6Y291dCA8
PCAiQ2F1c2luZyBhIEdQVSByZXNldCwgYnJhY2UgZm9yIGltcGFjdC4iIDw8IHN0ZDo6ZW5kbDsK
LQotICAgIGZvcmNlQ29udGV4dFJlc2V0KCk7Ci0gICAgQVNTRVJUX1RSVUUoZ2xHZXRHcmFwaGlj
c1Jlc2V0U3RhdHVzRVhUKCkgPT0gR0xfTk9fRVJST1IpOwotfQotCi0vLyBDaGVja3MgdGhhdCBy
ZXNldHRpbmcgdGhlIEFOR0xFIGRpc3BsYXkgYWxsb3dzIHRvIGdldCByaWQgb2YgdGhlIGNvbnRl
eHQgbG9zcy4KLS8vIEFsc28gY2hlY2tzIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGdldHMgbm90aWZp
ZWQgb2YgdGhlIGxvc3Mgb2YgdGhlIGRpc3BsYXkuCi0vLyBXZSBjb2FsZXNjZSBib3RoIHRlc3Rz
IHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIFREUnMgZG9uZSBvbiBXaW5kb3dzOiBieSBkZWZhdWx0
Ci0vLyBoYXZpbmcgbW9yZSB0aGFuIDUgVERScyBpbiBhIG1pbnV0ZSB3aWxsIGNhdXNlIFdpbmRv
d3MgdG8gZGlzYWJsZSB0aGUgR1BVIHVudGlsCi0vLyB0aGUgY29tcHV0ZXIgaXMgcmVib290ZWQu
Ci1URVNUX1AoRUdMUm9idXN0bmVzc1Rlc3QsIERJU0FCTEVEX1Jlc2V0dGluZ0Rpc3BsYXlXb3Jr
cykKLXsKLSAgICBpZiAoIW1Jbml0aWFsaXplZCkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBjcmVhdGVDb250ZXh0KEVHTF9MT1NFX0NPTlRFWFRfT05fUkVTRVRfRVhUKTsK
LQotICAgIGlmICghSXNXaW5kb3dzKCkpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3QgZGlzYWJsZWQgb24gbm9uIFdpbmRvd3MgcGxhdGZvcm1zIGJlY2F1c2UgZHJpdmVycyBjYW4n
dCByZWNvdmVyLiAiCi0gICAgICAgICAgICAgICAgICA8PCAiU2VlICIgPDwgX19GSUxFX18gPDwg
IjoiIDw8IF9fTElORV9fIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBzdGQ6OmNvdXQgPDwgIkNhdXNpbmcgYSBHUFUgcmVzZXQsIGJyYWNlIGZvciBpbXBhY3QuIiA8
PCBzdGQ6OmVuZGw7Ci0KLSAgICBmb3JjZUNvbnRleHRSZXNldCgpOwotICAgIEFTU0VSVF9UUlVF
KGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCgpICE9IEdMX05PX0VSUk9SKTsKLQotICAgIFRl
YXJEb3duKCk7Ci0gICAgU2V0VXAoKTsKLSAgICBBU1NFUlRfVFJVRShnbEdldEdyYXBoaWNzUmVz
ZXRTdGF0dXNFWFQoKSA9PSBHTF9OT19FUlJPUik7Ci19Ci0KLS8vIFRlc3RzIGNhdXNpbmcgR1BV
IHJlc2V0cyBhcmUgZGlzYWJsZWQsIHVzZSB0aGUgZm9sbG93aW5nIGFyZ3MgdG8gcnVuIHRoZW06
Ci0vLyAtLWd0ZXN0X2Fsc29fcnVuX2Rpc2FibGVkX3Rlc3RzIC0tZ3Rlc3RfZmlsdGVyPUVHTFJv
YnVzdG5lc3NUZXN0XCoKLQotLy8gTm90ZSB0aGF0IG9uIFdpbmRvd3MgdGhlIE9wZW5HTCBkcml2
ZXIgZmFpbHMgaGFyZCAocG9wdXAgdGhhdCBjbG9zZXMgdGhlIGFwcGxpY2F0aW9uKQotLy8gaWYg
dGhlcmUgd2FzIGEgVERSIGNhdXNlZCBieSBEM0Qgc28gd2UgZG9uJ3QgcnVuIEQzRCB0ZXN0cyBh
dCB0aGUgc2FtZSB0aW1lIGFzIHRoZSBPcGVuR0wgdGVzdHMuCi0jZGVmaW5lIEQzRF9IQVNfUFJJ
T1JJVFkgMQotI2lmIEQzRF9IQVNfUFJJT1JJVFkgJiYgKGRlZmluZWQoQU5HTEVfRU5BQkxFX0Qz
RDkpIHx8IGRlZmluZWQoQU5HTEVfRU5BQkxFX0QzRDExKSkKLUFOR0xFX0lOU1RBTlRJQVRFX1RF
U1QoRUdMUm9idXN0bmVzc1Rlc3QsIEVTMl9EM0Q5KCksIEVTMl9EM0QxMSgpKTsKLSNlbHNlCi1B
TkdMRV9JTlNUQU5USUFURV9URVNUKEVHTFJvYnVzdG5lc3NUZXN0LCBFUzJfT1BFTkdMKCkpOwot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWds
X3Rlc3RzL0VHTFNhbml0eUNoZWNrVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFNhbml0eUNoZWNrVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGI5MmY5YmMxNjhmYzdkYjU0MDFiZWM5NmZiZjg0Y2JkMzhmMTJiZmUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xTYW5pdHlDaGVja1Rlc3QuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gRUdMU2FuaXR5
Q2hlY2tUZXN0LmNwcDoKLS8vICAgICAgdGVzdHMgdXNlZCB0byBjaGVjayBzZXR1cCBpbiB3aGlj
aCB0ZXN0cyBhcmUgcnVuLgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2luY2x1ZGUg
InRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLS8vIENoZWNrcyB0aGUgdGVzdHMgYXJlIHJ1bm5p
bmcgYWdhaW5zdCBBTkdMRQotVEVTVChFR0xTYW5pdHlDaGVja1Rlc3QsIElzUnVubmluZ09uQU5H
TEUpCi17Ci0gICAgY29uc3QgY2hhciAqZXh0ZW5zaW9uU3RyaW5nID0KLSAgICAgICAgc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhciAqPihlZ2xRdWVyeVN0cmluZyhFR0xfTk9fRElTUExBWSwgRUdMX0VY
VEVOU0lPTlMpKTsKLSAgICBBU1NFUlRfTkUoc3Ryc3RyKGV4dGVuc2lvblN0cmluZywgIkVHTF9B
TkdMRV9wbGF0Zm9ybV9hbmdsZSIpLCBudWxscHRyKTsKLX0KLQotLy8gQ2hlY2tzIHRoYXQgZ2V0
dGluZyBmdW5jdGlvbiBwb2ludGVyIHdvcmtzCi1URVNUKEVHTFNhbml0eUNoZWNrVGVzdCwgSGFz
R2V0UGxhdGZvcm1EaXNwbGF5RVhUKQotewotICAgIFBGTkVHTEdFVFBMQVRGT1JNRElTUExBWUVY
VFBST0MgZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxQRk5FR0xHRVRQTEFURk9STURJU1BMQVlFWFRQUk9DPigKLSAgICAgICAgICAgIGVnbEdldFBy
b2NBZGRyZXNzKCJlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQiKSk7Ci0KLSAgICBBU1NFUlRfTkUo
ZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhULCBudWxscHRyKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMU3RyZWFtVGVzdC5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFN0cmVhbVRl
c3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjY3Y2Y3Nzg1YzVjMzVjM2Vh
YjI1ZTU4MzQxZWQyNmVlMDJlYjE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMv
RUdMU3RyZWFtVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NDcgKzAsMCBAQAotLy8KLS8v
IENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgot
Ly8KLS8vIEVHTFN0cmVhbVRlc3Q6Ci0vLyAgIFRlc3RzIHBlcnRhaW5pbmcgdG8gZWdsOjpTdHJl
YW0uCi0vLwotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2luY2x1ZGUgPHZlY3Rvcj4K
LQotI2luY2x1ZGUgIm1lZGlhL3l1dnRlc3QuaW5sIgotI2luY2x1ZGUgIk9TV2luZG93LmgiCi0j
aW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xl
OwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3MgRUdMU3RyZWFtVGVzdCA6IHB1YmxpYyBBTkdMRVRl
c3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIEVHTFN0cmVhbVRlc3QoKQotICAgIHsKLSAgICAgICAg
c2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAg
ICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsK
LSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0
cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsKLSAgICB9Ci19OwotCi0vLyBU
ZXN0cyB2YWxpZGF0aW9uIG9mIHRoZSBzdHJlYW0gQVBJCi1URVNUX1AoRUdMU3RyZWFtVGVzdCwg
U3RyZWFtVmFsaWRhdGlvblRlc3QpCi17Ci0gICAgRUdMV2luZG93ICp3aW5kb3cgICAgICAgICAg
ICA9IGdldEVHTFdpbmRvdygpOwotICAgIEVHTERpc3BsYXkgZGlzcGxheSAgICAgICAgICAgPSB3
aW5kb3ctPmdldERpc3BsYXkoKTsKLSAgICBjb25zdCBjaGFyICpleHRlbnNpb25zU3RyaW5nID0g
ZWdsUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX0VYVEVOU0lPTlMpOwotICAgIGlmIChzdHJzdHIo
ZXh0ZW5zaW9uc1N0cmluZywgIkVHTF9LSFJfc3RyZWFtIikgPT0gbnVsbHB0cikKLSAgICB7Ci0g
ICAgICAgIHN0ZDo6Y291dCA8PCAiU3RyZWFtIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkIiA8PCBz
dGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBFR0xpbnQgc3Ry
ZWFtQXR0cmlidXRlc0JhZFtdID0gewotICAgICAgICBFR0xfU1RSRUFNX1NUQVRFX0tIUiwKLSAg
ICAgICAgMCwKLSAgICAgICAgRUdMX05PTkUsCi0gICAgICAgIEVHTF9QUk9EVUNFUl9GUkFNRV9L
SFIsCi0gICAgICAgIDAsCi0gICAgICAgIEVHTF9OT05FLAotICAgICAgICBFR0xfQ09OU1VNRVJf
RlJBTUVfS0hSLAotICAgICAgICAwLAotICAgICAgICBFR0xfTk9ORSwKLSAgICAgICAgRUdMX0NP
TlNVTUVSX0xBVEVOQ1lfVVNFQ19LSFIsCi0gICAgICAgIC0xLAotICAgICAgICBFR0xfTk9ORSwK
LSAgICAgICAgRUdMX1JFRF9TSVpFLAotICAgICAgICBFR0xfRE9OVF9DQVJFLAotICAgICAgICBF
R0xfTk9ORSwKLSAgICB9OwotCi0gICAgLy8gVmFsaWRhdGUgY3JlYXRlIHN0cmVhbSBhdHRyaWJ1
dGVzCi0gICAgRUdMU3RyZWFtS0hSIHN0cmVhbSA9IGVnbENyZWF0ZVN0cmVhbUtIUihkaXNwbGF5
LCAmc3RyZWFtQXR0cmlidXRlc0JhZFswXSk7Ci0gICAgQVNTRVJUX0VHTF9FUlJPUihFR0xfQkFE
X0FDQ0VTUyk7Ci0gICAgQVNTRVJUX0VRKEVHTF9OT19TVFJFQU1fS0hSLCBzdHJlYW0pOwotCi0g
ICAgc3RyZWFtID0gZWdsQ3JlYXRlU3RyZWFtS0hSKGRpc3BsYXksICZzdHJlYW1BdHRyaWJ1dGVz
QmFkWzNdKTsKLSAgICBBU1NFUlRfRUdMX0VSUk9SKEVHTF9CQURfQUNDRVNTKTsKLSAgICBBU1NF
UlRfRVEoRUdMX05PX1NUUkVBTV9LSFIsIHN0cmVhbSk7Ci0KLSAgICBzdHJlYW0gPSBlZ2xDcmVh
dGVTdHJlYW1LSFIoZGlzcGxheSwgJnN0cmVhbUF0dHJpYnV0ZXNCYWRbNl0pOwotICAgIEFTU0VS
VF9FR0xfRVJST1IoRUdMX0JBRF9BQ0NFU1MpOwotICAgIEFTU0VSVF9FUShFR0xfTk9fU1RSRUFN
X0tIUiwgc3RyZWFtKTsKLQotICAgIHN0cmVhbSA9IGVnbENyZWF0ZVN0cmVhbUtIUihkaXNwbGF5
LCAmc3RyZWFtQXR0cmlidXRlc0JhZFs5XSk7Ci0gICAgQVNTRVJUX0VHTF9FUlJPUihFR0xfQkFE
X1BBUkFNRVRFUik7Ci0gICAgQVNTRVJUX0VRKEVHTF9OT19TVFJFQU1fS0hSLCBzdHJlYW0pOwot
Ci0gICAgc3RyZWFtID0gZWdsQ3JlYXRlU3RyZWFtS0hSKGRpc3BsYXksICZzdHJlYW1BdHRyaWJ1
dGVzQmFkWzEyXSk7Ci0gICAgQVNTRVJUX0VHTF9FUlJPUihFR0xfQkFEX0FUVFJJQlVURSk7Ci0g
ICAgQVNTRVJUX0VRKEVHTF9OT19TVFJFQU1fS0hSLCBzdHJlYW0pOwotCi0gICAgY29uc3QgRUdM
aW50IHN0cmVhbUF0dHJpYnV0ZXNbXSA9IHsKLSAgICAgICAgRUdMX0NPTlNVTUVSX0xBVEVOQ1lf
VVNFQ19LSFIsIDAsIEVHTF9OT05FLAotICAgIH07Ci0KLSAgICBzdHJlYW0gPSBlZ2xDcmVhdGVT
dHJlYW1LSFIoRUdMX05PX0RJU1BMQVksIHN0cmVhbUF0dHJpYnV0ZXMpOwotICAgIEFTU0VSVF9F
R0xfRVJST1IoRUdMX0JBRF9ESVNQTEFZKTsKLSAgICBBU1NFUlRfRVEoRUdMX05PX1NUUkVBTV9L
SFIsIHN0cmVhbSk7Ci0KLSAgICAvLyBDcmVhdGUgYW4gYWN0dWFsIHN0cmVhbQotICAgIHN0cmVh
bSA9IGVnbENyZWF0ZVN0cmVhbUtIUihkaXNwbGF5LCBzdHJlYW1BdHRyaWJ1dGVzKTsKLSAgICBB
U1NFUlRfRUdMX1NVQ0NFU1MoKTsKLSAgICBBU1NFUlRfTkUoRUdMX05PX1NUUkVBTV9LSFIsIHN0
cmVhbSk7Ci0KLSAgICAvLyBBc3NlcnQgaXQgaXMgaW4gdGhlIGNyZWF0ZWQgc3RhdGUKLSAgICBF
R0xpbnQgc3RhdGU7Ci0gICAgZWdsUXVlcnlTdHJlYW1LSFIoZGlzcGxheSwgc3RyZWFtLCBFR0xf
U1RSRUFNX1NUQVRFX0tIUiwgJnN0YXRlKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLSAg
ICBBU1NFUlRfRVEoRUdMX1NUUkVBTV9TVEFURV9DUkVBVEVEX0tIUiwgc3RhdGUpOwotCi0gICAg
Ly8gVGVzdCBnZXR0aW5nIGFuZCBzZXR0aW5nIHRoZSBsYXRlbmN5Ci0gICAgRUdMaW50IGxhdGVu
Y3kgPSAxMDsKLSAgICBlZ2xTdHJlYW1BdHRyaWJLSFIoZGlzcGxheSwgc3RyZWFtLCBFR0xfQ09O
U1VNRVJfTEFURU5DWV9VU0VDX0tIUiwgbGF0ZW5jeSk7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNT
KCk7Ci0gICAgZWdsUXVlcnlTdHJlYW1LSFIoZGlzcGxheSwgc3RyZWFtLCBFR0xfQ09OU1VNRVJf
TEFURU5DWV9VU0VDX0tIUiwgJmxhdGVuY3kpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwot
ICAgIEFTU0VSVF9FUSgxMCwgbGF0ZW5jeSk7Ci0gICAgZWdsU3RyZWFtQXR0cmliS0hSKGRpc3Bs
YXksIHN0cmVhbSwgRUdMX0NPTlNVTUVSX0xBVEVOQ1lfVVNFQ19LSFIsIC0xKTsKLSAgICBBU1NF
UlRfRUdMX0VSUk9SKEVHTF9CQURfUEFSQU1FVEVSKTsKLSAgICBBU1NFUlRfRVEoMTAsIGxhdGVu
Y3kpOwotCi0gICAgLy8gVGVzdCB0aGUgNjQtYml0IHF1ZXJpZXMKLSAgICBFR0x1aW50NjRLSFIg
dmFsdWU7Ci0gICAgZWdsUXVlcnlTdHJlYW11NjRLSFIoZGlzcGxheSwgc3RyZWFtLCBFR0xfQ09O
U1VNRVJfRlJBTUVfS0hSLCAmdmFsdWUpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotICAg
IGVnbFF1ZXJ5U3RyZWFtdTY0S0hSKGRpc3BsYXksIHN0cmVhbSwgRUdMX1BST0RVQ0VSX0ZSQU1F
X0tIUiwgJnZhbHVlKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgIC8vIERlc3Ry
b3kgdGhlIHN0cmVhbQotICAgIGVnbERlc3Ryb3lTdHJlYW1LSFIoZGlzcGxheSwgc3RyZWFtKTsK
LSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLX0KLQotLy8gVGVzdHMgdmFsaWRhdGlvbiBvZiBz
dHJlYW0gY29uc3VtZXIgZ2x0ZXh0dXJlIEFQSQotVEVTVF9QKEVHTFN0cmVhbVRlc3QsIFN0cmVh
bUNvbnN1bWVyR0xUZXh0dXJlVmFsaWRhdGlvblRlc3QpCi17Ci0gICAgRUdMV2luZG93ICp3aW5k
b3cgICAgICAgICAgICA9IGdldEVHTFdpbmRvdygpOwotICAgIEVHTERpc3BsYXkgZGlzcGxheSAg
ICAgICAgICAgPSB3aW5kb3ctPmdldERpc3BsYXkoKTsKLSAgICBjb25zdCBjaGFyICpleHRlbnNp
b25zU3RyaW5nID0gZWdsUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX0VYVEVOU0lPTlMpOwotICAg
IGlmIChzdHJzdHIoZXh0ZW5zaW9uc1N0cmluZywgIkVHTF9LSFJfc3RyZWFtX2NvbnN1bWVyX2ds
dGV4dHVyZSIpID09IG51bGxwdHIpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlN0cmVh
bSBjb25zdW1lciBnbHRleHR1cmUgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQiIDw8IHN0ZDo6ZW5k
bDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0IEVHTGludCBzdHJlYW1BdHRy
aWJ1dGVzW10gPSB7Ci0gICAgICAgIEVHTF9DT05TVU1FUl9MQVRFTkNZX1VTRUNfS0hSLCAwLCBF
R0xfQ09OU1VNRVJfQUNRVUlSRV9USU1FT1VUX1VTRUNfS0hSLCAwLCBFR0xfTk9ORSwKLSAgICB9
OwotCi0gICAgRUdMU3RyZWFtS0hSIHN0cmVhbSA9IGVnbENyZWF0ZVN0cmVhbUtIUihkaXNwbGF5
LCBzdHJlYW1BdHRyaWJ1dGVzKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgIEVH
TEJvb2xlYW4gcmVzdWx0ID0gZWdsU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVFeHRlcm5hbEtIUihk
aXNwbGF5LCBzdHJlYW0pOwotICAgIEFTU0VSVF9FR0xfRkFMU0UocmVzdWx0KTsKLSAgICBBU1NF
UlRfRUdMX0VSUk9SKEVHTF9CQURfQUNDRVNTKTsKLQotICAgIEdMdWludCB0ZXg7Ci0gICAgZ2xH
ZW5UZXh0dXJlcygxLCAmdGV4KTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfRVhURVJO
QUxfT0VTLCB0ZXgpOwotICAgIHJlc3VsdCA9IGVnbFN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0
ZXJuYWxLSFIoZGlzcGxheSwgc3RyZWFtKTsKLSAgICBBU1NFUlRfRUdMX1RSVUUocmVzdWx0KTsK
LSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgIEVHTGludCBzdGF0ZTsKLSAgICBlZ2xR
dWVyeVN0cmVhbUtIUihkaXNwbGF5LCBzdHJlYW0sIEVHTF9TVFJFQU1fU1RBVEVfS0hSLCAmc3Rh
dGUpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotICAgIEFTU0VSVF9FUShFR0xfU1RSRUFN
X1NUQVRFX0NPTk5FQ1RJTkdfS0hSLCBzdGF0ZSk7Ci0KLSAgICBlZ2xEZXN0cm95U3RyZWFtS0hS
KGRpc3BsYXksIHN0cmVhbSk7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci19Ci0KLS8vIFRl
c3RzIHZhbGlkYXRpb24gb2Ygc3RyZWFtIGNvbnN1bWVyIGdsdGV4dHVyZSB5dXYgQVBJCi1URVNU
X1AoRUdMU3RyZWFtVGVzdCwgU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVZVVZWYWxpZGF0aW9uVGVz
dCkKLXsKLSAgICBFR0xXaW5kb3cgKndpbmRvdyAgICAgICAgICAgID0gZ2V0RUdMV2luZG93KCk7
Ci0gICAgRUdMRGlzcGxheSBkaXNwbGF5ICAgICAgICAgICA9IHdpbmRvdy0+Z2V0RGlzcGxheSgp
OwotICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvbnNTdHJpbmcgPSBlZ2xRdWVyeVN0cmluZyhkaXNw
bGF5LCBFR0xfRVhURU5TSU9OUyk7Ci0gICAgaWYgKHN0cnN0cihleHRlbnNpb25zU3RyaW5nLCAi
RUdMX05WX3N0cmVhbV9jb25zdW1lcl9nbHRleHR1cmVfeXV2IikgPT0gbnVsbHB0cikKLSAgICB7
Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiU3RyZWFtIGNvbnN1bWVyIGdsdGV4dHVyZSB5dXYgZXh0
ZW5zaW9uIG5vdCBzdXBwb3J0ZWQiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGNvbnN0IEVHTGludCBzdHJlYW1BdHRyaWJ1dGVzW10gPSB7Ci0gICAgICAgIEVH
TF9DT05TVU1FUl9MQVRFTkNZX1VTRUNfS0hSLCAwLCBFR0xfQ09OU1VNRVJfQUNRVUlSRV9USU1F
T1VUX1VTRUNfS0hSLCAwLCBFR0xfTk9ORSwKLSAgICB9OwotCi0gICAgRUdMU3RyZWFtS0hSIHN0
cmVhbSA9IGVnbENyZWF0ZVN0cmVhbUtIUihkaXNwbGF5LCBzdHJlYW1BdHRyaWJ1dGVzKTsKLSAg
ICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgIEVHTEF0dHJpYiBjb25zdW1lckF0dHJpYnV0
ZXNCYWRbXSA9IHsKLSAgICAgICAgRUdMX0NPTE9SX0JVRkZFUl9UWVBFLAotICAgICAgICBFR0xf
WVVWX0JVRkZFUl9FWFQsICAvLyAwCi0gICAgICAgIEVHTF9ZVVZfTlVNQkVSX09GX1BMQU5FU19F
WFQsCi0gICAgICAgIDAsCi0gICAgICAgIEVHTF9OT05FLAotICAgICAgICBFR0xfQ09MT1JfQlVG
RkVSX1RZUEUsCi0gICAgICAgIEVHTF9ZVVZfQlVGRkVSX0VYVCwgIC8vIDUKLSAgICAgICAgRUdM
X1lVVl9OVU1CRVJfT0ZfUExBTkVTX0VYVCwKLSAgICAgICAgMSwKLSAgICAgICAgRUdMX05PTkUs
Ci0gICAgICAgIEVHTF9DT0xPUl9CVUZGRVJfVFlQRSwKLSAgICAgICAgRUdMX1lVVl9CVUZGRVJf
RVhULCAgLy8gMTAKLSAgICAgICAgRUdMX1lVVl9OVU1CRVJfT0ZfUExBTkVTX0VYVCwKLSAgICAg
ICAgMSwKLSAgICAgICAgRUdMX1lVVl9QTEFORTBfVEVYVFVSRV9VTklUX05WLAotICAgICAgICA5
OTk5LAotICAgICAgICBFR0xfTk9ORSwKLSAgICAgICAgRUdMX0NPTE9SX0JVRkZFUl9UWVBFLAot
ICAgICAgICBFR0xfWVVWX0JVRkZFUl9FWFQsICAvLyAxNwotICAgICAgICBFR0xfWVVWX05VTUJF
Ul9PRl9QTEFORVNfRVhULAotICAgICAgICAxLAotICAgICAgICBFR0xfWVVWX1BMQU5FMF9URVhU
VVJFX1VOSVRfTlYsCi0gICAgICAgIDAsCi0gICAgICAgIEVHTF9ZVVZfUExBTkUxX1RFWFRVUkVf
VU5JVF9OViwKLSAgICAgICAgMSwKLSAgICAgICAgRUdMX05PTkUsCi0gICAgICAgIEVHTF9DT0xP
Ul9CVUZGRVJfVFlQRSwKLSAgICAgICAgRUdMX1lVVl9CVUZGRVJfRVhULCAgLy8gMjYKLSAgICAg
ICAgRUdMX1lVVl9OVU1CRVJfT0ZfUExBTkVTX0VYVCwKLSAgICAgICAgMiwKLSAgICAgICAgRUdM
X1lVVl9QTEFORTBfVEVYVFVSRV9VTklUX05WLAotICAgICAgICAwLAotICAgICAgICBFR0xfWVVW
X1BMQU5FMV9URVhUVVJFX1VOSVRfTlYsCi0gICAgICAgIDAsCi0gICAgICAgIEVHTF9OT05FLAot
ICAgIH07Ci0KLSAgICBFR0xBdHRyaWIgY29uc3VtZXJBdHRyaWJ1dGVzW10gPSB7Ci0gICAgICAg
IEVHTF9DT0xPUl9CVUZGRVJfVFlQRSwKLSAgICAgICAgRUdMX1lVVl9CVUZGRVJfRVhULAotICAg
ICAgICBFR0xfWVVWX05VTUJFUl9PRl9QTEFORVNfRVhULAotICAgICAgICAyLAotICAgICAgICBF
R0xfWVVWX1BMQU5FMF9URVhUVVJFX1VOSVRfTlYsCi0gICAgICAgIDAsCi0gICAgICAgIEVHTF9Z
VVZfUExBTkUxX1RFWFRVUkVfVU5JVF9OViwKLSAgICAgICAgMSwKLSAgICAgICAgRUdMX05PTkUs
Ci0gICAgfTsKLQotICAgIEVHTEJvb2xlYW4gcmVzdWx0ID0KLSAgICAgICAgZWdsU3RyZWFtQ29u
c3VtZXJHTFRleHR1cmVFeHRlcm5hbEF0dHJpYnNOVihkaXNwbGF5LCBzdHJlYW0sICZjb25zdW1l
ckF0dHJpYnV0ZXNCYWRbMF0pOwotICAgIEFTU0VSVF9FR0xfRkFMU0UocmVzdWx0KTsKLSAgICBB
U1NFUlRfRUdMX0VSUk9SKEVHTF9CQURfTUFUQ0gpOwotCi0gICAgcmVzdWx0ID0KLSAgICAgICAg
ZWdsU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVFeHRlcm5hbEF0dHJpYnNOVihkaXNwbGF5LCBzdHJl
YW0sICZjb25zdW1lckF0dHJpYnV0ZXNCYWRbNV0pOwotICAgIEFTU0VSVF9FR0xfRkFMU0UocmVz
dWx0KTsKLSAgICBBU1NFUlRfRUdMX0VSUk9SKEVHTF9CQURfTUFUQ0gpOwotCi0gICAgcmVzdWx0
ID0KLSAgICAgICAgZWdsU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVFeHRlcm5hbEF0dHJpYnNOVihk
aXNwbGF5LCBzdHJlYW0sICZjb25zdW1lckF0dHJpYnV0ZXNCYWRbMTBdKTsKLSAgICBBU1NFUlRf
RUdMX0ZBTFNFKHJlc3VsdCk7Ci0gICAgQVNTRVJUX0VHTF9FUlJPUihFR0xfQkFEX0FDQ0VTUyk7
Ci0KLSAgICByZXN1bHQgPQotICAgICAgICBlZ2xTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dGVy
bmFsQXR0cmlic05WKGRpc3BsYXksIHN0cmVhbSwgJmNvbnN1bWVyQXR0cmlidXRlc0JhZFsxN10p
OwotICAgIEFTU0VSVF9FR0xfRkFMU0UocmVzdWx0KTsKLSAgICBBU1NFUlRfRUdMX0VSUk9SKEVH
TF9CQURfTUFUQ0gpOwotCi0gICAgcmVzdWx0ID0gZWdsU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVF
eHRlcm5hbEF0dHJpYnNOVihkaXNwbGF5LCBzdHJlYW0sIGNvbnN1bWVyQXR0cmlidXRlcyk7Ci0g
ICAgQVNTRVJUX0VHTF9GQUxTRShyZXN1bHQpOwotICAgIEFTU0VSVF9FR0xfRVJST1IoRUdMX0JB
RF9BQ0NFU1MpOwotCi0gICAgR0x1aW50IHRleFsyXTsKLSAgICBnbEdlblRleHR1cmVzKDIsIHRl
eCk7Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCB0ZXhbMF0pOwotICAgIGdsQWN0aXZlVGV4dHVyZShH
TF9URVhUVVJFMSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywg
dGV4WzFdKTsKLQotICAgIHJlc3VsdCA9Ci0gICAgICAgIGVnbFN0cmVhbUNvbnN1bWVyR0xUZXh0
dXJlRXh0ZXJuYWxBdHRyaWJzTlYoZGlzcGxheSwgc3RyZWFtLCAmY29uc3VtZXJBdHRyaWJ1dGVz
QmFkWzI2XSk7Ci0gICAgQVNTRVJUX0VHTF9GQUxTRShyZXN1bHQpOwotICAgIEFTU0VSVF9FR0xf
RVJST1IoRUdMX0JBRF9BQ0NFU1MpOwotCi0gICAgcmVzdWx0ID0gZWdsU3RyZWFtQ29uc3VtZXJH
TFRleHR1cmVFeHRlcm5hbEF0dHJpYnNOVihkaXNwbGF5LCBzdHJlYW0sIGNvbnN1bWVyQXR0cmli
dXRlcyk7Ci0gICAgQVNTRVJUX0VHTF9UUlVFKHJlc3VsdCk7Ci0gICAgQVNTRVJUX0VHTF9TVUND
RVNTKCk7Ci0KLSAgICBFR0xpbnQgc3RhdGU7Ci0gICAgZWdsUXVlcnlTdHJlYW1LSFIoZGlzcGxh
eSwgc3RyZWFtLCBFR0xfU1RSRUFNX1NUQVRFX0tIUiwgJnN0YXRlKTsKLSAgICBBU1NFUlRfRUdM
X1NVQ0NFU1MoKTsKLSAgICBBU1NFUlRfRVEoRUdMX1NUUkVBTV9TVEFURV9DT05ORUNUSU5HX0tI
Uiwgc3RhdGUpOwotCi0gICAgZWdsRGVzdHJveVN0cmVhbUtIUihkaXNwbGF5LCBzdHJlYW0pOwot
ICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotfQotCi0vLyBUZXN0cyB0aGF0IGRlbGV0aW5nIGEg
dGV4dHVyZSBpbnZhbGlkYXRlcyB0aGUgYXNzb2NpYXRlZCBzdHJlYW0KLVRFU1RfUChFR0xTdHJl
YW1UZXN0LCBTdHJlYW1Db25zdW1lckdMVGV4dHVyZVlVVkRlbGV0aW9uVGVzdCkKLXsKLSAgICBF
R0xXaW5kb3cgKndpbmRvdyAgICAgICAgICAgID0gZ2V0RUdMV2luZG93KCk7Ci0gICAgRUdMRGlz
cGxheSBkaXNwbGF5ICAgICAgICAgICA9IHdpbmRvdy0+Z2V0RGlzcGxheSgpOwotICAgIGNvbnN0
IGNoYXIgKmV4dGVuc2lvbnNTdHJpbmcgPSBlZ2xRdWVyeVN0cmluZyhkaXNwbGF5LCBFR0xfRVhU
RU5TSU9OUyk7Ci0gICAgaWYgKHN0cnN0cihleHRlbnNpb25zU3RyaW5nLCAiRUdMX0FOR0xFX3N0
cmVhbV9wcm9kdWNlcl9kM2RfdGV4dHVyZV9udjEyIikgPT0gbnVsbHB0cikKLSAgICB7Ci0gICAg
ICAgIHN0ZDo6Y291dCA8PCAiU3RyZWFtIHByb2R1Y2VyIGQzZCBudjEyIHRleHR1cmUgbm90IHN1
cHBvcnRlZCIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29u
c3QgRUdMaW50IHN0cmVhbUF0dHJpYnV0ZXNbXSA9IHsKLSAgICAgICAgRUdMX0NPTlNVTUVSX0xB
VEVOQ1lfVVNFQ19LSFIsIDAsIEVHTF9DT05TVU1FUl9BQ1FVSVJFX1RJTUVPVVRfVVNFQ19LSFIs
IDAsIEVHTF9OT05FLAotICAgIH07Ci0KLSAgICBFR0xTdHJlYW1LSFIgc3RyZWFtID0gZWdsQ3Jl
YXRlU3RyZWFtS0hSKGRpc3BsYXksIHN0cmVhbUF0dHJpYnV0ZXMpOwotICAgIEFTU0VSVF9FR0xf
U1VDQ0VTUygpOwotCi0gICAgRUdMQXR0cmliIGNvbnN1bWVyQXR0cmlidXRlc1tdID0gewotICAg
ICAgICBFR0xfQ09MT1JfQlVGRkVSX1RZUEUsCi0gICAgICAgIEVHTF9ZVVZfQlVGRkVSX0VYVCwK
LSAgICAgICAgRUdMX1lVVl9OVU1CRVJfT0ZfUExBTkVTX0VYVCwKLSAgICAgICAgMiwKLSAgICAg
ICAgRUdMX1lVVl9QTEFORTBfVEVYVFVSRV9VTklUX05WLAotICAgICAgICAwLAotICAgICAgICBF
R0xfWVVWX1BMQU5FMV9URVhUVVJFX1VOSVRfTlYsCi0gICAgICAgIDEsCi0gICAgICAgIEVHTF9O
T05FLAotICAgIH07Ci0KLSAgICBHTHVpbnQgdGV4WzJdOwotICAgIGdsR2VuVGV4dHVyZXMoMiwg
dGV4KTsKLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIHRleFswXSk7Ci0gICAgZ2xBY3RpdmVUZXh0dXJl
KEdMX1RFWFRVUkUxKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VT
LCB0ZXhbMV0pOwotCi0gICAgRUdMQm9vbGVhbiByZXN1bHQgPQotICAgICAgICBlZ2xTdHJlYW1D
b25zdW1lckdMVGV4dHVyZUV4dGVybmFsQXR0cmlic05WKGRpc3BsYXksIHN0cmVhbSwgY29uc3Vt
ZXJBdHRyaWJ1dGVzKTsKLSAgICBBU1NFUlRfRUdMX1RSVUUocmVzdWx0KTsKLSAgICBBU1NFUlRf
RUdMX1NVQ0NFU1MoKTsKLQotICAgIEVHTEF0dHJpYiBwcm9kdWNlckF0dHJpYnV0ZXNbXSA9IHsK
LSAgICAgICAgRUdMX05PTkUsCi0gICAgfTsKLQotICAgIHJlc3VsdCA9IGVnbENyZWF0ZVN0cmVh
bVByb2R1Y2VyRDNEVGV4dHVyZU5WMTJBTkdMRShkaXNwbGF5LCBzdHJlYW0sIHByb2R1Y2VyQXR0
cmlidXRlcyk7Ci0gICAgQVNTRVJUX0VHTF9UUlVFKHJlc3VsdCk7Ci0gICAgQVNTRVJUX0VHTF9T
VUNDRVNTKCk7Ci0KLSAgICBFR0xpbnQgc3RhdGU7Ci0gICAgZWdsUXVlcnlTdHJlYW1LSFIoZGlz
cGxheSwgc3RyZWFtLCBFR0xfU1RSRUFNX1NUQVRFX0tIUiwgJnN0YXRlKTsKLSAgICBBU1NFUlRf
RUdMX1NVQ0NFU1MoKTsKLSAgICBBU1NFUlRfRVEoRUdMX1NUUkVBTV9TVEFURV9FTVBUWV9LSFIs
IHN0YXRlKTsKLQotICAgIC8vIERlbGV0ZSB0aGUgZmlyc3QgdGV4dHVyZSwgd2hpY2ggc2hvdWxk
IGJlIGVub3VnaCB0byBpbnZhbGlkYXRlIHRoZSBzdHJlYW0KLSAgICBnbERlbGV0ZVRleHR1cmVz
KDEsIHRleCk7Ci0KLSAgICBlZ2xRdWVyeVN0cmVhbUtIUihkaXNwbGF5LCBzdHJlYW0sIEVHTF9T
VFJFQU1fU1RBVEVfS0hSLCAmc3RhdGUpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotICAg
IEFTU0VSVF9FUShFR0xfU1RSRUFNX1NUQVRFX0RJU0NPTk5FQ1RFRF9LSFIsIHN0YXRlKTsKLQot
ICAgIGVnbERlc3Ryb3lTdHJlYW1LSFIoZGlzcGxheSwgc3RyZWFtKTsKLSAgICBBU1NFUlRfRUdM
X1NVQ0NFU1MoKTsKLX0KLQotLy8gRW5kMmVuZCB0ZXN0IGZvciByZW5kZXJpbmcgYW4gTlYxMiB0
ZXh0dXJlLiBSZW5kZXJzIGEgWVVWIHF1YWQsIHJlYWRzIGJhY2sgdGhlIFJHQiB2YWx1ZXMsIGFu
ZAotLy8gZW5zdXJlcyB0aGV5IGFyZSBjb3JyZWN0Ci1URVNUX1AoRUdMU3RyZWFtVGVzdCwgU3Ry
ZWFtUHJvZHVjZXJUZXh0dXJlTlYxMkVuZDJFbmQpCi17Ci0gICAgRUdMV2luZG93ICp3aW5kb3cg
ICAgICAgICAgICA9IGdldEVHTFdpbmRvdygpOwotICAgIEVHTERpc3BsYXkgZGlzcGxheSAgICAg
ICAgICAgPSB3aW5kb3ctPmdldERpc3BsYXkoKTsKLSAgICBpZiAoIWVnbERpc3BsYXlFeHRlbnNp
b25FbmFibGVkKGRpc3BsYXksICJFR0xfQU5HTEVfc3RyZWFtX3Byb2R1Y2VyX2QzZF90ZXh0dXJl
X252MTIiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiU3RyZWFtIHByb2R1Y2VyIGQz
ZCBudjEyIHRleHR1cmUgbm90IHN1cHBvcnRlZCIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgYm9vbCB1c2VFU1NMM1NoYWRlcnMgPQotICAgICAgICBnZXRDbGll
bnRNYWpvclZlcnNpb24oKSA+PSAzICYmIGV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19FR0xfaW1h
Z2VfZXh0ZXJuYWxfZXNzbDMiKTsKLQotICAgIC8vIHl1diB0byByZ2IgY29udmVyc2lvbiBzaGFk
ZXIgdXNpbmcgTWljcm9zb2Z0J3MgZ2l2ZW4gY29udmVyc2lvbiBmb3JtdWxhcwotICAgIHN0ZDo6
c3RyaW5nIHl1dlZTLCB5dXZQUzsKLSAgICBpZiAodXNlRVNTTDNTaGFkZXJzKQotICAgIHsKLSAg
ICAgICAgeXV2VlMgPQotICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAg
ICAgImluIGhpZ2hwIHZlYzQgcG9zaXRpb247XG4iCi0gICAgICAgICAgICAib3V0IHZlYzIgdGV4
Y29vcmQ7XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKHZvaWQpXG4iCi0gICAgICAgICAgICAi
e1xuIgotICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uO1xuIgotICAgICAg
ICAgICAgIiAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7XG4iCi0gICAg
ICAgICAgICAiICAgIHRleGNvb3JkLnkgPSAxLjAgLSB0ZXhjb29yZC55O1xuIgotICAgICAgICAg
ICAgIn1cbiI7Ci0gICAgICAgIHl1dlBTID0KLSAgICAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKLSAgICAgICAgICAgICIjZXh0ZW5zaW9uIEdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNz
bDMgOiByZXF1aXJlXG4iCi0gICAgICAgICAgICAiI2V4dGVuc2lvbiBHTF9OVl9FR0xfc3RyZWFt
X2NvbnN1bWVyX2V4dGVybmFsIDogcmVxdWlyZVxuIgotICAgICAgICAgICAgInByZWNpc2lvbiBo
aWdocCBmbG9hdDtcbiIKLSAgICAgICAgICAgICJpbiB2ZWMyIHRleGNvb3JkO1xuIgotICAgICAg
ICAgICAgIm91dCB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAgICAgInVuaWZvcm0gc2FtcGxlckV4
dGVybmFsT0VTIHk7XG4iCi0gICAgICAgICAgICAidW5pZm9ybSBzYW1wbGVyRXh0ZXJuYWxPRVMg
dXZcbjsiCi0gICAgICAgICAgICAidm9pZCBtYWluKHZvaWQpXG4iCi0gICAgICAgICAgICAie1xu
IgotICAgICAgICAgICAgIiAgICBmbG9hdCBjID0gdGV4dHVyZSh5LCB0ZXhjb29yZCkuciAtICgx
Ni4wIC8gMjU2LjApO1xuIgotICAgICAgICAgICAgIiAgICBmbG9hdCBkID0gdGV4dHVyZSh1diwg
dGV4Y29vcmQpLnIgLSAwLjU7XG4iCi0gICAgICAgICAgICAiICAgIGZsb2F0IGUgPSB0ZXh0dXJl
KHV2LCB0ZXhjb29yZCkuZyAtIDAuNTtcbiIKLSAgICAgICAgICAgICIgICAgZmxvYXQgciA9IDEu
MTY0MzgzICogYyArIDEuNTk2MDI3ICogZTtcbiIKLSAgICAgICAgICAgICIgICAgZmxvYXQgZyA9
IDEuMTY0MzgzICogYyAtIDAuMzkxNzYyICogZCAtIDAuODEyOTY4ICogZTtcbiIKLSAgICAgICAg
ICAgICIgICAgZmxvYXQgYiA9IDEuMTY0MzgzICogYyArIDIuMDE3MjMyICogZDtcbiIKLSAgICAg
ICAgICAgICIgICAgY29sb3IgPSB2ZWM0KHIsIGcsIGIsIDEuMCk7XG4iCi0gICAgICAgICAgICAi
fVxuIjsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgeXV2VlMgPQotICAgICAgICAg
ICAgImF0dHJpYnV0ZSBoaWdocCB2ZWM0IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgInZhcnlp
bmcgdmVjMiB0ZXhjb29yZDtcbiIKLSAgICAgICAgICAgICJ2b2lkIG1haW4odm9pZClcbiIKLSAg
ICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247
XG4iCi0gICAgICAgICAgICAiICAgIHRleGNvb3JkID0gKHBvc2l0aW9uLnh5ICogMC41KSArIDAu
NTtcbiIKLSAgICAgICAgICAgICIgICAgdGV4Y29vcmQueSA9IDEuMCAtIHRleGNvb3JkLnk7XG4i
Ci0gICAgICAgICAgICAifVxuIjsKLQotICAgICAgICB5dXZQUyA9Ci0gICAgICAgICAgICAiI2V4
dGVuc2lvbiBHTF9OVl9FR0xfc3RyZWFtX2NvbnN1bWVyX2V4dGVybmFsIDogcmVxdWlyZVxuIgot
ICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAgICAgICJ2YXJ5
aW5nIHZlYzIgdGV4Y29vcmQ7XG4iCi0gICAgICAgICAgICAidW5pZm9ybSBzYW1wbGVyRXh0ZXJu
YWxPRVMgeTtcbiIKLSAgICAgICAgICAgICJ1bmlmb3JtIHNhbXBsZXJFeHRlcm5hbE9FUyB1dlxu
OyIKLSAgICAgICAgICAgICJ2b2lkIG1haW4odm9pZClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0g
ICAgICAgICAgICAiICAgIGZsb2F0IGMgPSB0ZXh0dXJlMkQoeSwgdGV4Y29vcmQpLnIgLSAoMTYu
MCAvIDI1Ni4wKTtcbiIKLSAgICAgICAgICAgICIgICAgZmxvYXQgZCA9IHRleHR1cmUyRCh1diwg
dGV4Y29vcmQpLnIgLSAwLjU7XG4iCi0gICAgICAgICAgICAiICAgIGZsb2F0IGUgPSB0ZXh0dXJl
MkQodXYsIHRleGNvb3JkKS5nIC0gMC41O1xuIgotICAgICAgICAgICAgIiAgICBmbG9hdCByID0g
MS4xNjQzODMgKiBjICsgMS41OTYwMjcgKiBlO1xuIgotICAgICAgICAgICAgIiAgICBmbG9hdCBn
ID0gMS4xNjQzODMgKiBjIC0gMC4zOTE3NjIgKiBkIC0gMC44MTI5NjggKiBlO1xuIgotICAgICAg
ICAgICAgIiAgICBmbG9hdCBiID0gMS4xNjQzODMgKiBjICsgMi4wMTcyMzIgKiBkO1xuIgotICAg
ICAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHIsIGcsIGIsIDEuMCk7XG4iCi0gICAg
ICAgICAgICAifVxuIjsKLSAgICB9Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9n
cmFtKHl1dlZTLCB5dXZQUyk7Ci0gICAgQVNTRVJUX05FKDB1LCBwcm9ncmFtKTsKLSAgICBHTHVp
bnQgeVVuaWZvcm0gID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInkiKTsKLSAgICBH
THVpbnQgdXZVbmlmb3JtID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInV2Iik7Ci0K
LSAgICAvLyBGZXRjaCB0aGUgRDNEMTEgZGV2aWNlCi0gICAgRUdMRGV2aWNlRVhUIGVnbERldmlj
ZTsKLSAgICBlZ2xRdWVyeURpc3BsYXlBdHRyaWJFWFQoZGlzcGxheSwgRUdMX0RFVklDRV9FWFQs
IChFR0xBdHRyaWIgKikmZWdsRGV2aWNlKTsKLSAgICBJRDNEMTFEZXZpY2UgKmRldmljZTsKLSAg
ICBlZ2xRdWVyeURldmljZUF0dHJpYkVYVChlZ2xEZXZpY2UsIEVHTF9EM0QxMV9ERVZJQ0VfQU5H
TEUsIChFR0xBdHRyaWIgKikmZGV2aWNlKTsKLQotICAgIC8vIENyZWF0ZSB0aGUgTlYxMiBEM0Qx
MSB0ZXh0dXJlCi0gICAgSFJFU1VMVCByZXM7Ci0gICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVz
YzsKLSAgICBkZXNjLldpZHRoICAgICAgICAgICAgICA9IHl1dnRlc3Rfd2lkdGg7Ci0gICAgZGVz
Yy5IZWlnaHQgICAgICAgICAgICAgPSB5dXZ0ZXN0X2hlaWdodDsKLSAgICBkZXNjLkZvcm1hdCAg
ICAgICAgICAgICA9IERYR0lfRk9STUFUX05WMTI7Ci0gICAgZGVzYy5NaXBMZXZlbHMgICAgICAg
ICAgPSAxOwotICAgIGRlc2MuQXJyYXlTaXplICAgICAgICAgID0gMTsKLSAgICBkZXNjLlNhbXBs
ZURlc2MuQ291bnQgICA9IDE7Ci0gICAgZGVzYy5TYW1wbGVEZXNjLlF1YWxpdHkgPSAwOwotICAg
IGRlc2MuVXNhZ2UgICAgICAgICAgICAgID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKLSAgICBkZXNj
LkJpbmRGbGFncyAgICAgICAgICA9IEQzRDExX0JJTkRfU0hBREVSX1JFU09VUkNFOwotICAgIGRl
c2MuQ1BVQWNjZXNzRmxhZ3MgICAgID0gMDsKLSAgICBkZXNjLk1pc2NGbGFncyAgICAgICAgICA9
IDA7Ci0KLSAgICBEM0QxMV9TVUJSRVNPVVJDRV9EQVRBIHN1YnJlczsKLSAgICBzdWJyZXMucFN5
c01lbSAgICAgICAgICA9IHl1dnRlc3RfZGF0YTsKLSAgICBzdWJyZXMuU3lzTWVtUGl0Y2ggICAg
ICA9IHl1dnRlc3Rfd2lkdGg7Ci0gICAgc3VicmVzLlN5c01lbVNsaWNlUGl0Y2ggPSB5dXZ0ZXN0
X3dpZHRoICogeXV2dGVzdF9oZWlnaHQgKiAzIC8gMjsKLQotICAgIElEM0QxMVRleHR1cmUyRCAq
dGV4dHVyZSA9IG51bGxwdHI7Ci0gICAgcmVzICAgICAgICAgICAgICAgICAgICAgID0gZGV2aWNl
LT5DcmVhdGVUZXh0dXJlMkQoJmRlc2MsICZzdWJyZXMsICZ0ZXh0dXJlKTsKLQotICAgIC8vIENy
ZWF0ZSB0aGUgc3RyZWFtCi0gICAgY29uc3QgRUdMaW50IHN0cmVhbUF0dHJpYnV0ZXNbXSA9IHsK
LSAgICAgICAgRUdMX0NPTlNVTUVSX0xBVEVOQ1lfVVNFQ19LSFIsIDAsIEVHTF9DT05TVU1FUl9B
Q1FVSVJFX1RJTUVPVVRfVVNFQ19LSFIsIDAsIEVHTF9OT05FLAotICAgIH07Ci0KLSAgICBFR0xT
dHJlYW1LSFIgc3RyZWFtID0gZWdsQ3JlYXRlU3RyZWFtS0hSKGRpc3BsYXksIHN0cmVhbUF0dHJp
YnV0ZXMpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgRUdMQXR0cmliIGNvbnN1
bWVyQXR0cmlidXRlc1tdID0gewotICAgICAgICBFR0xfQ09MT1JfQlVGRkVSX1RZUEUsCi0gICAg
ICAgIEVHTF9ZVVZfQlVGRkVSX0VYVCwKLSAgICAgICAgRUdMX1lVVl9OVU1CRVJfT0ZfUExBTkVT
X0VYVCwKLSAgICAgICAgMiwKLSAgICAgICAgRUdMX1lVVl9QTEFORTBfVEVYVFVSRV9VTklUX05W
LAotICAgICAgICAwLAotICAgICAgICBFR0xfWVVWX1BMQU5FMV9URVhUVVJFX1VOSVRfTlYsCi0g
ICAgICAgIDEsCi0gICAgICAgIEVHTF9OT05FLAotICAgIH07Ci0KLSAgICBHTHVpbnQgdGV4WzJd
OwotICAgIGdsR2VuVGV4dHVyZXMoMiwgdGV4KTsKLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVY
VFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIHRleFsw
XSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9URVhU
VVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0g
ICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUxKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfRVhURVJOQUxfT0VTLCB0ZXhbMV0pOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOwotICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgRUdMQm9vbGVhbiByZXN1bHQgPQotICAgICAg
ICBlZ2xTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dGVybmFsQXR0cmlic05WKGRpc3BsYXksIHN0
cmVhbSwgY29uc3VtZXJBdHRyaWJ1dGVzKTsKLSAgICBBU1NFUlRfRUdMX1RSVUUocmVzdWx0KTsK
LSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgIEVHTEF0dHJpYiBwcm9kdWNlckF0dHJp
YnV0ZXNbXSA9IHsKLSAgICAgICAgRUdMX05PTkUsCi0gICAgfTsKLQotICAgIHJlc3VsdCA9IGVn
bENyZWF0ZVN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTJBTkdMRShkaXNwbGF5LCBzdHJlYW0s
IHByb2R1Y2VyQXR0cmlidXRlcyk7Ci0gICAgQVNTRVJUX0VHTF9UUlVFKHJlc3VsdCk7Ci0gICAg
QVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICAvLyBJbnNlcnQgdGhlIGZyYW1lCi0gICAgRUdM
QXR0cmliIGZyYW1lQXR0cmlidXRlc1tdID0gewotICAgICAgICBFR0xfRDNEX1RFWFRVUkVfU1VC
UkVTT1VSQ0VfSURfQU5HTEUsIDAsIEVHTF9OT05FLAotICAgIH07Ci0gICAgcmVzdWx0ID0gZWds
U3RyZWFtUG9zdEQzRFRleHR1cmVOVjEyQU5HTEUoZGlzcGxheSwgc3RyZWFtLCAodm9pZCAqKXRl
eHR1cmUsIGZyYW1lQXR0cmlidXRlcyk7Ci0gICAgQVNTRVJUX0VHTF9UUlVFKHJlc3VsdCk7Ci0g
ICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBFR0xpbnQgc3RhdGU7Ci0gICAgZWdsUXVl
cnlTdHJlYW1LSFIoZGlzcGxheSwgc3RyZWFtLCBFR0xfU1RSRUFNX1NUQVRFX0tIUiwgJnN0YXRl
KTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLSAgICBBU1NFUlRfRVEoRUdMX1NUUkVBTV9T
VEFURV9ORVdfRlJBTUVfQVZBSUxBQkxFX0tIUiwgc3RhdGUpOwotCi0gICAgZWdsU3RyZWFtQ29u
c3VtZXJBY3F1aXJlS0hSKGRpc3BsYXksIHN0cmVhbSk7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNT
KCk7Ci0KLSAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7Ci0gICAgZ2xVbmlmb3JtMWkoeVVuaWZv
cm0sIDApOwotICAgIGdsVW5pZm9ybTFpKHV2VW5pZm9ybSwgMSk7Ci0gICAgZHJhd1F1YWQocHJv
Z3JhbSwgInBvc2l0aW9uIiwgMC4wZik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICBlZ2xTdHJlYW1Db25zdW1lclJlbGVhc2VLSFIoZGlzcGxheSwgc3RyZWFtKTsKLSAgICBBU1NF
UlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgIGVnbFN3YXBCdWZmZXJzKGRpc3BsYXksIHdpbmRvdy0+
Z2V0U3VyZmFjZSgpKTsKLSAgICBTYWZlUmVsZWFzZSh0ZXh0dXJlKTsKLX0KLQotQU5HTEVfSU5T
VEFOVElBVEVfVEVTVChFR0xTdHJlYW1UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJf
RDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgRVMzX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVO
R0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpKTsKLX0gIC8vIGFub255
bW91cyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9lZ2xfdGVzdHMvRUdMU3VyZmFjZVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xTdXJmYWNlVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDUxM2IwMWQ0NGU5ZGE1NzMzZWYyOTllNWYxOWU4MmU4YjFkMmQ3ZmEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xTdXJmYWNlVGVzdC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw1MTcgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIEVHTFN1cmZhY2VUZXN0
OgotLy8gICBUZXN0cyBwZXJ0YWluaW5nIHRvIGVnbDo6U3VyZmFjZS4KLS8vCi0KLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgotCi0jaW5jbHVkZSA8dmVjdG9yPgotCi0jaW5jbHVkZSAiT1NXaW5k
b3cuaCIKLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi1uYW1lc3BhY2UKLXsK
LQotY2xhc3MgRUdMU3VyZmFjZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAotewotICBwcm90
ZWN0ZWQ6Ci0gICAgRUdMU3VyZmFjZVRlc3QoKQotICAgICAgICA6IG1EaXNwbGF5KEVHTF9OT19E
SVNQTEFZKSwKLSAgICAgICAgICBtV2luZG93U3VyZmFjZShFR0xfTk9fU1VSRkFDRSksCi0gICAg
ICAgICAgbVBidWZmZXJTdXJmYWNlKEVHTF9OT19TVVJGQUNFKSwKLSAgICAgICAgICBtQ29udGV4
dChFR0xfTk9fQ09OVEVYVCksCi0gICAgICAgICAgbVNlY29uZENvbnRleHQoRUdMX05PX0NPTlRF
WFQpLAotICAgICAgICAgIG1PU1dpbmRvdyhudWxscHRyKQotICAgIHsKLSAgICB9Ci0KLSAgICB2
b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1PU1dpbmRvdyA9IENyZWF0ZU9T
V2luZG93KCk7Ci0gICAgICAgIG1PU1dpbmRvdy0+aW5pdGlhbGl6ZSgiRUdMU3VyZmFjZVRlc3Qi
LCA2NCwgNjQpOwotICAgIH0KLQotICAgIC8vIFJlbGVhc2UgYW55IHJlc291cmNlcyBjcmVhdGVk
IGluIHRoZSB0ZXN0IGJvZHkKLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIGlmIChtRGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSkKLSAgICAgICAgewotICAgICAg
ICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VS
RkFDRSwgRUdMX05PX0NPTlRFWFQpOwotCi0gICAgICAgICAgICBpZiAobVdpbmRvd1N1cmZhY2Ug
IT0gRUdMX05PX1NVUkZBQ0UpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZWdsRGVz
dHJveVN1cmZhY2UobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlKTsKLSAgICAgICAgICAgICAgICBt
V2luZG93U3VyZmFjZSA9IEVHTF9OT19TVVJGQUNFOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBpZiAobVBidWZmZXJTdXJmYWNlICE9IEVHTF9OT19TVVJGQUNFKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKG1EaXNwbGF5LCBtUGJ1ZmZlclN1
cmZhY2UpOwotICAgICAgICAgICAgICAgIG1QYnVmZmVyU3VyZmFjZSA9IEVHTF9OT19TVVJGQUNF
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobUNvbnRleHQgIT0gRUdMX05PX0NP
TlRFWFQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZWdsRGVzdHJveUNvbnRleHQo
bURpc3BsYXksIG1Db250ZXh0KTsKLSAgICAgICAgICAgICAgICBtQ29udGV4dCA9IEVHTF9OT19D
T05URVhUOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobVNlY29uZENvbnRleHQg
IT0gRUdMX05PX0NPTlRFWFQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZWdsRGVz
dHJveUNvbnRleHQobURpc3BsYXksIG1TZWNvbmRDb250ZXh0KTsKLSAgICAgICAgICAgICAgICBt
U2Vjb25kQ29udGV4dCA9IEVHTF9OT19DT05URVhUOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBlZ2xUZXJtaW5hdGUobURpc3BsYXkpOwotICAgICAgICAgICAgbURpc3BsYXkgPSBFR0xf
Tk9fRElTUExBWTsKLSAgICAgICAgfQotCi0gICAgICAgIG1PU1dpbmRvdy0+ZGVzdHJveSgpOwot
ICAgICAgICBTYWZlRGVsZXRlKG1PU1dpbmRvdyk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUobVdp
bmRvd1N1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UgJiYgbUNvbnRleHQgPT0gRUdMX05PX0NPTlRF
WFQpOwotICAgIH0KLQotICAgIHZvaWQgaW5pdGlhbGl6ZURpc3BsYXkoRUdMZW51bSBwbGF0Zm9y
bVR5cGUpCi0gICAgewotICAgICAgICBQRk5FR0xHRVRQTEFURk9STURJU1BMQVlFWFRQUk9DIGVn
bEdldFBsYXRmb3JtRGlzcGxheUVYVCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMR0VUUExBVEZP
Uk1ESVNQTEFZRVhUUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbEdldFBsYXRmb3JtRGlzcGxh
eUVYVCIpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUICE9
IG51bGxwdHIpOwotCi0gICAgICAgIHN0ZDo6dmVjdG9yPEVHTGludD4gZGlzcGxheUF0dHJpYnV0
ZXM7Ci0gICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9BTkdMRSk7Ci0gICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhwbGF0
Zm9ybVR5cGUpOwotICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX1BMQVRG
T1JNX0FOR0xFX01BWF9WRVJTSU9OX01BSk9SX0FOR0xFKTsKLSAgICAgICAgZGlzcGxheUF0dHJp
YnV0ZXMucHVzaF9iYWNrKEVHTF9ET05UX0NBUkUpOwotICAgICAgICBkaXNwbGF5QXR0cmlidXRl
cy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01JTk9SX0FOR0xFKTsK
LSAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9ET05UX0NBUkUpOwotCi0g
ICAgICAgIGlmIChwbGF0Zm9ybVR5cGUgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEOV9B
TkdMRSB8fCBwbGF0Zm9ybVR5cGUgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5H
TEUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhF
R0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEUpOwotICAgICAgICAgICAgZGlzcGxh
eUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJE
V0FSRV9BTkdMRSk7Ci0gICAgICAgIH0KLSAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9i
YWNrKEVHTF9OT05FKTsKLQotICAgICAgICBtRGlzcGxheSA9IGVnbEdldFBsYXRmb3JtRGlzcGxh
eUVYVChFR0xfUExBVEZPUk1fQU5HTEVfQU5HTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPihtT1NXaW5kb3ctPmdl
dE5hdGl2ZURpc3BsYXkoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLmRhdGEoKSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKG1E
aXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZKTsKLQotICAgICAgICBFR0xpbnQgbWFqb3JWZXJzaW9u
LCBtaW5vclZlcnNpb247Ci0gICAgICAgIEFTU0VSVF9UUlVFKGVnbEluaXRpYWxpemUobURpc3Bs
YXksICZtYWpvclZlcnNpb24sICZtaW5vclZlcnNpb24pID09IEVHTF9UUlVFKTsKLQotICAgICAg
ICBlZ2xCaW5kQVBJKEVHTF9PUEVOR0xfRVNfQVBJKTsKLSAgICAgICAgQVNTRVJUX1RSVUUoZWds
R2V0RXJyb3IoKSA9PSBFR0xfU1VDQ0VTUyk7Ci0gICAgfQotCi0gICAgdm9pZCBpbml0aWFsaXpl
U3VyZmFjZShFR0xDb25maWcgY29uZmlnKQotICAgIHsKLSAgICAgICAgbUNvbmZpZyA9IGNvbmZp
ZzsKLQotICAgICAgICBzdGQ6OnZlY3RvcjxFR0xpbnQ+IHN1cmZhY2VBdHRyaWJ1dGVzOwotICAg
ICAgICBzdXJmYWNlQXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX05PTkUpOwotICAgICAgICBzdXJm
YWNlQXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX05PTkUpOwotCi0gICAgICAgIC8vIENyZWF0ZSBm
aXJzdCB3aW5kb3cgc3VyZmFjZQotICAgICAgICBtV2luZG93U3VyZmFjZSA9IGVnbENyZWF0ZVdp
bmRvd1N1cmZhY2UobURpc3BsYXksIG1Db25maWcsIG1PU1dpbmRvdy0+Z2V0TmF0aXZlV2luZG93
KCksICZzdXJmYWNlQXR0cmlidXRlc1swXSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKGVnbEdldEVy
cm9yKCkgPT0gRUdMX1NVQ0NFU1MpOwotCi0gICAgICAgIG1QYnVmZmVyU3VyZmFjZSA9IGVnbENy
ZWF0ZVBidWZmZXJTdXJmYWNlKG1EaXNwbGF5LCBtQ29uZmlnLCAmc3VyZmFjZUF0dHJpYnV0ZXNb
MF0pOwotCi0gICAgICAgIEVHTGludCBjb250ZXh0QXR0aWJ1dGVzW10gPQotICAgICAgICB7Ci0g
ICAgICAgICAgICBFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwgMiwKLSAgICAgICAgICAgIEVH
TF9OT05FCi0gICAgICAgIH07Ci0KLSAgICAgICAgbUNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0
KG1EaXNwbGF5LCBtQ29uZmlnLCBudWxscHRyLCBjb250ZXh0QXR0aWJ1dGVzKTsKLSAgICAgICAg
QVNTRVJUX1RSVUUoZWdsR2V0RXJyb3IoKSA9PSBFR0xfU1VDQ0VTUyk7Ci0KLSAgICAgICAgbVNl
Y29uZENvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1EaXNwbGF5LCBtQ29uZmlnLCBudWxscHRy
LCBjb250ZXh0QXR0aWJ1dGVzKTsKLSAgICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0RXJyb3IoKSA9
PSBFR0xfU1VDQ0VTUyk7Ci0gICAgfQotCi0gICAgdm9pZCBpbml0aWFsaXplU3VyZmFjZVdpdGhE
ZWZhdWx0Q29uZmlnKCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IEVHTGludCBjb25maWdBdHRyaWJ1
dGVzW10gPQotICAgICAgICB7Ci0gICAgICAgICAgICBFR0xfUkVEX1NJWkUsIEVHTF9ET05UX0NB
UkUsCi0gICAgICAgICAgICBFR0xfR1JFRU5fU0laRSwgRUdMX0RPTlRfQ0FSRSwKLSAgICAgICAg
ICAgIEVHTF9CTFVFX1NJWkUsIEVHTF9ET05UX0NBUkUsCi0gICAgICAgICAgICBFR0xfQUxQSEFf
U0laRSwgRUdMX0RPTlRfQ0FSRSwKLSAgICAgICAgICAgIEVHTF9ERVBUSF9TSVpFLCBFR0xfRE9O
VF9DQVJFLAotICAgICAgICAgICAgRUdMX1NURU5DSUxfU0laRSwgRUdMX0RPTlRfQ0FSRSwKLSAg
ICAgICAgICAgIEVHTF9TQU1QTEVfQlVGRkVSUywgMCwKLSAgICAgICAgICAgIEVHTF9OT05FCi0g
ICAgICAgIH07Ci0KLSAgICAgICAgRUdMaW50IGNvbmZpZ0NvdW50OwotICAgICAgICBFR0xDb25m
aWcgY29uZmlnOwotICAgICAgICBBU1NFUlRfVFJVRShlZ2xDaG9vc2VDb25maWcobURpc3BsYXks
IGNvbmZpZ0F0dHJpYnV0ZXMsICZjb25maWcsIDEsICZjb25maWdDb3VudCkgfHwgKGNvbmZpZ0Nv
dW50ICE9IDEpID09IEVHTF9UUlVFKTsKLQotICAgICAgICBpbml0aWFsaXplU3VyZmFjZShjb25m
aWcpOwotICAgIH0KLQotICAgIEdMdWludCBjcmVhdGVQcm9ncmFtKCkKLSAgICB7Ci0gICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RWZXJ0ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNF
Ci0gICAgICAgICgKLSAgICAgICAgICAgIGF0dHJpYnV0ZSBoaWdocCB2ZWM0IHBvc2l0aW9uOwot
Ci0gICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAgICAgICAgfQotICAgICAgICApOwot
Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZSA9IFNI
QURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwg
MC4wLCAxLjApOwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIHJldHVybiBD
b21waWxlUHJvZ3JhbSh0ZXN0VmVydGV4U2hhZGVyU291cmNlLCB0ZXN0RnJhZ21lbnRTaGFkZXJT
b3VyY2UpOwotICAgIH0KLQotICAgIHZvaWQgZHJhd1dpdGhQcm9ncmFtKEdMdWludCBwcm9ncmFt
KQotICAgIHsKLSAgICAgICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDEpOwotICAgICAgICBnbENs
ZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgICAgIEdMaW50IHBvc2l0aW9uTG9jYXRp
b24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJwb3NpdGlvbiIpOwotCi0gICAgICAg
IGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKLQotICAgICAgICBjb25zdCBHTGZsb2F0IHZlcnRpY2Vz
W10gPQotICAgICAgICB7Ci0gICAgICAgICAgICAtMS4wZiwgIDEuMGYsIDAuNWYsCi0gICAgICAg
ICAgICAtMS4wZiwgLTEuMGYsIDAuNWYsCi0gICAgICAgICAgICAgMS4wZiwgLTEuMGYsIDAuNWYs
Ci0KLSAgICAgICAgICAgIC0xLjBmLCAgMS4wZiwgMC41ZiwKLSAgICAgICAgICAgICAxLjBmLCAt
MS4wZiwgMC41ZiwKLSAgICAgICAgICAgICAxLjBmLCAgMS4wZiwgMC41ZiwKLSAgICAgICAgfTsK
LQotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgMywgR0xf
RkxPQVQsIEdMX0ZBTFNFLCAwLCB2ZXJ0aWNlcyk7Ci0gICAgICAgIGdsRW5hYmxlVmVydGV4QXR0
cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7Ci0KLSAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RS
SUFOR0xFUywgMCwgNik7Ci0KLSAgICAgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkocG9z
aXRpb25Mb2NhdGlvbik7Ci0gICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxv
Y2F0aW9uLCA0LCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIE5VTEwpOwotCi0gICAgICAgIEVYUEVD
VF9QSVhFTF9FUShtT1NXaW5kb3ctPmdldFdpZHRoKCkgLyAyLCBtT1NXaW5kb3ctPmdldEhlaWdo
dCgpIC8gMiwgMjU1LCAwLCAwLCAyNTUpOwotICAgIH0KLQotICAgIHZvaWQgcnVuTWVzc2FnZUxv
b3BUZXN0KEVHTFN1cmZhY2Ugc2Vjb25kU3VyZmFjZSwgRUdMQ29udGV4dCBzZWNvbmRDb250ZXh0
KQotICAgIHsKLSAgICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIG1XaW5kb3dTdXJmYWNl
LCBtV2luZG93U3VyZmFjZSwgbUNvbnRleHQpOwotICAgICAgICBBU1NFUlRfVFJVRShlZ2xHZXRF
cnJvcigpID09IEVHTF9TVUNDRVNTKTsKLQotICAgICAgICAvLyBNYWtlIGEgc2Vjb25kIGNvbnRl
eHQgY3VycmVudAotICAgICAgICBlZ2xNYWtlQ3VycmVudChtRGlzcGxheSwgc2Vjb25kU3VyZmFj
ZSwgc2Vjb25kU3VyZmFjZSwgc2Vjb25kQ29udGV4dCk7Ci0gICAgICAgIGVnbERlc3Ryb3lTdXJm
YWNlKG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSk7Ci0KLSAgICAgICAgLy8gQ3JlYXRlIHNlY29u
ZCB3aW5kb3cgc3VyZmFjZQotICAgICAgICBzdGQ6OnZlY3RvcjxFR0xpbnQ+IHN1cmZhY2VBdHRy
aWJ1dGVzOwotICAgICAgICBzdXJmYWNlQXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX05PTkUpOwot
ICAgICAgICBzdXJmYWNlQXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX05PTkUpOwotCi0gICAgICAg
IG1XaW5kb3dTdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZShtRGlzcGxheSwgbUNvbmZp
ZywgbU9TV2luZG93LT5nZXROYXRpdmVXaW5kb3coKSwgJnN1cmZhY2VBdHRyaWJ1dGVzWzBdKTsK
LSAgICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0RXJyb3IoKSA9PSBFR0xfU1VDQ0VTUyk7Ci0KLSAg
ICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlLCBtV2luZG93U3Vy
ZmFjZSwgbUNvbnRleHQpOwotICAgICAgICBBU1NFUlRfVFJVRShlZ2xHZXRFcnJvcigpID09IEVH
TF9TVUNDRVNTKTsKLQotICAgICAgICBtT1NXaW5kb3ctPnNpZ25hbFRlc3RFdmVudCgpOwotICAg
ICAgICBtT1NXaW5kb3ctPm1lc3NhZ2VMb29wKCk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKG1PU1dp
bmRvdy0+ZGlkVGVzdEV2ZW50RmlyZSgpKTsKLQotICAgICAgICAvLyBTaW1wbGUgb3BlcmF0aW9u
IHRvIHRlc3QgdGhlIEZCTyBpcyBzZXQgYXBwcm9wcmlhdGVseQotICAgICAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIH0KLQotICAgIEVHTERpc3BsYXkgbURpc3BsYXk7Ci0g
ICAgRUdMU3VyZmFjZSBtV2luZG93U3VyZmFjZTsKLSAgICBFR0xTdXJmYWNlIG1QYnVmZmVyU3Vy
ZmFjZTsKLSAgICBFR0xDb250ZXh0IG1Db250ZXh0OwotICAgIEVHTENvbnRleHQgbVNlY29uZENv
bnRleHQ7Ci0gICAgRUdMQ29uZmlnIG1Db25maWc7Ci0gICAgT1NXaW5kb3cgKm1PU1dpbmRvdzsK
LX07Ci0KLS8vIFRlc3QgYSBzdXJmYWNlIGJ1ZyB3aGVyZSB3ZSBjb3VsZCBoYXZlIHR3byBXaW5k
b3cgc3VyZmFjZXMgYWN0aXZlCi0vLyBhdCBvbmUgdGltZSwgYmxvY2tpbmcgbWVzc2FnZSBsb29w
cy4gU2VlIGh0dHA6Ly9jcmJ1Zy5jb20vNDc1MDg1Ci1URVNUX0YoRUdMU3VyZmFjZVRlc3QsIE1l
c3NhZ2VMb29wQnVnKQotewotICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvbnNTdHJpbmcgPSBlZ2xR
dWVyeVN0cmluZyhFR0xfTk9fRElTUExBWSwgRUdMX0VYVEVOU0lPTlMpOwotICAgIGlmIChzdHJz
dHIoZXh0ZW5zaW9uc1N0cmluZywgIkVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kM2QiKSA9PSBu
dWxscHRyKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJEM0QgUGxhdGZvcm0gbm90IHN1
cHBvcnRlZCBpbiBBTkdMRSIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaW5pdGlhbGl6ZURpc3BsYXkoRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5H
TEUpOwotICAgIGluaXRpYWxpemVTdXJmYWNlV2l0aERlZmF1bHRDb25maWcoKTsKLQotICAgIHJ1
bk1lc3NhZ2VMb29wVGVzdChFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwotfQotCi0v
LyBUZXN0cyB0aGUgbWVzc2FnZSBsb29wIGJ1ZywgYnV0IHdpdGggc2V0dGluZyBhIHNlY29uZCBj
b250ZXh0Ci0vLyBpbnN0ZWFkIG9mIG51bGwuCi1URVNUX0YoRUdMU3VyZmFjZVRlc3QsIE1lc3Nh
Z2VMb29wQnVnQ29udGV4dCkKLXsKLSAgICBjb25zdCBjaGFyICpleHRlbnNpb25zU3RyaW5nID0g
ZWdsUXVlcnlTdHJpbmcoRUdMX05PX0RJU1BMQVksIEVHTF9FWFRFTlNJT05TKTsKLSAgICBpZiAo
c3Ryc3RyKGV4dGVuc2lvbnNTdHJpbmcsICJFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfZDNkIikg
PT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiRDNEIFBsYXRmb3JtIG5v
dCBzdXBwb3J0ZWQgaW4gQU5HTEUiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGluaXRpYWxpemVEaXNwbGF5KEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDEx
X0FOR0xFKTsKLSAgICBpbml0aWFsaXplU3VyZmFjZVdpdGhEZWZhdWx0Q29uZmlnKCk7Ci0KLSAg
ICBydW5NZXNzYWdlTG9vcFRlc3QobVBidWZmZXJTdXJmYWNlLCBtU2Vjb25kQ29udGV4dCk7Ci19
Ci0KLS8vIFRlc3QgYSBidWcgd2hlcmUgY2FsbGluZyBtYWtlQ3VycmVudCB0d2ljZSB3b3VsZCBy
ZWxlYXNlIHRoZSBzdXJmYWNlCi1URVNUX0YoRUdMU3VyZmFjZVRlc3QsIE1ha2VDdXJyZW50VHdp
Y2UpCi17Ci0jaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9BUFBMRSkgJiYgIWRlZmluZWQoQU5H
TEVfU1RBTkRBTE9ORV9CVUlMRCkKLSAgICAvLyBUT0RPKGN3YWxsZXopIE1ha2UgY29udGV4dCBj
cmVhdGlvbiByZXR1cm4gYXQgbGVhc3QgYW4gT3BlbkdMIEVTIDIgY29udGV4dCBvbgotICAgIC8v
IHRoZSBNYWMgdHJ5Ym90cy4KLSAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCB0ZW1wb3Jh
cmlseSBza2lwcGVkIG9uIHRoZSBNYWMgdHJ5Ym90cyIgPDwgc3RkOjplbmRsOwotICAgIHJldHVy
bjsKLSNlbmRpZgotCi0gICAgaW5pdGlhbGl6ZURpc3BsYXkoRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfREVGQVVMVF9BTkdMRSk7Ci0gICAgaW5pdGlhbGl6ZVN1cmZhY2VXaXRoRGVmYXVsdENvbmZp
ZygpOwotCi0gICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlLCBtV2lu
ZG93U3VyZmFjZSwgbUNvbnRleHQpOwotICAgIEFTU0VSVF9UUlVFKGVnbEdldEVycm9yKCkgPT0g
RUdMX1NVQ0NFU1MpOwotCi0gICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIG1XaW5kb3dTdXJm
YWNlLCBtV2luZG93U3VyZmFjZSwgbUNvbnRleHQpOwotICAgIEFTU0VSVF9UUlVFKGVnbEdldEVy
cm9yKCkgPT0gRUdMX1NVQ0NFU1MpOwotCi0gICAgLy8gU2ltcGxlIG9wZXJhdGlvbiB0byB0ZXN0
IHRoZSBGQk8gaXMgc2V0IGFwcHJvcHJpYXRlbHkKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZF
Ul9CSVQpOwotfQotCi0vLyBUZXN0IHRoYXQgdGhlIEQzRCB3aW5kb3cgc3VyZmFjZSBpcyBjb3Jy
ZWN0bHkgcmVzaXplZCBhZnRlciBjYWxsaW5nIHN3YXBCdWZmZXJzCi1URVNUX0YoRUdMU3VyZmFj
ZVRlc3QsIFJlc2l6ZUQzRFdpbmRvdykKLXsKLSAgICBjb25zdCBjaGFyICpleHRlbnNpb25zU3Ry
aW5nID0gZWdsUXVlcnlTdHJpbmcoRUdMX05PX0RJU1BMQVksIEVHTF9FWFRFTlNJT05TKTsKLSAg
ICBpZiAoc3Ryc3RyKGV4dGVuc2lvbnNTdHJpbmcsICJFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVf
ZDNkIikgPT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiRDNEIFBsYXRm
b3JtIG5vdCBzdXBwb3J0ZWQgaW4gQU5HTEUiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGluaXRpYWxpemVEaXNwbGF5KEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X0QzRDExX0FOR0xFKTsKLSAgICBpbml0aWFsaXplU3VyZmFjZVdpdGhEZWZhdWx0Q29uZmlnKCk7
Ci0KLSAgICBlZ2xTd2FwQnVmZmVycyhtRGlzcGxheSwgbVdpbmRvd1N1cmZhY2UpOwotICAgIEFT
U0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgRUdMaW50IGhlaWdodDsKLSAgICBlZ2xRdWVyeVN1
cmZhY2UobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0KTsKLSAg
ICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLSAgICBBU1NFUlRfRVEoNjQsIGhlaWdodCk7ICAvLyBp
bml0aWFsIHNpemUKLQotICAgIC8vIHNldCB3aW5kb3cncyBoZWlnaHQgdG8gMAotICAgIG1PU1dp
bmRvdy0+cmVzaXplKDY0LCAwKTsKLQotICAgIGVnbFN3YXBCdWZmZXJzKG1EaXNwbGF5LCBtV2lu
ZG93U3VyZmFjZSk7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBlZ2xRdWVyeVN1
cmZhY2UobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0KTsKLSAg
ICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLSAgICBBU1NFUlRfRVEoMCwgaGVpZ2h0KTsKLQotICAg
IC8vIHJlc3RvcmUgd2luZG93J3MgaGVpZ2h0Ci0gICAgbU9TV2luZG93LT5yZXNpemUoNjQsIDY0
KTsKLQotICAgIGVnbFN3YXBCdWZmZXJzKG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSk7Ci0gICAg
QVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBlZ2xRdWVyeVN1cmZhY2UobURpc3BsYXksIG1X
aW5kb3dTdXJmYWNlLCBFR0xfSEVJR0hULCAmaGVpZ2h0KTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NF
U1MoKTsKLSAgICBBU1NFUlRfRVEoNjQsIGhlaWdodCk7Ci19Ci0KLS8vIFRlc3QgY3JlYXRpbmcg
YSBzdXJmYWNlIHRoYXQgc3VwcG9ydHMgYSBFR0xDb25maWcgd2l0aCAxNmJpdAotLy8gc3VwcG9y
dCBHTF9SR0I1NjUKLVRFU1RfRihFR0xTdXJmYWNlVGVzdCwgQ3JlYXRlV2l0aEVHTENvbmZpZzU2
NTBTdXBwb3J0KQotewotICAgIGlmICghQU5HTEVUZXN0OjplZ2xEaXNwbGF5RXh0ZW5zaW9uRW5h
YmxlZChFR0xfTk9fRElTUExBWSwgIkVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kM2QiKSkKLSAg
ICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiRDNEIFBsYXRmb3JtIG5vdCBzdXBwb3J0ZWQgaW4g
QU5HTEUiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0
IEVHTGludCBjb25maWdBdHRyaWJ1dGVzW10gPQotICAgIHsKLSAgICAgICAgRUdMX1JFRF9TSVpF
LCA1LAotICAgICAgICBFR0xfR1JFRU5fU0laRSwgNiwKLSAgICAgICAgRUdMX0JMVUVfU0laRSwg
NSwKLSAgICAgICAgRUdMX0FMUEhBX1NJWkUsIDAsCi0gICAgICAgIEVHTF9ERVBUSF9TSVpFLCAw
LAotICAgICAgICBFR0xfU1RFTkNJTF9TSVpFLCAwLAotICAgICAgICBFR0xfU0FNUExFX0JVRkZF
UlMsIDAsCi0gICAgICAgIEVHTF9OT05FCi0gICAgfTsKLQotICAgIGluaXRpYWxpemVEaXNwbGF5
KEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKTsKLSAgICBFR0xDb25maWcgY29u
ZmlnOwotICAgIGlmIChFR0xXaW5kb3c6OkZpbmRFR0xDb25maWcobURpc3BsYXksIGNvbmZpZ0F0
dHJpYnV0ZXMsICZjb25maWcpID09IEVHTF9GQUxTRSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291
dCA8PCAiRUdMQ29uZmlnIGZvciBhIEdMX1JHQjU2NSBzdXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQs
IHNraXBwaW5nIHRlc3QiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGluaXRpYWxpemVTdXJmYWNlKGNvbmZpZyk7Ci0KLSAgICBlZ2xNYWtlQ3VycmVudChtRGlz
cGxheSwgbVdpbmRvd1N1cmZhY2UsIG1XaW5kb3dTdXJmYWNlLCBtQ29udGV4dCk7Ci0gICAgQVNT
RVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IGNyZWF0ZVByb2dyYW0o
KTsKLSAgICBBU1NFUlRfTkUoMHUsIHByb2dyYW0pOwotICAgIGRyYXdXaXRoUHJvZ3JhbShwcm9n
cmFtKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBnbERlbGV0ZVByb2dyYW0ocHJv
Z3JhbSk7Ci19Ci0KLS8vIFRlc3QgY3JlYXRpbmcgYSBzdXJmYWNlIHRoYXQgc3VwcG9ydHMgYSBF
R0xDb25maWcgd2l0aCAxNmJpdAotLy8gc3VwcG9ydCBHTF9SR0JBNAotVEVTVF9GKEVHTFN1cmZh
Y2VUZXN0LCBDcmVhdGVXaXRoRUdMQ29uZmlnNDQ0NFN1cHBvcnQpCi17Ci0gICAgaWYgKCFBTkdM
RVRlc3Q6OmVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKEVHTF9OT19ESVNQTEFZLCAiRUdMX0FO
R0xFX3BsYXRmb3JtX2FuZ2xlX2QzZCIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJE
M0QgUGxhdGZvcm0gbm90IHN1cHBvcnRlZCBpbiBBTkdMRSIgPDwgc3RkOjplbmRsOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgY29uc3QgRUdMaW50IGNvbmZpZ0F0dHJpYnV0ZXNbXSA9
Ci0gICAgewotICAgICAgICBFR0xfUkVEX1NJWkUsIDQsCi0gICAgICAgIEVHTF9HUkVFTl9TSVpF
LCA0LAotICAgICAgICBFR0xfQkxVRV9TSVpFLCA0LAotICAgICAgICBFR0xfQUxQSEFfU0laRSwg
NCwKLSAgICAgICAgRUdMX0RFUFRIX1NJWkUsIDAsCi0gICAgICAgIEVHTF9TVEVOQ0lMX1NJWkUs
IDAsCi0gICAgICAgIEVHTF9TQU1QTEVfQlVGRkVSUywgMCwKLSAgICAgICAgRUdMX05PTkUKLSAg
ICB9OwotCi0gICAgaW5pdGlhbGl6ZURpc3BsYXkoRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNE
MTFfQU5HTEUpOwotICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAgaWYgKEVHTFdpbmRvdzo6Rmlu
ZEVHTENvbmZpZyhtRGlzcGxheSwgY29uZmlnQXR0cmlidXRlcywgJmNvbmZpZykgPT0gRUdMX0ZB
TFNFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJFR0xDb25maWcgZm9yIGEgR0xfUkdC
QTQgc3VyZmFjZSBpcyBub3Qgc3VwcG9ydGVkLCBza2lwcGluZyB0ZXN0IiA8PCBzdGQ6OmVuZGw7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbml0aWFsaXplU3VyZmFjZShjb25maWcp
OwotCi0gICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlLCBtV2luZG93
U3VyZmFjZSwgbUNvbnRleHQpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgR0x1
aW50IHByb2dyYW0gPSBjcmVhdGVQcm9ncmFtKCk7Ci0gICAgQVNTRVJUX05FKDB1LCBwcm9ncmFt
KTsKLSAgICBkcmF3V2l0aFByb2dyYW0ocHJvZ3JhbSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Ci0gICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOwotfQotCi0vLyBUZXN0IGNyZWF0aW5n
IGEgc3VyZmFjZSB0aGF0IHN1cHBvcnRzIGEgRUdMQ29uZmlnIHdpdGggMTZiaXQKLS8vIHN1cHBv
cnQgR0xfUkdCNV9BMQotVEVTVF9GKEVHTFN1cmZhY2VUZXN0LCBDcmVhdGVXaXRoRUdMQ29uZmln
NTU1MVN1cHBvcnQpCi17Ci0gICAgaWYgKCFBTkdMRVRlc3Q6OmVnbERpc3BsYXlFeHRlbnNpb25F
bmFibGVkKEVHTF9OT19ESVNQTEFZLCAiRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX2QzZCIpKQot
ICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJEM0QgUGxhdGZvcm0gbm90IHN1cHBvcnRlZCBp
biBBTkdMRSIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29u
c3QgRUdMaW50IGNvbmZpZ0F0dHJpYnV0ZXNbXSA9Ci0gICAgewotICAgICAgICBFR0xfUkVEX1NJ
WkUsIDUsCi0gICAgICAgIEVHTF9HUkVFTl9TSVpFLCA1LAotICAgICAgICBFR0xfQkxVRV9TSVpF
LCA1LAotICAgICAgICBFR0xfQUxQSEFfU0laRSwgMSwKLSAgICAgICAgRUdMX0RFUFRIX1NJWkUs
IDAsCi0gICAgICAgIEVHTF9TVEVOQ0lMX1NJWkUsIDAsCi0gICAgICAgIEVHTF9TQU1QTEVfQlVG
RkVSUywgMCwKLSAgICAgICAgRUdMX05PTkUKLSAgICB9OwotCi0gICAgaW5pdGlhbGl6ZURpc3Bs
YXkoRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpOwotICAgIEVHTENvbmZpZyBj
b25maWc7Ci0gICAgaWYgKEVHTFdpbmRvdzo6RmluZEVHTENvbmZpZyhtRGlzcGxheSwgY29uZmln
QXR0cmlidXRlcywgJmNvbmZpZykgPT0gRUdMX0ZBTFNFKQotICAgIHsKLSAgICAgICAgc3RkOjpj
b3V0IDw8ICJFR0xDb25maWcgZm9yIGEgR0xfUkdCNV9BMSBzdXJmYWNlIGlzIG5vdCBzdXBwb3J0
ZWQsIHNraXBwaW5nIHRlc3QiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGluaXRpYWxpemVTdXJmYWNlKGNvbmZpZyk7Ci0KLSAgICBlZ2xNYWtlQ3VycmVudCht
RGlzcGxheSwgbVdpbmRvd1N1cmZhY2UsIG1XaW5kb3dTdXJmYWNlLCBtQ29udGV4dCk7Ci0gICAg
QVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IGNyZWF0ZVByb2dy
YW0oKTsKLSAgICBBU1NFUlRfTkUoMHUsIHByb2dyYW0pOwotICAgIGRyYXdXaXRoUHJvZ3JhbShw
cm9ncmFtKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBnbERlbGV0ZVByb2dyYW0o
cHJvZ3JhbSk7Ci19Ci0KLS8vIFRlc3QgY3JlYXRpbmcgYSBzdXJmYWNlIHRoYXQgc3VwcG9ydHMg
YSBFR0xDb25maWcgd2l0aG91dCBhbHBoYSBzdXBwb3J0Ci1URVNUX0YoRUdMU3VyZmFjZVRlc3Qs
IENyZWF0ZVdpdGhFR0xDb25maWc4ODgwU3VwcG9ydCkKLXsKLSAgICBpZiAoIUFOR0xFVGVzdDo6
ZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQoRUdMX05PX0RJU1BMQVksICJFR0xfQU5HTEVfcGxh
dGZvcm1fYW5nbGVfZDNkIikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIkQzRCBQbGF0
Zm9ybSBub3Qgc3VwcG9ydGVkIGluIEFOR0xFIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBjb25zdCBFR0xpbnQgY29uZmlnQXR0cmlidXRlc1tdID0KLSAgICB7
Ci0gICAgICAgIEVHTF9SRURfU0laRSwgOCwKLSAgICAgICAgRUdMX0dSRUVOX1NJWkUsIDgsCi0g
ICAgICAgIEVHTF9CTFVFX1NJWkUsIDgsCi0gICAgICAgIEVHTF9BTFBIQV9TSVpFLCAwLAotICAg
ICAgICBFR0xfREVQVEhfU0laRSwgMCwKLSAgICAgICAgRUdMX1NURU5DSUxfU0laRSwgMCwKLSAg
ICAgICAgRUdMX1NBTVBMRV9CVUZGRVJTLCAwLAotICAgICAgICBFR0xfTk9ORQotICAgIH07Ci0K
LSAgICBpbml0aWFsaXplRGlzcGxheShFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdM
RSk7Ci0gICAgRUdMQ29uZmlnIGNvbmZpZzsKLSAgICBpZiAoRUdMV2luZG93OjpGaW5kRUdMQ29u
ZmlnKG1EaXNwbGF5LCBjb25maWdBdHRyaWJ1dGVzLCAmY29uZmlnKSA9PSBFR0xfRkFMU0UpCi0g
ICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIkVHTENvbmZpZyBmb3IgYSBHTF9SR0I4X09FUyBz
dXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQsIHNraXBwaW5nIHRlc3QiCi0gICAgICAgICAgICAgICAg
ICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbml0aWFsaXpl
U3VyZmFjZShjb25maWcpOwotCi0gICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIG1XaW5kb3dT
dXJmYWNlLCBtV2luZG93U3VyZmFjZSwgbUNvbnRleHQpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VT
UygpOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBjcmVhdGVQcm9ncmFtKCk7Ci0gICAgQVNTRVJU
X05FKDB1LCBwcm9ncmFtKTsKLSAgICBkcmF3V2l0aFByb2dyYW0ocHJvZ3JhbSk7Ci0gICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOwotfQotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9F
R0xTeW5jQ29udHJvbFRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2VnbF90ZXN0cy9FR0xTeW5jQ29udHJvbFRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3OTM5MTA5NzAzNzM1ZmQzNzdjNTEwMGJkMjI2ZThlMmFhYzM3MmQ1Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMU3luY0NvbnRyb2xUZXN0LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDI3MCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
LS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaWZuZGVmIEFOR0xFX0VOQUJM
RV9EM0Q5Ci0jZGVmaW5lIEFOR0xFX0VOQUJMRV9EM0Q5Ci0jZW5kaWYKLQotI2lmbmRlZiBBTkdM
RV9FTkFCTEVfRDNEMTEKLSNkZWZpbmUgQU5HTEVfRU5BQkxFX0QzRDExCi0jZW5kaWYKLQotI2lu
Y2x1ZGUgPGQzZDExLmg+Ci0jaW5jbHVkZSA8RUdML2VnbC5oPgotI2luY2x1ZGUgPEVHTC9lZ2xl
eHQuaD4KLQotI2luY2x1ZGUgImNvbV91dGlscy5oIgotI2luY2x1ZGUgIk9TV2luZG93LmgiCi0j
aW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xl
OwotCi10eXBlZGVmIEVHTEJvb2xlYW4oRUdMQVBJRU5UUllQIFBGTkVHTEdFVFNZTkNWQUxVRVND
SFJPTUlVTVBST0MpKEVHTERpc3BsYXkgZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xTdXJmYWNlIHN1cmZhY2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTHVpbnQ2NEtIUiAqdXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0x1aW50NjRLSFIgKm1zYywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRUdMdWludDY0S0hSICpzYmMpOwotCi1jbGFzcyBFR0xTeW5jQ29udHJvbFRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgRUdMU3luY0NvbnRy
b2xUZXN0KCkge30KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAg
bUQzRDExTW9kdWxlID0gTG9hZExpYnJhcnkoVEVYVCgiZDNkMTEuZGxsIikpOwotICAgICAgICBp
ZiAobUQzRDExTW9kdWxlID09IG51bGxwdHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6
Y291dCA8PCAiVW5hYmxlIHRvIExvYWRMaWJyYXJ5IEQzRDExIiA8PCBzdGQ6OmVuZGw7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtRDNEMTFDcmVhdGVEZXZpY2Ug
PSByZWludGVycHJldF9jYXN0PFBGTl9EM0QxMV9DUkVBVEVfREVWSUNFPigKLSAgICAgICAgICAg
IEdldFByb2NBZGRyZXNzKG1EM0QxMU1vZHVsZSwgIkQzRDExQ3JlYXRlRGV2aWNlIikpOwotICAg
ICAgICBpZiAobUQzRDExQ3JlYXRlRGV2aWNlID09IG51bGxwdHIpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHN0ZDo6Y291dCA8PCAiQ291bGQgbm90IHJldHJpZXZlIEQzRDExQ3JlYXRlRGV2aWNl
IGZyb20gZDNkMTEuZGxsIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBtRDNEMTFBdmFpbGFibGUgPSB0cnVlOwotCi0gICAgICAgIGNvbnN0
IGNoYXIgKmV4dGVuc2lvblN0cmluZyA9Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBj
aGFyICo+KGVnbFF1ZXJ5U3RyaW5nKEVHTF9OT19ESVNQTEFZLCBFR0xfRVhURU5TSU9OUykpOwot
ICAgICAgICBpZiAoc3Ryc3RyKGV4dGVuc2lvblN0cmluZywgIkVHTF9BTkdMRV9kZXZpY2VfY3Jl
YXRpb24iKSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHN0cnN0cihleHRlbnNpb25TdHJp
bmcsICJFR0xfQU5HTEVfZGV2aWNlX2NyZWF0aW9uX2QzZDExIikpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgbURldmljZUNyZWF0aW9uRDNEMTFFeHRBdmFpbGFibGUgPSB0cnVlOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZWdsR2V0U3luY1ZhbHVlc0NIUk9N
SVVNID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xHRVRTWU5DVkFMVUVTQ0hST01JVU1QUk9DPigK
LSAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJlZ2xHZXRTeW5jVmFsdWVzQ0hST01JVU0i
KSk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBTYWZlUmVsZWFzZShtRGV2aWNlKTsKLSAgICAgICAgU2FmZVJlbGVhc2UobURldmljZUNvbnRl
eHQpOwotCi0gICAgICAgIFNhZmVEZWxldGUobU9TV2luZG93KTsKLQotICAgICAgICBpZiAobVN1
cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVnbERlc3Ry
b3lTdXJmYWNlKG1EaXNwbGF5LCBtU3VyZmFjZSk7Ci0gICAgICAgICAgICBtU3VyZmFjZSA9IEVH
TF9OT19TVVJGQUNFOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1Db250ZXh0ICE9IEVHTF9O
T19DT05URVhUKQotICAgICAgICB7Ci0gICAgICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChtRGlz
cGxheSwgbUNvbnRleHQpOwotICAgICAgICAgICAgbUNvbnRleHQgPSBFR0xfTk9fQ09OVEVYVDsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChtRGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSkKLSAg
ICAgICAgewotICAgICAgICAgICAgZWdsVGVybWluYXRlKG1EaXNwbGF5KTsKLSAgICAgICAgICAg
IG1EaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lk
IENyZWF0ZUQzRDExRGV2aWNlKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9UUlVFKG1EM0QxMUF2
YWlsYWJsZSk7Ci0gICAgICAgIEFTU0VSVF9FUShudWxscHRyLCBtRGV2aWNlKTsgIC8vIFRoZSBk
ZXZpY2Ugc2hvdWxkbid0IGJlIGNyZWF0ZWQgdHdpY2UKLQotICAgICAgICBIUkVTVUxUIGhyID0K
LSAgICAgICAgICAgIG1EM0QxMUNyZWF0ZURldmljZShudWxscHRyLCBEM0RfRFJJVkVSX1RZUEVf
SEFSRFdBUkUsIDAsIDAsIG51bGxwdHIsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRDNEMTFfU0RLX1ZFUlNJT04sICZtRGV2aWNlLCAmbUZlYXR1cmVMZXZlbCwgJm1EZXZpY2VD
b250ZXh0KTsKLQotICAgICAgICBBU1NFUlRfVFJVRShTVUNDRUVERUQoaHIpKTsKLSAgICB9Ci0K
LSAgICB2b2lkIEluaXRpYWxpemVEaXNwbGF5KCkKLSAgICB7Ci0gICAgICAgIEVHTGludCBkaXNw
bGF5QXR0cmlic1tdID0ge0VHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9B
TkdMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX1BMQVRGT1JNX0FO
R0xFX01BWF9WRVJTSU9OX01BSk9SX0FOR0xFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xfRE9OVF9DQVJFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUlOT1JfQU5HTEUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9ET05UX0NBUkUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9BTkdMRSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RF
VklDRV9UWVBFX0hBUkRXQVJFX0FOR0xFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFR0xfTk9ORX07Ci0KLSAgICAgICAgLy8gQ3JlYXRlIGFuIE9TIFdpbmRvdwotICAgICAg
ICBtT1NXaW5kb3cgPSBDcmVhdGVPU1dpbmRvdygpOwotICAgICAgICBtT1NXaW5kb3ctPmluaXRp
YWxpemUoIkVHTFN5bmNDb250cm9sVGVzdCIsIDY0LCA2NCk7Ci0gICAgICAgIG1PU1dpbmRvdy0+
c2V0VmlzaWJsZSh0cnVlKTsKLQotICAgICAgICAvLyBDcmVhdGUgYW4gRUdMRGlzcGxheSB1c2lu
ZyB0aGUgRUdMRGV2aWNlCi0gICAgICAgIG1EaXNwbGF5ID0gZWdsR2V0UGxhdGZvcm1EaXNwbGF5
RVhUKEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KG1PU1dpbmRvdy0+Z2V0
TmF0aXZlRGlzcGxheSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGlzcGxheUF0dHJpYnMpOwotICAgICAgICBBU1NFUlRfVFJVRShtRGlzcGxheSAhPSBF
R0xfTk9fRElTUExBWSk7Ci0KLSAgICAgICAgRUdMaW50IG1ham9yVmVyc2lvbiwgbWlub3JWZXJz
aW9uOwotICAgICAgICBBU1NFUlRfVFJVRShlZ2xJbml0aWFsaXplKG1EaXNwbGF5LCAmbWFqb3JW
ZXJzaW9uLCAmbWlub3JWZXJzaW9uKSA9PSBFR0xfVFJVRSk7Ci0gICAgfQotCi0gICAgdm9pZCBD
cmVhdGVXaW5kb3dTdXJmYWNlKCkKLSAgICB7Ci0gICAgICAgIGVnbEJpbmRBUEkoRUdMX09QRU5H
TF9FU19BUEkpOwotICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgICAgICAvLyBD
aG9vc2UgYSBjb25maWcKLSAgICAgICAgY29uc3QgRUdMaW50IGNvbmZpZ0F0dHJpYnV0ZXNbXSA9
IHtFR0xfTk9ORX07Ci0KLSAgICAgICAgRUdMaW50IGNvbmZpZ0NvdW50ID0gMDsKLSAgICAgICAg
QVNTRVJUX0VHTF9UUlVFKGVnbENob29zZUNvbmZpZyhtRGlzcGxheSwgY29uZmlnQXR0cmlidXRl
cywgJm1Db25maWcsIDEsICZjb25maWdDb3VudCkpOwotCi0gICAgICAgIGNvbnN0IEVHTGludCBz
dXJmYWNlQXR0cmlidXRlc1tdID0ge0VHTF9ESVJFQ1RfQ09NUE9TSVRJT05fQU5HTEUsIEVHTF9U
UlVFLCBFR0xfTk9ORX07Ci0KLSAgICAgICAgLy8gQ3JlYXRlIHdpbmRvdyBzdXJmYWNlCi0gICAg
ICAgIG1TdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZShtRGlzcGxheSwgbUNvbmZpZywg
bU9TV2luZG93LT5nZXROYXRpdmVXaW5kb3coKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN1cmZhY2VBdHRyaWJ1dGVzKTsKLSAgICAgICAgaWYgKG1TdXJmYWNl
ID09IG51bGxwdHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiVW5hYmxl
IHRvIGNyZWF0ZSB3aW5kb3cgc3VyZmFjZSB3aXRoIERpcmVjdCBDb21wb3NpdGlvbiIgPDwgc3Rk
OjplbmRsOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbURpcmVj
dENvbXBvc2l0aW9uU3VyZmFjZUF2YWlsYWJsZSA9IHRydWU7Ci0KLSAgICAgICAgLy8gQ3JlYXRl
IEVHTCBjb250ZXh0Ci0gICAgICAgIEVHTGludCBjb250ZXh0QXR0aWJ1dGVzW10gPSB7RUdMX0NP
TlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsIEVHTF9OT05FfTsKLQotICAgICAgICBtQ29udGV4dCA9
IGVnbENyZWF0ZUNvbnRleHQobURpc3BsYXksIG1Db25maWcsIG51bGxwdHIsIGNvbnRleHRBdHRp
YnV0ZXMpOwotICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgICAgICAvLyBNYWtl
IHRoZSBzdXJmYWNlIGN1cnJlbnQKLSAgICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIG1T
dXJmYWNlLCBtU3VyZmFjZSwgbUNvbnRleHQpOwotICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1Mo
KTsKLSAgICB9Ci0KLSAgICBib29sIG1EM0QxMUF2YWlsYWJsZSAgICAgICAgICAgICAgICAgICAg
ICAgPSBmYWxzZTsKLSAgICBITU9EVUxFIG1EM0QxMU1vZHVsZSAgICAgICAgICAgICAgICAgICAg
ICAgPSBudWxscHRyOwotICAgIFBGTl9EM0QxMV9DUkVBVEVfREVWSUNFIG1EM0QxMUNyZWF0ZURl
dmljZSA9IG51bGxwdHI7Ci0KLSAgICBJRDNEMTFEZXZpY2UgKm1EZXZpY2UgICAgICAgICAgICAg
ICA9IG51bGxwdHI7Ci0gICAgSUQzRDExRGV2aWNlQ29udGV4dCAqbURldmljZUNvbnRleHQgPSBu
dWxscHRyOwotICAgIEQzRF9GRUFUVVJFX0xFVkVMIG1GZWF0dXJlTGV2ZWw7Ci0KLSAgICBib29s
IG1EZXZpY2VDcmVhdGlvbkQzRDExRXh0QXZhaWxhYmxlID0gZmFsc2U7Ci0KLSAgICBib29sIG1E
aXJlY3RDb21wb3NpdGlvblN1cmZhY2VBdmFpbGFibGUgPSBmYWxzZTsKLQotICAgIE9TV2luZG93
ICptT1NXaW5kb3cgPSBudWxscHRyOwotCi0gICAgRUdMRGlzcGxheSBtRGlzcGxheSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBFR0xfTk9fRElTUExBWTsKLSAgICBFR0xT
dXJmYWNlIG1TdXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEVH
TF9OT19TVVJGQUNFOwotICAgIEVHTENvbnRleHQgbUNvbnRleHQgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gRUdMX05PX0NPTlRFWFQ7Ci0gICAgRUdMQ29uZmlnIG1Db25m
aWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAwOwotICAgIFBGTkVH
TEdFVFNZTkNWQUxVRVNDSFJPTUlVTVBST0MgZWdsR2V0U3luY1ZhbHVlc0NIUk9NSVVNID0gbnVs
bHB0cjsKLX07Ci0KLS8vIEJhc2ljIHRlc3QgZm9yIGVnbEdldFN5bmNWYWx1ZXNDSFJPTUlVTSBl
eHRlbnNpb24uIFZlcmlmaWVzIHRoYXQgZWdsR2V0U3luY1ZhbHVlc0NIUk9NSVVNCi0vLyBjYW4g
YmUgY2FsbGVkIG9uIERYMTEgd2l0aCBkaXJlY3QgY29tcG9zaXRpb24gYW5kIHRoYXQgaXQgcmV0
dXJucyByZWFzb25hYmxlIGVub3VnaCB2YWx1ZXMuCi1URVNUX0YoRUdMU3luY0NvbnRyb2xUZXN0
LCBTeW5jVmFsdWVzVGVzdCkKLXsKLSAgICBzdGF0aWMgY29uc3QgRFdPUkQga1BvbGxJbnRlcnZh
bCAgICA9IDEwOwotICAgIHN0YXRpYyBjb25zdCBpbnQga051bVBvbGxJdGVyYXRpb25zID0gMTAw
OwotCi0gICAgaWYgKCFtRDNEMTFBdmFpbGFibGUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQg
PDwgIkQzRDExIG5vdCBhdmFpbGFibGUsIHNraXBwaW5nIHRlc3QiIDw8IHN0ZDo6ZW5kbDsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENyZWF0ZUQzRDExRGV2aWNlKCk7Ci0gICAgSW5p
dGlhbGl6ZURpc3BsYXkoKTsKLSAgICBDcmVhdGVXaW5kb3dTdXJmYWNlKCk7Ci0KLSAgICBpZiAo
IW1EaXJlY3RDb21wb3NpdGlvblN1cmZhY2VBdmFpbGFibGUpCi0gICAgewotICAgICAgICBzdGQ6
OmNvdXQgPDwgIkRpcmVjdCBDb21wb3NpdGlvbiBzdXJmYWNlIG5vdCBhdmFpbGFibGUsIHNraXBw
aW5nIHRlc3QiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNv
bnN0IGNoYXIgKmV4dGVuc2lvblN0cmluZyA9Ci0gICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IGNo
YXIgKj4oZWdsUXVlcnlTdHJpbmcobURpc3BsYXksIEVHTF9FWFRFTlNJT05TKSk7Ci0gICAgQVNT
RVJUX1RSVUUoc3Ryc3RyKGV4dGVuc2lvblN0cmluZywgIkVHTF9DSFJPTUlVTV9zeW5jX2NvbnRy
b2wiKSk7Ci0KLSAgICBFR0x1aW50NjRLSFIgdXN0ID0gMCwgbXNjID0gMCwgc2JjID0gMDsKLSAg
ICAvLyBJdCBhcHBlYXJzIHRoZXJlIGlzIGEgcmFjZSBjb25kaXRpb24gc28gdGhlIHZlcnkgZmly
c3QgY2FsbCB0byBlZ2xHZXRTeW5jVmFsdWVzQ0hST01JVU0KLSAgICAvLyBjYW4gZmFpbCB3aXRo
aW4gRDNEIHdpdGggRFhHSV9FUlJPUl9GUkFNRV9TVEFUSVNUSUNTX0RJU0pPSU5ULgotICAgIC8v
IFNob3VsZCB0aGF0IGJlIGhhbmRsZWQgaW5zaWRlIGVnbEdldFN5bmNWYWx1ZXNDSFJPTUlVTT8K
LSAgICBlZ2xHZXRTeW5jVmFsdWVzQ0hST01JVU0obURpc3BsYXksIG1TdXJmYWNlLCAmdXN0LCAm
bXNjLCAmc2JjKTsKLQotICAgIEFTU0VSVF9FR0xfVFJVRShlZ2xHZXRTeW5jVmFsdWVzQ0hST01J
VU0obURpc3BsYXksIG1TdXJmYWNlLCAmdXN0LCAmbXNjLCAmc2JjKSk7Ci0gICAgLy8gSW5pdGlh
bCBtc2MgYW5kIHNiYyB2YWx1ZSBzaG91bGQgYmUgdHJ1ZS4gSW5pdGlhbCB1c3QgdmFsdWUgaXMg
dW5zcGVjaWZpZWQuCi0gICAgQVNTRVJUX0VRKDB1bGwsIG1zYyk7Ci0gICAgQVNTRVJUX0VRKDB1
bGwsIHNiYyk7Ci0KLSAgICAvLyBQZXJmb3JtIHNvbWUgdmVyeSBiYXNpYyByZW5kZXJpbmcuCi0g
ICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOwotICAgIGdsQ2xlYXIoR0xf
Q09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBBU1NF
UlRfRUdMX1RSVUUoZWdsU3dhcEJ1ZmZlcnMobURpc3BsYXksIG1TdXJmYWNlKSk7Ci0KLSAgICAv
LyBQb2xsIHVudGlsIHNiYyB2YWx1ZSBpbmNyZWFzZXMuIE5vcm1hbGx5IGl0IHNob3VsZCBjaGFu
Z2Ugd2l0aGluIDE2LTE3IG1zLgotICAgIGZvciAoaW50IGkgPSAwOyBpIDwga051bVBvbGxJdGVy
YXRpb25zOyBpKyspCi0gICAgewotICAgICAgICA6OlNsZWVwKGtQb2xsSW50ZXJ2YWwpOwotICAg
ICAgICBBU1NFUlRfRUdMX1RSVUUoZWdsR2V0U3luY1ZhbHVlc0NIUk9NSVVNKG1EaXNwbGF5LCBt
U3VyZmFjZSwgJnVzdCwgJm1zYywgJnNiYykpOwotICAgICAgICBpZiAoc2JjID4gMCkKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIC8vIHNiYyBzaG91bGQgY2hhbmdlIHRvIDEuIG1z
YyBhbmQgdXN0IHRvIHNvbWUgbm9uLXplcm8gdmFsdWVzLgotICAgIEFTU0VSVF9FUSgxdWxsLCBz
YmMpOwotICAgIEFTU0VSVF9HVCh1c3QsIDB1bGwpOwotICAgIEFTU0VSVF9HVChtc2MsIDB1bGwp
OwotCi0gICAgLy8gUGVyZm9ybSBtb3JlIHJlbmRlcmluZy4KLSAgICBnbENsZWFyQ29sb3IoMC4w
ZiwgMC4wZiwgMS4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsK
LSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIEFTU0VSVF9FR0xfVFJVRShlZ2xTd2Fw
QnVmZmVycyhtRGlzcGxheSwgbVN1cmZhY2UpKTsKLQotICAgIC8vIFBvbGwgdW50aWwgc2JjIHZh
bHVlIGluY3JlYXNlcy4gTm9ybWFsbHkgaXQgc2hvdWxkIGNoYW5nZSB3aXRoaW4gMTYtMTcgbXMu
Ci0gICAgRUdMdWludDY0S0hSIHVzdDIgPSAwLCBtc2MyID0gMCwgc2JjMiA9IDA7Ci0gICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBrTnVtUG9sbEl0ZXJhdGlvbnM7IGkrKykKLSAgICB7Ci0gICAgICAg
IDo6U2xlZXAoa1BvbGxJbnRlcnZhbCk7Ci0gICAgICAgIEFTU0VSVF9FR0xfVFJVRShlZ2xHZXRT
eW5jVmFsdWVzQ0hST01JVU0obURpc3BsYXksIG1TdXJmYWNlLCAmdXN0MiwgJm1zYzIsICZzYmMy
KSk7Ci0gICAgICAgIGlmIChzYmMyID4gc2JjKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQot
Ci0gICAgLy8gc2JjMiBzaG91bGQgYmUgMi4gbXNjMiBhbmQgdXN0MiBzaG91bGQgYmUgZ3JlYXRl
ciB0aGFuIHByZXZpb3VzIG1zYyBhbmQgdXN0IHZhbHVlcy4KLSAgICBBU1NFUlRfRVEoMnVsbCwg
c2JjMik7Ci0gICAgQVNTRVJUX0dUKCh1c3QyIC0gdXN0KSwgMHVsbCk7Ci0gICAgQVNTRVJUX0dU
KChtc2MyIC0gbXNjKSwgMHVsbCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFRocmVhZFRlc3QuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xUaHJlYWRUZXN0LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA1Y2NjMjVmOWI5NjZkZWMxMWU0NzczYTBkZGU5ZjRm
ZTBkMmRhMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFRocmVhZFRlc3Qu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCi0KLSNpbmNsdWRlIDxFR0wvZWdsLmg+Ci0jaW5jbHVkZSA8RUdML2VnbGV4dC5oPgotCi10
eXBlZGVmIEVHTEFQSSBFR0xEaXNwbGF5IEVHTEFQSUVOVFJZIEVHTEdldERpc3BsYXkoRUdMTmF0
aXZlRGlzcGxheVR5cGUgZGlzcGxheV9pZCk7Ci10eXBlZGVmIEVHTEFQSSBFR0xCb29sZWFuIEVH
TEFQSUVOVFJZIEVHTEluaXRpYWxpemUoRUdMRGlzcGxheSBkcHksIEVHTGludCAqbWFqb3IsIEVH
TGludCAqbWlub3IpOwotdHlwZWRlZiBFR0xBUEkgRUdMQ29udGV4dCBFR0xBUElFTlRSWSBFR0xH
ZXRDdXJyZW50Q29udGV4dCh2b2lkKTsKLXR5cGVkZWYgRUdMQVBJIEVHTFN1cmZhY2UgRUdMQVBJ
RU5UUlkgRUdMR2V0Q3VycmVudFN1cmZhY2UoRUdMaW50IHJlYWRkcmF3KTsKLXR5cGVkZWYgRUdM
QVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgRUdMVGVybWluYXRlKEVHTERpc3BsYXkgZHB5KTsK
LQotY2xhc3MgRUdMVGhyZWFkVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Ci17Ci0gIHB1Ymxp
YzoKLSAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7fQotICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93
bigpIHt9Ci0KLSAgICBFR0xHZXREaXNwbGF5ICptR2V0RGlzcGxheTsKLSAgICBFR0xJbml0aWFs
aXplICptSW5pdGlhbGl6ZTsKLSAgICBFR0xHZXRDdXJyZW50Q29udGV4dCAqbUdldEN1cnJlbnRD
b250ZXh0OwotICAgIEVHTEdldEN1cnJlbnRTdXJmYWNlICptR2V0Q3VycmVudFN1cmZhY2U7Ci0K
LSAgICBFR0xEaXNwbGF5IG1EaXNwbGF5OwotCi0gICAgSE1PRFVMRSBtRUdMOwotICAgIEhNT0RV
TEUgbUdMRVN2MjsKLQotICAgIHN0YXRpYyBEV09SRCBXSU5BUEkgVGhyZWFkaW5nVGVzdEVudHJ5
UG9pbnQoTFBWT0lEIHRoaXNQb2ludGVyKTsKLQotICBwcml2YXRlOgotICAgIHZvaWQgVGhyZWFk
aW5nVGVzdCgpOwotfTsKLQotRFdPUkQgV0lOQVBJIEVHTFRocmVhZFRlc3Q6OlRocmVhZGluZ1Rl
c3RFbnRyeVBvaW50KExQVk9JRCBscFBhcmFtZXRlcikKLXsKLSAgICBFR0xUaHJlYWRUZXN0ICp0
ZXN0ID0gKEVHTFRocmVhZFRlc3QgKilscFBhcmFtZXRlcjsKLSAgICB0ZXN0LT5UaHJlYWRpbmdU
ZXN0KCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgRUdMVGhyZWFkVGVzdDo6VGhyZWFkaW5n
VGVzdCgpCi17Ci0gICAgbUVHTCA9IExvYWRMaWJyYXJ5KFRFWFQoImxpYkVHTC5kbGwiKSk7Ci0g
ICAgbUdMRVN2MiA9IExvYWRMaWJyYXJ5KFRFWFQoImxpYkdMRVN2Mi5kbGwiKSk7Ci0KLSAgICBF
WFBFQ1RfVFJVRShtRUdMICE9IE5VTEwpOwotICAgIEVYUEVDVF9UUlVFKG1HTEVTdjIgIT0gTlVM
TCk7Ci0KLSAgICBtR2V0RGlzcGxheSA9IChFR0xHZXREaXNwbGF5ICopR2V0UHJvY0FkZHJlc3Mo
bUVHTCwgImVnbEdldERpc3BsYXkiKTsKLSAgICBtSW5pdGlhbGl6ZSA9IChFR0xJbml0aWFsaXpl
ICopR2V0UHJvY0FkZHJlc3MobUVHTCwgImVnbEluaXRpYWxpemUiKTsKLSAgICBtR2V0Q3VycmVu
dENvbnRleHQgPSAoRUdMR2V0Q3VycmVudENvbnRleHQgKilHZXRQcm9jQWRkcmVzcyhtRUdMLCAi
ZWdsR2V0Q3VycmVudENvbnRleHQiKTsKLSAgICBtR2V0Q3VycmVudFN1cmZhY2UgPSAoRUdMR2V0
Q3VycmVudFN1cmZhY2UgKilHZXRQcm9jQWRkcmVzcyhtRUdMLCAiZWdsR2V0Q3VycmVudFN1cmZh
Y2UiKTsKLQotICAgIEVYUEVDVF9UUlVFKG1HZXREaXNwbGF5ICE9IE5VTEwpOwotICAgIEVYUEVD
VF9UUlVFKG1Jbml0aWFsaXplICE9IE5VTEwpOwotICAgIEVYUEVDVF9UUlVFKG1HZXRDdXJyZW50
Q29udGV4dCAhPSBOVUxMKTsKLSAgICBFWFBFQ1RfVFJVRShtR2V0Q3VycmVudFN1cmZhY2UgIT0g
TlVMTCk7Ci0KLSAgICBtRGlzcGxheSA9IG1HZXREaXNwbGF5KEVHTF9EM0QxMV9FTFNFX0QzRDlf
RElTUExBWV9BTkdMRSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShtRGlzcGxheSE9IEVHTF9OT19ESVNQ
TEFZKTsKLQotICAgIG1Jbml0aWFsaXplKG1EaXNwbGF5LCBOVUxMLCBOVUxMKTsKLSAgICBtR2V0
Q3VycmVudENvbnRleHQoKTsKLX0KLQotVEVTVF9GKEVHTFRocmVhZFRlc3QsIHRocmVhZF9pbml0
X2NyYXNoKQotewotICAgIERXT1JEIHRocmVhZElkOwotICAgIEhBTkRMRSB0aHJlYWRIYW5kbGUg
PSBDcmVhdGVUaHJlYWQoTlVMTCwgMCwgRUdMVGhyZWFkVGVzdDo6VGhyZWFkaW5nVGVzdEVudHJ5
UG9pbnQsIHRoaXMsIDAsICZ0aHJlYWRJZCk7Ci0gICAgRVhQRUNUX1RSVUUodGhyZWFkSGFuZGxl
ICE9IE5VTEwpOwotCi0gICAgLy8gd2FpdCBmb3Igc2lnbmFsIGZyb20gdGhyZWFkCi0gICAgRFdP
UkQgd2FpdFJlc3VsdCA9IFdhaXRGb3JTaW5nbGVPYmplY3QodGhyZWFkSGFuZGxlLCAxMDAwKTsK
LSAgICBFWFBFQ1RfRVEod2FpdFJlc3VsdCwgV0FJVF9PQkpFQ1RfMCk7Ci0KLSAgICAvLyBjcmFz
aCwgYmVjYXVzZSB0aGUgVExTIHZhbHVlIGlzIE5VTEwgb24gbWFpbiB0aHJlYWQKLSAgICBtR2V0
Q3VycmVudFN1cmZhY2UoRUdMX0RSQVcpOwotICAgIG1HZXRDdXJyZW50Q29udGV4dCgpOwotCi0g
ICAgYXV0byB0ZXJtaW5hdGUgPSAoRUdMVGVybWluYXRlICopR2V0UHJvY0FkZHJlc3MobUVHTCwg
ImVnbFRlcm1pbmF0ZSIpOwotICAgIHRlcm1pbmF0ZShtRGlzcGxheSk7Ci19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFgxMVZpc3Vh
bFRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9F
R0xYMTFWaXN1YWxUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ1MTc5
OTY0MjM0YzM4ODJmNGM1MzRjOTQwMDA2YWFkM2EwMzUwOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZWdsX3Rlc3RzL0VHTFgxMVZpc3VhbFRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjE2
ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBFR0xYMTFWaXN1YWxUZXN0LmNwcDogdGVzdHMg
Zm9yIEVHTF9BTkdMRV94MTFfdmlzdWFsIGV4dGVuc2lvbgotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rl
c3QuaD4KLQotI2luY2x1ZGUgPEVHTC9lZ2wuaD4KLSNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+Ci0j
aW5jbHVkZSA8WDExL1hsaWIuaD4KLQotI2luY2x1ZGUgIk9TV2luZG93LmgiCi0jaW5jbHVkZSAi
dGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLSNpbmNsdWRlICJ4MTEvWDExV2luZG93LmgiCi0KLXVz
aW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17Ci0KLWNvbnN0IEVHTGludCBjb250
ZXh0QXR0cmlic1tdID0ge0VHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCAyLCBFR0xfTk9ORX07
Ci19Ci0KLWNsYXNzIEVHTFgxMVZpc3VhbEhpbnRUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVz
dFdpdGhQYXJhbTxhbmdsZTo6UGxhdGZvcm1QYXJhbWV0ZXJzPgotewotICBwdWJsaWM6Ci0gICAg
dm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBtRWdsR2V0UGxhdGZvcm1EaXNw
bGF5RVhUID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xHRVRQTEFURk9STURJU1BMQVlFWFRQUk9D
PigKLSAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJlZ2xHZXRQbGF0Zm9ybURpc3BsYXlF
WFQiKSk7Ci0KLSAgICAgICAgbURpc3BsYXkgPSBYT3BlbkRpc3BsYXkoTlVMTCk7Ci0gICAgfQot
Ci0gICAgc3RkOjp2ZWN0b3I8RUdMaW50PiBnZXREaXNwbGF5QXR0cmlidXRlcyhpbnQgdmlzdWFs
SWQpIGNvbnN0Ci0gICAgewotICAgICAgICBzdGQ6OnZlY3RvcjxFR0xpbnQ+IGF0dHJpYnM7Ci0K
LSAgICAgICAgYXR0cmlicy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUp
OwotICAgICAgICBhdHRyaWJzLnB1c2hfYmFjayhHZXRQYXJhbSgpLmdldFJlbmRlcmVyKCkpOwot
ICAgICAgICBhdHRyaWJzLnB1c2hfYmFjayhFR0xfWDExX1ZJU1VBTF9JRF9BTkdMRSk7Ci0gICAg
ICAgIGF0dHJpYnMucHVzaF9iYWNrKHZpc3VhbElkKTsKLSAgICAgICAgYXR0cmlicy5wdXNoX2Jh
Y2soRUdMX05PTkUpOwotCi0gICAgICAgIHJldHVybiBhdHRyaWJzOwotICAgIH0KLQotICAgIHVu
c2lnbmVkIGludCBjaG9vc2VEaWZmZXJlbnRWaXN1YWwodW5zaWduZWQgaW50IHZpc3VhbElkKQot
ICAgIHsKLSAgICAgICAgaW50IG51bVZpc3VhbHM7Ci0gICAgICAgIFhWaXN1YWxJbmZvIHZpc3Vh
bFRlbXBsYXRlOwotICAgICAgICB2aXN1YWxUZW1wbGF0ZS5zY3JlZW4gPSBEZWZhdWx0U2NyZWVu
KG1EaXNwbGF5KTsKLQotICAgICAgICBYVmlzdWFsSW5mbyAqdmlzdWFscyA9Ci0gICAgICAgICAg
ICBYR2V0VmlzdWFsSW5mbyhtRGlzcGxheSwgVmlzdWFsU2NyZWVuTWFzaywgJnZpc3VhbFRlbXBs
YXRlLCAmbnVtVmlzdWFscyk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKG51bVZpc3VhbHMgPj0gMik7
Ci0KLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1WaXN1YWxzOyArK2kpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmICh2aXN1YWxzW2ldLnZpc3VhbGlkICE9IHZpc3VhbElkKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCByZXN1bHQgPSB2aXN1YWxzW2ldLnZpc3Vh
bGlkOwotICAgICAgICAgICAgICAgIFhGcmVlKHZpc3VhbHMpOwotICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBVTlJFQUNI
QUJMRSgpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gIHByb3RlY3RlZDoKLSAgICBQ
Rk5FR0xHRVRQTEFURk9STURJU1BMQVlFWFRQUk9DIG1FZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQ7
Ci0gICAgRGlzcGxheSAqbURpc3BsYXk7Ci19OwotCi0vLyBUZXN0IHRoYXQgZGlzcGxheSBjcmVh
dGlvbiBmYWlscyBpZiB0aGUgdmlzdWFsIElEIHBhc3NlZCBpbiBpbnZhbGlkLgotVEVTVF9QKEVH
TFgxMVZpc3VhbEhpbnRUZXN0LCBJbnZhbGlkVmlzdWFsSUQpCi17Ci0gICAgLy8gVGhlIHRlc3Qg
cGxhdGZvcm0gd2lsbCBsb2cgYW4gZXJyb3IgaW4gdGhpcyBuZWdhdGl2ZSB0ZXN0LgotICAgIEln
bm9yZUFOR0xFUGxhdGZvcm1NZXNzYWdlcygpOwotCi0gICAgc3RhdGljIGNvbnN0IGludCBnSW52
YWxpZFZpc3VhbElkID0gLTE7Ci0gICAgYXV0byBhdHRyaWJ1dGVzICAgICAgICAgICAgICAgICAg
ID0gZ2V0RGlzcGxheUF0dHJpYnV0ZXMoZ0ludmFsaWRWaXN1YWxJZCk7Ci0KLSAgICBFR0xEaXNw
bGF5IGRpc3BsYXkgPQotICAgICAgICBtRWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUKEVHTF9QTEFU
Rk9STV9BTkdMRV9BTkdMRSwgRUdMX0RFRkFVTFRfRElTUExBWSwgYXR0cmlidXRlcy5kYXRhKCkp
OwotICAgIEFTU0VSVF9UUlVFKGRpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkpOwotCi0gICAgQVNT
RVJUX1RSVUUoRUdMX0ZBTFNFID09IGVnbEluaXRpYWxpemUoZGlzcGxheSwgbnVsbHB0ciwgbnVs
bHB0cikpOwotICAgIEFTU0VSVF9FR0xfRVJST1IoRUdMX05PVF9JTklUSUFMSVpFRCk7Ci19Ci0K
LS8vIFRlc3QgdGhhdCBjb250ZXh0IGNyZWF0aW9uIHdpdGggYSB2aXN1YWwgSUQgc3VjY2VlZHMs
IHRoYXQgdGhlIGNvbnRleHQgZXhwb3NlcwotLy8gb25seSBvbmUgY29uZmlnLCBhbmQgdGhhdCBh
IGNsZWFyIG9uIGEgc3VyZmFjZSB3aXRoIHRoaXMgY29uZmlnIHdvcmtzLgotVEVTVF9QKEVHTFgx
MVZpc3VhbEhpbnRUZXN0LCBWYWxpZFZpc3VhbElEQW5kQ2xlYXIpCi17Ci0gICAgLy8gV2UnbGwg
dGVzdCB0aGUgZXh0ZW5zaW9uIHdpdGggb25lIHZpc3VhbCBJRCBidXQgd2UgZG9uJ3QgY2FyZSB3
aGljaCBvbmUuIFRoaXMgbWVhbnMgd2UKLSAgICAvLyBjYW4gdXNlIE9TV2luZG93IHRvIGNyZWF0
ZSBhIHdpbmRvdyBhbmQganVzdCBncmFiIGl0cyB2aXN1YWwuCi0gICAgT1NXaW5kb3cgKm9zV2lu
ZG93ID0gQ3JlYXRlT1NXaW5kb3coKTsKLSAgICBvc1dpbmRvdy0+aW5pdGlhbGl6ZSgiRUdMWDEx
VmlzdWFsSGludFRlc3QiLCA1MDAsIDUwMCk7Ci0gICAgb3NXaW5kb3ctPnNldFZpc2libGUodHJ1
ZSk7Ci0KLSAgICBXaW5kb3cgeFdpbmRvdyA9IG9zV2luZG93LT5nZXROYXRpdmVXaW5kb3coKTsK
LQotICAgIFhXaW5kb3dBdHRyaWJ1dGVzIHdpbmRvd0F0dHJpYnV0ZXM7Ci0gICAgQVNTRVJUX05F
KDAsIFhHZXRXaW5kb3dBdHRyaWJ1dGVzKG1EaXNwbGF5LCB4V2luZG93LCAmd2luZG93QXR0cmli
dXRlcykpOwotICAgIGludCB2aXN1YWxJZCA9IHdpbmRvd0F0dHJpYnV0ZXMudmlzdWFsLT52aXN1
YWxpZDsKLQotICAgIGF1dG8gYXR0cmlidXRlcyA9IGdldERpc3BsYXlBdHRyaWJ1dGVzKHZpc3Vh
bElkKTsKLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPQotICAgICAgICBtRWdsR2V0UGxhdGZvcm1E
aXNwbGF5RVhUKEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSwgRUdMX0RFRkFVTFRfRElTUExBWSwg
YXR0cmlidXRlcy5kYXRhKCkpOwotICAgIEFTU0VSVF9ORShFR0xfTk9fRElTUExBWSwgZGlzcGxh
eSk7Ci0KLSAgICBBU1NFUlRfVFJVRShFR0xfVFJVRSA9PSBlZ2xJbml0aWFsaXplKGRpc3BsYXks
IG51bGxwdHIsIG51bGxwdHIpKTsKLQotICAgIC8vIFdoaWxlIHRoaXMgaXMgbm90IHJlcXVpcmVk
IGJ5IHRoZSBleHRlbnNpb24sIHRlc3QgdGhhdCBvdXIgaW1wbGVtZW50YXRpb24gcmV0dXJucyBv
bmx5IG9uZQotICAgIC8vIGNvbmZpZywgd2l0aCB0aGUgc2FtZSBuYXRpdmUgdmlzdWFsIElkIHRo
YXQgd2UgcHJvdmlkZWQuCi0gICAgaW50IG5Db25maWdzID0gMDsKLSAgICBBU1NFUlRfVFJVRShF
R0xfVFJVRSA9PSBlZ2xHZXRDb25maWdzKGRpc3BsYXksIG51bGxwdHIsIDAsICZuQ29uZmlncykp
OwotICAgIEFTU0VSVF9FUSgxLCBuQ29uZmlncyk7Ci0KLSAgICBpbnQgblJldHVybmVkQ29uZmln
cyA9IDA7Ci0gICAgRUdMQ29uZmlnIGNvbmZpZzsKLSAgICBBU1NFUlRfVFJVRShFR0xfVFJVRSA9
PSBlZ2xHZXRDb25maWdzKGRpc3BsYXksICZjb25maWcsIDEsICZuUmV0dXJuZWRDb25maWdzKSk7
Ci0gICAgQVNTRVJUX0VRKG5Db25maWdzLCBuUmV0dXJuZWRDb25maWdzKTsKLQotICAgIEVHTGlu
dCBlZ2xOYXRpdmVJZDsKLSAgICBBU1NFUlRfVFJVRShFR0xfVFJVRSA9PSBlZ2xHZXRDb25maWdB
dHRyaWIoZGlzcGxheSwgY29uZmlnLCBFR0xfTkFUSVZFX1ZJU1VBTF9JRCwgJmVnbE5hdGl2ZUlk
KSk7Ci0gICAgQVNTRVJUX0VRKHZpc3VhbElkLCBlZ2xOYXRpdmVJZCk7Ci0KLSAgICAvLyBGaW5h
bGx5LCB0cnkgdG8gZG8gYSBjbGVhciBvbiB0aGUgd2luZG93LgotICAgIEVHTENvbnRleHQgY29u
dGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBFR0xfTk9fQ09OVEVYVCwg
Y29udGV4dEF0dHJpYnMpOwotICAgIEFTU0VSVF9ORShFR0xfTk9fQ09OVEVYVCwgY29udGV4dCk7
Ci0KLSAgICBFR0xTdXJmYWNlIHdpbmRvdyA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UoZGlzcGxh
eSwgY29uZmlnLCB4V2luZG93LCBudWxscHRyKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsK
LQotICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIHdpbmRvdywgd2luZG93LCBjb250ZXh0KTsK
LSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgIGdsVmlld3BvcnQoMCwgMCwgNTAwLCA1
MDApOwotICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAxLjBmLCAxLjBmKTsKLSAgICBnbENs
ZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAg
IEVYUEVDVF9QSVhFTF9FUSgyNTAsIDI1MCwgMCwgMCwgMjU1LCAyNTUpOwotCi0gICAgLy8gVGVh
cmRvd24KLSAgICBlZ2xEZXN0cm95U3VyZmFjZShkaXNwbGF5LCB3aW5kb3cpOwotICAgIEFTU0VS
VF9FR0xfU1VDQ0VTUygpOwotCi0gICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4
dCk7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBTYWZlRGVsZXRlKG9zV2luZG93
KTsKLQotICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9f
U1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwotICAgIGVnbFRlcm1pbmF0ZShkaXNwbGF5KTsKLX0K
LQotLy8gVGVzdCB0aGF0IEVHTF9CQURfTUFUQ0ggaXMgZ2VuZXJhdGVkIHdoZW4gdHJ5aW5nIHRv
IGNyZWF0ZSBhbiBFR0wgd2luZG93IGZyb20KLS8vIGFuIFgxMSB3aW5kb3cgd2hvc2UgdmlzdWFs
IElEIGRvZXNuJ3QgbWF0Y2ggdGhlIHZpc3VhbCBJRCBwYXNzZWQgYXQgZGlzcGxheSBjcmVhdGlv
bi4KLVRFU1RfUChFR0xYMTFWaXN1YWxIaW50VGVzdCwgSW52YWxpZFdpbmRvd1Zpc3VhbElEKQot
ewotICAgIC8vIEdldCB0aGUgZGVmYXVsdCB2aXN1YWwgSUQsIGFzIGEgZ29vZCBndWVzcyBvZiBh
IHZpc3VhbCBpZCBmb3Igd2hpY2ggZGlzcGxheQotICAgIC8vIGNyZWF0aW9uIHdpbGwgc3VjY2Vl
ZC4KLSAgICBpbnQgdmlzdWFsSWQ7Ci0gICAgewotICAgICAgICBPU1dpbmRvdyAqb3NXaW5kb3cg
PSBDcmVhdGVPU1dpbmRvdygpOwotICAgICAgICBvc1dpbmRvdy0+aW5pdGlhbGl6ZSgiRUdMWDEx
VmlzdWFsSGludFRlc3QiLCA1MDAsIDUwMCk7Ci0gICAgICAgIG9zV2luZG93LT5zZXRWaXNpYmxl
KHRydWUpOwotCi0gICAgICAgIFdpbmRvdyB4V2luZG93ID0gb3NXaW5kb3ctPmdldE5hdGl2ZVdp
bmRvdygpOwotCi0gICAgICAgIFhXaW5kb3dBdHRyaWJ1dGVzIHdpbmRvd0F0dHJpYnV0ZXM7Ci0g
ICAgICAgIEFTU0VSVF9ORSgwLCBYR2V0V2luZG93QXR0cmlidXRlcyhtRGlzcGxheSwgeFdpbmRv
dywgJndpbmRvd0F0dHJpYnV0ZXMpKTsKLSAgICAgICAgdmlzdWFsSWQgPSB3aW5kb3dBdHRyaWJ1
dGVzLnZpc3VhbC0+dmlzdWFsaWQ7Ci0KLSAgICAgICAgU2FmZURlbGV0ZShvc1dpbmRvdyk7Ci0g
ICAgfQotCi0gICAgYXV0byBhdHRyaWJ1dGVzID0gZ2V0RGlzcGxheUF0dHJpYnV0ZXModmlzdWFs
SWQpOwotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9Ci0gICAgICAgIG1FZ2xHZXRQbGF0Zm9ybURp
c3BsYXlFWFQoRUdMX1BMQVRGT1JNX0FOR0xFX0FOR0xFLCBFR0xfREVGQVVMVF9ESVNQTEFZLCBh
dHRyaWJ1dGVzLmRhdGEoKSk7Ci0gICAgQVNTRVJUX05FKEVHTF9OT19ESVNQTEFZLCBkaXNwbGF5
KTsKLQotICAgIEFTU0VSVF9UUlVFKEVHTF9UUlVFID09IGVnbEluaXRpYWxpemUoZGlzcGxheSwg
bnVsbHB0ciwgbnVsbHB0cikpOwotCi0KLSAgICAvLyBJbml0aWFsaXplIHRoZSB3aW5kb3cgd2l0
aCBhIHZpc3VhbCBpZCBkaWZmZXJlbnQgZnJvbSB0aGUgZGlzcGxheSdzIHZpc3VhbCBpZAotICAg
IGludCBvdGhlclZpc3VhbElkID0gY2hvb3NlRGlmZmVyZW50VmlzdWFsKHZpc3VhbElkKTsKLSAg
ICBBU1NFUlRfTkUodmlzdWFsSWQsIG90aGVyVmlzdWFsSWQpOwotCi0gICAgT1NXaW5kb3cgKm9z
V2luZG93ID0gbmV3IFgxMVdpbmRvdyhvdGhlclZpc3VhbElkKTsKLSAgICBvc1dpbmRvdy0+aW5p
dGlhbGl6ZSgiRUdMWDExVmlzdWFsSGludFRlc3QiLCA1MDAsIDUwMCk7Ci0gICAgb3NXaW5kb3ct
PnNldFZpc2libGUodHJ1ZSk7Ci0KLSAgICBXaW5kb3cgeFdpbmRvdyA9IG9zV2luZG93LT5nZXRO
YXRpdmVXaW5kb3coKTsKLQotICAgIC8vIENyZWF0aW5nIHRoZSBFR0wgd2luZG93IHNob3VsZCBm
YWlsIHdpdGggRUdMX0JBRF9NQVRDSAotICAgIGludCBuUmV0dXJuZWRDb25maWdzID0gMDsKLSAg
ICBFR0xDb25maWcgY29uZmlnOwotICAgIEFTU0VSVF9UUlVFKEVHTF9UUlVFID09IGVnbEdldENv
bmZpZ3MoZGlzcGxheSwgJmNvbmZpZywgMSwgJm5SZXR1cm5lZENvbmZpZ3MpKTsKLSAgICBBU1NF
UlRfRVEoMSwgblJldHVybmVkQ29uZmlncyk7Ci0KLSAgICBFR0xTdXJmYWNlIHdpbmRvdyA9IGVn
bENyZWF0ZVdpbmRvd1N1cmZhY2UoZGlzcGxheSwgY29uZmlnLCB4V2luZG93LCBudWxscHRyKTsK
LSAgICBBU1NFUlRfRVEoRUdMX05PX1NVUkZBQ0UsIHdpbmRvdyk7Ci0gICAgQVNTRVJUX0VHTF9F
UlJPUihFR0xfQkFEX01BVENIKTsKLQotICAgIFNhZmVEZWxldGUob3NXaW5kb3cpOwotfQotCi1B
TkdMRV9JTlNUQU5USUFURV9URVNUKEVHTFgxMVZpc3VhbEhpbnRUZXN0LCBFUzJfT1BFTkdMKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0
cy9tZWRpYS95dXZ0ZXN0LmlubCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9l
Z2xfdGVzdHMvbWVkaWEveXV2dGVzdC5pbmwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDcyNzFjZjgwYWQ2YjQyZDJjMDUyNDdhZmMxMmYxNWZmYTBlMzVkM2YuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2VnbF90ZXN0cy9tZWRpYS95dXZ0ZXN0LmlubAorKysgL2Rldi9udWxsCkBAIC0x
LDE1NDggKzAsMCBAQAotLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KLS8vIEdlbmVy
YXRlZCBieSBzY3JpcHRzL2JtcF90b195dXYucHkgdXNpbmcgZGF0YSBmcm9tIHl1dnRlc3QuYm1w
Ci0vLwotLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCi0KLXN0YXRpYyBjb25zdCBzaXplX3QgeXV2dGVzdF93aWR0aCA9IDEyODsKLXN0YXRp
YyBjb25zdCBzaXplX3QgeXV2dGVzdF9oZWlnaHQgPSAxMjg7Ci1zdGF0aWMgY29uc3QgdW5zaWdu
ZWQgY2hhciB5dXZ0ZXN0X2RhdGFbXSA9Ci17Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDEzMiwxNiwxNiwxNiwxNiwxMDUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMywx
NiwxNiwxNiwxNiwxNiwxNiw0NCwxNTMsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx
NiwxNiw3OCwyMjgsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKLSAgICAyMzUsMTYsMTYsMTYsMTczLDQ0LDE2LDE2LDE2LDE2LDE2LDE2LDQ0LDE1Mywy
MzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMTYsMTYs
MTYsMjI4LDIzNSwyMzUsMjIxLDExMiwxNiwxNiwxNiwxNiwxNiw3OCwyMjgsCi0gICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwzNywxNiwxNiw5MiwyMzUsMjM1LDIzNSwy
MzUsMTUzLDQ0LDE2LDE2LDE2LDE2LDE2LAotICAgIDkyLDIyOCwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAy
MzUsMjEyLDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDIwMywyMzQsMjM1LDIz
NSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAotICAgIDIzNSwxNDYsMTYsMTYsMTYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjIxLDExMiwx
NiwxNiwxNiwKLSAgICAxNiwxNiwxNiw5MiwyMjgsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIxOSwxODcsMTYwLDE1
MCwxNTAsMTUwLDE0MCwxMjcsMTIxLDEyMSwxMjEsCi0gICAgMTUyLDE4NiwxODYsMTg2LDE4Niwx
ODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwyMDMsMjM0LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDE2LDE2
LDE2LDEwNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTUzLDQ0LDE2LAotICAgIDE2LDE2
LDE2LDE2LDc4LDIyOCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTksCi0g
ICAgMTg3LDE2MCwxNTAsMTUwLDE1MCwxNTAsMTUwLDE0OSwxMzIsMTIxLDEyMSwxMjEsMTIxLDEy
MSwxMjEsMTUyLAotICAgIDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODUsMTU0LDEzNCwx
MzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwKLSAgICAxMzQsMTM0LDEzNCwxNjksMjMyLDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjEzLDE3MSwxMzUsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLAotICAgIDEy
MCwxMjAsMTIwLDEyMCwxMjAsMTY3LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzIsCi0gICAgMTcyLDEzNCwyNywxNiwxNiwxNiwxMzAsMTM0LDEzNCwx
MzQsMTM0LDEzNCwxMzQsMTM0LDE2OSwxNTEsCi0gICAgNDQsMTYsMTYsMTYsMTYsNDQsMTUzLDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjE5LDE4NywxNjAsMTUwLAotICAgIDE1MCwxNTAsMTUwLDE1MCwx
NTAsMTUwLDE0OSwxMjksMTIxLDEyMSwxMjEsMTIxLDEyMSwxMjEsMTIxLDE4NSwKLSAgICAxODYs
MTg2LDE4NSwxNDYsMTIxLDEyMSwxMjIsMTMxLDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwx
MzQsCi0gICAgMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxNjksMjMyLDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzEsMTU2LDEyMCwxMjAsMTIw
LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwKLSAgICAxMjAsMTIwLDEyMCwxMjAsMTIwLDEy
NCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxODcsMTM0LAot
ICAgIDEzNCwxMzQsMTAxLDI0LDE2LDE2LDU3LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwx
MzQsMTM0LAotICAgIDEzNCwxMzQsNzUsMTYsMTYsMTYsMTYsNzgsMjI4LDIxOSwxODcsMTYwLDE1
MCwxNTAsMTUwLDE1MCwKLSAgICAxNTAsMTUwLDE1MCwxNTAsMTUwLDE0OCwxMzQsMTIxLDEyMSwx
MjEsMTIxLDEzNiwxNzIsMjI1LDIxMiwxODYsCi0gICAgMTg2LDE4NiwxNjMsMTUwLDE1MCwxNDks
MTM4LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LAotICAgIDEzNCwxMzQsMTM0
LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTY5LDIzMiwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjM1LDIxMywxNzEsMTM1LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIw
LDEyMCwxMjAsCi0gICAgMTIwLDEyMCwxMjAsMTIwLDEzNSwxOTIsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTM3LDEzNCwKLSAgICAxMzQsMTM0LDEzNCw4Niwx
NiwxNiwxNiwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwKLSAgICAxMzQsMTM0
LDEzNCw4NiwyNCwxNiwxNiwxNiw0NSwxMjksMTUwLDE1MCwxNTAsMTUwLDE1MCwxNTgsCi0gICAg
MTg0LDIxNCwyMzUsMjM1LDE3MiwxMjEsMTIxLDEyMSwxMjEsMTc4LDIzNSwyMzUsMjM1LDIzNSwx
ODgsMTg2LAotICAgIDE4NiwxODgsMjAwLDE1OCwxNDksMTM5LDEzNCwxMzQsMTM0LDE0MywxNTgs
MTM2LDEyMSwxMjEsMTIxLDEyMSwKLSAgICAxNDYsMTc4LDE2NiwxNDAsMTM0LDEzNCwxMzQsMTM0
LDEzNCwxMzQsMTM0LDEzNCwxNDcsMTk3LDE5OSwxNDIsCi0gICAgMTIwLDEyMCwxMjAsMTIwLDEy
MCwxMjAsMTIwLDE2NCwyMDYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDEzNCwxMzQsCi0gICAgMTM0LDE5NCwyMzUsMjM1LDM3LDE2LDE2LDE2NiwyMzUsMjM1
LDIzNSwyMzUsMjM1LDE5NywxNDcsMTM0LAotICAgIDEzNCwxMzQsMTM0LDEzNCwxMjYsNjgsMTYs
MTYsMTYsMjAsODcsMTUwLDE1OCwxODQsMjE0LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwxOTksMTI1
LDEyMSwxMjEsMTI1LDE4MSwyMzUsMjM1LDIzNSwyMzUsMjI2LDE4NiwxODYsCi0gICAgMTg2LDIx
NywyMzUsMjMyLDE1NSwxMzQsMTM0LDEzNCwxNDEsMTUwLDE1MCwxNzQsMjI1LDE3OCwxMzYsMTIx
LAotICAgIDEyMSwxMjEsMTU0LDE4NiwxODYsMTg2LDIwMCwxOTYsMTQ3LDEzNCwxMzQsMTM0LDEz
MCwxMjMsMTIwLDEyMCwKLSAgICAxMjAsMTIwLDEyMCwxMjAsMTIwLDEzMSwxODUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTM0LDEzNCwKLSAg
ICAxMzQsMjM1LDIzNSwyMzUsMTEyLDE2LDE2LDU3LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCi0gICAgMjM1LDIzNSwyMDYsMTQ3LDEzNCwxMzQsODIsMjAsMTYsMTYsMTYsNzIsMjI4
LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzIsMTU3LDEyMSwxMjEsMTIxLDEyNSwyMjUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMDMsMTg2LDE4NiwKLSAgICAyMDIsMjM1LDIzMiwxNjMsMTM0LDEzNCwx
MzQsMTYxLDE1NSwxNTAsMTUwLDE1MCwxNzQsMjMyLDIzNSwyMzUsCi0gICAgMjI4LDE3MiwxMjEs
MTUxLDE4NiwxODYsMTg2LDE2NSwxMTMsMTExLDEyMCwxMjIsMTIwLDEyMCwxMjAsMTIwLAotICAg
IDEyMCwxMjAsMTM1LDE2NywyMDYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMzQsMTM0LAotICAgIDEzNCwyMzUsMjM1LDIzNSwy
MTUsMTYsMTYsMTYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMTQ1LDEzNiwxMzQsMTE1LDQyLDE2LDE2LDE2LDc4LDIyOCwyMzUsMjM1LAotICAg
IDIzNSwxNzIsMTIxLDEyMSwxMjEsMTI1LDE4MSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxODgs
MTg2LDE4NiwKLSAgICAyMjYsMjMyLDE2MywxMzQsMTM0LDEzNCwxODQsMjM1LDIzMCwxODcsMTUw
LDE1MCwxNTAsMTYwLDIwMywyMzUsCi0gICAgMjMxLDE1OCwxMTEsMTExLDE0OSwxODYsMTg2LDE4
NiwxNTEsMTE5LDEyMCwxMjAsMTIwLDEyMCwxMjEsMTI2LAotICAgIDEzMywxNDIsMjMxLDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzMywxNjksMTg5LAotICAgIDE4OSwxODksMTg5LDE4OSwxODksMTYsMTYsMTYsODcsMTg5
LDE4OSwxODksMTk1LDIxNywyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwxNTAsMTUwLDE1
MCwxNjcsMTM0LDcxLDE2LDE2LDE2LDcxLDIyOCwyMzUsCi0gICAgMjM1LDEyNSwxMjEsMTIxLDE2
OCwyMjUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4NiwxODYsMTg2LAotICAgIDIzMiwx
NjMsMTM0LDEzNCwxMzQsMTg0LDIzNSwyMzUsMjM1LDIzNSwxOTIsMTUwLDE1MCwxNTAsMTQ4LDEz
MCwKLSAgICAxMTEsMTExLDExMSwxMTEsMTExLDE0OSwxNjYsMTMzLDEyMCwxMjAsMTIwLDEyMCwx
MjAsMTIxLDEzMywxMzQsCi0gICAgMTM0LDEzNCwxMzQsMTUyLDIzMiwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzMsMjAyLDE4OSwxODksCi0g
ICAgMTg5LDE4OSwxODksMTg5LDE4OSwzMiwxNiwxNiwxNiw4NywxODksMTg5LDE4OSwxODksMTk1
LDIxNywKLSAgICAyMzUsMjM1LDIzNSwyMzUsMTUwLDE1MCwxNTAsMjM1LDE4NCwxMzQsNzUsMTYs
MTYsMTYsMjAsNzcsCi0gICAgMTIxLDk4LDEyMSwxMjEsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMTIsMTg2LDE4NiwxODUsCi0gICAgMTYzLDEzNCwxMzQsMTM0LDE4NCwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMDAsMTUzLDEyNiwxMTEsMTExLAotICAgIDExMSwxMTEsMTExLDEy
NSwxNDgsMTM0LDEyMCwxMjAsMTIwLDEyMCwxMjEsMTUyLDIyNCwyMDAsMTI5LDEzMiwKLSAgICAx
MzQsMTM0LDEzNCwxMzQsMTM3LDIzMiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjMzLDIwMiwxODksMTg5LDE4OSwKLSAgICAxODksMTg5LDE4OSwxODksMTg5
LDE0MCwyNywxNiwxNiwxNiwxODksMTg5LDE4OSwxODksMTg5LDE4OSwKLSAgICAxOTUsMjE3LDIz
NSwyMzUsMTUwLDE1MCwxNTAsMjM1LDIzNSwxOTQsMTQ3LDc1LDE2LDE2LDE2LDE2LAotICAgIDE2
LDE2LDUyLDE1NywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4OCwxODYsMTg1LDE0
OSwKLSAgICAxMzQsMTM0LDEzNCwxODQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwx
NjMsMTExLDExMSwxMTEsCi0gICAgMTEyLDExOCwxMjcsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjIs
MTUwLDEzOSwxMjEsMTUzLDIzNSwyMzUsMjA2LAotICAgIDE0MCwxMzQsMTM0LDEzNCwxMzQsMTM0
LDE3NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMywyMDIsMTg5LDE4
OSwxODksMTYxLAotICAgIDEzNCwxMzQsMTM0LDIzNSwyMzUsMjM1LDE3MywxNiwxNiwxNiwyMzUs
MjMyLDIxMiwxOTIsMTg5LDE4OSwKLSAgICAxODksMTg5LDE4OSwxODksMTg5LDE4OSwxNzYsMjMz
LDIzNSwyMzUsMjM1LDIxNiwxMDksMzEsMTYsMTYsCi0gICAgMTYsMTYsMTYsMTUyLDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg2LDE4NSwxNDksMTM0LAotICAgIDEzNCwxMzQsMTg0
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzEsMTU4LDExMSwxMTEsMTE1LDEyMCwKLSAg
ICAxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMzEsMTU5LDE4MCwxODYsMTc0LDEyMSwxMjEsMTk5
LDIzNSwyMzUsCi0gICAgMjM1LDIyNywxNDQsMTM0LDEzNCwxMzQsMTM0LDE0NiwyMzEsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMjAsMTk4LDE4OSwxODksMTg5LDIxMiwxOTcsCi0gICAgMTM0
LDEzNCwxMzQsMTYzLDIzNSwyMzUsMjM1LDM3LDE2LDE2LDE2NiwyMzUsMjM1LDIzMiwyMTIsMTky
LAotICAgIDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwyMDUsMjMzLDIz
NSwxODQsMTE5LDg5LAotICAgIDQ5LDE2LDE2LDM3LDE1MywyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzQsMTcwLDE0NCwxMzQsMTM0LAotICAgIDEzNCwxODQsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzMSwxNDYsMTEyLDExNiwxMjAsMTIwLDEyMCwKLSAgICAxMjAsMTIwLDEyMCwxMjgs
MTY3LDIwNiwyMzUsMjMxLDE4NiwxODYsMTg2LDEyMywxMjEsMTQzLDIzNSwyMzUsCi0gICAgMjM1
LDIzNSwyMjMsMTIyLDEzMiwxMzQsMTM0LDEzNCwxMzcsMjI4LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIx
MCwxODksMTg5LDE4OSwxODksMjEyLDIzNSwyMzUsCi0gICAgMTQ0LDEzNCwxMzQsMTM0LDIwMywy
MzUsMjM1LDExMiwxNiwxNiw1NywyMzUsMjM1LDIzNSwyMzUsMjMyLAotICAgIDIxMiwxOTUsMTg5
LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE5NCwyMDgsMTY1LDEzMywKLSAg
ICAxMjMsMjAsMTYsMTYsMTYsNTksMjI1LDIzNSwyMzUsMjM1LDIzMiwxNTcsMTM0LDEzNCwxMzQs
MTM0LAotICAgIDE4NCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE1MywxMTcsMTIw
LDEyMCwxMjAsMTIwLDEyMCwKLSAgICAxMjMsMTMyLDE0MiwxNTAsMTc0LDIzNSwyMzUsMjM1LDE5
MSwxODYsMTg2LDE2NSwxMjEsMTIxLDE5OSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMTk2LDEyOSwx
MzIsMTM0LDEzNCwxMzQsMTM5LDIzMiwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjEzLDE4OSwxODksMTg5LDE5MSwyMTMs
MjM1LDIzNSwyMzUsCi0gICAgMjA2LDE0NywxMzQsMTM0LDEzNCwxNzUsMjM1LDIxNSwyMywxNiwx
NiwxNjYsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDE3OSwxNTAsMTY0LDE4Nywx
ODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4MywKLSAgICAxNjUsMTExLDI0LDE2LDE2
LDE2LDU3LDIyNSwyMzUsMjM1LDE2NiwxMzUsMTY5LDE4OSwxODksMTg5LAotICAgIDE4OSwxODks
MTg5LDE4OSwxODksMTg5LDE4NSwxNzEsMTI3LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTM1LDE4OCwK
LSAgICAyMDgsMTU1LDE1MCwxNTAsMTUwLDIwOCwyMzUsMjM1LDIxNSwxODYsMTg2LDE4NiwxMjEs
MTIxLDE0MywyMzIsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMjksMTUxLDEzNCwxMzQsMTM0
LDE2MywyMzIsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMTkxLDE4OSwxODksMTkxLDIzMSwyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIyNSwxMzcsMTM0LDEzNCwxMzQsMjM1LDIzNSwxMTIsMTYsMTYsNTcsMjI4LDIzNSwyMzUs
MjM1LAotICAgIDIzNSwyMzUsMjM1LDE1MiwxNTAsMTUwLDIxOSwyMzUsMjM1LDIxNywxOTUsMTg5
LDE4OSwxODksMTg5LDE4OSwKLSAgICAxODksMTg5LDE3OCw5MiwxNiwxNiwxNiwxNiw1NywxNDAs
MTM1LDE3MywxODksMTg5LDE4OSwxODksCi0gICAgMTg5LDE4OSwxODksMTg5LDE4MCwxNDgsMTI1
LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTQ5LDE5OSwyMzUsMjM1LAotICAgIDIzNSwyMzAsMTc5LDE1
MCwxNTAsMTY2LDIzNSwyMzUsMjM1LDE4NiwxODYsMTg2LDEyNSwxMjEsMTIxLDE2MSwKLSAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTIyLDEzNCwxMzQsMTM0LDE2OSwyMzUsMjM1LDIz
NSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxODks
MTg5LDE4OSwyMTcsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIwMywxMzQsMTM0
LDEzNCwxNzAsMjE3LDIxNSwyMywxNiwxNiw5MiwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwxNTAsMTUwLDE1MCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMjcsMTc3LDE4MCwxODksCi0g
ICAgMTg5LDE4OSwxODksMTg5LDEwMiwxNiwxNiwxNiwxNiw1NywxNjksMTg5LDE4OSwxODksMTg5
LDE4OSwKLSAgICAxODksMTg5LDE3MCwxNDAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjIsMTQ2LDE3
OCwyMzMsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMjcsMTUyLDE1MCwxNTAsMTk1LDIzNSwy
MzUsMTg2LDE4NiwxODYsMTg5LDEyMSwxMjEsMTIxLAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwxMTEsMTIyLDEzNCwxMzQsMTM0LDE2MCwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDE0NCwxMzQsMTM0LDEzNCwxNDksMTg1LDEy
NywxNiwxNiwxNiwxMDUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwxNTAsMTUwLDE1MCwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTI1LDEyMSwxMzUsCi0gICAgMjAwLDE5MSwxODksMTg5
LDE4OSwxMjQsMzgsMTYsMTYsMTYsMTI0LDE3OCwxNzIsMTQzLDE1NiwxNDksCi0gICAgMTM5LDEy
MCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyOCwxNTYsMTg1LDE4OSwxODksMTk1LDE3Niw5NSw5NSwK
LSAgICAxNTIsMjM1LDIzNSwxOTUsMTUwLDE1MCwxNTIsMjIyLDIzNSwxODYsMTg2LDE4NiwyMzUs
MTIxLDEyMSwxMjEsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDExMSwxMTEsMTMy
LDEzNCwxMzQsMTM0LDIxMywyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzMsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMjAzLDEzOSwxMzQsMTM0LDEzNCwxNTIsMTg2LDMzLDE2LDE2LDE2LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMTUwLDE1MCwxNTAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjI4LDEyMSwxMjEsMTIxLAotICAgIDIwOCwxODksMTg5LDE4OSwxODksMTg5LDE4OSwzMiwyMyw1
OCwxMDcsMTIwLDEyMCwxMjAsMTIwLDEyMCwKLSAgICAxMjAsMTIwLDEyMCwxMjAsMTIwLDE0OSwx
NTAsMTExLDExMSwxNTIsMTg5LDE4OSwxODksMTg5LDE2Myw5NywKLSAgICA5NSw5NSw5NSwxNTIs
MTY4LDE1MCwxNTAsMTY4LDIzNSwxODYsMTg2LDE4NiwyMzUsMTIxLDEyMSwxMjEsCi0gICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDExMSwxMTEsMTE3LDE0NywxMzQsMTM0LDE4MiwyMzUs
MjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTAsMTg5LDE4
OSwxOTEsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIyOSwx
NzcsMTM0LDEzNCwxMzQsMTQ5LDEzOCwxNiwxNiwxNiw3OCwyMzUsCi0gICAgMjM1LDIzNSwyMzUs
MTUwLDE1MCwxNTAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTkyLDEyMSwxMjEsMTU4LAotICAg
IDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4MCwxMjYsMTE1LDEyMCwxMjAsMTIwLDEyMCwxMjAs
MTIwLDEyMCwKLSAgICAxMjAsMTIwLDEyMywxMzQsMjAzLDIzNSwxMTUsMTExLDExMSwxNzYsMjE2
LDE5MiwxODksMTg5LDE4OSwxNjMsCi0gICAgOTcsOTUsOTUsOTUsMjI0LDE1MiwxNTAsMTUwLDIw
OCwxODYsMTg2LDE4NiwyMzUsMTIxLDEyMSwxMjEsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDExMSwxMTEsMTExLDIxMCwxMzQsMTM0LDE0MCwxOTcsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxOTEsMTg5LDE4OSwyMTMsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTQ0LDEzNCwxMzQsMTM0
LDE3MCwzMiwxNiwxNiwxNiwxNDQsCi0gICAgMjM0LDIzNSwyMzUsMTUwLDE1MCwxNTAsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMTUzLDEyMSwxMjcsMTg5LAotICAgIDE4OSwxODksMjAxLDIxMywx
NjIsMTI4LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTE3LDEwMSwxNDAsMTU2LDE3MiwKLSAgICAxNzMs
MTY2LDE0OCwxMzQsMTM3LDE4NywxMTEsMTExLDExMSwyMzUsMjM1LDIzMiwyMTAsMTg5LDE4OSwx
ODksCi0gICAgMTYzLDk3LDk1LDk1LDIzNSwxODcsMTUwLDE1MCwxNjYsMTg2LDE4NiwxODYsMjM1
LDEyMSwxMjEsMTIxLAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMTEsMTExLDEx
MSwyMzUsMTQ0LDEzNCwxMzQsMTM0LDE2MywKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzMsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIwNiwxNDcsMTM0LDEzNCwxNDYsMTM4LDM3LDE2LDE2
LDQ4LAotICAgIDE5NCwyMzQsMjM1LDE1MCwxNTAsMTUwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDEyNSwxNDYsMTg1LDE4OSwKLSAgICAxODUsMTY1LDEzOSwxMjEsMTIwLDEyMCwxMjAsMTIwLDEy
MCwxMjcsNjgsMjMsMTYsMjEsMTA4LDE4OSwKLSAgICAxODksMTg5LDE4OSwxODksMTg5LDE4OSwx
ODIsMTU0LDEzMiwxNzUsMjEwLDIzNSwyMzUsMjEyLDE4OSwxODksCi0gICAgMTg5LDE1Nyw5NSw5
NSwyMzUsMjI3LDE1MiwxNTAsMTUwLDE4NiwxODYsMTg2LDIzNSwxMjEsMTIxLDEyMSwKLSAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTExLDExMSwxMTEsMjM1LDIxMCwxNDAsMTM0LDEz
NCwxMzQsCi0gICAgMjAzLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjEwLDE4OSwxODks
MTkxLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjI1LDEzNywxMzQsMTM0LDE1NywxNzQsMjEsMTYsMTYsCi0gICAgNjQsMTg3LDIx
NywxNTAsMTUwLDE1MCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMywxNjgsMTc0LDE1NiwxMzYsCi0g
ICAgMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEzOCwxNjUsMjEyLDE2MCwyMSwxNiwxNiwx
Niw2NSwKLSAgICAxODQsMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OCwxNzMsMTYwLDE0
NiwxMzQsMTQ3LDE5MywxODksCi0gICAgMTg5LDE4OSw5NSw5NSwyMzUsMjM1LDE5MiwxNTAsMTUw
LDE4NiwxODYsMTg2LDIzNSwxMjEsMTIxLDEyMSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMTIzLDExMSwxMTUsMjM1LDIzNSwyMjksMTY5LDEzNCwxMzQsCi0gICAgMTUzLDIzMiwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMTkxLDE4OSwxODksMjEzLDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE5NCwxMzQs
MTM0LDEzNCwxNDcsMTIzLDE2LDE2LAotICAgIDE2LDY0LDE4NiwxODIsMTYzLDE1MCwyMzUsMjM1
LDIzNSwyMzUsMjM1LDE3OCwxMzQsMTIwLDEyMCwxMjAsCi0gICAgMTIwLDEyMCwxMjAsMTIwLDEy
NCwxNTQsMTc4LDE4OSwxODksMjM1LDIzNSwxNjMsNTMsMTYsMTYsMTYsCi0gICAgNzAsMTg0LDE4
OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODIsMTU0LDEzNCwxODQsCi0g
ICAgMTg5LDE4OSwxNDIsOTYsMjM1LDIzNSwyMzIsMTY2LDE1MCwxODYsMTg2LDE4NiwyMzUsMTIx
LDEyMSwxMjEsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIwMCwxNDIsMTg4LDIz
NSwyMzUsMjM1LDIyNSwxMzcsMTM0LAotICAgIDEzNCwxNjMsMjMyLDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg0LDEzNCwxMzQsMTM0LDEzNCw4OSwx
NiwKLSAgICAxNiwxNiwxMzMsMTg2LDE4NiwxNzgsMjI3LDIzNSwyMzUsMTk5LDEzOSwxMjAsMTIw
LDEyMCwxMjAsMTIwLAotICAgIDEyMCwxMjMsMTI3LDE3MCwyMzUsMjI3LDE4OSwxODksMTg5LDIz
NSwyMzUsMjE1LDE4Niw5NiwxNiwxNiwKLSAgICAxNiw2OSwxODksMTg5LDE5MSwxMjgsMTUwLDE3
OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODIsMTgxLAotICAgIDE4OSwxODksMTc5LDEyMywy
MzIsMjM1LDIzNSwyMTksMTUwLDE4NiwxODYsMTg2LDIzNSwxMjEsMTIxLDEyMSwKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE5NCwx
MzQsCi0gICAgMTM0LDEzNCwxNjksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg5LDE4OSwxODksMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMTk0LDE0MCwxMzQsMTM0LDEzNCw5MCwKLSAgICAxNiwxNiw0OSwx
ODEsMTg2LDE4NiwxODgsMTgzLDE0MiwxMjAsMTIwLDEyMCwxMjAsMTIyLDEyNCwxMjgsCi0gICAg
MTMzLDEzNCwxODQsMjM1LDIzMywyMDEsMTg5LDE4OSwyMDQsMjM1LDIzNSwyMzUsMTkxLDE4Niwx
MDEsMTYsCi0gICAgMTYsMTYsMTM5LDE4OSwxODksMTcyLDExMywxMTEsMjI5LDIxNywyMDcsMTky
LDE4OSwxODksMTg5LDE4OSwKLSAgICAxODksMTg5LDE4OSwxNTEsMTM0LDE2OSwyMzIsMjM1LDE1
MCwxODYsMTg2LDE4NiwyMzUsMTIxLDEyMSwxMjEsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg0LAotICAgIDEzNCwxMzQs
MTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMjksMTQ0LDEzNCwxMzQsMTIzLAotICAgIDIwLDE2LDE2LDU5LDE2OCwxNTAsMTI5LDEy
MCwxMjAsMTIwLDEyMCwxMjIsMTQ4LDEzMywxMzQsMTM0LAotICAgIDEzNCwxODQsMjM1LDIzNSwy
MTAsMTg5LDE4OSwxODksMjI3LDIzNSwyMzUsMjM1LDIxNSwxODYsMTg2LDg2LAotICAgIDE2LDE2
LDM2LDEyNSwxODksMTg5LDE2NywxMTMsMjM1LDIzNSwyMzUsMjMyLDIxMiwxOTIsMTg5LDE4OSwK
LSAgICAxODksMTg5LDE4OSwxODQsMTY2LDE0OCwxNjIsMTgxLDE1MCwxODYsMTg2LDE4NiwyMzUs
MTIxLDEyMSwxMjEsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDEzNCwxMzQsMTM0LDE5NywyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjAzLDE0MCwx
MzQsMTM0LAotICAgIDg2LDM1LDc1LDEwNywxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMiwxNTAsMTgz
LDE0OCwxMzQsMTM0LDEzNywKLSAgICAxODcsMjM1LDIzNSwyMzUsMTkxLDE4OSwxODksMjEyLDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjExLDE4NiwxNzAsCi0gICAgMjEsMTYsMTYsMTYsNjUsMTg5LDE4
OSwxNjcsMjMzLDIzNSwyMzUsMjM1LDIzNSwyMzIsMjEwLDE4NCwKLSAgICAxODksMTg5LDE4OSwx
ODksMTg5LDE4OSwxODIsMTU2LDE0OCwxODYsMTg2LDE4NiwyMzUsMTIxLDEyMSwxMjEsCi0gICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAotICAgIDE0NCwxMzQsMTM0LDEzNCwxNjMsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjI3LDE4OSwxODksMTg5
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIyOSwxNzksMTMzLAotICAgIDEyNCwx
MjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjcsMTUwLDE4MywxODksMTY4LDEzNCwxMzQsMTMxLDIy
NSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIxNywxOTIsCi0gICAgMTQzLDI4LDE2LDE2LDE2LDEzNSwxODksMTg5LDIwMiwyMzUs
MjM1LDIzNSwyMzUsMTUyLDk1LDEwNSwKLSAgICAxMzcsMTc2LDE4OSwxODksMTg5LDE4OSwxODks
MTg5LDE4OSwxODksMTg5LDE4NCwxNjUsMTIxLDEyMSwxMjEsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIw
MywxNDAsMTM0LDEzNCwxMzQsMjMyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjA1LDE4OSwxODksMjA0LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxOTIsMTIyLAotICAgIDEyMCwxMjAsMTIwLDEyMCwxMTEs
OTMsMTgyLDE4OSwxODksMTg5LDE2OSwxMzQsMTM0LDEzNCwxNzYsMTg5LAotICAgIDIyNywyMzUs
MjM1LDIzNSwxODksMTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjA5LDg0LDE2LDE2LDQxLDE4OSwxODksMTg5LDE2NywxNTAsMTUwLDE1MCwxNTAs
MTUwLDE1MCwKLSAgICAxNTAsMTUzLDE4OSwxODksMTg5LDE4NiwxODksMTg5LDE4OSwxODksMTg5
LDE4OSwxNzMsMTMxLDEyMiwxMjUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMjksMTQ0LDEzNCwx
MzQsMTY5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMTkxLDE4OSwxODksMjI3LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTMs
MTcxLDEzNSwxMjAsMTIwLAotICAgIDEyMCwxMjAsMTA2LDQyLDE2LDE2LDc2LDE4OSwxODksMTc1
LDEzNCwxMzQsMTM0LDE2MCwxODYsMTg2LAotICAgIDE4NiwyMTIsMjM1LDIzNSwxODksMTg5LDE4
OSwxODcsMTYwLDE1MCwxNTAsMTUwLDE1MCwxNTAsMTUwLDE1MCwKLSAgICAxNTAsMTUwLDEzNywy
MCwxNiwxNiw4OCwxODksMTg5LDE4NiwxNTMsMTUwLDE1MCwxNTAsMTUwLDE1MCwKLSAgICAxNTAs
MTUwLDE4OSwxODksMTg5LDEyNiwxNTcsMTg1LDE4OSwxODksMTg5LDE4OSwxODksMTgyLDE1NSwx
OTEsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMTk0LDEzNCwxMzQsMTM0LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMTg5LDE4
OSwxODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMxLDE1NiwxMjAsMTIwLDEyMCwxMjAsMTIwLAot
ICAgIDEzOSwyMDIsMTM3LDc1LDE2LDE2LDE2LDE4NCwxODksMTM0LDEzNCwxMzQsMTYzLDE4Niwx
ODYsMTg2LAotICAgIDE4NiwxODYsMTk0LDIxNywxODksMTg5LDE4OSwxNTAsMTUwLDE1MCwxNTAs
MTUwLDE1MCwxNTAsMTUwLDE1MCwKLSAgICAxNTAsMTUwLDE1MCw5NSwxNiwxNiwxOSwxNTEsMTg5
LDE4OSwxNzUsMTQ5LDEzMiwxMjEsMTIxLDEyMSwKLSAgICAxMjEsMTIxLDE4OSwxODksMTg5LDE2
MiwxODYsMTg2LDE4NiwxODIsMTY0LDE4OSwxODksMTg5LDE4OSwxODUsCi0gICAgMjI1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDIzNSwyMzUsMjM1LDEzNCwxMzQsMTM0LDIzMiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzEsMTUzLDEyMCwxMjAsMTIwLDEyMCwxMzEsMTc0LAotICAgIDIzMSwyMzUsMjAzLDE0
NywyNywxNiwxNiw2NSwxODQsMTM0LDEzNCwxODQsMjM1LDE5OSwxMzcsMTcyLAotICAgIDE4Niwx
ODYsMTg2LDE4NiwxODksMTg5LDE4OSwxNTAsMTUwLDE1MCwxNTAsMTUwLDE1MCwxNTAsMTUwLDE1
MCwKLSAgICAxNTAsMTYwLDE3NCwxOTIsNTgsMTYsMTYsNDIsMTg5LDE4OSwxODksMTMyLDEyMSwx
MjEsMTIxLDEyMSwKLSAgICAxMjEsMTIxLDE4OSwxODksMTg5LDE4NiwxODYsMTg2LDE4NiwxNTIs
MTM2LDE3OSwxODgsMTg5LDE4OSwxODksCi0gICAgMTg4LDE3NiwyMzIsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDE0
NCwxMzQsMTM0LDE2OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAy
MzUsMjM1LDIzNSwyMzUsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMxLDE2NCwxMjAsMTIwLDEyMCwx
MjAsMTY0LDIwNiwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwxMjUsMTYsMTYsMTYsNjUs
MTM0LDE2MCwyMzUsMjM1LDIzNSwxOTksMTI5LAotICAgIDE1MiwxODIsMTg2LDE4NiwxODksMTg5
LDE4OSwxODIsMjE0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMTk4LDE5LDE2LDE2LDk5LDE4OSwxODksMTc5LDEzNCwxMzQsMTM0LDEzNCwKLSAgICAx
MzQsMTM0LDE4OSwxODksMTg5LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzcsMTYxLDE4
OCwxODksCi0gICAgMTg5LDE4OSwxNzMsMTk3LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDE5NCwxMzQsMTM0LDEzNCwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMTg5
LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIz
NSwyMzUsMjM1LDIzMSwxNjQsMTIwLDEyMCwxMjAsMTIwLDEyMCwxNzcsMjM1LDIzNSwyMzUsMjM1
LAotICAgIDIzNSwyMzUsMjM1LDIzNSwxNzUsNzYsMTYsMTYsMTYsOTcsMTM0LDE0NywxOTcsMjM1
LDIzNSwyMjUsCi0gICAgMTQ5LDEyNywxNTgsMTg2LDE4OSwxODksMTg5LDE4OCwyMTIsMjI1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjMyLAotICAgIDE3MiwxMzQsMTM0LDEzNCwxMzQsNzUsMTYsMTYs
MjAsMTYxLDE4OSwxODksMTQ2LDEzNCwxMzQsMTM0LAotICAgIDEzNCwxMzQsMTg5LDE4OSwxODks
MTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTQ2LDE4MiwKLSAgICAxODksMTg5
LDE4OSwxODQsMTc4LDIyMiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDEzNCwxMzQsMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwxODksMTg5LDE4OSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwxOTksMTQyLDEyMCwx
MjAsMTIwLDEyMCwxMzUsMTg4LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUs
MjE2LDEzNCwxNTQsODcsMTYsMTYsMzgsMTMwLDEzNCwxMzQsMTYzLDIyOSwxNzQsCi0gICAgMTUw
LDE0NiwxMjgsMTU0LDE4OSwxODksMTg5LDE4NiwxODYsMTg2LDIwNSwyMzUsMjM1LDIzMiwxNzIs
MTM0LAotICAgIDEzNCwxMzQsMTM0LDEzNCwxMzQsMTMwLDM4LDE2LDE2LDQ5LDE4NCwxODksMTYz
LDEzNCwxMzQsMTM0LAotICAgIDEzNCwxMzQsMTg5LDE4OSwxODksMTM0LDEzNCwxMzQsMTM0LDEz
NCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNywKLSAgICAxNzIsMTg5LDE4OSwxODksMTg5LDE4OSwx
OTAsMjA4LDIyNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUs
MjM1LDEzNCwxMzQsMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwxODksMTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjMxLDE1NiwxMjAsMTIwLDEyMCwxMjAsMTM1LDE4OCwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwxNzUsMTM0LDEzNCwxNzMsMTczLDIx
LDE2LDE2LDQ5LDEzNCwxMzQsMTM0LDEzNiwxNDMsCi0gICAgMTUwLDE1MCwxODQsMTc3LDE4OSwx
ODksMTg5LDE4NiwxODYsMTg2LDE4NiwxNzAsMjI5LDE2MywxMzQsMTM0LAotICAgIDEzNCwxMzQs
MTM0LDEzNCwxMzQsMTMxLDEwMCwxOSwxNiwxNiw2NSwxODksMTkwLDE4NiwxODYsMTg2LAotICAg
IDE4NiwxNzUsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIyOSwxODQs
MTQ3LDEzNCwKLSAgICAxMzQsMTU2LDE4MiwxODksMTg5LDE4OSwxODksMTg5LDE4OSwyMDIsMjMz
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDEzNCwxMzQsMTM0LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwx
ODksMTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzEs
MTUzLDEyMCwxMjAsMTIwLDEyMCwxMTUsMTExLDExMSwxMTEsMTExLDExMSwxMTEsMTExLDE1NCwy
MzEsCi0gICAgMjM1LDIxNiwxMzQsMTM0LDEzNCwxODgsMTg5LDExOCwxNiwxNiwxNiwxMDIsMTM0
LDEzNCwxMzQsMTM0LAotICAgIDEzNiwxNzAsMjM1LDIzNSwxODksMTg5LDE4OSwxNDYsMTgwLDE4
NiwxODUsMTU0LDEzNCwxMzQsMTM0LDEzNCwKLSAgICAxNDcsMTk0LDE5OSwxNDIsMTExLDExMSwx
MTEsODMsMTYsMTYsMTYsMTM1LDE4OSwxODgsMTg2LDE5MiwKLSAgICAxNzMsOTUsMTg5LDE4OSwx
ODksMjMxLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMjks
MTc5LDEzNCwxNDQsMTY1LDE4MiwxODksMTg5LDE4OSwxODksMTczLDE2OSwyMzIsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDEzNCwxMzQsMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwxODksMTg5LDE4OSwyMzMsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMSwKLSAgICAxNTMsMTIwLDEyMCwxMjAsMTE3LDEx
MiwxMTEsMTExLDExMSwxMTEsMTExLDExMSwxMTEsMTExLDExMSwxMTEsCi0gICAgMTExLDE0MCwx
MzQsMTM0LDE0NywxODksMTg5LDE4OSw3MSwxNiwxNiw0MSwxMzksMTM0LDEzNCwxMzQsCi0gICAg
MTM0LDEzNCwxMzQsMTY5LDE4OSwxODksMTg5LDE5MiwxNTIsMTgyLDE1NywxMzQsMTM0LDEzNCwx
MzQsMTQ5LAotICAgIDEyMSwxMjEsMTIxLDExNCwxMTEsMTExLDExMywyMzQsOTIsMTYsMTYsNDks
MTg0LDE4OSwyMDcsMjM1LAotICAgIDIzNSwxNjUsMTg5LDE4OSwxODksMTM0LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDE5NywxNDcsMTM0LDEz
NCwxNDQsMTY5LDE4OSwxODksMTg5LDE4OSwxODksMTcwLDEzNSwxNDcsCi0gICAgMTk3LDIzNSwy
MzUsMjM1LDEzNCwxMzQsMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDIzNSwyMzUsMjM1LDIzNSwxOTQsMTg5LDE4OSwyMDIsMjMzLDIzNSwyMzUsMjM1LDIzNSwy
MzUsMTk5LDE0MiwKLSAgICAxMjAsMTIwLDEyMCwxMTUsMTExLDExMSwxMTEsMTExLDExMSwxMTEs
MTExLDExMSwxMTEsMTExLDExMSwxMTEsCi0gICAgMTE1LDEzNCwxMzQsMTM0LDExNSwxODksMTg5
LDE4OSwxMDIsMTksMTYsMTYsMTYsNTEsMTQ3LDEzOCwKLSAgICAxMzQsMTM0LDEzNCwxMzQsMTg5
LDE4OSwxODksMjM1LDIzNSwxODYsMTM0LDEzNCwxMzQsMTQwLDE2NSwxNjgsCi0gICAgMTIxLDEy
MSwxMTQsMTExLDExMSwxMTEsMTc2LDIwOCwxNzAsMjEsMTYsMTYsNjUsMTg0LDE5OSwyMzUsCi0g
ICAgMjM1LDIzNSwxODksMTg5LDE4OSw5NSwxNjksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTk3LDE0NywxNjEsMTg5LDE4
OSwxODksMTg5LDE4OSwxODQsMTY2LAotICAgIDE0OCwxNjMsMjM1LDIzNSwxMzQsMTM0LDEzNCwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUs
MjE2LDE4OSwxODksMTg5LDIwMiwyMzMsMjM1LDIzNSwyMzEsMTU2LDEyMCwxMjAsCi0gICAgMTIw
LDEyMCwxMTcsMTExLDExMSwxNzYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4OCwxMjcs
MTI0LAotICAgIDEzNCwxMzQsMTM0LDEyNywxMTEsMTg5LDE4OSwxODksMTExLDcyLDE2LDE2LDE2
LDE2LDkyLDE4NSwKLSAgICAxODQsMTQ3LDEzNCwxMzQsMTg5LDE4OSwxODksMTU2LDE3OSwxMzQs
MTM0LDEzNCwxMzUsMTg2LDE4NiwxODYsCi0gICAgMTQ2LDExNSwxMTEsMTExLDExMSwxNzMsMjEy
LDE4NiwxODYsMTE3LDE2LDE2LDE2LDY1LDE4NCwyMjcsCi0gICAgMjM1LDIzNSwxODksMTg5LDE4
OSw5NSw5OSwyMTMsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIyOSwxODIsMTgyLDE4OSwxODksMTg5LDE4OSwxODks
Ci0gICAgMTg5LDE4MiwxNTQsMTM0LDEzNCwxMzQsMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjEyLDE4OSwxODksMTg5LDIw
MiwyMzMsMjMxLDE1MywxMjAsMTIwLDEyMCwKLSAgICAxMjQsMTU2LDExMSwxMTEsMTQyLDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxNiwxMzQsCi0gICAgMTM0LDEzNCwxMzQs
MTE1LDExMSwxODksMTg5LDE4OSwxMTEsMTExLDc1LDI4LDE2LDE2LDM0LDEwOCwKLSAgICAxMTEs
MTExLDEyMiwxMzQsMTg5LDE4OSwxODksMTM0LDEzNCwxMzQsMTM0LDEzMywxMjksMTgwLDE4Niwx
ODYsCi0gICAgMTg2LDE2NSwxMTEsMTExLDE3MywyMTIsMTg2LDE4NiwxODYsMTg4LDEyNSwxNiwx
NiwxNiw2NSwyMDgsCi0gICAgMjM1LDIzNSwxODksMTg5LDE4OSw5NSw5NSwxMzAsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMTk3LDE0NywxNTYsMTgyLDE4OSwxODksCi0gICAgMTg5LDE4OSwxODksMTcz
LDEzNCwxMzQsMTM3LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxMiwxODksMTg5LDE4OSwyMDIsMTcwLDEyMCwxMjAsMTIw
LDE2NywKLSAgICAyMjQsMTQ2LDExMSwxMTEsMTg0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDE2NiwxMzQsCi0gICAgMTM0LDE0NywxODcsMjM1LDIzNSwxODksMTg5LDE4OSwx
NTAsMTUwLDE1MCwxNDgsMjEsMTYsMTYsNDMsCi0gICAgMTA4LDExMSwxMTEsMTIwLDE4OSwxODks
MTg5LDEzNCwxMzQsMTM0LDEzNCwxMjIsMTE2LDE0MCwxODMsMTg2LAotICAgIDE4NiwxODYsMTQw
LDEzNywyMzQsMTg4LDE4NiwxODYsMTg4LDIxNywyMzUsMTI1LDE2LDE2LDE2LDY5LAotICAgIDIz
NSwyMzUsMTg5LDE4OSwxODksOTUsOTUsOTUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMTk3LDE1NSwxNjUsCi0gICAgMTg2LDE4OSwxODksMTg5LDEzNCwxMzQsMTM3LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMTIsMTg5LDE4OSwxODcsMTIzLDEyMCwxMjAsMTc3LDIzNSwKLSAgICAyMzUsMTE1LDEx
MSwxMTEsMjIzLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjE2LDEzNCwxMzQsCi0g
ICAgMTM0LDIxNiwyMzUsMjM1LDIyNywxODksMTg5LDE4OSwxOTIsMTUwLDE1MCwxNTAsMTAyLDE2
LDE2LDE2LAotICAgIDQzLDEwOCwxMTEsMTExLDE4MiwxODksMTg5LDE1MSwxMzQsMTM0LDEzNCwx
MjgsMTEyLDExMSwxMjYsMTgwLAotICAgIDE4NiwxODYsMTg2LDE2OCwxNzUsMTg2LDE4NiwxODgs
MjE3LDIzNSwyMzUsMjM1LDEyMSwxNiwxNiwxNiwKLSAgICAxMzIsMjMyLDE4OSwxODksMTg5LDk1
LDk1LDk1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzMiwxOTQsMTg5LDE4OCwxMzQsMTQ3LDE5NywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIwOSwxNDYsMTIw
LDEyMCwxMjAsMTI0LDIzNSwyMzUsCi0gICAgMjM1LDExMSwxMTEsMTExLDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMTg3LDEzNCwxMzQsMTM0LAotICAgIDE2NiwyMzUsMjM1LDIzNSwy
MDUsMTg5LDE4OSwyMDQsMjM1LDE5MiwxNTAsMTUwLDE1MCw4MiwxNiwxNiwKLSAgICAxNiw3OCwy
MjgsMjM1LDE5MiwxODksMTg5LDE3OSwxMzUsMTM0LDEzNCwxMzQsMTMxLDEyMCwxMTEsMTM1LAot
ICAgIDE4MiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwyMTIsMjM1LDIzNSwyMzUsMjM1LDIzNSwx
MDAsMTYsMTYsCi0gICAgMjIsMTg2LDE4OSwxODksMjAxLDk1LDk1LDk1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDE5OSwxNDIsMTIwLAotICAgIDE1NiwyMjIsMjAxLDIxNywyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE3MSwxMjAsMTIwLDEyMCwxMjAsMTYzLDIzMywyMzUs
Ci0gICAgMjM1LDExMSwxMTEsMTExLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTM3
LDEzNCwxMzQsMTM0LAotICAgIDIxNiwyMzUsMjM1LDIzNSwxOTEsMTg5LDE4OSwyMjcsMjM1LDIz
NSwyMDAsMTU1LDE1MCwxNTAsODIsMTYsCi0gICAgMTYsMTYsOTIsMjMyLDE0NiwxODgsMTg5LDE4
OSwxNzMsMTcyLDEzNCwxMzQsMTM0LDEzNCwxMzEsMTIwLAotICAgIDExNiwxNzAsMTg2LDE4Niwx
ODYsMTg2LDE0OSwxMzcsMjMyLDIzNSwyMzUsMjM1LDIzNSwyMDYsNDksMTYsCi0gICAgMTYsMzks
MTI0LDE4OSwyMTYsOTUsOTUsOTUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTgxLDEyMCwxMjAsMTIw
LDEyMCwxMjAsCi0gICAgMTIwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzEsMTI0LDEyMCwxMjAsMTI5LDE2MSwxODksMjAyLDIzMywKLSAgICAyMzUsMTExLDExMSwxMTEs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMiwxMzQsMTM0LDEzNCwxODcsCi0gICAgMjM1
LDIzNSwyMzUsMjM1LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIzNSwyMzAsMTkyLDE1NSwxNTAs
ODIsCi0gICAgMTYsMTYsMTYsMTY3LDEzMywxNTYsMTg5LDE4OSwxODksMjAyLDE5MSwxMzQsMTM0
LDEzNCwxMzQsMTM0LAotICAgIDEzNywxNjYsMTg2LDE4NiwxODYsMTg2LDEzNSwxMTEsMTE4LDE4
OCwyMzUsMjM1LDIzNSwyMzMsMTYzLDIxLAotICAgIDE2LDE2LDE2LDY1LDIyNCw5NSw5NSw5NSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwxODEsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyNCwKLSAgICAxOTIsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE3MSwxMjAsMTIwLDEyNCwyMTIsMTg5
LDE4OSwxODksMTg5LAotICAgIDE4OSwxNzIsMTIzLDExMSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzIsMTYzLDEzNCwxMzQsMTM3LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMTg5LDE4OSwx
ODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMwLDE4NywxNTAsCi0gICAgMjksMTYsMTYsNDgs
MTMwLDEzNCwxNjEsMTg5LDE4OSwxODksMTY2LDExMiwxMjIsMTMyLDEzNCwxMzQsCi0gICAgMTM0
LDEzNCwxNDksMTg1LDE4NiwxODYsMTczLDExMywxMTEsMTExLDEyMywxNjIsMjA0LDIzNSwyMjcs
MTMwLAotICAgIDI3LDE2LDE2LDE2LDc4LDkyLDk1LDk1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwxOTksMTQyLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEy
MCwxMjAsMTIwLDEzNSwxNzEsMjI0LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMTI0LDEyMCwxMjAsMTgxLDIzNSwyMTIsMTg5LDE4OSwxODksCi0gICAgMTg5
LDE4OSwxODcsMTQ4LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE3OSwxMzQsMTM0LDEzNCwxMTMs
OTUsCi0gICAgOTUsOTUsOTUsOTUsMTg5LDE4OSwxODksMTEzLDE4MiwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwxNzYsCi0gICAgOTUsMTYsMTYsMTYsNTcsMTM0LDEzNywyMTEsMTg5LDE4OSwxODcs
MTIzLDExMSwxNjQsMTc3LDEzNywKLSAgICAxMzQsMTM0LDEzNCwxNTcsMTg3LDE4NiwxODYsMTY1
LDExMywxMTEsMTExLDExMSwxMTEsMTExLDEzOCwxNzgsCi0gICAgMTc4LDkyLDE2LDE2LDE2LDM4
LDk1LDk1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjEzLDE3MSwxMzUsCi0gICAgMTIwLDEyMCwxMjAs
MTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMzUsMTkyLDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzEsMTIwLDEyMCwxMjAsMjM1
LDIzNSwyMzUsMjE3LDE5NSwxODksCi0gICAgMTg5LDE4OSwxODksMTg5LDE4OSwxODksMjA4LDIz
NSwyMzUsMjM1LDEzNywxMzQsMTM0LDExNiw5NSw5NSwKLSAgICA5NSw5NSw5NSw5NSwxODksMTg5
LDE4OSw5NSw5NSwxMTMsMTgyLDIzNSwyMzUsMjM1LDIzNSwyMzAsCi0gICAgMTYwLDc1LDE2LDE2
LDE2LDEzNiwxOTcsMjE0LDE3OCwxODksMTg5LDE3MiwxNzMsMjA4LDE4NiwxODMsCi0gICAgMTU3
LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTQ5LDE4NiwxNjcsMTE0LDExMSwxMTEsMTExLDExMSwxMTEs
MTMxLAotICAgIDE4OSwxODcsMTE0LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIw
LDEyMCwxMjAsMTIwLDEyMCwKLSAgICAxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEz
NSwxOTIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDE2NCwxMjAsMTIwLDEyNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMjgsMTcyLDE4OSwxODksMTg5LDE4OSwxODksMjE3LDIzNSwyMTYsMTM0LDEzNCwxMzQs
OTUsOTUsOTUsCi0gICAgOTUsOTUsOTUsOTUsMTg5LDE4OSwxODksOTUsOTUsOTUsOTUsMTEzLDE4
MiwyMzUsMjM1LDIzNSwKLSAgICAyMTYsMTI5LDI3LDE2LDE2LDYwLDE4NSwxMTksMTI1LDE4Nywx
ODksMTg5LDE5NCwxODYsMTg2LDE4NiwKLSAgICAxODgsMTc1LDEzNCwxMzQsMTM0LDEzNCwxMzQs
MTcwLDE4NiwxNzgsMTY1LDE2NiwxMzEsMTExLDExMSwxMjIsCi0gICAgMTIwLDEyMCwxMjAsMTIw
LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLAotICAgIDEy
MCwxMjAsMTM1LDE3MSwyMjQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTMsMTIwLDEyMCwx
MjAsMTgxLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwxMTEsMTQ4LDE3OSwxODks
MTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg0LDE3OSwxMTksOTUsOTUsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDE4OSwxODksMTg5LDE2NSwxMDMsOTUsOTUsOTUsOTUsMTI2LDIzMSwyMzUsCi0gICAg
MjE2LDEzNCw4NiwxNiwxNiwxNiw0MywxMTEsMTExLDE0OSwxODksMTg5LDE4OSwxODgsMTg2LDE4
OCwKLSAgICAyMzEsMjM1LDE5NywxNDcsMTM0LDEzNCwxMzQsMTM5LDE2NiwxODYsMTY2LDEzNSwx
MjAsMTIwLDEyMCwxMjAsCi0gICAgMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAs
MTIwLDEyMCwxMjAsMTIwLDEzNSwxNjcsMjA2LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwxNjAsMTIwLDEyMCwxNTYsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAotICAgIDIzNSwxMTEsMTExLDExMSwyMjAsMTkyLDE4OSwxODksMTg5LDE4OSwx
ODksMTg5LDE4OSwxODksMTc4LDEzMCwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMTg5LDE4OSwxODks
MjM1LDIyNiwxNjUsMTAzLDk1LDk1LDk1LDE0OCwxODcsCi0gICAgMTM0LDEzNCwxMzQsNzQsMTYs
MTYsMTYsODEsMTIwLDE5OSwyMTIsMTg5LDE4OSwxODksMTkwLDIxNiwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjI1LDEzNywxMzQsMTM0LDEzMCwxMjYsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsCi0g
ICAgMTIwLDEyMCwxMjksMTQ3LDkzLDE5LDE2LDE2LDE2LDQzLDExOSwxNjIsMjA0LDIzNSwyMzUs
MjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwx
MjQsMTIwLDEyMCwyMTMsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwxMTEs
MTExLDExMSwyMzUsMjMyLDIxMiwxOTQsMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwK
LSAgICAxODksMTg5LDE5NSwyMTcsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjI2LDE1Nyw5NSw5
NSwxMTgsMTM0LAotICAgIDEzNCwxMzQsMTM0LDExNyw1NSwxNiwxNiwxNiw3MCwxNTAsMTkwLDE4
OCwxODksMTg5LDE4OSwxOTUsCi0gICAgMjE3LDIzNSwyMzUsMjM1LDIzNSwyMDYsMTM0LDEyMywx
MjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTI5LAotICAgIDE2MSwxODksMTg5LDE4MywxMDMs
NzcsMjIsMTYsMTYsMTYsMzcsOTYsMTExLDE0NiwyMzEsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwxMjAsMTIwLDEyMCwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwxMTEsMTExLDExMSwyMzUsMjM1LDIzNSwxOTcs
MTM0LDEzNCwxNjAsMjI3LDIxMCwxODcsMTg5LDE4OSwKLSAgICAxODksMTg5LDE4OSwxODksMTg5
LDE4OSwxODksMjE3LDIzNSwyMzUsMjM1LDIzNSwxMzksMTAyLDEzNCwxMzQsCi0gICAgMTM0LDEz
MywxMjIsMTExLDEwMiwxOSwxNiwxNiwxNiwxNTAsMTUxLDE4NiwxODgsMTg5LDE4OSwxODksCi0g
ICAgMTg5LDE5NSwxODcsMTQyLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMSwxMjksMTUyLDE4
NiwxODksMTg5LAotICAgIDE4OSwxODksMTg5LDE4OSw5NSwxNjUsMjA2LDkzLDE2LDE2LDE2LDE5
LDY2LDExMSwxMjMsMTYyLAotICAgIDIwNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDIzMSwxMjAsMTIwLDEyMCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDIzNSwxMTEsMTExLDExMSwyMzUsMjM1LDIzMiwxNTYsMTM0LDEzNCwxOTQsMjM1LDIzNSwy
MjAsMTQ0LDE3OCwKLSAgICAxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE5NCwyMDgs
MjI0LDIzNSwyMjMsMTI5LDEzNCwxMzQsCi0gICAgMTMyLDEyMCwxMTEsMTExLDExMywxMzgsMTYs
MTYsMTYsMTQ1LDE3MSwxODYsMTg2LDE4NSwxNDcsMTIwLAotICAgIDEyMCwxMjAsMTIwLDEyMCwx
MjAsMTIwLDEyMCwxMjAsMTIyLDEyNiwxMzMsMTM0LDE1MSwxODgsMTg5LDE4OSwKLSAgICAxODks
MTg5LDE4OSwxODksMTM5LDIzNSwyMzUsMjM1LDEzOSwyMywxNiwxNiwxNiw1OCwxMTEsMTExLAot
ICAgIDExMSwxNDYsMjMxLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDE3MSwxMjAsMTIw
LDEyNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwxMTEsMTExLDEx
MSwyMzEsMjM1LDE3OSwxMzQsMTM0LDEzNCwyMjUsMjM1LDIzNSwyMzUsMTU3LDk1LAotICAgIDk1
LDEyNiwyMTAsMTk1LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODks
MTg5LAotICAgIDE4OSwxODksMTg5LDE4OSwxODksMTg5LDMyLDE2LDE2LDkxLDEyMCwxMjAsMTIw
LDEyMCwxMjAsMTIwLAotICAgIDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyOSwxNTAsMTgzLDE4
OSwxODksMTg5LDE4OSwxODksMTg5LDE4NywKLSAgICAxMzMsMTg5LDE4OSwxODksMjA4LDIzNSwy
MzUsMjM1LDIzNSwyMDEsNjQsMTYsMTYsMTYsNTUsMTExLAotICAgIDExMSwxMTEsMTQ2LDIzMSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDEyNCwxMjAsMTIwLDE4MSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwxMjMsMTExLDExMSwxNTQsMjM1LDEzNywxMzQsMTM0
LDE4NywyMzUsMjM1LDIzNSwyMzUsMjIyLDk5LAotICAgIDk1LDk1LDEzNCwyMzEsMjM1LDE4OSwx
ODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksCi0gICAgMTg5LDE4OSwxODks
MTg5LDE4OSwxODksMTE4LDgxLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsCi0gICAg
MTIwLDEyMCwxMjksMTUwLDE4MywxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwx
ODgsMTYyLAotICAgIDEwNiwxODksMTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MzcsMTYsMTYsMTYsMTYsCi0gICAgNDksMTA4LDExMSwxMjMsMTYyLDIwNCwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwxMjAsMTIwLDEyMCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMTg0LDExMSwxMTEsMTExLDIyOSwxMzQsMTM0LDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwxNzgsCi0gICAgOTUsOTUsOTUsMTM0LDIzNSwxOTQsMTg5LDE4OSwxODksMTg5LDE4OSwx
ODksMTg5LDE4OSwxODksMTg5LAotICAgIDE4OSwxODksMTg5LDE3NiwxNTAsMTI5LDEyMCwxMjAs
MTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTI5LDE2MSwKLSAgICAxODksMTg5LDE4OSwxODksMTg5
LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODgsMTY1LDEzOSwxMzQsCi0gICAgMTM0LDE4
OSwxODksMTg5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNzMsMzAsMTYsMTYsMTYsCi0g
ICAgMTYsMjgsNzUsMTExLDExMSwxMTEsMTExLDE1NCwyMzEsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMTIwLDEyMCwxMjAsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwxMTEsMTExLDEx
MSwxOTQsMTM0LDEzNCwxNjAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDE2NSw5
NSw5NSw5NSwxOTEsMjIyLDE5NCwxODksMTg5LDE4OSwxODksMTg4LDE3MywxNTksMTM1LDExOCwK
LSAgICAxMDIsMTA5LDEyMSwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTA3LDU1LDE2Niwy
MjcsMTc5LDE1MCwKLSAgICAxNTAsMTUwLDE1MCwxNjcsMjAzLDE4OSwxODksMTg5LDE4OSwxODks
MTg5LDE4NCwxNjQsMTcwLDEzNywxMzQsCi0gICAgMTM0LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTczLDQ0LDE2LDE2LAotICAgIDE2LDE2LDE2LDE2LDE2LDQ5
LDEwOCwxMTEsMTQ2LDIzMSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDEyMCwxMjAsMTIwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMTIzLDExMSwxMTIsMTM2LDEzNCwxMzQsMTk0LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMTUyLDk1LDk1LDk1LDk2LDEzMiwxMzks
MTg4LDE4OSwxODksMTg5LDE3OCwxNjEsMTQyLDEyNSwKLSAgICAxMjAsMTIwLDEyMCwxMjAsMTIw
LDEyMCwxMjAsMTI4LDE1OSw4NiwxNiwxNiw1NywyMzUsMjM1LDIxNCwKLSAgICAxNjMsMTUwLDE1
MCwxNTAsMTc0LDIxNiwxOTUsMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OCwxNjUsCi0g
ICAgMTM0LDE4OSwxODksMTg5LDEzNCwxNTgsMjEwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMTQ2LAotICAgIDMwLDE2LDE2LDE2LDE2LDE2LDI4LDc1LDExMSwxMjcsMTg4LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwxMjAsMTIw
LDEyMCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDE4
NCwxMTEsMTI0LDEzNCwxMzQsMTM0LDIyNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIyMiw5OSwxMTMsMTM0LDEzNCwxMzQsMTM0LDE1MSwxNzAsMTUwLDEyOSwxMjAsMTIw
LDEyMCwxMjAsCi0gICAgMTIwLDEyMCwxMjAsMTI4LDE2NywyMDAsMTc5LDE4NiwxODYsMTY5LDIx
LDE2LDE2LDEzMiwyMzUsMjM1LAotICAgIDIzNSwxOTIsMTUwLDE1MCwxNTAsMTc1LDE3MywxNDYs
MTM1LDE1NCwxNzgsMTg5LDE4OSwxODksMTg5LDE4OSwKLSAgICAxODQsMTg5LDE4OSwxODksMTM0
LDEzNCwxMzQsMTM4LDIxNiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjIxLDEy
NSw0NCwxNiwxNiwxNiwxNiwxNiwxNiwxNiw1NSwxMjMsMTYyLDIwNCwyMzUsMjM1LAotICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMTIwLDEyMCwxMjAsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMTczLDEzMywxMzQsMTM0LDE0NCwy
MzEsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMTY0LDEzMSwxMjYs
MTIyLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwKLSAgICAxMjcsMTQ2
LDE2MiwyMDgsMjIzLDIwMCwxODYsMTg2LDE4NiwxNTIsNjgsMTYsMTYsMjMsMjAxLDIzNSwKLSAg
ICAyMzUsMjM1LDE4NywxNTAsMTUwLDE1MCwxMTksOTUsOTUsOTUsOTUsMTMxLDE5NiwxOTIsMTg5
LDE4OSwKLSAgICAxODksMTg5LDE4OSwxODcsMTM0LDEzNCwxMzQsMTM0LDEzMywxNTAsMjMyLDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDE0NiwzMCwxNiwxNiwxNiwx
NiwxNiwxNiw0OSwxMDgsMTI3LDE4OCwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDEyMCwxMjAsMTIwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIz
NSwyMzUsMjM1LDIxNiwxMzQsMTM0LDEzNCwxMTEsMTU0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKLSAgICAyMzUsMTk3LDEyNCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEy
MCwxMTgsMTEyLDExNCwxNjQsCi0gICAgMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg4LDE4Nywx
NTgsMTIxLDExOCwzNiwxNiwxNiw0NCwxNTMsCi0gICAgMjM1LDE5MSwxMjEsMTMyLDE1MCwxNTAs
MTUwLDExMCw5NSwxMDgsMTYxLDIzMSwyMzUsMjMyLDIxMCwxODksCi0gICAgMTg5LDE4OSwxODks
MTk0LDE3MCwxMzUsMTMzLDEzNCwxMzQsMTM0LDE0NCwyMzIsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjIxLDEyNSw0NCwxNiwxNiwxNiwxNiwxNiw0MywxMDgsMTEx
LAotICAgIDE0NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMTIwLDEyMCwxMjAsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMTY5LDEzNCwxMzQs
MTI3LDExMSwxMTEsMTExLDExMSwxMTEsMTExLDExMSwxMTIsMTE2LAotICAgIDExOSwxMjAsMTIw
LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDExNywxMTAsMTAxLDk1LDk1LDk1LDk1LAotICAgIDEz
OSwxNzgsMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE3MCwxNjAsMTI0LDIwLDE2LDE2LDE2
LAotICAgIDM4LDk1LDk1LDk2LDEzOSwxNTAsMTUwLDE1MCwyMDEsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjE3LAotICAgIDE5MiwxODksMTg3LDE4NiwyMDAsMjM1LDE3OSwxMzQsMTM0LDEzNCwx
MzQsMTQ2LDE5NywyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDE3Myw0NCwxNiwxNiwxNiwxNiwxNiw0OSwKLSAgICAxMDgsMTExLDE2MiwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDEyMCwxMjAsMTIwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDIzNSwyMzUsMjM1LDEzNywxMzQsMTM0LDEyNSwxMTEsMTExLDExMiwxMTYsMTE5LDEyMCwx
MjAsMTIwLDEyMCwKLSAgICAxMjAsMTIwLDEyMCwxMjEsMTIxLDExNCwxMTEsMTczLDIzNSwyMzEs
MjAwLDE2OSwxNDMsMTIxLDk1LDk1LAotICAgIDk1LDk1LDExMywxNDgsMTg5LDE4OSwxODksMTg5
LDE4OSwxODksMTg5LDE4OSwxMjksMjcsMTYsMTYsCi0gICAgMTYsMTQyLDEyMSwxMTYsMTU2LDE1
OCwxNTAsMTUwLDE2MCwyMjQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIxMSwx
ODYsMTg2LDE4NiwyMjAsMjM1LDIyOSwxNTIsMTM0LDEzNCwxMzQsMTM0LDE2MywyMzIsMjM1LAot
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTI1LDE2LDE2
LDE2LDE2LAotICAgIDI4LDc1LDExNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDEyMCwxMjAsMTIwLDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDEzNCwxMzQs
MTM0LDIwMCwxMjUsMTE5LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwKLSAgICAxMjAsMTIx
LDEyNiwxMzIsMTExLDEyNywxODQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMDgs
Ci0gICAgOTUsOTUsOTUsMTEzLDE4NiwxODcsMTg4LDE3MSwxODksMTg5LDE4OSwxODksMTg5LDE3
OCwxNiwxNiwKLSAgICAxNiw3NiwxODQsMTg5LDE4OSwxOTQsMTc5LDE2OSwxNjIsMTY4LDIyMiwy
MzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjA2LDE4NiwxODYsMTk2LDIzNSwyMzUs
MjM1LDE5MCwxNDAsMTM0LDEzNCwxMzQsMTYzLDIzMiwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNTMsNDQsMTYsMTYsCi0gICAgMTYsMTYsNjUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwxMjAsMTIwLDEyMCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwxMzQsMTMxLDEyNiwxMzUsMTIwLDEyMCwxMjAsMTIw
LDEyMCwxMjAsMTIwLDEzNCwxMzcsCi0gICAgMTMwLDEzNCwxNDcsMTk3LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDk1LDk1LDk1LDIzNSwxODYs
MTg2LDE4NiwyMzUsMjM1LDIyNCwyMTMsMjA0LDE4MCwxODksMzIsMTYsCi0gICAgMTYsMTYsNjUs
MTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTk1LAotICAg
IDIxNywyMzUsMjMxLDE4OCwxODYsMTg2LDIyMCwyMzUsMjM1LDIzNSwyMjksMTc5LDEzNCwxMzQs
MTM0LDE2MywKLSAgICAyMzIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDE0NiwzMCwKLSAgICAxNiwxNiwxNiw5MiwyMjgsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMTIwLDEy
MCwxMjAsMTY3LDIzNSwyMzUsMjM1LDIzNSwxOTksMTQyLDEyMCwxMjAsCi0gICAgMTIwLDEyMCwx
MjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTI0LDE2NywyMDYsMjM1LDIzNSwxNzksMTM0LAot
ICAgIDEzNCwxMzQsMjE2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICA5NSw5NSw5NSwyMzUsMTg2LDE4NiwxODYsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMTMsMTI1LDk4LDMxLAotICAgIDE2LDE2LDE2LDE0MSwxODksMTg5LDE4OSwxODksMTg5
LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwKLSAgICAxODksMTg5LDE4OSwxODksMTg4LDE4
NiwxODYsMjAzLDIzNCwyMzUsMjM1LDIzNSwxODQsMTM0LDEzNCwxMzQsCi0gICAgMTQ3LDE5Nywy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjIxLAot
ICAgIDM3LDE2LDE2LDE2LDkyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDEzMSwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwx
MjAsMTIwLDEyMCwxMjAsMTIwLAotICAgIDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMzEs
MTcxLDIyNCwyMzUsMjM1LDIzNSwyMzUsMTM3LDEzNCwKLSAgICAxMzQsMTg0LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgOTUsOTUs
OTUsMjM1LDE4NiwxODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE5MiwxMjUsMTIxLAot
ICAgIDU5LDE2LDE2LDU3LDIyOCwyMjcsMjIwLDIxMiwxOTgsMTg1LDE4OSwxODksMTg5LDE4OSwx
ODksMTg5LAotICAgIDE4OSwxODksMTg5LDE4OSwxODksMTg2LDE4NiwxODYsMjAwLDIzNSwyMzUs
MjM1LDIzNSwxODQsMTM0LDEzNCwKLSAgICAxMzQsMTM0LDE1NiwyMTksMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMTczLDQ0LDE2LDE2LDE2LDE2
LDEwNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjAzLDEyOCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsCi0g
ICAgMTIwLDEyMCwxMjAsMTIwLDEyMiwxMjYsMjA2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
MiwxMzQsMTM0LAotICAgIDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICA5NSw5NSw5NSwyMzUsMTg2LDE4NiwxODYsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxMCwxMzYsCi0gICAgMTExLDE5LDE2LDE2LDc4LDIy
OCwyMzUsMjM1LDIzNSwyMzAsMTc2LDE1MCwxNTAsMTUwLDE5NSwyMTIsCi0gICAgMTk1LDE4OSwx
ODksMTk1LDIwOCwxOTIsMTg2LDE4NiwxODYsMjIwLDIzNSwyMzUsMjM1LDIzNSwxOTQsMTQwLAot
ICAgIDEzNCwxMzQsMTM0LDEzNywxODcsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDM3LDE2LDE2LDE2LDE2LDEwNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjAzLDEzNSwxMjAs
MTIwLDEyMCwxMjAsMTIwLDEzNSwxNzEsMjI0LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwxMzQsMTM0
LDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTc5LDEzNCwxMzQsCi0gICAgMTM3LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAotICAgIDk1LDk1LDk1LDIzNSwxODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIyOCwKLSAgICAxNTcsNzgsMTYsMTYsMTYsNzgsMjM1LDIzNSwyMzUsMjM1LDIzNSwx
OTAsMTUwLDE1MCwxNTIsMjIyLAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIwNiwxODYs
MTg2LDE5NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIyOSwKLSAgICAxODQsMTM3LDEzNCwxMzQsMTM0
LDE2MywyMzIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIz
NSwxNzMsNDQsMTYsMTYsMTYsMTYsNzgsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwxMzQsMTM0LDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzIsMTM3LDEzNCwxMzQsCi0gICAgMTg3LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDk1LDk1LDk1LDIzNSwxODYs
MTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMTc1
LDY4LDE2LDE2LDE2LDE2NiwyMzUsMjM1LDIzNSwyMzUsMjMyLDE2NiwxNTAsMTUwLDE2OCwKLSAg
ICAyMzIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzEsMTg4LDE4NiwxODYsMjIwLDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjM1LDIxOSwxNTYsMTM0LDEzNCwxMzQsMTYzLDIzMiwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwxNzMsMzAsMTYsMTYs
MTYsMTY2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwxMzQsMTM0LDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNzUsMTM0LDEzNCwxMzcs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAotICAgIDk1LDk1LDk1LDIzNSwxODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjMyLDE0Myw1OSwxNiwxNiw0NCwyMDEs
MjM1LDIzNSwyMzUsMjM1LDIxOSwxNTIsMTUwLDE1MCwKLSAgICAxNzQsMjMyLDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjA4LDE4NiwxODYsMTg2LDIwMCwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIz
NSwyMzUsMTgyLDEzNCwxMzQsMTM0LDE2MywyMzIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMTczLDQ0LDE2LDE2LDE2LDEwNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwxMzQsMTM0LDEzNCwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIyOSwxMzcsMTM0LDEzNCwxODcsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDk1
LDk1LDk1LDIzNSwxODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIxMywxMTQsMTksMTYsMTYsNDYsMTUzLDIzNSwyMzUsMjM1LDIzNSwx
OTgsMTUwLDE1MCwKLSAgICAxNTAsMTc0LDIzMiwyMzUsMjM1LDIzNSwyMzUsMjMxLDE4OCwxODYs
MTg2LDE4NiwyMjAsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDE4NCwxMzQsMTM0
LDEzNCwxNjMsMjMyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIxNSwyMywxNiwxNiwxNiwxMDUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIzNSwxMzQsMTM0LDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDE5Nywx
MzQsMTM0LDE2MCwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDk1LDk1LDk1LDIzNSwxODYsMTg2LDE4
NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MDMsODcsMTYsMTYsMTYsNDYsMTk5LDIzNSwyMzUsMjM1LDIzNSwxOTIsMTUwLAotICAgIDE1MCwx
NTAsMTc0LDIzMiwyMzUsMjM1LDIzNSwyMzUsMjIwLDE5MiwxODYsMTg2LDE4NiwyMDAsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDE4NCwxMzQsMTM0LDEzNCwxNjMsMjMyLDIzNSwy
MzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE2NiwzMCwx
NiwxNiwxNiwyMjgsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDEz
NCwxMzQsMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzIsMTU2LDEzNCwxMzQsMTk0LDIzNSwKLSAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMDgsCi0gICAgOTUsOTUsOTUsMjM1LDE4NiwxODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMTE1LDE2LDE2LDE2LDk2
LDE5MiwyMzUsMjM1LDIzNSwyMzUsMTkyLAotICAgIDE1MCwxNTAsMTUwLDE3NCwyMzIsMjM1LDIz
NSwyMzUsMjM1LDIzMSwxODgsMTg2LDE4NiwxODYsMjIwLDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwxODQsMTM0LDEzNCwxMzQsMTYzLDIzMiwyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNzMsMzAsMTYsMTYsOTIsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDEzNCwxMzQsMTM0LDIzMiwyMzUsMjM1
LDIzNSwxNzIsMTM0LDEzNCwxMzQsMjI1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMzksCi0gICAgOTUsOTUsMTM5
LDIzNSwxOTEsMTg2LDE4NiwyMjAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMDEsMTYsMTYsMzYsMTE4LDE1MywyMzIsMjM1LDIz
NSwyMzUsCi0gICAgMTkyLDE1MCwxNTAsMTUwLDE3NCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIyMCwx
OTIsMTg2LDE4NiwxOTYsMjM0LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxODQs
MTM0LDEzNCwxMzQsMTYzLDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwxNDYsMTYsMTYsMjMsMjI4LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDIzNSwyMzUsMjM1LDE0NCwxMzQsMTM0LDE2MywyMzIsMjM1LDIxNiwxMzQsMTM0LDEzNCwx
ODcsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIwOCw5NSwKLSAgICA5NSw5NSwyMDgsMjM1LDIwOCwxODYsMTg2LDE5
NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIxNSwyMiwxNiwxNiw0NiwxMTgsMTUzLDIzMiwyMzUsMjM1LAotICAgIDIzNSwxOTIs
MTUwLDE1MCwxNTAsMjA4LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMxLDE4OCwxODYsMTg2LDIwMCwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4NCwxMzQsMTM0LDEzNCwxODcs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDE1Myw3MSwxNTMsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDE5
NCwxMzQsMTM0LDEzNCwxNjksMjM1LDE2OSwxMzQsMTM0LDE2NiwyMzUsMjM1LDIzNSwKLSAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEz
OSw5NSwKLSAgICA5NSwxMzksMjM1LDIzNSwyMzEsMTg2LDE4NiwxODYsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTQ2LDE2
LDE2LDE2LDQ2LDExOCwxNTMsMjMyLDIzNSwKLSAgICAyMzUsMjM1LDE4NCwxNTAsMTUwLDE2Niwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTUsMTg2LDE4NiwxODYsCi0gICAgMjIwLDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTgyLDEzNCwxMzQsMTM3LDIxOSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDE4NCwxMzQsMTM0LDEz
NCwxNzUsMTM3LDEzNCwxMzQsMjE2LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMDgsOTUsOTUsCi0gICAgOTUsMjA4
LDIzNSwyMzUsMjM1LDE4NiwxODYsMTg2LDIzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMjUsMTYsMTYsMTYsMzksMTE4
LDEyMSwxNjgsCi0gICAgMjM1LDIzNSwyMjcsMTUyLDE1MCwxNTAsMTk1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIwNiwxODYsMTg2LAotICAgIDE4NiwyMDMsMjM0LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzMiwxNTMsMTM0LDEzNCwxNDQsMTc1LDIxMCwKLSAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMTQ0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMTM5LDk1LDk1LAotICAgIDEzOSwyMzUsMjM1LDIzNSwyMzUsMTkx
LDE4NiwxODYsMjAzLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMjUsMTYsMTYsMTYsNTYsMTIxLDEyNSwKLSAgICAy
MzUsMjM1LDIzNSwxOTIsMTUwLDE1MCwxNTIsMjIyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMxLDE4
OCwxODYsCi0gICAgMTg2LDE4NiwyMDMsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxNiwx
MzcsMTM0LDEzNCwxMzQsMTM0LAotICAgIDE2NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMDYsMTQwLDEzNCwxMzQsMTM0LDEzNCwxMzcsMjM1LDIzNSwyMzUsMjM1
LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIy
Niw5OSw5NSw5NSwKLSAgICAyMDgsMjM1LDIzNSwyMzUsMjM1LDIxNSwxODYsMTg2LDE4NiwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDEyNSwxNiwxNiwxNiw5OCwxOTIsCi0gICAgMjM1LDIzNSwyMzUsMjMyLDE2
NiwxNTAsMTUwLDE2OCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMjAsMTkyLAotICAgIDE4Niwx
ODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjA2LDE0NywxMzQsMTM0LDEz
NCwKLSAgICAxMzQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIwNiwxNDcsMTM0LDEzNCwxNDcsMTk3LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxODIsOTUsOTUsMTMwLAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4NiwxODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDg1LDE2LDE2LDMwLDIwOCwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjE5LDE1MiwxNTAsMTUwLDIx
NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMTg2LDE4NiwxODYsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxNiwxNzksMTYwLAotICAgIDE5NywyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEzMCw5NSw5NSwxNzgsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMTg2LDE4NiwxODYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjIxLDQ0LDE2LDE2LDY0
LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg0LDE1MCwxNTAsMTkwLDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAxODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwxODIsOTUsOTUsOTUsMjIyLAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4NiwxODYs
MTg2LDIzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxODcsMjMsMTYsMTYsCi0gICAgMTMyLDIzNSwy
MzUsMjM1LDIzNSwyMTQsMTUwLDE1MCwxNTAsMTg0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDE4NiwxODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTY5LDk1LAotICAgIDE1
MiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMjIsMTAzLDk1LDk1LDE1Miwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTkxLDE4NiwxODYsMjAzLDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwxMjUsMTYsMTYsCi0gICAgMjMsMjAxLDIzNSwyMzUsMjM1LDIzNSwx
NTgsMTUwLDE1MCwxNTIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMTg2LDE4NiwxODYs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSw5OSw5NSwKLSAgICA5NSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwxNDMsOTUsOTUsMTEzLDIzMSwyMzUsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjE1LDE4NiwxODYsMTg2LDIzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MjgsNTcsMTYsCi0gICAgMTYsNjQsMjI4LDIzNSwyMzUsMjM1LDIwOCwxNjAsMTYwLDIwMywyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAxODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDk1LDk1LAotICAgIDk1LDk1LDE1MiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxOTEs
OTksOTUsOTUsMjAwLDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE5
MSwxODYsMTg2LDIwMywyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTk0LDIzLAotICAgIDE2LDE2
LDc4LDIyOCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAxODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEwOCw5NSwKLSAgICA5
NSw5NSw5NSw5NSw5NSw5NSw5NSw5NSw5NSw5NSw5NSw5NSw5OSwyMzUsMjM1LDIzNSwKLSAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjE1LDE4NiwxODYsMTg2LDIzNCwyMzUsMjM1LDIz
NSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMTM5LAotICAgIDE2LDE2LDE2LDc4LDIyOCwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDE4NiwxODYsMTg2LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMTk2LDExMywKLSAgICA5NSw5NSw5NSw5NSw5NSw5NSw5NSw5NSw5NSw5
NSw5NSw5OSwxNjksMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwxOTEsMTg2LDE4NiwyMDAsMjM0LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAx
MjUsMTYsMTYsMTYsNzgsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NCwKLSAgICAxODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMTk2LDExMyw5NSw5NSw5NSw5NSw5NSw5NSw5NSwxMTMsMTU3LDIyMiwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTUsMTg2LDE4NiwxODYs
MjAwLDIzNCwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMTI1LDE2LDE2LDE2LDE4Nywy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNCwyMDAsCi0gICAgMTg2LDE4NiwxODgs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTEsMTg2LDE4NiwxODYsMjAwLDIzNCwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsOTksMTYsMTYsMTE5LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzQsMjAwLDE4NiwKLSAgICAxODYsMTg2LDIxMiwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTEsMTg2LDE4NiwxODYsMTkyLDIxNywKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwxODAsMTYsMTYsNDQsMjI4LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIwOCwxODYsMTg2LAotICAgIDE4NiwyMTEsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMTEsMTg2LDE4NiwxODYsMTg2LAotICAgIDIwMCwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUs
MjM1LDIzNSwzNywxNiwxNiw3OCwyMjgsMjM0LDIwNSwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwK
LSAgICAyMTEsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIxNSwxOTAsMTg2LDE4NiwKLSAgICAxODYsMjIwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzQsMTI4LDE2
LDE2LDE2LDY0LDE4MSwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODgsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMyLDIw
MywxODYsCi0gICAgMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4Niwx
ODYsMTg2LDE4NiwxODYsMTg2LAotICAgIDE4NiwxODYsMTg2LDE4NiwxMDEsMTYsMTYsMTYsNjQs
MTgxLDE4NiwxODYsMTg2LDE4NiwxOTIsMjE3LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzEsMTg4LAotICAgIDE4
NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2
LDE4NiwKLSAgICAxODYsMTg2LDE4NiwxODYsMTg2LDEwMSwxNiwxNiwxNiw2NiwyMDksMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIyMCwKLSAgICAxOTIsMTg2LDE4NiwxODYs
MTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsCi0gICAgMTg2
LDE4NiwxODYsMTkyLDIxNSwyMzUsMTI1LDE2LDE2LDE2LDc4LDIyOCwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwxMjUsMTYsMTYsMTYsNzgsMjI4LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDEyNSwxNiwxNiwxNiw3OCwyMjgsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTI1LDE2LDE2
LDE2LDc4LDIyOCwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMjUsMTYsMTYsMTYsNzgsMjI4
LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEyNSwxNiwxNiwxNiw3OCwKLSAgICAyMjgsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMTI1LDE2LDE2LDE2LAotICAgIDc4LDIyOCwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwxMjUsMTYsMTYsCi0gICAgMTYsNzgsMjI4LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEy
NSwxNiwKLSAgICAxNiwxNiwxNiwxNiwxMDUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMjUsCi0gICAgMTYs
MTYsMTYsMTYsMjMsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMTUzLDQ0LDE2LDQ0LDE1Mywy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
Ci0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAot
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEzNiwxMjgs
MTM2LDEyOCwxMzYsMTI4LDEzNiwxMjgsMTM2LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwK
LSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCi0gICAgMTEyLDE0NSw5OSwxNTksOTksMTU5LDgzLDE3Niw4MSwxNTMsODgs
MTMxLDEwMSw4NCwxMDUsNzMsCi0gICAgMTMzLDExNCwxNDQsMTI5LDE0NCwxMjksMTQ0LDEyOSwx
MzEsMTM4LDEyMywxNDMsMTIzLDE0MywxMjEsMTQzLAotICAgIDExNSwxNDMsMTE1LDE0MywxMjcs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMzMsMTIxLDE1Miw5NSwxNTUsOTAsMTU1LDkwLDE1NSw5MCwKLSAg
ICAxNTUsOTAsMTU1LDkwLDE1NSw5MCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjIsMTM1LAotICAgIDEwNywxNTIsMTE4LDE0MCwxMjgsMTI4LDExMSwxNDcs
MTAzLDE1OCwxMDMsMTU4LDEwMywxNTgsMTA3LDE1MywKLSAgICAxMTUsMTQzLDEyMiwxMzUsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTEyLDE0NSw5NCwxNjUsNzQsMTg2LAotICAgIDcxLDE5MCw3
MSwxOTAsNzEsMTkwLDg3LDEzOCwxMDUsNzMsMTA1LDczLDExMCw4NSwxMjAsMTAwLAotICAgIDE0
NCwxMjksMTIwLDE0Nyw4OCwxMzEsMTAwLDEyMCwxMDMsMTU4LDEwMywxNTgsMTAzLDE1OCwxMDMs
MTU4LAotICAgIDEwMywxNTgsMTAzLDE1OCwxMDMsMTU4LDEwMywxNTgsMTA3LDE1MywxMTUsMTQz
LDEyNywxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEzMywxMjEsMTUzLDk0LDE4Myw1MiwxODMs
NTIsMTgzLDUyLDE4Myw1MiwxODMsNTIsCi0gICAgMTgzLDUyLDE4Myw1MiwxNzksNTcsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTAzLDE1NywKLSAgICAxMDMs
MTU4LDExNSwxNDMsMTI4LDEyOCwxMjgsMTI4LDExNSwxNDMsMTE1LDE0MywxMTUsMTQzLDEwNCwx
NTYsCi0gICAgMTAzLDE1OCwxMDMsMTU4LDExNSwxNDMsMTI4LDEyOCwxMjIsMTM1LDg0LDE3NSw3
MywxODcsOTIsMTY3LAotICAgIDExMSwxNDYsMTI4LDEyOCwxMTAsODUsMTA1LDczLDExMSw4Nywx
MjgsMTI4LDEyOCwxMjgsMTQ0LDEyOSwKLSAgICAxNDQsMTI5LDExNiwxNDAsODgsMTcyLDEwMywx
NTgsOTUsMTY2LDg4LDE0OCwxMTUsOTksMTA2LDc2LAotICAgIDExMiw4MywxMjcsMTIwLDEyMywx
NDMsMTIxLDE0MywxMDQsMTU2LDEwMywxNTgsMTE3LDEzOSwxNjQsNzgsCi0gICAgMTgzLDUyLDE4
Myw1MiwxODMsNTIsMTY3LDczLDEzNSwxMTgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTAzLDE1OCwKLSAgICAxMDMsMTU4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjQsMTMyLDkz
LDE2NywxMDgsMTUxLDEyNSwxMzEsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEy
OCwxMDgsODEsMTA1LDczLDExMSw4OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNDQsMTI5LAot
ICAgIDEzNSwxMjgsMTE4LDEzOSwxMDMsMTU4LDEwOSwxNTAsOTksMTU5LDcxLDE5MCw3OSwxODEs
MTE3LDEzOSwKLSAgICAxMjgsMTI2LDEzMCwxMTgsMTQ3LDEzNywxNDQsMTI5LDE1NiwxMzUsMTY2
LDg5LDE4Myw1MiwxODEsNTMsCi0gICAgMTQ3LDEwMCwxNTIsOTUsMTM1LDExOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTIzLDE2MSwK
LSAgICAxMjgsMTYyLDEyOCwxNjIsMTI4LDE2MiwxMjgsMTI4LDEyOCwxMzUsMTI4LDE2MiwxMjgs
MTU5LDEyOCwxNDIsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDcxLDE5MCw3MSwxOTAsMTA5LDE1MCwx
MjIsMTM1LDEyOCwxMjgsMTI3LDEyOCwKLSAgICAxMjcsMTI1LDEwNSw3MywxMjEsMTExLDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEzMSwxMjgsMTQ0LDEyOSwKLSAgICAxMTgsMTM5LDEwMywxNTgs
MTA5LDE1MCwxMjgsMTI4LDEyOCwxMjgsMTEzLDE0Myw3NCwxODcsMTEzLDE3NSwKLSAgICAxNTQs
MTYxLDE1NCwxNjEsMTU5LDEyNiwxNzAsNzgsMTgzLDUyLDE4MSw1MiwxNTcsODgsMTIyLDE1MiwK
LSAgICAxMDMsMTU4LDEwMywxNTgsMTIxLDE0MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNTcsMTI4LDE2MiwKLSAgICAxMTUsMTYwLDExNSwx
NjAsMTI4LDE0NSwxMjgsMTI5LDEyOCwxMjgsMTI4LDE0NSwxMjgsMTUzLDEyOCwxNjIsCi0gICAg
MTI4LDE1OSwxMjgsMTQ1LDk5LDE3Niw4OSwxODAsMTI4LDEyOCwxMTcsMTQxLDEyMywxMzMsMTI4
LDEyOCwKLSAgICAxMjgsMTI4LDEyNCwxMTgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxNDQsMTI5LDEyOSwxNDAsCi0gICAgMTAzLDE1OCwxMDksMTUwLDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTQ3LDE1NSwxNTksMTQwLAotICAgIDE3MSw5NiwxNzksNTgsMTgzLDUy
LDE4MCw1NSwxNjQsODgsMTMwLDEwMywxMDgsODAsMTI4LDEyOCwKLSAgICAxMTcsMTQyLDExNCwx
NTYsMTAzLDE1OCwxMDgsMTUyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEzNywxMjgs
MTU4LDEyOCwxNjIsMTI4LDEzNiwKLSAgICAxMDQsMTU2LDEwMywxNTgsMTI0LDEzMywxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMzYsCi0gICAgMTI4LDE1MywxMjgsMTYyLDEy
OCwxNjIsMTI4LDE2MiwxMjgsMTYyLDEyOCwxNTYsMTI4LDE0MywxMTAsMTQyLAotICAgIDExMywx
NDYsMTI4LDEyOCwxMjgsMTI4LDEyNywxMjgsMTI4LDEyOCwxMjcsMTI4LDExNywxNDgsMTAzLDE1
OCwKLSAgICAxMDksMTUwLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTYwLDExOSwx
NzYsNzgsMTgzLDUyLAotICAgIDE3OSw1NiwxNDAsMTA0LDEyNCwxMjgsMTI4LDEyOCwxNDMsMTI5
LDE0NCwxMjksMTA1LDczLDEyNCwxMTksCi0gICAgMTI4LDEyOCwxMjksMTI5LDEyMSwxNTcsMTAz
LDE1OCwxMDksMTU3LDEyNywxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNjIsMTI4LDE2MSwxMjgsMTM2LDEy
OCwxMjgsCi0gICAgMTI0LDEzMiwxMDMsMTU3LDEwMywxNTgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCw3MSwxOTAsMTIwLDE1MSwx
MjgsMTQ1LDEyOCwxNTksMTI4LDE2MiwxMjgsMTYyLAotICAgIDEyMywxNTMsMTI3LDE0NCwxMjgs
MTI4LDEyNSwxMzEsMTIzLDEzMywxMDcsMTUzLDEyMywxNjEsMTI4LDE2MiwKLSAgICAxMjgsMTYy
LDEyOCwxNjIsMTMxLDE1NSwxNTUsMTA3LDE4MCw1OCwxODMsNTIsMTc2LDYxLDE1Miw5NSwKLSAg
ICAxMjMsMTMzLDgxLDE3OSw3MSwxOTAsMTI4LDEyOCwxMzEsMTI4LDE0NCwxMjksMTA1LDczLDEw
Nyw3OCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjQsMTQwLDEwMywxNTgsMTA2LDE1
MywxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDE2MiwxMjgsMTM0LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4
LDEyNCwxMzMsMTAzLDE1OCwxMTUsMTQ5LDEzNSwxMjksMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
Ci0gICAgMTI4LDEyOCwxMjgsMTI4LDcxLDE5MCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTMxLDExNSwxMTEsCi0gICAgMTI3LDE1MiwxMjgsMTYyLDEyOCwxNTMsMTI4LDEzMCwxMjgsMTI4
LDEyMywxNTQsMTM1LDE0OCwxNDAsMTI3LAotICAgIDE1MSwxMTMsMTYzLDkxLDE4Myw1MiwxODMs
NTIsMTY4LDgxLDE0NSwxMjcsMTI4LDE0MywxMTQsMTczLAotICAgIDExOSwxNTUsMTI1LDEzMSw3
MSwxOTAsODYsMTcyLDEyOCwxMjgsMTQ0LDEyOSwxMjMsMTE3LDEwNSw3MywKLSAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE0MSwxNjAsMTAzLDE1OCwxMDYsMTU0LDEyOCwxMjgs
Ci0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMzgsMTI4LDE2
MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTE2LDE0Mywx
MDMsMTU4LDExMCwxNTMsMTM0LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgs
MTI4LDcxLDE5MCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjMsMTE1LDEwNSw3MywKLSAgICAx
MjgsMTU1LDEyOCwxNjIsMTI4LDE2MiwxMzEsMTU1LDE1NSw5MCwxNzksNTcsMTgzLDUyLDE4Myw1
MiwKLSAgICAxODMsNTIsMTc2LDYwLDE1OCw4NiwxNTUsMTM3LDE1NCwxNjEsMTI4LDE1MiwxMjgs
MTYyLDEyNCwxNzAsCi0gICAgMTAwLDIxOCwxMDAsMjE5LDEwMiwxNTYsNzEsMTkwLDExOSwxMzcs
MTQ0LDEyOSwxMjgsMTI4LDEwNSw3MywKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDE1NCwxNjEsMTE0LDE0NCwxMDMsMTU4LDEyMywxMzMsCi0gICAgMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNjEsMTI4LDE2MiwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMTMsMTQ2LDEwMywxNTgsMTIxLDE0
NSwxMjksMTI4LDEyOCwxMjgsCi0gICAgMTM0LDEyOCwxMjgsMTI4LDcxLDE5MCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMDksODEsMTE2LDExOCwKLSAgICAxMjksMTU4LDE0MiwxMjEsMTU4LDg1
LDE4Myw1MiwxODMsNTIsMTY4LDcyLDE0OCwxMDAsMTQwLDEyOCwKLSAgICAxMzEsMTUzLDExOCwx
NjAsMTE2LDE1OSwxMzksMTYxLDEzMSwxNTksMTI1LDEzMSwxMjgsMTM3LDEyOCwxNjIsCi0gICAg
MTI0LDE3MCwxMDAsMjE5LDEyOCwxMjgsNzEsMTg5LDc2LDE4NCwxNDQsMTI5LDEyOCwxMjgsMTA1
LDczLAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTU0LDE2MSwxMjgsMTI4
LDEwNCwxNTcsMTAzLDE1OCwKLSAgICAxMjQsMTMzLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDE2MiwxMjgsMTUyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTExLDE0OCwxMDMsMTU4LDEyMywxNDIsMTI4LDEyOCwK
LSAgICAxMzAsMTI4LDEzOSwxMjgsODQsMTc4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE0Niwx
MDIsMTY4LDgxLAotICAgIDE4Myw1MiwxODMsNTIsMTgwLDU1LDE1OSw5OCwxMzcsMTQzLDEyOCwx
MjgsMTMwLDEyOCwxMjgsMTI4LAotICAgIDEyOCwxNDcsMTI4LDE2MiwxMjgsMTYyLDEyOCwxNjIs
MTI3LDE2MSwxMjEsMTYxLDExNCwxNTksMTEzLDE1NCwKLSAgICAxMjgsMTYyLDEwNSwxOTYsMTI4
LDEyOCwxMTIsMTQ0LDcxLDE5MCwxNDQsMTI5LDEyOCwxMjgsMTA1LDczLAotICAgIDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTUxLDE1NywxMjgsMTI4LDEyNywxMjksMTAzLDE1NywK
LSAgICAxMDUsMTU1LDEyNywxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE2MiwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMTAsMTQ5LDEwMywxNTgsMTExLDE0OCwKLSAgICAxMjgsMTI4LDEzNSwx
MjgsMTQ0LDEyOSwxMzcsMTI4LDE1MCw5NywxNzgsNjAsMTgzLDUyLDE2OSw2NywKLSAgICAxNDcs
MTAwLDEzMSwxMjIsMTI4LDEyOCwxMjgsMTYyLDEyOCwxNTYsMTI4LDEyOCwxNDMsMTI5LDEzMiwx
MjgsCi0gICAgMTI4LDEyOCwxMjgsMTU1LDEyOCwxNjEsMTQ3LDE2MSwxMjgsMTQ3LDEyOCwxNTUs
MTI4LDE2MiwxMjYsMTYxLAotICAgIDEyOCwxNjIsMTI1LDE2MSwxMTUsMTQzLDEyNywxMjgsNzEs
MTkwLDE0NCwxMjksMTI4LDEyOCwxMDUsNzMsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjMsMTM0LAotICAgIDEwMywxNTgsMTA3
LDE1MywxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTYyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTEzLDE0NiwxMDMsMTU4LAotICAgIDEyMCwxMzcsMTQzLDEwNiwxNjUsODUsMTgwLDU3
LDE4Myw1MiwxNzEsNzYsMTMzLDEyOCwxMDMsMTU4LAotICAgIDExMCwxNTAsMTI4LDEyOCwxMjgs
MTUzLDEyOCwxNjIsMTI4LDEzMSwxMjgsMTI4LDEzMSwxMjgsMTQ0LDEyOSwKLSAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDE1MCwxMzEsMTYxLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTM2LDEyOCwxNTQs
Ci0gICAgMTI4LDE2MiwxMjgsMTYyLDEyMywxNjEsMTE3LDE1NSw4MSwxODAsMTQ0LDEyOSwxMjgs
MTI4LDEwNSw3MywKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTA0LDE1NiwxMDMsMTU4LDExOSwxMzgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTQyLDEyOCwxNjIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEz
MSwxMjIsCi0gICAgMTcyLDY3LDE4Myw1MiwxODAsNTUsMTYyLDg3LDE0MywxMzEsMTI1LDE1OSwx
MDMsMTU4LDEyMCwxMzUsCi0gICAgMTI5LDEyOCwxMjgsMTI4LDEyOCwxNjIsMTI4LDE2MiwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMzEsMTI4LAotICAgIDEzMywxMjgsMTI1LDEzMSwxMjgsMTI4
LDEyOCwxNjIsMTI4LDE1Nyw5OSwxNTksOTksMTU5LDg1LDIwNCwKLSAgICA4MSwxOTIsMTI4LDE2
MiwxMjgsMTYyLDEyOCwxNjIsMTI4LDE2MiwxMjgsMTYyLDExNywxMjgsMTA1LDc0LAotICAgIDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwKLSAgICAxMjQsMTMzLDEwNCwxNTYsMTAzLDE1OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxNjEsMTI4LDE2Miwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxNDcsMTAyLDE3MSw2OCwxODMsNTIsCi0gICAgMTc4LDU4LDEy
OSwxMjQsMTI4LDEyOCwxMjcsMTM0LDEyOCwxNjIsMTAzLDE1OCwxMTMsMTUwLDE0NCwxMjksCi0g
ICAgMTQzLDEyOCwxMzUsMTI4LDEyOCwxNjIsMTI4LDE2Miw3NCwxODYsNzEsMTkwLDcxLDE5MCw3
MSwxOTAsCi0gICAgNzEsMTkwLDczLDE4NywxMjgsMTI4LDEzMSwxMzcsMTI4LDE2Miw5MSwxODAs
ODEsMTUzLDg4LDEzMSwKLSAgICA4OCwxMzEsMTI4LDE2MiwxMjgsMTYyLDEzMCwxMjUsMTM2LDE0
NSwxMjQsMTUzLDEyOCwxNjIsMTIwLDE1NCwKLSAgICAxMjcsMTMxLDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjMs
MTM0LDEwMywxNTgsMTI3LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTYyLDEyOCwxNjIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjksMTI3LDE1Niw4OSwxODMs
NTIsMTcyLDY2LDE1Miw5MywKLSAgICAxMjksMTI3LDEyNCwxMzMsMTIwLDEzNywxMjgsMTI4LDEy
OCwxNDksMTA2LDE1NCwxMjgsMTI4LDExNiw5NywKLSAgICAxMzMsMTE0LDE0NCwxMjksMTI4LDE2
MiwxMjgsMTYyLDkyLDE2Nyw5OSwxNTksOTksMTU5LDk5LDE1OSwKLSAgICA5OSwxNTksMTA3LDE1
MCwxMjUsMTMxLDEyOCwxMjgsMTI2LDE1MywxMjgsMTYyLDEwNCwxMTUsMTA0LDExNSwKLSAgICAx
MDQsMTE1LDEyOCwxNjIsMTI4LDE2MiwxMjMsMTQzLDEyMywxNDMsMTA1LDExOSwxMTYsMTU5LDEy
NywxNjEsCi0gICAgMTI3LDE2MSwxMjMsMTQ0LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMDMsMTU4LDEwNywxNTMs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4
LDE2MiwxMjgsMTYyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEy
OCwxMjgsMTI4LDE1MSw5NiwxODMsNTIsMTgzLDUyLDE2Niw3NCwxMjgsMTI4LDEyOCwxMjgsCi0g
ICAgMTI4LDEyOCwxMjgsMTI4LDEwOCwxNTIsMTI4LDEzNSwxMjgsMTI4LDEwMywxNTcsMTExLDE0
OCwxMjYsMTI5LAotICAgIDg0LDE1NSwxMTIsMTAyLDEyOCwxNjIsMTI4LDE2MiwxMzksMTI4LDEz
MywxMjgsMTI4LDEyOCwxMjAsMTM3LAotICAgIDEwNywxNTIsMTAzLDE1OCwxMDMsMTU4LDEyNSwx
MzEsMTI3LDEyOCwxMjgsMTYxLDExMywxNTksMTAzLDE1OCwKLSAgICAxMDMsMTU4LDEyOCwxNjIs
MTI4LDE2MiwxMDMsMTU4LDEwMywxNTgsMTAzLDE1OCwxMDMsMTU4LDEwNiwxNTgsCi0gICAgMTI0
LDE2MSwxMjgsMTYyLDEyNCwxNTksMTI3LDE0MywxMjgsMTMyLDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMDMsMTU4LDEwMywxNTgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDE2MiwxMjgsMTYyLDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI5LDEyNywxNzQsNjQsMTgzLDUy
LDE3NSw4MSwxNTIsMTI5LDE0MSwxNDQsMTQxLDE0NCwxMzYsMTM5LAotICAgIDEyOCwxMjgsMTA4
LDE1MiwxMDMsMTU4LDEyOCwxNjAsMTI4LDEyOCwxMjQsMTMyLDEwMywxNTgsMTAxLDE2MCwKLSAg
ICA4NSwxNzYsMTExLDE0NiwxMjgsMTYyLDEyOCwxNjIsMTQyLDEyNiwxNDMsMTI5LDExNCwxNDIs
MTAzLDE1OCwKLSAgICAxMDQsMTU2LDExMiwxMzQsMTI4LDE1OSwxNDMsMTU3LDEyOCwxMjgsMTI4
LDEzMywxMjksMTYwLDE0NCwxMjksCi0gICAgMTM1LDE0MiwxMjgsMTYyLDEyOCwxNjIsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI3LDEyOSwxMTcsMTQxLAotICAgIDExNCwxNDQsMTE0LDE1OSwx
MjIsMTYxLDEyOCwxNjIsMTI4LDE2MiwxMjQsMTQ1LDEyNywxMjgsMTI4LDEyOCwKLSAgICAxMjgs
MTI4LDEyOCwxMjgsMTAzLDE1OCwxMDMsMTU4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxNjAsMTI4LDE2MiwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMzYsMTE2LAotICAgIDE3NSw2MywxODMsNTIsMTYyLDEyOCwxNTQsMTYxLDE1NCwx
NjEsMTU0LDE2MSwxNTQsMTYxLDE1NCwxNjEsCi0gICAgMTQ5LDE2MCwxMDMsMTU4LDEyNSwxNTcs
MTI4LDE2MiwxMjgsMTU1LDEyOCwxMjgsMTA2LDE1MSw5NywxNjQsCi0gICAgMTAzLDE1OCwxMDMs
MTU4LDEyOCwxNjIsMTI4LDE2MiwxMjMsMTEyLDExMiwxNTEsMTAzLDE1OCwxMTUsMTQ5LAotICAg
IDEwNSw3MywxMjMsMTA2LDE1NCwxNjEsMTQ3LDE1MSwxMzcsMTI5LDEyOCwxMjgsMTI4LDE0OSwx
MzEsMTQ0LAotICAgIDEyOCwxMjgsMTI4LDE2MiwxMjgsMTYyLDEyMSwxNDksMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyMywxMzMsMTE1LDE0MywxMTMsMTQ4
LDEyMiwxNjEsMTI4LDE2MiwxMjgsMTYyLDExNCwxNTksCi0gICAgMTE0LDE0OSwxMjgsMTI4LDEw
MywxNTgsMTAzLDE1OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTM1LDEyOCwxNjIsMTI4LDE1NywxMjgsMTI4LDE0OSwxMDAsMTgzLDUy
LAotICAgIDE4Miw1MywxNjEsMTMzLDE1MSwxNTcsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMzcsMTQ1LAotICAgIDEwMywxNTgsMTAzLDE1OCwxNTQsMTYxLDEyOCwxNjIsMTU0LDE2
MSwxMzYsMTM4LDEyOCwxMjgsMTM4LDE0MSwKLSAgICAxMzUsMTUyLDExNiwxNTksMTI4LDE2Miwx
MjgsMTYyLDEwOCwxNTEsMTAzLDE1OCwxMDUsMTMyLDE0NCwxMjksCi0gICAgMTMyLDExMSwxNTQs
MTYxLDE0NywxNTMsMTM5LDEyOCwxNDQsMTI5LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTQ5LAotICAg
IDEyOCwxMjgsMTI4LDE2MiwxMjgsMTYyLDEwMCwyMTcsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyNywxMjksMTIy
LDE1MCwxMjEsMTYxLDEyOCwxNjIsCi0gICAgMTI4LDE2MiwxMjAsMTYwLDEwMywxNTgsMTAzLDE1
NywxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMzYsMTI4LDE2MiwxMjgsMTU1LDE4Myw1MiwxNjksNzEsCi0gICAgMTMwLDEy
NCwxNTQsMTYxLDEzNCwxMzYsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMDcsMTUz
LAotICAgIDEwMywxNTgsMTIyLDEzNSwxMjgsMTMxLDEyOCwxNjIsODUsMTc0LDcxLDE5MCwxMTMs
MTQ0LDEyOCwxMjgsCi0gICAgMTQ0LDE0OCwxNTQsMTYxLDEyOSwxNjEsMTI4LDE2MiwxMDMsMTU4
LDEwMywxNTgsMTQwLDEzNywxNDYsMTQxLAotICAgIDE0NCwxMjksMTQ3LDEzOSwxMzEsMTIyLDE0
NCwxMjksMTM5LDEyOCwxMjgsMTI4LDEyOCwxMjksMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwx
NjIsMTI4LDE2MiwxMDAsMjE5LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MTksMTQxLAotICAgIDEyNywxNDUsMTI4LDE2MiwxMDMsMTU4LDExMSwxNDgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDE0NCwxMTMsMTgzLDUyLDE4Myw1MiwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTU0LDE2MSwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDExMCwxNDksMTAzLDE1OCwKLSAgICAxMTcsMTQx
LDEyOCwxMjgsMTI4LDE1NSwxMjgsMTYyLDEyOCwxMjgsODgsMTcxLDcxLDE5MCwxMTMsMTQzLAot
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMTgsMTM1LDEyOCwxNjIsMTEyLDE1OSwxMDMsMTU4LDEwNiwx
NTgsMTMyLDE1OSwKLSAgICAxNDksMTQ1LDE0NCwxMjksMTQ0LDEyOSwxNDUsMTM0LDEyNywxMjcs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMzEsCi0gICAgMTI4LDEyOCwxMjgsMTU1LDEyOCwxNDcsMTAw
LDIxOSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNDEsMTEwLDE1NSw5MCwxNzgsNTksCi0gICAgMTc0
LDY0LDEyOCwxNDAsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxODIsNTMsMTgyLDUzLDEz
OSwxMzksMTI4LDE1NywKLSAgICAxMjgsMTQ1LDE1MiwxNjEsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI3LDEyOCwxMDMsMTU4LDEwMywxNTcsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxNjIs
MTI4LDE2MiwxMjgsMTI4LDEyOCwxMjgsMTEzLDE0Myw4MywxNzYsCi0gICAgMTI1LDEzMSwxMjgs
MTI4LDEwMywxNTYsMTIyLDE2MSwxMjgsMTYyLDEyOCwxNDgsMTE2LDE1OSwxMDMsMTU4LAotICAg
IDEwNiwxNTcsMTI5LDEzOSwxNDQsMTI5LDE0OCwxNDMsMTUxLDE1NiwxNDAsMTQzLDEzMSwxMzIs
MTI4LDE0MiwKLSAgICAxMjgsMTI5LDEyOCwxMjgsMTI4LDEyOSwxMDAsMjE5LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMzYsMTE2LDE1NSw5MCwxNTUsOTAs
MTgzLDUyLDE4Myw1MiwxODMsNTIsMTcxLDY4LAotICAgIDEzOCwxMTMsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjksMTI3LDE4Myw1MiwxNDEsMTEwLDEyOCwxMzYsMTI4LDE1OSwKLSAg
ICAxMjgsMTYyLDEyOCwxNjEsMTI4LDE0NSwxMjgsMTM4LDEyOCwxMjgsMTA5LDE1MSwxMDMsMTU4
LDEwMSwyMDQsCi0gICAgMTAwLDIxOSwxMDAsMjE5LDEyOCwxNjIsMTI4LDE2MiwxMDksMTkwLDEy
MywxNDUsMTI4LDEyOCwxMjgsMTI4LAotICAgIDg2LDE3MywxMjgsMTI4LDEyMywxMzMsMTExLDE0
OCwxMzAsMTYxLDEyOCwxNjEsMTQ3LDE1MywxMzEsMTM2LAotICAgIDExMiwxNTEsMTAzLDE1OCwx
MjMsMTQ0LDEyOSwxMzksMTQ3LDE0MywxNTQsMTYxLDE1NCwxNjEsMTUxLDE1NywKLSAgICAxMjgs
MTYwLDE0NSwxMDcsMTU1LDkwLDE0MSwxMzUsMTU1LDkwLDE1NSw5MCwxNTUsOTAsMTcxLDY4LAot
ICAgIDE4Myw1MiwxODMsNTIsMTgzLDUyLDE4Myw1MiwxNzksNTcsMTU1LDkwLDEzOCwxMTMsMTI4
LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTcyLDY2LDE4
Myw1MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTMwLDEzNSwxNjEsMTI4LDE2
MiwxMjgsMTYyLDEyOCwxNDUsMTE1LDE2MCwxMTIsMTU3LDEwMCwyMTksCi0gICAgMTE0LDE3Mywx
MTQsMTczLDEyOCwxNjIsMTI4LDE2MiwxMDEsMjE2LDEwMCwyMTksMTA5LDE5MCwxMjcsMTI5LAot
ICAgIDExOSwxMzgsMTIwLDEzOCwxMjgsMTI4LDEzMywxMzksMTUyLDE2MSwxMjgsMTYyLDEyOSwx
NTcsMTQ0LDEyOSwKLSAgICAxMzcsMTI4LDExMSwxNDgsMTAzLDE1OCwxMDMsMTU4LDEzNiwxMzQs
MTQzLDEwOSwxNjYsMTA0LDE2OSwxMDUsCi0gICAgMTgzLDUyLDE4Myw1MiwxODMsNTIsMTgzLDUy
LDE4Myw1MiwxODMsNTIsMTgzLDUyLDE3Miw2NywKLSAgICAxNTUsOTAsMTUyLDk1LDEzMCwxMjQs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxODMsNTIsMTUyLDk1LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAotICAgIDEyOCwxMjgsMTU0LDE2MSwxMjgsMTMzLDEyOCwxNTMsMTI4LDE2MiwxMjgs
MTYyLDEyOCwxNjIsMTI2LDE2NSwKLSAgICAxMjgsMTQ1LDEyOCwxNDIsMTI4LDE2MiwxMjgsMTYy
LDEyNywxMzEsMTE0LDE3MywxMDAsMjE5LDEwNywxODQsCi0gICAgMTAzLDE1OCwxMDMsMTU4LDEz
MywxMzQsMTI4LDEyOCwxMjQsMTU4LDExMywxNTMsMTI4LDE2MiwxMzAsMTU3LAotICAgIDEyOCwx
MzQsMTI4LDEyOCwxMjcsMTI5LDExNiwxNDEsMTU1LDg4LDE4Myw1MiwxODMsNTIsMTgzLDUyLAot
ICAgIDE2Niw4NCwxNTIsMTE0LDEzOCwxNzIsMTI4LDEyOSwxMjgsMTI4LDE0MywxNDYsMTQ0LDE0
OCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4
LDEyOSwxMjcsMTgzLDUyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4
LDEyOCwxNTQsMTYxLDEyOCwxMjgsMTI3LDEyOCwxMDMsMTU4LDExMywxNDUsMTI4LDEzNywxMjEs
MTc1LAotICAgIDEyOCwxNjIsMTI4LDE2MiwxMjgsMTYyLDEyOCwxNjIsMTI4LDE0MywxMjgsMTMy
LDExNywxNjMsMTAzLDE1OCwKLSAgICAxMDUsMTU5LDE0MSwxNTksMTUyLDE1NywxMjgsMTI4LDEy
OCwxMjgsOTIsMTcyLDE0MCwxMzcsMTQ1LDEyNywKLSAgICAxNTUsMTA3LDE2NCw4MiwxODMsNTIs
MTgzLDUyLDE4MSw1MywxNDUsMTAxLDExOCwxNDgsMTI4LDE2MiwKLSAgICAxMjgsMTYyLDEyOCwx
NjIsMTA0LDIwNSwxMzAsMTMwLDEyOCwxMjgsMTI4LDEyOCwxMzUsMTM2LDE1MywxNTksCi0gICAg
MTQ0LDE0OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTcwLDcwLDE4Myw1Miwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTU0LDE2MSwxMzcs
MTM5LDEwOSwxNTEsMTAzLDE1OCwxMjcsMTI5LDEyOCwxMjgsMTE4LDE1NywKLSAgICAxMDAsMjE5
LDExOCwxNjksMTI4LDE0NSwxMjgsMTYyLDEyOCwxNjIsMTI4LDE2MiwxMjgsMTYyLDEyOCwxNjIs
Ci0gICAgMTI4LDE2MiwxMjgsMTYyLDEyOCwxNjIsMTI4LDEzOCwxNTUsOTAsMTgzLDUyLDE4Myw1
MiwxODMsNTIsCi0gICAgMTgzLDUyLDE3OSw1OSwxNTgsMTAxLDE1MiwxMTQsMTMwLDE1NiwxMjgs
MTYyLDEyOCwxNjIsMTI3LDE2MSwKLSAgICAxMDYsMTk3LDEyOCwxNjIsMTI1LDEzNiwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEzMywxMzQsCi0gICAgMTQ1LDE1MCwxNTAsMTU2LDEz
NiwxMzgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTgzLDUyLDE4Myw1MiwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTU0LDE2MSwxNTQsMTYxLDEwMywxNTgsMTA2LDE1
NCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMDcsMTk2LDEwMCwyMTksMTIzLDE0Miwx
MjgsMTYwLDEyOCwxNjIsMTI4LDE2MiwxMjQsMTYxLDEzMCwxNjEsCi0gICAgMTI3LDE2OSwxNTAs
MTE2LDE3MSw3NiwxODMsNTIsMTgzLDUyLDE3OSw1NywxNTUsOTAsMTMzLDExNywKLSAgICA5OSwx
NzYsOTksMTc2LDEyNywxNTYsMTI4LDE2MiwxMjgsMTYyLDEyOCwxNjIsMTI2LDE2MCwxMDYsMTU3
LAotICAgIDEwMywxNTgsMTI4LDE2MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEzNiwxMzgsMTQxLDE0NCwxNTQsMTYwLDEzOCwx
NDAsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4
LDEyOCwxODMsNTIsMTgzLDUyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAg
MTI4LDEyOCwxNDUsMTQ5LDEzOSwxNjAsMTAzLDE1OCwxMjIsMTM1LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAotICAgIDEyOCwxMjgsMTAwLDIxNywxMDEsMTg4LDEwMywxNjMsMTE5LDE2MCwxNDMs
MTMxLDE1OSw5OCwxNzQsNjksCi0gICAgMTgzLDUyLDE4Myw1MiwxNzIsNjcsMTU5LDg1LDE1Miwx
MTMsMTI4LDEyNywxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTA0LDE1NCw3MSwxOTAsNzksMTgxLDEy
MiwxNjIsMTIwLDE3OCwxMjYsMTY1LDEyOCwxNjIsMTI4LDE2MCwKLSAgICAxMTYsMTU2LDEyOCwx
NjIsMTAzLDE1NCwxMTIsMTQ2LDEyNiwxMjksMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTMwLDEzMCwxNDEsMTQ0LDEzOCwxNDAsMTM2LDEzOCwx
MjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTgzLDUyLDE4Myw1Miwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMDQs
MTU4LDEwMywxNTgsMTM3LDEzOSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4
LDE0MCwxMTQsMTY1LDc1LDE4Myw1MiwxODMsNTIsMTgzLDUyLDE3OSw2MCwxNTksOTksCi0gICAg
MTUzLDExMiwxMzUsMTQ2LDEyOCwxNDksMTM5LDEzOSwxMzQsMTE1LDExMSw4NywxMjgsMTI4LDEy
OCwxMjgsCi0gICAgMTI4LDEyOCwxMDAsMTgyLDcxLDE5MCw3OSwxOTgsMTAwLDIxOSwxMDYsMTk3
LDEyNiwxNDEsMTI4LDE1NCwKLSAgICAxMjgsMTYyLDEyOCwxNjIsMTA5LDEzNSwxMDMsMTU2LDEw
MywxNTYsMTE3LDEyOSwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTMyLDEzMywxNTIsMTU4LAotICAgIDEzNywxNDAs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwK
LSAgICAxMjgsMTI4LDEyOCwxMjgsMTgzLDUyLDE4Myw1MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMDMsMTU4LDEzMSwxNTgsMTU0LDE2MSwx
NjIsMTMwLDE2OCwxMDYsMTcxLDk2LAotICAgIDE4MSw1OSwxODMsNTIsMTcyLDc0LDE2OCwxMDYs
MTU1LDkwLDEzNSwxMzUsMTA1LDIwMywxMDAsMjE5LAotICAgIDEwNiwyMDUsMTE3LDE4NSwxMjks
MTU5LDEyOCwxNjIsMTI4LDE2MiwxMjMsMTQyLDEyNywxMzgsMTI4LDEyOCwKLSAgICAxMjQsMTQx
LDEwNCwyMTEsOTIsMTg4LDcxLDE5MCw5NSwxNjYsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0g
ICAgMTI4LDE0MiwxNDEsMTM1LDE0MiwxMjksMTIyLDEyMywxMDUsMTUwLDEwMywxNTgsMTExLDE0
OCwxMjcsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxNDMsMTQ2LDE0OSwxNTQsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4
LDE4Myw1MiwxODMsNTIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgs
MTI4LDEyOCwxMjgsMTExLDE0OCwxNTUsOTksMTgwLDYyLDE4Myw1MiwxODMsNTIsMTc5LDU3LAot
ICAgIDE1Myw5MiwxMjcsMTI2LDE0MSwxNDQsMTMzLDEzNCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LAotICAgIDEwMCwyMTksMTAwLDIxOSwxNDQsMTI5LDEzOSwxMzgsMTI4LDE0NSwx
MjgsMTUzLDEyNiwxNTQsMTI4LDEyOSwKLSAgICAxMjgsMTI4LDEyOCwxNDksMTI4LDE2MiwxMTks
MTY1LDEwOCwxNzEsMTIzLDE1MCwxMjgsMTQ1LDEyOCwxNDUsCi0gICAgMTI4LDEzNCwxMzQsMTI4
LDE0NCwxMjksMTMwLDEyOCwxMjgsMTI4LDExNSwxNDMsMTAzLDE1OCwxMDYsMTUzLAotICAgIDEy
NywxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwKLSAgICAxMjgsMTI4LDEyOSwxMjksMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDE4MCw1NSwxODMsNTIsMTU1
LDkwLDE1NSw5MCwxNjQsNzgsMTgzLDUyLAotICAgIDE4Myw1MiwxODMsNTIsMTgzLDUyLDE4Myw1
MiwxNzEsNjgsMTQ0LDEwNSwxMjgsMTI4LDEwOSwxNTEsCi0gICAgMTAzLDE1OCwxMjUsMTMxLDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEwMCwy
MTksMTAwLDIxOSwxNDQsMTI5LDE0NCwxMjksMTI4LDEyOCwxMjgsMTI4LDEyNiwxMjMsMTA5LDg1
LAotICAgIDEyMywxMTcsMTI4LDEyOCwxMjgsMTQ1LDEyOCwxNTAsMTI2LDE1OCwxMjgsMTYyLDEy
OCwxNjIsMTI4LDE2MiwKLSAgICAxMjgsMTYyLDEyOCwxNjIsMTMxLDE1NCwxNDQsMTI5LDEzNCwx
MjgsMTI4LDEyOCwxMjIsMTM1LDEwMywxNTgsCi0gICAgMTA0LDE1NiwxMTgsMTQwLDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAg
ICAxMjgsMTI4LDEyOCwxMjgsMTM1LDExNywxNzksNTcsMTgzLDUyLDE4Myw1MiwxNzksNTcsMTU4
LDg2LAotICAgIDE1NSw5MCwxNTUsOTAsMTM4LDExMSwxMzUsMTE4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEwMywxNTgsCi0gICAgMTAzLDE1NywxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEwMCwyMTksMTAwLDIxOSwxNDQsMTI5
LDE0NCwxMjksMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI1LDEyMiwKLSAgICAxMDksODQsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMDgsMTQ5LDcxLDE5MCw4NywxNzIsCi0gICAg
MTI4LDE0MiwxMjgsMTQ1LDEyOSwxMzQsMTQxLDEyOSwxNDQsMTI5LDEyOCwxMjgsMTI4LDEyOCwx
MjMsMTM0LAotICAgIDEwOSwxNTAsMTAzLDE1OCwxMTAsMTUwLDEyNywxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwx
MjgsMTI4LDEyOCwxMDMsMTU4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyMCwxMzcsMTAzLDE1
OCwKLSAgICAxMjIsMTM1LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsCi0gICAgMTAwLDIxOSwxMDAsMjE5LDE0NCwxMjksMTQ0LDEyOSwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTEzLDkxLDEyOCwxMjgs
MTI3LDEyNSwxMjgsMTI4LDEyOCwxMjgsOTksMTU5LDcxLDE5MCwKLSAgICAxMDYsMTUxLDEyOCwx
MjgsMTI4LDEyOCwxMjksMTI4LDE0NCwxMjksMTM4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAg
MTI4LDEyOCwxMTgsMTQwLDEwMywxNTgsMTA2LDE1MywxMjcsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEw
MywxNTgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTAzLDE1NywxMDYsMTU0LAotICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKLSAgICAxMDAsMjE5LDEwMCwyMTksMTQ0LDEyOSwxNDQsMTI5LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjYsMTIzLDEyMSwxMTIsMTI4LDEyOCwxMTcs
MTAyLDEyOCwxMjgsMTI4LDEyOCw4NSwxNzQsCi0gICAgNzEsMTkwLDEwNiwxNTEsMTI4LDEyOCwx
MjgsMTI4LDEzOCwxMjgsMTQ0LDEyOSwxMzgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgs
MTI4LDEyMiwxMzUsMTAzLDE1OCwxMDYsMTUzLDEyNywxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEwMywxNTgsMTI3LDEy
OCwxMjgsMTI4LDExOSwxMzgsMTAzLDE1OCwxMjIsMTM1LAotICAgIDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMDAs
MjE5LDEwNCwyMDUsMTQzLDEyOSwxNDQsMTI5LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI3LDEyNywxMjgsMTI4LDExMyw5MCwx
MjcsMTI3LDEyOCwxMjgsCi0gICAgODUsMTc0LDcxLDE5MCwxMDYsMTUxLDEyOCwxMjgsMTI4LDEy
OCwxMzgsMTI4LDE0NCwxMjksMTM3LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjIsMTM1LDEwMywxNTgsMTA2LDE1MywxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTAzLDE1OCwxMDYsMTUzLDEyOCwxMjgsMTAz
LDE1OCwxMDcsMTUzLDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMTYsMTY4LAotICAgIDEwMCwyMTksMTI1LDEzNiwx
MzMsMTI4LDE0NCwxMjksMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI0LDEyMCwxMDksODEsMTI3LDEy
NywKLSAgICAxMjgsMTI4LDgyLDE3Nyw3MSwxOTAsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTM5
LDEyOCwxNDQsMTI5LAotICAgIDEzMCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTIyLDEz
NSwxMDMsMTU4LDExMCwxNDksMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjIsMTM1LDEwMywxNTgsMTA4LDE1MiwxMDMsMTU4LDEyNSwxMzEs
MTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEwMCwyMTksCi0gICAgMTA0LDIwNSwxMjgsMTI4LDEyOCwxMjgsMTQ0LDEy
OSwxMzMsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyNSwxMjIsMTA1LDczLAotICAgIDEyOCwx
MjgsMTI1LDEzMSw3MSwxOTAsODYsMTcyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE0NCwxMjks
Ci0gICAgMTQ0LDEyOSwxMzMsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDExNSwxNDMsMTAz
LDE1OCwxMDgsMTUyLAotICAgIDExOSwxMzgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTEzLDE0NiwxMDMsMTU4LDEwNCwxNTYsMTI4LDEyOCwxMjgsMTI4LAotICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyMiwxNDgs
MTAwLDIxOSwKLSAgICAxMjUsMTM2LDEyOCwxMjgsMTI4LDEyOCwxNDQsMTI5LDE0NCwxMjksMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjEsMTExLAotICAgIDEyOCwxMjgsMTI4LDEyOCw5
OSwxNTksNzEsMTkwLDEyMiwxMzUsMTI4LDEyOCwxMjgsMTI4LDEzMCwxMjgsCi0gICAgMTQ0LDEy
OSwxNDQsMTI5LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTE3LDE0MSwxMDgsMTUx
LAotICAgIDExMSwxNDgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEwMywyMDcsMTAwLDIxOSwKLSAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNDQsMTI5LDE0NCwxMjksMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDcxLDE5
MCw4NCwxNzUsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTQ0LDEyOSwxNDQsMTI5LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMDgsMTkzLAotICAgIDEwNSwyMDAsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMTcsMTYyLDEwMCwyMTksMTE5LDE1NiwKLSAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMzksMTI4LDE0NCwxMjksMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0g
ICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDkzLDE2NSw3NCwxODYsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTQ0LDEyOSwxNDQsMTI5LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMDEsMjE1LAotICAgIDEwMCwyMTksMTA1LDIwMCwxMTQsMTczLDExNCwxNzMsMTE0
LDE3MywxMDAsMjE3LDEwMCwyMTcsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDE0NCwxMjksMTQxLDEyOSwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAot
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwKLSAgICAxNDQsMTI5LDE0NCwxMjksMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
NCwxNDEsCi0gICAgMTEwLDE4NiwxMDAsMjE5LDEwMCwyMTksMTAwLDIxOSwxMDAsMjE5LDEwNiwx
OTksMTIxLDE0OSwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTM5LDEyOCwxNDQsMTI5LDEzNCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAotICAgIDE0NCwxMjksMTQ0LDEyOSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE0
MCwxMjgsMTQ0LDEyOSwxMzUsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE0MiwxMjksCi0gICAgMTQ0
LDEyOSwxMzEsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwK
LSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMzks
MTI4LDE0NCwxMjksCi0gICAgMTQyLDEyOSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTM2LDEyOCwxNDQsMTI5LDE0NCwxMjksMTQ0LDEyOSwKLSAgICAxMzIsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTM0LDEy
OCwKLSAgICAxNDQsMTI5LDE0NCwxMjksMTQ0LDEyOSwxNDQsMTI5LDE0NCwxMjksMTQ0LDEyOSwx
NDQsMTI5LDE0NCwxMjksCi0gICAgMTQ0LDEyOSwxNDQsMTI5LDE0MCwxMjksMTI4LDEyOCwxMzAs
MTI4LDEzOSwxMjgsMTM2LDEyOCwxMzUsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0g
ICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEz
NSwxMjgsMTM2LDEyOCwxMzYsMTI4LDEzNiwxMjgsMTM2LDEyOCwxMzYsMTI4LDEzNiwxMjgsMTM2
LDEyOCwKLSAgICAxMzYsMTI4LDEzNiwxMjgsMTMxLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
Ci0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAot
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwK
LSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0g
ICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
Ci0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAot
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwKLX07ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0JpbmRHZW5lcmF0ZXNS
ZXNvdXJjZVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL0JpbmRHZW5lcmF0ZXNSZXNvdXJjZVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlOGFlNzM5Zjg2NTdhZmM3N2ZhYTRmMGU1MjAyOGU0YzNmZTk4N2RjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9CaW5kR2VuZXJhdGVzUmVzb3VyY2VUZXN0LmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBCaW5kR2VuZXJh
dGVzUmVzb3VyY2VUZXN0LmNwcCA6IFRlc3RzIG9mIHRoZSBHTF9DSFJPTUlVTV9iaW5kX2dlbmVy
YXRlc19yZXNvdXJjZSBleHRlbnNpb24uCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVz
dC5oIgotCi1uYW1lc3BhY2UgYW5nbGUKLXsKLQotY2xhc3MgQmluZEdlbmVyYXRlc1Jlc291cmNl
VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIEJpbmRHZW5lcmF0
ZXNSZXNvdXJjZVRlc3QoKSB7IHNldEJpbmRHZW5lcmF0ZXNSZXNvdXJjZShmYWxzZSk7IH0KLX07
Ci0KLS8vIENvbnRleHQgY3JlYXRpb24gd291bGQgZmFpbCBpZiBFR0xfQ0hST01JVU1fY3JlYXRl
X2NvbnRleHRfYmluZF9nZW5lcmF0ZXNfcmVzb3VyY2Ugd2FzIG5vdAotLy8gYXZhaWxhYmxlIHNv
IHRoZSBHTCBleHRlbnNpb24gc2hvdWxkIGFsd2F5cyBiZSBwcmVzZW50Ci1URVNUX1AoQmluZEdl
bmVyYXRlc1Jlc291cmNlVGVzdCwgRXh0ZW5zaW9uU3RyaW5nRXhwb3NlZCkKLXsKLSAgICBFWFBF
Q1RfVFJVRShleHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9iaW5kX2dlbmVyYXRlc19yZXNv
dXJjZSIpKTsKLX0KLQotLy8gVmVyaWZ5IHRoYXQgR0xfQklORF9HRU5FUkFURVNfUkVTT1VSQ0Vf
Q0hST01JVU0gY2FuIGJlIHF1ZXJpZWQgYnV0IG5vdCBjaGFuZ2VkCi1URVNUX1AoQmluZEdlbmVy
YXRlc1Jlc291cmNlVGVzdCwgUXVlcnlWYWxpZGF0aW9uKQotewotICAgIEdMaW50IGludFZhbHVl
ID0gMjsKLSAgICBnbEdldEludGVnZXJ2KEdMX0JJTkRfR0VORVJBVEVTX1JFU09VUkNFX0NIUk9N
SVVNLCAmaW50VmFsdWUpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9F
UShpbnRWYWx1ZSwgR0xfRkFMU0UpOwotCi0gICAgZmxvYXQgZmxvYXRWYWx1ZSA9IDIuMGY7Ci0g
ICAgZ2xHZXRGbG9hdHYoR0xfQklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU0sICZmbG9h
dFZhbHVlKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfRVEoZmxvYXRW
YWx1ZSwgMC4wZik7Ci0KLSAgICBHTGJvb2xlYW4gYm9vbFZhbHVlID0gR0xfVFJVRTsKLSAgICBn
bEdldEJvb2xlYW52KEdMX0JJTkRfR0VORVJBVEVTX1JFU09VUkNFX0NIUk9NSVVNLCAmYm9vbFZh
bHVlKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfRVEoYm9vbFZhbHVl
LCBHTF9GQUxTRSk7Ci0KLSAgICBib29sVmFsdWUgPSBnbElzRW5hYmxlZChHTF9CSU5EX0dFTkVS
QVRFU19SRVNPVVJDRV9DSFJPTUlVTSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAg
RVhQRUNUX0VRKGJvb2xWYWx1ZSwgR0xfRkFMU0UpOwotCi0gICAgZ2xFbmFibGUoR0xfQklORF9H
RU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU0pOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZB
TElEX0VOVU0pOwotCi0gICAgZ2xEaXNhYmxlKEdMX0JJTkRfR0VORVJBVEVTX1JFU09VUkNFX0NI
Uk9NSVVNKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLX0KLQotLy8g
VGVzdCB0aGF0IGJ1ZmZlcnMgY2Fubm90IGJlIGdlbmVyYXRlZCBvbiBiaW5kCi1URVNUX1AoQmlu
ZEdlbmVyYXRlc1Jlc291cmNlVGVzdCwgQnVmZmVycykKLXsKLSAgICBnbEJpbmRCdWZmZXIoR0xf
RUxFTUVOVF9BUlJBWV9CVUZGRVIsIDIpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIs
IDApOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgaWYgKGdldENsaWVudE1ham9y
VmVyc2lvbigpID49IDMpCi0gICAgewotICAgICAgICBnbEJpbmRCdWZmZXJCYXNlKEdMX1VOSUZP
Uk1fQlVGRkVSLCAwLCAzKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLQotICAgICAgICBnbEJpbmRCdWZmZXJCYXNlKEdMX1VOSUZPUk1fQlVGRkVSLCAw
LCAwKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgZ2xCaW5kQnVm
ZmVyUmFuZ2UoR0xfVU5JRk9STV9CVUZGRVIsIDAsIDQsIDEsIDIpOwotICAgICAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgICAgIGdsQmluZEJ1ZmZlclJh
bmdlKEdMX1VOSUZPUk1fQlVGRkVSLCAwLCAwLCAxLCAyKTsKLSAgICAgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQgdGV4dHVyZXMgY2Fubm90IGJlIGdl
bmVyYXRlZCBvbiBiaW5kCi1URVNUX1AoQmluZEdlbmVyYXRlc1Jlc291cmNlVGVzdCwgVGV4dHVy
ZXMpCi17Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAyKTsKLSAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCAwKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCB0
aGF0IGZyYW1lYnVmZmVycyBjYW5ub3QgYmUgZ2VuZXJhdGVkIG9uIGJpbmQKLVRFU1RfUChCaW5k
R2VuZXJhdGVzUmVzb3VyY2VUZXN0LCBGcmFtZWJ1ZmZlcnMpCi17Ci0gICAgZ2xCaW5kRnJhbWVi
dWZmZXIoR0xfRlJBTUVCVUZGRVIsIDIpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7
Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRlc3QgdGhhdCByZW5kZXJidWZm
ZXIgY2Fubm90IGJlIGdlbmVyYXRlZCBvbiBiaW5kCi1URVNUX1AoQmluZEdlbmVyYXRlc1Jlc291
cmNlVGVzdCwgUmVuZGVyYnVmZmVycykKLXsKLSAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVO
REVSQlVGRkVSLCAyKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotCi0gICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgMCk7Ci0gICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25m
aWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9u
KSB0aGVzZQotLy8gdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElB
VEVfVEVTVChCaW5kR2VuZXJhdGVzUmVzb3VyY2VUZXN0LAotICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9EM0QxMV9GTDlfMygpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX09QRU5HTEVTKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygp
KTsKLQotfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZ2xfdGVzdHMvQmluZFVuaWZvcm1Mb2NhdGlvblRlc3QuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0JpbmRVbmlmb3JtTG9jYXRpb25U
ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzMyYTExMDY4M2Y4ZmU4ZmMz
ODg0NGUzNWZiMjA0ZDUzMjlhOWZkYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
QmluZFVuaWZvcm1Mb2NhdGlvblRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDg0ICswLDAg
QEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KLS8vCi0KLS8vIEJpbmRVbmlmb3JtTG9jYXRpb25UZXN0LmNwcCA6IFRlc3RzIG9m
IHRoZSBHTF9DSFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24gZXh0ZW5zaW9uLgotCi0jaW5j
bHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotI2luY2x1ZGUgPGNtYXRoPgotCi11c2lu
ZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1jbGFzcyBCaW5kVW5pZm9ybUxv
Y2F0aW9uVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIEJpbmRV
bmlmb3JtTG9jYXRpb25UZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7
Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRz
KDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0Js
dWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotCi0gICAg
dm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7
Ci0gICAgICAgIG1CaW5kVW5pZm9ybUxvY2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEJJ
TkRVTklGT1JNTE9DQVRJT05DSFJPTUlVTVBST0M+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0Fk
ZHJlc3MoImdsQmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNIikpOwotICAgIH0KLQotICAgIHZv
aWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKG1Qcm9ncmFtICE9IDAp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQotICAgIHR5cGVk
ZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xCSU5EVU5JRk9STUxPQ0FUSU9OQ0hST01JVU1QUk9D
KShHTHVpbnQgbVByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGNoYXIgKm5hbWUpOwotICAgIFBGTkdMQklORFVOSUZPUk1MT0NBVElPTkNIUk9N
SVVNUFJPQyBtQmluZFVuaWZvcm1Mb2NhdGlvbiA9IG51bGxwdHI7Ci0KLSAgICBHTHVpbnQgbVBy
b2dyYW0gPSAwOwotfTsKLQotLy8gVGVzdCBiYXNpYyBmdW5jdGlvbmFsaXR5IG9mIEdMX0NIUk9N
SVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbgotVEVTVF9QKEJpbmRVbmlmb3JtTG9jYXRpb25UZXN0
LCBCYXNpYykKLXsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX2JpbmRf
dW5pZm9ybV9sb2NhdGlvbiIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgYmVjYXVzZSBHTF9DSFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24gaXMgbm90IGF2
YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTkUobUJpbmRVbmlmb3JtTG9jYXRpb24sIG51bGxwdHIp
OwotCi0gICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291
cmNlID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgYXR0cmlidXRlIHZlYzQgYV9wb3Np
dGlvbjsKLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xfUG9z
aXRpb24gPSBhX3Bvc2l0aW9uOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIGZzU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgcHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7Ci0gICAgICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yQzsKLSAgICAgICAg
dW5pZm9ybSB2ZWM0IHVfY29sb3JCWzJdOwotICAgICAgICB1bmlmb3JtIHZlYzQgdV9jb2xvckE7
Ci0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsX0ZyYWdDb2xv
ciA9IHVfY29sb3JBICsgdV9jb2xvckJbMF0gKyB1X2NvbG9yQlsxXSArIHVfY29sb3JDOwotICAg
ICAgICB9Ci0gICAgKTsKLSAgICAvLyBjbGFuZy1mb3JtYXQgb24KLQotICAgIEdMaW50IGNvbG9y
QUxvY2F0aW9uID0gMzsKLSAgICBHTGludCBjb2xvckJMb2NhdGlvbiA9IDEwOwotICAgIEdMaW50
IGNvbG9yQ0xvY2F0aW9uID0gNTsKLQotICAgIEdMdWludCB2cyA9IENvbXBpbGVTaGFkZXIoR0xf
VkVSVEVYX1NIQURFUiwgdnNTb3VyY2UpOwotICAgIEdMdWludCBmcyA9IENvbXBpbGVTaGFkZXIo
R0xfRlJBR01FTlRfU0hBREVSLCBmc1NvdXJjZSk7Ci0KLSAgICBtUHJvZ3JhbSA9IGdsQ3JlYXRl
UHJvZ3JhbSgpOwotCi0gICAgbUJpbmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIGNvbG9yQUxv
Y2F0aW9uLCAidV9jb2xvckEiKTsKLSAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwg
Y29sb3JCTG9jYXRpb24sICJ1X2NvbG9yQlswXSIpOwotICAgIG1CaW5kVW5pZm9ybUxvY2F0aW9u
KG1Qcm9ncmFtLCBjb2xvckNMb2NhdGlvbiwgInVfY29sb3JDIik7Ci0KLSAgICBnbEF0dGFjaFNo
YWRlcihtUHJvZ3JhbSwgdnMpOwotICAgIGdsRGVsZXRlU2hhZGVyKHZzKTsKLQotICAgIGdsQXR0
YWNoU2hhZGVyKG1Qcm9ncmFtLCBmcyk7Ci0gICAgZ2xEZWxldGVTaGFkZXIoZnMpOwotCi0gICAg
Ly8gTGluayB0aGUgbVByb2dyYW0KLSAgICBnbExpbmtQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAv
LyBDaGVjayB0aGUgbGluayBzdGF0dXMKLSAgICBHTGludCBsaW5rZWQgPSAwOwotICAgIGdsR2V0
UHJvZ3JhbWl2KG1Qcm9ncmFtLCBHTF9MSU5LX1NUQVRVUywgJmxpbmtlZCk7Ci0gICAgQVNTRVJU
X0VRKDEsIGxpbmtlZCk7Ci0KLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotCi0gICAgc3Rh
dGljIGNvbnN0IGZsb2F0IGNvbG9yQltdID0gewotICAgICAgICAwLjBmLCAwLjUwZiwgMC4wZiwg
MC4wZiwgMC4wZiwgMC4wZiwgMC43NWYsIDAuMGYsCi0gICAgfTsKLQotICAgIGdsVW5pZm9ybTRm
KGNvbG9yQUxvY2F0aW9uLCAwLjI1ZiwgMC4wZiwgMC4wZiwgMC4wZik7Ci0gICAgZ2xVbmlmb3Jt
NGZ2KGNvbG9yQkxvY2F0aW9uLCAyLCBjb2xvckIpOwotICAgIGdsVW5pZm9ybTRmKGNvbG9yQ0xv
Y2F0aW9uLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFt
LCAiYV9wb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAg
RVhQRUNUX1BJWEVMX05FQVIoMCwgMCwgNjQsIDEyOCwgMTkyLCAyNTUsIDEuMCk7Ci19Ci0KLS8v
IFRlc3QgdGhhdCBjb25mbGljdHMgYXJlIGRldGVjdGVkIHdoZW4gdHdvIHVuaWZvcm1zIGFyZSBi
b3VuZCB0byB0aGUgc2FtZSBsb2NhdGlvbgotVEVTVF9QKEJpbmRVbmlmb3JtTG9jYXRpb25UZXN0
LCBDb25mbGljdHNEZXRlY3Rpb24pCi17Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9D
SFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24iKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291
dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfQ0hST01JVU1fYmluZF91bmlmb3JtX2xvY2F0
aW9uIGlzIG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05FKG51bGxwdHIsIG1CaW5kVW5p
Zm9ybUxvY2F0aW9uKTsKLQotICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICBjb25zdCBzdGQ6
OnN0cmluZyB2c1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIGF0dHJpYnV0
ZSB2ZWM0IGFfcG9zaXRpb247Ci0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsKLSAgICAgICAgfQotICAgICk7Ci0KLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyBmc1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAg
ICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICB1bmlmb3JtIHZlYzQgdV9jb2xv
ckE7Ci0gICAgICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yQjsKLSAgICAgICAgdm9pZCBtYWluKCkK
LSAgICAgICAgewotICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdV9jb2xvckEgKyB1X2NvbG9y
QjsKLSAgICAgICAgfQotICAgICk7Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICBHTGlu
dCBjb2xvckFMb2NhdGlvbiA9IDM7Ci0gICAgR0xpbnQgY29sb3JCTG9jYXRpb24gPSA0OwotCi0g
ICAgR0x1aW50IHZzID0gQ29tcGlsZVNoYWRlcihHTF9WRVJURVhfU0hBREVSLCB2c1NvdXJjZSk7
Ci0gICAgR0x1aW50IGZzID0gQ29tcGlsZVNoYWRlcihHTF9GUkFHTUVOVF9TSEFERVIsIGZzU291
cmNlKTsKLQotICAgIG1Qcm9ncmFtID0gZ2xDcmVhdGVQcm9ncmFtKCk7Ci0gICAgZ2xBdHRhY2hT
aGFkZXIobVByb2dyYW0sIHZzKTsKLSAgICBnbERlbGV0ZVNoYWRlcih2cyk7Ci0gICAgZ2xBdHRh
Y2hTaGFkZXIobVByb2dyYW0sIGZzKTsKLSAgICBnbERlbGV0ZVNoYWRlcihmcyk7Ci0KLSAgICBt
QmluZFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgY29sb3JBTG9jYXRpb24sICJ1X2NvbG9yQSIp
OwotICAgIC8vIEJpbmQgdV9jb2xvckIgdG8gbG9jYXRpb24gYSwgY2F1c2luZyBjb25mbGljdHMs
IGxpbmsgc2hvdWxkIGZhaWwuCi0gICAgbUJpbmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIGNv
bG9yQUxvY2F0aW9uLCAidV9jb2xvckIiKTsKLSAgICBnbExpbmtQcm9ncmFtKG1Qcm9ncmFtKTsK
LSAgICBHTGludCBsaW5rZWQgPSAwOwotICAgIGdsR2V0UHJvZ3JhbWl2KG1Qcm9ncmFtLCBHTF9M
SU5LX1NUQVRVUywgJmxpbmtlZCk7Ci0gICAgQVNTRVJUX0VRKDAsIGxpbmtlZCk7Ci0KLSAgICAv
LyBCaW5kIHVfY29sb3JCIHRvIGxvY2F0aW9uIGIsIG5vIGNvbmZsaWN0cywgbGluayBzaG91bGQg
c3VjY2VlZC4KLSAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgY29sb3JCTG9jYXRp
b24sICJ1X2NvbG9yQiIpOwotICAgIGdsTGlua1Byb2dyYW0obVByb2dyYW0pOwotICAgIGxpbmtl
ZCA9IDA7Ci0gICAgZ2xHZXRQcm9ncmFtaXYobVByb2dyYW0sIEdMX0xJTktfU1RBVFVTLCAmbGlu
a2VkKTsKLSAgICBFWFBFQ1RfRVEoMSwgbGlua2VkKTsKLX0KLQotLy8gVGVzdCBhIHVzZSBjYXNl
IG9mIHRoZSBjaHJvbWl1bSBjb21wb3NpdG9yCi1URVNUX1AoQmluZFVuaWZvcm1Mb2NhdGlvblRl
c3QsIENvbXBvc2l0b3IpCi17Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlV
TV9iaW5kX3VuaWZvcm1fbG9jYXRpb24iKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAi
VGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfQ0hST01JVU1fYmluZF91bmlmb3JtX2xvY2F0aW9uIGlz
IG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05FKG51bGxwdHIsIG1CaW5kVW5pZm9ybUxv
Y2F0aW9uKTsKLQotICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyB2c1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIGF0dHJpYnV0ZSB2ZWM0
IGFfcG9zaXRpb247Ci0gICAgICAgIGF0dHJpYnV0ZSB2ZWMyIGFfdGV4Q29vcmQ7Ci0gICAgICAg
IHVuaWZvcm0gbWF0NCBtYXRyaXg7Ci0gICAgICAgIHVuaWZvcm0gdmVjMiBjb2xvcl9hWzRdOwot
ICAgICAgICB1bmlmb3JtIHZlYzQgY29sb3JfYjsKLSAgICAgICAgdmFyeWluZyB2ZWM0IHZfY29s
b3I7Ci0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZfY29sb3Iu
eHkgPSBjb2xvcl9hWzBdICsgY29sb3JfYVsxXTsKLSAgICAgICAgICAgIHZfY29sb3IuencgPSBj
b2xvcl9hWzJdICsgY29sb3JfYVszXTsKLSAgICAgICAgICAgIHZfY29sb3IgKz0gY29sb3JfYjsK
LSAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gbWF0cml4ICogYV9wb3NpdGlvbjsKLSAgICAgICAg
fQotICAgICk7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmc1NvdXJjZSA9IFNIQURFUl9TT1VS
Q0UKLSAgICAoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICB2YXJ5
aW5nIHZlYzQgdl9jb2xvcjsKLSAgICAgICAgdW5pZm9ybSBmbG9hdCBhbHBoYTsKLSAgICAgICAg
dW5pZm9ybSB2ZWM0IG11bHRpcGxpZXI7Ci0gICAgICAgIHVuaWZvcm0gdmVjMyBjb2xvcl9jWzhd
OwotICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICB2ZWM0IGNvbG9y
X2Nfc3VtID0gdmVjNCgwLjApOwotICAgICAgICAgICAgY29sb3JfY19zdW0ueHl6ICs9IGNvbG9y
X2NbMF07Ci0gICAgICAgICAgICBjb2xvcl9jX3N1bS54eXogKz0gY29sb3JfY1sxXTsKLSAgICAg
ICAgICAgIGNvbG9yX2Nfc3VtLnh5eiArPSBjb2xvcl9jWzJdOwotICAgICAgICAgICAgY29sb3Jf
Y19zdW0ueHl6ICs9IGNvbG9yX2NbM107Ci0gICAgICAgICAgICBjb2xvcl9jX3N1bS54eXogKz0g
Y29sb3JfY1s0XTsKLSAgICAgICAgICAgIGNvbG9yX2Nfc3VtLnh5eiArPSBjb2xvcl9jWzVdOwot
ICAgICAgICAgICAgY29sb3JfY19zdW0ueHl6ICs9IGNvbG9yX2NbNl07Ci0gICAgICAgICAgICBj
b2xvcl9jX3N1bS54eXogKz0gY29sb3JfY1s3XTsKLSAgICAgICAgICAgIGNvbG9yX2Nfc3VtLncg
PSBhbHBoYTsKLSAgICAgICAgICAgIGNvbG9yX2Nfc3VtICo9IG11bHRpcGxpZXI7Ci0gICAgICAg
ICAgICBnbF9GcmFnQ29sb3IgPSB2X2NvbG9yICsgY29sb3JfY19zdW07Ci0gICAgICAgIH0KLSAg
ICApOwotICAgIC8vIGNsYW5nLWZvcm1hdCBvbgotCi0gICAgaW50IGNvdW50ZXIgICAgICAgICAg
ICA9IDY7Ci0gICAgaW50IG1hdHJpeExvY2F0aW9uICAgICA9IGNvdW50ZXIrKzsKLSAgICBpbnQg
Y29sb3JBTG9jYXRpb24gICAgID0gY291bnRlcisrOwotICAgIGludCBjb2xvckJMb2NhdGlvbiAg
ICAgPSBjb3VudGVyKys7Ci0gICAgaW50IGFscGhhTG9jYXRpb24gICAgICA9IGNvdW50ZXIrKzsK
LSAgICBpbnQgbXVsdGlwbGllckxvY2F0aW9uID0gY291bnRlcisrOwotICAgIGludCBjb2xvckNM
b2NhdGlvbiAgICAgPSBjb3VudGVyKys7Ci0KLSAgICBHTHVpbnQgdnMgPSBDb21waWxlU2hhZGVy
KEdMX1ZFUlRFWF9TSEFERVIsIHZzU291cmNlKTsKLSAgICBHTHVpbnQgZnMgPSBDb21waWxlU2hh
ZGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgZnNTb3VyY2UpOwotCi0gICAgbVByb2dyYW0gPSBnbENy
ZWF0ZVByb2dyYW0oKTsKLQotICAgIG1CaW5kVW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCBtYXRy
aXhMb2NhdGlvbiwgIm1hdHJpeCIpOwotICAgIG1CaW5kVW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFt
LCBjb2xvckFMb2NhdGlvbiwgImNvbG9yX2EiKTsKLSAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbiht
UHJvZ3JhbSwgY29sb3JCTG9jYXRpb24sICJjb2xvcl9iIik7Ci0gICAgbUJpbmRVbmlmb3JtTG9j
YXRpb24obVByb2dyYW0sIGFscGhhTG9jYXRpb24sICJhbHBoYSIpOwotICAgIG1CaW5kVW5pZm9y
bUxvY2F0aW9uKG1Qcm9ncmFtLCBtdWx0aXBsaWVyTG9jYXRpb24sICJtdWx0aXBsaWVyIik7Ci0g
ICAgbUJpbmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIGNvbG9yQ0xvY2F0aW9uLCAiY29sb3Jf
YyIpOwotCi0gICAgZ2xBdHRhY2hTaGFkZXIobVByb2dyYW0sIHZzKTsKLSAgICBnbERlbGV0ZVNo
YWRlcih2cyk7Ci0gICAgZ2xBdHRhY2hTaGFkZXIobVByb2dyYW0sIGZzKTsKLSAgICBnbERlbGV0
ZVNoYWRlcihmcyk7Ci0KLSAgICAvLyBMaW5rIHRoZSBtUHJvZ3JhbQotICAgIGdsTGlua1Byb2dy
YW0obVByb2dyYW0pOwotICAgIC8vIENoZWNrIHRoZSBsaW5rIHN0YXR1cwotICAgIEdMaW50IGxp
bmtlZCA9IDA7Ci0gICAgZ2xHZXRQcm9ncmFtaXYobVByb2dyYW0sIEdMX0xJTktfU1RBVFVTLCAm
bGlua2VkKTsKLSAgICBBU1NFUlRfRVEoMSwgbGlua2VkKTsKLQotICAgIGdsVXNlUHJvZ3JhbSht
UHJvZ3JhbSk7Ci0KLSAgICBzdGF0aWMgY29uc3QgZmxvYXQgY29sb3JBW10gPSB7Ci0gICAgICAg
IDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsIDAuMWYsCi0gICAgfTsK
LQotICAgIHN0YXRpYyBjb25zdCBmbG9hdCBjb2xvckNbXSA9IHsKLSAgICAgICAgMC4xZiwgMC4x
ZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwg
MC4xZiwKLSAgICAgICAgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwg
MC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwKLSAgICB9OwotCi0gICAgc3RhdGljIGNvbnN0
IGZsb2F0IGlkZW50aXR5W10gPSB7Ci0gICAgICAgIDEsIDAsIDAsIDAsIDAsIDEsIDAsIDAsIDAs
IDAsIDEsIDAsIDAsIDAsIDAsIDEsCi0gICAgfTsKLQotICAgIGdsVW5pZm9ybU1hdHJpeDRmdiht
YXRyaXhMb2NhdGlvbiwgMSwgZmFsc2UsIGlkZW50aXR5KTsKLSAgICBnbFVuaWZvcm0yZnYoY29s
b3JBTG9jYXRpb24sIDQsIGNvbG9yQSk7Ci0gICAgZ2xVbmlmb3JtNGYoY29sb3JCTG9jYXRpb24s
IDAuMmYsIDAuMmYsIDAuMmYsIDAuMmYpOwotICAgIGdsVW5pZm9ybTFmKGFscGhhTG9jYXRpb24s
IDAuOGYpOwotICAgIGdsVW5pZm9ybTRmKG11bHRpcGxpZXJMb2NhdGlvbiwgMC41ZiwgMC41Ziwg
MC41ZiwgMC41Zik7Ci0gICAgZ2xVbmlmb3JtM2Z2KGNvbG9yQ0xvY2F0aW9uLCA4LCBjb2xvckMp
OwotCi0gICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgNik7Ci0KLSAgICBkcmF3UXVh
ZChtUHJvZ3JhbSwgImFfcG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEVYUEVDVF9QSVhFTF9FUSgw
LCAwLCAyMDQsIDIwNCwgMjA0LCAyMDQpOwotfQotCi0vLyBUZXN0IHRoYXQgdW51c2VkIHVuaWZv
cm1zIGRvbid0IGNvbmZsaWN0IHdoZW4gYm91bmQgdG8gdGhlIHNhbWUgbG9jYXRpb24KLVRFU1Rf
UChCaW5kVW5pZm9ybUxvY2F0aW9uVGVzdCwgVW51c2VkVW5pZm9ybVVwZGF0ZSkKLXsKLSAgICBp
ZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbiIp
KQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9D
SFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24gaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAg
ICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBB
U1NFUlRfTkUobnVsbHB0ciwgbUJpbmRVbmlmb3JtTG9jYXRpb24pOwotCi0gICAgLy8gY2xhbmct
Zm9ybWF0IG9mZgotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291cmNlID0gU0hBREVSX1NPVVJD
RQotICAgICgKLSAgICAgICAgYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKLSAgICAgICAgdm9p
ZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9u
OwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzU291cmNlID0g
U0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Ci0g
ICAgICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yQTsKLSAgICAgICAgdW5pZm9ybSBmbG9hdCB1X2Nv
bG9yVTsKLSAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3JDOwotICAgICAgICB2b2lkIG1haW4o
KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB1X2NvbG9yQSArIHVfY29s
b3JDOwotICAgICAgICB9Ci0gICAgKTsKLSAgICAvLyBjbGFuZy1mb3JtYXQgb24KLQotICAgIGNv
bnN0IEdMaW50IGNvbG9yVUxvY2F0aW9uICAgICAgPSAxOwotICAgIGNvbnN0IEdMaW50IG5vbmV4
aXN0aW5nTG9jYXRpb24gPSA1OwotICAgIGNvbnN0IEdMaW50IHVuYm91bmRMb2NhdGlvbiAgICAg
PSA2OwotCi0gICAgR0x1aW50IHZzID0gQ29tcGlsZVNoYWRlcihHTF9WRVJURVhfU0hBREVSLCB2
c1NvdXJjZSk7Ci0gICAgR0x1aW50IGZzID0gQ29tcGlsZVNoYWRlcihHTF9GUkFHTUVOVF9TSEFE
RVIsIGZzU291cmNlKTsKLQotICAgIG1Qcm9ncmFtID0gZ2xDcmVhdGVQcm9ncmFtKCk7Ci0gICAg
bUJpbmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIGNvbG9yVUxvY2F0aW9uLCAidV9jb2xvclUi
KTsKLSAgICAvLyBUaGUgbm9uLWV4aXN0aW5nIHVuaWZvcm0gc2hvdWxkIGJlaGF2ZSBsaWtlIGV4
aXN0aW5nLCBidXQgb3B0aW1pemVkIGF3YXkKLSAgICAvLyB1bmlmb3JtLgotICAgIG1CaW5kVW5p
Zm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCBub25leGlzdGluZ0xvY2F0aW9uLCAibm9uZXhpc3Rpbmci
KTsKLSAgICAvLyBMZXQgQSBhbmQgQyBiZSBhc3NpZ25lZCBhdXRvbWF0aWMgbG9jYXRpb25zLgot
ICAgIGdsQXR0YWNoU2hhZGVyKG1Qcm9ncmFtLCB2cyk7Ci0gICAgZ2xEZWxldGVTaGFkZXIodnMp
OwotICAgIGdsQXR0YWNoU2hhZGVyKG1Qcm9ncmFtLCBmcyk7Ci0gICAgZ2xEZWxldGVTaGFkZXIo
ZnMpOwotICAgIGdsTGlua1Byb2dyYW0obVByb2dyYW0pOwotICAgIEdMaW50IGxpbmtlZCA9IDA7
Ci0gICAgZ2xHZXRQcm9ncmFtaXYobVByb2dyYW0sIEdMX0xJTktfU1RBVFVTLCAmbGlua2VkKTsK
LSAgICBBU1NFUlRfRVEoMSwgbGlua2VkKTsKLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwot
Ci0gICAgLy8gTm8gZXJyb3JzIG9uIGJvdW5kIGxvY2F0aW9ucywgc2luY2UgY2FsbGVyIGRvZXMg
bm90IGtub3cKLSAgICAvLyBpZiB0aGUgZHJpdmVyIG9wdGltaXplcyB0aGVtIGF3YXkgb3Igbm90
LgotICAgIGdsVW5pZm9ybTFmKGNvbG9yVUxvY2F0aW9uLCAwLjI1Zik7Ci0gICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICAvLyBObyBlcnJvcnMgb24gYm91bmQgbG9jYXRpb25zIG9mIG5h
bWVzIHRoYXQgZG8gbm90IGV4aXN0Ci0gICAgLy8gaW4gdGhlIHNoYWRlci4gT3RoZXJ3aXNlIGl0
IHdvdWxkIGJlIGluY29uc2lzdGVudCB3cnQgdGhlCi0gICAgLy8gb3B0aW1pemF0aW9uIGNhc2Uu
Ci0gICAgZ2xVbmlmb3JtMWYobm9uZXhpc3RpbmdMb2NhdGlvbiwgMC4yNWYpOwotICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gVGhlIGFib3ZlIGFyZSBlcXVhbCB0byB1cGRhdGlu
ZyAtMS4KLSAgICBnbFVuaWZvcm0xZigtMSwgMC4yNWYpOwotICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOwotCi0gICAgLy8gTm8gZXJyb3JzIHdoZW4gdXBkYXRpbmcgd2l0aCBvdGhlciB0eXBlIGVp
dGhlci4KLSAgICAvLyBUaGUgdHlwZSBjYW4gbm90IGJlIGtub3duIHdpdGggdGhlIG5vbi1leGlz
dGluZyBjYXNlLgotICAgIGdsVW5pZm9ybTJmKGNvbG9yVUxvY2F0aW9uLCAwLjI1ZiwgMC4yNWYp
OwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIGdsVW5pZm9ybTJmKG5vbmV4aXN0aW5n
TG9jYXRpb24sIDAuMjVmLCAwLjI1Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAg
Z2xVbmlmb3JtMmYoLTEsIDAuMjVmLCAwLjI1Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci0KLSAgICAvLyBFbnN1cmUgdGhhdCBkcml2ZXIgb3IgQU5HTEUgaGFzIG9wdGltaXplZCB0aGUg
dmFyaWFibGUKLSAgICAvLyBhd2F5IGFuZCB0aGUgdGVzdCB0ZXN0cyB3aGF0IGl0IGlzIHN1cHBv
c2VkIHRvLgotICAgIEVYUEVDVF9FUSgtMSwgZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0s
ICJ1X2NvbG9yVSIpKTsKLQotICAgIC8vIFRoZSBib3VuZCBsb2NhdGlvbiBnZXRzIG1hcmtlZCBh
cyB1c2VkIGFuZCB0aGUgZHJpdmVyCi0gICAgLy8gZG9lcyBub3QgYWxsb2NhdGUgb3RoZXIgdmFy
aWFibGVzIHRvIHRoYXQgbG9jYXRpb24uCi0gICAgRVhQRUNUX05FKGNvbG9yVUxvY2F0aW9uLCBn
bEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInVfY29sb3JBIikpOwotICAgIEVYUEVDVF9O
RShjb2xvclVMb2NhdGlvbiwgZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1X2NvbG9y
QyIpKTsKLSAgICBFWFBFQ1RfTkUobm9uZXhpc3RpbmdMb2NhdGlvbiwgZ2xHZXRVbmlmb3JtTG9j
YXRpb24obVByb2dyYW0sICJ1X2NvbG9yQSIpKTsKLSAgICBFWFBFQ1RfTkUobm9uZXhpc3RpbmdM
b2NhdGlvbiwgZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1X2NvbG9yQyIpKTsKLQot
ICAgIC8vIFVuaW50dWl0aXZlOiB3aGlsZSBzcGVjaWZ5aW5nIHZhbHVlIHdvcmtzLCBnZXR0aW5n
IHRoZSB2YWx1ZSBkb2VzIG5vdC4KLSAgICBHTGZsb2F0IGdldFJlc3VsdCA9IDAuMGY7Ci0gICAg
Z2xHZXRVbmlmb3JtZnYobVByb2dyYW0sIGNvbG9yVUxvY2F0aW9uLCAmZ2V0UmVzdWx0KTsKLSAg
ICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgIGdsR2V0VW5pZm9y
bWZ2KG1Qcm9ncmFtLCBub25leGlzdGluZ0xvY2F0aW9uLCAmZ2V0UmVzdWx0KTsKLSAgICBFWFBF
Q1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgIGdsR2V0VW5pZm9ybWZ2KG1Q
cm9ncmFtLCAtMSwgJmdldFJlc3VsdCk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLQotICAgIC8vIFVwZGF0aW5nIGFuIHVuYm91bmQsIG5vbi1leGlzdGluZyBs
b2NhdGlvbiBzdGlsbCBjYXVzZXMKLSAgICAvLyBhbiBlcnJvci4KLSAgICBnbFVuaWZvcm0xZih1
bmJvdW5kTG9jYXRpb24sIDAuMjVmKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pOwotfQotCi0vLyBUZXN0IGZvciBhIGJ1ZyB3aGVyZSB1c2luZyBhIHNhbXBsZXIg
Y2F1c2VkIEdMIGVycm9yIGlmIHRoZSBtUHJvZ3JhbSBoYWQKLS8vIHVuaWZvcm1zIHRoYXQgd2Vy
ZSBvcHRpbWl6ZWQgYXdheSBieSB0aGUgZHJpdmVyLiBUaGlzIHdhcyBvbmx5IGEgcHJvYmxlbSB3
aXRoCi0vLyBnbEJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTSBpbXBsZW1lbnRhdGlvbi4gVGhp
cyBjb3VsZCBiZSByZXByb2VkIGJ5Ci0vLyBiaW5kaW5nIHRoZSBzYW1wbGVyIHRvIGEgbG9jYXRp
b24gaGlnaGVyIHRoYW4gdGhlIGFtb3VudCBvZiBhY3RpdmUgdW5pZm9ybXMuCi1URVNUX1AoQmlu
ZFVuaWZvcm1Mb2NhdGlvblRlc3QsIFVzZVNhbXBsZXJXaGVuVW51c2VkVW5pZm9ybXMpCi17Ci0g
ICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRp
b24iKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2Ug
R0xfQ0hST01JVU1fYmluZF91bmlmb3JtX2xvY2F0aW9uIGlzIG5vdCBhdmFpbGFibGUuIgotICAg
ICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQVNTRVJUX05FKG51bGxwdHIsIG1CaW5kVW5pZm9ybUxvY2F0aW9uKTsKLQotICAgIC8vIGNs
YW5nLWZvcm1hdCBvZmYKLSAgICBjb25zdCBzdGQ6OnN0cmluZyB2c1NvdXJjZSA9IFNIQURFUl9T
T1VSQ0UKLSAgICAoCi0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGdsX1Bvc2l0aW9uID0gdmVjNCgwKTsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICBjb25zdCBz
dGQ6OnN0cmluZyBmc1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIHVuaWZv
cm0gc2FtcGxlcjJEIHRleDsKLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdmVjMigxKSk7Ci0gICAgICAgIH0K
LSAgICApOwotICAgIC8vIGNsYW5nLWZvcm1hdCBvbgotCi0gICAgY29uc3QgR0x1aW50IHRleExv
Y2F0aW9uID0gNTQ7Ci0KLSAgICBHTHVpbnQgdnMgPSBDb21waWxlU2hhZGVyKEdMX1ZFUlRFWF9T
SEFERVIsIHZzU291cmNlKTsKLSAgICBHTHVpbnQgZnMgPSBDb21waWxlU2hhZGVyKEdMX0ZSQUdN
RU5UX1NIQURFUiwgZnNTb3VyY2UpOwotCi0gICAgbVByb2dyYW0gPSBnbENyZWF0ZVByb2dyYW0o
KTsKLSAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgdGV4TG9jYXRpb24sICJ0ZXgi
KTsKLQotICAgIGdsQXR0YWNoU2hhZGVyKG1Qcm9ncmFtLCB2cyk7Ci0gICAgZ2xEZWxldGVTaGFk
ZXIodnMpOwotICAgIGdsQXR0YWNoU2hhZGVyKG1Qcm9ncmFtLCBmcyk7Ci0gICAgZ2xEZWxldGVT
aGFkZXIoZnMpOwotCi0gICAgZ2xMaW5rUHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICBHTGludCBs
aW5rZWQgPSAwOwotICAgIGdsR2V0UHJvZ3JhbWl2KG1Qcm9ncmFtLCBHTF9MSU5LX1NUQVRVUywg
JmxpbmtlZCk7Ci0gICAgRVhQRUNUX05FKDAsIGxpbmtlZCk7Ci0gICAgZ2xVc2VQcm9ncmFtKG1Q
cm9ncmFtKTsKLSAgICBnbFVuaWZvcm0xaSh0ZXhMb2NhdGlvbiwgMCk7Ci0gICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0
aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVz
ZQotLy8gdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVT
VChCaW5kVW5pZm9ybUxvY2F0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0Qz
RDkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJf
T1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpKTsKLQotfSAg
Ly8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZ2xfdGVzdHMvQmxlbmRNaW5NYXhUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbF90ZXN0cy9CbGVuZE1pbk1heFRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAzOWY1MjUxZTU2NWI4ZGFiMzEwNTc0NGIyMTQ0MWE0ZTZhNmU3NDc3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9CbGVuZE1pbk1heFRlc3QuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMjU1ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJ0ZXN0X3V0
aWxzL0FOR0xFVGVzdC5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLWNsYXNzIEJsZW5k
TWluTWF4VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIEJsZW5k
TWluTWF4VGVzdCgpCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwotICAgICAg
ICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAg
ICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4
KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdEZXB0
aEJpdHMoMjQpOwotCi0gICAgICAgIG1Qcm9ncmFtID0gMDsKLSAgICAgICAgbUNvbG9yTG9jYXRp
b24gPSAtMTsKLSAgICAgICAgbUZyYW1lYnVmZmVyID0gMDsKLSAgICAgICAgbUNvbG9yUmVuZGVy
YnVmZmVyID0gMDsKLSAgICB9Ci0KLSAgICBzdHJ1Y3QgQ29sb3IKLSAgICB7Ci0gICAgICAgIGZs
b2F0IHZhbHVlc1s0XTsKLSAgICB9OwotCi0gICAgc3RhdGljIGZsb2F0IGdldEV4cGVjdGVkKGJv
b2wgYmxlbmRNaW4sIGZsb2F0IGN1ckNvbG9yLCBmbG9hdCBwcmV2Q29sb3IpCi0gICAgewotICAg
ICAgICByZXR1cm4gYmxlbmRNaW4gPyBzdGQ6Om1pbihjdXJDb2xvciwgcHJldkNvbG9yKSA6IHN0
ZDo6bWF4KGN1ckNvbG9yLCBwcmV2Q29sb3IpOwotICAgIH0KLQotICAgIHZvaWQgcnVuVGVzdChH
TGVudW0gY29sb3JGb3JtYXQsIEdMZW51bSB0eXBlKQotICAgIHsKLSAgICAgICAgaWYgKGdldENs
aWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2JsZW5k
X21pbm1heCIpKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBiZWNhdXNlIEVTMyBvciBHTF9FWFRfYmxlbmRfbWlubWF4IGlzIG5vdCBhdmFpbGFibGUu
IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBUT0RPKGdlb2ZmbGFuZyk6IGZpZ3VyZSBvdXQgd2h5IHRoaXMgZmFpbHMKLSAgICAgICAg
aWYgKElzSW50ZWwoKSAmJiBHZXRQYXJhbSgpID09IEVTMl9PUEVOR0woKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gT3BlbkdMIEludGVsIGR1
ZSB0byBmbGFreW5lc3MuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICBTZXRVcEZyYW1lYnVmZmVyKGNvbG9yRm9ybWF0KTsKLQotICAgICAg
ICBpbnQgbWluVmFsdWUgPSAwOwotICAgICAgICBpbnQgbWF4VmFsdWUgPSAxOwotICAgICAgICBp
ZiAodHlwZSA9PSBHTF9GTE9BVCkKLSAgICAgICAgewotICAgICAgICAgICAgbWluVmFsdWUgPSAt
MTAyNDsKLSAgICAgICAgICAgIG1heFZhbHVlID0gMTAyNDsKLSAgICAgICAgfQotCi0gICAgICAg
IGNvbnN0IHNpemVfdCBjb2xvckNvdW50ID0gMTI4OwotICAgICAgICBDb2xvciBjb2xvcnNbY29s
b3JDb3VudF07Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29sb3JDb3VudDsgaSsr
KQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IDQ7IGorKykK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb2xvcnNbaV0udmFsdWVzW2pdID0KLSAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1pblZhbHVlICsgKHJhbmQoKSAl
IChtYXhWYWx1ZSAtIG1pblZhbHVlKSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgZmxvYXQgcHJldkNvbG9yWzRdOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNvbG9yQ291bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgQ29sb3IgJmNv
bG9yID0gY29sb3JzW2ldOwotICAgICAgICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAg
ICAgICAgICAgIGdsVW5pZm9ybTRmKG1Db2xvckxvY2F0aW9uLCBjb2xvci52YWx1ZXNbMF0sIGNv
bG9yLnZhbHVlc1sxXSwgY29sb3IudmFsdWVzWzJdLCBjb2xvci52YWx1ZXNbM10pOwotCi0gICAg
ICAgICAgICBib29sIGJsZW5kTWluID0gKHJhbmQoKSAlIDIgPT0gMCk7Ci0gICAgICAgICAgICBn
bEJsZW5kRXF1YXRpb24oYmxlbmRNaW4gPyBHTF9NSU4gOiBHTF9NQVgpOwotCi0gICAgICAgICAg
ICBkcmF3UXVhZChtUHJvZ3JhbSwgImFQb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgICAgICAgICBm
bG9hdCBwaXhlbFs0XTsKLSAgICAgICAgICAgIGlmICh0eXBlID09IEdMX1VOU0lHTkVEX0JZVEUp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgR0x1Ynl0ZSB1Ynl0ZVBpeGVsWzRdOwot
ICAgICAgICAgICAgICAgIGdsUmVhZFBpeGVscygwLCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLCB1Ynl0ZVBpeGVsKTsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBjb21w
b25lbnRJZHggPSAwOyBjb21wb25lbnRJZHggPCBBcnJheVNpemUocGl4ZWwpOyBjb21wb25lbnRJ
ZHgrKykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHBpeGVsW2NvbXBv
bmVudElkeF0gPSB1Ynl0ZVBpeGVsW2NvbXBvbmVudElkeF0gLyAyNTUuMGY7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBHTF9G
TE9BVCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbFJlYWRQaXhlbHMoMCwgMCwg
MSwgMSwgR0xfUkdCQSwgR0xfRkxPQVQsIHBpeGVsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBGQUlMKCkgPDwgIlVuZXhw
ZWN0ZWQgcGl4ZWwgdHlwZSI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChpID4g
MCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBlcnJvclJhbmdl
ID0gMS4wZiAvIDI1NS4wZjsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBjb21wb25lbnRJ
ZHggPSAwOyBjb21wb25lbnRJZHggPCBBcnJheVNpemUocGl4ZWwpOyBjb21wb25lbnRJZHgrKykK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIEVYUEVDVF9ORUFSKAotICAg
ICAgICAgICAgICAgICAgICAgICAgZ2V0RXhwZWN0ZWQoYmxlbmRNaW4sIGNvbG9yLnZhbHVlc1tj
b21wb25lbnRJZHhdLCBwcmV2Q29sb3JbY29tcG9uZW50SWR4XSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICBwaXhlbFtjb21wb25lbnRJZHhdLCBlcnJvclJhbmdlKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG1lbWNweShwcmV2Q29sb3IsIHBpeGVs
LCBzaXplb2YocGl4ZWwpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgdGVzdFZlcnRleFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAg
ICAgICAgKAotICAgICAgICAgICAgYXR0cmlidXRlIGhpZ2hwIHZlYzQgYVBvc2l0aW9uOwotCi0g
ICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBnbF9Qb3NpdGlvbiA9IGFQb3NpdGlvbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQot
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFE
RVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIHVuaWZvcm0gaGlnaHAgdmVjNCBjb2xv
cjsKLSAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgfQotICAgICAgICApOwot
Ci0gICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odGVzdFZlcnRleFNoYWRlclNvdXJj
ZSwgdGVzdEZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICAgICAgaWYgKG1Qcm9ncmFtID09IDAp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZh
aWxlZC4iOwotICAgICAgICB9Ci0KLSAgICAgICAgbUNvbG9yTG9jYXRpb24gPSBnbEdldFVuaWZv
cm1Mb2NhdGlvbihtUHJvZ3JhbSwgImNvbG9yIik7Ci0KLSAgICAgICAgZ2xVc2VQcm9ncmFtKG1Q
cm9ncmFtKTsKLQotICAgICAgICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7Ci0gICAgICAgIGds
Q2xlYXJEZXB0aGYoMC4wKTsKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwg
R0xfREVQVEhfQlVGRkVSX0JJVCk7Ci0KLSAgICAgICAgZ2xFbmFibGUoR0xfQkxFTkQpOwotICAg
ICAgICBnbERpc2FibGUoR0xfREVQVEhfVEVTVCk7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcEZy
YW1lYnVmZmVyKEdMZW51bSBjb2xvckZvcm1hdCkKLSAgICB7Ci0gICAgICAgIGdsR2VuRnJhbWVi
dWZmZXJzKDEsICZtRnJhbWVidWZmZXIpOwotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9E
UkFXX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOwotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZl
cihHTF9SRUFEX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOwotCi0gICAgICAgIGdsR2VuUmVu
ZGVyYnVmZmVycygxLCAmbUNvbG9yUmVuZGVyYnVmZmVyKTsKLSAgICAgICAgZ2xCaW5kUmVuZGVy
YnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbUNvbG9yUmVuZGVyYnVmZmVyKTsKLSAgICAgICAgZ2xS
ZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgY29sb3JGb3JtYXQsIGdldFdpbmRv
d1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKLSAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfUkVO
REVSQlVGRkVSLCBtQ29sb3JSZW5kZXJidWZmZXIpOwotCi0gICAgICAgIGdsQ2xlYXJDb2xvcigw
LjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJf
QklUKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9n
cmFtKTsKLSAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1GcmFtZWJ1ZmZlcik7Ci0g
ICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbUNvbG9yUmVuZGVyYnVmZmVyKTsKLQot
ICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgR0x1aW50IG1Qcm9n
cmFtOwotICAgIEdMaW50IG1Db2xvckxvY2F0aW9uOwotCi0gICAgR0x1aW50IG1GcmFtZWJ1ZmZl
cjsKLSAgICBHTHVpbnQgbUNvbG9yUmVuZGVyYnVmZmVyOwotfTsKLQotVEVTVF9QKEJsZW5kTWlu
TWF4VGVzdCwgUkdCQTgpCi17Ci0gICAgcnVuVGVzdChHTF9SR0JBOCwgR0xfVU5TSUdORURfQllU
RSk7Ci19Ci0KLVRFU1RfUChCbGVuZE1pbk1heFRlc3QsIFJHQkEzMkYpCi17Ci0gICAgaWYgKGdl
dENsaWVudE1ham9yVmVyc2lvbigpIDwgMyB8fCAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2Nv
bG9yX2J1ZmZlcl9mbG9hdCIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgYmVjYXVzZSBFUzMgYW5kIEdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQgYXJlIG5vdCBh
dmFpbGFibGUuIgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgLy8gVE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCB3aHkgdGhpcyBp
cyBicm9rZW4gb24gSW50ZWwKLSAgICBpZiAoSXNJbnRlbCgpICYmIChHZXRQYXJhbSgpID09IEVT
Ml9EM0QxMSgpIHx8IEdldFBhcmFtKCkgPT0gRVMyX0QzRDkoKSkpCi0gICAgewotICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBUT0RPIChidWcgMTI4NCk6IEludmVz
dGlnYXRlIFJHQkEzMmYgRDNEIFNESyBMYXllcnMgbWVzc2FnZXMgb24gRDNEMTFfRkw5XzMKLSAg
ICBpZiAoSXNEM0QxMV9GTDkzKCkpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qg
c2tpcHBlZCBvbiBGZWF0dXJlIExldmVsIDlfMy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIHJ1blRlc3QoR0xfUkdCQTMyRiwgR0xfRkxPQVQpOwotfQotCi1U
RVNUX1AoQmxlbmRNaW5NYXhUZXN0LCBSR0JBMTZGKQotewotICAgIGlmIChnZXRDbGllbnRNYWpv
clZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9jb2xvcl9idWZmZXJf
aGFsZl9mbG9hdCIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQg
YmVjYXVzZSBFUzMgb3IgR0xfRVhUX2NvbG9yX2J1ZmZlcl9oYWxmX2Zsb2F0IGlzIG5vdCBhdmFp
bGFibGUuIgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgLy8gVE9ETyhqbWFkaWxsKTogZmlndXJlIG91dCB3aHkgdGhpcyBmYWls
cwotICAgIGlmIChJc0ludGVsKCkgJiYgKEdldFBhcmFtKCkgPT0gRVMyX0QzRDExKCkgfHwgR2V0
UGFyYW0oKSA9PSBFUzJfRDNEOSgpKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVz
dCBza2lwcGVkIG9uIEludGVsIGR1ZSB0byBmYWlsdXJlcy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJ1blRlc3QoR0xfUkdCQTE2RiwgR0xfRkxPQVQpOwot
fQotCi0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hp
Y2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxk
IGJlIHJ1biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChCbGVuZE1pbk1heFRlc3Qs
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAg
ICAgIEVTMl9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgp
LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0JsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdC5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQmxpdEZyYW1lYnVmZmVy
QU5HTEVUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQwYTQxMWRiNmQ0
ZGE1Y2FmYWYxNjA3OGRmZGVmYzBlYmU1ZTU3Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xf
dGVzdHMvQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEw
NzAgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0Lmgi
Ci0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFu
Z2xlOwotCi1jbGFzcyBCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0
Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QoKQotICAgIHsK
LSAgICAgICAgc2V0V2luZG93V2lkdGgoMjU2KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDI1
Nik7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVu
Qml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZp
Z0FscGhhQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsKLSAgICAgICAg
c2V0Q29uZmlnU3RlbmNpbEJpdHMoOCk7Ci0KLSAgICAgICAgbUNoZWNrZXJQcm9ncmFtID0gMDsK
LSAgICAgICAgbUJsdWVQcm9ncmFtID0gMDsKLQotICAgICAgICBtT3JpZ2luYWxGQk8gPSAwOwot
Ci0gICAgICAgIG1Vc2VyRkJPID0gMDsKLSAgICAgICAgbVVzZXJDb2xvckJ1ZmZlciA9IDA7Ci0g
ICAgICAgIG1Vc2VyRGVwdGhTdGVuY2lsQnVmZmVyID0gMDsKLQotICAgICAgICBtU21hbGxGQk8g
PSAwOwotICAgICAgICBtU21hbGxDb2xvckJ1ZmZlciA9IDA7Ci0gICAgICAgIG1TbWFsbERlcHRo
U3RlbmNpbEJ1ZmZlciA9IDA7Ci0KLSAgICAgICAgbUNvbG9yT25seUZCTyA9IDA7Ci0gICAgICAg
IG1Db2xvck9ubHlDb2xvckJ1ZmZlciA9IDA7Ci0KLSAgICAgICAgbURpZmZGb3JtYXRGQk8gPSAw
OwotICAgICAgICBtRGlmZkZvcm1hdENvbG9yQnVmZmVyID0gMDsKLQotICAgICAgICBtRGlmZlNp
emVGQk8gPSAwOwotICAgICAgICBtRGlmZlNpemVDb2xvckJ1ZmZlciA9IDA7Ci0KLSAgICAgICAg
bU1SVEZCTyA9IDA7Ci0gICAgICAgIG1NUlRDb2xvckJ1ZmZlcjAgPSAwOwotICAgICAgICBtTVJU
Q29sb3JCdWZmZXIxID0gMDsKLQotICAgICAgICBtUkdCQUNvbG9yYnVmZmVyID0gMDsKLSAgICAg
ICAgbVJHQkFGQk8gPSAwOwotCi0gICAgICAgIG1CR1JBTXVsdGlzYW1wbGVkUmVuZGVyYnVmZmVy
ID0gMDsKLSAgICAgICAgbUJHUkFNdWx0aXNhbXBsZWRGQk8gPSAwOwotICAgIH0KLQotICAgIHZp
cnR1YWwgdm9pZCBTZXRVcCgpCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0K
LSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgcGFzc3Rocm91Z2hWUyA9IFNIQURFUl9TT1VSQ0UK
LSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwotICAgICAgICAg
ICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247Ci0gICAgICAgICAgICB2YXJ5aW5nIHZlYzQgcG9z
OwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAgICAgICAgICAgcG9zID0gcG9zaXRp
b247Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgY2hlY2tlcmVkRlMgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIHBy
ZWNpc2lvbiBoaWdocCBmbG9hdDsKLSAgICAgICAgICAgIHZhcnlpbmcgdmVjNCBwb3M7Ci0KLSAg
ICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYg
KHBvcy54ICogcG9zLnkgPiAwLjApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgYmx1ZUZTID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAg
ICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0gICAgICAgICAgICB2YXJ5aW5nIHZlYzQgcG9z
OwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDEuMCwgMS4wKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgKTsKLQotICAgICAgICBtQ2hlY2tlclByb2dyYW0gPSBDb21waWxlUHJvZ3Jh
bShwYXNzdGhyb3VnaFZTLCBjaGVja2VyZWRGUyk7Ci0gICAgICAgIG1CbHVlUHJvZ3JhbSA9IENv
bXBpbGVQcm9ncmFtKHBhc3N0aHJvdWdoVlMsIGJsdWVGUyk7Ci0gICAgICAgIGlmIChtQ2hlY2tl
clByb2dyYW0gPT0gMCB8fCBtQmx1ZVByb2dyYW0gPT0gMCkKLSAgICAgICAgewotICAgICAgICAg
ICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7Ci0gICAgICAgIH0KLQot
ICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBHTGludCBvcmlnaW5hbEZC
TzsKLSAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9GUkFNRUJVRkZFUl9CSU5ESU5HLCAmb3JpZ2lu
YWxGQk8pOwotICAgICAgICBpZiAob3JpZ2luYWxGQk8gPj0gMCkKLSAgICAgICAgewotICAgICAg
ICAgICAgbU9yaWdpbmFsRkJPID0gKEdMdWludClvcmlnaW5hbEZCTzsKLSAgICAgICAgfQotCi0g
ICAgICAgIEdMZW51bSBmb3JtYXQgPSBHTF9CR1JBOF9FWFQ7Ci0gICAgICAgIAotICAgICAgICBn
bEdlbkZyYW1lYnVmZmVycygxLCAmbVVzZXJGQk8pOwotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgbVVzZXJGQk8pOwotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZt
VXNlckNvbG9yQnVmZmVyKTsKLSAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtVXNlckRl
cHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
bVVzZXJDb2xvckJ1ZmZlcik7Ci0gICAgICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVf
MkQsIDEsIGZvcm1hdCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAg
ICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRB
Q0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVVzZXJDb2xvckJ1ZmZlciwgMCk7Ci0gICAgICAgIGds
QmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1Vc2VyRGVwdGhTdGVuY2lsQnVmZmVy
KTsKLSAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfREVQ
VEgyNF9TVEVOQ0lMOF9PRVMsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsK
LSAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfREVQ
VEhfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBtVXNlckRlcHRoU3RlbmNpbEJ1ZmZlcik7
Ci0gICAgICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX1NU
RU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBtVXNlckRlcHRoU3RlbmNpbEJ1ZmZl
cik7Ci0KLSAgICAgICAgQVNTRVJUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwg
Z2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7Ci0gICAgICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtU21hbGxG
Qk8pOwotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVNtYWxsRkJP
KTsKLSAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVNtYWxsQ29sb3JCdWZmZXIpOwotICAgICAg
ICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1TbWFsbERlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAg
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVNtYWxsQ29sb3JCdWZmZXIpOwotICAg
ICAgICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJELCAxLCBmb3JtYXQsIGdldFdpbmRv
d1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIpOwotICAgICAgICBnbEZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVY
VFVSRV8yRCwgbVNtYWxsQ29sb3JCdWZmZXIsIDApOwotICAgICAgICBnbEJpbmRSZW5kZXJidWZm
ZXIoR0xfUkVOREVSQlVGRkVSLCBtU21hbGxEZXB0aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICBn
bFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9ERVBUSDI0X1NURU5DSUw4
X09FUywgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMik7Ci0gICAg
ICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX0FU
VEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbVNtYWxsRGVwdGhTdGVuY2lsQnVmZmVyKTsKLSAg
ICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJ
TF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1TbWFsbERlcHRoU3RlbmNpbEJ1ZmZlcik7
Ci0KLSAgICAgICAgQVNTRVJUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xD
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7Ci0gICAgICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOwotCi0gICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtQ29sb3JPbmx5
RkJPKTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1Db2xvck9u
bHlGQk8pOwotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtQ29sb3JPbmx5Q29sb3JCdWZmZXIp
OwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1Db2xvck9ubHlDb2xvckJ1
ZmZlcik7Ci0gICAgICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIGZvcm1h
dCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgICAgICBnbEZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xf
VEVYVFVSRV8yRCwgbUNvbG9yT25seUNvbG9yQnVmZmVyLCAwKTsKLQotICAgICAgICBBU1NFUlRf
R0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0
dXMoR0xfRlJBTUVCVUZGRVIpKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1EaWZmRm9ybWF0RkJPKTsKLSAgICAgICAgZ2xC
aW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1EaWZmRm9ybWF0RkJPKTsKLSAgICAgICAg
Z2xHZW5UZXh0dXJlcygxLCAmbURpZmZGb3JtYXRDb2xvckJ1ZmZlcik7Ci0gICAgICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbURpZmZGb3JtYXRDb2xvckJ1ZmZlcik7Ci0gICAgICAg
IGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQjU2NSwgZ2V0V2luZG93
V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwg
bURpZmZGb3JtYXRDb2xvckJ1ZmZlciwgMCk7Ci0KLSAgICAgICAgQVNTRVJUX0dMRU5VTV9FUShH
TF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1F
QlVGRkVSKSk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIGdsR2Vu
RnJhbWVidWZmZXJzKDEsICZtRGlmZlNpemVGQk8pOwotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgbURpZmZTaXplRkJPKTsKLSAgICAgICAgZ2xHZW5UZXh0dXJlcygx
LCAmbURpZmZTaXplQ29sb3JCdWZmZXIpOwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1EaWZmU2l6ZUNvbG9yQnVmZmVyKTsKLSAgICAgICAgZ2xUZXhTdG9yYWdlMkRFWFQo
R0xfVEVYVFVSRV8yRCwgMSwgZm9ybWF0LCBnZXRXaW5kb3dXaWR0aCgpKjIsIGdldFdpbmRvd0hl
aWdodCgpKjIpOwotICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbURpZmZTaXplQ29sb3JCdWZm
ZXIsIDApOwotCi0gICAgICAgIEFTU0VSVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExF
VEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotICAgICAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgiR0xf
RVhUX2RyYXdfYnVmZmVycyIpKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbEdlbkZyYW1lYnVm
ZmVycygxLCAmbU1SVEZCTyk7Ci0gICAgICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgbU1SVEZCTyk7Ci0gICAgICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtTVJUQ29s
b3JCdWZmZXIwKTsKLSAgICAgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1NUlRDb2xvckJ1ZmZl
cjEpOwotICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtTVJUQ29sb3JC
dWZmZXIwKTsKLSAgICAgICAgICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEs
IGZvcm1hdCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgICAgICAg
ICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNI
TUVOVDBfRVhULCBHTF9URVhUVVJFXzJELCBtTVJUQ29sb3JCdWZmZXIwLCAwKTsKLSAgICAgICAg
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbU1SVENvbG9yQnVmZmVyMSk7Ci0gICAg
ICAgICAgICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJELCAxLCBmb3JtYXQsIGdldFdp
bmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKLSAgICAgICAgICAgIGdsRnJhbWVidWZm
ZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQxX0VYVCwgR0xf
VEVYVFVSRV8yRCwgbU1SVENvbG9yQnVmZmVyMSwgMCk7Ci0KLSAgICAgICAgICAgIEFTU0VSVF9H
TEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhHTF9GUkFNRUJVRkZFUikpOwotICAgICAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVi
dWZmZXJfbXVsdGlzYW1wbGUiKSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gVGVzdCBibGl0
IGJldHdlZW4gUkdCQSBhbmQgbXVsdGlzYW1wbGVkIEJHUkEKLSAgICAgICAgICAgIGdsR2VuVGV4
dHVyZXMoMSwgJm1SR0JBQ29sb3JidWZmZXIpOwotICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCBtUkdCQUNvbG9yYnVmZmVyKTsKLSAgICAgICAgICAgIGdsVGV4U3RvcmFn
ZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4X09FUywgZ2V0V2luZG93V2lkdGgoKSwg
Z2V0V2luZG93SGVpZ2h0KCkpOwotCi0gICAgICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAm
bVJHQkFGQk8pOwotICAgICAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIs
IG1SR0JBRkJPKTsKLSAgICAgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVC
VUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtUkdCQUNvbG9yYnVm
ZmVyLCAwKTsKLQotICAgICAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAgICAg
ICBBU1NFUlRfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLQotICAgICAgICAgICAgZ2xHZW5SZW5kZXJi
dWZmZXJzKDEsICZtQkdSQU11bHRpc2FtcGxlZFJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgICAgICBn
bEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtQkdSQU11bHRpc2FtcGxlZFJlbmRl
cmJ1ZmZlcik7Ci0gICAgICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFO
R0xFKEdMX1JFTkRFUkJVRkZFUiwgMSwgR0xfQkdSQThfRVhULCBnZXRXaW5kb3dXaWR0aCgpLCBn
ZXRXaW5kb3dIZWlnaHQoKSk7Ci0KLSAgICAgICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZt
QkdSQU11bHRpc2FtcGxlZEZCTyk7Ci0gICAgICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9G
UkFNRUJVRkZFUiwgbUJHUkFNdWx0aXNhbXBsZWRGQk8pOwotICAgICAgICAgICAgZ2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1JFTkRFUkJVRkZFUiwgbUJHUkFNdWx0aXNhbXBsZWRSZW5kZXJidWZmZXIpOwotCi0gICAgICAg
ICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgICAgIEFTU0VSVF9HTEVOVU1fRVEo
R0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFN
RUJVRkZFUikpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIG1PcmlnaW5hbEZCTyk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIFRlYXJE
b3duKCkKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtQ2hlY2tlclByb2dyYW0pOwot
ICAgICAgICBnbERlbGV0ZVByb2dyYW0obUJsdWVQcm9ncmFtKTsKLQotICAgICAgICBnbERlbGV0
ZUZyYW1lYnVmZmVycygxLCAmbVVzZXJGQk8pOwotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEs
ICZtVXNlckNvbG9yQnVmZmVyKTsKLSAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZt
VXNlckRlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0KLSAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMo
MSwgJm1TbWFsbEZCTyk7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1TbWFsbENvbG9y
QnVmZmVyKTsKLSAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtU21hbGxEZXB0aFN0
ZW5jaWxCdWZmZXIpOwotCi0gICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtQ29sb3JP
bmx5RkJPKTsKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVNtYWxsRGVwdGhTdGVuY2ls
QnVmZmVyKTsKLQotICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbURpZmZGb3JtYXRG
Qk8pOwotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtRGlmZkZvcm1hdENvbG9yQnVmZmVy
KTsKLQotICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbURpZmZTaXplRkJPKTsKLSAg
ICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbURpZmZTaXplQ29sb3JCdWZmZXIpOwotCi0gICAg
ICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIikpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtTVJURkJPKTsKLSAgICAg
ICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1NUlRDb2xvckJ1ZmZlcjApOwotICAgICAgICAg
ICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbU1SVENvbG9yQnVmZmVyMSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAobVJHQkFDb2xvcmJ1ZmZlciAhPSAwKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBnbERlbGV0ZVRleHR1cmVzKDEsICZtUkdCQUNvbG9yYnVmZmVyKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChtUkdCQUZCTyAhPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbERlbGV0
ZUZyYW1lYnVmZmVycygxLCAmbUJHUkFNdWx0aXNhbXBsZWRGQk8pOwotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKG1CR1JBTXVsdGlzYW1wbGVkUmVuZGVyYnVmZmVyICE9IDApCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbUJHUkFNdWx0aXNhbXBsZWRS
ZW5kZXJidWZmZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1CR1JBTXVsdGlzYW1wbGVk
RkJPICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEs
ICZtQkdSQU11bHRpc2FtcGxlZEZCTyk7Ci0gICAgICAgIH0KLQotICAgICAgICBBTkdMRVRlc3Q6
OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgR0x1aW50IG1DaGVja2VyUHJvZ3JhbTsKLSAgICBH
THVpbnQgbUJsdWVQcm9ncmFtOwotCi0gICAgR0x1aW50IG1PcmlnaW5hbEZCTzsKLQotICAgIEdM
dWludCBtVXNlckZCTzsKLSAgICBHTHVpbnQgbVVzZXJDb2xvckJ1ZmZlcjsKLSAgICBHTHVpbnQg
bVVzZXJEZXB0aFN0ZW5jaWxCdWZmZXI7Ci0KLSAgICBHTHVpbnQgbVNtYWxsRkJPOwotICAgIEdM
dWludCBtU21hbGxDb2xvckJ1ZmZlcjsKLSAgICBHTHVpbnQgbVNtYWxsRGVwdGhTdGVuY2lsQnVm
ZmVyOwotCi0gICAgR0x1aW50IG1Db2xvck9ubHlGQk87Ci0gICAgR0x1aW50IG1Db2xvck9ubHlD
b2xvckJ1ZmZlcjsKLQotICAgIEdMdWludCBtRGlmZkZvcm1hdEZCTzsKLSAgICBHTHVpbnQgbURp
ZmZGb3JtYXRDb2xvckJ1ZmZlcjsKLQotICAgIEdMdWludCBtRGlmZlNpemVGQk87Ci0gICAgR0x1
aW50IG1EaWZmU2l6ZUNvbG9yQnVmZmVyOwotCi0gICAgR0x1aW50IG1NUlRGQk87Ci0gICAgR0x1
aW50IG1NUlRDb2xvckJ1ZmZlcjA7Ci0gICAgR0x1aW50IG1NUlRDb2xvckJ1ZmZlcjE7Ci0KLSAg
ICBHTHVpbnQgbVJHQkFDb2xvcmJ1ZmZlcjsKLSAgICBHTHVpbnQgbVJHQkFGQk87Ci0KLSAgICBH
THVpbnQgbUJHUkFNdWx0aXNhbXBsZWRSZW5kZXJidWZmZXI7Ci0gICAgR0x1aW50IG1CR1JBTXVs
dGlzYW1wbGVkRkJPOwotfTsKLQotLy8gRHJhdyB0byB1c2VyLWNyZWF0ZWQgZnJhbWVidWZmZXIs
IGJsaXQgd2hvbGUtYnVmZmVyIGNvbG9yIHRvIG9yaWdpbmFsIGZyYW1lYnVmZmVyLgotVEVTVF9Q
KEJsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgQmxpdENvbG9yVG9EZWZhdWx0KQotewotICAgIGds
QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtVXNlckZCTyk7Ci0KLSAgICBnbENsZWFy
KEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9C
VUZGRVJfQklUKTsKLQotICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC44Zik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEZyYW1lYnVm
ZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUsIG1Vc2VyRkJPKTsKLSAgICBnbEJpbmRGcmFt
ZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCBtT3JpZ2luYWxGQk8pOwotCi0gICAg
Z2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dI
ZWlnaHQoKSwgMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7
Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBtT3JpZ2luYWxGQk8pOwotCi0gICAgRVhQRUNUX1BJWEVMX0VRKCAgICBn
ZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAgIDAs
ICAgMCwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0
LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAwLCAyNTUpOwotICAgIEVY
UEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWln
aHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKCAgICBn
ZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAyNTUs
ICAgMCwgMjU1KTsKLX0KLQotLy8gRHJhdyB0byBzeXN0ZW0gZnJhbWVidWZmZXIsIGJsaXQgd2hv
bGUtYnVmZmVyIGNvbG9yIHRvIHVzZXItY3JlYXRlZCBmcmFtZWJ1ZmZlci4KLVRFU1RfUChCbGl0
RnJhbWVidWZmZXJBTkdMRVRlc3QsIFJldmVyc2VDb2xvckJsaXQpCi17Ci0gICAgZ2xCaW5kRnJh
bWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1PcmlnaW5hbEZCTyk7Ci0KLSAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZG
RVJfQklUKTsKLQotICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC44
Zik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVy
KEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7Ci0gICAgZ2xCaW5kRnJh
bWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8pOwotCi0gICAgZ2xC
bGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWln
aHQoKSwgMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsKLQot
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIG1Vc2VyRkJPKTsKLQotICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93
V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1
NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdl
dFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsKLSAgICBFWFBFQ1RfUElY
RUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0
LCAyNTUsICAgMCwgICAwLCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93
V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1
NSk7Ci19Ci0KLS8vIGJsaXQgZnJvbSB1c2VyLWNyZWF0ZWQgRkJPIHRvIHN5c3RlbSBmcmFtZWJ1
ZmZlciwgd2l0aCB0aGUgc2Npc3NvciB0ZXN0IGVuYWJsZWQuCi1URVNUX1AoQmxpdEZyYW1lYnVm
ZmVyQU5HTEVUZXN0LCBTY2lzc29yZWRCbGl0KQotewotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBtVXNlckZCTyk7Ci0KLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9C
SVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLQotICAg
IGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC44Zik7Ci0KLSAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVC
VUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVB
RF9GUkFNRUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8pOwotCi0gICAgZ2xDbGVhckNvbG9yKDEuMCwg
MS4wLCAxLjAsIDEuMCk7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQ
VEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7Ci0KLSAgICBnbFNjaXNzb3Io
Z2V0V2luZG93V2lkdGgoKSAvIDIsIDAsIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dI
ZWlnaHQoKSk7Ci0gICAgZ2xFbmFibGUoR0xfU0NJU1NPUl9URVNUKTsKLQotICAgIGdsQmxpdEZy
YW1lYnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCks
IDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOwotCi0gICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbERpc2FibGUoR0xfU0NJU1NPUl9URVNUKTsK
LQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtT3JpZ2luYWxGQk8pOwot
Ci0gICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdp
bmRvd0hlaWdodCgpIC8gNCwgMjU1LCAyNTUsIDI1NSwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxf
RVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAg
IDAsIDI1NSwgICAwLCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lk
dGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7
Ci0gICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdp
bmRvd0hlaWdodCgpIC8gNCwgMjU1LCAyNTUsIDI1NSwgMjU1KTsKLX0KLQotLy8gYmxpdCBmcm9t
IHN5c3RlbSBGQk8gdG8gdXNlci1jcmVhdGVkIGZyYW1lYnVmZmVyLCB3aXRoIHRoZSBzY2lzc29y
IHRlc3QgZW5hYmxlZC4KLVRFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIFJldmVyc2VT
Y2lzc29yZWRCbGl0KQotewotICAgIC8vIFRPRE8oam1hZGlsbCk6IFRyaWFnZSB0aGlzIGRyaXZl
ciBidWcuCi0gICAgaWYgKElzQU1EKCkgJiYgSXNEM0QxMSgpKQotICAgIHsKLSAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gQU1EIEQzRDExLiIgPDwgc3RkOjplbmRsOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIG1PcmlnaW5hbEZCTyk7Ci0KLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBH
TF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLQotICAgIGRyYXdR
dWFkKG1DaGVja2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC44Zik7Ci0KLSAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVJf
QU5HTEUsIG1Vc2VyRkJPKTsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVG
RkVSX0FOR0xFLCBtT3JpZ2luYWxGQk8pOwotCi0gICAgZ2xDbGVhckNvbG9yKDEuMCwgMS4wLCAx
LjAsIDEuMCk7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVG
RkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7Ci0gICAgCi0gICAgZ2xTY2lzc29yKGdl
dFdpbmRvd1dpZHRoKCkgLyAyLCAwLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVp
Z2h0KCkpOwotICAgIGdsRW5hYmxlKEdMX1NDSVNTT1JfVEVTVCk7Ci0KLSAgICBnbEJsaXRGcmFt
ZWJ1ZmZlckFOR0xFKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAw
LCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsKLQotICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xEaXNhYmxlKEdMX1NDSVNTT1JfVEVTVCk7Ci0K
LSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVVzZXJGQk8pOwotICAgIAot
ICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5k
b3dIZWlnaHQoKSAvIDQsIDI1NSwgMjU1LCAyNTUsIDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VR
KDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAw
LCAyNTUsICAgMCwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRo
KCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOwot
ICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5k
b3dIZWlnaHQoKSAvIDQsIDI1NSwgMjU1LCAyNTUsIDI1NSk7Ci19Ci0KLS8vIGJsaXQgZnJvbSB1
c2VyLWNyZWF0ZWQgRkJPIHRvIHN5c3RlbSBmcmFtZWJ1ZmZlciwgdXNpbmcgcmVnaW9uIGxhcmdl
ciB0aGFuIGJ1ZmZlci4KLVRFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIE92ZXJzaXpl
ZEJsaXQpCi17Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1Vc2VyRkJP
KTsKLQotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9C
SVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwotCi0gICAgZHJhd1F1YWQobUNoZWNrZXJQcm9n
cmFtLCAicG9zaXRpb24iLCAwLjhmKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0g
ICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwgbU9yaWdpbmFs
RkJPKTsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFLCBt
VXNlckZCTyk7Ci0KLSAgICBnbENsZWFyQ29sb3IoMS4wLCAxLjAsIDEuMCwgMS4wKTsKLSAgICBn
bENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RF
TkNJTF9CVUZGRVJfQklUKTsKLQotICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwgZ2V0
V2luZG93V2lkdGgoKSAqIDIsIGdldFdpbmRvd0hlaWdodCgpICogMiwgMCwgMCwgZ2V0V2luZG93
V2lkdGgoKSAqIDIsIGdldFdpbmRvd0hlaWdodCgpICogMiwgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsKLQotICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1P
cmlnaW5hbEZCTyk7Ci0KLSAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkg
LyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOwotICAg
IEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dI
ZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDMg
KiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAg
IDAsICAgMCwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkg
LyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAwLCAyNTUpOwotfQot
Ci0vLyBibGl0IGZyb20gc3lzdGVtIEZCTyB0byB1c2VyLWNyZWF0ZWQgZnJhbWVidWZmZXIsIHVz
aW5nIHJlZ2lvbiBsYXJnZXIgdGhhbiBidWZmZXIuCi1URVNUX1AoQmxpdEZyYW1lYnVmZmVyQU5H
TEVUZXN0LCBSZXZlcnNlT3ZlcnNpemVkQmxpdCkKLXsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgbU9yaWdpbmFsRkJPKTsKLQotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVG
RkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwot
Ci0gICAgZHJhd1F1YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjhmKTsKLQotICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19G
UkFNRUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8pOwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JF
QURfRlJBTUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7Ci0KLSAgICBnbENsZWFyQ29sb3Io
MS4wLCAxLjAsIDEuMCwgMS4wKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBH
TF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLQotICAgIGdsQmxp
dEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSAqIDIsIGdldFdpbmRvd0hl
aWdodCgpICogMiwgMCwgMCwgZ2V0V2luZG93V2lkdGgoKSAqIDIsIGdldFdpbmRvd0hlaWdodCgp
ICogMiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklULCBH
TF9ORUFSRVNUKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtVXNlckZCTyk7Ci0KLSAgICBFWFBFQ1RfUElYRUxfRVEo
ICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUs
ICAgMCwgICAwLCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgo
KSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1NSk7Ci0g
ICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRv
d0hlaWdodCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEo
ICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAs
IDI1NSwgICAwLCAyNTUpOwotfQotCi0vLyBibGl0IGZyb20gdXNlci1jcmVhdGVkIEZCTyB0byBz
eXN0ZW0gZnJhbWVidWZmZXIsIHdpdGggZGVwdGggYnVmZmVyLgotVEVTVF9QKEJsaXRGcmFtZWJ1
ZmZlckFOR0xFVGVzdCwgQmxpdFdpdGhEZXB0aCkKLXsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgbVVzZXJGQk8pOwotCi0gICAgZ2xEZXB0aE1hc2soR0xfVFJVRSk7Ci0g
ICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdM
X1NURU5DSUxfQlVGRkVSX0JJVCk7Ci0KLSAgICBnbEVuYWJsZShHTF9ERVBUSF9URVNUKTsKLQot
ICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC4zZik7Ci0KLSAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJB
TUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xf
UkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8pOwotCi0gICAgZ2xDbGVhckNvbG9yKDEu
MCwgMS4wLCAxLjAsIDEuMCk7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xf
REVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7Ci0KLSAgICBnbEJsaXRG
cmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgp
LCAwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJ
VCwgR0xfTkVBUkVTVCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbEJpbmRG
cmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbU9yaWdpbmFsRkJPKTsKLQotICAgIC8vIGlmIGJs
aXQgaXMgaGFwcGVuaW5nIGNvcnJlY3RseSwgdGhpcyBxdWFkIHdpbGwgbm90IGRyYXcsIGJlY2F1
c2UgaXQgaXMgYmVoaW5kIHRoZSBibGl0dGVkIG9uZQotICAgIGRyYXdRdWFkKG1CbHVlUHJvZ3Jh
bSwgInBvc2l0aW9uIiwgMC44Zik7Ci0KLSAgICBnbERpc2FibGUoR0xfREVQVEhfVEVTVCk7Ci0K
LSAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2lu
ZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9F
USgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAg
MCwgMjU1LCAgIDAsIDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0
aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsK
LSAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2lu
ZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAwLCAyNTUpOwotfQotCi0vLyBibGl0IGZyb20g
c3lzdGVtIEZCTyB0byB1c2VyLWNyZWF0ZWQgZnJhbWVidWZmZXIsIHdpdGggZGVwdGggYnVmZmVy
LgotVEVTVF9QKEJsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgUmV2ZXJzZUJsaXRXaXRoRGVwdGgp
Ci17Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1PcmlnaW5hbEZCTyk7
Ci0KLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklU
IHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLQotICAgIGdsRW5hYmxlKEdMX0RFUFRIX1RFU1Qp
OwotCi0gICAgZHJhd1F1YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjNmKTsKLQot
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJB
V19GUkFNRUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8pOwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdM
X1JFQURfRlJBTUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7Ci0KLSAgICBnbENsZWFyQ29s
b3IoMS4wZiwgMS4wZiwgMS4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJf
QklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7Ci0KLSAg
ICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRv
d0hlaWdodCgpLCAwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhf
QlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVVzZXJGQk8pOwotCi0gICAgLy8g
aWYgYmxpdCBpcyBoYXBwZW5pbmcgY29ycmVjdGx5LCB0aGlzIHF1YWQgd2lsbCBub3QgZHJhdywg
YmVjYXVzZSBpdCBpcyBiZWhpbmQgdGhlIGJsaXR0ZWQgb25lCi0KLSAgICBkcmF3UXVhZChtQmx1
ZVByb2dyYW0sICJwb3NpdGlvbiIsIDAuOGYpOwotCi0gICAgZ2xEaXNhYmxlKEdMX0RFUFRIX1RF
U1QpOwotCi0gICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAg
IGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKLSAgICBFWFBFQ1Rf
UElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkg
LyA0LCAgIDAsIDI1NSwgICAwLCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2lu
ZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAs
IDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAq
IGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsKLX0KLQotLy8gYmxp
dCBmcm9tIG9uZSByZWdpb24gb2YgdGhlIHN5c3RlbSBmYm8gdG8gYW5vdGhlci0tIHRoaXMgc2hv
dWxkIGZhaWwuCi1URVNUX1AoQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0LCBCbGl0U2FtZUJ1ZmZl
ck9yaWdpbmFsKQotewotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtT3Jp
Z2luYWxGQk8pOwotCi0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhf
QlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7Ci0KLSAgICBkcmF3UXVhZChtQ2hl
Y2tlclByb2dyYW0sICJwb3NpdGlvbiIsIDAuM2YpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdldFdpbmRvd1dpZHRoKCkg
LyAyLCBnZXRXaW5kb3dIZWlnaHQoKSwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIDAsIGdldFdpbmRv
d1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOwotICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLS8vIGJsaXQgZnJvbSBvbmUgcmVnaW9uIG9mIHRo
ZSBzeXN0ZW0gZmJvIHRvIGFub3RoZXIuCi1URVNUX1AoQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0
LCBCbGl0U2FtZUJ1ZmZlclVzZXIpCi17Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIG1Vc2VyRkJPKTsKLQotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdM
X0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwotCi0gICAgZHJhd1F1
YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjNmKTsKLQotICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOwotCi0gICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dX
aWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCksIGdldFdpbmRvd1dpZHRoKCkgLyAyLCAwLCBn
ZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsKLSAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi1URVNUX1AoQmxpdEZyYW1lYnVmZmVy
QU5HTEVUZXN0LCBCbGl0UGFydGlhbENvbG9yKQotewotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBtVXNlckZCTyk7Ci0KLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9C
SVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLQotICAg
IGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVC
VUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVB
RF9GUkFNRUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8pOwotCi0gICAgZ2xDbGVhckNvbG9yKDEuMCwg
MS4wLCAxLjAsIDEuMCk7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUfCBHTF9ERVBU
SF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLQotICAgIGdsQmxpdEZyYW1l
YnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgp
IC8gMiwgMCwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0
V2luZG93SGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZG
RVJfQklULCBHTF9ORUFSRVNUKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAg
Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1PcmlnaW5hbEZCTyk7Ci0KLSAgICBF
WFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVp
Z2h0KCkgLyA0LCAyNTUsIDI1NSwgMjU1LCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgzICog
Z2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgMjU1
LCAyNTUsIDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8g
NCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAyNTUsIDI1NSwgMjU1KTsKLSAgICBF
WFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVp
Z2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOwotfQotCi1URVNUX1AoQmxpdEZyYW1lYnVm
ZmVyQU5HTEVUZXN0LCBCbGl0RGlmZmVyZW50U2l6ZXMpCi17Ci0gICAgZ2xCaW5kRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIG1Vc2VyRkJPKTsKLQotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVG
RkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwot
Ci0gICAgZHJhd1F1YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19G
UkFNRUJVRkZFUl9BTkdMRSwgbVNtYWxsRkJPKTsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9S
RUFEX0ZSQU1FQlVGRkVSX0FOR0xFLCBtVXNlckZCTyk7Ci0KLSAgICBnbENsZWFyQ29sb3IoMS4w
LCAxLjAsIDEuMCwgMS4wKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVR8IEdMX0RF
UFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwotCi0gICAgZ2xCbGl0RnJh
bWVidWZmZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwg
MCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsKLQotICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIG1TbWFsbEZCTyk7Ci0KLSAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRo
KCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOwot
Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLVRFU1RfUChCbGl0RnJhbWVidWZmZXJB
TkdMRVRlc3QsIEJsaXRXaXRoTWlzc2luZ0F0dGFjaG1lbnRzKQotewotICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtQ29sb3JPbmx5RkJPKTsKLQotICAgIGdsQ2xlYXIoR0xf
Q09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgZHJhd1F1YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRp
b24iLCAwLjNmKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVJf
QU5HTEUsIG1PcmlnaW5hbEZCTyk7Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFN
RUJVRkZFUl9BTkdMRSwgbUNvbG9yT25seUZCTyk7Ci0KLSAgICBnbENsZWFyQ29sb3IoMS4wLCAx
LjAsIDEuMCwgMS4wKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVR8IEdMX0RFUFRI
X0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwotCi0gICAgLy8gZGVwdGggYmxp
dCByZXF1ZXN0IHNob3VsZCBiZSBzaWxlbnRseSBpZ25vcmVkLCBiZWNhdXNlIHRoZSByZWFkIEZC
TyBoYXMgbm8gZGVwdGggYXR0YWNobWVudAotICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwg
MCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIDAsIGdldFdpbmRvd1dp
ZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Q09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOyAKLQot
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIG1PcmlnaW5hbEZCTyk7Ci0KLSAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdp
bmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwgICAw
LCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsICAg
ICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1NSk7Ci0gICAgRVhQRUNU
X1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgp
IC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdp
bmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAw
LCAyNTUpOwotCi0gICAgLy8gdW5saWtlIGluIHRoZSBkZXB0aCBibGl0IHRlc3RzLCB0aGlzICpz
aG91bGQqIGRyYXcgYSBibHVlIHF1YWQsIGJlY2F1c2UgZGVwdGggaW5mbwotICAgIC8vIGhhcyBu
b3QgYmVlbiBjb3BpZWQKLSAgICBnbEVuYWJsZShHTF9ERVBUSF9URVNUKTsKLSAgICBkcmF3UXVh
ZChtQmx1ZVByb2dyYW0sICJwb3NpdGlvbiIsIDAuOGYpOwotICAgIGdsRGlzYWJsZShHTF9ERVBU
SF9URVNUKTsKLQotICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQs
ICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgICAwLCAyNTUsIDI1NSk7Ci0gICAgRVhQ
RUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdo
dCgpIC8gNCwgICAwLCAgIDAsIDI1NSwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdl
dFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsICAgMCwg
MjU1LCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQs
IDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgICAwLCAyNTUsIDI1NSk7Ci19Ci0KLVRF
U1RfUChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIEJsaXRTdGVuY2lsKQotewotICAgIC8vIFRP
RE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgaWYgd2UgY2FuIGZpeCB0aGlzIG9uIEQzRDkuCi0gICAg
Ly8gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmdsZXByb2plY3QvaXNzdWVzL2RldGFpbD9p
ZD04MDkKLSAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0
IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgRDNEOS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBt
VXNlckZCTyk7Ci0KLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIC8vIGZp
bGwgdGhlIHN0ZW5jaWwgYnVmZmVyIHdpdGggMHgxCi0gICAgZ2xTdGVuY2lsRnVuYyhHTF9BTFdB
WVMsIDB4MSwgMHhGRik7Ci0gICAgZ2xTdGVuY2lsT3AoR0xfUkVQTEFDRSwgR0xfUkVQTEFDRSwg
R0xfUkVQTEFDRSk7Ci0gICAgZ2xFbmFibGUoR0xfU1RFTkNJTF9URVNUKTsgCi0gICAgZHJhd1F1
YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjNmKTsKLQotICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7Ci0gICAgZ2xC
aW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8pOwotCi0g
ICAgZ2xDbGVhckNvbG9yKDEuMCwgMS4wLCAxLjAsIDEuMCk7Ci0gICAgZ2xDbGVhclN0ZW5jaWwo
MHgwKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVR8IEdMX0RFUFRIX0JVRkZFUl9C
SVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwotCi0gICAgLy8gZGVwdGggYmxpdCByZXF1ZXN0
IHNob3VsZCBiZSBzaWxlbnRseSBpZ25vcmVkLCBiZWNhdXNlIHRoZSByZWFkIEZCTyBoYXMgbm8g
ZGVwdGggYXR0YWNobWVudAotICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2lu
ZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdl
dFdpbmRvd0hlaWdodCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09MT1JfQlVG
RkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7IAotCi0gICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgbU9yaWdpbmFsRkJPKTsKLQotICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lk
dGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7
Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdp
bmRvd0hlaWdodCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxf
RVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAy
NTUsICAgMCwgICAwLCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lk
dGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1NSk7
Ci0KLSAgICBnbFN0ZW5jaWxGdW5jKEdMX0VRVUFMLCAweDEsIDB4RkYpOyAvLyBvbmx5IHBhc3Mg
aWYgc3RlbmNpbCBidWZmZXIgYXQgcGl4ZWwgcmVhZHMgMHgxCi0gICAgZHJhd1F1YWQobUJsdWVQ
cm9ncmFtLCAicG9zaXRpb24iLCAwLjhmKTsgLy8gYmx1ZSBxdWFkIHdpbGwgZHJhdyBpZiBzdGVu
Y2lsIGJ1ZmZlciB3YXMgY29waWVkCi0gICAgZ2xEaXNhYmxlKEdMX1NURU5DSUxfVEVTVCk7Ci0K
LSAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2lu
ZG93SGVpZ2h0KCkgLyA0LCAgIDAsICAgMCwgMjU1LCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9F
USgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAg
MCwgICAwLCAyNTUsIDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0
aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAgIDAsIDI1NSwgMjU1KTsK
LSAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2lu
ZG93SGVpZ2h0KCkgLyA0LCAgIDAsICAgMCwgMjU1LCAyNTUpOwotfQotCi0vLyBtYWtlIHN1cmUg
dGhhdCBhdHRlbXB0aW5nIHRvIGJsaXQgYSBwYXJ0aWFsIGRlcHRoIGJ1ZmZlciBpc3N1ZXMgYW4g
ZXJyb3IKLVRFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIEJsaXRQYXJ0aWFsRGVwdGhT
dGVuY2lsKQotewotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtVXNlckZC
Tyk7Ci0KLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJf
QklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLQotICAgIGRyYXdRdWFkKG1DaGVja2VyUHJv
Z3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQot
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5h
bEZCTyk7Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwg
bVVzZXJGQk8pOwotCi0gICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dX
aWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCAwLCAwLCAKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIs
IEdMX0RFUFRIX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOwotICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLS8vIFRlc3QgYmxpdCB3aXRoIE1SVCBmcmFtZWJ1
ZmZlcnMKLVRFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIEJsaXRNUlQpCi17Ci0gICAg
aWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIikpCi0gICAgewotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xlbnVtIGRyYXdCdWZmZXJzW10gPSB7IEdMX0NP
TE9SX0FUVEFDSE1FTlQwX0VYVCwgR0xfQ09MT1JfQVRUQUNITUVOVDFfRVhUIH07Ci0KLSAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbU1SVEZCTyk7Ci0gICAgZ2xEcmF3QnVm
ZmVyc0VYVCgyLCBkcmF3QnVmZmVycyk7Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgbUNvbG9yT25seUZCTyk7Ci0KLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9C
SVQpOwotICAgIAotICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC44
Zik7Ci0gICAgCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFLCBtQ29sb3JPbmx5RkJPKTsKLSAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCBtTVJURkJPKTsKLQotICAg
IGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93
SGVpZ2h0KCksIDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX05FQVJFU1Qp
OwotICAgIAotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIG1NUlRGQk8pOwotCi0gICAgRVhQRUNUX1BJWEVMX0VRKCAgICBn
ZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAgIDAs
ICAgMCwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0
LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAwLCAyNTUpOwotICAgIEVY
UEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWln
aHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKCAgICBn
ZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAyNTUs
ICAgMCwgMjU1KTsKLQotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIs
IEdMX0NPTE9SX0FUVEFDSE1FTlQxX0VYVCwgR0xfVEVYVFVSRV8yRCwgMCwgMCk7Ci0gICAgZ2xG
cmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAs
IEdMX1RFWFRVUkVfMkQsIG1NUlRDb2xvckJ1ZmZlcjAsIDApOwotCi0gICAgRVhQRUNUX1BJWEVM
X0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwg
MjU1LCAgIDAsICAgMCwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dp
ZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAwLCAyNTUp
OwotICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRX
aW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVM
X0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwg
ICAwLCAyNTUsICAgMCwgMjU1KTsKLQotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJB
TUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtTVJUQ29sb3JC
dWZmZXIwLCAwKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBH
TF9DT0xPUl9BVFRBQ0hNRU5UMV9FWFQsIEdMX1RFWFRVUkVfMkQsIG1NUlRDb2xvckJ1ZmZlcjEs
IDApOwotfQotCi0vLyBNYWtlIHN1cmUgdGhhdCBhdHRlbXB0cyB0byBzdHJldGNoIGluIGEgYmxp
dCBjYWxsIGlzc3VlIGFuIGVycm9yCi1URVNUX1AoQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0LCBF
cnJvclN0cmV0Y2hpbmcpCi17Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIs
IG1Vc2VyRkJPKTsKLQotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRI
X0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwotCi0gICAgZHJhd1F1YWQobUNo
ZWNrZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwg
bU9yaWdpbmFsRkJPKTsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVS
X0FOR0xFLCBtVXNlckZCTyk7Ci0KLSAgICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdl
dFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDAsIDAsIAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCks
IEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOwotICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLS8vIE1ha2Ugc3VyZSB0aGF0IGF0dGVtcHRzIHRv
IGZsaXAgaW4gYSBibGl0IGNhbGwgaXNzdWUgYW4gZXJyb3IKLVRFU1RfUChCbGl0RnJhbWVidWZm
ZXJBTkdMRVRlc3QsIEVycm9yRmxpcHBpbmcpCi17Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIG1Vc2VyRkJPKTsKLQotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJ
VCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwotCi0gICAg
ZHJhd1F1YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJV
RkZFUl9BTkdMRSwgbU9yaWdpbmFsRkJPKTsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFE
X0ZSQU1FQlVGRkVSX0FOR0xFLCBtVXNlckZCTyk7Ci0KLSAgICBnbEJsaXRGcmFtZWJ1ZmZlckFO
R0xFKDAsIDAsIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIGdl
dFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgMCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7Ci0g
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotVEVTVF9QKEJs
aXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgRXJyb3JzKQotewotICAgIGdsQmluZEZyYW1lYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCBtVXNlckZCTyk7Ci0KLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZF
Ul9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLQot
ICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJB
TUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xf
UkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8pOwotCi0gICAgZ2xCbGl0RnJhbWVidWZm
ZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgMCwg
Z2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsKLSAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwg
MCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIDAsIGdldFdpbmRvd1dp
ZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Q09MT1JfQlVGRkVSX0JJVCB8IDIzNCwgR0xfTkVBUkVTVCk7Ci0gICAgRVhQRUNUX0dMX0VSUk9S
KEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFN
RUJVRkZFUl9BTkdMRSwgbURpZmZGb3JtYXRGQk8pOwotCi0gICAgZ2xCbGl0RnJhbWVidWZmZXJB
TkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgMCwgZ2V0
V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsKLSAgICBFWFBFQ1RfR0xfRVJS
T1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQoIkdM
X0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikpCi0gICAgewotICAgICAgICBnbEJpbmRG
cmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSLCBtQkdSQU11bHRpc2FtcGxlZEZCTyk7Ci0g
ICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVIsIG1SR0JBRkJPKTsK
LSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgZ2xCbGl0RnJhbWVidWZm
ZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgMCwg
Z2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7Ci0gICAgICAgIEVY
UEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgfQotCi19Ci0KLS8vIFRP
RE8oZ2VvZmZsYW5nKTogRml4IHRoZSBkZXBlbmRlbmNlIG9uIGdsQmxpdEZyYW1lYnVmZmVyQU5H
TEUgd2l0aG91dCBjaGVja3MgYW5kIGFzc3VtaW5nIHRoZQotLy8gZGVmYXVsdCBmcmFtZWJ1ZmZl
ciBpcyBCR1JBIHRvIGVuYWJsZSB0aGUgR0wgYW5kIEdMRVMgYmFja2VuZHMuIChodHRwOi8vYW5n
bGVidWcuY29tLzEyODkpCi0KLWNsYXNzIEJsaXRGcmFtZWJ1ZmZlclRlc3QgOiBwdWJsaWMgQU5H
TEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBCbGl0RnJhbWVidWZmZXJUZXN0KCkKLSAgICB7
Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDI1Nik7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgy
NTYpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVl
bkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25m
aWdBbHBoYUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7Ci0gICAgICAg
IHNldENvbmZpZ1N0ZW5jaWxCaXRzKDgpOwotICAgIH0KLX07Ci0KLS8vIFRlc3RzIHJlc29sdmlu
ZyBhIG11bHRpc2FtcGxlIGRlcHRoIGJ1ZmZlci4KLVRFU1RfUChCbGl0RnJhbWVidWZmZXJUZXN0
LCBNdWx0aXNhbXBsZURlcHRoKQotewotICAgIC8vIFRPRE8oam1hZGlsbCk6IFRyaWFnZSB0aGlz
IGRyaXZlciBidWcuCi0gICAgaWYgKElzQU1EKCkgJiYgSXNEM0QxMSgpKQotICAgIHsKLSAgICAg
ICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gQU1EIEQzRDExLiIgPDwgc3RkOjplbmRs
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xSZW5kZXJidWZmZXIgcmVuZGVyYnVm
OwotICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1Zi5nZXQo
KSk7Ci0gICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0xfUkVOREVSQlVGRkVS
LCAyLCBHTF9ERVBUSF9DT01QT05FTlQyNCwgMjU2LCAyNTYpOwotCi0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnZlcnRleCA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgImlu
IHZlYzIgcG9zaXRpb247XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIg
IGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAwLjUpO1xuIgotICAgICAgICAifSI7
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50ID0KLSAgICAgICAgIiN2ZXJzaW9uIDMw
MCBlc1xuIgotICAgICAgICAib3V0IG1lZGl1bXAgdmVjNCByZWQ7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCi0gICAgICAgICIgICByZWQgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7
XG4iCi0gICAgICAgICIgICBnbF9GcmFnRGVwdGggPSAwLjU7XG4iCi0gICAgICAgICJ9IjsKLQot
ICAgIEFOR0xFX0dMX1BST0dSQU0oZHJhd1JlZCwgdmVydGV4LCBmcmFnbWVudCk7Ci0KLSAgICBH
TEZyYW1lYnVmZmVyIGZyYW1lYnVmZmVyOwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCBmcmFtZWJ1ZmZlci5nZXQoKSk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgR0xfREVQVEhfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyYnVmLmdldCgpKTsKLQotICAgIEFT
U0VSVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotCi0gICAgZ2xDbGVhckRlcHRoZigwLjVmKTsKLSAg
ICBnbENsZWFyKEdMX0RFUFRIX0JVRkZFUl9CSVQpOwotCi0gICAgR0xSZW5kZXJidWZmZXIgZGVz
dFJlbmRlcmJ1ZjsKLSAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBkZXN0
UmVuZGVyYnVmLmdldCgpKTsKLSAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVG
RkVSLCBHTF9ERVBUSF9DT01QT05FTlQyNCwgMjU2LCAyNTYpOwotCi0gICAgR0xGcmFtZWJ1ZmZl
ciByZXNvbHZlZDsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCBy
ZXNvbHZlZC5nZXQoKSk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9EUkFXX0ZS
QU1FQlVGRkVSLCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXN0UmVuZGVyYnVmLmdldCgpKTsKLQotICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVIsIGZyYW1lYnVmZmVyLmdldCgpKTsKLSAg
ICBnbEJsaXRGcmFtZWJ1ZmZlcigwLCAwLCAyNTYsIDI1NiwgMCwgMCwgMjU2LCAyNTYsIEdMX0RF
UFRIX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIHJlc29sdmVkLmdldCgpKTsKLQotICAgIEdMVGV4dHVyZSBjb2xvcmJ1ZjsK
LSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGNvbG9yYnVmLmdldCgpKTsKLSAgICBn
bFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOCwgMjU2LCAyNTYpOwotICAg
IGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1F
TlQwLCBHTF9URVhUVVJFXzJELCBjb2xvcmJ1Zi5nZXQoKSwgMCk7Ci0KLSAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKLQotICAgIC8vIENsZWFyIHRvIGdyZWVuCi0gICAgZ2xDbGVhckNvbG9yKDAu
MGYsIDEuMGYsIDAuMGYsIDEuMGYpOwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7
Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKLQotICAg
IC8vIERyYXcgd2l0aCAwLjVmIHRlc3QgYW5kIHRoZSB0ZXN0IHNob3VsZCBwYXNzLgotICAgIGds
RW5hYmxlKEdMX0RFUFRIX1RFU1QpOwotICAgIGdsRGVwdGhGdW5jKEdMX0VRVUFMKTsKLSAgICBk
cmF3UXVhZChkcmF3UmVkLmdldCgpLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfUElY
RUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6cmVkKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotfQotCi0vLyBUZXN0IHJlc29sdmluZyBhIG11bHRpc2FtcGxlZCBzdGVuY2lsIGJ1ZmZl
ci4KLVRFU1RfUChCbGl0RnJhbWVidWZmZXJUZXN0LCBNdWx0aXNhbXBsZVN0ZW5jaWwpCi17Ci0g
ICAgR0xSZW5kZXJidWZmZXIgcmVuZGVyYnVmOwotICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9S
RU5ERVJCVUZGRVIsIHJlbmRlcmJ1Zi5nZXQoKSk7Ci0gICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdl
TXVsdGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCAyLCBHTF9TVEVOQ0lMX0lOREVYOCwgMjU2LCAy
NTYpOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleCA9Ci0gICAgICAgICIjdmVyc2lv
biAzMDAgZXNcbiIKLSAgICAgICAgImluIHZlYzIgcG9zaXRpb247XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4w
LCAxLjApO1xuIgotICAgICAgICAifSI7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50
ID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAib3V0IG1lZGl1bXAgdmVj
NCByZWQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICByZWQgPSB2
ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIEFOR0xFX0dM
X1BST0dSQU0oZHJhd1JlZCwgdmVydGV4LCBmcmFnbWVudCk7Ci0KLSAgICBHTEZyYW1lYnVmZmVy
IGZyYW1lYnVmZmVyOwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmcmFt
ZWJ1ZmZlci5nZXQoKSk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZW5kZXJidWYuZ2V0KCkpOwotCi0gICAgQVNTRVJUX0dMRU5V
TV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdM
X0ZSQU1FQlVGRkVSKSk7Ci0KLSAgICAvLyBmaWxsIHRoZSBzdGVuY2lsIGJ1ZmZlciB3aXRoIDB4
MQotICAgIGdsU3RlbmNpbEZ1bmMoR0xfQUxXQVlTLCAweDEsIDB4RkYpOwotICAgIGdsU3RlbmNp
bE9wKEdMX1JFUExBQ0UsIEdMX1JFUExBQ0UsIEdMX1JFUExBQ0UpOwotICAgIGdsRW5hYmxlKEdM
X1NURU5DSUxfVEVTVCk7Ci0gICAgZHJhd1F1YWQoZHJhd1JlZC5nZXQoKSwgInBvc2l0aW9uIiwg
MC41Zik7Ci0KLSAgICBHTFRleHR1cmUgZGVzdENvbG9yYnVmOwotICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgZGVzdENvbG9yYnVmLmdldCgpKTsKLSAgICBnbFRleFN0b3JhZ2UyRChH
TF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOCwgMjU2LCAyNTYpOwotCi0gICAgR0xSZW5kZXJidWZm
ZXIgZGVzdFJlbmRlcmJ1ZjsKLSAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVS
LCBkZXN0UmVuZGVyYnVmLmdldCgpKTsKLSAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVO
REVSQlVGRkVSLCBHTF9TVEVOQ0lMX0lOREVYOCwgMjU2LCAyNTYpOwotCi0gICAgR0xGcmFtZWJ1
ZmZlciByZXNvbHZlZDsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVS
LCByZXNvbHZlZC5nZXQoKSk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9EUkFXX0ZS
QU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlc3RDb2xvcmJ1Zi5nZXQoKSwgMCk7Ci0gICAgZ2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FUVEFDSE1F
TlQsIEdMX1JFTkRFUkJVRkZFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RS
ZW5kZXJidWYuZ2V0KCkpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJV
RkZFUiwgZnJhbWVidWZmZXIuZ2V0KCkpOwotICAgIGdsQmxpdEZyYW1lYnVmZmVyKDAsIDAsIDI1
NiwgMjU2LCAwLCAwLCAyNTYsIDI1NiwgR0xfU1RFTkNJTF9CVUZGRVJfQklULCBHTF9ORUFSRVNU
KTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCByZXNvbHZlZC5nZXQo
KSk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIENsZWFyIHRvIGdyZWVu
Ci0gICAgZ2xDbGVhckNvbG9yKDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYpOwotICAgIGdsQ2xlYXIo
R0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdM
Q29sb3I6OmdyZWVuKTsKLQotICAgIC8vIERyYXcgcmVkIGlmIHRoZSBzdGVuY2lsIGlzIDB4MSwg
d2hpY2ggc2hvdWxkIGJlIHRydWUgYWZ0ZXIgdGhlIGJsaXQvcmVzb2x2ZS4KLSAgICBnbFN0ZW5j
aWxGdW5jKEdMX0VRVUFMLCAweDEsIDB4RkYpOwotICAgIGRyYXdRdWFkKGRyYXdSZWQuZ2V0KCks
ICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENv
bG9yOjpyZWQpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFVzZSB0aGlz
IHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hp
Y2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3Qu
Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKEJsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMy
X0QzRDExKEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0NPUFlfQU5HTEUpLAotICAgICAg
ICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5UX1BBVEhf
RkFTVF9BTkdMRSkpOwotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKEJsaXRGcmFtZWJ1ZmZlclRl
c3QsIEVTM19EM0QxMSgpKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQnVmZmVyRGF0YVRl
c3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0J1ZmZl
ckRhdGFUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTcyY2NlOWM4YmIy
M2FiZmVlYWE3N2EwM2EyYjYwNGM1M2Y4NjY0ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xf
dGVzdHMvQnVmZmVyRGF0YVRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTQwICswLDAgQEAK
LS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi0jaW5jbHVk
ZSA8c3RkaW50Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotY2xhc3MgQnVmZmVyRGF0
YVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBCdWZmZXJEYXRh
VGVzdCgpCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxNik7Ci0gICAgICAgIHNldFdp
bmRvd0hlaWdodCgxNik7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNl
dENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAg
ICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0
KTsKLQotICAgICAgICBtQnVmZmVyID0gMDsKLSAgICAgICAgbVByb2dyYW0gPSAwOwotICAgICAg
ICBtQXR0cmliTG9jYXRpb24gPSAtMTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBjb25zdCBj
aGFyICogdnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIGF0
dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOwotICAgICAgICAgICAgYXR0cmlidXRlIGZsb2F0IGluX2F0
dHJpYjsKLSAgICAgICAgICAgIHZhcnlpbmcgZmxvYXQgdl9hdHRyaWI7Ci0gICAgICAgICAgICB2
b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZfYXR0cmliID0gaW5f
YXR0cmliOwotICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgY29uc3QgY2hhciAqIGZzU291cmNlID0gU0hB
REVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDsKLSAgICAgICAgICAgIHZhcnlpbmcgZmxvYXQgdl9hdHRyaWI7Ci0gICAgICAgICAgICB2b2lk
IG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZl
YzQodl9hdHRyaWIsIDAsIDAsIDEpOwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAg
ICAgIGdsR2VuQnVmZmVycygxLCAmbUJ1ZmZlcik7Ci0gICAgICAgIEFTU0VSVF9ORShtQnVmZmVy
LCAwVSk7Ci0KLSAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2c1NvdXJjZSwgZnNT
b3VyY2UpOwotICAgICAgICBBU1NFUlRfTkUobVByb2dyYW0sIDBVKTsKLQotICAgICAgICBtQXR0
cmliTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiaW5fYXR0cmliIik7
Ci0gICAgICAgIEFTU0VSVF9ORShtQXR0cmliTG9jYXRpb24sIC0xKTsKLQotICAgICAgICBnbENs
ZWFyQ29sb3IoMCwgMCwgMCwgMCk7Ci0gICAgICAgIGdsQ2xlYXJEZXB0aGYoMC4wKTsKLSAgICAg
ICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCk7Ci0K
LSAgICAgICAgZ2xEaXNhYmxlKEdMX0RFUFRIX1RFU1QpOwotCi0gICAgICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsK
LSAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtQnVmZmVyKTsKLSAgICAgICAgZ2xEZWxldGVQ
cm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAg
fQotCi0gICAgR0x1aW50IG1CdWZmZXI7Ci0gICAgR0x1aW50IG1Qcm9ncmFtOwotICAgIEdMaW50
IG1BdHRyaWJMb2NhdGlvbjsKLX07Ci0KLVRFU1RfUChCdWZmZXJEYXRhVGVzdCwgTlVMTERhdGEp
Ci17Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7Ci0gICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBjb25zdCBpbnQgbnVtSXRlcmF0aW9ucyA9IDEyODsK
LSAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUl0ZXJhdGlvbnM7ICsraSkKLSAgICB7Ci0gICAg
ICAgIEdMc2l6ZWkgYnVmZmVyU2l6ZSA9IHNpemVvZihHTGZsb2F0KSAqIChpICsgMSk7Ci0gICAg
ICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIGJ1ZmZlclNpemUsIE5VTEwsIEdMX1NU
QVRJQ19EUkFXKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgZm9y
IChpbnQgaiA9IDA7IGogPCBidWZmZXJTaXplOyBqKyspCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGZvciAoaW50IGsgPSAwOyBrIDwgYnVmZmVyU2l6ZSAtIGo7IGsrKykKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfQVJSQVlfQlVGRkVSLCBrLCBqLCBO
VUxMKTsKLSAgICAgICAgICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotVEVTVF9QKEJ1ZmZlckRhdGFUZXN0LCBaZXJvTm9u
TlVMTERhdGEpCi17Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7
Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBjaGFyICp6ZXJvRGF0YSA9IG5ldyBj
aGFyWzBdOwotICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIDAsIHplcm9EYXRhLCBH
TF9TVEFUSUNfRFJBVyk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbEJ1ZmZl
clN1YkRhdGEoR0xfQVJSQVlfQlVGRkVSLCAwLCAwLCB6ZXJvRGF0YSk7Ci0gICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICBkZWxldGUgW10gemVyb0RhdGE7Ci19Ci0KLVRFU1RfUChCdWZm
ZXJEYXRhVGVzdCwgTlVMTFJlc29sdmVkRGF0YSkKLXsKLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJS
QVlfQlVGRkVSLCBtQnVmZmVyKTsKLSAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCAx
MjgsIE5VTEwsIEdMX0RZTkFNSUNfRFJBVyk7Ci0KLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0p
OwotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtQXR0cmliTG9jYXRpb24sIDEsIEdMX0ZMT0FU
LCBHTF9GQUxTRSwgNCwgTlVMTCk7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtQXR0
cmliTG9jYXRpb24pOwotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDApOwotCi0g
ICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotfQotCi0vLyBUZXN0cyB0
aGF0IGEgaHVnZSBhbGxvY2F0aW9uIHJldHVybnMgR0xfT1VUX09GX01FTU9SWQotLy8gVE9ETyhq
bWFkaWxsKTogRmlndXJlIG91dCBob3cgdG8gdGVzdCB0aGlzIHJlbGlhYmx5IG9uIHRoZSBDaHJv
bWl1bSBib3RzCi1URVNUX1AoQnVmZmVyRGF0YVRlc3QsIERJU0FCTEVEX0h1Z2VTZXREYXRhU2hv
dWxkTm90Q3Jhc2gpCi17Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZl
cik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBHTHNpemVpIGFsbG9jU2l6ZSA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8R0xzaXplaT46Om1heCgpID4+IDI7Ci0KLSAgICB1aW50OF90
ICpkYXRhID0gTlVMTDsKLSAgICB3aGlsZSAoZGF0YSA9PSBOVUxMICYmIGFsbG9jU2l6ZSA+PSA0
KQotICAgIHsKLSAgICAgICAgZGF0YSA9IG5ldyAoc3RkOjpub3Rocm93KSB1aW50OF90W2FsbG9j
U2l6ZV07Ci0KLSAgICAgICAgaWYgKGRhdGEgPT0gTlVMTCkKLSAgICAgICAgewotICAgICAgICAg
ICAgYWxsb2NTaXplID4+PSAxOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQVNTRVJUX05FKHN0
YXRpY19jYXN0PHVpbnQ4X3QqPihOVUxMKSwgZGF0YSk7Ci0gICAgbWVtc2V0KGRhdGEsIDAsIGFs
bG9jU2l6ZSk7Ci0KLSAgICBmbG9hdCAqIGZWYWx1ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQq
PihkYXRhKTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBmID0gMDsgZiA8IDY7IGYrKykKLSAgICB7
Ci0gICAgICAgIGZWYWx1ZVtmXSA9IDEuMGY7Ci0gICAgfQotCi0gICAgZ2xCdWZmZXJEYXRhKEdM
X0FSUkFZX0JVRkZFUiwgYWxsb2NTaXplLCBkYXRhLCBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICBH
TGVudW0gZXJyb3IgPSBnbEdldEVycm9yKCk7Ci0gICAgaWYgKGVycm9yID09IEdMX05PX0VSUk9S
KQotICAgIHsKLSAgICAgICAgLy8gSWYgd2UgZGlkbid0IGZhaWwgYmVjYXVzZSBvZiBhbiBvdXQg
b2YgbWVtb3J5IGVycm9yLCB0cnkgZHJhd2luZyBhIHF1YWQKLSAgICAgICAgLy8gdXNpbmcgdGhl
IGxhcmdlIGJ1ZmZlcgotCi0gICAgICAgIC8vIERJU0FCTEVEIGJlY2F1c2UgaXQgdGFrZXMgYSBs
b25nIHRpbWUsIGJ1dCBsZWZ0IGZvciBwb3N0ZXJpdHkKLQotICAgICAgICAvL2dsVXNlUHJvZ3Jh
bShtUHJvZ3JhbSk7Ci0gICAgICAgIC8vZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1BdHRyaWJMb2Nh
dGlvbiwgMSwgR0xfRkxPQVQsIEdMX0ZBTFNFLCA0LCBOVUxMKTsKLSAgICAgICAgLy9nbEVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KG1BdHRyaWJMb2NhdGlvbik7Ci0gICAgICAgIC8vZ2xCaW5kQnVm
ZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7Ci0gICAgICAgIC8vZHJhd1F1YWQobVByb2dyYW0sICJw
b3NpdGlvbiIsIDAuNWYpOwotICAgICAgICAvL3N3YXBCdWZmZXJzKCk7Ci0KLSAgICAgICAgLy8v
LyBEcmF3IG9wZXJhdGlvbnMgY2FuIGFsc28gZ2VuZXJhdGUgb3V0LW9mLW1lbW9yeSwgd2hpY2gg
aXMgaW4tc3BlYwotICAgICAgICAvL2Vycm9yID0gZ2xHZXRFcnJvcigpOwotICAgICAgICAvL2lm
IChlcnJvciA9PSBHTF9OT19FUlJPUikKLSAgICAgICAgLy97Ci0gICAgICAgIC8vICAgIEdMaW50
IHZpZXdwb3J0U2l6ZVs0XTsKLSAgICAgICAgLy8gICAgZ2xHZXRJbnRlZ2VydihHTF9WSUVXUE9S
VCwgdmlld3BvcnRTaXplKTsKLQotICAgICAgICAvLyAgICBHTGludCBtaWRQaXhlbFggPSAodmll
d3BvcnRTaXplWzBdICsgdmlld3BvcnRTaXplWzJdKSAvIDI7Ci0gICAgICAgIC8vICAgIEdMaW50
IG1pZFBpeGVsWSA9ICh2aWV3cG9ydFNpemVbMV0gKyB2aWV3cG9ydFNpemVbM10pIC8gMjsKLQot
ICAgICAgICAvLyAgICBFWFBFQ1RfUElYRUxfRVEobWlkUGl4ZWxYLCBtaWRQaXhlbFksIDI1NSwg
MCwgMCwgMjU1KTsKLSAgICAgICAgLy99Ci0gICAgICAgIC8vZWxzZQotICAgICAgICAvL3sKLSAg
ICAgICAgLy8gICAgRVhQRUNUX0VRKEdMX09VVF9PRl9NRU1PUlksIGVycm9yKTsKLSAgICAgICAg
Ly99Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xf
T1VUX09GX01FTU9SWSwgZXJyb3IpOwotICAgIH0KLQotICAgIGRlbGV0ZVtdIGRhdGE7Ci19Ci0K
LS8vIEludGVybmFsbHkgaW4gRDNELCB3ZSBwcm9tb3RlIGR5bmFtaWMgZGF0YSB0byBzdGF0aWMg
YWZ0ZXIgbWFueSBkcmF3IGxvb3BzLiBUaGlzIGNvZGUgdGVzdHMKLS8vIHBhdGguCi1URVNUX1Ao
QnVmZmVyRGF0YVRlc3QsIFJlcGVhdGVkRHJhd1dpdGhEeW5hbWljKQotewotICAgIHN0ZDo6dmVj
dG9yPEdMZmxvYXQ+IGRhdGE7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxNjsgKytpKQotICAg
IHsKLSAgICAgICAgZGF0YS5wdXNoX2JhY2soc3RhdGljX2Nhc3Q8R0xmbG9hdD4oaSkpOwotICAg
IH0KLQotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FS
UkFZX0JVRkZFUiwgbUJ1ZmZlcik7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwg
c2l6ZW9mKEdMZmxvYXQpICogZGF0YS5zaXplKCksIGRhdGEuZGF0YSgpLCBHTF9EWU5BTUlDX0RS
QVcpOwotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtQXR0cmliTG9jYXRpb24sIDEsIEdMX0ZM
T0FULCBHTF9GQUxTRSwgMCwgbnVsbHB0cik7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JV
RkZFUiwgMCk7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtQXR0cmliTG9jYXRpb24p
OwotCi0gICAgZm9yIChpbnQgZHJhd0NvdW50ID0gMDsgZHJhd0NvdW50IDwgNDA7ICsrZHJhd0Nv
dW50KQotICAgIHsKLSAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYp
OwotICAgIH0KLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi1jbGFzcyBJbmRleGVk
QnVmZmVyQ29weVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBJ
bmRleGVkQnVmZmVyQ29weVRlc3QoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTYp
OwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTYpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRz
KDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0Js
dWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgICAgIHNldENv
bmZpZ0RlcHRoQml0cygyNCk7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgY29uc3QgY2hhciAq
IHZzU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBhdHRyaWJ1
dGUgdmVjMyBpbl9hdHRyaWI7Ci0gICAgICAgICAgICB2YXJ5aW5nIHZlYzMgdl9hdHRyaWI7Ci0g
ICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZf
YXR0cmliID0gaW5fYXR0cmliOwotICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgw
LjAsIDAuMCwgMC41LCAxLjApOwotICAgICAgICAgICAgICAgIGdsX1BvaW50U2l6ZSA9IDEwMC4w
OwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIGNvbnN0IGNoYXIgKiBmc1Nv
dXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7Ci0gICAgICAgICAgICB2YXJ5aW5nIHZlYzMgdl9hdHRyaWI7Ci0gICAgICAg
ICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQodl9hdHRyaWIsIDEpOwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0g
ICAgICAgIGdsR2VuQnVmZmVycygyLCBtQnVmZmVycyk7Ci0gICAgICAgIEFTU0VSVF9ORShtQnVm
ZmVyc1swXSwgMFUpOwotICAgICAgICBBU1NFUlRfTkUobUJ1ZmZlcnNbMV0sIDBVKTsKLQotICAg
ICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1FbGVtZW50QnVmZmVyKTsKLSAgICAgICAgQVNTRVJUX05F
KG1FbGVtZW50QnVmZmVyLCAwVSk7Ci0KLSAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3Jh
bSh2c1NvdXJjZSwgZnNTb3VyY2UpOwotICAgICAgICBBU1NFUlRfTkUobVByb2dyYW0sIDBVKTsK
LQotICAgICAgICBtQXR0cmliTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFt
LCAiaW5fYXR0cmliIik7Ci0gICAgICAgIEFTU0VSVF9ORShtQXR0cmliTG9jYXRpb24sIC0xKTsK
LQotICAgICAgICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7Ci0gICAgICAgIGdsRGlzYWJsZShH
TF9ERVBUSF9URVNUKTsKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLQot
ICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3du
KCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlQnVmZmVycygyLCBtQnVmZmVycyk7
Ci0gICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbUVsZW1lbnRCdWZmZXIpOwotICAgICAgICBn
bERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24o
KTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbUJ1ZmZlcnNbMl07Ci0gICAgR0x1aW50IG1FbGVtZW50
QnVmZmVyOwotICAgIEdMdWludCBtUHJvZ3JhbTsKLSAgICBHTGludCBtQXR0cmliTG9jYXRpb247
Ci19OwotCi0vLyBUaGUgZm9sbG93aW5nIHRlc3QgY292ZXJzIGFuIEFOR0xFIGJ1ZyB3aGVyZSBv
dXIgaW5kZXggcmFuZ2VzCi0vLyB3ZXJlbid0IHVwZGF0ZWQgZnJvbSBDb3B5QnVmZmVyU3ViRGF0
YSBjYWxscwotLy8gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmdsZXByb2plY3QvaXNzdWVz
L2RldGFpbD9pZD03MDkKLVRFU1RfUChJbmRleGVkQnVmZmVyQ29weVRlc3QsIEluZGV4UmFuZ2VC
dWcpCi17Ci0gICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGZhaWxz
IG9uIEFNRCBPcGVuR0wgKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTI5MSkKLSAgICBpZiAoSXNBTUQo
KSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BF
TkdMX0FOR0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9u
IEFNRCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICB1bnNpZ25lZCBjaGFyIHZlcnRleERhdGFbXSA9IHsgMjU1LCAwLCAwLCAwLCAwLCAwIH07Ci0g
ICAgdW5zaWduZWQgaW50IGluZGV4RGF0YVtdID0geyAwLCAxIH07Ci0KLSAgICBnbEJpbmRCdWZm
ZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVyc1swXSk7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX0FS
UkFZX0JVRkZFUiwgc2l6ZW9mKGNoYXIpICogNiwgdmVydGV4RGF0YSwgR0xfU1RBVElDX0RSQVcp
OwotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50
ZXIobUF0dHJpYkxvY2F0aW9uLCAzLCBHTF9VTlNJR05FRF9CWVRFLCBHTF9UUlVFLCAzLCBOVUxM
KTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1BdHRyaWJMb2NhdGlvbik7Ci0KLSAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FS
UkFZX0JVRkZFUiwgbUVsZW1lbnRCdWZmZXIpOwotICAgIGdsQnVmZmVyRGF0YShHTF9FTEVNRU5U
X0FSUkFZX0JVRkZFUiwgc2l6ZW9mKGludCkgKiAxLCBpbmRleERhdGEsIEdMX1NUQVRJQ19EUkFX
KTsKLQotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKLQotICAgIGdsRHJhd0VsZW1lbnRzKEdMX1BPSU5UUywgMSwgR0xfVU5TSUdORURfSU5U
LCBOVUxMKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9QSVhFTF9F
USgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfQ09QWV9SRUFE
X0JVRkZFUiwgbUJ1ZmZlcnNbMV0pOwotICAgIGdsQnVmZmVyRGF0YShHTF9DT1BZX1JFQURfQlVG
RkVSLCA0LCAmaW5kZXhEYXRhWzFdLCBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICBnbEJpbmRCdWZm
ZXIoR0xfQ09QWV9XUklURV9CVUZGRVIsIG1FbGVtZW50QnVmZmVyKTsKLQotICAgIGdsQ29weUJ1
ZmZlclN1YkRhdGEoR0xfQ09QWV9SRUFEX0JVRkZFUiwgR0xfQ09QWV9XUklURV9CVUZGRVIsIDAs
IDAsIHNpemVvZihpbnQpKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xD
bGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwg
MCwgMCwgMCk7Ci0KLSAgICB1bnNpZ25lZCBjaGFyIG5ld0RhdGFbXSA9IHsgMCwgMjU1LCAwIH07
Ci0gICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgMywgMywgbmV3RGF0YSk7Ci0K
LSAgICBnbERyYXdFbGVtZW50cyhHTF9QT0lOVFMsIDEsIEdMX1VOU0lHTkVEX0lOVCwgTlVMTCk7
Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwg
MCwgMjU1LCAwLCAyNTUpOwotfQotCi1jbGFzcyBCdWZmZXJEYXRhVGVzdEVTMyA6IHB1YmxpYyBC
dWZmZXJEYXRhVGVzdAotewotfTsKLQotLy8gVGhlIGZvbGxvd2luZyB0ZXN0IGNvdmVycyBhbiBB
TkdMRSBidWcgd2hlcmUgdGhlIGJ1ZmZlciBzdG9yYWdlCi0vLyBpcyBub3QgcmVzaXplZCBieSBC
dWZmZXIxMTo6Z2V0TGF0ZXN0QnVmZmVyU3RvcmFnZSB3aGVuIG5lZWRlZC4KLS8vIGh0dHBzOi8v
Y29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0L2lzc3Vlcy9kZXRhaWw/aWQ9ODk3Ci1URVNU
X1AoQnVmZmVyRGF0YVRlc3RFUzMsIEJ1ZmZlclJlc2l6aW5nKQotewotICAgIGdsQmluZEJ1ZmZl
cihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXIpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgLy8gQWxsb2NhdGUgYSBidWZmZXIgd2l0aCBvbmUgYnl0ZQotICAgIHVpbnQ4X3Qgc2lu
Z2xlQnl0ZVtdID0geyAweGFhIH07Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwg
MSwgc2luZ2xlQnl0ZSwgR0xfU1RBVElDX0RSQVcpOwotCi0gICAgLy8gUmVzaXplIHRoZSBidWZm
ZXIKLSAgICAvLyBUbyB0cmlnZ2VyIHRoZSBidWcsIHRoZSBidWZmZXIgbmVlZCB0byBiZSBiaWcg
ZW5vdWdoIGJlY2F1c2Ugc29tZSBoYXJkd2FyZSBjb3B5IGJ1ZmZlcnMKLSAgICAvLyBieSBjaHVu
a3Mgb2YgcGFnZXMgaW5zdGVhZCBvZiB0aGUgbWluaW11bSBudW1iZXIgb2YgYnl0ZXMgbmVlZWRl
ZC4KLSAgICBjb25zdCBzaXplX3QgbnVtQnl0ZXMgPSA0MDk2KjQ7Ci0gICAgZ2xCdWZmZXJEYXRh
KEdMX0FSUkFZX0JVRkZFUiwgbnVtQnl0ZXMsIE5VTEwsIEdMX1NUQVRJQ19EUkFXKTsKLQotICAg
IC8vIENvcHkgdGhlIG9yaWdpbmFsIGRhdGEgdG8gdGhlIGJ1ZmZlcgotICAgIHVpbnQ4X3Qgc3Jj
Qnl0ZXNbbnVtQnl0ZXNdOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQnl0ZXM7ICsr
aSkKLSAgICB7Ci0gICAgICAgIHNyY0J5dGVzW2ldID0gc3RhdGljX2Nhc3Q8dWludDhfdD4oaSk7
Ci0gICAgfQotCi0gICAgdm9pZCAqZGVzdCA9IGdsTWFwQnVmZmVyUmFuZ2UoR0xfQVJSQVlfQlVG
RkVSLCAwLCBudW1CeXRlcywgR0xfTUFQX1dSSVRFX0JJVCB8IEdMX01BUF9JTlZBTElEQVRFX0JV
RkZFUl9CSVQpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBtZW1jcHkoZGVz
dCwgc3JjQnl0ZXMsIG51bUJ5dGVzKTsKLSAgICBnbFVubWFwQnVmZmVyKEdMX0FSUkFZX0JVRkZF
Uik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIENyZWF0ZSBhIG5ldyBi
dWZmZXIgYW5kIGNvcHkgdGhlIGRhdGEgdG8gaXQKLSAgICBHTHVpbnQgcmVhZEJ1ZmZlcjsKLSAg
ICBnbEdlbkJ1ZmZlcnMoMSwgJnJlYWRCdWZmZXIpOwotICAgIGdsQmluZEJ1ZmZlcihHTF9DT1BZ
X1dSSVRFX0JVRkZFUiwgcmVhZEJ1ZmZlcik7Ci0gICAgdWludDhfdCB6ZXJvc1tudW1CeXRlc107
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1CeXRlczsgKytpKQotICAgIHsKLSAgICAg
ICAgemVyb3NbaV0gPSAwOwotICAgIH0KLSAgICBnbEJ1ZmZlckRhdGEoR0xfQ09QWV9XUklURV9C
VUZGRVIsIG51bUJ5dGVzLCB6ZXJvcywgR0xfU1RBVElDX0RSQVcpOwotICAgIGdsQ29weUJ1ZmZl
clN1YkRhdGEoR0xfQVJSQVlfQlVGRkVSLCBHTF9DT1BZX1dSSVRFX0JVRkZFUiwgMCwgMCwgbnVt
Qnl0ZXMpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBSZWFkIGJhY2sg
dGhlIGRhdGEgYW5kIGNvbXBhcmUgaXQgdG8gdGhlIG9yaWdpbmFsCi0gICAgdWludDhfdCAqZGF0
YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGdsTWFwQnVmZmVyUmFuZ2UoR0xfQ09QWV9X
UklURV9CVUZGRVIsIDAsIG51bUJ5dGVzLCBHTF9NQVBfUkVBRF9CSVQpKTsKLQotICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1CeXRlczsg
KytpKQotICAgIHsKLSAgICAgICAgRVhQRUNUX0VRKHNyY0J5dGVzW2ldLCBkYXRhW2ldKTsKLSAg
ICB9Ci0gICAgZ2xVbm1hcEJ1ZmZlcihHTF9DT1BZX1dSSVRFX0JVRkZFUik7Ci0KLSAgICBnbERl
bGV0ZUJ1ZmZlcnMoMSwgJnJlYWRCdWZmZXIpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3
aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91
bGQgYmUgcnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKEJ1ZmZlckRhdGFUZXN0
LCBFUzJfRDNEOSgpLCBFUzJfRDNEMTEoKSwgRVMyX09QRU5HTCgpLCBFUzJfT1BFTkdMRVMoKSk7
Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKEJ1ZmZlckRhdGFUZXN0RVMzLCBFUzNfRDNEMTEoKSwg
RVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKElu
ZGV4ZWRCdWZmZXJDb3B5VGVzdCwgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5H
TEVTKCkpOwotCi0jaWZkZWYgX1dJTjY0Ci0KLS8vIFRlc3QgYSBidWcgd2hlcmUgYW4gaW50ZWdl
ciBvdmVyZmxvdyBidWcgY291bGQgdHJpZ2dlciBhIGNyYXNoIGluIEQzRC4KLS8vIFRoZSB0ZXN0
IHVzZXMgOCBidWZmZXJzIHdpdGggYSBzaXplIGp1c3QgdW5kZXIgMHgyMDAwMDAwIHRvIG92ZXJm
bG93IG1heCB1aW50Ci0vLyAod2l0aCB0aGUgaW50ZXJuYWwgRDNEIHJvdW5kaW5nIHRvIDE2LWJ5
dGUgdmFsdWVzKSBhbmQgdHJpZ2dlciB0aGUgYnVnLgotLy8gT25seSBoYW5kbGUgdGhpcyBidWcg
b24gNjQtYml0IFdpbmRvd3MgZm9yIG5vdy4gSGFyZGVyIHRvIHJlcHJvIG9uIDMyLWJpdC4KLWNs
YXNzIEJ1ZmZlckRhdGFPdmVyZmxvd1Rlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3Rl
Y3RlZDoKLSAgICBCdWZmZXJEYXRhT3ZlcmZsb3dUZXN0KCkKLSAgICAgICAgOiBtUHJvZ3JhbSgw
KQotICAgIHsKLSAgICB9Ci0KLSAgICB+QnVmZmVyRGF0YU92ZXJmbG93VGVzdCgpCi0gICAgewot
ICAgICAgICBpZiAoIW1CdWZmZXJzLmVtcHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGds
RGVsZXRlQnVmZmVycyhzdGF0aWNfY2FzdDxHTHNpemVpPihtQnVmZmVycy5zaXplKCkpLCAmbUJ1
ZmZlcnNbMF0pOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtUHJvZ3JhbSAhPSAwdSkKLSAgICAg
ICAgewotICAgICAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbUJ1ZmZlcnM7Ci0gICAgR0x1aW50IG1Q
cm9ncmFtOwotfTsKLQotLy8gU2VlIGRlc2NyaXB0aW9uIGFib3ZlLgotVEVTVF9QKEJ1ZmZlckRh
dGFPdmVyZmxvd1Rlc3QsIFZlcnRleEJ1ZmZlckludGVnZXJPdmVyZmxvdykKLXsKLSAgICAvLyBU
aGVzZSB2YWx1ZXMgYXJlIHNwZWNpYWwsIHRvIHRyaWdnZXIgdGhlIHJvdW5kaW5nIGJ1Zy4KLSAg
ICB1bnNpZ25lZCBpbnQgbnVtSXRlbXMgPSAweDdGRkZGRkU7Ci0gICAgR0xzaXplaSBidWZmZXJD
bnQgPSA4OwotCi0gICAgbUJ1ZmZlcnMucmVzaXplKGJ1ZmZlckNudCk7Ci0KLSAgICBzdGQ6OnN0
cmluZ3N0cmVhbSB2ZXJ0ZXhTaGFkZXJTdHI7Ci0KLSAgICBmb3IgKEdMc2l6ZWkgYnVmZmVySW5k
ZXggPSAwOyBidWZmZXJJbmRleCA8IGJ1ZmZlckNudDsgKytidWZmZXJJbmRleCkKLSAgICB7Ci0g
ICAgICAgIHZlcnRleFNoYWRlclN0ciA8PCAiYXR0cmlidXRlIGZsb2F0IGF0dHJpYiIgPDwgYnVm
ZmVySW5kZXggPDwgIjtcbiI7Ci0gICAgfQotCi0gICAgdmVydGV4U2hhZGVyU3RyIDw8ICJhdHRy
aWJ1dGUgdmVjMiBwb3NpdGlvbjtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgInZhcnlpbmcg
ZmxvYXQgdl9hdHRyaWI7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlv
biwgMCwgMSk7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICIgIHZfYXR0cmliID0gMC4wO1xu
IjsKLQotICAgIGZvciAoR0xzaXplaSBidWZmZXJJbmRleCA9IDA7IGJ1ZmZlckluZGV4IDwgYnVm
ZmVyQ250OyArK2J1ZmZlckluZGV4KQotICAgIHsKLSAgICAgICAgdmVydGV4U2hhZGVyU3RyIDw8
ICJ2X2F0dHJpYiArPSBhdHRyaWIiIDw8IGJ1ZmZlckluZGV4IDw8ICI7XG4iOwotICAgIH0KLQot
ICAgIHZlcnRleFNoYWRlclN0ciA8PCAifSI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJh
Z21lbnRTaGFkZXIgPQotICAgICAgICAidmFyeWluZyBoaWdocCBmbG9hdCB2X2F0dHJpYjtcbiIK
LSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVj
NCh2X2F0dHJpYiwgMCwgMCwgMSk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIG1Qcm9ncmFtID0g
Q29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU3RyLnN0cigpLCBmcmFnbWVudFNoYWRlcik7Ci0g
ICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7Ci0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsK
LQotICAgIGdsR2VuQnVmZmVycyhidWZmZXJDbnQsICZtQnVmZmVyc1swXSk7Ci0KLSAgICBzdGQ6
OnZlY3RvcjxHTGZsb2F0PiBkYXRhKG51bUl0ZW1zLCAxLjBmKTsKLQotICAgIGZvciAoR0xzaXpl
aSBidWZmZXJJbmRleCA9IDA7IGJ1ZmZlckluZGV4IDwgYnVmZmVyQ250OyArK2J1ZmZlckluZGV4
KQotICAgIHsKLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcnNb
YnVmZmVySW5kZXhdKTsKLSAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgbnVt
SXRlbXMgKiBzaXplb2YoZmxvYXQpLCAmZGF0YVswXSwgR0xfRFlOQU1JQ19EUkFXKTsKLQotICAg
ICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBhdHRyaWJOYW1lU3RyOwotICAgICAgICBhdHRyaWJOYW1l
U3RyIDw8ICJhdHRyaWIiIDw8IGJ1ZmZlckluZGV4OwotCi0gICAgICAgIEdMaW50IGF0dHJpYkxv
Y2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgYXR0cmliTmFtZVN0ci5zdHIo
KS5jX3N0cigpKTsKLSAgICAgICAgQVNTRVJUX05FKC0xLCBhdHRyaWJMb2NhdGlvbik7Ci0KLSAg
ICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGF0dHJpYkxvY2F0aW9uLCAxLCBHTF9GTE9BVCwg
R0xfRkFMU0UsIDQsIG51bGxwdHIpOwotICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KGF0dHJpYkxvY2F0aW9uKTsKLSAgICB9Ci0KLSAgICBHTGludCBwb3NpdGlvbkxvY2F0aW9uID0g
Z2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInBvc2l0aW9uIik7Ci0gICAgQVNTRVJUX05F
KC0xLCBwb3NpdGlvbkxvY2F0aW9uKTsKLSAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShw
b3NpdGlvbkxvY2F0aW9uKTsKLSAgICBnbFZlcnRleEF0dHJpYjJmKHBvc2l0aW9uTG9jYXRpb24s
IDEuMGYsIDEuMGYpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgZ2xEcmF3QXJy
YXlzKEdMX1RSSUFOR0xFUywgMCwgbnVtSXRlbXMpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9P
VVRfT0ZfTUVNT1JZKTsKLX0KLQotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChCdWZmZXJEYXRhT3Zl
cmZsb3dUZXN0LCBFUzNfRDNEMTEoKSk7Ci0KLSNlbmRpZiAgLy8gX1dJTjY0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQnVpbHRpblZhcmlh
YmxlVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
QnVpbHRpblZhcmlhYmxlVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNi
YjM5OWRkNmU4ZGNkNTVjMjdmMDA3ZTU5YWExYzQ1NDA3ZTUxOGEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2dsX3Rlc3RzL0J1aWx0aW5WYXJpYWJsZVRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMjA5ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBCdWlsdGluVmFyaWFibGVUZXN0OgotLy8gICBU
ZXN0cyB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIGJ1aWx0aW4gR0xTTCB2YXJpYWJsZXMuCi0vLwot
Ci0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFu
Z2xlOwotCi1jbGFzcyBCdWlsdGluVmFyaWFibGVWZXJ0ZXhJZFRlc3QgOiBwdWJsaWMgQU5HTEVU
ZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBCdWlsdGluVmFyaWFibGVWZXJ0ZXhJZFRlc3QoKQot
ICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoNjQpOwotICAgICAgICBzZXRXaW5kb3dIZWln
aHQoNjQpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdH
cmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRD
b25maWdBbHBoYUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7Ci0gICAg
fQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6
OlNldFVwKCk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdnNTb3VyY2UgPQotICAgICAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBm
bG9hdDtcbiIKLSAgICAgICAgICAgICJpbiB2ZWM0IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAg
ImluIGludCBleHBlY3RlZElEOyIKLSAgICAgICAgICAgICJvdXQgdmVjNCBjb2xvcjtcbiIKLSAg
ICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAgICAg
IntcbiIKLSAgICAgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIKLSAgICAg
ICAgICAgICIgICAgY29sb3IgPSB2ZWM0KGdsX1ZlcnRleElEICE9IGV4cGVjdGVkSUQsIGdsX1Zl
cnRleElEID09IGV4cGVjdGVkSUQsIDAuMCwgMS4wKTsiCi0gICAgICAgICAgICAifVxuIjsKLQot
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmc1NvdXJjZSA9Ci0gICAgICAgICAgICAiI3ZlcnNp
b24gMzAwIGVzXG4iCi0gICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgotICAg
ICAgICAgICAgImluIHZlYzQgY29sb3I7XG4iCi0gICAgICAgICAgICAib3V0IHZlYzQgZnJhZ0Nv
bG9yO1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgICAie1xuIgot
ICAgICAgICAgICAgIiAgICBmcmFnQ29sb3IgPSBjb2xvcjtcbiIKLSAgICAgICAgICAgICJ9XG4i
OwotCi0gICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnNTb3VyY2UsIGZzU291cmNl
KTsKLSAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7Ci0KLSAgICAgICAgbVBvc2l0aW9u
TG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAicG9zaXRpb24iKTsKLSAg
ICAgICAgQVNTRVJUX05FKC0xLCBtUG9zaXRpb25Mb2NhdGlvbik7Ci0gICAgICAgIG1FeHBlY3Rl
ZElkTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiZXhwZWN0ZWRJRCIp
OwotICAgICAgICBBU1NFUlRfTkUoLTEsIG1FeHBlY3RlZElkTG9jYXRpb24pOwotCi0gICAgICAg
IHN0YXRpYyBjb25zdCBmbG9hdCBwb3NpdGlvbnNbXSA9Ci0gICAgICAgIHsKLSAgICAgICAgICAg
ICAwLjUsICAwLjUsCi0gICAgICAgICAgICAtMC41LCAgMC41LAotICAgICAgICAgICAgIDAuNSwg
LTAuNSwKLSAgICAgICAgICAgIC0wLjUsIC0wLjUKLSAgICAgICAgfTsKLSAgICAgICAgZ2xHZW5C
dWZmZXJzKDEsICZtUG9zaXRpb25CdWZmZXIpOwotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJS
QVlfQlVGRkVSLCBtUG9zaXRpb25CdWZmZXIpOwotICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfQVJS
QVlfQlVGRkVSLCBzaXplb2YocG9zaXRpb25zKSwgcG9zaXRpb25zLCBHTF9TVEFUSUNfRFJBVyk7
Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFy
RG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1Qb3Np
dGlvbkJ1ZmZlcik7Ci0gICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbUV4cGVjdGVkSWRCdWZm
ZXIpOwotICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1JbmRleEJ1ZmZlcik7Ci0gICAgICAg
IGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93
bigpOwotICAgIH0KLQotICAgIC8vIFJlbmRlcnMgYSBwcmltaXRpdmUgdXNpbmcgdGhlIHNwZWNp
ZmllZCBtb2RlLCBlYWNoIHZlcnRleCBjb2xvciB3aWxsCi0gICAgLy8gYmUgZ3JlZW4gaWYgZ2xf
VmVydGV4SUQgaXMgY29ycmVjdCwgcmVkIG90aGVyd2lzZS4KLSAgICB2b2lkIHJ1blRlc3QoR0x1
aW50IGRyYXdNb2RlLCBjb25zdCBzdGQ6OnZlY3RvcjxHTGludD4gJmluZGljZXMsIGludCBjb3Vu
dCkKLSAgICB7Ci0gICAgICAgIGdsQ2xlYXJDb2xvcigwLjAsIDAuMCwgMC4wLCAxLjApOwotICAg
ICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgICAgIGdsR2VuQnVmZmVy
cygxLCAmbUluZGV4QnVmZmVyKTsKLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJS
QVlfQlVGRkVSLCBtSW5kZXhCdWZmZXIpOwotICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIHNpemVvZihHTGludCkgKiBpbmRpY2VzLnNpemUoKSwgaW5kaWNlcy5k
YXRhKCksCi0gICAgICAgICAgICAgICAgICAgICBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICAgICAg
c3RkOjp2ZWN0b3I8R0xpbnQ+IGV4cGVjdGVkSWRzID0gbWFrZVJhbmdlKGNvdW50KTsKLQotICAg
ICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1FeHBlY3RlZElkQnVmZmVyKTsKLSAgICAgICAgZ2xCaW5k
QnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUV4cGVjdGVkSWRCdWZmZXIpOwotICAgICAgICBnbEJ1
ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBzaXplb2YoR0xpbnQpICogZXhwZWN0ZWRJZHMuc2l6
ZSgpLCBleHBlY3RlZElkcy5kYXRhKCksCi0gICAgICAgICAgICAgICAgICAgICBHTF9TVEFUSUNf
RFJBVyk7Ci0KLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVBvc2l0aW9u
QnVmZmVyKTsKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1Qb3NpdGlvbkxvY2F0aW9u
LCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIDApOwotICAgICAgICBnbEVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KG1Qb3NpdGlvbkxvY2F0aW9uKTsKLQotICAgICAgICBnbEJpbmRCdWZmZXIoR0xf
QVJSQVlfQlVGRkVSLCBtRXhwZWN0ZWRJZEJ1ZmZlcik7Ci0gICAgICAgIGdsVmVydGV4QXR0cmli
SVBvaW50ZXIobUV4cGVjdGVkSWRMb2NhdGlvbiwgMSwgR0xfSU5ULCAwLCAwKTsKLSAgICAgICAg
Z2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtRXhwZWN0ZWRJZExvY2F0aW9uKTsKLQotICAgICAg
ICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIG1JbmRleEJ1ZmZlcik7Ci0gICAgICAgIGdsRHJhd0VsZW1lbnRzKGRy
YXdNb2RlLCBjb3VudCwgR0xfVU5TSUdORURfSU5ULCAwKTsKLQotICAgICAgICBzdGQ6OnZlY3Rv
cjxHTENvbG9yPiBwaXhlbHMoZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgpKTsK
LSAgICAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hl
aWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICAgICAg
cGl4ZWxzLmRhdGEoKSk7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAg
ICAgY29uc3QgR0xDb2xvciBncmVlbigwLCAyNTUsIDAsIDI1NSk7Ci0gICAgICAgIGNvbnN0IEdM
Q29sb3IgYmxhY2soMCwgMCwgMCwgMjU1KTsKLQotICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJnBp
eGVsIDogcGl4ZWxzKQotICAgICAgICB7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRShwaXhlbCA9
PSBncmVlbiB8fCBwaXhlbCA9PSBibGFjayk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGQ6
OnZlY3RvcjxHTGludD4gbWFrZVJhbmdlKGludCBuKSBjb25zdAotICAgIHsKLSAgICAgICAgc3Rk
Ojp2ZWN0b3I8R0xpbnQ+IHJlc3VsdDsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBp
KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soaSk7Ci0gICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIEdMdWludCBtUG9zaXRp
b25CdWZmZXIgICA9IDA7Ci0gICAgR0x1aW50IG1FeHBlY3RlZElkQnVmZmVyID0gMDsKLSAgICBH
THVpbnQgbUluZGV4QnVmZmVyICAgICAgPSAwOwotCi0gICAgR0x1aW50IG1Qcm9ncmFtICAgICAg
ICAgICA9IDA7Ci0gICAgR0xpbnQgbVBvc2l0aW9uTG9jYXRpb24gICA9IC0xOwotICAgIEdMaW50
IG1FeHBlY3RlZElkTG9jYXRpb24gPSAtMTsKLX07Ci0KLS8vIFRlc3QgZ2xfVmVydGV4SUQgd2hl
biByZW5kZXJpbmcgcG9pbnRzCi1URVNUX1AoQnVpbHRpblZhcmlhYmxlVmVydGV4SWRUZXN0LCBQ
b2ludHMpCi17Ci0gICAgcnVuVGVzdChHTF9QT0lOVFMsIG1ha2VSYW5nZSg0KSwgNCk7Ci19Ci0K
LS8vIFRlc3QgZ2xfVmVydGV4SUQgd2hlbiByZW5kZXJpbmcgbGluZSBzdHJpcHMKLVRFU1RfUChC
dWlsdGluVmFyaWFibGVWZXJ0ZXhJZFRlc3QsIExpbmVTdHJpcCkKLXsKLSAgICBydW5UZXN0KEdM
X0xJTkVfU1RSSVAsIG1ha2VSYW5nZSg0KSwgNCk7Ci19Ci0KLS8vIFRlc3QgZ2xfVmVydGV4SUQg
d2hlbiByZW5kZXJpbmcgbGluZSBsb29wcwotVEVTVF9QKEJ1aWx0aW5WYXJpYWJsZVZlcnRleElk
VGVzdCwgTGluZUxvb3ApCi17Ci0gICAgcnVuVGVzdChHTF9MSU5FX0xPT1AsIG1ha2VSYW5nZSg0
KSwgNCk7Ci19Ci0KLS8vIFRlc3QgZ2xfVmVydGV4SUQgd2hlbiByZW5kZXJpbmcgbGluZXMKLVRF
U1RfUChCdWlsdGluVmFyaWFibGVWZXJ0ZXhJZFRlc3QsIExpbmVzKQotewotICAgIHJ1blRlc3Qo
R0xfTElORVMsIG1ha2VSYW5nZSg0KSwgNCk7Ci19Ci0KLS8vIFRlc3QgZ2xfVmVydGV4SUQgd2hl
biByZW5kZXJpbmcgdHJpYW5nbGUgc3RyaXBzCi1URVNUX1AoQnVpbHRpblZhcmlhYmxlVmVydGV4
SWRUZXN0LCBUcmlhbmdsZVN0cmlwKQotewotICAgIHJ1blRlc3QoR0xfVFJJQU5HTEVfU1RSSVAs
IG1ha2VSYW5nZSg0KSwgNCk7Ci19Ci0KLS8vIFRlc3QgZ2xfVmVydGV4SUQgd2hlbiByZW5kZXJp
bmcgdHJpYW5nbGUgZmFucwotVEVTVF9QKEJ1aWx0aW5WYXJpYWJsZVZlcnRleElkVGVzdCwgVHJp
YW5nbGVGYW4pCi17Ci0gICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IGluZGljZXM7Ci0gICAgaW5kaWNl
cy5wdXNoX2JhY2soMCk7Ci0gICAgaW5kaWNlcy5wdXNoX2JhY2soMSk7Ci0gICAgaW5kaWNlcy5w
dXNoX2JhY2soMyk7Ci0gICAgaW5kaWNlcy5wdXNoX2JhY2soMik7Ci0gICAgcnVuVGVzdChHTF9U
UklBTkdMRV9GQU4sIGluZGljZXMsIDQpOwotfQotCi0vLyBUZXN0IGdsX1ZlcnRleElEIHdoZW4g
cmVuZGVyaW5nIHRyaWFuZ2xlcwotVEVTVF9QKEJ1aWx0aW5WYXJpYWJsZVZlcnRleElkVGVzdCwg
VHJpYW5nbGVzKQotewotICAgIHN0ZDo6dmVjdG9yPEdMaW50PiBpbmRpY2VzOwotICAgIGluZGlj
ZXMucHVzaF9iYWNrKDApOwotICAgIGluZGljZXMucHVzaF9iYWNrKDEpOwotICAgIGluZGljZXMu
cHVzaF9iYWNrKDIpOwotICAgIGluZGljZXMucHVzaF9iYWNrKDEpOwotICAgIGluZGljZXMucHVz
aF9iYWNrKDIpOwotICAgIGluZGljZXMucHVzaF9iYWNrKDMpOwotICAgIHJ1blRlc3QoR0xfVFJJ
QU5HTEVTLCBpbmRpY2VzLCA2KTsKLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNv
bmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNp
b24pIHRoZXNlCi0vLyB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5U
SUFURV9URVNUKEJ1aWx0aW5WYXJpYWJsZVZlcnRleElkVGVzdCwgRVMzX0QzRDExKCksIEVTM19P
UEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NsZWFyVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ2xlYXJUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggODdjZTA0MWU2MjQxZmNkOWFhOWEzMGY2MTZhNDI4NzEzMTkyYmE4Yi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ2xlYXJUZXN0LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDQ4MSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAidGVzdF91dGlscy9B
TkdMRVRlc3QuaCIKLQotI2luY2x1ZGUgInJhbmRvbV91dGlscy5oIgotI2luY2x1ZGUgIlZlY3Rv
ci5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1WZWN0b3I0
IFJhbmRvbVZlYzQoaW50IHNlZWQsIGZsb2F0IG1pblZhbHVlLCBmbG9hdCBtYXhWYWx1ZSkKLXsK
LSAgICBSTkcgcm5nKHNlZWQpOwotICAgIHNyYW5kKHNlZWQpOwotICAgIHJldHVybiBWZWN0b3I0
KAotICAgICAgICBybmcucmFuZG9tRmxvYXRCZXR3ZWVuKG1pblZhbHVlLCBtYXhWYWx1ZSksIHJu
Zy5yYW5kb21GbG9hdEJldHdlZW4obWluVmFsdWUsIG1heFZhbHVlKSwKLSAgICAgICAgcm5nLnJh
bmRvbUZsb2F0QmV0d2VlbihtaW5WYWx1ZSwgbWF4VmFsdWUpLCBybmcucmFuZG9tRmxvYXRCZXR3
ZWVuKG1pblZhbHVlLCBtYXhWYWx1ZSkpOwotfQotCi1HTENvbG9yIFZlYzRUb0NvbG9yKGNvbnN0
IFZlY3RvcjQgJnZlYykKLXsKLSAgICBHTENvbG9yIGNvbG9yOwotICAgIGNvbG9yLlIgPSBzdGF0
aWNfY2FzdDx1aW50OF90Pih2ZWMueCAqIDI1NS4wZik7Ci0gICAgY29sb3IuRyA9IHN0YXRpY19j
YXN0PHVpbnQ4X3Q+KHZlYy55ICogMjU1LjBmKTsKLSAgICBjb2xvci5CID0gc3RhdGljX2Nhc3Q8
dWludDhfdD4odmVjLnogKiAyNTUuMGYpOwotICAgIGNvbG9yLkEgPSBzdGF0aWNfY2FzdDx1aW50
OF90Pih2ZWMudyAqIDI1NS4wZik7Ci0gICAgcmV0dXJuIGNvbG9yOwotfTsKLQotY2xhc3MgQ2xl
YXJUZXN0QmFzZSA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIENsZWFy
VGVzdEJhc2UoKSA6IG1Qcm9ncmFtKDApCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgx
MjgpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKLSAgICAgICAgc2V0Q29uZmlnUmVk
Qml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25m
aWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgICAgICBz
ZXRDb25maWdEZXB0aEJpdHMoMjQpOwotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIG1GQk9zLnJl
c2l6ZSgyLCAwKTsKLSAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMiwgbUZCT3MuZGF0YSgpKTsK
LQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJE
b3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7
Ci0KLSAgICAgICAgaWYgKCFtRkJPcy5lbXB0eSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBn
bERlbGV0ZUZyYW1lYnVmZmVycyhzdGF0aWNfY2FzdDxHTHNpemVpPihtRkJPcy5zaXplKCkpLCBt
RkJPcy5kYXRhKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFtVGV4dHVyZXMuZW1wdHko
KSkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xEZWxldGVUZXh0dXJlcyhzdGF0aWNfY2FzdDxH
THNpemVpPihtVGV4dHVyZXMuc2l6ZSgpKSwgbVRleHR1cmVzLmRhdGEoKSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXR1
cERlZmF1bHRQcm9ncmFtKCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRl
eFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJl
Y2lzaW9uIGhpZ2hwIGZsb2F0OwotICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247
Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQot
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9T
T1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwotCi0g
ICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGds
X0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgKTsKLQotICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRl
clNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgICAgICBBU1NFUlRfTkUoMHUsIG1Q
cm9ncmFtKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVByb2dyYW07Ci0gICAgc3RkOjp2ZWN0b3I8
R0x1aW50PiBtRkJPczsKLSAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1UZXh0dXJlczsKLX07Ci0K
LWNsYXNzIENsZWFyVGVzdCA6IHB1YmxpYyBDbGVhclRlc3RCYXNlIHt9OwotY2xhc3MgQ2xlYXJU
ZXN0RVMzIDogcHVibGljIENsZWFyVGVzdEJhc2Uge307Ci0KLS8vIFRlc3QgY2xlYXJpbmcgdGhl
IGRlZmF1bHQgZnJhbWVidWZmZXIKLVRFU1RfUChDbGVhclRlc3QsIERlZmF1bHRGcmFtZWJ1ZmZl
cikKLXsKLSAgICBnbENsZWFyQ29sb3IoMC4yNWYsIDAuNWYsIDAuNWYsIDAuNWYpOwotICAgIGds
Q2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgRVhQRUNUX1BJWEVMX05FQVIoMCwgMCwg
NjQsIDEyOCwgMTI4LCAxMjgsIDEuMCk7Ci19Ci0KLS8vIFRlc3QgY2xlYXJpbmcgYSBSR0JBOCBG
cmFtZWJ1ZmZlcgotVEVTVF9QKENsZWFyVGVzdCwgUkdCQThGcmFtZWJ1ZmZlcikKLXsKLSAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCT3NbMF0pOwotCi0gICAgR0x1aW50
IHRleHR1cmU7Ci0gICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZSk7Ci0KLSAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhU
VVJFXzJELCAwLCBHTF9SR0JBLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwg
MCwgR0xfUkdCQSwKLSAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7
Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRU
QUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleHR1cmUsIDApOwotCi0gICAgZ2xDbGVhckNvbG9y
KDAuNWYsIDAuNWYsIDAuNWYsIDAuNWYpOwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJ
VCk7Ci0KLSAgICBFWFBFQ1RfUElYRUxfTkVBUigwLCAwLCAxMjgsIDEyOCwgMTI4LCAxMjgsIDEu
MCk7Ci19Ci0KLVRFU1RfUChDbGVhclRlc3QsIENsZWFySXNzdWUpCi17Ci0gICAgLy8gVE9ETyhn
ZW9mZmxhbmcpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGlzIGJyb2tlbiBvbiBJbnRlbCBPcGVuR0wK
LSAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBnbEVuYWJsZShHTF9ERVBUSF9URVNUKTsKLSAgICBnbERlcHRo
RnVuYyhHTF9MRVFVQUwpOwotCi0gICAgZ2xDbGVhckNvbG9yKDAuMCwgMS4wLCAwLjAsIDEuMCk7
Ci0gICAgZ2xDbGVhckRlcHRoZigwLjApOwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJ
VCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0K
LSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCT3NbMF0pOwotCi0gICAg
R0x1aW50IHJibzsKLSAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJnJibyk7Ci0gICAgZ2xCaW5k
UmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgcmJvKTsKLSAgICBnbFJlbmRlcmJ1ZmZlclN0
b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9SR0I1NjUsIDE2LCAxNik7Ci0KLSAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKLQotICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9SRU5ERVJCVUZGRVIsIHJibyk7Ci0KLSAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAwLjBmLCAw
LjBmLCAxLjBmKTsKLSAgICBnbENsZWFyRGVwdGhmKDEuMGYpOwotICAgIGdsQ2xlYXIoR0xfQ09M
T1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQpOwotCi0gICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7Ci0g
ICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7Ci0KLSAgICBzZXR1cERlZmF1bHRQ
cm9ncmFtKCk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0g
ICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDI1NSwgMCwgMjU1KTsKLX0KLQotLy8gUmVxdWly
ZXMgRVMzCi0vLyBUaGlzIHRlc3RzIGEgYnVnIHdoZXJlIGluIGEgbWFza2VkIGNsZWFyIHdoZW4g
Y2FsbGluZyAiQ2xlYXJCdWZmZXIiLCB3ZSB3b3VsZAotLy8gbWlzdGFrZW5seSBjbGVhciBldmVy
eSBjaGFubmVsIChpbmNsdWRpbmcgdGhlIG1hc2tlZC1vdXQgb25lcykKLVRFU1RfUChDbGVhclRl
c3RFUzMsIE1hc2tlZENsZWFyQnVmZmVyQnVnKQotewotICAgIHVuc2lnbmVkIGNoYXIgcGl4ZWxE
YXRhW10gPSB7IDI1NSwgMjU1LCAyNTUsIDI1NSB9OwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIG1GQk9zWzBdKTsKLQotICAgIEdMdWludCB0ZXh0dXJlc1syXTsKLSAg
ICBnbEdlblRleHR1cmVzKDIsICZ0ZXh0dXJlc1swXSk7Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIHRleHR1cmVzWzBdKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxE
YXRhKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZXNbMF0sIDApOwotCi0gICAgZ2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1sxXSk7Ci0gICAgZ2xUZXhJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsIHBpeGVsRGF0YSk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJV
RkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDEsIEdMX1RFWFRVUkVfMkQsIHRleHR1cmVzWzFdLCAw
KTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAw
LCAyNTUsIDI1NSwgMjU1LCAyNTUpOwotCi0gICAgZmxvYXQgY2xlYXJWYWx1ZVtdID0geyAwLCAw
LjVmLCAwLjVmLCAxLjBmIH07Ci0gICAgR0xlbnVtIGRyYXdCdWZmZXJzW10gPSB7IEdMX05PTkUs
IEdMX0NPTE9SX0FUVEFDSE1FTlQxIH07Ci0gICAgZ2xEcmF3QnVmZmVycygyLCBkcmF3QnVmZmVy
cyk7Ci0gICAgZ2xDb2xvck1hc2soR0xfVFJVRSwgR0xfVFJVRSwgR0xfRkFMU0UsIEdMX1RSVUUp
OwotICAgIGdsQ2xlYXJCdWZmZXJmdihHTF9DT0xPUiwgMSwgY2xlYXJWYWx1ZSk7Ci0KLSAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1LCAyNTUs
IDI1NSwgMjU1KTsKLQotICAgIGdsUmVhZEJ1ZmZlcihHTF9DT0xPUl9BVFRBQ0hNRU5UMSk7Ci0g
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBFWFBFQ1RfUElYRUxfTkVBUigwLCAwLCAw
LCAxMjcsIDI1NSwgMjU1LCAxKTsKLQotICAgIGdsRGVsZXRlVGV4dHVyZXMoMiwgdGV4dHVyZXMp
OwotfQotCi1URVNUX1AoQ2xlYXJUZXN0RVMzLCBCYWRGQk9TZXJpYWxCdWcpCi17Ci0gICAgLy8g
Rmlyc3QgbWFrZSBhIHNpbXBsZSBmcmFtZWJ1ZmZlciwgYW5kIGNsZWFyIGl0IHRvIGdyZWVuCi0g
ICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GQk9zWzBdKTsKLQotICAgIEdM
dWludCB0ZXh0dXJlc1syXTsKLSAgICBnbEdlblRleHR1cmVzKDIsICZ0ZXh0dXJlc1swXSk7Ci0K
LSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmVzWzBdKTsKLSAgICBnbFRl
eFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOCwgZ2V0V2luZG93V2lkdGgoKSwg
Z2V0V2luZG93SGVpZ2h0KCkpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVC
VUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1swXSwg
MCk7Ci0KLSAgICBHTGVudW0gZHJhd0J1ZmZlcnNbXSA9IHsgR0xfQ09MT1JfQVRUQUNITUVOVDAg
fTsKLSAgICBnbERyYXdCdWZmZXJzKDEsIGRyYXdCdWZmZXJzKTsKLQotICAgIGZsb2F0IGNsZWFy
VmFsdWVzMVtdID0geyAwLjBmLCAxLjBmLCAwLjBmLCAxLjBmIH07Ci0gICAgZ2xDbGVhckJ1ZmZl
cmZ2KEdMX0NPTE9SLCAwLCBjbGVhclZhbHVlczEpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDI1NSwgMCwgMjU1KTsKLQotICAgIC8v
IE5leHQgbWFrZSBhIHNlY29uZCBmcmFtZWJ1ZmZlciwgYW5kIGRyYXcgaXQgdG8gcmVkCi0gICAg
Ly8gKFRyaWdnZXJzIGJhZCBhcHBsaWVkIHJlbmRlciB0YXJnZXQgc2VyaWFsKQotICAgIEdMdWlu
dCBmYm8yOwotICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZmYm8yKTsKLSAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8y
KTsKLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZXNbMV0pOwotICAg
IGdsVGV4U3RvcmFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4LCBnZXRXaW5kb3dXaWR0
aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9G
UkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleHR1cmVz
WzFdLCAwKTsKLQotICAgIGdsRHJhd0J1ZmZlcnMoMSwgZHJhd0J1ZmZlcnMpOwotCi0gICAgc2V0
dXBEZWZhdWx0UHJvZ3JhbSgpOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAw
LjVmKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgw
LCAwLCAyNTUsIDAsIDAsIDI1NSk7Ci0KLSAgICAvLyBDaGVjayB0aGF0IHRoZSBmaXJzdCBmcmFt
ZWJ1ZmZlciBpcyBzdGlsbCBncmVlbi4KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiwgbUZCT3NbMF0pOwotICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAwLCAyNTUsIDAsIDI1
NSk7Ci0KLSAgICBnbERlbGV0ZVRleHR1cmVzKDIsIHRleHR1cmVzKTsKLSAgICBnbERlbGV0ZUZy
YW1lYnVmZmVycygxLCAmZmJvMik7Ci19Ci0KLS8vIFRlc3QgdGhhdCBTUkdCIGZyYW1lYnVmZmVy
cyBjbGVhciB0byB0aGUgbGluZWFyaXplZCBjbGVhciBjb2xvcgotVEVTVF9QKENsZWFyVGVzdEVT
MywgU1JHQkNsZWFyKQotewotICAgIC8vIFRPRE8oam1hZGlsbCk6IGZpZ3VyZSBvdXQgd2h5IHRo
aXMgZmFpbHMKLSAgICBpZiAoSXNJbnRlbCgpICYmIEdldFBhcmFtKCkgPT0gRVMzX09QRU5HTCgp
KQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgZHVl
IHRvIGZhaWx1cmVzLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgLy8gRmlyc3QgbWFrZSBhIHNpbXBsZSBmcmFtZWJ1ZmZlciwgYW5kIGNsZWFyIGl0Ci0gICAg
Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GQk9zWzBdKTsKLQotICAgIEdMdWlu
dCB0ZXh0dXJlOwotICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUpOwotCi0gICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKLSAgICBnbFRleFN0b3JhZ2UyRChHTF9U
RVhUVVJFXzJELCAxLCBHTF9TUkdCOF9BTFBIQTgsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRv
d0hlaWdodCgpKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBH
TF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7Ci0KLSAgICBn
bENsZWFyQ29sb3IoMC41ZiwgMC41ZiwgMC41ZiwgMC41Zik7Ci0gICAgZ2xDbGVhcihHTF9DT0xP
Ul9CVUZGRVJfQklUKTsKLQotICAgIEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAsIDE4OCwgMTg4LCAx
ODgsIDEyOCwgMS4wKTsKLX0KLQotLy8gVGVzdCB0aGF0IGZyYW1lYnVmZmVycyB3aXRoIG1peGVk
IFNSR0IvTGluZWFyIGF0dGFjaG1lbnRzIGNsZWFyIHRvIHRoZSBjb3JyZWN0IGNvbG9yIGZvciBl
YWNoCi0vLyBhdHRhY2htZW50Ci1URVNUX1AoQ2xlYXJUZXN0RVMzLCBNaXhlZFNSR0JDbGVhcikK
LXsKLSAgICAvLyBUT0RPKGN3YWxsZXopIGZpZ3VyZSBvdXQgd2h5IGl0IGlzIGJyb2tlbiBvbiBJ
bnRlbCBvbiBNYWMKLSNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FQUExFKQotICAgIGlmIChJ
c0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIG9uIEludGVsIG9uIE1hYy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSNlbmRpZgotCi0gICAgLy8gVE9ETyhqbWFkaWxsKTogZmlndXJlIG91dCB3aHkgdGhpcyBm
YWlscwotICAgIGlmIChJc0ludGVsKCkgJiYgR2V0UGFyYW0oKSA9PSBFUzNfT1BFTkdMKCkpCi0g
ICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBkdWUgdG8g
ZmFpbHVyZXMuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCT3NbMF0pOwotCi0gICAgR0x1aW50
IHRleHR1cmVzWzJdOwotICAgIGdsR2VuVGV4dHVyZXMoMiwgJnRleHR1cmVzWzBdKTsKLQotICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZXNbMF0pOwotICAgIGdsVGV4U3Rv
cmFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1NSR0I4X0FMUEhBOCwgZ2V0V2luZG93V2lkdGgo
KSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJB
TUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1sw
XSwgMCk7Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmVzWzFdKTsK
LSAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOCwgZ2V0V2luZG93
V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQo
R0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQxLCBHTF9URVhUVVJFXzJELCB0ZXh0
dXJlc1sxXSwgMCk7Ci0KLSAgICBHTGVudW0gZHJhd0J1ZmZlcnNbXSA9IHtHTF9DT0xPUl9BVFRB
Q0hNRU5UMCwgR0xfQ09MT1JfQVRUQUNITUVOVDF9OwotICAgIGdsRHJhd0J1ZmZlcnMoMiwgZHJh
d0J1ZmZlcnMpOwotCi0gICAgLy8gQ2xlYXIgYm90aCB0ZXh0dXJlcwotICAgIGdsQ2xlYXJDb2xv
cigwLjVmLCAwLjVmLCAwLjVmLCAwLjVmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9C
SVQpOwotCi0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09M
T1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIDAsIDApOwotICAgIGdsRnJhbWVidWZmZXJU
ZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQxLCBHTF9URVhUVVJF
XzJELCAwLCAwKTsKLQotICAgIC8vIENoZWNrIHZhbHVlIG9mIHRleHR1cmUwCi0gICAgZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1RFWFRVUkVfMkQsIHRleHR1cmVzWzBdLCAwKTsKLSAgICBFWFBFQ1RfUElYRUxfTkVBUigwLCAw
LCAxODgsIDE4OCwgMTg4LCAxMjgsIDEuMCk7Ci0KLSAgICAvLyBDaGVjayB2YWx1ZSBvZiB0ZXh0
dXJlMQotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9S
X0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1sxXSwgMCk7Ci0gICAgRVhQRUNU
X1BJWEVMX05FQVIoMCwgMCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxLjApOwotfQotCi0vLyBUaGlz
IHRlc3QgY292ZXJzIGEgRDNEMTEgYnVnIHdoZXJlIGNhbGxpbmcgQ2xlYXJSZW5kZXJUYXJnZXRW
aWV3IHNvbWV0aW1lcyB3b3VsZG4ndCBzeW5jCi0vLyBiZWZvcmUgYSBkcmF3IGNhbGwuIFRoZSB0
ZXN0IGRyYXdzIHNtYWxsIHF1YWRzIHRvIGEgbGFyZ2VyIEZCTyAodGhlIGRlZmF1bHQgYmFjayBi
dWZmZXIpLgotLy8gQmVmb3JlIGVhY2ggYmxpdCB0byB0aGUgYmFjayBidWZmZXIgaXQgY2xlYXJz
IHRoZSBxdWFkIHRvIGEgY2VydGFpbiBjb2xvciB1c2luZwotLy8gQ2xlYXJCdWZmZXJmdiB0byBn
aXZlIGEgc29saWQgY29sb3IuIFRoZSBzeW5jIHByb2JsZW0gZ29lcyBhd2F5IGlmIHdlIGluc2Vy
dCBhIGNhbGwgdG8KLS8vIGZsdXNoIG9yIGZpbmlzaCBhZnRlciBDbGVhckJ1ZmZlcmZ2IG9yIGVh
Y2ggZHJhdy4KLVRFU1RfUChDbGVhclRlc3RFUzMsIFJlcGVhdGVkQ2xlYXIpCi17Ci0gICAgaWYg
KElzRDNEMTEoKSAmJiAoSXNOVklESUEoKSB8fCBJc0ludGVsKCkpKQotICAgIHsKLSAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gTnZpZGlhIGFuZCBJbnRlbCBEM0QxMS4iIDw8
IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZ2ZXJ0ZXhTb3VyY2UgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAg
ICJpbiBoaWdocCB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAib3V0IGhpZ2hwIHZlYzIgdl9j
b29yZDtcbiIKLSAgICAgICAgInZvaWQgbWFpbih2b2lkKVxuIgotICAgICAgICAie1xuIgotICAg
ICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMCwgMSk7XG4iCi0gICAgICAg
ICIgICAgdmVjMiB0ZXhDb29yZCA9IChwb3NpdGlvbiAqIDAuNSkgKyAwLjU7XG4iCi0gICAgICAg
ICIgICAgdl9jb29yZCA9IHRleENvb3JkO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKLSAgICAgICAgImluIGhpZ2hwIHZlYzIgdl9jb29yZDtcbiIKLSAgICAgICAgIm91dCBoaWdo
cCB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4O1xuIgotICAg
ICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBjb2xvciA9
IHRleHR1cmUodGV4LCB2X2Nvb3JkKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBtUHJvZ3Jh
bSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNvdXJjZSwgZnJhZ21lbnRTb3VyY2UpOwotICAgIEFT
U0VSVF9ORSgwdSwgbVByb2dyYW0pOwotCi0gICAgbVRleHR1cmVzLnJlc2l6ZSgxLCAwKTsKLSAg
ICBnbEdlblRleHR1cmVzKDEsIG1UZXh0dXJlcy5kYXRhKCkpOwotCi0gICAgR0xlbnVtIGZvcm1h
dCAgICAgICAgICAgPSBHTF9SR0JBODsKLSAgICBjb25zdCBpbnQgbnVtUm93c0NvbHMgICA9IDM7
Ci0gICAgY29uc3QgaW50IGNlbGxTaXplICAgICAgPSAzMjsKLSAgICBjb25zdCBpbnQgZmJvU2l6
ZSAgICAgICA9IGNlbGxTaXplOwotICAgIGNvbnN0IGludCBiYWNrRkJPU2l6ZSAgID0gY2VsbFNp
emUgKiBudW1Sb3dzQ29sczsKLSAgICBjb25zdCBmbG9hdCBmbXRWYWx1ZU1pbiA9IDAuMGY7Ci0g
ICAgY29uc3QgZmxvYXQgZm10VmFsdWVNYXggPSAxLjBmOwotCi0gICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOwotICAgIGdsVGV4U3RvcmFnZTJEKEdMX1RFWFRV
UkVfMkQsIDEsIGZvcm1hdCwgZmJvU2l6ZSwgZmJvU2l6ZSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NM
QU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1G
Qk9zWzBdKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9D
T0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdLCAwKTsKLSAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIEFTU0VSVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZG
RVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwot
Ci0gICAgLy8gbGFyZ2VyIGZibyBib3VuZCAtLSBjbGVhciB0byB0cmFuc3BhcmVudCBibGFjawot
ICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgR0xpbnQgdW5pTG9jID0gZ2xHZXRVbmlm
b3JtTG9jYXRpb24obVByb2dyYW0sICJ0ZXgiKTsKLSAgICBBU1NFUlRfTkUoLTEsIHVuaUxvYyk7
Ci0gICAgZ2xVbmlmb3JtMWkodW5pTG9jLCAwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlc1swXSk7Ci0KLSAgICBHTGludCBwb3NpdGlvbkxvY2F0aW9uID0gZ2xH
ZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInBvc2l0aW9uIik7Ci0gICAgQVNTRVJUX05FKC0x
LCBwb3NpdGlvbkxvY2F0aW9uKTsKLQotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAg
ICBmb3IgKGludCBjZWxsWSA9IDA7IGNlbGxZIDwgbnVtUm93c0NvbHM7IGNlbGxZKyspCi0gICAg
ewotICAgICAgICBmb3IgKGludCBjZWxsWCA9IDA7IGNlbGxYIDwgbnVtUm93c0NvbHM7IGNlbGxY
KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCBzZWVkICAgICAgICAgICAgPSBjZWxsWCAr
IGNlbGxZICogbnVtUm93c0NvbHM7Ci0gICAgICAgICAgICBjb25zdCBWZWN0b3I0IGNvbG9yID0g
UmFuZG9tVmVjNChzZWVkLCBmbXRWYWx1ZU1pbiwgZm10VmFsdWVNYXgpOwotCi0gICAgICAgICAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCT3NbMF0pOwotICAgICAgICAg
ICAgZ2xDbGVhckJ1ZmZlcmZ2KEdMX0NPTE9SLCAwLCBjb2xvci5kYXRhKCkpOwotCi0gICAgICAg
ICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7Ci0KLSAgICAgICAgICAg
IC8vIE1ldGhvZCAxOiBTZXQgdmlld3BvcnQgYW5kIGRyYXcgZnVsbC12aWV3cG9ydCBxdWFkCi0g
ICAgICAgICAgICBnbFZpZXdwb3J0KGNlbGxYICogY2VsbFNpemUsIGNlbGxZICogY2VsbFNpemUs
IGNlbGxTaXplLCBjZWxsU2l6ZSk7Ci0gICAgICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBv
c2l0aW9uIiwgMC41Zik7Ci0KLSAgICAgICAgICAgIC8vIFVuY29tbWVudGluZyB0aGUgZ2xGaW5p
c2ggY2FsbCBzZWVtcyB0byBtYWtlIHRoZSB0ZXN0IHBhc3MuCi0gICAgICAgICAgICAvLyBnbEZp
bmlzaCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4
ZWxEYXRhKGJhY2tGQk9TaXplICogYmFja0ZCT1NpemUpOwotICAgIGdsUmVhZFBpeGVscygwLCAw
LCBiYWNrRkJPU2l6ZSwgYmFja0ZCT1NpemUsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBp
eGVsRGF0YS5kYXRhKCkpOwotCi0gICAgZm9yIChpbnQgY2VsbFkgPSAwOyBjZWxsWSA8IG51bVJv
d3NDb2xzOyBjZWxsWSsrKQotICAgIHsKLSAgICAgICAgZm9yIChpbnQgY2VsbFggPSAwOyBjZWxs
WCA8IG51bVJvd3NDb2xzOyBjZWxsWCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQgc2Vl
ZCAgICAgICAgICAgICAgPSBjZWxsWCArIGNlbGxZICogbnVtUm93c0NvbHM7Ci0gICAgICAgICAg
ICBjb25zdCBWZWN0b3I0IGNvbG9yICAgPSBSYW5kb21WZWM0KHNlZWQsIGZtdFZhbHVlTWluLCBm
bXRWYWx1ZU1heCk7Ci0gICAgICAgICAgICBHTENvbG9yIGV4cGVjdGVkQ29sb3IgPSBWZWM0VG9D
b2xvcihjb2xvcik7Ci0KLSAgICAgICAgICAgIGludCB0ZXN0TiAgICAgICAgICAgPSBjZWxsWCAq
IGNlbGxTaXplICsgY2VsbFkgKiBiYWNrRkJPU2l6ZSAqIGNlbGxTaXplICsgYmFja0ZCT1NpemUg
KyAxOwotICAgICAgICAgICAgR0xDb2xvciBhY3R1YWxDb2xvciA9IHBpeGVsRGF0YVt0ZXN0Tl07
Ci0gICAgICAgICAgICBFWFBFQ1RfTkVBUihleHBlY3RlZENvbG9yLlIsIGFjdHVhbENvbG9yLlIs
IDEpOwotICAgICAgICAgICAgRVhQRUNUX05FQVIoZXhwZWN0ZWRDb2xvci5HLCBhY3R1YWxDb2xv
ci5HLCAxKTsKLSAgICAgICAgICAgIEVYUEVDVF9ORUFSKGV4cGVjdGVkQ29sb3IuQiwgYWN0dWFs
Q29sb3IuQiwgMSk7Ci0gICAgICAgICAgICBFWFBFQ1RfTkVBUihleHBlY3RlZENvbG9yLkEsIGFj
dHVhbENvbG9yLkEsIDEpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAo
ZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0
cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKENsZWFyVGVz
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgIEVTM19PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJ
QVRFX1RFU1QoQ2xlYXJUZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BF
TkdMRVMoKSk7Ci0KLX0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db2xvck1hc2tUZXN0LmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db2xvck1hc2tUZXN0
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDJhZDYzOGFhOGFiYTg3YzU0YTA0
M2ZlNmNhMzU4NmYwODcwYWQxZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29s
b3JNYXNrVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLy8KLS8vIENv
cHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8K
LQotLy8gQ29sb3JNYXNrVGVzdC5jcHA6IFRlc3QgR0xFUyBmdW5jdGlvbmFsaXR5IHJlbGF0ZWQg
dG8gY29sb3IgbWFza3MsIHBhcnRpY3VsYXJseSBhbiBBTUQgRDNEOQotLy8gZHJpdmVyIGJ1Zy4K
LQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLW5hbWVzcGFjZSBhbmdsZQot
ewotY2xhc3MgQ29sb3JNYXNrVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVk
OgotICAgIENvbG9yTWFza1Rlc3QoKSA6IG1Qcm9ncmFtKDApCi0gICAgewotICAgICAgICBzZXRX
aW5kb3dXaWR0aCgxMjgpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKLSAgICAgICAg
c2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAg
ICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgp
OwotICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOwotICAgIH0KLQotICAgIHZvaWQgU2V0
VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291cmNlID0KLSAgICAgICAgICAgICJwcmVjaXNpb24g
aGlnaHAgZmxvYXQ7XG4iCi0gICAgICAgICAgICAiYXR0cmlidXRlIHZlYzQgcG9zaXRpb247XG4i
Ci0gICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAg
ICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247XG4iCi0g
ICAgICAgICAgICAifVxuIjsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmc1NvdXJjZSA9
Ci0gICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAgICAgInVu
aWZvcm0gdmVjNCBjb2xvcjtcbiIKLSAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICJ2b2lk
IG1haW4oKVxuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIgICAgZ2xfRnJhZ0Nv
bG9yID0gY29sb3I7XG4iCi0gICAgICAgICAgICAifVxuIjsKLQotICAgICAgICBtUHJvZ3JhbSA9
IENvbXBpbGVQcm9ncmFtKHZzU291cmNlLCBmc1NvdXJjZSk7Ci0gICAgICAgIEFTU0VSVF9ORSgw
dSwgbVByb2dyYW0pIDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7Ci0KLSAgICAgICAg
bUNvbG9yVW5pZm9ybSA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAiY29sb3IiKTsK
LSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGds
RGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigp
OwotICAgIH0KLQotICAgIEdMdWludCBtUHJvZ3JhbSAgICAgPSAwOwotICAgIEdMaW50IG1Db2xv
clVuaWZvcm0gPSAtMTsKLX07Ci0KLS8vIFNvbWUgQVRJIGNhcmRzIGhhdmUgYSBidWcgd2hlcmUg
YSBkcmF3IHdpdGggYSB6ZXJvIGNvbG9yIHdyaXRlIG1hc2sgY2FuIGNhdXNlIGxhdGVyIGRyYXdz
IHRvIGhhdmUKLS8vIGluY29ycmVjdCByZXN1bHRzLiBUZXN0IHRvIG1ha2Ugc3VyZSB0aGlzIGJ1
ZyBpcyBub3QgZXhwb3NlZC4KLVRFU1RfUChDb2xvck1hc2tUZXN0LCBBTURaZXJvQ29sb3JNYXNr
QnVnKQotewotICAgIGludCB4ID0gZ2V0V2luZG93V2lkdGgoKSAvIDI7Ci0gICAgaW50IHkgPSBn
ZXRXaW5kb3dIZWlnaHQoKSAvIDI7Ci0KLSAgICAvLyBDbGVhciB0byBibHVlCi0gICAgZ2xDbGVh
ckNvbG9yKDAuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVG
RkVSX0JJVCk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKHgsIHksIDAsIDAsIDI1NSwgMjU1KTsKLQot
ICAgIC8vIERyYXcgYSBxdWFkIHdpdGggYWxsIGNvbG9ycyBtYXNrZWQgYW5kIGJsZW5kaW5nIGRp
c2FibGVkLCBzaG91bGQgcmVtYWluIGJsdWUKLSAgICBnbENvbG9yTWFzayhHTF9GQUxTRSwgR0xf
RkFMU0UsIEdMX0ZBTFNFLCBHTF9GQUxTRSk7Ci0gICAgZ2xEaXNhYmxlKEdMX0JMRU5EKTsKLSAg
ICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIGdsVW5pZm9ybTRmKG1Db2xvclVuaWZvcm0s
IDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAg
IGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfUElYRUxf
RVEoeCwgeSwgMCwgMCwgMjU1LCAyNTUpOwotCi0gICAgLy8gUmUtZW5hYmxlIHRoZSBjb2xvciBt
YXNrLCBzaG91bGQgYmUgcmVkICh3aXRoIGJsZW5kIGRpc2FibGVkLCB0aGUgcmVkIHNob3VsZCBv
dmVyd3JpdGUKLSAgICAvLyBldmVyeXRoaW5nKQotICAgIGdsQ29sb3JNYXNrKEdMX1RSVUUsIEdM
X1RSVUUsIEdMX1RSVUUsIEdMX1RSVUUpOwotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0g
ICAgZ2xVbmlmb3JtNGYobUNvbG9yVW5pZm9ybSwgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZik7Ci0g
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlv
biIsIDAuNWYpOwotICAgIEVYUEVDVF9QSVhFTF9FUSh4LCB5LCAyNTUsIDAsIDAsIDApOwotfQot
Ci0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2gg
cmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UKLS8vIHRlc3RzIHNob3Vs
ZCBiZSBydW4gYWdhaW5zdC4gRDNEMTEgRmVhdHVyZSBMZXZlbCA5XzMgdXNlcyBkaWZmZXJlbnQg
RDNEIGZvcm1hdHMgZm9yIHZlcnRleAotLy8gYXR0cmlicyBjb21wYXJlZCB0byBGZWF0dXJlIExl
dmVscyAxMF8wKywgc28gd2Ugc2hvdWxkIHRlc3QgdGhlbSBzZXBhcmF0ZWx5LgotQU5HTEVfSU5T
VEFOVElBVEVfVEVTVChDb2xvck1hc2tUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJf
RDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
RVMzX09QRU5HTEVTKCkpOwotCi19ICAvLyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db21wdXRlU2hhZGVyVGVz
dC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29tcHV0
ZVNoYWRlclRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWIxMTQ2YzJl
NjI4ZjBlMDBlZWExODViMWY2OTMxMDc2ZDhhOThkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9Db21wdXRlU2hhZGVyVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjYgKzAs
MCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgotLy8KLS8vIENvbXB1dGVTaGFkZXJUZXN0OgotLy8gICBDb21wdXRlIHNoYWRl
ciBzcGVjaWZpYyB0ZXN0cy4KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0j
aW5jbHVkZSAidGVzdF91dGlscy9nbF9yYWlpLmgiCi0jaW5jbHVkZSA8dmVjdG9yPgotCi11c2lu
ZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1jbGFzcyBDb21wdXRlU2hhZGVy
VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIENvbXB1dGVTaGFk
ZXJUZXN0KCkge30KLX07Ci0KLWNsYXNzIENvbXB1dGVTaGFkZXJUZXN0RVMzIDogcHVibGljIEFO
R0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgQ29tcHV0ZVNoYWRlclRlc3RFUzMoKSB7fQot
fTsKLQotLy8gbGluayBhIHNpbXBsZSBjb21wdXRlIHByb2dyYW0uIEl0IHNob3VsZCBiZSBzdWNj
ZXNzZnVsLgotVEVTVF9QKENvbXB1dGVTaGFkZXJUZXN0LCBMaW5rQ29tcHV0ZVByb2dyYW0pCi17
Ci0gICAgaWYgKElzSW50ZWwoKSAmJiBJc0xpbnV4KCkpCi0gICAgewotICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBMaW51eCBkdWUgdG8gZmFpbHVyZXMuIiA8PCBz
dGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyBjc1NvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImxheW91
dChsb2NhbF9zaXplX3g9MSkgaW47XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAg
ICAie1xuIgotICAgICAgICAifVxuIjsKLQotICAgIEFOR0xFX0dMX0NPTVBVVEVfUFJPR1JBTShw
cm9ncmFtLCBjc1NvdXJjZSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8g
bGluayBhIHNpbXBsZSBjb21wdXRlIHByb2dyYW0uIFRoZXJlIGlzIG5vIGxvY2FsIHNpemUgYW5k
IGxpbmtpbmcgc2hvdWxkIGZhaWwuCi1URVNUX1AoQ29tcHV0ZVNoYWRlclRlc3QsIExpbmtDb21w
dXRlUHJvZ3JhbU5vTG9jYWxTaXplTGlua0Vycm9yKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IGNzU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAidm9pZCBt
YWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBHTHVpbnQgcHJv
Z3JhbSA9IENvbXBpbGVDb21wdXRlUHJvZ3JhbShjc1NvdXJjZSwgZmFsc2UpOwotICAgIEVYUEVD
VF9FUSgwdSwgcHJvZ3JhbSk7Ci0KLSAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Ci0KLSAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gbGluayBhIHNpbXBsZSBjb21wdXRlIHBy
b2dyYW0uCi0vLyBtYWtlIHN1cmUgdGhhdCB1bmlmb3JtcyBhbmQgdW5pZm9ybSBzYW1wbGVycyBn
ZXQgcmVjb3JkZWQKLVRFU1RfUChDb21wdXRlU2hhZGVyVGVzdCwgTGlua0NvbXB1dGVQcm9ncmFt
V2l0aFVuaWZvcm1zKQotewotICAgIGlmIChJc0ludGVsKCkgJiYgSXNMaW51eCgpKQotICAgIHsK
LSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgTGludXggZHVlIHRv
IGZhaWx1cmVzLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGNzU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgot
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgc2FtcGxlcjJEO1xuIgotICAgICAgICAibGF5b3V0
KGxvY2FsX3NpemVfeD0xKSBpbjtcbiIKLSAgICAgICAgInVuaWZvcm0gaW50IG15VW5pZm9ybUlu
dDtcbiIKLSAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIG15VW5pZm9ybVNhbXBsZXI7XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiaW50IHEgPSBt
eVVuaWZvcm1JbnQ7XG4iCi0gICAgICAgICJ0ZXh0dXJlKG15VW5pZm9ybVNhbXBsZXIsIHZlYzIo
MC4wKSk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgQU5HTEVfR0xfQ09NUFVURV9QUk9HUkFN
KHByb2dyYW0sIGNzU291cmNlKTsKLQotICAgIEdMaW50IHVuaWZvcm1Mb2MgPSBnbEdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtLmdldCgpLCAibXlVbmlmb3JtSW50Iik7Ci0gICAgRVhQRUNUX05F
KC0xLCB1bmlmb3JtTG9jKTsKLQotICAgIHVuaWZvcm1Mb2MgPSBnbEdldFVuaWZvcm1Mb2NhdGlv
bihwcm9ncmFtLmdldCgpLCAibXlVbmlmb3JtU2FtcGxlciIpOwotICAgIEVYUEVDVF9ORSgtMSwg
dW5pZm9ybUxvYyk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gQXR0YWNo
IGJvdGggY29tcHV0ZSBhbmQgbm9uLWNvbXB1dGUgc2hhZGVycy4gQSBsaW5rIHRpbWUgZXJyb3Ig
c2hvdWxkIG9jY3VyLgotLy8gT3BlbkdMIEVTIDMuMTAsIDcuMyBQcm9ncmFtIE9iamVjdHMKLVRF
U1RfUChDb21wdXRlU2hhZGVyVGVzdCwgQXR0YWNoTXVsdGlwbGVTaGFkZXJzKQotewotICAgIGlm
IChJc0ludGVsKCkgJiYgSXNMaW51eCgpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IHNraXBwZWQgb24gSW50ZWwgTGludXggZHVlIHRvIGZhaWx1cmVzLiIgPDwgc3RkOjplbmRs
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNzU291cmNl
ID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3Np
emVfeD0xKSBpbjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0g
ICAgICAgICJ9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgdnNTb3VyY2UgPQotICAgICAg
ICAiI3ZlcnNpb24gMzEwIGVzXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAi
e1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzU291cmNlID0K
LSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAg
ICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IGdsQ3Jl
YXRlUHJvZ3JhbSgpOwotCi0gICAgR0x1aW50IHZzID0gQ29tcGlsZVNoYWRlcihHTF9WRVJURVhf
U0hBREVSLCB2c1NvdXJjZSk7Ci0gICAgR0x1aW50IGZzID0gQ29tcGlsZVNoYWRlcihHTF9GUkFH
TUVOVF9TSEFERVIsIGZzU291cmNlKTsKLSAgICBHTHVpbnQgY3MgPSBDb21waWxlU2hhZGVyKEdM
X0NPTVBVVEVfU0hBREVSLCBjc1NvdXJjZSk7Ci0KLSAgICBFWFBFQ1RfTkUoMHUsIHZzKTsKLSAg
ICBFWFBFQ1RfTkUoMHUsIGZzKTsKLSAgICBFWFBFQ1RfTkUoMHUsIGNzKTsKLQotICAgIGdsQXR0
YWNoU2hhZGVyKHByb2dyYW0sIHZzKTsKLSAgICBnbERlbGV0ZVNoYWRlcih2cyk7Ci0KLSAgICBn
bEF0dGFjaFNoYWRlcihwcm9ncmFtLCBmcyk7Ci0gICAgZ2xEZWxldGVTaGFkZXIoZnMpOwotCi0g
ICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwgY3MpOwotICAgIGdsRGVsZXRlU2hhZGVyKGNzKTsK
LQotICAgIGdsTGlua1Byb2dyYW0ocHJvZ3JhbSk7Ci0KLSAgICBHTGludCBsaW5rU3RhdHVzOwot
ICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0xJTktfU1RBVFVTLCAmbGlua1N0YXR1cyk7
Ci0KLSAgICBFWFBFQ1RfRVEoMCwgbGlua1N0YXR1cyk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKLX0KLQotLy8gQXR0YWNoIGEgdmVydGV4LCBmcmFnbWVudCBhbmQgY29tcHV0ZSBzaGFk
ZXIuCi0vLyBRdWVyeSBmb3IgdGhlIG51bWJlciBvZiBhdHRhY2hlZCBzaGFkZXJzIGFuZCBjaGVj
ayB0aGUgY291bnQuCi1URVNUX1AoQ29tcHV0ZVNoYWRlclRlc3QsIEF0dGFjaG1lbnRDb3VudCkK
LXsKLSAgICBpZiAoSXNJbnRlbCgpICYmIElzTGludXgoKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIExpbnV4IGR1ZSB0byBmYWlsdXJlcy4iIDw8
IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyBjc1NvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImxheW91
dChsb2NhbF9zaXplX3g9MSkgaW47XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAg
ICAie1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291cmNl
ID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIK
LSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBm
c1NvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgInZvaWQgbWFp
bigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgR0x1aW50IHByb2dy
YW0gPSBnbENyZWF0ZVByb2dyYW0oKTsKLQotICAgIEdMdWludCB2cyA9IENvbXBpbGVTaGFkZXIo
R0xfVkVSVEVYX1NIQURFUiwgdnNTb3VyY2UpOwotICAgIEdMdWludCBmcyA9IENvbXBpbGVTaGFk
ZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmc1NvdXJjZSk7Ci0gICAgR0x1aW50IGNzID0gQ29tcGls
ZVNoYWRlcihHTF9DT01QVVRFX1NIQURFUiwgY3NTb3VyY2UpOwotCi0gICAgRVhQRUNUX05FKDB1
LCB2cyk7Ci0gICAgRVhQRUNUX05FKDB1LCBmcyk7Ci0gICAgRVhQRUNUX05FKDB1LCBjcyk7Ci0K
LSAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCB2cyk7Ci0gICAgZ2xEZWxldGVTaGFkZXIodnMp
OwotCi0gICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwgZnMpOwotICAgIGdsRGVsZXRlU2hhZGVy
KGZzKTsKLQotICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW0sIGNzKTsKLSAgICBnbERlbGV0ZVNo
YWRlcihjcyk7Ci0KLSAgICBHTGludCBudW1BdHRhY2hlZFNoYWRlcnM7Ci0gICAgZ2xHZXRQcm9n
cmFtaXYocHJvZ3JhbSwgR0xfQVRUQUNIRURfU0hBREVSUywgJm51bUF0dGFjaGVkU2hhZGVycyk7
Ci0KLSAgICBFWFBFQ1RfRVEoMywgbnVtQXR0YWNoZWRTaGFkZXJzKTsKLQotICAgIGdsRGVsZXRl
UHJvZ3JhbShwcm9ncmFtKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBD
aGVjayB0aGF0IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgYSBjb21wdXRlIHNoYWRlciB3
aGVuIHRoZSBjb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgRVMKLS8vIDMuMTAKLVRFU1RfUChDb21w
dXRlU2hhZGVyVGVzdEVTMywgTm90U3VwcG9ydGVkKQotewotICAgIEdMdWludCBjb21wdXRlU2hh
ZGVySGFuZGxlID0gZ2xDcmVhdGVTaGFkZXIoR0xfQ09NUFVURV9TSEFERVIpOwotICAgIEVYUEVD
VF9FUSgwdSwgY29tcHV0ZVNoYWRlckhhbmRsZSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lO
VkFMSURfRU5VTSk7Ci19Ci0KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoQ29tcHV0ZVNoYWRlclRl
c3QsIEVTMzFfT1BFTkdMKCksIEVTMzFfT1BFTkdMRVMoKSk7Ci1BTkdMRV9JTlNUQU5USUFURV9U
RVNUKENvbXB1dGVTaGFkZXJUZXN0RVMzLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsK
LQotfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvQ29weUNvbXByZXNzZWRUZXh0dXJlVGVzdC5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29weUNvbXByZXNzZWRUZXh0dXJl
VGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNDE1MTk0OWRkOWJiYmNj
Mjc3MzVmZWMzYmY1ZDJlYmQ3MGJjZjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L0NvcHlDb21wcmVzc2VkVGV4dHVyZVRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzY5ICsw
LDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KLS8vCi0KLS8vIENvcHlDb21wcmVzc2VkVGV4dHVyZVRlc3QuY3BwOiBUZXN0
cyBvZiB0aGUgR0xfQ0hST01JVU1fY29weV9jb21wcmVzc2VkX3RleHR1cmUgZXh0ZW5zaW9uCi0K
LSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi1uYW1lc3BhY2UgYW5nbGUKLXsK
LQotY2xhc3MgQ29weUNvbXByZXNzZWRUZXh0dXJlVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsK
LSAgcHJvdGVjdGVkOgotICAgIENvcHlDb21wcmVzc2VkVGV4dHVyZVRlc3QoKQotICAgIHsKLSAg
ICAgICAgc2V0V2luZG93V2lkdGgoMjU2KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDI1Nik7
Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0
cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0Fs
cGhhQml0cyg4KTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBnbEdlblRleHR1cmVzKDIsIG1U
ZXh0dXJlcyk7Ci0KLSAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSgKLSAgICAgICAg
ICAgICJhdHRyaWJ1dGUgdmVjMiBhX3Bvc2l0aW9uO1xuIgotICAgICAgICAgICAgInZhcnlpbmcg
dmVjMiB2X3RleGNvb3JkO1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAg
ICAgICAie1xuIgotICAgICAgICAgICAgIiAgIGdsX1Bvc2l0aW9uID0gdmVjNChhX3Bvc2l0aW9u
LCAwLjAsIDEuMCk7XG4iCi0gICAgICAgICAgICAiICAgdl90ZXhjb29yZCA9IChhX3Bvc2l0aW9u
ICsgMS4wKSAqIDAuNTtcbiIKLSAgICAgICAgICAgICJ9XG4iLAotICAgICAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHVf
dGV4dHVyZTtcbiIKLSAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhjb29yZDtcbiIKLSAg
ICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAg
ICIgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHVfdGV4dHVyZSwgdl90ZXhjb29yZCk7XG4i
Ci0gICAgICAgICAgICAifVxuIik7Ci0gICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwot
Ci0gICAgICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9jb3B5X2NvbXByZXNz
ZWRfdGV4dHVyZSIpKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbENvbXByZXNzZWRDb3B5VGV4
dHVyZUNIUk9NSVVNID0KLSAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMQ09N
UFJFU1NFRENPUFlURVhUVVJFQ0hST01JVU1QUk9DPigKLSAgICAgICAgICAgICAgICAgICAgZWds
R2V0UHJvY0FkZHJlc3MoImdsQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0iKSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIGdsRGVsZXRlVGV4dHVyZXMoMiwgbVRleHR1cmVzKTsKLSAgICAgICAgZ2xEZWxldGVQcm9n
cmFtKG1Qcm9ncmFtKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQot
Ci0gICAgYm9vbCBjaGVja0V4dGVuc2lvbnMoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYgKCFl
eHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9jb3B5X2NvbXByZXNzZWRfdGV4dHVyZSIpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQKLSAgICAgICAgICAgICAgICA8PCAiVGVz
dCBza2lwcGVkIGJlY2F1c2UgR0xfQ0hST01JVU1fY29weV9jb21wcmVzc2VkX3RleHR1cmUgaXMg
bm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgRVhQRUNUX05FKG51bGxwdHIs
IGdsQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0pOwotICAgICAgICBpZiAoZ2xDb21wcmVz
c2VkQ29weVRleHR1cmVDSFJPTUlVTSA9PSBudWxscHRyKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0KLSAgICBHTHVpbnQgbVByb2dyYW0gICAgID0gMDsKLSAgICBHTHVpbnQgbVRleHR1cmVzWzJd
ID0gezAsIDB9OwotCi0gICAgUEZOR0xDT01QUkVTU0VEQ09QWVRFWFRVUkVDSFJPTUlVTVBST0Mg
Z2xDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTSA9IG51bGxwdHI7Ci19OwotCi1uYW1lc3Bh
Y2UKLXsKLQotY29uc3QgR0xDb2xvciAmQ29tcHJlc3NlZEltYWdlQ29sb3IgPSBHTENvbG9yOjpy
ZWQ7Ci0KLS8vIFNpbmdsZSBjb21wcmVzc2VkIEFUQyBibG9jayBvZiBzb3VyY2UgcGl4ZWxzIGFs
bCBzZXQgdG86Ci0vLyBDb21wcmVzc2VkSW1hZ2VDb2xvci4KLWNvbnN0IHVpbnQ4X3QgQ29tcHJl
c3NlZEltYWdlQVRDWzhdID0gezB4MCwgMHg3YywgMHgwLCAweGY4LCAweDU1LCAweDU1LCAweDU1
LCAweDU1fTsKLQotLy8gU2luZ2xlIGNvbXByZXNzZWQgQVRDSUEgYmxvY2sgb2Ygc291cmNlIHBp
eGVscyBhbGwgc2V0IHRvOgotLy8gQ29tcHJlc3NlZEltYWdlQ29sb3IuCi1jb25zdCB1aW50OF90
IENvbXByZXNzZWRJbWFnZUFUQ0lBWzE2XSA9IHsweGZmLCAweGZmLCAweDAsIDB4MCwgIDB4MCwg
IDB4MCwgIDB4MCwgIDB4MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4MCwgIDB4N2MsIDB4MCwgMHhmOCwgMHg1NSwgMHg1NSwgMHg1NSwgMHg1NX07Ci0KLS8v
IFNpbmdsZSBjb21wcmVzc2VkIERYVDEgYmxvY2sgb2Ygc291cmNlIHBpeGVscyBhbGwgc2V0IHRv
OgotLy8gQ29tcHJlc3NlZEltYWdlQ29sb3IuCi1jb25zdCB1aW50OF90IENvbXByZXNzZWRJbWFn
ZURYVDFbOF0gPSB7MHgwMCwgMHhmOCwgMHgwMCwgMHhmOCwgMHhhYSwgMHhhYSwgMHhhYSwgMHhh
YX07Ci0KLS8vIFNpbmdsZSBjb21wcmVzc2VkIERYVDUgYmxvY2sgb2Ygc291cmNlIHBpeGVscyBh
bGwgc2V0IHRvOgotLy8gQ29tcHJlc3NlZEltYWdlQ29sb3IuCi1jb25zdCB1aW50OF90IENvbXBy
ZXNzZWRJbWFnZURYVDVbMTZdID0gezB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAgMHgwLCAgMHgwLCAg
MHgwLCAgMHgwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAs
ICAweGY4LCAweDAsIDB4ZjgsIDB4YWEsIDB4YWEsIDB4YWEsIDB4YWF9OwotCi0vLyBTaW5nbGUg
Y29tcHJlc3NlZCBEWFQxIGJsb2NrIG9mIHNvdXJjZSBwaXhlbHMgYWxsIHNldCB0bzoKLS8vIENv
bXByZXNzZWRJbWFnZUNvbG9yLgotY29uc3QgdWludDhfdCBDb21wcmVzc2VkSW1hZ2VFVEMxWzhd
ID0gezB4MCwgMHgwLCAweGY4LCAweDIsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwfTsKLQotfSAgLy8g
YW5vbnltb3VzIG5hbWVzcGFjZQotCi0vLyBUZXN0IHRvIGVuc3VyZSB0aGF0IHRoZSBiYXNpYyBm
dW5jdGlvbmFsaXR5IG9mIHRoZSBleHRlbnNpb24gd29ya3MuCi1URVNUX1AoQ29weUNvbXByZXNz
ZWRUZXh0dXJlVGVzdCwgQmFzaWMpCi17Ci0gICAgaWYgKCFjaGVja0V4dGVuc2lvbnMoKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQo
IkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25f
ZHh0MSBpcyBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmVzWzBdKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xf
TkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULCA0LCA0LCAwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKENvbXByZXNzZWRJbWFnZURYVDEpLCBD
b21wcmVzc2VkSW1hZ2VEWFQxKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGds
QmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsKLSAgICBnbFRleFBhcmFt
ZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0Up
OwotICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwg
R0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xD
b21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSk7
Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBMb2FkIHRleHR1cmUuCi0gICAg
Z2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlc1sxXSk7Ci0gICAgR0xpbnQgdGV4dHVyZUxvYyA9IGdsR2V0VW5pZm9y
bUxvY2F0aW9uKG1Qcm9ncmFtLCAidV90ZXh0dXJlIik7Ci0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9n
cmFtKTsKLSAgICBnbFVuaWZvcm0xaSh0ZXh0dXJlTG9jLCAwKTsKLQotICAgIC8vIERyYXcuCi0g
ICAgZHJhd1F1YWQobVByb2dyYW0sICJhX3Bvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBFQ1Rf
UElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8g
MiwgQ29tcHJlc3NlZEltYWdlQ29sb3IpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotfQot
Ci0vLyBUZXN0IHZhbGlkYXRpb24gb2YgY29tcHJlc3NlZCBmb3JtYXRzCi1URVNUX1AoQ29weUNv
bXByZXNzZWRUZXh0dXJlVGVzdCwgSW50ZXJuYWxGb3JtYXQpCi17Ci0gICAgaWYgKCFjaGVja0V4
dGVuc2lvbnMoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzdHJ1Y3Qg
RGF0YQotICAgIHsKLSAgICAgICAgR0xpbnQgZm9ybWF0OwotICAgICAgICBjb25zdCB1aW50OF90
ICpkYXRhOwotICAgICAgICBHTHNpemVpIGRhdGFTaXplOwotCi0gICAgICAgIERhdGEoKSA6IERh
dGEoR0xfTk9ORSwgbnVsbHB0ciwgMCkge30KLSAgICAgICAgRGF0YShHTGludCBmb3JtYXQsIGNv
bnN0IHVpbnQ4X3QgKmRhdGEsIEdMc2l6ZWkgZGF0YVNpemUpCi0gICAgICAgICAgICA6IGZvcm1h
dChmb3JtYXQpLCBkYXRhKGRhdGEpLCBkYXRhU2l6ZShkYXRhU2l6ZSkKLSAgICAgICAgewotICAg
ICAgICB9Ci0gICAgfTsKLSAgICBzdGQ6OnZlY3RvcjxEYXRhPiBzdXBwb3J0ZWRGb3JtYXRzOwot
Ci0gICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQoIkdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJl
IikpCi0gICAgewotICAgICAgICBzdXBwb3J0ZWRGb3JtYXRzLnB1c2hfYmFjaygKLSAgICAgICAg
ICAgIERhdGEoR0xfQVRDX1JHQl9BTUQsIENvbXByZXNzZWRJbWFnZUFUQywgc2l6ZW9mKENvbXBy
ZXNzZWRJbWFnZUFUQykpKTsKLSAgICAgICAgc3VwcG9ydGVkRm9ybWF0cy5wdXNoX2JhY2soRGF0
YShHTF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFfQU1ELCBDb21wcmVzc2VkSW1hZ2VBVENJ
QSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoQ29tcHJl
c3NlZEltYWdlQVRDSUEpKSk7Ci0gICAgfQotICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9F
WFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIikpCi0gICAgewotICAgICAgICBzdXBwb3J0ZWRG
b3JtYXRzLnB1c2hfYmFjayhEYXRhKEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQsIENv
bXByZXNzZWRJbWFnZURYVDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZW9mKENvbXByZXNzZWRJbWFnZURYVDEpKSk7Ci0gICAgfQotICAgIGlmIChleHRlbnNp
b25FbmFibGVkKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKSkKLSAgICB7Ci0g
ICAgICAgIHN1cHBvcnRlZEZvcm1hdHMucHVzaF9iYWNrKERhdGEoR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUNV9FWFQsIENvbXByZXNzZWRJbWFnZURYVDUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKENvbXByZXNzZWRJbWFnZURYVDUpKSk7Ci0gICAg
fQotICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhf
dGV4dHVyZSIpKQotICAgIHsKLSAgICAgICAgc3VwcG9ydGVkRm9ybWF0cy5wdXNoX2JhY2soCi0g
ICAgICAgICAgICBEYXRhKEdMX0VUQzFfUkdCOF9PRVMsIENvbXByZXNzZWRJbWFnZUVUQzEsIHNp
emVvZihDb21wcmVzc2VkSW1hZ2VFVEMxKSkpOwotICAgIH0KLQotICAgIGZvciAoY29uc3QgYXV0
byAmc3VwcG9ydGVkRm9ybWF0IDogc3VwcG9ydGVkRm9ybWF0cykKLSAgICB7Ci0gICAgICAgIGds
QmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKLSAgICAgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19F
REdFKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
V1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05F
QVJFU1QpOwotICAgICAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IHN1cHBvcnRlZEZvcm1hdC5mb3JtYXQsIDQsIDQsIDAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3VwcG9ydGVkRm9ybWF0LmRhdGFTaXplLCBzdXBwb3J0ZWRGb3JtYXQuZGF0YSk7
Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAg
ICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9D
TEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAg
ICAgICBnbENvbXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1
cmVzWzFdKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotfQotCi0vLyBU
ZXN0IHRoYXQgdW5jb21wcmVzc2VkIHRleHR1cmVzIGdlbmVyYXRlIGVycm9ycyB3aGVuIGNvcHlp
bmcKLVRFU1RfUChDb3B5Q29tcHJlc3NlZFRleHR1cmVUZXN0LCBJbnRlcm5hbEZvcm1hdE5vdFN1
cHBvcnRlZCkKLXsKLSAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQotICAgIHsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1
cmVzWzBdKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9X
UkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7
Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRF
UiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JH
QkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZHTENvbG9yOjpyZWQpOwot
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBtVGV4dHVyZXNbMV0pOwotICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJm
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLSAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBH
TF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQot
ICAgIC8vIENoZWNrIHRoYXQgdGhlIEdMX1JHQkEgZm9ybWF0IHJlcG9ydHMgYW4gZXJyb3IuCi0g
ICAgZ2xDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJl
c1sxXSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQot
Ly8gVGVzdCB2YWxpZGF0aW9uIG9mIHRleHR1cmUgSURzCi1URVNUX1AoQ29weUNvbXByZXNzZWRU
ZXh0dXJlVGVzdCwgSW52YWxpZFRleHR1cmVJZHMpCi17Ci0gICAgaWYgKCFjaGVja0V4dGVuc2lv
bnMoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RP
X0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01J
Tl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsQ29tcHJlc3NlZFRl
eEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VY
VCwgNCwgNCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihDb21wcmVzc2Vk
SW1hZ2VEWFQxKSwgQ29tcHJlc3NlZEltYWdlRFhUMSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7Ci0g
ICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9D
TEFNUF9UT19FREdFKTsKLSAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVY
VFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJF
U1QpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xDb21wcmVzc2VkQ29weVRl
eHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIDk5OTkzKTsKLSAgICBFWFBFQ1RfR0xfRVJST1Io
R0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICBnbENvbXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVN
KDk5OTk0LCBtVGV4dHVyZXNbMV0pOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZB
TFVFKTsKLQotICAgIGdsQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0oOTk5OTUsIDk5OTk2
KTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICBnbENvbXBy
ZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdKTsKLSAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCB0aGF0IG9ubHkgMkQgdGV4dHVy
ZXMgYXJlIHZhbGlkCi1URVNUX1AoQ29weUNvbXByZXNzZWRUZXh0dXJlVGVzdCwgQmluZGluZ1Bv
aW50cykKLXsKLSAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQotICAgIHsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJFX01BUCwgbVRl
eHR1cmVzWzBdKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xf
VEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7
Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VC
RV9NQVAsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZm9yIChHTGVu
dW0gZmFjZSA9IEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDsgZmFjZSA8PSBHTF9URVhU
VVJFX0NVQkVfTUFQX05FR0FUSVZFX1o7Ci0gICAgICAgICBmYWNlKyspCi0gICAgewotICAgICAg
ICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKGZhY2UsIDAsIEdMX0NPTVBSRVNTRURfUkdCX1MzVENf
RFhUMV9FWFQsIDQsIDQsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9m
KENvbXByZXNzZWRJbWFnZURYVDEpLCBDb21wcmVzc2VkSW1hZ2VEWFQxKTsKLSAgICB9Ci0gICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VC
RV9NQVAsIG1UZXh0dXJlc1sxXSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfQ1VC
RV9NQVAsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBnbFRleFBh
cmFtZXRlcmYoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1Q
X1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9U
RVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xDb21wcmVzc2VkQ29weVRleHR1cmVDSFJP
TUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdM
X0lOVkFMSURfVkFMVUUpOwotfQotCi0vLyBUZXN0IHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlIGNh
bm5vdCBiZSBpbW11dGFibGUKLVRFU1RfUChDb3B5Q29tcHJlc3NlZFRleHR1cmVUZXN0LCBJbW11
dGFibGUpCi17Ci0gICAgaWYgKCFjaGVja0V4dGVuc2lvbnMoKSB8fCBnZXRDbGllbnRNYWpvclZl
cnNpb24oKSA8IDMpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOwotICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0g
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9D
TEFNUF9UT19FREdFKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVY
VFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbENvbXBy
ZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX0NPTVBSRVNTRURfUkdCX1MzVENf
RFhUMV9FWFQsIDQsIDQsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoQ29t
cHJlc3NlZEltYWdlRFhUMSksIENvbXByZXNzZWRJbWFnZURYVDEpOwotICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNb
MV0pOwotICAgIGdsVGV4U3RvcmFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX0NPTVBSRVNTRURf
UkdCX1MzVENfRFhUMV9FWFQsIDQsIDQpOwotICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJh
bWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdF
KTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklM
VEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKLQotICAgIGdsQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBt
VGV4dHVyZXNbMV0pOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3
aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZQotLy8gdGVzdHMg
c2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChDb3B5Q29tcHJl
c3NlZFRleHR1cmVUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
RVMzX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBF
UzJfT1BFTkdMRVMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwot
Ci19ICAvLyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db3B5VGV4SW1hZ2VUZXN0LmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db3B5VGV4SW1hZ2VUZXN0LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNiNzQyNjFiNmRmMDJiMjU5OWI4MzEyODFkNjFj
ZjM1ZjIwYzY2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29weVRleEltYWdl
VGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNDMgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdo
dCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0v
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2lu
Y2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLW5hbWVzcGFjZSBhbmdsZQotewotCi1j
bGFzcyBDb3B5VGV4SW1hZ2VUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6
Ci0gICAgQ29weVRleEltYWdlVGVzdCgpCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgx
Nik7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgxNik7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJp
dHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmln
Qmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICB9Ci0KLSAg
ICBHTHVpbnQgY3JlYXRlRnJhbWVidWZmZXIoR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdM
ZmxvYXQgY29sb3JbNF0pIGNvbnN0Ci0gICAgewotICAgICAgICBHTHVpbnQgZmJvOwotICAgICAg
ICBnbEdlbkZyYW1lYnVmZmVycygxLCAmZmJvKTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIGZibyk7Ci0KLSAgICAgICAgR0x1aW50IHRleHR1cmUgPSBjcmVhdGVU
ZXh0dXJlKGZvcm1hdCwgdHlwZSk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgdGV4dHVyZSk7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZG
RVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlLCAwKTsKLQot
ICAgICAgICBnbENsZWFyQ29sb3IoY29sb3JbMF0sIGNvbG9yWzFdLCBjb2xvclsyXSwgY29sb3Jb
M10pOwotICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgICAgIHJl
dHVybiBmYm87Ci0gICAgfQotCi0gICAgR0x1aW50IGNyZWF0ZVRleHR1cmUoR0xlbnVtIGZvcm1h
dCwgR0xlbnVtIHR5cGUpIGNvbnN0Ci0gICAgewotICAgICAgICBHTHVpbnQgdGV4OwotICAgICAg
ICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIHRleCk7Ci0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBmb3Jt
YXQsIDE2LCAxNiwgMCwgZm9ybWF0LCB0eXBlLCBudWxscHRyKTsKLQotICAgICAgICAvLyBEaXNh
YmxlIG1pcG1hcHBpbmcKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotCi0g
ICAgICAgIHJldHVybiB0ZXg7Ci0gICAgfQotCi0gICAgR0x1aW50IGNyZWF0ZVRleHR1cmVGcm9t
Q29weVRleEltYWdlKEdMdWludCBmYm8sIEdMZW51bSBmb3JtYXQpIGNvbnN0Ci0gICAgewotICAg
ICAgICBHTHVpbnQgdGV4OwotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOwotICAgICAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7Ci0KLSAgICAgICAgZ2xCaW5kRnJh
bWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZibyk7Ci0gICAgICAgIGdsQ29weVRleEltYWdlMkQo
R0xfVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCAwLCAwLCAxNiwgMTYsIDApOwotCi0gICAgICAgIC8v
IERpc2FibGUgbWlwbWFwcGluZwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICAgICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7
Ci0KLSAgICAgICAgcmV0dXJuIHRleDsKLSAgICB9Ci0KLSAgICB2b2lkIGNvcHlUZXh0dXJlV2l0
aENvcHlUZXhTdWJJbWFnZShHTHVpbnQgZmJvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCB4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSB3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
aCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4
dHVyZSk7Ci0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8pOwot
ICAgICAgICBnbENvcHlUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIHhvZmZzZXQsIHlv
ZmZzZXQsIHgsIHksIHcsIGgpOwotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIHZzU291cmNlID0KLSAgICAgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4i
Ci0gICAgICAgICAgICAiYXR0cmlidXRlIHZlYzQgcG9zaXRpb247XG4iCi0gICAgICAgICAgICAi
dmFyeWluZyB2ZWMyIHRleGNvb3JkO1xuIgotICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAg
InZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgICBnbF9Q
b3NpdGlvbiA9IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgIiAgICB0ZXhjb29yZCA9IChwb3Np
dGlvbi54eSAqIDAuNSkgKyAwLjU7XG4iCi0gICAgICAgICAgICAiICAgIHRleGNvb3JkLnkgPSAx
LjAgLSB0ZXhjb29yZC55O1xuIgotICAgICAgICAgICAgIn1cbiI7Ci0KLSAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgdGV4dHVyZUZTU291cmNlID0KLSAgICAgICAgICAgICJwcmVjaXNpb24gaGln
aHAgZmxvYXQ7XG4iCi0gICAgICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4O1xuIgotICAg
ICAgICAgICAgInZhcnlpbmcgdmVjMiB0ZXhjb29yZDtcbiIKLSAgICAgICAgICAgICJcbiIKLSAg
ICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAg
ICIgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQpO1xuIgotICAgICAg
ICAgICAgIn1cbiI7Ci0KLSAgICAgICAgbVRleHR1cmVQcm9ncmFtID0gQ29tcGlsZVByb2dyYW0o
dnNTb3VyY2UsIHRleHR1cmVGU1NvdXJjZSk7Ci0gICAgICAgIGlmIChtVGV4dHVyZVByb2dyYW0g
PT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRp
b24gZmFpbGVkLiI7Ci0gICAgICAgIH0KLQotICAgICAgICBtVGV4dHVyZVVuaWZvcm1Mb2NhdGlv
biA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1UZXh0dXJlUHJvZ3JhbSwgInRleCIpOwotCi0gICAg
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1UZXh0dXJlUHJvZ3JhbSk7
Ci0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQotICAgIHZvaWQgdmVy
aWZ5UmVzdWx0cyhHTHVpbnQgdGV4dHVyZSwgR0x1Ynl0ZSBkYXRhWzRdLCBHTGludCB4LCBHTGlu
dCB5KQotICAgIHsKLSAgICAgICAgZ2xWaWV3cG9ydCgwLCAwLCAxNiwgMTYpOwotCi0gICAgICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKLQotICAgICAgICAvLyBEcmF3
IGEgcXVhZCB3aXRoIHRoZSB0YXJnZXQgdGV4dHVyZQotICAgICAgICBnbFVzZVByb2dyYW0obVRl
eHR1cmVQcm9ncmFtKTsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0
dXJlKTsKLSAgICAgICAgZ2xVbmlmb3JtMWkobVRleHR1cmVVbmlmb3JtTG9jYXRpb24sIDApOwot
Ci0gICAgICAgIGRyYXdRdWFkKG1UZXh0dXJlUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0K
LSAgICAgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHJlbmRlcmVkIHF1YWQgaGFzIHRoZSBzYW1lIGNv
bG9yIGFzIHRoZSBzb3VyY2UgdGV4dHVyZQotICAgICAgICBFWFBFQ1RfUElYRUxfTkVBUih4LCB5
LCBkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdLCBkYXRhWzNdLCAxLjApOwotICAgIH0KLQotICAg
IEdMdWludCBtVGV4dHVyZVByb2dyYW07Ci0gICAgR0xpbnQgbVRleHR1cmVVbmlmb3JtTG9jYXRp
b247Ci19OwotCi1URVNUX1AoQ29weVRleEltYWdlVGVzdCwgUkdCQVRvTCkKLXsKLSAgICBHTGZs
b2F0IGNvbG9yW10gPSB7Ci0gICAgICAgIDAuMjVmLCAxLjBmLCAwLjc1ZiwgMC41ZiwKLSAgICB9
OwotCi0gICAgR0x1aW50IGZibyA9IGNyZWF0ZUZyYW1lYnVmZmVyKEdMX1JHQkEsIEdMX1VOU0lH
TkVEX0JZVEUsIGNvbG9yKTsKLSAgICBHTHVpbnQgdGV4ID0gY3JlYXRlVGV4dHVyZUZyb21Db3B5
VGV4SW1hZ2UoZmJvLCBHTF9MVU1JTkFOQ0UpOwotCi0gICAgR0x1Ynl0ZSBleHBlY3RlZFtdID0g
ewotICAgICAgICA2NCwgNjQsIDY0LCAyNTUsCi0gICAgfTsKLSAgICB2ZXJpZnlSZXN1bHRzKHRl
eCwgZXhwZWN0ZWQsIDAsIDApOwotfQotCi1URVNUX1AoQ29weVRleEltYWdlVGVzdCwgUkdCVG9M
KQotewotICAgIC8vIFRPRE8gKGdlb2ZmbGFuZyk6IEZpZ3VyZSBvdXQgd2h5IENvcHlUZXhbU3Vi
XUltYWdlIGRvZXNuJ3Qgd29yayB3aXRoCi0gICAgLy8gUkdCLT5MIG9uIG9sZGVyIEludGVsIGNo
aXBzCi0gICAgaWYgKElzSW50ZWwoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0
IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xmbG9hdCBjb2xvcltdID0gewotICAgICAgICAwLjI1
ZiwgMS4wZiwgMC43NWYsIDAuNWYsCi0gICAgfTsKLQotICAgIEdMdWludCBmYm8gPSBjcmVhdGVG
cmFtZWJ1ZmZlcihHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUsIGNvbG9yKTsKLSAgICBHTHVpbnQg
dGV4ID0gY3JlYXRlVGV4dHVyZUZyb21Db3B5VGV4SW1hZ2UoZmJvLCBHTF9MVU1JTkFOQ0UpOwot
Ci0gICAgR0x1Ynl0ZSBleHBlY3RlZFtdID0gewotICAgICAgICA2NCwgNjQsIDY0LCAyNTUsCi0g
ICAgfTsKLSAgICB2ZXJpZnlSZXN1bHRzKHRleCwgZXhwZWN0ZWQsIDAsIDApOwotfQotCi1URVNU
X1AoQ29weVRleEltYWdlVGVzdCwgUkdCQVRvTEEpCi17Ci0gICAgR0xmbG9hdCBjb2xvcltdID0g
ewotICAgICAgICAwLjI1ZiwgMS4wZiwgMC43NWYsIDAuNWYsCi0gICAgfTsKLQotICAgIEdMdWlu
dCBmYm8gPSBjcmVhdGVGcmFtZWJ1ZmZlcihHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBjb2xv
cik7Ci0gICAgR0x1aW50IHRleCA9IGNyZWF0ZVRleHR1cmVGcm9tQ29weVRleEltYWdlKGZibywg
R0xfTFVNSU5BTkNFX0FMUEhBKTsKLQotICAgIEdMdWJ5dGUgZXhwZWN0ZWRbXSA9IHsKLSAgICAg
ICAgNjQsIDY0LCA2NCwgMTI3LAotICAgIH07Ci0gICAgdmVyaWZ5UmVzdWx0cyh0ZXgsIGV4cGVj
dGVkLCAwLCAwKTsKLX0KLQotVEVTVF9QKENvcHlUZXhJbWFnZVRlc3QsIFJHQkFUb0EpCi17Ci0g
ICAgR0xmbG9hdCBjb2xvcltdID0gewotICAgICAgICAwLjI1ZiwgMS4wZiwgMC43NWYsIDAuNWYs
Ci0gICAgfTsKLQotICAgIEdMdWludCBmYm8gPSBjcmVhdGVGcmFtZWJ1ZmZlcihHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLCBjb2xvcik7Ci0gICAgR0x1aW50IHRleCA9IGNyZWF0ZVRleHR1cmVG
cm9tQ29weVRleEltYWdlKGZibywgR0xfQUxQSEEpOwotCi0gICAgR0x1Ynl0ZSBleHBlY3RlZFtd
ID0gewotICAgICAgICAwLCAwLCAwLCAxMjcsCi0gICAgfTsKLSAgICB2ZXJpZnlSZXN1bHRzKHRl
eCwgZXhwZWN0ZWQsIDAsIDApOwotfQotCi1URVNUX1AoQ29weVRleEltYWdlVGVzdCwgU3ViSW1h
Z2VSR0JBVG9MKQotewotICAgIEdMZmxvYXQgY29sb3IwW10gPSB7Ci0gICAgICAgIDAuMjVmLCAx
LjBmLCAwLjc1ZiwgMC41ZiwKLSAgICB9OwotICAgIEdMdWludCBmYm8wID0gY3JlYXRlRnJhbWVi
dWZmZXIoR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgY29sb3IwKTsKLSAgICBHTHVpbnQgdGV4
ICA9IGNyZWF0ZVRleHR1cmVGcm9tQ29weVRleEltYWdlKGZibzAsIEdMX0xVTUlOQU5DRSk7Ci0K
LSAgICBHTGZsb2F0IGNvbG9yMVtdID0gewotICAgICAgICAwLjVmLCAwLjI1ZiwgMS4wZiwgMC43
NWYsCi0gICAgfTsKLSAgICBHTHVpbnQgZmJvMSA9IGNyZWF0ZUZyYW1lYnVmZmVyKEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsIGNvbG9yMSk7Ci0gICAgY29weVRleHR1cmVXaXRoQ29weVRleFN1
YkltYWdlKGZibzEsIHRleCwgMiwgNCwgNSwgNiwgOCwgOCk7Ci0KLSAgICBHTHVieXRlIGV4cGVj
dGVkMFtdID0gewotICAgICAgICA2NCwgNjQsIDY0LCAyNTUsCi0gICAgfTsKLSAgICB2ZXJpZnlS
ZXN1bHRzKHRleCwgZXhwZWN0ZWQwLCAwLCAwKTsKLQotICAgIEdMdWJ5dGUgZXhwZWN0ZWQxW10g
PSB7Ci0gICAgICAgIDEyNywgMTI3LCAxMjcsIDI1NSwKLSAgICB9OwotICAgIHZlcmlmeVJlc3Vs
dHModGV4LCBleHBlY3RlZDEsIDcsIDcpOwotfQotCi1URVNUX1AoQ29weVRleEltYWdlVGVzdCwg
U3ViSW1hZ2VSR0JBVG9MQSkKLXsKLSAgICBHTGZsb2F0IGNvbG9yMFtdID0gewotICAgICAgICAw
LjI1ZiwgMS4wZiwgMC43NWYsIDAuNWYsCi0gICAgfTsKLSAgICBHTHVpbnQgZmJvMCA9IGNyZWF0
ZUZyYW1lYnVmZmVyKEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGNvbG9yMCk7Ci0gICAgR0x1
aW50IHRleCAgPSBjcmVhdGVUZXh0dXJlRnJvbUNvcHlUZXhJbWFnZShmYm8wLCBHTF9MVU1JTkFO
Q0VfQUxQSEEpOwotCi0gICAgR0xmbG9hdCBjb2xvcjFbXSA9IHsKLSAgICAgICAgMC41ZiwgMC4y
NWYsIDEuMGYsIDAuNzVmLAotICAgIH07Ci0gICAgR0x1aW50IGZibzEgPSBjcmVhdGVGcmFtZWJ1
ZmZlcihHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBjb2xvcjEpOwotICAgIGNvcHlUZXh0dXJl
V2l0aENvcHlUZXhTdWJJbWFnZShmYm8xLCB0ZXgsIDIsIDQsIDUsIDYsIDgsIDgpOwotCi0gICAg
R0x1Ynl0ZSBleHBlY3RlZDBbXSA9IHsKLSAgICAgICAgNjQsIDY0LCA2NCwgMTI3LAotICAgIH07
Ci0gICAgdmVyaWZ5UmVzdWx0cyh0ZXgsIGV4cGVjdGVkMCwgMCwgMCk7Ci0KLSAgICBHTHVieXRl
IGV4cGVjdGVkMVtdID0gewotICAgICAgICAxMjcsIDEyNywgMTI3LCAxOTIsCi0gICAgfTsKLSAg
ICB2ZXJpZnlSZXN1bHRzKHRleCwgZXhwZWN0ZWQxLCA3LCA3KTsKLX0KLQotVEVTVF9QKENvcHlU
ZXhJbWFnZVRlc3QsIFN1YkltYWdlUkdCVG9MKQotewotICAgIC8vIFRPRE8gKGdlb2ZmbGFuZyk6
IEZpZ3VyZSBvdXQgd2h5IENvcHlUZXhbU3ViXUltYWdlIGRvZXNuJ3Qgd29yayB3aXRoCi0gICAg
Ly8gUkdCLT5MIG9uIG9sZGVyIEludGVsIGNoaXBzCi0gICAgaWYgKElzSW50ZWwoKSAmJiBnZXRQ
bGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xF
KQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgT3Bl
bkdMLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xmbG9h
dCBjb2xvcjBbXSA9IHsKLSAgICAgICAgMC4yNWYsIDEuMGYsIDAuNzVmLCAwLjVmLAotICAgIH07
Ci0gICAgR0x1aW50IGZibzAgPSBjcmVhdGVGcmFtZWJ1ZmZlcihHTF9SR0IsIEdMX1VOU0lHTkVE
X0JZVEUsIGNvbG9yMCk7Ci0gICAgR0x1aW50IHRleCAgPSBjcmVhdGVUZXh0dXJlRnJvbUNvcHlU
ZXhJbWFnZShmYm8wLCBHTF9MVU1JTkFOQ0UpOwotCi0gICAgR0xmbG9hdCBjb2xvcjFbXSA9IHsK
LSAgICAgICAgMC41ZiwgMC4yNWYsIDEuMGYsIDAuNzVmLAotICAgIH07Ci0gICAgR0x1aW50IGZi
bzEgPSBjcmVhdGVGcmFtZWJ1ZmZlcihHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUsIGNvbG9yMSk7
Ci0gICAgY29weVRleHR1cmVXaXRoQ29weVRleFN1YkltYWdlKGZibzEsIHRleCwgMiwgNCwgNSwg
NiwgOCwgOCk7Ci0KLSAgICBHTHVieXRlIGV4cGVjdGVkMFtdID0gewotICAgICAgICA2NCwgNjQs
IDY0LCAyNTUsCi0gICAgfTsKLSAgICB2ZXJpZnlSZXN1bHRzKHRleCwgZXhwZWN0ZWQwLCAwLCAw
KTsKLQotICAgIEdMdWJ5dGUgZXhwZWN0ZWQxW10gPSB7Ci0gICAgICAgIDEyNywgMTI3LCAxMjcs
IDI1NSwKLSAgICB9OwotICAgIHZlcmlmeVJlc3VsdHModGV4LCBleHBlY3RlZDEsIDcsIDcpOwot
fQotCi0vLyBzcGVjaWFsaXphdGlvbiBvZiBDb3B5VGV4SW1hZ2VUZXN0IGlzIGFkZGVkIHNvIHRo
YXQgc29tZSB0ZXN0cyBjYW4gYmUgZXhwbGljaXRseSBydW4gd2l0aCBhbiBFUzMKLS8vIGNvbnRl
eHQKLWNsYXNzIENvcHlUZXhJbWFnZVRlc3RFUzMgOiBwdWJsaWMgQ29weVRleEltYWdlVGVzdAot
ewotfTsKLQotLy8gIFRoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgZ2xDb3B5VGV4U3ViSW1hZ2UyRCBn
ZW5lcmF0ZXMgYSBHTF9JTlZBTElEX09QRVJBVElPTiBlcnJvcgotLy8gIHdoZW4gdGhlIHJlYWQg
YnVmZmVyIGlzIEdMX05PTkUuCi0vLyAgUmVmZXJlbmNlOiBHTEVTIDMuMC40LCBTZWN0aW9uIDMu
OC41IEFsdGVybmF0ZSBUZXh0dXJlIEltYWdlIFNwZWNpZmljYXRpb24gQ29tbWFuZHMKLVRFU1Rf
UChDb3B5VGV4SW1hZ2VUZXN0RVMzLCBSZWFkQnVmZmVySXNOb25lKQotewotICAgIEdMZmxvYXQg
Y29sb3JbXSA9IHsKLSAgICAgICAgMC4yNWYsIDEuMGYsIDAuNzVmLCAwLjVmLAotICAgIH07Ci0K
LSAgICBHTHVpbnQgZmJvID0gY3JlYXRlRnJhbWVidWZmZXIoR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgY29sb3IpOwotICAgIEdMdWludCB0ZXggPSBjcmVhdGVUZXh0dXJlRnJvbUNvcHlUZXhJ
bWFnZShmYm8sIEdMX1JHQkEpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIGZibyk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXgpOwotCi0gICAg
Z2xSZWFkQnVmZmVyKEdMX05PTkUpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAg
Z2xDb3B5VGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAwLCAwLCA0LCA0KTsK
LSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgZ2xEZWxl
dGVGcmFtZWJ1ZmZlcnMoMSwgJmZibyk7Ci0gICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4KTsK
LX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdo
aWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlCi0vLyB0ZXN0cyBz
aG91bGQgYmUgcnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKENvcHlUZXhJbWFn
ZVRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9EM0QxMShFR0xfRVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9DT1BZX0FO
R0xFKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKEVHTF9FWFBFUklNRU5UQUxf
UFJFU0VOVF9QQVRIX0ZBU1RfQU5HTEUpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BF
TkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woMywgMyksCi0gICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpKTsKLQotQU5HTEVfSU5TVEFOVElBVEVfVEVT
VChDb3B5VGV4SW1hZ2VUZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BF
TkdMRVMoKSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZ2xfdGVzdHMvQ29weVRleHR1cmVUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbF90ZXN0cy9Db3B5VGV4dHVyZVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1NTM4NjFlN2Q3OWQxNzExYTBlNmQ0ZGJiZWQzNDg3YzBhMTM3NmY5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db3B5VGV4dHVyZVRlc3QuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNTY2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIENvcHlUZXh0dXJlVGVz
dC5jcHA6IFRlc3RzIG9mIHRoZSBHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmUgZXh0ZW5zaW9uCi0K
LSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi1uYW1lc3BhY2UgYW5nbGUKLXsK
LQotY2xhc3MgQ29weVRleHR1cmVUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0
ZWQ6Ci0gICAgQ29weVRleHR1cmVUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRo
KDI1Nik7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgyNTYpOwotICAgICAgICBzZXRDb25maWdS
ZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENv
bmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQot
Ci0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNl
dFVwKCk7Ci0KLSAgICAgICAgZ2xHZW5UZXh0dXJlcygyLCBtVGV4dHVyZXMpOwotICAgICAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7Ci0KLSAgICAgICAgZ2xU
ZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9U
T19FREdFKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdM
X05FQVJFU1QpOwotCi0gICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtRnJhbWVidWZmZXIp
OwotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVy
KTsKLSAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09M
T1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAwKTsKLQotICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgi
R0xfQ0hST01JVU1fY29weV90ZXh0dXJlIikpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsQ29w
eVRleHR1cmVDSFJPTUlVTSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xDT1BZVEVYVFVSRUNIUk9N
SVVNUFJPQz4oCi0gICAgICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsQ29weVRleHR1
cmVDSFJPTUlVTSIpKTsKLSAgICAgICAgICAgIGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xDT1BZU1VCVEVYVFVSRUNIUk9NSVVNUFJPQz4oCi0gICAgICAg
ICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsQ29weVN1YlRleHR1cmVDSFJPTUlVTSIpKTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsK
LSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygyLCBtVGV4dHVyZXMpOwotICAgICAgICBnbERlbGV0
ZUZyYW1lYnVmZmVycygxLCAmbUZyYW1lYnVmZmVyKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRl
YXJEb3duKCk7Ci0gICAgfQotCi0gICAgYm9vbCBjaGVja0V4dGVuc2lvbnMoKSBjb25zdAotICAg
IHsKLSAgICAgICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9jb3B5X3RleHR1
cmUiKSkKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQg
YmVjYXVzZSBHTF9DSFJPTUlVTV9jb3B5X3RleHR1cmUgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAg
ICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0KLSAgICAgICAgRVhQRUNUX05FKG51bGxwdHIsIGdsQ29weVRleHR1cmVD
SFJPTUlVTSk7Ci0gICAgICAgIEVYUEVDVF9ORShudWxscHRyLCBnbENvcHlTdWJUZXh0dXJlQ0hS
T01JVU0pOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVRleHR1
cmVzWzJdID0gewotICAgICAgICAwLCAwLAotICAgIH07Ci0gICAgR0x1aW50IG1GcmFtZWJ1ZmZl
ciA9IDA7Ci0KLSAgICBQRk5HTENPUFlURVhUVVJFQ0hST01JVU1QUk9DIGdsQ29weVRleHR1cmVD
SFJPTUlVTSAgICAgICA9IG51bGxwdHI7Ci0gICAgUEZOR0xDT1BZU1VCVEVYVFVSRUNIUk9NSVVN
UFJPQyBnbENvcHlTdWJUZXh0dXJlQ0hST01JVU0gPSBudWxscHRyOwotfTsKLQotLy8gVGVzdCB0
byBlbnN1cmUgdGhhdCB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZXh0ZW5zaW9uIHdv
cmtzLgotVEVTVF9QKENvcHlUZXh0dXJlVGVzdCwgQmFzaWNDb3B5VGV4dHVyZSkKLXsKLSAgICBp
ZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEdMQ29sb3IgcGl4ZWxzID0gR0xDb2xvcjo6cmVkOwotCi0gICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmcGl4
ZWxzKTsKLQotICAgIGdsQ29weVRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJl
c1sxXSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIGZhbHNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBmYWxzZSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQot
ICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBwaXhlbHMpOwotfQotCi0vLyBUZXN0IHRv
IGVuc3VyZSB0aGF0IHRoZSBiYXNpYyBmdW5jdGlvbmFsaXR5IG9mIHRoZSBleHRlbnNpb24gd29y
a3MuCi1URVNUX1AoQ29weVRleHR1cmVUZXN0LCBCYXNpY0NvcHlTdWJUZXh0dXJlKQotewotICAg
IGlmICghY2hlY2tFeHRlbnNpb25zKCkpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgR0xDb2xvciBwaXhlbHMgPSBHTENvbG9yOjpyZWQ7Ci0KLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZw
aXhlbHMpOwotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0p
OwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLQotICAgIGdsQ29weVN1YlRleHR1
cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgMCwgMCwgMCwgMCwgMSwgMSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAg
IC8vIENoZWNrIHRoYXQgRkIgaXMgY29tcGxldGUuCi0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9G
UkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVG
RkVSKSk7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgcGl4ZWxzKTsKLQotICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IHRoYXQgQ29weVRleHR1cmUgY2Fu
bm90IHJlZGVmaW5lIGFuIGltbXV0YWJsZSB0ZXh0dXJlIGFuZCBDb3B5U3ViVGV4dHVyZSBjYW4g
Y29weSBkYXRhIHRvCi0vLyBpbW11dGFibGUgdGV4dHVyZXMKLVRFU1RfUChDb3B5VGV4dHVyZVRl
c3QsIEltbXV0YWJsZVRleHR1cmUpCi17Ci0gICAgaWYgKCFjaGVja0V4dGVuc2lvbnMoKSkKLSAg
ICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCkgPCAzICYmCi0gICAgICAgICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVf
c3RvcmFnZSIpIHx8ICFleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfcmdiOF9yZ2JhOCIpKSkKLSAg
ICB7Ci0gICAgICAgIHN0ZDo6Y291dAotICAgICAgICAgICAgPDwgIlRlc3Qgc2tpcHBlZCBkdWUg
dG8gbWlzc2luZyBFUzMgb3IgR0xfRVhUX3RleHR1cmVfc3RvcmFnZSBvciBHTF9PRVNfcmdiOF9y
Z2JhOCIKLSAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIEdMQ29sb3IgcGl4ZWxzID0gR0xDb2xvcjo6cmVkOwotCi0gICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOwotICAgIGdsVGV4U3RvcmFnZTJERVhUKEdM
X1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4X09FUywgMSwgMSk7Ci0gICAgZ2xUZXhTdWJJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
ICZwaXhlbHMpOwotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNb
MV0pOwotICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4X09F
UywgMSwgMSk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xf
Q09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSwgMCk7Ci0gICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBTaG91bGQgZ2VuZXJhdGUgYW4gZXJyb3Ig
d2hlbiB0aGUgdGV4dHVyZSBpcyByZWRlZmluZWQKLSAgICBnbENvcHlUZXh0dXJlQ0hST01JVU0o
bVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0sIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGZh
bHNlLCBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwotICAgIEVYUEVD
VF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0KLSAgICAvLyBTaG91bGQgc3VjY2Vl
ZCB3aGVuIHVzaW5nIENvcHlTdWJUZXh0dXJlCi0gICAgZ2xDb3B5U3ViVGV4dHVyZUNIUk9NSVVN
KG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdLCAwLCAwLCAwLCAwLCAxLCAxLCBmYWxzZSwgZmFs
c2UsIGZhbHNlKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIENoZWNrIHRo
YXQgRkIgaXMgY29tcGxldGUuCi0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9D
T01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7Ci0KLSAg
ICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgcGl4ZWxzKTsKLQotICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOwotfQotCi0vLyBUZXN0IHZhbGlkYXRpb24gb2YgaW50ZXJuYWwgZm9ybWF0cyBp
biBDb3B5VGV4dHVyZSBhbmQgQ29weVN1YlRleHR1cmUKLVRFU1RfUChDb3B5VGV4dHVyZVRlc3Qs
IEludGVybmFsRm9ybWF0KQotewotICAgIGlmICghY2hlY2tFeHRlbnNpb25zKCkpCi0gICAgewot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IHNvdXJjZUZv
cm1hdHM7Ci0gICAgc291cmNlRm9ybWF0cy5wdXNoX2JhY2soR0xfQUxQSEEpOwotICAgIHNvdXJj
ZUZvcm1hdHMucHVzaF9iYWNrKEdMX1JHQik7Ci0gICAgc291cmNlRm9ybWF0cy5wdXNoX2JhY2so
R0xfUkdCQSk7Ci0gICAgc291cmNlRm9ybWF0cy5wdXNoX2JhY2soR0xfTFVNSU5BTkNFKTsKLSAg
ICBzb3VyY2VGb3JtYXRzLnB1c2hfYmFjayhHTF9MVU1JTkFOQ0VfQUxQSEEpOwotCi0gICAgc3Rk
Ojp2ZWN0b3I8R0xpbnQ+IGRlc3RGb3JtYXRzOwotICAgIGRlc3RGb3JtYXRzLnB1c2hfYmFjayhH
TF9SR0IpOwotICAgIGRlc3RGb3JtYXRzLnB1c2hfYmFjayhHTF9SR0JBKTsKLQotICAgIGlmIChl
eHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgiKSkKLSAgICB7
Ci0gICAgICAgIHNvdXJjZUZvcm1hdHMucHVzaF9iYWNrKEdMX0JHUkFfRVhUKTsKLSAgICAgICAg
ZGVzdEZvcm1hdHMucHVzaF9iYWNrKEdMX0JHUkFfRVhUKTsKLSAgICB9Ci0KLSAgICAvLyBUZXN0
IHdpdGggZ2xDb3B5VGV4dHVyZQotICAgIGZvciAoR0xpbnQgc291cmNlRm9ybWF0IDogc291cmNl
Rm9ybWF0cykKLSAgICB7Ci0gICAgICAgIGZvciAoR0xpbnQgZGVzdEZvcm1hdCA6IGRlc3RGb3Jt
YXRzKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IG1UZXh0dXJlc1swXSk7Ci0gICAgICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgc291cmNlRm9ybWF0LCAxLCAxLCAwLCBzb3VyY2VGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgICAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKLQotICAgICAgICAgICAgZ2xDb3B5VGV4dHVyZUNIUk9NSVVNKG1UZXh0
dXJlc1swXSwgbVRleHR1cmVzWzFdLCBkZXN0Rm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCBmYWxz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgZmFsc2UpOwotCi0g
ICAgICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IC8vIFRlc3Qgd2l0aCBnbENvcHlTdWJUZXh0dXJlCi0gICAgZm9yIChHTGludCBzb3VyY2VGb3Jt
YXQgOiBzb3VyY2VGb3JtYXRzKQotICAgIHsKLSAgICAgICAgZm9yIChHTGludCBkZXN0Rm9ybWF0
IDogZGVzdEZvcm1hdHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKLSAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCBzb3VyY2VGb3JtYXQsIDEsIDEsIDAsIHNvdXJjZUZvcm1hdCwgR0xfVU5T
SUdORURfQllURSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAg
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7Ci0gICAgICAgICAgICBnbFRleEltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgZGVzdEZvcm1hdCwgMSwgMSwgMCwgZGVzdEZvcm1hdCwgR0xfVU5TSUdO
RURfQllURSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgICAgICBnbENvcHlTdWJUZXh0dXJlQ0hS
T01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0sIDAsIDAsIDAsIDAsIDEsIDEsIGZhbHNl
LCBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7Ci0K
LSAgICAgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgICAgICB9Ci0gICAgfQotfQot
Ci0vLyBDaGVjayB0aGF0IGludmFsaWQgaW50ZXJuYWwgZm9ybWF0cyByZXR1cm4gZXJyb3JzLgot
VEVTVF9QKENvcHlUZXh0dXJlVGVzdCwgSW50ZXJuYWxGb3JtYXROb3RTdXBwb3J0ZWQpCi17Ci0g
ICAgaWYgKCFjaGVja0V4dGVuc2lvbnMoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7Ci0gICAg
Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IHVuc3VwcG9ydGVkRGVzdEZvcm1hdHM7Ci0gICAgdW5z
dXBwb3J0ZWREZXN0Rm9ybWF0cy5wdXNoX2JhY2soR0xfQUxQSEEpOwotICAgIHVuc3VwcG9ydGVk
RGVzdEZvcm1hdHMucHVzaF9iYWNrKEdMX0xVTUlOQU5DRSk7Ci0gICAgdW5zdXBwb3J0ZWREZXN0
Rm9ybWF0cy5wdXNoX2JhY2soR0xfTFVNSU5BTkNFX0FMUEhBKTsKLQotICAgIGlmICghZXh0ZW5z
aW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IikpCi0gICAgewotICAg
ICAgICB1bnN1cHBvcnRlZERlc3RGb3JtYXRzLnB1c2hfYmFjayhHTF9CR1JBX0VYVCk7Ci0gICAg
fQotCi0gICAgLy8gQ2hlY2sgdW5zdXBwb3J0ZWQgZm9ybWF0IHJlcG9ydHMgYW4gZXJyb3IuCi0g
ICAgZm9yIChHTGludCB1bnN1cHBvcnRlZERlc3RGb3JtYXQgOiB1bnN1cHBvcnRlZERlc3RGb3Jt
YXRzKQotICAgIHsKLSAgICAgICAgZ2xDb3B5VGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwg
bVRleHR1cmVzWzFdLCB1bnN1cHBvcnRlZERlc3RGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKLSAgICAg
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICB9Ci0KLSAgICBm
b3IgKEdMaW50IHVuc3VwcG9ydGVkRGVzdEZvcm1hdCA6IHVuc3VwcG9ydGVkRGVzdEZvcm1hdHMp
Ci0gICAgewotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sx
XSk7Ci0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCB1bnN1cHBvcnRlZERl
c3RGb3JtYXQsIDEsIDEsIDAsIHVuc3VwcG9ydGVkRGVzdEZvcm1hdCwKLSAgICAgICAgICAgICAg
ICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotICAgICAgICBnbENvcHlTdWJUZXh0
dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0sIDAsIDAsIDAsIDAsIDEsIDEs
IGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwotICAgIH0KLX0KLQotLy8gVGVzdCB0byBlbnN1cmUgdGhhdCB0aGUgZGVz
dGluYXRpb24gdGV4dHVyZSBpcyByZWRlZmluZWQgaWYgdGhlIHByb3BlcnRpZXMgYXJlIGRpZmZl
cmVudC4KLVRFU1RfUChDb3B5VGV4dHVyZVRlc3QsIFJlZGVmaW5lRGVzdGluYXRpb25UZXh0dXJl
KQotewotICAgIGlmICghY2hlY2tFeHRlbnNpb25zKCkpCi0gICAgewotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgR0xDb2xvciBwaXhlbHNbNF0gPSB7R0xDb2xvcjo6cmVkLCBHTENvbG9y
OjpyZWQsIEdMQ29sb3I6OnJlZCwgR0xDb2xvcjo6cmVkfTsKLQotICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgR0xfUkdCQSwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4
ZWxzKTsKLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsK
LSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfQkdSQV9FWFQsIDEsIDEsIDAs
IEdMX0JHUkFfRVhULCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHMpOwotICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOwotCi0gICAgLy8gR0xfSU5WQUxJRF9PUEVSQVRJT04gZHVlIHRvICJpbnRyaW5z
aWMgZm9ybWF0IiAhPSAiaW50ZXJuYWwgZm9ybWF0Ii4KLSAgICBnbFRleFN1YkltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgMCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4
ZWxzKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgIC8v
IEdMX0lOVkFMSURfVkFMVUUgZHVlIHRvIGJhZCBkaW1lbnNpb25zLgotICAgIGdsVGV4U3ViSW1h
Z2UyRChHTF9URVhUVVJFXzJELCAwLCAxLCAxLCAxLCAxLCBHTF9CR1JBX0VYVCwgR0xfVU5TSUdO
RURfQllURSwgcGl4ZWxzKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7
Ci0KLSAgICAvLyBJZiB0aGUgZGVzdCB0ZXh0dXJlIGhhcyBkaWZmZXJlbnQgcHJvcGVydGllcywg
Z2xDb3B5VGV4dHVyZUNIUk9NSVVNKCkKLSAgICAvLyByZWRlZmluZXMgdGhlbS4KLSAgICBnbENv
cHlUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0sIEdMX1JHQkEsIEdM
X1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmFsc2UpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gZ2xUZXhTdWJJbWFn
ZTJEKCkgc3VjY2VlZHMgYmVjYXVzZSBtVGV4dHVyZXNbMV0gaXMgcmVkZWZpbmVkIGludG8gMngy
Ci0gICAgLy8gZGltZW5zaW9uIGFuZCBHTF9SR0JBIGZvcm1hdC4KLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7Ci0gICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAsIDEsIDEsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVs
cyk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBDaGVjayB0aGF0IEZCIGlz
IGNvbXBsZXRlLgotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUs
IGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotCi0gICAgRVhQRUNU
X1BJWEVMX0NPTE9SX0VRKDEsIDEsIHBpeGVsc1szXSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBpbnZhbGlkIGRpbWVuc2lvbnMgaW4gQ29weVN1YlRleHR1
cmUgYXJlIHZhbGlkYXRlZAotVEVTVF9QKENvcHlUZXh0dXJlVGVzdCwgQ29weVN1YlRleHR1cmVE
aW1lbnNpb24pCi17Ci0gICAgaWYgKCFjaGVja0V4dGVuc2lvbnMoKSkKLSAgICB7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0
dXJlc1swXSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDIs
IDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotCi0gICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0pOwotICAgIGdsVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAzLCAzLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLCBudWxscHRyKTsKLQotICAgIGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNb
MF0sIG1UZXh0dXJlc1sxXSwgMSwgMSwgMCwgMCwgMSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7
Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyB4b2Zmc2V0IDwgMAotICAgIGds
Q29weVN1YlRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgLTEsIDEs
IDAsIDAsIDEsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIC8vIHggPCAwCi0gICAgZ2xDb3B5U3ViVGV4dHVyZUNI
Uk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdLCAxLCAxLCAtMSwgMCwgMSwgMSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUp
OwotCi0gICAgLy8geG9mZnNldCArIHdpZHRoID4gZGVzdF93aWR0aAotICAgIGdsQ29weVN1YlRl
eHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgMiwgMiwgMCwgMCwgMiwg
MiwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURf
VkFMVUUpOwotCi0gICAgLy8geCArIHdpZHRoID4gc291cmNlX3dpZHRoCi0gICAgZ2xDb3B5U3Vi
VGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdLCAwLCAwLCAxLCAxLCAy
LCAyLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJ
RF9WQUxVRSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBpbnZhbGlkIElEcyBpbiBDb3B5VGV4dHVyZSBh
cmUgdmFsaWRhdGVkCi1URVNUX1AoQ29weVRleHR1cmVUZXN0LCBDb3B5VGV4dHVyZUludmFsaWRU
ZXh0dXJlSWRzKQotewotICAgIGlmICghY2hlY2tFeHRlbnNpb25zKCkpCi0gICAgewotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4
dHVyZXNbMF0pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAy
LCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLQotICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsKLSAgICBnbFRleEltYWdlMkQo
R0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMywgMywgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgbnVsbHB0cik7Ci0KLSAgICBnbENvcHlUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBd
LCA5OTk5MywgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7
Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgZ2xDb3B5VGV4
dHVyZUNIUk9NSVVNKDk5OTk0LCBtVGV4dHVyZXNbMV0sIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X1ZBTFVFKTsKLQotICAgIGdsQ29weVRleHR1cmVDSFJPTUlVTSg5OTk5NSwgOTk5OTYsIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIGdsQ29weVRleHR1cmVDSFJPTUlVTSht
VGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgZmFs
c2UsIGZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7Ci0gICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBpbnZhbGlkIElEcyBpbiBDb3B5U3Vi
VGV4dHVyZSBhcmUgdmFsaWRhdGVkCi1URVNUX1AoQ29weVRleHR1cmVUZXN0LCBDb3B5U3ViVGV4
dHVyZUludmFsaWRUZXh0dXJlSWRzKQotewotICAgIGlmICghY2hlY2tFeHRlbnNpb25zKCkpCi0g
ICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCBtVGV4dHVyZXNbMF0pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
LCBHTF9SR0JBLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsK
LQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsKLSAgICBn
bFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMywgMywgMCwgR0xfUkdCQSwg
R0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0KLSAgICBnbENvcHlTdWJUZXh0dXJlQ0hST01J
VU0obVRleHR1cmVzWzBdLCA5OTk5MywgMSwgMSwgMCwgMCwgMSwgMSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgZ2xD
b3B5U3ViVGV4dHVyZUNIUk9NSVVNKDk5OTk0LCBtVGV4dHVyZXNbMV0sIDEsIDEsIDAsIDAsIDEs
IDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X1ZBTFVFKTsKLQotICAgIGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTSg5OTk5NSwgOTk5OTYsIDEs
IDEsIDAsIDAsIDEsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotICAgIEVYUEVDVF9HTF9FUlJP
UihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTShtVGV4
dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgMSwgMSwgMCwgMCwgMSwgMSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRlc3QgdGhhdCB1c2lu
ZyBhbiBvZmZzZXQgaW4gQ29weVN1YlRleHR1cmUgd29ya3MgY29ycmVjdGx5Ci1URVNUX1AoQ29w
eVRleHR1cmVUZXN0LCBDb3B5U3ViVGV4dHVyZU9mZnNldCkKLXsKLSAgICBpZiAoIWNoZWNrRXh0
ZW5zaW9ucygpKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEdMQ29sb3Ig
cmdiYVBpeGVsc1s0ICogNF0gPSB7R0xDb2xvcjo6cmVkLCBHTENvbG9yOjpncmVlbiwgR0xDb2xv
cjo6Ymx1ZSwgR0xDb2xvcjo6YmxhY2t9OwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmVzWzBdKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xf
UkdCQSwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcmdiYVBpeGVscyk7Ci0K
LSAgICBHTENvbG9yIHRyYW5zcGFyZW50UGl4ZWxzWzQgKiA0XSA9IHtHTENvbG9yOjp0cmFuc3Bh
cmVudEJsYWNrLCBHTENvbG9yOjp0cmFuc3BhcmVudEJsYWNrLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMQ29sb3I6OnRyYW5zcGFyZW50QmxhY2ssIEdMQ29sb3I6
OnRyYW5zcGFyZW50QmxhY2t9OwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRl
eHR1cmVzWzFdKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwg
MiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgdHJhbnNwYXJlbnRQaXhlbHMpOwot
Ci0gICAgZ2xDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFd
LCAxLCAxLCAwLCAwLCAxLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKLSAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKLSAgICBnbENvcHlTdWJUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBt
VGV4dHVyZXNbMV0sIDEsIDAsIDEsIDAsIDEsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTShtVGV4
dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgMCwgMSwgMCwgMSwgMSwgMSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBDaGVjayB0aGF0IEZC
IGlzIGNvbXBsZXRlLgotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExF
VEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotCi0gICAgRVhQ
RUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OnRyYW5zcGFyZW50QmxhY2spOwotICAg
IEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgxLCAxLCBHTENvbG9yOjpyZWQpOwotICAgIEVYUEVDVF9Q
SVhFTF9DT0xPUl9FUSgxLCAwLCBHTENvbG9yOjpncmVlbik7Ci0gICAgRVhQRUNUX1BJWEVMX0NP
TE9SX0VRKDAsIDEsIEdMQ29sb3I6OmJsdWUpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwot
fQotCi0vLyBUZXN0IHRoYXQgZmxpcHBpbmcgdGhlIFkgY29tcG9uZW50IHdvcmtzIGNvcnJlY3Rs
eQotVEVTVF9QKENvcHlUZXh0dXJlVGVzdCwgRmxpcFkpCi17Ci0gICAgaWYgKCFjaGVja0V4dGVu
c2lvbnMoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTENvbG9yIHJn
YmFQaXhlbHNbNF0gPSB7R0xDb2xvcigyNTV1LCAyNTV1LCAyNTV1LCAyNTV1KSwgR0xDb2xvcigx
Mjd1LCAxMjd1LCAxMjd1LCAxMjd1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xD
b2xvcig2M3UsIDYzdSwgNjN1LCAxMjd1KSwgR0xDb2xvcigyNTV1LCAyNTV1LCAyNTV1LCAwdSl9
OwotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOwotICAg
IGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAyLCAyLCAwLCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLCByZ2JhUGl4ZWxzKTsKLQotICAgIGdsQ29weVRleHR1cmVDSFJP
TUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwgR0xfVFJVRSwgR0xfRkFMU0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZBTFNF
KTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIENoZWNrIHRoYXQgRkIgaXMg
Y29tcGxldGUuCi0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwg
Z2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7Ci0KLSAgICBFWFBFQ1Rf
UElYRUxfQ09MT1JfRVEoMCwgMCwgcmdiYVBpeGVsc1syXSk7Ci0gICAgRVhQRUNUX1BJWEVMX0NP
TE9SX0VRKDEsIDAsIHJnYmFQaXhlbHNbM10pOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgw
LCAxLCByZ2JhUGl4ZWxzWzBdKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMSwgMSwgcmdi
YVBpeGVsc1sxXSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRlc3QgdGhh
dCBwcmVtdWx0aXB5aW5nIHRoZSBhbHBoYSBvbiBjb3B5IHdvcmtzIGNvcnJlY3RseQotVEVTVF9Q
KENvcHlUZXh0dXJlVGVzdCwgUHJlbXVsdGlwbHlBbHBoYSkKLXsKLSAgICBpZiAoIWNoZWNrRXh0
ZW5zaW9ucygpKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEdMQ29sb3Ig
cmdiYVBpeGVsc1s0XSA9IHtHTENvbG9yKDI1NXUsIDI1NXUsIDI1NXUsIDI1NXUpLCBHTENvbG9y
KDI1NXUsIDI1NXUsIDI1NXUsIDEyN3UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TENvbG9yKDEyN3UsIDEyN3UsIDEyN3UsIDEyN3UpLCBHTENvbG9yKDI1NXUsIDI1NXUsIDI1NXUs
IDB1KX07Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7
Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDIsIDIsIDAsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHJnYmFQaXhlbHMpOwotCi0gICAgZ2xDb3B5VGV4dHVy
ZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdLCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCBHTF9GQUxTRSwgR0xfVFJVRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
RkFMU0UpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gQ2hlY2sgdGhhdCBG
QiBpcyBjb21wbGV0ZS4KLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBM
RVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLQotICAgIEVY
UEVDVF9QSVhFTF9DT0xPUl9ORUFSKDAsIDAsIEdMQ29sb3IoMjU1LCAyNTUsIDI1NSwgMjU1KSwg
MS4wKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfTkVBUigxLCAwLCBHTENvbG9yKDEyNywgMTI3
LCAxMjcsIDEyNyksIDEuMCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMCwgMSwgR0xD
b2xvcig2MywgNjMsIDYzLCAxMjcpLCAxLjApOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFS
KDEsIDEsIEdMQ29sb3IoMCwgMCwgMCwgMCksIDEuMCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Ci19Ci0KLS8vIFRlc3QgdGhhdCB1bm11bHRpcHlpbmcgdGhlIGFscGhhIG9uIGNvcHkgd29y
a3MgY29ycmVjdGx5Ci1URVNUX1AoQ29weVRleHR1cmVUZXN0LCBVbm11bHRpcGx5QWxwaGEpCi17
Ci0gICAgaWYgKCFjaGVja0V4dGVuc2lvbnMoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBHTENvbG9yIHJnYmFQaXhlbHNbNF0gPSB7R0xDb2xvcigyNTV1LCAyNTV1LCAy
NTV1LCAyNTV1KSwgR0xDb2xvcigxMjd1LCAxMjd1LCAxMjd1LCAxMjd1KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xDb2xvcig2M3UsIDYzdSwgNjN1LCAxMjd1KSwgR0xDb2xvcigy
NTV1LCAyNTV1LCAyNTV1LCAwdSl9OwotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBtVGV4dHVyZXNbMF0pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9S
R0JBLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCByZ2JhUGl4ZWxzKTsKLQot
ICAgIGdsQ29weVRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwgR0xfRkFMU0UsIEdMX0ZBTFNFLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9UUlVFKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAg
IC8vIENoZWNrIHRoYXQgRkIgaXMgY29tcGxldGUuCi0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9G
UkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVG
RkVSKSk7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfTkVBUigwLCAwLCBHTENvbG9yKDI1NSwg
MjU1LCAyNTUsIDI1NSksIDEuMCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMSwgMCwg
R0xDb2xvcigyNTUsIDI1NSwgMjU1LCAxMjcpLCAxLjApOwotICAgIEVYUEVDVF9QSVhFTF9DT0xP
Ul9ORUFSKDAsIDEsIEdMQ29sb3IoMTI3LCAxMjcsIDEyNywgMTI3KSwgMS4wKTsKLSAgICBFWFBF
Q1RfUElYRUxfQ09MT1JfTkVBUigxLCAxLCBHTENvbG9yKDI1NSwgMjU1LCAyNTUsIDApLCAxLjAp
OwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IHRoYXQgdW5tdWx0aXB5
aW5nIGFuZCBwcmVtdWx0aXBseWluZyB0aGUgYWxwaGEgaXMgdGhlIHNhbWUgYXMgZG9pbmcgbmVp
dGhlcgotVEVTVF9QKENvcHlUZXh0dXJlVGVzdCwgVW5tdWx0aXBseUFuZFByZW11bHRwbHlBbHBo
YSkKLXsKLSAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQotICAgIHsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEdMQ29sb3IgcmdiYVBpeGVsc1s0XSA9IHtHTENvbG9yKDI1NXUsIDI1
NXUsIDI1NXUsIDI1NXUpLCBHTENvbG9yKDEyN3UsIDEyN3UsIDEyN3UsIDEyN3UpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTENvbG9yKDYzdSwgNjN1LCA2M3UsIDEyN3UpLCBHTENv
bG9yKDI1NXUsIDI1NXUsIDI1NXUsIDB1KX07Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlc1swXSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IEdMX1JHQkEsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHJnYmFQaXhlbHMp
OwotCi0gICAgZ2xDb3B5VGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFd
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBHTF9GQUxTRSwgR0xfVFJVRSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfVFJVRSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0K
LSAgICAvLyBDaGVjayB0aGF0IEZCIGlzIGNvbXBsZXRlLgotICAgIEVYUEVDVF9HTEVOVU1fRVEo
R0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFN
RUJVRkZFUikpOwotCi0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMCwgMCwgR0xDb2xvcigy
NTUsIDI1NSwgMjU1LCAyNTUpLCAxLjApOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDEs
IDAsIEdMQ29sb3IoMTI3LCAxMjcsIDEyNywgMTI3KSwgMS4wKTsKLSAgICBFWFBFQ1RfUElYRUxf
Q09MT1JfTkVBUigwLCAxLCBHTENvbG9yKDYzLCA2MywgNjMsIDEyNyksIDEuMCk7Ci0gICAgRVhQ
RUNUX1BJWEVMX0NPTE9SX05FQVIoMSwgMSwgR0xDb2xvcigyNTUsIDI1NSwgMjU1LCAwKSwgMS4w
KTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0
IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1h
am9yIHZlcnNpb24pIHRoZXNlCi0vLyB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi1BTkdM
RV9JTlNUQU5USUFURV9URVNUKENvcHlUZXh0dXJlVGVzdCwgRVMyX0QzRDkoKSwgRVMyX0QzRDEx
KCksIEVTMl9PUEVOR0woKSwgRVMyX09QRU5HTEVTKCkpOwotCi19ICAvLyBuYW1lc3BhY2UgYW5n
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9DdWJlTWFwVGV4dHVyZVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0N1YmVNYXBUZXh0dXJlVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDEwZmNlMTViMDVlNTVjMGIxNjczZjgxODFlZDkwNGQ5YTE3YTUyYWIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0N1YmVNYXBUZXh0dXJlVGVzdC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRp
bHMvQU5HTEVUZXN0LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotY2xhc3MgQ3ViZU1h
cFRleHR1cmVUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgQ3Vi
ZU1hcFRleHR1cmVUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDI1Nik7Ci0g
ICAgICAgIHNldFdpbmRvd0hlaWdodCgyNTYpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgp
OwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVC
aXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB2b2lkIFNldFVwKCkKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQot
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2c1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAg
ICAgKAotICAgICAgICAgICAgYXR0cmlidXRlIGhpZ2hwIHZlYzQgcG9zaXRpb247Ci0gICAgICAg
ICAgICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9Q
b3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZzU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0g
ICAgICAgICAgICB1bmlmb3JtIGhpZ2hwIHZlYzQgY29sb3I7Ci0gICAgICAgICAgICB2b2lkIG1h
aW4odm9pZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSBj
b2xvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBtUHJvZ3JhbSA9IENv
bXBpbGVQcm9ncmFtKHZzU291cmNlLCBmc1NvdXJjZSk7Ci0gICAgICAgIGlmIChtUHJvZ3JhbSA9
PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBGQUlMKCkgPDwgInNoYWRlciBjb21waWxhdGlv
biBmYWlsZWQuIjsKLSAgICAgICAgfQotCi0gICAgICAgIG1Db2xvckxvY2F0aW9uID0gZ2xHZXRV
bmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJjb2xvciIpOwotCi0gICAgICAgIGdsVXNlUHJvZ3Jh
bShtUHJvZ3JhbSk7Ci0KLSAgICAgICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDApOwotICAgICAg
ICBnbENsZWFyRGVwdGhmKDAuMCk7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJ
VCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQpOwotCi0gICAgICAgIGdsRW5hYmxlKEdMX0JMRU5EKTsK
LSAgICAgICAgZ2xEaXNhYmxlKEdMX0RFUFRIX1RFU1QpOwotCi0gICAgICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCi0gICAgewot
ICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotCi0gICAgICAgIEFOR0xFVGVzdDo6
VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVByb2dyYW07Ci0gICAgR0xpbnQgbUNv
bG9yTG9jYXRpb247Ci19OwotCi0vLyBWZXJpZnkgdGhhdCByZW5kZXJpbmcgdG8gdGhlIGZhY2Vz
IG9mIGEgY3ViZSBtYXAgY29uc2VjdXRpdmVseSB3aWxsIGNvcnJlY3RseSByZW5kZXIgdG8gZWFj
aCBmYWNlLgotVEVTVF9QKEN1YmVNYXBUZXh0dXJlVGVzdCwgUmVuZGVyVG9GYWNlc0NvbnNlY3V0
aXZlbHkpCi17Ci0gICAgY29uc3QgR0xmbG9hdCBmYWNlQ29sb3JzW10gPQotICAgIHsKLSAgICAg
ICAgMS4wZiwgMC4wZiwgMC4wZiwgMS4wZiwKLSAgICAgICAgMC4wZiwgMS4wZiwgMC4wZiwgMS4w
ZiwKLSAgICAgICAgMC4wZiwgMC4wZiwgMS4wZiwgMS4wZiwKLSAgICAgICAgMS4wZiwgMS4wZiwg
MC4wZiwgMS4wZiwKLSAgICAgICAgMS4wZiwgMC4wZiwgMS4wZiwgMS4wZiwKLSAgICAgICAgMC4w
ZiwgMS4wZiwgMS4wZiwgMS4wZiwKLSAgICB9OwotCi0gICAgR0x1aW50IHRleCA9IDA7Ci0gICAg
Z2xHZW5UZXh0dXJlcygxLCAmdGV4KTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VC
RV9NQVAsIHRleCk7Ci0gICAgZ2xUZXhTdG9yYWdlMkRFWFQoR0xfVEVYVFVSRV9DVUJFX01BUCwg
MSwgR0xfUkdCQThfT0VTLCAxLCAxKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAg
IEdMdWludCBmYm8gPSAwOwotICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZmYm8pOwotICAgIGds
QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8pOwotICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOwotCi0gICAgZm9yIChHTGVudW0gZmFjZSA9IDA7IGZhY2UgPCA2OyBmYWNlKyspCi0g
ICAgewotICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9D
T0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICsgZmFjZSwg
dGV4LCAwKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgZ2xVc2VQ
cm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgICAgICBjb25zdCBHTGZsb2F0ICpmYWNlQ29sb3IgPSBm
YWNlQ29sb3JzICsgKGZhY2UgKiA0KTsKLSAgICAgICAgZ2xVbmlmb3JtNGYobUNvbG9yTG9jYXRp
b24sIGZhY2VDb2xvclswXSwgZmFjZUNvbG9yWzFdLCBmYWNlQ29sb3JbMl0sIGZhY2VDb2xvclsz
XSk7Ci0KLSAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAg
ICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICBmb3IgKEdMZW51bSBmYWNl
ID0gMDsgZmFjZSA8IDY7IGZhY2UrKykKLSAgICB7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJUZXh0
dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFX0NV
QkVfTUFQX1BPU0lUSVZFX1ggKyBmYWNlLCB0ZXgsIDApOwotICAgICAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKLQotICAgICAgICBjb25zdCBHTGZsb2F0ICpmYWNlQ29sb3IgPSBmYWNlQ29sb3Jz
ICsgKGZhY2UgKiA0KTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIGZhY2VDb2xvclsw
XSAqIDI1NSwgZmFjZUNvbG9yWzFdICogMjU1LCBmYWNlQ29sb3JbMl0gKiAyNTUsIGZhY2VDb2xv
clszXSAqIDI1NSk7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAg
IGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmYm8pOwotICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwg
JnRleCk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVXNlIHRoaXMgdG8g
c2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBH
TEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLUFO
R0xFX0lOU1RBTlRJQVRFX1RFU1QoQ3ViZU1hcFRleHR1cmVUZXN0LAotICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZM
OV8zKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgRVMzX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BF
TkdMRVMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0QzRDExRW11
bGF0ZWRJbmRleGVkQnVmZmVyVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvRDNEMTFFbXVsYXRlZEluZGV4ZWRCdWZmZXJUZXN0LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIyN2U3YmZjMWRmYmI4YThkMzI0MTRjZGJhNzc0Y2Zj
MGU2YmRiNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRDNEMTFFbXVsYXRlZElu
ZGV4ZWRCdWZmZXJUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MyArMCwwIEBACi0vLwot
Ly8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
Ci0vLwotLy8gRDNEMTFFbXVsYXRlZEluZGV4ZWRCdWZmZXJUZXN0OgotLy8gICBUZXN0cyB0byB2
YWxpZGF0ZSBvdXIgRDNEMTEgc3VwcG9ydCBmb3IgZW11bGF0aW5nIGFuIGluZGV4ZWQKLS8vICAg
dmVydGV4IGJ1ZmZlci4KLS8vCi0KLSNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCi0j
aW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9CdWZmZXIxMS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9Db250ZXh0MTEuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
UmVuZGVyZXIxMS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9JbmRleERhdGFN
YW5hZ2VyLmgiCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLSNpbmNsdWRlICJ0
ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFu
Z2xlOwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3MgRDNEMTFFbXVsYXRlZEluZGV4ZWRCdWZmZXJU
ZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0KLSAgICB2b2lkIFNldFVw
KCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLSAgICAgICAg
QVNTRVJUX0VRKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLCBHZXRQYXJhbSgp
LmdldFJlbmRlcmVyKCkpOwotCi0gICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gcmVpbnRl
cnByZXRfY2FzdDxnbDo6Q29udGV4dCAqPihnZXRFR0xXaW5kb3coKS0+Z2V0Q29udGV4dCgpKTsK
LSAgICAgICAgcng6OkNvbnRleHQxMSAqY29udGV4dDExID0gcng6OkdldEltcGxBczxyeDo6Q29u
dGV4dDExPihjb250ZXh0KTsKLSAgICAgICAgbVJlbmRlcmVyICAgICAgICAgICAgICAgID0gY29u
dGV4dDExLT5nZXRSZW5kZXJlcigpOwotCi0gICAgICAgIG1Tb3VyY2VCdWZmZXIgPSBuZXcgcng6
OkJ1ZmZlcjExKG1SZW5kZXJlcik7Ci0gICAgICAgIEdMZmxvYXQgdGVzdERhdGFbXSA9IHsgMS4w
ZiwgMi4wZiwgMy4wZiwgNC4wZiwgNS4wZiwgNi4wZiB9OwotICAgICAgICBnbDo6RXJyb3IgZXJy
b3IgPQotICAgICAgICAgICAgbVNvdXJjZUJ1ZmZlci0+c2V0RGF0YShHTF9BUlJBWV9CVUZGRVIs
IHRlc3REYXRhLCBzaXplb2YodGVzdERhdGEpLCBHTF9TVEFUSUNfRFJBVyk7Ci0gICAgICAgIEFT
U0VSVF9GQUxTRShlcnJvci5pc0Vycm9yKCkpOwotCi0gICAgICAgIG1UcmFuc2xhdGVkQXR0cmli
dXRlLmJhc2VPZmZzZXQgICAgICAgICAgICA9IDA7Ci0gICAgICAgIG1UcmFuc2xhdGVkQXR0cmli
dXRlLnVzZXNGaXJzdFZlcnRleE9mZnNldCA9IGZhbHNlOwotICAgICAgICBtVHJhbnNsYXRlZEF0
dHJpYnV0ZS5zdHJpZGUgPSBzaXplb2YoR0xmbG9hdCk7Ci0KLSAgICAgICAgR0x1Ynl0ZSBpbmRp
Y2VzW10gPSB7MCwgMCwgMywgNCwgMiwgMSwgMX07Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBBcnJheVNpemUoaW5kaWNlcyk7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAg
bUV4cGVjdGVkRXhwYW5kZWREYXRhLnB1c2hfYmFjayh0ZXN0RGF0YVtpbmRpY2VzW2ldXSk7Ci0g
ICAgICAgICAgICBtdWJ5dGVJbmRpY2VzLnB1c2hfYmFjayhpbmRpY2VzW2ldKTsKLSAgICAgICAg
ICAgIG11aW50SW5kaWNlcy5wdXNoX2JhY2soaW5kaWNlc1tpXSk7Ci0gICAgICAgICAgICBtdXNo
b3J0SW5kaWNlcy5wdXNoX2JhY2soaW5kaWNlc1tpXSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFNhZmVEZWxldGUobVNv
dXJjZUJ1ZmZlcik7Ci0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGNyZWF0ZU1hcHBhYmxlQ29tcGFyZUJ1ZmZlckZyb21FbXVsYXRlZEJ1ZmZlcihJRDNE
MTFCdWZmZXIgKnNvdXJjZUJ1ZmZlciwgR0x1aW50IHNpemUsIElEM0QxMUJ1ZmZlciAqKm1hcHBh
YmxlQnVmZmVyKQotICAgIHsKLSAgICAgICAgKm1hcHBhYmxlQnVmZmVyID0gbnVsbHB0cjsKLQot
ICAgICAgICBEM0QxMV9CVUZGRVJfREVTQyBidWZmZXJEZXNjOwotICAgICAgICBidWZmZXJEZXNj
LkJ5dGVXaWR0aCA9IHNpemU7Ci0gICAgICAgIGJ1ZmZlckRlc2MuTWlzY0ZsYWdzID0gMDsKLSAg
ICAgICAgYnVmZmVyRGVzYy5TdHJ1Y3R1cmVCeXRlU3RyaWRlID0gMDsKLSAgICAgICAgYnVmZmVy
RGVzYy5Vc2FnZSA9IEQzRDExX1VTQUdFX1NUQUdJTkc7Ci0gICAgICAgIGJ1ZmZlckRlc2MuQmlu
ZEZsYWdzID0gMDsKLSAgICAgICAgYnVmZmVyRGVzYy5DUFVBY2Nlc3NGbGFncyA9IEQzRDExX0NQ
VV9BQ0NFU1NfUkVBRCB8IEQzRDExX0NQVV9BQ0NFU1NfV1JJVEU7Ci0KLSAgICAgICAgSFJFU1VM
VCBociA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCktPkNyZWF0ZUJ1ZmZlcigmYnVmZmVyRGVzYywg
bnVsbHB0ciwgbWFwcGFibGVCdWZmZXIpOwotICAgICAgICBBU1NFUlRfVFJVRShTVUNDRUVERUQo
aHIpKTsKLQotICAgICAgICBEM0QxMV9CT1ggc3JjQm94OwotICAgICAgICBzcmNCb3gubGVmdCA9
IDA7Ci0gICAgICAgIHNyY0JveC5yaWdodCA9IHNpemU7Ci0gICAgICAgIHNyY0JveC50b3AgPSAw
OwotICAgICAgICBzcmNCb3guYm90dG9tID0gMTsKLSAgICAgICAgc3JjQm94LmZyb250ID0gMDsK
LSAgICAgICAgc3JjQm94LmJhY2sgPSAxOwotCi0gICAgICAgIG1SZW5kZXJlci0+Z2V0RGV2aWNl
Q29udGV4dCgpLT5Db3B5U3VicmVzb3VyY2VSZWdpb24oKm1hcHBhYmxlQnVmZmVyLCAwLCAwLCAw
LCAwLCBzb3VyY2VCdWZmZXIsIDAsICZzcmNCb3gpOwotICAgIH0KLQotICAgIHZvaWQgY29tcGFy
ZUNvbnRlbnRzKElEM0QxMUJ1ZmZlciAqYWN0dWFsKQotICAgIHsKLSAgICAgICAgSUQzRDExQnVm
ZmVyICpjb21wYXJlQnVmZmVyID0gbnVsbHB0cjsKLSAgICAgICAgY3JlYXRlTWFwcGFibGVDb21w
YXJlQnVmZmVyRnJvbUVtdWxhdGVkQnVmZmVyKAotICAgICAgICAgICAgYWN0dWFsLCBzaXplb2Yo
R0xmbG9hdCkgKiBzdGF0aWNfY2FzdDxHTHVpbnQ+KG1FeHBlY3RlZEV4cGFuZGVkRGF0YS5zaXpl
KCkpLAotICAgICAgICAgICAgJmNvbXBhcmVCdWZmZXIpOwotCi0gICAgICAgIEQzRDExX01BUFBF
RF9TVUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKLSAgICAgICAgSFJFU1VMVCBociA9IG1SZW5k
ZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpLT5NYXAoY29tcGFyZUJ1ZmZlciwgMCwgRDNEMTFfTUFQ
X1JFQUQsIDAsICZtYXBwZWRSZXNvdXJjZSk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKFNVQ0NFRURF
RChocikpOwotCi0gICAgICAgIEdMZmxvYXQqIGNvbXBhcmVEYXRhID0gc3RhdGljX2Nhc3Q8R0xm
bG9hdCo+KG1hcHBlZFJlc291cmNlLnBEYXRhKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtRXhwZWN0ZWRFeHBhbmRlZERhdGEuc2l6ZSgpOyBpKyspCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEVYUEVDVF9FUShtRXhwZWN0ZWRFeHBhbmRlZERhdGFbaV0sIGNvbXBhcmVEYXRhW2ld
KTsKLSAgICAgICAgfQotCi0gICAgICAgIG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpLT5V
bm1hcChjb21wYXJlQnVmZmVyLCAwKTsKLSAgICAgICAgU2FmZVJlbGVhc2UoY29tcGFyZUJ1ZmZl
cik7Ci0gICAgfQotCi0gICAgdm9pZCBlbXVsYXRlQW5kQ29tcGFyZShyeDo6U291cmNlSW5kZXhE
YXRhICpzcmNEYXRhKQotICAgIHsKLSAgICAgICAgYXV0byBidWZmZXJPckVycm9yID0KLSAgICAg
ICAgICAgIG1Tb3VyY2VCdWZmZXItPmdldEVtdWxhdGVkSW5kZXhlZEJ1ZmZlcihzcmNEYXRhLCBt
VHJhbnNsYXRlZEF0dHJpYnV0ZSwgMCk7Ci0gICAgICAgIEFTU0VSVF9GQUxTRShidWZmZXJPckVy
cm9yLmlzRXJyb3IoKSk7Ci0gICAgICAgIElEM0QxMUJ1ZmZlciAqZW11bGF0ZWRCdWZmZXIgPSBi
dWZmZXJPckVycm9yLmdldFJlc3VsdCgpOwotICAgICAgICBBU1NFUlRfVFJVRShlbXVsYXRlZEJ1
ZmZlciAhPSBudWxscHRyKTsKLSAgICAgICAgY29tcGFyZUNvbnRlbnRzKGVtdWxhdGVkQnVmZmVy
KTsKLSAgICB9Ci0KLSAgcHJvdGVjdGVkOgotICAgIHJ4OjpCdWZmZXIxMSAqbVNvdXJjZUJ1ZmZl
cjsKLSAgICByeDo6UmVuZGVyZXIxMSAqbVJlbmRlcmVyOwotICAgIHJ4OjpUcmFuc2xhdGVkQXR0
cmlidXRlIG1UcmFuc2xhdGVkQXR0cmlidXRlOwotICAgIHN0ZDo6dmVjdG9yPEdMZmxvYXQ+IG1F
eHBlY3RlZEV4cGFuZGVkRGF0YTsKLSAgICBzdGQ6OnZlY3RvcjxHTHVieXRlPiBtdWJ5dGVJbmRp
Y2VzOwotICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbXVpbnRJbmRpY2VzOwotICAgIHN0ZDo6dmVj
dG9yPEdMdXNob3J0PiBtdXNob3J0SW5kaWNlczsKLX07Ci0KLS8vIFRoaXMgdGVzdHMgdGhhdCBh
IEdMX1VOU0lHTkVEX0JZVEUgaW5kaWNlcyBsaXN0IGNhbiBiZSBzdWNjZXNzZnVsbHkgZXhwYW5k
ZWQKLS8vIGludG8gYSB2YWxpZCBlbXVsYXRlZCBpbmRleGVkIGJ1ZmZlci4KLVRFU1RfUChEM0Qx
MUVtdWxhdGVkSW5kZXhlZEJ1ZmZlclRlc3QsIFRlc3ROYXRpdmVUb0V4cGFuZGVkVXNpbmdHTHVi
eXRlSW5kaWNlcykKLXsKLSAgICByeDo6U291cmNlSW5kZXhEYXRhIHNyY0RhdGEgPSB7bnVsbHB0
ciwgbXVieXRlSW5kaWNlcy5kYXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obXVieXRlSW5kaWNlcy5zaXplKCkpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZX07
Ci0gICAgZW11bGF0ZUFuZENvbXBhcmUoJnNyY0RhdGEpOwotfQotCi0vLyBUaGlzIHRlc3RzIHRo
YXQgYSBHTF9VTlNJR05FRF9TSE9SVCBpbmRpY2VzIGxpc3QgY2FuIGJlIHN1Y2Nlc3NmdWxseSBl
eHBhbmRlZAotLy8gaW50byBhIHZhbGlkIGVtdWxhdGVkIGluZGV4ZWQgYnVmZmVyLgotVEVTVF9Q
KEQzRDExRW11bGF0ZWRJbmRleGVkQnVmZmVyVGVzdCwgVGVzdE5hdGl2ZVRvRXhwYW5kZWRVc2lu
Z0dMdXNob3J0SW5kaWNlcykKLXsKLSAgICByeDo6U291cmNlSW5kZXhEYXRhIHNyY0RhdGEgPSB7
bnVsbHB0ciwgbXVzaG9ydEluZGljZXMuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG11c2hvcnRJbmRpY2VzLnNpemUo
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX1NIT1JU
LCBmYWxzZX07Ci0gICAgZW11bGF0ZUFuZENvbXBhcmUoJnNyY0RhdGEpOwotfQotCi0vLyBUaGlz
IHRlc3RzIHRoYXQgYSBHTF9VTlNJR05FRF9JTlQgaW5kaWNlcyBsaXN0IGNhbiBiZSBzdWNjZXNz
ZnVsbHkgZXhwYW5kZWQKLS8vIGludG8gYSB2YWxpZCBlbXVsYXRlZCBpbmRleGVkIGJ1ZmZlci4K
LVRFU1RfUChEM0QxMUVtdWxhdGVkSW5kZXhlZEJ1ZmZlclRlc3QsIFRlc3ROYXRpdmVUb0V4cGFu
ZGVkVXNpbmdHTHVpbnRJbmRpY2VzKQotewotICAgIHJ4OjpTb3VyY2VJbmRleERhdGEgc3JjRGF0
YSA9IHtudWxscHRyLCBtdWludEluZGljZXMuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG11aW50SW5kaWNlcy5zaXpl
KCkpLCBHTF9VTlNJR05FRF9JTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZhbHNlfTsKLSAgICBlbXVsYXRlQW5kQ29tcGFyZSgmc3JjRGF0YSk7Ci19Ci0KLS8vIFRoaXMg
dGVzdHMgdmVyaWZpZXMgdGhhdCBhIEJ1ZmZlcjExIGNvbnRlbnRzIHJlbWFpbiB1bmNoYW5nZWQg
YWZ0ZXIgY2FsbGluZyBnZXRFbXVsYXRlZEluZGV4ZWRCdWZmZXIKLVRFU1RfUChEM0QxMUVtdWxh
dGVkSW5kZXhlZEJ1ZmZlclRlc3QsIFRlc3RTb3VyY2VCdWZmZXJSZW1haW5zVW50b3VjaGVkQWZ0
ZXJFeHBhbmRPcGVyYXRpb24pCi17Ci0gICAgLy8gQ29weSB0aGUgb3JpZ2luYWwgc291cmNlIGJ1
ZmZlciBiZWZvcmUgYW55IGV4cGFuZCBjYWxscyBoYXZlIGJlZW4gbWFkZQotICAgIHJ4OjpCdWZm
ZXIxMSAqY2xlYW5Tb3VyY2VCdWZmZXIgPSBuZXcgcng6OkJ1ZmZlcjExKG1SZW5kZXJlcik7Ci0g
ICAgY2xlYW5Tb3VyY2VCdWZmZXItPmNvcHlTdWJEYXRhKG1Tb3VyY2VCdWZmZXIsIDAsIDAsIG1T
b3VyY2VCdWZmZXItPmdldFNpemUoKSk7Ci0KLSAgICAvLyBEbyBhIGJhc2ljIGV4YW5kZWQgYW5k
IGNvbXBhcmUgdGVzdC4KLSAgICByeDo6U291cmNlSW5kZXhEYXRhIHNyY0RhdGEgPSB7bnVsbHB0
ciwgbXVpbnRJbmRpY2VzLmRhdGEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtdWludEluZGljZXMuc2l6ZSgpKSwgR0xfVU5T
SUdORURfSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZX07Ci0g
ICAgZW11bGF0ZUFuZENvbXBhcmUoJnNyY0RhdGEpOwotCi0gICAgY29uc3QgdWludDhfdCAqc291
cmNlQnVmZmVyTWVtID0gbnVsbHB0cjsKLSAgICBjb25zdCB1aW50OF90ICpjbGVhbkJ1ZmZlck1l
bSA9IG51bGxwdHI7Ci0KLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBtU291cmNlQnVmZmVyLT5nZXRE
YXRhKCZzb3VyY2VCdWZmZXJNZW0pOwotICAgIEFTU0VSVF9GQUxTRShlcnJvci5pc0Vycm9yKCkp
OwotCi0gICAgZXJyb3IgPSBjbGVhblNvdXJjZUJ1ZmZlci0+Z2V0RGF0YSgmY2xlYW5CdWZmZXJN
ZW0pOwotICAgIEFTU0VSVF9GQUxTRShlcnJvci5pc0Vycm9yKCkpOwotCi0gICAgaW50IHJlc3Vs
dCA9IG1lbWNtcChzb3VyY2VCdWZmZXJNZW0sIGNsZWFuQnVmZmVyTWVtLCBjbGVhblNvdXJjZUJ1
ZmZlci0+Z2V0U2l6ZSgpKTsKLSAgICBBU1NFUlRfRVEocmVzdWx0LCAwKTsKLQotICAgIFNhZmVE
ZWxldGUoY2xlYW5Tb3VyY2VCdWZmZXIpOwotfQotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKEQz
RDExRW11bGF0ZWRJbmRleGVkQnVmZmVyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMy
X0QzRDExKCkpOwotCi19IC8vIGFub255bW91cyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EM0QxMUZvcm1hdFRhYmxlc1Rl
c3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0QzRDEx
Rm9ybWF0VGFibGVzVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0MDdk
MTE5MGRhZGJmZGQ4NGM1MDU2NGZlZmQ2YTVkNDdmMjI5MWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0QzRDExRm9ybWF0VGFibGVzVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxNTMgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIEQzRDExRm9ybWF0VGFibGVzVGVzdDoKLS8vICAg
VGVzdHMgdG8gdmFsaWRhdGUgb3VyIEQzRDExIHN1cHBvcnQgdGFibGVzIG1hdGNoIGhhcmR3YXJl
IHN1cHBvcnQuCi0vLwotCi0jaW5jbHVkZSAibGliQU5HTEUvYW5nbGV0eXBlcy5oIgotI2luY2x1
ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5o
IgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuaCIKLSNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlLmgi
Ci0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxzMTEuaCIK
LSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oIgotI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5o
IgotI2luY2x1ZGUgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oIgotI2luY2x1
ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQot
bmFtZXNwYWNlCi17Ci0KLWNsYXNzIEQzRDExRm9ybWF0VGFibGVzVGVzdCA6IHB1YmxpYyBBTkdM
RVRlc3QKLXsKLQotfTsKLQotLy8gVGhpcyB0ZXN0IGVudW1lcmF0ZXMgYWxsIEdMIGZvcm1hdHMg
LSBmb3IgZWFjaCwgaXQgcXVlcmllcyB0aGUgRDNEIHN1cHBvcnQgZm9yCi0vLyB1c2luZyBpdCBh
cyBhIHRleHR1cmUsIGEgcmVuZGVyIHRhcmdldCwgYW5kIHNhbXBsaW5nIGZyb20gaXQgaW4gdGhl
IHNoYWRlci4gSXQKLS8vIGNoZWNrcyB0aGlzIGFnYWluc3Qgb3VyIHNwZWVkLW9wdGltaXplZCBi
YWtlZCB0YWJsZXMsIGFuZCB2YWxpZGF0ZXMgdGhleSB3b3VsZAotLy8gZ2l2ZSB0aGUgc2FtZSBy
ZXN1bHQuCi0vLyBUT0RPKGptYWRpbGwpOiBGaW5kIG91dCB3aHkgaW4gOV8zLCBzb21lIGZvcm1h
dCBxdWVyaWVzIHJldHVybiBhbiBlcnJvci4KLS8vIFRoZSBlcnJvciBzZWVtcyB0byBhcHBlYXIg
Zm9yIGZvcm1hdHMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBvbiA5XzMuCi1URVNUX1AoRDNEMTFG
b3JtYXRUYWJsZXNUZXN0LCBUZXN0Rm9ybWF0U3VwcG9ydCkKLXsKLSAgICBBU1NFUlRfRVEoRUdM
X1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsIEdldFBhcmFtKCkuZ2V0UmVuZGVyZXIo
KSk7Ci0KLSAgICAvLyBIYWNrIHRoZSBhbmdsZSEKLSAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oZ2V0RUdMV2luZG93KCktPmdldENvbnRl
eHQoKSk7Ci0gICAgcng6OkNvbnRleHQxMSAqY29udGV4dDExID0gcng6OkdldEltcGxBczxyeDo6
Q29udGV4dDExPihjb250ZXh0KTsKLSAgICByeDo6UmVuZGVyZXIxMSAqcmVuZGVyZXIgPSBjb250
ZXh0MTEtPmdldFJlbmRlcmVyKCk7Ci0gICAgY29uc3QgYXV0byAmdGV4dHVyZUNhcHMgID0gcmVu
ZGVyZXItPmdldE5hdGl2ZVRleHR1cmVDYXBzKCk7Ci0KLSAgICBJRDNEMTFEZXZpY2UgKmRldmlj
ZSA9IHJlbmRlcmVyLT5nZXREZXZpY2UoKTsKLQotICAgIGNvbnN0IGdsOjpGb3JtYXRTZXQgJmFs
bEZvcm1hdHMgPSBnbDo6R2V0QWxsU2l6ZWRJbnRlcm5hbEZvcm1hdHMoKTsKLSAgICBmb3IgKEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCA6IGFsbEZvcm1hdHMpCi0gICAgewotICAgICAgICBjb25zdCBy
eDo6ZDNkMTE6OkZvcm1hdCAmZm9ybWF0SW5mbyA9Ci0gICAgICAgICAgICByeDo6ZDNkMTE6OkZv
cm1hdDo6R2V0KGludGVybmFsRm9ybWF0LCByZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNh
cHMoKSk7Ci0gICAgICAgIGNvbnN0IGF1dG8gJnRleHR1cmVJbmZvID0gdGV4dHVyZUNhcHMuZ2V0
KGludGVybmFsRm9ybWF0KTsKLQotICAgICAgICAvLyBCaXRzIGZvciB0ZXh0dXJpbmcKLSAgICAg
ICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZpbnRlcm5hbEZvcm1hdEluZm8gPSBnbDo6R2V0
SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0KTsKLQotICAgICAgICBVSU5UIHRleFN1
cHBvcnRNYXNrID0gRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTJEOwotICAgICAgICBpZiAo
aW50ZXJuYWxGb3JtYXRJbmZvLmRlcHRoQml0cyA9PSAwICYmIGludGVybmFsRm9ybWF0SW5mby5z
dGVuY2lsQml0cyA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXhTdXBwb3J0TWFzayB8
PSBEM0QxMV9GT1JNQVRfU1VQUE9SVF9URVhUVVJFQ1VCRTsKLSAgICAgICAgICAgIGlmIChHZXRQ
YXJhbSgpLm1ham9yVmVyc2lvbiA+IDIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
dGV4U3VwcG9ydE1hc2sgfD0gRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRTNEOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgVUlOVCB0ZXhTdXBwb3J0ICA9IDA7Ci0gICAg
ICAgIGJvb2wgdGV4U3VjY2VzcyAgPSBTVUNDRUVERUQoZGV2aWNlLT5DaGVja0Zvcm1hdFN1cHBv
cnQoZm9ybWF0SW5mby50ZXhGb3JtYXQsICZ0ZXhTdXBwb3J0KSk7Ci0gICAgICAgIGJvb2wgdGV4
dHVyZWFibGUgPSB0ZXhTdWNjZXNzICYmICgodGV4U3VwcG9ydCAmIHRleFN1cHBvcnRNYXNrKSA9
PSB0ZXhTdXBwb3J0TWFzayk7Ci0gICAgICAgIEVYUEVDVF9FUSh0ZXh0dXJlYWJsZSwgdGV4dHVy
ZUluZm8udGV4dHVyYWJsZSk7Ci0KLSAgICAgICAgLy8gQml0cyBmb3IgbWlwbWFwIGF1dG8tZ2Vu
LgotICAgICAgICBib29sIGV4cGVjdGVkTWlwR2VuID0gdGV4U3VjY2VzcyAmJiAoKHRleFN1cHBv
cnQgJiBEM0QxMV9GT1JNQVRfU1VQUE9SVF9NSVBfQVVUT0dFTikgIT0gMCk7Ci0gICAgICAgIGF1
dG8gZmVhdHVyZUxldmVsICAgPSByZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKS5m
ZWF0dXJlTGV2ZWw7Ci0gICAgICAgIGNvbnN0IGF1dG8gJmR4Z2lTdXBwb3J0ID0gcng6OmQzZDEx
OjpHZXREWEdJU3VwcG9ydChmb3JtYXRJbmZvLnRleEZvcm1hdCwgZmVhdHVyZUxldmVsKTsKLSAg
ICAgICAgYm9vbCBhY3R1YWxNaXBHZW4gPQotICAgICAgICAgICAgKChkeGdpU3VwcG9ydC5hbHdh
eXNTdXBwb3J0ZWRGbGFncyAmIEQzRDExX0ZPUk1BVF9TVVBQT1JUX01JUF9BVVRPR0VOKSAhPSAw
KTsKLSAgICAgICAgRVhQRUNUX0VRKDB1LCBkeGdpU3VwcG9ydC5vcHRpb25hbGx5U3VwcG9ydGVk
RmxhZ3MgJiBEM0QxMV9GT1JNQVRfU1VQUE9SVF9NSVBfQVVUT0dFTik7Ci0gICAgICAgIEVYUEVD
VF9FUShleHBlY3RlZE1pcEdlbiwgYWN0dWFsTWlwR2VuKTsKLQotICAgICAgICAvLyBCaXRzIGZv
ciBmaWx0ZXJpbmcKLSAgICAgICAgVUlOVCBmaWx0ZXJTdXBwb3J0ID0gMDsKLSAgICAgICAgYm9v
bCBmaWx0ZXJTdWNjZXNzID0KLSAgICAgICAgICAgIFNVQ0NFRURFRChkZXZpY2UtPkNoZWNrRm9y
bWF0U3VwcG9ydChmb3JtYXRJbmZvLnNydkZvcm1hdCwgJmZpbHRlclN1cHBvcnQpKTsKLSAgICAg
ICAgYm9vbCBmaWx0ZXJhYmxlID0gZmlsdGVyU3VjY2VzcyAmJiAoKGZpbHRlclN1cHBvcnQgJiBE
M0QxMV9GT1JNQVRfU1VQUE9SVF9TSEFERVJfU0FNUExFKSAhPSAwKTsKLSAgICAgICAgRVhQRUNU
X0VRKGZpbHRlcmFibGUsIHRleHR1cmVJbmZvLmZpbHRlcmFibGUpOwotCi0gICAgICAgIC8vIEJp
dHMgZm9yIHJlbmRlcmFibGUKLSAgICAgICAgYm9vbCByZW5kZXJhYmxlID0gZmFsc2U7Ci0gICAg
ICAgIFVJTlQgcmVuZGVyU3VwcG9ydCAgICAgICA9IDB1OwotICAgICAgICBEWEdJX0ZPUk1BVCBy
ZW5kZXJGb3JtYXQgPSBEWEdJX0ZPUk1BVF9VTktOT1dOOwotICAgICAgICBpZiAoaW50ZXJuYWxG
b3JtYXRJbmZvLmRlcHRoQml0cyA+IDAgfHwgaW50ZXJuYWxGb3JtYXRJbmZvLnN0ZW5jaWxCaXRz
ID4gMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmVuZGVyRm9ybWF0ID0gZm9ybWF0SW5mby5k
c3ZGb3JtYXQ7Ci0gICAgICAgICAgICBib29sIGRlcHRoU3VjY2VzcyA9Ci0gICAgICAgICAgICAg
ICAgU1VDQ0VFREVEKGRldmljZS0+Q2hlY2tGb3JtYXRTdXBwb3J0KGZvcm1hdEluZm8uZHN2Rm9y
bWF0LCAmcmVuZGVyU3VwcG9ydCkpOwotICAgICAgICAgICAgcmVuZGVyYWJsZSA9Ci0gICAgICAg
ICAgICAgICAgZGVwdGhTdWNjZXNzICYmICgocmVuZGVyU3VwcG9ydCAmIEQzRDExX0ZPUk1BVF9T
VVBQT1JUX0RFUFRIX1NURU5DSUwpICE9IDApOwotICAgICAgICAgICAgaWYgKHJlbmRlcmFibGUp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRVhQRUNUX05FKERYR0lfRk9STUFUX1VO
S05PV04sIGZvcm1hdEluZm8uZHN2Rm9ybWF0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
ICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJlbmRlckZvcm1hdCA9IGZvcm1h
dEluZm8ucnR2Rm9ybWF0OwotICAgICAgICAgICAgYm9vbCBydFN1Y2Nlc3MgPQotICAgICAgICAg
ICAgICAgIFNVQ0NFRURFRChkZXZpY2UtPkNoZWNrRm9ybWF0U3VwcG9ydChmb3JtYXRJbmZvLnJ0
dkZvcm1hdCwgJnJlbmRlclN1cHBvcnQpKTsKLSAgICAgICAgICAgIHJlbmRlcmFibGUgPSBydFN1
Y2Nlc3MgJiYgKChyZW5kZXJTdXBwb3J0ICYgRDNEMTFfRk9STUFUX1NVUFBPUlRfUkVOREVSX1RB
UkdFVCkgIT0gMCk7Ci0gICAgICAgICAgICBpZiAocmVuZGVyYWJsZSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBFWFBFQ1RfTkUoRFhHSV9GT1JNQVRfVU5LTk9XTiwgZm9ybWF0SW5m
by5ydHZGb3JtYXQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIEVYUEVDVF9F
UShyZW5kZXJhYmxlLCB0ZXh0dXJlSW5mby5yZW5kZXJhYmxlKTsKLSAgICAgICAgaWYgKCF0ZXh0
dXJlSW5mby5zYW1wbGVDb3VudHMuZW1wdHkoKSkKLSAgICAgICAgewotICAgICAgICAgICAgRVhQ
RUNUX1RSVUUocmVuZGVyYWJsZSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBNdWx0aXNhbXBs
ZSBjb3VudHMKLSAgICAgICAgaWYgKHJlbmRlcmFibGUpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICgocmVuZGVyU3VwcG9ydCAmIEQzRDExX0ZPUk1BVF9TVVBQT1JUX01VTFRJU0FNUExFX1JF
TkRFUlRBUkdFVCkgIT0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBFWFBFQ1Rf
VFJVRSghdGV4dHVyZUluZm8uc2FtcGxlQ291bnRzLmVtcHR5KCkpOwotICAgICAgICAgICAgICAg
IGZvciAodW5zaWduZWQgaW50IHNhbXBsZUNvdW50ID0gMTsKLSAgICAgICAgICAgICAgICAgICAg
IHNhbXBsZUNvdW50IDw9IEQzRDExX01BWF9NVUxUSVNBTVBMRV9TQU1QTEVfQ09VTlQ7IHNhbXBs
ZUNvdW50ICo9IDIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBVSU5U
IHF1YWxpdHlDb3VudCAgPSAwOwotICAgICAgICAgICAgICAgICAgICBib29sIHNhbXBsZVN1Y2Nl
c3MgPSBTVUNDRUVERUQoZGV2aWNlLT5DaGVja011bHRpc2FtcGxlUXVhbGl0eUxldmVscygKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckZvcm1hdCwgc2FtcGxlQ291bnQsICZxdWFsaXR5
Q291bnQpKTsKLSAgICAgICAgICAgICAgICAgICAgR0x1aW50IGV4cGVjdGVkQ291bnQgPSAoIXNh
bXBsZVN1Y2Nlc3MgfHwgcXVhbGl0eUNvdW50ID09IDApID8gMCA6IDE7Ci0gICAgICAgICAgICAg
ICAgICAgIEVYUEVDVF9FUShleHBlY3RlZENvdW50LCB0ZXh0dXJlSW5mby5zYW1wbGVDb3VudHMu
Y291bnQoc2FtcGxlQ291bnQpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRVhQRUNUX1RS
VUUodGV4dHVyZUluZm8uc2FtcGxlQ291bnRzLmVtcHR5KCkpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotfQotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKEQzRDExRm9ybWF0VGFi
bGVzVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDEwXzAoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX0QzRDExX0ZMMTBfMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNE
MTFfRkwxMV8wKCkpOwotCi19IC8vIGFub255bW91cyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EM0QxMUlucHV0TGF5b3V0
Q2FjaGVUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9EM0QxMUlucHV0TGF5b3V0Q2FjaGVUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggN2YxODJkMmIxM2M0NzlkMTk2ZTRlNGI3OTQ2YWYxZGQxNTI0ZDE2NC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRDNEMTFJbnB1dExheW91dENhY2hlVGVzdC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIEQzRDExSW5wdXRMYXlv
dXRDYWNoZVRlc3Q6Ci0vLyAgIFN0cmVzcyB0byB0byByZXByb2R1Y2UgYSBidWcgd2hlcmUgd2Ug
d2VyZW4ndCBmbHVpbmcgdGhlIGNhc2UgY29ycmVjdGx5LgotLy8KLQotI2luY2x1ZGUgPHNzdHJl
YW0+Ci0KLSNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCi0jaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL0NvbnRleHQxMS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmgiCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRl
c3QuaCIKLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaCIKLQot
dXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3MgRDNEMTFJbnB1
dExheW91dENhY2hlVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAg
IEQzRDExSW5wdXRMYXlvdXRDYWNoZVRlc3QoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lk
dGgoNjQpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoNjQpOwotICAgICAgICBzZXRDb25maWdS
ZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotCi0gICAg
R0x1aW50IG1ha2VQcm9ncmFtV2l0aEF0dHJpYkNvdW50KHVuc2lnbmVkIGludCBhdHRyaWJDb3Vu
dCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cnN0cjsKLQotICAgICAgICBz
dHJzdHIgPDwgImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uOyIgPDwgc3RkOjplbmRsOwotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGludCBhdHRyaWJJbmRleCA9IDA7IGF0dHJpYkluZGV4IDwgYXR0cmli
Q291bnQ7ICsrYXR0cmliSW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cnN0ciA8PCAi
YXR0cmlidXRlIGZsb2F0IGEiIDw8IGF0dHJpYkluZGV4IDw8ICI7IiA8PCBzdGQ6OmVuZGw7Ci0g
ICAgICAgIH0KLSAgICAgICAgc3Ryc3RyIDw8ICJ2YXJ5aW5nIGZsb2F0IHY7IiA8PCBzdGQ6OmVu
ZGwKLSAgICAgICAgICAgICAgIDw8ICJ2b2lkIG1haW4oKSB7IiA8PCBzdGQ6OmVuZGwKLSAgICAg
ICAgICAgICAgIDw8ICIgICAgdiA9IDAuMDsiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgZm9yICh1
bnNpZ25lZCBpbnQgYXR0cmliSW5kZXggPSAwOyBhdHRyaWJJbmRleCA8IGF0dHJpYkNvdW50OyAr
K2F0dHJpYkluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICBzdHJzdHIgPDwgIiAgICB2ICs9
IGEiIDw8IGF0dHJpYkluZGV4IDw8ICI7IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIH0KLSAgICAg
ICAgc3Ryc3RyIDw8ICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLjAsIDEuMCk7
IiA8PCBzdGQ6OmVuZGwKLSAgICAgICAgICAgICAgIDw8ICJ9IiA8PCBzdGQ6OmVuZGw7Ci0KLSAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgYmFzaWNGcmFnbWVudFNoYWRlciA9Ci0gICAgICAgICAg
ICAidmFyeWluZyBoaWdocCBmbG9hdCB2O1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpIHsi
Ci0gICAgICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2IC8gMjU1LjAsIDAuMCwgMC4w
LCAxLjApO1xuIgotICAgICAgICAgICAgIn1cbiI7Ci0KLSAgICAgICAgcmV0dXJuIENvbXBpbGVQ
cm9ncmFtKHN0cnN0ci5zdHIoKSwgYmFzaWNGcmFnbWVudFNoYWRlcik7Ci0gICAgfQotfTsKLQot
Ly8gU3RyZXNzIHRoZSBjYWNoZSBieSBzZXR0aW5nIGEgc21hbGwgY2FjaGUgc2l6ZSBhbmQgZHJh
d2luZyB3aXRoIGEgYnVuY2ggb2Ygc2hhZGVycwotLy8gd2l0aCBkaWZmZXJlbnQgaW5wdXQgc2ln
bmF0dXJlcy4KLVRFU1RfUChEM0QxMUlucHV0TGF5b3V0Q2FjaGVUZXN0LCBTdHJlc3NUZXN0KQot
ewotICAgIC8vIEhhY2sgdGhlIEFOR0xFIQotICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gcmVp
bnRlcnByZXRfY2FzdDxnbDo6Q29udGV4dCAqPihnZXRFR0xXaW5kb3coKS0+Z2V0Q29udGV4dCgp
KTsKLSAgICByeDo6Q29udGV4dDExICpjb250ZXh0MTEgICAgICAgICAgICAgICA9IHJ4OjpHZXRJ
bXBsQXM8cng6OkNvbnRleHQxMT4oY29udGV4dCk7Ci0gICAgcng6OlJlbmRlcmVyMTEgKnJlbmRl
cmVyMTEgICAgICAgICAgICAgPSBjb250ZXh0MTEtPmdldFJlbmRlcmVyKCk7Ci0gICAgcng6Oklu
cHV0TGF5b3V0Q2FjaGUgKmlucHV0TGF5b3V0Q2FjaGUgPSByZW5kZXJlcjExLT5nZXRJbnB1dExh
eW91dENhY2hlKCk7Ci0KLSAgICAvLyBDbGFtcCB0aGUgY2FjaGUgc2l6ZSB0byBzb21ldGhpbmcg
dGlueQotICAgIGlucHV0TGF5b3V0Q2FjaGUtPnNldENhY2hlU2l6ZSg0KTsKLQotICAgIEdMaW50
IG1heEF0dHJpYnMgPSAwOwotICAgIGNvbnRleHQtPmdldEludGVnZXJ2KEdMX01BWF9WRVJURVhf
QVRUUklCUywgJm1heEF0dHJpYnMpOwotCi0gICAgLy8gUmVzZXJ2ZSBvbmUgYXR0cmliIGZvciBw
b3NpdGlvbgotICAgIHVuc2lnbmVkIGludCBtYXhJbnB1dHMgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBpbnQ+KG1heEF0dHJpYnMpIC0gMjsKLQotICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gcHJvZ3Jh
bXM7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgYXR0cmliQ291bnQgPSAwOyBhdHRyaWJDb3VudCA8
PSBtYXhJbnB1dHM7ICsrYXR0cmliQ291bnQpCi0gICAgewotICAgICAgICBHTHVpbnQgcHJvZ3Jh
bSA9IG1ha2VQcm9ncmFtV2l0aEF0dHJpYkNvdW50KGF0dHJpYkNvdW50KTsKLSAgICAgICAgQVNT
RVJUX05FKDB1LCBwcm9ncmFtKTsKLSAgICAgICAgcHJvZ3JhbXMucHVzaF9iYWNrKHByb2dyYW0p
OwotICAgIH0KLQotICAgIC8vIEl0ZXJhdGl2ZWx5IGRvIGEgc2ltcGxlIGRyb3Agb3BlcmF0aW9u
LCB0cnlpbmcgZXZlcnkgYXR0cmlidXRlIGNvdW50IGZyb20gMC4uTUFYX0FUVFJJQlMuCi0gICAg
Ly8gVGhpcyBzaG91bGQgdGhyYXNoIHRoZSBjYWNoZS4KLSAgICBmb3IgKHVuc2lnbmVkIGludCBp
dGVyYXRpb25Db3VudCA9IDA7IGl0ZXJhdGlvbkNvdW50IDwgMTA7ICsraXRlcmF0aW9uQ291bnQp
Ci0gICAgewotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBmb3IgKHVu
c2lnbmVkIGludCBhdHRyaWJDb3VudCA9IDA7IGF0dHJpYkNvdW50IDw9IG1heElucHV0czsgKyth
dHRyaWJDb3VudCkKLSAgICAgICAgewotICAgICAgICAgICAgR0x1aW50IHByb2dyYW0gPSBwcm9n
cmFtc1thdHRyaWJDb3VudF07Ci0gICAgICAgICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7Ci0K
LSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGF0dHJpYkluZGV4ID0gMDsgYXR0cmliSW5k
ZXggPCBhdHRyaWJDb3VudDsgKythdHRyaWJJbmRleCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBhdHRyaWJOYW1lU3RyOwotICAgICAgICAgICAgICAg
IGF0dHJpYk5hbWVTdHIgPDwgImEiIDw8IGF0dHJpYkluZGV4OwotICAgICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nIGF0dHJpYk5hbWUgPSBhdHRyaWJOYW1lU3RyLnN0cigpOwotCi0gICAgICAgICAg
ICAgICAgR0xpbnQgbG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIGF0dHJp
Yk5hbWUuY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05FKC0xLCBsb2NhdGlvbik7
Ci0gICAgICAgICAgICAgICAgZ2xWZXJ0ZXhBdHRyaWIxZihsb2NhdGlvbiwgMS4wZik7Ci0gICAg
ICAgICAgICAgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkobG9jYXRpb24pOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBkcmF3UXVhZChwcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKLSAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCBhdHRyaWJDb3VudCwgMCwgMCwg
MjU1dSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKEdMdWludCBwcm9ncmFtIDogcHJv
Z3JhbXMpCi0gICAgewotICAgICAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Ci0gICAgfQot
fQotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKEQzRDExSW5wdXRMYXlvdXRDYWNoZVRlc3QsIEVT
Ml9EM0QxMSgpKTsKLQotfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0QzREltYWdlRm9ybWF0Q29u
dmVyc2lvblRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL0QzREltYWdlRm9ybWF0Q29udmVyc2lvblRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkNjMxOWQzZjdiZDExMzljOTE1NjdiNDFlYzcwNzVmZGE3YWRkODQxLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EM0RJbWFnZUZvcm1hdENvbnZlcnNpb25UZXN0
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwNyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIw
MTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gRDNESW1h
Z2VGb3JtYXRDb252ZXJzaW9uVGVzdDoKLS8vICAgQmFzaWMgdGVzdHMgdG8gdmFsaWRhdGUgY29k
ZSByZWxhdGluZyB0byBEM0QgSW1hZ2UgZm9ybWF0IGNvbnZlcnNpb25zLgotCi0jaW5jbHVkZSAi
dGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotI2luY2x1ZGUgImltYWdlX3V0aWwvaW1hZ2Vmb3Jt
YXRzLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17Ci0KLWNsYXNz
IEQzREltYWdlRm9ybWF0Q29udmVyc2lvblRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHBy
b3RlY3RlZDoKLSAgICBEM0RJbWFnZUZvcm1hdENvbnZlcnNpb25UZXN0KCkKLSAgICB7Ci0gICAg
ICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwot
ICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMo
OCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBo
YUJpdHMoOCk7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVy
dGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBw
cmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0gICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlv
bjsKLSAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsKLQotICAgICAgICAgICAgdm9p
ZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZl
YzQocG9zaXRpb24ueHksIDAuMCwgMS4wKTsKLSAgICAgICAgICAgICAgICB0ZXhjb29yZCA9IChw
b3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UyRCA9IFNIQURFUl9T
T1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwotICAg
ICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4OwotICAgICAgICAgICAgdmFyeWluZyB2ZWMy
IHRleGNvb3JkOwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBtMkRQcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZTJEKTsKLSAgICAg
ICAgbVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG0yRFBy
b2dyYW0sICJ0ZXgiKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtMkRQcm9ncmFtKTsKLQotICAgICAgICBBTkdM
RVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgLy8gVXNlcyBDb2xvclN0cnVjdFR5cGU6
OndyaXRlQ29sb3IgdG8gcG9wdWxhdGUgaW5pdGlhbCBkYXRhIGZvciBhIHRleHR1cmUsIHBhc3Mg
aXQgdG8gZ2xUZXhJbWFnZTJELCB0aGVuIHJlbmRlciB3aXRoIGl0LgotICAgIC8vIFRoZSByZXN1
bHRpbmcgY29sb3JzIHNob3VsZCBtYXRjaCB0aGUgY29sb3JzIHBhc3NlZCBpbnRvIDo6d3JpdGVD
b2xvci4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29sb3JTdHJ1Y3RUeXBlPgotICAgIHZvaWQg
cnVuVGVzdChHTGVudW0gdGV4MkRGb3JtYXQsIEdMZW51bSB0ZXgyRFR5cGUpCi0gICAgewotICAg
ICAgICBnbDo6Q29sb3JGIHNyY0NvbG9yRls0XTsKLSAgICAgICAgQ29sb3JTdHJ1Y3RUeXBlIHBp
eGVsc1s0XTsKLQotICAgICAgICBHTHVpbnQgdGV4ID0gMDsKLSAgICAgICAgR0x1aW50IGZibyA9
IDA7Ci0gICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleCk7Ci0gICAgICAgIGdsR2VuRnJhbWVi
dWZmZXJzKDEsICZmYm8pOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgICAg
ICBzcmNDb2xvckZbMF0ucmVkID0gMS4wZjsgc3JjQ29sb3JGWzBdLmdyZWVuID0gMC4wZjsgc3Jj
Q29sb3JGWzBdLmJsdWUgPSAwLjBmOyBzcmNDb2xvckZbMF0uYWxwaGEgPSAxLjBmOyAvLyBSZWQK
LSAgICAgICAgc3JjQ29sb3JGWzFdLnJlZCA9IDAuMGY7IHNyY0NvbG9yRlsxXS5ncmVlbiA9IDEu
MGY7IHNyY0NvbG9yRlsxXS5ibHVlID0gMC4wZjsgc3JjQ29sb3JGWzFdLmFscGhhID0gMS4wZjsg
Ly8gR3JlZW4KLSAgICAgICAgc3JjQ29sb3JGWzJdLnJlZCA9IDAuMGY7IHNyY0NvbG9yRlsyXS5n
cmVlbiA9IDAuMGY7IHNyY0NvbG9yRlsyXS5ibHVlID0gMS4wZjsgc3JjQ29sb3JGWzJdLmFscGhh
ID0gMS4wZjsgLy8gQmx1ZQotICAgICAgICBzcmNDb2xvckZbM10ucmVkID0gMS4wZjsgc3JjQ29s
b3JGWzNdLmdyZWVuID0gMS4wZjsgc3JjQ29sb3JGWzNdLmJsdWUgPSAwLjBmOyBzcmNDb2xvckZb
M10uYWxwaGEgPSAxLjBmOyAvLyBSZWQgKyBHcmVlbiAoWWVsbG93KQotCi0gICAgICAgIC8vIENv
bnZlcnQgdGhlIENvbG9yRiBpbnRvIHRoZSBwaXhlbHMgdGhhdCB3aWxsIGJlIGZlZCB0byBnbFRl
eEltYWdlMkQKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCA0OyBpKyspCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIENvbG9yU3RydWN0VHlwZTo6d3JpdGVDb2xvcigmKHBpeGVs
c1tpXSksICYoc3JjQ29sb3JGW2ldKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBHZW5lcmF0
ZSB0aGUgdGV4dHVyZQotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7
Ci0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCB0ZXgyREZvcm1hdCwgMiwg
MiwgMCwgdGV4MkRGb3JtYXQsIHRleDJEVHlwZSwgcGl4ZWxzKTsKLSAgICAgICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7
Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19G
SUxURVIsIEdMX05FQVJFU1QpOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAg
ICAgICAvLyBEcmF3IGEgcXVhZCB1c2luZyB0aGUgdGV4dHVyZQotICAgICAgICBnbENsZWFyQ29s
b3IoMCwgMCwgMCwgMCk7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0g
ICAgICAgIGdsVXNlUHJvZ3JhbShtMkRQcm9ncmFtKTsKLSAgICAgICAgZ2xVbmlmb3JtMWkobVRl
eHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiwgMCk7Ci0gICAgICAgIGRyYXdRdWFkKG0yRFByb2dyYW0s
ICJwb3NpdGlvbiIsIDAuNWYpOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAg
ICAgICAvLyBDaGVjayB0aGF0IHRoZSBwaXhlbCBjb2xvcnMgbWF0Y2ggc3JjQ29sb3JGCi0gICAg
ICAgIEVYUEVDVF9QSVhFTF9FUSggICAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAg
ICAgICAwLCAyNTUsICAgMCwgICAwLCAyNTUpOwotICAgICAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0
V2luZG93SGVpZ2h0KCkgLSAxLCAgICAgICAgICAgICAgICAgICAgMCwgICAwLCAyNTUsICAgMCwg
MjU1KTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKCAgICAgICAgICAgICAgICAgICAgMCwgZ2V0
V2luZG93V2lkdGgoKSAtIDEsICAgMCwgICAwLCAyNTUsIDI1NSk7Ci0gICAgICAgIEVYUEVDVF9Q
SVhFTF9FUShnZXRXaW5kb3dIZWlnaHQoKSAtIDEsIGdldFdpbmRvd1dpZHRoKCkgLSAxLCAyNTUs
IDI1NSwgICAwLCAyNTUpOwotICAgICAgICBzd2FwQnVmZmVycygpOwotCi0gICAgICAgIGdsRGVs
ZXRlRnJhbWVidWZmZXJzKDEsICZmYm8pOwotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0
ZXgpOwotICAgIH0KLQotICAgIEdMdWludCBtMkRQcm9ncmFtOwotICAgIEdMaW50IG1UZXh0dXJl
MkRVbmlmb3JtTG9jYXRpb247Ci19OwotCi0vLyBWYWxpZGF0aW9uIHRlc3QgZm9yIHJ4OjpSNEc0
QjRBNCdzIHdyaXRlQ29sb3IgZnVuY3Rpb25zCi1URVNUX1AoRDNESW1hZ2VGb3JtYXRDb252ZXJz
aW9uVGVzdCwgV3JpdGVDb2xvckZ1bmN0aW9uUjRHNEI0QTQpCi17Ci0gICAgLy8gVGhlc2UgdGVz
dHMgZmFpbCBvbiBjZXJ0YWluIEludGVsIG1hY2hpbmVzIHJ1bm5pbmcgYW4gdW4tdXBkYXRlZCB2
ZXJzaW9uIG9mIFdpbjcKLSAgICAvLyBUaGUgdGVzdHMgcGFzcyBhZnRlciBpbnN0YWxsaW5nIHRo
ZSBsYXRlc3QgdXBkYXRlcyBmcm9tIFdpbmRvd3MgVXBkYXRlLgotICAgIC8vIFRPRE86IHJlZW5h
YmxlIHRoZXNlIHRlc3RzIG9uY2UgdGhlIGJvdHMgaGF2ZSBiZWVuIHVwZGF0ZWQKLSAgICBpZiAo
SXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9EM0QxMV9BTkdMRSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIG9uIEludGVsIEQzRDExLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgcnVuVGVzdDxSNEc0QjRBND4oR0xfUkdCQSwgR0xfVU5TSUdORURfU0hPUlRfNF80
XzRfNCk7Ci19Ci0KLS8vIFZhbGlkYXRpb24gdGVzdCBmb3Igcng6OlI1RzVCNUExJ3Mgd3JpdGVD
b2xvciBmdW5jdGlvbnMKLVRFU1RfUChEM0RJbWFnZUZvcm1hdENvbnZlcnNpb25UZXN0LCBXcml0
ZUNvbG9yRnVuY3Rpb25SNUc1QjVBMSkKLXsKLSAgICAvLyBUaGVzZSB0ZXN0cyBmYWlsIG9uIGNl
cnRhaW4gSW50ZWwgbWFjaGluZXMgcnVubmluZyBhbiB1bi11cGRhdGVkIHZlcnNpb24gb2YgV2lu
NwotICAgIC8vIFRoZSB0ZXN0cyBwYXNzIGFmdGVyIGluc3RhbGxpbmcgdGhlIGxhdGVzdCB1cGRh
dGVzIGZyb20gV2luZG93cyBVcGRhdGUuCi0gICAgLy8gVE9ETzogcmVlbmFibGUgdGhlc2UgdGVz
dHMgb25jZSB0aGUgYm90cyBoYXZlIGJlZW4gdXBkYXRlZAotICAgIGlmIChJc0ludGVsKCkgJiYg
Z2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FO
R0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwg
RDNEMTEuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBydW5U
ZXN0PFI1RzVCNUExPihHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xKTsKLX0KLQot
Ly8gVmFsaWRhdGlvbiB0ZXN0IGZvciByeDo6UjVHNkI1J3Mgd3JpdGVDb2xvciBmdW5jdGlvbnMK
LVRFU1RfUChEM0RJbWFnZUZvcm1hdENvbnZlcnNpb25UZXN0LCBXcml0ZUNvbG9yRnVuY3Rpb25S
NUc2QjUpCi17Ci0gICAgLy8gVGhlc2UgdGVzdHMgZmFpbCBvbiBjZXJ0YWluIEludGVsIG1hY2hp
bmVzIHJ1bm5pbmcgYW4gdW4tdXBkYXRlZCB2ZXJzaW9uIG9mIFdpbjcKLSAgICAvLyBUaGUgdGVz
dHMgcGFzcyBhZnRlciBpbnN0YWxsaW5nIHRoZSBsYXRlc3QgdXBkYXRlcyBmcm9tIFdpbmRvd3Mg
VXBkYXRlLgotICAgIC8vIFRPRE86IHJlZW5hYmxlIHRoZXNlIHRlc3RzIG9uY2UgdGhlIGJvdHMg
aGF2ZSBiZWVuIHVwZGF0ZWQKLSAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVy
ZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKLSAgICB7Ci0gICAg
ICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIEQzRDExLiIgPDwgc3RkOjpl
bmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcnVuVGVzdDxSNUc2QjU+KEdMX1JH
QiwgR0xfVU5TSUdORURfU0hPUlRfNV82XzUpOwotfQotCi0vLyBWYWxpZGF0aW9uIHRlc3QgZm9y
IHJ4OjpSOEc4QjhBOCdzIHdyaXRlQ29sb3IgZnVuY3Rpb25zCi1URVNUX1AoRDNESW1hZ2VGb3Jt
YXRDb252ZXJzaW9uVGVzdCwgV3JpdGVDb2xvckZ1bmN0aW9uUjhHOEI4QTgpCi17Ci0gICAgLy8g
VGhlc2UgdGVzdHMgZmFpbCBvbiBjZXJ0YWluIEludGVsIG1hY2hpbmVzIHJ1bm5pbmcgYW4gdW4t
dXBkYXRlZCB2ZXJzaW9uIG9mIFdpbjcKLSAgICAvLyBUaGUgdGVzdHMgcGFzcyBhZnRlciBpbnN0
YWxsaW5nIHRoZSBsYXRlc3QgdXBkYXRlcyBmcm9tIFdpbmRvd3MgVXBkYXRlLgotICAgIC8vIFRP
RE86IHJlZW5hYmxlIHRoZXNlIHRlc3RzIG9uY2UgdGhlIGJvdHMgaGF2ZSBiZWVuIHVwZGF0ZWQK
LSAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAi
VGVzdCBza2lwcGVkIG9uIEludGVsIEQzRDExLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgcnVuVGVzdDxSOEc4QjhBOD4oR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSk7Ci19Ci0KLS8vIFZhbGlkYXRpb24gdGVzdCBmb3Igcng6OlI4RzhCOCdzIHdyaXRlQ29s
b3IgZnVuY3Rpb25zCi1URVNUX1AoRDNESW1hZ2VGb3JtYXRDb252ZXJzaW9uVGVzdCwgV3JpdGVD
b2xvckZ1bmN0aW9uUjhHOEI4KQotewotICAgIC8vIFRoZXNlIHRlc3RzIGZhaWwgb24gY2VydGFp
biBJbnRlbCBtYWNoaW5lcyBydW5uaW5nIGFuIHVuLXVwZGF0ZWQgdmVyc2lvbiBvZiBXaW43Ci0g
ICAgLy8gVGhlIHRlc3RzIHBhc3MgYWZ0ZXIgaW5zdGFsbGluZyB0aGUgbGF0ZXN0IHVwZGF0ZXMg
ZnJvbSBXaW5kb3dzIFVwZGF0ZS4KLSAgICAvLyBUT0RPOiByZWVuYWJsZSB0aGVzZSB0ZXN0cyBv
bmNlIHRoZSBib3RzIGhhdmUgYmVlbiB1cGRhdGVkCi0gICAgaWYgKElzSW50ZWwoKSAmJiBnZXRQ
bGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUp
Ci0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBEM0Qx
MS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsUGl4ZWxT
dG9yZWkoR0xfVU5QQUNLX0FMSUdOTUVOVCwgMSk7Ci0gICAgcnVuVGVzdDxSOEc4Qjg+KEdMX1JH
QiwgR0xfVU5TSUdORURfQllURSk7Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBj
b25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJz
aW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi0vLyBFdmVuIHRob3VnaCB0
aGlzIHRlc3QgaXMgb25seSBydW4gb24gV2luZG93cyAoc2luY2UgaXQgaW5jbHVkZXMgaW1hZ2Vm
b3JtYXRzLmggZnJvbSB0aGUgRDNEIHJlbmRlcmVyKSwgd2UgY2FuIHN0aWxsIHJ1biB0aGUgdGVz
dAotLy8gYWdhaW5zdCBPcGVuR0wuIFRoaXMgaXMgdmFsdWFibGUsIHNpbmNlIGl0IHByb3ZpZGVz
IGV4dHJhIHZhbGlkYXRpb24gdXNpbmcgYSByZW5kZXJlciB0aGF0IGRvZXNuJ3QgdXNlIGltYWdl
Zm9ybWF0cy5oIGl0c2VsZi4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRDNESW1hZ2VGb3JtYXRD
b252ZXJzaW9uVGVzdCwgRVMyX0QzRDkoKSwgRVMyX0QzRDExKCksIEVTMl9EM0QxMV9GTDlfMygp
LCBFUzJfT1BFTkdMKCkpOwotCi19IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RYVDFDb21wcmVzc2VkVGV4dHVyZVRl
c3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RYVDFD
b21wcmVzc2VkVGV4dHVyZVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
NGI2YjllYzMyOGNiZWNhNDhhZGVhZjg4OTI2YTlhYjI0YjY3M2M3Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9EWFQxQ29tcHJlc3NlZFRleHR1cmVUZXN0LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDMyNiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAidGVzdF91dGlscy9B
TkdMRVRlc3QuaCIKLQotI2luY2x1ZGUgIm1lZGlhL3BpeGVsLmlubCIKLQotdXNpbmcgbmFtZXNw
YWNlIGFuZ2xlOwotCi1jbGFzcyBEWFQxQ29tcHJlc3NlZFRleHR1cmVUZXN0IDogcHVibGljIEFO
R0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgRFhUMUNvbXByZXNzZWRUZXh0dXJlVGVzdCgp
Ci0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCg1MTIpOwotICAgICAgICBzZXRXaW5kb3dI
ZWlnaHQoNTEyKTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29u
ZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAg
c2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgp
Ci0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgdnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAg
IHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0
aW9uOwotICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHRleGNvb3JkOwotCi0gICAgICAgICAgICB2
b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0g
cG9zaXRpb247Ci0gICAgICAgICAgICAgICAgdGV4Y29vcmQgPSAocG9zaXRpb24ueHkgKiAwLjUp
ICsgMC41OwotICAgICAgICAgICAgICAgIHRleGNvb3JkLnkgPSAxLjAgLSB0ZXhjb29yZC55Owot
ICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRl
eHR1cmVGU1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJl
Y2lzaW9uIGhpZ2hwIGZsb2F0OwotICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4Owot
ICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHRleGNvb3JkOwotCi0gICAgICAgICAgICB2b2lkIG1h
aW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1
cmUyRCh0ZXgsIHRleGNvb3JkKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAg
ICBtVGV4dHVyZVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2c1NvdXJjZSwgdGV4dHVyZUZTU291
cmNlKTsKLSAgICAgICAgaWYgKG1UZXh0dXJlUHJvZ3JhbSA9PSAwKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBGQUlMKCkgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKLSAgICAgICAg
fQotCi0gICAgICAgIG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRp
b24obVRleHR1cmVQcm9ncmFtLCAidGV4Iik7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKLSAgICB7Ci0gICAgICAg
IGdsRGVsZXRlUHJvZ3JhbShtVGV4dHVyZVByb2dyYW0pOwotCi0gICAgICAgIEFOR0xFVGVzdDo6
VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVRleHR1cmVQcm9ncmFtOwotICAgIEdM
aW50IG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uOwotfTsKLQotVEVTVF9QKERYVDFDb21wcmVzc2Vk
VGV4dHVyZVRlc3QsIENvbXByZXNzZWRUZXhJbWFnZSkKLXsKLSAgICBpZiAoIWV4dGVuc2lvbkVu
YWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKSkKLSAgICB7Ci0gICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fZHh0MSBpcyBub3QgYXZhaWxhYmxlLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgR0x1aW50IHRleHR1cmU7Ci0gICAgZ2xHZW5UZXh0dXJlcygxLCAm
dGV4dHVyZSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKLSAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBH
TF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0Up
OwotCi0gICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfMF93aWR0aCwgcGl4ZWxfMF9oZWlnaHQs
IDAsIHBpeGVsXzBfc2l6ZSwgcGl4ZWxfMF9kYXRhKTsKLSAgICBnbENvbXByZXNzZWRUZXhJbWFn
ZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBw
aXhlbF8xX3dpZHRoLCBwaXhlbF8xX2hlaWdodCwgMCwgcGl4ZWxfMV9zaXplLCBwaXhlbF8xX2Rh
dGEpOwotICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMiwgR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzJfd2lkdGgsIHBpeGVsXzJfaGVpZ2h0
LCAwLCBwaXhlbF8yX3NpemUsIHBpeGVsXzJfZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4SW1h
Z2UyRChHTF9URVhUVVJFXzJELCAzLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwg
cGl4ZWxfM193aWR0aCwgcGl4ZWxfM19oZWlnaHQsIDAsIHBpeGVsXzNfc2l6ZSwgcGl4ZWxfM19k
YXRhKTsKLSAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDQsIEdMX0NP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF80X3dpZHRoLCBwaXhlbF80X2hlaWdo
dCwgMCwgcGl4ZWxfNF9zaXplLCBwaXhlbF80X2RhdGEpOwotICAgIGdsQ29tcHJlc3NlZFRleElt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgNSwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQs
IHBpeGVsXzVfd2lkdGgsIHBpeGVsXzVfaGVpZ2h0LCAwLCBwaXhlbF81X3NpemUsIHBpeGVsXzVf
ZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCA2LCBHTF9D
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfNl93aWR0aCwgcGl4ZWxfNl9oZWln
aHQsIDAsIHBpeGVsXzZfc2l6ZSwgcGl4ZWxfNl9kYXRhKTsKLSAgICBnbENvbXByZXNzZWRUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIDcsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhU
LCBwaXhlbF83X3dpZHRoLCBwaXhlbF83X2hlaWdodCwgMCwgcGl4ZWxfN19zaXplLCBwaXhlbF83
X2RhdGEpOwotICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgOCwgR0xf
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzhfd2lkdGgsIHBpeGVsXzhfaGVp
Z2h0LCAwLCBwaXhlbF84X3NpemUsIHBpeGVsXzhfZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4
SW1hZ2UyRChHTF9URVhUVVJFXzJELCA5LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VCwgcGl4ZWxfOV93aWR0aCwgcGl4ZWxfOV9oZWlnaHQsIDAsIHBpeGVsXzlfc2l6ZSwgcGl4ZWxf
OV9kYXRhKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xVc2VQcm9ncmFt
KG1UZXh0dXJlUHJvZ3JhbSk7Ci0gICAgZ2xVbmlmb3JtMWkobVRleHR1cmVVbmlmb3JtTG9jYXRp
b24sIDApOwotCi0gICAgZHJhd1F1YWQobVRleHR1cmVQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xEZWxldGVUZXh0dXJlcygx
LCAmdGV4dHVyZSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotVEVTVF9QKERY
VDFDb21wcmVzc2VkVGV4dHVyZVRlc3QsIENvbXByZXNzZWRUZXhTdG9yYWdlKQotewotICAgIGlm
ICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpKQot
ICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgZHVlIHRvIG1pc3Npbmcg
R0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIgPDwgc3RkOjplbmRsOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJgot
ICAgICAgICAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UiKSB8fCAh
ZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3JnYjhfcmdiYTgiKSkpCi0gICAgewotICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBkdWUgdG8gbWlzc2luZyBFUzMgb3IgR0xfRVhUX3Rl
eHR1cmVfc3RvcmFnZSBvciBHTF9PRVNfcmdiOF9yZ2JhOCIgPDwgc3RkOjplbmRsOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgR0x1aW50IHRleHR1cmU7Ci0gICAgZ2xHZW5UZXh0dXJl
cygxLCAmdGV4dHVyZSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJl
KTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklM
VEVSLCBHTF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RP
X0VER0UpOwotCi0gICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKLSAgICB7Ci0g
ICAgICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIHBpeGVsX2xldmVscywgR0xf
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzBfd2lkdGgsIHBpeGVsXzBfaGVp
Z2h0KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgZ2xUZXhTdG9yYWdlMkQoR0xf
VEVYVFVSRV8yRCwgcGl4ZWxfbGV2ZWxzLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VCwgcGl4ZWxfMF93aWR0aCwgcGl4ZWxfMF9oZWlnaHQpOwotICAgIH0KLSAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKLQotICAgIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwgMCwgMCwgcGl4ZWxfMF93aWR0aCwgcGl4ZWxfMF9oZWlnaHQsIEdMX0NPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF8wX3NpemUsIHBpeGVsXzBfZGF0YSk7Ci0gICAgZ2xD
b21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAxLCAwLCAwLCBwaXhlbF8xX3dp
ZHRoLCBwaXhlbF8xX2hlaWdodCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBp
eGVsXzFfc2l6ZSwgcGl4ZWxfMV9kYXRhKTsKLSAgICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDIsIDAsIDAsIHBpeGVsXzJfd2lkdGgsIHBpeGVsXzJfaGVpZ2h0LCBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfMl9zaXplLCBwaXhlbF8yX2Rh
dGEpOwotICAgIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMywgMCwg
MCwgcGl4ZWxfM193aWR0aCwgcGl4ZWxfM19oZWlnaHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDFfRVhULCBwaXhlbF8zX3NpemUsIHBpeGVsXzNfZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCA0LCAwLCAwLCBwaXhlbF80X3dpZHRoLCBwaXhl
bF80X2hlaWdodCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzRfc2l6
ZSwgcGl4ZWxfNF9kYXRhKTsKLSAgICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDUsIDAsIDAsIHBpeGVsXzVfd2lkdGgsIHBpeGVsXzVfaGVpZ2h0LCBHTF9DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfNV9zaXplLCBwaXhlbF81X2RhdGEpOwotICAg
IGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgNiwgMCwgMCwgcGl4ZWxf
Nl93aWR0aCwgcGl4ZWxfNl9oZWlnaHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhU
LCBwaXhlbF82X3NpemUsIHBpeGVsXzZfZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1h
Z2UyRChHTF9URVhUVVJFXzJELCA3LCAwLCAwLCBwaXhlbF83X3dpZHRoLCBwaXhlbF83X2hlaWdo
dCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzdfc2l6ZSwgcGl4ZWxf
N19kYXRhKTsKLSAgICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDgs
IDAsIDAsIHBpeGVsXzhfd2lkdGgsIHBpeGVsXzhfaGVpZ2h0LCBHTF9DT01QUkVTU0VEX1JHQkFf
UzNUQ19EWFQxX0VYVCwgcGl4ZWxfOF9zaXplLCBwaXhlbF84X2RhdGEpOwotICAgIGdsQ29tcHJl
c3NlZFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgOSwgMCwgMCwgcGl4ZWxfOV93aWR0aCwg
cGl4ZWxfOV9oZWlnaHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF85
X3NpemUsIHBpeGVsXzlfZGF0YSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAg
IGdsVXNlUHJvZ3JhbShtVGV4dHVyZVByb2dyYW0pOwotICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJl
VW5pZm9ybUxvY2F0aW9uLCAwKTsKLQotICAgIGRyYXdRdWFkKG1UZXh0dXJlUHJvZ3JhbSwgInBv
c2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsRGVs
ZXRlVGV4dHVyZXMoMSwgJnRleHR1cmUpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19
Ci0KLWNsYXNzIERYVDFDb21wcmVzc2VkVGV4dHVyZVRlc3RFUzMgOiBwdWJsaWMgRFhUMUNvbXBy
ZXNzZWRUZXh0dXJlVGVzdCB7IH07Ci0KLWNsYXNzIERYVDFDb21wcmVzc2VkVGV4dHVyZVRlc3RE
M0QxMSA6IHB1YmxpYyBEWFQxQ29tcHJlc3NlZFRleHR1cmVUZXN0IHsgfTsKLQotVEVTVF9QKERY
VDFDb21wcmVzc2VkVGV4dHVyZVRlc3RFUzMsIFBCT0NvbXByZXNzZWRUZXhJbWFnZSkKLXsKLSAg
ICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEi
KSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xf
RVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSBpcyBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAg
ICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEdM
dWludCB0ZXh0dXJlOwotICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUpOwotICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5F
QVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
UywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLQotICAgIEdMdWludCBidWZm
ZXI7Ci0gICAgZ2xHZW5CdWZmZXJzKDEsICZidWZmZXIpOwotICAgIGdsQmluZEJ1ZmZlcihHTF9Q
SVhFTF9VTlBBQ0tfQlVGRkVSLCBidWZmZXIpOwotICAgIGdsQnVmZmVyRGF0YShHTF9QSVhFTF9V
TlBBQ0tfQlVGRkVSLCBwaXhlbF8wX3NpemUsIE5VTEwsIEdMX1NUUkVBTV9EUkFXKTsKLSAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQnVmZmVyU3ViRGF0YShHTF9QSVhFTF9VTlBB
Q0tfQlVGRkVSLCAwLCBwaXhlbF8wX3NpemUsIHBpeGVsXzBfZGF0YSk7Ci0gICAgZ2xDb21wcmVz
c2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQxX0VYVCwgcGl4ZWxfMF93aWR0aCwgcGl4ZWxfMF9oZWlnaHQsIDAsIHBpeGVsXzBfc2l6ZSwg
TlVMTCk7Ci0gICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIDAsIHBp
eGVsXzFfc2l6ZSwgcGl4ZWxfMV9kYXRhKTsKLSAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDEsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF8x
X3dpZHRoLCBwaXhlbF8xX2hlaWdodCwgMCwgcGl4ZWxfMV9zaXplLCBOVUxMKTsKLSAgICBnbEJ1
ZmZlclN1YkRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgcGl4ZWxfMl9zaXplLCBwaXhl
bF8yX2RhdGEpOwotICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMiwg
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzJfd2lkdGgsIHBpeGVsXzJf
aGVpZ2h0LCAwLCBwaXhlbF8yX3NpemUsIE5VTEwpOwotICAgIGdsQnVmZmVyU3ViRGF0YShHTF9Q
SVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBwaXhlbF8zX3NpemUsIHBpeGVsXzNfZGF0YSk7Ci0gICAg
Z2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAzLCBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfM193aWR0aCwgcGl4ZWxfM19oZWlnaHQsIDAsIHBpeGVs
XzNfc2l6ZSwgTlVMTCk7Ci0gICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZG
RVIsIDAsIHBpeGVsXzRfc2l6ZSwgcGl4ZWxfNF9kYXRhKTsKLSAgICBnbENvbXByZXNzZWRUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIDQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhU
LCBwaXhlbF80X3dpZHRoLCBwaXhlbF80X2hlaWdodCwgMCwgcGl4ZWxfNF9zaXplLCBOVUxMKTsK
LSAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgcGl4ZWxfNV9z
aXplLCBwaXhlbF81X2RhdGEpOwotICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgNSwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzVfd2lkdGgs
IHBpeGVsXzVfaGVpZ2h0LCAwLCBwaXhlbF81X3NpemUsIE5VTEwpOwotICAgIGdsQnVmZmVyU3Vi
RGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBwaXhlbF82X3NpemUsIHBpeGVsXzZfZGF0
YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCA2LCBHTF9DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfNl93aWR0aCwgcGl4ZWxfNl9oZWlnaHQs
IDAsIHBpeGVsXzZfc2l6ZSwgTlVMTCk7Ci0gICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VO
UEFDS19CVUZGRVIsIDAsIHBpeGVsXzdfc2l6ZSwgcGl4ZWxfN19kYXRhKTsKLSAgICBnbENvbXBy
ZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDcsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDFfRVhULCBwaXhlbF83X3dpZHRoLCBwaXhlbF83X2hlaWdodCwgMCwgcGl4ZWxfN19zaXpl
LCBOVUxMKTsKLSAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwg
cGl4ZWxfOF9zaXplLCBwaXhlbF84X2RhdGEpOwotICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQo
R0xfVEVYVFVSRV8yRCwgOCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVs
Xzhfd2lkdGgsIHBpeGVsXzhfaGVpZ2h0LCAwLCBwaXhlbF84X3NpemUsIE5VTEwpOwotICAgIGds
QnVmZmVyU3ViRGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBwaXhlbF85X3NpemUsIHBp
eGVsXzlfZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCA5
LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfOV93aWR0aCwgcGl4ZWxf
OV9oZWlnaHQsIDAsIHBpeGVsXzlfc2l6ZSwgTlVMTCk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKLQotICAgIGdsVXNlUHJvZ3JhbShtVGV4dHVyZVByb2dyYW0pOwotICAgIGdsVW5pZm9y
bTFpKG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uLCAwKTsKLQotICAgIGRyYXdRdWFkKG1UZXh0dXJl
UHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
LQotICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJmJ1ZmZlcik7Ci0gICAgZ2xEZWxldGVUZXh0dXJl
cygxLCAmdGV4dHVyZSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotCi1URVNU
X1AoRFhUMUNvbXByZXNzZWRUZXh0dXJlVGVzdEQzRDExLCBQQk9Db21wcmVzc2VkVGV4U3RvcmFn
ZSkKLXsKLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25F
bmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIikpCi0gICAgewotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAm
JgotICAgICAgICAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UiKSB8
fCAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3JnYjhfcmdiYTgiKSkpCi0gICAgewotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgR0x1aW50IHRleHR1cmU7Ci0gICAgZ2xHZW5UZXh0dXJl
cygxLCAmdGV4dHVyZSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJl
KTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklM
VEVSLCBHTF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RP
X0VER0UpOwotCi0gICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKLSAgICB7Ci0g
ICAgICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIHBpeGVsX2xldmVscywgR0xf
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzBfd2lkdGgsIHBpeGVsXzBfaGVp
Z2h0KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgZ2xUZXhTdG9yYWdlMkQoR0xf
VEVYVFVSRV8yRCwgcGl4ZWxfbGV2ZWxzLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VCwgcGl4ZWxfMF93aWR0aCwgcGl4ZWxfMF9oZWlnaHQpOwotICAgIH0KLSAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKLQotICAgIEdMdWludCBidWZmZXI7Ci0gICAgZ2xHZW5CdWZmZXJzKDEsICZi
dWZmZXIpOwotICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCBidWZmZXIp
OwotICAgIGdsQnVmZmVyRGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCBwaXhlbF8wX3NpemUs
IE5VTEwsIEdMX1NUUkVBTV9EUkFXKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAg
IGdsQnVmZmVyU3ViRGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBwaXhlbF8wX3NpemUs
IHBpeGVsXzBfZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCAwLCAwLCBwaXhlbF8wX3dpZHRoLCBwaXhlbF8wX2hlaWdodCwgR0xfQ09NUFJFU1NF
RF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzBfc2l6ZSwgTlVMTCk7Ci0gICAgZ2xCdWZmZXJT
dWJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIDAsIHBpeGVsXzFfc2l6ZSwgcGl4ZWxfMV9k
YXRhKTsKLSAgICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIDAs
IDAsIHBpeGVsXzFfd2lkdGgsIHBpeGVsXzFfaGVpZ2h0LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQxX0VYVCwgcGl4ZWxfMV9zaXplLCBOVUxMKTsKLSAgICBnbEJ1ZmZlclN1YkRhdGEoR0xf
UElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgcGl4ZWxfMl9zaXplLCBwaXhlbF8yX2RhdGEpOwotICAg
IGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMiwgMCwgMCwgcGl4ZWxf
Ml93aWR0aCwgcGl4ZWxfMl9oZWlnaHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhU
LCBwaXhlbF8yX3NpemUsIE5VTEwpOwotICAgIGdsQnVmZmVyU3ViRGF0YShHTF9QSVhFTF9VTlBB
Q0tfQlVGRkVSLCAwLCBwaXhlbF8zX3NpemUsIHBpeGVsXzNfZGF0YSk7Ci0gICAgZ2xDb21wcmVz
c2VkVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAzLCAwLCAwLCBwaXhlbF8zX3dpZHRoLCBw
aXhlbF8zX2hlaWdodCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzNf
c2l6ZSwgTlVMTCk7Ci0gICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIs
IDAsIHBpeGVsXzRfc2l6ZSwgcGl4ZWxfNF9kYXRhKTsKLSAgICBnbENvbXByZXNzZWRUZXhTdWJJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIDQsIDAsIDAsIHBpeGVsXzRfd2lkdGgsIHBpeGVsXzRfaGVp
Z2h0LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfNF9zaXplLCBOVUxM
KTsKLSAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgcGl4ZWxf
NV9zaXplLCBwaXhlbF81X2RhdGEpOwotICAgIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgNSwgMCwgMCwgcGl4ZWxfNV93aWR0aCwgcGl4ZWxfNV9oZWlnaHQsIEdMX0NP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF81X3NpemUsIE5VTEwpOwotICAgIGds
QnVmZmVyU3ViRGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBwaXhlbF82X3NpemUsIHBp
eGVsXzZfZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJE
LCA2LCAwLCAwLCBwaXhlbF82X3dpZHRoLCBwaXhlbF82X2hlaWdodCwgR0xfQ09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzZfc2l6ZSwgTlVMTCk7Ci0gICAgZ2xCdWZmZXJTdWJE
YXRhKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIDAsIHBpeGVsXzdfc2l6ZSwgcGl4ZWxfN19kYXRh
KTsKLSAgICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDcsIDAsIDAs
IHBpeGVsXzdfd2lkdGgsIHBpeGVsXzdfaGVpZ2h0LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQxX0VYVCwgcGl4ZWxfN19zaXplLCBOVUxMKTsKLSAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfUElY
RUxfVU5QQUNLX0JVRkZFUiwgMCwgcGl4ZWxfOF9zaXplLCBwaXhlbF84X2RhdGEpOwotICAgIGds
Q29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgOCwgMCwgMCwgcGl4ZWxfOF93
aWR0aCwgcGl4ZWxfOF9oZWlnaHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBw
aXhlbF84X3NpemUsIE5VTEwpOwotICAgIGdsQnVmZmVyU3ViRGF0YShHTF9QSVhFTF9VTlBBQ0tf
QlVGRkVSLCAwLCBwaXhlbF85X3NpemUsIHBpeGVsXzlfZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2Vk
VGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCA5LCAwLCAwLCBwaXhlbF85X3dpZHRoLCBwaXhl
bF85X2hlaWdodCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzlfc2l6
ZSwgTlVMTCk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsVXNlUHJvZ3Jh
bShtVGV4dHVyZVByb2dyYW0pOwotICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlVW5pZm9ybUxvY2F0
aW9uLCAwKTsKLQotICAgIGRyYXdRdWFkKG1UZXh0dXJlUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41
Zik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsRGVsZXRlVGV4dHVyZXMo
MSwgJnRleHR1cmUpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFVzZSB0
aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwg
d2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWlu
c3QuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKERYVDFDb21wcmVzc2VkVGV4dHVyZVRlc3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAgICAg
IEVTMl9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzNfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygp
LAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7Ci0KLS8vIFVzZSB0aGlz
IHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hp
Y2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3Qu
Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKERYVDFDb21wcmVzc2VkVGV4dHVyZVRlc3RFUzMsIEVT
M19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKLQotQU5HTEVfSU5TVEFO
VElBVEVfVEVTVChEWFQxQ29tcHJlc3NlZFRleHR1cmVUZXN0RDNEMTEsIEVTMl9EM0QxMSgpLCBF
UzNfRDNEMTEoKSwgRVMyX0QzRDExX0ZMOV8zKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RlYnVnTWFya2VyVGVzdC5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRGVidWdNYXJrZXJUZXN0LmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJkNGE0MzIyNzBlM2E4OTFkNDIyNzFj
YzVkOTAwODIxMTliMDA1ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRGVidWdN
YXJrZXJUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8vCi0vLyBDb3B5
cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0v
LyBEZWJ1Z01hcmtlclRlc3Q6Ci0vLyAgIEJhc2ljIHRlc3RzIHRvIGVuc3VyZSBFWFRfZGVidWdf
bWFya2VyIGVudHJ5IHBvaW50cyB3b3JrLgotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRl
c3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3Mg
RGVidWdNYXJrZXJUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAg
RGVidWdNYXJrZXJUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7Ci0g
ICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgp
OwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVC
aXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotfTsKLQotLy8g
U2ltcGxlIHRlc3QgdG8gZW5zdXJlIHRoZSB2YXJpb3VzIEVYVF9kZWJ1Z19tYXJrZXIgZW50cnkg
cG9pbnRzIGRvbid0IGNyYXNoLgotLy8gVGhlIGRlYnVnIG1hcmtlcnMgY2FuIGJlIHZhbGlkYXRl
ZCBieSBjYXB0dXJpbmcgdGhpcyB0ZXN0IHVuZGVyIFBJWC9HcmFwaGljcyBEaWFnbm9zdGljcy4K
LVRFU1RfUChEZWJ1Z01hcmtlclRlc3QsIEJhc2ljVmFsaWRhdGlvbikKLXsKLSAgICBpZiAoIWV4
dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kZWJ1Z19tYXJrZXIiKSkKLSAgICB7Ci0gICAgICAgIHN0
ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGR1ZSB0byBtaXNzaW5nIEdMX0VYVF9kZWJ1Z19tYXJr
ZXIiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHN0ZDo6c3Ry
aW5nIGV2ZW50TWFya2VyQ2FwdGlvbiA9ICJUZXN0IGV2ZW50IG1hcmtlciBjYXB0aW9uIjsKLSAg
ICBzdGQ6OnN0cmluZyBncm91cE1hcmtlckNhcHRpb24gPSAiVGVzdCBncm91cCBtYXJrZXIgY2Fw
dGlvbiI7Ci0KLSAgICBnbFB1c2hHcm91cE1hcmtlckVYVChzdGF0aWNfY2FzdDxHTHNpemVpPihn
cm91cE1hcmtlckNhcHRpb24ubGVuZ3RoKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGdy
b3VwTWFya2VyQ2FwdGlvbi5jX3N0cigpKTsKLQotICAgIC8vIERvIHNvbWUgYmFzaWMgb3BlcmF0
aW9ucyBiZXR3ZWVuIGNhbGxzIHRvIGV4dGVuc2lvbiBlbnRyeSBwb2ludHMKLSAgICBnbENsZWFy
Q29sb3IoMS4wZiwgMS4wZiwgMS4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZG
RVJfQklUKTsKLQotICAgIGdsSW5zZXJ0RXZlbnRNYXJrZXJFWFQoc3RhdGljX2Nhc3Q8R0xzaXpl
aT4oZXZlbnRNYXJrZXJDYXB0aW9uLmxlbmd0aCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV2ZW50TWFya2VyQ2FwdGlvbi5jX3N0cigpKTsKLSAgICBnbENsZWFyQ29sb3IoMS4wZiwg
MC4wZiwgMC4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLQot
ICAgIGdsUHVzaEdyb3VwTWFya2VyRVhUKDAsIE5VTEwpOwotICAgIGdsQ2xlYXJDb2xvcigwLjBm
LCAxLjBmLCAwLjBmLCAwLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwot
Ci0gICAgZ2xQb3BHcm91cE1hcmtlckVYVCgpOwotICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBm
LCAxLjBmLCAwLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAg
Z2xQb3BHcm91cE1hcmtlckVYVCgpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0K
LS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCBy
ZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUg
cnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKERlYnVnTWFya2VyVGVzdCwgRVMy
X0QzRDkoKSwgRVMyX0QzRDExKCksIEVTMl9PUEVOR0woKSwgRVMyX09QRU5HTEVTKCkpOwotCi19
IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0RlYnVnVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvRGVidWdUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZmM3OWM1ZjY0NWIxZTFlYzRhYWI0ODg5OTFjMjM3MzUyOTc3MWMyMi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZ2xfdGVzdHMvRGVidWdUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1
MSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBEZWJ1Z1Rlc3QuY3BwIDogVGVzdHMgb2YgdGhlIEdM
X0tIUl9kZWJ1ZyBleHRlbnNpb24KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0Lmgi
Ci0KLW5hbWVzcGFjZSBhbmdsZQotewotCi1jbGFzcyBEZWJ1Z1Rlc3QgOiBwdWJsaWMgQU5HTEVU
ZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBEZWJ1Z1Rlc3QoKSA6IG1EZWJ1Z0V4dGVuc2lvbkF2
YWlsYWJsZShmYWxzZSkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7Ci0gICAg
ICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwot
ICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRz
KDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0Rl
cHRoQml0cygyNCk7Ci0gICAgICAgIHNldERlYnVnRW5hYmxlZCh0cnVlKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAo
KTsKLQotICAgICAgICBtRGVidWdFeHRlbnNpb25BdmFpbGFibGUgPSBleHRlbnNpb25FbmFibGVk
KCJHTF9LSFJfZGVidWciKTsKLSAgICAgICAgaWYgKG1EZWJ1Z0V4dGVuc2lvbkF2YWlsYWJsZSkK
LSAgICAgICAgewotICAgICAgICAgICAgZ2xFbmFibGUoR0xfREVCVUdfT1VUUFVUKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIGJvb2wgbURlYnVnRXh0ZW5zaW9uQXZhaWxhYmxlOwotfTsKLQot
c3RydWN0IE1lc3NhZ2UKLXsKLSAgICBHTGVudW0gc291cmNlOwotICAgIEdMZW51bSB0eXBlOwot
ICAgIEdMdWludCBpZDsKLSAgICBHTGVudW0gc2V2ZXJpdHk7Ci0gICAgc3RkOjpzdHJpbmcgbWVz
c2FnZTsKLSAgICBjb25zdCB2b2lkICp1c2VyUGFyYW07Ci19OwotCi1zdGF0aWMgdm9pZCBHTF9B
UElFTlRSWSBDYWxsYmFjayhHTGVudW0gc291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2V2ZXJp
dHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbWVzc2FnZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnVzZXJQYXJhbSkKLXsK
LSAgICBNZXNzYWdlIG17c291cmNlLCB0eXBlLCBpZCwgc2V2ZXJpdHksIHN0ZDo6c3RyaW5nKG1l
c3NhZ2UsIGxlbmd0aCksIHVzZXJQYXJhbX07Ci0gICAgc3RkOjp2ZWN0b3I8TWVzc2FnZT4gKm1l
c3NhZ2VzID0KLSAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjp2ZWN0b3I8TWVzc2FnZT4gKj4oY29u
c3RfY2FzdDx2b2lkICo+KHVzZXJQYXJhbSkpOwotICAgIG1lc3NhZ2VzLT5wdXNoX2JhY2sobSk7
Ci19Ci0KLS8vIFRlc3QgdGhhdCBhbGwgQU5HTEUgYmFjay1lbmRzIGhhdmUgR0xfS0hSX2RlYnVn
IGVuYWJsZWQKLVRFU1RfUChEZWJ1Z1Rlc3QsIEVuYWJsZWQpCi17Ci0gICAgQVNTRVJUX1RSVUUo
bURlYnVnRXh0ZW5zaW9uQXZhaWxhYmxlKTsKLX0KLQotLy8gVGVzdCB0aGF0IHdoZW4gZGVidWcg
b3V0cHV0IGlzIGRpc2FibGVkLCBubyBtZXNzYWdlIGFyZSBvdXRwdXR0ZWQKLVRFU1RfUChEZWJ1
Z1Rlc3QsIERpc2FibGVkT3V0cHV0KQotewotICAgIGlmICghbURlYnVnRXh0ZW5zaW9uQXZhaWxh
YmxlKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBH
TF9LSFJfZGVidWcgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGdsRGlzYWJsZShHTF9ERUJVR19PVVRQVVQpOwotCi0gICAgZ2xE
ZWJ1Z01lc3NhZ2VJbnNlcnRLSFIoR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OLCBHTF9ERUJV
R19UWVBFX09USEVSLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RFQlVHX1NF
VkVSSVRZX05PVElGSUNBVElPTiwgLTEsICJkaXNjYXJkZWQiKTsKLQotICAgIEdMaW50IG51bU1l
c3NhZ2VzID0gMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUywg
Jm51bU1lc3NhZ2VzKTsKLSAgICBBU1NFUlRfRVEoMCwgbnVtTWVzc2FnZXMpOwotCi0gICAgc3Rk
Ojp2ZWN0b3I8TWVzc2FnZT4gbWVzc2FnZXM7Ci0gICAgZ2xEZWJ1Z01lc3NhZ2VDYWxsYmFja0tI
UihDYWxsYmFjaywgJm1lc3NhZ2VzKTsKLSAgICBnbEVuYWJsZShHTF9ERUJVR19PVVRQVVRfU1lO
Q0hST05PVVMpOwotCi0gICAgQVNTRVJUX0VRKDB1LCBtZXNzYWdlcy5zaXplKCkpOwotfQotCi0v
LyBUZXN0IGEgYmFzaWMgZmxvdyBvZiBpbnNlcnRpbmcgYSBtZXNzYWdlIGFuZCByZWFkaW5nIGl0
IGJhY2sKLVRFU1RfUChEZWJ1Z1Rlc3QsIEluc2VydE1lc3NhZ2UpCi17Ci0gICAgaWYgKCFtRGVi
dWdFeHRlbnNpb25BdmFpbGFibGUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qg
c2tpcHBlZCBiZWNhdXNlIEdMX0tIUl9kZWJ1ZyBpcyBub3QgYXZhaWxhYmxlLiIgPDwgc3RkOjpl
bmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29uc3QgR0xlbnVtIHNvdXJjZSAg
ICAgICA9IEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPTjsKLSAgICBjb25zdCBHTGVudW0gdHlw
ZSAgICAgICAgID0gR0xfREVCVUdfVFlQRV9PVEhFUjsKLSAgICBjb25zdCBHTHVpbnQgaWQgICAg
ICAgICAgID0gMTsKLSAgICBjb25zdCBHTGVudW0gc2V2ZXJpdHkgICAgID0gR0xfREVCVUdfU0VW
RVJJVFlfTk9USUZJQ0FUSU9OOwotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIG1lc3NhZ2UgPSAiTWVz
c2FnZSI7Ci0KLSAgICBnbERlYnVnTWVzc2FnZUluc2VydEtIUihzb3VyY2UsIHR5cGUsIGlkLCBz
ZXZlcml0eSwgLTEsIG1lc3NhZ2UuY19zdHIoKSk7Ci0KLSAgICBHTGludCBudW1NZXNzYWdlcyA9
IDA7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMsICZudW1NZXNz
YWdlcyk7Ci0gICAgQVNTRVJUX0VRKDEsIG51bU1lc3NhZ2VzKTsKLQotICAgIEdMaW50IG1lc3Nh
Z2VMZW5ndGggPSAwOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfREVCVUdfTkVYVF9MT0dHRURfTUVT
U0FHRV9MRU5HVEgsICZtZXNzYWdlTGVuZ3RoKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8
R0xpbnQ+KG1lc3NhZ2UubGVuZ3RoKCkpLCBtZXNzYWdlTGVuZ3RoKTsKLQotICAgIEdMZW51bSBz
b3VyY2VCdWYgICA9IDA7Ci0gICAgR0xlbnVtIHR5cGVCdWYgICAgID0gMDsKLSAgICBHTGVudW0g
aWRCdWYgICAgICAgPSAwOwotICAgIEdMZW51bSBzZXZlcml0eUJ1ZiA9IDA7Ci0gICAgR0xzaXpl
aSBsZW5ndGhCdWYgPSAwOwotICAgIHN0ZDo6dmVjdG9yPGNoYXI+IG1lc3NhZ2VCdWYobWVzc2Fn
ZUxlbmd0aCArIDEpOwotICAgIEdMdWludCByZXQgPQotICAgICAgICBnbEdldERlYnVnTWVzc2Fn
ZUxvZ0tIUigxLCBzdGF0aWNfY2FzdDxHTHNpemVpPihtZXNzYWdlQnVmLnNpemUoKSksICZzb3Vy
Y2VCdWYsICZ0eXBlQnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaWRCdWYs
ICZzZXZlcml0eUJ1ZiwgJmxlbmd0aEJ1ZiwgbWVzc2FnZUJ1Zi5kYXRhKCkpOwotICAgIEVYUEVD
VF9FUSgxdSwgcmV0KTsKLSAgICBFWFBFQ1RfRVEoc291cmNlLCBzb3VyY2VCdWYpOwotICAgIEVY
UEVDVF9FUSh0eXBlLCB0eXBlQnVmKTsKLSAgICBFWFBFQ1RfRVEoaWQsIGlkQnVmKTsKLSAgICBF
WFBFQ1RfRVEoc2V2ZXJpdHksIHNldmVyaXR5QnVmKTsKLSAgICBFWFBFQ1RfRVEobGVuZ3RoQnVm
LCBtZXNzYWdlTGVuZ3RoKTsKLSAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZS5jX3N0cigpLCBtZXNz
YWdlQnVmLmRhdGEoKSk7Ci0KLSAgICBnbEdldEludGVnZXJ2KEdMX0RFQlVHX0xPR0dFRF9NRVNT
QUdFUywgJm51bU1lc3NhZ2VzKTsKLSAgICBFWFBFQ1RfRVEoMCwgbnVtTWVzc2FnZXMpOwotCi0g
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRlc3QgaW5zZXJ0aW5nIG11bHRpcGxl
IG1lc3NhZ2VzCi1URVNUX1AoRGVidWdUZXN0LCBJbnNlcnRNZXNzYWdlTXVsdGlwbGUpCi17Ci0g
ICAgaWYgKCFtRGVidWdFeHRlbnNpb25BdmFpbGFibGUpCi0gICAgewotICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX0tIUl9kZWJ1ZyBpcyBub3QgYXZhaWxhYmxl
LiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29uc3QgR0xl
bnVtIHNvdXJjZSAgICAgICAgICA9IEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPTjsKLSAgICBj
b25zdCBHTGVudW0gdHlwZSAgICAgICAgICAgID0gR0xfREVCVUdfVFlQRV9PVEhFUjsKLSAgICBj
b25zdCBHTHVpbnQgc3RhcnRJRCAgICAgICAgID0gMTsKLSAgICBjb25zdCBHTGVudW0gc2V2ZXJp
dHkgICAgICAgID0gR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OOwotICAgIGNvbnN0IGNo
YXIgbWVzc2FnZVJlcGVhdENoYXIgPSAnbSc7Ci0gICAgY29uc3Qgc2l6ZV90IG1lc3NhZ2VDb3Vu
dCAgICA9IDMyOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtZXNzYWdlQ291bnQ7IGkr
KykKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIG1lc3NhZ2UoaSArIDEsIG1lc3NhZ2VSZXBl
YXRDaGFyKTsKLSAgICAgICAgZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIoc291cmNlLCB0eXBlLCBz
dGFydElEICsgc3RhdGljX2Nhc3Q8R0x1aW50PihpKSwgc2V2ZXJpdHksIC0xLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLmNfc3RyKCkpOwotICAgIH0KLQotICAgIEdM
aW50IG51bU1lc3NhZ2VzID0gMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX0RFQlVHX0xPR0dFRF9N
RVNTQUdFUywgJm51bU1lc3NhZ2VzKTsKLSAgICBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8R0xpbnQ+
KG1lc3NhZ2VDb3VudCksIG51bU1lc3NhZ2VzKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbWVzc2FnZUNvdW50OyBpKyspCi0gICAgewotICAgICAgICBnbEdldEludGVnZXJ2KEdMX0RF
QlVHX0xPR0dFRF9NRVNTQUdFUywgJm51bU1lc3NhZ2VzKTsKLSAgICAgICAgRVhQRUNUX0VRKHN0
YXRpY19jYXN0PEdMaW50PihtZXNzYWdlQ291bnQgLSBpKSwgbnVtTWVzc2FnZXMpOwotCi0gICAg
ICAgIHN0ZDo6c3RyaW5nIGV4cGVjdGVkTWVzc2FnZShpICsgMSwgbWVzc2FnZVJlcGVhdENoYXIp
OwotCi0gICAgICAgIEdMaW50IG1lc3NhZ2VMZW5ndGggPSAwOwotICAgICAgICBnbEdldEludGVn
ZXJ2KEdMX0RFQlVHX05FWFRfTE9HR0VEX01FU1NBR0VfTEVOR1RILCAmbWVzc2FnZUxlbmd0aCk7
Ci0gICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTGludD4oZXhwZWN0ZWRNZXNzYWdlLmxl
bmd0aCgpKSwgbWVzc2FnZUxlbmd0aCk7Ci0KLSAgICAgICAgR0xlbnVtIHNvdXJjZUJ1ZiAgID0g
MDsKLSAgICAgICAgR0xlbnVtIHR5cGVCdWYgICAgID0gMDsKLSAgICAgICAgR0xlbnVtIGlkQnVm
ICAgICAgID0gMDsKLSAgICAgICAgR0xlbnVtIHNldmVyaXR5QnVmID0gMDsKLSAgICAgICAgR0xz
aXplaSBsZW5ndGhCdWYgPSAwOwotICAgICAgICBzdGQ6OnZlY3RvcjxjaGFyPiBtZXNzYWdlQnVm
KG1lc3NhZ2VMZW5ndGggKyAxKTsKLSAgICAgICAgR0x1aW50IHJldCA9Ci0gICAgICAgICAgICBn
bEdldERlYnVnTWVzc2FnZUxvZ0tIUigxLCBzdGF0aWNfY2FzdDxHTHNpemVpPihtZXNzYWdlQnVm
LnNpemUoKSksICZzb3VyY2VCdWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmdHlwZUJ1ZiwgJmlkQnVmLCAmc2V2ZXJpdHlCdWYsICZsZW5ndGhCdWYsIG1lc3NhZ2VCdWYu
ZGF0YSgpKTsKLSAgICAgICAgRVhQRUNUX0VRKDF1LCByZXQpOwotICAgICAgICBFWFBFQ1RfRVEo
c291cmNlLCBzb3VyY2VCdWYpOwotICAgICAgICBFWFBFQ1RfRVEodHlwZSwgdHlwZUJ1Zik7Ci0g
ICAgICAgIEVYUEVDVF9FUShzdGFydElEICsgaSwgaWRCdWYpOwotICAgICAgICBFWFBFQ1RfRVEo
c2V2ZXJpdHksIHNldmVyaXR5QnVmKTsKLSAgICAgICAgRVhQRUNUX0VRKGxlbmd0aEJ1ZiwgbWVz
c2FnZUxlbmd0aCk7Ci0gICAgICAgIEVYUEVDVF9TVFJFUShleHBlY3RlZE1lc3NhZ2UuY19zdHIo
KSwgbWVzc2FnZUJ1Zi5kYXRhKCkpOwotICAgIH0KLQotICAgIGdsR2V0SW50ZWdlcnYoR0xfREVC
VUdfTE9HR0VEX01FU1NBR0VTLCAmbnVtTWVzc2FnZXMpOwotICAgIEVYUEVDVF9FUSgwLCBudW1N
ZXNzYWdlcyk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCB1c2lu
ZyBhIGRlYnVnIGNhbGxiYWNrCi1URVNUX1AoRGVidWdUZXN0LCBEZWJ1Z0NhbGxiYWNrKQotewot
ICAgIGlmICghbURlYnVnRXh0ZW5zaW9uQXZhaWxhYmxlKQotICAgIHsKLSAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9LSFJfZGVidWcgaXMgbm90IGF2YWlsYWJs
ZS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHN0ZDo6dmVj
dG9yPE1lc3NhZ2U+IG1lc3NhZ2VzOwotCi0gICAgZ2xEZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUihD
YWxsYmFjaywgJm1lc3NhZ2VzKTsKLSAgICBnbEVuYWJsZShHTF9ERUJVR19PVVRQVVRfU1lOQ0hS
T05PVVMpOwotCi0gICAgY29uc3QgR0xlbnVtIHNvdXJjZSAgICAgICA9IEdMX0RFQlVHX1NPVVJD
RV9BUFBMSUNBVElPTjsKLSAgICBjb25zdCBHTGVudW0gdHlwZSAgICAgICAgID0gR0xfREVCVUdf
VFlQRV9PVEhFUjsKLSAgICBjb25zdCBHTHVpbnQgaWQgICAgICAgICAgID0gMTsKLSAgICBjb25z
dCBHTGVudW0gc2V2ZXJpdHkgICAgID0gR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OOwot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIG1lc3NhZ2UgPSAiTWVzc2FnZSI7Ci0KLSAgICBnbERlYnVn
TWVzc2FnZUluc2VydEtIUihzb3VyY2UsIHR5cGUsIGlkLCBzZXZlcml0eSwgLTEsIG1lc3NhZ2Uu
Y19zdHIoKSk7Ci0KLSAgICBHTGludCBudW1NZXNzYWdlcyA9IDA7Ci0gICAgZ2xHZXRJbnRlZ2Vy
dihHTF9ERUJVR19MT0dHRURfTUVTU0FHRVMsICZudW1NZXNzYWdlcyk7Ci0gICAgRVhQRUNUX0VR
KDAsIG51bU1lc3NhZ2VzKTsKLQotICAgIEFTU0VSVF9FUSgxdSwgbWVzc2FnZXMuc2l6ZSgpKTsK
LQotICAgIGNvbnN0IE1lc3NhZ2UgJm0gPSBtZXNzYWdlcy5mcm9udCgpOwotICAgIEVYUEVDVF9F
UShzb3VyY2UsIG0uc291cmNlKTsKLSAgICBFWFBFQ1RfRVEodHlwZSwgbS50eXBlKTsKLSAgICBF
WFBFQ1RfRVEoaWQsIG0uaWQpOwotICAgIEVYUEVDVF9FUShzZXZlcml0eSwgbS5zZXZlcml0eSk7
Ci0gICAgRVhQRUNUX0VRKG1lc3NhZ2UsIG0ubWVzc2FnZSk7Ci0KLSAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLX0KLQotLy8gVGVzdCB0aGUgZ2xHZXRQb2ludGVydktIUiBlbnRyeSBwb2ludAot
VEVTVF9QKERlYnVnVGVzdCwgR2V0UG9pbnRlcikKLXsKLSAgICBpZiAoIW1EZWJ1Z0V4dGVuc2lv
bkF2YWlsYWJsZSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJl
Y2F1c2UgR0xfS0hSX2RlYnVnIGlzIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6OmVuZGw7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzdGQ6OnZlY3RvcjxNZXNzYWdlPiBtZXNzYWdlczsK
LQotICAgIGdsRGVidWdNZXNzYWdlQ2FsbGJhY2tLSFIoQ2FsbGJhY2ssICZtZXNzYWdlcyk7Ci0K
LSAgICB2b2lkICpjYWxsYmFjayA9IG51bGxwdHI7Ci0gICAgZ2xHZXRQb2ludGVydktIUihHTF9E
RUJVR19DQUxMQkFDS19GVU5DVElPTiwgJmNhbGxiYWNrKTsKLSAgICBFWFBFQ1RfRVEocmVpbnRl
cnByZXRfY2FzdDx2b2lkICo+KENhbGxiYWNrKSwgY2FsbGJhY2spOwotCi0gICAgdm9pZCAqdXNl
ckRhdGEgPSBudWxscHRyOwotICAgIGdsR2V0UG9pbnRlcnZLSFIoR0xfREVCVUdfQ0FMTEJBQ0tf
VVNFUl9QQVJBTSwgJnVzZXJEYXRhKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8dm9pZCAq
PigmbWVzc2FnZXMpLCB1c2VyRGF0YSk7Ci19Ci0KLS8vIFRlc3QgdXNhZ2Ugb2YgbWVzc2FnZSBj
b250cm9sLiAgRXhhbXBsZSB0YWtlbiBmcm9tIEdMX0tIUl9kZWJ1ZyBzcGVjLgotVEVTVF9QKERl
YnVnVGVzdCwgTWVzc2FnZUNvbnRyb2wxKQotewotICAgIGlmICghbURlYnVnRXh0ZW5zaW9uQXZh
aWxhYmxlKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVz
ZSBHTF9LSFJfZGVidWcgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIHN0ZDo6dmVjdG9yPE1lc3NhZ2U+IG1lc3NhZ2VzOwotCi0g
ICAgZ2xEZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUihDYWxsYmFjaywgJm1lc3NhZ2VzKTsKLSAgICBn
bEVuYWJsZShHTF9ERUJVR19PVVRQVVRfU1lOQ0hST05PVVMpOwotCi0gICAgLy8gU2V0dXAgb2Yg
dGhlIGRlZmF1bHQgYWN0aXZlIGRlYnVnIGdyb3VwOiBGaWx0ZXIgZXZlcnl0aGluZyBpbgotICAg
IGdsRGVidWdNZXNzYWdlQ29udHJvbEtIUihHTF9ET05UX0NBUkUsIEdMX0RPTlRfQ0FSRSwgR0xf
RE9OVF9DQVJFLCAwLCBOVUxMLCBHTF9UUlVFKTsKLQotICAgIC8vIEdlbmVyYXRlIGEgZGVidWcg
bWFya2VyIGRlYnVnIG91dHB1dCBtZXNzYWdlCi0gICAgZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIo
R0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OLCBHTF9ERUJVR19UWVBFX01BUktFUiwgMTAwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RFQlVHX1NFVkVSSVRZX05PVElGSUNBVElP
TiwgLTEsICJNZXNzYWdlIDEiKTsKLQotICAgIC8vIFB1c2ggZGVidWcgZ3JvdXAgMQotICAgIGds
UHVzaERlYnVnR3JvdXBLSFIoR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OLCAxLCAtMSwgIk1l
c3NhZ2UgMiIpOwotCi0gICAgLy8gU2V0dXAgb2YgdGhlIGRlYnVnIGdyb3VwIDE6IEZpbHRlciBl
dmVyeXRoaW5nIG91dAotICAgIGdsRGVidWdNZXNzYWdlQ29udHJvbEtIUihHTF9ET05UX0NBUkUs
IEdMX0RPTlRfQ0FSRSwgR0xfRE9OVF9DQVJFLCAwLCBOVUxMLCBHTF9GQUxTRSk7Ci0KLSAgICAv
LyBUaGlzIG1lc3NhZ2Ugd29uJ3QgYXBwZWFyIGluIHRoZSBkZWJ1ZyBvdXRwdXQgbG9nIG9mCi0g
ICAgZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRLSFIoR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OLCBH
TF9ERUJVR19UWVBFX01BUktFUiwgMTAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0RFQlVHX1NFVkVSSVRZX05PVElGSUNBVElPTiwgLTEsICJNZXNzYWdlIDMiKTsKLQotICAgIC8v
IFBvcCBkZWJ1ZyBncm91cCAxLCByZXN0b3JlIHRoZSB2b2x1bWUgY29udHJvbCBvZiB0aGUgZGVm
YXVsdCBkZWJ1ZyBncm91cC4KLSAgICBnbFBvcERlYnVnR3JvdXBLSFIoKTsKLQotICAgIC8vIEdl
bmVyYXRlIGEgZGVidWcgbWFya2VyIGRlYnVnIG91dHB1dCBtZXNzYWdlCi0gICAgZ2xEZWJ1Z01l
c3NhZ2VJbnNlcnRLSFIoR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OLCBHTF9ERUJVR19UWVBF
X01BUktFUiwgMTAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RFQlVHX1NFVkVS
SVRZX05PVElGSUNBVElPTiwgLTEsICJNZXNzYWdlIDUiKTsKLQotICAgIC8vIEV4cGVjdGVkIGRl
YnVnIG91dHB1dCBmcm9tIHRoZSBHTCBpbXBsZW1lbnRhdGlvbgotICAgIC8vIE1lc3NhZ2UgMQot
ICAgIC8vIE1lc3NhZ2UgMgotICAgIC8vIE1lc3NhZ2UgMgotICAgIC8vIE1lc3NhZ2UgNQotICAg
IEVYUEVDVF9FUSg0dSwgbWVzc2FnZXMuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEobWVzc2Fn
ZXNbMF0ubWVzc2FnZS5jX3N0cigpLCAiTWVzc2FnZSAxIik7Ci0gICAgRVhQRUNUX1NUUkVRKG1l
c3NhZ2VzWzFdLm1lc3NhZ2UuY19zdHIoKSwgIk1lc3NhZ2UgMiIpOwotICAgIEVYUEVDVF9TVFJF
UShtZXNzYWdlc1syXS5tZXNzYWdlLmNfc3RyKCksICJNZXNzYWdlIDIiKTsKLSAgICBFWFBFQ1Rf
U1RSRVEobWVzc2FnZXNbM10ubWVzc2FnZS5jX3N0cigpLCAiTWVzc2FnZSA1Iik7Ci0KLSAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCB1c2FnZSBvZiBtZXNzYWdlIGNvbnRy
b2wuICBFeGFtcGxlIHRha2VuIGZyb20gR0xfS0hSX2RlYnVnIHNwZWMuCi1URVNUX1AoRGVidWdU
ZXN0LCBNZXNzYWdlQ29udHJvbDIpCi17Ci0gICAgaWYgKCFtRGVidWdFeHRlbnNpb25BdmFpbGFi
bGUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdM
X0tIUl9kZWJ1ZyBpcyBub3QgYXZhaWxhYmxlLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgc3RkOjp2ZWN0b3I8TWVzc2FnZT4gbWVzc2FnZXM7Ci0KLSAgICBn
bERlYnVnTWVzc2FnZUNhbGxiYWNrS0hSKENhbGxiYWNrLCAmbWVzc2FnZXMpOwotICAgIGdsRW5h
YmxlKEdMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUyk7Ci0KLSAgICAvLyBTZXR1cCB0aGUgY29u
dHJvbCBvZiBkZSBkZWJ1ZyBvdXRwdXQgZm9yIHRoZSBkZWZhdWx0IGRlYnVnIGdyb3VwCi0gICAg
Z2xEZWJ1Z01lc3NhZ2VDb250cm9sS0hSKEdMX0RPTlRfQ0FSRSwgR0xfRE9OVF9DQVJFLCBHTF9E
T05UX0NBUkUsIDAsIE5VTEwsIEdMX0ZBTFNFKTsKLSAgICBnbERlYnVnTWVzc2FnZUNvbnRyb2xL
SFIoR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZLCBHTF9ET05UX0NBUkUsIEdMX0RPTlRfQ0FS
RSwgMCwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkFMU0UpOwotICAg
IHN0ZDo6dmVjdG9yPEdMdWludD4gaWRzMCA9IHsxMjM0LCAyMzQ1LCAzNDU2LCA0NTY3fTsKLSAg
ICBnbERlYnVnTWVzc2FnZUNvbnRyb2xLSFIoR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OLCBH
TF9ERUJVR19UWVBFX09USEVSLCBHTF9ET05UX0NBUkUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4oaWRzMC5zaXplKCkpLCBpZHMwLmRhdGEoKSwgR0xf
RkFMU0UpOwotICAgIGdsRGVidWdNZXNzYWdlQ29udHJvbEtIUihHTF9ERUJVR19TT1VSQ0VfQVBQ
TElDQVRJT04sIEdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFksIEdMX0RPTlRfQ0FSRSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihpZHMwLnNpemUoKSks
IGlkczAuZGF0YSgpLCBHTF9GQUxTRSk7Ci0KLSAgICAvLyBQdXNoIGRlYnVnIGdyb3VwIDEKLSAg
ICAvLyBJbmhlcml0IG9mIHRoZSBkZWZhdWx0IGRlYnVnIGdyb3VwIGRlYnVnIG91dHB1dCB2b2x1
bWUgY29udHJvbAotICAgIC8vIEZpbHRlcmVkIG91dCBieSBnbERlYnVnTWVzc2FnZUNvbnRyb2wK
LSAgICBnbFB1c2hEZWJ1Z0dyb3VwS0hSKEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPTiwgMSwg
LTEsICJNZXNzYWdlIDEiKTsKLQotICAgIC8vIEluIHRoaXMgc2VjdGlvbiBvZiB0aGUgY29kZSwg
d2UgYXJlIGludGVyZXN0ZWQgaW4gcGVyZm9ybWFuY2VzLgotICAgIGdsRGVidWdNZXNzYWdlQ29u
dHJvbEtIUihHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04sIEdMX0RFQlVHX1RZUEVfUEVSRk9S
TUFOQ0UsIEdMX0RPTlRfQ0FSRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgTlVM
TCwgR0xfVFJVRSk7Ci0gICAgLy8gQnV0IHdlIGFscmVhZHkgaWRlbnRpZnkgdGhhdCBzb21lIG1l
c3NhZ2VzIGFyZSBub3QgcmVhbGx5IHVzZWZ1bCBmb3IgdXMuCi0gICAgc3RkOjp2ZWN0b3I8R0x1
aW50PiBpZHMxID0gezU2NzgsIDY3ODl9OwotICAgIGdsRGVidWdNZXNzYWdlQ29udHJvbEtIUihH
TF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04sIEdMX0RFQlVHX1RZUEVfT1RIRVIsIEdMX0RPTlRf
Q0FSRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50Pihp
ZHMxLnNpemUoKSksIGlkczEuZGF0YSgpLCBHTF9GQUxTRSk7Ci0KLSAgICBnbERlYnVnTWVzc2Fn
ZUluc2VydEtIUihHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04sIEdMX0RFQlVHX1RZUEVfUEVS
Rk9STUFOQ0UsIDEzNTcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfREVCVUdfU0VW
RVJJVFlfTUVESVVNLCAtMSwgIk1lc3NhZ2UgMiIpOwotICAgIGdsRGVidWdNZXNzYWdlSW5zZXJ0
S0hSKEdMX0RFQlVHX1NPVVJDRV9USElSRF9QQVJUWSwgIC8vIFdlIHN0aWxsIGZpbHRlciBvdXQg
dGhlc2UgbWVzc2FnZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfREVCVUdfVFlQ
RV9PVEhFUiwgMzU3OSwgR0xfREVCVUdfU0VWRVJJVFlfTUVESVVNLCAtMSwgIk1lc3NhZ2UgMyIp
OwotCi0gICAgZ2xQb3BEZWJ1Z0dyb3VwS0hSKCk7Ci0KLSAgICAvLyBFeHBlY3RlZCBkZWJ1ZyBv
dXRwdXQgZnJvbSB0aGUgR0wgaW1wbGVtZW50YXRpb24KLSAgICAvLyBNZXNzYWdlIDIKLSAgICBF
WFBFQ1RfRVEoMXUsIG1lc3NhZ2VzLnNpemUoKSk7Ci0gICAgRVhQRUNUX1NUUkVRKG1lc3NhZ2Vz
WzBdLm1lc3NhZ2UuY19zdHIoKSwgIk1lc3NhZ2UgMiIpOwotCi0gICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Ci19Ci0KLS8vIFRlc3QgYmFzaWMgdXNhZ2Ugb2Ygc2V0dGluZyBhbmQgZ2V0dGluZyBs
YWJlbHMKLVRFU1RfUChEZWJ1Z1Rlc3QsIE9iamVjdExhYmVscykKLXsKLSAgICBpZiAoIW1EZWJ1
Z0V4dGVuc2lvbkF2YWlsYWJsZSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBz
a2lwcGVkIGJlY2F1c2UgR0xfS0hSX2RlYnVnIGlzIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6OmVu
ZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHVpbnQgcmVuZGVyYnVmZmVyID0g
MDsKLSAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7Ci0gICAgZ2xCaW5k
UmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKLQotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZsYWJlbCA9ICJyZW5kZXJidWZmZXIiOwotICAgIGdsT2JqZWN0TGFiZWxL
SFIoR0xfUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIsIC0xLCBsYWJlbC5jX3N0cigpKTsKLQot
ICAgIHN0ZDo6dmVjdG9yPGNoYXI+IGxhYmVsQnVmKGxhYmVsLmxlbmd0aCgpICsgMSk7Ci0gICAg
R0xzaXplaSBsYWJlbExlbmd0aEJ1ZiA9IDA7Ci0gICAgZ2xHZXRPYmplY3RMYWJlbEtIUihHTF9S
RU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlciwgc3RhdGljX2Nhc3Q8R0xzaXplaT4obGFiZWxCdWYu
c2l6ZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICZsYWJlbExlbmd0aEJ1ZiwgbGFiZWxC
dWYuZGF0YSgpKTsKLQotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTHNpemVpPihsYWJlbC5s
ZW5ndGgoKSksIGxhYmVsTGVuZ3RoQnVmKTsKLSAgICBFWFBFQ1RfU1RSRVEobGFiZWwuY19zdHIo
KSwgbGFiZWxCdWYuZGF0YSgpKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAg
Z2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZyZW5kZXJidWZmZXIpOwotCi0gICAgZ2xPYmplY3RM
YWJlbEtIUihHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlciwgLTEsIGxhYmVsLmNfc3RyKCkp
OwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIGdsR2V0T2Jq
ZWN0TGFiZWxLSFIoR0xfUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIsIHN0YXRpY19jYXN0PEdM
c2l6ZWk+KGxhYmVsQnVmLnNpemUoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAmbGFiZWxM
ZW5ndGhCdWYsIGxhYmVsQnVmLmRhdGEoKSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFM
SURfVkFMVUUpOwotfQotCi0vLyBUZXN0IGJhc2ljIHVzYWdlIG9mIHNldHRpbmcgYW5kIGdldHRp
bmcgbGFiZWxzCi1URVNUX1AoRGVidWdUZXN0LCBPYmplY3RQdHJMYWJlbHMpCi17Ci0gICAgaWYg
KCFtRGVidWdFeHRlbnNpb25BdmFpbGFibGUgfHwgZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAz
KQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9L
SFJfZGVidWcgb3IgRVMzIGlzIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHN5bmMgc3luYyA9IGdsRmVuY2VTeW5jKEdMX1NZTkNf
R1BVX0NPTU1BTkRTX0NPTVBMRVRFLCAwKTsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJl
bCA9ICJzeW5jIjsKLSAgICBnbE9iamVjdFB0ckxhYmVsS0hSKHN5bmMsIC0xLCBsYWJlbC5jX3N0
cigpKTsKLQotICAgIHN0ZDo6dmVjdG9yPGNoYXI+IGxhYmVsQnVmKGxhYmVsLmxlbmd0aCgpICsg
MSk7Ci0gICAgR0xzaXplaSBsYWJlbExlbmd0aEJ1ZiA9IDA7Ci0gICAgZ2xHZXRPYmplY3RQdHJM
YWJlbEtIUihzeW5jLCBzdGF0aWNfY2FzdDxHTHNpemVpPihsYWJlbEJ1Zi5zaXplKCkpLCAmbGFi
ZWxMZW5ndGhCdWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbEJ1Zi5kYXRhKCkp
OwotCi0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMc2l6ZWk+KGxhYmVsLmxlbmd0aCgpKSwg
bGFiZWxMZW5ndGhCdWYpOwotICAgIEVYUEVDVF9TVFJFUShsYWJlbC5jX3N0cigpLCBsYWJlbEJ1
Zi5kYXRhKCkpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbERlbGV0ZVN5
bmMoc3luYyk7Ci0KLSAgICBnbE9iamVjdFB0ckxhYmVsS0hSKHN5bmMsIC0xLCBsYWJlbC5jX3N0
cigpKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICBnbEdl
dE9iamVjdFB0ckxhYmVsS0hSKHN5bmMsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGxhYmVsQnVmLnNp
emUoKSksICZsYWJlbExlbmd0aEJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVs
QnVmLmRhdGEoKSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotfQot
Ci0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2gg
cmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UKLS8vIHRlc3RzIHNob3Vs
ZCBiZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRGVidWdUZXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBF
UzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMz
X09QRU5HTCgpKTsKLQotfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRGVwdGhTdGVuY2lsRm9ybWF0c1Rl
c3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RlcHRo
U3RlbmNpbEZvcm1hdHNUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjYy
YTE2NTc4NDdkN2MxYzA4NzJjMTg5ZWMyYTBlNTFhNTQ1MjEyNy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvRGVwdGhTdGVuY2lsRm9ybWF0c1Rlc3QuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTkyICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xF
VGVzdC5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLWNsYXNzIERlcHRoU3RlbmNpbEZv
cm1hdHNUZXN0QmFzZSA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIERl
cHRoU3RlbmNpbEZvcm1hdHNUZXN0QmFzZSgpCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0
aCgxMjgpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKLSAgICAgICAgc2V0Q29uZmln
UmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRD
b25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgIH0K
LQotICAgIGJvb2wgY2hlY2tUZXhJbWFnZUZvcm1hdFN1cHBvcnQoR0xlbnVtIGZvcm1hdCwgR0xl
bnVtIHR5cGUpCi0gICAgewotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgICAg
ICBHTHVpbnQgdGV4ID0gMDsKLSAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4KTsKLSAgICAg
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXgpOwotICAgICAgICBnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMCwgZm9ybWF0LCAxLCAxLCAwLCBmb3JtYXQsIHR5cGUsIE5VTEwp
OwotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXgpOwotCi0gICAgICAgIHJldHVybiAo
Z2xHZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsKLSAgICB9Ci0KLSAgICBib29sIGNoZWNrVGV4
U3RvcmFnZUZvcm1hdFN1cHBvcnQoR0xlbnVtIGludGVybmFsRm9ybWF0KQotICAgIHsKLSAgICAg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgR0x1aW50IHRleCA9IDA7Ci0gICAg
ICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleCk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgdGV4KTsKLSAgICAgICAgZ2xUZXhTdG9yYWdlMkRFWFQoR0xfVEVYVFVSRV8yRCwg
MSwgaW50ZXJuYWxGb3JtYXQsIDEsIDEpOwotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0
ZXgpOwotCi0gICAgICAgIHJldHVybiAoZ2xHZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsKLSAg
ICB9Ci0KLSAgICBib29sIGNoZWNrUmVuZGVyYnVmZmVyRm9ybWF0U3VwcG9ydChHTGVudW0gaW50
ZXJuYWxGb3JtYXQpCi0gICAgewotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAg
ICAgICBHTHVpbnQgcmIgPSAwOwotICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJnJiKTsK
LSAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgcmIpOwotICAgICAg
ICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBpbnRlcm5hbEZvcm1hdCwg
MSwgMSk7Ci0gICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmcmIpOwotCi0gICAgICAg
IHJldHVybiAoZ2xHZXRFcnJvcigpID09IEdMX05PX0VSUk9SKTsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgU2V0VXAoKQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0g
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VS
Q0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwotICAgICAg
ICAgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247Ci0gICAgICAgICAgICB2YXJ5aW5nIHZlYzIg
dGV4Y29vcmQ7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICAgICAgICAgICAgICB0ZXhj
b29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBT
SEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9h
dDsKLSAgICAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHRleDsKLSAgICAgICAgICAgIHZhcnlp
bmcgdmVjMiB0ZXhjb29yZDsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB0ZXhjb29y
ZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgbVByb2dyYW0gPSBDb21w
aWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAg
ICAgICAgaWYgKG1Qcm9ncmFtID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIEZBSUwoKSA8
PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOwotICAgICAgICB9Ci0KLSAgICAgICAgbVRl
eHR1cmVVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRl
eCIpOwotICAgICAgICBFWFBFQ1RfTkUoLTEsIG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uKTsKLQot
ICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZSk7Ci0gICAgICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCi0gICAgewot
ICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotICAgICAgICBnbERlbGV0ZVRleHR1
cmVzKDEsICZtVGV4dHVyZSk7Ci0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwotICAg
IH0KLQotICAgIEdMdWludCBtUHJvZ3JhbTsKLSAgICBHTHVpbnQgbVRleHR1cmU7Ci0gICAgR0xp
bnQgbVRleHR1cmVVbmlmb3JtTG9jYXRpb247Ci19OwotCi1jbGFzcyBEZXB0aFN0ZW5jaWxGb3Jt
YXRzVGVzdCA6IHB1YmxpYyBEZXB0aFN0ZW5jaWxGb3JtYXRzVGVzdEJhc2UKLXt9OwotCi1jbGFz
cyBEZXB0aFN0ZW5jaWxGb3JtYXRzVGVzdEVTMyA6IHB1YmxpYyBEZXB0aFN0ZW5jaWxGb3JtYXRz
VGVzdEJhc2UKLXt9OwotCi1URVNUX1AoRGVwdGhTdGVuY2lsRm9ybWF0c1Rlc3QsIERlcHRoVGV4
dHVyZSkKLXsKLSAgICBib29sIHNob3VsZEhhdmVUZXh0dXJlU3VwcG9ydCA9IGV4dGVuc2lvbkVu
YWJsZWQoIkdMX0FOR0xFX2RlcHRoX3RleHR1cmUiKTsKLSAgICBFWFBFQ1RfRVEoc2hvdWxkSGF2
ZVRleHR1cmVTdXBwb3J0LCBjaGVja1RleEltYWdlRm9ybWF0U3VwcG9ydChHTF9ERVBUSF9DT01Q
T05FTlQsIEdMX1VOU0lHTkVEX1NIT1JUKSk7Ci0gICAgRVhQRUNUX0VRKHNob3VsZEhhdmVUZXh0
dXJlU3VwcG9ydCwgY2hlY2tUZXhJbWFnZUZvcm1hdFN1cHBvcnQoR0xfREVQVEhfQ09NUE9ORU5U
LCBHTF9VTlNJR05FRF9JTlQpKTsKLQotICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9FWFRf
dGV4dHVyZV9zdG9yYWdlIikpCi0gICAgewotICAgICAgICBFWFBFQ1RfRVEoc2hvdWxkSGF2ZVRl
eHR1cmVTdXBwb3J0LCBjaGVja1RleFN0b3JhZ2VGb3JtYXRTdXBwb3J0KEdMX0RFUFRIX0NPTVBP
TkVOVDE2KSk7Ci0gICAgICAgIEVYUEVDVF9FUShzaG91bGRIYXZlVGV4dHVyZVN1cHBvcnQsIGNo
ZWNrVGV4U3RvcmFnZUZvcm1hdFN1cHBvcnQoR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTKSk7Ci0g
ICAgfQotfQotCi1URVNUX1AoRGVwdGhTdGVuY2lsRm9ybWF0c1Rlc3QsIFBhY2tlZERlcHRoU3Rl
bmNpbCkKLXsKLSAgICAvLyBFeHBlY3RlZCB0byBmYWlsIGluIEQzRDkgaWYgR0xfT0VTX3BhY2tl
ZF9kZXB0aF9zdGVuY2lsIGlzIG5vdCBwcmVzZW50LgotICAgIC8vIEV4cGVjdGVkIHRvIGZhaWwg
aW4gRDNEMTEgaWYgR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2lsIG9yIEdMX0FOR0xFX2RlcHRo
X3RleHR1cmUgaXMgbm90IHByZXNlbnQuCi0KLSAgICBib29sIHNob3VsZEhhdmVSZW5kZXJidWZm
ZXJTdXBwb3J0ID0gZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3BhY2tlZF9kZXB0aF9zdGVuY2ls
Iik7Ci0gICAgRVhQRUNUX0VRKHNob3VsZEhhdmVSZW5kZXJidWZmZXJTdXBwb3J0LCBjaGVja1Jl
bmRlcmJ1ZmZlckZvcm1hdFN1cHBvcnQoR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMpKTsKLQotICAg
IGJvb2wgc2hvdWxkSGF2ZVRleHR1cmVTdXBwb3J0ID0gZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VT
X3BhY2tlZF9kZXB0aF9zdGVuY2lsIikgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2RlcHRoX3RleHR1cmUiKTsKLSAgICBF
WFBFQ1RfRVEoc2hvdWxkSGF2ZVRleHR1cmVTdXBwb3J0LCBjaGVja1RleEltYWdlRm9ybWF0U3Vw
cG9ydChHTF9ERVBUSF9TVEVOQ0lMX09FUywgR0xfVU5TSUdORURfSU5UXzI0XzhfT0VTKSk7Ci0K
LSAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfc3RvcmFnZSIpKQotICAg
IHsKLSAgICAgICAgRVhQRUNUX0VRKHNob3VsZEhhdmVUZXh0dXJlU3VwcG9ydCwgY2hlY2tUZXhT
dG9yYWdlRm9ybWF0U3VwcG9ydChHTF9ERVBUSDI0X1NURU5DSUw4X09FUykpOwotICAgIH0KLX0K
LQotVEVTVF9QKERlcHRoU3RlbmNpbEZvcm1hdHNUZXN0RVMzLCBEcmF3V2l0aERlcHRoU3RlbmNp
bCkKLXsKLSAgICBHTHVzaG9ydCBkYXRhWzE2XTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IDE2OyBpKyspCi0gICAgewotICAgICAgICBkYXRhW2ldID0gc3RkOjpudW1lcmljX2xp
bWl0czxHTHVzaG9ydD46Om1heCgpOwotICAgIH0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlKTsKLSAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBH
TF9ERVBUSF9DT01QT05FTlQxNiwgNCwgNCk7Ci0gICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAsIDAsIDAsIDQsIDQsIEdMX0RFUFRIX0NPTVBPTkVOVCwgR0xfVU5TSUdORURfU0hP
UlQsIGRhdGEpOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0KLSAgICBnbFVzZVBy
b2dyYW0obVByb2dyYW0pOwotICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9u
LCAwKTsKLQotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgZHJhd1F1YWQo
bVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
Ci0KLSAgICBHTHVieXRlIHBpeGVsWzRdOwotICAgIGdsUmVhZFBpeGVscygwLCAwLCAxLCAxLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmcGl4ZWwpOwotCi0gICAgLy8gT25seSByZXF1aXJl
IHRoZSByZWQgYW5kIGFscGhhIGNoYW5uZWxzIGhhdmUgdGhlIGNvcnJlY3QgdmFsdWVzLCB0aGUg
ZGVwdGggdGV4dHVyZSBleHRlbnNpb25zCi0gICAgLy8gbGVhdmUgdGhlIGdyZWVuIGFuZCBibHVl
IGNoYW5uZWxzIHVuZGVmaW5lZAotICAgIEFTU0VSVF9ORUFSKDI1NSwgcGl4ZWxbMF0sIDIuMCk7
Ci0gICAgQVNTRVJUX0VRKDI1NSwgcGl4ZWxbM10pOwotfQotCi0vLyBVc2UgdGhpcyB0byBzZWxl
Y3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMg
bWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgotQU5HTEVf
SU5TVEFOVElBVEVfVEVTVChEZXB0aFN0ZW5jaWxGb3JtYXRzVGVzdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX09QRU5HTEVTKCkpOwotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChEZXB0aFN0ZW5j
aWxGb3JtYXRzVGVzdEVTMywgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVT
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL0RpZmZlcmVudFN0ZW5jaWxNYXNrc1Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RpZmZlcmVudFN0ZW5jaWxNYXNrc1Rlc3QuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTFjZDhhMTk0ODFiNmQzMmJhODdkYjA0MjA4Mjdh
NGJhYzRiNTlhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EaWZmZXJlbnRTdGVu
Y2lsTWFza3NUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi0vLwotLy8g
Q29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0v
LwotLy8gRGlmZmVyZW50U3RlbmNpbE1hc2tzVGVzdDoKLS8vICAgVGVzdHMgdGhlIGVxdWFsaXR5
IGJldHdlZW4gc3RlbmNpbFdyaXRlTWFzayBhbmQgc3RlbmNpbEJhY2tXcml0ZU1hc2suCi0vLwot
Ci0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFu
Z2xlOwotCi1uYW1lc3BhY2UKLXsKLWNsYXNzIERpZmZlcmVudFN0ZW5jaWxNYXNrc1Rlc3QgOiBw
dWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBEaWZmZXJlbnRTdGVuY2lsTWFz
a3NUZXN0KCkgOiBtUHJvZ3JhbSgwKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4
KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJp
dHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmln
Qmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICAgICAgc2V0
Q29uZmlnRGVwdGhCaXRzKDI0KTsKLSAgICAgICAgc2V0Q29uZmlnU3RlbmNpbEJpdHMoOCk7Ci0g
ICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRl
c3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291
cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gaGln
aHAgZmxvYXQ7Ci0gICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKLQotICAgICAg
ICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9Qb3Np
dGlvbiA9IHBvc2l0aW9uOwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQotICAg
ICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0KLSAgICAgICAgICAg
IHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9y
ID0gdmVjNCgwLjAsIDAuMCwgMS4wLCAxLjApOwotICAgICAgICAgICAgfQotICAgICAgICApOwot
Ci0gICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBm
cmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwot
Ci0gICAgICAgIGdsRW5hYmxlKEdMX1NURU5DSUxfVEVTVCk7Ci0gICAgICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsK
LSAgICAgICAgZ2xEaXNhYmxlKEdMX1NURU5DSUxfVEVTVCk7Ci0gICAgICAgIGlmIChtUHJvZ3Jh
bSAhPSAwKQotICAgICAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgICAg
ICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgR0x1aW50IG1Qcm9ncmFtOwot
fTsKLQotLy8gVGVzdHMgdGhhdCBlZmZlY3RpdmVseSBzYW1lIGZyb250IGFuZCBiYWNrIG1hc2tz
IGFyZSBsZWdhbC4KLVRFU1RfUChEaWZmZXJlbnRTdGVuY2lsTWFza3NUZXN0LCBEcmF3V2l0aFNh
bWVFZmZlY3RpdmVNYXNrKQotewotICAgIC8vIDB4MDBmZiBhbmQgMHgwMWZmIGFyZSBlZmZlY3Rp
dmVseSAweDAwZmYgYnkgYmVpbmcgbWFza2VkIGJ5IHRoZSBjdXJyZW50IHN0ZW5jaWwgYml0cywg
OC4KLSAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xfRlJPTlQsIDB4MDBmZik7Ci0gICAgZ2xT
dGVuY2lsTWFza1NlcGFyYXRlKEdMX0JBQ0ssIDB4MDFmZik7Ci0KLSAgICBnbFVzZVByb2dyYW0o
bVByb2dyYW0pOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwot
Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgZWZmZWN0aXZl
bHkgZGlmZmVyZW50IGZyb250IGFuZCBiYWNrIG1hc2tzIGFyZSBpbGxlZ2FsLgotVEVTVF9QKERp
ZmZlcmVudFN0ZW5jaWxNYXNrc1Rlc3QsIERyYXdXaXRoRGlmZmVyZW50TWFzaykKLXsKLSAgICBn
bFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xfRlJPTlQsIDB4MDAwMSk7Ci0gICAgZ2xTdGVuY2lsTWFz
a1NlcGFyYXRlKEdMX0JBQ0ssIDB4MDAwMik7Ci0KLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0p
OwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotY2xhc3MgRGlmZmVyZW50
U3RlbmNpbE1hc2tzV2l0aG91dFN0ZW5jaWxCdWZmZXJUZXN0IDogcHVibGljIEFOR0xFVGVzdAot
ewotICBwcm90ZWN0ZWQ6Ci0gICAgRGlmZmVyZW50U3RlbmNpbE1hc2tzV2l0aG91dFN0ZW5jaWxC
dWZmZXJUZXN0KCkgOiBtUHJvZ3JhbSgwKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgo
MTI4KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1Jl
ZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29u
ZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICAgICAg
c2V0Q29uZmlnRGVwdGhCaXRzKDApOwotICAgICAgICBzZXRDb25maWdTdGVuY2lsQml0cygwKTsK
LSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xF
VGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJT
b3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIHByZWNpc2lvbiBo
aWdocCBmbG9hdDsKLSAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOwotCi0gICAg
ICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX1Bv
c2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0g
ICAgICAgICgKLSAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLQotICAgICAgICAg
ICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KDAuMCwgMC4wLCAxLjAsIDEuMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7
Ci0KLSAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2Us
IGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7
Ci0KLSAgICAgICAgZ2xFbmFibGUoR0xfU1RFTkNJTF9URVNUKTsKLSAgICAgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBnbERpc2FibGUoR0xfU1RFTkNJTF9URVNUKTsKLSAgICAgICAgaWYgKG1Qcm9n
cmFtICE9IDApCi0gICAgICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotCi0gICAg
ICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVByb2dyYW07
Ci19OwotCi0vLyBUZXN0cyB0aGF0IGVmZmVjdGl2ZWx5IGRpZmZlcmVudCBmcm9udCBhbmQgYmFj
ayBtYXNrcywgd2l0aG91dCBzdGVuY2lsIGJpdHMsIGFyZSBsZWdhbC4KLVRFU1RfUChEaWZmZXJl
bnRTdGVuY2lsTWFza3NXaXRob3V0U3RlbmNpbEJ1ZmZlclRlc3QsIERyYXdXaXRoRGlmZmVyZW50
TWFzaykKLXsKLSAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xfRlJPTlQsIDB4MDAwMSk7Ci0g
ICAgZ2xTdGVuY2lsTWFza1NlcGFyYXRlKEdMX0JBQ0ssIDB4MDAwMik7Ci0KLSAgICBnbFVzZVBy
b2dyYW0obVByb2dyYW0pOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNl
bGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xF
UyBtYWpvciB2ZXJzaW9uKSB0aGVzZQotLy8gdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0Lgot
QU5HTEVfSU5TVEFOVElBVEVfVEVTVChEaWZmZXJlbnRTdGVuY2lsTWFza3NUZXN0LCBFUzJfRDNE
OSgpLCBFUzJfRDNEMTEoKSwgRVMzX0QzRDExKCksIEVTMl9PUEVOR0woKSwgRVMzX09QRU5HTCgp
KTsKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRGlmZmVyZW50U3RlbmNpbE1hc2tzV2l0aG91dFN0
ZW5jaWxCdWZmZXJUZXN0LCBFUzJfRDNEOSgpLCBFUzJfRDNEMTEoKSwgRVMzX0QzRDExKCksIEVT
Ml9PUEVOR0woKSwgRVMzX09QRU5HTCgpKTsKLX0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0Rpc2Nh
cmRGcmFtZWJ1ZmZlckVYVFRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0Rpc2NhcmRGcmFtZWJ1ZmZlckVYVFRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxZTA5ZWQxMjBmMThjMGZlMjQwN2Q2Mjc3ZWFiYTI2ZjgzMDVhMGQ2
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EaXNjYXJkRnJhbWVidWZmZXJFWFRU
ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0
IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5j
bHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwot
Ci1jbGFzcyBEaXNjYXJkRnJhbWVidWZmZXJFWFRUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewot
cHJvdGVjdGVkOgotICAgIERpc2NhcmRGcmFtZWJ1ZmZlckVYVFRlc3QoKQotICAgIHsKLSAgICAg
ICAgc2V0V2luZG93V2lkdGgoMjU2KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDI1Nik7Ci0g
ICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4
KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhh
Qml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsKLSAgICAgICAgc2V0Q29u
ZmlnU3RlbmNpbEJpdHMoOCk7Ci0gICAgfQotfTsKLQotVEVTVF9QKERpc2NhcmRGcmFtZWJ1ZmZl
ckVYVFRlc3QsIEV4dGVuc2lvbkVuYWJsZWQpCi17Ci0gICAgRUdMUGxhdGZvcm1QYXJhbWV0ZXJz
IHBsYXRmb3JtID0gR2V0UGFyYW0oKS5lZ2xQYXJhbWV0ZXJzOwotCi0gICAgaWYgKHBsYXRmb3Jt
LnJlbmRlcmVyID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKQotICAgIHsK
LSAgICAgICAgRVhQRUNUX1RSVUUoZXh0ZW5zaW9uRW5hYmxlZCgiRVhUX2Rpc2NhcmRfZnJhbWVi
dWZmZXIiKSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIC8vIE90aGVyIHBsYXRm
b3JtcyBkb24ndCBjdXJyZW50bHkgaW1wbGVtZW50IHRoaXMgZXh0ZW5zaW9uCi0gICAgICAgIEVY
UEVDVF9GQUxTRShleHRlbnNpb25FbmFibGVkKCJFWFRfZGlzY2FyZF9mcmFtZWJ1ZmZlciIpKTsK
LSAgICB9Ci19Ci0KLVRFU1RfUChEaXNjYXJkRnJhbWVidWZmZXJFWFRUZXN0LCBEZWZhdWx0RnJh
bWVidWZmZXIpCi17Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJFWFRfZGlzY2FyZF9mcmFt
ZWJ1ZmZlciIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVj
YXVzZSBFWFRfZGlzY2FyZF9mcmFtZWJ1ZmZlciBpcyBub3QgYXZhaWxhYmxlLiIgPDwgc3RkOjpl
bmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gVGhlc2Ugc2hvdWxkIHN1Y2Nl
ZWQgb24gdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIKLSAgICBjb25zdCBHTGVudW0gZGlzY2FyZHMx
W10gPSB7IEdMX0NPTE9SX0VYVCB9OwotICAgIGdsRGlzY2FyZEZyYW1lYnVmZmVyRVhUKEdMX0ZS
QU1FQlVGRkVSLCAxLCBkaXNjYXJkczEpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0g
ICAgY29uc3QgR0xlbnVtIGRpc2NhcmRzMltdID0geyBHTF9ERVBUSF9FWFQgfTsKLSAgICBnbERp
c2NhcmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUiwgMSwgZGlzY2FyZHMyKTsKLSAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGNvbnN0IEdMZW51bSBkaXNjYXJkczNbXSA9IHsg
R0xfU1RFTkNJTF9FWFQgfTsKLSAgICBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJV
RkZFUiwgMSwgZGlzY2FyZHMzKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGNv
bnN0IEdMZW51bSBkaXNjYXJkczRbXSA9IHsgR0xfU1RFTkNJTF9FWFQsIEdMX0NPTE9SX0VYVCwg
R0xfREVQVEhfRVhUIH07Ci0gICAgZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZG
RVIsIDMsIGRpc2NhcmRzNCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBU
aGVzZSBzaG91bGQgZmFpbCBvbiB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlcgotICAgIGNvbnN0IEdM
ZW51bSBkaXNjYXJkczVbXSA9IHsgR0xfQ09MT1JfQVRUQUNITUVOVDAgfTsKLSAgICBnbERpc2Nh
cmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUiwgMSwgZGlzY2FyZHM1KTsKLSAgICBFWFBF
Q1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgIGNvbnN0IEdMZW51bSBkaXNjYXJk
czZbXSA9IHsgR0xfREVQVEhfQVRUQUNITUVOVCB9OwotICAgIGdsRGlzY2FyZEZyYW1lYnVmZmVy
RVhUKEdMX0ZSQU1FQlVGRkVSLCAxLCBkaXNjYXJkczYpOwotICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX0VOVU0pOwotCi0gICAgY29uc3QgR0xlbnVtIGRpc2NhcmRzN1tdID0geyBHTF9T
VEVOQ0lMX0FUVEFDSE1FTlQgfTsKLSAgICBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFN
RUJVRkZFUiwgMSwgZGlzY2FyZHM3KTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9F
TlVNKTsKLX0KLQotVEVTVF9QKERpc2NhcmRGcmFtZWJ1ZmZlckVYVFRlc3QsIE5vbkRlZmF1bHRG
cmFtZWJ1ZmZlcikKLXsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkVYVF9kaXNjYXJkX2Zy
YW1lYnVmZmVyIikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBi
ZWNhdXNlIEVYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyIGlzIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6
OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHVpbnQgdGV4MkQ7Ci0gICAg
R0x1aW50IGZyYW1lYnVmZmVyOwotCi0gICAgLy8gQ3JlYXRlIGEgYmFzaWMgb2ZmLXNjcmVlbiBm
cmFtZWJ1ZmZlcgotICAgIC8vIERvbid0IGNyZWF0ZSBhIGRlcHRoL3N0ZW5jaWwgdGV4dHVyZSwg
dG8gZW5zdXJlIHRoYXQgYWxzbyB3b3JrcyBjb3JyZWN0bHkKLSAgICBnbEdlblRleHR1cmVzKDEs
ICZ0ZXgyRCk7Ci0gICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsKLSAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleDJEKTsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXIpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhU
VVJFXzJELCAwLCBHTF9SR0IsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAw
LCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUsIE5VTEwpOwotICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElO
RUFSKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4MkQsIDApOwotICAgIEFTU0VSVF9HTEVO
VU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhH
TF9GUkFNRUJVRkZFUikpOwotCi0gICAgLy8gVGhlc2Ugc2hvdWxkIGZhaWwgb24gdGhlIG5vbi1k
ZWZhdWx0IGZyYW1lYnVmZmVyCi0gICAgY29uc3QgR0xlbnVtIGRpc2NhcmRzMVtdID0geyBHTF9D
T0xPUl9FWFQgfTsKLSAgICBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUiwg
MSwgZGlzY2FyZHMxKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQot
ICAgIGNvbnN0IEdMZW51bSBkaXNjYXJkczJbXSA9IHsgR0xfREVQVEhfRVhUIH07Ci0gICAgZ2xE
aXNjYXJkRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVIsIDEsIGRpc2NhcmRzMik7Ci0gICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICBjb25zdCBHTGVudW0gZGlz
Y2FyZHMzW10gPSB7IEdMX1NURU5DSUxfRVhUIH07Ci0gICAgZ2xEaXNjYXJkRnJhbWVidWZmZXJF
WFQoR0xfRlJBTUVCVUZGRVIsIDEsIGRpc2NhcmRzMyk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdM
X0lOVkFMSURfRU5VTSk7Ci0KLSAgICBjb25zdCBHTGVudW0gZGlzY2FyZHM0W10gPSB7IEdMX1NU
RU5DSUxfRVhULCBHTF9DT0xPUl9FWFQsIEdMX0RFUFRIX0VYVCB9OwotICAgIGdsRGlzY2FyZEZy
YW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSLCAzLCBkaXNjYXJkczQpOwotICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgLy8gVGhlc2Ugc2hvdWxkIHN1Y2NlZWQg
b24gdGhlIG5vbi1kZWZhdWx0IGZyYW1lYnVmZmVyCi0gICAgY29uc3QgR0xlbnVtIGRpc2NhcmRz
NVtdID0geyBHTF9DT0xPUl9BVFRBQ0hNRU5UMCB9OwotICAgIGdsRGlzY2FyZEZyYW1lYnVmZmVy
RVhUKEdMX0ZSQU1FQlVGRkVSLCAxLCBkaXNjYXJkczUpOwotICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOwotCi0gICAgY29uc3QgR0xlbnVtIGRpc2NhcmRzNltdID0geyBHTF9ERVBUSF9BVFRBQ0hN
RU5UIH07Ci0gICAgZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVCVUZGRVIsIDEsIGRp
c2NhcmRzNik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBjb25zdCBHTGVudW0g
ZGlzY2FyZHM3W10gPSB7IEdMX1NURU5DSUxfQVRUQUNITUVOVCB9OwotICAgIGdsRGlzY2FyZEZy
YW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSLCAxLCBkaXNjYXJkczcpOwotICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotfQotCi0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJh
dGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhl
c2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChE
aXNjYXJkRnJhbWVidWZmZXJFWFRUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNE
OSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9P
UEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMz
X09QRU5HTEVTKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0RyYXdCdWZmZXJzVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZ2xfdGVzdHMvRHJhd0J1ZmZlcnNUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZGFmMDllOTNjNGFhZTZjNWU2YmQwNjA3ZjUwNTJmZjlhZDIzYjQ3Mi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRHJhd0J1ZmZlcnNUZXN0LmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDUxNyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAidGVzdF91
dGlscy9BTkdMRVRlc3QuaCIKLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIKLQotdXNp
bmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1jbGFzcyBEcmF3QnVmZmVyc1Rlc3QgOiBwdWJsaWMgQU5H
TEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBEcmF3QnVmZmVyc1Rlc3QoKQotICAgIHsKLSAg
ICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7
Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0
cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0Fs
cGhhQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsKLSAgICAgICAgbU1h
eERyYXdCdWZmZXJzID0gMDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQotICAg
IHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIC8vIFRoaXMgdGVzdCBz
ZWVtcyB0byBmYWlsIG9uIGFuIG5WaWRpYSBtYWNoaW5lIHdoZW4gdGhlIHdpbmRvdyBpcyBoaWRk
ZW4KLSAgICAgICAgU2V0V2luZG93VmlzaWJsZSh0cnVlKTsKLQotICAgICAgICBnbEdlbkZyYW1l
YnVmZmVycygxLCAmbUZCTyk7Ci0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBtRkJPKTsKLQotICAgICAgICBnbEdlblRleHR1cmVzKDQsIG1UZXh0dXJlcyk7Ci0KLSAg
ICAgICAgZm9yIChzaXplX3QgdGV4SW5kZXggPSAwOyB0ZXhJbmRleCA8IEFycmF5U2l6ZShtVGV4
dHVyZXMpOyB0ZXhJbmRleCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1t0ZXhJbmRleF0pOwotICAgICAgICAgICAgZ2xUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIGdldFdpbmRvd1dpZHRoKCksIGdldFdp
bmRvd0hlaWdodCgpLCAwLCBHTF9SR0JBLAotICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VO
U0lHTkVEX0JZVEUsIG51bGxwdHIpOwotICAgICAgICB9Ci0KLSAgICAgICAgR0xmbG9hdCBkYXRh
W10gPQotICAgICAgICB7Ci0gICAgICAgICAgICAtMS4wZiwgMS4wZiwKLSAgICAgICAgICAgIC0x
LjBmLCAtMi4wZiwKLSAgICAgICAgICAgIDIuMGYsIDEuMGYKLSAgICAgICAgfTsKLQotICAgICAg
ICBnbEdlbkJ1ZmZlcnMoMSwgJm1CdWZmZXIpOwotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJS
QVlfQlVGRkVSLCBtQnVmZmVyKTsKLSAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZF
Uiwgc2l6ZW9mKEdMZmxvYXQpICogNiwgZGF0YSwgR0xfU1RBVElDX0RSQVcpOwotCi0gICAgICAg
IGdsR2V0SW50ZWdlcnYoR0xfTUFYX0RSQVdfQlVGRkVSUywgJm1NYXhEcmF3QnVmZmVycyk7Ci0K
LSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lk
IFRlYXJEb3duKCkKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtRkJP
KTsKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcyg0LCBtVGV4dHVyZXMpOwotICAgICAgICBnbERl
bGV0ZUJ1ZmZlcnMoMSwgJm1CdWZmZXIpOwotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24o
KTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldHVwTVJUUHJvZ3JhbUVTU0wzKGJvb2wgYnVmZmVyRW5h
YmxlZFs4XSwgR0x1aW50ICpwcm9ncmFtT3V0KQotICAgIHsKLSAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKLSAgICAgICAgICAgICJpbiB2ZWM0IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKLSAgICAgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIK
LSAgICAgICAgICAgICJ9XG4iOwotCi0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cnN0cjsK
LQotICAgICAgICBzdHJzdHIgPDwgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAgICAgICAg
ICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiI7Ci0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaW5kZXggPSAwOyBpbmRleCA8IDg7IGluZGV4KyspCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmIChidWZmZXJFbmFibGVkW2luZGV4XSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBzdHJzdHIgPDwgImxheW91dChsb2NhdGlvbiA9ICIgPDwgaW5kZXggPDwgIikgIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAib3V0IHZlYzQgdmFsdWUiIDw8IGluZGV4IDw8ICI7XG4iOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgc3Ryc3RyIDw8ICJ2b2lkIG1haW4o
KVxuIgotICAgICAgICAgICAgICAgICAgIntcbiI7Ci0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaW5kZXggPSAwOyBpbmRleCA8IDg7IGluZGV4KyspCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmIChidWZmZXJFbmFibGVkW2luZGV4XSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgciA9IChpbmRleCArIDEpICYgMTsKLSAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgZyA9IChpbmRleCArIDEpICYgMjsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgYiA9IChpbmRleCArIDEpICYgNDsKLQotICAgICAgICAgICAgICAgIHN0cnN0ciA8PCAiICAg
IHZhbHVlIiA8PCBpbmRleCA8PCAiID0gdmVjNCgiCi0gICAgICAgICAgICAgICAgICAgICAgIDw8
IHIgPDwgIi4wLCAiIDw8IGcgPDwgIi4wLCAiCi0gICAgICAgICAgICAgICAgICAgICAgIDw8IGIg
PDwgIi4wLCAxLjApO1xuIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHN0
cnN0ciA8PCAifVxuIjsKLQotICAgICAgICAqcHJvZ3JhbU91dCA9IENvbXBpbGVQcm9ncmFtKHZl
cnRleFNoYWRlclNvdXJjZSwgc3Ryc3RyLnN0cigpKTsKLSAgICAgICAgaWYgKCpwcm9ncmFtT3V0
ID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0
aW9uIGZhaWxlZC4iOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2xVc2VQcm9ncmFtKCpwcm9ncmFt
T3V0KTsKLQotICAgICAgICBHTGludCBsb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24oKnBy
b2dyYW1PdXQsICJwb3NpdGlvbiIpOwotICAgICAgICBBU1NFUlRfTkUobG9jYXRpb24sIC0xKTsK
LSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7Ci0gICAgICAg
IGdsVmVydGV4QXR0cmliUG9pbnRlcihsb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCA4
LCBOVUxMKTsKLSAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShsb2NhdGlvbik7Ci0g
ICAgfQotCi0gICAgdm9pZCBzZXR1cE1SVFByb2dyYW1FU1NMMShib29sIGJ1ZmZlckVuYWJsZWRb
OF0sIEdMdWludCAqcHJvZ3JhbU91dCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IHZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICAgICAiYXR0cmlidXRlIHZlYzQgcG9zaXRp
b247XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAgICAgIiAgICBn
bF9Qb3NpdGlvbiA9IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgIn1cbiI7Ci0KLSAgICAgICAg
c3RkOjpzdHJpbmdzdHJlYW0gc3Ryc3RyOwotCi0gICAgICAgIHN0cnN0ciA8PCAiI2V4dGVuc2lv
biBHTF9FWFRfZHJhd19idWZmZXJzIDogZW5hYmxlXG4iCi0gICAgICAgICAgICAgICAgICAicHJl
Y2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAgICAgICAgICAgInZvaWQgbWFpbigpXG4i
Ci0gICAgICAgICAgICAgICAgICAie1xuIjsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBp
bmRleCA9IDA7IGluZGV4IDwgODsgaW5kZXgrKykKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KGJ1ZmZlckVuYWJsZWRbaW5kZXhdKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCByID0gKGluZGV4ICsgMSkgJiAxOwotICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCBnID0gKGluZGV4ICsgMSkgJiAyOwotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBi
ID0gKGluZGV4ICsgMSkgJiA0OwotCi0gICAgICAgICAgICAgICAgc3Ryc3RyIDw8ICIgICAgZ2xf
RnJhZ0RhdGFbIiA8PCBpbmRleCA8PCAiXSA9IHZlYzQoIgotICAgICAgICAgICAgICAgICAgICA8
PCByIDw8ICIuMCwgIiA8PCBnIDw8ICIuMCwgIgotICAgICAgICAgICAgICAgICAgICA8PCBiIDw8
ICIuMCwgMS4wKTtcbiI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBzdHJz
dHIgPDwgIn1cbiI7Ci0KLSAgICAgICAgKnByb2dyYW1PdXQgPSBDb21waWxlUHJvZ3JhbSh2ZXJ0
ZXhTaGFkZXJTb3VyY2UsIHN0cnN0ci5zdHIoKSk7Ci0gICAgICAgIGlmICgqcHJvZ3JhbU91dCA9
PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBGQUlMKCkgPDwgInNoYWRlciBjb21waWxhdGlv
biBmYWlsZWQuIjsKLSAgICAgICAgfQotCi0gICAgICAgIGdsVXNlUHJvZ3JhbSgqcHJvZ3JhbU91
dCk7Ci0KLSAgICAgICAgR0xpbnQgbG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKCpwcm9n
cmFtT3V0LCAicG9zaXRpb24iKTsKLSAgICAgICAgQVNTRVJUX05FKGxvY2F0aW9uLCAtMSk7Ci0g
ICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXIpOwotICAgICAgICBn
bFZlcnRleEF0dHJpYlBvaW50ZXIobG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgOCwg
TlVMTCk7Ci0gICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobG9jYXRpb24pOwotICAg
IH0KLQotICAgIHZvaWQgc2V0dXBNUlRQcm9ncmFtKGJvb2wgYnVmZmVyRW5hYmxlZFs4XSwgR0x1
aW50ICpwcm9ncmFtT3V0KQotICAgIHsKLSAgICAgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lv
bigpID09IDMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNldHVwTVJUUHJvZ3JhbUVTU0wzKGJ1
ZmZlckVuYWJsZWQsIHByb2dyYW1PdXQpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgewotICAgICAgICAgICAgQVNTRVJUX0VRKGdldENsaWVudE1ham9yVmVyc2lvbigpLCAyKTsK
LSAgICAgICAgICAgIHNldHVwTVJUUHJvZ3JhbUVTU0wxKGJ1ZmZlckVuYWJsZWQsIHByb2dyYW1P
dXQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIEdMQ29sb3IgZ2V0Q29sb3JGb3JJ
bmRleCh1bnNpZ25lZCBpbnQgaW5kZXgpCi0gICAgewotICAgICAgICBHTHVieXRlIHIgPSAoKChp
bmRleCArIDEpICYgMSkgPiAwKSA/IDI1NSA6IDA7Ci0gICAgICAgIEdMdWJ5dGUgZyA9ICgoKGlu
ZGV4ICsgMSkgJiAyKSA+IDApID8gMjU1IDogMDsKLSAgICAgICAgR0x1Ynl0ZSBiID0gKCgoaW5k
ZXggKyAxKSAmIDQpID4gMCkgPyAyNTUgOiAwOwotICAgICAgICByZXR1cm4gR0xDb2xvcihyLCBn
LCBiLCAyNTV1KTsKLSAgICB9Ci0KLSAgICB2b2lkIHZlcmlmeUF0dGFjaG1lbnQyRCh1bnNpZ25l
ZCBpbnQgaW5kZXgsIEdMdWludCB0ZXh0dXJlTmFtZSwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2
ZWwpCi0gICAgewotICAgICAgICBmb3IgKEdMaW50IGNvbG9yQXR0YWNobWVudCA9IDA7IGNvbG9y
QXR0YWNobWVudCA8IG1NYXhEcmF3QnVmZmVyczsgY29sb3JBdHRhY2htZW50KyspCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdM
X0NPTE9SX0FUVEFDSE1FTlQwICsgY29sb3JBdHRhY2htZW50LCBHTF9URVhUVVJFXzJELCAwLCAw
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVC
VUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCB0YXJnZXQsIHRleHR1cmVOYW1lLCBsZXZlbCk7
Ci0KLSAgICAgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBn
ZXRXaW5kb3dIZWlnaHQoKSAvIDIsIGdldENvbG9yRm9ySW5kZXgoaW5kZXgpKTsKLSAgICB9Ci0K
LSAgICB2b2lkIHZlcmlmeUF0dGFjaG1lbnRMYXllcih1bnNpZ25lZCBpbnQgaW5kZXgsIEdMdWlu
dCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xpbnQgbGF5ZXIpCi0gICAgewotICAgICAgICBmb3Ig
KEdMaW50IGNvbG9yQXR0YWNobWVudCA9IDA7IGNvbG9yQXR0YWNobWVudCA8IG1NYXhEcmF3QnVm
ZmVyczsgY29sb3JBdHRhY2htZW50KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsRnJhbWVi
dWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwICsgY29s
b3JBdHRhY2htZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9URVhU
VVJFXzJELCAwLCAwKTsKLSAgICAgICAgfQotCi0gICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJl
TGF5ZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCB0ZXh0dXJlLCBsZXZl
bCwgbGF5ZXIpOwotCi0gICAgICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0
aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBnZXRDb2xvckZvckluZGV4KGluZGV4KSk7
Ci0gICAgfQotCi0gICAgR0x1aW50IG1GQk87Ci0gICAgR0x1aW50IG1UZXh0dXJlc1s0XTsKLSAg
ICBHTHVpbnQgbUJ1ZmZlcjsKLSAgICBHTGludCBtTWF4RHJhd0J1ZmZlcnM7Ci19OwotCi0vLyBW
ZXJpZnkgdGhhdCBHTF9NQVhfRFJBV19CVUZGRVJTIHJldHVybnMgdGhlIGV4cGVjdGVkIHZhbHVl
cyBmb3IgRDNEMTEKLVRFU1RfUChEcmF3QnVmZmVyc1Rlc3QsIFZlcmlmeUQzRExpbWl0cykKLXsK
LSAgICBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgcGxhdGZvcm0gPSBHZXRQYXJhbSgpLmVnbFBhcmFt
ZXRlcnM7Ci0gICAgaWYgKHBsYXRmb3JtLnJlbmRlcmVyID09IEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX0QzRDExX0FOR0xFKQotICAgIHsKLSAgICAgICAgaWYgKHBsYXRmb3JtLm1ham9yVmVyc2lv
biA9PSA5ICYmIHBsYXRmb3JtLm1pbm9yVmVyc2lvbiA9PSAzKQotICAgICAgICB7Ci0gICAgICAg
ICAgICAvLyBEM0QxMSBGZWF0dXJlIExldmVsIDlfMyBzdXBwb3J0cyA0IGRyYXcgYnVmZmVycwot
ICAgICAgICAgICAgQVNTRVJUX0VRKG1NYXhEcmF3QnVmZmVycywgNCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBEM0QxMSBGZWF0dXJlIExldmVs
IDEwXzArIHN1cHBvcnRzIDggZHJhdyBidWZmZXJzCi0gICAgICAgICAgICBBU1NFUlRfRVEobU1h
eERyYXdCdWZmZXJzLCA4KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBmb3Igbm9uLUQzRDExIHJlbmRlcmVycy4i
IDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0KLQotVEVTVF9QKERyYXdC
dWZmZXJzVGVzdCwgR2FwcykKLXsKLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAz
ICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIikpCi0gICAgewotICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEVTMyBvciBHTF9FWFRfZHJh
d19idWZmZXJzIGlzIG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjpl
bmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKElzV2luZG93cygpICYmIElz
QU1EKCkgJiYgSXNEZXNrdG9wT3BlbkdMKCkpCi0gICAgewotICAgICAgICAvLyBUT0RPKHlub3Zp
a292KTogSW52ZXN0aWdhdGUgdGhlIGZhaWx1cmUgKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTUzNSkK
LSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIFdpbmRvd3MgQU1EIE9wZW5H
TC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMSwgR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmVzWzBdLCAwKTsKLQotICAgIGJvb2wgZmxhZ3NbOF0gPSB7IGZhbHNlLCB0cnVl
IH07Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbTsKLSAgICBzZXR1cE1SVFByb2dyYW0oZmxhZ3MsICZw
cm9ncmFtKTsKLQotICAgIGNvbnN0IEdMZW51bSBidWZzW10gPQotICAgIHsKLSAgICAgICAgR0xf
Tk9ORSwKLSAgICAgICAgR0xfQ09MT1JfQVRUQUNITUVOVDEKLSAgICB9OwotICAgIGdsVXNlUHJv
Z3JhbShwcm9ncmFtKTsKLSAgICBnbERyYXdCdWZmZXJzRVhUKDIsIGJ1ZnMpOwotICAgIGdsRHJh
d0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOwotCi0gICAgdmVyaWZ5QXR0YWNobWVudDJEKDEs
IG1UZXh0dXJlc1swXSwgR0xfVEVYVFVSRV8yRCwgMCk7Ci0KLSAgICBnbERlbGV0ZVByb2dyYW0o
cHJvZ3JhbSk7Ci19Ci0KLVRFU1RfUChEcmF3QnVmZmVyc1Rlc3QsIEZpcnN0QW5kTGFzdCkKLXsK
LSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVk
KCJHTF9FWFRfZHJhd19idWZmZXJzIikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3Qgc2tpcHBlZCBiZWNhdXNlIEVTMyBvciBHTF9FWFRfZHJhd19idWZmZXJzIGlzIG5vdCBhdmFp
bGFibGUuIgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKElzV2luZG93cygpICYmIElzQU1EKCkgJiYgSXNEZXNrdG9wT3Bl
bkdMKCkpCi0gICAgewotICAgICAgICAvLyBUT0RPKHlub3Zpa292KTogSW52ZXN0aWdhdGUgdGhl
IGZhaWx1cmUgKGh0dHBzOi8vYW5nbGVidWcuY29tLzE1MzMpCi0gICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBkaXNhYmxlZCBvbiBXaW5kb3dzIEFNRCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IG1UZXh0dXJlc1swXSk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZF
UiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7
Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7Ci0gICAg
Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVO
VDMsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSwgMCk7Ci0KLSAgICBib29sIGZsYWdzWzhd
ID0geyB0cnVlLCBmYWxzZSwgZmFsc2UsIHRydWUgfTsKLQotICAgIEdMdWludCBwcm9ncmFtOwot
ICAgIHNldHVwTVJUUHJvZ3JhbShmbGFncywgJnByb2dyYW0pOwotCi0gICAgY29uc3QgR0xlbnVt
IGJ1ZnNbXSA9Ci0gICAgewotICAgICAgICBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwKLSAgICAgICAg
R0xfTk9ORSwKLSAgICAgICAgR0xfTk9ORSwKLSAgICAgICAgR0xfQ09MT1JfQVRUQUNITUVOVDMK
LSAgICB9OwotCi0gICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOwotICAgIGdsRHJhd0J1ZmZlcnNF
WFQoNCwgYnVmcyk7Ci0gICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyk7Ci0KLSAg
ICB2ZXJpZnlBdHRhY2htZW50MkQoMCwgbVRleHR1cmVzWzBdLCBHTF9URVhUVVJFXzJELCAwKTsK
LSAgICB2ZXJpZnlBdHRhY2htZW50MkQoMywgbVRleHR1cmVzWzFdLCBHTF9URVhUVVJFXzJELCAw
KTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xEZWxldGVQcm9ncmFtKHBy
b2dyYW0pOwotfQotCi1URVNUX1AoRHJhd0J1ZmZlcnNUZXN0LCBGaXJzdEhhbGZOVUxMKQotewot
ICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQo
IkdMX0VYVF9kcmF3X2J1ZmZlcnMiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVz
dCBza2lwcGVkIGJlY2F1c2UgRVMzIG9yIEdMX0VYVF9kcmF3X2J1ZmZlcnMgaXMgbm90IGF2YWls
YWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoSXNXaW5kb3dzKCkgJiYgSXNBTUQoKSAmJiBJc0Rlc2t0b3BPcGVu
R0woKSkKLSAgICB7Ci0gICAgICAgIC8vIFRPRE8oeW5vdmlrb3YpOiBJbnZlc3RpZ2F0ZSB0aGUg
ZmFpbHVyZSAoaHR0cHM6Ly9hbmdsZWJ1Zy5jb20vMTUzMykKLSAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IGRpc2FibGVkIG9uIFdpbmRvd3MgQU1EIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJvb2wgZmxhZ3NbOF0gPSB7IGZhbHNlIH07Ci0g
ICAgR0xlbnVtIGJ1ZnNbOF0gPSB7IEdMX05PTkUgfTsKLQotICAgIEdMdWludCBoYWxmTWF4RHJh
d0J1ZmZlcnMgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KG1NYXhEcmF3QnVmZmVycykgLyAyOwotCi0g
ICAgZm9yIChHTHVpbnQgdGV4SW5kZXggPSAwOyB0ZXhJbmRleCA8IGhhbGZNYXhEcmF3QnVmZmVy
czsgdGV4SW5kZXgrKykKLSAgICB7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmVzW3RleEluZGV4XSk7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQo
R0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwICsgaGFsZk1heERyYXdCdWZmZXJz
ICsgdGV4SW5kZXgsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1t0ZXhJbmRleF0sIDApOwotICAg
ICAgICBmbGFnc1t0ZXhJbmRleCArIGhhbGZNYXhEcmF3QnVmZmVyc10gPSB0cnVlOwotICAgICAg
ICBidWZzW3RleEluZGV4ICsgaGFsZk1heERyYXdCdWZmZXJzXSA9IEdMX0NPTE9SX0FUVEFDSE1F
TlQwICsgaGFsZk1heERyYXdCdWZmZXJzICsgdGV4SW5kZXg7Ci0gICAgfQotCi0gICAgR0x1aW50
IHByb2dyYW07Ci0gICAgc2V0dXBNUlRQcm9ncmFtKGZsYWdzLCAmcHJvZ3JhbSk7Ci0KLSAgICBn
bFVzZVByb2dyYW0ocHJvZ3JhbSk7Ci0gICAgZ2xEcmF3QnVmZmVyc0VYVChtTWF4RHJhd0J1ZmZl
cnMsIGJ1ZnMpOwotICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOwotCi0gICAg
Zm9yIChHTHVpbnQgdGV4SW5kZXggPSAwOyB0ZXhJbmRleCA8IGhhbGZNYXhEcmF3QnVmZmVyczsg
dGV4SW5kZXgrKykKLSAgICB7Ci0gICAgICAgIHZlcmlmeUF0dGFjaG1lbnQyRCh0ZXhJbmRleCAr
IGhhbGZNYXhEcmF3QnVmZmVycywgbVRleHR1cmVzW3RleEluZGV4XSwgR0xfVEVYVFVSRV8yRCwg
MCk7Ci0gICAgfQotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbERlbGV0ZVBy
b2dyYW0ocHJvZ3JhbSk7Ci19Ci0KLVRFU1RfUChEcmF3QnVmZmVyc1Rlc3QsIFVud3JpdHRlbk91
dHB1dFZhcmlhYmxlc1Nob3VsZE5vdENyYXNoKQotewotICAgIGlmIChnZXRDbGllbnRNYWpvclZl
cnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kcmF3X2J1ZmZlcnMiKSkK
LSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgRVMzIG9y
IEdMX0VYVF9kcmF3X2J1ZmZlcnMgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAg
ICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBCaW5kIHR3
byByZW5kZXIgdGFyZ2V0cyBidXQgdXNlIGEgc2hhZGVyIHdoaWNoIHdyaXRlcyBvbmx5IHRvIHRo
ZSBmaXJzdCBvbmUuCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNb
MF0pOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9S
X0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sIDApOwotCi0gICAgZ2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0pOwotICAgIGdsRnJhbWVidWZm
ZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQxLCBHTF9URVhU
VVJFXzJELCBtVGV4dHVyZXNbMV0sIDApOwotCi0gICAgYm9vbCBmbGFnc1s4XSA9IHsgdHJ1ZSwg
ZmFsc2UgfTsKLQotICAgIEdMdWludCBwcm9ncmFtOwotICAgIHNldHVwTVJUUHJvZ3JhbShmbGFn
cywgJnByb2dyYW0pOwotCi0gICAgY29uc3QgR0xlbnVtIGJ1ZnNbXSA9Ci0gICAgewotICAgICAg
ICBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwKLSAgICAgICAgR0xfQ09MT1JfQVRUQUNITUVOVDEsCi0g
ICAgICAgIEdMX05PTkUsCi0gICAgICAgIEdMX05PTkUsCi0gICAgfTsKLQotICAgIGdsVXNlUHJv
Z3JhbShwcm9ncmFtKTsKLSAgICBnbERyYXdCdWZmZXJzRVhUKDQsIGJ1ZnMpOwotCi0gICAgLy8g
VGhpcyBjYWxsIHNob3VsZCBub3QgY3Jhc2ggd2hlbiB3ZSBkeW5hbWljYWxseSBnZW5lcmF0ZSB0
aGUgSExTTCBjb2RlLgotICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOwotCi0g
ICAgdmVyaWZ5QXR0YWNobWVudDJEKDAsIG1UZXh0dXJlc1swXSwgR0xfVEVYVFVSRV8yRCwgMCk7
Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9n
cmFtKTsKLX0KLQotLy8gVGVzdCB0aGF0IGJpbmRpbmcgbXVsdGlwbGUgbGF5ZXJzIG9mIGEgM0Qg
dGV4dHVyZSB3b3JrcyBjb3JyZWN0bHkKLVRFU1RfUChEcmF3QnVmZmVyc1Rlc3QsIDNEVGV4dHVy
ZXMpCi17Ci0gICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKLSAgICB7Ci0gICAg
ICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgRVMzIGlzIG5vdCBhdmFpbGFi
bGUuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTFRleHR1
cmUgdGV4dHVyZTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfM0QsIHRleHR1cmUuZ2V0
KCkpOwotICAgIGdsVGV4SW1hZ2UzRChHTF9URVhUVVJFXzNELCAwLCBHTF9SR0JBLCBnZXRXaW5k
b3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgZ2V0V2luZG93V2lkdGgoKSwKLSAgICAgICAg
ICAgICAgICAgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0KLSAgICBn
bEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hN
RU5UMCwgdGV4dHVyZS5nZXQoKSwgMCwgMCk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXll
cihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDEsIHRleHR1cmUuZ2V0KCksIDAs
IDEpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NP
TE9SX0FUVEFDSE1FTlQyLCB0ZXh0dXJlLmdldCgpLCAwLCAyKTsKLSAgICBnbEZyYW1lYnVmZmVy
VGV4dHVyZUxheWVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMywgdGV4dHVy
ZS5nZXQoKSwgMCwgMyk7Ci0KLSAgICBib29sIGZsYWdzWzhdID0ge3RydWUsIHRydWUsIHRydWUs
IHRydWUsIGZhbHNlfTsKLQotICAgIEdMdWludCBwcm9ncmFtOwotICAgIHNldHVwTVJUUHJvZ3Jh
bShmbGFncywgJnByb2dyYW0pOwotCi0gICAgY29uc3QgR0xlbnVtIGJ1ZnNbXSA9IHsKLSAgICAg
ICAgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX0NPTE9SX0FUVEFDSE1FTlQxLCBHTF9DT0xPUl9B
VFRBQ0hNRU5UMiwgR0xfQ09MT1JfQVRUQUNITUVOVDMsCi0gICAgfTsKLQotICAgIGdsVXNlUHJv
Z3JhbShwcm9ncmFtKTsKLSAgICBnbERyYXdCdWZmZXJzRVhUKDQsIGJ1ZnMpOwotCi0gICAgZ2xE
cmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyk7Ci0KLSAgICB2ZXJpZnlBdHRhY2htZW50TGF5
ZXIoMCwgdGV4dHVyZS5nZXQoKSwgMCwgMCk7Ci0gICAgdmVyaWZ5QXR0YWNobWVudExheWVyKDEs
IHRleHR1cmUuZ2V0KCksIDAsIDEpOwotICAgIHZlcmlmeUF0dGFjaG1lbnRMYXllcigyLCB0ZXh0
dXJlLmdldCgpLCAwLCAyKTsKLSAgICB2ZXJpZnlBdHRhY2htZW50TGF5ZXIoMywgdGV4dHVyZS5n
ZXQoKSwgMCwgMyk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsRGVsZXRl
UHJvZ3JhbShwcm9ncmFtKTsKLX0KLQotLy8gVGVzdCB0aGF0IGJpbmRpbmcgbXVsdGlwbGUgbGF5
ZXJzIG9mIGEgMkQgYXJyYXkgdGV4dHVyZSB3b3JrcyBjb3JyZWN0bHkKLVRFU1RfUChEcmF3QnVm
ZmVyc1Rlc3QsIDJEQXJyYXlUZXh0dXJlcykKLXsKLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCkgPCAzKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVj
YXVzZSBFUzMgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEdMVGV4dHVyZSB0ZXh0dXJlOwotICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRF9BUlJBWSwgdGV4dHVyZS5nZXQoKSk7Ci0gICAgZ2xUZXhJbWFnZTNEKEdMX1RF
WFRVUkVfMkRfQVJSQVksIDAsIEdMX1JHQkEsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hl
aWdodCgpLAotICAgICAgICAgICAgICAgICBnZXRXaW5kb3dXaWR0aCgpLCAwLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLQotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlTGF5
ZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCB0ZXh0dXJlLmdldCgpLCAw
LCAwKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9D
T0xPUl9BVFRBQ0hNRU5UMSwgdGV4dHVyZS5nZXQoKSwgMCwgMSk7Ci0gICAgZ2xGcmFtZWJ1ZmZl
clRleHR1cmVMYXllcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDIsIHRleHR1
cmUuZ2V0KCksIDAsIDIpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0xfRlJBTUVC
VUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQzLCB0ZXh0dXJlLmdldCgpLCAwLCAzKTsKLQotICAg
IGJvb2wgZmxhZ3NbOF0gPSB7dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgZmFsc2V9OwotCi0gICAg
R0x1aW50IHByb2dyYW07Ci0gICAgc2V0dXBNUlRQcm9ncmFtKGZsYWdzLCAmcHJvZ3JhbSk7Ci0K
LSAgICBjb25zdCBHTGVudW0gYnVmc1tdID0gewotICAgICAgICBHTF9DT0xPUl9BVFRBQ0hNRU5U
MCwgR0xfQ09MT1JfQVRUQUNITUVOVDEsIEdMX0NPTE9SX0FUVEFDSE1FTlQyLCBHTF9DT0xPUl9B
VFRBQ0hNRU5UMywKLSAgICB9OwotCi0gICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOwotICAgIGds
RHJhd0J1ZmZlcnNFWFQoNCwgYnVmcyk7Ci0KLSAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVT
LCAwLCAzKTsKLQotICAgIHZlcmlmeUF0dGFjaG1lbnRMYXllcigwLCB0ZXh0dXJlLmdldCgpLCAw
LCAwKTsKLSAgICB2ZXJpZnlBdHRhY2htZW50TGF5ZXIoMSwgdGV4dHVyZS5nZXQoKSwgMCwgMSk7
Ci0gICAgdmVyaWZ5QXR0YWNobWVudExheWVyKDIsIHRleHR1cmUuZ2V0KCksIDAsIDIpOwotICAg
IHZlcmlmeUF0dGFjaG1lbnRMYXllcigzLCB0ZXh0dXJlLmdldCgpLCAwLCAzKTsKLQotICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOwotfQot
Ci0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2gg
cmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJl
IHJ1biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChEcmF3QnVmZmVyc1Rlc3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICBFUzNfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMzX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RyYXdFbGVtZW50c1Rl
c3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RyYXdF
bGVtZW50c1Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MWYzYzFlOWEy
YWJmOGNmNzZiOGJkNjY0YjQ5ZjlmMzk5ZjUzZjRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9EcmF3RWxlbWVudHNUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyNiArMCww
IEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCi0vLwotLy8gRHJhd0VsZW1lbnRzVGVzdDoKLS8vICAgVGVzdHMgZm9yIGluZGV4
ZWQgZHJhd3MuCi0vLwotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotdXNp
bmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3MgRHJhd0VsZW1lbnRz
VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIERyYXdFbGVtZW50
c1Rlc3QoKSA6IG1Qcm9ncmFtKDB1KQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoNjQp
OwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoNjQpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRz
KDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgfQotCi0gICAgfkRyYXdF
bGVtZW50c1Rlc3QoKQotICAgIHsKLSAgICAgICAgZm9yIChHTHVpbnQgaW5kZXhCdWZmZXIgOiBt
SW5kZXhCdWZmZXJzKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaW5kZXhCdWZmZXIgIT0g
MCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJmlu
ZGV4QnVmZmVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoR0x1
aW50IHZlcnRleEFycmF5IDogbVZlcnRleEFycmF5cykKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKHZlcnRleEFycmF5ICE9IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xE
ZWxldGVWZXJ0ZXhBcnJheXMoMSwgJnZlcnRleEFycmF5KTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCi0gICAgICAgIGZvciAoR0x1aW50IHZlcnRleEJ1ZmZlciA6IG1WZXJ0ZXhCdWZmZXJz
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodmVydGV4QnVmZmVyICE9IDApCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZ2ZXJ0ZXhCdWZmZXIp
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1Qcm9ncmFtICE9IDB1
KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBtSW5kZXhCdWZmZXJzOwot
ICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbVZlcnRleEFycmF5czsKLSAgICBzdGQ6OnZlY3RvcjxH
THVpbnQ+IG1WZXJ0ZXhCdWZmZXJzOwotICAgIEdMdWludCBtUHJvZ3JhbTsKLX07Ci0KLS8vIFRl
c3QgYSBzdGF0ZSBkZXN5bmMgdGhhdCBjYW4gb2NjdXIgd2hlbiB1c2luZyBhIHN0cmVhbWluZyBp
bmRleCBidWZmZXIgaW4gR0wgaW4gY29uY2VydCB3aXRoCi0vLyBkZWxldGluZyB0aGUgYXBwbGll
ZCBpbmRleCBidWZmZXIuCi1URVNUX1AoRHJhd0VsZW1lbnRzVGVzdCwgRGVsZXRpbmdBZnRlclN0
cmVhbWluZ0luZGV4ZXMpCi17Ci0gICAgLy8gSW5pdCBwcm9ncmFtCi0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnZlcnRleFNoYWRlciA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtc
biIKLSAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIHRlc3RGbGFnO1xuIgotICAgICAgICAidmFyeWlu
ZyB2ZWMyIHZfZGF0YTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAg
Z2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLCAxKTtcbiIKLSAgICAgICAgIiAgdl9kYXRh
ID0gdGVzdEZsYWc7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZm
cmFnbWVudFNoYWRlciA9Ci0gICAgICAgICJ2YXJ5aW5nIGhpZ2hwIHZlYzIgdl9kYXRhO1xuIgot
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KHZfZGF0YSwgMCwgMSk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIG1Qcm9ncmFtID0gQ29tcGls
ZVByb2dyYW0odmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcik7Ci0gICAgQVNTRVJUX05FKDB1
LCBtUHJvZ3JhbSk7Ci0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgIEdMaW50IHBv
c2l0aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAicG9zaXRpb24i
KTsKLSAgICBBU1NFUlRfTkUoLTEsIHBvc2l0aW9uTG9jYXRpb24pOwotCi0gICAgR0xpbnQgdGVz
dEZsYWdMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJ0ZXN0RmxhZyIp
OwotICAgIEFTU0VSVF9ORSgtMSwgdGVzdEZsYWdMb2NhdGlvbik7Ci0KLSAgICBtSW5kZXhCdWZm
ZXJzLnJlc2l6ZSgzdSk7Ci0gICAgZ2xHZW5CdWZmZXJzKDMsICZtSW5kZXhCdWZmZXJzWzBdKTsK
LQotICAgIG1WZXJ0ZXhBcnJheXMucmVzaXplKDIpOwotICAgIGdsR2VuVmVydGV4QXJyYXlzKDIs
ICZtVmVydGV4QXJyYXlzWzBdKTsKLQotICAgIG1WZXJ0ZXhCdWZmZXJzLnJlc2l6ZSgyKTsKLSAg
ICBnbEdlbkJ1ZmZlcnMoMiwgJm1WZXJ0ZXhCdWZmZXJzWzBdKTsKLQotICAgIHN0ZDo6dmVjdG9y
PEdMdWludD4gaW5kZXhEYXRhWzJdOwotICAgIGluZGV4RGF0YVswXS5wdXNoX2JhY2soMCk7Ci0g
ICAgaW5kZXhEYXRhWzBdLnB1c2hfYmFjaygxKTsKLSAgICBpbmRleERhdGFbMF0ucHVzaF9iYWNr
KDIpOwotICAgIGluZGV4RGF0YVswXS5wdXNoX2JhY2soMik7Ci0gICAgaW5kZXhEYXRhWzBdLnB1
c2hfYmFjaygzKTsKLSAgICBpbmRleERhdGFbMF0ucHVzaF9iYWNrKDApOwotCi0gICAgaW5kZXhE
YXRhWzFdID0gaW5kZXhEYXRhWzBdOwotICAgIGZvciAoR0x1aW50ICZpdGVtIDogaW5kZXhEYXRh
WzFdKQotICAgIHsKLSAgICAgICAgaXRlbSArPSA0dTsKLSAgICB9Ci0KLSAgICBzdGQ6OnZlY3Rv
cjxHTGZsb2F0PiBwb3NpdGlvbkRhdGE7Ci0gICAgLy8gcXVhZCB2ZXJ0cwotICAgIHBvc2l0aW9u
RGF0YS5wdXNoX2JhY2soLTEuMGYpOwotICAgIHBvc2l0aW9uRGF0YS5wdXNoX2JhY2soMS4wZik7
Ci0gICAgcG9zaXRpb25EYXRhLnB1c2hfYmFjaygtMS4wZik7Ci0gICAgcG9zaXRpb25EYXRhLnB1
c2hfYmFjaygtMS4wZik7Ci0gICAgcG9zaXRpb25EYXRhLnB1c2hfYmFjaygxLjBmKTsKLSAgICBw
b3NpdGlvbkRhdGEucHVzaF9iYWNrKC0xLjBmKTsKLSAgICBwb3NpdGlvbkRhdGEucHVzaF9iYWNr
KDEuMGYpOwotICAgIHBvc2l0aW9uRGF0YS5wdXNoX2JhY2soMS4wZik7Ci0KLSAgICAvLyBSZXBl
YXQgcG9zaXRpb24gZGF0YQotICAgIHBvc2l0aW9uRGF0YS5wdXNoX2JhY2soLTEuMGYpOwotICAg
IHBvc2l0aW9uRGF0YS5wdXNoX2JhY2soMS4wZik7Ci0gICAgcG9zaXRpb25EYXRhLnB1c2hfYmFj
aygtMS4wZik7Ci0gICAgcG9zaXRpb25EYXRhLnB1c2hfYmFjaygtMS4wZik7Ci0gICAgcG9zaXRp
b25EYXRhLnB1c2hfYmFjaygxLjBmKTsKLSAgICBwb3NpdGlvbkRhdGEucHVzaF9iYWNrKC0xLjBm
KTsKLSAgICBwb3NpdGlvbkRhdGEucHVzaF9iYWNrKDEuMGYpOwotICAgIHBvc2l0aW9uRGF0YS5w
dXNoX2JhY2soMS4wZik7Ci0KLSAgICBzdGQ6OnZlY3RvcjxHTGZsb2F0PiB0ZXN0RmxhZ0RhdGE7
Ci0gICAgLy8gcmVkCi0gICAgdGVzdEZsYWdEYXRhLnB1c2hfYmFjaygxLjBmKTsKLSAgICB0ZXN0
RmxhZ0RhdGEucHVzaF9iYWNrKDAuMGYpOwotICAgIHRlc3RGbGFnRGF0YS5wdXNoX2JhY2soMS4w
Zik7Ci0gICAgdGVzdEZsYWdEYXRhLnB1c2hfYmFjaygwLjBmKTsKLSAgICB0ZXN0RmxhZ0RhdGEu
cHVzaF9iYWNrKDEuMGYpOwotICAgIHRlc3RGbGFnRGF0YS5wdXNoX2JhY2soMC4wZik7Ci0gICAg
dGVzdEZsYWdEYXRhLnB1c2hfYmFjaygxLjBmKTsKLSAgICB0ZXN0RmxhZ0RhdGEucHVzaF9iYWNr
KDAuMGYpOwotCi0gICAgLy8gZ3JlZW4KLSAgICB0ZXN0RmxhZ0RhdGEucHVzaF9iYWNrKDAuMGYp
OwotICAgIHRlc3RGbGFnRGF0YS5wdXNoX2JhY2soMS4wZik7Ci0gICAgdGVzdEZsYWdEYXRhLnB1
c2hfYmFjaygwLjBmKTsKLSAgICB0ZXN0RmxhZ0RhdGEucHVzaF9iYWNrKDEuMGYpOwotICAgIHRl
c3RGbGFnRGF0YS5wdXNoX2JhY2soMC4wZik7Ci0gICAgdGVzdEZsYWdEYXRhLnB1c2hfYmFjaygx
LjBmKTsKLSAgICB0ZXN0RmxhZ0RhdGEucHVzaF9iYWNrKDAuMGYpOwotICAgIHRlc3RGbGFnRGF0
YS5wdXNoX2JhY2soMS4wZik7Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9C
VUZGRVIsIG1JbmRleEJ1ZmZlcnNbMF0pOwotICAgIGdsQnVmZmVyRGF0YShHTF9FTEVNRU5UX0FS
UkFZX0JVRkZFUiwgc2l6ZW9mKEdMdWludCkgKiBpbmRleERhdGFbMF0uc2l6ZSgpLCAmaW5kZXhE
YXRhWzBdWzBdLAotICAgICAgICAgICAgICAgICBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICBnbEJp
bmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1JbmRleEJ1ZmZlcnNbMl0pOwotICAg
IGdsQnVmZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKEdMdWludCkgKiBp
bmRleERhdGFbMF0uc2l6ZSgpLCAmaW5kZXhEYXRhWzBdWzBdLAotICAgICAgICAgICAgICAgICBH
TF9TVEFUSUNfRFJBVyk7Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZG
RVIsIG1JbmRleEJ1ZmZlcnNbMV0pOwotICAgIGdsQnVmZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZ
X0JVRkZFUiwgc2l6ZW9mKEdMdWludCkgKiBpbmRleERhdGFbMV0uc2l6ZSgpLCAmaW5kZXhEYXRh
WzFdWzBdLAotICAgICAgICAgICAgICAgICBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICAvLyBJbml0
aWFsaXplIGZpcnN0IHZlcnRleCBhcnJheSB3aXRoIHNlY29uZCBpbmRleCBidWZmZXIKLSAgICBn
bEJpbmRWZXJ0ZXhBcnJheShtVmVydGV4QXJyYXlzWzBdKTsKLQotICAgIGdsQmluZEJ1ZmZlcihH
TF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbUluZGV4QnVmZmVyc1sxXSk7Ci0gICAgZ2xCaW5kQnVm
ZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVZlcnRleEJ1ZmZlcnNbMF0pOwotICAgIGdsQnVmZmVyRGF0
YShHTF9BUlJBWV9CVUZGRVIsIHNpemVvZihHTGZsb2F0KSAqIHBvc2l0aW9uRGF0YS5zaXplKCks
ICZwb3NpdGlvbkRhdGFbMF0sCi0gICAgICAgICAgICAgICAgIEdMX1NUQVRJQ19EUkFXKTsKLSAg
ICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdM
X0ZBTFNFLCBzaXplb2YoR0xmbG9hdCkgKiAyLCBudWxscHRyKTsKLSAgICBnbEVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOwotCi0gICAgZ2xCaW5kQnVmZmVyKEdMX0FS
UkFZX0JVRkZFUiwgbVZlcnRleEJ1ZmZlcnNbMV0pOwotICAgIGdsQnVmZmVyRGF0YShHTF9BUlJB
WV9CVUZGRVIsIHNpemVvZihHTGZsb2F0KSAqIHRlc3RGbGFnRGF0YS5zaXplKCksICZ0ZXN0Rmxh
Z0RhdGFbMF0sCi0gICAgICAgICAgICAgICAgIEdMX1NUQVRJQ19EUkFXKTsKLSAgICBnbFZlcnRl
eEF0dHJpYlBvaW50ZXIodGVzdEZsYWdMb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCBz
aXplb2YoR0xmbG9hdCkgKiAyLCBudWxscHRyKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KHRlc3RGbGFnTG9jYXRpb24pOwotCi0gICAgLy8gSW5pdGlhbGl6ZSBzZWNvbmQgdmVydGV4
IGFycmF5IHdpdGggZmlyc3QgaW5kZXggYnVmZmVyCi0gICAgZ2xCaW5kVmVydGV4QXJyYXkobVZl
cnRleEFycmF5c1sxXSk7Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZG
RVIsIG1JbmRleEJ1ZmZlcnNbMF0pOwotCi0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZF
UiwgbVZlcnRleEJ1ZmZlcnNbMF0pOwotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlv
bkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIHNpemVvZihHTGZsb2F0KSAqIDIsIG51
bGxwdHIpOwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7
Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4QnVmZmVyc1sxXSk7
Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHRlc3RGbGFnTG9jYXRpb24sIDIsIEdMX0ZMT0FU
LCBHTF9GQUxTRSwgc2l6ZW9mKEdMZmxvYXQpICogMiwgbnVsbHB0cik7Ci0gICAgZ2xFbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheSh0ZXN0RmxhZ0xvY2F0aW9uKTsKLQotICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotCi0gICAgZ2xCaW5kVmVydGV4QXJyYXkobVZlcnRleEFycmF5c1swXSk7Ci0gICAg
Z2xEcmF3RWxlbWVudHMoR0xfVFJJQU5HTEVTLCA2LCBHTF9VTlNJR05FRF9JTlQsIG51bGxwdHIp
OwotICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAwLCAyNTUsIDAsIDI1NSk7Ci0KLSAgICBnbEJp
bmRWZXJ0ZXhBcnJheShtVmVydGV4QXJyYXlzWzFdKTsKLSAgICBnbERyYXdFbGVtZW50cyhHTF9U
UklBTkdMRVMsIDYsIEdMX1VOU0lHTkVEX0lOVCwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX1BJWEVM
X0VRKDAsIDAsIDI1NSwgMCwgMCwgMjU1KTsKLQotICAgIGdsQmluZFZlcnRleEFycmF5KG1WZXJ0
ZXhBcnJheXNbMF0pOwotICAgIGdsRHJhd0VsZW1lbnRzKEdMX1RSSUFOR0xFUywgNiwgR0xfVU5T
SUdORURfSU5ULCBudWxscHRyKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwgMjU1LCAw
LCAyNTUpOwotCi0gICAgLy8gVHJpZ2dlciB0aGUgYnVnIGhlcmUuCi0gICAgZ2xEZWxldGVCdWZm
ZXJzKDEsICZtSW5kZXhCdWZmZXJzWzJdKTsKLQotICAgIGdsRHJhd0VsZW1lbnRzKEdMX1RSSUFO
R0xFUywgNiwgR0xfVU5TSUdORURfSU5ULCBudWxscHRyKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEo
MCwgMCwgMCwgMjU1LCAwLCAyNTUpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0K
LUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRHJhd0VsZW1lbnRzVGVzdCwgRVMzX09QRU5HTCgpLCBF
UzNfT1BFTkdMRVMoKSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvRVRDVGV4dHVyZVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0VUQ1RleHR1cmVUZXN0LmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMjRmZGQyMjYzMzVjMjg3ZGI3YzhmZWMyNjE1MTkxYmMwNWI1YjM4
ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRVRDVGV4dHVyZVRlc3QuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIEVUQ1RleHR1cmVUZXN0
OgotLy8gICBUZXN0cyBmb3IgRVRDIGxvc3N5IGRlY29kZSBmb3JtYXRzLgotLy8KLQotI2luY2x1
ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQot
bmFtZXNwYWNlCi17Ci0KLWNsYXNzIEVUQ1RleHR1cmVUZXN0IDogcHVibGljIEFOR0xFVGVzdAot
ewotICBwcm90ZWN0ZWQ6Ci0gICAgRVRDVGV4dHVyZVRlc3QoKSA6IG1UZXh0dXJlKDB1KQotICAg
IHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0
KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dy
ZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENv
bmZpZ0FscGhhQml0cyg4KTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBnbEdlblRleHR1cmVz
KDEsICZtVGV4dHVyZSk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQot
ICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVUZXh0
dXJlcygxLCAmbVRleHR1cmUpOwotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAg
ICB9Ci0KLSAgICBHTHVpbnQgbVRleHR1cmU7Ci19OwotCi0vLyBUZXN0cyBhIHRleHR1cmUgd2l0
aCBFVEMxIGxvc3N5IGRlY29kZSBmb3JtYXQKLVRFU1RfUChFVENUZXh0dXJlVGVzdCwgRVRDMVZh
bGlkYXRpb24pCi17Ci0gICAgYm9vbCBzdXBwb3J0ZWQgPSBleHRlbnNpb25FbmFibGVkKCJHTF9B
TkdMRV9sb3NzeV9ldGNfZGVjb2RlIik7Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIG1UZXh0dXJlKTsKLQotICAgIEdMdWJ5dGUgcGl4ZWxbOF0gPSB7IDB4MCwgMHgwLCAweGY4
LCAweDIsIDB4NDMsIDB4ZmYsIDB4NCwgMHgxMiB9OwotICAgIGdsQ29tcHJlc3NlZFRleEltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRSwgNCwg
NCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihwaXhlbCksIHBpeGVsKTsK
LSAgICBpZiAoc3VwcG9ydGVkKQotICAgIHsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci0KLSAgICAgICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAw
LCAwLCA0LCA0LCBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihwaXhlbCksIHBpeGVsKTsKLSAgICAgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Ci0KLQotICAgICAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDEsIEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEUsIDIsIDIsIDAs
Ci0gICAgICAgICAgICBzaXplb2YocGl4ZWwpLCBwaXhlbCk7Ci0gICAgICAgIGdsQ29tcHJlc3Nl
ZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMiwgR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9B
TkdMRSwgMSwgMSwgMCwKLSAgICAgICAgICAgIHNpemVvZihwaXhlbCksIHBpeGVsKTsKLSAgICB9
Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5V
TSk7Ci0gICAgfQotfQotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKEVUQ1RleHR1cmVUZXN0LAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSk7
Ci19ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRmVuY2VTeW5jVGVzdHMuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZlbmNlU3luY1Rlc3RzLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU2ODUwOWY2NjlkMWY3Y2FiMDJhOGNlYTg0ZGUy
NzRiZTczNjg5NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRmVuY2VTeW5jVGVz
dHMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjgyICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQg
MjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNs
dWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0K
LWNsYXNzIEZlbmNlTlZUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0g
ICAgRmVuY2VOVlRlc3QoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAg
ICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7
Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJp
dHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmln
RGVwdGhCaXRzKDI0KTsKLSAgICB9Ci19OwotCi1jbGFzcyBGZW5jZVN5bmNUZXN0IDogcHVibGlj
IEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgRmVuY2VTeW5jVGVzdCgpCi0gICAgewot
ICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4
KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5C
aXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmln
QWxwaGFCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOwotICAgIH0KLX07
Ci0KLS8vIEZlbmNlTlYgb2JqZWN0cyBzaG91bGQgcmVzcG9uZCBmYWxzZSB0byBnbElzRmVuY2VO
ViB1bnRpbCB0aGV5J3ZlIGJlZW4gc2V0Ci1URVNUX1AoRmVuY2VOVlRlc3QsIElzRmVuY2UpCi17
Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9OVl9mZW5jZSIpKQotICAgIHsKLSAgICAg
ICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgZHVlIHRvIG1pc3NpbmcgR0xfTlZfZmVuY2Ug
ZXh0ZW5zaW9uLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
R0x1aW50IGZlbmNlID0gMDsKLSAgICBnbEdlbkZlbmNlc05WKDEsICZmZW5jZSk7Ci0gICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBFWFBFQ1RfRVEoR0xfRkFMU0UsIGdsSXNGZW5jZU5W
KGZlbmNlKSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFNldEZlbmNlTlYo
ZmVuY2UsIEdMX0FMTF9DT01QTEVURURfTlYpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgRVhQRUNUX0VRKEdMX1RSVUUsIGdsSXNGZW5jZU5WKGZlbmNlKSk7Ci0gICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRlc3QgZXJyb3IgY2FzZXMgZm9yIGFsbCBGZW5jZU5W
IGZ1bmN0aW9ucwotVEVTVF9QKEZlbmNlTlZUZXN0LCBFcnJvcnMpCi17Ci0gICAgaWYgKCFleHRl
bnNpb25FbmFibGVkKCJHTF9OVl9mZW5jZSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgZHVlIHRvIG1pc3NpbmcgR0xfTlZfZmVuY2UgZXh0ZW5zaW9uLiIgPDwg
c3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gZ2xUZXN0RmVuY2VO
ViBzaG91bGQgc3RpbGwgcmV0dXJuIFRSVUUgZm9yIGFuIGludmFsaWQgZmVuY2UgYW5kIGdlbmVy
YXRlIGFuIElOVkFMSURfT1BFUkFUSU9OCi0gICAgRVhQRUNUX0VRKEdMX1RSVUUsIGdsVGVzdEZl
bmNlTlYoMTApKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
Ci0gICAgR0x1aW50IGZlbmNlID0gMjA7Ci0KLSAgICAvLyBnbEdlbkZlbmNlc05WIHNob3VsZCBn
ZW5lcmF0ZSBJTlZBTElEX1ZBTFVFIGZvciBhIG5lZ2F0aXZlIG4gYW5kIG5vdCB3cml0ZSBhbnl0
aGluZyB0byB0aGUgZmVuY2VzIHBvaW50ZXIKLSAgICBnbEdlbkZlbmNlc05WKC0xLCAmZmVuY2Up
OwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICBFWFBFQ1RfRVEo
MjB1LCBmZW5jZSk7Ci0KLSAgICAvLyBHZW5lcmF0ZSBhIHJlYWwgZmVuY2UKLSAgICBnbEdlbkZl
bmNlc05WKDEsICZmZW5jZSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBn
bFRlc3RGZW5jZU5WIHNob3VsZCBzdGlsbCByZXR1cm4gVFJVRSBmb3IgYSBmZW5jZSB0aGF0IGlz
IG5vdCBzdGFydGVkIGFuZCBnZW5lcmF0ZSBhbiBJTlZBTElEX09QRVJBVElPTgotICAgIEVYUEVD
VF9FUShHTF9UUlVFLCBnbFRlc3RGZW5jZU5WKGZlbmNlKSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9S
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLQotICAgIC8vIGdsR2V0RmVuY2Vpdk5WIHNob3VsZCBn
ZW5lcmF0ZSBhbiBJTlZBTElEX09QRVJBVElPTiBmb3IgYW4gaW52YWxpZCBvciB1bnN0YXJ0ZWQg
ZmVuY2UgYW5kIG5vdCBtb2RpZnkgdGhlIHBhcmFtcwotICAgIEdMaW50IHJlc3VsdCA9IDMwOwot
ICAgIGdsR2V0RmVuY2Vpdk5WKDEwLCBHTF9GRU5DRV9TVEFUVVNfTlYsICZyZXN1bHQpOwotICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgRVhQRUNUX0VRKDMw
LCByZXN1bHQpOwotCi0gICAgZ2xHZXRGZW5jZWl2TlYoZmVuY2UsIEdMX0ZFTkNFX1NUQVRVU19O
ViwgJnJlc3VsdCk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LSAgICBFWFBFQ1RfRVEoMzAsIHJlc3VsdCk7Ci0KLSAgICAvLyBnbFNldEZlbmNlTlYgc2hvdWxk
IGdlbmVyYXRlIGFuIGVycm9yIGZvciBhbnkgY29uZGl0aW9uIHRoYXQgaXMgbm90IEFMTF9DT01Q
TEVURURfTlYKLSAgICBnbFNldEZlbmNlTlYoZmVuY2UsIDApOwotICAgIEVYUEVDVF9HTF9FUlJP
UihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgLy8gZ2xTZXRGZW5jZU5WIHNob3VsZCBnZW5lcmF0
ZSBJTlZBTElEX09QRVJBVElPTiBmb3IgYW4gaW52YWxpZCBmZW5jZQotICAgIGdsU2V0RmVuY2VO
VigxMCwgR0xfQUxMX0NPTVBMRVRFRF9OVik7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKLX0KLQotLy8gVGVzdCB0aGF0IGJhc2ljIHVzYWdlIHdvcmtzIGFuZCBk
b2Vzbid0IGdlbmVyYXRlIGVycm9ycyBvciBjcmFzaAotVEVTVF9QKEZlbmNlTlZUZXN0LCBCYXNp
Y09wZXJhdGlvbnMpCi17Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9OVl9mZW5jZSIp
KQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgZHVlIHRvIG1pc3Np
bmcgR0xfTlZfZmVuY2UgZXh0ZW5zaW9uLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOwotCi0g
ICAgR0x1aW50IGZlbmNlc1syMF0gPSB7IDAgfTsKLSAgICBnbEdlbkZlbmNlc05WKHN0YXRpY19j
YXN0PEdMc2l6ZWk+KEFycmF5U2l6ZShmZW5jZXMpKSwgZmVuY2VzKTsKLSAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKLQotICAgIGZvciAoR0x1aW50IGZlbmNlIDogZmVuY2VzKQotICAgIHsKLSAg
ICAgICAgZ2xTZXRGZW5jZU5WKGZlbmNlLCBHTF9BTExfQ09NUExFVEVEX05WKTsKLQotICAgICAg
ICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIH0KLQotICAgIGdsRmluaXNoKCk7
Ci0KLSAgICBmb3IgKEdMdWludCBmZW5jZSA6IGZlbmNlcykKLSAgICB7Ci0gICAgICAgIEdMaW50
IHN0YXR1cyA9IDA7Ci0gICAgICAgIGdsR2V0RmVuY2Vpdk5WKGZlbmNlLCBHTF9GRU5DRV9TVEFU
VVNfTlYsICZzdGF0dXMpOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgICAg
ICAvLyBGZW5jZSBzaG91bGQgYmUgY29tcGxldGUgbm93IHRoYXQgRmluaXNoIGhhcyBiZWVuIGNh
bGxlZAotICAgICAgICBFWFBFQ1RfRVEoR0xfVFJVRSwgc3RhdHVzKTsKLSAgICB9Ci0KLSAgICBF
WFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1LCAwLCAyNTUsIDI1NSk7Ci19Ci0KLS8vIEZlbmNlU3lu
YyBvYmplY3RzIHNob3VsZCByZXNwb25kIHRydWUgdG8gSXNTeW5jIGFmdGVyIHRoZXkgYXJlIGNy
ZWF0ZWQgd2l0aCBnbEZlbmNlU3luYwotVEVTVF9QKEZlbmNlU3luY1Rlc3QsIElzU3luYykKLXsK
LSAgICBHTHN5bmMgc3luYyA9IGdsRmVuY2VTeW5jKEdMX1NZTkNfR1BVX0NPTU1BTkRTX0NPTVBM
RVRFLCAwKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIEVYUEVDVF9FUShHTF9U
UlVFLCBnbElzU3luYyhzeW5jKSk7Ci0gICAgRVhQRUNUX0VRKEdMX0ZBTFNFLCBnbElzU3luYyhy
ZWludGVycHJldF9jYXN0PEdMc3luYz4oNDApKSk7Ci19Ci0KLS8vIFRlc3QgZXJyb3IgY2FzZXMg
Zm9yIGFsbCBGZW5jZVN5bmMgZnVuY3Rpb24KLVRFU1RfUChGZW5jZVN5bmNUZXN0LCBFcnJvcnMp
Ci17Ci0gICAgR0xzeW5jIHN5bmMgPSBnbEZlbmNlU3luYyhHTF9TWU5DX0dQVV9DT01NQU5EU19D
T01QTEVURSwgMCk7Ci0KLSAgICAvLyBEZWxldGVTeW5jIGdlbmVyYXRlcyBJTlZBTElEX1ZBTFVF
IHdoZW4gdGhlIHN5bmMgaXMgbm90IHZhbGlkCi0gICAgZ2xEZWxldGVTeW5jKHJlaW50ZXJwcmV0
X2Nhc3Q8R0xzeW5jPigyMCkpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVF
KTsKLQotICAgIC8vIGdsRmVuY2VTeW5jIGdlbmVyYXRlcyBHTF9JTlZBTElEX0VOVU0gaWYgdGhl
IGNvbmRpdGlvbiBpcyBub3QgR0xfU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUKLSAgICBFWFBF
Q1RfRVEoMCwgZ2xGZW5jZVN5bmMoMCwgMCkpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZB
TElEX0VOVU0pOwotCi0gICAgLy8gZ2xGZW5jZVN5bmMgZ2VuZXJhdGVzIEdMX0lOVkFMSURfRU5V
TSBpZiB0aGUgZmxhZ3MgaXMgbm90IDAKLSAgICBFWFBFQ1RfRVEoMCwgZ2xGZW5jZVN5bmMoR0xf
U1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUsIDEwKSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdM
X0lOVkFMSURfVkFMVUUpOwotCi0gICAgLy8gZ2xDbGllbnRXYWl0U3luYyBnZW5lcmF0ZXMgR0xf
SU5WQUxJRF9WQUxVRSBhbmQgcmV0dXJucyBHTF9XQUlUX0ZBSUxFRCBpZiBmbGFncyBjb250YWlu
cyBtb3JlIHRoYW4ganVzdCBHTF9TWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVAotICAgIEVYUEVDVF9H
TEVOVU1fRVEoR0xfV0FJVF9GQUlMRUQsIGdsQ2xpZW50V2FpdFN5bmMoc3luYywgR0xfU1lOQ19G
TFVTSF9DT01NQU5EU19CSVQgfCAweDIsIDApKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5W
QUxJRF9WQUxVRSk7Ci0KLSAgICAvLyBnbENsaWVudFdhaXRTeW5jIGdlbmVyYXRlcyBHTF9JTlZB
TElEX1ZBTFVFIGFuZCByZXR1cm5zIEdMX1dBSVRfRkFJTEVEIGlmIHRoZSBzeW5jIG9iamVjdCBp
cyBub3QgdmFsaWQKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX1dBSVRfRkFJTEVELCBnbENsaWVu
dFdhaXRTeW5jKHJlaW50ZXJwcmV0X2Nhc3Q8R0xzeW5jPigzMCksIEdMX1NZTkNfRkxVU0hfQ09N
TUFORFNfQklULCAwKSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwot
Ci0gICAgLy8gZ2xXYWl0U3luYyBnZW5lcmF0ZXMgR0xfSU5WQUxJRF9WQUxVRSBpZiBmbGFncyBp
cyBub24temVybwotICAgIGdsV2FpdFN5bmMoc3luYywgMSwgR0xfVElNRU9VVF9JR05PUkVEKTsK
LSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICAvLyBnbFdhaXRT
eW5jIGdlbmVyYXRlcyBHTF9JTlZBTElEX1ZBTFVFIGlmIEdMdWludDY0IGlzIG5vdCBHTF9USU1F
T1VUX0lHTk9SRUQKLSAgICBnbFdhaXRTeW5jKHN5bmMsIDAsIDApOwotICAgIEVYUEVDVF9HTF9F
UlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIC8vIGdsV2FpdFN5bmMgZ2VuZXJhdGVzIEdM
X0lOVkFMSURfVkFMVUUgaWYgdGhlIHN5bmMgb2JqZWN0IGlzIG5vdCB2YWxpZAotICAgIGdsV2Fp
dFN5bmMocmVpbnRlcnByZXRfY2FzdDxHTHN5bmM+KDMwKSwgMCwgR0xfVElNRU9VVF9JR05PUkVE
KTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICAvLyBnbEdl
dFN5bmNpdiBnZW5lcmF0ZXMgR0xfSU5WQUxJRF9WQUxVRSBpZiBidWZTaXplIGlzIGxlc3MgdGhh
biB6ZXJvLCByZXN1bHRzIHNob3VsZCBiZSB1bnRvdWNoZWQKLSAgICBHTHNpemVpIGxlbmd0aCA9
IDIwOwotICAgIEdMaW50IHZhbHVlID0gMzA7Ci0gICAgZ2xHZXRTeW5jaXYoc3luYywgR0xfT0JK
RUNUX1RZUEUsIC0xLCAmbGVuZ3RoLCAmdmFsdWUpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9J
TlZBTElEX1ZBTFVFKTsKLSAgICBFWFBFQ1RfRVEoMjAsIGxlbmd0aCk7Ci0gICAgRVhQRUNUX0VR
KDMwLCB2YWx1ZSk7Ci0KLSAgICAvLyBnbEdldFN5bmNpdiBnZW5lcmF0ZXMgR0xfSU5WQUxJRF9W
QUxVRSBpZiB0aGUgc3luYyBvYmplY3QgdGlzIG5vdCB2YWxpZCwgcmVzdWx0cyBzaG91bGQgYmUg
dW50b3VjaGVkCi0gICAgZ2xHZXRTeW5jaXYocmVpbnRlcnByZXRfY2FzdDxHTHN5bmM+KDMwKSwg
R0xfT0JKRUNUX1RZUEUsIDEsICZsZW5ndGgsICZ2YWx1ZSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9S
KEdMX0lOVkFMSURfVkFMVUUpOwotICAgIEVYUEVDVF9FUSgyMCwgbGVuZ3RoKTsKLSAgICBFWFBF
Q1RfRVEoMzAsIHZhbHVlKTsKLX0KLQotLy8gVGVzdCB1c2FnZSBvZiBnbEdldFN5bmNpdgotVEVT
VF9QKEZlbmNlU3luY1Rlc3QsIEJhc2ljUXVlcmllcykKLXsKLSAgICBHTHNpemVpIGxlbmd0aCA9
IDA7Ci0gICAgR0xpbnQgdmFsdWUgPSAwOwotICAgIEdMc3luYyBzeW5jID0gZ2xGZW5jZVN5bmMo
R0xfU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUsIDApOwotCi0gICAgZ2xHZXRTeW5jaXYoc3lu
YywgR0xfU1lOQ19DT05ESVRJT04sIDEsICZsZW5ndGgsICZ2YWx1ZSk7Ci0gICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VRKEdMX1NZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRF
LCB2YWx1ZSk7Ci0KLSAgICBnbEdldFN5bmNpdihzeW5jLCBHTF9PQkpFQ1RfVFlQRSwgMSwgJmxl
bmd0aCwgJnZhbHVlKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfRVEo
R0xfU1lOQ19GRU5DRSwgdmFsdWUpOwotCi0gICAgZ2xHZXRTeW5jaXYoc3luYywgR0xfU1lOQ19G
TEFHUywgMSwgJmxlbmd0aCwgJnZhbHVlKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAg
ICBFWFBFQ1RfRVEoMCwgdmFsdWUpOwotfQotCi0vLyBUZXN0IHRoYXQgYmFzaWMgdXNhZ2Ugd29y
a3MgYW5kIGRvZXNuJ3QgZ2VuZXJhdGUgZXJyb3JzIG9yIGNyYXNoCi1URVNUX1AoRmVuY2VTeW5j
VGVzdCwgQmFzaWNPcGVyYXRpb25zKQotewotICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmlndXJl
IG91dCB3aHkgdGhpcyBpcyBicm9rZW4gb24gSW50ZWwgT3BlbkdMCi0gICAgaWYgKElzSW50ZWwo
KSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BF
TkdMX0FOR0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24g
SW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOwotCi0gICAgR0xzeW5jIHN5
bmMgPSBnbEZlbmNlU3luYyhHTF9TWU5DX0dQVV9DT01NQU5EU19DT01QTEVURSwgMCk7Ci0KLSAg
ICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIGdsV2FpdFN5bmMoc3luYywgMCwg
R0xfVElNRU9VVF9JR05PUkVEKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIEdM
c2l6ZWkgbGVuZ3RoID0gMDsKLSAgICBHTGludCB2YWx1ZSA9IDA7Ci0gICAgdW5zaWduZWQgaW50
IGxvb3BDb3VudCA9IDA7Ci0KLSAgICBnbEZsdXNoKCk7Ci0KLSAgICAvLyBVc2UgJ2xvb3BDb3Vu
dCcgdG8gbWFrZSBzdXJlIHRoZSB0ZXN0IGRvZXNuJ3QgZ2V0IHN0dWNrIGluIGFuIGluZmluaXRl
IGxvb3AKLSAgICB3aGlsZSAodmFsdWUgIT0gR0xfU0lHTkFMRUQgJiYgbG9vcENvdW50IDw9IDEw
MDAwMDApCi0gICAgewotICAgICAgICBsb29wQ291bnQrKzsKLQotICAgICAgICBnbEdldFN5bmNp
dihzeW5jLCBHTF9TWU5DX1NUQVRVUywgMSwgJmxlbmd0aCwgJnZhbHVlKTsKLSAgICAgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgQVNTRVJUX0dMRU5VTV9FUShHTF9TSUdO
QUxFRCwgdmFsdWUpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyMDsgaSsrKQotICAg
IHsKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICAgICAgZ2xDbGll
bnRXYWl0U3luYyhzeW5jLCBHTF9TWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVCwgR0xfVElNRU9VVF9J
R05PUkVEKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotfQotCi0vLyBV
c2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVy
ZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBh
Z2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChGZW5jZU5WVGVzdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDEx
KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0wo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRmVuY2VT
eW5jVGVzdCwgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1l
YnVmZmVyTWl4ZWRTYW1wbGVzVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvRnJhbWVidWZmZXJNaXhlZFNhbXBsZXNUZXN0LmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNWJhZjkzMDNhYjAwNTAyZDJhMTA5YTBhNDNiZTc4ZjE2NjI1
YmZjOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRnJhbWVidWZmZXJNaXhlZFNh
bXBsZXNUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5MSArMCwwIEBACi0vLwotLy8gQ29w
eXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwot
Ly8gQ0hST01JVU1GcmFtZWJ1ZmZlck1peGVkU2FtcGxlc1Rlc3QKLS8vICAgVGVzdCBDSFJPTUlV
TSBzdWJzZXQgb2YgTlZfZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcy4KLS8vICAgVGhpcyBleHRl
bnNpb24gYWxsb3dzIHJlbmRlcmluZyB0byBhIGZyYW1lYnVmZmVyIHRoYXQgaGFzIGRpZmZlcmVu
dAotLy8gICBzYW1wbGUgY291bnRzIGZvciBkaWZmZXJlbnQgcmVuZGVyIGJ1ZmZlcnMgKHN0ZW5j
aWwsIGRlcHRoLCBjb2xvcikKLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0j
aW5jbHVkZSAic2hhZGVyX3V0aWxzLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotbmFt
ZXNwYWNlCi17Ci0KLWNvbnN0IEdMdWludCBrV2lkdGggID0gMTAwOwotY29uc3QgR0x1aW50IGtI
ZWlnaHQgPSAxMDA7Ci0KLWNsYXNzIENIUk9NSVVNRnJhbWVidWZmZXJNaXhlZFNhbXBsZXNUZXN0
IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgZW51bSBTZXR1cEZCT1R5
cGUKLSAgICB7Ci0gICAgICAgIE1peGVkU2FtcGxlRkJPLCAgIC8vIDEgY29sb3Igc2FtcGxlLCBO
IHN0ZW5jaWwgc2FtcGxlcy4KLSAgICAgICAgU2luZ2xlU2FtcGxlRkJPLCAgLy8gMSBjb2xvciBz
YW1wbGUsIDEgc3RlbmNpbCBzYW1wbGUuCi0gICAgfTsKLQotICAgIGJvb2wgaXNBcHBsaWNhYmxl
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBleHRlbnNpb25FbmFibGVkKCJHTF9DSFJP
TUlVTV9mcmFtZWJ1ZmZlcl9taXhlZF9zYW1wbGVzIikgJiYKLSAgICAgICAgICAgICAgIGV4dGVu
c2lvbkVuYWJsZWQoIkdMX09FU19yZ2I4X3JnYmE4Iik7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRV
cCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAg
ICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgICAgICBzdGF0aWMgY29uc3QgY2hhcioga1ZlcnRl
eFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICAgICAiYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBwb3Np
dGlvbjtcbiIKLSAgICAgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICAgICAiICBn
bF9Qb3NpdGlvbiA9IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgIn1cbiI7Ci0KLSAgICAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIGtGcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICAgICAi
dW5pZm9ybSBtZWRpdW1wIHZlYzQgY29sb3I7XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKCkg
e1xuIgotICAgICAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7XG4iCi0gICAgICAgICAg
ICAifVxuIjsKLQotICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KLSAgICAgICAgbVByb2dyYW0g
PSBDb21waWxlUHJvZ3JhbShrVmVydGV4U2hhZGVyU291cmNlLCBrRnJhZ21lbnRTaGFkZXJTb3Vy
Y2UpOwotCi0gICAgICAgIEdMdWludCBwb3NpdGlvbl9sb2MgPSBnbEdldEF0dHJpYkxvY2F0aW9u
KG1Qcm9ncmFtLCAicG9zaXRpb24iKTsKLSAgICAgICAgbUNvbG9yTG9jICAgICAgICAgICA9IGds
R2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAiY29sb3IiKTsKLQotICAgICAgICBnbEdlbkJ1
ZmZlcnMoMSwgJm1WQk8pOwotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBt
VkJPKTsKLQotICAgICAgICBzdGF0aWMgZmxvYXQgdmVydGljZXNbXSA9IHsKLSAgICAgICAgICAg
IDEuMGYsICAxLjBmLCAtMS4wZiwgMS4wZiwgIC0xLjBmLCAtMS4wZiwgLTEuMGYsIDEuMGYsIC0x
LjBmLAotICAgICAgICAgICAgLTEuMGYsIDEuMGYsIC0xLjBmLCAtMS4wZiwgLTEuMGYsIDEuMGYs
ICAtMS4wZiwgMS4wZiwgMS4wZiwKLSAgICAgICAgfTsKLSAgICAgICAgZ2xCdWZmZXJEYXRhKEdM
X0FSUkFZX0JVRkZFUiwgc2l6ZW9mKHZlcnRpY2VzKSwgdmVydGljZXMsIEdMX1NUQVRJQ19EUkFX
KTsKLSAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbl9sb2MpOwotICAg
ICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25fbG9jLCAyLCBHTF9GTE9BVCwgR0xf
RkFMU0UsIDAsIDApOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQot
ICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVCdWZm
ZXJzKDEsICZtVkJPKTsKLSAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAg
ICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3du
KCk7Ci0gICAgfQotCi0gICAgdm9pZCBwcmVwYXJlRm9yRHJhdyhTZXR1cEZCT1R5cGUgZmJvX3R5
cGUpCi0gICAgewotICAgICAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgICAg
ICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZSk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgbVRleHR1cmUpOwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgICAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RP
X0VER0UpOwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgIGds
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCBrV2lkdGgsIGtIZWlnaHQsIDAs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgICAgICBOVUxMKTsK
LSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKLQotICAgICAgICBnbEdl
blJlbmRlcmJ1ZmZlcnMoMSwgJm1TdGVuY2lsUkIpOwotICAgICAgICBnbEJpbmRSZW5kZXJidWZm
ZXIoR0xfUkVOREVSQlVGRkVSLCBtU3RlbmNpbFJCKTsKLQotICAgICAgICBpZiAoZmJvX3R5cGUg
PT0gTWl4ZWRTYW1wbGVGQk8pCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIENyZWF0ZSBhIHNh
bXBsZSBidWZmZXIuCi0gICAgICAgICAgICBHTHNpemVpIG51bV9zYW1wbGVzID0gOCwgbWF4X3Nh
bXBsZXMgPSAwOwotICAgICAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfU0FNUExFUywgJm1h
eF9zYW1wbGVzKTsKLSAgICAgICAgICAgIG51bV9zYW1wbGVzID0gc3RkOjptaW4obnVtX3NhbXBs
ZXMsIG1heF9zYW1wbGVzKTsKLSAgICAgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRp
c2FtcGxlQU5HTEUoR0xfUkVOREVSQlVGRkVSLCBudW1fc2FtcGxlcywgR0xfU1RFTkNJTF9JTkRF
WDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtX
aWR0aCwga0hlaWdodCk7Ci0gICAgICAgICAgICBHTGludCBwYXJhbSA9IDA7Ci0gICAgICAgICAg
ICBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdMX1JFTkRFUkJVRkZFUiwgR0xfUkVOREVS
QlVGRkVSX1NBTVBMRVMsICZwYXJhbSk7Ci0gICAgICAgICAgICBFWFBFQ1RfR1QocGFyYW0sIDEp
OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgZ2xSZW5k
ZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfU1RFTkNJTF9JTkRFWDgsIGtXaWR0
aCwga0hlaWdodCk7Ci0gICAgICAgIH0KLSAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JF
TkRFUkJVRkZFUiwgMCk7Ci0KLSAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1TYW1wbGVG
Qk8pOwotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVNhbXBsZUZC
Tyk7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NP
TE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZSwgMCk7Ci0gICAgICAgIGds
RnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNI
TUVOVCwgR0xfUkVOREVSQlVGRkVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1TdGVuY2lsUkIpOwotICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0xlbnVtPihHTF9G
UkFNRUJVRkZFUl9DT01QTEVURSksCi0gICAgICAgICAgICAgICAgICBnbENoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLQotICAgICAgICBnbFVzZVByb2dyYW0obVByb2dy
YW0pOwotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKLSAgICAgICAg
Z2xWaWV3cG9ydCgwLCAwLCBrV2lkdGgsIGtIZWlnaHQpOwotICAgICAgICBnbENsZWFyQ29sb3Io
MC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7Ci0gICAgICAgIGdsQ2xlYXJTdGVuY2lsKDEpOwotICAg
ICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQp
OwotICAgICAgICBnbEVuYWJsZShHTF9TVEVOQ0lMX1RFU1QpOwotICAgICAgICBnbEVuYWJsZShH
TF9CTEVORCk7Ci0gICAgICAgIGdsQmxlbmRGdW5jKEdMX1NSQ19BTFBIQSwgR0xfT05FX01JTlVT
X1NSQ19BTFBIQSk7Ci0gICAgICAgIGdsU3RlbmNpbE1hc2soMHhmZmZmZmZmZik7Ci0gICAgICAg
IGdsU3RlbmNpbEZ1bmMoR0xfRVFVQUwsIDEsIDB4ZmZmZmZmZmYpOwotICAgICAgICBnbFN0ZW5j
aWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9aRVJPKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNsZWFudXAoKQotICAgIHsKLSAgICAgICAgZ2xC
aW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOwotICAgICAgICBnbERlbGV0ZUZyYW1l
YnVmZmVycygxLCAmbVNhbXBsZUZCTyk7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1U
ZXh0dXJlKTsKLSAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtU3RlbmNpbFJCKTsK
LQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVNh
bXBsZUZCTzsKLSAgICBHTHVpbnQgbVN0ZW5jaWxSQjsKLSAgICBHTHVpbnQgbVRleHR1cmU7Ci0K
LSAgICBHTHVpbnQgbVByb2dyYW07Ci0gICAgR0x1aW50IG1WQk87Ci0gICAgR0xpbnQgbUNvbG9y
TG9jOwotfTsKLQotfSAgLy8KLQotVEVTVF9QKENIUk9NSVVNRnJhbWVidWZmZXJNaXhlZFNhbXBs
ZXNUZXN0LCBTdGF0ZVNldHRpbmdUZXN0KQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0g
ICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xpbnQgdmFsdWUgPSAtMTsKLSAg
ICBnbEdldEludGVnZXJ2KEdMX0NPVkVSQUdFX01PRFVMQVRJT05fQ0hST01JVU0sICZ2YWx1ZSk7
Ci0gICAgRVhQRUNUX0VRKEdMX05PTkUsIHZhbHVlKTsKLSAgICBHTGVudW0ga1ZhbHVlc1tdID0g
e0dMX05PTkUsIEdMX1JHQiwgR0xfUkdCQSwgR0xfQUxQSEF9OwotICAgIGZvciAoYXV0byBleHBl
Y3QgOiBrVmFsdWVzKQotICAgIHsKLSAgICAgICAgZ2xDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlV
TShleHBlY3QpOwotICAgICAgICB2YWx1ZSA9IC0xOwotICAgICAgICBnbEdldEludGVnZXJ2KEdM
X0NPVkVSQUdFX01PRFVMQVRJT05fQ0hST01JVU0sICZ2YWx1ZSk7Ci0gICAgICAgIEVYUEVDVF9F
UShleHBlY3QsIHN0YXRpY19jYXN0PEdMZW51bT4odmFsdWUpKTsKLSAgICAgICAgRVhQRUNUX0VR
KHN0YXRpY19jYXN0PEdMZW51bT4oR0xfTk9fRVJST1IpLCBnbEdldEVycm9yKCkpOwotICAgIH0K
LQotICAgIGdsQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0oR0xfQllURSk7Ci0gICAgRVhQRUNU
X0VRKHN0YXRpY19jYXN0PEdMZW51bT4oR0xfSU5WQUxJRF9FTlVNKSwgZ2xHZXRFcnJvcigpKTsK
LSAgICB2YWx1ZSA9IC0xOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfQ09WRVJBR0VfTU9EVUxBVElP
Tl9DSFJPTUlVTSwgJnZhbHVlKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0xlbnVtPihH
TF9BTFBIQSksIHN0YXRpY19jYXN0PEdMZW51bT4odmFsdWUpKTsKLSAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8R0xlbnVtPihHTF9OT19FUlJPUiksIGdsR2V0RXJyb3IoKSk7Ci19Ci0KLS8vIFRo
ZSB0ZXN0IHBhdHRlcm4gaXMgYXMgZm9sbG93czoKLS8vIEEgZ3JlZW4gdHJpYW5nbGUgKGJvdHRv
bSBsZWZ0LCB0b3AgcmlnaHQsIHRvcCBsZWZ0KS4KLS8vIEEgYmx1ZSB0cmlhbmdsZSAodG9wIGxl
ZnQsIGJvdHRvbSByaWdodCwgYm90dG9tIGxlZnQpLgotLy8gVGhlIHRyaWFuZ2xlcyB3aWxsIG92
ZXJsYXAgYnV0IG92ZXJsYXAgb25seSBjb250YWlucyBncmVlbiBwaXhlbHMsCi0vLyBkdWUgdG8g
ZWFjaCBkcmF3IGVyYXNpbmcgaXRzIGFyZWEgZnJvbSBzdGVuY2lsLgotLy8gVGhlIGJsdWUgdHJp
YW5nbGUgd2lsbCBmaWxsIG9ubHkgdGhlIGFyZWEgKGJvdHRvbSBsZWZ0LCBjZW50ZXIsCi0vLyBi
b3R0b20gcmlnaHQpLgotCi0vLyBUaGUgdGVzdCB0ZXN0cyB0aGF0IENvdmVyYWdlTW9kdWxhdGlv
biBjYWxsIHdvcmtzLgotLy8gVGhlIGZyYWN0aW9uYWwgcGl4ZWxzIG9mIGJvdGggdHJpYW5nbGVz
IGVuZCB1cCBiZWluZyBtb2R1bGF0ZWQKLS8vIGJ5IHRoZSBjb3ZlcmFnZSBvZiB0aGUgZnJhZ21l
bnQuIFRlc3QgdGhhdCBkcmF3aW5nIHdpdGggYW5kIHdpdGhvdXQKLS8vIENvdmVyYWdlTW9kdWxh
dGlvbiBjYXVzZXMgdGhlIHJlc3VsdCB0byBiZSBkaWZmZXJlbnQuCi1URVNUX1AoQ0hST01JVU1G
cmFtZWJ1ZmZlck1peGVkU2FtcGxlc1Rlc3QsIENvdmVyYWdlTW9kdWxhdGlvbikKLXsKLSAgICBp
ZiAoIWlzQXBwbGljYWJsZSgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBz
dGF0aWMgY29uc3QgZmxvYXQga0JsdWVbXSAgPSB7MC4wZiwgMC4wZiwgMS4wZiwgMS4wZn07Ci0g
ICAgc3RhdGljIGNvbnN0IGZsb2F0IGtHcmVlbltdID0gezAuMGYsIDEuMGYsIDAuMGYsIDEuMGZ9
OwotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IHJlc3VsdHNbM107Ci0gICAgY29uc3Qg
R0xpbnQga1Jlc3VsdFNpemUgPSBrV2lkdGggKiBrSGVpZ2h0ICogNDsKLQotICAgIGZvciAoaW50
IHBhc3MgPSAwOyBwYXNzIDwgMzsgKytwYXNzKQotICAgIHsKLSAgICAgICAgcHJlcGFyZUZvckRy
YXcoTWl4ZWRTYW1wbGVGQk8pOwotICAgICAgICBpZiAocGFzcyA9PSAxKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBnbENvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNKEdMX1JHQkEpOwotICAgICAg
ICB9Ci0gICAgICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2MsIDEsIGtHcmVlbik7Ci0gICAgICAg
IGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOwotCi0gICAgICAgIGdsVW5pZm9ybTRm
dihtQ29sb3JMb2MsIDEsIGtCbHVlKTsKLSAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xF
UywgMywgMyk7Ci0gICAgICAgIGlmIChwYXNzID09IDEpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGdsQ292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0oR0xfTk9ORSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmVzdWx0c1twYXNzXS5yZXNldChuZXcgdWludDhfdFtrUmVzdWx0U2l6ZV0pOwotICAgICAg
ICBtZW1zZXQocmVzdWx0c1twYXNzXS5nZXQoKSwgMTIzdSwga1Jlc3VsdFNpemUpOwotICAgICAg
ICBnbFJlYWRQaXhlbHMoMCwgMCwga1dpZHRoLCBrSGVpZ2h0LCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCByZXN1bHRzW3Bhc3NdLmdldCgpKTsKLQotICAgICAgICBjbGVhbnVwKCk7Ci0gICAg
fQotCi0gICAgRVhQRUNUX05FKDAsIG1lbWNtcChyZXN1bHRzWzBdLmdldCgpLCByZXN1bHRzWzFd
LmdldCgpLCBrUmVzdWx0U2l6ZSkpOwotICAgIC8vIFZlcmlmeSB0aGF0IHJlbmRlcmluZyBpcyBk
ZXRlcm1pbmlzdGljLCBzbyB0aGF0IHRoZSBwYXNzIGFib3ZlIGRvZXMgbm90Ci0gICAgLy8gY29t
ZSBmcm9tIG5vbi1kZXRlcm1pbmlzdGljIHJlbmRlcmluZy4KLSAgICBFWFBFQ1RfRVEoMCwgbWVt
Y21wKHJlc3VsdHNbMF0uZ2V0KCksIHJlc3VsdHNbMl0uZ2V0KCksIGtSZXN1bHRTaXplKSk7Ci19
Ci0KLS8vIFRoZSB0ZXN0IHRlc3RzIHRoYXQgdGhlIHN0ZW5jaWwgYnVmZmVyIGNhbiBiZSBtdWx0
aXNhbXBsZWQsIGV2ZW4gdGhvdWdoIHRoZQotLy8gY29sb3IgYnVmZmVyIGlzIHNpbmdsZS1zYW1w
bGVkLiBEcmF3cyB0aGUgc2FtZSBwYXR0ZXJuIHdpdGggc2luZ2xlLXNhbXBsZQotLy8gc3RlbmNp
bCBidWZmZXIgYW5kIHdpdGggbXVsdGlzYW1wbGUgc3RlbmNpbCBidWZmZXIuIFRoZSBpbWFnZXMg
c2hvdWxkIGRpZmZlci4KLVRFU1RfUChDSFJPTUlVTUZyYW1lYnVmZmVyTWl4ZWRTYW1wbGVzVGVz
dCwgTXVsdGlzYW1wbGVTdGVuY2lsRWZmZWN0aXZlKQotewotICAgIGlmICghaXNBcHBsaWNhYmxl
KCkpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGZs
b2F0IGtCbHVlW10gID0gezAuMGYsIDAuMGYsIDEuMGYsIDEuMGZ9OwotICAgIHN0YXRpYyBjb25z
dCBmbG9hdCBrR3JlZW5bXSA9IHswLjBmLCAxLjBmLCAwLjBmLCAxLjBmfTsKLQotICAgIHN0ZDo6
dW5pcXVlX3B0cjx1aW50OF90W10+IHJlc3VsdHNbM107Ci0gICAgY29uc3QgR0xpbnQga1Jlc3Vs
dFNpemUgPSBrV2lkdGggKiBrSGVpZ2h0ICogNDsKLQotICAgIGZvciAoaW50IHBhc3MgPSAwOyBw
YXNzIDwgMzsgKytwYXNzKQotICAgIHsKLSAgICAgICAgaWYgKHBhc3MgPT0gMSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcHJlcGFyZUZvckRyYXcoTWl4ZWRTYW1wbGVGQk8pOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcHJlcGFyZUZvckRyYXcoU2lu
Z2xlU2FtcGxlRkJPKTsKLSAgICAgICAgfQotICAgICAgICBnbFVuaWZvcm00ZnYobUNvbG9yTG9j
LCAxLCBrR3JlZW4pOwotICAgICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCAzKTsK
LQotICAgICAgICBnbFVuaWZvcm00ZnYobUNvbG9yTG9jLCAxLCBrQmx1ZSk7Ci0gICAgICAgIGds
RHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDMsIDMpOwotCi0gICAgICAgIHJlc3VsdHNbcGFzc10u
cmVzZXQobmV3IHVpbnQ4X3Rba1Jlc3VsdFNpemVdKTsKLSAgICAgICAgbWVtc2V0KHJlc3VsdHNb
cGFzc10uZ2V0KCksIDEydSwga1Jlc3VsdFNpemUpOwotICAgICAgICBnbFJlYWRQaXhlbHMoMCwg
MCwga1dpZHRoLCBrSGVpZ2h0LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCByZXN1bHRzW3Bh
c3NdLmdldCgpKTsKLQotICAgICAgICBjbGVhbnVwKCk7Ci0gICAgfQotCi0gICAgRVhQRUNUX05F
KDAsIG1lbWNtcChyZXN1bHRzWzBdLmdldCgpLCByZXN1bHRzWzFdLmdldCgpLCBrUmVzdWx0U2l6
ZSkpOwotICAgIC8vIFZlcmlmeSB0aGF0IHJlbmRlcmluZyBpcyBkZXRlcm1pbmlzdGljLCBzbyB0
aGF0IHRoZSBwYXNzIGFib3ZlIGRvZXMgbm90Ci0gICAgLy8gY29tZSBmcm9tIG5vbi1kZXRlcm1p
bmlzdGljIHJlbmRlcmluZy4KLSAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKHJlc3VsdHNbMF0uZ2V0
KCksIHJlc3VsdHNbMl0uZ2V0KCksIGtSZXN1bHRTaXplKSk7Ci19Ci0KLUFOR0xFX0lOU1RBTlRJ
QVRFX1RFU1QoQ0hST01JVU1GcmFtZWJ1ZmZlck1peGVkU2FtcGxlc1Rlc3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09Q
RU5HTEVTKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRnJhbWVidWZm
ZXJSZW5kZXJNaXBtYXBUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9nbF90ZXN0cy9GcmFtZWJ1ZmZlclJlbmRlck1pcG1hcFRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0NzFiZjUwMTg0OGFkYzYyMGU3NmNlM2ZlMGNlMDMzYWY1YzNmNjE3
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9GcmFtZWJ1ZmZlclJlbmRlck1pcG1h
cFRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjA0ICswLDAgQEAKLS8vCi0vLyBDb3B5cmln
aHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNp
bmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7
Ci0KLWNsYXNzIEZyYW1lYnVmZmVyUmVuZGVyTWlwbWFwVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QK
LXsKLSAgcHJvdGVjdGVkOgotICAgIEZyYW1lYnVmZmVyUmVuZGVyTWlwbWFwVGVzdCgpCi0gICAg
ewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgyNTYpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQo
MjU2KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3Jl
ZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29u
ZmlnQWxwaGFCaXRzKDgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCi0gICAg
ewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgdnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIGF0dHJp
YnV0ZSBoaWdocCB2ZWM0IHBvc2l0aW9uOwotICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmc1Nv
dXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgdW5pZm9ybSBoaWdo
cCB2ZWM0IGNvbG9yOwotICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICk7Ci0KLSAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2c1NvdXJjZSwg
ZnNTb3VyY2UpOwotICAgICAgICBpZiAobVByb2dyYW0gPT0gMCkKLSAgICAgICAgewotICAgICAg
ICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7Ci0gICAgICAgIH0K
LQotICAgICAgICBtQ29sb3JMb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFt
LCAiY29sb3IiKTsKLQotICAgICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotCi0gICAgICAg
IGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKLSAgICAgICAgZ2xDbGVhckRlcHRoZigwLjApOwot
ICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklU
KTsKLQotICAgICAgICBnbEVuYWJsZShHTF9CTEVORCk7Ci0gICAgICAgIGdsRGlzYWJsZShHTF9E
RVBUSF9URVNUKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVQcm9ncmFt
KG1Qcm9ncmFtKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0g
ICAgR0x1aW50IG1Qcm9ncmFtOwotICAgIEdMaW50IG1Db2xvckxvY2F0aW9uOwotfTsKLQotLy8g
VmFsaWRhdGUgdGhhdCBpZiB3ZSBhcmUgaW4gRVMzIG9yIEdMX09FU19mYm9fcmVuZGVyX21pcG1h
cCBleGlzdHMsIHRoZXJlIGFyZSBubyB2YWxpZGF0aW9uIGVycm9ycwotLy8gd2hlbiB1c2luZyBh
IG5vbi16ZXJvIGxldmVsIGluIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQuCi1URVNUX1AoRnJhbWVi
dWZmZXJSZW5kZXJNaXBtYXBUZXN0LCBWYWxpZGF0aW9uKQotewotICAgIGJvb2wgcmVuZGVyVG9N
aXBtYXBTdXBwb3J0ZWQgPQotICAgICAgICBleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZmJvX3Jl
bmRlcl9taXBtYXAiKSB8fCBnZXRDbGllbnRNYWpvclZlcnNpb24oKSA+IDI7Ci0KLSAgICBHTHVp
bnQgdGV4ID0gMDsKLSAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOwotICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV8yRCwgdGV4KTsKLQotICAgIGNvbnN0IEdMaW50IGxldmVscyA9IDU7Ci0g
ICAgZm9yIChHTGludCBpID0gMDsgaSA8IGxldmVsczsgaSsrKQotICAgIHsKLSAgICAgICAgR0xz
aXplaSBzaXplID0gMSA8PCAoKGxldmVscyAtIDEpIC0gaSk7Ci0gICAgICAgIGdsVGV4SW1hZ2Uy
RChHTF9URVhUVVJFXzJELCBpLCBHTF9SR0JBLCBzaXplLCBzaXplLCAwLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLCBOVUxMKTsKLSAgICB9Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
LQotICAgIEdMdWludCBmYm8gPSAwOwotICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZmYm8pOwot
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8pOwotICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotCi0gICAgZm9yIChHTGludCBpID0gMDsgaSA8IGxldmVsczsgaSsrKQot
ICAgIHsKLSAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xf
Q09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleCwgaSk7Ci0KLSAgICAgICAgaWYg
KGkgPiAwICYmICFyZW5kZXJUb01pcG1hcFN1cHBvcnRlZCkKLSAgICAgICAgewotICAgICAgICAg
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotICAgICAgICB9Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAg
ICAgICAgICBFWFBFQ1RfRVEoZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVS
KSwgR0xlbnVtKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZmJvKTsKLSAgICBnbERlbGV0ZVRleHR1cmVz
KDEsICZ0ZXgpOwotfQotCi0vLyBSZW5kZXIgdG8gdmFyaW91cyBsZXZlbHMgb2YgYSB0ZXh0dXJl
IGFuZCBjaGVjayB0aGF0IHRoZXkgaGF2ZSB0aGUgY29ycmVjdCBjb2xvciBkYXRhIHZpYSBSZWFk
UGl4ZWxzCi1URVNUX1AoRnJhbWVidWZmZXJSZW5kZXJNaXBtYXBUZXN0LCBSZW5kZXJUb01pcG1h
cCkKLXsKLSAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgaXMgYnJv
a2VuIG9uIEludGVsIE9wZW5HTAotICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5k
ZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0g
ICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIE9wZW5HTC4iIDw8IHN0
ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJvb2wgcmVuZGVyVG9NaXBt
YXBTdXBwb3J0ZWQgPQotICAgICAgICBleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZmJvX3JlbmRl
cl9taXBtYXAiKSB8fCBnZXRDbGllbnRNYWpvclZlcnNpb24oKSA+IDI7Ci0gICAgaWYgKCFyZW5k
ZXJUb01pcG1hcFN1cHBvcnRlZCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBz
a2lwcGVkIGJlY2F1c2UgR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIG9yIEVTMyBpcyBub3QgYXZh
aWxhYmxlLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29u
c3QgR0xmbG9hdCBsZXZlbENvbG9yc1tdID0KLSAgICB7Ci0gICAgICAgIDEuMGYsIDAuMGYsIDAu
MGYsIDEuMGYsCi0gICAgICAgIDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYsCi0gICAgICAgIDAuMGYs
IDAuMGYsIDEuMGYsIDEuMGYsCi0gICAgICAgIDEuMGYsIDEuMGYsIDAuMGYsIDEuMGYsCi0gICAg
ICAgIDEuMGYsIDAuMGYsIDEuMGYsIDEuMGYsCi0gICAgICAgIDAuMGYsIDEuMGYsIDEuMGYsIDEu
MGYsCi0gICAgfTsKLSAgICBjb25zdCBHTGludCB0ZXN0TGV2ZWxzID0gc3RhdGljX2Nhc3Q8R0xp
bnQ+KEFycmF5U2l6ZShsZXZlbENvbG9ycykgLyA0KTsKLQotICAgIEdMdWludCB0ZXggPSAwOwot
ICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCB0ZXgpOwotCi0gICAgZm9yIChHTGludCBpID0gMDsgaSA8IHRlc3RMZXZlbHM7IGkrKykK
LSAgICB7Ci0gICAgICAgIEdMc2l6ZWkgc2l6ZSA9IDEgPDwgKCh0ZXN0TGV2ZWxzIC0gMSkgLSBp
KTsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIGksIEdMX1JHQkEsIHNpemUs
IHNpemUsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIE5VTEwpOwotICAgIH0KLQotICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgR0x1aW50IGZibyA9IDA7Ci0gICAgZ2xHZW5G
cmFtZWJ1ZmZlcnMoMSwgJmZibyk7Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIGZibyk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBSZW5kZXIgdG8g
dGhlIGxldmVscyBvZiB0aGUgdGV4dHVyZSB3aXRoIGRpZmZlcmVudCBjb2xvcnMKLSAgICBmb3Ig
KEdMaW50IGkgPSAwOyBpIDwgdGVzdExldmVsczsgaSsrKQotICAgIHsKLSAgICAgICAgZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1RFWFRVUkVfMkQsIHRleCwgaSk7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0g
ICAgICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgICAgIGdsVW5pZm9ybTRmdihtQ29s
b3JMb2NhdGlvbiwgMSwgbGV2ZWxDb2xvcnMgKyAoaSAqIDQpKTsKLQotICAgICAgICBkcmF3UXVh
ZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOwotICAgIH0KLQotICAgIC8vIFRlc3QgdGhhdCB0aGUgbGV2ZWxzIG9mIHRoZSB0ZXh0dXJl
IGFyZSBjb3JyZWN0Ci0gICAgZm9yIChHTGludCBpID0gMDsgaSA8IHRlc3RMZXZlbHM7IGkrKykK
LSAgICB7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdM
X0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXgsIGkpOwotICAgICAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2xvciA9IGxldmVs
Q29sb3JzICsgKGkgKiA0KTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIGNvbG9yWzBd
ICogMjU1LCBjb2xvclsxXSAqIDI1NSwgY29sb3JbMl0gKiAyNTUsIGNvbG9yWzNdICogMjU1KTsK
LSAgICB9Ci0KLSAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZmJvKTsKLSAgICBnbERlbGV0
ZVRleHR1cmVzKDEsICZ0ZXgpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8v
IFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5k
ZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVu
IGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKEZyYW1lYnVmZmVyUmVuZGVyTWlwbWFw
VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgp
LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgIEVTM19PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVT
KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9GcmFtZWJ1ZmZlclRl
c3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1l
YnVmZmVyVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzMGNhODQwMDk0
M2JiNzk1ZmRkODVjNmM4ODI1NWI5NTM1ZjQxMzQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2ds
X3Rlc3RzL0ZyYW1lYnVmZmVyVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNzkgKzAsMCBA
QAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgotLy8KLS8vIEZyYW1lYnVmZmVyIHRlc3RzOgotLy8gICBWYXJpb3VzIHRlc3RzIHJl
bGF0ZWQgZm9yIEZyYW1idWZmZXJzLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVU
ZXN0LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotY2xhc3MgRnJhbWVidWZmZXJGb3Jt
YXRzVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIEZyYW1lYnVm
ZmVyRm9ybWF0c1Rlc3QoKSA6IG1GcmFtZWJ1ZmZlcigwKSwgbVRleHR1cmUoMCksIG1SZW5kZXJi
dWZmZXIoMCksIG1Qcm9ncmFtKDApCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgp
OwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0
cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdC
bHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgIH0KLQotICAg
IHZvaWQgY2hlY2tCaXRDb3VudChHTHVpbnQgZmJvLCBHTGVudW0gY2hhbm5lbCwgR0xpbnQgbWlu
Qml0cykKLSAgICB7Ci0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBm
Ym8pOwotCi0gICAgICAgIEdMaW50IGJpdHMgPSAwOwotICAgICAgICBnbEdldEludGVnZXJ2KGNo
YW5uZWwsICZiaXRzKTsKLQotICAgICAgICBpZiAobWluQml0cyA9PSAwKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBFWFBFQ1RfRVEobWluQml0cywgYml0cyk7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBFWFBFQ1RfR0UoYml0cywgbWluQml0cyk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHRlc3RCaXRDb3VudHMoR0x1aW50IGZibywKLSAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbWluUmVkQml0cywKLSAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbWluR3JlZW5CaXRzLAotICAgICAgICAgICAgICAgICAgICAgICBHTGludCBt
aW5CbHVlQml0cywKLSAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbWluQWxwaGFCaXRzLAot
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBtaW5EZXB0aEJpdHMsCi0gICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IG1pblN0ZW5jaWxCaXRzKQotICAgIHsKLSAgICAgICAgY2hlY2tCaXRD
b3VudChmYm8sIEdMX1JFRF9CSVRTLCBtaW5SZWRCaXRzKTsKLSAgICAgICAgY2hlY2tCaXRDb3Vu
dChmYm8sIEdMX0dSRUVOX0JJVFMsIG1pbkdyZWVuQml0cyk7Ci0gICAgICAgIGNoZWNrQml0Q291
bnQoZmJvLCBHTF9CTFVFX0JJVFMsIG1pbkJsdWVCaXRzKTsKLSAgICAgICAgY2hlY2tCaXRDb3Vu
dChmYm8sIEdMX0FMUEhBX0JJVFMsIG1pbkFscGhhQml0cyk7Ci0gICAgICAgIGNoZWNrQml0Q291
bnQoZmJvLCBHTF9ERVBUSF9CSVRTLCBtaW5EZXB0aEJpdHMpOwotICAgICAgICBjaGVja0JpdENv
dW50KGZibywgR0xfU1RFTkNJTF9CSVRTLCBtaW5TdGVuY2lsQml0cyk7Ci0gICAgfQotCi0gICAg
dm9pZCB0ZXN0VGV4dHVyZUZvcm1hdChHTGVudW0gaW50ZXJuYWxGb3JtYXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBtaW5SZWRCaXRzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbWluR3JlZW5CaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbWluQmx1ZUJpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBtaW5BbHBo
YUJpdHMpCi0gICAgewotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZSk7Ci0gICAg
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUpOwotICAgICAgICBnbFRl
eFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJELCAxLCBpbnRlcm5hbEZvcm1hdCwgMSwgMSk7Ci0K
LSAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1Jf
QVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlLCAwKTsKLQotICAgICAgICB0ZXN0
Qml0Q291bnRzKG1GcmFtZWJ1ZmZlciwgbWluUmVkQml0cywgbWluR3JlZW5CaXRzLCBtaW5CbHVl
Qml0cywgbWluQWxwaGFCaXRzLCAwLCAwKTsKLSAgICB9Ci0KLSAgICB2b2lkIHRlc3RSZW5kZXJi
dWZmZXJNdWx0aXNhbXBsZUZvcm1hdChpbnQgbWluRVNWZXJzaW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50VHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3Jt
YXQpCi0gICAgewotICAgICAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IEZpZ3VyZSBvdXQgd2h5IHRo
aXMgaXMgYnJva2VuIG9uIEludGVsIE9wZW5HTAotICAgICAgICBpZiAoSXNJbnRlbCgpICYmIGdl
dFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5H
TEUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9u
IEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIGludCBjbGllbnRWZXJzaW9uID0gZ2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCk7Ci0gICAgICAgIGlmIChjbGllbnRWZXJzaW9uIDwgbWluRVNWZXJzaW9uKQotICAgICAgICB7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBDaGVjayB0aGF0
IG11bHRpc2FtcGxlIGlzIHN1cHBvcnRlZCB3aXRoIGF0IGxlYXN0IHR3byBzYW1wbGVzIChtaW5p
bXVtIHJlcXVpcmVkIGlzIDEpCi0gICAgICAgIGJvb2wgc3VwcG9ydHMyU2FtcGxlcyA9IGZhbHNl
OwotCi0gICAgICAgIGlmIChjbGllbnRWZXJzaW9uID09IDIpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJBTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIp
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCBtYXhTYW1wbGVzOwotICAgICAg
ICAgICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1NBTVBMRVNfQU5HTEUsICZtYXhTYW1wbGVz
KTsKLSAgICAgICAgICAgICAgICBzdXBwb3J0czJTYW1wbGVzID0gbWF4U2FtcGxlcyA+PSAyOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAg
ICAgICAgYXNzZXJ0KGNsaWVudFZlcnNpb24gPj0gMyk7Ci0gICAgICAgICAgICBpbnQgbWF4U2Ft
cGxlczsKLSAgICAgICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1NBTVBMRVMsICZtYXhTYW1w
bGVzKTsKLSAgICAgICAgICAgIHN1cHBvcnRzMlNhbXBsZXMgPSBtYXhTYW1wbGVzID49IDI7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoIXN1cHBvcnRzMlNhbXBsZXMpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGdsR2VuUmVuZGVyYnVmZmVy
cygxLCAmbVJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5E
RVJCVUZGRVIsIG1SZW5kZXJidWZmZXIpOwotCi0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OwotICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRF
UkJVRkZFUiwgMiwgaW50ZXJuYWxGb3JtYXQsIDEyOCwgMTI4KTsKLSAgICAgICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIGF0dGFjaG1lbnRUeXBlLCBHTF9SRU5ERVJCVUZGRVIsIG1SZW5kZXJidWZmZXIpOwot
ICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHRlc3RaZXJv
SGVpZ2h0UmVuZGVyYnVmZmVyKCkKLSAgICB7Ci0gICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygx
LCAmbVJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJC
VUZGRVIsIG1SZW5kZXJidWZmZXIpOwotICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xf
UkVOREVSQlVGRkVSLCBHTF9SR0JBOCwgMSwgMCk7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9SRU5ERVJC
VUZGRVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlbmRlcmJ1ZmZlcik7
Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZvaWQgU2V0VXAo
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAg
IGdsR2VuRnJhbWVidWZmZXJzKDEsICZtRnJhbWVidWZmZXIpOwotICAgICAgICBnbEJpbmRGcmFt
ZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKLSAgICB9Ci0KLSAgICB2b2lk
IFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24o
KTsKLQotICAgICAgICBpZiAobVRleHR1cmUgIT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAg
Z2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUpOwotICAgICAgICAgICAgbVRleHR1cmUgPSAw
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1SZW5kZXJidWZmZXIgIT0gMCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtUmVuZGVyYnVmZmVyKTsK
LSAgICAgICAgICAgIG1SZW5kZXJidWZmZXIgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KG1GcmFtZWJ1ZmZlciAhPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbERlbGV0ZUZyYW1l
YnVmZmVycygxLCAmbUZyYW1lYnVmZmVyKTsKLSAgICAgICAgICAgIG1GcmFtZWJ1ZmZlciA9IDA7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobVByb2dyYW0gIT0gMCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAgICAgICAgIG1Qcm9ncmFt
ID0gMDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEdMdWludCBtRnJhbWVidWZmZXI7Ci0gICAg
R0x1aW50IG1UZXh0dXJlOwotICAgIEdMdWludCBtUmVuZGVyYnVmZmVyOwotICAgIEdMdWludCBt
UHJvZ3JhbTsKLX07Ci0KLVRFU1RfUChGcmFtZWJ1ZmZlckZvcm1hdHNUZXN0LCBSR0JBNCkKLXsK
LSAgICB0ZXN0VGV4dHVyZUZvcm1hdChHTF9SR0JBNCwgNCwgNCwgNCwgNCk7Ci19Ci0KLVRFU1Rf
UChGcmFtZWJ1ZmZlckZvcm1hdHNUZXN0LCBSR0I1NjUpCi17Ci0gICAgdGVzdFRleHR1cmVGb3Jt
YXQoR0xfUkdCNTY1LCA1LCA2LCA1LCAwKTsKLX0KLQotVEVTVF9QKEZyYW1lYnVmZmVyRm9ybWF0
c1Rlc3QsIFJHQjgpCi17Ci0gICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAh
ZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3JnYjhfcmdiYTgiKSkKLSAgICB7Ci0gICAgICAgIHN0
ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGR1ZSB0byBtaXNzaW5nIEVTMyBvciBHTF9PRVNfcmdi
OF9yZ2JhOC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHRl
c3RUZXh0dXJlRm9ybWF0KEdMX1JHQjhfT0VTLCA4LCA4LCA4LCAwKTsKLX0KLQotVEVTVF9QKEZy
YW1lYnVmZmVyRm9ybWF0c1Rlc3QsIEJHUkE4KQotewotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4IikpCi0gICAgewotICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBkdWUgdG8gbWlzc2luZyBHTF9FWFRfdGV4dHVyZV9mb3Jt
YXRfQkdSQTg4ODguIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICB0ZXN0VGV4dHVyZUZvcm1hdChHTF9CR1JBOF9FWFQsIDgsIDgsIDgsIDgpOwotfQotCi1URVNU
X1AoRnJhbWVidWZmZXJGb3JtYXRzVGVzdCwgUkdCQTgpCi17Ci0gICAgaWYgKGdldENsaWVudE1h
am9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3JnYjhfcmdiYTgi
KSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGR1ZSB0byBtaXNz
aW5nIEVTMyBvciBHTF9PRVNfcmdiOF9yZ2JhOC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIHRlc3RUZXh0dXJlRm9ybWF0KEdMX1JHQkE4X09FUywgOCwgOCwg
OCwgOCk7Ci19Ci0KLVRFU1RfUChGcmFtZWJ1ZmZlckZvcm1hdHNUZXN0LCBSZW5kZXJidWZmZXJN
dWx0aXNhbXBsZV9ERVBUSDE2KQotewotICAgIHRlc3RSZW5kZXJidWZmZXJNdWx0aXNhbXBsZUZv
cm1hdCgyLCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9ERVBUSF9DT01QT05FTlQxNik7Ci19Ci0K
LVRFU1RfUChGcmFtZWJ1ZmZlckZvcm1hdHNUZXN0LCBSZW5kZXJidWZmZXJNdWx0aXNhbXBsZV9E
RVBUSDI0KQotewotICAgIHRlc3RSZW5kZXJidWZmZXJNdWx0aXNhbXBsZUZvcm1hdCgzLCBHTF9E
RVBUSF9BVFRBQ0hNRU5ULCBHTF9ERVBUSF9DT01QT05FTlQyNCk7Ci19Ci0KLVRFU1RfUChGcmFt
ZWJ1ZmZlckZvcm1hdHNUZXN0LCBSZW5kZXJidWZmZXJNdWx0aXNhbXBsZV9ERVBUSDMyRikKLXsK
LSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQotICAgIHsKLSAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IHNraXBwZWQgZHVlIHRvIG1pc3NpbmcgRVMzLiIgPDwgc3RkOjplbmRs
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdGVzdFJlbmRlcmJ1ZmZlck11bHRpc2Ft
cGxlRm9ybWF0KDMsIEdMX0RFUFRIX0FUVEFDSE1FTlQsIEdMX0RFUFRIX0NPTVBPTkVOVDMyRik7
Ci19Ci0KLVRFU1RfUChGcmFtZWJ1ZmZlckZvcm1hdHNUZXN0LCBSZW5kZXJidWZmZXJNdWx0aXNh
bXBsZV9ERVBUSDI0X1NURU5DSUw4KQotewotICAgIHRlc3RSZW5kZXJidWZmZXJNdWx0aXNhbXBs
ZUZvcm1hdCgzLCBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX0RFUFRIMjRfU1RFTkNJ
TDgpOwotfQotCi1URVNUX1AoRnJhbWVidWZmZXJGb3JtYXRzVGVzdCwgUmVuZGVyYnVmZmVyTXVs
dGlzYW1wbGVfREVQVEgzMkZfU1RFTkNJTDgpCi17Ci0gICAgaWYgKGdldENsaWVudE1ham9yVmVy
c2lvbigpIDwgMykKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGR1
ZSB0byBtaXNzaW5nIEVTMy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIHRlc3RSZW5kZXJidWZmZXJNdWx0aXNhbXBsZUZvcm1hdCgzLCBHTF9ERVBUSF9TVEVO
Q0lMX0FUVEFDSE1FTlQsIEdMX0RFUFRIMzJGX1NURU5DSUw4KTsKLX0KLQotVEVTVF9QKEZyYW1l
YnVmZmVyRm9ybWF0c1Rlc3QsIFJlbmRlcmJ1ZmZlck11bHRpc2FtcGxlX1NURU5DSUxfSU5ERVg4
KQotewotICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmlndXJlIG91dCBob3cgdG8gc3VwcG9ydCBH
TFNURU5DSUxfSU5ERVg4IG9uIGRlc2t0b3AgR0wKLSAgICBpZiAoR2V0UGFyYW0oKS5nZXRSZW5k
ZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0g
ICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIERlc2t0b3AgT3BlbkdMLiIgPDwg
c3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdGVzdFJlbmRlcmJ1ZmZl
ck11bHRpc2FtcGxlRm9ybWF0KDIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfU1RFTkNJTF9J
TkRFWDgpOwotfQotCi0vLyBUZXN0IHRoYXQgYmluZGluZyBhbiBpbmNvbXBsZXRlIGN1YmUgbWFw
IGlzIHJlamVjdGVkIGJ5IEFOR0xFLgotVEVTVF9QKEZyYW1lYnVmZmVyRm9ybWF0c1Rlc3QsIElu
Y29tcGxldGVDdWJlTWFwKQotewotICAgIC8vIEZpcnN0IG1ha2UgYSBjb21wbGV0ZSBDdWJlTWFw
LgotICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1UZXh0dXJlKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfQ1VCRV9NQVAsIG1UZXh0dXJlKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9YLCAwLCBHTF9SR0JBLCA4LCA4LCAwLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICBnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZLCAwLCBHTF9SR0JBLCA4LCA4LCAwLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLCAwLCBHTF9SR0JB
LCA4LCA4LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9Y
LCAwLCBHTF9SR0JBLCA4LCA4LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAg
ICAgICAgICAgICBudWxscHRyKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01B
UF9ORUdBVElWRV9ZLCAwLCBHTF9SR0JBLCA4LCA4LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLAotICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9aLCAwLCBHTF9SR0JBLCA4LCA4LCAwLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9O
RUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVY
VFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLQotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJl
MkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtVGV4dHVyZSwgMCk7
Ci0KLSAgICAvLyBWZXJpZnkgdGhlIGZyYW1lYnVmZmVyIGlzIGNvbXBsZXRlLgotICAgIEFTU0VS
VF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotCi0gICAgLy8gTWFrZSB0aGUgQ3ViZU1hcCBjdWJlLWlu
Y29tcGxldGUuCi0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVf
WiwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKLQotICAgIC8vIFZlcmlmeSB0aGUgZnJhbWVidWZmZXIg
aXMgaW5jb21wbGV0ZS4KLSAgICBBU1NFUlRfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0lOQ09N
UExFVEVfQVRUQUNITUVOVCwKLSAgICAgICAgICAgICAgICAgICAgIGdsQ2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotCi0gICAgLy8gVmVyaWZ5IGRyYXdpbmcgd2l0aCB0
aGUgaW5jb21wbGV0ZSBmcmFtZWJ1ZmZlciBwcm9kdWNlcyBhIEdMIGVycm9yCi0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnZzID0gImF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOyB2b2lkIG1haW4oKSB7
IGdsX1Bvc2l0aW9uID0gcG9zaXRpb247IH0iOwotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZwcyA9
ICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoMSwgMCwgMCwgMSk7IH0iOwotICAg
IG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnMsIHBzKTsKLSAgICBBU1NFUlRfTkUoMHUsIG1Q
cm9ncmFtKTsKLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAg
QVNTRVJUX0dMX0VSUk9SKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKTsKLX0KLQot
Ly8gVGVzdCB0aGF0IGEgcmVuZGVyYnVmZmVyIHdpdGggemVybyBoZWlnaHQgYnV0IG5vbnplcm8g
d2lkdGggaXMgaGFuZGxlZCB3aXRob3V0IGNyYXNoZXMvYXNzZXJ0cy4KLVRFU1RfUChGcmFtZWJ1
ZmZlckZvcm1hdHNUZXN0LCBaZXJvSGVpZ2h0UmVuZGVyYnVmZmVyKQotewotICAgIGlmIChnZXRD
bGllbnRNYWpvclZlcnNpb24oKSA8IDMpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3Qgc2tpcHBlZCBkdWUgdG8gbWlzc2luZyBFUzMiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIHRlc3RaZXJvSGVpZ2h0UmVuZGVyYnVmZmVyKCk7Ci19Ci0KLS8v
IFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5k
ZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZQotLy8gdGVzdHMgc2hvdWxkIGJl
IHJ1biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChGcmFtZWJ1ZmZlckZvcm1hdHNU
ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMzX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwotCi1jbGFzcyBGcmFt
ZWJ1ZmZlckludmFsaWRhdGVUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6
Ci0gICAgRnJhbWVidWZmZXJJbnZhbGlkYXRlVGVzdCgpIDogbUZyYW1lYnVmZmVyKDApLCBtUmVu
ZGVyYnVmZmVyKDApIHt9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAm
bUZyYW1lYnVmZmVyKTsKLSAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtUmVuZGVyYnVm
ZmVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtRnJhbWVidWZmZXIpOwotICAgICAgICBnbERl
bGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1SZW5kZXJidWZmZXIpOwotICAgICAgICBBTkdMRVRlc3Q6
OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgR0x1aW50IG1GcmFtZWJ1ZmZlcjsKLSAgICBHTHVp
bnQgbVJlbmRlcmJ1ZmZlcjsKLX07Ci0KLS8vIENvdmVycyBpbnZhbGlkYXRpbmcgYW4gaW5jb21w
bGV0ZSBmcmFtZWJ1ZmZlci4gVGhpcyBzaG91bGQgYmUgYSBuby1vcCwgYnV0IHNob3VsZCBub3Qg
ZXJyb3IuCi1URVNUX1AoRnJhbWVidWZmZXJJbnZhbGlkYXRlVGVzdCwgSW5jb21wbGV0ZSkKLXsK
LSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKLSAg
ICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtUmVuZGVyYnVmZmVyKTsKLSAg
ICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRB
Q0hNRU5UMCwgR0xfUkVOREVSQlVGRkVSLCBtUmVuZGVyYnVmZmVyKTsKLSAgICBFWFBFQ1RfR0xF
TlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCwKLSAgICAgICAgICAg
ICAgICAgICAgIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotCi0g
ICAgc3RkOjp2ZWN0b3I8R0xlbnVtPiBhdHRhY2htZW50czsKLSAgICBhdHRhY2htZW50cy5wdXNo
X2JhY2soR0xfQ09MT1JfQVRUQUNITUVOVDApOwotCi0gICAgZ2xJbnZhbGlkYXRlRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIDEsIGF0dGFjaG1lbnRzLmRhdGEoKSk7Ci0gICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7Ci19Ci0KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRnJhbWVidWZmZXJJbnZh
bGlkYXRlVGVzdCwgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0dM
U0xUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9H
TFNMVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwNjEyZGEzMGM1
NmM5NzhlMTM1ZDVmMTNiMGM0MzFkNTIwMDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL0dMU0xUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NDMgKzAsMCBAQAotLy8KLS8v
IENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgot
Ly8KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLSNpbmNsdWRlICJsaWJB
TkdMRS9Db250ZXh0LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvUHJvZ3JhbS5oIgotI2luY2x1ZGUg
InRlc3RfdXRpbHMvZ2xfcmFpaS5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVz
cGFjZQotewotCi1jbGFzcyBHTFNMVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVj
dGVkOgotICAgIEdMU0xUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7
Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRz
KDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0Js
dWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotCi0gICAg
dmlydHVhbCB2b2lkIFNldFVwKCkKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsK
LQotICAgICAgICBtU2ltcGxlVlNTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAg
ICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGlucHV0QXR0cmlidXRlOwotICAgICAgICAgICAgdm9p
ZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IGlu
cHV0QXR0cmlidXRlOwotICAgICAgICAgICAgfQotICAgICAgICApOwotICAgIH0KLQotICAgIHN0
ZDo6c3RyaW5nIEdlbmVyYXRlVmFyeWluZ1R5cGUoR0xpbnQgdmVjdG9yU2l6ZSkKLSAgICB7Ci0g
ICAgICAgIGNoYXIgdmFyeWluZ1R5cGVbMTBdOwotCi0gICAgICAgIGlmICh2ZWN0b3JTaXplID09
IDEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwcmludGYodmFyeWluZ1R5cGUsICJmbG9hdCIp
OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgc3ByaW50
Zih2YXJ5aW5nVHlwZSwgInZlYyVkIiwgdmVjdG9yU2l6ZSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXR1cm4gc3RkOjpzdHJpbmcodmFyeWluZ1R5cGUpOwotICAgIH0KLQotICAgIHN0ZDo6c3Ry
aW5nIEdlbmVyYXRlVmVjdG9yVmFyeWluZ0RlY2xhcmF0aW9uKEdMaW50IHZlY3RvclNpemUsIEdM
aW50IGFycmF5U2l6ZSwgR0xpbnQgaWQpCi0gICAgewotICAgICAgICBjaGFyIGJ1ZmZbMTAwXTsK
LQotICAgICAgICBpZiAoYXJyYXlTaXplID09IDEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNw
cmludGYoYnVmZiwgInZhcnlpbmcgJXMgdiVkO1xuIiwgR2VuZXJhdGVWYXJ5aW5nVHlwZSh2ZWN0
b3JTaXplKS5jX3N0cigpLCBpZCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7
Ci0gICAgICAgICAgICBzcHJpbnRmKGJ1ZmYsICJ2YXJ5aW5nICVzIHYlZFslZF07XG4iLCBHZW5l
cmF0ZVZhcnlpbmdUeXBlKHZlY3RvclNpemUpLmNfc3RyKCksIGlkLCBhcnJheVNpemUpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZmYpOwotICAgIH0KLQotICAg
IHN0ZDo6c3RyaW5nIEdlbmVyYXRlVmVjdG9yVmFyeWluZ1NldHRpbmdDb2RlKEdMaW50IHZlY3Rv
clNpemUsIEdMaW50IGFycmF5U2l6ZSwgR0xpbnQgaWQpCi0gICAgewotICAgICAgICBzdGQ6OnN0
cmluZyByZXR1cm5TdHJpbmc7Ci0gICAgICAgIGNoYXIgYnVmZlsxMDBdOwotCi0gICAgICAgIGlm
IChhcnJheVNpemUgPT0gMSkKLSAgICAgICAgewotICAgICAgICAgICAgc3ByaW50ZihidWZmLCAi
XHQgdiVkID0gJXMoMS4wKTtcbiIsIGlkLCBHZW5lcmF0ZVZhcnlpbmdUeXBlKHZlY3RvclNpemUp
LmNfc3RyKCkpOwotICAgICAgICAgICAgcmV0dXJuU3RyaW5nICs9IGJ1ZmY7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGFycmF5U2l6ZTsgaSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHNwcmludGYo
YnVmZiwgIlx0IHYlZFslZF0gPSAlcygxLjApO1xuIiwgaWQsIGksIEdlbmVyYXRlVmFyeWluZ1R5
cGUodmVjdG9yU2l6ZSkuY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuU3RyaW5nICs9
IGJ1ZmY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcmV0dXJu
U3RyaW5nOwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nIEdlbmVyYXRlVmVjdG9yVmFyeWluZ1Vz
ZUNvZGUoR0xpbnQgYXJyYXlTaXplLCBHTGludCBpZCkKLSAgICB7Ci0gICAgICAgIGlmIChhcnJh
eVNpemUgPT0gMSkKLSAgICAgICAgewotICAgICAgICAgICAgY2hhciBidWZmWzEwMF07Ci0gICAg
ICAgICAgICBzcHJpbnRmKGJ1ZmYsICJ2JWQgKyAiLCBpZCk7Ci0gICAgICAgICAgICByZXR1cm4g
c3RkOjpzdHJpbmcoYnVmZik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGQ6OnN0cmluZyByZXR1cm5TdHJpbmc7Ci0gICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGFycmF5U2l6ZTsgaSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGNoYXIgYnVmZlsxMDBdOwotICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZiwgInYlZFsl
ZF0gKyAiLCBpZCwgaSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuU3RyaW5nICs9IGJ1ZmY7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcmV0dXJuU3RyaW5nOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgdm9pZCBHZW5lcmF0ZUdMU0xXaXRoVmFyeWluZ3MoR0xpbnQgZmxvYXRD
b3VudCwgR0xpbnQgZmxvYXRBcnJheUNvdW50LCBHTGludCB2ZWMyQ291bnQsIEdMaW50IHZlYzJB
cnJheUNvdW50LCBHTGludCB2ZWMzQ291bnQsIEdMaW50IHZlYzNBcnJheUNvdW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHZlYzRDb3VudCwgR0xpbnQgdmVjNEFy
cmF5Q291bnQsIGJvb2wgdXNlRnJhZ0Nvb3JkLCBib29sIHVzZVBvaW50Q29vcmQsIGJvb2wgdXNl
UG9pbnRTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
KiBmcmFnbWVudFNoYWRlciwgc3RkOjpzdHJpbmcqIHZlcnRleFNoYWRlcikKLSAgICB7Ci0gICAg
ICAgIC8vIEdlbmVyYXRlIGEgc3RyaW5nIGRlY2xhcmluZyB0aGUgdmFyeWluZ3MsIHRvIHNoYXJl
IGJldHdlZW4gdGhlIGZyYWdtZW50IHNoYWRlciBhbmQgdGhlIHZlcnRleCBzaGFkZXIuCi0gICAg
ICAgIHN0ZDo6c3RyaW5nIHZhcnlpbmdEZWNsYXJhdGlvbjsKLQotICAgICAgICB1bnNpZ25lZCBp
bnQgdmFyeWluZ0NvdW50ID0gMDsKLQotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgZmxv
YXRDb3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXJ5aW5nRGVjbGFyYXRpb24g
Kz0gR2VuZXJhdGVWZWN0b3JWYXJ5aW5nRGVjbGFyYXRpb24oMSwgMSwgdmFyeWluZ0NvdW50KTsK
LSAgICAgICAgICAgIHZhcnlpbmdDb3VudCArPSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9y
IChHTGludCBpID0gMDsgaSA8IGZsb2F0QXJyYXlDb3VudDsgaSsrKQotICAgICAgICB7Ci0gICAg
ICAgICAgICB2YXJ5aW5nRGVjbGFyYXRpb24gKz0gR2VuZXJhdGVWZWN0b3JWYXJ5aW5nRGVjbGFy
YXRpb24oMSwgMiwgdmFyeWluZ0NvdW50KTsKLSAgICAgICAgICAgIHZhcnlpbmdDb3VudCArPSAx
OwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IHZlYzJDb3VudDsg
aSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXJ5aW5nRGVjbGFyYXRpb24gKz0gR2VuZXJh
dGVWZWN0b3JWYXJ5aW5nRGVjbGFyYXRpb24oMiwgMSwgdmFyeWluZ0NvdW50KTsKLSAgICAgICAg
ICAgIHZhcnlpbmdDb3VudCArPSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChHTGludCBp
ID0gMDsgaSA8IHZlYzJBcnJheUNvdW50OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZh
cnlpbmdEZWNsYXJhdGlvbiArPSBHZW5lcmF0ZVZlY3RvclZhcnlpbmdEZWNsYXJhdGlvbigyLCAy
LCB2YXJ5aW5nQ291bnQpOwotICAgICAgICAgICAgdmFyeWluZ0NvdW50ICs9IDE7Ci0gICAgICAg
IH0KLQotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjM0NvdW50OyBpKyspCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHZhcnlpbmdEZWNsYXJhdGlvbiArPSBHZW5lcmF0ZVZlY3RvclZh
cnlpbmdEZWNsYXJhdGlvbigzLCAxLCB2YXJ5aW5nQ291bnQpOwotICAgICAgICAgICAgdmFyeWlu
Z0NvdW50ICs9IDE7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwg
dmVjM0FycmF5Q291bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgdmFyeWluZ0RlY2xh
cmF0aW9uICs9IEdlbmVyYXRlVmVjdG9yVmFyeWluZ0RlY2xhcmF0aW9uKDMsIDIsIHZhcnlpbmdD
b3VudCk7Ci0gICAgICAgICAgICB2YXJ5aW5nQ291bnQgKz0gMTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCB2ZWM0Q291bnQ7IGkrKykKLSAgICAgICAgewotICAg
ICAgICAgICAgdmFyeWluZ0RlY2xhcmF0aW9uICs9IEdlbmVyYXRlVmVjdG9yVmFyeWluZ0RlY2xh
cmF0aW9uKDQsIDEsIHZhcnlpbmdDb3VudCk7Ci0gICAgICAgICAgICB2YXJ5aW5nQ291bnQgKz0g
MTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCB2ZWM0QXJyYXlD
b3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXJ5aW5nRGVjbGFyYXRpb24gKz0g
R2VuZXJhdGVWZWN0b3JWYXJ5aW5nRGVjbGFyYXRpb24oNCwgMiwgdmFyeWluZ0NvdW50KTsKLSAg
ICAgICAgICAgIHZhcnlpbmdDb3VudCArPSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gR2Vu
ZXJhdGUgdGhlIHZlcnRleCBzaGFkZXIKLSAgICAgICAgdmVydGV4U2hhZGVyLT5jbGVhcigpOwot
ICAgICAgICB2ZXJ0ZXhTaGFkZXItPmFwcGVuZCh2YXJ5aW5nRGVjbGFyYXRpb24pOwotICAgICAg
ICB2ZXJ0ZXhTaGFkZXItPmFwcGVuZCgiXG52b2lkIG1haW4oKVxue1xuIik7Ci0KLSAgICAgICAg
dW5zaWduZWQgaW50IGN1cnJlbnRWU1ZhcnlpbmcgPSAwOwotCi0gICAgICAgIGZvciAoR0xpbnQg
aSA9IDA7IGkgPCBmbG9hdENvdW50OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZlcnRl
eFNoYWRlci0+YXBwZW5kKEdlbmVyYXRlVmVjdG9yVmFyeWluZ1NldHRpbmdDb2RlKDEsIDEsIGN1
cnJlbnRWU1ZhcnlpbmcpKTsKLSAgICAgICAgICAgIGN1cnJlbnRWU1ZhcnlpbmcgKz0gMTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBmbG9hdEFycmF5Q291bnQ7
IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgdmVydGV4U2hhZGVyLT5hcHBlbmQoR2VuZXJh
dGVWZWN0b3JWYXJ5aW5nU2V0dGluZ0NvZGUoMSwgMiwgY3VycmVudFZTVmFyeWluZykpOwotICAg
ICAgICAgICAgY3VycmVudFZTVmFyeWluZyArPSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9y
IChHTGludCBpID0gMDsgaSA8IHZlYzJDb3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAg
ICB2ZXJ0ZXhTaGFkZXItPmFwcGVuZChHZW5lcmF0ZVZlY3RvclZhcnlpbmdTZXR0aW5nQ29kZSgy
LCAxLCBjdXJyZW50VlNWYXJ5aW5nKSk7Ci0gICAgICAgICAgICBjdXJyZW50VlNWYXJ5aW5nICs9
IDE7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjMkFycmF5
Q291bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgdmVydGV4U2hhZGVyLT5hcHBlbmQo
R2VuZXJhdGVWZWN0b3JWYXJ5aW5nU2V0dGluZ0NvZGUoMiwgMiwgY3VycmVudFZTVmFyeWluZykp
OwotICAgICAgICAgICAgY3VycmVudFZTVmFyeWluZyArPSAxOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZm9yIChHTGludCBpID0gMDsgaSA8IHZlYzNDb3VudDsgaSsrKQotICAgICAgICB7Ci0gICAg
ICAgICAgICB2ZXJ0ZXhTaGFkZXItPmFwcGVuZChHZW5lcmF0ZVZlY3RvclZhcnlpbmdTZXR0aW5n
Q29kZSgzLCAxLCBjdXJyZW50VlNWYXJ5aW5nKSk7Ci0gICAgICAgICAgICBjdXJyZW50VlNWYXJ5
aW5nICs9IDE7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVj
M0FycmF5Q291bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgdmVydGV4U2hhZGVyLT5h
cHBlbmQoR2VuZXJhdGVWZWN0b3JWYXJ5aW5nU2V0dGluZ0NvZGUoMywgMiwgY3VycmVudFZTVmFy
eWluZykpOwotICAgICAgICAgICAgY3VycmVudFZTVmFyeWluZyArPSAxOwotICAgICAgICB9Ci0K
LSAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IHZlYzRDb3VudDsgaSsrKQotICAgICAgICB7
Ci0gICAgICAgICAgICB2ZXJ0ZXhTaGFkZXItPmFwcGVuZChHZW5lcmF0ZVZlY3RvclZhcnlpbmdT
ZXR0aW5nQ29kZSg0LCAxLCBjdXJyZW50VlNWYXJ5aW5nKSk7Ci0gICAgICAgICAgICBjdXJyZW50
VlNWYXJ5aW5nICs9IDE7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBp
IDwgdmVjNEFycmF5Q291bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgdmVydGV4U2hh
ZGVyLT5hcHBlbmQoR2VuZXJhdGVWZWN0b3JWYXJ5aW5nU2V0dGluZ0NvZGUoNCwgMiwgY3VycmVu
dFZTVmFyeWluZykpOwotICAgICAgICAgICAgY3VycmVudFZTVmFyeWluZyArPSAxOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKHVzZVBvaW50U2l6ZSkKLSAgICAgICAgewotICAgICAgICAgICAg
dmVydGV4U2hhZGVyLT5hcHBlbmQoImdsX1BvaW50U2l6ZSA9IDEuMDtcbiIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdmVydGV4U2hhZGVyLT5hcHBlbmQoIn1cbiIpOwotCi0gICAgICAgIC8vIEdl
bmVyYXRlIHRoZSBmcmFnbWVudCBzaGFkZXIKLSAgICAgICAgZnJhZ21lbnRTaGFkZXItPmNsZWFy
KCk7Ci0gICAgICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoInByZWNpc2lvbiBoaWdocCBmbG9h
dDtcbiIpOwotICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKHZhcnlpbmdEZWNsYXJhdGlv
bik7Ci0gICAgICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoIlxudm9pZCBtYWluKCkgXG57IFxu
XHR2ZWM0IHJldENvbG9yID0gdmVjNCgwLDAsMCwwKTtcbiIpOwotCi0gICAgICAgIHVuc2lnbmVk
IGludCBjdXJyZW50RlNWYXJ5aW5nID0gMDsKLQotICAgICAgICAvLyBNYWtlIHVzZSBvZiB0aGUg
ZmxvYXQgdmFyeWluZ3MKLSAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZCgiXHRyZXRDb2xv
ciArPSB2ZWM0KCIpOwotCi0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBmbG9hdENvdW50
OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoR2Vu
ZXJhdGVWZWN0b3JWYXJ5aW5nVXNlQ29kZSgxLCBjdXJyZW50RlNWYXJ5aW5nKSk7Ci0gICAgICAg
ICAgICBjdXJyZW50RlNWYXJ5aW5nICs9IDE7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKEdM
aW50IGkgPSAwOyBpIDwgZmxvYXRBcnJheUNvdW50OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoR2VuZXJhdGVWZWN0b3JWYXJ5aW5nVXNlQ29kZSgy
LCBjdXJyZW50RlNWYXJ5aW5nKSk7Ci0gICAgICAgICAgICBjdXJyZW50RlNWYXJ5aW5nICs9IDE7
Ci0gICAgICAgIH0KLQotICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKCIwLjAsIDAuMCwg
MC4wLCAwLjApO1xuIik7Ci0KLSAgICAgICAgLy8gTWFrZSB1c2Ugb2YgdGhlIHZlYzIgdmFyeWlu
Z3MKLSAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZCgiXHRyZXRDb2xvciArPSB2ZWM0KCIp
OwotCi0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCB2ZWMyQ291bnQ7IGkrKykKLSAgICAg
ICAgewotICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZChHZW5lcmF0ZVZlY3RvclZh
cnlpbmdVc2VDb2RlKDEsIGN1cnJlbnRGU1ZhcnlpbmcpKTsKLSAgICAgICAgICAgIGN1cnJlbnRG
U1ZhcnlpbmcgKz0gMTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkg
PCB2ZWMyQXJyYXlDb3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBmcmFnbWVudFNo
YWRlci0+YXBwZW5kKEdlbmVyYXRlVmVjdG9yVmFyeWluZ1VzZUNvZGUoMiwgY3VycmVudEZTVmFy
eWluZykpOwotICAgICAgICAgICAgY3VycmVudEZTVmFyeWluZyArPSAxOwotICAgICAgICB9Ci0K
LSAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZCgidmVjMigwLjAsIDAuMCksIDAuMCwgMC4w
KTtcbiIpOwotCi0gICAgICAgIC8vIE1ha2UgdXNlIG9mIHRoZSB2ZWMzIHZhcnlpbmdzCi0gICAg
ICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoIlx0cmV0Q29sb3IgKz0gdmVjNCgiKTsKLQotICAg
ICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjM0NvdW50OyBpKyspCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoR2VuZXJhdGVWZWN0b3JWYXJ5aW5nVXNl
Q29kZSgxLCBjdXJyZW50RlNWYXJ5aW5nKSk7Ci0gICAgICAgICAgICBjdXJyZW50RlNWYXJ5aW5n
ICs9IDE7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjM0Fy
cmF5Q291bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFw
cGVuZChHZW5lcmF0ZVZlY3RvclZhcnlpbmdVc2VDb2RlKDIsIGN1cnJlbnRGU1ZhcnlpbmcpKTsK
LSAgICAgICAgICAgIGN1cnJlbnRGU1ZhcnlpbmcgKz0gMTsKLSAgICAgICAgfQotCi0gICAgICAg
IGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoInZlYzMoMC4wLCAwLjAsIDAuMCksIDAuMCk7XG4iKTsK
LQotICAgICAgICAvLyBNYWtlIHVzZSBvZiB0aGUgdmVjNCB2YXJ5aW5ncwotICAgICAgICBmcmFn
bWVudFNoYWRlci0+YXBwZW5kKCJcdHJldENvbG9yICs9ICIpOwotCi0gICAgICAgIGZvciAoR0xp
bnQgaSA9IDA7IGkgPCB2ZWM0Q291bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgZnJh
Z21lbnRTaGFkZXItPmFwcGVuZChHZW5lcmF0ZVZlY3RvclZhcnlpbmdVc2VDb2RlKDEsIGN1cnJl
bnRGU1ZhcnlpbmcpKTsKLSAgICAgICAgICAgIGN1cnJlbnRGU1ZhcnlpbmcgKz0gMTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCB2ZWM0QXJyYXlDb3VudDsgaSsr
KQotICAgICAgICB7Ci0gICAgICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKEdlbmVyYXRl
VmVjdG9yVmFyeWluZ1VzZUNvZGUoMiwgY3VycmVudEZTVmFyeWluZykpOwotICAgICAgICAgICAg
Y3VycmVudEZTVmFyeWluZyArPSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgZnJhZ21lbnRTaGFk
ZXItPmFwcGVuZCgidmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApO1xuIik7Ci0KLSAgICAgICAgLy8g
U2V0IGdsX0ZyYWdDb2xvciwgYW5kIHVzZSBzcGVjaWFsIHZhcmlhYmxlcyBpZiByZXF1ZXN0ZWQK
LSAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZCgiXHRnbF9GcmFnQ29sb3IgPSByZXRDb2xv
ciIpOwotICAgICAgICAKLSAgICAgICAgaWYgKHVzZUZyYWdDb29yZCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZCgiICsgZ2xfRnJhZ0Nvb3JkIik7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAodXNlUG9pbnRDb29yZCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZCgiICsgdmVjNChnbF9Qb2ludENvb3JkLCAwLjAsIDAu
MCkiKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoIjtcbn0i
KTsKLSAgICB9Ci0KLSAgICB2b2lkIFZhcnlpbmdUZXN0QmFzZShHTGludCBmbG9hdENvdW50LCBH
TGludCBmbG9hdEFycmF5Q291bnQsIEdMaW50IHZlYzJDb3VudCwgR0xpbnQgdmVjMkFycmF5Q291
bnQsIEdMaW50IHZlYzNDb3VudCwgR0xpbnQgdmVjM0FycmF5Q291bnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgdmVjNENvdW50LCBHTGludCB2ZWM0QXJyYXlDb3VudCwgYm9vbCB1
c2VGcmFnQ29vcmQsIGJvb2wgdXNlUG9pbnRDb29yZCwgYm9vbCB1c2VQb2ludFNpemUsIGJvb2wg
ZXhwZWN0U3VjY2VzcykKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVy
U291cmNlOwotICAgICAgICBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2U7Ci0KLSAgICAg
ICAgR2VuZXJhdGVHTFNMV2l0aFZhcnlpbmdzKGZsb2F0Q291bnQsIGZsb2F0QXJyYXlDb3VudCwg
dmVjMkNvdW50LCB2ZWMyQXJyYXlDb3VudCwgdmVjM0NvdW50LCB2ZWMzQXJyYXlDb3VudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlYzRDb3VudCwgdmVjNEFycmF5Q291bnQs
IHVzZUZyYWdDb29yZCwgdXNlUG9pbnRDb29yZCwgdXNlUG9pbnRTaXplLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJmZyYWdtZW50U2hhZGVyU291cmNlLCAmdmVydGV4U2hhZGVy
U291cmNlKTsKLQotICAgICAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRl
eFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotCi0gICAgICAgIGlmIChleHBl
Y3RTdWNjZXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0p
OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgRVhQRUNU
X0VRKDB1LCBwcm9ncmFtKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgQ29tcGlsZUdM
U0xXaXRoVW5pZm9ybXNBbmRTYW1wbGVycyhHTGludCB2ZXJ0ZXhVbmlmb3JtQ291bnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZyYWdtZW50VW5p
Zm9ybUNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCB2ZXJ0ZXhTYW1wbGVyc0NvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBmcmFnbWVudFNhbXBsZXJzQ291bnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZXhwZWN0U3VjY2VzcykKLSAgICB7
Ci0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHZlcnRleFNoYWRlcjsKLSAgICAgICAgc3RkOjpz
dHJpbmdzdHJlYW0gZnJhZ21lbnRTaGFkZXI7Ci0KLSAgICAgICAgLy8gR2VuZXJhdGUgdGhlIHZl
cnRleCBzaGFkZXIKLSAgICAgICAgdmVydGV4U2hhZGVyIDw8ICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiI7Ci0KLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2ZXJ0ZXhVbmlmb3JtQ291
bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgdmVydGV4U2hhZGVyIDw8ICJ1bmlmb3Jt
IHZlYzQgdiIgPDwgaSA8PCAiO1xuIjsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgdmVydGV4U2FtcGxlcnNDb3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAg
ICB2ZXJ0ZXhTaGFkZXIgPDwgInVuaWZvcm0gc2FtcGxlcjJEIHMiIDw8IGkgPDwgIjtcbiI7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2ZXJ0ZXhTaGFkZXIgPDwgInZvaWQgbWFpbigpXG57XG4iOwot
Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmVydGV4VW5pZm9ybUNvdW50OyBpKyspCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHZlcnRleFNoYWRlciA8PCAiICAgIGdsX1Bvc2l0aW9uICs9
ICB2IiA8PCBpIDw8ICI7XG4iOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCB2ZXJ0ZXhTYW1wbGVyc0NvdW50OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZl
cnRleFNoYWRlciA8PCAiICAgIGdsX1Bvc2l0aW9uICs9ICB0ZXh0dXJlMkQocyIgPDwgaSA8PCAi
LCB2ZWMyKDAuMCwgMC4wKSk7XG4iOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHZlcnRleFVu
aWZvcm1Db3VudCA9PSAwICYmIHZlcnRleFNhbXBsZXJzQ291bnQgPT0gMCkKLSAgICAgICAgewot
ICAgICAgICAgICAgdmVydGV4U2hhZGVyIDw8ICIgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMC4wKTtc
biI7Ci0gICAgICAgIH0KLQotICAgICAgICB2ZXJ0ZXhTaGFkZXIgPDwgIn1cbiI7Ci0KLSAgICAg
ICAgLy8gR2VuZXJhdGUgdGhlIGZyYWdtZW50IHNoYWRlcgotICAgICAgICBmcmFnbWVudFNoYWRl
ciA8PCAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iOwotCi0gICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgZnJhZ21lbnRVbmlmb3JtQ291bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAg
ICAgZnJhZ21lbnRTaGFkZXIgPDwgInVuaWZvcm0gdmVjNCB2IiA8PCBpIDw8ICI7XG4iOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFnbWVudFNhbXBsZXJzQ291
bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXIgPDwgInVuaWZv
cm0gc2FtcGxlcjJEIHMiIDw8IGkgPDwgIjtcbiI7Ci0gICAgICAgIH0KLQotICAgICAgICBmcmFn
bWVudFNoYWRlciA8PCAidm9pZCBtYWluKClcbntcbiI7Ci0KLSAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBmcmFnbWVudFVuaWZvcm1Db3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBmcmFnbWVudFNoYWRlciA8PCAiICAgIGdsX0ZyYWdDb2xvciArPSAgdiIgPDwgaSA8PCAiO1xu
IjsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJhZ21lbnRTYW1w
bGVyc0NvdW50OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyIDw8
ICIgICAgZ2xfRnJhZ0NvbG9yICs9ICB0ZXh0dXJlMkQocyIgPDwgaSA8PCAiLCB2ZWMyKDAuMCwg
MC4wKSk7XG4iOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGZyYWdtZW50VW5pZm9ybUNvdW50
ID09IDAgJiYgZnJhZ21lbnRTYW1wbGVyc0NvdW50ID09IDApCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGZyYWdtZW50U2hhZGVyIDw8ICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEuMCwg
MC4wLCAxLjApO1xuIjsKLSAgICAgICAgfQotCi0gICAgICAgIGZyYWdtZW50U2hhZGVyIDw8ICJ9
XG4iOwotCi0gICAgICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hh
ZGVyLnN0cigpLCBmcmFnbWVudFNoYWRlci5zdHIoKSk7Ci0KLSAgICAgICAgaWYgKGV4cGVjdFN1
Y2Nlc3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEo
MHUsIHByb2dyYW0pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgbVNpbXBs
ZVZTU291cmNlOwotfTsKLQotY2xhc3MgR0xTTFRlc3RfRVMzIDogcHVibGljIEdMU0xUZXN0Ci17
Ci0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNl
dFVwKCk7Ci0KLSAgICAgICAgbVNpbXBsZVZTU291cmNlID0KLSAgICAgICAgICAgICIjdmVyc2lv
biAzMDAgZXNcbiIKLSAgICAgICAgICAgICJpbiB2ZWM0IGlucHV0QXR0cmlidXRlOyIKLSAgICAg
ICAgICAgICJ2b2lkIG1haW4oKSIKLSAgICAgICAgICAgICJ7IgotICAgICAgICAgICAgIiAgICBn
bF9Qb3NpdGlvbiA9IGlucHV0QXR0cmlidXRlOyIKLSAgICAgICAgICAgICJ9IjsKLSAgICB9Ci19
OwotCi1URVNUX1AoR0xTTFRlc3QsIE5hbWVsZXNzU2NvcGVkU3RydWN0cykKLXsKLSAgICBjb25z
dCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAo
Ci0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotCi0gICAgICAgIHZvaWQgbWFpbigp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cnVjdAotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGZsb2F0IHE7Ci0gICAgICAgICAgICB9IGI7Ci0KLSAgICAgICAgICAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQoMSwgMCwgMCwgMSk7Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3IuYSArPSBi
LnE7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJv
Z3JhbShtU2ltcGxlVlNTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBFWFBFQ1Rf
TkUoMHUsIHByb2dyYW0pOwotfQotCi1URVNUX1AoR0xTTFRlc3QsIFNjb3BlZFN0cnVjdHNPcmRl
ckJ1ZykKLXsKLSAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IEZpbmQgb3V0IHdoeSB0aGlzIGRvZXNu
J3QgY29tcGlsZSBvbiBBcHBsZSBPcGVuR0wgZHJpdmVycwotICAgIC8vIChodHRwOi8vYW5nbGVi
dWcuY29tLzEyOTIpCi0gICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaW5kIG91dCB3aHkgdGhpcyBk
b2Vzbid0IGNvbXBpbGUgb24gQU1EIE9wZW5HTCBkcml2ZXJzCi0gICAgLy8gKGh0dHA6Ly9hbmds
ZWJ1Zy5jb20vMTI5MSkKLSAgICBpZiAoSXNEZXNrdG9wT3BlbkdMKCkgJiYgKElzT1NYKCkgfHwg
IUlzTlZJRElBKCkpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVk
IG9uIHRoaXMgT3BlbkdMIGNvbmZpZ3VyYXRpb24uIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJj
ZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OwotCi0gICAgICAgIHN0cnVjdCBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0IGY7Ci0g
ICAgICAgIH07Ci0KLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAg
VCBhOwotCi0gICAgICAgICAgICBzdHJ1Y3QgVAotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGZsb2F0IHE7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBUIGI7Ci0KLSAgICAg
ICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMSwgMCwgMCwgMSk7Ci0gICAgICAgICAgICBnbF9G
cmFnQ29sb3IuYSArPSBhLmY7Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3IuYSArPSBiLnE7Ci0g
ICAgICAgIH0KLSAgICApOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSht
U2ltcGxlVlNTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBFWFBFQ1RfTkUoMHUs
IHByb2dyYW0pOwotfQotCi1URVNUX1AoR0xTTFRlc3QsIFNjb3BlZFN0cnVjdHNCdWcpCi17Ci0g
ICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNF
Ci0gICAgKAotICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLQotICAgICAgICBzdHJ1
Y3QgVF8wCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0IGY7Ci0gICAgICAgIH07Ci0KLSAg
ICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNCgxLCAwLCAwLCAxKTsKLQotICAgICAgICAgICAgc3RydWN0IFQKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICB2ZWMyIHY7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBU
XzAgYTsKLSAgICAgICAgICAgIFQgYjsKLQotICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yLmEgKz0g
YS5mOwotICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yLmEgKz0gYi52Lng7Ci0gICAgICAgIH0KLSAg
ICApOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShtU2ltcGxlVlNTb3Vy
Y2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwot
fQotCi1URVNUX1AoR0xTTFRlc3QsIER4UG9zaXRpb25CdWcpCi17Ci0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnZlcnRleFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAg
IGF0dHJpYnV0ZSB2ZWM0IGlucHV0QXR0cmlidXRlOwotICAgICAgICB2YXJ5aW5nIGZsb2F0IGR4
X1Bvc2l0aW9uOwotICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBn
bF9Qb3NpdGlvbiA9IHZlYzQoaW5wdXRBdHRyaWJ1dGUpOwotICAgICAgICAgICAgZHhfUG9zaXRp
b24gPSAwLjA7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZy
YWdtZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7Ci0KLSAgICAgICAgdmFyeWluZyBmbG9hdCBkeF9Qb3NpdGlvbjsK
LQotICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KGR4X1Bvc2l0aW9uLCAwLCAwLCAxKTsKLSAgICAgICAgfQotICAgICk7Ci0KLSAg
ICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJh
Z21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Ci19Ci0KLVRF
U1RfUChHTFNMVGVzdCwgRWxzZUlmUmV3cml0aW5nKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZ2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlv
bjtcbiIKLSAgICAgICAgInZhcnlpbmcgZmxvYXQgdjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uO1xuIgotICAgICAgICAi
ICB2ID0gMS4wO1xuIgotICAgICAgICAiICBpZiAoYV9wb3NpdGlvbi54IDw9IDAuNSkge1xuIgot
ICAgICAgICAiICAgIHYgPSAwLjA7XG4iCi0gICAgICAgICIgIH0gZWxzZSBpZiAoYV9wb3NpdGlv
bi54ID49IDAuNSkge1xuIgotICAgICAgICAiICAgIHYgPSAyLjA7XG4iCi0gICAgICAgICIgIH1c
biIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFk
ZXJTb3VyY2UgPQotICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAi
dmFyeWluZyBmbG9hdCB2O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAi
ICB2ZWM0IGNvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApO1xuIgotICAgICAgICAiICBp
ZiAodiA+PSAxLjApIGNvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApO1xuIgotICAgICAg
ICAiICBpZiAodiA+PSAyLjApIGNvbG9yID0gdmVjNCgwLjAsIDAuMCwgMS4wLCAxLjApO1xuIgot
ICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSBjb2xvcjtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAg
ICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJh
Z21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEFTU0VSVF9ORSgwdSwgcHJvZ3JhbSk7Ci0KLSAgICBk
cmF3UXVhZChwcm9ncmFtLCAiYV9wb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgRVhQRUNUX1BJWEVM
X0VRKDAsIDAsIDI1NSwgMCwgMCwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0V2luZG93
V2lkdGgoKS0xLCAwLCAwLCAyNTUsIDAsIDI1NSk7Ci19Ci0KLVRFU1RfUChHTFNMVGVzdCwgVHdv
RWxzZUlmUmV3cml0aW5nKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhTaGFkZXJT
b3VyY2UgPQotICAgICAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjtcbiIKLSAgICAgICAg
InZhcnlpbmcgZmxvYXQgdjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAg
IiAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uO1xuIgotICAgICAgICAiICBpZiAoYV9wb3NpdGlv
bi54ID09IDAuMCkge1xuIgotICAgICAgICAiICAgIHYgPSAxLjA7XG4iCi0gICAgICAgICIgIH0g
ZWxzZSBpZiAoYV9wb3NpdGlvbi54ID4gMC41KSB7XG4iCi0gICAgICAgICIgICAgdiA9IDAuMDtc
biIKLSAgICAgICAgIiAgfSBlbHNlIGlmIChhX3Bvc2l0aW9uLnggPiAwLjc1KSB7XG4iCi0gICAg
ICAgICIgICAgdiA9IDAuNTtcbiIKLSAgICAgICAgIiAgfVxuIgotICAgICAgICAifVxuIjsKLQot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJw
cmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCi0gICAgICAgICJ2YXJ5aW5nIGZsb2F0IHY7XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
diwgMC4wLCAwLjAsIDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgR0x1aW50IHByb2dy
YW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291
cmNlKTsKLSAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwotfQotCi1URVNUX1AoR0xTTFRlc3Qs
IEZyb250RmFjaW5nQW5kVmFyeWluZykKLXsKLSAgICBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgcGxh
dGZvcm0gPSBHZXRQYXJhbSgpLmVnbFBhcmFtZXRlcnM7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBhdHRy
aWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOwotICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZzsK
LSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgdl92YXJ5aW5nID0g
YV9wb3NpdGlvbi54OwotICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOwotICAg
ICAgICB9Ci0gICAgKTsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291
cmNlID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7Ci0gICAgICAgIHZhcnlpbmcgZmxvYXQgdl92YXJ5aW5nOwotICAgICAgICB2b2lkIG1haW4o
KQotICAgICAgICB7Ci0gICAgICAgICAgICB2ZWM0IGM7Ci0KLSAgICAgICAgICAgIGlmIChnbF9G
cm9udEZhY2luZykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjID0gdmVjNCh2X3Zh
cnlpbmcsIDAsIDAsIDEuMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYyA9IHZlYzQoMCwgdl92YXJ5aW5nLCAwLCAxLjAp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gYzsKLSAgICAgICAg
fQotICAgICk7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNo
YWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotCi0gICAgLy8gQ29tcGlsYXRpb24g
c2hvdWxkIGZhaWwgb24gRDNEMTEgZmVhdHVyZSBsZXZlbCA5XzMsIHNpbmNlIGdsX0Zyb250RmFj
aW5nIGlzbid0IHN1cHBvcnRlZC4KLSAgICBpZiAocGxhdGZvcm0ucmVuZGVyZXIgPT0gRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpCi0gICAgewotICAgICAgICBpZiAocGxhdGZv
cm0ubWFqb3JWZXJzaW9uID09IDkgJiYgcGxhdGZvcm0ubWlub3JWZXJzaW9uID09IDMpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEVYUEVDVF9FUSgwdSwgcHJvZ3JhbSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBPdGhlcndpc2UsIGNvbXBpbGF0aW9u
IHNob3VsZCBzdWNjZWVkCi0gICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKLX0KLQotLy8gVmVy
aWZ5IHRoYXQgbGlua2luZyBzaGFkZXJzIGRlY2xhcmluZyBkaWZmZXJlbnQgc2hhZGluZyBsYW5n
dWFnZSB2ZXJzaW9ucyBmYWlscy4KLVRFU1RfUChHTFNMVGVzdF9FUzMsIFZlcnNpb25NaXNtYXRj
aCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZTEwMCA9Ci0g
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZhcnlpbmcgZmxv
YXQgdl92YXJ5aW5nO1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2
ZWM0KHZfdmFyeWluZywgMCwgMCwgMS4wKTsgfVxuIjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IHZlcnRleFNoYWRlclNvdXJjZTEwMCA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0
aW9uO1xuIgotICAgICAgICAidmFyeWluZyBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJ2
b2lkIG1haW4oKSB7IHZfdmFyeWluZyA9IGFfcG9zaXRpb24ueDsgZ2xfUG9zaXRpb24gPSBhX3Bv
c2l0aW9uOyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3Vy
Y2UzMDAgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImluIGZsb2F0IHZfdmFyeWluZztcbiIKLSAgICAg
ICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHsgbXlf
RnJhZ0NvbG9yID0gdmVjNCh2X3ZhcnlpbmcsIDAsIDAsIDEuMCk7IH1cbiI7Ci0KLSAgICBjb25z
dCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UzMDAgPQotICAgICAgICAiI3ZlcnNpb24g
MzAwIGVzXG4iCi0gICAgICAgICJpbiB2ZWM0IGFfcG9zaXRpb247XG4iCi0gICAgICAgICJvdXQg
ZmxvYXQgdl92YXJ5aW5nO1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyB2X3ZhcnlpbmcgPSBh
X3Bvc2l0aW9uLng7IGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsgfVxuIjsKLQotICAgIEdMdWlu
dCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlMzAwLCBmcmFnbWVu
dFNoYWRlclNvdXJjZTEwMCk7Ci0gICAgRVhQRUNUX0VRKDB1LCBwcm9ncmFtKTsKLQotICAgIHBy
b2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UxMDAsIGZyYWdtZW50U2hh
ZGVyU291cmNlMzAwKTsKLSAgICBFWFBFQ1RfRVEoMHUsIHByb2dyYW0pOwotfQotCi0vLyBWZXJp
ZnkgdGhhdCBkZWNsYXJpbmcgdmFyeWluZyBhcyBpbnZhcmlhbnQgb25seSBpbiB2ZXJ0ZXggc2hh
ZGVyIGZhaWxzIGluIEVTU0wgMS4wMC4KLVRFU1RfUChHTFNMVGVzdCwgSW52YXJpYW50VmFyeWlu
Z091dCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0g
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZhcnlpbmcgZmxv
YXQgdl92YXJ5aW5nO1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2
ZWM0KHZfdmFyeWluZywgMCwgMCwgMS4wKTsgfVxuIjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IHZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9u
O1xuIgotICAgICAgICAiaW52YXJpYW50IHZhcnlpbmcgZmxvYXQgdl92YXJ5aW5nO1xuIgotICAg
ICAgICAidm9pZCBtYWluKCkgeyB2X3ZhcnlpbmcgPSBhX3Bvc2l0aW9uLng7IGdsX1Bvc2l0aW9u
ID0gYV9wb3NpdGlvbjsgfVxuIjsKLQotICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dy
YW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgRVhQRUNU
X0VRKDB1LCBwcm9ncmFtKTsKLX0KLQotLy8gVmVyaWZ5IHRoYXQgZGVjbGFyaW5nIHZhcnlpbmcg
YXMgaW52YXJpYW50IG9ubHkgaW4gdmVydGV4IHNoYWRlciBzdWNjZWVkcyBpbiBFU1NMIDMuMDAu
Ci1URVNUX1AoR0xTTFRlc3RfRVMzLCBJbnZhcmlhbnRWYXJ5aW5nT3V0KQotewotICAgIC8vIFRP
RE86IEVTU0wgMy4wMCAtPiBHTFNMIDEuMjAgdHJhbnNsYXRpb24gc2hvdWxkIGFkZCAiaW52YXJp
YW50IiBpbiBmcmFnbWVudCBzaGFkZXIKLSAgICAvLyBmb3IgdmFyeWluZ3Mgd2hpY2ggYXJlIGlu
dmFyaWFudCBpbiB2ZXJ0ZXggc2hhZGVyIChodHRwOi8vYW5nbGVidWcuY29tLzEyOTMpCi0gICAg
aWYgKElzRGVza3RvcE9wZW5HTCgpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IGRpc2FibGVkIG9uIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KLSAgICAg
ICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCi0gICAgICAgICJpbiBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJvdXQgdmVjNCBt
eV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IG15X0ZyYWdDb2xvciA9IHZl
YzQodl92YXJ5aW5nLCAwLCAwLCAxLjApOyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
dmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAg
ICAiaW4gdmVjNCBhX3Bvc2l0aW9uO1xuIgotICAgICAgICAiaW52YXJpYW50IG91dCBmbG9hdCB2
X3Zhcnlpbmc7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IHZfdmFyeWluZyA9IGFfcG9zaXRp
b24ueDsgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOyB9XG4iOwotCi0gICAgR0x1aW50IHByb2dy
YW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291
cmNlKTsKLSAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwotfQotCi0vLyBWZXJpZnkgdGhhdCBk
ZWNsYXJpbmcgdmFyeWluZyBhcyBpbnZhcmlhbnQgb25seSBpbiBmcmFnbWVudCBzaGFkZXIgZmFp
bHMgaW4gRVNTTCAxLjAwLgotVEVTVF9QKEdMU0xUZXN0LCBJbnZhcmlhbnRWYXJ5aW5nSW4pCi17
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJpbnZhcmlhbnQgdmFyeWluZyBm
bG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9
IHZlYzQodl92YXJ5aW5nLCAwLCAwLCAxLjApOyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgdmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRp
b247XG4iCi0gICAgICAgICJ2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpIHsgdl92YXJ5aW5nID0gYV9wb3NpdGlvbi54OyBnbF9Qb3NpdGlvbiA9IGFfcG9z
aXRpb247IH1cbiI7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRl
eFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9FUSgwdSwg
cHJvZ3JhbSk7Ci19Ci0KLS8vIFZlcmlmeSB0aGF0IGRlY2xhcmluZyB2YXJ5aW5nIGFzIGludmFy
aWFudCBvbmx5IGluIGZyYWdtZW50IHNoYWRlciBmYWlscyBpbiBFU1NMIDMuMDAuCi1URVNUX1Ao
R0xTTFRlc3RfRVMzLCBJbnZhcmlhbnRWYXJ5aW5nSW4pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0g
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImludmFyaWFudCBp
biBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7IG15X0ZyYWdDb2xvciA9IHZlYzQodl92YXJ5aW5nLCAw
LCAwLCAxLjApOyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291
cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAiaW4gdmVjNCBhX3Bv
c2l0aW9uO1xuIgotICAgICAgICAib3V0IGZsb2F0IHZfdmFyeWluZztcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpIHsgdl92YXJ5aW5nID0gYV9wb3NpdGlvbi54OyBnbF9Qb3NpdGlvbiA9IGFfcG9z
aXRpb247IH1cbiI7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRl
eFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9FUSgwdSwg
cHJvZ3JhbSk7Ci19Ci0KLS8vIFZlcmlmeSB0aGF0IGRlY2xhcmluZyB2YXJ5aW5nIGFzIGludmFy
aWFudCBpbiBib3RoIHNoYWRlcnMgc3VjY2VlZHMgaW4gRVNTTCAxLjAwLgotVEVTVF9QKEdMU0xU
ZXN0LCBJbnZhcmlhbnRWYXJ5aW5nQm90aCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFn
bWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
LSAgICAgICAgImludmFyaWFudCB2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKLSAgICAgICAg
InZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2X3ZhcnlpbmcsIDAsIDAsIDEuMCk7
IH1cbiI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAg
ICAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjtcbiIKLSAgICAgICAgImludmFyaWFudCB2
YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHsgdl92YXJ5
aW5nID0gYV9wb3NpdGlvbi54OyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247IH1cbiI7Ci0KLSAg
ICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJh
Z21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Ci19Ci0KLS8v
IFZlcmlmeSB0aGF0IGRlY2xhcmluZyB2YXJ5aW5nIGFzIGludmFyaWFudCBpbiBib3RoIHNoYWRl
cnMgZmFpbHMgaW4gRVNTTCAzLjAwLgotVEVTVF9QKEdMU0xUZXN0X0VTMywgSW52YXJpYW50VmFy
eWluZ0JvdGgpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2Ug
PQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKLSAgICAgICAgImludmFyaWFudCBpbiBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0g
ICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7
IG15X0ZyYWdDb2xvciA9IHZlYzQodl92YXJ5aW5nLCAwLCAwLCAxLjApOyB9XG4iOwotCi0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9u
IDMwMCBlc1xuIgotICAgICAgICAiaW4gdmVjNCBhX3Bvc2l0aW9uO1xuIgotICAgICAgICAiaW52
YXJpYW50IG91dCBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IHZf
dmFyeWluZyA9IGFfcG9zaXRpb24ueDsgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOyB9XG4iOwot
Ci0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2Us
IGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBFWFBFQ1RfRVEoMHUsIHByb2dyYW0pOwotfQot
Ci0vLyBWZXJpZnkgdGhhdCBkZWNsYXJpbmcgZ2xfUG9zaXRpb24gYXMgaW52YXJpYW50IHN1Y2Nl
ZWRzIGluIEVTU0wgMS4wMC4KLVRFU1RfUChHTFNMVGVzdCwgSW52YXJpYW50R0xQb3NpdGlvbikK
LXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZhcnlpbmcgZmxvYXQgdl92
YXJ5aW5nO1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZf
dmFyeWluZywgMCwgMCwgMS4wKTsgfVxuIjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRl
eFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uO1xuIgot
ICAgICAgICAiaW52YXJpYW50IGdsX1Bvc2l0aW9uO1xuIgotICAgICAgICAidmFyeWluZyBmbG9h
dCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IHZfdmFyeWluZyA9IGFfcG9z
aXRpb24ueDsgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOyB9XG4iOwotCi0gICAgR0x1aW50IHBy
b2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVy
U291cmNlKTsKLSAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwotfQotCi0vLyBWZXJpZnkgdGhh
dCBkZWNsYXJpbmcgZ2xfUG9zaXRpb24gYXMgaW52YXJpYW50IHN1Y2NlZWRzIGluIEVTU0wgMy4w
MC4KLVRFU1RfUChHTFNMVGVzdF9FUzMsIEludmFyaWFudEdMUG9zaXRpb24pCi17Ci0gICAgY29u
c3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAiI3ZlcnNpb24g
MzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAg
ImluIGZsb2F0IHZfdmFyeWluZztcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtc
biIKLSAgICAgICAgInZvaWQgbWFpbigpIHsgbXlfRnJhZ0NvbG9yID0gdmVjNCh2X3Zhcnlpbmcs
IDAsIDAsIDEuMCk7IH1cbiI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJT
b3VyY2UgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJpbiB2ZWM0IGFf
cG9zaXRpb247XG4iCi0gICAgICAgICJpbnZhcmlhbnQgZ2xfUG9zaXRpb247XG4iCi0gICAgICAg
ICJvdXQgZmxvYXQgdl92YXJ5aW5nO1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyB2X3Zhcnlp
bmcgPSBhX3Bvc2l0aW9uLng7IGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsgfVxuIjsKLQotICAg
IEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFn
bWVudFNoYWRlclNvdXJjZSk7Ci0gICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKLX0KLQotLy8g
VmVyaWZ5IHRoYXQgdXNpbmcgaW52YXJpYW50KGFsbCkgaW4gYm90aCBzaGFkZXJzIHN1Y2NlZWRz
IGluIEVTU0wgMS4wMC4KLVRFU1RfUChHTFNMVGVzdCwgSW52YXJpYW50QWxsQm90aCkKLXsKLSAg
ICAvLyBUT0RPOiBFU1NMIDEuMDAgLT4gR0xTTCAxLjIwIHRyYW5zbGF0aW9uIHNob3VsZCBhZGQg
ImludmFyaWFudCIgaW4gZnJhZ21lbnQgc2hhZGVyCi0gICAgLy8gZm9yIHZhcnlpbmdzIHdoaWNo
IGFyZSBpbnZhcmlhbnQgaW4gdmVydGV4IHNoYWRlciBpbmRpdmlkdWFsbHksCi0gICAgLy8gYW5k
IHJlbW92ZSBpbnZhcmlhbnQoYWxsKSBmcm9tIGZyYWdtZW50IHNoYWRlciAoaHR0cDovL2FuZ2xl
YnVnLmNvbS8xMjkzKQotICAgIGlmIChJc0Rlc2t0b3BPcGVuR0woKSkKLSAgICB7Ci0gICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNo
YWRlclNvdXJjZSA9Ci0gICAgICAgICIjcHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpXG4iCi0g
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZhcnlpbmcgZmxv
YXQgdl92YXJ5aW5nO1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2
ZWM0KHZfdmFyeWluZywgMCwgMCwgMS4wKTsgfVxuIjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IHZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIjcHJhZ21hIFNUREdMIGludmFyaWFudChh
bGwpXG4iCi0gICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uO1xuIgotICAgICAgICAi
dmFyeWluZyBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IHZfdmFy
eWluZyA9IGFfcG9zaXRpb24ueDsgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOyB9XG4iOwotCi0g
ICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZy
YWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwotfQotCi0v
LyBWZXJpZnkgdGhhdCBmdW5jdGlvbnMgd2l0aG91dCByZXR1cm4gc3RhdGVtZW50cyBzdGlsbCBj
b21waWxlCi1URVNUX1AoR0xTTFRlc3QsIE1pc3NpbmdSZXR1cm5GbG9hdCkKLXsKLSAgICBjb25z
dCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAidmFyeWluZyBmbG9h
dCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJmbG9hdCBmKCkgeyBpZiAodl92YXJ5aW5nID4gMC4w
KSByZXR1cm4gMS4wOyB9XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9uID0g
dmVjNChmKCksIDAsIDAsIDEpOyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21l
bnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwgMCwgMCwgMSk7IH1c
biI7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNv
dXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7
Ci19Ci0KLS8vIFZlcmlmeSB0aGF0IGZ1bmN0aW9ucyB3aXRob3V0IHJldHVybiBzdGF0ZW1lbnRz
IHN0aWxsIGNvbXBpbGUKLVRFU1RfUChHTFNMVGVzdCwgTWlzc2luZ1JldHVyblZlYzIpCi17Ci0g
ICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgInZhcnlp
bmcgZmxvYXQgdl92YXJ5aW5nO1xuIgotICAgICAgICAidmVjMiBmKCkgeyBpZiAodl92YXJ5aW5n
ID4gMC4wKSByZXR1cm4gdmVjMigxLjAsIDEuMCk7IH1cbiIKLSAgICAgICAgInZvaWQgbWFpbigp
IHsgZ2xfUG9zaXRpb24gPSB2ZWM0KGYoKS54LCAwLCAwLCAxKTsgfVxuIjsKLQotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KLSAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2
ZWM0KDAsIDAsIDAsIDEpOyB9XG4iOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJv
Z3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBFWFBF
Q1RfTkUoMHUsIHByb2dyYW0pOwotfQotCi0vLyBWZXJpZnkgdGhhdCBmdW5jdGlvbnMgd2l0aG91
dCByZXR1cm4gc3RhdGVtZW50cyBzdGlsbCBjb21waWxlCi1URVNUX1AoR0xTTFRlc3QsIE1pc3Np
bmdSZXR1cm5WZWMzKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJj
ZSA9Ci0gICAgICAgICJ2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKLSAgICAgICAgInZlYzMg
ZigpIHsgaWYgKHZfdmFyeWluZyA+IDAuMCkgcmV0dXJuIHZlYzMoMS4wLCAxLjAsIDEuMCk7IH1c
biIKLSAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfUG9zaXRpb24gPSB2ZWM0KGYoKS54LCAwLCAw
LCAxKTsgfVxuIjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNl
ID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidm9pZCBt
YWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDAsIDAsIDEpOyB9XG4iOwotCi0gICAgR0x1
aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50
U2hhZGVyU291cmNlKTsKLSAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwotfQotCi0vLyBWZXJp
ZnkgdGhhdCBmdW5jdGlvbnMgd2l0aG91dCByZXR1cm4gc3RhdGVtZW50cyBzdGlsbCBjb21waWxl
Ci1URVNUX1AoR0xTTFRlc3QsIE1pc3NpbmdSZXR1cm5WZWM0KQotewotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJ2YXJ5aW5nIGZsb2F0IHZfdmFy
eWluZztcbiIKLSAgICAgICAgInZlYzQgZigpIHsgaWYgKHZfdmFyeWluZyA+IDAuMCkgcmV0dXJu
IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsgfVxuIgotICAgICAgICAidm9pZCBtYWluKCkgeyBn
bF9Qb3NpdGlvbiA9IHZlYzQoZigpLngsIDAsIDAsIDEpOyB9XG4iOwotCi0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQo
MCwgMCwgMCwgMSk7IH1cbiI7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFt
KHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9O
RSgwdSwgcHJvZ3JhbSk7Ci19Ci0KLS8vIFZlcmlmeSB0aGF0IGZ1bmN0aW9ucyB3aXRob3V0IHJl
dHVybiBzdGF0ZW1lbnRzIHN0aWxsIGNvbXBpbGUKLVRFU1RfUChHTFNMVGVzdCwgTWlzc2luZ1Jl
dHVybklWZWM0KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9
Ci0gICAgICAgICJ2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKLSAgICAgICAgIml2ZWM0IGYo
KSB7IGlmICh2X3ZhcnlpbmcgPiAwLjApIHJldHVybiBpdmVjNCgxLCAxLCAxLCAxKTsgfVxuIgot
ICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9IHZlYzQoZigpLngsIDAsIDAsIDEp
OyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQot
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwgMCwgMCwgMSk7IH1cbiI7Ci0KLSAgICBHTHVpbnQg
cHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFk
ZXJTb3VyY2UpOwotICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Ci19Ci0KLS8vIFZlcmlmeSB0
aGF0IGZ1bmN0aW9ucyB3aXRob3V0IHJldHVybiBzdGF0ZW1lbnRzIHN0aWxsIGNvbXBpbGUKLVRF
U1RfUChHTFNMVGVzdCwgTWlzc2luZ1JldHVybk1hdDQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgdmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgInZhcnlpbmcgZmxvYXQgdl92YXJ5aW5n
O1xuIgotICAgICAgICAibWF0NCBmKCkgeyBpZiAodl92YXJ5aW5nID4gMC4wKSByZXR1cm4gbWF0
NCgxLjApOyB9XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9uID0gdmVjNChm
KClbMF1bMF0sIDAsIDAsIDEpOyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21l
bnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwgMCwgMCwgMSk7IH1c
biI7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNv
dXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7
Ci19Ci0KLS8vIFZlcmlmeSB0aGF0IGZ1bmN0aW9ucyB3aXRob3V0IHJldHVybiBzdGF0ZW1lbnRz
IHN0aWxsIGNvbXBpbGUKLVRFU1RfUChHTFNMVGVzdCwgTWlzc2luZ1JldHVyblN0cnVjdCkKLXsK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAidmFy
eWluZyBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJzdHJ1Y3QgcyB7IGZsb2F0IGE7IGlu
dCBiOyB2ZWMyIGM7IH07XG4iCi0gICAgICAgICJzIGYoKSB7IGlmICh2X3ZhcnlpbmcgPiAwLjAp
IHJldHVybiBzKDEuMCwgMSwgdmVjMigxLjAsIDEuMCkpOyB9XG4iCi0gICAgICAgICJ2b2lkIG1h
aW4oKSB7IGdsX1Bvc2l0aW9uID0gdmVjNChmKCkuYSwgMCwgMCwgMSk7IH1cbiI7Ci0KLSAgICBj
b25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9y
ID0gdmVjNCgwLCAwLCAwLCAxKTsgfVxuIjsKLQotICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGls
ZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAg
RVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKLX0KLQotLy8gVmVyaWZ5IHRoYXQgZnVuY3Rpb25zIHdp
dGhvdXQgcmV0dXJuIHN0YXRlbWVudHMgc3RpbGwgY29tcGlsZQotVEVTVF9QKEdMU0xUZXN0X0VT
MywgTWlzc2luZ1JldHVybkFycmF5KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNo
YWRlclNvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgImluIGZs
b2F0IHZfdmFyeWluZztcbiIKLSAgICAgICAgInZlYzJbMl0gZigpIHsgaWYgKHZfdmFyeWluZyA+
IDAuMCkgeyByZXR1cm4gdmVjMlsyXSh2ZWMyKDEuMCwgMS4wKSwgdmVjMigxLjAsIDEuMCkpOyB9
IH1cbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfUG9zaXRpb24gPSB2ZWM0KGYoKVswXS54
LCAwLCAwLCAxKTsgfVxuIjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVy
U291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKSB7IG15X0ZyYWdDb2xvciA9IHZlYzQoMCwgMCwgMCwgMSk7IH1c
biI7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNv
dXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7
Ci19Ci0KLS8vIFZlcmlmeSB0aGF0IGZ1bmN0aW9ucyB3aXRob3V0IHJldHVybiBzdGF0ZW1lbnRz
IHN0aWxsIGNvbXBpbGUKLVRFU1RfUChHTFNMVGVzdF9FUzMsIE1pc3NpbmdSZXR1cm5BcnJheU9m
U3RydWN0cykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQot
ICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJpbiBmbG9hdCB2X3Zhcnlpbmc7
XG4iCi0gICAgICAgICJzdHJ1Y3QgcyB7IGZsb2F0IGE7IGludCBiOyB2ZWMyIGM7IH07XG4iCi0g
ICAgICAgICJzWzJdIGYoKSB7IGlmICh2X3ZhcnlpbmcgPiAwLjApIHsgcmV0dXJuIHNbMl0ocygx
LjAsIDEsIHZlYzIoMS4wLCAxLjApKSwgcygxLjAsIDEsICIKLSAgICAgICAgInZlYzIoMS4wLCAx
LjApKSk7IH0gfVxuIgotICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9IHZlYzQo
ZigpWzBdLmEsIDAsIDAsIDEpOyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21l
bnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xv
cjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHsgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLCAwLCAw
LCAxKTsgfVxuIjsKLQotICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4
U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgRVhQRUNUX05FKDB1LCBw
cm9ncmFtKTsKLX0KLQotLy8gVmVyaWZ5IHRoYXQgZnVuY3Rpb25zIHdpdGhvdXQgcmV0dXJuIHN0
YXRlbWVudHMgc3RpbGwgY29tcGlsZQotVEVTVF9QKEdMU0xUZXN0X0VTMywgTWlzc2luZ1JldHVy
blN0cnVjdE9mQXJyYXlzKQotewotICAgIC8vIFRPRE8oY3dhbGxleikgcmVtb3ZlIHRoZSBzdXBw
cmVzc2lvbiBvbmNlIE5WSURJQSByZW1vdmVzIHRoZSByZXN0cmljdGlvbiBmb3IKLSAgICAvLyBH
TFNMID49IDMwMC4gSXQgd2FzIGRlZmluZWQgb25seSBpbiBHTFNMIDIuMCwgc2VjdGlvbiA2LjEu
Ci0gICAgaWYgKElzTlZJRElBKCkgJiYgSXNPcGVuR0xFUygpKQotICAgIHsKLSAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gTlZJRElBIE9wZW5HTCBFUyBiZWNhdXNlIGl0IGRp
c2FsbG93cyByZXR1cm5pbmcgIgotICAgICAgICAgICAgICAgICAgICAgInN0cnVjdHVyZSBvZiBh
cnJheXMiCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAg
ICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJpbiBmbG9hdCB2X3Zhcnlpbmc7XG4i
Ci0gICAgICAgICJzdHJ1Y3QgcyB7IGZsb2F0IGFbMl07IGludCBiWzJdOyB2ZWMyIGNbMl07IH07
XG4iCi0gICAgICAgICJzIGYoKSB7IGlmICh2X3ZhcnlpbmcgPiAwLjApIHsgcmV0dXJuIHMoZmxv
YXRbMl0oMS4wLCAxLjApLCBpbnRbMl0oMSwgMSksIgotICAgICAgICAidmVjMlsyXSh2ZWMyKDEu
MCwgMS4wKSwgdmVjMigxLjAsIDEuMCkpKTsgfSB9XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7
IGdsX1Bvc2l0aW9uID0gdmVjNChmKCkuYVswXSwgMCwgMCwgMSk7IH1cbiI7Ci0KLSAgICBjb25z
dCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAi
b3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyBteV9GcmFn
Q29sb3IgPSB2ZWM0KDAsIDAsIDAsIDEpOyB9XG4iOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBD
b21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsK
LSAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwotfQotCi0vLyBWZXJpZnkgdGhhdCB1c2luZyBp
bnZhcmlhbnQoYWxsKSBpbiBib3RoIHNoYWRlcnMgZmFpbHMgaW4gRVNTTCAzLjAwLgotVEVTVF9Q
KEdMU0xUZXN0X0VTMywgSW52YXJpYW50QWxsQm90aCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAg
ICAgICAgIiNwcmFnbWEgU1RER0wgaW52YXJpYW50KGFsbClcbiIKLSAgICAgICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAiaW4gZmxvYXQgdl92YXJ5aW5nO1xuIgotICAg
ICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyBt
eV9GcmFnQ29sb3IgPSB2ZWM0KHZfdmFyeWluZywgMCwgMCwgMS4wKTsgfVxuIjsKLQotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKLSAgICAgICAgIiNwcmFnbWEgU1RER0wgaW52YXJpYW50KGFsbClcbiIKLSAgICAg
ICAgImluIHZlYzQgYV9wb3NpdGlvbjtcbiIKLSAgICAgICAgIm91dCBmbG9hdCB2X3Zhcnlpbmc7
XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IHZfdmFyeWluZyA9IGFfcG9zaXRpb24ueDsgZ2xf
UG9zaXRpb24gPSBhX3Bvc2l0aW9uOyB9XG4iOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21w
aWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAg
ICBFWFBFQ1RfRVEoMHUsIHByb2dyYW0pOwotfQotCi0vLyBWZXJpZnkgdGhhdCB1c2luZyBpbnZh
cmlhbnQoYWxsKSBvbmx5IGluIGZyYWdtZW50IHNoYWRlciBmYWlscyBpbiBFU1NMIDEuMDAuCi1U
RVNUX1AoR0xTTFRlc3QsIEludmFyaWFudEFsbEluKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IGZyYWdtZW50U2hhZGVyU291cmNlID0KLSAgICAgICAgIiNwcmFnbWEgU1RER0wgaW52YXJpYW50
KGFsbClcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAi
dmFyeWluZyBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0Zy
YWdDb2xvciA9IHZlYzQodl92YXJ5aW5nLCAwLCAwLCAxLjApOyB9XG4iOwotCi0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgImF0dHJpYnV0ZSB2ZWM0
IGFfcG9zaXRpb247XG4iCi0gICAgICAgICJ2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpIHsgdl92YXJ5aW5nID0gYV9wb3NpdGlvbi54OyBnbF9Qb3NpdGlv
biA9IGFfcG9zaXRpb247IH1cbiI7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9n
cmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVD
VF9FUSgwdSwgcHJvZ3JhbSk7Ci19Ci0KLS8vIFZlcmlmeSB0aGF0IHVzaW5nIGludmFyaWFudChh
bGwpIG9ubHkgaW4gZnJhZ21lbnQgc2hhZGVyIGZhaWxzIGluIEVTU0wgMy4wMC4KLVRFU1RfUChH
TFNMVGVzdF9FUzMsIEludmFyaWFudEFsbEluKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZy
YWdtZW50U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAg
ICAiI3ByYWdtYSBTVERHTCBpbnZhcmlhbnQoYWxsKVxuIgotICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJpbiBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAg
ICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IG15X0Zy
YWdDb2xvciA9IHZlYzQodl92YXJ5aW5nLCAwLCAwLCAxLjApOyB9XG4iOwotCi0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBl
c1xuIgotICAgICAgICAiaW4gdmVjNCBhX3Bvc2l0aW9uO1xuIgotICAgICAgICAib3V0IGZsb2F0
IHZfdmFyeWluZztcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHsgdl92YXJ5aW5nID0gYV9wb3Np
dGlvbi54OyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247IH1cbiI7Ci0KLSAgICBHTHVpbnQgcHJv
Z3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJT
b3VyY2UpOwotICAgIEVYUEVDVF9FUSgwdSwgcHJvZ3JhbSk7Ci19Ci0KLS8vIFZlcmlmeSB0aGF0
IHVzaW5nIGludmFyaWFudChhbGwpIG9ubHkgaW4gdmVydGV4IHNoYWRlciBmYWlscyBpbiBFU1NM
IDEuMDAuCi1URVNUX1AoR0xTTFRlc3QsIEludmFyaWFudEFsbE91dCkKLXsKLSAgICBjb25zdCBz
dGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZhcnlpbmcgZmxvYXQgdl92YXJ5aW5nO1xuIgotICAg
ICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZfdmFyeWluZywgMCwgMCwg
MS4wKTsgfVxuIjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9
Ci0gICAgICAgICIjcHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpXG4iCi0gICAgICAgICJhdHRy
aWJ1dGUgdmVjNCBhX3Bvc2l0aW9uO1xuIgotICAgICAgICAidmFyeWluZyBmbG9hdCB2X3Zhcnlp
bmc7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IHZfdmFyeWluZyA9IGFfcG9zaXRpb24ueDsg
Z2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOyB9XG4iOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBD
b21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsK
LSAgICBFWFBFQ1RfRVEoMHUsIHByb2dyYW0pOwotfQotCi0vLyBWZXJpZnkgdGhhdCB1c2luZyBp
bnZhcmlhbnQoYWxsKSBvbmx5IGluIHZlcnRleCBzaGFkZXIgc3VjY2VlZHMgaW4gRVNTTCAzLjAw
LgotVEVTVF9QKEdMU0xUZXN0X0VTMywgSW52YXJpYW50QWxsT3V0KQotewotICAgIC8vIFRPRE86
IEVTU0wgMy4wMCAtPiBHTFNMIDEuMjAgdHJhbnNsYXRpb24gc2hvdWxkIGFkZCAiaW52YXJpYW50
IiBpbiBmcmFnbWVudCBzaGFkZXIKLSAgICAvLyBmb3IgdmFyeWluZ3Mgd2hpY2ggYXJlIGludmFy
aWFudCBpbiB2ZXJ0ZXggc2hhZGVyLAotICAgIC8vIGJlY2F1c2Ugb2YgaW52YXJpYW50KGFsbCkg
YmVpbmcgdXNlZCBpbiB2ZXJ0ZXggc2hhZGVyIChodHRwOi8vYW5nbGVidWcuY29tLzEyOTMpCi0g
ICAgaWYgKElzRGVza3RvcE9wZW5HTCgpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IGRpc2FibGVkIG9uIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KLSAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJpbiBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJvdXQgdmVj
NCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IG15X0ZyYWdDb2xvciA9
IHZlYzQodl92YXJ5aW5nLCAwLCAwLCAxLjApOyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgdmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAg
ICAgICAiI3ByYWdtYSBTVERHTCBpbnZhcmlhbnQoYWxsKVxuIgotICAgICAgICAiaW4gdmVjNCBh
X3Bvc2l0aW9uO1xuIgotICAgICAgICAib3V0IGZsb2F0IHZfdmFyeWluZztcbiIKLSAgICAgICAg
InZvaWQgbWFpbigpIHsgdl92YXJ5aW5nID0gYV9wb3NpdGlvbi54OyBnbF9Qb3NpdGlvbiA9IGFf
cG9zaXRpb247IH1cbiI7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZl
cnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9ORSgw
dSwgcHJvZ3JhbSk7Ci19Ci0KLVRFU1RfUChHTFNMVGVzdCwgTWF4VmFyeWluZ1ZlYzQpCi17Ci0j
aWYgZGVmaW5lZChfX0FQUExFX18pCi0gICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaW5kIG91dCB3
aHkgdGhpcyBkb2Vzbid0IGNvbXBpbGUgb24gQXBwbGUgQU5EIE9wZW5HTCBkcml2ZXJzCi0gICAg
Ly8gKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTI5MSkKLSAgICBpZiAoSXNBTUQoKSAmJiBnZXRQbGF0
Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQot
ICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIEFwcGxlIEFNRCBP
cGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQot
ICAgIEdMaW50IG1heFZhcnlpbmdzID0gMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZ
SU5HX1ZFQ1RPUlMsICZtYXhWYXJ5aW5ncyk7Ci0KLSAgICBWYXJ5aW5nVGVzdEJhc2UoMCwgMCwg
MCwgMCwgMCwgMCwgbWF4VmFyeWluZ3MsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpOwot
fQotCi1URVNUX1AoR0xTTFRlc3QsIE1heE1pbnVzVHdvVmFyeWluZ1ZlYzRQbHVzVHdvU3BlY2lh
bFZhcmlhYmxlcykKLXsKLSAgICBHTGludCBtYXhWYXJ5aW5ncyA9IDA7Ci0gICAgZ2xHZXRJbnRl
Z2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCAmbWF4VmFyeWluZ3MpOwotCi0gICAgLy8gR2Vu
ZXJhdGUgc2hhZGVyIGNvZGUgdGhhdCB1c2VzIGdsX0ZyYWdDb29yZCBhbmQgZ2xfUG9pbnRDb29y
ZCwgdHdvIHNwZWNpYWwgZnJhZ21lbnQgc2hhZGVyIHZhcmlhYmxlcy4KLSAgICBWYXJ5aW5nVGVz
dEJhc2UoMCwgMCwgMCwgMCwgMCwgMCwgbWF4VmFyeWluZ3MgLSAyLCAwLCB0cnVlLCB0cnVlLCBm
YWxzZSwgdHJ1ZSk7Ci19Ci0KLVRFU1RfUChHTFNMVGVzdCwgTWF4TWludXNUd29WYXJ5aW5nVmVj
NFBsdXNUaHJlZVNwZWNpYWxWYXJpYWJsZXMpCi17Ci0gICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBG
aWd1cmUgb3V0IHdoeSB0aGlzIGZhaWxzIG9uIE9wZW5HTCBBTUQgKGh0dHA6Ly9hbmdsZWJ1Zy5j
b20vMTI5MSkKLSAgICBpZiAoSXNBTUQoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdM
X1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIEdMaW50IG1heFZhcnlpbmdzID0gMDsKLSAgICBnbEdldElu
dGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsICZtYXhWYXJ5aW5ncyk7Ci0KLSAgICAvLyBH
ZW5lcmF0ZSBzaGFkZXIgY29kZSB0aGF0IHVzZXMgZ2xfRnJhZ0Nvb3JkLCBnbF9Qb2ludENvb3Jk
IGFuZCBnbF9Qb2ludFNpemUuCi0gICAgVmFyeWluZ1Rlc3RCYXNlKDAsIDAsIDAsIDAsIDAsIDAs
IG1heFZhcnlpbmdzIC0gMiwgMCwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7Ci19Ci0KLS8vIERp
c2FibGVkIGJlY2F1c2UgZHJpdmVycyBhcmUgYWxsb3dlZCB0byBzdWNjZXNzZnVsbHkgY29tcGls
ZSBzaGFkZXJzIHRoYXQgaGF2ZSBtb3JlIHRoYW4gdGhlCi0vLyBtYXhpbXVtIG51bWJlciBvZiB2
YXJ5aW5ncy4gKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTI5NikKLVRFU1RfUChHTFNMVGVzdCwgRElT
QUJMRURfTWF4VmFyeWluZ1ZlYzRQbHVzRnJhZ0Nvb3JkKQotewotICAgIEdMaW50IG1heFZhcnlp
bmdzID0gMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsICZtYXhW
YXJ5aW5ncyk7Ci0KLSAgICAvLyBHZW5lcmF0ZSBzaGFkZXIgY29kZSB0aGF0IHVzZXMgZ2xfRnJh
Z0Nvb3JkLCBhIHNwZWNpYWwgZnJhZ21lbnQgc2hhZGVyIHZhcmlhYmxlcy4KLSAgICAvLyBUaGlz
IHRlc3Qgc2hvdWxkIGZhaWwsIHNpbmNlIHdlIGFyZSByZWFsbHkgdXNpbmcgKG1heFZhcnlpbmdz
ICsgMSkgdmFyeWluZ3MuCi0gICAgVmFyeWluZ1Rlc3RCYXNlKDAsIDAsIDAsIDAsIDAsIDAsIG1h
eFZhcnlpbmdzLCAwLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKLX0KLQotLy8gRGlzYWJs
ZWQgYmVjYXVzZSBkcml2ZXJzIGFyZSBhbGxvd2VkIHRvIHN1Y2Nlc3NmdWxseSBjb21waWxlIHNo
YWRlcnMgdGhhdCBoYXZlIG1vcmUgdGhhbiB0aGUKLS8vIG1heGltdW0gbnVtYmVyIG9mIHZhcnlp
bmdzLiAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xMjk2KQotVEVTVF9QKEdMU0xUZXN0LCBESVNBQkxF
RF9NYXhWYXJ5aW5nVmVjNFBsdXNQb2ludENvb3JkKQotewotICAgIEdMaW50IG1heFZhcnlpbmdz
ID0gMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsICZtYXhWYXJ5
aW5ncyk7Ci0KLSAgICAvLyBHZW5lcmF0ZSBzaGFkZXIgY29kZSB0aGF0IHVzZXMgZ2xfRnJhZ0Nv
b3JkLCBhIHNwZWNpYWwgZnJhZ21lbnQgc2hhZGVyIHZhcmlhYmxlcy4KLSAgICAvLyBUaGlzIHRl
c3Qgc2hvdWxkIGZhaWwsIHNpbmNlIHdlIGFyZSByZWFsbHkgdXNpbmcgKG1heFZhcnlpbmdzICsg
MSkgdmFyeWluZ3MuCi0gICAgVmFyeWluZ1Rlc3RCYXNlKDAsIDAsIDAsIDAsIDAsIDAsIG1heFZh
cnlpbmdzLCAwLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKLX0KLQotVEVTVF9QKEdMU0xU
ZXN0LCBNYXhWYXJ5aW5nVmVjMykKLXsKLSAgICBHTGludCBtYXhWYXJ5aW5ncyA9IDA7Ci0gICAg
Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCAmbWF4VmFyeWluZ3MpOwotCi0g
ICAgVmFyeWluZ1Rlc3RCYXNlKDAsIDAsIDAsIDAsIG1heFZhcnlpbmdzLCAwLCAwLCAwLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCB0cnVlKTsKLX0KLQotVEVTVF9QKEdMU0xUZXN0LCBNYXhWYXJ5aW5n
VmVjM0FycmF5KQotewotICAgIEdMaW50IG1heFZhcnlpbmdzID0gMDsKLSAgICBnbEdldEludGVn
ZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsICZtYXhWYXJ5aW5ncyk7Ci0KLSAgICBWYXJ5aW5n
VGVzdEJhc2UoMCwgMCwgMCwgMCwgMCwgbWF4VmFyeWluZ3MgLyAyLCAwLCAwLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCB0cnVlKTsKLX0KLQotLy8gRGlzYWJsZWQgYmVjYXVzZSBvZiBhIGZhaWx1cmUg
aW4gRDNEOQotVEVTVF9QKEdMU0xUZXN0LCBNYXhWYXJ5aW5nVmVjM0FuZE9uZUZsb2F0KQotewot
ICAgIGlmIChJc0QzRDkoKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNh
YmxlZCBvbiBEM0Q5LiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgR0xpbnQgbWF4VmFyeWluZ3MgPSAwOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJ
TkdfVkVDVE9SUywgJm1heFZhcnlpbmdzKTsKLQotICAgIFZhcnlpbmdUZXN0QmFzZSgxLCAwLCAw
LCAwLCBtYXhWYXJ5aW5ncywgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7Ci19
Ci0KLS8vIERpc2FibGVkIGJlY2F1c2Ugb2YgYSBmYWlsdXJlIGluIEQzRDkKLVRFU1RfUChHTFNM
VGVzdCwgTWF4VmFyeWluZ1ZlYzNBcnJheUFuZE9uZUZsb2F0QXJyYXkpCi17Ci0gICAgaWYgKElz
RDNEOSgpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIEQz
RDkuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTGludCBt
YXhWYXJ5aW5ncyA9IDA7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JT
LCAmbWF4VmFyeWluZ3MpOwotCi0gICAgVmFyeWluZ1Rlc3RCYXNlKDAsIDEsIDAsIDAsIDAsIG1h
eFZhcnlpbmdzIC8gMiwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7Ci19Ci0KLS8v
IERpc2FibGVkIGJlY2F1c2Ugb2YgYSBmYWlsdXJlIGluIEQzRDkKLVRFU1RfUChHTFNMVGVzdCwg
VHdpY2VNYXhWYXJ5aW5nVmVjMikKLXsKLSAgICBpZiAoSXNEM0Q5KCkpCi0gICAgewotICAgICAg
ICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gRDNEOS4iIDw8IHN0ZDo6ZW5kbDsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0g
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUpCi0gICAgewotICAgICAgICAv
LyBUT0RPKGdlb2ZmbGFuZyk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgZmFpbHMgb24gTlZJRElBJ3Mg
R0xFUyBkcml2ZXIKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIE9wZW5H
TCBFUy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotI2lmIGRlZmlu
ZWQoX19BUFBMRV9fKQotICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmluZCBvdXQgd2h5IHRoaXMg
ZG9lc24ndCBjb21waWxlIG9uIEFwcGxlIEFORCBPcGVuR0wgZHJpdmVycwotICAgIC8vIChodHRw
Oi8vYW5nbGVidWcuY29tLzEyOTEpCi0gICAgaWYgKElzQU1EKCkgJiYgZ2V0UGxhdGZvcm1SZW5k
ZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0g
ICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBBcHBsZSBBTUQgT3BlbkdMLiIg
PDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBHTGlu
dCBtYXhWYXJ5aW5ncyA9IDA7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNU
T1JTLCAmbWF4VmFyeWluZ3MpOwotCi0gICAgVmFyeWluZ1Rlc3RCYXNlKDAsIDAsIDIgKiBtYXhW
YXJ5aW5ncywgMCwgMCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7Ci19Ci0K
LS8vIERpc2FibGVkIGJlY2F1c2Ugb2YgYSBmYWlsdXJlIGluIEQzRDkKLVRFU1RfUChHTFNMVGVz
dCwgTWF4VmFyeWluZ1ZlYzJBcnJheXMpCi17Ci0gICAgaWYgKElzRDNEU00zKCkpCi0gICAgewot
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gU00zLiIgPDwgc3RkOjplbmRs
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdldFBsYXRmb3JtUmVuZGVyZXIo
KSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRSkKLSAgICB7Ci0gICAg
ICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmlndXJlIG91dCB3aHkgdGhpcyBmYWlscyBvbiBOVklE
SUEncyBHTEVTIGRyaXZlcgotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24g
T3BlbkdMIEVTLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0jaWYg
ZGVmaW5lZChfX0FQUExFX18pCi0gICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaW5kIG91dCB3aHkg
dGhpcyBkb2Vzbid0IGNvbXBpbGUgb24gQXBwbGUgQU5EIE9wZW5HTCBkcml2ZXJzCi0gICAgLy8g
KGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTI5MSkKLSAgICBpZiAoSXNBTUQoKSAmJiBnZXRQbGF0Zm9y
bVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQotICAg
IHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIEFwcGxlIEFNRCBPcGVu
R0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAg
IEdMaW50IG1heFZhcnlpbmdzID0gMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5H
X1ZFQ1RPUlMsICZtYXhWYXJ5aW5ncyk7Ci0KLSAgICBWYXJ5aW5nVGVzdEJhc2UoMCwgMCwgMCwg
bWF4VmFyeWluZ3MsIDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpOwotfQot
Ci0vLyBEaXNhYmxlZCBiZWNhdXNlIGRyaXZlcnMgYXJlIGFsbG93ZWQgdG8gc3VjY2Vzc2Z1bGx5
IGNvbXBpbGUgc2hhZGVycyB0aGF0IGhhdmUgbW9yZSB0aGFuIHRoZQotLy8gbWF4aW11bSBudW1i
ZXIgb2YgdmFyeWluZ3MuIChodHRwOi8vYW5nbGVidWcuY29tLzEyOTYpCi1URVNUX1AoR0xTTFRl
c3QsIERJU0FCTEVEX01heFBsdXNPbmVWYXJ5aW5nVmVjMykKLXsKLSAgICBHTGludCBtYXhWYXJ5
aW5ncyA9IDA7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCAmbWF4
VmFyeWluZ3MpOwotCi0gICAgVmFyeWluZ1Rlc3RCYXNlKDAsIDAsIDAsIDAsIG1heFZhcnlpbmdz
ICsgMSwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotfQotCi0vLyBEaXNh
YmxlZCBiZWNhdXNlIGRyaXZlcnMgYXJlIGFsbG93ZWQgdG8gc3VjY2Vzc2Z1bGx5IGNvbXBpbGUg
c2hhZGVycyB0aGF0IGhhdmUgbW9yZSB0aGFuIHRoZQotLy8gbWF4aW11bSBudW1iZXIgb2YgdmFy
eWluZ3MuIChodHRwOi8vYW5nbGVidWcuY29tLzEyOTYpCi1URVNUX1AoR0xTTFRlc3QsIERJU0FC
TEVEX01heFBsdXNPbmVWYXJ5aW5nVmVjM0FycmF5KQotewotICAgIEdMaW50IG1heFZhcnlpbmdz
ID0gMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsICZtYXhWYXJ5
aW5ncyk7Ci0KLSAgICBWYXJ5aW5nVGVzdEJhc2UoMCwgMCwgMCwgMCwgMCwgbWF4VmFyeWluZ3Mg
LyAyICsgMSwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotfQotCi0vLyBEaXNh
YmxlZCBiZWNhdXNlIGRyaXZlcnMgYXJlIGFsbG93ZWQgdG8gc3VjY2Vzc2Z1bGx5IGNvbXBpbGUg
c2hhZGVycyB0aGF0IGhhdmUgbW9yZSB0aGFuIHRoZQotLy8gbWF4aW11bSBudW1iZXIgb2YgdmFy
eWluZ3MuIChodHRwOi8vYW5nbGVidWcuY29tLzEyOTYpCi1URVNUX1AoR0xTTFRlc3QsIERJU0FC
TEVEX01heFZhcnlpbmdWZWMzQW5kT25lVmVjMikKLXsKLSAgICBHTGludCBtYXhWYXJ5aW5ncyA9
IDA7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCAmbWF4VmFyeWlu
Z3MpOwotCi0gICAgVmFyeWluZ1Rlc3RCYXNlKDAsIDAsIDEsIDAsIG1heFZhcnlpbmdzLCAwLCAw
LCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Ci19Ci0KLS8vIERpc2FibGVkIGJlY2F1
c2UgZHJpdmVycyBhcmUgYWxsb3dlZCB0byBzdWNjZXNzZnVsbHkgY29tcGlsZSBzaGFkZXJzIHRo
YXQgaGF2ZSBtb3JlIHRoYW4gdGhlCi0vLyBtYXhpbXVtIG51bWJlciBvZiB2YXJ5aW5ncy4gKGh0
dHA6Ly9hbmdsZWJ1Zy5jb20vMTI5NikKLVRFU1RfUChHTFNMVGVzdCwgRElTQUJMRURfTWF4UGx1
c09uZVZhcnlpbmdWZWMyKQotewotICAgIEdMaW50IG1heFZhcnlpbmdzID0gMDsKLSAgICBnbEdl
dEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsICZtYXhWYXJ5aW5ncyk7Ci0KLSAgICBW
YXJ5aW5nVGVzdEJhc2UoMCwgMCwgMiAqIG1heFZhcnlpbmdzICsgMSwgMCwgMCwgMCwgMCwgMCwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotfQotCi0vLyBEaXNhYmxlZCBiZWNhdXNlIGRy
aXZlcnMgYXJlIGFsbG93ZWQgdG8gc3VjY2Vzc2Z1bGx5IGNvbXBpbGUgc2hhZGVycyB0aGF0IGhh
dmUgbW9yZSB0aGFuIHRoZQotLy8gbWF4aW11bSBudW1iZXIgb2YgdmFyeWluZ3MuIChodHRwOi8v
YW5nbGVidWcuY29tLzEyOTYpCi1URVNUX1AoR0xTTFRlc3QsIERJU0FCTEVEX01heFZhcnlpbmdW
ZWMzQXJyYXlBbmRNYXhQbHVzT25lRmxvYXRBcnJheSkKLXsKLSAgICBHTGludCBtYXhWYXJ5aW5n
cyA9IDA7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCAmbWF4VmFy
eWluZ3MpOwotCi0gICAgVmFyeWluZ1Rlc3RCYXNlKDAsIG1heFZhcnlpbmdzIC8gMiArIDEsIDAs
IDAsIDAsIDAsIDAsIG1heFZhcnlpbmdzIC8gMiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2Up
OwotfQotCi0vLyBWZXJpZnkgc2hhZGVyIHNvdXJjZSB3aXRoIGEgZml4ZWQgbGVuZ3RoIHRoYXQg
aXMgbGVzcyB0aGFuIHRoZSBudWxsLXRlcm1pbmF0ZWQgbGVuZ3RoIHdpbGwgY29tcGlsZS4KLVRF
U1RfUChHTFNMVGVzdCwgRml4ZWRTaGFkZXJMZW5ndGgpCi17Ci0gICAgR0x1aW50IHNoYWRlciA9
IGdsQ3JlYXRlU2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURFUik7Ci0KLSAgICBjb25zdCBzdGQ6OnN0
cmluZyBhcHBlbmRHYXJiYWdlID0gImFiY2FzZGZhc2RmYXNkZmFzZGZhc2RmIjsKLSAgICBjb25z
dCBzdGQ6OnN0cmluZyBzb3VyY2UgPSAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0
KDAsIDAsIDAsIDApOyB9IiArIGFwcGVuZEdhcmJhZ2U7Ci0gICAgY29uc3QgY2hhciAqc291cmNl
QXJyYXlbMV0gPSB7IHNvdXJjZS5jX3N0cigpIH07Ci0gICAgR0xpbnQgbGVuZ3Roc1sxXSA9IHsg
c3RhdGljX2Nhc3Q8R0xpbnQ+KHNvdXJjZS5sZW5ndGgoKSAtIGFwcGVuZEdhcmJhZ2UubGVuZ3Ro
KCkpIH07Ci0gICAgZ2xTaGFkZXJTb3VyY2Uoc2hhZGVyLCBzdGF0aWNfY2FzdDxHTHNpemVpPihB
cnJheVNpemUoc291cmNlQXJyYXkpKSwgc291cmNlQXJyYXksIGxlbmd0aHMpOwotICAgIGdsQ29t
cGlsZVNoYWRlcihzaGFkZXIpOwotCi0gICAgR0xpbnQgY29tcGlsZVJlc3VsdDsKLSAgICBnbEdl
dFNoYWRlcml2KHNoYWRlciwgR0xfQ09NUElMRV9TVEFUVVMsICZjb21waWxlUmVzdWx0KTsKLSAg
ICBFWFBFQ1RfTkUoY29tcGlsZVJlc3VsdCwgMCk7Ci19Ci0KLS8vIFZlcmlmeSB0aGF0IGEgbmVn
YXRpdmUgc2hhZGVyIHNvdXJjZSBsZW5ndGggaXMgdHJlYXRlZCBhcyBhIG51bGwtdGVybWluYXRl
ZCBsZW5ndGguCi1URVNUX1AoR0xTTFRlc3QsIE5lZ2F0aXZlU2hhZGVyTGVuZ3RoKQotewotICAg
IEdMdWludCBzaGFkZXIgPSBnbENyZWF0ZVNoYWRlcihHTF9GUkFHTUVOVF9TSEFERVIpOwotCi0g
ICAgY29uc3QgY2hhciAqc291cmNlQXJyYXlbMV0gPSB7ICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdD
b2xvciA9IHZlYzQoMCwgMCwgMCwgMCk7IH0iIH07Ci0gICAgR0xpbnQgbGVuZ3Roc1sxXSA9IHsg
LTEwIH07Ci0gICAgZ2xTaGFkZXJTb3VyY2Uoc2hhZGVyLCBzdGF0aWNfY2FzdDxHTHNpemVpPihB
cnJheVNpemUoc291cmNlQXJyYXkpKSwgc291cmNlQXJyYXksIGxlbmd0aHMpOwotICAgIGdsQ29t
cGlsZVNoYWRlcihzaGFkZXIpOwotCi0gICAgR0xpbnQgY29tcGlsZVJlc3VsdDsKLSAgICBnbEdl
dFNoYWRlcml2KHNoYWRlciwgR0xfQ09NUElMRV9TVEFUVVMsICZjb21waWxlUmVzdWx0KTsKLSAg
ICBFWFBFQ1RfTkUoY29tcGlsZVJlc3VsdCwgMCk7Ci19Ci0KLS8vIENoZWNrIHRoYXQgaGF2aW5n
IGFuIGludmFsaWQgY2hhciBhZnRlciB0aGUgIi4iIGRvZXNuJ3QgY2F1c2UgYW4gYXNzZXJ0Lgot
VEVTVF9QKEdMU0xUZXN0LCBJbnZhbGlkRmllbGRGaXJzdENoYXIpCi17Ci0gICAgR0x1aW50IHNo
YWRlciAgICAgID0gZ2xDcmVhdGVTaGFkZXIoR0xfVkVSVEVYX1NIQURFUik7Ci0gICAgY29uc3Qg
Y2hhciAqc291cmNlID0gInZvaWQgbWFpbigpIHt2ZWM0IHg7IHgufSI7Ci0gICAgZ2xTaGFkZXJT
b3VyY2Uoc2hhZGVyLCAxLCAmc291cmNlLCAwKTsKLSAgICBnbENvbXBpbGVTaGFkZXIoc2hhZGVy
KTsKLQotICAgIEdMaW50IGNvbXBpbGVSZXN1bHQ7Ci0gICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIs
IEdMX0NPTVBJTEVfU1RBVFVTLCAmY29tcGlsZVJlc3VsdCk7Ci0gICAgRVhQRUNUX0VRKDAsIGNv
bXBpbGVSZXN1bHQpOwotfQotCi0vLyBWZXJpZnkgdGhhdCBhIGxlbmd0aCBhcnJheSB3aXRoIG1p
eGVkIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSB2YWx1ZXMgY29tcGlsZXMuCi1URVNUX1AoR0xTTFRl
c3QsIE1peGVkU2hhZGVyTGVuZ3RocykKLXsKLSAgICBHTHVpbnQgc2hhZGVyID0gZ2xDcmVhdGVT
aGFkZXIoR0xfRlJBR01FTlRfU0hBREVSKTsKLQotICAgIGNvbnN0IGNoYXIgKnNvdXJjZUFycmF5
W10gPQotICAgIHsKLSAgICAgICAgInZvaWQgbWFpbigpIiwKLSAgICAgICAgInsiLAotICAgICAg
ICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwgMCwgMCwgMCk7IiwKLSAgICAgICAgIn0iLAot
ICAgIH07Ci0gICAgR0xpbnQgbGVuZ3Roc1tdID0KLSAgICB7Ci0gICAgICAgIC0xMCwKLSAgICAg
ICAgMSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8R0xpbnQ+KHN0cmxlbihzb3VyY2VBcnJheVsyXSkp
LAotICAgICAgICAtMSwKLSAgICB9OwotICAgIEFTU0VSVF9FUShBcnJheVNpemUoc291cmNlQXJy
YXkpLCBBcnJheVNpemUobGVuZ3RocykpOwotCi0gICAgZ2xTaGFkZXJTb3VyY2Uoc2hhZGVyLCBz
dGF0aWNfY2FzdDxHTHNpemVpPihBcnJheVNpemUoc291cmNlQXJyYXkpKSwgc291cmNlQXJyYXks
IGxlbmd0aHMpOwotICAgIGdsQ29tcGlsZVNoYWRlcihzaGFkZXIpOwotCi0gICAgR0xpbnQgY29t
cGlsZVJlc3VsdDsKLSAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR0xfQ09NUElMRV9TVEFUVVMs
ICZjb21waWxlUmVzdWx0KTsKLSAgICBFWFBFQ1RfTkUoY29tcGlsZVJlc3VsdCwgMCk7Ci19Ci0K
LS8vIFZlcmlmeSB0aGF0IHplcm8tbGVuZ3RoIHNoYWRlciBzb3VyY2UgZG9lcyBub3QgYWZmZWN0
IHNoYWRlciBjb21waWxhdGlvbi4KLVRFU1RfUChHTFNMVGVzdCwgWmVyb1NoYWRlckxlbmd0aCkK
LXsKLSAgICBHTHVpbnQgc2hhZGVyID0gZ2xDcmVhdGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVS
KTsKLQotICAgIGNvbnN0IGNoYXIgKnNvdXJjZUFycmF5W10gPQotICAgIHsKLSAgICAgICAgImFk
ZmFzZGYiLAotICAgICAgICAiMzQ1MzQiLAotICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFn
Q29sb3IgPSB2ZWM0KDAsIDAsIDAsIDApOyB9IiwKLSAgICAgICAgIiIsCi0gICAgICAgICJhc2Rm
YXNkZnNkc2RmIiwKLSAgICB9OwotICAgIEdMaW50IGxlbmd0aHNbXSA9Ci0gICAgewotICAgICAg
ICAwLAotICAgICAgICAwLAotICAgICAgICAtMSwKLSAgICAgICAgMCwKLSAgICAgICAgMCwKLSAg
ICB9OwotICAgIEFTU0VSVF9FUShBcnJheVNpemUoc291cmNlQXJyYXkpLCBBcnJheVNpemUobGVu
Z3RocykpOwotCi0gICAgZ2xTaGFkZXJTb3VyY2Uoc2hhZGVyLCBzdGF0aWNfY2FzdDxHTHNpemVp
PihBcnJheVNpemUoc291cmNlQXJyYXkpKSwgc291cmNlQXJyYXksIGxlbmd0aHMpOwotICAgIGds
Q29tcGlsZVNoYWRlcihzaGFkZXIpOwotCi0gICAgR0xpbnQgY29tcGlsZVJlc3VsdDsKLSAgICBn
bEdldFNoYWRlcml2KHNoYWRlciwgR0xfQ09NUElMRV9TVEFUVVMsICZjb21waWxlUmVzdWx0KTsK
LSAgICBFWFBFQ1RfTkUoY29tcGlsZVJlc3VsdCwgMCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYmFk
IGluZGV4IGV4cHJlc3Npb25zIGRvbid0IGNyYXNoIEFOR0xFJ3MgdHJhbnNsYXRvci4KLS8vIGh0
dHBzOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0L2lzc3Vlcy9kZXRhaWw/aWQ9ODU3
Ci1URVNUX1AoR0xTTFRlc3QsIEJhZEluZGV4QnVnKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZmcmFnbWVudFNoYWRlclNvdXJjZVZlYyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1bmlmb3JtVmVjO1xuIgotICAgICAgICAi
dm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KHVuaWZvcm1WZWNbaW50KCldKTtcbiIKLSAgICAgICAgIn0iOwotCi0gICAgR0x1aW50
IHNoYWRlciA9IENvbXBpbGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmcmFnbWVudFNoYWRl
clNvdXJjZVZlYyk7Ci0gICAgRVhQRUNUX0VRKDB1LCBzaGFkZXIpOwotCi0gICAgaWYgKHNoYWRl
ciAhPSAwKQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVTaGFkZXIoc2hhZGVyKTsKLSAgICB9Ci0K
LSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXJTb3VyY2VNYXQgPQotICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDQgdW5p
Zm9ybU1hdDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAg
ICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh1bmlmb3JtTWF0W2ludCgpXSk7XG4iCi0gICAg
ICAgICJ9IjsKLQotICAgIHNoYWRlciA9IENvbXBpbGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVS
LCBmcmFnbWVudFNoYWRlclNvdXJjZU1hdCk7Ci0gICAgRVhQRUNUX0VRKDB1LCBzaGFkZXIpOwot
Ci0gICAgaWYgKHNoYWRlciAhPSAwKQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVTaGFkZXIoc2hh
ZGVyKTsKLSAgICB9Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXJTb3Vy
Y2VBcnJheSA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAg
InVuaWZvcm0gdmVjNCB1bmlmb3JtQXJyYXk7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgot
ICAgICAgICAie1xuIgotICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQodW5pZm9ybUFy
cmF5W2ludCgpXSk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIHNoYWRlciA9IENvbXBpbGVTaGFk
ZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmcmFnbWVudFNoYWRlclNvdXJjZUFycmF5KTsKLSAgICBF
WFBFQ1RfRVEoMHUsIHNoYWRlcik7Ci0KLSAgICBpZiAoc2hhZGVyICE9IDApCi0gICAgewotICAg
ICAgICBnbERlbGV0ZVNoYWRlcihzaGFkZXIpOwotICAgIH0KLX0KLQotLy8gVGVzdCB0aGF0IHN0
cnVjdHMgZGVmaW5lZCBpbiB1bmlmb3JtcyBhcmUgdHJhbnNsYXRlZCBjb3JyZWN0bHkuCi1URVNU
X1AoR0xTTFRlc3QsIFN0cnVjdFNwZWNpZmllcnNVbmlmb3JtcykKLXsKLSAgICBjb25zdCBzdGQ6
OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAg
ICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotCi0gICAgICAgIHVuaWZvcm0gc3RydWN0IFMg
eyBmbG9hdCBmaWVsZDt9IHM7Ci0KLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLCAwLCAwLCAxKTsKLSAgICAgICAgICAgIGds
X0ZyYWdDb2xvci5hICs9IHMuZmllbGQ7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgR0x1aW50
IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShtU2ltcGxlVlNTb3VyY2UsIGZyYWdtZW50U2hhZGVy
U291cmNlKTsKLSAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwotfQotCi0vLyBUZXN0IHRoYXQg
Z2xfRGVwdGhSYW5nZSBpcyBub3Qgc3RvcmVkIGFzIGEgdW5pZm9ybSBsb2NhdGlvbi4gU2luY2Ug
dW5pZm9ybXMKLS8vIGJlZ2lubmluZyB3aXRoICJnbF8iIGFyZSBmaWx0ZXJlZCBvdXQgYnkgb3Vy
IHZhbGlkYXRpb24gbG9naWMsIHdlIG11c3QKLS8vIGJ5cGFzcyB0aGUgdmFsaWRhdGlvbiB0byB0
ZXN0IHRoZSBiZWhhdmlvdXIgb2YgdGhlIGltcGxlbWVudGF0aW9uLgotLy8gKG5vdGUgdGhpcyB0
ZXN0IGlzIHN0aWxsIEltcGwtaW5kZXBlbmRlbnQpCi1URVNUX1AoR0xTTFRlc3QsIERlcHRoUmFu
Z2VVbmlmb3JtcykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJj
ZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
OwotCi0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQoZ2xfRGVwdGhSYW5nZS5uZWFyLCBnbF9EZXB0aFJhbmdlLmZhciwgZ2xfRGVw
dGhSYW5nZS5kaWZmLCAxKTsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICBHTHVpbnQgcHJvZ3Jh
bSA9IENvbXBpbGVQcm9ncmFtKG1TaW1wbGVWU1NvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2Up
OwotICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Ci0KLSAgICAvLyBkaXZlIGludG8gdGhlIEFO
R0xFIGludGVybmFscywgc28gd2UgY2FuIGJ5cGFzcyB2YWxpZGF0aW9uLgotICAgIGdsOjpDb250
ZXh0ICpjb250ZXh0ID0gcmVpbnRlcnByZXRfY2FzdDxnbDo6Q29udGV4dCAqPihnZXRFR0xXaW5k
b3coKS0+Z2V0Q29udGV4dCgpKTsKLSAgICBnbDo6UHJvZ3JhbSAqZ2xQcm9ncmFtID0gY29udGV4
dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKLSAgICBHTGludCBuZWFySW5kZXggPSBnbFByb2dyYW0t
PmdldFVuaWZvcm1Mb2NhdGlvbigiZ2xfRGVwdGhSYW5nZS5uZWFyIik7Ci0gICAgRVhQRUNUX0VR
KC0xLCBuZWFySW5kZXgpOwotCi0gICAgLy8gVGVzdCBkcmF3aW5nIGRvZXMgbm90IHRocm93IGFu
IGV4Y2VwdGlvbi4KLSAgICBkcmF3UXVhZChwcm9ncmFtLCAiaW5wdXRBdHRyaWJ1dGUiLCAwLjVm
KTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xEZWxldGVQcm9ncmFtKHBy
b2dyYW0pOwotfQotCi1zdGQ6OnN0cmluZyBHZW5lcmF0ZVNtYWxsUG93U2hhZGVyKGRvdWJsZSBi
YXNlLCBkb3VibGUgZXhwb25lbnQpCi17Ci0gICAgc3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwot
Ci0gICAgc3RyZWFtLnByZWNpc2lvbig4KTsKLQotICAgIGRvdWJsZSByZXN1bHQgPSBwb3coYmFz
ZSwgZXhwb25lbnQpOwotCi0gICAgc3RyZWFtIDw8ICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4i
Ci0gICAgICAgICAgIDw8ICJmbG9hdCBmdW4oZmxvYXQgYXJnKVxuIgotICAgICAgICAgICA8PCAi
e1xuIgotICAgICAgICAgICA8PCAiICAgIHJldHVybiBwb3coYXJnLCAiIDw8IHN0ZDo6Zml4ZWQg
PDwgZXhwb25lbnQgPDwgIik7XG4iCi0gICAgICAgICAgIDw8ICJ9XG4iCi0gICAgICAgICAgIDw8
ICJcbiIKLSAgICAgICAgICAgPDwgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgIDw8ICJ7XG4i
Ci0gICAgICAgICAgIDw8ICIgICAgY29uc3QgZmxvYXQgYSA9ICIgPDwgc3RkOjpzY2llbnRpZmlj
IDw8IGJhc2UgPDwgIjtcbiIKLSAgICAgICAgICAgPDwgIiAgICBmbG9hdCBiID0gZnVuKGEpO1xu
IgotICAgICAgICAgICA8PCAiICAgIGlmIChhYnMoIiA8PCByZXN1bHQgPDwgIiAtIGIpIDwgIiA8
PCBzdGQ6OmFicyhyZXN1bHQgKiAwLjAwMSkgPDwgIilcbiIKLSAgICAgICAgICAgPDwgIiAgICB7
XG4iCi0gICAgICAgICAgIDw8ICIgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAs
IDAuMCwgMS4wKTtcbiIKLSAgICAgICAgICAgPDwgIiAgICB9XG4iCi0gICAgICAgICAgIDw8ICIg
ICAgZWxzZVxuIgotICAgICAgICAgICA8PCAiICAgIHtcbiIKLSAgICAgICAgICAgPDwgIiAgICAg
ICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApO1xuIgotICAgICAgICAg
ICA8PCAiICAgIH1cbiIKLSAgICAgICAgICAgPDwgIn1cbiI7Ci0KLSAgICByZXR1cm4gc3RyZWFt
LnN0cigpOwotfQotCi0vLyBDb3ZlcnMgdGhlIFdlYkdMIHRlc3QgJ2dsc2wvYnVncy9wb3ctb2Yt
c21hbGwtY29uc3RhbnQtaW4tdXNlci1kZWZpbmVkLWZ1bmN0aW9uJwotLy8gU2VlIGh0dHA6Ly9h
bmdsZWJ1Zy5jb20vODUxCi1URVNUX1AoR0xTTFRlc3QsIFBvd09mU21hbGxDb25zdGFudCkKLXsK
LSAgICBzdGQ6OnZlY3Rvcjxkb3VibGU+IGJhZHM7Ci0gICAgZm9yIChpbnQgZXBzID0gLTE7IGVw
cyA8PSAxOyArK2VwcykKLSAgICB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAtNDsgaSA8PSA1OyAr
K2kpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChpID49IC0xICYmIGkgPD0gMSkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGNvbnN0IGRvdWJsZSBlcHNpbG9uID0g
MS4wZS04OwotICAgICAgICAgICAgZG91YmxlIGJhZCAgICAgICAgICAgPSBzdGF0aWNfY2FzdDxk
b3VibGU+KGkpICsgc3RhdGljX2Nhc3Q8ZG91YmxlPihlcHMpICogZXBzaWxvbjsKLSAgICAgICAg
ICAgIGJhZHMucHVzaF9iYWNrKGJhZCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKGRv
dWJsZSBiYWQgOiBiYWRzKQotICAgIHsKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdt
ZW50U2hhZGVyU291cmNlID0gR2VuZXJhdGVTbWFsbFBvd1NoYWRlcigxLjBlLTYsIGJhZCk7Ci0K
LSAgICAgICAgQU5HTEVfR0xfUFJPR1JBTShwcm9ncmFtLCBtU2ltcGxlVlNTb3VyY2UsIGZyYWdt
ZW50U2hhZGVyU291cmNlKTsKLQotICAgICAgICBkcmF3UXVhZChwcm9ncmFtLmdldCgpLCAiaW5w
dXRBdHRyaWJ1dGUiLCAwLjVmKTsKLQotICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwg
MCwgR0xDb2xvcjo6Z3JlZW4pOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICB9
Ci19Ci0KLS8vIFRlc3QgdGhhdCBmcmFnbWVudCBzaGFkZXJzIHdoaWNoIGNvbnRhaW4gbm9uLWNv
bnN0YW50IGxvb3AgaW5kZXhlcnMgYW5kIGNvbXBpbGVkIGZvciBGTDlfMyBhbmQKLS8vIGJlbG93
Ci0vLyBmYWlsIHdpdGggYSBzcGVjaWZpYyBlcnJvciBtZXNzYWdlLgotLy8gQWRkaXRpb25hbGx5
IHRlc3QgdGhhdCB0aGUgc2FtZSBmcmFnbWVudCBzaGFkZXIgY29tcGlsZXMgc3VjY2Vzc2Z1bGx5
IHdpdGggZmVhdHVyZSBsZXZlbHMgZ3JlYXRlcgotLy8gdGhhbiBGTDlfMy4KLVRFU1RfUChHTFNM
VGVzdCwgTG9vcEluZGV4aW5nVmFsaWRhdGlvbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBm
cmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIHByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0OwotCi0gICAgICAgIHVuaWZvcm0gZmxvYXQgbG9vcE1heDsKLQot
ICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KDEsIDAsIDAsIDEpOwotICAgICAgICAgICAgZm9yIChmbG9hdCBsID0gMC4wOyBsIDwg
bG9vcE1heDsgbCsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChsb29wTWF4
ID4gMy4wKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZ2xfRnJhZ0Nv
bG9yLmEgKz0gMC4xOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICk7Ci0KLSAgICBHTHVpbnQgc2hhZGVyID0gZ2xDcmVhdGVTaGFkZXIoR0xfRlJBR01F
TlRfU0hBREVSKTsKLQotICAgIGNvbnN0IGNoYXIgKnNvdXJjZUFycmF5WzFdID0ge2ZyYWdtZW50
U2hhZGVyU291cmNlLmNfc3RyKCl9OwotICAgIGdsU2hhZGVyU291cmNlKHNoYWRlciwgMSwgc291
cmNlQXJyYXksIG51bGxwdHIpOwotICAgIGdsQ29tcGlsZVNoYWRlcihzaGFkZXIpOwotCi0gICAg
R0xpbnQgY29tcGlsZVJlc3VsdDsKLSAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR0xfQ09NUElM
RV9TVEFUVVMsICZjb21waWxlUmVzdWx0KTsKLQotICAgIC8vIElmIHRoZSB0ZXN0IGlzIGNvbmZp
Z3VyZWQgdG8gcnVuIGxpbWl0ZWQgdG8gRmVhdHVyZSBMZXZlbCA5XzMsIHRoZW4gaXQgaXMKLSAg
ICAvLyBhc3N1bWVkIHRoYXQgc2hhZGVyIGNvbXBpbGF0aW9uIHdpbGwgZmFpbCB3aXRoIGFuIGV4
cGVjdGVkIGVycm9yIG1lc3NhZ2UgY29udGFpbmluZwotICAgIC8vICJMb29wIGluZGV4IGNhbm5v
dCBiZSBjb21wYXJlZCB3aXRoIG5vbi1jb25zdGFudCBleHByZXNzaW9uIgotICAgIGlmICgoR2V0
UGFyYW0oKSA9PSBFUzJfRDNEMTFfRkw5XzMoKSB8fCBHZXRQYXJhbSgpID09IEVTMl9EM0Q5KCkp
KQotICAgIHsKLSAgICAgICAgaWYgKGNvbXBpbGVSZXN1bHQgIT0gMCkKLSAgICAgICAgewotICAg
ICAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3Rl
ZCBmYWlsdXJlIjsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEdMaW50IGluZm9Mb2dMZW5ndGg7Ci0gICAgICAgICAgICBnbEdldFNoYWRlcml2KHNoYWRl
ciwgR0xfSU5GT19MT0dfTEVOR1RILCAmaW5mb0xvZ0xlbmd0aCk7Ci0KLSAgICAgICAgICAgIHN0
ZDo6c3RyaW5nIGluZm9Mb2c7Ci0gICAgICAgICAgICBpbmZvTG9nLnJlc2l6ZShpbmZvTG9nTGVu
Z3RoKTsKLSAgICAgICAgICAgIGdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIHN0YXRpY19jYXN0
PEdMc2l6ZWk+KGluZm9Mb2cuc2l6ZSgpKSwgTlVMTCwgJmluZm9Mb2dbMF0pOwotCi0gICAgICAg
ICAgICBpZiAoaW5mb0xvZy5maW5kKCJMb29wIGluZGV4IGNhbm5vdCBiZSBjb21wYXJlZCB3aXRo
IG5vbi1jb25zdGFudCBleHByZXNzaW9uIikgPT0KLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmlu
Zzo6bnBvcykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBGQUlMKCkgPDwgIlNoYWRl
ciBjb21waWxhdGlvbiBmYWlsZWQgd2l0aCB1bmV4cGVjdGVkIGVycm9yIG1lc3NhZ2UiOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIEVY
UEVDVF9ORSgwLCBjb21waWxlUmVzdWx0KTsKLSAgICB9Ci0KLSAgICBpZiAoc2hhZGVyICE9IDAp
Ci0gICAgewotICAgICAgICBnbERlbGV0ZVNoYWRlcihzaGFkZXIpOwotICAgIH0KLX0KLQotLy8g
VGVzdHMgdGhhdCB0aGUgbWF4aW11bSB1bmlmb3JtcyBjb3VudCByZXR1cm5lZCBmcm9tIHF1ZXJ5
aW5nIEdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTCi0vLyBjYW4gYWN0dWFsbHkgYmUgdXNl
ZC4KLVRFU1RfUChHTFNMVGVzdCwgVmVyaWZ5TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMpCi17Ci0g
ICAgaW50IG1heFVuaWZvcm1zID0gMTAwMDA7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkVS
VEVYX1VOSUZPUk1fVkVDVE9SUywgJm1heFVuaWZvcm1zKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKLSAgICBzdGQ6OmNvdXQgPDwgIlZhbGlkYXRpbmcgR0xfTUFYX1ZFUlRFWF9VTklGT1JN
X1ZFQ1RPUlMgPSAiIDw8IG1heFVuaWZvcm1zIDw8IHN0ZDo6ZW5kbDsKLQotICAgIENvbXBpbGVH
TFNMV2l0aFVuaWZvcm1zQW5kU2FtcGxlcnMobWF4VW5pZm9ybXMsIDAsIDAsIDAsIHRydWUpOwot
fQotCi0vLyBUZXN0cyB0aGF0IHRoZSBtYXhpbXVtIHVuaWZvcm1zIGNvdW50IHJldHVybmVkIGZy
b20gcXVlcnlpbmcgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMKLS8vIGNhbiBhY3R1YWxs
eSBiZSB1c2VkIGFsb25nIHdpdGggdGhlIG1heGltdW0gbnVtYmVyIG9mIHRleHR1cmUgc2FtcGxl
cnMuCi1URVNUX1AoR0xTTFRlc3QsIFZlcmlmeU1heFZlcnRleFVuaWZvcm1WZWN0b3JzV2l0aFNh
bXBsZXJzKQotewotICAgIGlmIChHZXRQYXJhbSgpLmVnbFBhcmFtZXRlcnMucmVuZGVyZXIgPT0g
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFIHx8Ci0gICAgICAgIEdldFBhcmFt
KCkuZWdsUGFyYW1ldGVycy5yZW5kZXJlciA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVO
R0xFU19BTkdMRSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBv
biBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
bnQgbWF4VW5pZm9ybXMgPSAxMDAwMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WRVJURVhf
VU5JRk9STV9WRUNUT1JTLCAmbWF4VW5pZm9ybXMpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OwotICAgIHN0ZDo6Y291dCA8PCAiVmFsaWRhdGluZyBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVD
VE9SUyA9ICIgPDwgbWF4VW5pZm9ybXMgPDwgc3RkOjplbmRsOwotCi0gICAgaW50IG1heFRleHR1
cmVJbWFnZVVuaXRzID0gMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WRVJURVhfVEVYVFVS
RV9JTUFHRV9VTklUUywgJm1heFRleHR1cmVJbWFnZVVuaXRzKTsKLQotICAgIENvbXBpbGVHTFNM
V2l0aFVuaWZvcm1zQW5kU2FtcGxlcnMobWF4VW5pZm9ybXMsIDAsIG1heFRleHR1cmVJbWFnZVVu
aXRzLCAwLCB0cnVlKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgbWF4aW11bSB1bmlmb3JtcyBj
b3VudCArIDEgZnJvbSBxdWVyeWluZyBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUwotLy8g
ZmFpbHMgc2hhZGVyIGNvbXBpbGF0aW9uLgotVEVTVF9QKEdMU0xUZXN0LCBWZXJpZnlNYXhWZXJ0
ZXhVbmlmb3JtVmVjdG9yc0V4Y2VlZGVkKQotewotICAgIGludCBtYXhVbmlmb3JtcyA9IDEwMDAw
OwotICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMsICZtYXhV
bmlmb3Jtcyk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgc3RkOjpjb3V0IDw8ICJW
YWxpZGF0aW5nIEdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTICsgMSA9ICIgPDwgbWF4VW5p
Zm9ybXMgKyAxIDw8IHN0ZDo6ZW5kbDsKLQotICAgIENvbXBpbGVHTFNMV2l0aFVuaWZvcm1zQW5k
U2FtcGxlcnMobWF4VW5pZm9ybXMgKyAxLCAwLCAwLCAwLCBmYWxzZSk7Ci19Ci0KLS8vIFRlc3Rz
IHRoYXQgdGhlIG1heGltdW0gdW5pZm9ybXMgY291bnQgcmV0dXJuZWQgZnJvbSBxdWVyeWluZyBH
TF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTCi0vLyBjYW4gYWN0dWFsbHkgYmUgdXNlZC4K
LVRFU1RfUChHTFNMVGVzdCwgVmVyaWZ5TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycykKLXsKLSAg
ICBpbnQgbWF4VW5pZm9ybXMgPSAxMDAwMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX01BWF9GUkFH
TUVOVF9VTklGT1JNX1ZFQ1RPUlMsICZtYXhVbmlmb3Jtcyk7Ci0gICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7Ci0gICAgc3RkOjpjb3V0IDw8ICJWYWxpZGF0aW5nIEdMX01BWF9GUkFHTUVOVF9VTklG
T1JNX1ZFQ1RPUlMgPSAiIDw8IG1heFVuaWZvcm1zIDw8IHN0ZDo6ZW5kbDsKLQotICAgIENvbXBp
bGVHTFNMV2l0aFVuaWZvcm1zQW5kU2FtcGxlcnMoMCwgbWF4VW5pZm9ybXMsIDAsIDAsIHRydWUp
OwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBtYXhpbXVtIHVuaWZvcm1zIGNvdW50IHJldHVybmVk
IGZyb20gcXVlcnlpbmcgR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUwotLy8gY2FuIGFj
dHVhbGx5IGJlIHVzZWQgYWxvbmcgd2l0aCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGV4dHVyZSBz
YW1wbGVycy4KLVRFU1RfUChHTFNMVGVzdCwgVmVyaWZ5TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9y
c1dpdGhTYW1wbGVycykKLXsKLSAgICBpZiAoR2V0UGFyYW0oKS5lZ2xQYXJhbWV0ZXJzLnJlbmRl
cmVyID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSB8fAotICAgICAgICBH
ZXRQYXJhbSgpLmVnbFBhcmFtZXRlcnMucmVuZGVyZXIgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfT1BFTkdMRVNfQU5HTEUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlz
YWJsZWQgb24gT3BlbkdMLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaW50IG1heFVuaWZvcm1zID0gMTAwMDA7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhf
RlJBR01FTlRfVU5JRk9STV9WRUNUT1JTLCAmbWF4VW5pZm9ybXMpOwotICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOwotCi0gICAgaW50IG1heFRleHR1cmVJbWFnZVVuaXRzID0gMDsKLSAgICBnbEdl
dEludGVnZXJ2KEdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmbWF4VGV4dHVyZUltYWdlVW5p
dHMpOwotCi0gICAgQ29tcGlsZUdMU0xXaXRoVW5pZm9ybXNBbmRTYW1wbGVycygwLCBtYXhVbmlm
b3JtcywgMCwgbWF4VGV4dHVyZUltYWdlVW5pdHMsIHRydWUpOwotfQotCi0vLyBUZXN0cyB0aGF0
IHRoZSBtYXhpbXVtIHVuaWZvcm1zIGNvdW50ICsgMSBmcm9tIHF1ZXJ5aW5nIEdMX01BWF9GUkFH
TUVOVF9VTklGT1JNX1ZFQ1RPUlMKLS8vIGZhaWxzIHNoYWRlciBjb21waWxhdGlvbi4KLVRFU1Rf
UChHTFNMVGVzdCwgVmVyaWZ5TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9yc0V4Y2VlZGVkKQotewot
ICAgIGludCBtYXhVbmlmb3JtcyA9IDEwMDAwOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX0ZS
QUdNRU5UX1VOSUZPUk1fVkVDVE9SUywgJm1heFVuaWZvcm1zKTsKLSAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKLSAgICBzdGQ6OmNvdXQgPDwgIlZhbGlkYXRpbmcgR0xfTUFYX0ZSQUdNRU5UX1VO
SUZPUk1fVkVDVE9SUyArIDEgPSAiIDw8IG1heFVuaWZvcm1zICsgMQotICAgICAgICAgICAgICA8
PCBzdGQ6OmVuZGw7Ci0KLSAgICBDb21waWxlR0xTTFdpdGhVbmlmb3Jtc0FuZFNhbXBsZXJzKDAs
IG1heFVuaWZvcm1zICsgMSwgMCwgMCwgZmFsc2UpOwotfQotCi0vLyBUZXN0IHRoYXQgdHdvIGNv
bnN0cnVjdG9ycyB3aGljaCBoYXZlIHZlYzQgYW5kIG1hdDIgcGFyYW1ldGVycyBnZXQgZGlzYW1i
aWd1YXRlZCAoaXNzdWUgaW4KLS8vIEhMU0wpLgotVEVTVF9QKEdMU0xUZXN0X0VTMywgQW1iaWd1
b3VzQ29uc3RydWN0b3JDYWxsMngyKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50
U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJl
Y2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xu
IgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBt
eV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKLSAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAgImluIHZlYzQg
YV92ZWM7XG4iCi0gICAgICAgICJpbiBtYXQyIGFfbWF0O1xuIgotICAgICAgICAidm9pZCBtYWlu
KClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV92
ZWMpICsgdmVjNChhX21hdCk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIEdMdWludCBwcm9ncmFt
ID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJj
ZSk7Ci0gICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKLX0KLQotLy8gVGVzdCB0aGF0IHR3byBj
b25zdHJ1Y3RvcnMgd2hpY2ggaGF2ZSBtYXQyeDMgYW5kIG1hdDN4MiBwYXJhbWV0ZXJzIGdldCBk
aXNhbWJpZ3VhdGVkLgotLy8gVGhpcyB3YXMgc3VzcGVjdGVkIHRvIGJlIGFuIGlzc3VlIGluIEhM
U0wsIGJ1dCBITFNMIHNlZW1zIHRvIGJlIGFibGUgdG8gbmF0aXZlbHkgY2hvb3NlIGJldHdlZW4K
LS8vIHRoZSBmdW5jdGlvbiBzaWduYXR1cmVzIGluIHRoaXMgY2FzZS4KLVRFU1RfUChHTFNMVGVz
dF9FUzMsIEFtYmlndW91c0NvbnN0cnVjdG9yQ2FsbDJ4MykKLXsKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIK
LSAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15
X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0g
ICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgotICAgICAgICAifSI7Ci0K
LSAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCi0gICAg
ICAgICJpbiBtYXQzeDIgYV9tYXRBO1xuIgotICAgICAgICAiaW4gbWF0MngzIGFfbWF0QjtcbiIK
LSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgZ2xf
UG9zaXRpb24gPSB2ZWM0KGFfbWF0QSkgKyB2ZWM0KGFfbWF0Qik7XG4iCi0gICAgICAgICJ9IjsK
LQotICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNl
LCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKLX0K
LQotLy8gVGVzdCB0aGF0IHR3byBmdW5jdGlvbnMgd2hpY2ggaGF2ZSB2ZWM0IGFuZCBtYXQyIHBh
cmFtZXRlcnMgZ2V0IGRpc2FtYmlndWF0ZWQgKGlzc3VlIGluIEhMU0wpLgotVEVTVF9QKEdMU0xU
ZXN0X0VTMywgQW1iaWd1b3VzRnVuY3Rpb25DYWxsMngyKQotewotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgot
ICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlf
RnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAg
ICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9IjsKLQot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIjdmVy
c2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAg
ICAgImluIHZlYzQgYV92ZWM7XG4iCi0gICAgICAgICJpbiBtYXQyIGFfbWF0O1xuIgotICAgICAg
ICAidmVjNCBmb28odmVjNCBhKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIHJldHVy
biBhO1xuIgotICAgICAgICAifVxuIgotICAgICAgICAidmVjNCBmb28obWF0MiBhKVxuIgotICAg
ICAgICAie1xuIgotICAgICAgICAiICAgIHJldHVybiB2ZWM0KGFbMF1bMF0pO1xuIgotICAgICAg
ICAifVxuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAg
IiAgICBnbF9Qb3NpdGlvbiA9IGZvbyhhX3ZlYykgKyBmb28oYV9tYXQpO1xuIgotICAgICAgICAi
fSI7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNv
dXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7
Ci19Ci0KLS8vIFRlc3QgdGhhdCBhbiB1c2VyLWRlZmluZWQgZnVuY3Rpb24gd2l0aCBhIGxhcmdl
IG51bWJlciBvZiBmbG9hdDQgcGFyYW1ldGVycyBkb2Vzbid0IGZhaWwgZHVlIHRvCi0vLyB0aGUg
ZnVuY3Rpb24gbmFtZSBiZWluZyB0b28gbG9uZy4KLVRFU1RfUChHTFNMVGVzdF9FUzMsIExhcmdl
TnVtYmVyT2ZGbG9hdDRQYXJhbWV0ZXJzKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdt
ZW50U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAi
cHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9y
O1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAg
ICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIHN0ZDo6
c3RyaW5nc3RyZWFtIHZlcnRleFNoYWRlclN0cmVhbTsKLSAgICBjb25zdCB1bnNpZ25lZCBpbnQg
cGFyYW1Db3VudCA9IDEwMjR1OwotCi0gICAgdmVydGV4U2hhZGVyU3RyZWFtIDw8ICIjdmVyc2lv
biAzMDAgZXNcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBm
bG9hdDtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImluIHZlYzQgYV92ZWM7XG4iCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICJ2ZWM0IGxvdHNPZlZlYzRQYXJhbWV0ZXJzKCI7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwYXJhbUNvdW50OyArK2kpCi0gICAgewot
ICAgICAgICB2ZXJ0ZXhTaGFkZXJTdHJlYW0gPDwgInZlYzQgYSIgPDwgaSA8PCAiLCAiOwotICAg
IH0KLSAgICB2ZXJ0ZXhTaGFkZXJTdHJlYW0gPDwgInZlYzQgYUxhc3QpXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0
dXJuICI7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwYXJhbUNvdW50OyArK2kp
Ci0gICAgewotICAgICAgICB2ZXJ0ZXhTaGFkZXJTdHJlYW0gPDwgImEiIDw8IGkgPDwgIiArICI7
Ci0gICAgfQotICAgIHZlcnRleFNoYWRlclN0cmVhbSA8PCAiYUxhc3Q7XG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJ2b2lkIG1h
aW4oKVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gbG90c09mVmVjNFBhcmFtZXRlcnMoIjsKLSAg
ICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBhcmFtQ291bnQ7ICsraSkKLSAgICB7Ci0g
ICAgICAgIHZlcnRleFNoYWRlclN0cmVhbSA8PCAiYV92ZWMsICI7Ci0gICAgfQotICAgIHZlcnRl
eFNoYWRlclN0cmVhbSA8PCAiYV92ZWMpO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAi
fSI7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclN0
cmVhbS5zdHIoKSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9ORSgwdSwgcHJv
Z3JhbSk7Ci19Ci0KLS8vIFRoaXMgdGVzdCB3YXMgd3JpdHRlbiBzcGVjaWZpY2FsbHkgdG8gc3Ry
ZXNzIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzIEFTVCB0cmFuc2Zvcm1hdGlvbi4KLS8vIFRlc3Qg
YSBzaGFkZXIgd2hlcmUgYSBnbG9iYWwgY29uc3RhbnQgYXJyYXkgaXMgaW5pdGlhbGl6ZWQgd2l0
aCBhbiBleHByZXNzaW9uIGNvbnRhaW5pbmcgYXJyYXkKLS8vIGluZGV4aW5nLiBUaGlzIGluaXRp
YWxpemVyIGlzIHRyaWNreSB0byBjb25zdGFudCBmb2xkLCBzbyBpZiBpdCdzIG5vdCBjb25zdGFu
dCBmb2xkZWQgaXQgbmVlZHMgdG8KLS8vIGJlIGhhbmRsZWQgaW4gYSB3YXkgdGhhdCBkb2Vzbid0
IGdlbmVyYXRlIHN0YXRlbWVudHMgaW4gdGhlIGdsb2JhbCBzY29wZSBpbiBITFNMIG91dHB1dC4K
LS8vIEFsc28gaW5jbHVkZXMgbXVsdGlwbGUgYXJyYXkgaW5pdGlhbGl6ZXJzIGluIG9uZSBkZWNs
YXJhdGlvbiwgd2hlcmUgb25seSB0aGUgc2Vjb25kIG9uZSBoYXMKLS8vIGFycmF5IGluZGV4aW5n
LiBUaGlzIG1ha2VzIHN1cmUgdGhhdCB0aGUgcXVhbGlmaWVyIGZvciB0aGUgZGVjbGFyYXRpb24g
aXMgc2V0IGNvcnJlY3RseSBpZgotLy8gdHJhbnNmb3JtYXRpb25zIGFyZSBhcHBsaWVkIHRvIHRo
ZSBkZWNsYXJhdGlvbiBhbHNvIGluIHRoZSBjYXNlIG9mIEVTU0wgb3V0cHV0LgotVEVTVF9QKEdM
U0xUZXN0X0VTMywgSW5pdEdsb2JhbEFycmF5V2l0aEFycmF5SW5kZXhpbmcpCi17Ci0gICAgLy8g
VE9ETyh5bm92aWtvdik6IHJlLWVuYWJsZSBvbmNlIHJvb3QgY2F1c2Ugb2YgaHR0cDovL2FuZ2xl
YnVnLmNvbS8xNDI4IGlzIGZpeGVkCi0gICAgaWYgKElzQW5kcm9pZCgpICYmIElzQWRyZW5vKCkg
JiYgSXNPcGVuR0xFUygpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBw
ZWQgb24gQWRyZW5vIE9wZW5HTEVTIG9uIEFuZHJvaWQuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3Vy
Y2UgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gaGln
aHAgZmxvYXQ7XG4iCi0gICAgICAgICJpbiB2ZWM0IGFfdmVjO1xuIgotICAgICAgICAidm9pZCBt
YWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQo
YV92ZWMpO1xuIgotICAgICAgICAifSI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVu
dFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInBy
ZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtc
biIKLSAgICAgICAgImNvbnN0IGhpZ2hwIGZsb2F0IGZbMl0gPSBmbG9hdFsyXSgwLjEsIDAuMik7
XG4iCi0gICAgICAgICJjb25zdCBoaWdocCBmbG9hdFsyXSBnID0gZmxvYXRbMl0oMC4zLCAwLjQp
LCBoID0gZmxvYXRbMl0oMC41LCBmWzFdKTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0g
ICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNChoWzFdKTtcbiIK
LSAgICAgICAgIn0iOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0
ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBFWFBFQ1RfTkUoMHUs
IHByb2dyYW0pOwotfQotCi0vLyBUZXN0IHRoYXQgaW5kZXgtY29uc3RhbnQgc2FtcGxlciBhcnJh
eSBpbmRleGluZyBpcyBzdXBwb3J0ZWQuCi1URVNUX1AoR0xTTFRlc3QsIEluZGV4Q29uc3RhbnRT
YW1wbGVyQXJyYXlJbmRleGluZykKLXsKLSAgICBpZiAoSXNEM0QxMV9GTDkzKCkpIHsKLSAgICAg
ICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gRDNEMTEgRkwgOS4zLiIgPDwgc3RkOjpl
bmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVy
dGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjtcbiIK
LSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgICBn
bF9Qb3NpdGlvbiA9IHZQb3NpdGlvbjtcbiIKLSAgICAgICAgIn0iOwotCi0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB1bmlbMl07XG4iCi0gICAg
ICAgICJcbiIKLSAgICAgICAgImZsb2F0IHplcm8oaW50IHgpXG4iCi0gICAgICAgICJ7XG4iCi0g
ICAgICAgICIgICAgcmV0dXJuIGZsb2F0KHgpIC0gZmxvYXQoeCk7XG4iCi0gICAgICAgICJ9XG4i
Ci0gICAgICAgICJcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0g
ICAgICAgICIgICAgdmVjNCBjID0gdmVjNCgwLDAsMCwwKTtcbiIKLSAgICAgICAgIiAgICBmb3Ig
KGludCBpaSA9IDE7IGlpIDwgMzsgKytpaSkge1xuIgotICAgICAgICAiICAgICAgICBpZiAoYy54
ID4gMjU1LjApIHtcbiIKLSAgICAgICAgIiAgICAgICAgICAgIGMueCA9IDI1NS4wICsgemVybyhp
aSk7XG4iCi0gICAgICAgICIgICAgICAgICAgICBicmVhaztcbiIKLSAgICAgICAgIiAgICAgICAg
fVxuIgotICAgICAgICAvLyBJbmRleCB0aGUgc2FtcGxlciBhcnJheSB3aXRoIGEgcHJlZGljdGFi
bGUgbG9vcCBpbmRleCAoaW5kZXgtY29uc3RhbnQpIGFzIG9wcG9zZWQgdG8KLSAgICAgICAgLy8g
YSB0cnVlIGNvbnN0YW50LiBUaGlzIGlzIHZhbGlkIGluIE9wZW5HTCBFUyBidXQgaXNuJ3QgaW4g
bWFueSBEZXNrdG9wIE9wZW5HTCB2ZXJzaW9ucywKLSAgICAgICAgLy8gd2l0aG91dCBhbiBleHRl
bnNpb24uCi0gICAgICAgICIgICAgICAgIGMgKz0gdGV4dHVyZTJEKHVuaVtpaSAtIDFdLCB2ZWMy
KDAuNSwgMC41KSk7XG4iCi0gICAgICAgICIgICAgfVxuIgotICAgICAgICAiICAgIGdsX0ZyYWdD
b2xvciA9IGM7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGls
ZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAg
RVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKLX0KLQotLy8gVGVzdCB0aGF0IHRoZSAjcHJhZ21hIGRp
cmVjdGl2ZSBpcyBzdXBwb3J0ZWQgYW5kIGRvZXNuJ3QgdHJpZ2dlciBhIGNvbXBpbGF0aW9uIGZh
aWx1cmUgb24gdGhlCi0vLyBuYXRpdmUgZHJpdmVyLiBUaGUgb25seSBwcmFnbWEgdGhhdCBnZXRz
IHBhc3NlZCB0byB0aGUgT3BlbkdMIGRyaXZlciBpcyAiaW52YXJpYW50IiBidXQgd2UgZG9uJ3QK
LS8vIHdhbnQgdG8gdGVzdCBpdHMgYmVoYXZpb3IsIHNvIGRvbid0IHVzZSBhbnkgdmFyeWluZ3Mu
Ci1URVNUX1AoR0xTTFRlc3QsIFByYWdtYURpcmVjdGl2ZSkKLXsKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAiI3ByYWdtYSBTVERHTCBpbnZhcmlh
bnQoYWxsKVxuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAg
ICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTtcbiIKLSAgICAg
ICAgIn1cbiI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9
Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZvaWQgbWFp
bigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgx
LjApO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgRVhQ
RUNUX05FKDB1LCBwcm9ncmFtKTsKLX0KLQotLy8gU2VxdWVuY2Ugb3BlcmF0b3IgZXZhbHVhdGVz
IG9wZXJhbmRzIGZyb20gbGVmdCB0byByaWdodCAoRVNTTCAzLjAwIHNlY3Rpb24gNS45KS4KLS8v
IFRoZSBmdW5jdGlvbiBjYWxsIHRoYXQgcmV0dXJucyB0aGUgYXJyYXkgbmVlZHMgdG8gYmUgZXZh
bHVhdGVkIGFmdGVyICsraiBmb3IgdGhlIGV4cHJlc3Npb24gdG8KLS8vIHJldHVybiB0aGUgY29y
cmVjdCB2YWx1ZSAodHJ1ZSkuCi1URVNUX1AoR0xTTFRlc3RfRVMzLCBTZXF1ZW5jZU9wZXJhdG9y
RXZhbHVhdGlvbk9yZGVyQXJyYXkpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50
U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7
IFxuIgotICAgICAgICAiaW50WzJdIGZ1bmMoaW50IHBhcmFtKSB7XG4iCi0gICAgICAgICIgICAg
cmV0dXJuIGludFsyXShwYXJhbSwgcGFyYW0pO1xuIgotICAgICAgICAifVxuIgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgIGludCBhWzJdOyBcbiIKLSAgICAgICAgIiAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDI7ICsraSkge1xuIgotICAgICAgICAiICAgICAgICBhW2ld
ID0gMTtcbiIKLSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICIgICAgaW50IGogPSAwOyBcbiIK
LSAgICAgICAgIiAgICBib29sIHJlc3VsdCA9ICgoKytqKSwgKGEgPT0gZnVuYyhqKSkpO1xuIgot
ICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAocmVzdWx0ID8gMS4wIDogMC4w
KSwgMC4wLCAxLjApO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIEdMdWludCBwcm9ncmFtID0g
Q29tcGlsZVByb2dyYW0obVNpbXBsZVZTU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0g
ICAgQVNTRVJUX05FKDB1LCBwcm9ncmFtKTsKLQotICAgIGRyYXdRdWFkKHByb2dyYW0sICJpbnB1
dEF0dHJpYnV0ZSIsIDAuNWYpOwotCi0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdM
Q29sb3I6OmdyZWVuKTsKLX0KLQotLy8gU2VxdWVuY2Ugb3BlcmF0b3IgZXZhbHVhdGVzIG9wZXJh
bmRzIGZyb20gbGVmdCB0byByaWdodCAoRVNTTCAzLjAwIHNlY3Rpb24gNS45KS4KLS8vIFRoZSBz
aG9ydC1jaXJjdWl0aW5nIGV4cHJlc3Npb24gbmVlZHMgdG8gYmUgZXZhbHVhdGVkIGFmdGVyICsr
aiBmb3IgdGhlIGV4cHJlc3Npb24gdG8gcmV0dXJuIHRoZQotLy8gY29ycmVjdCB2YWx1ZSAodHJ1
ZSkuCi1URVNUX1AoR0xTTFRlc3RfRVMzLCBTZXF1ZW5jZU9wZXJhdG9yRXZhbHVhdGlvbk9yZGVy
U2hvcnRDaXJjdWl0KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRlclNv
dXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yOyBcbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgICBpbnQgaiA9IDA7IFxuIgotICAg
ICAgICAiICAgIGJvb2wgcmVzdWx0ID0gKCgrK2opLCAoaiA9PSAxID8gdHJ1ZSA6ICgrK2ogPT0g
MykpKTtcbiIKLSAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgKChyZXN1bHQg
JiYgaiA9PSAxKSA/IDEuMCA6IDAuMCksIDAuMCwgMS4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0K
LSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKG1TaW1wbGVWU1NvdXJjZSwgZnJh
Z21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEFTU0VSVF9ORSgwdSwgcHJvZ3JhbSk7Ci0KLSAgICBk
cmF3UXVhZChwcm9ncmFtLCAiaW5wdXRBdHRyaWJ1dGUiLCAwLjVmKTsKLQotICAgIEVYUEVDVF9Q
SVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7Ci19Ci0KLS8vIFNlcXVlbmNlIG9w
ZXJhdG9yIGV2YWx1YXRlcyBvcGVyYW5kcyBmcm9tIGxlZnQgdG8gcmlnaHQgKEVTU0wgMy4wMCBz
ZWN0aW9uIDUuOSkuCi0vLyBJbmRleGluZyB0aGUgdmVjdG9yIG5lZWRzIHRvIGJlIGV2YWx1YXRl
ZCBhZnRlciBmdW5jKCkgZm9yIHRoZSByaWdodCByZXN1bHQuCi1URVNUX1AoR0xTTFRlc3RfRVMz
LCBTZXF1ZW5jZU9wZXJhdG9yRXZhbHVhdGlvbk9yZGVyRHluYW1pY1ZlY3RvckluZGV4aW5nSW5M
VmFsdWUpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U2hhZGVyU291cmNlID0K
LSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ1
bmlmb3JtIGludCB1X3plcm87XG4iCi0gICAgICAgICJpbnQgc2lkZUVmZmVjdENvdW50ID0gMDtc
biIKLSAgICAgICAgImZsb2F0IGZ1bmMoKSB7XG4iCi0gICAgICAgICIgICAgKytzaWRlRWZmZWN0
Q291bnQ7XG4iCi0gICAgICAgICIgICAgcmV0dXJuIC0xLjA7XG4iCi0gICAgICAgICJ9XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICAgdmVjNCB2ID0gdmVjNCgwLjAs
IDIuMCwgNC4wLCA2LjApOyBcbiIKLSAgICAgICAgIiAgICBmbG9hdCBmID0gKGZ1bmMoKSwgKCsr
dlt1X3plcm8gKyBzaWRlRWZmZWN0Q291bnRdKSk7XG4iCi0gICAgICAgICIgICAgYm9vbCBncmVl
biA9IGFicyhmIC0gMy4wKSA8IDAuMDEgJiYgYWJzKHZbMV0gLSAzLjApIDwgMC4wMSAmJiBzaWRl
RWZmZWN0Q291bnQgPT0gMTtcbiIKLSAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAu
MCwgKGdyZWVuID8gMS4wIDogMC4wKSwgMC4wLCAxLjApO1xuIgotICAgICAgICAifVxuIjsKLQot
ICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0obVNpbXBsZVZTU291cmNlLCBmcmFn
bWVudFNoYWRlclNvdXJjZSk7Ci0gICAgQVNTRVJUX05FKDB1LCBwcm9ncmFtKTsKLQotICAgIGRy
YXdRdWFkKHByb2dyYW0sICJpbnB1dEF0dHJpYnV0ZSIsIDAuNWYpOwotCi0gICAgRVhQRUNUX1BJ
WEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKLX0KLQotLy8gVGVzdCB0aGF0IHVz
aW5nIGdsX1BvaW50Q29vcmQgd2l0aCBHTF9UUklBTkdMRVMgZG9lc24ndCBwcm9kdWNlIGEgbGlu
ayBlcnJvci4KLS8vIEZyb20gV2ViR0wgdGVzdCBjb25mb3JtYW5jZS9yZW5kZXJpbmcvcG9pbnQt
c3BlY2lmaWMtc2hhZGVyLXZhcmlhYmxlcy5odG1sCi0vLyBTZWUgaHR0cDovL2FuZ2xlYnVnLmNv
bS8xMzgwCi1URVNUX1AoR0xTTFRlc3QsIFJlbmRlclRyaXNXaXRoUG9pbnRDb29yZCkKLXsKLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydCA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjMiBhUG9z
aXRpb247XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAg
ICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhUG9zaXRpb24sIDAsIDEpO1xuIgotICAgICAgICAi
ICAgIGdsX1BvaW50U2l6ZSA9IDEuMDtcbiIKLSAgICAgICAgIn0iOwotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZmcmFnID0KLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0g
ICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChnbF9Qb2ludENvb3JkLnh5LCAwLCAxKTtc
biIKLSAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDEsIDAsIDEpO1xuIgotICAg
ICAgICAifSI7Ci0KLSAgICBBTkdMRV9HTF9QUk9HUkFNKHByb2csIHZlcnQsIGZyYWcpOwotICAg
IGRyYXdRdWFkKHByb2cuZ2V0KCksICJhUG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfUElY
RUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOwotfQotCi0vLyBDb252ZXJzIGEgYnVn
IHdpdGggdGhlIGludGVnZXIgcG93IHN0YXRlbWVudCB3b3JrYXJvdW5kLgotVEVTVF9QKEdMU0xU
ZXN0LCBOZXN0ZWRQb3dTdGF0ZW1lbnRzKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0
ID0KLSAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAidm9pZCBt
YWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQo
cG9zaXRpb24sIDAsIDEpO1xuIgotICAgICAgICAifSI7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
JmZyYWcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJm
bG9hdCBmdW5jKGZsb2F0IHYpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICBmbG9hdCBm
MSA9IHBvdyh2LCAyLjApO1xuIgotICAgICAgICAiICAgcmV0dXJuIHBvdyhmMSArIHYsIDIuMCk7
XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xu
IgotICAgICAgICAiICAgIGZsb2F0IHYgPSBmdW5jKDIuMCk7XG4iCi0gICAgICAgICIgICAgZ2xf
RnJhZ0NvbG9yID0gYWJzKHYgLSAzNi4wKSA8IDAuMDAxID8gdmVjNCgwLCAxLCAwLCAxKSA6IHZl
YzQoMSwgMCwgMCwgMSk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIEFOR0xFX0dMX1BST0dSQU0o
cHJvZywgdmVydCwgZnJhZyk7Ci0gICAgZHJhd1F1YWQocHJvZy5nZXQoKSwgInBvc2l0aW9uIiwg
MC41Zik7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsK
LX0KLQotLy8gQ29udmVycyBhIGJ1ZyB3aXRoIHRoZSB1bmFyeSBtaW51cyBvcGVyYXRvciBvbiBz
aWduZWQgaW50ZWdlciB3b3JrYXJvdW5kLgotVEVTVF9QKEdMU0xUZXN0X0VTMywgVW5hcnlNaW51
c09wZXJhdG9yU2lnbmVkSW50KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ID0KLSAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAiaW4gaGlnaHAgdmVjNCBwb3NpdGlv
bjtcbiIKLSAgICAgICAgIm91dCBtZWRpdW1wIHZlYzQgdl9jb2xvcjtcbiIKLSAgICAgICAgInVu
aWZvcm0gaW50IHVpX29uZTtcbiIKLSAgICAgICAgInVuaWZvcm0gaW50IHVpX3R3bztcbiIKLSAg
ICAgICAgInVuaWZvcm0gaW50IHVpX3RocmVlO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xu
IgotICAgICAgICAiICAgIGludCBzWzNdO1xuIgotICAgICAgICAiICAgIHNbMF0gPSB1aV9vbmU7
XG4iCi0gICAgICAgICIgICAgc1sxXSA9IC0oLSgtdWlfdHdvICsgMSkgKyAxKTtcbiIgIC8vIHNb
MV0gPSAtdWlfdHdvCi0gICAgICAgICIgICAgc1syXSA9IHVpX3RocmVlO1xuIgotICAgICAgICAi
ICAgIGludCByZXN1bHQgPSAwO1xuIgotICAgICAgICAiICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
dWlfdGhyZWU7IGkrKykge1xuIgotICAgICAgICAiICAgICAgICByZXN1bHQgKz0gc1tpXTtcbiIK
LSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICIgICAgdl9jb2xvciA9IChyZXN1bHQgPT0gMikg
PyB2ZWM0KDAsIDEsIDAsIDEpIDogdmVjNCgxLCAwLCAwLCAxKTtcbiIKLSAgICAgICAgIiAgICBn
bF9Qb3NpdGlvbiA9IHBvc2l0aW9uO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb25zdCBzdGQ6
OnN0cmluZyAmZnJhZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgImlu
IG1lZGl1bXAgdmVjNCB2X2NvbG9yO1xuIgotICAgICAgICAibGF5b3V0KGxvY2F0aW9uPTApIG91
dCBtZWRpdW1wIHZlYzQgb19jb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAg
ICAgICAgIiAgICBvX2NvbG9yID0gdl9jb2xvcjtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBB
TkdMRV9HTF9QUk9HUkFNKHByb2csIHZlcnQsIGZyYWcpOwotCi0gICAgZ2w6OkNvbnRleHQgKmNv
bnRleHQgICA9IHJlaW50ZXJwcmV0X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oZ2V0RUdMV2luZG93KCkt
PmdldENvbnRleHQoKSk7Ci0gICAgZ2w6OlByb2dyYW0gKmdsUHJvZ3JhbSA9IGNvbnRleHQtPmdl
dFByb2dyYW0ocHJvZy5nZXQoKSk7Ci0gICAgR0xpbnQgb25lSW5kZXggICAgICAgICA9IGdsUHJv
Z3JhbS0+Z2V0VW5pZm9ybUxvY2F0aW9uKCJ1aV9vbmUiKTsKLSAgICBBU1NFUlRfTkUoLTEsIG9u
ZUluZGV4KTsKLSAgICBHTGludCB0d29JbmRleCA9IGdsUHJvZ3JhbS0+Z2V0VW5pZm9ybUxvY2F0
aW9uKCJ1aV90d28iKTsKLSAgICBBU1NFUlRfTkUoLTEsIHR3b0luZGV4KTsKLSAgICBHTGludCB0
aHJlZUluZGV4ID0gZ2xQcm9ncmFtLT5nZXRVbmlmb3JtTG9jYXRpb24oInVpX3RocmVlIik7Ci0g
ICAgQVNTRVJUX05FKC0xLCB0aHJlZUluZGV4KTsKLSAgICBnbFVzZVByb2dyYW0ocHJvZy5nZXQo
KSk7Ci0gICAgZ2xVbmlmb3JtMWkob25lSW5kZXgsIDEpOwotICAgIGdsVW5pZm9ybTFpKHR3b0lu
ZGV4LCAyKTsKLSAgICBnbFVuaWZvcm0xaSh0aHJlZUluZGV4LCAzKTsKLQotICAgIGRyYXdRdWFk
KHByb2cuZ2V0KCksICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9F
USgwLCAwLCBHTENvbG9yOjpncmVlbik7Ci19Ci0KLS8vIENvbnZlcnMgYSBidWcgd2l0aCB0aGUg
dW5hcnkgbWludXMgb3BlcmF0b3Igb24gdW5zaWduZWQgaW50ZWdlciB3b3JrYXJvdW5kLgotVEVT
VF9QKEdMU0xUZXN0X0VTMywgVW5hcnlNaW51c09wZXJhdG9yVW5zaWduZWRJbnQpCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnZlcnQgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0g
ICAgICAgICJpbiBoaWdocCB2ZWM0IHBvc2l0aW9uO1xuIgotICAgICAgICAib3V0IG1lZGl1bXAg
dmVjNCB2X2NvbG9yO1xuIgotICAgICAgICAidW5pZm9ybSB1aW50IHVpX29uZTtcbiIKLSAgICAg
ICAgInVuaWZvcm0gdWludCB1aV90d287XG4iCi0gICAgICAgICJ1bmlmb3JtIHVpbnQgdWlfdGhy
ZWU7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICAgdWludCBzWzNd
O1xuIgotICAgICAgICAiICAgIHNbMF0gPSB1aV9vbmU7XG4iCi0gICAgICAgICIgICAgc1sxXSA9
IC0oLSgtdWlfdHdvICsgMXUpICsgMXUpO1xuIiAgLy8gc1sxXSA9IC11aV90d28KLSAgICAgICAg
IiAgICBzWzJdID0gdWlfdGhyZWU7XG4iCi0gICAgICAgICIgICAgdWludCByZXN1bHQgPSAwdTtc
biIKLSAgICAgICAgIiAgICBmb3IgKHVpbnQgaSA9IDB1OyBpIDwgdWlfdGhyZWU7IGkrKykge1xu
IgotICAgICAgICAiICAgICAgICByZXN1bHQgKz0gc1tpXTtcbiIKLSAgICAgICAgIiAgICB9XG4i
Ci0gICAgICAgICIgICAgdl9jb2xvciA9IChyZXN1bHQgPT0gMnUpID8gdmVjNCgwLCAxLCAwLCAx
KSA6IHZlYzQoMSwgMCwgMCwgMSk7XG4iCi0gICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3Np
dGlvbjtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWcgPQot
ICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJpbiBtZWRpdW1wIHZlYzQgdl9j
b2xvcjtcbiIKLSAgICAgICAgImxheW91dChsb2NhdGlvbj0wKSBvdXQgbWVkaXVtcCB2ZWM0IG9f
Y29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICAgb19jb2xv
ciA9IHZfY29sb3I7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgQU5HTEVfR0xfUFJPR1JBTShw
cm9nLCB2ZXJ0LCBmcmFnKTsKLQotICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ICAgPSByZWludGVy
cHJldF9jYXN0PGdsOjpDb250ZXh0ICo+KGdldEVHTFdpbmRvdygpLT5nZXRDb250ZXh0KCkpOwot
ICAgIGdsOjpQcm9ncmFtICpnbFByb2dyYW0gPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2cuZ2V0
KCkpOwotICAgIEdMaW50IG9uZUluZGV4ICAgICAgICAgPSBnbFByb2dyYW0tPmdldFVuaWZvcm1M
b2NhdGlvbigidWlfb25lIik7Ci0gICAgQVNTRVJUX05FKC0xLCBvbmVJbmRleCk7Ci0gICAgR0xp
bnQgdHdvSW5kZXggPSBnbFByb2dyYW0tPmdldFVuaWZvcm1Mb2NhdGlvbigidWlfdHdvIik7Ci0g
ICAgQVNTRVJUX05FKC0xLCB0d29JbmRleCk7Ci0gICAgR0xpbnQgdGhyZWVJbmRleCA9IGdsUHJv
Z3JhbS0+Z2V0VW5pZm9ybUxvY2F0aW9uKCJ1aV90aHJlZSIpOwotICAgIEFTU0VSVF9ORSgtMSwg
dGhyZWVJbmRleCk7Ci0gICAgZ2xVc2VQcm9ncmFtKHByb2cuZ2V0KCkpOwotICAgIGdsVW5pZm9y
bTF1aShvbmVJbmRleCwgMXUpOwotICAgIGdsVW5pZm9ybTF1aSh0d29JbmRleCwgMnUpOwotICAg
IGdsVW5pZm9ybTF1aSh0aHJlZUluZGV4LCAzdSk7Ci0KLSAgICBkcmF3UXVhZChwcm9nLmdldCgp
LCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xD
b2xvcjo6Z3JlZW4pOwotfQotCi0vLyBUZXN0IGEgbmVzdGVkIHNlcXVlbmNlIG9wZXJhdG9yIHdp
dGggYSB0ZXJuYXJ5IG9wZXJhdG9yIGluc2lkZS4gVGhlIHRlcm5hcnkgb3BlcmF0b3IgaXMKLS8v
IGludGVuZGVkIHRvIGJlIHN1Y2ggdGhhdCBpdCBnZXRzIGNvbnZlcnRlZCB0byBhbiBpZiBzdGF0
ZW1lbnQgb24gdGhlIEhMU0wgYmFja2VuZC4KLVRFU1RfUChHTFNMVGVzdCwgTmVzdGVkU2VxdWVu
Y2VPcGVyYXRvcldpdGhUZXJuYXJ5SW5zaWRlKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2
ZXJ0ID0KLSAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAidm9p
ZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZl
YzQocG9zaXRpb24sIDAsIDEpO1xuIgotICAgICAgICAifSI7Ci0KLSAgICAvLyBOb3RlIHRoYXQg
dGhlIHVuaWZvcm0ga2VlcF9mbG9wX3Bvc2l0aXZlIGRvZXNuJ3QgbmVlZCB0byBiZSBzZXQgLSB0
aGUgdGVzdCBleHBlY3RzIGl0IHRvIGhhdmUKLSAgICAvLyBpdHMgZGVmYXVsdCB2YWx1ZSBmYWxz
ZS4KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gYm9vbCBrZWVwX2Zsb3BfcG9zaXRpdmU7
XG4iCi0gICAgICAgICJmbG9hdCBmbG9wO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgot
ICAgICAgICAiICAgIGZsb3AgPSAtMS4wLFxuIgotICAgICAgICAiICAgIChmbG9wICo9IC0xLjAs
XG4iCi0gICAgICAgICIgICAga2VlcF9mbG9wX3Bvc2l0aXZlID8gMC4wIDogZmxvcCAqPSAtMS4w
KSxcbiIKLSAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIC1mbG9wLCAwLCAxKTtc
biIKLSAgICAgICAgIn0iOwotCi0gICAgQU5HTEVfR0xfUFJPR1JBTShwcm9nLCB2ZXJ0LCBmcmFn
KTsKLSAgICBkcmF3UXVhZChwcm9nLmdldCgpLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBF
Q1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOwotfQotCi0vLyBUZXN0IHRo
YXQgdXNpbmcgYSBzYW1wbGVyMkQgYW5kIHNhbXBsZXJFeHRlcm5hbE9FUyBpbiB0aGUgc2FtZSBz
aGFkZXIgd29ya3MgKGFuZ2xlYnVnLmNvbS8xNTM0KQotVEVTVF9QKEdMU0xUZXN0LCBFeHRlcm5h
bEFuZDJEU2FtcGxlcikKLXsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19FR0xf
aW1hZ2VfZXh0ZXJuYWwiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIGJlY2F1c2UgR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCBpcyBub3QgYXZhaWxhYmxlLiIK
LSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyID0KLSAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyRXh0ZXJuYWxP
RVMgdGV4MDtcbiIKLSAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHRleDE7XG4iCi0gICAgICAg
ICJ2b2lkIG1haW4odm9pZClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiB2ZWMyIHV2ID0g
dmVjMigwLjAsIDAuMCk7IgotICAgICAgICAiIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgw
LCB1dikgKyB0ZXh0dXJlMkQodGV4MSwgdXYpO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIEFO
R0xFX0dMX1BST0dSQU0ocHJvZ3JhbSwgbVNpbXBsZVZTU291cmNlLCBmcmFnbWVudFNoYWRlcik7
Ci19Ci0KLS8vIFRlc3QgdGhhdCB1c2luZyBhbiBpbnZhbGlkIGNvbnN0YW50IHJpZ2h0LXNoaWZ0
IHByb2R1Y2VzIGFuIGVycm9yLgotVEVTVF9QKEdMU0xUZXN0X0VTMywgRm9sZGVkSW52YWxpZFJp
Z2h0U2hpZnQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U2hhZGVyID0KLSAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBjb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbih2
b2lkKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiIGludCBkaWZmID0gLTEwMCA+PiAtMTAw
O1xuIgotICAgICAgICAiIGNvbG9yID0gdmVjNChmbG9hdChkaWZmKSk7XG4iCi0gICAgICAgICJ9
XG4iOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShtU2ltcGxlVlNTb3Vy
Y2UsIGZyYWdtZW50U2hhZGVyKTsKLSAgICBFWFBFQ1RfRVEoMHUsIHByb2dyYW0pOwotICAgIGds
RGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKLX0KLQotLy8gVGVzdCB0aGF0IHVzaW5nIGFuIGludmFs
aWQgY29uc3RhbnQgbGVmdC1zaGlmdCBwcm9kdWNlcyBhbiBlcnJvci4KLVRFU1RfUChHTFNMVGVz
dF9FUzMsIEZvbGRlZEludmFsaWRMZWZ0U2hpZnQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
JmZyYWdtZW50U2hhZGVyID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBjb2xvcjtcbiIK
LSAgICAgICAgInZvaWQgbWFpbih2b2lkKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiIGlu
dCBkaWZmID0gLTEwMCA8PCAtMTAwO1xuIgotICAgICAgICAiIGNvbG9yID0gdmVjNChmbG9hdChk
aWZmKSk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxl
UHJvZ3JhbShtU2ltcGxlVlNTb3VyY2UsIGZyYWdtZW50U2hhZGVyKTsKLSAgICBFWFBFQ1RfRVEo
MHUsIHByb2dyYW0pOwotICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKLX0KLQotfSAgLy8g
YW5vbnltb3VzIG5hbWVzcGFjZQotCi0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmln
dXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikg
dGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVT
VChHTFNMVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9E
M0QxMV9GTDlfMygpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
RVMyX09QRU5HTEVTKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsK
LQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNo
IHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBi
ZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoR0xTTFRlc3RfRVMzLCBFUzNf
RDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW1hZ2VUZXN0LmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbWFnZVRlc3QuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjg4YzQ4OWQ1ODMyMzA0MTYyOWM2MTZkYWY4
MDczNjQyN2E2YmJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbWFnZVRlc3Qu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTk3MyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIw
MTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gSW1hZ2VU
ZXN0OgotLy8gICBUZXN0cyB0aGUgY29ycmVjdG5lc3Mgb2YgZWdsSW1hZ2UuCi0vLwotCi0jaW5j
bHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotbmFtZXNwYWNlIGFuZ2xlCi17Ci1jbGFz
cyBJbWFnZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBJbWFn
ZVRlc3QoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0
V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAg
IHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0g
ICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRz
KDI0KTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2c1NvdXJj
ZSA9Ci0gICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAgICAg
ImF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgInZhcnlpbmcgdmVjMiB0
ZXhjb29yZDtcbiIKLSAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICJ2b2lkIG1haW4oKVxu
IgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3Np
dGlvbjtcbiIKLSAgICAgICAgICAgICIgICAgdGV4Y29vcmQgPSAocG9zaXRpb24ueHkgKiAwLjUp
ICsgMC41O1xuIgotICAgICAgICAgICAgIiAgICB0ZXhjb29yZC55ID0gMS4wIC0gdGV4Y29vcmQu
eTtcbiIKLSAgICAgICAgICAgICJ9XG4iOwotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2c0VT
U0wzU291cmNlID0KLSAgICAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgICAg
ICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCi0gICAgICAgICAgICAiaW4gdmVjNCBwb3NpdGlv
bjtcbiIKLSAgICAgICAgICAgICJvdXQgdmVjMiB0ZXhjb29yZDtcbiIKLSAgICAgICAgICAgICJc
biIKLSAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAgICAgIntcbiIKLSAgICAg
ICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIKLSAgICAgICAgICAgICIgICAg
dGV4Y29vcmQgPSAocG9zaXRpb24ueHkgKiAwLjUpICsgMC41O1xuIgotICAgICAgICAgICAgIiAg
ICB0ZXhjb29yZC55ID0gMS4wIC0gdGV4Y29vcmQueTtcbiIKLSAgICAgICAgICAgICJ9XG4iOwot
Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRleHR1cmVGU1NvdXJjZSA9Ci0gICAgICAgICAg
ICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAgICAgInVuaWZvcm0gc2FtcGxl
cjJEIHRleDtcbiIKLSAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7XG4iCi0gICAg
ICAgICAgICAiXG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgICAgICJ7
XG4iCi0gICAgICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleGNv
b3JkKTtcbiIKLSAgICAgICAgICAgICJ9XG4iOwotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB0
ZXh0dXJlRXh0ZXJuYWxGU1NvdXJjZSA9Ci0gICAgICAgICAgICAiI2V4dGVuc2lvbiBHTF9PRVNf
RUdMX2ltYWdlX2V4dGVybmFsIDogcmVxdWlyZVxuIgotICAgICAgICAgICAgInByZWNpc2lvbiBo
aWdocCBmbG9hdDtcbiIKLSAgICAgICAgICAgICJ1bmlmb3JtIHNhbXBsZXJFeHRlcm5hbE9FUyB0
ZXg7XG4iCi0gICAgICAgICAgICAidmFyeWluZyB2ZWMyIHRleGNvb3JkO1xuIgotICAgICAgICAg
ICAgIlxuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgICAie1xuIgot
ICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB0ZXhjb29yZCk7
XG4iCi0gICAgICAgICAgICAifVxuIjsKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGV4dHVy
ZUV4dGVybmFsRVNTTDNGU1NvdXJjZSA9Ci0gICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4i
Ci0gICAgICAgICAgICAiI2V4dGVuc2lvbiBHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wz
IDogcmVxdWlyZVxuIgotICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAg
ICAgICAgICAgICJ1bmlmb3JtIHNhbXBsZXJFeHRlcm5hbE9FUyB0ZXg7XG4iCi0gICAgICAgICAg
ICAiaW4gdmVjMiB0ZXhjb29yZDtcbiIKLSAgICAgICAgICAgICJvdXQgdmVjNCBjb2xvcjsiCi0g
ICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgICAg
ICJ7XG4iCi0gICAgICAgICAgICAiICAgIGNvbG9yID0gdGV4dHVyZSh0ZXgsIHRleGNvb3JkKTtc
biIKLSAgICAgICAgICAgICJ9XG4iOwotCi0gICAgICAgIG1UZXh0dXJlUHJvZ3JhbSA9IENvbXBp
bGVQcm9ncmFtKHZzU291cmNlLCB0ZXh0dXJlRlNTb3VyY2UpOwotICAgICAgICBpZiAobVRleHR1
cmVQcm9ncmFtID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVy
IGNvbXBpbGF0aW9uIGZhaWxlZC4iOwotICAgICAgICB9Ci0KLSAgICAgICAgbVRleHR1cmVVbmlm
b3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtVGV4dHVyZVByb2dyYW0sICJ0ZXgi
KTsKLQotICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX0VHTF9pbWFnZV9leHRl
cm5hbCIpKQotICAgICAgICB7Ci0gICAgICAgICAgICBtVGV4dHVyZUV4dGVybmFsUHJvZ3JhbSA9
IENvbXBpbGVQcm9ncmFtKHZzU291cmNlLCB0ZXh0dXJlRXh0ZXJuYWxGU1NvdXJjZSk7Ci0gICAg
ICAgICAgICBBU1NFUlRfTkUoMHUsIG1UZXh0dXJlRXh0ZXJuYWxQcm9ncmFtKSA8PCAic2hhZGVy
IGNvbXBpbGF0aW9uIGZhaWxlZC4iOwotCi0gICAgICAgICAgICBtVGV4dHVyZUV4dGVybmFsVW5p
Zm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVRleHR1cmVFeHRlcm5hbFByb2dy
YW0sICJ0ZXgiKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJH
TF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzIikpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IG1UZXh0dXJlRXh0ZXJuYWxFU1NMM1Byb2dyYW0gPQotICAgICAgICAgICAgICAgIENvbXBpbGVQ
cm9ncmFtKHZzRVNTTDNTb3VyY2UsIHRleHR1cmVFeHRlcm5hbEVTU0wzRlNTb3VyY2UpOwotICAg
ICAgICAgICAgQVNTRVJUX05FKDB1LCBtVGV4dHVyZUV4dGVybmFsRVNTTDNQcm9ncmFtKSA8PCAi
c2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOwotCi0gICAgICAgICAgICBtVGV4dHVyZUV4dGVy
bmFsRVNTTDNVbmlmb3JtTG9jYXRpb24gPQotICAgICAgICAgICAgICAgIGdsR2V0VW5pZm9ybUxv
Y2F0aW9uKG1UZXh0dXJlRXh0ZXJuYWxFU1NMM1Byb2dyYW0sICJ0ZXgiKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGVnbENyZWF0ZUltYWdlS0hSID0KLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8UEZORUdMQ1JFQVRFSU1BR0VLSFJQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsQ3JlYXRl
SW1hZ2VLSFIiKSk7Ci0gICAgICAgIGVnbERlc3Ryb3lJbWFnZUtIUiA9Ci0gICAgICAgICAgICBy
ZWludGVycHJldF9jYXN0PFBGTkVHTERFU1RST1lJTUFHRUtIUlBST0M+KGVnbEdldFByb2NBZGRy
ZXNzKCJlZ2xEZXN0cm95SW1hZ2VLSFIiKSk7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBnbERlbGV0ZVByb2dyYW0obVRleHR1cmVQcm9ncmFtKTsKLSAgICAgICAgZ2xEZWxldGVQcm9n
cmFtKG1UZXh0dXJlRXh0ZXJuYWxQcm9ncmFtKTsKLSAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1U
ZXh0dXJlRXh0ZXJuYWxFU1NMM1Byb2dyYW0pOwotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRv
d24oKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNyZWF0ZUVHTEltYWdlMkRUZXh0dXJlU291cmNlKHNp
emVfdCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Zm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpvdXRTb3VyY2VU
ZXh0dXJlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMSW1hZ2VL
SFIgKm91dFNvdXJjZUltYWdlKQotICAgIHsKLSAgICAgICAgLy8gQ3JlYXRlIGEgc291cmNlIDJE
IHRleHR1cmUKLSAgICAgICAgR0x1aW50IHNvdXJjZTsKLSAgICAgICAgZ2xHZW5UZXh0dXJlcygx
LCAmc291cmNlKTsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBzb3VyY2Up
OwotCi0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBmb3JtYXQsIHN0YXRp
Y19jYXN0PEdMc2l6ZWk+KHdpZHRoKSwKLSAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PEdMc2l6ZWk+KGhlaWdodCksIDAsIGZvcm1hdCwgdHlwZSwgZGF0YSk7Ci0KLSAgICAgICAgLy8g
RGlzYWJsZSBtaXBtYXBwaW5nCi0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgICAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsK
LQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICAvLyBDcmVhdGUgYW4g
aW1hZ2UgZnJvbSB0aGUgc291cmNlIHRleHR1cmUKLSAgICAgICAgRUdMV2luZG93ICp3aW5kb3cg
PSBnZXRFR0xXaW5kb3coKTsKLSAgICAgICAgRUdMSW1hZ2VLSFIgaW1hZ2UgPQotICAgICAgICAg
ICAgZWdsQ3JlYXRlSW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIHdpbmRvdy0+Z2V0Q29u
dGV4dCgpLCBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZWludGVycHJldEhlbHBlcjxFR0xDbGllbnRCdWZmZXI+KHNvdXJjZSksIG51bGxwdHIp
OwotCi0gICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgICAgICpvdXRTb3VyY2VU
ZXh0dXJlID0gc291cmNlOwotICAgICAgICAqb3V0U291cmNlSW1hZ2UgICA9IGltYWdlOwotICAg
IH0KLQotICAgIHZvaWQgY3JlYXRlRUdMSW1hZ2VDdWJlbWFwVGV4dHVyZVNvdXJjZShzaXplX3Qg
d2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1aW50OF90ICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgZGF0YVN0cmlkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMZW51bSBpbWFnZVRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpvdXRTb3VyY2VUZXh0dXJlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xJbWFnZUtIUiAqb3V0U291cmNl
SW1hZ2UpCi0gICAgewotICAgICAgICAvLyBDcmVhdGUgYSBzb3VyY2UgY3ViZSBtYXAgdGV4dHVy
ZQotICAgICAgICBHTHVpbnQgc291cmNlOwotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZzb3Vy
Y2UpOwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIHNvdXJjZSk7
Ci0KLSAgICAgICAgZm9yIChHTGVudW0gZmFjZUlkeCA9IDA7IGZhY2VJZHggPCA2OyBmYWNlSWR4
KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChmYWNlSWR4ICsgR0xfVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwLCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4od2lkdGgpLCBzdGF0aWNfY2FzdDxHTHNpemVpPiho
ZWlnaHQpLCAwLCBmb3JtYXQsIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSAr
IChmYWNlSWR4ICogZGF0YVN0cmlkZSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRGlzYWJs
ZSBtaXBtYXBwaW5nCi0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0NVQkVfTUFQ
LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgICAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFS
RVNUKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICAvLyBDcmVh
dGUgYW4gaW1hZ2UgZnJvbSB0aGUgc291cmNlIHRleHR1cmUKLSAgICAgICAgRUdMV2luZG93ICp3
aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLSAgICAgICAgRUdMSW1hZ2VLSFIgaW1hZ2UgPQotICAg
ICAgICAgICAgZWdsQ3JlYXRlSW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIHdpbmRvdy0+
Z2V0Q29udGV4dCgpLCBpbWFnZVRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0SGVscGVyPEVHTENsaWVudEJ1ZmZlcj4oc291cmNlKSwgbnVsbHB0cik7Ci0K
LSAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICAgICAgKm91dFNvdXJjZVRleHR1
cmUgPSBzb3VyY2U7Ci0gICAgICAgICpvdXRTb3VyY2VJbWFnZSAgID0gaW1hZ2U7Ci0gICAgfQot
Ci0gICAgdm9pZCBjcmVhdGVFR0xJbWFnZTNEVGV4dHVyZVNvdXJjZShzaXplX3Qgd2lkdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZUxheWVyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpvdXRTb3VyY2VUZXh0dXJlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMSW1hZ2VLSFIgKm91dFNvdXJjZUlt
YWdlKQotICAgIHsKLSAgICAgICAgLy8gQ3JlYXRlIGEgc291cmNlIDNEIHRleHR1cmUKLSAgICAg
ICAgR0x1aW50IHNvdXJjZTsKLSAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmc291cmNlKTsKLSAg
ICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzNELCBzb3VyY2UpOwotCi0gICAgICAgIGds
VGV4SW1hZ2UzRChHTF9URVhUVVJFXzNELCAwLCBmb3JtYXQsIHN0YXRpY19jYXN0PEdMc2l6ZWk+
KHdpZHRoKSwKLSAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGhlaWdo
dCksIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGRlcHRoKSwgMCwgZm9ybWF0LCB0eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgZGF0YSk7Ci0KLSAgICAgICAgLy8gRGlzYWJsZSBtaXBtYXBwaW5nCi0g
ICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzNELCBHTF9URVhUVVJFX01JTl9GSUxU
RVIsIEdMX05FQVJFU1QpOwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8zRCwg
R0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLQotICAgICAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKLQotICAgICAgICAvLyBDcmVhdGUgYW4gaW1hZ2UgZnJvbSB0aGUgc291cmNl
IHRleHR1cmUKLSAgICAgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLQot
ICAgICAgICBFR0xpbnQgYXR0cmlic1tdID0gewotICAgICAgICAgICAgRUdMX0dMX1RFWFRVUkVf
Wk9GRlNFVF9LSFIsIHN0YXRpY19jYXN0PEVHTGludD4oaW1hZ2VMYXllciksIEVHTF9OT05FLAot
ICAgICAgICB9OwotICAgICAgICBFR0xJbWFnZUtIUiBpbWFnZSA9Ci0gICAgICAgICAgICBlZ2xD
cmVhdGVJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgd2luZG93LT5nZXRDb250ZXh0KCks
IEVHTF9HTF9URVhUVVJFXzNEX0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
aW50ZXJwcmV0SGVscGVyPEVHTENsaWVudEJ1ZmZlcj4oc291cmNlKSwgYXR0cmlicyk7Ci0KLSAg
ICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICAgICAgKm91dFNvdXJjZVRleHR1cmUg
PSBzb3VyY2U7Ci0gICAgICAgICpvdXRTb3VyY2VJbWFnZSAgID0gaW1hZ2U7Ci0gICAgfQotCi0g
ICAgdm9pZCBjcmVhdGVFR0xJbWFnZVJlbmRlcmJ1ZmZlclNvdXJjZShzaXplX3Qgd2lkdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFs
Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1Ynl0
ZSBkYXRhWzRdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50ICpvdXRTb3VyY2VSZW5kZXJidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFR0xJbWFnZUtIUiAqb3V0U291cmNlSW1hZ2UpCi0gICAgewotICAgICAg
ICAvLyBDcmVhdGUgYSBzb3VyY2UgcmVuZGVyYnVmZmVyCi0gICAgICAgIEdMdWludCBzb3VyY2U7
Ci0gICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmc291cmNlKTsKLSAgICAgICAgZ2xCaW5k
UmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgc291cmNlKTsKLSAgICAgICAgZ2xSZW5kZXJi
dWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgaW50ZXJuYWxGb3JtYXQsIHN0YXRpY19jYXN0
PEdMc2l6ZWk+KHdpZHRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PEdMc2l6ZWk+KGhlaWdodCkpOwotCi0gICAgICAgIC8vIENyZWF0ZSBhIGZyYW1lYnVmZmVy
IGFuZCBjbGVhciBpdCB0byBzZXQgdGhlIGRhdGEKLSAgICAgICAgR0x1aW50IGZyYW1lYnVmZmVy
OwotICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmZnJhbWVidWZmZXIpOwotICAgICAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXIpOwotICAgICAgICBn
bEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hN
RU5UMCwgR0xfUkVOREVSQlVGRkVSLCBzb3VyY2UpOwotCi0gICAgICAgIGdsQ2xlYXJDb2xvcihk
YXRhWzBdIC8gMjU1LjBmLCBkYXRhWzFdIC8gMjU1LjBmLCBkYXRhWzJdIC8gMjU1LjBmLCBkYXRh
WzNdIC8gMjU1LjBmKTsKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLQot
ICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZnJhbWVidWZmZXIpOwotCi0gICAgICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBmcm9t
IHRoZSBzb3VyY2UgcmVuZGVyYnVmZmVyCi0gICAgICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0
RUdMV2luZG93KCk7Ci0gICAgICAgIEVHTEltYWdlS0hSIGltYWdlID0KLSAgICAgICAgICAgIGVn
bENyZWF0ZUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCB3aW5kb3ctPmdldENvbnRleHQo
KSwgRUdMX0dMX1JFTkRFUkJVRkZFUl9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWludGVycHJldEhlbHBlcjxFR0xDbGllbnRCdWZmZXI+KHNvdXJjZSksIG51bGxwdHIpOwot
Ci0gICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgICAgICpvdXRTb3VyY2VSZW5k
ZXJidWZmZXIgPSBzb3VyY2U7Ci0gICAgICAgICpvdXRTb3VyY2VJbWFnZSAgICAgICAgPSBpbWFn
ZTsKLSAgICB9Ci0KLSAgICB2b2lkIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZTJEKEVHTElt
YWdlS0hSIGltYWdlLCBHTHVpbnQgKm91dFRhcmdldFRleHR1cmUpCi0gICAgewotICAgICAgICAv
LyBDcmVhdGUgYSB0YXJnZXQgdGV4dHVyZSBmcm9tIHRoZSBpbWFnZQotICAgICAgICBHTHVpbnQg
dGFyZ2V0OwotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZ0YXJnZXQpOwotICAgICAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRhcmdldCk7Ci0gICAgICAgIGdsRUdMSW1hZ2VUYXJn
ZXRUZXh0dXJlMkRPRVMoR0xfVEVYVFVSRV8yRCwgaW1hZ2UpOwotCi0gICAgICAgIC8vIERpc2Fi
bGUgbWlwbWFwcGluZwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0KLSAg
ICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgKm91dFRhcmdldFRleHR1cmUg
PSB0YXJnZXQ7Ci0gICAgfQotCi0gICAgdm9pZCBjcmVhdGVFR0xJbWFnZVRhcmdldFRleHR1cmVF
eHRlcm5hbChFR0xJbWFnZUtIUiBpbWFnZSwgR0x1aW50ICpvdXRUYXJnZXRUZXh0dXJlKQotICAg
IHsKLSAgICAgICAgLy8gQ3JlYXRlIGEgdGFyZ2V0IHRleHR1cmUgZnJvbSB0aGUgaW1hZ2UKLSAg
ICAgICAgR0x1aW50IHRhcmdldDsKLSAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGFyZ2V0KTsK
LSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgdGFyZ2V0KTsK
LSAgICAgICAgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyhHTF9URVhUVVJFX0VYVEVSTkFM
X09FUywgaW1hZ2UpOwotCi0gICAgICAgIC8vIERpc2FibGUgbWlwbWFwcGluZwotICAgICAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfTUlOX0ZJ
TFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0VY
VEVSTkFMX09FUywgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLQotICAgICAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICAqb3V0VGFyZ2V0VGV4dHVyZSA9IHRh
cmdldDsKLSAgICB9Ci0KLSAgICB2b2lkIGNyZWF0ZUVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVy
KEVHTEltYWdlS0hSIGltYWdlLCBHTHVpbnQgKm91dFRhcmdldFJlbmRlcmJ1ZmZlcikKLSAgICB7
Ci0gICAgICAgIC8vIENyZWF0ZSBhIHRhcmdldCB0ZXh0dXJlIGZyb20gdGhlIGltYWdlCi0gICAg
ICAgIEdMdWludCB0YXJnZXQ7Ci0gICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmdGFyZ2V0
KTsKLSAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgdGFyZ2V0KTsK
LSAgICAgICAgZ2xFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMoR0xfUkVOREVS
QlVGRkVSLCBpbWFnZSk7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAg
ICAgKm91dFRhcmdldFJlbmRlcmJ1ZmZlciA9IHRhcmdldDsKLSAgICB9Ci0KLSAgICB2b2lkIHZl
cmlmeVJlc3VsdHNUZXh0dXJlKEdMdWludCB0ZXh0dXJlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1Ynl0ZSBkYXRhWzRdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRleHR1cmVUYXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJl
VW5pZm9ybSkKLSAgICB7Ci0gICAgICAgIC8vIERyYXcgYSBxdWFkIHdpdGggdGhlIHRhcmdldCB0
ZXh0dXJlCi0gICAgICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKLSAgICAgICAgZ2xCaW5kVGV4
dHVyZSh0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlKTsKLSAgICAgICAgZ2xVbmlmb3JtMWkodGV4dHVy
ZVVuaWZvcm0sIDApOwotCi0gICAgICAgIGRyYXdRdWFkKHByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOwotCi0gICAgICAgIC8vIEV4cGVjdCB0aGF0IHRoZSByZW5kZXJlZCBxdWFkIGhhcyB0aGUg
c2FtZSBjb2xvciBhcyB0aGUgc291cmNlIHRleHR1cmUKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VR
KDAsIDAsIGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0sIGRhdGFbM10pOwotICAgIH0KLQotICAg
IHZvaWQgdmVyaWZ5UmVzdWx0czJEKEdMdWludCB0ZXh0dXJlLCBHTHVieXRlIGRhdGFbNF0pCi0g
ICAgewotICAgICAgICB2ZXJpZnlSZXN1bHRzVGV4dHVyZSh0ZXh0dXJlLCBkYXRhLCBHTF9URVhU
VVJFXzJELCBtVGV4dHVyZVByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1U
ZXh0dXJlVW5pZm9ybUxvY2F0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZlcmlmeVJlc3VsdHNF
eHRlcm5hbChHTHVpbnQgdGV4dHVyZSwgR0x1Ynl0ZSBkYXRhWzRdKQotICAgIHsKLSAgICAgICAg
dmVyaWZ5UmVzdWx0c1RleHR1cmUodGV4dHVyZSwgZGF0YSwgR0xfVEVYVFVSRV9FWFRFUk5BTF9P
RVMsIG1UZXh0dXJlRXh0ZXJuYWxQcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtVGV4dHVyZUV4dGVybmFsVW5pZm9ybUxvY2F0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZl
cmlmeVJlc3VsdHNFeHRlcm5hbEVTU0wzKEdMdWludCB0ZXh0dXJlLCBHTHVieXRlIGRhdGFbNF0p
Ci0gICAgewotICAgICAgICB2ZXJpZnlSZXN1bHRzVGV4dHVyZSh0ZXh0dXJlLCBkYXRhLCBHTF9U
RVhUVVJFX0VYVEVSTkFMX09FUywgbVRleHR1cmVFeHRlcm5hbEVTU0wzUHJvZ3JhbSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbVRleHR1cmVFeHRlcm5hbEVTU0wzVW5pZm9ybUxvY2F0
aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZlcmlmeVJlc3VsdHNSZW5kZXJidWZmZXIoR0x1aW50
IHJlbmRlcmJ1ZmZlciwgR0x1Ynl0ZSBkYXRhWzRdKQotICAgIHsKLSAgICAgICAgLy8gQmluZCB0
aGUgcmVuZGVyYnVmZmVyIHRvIGEgZnJhbWVidWZmZXIKLSAgICAgICAgR0x1aW50IGZyYW1lYnVm
ZmVyOwotICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmZnJhbWVidWZmZXIpOwotICAgICAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXIpOwotICAgICAg
ICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRB
Q0hNRU5UMCwgR0xfUkVOREVSQlVGRkVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlbmRlcmJ1ZmZlcik7Ci0KLSAgICAgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHJlbmRlcmVk
IHF1YWQgaGFzIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBzb3VyY2UgdGV4dHVyZQotICAgICAgICBF
WFBFQ1RfUElYRUxfRVEoMCwgMCwgZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSwgZGF0YVszXSk7
Ci0KLSAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZyYW1lYnVmZmVyKTsKLSAgICB9
Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgZGVzdFR5cGUsIHR5cGVuYW1lIHNvdXJjZXR5cGU+
Ci0gICAgZGVzdFR5cGUgcmVpbnRlcnByZXRIZWxwZXIoc291cmNldHlwZSBzb3VyY2UpCi0gICAg
ewotICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihkZXN0VHlwZSkgPT0gc2l6ZW9mKHNpemVf
dCksCi0gICAgICAgICAgICAgICAgICAgICAgImRlc3RUeXBlIHNob3VsZCBiZSB0aGUgc2FtZSBz
aXplIGFzIGEgc2l6ZV90Iik7Ci0gICAgICAgIHNpemVfdCBzb3VyY2VTaXplVCA9IHN0YXRpY19j
YXN0PHNpemVfdD4oc291cmNlKTsKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8ZGVz
dFR5cGU+KHNvdXJjZVNpemVUKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVRleHR1cmVQcm9ncmFt
OwotICAgIEdMaW50IG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uOwotCi0gICAgR0x1aW50IG1UZXh0
dXJlRXh0ZXJuYWxQcm9ncmFtICAgICAgICA9IDA7Ci0gICAgR0xpbnQgbVRleHR1cmVFeHRlcm5h
bFVuaWZvcm1Mb2NhdGlvbiA9IC0xOwotCi0gICAgR0x1aW50IG1UZXh0dXJlRXh0ZXJuYWxFU1NM
M1Byb2dyYW0gICAgICAgID0gMDsKLSAgICBHTGludCBtVGV4dHVyZUV4dGVybmFsRVNTTDNVbmlm
b3JtTG9jYXRpb24gPSAtMTsKLQotICAgIFBGTkVHTENSRUFURUlNQUdFS0hSUFJPQyBlZ2xDcmVh
dGVJbWFnZUtIUjsKLSAgICBQRk5FR0xERVNUUk9ZSU1BR0VLSFJQUk9DIGVnbERlc3Ryb3lJbWFn
ZUtIUjsKLX07Ci0KLWNsYXNzIEltYWdlVGVzdEVTMyA6IHB1YmxpYyBJbWFnZVRlc3QKLXsKLX07
Ci0KLS8vIENoZWNrIHZhbGlkYXRpb24gZnJvbSB0aGUgRUdMX0tIUl9pbWFnZV9iYXNlIGV4dGVu
c2lvbgotVEVTVF9QKEltYWdlVGVzdCwgVmFsaWRhdGlvbkltYWdlQmFzZSkKLXsKLSAgICBFR0xX
aW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxl
ZCgiT0VTX0VHTF9pbWFnZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxl
ZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8Ci0gICAgICAg
ICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9L
SFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3Ig
IgotICAgICAgICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSBpcyBu
b3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIEdMdWludCBnbFRleHR1cmUyRDsKLSAgICBnbEdlblRleHR1
cmVzKDEsICZnbFRleHR1cmUyRCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBn
bFRleHR1cmUyRCk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEs
IDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotCi0gICAgRUdM
RGlzcGxheSBkaXNwbGF5ICAgICAgICA9IHdpbmRvdy0+Z2V0RGlzcGxheSgpOwotICAgIEVHTENv
bnRleHQgY29udGV4dCAgICAgICAgPSB3aW5kb3ctPmdldENvbnRleHQoKTsKLSAgICBFR0xDb25m
aWcgY29uZmlnICAgICAgICAgID0gd2luZG93LT5nZXRDb25maWcoKTsKLSAgICBFR0xJbWFnZUtI
UiBpbWFnZSAgICAgICAgID0gRUdMX05PX0lNQUdFX0tIUjsKLSAgICBFR0xDbGllbnRCdWZmZXIg
dGV4dHVyZTJEID0gcmVpbnRlcnByZXRIZWxwZXI8RUdMQ2xpZW50QnVmZmVyPihnbFRleHR1cmUy
RCk7Ci0KLSAgICAvLyBUZXN0IHZhbGlkYXRpb24gb2YgZWdsQ3JlYXRlSW1hZ2VLSFIKLQotICAg
IC8vIElmIDxkcHk+IGlzIG5vdCB0aGUgaGFuZGxlIG9mIGEgdmFsaWQgRUdMRGlzcGxheSBvYmpl
Y3QsIHRoZSBlcnJvciBFR0xfQkFEX0RJU1BMQVkgaXMKLSAgICAvLyBnZW5lcmF0ZWQuCi0gICAg
aW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUihyZWludGVycHJldEhlbHBlcjxFR0xEaXNwbGF5Pigw
eEJBQURGMDBEKSwgY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9H
TF9URVhUVVJFXzJEX0tIUiwgdGV4dHVyZTJELCBudWxscHRyKTsKLSAgICBFWFBFQ1RfRVEoaW1h
Z2UsIEVHTF9OT19JTUFHRV9LSFIpOwotICAgIEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9ESVNQ
TEFZKTsKLQotICAgIC8vIElmIDxjdHg+IGlzIG5laXRoZXIgdGhlIGhhbmRsZSBvZiBhIHZhbGlk
IEVHTENvbnRleHQgb2JqZWN0IG9uIDxkcHk+IG5vciBFR0xfTk9fQ09OVEVYVCwgdGhlCi0gICAg
Ly8gZXJyb3IgRUdMX0JBRF9DT05URVhUIGlzIGdlbmVyYXRlZC4KLSAgICBpbWFnZSA9IGVnbENy
ZWF0ZUltYWdlS0hSKGRpc3BsYXksIHJlaW50ZXJwcmV0SGVscGVyPEVHTENvbnRleHQ+KDB4QkFB
REYwMEQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0dMX1RFWFRVUkVfMkRf
S0hSLCB0ZXh0dXJlMkQsIG51bGxwdHIpOwotICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05PX0lN
QUdFX0tIUik7Ci0gICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX0NPTlRFWFQpOwotCi0gICAg
Ly8gVGVzdCBFR0xfTk9fQ09OVEVYVCB3aXRoIGEgMkQgdGV4dHVyZSB0YXJnZXQgd2hpY2ggZG9l
cyByZXF1aXJlIGEgY29udGV4dC4KLSAgICBpbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRpc3Bs
YXksIEVHTF9OT19DT05URVhULCBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsIHRleHR1cmUyRCwgbnVs
bHB0cik7Ci0gICAgRVhQRUNUX0VRKGltYWdlLCBFR0xfTk9fSU1BR0VfS0hSKTsKLSAgICBFWFBF
Q1RfRUdMX0VSUk9SKEVHTF9CQURfQ09OVEVYVCk7Ci0KLSAgICAvLyBJZiBhbiBhdHRyaWJ1dGUg
c3BlY2lmaWVkIGluIDxhdHRyaWJfbGlzdD4gaXMgbm90IG9uZSBvZiB0aGUgYXR0cmlidXRlcyBs
aXN0ZWQgaW4gVGFibGUgYmJiLAotICAgIC8vIHRoZSBlcnJvciBFR0xfQkFEX1BBUkFNRVRFUiBp
cyBnZW5lcmF0ZWQuCi0gICAgRUdMaW50IGJhZEF0dHJpYnV0ZXNbXSA9IHsKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8RUdMaW50PigweERFQURCRUVGKSwgMCwgRUdMX05PTkUsCi0gICAgfTsKLQotICAg
IGltYWdlID0gZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwgY29udGV4dCwgRUdMX0dMX1RFWFRV
UkVfMkRfS0hSLCB0ZXh0dXJlMkQsIGJhZEF0dHJpYnV0ZXMpOwotICAgIEVYUEVDVF9FUShpbWFn
ZSwgRUdMX05PX0lNQUdFX0tIUik7Ci0gICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX1BBUkFN
RVRFUik7Ci0KLSAgICAvLyBJZiB0aGUgcmVzb3VyY2Ugc3BlY2lmaWVkIGJ5IDxkcHk+LCA8Y3R4
PiwgPHRhcmdldD4sIDxidWZmZXI+IGFuZCA8YXR0cmliX2xpc3Q+IGhhcyBhbiBvZmYgLQotICAg
IC8vIHNjcmVlbiBidWZmZXIgYm91bmQgdG8gaXQoZS5nLiwgYnkgYQotICAgIC8vIHByZXZpb3Vz
IGNhbGwgdG8gZWdsQmluZFRleEltYWdlKSwgdGhlIGVycm9yIEVHTF9CQURfQUNDRVNTIGlzIGdl
bmVyYXRlZC4KLSAgICBFR0xpbnQgc3VyZmFjZVR5cGUgPSAwOwotICAgIGVnbEdldENvbmZpZ0F0
dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9TVVJGQUNFX1RZUEUsICZzdXJmYWNlVHlwZSk7Ci0K
LSAgICBFR0xpbnQgYmluZFRvVGV4dHVyZVJHQkEgPSAwOwotICAgIGVnbEdldENvbmZpZ0F0dHJp
YihkaXNwbGF5LCBjb25maWcsIEVHTF9CSU5EX1RPX1RFWFRVUkVfUkdCQSwgJmJpbmRUb1RleHR1
cmVSR0JBKTsKLSAgICBpZiAoKHN1cmZhY2VUeXBlICYgRUdMX1BCVUZGRVJfQklUKSAhPSAwICYm
IGJpbmRUb1RleHR1cmVSR0JBID09IEVHTF9UUlVFKQotICAgIHsKLSAgICAgICAgRUdMaW50IHBi
dWZmZXJBdHRyaWJ1dGVzW10gPSB7Ci0gICAgICAgICAgICBFR0xfV0lEVEgsICAgICAgICAgIDEs
Ci0gICAgICAgICAgICBFR0xfSEVJR0hULCAgICAgICAgIDEsCi0gICAgICAgICAgICBFR0xfVEVY
VFVSRV9GT1JNQVQsIEVHTF9URVhUVVJFX1JHQkEsCi0gICAgICAgICAgICBFR0xfVEVYVFVSRV9U
QVJHRVQsIEVHTF9URVhUVVJFXzJELAotICAgICAgICAgICAgRUdMX05PTkUsICAgICAgICAgICBF
R0xfTk9ORSwKLSAgICAgICAgfTsKLSAgICAgICAgRUdMU3VyZmFjZSBwYnVmZmVyID0gZWdsQ3Jl
YXRlUGJ1ZmZlclN1cmZhY2UoZGlzcGxheSwgY29uZmlnLCBwYnVmZmVyQXR0cmlidXRlcyk7Ci0g
ICAgICAgIEFTU0VSVF9ORShwYnVmZmVyLCBFR0xfTk9fU1VSRkFDRSk7Ci0gICAgICAgIEVYUEVD
VF9FR0xfU1VDQ0VTUygpOwotCi0gICAgICAgIGVnbEJpbmRUZXhJbWFnZShkaXNwbGF5LCBwYnVm
ZmVyLCBFR0xfQkFDS19CVUZGRVIpOwotICAgICAgICBFWFBFQ1RfRUdMX1NVQ0NFU1MoKTsKLQot
ICAgICAgICBpbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRpc3BsYXksIGNvbnRleHQsIEVHTF9H
TF9URVhUVVJFXzJEX0tIUiwgdGV4dHVyZTJELCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0VR
KGltYWdlLCBFR0xfTk9fSU1BR0VfS0hSKTsKLSAgICAgICAgRVhQRUNUX0VHTF9FUlJPUihFR0xf
QkFEX0FDQ0VTUyk7Ci0KLSAgICAgICAgZWdsUmVsZWFzZVRleEltYWdlKGRpc3BsYXksIHBidWZm
ZXIsIEVHTF9CQUNLX0JVRkZFUik7Ci0gICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKGRpc3BsYXks
IHBidWZmZXIpOwotICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdC
QSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0gICAgICAg
IEVYUEVDVF9FR0xfU1VDQ0VTUygpOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAg
ICB9Ci0KLSAgICAvLyBJZiB0aGUgcmVzb3VyY2Ugc3BlY2lmaWVkIGJ5IDxkcHk+LCA8Y3R4Piwg
PHRhcmdldD4sIDxidWZmZXI+IGFuZAotICAgIC8vIDxhdHRyaWJfbGlzdD4gaXMgaXRzZWxmIGFu
IEVHTEltYWdlIHNpYmxpbmcsIHRoZSBlcnJvciBFR0xfQkFEX0FDQ0VTUyBpcyBnZW5lcmF0ZWQu
Ci0gICAgaW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUihkaXNwbGF5LCBjb250ZXh0LCBFR0xfR0xf
VEVYVFVSRV8yRF9LSFIsIHRleHR1cmUyRCwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX05FKGltYWdl
LCBFR0xfTk9fSU1BR0VfS0hSKTsKLSAgICBFWFBFQ1RfRUdMX1NVQ0NFU1MoKTsKLQotICAgIC8q
IFRPRE8oZ2VvZmZsYW5nKTogRW5hYmxlIHRoaXMgdmFsaWRhdGlvbiB3aGVuIGl0IHBhc3Nlcy4K
LSAgICBFR0xJbWFnZUtIUiBpbWFnZTIgPSBlZ2xDcmVhdGVJbWFnZUtIUihkaXNwbGF5LCBjb250
ZXh0LCBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsCi0gICAgcmVpbnRlcnByZXRfY2FzdDxFR0xDbGll
bnRCdWZmZXI+KHRleHR1cmUyRCksIG51bGxwdHIpOwotICAgIEVYUEVDVF9FUShpbWFnZTIsIEVH
TF9OT19JTUFHRV9LSFIpOwotICAgIEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9BQ0NFU1MpOwot
ICAgICovCi0KLSAgICAvLyBUZXN0IHZhbGlkYXRpb24gb2YgZWdsRGVzdHJveUltYWdlS0hSCi0g
ICAgLy8gTm90ZTogaW1hZ2UgaXMgbm93IGEgdmFsaWQgRUdMIGltYWdlCi0gICAgRUdMQm9vbGVh
biByZXN1bHQgPSBFR0xfRkFMU0U7Ci0KLSAgICAvLyBJZiA8ZHB5PiBpcyBub3QgdGhlIGhhbmRs
ZSBvZiBhIHZhbGlkIEVHTERpc3BsYXkgb2JqZWN0LCB0aGUgZXJyb3IgRUdMX0JBRF9ESVNQTEFZ
IGlzCi0gICAgLy8gZ2VuZXJhdGVkLgotICAgIHJlc3VsdCA9IGVnbERlc3Ryb3lJbWFnZUtIUihy
ZWludGVycHJldEhlbHBlcjxFR0xEaXNwbGF5PigweEJBQURGMDBEKSwgaW1hZ2UpOwotICAgIEVY
UEVDVF9FUShyZXN1bHQsIHN0YXRpY19jYXN0PEVHTEJvb2xlYW4+KEVHTF9GQUxTRSkpOwotICAg
IEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9ESVNQTEFZKTsKLQotICAgIC8vIElmIDxpbWFnZT4g
aXMgbm90IGEgdmFsaWQgRUdMSW1hZ2VLSFIgb2JqZWN0IGNyZWF0ZWQgd2l0aCByZXNwZWN0IHRv
IDxkcHk+LCB0aGUgZXJyb3IKLSAgICAvLyBFR0xfQkFEX1BBUkFNRVRFUiBpcyBnZW5lcmF0ZWQu
Ci0gICAgcmVzdWx0ID0gZWdsRGVzdHJveUltYWdlS0hSKGRpc3BsYXksIHJlaW50ZXJwcmV0SGVs
cGVyPEVHTEltYWdlS0hSPigweEJBQURGMDBEKSk7Ci0gICAgRVhQRUNUX0VRKHJlc3VsdCwgc3Rh
dGljX2Nhc3Q8RUdMQm9vbGVhbj4oRUdMX0ZBTFNFKSk7Ci0gICAgRVhQRUNUX0VHTF9FUlJPUihF
R0xfQkFEX1BBUkFNRVRFUik7Ci0KLSAgICAvLyBDbGVhbiB1cCBhbmQgdmFsaWRhdGUgaW1hZ2Ug
aXMgZGVzdHJveWVkCi0gICAgcmVzdWx0ID0gZWdsRGVzdHJveUltYWdlS0hSKGRpc3BsYXksIGlt
YWdlKTsKLSAgICBFWFBFQ1RfRVEocmVzdWx0LCBzdGF0aWNfY2FzdDxFR0xCb29sZWFuPihFR0xf
VFJVRSkpOwotICAgIEVYUEVDVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgZ2xEZWxldGVUZXh0dXJl
cygxLCAmZ2xUZXh0dXJlMkQpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBD
aGVjayB2YWxpZGF0aW9uIGZyb20gdGhlIEVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSBleHRl
bnNpb24KLVRFU1RfUChJbWFnZVRlc3QsIFZhbGlkYXRpb25JbWFnZVBpeG1hcCkKLXsKLSAgICAv
LyBUaGlzIGV4dGVuc2lvbiBpcyBub3QgaW1wbGVtZW50ZWQgYW55d2hlcmUgeWV0LiAgVGhpcyBt
YWtlcyBzdXJlIHRoYXQgaXQgaXMgdGVzdGVkIG9uY2UgaXQgaXMKLSAgICAvLyBhZGRlZC4KLSAg
ICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwotICAgIEVYUEVDVF9GQUxTRShl
Z2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJf
aW1hZ2VfcGl4bWFwIikpOwotfQotCi0vLyBDaGVjayB2YWxpZGF0aW9uIGZyb20gdGhlIEVHTF9L
SFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSwgRUdMX0tIUl9nbF90ZXh0dXJlX2N1YmVtYXBfaW1hZ2Us
Ci0vLyBFR0xfS0hSX2dsX3RleHR1cmVfM0RfaW1hZ2UgYW5kIEVHTF9LSFJfZ2xfcmVuZGVyYnVm
ZmVyX2ltYWdlIGV4dGVuc2lvbnMKLVRFU1RfUChJbWFnZVRlc3QsIFZhbGlkYXRpb25HTEltYWdl
KQotewotICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7Ci0gICAgaWYgKCFl
eHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlIikgfHwKLSAgICAgICAgIWVnbERpc3BsYXlF
eHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNl
IikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9F
U19FR0xfaW1hZ2Ugb3IgRUdMX0tIUl9pbWFnZV9iYXNlIGlzIG5vdCBhdmFpbGFibGUuIgotICAg
ICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gd2luZG93LT5nZXREaXNwbGF5KCk7Ci0gICAgRUdMQ29u
dGV4dCBjb250ZXh0ID0gd2luZG93LT5nZXRDb250ZXh0KCk7Ci0gICAgRUdMSW1hZ2VLSFIgaW1h
Z2UgID0gRUdMX05PX0lNQUdFX0tIUjsKLQotICAgIGlmIChlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5h
YmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIp
KQotICAgIHsKLSAgICAgICAgLy8gSWYgPHRhcmdldD4gaXMgRUdMX0dMX1RFWFRVUkVfMkRfS0hS
LCBFR0xfR0xfVEVYVFVSRV9DVUJFX01BUF8qX0tIUiBvcgotICAgICAgICAvLyBFR0xfR0xfVEVY
VFVSRV8zRF9LSFIgYW5kIDxidWZmZXI+IGlzIG5vdCB0aGUgbmFtZSBvZiBhIHRleHR1cmUgb2Jq
ZWN0IG9mIHR5cGUgPHRhcmdldD4sCi0gICAgICAgIC8vIHRoZSBlcnJvciBFR0xfQkFEX1BBUkFN
RVRFUiBpcyBnZW5lcmF0ZWQuCi0gICAgICAgIEdMdWludCB0ZXh0dXJlQ3ViZTsKLSAgICAgICAg
Z2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZUN1YmUpOwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfQ1VCRV9NQVAsIHRleHR1cmVDdWJlKTsKLSAgICAgICAgZm9yIChHTGVudW0gZmFj
ZSA9IEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDsgZmFjZSA8PSBHTF9URVhUVVJFX0NV
QkVfTUFQX05FR0FUSVZFX1o7Ci0gICAgICAgICAgICAgZmFjZSsrKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBnbFRleEltYWdlMkQoZmFjZSwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwg
R0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0gICAgICAgIH0KLQotICAgICAgICBpbWFnZSA9
IGVnbENyZWF0ZUltYWdlS0hSKGRpc3BsYXksIGNvbnRleHQsIEVHTF9HTF9URVhUVVJFXzJEX0tI
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldEhlbHBlcjxF
R0xDbGllbnRCdWZmZXI+KHRleHR1cmVDdWJlKSwgbnVsbHB0cik7Ci0gICAgICAgIEVYUEVDVF9F
UShpbWFnZSwgRUdMX05PX0lNQUdFX0tIUik7Ci0gICAgICAgIEVYUEVDVF9FR0xfRVJST1IoRUdM
X0JBRF9QQVJBTUVURVIpOwotCi0gICAgICAgIC8vIElmIEVHTF9HTF9URVhUVVJFX0xFVkVMX0tI
UiBpcyAwLCA8dGFyZ2V0PiBpcyBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsCi0gICAgICAgIC8vIEVH
TF9HTF9URVhUVVJFX0NVQkVfTUFQXypfS0hSIG9yIEVHTF9HTF9URVhUVVJFXzNEX0tIUiwgPGJ1
ZmZlcj4gaXMgdGhlIG5hbWUgb2YgYW4KLSAgICAgICAgLy8gaW5jb21wbGV0ZSBHTCB0ZXh0dXJl
IG9iamVjdCwgYW5kIGFueSBtaXBtYXAgbGV2ZWxzIG90aGVyIHRoYW4gbWlwbWFwIGxldmVsIDAg
YXJlCi0gICAgICAgIC8vIHNwZWNpZmllZCwgdGhlIGVycm9yIEVHTF9CQURfUEFSQU1FVEVSIGlz
IGdlbmVyYXRlZC4KLSAgICAgICAgR0x1aW50IGluY29tcGxldGVUZXh0dXJlOwotICAgICAgICBn
bEdlblRleHR1cmVzKDEsICZpbmNvbXBsZXRlVGV4dHVyZSk7Ci0gICAgICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV8yRCwgaW5jb21wbGV0ZVRleHR1cmUpOwotICAgICAgICBnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdO
RURfQllURSwgbnVsbHB0cik7Ci0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAx
LCBHTF9SR0JBLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsK
LQotICAgICAgICBFR0xpbnQgbGV2ZWwwQXR0cmlidXRlW10gPSB7Ci0gICAgICAgICAgICBFR0xf
R0xfVEVYVFVSRV9MRVZFTF9LSFIsIDAsIEVHTF9OT05FLAotICAgICAgICB9OwotICAgICAgICBp
bWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRpc3BsYXksIGNvbnRleHQsIEVHTF9HTF9URVhUVVJF
XzJEX0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldEhl
bHBlcjxFR0xDbGllbnRCdWZmZXI+KGluY29tcGxldGVUZXh0dXJlKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBsZXZlbDBBdHRyaWJ1dGUpOwotICAgICAgICBFWFBFQ1RfRVEo
aW1hZ2UsIEVHTF9OT19JTUFHRV9LSFIpOwotICAgICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9C
QURfUEFSQU1FVEVSKTsKLQotICAgICAgICAvLyBJZiBFR0xfR0xfVEVYVFVSRV9MRVZFTF9LSFIg
aXMgMCwgPHRhcmdldD4gaXMgRUdMX0dMX1RFWFRVUkVfMkRfS0hSIG9yCi0gICAgICAgIC8vIEVH
TF9HTF9URVhUVVJFXzNEX0tIUiwgPGJ1ZmZlcj4gaXMgbm90IHRoZSBuYW1lIG9mIGEgY29tcGxl
dGUgR0wgdGV4dHVyZSBvYmplY3QsIGFuZAotICAgICAgICAvLyBtaXBtYXAgbGV2ZWwgMCBpcyBu
b3Qgc3BlY2lmaWVkLCB0aGUgZXJyb3IgRUdMX0JBRF9QQVJBTUVURVIgaXMgZ2VuZXJhdGVkLgot
ICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMCwgMCwgMCwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0gICAgICAgIGltYWdlID0gZWds
Q3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwgY29udGV4dCwgRUdMX0dMX1RFWFRVUkVfMkRfS0hSLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0SGVscGVyPEVHTENs
aWVudEJ1ZmZlcj4oaW5jb21wbGV0ZVRleHR1cmUpLCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNU
X0VRKGltYWdlLCBFR0xfTk9fSU1BR0VfS0hSKTsKLSAgICAgICAgRVhQRUNUX0VHTF9FUlJPUihF
R0xfQkFEX1BBUkFNRVRFUik7Ci0KLSAgICAgICAgLy8gSWYgPHRhcmdldD4gaXMgRUdMX0dMX1RF
WFRVUkVfMkRfS0hSLCBFR0xfR0xfVEVYVFVSRV9DVUJFX01BUF8qX0tIUiwKLSAgICAgICAgLy8g
RUdMX0dMX1JFTkRFUkJVRkZFUl9LSFIgb3IgRUdMX0dMX1RFWFRVUkVfM0RfS0hSIGFuZCA8YnVm
ZmVyPiByZWZlcnMgdG8gdGhlIGRlZmF1bHQgR0wKLSAgICAgICAgLy8gdGV4dHVyZSBvYmplY3Qo
MCkgZm9yIHRoZSBjb3JyZXNwb25kaW5nIEdMIHRhcmdldCwgdGhlIGVycm9yIEVHTF9CQURfUEFS
QU1FVEVSIGlzCi0gICAgICAgIC8vIGdlbmVyYXRlZC4KLSAgICAgICAgaW1hZ2UgPSBlZ2xDcmVh
dGVJbWFnZUtIUihkaXNwbGF5LCBjb250ZXh0LCBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsIDAsIG51
bGxwdHIpOwotICAgICAgICBFWFBFQ1RfRVEoaW1hZ2UsIEVHTF9OT19JTUFHRV9LSFIpOwotICAg
ICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfUEFSQU1FVEVSKTsKLQotICAgICAgICAvLyBJ
ZiA8dGFyZ2V0PiBpcyBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsIEVHTF9HTF9URVhUVVJFX0NVQkVf
TUFQXypfS0hSLCBvcgotICAgICAgICAvLyBFR0xfR0xfVEVYVFVSRV8zRF9LSFIsIGFuZCB0aGUg
dmFsdWUgc3BlY2lmaWVkIGluIDxhdHRyX2xpc3Q+IGZvcgotICAgICAgICAvLyBFR0xfR0xfVEVY
VFVSRV9MRVZFTF9LSFIgaXMgbm90IGEgdmFsaWQgbWlwbWFwIGxldmVsIGZvciB0aGUgc3BlY2lm
aWVkIEdMIHRleHR1cmUgb2JqZWN0Ci0gICAgICAgIC8vIDxidWZmZXI+LCB0aGUgZXJyb3IgRUdM
X0JBRF9NQVRDSCBpcyBnZW5lcmF0ZWQuCi0gICAgICAgIEVHTGludCBsZXZlbDJBdHRyaWJ1dGVb
XSA9IHsKLSAgICAgICAgICAgIEVHTF9HTF9URVhUVVJFX0xFVkVMX0tIUiwgMiwgRUdMX05PTkUs
Ci0gICAgICAgIH07Ci0gICAgICAgIGltYWdlID0gZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwg
Y29udGV4dCwgRUdMX0dMX1RFWFRVUkVfMkRfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0SGVscGVyPEVHTENsaWVudEJ1ZmZlcj4oaW5jb21wbGV0ZVRl
eHR1cmUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsMkF0dHJpYnV0
ZSk7Ci0gICAgICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05PX0lNQUdFX0tIUik7Ci0gICAgICAg
IEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9QQVJBTUVURVIpOwotICAgIH0KLSAgICBlbHNlCi0g
ICAgewotICAgICAgICBHTHVpbnQgdGV4dHVyZTJEOwotICAgICAgICBnbEdlblRleHR1cmVzKDEs
ICZ0ZXh0dXJlMkQpOwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1
cmUyRCk7Ci0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAx
LCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLQotICAgICAgICAv
LyBGcm9tIEVHTF9LSFJfaW1hZ2VfYmFzZToKLSAgICAgICAgLy8gSWYgPHRhcmdldD4gaXMgbm90
IG9uZSBvZiB0aGUgdmFsdWVzIGluIFRhYmxlIGFhYSwgdGhlIGVycm9yIEVHTF9CQURfUEFSQU1F
VEVSIGlzCi0gICAgICAgIC8vIGdlbmVyYXRlZC4KLSAgICAgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJ
bWFnZUtIUihkaXNwbGF5LCBjb250ZXh0LCBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRIZWxwZXI8RUdMQ2xpZW50QnVm
ZmVyPih0ZXh0dXJlMkQpLCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0VRKGltYWdlLCBFR0xf
Tk9fSU1BR0VfS0hSKTsKLSAgICAgICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX1BBUkFNRVRF
Uik7Ci0gICAgfQotCi0gICAgaWYgKGVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+
Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlX2N1YmVtYXBfaW1hZ2UiKSkKLSAgICB7
Ci0gICAgICAgIC8vIElmIEVHTF9HTF9URVhUVVJFX0xFVkVMX0tIUiBpcyAwLCA8dGFyZ2V0PiBp
cyBFR0xfR0xfVEVYVFVSRV9DVUJFX01BUF8qX0tIUiwgPGJ1ZmZlcj4gaXMKLSAgICAgICAgLy8g
bm90IHRoZSBuYW1lIG9mIGEgY29tcGxldGUgR0wgdGV4dHVyZSBvYmplY3QsIGFuZCBvbmUgb3Ig
bW9yZSBmYWNlcyBkbyBub3QgaGF2ZSBtaXBtYXAKLSAgICAgICAgLy8gbGV2ZWwgMCBzcGVjaWZp
ZWQsIHRoZSBlcnJvciBFR0xfQkFEX1BBUkFNRVRFUiBpcyBnZW5lcmF0ZWQuCi0gICAgICAgIEdM
dWludCBpbmNvbXBsZXRlVGV4dHVyZUN1YmU7Ci0gICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJmlu
Y29tcGxldGVUZXh0dXJlQ3ViZSk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9D
VUJFX01BUCwgaW5jb21wbGV0ZVRleHR1cmVDdWJlKTsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAg
ICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAwLCBHTF9S
R0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0cik7Ci0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQ
X1BPU0lUSVZFX1ksIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsCi0gICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgZ2xUZXhJbWFnZTJE
KEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwot
ICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLCAwLCBH
TF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0cik7Ci0KLSAgICAgICAgRUdMaW50IGxldmVsMEF0dHJpYnV0ZVtdID0g
ewotICAgICAgICAgICAgRUdMX0dMX1RFWFRVUkVfTEVWRUxfS0hSLCAwLCBFR0xfTk9ORSwKLSAg
ICAgICAgfTsKLSAgICAgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUihkaXNwbGF5LCBjb250
ZXh0LCBFR0xfR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YX0tIUiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldEhlbHBlcjxFR0xDbGllbnRCdWZmZXI+
KGluY29tcGxldGVUZXh0dXJlQ3ViZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGV2ZWwwQXR0cmlidXRlKTsKLSAgICAgICAgRVhQRUNUX0VRKGltYWdlLCBFR0xfTk9fSU1B
R0VfS0hSKTsKLSAgICAgICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX1BBUkFNRVRFUik7Ci0g
ICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIEdMdWludCB0ZXh0dXJlQ3ViZTsKLSAgICAg
ICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZUN1YmUpOwotICAgICAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfQ1VCRV9NQVAsIHRleHR1cmVDdWJlKTsKLSAgICAgICAgZm9yIChHTGVudW0g
ZmFjZSA9IEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDsgZmFjZSA8PSBHTF9URVhUVVJF
X0NVQkVfTUFQX05FR0FUSVZFX1o7Ci0gICAgICAgICAgICAgZmFjZSsrKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBnbFRleEltYWdlMkQoZmFjZSwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBG
cm9tIEVHTF9LSFJfaW1hZ2VfYmFzZToKLSAgICAgICAgLy8gSWYgPHRhcmdldD4gaXMgbm90IG9u
ZSBvZiB0aGUgdmFsdWVzIGluIFRhYmxlIGFhYSwgdGhlIGVycm9yIEVHTF9CQURfUEFSQU1FVEVS
IGlzCi0gICAgICAgIC8vIGdlbmVyYXRlZC4KLSAgICAgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJbWFn
ZUtIUihkaXNwbGF5LCBjb250ZXh0LCBFR0xfR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9Y
X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldEhlbHBl
cjxFR0xDbGllbnRCdWZmZXI+KHRleHR1cmVDdWJlKSwgbnVsbHB0cik7Ci0gICAgICAgIEVYUEVD
VF9FUShpbWFnZSwgRUdMX05PX0lNQUdFX0tIUik7Ci0gICAgICAgIEVYUEVDVF9FR0xfRVJST1Io
RUdMX0JBRF9QQVJBTUVURVIpOwotICAgIH0KLQotICAgIGlmIChlZ2xEaXNwbGF5RXh0ZW5zaW9u
RW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8zRF9pbWFn
ZSIpICYmCi0gICAgICAgIGdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMpCi0gICAgewotICAg
ICAgICAvLyBJZiA8dGFyZ2V0PiBpcyBFR0xfR0xfVEVYVFVSRV8zRF9LSFIsIGFuZCB0aGUgdmFs
dWUgc3BlY2lmaWVkIGluIDxhdHRyX2xpc3Q+IGZvcgotICAgICAgICAvLyBFR0xfR0xfVEVYVFVS
RV9aT0ZGU0VUX0tIUiBleGNlZWRzIHRoZSBkZXB0aCBvZiB0aGUgc3BlY2lmaWVkIG1pcG1hcCBs
ZXZlbCAtIG9mIC0gZGV0YWlsCi0gICAgICAgIC8vIGluIDxidWZmZXI+LCB0aGUgZXJyb3IgRUdM
X0JBRF9QQVJBTUVURVIgaXMgZ2VuZXJhdGVkLgotICAgICAgICBHTHVpbnQgdGV4dHVyZTNEOwot
ICAgICAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlM0QpOwotICAgICAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfM0QsIHRleHR1cmUzRCk7Ci0gICAgICAgIGdsVGV4SW1hZ2UzRChHTF9U
RVhUVVJFXzNELCAwLCBHTF9SR0JBLCAyLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLCBudWxscHRyKTsKLQotICAgICAgICBFR0xpbnQgek9mZnNldDNQYXJhbWV0ZXJbXSA9IHsK
LSAgICAgICAgICAgIEVHTF9HTF9URVhUVVJFX1pPRkZTRVRfS0hSLCAzLCBFR0xfTk9ORSwKLSAg
ICAgICAgfTsKLSAgICAgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUihkaXNwbGF5LCBjb250
ZXh0LCBFR0xfR0xfVEVYVFVSRV8zRF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVpbnRlcnByZXRIZWxwZXI8RUdMQ2xpZW50QnVmZmVyPih0ZXh0dXJlM0QpLCB6T2Zm
c2V0M1BhcmFtZXRlcik7Ci0gICAgICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05PX0lNQUdFX0tI
Uik7Ci0gICAgICAgIEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9QQVJBTUVURVIpOwotCi0gICAg
ICAgIEVHTGludCB6T2Zmc2V0TmVnYXRpdmUxUGFyYW1ldGVyW10gPSB7Ci0gICAgICAgICAgICBF
R0xfR0xfVEVYVFVSRV9aT0ZGU0VUX0tIUiwgLTEsIEVHTF9OT05FLAotICAgICAgICB9OwotICAg
ICAgICBpbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRpc3BsYXksIGNvbnRleHQsIEVHTF9HTF9U
RVhUVVJFXzNEX0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVy
cHJldEhlbHBlcjxFR0xDbGllbnRCdWZmZXI+KHRleHR1cmUzRCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgek9mZnNldE5lZ2F0aXZlMVBhcmFtZXRlcik7Ci0gICAgICAgIEVY
UEVDVF9FUShpbWFnZSwgRUdMX05PX0lNQUdFX0tIUik7Ci0gICAgICAgIEVYUEVDVF9FR0xfRVJS
T1IoRUdMX0JBRF9QQVJBTUVURVIpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBp
ZiAoZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xf
S0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UiKSkKLSAgICAgICAgewotICAgICAgICAgICAgR0x1aW50
IHRleHR1cmUyRDsKLSAgICAgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUyRCk7Ci0g
ICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUyRCk7Ci0gICAg
ICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0KLSAgICAgICAgICAgIC8vIFZl
cmlmeSBFR0xfR0xfVEVYVFVSRV9aT0ZGU0VUX0tIUiBpcyBub3QgYSB2YWxpZCBwYXJhbWV0ZXIK
LSAgICAgICAgICAgIEVHTGludCB6T2Zmc2V0MFBhcmFtZXRlcltdID0gewotICAgICAgICAgICAg
ICAgIEVHTF9HTF9URVhUVVJFX1pPRkZTRVRfS0hSLCAwLCBFR0xfTk9ORSwKLSAgICAgICAgICAg
IH07Ci0KLSAgICAgICAgICAgIGltYWdlID0KLSAgICAgICAgICAgICAgICBlZ2xDcmVhdGVJbWFn
ZUtIUihkaXNwbGF5LCBjb250ZXh0LCBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRIZWxwZXI8RUdMQ2xpZW50QnVmZmVy
Pih0ZXh0dXJlMkQpLCB6T2Zmc2V0MFBhcmFtZXRlcik7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEo
aW1hZ2UsIEVHTF9OT19JTUFHRV9LSFIpOwotICAgICAgICAgICAgRVhQRUNUX0VHTF9FUlJPUihF
R0xfQkFEX1BBUkFNRVRFUik7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZ2V0Q2xpZW50TWFq
b3JWZXJzaW9uKCkgPj0gMykKLSAgICAgICAgewotICAgICAgICAgICAgR0x1aW50IHRleHR1cmUz
RDsKLSAgICAgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUzRCk7Ci0gICAgICAgICAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfM0QsIHRleHR1cmUzRCk7Ci0gICAgICAgICAgICBn
bFRleEltYWdlM0QoR0xfVEVYVFVSRV8zRCwgMCwgR0xfUkdCQSwgMSwgMSwgMSwgMCwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0KLSAgICAgICAgICAgIC8vIEZyb20gRUdM
X0tIUl9pbWFnZV9iYXNlOgotICAgICAgICAgICAgLy8gSWYgPHRhcmdldD4gaXMgbm90IG9uZSBv
ZiB0aGUgdmFsdWVzIGluIFRhYmxlIGFhYSwgdGhlIGVycm9yIEVHTF9CQURfUEFSQU1FVEVSIGlz
Ci0gICAgICAgICAgICAvLyBnZW5lcmF0ZWQuCi0gICAgICAgICAgICBpbWFnZSA9IGVnbENyZWF0
ZUltYWdlS0hSKGRpc3BsYXksIGNvbnRleHQsIEVHTF9HTF9URVhUVVJFXzNEX0tIUiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRIZWxwZXI8RUdMQ2xp
ZW50QnVmZmVyPih0ZXh0dXJlM0QpLCBudWxscHRyKTsKLSAgICAgICAgICAgIEVYUEVDVF9FUShp
bWFnZSwgRUdMX05PX0lNQUdFX0tIUik7Ci0gICAgICAgICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVH
TF9CQURfUEFSQU1FVEVSKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChlZ2xEaXNwbGF5
RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfcmVuZGVy
YnVmZmVyX2ltYWdlIikpCi0gICAgewotICAgICAgICAvLyBJZiA8dGFyZ2V0PiBpcyBFR0xfR0xf
UkVOREVSQlVGRkVSX0tIUiBhbmQgPGJ1ZmZlcj4gaXMgbm90IHRoZSBuYW1lIG9mIGEgcmVuZGVy
YnVmZmVyCi0gICAgICAgIC8vIG9iamVjdCwgb3IgaWYgPGJ1ZmZlcj4gaXMgdGhlIG5hbWUgb2Yg
YSBtdWx0aXNhbXBsZWQgcmVuZGVyYnVmZmVyIG9iamVjdCwgdGhlIGVycm9yCi0gICAgICAgIC8v
IEVHTF9CQURfUEFSQU1FVEVSIGlzIGdlbmVyYXRlZC4KLSAgICAgICAgaW1hZ2UgPSBlZ2xDcmVh
dGVJbWFnZUtIUihkaXNwbGF5LCBjb250ZXh0LCBFR0xfR0xfUkVOREVSQlVGRkVSX0tIUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEVHTENsaWVu
dEJ1ZmZlcj4oMCksIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfRVEoaW1hZ2UsIEVHTF9OT19J
TUFHRV9LSFIpOwotICAgICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfUEFSQU1FVEVSKTsK
LQotICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJfbXVs
dGlzYW1wbGUiKSkKLSAgICAgICAgewotICAgICAgICAgICAgR0x1aW50IHJlbmRlcmJ1ZmZlcjsK
LSAgICAgICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVyKTsKLSAgICAg
ICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7
Ci0gICAgICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JF
TkRFUkJVRkZFUiwgMSwgR0xfUkdCQTgsIDEsIDEpOwotICAgICAgICAgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICAgICAgICAgIGltYWdlID0gZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxh
eSwgY29udGV4dCwgRUdMX0dMX1JFTkRFUkJVRkZFUl9LSFIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQ2xpZW50QnVmZmVyPigwKSwg
bnVsbHB0cik7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoaW1hZ2UsIEVHTF9OT19JTUFHRV9LSFIp
OwotICAgICAgICAgICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX1BBUkFNRVRFUik7Ci0gICAg
ICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgR0x1aW50IHJlbmRlcmJ1ZmZl
cjsKLSAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZyZW5kZXJidWZmZXIpOwotICAgICAg
ICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOwotICAg
ICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9SR0JBNCwgMSwg
MSk7Ci0KLSAgICAgICAgLy8gRnJvbSBFR0xfS0hSX2ltYWdlX2Jhc2U6Ci0gICAgICAgIC8vIElm
IDx0YXJnZXQ+IGlzIG5vdCBvbmUgb2YgdGhlIHZhbHVlcyBpbiBUYWJsZSBhYWEsIHRoZSBlcnJv
ciBFR0xfQkFEX1BBUkFNRVRFUiBpcwotICAgICAgICAvLyBnZW5lcmF0ZWQuCi0gICAgICAgIGlt
YWdlID0gZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwgY29udGV4dCwgRUdMX0dMX1JFTkRFUkJV
RkZFUl9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRI
ZWxwZXI8RUdMQ2xpZW50QnVmZmVyPihyZW5kZXJidWZmZXIpLCBudWxscHRyKTsKLSAgICAgICAg
RVhQRUNUX0VRKGltYWdlLCBFR0xfTk9fSU1BR0VfS0hSKTsKLSAgICAgICAgRVhQRUNUX0VHTF9F
UlJPUihFR0xfQkFEX1BBUkFNRVRFUik7Ci0gICAgfQotfQotCi0vLyBDaGVjayB2YWxpZGF0aW9u
IGZyb20gdGhlIEdMX09FU19FR0xfaW1hZ2UgZXh0ZW5zaW9uCi1URVNUX1AoSW1hZ2VUZXN0LCBW
YWxpZGF0aW9uR0xFR0xJbWFnZSkKLXsKLSAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdp
bmRvdygpOwotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8Ci0g
ICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwg
IkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5h
YmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIp
KQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNf
RUdMX2ltYWdlLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgotICAgICAgICAgICAgICAgICAgICAg
IkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAg
ICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEdM
dWJ5dGUgZGF0YVs0XSA9IHsyNTUsIDAsIDI1NSwgMjU1fTsKLQotICAgIC8vIENyZWF0ZSB0aGUg
SW1hZ2UKLSAgICBHTHVpbnQgc291cmNlOwotICAgIEVHTEltYWdlS0hSIGltYWdlOwotICAgIGNy
ZWF0ZUVHTEltYWdlMkRUZXh0dXJlU291cmNlKDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIGRhdGEsICZzb3VyY2UsICZpbWFnZSk7Ci0KLSAgICAvLyBJZiA8dGFyZ2V0PiBpcyBub3Qg
VEVYVFVSRV8yRCwgdGhlIGVycm9yIElOVkFMSURfRU5VTSBpcyBnZW5lcmF0ZWQuCi0gICAgZ2xF
R0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyhHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gs
IGltYWdlKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgIC8v
IElmIDxpbWFnZT4gZG9lcyBub3QgcmVmZXIgdG8gYSB2YWxpZCBlZ2xJbWFnZU9FUyBvYmplY3Qs
IHRoZSBlcnJvciBJTlZBTElEX1ZBTFVFIGlzCi0gICAgLy8gZ2VuZXJhdGVkLgotICAgIEdMdWlu
dCB0ZXh0dXJlOwotICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUpOwotICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSk7Ci0gICAgZ2xFR0xJbWFnZVRhcmdldFRleHR1
cmUyRE9FUyhHTF9URVhUVVJFXzJELCByZWludGVycHJldEhlbHBlcjxHTGVnbEltYWdlT0VTPigw
eEJBQURGMDBEKSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0g
ICAgLy8gPHRhcmdldD4gbXVzdCBiZSBSRU5ERVJCVUZGRVJfT0VTLCBhbmQgPGltYWdlPiBtdXN0
IGJlIHRoZSBoYW5kbGUgb2YgYSB2YWxpZCBFR0xJbWFnZQotICAgIC8vIHJlc291cmNlLCBjYXN0
IGludG8gdGhlIHR5cGUKLSAgICAvLyBlZ2xJbWFnZU9FUy4KLSAgICBnbEVHTEltYWdlVGFyZ2V0
UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyhHTF9URVhUVVJFXzJELCBpbWFnZSk7Ci0gICAgRVhQRUNU
X0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAvLyBJZiB0aGUgR0wgaXMgdW5hYmxl
IHRvIGNyZWF0ZSBhIHJlbmRlcmJ1ZmZlciB1c2luZyB0aGUgc3BlY2lmaWVkIGVnbEltYWdlT0VT
LCB0aGUgZXJyb3IKLSAgICAvLyBJTlZBTElEX09QRVJBVElPTiBpcyBnZW5lcmF0ZWQuSWYgPGlt
YWdlPgotICAgIC8vIGRvZXMgbm90IHJlZmVyIHRvIGEgdmFsaWQgZWdsSW1hZ2VPRVMgb2JqZWN0
LCB0aGUgZXJyb3IgSU5WQUxJRF9WQUxVRSBpcyBnZW5lcmF0ZWQuCi0gICAgR0x1aW50IHJlbmRl
cmJ1ZmZlcjsKLSAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7Ci0gICAg
Z2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKLSAgICBn
bEVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyhHTF9SRU5ERVJCVUZGRVIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRIZWxw
ZXI8R0xlZ2xJbWFnZU9FUz4oMHhCQUFERjAwRCkpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9J
TlZBTElEX1ZBTFVFKTsKLQotICAgIC8vIENsZWFuIHVwCi0gICAgZ2xEZWxldGVUZXh0dXJlcygx
LCAmc291cmNlKTsKLSAgICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCks
IGltYWdlKTsKLSAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKLSAgICBnbERlbGV0
ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7Ci19Ci0KLS8vIENoZWNrIHZhbGlkYXRp
b24gZnJvbSB0aGUgR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCBleHRlbnNpb24KLVRFU1RfUChJ
bWFnZVRlc3QsIFZhbGlkYXRpb25HTEVHTEltYWdlRXh0ZXJuYWwpCi17Ci0gICAgaWYgKCFleHRl
bnNpb25FbmFibGVkKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpCi0gICAgewotICAgICAg
ICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX09FU19FR0xfaW1hZ2VfZXh0
ZXJuYWwgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHVpbnQgdGV4dHVyZTsKLSAgICBnbEdl
blRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfRVhU
RVJOQUxfT0VTLCB0ZXh0dXJlKTsKLQotICAgIC8vIEluIHRoZSBpbml0aWFsIHN0YXRlIG9mIGEg
VEVYVFVSRV9FWFRFUk5BTF9PRVMgdGV4dHVyZSBvYmplY3QsIHRoZSB2YWx1ZSBhc3NpZ25lZCB0
bwotICAgIC8vIFRFWFRVUkVfTUlOX0ZJTFRFUiBhbmQgVEVYVFVSRV9NQUdfRklMVEVSIGlzIExJ
TkVBUiwgYW5kIHRoZSBzIGFuZCB0IHdyYXAgbW9kZXMgYXJlIGJvdGggc2V0Ci0gICAgLy8gdG8g
Q0xBTVBfVE9fRURHRQotICAgIGF1dG8gZ2V0VGV4UGFyYW0gPSBbXShHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcG5hbWUpCi0gICAgewotICAgICAgICBHTGludCB2YWx1ZSA9IDA7Ci0gICAgICAgIGds
R2V0VGV4UGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgJnZhbHVlKTsKLSAgICAgICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci0gICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICB9OwotICAgIEVYUEVD
VF9HTEVOVU1fRVEoR0xfTElORUFSLCBnZXRUZXhQYXJhbShHTF9URVhUVVJFX0VYVEVSTkFMX09F
UywgR0xfVEVYVFVSRV9NSU5fRklMVEVSKSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9MSU5F
QVIsIGdldFRleFBhcmFtKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9URVhUVVJFX01BR19G
SUxURVIpKTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0NMQU1QX1RPX0VER0UsIGdldFRleFBh
cmFtKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9URVhUVVJFX1dSQVBfUykpOwotICAgIEVY
UEVDVF9HTEVOVU1fRVEoR0xfQ0xBTVBfVE9fRURHRSwgZ2V0VGV4UGFyYW0oR0xfVEVYVFVSRV9F
WFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfV1JBUF9UKSk7Ci0KLSAgICAvLyAiV2hlbiA8dGFyZ2V0
PiBpcyBURVhUVVJFX0VYVEVSTkFMX09FUyBvbmx5IE5FQVJFU1QgYW5kIExJTkVBUiBhcmUgYWNj
ZXB0ZWQgYXMKLSAgICAvLyBURVhUVVJFX01JTl9GSUxURVIsIG9ubHkgQ0xBTVBfVE9fRURHRSBp
cyBhY2NlcHRlZCBhcyBURVhUVVJFX1dSQVBfUyBhbmQgVEVYVFVSRV9XUkFQX1QsIGFuZAotICAg
IC8vIG9ubHkgRkFMU0UgaXMgYWNjZXB0ZWQgYXMgR0VORVJBVEVfTUlQTUFQLiBBdHRlbXB0aW5n
IHRvIHNldCBvdGhlciB2YWx1ZXMgZm9yCi0gICAgLy8gVEVYVFVSRV9NSU5fRklMVEVSLCBURVhU
VVJFX1dSQVBfUywgVEVYVFVSRV9XUkFQX1QsIG9yIEdFTkVSQVRFX01JUE1BUCB3aWxsIHJlc3Vs
dCBpbiBhbgotICAgIC8vIElOVkFMSURfRU5VTSBlcnJvci4KLSAgICBHTGVudW0gdmFsaWRNaW5G
aWx0ZXJzW117Ci0gICAgICAgIEdMX05FQVJFU1QsIEdMX0xJTkVBUiwKLSAgICB9OwotICAgIGZv
ciAoYXV0byBtaW5GaWx0ZXIgOiB2YWxpZE1pbkZpbHRlcnMpCi0gICAgewotICAgICAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfTUlOX0ZJTFRF
UiwgbWluRmlsdGVyKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0g
ICAgR0xlbnVtIGludmFsaWRNaW5GaWx0ZXJzW117Ci0gICAgICAgIEdMX05FQVJFU1RfTUlQTUFQ
X0xJTkVBUiwgR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCwgR0xfTElORUFSX01JUE1BUF9MSU5F
QVIsCi0gICAgICAgIEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVCwKLSAgICB9OwotICAgIGZvciAo
YXV0byBtaW5GaWx0ZXIgOiBpbnZhbGlkTWluRmlsdGVycykKLSAgICB7Ci0gICAgICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9NSU5fRklMVEVS
LCBtaW5GaWx0ZXIpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsK
LSAgICB9Ci0KLSAgICBHTGVudW0gdmFsaWRXcmFwTW9kZXNbXXsKLSAgICAgICAgR0xfQ0xBTVBf
VE9fRURHRSwKLSAgICB9OwotICAgIGZvciAoYXV0byBtaW5GaWx0ZXIgOiB2YWxpZFdyYXBNb2Rl
cykKLSAgICB7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVSTkFMX09F
UywgR0xfVEVYVFVSRV9XUkFQX1MsIG1pbkZpbHRlcik7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMs
IEdMX1RFWFRVUkVfV1JBUF9ULCBtaW5GaWx0ZXIpOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKLSAgICB9Ci0KLSAgICBHTGVudW0gaW52YWxpZFdyYXBNb2Rlc1tdewotICAgICAgICBH
TF9SRVBFQVQsIEdMX01JUlJPUkVEX1JFUEVBVCwKLSAgICB9OwotICAgIGZvciAoYXV0byBtaW5G
aWx0ZXIgOiBpbnZhbGlkV3JhcE1vZGVzKQotICAgIHsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9URVhUVVJFX1dSQVBfUywgbWluRmlsdGVyKTsK
LSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9XUkFQX1QsIG1p
bkZpbHRlcik7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotICAg
IH0KLQotICAgIC8vIFdoZW4gPHRhcmdldD4gaXMgc2V0IHRvIFRFWFRVUkVfRVhURVJOQUxfT0VT
LCBHZW5lcmF0ZU1pcG1hcCBhbHdheXMgZmFpbHMgYW5kIGdlbmVyYXRlcyBhbgotICAgIC8vIElO
VkFMSURfRU5VTSBlcnJvci4KLSAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfRVhURVJO
QUxfT0VTKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgIGds
RGVsZXRlVGV4dHVyZXMoMSwgJnRleHR1cmUpOwotfQotCi0vLyBDaGVjayB2YWxpZGF0aW9uIGZy
b20gdGhlIEdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMgZXh0ZW5zaW9uCi1URVNUX1Ao
SW1hZ2VUZXN0LCBWYWxpZGF0aW9uR0xFR0xJbWFnZUV4dGVybmFsRVNTTDMpCi17Ci0gICAgaWYg
KCFleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzIikpCi0g
ICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX09FU19F
R0xfaW1hZ2VfZXh0ZXJuYWwgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgICA8
PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBNYWtlIHN1cmUg
dGhpcyBleHRlbnNpb24gaXMgbm90IGV4cG9zZWQgd2l0aG91dCBFUzMuCi0gICAgQVNTRVJUX0dF
KGdldENsaWVudE1ham9yVmVyc2lvbigpLCAzKTsKLQotICAgIEdMdWludCB0ZXh0dXJlOwotICAg
IGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV9FWFRFUk5BTF9PRVMsIHRleHR1cmUpOwotCi0gICAgLy8gSXQgaXMgYW4gSU5WQUxJRF9PUEVS
QVRJT04gZXJyb3IgdG8gc2V0IHRoZSBURVhUVVJFX0JBU0VfTEVWRUwgdG8gYSB2YWx1ZSBvdGhl
ciB0aGFuIHplcm8uCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VT
LCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDEpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci0KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5B
TF9PRVMsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMTApOwotICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci0KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9F
WFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMCk7Ci0gICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKLX0KLQotVEVT
VF9QKEltYWdlVGVzdCwgU291cmNlMkRUYXJnZXQyRCkKLXsKLSAgICBFR0xXaW5kb3cgKndpbmRv
dyA9IGdldEVHTFdpbmRvdygpOwotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9p
bWFnZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdl
dERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5
RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVy
ZV8yRF9pbWFnZSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQg
YmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgotICAgICAgICAg
ICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSBpcyBub3QgYXZhaWxhYmxl
LiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEdMdWJ5dGUgZGF0YVs0XSA9IHsyNTUsIDAsIDI1NSwgMjU1fTsKLQotICAgIC8v
IENyZWF0ZSB0aGUgSW1hZ2UKLSAgICBHTHVpbnQgc291cmNlOwotICAgIEVHTEltYWdlS0hSIGlt
YWdlOwotICAgIGNyZWF0ZUVHTEltYWdlMkRUZXh0dXJlU291cmNlKDEsIDEsIEdMX1JHQkEsIEdM
X1VOU0lHTkVEX0JZVEUsIGRhdGEsICZzb3VyY2UsICZpbWFnZSk7Ci0KLSAgICAvLyBDcmVhdGUg
dGhlIHRhcmdldAotICAgIEdMdWludCB0YXJnZXQ7Ci0gICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRU
ZXh0dXJlMkQoaW1hZ2UsICZ0YXJnZXQpOwotCi0gICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdl
dCB0ZXh0dXJlIGhhcyB0aGUgc2FtZSBjb2xvciBhcyB0aGUgc291cmNlIHRleHR1cmUKLSAgICB2
ZXJpZnlSZXN1bHRzMkQodGFyZ2V0LCBkYXRhKTsKLQotICAgIC8vIENsZWFuIHVwCi0gICAgZ2xE
ZWxldGVUZXh0dXJlcygxLCAmc291cmNlKTsKLSAgICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93
LT5nZXREaXNwbGF5KCksIGltYWdlKTsKLSAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0YXJnZXQp
OwotfQotCi1URVNUX1AoSW1hZ2VUZXN0LCBTb3VyY2UyRFRhcmdldFJlbmRlcmJ1ZmZlcikKLXsK
LSAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwotICAgIGlmICghZXh0ZW5z
aW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5z
aW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8
Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXko
KSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBFR0xfS0hSX2ltYWdl
X2Jhc2Ugb3IgIgotICAgICAgICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9p
bWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEdMdWJ5dGUgZGF0YVs0XSA9IHsyNTUsIDAs
IDI1NSwgMjU1fTsKLQotICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKLSAgICBHTHVpbnQgc291cmNl
OwotICAgIEVHTEltYWdlS0hSIGltYWdlOwotICAgIGNyZWF0ZUVHTEltYWdlMkRUZXh0dXJlU291
cmNlKDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGRhdGEsICZzb3VyY2UsICZpbWFn
ZSk7Ci0KLSAgICAvLyBDcmVhdGUgdGhlIHRhcmdldAotICAgIEdMdWludCB0YXJnZXQ7Ci0gICAg
Y3JlYXRlRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXIoaW1hZ2UsICZ0YXJnZXQpOwotCi0gICAg
Ly8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCByZW5kZXJidWZmZXIgaGFzIHRoZSBzYW1lIGNvbG9y
IGFzIHRoZSBzb3VyY2UgdGV4dHVyZQotICAgIHZlcmlmeVJlc3VsdHNSZW5kZXJidWZmZXIodGFy
Z2V0LCBkYXRhKTsKLQotICAgIC8vIENsZWFuIHVwCi0gICAgZ2xEZWxldGVUZXh0dXJlcygxLCAm
c291cmNlKTsKLSAgICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGlt
YWdlKTsKLSAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnRhcmdldCk7Ci19Ci0KLVRFU1Rf
UChJbWFnZVRlc3QsIFNvdXJjZTJEVGFyZ2V0RXh0ZXJuYWwpCi17Ci0gICAgRUdMV2luZG93ICp3
aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19F
R0xfaW1hZ2UiKSB8fCAhZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIp
IHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3Bs
YXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5z
aW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9p
bWFnZSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0Ci0gICAgICAgICAgICA8PCAiVGVzdCBz
a2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwgT0VTX0VHTF9pbWFnZV9leHRlcm5hbCwgRUdM
X0tIUl9pbWFnZV9iYXNlIG9yICIKLSAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3RleHR1cmVf
MkRfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHVieXRlIGRhdGFbNF0gPSB7MjU1LCAwLCAy
NTUsIDI1NX07Ci0KLSAgICAvLyBDcmVhdGUgdGhlIEltYWdlCi0gICAgR0x1aW50IHNvdXJjZTsK
LSAgICBFR0xJbWFnZUtIUiBpbWFnZTsKLSAgICBjcmVhdGVFR0xJbWFnZTJEVGV4dHVyZVNvdXJj
ZSgxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBkYXRhLCAmc291cmNlLCAmaW1hZ2Up
OwotCi0gICAgLy8gQ3JlYXRlIHRoZSB0YXJnZXQKLSAgICBHTHVpbnQgdGFyZ2V0OwotICAgIGNy
ZWF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZUV4dGVybmFsKGltYWdlLCAmdGFyZ2V0KTsKLQotICAg
IC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQgcmVuZGVyYnVmZmVyIGhhcyB0aGUgc2FtZSBjb2xv
ciBhcyB0aGUgc291cmNlIHRleHR1cmUKLSAgICB2ZXJpZnlSZXN1bHRzRXh0ZXJuYWwodGFyZ2V0
LCBkYXRhKTsKLQotICAgIC8vIENsZWFuIHVwCi0gICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc291
cmNlKTsKLSAgICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGltYWdl
KTsKLSAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnRhcmdldCk7Ci19Ci0KLVRFU1RfUChJ
bWFnZVRlc3RFUzMsIFNvdXJjZTJEVGFyZ2V0RXh0ZXJuYWxFU1NMMykKLXsKLSAgICBFR0xXaW5k
b3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgi
T0VTX0VHTF9pbWFnZSIpIHx8ICFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlX2V4dGVy
bmFsX2Vzc2wzIikgfHwKLSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRv
dy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwKLSAgICAgICAgIWVnbERp
c3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90
ZXh0dXJlXzJEX2ltYWdlIikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBiZWNhdXNlIE9FU19FR0xfaW1hZ2UsIE9FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMs
ICIKLSAgICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgotICAgICAg
ICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSBpcyBub3QgYXZhaWxh
YmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIEdMdWJ5dGUgZGF0YVs0XSA9IHsyNTUsIDAsIDI1NSwgMjU1fTsKLQotICAg
IC8vIENyZWF0ZSB0aGUgSW1hZ2UKLSAgICBHTHVpbnQgc291cmNlOwotICAgIEVHTEltYWdlS0hS
IGltYWdlOwotICAgIGNyZWF0ZUVHTEltYWdlMkRUZXh0dXJlU291cmNlKDEsIDEsIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsIGRhdGEsICZzb3VyY2UsICZpbWFnZSk7Ci0KLSAgICAvLyBDcmVh
dGUgdGhlIHRhcmdldAotICAgIEdMdWludCB0YXJnZXQ7Ci0gICAgY3JlYXRlRUdMSW1hZ2VUYXJn
ZXRUZXh0dXJlRXh0ZXJuYWwoaW1hZ2UsICZ0YXJnZXQpOwotCi0gICAgLy8gRXhwZWN0IHRoYXQg
dGhlIHRhcmdldCByZW5kZXJidWZmZXIgaGFzIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBzb3VyY2Ug
dGV4dHVyZQotICAgIHZlcmlmeVJlc3VsdHNFeHRlcm5hbEVTU0wzKHRhcmdldCwgZGF0YSk7Ci0K
LSAgICAvLyBDbGVhbiB1cAotICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7Ci0gICAg
ZWdsRGVzdHJveUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7Ci0gICAgZ2xE
ZWxldGVSZW5kZXJidWZmZXJzKDEsICZ0YXJnZXQpOwotfQotCi1URVNUX1AoSW1hZ2VUZXN0LCBT
b3VyY2VDdWJlVGFyZ2V0MkQpCi17Ci0gICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5k
b3coKTsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fAotICAg
ICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJF
R0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAotICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJs
ZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfY3ViZW1hcF9pbWFn
ZSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBP
RVNfRUdMX2ltYWdlLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgotICAgICAgICAgICAgICAgICAg
ICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV9jdWJlbWFwX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUuIgot
ICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgR0x1Ynl0ZSBkYXRhWzI0XSA9IHsKLSAgICAgICAgMjU1LCAwLCAyNTUsIDI1NSwgMjU1
LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAsIDAsIDI1NSwKLSAgICAgICAgMCwgICAwLCAyNTUsIDI1
NSwgMCwgICAyNTUsIDAsICAgMjU1LCAwLCAgIDAsIDAsIDI1NSwKLSAgICB9OwotCi0gICAgZm9y
IChFR0xlbnVtIGZhY2VJZHggPSAwOyBmYWNlSWR4IDwgNjsgZmFjZUlkeCsrKQotICAgIHsKLSAg
ICAgICAgLy8gQ3JlYXRlIHRoZSBJbWFnZQotICAgICAgICBHTHVpbnQgc291cmNlOwotICAgICAg
ICBFR0xJbWFnZUtIUiBpbWFnZTsKLSAgICAgICAgY3JlYXRlRUdMSW1hZ2VDdWJlbWFwVGV4dHVy
ZVNvdXJjZSgKLSAgICAgICAgICAgIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCAqPihkYXRhKSwgc2l6ZW9mKEdMdWJ5dGUpICogNCwKLSAg
ICAgICAgICAgIEVHTF9HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hfS0hSICsgZmFjZUlk
eCwgJnNvdXJjZSwgJmltYWdlKTsKLQotICAgICAgICAvLyBDcmVhdGUgdGhlIHRhcmdldAotICAg
ICAgICBHTHVpbnQgdGFyZ2V0OwotICAgICAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFRleHR1cmUy
RChpbWFnZSwgJnRhcmdldCk7Ci0KLSAgICAgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCB0
ZXh0dXJlIGhhcyB0aGUgc2FtZSBjb2xvciBhcyB0aGUgc291cmNlIHRleHR1cmUKLSAgICAgICAg
dmVyaWZ5UmVzdWx0czJEKHRhcmdldCwgJmRhdGFbZmFjZUlkeCAqIDRdKTsKLQotICAgICAgICAv
LyBDbGVhbiB1cAotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZzb3VyY2UpOwotICAgICAg
ICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGltYWdlKTsKLSAgICAg
ICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGFyZ2V0KTsKLSAgICB9Ci19Ci0KLVRFU1RfUChJbWFn
ZVRlc3QsIFNvdXJjZUN1YmVUYXJnZXRSZW5kZXJidWZmZXIpCi17Ci0gICAgRUdMV2luZG93ICp3
aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19F
R0xfaW1hZ2UiKSB8fAotICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93
LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAotICAgICAgICAhZWdsRGlz
cGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3Rl
eHR1cmVfY3ViZW1hcF9pbWFnZSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgot
ICAgICAgICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV9jdWJlbWFwX2ltYWdlIGlz
IG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgR0x1Ynl0ZSBkYXRhWzI0XSA9IHsKLSAgICAgICAgMjU1
LCAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAsIDAsIDI1NSwKLSAgICAg
ICAgMCwgICAwLCAyNTUsIDI1NSwgMCwgICAyNTUsIDAsICAgMjU1LCAwLCAgIDAsIDAsIDI1NSwK
LSAgICB9OwotCi0gICAgZm9yIChFR0xlbnVtIGZhY2VJZHggPSAwOyBmYWNlSWR4IDwgNjsgZmFj
ZUlkeCsrKQotICAgIHsKLSAgICAgICAgLy8gQ3JlYXRlIHRoZSBJbWFnZQotICAgICAgICBHTHVp
bnQgc291cmNlOwotICAgICAgICBFR0xJbWFnZUtIUiBpbWFnZTsKLSAgICAgICAgY3JlYXRlRUdM
SW1hZ2VDdWJlbWFwVGV4dHVyZVNvdXJjZSgKLSAgICAgICAgICAgIDEsIDEsIEdMX1JHQkEsIEdM
X1VOU0lHTkVEX0JZVEUsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCAqPihkYXRhKSwgc2l6ZW9m
KEdMdWJ5dGUpICogNCwKLSAgICAgICAgICAgIEVHTF9HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lU
SVZFX1hfS0hSICsgZmFjZUlkeCwgJnNvdXJjZSwgJmltYWdlKTsKLQotICAgICAgICAvLyBDcmVh
dGUgdGhlIHRhcmdldAotICAgICAgICBHTHVpbnQgdGFyZ2V0OwotICAgICAgICBjcmVhdGVFR0xJ
bWFnZVRhcmdldFJlbmRlcmJ1ZmZlcihpbWFnZSwgJnRhcmdldCk7Ci0KLSAgICAgICAgLy8gRXhw
ZWN0IHRoYXQgdGhlIHRhcmdldCB0ZXh0dXJlIGhhcyB0aGUgc2FtZSBjb2xvciBhcyB0aGUgc291
cmNlIHRleHR1cmUKLSAgICAgICAgdmVyaWZ5UmVzdWx0c1JlbmRlcmJ1ZmZlcih0YXJnZXQsICZk
YXRhW2ZhY2VJZHggKiA0XSk7Ci0KLSAgICAgICAgLy8gQ2xlYW4gdXAKLSAgICAgICAgZ2xEZWxl
dGVUZXh0dXJlcygxLCAmc291cmNlKTsKLSAgICAgICAgZWdsRGVzdHJveUltYWdlS0hSKHdpbmRv
dy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7Ci0gICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygx
LCAmdGFyZ2V0KTsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgY3ViZW1hcCAtPiBleHRlcm5hbCB0ZXh0
dXJlIEVHTCBpbWFnZXMuCi1URVNUX1AoSW1hZ2VUZXN0LCBTb3VyY2VDdWJlVGFyZ2V0RXh0ZXJu
YWwpCi17Ci0gICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLSAgICBpZiAo
IWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fCAhZXh0ZW5zaW9uRW5hYmxlZCgi
T0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9u
RW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8Ci0g
ICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwg
IkVHTF9LSFJfZ2xfdGV4dHVyZV9jdWJlbWFwX2ltYWdlIikpCi0gICAgewotICAgICAgICBzdGQ6
OmNvdXQKLSAgICAgICAgICAgIDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdl
LCBPRVNfRUdMX2ltYWdlX2V4dGVybmFsLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgotICAgICAg
ICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV9jdWJlbWFwX2ltYWdlIGlzIG5vdCBhdmFpbGFi
bGUuIgotICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgR0x1Ynl0ZSBkYXRhWzI0XSA9IHsKLSAgICAgICAgMjU1LCAwLCAyNTUsIDI1NSwgMjU1
LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAsIDAsIDI1NSwKLSAgICAgICAgMCwgICAwLCAyNTUsIDI1
NSwgMCwgICAyNTUsIDAsICAgMjU1LCAwLCAgIDAsIDAsIDI1NSwKLSAgICB9OwotCi0gICAgZm9y
IChFR0xlbnVtIGZhY2VJZHggPSAwOyBmYWNlSWR4IDwgNjsgZmFjZUlkeCsrKQotICAgIHsKLSAg
ICAgICAgLy8gQ3JlYXRlIHRoZSBJbWFnZQotICAgICAgICBHTHVpbnQgc291cmNlOwotICAgICAg
ICBFR0xJbWFnZUtIUiBpbWFnZTsKLSAgICAgICAgY3JlYXRlRUdMSW1hZ2VDdWJlbWFwVGV4dHVy
ZVNvdXJjZSgKLSAgICAgICAgICAgIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDhfdCAqPihkYXRhKSwgc2l6ZW9mKEdMdWJ5dGUpICogNCwKLSAg
ICAgICAgICAgIEVHTF9HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hfS0hSICsgZmFjZUlk
eCwgJnNvdXJjZSwgJmltYWdlKTsKLQotICAgICAgICAvLyBDcmVhdGUgdGhlIHRhcmdldAotICAg
ICAgICBHTHVpbnQgdGFyZ2V0OwotICAgICAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFRleHR1cmVF
eHRlcm5hbChpbWFnZSwgJnRhcmdldCk7Ci0KLSAgICAgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRh
cmdldCB0ZXh0dXJlIGhhcyB0aGUgc2FtZSBjb2xvciBhcyB0aGUgc291cmNlIHRleHR1cmUKLSAg
ICAgICAgdmVyaWZ5UmVzdWx0c0V4dGVybmFsKHRhcmdldCwgJmRhdGFbZmFjZUlkeCAqIDRdKTsK
LQotICAgICAgICAvLyBDbGVhbiB1cAotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZzb3Vy
Y2UpOwotICAgICAgICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGlt
YWdlKTsKLSAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZ0YXJnZXQpOwotICAgIH0K
LX0KLQotLy8gVGVzdCBjdWJlbWFwIC0+IGV4dGVybmFsIHRleHR1cmUgRUdMIGltYWdlcyB1c2lu
ZyBFU1NMMyBzaGFkZXJzLgotVEVTVF9QKEltYWdlVGVzdEVTMywgU291cmNlQ3ViZVRhcmdldEV4
dGVybmFsRVNTTDMpCi17Ci0gICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsK
LSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fCAhZXh0ZW5zaW9u
RW5hYmxlZCgiT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMyIpIHx8Ci0gICAgICAgICFlZ2xE
aXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1h
Z2VfYmFzZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ct
PmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV9jdWJlbWFwX2ltYWdlIikpCi0gICAg
ewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9FU19FR0xfaW1h
Z2UsIE9FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMsICIKLSAgICAgICAgICAgICAgICAgICAg
ICJFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgotICAgICAgICAgICAgICAgICAgICAgIkVHTF9LSFJf
Z2xfdGV4dHVyZV9jdWJlbWFwX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAg
ICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0x1Ynl0
ZSBkYXRhWzI0XSA9IHsKLSAgICAgICAgMjU1LCAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwg
MjU1LCAyNTUsIDAsIDAsIDI1NSwKLSAgICAgICAgMCwgICAwLCAyNTUsIDI1NSwgMCwgICAyNTUs
IDAsICAgMjU1LCAwLCAgIDAsIDAsIDI1NSwKLSAgICB9OwotCi0gICAgZm9yIChFR0xlbnVtIGZh
Y2VJZHggPSAwOyBmYWNlSWR4IDwgNjsgZmFjZUlkeCsrKQotICAgIHsKLSAgICAgICAgLy8gQ3Jl
YXRlIHRoZSBJbWFnZQotICAgICAgICBHTHVpbnQgc291cmNlOwotICAgICAgICBFR0xJbWFnZUtI
UiBpbWFnZTsKLSAgICAgICAgY3JlYXRlRUdMSW1hZ2VDdWJlbWFwVGV4dHVyZVNvdXJjZSgKLSAg
ICAgICAgICAgIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCAqPihkYXRhKSwgc2l6ZW9mKEdMdWJ5dGUpICogNCwKLSAgICAgICAgICAgIEVH
TF9HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hfS0hSICsgZmFjZUlkeCwgJnNvdXJjZSwg
JmltYWdlKTsKLQotICAgICAgICAvLyBDcmVhdGUgdGhlIHRhcmdldAotICAgICAgICBHTHVpbnQg
dGFyZ2V0OwotICAgICAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFRleHR1cmVFeHRlcm5hbChpbWFn
ZSwgJnRhcmdldCk7Ci0KLSAgICAgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCB0ZXh0dXJl
IGhhcyB0aGUgc2FtZSBjb2xvciBhcyB0aGUgc291cmNlIHRleHR1cmUKLSAgICAgICAgdmVyaWZ5
UmVzdWx0c0V4dGVybmFsRVNTTDModGFyZ2V0LCAmZGF0YVtmYWNlSWR4ICogNF0pOwotCi0gICAg
ICAgIC8vIENsZWFuIHVwCi0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7Ci0g
ICAgICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1hZ2UpOwot
ICAgICAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnRhcmdldCk7Ci0gICAgfQotfQotCi1U
RVNUX1AoSW1hZ2VUZXN0LCBTb3VyY2UzRFRhcmdldFRleHR1cmUpCi17Ci0gICAgRUdMV2luZG93
ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9F
U19FR0xfaW1hZ2UiKSB8fAotICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2lu
ZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAotICAgICAgICAhZWds
RGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ds
X3RleHR1cmVfM0RfaW1hZ2UiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBz
a2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwgRUdMX0tIUl9pbWFnZV9iYXNlIG9yICIKLSAg
ICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3RleHR1cmVfM0RfaW1hZ2UgaXMgbm90IGF2
YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRl
bnNpb25FbmFibGVkKCJHTF9PRVNfdGV4dHVyZV8zRCIpKQotICAgIHsKLSAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSAzRCB0ZXh0dXJlcyBhcmUgbm90IGF2YWlsYWJs
ZS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0IHNp
emVfdCBkZXB0aCAgICAgID0gMjsKLSAgICBHTHVieXRlIGRhdGFbNCAqIGRlcHRoXSA9IHsKLSAg
ICAgICAgMjU1LCAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAsIDI1NSwKLSAgICB9OwotCi0gICAg
Zm9yIChzaXplX3QgbGF5ZXIgPSAwOyBsYXllciA8IGRlcHRoOyBsYXllcisrKQotICAgIHsKLSAg
ICAgICAgLy8gQ3JlYXRlIHRoZSBJbWFnZQotICAgICAgICBHTHVpbnQgc291cmNlOwotICAgICAg
ICBFR0xJbWFnZUtIUiBpbWFnZTsKLSAgICAgICAgY3JlYXRlRUdMSW1hZ2UzRFRleHR1cmVTb3Vy
Y2UoMSwgMSwgZGVwdGgsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGRhdGEsIGxheWVyLCAm
c291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW1hZ2UpOwot
Ci0gICAgICAgIC8vIENyZWF0ZSB0aGUgdGFyZ2V0Ci0gICAgICAgIEdMdWludCB0YXJnZXQ7Ci0g
ICAgICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZTJEKGltYWdlLCAmdGFyZ2V0KTsKLQot
ICAgICAgICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFyZ2V0IHJlbmRlcmJ1ZmZlciBoYXMgdGhlIHNh
bWUgY29sb3IgYXMgdGhlIHNvdXJjZSB0ZXh0dXJlCi0gICAgICAgIHZlcmlmeVJlc3VsdHMyRCh0
YXJnZXQsICZkYXRhW2xheWVyICogNF0pOwotCi0gICAgICAgIC8vIENsZWFuIHVwCi0gICAgICAg
IGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7Ci0gICAgICAgIGVnbERlc3Ryb3lJbWFnZUtI
Uih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1hZ2UpOwotICAgICAgICBnbERlbGV0ZVRleHR1cmVz
KDEsICZ0YXJnZXQpOwotICAgIH0KLX0KLQotVEVTVF9QKEltYWdlVGVzdCwgU291cmNlM0RUYXJn
ZXRSZW5kZXJidWZmZXIpCi17Ci0gICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3co
KTsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fAotICAgICAg
ICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xf
S0hSX2ltYWdlX2Jhc2UiKSB8fAotICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQo
d2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfM0RfaW1hZ2UiKSkKLSAg
ICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9p
bWFnZSwgRUdMX0tIUl9pbWFnZV9iYXNlIG9yICIKLSAgICAgICAgICAgICAgICAgICAgICJFR0xf
S0hSX2dsX3RleHR1cmVfM0RfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAg
ICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZ2V0
Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfdGV4
dHVyZV8zRCIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVj
YXVzZSAzRCB0ZXh0dXJlcyBhcmUgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0IHNpemVfdCBkZXB0aCAgICAgID0gMjsKLSAg
ICBHTHVieXRlIGRhdGFbNCAqIGRlcHRoXSA9IHsKLSAgICAgICAgMjU1LCAwLCAyNTUsIDI1NSwg
MjU1LCAyNTUsIDAsIDI1NSwKLSAgICB9OwotCi0gICAgZm9yIChzaXplX3QgbGF5ZXIgPSAwOyBs
YXllciA8IGRlcHRoOyBsYXllcisrKQotICAgIHsKLSAgICAgICAgLy8gQ3JlYXRlIHRoZSBJbWFn
ZQotICAgICAgICBHTHVpbnQgc291cmNlOwotICAgICAgICBFR0xJbWFnZUtIUiBpbWFnZTsKLSAg
ICAgICAgY3JlYXRlRUdMSW1hZ2UzRFRleHR1cmVTb3VyY2UoMSwgMSwgZGVwdGgsIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsIGRhdGEsIGxheWVyLCAmc291cmNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmaW1hZ2UpOwotCi0gICAgICAgIC8vIENyZWF0ZSB0aGUg
dGFyZ2V0Ci0gICAgICAgIEdMdWludCB0YXJnZXQ7Ci0gICAgICAgIGNyZWF0ZUVHTEltYWdlVGFy
Z2V0UmVuZGVyYnVmZmVyKGltYWdlLCAmdGFyZ2V0KTsKLQotICAgICAgICAvLyBFeHBlY3QgdGhh
dCB0aGUgdGFyZ2V0IHJlbmRlcmJ1ZmZlciBoYXMgdGhlIHNhbWUgY29sb3IgYXMgdGhlIHNvdXJj
ZSB0ZXh0dXJlCi0gICAgICAgIHZlcmlmeVJlc3VsdHNSZW5kZXJidWZmZXIodGFyZ2V0LCAmZGF0
YVtsYXllciAqIDRdKTsKLQotICAgICAgICAvLyBDbGVhbiB1cAotICAgICAgICBnbERlbGV0ZVRl
eHR1cmVzKDEsICZzb3VyY2UpOwotICAgICAgICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5n
ZXREaXNwbGF5KCksIGltYWdlKTsKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGFyZ2V0
KTsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgM0QgLT4gZXh0ZXJuYWwgdGV4dHVyZSBFR0wgaW1hZ2Vz
LgotVEVTVF9QKEltYWdlVGVzdCwgU291cmNlM0RUYXJnZXRFeHRlcm5hbCkKLXsKLSAgICBFR0xX
aW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxl
ZCgiT0VTX0VHTF9pbWFnZSIpIHx8ICFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlX2V4
dGVybmFsIikgfHwKLSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+
Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwKLSAgICAgICAgIWVnbERpc3Bs
YXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0
dXJlXzNEX2ltYWdlIikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQKLSAgICAgICAgICAgIDw8
ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBPRVNfRUdMX2ltYWdlX2V4dGVy
bmFsLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgotICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xf
dGV4dHVyZV8zRF9pbWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAgIDw8IHN0ZDo6
ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChnZXRDbGllbnRNYWpvclZl
cnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU190ZXh0dXJlXzNEIikpCi0g
ICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIDNEIHRleHR1
cmVzIGFyZSBub3QgYXZhaWxhYmxlLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgY29uc3Qgc2l6ZV90IGRlcHRoICAgICAgPSAyOwotICAgIEdMdWJ5dGUgZGF0
YVs0ICogZGVwdGhdID0gewotICAgICAgICAyNTUsIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCwg
MjU1LAotICAgIH07Ci0KLSAgICBmb3IgKHNpemVfdCBsYXllciA9IDA7IGxheWVyIDwgZGVwdGg7
IGxheWVyKyspCi0gICAgewotICAgICAgICAvLyBDcmVhdGUgdGhlIEltYWdlCi0gICAgICAgIEdM
dWludCBzb3VyY2U7Ci0gICAgICAgIEVHTEltYWdlS0hSIGltYWdlOwotICAgICAgICBjcmVhdGVF
R0xJbWFnZTNEVGV4dHVyZVNvdXJjZSgxLCAxLCBkZXB0aCwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgZGF0YSwgbGF5ZXIsICZzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZpbWFnZSk7Ci0KLSAgICAgICAgLy8gQ3JlYXRlIHRoZSB0YXJnZXQKLSAgICAg
ICAgR0x1aW50IHRhcmdldDsKLSAgICAgICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlRXh0
ZXJuYWwoaW1hZ2UsICZ0YXJnZXQpOwotCi0gICAgICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJn
ZXQgcmVuZGVyYnVmZmVyIGhhcyB0aGUgc2FtZSBjb2xvciBhcyB0aGUgc291cmNlIHRleHR1cmUK
LSAgICAgICAgdmVyaWZ5UmVzdWx0c0V4dGVybmFsKHRhcmdldCwgJmRhdGFbbGF5ZXIgKiA0XSk7
Ci0KLSAgICAgICAgLy8gQ2xlYW4gdXAKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc291
cmNlKTsKLSAgICAgICAgZWdsRGVzdHJveUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBp
bWFnZSk7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRhcmdldCk7Ci0gICAgfQotfQot
Ci0vLyBUZXN0IDNEIC0+IGV4dGVybmFsIHRleHR1cmUgRUdMIGltYWdlcyB1c2luZyBFU1NMMyBz
aGFkZXJzLgotVEVTVF9QKEltYWdlVGVzdEVTMywgU291cmNlM0RUYXJnZXRFeHRlcm5hbEVTU0wz
KQotewotICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7Ci0gICAgaWYgKCFl
eHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlIikgfHwgIWV4dGVuc2lvbkVuYWJsZWQoIk9F
U19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMiKSB8fAotICAgICAgICAhZWdsRGlzcGxheUV4dGVu
c2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8
fAotICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5
KCksICJFR0xfS0hSX2dsX3RleHR1cmVfM0RfaW1hZ2UiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwgT0VTX0VHTF9pbWFn
ZV9leHRlcm5hbF9lc3NsMywgIgotICAgICAgICAgICAgICAgICAgICAgIkVHTF9LSFJfaW1hZ2Vf
YmFzZSBvciAiCi0gICAgICAgICAgICAgICAgICAgICAiRUdMX0tIUl9nbF90ZXh0dXJlXzNEX2lt
YWdlIGlzIG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigp
IDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfM0QiKSkKLSAgICB7Ci0g
ICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgM0QgdGV4dHVyZXMgYXJl
IG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBjb25zdCBzaXplX3QgZGVwdGggICAgICA9IDI7Ci0gICAgR0x1Ynl0ZSBkYXRhWzQgKiBk
ZXB0aF0gPSB7Ci0gICAgICAgIDI1NSwgMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwLCAyNTUsCi0g
ICAgfTsKLQotICAgIGZvciAoc2l6ZV90IGxheWVyID0gMDsgbGF5ZXIgPCBkZXB0aDsgbGF5ZXIr
KykKLSAgICB7Ci0gICAgICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKLSAgICAgICAgR0x1aW50IHNv
dXJjZTsKLSAgICAgICAgRUdMSW1hZ2VLSFIgaW1hZ2U7Ci0gICAgICAgIGNyZWF0ZUVHTEltYWdl
M0RUZXh0dXJlU291cmNlKDEsIDEsIGRlcHRoLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBk
YXRhLCBsYXllciwgJnNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmltYWdlKTsKLQotICAgICAgICAvLyBDcmVhdGUgdGhlIHRhcmdldAotICAgICAgICBHTHVp
bnQgdGFyZ2V0OwotICAgICAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFRleHR1cmVFeHRlcm5hbChp
bWFnZSwgJnRhcmdldCk7Ci0KLSAgICAgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCByZW5k
ZXJidWZmZXIgaGFzIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBzb3VyY2UgdGV4dHVyZQotICAgICAg
ICB2ZXJpZnlSZXN1bHRzRXh0ZXJuYWxFU1NMMyh0YXJnZXQsICZkYXRhW2xheWVyICogNF0pOwot
Ci0gICAgICAgIC8vIENsZWFuIHVwCi0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJj
ZSk7Ci0gICAgICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1h
Z2UpOwotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0YXJnZXQpOwotICAgIH0KLX0KLQot
VEVTVF9QKEltYWdlVGVzdCwgU291cmNlUmVuZGVyYnVmZmVyVGFyZ2V0VGV4dHVyZSkKLXsKLSAg
ICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwotICAgIGlmICghZXh0ZW5zaW9u
RW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9u
RW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8Ci0g
ICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwg
IkVHTF9LSFJfZ2xfcmVuZGVyYnVmZmVyX2ltYWdlIikpCi0gICAgewotICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9FU19FR0xfaW1hZ2UsIEVHTF9LSFJfaW1hZ2Vf
YmFzZSBvciAiCi0gICAgICAgICAgICAgICAgICAgICAiRUdMX0tIUl9nbF9yZW5kZXJidWZmZXJf
aW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHVieXRlIGRhdGFbNF0gPSB7MjU1LCAw
LCAyNTUsIDI1NX07Ci0KLSAgICAvLyBDcmVhdGUgdGhlIEltYWdlCi0gICAgR0x1aW50IHNvdXJj
ZTsKLSAgICBFR0xJbWFnZUtIUiBpbWFnZTsKLSAgICBjcmVhdGVFR0xJbWFnZVJlbmRlcmJ1ZmZl
clNvdXJjZSgxLCAxLCBHTF9SR0JBOF9PRVMsIGRhdGEsICZzb3VyY2UsICZpbWFnZSk7Ci0KLSAg
ICAvLyBDcmVhdGUgdGhlIHRhcmdldAotICAgIEdMdWludCB0YXJnZXQ7Ci0gICAgY3JlYXRlRUdM
SW1hZ2VUYXJnZXRUZXh0dXJlMkQoaW1hZ2UsICZ0YXJnZXQpOwotCi0gICAgLy8gRXhwZWN0IHRo
YXQgdGhlIHRhcmdldCB0ZXh0dXJlIGhhcyB0aGUgc2FtZSBjb2xvciBhcyB0aGUgc291cmNlIHRl
eHR1cmUKLSAgICB2ZXJpZnlSZXN1bHRzMkQodGFyZ2V0LCBkYXRhKTsKLQotICAgIC8vIENsZWFu
IHVwCi0gICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZzb3VyY2UpOwotICAgIGVnbERlc3Ry
b3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1hZ2UpOwotICAgIGdsRGVsZXRlVGV4
dHVyZXMoMSwgJnRhcmdldCk7Ci19Ci0KLS8vIFRlc3QgcmVuZGVyYnVmZmVyIC0+IGV4dGVybmFs
IHRleHR1cmUgRUdMIGltYWdlcy4KLVRFU1RfUChJbWFnZVRlc3QsIFNvdXJjZVJlbmRlcmJ1ZmZl
clRhcmdldFRleHR1cmVFeHRlcm5hbCkKLXsKLSAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVH
TFdpbmRvdygpOwotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8
ICFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlX2V4dGVybmFsIikgfHwKLSAgICAgICAg
IWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tI
Ul9pbWFnZV9iYXNlIikgfHwKLSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdp
bmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF9yZW5kZXJidWZmZXJfaW1hZ2UiKSkKLSAg
ICB7Ci0gICAgICAgIHN0ZDo6Y291dAotICAgICAgICAgICAgPDwgIlRlc3Qgc2tpcHBlZCBiZWNh
dXNlIE9FU19FR0xfaW1hZ2UsIE9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwsIEVHTF9LSFJfaW1hZ2Vf
YmFzZSBvciAiCi0gICAgICAgICAgICAgICAiRUdMX0tIUl9nbF9yZW5kZXJidWZmZXJfaW1hZ2Ug
aXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBHTHVieXRlIGRhdGFbNF0gPSB7MjU1LCAwLCAyNTUsIDI1NX07
Ci0KLSAgICAvLyBDcmVhdGUgdGhlIEltYWdlCi0gICAgR0x1aW50IHNvdXJjZTsKLSAgICBFR0xJ
bWFnZUtIUiBpbWFnZTsKLSAgICBjcmVhdGVFR0xJbWFnZVJlbmRlcmJ1ZmZlclNvdXJjZSgxLCAx
LCBHTF9SR0JBOF9PRVMsIGRhdGEsICZzb3VyY2UsICZpbWFnZSk7Ci0KLSAgICAvLyBDcmVhdGUg
dGhlIHRhcmdldAotICAgIEdMdWludCB0YXJnZXQ7Ci0gICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRU
ZXh0dXJlRXh0ZXJuYWwoaW1hZ2UsICZ0YXJnZXQpOwotCi0gICAgLy8gRXhwZWN0IHRoYXQgdGhl
IHRhcmdldCB0ZXh0dXJlIGhhcyB0aGUgc2FtZSBjb2xvciBhcyB0aGUgc291cmNlIHRleHR1cmUK
LSAgICB2ZXJpZnlSZXN1bHRzRXh0ZXJuYWwodGFyZ2V0LCBkYXRhKTsKLQotICAgIC8vIENsZWFu
IHVwCi0gICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZzb3VyY2UpOwotICAgIGVnbERlc3Ry
b3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1hZ2UpOwotICAgIGdsRGVsZXRlVGV4
dHVyZXMoMSwgJnRhcmdldCk7Ci19Ci0KLS8vIFRlc3QgcmVuZGVyYnVmZmVyIC0+IGV4dGVybmFs
IHRleHR1cmUgRUdMIGltYWdlcyB1c2luZyBFU1NMMyBzaGFkZXJzLgotVEVTVF9QKEltYWdlVGVz
dEVTMywgU291cmNlUmVuZGVyYnVmZmVyVGFyZ2V0VGV4dHVyZUV4dGVybmFsRVNTTDMpCi17Ci0g
ICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLSAgICBpZiAoIWV4dGVuc2lv
bkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fCAhZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9p
bWFnZV9leHRlcm5hbF9lc3NsMyIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5h
YmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8Ci0gICAg
ICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVH
TF9LSFJfZ2xfcmVuZGVyYnVmZmVyX2ltYWdlIikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQK
LSAgICAgICAgICAgIDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBPRVNf
RUdMX2ltYWdlX2V4dGVybmFsLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgotICAgICAgICAgICAg
ICAgIkVHTF9LSFJfZ2xfcmVuZGVyYnVmZmVyX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUuIgotICAg
ICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0x1
Ynl0ZSBkYXRhWzRdID0gezI1NSwgMCwgMjU1LCAyNTV9OwotCi0gICAgLy8gQ3JlYXRlIHRoZSBJ
bWFnZQotICAgIEdMdWludCBzb3VyY2U7Ci0gICAgRUdMSW1hZ2VLSFIgaW1hZ2U7Ci0gICAgY3Jl
YXRlRUdMSW1hZ2VSZW5kZXJidWZmZXJTb3VyY2UoMSwgMSwgR0xfUkdCQThfT0VTLCBkYXRhLCAm
c291cmNlLCAmaW1hZ2UpOwotCi0gICAgLy8gQ3JlYXRlIHRoZSB0YXJnZXQKLSAgICBHTHVpbnQg
dGFyZ2V0OwotICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZUV4dGVybmFsKGltYWdlLCAm
dGFyZ2V0KTsKLQotICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQgdGV4dHVyZSBoYXMgdGhl
IHNhbWUgY29sb3IgYXMgdGhlIHNvdXJjZSB0ZXh0dXJlCi0gICAgdmVyaWZ5UmVzdWx0c0V4dGVy
bmFsRVNTTDModGFyZ2V0LCBkYXRhKTsKLQotICAgIC8vIENsZWFuIHVwCi0gICAgZ2xEZWxldGVS
ZW5kZXJidWZmZXJzKDEsICZzb3VyY2UpOwotICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ct
PmdldERpc3BsYXkoKSwgaW1hZ2UpOwotICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRhcmdldCk7
Ci19Ci0KLVRFU1RfUChJbWFnZVRlc3QsIFNvdXJjZVJlbmRlcmJ1ZmZlclRhcmdldFJlbmRlcmJ1
ZmZlcikKLXsKLSAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwotICAgIGlm
ICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNw
bGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2Vf
YmFzZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdl
dERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfcmVuZGVyYnVmZmVyX2ltYWdlIikpCi0gICAgewotICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9FU19FR0xfaW1hZ2UsIEVH
TF9LSFJfaW1hZ2VfYmFzZSBvciAiCi0gICAgICAgICAgICAgICAgICAgICAiRUdMX0tIUl9nbF9y
ZW5kZXJidWZmZXJfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgICA8
PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHVieXRlIGRhdGFb
NF0gPSB7MjU1LCAwLCAyNTUsIDI1NX07Ci0KLSAgICAvLyBDcmVhdGUgdGhlIEltYWdlCi0gICAg
R0x1aW50IHNvdXJjZTsKLSAgICBFR0xJbWFnZUtIUiBpbWFnZTsKLSAgICBjcmVhdGVFR0xJbWFn
ZVJlbmRlcmJ1ZmZlclNvdXJjZSgxLCAxLCBHTF9SR0JBOF9PRVMsIGRhdGEsICZzb3VyY2UsICZp
bWFnZSk7Ci0KLSAgICAvLyBDcmVhdGUgdGhlIHRhcmdldAotICAgIEdMdWludCB0YXJnZXQ7Ci0g
ICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXIoaW1hZ2UsICZ0YXJnZXQpOwotCi0g
ICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCByZW5kZXJidWZmZXIgaGFzIHRoZSBzYW1lIGNv
bG9yIGFzIHRoZSBzb3VyY2UgdGV4dHVyZQotICAgIHZlcmlmeVJlc3VsdHNSZW5kZXJidWZmZXIo
dGFyZ2V0LCBkYXRhKTsKLQotICAgIC8vIENsZWFuIHVwCi0gICAgZ2xEZWxldGVSZW5kZXJidWZm
ZXJzKDEsICZzb3VyY2UpOwotICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3Bs
YXkoKSwgaW1hZ2UpOwotICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmdGFyZ2V0KTsKLX0K
LQotLy8gRGVsZXRlIHRoZSBzb3VyY2UgdGV4dHVyZSBhbmQgRUdMIGltYWdlLiAgVGhlIGltYWdl
IHRhcmdldHMgc2hvdWxkIHN0aWxsIGhhdmUgdGhlIHNhbWUgZGF0YQotLy8gYmVjYXVzZQotLy8g
dGhleSBob2xkIHJlZnMgdG8gdGhlIGltYWdlLgotVEVTVF9QKEltYWdlVGVzdCwgRGVsZXRpb24p
Ci17Ci0gICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLSAgICBpZiAoIWV4
dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fAotICAgICAgICAhZWdsRGlzcGxheUV4
dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdlX2Jhc2Ui
KSB8fAotICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNw
bGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UiKSkKLSAgICB7Ci0gICAgICAgIHN0
ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwgRUdMX0tIUl9p
bWFnZV9iYXNlIG9yICIKLSAgICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3RleHR1cmVf
MkRfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVu
ZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHVieXRlIG9yaWdpbmFsRGF0YVs0
XSA9IHsyNTUsIDAsIDI1NSwgMjU1fTsKLSAgICBHTHVieXRlIHVwZGF0ZURhdGFbNF0gICA9IHsw
LCAyNTUsIDAsIDI1NX07Ci0KLSAgICAvLyBDcmVhdGUgdGhlIEltYWdlCi0gICAgR0x1aW50IHNv
dXJjZTsKLSAgICBFR0xJbWFnZUtIUiBpbWFnZTsKLSAgICBjcmVhdGVFR0xJbWFnZTJEVGV4dHVy
ZVNvdXJjZSgxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBvcmlnaW5hbERhdGEsICZz
b3VyY2UsICZpbWFnZSk7Ci0KLSAgICAvLyBDcmVhdGUgbXVsdGlwbGUgdGFyZ2V0cwotICAgIEdM
dWludCB0YXJnZXRUZXh0dXJlOwotICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZTJEKGlt
YWdlLCAmdGFyZ2V0VGV4dHVyZSk7Ci0KLSAgICBHTHVpbnQgdGFyZ2V0UmVuZGVyYnVmZmVyOwot
ICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyKGltYWdlLCAmdGFyZ2V0UmVuZGVy
YnVmZmVyKTsKLQotICAgIC8vIERlbGV0ZSB0aGUgc291cmNlIHRleHR1cmUKLSAgICBnbERlbGV0
ZVRleHR1cmVzKDEsICZzb3VyY2UpOwotICAgIHNvdXJjZSA9IDA7Ci0KLSAgICAvLyBFeHBlY3Qg
dGhhdCBib3RoIHRoZSB0YXJnZXRzIGhhdmUgdGhlIG9yaWdpbmFsIGRhdGEKLSAgICB2ZXJpZnlS
ZXN1bHRzMkQodGFyZ2V0VGV4dHVyZSwgb3JpZ2luYWxEYXRhKTsKLSAgICB2ZXJpZnlSZXN1bHRz
UmVuZGVyYnVmZmVyKHRhcmdldFJlbmRlcmJ1ZmZlciwgb3JpZ2luYWxEYXRhKTsKLQotICAgIC8v
IFVwZGF0ZSB0aGUgZGF0YSBvZiB0aGUgdGFyZ2V0Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCB0YXJnZXRUZXh0dXJlKTsKLSAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwgMCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgdXBkYXRlRGF0YSk7
Ci0KLSAgICAvLyBFeHBlY3QgdGhhdCBib3RoIHRhcmdldHMgaGF2ZSB0aGUgdXBkYXRlZCBkYXRh
Ci0gICAgdmVyaWZ5UmVzdWx0czJEKHRhcmdldFRleHR1cmUsIHVwZGF0ZURhdGEpOwotICAgIHZl
cmlmeVJlc3VsdHNSZW5kZXJidWZmZXIodGFyZ2V0UmVuZGVyYnVmZmVyLCB1cGRhdGVEYXRhKTsK
LQotICAgIC8vIERlbGV0ZSB0aGUgRUdMIGltYWdlCi0gICAgZWdsRGVzdHJveUltYWdlS0hSKHdp
bmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7Ci0gICAgaW1hZ2UgPSBFR0xfTk9fSU1BR0VfS0hS
OwotCi0gICAgLy8gVXBkYXRlIHRoZSBkYXRhIG9mIHRoZSB0YXJnZXQgYmFjayB0byB0aGUgb3Jp
Z2luYWwgZGF0YQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGFyZ2V0VGV4dHVy
ZSk7Ci0gICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG9yaWdpbmFsRGF0YSk7Ci0KLSAgICAvLyBFeHBlY3Qg
dGhhdCBib3RoIHRhcmdldHMgaGF2ZSB0aGUgb3JpZ2luYWwgZGF0YSBhZ2FpbgotICAgIHZlcmlm
eVJlc3VsdHMyRCh0YXJnZXRUZXh0dXJlLCBvcmlnaW5hbERhdGEpOwotICAgIHZlcmlmeVJlc3Vs
dHNSZW5kZXJidWZmZXIodGFyZ2V0UmVuZGVyYnVmZmVyLCBvcmlnaW5hbERhdGEpOwotCi0gICAg
Ly8gQ2xlYW4gdXAKLSAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0YXJnZXRUZXh0dXJlKTsKLSAg
ICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnRhcmdldFJlbmRlcmJ1ZmZlcik7Ci19Ci0KLVRF
U1RfUChJbWFnZVRlc3QsIE1pcExldmVscykKLXsKLSAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdl
dEVHTFdpbmRvdygpOwotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIp
IHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3Bs
YXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5z
aW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9p
bWFnZSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVz
ZSBPRVNfRUdMX2ltYWdlLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgotICAgICAgICAgICAgICAg
ICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKLSAg
ICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGNvbnN0IHNpemVfdCBtaXBMZXZlbHMgICA9IDM7Ci0gICAgY29uc3Qgc2l6ZV90IHRleHR1
cmVTaXplID0gNDsKLSAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1pcDBEYXRhKHRleHR1cmVTaXpl
ICogdGV4dHVyZVNpemUsIDB4RkZGRjAwMDApOwotICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbWlw
MURhdGEobWlwMERhdGEuc2l6ZSgpIDw8IDEsIDB4RkYwMEZGMDApOwotICAgIHN0ZDo6dmVjdG9y
PEdMdWludD4gbWlwMkRhdGEobWlwMERhdGEuc2l6ZSgpIDw8IDIsIDB4RkYwMDAwRkYpOwotICAg
IEdMdWJ5dGUgKmRhdGFbbWlwTGV2ZWxzXSA9IHsKLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxH
THVieXRlICo+KCZtaXAwRGF0YVswXSksIHJlaW50ZXJwcmV0X2Nhc3Q8R0x1Ynl0ZSAqPigmbWlw
MURhdGFbMF0pLAotICAgICAgICByZWludGVycHJldF9jYXN0PEdMdWJ5dGUgKj4oJm1pcDJEYXRh
WzBdKSwKLSAgICB9OwotCi0gICAgR0x1aW50IHNvdXJjZTsKLSAgICBnbEdlblRleHR1cmVzKDEs
ICZzb3VyY2UpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgc291cmNlKTsKLQot
ICAgIGZvciAoc2l6ZV90IGxldmVsID0gMDsgbGV2ZWwgPCBtaXBMZXZlbHM7IGxldmVsKyspCi0g
ICAgewotICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgc3RhdGljX2Nhc3Q8R0xp
bnQ+KGxldmVsKSwgR0xfUkdCQSwgdGV4dHVyZVNpemUgPj4gbGV2ZWwsCi0gICAgICAgICAgICAg
ICAgICAgICB0ZXh0dXJlU2l6ZSA+PiBsZXZlbCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwgZGF0YVtsZXZlbF0pOwotICAgIH0KLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0g
ICAgZm9yIChzaXplX3QgbGV2ZWwgPSAwOyBsZXZlbCA8IG1pcExldmVsczsgbGV2ZWwrKykKLSAg
ICB7Ci0gICAgICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKLSAgICAgICAgRUdMaW50IGF0dHJpYnNb
XSA9IHsKLSAgICAgICAgICAgIEVHTF9HTF9URVhUVVJFX0xFVkVMX0tIUiwgc3RhdGljX2Nhc3Q8
RUdMaW50PihsZXZlbCksIEVHTF9OT05FLAotICAgICAgICB9OwotICAgICAgICBFR0xJbWFnZUtI
UiBpbWFnZSA9Ci0gICAgICAgICAgICBlZ2xDcmVhdGVJbWFnZUtIUih3aW5kb3ctPmdldERpc3Bs
YXkoKSwgd2luZG93LT5nZXRDb250ZXh0KCksIEVHTF9HTF9URVhUVVJFXzJEX0tIUiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0SGVscGVyPEVHTENsaWVudEJ1ZmZl
cj4oc291cmNlKSwgYXR0cmlicyk7Ci0gICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0g
ICAgICAgIC8vIENyZWF0ZSBhIHRleHR1cmUgYW5kIHJlbmRlcmJ1ZmZlciB0YXJnZXQKLSAgICAg
ICAgR0x1aW50IHRleHR1cmVUYXJnZXQ7Ci0gICAgICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4
dHVyZTJEKGltYWdlLCAmdGV4dHVyZVRhcmdldCk7Ci0KLSAgICAgICAgLy8gRGlzYWJsZSBtaXBt
YXBwaW5nCi0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZVRhcmdl
dCk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01J
Tl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLQotICAgICAgICBHTHVp
bnQgcmVuZGVyYnVmZmVyVGFyZ2V0OwotICAgICAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFJlbmRl
cmJ1ZmZlcihpbWFnZSwgJnJlbmRlcmJ1ZmZlclRhcmdldCk7Ci0KLSAgICAgICAgLy8gRXhwZWN0
IHRoYXQgdGhlIHRhcmdldHMgaGF2ZSB0aGUgc2FtZSBjb2xvciBhcyB0aGUgc291cmNlIHRleHR1
cmUKLSAgICAgICAgdmVyaWZ5UmVzdWx0czJEKHRleHR1cmVUYXJnZXQsIGRhdGFbbGV2ZWxdKTsK
LSAgICAgICAgdmVyaWZ5UmVzdWx0c1JlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXJUYXJnZXQsIGRh
dGFbbGV2ZWxdKTsKLQotICAgICAgICAvLyBDbGVhbiB1cAotICAgICAgICBlZ2xEZXN0cm95SW1h
Z2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGltYWdlKTsKLSAgICAgICAgZ2xEZWxldGVUZXh0
dXJlcygxLCAmdGV4dHVyZVRhcmdldCk7Ci0gICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygx
LCAmcmVuZGVyYnVmZmVyVGFyZ2V0KTsKLSAgICB9Ci0KLSAgICAvLyBDbGVhbiB1cAotICAgIGds
RGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7Ci19Ci0KLS8vIFJlc3BlY2lmeSB0aGUgc291cmNl
IHRleHR1cmUsIG9ycGhhbmluZyBpdC4gIFRoZSB0YXJnZXQgdGV4dHVyZSBzaG91bGQgbm90IGhh
dmUgdXBkYXRlZCBkYXRhLgotVEVTVF9QKEltYWdlVGVzdCwgUmVzcGVjaWZpY2F0aW9uKQotewot
ICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7Ci0gICAgaWYgKCFleHRlbnNp
b25FbmFibGVkKCJPRVNfRUdMX2ltYWdlIikgfHwKLSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNp
b25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwK
LSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgp
LCAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIikpCi0gICAgewotICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9FU19FR0xfaW1hZ2UsIEVHTF9LSFJfaW1hZ2Vf
YmFzZSBvciAiCi0gICAgICAgICAgICAgICAgICAgICAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2lt
YWdlIGlzIG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0x1Ynl0ZSBvcmlnaW5hbERhdGFbNF0gPSB7
MjU1LCAwLCAyNTUsIDI1NX07Ci0gICAgR0x1Ynl0ZSB1cGRhdGVEYXRhWzRdICAgPSB7MCwgMjU1
LCAwLCAyNTV9OwotCi0gICAgLy8gQ3JlYXRlIHRoZSBJbWFnZQotICAgIEdMdWludCBzb3VyY2U7
Ci0gICAgRUdMSW1hZ2VLSFIgaW1hZ2U7Ci0gICAgY3JlYXRlRUdMSW1hZ2UyRFRleHR1cmVTb3Vy
Y2UoMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgb3JpZ2luYWxEYXRhLCAmc291cmNl
LCAmaW1hZ2UpOwotCi0gICAgLy8gQ3JlYXRlIHRoZSB0YXJnZXQKLSAgICBHTHVpbnQgdGFyZ2V0
OwotICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZTJEKGltYWdlLCAmdGFyZ2V0KTsKLQot
ICAgIC8vIFJlc3BlY2lmeSBzb3VyY2UKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IHNvdXJjZSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDEs
IDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHVwZGF0ZURhdGEpOwotCi0gICAgLy8g
RXhwZWN0IHRoYXQgdGhlIHRhcmdldCB0ZXh0dXJlIGhhcyB0aGUgb3JpZ2luYWwgZGF0YQotICAg
IHZlcmlmeVJlc3VsdHMyRCh0YXJnZXQsIG9yaWdpbmFsRGF0YSk7Ci0KLSAgICAvLyBFeHBlY3Qg
dGhhdCB0aGUgc291cmNlIHRleHR1cmUgaGFzIHRoZSB1cGRhdGVkIGRhdGEKLSAgICB2ZXJpZnlS
ZXN1bHRzMkQoc291cmNlLCB1cGRhdGVEYXRhKTsKLQotICAgIC8vIENsZWFuIHVwCi0gICAgZ2xE
ZWxldGVUZXh0dXJlcygxLCAmc291cmNlKTsKLSAgICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93
LT5nZXREaXNwbGF5KCksIGltYWdlKTsKLSAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0YXJnZXQp
OwotfQotCi0vLyBGaXJzdCByZW5kZXIgdG8gYSB0YXJnZXQgdGV4dHVyZSwgdGhlbiByZXNwZWNp
ZnkgdGhlIHNvdXJjZSB0ZXh0dXJlLCBvcnBoYW5pbmcgaXQuCi0vLyBUaGUgdGFyZ2V0IHRleHR1
cmUncyBGQk8gc2hvdWxkIGJlIG5vdGlmaWVkIG9mIHRoZSB0YXJnZXQgdGV4dHVyZSdzIG9ycGhh
bmluZy4KLVRFU1RfUChJbWFnZVRlc3QsIFJlc3BlY2lmaWNhdGlvbldpdGhGQk8pCi17Ci0gICAg
RUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLSAgICBpZiAoIWV4dGVuc2lvbkVu
YWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fAotICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVu
YWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAotICAg
ICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJF
R0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwgRUdMX0tIUl9pbWFnZV9iYXNl
IG9yICIKLSAgICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2Ug
aXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBTaW1wbGUgc2hhZGVyCi0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnZlcnRleFNvdXJjZSA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjMiBwb3NpdGlv
bjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIg
ICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLCAxKTtcbiIKLSAgICAgICAgIn0iOwot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNvdXJjZSA9Ci0gICAgICAgICJ2b2lkIG1h
aW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
MC4wLCAwLjAsIDEuMCwgMS4wKTtcbiIKLSAgICAgICAgIn0iOwotICAgIEdMdWludCBwcm9ncmFt
ID0gQ29tcGlsZVByb2dyYW0odmVydGV4U291cmNlLCBmcmFnbWVudFNvdXJjZSk7Ci0gICAgQVNT
RVJUX05FKDB1LCBwcm9ncmFtKTsKLQotICAgIEdMdWJ5dGUgb3JpZ2luYWxEYXRhWzRdID0gezI1
NSwgMCwgMjU1LCAyNTV9OwotICAgIEdMdWJ5dGUgdXBkYXRlRGF0YVs0XSAgID0gezAsIDI1NSwg
MCwgMjU1fTsKLQotICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKLSAgICBHTHVpbnQgc291cmNlOwot
ICAgIEVHTEltYWdlS0hSIGltYWdlOwotICAgIGNyZWF0ZUVHTEltYWdlMkRUZXh0dXJlU291cmNl
KDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG9yaWdpbmFsRGF0YSwgJnNvdXJjZSwg
JmltYWdlKTsKLQotICAgIC8vIENyZWF0ZSB0aGUgdGFyZ2V0Ci0gICAgR0x1aW50IHRhcmdldDsK
LSAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFRleHR1cmUyRChpbWFnZSwgJnRhcmdldCk7Ci0KLSAg
ICAvLyBSZW5kZXIgdG8gdGhlIHRhcmdldCB0ZXh0dXJlCi0gICAgR0x1aW50IGZibzsKLSAgICBn
bEdlbkZyYW1lYnVmZmVycygxLCAmZmJvKTsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgZmJvKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGFyZ2V0LCAwKTsKLSAgICBk
cmF3UXVhZChwcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEo
MCwgMCwgMCwgMCwgMjU1LCAyNTUpOwotCi0gICAgLy8gUmVzcGVjaWZ5IHNvdXJjZSB3aXRoIHNh
bWUgcGFyYW1ldGVycy4gVGhpcyBzaG91bGQgbm90IGNoYW5nZSB0aGUgdGV4dHVyZSBzdG9yYWdl
IGluIEQzRDExLgotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgc291cmNlKTsKLSAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwgdXBkYXRlRGF0YSk7Ci0KLSAgICAvLyBFeHBlY3QgdGhhdCB0
aGUgc291cmNlIHRleHR1cmUgaGFzIHRoZSB1cGRhdGVkIGRhdGEKLSAgICB2ZXJpZnlSZXN1bHRz
MkQoc291cmNlLCB1cGRhdGVEYXRhKTsKLQotICAgIC8vIFJlbmRlciB0byB0aGUgdGFyZ2V0IHRl
eHR1cmUgYWdhaW4gYW5kIHZlcmlmeSBpdCBnZXRzIHRoZSByZW5kZXJlZCBwaXhlbHMuCi0gICAg
ZHJhd1F1YWQocHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX1BJWEVMX0VR
KDAsIDAsIDAsIDAsIDI1NSwgMjU1KTsKLQotICAgIC8vIENsZWFuIHVwCi0gICAgZ2xEZWxldGVU
ZXh0dXJlcygxLCAmc291cmNlKTsKLSAgICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXRE
aXNwbGF5KCksIGltYWdlKTsKLSAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0YXJnZXQpOwotICAg
IGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKLSAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAm
ZmJvKTsKLX0KLQotLy8gVGVzdCB0aGF0IHJlc3BlY2lmeWluZyBhIGxldmVsIG9mIHRoZSB0YXJn
ZXQgdGV4dHVyZSBvcnBoYW5zIGl0IGFuZCBrZWVwcyBhIGNvcHkgb2YgdGhlIEVHTGltYWdlCi0v
LyBkYXRhCi1URVNUX1AoSW1hZ2VUZXN0LCBSZXNwZWNpZmljYXRpb25PZk90aGVyTGV2ZWwpCi17
Ci0gICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLSAgICBpZiAoIWV4dGVu
c2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fAotICAgICAgICAhZWdsRGlzcGxheUV4dGVu
c2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8
fAotICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5
KCksICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwgRUdMX0tIUl9pbWFn
ZV9iYXNlIG9yICIKLSAgICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3RleHR1cmVfMkRf
aW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHVieXRlIG9yaWdpbmFsRGF0YVsyICog
MiAqIDRdID0gewotICAgICAgICAyNTUsIDAsIDI1NSwgMjU1LCAyNTUsIDAsIDI1NSwgMjU1LCAy
NTUsIDAsIDI1NSwgMjU1LCAyNTUsIDAsIDI1NSwgMjU1LAotICAgIH07Ci0KLSAgICBHTHVieXRl
IHVwZGF0ZURhdGFbMiAqIDIgKiA0XSA9IHsKLSAgICAgICAgMCwgMjU1LCAwLCAyNTUsIDAsIDI1
NSwgMCwgMjU1LCAwLCAyNTUsIDAsIDI1NSwgMCwgMjU1LCAwLCAyNTUsCi0gICAgfTsKLQotICAg
IC8vIENyZWF0ZSB0aGUgSW1hZ2UKLSAgICBHTHVpbnQgc291cmNlOwotICAgIEVHTEltYWdlS0hS
IGltYWdlOwotICAgIGNyZWF0ZUVHTEltYWdlMkRUZXh0dXJlU291cmNlKDIsIDIsIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsIG9yaWdpbmFsRGF0YSwgJnNvdXJjZSwgJmltYWdlKTsKLQotICAg
IC8vIENyZWF0ZSB0aGUgdGFyZ2V0Ci0gICAgR0x1aW50IHRhcmdldDsKLSAgICBjcmVhdGVFR0xJ
bWFnZVRhcmdldFRleHR1cmUyRChpbWFnZSwgJnRhcmdldCk7Ci0KLSAgICAvLyBFeHBlY3QgdGhh
dCB0aGUgdGFyZ2V0IGFuZCBzb3VyY2UgdGV4dHVyZXMgaGF2ZSB0aGUgb3JpZ2luYWwgZGF0YQot
ICAgIHZlcmlmeVJlc3VsdHMyRChzb3VyY2UsIG9yaWdpbmFsRGF0YSk7Ci0gICAgdmVyaWZ5UmVz
dWx0czJEKHRhcmdldCwgb3JpZ2luYWxEYXRhKTsKLQotICAgIC8vIEFkZCBhIG5ldyBtaXBMZXZl
bCB0byB0aGUgdGFyZ2V0LCBvcnBoYW5pbmcgaXQKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIHRhcmdldCk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JH
QkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG9yaWdpbmFsRGF0YSk7Ci0g
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFyZ2V0
IGFuZCBzb3VyY2UgdGV4dHVyZXMgc3RpbGwgaGF2ZSB0aGUgb3JpZ2luYWwgZGF0YQotICAgIHZl
cmlmeVJlc3VsdHMyRChzb3VyY2UsIG9yaWdpbmFsRGF0YSk7Ci0gICAgdmVyaWZ5UmVzdWx0czJE
KHRhcmdldCwgb3JpZ2luYWxEYXRhKTsKLQotICAgIC8vIFVwZGF0ZSB0aGUgc291cmNlJ3MgZGF0
YQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgc291cmNlKTsKLSAgICBnbFRleFN1
YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMiwgMiwgR0xfUkdCQSwgR0xfVU5TSUdO
RURfQllURSwgdXBkYXRlRGF0YSk7Ci0KLSAgICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFyZ2V0IHN0
aWxsIGhhcyB0aGUgb3JpZ2luYWwgZGF0YSBhbmQgc291cmNlIGhhcyB0aGUgdXBkYXRlZCBkYXRh
Ci0gICAgdmVyaWZ5UmVzdWx0czJEKHNvdXJjZSwgdXBkYXRlRGF0YSk7Ci0gICAgdmVyaWZ5UmVz
dWx0czJEKHRhcmdldCwgb3JpZ2luYWxEYXRhKTsKLQotICAgIC8vIENsZWFuIHVwCi0gICAgZ2xE
ZWxldGVUZXh0dXJlcygxLCAmc291cmNlKTsKLSAgICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93
LT5nZXREaXNwbGF5KCksIGltYWdlKTsKLSAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0YXJnZXQp
OwotfQotCi0vLyBVcGRhdGUgdGhlIGRhdGEgb2YgdGhlIHNvdXJjZSBhbmQgdGFyZ2V0IHRleHR1
cmVzLiAgQWxsIGltYWdlIHNpYmxpbmdzIHNob3VsZCBoYXZlIHRoZSBuZXcgZGF0YS4KLVRFU1Rf
UChJbWFnZVRlc3QsIFVwZGF0ZWREYXRhKQotewotICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0
RUdMV2luZG93KCk7Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlIikg
fHwKLSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxh
eSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwKLSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNp
b25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2lt
YWdlIikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNl
IE9FU19FR0xfaW1hZ2UsIEVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCi0gICAgICAgICAgICAgICAg
ICAgICAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUuIgotICAg
ICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgR0x1Ynl0ZSBvcmlnaW5hbERhdGFbNF0gPSB7MjU1LCAwLCAyNTUsIDI1NX07Ci0gICAgR0x1
Ynl0ZSB1cGRhdGVEYXRhWzRdICAgPSB7MCwgMjU1LCAwLCAyNTV9OwotCi0gICAgLy8gQ3JlYXRl
IHRoZSBJbWFnZQotICAgIEdMdWludCBzb3VyY2U7Ci0gICAgRUdMSW1hZ2VLSFIgaW1hZ2U7Ci0g
ICAgY3JlYXRlRUdMSW1hZ2UyRFRleHR1cmVTb3VyY2UoMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdO
RURfQllURSwgb3JpZ2luYWxEYXRhLCAmc291cmNlLCAmaW1hZ2UpOwotCi0gICAgLy8gQ3JlYXRl
IG11bHRpcGxlIHRhcmdldHMKLSAgICBHTHVpbnQgdGFyZ2V0VGV4dHVyZTsKLSAgICBjcmVhdGVF
R0xJbWFnZVRhcmdldFRleHR1cmUyRChpbWFnZSwgJnRhcmdldFRleHR1cmUpOwotCi0gICAgR0x1
aW50IHRhcmdldFJlbmRlcmJ1ZmZlcjsKLSAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFJlbmRlcmJ1
ZmZlcihpbWFnZSwgJnRhcmdldFJlbmRlcmJ1ZmZlcik7Ci0KLSAgICAvLyBFeHBlY3QgdGhhdCBi
b3RoIHRoZSBzb3VyY2UgYW5kIHRhcmdldHMgaGF2ZSB0aGUgb3JpZ2luYWwgZGF0YQotICAgIHZl
cmlmeVJlc3VsdHMyRChzb3VyY2UsIG9yaWdpbmFsRGF0YSk7Ci0gICAgdmVyaWZ5UmVzdWx0czJE
KHRhcmdldFRleHR1cmUsIG9yaWdpbmFsRGF0YSk7Ci0gICAgdmVyaWZ5UmVzdWx0c1JlbmRlcmJ1
ZmZlcih0YXJnZXRSZW5kZXJidWZmZXIsIG9yaWdpbmFsRGF0YSk7Ci0KLSAgICAvLyBVcGRhdGUg
dGhlIGRhdGEgb2YgdGhlIHNvdXJjZQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
c291cmNlKTsKLSAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMSwg
MSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgdXBkYXRlRGF0YSk7Ci0KLSAgICAvLyBFeHBl
Y3QgdGhhdCBib3RoIHRoZSBzb3VyY2UgYW5kIHRhcmdldHMgaGF2ZSB0aGUgdXBkYXRlZCBkYXRh
Ci0gICAgdmVyaWZ5UmVzdWx0czJEKHNvdXJjZSwgdXBkYXRlRGF0YSk7Ci0gICAgdmVyaWZ5UmVz
dWx0czJEKHRhcmdldFRleHR1cmUsIHVwZGF0ZURhdGEpOwotICAgIHZlcmlmeVJlc3VsdHNSZW5k
ZXJidWZmZXIodGFyZ2V0UmVuZGVyYnVmZmVyLCB1cGRhdGVEYXRhKTsKLQotICAgIC8vIFVwZGF0
ZSB0aGUgZGF0YSBvZiB0aGUgdGFyZ2V0IGJhY2sgdG8gdGhlIG9yaWdpbmFsIGRhdGEKLSAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRhcmdldFRleHR1cmUpOwotICAgIGdsVGV4U3Vi
SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCBvcmlnaW5hbERhdGEpOwotCi0gICAgLy8gRXhwZWN0IHRoYXQgYm90aCB0aGUgc291
cmNlIGFuZCB0YXJnZXRzIGhhdmUgdGhlIG9yaWdpbmFsIGRhdGEgYWdhaW4KLSAgICB2ZXJpZnlS
ZXN1bHRzMkQoc291cmNlLCBvcmlnaW5hbERhdGEpOwotICAgIHZlcmlmeVJlc3VsdHMyRCh0YXJn
ZXRUZXh0dXJlLCBvcmlnaW5hbERhdGEpOwotICAgIHZlcmlmeVJlc3VsdHNSZW5kZXJidWZmZXIo
dGFyZ2V0UmVuZGVyYnVmZmVyLCBvcmlnaW5hbERhdGEpOwotCi0gICAgLy8gQ2xlYW4gdXAKLSAg
ICBnbERlbGV0ZVRleHR1cmVzKDEsICZzb3VyY2UpOwotICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3
aW5kb3ctPmdldERpc3BsYXkoKSwgaW1hZ2UpOwotICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRh
cmdldFRleHR1cmUpOwotICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmdGFyZ2V0UmVuZGVy
YnVmZmVyKTsKLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25z
IChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlCi0v
LyB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKElt
YWdlVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0Qx
MSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTM19PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5H
TEVTKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKLUFOR0xFX0lO
U1RBTlRJQVRFX1RFU1QoSW1hZ2VUZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBF
UzNfT1BFTkdMRVMoKSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvSW5jb21wbGV0ZVRleHR1cmVUZXN0LmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbmNvbXBsZXRlVGV4dHVyZVRlc3QuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2ExMTM5MTVjNTFlZmNhZTJjYTQ3YzA4
NGI0ZmMwMTU4ODgzYTk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbmNvbXBs
ZXRlVGV4dHVyZVRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTcwICswLDAgQEAKLS8vCi0v
LyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
LS8vCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi0jaW5jbHVkZSA8dmVj
dG9yPgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLWNsYXNzIEluY29tcGxldGVUZXh0dXJl
VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIEluY29tcGxldGVU
ZXh0dXJlVGVzdCgpCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwotICAgICAg
ICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAg
ICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4
KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgIH0KLQotICAgIHZpcnR1YWwg
dm9pZCBTZXRVcCgpCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQot
ICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0gICAgICAgICAg
ICBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKLSAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhj
b29yZDsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAgICAgICAgICAgIHRleGNvb3Jk
ID0gKHBvc2l0aW9uLnh5ICogMC41KSArIDAuNTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsK
LQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURF
Ul9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0Owot
ICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4OwotICAgICAgICAgICAgdmFyeWluZyB2
ZWMyIHRleGNvb3JkOwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQ
cm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgICAg
ICBpZiAobVByb2dyYW0gPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgRkFJTCgpIDw8ICJz
aGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7Ci0gICAgICAgIH0KLQotICAgICAgICBtVGV4dHVy
ZVVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4Iik7
Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKLSAgICB7Ci0gICAgICAgIGds
RGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigp
OwotICAgIH0KLQotICAgIHZvaWQgZmlsbFRleHR1cmVEYXRhKHN0ZDo6dmVjdG9yPEdMdWJ5dGU+
ICZidWZmZXIsIEdMdWJ5dGUgciwgR0x1Ynl0ZSBnLCBHTHVieXRlIGIsIEdMdWJ5dGUgYSkKLSAg
ICB7Ci0gICAgICAgIHNpemVfdCBjb3VudCA9IGJ1ZmZlci5zaXplKCkgLyA0OwotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGJ1ZmZlcltpICogNCArIDBdID0gcjsKLSAgICAgICAgICAgIGJ1ZmZlcltpICogNCArIDFdID0g
ZzsKLSAgICAgICAgICAgIGJ1ZmZlcltpICogNCArIDJdID0gYjsKLSAgICAgICAgICAgIGJ1ZmZl
cltpICogNCArIDNdID0gYTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEdMdWludCBtUHJvZ3Jh
bTsKLSAgICBHTGludCBtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbjsKLX07Ci0KLVRFU1RfUChJbmNv
bXBsZXRlVGV4dHVyZVRlc3QsIEluY29tcGxldGVUZXh0dXJlMkQpCi17Ci0gICAgR0x1aW50IHRl
eDsKLSAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOwotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9U
RVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXgpOwotCi0gICAg
Z2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBnbFVuaWZvcm0xaShtVGV4dHVyZVVuaWZvcm1M
b2NhdGlvbiwgMCk7Ci0KLSAgICBjb25zdCBHTHNpemVpIHRleHR1cmVXaWR0aCA9IDI7Ci0gICAg
Y29uc3QgR0xzaXplaSB0ZXh0dXJlSGVpZ2h0ID0gMjsKLSAgICBzdGQ6OnZlY3RvcjxHTHVieXRl
PiB0ZXh0dXJlRGF0YSh0ZXh0dXJlV2lkdGggKiB0ZXh0dXJlSGVpZ2h0ICogNCk7Ci0gICAgZmls
bFRleHR1cmVEYXRhKHRleHR1cmVEYXRhLCAyNTUsIDAsIDAsIDI1NSk7Ci0KLSAgICBnbFRleElt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgdGV4dHVyZVdpZHRoLCB0ZXh0dXJlSGVp
Z2h0LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmdGV4dHVyZURhdGFbMF0pOwotICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdM
X05FQVJFU1QpOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwot
ICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7Ci0KLSAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJf
TUlQTUFQX0xJTkVBUik7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41
Zik7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDAsIDAsIDI1NSk7Ci0KLSAgICBnbFRl
eEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQSwgdGV4dHVyZVdpZHRoID4+IDEsIHRl
eHR1cmVIZWlnaHQgPj4gMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgJnRleHR1cmVE
YXRhWzBdKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAg
ICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1LCAwLCAwLCAyNTUpOwotCi0gICAgZ2xEZWxldGVU
ZXh0dXJlcygxLCAmdGV4KTsKLX0KLQotVEVTVF9QKEluY29tcGxldGVUZXh0dXJlVGVzdCwgVXBk
YXRlVGV4dHVyZSkKLXsKLSAgICBHTHVpbnQgdGV4OwotICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRl
eCk7Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIHRleCk7Ci0KLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAg
IGdsVW5pZm9ybTFpKG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uLCAwKTsKLQotICAgIGNvbnN0IEdM
c2l6ZWkgcmVkVGV4dHVyZVdpZHRoID0gNjQ7Ci0gICAgY29uc3QgR0xzaXplaSByZWRUZXh0dXJl
SGVpZ2h0ID0gNjQ7Ci0gICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gcmVkVGV4dHVyZURhdGEocmVk
VGV4dHVyZVdpZHRoICogcmVkVGV4dHVyZUhlaWdodCAqIDQpOwotICAgIGZpbGxUZXh0dXJlRGF0
YShyZWRUZXh0dXJlRGF0YSwgMjU1LCAwLCAwLCAyNTUpOwotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgNzsgaSsrKQotICAgIHsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IHN0YXRpY19jYXN0PEdMaW50PihpKSwgR0xfUkdCQSwgcmVkVGV4dHVyZVdpZHRoID4+IGksCi0g
ICAgICAgICAgICAgICAgICAgICByZWRUZXh0dXJlSGVpZ2h0ID4+IGksIDAsIEdMX1JHQkEsIEdM
X1VOU0lHTkVEX0JZVEUsICZyZWRUZXh0dXJlRGF0YVswXSk7Ci0gICAgfQotCi0gICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19F
REdFKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQ
X1QsIEdMX0NMQU1QX1RPX0VER0UpOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlv
biIsIDAuNWYpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7Ci0K
LSAgICBjb25zdCBHTHNpemVpIGdyZWVuVGV4dHVyZVdpZHRoID0gMzI7Ci0gICAgY29uc3QgR0xz
aXplaSBncmVlblRleHR1cmVIZWlnaHQgPSAzMjsKLSAgICBzdGQ6OnZlY3RvcjxHTHVieXRlPiBn
cmVlblRleHR1cmVEYXRhKGdyZWVuVGV4dHVyZVdpZHRoICogZ3JlZW5UZXh0dXJlSGVpZ2h0ICog
NCk7Ci0gICAgZmlsbFRleHR1cmVEYXRhKGdyZWVuVGV4dHVyZURhdGEsIDAsIDI1NSwgMCwgMjU1
KTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNjsgaSsrKQotICAgIHsKLSAgICAgICAg
Z2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIHN0YXRpY19jYXN0PEdMaW50PihpKSwgZ3Jl
ZW5UZXh0dXJlV2lkdGggPj4gaSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGdyZWVuVGV4dHVy
ZUhlaWdodCA+PiBpLCBncmVlblRleHR1cmVXaWR0aCA+PiBpLCBncmVlblRleHR1cmVIZWlnaHQg
Pj4gaSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
ICZncmVlblRleHR1cmVEYXRhWzBdKTsKLSAgICB9Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwg
InBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKGdldFdpbmRvd1dpZHRoKCkg
LSBncmVlblRleHR1cmVXaWR0aCwgZ2V0V2luZG93SGVpZ2h0KCkgLSBncmVlblRleHR1cmVXaWR0
aCwgMCwgMjU1LCAwLCAyNTUpOwotCi0gICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4KTsKLX0K
LQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNo
IHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBi
ZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoSW5jb21wbGV0ZVRleHR1cmVU
ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgp
LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW5kZXhCdWZmZXJPZmZz
ZXRUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9J
bmRleEJ1ZmZlck9mZnNldFRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
OGYwMzJlZWUwODMzMDJmNGZmODE1NzQ0OWU4YmY4YTNiZjY3NzUyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9JbmRleEJ1ZmZlck9mZnNldFRlc3QuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTU2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIEluZGV4QnVmZmVyT2Zmc2V0VGVzdC5j
cHA6IFRlc3QgZ2xEcmF3RWxlbWVudHMgd2l0aCBhbiBvZmZzZXQgYW5kIGFuIGluZGV4IGJ1ZmZl
cgotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLSNpbmNsdWRlICJzeXN0ZW1f
dXRpbHMuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1jbGFzcyBJbmRleEJ1ZmZlck9m
ZnNldFRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBJbmRleEJ1
ZmZlck9mZnNldFRlc3QoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAg
ICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7
Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJp
dHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICB9Ci0KLSAgICB2b2lk
IFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQot
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAg
ICAgU0hBREVSX1NPVVJDRShwcmVjaXNpb24gaGlnaHAgZmxvYXQ7IGF0dHJpYnV0ZSB2ZWMyIHBv
c2l0aW9uOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX1Bv
c2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICB9KTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJj
ZSA9Ci0gICAgICAgICAgICBTSEFERVJfU09VUkNFKHByZWNpc2lvbiBoaWdocCBmbG9hdDsgdW5p
Zm9ybSB2ZWM0IGNvbG9yOwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgbWFpbigp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsK
LQotICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsK
LQotICAgICAgICBtQ29sb3JVbmlmb3JtTG9jYXRpb24gICAgICA9IGdsR2V0VW5pZm9ybUxvY2F0
aW9uKG1Qcm9ncmFtLCAiY29sb3IiKTsKLSAgICAgICAgbVBvc2l0aW9uQXR0cmlidXRlTG9jYXRp
b24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAicG9zaXRpb24iKTsKLQotICAgICAg
ICBjb25zdCBHTGZsb2F0IHZlcnRpY2VzW10gPQotICAgICAgICB7Ci0gICAgICAgICAgICAtMS4w
ZiwgLTEuMGYsCi0gICAgICAgICAgICAtMS4wZiwgIDEuMGYsCi0gICAgICAgICAgICAgMS4wZiwg
LTEuMGYsCi0gICAgICAgICAgICAgMS4wZiwgIDEuMGYKLSAgICAgICAgfTsKLSAgICAgICAgZ2xH
ZW5CdWZmZXJzKDEsICZtVmVydGV4QnVmZmVyKTsKLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FS
UkFZX0JVRkZFUiwgbVZlcnRleEJ1ZmZlcik7Ci0gICAgICAgIGdsQnVmZmVyRGF0YShHTF9BUlJB
WV9CVUZGRVIsIHNpemVvZih2ZXJ0aWNlcyksICZ2ZXJ0aWNlc1swXSwgR0xfU1RBVElDX0RSQVcp
OwotCi0gICAgICAgIGdsR2VuQnVmZmVycygxLCAmbUluZGV4QnVmZmVyKTsKLSAgICAgICAgZ2xC
aW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBtSW5kZXhCdWZmZXIpOwotICAgIH0K
LQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVC
dWZmZXJzKDEsICZtVmVydGV4QnVmZmVyKTsKLSAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZt
SW5kZXhCdWZmZXIpOwotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotICAgICAg
ICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgdm9pZCBydW5UZXN0KEdMZW51
bSB0eXBlLCBpbnQgdHlwZVdpZHRoLCB2b2lkICppbmRleERhdGEpCi0gICAgewotICAgICAgICBn
bENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMS4wZik7Ci0gICAgICAgIGdsQ2xlYXIoR0xf
Q09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICAgICAgR0x1aW50IG51bGxJbmRleERhdGFbXSA9IHsw
LCAwLCAwLCAwLCAwLCAwfTsKLQotICAgICAgICBzaXplX3QgaW5kZXhEYXRhV2lkdGggPSA2ICog
dHlwZVdpZHRoOwotCi0gICAgICAgIGdsQnVmZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZF
UiwgMyAqIGluZGV4RGF0YVdpZHRoLCBudWxscHRyLCBHTF9EWU5BTUlDX0RSQVcpOwotICAgICAg
ICBnbEJ1ZmZlclN1YkRhdGEoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIDAsIGluZGV4RGF0YVdp
ZHRoLCBudWxsSW5kZXhEYXRhKTsKLSAgICAgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0VMRU1FTlRf
QVJSQVlfQlVGRkVSLCBpbmRleERhdGFXaWR0aCwgaW5kZXhEYXRhV2lkdGgsIGluZGV4RGF0YSk7
Ci0gICAgICAgIGdsQnVmZmVyU3ViRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgMiAqIGlu
ZGV4RGF0YVdpZHRoLCBpbmRleERhdGFXaWR0aCwgbnVsbEluZGV4RGF0YSk7Ci0KLSAgICAgICAg
Z2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlf
QlVGRkVSLCBtVmVydGV4QnVmZmVyKTsKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1Q
b3NpdGlvbkF0dHJpYnV0ZUxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIDApOwot
ICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1Qb3NpdGlvbkF0dHJpYnV0ZUxvY2F0
aW9uKTsKLQotICAgICAgICBnbFVuaWZvcm00ZihtQ29sb3JVbmlmb3JtTG9jYXRpb24sIDEuMGYs
IDAuMGYsIDAuMGYsIDEuMGYpOwotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTY7IGkr
KykKLSAgICAgICAgewotICAgICAgICAgICAgZ2xEcmF3RWxlbWVudHMoR0xfVFJJQU5HTEVTLCA2
LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCAqPihpbmRleERhdGFXaWR0aCkpOwotICAg
ICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDY0LCA2NCwgMjU1LCAwLCAwLCAyNTUpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBp
bmRleERhdGFXaWR0aCwgaW5kZXhEYXRhV2lkdGgsIG51bGxJbmRleERhdGEpOwotICAgICAgICBn
bEJ1ZmZlclN1YkRhdGEoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIDIgKiBpbmRleERhdGFXaWR0
aCwgaW5kZXhEYXRhV2lkdGgsIGluZGV4RGF0YSk7Ci0KLSAgICAgICAgZ2xVbmlmb3JtNGYobUNv
bG9yVW5pZm9ybUxvY2F0aW9uLCAwLjBmLCAxLjBmLCAwLjBmLCAxLjBmKTsKLSAgICAgICAgZ2xE
cmF3RWxlbWVudHMoR0xfVFJJQU5HTEVTLCA2LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9p
ZCAqPihpbmRleERhdGFXaWR0aCAqIDIpKTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDY0LCA2
NCwgMCwgMjU1LCAwLCAyNTUpOwotCi0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAg
ICAgICBzd2FwQnVmZmVycygpOwotICAgIH0KLQotICAgIEdMdWludCBtUHJvZ3JhbTsKLSAgICBH
TGludCBtQ29sb3JVbmlmb3JtTG9jYXRpb247Ci0gICAgR0xpbnQgbVBvc2l0aW9uQXR0cmlidXRl
TG9jYXRpb247Ci0gICAgR0x1aW50IG1WZXJ0ZXhCdWZmZXI7Ci0gICAgR0x1aW50IG1JbmRleEJ1
ZmZlcjsKLX07Ci0KLS8vIFRlc3QgdXNpbmcgYW4gb2Zmc2V0IGZvciBhbiBVSW50OCBpbmRleCBi
dWZmZXIKLVRFU1RfUChJbmRleEJ1ZmZlck9mZnNldFRlc3QsIFVJbnQ4SW5kZXgpCi17Ci0gICAg
R0x1Ynl0ZSBpbmRleERhdGFbXSA9IHswLCAxLCAyLCAxLCAyLCAzfTsKLSAgICBydW5UZXN0KEdM
X1VOU0lHTkVEX0JZVEUsIDEsIGluZGV4RGF0YSk7Ci19Ci0KLS8vIFRlc3QgdXNpbmcgYW4gb2Zm
c2V0IGZvciBhbiBVSW50MTYgaW5kZXggYnVmZmVyCi1URVNUX1AoSW5kZXhCdWZmZXJPZmZzZXRU
ZXN0LCBVSW50MTZJbmRleCkKLXsKLSAgICBHTHVzaG9ydCBpbmRleERhdGFbXSA9IHswLCAxLCAy
LCAxLCAyLCAzfTsKLSAgICBydW5UZXN0KEdMX1VOU0lHTkVEX1NIT1JULCAyLCBpbmRleERhdGEp
OwotfQotCi0vLyBUZXN0IHVzaW5nIGFuIG9mZnNldCBmb3IgYW4gVUludDMyIGluZGV4IGJ1ZmZl
cgotVEVTVF9QKEluZGV4QnVmZmVyT2Zmc2V0VGVzdCwgVUludDMySW5kZXgpCi17Ci0gICAgaWYg
KGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VT
X2VsZW1lbnRfaW5kZXhfdWludCIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IHNraXBwZWQgYmVjYXVzZSBFUzMgb3IgR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCBpcyBub3Qg
YXZhaWxhYmxlLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
R0x1aW50IGluZGV4RGF0YVtdID0gezAsIDEsIDIsIDEsIDIsIDN9OwotICAgIHJ1blRlc3QoR0xf
VU5TSUdORURfSU5ULCA0LCBpbmRleERhdGEpOwotfQotCi1BTkdMRV9JTlNUQU5USUFURV9URVNU
KEluZGV4QnVmZmVyT2Zmc2V0VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDko
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgIEVTM19EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX09QRU5HTEVTKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xF
UygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90
ZXN0cy9JbmRleGVkUG9pbnRzVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvSW5kZXhlZFBvaW50c1Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3M2IxNmQ4YmZhMGE1YzM4NTA2NjIxMDdjMjJkZGFlZDM0OTg3MzQyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbmRleGVkUG9pbnRzVGVzdC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw0MDMgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRp
bHMvQU5HTEVUZXN0LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lIEluZGV4VHlwZSwgR0xlbnVtIEluZGV4VHlwZU5hbWU+Ci1jbGFzcyBJbmRleGVkUG9p
bnRzVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIEluZGV4ZWRQ
b2ludHNUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7Ci0gICAgICAg
IHNldFdpbmRvd0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAg
ICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgp
OwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0RlcHRo
Qml0cygyNCk7Ci0gICAgfQotCi0gICAgZmxvYXQgZ2V0SW5kZXhQb3NpdGlvblgoc2l6ZV90IGlk
eCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAoaWR4ID09IDAgfHwgaWR4ID09IDMpID8gLTAuNWYg
OiAwLjVmOwotICAgIH0KLQotICAgIGZsb2F0IGdldEluZGV4UG9zaXRpb25ZKHNpemVfdCBpZHgp
Ci0gICAgewotICAgICAgICByZXR1cm4gKGlkeCA9PSAyIHx8IGlkeCA9PSAzKSA/IC0wLjVmIDog
MC41ZjsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQotICAgIHsKLSAgICAgICAg
QU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNo
YWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lz
aW9uIGhpZ2hwIGZsb2F0OwotICAgICAgICAgICAgYXR0cmlidXRlIHZlYzIgcG9zaXRpb247Ci0K
LSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Z2xfUG9pbnRTaXplID0gNS4wOwotICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChw
b3NpdGlvbiwgMC4wLCAxLjApOwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQot
ICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0KLSAgICAgICAg
ICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOwotICAgICAgICAgICAgfQotICAgICAgICAp
OwotCi0gICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNl
LCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0p
OwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZTIgPSBTSEFE
RVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsK
LSAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uOwotICAgICAgICAgICAgYXR0cmli
dXRlIHZlYzQgY29sb3I7Ci0gICAgICAgICAgICB2YXJ5aW5nIHZlYzQgdmNvbG9yOwotCi0gICAg
ICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX1Bv
aW50U2l6ZSA9IDUuMDsKLSAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRp
b24sIDAuMCwgMS4wKTsKLSAgICAgICAgICAgICAgICB2Y29sb3IgPSBjb2xvcjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNo
YWRlclNvdXJjZTIgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIHByZWNp
c2lvbiBoaWdocCBmbG9hdDsKLSAgICAgICAgICAgIHZhcnlpbmcgdmVjNCB2Y29sb3I7Ci0gICAg
ICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQodmNvbG9yLnh5eiwgMS4wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
KTsKLQotICAgICAgICBtVmVydGV4V2l0aENvbG9yQnVmZmVyUHJvZ3JhbSA9IENvbXBpbGVQcm9n
cmFtKHZlcnRleFNoYWRlclNvdXJjZTIsIGZyYWdtZW50U2hhZGVyU291cmNlMik7Ci0gICAgICAg
IEFTU0VSVF9ORSgwdSwgbVZlcnRleFdpdGhDb2xvckJ1ZmZlclByb2dyYW0pOwotCi0gICAgICAg
IC8vIENvbnN0cnVjdCBhIHZlcnRleCBidWZmZXIgb2YgcG9zaXRpb24gdmFsdWVzIGFuZCBjb2xv
ciB2YWx1ZXMKLSAgICAgICAgLy8gY29udGFpbmVkIGluIGEgc2luZ2xlIHN0cnVjdHVyZQotICAg
ICAgICBjb25zdCBmbG9hdCB2ZXJ0aWNlc1dpdGhDb2xvcltdID0KLSAgICAgICAgewotICAgICAg
ICAgICAgZ2V0SW5kZXhQb3NpdGlvblgoMCksIGdldEluZGV4UG9zaXRpb25ZKDApLCAwLjBmLCAx
LjBmLCAwLjBmLAotICAgICAgICAgICAgZ2V0SW5kZXhQb3NpdGlvblgoMiksIGdldEluZGV4UG9z
aXRpb25ZKDIpLCAwLjBmLCAxLjBmLCAwLjBmLAotICAgICAgICAgICAgZ2V0SW5kZXhQb3NpdGlv
blgoMSksIGdldEluZGV4UG9zaXRpb25ZKDEpLCAwLjBmLCAxLjBmLCAwLjBmLAotICAgICAgICAg
ICAgZ2V0SW5kZXhQb3NpdGlvblgoMyksIGdldEluZGV4UG9zaXRpb25ZKDMpLCAwLjBmLCAxLjBm
LCAwLjBmLAotICAgICAgICB9OwotCi0gICAgICAgIGdsR2VuQnVmZmVycygxLCAmbVZlcnRleFdp
dGhDb2xvckJ1ZmZlcik7Ci0gICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1W
ZXJ0ZXhXaXRoQ29sb3JCdWZmZXIpOwotICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVG
RkVSLCBzaXplb2YodmVydGljZXNXaXRoQ29sb3IpLCAmdmVydGljZXNXaXRoQ29sb3JbMF0sIEdM
X1NUQVRJQ19EUkFXKTsKLQotICAgICAgICAvLyBDb25zdHJ1Y3QgYSB2ZXJ0ZXggYnVmZmVyIG9m
IHBvc2l0aW9uIHZhbHVlcyBvbmx5Ci0gICAgICAgIGNvbnN0IEdMZmxvYXQgdmVydGljZXNbXSA9
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGdldEluZGV4UG9zaXRpb25YKDApLCBnZXRJbmRleFBv
c2l0aW9uWSgwKSwKLSAgICAgICAgICAgIGdldEluZGV4UG9zaXRpb25YKDIpLCBnZXRJbmRleFBv
c2l0aW9uWSgyKSwKLSAgICAgICAgICAgIGdldEluZGV4UG9zaXRpb25YKDEpLCBnZXRJbmRleFBv
c2l0aW9uWSgxKSwKLSAgICAgICAgICAgIGdldEluZGV4UG9zaXRpb25YKDMpLCBnZXRJbmRleFBv
c2l0aW9uWSgzKSwKLSAgICAgICAgfTsKLSAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtVmVydGV4
QnVmZmVyKTsKLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVZlcnRleEJ1
ZmZlcik7Ci0gICAgICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNpemVvZih2ZXJ0
aWNlcyksICZ2ZXJ0aWNlc1swXSwgR0xfU1RBVElDX0RSQVcpOwotCi0gICAgICAgIC8vIFRoZSBp
bmRpY2VzIGJ1ZmZlciBpcyBzaGFyZWQgYmV0d2VlbiBib3RoIHZhcmlhdGlvbnMgb2YgdGVzdHMK
LSAgICAgICAgY29uc3QgSW5kZXhUeXBlIGluZGljZXNbXSA9IHsgMCwgMiwgMSwgMyB9OwotICAg
ICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1JbmRleEJ1ZmZlcik7Ci0gICAgICAgIGdsQmluZEJ1ZmZl
cihHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbUluZGV4QnVmZmVyKTsKLSAgICAgICAgZ2xCdWZm
ZXJEYXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBzaXplb2YoaW5kaWNlcyksICZpbmRpY2Vz
WzBdLCBHTF9TVEFUSUNfRFJBVyk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbVZlcnRleEJ1ZmZlcik7Ci0g
ICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbUluZGV4QnVmZmVyKTsKLSAgICAgICAgZ2xEZWxl
dGVQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1WZXJ0
ZXhXaXRoQ29sb3JCdWZmZXIpOwotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVZlcnRleFdpdGhD
b2xvckJ1ZmZlclByb2dyYW0pOwotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAg
fQotCi0gICAgdm9pZCBydW5UZXN0KEdMdWludCBmaXJzdEluZGV4LCBib29sIHVzZVZlcnRleEJ1
ZmZlcldpdGhDb2xvciA9IGZhbHNlKQotICAgIHsKLSAgICAgICAgZ2xDbGVhckNvbG9yKDAuMGYs
IDAuMGYsIDAuMGYsIDEuMGYpOwotICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQp
OwotCi0gICAgICAgIEdMaW50IHZpZXdwb3J0U2l6ZVs0XTsKLSAgICAgICAgZ2xHZXRJbnRlZ2Vy
dihHTF9WSUVXUE9SVCwgdmlld3BvcnRTaXplKTsKLQotICAgICAgICAvLyBDaG9vc2UgYXBwcm9w
cmlhdGUgcHJvZ3JhbSB0byBhcHBseSBmb3IgdGhlIHRlc3QKLSAgICAgICAgR0x1aW50IHByb2dy
YW0gPSB1c2VWZXJ0ZXhCdWZmZXJXaXRoQ29sb3IgPyBtVmVydGV4V2l0aENvbG9yQnVmZmVyUHJv
Z3JhbSA6IG1Qcm9ncmFtOwotCi0gICAgICAgIGlmICh1c2VWZXJ0ZXhCdWZmZXJXaXRoQ29sb3Ip
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1W
ZXJ0ZXhXaXRoQ29sb3JCdWZmZXIpOwotICAgICAgICAgICAgR0xpbnQgdmVydGV4TG9jYXRpb24g
PSBnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJwb3NpdGlvbiIpOwotICAgICAgICAgICAg
Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHZlcnRleExvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFM
U0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3Qg
R0xzaXplaT4oVmVydGV4V2l0aENvbG9yU2l6ZSksIDApOwotICAgICAgICAgICAgZ2xFbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheSh2ZXJ0ZXhMb2NhdGlvbik7Ci0KLSAgICAgICAgICAgIEdMaW50IHZl
cnRleENvbG9yTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJjb2xvciIp
OwotICAgICAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHZlcnRleENvbG9yTG9jYXRpb24s
IDMsIEdMX0ZMT0FULCBHTF9GQUxTRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxjb25zdCBHTHNpemVpPihWZXJ0ZXhXaXRoQ29sb3JTaXplKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR0x2b2lkICopKChzaXplb2YoZmxvYXQpICog
MikpKTsKLSAgICAgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkodmVydGV4Q29sb3JM
b2NhdGlvbik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAg
ICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4QnVmZmVyKTsKLSAgICAgICAg
ICAgIEdMaW50IHZlcnRleExvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAi
cG9zaXRpb24iKTsKLSAgICAgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcih2ZXJ0ZXhMb2Nh
dGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAwKTsKLSAgICAgICAgICAgIGdsRW5hYmxl
VmVydGV4QXR0cmliQXJyYXkodmVydGV4TG9jYXRpb24pOwotICAgICAgICB9Ci0KLSAgICAgICAg
Z2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBtSW5kZXhCdWZmZXIpOwotICAg
ICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7Ci0KLSAgICAgICAgZ2xEcmF3RWxlbWVudHMoR0xf
UE9JTlRTLCBtUG9pbnRDb3VudCAtIGZpcnN0SW5kZXgsIEluZGV4VHlwZU5hbWUsIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KGZpcnN0SW5kZXggKiBzaXplb2YoSW5kZXhUeXBlKSkpOwotCi0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVBvaW50Q291bnQ7IGkrKykKLSAgICAgICAgewot
ICAgICAgICAgICAgR0x1aW50IHggPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KHZpZXdwb3J0U2l6ZVsw
XSArIChnZXRJbmRleFBvc2l0aW9uWChpKSAqIDAuNWYgKyAwLjVmKSAqICh2aWV3cG9ydFNpemVb
Ml0gLSB2aWV3cG9ydFNpemVbMF0pKTsKLSAgICAgICAgICAgIEdMdWludCB5ID0gc3RhdGljX2Nh
c3Q8R0x1aW50Pih2aWV3cG9ydFNpemVbMV0gKyAoZ2V0SW5kZXhQb3NpdGlvblkoaSkgKiAwLjVm
ICsgMC41ZikgKiAodmlld3BvcnRTaXplWzNdIC0gdmlld3BvcnRTaXplWzFdKSk7Ci0KLSAgICAg
ICAgICAgIGlmIChpIDwgZmlyc3RJbmRleCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBFWFBFQ1RfUElYRUxfRVEoeCwgeSwgMCwgMCwgMCwgMjU1KTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAodXNlVmVy
dGV4QnVmZmVyV2l0aENvbG9yKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gUGl4ZWwgZGF0YSBpcyBhc3N1bWVkIHRvIGJlIEdSRUVOCi0gICAgICAgICAgICAgICAg
ICAgIEVYUEVDVF9QSVhFTF9FUSh4LCB5LCAwLCAyNTUsIDAsIDI1NSk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIC8vIFBpeGVsIGRhdGEgaXMgYXNzdW1lZCB0byBiZSBSRUQKLSAgICAgICAgICAg
ICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKHgsIHksIDI1NSwgMCwgMCwgMjU1KTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgc3dhcEJ1ZmZlcnMo
KTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVByb2dyYW07Ci0gICAgR0x1aW50IG1WZXJ0ZXhCdWZm
ZXI7Ci0gICAgR0x1aW50IG1JbmRleEJ1ZmZlcjsKLQotICAgIEdMdWludCBtVmVydGV4V2l0aENv
bG9yQnVmZmVyUHJvZ3JhbTsKLSAgICBHTHVpbnQgbVZlcnRleFdpdGhDb2xvckJ1ZmZlcjsKLQot
ICAgIHN0YXRpYyBjb25zdCBHTHVpbnQgbVBvaW50Q291bnQgPSA0OwotCi0gIHByaXZhdGU6Ci0g
ICAgY29uc3Qgc2l6ZV90IFZlcnRleFdpdGhDb2xvclNpemUgPSBzaXplb2YoZmxvYXQpICogNTsK
LX07Ci0KLXR5cGVkZWYgSW5kZXhlZFBvaW50c1Rlc3Q8R0x1Ynl0ZSwgR0xfVU5TSUdORURfQllU
RT4gSW5kZXhlZFBvaW50c1Rlc3RVQnl0ZTsKLQotVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VUJ5
dGUsIFVuc2lnbmVkQnl0ZU9mZnNldDApCi17Ci0gICAgcnVuVGVzdCgwKTsKLX0KLQotVEVTVF9Q
KEluZGV4ZWRQb2ludHNUZXN0VUJ5dGUsIFVuc2lnbmVkQnl0ZU9mZnNldDEpCi17Ci0gICAgcnVu
VGVzdCgxKTsKLX0KLQotVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VUJ5dGUsIFVuc2lnbmVkQnl0
ZU9mZnNldDIpCi17Ci0gICAgcnVuVGVzdCgyKTsKLX0KLQotVEVTVF9QKEluZGV4ZWRQb2ludHNU
ZXN0VUJ5dGUsIFVuc2lnbmVkQnl0ZU9mZnNldDMpCi17Ci0gICAgcnVuVGVzdCgzKTsKLX0KLQot
VEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VUJ5dGUsIFZlcnRleFdpdGhDb2xvclVuc2lnbmVkQnl0
ZU9mZnNldDApCi17Ci0gICAgcnVuVGVzdCgwLCB0cnVlKTsKLX0KLQotVEVTVF9QKEluZGV4ZWRQ
b2ludHNUZXN0VUJ5dGUsIFZlcnRleFdpdGhDb2xvclVuc2lnbmVkQnl0ZU9mZnNldDEpCi17Ci0g
ICAgcnVuVGVzdCgxLCB0cnVlKTsKLX0KLQotVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VUJ5dGUs
IFZlcnRleFdpdGhDb2xvclVuc2lnbmVkQnl0ZU9mZnNldDIpCi17Ci0gICAgcnVuVGVzdCgyLCB0
cnVlKTsKLX0KLQotVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VUJ5dGUsIFZlcnRleFdpdGhDb2xv
clVuc2lnbmVkQnl0ZU9mZnNldDMpCi17Ci0gICAgcnVuVGVzdCgzLCB0cnVlKTsKLX0KLQotdHlw
ZWRlZiBJbmRleGVkUG9pbnRzVGVzdDxHTHVzaG9ydCwgR0xfVU5TSUdORURfU0hPUlQ+IEluZGV4
ZWRQb2ludHNUZXN0VVNob3J0OwotCi1URVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RVU2hvcnQsIFVu
c2lnbmVkU2hvcnRPZmZzZXQwKQotewotICAgIHJ1blRlc3QoMCk7Ci19Ci0KLVRFU1RfUChJbmRl
eGVkUG9pbnRzVGVzdFVTaG9ydCwgVW5zaWduZWRTaG9ydE9mZnNldDEpCi17Ci0gICAgcnVuVGVz
dCgxKTsKLX0KLQotVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VVNob3J0LCBVbnNpZ25lZFNob3J0
T2Zmc2V0MikKLXsKLSAgICBydW5UZXN0KDIpOwotfQotCi1URVNUX1AoSW5kZXhlZFBvaW50c1Rl
c3RVU2hvcnQsIFVuc2lnbmVkU2hvcnRPZmZzZXQzKQotewotICAgIHJ1blRlc3QoMyk7Ci19Ci0K
LVRFU1RfUChJbmRleGVkUG9pbnRzVGVzdFVTaG9ydCwgVmVydGV4V2l0aENvbG9yVW5zaWduZWRT
aG9ydE9mZnNldDApCi17Ci0gICAgcnVuVGVzdCgwLCB0cnVlKTsKLX0KLQotVEVTVF9QKEluZGV4
ZWRQb2ludHNUZXN0VVNob3J0LCBWZXJ0ZXhXaXRoQ29sb3JVbnNpZ25lZFNob3J0T2Zmc2V0MSkK
LXsKLSAgICBydW5UZXN0KDEsIHRydWUpOwotfQotCi1URVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RV
U2hvcnQsIFZlcnRleFdpdGhDb2xvclVuc2lnbmVkU2hvcnRPZmZzZXQyKQotewotICAgIHJ1blRl
c3QoMiwgdHJ1ZSk7Ci19Ci0KLVRFU1RfUChJbmRleGVkUG9pbnRzVGVzdFVTaG9ydCwgVmVydGV4
V2l0aENvbG9yVW5zaWduZWRTaG9ydE9mZnNldDMpCi17Ci0gICAgcnVuVGVzdCgzLCB0cnVlKTsK
LX0KLQotVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VVNob3J0LCBWZXJ0ZXhXaXRoQ29sb3JVbnNp
Z25lZFNob3J0T2Zmc2V0Q2hhbmdpbmdJbmRpY2VzKQotewotICAgIHJ1blRlc3QoMywgdHJ1ZSk7
Ci0gICAgcnVuVGVzdCgxLCB0cnVlKTsKLSAgICBydW5UZXN0KDAsIHRydWUpOwotICAgIHJ1blRl
c3QoMiwgdHJ1ZSk7Ci19Ci0KLXR5cGVkZWYgSW5kZXhlZFBvaW50c1Rlc3Q8R0x1aW50LCBHTF9V
TlNJR05FRF9JTlQ+IEluZGV4ZWRQb2ludHNUZXN0VUludDsKLQotVEVTVF9QKEluZGV4ZWRQb2lu
dHNUZXN0VUludCwgVW5zaWduZWRJbnRPZmZzZXQwKQotewotICAgIGlmIChnZXRDbGllbnRNYWpv
clZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19lbGVtZW50X2luZGV4
X3VpbnQiKSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBydW5UZXN0KDAp
OwotfQotCi1URVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RVSW50LCBVbnNpZ25lZEludE9mZnNldDEp
Ci17Ci0gICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5h
YmxlZCgiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKQotICAgIHsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHJ1blRlc3QoMSk7Ci19Ci0KLVRFU1RfUChJbmRleGVkUG9pbnRzVGVz
dFVJbnQsIFVuc2lnbmVkSW50T2Zmc2V0MikKLXsKLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50
IikpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcnVuVGVzdCgyKTsKLX0K
LQotVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VUludCwgVW5zaWduZWRJbnRPZmZzZXQzKQotewot
ICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQo
IkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBydW5UZXN0KDMpOwotfQotCi1URVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RVSW50
LCBWZXJ0ZXhXaXRoQ29sb3JVbnNpZ25lZEludE9mZnNldDApCi17Ci0gICAgaWYgKGdldENsaWVu
dE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2VsZW1lbnRf
aW5kZXhfdWludCIpKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJ1blRl
c3QoMCwgZmFsc2UpOwotfQotCi1URVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RVSW50LCBWZXJ0ZXhX
aXRoQ29sb3JVbnNpZ25lZEludE9mZnNldDEpCi17Ci0gICAgaWYgKGdldENsaWVudE1ham9yVmVy
c2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWlu
dCIpKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJ1blRlc3QoMSwgZmFs
c2UpOwotfQotCi1URVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RVSW50LCBWZXJ0ZXhXaXRoQ29sb3JV
bnNpZ25lZEludE9mZnNldDIpCi17Ci0gICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwg
MyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKQotICAg
IHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJ1blRlc3QoMiwgZmFsc2UpOwotfQot
Ci1URVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RVSW50LCBWZXJ0ZXhXaXRoQ29sb3JVbnNpZ25lZElu
dE9mZnNldDMpCi17Ci0gICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0
ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJ1blRlc3QoMywgZmFsc2UpOwotfQotCi0vLyBUT0RP
KGdlb2ZmbGFuZyk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgdGVzdCBmYWlscyBvbiBJbnRlbCBPcGVu
R0wKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoSW5kZXhlZFBvaW50c1Rlc3RVQnl0ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9EM0QxMV9GTDlfMygpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJQVRF
X1RFU1QoSW5kZXhlZFBvaW50c1Rlc3RVU2hvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfT1BFTkdMRVMoKSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKEluZGV4ZWRQb2ludHNU
ZXN0VUludCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAotICAgICAgICAgICAgICAgICAgICAgICBF
UzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbnN0
YW5jaW5nVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVz
dHMvSW5zdGFuY2luZ1Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzNm
OTY4OTIwMGZjMDQ0MTIxNzU2YmQ2ZGI3ZTEyZmJkZDkxOTRhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9nbF90ZXN0cy9JbnN0YW5jaW5nVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0Njgg
KzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0K
LXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotY2xhc3MgSW5zdGFuY2luZ1Rlc3QgOiBwdWJsaWMg
QU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBJbnN0YW5jaW5nVGVzdCgpIDogbVByb2dy
YW0oMCksIG1WZXJ0ZXhCdWZmZXIoMCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDI1
Nik7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgyNTYpOwotICAgICAgICBzZXRDb25maWdSZWRC
aXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZp
Z0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotCi0g
ICAgfkluc3RhbmNpbmdUZXN0KCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlQnVm
ZmVycygxLCAmbVZlcnRleEJ1ZmZlcik7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3Jh
bSk7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBB
TkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgbVZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRSA9
IE5VTEw7Ci0gICAgICAgIG1EcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSBOVUxMOwotICAgICAg
ICBtRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgPSBOVUxMOwotCi0gICAgICAgIGNoYXIgKmV4
dGVuc2lvblN0cmluZyA9IChjaGFyKilnbEdldFN0cmluZyhHTF9FWFRFTlNJT05TKTsKLSAgICAg
ICAgaWYgKHN0cnN0cihleHRlbnNpb25TdHJpbmcsICJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlz
IikpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1WZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUgPSAo
UEZOR0xWRVJURVhBVFRSSUJESVZJU09SQU5HTEVQUk9DKWVnbEdldFByb2NBZGRyZXNzKCJnbFZl
cnRleEF0dHJpYkRpdmlzb3JBTkdMRSIpOwotICAgICAgICAgICAgbURyYXdBcnJheXNJbnN0YW5j
ZWRBTkdMRSA9IChQRk5HTERSQVdBUlJBWVNJTlNUQU5DRURBTkdMRVBST0MpZWdsR2V0UHJvY0Fk
ZHJlc3MoImdsRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFIik7Ci0gICAgICAgICAgICBtRHJhd0Vs
ZW1lbnRzSW5zdGFuY2VkQU5HTEUgPSAoUEZOR0xEUkFXRUxFTUVOVFNJTlNUQU5DRURBTkdMRVBS
T0MpZWdsR2V0UHJvY0FkZHJlc3MoImdsRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUiKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIEFTU0VSVF9UUlVFKG1WZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUg
IT0gTlVMTCk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKG1EcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUg
IT0gTlVMTCk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKG1EcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdM
RSAhPSBOVUxMKTsKLQotICAgICAgICAvLyBJbml0aWFsaXplIHRoZSB2ZXJ0ZXggYW5kIGluZGV4
IHZlY3RvcnMKLSAgICAgICAgR0xmbG9hdCBxdmVydGV4MVszXSA9IHstcXVhZFJhZGl1cywgIHF1
YWRSYWRpdXMsIDAuMGZ9OwotICAgICAgICBHTGZsb2F0IHF2ZXJ0ZXgyWzNdID0gey1xdWFkUmFk
aXVzLCAtcXVhZFJhZGl1cywgMC4wZn07Ci0gICAgICAgIEdMZmxvYXQgcXZlcnRleDNbM10gPSB7
IHF1YWRSYWRpdXMsIC1xdWFkUmFkaXVzLCAwLjBmfTsKLSAgICAgICAgR0xmbG9hdCBxdmVydGV4
NFszXSA9IHsgcXVhZFJhZGl1cywgIHF1YWRSYWRpdXMsIDAuMGZ9OwotICAgICAgICBtUXVhZFZl
cnRpY2VzLmluc2VydChtUXVhZFZlcnRpY2VzLmVuZCgpLCBxdmVydGV4MSwgcXZlcnRleDEgKyAz
KTsKLSAgICAgICAgbVF1YWRWZXJ0aWNlcy5pbnNlcnQobVF1YWRWZXJ0aWNlcy5lbmQoKSwgcXZl
cnRleDIsIHF2ZXJ0ZXgyICsgMyk7Ci0gICAgICAgIG1RdWFkVmVydGljZXMuaW5zZXJ0KG1RdWFk
VmVydGljZXMuZW5kKCksIHF2ZXJ0ZXgzLCBxdmVydGV4MyArIDMpOwotICAgICAgICBtUXVhZFZl
cnRpY2VzLmluc2VydChtUXVhZFZlcnRpY2VzLmVuZCgpLCBxdmVydGV4NCwgcXZlcnRleDQgKyAz
KTsKLQotICAgICAgICBHTGZsb2F0IGNvb3JkMVsyXSA9IHswLjBmLCAwLjBmfTsKLSAgICAgICAg
R0xmbG9hdCBjb29yZDJbMl0gPSB7MC4wZiwgMS4wZn07Ci0gICAgICAgIEdMZmxvYXQgY29vcmQz
WzJdID0gezEuMGYsIDEuMGZ9OwotICAgICAgICBHTGZsb2F0IGNvb3JkNFsyXSA9IHsxLjBmLCAw
LjBmfTsKLSAgICAgICAgbVRleGNvb3Jkcy5pbnNlcnQobVRleGNvb3Jkcy5lbmQoKSwgY29vcmQx
LCBjb29yZDEgKyAyKTsKLSAgICAgICAgbVRleGNvb3Jkcy5pbnNlcnQobVRleGNvb3Jkcy5lbmQo
KSwgY29vcmQyLCBjb29yZDIgKyAyKTsKLSAgICAgICAgbVRleGNvb3Jkcy5pbnNlcnQobVRleGNv
b3Jkcy5lbmQoKSwgY29vcmQzLCBjb29yZDMgKyAyKTsKLSAgICAgICAgbVRleGNvb3Jkcy5pbnNl
cnQobVRleGNvb3Jkcy5lbmQoKSwgY29vcmQ0LCBjb29yZDQgKyAyKTsKLQotICAgICAgICBtSW5k
aWNlcy5wdXNoX2JhY2soMCk7Ci0gICAgICAgIG1JbmRpY2VzLnB1c2hfYmFjaygxKTsKLSAgICAg
ICAgbUluZGljZXMucHVzaF9iYWNrKDIpOwotICAgICAgICBtSW5kaWNlcy5wdXNoX2JhY2soMCk7
Ci0gICAgICAgIG1JbmRpY2VzLnB1c2hfYmFjaygyKTsKLSAgICAgICAgbUluZGljZXMucHVzaF9i
YWNrKDMpOwotCi0gICAgICAgIGZvciAoc2l6ZV90IHZlcnRleEluZGV4ID0gMDsgdmVydGV4SW5k
ZXggPCA2OyArK3ZlcnRleEluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICBtTm9uSW5kZXhl
ZFZlcnRpY2VzLmluc2VydChtTm9uSW5kZXhlZFZlcnRpY2VzLmVuZCgpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbVF1YWRWZXJ0aWNlcy5iZWdpbigpICsgbUluZGlj
ZXNbdmVydGV4SW5kZXhdICogMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1RdWFkVmVydGljZXMuYmVnaW4oKSArIG1JbmRpY2VzW3ZlcnRleEluZGV4XSAqIDMgKyAz
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoc2l6ZV90IHZlcnRleEluZGV4ID0gMDsgdmVy
dGV4SW5kZXggPCA2OyArK3ZlcnRleEluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICBtTm9u
SW5kZXhlZFZlcnRpY2VzLmluc2VydChtTm9uSW5kZXhlZFZlcnRpY2VzLmVuZCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVF1YWRWZXJ0aWNlcy5iZWdpbigpICsg
bUluZGljZXNbdmVydGV4SW5kZXhdICogMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1RdWFkVmVydGljZXMuYmVnaW4oKSArIG1JbmRpY2VzW3ZlcnRleEluZGV4XSAq
IDMgKyAzKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFRpbGUgYSAyeDIgZ3JpZCBvZiB0aGUg
dGlsZXMKLSAgICAgICAgZm9yIChmbG9hdCB5ID0gLTEuMGYgKyBxdWFkUmFkaXVzOyB5IDwgMS4w
ZiAtIHF1YWRSYWRpdXM7IHkgKz0gcXVhZFJhZGl1cyAqIDMpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGZvciAoZmxvYXQgeCA9IC0xLjBmICsgcXVhZFJhZGl1czsgeCA8IDEuMGYgLSBxdWFkUmFk
aXVzOyB4ICs9IHF1YWRSYWRpdXMgKiAzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IEdMZmxvYXQgaW5zdGFuY2VbM10gPSB7eCArIHF1YWRSYWRpdXMsIHkgKyBxdWFkUmFkaXVzLCAw
LjBmfTsKLSAgICAgICAgICAgICAgICBtSW5zdGFuY2VzLmluc2VydChtSW5zdGFuY2VzLmVuZCgp
LCBpbnN0YW5jZSwgaW5zdGFuY2UgKyAzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKLQotICAgICAgICBn
bEdlbkJ1ZmZlcnMoMSwgJm1WZXJ0ZXhCdWZmZXIpOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotICAgIH0KLQotICAgIHZvaWQgc2V0dXBEcmF3QXJyYXlzVGVzdChjb25zdCBzdGQ6
OnN0cmluZyAmdnMpCi0gICAgewotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcyA9IFNIQURF
Ul9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
Ci0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLCAwLCAxLjApOwotICAgICAgICAgICAgfQotICAg
ICAgICApOwotCi0gICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnMsIGZzKTsKLSAg
ICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7Ci0KLSAgICAgICAgLy8gU2V0IHRoZSB2aWV3
cG9ydAotICAgICAgICBnbFZpZXdwb3J0KDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRv
d0hlaWdodCgpKTsKLQotICAgICAgICAvLyBDbGVhciB0aGUgY29sb3IgYnVmZmVyCi0gICAgICAg
IGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICAgICAgLy8gVXNlIHRoZSBwcm9n
cmFtIG9iamVjdAotICAgICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIH0KLQotICAg
IHZvaWQgc2V0dXBJbnN0YW5jZWRQb2ludHNUZXN0KCkKLSAgICB7Ci0gICAgICAgIG1JbmRpY2Vz
LmNsZWFyKCk7Ci0gICAgICAgIG1JbmRpY2VzLnB1c2hfYmFjaygwKTsKLSAgICAgICAgbUluZGlj
ZXMucHVzaF9iYWNrKDEpOwotICAgICAgICBtSW5kaWNlcy5wdXNoX2JhY2soMik7Ci0gICAgICAg
IG1JbmRpY2VzLnB1c2hfYmFjaygzKTsKLQotICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0g
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0g
ICAgICAgICAgICBhdHRyaWJ1dGUgdmVjMyBhX3Bvc2l0aW9uOwotICAgICAgICAgICAgYXR0cmli
dXRlIHZlYzMgYV9pbnN0YW5jZVBvczsKLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gID0gdmVjNChhX3Bvc2l0aW9uLnh5
eiwgMS4wKTsKLSAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiAgPSB2ZWM0KGFfaW5zdGFuY2VQ
b3MueHl6LCAxLjApOwotICAgICAgICAgICAgICAgIGdsX1BvaW50U2l6ZSA9IDYuMDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcyA9IFNI
QURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7Ci0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLCAwLCAxLjApOwotICAgICAgICAgICAgfQot
ICAgICAgICApOwotICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KLQotICAgICAgICBtUHJvZ3Jh
bSA9IENvbXBpbGVQcm9ncmFtKHZzLCBmcyk7Ci0gICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dy
YW0pOwotCi0gICAgICAgIC8vIFNldCB0aGUgdmlld3BvcnQKLSAgICAgICAgZ2xWaWV3cG9ydCgw
LCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0KLSAgICAgICAgLy8g
Q2xlYXIgdGhlIGNvbG9yIGJ1ZmZlcgotICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9C
SVQpOwotCi0gICAgICAgIC8vIFVzZSB0aGUgcHJvZ3JhbSBvYmplY3QKLSAgICAgICAgZ2xVc2VQ
cm9ncmFtKG1Qcm9ncmFtKTsKLSAgICB9Ci0KLSAgICB2b2lkIHJ1bkRyYXdBcnJheXNUZXN0KEdM
aW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlQ291bnQsIGZsb2F0ICpv
ZmZzZXQpCi0gICAgewotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVy
dGV4QnVmZmVyKTsKLSAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgbUluc3Rh
bmNlcy5zaXplKCkgKiBzaXplb2YobUluc3RhbmNlc1swXSksICZtSW5zdGFuY2VzWzBdLCBHTF9T
VEFUSUNfRFJBVyk7Ci0gICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDApOwot
Ci0gICAgICAgIC8vIEdldCB0aGUgYXR0cmlidXRlIGxvY2F0aW9ucwotICAgICAgICBHTGludCBw
b3NpdGlvbkxvYyAgICA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJhX3Bvc2l0aW9u
Iik7Ci0gICAgICAgIEdMaW50IGluc3RhbmNlUG9zTG9jID0gZ2xHZXRBdHRyaWJMb2NhdGlvbiht
UHJvZ3JhbSwgImFfaW5zdGFuY2VQb3MiKTsKLQotICAgICAgICAvLyBMb2FkIHRoZSB2ZXJ0ZXgg
cG9zaXRpb24KLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jLCAzLCBH
TF9GTE9BVCwgR0xfRkFMU0UsIDAsIG1Ob25JbmRleGVkVmVydGljZXMuZGF0YSgpKTsKLSAgICAg
ICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvYyk7Ci0KLSAgICAgICAgLy8g
TG9hZCB0aGUgaW5zdGFuY2UgcG9zaXRpb24KLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZ
X0JVRkZFUiwgbVZlcnRleEJ1ZmZlcik7Ci0gICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihp
bnN0YW5jZVBvc0xvYywgMywgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAwKTsKLSAgICAgICAgZ2xC
aW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7Ci0gICAgICAgIGdsRW5hYmxlVmVydGV4QXR0
cmliQXJyYXkoaW5zdGFuY2VQb3NMb2MpOwotCi0gICAgICAgIC8vIEVuYWJsZSBpbnN0YW5jaW5n
Ci0gICAgICAgIG1WZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5zdGFuY2VQb3NMb2MsIDEpOwot
Ci0gICAgICAgIC8vIE9mZnNldAotICAgICAgICBHTGludCB1bmlmb3JtTG9jID0gZ2xHZXRVbmlm
b3JtTG9jYXRpb24obVByb2dyYW0sICJ1X29mZnNldCIpOwotICAgICAgICBBU1NFUlRfTkUodW5p
Zm9ybUxvYywgLTEpOwotICAgICAgICBnbFVuaWZvcm0zZnYodW5pZm9ybUxvYywgMSwgb2Zmc2V0
KTsKLQotICAgICAgICAvLyBEbyB0aGUgaW5zdGFuY2VkIGRyYXcKLSAgICAgICAgbURyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRShHTF9UUklBTkdMRVMsIGZpcnN0LCBjb3VudCwgaW5zdGFuY2VDb3Vu
dCk7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdmlydHVh
bCB2b2lkIHJ1bkRyYXdFbGVtZW50c1Rlc3Qoc3RkOjpzdHJpbmcgdnMsIGJvb2wgc2hvdWxkQXR0
cmliWmVyb0JlSW5zdGFuY2VkKQotICAgIHsKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnMg
PSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OwotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMCwgMCwgMS4wKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgKTsKLQotICAgICAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFt
KHZzLCBmcyk7Ci0gICAgICAgIEFTU0VSVF9ORShwcm9ncmFtLCAwdSk7Ci0KLSAgICAgICAgLy8g
R2V0IHRoZSBhdHRyaWJ1dGUgbG9jYXRpb25zCi0gICAgICAgIEdMaW50IHBvc2l0aW9uTG9jID0g
Z2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiYV9wb3NpdGlvbiIpOwotICAgICAgICBHTGlu
dCBpbnN0YW5jZVBvc0xvYyA9IGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgImFfaW5zdGFu
Y2VQb3MiKTsKLQotICAgICAgICAvLyBJZiB0aGlzIEFTU0VSVCBmYWlscyB0aGVuIHRoZSB2ZXJ0
ZXggc2hhZGVyIGNvZGUgc2hvdWxkIGJlIHJlZmFjdG9yZWQKLSAgICAgICAgQVNTRVJUX0VRKHNo
b3VsZEF0dHJpYlplcm9CZUluc3RhbmNlZCwgKGluc3RhbmNlUG9zTG9jID09IDApKTsKLQotICAg
ICAgICAvLyBTZXQgdGhlIHZpZXdwb3J0Ci0gICAgICAgIGdsVmlld3BvcnQoMCwgMCwgZ2V0V2lu
ZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotCi0gICAgICAgIC8vIENsZWFyIHRoZSBj
b2xvciBidWZmZXIKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLQotICAg
ICAgICAvLyBVc2UgdGhlIHByb2dyYW0gb2JqZWN0Ci0gICAgICAgIGdsVXNlUHJvZ3JhbShwcm9n
cmFtKTsKLQotICAgICAgICAvLyBMb2FkIHRoZSB2ZXJ0ZXggcG9zaXRpb24KLSAgICAgICAgZ2xW
ZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAs
IG1RdWFkVmVydGljZXMuZGF0YSgpKTsKLSAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eShwb3NpdGlvbkxvYyk7Ci0KLSAgICAgICAgLy8gTG9hZCB0aGUgaW5zdGFuY2UgcG9zaXRpb24K
LSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGluc3RhbmNlUG9zTG9jLCAzLCBHTF9GTE9B
VCwgR0xfRkFMU0UsIDAsIG1JbnN0YW5jZXMuZGF0YSgpKTsKLSAgICAgICAgZ2xFbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheShpbnN0YW5jZVBvc0xvYyk7Ci0KLSAgICAgICAgLy8gRW5hYmxlIGluc3Rh
bmNpbmcKLSAgICAgICAgbVZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbnN0YW5jZVBvc0xvYywg
MSk7Ci0KLSAgICAgICAgLy8gRG8gdGhlIGluc3RhbmNlZCBkcmF3Ci0gICAgICAgIG1EcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRShHTF9UUklBTkdMRVMsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1J
bmRpY2VzLnNpemUoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9TSE9SVCwgbUluZGljZXMuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4obUluc3RhbmNlcy5zaXplKCkpIC8gMyk7
Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgY2hlY2tRdWFkcygp
OwotICAgIH0KLQotICAgIHZvaWQgY2hlY2tRdWFkcygpCi0gICAgewotICAgICAgICAvLyBDaGVj
ayB0aGF0IHZhcmlvdXMgcGl4ZWxzIGFyZSB0aGUgZXhwZWN0ZWQgY29sb3IuCi0gICAgICAgIGZv
ciAodW5zaWduZWQgaW50IHF1YWRJbmRleCA9IDA7IHF1YWRJbmRleCA8IDQ7ICsrcXVhZEluZGV4
KQotICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQgYmFzZU9mZnNldCA9IHF1YWRJ
bmRleCAqIDM7Ci0KLSAgICAgICAgICAgIGludCBxdWFkeCA9IHN0YXRpY19jYXN0PGludD4oKCht
SW5zdGFuY2VzW2Jhc2VPZmZzZXQgKyAwXSkgKiAwLjVmICsgMC41ZikgKiBnZXRXaW5kb3dXaWR0
aCgpKTsKLSAgICAgICAgICAgIGludCBxdWFkeSA9IHN0YXRpY19jYXN0PGludD4oKChtSW5zdGFu
Y2VzW2Jhc2VPZmZzZXQgKyAxXSkgKiAwLjVmICsgMC41ZikgKiBnZXRXaW5kb3dIZWlnaHQoKSk7
Ci0KLSAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9FUShxdWFkeCwgcXVhZHksIDI1NSwgMCwgMCwg
MjU1KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIExvYWRlZCBlbnRyeSBwb2ludHMKLSAg
ICBQRk5HTFZFUlRFWEFUVFJJQkRJVklTT1JBTkdMRVBST0MgbVZlcnRleEF0dHJpYkRpdmlzb3JB
TkdMRTsKLSAgICBQRk5HTERSQVdBUlJBWVNJTlNUQU5DRURBTkdMRVBST0MgbURyYXdBcnJheXNJ
bnN0YW5jZWRBTkdMRTsKLSAgICBQRk5HTERSQVdFTEVNRU5UU0lOU1RBTkNFREFOR0xFUFJPQyBt
RHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEU7Ci0KLSAgICAvLyBWZXJ0ZXggZGF0YQotICAgIHN0
ZDo6dmVjdG9yPEdMZmxvYXQ+IG1RdWFkVmVydGljZXM7Ci0gICAgc3RkOjp2ZWN0b3I8R0xmbG9h
dD4gbU5vbkluZGV4ZWRWZXJ0aWNlczsKLSAgICBzdGQ6OnZlY3RvcjxHTGZsb2F0PiBtVGV4Y29v
cmRzOwotICAgIHN0ZDo6dmVjdG9yPEdMZmxvYXQ+IG1JbnN0YW5jZXM7Ci0gICAgc3RkOjp2ZWN0
b3I8R0x1c2hvcnQ+IG1JbmRpY2VzOwotCi0gICAgY29uc3QgR0xmbG9hdCBxdWFkUmFkaXVzID0g
MC4zMGY7Ci0KLSAgICBHTHVpbnQgbVByb2dyYW07Ci0gICAgR0x1aW50IG1WZXJ0ZXhCdWZmZXI7
Ci19OwotCi1jbGFzcyBJbnN0YW5jaW5nVGVzdEFsbENvbmZpZ3MgOiBwdWJsaWMgSW5zdGFuY2lu
Z1Rlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIEluc3RhbmNpbmdUZXN0QWxsQ29uZmlncygpIHt9
Ci19OwotCi1jbGFzcyBJbnN0YW5jaW5nVGVzdE5vOV8zIDogcHVibGljIEluc3RhbmNpbmdUZXN0
Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBJbnN0YW5jaW5nVGVzdE5vOV8zKCkge30KLX07Ci0KLWNs
YXNzIEluc3RhbmNpbmdUZXN0UG9pbnRzIDogcHVibGljIEluc3RhbmNpbmdUZXN0Ci17Ci0gIHBy
b3RlY3RlZDoKLSAgICBJbnN0YW5jaW5nVGVzdFBvaW50cygpIHt9Ci19OwotCi0vLyBUaGlzIHRl
c3QgdXNlcyBhIHZlcnRleCBzaGFkZXIgd2l0aCB0aGUgZmlyc3QgYXR0cmlidXRlIChhdHRyaWJ1
dGUgemVybykgaW5zdGFuY2VkLgotLy8gT24gRDNEOSBhbmQgRDNEMTEgRkw5XzMsIHRoaXMgdHJp
Z2dlcnMgYSBzcGVjaWFsIGNvZGVwYXRoIHRoYXQgcmVhcnJhbmdlcyB0aGUgaW5wdXQgbGF5b3V0
IHNlbnQgdG8gRDNELAotLy8gdG8gZW5zdXJlIHRoYXQgc2xvdC9zdHJlYW0gemVybyBvZiB0aGUg
aW5wdXQgbGF5b3V0IGRvZXNuJ3QgY29udGFpbiBwZXItaW5zdGFuY2UgZGF0YS4KLVRFU1RfUChJ
bnN0YW5jaW5nVGVzdEFsbENvbmZpZ3MsIEF0dHJpYnV0ZVplcm9JbnN0YW5jZWQpCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgdnMgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBhdHRy
aWJ1dGUgdmVjMyBhX2luc3RhbmNlUG9zOwotICAgICAgICBhdHRyaWJ1dGUgdmVjMyBhX3Bvc2l0
aW9uOwotICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9Qb3Np
dGlvbiA9IHZlYzQoYV9wb3NpdGlvbi54eXogKyBhX2luc3RhbmNlUG9zLnh5eiwgMS4wKTsKLSAg
ICAgICAgfQotICAgICk7Ci0KLSAgICBydW5EcmF3RWxlbWVudHNUZXN0KHZzLCB0cnVlKTsKLX0K
LQotLy8gU2FtZSBhcyBBdHRyaWJ1dGVaZXJvSW5zdGFuY2VkLCBidXQgYXR0cmlidXRlIHplcm8g
aXMgbm90IGluc3RhbmNlZC4KLS8vIFRoaXMgZW5zdXJlcyB0aGUgZ2VuZXJhbCBpbnN0YW5jaW5n
IGNvZGVwYXRoIChpLmUuIHdpdGhvdXQgcmVhcnJhbmdpbmcgdGhlIGlucHV0IGxheW91dCkgd29y
a3MgYXMgZXhwZWN0ZWQuCi1URVNUX1AoSW5zdGFuY2luZ1Rlc3RBbGxDb25maWdzLCBBdHRyaWJ1
dGVaZXJvTm90SW5zdGFuY2VkKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzID0gU0hBREVS
X1NPVVJDRQotICAgICgKLSAgICAgICAgYXR0cmlidXRlIHZlYzMgYV9wb3NpdGlvbjsKLSAgICAg
ICAgYXR0cmlidXRlIHZlYzMgYV9pbnN0YW5jZVBvczsKLSAgICAgICAgdm9pZCBtYWluKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFfcG9zaXRpb24ueHl6ICsg
YV9pbnN0YW5jZVBvcy54eXosIDEuMCk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgcnVuRHJh
d0VsZW1lbnRzVGVzdCh2cywgZmFsc2UpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSAiZmlyc3Qi
IHBhcmFtZXRlciB0byBnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRSBpcyBvbmx5IGFuIG9mZnNl
dCBpbnRvCi0vLyB0aGUgbm9uLWluc3RhbmNlZCB2ZXJ0ZXggYXR0cmlidXRlcy4KLVRFU1RfUChJ
bnN0YW5jaW5nVGVzdE5vOV8zLCBEcmF3QXJyYXlzV2l0aE9mZnNldCkKLXsKLSAgICBjb25zdCBz
dGQ6OnN0cmluZyB2cyA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIGF0dHJpYnV0ZSB2
ZWMzIGFfcG9zaXRpb247Ci0gICAgICAgIGF0dHJpYnV0ZSB2ZWMzIGFfaW5zdGFuY2VQb3M7Ci0g
ICAgICAgIHVuaWZvcm0gdmVjMyB1X29mZnNldDsKLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFfcG9zaXRpb24ueHl6ICsgYV9p
bnN0YW5jZVBvcy54eXogKyB1X29mZnNldCwgMS4wKTsKLSAgICAgICAgfQotICAgICk7Ci0KLSAg
ICBzZXR1cERyYXdBcnJheXNUZXN0KHZzKTsKLQotICAgIGZsb2F0IG9mZnNldDFbM10gPSB7IDAs
IDAsIDAgfTsKLSAgICBydW5EcmF3QXJyYXlzVGVzdCgwLCA2LCAyLCBvZmZzZXQxKTsKLQotICAg
IGZsb2F0IG9mZnNldDJbM10gPSB7IDAuMGYsIDEuMGYsIDAgfTsKLSAgICBydW5EcmF3QXJyYXlz
VGVzdCg2LCA2LCAyLCBvZmZzZXQyKTsKLQotICAgIGNoZWNrUXVhZHMoKTsKLX0KLQotLy8gVGhp
cyB0ZXN0IHZlcmlmaWVzIGluc3RhbmNpbmcgd2l0aCBHTF9QT0lOVFMgd2l0aCBnbERyYXdBcnJh
eXNJbnN0YW5jZWQgd29ya3MuCi0vLyBPbiBEM0QxMSBGTDlfMywgdGhpcyB0cmlnZ2VycyBhIHNw
ZWNpYWwgY29kZXBhdGggdGhhdCBlbXVsYXRlcyBpbnN0YW5jZWQgcG9pbnRzIHJlbmRlcmluZy4K
LVRFU1RfUChJbnN0YW5jaW5nVGVzdFBvaW50cywgRHJhd0FycmF5cykKLXsKLSAgICAvLyBEaXNh
YmxlIEQzRDExIFNESyBMYXllcnMgd2FybmluZ3MgY2hlY2tzLCBzZWUgQU5HTEUgaXNzdWUgNjY3
IGZvciBkZXRhaWxzCi0gICAgLy8gT24gV2luNywgdGhlIEQzRCBTREsgTGF5ZXJzIGVtaXRzIGEg
ZmFsc2Ugd2FybmluZyBmb3IgdGhlc2UgdGVzdHMuCi0gICAgLy8gVGhpcyBkb2Vzbid0IG9jY3Vy
IG9uIFdpbmRvd3MgMTAgKFZlcnNpb24gMTUxMSkgdGhvdWdoLgotICAgIGlnbm9yZUQzRDExU0RL
TGF5ZXJzV2FybmluZ3MoKTsKLQotICAgIHNldHVwSW5zdGFuY2VkUG9pbnRzVGVzdCgpOwotCi0g
ICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVZlcnRleEJ1ZmZlcik7Ci0gICAgZ2xC
dWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgbUluc3RhbmNlcy5zaXplKCkgKiBzaXplb2YobUlu
c3RhbmNlc1swXSksICZtSW5zdGFuY2VzWzBdLAotICAgICAgICAgICAgICAgICBHTF9TVEFUSUNf
RFJBVyk7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7Ci0KLSAgICAvLyBH
ZXQgdGhlIGF0dHJpYnV0ZSBsb2NhdGlvbnMKLSAgICBHTGludCBwb3NpdGlvbkxvYyAgICA9IGds
R2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJhX3Bvc2l0aW9uIik7Ci0gICAgR0xpbnQgaW5z
dGFuY2VQb3NMb2MgPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiYV9pbnN0YW5jZVBv
cyIpOwotCi0gICAgLy8gTG9hZCB0aGUgdmVydGV4IHBvc2l0aW9uCi0gICAgR0xmbG9hdCBwb3Nb
M10gPSB7MCwgMCwgMH07Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jLCAz
LCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHBvcyk7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShwb3NpdGlvbkxvYyk7Ci0KLSAgICAvLyBMb2FkIHRoZSBpbnN0YW5jZSBwb3NpdGlvbgot
ICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1WZXJ0ZXhCdWZmZXIpOwotICAgIGds
VmVydGV4QXR0cmliUG9pbnRlcihpbnN0YW5jZVBvc0xvYywgMywgR0xfRkxPQVQsIEdMX0ZBTFNF
LCAwLCAwKTsKLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKLSAgICBnbEVu
YWJsZVZlcnRleEF0dHJpYkFycmF5KGluc3RhbmNlUG9zTG9jKTsKLQotICAgIC8vIEVuYWJsZSBp
bnN0YW5jaW5nCi0gICAgbVZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShpbnN0YW5jZVBvc0xvYywg
MSk7Ci0KLSAgICAvLyBEbyB0aGUgaW5zdGFuY2VkIGRyYXcKLSAgICBtRHJhd0FycmF5c0luc3Rh
bmNlZEFOR0xFKEdMX1BPSU5UUywgMCwgMSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4obUluc3RhbmNl
cy5zaXplKCkpIC8gMyk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGNoZWNr
UXVhZHMoKTsKLX0KLQotLy8gVGhpcyB0ZXN0IHZlcmlmaWVzIGluc3RhbmNpbmcgd2l0aCBHTF9Q
T0lOVFMgd2l0aCBnbERyYXdFbGVtZW50c0luc3RhbmNlZCB3b3Jrcy4KLS8vIE9uIEQzRDExIEZM
OV8zLCB0aGlzIHRyaWdnZXJzIGEgc3BlY2lhbCBjb2RlcGF0aCB0aGF0IGVtdWxhdGVzIGluc3Rh
bmNlZCBwb2ludHMgcmVuZGVyaW5nLgotVEVTVF9QKEluc3RhbmNpbmdUZXN0UG9pbnRzLCBEcmF3
RWxlbWVudHMpCi17Ci0gICAgLy8gRGlzYWJsZSBEM0QxMSBTREsgTGF5ZXJzIHdhcm5pbmdzIGNo
ZWNrcywgc2VlIEFOR0xFIGlzc3VlIDY2NyBmb3IgZGV0YWlscwotICAgIC8vIE9uIFdpbjcsIHRo
ZSBEM0QgU0RLIExheWVycyBlbWl0cyBhIGZhbHNlIHdhcm5pbmcgZm9yIHRoZXNlIHRlc3RzLgot
ICAgIC8vIFRoaXMgZG9lc24ndCBvY2N1ciBvbiBXaW5kb3dzIDEwIChWZXJzaW9uIDE1MTEpIHRo
b3VnaC4KLSAgICBpZ25vcmVEM0QxMVNES0xheWVyc1dhcm5pbmdzKCk7Ci0KLSAgICBzZXR1cElu
c3RhbmNlZFBvaW50c1Rlc3QoKTsKLQotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIs
IG1WZXJ0ZXhCdWZmZXIpOwotICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIG1JbnN0
YW5jZXMuc2l6ZSgpICogc2l6ZW9mKG1JbnN0YW5jZXNbMF0pLCAmbUluc3RhbmNlc1swXSwKLSAg
ICAgICAgICAgICAgICAgR0xfU1RBVElDX0RSQVcpOwotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJB
WV9CVUZGRVIsIDApOwotCi0gICAgLy8gR2V0IHRoZSBhdHRyaWJ1dGUgbG9jYXRpb25zCi0gICAg
R0xpbnQgcG9zaXRpb25Mb2MgICAgPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiYV9w
b3NpdGlvbiIpOwotICAgIEdMaW50IGluc3RhbmNlUG9zTG9jID0gZ2xHZXRBdHRyaWJMb2NhdGlv
bihtUHJvZ3JhbSwgImFfaW5zdGFuY2VQb3MiKTsKLQotICAgIC8vIExvYWQgdGhlIHZlcnRleCBw
b3NpdGlvbgotICAgIEdMZmxvYXQgcG9zWzNdID0gezAsIDAsIDB9OwotICAgIGdsVmVydGV4QXR0
cmliUG9pbnRlcihwb3NpdGlvbkxvYywgMywgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBwb3MpOwot
ICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2MpOwotCi0gICAgLy8gTG9h
ZCB0aGUgaW5zdGFuY2UgcG9zaXRpb24KLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVS
LCBtVmVydGV4QnVmZmVyKTsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoaW5zdGFuY2VQb3NM
b2MsIDMsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgMCk7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FS
UkFZX0JVRkZFUiwgMCk7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShpbnN0YW5jZVBv
c0xvYyk7Ci0KLSAgICAvLyBFbmFibGUgaW5zdGFuY2luZwotICAgIG1WZXJ0ZXhBdHRyaWJEaXZp
c29yQU5HTEUoaW5zdGFuY2VQb3NMb2MsIDEpOwotCi0gICAgLy8gRG8gdGhlIGluc3RhbmNlZCBk
cmF3Ci0gICAgbURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdMX1BPSU5UUywgc3RhdGljX2Nh
c3Q8R0xzaXplaT4obUluZGljZXMuc2l6ZSgpKSwgR0xfVU5TSUdORURfU0hPUlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1JbmRpY2VzLmRhdGEoKSwgc3RhdGljX2Nhc3Q8R0xz
aXplaT4obUluc3RhbmNlcy5zaXplKCkpIC8gMyk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKLQotICAgIGNoZWNrUXVhZHMoKTsKLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNo
IGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZl
cnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLS8vIFdlIHRlc3Qgb24g
RDNEOSBhbmQgRDNEMTEgOV8zIGJlY2F1c2UgdGhleSB1c2Ugc3BlY2lhbCBjb2RlcGF0aHMgd2hl
biBhdHRyaWJ1dGUgemVybyBpcyBpbnN0YW5jZWQsIHVubGlrZSBEM0QxMS4KLUFOR0xFX0lOU1RB
TlRJQVRFX1RFU1QoSW5zdGFuY2luZ1Rlc3RBbGxDb25maWdzLAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVT
KCkpOwotCi0vLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IHRoZSBzaXR1YXRpb24gd2l0aCBE
cmF3SW5zdGFuY2VkIG9uIEZMIDlfMwotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChJbnN0YW5jaW5n
VGVzdE5vOV8zLCBFUzJfRDNEOSgpLCBFUzJfRDNEMTEoKSk7Ci0KLUFOR0xFX0lOU1RBTlRJQVRF
X1RFU1QoSW5zdGFuY2luZ1Rlc3RQb2ludHMsIEVTMl9EM0QxMSgpLCBFUzJfRDNEMTFfRkw5XzMo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVz
dHMvTGluZUxvb3BUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9MaW5lTG9vcFRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
NzhmZWU5ZmUyNTU4NDc0Yjk4YjdmMjdlZGFkM2U1NDgwMDRhMjJkLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9MaW5lTG9vcFRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjI2
ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgot
Ci11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLWNsYXNzIExpbmVMb29wVGVzdCA6IHB1YmxpYyBB
TkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIExpbmVMb29wVGVzdCgpCi0gICAgewotICAg
ICAgICBzZXRXaW5kb3dXaWR0aCgyNTYpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMjU2KTsK
LSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRz
KDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxw
aGFCaXRzKDgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCi0gICAgewotICAg
ICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdnNT
b3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIGF0dHJpYnV0ZSBo
aWdocCB2ZWM0IHBvc2l0aW9uOwotCi0gICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAg
ICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzU291cmNl
ID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICB1bmlmb3JtIGhpZ2hwIHZl
YzQgY29sb3I7Ci0gICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgKTsKLQotICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzU291cmNlLCBmc1Nv
dXJjZSk7Ci0gICAgICAgIGlmIChtUHJvZ3JhbSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBGQUlMKCkgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKLSAgICAgICAgfQotCi0g
ICAgICAgIG1Qb3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwg
InBvc2l0aW9uIik7Ci0gICAgICAgIG1Db2xvckxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRp
b24obVByb2dyYW0sICJjb2xvciIpOwotCi0gICAgICAgIGdsQmxlbmRGdW5jKEdMX09ORSwgR0xf
T05FKTsKLSAgICAgICAgZ2xFbmFibGUoR0xfQkxFTkQpOwotICAgICAgICBnbENsZWFyQ29sb3Io
MC4wZiwgMC4wZiwgMC4wZiwgMS4wZik7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKLSAgICB7Ci0gICAgICAgIGds
RGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigp
OwotICAgIH0KLQotICAgIHZvaWQgcnVuVGVzdChHTGVudW0gaW5kZXhUeXBlLCBHTHVpbnQgaW5k
ZXhCdWZmZXIsIGNvbnN0IEdMdm9pZCAqaW5kZXhQdHIpCi0gICAgewotICAgICAgICBnbENsZWFy
KEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBHTGZsb2F0IGxv
b3BQb3NpdGlvbnNbXSA9Ci0gICAgICAgIHsKLSAgICAgICAgICAgICAwLjBmLCAgMC4wZiwKLSAg
ICAgICAgICAgICAwLjBmLCAgMC4wZiwKLSAgICAgICAgICAgICAwLjBmLCAgMC4wZiwKLSAgICAg
ICAgICAgICAwLjBmLCAgMC4wZiwKLSAgICAgICAgICAgICAwLjBmLCAgMC4wZiwKLSAgICAgICAg
ICAgICAwLjBmLCAgMC4wZiwKLSAgICAgICAgICAgIC0wLjVmLCAtMC41ZiwKLSAgICAgICAgICAg
IC0wLjVmLCAgMC41ZiwKLSAgICAgICAgICAgICAwLjVmLCAgMC41ZiwKLSAgICAgICAgICAgICAw
LjVmLCAtMC41ZgotICAgICAgICB9OwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBHTGZsb2F0IHN0
cmlwUG9zaXRpb25zW10gPQotICAgICAgICB7Ci0gICAgICAgICAgICAtMC41ZiwgLTAuNWYsCi0g
ICAgICAgICAgICAtMC41ZiwgIDAuNWYsCi0gICAgICAgICAgICAgMC41ZiwgIDAuNWYsCi0gICAg
ICAgICAgICAgMC41ZiwgLTAuNWYKLSAgICAgICAgfTsKLSAgICAgICAgc3RhdGljIGNvbnN0IEdM
dWJ5dGUgc3RyaXBJbmRpY2VzW10gPQotICAgICAgICB7Ci0gICAgICAgICAgICAxLCAwLCAzLCAy
LCAxCi0gICAgICAgIH07Ci0KLSAgICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAg
ICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRleEJ1ZmZlcik7Ci0g
ICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobVBvc2l0aW9uTG9jYXRpb24pOwotICAg
ICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobVBvc2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FU
LCBHTF9GQUxTRSwgMCwgbG9vcFBvc2l0aW9ucyk7Ci0gICAgICAgIGdsVW5pZm9ybTRmKG1Db2xv
ckxvY2F0aW9uLCAwLjBmLCAwLjBmLCAxLjBmLCAxLjBmKTsKLSAgICAgICAgZ2xEcmF3RWxlbWVu
dHMoR0xfTElORV9MT09QLCA0LCBpbmRleFR5cGUsIGluZGV4UHRyKTsKLQotICAgICAgICBnbEJp
bmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIDApOwotICAgICAgICBnbFZlcnRleEF0
dHJpYlBvaW50ZXIobVBvc2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwg
c3RyaXBQb3NpdGlvbnMpOwotICAgICAgICBnbFVuaWZvcm00ZihtQ29sb3JMb2NhdGlvbiwgMCwg
MSwgMCwgMSk7Ci0gICAgICAgIGdsRHJhd0VsZW1lbnRzKEdMX0xJTkVfU1RSSVAsIDUsIEdMX1VO
U0lHTkVEX0JZVEUsIHN0cmlwSW5kaWNlcyk7Ci0KLSAgICAgICAgc3RkOjp2ZWN0b3I8R0x1Ynl0
ZT4gcGl4ZWxzKGdldFdpbmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSAqIDQpOwotICAg
ICAgICBnbFJlYWRQaXhlbHMoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0
KCksIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZwaXhlbHNbMF0pOwotCi0gICAgICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgZ2V0V2lu
ZG93SGVpZ2h0KCk7IHkrKykKLSAgICAgICAgewotICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7
IHggPCBnZXRXaW5kb3dXaWR0aCgpOyB4KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY29uc3QgR0x1Ynl0ZSogcGl4ZWwgPSAmcGl4ZWxzWzBdICsgKCh5ICogZ2V0V2luZG93V2lk
dGgoKSArIHgpICogNCk7Ci0KLSAgICAgICAgICAgICAgICBFWFBFQ1RfRVEocGl4ZWxbMF0sIDAp
OwotICAgICAgICAgICAgICAgIEVYUEVDVF9FUShwaXhlbFsxXSwgcGl4ZWxbMl0pOwotICAgICAg
ICAgICAgICAgIEVYUEVDVF9FUShwaXhlbFszXSwgMjU1KTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQotICAgIEdMdWludCBtUHJvZ3JhbTsKLSAgICBHTGludCBtUG9zaXRpb25M
b2NhdGlvbjsKLSAgICBHTGludCBtQ29sb3JMb2NhdGlvbjsKLX07Ci0KLVRFU1RfUChMaW5lTG9v
cFRlc3QsIExpbmVMb29wVUJ5dGVJbmRpY2VzKQotewotICAgIC8vIERpc2FibGUgRDNEMTEgU0RL
IExheWVycyB3YXJuaW5ncyBjaGVja3MsIHNlZSBBTkdMRSBpc3N1ZSA2NjcgZm9yIGRldGFpbHMK
LSAgICAvLyBPbiBXaW43LCB0aGUgRDNEIFNESyBMYXllcnMgZW1pdHMgYSBmYWxzZSB3YXJuaW5n
IGZvciB0aGVzZSB0ZXN0cy4KLSAgICAvLyBUaGlzIGRvZXNuJ3Qgb2NjdXIgb24gV2luZG93cyAx
MCAoVmVyc2lvbiAxNTExKSB0aG91Z2guCi0gICAgaWdub3JlRDNEMTFTREtMYXllcnNXYXJuaW5n
cygpOwotCi0gICAgc3RhdGljIGNvbnN0IEdMdWJ5dGUgaW5kaWNlc1tdID0geyAwLCA3LCA2LCA5
LCA4LCAwIH07Ci0gICAgcnVuVGVzdChHTF9VTlNJR05FRF9CWVRFLCAwLCBpbmRpY2VzICsgMSk7
Ci19Ci0KLVRFU1RfUChMaW5lTG9vcFRlc3QsIExpbmVMb29wVVNob3J0SW5kaWNlcykKLXsKLSAg
ICAvLyBEaXNhYmxlIEQzRDExIFNESyBMYXllcnMgd2FybmluZ3MgY2hlY2tzLCBzZWUgQU5HTEUg
aXNzdWUgNjY3IGZvciBkZXRhaWxzCi0gICAgaWdub3JlRDNEMTFTREtMYXllcnNXYXJuaW5ncygp
OwotCi0gICAgc3RhdGljIGNvbnN0IEdMdXNob3J0IGluZGljZXNbXSA9IHsgMCwgNywgNiwgOSwg
OCwgMCB9OwotICAgIHJ1blRlc3QoR0xfVU5TSUdORURfU0hPUlQsIDAsIGluZGljZXMgKyAxKTsK
LX0KLQotVEVTVF9QKExpbmVMb29wVGVzdCwgTGluZUxvb3BVSW50SW5kaWNlcykKLXsKLSAgICBp
ZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkKLSAgICB7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBEaXNhYmxlIEQzRDExIFNESyBMYXll
cnMgd2FybmluZ3MgY2hlY2tzLCBzZWUgQU5HTEUgaXNzdWUgNjY3IGZvciBkZXRhaWxzCi0gICAg
aWdub3JlRDNEMTFTREtMYXllcnNXYXJuaW5ncygpOwotCi0gICAgc3RhdGljIGNvbnN0IEdMdWlu
dCBpbmRpY2VzW10gPSB7IDAsIDcsIDYsIDksIDgsIDAgfTsKLSAgICBydW5UZXN0KEdMX1VOU0lH
TkVEX0lOVCwgMCwgaW5kaWNlcyArIDEpOwotfQotCi1URVNUX1AoTGluZUxvb3BUZXN0LCBMaW5l
TG9vcFVCeXRlSW5kZXhCdWZmZXIpCi17Ci0gICAgLy8gRGlzYWJsZSBEM0QxMSBTREsgTGF5ZXJz
IHdhcm5pbmdzIGNoZWNrcywgc2VlIEFOR0xFIGlzc3VlIDY2NyBmb3IgZGV0YWlscwotICAgIGln
bm9yZUQzRDExU0RLTGF5ZXJzV2FybmluZ3MoKTsKLQotICAgIHN0YXRpYyBjb25zdCBHTHVieXRl
IGluZGljZXNbXSA9IHsgMCwgNywgNiwgOSwgOCwgMCB9OwotCi0gICAgR0x1aW50IGJ1ZjsKLSAg
ICBnbEdlbkJ1ZmZlcnMoMSwgJmJ1Zik7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJS
QVlfQlVGRkVSLCBidWYpOwotICAgIGdsQnVmZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZF
Uiwgc2l6ZW9mKGluZGljZXMpLCBpbmRpY2VzLCBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICBydW5U
ZXN0KEdMX1VOU0lHTkVEX0JZVEUsIGJ1ZiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkICo+
KHNpemVvZihHTHVieXRlKSkpOwotCi0gICAgZ2xEZWxldGVCdWZmZXJzKDEsICZidWYpOwotfQot
Ci1URVNUX1AoTGluZUxvb3BUZXN0LCBMaW5lTG9vcFVTaG9ydEluZGV4QnVmZmVyKQotewotICAg
IC8vIERpc2FibGUgRDNEMTEgU0RLIExheWVycyB3YXJuaW5ncyBjaGVja3MsIHNlZSBBTkdMRSBp
c3N1ZSA2NjcgZm9yIGRldGFpbHMKLSAgICBpZ25vcmVEM0QxMVNES0xheWVyc1dhcm5pbmdzKCk7
Ci0KLSAgICBzdGF0aWMgY29uc3QgR0x1c2hvcnQgaW5kaWNlc1tdID0geyAwLCA3LCA2LCA5LCA4
LCAwIH07Ci0KLSAgICBHTHVpbnQgYnVmOwotICAgIGdsR2VuQnVmZmVycygxLCAmYnVmKTsKLSAg
ICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGJ1Zik7Ci0gICAgZ2xCdWZm
ZXJEYXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBzaXplb2YoaW5kaWNlcyksIGluZGljZXMs
IEdMX1NUQVRJQ19EUkFXKTsKLQotICAgIHJ1blRlc3QoR0xfVU5TSUdORURfU0hPUlQsIGJ1Ziwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkICo+KHNpemVvZihHTHVzaG9ydCkpKTsKLQotICAg
IGdsRGVsZXRlQnVmZmVycygxLCAmYnVmKTsKLX0KLQotVEVTVF9QKExpbmVMb29wVGVzdCwgTGlu
ZUxvb3BVSW50SW5kZXhCdWZmZXIpCi17Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9P
RVNfZWxlbWVudF9pbmRleF91aW50IikpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgLy8gRGlzYWJsZSBEM0QxMSBTREsgTGF5ZXJzIHdhcm5pbmdzIGNoZWNrcywgc2VlIEFO
R0xFIGlzc3VlIDY2NyBmb3IgZGV0YWlscwotICAgIGlnbm9yZUQzRDExU0RLTGF5ZXJzV2Fybmlu
Z3MoKTsKLQotICAgIHN0YXRpYyBjb25zdCBHTHVpbnQgaW5kaWNlc1tdID0geyAwLCA3LCA2LCA5
LCA4LCAwIH07Ci0KLSAgICBHTHVpbnQgYnVmOwotICAgIGdsR2VuQnVmZmVycygxLCAmYnVmKTsK
LSAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGJ1Zik7Ci0gICAgZ2xC
dWZmZXJEYXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBzaXplb2YoaW5kaWNlcyksIGluZGlj
ZXMsIEdMX1NUQVRJQ19EUkFXKTsKLQotICAgIHJ1blRlc3QoR0xfVU5TSUdORURfSU5ULCBidWYs
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCAqPihzaXplb2YoR0x1aW50KSkpOwotCi0gICAg
Z2xEZWxldGVCdWZmZXJzKDEsICZidWYpOwotfQotCi0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hp
Y2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3Ig
dmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFO
VElBVEVfVEVTVChMaW5lTG9vcFRlc3QsIEVTMl9EM0Q5KCksIEVTMl9EM0QxMSgpLCBFUzJfT1BF
TkdMKCksIEVTMl9PUEVOR0xFUygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9NYXhUZXh0dXJlU2l6ZVRlc3QuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL01heFRleHR1cmVTaXplVGVzdC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiNDZkNmY3NjdkYTg2MDdkYTJlMGQ2NTYx
ODExY2I0MWM4ZTc2ZGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL01heFRleHR1
cmVTaXplVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTkgKzAsMCBAQAotLy8KLS8vIENv
cHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8K
LQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBh
bmdsZTsKLQotY2xhc3MgTWF4VGV4dHVyZVNpemVUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewot
ICBwcm90ZWN0ZWQ6Ci0gICAgTWF4VGV4dHVyZVNpemVUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNl
dFdpbmRvd1dpZHRoKDUxMik7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCg1MTIpOwotICAgICAg
ICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0g
ICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMo
OCk7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBB
TkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdnNTb3VyY2Ug
PSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBm
bG9hdDsKLSAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOwotICAgICAgICAgICAg
dmFyeWluZyB2ZWMyIHRleGNvb3JkOwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAg
ICAgICAgICAgdGV4Y29vcmQgPSAocG9zaXRpb24ueHkgKiAwLjUpICsgMC41OwotICAgICAgICAg
ICAgfQotICAgICAgICApOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRleHR1cmVGU1Nv
dXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIGhp
Z2hwIGZsb2F0OwotICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4OwotICAgICAgICAg
ICAgdmFyeWluZyB2ZWMyIHRleGNvb3JkOwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgs
IHRleGNvb3JkKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyBibHVlRlNTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAg
ICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwg
MC4wLCAxLjAsIDEuMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgbVRl
eHR1cmVQcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnNTb3VyY2UsIHRleHR1cmVGU1NvdXJjZSk7
Ci0gICAgICAgIG1CbHVlUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzU291cmNlLCBibHVlRlNT
b3VyY2UpOwotICAgICAgICBpZiAobVRleHR1cmVQcm9ncmFtID09IDAgfHwgbUJsdWVQcm9ncmFt
ID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0
aW9uIGZhaWxlZC4iOwotICAgICAgICB9Ci0KLSAgICAgICAgbVRleHR1cmVVbmlmb3JtTG9jYXRp
b24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtVGV4dHVyZVByb2dyYW0sICJ0ZXgiKTsKLQotICAg
ICAgICBnbEdldEludGVnZXJ2KEdMX01BWF9URVhUVVJFX1NJWkUsICZtTWF4VGV4dHVyZTJEU2l6
ZSk7Ci0gICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSwg
Jm1NYXhUZXh0dXJlQ3ViZVNpemUpOwotICAgICAgICBnbEdldEludGVnZXJ2KEdMX01BWF9SRU5E
RVJCVUZGRVJfU0laRSwgJm1NYXhSZW5kZXJidWZmZXJTaXplKTsKLQotICAgICAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtVGV4dHVyZVByb2dyYW0pOwotICAgICAgICBn
bERlbGV0ZVByb2dyYW0obUJsdWVQcm9ncmFtKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJE
b3duKCk7Ci0gICAgfQotCi0gICAgR0x1aW50IG1UZXh0dXJlUHJvZ3JhbTsKLSAgICBHTGludCBt
VGV4dHVyZVVuaWZvcm1Mb2NhdGlvbjsKLQotICAgIEdMdWludCBtQmx1ZVByb2dyYW07Ci0KLSAg
ICBHTGludCBtTWF4VGV4dHVyZTJEU2l6ZTsKLSAgICBHTGludCBtTWF4VGV4dHVyZUN1YmVTaXpl
OwotICAgIEdMaW50IG1NYXhSZW5kZXJidWZmZXJTaXplOwotfTsKLQotVEVTVF9QKE1heFRleHR1
cmVTaXplVGVzdCwgU3BlY2lmaWNhdGlvblRleEltYWdlKQotewotICAgIEdMdWludCB0ZXg7Ci0g
ICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4KTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIHRleCk7Ci0KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsK
LSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdM
X0NMQU1QX1RPX0VER0UpOwotCi0gICAgR0xzaXplaSB0ZXh0dXJlV2lkdGggPSBtTWF4VGV4dHVy
ZTJEU2l6ZTsKLSAgICBHTHNpemVpIHRleHR1cmVIZWlnaHQgPSA2NDsKLQotICAgIHN0ZDo6dmVj
dG9yPEdMdWJ5dGU+IGRhdGEodGV4dHVyZVdpZHRoICogdGV4dHVyZUhlaWdodCAqIDQpOwotICAg
IGZvciAoaW50IHkgPSAwOyB5IDwgdGV4dHVyZUhlaWdodDsgeSsrKQotICAgIHsKLSAgICAgICAg
Zm9yIChpbnQgeCA9IDA7IHggPCB0ZXh0dXJlV2lkdGg7IHgrKykKLSAgICAgICAgewotICAgICAg
ICAgICAgR0x1Ynl0ZSogcGl4ZWwgPSAmZGF0YVswXSArICgoeSAqIHRleHR1cmVXaWR0aCArIHgp
ICogNCk7Ci0KLSAgICAgICAgICAgIC8vIERyYXcgYSBncmFkaWVudCwgcmVkIGluIGRpcmVjdGlv
biwgZ3JlZW4gaW4geSBkaXJlY3Rpb24KLSAgICAgICAgICAgIHBpeGVsWzBdID0gc3RhdGljX2Nh
c3Q8R0x1Ynl0ZT4oKGZsb2F0KHgpIC8gdGV4dHVyZVdpZHRoKSAqIDI1NSk7Ci0gICAgICAgICAg
ICBwaXhlbFsxXSA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+KChmbG9hdCh5KSAvIHRleHR1cmVIZWln
aHQpICogMjU1KTsKLSAgICAgICAgICAgIHBpeGVsWzJdID0gMDsKLSAgICAgICAgICAgIHBpeGVs
WzNdID0gMjU1OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAsIEdMX1JHQkEsIHRleHR1cmVXaWR0aCwgdGV4dHVyZUhlaWdodCwgMCwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwgJmRhdGFbMF0pOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OwotCi0gICAgZ2xVc2VQcm9ncmFtKG1UZXh0dXJlUHJvZ3JhbSk7Ci0gICAgZ2xVbmlmb3JtMWko
bVRleHR1cmVVbmlmb3JtTG9jYXRpb24sIDApOwotCi0gICAgZHJhd1F1YWQobVRleHR1cmVQcm9n
cmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IHBpeGVs
cyhnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCkgKiA0KTsKLSAgICBnbFJlYWRQ
aXhlbHMoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsICZwaXhlbHNbMF0pOwotCi0gICAgZm9yIChpbnQgeSA9IDE7IHkg
PCBnZXRXaW5kb3dIZWlnaHQoKTsgeSsrKQotICAgIHsKLSAgICAgICAgZm9yIChpbnQgeCA9IDE7
IHggPCBnZXRXaW5kb3dXaWR0aCgpOyB4KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0
IEdMdWJ5dGUqIHByZXZQaXhlbCA9ICZwaXhlbHNbMF0gKyAoKCh5IC0gMSkgKiBnZXRXaW5kb3dX
aWR0aCgpICsgKHggLSAxKSkgKiA0KTsKLSAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUqIGN1clBp
eGVsID0gJnBpeGVsc1swXSArICgoeSAqIGdldFdpbmRvd1dpZHRoKCkgKyB4KSAqIDQpOwotCi0g
ICAgICAgICAgICBFWFBFQ1RfR0UoY3VyUGl4ZWxbMF0sIHByZXZQaXhlbFswXSk7Ci0gICAgICAg
ICAgICBFWFBFQ1RfR0UoY3VyUGl4ZWxbMV0sIHByZXZQaXhlbFsxXSk7Ci0gICAgICAgICAgICBF
WFBFQ1RfRVEoY3VyUGl4ZWxbMl0sIHByZXZQaXhlbFsyXSk7Ci0gICAgICAgICAgICBFWFBFQ1Rf
RVEoY3VyUGl4ZWxbM10sIHByZXZQaXhlbFszXSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLVRF
U1RfUChNYXhUZXh0dXJlU2l6ZVRlc3QsIFNwZWNpZmljYXRpb25UZXhTdG9yYWdlKQotewotICAg
IGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYKLSAgICAgICAgKCFleHRlbnNpb25F
bmFibGVkKCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIikgfHwgIWV4dGVuc2lvbkVuYWJsZWQoIkdM
X09FU19yZ2I4X3JnYmE4IikpKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEdMdWludCB0ZXg7Ci0gICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4KTsKLSAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7Ci0KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0g
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9D
TEFNUF9UT19FREdFKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVY
VFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwotCi0gICAgR0xzaXplaSB0ZXh0dXJlV2lk
dGggPSA2NDsKLSAgICBHTHNpemVpIHRleHR1cmVIZWlnaHQgPSBtTWF4VGV4dHVyZTJEU2l6ZTsK
LQotICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IGRhdGEodGV4dHVyZVdpZHRoICogdGV4dHVyZUhl
aWdodCAqIDQpOwotICAgIGZvciAoaW50IHkgPSAwOyB5IDwgdGV4dHVyZUhlaWdodDsgeSsrKQot
ICAgIHsKLSAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB0ZXh0dXJlV2lkdGg7IHgrKykKLSAg
ICAgICAgewotICAgICAgICAgICAgR0x1Ynl0ZSogcGl4ZWwgPSAmZGF0YVswXSArICgoeSAqIHRl
eHR1cmVXaWR0aCArIHgpICogNCk7Ci0KLSAgICAgICAgICAgIC8vIERyYXcgYSBncmFkaWVudCwg
cmVkIGluIGRpcmVjdGlvbiwgZ3JlZW4gaW4geSBkaXJlY3Rpb24KLSAgICAgICAgICAgIHBpeGVs
WzBdID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oKGZsb2F0KHgpIC8gdGV4dHVyZVdpZHRoKSAqIDI1
NSk7Ci0gICAgICAgICAgICBwaXhlbFsxXSA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+KChmbG9hdCh5
KSAvIHRleHR1cmVIZWlnaHQpICogMjU1KTsKLSAgICAgICAgICAgIHBpeGVsWzJdID0gMDsKLSAg
ICAgICAgICAgIHBpeGVsWzNdID0gMjU1OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGdl
dENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKLSAgICB7Ci0gICAgICAgIGdsVGV4U3RvcmFnZTJE
RVhUKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4X09FUywgdGV4dHVyZVdpZHRoLCB0ZXh0dXJl
SGVpZ2h0KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgZ2xUZXhTdG9yYWdlMkQo
R0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQThfT0VTLCB0ZXh0dXJlV2lkdGgsIHRleHR1cmVIZWln
aHQpOwotICAgIH0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsVGV4U3ViSW1h
Z2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCB0ZXh0dXJlV2lkdGgsIHRleHR1cmVIZWlnaHQs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZkYXRhWzBdKTsKLSAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKLQotICAgIGdsVXNlUHJvZ3JhbShtVGV4dHVyZVByb2dyYW0pOwotICAgIGdsVW5p
Zm9ybTFpKG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uLCAwKTsKLQotICAgIGRyYXdRdWFkKG1UZXh0
dXJlUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBzdGQ6OnZlY3RvcjxHTHVieXRl
PiBwaXhlbHMoZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgpICogNCk7Ci0gICAg
Z2xSZWFkUGl4ZWxzKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmcGl4ZWxzWzBdKTsKLQotICAgIGZvciAoaW50IHkg
PSAxOyB5IDwgZ2V0V2luZG93SGVpZ2h0KCk7IHkrKykKLSAgICB7Ci0gICAgICAgIGZvciAoaW50
IHggPSAxOyB4IDwgZ2V0V2luZG93V2lkdGgoKTsgeCsrKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb25zdCBHTHVieXRlKiBwcmV2UGl4ZWwgPSAmcGl4ZWxzWzBdICsgKCgoeSAtIDEpICogZ2V0
V2luZG93V2lkdGgoKSArICh4IC0gMSkpICogNCk7Ci0gICAgICAgICAgICBjb25zdCBHTHVieXRl
KiBjdXJQaXhlbCA9ICZwaXhlbHNbMF0gKyAoKHkgKiBnZXRXaW5kb3dXaWR0aCgpICsgeCkgKiA0
KTsKLQotICAgICAgICAgICAgRVhQRUNUX0dFKGN1clBpeGVsWzBdLCBwcmV2UGl4ZWxbMF0pOwot
ICAgICAgICAgICAgRVhQRUNUX0dFKGN1clBpeGVsWzFdLCBwcmV2UGl4ZWxbMV0pOwotICAgICAg
ICAgICAgRVhQRUNUX0VRKGN1clBpeGVsWzJdLCBwcmV2UGl4ZWxbMl0pOwotICAgICAgICAgICAg
RVhQRUNUX0VRKGN1clBpeGVsWzNdLCBwcmV2UGl4ZWxbM10pOwotICAgICAgICB9Ci0gICAgfQot
fQotCi1URVNUX1AoTWF4VGV4dHVyZVNpemVUZXN0LCBSZW5kZXJUb1RleHR1cmUpCi17Ci0gICAg
aWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdM
X0FOR0xFX2ZyYW1lYnVmZmVyX2JsaXQiKSkpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3Qgc2tpcHBlZCBkdWUgdG8gbWlzc2luZyBnbEJsaXRGcmFtZWJ1ZmZlcltBTkdMRV0gc3Vw
cG9ydC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEdMdWlu
dCBmYm8gPSAwOwotICAgIEdMdWludCB0ZXh0dXJlSWQgPSAwOwotICAgIC8vIGNyZWF0ZSBhIDEt
bGV2ZWwgdGV4dHVyZSBhdCBtYXhpbXVtIHNpemUKLSAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0
dXJlSWQpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZUlkKTsKLQot
ICAgIEdMc2l6ZWkgdGV4dHVyZVdpZHRoID0gNjQ7Ci0gICAgR0xzaXplaSB0ZXh0dXJlSGVpZ2h0
ID0gbU1heFRleHR1cmUyRFNpemU7Ci0KLSAgICAvLyB0ZXh0dXJlIHNldHVwIGNvZGUKLSAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9M
SU5FQVJfTUlQTUFQX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xB
TVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX0JHUkFf
RVhULCB0ZXh0dXJlV2lkdGgsIHRleHR1cmVIZWlnaHQsIDAsIEdMX0JHUkFfRVhULCBHTF9VTlNJ
R05FRF9CWVRFLCBOVUxMKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIGNy
ZWF0ZSBhbiBGQk8gYW5kIGF0dGFjaCB0aGUgdGV4dHVyZQotICAgIGdsR2VuRnJhbWVidWZmZXJz
KDEsICZmYm8pOwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8pOwot
ICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFD
SE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlSWQsIDApOwotCi0gICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwg
Z2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7Ci0KLSAgICBjb25zdCBp
bnQgZnJhbWVDb3VudCA9IDY0OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJhbWVDb3VudDsg
aSsrKQotICAgIHsKLSAgICAgICAgLy8gY2xlYXIgdGhlIHNjcmVlbgotICAgICAgICBnbEJpbmRG
cmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7Ci0KLSAgICAgICAgR0x1Ynl0ZSBjbGVhclJl
ZCA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+KChmbG9hdChpKSAvIGZyYW1lQ291bnQpICogMjU1KTsK
LSAgICAgICAgR0x1Ynl0ZSBjbGVhckdyZWVuID0gMjU1IC0gY2xlYXJSZWQ7Ci0gICAgICAgIEdM
dWJ5dGUgY2xlYXJCbHVlID0gMDsKLQotICAgICAgICBnbENsZWFyQ29sb3IoY2xlYXJSZWQgLyAy
NTUuMGYsIGNsZWFyR3JlZW4gLyAyNTUuMGYsIGNsZWFyQmx1ZSAvIDI1NS4wZiwgMS4wZik7Ci0g
ICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICAgICAgLy8gcmVuZGVy
IGJsdWUgaW50byB0aGUgdGV4dHVyZQotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgZmJvKTsKLSAgICAgICAgZHJhd1F1YWQobUJsdWVQcm9ncmFtLCAicG9zaXRpb24i
LCAwLjVmKTsKLQotICAgICAgICAvLyBjb3B5IGNvcm5lciBvZiB0ZXh0dXJlIHRvIExMIGNvcm5l
ciBvZiB3aW5kb3cKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZF
Ul9BTkdMRSwgMCk7Ci0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZG
RVJfQU5HTEUsIGZibyk7Ci0gICAgICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwgdGV4
dHVyZVdpZHRoIC0gMSwgZ2V0V2luZG93SGVpZ2h0KCkgLSAxLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsIDAsIHRleHR1cmVXaWR0aCAtIDEsIGdldFdpbmRvd0hlaWdodCgpIC0g
MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklULCBH
TF9ORUFSRVNUKTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZF
Ul9BTkdMRSwgMCk7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIEVY
UEVDVF9QSVhFTF9FUSh0ZXh0dXJlV2lkdGggLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDAs
IDAsIDI1NSwgMjU1KTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKHRleHR1cmVXaWR0aCArIDEw
LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIGNsZWFyUmVkLCBjbGVhckdyZWVuLCBjbGVhckJsdWUs
IDI1NSk7Ci0KLSAgICAgICAgc3dhcEJ1ZmZlcnMoKTsKLSAgICB9Ci0KLSAgICBnbEJpbmRGcmFt
ZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCAwKTsKLQotICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmYm8pOwotICAgIGdsRGVs
ZXRlVGV4dHVyZXMoMSwgJnRleHR1cmVJZCk7Ci19Ci0KLS8vIFRPRE8oZ2VvZmZsYW5nKTogRml4
IHRoZSBkZXBlbmRlbmNlIG9uIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUgd2l0aG91dCBjaGVja3Mg
YW5kIGFzc3VtaW5nIHRoZQotLy8gZGVmYXVsdCBmcmFtZWJ1ZmZlciBpcyBCR1JBIHRvIGVuYWJs
ZSB0aGUgR0wgYW5kIEdMRVMgYmFja2VuZHMuIChodHRwOi8vYW5nbGVidWcuY29tLzEyODkpCi0K
LS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCBy
ZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUg
cnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKE1heFRleHR1cmVTaXplVGVzdCwg
RVMyX0QzRDkoKSwgRVMyX0QzRDExKCksIEVTMl9EM0QxMV9GTDlfMygpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9NaXBtYXBUZXN0LmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9NaXBtYXBUZXN0
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY5MWIxODIwNDEzYWNkNGM3Yjc2
MzE0YTZkZDM3ZmE0Y2Y3OTIyMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvTWlw
bWFwVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQxICswLDAgQEAKLS8vCi0vLyBDb3B5
cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0K
LSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5n
bGU7Ci0KLW5hbWVzcGFjZQotewotCi12b2lkIFRleEltYWdlQ3ViZU1hcEZhY2VzKEdMaW50IGxl
dmVsLAotICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwaXhlbHMpCi17Ci0gICAg
Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgbGV2ZWwsIGludGVy
bmFsZm9ybWF0LCB3aWR0aCwgd2lkdGgsIDAsIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgdHlw
ZSwgcGl4ZWxzKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9YLCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCB3aWR0aCwgMCwgZm9ybWF0LAotICAg
ICAgICAgICAgICAgICB0eXBlLCBwaXhlbHMpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
X0NVQkVfTUFQX1BPU0lUSVZFX1ksIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIHdpZHRo
LCAwLCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgIHR5cGUsIHBpeGVscyk7Ci0gICAgZ2xUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB3aWR0aCwgd2lkdGgsIDAsIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgdHlwZSwgcGl4
ZWxzKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLCBs
ZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCB3aWR0aCwgMCwgZm9ybWF0LAotICAgICAgICAg
ICAgICAgICB0eXBlLCBwaXhlbHMpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1osIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIHdpZHRoLCAwLCBm
b3JtYXQsCi0gICAgICAgICAgICAgICAgIHR5cGUsIHBpeGVscyk7Ci19Ci0KLWNsYXNzIEJhc2VN
aXBtYXBUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBj
bGVhckFuZERyYXdRdWFkKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIHZpZXdwb3J0V2lkdGgsIEdM
c2l6ZWkgdmlld3BvcnRIZWlnaHQpCi0gICAgewotICAgICAgICBnbENsZWFyQ29sb3IoMC4wZiwg
MC4wZiwgMC4wZiwgMS4wZik7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7
Ci0gICAgICAgIGdsVmlld3BvcnQoMCwgMCwgdmlld3BvcnRXaWR0aCwgdmlld3BvcnRIZWlnaHQp
OwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBkcmF3UXVhZChwcm9n
cmFtLCAicG9zaXRpb24iLCAwLjBmKTsKLSAgICB9Ci19OwotCi19ICAvLyBuYW1lc3BhY2UKLQot
Y2xhc3MgTWlwbWFwVGVzdCA6IHB1YmxpYyBCYXNlTWlwbWFwVGVzdAotewotICBwcm90ZWN0ZWQ6
Ci0gICAgTWlwbWFwVGVzdCgpCi0gICAgICAgIDogbTJEUHJvZ3JhbSgwKSwKLSAgICAgICAgICBt
Q3ViZVByb2dyYW0oMCksCi0gICAgICAgICAgbVRleHR1cmUyRCgwKSwKLSAgICAgICAgICBtVGV4
dHVyZUN1YmUoMCksCi0gICAgICAgICAgbUxldmVsWmVyb0JsdWVJbml0RGF0YShudWxscHRyKSwK
LSAgICAgICAgICBtTGV2ZWxaZXJvV2hpdGVJbml0RGF0YShudWxscHRyKSwKLSAgICAgICAgICBt
TGV2ZWxPbmVJbml0RGF0YShudWxscHRyKSwKLSAgICAgICAgICBtTGV2ZWxUd29Jbml0RGF0YShu
dWxscHRyKSwKLSAgICAgICAgICBtT2Zmc2NyZWVuRnJhbWVidWZmZXIoMCkKLSAgICB7Ci0gICAg
ICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwot
ICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMo
OCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBo
YUJpdHMoOCk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRVcDJEUHJvZ3JhbSgpCi0gICAgewotICAg
ICAgICAvLyBWZXJ0ZXggU2hhZGVyIHNvdXJjZQotICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2Zm
Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzID0gU0hBREVSX1NPVVJDRQotICAgICAgICAo
Ci0gICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKLSAgICAgICAgICAgIHZhcnlp
bmcgdmVjMiB2VGV4Q29vcmQ7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICAgICAgICAg
ICAgICB2VGV4Q29vcmQgICA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgLy8gRnJhZ21lbnQgU2hhZGVyIHNvdXJjZQotICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcyA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAg
ICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Ci0KLSAgICAgICAgICAgIHVuaWZvcm0g
c2FtcGxlcjJEIHVUZXh0dXJlOwotICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHZUZXhDb29yZDsK
LQotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodVRleHR1cmUsIHZUZXhDb29yZCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICk7Ci0gICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgotCi0gICAgICAg
IG0yRFByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2cywgZnMpOwotICAgICAgICBBU1NFUlRfTkUo
MHUsIG0yRFByb2dyYW0pOwotICAgIH0KLQotICAgIHZvaWQgc2V0VXBDdWJlUHJvZ3JhbSgpCi0g
ICAgewotICAgICAgICAvLyBBIHNpbXBsZSB2ZXJ0ZXggc2hhZGVyIGZvciB0aGUgdGV4dHVyZSBj
dWJlCi0gICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgY3ViZVZTID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBhdHRyaWJ1
dGUgdmVjNCBwb3NpdGlvbjsKLSAgICAgICAgICAgIHZhcnlpbmcgdmVjNCB2UG9zaXRpb247Ci0g
ICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGds
X1Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAgICAgICAgICAgdlBvc2l0aW9uID0gcG9zaXRp
b247Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgLy8gQSB2ZXJ5IHNpbXBs
ZSBmcmFnbWVudCBzaGFkZXIgdG8gc2FtcGxlIGZyb20gdGhlIG5lZ2F0aXZlLVkgZmFjZSBvZiBh
IHRleHR1cmUgY3ViZS4KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgY3ViZUZTID0gU0hBREVS
X1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
LSAgICAgICAgICAgIHVuaWZvcm0gc2FtcGxlckN1YmUgdVRleHR1cmU7Ci0gICAgICAgICAgICB2
YXJ5aW5nIHZlYzQgdlBvc2l0aW9uOwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmVDdWJlKHVUZXh0
dXJlLCB2ZWMzKHZQb3NpdGlvbi54LCAtMSwgdlBvc2l0aW9uLnkpKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgKTsKLSAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICAgICAgbUN1YmVQ
cm9ncmFtID0gQ29tcGlsZVByb2dyYW0oY3ViZVZTLCBjdWJlRlMpOwotICAgICAgICBBU1NFUlRf
TkUoMHUsIG1DdWJlUHJvZ3JhbSk7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRl
Ci0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgc2V0VXAyRFBy
b2dyYW0oKTsKLQotICAgICAgICBzZXRVcEN1YmVQcm9ncmFtKCk7Ci0KLSAgICAgICAgbUxldmVs
WmVyb0JsdWVJbml0RGF0YSA9IGNyZWF0ZVJHQkluaXREYXRhKGdldFdpbmRvd1dpZHRoKCksIGdl
dFdpbmRvd0hlaWdodCgpLCAwLCAwLCAyNTUpOyAvLyBCbHVlCi0gICAgICAgIG1MZXZlbFplcm9X
aGl0ZUluaXREYXRhID0gY3JlYXRlUkdCSW5pdERhdGEoZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2lu
ZG93SGVpZ2h0KCksIDI1NSwgMjU1LCAyNTUpOyAvLyBXaGl0ZQotICAgICAgICBtTGV2ZWxPbmVJ
bml0RGF0YSA9IGNyZWF0ZVJHQkluaXREYXRhKChnZXRXaW5kb3dXaWR0aCgpIC8gMiksIChnZXRX
aW5kb3dIZWlnaHQoKSAvIDIpLCAwLCAyNTUsIDApOyAgIC8vIEdyZWVuCi0gICAgICAgIG1MZXZl
bFR3b0luaXREYXRhID0gY3JlYXRlUkdCSW5pdERhdGEoKGdldFdpbmRvd1dpZHRoKCkgLyA0KSwg
KGdldFdpbmRvd0hlaWdodCgpIC8gNCksIDI1NSwgMCwgMCk7ICAgLy8gUmVkCi0KLSAgICAgICAg
Z2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1PZmZzY3JlZW5GcmFtZWJ1ZmZlcik7Ci0gICAgICAgIGds
R2VuVGV4dHVyZXMoMSwgJm1UZXh0dXJlMkQpOwotCi0gICAgICAgIC8vIEluaXRpYWxpemUgdGhl
IHRleHR1cmUyRCB0byBiZSBlbXB0eSwgYW5kIGRvbid0IHVzZSBtaXBzLgotICAgICAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOwotICAgICAgICBnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dI
ZWlnaHQoKSwgMCwgR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRFLCBOVUxMKTsKLSAgICAgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElO
RUFSKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLQotICAgICAgICBBU1NFUlRfRVEoZ2V0V2luZG93V2lk
dGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotCi0gICAgICAgIC8vIENyZWF0ZSBhIG5vbi1taXBw
ZWQgdGV4dHVyZSBjdWJlLiBTZXQgdGhlIG5lZ2F0aXZlLVkgZmFjZSB0byBiZSBibHVlLgotICAg
ICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZUN1YmUpOwotICAgICAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIG1UZXh0dXJlQ3ViZSk7Ci0gICAgICAgIFRleEltYWdl
Q3ViZU1hcEZhY2VzKDAsIEdMX1JHQiwgZ2V0V2luZG93V2lkdGgoKSwgR0xfUkdCLCBHTF9VTlNJ
R05FRF9CWVRFLCBudWxscHRyKTsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VC
RV9NQVBfTkVHQVRJVkVfWSwgMCwgR0xfUkdCLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dX
aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgMCwgR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRF
LCBtTGV2ZWxaZXJvQmx1ZUluaXREYXRhKTsKLQotICAgICAgICAvLyBDb21wbGV0ZSB0aGUgdGV4
dHVyZSBjdWJlIHdpdGhvdXQgbWlwbWFwcyB0byBzdGFydCB3aXRoLgotICAgICAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9O
RUFSRVNUKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIEdM
X1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBnbERlbGV0ZVByb2dyYW0obTJEUHJvZ3JhbSk7Ci0gICAgICAgIGdsRGVsZXRlUHJv
Z3JhbShtQ3ViZVByb2dyYW0pOwotICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbU9m
ZnNjcmVlbkZyYW1lYnVmZmVyKTsKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1
cmUyRCk7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlQ3ViZSk7Ci0KLSAg
ICAgICAgU2FmZURlbGV0ZUFycmF5KG1MZXZlbFplcm9CbHVlSW5pdERhdGEpOwotICAgICAgICBT
YWZlRGVsZXRlQXJyYXkobUxldmVsWmVyb1doaXRlSW5pdERhdGEpOwotICAgICAgICBTYWZlRGVs
ZXRlQXJyYXkobUxldmVsT25lSW5pdERhdGEpOwotICAgICAgICBTYWZlRGVsZXRlQXJyYXkobUxl
dmVsVHdvSW5pdERhdGEpOwotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAgICB9
Ci0KLSAgICBHTHVieXRlICpjcmVhdGVSR0JJbml0RGF0YShHTGludCB3aWR0aCwgR0xpbnQgaGVp
Z2h0LCBHTGludCByLCBHTGludCBnLCBHTGludCBiKQotICAgIHsKLSAgICAgICAgR0x1Ynl0ZSAq
ZGF0YSA9IG5ldyBHTHVieXRlWzMgKiB3aWR0aCAqIGhlaWdodF07Ci0KLSAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCB3aWR0aCAqIGhlaWdodDsgaSs9MSkKLSAgICAgICAgewotICAgICAgICAg
ICAgZGF0YVszICogaSArIDBdID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4ocik7Ci0gICAgICAgICAg
ICBkYXRhWzMgKiBpICsgMV0gPSBzdGF0aWNfY2FzdDxHTHVieXRlPihnKTsKLSAgICAgICAgICAg
IGRhdGFbMyAqIGkgKyAyXSA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+KGIpOwotICAgICAgICB9Ci0K
LSAgICAgICAgcmV0dXJuIGRhdGE7Ci0gICAgfQotCi0gICAgdm9pZCBjbGVhclRleHR1cmVMZXZl
bDAoR0xlbnVtIHRleHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
dGV4dHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHJlZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGdyZWVuLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgYmx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0IGFscGhhKQotICAgIHsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIG1PZmZzY3JlZW5GcmFtZWJ1ZmZlcik7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJl
MkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCB0ZXh0YXJnZXQsIHRleHR1
cmUsIDApOwotICAgICAgICBBU1NFUlRfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRF
LCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLSAgICAgICAgZ2xD
bGVhckNvbG9yKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKLSAgICAgICAgZ2xDbGVhcihHTF9D
T0xPUl9CVUZGRVJfQklUKTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIDApOwotICAgIH0KLQotICAgIEdMdWludCBtMkRQcm9ncmFtOwotICAgIEdMdWludCBtQ3Vi
ZVByb2dyYW07Ci0gICAgR0x1aW50IG1UZXh0dXJlMkQ7Ci0gICAgR0x1aW50IG1UZXh0dXJlQ3Vi
ZTsKLQotICAgIEdMdWJ5dGUqIG1MZXZlbFplcm9CbHVlSW5pdERhdGE7Ci0gICAgR0x1Ynl0ZSog
bUxldmVsWmVyb1doaXRlSW5pdERhdGE7Ci0gICAgR0x1Ynl0ZSogbUxldmVsT25lSW5pdERhdGE7
Ci0gICAgR0x1Ynl0ZSogbUxldmVsVHdvSW5pdERhdGE7Ci0KLSAgcHJpdmF0ZToKLSAgICBHTHVp
bnQgbU9mZnNjcmVlbkZyYW1lYnVmZmVyOwotfTsKLQotY2xhc3MgTWlwbWFwVGVzdEVTMyA6IHB1
YmxpYyBCYXNlTWlwbWFwVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgTWlwbWFwVGVzdEVTMygp
Ci0gICAgICAgIDogbVRleHR1cmUoMCksCi0gICAgICAgICAgbUFycmF5UHJvZ3JhbSgwKSwKLSAg
ICAgICAgICBtVGV4dHVyZUFycmF5U2xpY2VVbmlmb3JtTG9jYXRpb24oLTEpLAotICAgICAgICAg
IG0zRFByb2dyYW0oMCksCi0gICAgICAgICAgbVRleHR1cmUzRFNsaWNlVW5pZm9ybUxvY2F0aW9u
KC0xKSwKLSAgICAgICAgICBtVGV4dHVyZTNETE9EVW5pZm9ybUxvY2F0aW9uKC0xKSwKLSAgICAg
ICAgICBtMkRQcm9ncmFtKDApCi0KLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7
Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRz
KDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0Js
dWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotCi0gICAg
c3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlKCkKLSAgICB7Ci0gICAgICAgIC8vIERvbid0
IHB1dCAiI3ZlcnNpb24gLi4uIiBvbiBpdHMgb3duIGxpbmUuIFNlZSBbY3BwXXAxOgotICAgICAg
ICAvLyAiSWYgdGhlcmUgYXJlIHNlcXVlbmNlcyBvZiBwcmVwcm9jZXNzaW5nIHRva2VucyB3aXRo
aW4gdGhlIGxpc3Qgb2YgYXJndW1lbnRzIHRoYXQKLSAgICAgICAgLy8gIHdvdWxkIG90aGVyd2lz
ZSBhY3QgYXMgcHJlcHJvY2Vzc2luZyBkaXJlY3RpdmVzLCB0aGUgYmVoYXZpb3IgaXMgdW5kZWZp
bmVkIgotICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgICAgIHJldHVybiBTSEFERVJf
U09VUkNFCi0gICAgICAgICggICAjdmVyc2lvbiAzMDAgZXNcbgotICAgICAgICAgICAgcHJlY2lz
aW9uIGhpZ2hwIGZsb2F0OwotICAgICAgICAgICAgaW4gdmVjNCBwb3NpdGlvbjsKLSAgICAgICAg
ICAgIG91dCB2ZWMyIHRleGNvb3JkOwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eSwg
MC4wLCAxLjApOwotICAgICAgICAgICAgICAgIHRleGNvb3JkID0gKHBvc2l0aW9uLnh5ICogMC41
KSArIDAuNTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLSAgICAgICAgLy8gY2xhbmctZm9y
bWF0IG9uCi0gICAgfQotCi0gICAgdm9pZCBzZXRVcEFycmF5UHJvZ3JhbSgpCi0gICAgewotICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZUFycmF5ID0gU0hBREVS
X1NPVVJDRQotICAgICAgICAoICAgI3ZlcnNpb24gMzAwIGVzXG4KLSAgICAgICAgICAgIHByZWNp
c2lvbiBoaWdocCBmbG9hdDsKLSAgICAgICAgICAgIHVuaWZvcm0gaGlnaHAgc2FtcGxlcjJEQXJy
YXkgdGV4OwotICAgICAgICAgICAgdW5pZm9ybSBpbnQgc2xpY2U7Ci0gICAgICAgICAgICBpbiB2
ZWMyIHRleGNvb3JkOwotICAgICAgICAgICAgb3V0IHZlYzQgb3V0X0ZyYWdDb2xvcjsKLQotICAg
ICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRf
RnJhZ0NvbG9yID0gdGV4dHVyZSh0ZXgsIHZlYzModGV4Y29vcmQsIGZsb2F0KHNsaWNlKSkpOwot
ICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIG1BcnJheVByb2dyYW0gPSBDb21w
aWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UoKSwgZnJhZ21lbnRTaGFkZXJTb3VyY2VBcnJh
eSk7Ci0gICAgICAgIGlmIChtQXJyYXlQcm9ncmFtID09IDApCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOwotICAgICAgICB9Ci0K
LSAgICAgICAgbVRleHR1cmVBcnJheVNsaWNlVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3Jt
TG9jYXRpb24obUFycmF5UHJvZ3JhbSwgInNsaWNlIik7Ci0gICAgICAgIEFTU0VSVF9ORSgtMSwg
bVRleHR1cmVBcnJheVNsaWNlVW5pZm9ybUxvY2F0aW9uKTsKLQotICAgICAgICBnbFVzZVByb2dy
YW0obUFycmF5UHJvZ3JhbSk7Ci0gICAgICAgIGdsVXNlUHJvZ3JhbSgwKTsKLSAgICAgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRVcDNEUHJvZ3JhbSgpCi0g
ICAgewotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZTNEID0g
U0hBREVSX1NPVVJDRQotICAgICAgICAoICAgI3ZlcnNpb24gMzAwIGVzXG4KLSAgICAgICAgICAg
IHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSAgICAgICAgICAgIHVuaWZvcm0gaGlnaHAgc2FtcGxl
cjNEIHRleDsKLSAgICAgICAgICAgIHVuaWZvcm0gZmxvYXQgc2xpY2U7Ci0gICAgICAgICAgICB1
bmlmb3JtIGZsb2F0IGxvZDsKLSAgICAgICAgICAgIGluIHZlYzIgdGV4Y29vcmQ7Ci0gICAgICAg
ICAgICBvdXQgdmVjNCBvdXRfRnJhZ0NvbG9yOwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dF9GcmFnQ29sb3IgPSB0ZXh0dXJlTG9k
KHRleCwgdmVjMyh0ZXhjb29yZCwgc2xpY2UpLCBsb2QpOwotICAgICAgICAgICAgfQotICAgICAg
ICApOwotCi0gICAgICAgIG0zRFByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJT
b3VyY2UoKSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UzRCk7Ci0gICAgICAgIGlmIChtM0RQcm9ncmFt
ID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0
aW9uIGZhaWxlZC4iOwotICAgICAgICB9Ci0KLSAgICAgICAgbVRleHR1cmUzRFNsaWNlVW5pZm9y
bUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obTNEUHJvZ3JhbSwgInNsaWNlIik7Ci0g
ICAgICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1cmUzRFNsaWNlVW5pZm9ybUxvY2F0aW9uKTsKLQot
ICAgICAgICBtVGV4dHVyZTNETE9EVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRp
b24obTNEUHJvZ3JhbSwgImxvZCIpOwotICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXh0dXJlM0RM
T0RVbmlmb3JtTG9jYXRpb24pOwotCi0gICAgICAgIGdsVXNlUHJvZ3JhbShtM0RQcm9ncmFtKTsK
LSAgICAgICAgZ2xVbmlmb3JtMWYobVRleHR1cmUzRExPRFVuaWZvcm1Mb2NhdGlvbiwgMCk7Ci0g
ICAgICAgIGdsVXNlUHJvZ3JhbSgwKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0g
ICAgfQotCi0gICAgdm9pZCBzZXRVcDJEUHJvZ3JhbSgpCi0gICAgewotICAgICAgICAvLyBjbGFu
Zy1mb3JtYXQgb2ZmCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291
cmNlMkQgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICggICAjdmVyc2lvbiAzMDAgZXNcbgotICAg
ICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwotICAgICAgICAgICAgdW5pZm9ybSBoaWdo
cCBzYW1wbGVyMkQgdGV4OwotICAgICAgICAgICAgaW4gdmVjMiB0ZXhjb29yZDsKLSAgICAgICAg
ICAgIG91dCB2ZWM0IG91dF9GcmFnQ29sb3I7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0X0ZyYWdDb2xvciA9IHRleHR1cmUodGV4
LCB0ZXhjb29yZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0gICAgICAgIC8vIGNsYW5n
LWZvcm1hdCBvbgotCi0gICAgICAgIG0yRFByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhT
aGFkZXJTb3VyY2UoKSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UyRCk7Ci0gICAgICAgIEFTU0VSVF9O
RSgwdSwgbTJEUHJvZ3JhbSk7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAg
fQotCi0gICAgdm9pZCBzZXRVcEN1YmVQcm9ncmFtKCkKLSAgICB7Ci0gICAgICAgIC8vIEEgdmVy
eSBzaW1wbGUgZnJhZ21lbnQgc2hhZGVyIHRvIHNhbXBsZSBmcm9tIHRoZSBuZWdhdGl2ZS1ZIGZh
Y2Ugb2YgYSB0ZXh0dXJlIGN1YmUuCi0gICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgY3ViZUZTID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoICAg
I3ZlcnNpb24gMzAwIGVzXG4KLSAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0Owot
ICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyQ3ViZSB1VGV4dHVyZTsKLSAgICAgICAgICAgIGlu
IHZlYzIgdGV4Y29vcmQ7Ci0gICAgICAgICAgICBvdXQgdmVjNCBvdXRfRnJhZ0NvbG9yOwotCi0g
ICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91
dF9GcmFnQ29sb3IgPSB0ZXh0dXJlKHVUZXh0dXJlLCB2ZWMzKHRleGNvb3JkLngsIC0xLCB0ZXhj
b29yZC55KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0gICAgICAgIC8vIGNsYW5nLWZv
cm1hdCBvbgotCi0gICAgICAgIG1DdWJlUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNo
YWRlclNvdXJjZSgpLCBjdWJlRlMpOwotICAgICAgICBBU1NFUlRfTkUoMHUsIG1DdWJlUHJvZ3Jh
bSk7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCBT
ZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAg
ICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVRleHR1cmUpOwotICAgICAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLQotICAgICAgICBzZXRVcEFycmF5UHJvZ3JhbSgpOwotICAgICAgICBzZXRVcDNE
UHJvZ3JhbSgpOwotICAgICAgICBzZXRVcDJEUHJvZ3JhbSgpOwotICAgICAgICBzZXRVcEN1YmVQ
cm9ncmFtKCk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZSk7Ci0KLSAgICAgICAgZ2xEZWxl
dGVQcm9ncmFtKG1BcnJheVByb2dyYW0pOwotICAgICAgICBnbERlbGV0ZVByb2dyYW0obTNEUHJv
Z3JhbSk7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtMkRQcm9ncmFtKTsKLSAgICAgICAgZ2xE
ZWxldGVQcm9ncmFtKG1DdWJlUHJvZ3JhbSk7Ci0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93
bigpOwotICAgIH0KLQotICAgIEdMdWludCBtVGV4dHVyZTsKLQotICAgIEdMdWludCBtQXJyYXlQ
cm9ncmFtOwotICAgIEdMaW50IG1UZXh0dXJlQXJyYXlTbGljZVVuaWZvcm1Mb2NhdGlvbjsKLQot
ICAgIEdMdWludCBtM0RQcm9ncmFtOwotICAgIEdMaW50IG1UZXh0dXJlM0RTbGljZVVuaWZvcm1M
b2NhdGlvbjsKLSAgICBHTGludCBtVGV4dHVyZTNETE9EVW5pZm9ybUxvY2F0aW9uOwotCi0gICAg
R0x1aW50IG0yRFByb2dyYW07Ci0KLSAgICBHTHVpbnQgbUN1YmVQcm9ncmFtOwotfTsKLQotLy8g
VGhpcyB0ZXN0IHVzZXMgaW5pdCBkYXRhIGZvciB0aGUgZmlyc3QgdGhyZWUgbGV2ZWxzIG9mIHRo
ZSB0ZXh0dXJlLiBJdCBwYXNzZXMgdGhlIGxldmVsIDAgZGF0YSBpbiwgdGhlbiByZW5kZXJzLCB0
aGVuIGxldmVsIDEsIHRoZW4gcmVuZGVycywgZXRjLgotLy8gVGhpcyBlbnN1cmVzIHRoYXQgcmVu
ZGVyZXJzIHVzaW5nIHRoZSB6ZXJvIExPRCB3b3JrYXJvdW5kIChlLmcuIEQzRDExIEZMOV8zKSBj
b3JyZWN0bHkgcGFzcyBpbml0IGRhdGEgdG8gdGhlIG1pcG1hcHBlZCB0ZXh0dXJlLAotLy8gZXZl
biBpZiB0aGUgdGhlIHplcm8tTE9EIHRleHR1cmUgaXMgY3VycmVudGx5IGluIHVzZS4KLVRFU1Rf
UChNaXBtYXBUZXN0LCBESVNBQkxFRF9UaHJlZUxldmVsc0luaXREYXRhKQotewotICAgIC8vIFBh
c3MgaW4gbGV2ZWwgemVybyBpbml0IGRhdGEuCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBtVGV4dHVyZTJEKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xf
UkdCLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgR0xfUkdCLCBHTF9V
TlNJR05FRF9CWVRFLCBtTGV2ZWxaZXJvQmx1ZUluaXREYXRhKTsKLSAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLQotICAgIC8vIERpc2FibGUgbWlwcy4KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLQotICAgIC8v
IERyYXcgYSBmdWxsLXNpemVkIHF1YWQsIGFuZCBjaGVjayBpdCdzIGJsdWUuCi0gICAgY2xlYXJB
bmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQo
KSk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRX
aW5kb3dIZWlnaHQoKSAvIDIsIEdMQ29sb3I6OmJsdWUpOwotCi0gICAgLy8gRHJhdyBhIGhhbGYt
c2l6ZWQgcXVhZCwgYW5kIGNoZWNrIGl0J3MgYmx1ZS4KLSAgICBjbGVhckFuZERyYXdRdWFkKG0y
RFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIpOwot
ICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93
SGVpZ2h0KCkgLyA0LCBHTENvbG9yOjpibHVlKTsKLQotICAgIC8vIERyYXcgYSBxdWFydGVyLXNp
emVkIHF1YWQsIGFuZCBjaGVjayBpdCdzIGJsdWUuCi0gICAgY2xlYXJBbmREcmF3UXVhZChtMkRQ
cm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0KTsKLSAg
ICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDgsIGdldFdpbmRvd0hl
aWdodCgpIC8gOCwgR0xDb2xvcjo6Ymx1ZSk7Ci0KLSAgICAvLyBDb21wbGV0ZSB0aGUgdGV4dHVy
ZSBieSBpbml0aWFsaXppbmcgdGhlIHJlbWFpbmluZyBsZXZlbHMuCi0gICAgaW50IG4gPSAxOwot
ICAgIHdoaWxlIChnZXRXaW5kb3dXaWR0aCgpIC8gKDFVIDw8IG4pID49IDEpCi0gICAgewotICAg
ICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgbiwgR0xfUkdCLCBnZXRXaW5kb3dXaWR0
aCgpIC8gKDFVIDw8IG4pLCBnZXRXaW5kb3dXaWR0aCgpIC8gKDFVIDw8IG4pLCAwLCBHTF9SR0Is
IEdMX1VOU0lHTkVEX0JZVEUsIE5VTEwpOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LSAgICAgICAgbis9MTsKLSAgICB9Ci0KLSAgICAvLyBQYXNzIGluIGxldmVsIG9uZSBpbml0IGRh
dGEuCi0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQiwgZ2V0V2luZG93
V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMCwgR0xfUkdCLCBHTF9VTlNJR05F
RF9CWVRFLCBtTGV2ZWxPbmVJbml0RGF0YSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0K
LSAgICAvLyBEcmF3IGEgZnVsbC1zaXplZCBxdWFkLCBhbmQgY2hlY2sgaXQncyBibHVlLgotICAg
IGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93
SGVpZ2h0KCkpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8g
MiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENvbG9yOjpibHVlKTsKLQotICAgIC8vIERyYXcg
YSBoYWxmLXNpemVkIHF1YWQsIGFuZCBjaGVjayBpdCdzIGJsdWUuIFdlJ3ZlIG5vdCBlbmFibGVk
IG1pcG1hcHMgeWV0LCBzbyBvdXIgaW5pdCBkYXRhIGZvciBsZXZlbCBvbmUgc2hvdWxkbid0IGJl
IHVzZWQuCi0gICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgp
IC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEo
Z2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgR0xDb2xvcjo6Ymx1
ZSk7Ci0KLSAgICAvLyBFbmFibGUgbWlwbWFwcy4KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1Qp
OwotCi0gICAgLy8gRHJhdyBhIGhhbGYtc2l6ZWQgcXVhZCwgYW5kIGNoZWNrIGl0J3MgZ3JlZW4u
Ci0gICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwg
Z2V0V2luZG93SGVpZ2h0KCkgLyAyKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2lu
ZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgR0xDb2xvcjo6Z3JlZW4pOwot
Ci0gICAgLy8gRHJhdyBhIHF1YXJ0ZXItc2l6ZWQgcXVhZCwgYW5kIGNoZWNrIGl0J3MgYmxhY2ss
IHNpbmNlIHdlJ3ZlIG5vdCBwYXNzZWQgYW55IGluaXQgZGF0YSBmb3IgbGV2ZWwgdHdvLgotICAg
IGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdp
bmRvd0hlaWdodCgpIC8gNCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dp
ZHRoKCkgLyA4LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDgsIEdMQ29sb3I6OmJsYWNrKTsKLQotICAg
IC8vIFBhc3MgaW4gbGV2ZWwgdHdvIGluaXQgZGF0YS4KLSAgICBnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMiwgR0xfUkdCLCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0
KCkgLyA0LCAwLCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUsIG1MZXZlbFR3b0luaXREYXRhKTsK
LSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIERyYXcgYSBmdWxsLXNpemVkIHF1
YWQsIGFuZCBjaGVjayBpdCdzIGJsdWUuCi0gICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFt
LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0gICAgRVhQRUNUX1BJWEVM
X0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIEdM
Q29sb3I6OmJsdWUpOwotCi0gICAgLy8gRHJhdyBhIGhhbGYtc2l6ZWQgcXVhZCwgYW5kIGNoZWNr
IGl0J3MgZ3JlZW4uCi0gICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dX
aWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09M
T1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgR0xDb2xv
cjo6Z3JlZW4pOwotCi0gICAgLy8gRHJhdyBhIHF1YXJ0ZXItc2l6ZWQgcXVhZCwgYW5kIGNoZWNr
IGl0J3MgcmVkLgotICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lk
dGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9S
X0VRKGdldFdpbmRvd1dpZHRoKCkgLyA4LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDgsIEdMQ29sb3I6
OnJlZCk7Ci0KLSAgICAvLyBOb3cgZGlzYWJsZSBtaXBtYXBzIGFnYWluLCBhbmQgcmVuZGVyIG11
bHRpcGxlIHNpemVkIHF1YWRzLiBUaGV5IHNob3VsZCBhbGwgYmUgYmx1ZSwgc2luY2UgbGV2ZWwg
MCBpcyBibHVlLgotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3Jh
bSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgIEVYUEVDVF9QSVhF
TF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBH
TENvbG9yOjpibHVlKTsKLSAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRv
d1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIpOwotICAgIEVYUEVDVF9QSVhFTF9D
T0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCBHTENv
bG9yOjpibHVlKTsKLSAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dp
ZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xP
Ul9FUShnZXRXaW5kb3dXaWR0aCgpIC8gOCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA4LCBHTENvbG9y
OjpibHVlKTsKLQotICAgIC8vIE5vdyByZXNldCBsZXZlbCAwIHRvIHdoaXRlLCBrZWVwaW5nIG1p
cG1hcHMgZGlzYWJsZWQuIFRoZW4sIHJlbmRlciB2YXJpb3VzIHNpemVkIHF1YWRzLiBUaGV5IHNo
b3VsZCBiZSB3aGl0ZS4KLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdC
LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgR0xfUkdCLCBHTF9VTlNJ
R05FRF9CWVRFLCBtTGV2ZWxaZXJvV2hpdGVJbml0RGF0YSk7Ci0gICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Ci0KLSAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRo
KCksIGdldFdpbmRvd0hlaWdodCgpKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2lu
ZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6d2hpdGUpOwot
ICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdl
dFdpbmRvd0hlaWdodCgpIC8gMik7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRv
d1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIEdMQ29sb3I6OndoaXRlKTsKLSAg
ICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRX
aW5kb3dIZWlnaHQoKSAvIDQpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dX
aWR0aCgpIC8gOCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA4LCBHTENvbG9yOjp3aGl0ZSk7Ci0KLSAg
ICAvLyBUaGVuIGVuYWJsZSBtaXBtYXBzIGFnYWluLiBUaGUgcXVhZHMgc2hvdWxkIGJlIHdoaXRl
LCBncmVlbiwgcmVkIHJlc3BlY3RpdmVseS4KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QpOwot
Ci0gICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRX
aW5kb3dIZWlnaHQoKSk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRo
KCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIEdMQ29sb3I6OndoaXRlKTsKLSAgICBjbGVh
ckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dI
ZWlnaHQoKSAvIDIpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgp
IC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCBHTENvbG9yOjpncmVlbik7Ci0gICAgY2xlYXJB
bmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVp
Z2h0KCkgLyA0KTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAv
IDgsIGdldFdpbmRvd0hlaWdodCgpIC8gOCwgR0xDb2xvcjo6cmVkKTsKLX0KLQotLy8gVGhpcyB0
ZXN0IGdlbmVyYXRlcyAoYW5kIHVzZXMpIG1pcG1hcHMgb24gYSB0ZXh0dXJlIHVzaW5nIGluaXQg
ZGF0YS4gRDNEMTEgd2lsbCB1c2UgYSBub24tcmVuZGVyYWJsZSBUZXh0dXJlU3RvcmFnZSBmb3Ig
dGhpcy4KLS8vIFRoZSB0ZXN0IHRoZW4gZGlzYWJsZXMgbWlwcywgcmVuZGVycyB0byBsZXZlbCB6
ZXJvIG9mIHRoZSB0ZXh0dXJlLCBhbmQgcmVlbmFibGVzIG1pcHMgYmVmb3JlIHVzaW5nIHRoZSB0
ZXh0dXJlIGFnYWluLgotLy8gVG8gZG8gdGhpcywgRDNEMTEgaGFzIHRvIGNvbnZlcnQgdGhlIFRl
eHR1cmVTdG9yYWdlIGludG8gYSByZW5kZXJhYmxlIG9uZS4KLS8vIFRoaXMgdGVzdCBlbnN1cmVz
IHRoYXQgdGhlIGNvbnZlcnNpb24gd29ya3MgY29ycmVjdGx5LgotLy8gSW4gcGFydGljdWxhciwg
b24gRDNEMTEgRmVhdHVyZSBMZXZlbCA5XzMgaXQgZW5zdXJlcyB0aGF0IGJvdGggdGhlIHplcm8g
TE9EIHdvcmthcm91bmQgdGV4dHVyZSBBTkQgdGhlICdub3JtYWwnIHRleHR1cmUgYXJlIGNvcGll
ZCBkdXJpbmcgY29udmVyc2lvbi4KLVRFU1RfUChNaXBtYXBUZXN0LCBHZW5lcmF0ZU1pcG1hcEZy
b21Jbml0RGF0YVRoZW5SZW5kZXIpCi17Ci0gICAgLy8gUGFzcyBpbiBpbml0aWFsIGRhdGEgc28g
dGhlIHRleHR1cmUgaXMgYmx1ZS4KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1U
ZXh0dXJlMkQpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0IsIGdl
dFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCBHTF9SR0IsIEdMX1VOU0lHTkVE
X0JZVEUsIG1MZXZlbFplcm9CbHVlSW5pdERhdGEpOwotCi0gICAgLy8gVGhlbiBnZW5lcmF0ZSB0
aGUgbWlwcy4KLSAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfMkQpOwotICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gRW5hYmxlIG1pcG1hcHMuCi0gICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01J
UE1BUF9ORUFSRVNUKTsKLQotICAgIC8vIE5vdyBkcmF3IHRoZSB0ZXh0dXJlIHRvIHZhcmlvdXMg
ZGlmZmVyZW50IHNpemVkIGFyZWFzLgotICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwg
Z2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgIEVYUEVDVF9QSVhFTF9D
T0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENv
bG9yOjpibHVlKTsKLQotICAgIC8vIFVzZSBtaXAgbGV2ZWwgMQotICAgIGNsZWFyQW5kRHJhd1F1
YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8g
Mik7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRX
aW5kb3dIZWlnaHQoKSAvIDQsIEdMQ29sb3I6OmJsdWUpOwotCi0gICAgLy8gVXNlIG1pcCBsZXZl
bCAyCi0gICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8g
NCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0KTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0
V2luZG93V2lkdGgoKSAvIDgsIGdldFdpbmRvd0hlaWdodCgpIC8gOCwgR0xDb2xvcjo6Ymx1ZSk7
Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIERpc2FibGUgbWlwcy4gUmVu
ZGVyIGEgcXVhZCB1c2luZyB0aGUgdGV4dHVyZSBhbmQgZW5zdXJlIGl0J3MgYmx1ZS4KLSAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9O
RUFSRVNUKTsKLSAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRo
KCksIGdldFdpbmRvd0hlaWdodCgpKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2lu
ZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6Ymx1ZSk7Ci0K
LSAgICAvLyBDbGVhciBsZXZlbCAwIG9mIHRoZSB0ZXh0dXJlIHRvIHJlZC4KLSAgICBjbGVhclRl
eHR1cmVMZXZlbDAoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCwgMS4wZiwgMC4wZiwgMC4wZiwg
MS4wZik7Ci0KLSAgICAvLyBSZWVuYWJsZSBtaXBzLCBhbmQgdHJ5IHJlbmRlcmluZyBkaWZmZXJl
bnQtc2l6ZWQgcXVhZHMuCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUKTsKLQotICAgIC8vIExl
dmVsIDAgaXMgbm93IHJlZCwgc28gdGhpcyBzaG91bGQgcmVuZGVyIHJlZC4KLSAgICBjbGVhckFu
ZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgp
KTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdp
bmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6cmVkKTsKLQotICAgIC8vIFVzZSBtaXAgbGV2ZWwg
MSwgYmx1ZS4KLSAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRo
KCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9F
UShnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCBHTENvbG9yOjpi
bHVlKTsKLQotICAgIC8vIFVzZSBtaXAgbGV2ZWwgMiwgYmx1ZS4KLSAgICBjbGVhckFuZERyYXdR
dWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAv
IDQpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gOCwgZ2V0
V2luZG93SGVpZ2h0KCkgLyA4LCBHTENvbG9yOjpibHVlKTsKLX0KLQotLy8gVGhpcyB0ZXN0IGVu
c3VyZXMgdGhhdCBtaXBzIGFyZSBjb3JyZWN0bHkgZ2VuZXJhdGVkIGZyb20gYSByZW5kZXJlZCBp
bWFnZS4KLS8vIEluIHBhcnRpY3VsYXIsIG9uIEQzRDExIEZlYXR1cmUgTGV2ZWwgOV8zLCB0aGUg
Y2xlYXIgY2FsbCB3aWxsIGJlIHBlcmZvcm1lZCBvbiB0aGUgemVyby1sZXZlbCB0ZXh0dXJlLCBy
YXRoZXIgdGhhbiB0aGUgbWlwcGVkIG9uZS4KLS8vIFRoZSB0ZXN0IGVuc3VyZXMgdGhhdCB0aGUg
emVyby1sZXZlbCB0ZXh0dXJlIGlzIGNvcnJlY3RseSBjb3BpZWQgaW50byB0aGUgbWlwcGVkIHRl
eHR1cmUgYmVmb3JlIHRoZSBtaXBtYXBzIGFyZSBnZW5lcmF0ZWQuCi1URVNUX1AoTWlwbWFwVGVz
dCwgR2VuZXJhdGVNaXBtYXBGcm9tUmVuZGVyZWRJbWFnZSkKLXsKLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOwotICAgIC8vIENsZWFyIHRoZSB0ZXh0dXJlIHRv
IGJsdWUuCi0gICAgY2xlYXJUZXh0dXJlTGV2ZWwwKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQs
IDAuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOwotCi0gICAgLy8gVGhlbiBnZW5lcmF0ZSB0aGUgbWlw
cwotICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8yRCk7Ci0gICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICAvLyBFbmFibGUgbWlwcy4KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX05FQVJF
U1QpOwotCi0gICAgLy8gTm93IGRyYXcgdGhlIHRleHR1cmUgdG8gdmFyaW91cyBkaWZmZXJlbnQg
c2l6ZWQgYXJlYXMuCi0gICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dX
aWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdl
dFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIEdMQ29sb3I6OmJsdWUp
OwotCi0gICAgLy8gVXNlIG1pcCBsZXZlbCAxCi0gICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9n
cmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyKTsKLSAgICBF
WFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdo
dCgpIC8gNCwgR0xDb2xvcjo6Ymx1ZSk7Ci0KLSAgICAvLyBVc2UgbWlwIGxldmVsIDIKLSAgICBj
bGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5k
b3dIZWlnaHQoKSAvIDQpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0
aCgpIC8gOCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA4LCBHTENvbG9yOjpibHVlKTsKLX0KLQotLy8g
VGVzdCB0byBlbnN1cmUgdGhhdCByZW5kZXJpbmcgdG8gYSBtaXBtYXBwZWQgdGV4dHVyZSB3b3Jr
cywgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG1pcG1hcHMgYXJlIGVuYWJsZWQgb3Igbm90LgotLy8g
VE9ETzogVGhpcyB0ZXN0IGhpdHMgYSB0ZXh0dXJlIHJlYmluZCBidWcgaW4gdGhlIEQzRDExIHJl
bmRlcmVyLiBGaXggdGhpcy4KLVRFU1RfUChNaXBtYXBUZXN0LCBSZW5kZXJPbnRvTGV2ZWxaZXJv
QWZ0ZXJHZW5lcmF0ZU1pcG1hcCkKLXsKLSAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IEZpZ3VyZSBv
dXQgd2h5IHRoaXMgaXMgYnJva2VuIG9uIEFNRCBPcGVuR0wKLSAgICBpZiAoKElzQU1EKCkgfHwg
SXNJbnRlbCgpKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfT1BFTkdMX0FOR0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgb24gSW50ZWwvQU1EIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7
Ci0KLSAgICAvLyBDbGVhciB0aGUgdGV4dHVyZSB0byBibHVlLgotICAgIGNsZWFyVGV4dHVyZUxl
dmVsMChHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJELCAwLjBmLCAwLjBmLCAxLjBmLCAxLjBmKTsK
LQotICAgIC8vIE5vdywgZHJhdyB0aGUgdGV4dHVyZSB0byBhIHF1YWQgdGhhdCdzIHRoZSBzYW1l
IHNpemUgYXMgdGhlIHRleHR1cmUuIFRoaXMgZHJhd3MgdG8gdGhlIGRlZmF1bHQgZnJhbWVidWZm
ZXIuCi0gICAgLy8gVGhlIHF1YWQgc2hvdWxkIGJlIGJsdWUuCi0gICAgY2xlYXJBbmREcmF3UXVh
ZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0gICAg
RVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWln
aHQoKSAvIDIsIEdMQ29sb3I6OmJsdWUpOwotCi0gICAgLy8gTm93IGdvIGJhY2sgdG8gdGhlIHRl
eHR1cmUsIGFuZCBnZW5lcmF0ZSBtaXBzIG9uIGl0LgotICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xf
VEVYVFVSRV8yRCk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBOb3cgdHJ5
IHJlbmRlcmluZyB0aGUgdGV4dHVyZWQgcXVhZCBhZ2Fpbi4gTm90ZTogd2UndmUgbm90IHRvbGQg
R0wgdG8gdXNlIHRoZSBnZW5lcmF0ZWQgbWlwcy4KLSAgICAvLyBUaGUgcXVhZCBzaG91bGQgYmUg
Ymx1ZS4KLSAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCks
IGdldFdpbmRvd0hlaWdodCgpKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93
V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6Ymx1ZSk7Ci0KLSAg
ICAvLyBOb3cgdGVsbCBHTCB0byB1c2UgdGhlIGdlbmVyYXRlZCBtaXBzLgotICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9N
SVBNQVBfTkVBUkVTVCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBOb3cg
cmVuZGVyIHRoZSB0ZXh0dXJlZCBxdWFkIGFnYWluLiBJdCBzaG91bGQgYmUgc3RpbGwgYmUgYmx1
ZS4KLSAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCksIGdl
dFdpbmRvd0hlaWdodCgpKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lk
dGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6Ymx1ZSk7Ci0KLSAgICAv
LyBOb3cgcmVuZGVyIHRoZSB0ZXh0dXJlZCBxdWFkIHRvIGFuIGFyZWEgc21hbGxlciB0aGFuIHRo
ZSB0ZXh0dXJlIChpLmUuIHRvIGZvcmNlIG1pbmlmaWNhdGlvbikuIFRoaXMgc2hvdWxkIGJlIGJs
dWUuCi0gICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8g
NCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0KTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0
V2luZG93V2lkdGgoKSAvIDgsIGdldFdpbmRvd0hlaWdodCgpIC8gOCwgR0xDb2xvcjo6Ymx1ZSk7
Ci0KLSAgICAvLyBOb3cgY2xlYXIgdGhlIHRleHR1cmUgdG8gZ3JlZW4uIFRoaXMganVzdCBjbGVh
cnMgdGhlIHRvcCBsZXZlbC4gVGhlIGxvd2VyIG1pcHMgc2hvdWxkIHJlbWFpbiBibHVlLgotICAg
IGNsZWFyVGV4dHVyZUxldmVsMChHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJELCAwLjBmLCAxLjBm
LCAwLjBmLCAxLjBmKTsKLQotICAgIC8vIFJlbmRlciBhIHRleHR1cmVkIHF1YWQgZXF1YWwgaW4g
c2l6ZSB0byB0aGUgdGV4dHVyZS4gVGhpcyBzaG91bGQgYmUgZ3JlZW4sIHNpbmNlIHdlIGp1c3Qg
Y2xlYXJlZCBsZXZlbCAwLgotICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2lu
ZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9F
UShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENvbG9yOjpn
cmVlbik7Ci0KLSAgICAvLyBSZW5kZXIgYSBzbWFsbCB0ZXh0dXJlZCBxdWFkLiBUaGlzIGZvcmNl
cyBtaW5pZmljYXRpb24sIHNvIHNob3VsZCByZW5kZXIgYmx1ZSAodGhlIGNvbG9yIG9mIGxldmVs
cyAxKykuCi0gICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgp
IC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0KTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEo
Z2V0V2luZG93V2lkdGgoKSAvIDgsIGdldFdpbmRvd0hlaWdodCgpIC8gOCwgR0xDb2xvcjo6Ymx1
ZSk7Ci0KLSAgICAvLyBEaXNhYmxlIG1pcG1hcHMgYWdhaW4KLSAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOwotICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gUmVuZGVyIGEgdGV4dHVyZWQgcXVhZCBlcXVh
bCBpbiBzaXplIHRvIHRoZSB0ZXh0dXJlLiBUaGlzIHNob3VsZCBiZSBncmVlbiwgdGhlIGNvbG9y
IG9mIGxldmVsIDAgaW4gdGhlIHRleHR1cmUuCi0gICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9n
cmFtLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0gICAgRVhQRUNUX1BJ
WEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIs
IEdMQ29sb3I6OmdyZWVuKTsKLQotICAgIC8vIFJlbmRlciBhIHNtYWxsIHRleHR1cmVkIHF1YWQu
IFRoaXMgd291bGQgZm9yY2UgbWluaWZpY2F0aW9uIGlmIG1pcHMgd2VyZSBlbmFibGVkLCBidXQg
dGhleSdyZSBub3QuIFRoZXJlZm9yZSwgdGhpcyBzaG91bGQgYmUgZ3JlZW4uCi0gICAgY2xlYXJB
bmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVp
Z2h0KCkgLyA0KTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAv
IDgsIGdldFdpbmRvd0hlaWdodCgpIC8gOCwgR0xDb2xvcjo6Z3JlZW4pOwotfQotCi0vLyBUaGlz
IHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBsZXZlbC16ZXJvIHdvcmthcm91bmQgZm9yIFRleHR1cmVD
dWJlcyAob24gRDNEMTEgRmVhdHVyZSBMZXZlbCA5XzMpCi0vLyB3b3JrcyBhcyBleHBlY3RlZC4g
SXQgdGVzdHMgZW5hYmxpbmcvZGlzYWJsaW5nIG1pcG1hcHMsIGdlbmVyYXRpbmcgbWlwbWFwcywg
YW5kIHJlbmRlcmluZyB0byBsZXZlbCB6ZXJvLgotVEVTVF9QKE1pcG1hcFRlc3QsIFRleHR1cmVD
dWJlR2VuZXJhbExldmVsWmVybykKLXsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VC
RV9NQVAsIG1UZXh0dXJlQ3ViZSk7Ci0KLSAgICAvLyBEcmF3LiBTaW5jZSB0aGUgbmVnYXRpdmUt
WSBmYWNlJ3MgaXMgYmx1ZSwgdGhpcyBzaG91bGQgYmUgYmx1ZS4KLSAgICBjbGVhckFuZERyYXdR
dWFkKG1DdWJlUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwot
ICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpibHVlKTsKLQotICAgIC8v
IEdlbmVyYXRlIG1pcG1hcHMsIGFuZCByZW5kZXIuIFRoaXMgc2hvdWxkIGJlIGJsdWUuCi0gICAg
Z2xHZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFX0NVQkVfTUFQKTsKLSAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJf
TUlQTUFQX05FQVJFU1QpOwotICAgIGNsZWFyQW5kRHJhd1F1YWQobUN1YmVQcm9ncmFtLCBnZXRX
aW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9S
X0VRKDAsIDAsIEdMQ29sb3I6OmJsdWUpOwotCi0gICAgLy8gRHJhdyB1c2luZyBhIHNtYWxsZXIg
dmlld3BvcnQgKHRvIGZvcmNlIGEgbG93ZXIgTE9EIG9mIHRoZSB0ZXh0dXJlKS4gVGhpcyBzaG91
bGQgc3RpbGwgYmUgYmx1ZS4KLSAgICBjbGVhckFuZERyYXdRdWFkKG1DdWJlUHJvZ3JhbSwgZ2V0
V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCk7Ci0gICAgRVhQRUNUX1BJ
WEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmJsdWUpOwotCi0gICAgLy8gTm93IGNsZWFyIHRo
ZSBuZWdhdGl2ZS1ZIGZhY2Ugb2YgdGhlIGN1YmUgdG8gcmVkLgotICAgIGNsZWFyVGV4dHVyZUxl
dmVsMChHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ksIG1UZXh0dXJlQ3ViZSwgMS4wZiwg
MC4wZiwgMC4wZiwgMS4wZik7Ci0KLSAgICAvLyBEcmF3IHVzaW5nIGEgZnVsbC1zaXplIHZpZXdw
b3J0LiBUaGlzIHNob3VsZCBiZSByZWQuCi0gICAgY2xlYXJBbmREcmF3UXVhZChtQ3ViZVByb2dy
YW0sIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKLSAgICBFWFBFQ1RfUElY
RUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6cmVkKTsKLQotICAgIC8vIERyYXcgdXNpbmcgYSBx
dWFydGVyLXNpemUgdmlld3BvcnQsIHRvIGZvcmNlIGEgbG93ZXIgTE9ELiBUaGlzIHNob3VsZCBi
ZSAqQkxVRSosIHNpbmNlIHdlIG9ubHkgY2xlYXJlZCBsZXZlbCB6ZXJvCi0gICAgLy8gb2YgdGhl
IG5lZ2F0aXZlLVkgZmFjZSB0byByZWQsIGFuZCBsZWZ0IGl0cyBtaXBtYXBzIGJsdWUuCi0gICAg
Y2xlYXJBbmREcmF3UXVhZChtQ3ViZVByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRX
aW5kb3dIZWlnaHQoKSAvIDQpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENv
bG9yOjpibHVlKTsKLQotICAgIC8vIERpc2FibGUgbWlwbWFwcyBhZ2FpbiwgYW5kIGRyYXcgYSB0
byBhIHF1YXJ0ZXItc2l6ZSB2aWV3cG9ydC4KLSAgICAvLyBTaW5jZSB0aGlzIHNob3VsZCB1c2Ug
bGV2ZWwgemVybyBvZiB0aGUgdGV4dHVyZSwgdGhpcyBzaG91bGQgYmUgKlJFRCouCi0gICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwg
R0xfTkVBUkVTVCk7Ci0gICAgY2xlYXJBbmREcmF3UXVhZChtQ3ViZVByb2dyYW0sIGdldFdpbmRv
d1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQpOwotICAgIEVYUEVDVF9QSVhFTF9D
T0xPUl9FUSgwLCAwLCBHTENvbG9yOjpyZWQpOwotfQotCi0vLyBUaGlzIHRlc3QgZW5zdXJlcyB0
aGF0IHJlbmRlcmluZyB0byBsZXZlbC16ZXJvIG9mIGEgVGV4dHVyZUN1YmUgd29ya3MgYXMgZXhw
ZWN0ZWQuCi1URVNUX1AoTWlwbWFwVGVzdCwgVGV4dHVyZUN1YmVSZW5kZXJUb0xldmVsWmVybykK
LXsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIG1UZXh0dXJlQ3ViZSk7
Ci0KLSAgICAvLyBEcmF3LiBTaW5jZSB0aGUgbmVnYXRpdmUtWSBmYWNlJ3MgaXMgYmx1ZSwgdGhp
cyBzaG91bGQgYmUgYmx1ZS4KLSAgICBjbGVhckFuZERyYXdRdWFkKG1DdWJlUHJvZ3JhbSwgZ2V0
V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xP
Ul9FUSgwLCAwLCBHTENvbG9yOjpibHVlKTsKLQotICAgIC8vIE5vdyBjbGVhciB0aGUgbmVnYXRp
dmUtWSBmYWNlIG9mIHRoZSBjdWJlIHRvIHJlZC4KLSAgICBjbGVhclRleHR1cmVMZXZlbDAoR0xf
VEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZLCBtVGV4dHVyZUN1YmUsIDEuMGYsIDAuMGYsIDAu
MGYsIDEuMGYpOwotCi0gICAgLy8gRHJhdyB1c2luZyBhIGZ1bGwtc2l6ZSB2aWV3cG9ydC4gVGhp
cyBzaG91bGQgYmUgcmVkLgotICAgIGNsZWFyQW5kRHJhd1F1YWQobUN1YmVQcm9ncmFtLCBnZXRX
aW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9S
X0VRKDAsIDAsIEdMQ29sb3I6OnJlZCk7Ci0KLSAgICAvLyBEcmF3IGEgdG8gYSBxdWFydGVyLXNp
emUgdmlld3BvcnQuIFRoaXMgc2hvdWxkIGFsc28gYmUgcmVkLgotICAgIGNsZWFyQW5kRHJhd1F1
YWQobUN1YmVQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkg
LyA0KTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6cmVkKTsKLX0K
LQotLy8gQ3JlYXRlcyBhIG1pcG1hcHBlZCAyRCBhcnJheSB0ZXh0dXJlIHdpdGggdGhyZWUgbGF5
ZXJzLCBhbmQgY2FsbHMgQU5HTEUncyBHZW5lcmF0ZU1pcG1hcC4KLS8vIFRoZW4gdGVzdHMgaWYg
dGhlIG1pcG1hcHMgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBmb3IgYWxsIHRocmVlIGxheWVycy4K
LVRFU1RfUChNaXBtYXBUZXN0RVMzLCBNaXBtYXBzRm9yVGV4dHVyZUFycmF5KQotewotICAgIGlu
dCBweCA9IGdldFdpbmRvd1dpZHRoKCkgLyAyOwotICAgIGludCBweSA9IGdldFdpbmRvd0hlaWdo
dCgpIC8gMjsKLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRF9BUlJBWSwgbVRleHR1
cmUpOwotCi0gICAgZ2xUZXhTdG9yYWdlM0QoR0xfVEVYVFVSRV8yRF9BUlJBWSwgNSwgR0xfUkdC
QTgsIDE2LCAxNiwgMyk7Ci0KLSAgICAvLyBGaWxsIHRoZSBmaXJzdCBsYXllciB3aXRoIHJlZAot
ICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc1JlZCgxNiAqIDE2LCBHTENvbG9yOjpyZWQp
OwotICAgIGdsVGV4U3ViSW1hZ2UzRChHTF9URVhUVVJFXzJEX0FSUkFZLCAwLCAwLCAwLCAwLCAx
NiwgMTYsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgICAg
IHBpeGVsc1JlZC5kYXRhKCkpOwotCi0gICAgLy8gRmlsbCB0aGUgc2Vjb25kIGxheWVyIHdpdGgg
Z3JlZW4KLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNHcmVlbigxNiAqIDE2LCBHTENv
bG9yOjpncmVlbik7Ci0gICAgZ2xUZXhTdWJJbWFnZTNEKEdMX1RFWFRVUkVfMkRfQVJSQVksIDAs
IDAsIDAsIDEsIDE2LCAxNiwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAg
ICAgICAgICAgICAgcGl4ZWxzR3JlZW4uZGF0YSgpKTsKLQotICAgIC8vIEZpbGwgdGhlIHRoaXJk
IGxheWVyIHdpdGggYmx1ZQotICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0JsdWUoMTYg
KiAxNiwgR0xDb2xvcjo6Ymx1ZSk7Ci0gICAgZ2xUZXhTdWJJbWFnZTNEKEdMX1RFWFRVUkVfMkRf
QVJSQVksIDAsIDAsIDAsIDIsIDE2LCAxNiwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwK
LSAgICAgICAgICAgICAgICAgICAgcGl4ZWxzQmx1ZS5kYXRhKCkpOwotCi0gICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkRfQVJSQVksIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElO
RUFSX01JUE1BUF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRF9B
UlJBWSwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotCi0gICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfMkRfQVJSQVkp
OwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFVzZVByb2dyYW0obUFycmF5
UHJvZ3JhbSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIERyYXcgdGhl
IGZpcnN0IHNsaWNlCi0gICAgZ2xVbmlmb3JtMWkobVRleHR1cmVBcnJheVNsaWNlVW5pZm9ybUxv
Y2F0aW9uLCAwKTsKLSAgICBkcmF3UXVhZChtQXJyYXlQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEo
cHgsIHB5LCBHTENvbG9yOjpyZWQpOwotCi0gICAgLy8gRHJhdyB0aGUgc2Vjb25kIHNsaWNlCi0g
ICAgZ2xVbmlmb3JtMWkobVRleHR1cmVBcnJheVNsaWNlVW5pZm9ybUxvY2F0aW9uLCAxKTsKLSAg
ICBkcmF3UXVhZChtQXJyYXlQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEocHgsIHB5LCBHTENvbG9y
OjpncmVlbik7Ci0KLSAgICAvLyBEcmF3IHRoZSB0aGlyZCBzbGljZQotICAgIGdsVW5pZm9ybTFp
KG1UZXh0dXJlQXJyYXlTbGljZVVuaWZvcm1Mb2NhdGlvbiwgMik7Ci0gICAgZHJhd1F1YWQobUFy
cmF5UHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKHB4LCBweSwgR0xDb2xvcjo6Ymx1ZSk7Ci19Ci0K
LS8vIENyZWF0ZSBhIG1pcG1hcHBlZCAyRCBhcnJheSB0ZXh0dXJlIHdpdGggbW9yZSBsYXllcnMg
dGhhbiB3aWR0aCAvIGhlaWdodCwgYW5kIGNhbGwKLS8vIEdlbmVyYXRlTWlwbWFwLgotVEVTVF9Q
KE1pcG1hcFRlc3RFUzMsIE1pcG1hcEZvckRlZXBUZXh0dXJlQXJyYXkpCi17Ci0gICAgaW50IHB4
ID0gZ2V0V2luZG93V2lkdGgoKSAvIDI7Ci0gICAgaW50IHB5ID0gZ2V0V2luZG93SGVpZ2h0KCkg
LyAyOwotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJEX0FSUkFZLCBtVGV4dHVyZSk7
Ci0KLSAgICAvLyBGaWxsIHRoZSB3aG9sZSB0ZXh0dXJlIHdpdGggcmVkLgotICAgIHN0ZDo6dmVj
dG9yPEdMQ29sb3I+IHBpeGVsc1JlZCgyICogMiAqIDQsIEdMQ29sb3I6OnJlZCk7Ci0gICAgZ2xU
ZXhJbWFnZTNEKEdMX1RFWFRVUkVfMkRfQVJSQVksIDAsIEdMX1JHQkE4LCAyLCAyLCA0LCAwLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICBwaXhlbHNSZWQuZGF0
YSgpKTsKLQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJEX0FSUkFZLCBHTF9URVhU
VVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkRfQVJSQVksIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElO
RUFSKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xHZW5lcmF0ZU1pcG1h
cChHTF9URVhUVVJFXzJEX0FSUkFZKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0g
ICAgZ2xVc2VQcm9ncmFtKG1BcnJheVByb2dyYW0pOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICAvLyBEcmF3IHRoZSBmaXJzdCBzbGljZQotICAgIGdsVW5pZm9ybTFpKG1UZXh0
dXJlQXJyYXlTbGljZVVuaWZvcm1Mb2NhdGlvbiwgMCk7Ci0gICAgZHJhd1F1YWQobUFycmF5UHJv
Z3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAg
RVhQRUNUX1BJWEVMX0NPTE9SX0VRKHB4LCBweSwgR0xDb2xvcjo6cmVkKTsKLQotICAgIC8vIERy
YXcgdGhlIGZvdXJ0aCBzbGljZQotICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlQXJyYXlTbGljZVVu
aWZvcm1Mb2NhdGlvbiwgMyk7Ci0gICAgZHJhd1F1YWQobUFycmF5UHJvZ3JhbSwgInBvc2l0aW9u
IiwgMC41Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NP
TE9SX0VRKHB4LCBweSwgR0xDb2xvcjo6cmVkKTsKLX0KLQotLy8gQ3JlYXRlcyBhIG1pcG1hcHBl
ZCAzRCB0ZXh0dXJlIHdpdGggdHdvIGxheWVycywgYW5kIGNhbGxzIEFOR0xFJ3MgR2VuZXJhdGVN
aXBtYXAuCi0vLyBUaGVuIHRlc3RzIGlmIHRoZSBtaXBtYXBzIGFyZSByZW5kZXJlZCBjb3JyZWN0
bHkgZm9yIGFsbCB0d28gbGF5ZXJzLgotVEVTVF9QKE1pcG1hcFRlc3RFUzMsIE1pcG1hcHNGb3JU
ZXh0dXJlM0QpCi17Ci0gICAgaW50IHB4ID0gZ2V0V2luZG93V2lkdGgoKSAvIDI7Ci0gICAgaW50
IHB5ID0gZ2V0V2luZG93SGVpZ2h0KCkgLyAyOwotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzNELCBtVGV4dHVyZSk7Ci0KLSAgICBnbFRleFN0b3JhZ2UzRChHTF9URVhUVVJFXzNELCA1
LCBHTF9SR0JBOCwgMTYsIDE2LCAyKTsKLQotICAgIC8vIEZpbGwgdGhlIGZpcnN0IGxheWVyIHdp
dGggcmVkCi0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzUmVkKDE2ICogMTYsIEdMQ29s
b3I6OnJlZCk7Ci0gICAgZ2xUZXhTdWJJbWFnZTNEKEdMX1RFWFRVUkVfM0QsIDAsIDAsIDAsIDAs
IDE2LCAxNiwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAgICAgICAg
ICAgcGl4ZWxzUmVkLmRhdGEoKSk7Ci0KLSAgICAvLyBGaWxsIHRoZSBzZWNvbmQgbGF5ZXIgd2l0
aCBncmVlbgotICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0dyZWVuKDE2ICogMTYsIEdM
Q29sb3I6OmdyZWVuKTsKLSAgICBnbFRleFN1YkltYWdlM0QoR0xfVEVYVFVSRV8zRCwgMCwgMCwg
MCwgMSwgMTYsIDE2LCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAg
ICAgICAgICBwaXhlbHNHcmVlbi5kYXRhKCkpOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfM0QsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVT
VCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfTUFHX0ZJ
TFRFUiwgR0xfTElORUFSKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xH
ZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFXzNEKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OwotCi0gICAgZ2xVc2VQcm9ncmFtKG0zRFByb2dyYW0pOwotCi0gICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7Ci0KLSAgICAvLyBNaXBtYXAgbGV2ZWwgMAotICAgIC8vIERyYXcgdGhlIGZpcnN0IHNs
aWNlCi0gICAgZ2xVbmlmb3JtMWYobVRleHR1cmUzRExPRFVuaWZvcm1Mb2NhdGlvbiwgMC4pOwot
ICAgIGdsVW5pZm9ybTFmKG1UZXh0dXJlM0RTbGljZVVuaWZvcm1Mb2NhdGlvbiwgMC4yNWYpOwot
ICAgIGRyYXdRdWFkKG0zRFByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShweCwgcHksIEdMQ29sb3I6
OnJlZCk7Ci0KLSAgICAvLyBEcmF3IHRoZSBzZWNvbmQgc2xpY2UKLSAgICBnbFVuaWZvcm0xZiht
VGV4dHVyZTNEU2xpY2VVbmlmb3JtTG9jYXRpb24sIDAuNzVmKTsKLSAgICBkcmF3UXVhZChtM0RQ
cm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAg
ICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEocHgsIHB5LCBHTENvbG9yOjpncmVlbik7Ci0KLSAgICAv
LyBNaXBtYXAgbGV2ZWwgMQotICAgIC8vIFRoZSBzZWNvbmQgbWlwbWFwIHNob3VsZCBvbmx5IGhh
dmUgb25lIHNsaWNlLgotICAgIGdsVW5pZm9ybTFmKG1UZXh0dXJlM0RMT0RVbmlmb3JtTG9jYXRp
b24sIDEuKTsKLSAgICBkcmF3UXVhZChtM0RQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfUElYRUxfTkVBUihweCwgcHksIDEy
NywgMTI3LCAwLCAyNTUsIDEuMCk7Ci0KLSAgICBnbFVuaWZvcm0xZihtVGV4dHVyZTNEU2xpY2VV
bmlmb3JtTG9jYXRpb24sIDAuNzVmKTsKLSAgICBkcmF3UXVhZChtM0RQcm9ncmFtLCAicG9zaXRp
b24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfUElYRUxf
TkVBUihweCwgcHksIDEyNywgMTI3LCAwLCAyNTUsIDEuMCk7Ci19Ci0KLS8vIENyZWF0ZSBhIDJE
IHRleHR1cmUgd2l0aCBsZXZlbHMgMC0yLCBjYWxsIEdlbmVyYXRlTWlwbWFwIHdpdGggYmFzZSBs
ZXZlbCAxIHNvIHRoYXQgbGV2ZWwgMCBzdGF5cwotLy8gdGhlIHNhbWUsIGFuZCB0aGVuIHNhbXBs
ZSBsZXZlbHMgMCBhbmQgMi4KLS8vIEdMRVMgMy4wLjQgc2VjdGlvbiAzLjguMTA6Ci0vLyAiTWlw
bWFwIGdlbmVyYXRpb24gcmVwbGFjZXMgdGV4ZWwgYXJyYXkgbGV2ZWxzIGxldmVsYmFzZSArIDEg
dGhyb3VnaCBxIHdpdGggYXJyYXlzIGRlcml2ZWQgZnJvbQotLy8gdGhlIGxldmVsYmFzZSBhcnJh
eSwgcmVnYXJkbGVzcyBvZiB0aGVpciBwcmV2aW91cyBjb250ZW50cy4gQWxsIG90aGVyIG1pcG1h
cCBhcnJheXMsIGluY2x1ZGluZwotLy8gdGhlIGxldmVsYmFzZSBhcnJheSwgYXJlIGxlZnQgdW5j
aGFuZ2VkIGJ5IHRoaXMgY29tcHV0YXRpb24uIgotVEVTVF9QKE1pcG1hcFRlc3RFUzMsIEdlbmVy
YXRlTWlwbWFwQmFzZUxldmVsKQotewotICAgIGlmIChJc0FNRCgpICYmIElzRGVza3RvcE9wZW5H
TCgpKQotICAgIHsKLSAgICAgICAgLy8gT2JzZXJ2ZWQgaW5jb3JyZWN0IHJlbmRlcmluZyBvbiBB
TUQsIHNhbXBsaW5nIGxldmVsIDIgcmV0dXJucyBibGFjay4KLSAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgb24gQU1EIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUp
OwotCi0gICAgLy8gRmlsbCBsZXZlbCAwIHdpdGggYmx1ZQotICAgIHN0ZDo6dmVjdG9yPEdMQ29s
b3I+IHBpeGVsc0JsdWUoZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgpLCBHTENv
bG9yOjpibHVlKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTgs
IGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCBHTF9SR0JBLAotICAgICAg
ICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHNCbHVlLmRhdGEoKSk7Ci0KLSAgICAv
LyBGaWxsIGxldmVsIDEgd2l0aCByZWQKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNS
ZWQoZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgR0xDb2xvcjo6cmVk
KTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQTgsIGdldFdpbmRv
d1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDAsCi0gICAgICAgICAgICAgICAg
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsc1JlZC5kYXRhKCkpOwotCi0gICAgLy8g
RmlsbCBsZXZlbCAyIHdpdGggZ3JlZW4KLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNH
cmVlbihnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCkgLyAxNiwgR0xDb2xvcjo6
Z3JlZW4pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAyLCBHTF9SR0JBOCwgZ2V0
V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMCwKLSAgICAgICAgICAg
ICAgICAgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzR3JlZW4uZGF0YSgpKTsKLQot
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIs
IEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMSk7Ci0KLSAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFRoZSBibHVlIGxldmVsIDAgc2hvdWxkIGJl
IHVudG91Y2hlZCBieSB0aGlzIHNpbmNlIGJhc2UgbGV2ZWwgaXMgMS4KLSAgICBnbEdlbmVyYXRl
TWlwbWFwKEdMX1RFWFRVUkVfMkQpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICAvLyBEcmF3IHVzaW5nIGxldmVsIDIuIEl0IHNob3VsZCBiZSBzZXQgdG8gcmVkIGJ5IEdlbmVy
YXRlTWlwbWFwLgotICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lk
dGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9S
X0VRKGdldFdpbmRvd1dpZHRoKCkgLyA4LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDgsIEdMQ29sb3I6
OnJlZCk7Ci0KLSAgICBpZiAoSXNOVklESUEoKSAmJiBJc09wZW5HTCgpKQotICAgIHsKLSAgICAg
ICAgLy8gT2JzZXJ2ZWQgaW5jb3JyZWN0IHJlbmRlcmluZyBvbiBOVklESUEsIGxldmVsIHplcm8g
c2VlbXMgdG8gYmUgaW5jb3JyZWN0bHkgYWZmZWN0ZWQgYnkKLSAgICAgICAgLy8gR2VuZXJhdGVN
aXBtYXAuCi0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBwYXJ0aWFsbHkgc2tpcHBlZCBvbiBO
VklESUEgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgLy8gRHJhdyB1c2luZyBsZXZlbCAwLiBJdCBzaG91bGQgc3RpbGwgYmUgYmx1ZS4KLSAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAwKTsK
LSAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCksIGdldFdp
bmRvd0hlaWdodCgpKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgo
KSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6Ymx1ZSk7Ci19Ci0KLS8vIENy
ZWF0ZSBhIGN1YmUgbWFwIHdpdGggbGV2ZWxzIDAtMiwgY2FsbCBHZW5lcmF0ZU1pcG1hcCB3aXRo
IGJhc2UgbGV2ZWwgMSBzbyB0aGF0IGxldmVsIDAgc3RheXMKLS8vIHRoZSBzYW1lLCBhbmQgdGhl
biBzYW1wbGUgbGV2ZWxzIDAgYW5kIDIuCi0vLyBHTEVTIDMuMC40IHNlY3Rpb24gMy44LjEwOgot
Ly8gIk1pcG1hcCBnZW5lcmF0aW9uIHJlcGxhY2VzIHRleGVsIGFycmF5IGxldmVscyBsZXZlbGJh
c2UgKyAxIHRocm91Z2ggcSB3aXRoIGFycmF5cyBkZXJpdmVkIGZyb20KLS8vIHRoZSBsZXZlbGJh
c2UgYXJyYXksIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgcHJldmlvdXMgY29udGVudHMuIEFsbCBvdGhl
ciBtaXBtYXAgYXJyYXlzLCBpbmNsdWRpbmcKLS8vIHRoZSBsZXZlbGJhc2UgYXJyYXksIGFyZSBs
ZWZ0IHVuY2hhbmdlZCBieSB0aGlzIGNvbXB1dGF0aW9uLiIKLVRFU1RfUChNaXBtYXBUZXN0RVMz
LCBHZW5lcmF0ZU1pcG1hcEN1YmVCYXNlTGV2ZWwpCi17Ci0gICAgaWYgKElzQU1EKCkgJiYgSXNE
ZXNrdG9wT3BlbkdMKCkpCi0gICAgewotICAgICAgICAvLyBPYnNlcnZlZCBpbmNvcnJlY3QgcmVu
ZGVyaW5nIG9uIEFNRCwgc2FtcGxpbmcgbGV2ZWwgMiByZXR1cm5zIGJsYWNrLgotICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBBTUQgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX0VRKGdldFdpbmRvd1dpZHRoKCks
IGdldFdpbmRvd0hlaWdodCgpKTsKLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJF
X01BUCwgbVRleHR1cmUpOwotICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0JsdWUoZ2V0
V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd1dpZHRoKCksIEdMQ29sb3I6OmJsdWUpOwotICAgIFRl
eEltYWdlQ3ViZU1hcEZhY2VzKDAsIEdMX1JHQkE4LCBnZXRXaW5kb3dXaWR0aCgpLCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICAgICAgICAgIHBpeGVsc0JsdWUu
ZGF0YSgpKTsKLQotICAgIC8vIEZpbGwgbGV2ZWwgMSB3aXRoIHJlZAotICAgIHN0ZDo6dmVjdG9y
PEdMQ29sb3I+IHBpeGVsc1JlZChnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93V2lkdGgoKSAv
IDQsIEdMQ29sb3I6OnJlZCk7Ci0gICAgVGV4SW1hZ2VDdWJlTWFwRmFjZXMoMSwgR0xfUkdCQTgs
IGdldFdpbmRvd1dpZHRoKCkgLyAyLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIHBpeGVsc1JlZC5kYXRhKCkpOwotCi0gICAgLy8gRmlsbCBsZXZl
bCAyIHdpdGggZ3JlZW4KLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNHcmVlbihnZXRX
aW5kb3dXaWR0aCgpICogZ2V0V2luZG93V2lkdGgoKSAvIDE2LCBHTENvbG9yOjpncmVlbik7Ci0g
ICAgVGV4SW1hZ2VDdWJlTWFwRmFjZXMoMiwgR0xfUkdCQTgsIGdldFdpbmRvd1dpZHRoKCkgLyA0
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICAgICAgICAgIHBp
eGVsc0dyZWVuLmRhdGEoKSk7Ci0KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJF
X01BUCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUKTsK
LSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9NQUdf
RklMVEVSLCBHTF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0NVQkVf
TUFQLCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDEpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICAvLyBUaGUgYmx1ZSBsZXZlbCAwIHNob3VsZCBiZSB1bnRvdWNoZWQgYnkgdGhp
cyBzaW5jZSBiYXNlIGxldmVsIGlzIDEuCi0gICAgZ2xHZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJF
X0NVQkVfTUFQKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gRHJhdyB1
c2luZyBsZXZlbCAyLiBJdCBzaG91bGQgYmUgc2V0IHRvIHJlZCBieSBHZW5lcmF0ZU1pcG1hcC4K
LSAgICBjbGVhckFuZERyYXdRdWFkKG1DdWJlUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDQs
IGdldFdpbmRvd0hlaWdodCgpIC8gNCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdp
bmRvd1dpZHRoKCkgLyA4LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDgsIEdMQ29sb3I6OnJlZCk7Ci0K
LSAgICBpZiAoSXNOVklESUEoKSAmJiBJc09wZW5HTCgpKQotICAgIHsKLSAgICAgICAgLy8gT2Jz
ZXJ2ZWQgaW5jb3JyZWN0IHJlbmRlcmluZyBvbiBOVklESUEsIGxldmVsIHplcm8gc2VlbXMgdG8g
YmUgaW5jb3JyZWN0bHkgYWZmZWN0ZWQgYnkKLSAgICAgICAgLy8gR2VuZXJhdGVNaXBtYXAuCi0g
ICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBwYXJ0aWFsbHkgc2tpcHBlZCBvbiBOVklESUEgT3Bl
bkdMLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRHJh
dyB1c2luZyBsZXZlbCAwLiBJdCBzaG91bGQgc3RpbGwgYmUgYmx1ZS4KLSAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAwKTsKLSAg
ICBjbGVhckFuZERyYXdRdWFkKG1DdWJlUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2lu
ZG93SGVpZ2h0KCkpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgp
IC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENvbG9yOjpibHVlKTsKLX0KLQotLy8gQ3Jl
YXRlIGEgdGV4dHVyZSB3aXRoIGxldmVscyAwLTIsIGNhbGwgR2VuZXJhdGVNaXBtYXAgd2l0aCBt
YXggbGV2ZWwgMSBzbyB0aGF0IGxldmVsIDIgc3RheXMgdGhlCi0vLyBzYW1lLCBhbmQgdGhlbiBz
YW1wbGUgbGV2ZWxzIDEgYW5kIDIuCi0vLyBHTEVTIDMuMC40IHNlY3Rpb24gMy44LjEwOgotLy8g
Ik1pcG1hcCBnZW5lcmF0aW9uIHJlcGxhY2VzIHRleGVsIGFycmF5IGxldmVscyBsZXZlbGJhc2Ug
KyAxIHRocm91Z2ggcSB3aXRoIGFycmF5cyBkZXJpdmVkIGZyb20KLS8vIHRoZSBsZXZlbGJhc2Ug
YXJyYXksIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgcHJldmlvdXMgY29udGVudHMuIEFsbCBvdGhlciBt
aXBtYXAgYXJyYXlzLCBpbmNsdWRpbmcKLS8vIHRoZSBsZXZlbGJhc2UgYXJyYXksIGFyZSBsZWZ0
IHVuY2hhbmdlZCBieSB0aGlzIGNvbXB1dGF0aW9uLiIKLVRFU1RfUChNaXBtYXBUZXN0RVMzLCBH
ZW5lcmF0ZU1pcG1hcE1heExldmVsKQotewotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmUpOwotCi0gICAgLy8gRmlsbCBsZXZlbCAwIHdpdGggYmx1ZQotICAgIHN0ZDo6
dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0JsdWUoZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hl
aWdodCgpLCBHTENvbG9yOjpibHVlKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgR0xfUkdCQTgsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCBHTF9S
R0JBLAotICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHNCbHVlLmRhdGEo
KSk7Ci0KLSAgICAvLyBGaWxsIGxldmVsIDEgd2l0aCByZWQKLSAgICBzdGQ6OnZlY3RvcjxHTENv
bG9yPiBwaXhlbHNSZWQoZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwg
R0xDb2xvcjo6cmVkKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdC
QTgsIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDAsCi0gICAg
ICAgICAgICAgICAgIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsc1JlZC5kYXRhKCkp
OwotCi0gICAgLy8gRmlsbCBsZXZlbCAyIHdpdGggZ3JlZW4KLSAgICBzdGQ6OnZlY3RvcjxHTENv
bG9yPiBwaXhlbHNHcmVlbihnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCkgLyAx
NiwgR0xDb2xvcjo6Z3JlZW4pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAyLCBH
TF9SR0JBOCwgZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMCwK
LSAgICAgICAgICAgICAgICAgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzR3JlZW4u
ZGF0YSgpKTsKLQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01JTl9GSUxURVIsIEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0g
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAx
KTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gVGhlIGdyZWVuIGxldmVs
IDIgc2hvdWxkIGJlIHVudG91Y2hlZCBieSB0aGlzIHNpbmNlIG1heCBsZXZlbCBpcyAxLgotICAg
IGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8yRCk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKLQotICAgIC8vIERyYXcgdXNpbmcgbGV2ZWwgMS4gSXQgc2hvdWxkIGJlIHNldCB0byBi
bHVlIGJ5IEdlbmVyYXRlTWlwbWFwLgotICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwg
Z2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMik7Ci0gICAgRVhQRUNU
X1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAv
IDQsIEdMQ29sb3I6OmJsdWUpOwotCi0gICAgLy8gRHJhdyB1c2luZyBsZXZlbCAyLiBJdCBzaG91
bGQgc3RpbGwgYmUgZ3JlZW4uCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfTUFYX0xFVkVMLCAyKTsKLSAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0s
IGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQpOwotICAgIEVYUEVD
VF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gOCwgZ2V0V2luZG93SGVpZ2h0KCkg
LyA4LCBHTENvbG9yOjpncmVlbik7Ci19Ci0KLS8vIENhbGwgR2VuZXJhdGVNaXBtYXAgd2l0aCBv
dXQtb2YtcmFuZ2UgYmFzZSBsZXZlbC4gVGhlIHNwZWMgaXMgaW50ZXJwcmV0ZWQgc28gdGhhdCBh
biBvdXQtb2YtcmFuZ2UKLS8vIGJhc2UgbGV2ZWwgZG9lcyBub3QgaGF2ZSBhIGNvbG9yLXJlbmRl
cmFibGUvdGV4dHVyZS1maWx0ZXJhYmxlIGludGVybmFsIGZvcm1hdCwgc28gdGhlCi0vLyBHZW5l
cmF0ZU1pcG1hcCBjYWxsIGdlbmVyYXRlcyBJTlZBTElEX09QRVJBVElPTi4gR0xFUyAzLjAuNCBz
ZWN0aW9uIDMuOC4xMDoKLS8vICJJZiB0aGUgbGV2ZWxiYXNlIGFycmF5IHdhcyBub3Qgc3BlY2lm
aWVkIHdpdGggYW4gdW5zaXplZCBpbnRlcm5hbCBmb3JtYXQgZnJvbSB0YWJsZSAzLjMgb3IgYQot
Ly8gc2l6ZWQgaW50ZXJuYWwgZm9ybWF0IHRoYXQgaXMgYm90aCBjb2xvci1yZW5kZXJhYmxlIGFu
ZCB0ZXh0dXJlLWZpbHRlcmFibGUgYWNjb3JkaW5nIHRvIHRhYmxlCi0vLyAzLjEzLCBhbiBJTlZB
TElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQuIgotVEVTVF9QKE1pcG1hcFRlc3RFUzMs
IEdlbmVyYXRlTWlwbWFwQmFzZUxldmVsT3V0T2ZSYW5nZSkKLXsKLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsKLQotICAgIC8vIEZpbGwgbGV2ZWwgMCB3aXRoIGJs
dWUKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNCbHVlKGdldFdpbmRvd1dpZHRoKCkg
KiBnZXRXaW5kb3dIZWlnaHQoKSwgR0xDb2xvcjo6Ymx1ZSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIEdMX1JHQkE4LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWln
aHQoKSwgMCwgR0xfUkdCQSwKLSAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgcGl4
ZWxzQmx1ZS5kYXRhKCkpOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfQkFTRV9MRVZFTCwgMTAwMCk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
LQotICAgIC8vIEV4cGVjdGluZyB0aGUgb3V0LW9mLXJhbmdlIGJhc2UgbGV2ZWwgdG8gYmUgdHJl
YXRlZCBhcyBub3QgY29sb3ItcmVuZGVyYWJsZSBhbmQKLSAgICAvLyB0ZXh0dXJlLWZpbHRlcmFi
bGUuCi0gICAgZ2xHZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFXzJEKTsKLSAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgLy8gRHJhdyB1c2luZyBsZXZlbCAw
LiBJdCBzaG91bGQgc3RpbGwgYmUgYmx1ZS4KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAwKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFS
RVNUKTsKLSAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCks
IGdldFdpbmRvd0hlaWdodCgpKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93
V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6Ymx1ZSk7Ci19Ci0K
LS8vIENhbGwgR2VuZXJhdGVNaXBtYXAgd2l0aCBvdXQtb2YtcmFuZ2UgYmFzZSBsZXZlbCBvbiBh
biBpbW11dGFibGUgdGV4dHVyZS4gVGhlIGJhc2UgbGV2ZWwgc2hvdWxkCi0vLyBiZSBjbGFtcGVk
LCBzbyB0aGUgY2FsbCBkb2Vzbid0IGdlbmVyYXRlIGFuIGVycm9yLgotVEVTVF9QKE1pcG1hcFRl
c3RFUzMsIEdlbmVyYXRlTWlwbWFwQmFzZUxldmVsT3V0T2ZSYW5nZUltbXV0YWJsZVRleHR1cmUp
Ci17Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZSk7Ci0KLSAgICBn
bFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOCwgMSwgMSk7Ci0gICAgZ2xU
ZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VO
U0lHTkVEX0JZVEUsICZHTENvbG9yOjpncmVlbik7Ci0KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAxMDAwKTsKLQotICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotCi0gICAgLy8gVGhpcyBpcyBlc3NlbnRpYWxseSBhIG5vLW9wLCBzaW5j
ZSB0aGUgdGV4dHVyZSBvbmx5IGhhcyBvbmUgbGV2ZWwuCi0gICAgZ2xHZW5lcmF0ZU1pcG1hcChH
TF9URVhUVVJFXzJEKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gVGhl
IG9ubHkgbGV2ZWwgb2YgdGhlIHRleHR1cmUgc2hvdWxkIHN0aWxsIGJlIGdyZWVuLgotICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05F
QVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01B
R19GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwg
Z2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgIEVYUEVDVF9QSVhFTF9D
T0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENv
bG9yOjpncmVlbik7Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0
aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVz
ZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi0vLyBOb3RlOiB3ZSBydW4gdGhlc2UgdGVz
dHMgYWdhaW5zdCA5XzMgb24gV0FSUCBkdWUgdG8gaGFyZHdhcmUgZHJpdmVyIGlzc3VlcyBvbiBX
aW43Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKE1pcG1hcFRlc3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMShFR0xf
RVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9DT1BZX0FOR0xFKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX0QzRDExKEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0ZBU1RfQU5HTEUp
LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzNfV0FSUCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVT
M19PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJQVRFX1RF
U1QoTWlwbWFwVGVzdEVTMywgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVT
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL011bHRpc2FtcGxlQ29tcGF0aWJpbGl0eVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL011bHRpc2FtcGxlQ29tcGF0aWJpbGl0eVRlc3QuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDcwOGVlZWM3ZWYwMTg3ZjgxNmNjNTcz
NzRhNzFmZTFkNmFmYmUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9NdWx0aXNh
bXBsZUNvbXBhdGliaWxpdHlUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwMCArMCwwIEBA
Ci0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCi0vLwotLy8gU3RhdGVDaGFuZ2VUZXN0OgotLy8gICBTcGVjaWZpY2FsbHkgZGVzaWdu
ZWQgZm9yIGFuIEFOR0xFIGltcGxlbWVudGF0aW9uIG9mIEdMLCB0aGVzZSB0ZXN0cyB2YWxpZGF0
ZSB0aGF0Ci0vLyAgIEFOR0xFJ3MgZGlydHkgYml0cyBzeXN0ZW1zIGRvbid0IGdldCBjb25mdXNl
ZCBieSBjZXJ0YWluIHNlcXVlbmNlcyBvZiBzdGF0ZSBjaGFuZ2VzLgotLy8KLQotI2luY2x1ZGUg
InRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0jaW5jbHVkZSAic2hhZGVyX3V0aWxzLmgiCi0KLXVz
aW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17Ci0KLWNvbnN0IEdMaW50IGtXaWR0
aCA9IDY0OwotY29uc3QgR0xpbnQga0hlaWdodCA9IDY0OwotCi0vLyB0ZXN0IGRyYXdpbmcgd2l0
aCBHTF9NVUxUSVNBTVBMRV9FWFQgZW5hYmxlZC9kaXNhYmxlZC4KLWNsYXNzIEVYVE11bHRpc2Ft
cGxlQ29tcGF0aWJpbGl0eVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0KLXByb3RlY3RlZDoK
LSAgICBFWFRNdWx0aXNhbXBsZUNvbXBhdGliaWxpdHlUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNl
dFdpbmRvd1dpZHRoKDY0KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDY0KTsKLSAgICAgICAg
c2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAg
ICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBzdGF0
aWMgY29uc3QgY2hhciogdl9zaGFkZXJfc3RyID0KLSAgICAgICAgICAgICJhdHRyaWJ1dGUgdmVj
NCBhX1Bvc2l0aW9uO1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAg
ICAieyBnbF9Qb3NpdGlvbiA9IGFfUG9zaXRpb247IH0iOwotCi0gICAgICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBmX3NoYWRlcl9zdHIgPQotICAgICAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgotICAgICAgICAgICAgInVuaWZvcm0gdmVjNCBjb2xvcjsiCi0gICAgICAgICAgICAi
dm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSBjb2xvcjsgfSI7Ci0KLSAgICAgICAgbVByb2dy
YW0gPSBDb21waWxlUHJvZ3JhbSh2X3NoYWRlcl9zdHIsIGZfc2hhZGVyX3N0cik7Ci0KLSAgICAg
ICAgR0x1aW50IHBvc2l0aW9uX2xvYyA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJh
X1Bvc2l0aW9uIik7Ci0gICAgICAgIG1Db2xvckxvYyA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Q
cm9ncmFtLCAiY29sb3IiKTsKLQotICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1WQk8pOwotICAg
ICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVkJPKTsKLSAgICAgICAgc3RhdGlj
IGZsb2F0IHZlcnRpY2VzW10gPSB7Ci0gICAgICAgICAgICAxLjBmLCAgMS4wZiwgLTEuMGYsIDEu
MGYsICAtMS4wZiwgLTEuMGYsIC0xLjBmLCAxLjBmLCAtMS4wZiwKLSAgICAgICAgICAgIC0xLjBm
LCAxLjBmLCAtMS4wZiwgLTEuMGYsIC0xLjBmLCAxLjBmLCAgLTEuMGYsIDEuMGYsIDEuMGYsCi0g
ICAgICAgIH07Ci0gICAgICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNpemVvZih2
ZXJ0aWNlcyksIHZlcnRpY2VzLCBHTF9TVEFUSUNfRFJBVyk7Ci0gICAgICAgIGdsRW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkocG9zaXRpb25fbG9jKTsKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2lu
dGVyKHBvc2l0aW9uX2xvYywgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAwKTsKLSAgICB9Ci0K
LSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlQnVm
ZmVycygxLCAmbVZCTyk7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAg
ICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQotICAgIHZvaWQgcHJlcGFyZUZv
ckRyYXcoKQotICAgIHsKLSAgICAgICAgLy8gQ3JlYXRlIGEgc2FtcGxlIGJ1ZmZlci4KLSAgICAg
ICAgR0xzaXplaSBudW1fc2FtcGxlcyA9IDQsIG1heF9zYW1wbGVzID0gMDsKLSAgICAgICAgZ2xH
ZXRJbnRlZ2VydihHTF9NQVhfU0FNUExFUywgJm1heF9zYW1wbGVzKTsKLSAgICAgICAgbnVtX3Nh
bXBsZXMgPSBzdGQ6Om1pbihudW1fc2FtcGxlcywgbWF4X3NhbXBsZXMpOwotCi0gICAgICAgIGds
R2VuUmVuZGVyYnVmZmVycygxLCAmbVNhbXBsZVJCKTsKLSAgICAgICAgZ2xCaW5kUmVuZGVyYnVm
ZmVyKEdMX1JFTkRFUkJVRkZFUiwgbVNhbXBsZVJCKTsKLSAgICAgICAgZ2xSZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIG51bV9zYW1wbGVzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThfT0VTLCBr
V2lkdGgsIGtIZWlnaHQpOwotICAgICAgICBHTGludCBwYXJhbSA9IDA7Ci0gICAgICAgIGdsR2V0
UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0xfUkVOREVSQlVGRkVSLCBHTF9SRU5ERVJCVUZGRVJf
U0FNUExFUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXJhbSk7Ci0gICAg
ICAgIEVYUEVDVF9HRShwYXJhbSwgbnVtX3NhbXBsZXMpOwotCi0gICAgICAgIGdsR2VuRnJhbWVi
dWZmZXJzKDEsICZtU2FtcGxlRkJPKTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIG1TYW1wbGVGQk8pOwotICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JFTkRFUkJVRkZFUiwgbVNhbXBsZVJCKTsKLSAgICAgICAgRVhQRUNU
X0VRKHN0YXRpY19jYXN0PEdMZW51bT4oR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpLAotICAgICAg
ICAgIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotICAgICAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7Ci0KLSAgICAgICAgLy8gQ3JlYXRl
IGFub3RoZXIgRkJPIHRvIHJlc29sdmUgdGhlIG11bHRpc2FtcGxlIGJ1ZmZlciBpbnRvLgotICAg
ICAgICBnbEdlblRleHR1cmVzKDEsICZtUmVzb2x2ZVRleCk7Ci0gICAgICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV8yRCwgbVJlc29sdmVUZXgpOwotICAgICAgICBnbFRleEltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwga1dpZHRoLCBrSGVpZ2h0LCAwLCBHTF9SR0JBLAotICAg
ICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBOVUxMKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwg
R0xfTElORUFSKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLSAg
ICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1SZXNvbHZlRkJPKTsKLSAgICAgICAgZ2xCaW5k
RnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1SZXNvbHZlRkJPKTsKLSAgICAgICAgZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1RFWFRVUkVfMkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVzb2x2ZVRleCwgMCk7
Ci0gICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTGVudW0+KEdMX0ZSQU1FQlVGRkVSX0NP
TVBMRVRFKSwKLSAgICAgICAgICBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZG
RVIpKTsKLQotICAgICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgICAgICBnbFZpZXdw
b3J0KDAsIDAsIGtXaWR0aCwga0hlaWdodCk7Ci0gICAgICAgIGdsQmxlbmRGdW5jKEdMX1NSQ19B
TFBIQSwgR0xfT05FX01JTlVTX1NSQ19BTFBIQSk7Ci0gICAgICAgIGdsRW5hYmxlKEdMX0JMRU5E
KTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1TYW1wbGVGQk8p
OwotICAgICAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7Ci0gICAgICAg
IGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgfQotCi0gICAgdm9pZCBwcmVwYXJl
Rm9yVmVyaWZ5KCkKLSAgICB7Ci0gICAgICAgIC8vIFJlc29sdmUuCi0gICAgICAgIGdsQmluZEZy
YW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVIsIG1TYW1wbGVGQk8pOwotICAgICAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCBtUmVzb2x2ZUZCTyk7Ci0gICAgICAg
IGdsQ2xlYXJDb2xvcigxLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKLSAgICAgICAgZ2xDbGVhcihH
TF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICAgICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAw
LCBrV2lkdGgsIGtIZWlnaHQsIDAsIDAsIGtXaWR0aCwga0hlaWdodCwKLSAgICAgICAgICBHTF9D
T0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfUkVBRF9GUkFNRUJVRkZFUiwgbVJlc29sdmVGQk8pOwotCi0gICAgICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotICAgIH0KLQotICAgIHZvaWQgY2xlYW51cCgpCi0gICAgewotICAgICAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7Ci0gICAgICAgIGdsRGVsZXRlRnJh
bWVidWZmZXJzKDEsICZtUmVzb2x2ZUZCTyk7Ci0gICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJz
KDEsICZtU2FtcGxlRkJPKTsKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVJlc29sdmVU
ZXgpOwotICAgICAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1TYW1wbGVSQik7Ci0KLSAg
ICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICB9Ci0KLSAgICBib29sIGlzQXBwbGlj
YWJsZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZXh0ZW5zaW9uRW5hYmxlZCgiR0xf
RVhUX211bHRpc2FtcGxlX2NvbXBhdGliaWxpdHkiKSAmJgotICAgICAgICAgICAgIGV4dGVuc2lv
bkVuYWJsZWQoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikgJiYKLSAgICAgICAg
ICAgICBleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfcmdiOF9yZ2JhOCIpICYmCi0gICAgICAgICAg
ICAgIUlzQU1EKCk7Ci0gICAgfQotICAgIEdMdWludCBtU2FtcGxlRkJPOwotICAgIEdMdWludCBt
UmVzb2x2ZUZCTzsKLSAgICBHTHVpbnQgbVNhbXBsZVJCOwotICAgIEdMdWludCBtUmVzb2x2ZVRl
eDsKLQotICAgIEdMdWludCBtQ29sb3JMb2M7Ci0gICAgR0x1aW50IG1Qcm9ncmFtOwotICAgIEdM
dWludCBtVkJPOwotfTsKLQotfSAvLwotCi0vLyBUZXN0IHNpbXBsZSBzdGF0ZSB0cmFja2luZwot
VEVTVF9QKEVYVE11bHRpc2FtcGxlQ29tcGF0aWJpbGl0eVRlc3QsIFRlc3RTdGF0ZVRyYWNraW5n
KQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEVY
UEVDVF9UUlVFKGdsSXNFbmFibGVkKEdMX01VTFRJU0FNUExFX0VYVCkpOwotICAgIGdsRGlzYWJs
ZShHTF9NVUxUSVNBTVBMRV9FWFQpOwotICAgIEVYUEVDVF9GQUxTRShnbElzRW5hYmxlZChHTF9N
VUxUSVNBTVBMRV9FWFQpKTsKLSAgICBnbEVuYWJsZShHTF9NVUxUSVNBTVBMRV9FWFQpOwotICAg
IEVYUEVDVF9UUlVFKGdsSXNFbmFibGVkKEdMX01VTFRJU0FNUExFX0VYVCkpOwotCi0gICAgRVhQ
RUNUX0ZBTFNFKGdsSXNFbmFibGVkKEdMX1NBTVBMRV9BTFBIQV9UT19PTkVfRVhUKSk7Ci0gICAg
Z2xFbmFibGUoR0xfU0FNUExFX0FMUEhBX1RPX09ORV9FWFQpOwotICAgIEVYUEVDVF9UUlVFKGds
SXNFbmFibGVkKEdMX1NBTVBMRV9BTFBIQV9UT19PTkVfRVhUKSk7Ci0gICAgZ2xEaXNhYmxlKEdM
X1NBTVBMRV9BTFBIQV9UT19PTkVfRVhUKTsKLSAgICBFWFBFQ1RfRkFMU0UoZ2xJc0VuYWJsZWQo
R0xfU0FNUExFX0FMUEhBX1RPX09ORV9FWFQpKTsKLQotICAgIEVYUEVDVF9FUShzdGF0aWNfY2Fz
dDxHTGVudW0+KEdMX05PX0VSUk9SKSwgZ2xHZXRFcnJvcigpKTsKLX0KLQotLy8gVGVzdCB0aGF0
IGRpc2FibGluZyBHTF9NVUxUSVNBTVBMRV9FWFQgaXMgaGFuZGxlZCBjb3JyZWN0bHkuCi1URVNU
X1AoRVhUTXVsdGlzYW1wbGVDb21wYXRpYmlsaXR5VGVzdCwgRHJhd0FuZFJlc29sdmUpCi17Ci0g
ICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RhdGljIGNv
bnN0IGZsb2F0IGtCbHVlW10gPSB7MC4wZiwgMC4wZiwgMS4wZiwgMS4wZn07Ci0gICAgc3RhdGlj
IGNvbnN0IGZsb2F0IGtHcmVlbltdID0gezAuMGYsIDEuMGYsIDAuMGYsIDEuMGZ9OwotICAgIHN0
YXRpYyBjb25zdCBmbG9hdCBrUmVkW10gPSB7MS4wZiwgMC4wZiwgMC4wZiwgMS4wZn07Ci0KLSAg
ICAvLyBEaWZmZXJlbnQgZHJpdmVycyBzZWVtIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSB3aXRoIHJl
c3BlY3QgdG8gcmVzdWx0aW5nCi0gICAgLy8gdmFsdWVzLiBUaGVzZSBtaWdodCBiZSBkdWUgdG8g
ZGlmZmVyZW50IE1TQUEgc2FtcGxlIGNvdW50cyBjYXVzaW5nCi0gICAgLy8gZGlmZmVyZW50IHNh
bXBsZXMgdG8gaGl0LiAgT3RoZXIgb3B0aW9uIGlzIGRyaXZlciBidWdzLiBKdXN0IHRlc3QgdGhh
dAotICAgIC8vIGRpc2FibGluZyBtdWx0aXNhbXBsZSBjYXVzZXMgYSBkaWZmZXJlbmNlLgotICAg
IHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IHJlc3VsdHNbM107Ci0gICAgY29uc3QgR0xpbnQg
a1Jlc3VsdFNpemUgPSBrV2lkdGggKiBrSGVpZ2h0ICogNDsKLSAgICBmb3IgKGludCBwYXNzID0g
MDsgcGFzcyA8IDM7IHBhc3MrKykKLSAgICB7Ci0gICAgICAgIHByZXBhcmVGb3JEcmF3KCk7Ci0g
ICAgICAgIC8vIEdyZWVuOiBmcm9tIHRvcCByaWdodCB0byBib3R0b20gbGVmdC4KLSAgICAgICAg
Z2xVbmlmb3JtNGZ2KG1Db2xvckxvYywgMSwga0dyZWVuKTsKLSAgICAgICAgZ2xEcmF3QXJyYXlz
KEdMX1RSSUFOR0xFUywgMCwgMyk7Ci0KLSAgICAgICAgLy8gQmx1ZTogZnJvbSB0b3AgbGVmdCB0
byBib3R0b20gcmlnaHQuCi0gICAgICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2MsIDEsIGtCbHVl
KTsKLSAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMywgMyk7Ci0KLSAgICAgICAg
Ly8gUmVkLCB3aXRoIGFuZCB3aXRob3V0IE1TQUE6IGZyb20gYm90dG9tIGxlZnQgdG8gdG9wIHJp
Z2h0LgotICAgICAgICBpZiAocGFzcyA9PSAxKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbERp
c2FibGUoR0xfTVVMVElTQU1QTEVfRVhUKTsKLSAgICAgICAgfQotICAgICAgICBnbFVuaWZvcm00
ZnYobUNvbG9yTG9jLCAxLCBrUmVkKTsKLSAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xF
UywgNiwgMyk7Ci0gICAgICAgIGlmIChwYXNzID09IDEpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGdsRW5hYmxlKEdMX01VTFRJU0FNUExFX0VYVCk7Ci0gICAgICAgIH0KLSAgICAgICAgcHJlcGFy
ZUZvclZlcmlmeSgpOwotICAgICAgICByZXN1bHRzW3Bhc3NdLnJlc2V0KG5ldyB1aW50OF90W2tS
ZXN1bHRTaXplXSk7Ci0gICAgICAgIG1lbXNldChyZXN1bHRzW3Bhc3NdLmdldCgpLCAxMjN1LCBr
UmVzdWx0U2l6ZSk7Ci0gICAgICAgIGdsUmVhZFBpeGVscygwLCAwLCBrV2lkdGgsIGtIZWlnaHQs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgICAgcmVzdWx0c1tw
YXNzXS5nZXQoKSk7Ci0KLSAgICAgICAgY2xlYW51cCgpOwotICAgIH0KLSAgICBFWFBFQ1RfTkUo
MCwgbWVtY21wKHJlc3VsdHNbMF0uZ2V0KCksIHJlc3VsdHNbMV0uZ2V0KCksIGtSZXN1bHRTaXpl
KSk7Ci0gICAgLy8gVmVyaWZ5IHRoYXQgcmVuZGVyaW5nIGlzIGRldGVybWluaXN0aWMsIHNvIHRo
YXQgdGhlIHBhc3MgYWJvdmUgZG9lcyBub3QKLSAgICAvLyBjb21lIGZyb20gbm9uLWRldGVybWlu
aXN0aWMgcmVuZGVyaW5nLgotICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAocmVzdWx0c1swXS5nZXQo
KSwgcmVzdWx0c1syXS5nZXQoKSwga1Jlc3VsdFNpemUpKTsKLX0KLQotLy8gVGVzdCB0aGF0IGVu
YWJsaW5nIEdMX1NBTVBMRV9BTFBIQV9UT19PTkVfRVhUIGFmZmVjdHMgcmVuZGVyaW5nLgotVEVT
VF9QKEVYVE11bHRpc2FtcGxlQ29tcGF0aWJpbGl0eVRlc3QsIERyYXdBbHBoYU9uZUFuZFJlc29s
dmUpCi17Ci0gICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Ly8gU0FNUExFX0FMUEhBX1RPX09ORSBpcyBzcGVjaWZpZWQgdG8gdHJhbnNmb3JtIGFscGhhIHZh
bHVlcyBvZgotICAgIC8vIGNvdmVyZWQgc2FtcGxlcyB0byAxLjAuIEluIG9yZGVyIHRvIGRldGVj
dCBpdCwgd2UgdXNlIG5vbi0xLjAKLSAgICAvLyBhbHBoYS4KLSAgICBzdGF0aWMgY29uc3QgZmxv
YXQga0JsdWVbXSA9IHswLjBmLCAwLjBmLCAxLjBmLCAwLjVmfTsKLSAgICBzdGF0aWMgY29uc3Qg
ZmxvYXQga0dyZWVuW10gPSB7MC4wZiwgMS4wZiwgMC4wZiwgMC41Zn07Ci0gICAgc3RhdGljIGNv
bnN0IGZsb2F0IGtSZWRbXSA9IHsxLjBmLCAwLjBmLCAwLjBmLCAwLjVmfTsKLQotICAgIC8vIERp
ZmZlcmVudCBkcml2ZXJzIHNlZW0gdG8gYmVoYXZlIGRpZmZlcmVudGx5IHdpdGggcmVzcGVjdCB0
byByZXN1bHRpbmcKLSAgICAvLyBhbHBoYSB2YWx1ZS4gVGhlc2UgbWlnaHQgYmUgZHVlIHRvIGRp
ZmZlcmVudCBNU0FBIHNhbXBsZSBjb3VudHMgY2F1c2luZwotICAgIC8vIGRpZmZlcmVudCBzYW1w
bGVzIHRvIGhpdC4gIE90aGVyIG9wdGlvbiBpcyBkcml2ZXIgYnVncy4gVGVzdGluZyBleGFjdCBv
cgotICAgIC8vIGV2ZW4gYXBwcm94aW1hdGUgc2FtcGxlIHZhbHVlcyBpcyBub3QgdGhhdCBlYXN5
LiAgVGh1cywganVzdCB0ZXN0Ci0gICAgLy8gcmVwcmVzZW50YXRpdmUgcG9zaXRpb25zIHdoaWNo
IGhhdmUgZnJhY3Rpb25hbCBwaXhlbHMsIGluc3BlY3RpbmcgdGhhdAotICAgIC8vIG5vcm1hbCBy
ZW5kZXJpbmcgaXMgZGlmZmVyZW50IHRvIFNBTVBMRV9BTFBIQV9UT19PTkUgcmVuZGVyaW5nLgot
ICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IHJlc3VsdHNbM107Ci0gICAgY29uc3QgR0xp
bnQga1Jlc3VsdFNpemUgPSBrV2lkdGggKiBrSGVpZ2h0ICogNDsKLQotICAgIGZvciAoaW50IHBh
c3MgPSAwOyBwYXNzIDwgMzsgKytwYXNzKQotICAgIHsKLSAgICAgICAgcHJlcGFyZUZvckRyYXco
KTsKLSAgICAgICAgaWYgKHBhc3MgPT0gMSkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xFbmFi
bGUoR0xfU0FNUExFX0FMUEhBX1RPX09ORV9FWFQpOwotICAgICAgICB9Ci0gICAgICAgIGdsRW5h
YmxlKEdMX01VTFRJU0FNUExFX0VYVCk7Ci0gICAgICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2Ms
IDEsIGtHcmVlbik7Ci0gICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOwot
Ci0gICAgICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2MsIDEsIGtCbHVlKTsKLSAgICAgICAgZ2xE
cmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMywgMyk7Ci0KLSAgICAgICAgZ2xEaXNhYmxlKEdMX01V
TFRJU0FNUExFX0VYVCk7Ci0gICAgICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2MsIDEsIGtSZWQp
OwotICAgICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCA2LCAzKTsKLQotICAgICAgICBw
cmVwYXJlRm9yVmVyaWZ5KCk7Ci0gICAgICAgIHJlc3VsdHNbcGFzc10ucmVzZXQobmV3IHVpbnQ4
X3Rba1Jlc3VsdFNpemVdKTsKLSAgICAgICAgbWVtc2V0KHJlc3VsdHNbcGFzc10uZ2V0KCksIDEy
M3UsIGtSZXN1bHRTaXplKTsKLSAgICAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIGtXaWR0aCwga0hl
aWdodCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAgIHJlc3VsdHNbcGFz
c10uZ2V0KCkpOwotICAgICAgICBpZiAocGFzcyA9PSAxKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBnbERpc2FibGUoR0xfU0FNUExFX0FMUEhBX1RPX09ORV9FWFQpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgY2xlYW51cCgpOwotICAgIH0KLSAgICBFWFBFQ1RfTkUoMCwgbWVtY21wKHJlc3VsdHNb
MF0uZ2V0KCksIHJlc3VsdHNbMV0uZ2V0KCksIGtSZXN1bHRTaXplKSk7Ci0gICAgLy8gVmVyaWZ5
IHRoYXQgcmVuZGVyaW5nIGlzIGRldGVybWluaXN0aWMsIHNvIHRoYXQgdGhlIHBhc3MgYWJvdmUg
ZG9lcyBub3QKLSAgICAvLyBjb21lIGZyb20gbm9uLWRldGVybWluaXN0aWMgcmVuZGVyaW5nLgot
ICAgIEVYUEVDVF9FUSgwLCBtZW1jbXAocmVzdWx0c1swXS5nZXQoKSwgcmVzdWx0c1syXS5nZXQo
KSwga1Jlc3VsdFNpemUpKTsKLX0KLQotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKEVYVE11bHRp
c2FtcGxlQ29tcGF0aWJpbGl0eVRlc3QsIEVTMl9PUEVOR0woKSwgRVMyX09QRU5HTEVTKCksIEVT
M19PUEVOR0woKSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL09iamVjdEFsbG9jYXRpb25U
ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9PYmpl
Y3RBbGxvY2F0aW9uVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZTU5
ZjdmY2ZjYmNhMmE2YjRhOWY0YjcwN2I5NzU0YTIzZjY3MWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL09iamVjdEFsbG9jYXRpb25UZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDU0ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBPYmplY3RBbGxvY2F0aW9uVGVzdAotLy8gICBUZXN0
cyBmb3Igb2JqZWN0IGFsbG9jYXRpb25zIGFuZCBsaWZldGltZXMuCi0vLwotCi0jaW5jbHVkZSAi
dGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1l
c3BhY2UKLXsKLQotY2xhc3MgT2JqZWN0QWxsb2NhdGlvblRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0
Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBPYmplY3RBbGxvY2F0aW9uVGVzdCgpIHt9Ci19OwotCi0v
LyBUZXN0IHRoYXQgd2UgZG9uJ3QgcmUtYWxsb2NhdGUgYSBib3VuZCBmcmFtZWJ1ZmZlciBJRC4K
LVRFU1RfUChPYmplY3RBbGxvY2F0aW9uVGVzdCwgQmluZEZyYW1lYnVmZmVyQmVmb3JlR2VuKQot
ewotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAxKTsKLSAgICBHTHVpbnQg
ZmJvID0gMDsKLSAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmZmJvKTsKLSAgICBFWFBFQ1RfTkUo
MXUsIGZibyk7Ci0gICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZibyk7Ci0gICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRlc3QgdGhhdCB3ZSBkb24ndCByZS1hbGxvY2F0ZSBh
IGJvdW5kIGZyYW1lYnVmZmVyIElELCBvdGhlciBwYXR0ZXJuLgotVEVTVF9QKE9iamVjdEFsbG9j
YXRpb25UZXN0LCBCaW5kRnJhbWVidWZmZXJBZnRlckdlbikKLXsKLSAgICBHTHVpbnQgZmlyc3RG
Qk8gPSAwOwotICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZmaXJzdEZCTyk7Ci0gICAgZ2xCaW5k
RnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDEpOwotICAgIGdsRGVsZXRlRnJhbWVidWZmZXJz
KDEsICZmaXJzdEZCTyk7Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwg
Mik7Ci0gICAgR0x1aW50IHNlY29uZEZCT3NbMl0gPSB7MH07Ci0gICAgZ2xHZW5GcmFtZWJ1ZmZl
cnMoMiwgc2Vjb25kRkJPcyk7Ci0gICAgRVhQRUNUX05FKDJ1LCBzZWNvbmRGQk9zWzBdKTsKLSAg
ICBFWFBFQ1RfTkUoMnUsIHNlY29uZEZCT3NbMV0pOwotICAgIGdsRGVsZXRlRnJhbWVidWZmZXJz
KDIsIHNlY29uZEZCT3MpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLX0gIC8v
IGFub255bW91cyBuYW1lc3BhY2UKLQotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChPYmplY3RBbGxv
Y2F0aW9uVGVzdCwgRVMzX09QRU5HTCgpLCBFUzNfRDNEMTEoKSk7ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL09jY2x1c2lvblF1ZXJpZXNUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9PY2NsdXNpb25RdWVyaWVzVGVzdC5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMjRmOGJkN2FlZWU3ZDRlMzgzOTE3NzZlYjI1ZTNlNDQ2
OTIyMGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL09jY2x1c2lvblF1ZXJpZXNU
ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2NiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0
IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5j
bHVkZSAic3lzdGVtX3V0aWxzLmgiCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIK
LSNpbmNsdWRlICJyYW5kb21fdXRpbHMuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1j
bGFzcyBPY2NsdXNpb25RdWVyaWVzVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVj
dGVkOgotICAgIE9jY2x1c2lvblF1ZXJpZXNUZXN0KCkgOiBtUHJvZ3JhbSgwKSwgbVJORygxKQot
ICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0V2luZG93SGVp
Z2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZp
Z0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNl
dENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsKLSAg
ICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVz
dDo6U2V0VXAoKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBwYXNzdGhyb3VnaFZTID0g
U0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBhdHRyaWJ1dGUgaGlnaHAgdmVj
NCBwb3NpdGlvbjsKLSAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgcGFzc3Rocm91Z2hQUyA9IFNI
QURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0
OwotICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShwYXNz
dGhyb3VnaFZTLCBwYXNzdGhyb3VnaFBTKTsKLSAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3Jh
bSk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRv
d24oKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVByb2dyYW07Ci0gICAgUk5HIG1STkc7Ci19Owot
Ci1URVNUX1AoT2NjbHVzaW9uUXVlcmllc1Rlc3QsIElzT2NjbHVkZWQpCi17Ci0gICAgaWYgKGdl
dENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX29j
Y2x1c2lvbl9xdWVyeV9ib29sZWFuIikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3Qgc2tpcHBlZCBiZWNhdXNlIEVTMyBvciBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4g
YXJlIG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZ2xEZXB0aE1hc2soR0xfVFJVRSk7Ci0gICAgZ2xD
bGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5D
SUxfQlVGRkVSX0JJVCk7Ci0KLSAgICAvLyBkcmF3IGEgcXVhZCBhdCBkZXB0aCAwLjMKLSAgICBn
bEVuYWJsZShHTF9ERVBUSF9URVNUKTsKLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAg
IGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjNmKTsKLSAgICBnbFVzZVByb2dyYW0o
MCk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIEdMdWludCBxdWVyeSA9IDA7
Ci0gICAgZ2xHZW5RdWVyaWVzRVhUKDEsICZxdWVyeSk7Ci0gICAgZ2xCZWdpblF1ZXJ5RVhUKEdM
X0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQsIHF1ZXJ5KTsKLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwg
InBvc2l0aW9uIiwgMC44Zik7IC8vIHRoaXMgcXVhZCBzaG91bGQgYmUgb2NjbHVkZWQgYnkgZmly
c3QgcXVhZAotICAgIGdsRW5kUXVlcnlFWFQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCk7Ci0K
LSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIHN3YXBCdWZmZXJzKCk7Ci0KLSAgICBH
THVpbnQgcmVhZHkgPSBHTF9GQUxTRTsKLSAgICB3aGlsZSAocmVhZHkgPT0gR0xfRkFMU0UpCi0g
ICAgewotICAgICAgICBhbmdsZTo6U2xlZXAoMCk7Ci0gICAgICAgIGdsR2V0UXVlcnlPYmplY3R1
aXZFWFQocXVlcnksIEdMX1FVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhULCAmcmVhZHkpOwotICAg
IH0KLQotICAgIEdMdWludCByZXN1bHQgPSBHTF9UUlVFOwotICAgIGdsR2V0UXVlcnlPYmplY3R1
aXZFWFQocXVlcnksIEdMX1FVRVJZX1JFU1VMVF9FWFQsICZyZXN1bHQpOwotCi0gICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbERlbGV0ZVF1ZXJpZXNFWFQoMSwgJnF1ZXJ5KTsKLQot
ICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkFMU0UsIHJlc3VsdCk7Ci19Ci0KLVRFU1RfUChPY2Ns
dXNpb25RdWVyaWVzVGVzdCwgSXNOb3RPY2NsdWRlZCkKLXsKLSAgICBpZiAoZ2V0Q2xpZW50TWFq
b3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfb2NjbHVzaW9uX3F1
ZXJ5X2Jvb2xlYW4iKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVk
IGJlY2F1c2UgRVMzIG9yIEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiBhcmUgbm90IGF2
YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBnbERlcHRoTWFzayhHTF9UUlVFKTsKLSAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJf
QklUKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgR0x1aW50IHF1ZXJ5ID0g
MDsKLSAgICBnbEdlblF1ZXJpZXNFWFQoMSwgJnF1ZXJ5KTsKLSAgICBnbEJlZ2luUXVlcnlFWFQo
R0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCwgcXVlcnkpOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFt
LCAicG9zaXRpb24iLCAwLjhmKTsgLy8gdGhpcyBxdWFkIHNob3VsZCBub3QgYmUgb2NjbHVkZWQK
LSAgICBnbEVuZFF1ZXJ5RVhUKEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQpOwotCi0gICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBzd2FwQnVmZmVycygpOwotCi0gICAgR0x1aW50IHJl
c3VsdCA9IEdMX1RSVUU7Ci0gICAgZ2xHZXRRdWVyeU9iamVjdHVpdkVYVChxdWVyeSwgR0xfUVVF
UllfUkVTVUxUX0VYVCwgJnJlc3VsdCk7IC8vIHdpbGwgYmxvY2sgd2FpdGluZyBmb3IgcmVzdWx0
Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsRGVsZXRlUXVlcmllc0VYVCgx
LCAmcXVlcnkpOwotCi0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9UUlVFLCByZXN1bHQpOwotfQot
Ci1URVNUX1AoT2NjbHVzaW9uUXVlcmllc1Rlc3QsIEVycm9ycykKLXsKLSAgICBpZiAoZ2V0Q2xp
ZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfb2NjbHVz
aW9uX3F1ZXJ5X2Jvb2xlYW4iKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBz
a2lwcGVkIGJlY2F1c2UgRVMzIG9yIEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiBhcmUg
bm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBnbERlcHRoTWFzayhHTF9UUlVFKTsKLSAgICBnbENsZWFy
KEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9C
VUZGRVJfQklUKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgR0x1aW50IHF1
ZXJ5ID0gMDsKLSAgICBHTHVpbnQgcXVlcnkyID0gMDsKLSAgICBnbEdlblF1ZXJpZXNFWFQoMSwg
JnF1ZXJ5KTsKLQotICAgIEVYUEVDVF9FUShnbElzUXVlcnlFWFQocXVlcnkpLCBHTF9GQUxTRSk7
Ci0gICAgRVhQRUNUX0VRKGdsSXNRdWVyeUVYVChxdWVyeTIpLCBHTF9GQUxTRSk7Ci0KLSAgICBn
bEJlZ2luUXVlcnlFWFQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCwgMCk7IC8vIGNhbid0IHBh
c3MgMCBhcyBxdWVyeSBpZAotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci0KLSAgICBnbEJlZ2luUXVlcnlFWFQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCwgcXVl
cnkpOwotICAgIGdsQmVnaW5RdWVyeUVYVChHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFU
SVZFX0VYVCwgcXVlcnkyKTsgLy8gY2FuJ3QgaW5pdGlhdGUgYSBxdWVyeSB3aGlsZSBvbmUncyBh
bHJlYWR5IGFjdGl2ZQotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci0KLSAgICBFWFBFQ1RfRVEoZ2xJc1F1ZXJ5RVhUKHF1ZXJ5KSwgR0xfVFJVRSk7Ci0gICAgRVhQ
RUNUX0VRKGdsSXNRdWVyeUVYVChxdWVyeTIpLCBHTF9GQUxTRSk7IC8vIGhhdmUgbm90IGNhbGxl
ZCBiZWdpbgotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuOGYpOyAvLyB0
aGlzIHF1YWQgc2hvdWxkIG5vdCBiZSBvY2NsdWRlZAotICAgIGdsRW5kUXVlcnlFWFQoR0xfQU5Z
X1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQpOyAvLyBubyBhY3RpdmUgcXVlcnkgZm9y
IHRoaXMgdGFyZ2V0Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LSAgICBnbEVuZFF1ZXJ5RVhUKEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQpOwotCi0gICAgZ2xC
ZWdpblF1ZXJ5RVhUKEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhULCBxdWVy
eSk7IC8vIGNhbid0IGJlZ2luIGEgcXVlcnkgYXMgYSBkaWZmZXJlbnQgdHlwZSB0aGFuIHByZXZp
b3VzbHkgdXNlZAotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0K
LSAgICBnbEJlZ2luUXVlcnlFWFQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9F
WFQsIHF1ZXJ5Mik7IC8vIGhhdmUgdG8gY2FsbCBnZW5xdWVyaWVzIGZpcnN0Ci0gICAgRVhQRUNU
X0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLQotICAgIGdsR2VuUXVlcmllc0VYVCgx
LCAmcXVlcnkyKTsKLSAgICBnbEJlZ2luUXVlcnlFWFQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NP
TlNFUlZBVElWRV9FWFQsIHF1ZXJ5Mik7IC8vIHNob3VsZCBiZSBvayBub3cKLSAgICBFWFBFQ1Rf
RVEoZ2xJc1F1ZXJ5RVhUKHF1ZXJ5MiksIEdMX1RSVUUpOwotCi0gICAgZHJhd1F1YWQobVByb2dy
YW0sICJwb3NpdGlvbiIsIDAuM2YpOyAvLyB0aGlzIHNob3VsZCBkcmF3IGluIGZyb250IG9mIG90
aGVyIHF1YWQKLSAgICBnbERlbGV0ZVF1ZXJpZXNFWFQoMSwgJnF1ZXJ5Mik7IC8vIHNob3VsZCBk
ZWxldGUgd2hlbiBxdWVyeSBiZWNvbWVzIGluYWN0aXZlCi0gICAgZ2xFbmRRdWVyeUVYVChHTF9B
TllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFX0VYVCk7IC8vIHNob3VsZCBub3QgaW5jdXIg
ZXJyb3I7IHNob3VsZCBkZWxldGUgcXVlcnkgKyAxIGF0IGVuZCBvZiBleGVjdXRpb24uCi0gICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBzd2FwQnVmZmVycygpOwotCi0gICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICBHTHVpbnQgcmVhZHkgPSBHTF9GQUxTRTsKLSAgICBnbEdl
dFF1ZXJ5T2JqZWN0dWl2RVhUKHF1ZXJ5MiwgR0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9FWFQs
ICZyZWFkeSk7IC8vIHRoaXMgcXVlcnkgaXMgbm93IGRlbGV0ZWQKLSAgICBFWFBFQ1RfR0xfRVJS
T1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19
Ci0KLS8vIFRlc3QgdGhhdCBydW5uaW5nIG11bHRpcGxlIHNpbXVsdGFuZW91cyBxdWVyaWVzIGZy
b20gbXVsdGlwbGUgRUdMIGNvbnRleHRzIHJldHVybnMgdGhlIGNvcnJlY3QKLS8vIHJlc3VsdCBm
b3IgZWFjaCBxdWVyeS4gIEhlbHBzIGV4cG9zZSBidWdzIGluIEFOR0xFJ3MgdmlydHVhbCBjb250
ZXh0cy4KLVRFU1RfUChPY2NsdXNpb25RdWVyaWVzVGVzdCwgTXVsdGlDb250ZXh0KQotewotICAg
IGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdM
X0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0
IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBFUzMgb3IgR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9i
b29sZWFuIGFyZSBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5k
bDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChHZXRQYXJhbSgpID09IEVTMl9E
M0Q5KCkgfHwgR2V0UGFyYW0oKSA9PSBFUzJfRDNEMTEoKSB8fCBHZXRQYXJhbSgpID09IEVTM19E
M0QxMSgpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVz
ZSB0aGUgRDNEIGJhY2tlbmRzIGNhbm5vdCBzdXBwb3J0IHNpbXVsdGFuZW91cyBxdWVyaWVzIG9u
ICIKLSAgICAgICAgICAgICAgICAgICAgICJtdWx0aXBsZSBjb250ZXh0cyB5ZXQuIgotICAgICAg
ICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Z2xEZXB0aE1hc2soR0xfVFJVRSk7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwg
R0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7Ci0KLSAgICAvLyBk
cmF3IGEgcXVhZCBhdCBkZXB0aCAwLjUKLSAgICBnbEVuYWJsZShHTF9ERVBUSF9URVNUKTsKLSAg
ICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFR0xXaW5kb3cg
KndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwotCi0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gd2lu
ZG93LT5nZXREaXNwbGF5KCk7Ci0gICAgRUdMQ29uZmlnIGNvbmZpZyAgID0gd2luZG93LT5nZXRD
b25maWcoKTsKLSAgICBFR0xTdXJmYWNlIHN1cmZhY2UgPSB3aW5kb3ctPmdldFN1cmZhY2UoKTsK
LQotICAgIEVHTGludCBjb250ZXh0QXR0cmlidXRlc1tdID0gewotICAgICAgICBFR0xfQ09OVEVY
VF9NQUpPUl9WRVJTSU9OX0tIUiwKLSAgICAgICAgR2V0UGFyYW0oKS5tYWpvclZlcnNpb24sCi0g
ICAgICAgIEVHTF9DT05URVhUX01JTk9SX1ZFUlNJT05fS0hSLAotICAgICAgICBHZXRQYXJhbSgp
Lm1pbm9yVmVyc2lvbiwKLSAgICAgICAgRUdMX05PTkUsCi0gICAgfTsKLQotICAgIGNvbnN0IHNp
emVfdCBwYXNzQ291bnQgPSA1OwotICAgIHN0cnVjdCBDb250ZXh0SW5mbwotICAgIHsKLSAgICAg
ICAgRUdMQ29udGV4dCBjb250ZXh0OwotICAgICAgICBHTHVpbnQgcHJvZ3JhbTsKLSAgICAgICAg
R0x1aW50IHF1ZXJ5OwotICAgICAgICBib29sIHZpc2libGVQYXNzZXNbcGFzc0NvdW50XTsKLSAg
ICAgICAgYm9vbCBzaG91bGRQYXNzOwotICAgIH07Ci0KLSAgICBDb250ZXh0SW5mbyBjb250ZXh0
c1tdID0gewotICAgICAgICB7Ci0gICAgICAgICAgICBFR0xfTk9fQ09OVEVYVCwgMCwgMCwge2Zh
bHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX0sIGZhbHNlLAotICAgICAgICB9LAotICAg
ICAgICB7Ci0gICAgICAgICAgICBFR0xfTk9fQ09OVEVYVCwgMCwgMCwge2ZhbHNlLCB0cnVlLCBm
YWxzZSwgdHJ1ZSwgZmFsc2V9LCB0cnVlLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAg
ICAgICBFR0xfTk9fQ09OVEVYVCwgMCwgMCwge2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZX0sIGZhbHNlLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICBFR0xfTk9f
Q09OVEVYVCwgMCwgMCwge3RydWUsIHRydWUsIGZhbHNlLCB0cnVlLCB0cnVlfSwgdHJ1ZSwKLSAg
ICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgRUdMX05PX0NPTlRFWFQsIDAsIDAsIHtm
YWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZX0sIHRydWUsCi0gICAgICAgIH0sCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEVHTF9OT19DT05URVhULCAwLCAwLCB7dHJ1ZSwgZmFsc2UsIGZhbHNl
LCB0cnVlLCBmYWxzZX0sIHRydWUsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEVHTF9OT19DT05URVhULCAwLCAwLCB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
fSwgZmFsc2UsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVHTF9OT19DT05U
RVhULCAwLCAwLCB7ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlfSwgZmFsc2UsCi0g
ICAgICAgIH0sCi0gICAgfTsKLQotICAgIGZvciAoYXV0byAmY29udGV4dCA6IGNvbnRleHRzKQot
ICAgIHsKLSAgICAgICAgY29udGV4dC5jb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5
LCBjb25maWcsIEVHTF9OT19DT05URVhULCBjb250ZXh0QXR0cmlidXRlcyk7Ci0gICAgICAgIEFT
U0VSVF9ORShjb250ZXh0LmNvbnRleHQsIEVHTF9OT19DT05URVhUKTsKLQotICAgICAgICBlZ2xN
YWtlQ3VycmVudChkaXNwbGF5LCBzdXJmYWNlLCBzdXJmYWNlLCBjb250ZXh0LmNvbnRleHQpOwot
Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHBhc3N0aHJvdWdoVlMgPSBTSEFERVJfU09VUkNF
Ci0gICAgICAgICgKLSAgICAgICAgICAgIGF0dHJpYnV0ZSBoaWdocCB2ZWM0IHBvc2l0aW9uOwot
ICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQot
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBwYXNzdGhyb3VnaFBTID0gU0hBREVSX1NPVVJDRQot
ICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0gICAgICAgICAg
ICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGdsX0ZyYWdD
b2xvciA9IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
KTsKLQotICAgICAgICBjb250ZXh0LnByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShwYXNzdGhyb3Vn
aFZTLCBwYXNzdGhyb3VnaFBTKTsKLSAgICAgICAgQVNTRVJUX05FKGNvbnRleHQucHJvZ3JhbSwg
MHUpOwotCi0gICAgICAgIGdsRGVwdGhNYXNrKEdMX0ZBTFNFKTsKLSAgICAgICAgZ2xFbmFibGUo
R0xfREVQVEhfVEVTVCk7Ci0KLSAgICAgICAgZ2xHZW5RdWVyaWVzRVhUKDEsICZjb250ZXh0LnF1
ZXJ5KTsKLSAgICAgICAgZ2xCZWdpblF1ZXJ5RVhUKEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQs
IGNvbnRleHQucXVlcnkpOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0K
LQotICAgIGZvciAoc2l6ZV90IHBhc3MgPSAwOyBwYXNzIDwgcGFzc0NvdW50OyBwYXNzKyspCi0g
ICAgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJmNvbnRleHQgOiBjb250ZXh0cykKLSAgICAg
ICAgewotICAgICAgICAgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgc3VyZmFjZSwgc3VyZmFj
ZSwgY29udGV4dC5jb250ZXh0KTsKLQotICAgICAgICAgICAgZmxvYXQgZGVwdGggPSBjb250ZXh0
LnZpc2libGVQYXNzZXNbcGFzc10gPyBtUk5HLnJhbmRvbUZsb2F0QmV0d2VlbigwLjBmLCAwLjRm
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiBtUk5HLnJhbmRvbUZsb2F0QmV0d2VlbigwLjZmLCAxLjBmKTsKLSAgICAgICAgICAgIGRyYXdR
dWFkKGNvbnRleHQucHJvZ3JhbSwgInBvc2l0aW9uIiwgZGVwdGgpOwotCi0gICAgICAgICAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZvciAoY29uc3Qg
YXV0byAmY29udGV4dCA6IGNvbnRleHRzKQotICAgIHsKLSAgICAgICAgZWdsTWFrZUN1cnJlbnQo
ZGlzcGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgY29udGV4dC5jb250ZXh0KTsKLSAgICAgICAgZ2xF
bmRRdWVyeUVYVChHTF9BTllfU0FNUExFU19QQVNTRURfRVhUKTsKLQotICAgICAgICBHTHVpbnQg
cmVzdWx0ID0gR0xfVFJVRTsKLSAgICAgICAgZ2xHZXRRdWVyeU9iamVjdHVpdkVYVChjb250ZXh0
LnF1ZXJ5LCBHTF9RVUVSWV9SRVNVTFRfRVhULCAmcmVzdWx0KTsKLQotICAgICAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKLQotICAgICAgICBHTHVpbnQgZXhwZWN0YXRpb24gPSBjb250ZXh0LnNo
b3VsZFBhc3MgPyBHTF9UUlVFIDogR0xfRkFMU0U7Ci0gICAgICAgIEVYUEVDVF9FUShleHBlY3Rh
dGlvbiwgcmVzdWx0KTsKLSAgICB9Ci0KLSAgICBlZ2xNYWtlQ3VycmVudChkaXNwbGF5LCBzdXJm
YWNlLCBzdXJmYWNlLCB3aW5kb3ctPmdldENvbnRleHQoKSk7Ci0KLSAgICBmb3IgKGF1dG8gJmNv
bnRleHQgOiBjb250ZXh0cykKLSAgICB7Ci0gICAgICAgIGVnbERlc3Ryb3lDb250ZXh0KGRpc3Bs
YXksIGNvbnRleHQuY29udGV4dCk7Ci0gICAgICAgIGNvbnRleHQuY29udGV4dCA9IEVHTF9OT19D
T05URVhUOwotICAgIH0KLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3Vy
YXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRo
ZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1Qo
T2NjbHVzaW9uUXVlcmllc1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCks
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzNfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgIEVTMl9PUEVOR0xFUygpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVz
dHMvUEJPRXh0ZW5zaW9uVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZ2xfdGVzdHMvUEJPRXh0ZW5zaW9uVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGYwYzBiZDM5MzA5NDI0YmY0YzcxODBiNTA4NmU3NjdhZTdkZWI4YjEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BCT0V4dGVuc2lvblRlc3QuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTUzICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FO
R0xFVGVzdC5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLWNsYXNzIFBCT0V4dGVuc2lv
blRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBQQk9FeHRlbnNp
b25UZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDMyKTsKLSAgICAgICAgc2V0
V2luZG93SGVpZ2h0KDMyKTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAg
c2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAg
ICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBT
ZXRVcCgpCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgaWYg
KGV4dGVuc2lvbkVuYWJsZWQoIk5WX3BpeGVsX2J1ZmZlcl9vYmplY3QiKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtUEJPKTsKLSAgICAgICAgICAgIGdsQmluZEJ1
ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZFUiwgbVBCTyk7Ci0gICAgICAgICAgICBnbEJ1ZmZlckRh
dGEoR0xfUElYRUxfUEFDS19CVUZGRVIsIDQgKiBnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93
SGVpZ2h0KCksIE5VTEwsIEdMX1NUQVRJQ19EUkFXKTsKLSAgICAgICAgICAgIGdsQmluZEJ1ZmZl
cihHTF9QSVhFTF9QQUNLX0JVRkZFUiwgMCk7Ci0KLSAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZl
cnRleFNoYWRlclNyYyA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgICAgICgKLSAgICAgICAgICAg
ICAgICBhdHRyaWJ1dGUgdmVjNCBhVGVzdDsKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgdmVj
MiBhUG9zaXRpb247Ci0gICAgICAgICAgICAgICAgdmFyeWluZyB2ZWM0IHZUZXN0OwotCi0gICAg
ICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgIHZUZXN0ID0gYVRlc3Q7Ci0gICAgICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0g
dmVjNChhUG9zaXRpb24sIDAuMCwgMS4wKTsKLSAgICAgICAgICAgICAgICAgICAgZ2xfUG9pbnRT
aXplID0gMS4wOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICk7Ci0KLSAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKmZyYWdtZW50U2hhZGVyU3JjID0gU0hBREVSX1NPVVJDRQotICAgICAg
ICAgICAgKAotICAgICAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAg
ICAgICAgICAgIHZhcnlpbmcgdmVjNCB2VGVzdDsKLQotICAgICAgICAgICAgICAgIHZvaWQgbWFp
bigpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3Ig
PSB2VGVzdDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICApOwotCi0gICAgICAgICAg
ICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNyYywgZnJhZ21lbnRTaGFk
ZXJTcmMpOwotCi0gICAgICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1Qb3NpdGlvblZCTyk7Ci0g
ICAgICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtUG9zaXRpb25WQk8pOwot
ICAgICAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgMTI4LCBOVUxMLCBHTF9E
WU5BTUlDX0RSQVcpOwotICAgICAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwg
MCk7Ci0gICAgICAgIH0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0g
ICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6VGVh
ckRvd24oKTsKLQotICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1QQk8pOwotICAgICAgICBn
bERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotICAgIH0KLQotICAgIEdMdWludCBtUEJPOwotICAg
IEdMdWludCBtUHJvZ3JhbTsKLSAgICBHTHVpbnQgbVBvc2l0aW9uVkJPOwotfTsKLQotVEVTVF9Q
KFBCT0V4dGVuc2lvblRlc3QsIFBCT1dpdGhPdGhlclRhcmdldCkKLXsKLSAgICBpZiAoZXh0ZW5z
aW9uRW5hYmxlZCgiTlZfcGl4ZWxfYnVmZmVyX29iamVjdCIpKQotICAgIHsKLSAgICAgICAgZ2xD
bGVhckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOwotICAgICAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQpOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgICAg
ICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIG1QQk8pOwotICAgICAgICBnbFJl
YWRQaXhlbHMoMCwgMCwgMTYsIDE2LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKLQot
ICAgICAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIDApOwotICAgICAgICBn
bEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtUEJPKTsKLQotICAgICAgICBHTHZvaWQgKm1h
cHBlZFB0ciA9IGdsTWFwQnVmZmVyUmFuZ2VFWFQoR0xfQVJSQVlfQlVGRkVSLCAwLCAzMiwgR0xf
TUFQX1JFQURfQklUKTsKLSAgICAgICAgdW5zaWduZWQgY2hhciAqZGF0YVB0ciA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkIGNoYXIgKj4obWFwcGVkUHRyKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7Ci0KLSAgICAgICAgRVhQRUNUX0VRKDI1NSwgZGF0YVB0clswXSk7Ci0gICAgICAgIEVY
UEVDVF9FUSgwLCAgIGRhdGFQdHJbMV0pOwotICAgICAgICBFWFBFQ1RfRVEoMCwgICBkYXRhUHRy
WzJdKTsKLSAgICAgICAgRVhQRUNUX0VRKDI1NSwgZGF0YVB0clszXSk7Ci0KLSAgICAgICAgZ2xV
bm1hcEJ1ZmZlck9FUyhHTF9BUlJBWV9CVUZGRVIpOwotICAgIH0KLSAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKLX0KLQotVEVTVF9QKFBCT0V4dGVuc2lvblRlc3QsIFBCT1dpdGhFeGlzdGluZ0Rh
dGEpCi17Ci0gICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQoIk5WX3BpeGVsX2J1ZmZlcl9vYmplY3Qi
KSkKLSAgICB7Ci0gICAgICAgIC8vIENsZWFyIGJhY2tidWZmZXIgdG8gcmVkCi0gICAgICAgIGds
Q2xlYXJDb2xvcigxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKLSAgICAgICAgZ2xDbGVhcihHTF9D
T0xPUl9CVUZGRVJfQklUKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAg
ICAgLy8gUmVhZCAxNngxNiByZWdpb24gZnJvbSByZWQgYmFja2J1ZmZlciB0byBQQk8KLSAgICAg
ICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCBtUEJPKTsKLSAgICAgICAgZ2xS
ZWFkUGl4ZWxzKDAsIDAsIDE2LCAxNiwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0K
LSAgICAgICAgLy8gQ2xlYXIgYmFja2J1ZmZlciB0byBncmVlbgotICAgICAgICBnbENsZWFyQ29s
b3IoMC4wZiwgMS4wZiwgMC4wZiwgMS4wZik7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVG
RkVSX0JJVCk7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIC8vIFJl
YWQgMTZ4MTYgcmVnaW9uIGZyb20gZ3JlZW4gYmFja2J1ZmZlciB0byBQQk8gYXQgb2Zmc2V0IDE2
Ci0gICAgICAgIGdsUmVhZFBpeGVscygwLCAwLCAxNiwgMTYsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lkKj4oMTYpKTsKLSAgICAgICAgR0x2b2lkICog
bWFwcGVkUHRyID0gZ2xNYXBCdWZmZXJSYW5nZUVYVChHTF9QSVhFTF9QQUNLX0JVRkZFUiwgMCwg
MzIsIEdMX01BUF9SRUFEX0JJVCk7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgKmRhdGFQdHIgPSBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyICo+KG1hcHBlZFB0cik7Ci0gICAgICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotCi0gICAgICAgIC8vIFRlc3QgcGl4ZWwgMCBpcyByZWQgKGV4aXN0aW5n
IGRhdGEpCi0gICAgICAgIEVYUEVDVF9FUSgyNTUsIGRhdGFQdHJbMF0pOwotICAgICAgICBFWFBF
Q1RfRVEoMCwgZGF0YVB0clsxXSk7Ci0gICAgICAgIEVYUEVDVF9FUSgwLCBkYXRhUHRyWzJdKTsK
LSAgICAgICAgRVhQRUNUX0VRKDI1NSwgZGF0YVB0clszXSk7Ci0KLSAgICAgICAgLy8gVGVzdCBw
aXhlbCAxNiBpcyBncmVlbiAobmV3IGRhdGEpCi0gICAgICAgIEVYUEVDVF9FUSgwLCBkYXRhUHRy
WzE2ICogNCArIDBdKTsKLSAgICAgICAgRVhQRUNUX0VRKDI1NSwgZGF0YVB0clsxNiAqIDQgKyAx
XSk7Ci0gICAgICAgIEVYUEVDVF9FUSgwLCBkYXRhUHRyWzE2ICogNCArIDJdKTsKLSAgICAgICAg
RVhQRUNUX0VRKDI1NSwgZGF0YVB0clsxNiAqIDQgKyAzXSk7Ci0KLSAgICAgICAgZ2xVbm1hcEJ1
ZmZlck9FUyhHTF9QSVhFTF9QQUNLX0JVRkZFUik7Ci0gICAgfQotICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOwotfQotCi0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMg
KGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVz
dHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChQQk9FeHRl
bnNpb25UZXN0LCBFUzJfRDNEMTEoKSwgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09Q
RU5HTEVTKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL1BhY2tVbnBhY2tUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9QYWNrVW5wYWNrVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAzMjUwNGI4MGRmY2VmNDYxZTgzYjk2MTRmMDg0NjhjYTdkNWUwZGIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BhY2tVbnBhY2tUZXN0LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDI2OCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gUGFja1VucGFja1Rlc3Q6Ci0vLyAg
IFRlc3RzIHRoZSBjb3JycmVjdG5lc3Mgb2Ygb3BlbmdsIDQuMSBlbXVsYXRpb24gb2YgcGFjay91
bnBhY2sgYnVpbHQtaW4gZnVuY3Rpb25zLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5H
TEVUZXN0LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17Ci0KLWNs
YXNzIFBhY2tVbnBhY2tUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0g
ICAgUGFja1VucGFja1Rlc3QoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTYpOwot
ICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTYpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgp
OwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVC
aXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotCi0gICAgdm9p
ZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0K
LSAgICAgICAgLy8gVmVydGV4IFNoYWRlciBzb3VyY2UKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgdnMgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICggICAjdmVyc2lvbiAzMDAgZXNcbgotICAg
ICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Ci0gICAgICAgICAgICBpbiB2ZWM0IHBv
c2l0aW9uOwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICk7Ci0KLSAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgICAgICAvLyBGcmFnbWVudCBT
aGFkZXIgc291cmNlCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHNOb3JtRlMgPSBTSEFERVJf
U09VUkNFCi0gICAgICAgICggICAjdmVyc2lvbiAzMDAgZXNcbgotICAgICAgICAgICAgcHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7Ci0gICAgICAgICAgICB1bmlmb3JtIG1lZGl1bXAgdmVjMiB2Owot
ICAgICAgICAgICAgbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29s
b3I7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgdWludCB1ID0gcGFja1Nub3JtMngxNih2KTsKLSAgICAgICAgICAgICAgICB2ZWMyIHIg
PSB1bnBhY2tTbm9ybTJ4MTYodSk7Ci0gICAgICAgICAgICAgICAgZnJhZ0NvbG9yID0gdmVjNChy
LCAwLjAsIDEuMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgLy8gRnJh
Z21lbnQgU2hhZGVyIHNvdXJjZQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB1Tm9ybUZTID0g
U0hBREVSX1NPVVJDRQotICAgICAgICAoICAgI3ZlcnNpb24gMzAwIGVzXG4KLSAgICAgICAgICAg
IHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICAgICAgdW5pZm9ybSBtZWRpdW1wIHZl
YzIgdjsKLSAgICAgICAgICAgIGxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQg
ZnJhZ0NvbG9yOwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIHVpbnQgdSA9IHBhY2tVbm9ybTJ4MTYodik7Ci0gICAgICAgICAgICAgICAg
dmVjMiByID0gdW5wYWNrVW5vcm0yeDE2KHUpOwotICAgICAgICAgICAgICAgIGZyYWdDb2xvciA9
IHZlYzQociwgMC4wLCAxLjApOwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAg
IC8vIEZyYWdtZW50IFNoYWRlciBzb3VyY2UKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgaGFs
ZkZTID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoICAgI3ZlcnNpb24gMzAwIGVzXG4KLSAgICAg
ICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICAgICAgdW5pZm9ybSBtZWRp
dW1wIHZlYzIgdjsKLSAgICAgICAgICAgIGxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1w
IHZlYzQgZnJhZ0NvbG9yOwotCi0gICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgIHVpbnQgdSA9IHBhY2tIYWxmMngxNih2KTsKLSAgICAgICAg
ICAgICAgICAgdmVjMiByID0gdW5wYWNrSGFsZjJ4MTYodSk7Ci0gICAgICAgICAgICAgICAgIGZy
YWdDb2xvciA9IHZlYzQociwgMC4wLCAxLjApOwotICAgICAgICAgICAgIH0KLSAgICAgICAgKTsK
LSAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICAgICAgbVNOb3JtUHJvZ3JhbSA9IENv
bXBpbGVQcm9ncmFtKHZzLCBzTm9ybUZTKTsKLSAgICAgICAgbVVOb3JtUHJvZ3JhbSA9IENvbXBp
bGVQcm9ncmFtKHZzLCB1Tm9ybUZTKTsKLSAgICAgICAgbUhhbGZQcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW0odnMsIGhhbGZGUyk7Ci0gICAgICAgIGlmIChtU05vcm1Qcm9ncmFtID09IDAgfHwgbVVO
b3JtUHJvZ3JhbSA9PSAwIHx8IG1IYWxmUHJvZ3JhbSA9PSAwKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBGQUlMKCkgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1PZmZzY3JlZW5UZXh0dXJlMkQpOwotICAgICAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1PZmZzY3JlZW5UZXh0dXJlMkQpOwotICAg
ICAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SRzMyRiwgZ2V0V2luZG93
V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotCi0gICAgICAgIGdsR2VuRnJhbWVidWZmZXJz
KDEsICZtT2Zmc2NyZWVuRnJhbWVidWZmZXIpOwotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgbU9mZnNjcmVlbkZyYW1lYnVmZmVyKTsKLSAgICAgICAgZ2xGcmFtZWJ1
ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RF
WFRVUkVfMkQsIG1PZmZzY3JlZW5UZXh0dXJlMkQsIDApOwotCi0gICAgICAgIGdsVmlld3BvcnQo
MCwgMCwgMTYsIDE2KTsKLQotICAgICAgICBjb25zdCBHTGZsb2F0IGNvbG9yW10gPSB7IDEuMGYs
IDEuMGYsIDAuMGYsIDEuMGYgfTsKLSAgICAgICAgZ2xDbGVhckJ1ZmZlcmZ2KEdMX0NPTE9SLCAw
LCBjb2xvcik7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtT2Zmc2NyZWVuVGV4dHVyZTJEKTsKLSAgICAg
ICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1PZmZzY3JlZW5GcmFtZWJ1ZmZlcik7Ci0gICAg
ICAgIGdsRGVsZXRlUHJvZ3JhbShtU05vcm1Qcm9ncmFtKTsKLSAgICAgICAgZ2xEZWxldGVQcm9n
cmFtKG1VTm9ybVByb2dyYW0pOwotICAgICAgICBnbERlbGV0ZVByb2dyYW0obUhhbGZQcm9ncmFt
KTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgdm9pZCBj
b21wYXJlQmVmb3JlQWZ0ZXIoR0x1aW50IHByb2dyYW0sIGZsb2F0IGlucHV0MSwgZmxvYXQgaW5w
dXQyKQotICAgIHsKLSAgICAgICAgY29tcGFyZUJlZm9yZUFmdGVyKHByb2dyYW0sIGlucHV0MSwg
aW5wdXQyLCBpbnB1dDEsIGlucHV0Mik7Ci0gICAgfQotCi0gICAgdm9pZCBjb21wYXJlQmVmb3Jl
QWZ0ZXIoR0x1aW50IHByb2dyYW0sIGZsb2F0IGlucHV0MSwgZmxvYXQgaW5wdXQyLCBmbG9hdCBl
eHBlY3QxLCBmbG9hdCBleHBlY3QyKQotICAgIHsKLSAgICAgICAgR0xpbnQgdmVjMkxvY2F0aW9u
ID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInYiKTsKLQotICAgICAgICBnbFVzZVBy
b2dyYW0ocHJvZ3JhbSk7Ci0gICAgICAgIGdsVW5pZm9ybTJmKHZlYzJMb2NhdGlvbiwgaW5wdXQx
LCBpbnB1dDIpOwotCi0gICAgICAgIGRyYXdRdWFkKHByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYp
OwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIEdMZmxvYXQgcFsy
XSA9IHsgMCB9OwotICAgICAgICBnbFJlYWRQaXhlbHMoOCwgOCwgMSwgMSwgR0xfUkcsIEdMX0ZM
T0FULCBwKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBzdGF0
aWMgY29uc3QgZG91YmxlIGVwc2lsb24gPSAwLjAwMDU7Ci0gICAgICAgIEVYUEVDVF9ORUFSKHBb
MF0sIGV4cGVjdDEsIGVwc2lsb24pOwotICAgICAgICBFWFBFQ1RfTkVBUihwWzFdLCBleHBlY3Qy
LCBlcHNpbG9uKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVNOb3JtUHJvZ3JhbTsKLSAgICBHTHVp
bnQgbVVOb3JtUHJvZ3JhbTsKLSAgICBHTHVpbnQgbUhhbGZQcm9ncmFtOwotICAgIEdMdWludCBt
T2Zmc2NyZWVuRnJhbWVidWZmZXI7Ci0gICAgR0x1aW50IG1PZmZzY3JlZW5UZXh0dXJlMkQ7Ci19
OwotCi0vLyBUZXN0IHRoZSBjb3JyZWN0bmVzcyBvZiBwYWNrU25vcm0yeDE2IGFuZCB1bnBhY2tT
bm9ybTJ4MTYgZnVuY3Rpb25zIGNhbGN1bGF0aW5nIG5vcm1hbCBmbG9hdGluZyBudW1iZXJzLgot
VEVTVF9QKFBhY2tVbnBhY2tUZXN0LCBQYWNrVW5wYWNrU25vcm1Ob3JtYWwpCi17Ci0gICAgLy8g
RXhwZWN0IHRoZSBzaGFkZXIgdG8gb3V0cHV0IHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBpbnB1dAot
ICAgIGNvbXBhcmVCZWZvcmVBZnRlcihtU05vcm1Qcm9ncmFtLCAwLjVmLCAtMC4yZik7Ci0gICAg
Y29tcGFyZUJlZm9yZUFmdGVyKG1TTm9ybVByb2dyYW0sIC0wLjM1ZiwgMC43NWYpOwotICAgIGNv
bXBhcmVCZWZvcmVBZnRlcihtU05vcm1Qcm9ncmFtLCAwLjAwMzkyZiwgLTAuOTkyMTVmKTsKLSAg
ICBjb21wYXJlQmVmb3JlQWZ0ZXIobVNOb3JtUHJvZ3JhbSwgMS4wZiwgLTAuMDAzOTJmKTsKLX0K
LQotLy8gVGVzdCB0aGUgY29ycmVjdG5lc3Mgb2YgcGFja1Nub3JtMngxNiBhbmQgdW5wYWNrU25v
cm0yeDE2IGZ1bmN0aW9ucyBjYWxjdWxhdGluZyBub3JtYWwgZmxvYXRpbmcKLS8vIG51bWJlcnMu
Ci1URVNUX1AoUGFja1VucGFja1Rlc3QsIFBhY2tVbnBhY2tVbm9ybU5vcm1hbCkKLXsKLSAgICAv
LyBFeHBlY3QgdGhlIHNoYWRlciB0byBvdXRwdXQgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIGlucHV0
Ci0gICAgY29tcGFyZUJlZm9yZUFmdGVyKG1VTm9ybVByb2dyYW0sIDAuNWYsIDAuMmYsIDAuNWYs
IDAuMmYpOwotICAgIGNvbXBhcmVCZWZvcmVBZnRlcihtVU5vcm1Qcm9ncmFtLCAwLjM1ZiwgMC43
NWYsIDAuMzVmLCAwLjc1Zik7Ci0gICAgY29tcGFyZUJlZm9yZUFmdGVyKG1VTm9ybVByb2dyYW0s
IDAuMDAzOTJmLCAwLjk5MjE1ZiwgMC4wMDM5MmYsIDAuOTkyMTVmKTsKLSAgICBjb21wYXJlQmVm
b3JlQWZ0ZXIobVVOb3JtUHJvZ3JhbSwgMS4wZiwgMC4wMDM5MmYsIDEuMGYsIDAuMDAzOTJmKTsK
LX0KLQotLy8gVGVzdCB0aGUgY29ycmVjdG5lc3Mgb2YgcGFja0hhbGYyeDE2IGFuZCB1bnBhY2tI
YWxmMngxNiBmdW5jdGlvbnMgY2FsY3VsYXRpbmcgbm9ybWFsIGZsb2F0aW5nIG51bWJlcnMuCi1U
RVNUX1AoUGFja1VucGFja1Rlc3QsIFBhY2tVbnBhY2tIYWxmTm9ybWFsKQotewotICAgIC8vIFRP
RE8oY3dhbGxleikgZmlndXJlIG91dCB3aHkgaXQgaXMgYnJva2VuIG9uIEludGVsIG9uIE1hYwot
I2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQVBQTEUpCi0gICAgaWYgKElzSW50ZWwoKSAmJiBn
ZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FO
R0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwg
b24gTWFjLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0K
LSAgICAvLyBFeHBlY3QgdGhlIHNoYWRlciB0byBvdXRwdXQgdGhlIHNhbWUgdmFsdWUgYXMgdGhl
IGlucHV0Ci0gICAgY29tcGFyZUJlZm9yZUFmdGVyKG1IYWxmUHJvZ3JhbSwgMC41ZiwgLTAuMmYp
OwotICAgIGNvbXBhcmVCZWZvcmVBZnRlcihtSGFsZlByb2dyYW0sIC0wLjM1ZiwgMC43NWYpOwot
ICAgIGNvbXBhcmVCZWZvcmVBZnRlcihtSGFsZlByb2dyYW0sIDAuMDAzOTJmLCAtMC45OTIxNWYp
OwotICAgIGNvbXBhcmVCZWZvcmVBZnRlcihtSGFsZlByb2dyYW0sIDEuMGYsIC0wLjAwMzkyZik7
Ci19Ci0KLS8vIFRlc3QgdGhlIGNvcnJlY3RuZXNzIG9mIHBhY2tTbm9ybTJ4MTYgYW5kIHVucGFj
a1Nub3JtMngxNiBmdW5jdGlvbnMgY2FsY3VsYXRpbmcgc3Vibm9ybWFsIGZsb2F0aW5nIG51bWJl
cnMuCi1URVNUX1AoUGFja1VucGFja1Rlc3QsIFBhY2tVbnBhY2tTbm9ybVN1Ym5vcm1hbCkKLXsK
LSAgICAvLyBFeHBlY3QgdGhlIHNoYWRlciB0byBvdXRwdXQgdGhlIHNhbWUgdmFsdWUgYXMgdGhl
IGlucHV0Ci0gICAgY29tcGFyZUJlZm9yZUFmdGVyKG1TTm9ybVByb2dyYW0sIDAuMDAwMDFmLCAt
MC4wMDAwMWYpOwotfQotCi0vLyBUZXN0IHRoZSBjb3JyZWN0bmVzcyBvZiBwYWNrVW5vcm0yeDE2
IGFuZCB1bnBhY2tVbm9ybTJ4MTYgZnVuY3Rpb25zIGNhbGN1bGF0aW5nIHN1Ym5vcm1hbAotLy8g
ZmxvYXRpbmcgbnVtYmVycy4KLVRFU1RfUChQYWNrVW5wYWNrVGVzdCwgUGFja1VucGFja1Vub3Jt
U3Vibm9ybWFsKQotewotICAgIC8vIEV4cGVjdCB0aGUgc2hhZGVyIHRvIG91dHB1dCB0aGUgc2Ft
ZSB2YWx1ZSBhcyB0aGUgaW5wdXQgZm9yIHBvc2l0aXZlIG51bWJlcnMgYW5kIGNsYW1wCi0gICAg
Ly8gdG8gWzAsIDFdCi0gICAgY29tcGFyZUJlZm9yZUFmdGVyKG1VTm9ybVByb2dyYW0sIDAuMDAw
MDFmLCAtMC4wMDAwMWYsIDAuMDAwMDFmLCAwLjBmKTsKLX0KLQotLy8gVGVzdCB0aGUgY29ycmVj
dG5lc3Mgb2YgcGFja0hhbGYyeDE2IGFuZCB1bnBhY2tIYWxmMngxNiBmdW5jdGlvbnMgY2FsY3Vs
YXRpbmcgc3Vibm9ybWFsIGZsb2F0aW5nIG51bWJlcnMuCi1URVNUX1AoUGFja1VucGFja1Rlc3Qs
IFBhY2tVbnBhY2tIYWxmU3Vibm9ybWFsKQotewotICAgIC8vIEV4cGVjdCB0aGUgc2hhZGVyIHRv
IG91dHB1dCB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgaW5wdXQKLSAgICBjb21wYXJlQmVmb3JlQWZ0
ZXIobUhhbGZQcm9ncmFtLCAwLjAwMDAxZiwgLTAuMDAwMDFmKTsKLX0KLQotLy8gVGVzdCB0aGUg
Y29ycmVjdG5lc3Mgb2YgcGFja1Nub3JtMngxNiBhbmQgdW5wYWNrU25vcm0yeDE2IGZ1bmN0aW9u
cyBjYWxjdWxhdGluZyB6ZXJvIGZsb2F0aW5nIG51bWJlcnMuCi1URVNUX1AoUGFja1VucGFja1Rl
c3QsIFBhY2tVbnBhY2tTbm9ybVplcm8pCi17Ci0gICAgLy8gRXhwZWN0IHRoZSBzaGFkZXIgdG8g
b3V0cHV0IHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBpbnB1dAotICAgIGNvbXBhcmVCZWZvcmVBZnRl
cihtU05vcm1Qcm9ncmFtLCAwLjAwMDAwZiwgLTAuMDAwMDBmKTsKLX0KLQotLy8gVGVzdCB0aGUg
Y29ycmVjdG5lc3Mgb2YgcGFja1Vub3JtMngxNiBhbmQgdW5wYWNrVW5vcm0yeDE2IGZ1bmN0aW9u
cyBjYWxjdWxhdGluZyB6ZXJvIGZsb2F0aW5nCi0vLyBudW1iZXJzLgotVEVTVF9QKFBhY2tVbnBh
Y2tUZXN0LCBQYWNrVW5wYWNrVW5vcm1aZXJvKQotewotICAgIGNvbXBhcmVCZWZvcmVBZnRlciht
VU5vcm1Qcm9ncmFtLCAwLjAwMDAwZiwgLTAuMDAwMDBmLCAwLjAwMDAwZiwgMC4wMDAwMGYpOwot
fQotCi0vLyBUZXN0IHRoZSBjb3JyZWN0bmVzcyBvZiBwYWNrSGFsZjJ4MTYgYW5kIHVucGFja0hh
bGYyeDE2IGZ1bmN0aW9ucyBjYWxjdWxhdGluZyB6ZXJvIGZsb2F0aW5nIG51bWJlcnMuCi1URVNU
X1AoUGFja1VucGFja1Rlc3QsIFBhY2tVbnBhY2tIYWxmWmVybykKLXsKLSAgICAvLyBFeHBlY3Qg
dGhlIHNoYWRlciB0byBvdXRwdXQgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIGlucHV0Ci0gICAgY29t
cGFyZUJlZm9yZUFmdGVyKG1IYWxmUHJvZ3JhbSwgMC4wMDAwMGYsIC0wLjAwMDAwZik7Ci19Ci0K
LS8vIFRlc3QgdGhlIGNvcnJlY3RuZXNzIG9mIHBhY2tVbm9ybTJ4MTYgYW5kIHVucGFja1Vub3Jt
MngxNiBmdW5jdGlvbnMgY2FsY3VsYXRpbmcgb3ZlcmZsb3cgZmxvYXRpbmcKLS8vIG51bWJlcnMu
Ci1URVNUX1AoUGFja1VucGFja1Rlc3QsIFBhY2tVbnBhY2tVbm9ybU92ZXJmbG93KQotewotICAg
IC8vIEV4cGVjdCB0aGUgc2hhZGVyIHRvIGNsYW1wIHRoZSBpbnB1dCB0byBbMCwgMV0KLSAgICBj
b21wYXJlQmVmb3JlQWZ0ZXIobVVOb3JtUHJvZ3JhbSwgNjcwMDAuMGYsIC02NzAwMC4wZiwgMS4w
ZiwgMC4wZik7Ci19Ci0KLS8vIFRlc3QgdGhlIGNvcnJlY3RuZXNzIG9mIHBhY2tTbm9ybTJ4MTYg
YW5kIHVucGFja1Nub3JtMngxNiBmdW5jdGlvbnMgY2FsY3VsYXRpbmcgb3ZlcmZsb3cgZmxvYXRp
bmcgbnVtYmVycy4KLVRFU1RfUChQYWNrVW5wYWNrVGVzdCwgUGFja1VucGFja1Nub3JtT3ZlcmZs
b3cpCi17Ci0gICAgLy8gRXhwZWN0IHRoZSBzaGFkZXIgdG8gY2xhbXAgdGhlIGlucHV0IHRvIFst
MSwgMV0KLSAgICBjb21wYXJlQmVmb3JlQWZ0ZXIobVNOb3JtUHJvZ3JhbSwgNjcwMDAuMGYsIC02
NzAwMC4wZiwgMS4wZiwgLTEuMGYpOwotfQotCi0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2gg
Y29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVy
c2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElB
VEVfVEVTVChQYWNrVW5wYWNrVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5H
TCgzLCAzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCg0LCAwKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCg0LCAxKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgRVMzX09QRU5HTCg0LCAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCg0
LCAzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCg0LCA0KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgRVMzX09QRU5HTCg0LCA1KSwKLSAgICAgICAgICAgICAgICAgICAgICAg
RVMzX09QRU5HTEVTKCkpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL1BhdGhSZW5kZXJpbmdUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9QYXRoUmVuZGVyaW5nVGVzdC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2MjUzMTA3MTc5OTQxODFkYTRmZGNlODVkNzE2MThh
MjFiMzUzNjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BhdGhSZW5kZXJpbmdU
ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5ODQgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdo
dCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0v
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIENI
Uk9NSVVNUGF0aFJlbmRlcmluZ1Rlc3QKLS8vICAgVGVzdCBDSFJPTUlVTSBzdWJzZXQgb2YgTlZf
cGF0aF9yZW5kZXJpbmcKLS8vICAgVGhpcyBleHRlbnNpb24gYWxsb3dzIHRvIHJlbmRlciBnZW9t
ZXRyaWMgcGF0aHMgYXMgZmlyc3QgY2xhc3MgR0wgb2JqZWN0cy4KLQotI2luY2x1ZGUgInRlc3Rf
dXRpbHMvQU5HTEVUZXN0LmgiCi0jaW5jbHVkZSAic2hhZGVyX3V0aWxzLmgiCi0KLSNpbmNsdWRl
ICJjb21tb24vYW5nbGV1dGlscy5oIgotCi0jaW5jbHVkZSA8Y21hdGg+Ci0jaW5jbHVkZSA8Y3N0
cmluZz4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPGZzdHJlYW0+Ci0KLXVzaW5nIG5h
bWVzcGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17Ci0KLWJvb2wgQ2hlY2tQaXhlbHMoR0xpbnQg
eCwKLSAgICAgICAgICAgICAgICAgR0xpbnQgeSwKLSAgICAgICAgICAgICAgICAgR0xzaXplaSB3
aWR0aCwKLSAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAg
IEdMaW50IHRvbGVyYW5jZSwKLSAgICAgICAgICAgICAgICAgY29uc3QgYW5nbGU6OkdMQ29sb3Ig
JmNvbG9yKQotewotICAgIGZvciAoR0xpbnQgeXkgPSAwOyB5eSA8IGhlaWdodDsgKyt5eSkKLSAg
ICB7Ci0gICAgICAgIGZvciAoR0xpbnQgeHggPSAwOyB4eCA8IHdpZHRoOyArK3h4KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBjb25zdCBhdXRvIHB4ID0geCArIHh4OwotICAgICAgICAgICAgY29u
c3QgYXV0byBweSA9IHkgKyB5eTsKLSAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9ORUFSKHB4LCBw
eSwgY29sb3IuUiwgY29sb3IuRywgY29sb3IuQiwgY29sb3IuQSwgdG9sZXJhbmNlKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEV4cGVjdEVxdWFsTWF0
cml4KGNvbnN0IEdMZmxvYXQgKmV4cGVjdGVkLCBjb25zdCBHTGZsb2F0ICphY3R1YWwpCi17Ci0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxNjsgKytpKQotICAgIHsKLSAgICAgICAgRVhQRUNU
X0VRKGV4cGVjdGVkW2ldLCBhY3R1YWxbaV0pOwotICAgIH0KLX0KLQotdm9pZCBFeHBlY3RFcXVh
bE1hdHJpeChjb25zdCBHTGZsb2F0ICpleHBlY3RlZCwgY29uc3QgR0xpbnQgKmFjdHVhbCkKLXsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDE2OyArK2kpCi0gICAgewotICAgICAgICBFWFBF
Q1RfRVEoc3RhdGljX2Nhc3Q8R0xpbnQ+KHN0ZDo6cm91bmRmKGV4cGVjdGVkW2ldKSksIGFjdHVh
bFtpXSk7Ci0gICAgfQotfQotCi1jb25zdCBpbnQga1Jlc29sdXRpb24gPSAzMDA7Ci0KLWNsYXNz
IENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3Rl
Y3RlZDoKLSAgICBDSFJPTUlVTVBhdGhSZW5kZXJpbmdUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNl
dFdpbmRvd1dpZHRoKGtSZXNvbHV0aW9uKTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KGtSZXNv
bHV0aW9uKTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmln
R3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0
Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoOCk7Ci0gICAg
ICAgIHNldENvbmZpZ1N0ZW5jaWxCaXRzKDgpOwotICAgIH0KLQotICAgIGJvb2wgaXNBcHBsaWNh
YmxlKCkgY29uc3QgeyByZXR1cm4gZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQ0hST01JVU1fcGF0aF9y
ZW5kZXJpbmciKTsgfQotCi0gICAgdm9pZCB0cnlBbGxEcmF3RnVuY3Rpb25zKEdMdWludCBwYXRo
LCBHTGVudW0gZXJyKQotICAgIHsKLSAgICAgICAgZ2xTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTShw
YXRoLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgMHg3Rik7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJP
UihlcnIpOwotCi0gICAgICAgIGdsU3RlbmNpbEZpbGxQYXRoQ0hST01JVU0ocGF0aCwgR0xfQ09V
TlRfRE9XTl9DSFJPTUlVTSwgMHg3Rik7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihlcnIpOwot
Ci0gICAgICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhDSFJPTUlVTShwYXRoLCAweDgwLCAweDgwKTsK
LSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKGVycik7Ci0KLSAgICAgICAgZ2xDb3ZlckZpbGxQYXRo
Q0hST01JVU0ocGF0aCwgR0xfQk9VTkRJTkdfQk9YX0NIUk9NSVVNKTsKLSAgICAgICAgRVhQRUNU
X0dMX0VSUk9SKGVycik7Ci0KLSAgICAgICAgZ2xDb3ZlclN0cm9rZVBhdGhDSFJPTUlVTShwYXRo
LCBHTF9CT1VORElOR19CT1hfQ0hST01JVU0pOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoZXJy
KTsKLQotICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoQ0hST01JVU0ocGF0aCwg
MHg4MCwgMHg4MCwgR0xfQk9VTkRJTkdfQk9YX0NIUk9NSVVNKTsKLSAgICAgICAgRVhQRUNUX0dM
X0VSUk9SKGVycik7Ci0KLSAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlV
TShwYXRoLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgMHg3RiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9CT1VORElOR19CT1hfQ0hST01JVU0pOwotICAgICAg
ICBFWFBFQ1RfR0xfRVJST1IoZXJyKTsKLSAgICB9Ci19OwotCi0vLyBUZXN0IHNldHRpbmcgYW5k
IGdldHRpbmcgb2YgcGF0aCByZW5kZXJpbmcgbWF0cmljZXMuCi1URVNUX1AoQ0hST01JVU1QYXRo
UmVuZGVyaW5nVGVzdCwgVGVzdE1hdHJpeCkKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBzdGF0aWMgY29uc3QgR0xmbG9hdCBrSWRlbnRpdHlNYXRy
aXhbMTZdID0gezEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsIDAuMGYs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLCAw
LjBmLCAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmfTsKLQotICAgIHN0YXRpYyBj
b25zdCBHTGZsb2F0IGtTZXFNYXRyaXhbMTZdID0gezAuNWYsICAgLTAuNWYsICAtMC4xZiwgIC0w
LjhmLCA0LjRmLCAgIDUuNWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgNi42ZiwgICA3LjdmLCAgIDguOGYsICAgOS45ZiwgIDEwLjExZiwgMTEuMjJmLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLjMzZiwgMTMuNDRmLCAx
NC41NWYsIDE1LjY2Zn07Ci0KLSAgICBzdGF0aWMgY29uc3QgR0xlbnVtIGtNYXRyaXhNb2Rlc1td
ID0ge0dMX1BBVEhfTU9ERUxWSUVXX0NIUk9NSVVNLCBHTF9QQVRIX1BST0pFQ1RJT05fQ0hST01J
VU19OwotCi0gICAgc3RhdGljIGNvbnN0IEdMZW51bSBrR2V0TWF0cml4TW9kZXNbXSA9IHtHTF9Q
QVRIX01PREVMVklFV19NQVRSSVhfQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9QQVRIX1BST0pFQ1RJT05fTUFUUklYX0NIUk9NSVVNfTsK
LQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjsgKytpKQotICAgIHsKLSAgICAgICAgR0xm
bG9hdCBtZlsxNl07Ci0gICAgICAgIEdMaW50IG1pWzE2XTsKLSAgICAgICAgc3RkOjptZW1zZXQo
bWYsIDAsIHNpemVvZihtZikpOwotICAgICAgICBzdGQ6Om1lbXNldChtaSwgMCwgc2l6ZW9mKG1p
KSk7Ci0gICAgICAgIGdsR2V0RmxvYXR2KGtHZXRNYXRyaXhNb2Rlc1tpXSwgbWYpOwotICAgICAg
ICBnbEdldEludGVnZXJ2KGtHZXRNYXRyaXhNb2Rlc1tpXSwgbWkpOwotICAgICAgICBFeHBlY3RF
cXVhbE1hdHJpeChrSWRlbnRpdHlNYXRyaXgsIG1mKTsKLSAgICAgICAgRXhwZWN0RXF1YWxNYXRy
aXgoa0lkZW50aXR5TWF0cml4LCBtaSk7Ci0KLSAgICAgICAgZ2xNYXRyaXhMb2FkZkNIUk9NSVVN
KGtNYXRyaXhNb2Rlc1tpXSwga1NlcU1hdHJpeCk7Ci0gICAgICAgIHN0ZDo6bWVtc2V0KG1mLCAw
LCBzaXplb2YobWYpKTsKLSAgICAgICAgc3RkOjptZW1zZXQobWksIDAsIHNpemVvZihtaSkpOwot
ICAgICAgICBnbEdldEZsb2F0dihrR2V0TWF0cml4TW9kZXNbaV0sIG1mKTsKLSAgICAgICAgZ2xH
ZXRJbnRlZ2VydihrR2V0TWF0cml4TW9kZXNbaV0sIG1pKTsKLSAgICAgICAgRXhwZWN0RXF1YWxN
YXRyaXgoa1NlcU1hdHJpeCwgbWYpOwotICAgICAgICBFeHBlY3RFcXVhbE1hdHJpeChrU2VxTWF0
cml4LCBtaSk7Ci0KLSAgICAgICAgZ2xNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTShrTWF0cml4
TW9kZXNbaV0pOwotICAgICAgICBzdGQ6Om1lbXNldChtZiwgMCwgc2l6ZW9mKG1mKSk7Ci0gICAg
ICAgIHN0ZDo6bWVtc2V0KG1pLCAwLCBzaXplb2YobWkpKTsKLSAgICAgICAgZ2xHZXRGbG9hdHYo
a0dldE1hdHJpeE1vZGVzW2ldLCBtZik7Ci0gICAgICAgIGdsR2V0SW50ZWdlcnYoa0dldE1hdHJp
eE1vZGVzW2ldLCBtaSk7Ci0gICAgICAgIEV4cGVjdEVxdWFsTWF0cml4KGtJZGVudGl0eU1hdHJp
eCwgbWYpOwotICAgICAgICBFeHBlY3RFcXVhbE1hdHJpeChrSWRlbnRpdHlNYXRyaXgsIG1pKTsK
LQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhh
dCB0cnlpbmcgdG8gc2V0IGluY29ycmVjdCBtYXRyaXggdGFyZ2V0IHJlc3VsdHMKLS8vIGluIGEg
R0wgZXJyb3IuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdCwgVGVzdE1hdHJpeEVy
cm9ycykKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBHTGZsb2F0IG1mWzE2XTsKLSAgICBzdGQ6Om1lbXNldChtZiwgMCwgc2l6ZW9mKG1mKSk7Ci0K
LSAgICBnbE1hdHJpeExvYWRmQ0hST01JVU0oR0xfUEFUSF9NT0RFTFZJRVdfQ0hST01JVU0sIG1m
KTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsTWF0cml4TG9hZElkZW50aXR5
Q0hST01JVU0oR0xfUEFUSF9QUk9KRUNUSU9OX0NIUk9NSVVNKTsKLSAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLQotICAgIC8vIFRlc3QgdGhhdCBpbnZhbGlkIG1hdHJpeCB0YXJnZXRzIGZhaWwu
Ci0gICAgZ2xNYXRyaXhMb2FkZkNIUk9NSVVNKEdMX1BBVEhfTU9ERUxWSUVXX0NIUk9NSVVNIC0g
MSwgbWYpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgLy8g
VGVzdCB0aGF0IGludmFsaWQgbWF0cml4IHRhcmdldHMgZmFpbC4KLSAgICBnbE1hdHJpeExvYWRJ
ZGVudGl0eUNIUk9NSVVNKEdMX1BBVEhfUFJPSkVDVElPTl9DSFJPTUlVTSArIDEpOwotICAgIEVY
UEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotfQotCi0vLyBUZXN0IGJhc2ljIHBhdGgg
Y3JlYXRlIGFuZCBkZWxldGUuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdCwgVGVz
dEdlbkRlbGV0ZSkKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm47
Ci0KLSAgICAvLyBUaGlzIGlzIHVuc3BlY2lmaWVkIGluIE5WX3BhdGhfcmVuZGVyaW5nLgotICAg
IEVYUEVDVF9FUSgwdSwgZ2xHZW5QYXRoc0NIUk9NSVVNKDApKTsKLSAgICBFWFBFQ1RfR0xfRVJS
T1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICBHTHVpbnQgcGF0aCA9IGdsR2VuUGF0aHNDSFJP
TUlVTSgxKTsKLSAgICBFWFBFQ1RfTkUoMHUsIHBhdGgpOwotICAgIGdsRGVsZXRlUGF0aHNDSFJP
TUlVTShwYXRoLCAxKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIEdMdWludCBm
aXJzdF9wYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDUpOwotICAgIEVYUEVDVF9ORSgwdSwgZmly
c3RfcGF0aCk7Ci0gICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVNKGZpcnN0X3BhdGgsIDUpOwotICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gVGVzdCBkZWxldGluZyBwYXRocyB0aGF0
IGFyZSBub3QgYWN0dWFsbHkgYWxsb2NhdGVkOgotICAgIC8vICJ1bnVzZWQgbmFtZXMgaW4gL3Bh
dGhzLyBhcmUgc2lsZW50bHkgaWdub3JlZCIuCi0gICAgZmlyc3RfcGF0aCA9IGdsR2VuUGF0aHND
SFJPTUlVTSg1KTsKLSAgICBFWFBFQ1RfTkUoMHUsIGZpcnN0X3BhdGgpOwotICAgIGdsRGVsZXRl
UGF0aHNDSFJPTUlVTShmaXJzdF9wYXRoLCA2KTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LQotICAgIEdMc2l6ZWkgYmlnX3JhbmdlID0gMHhmZmZmOwotICAgIGZpcnN0X3BhdGggPSBnbEdl
blBhdGhzQ0hST01JVU0oYmlnX3JhbmdlKTsKLSAgICBFWFBFQ1RfTkUoMHUsIGZpcnN0X3BhdGgp
OwotICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShmaXJzdF9wYXRoLCBiaWdfcmFuZ2UpOwotICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gVGVzdCBnbElzUGF0aENIUk9NSVVNKCku
IEEgcGF0aCBvYmplY3QgaXMgbm90IGNvbnNpZGVyZWQgYSBwYXRoIHVudGlsbAotICAgIC8vIGl0
IGhhcyBhY3R1YWxseSBiZWVuIHNwZWNpZmllZCB3aXRoIGEgcGF0aCBkYXRhLgotCi0gICAgcGF0
aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgxKTsKLSAgICBBU1NFUlRfVFJVRShnbElzUGF0aENIUk9N
SVVNKHBhdGgpID09IEdMX0ZBTFNFKTsKLQotICAgIC8vIHNwZWNpZnkgdGhlIGRhdGEuCi0gICAg
R0x1Ynl0ZSBjb21tYW5kc1tdID0ge0dMX01PVkVfVE9fQ0hST01JVU0sIEdMX0NMT1NFX1BBVEhf
Q0hST01JVU19OwotICAgIEdMZmxvYXQgY29vcmRzW10gPSB7NTAuMGYsIDUwLjBmfTsKLSAgICBn
bFBhdGhDb21tYW5kc0NIUk9NSVVNKHBhdGgsIDIsIGNvbW1hbmRzLCAyLCBHTF9GTE9BVCwgY29v
cmRzKTsKLSAgICBBU1NFUlRfVFJVRShnbElzUGF0aENIUk9NSVVNKHBhdGgpID09IEdMX1RSVUUp
OwotICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShwYXRoLCAxKTsKLSAgICBBU1NFUlRfVFJVRShn
bElzUGF0aENIUk9NSVVNKHBhdGgpID09IEdMX0ZBTFNFKTsKLX0KLQotLy8gVGVzdCBpbmNvcnJl
Y3QgcGF0aCBjcmVhdGlvbiBhbmQgZGVsZXRpb24gYW5kIGV4cGVjdCBHTCBlcnJvcnMuCi1URVNU
X1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdCwgVGVzdEdlbkRlbGV0ZUVycm9ycykKLXsKLSAg
ICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBHZW5QYXRo
cyAvIERlbGV0ZVBhdGhzIHRlc3RzLgotICAgIC8vIHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50
Pjo6bWF4KCkgaXMgd3JvbmcgZm9yIEdMc2l6ZWkuCi0gICAgR0x1aW50IGZpcnN0X3BhdGggPSBn
bEdlblBhdGhzQ0hST01JVU0oc3RkOjpudW1lcmljX2xpbWl0czxHTHVpbnQ+OjptYXgoKSk7Ci0g
ICAgRVhQRUNUX0VRKGZpcnN0X3BhdGgsIDB1KTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5W
QUxJRF9WQUxVRSk7Ci0KLSAgICBmaXJzdF9wYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKC0xKTsK
LSAgICBFWFBFQ1RfRVEoMHUsIGZpcnN0X3BhdGgpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9J
TlZBTElEX1ZBTFVFKTsKLQotICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTSgxLCAtNSk7Ci0gICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgZmlyc3RfcGF0aCA9IGds
R2VuUGF0aHNDSFJPTUlVTSgtMSk7Ci0gICAgRVhQRUNUX0VRKDB1LCBmaXJzdF9wYXRoKTsKLSAg
ICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci19Ci0KLS8vIFRlc3Qgc2V0dGlu
ZyBhbmQgZ2V0dGluZyBwYXRoIHBhcmFtZXRlcnMuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVy
aW5nVGVzdCwgVGVzdFBhdGhQYXJhbWV0ZXIpCi17Ci0gICAgaWYgKCFpc0FwcGxpY2FibGUoKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgR0x1aW50IHBhdGggPSBnbEdlblBhdGhzQ0hST01JVU0o
MSk7Ci0KLSAgICAvLyBzcGVjaWZ5IHRoZSBkYXRhLgotICAgIEdMdWJ5dGUgY29tbWFuZHNbXSA9
IHtHTF9NT1ZFX1RPX0NIUk9NSVVNLCBHTF9DTE9TRV9QQVRIX0NIUk9NSVVNfTsKLSAgICBHTGZs
b2F0IGNvb3Jkc1tdID0gezUwLjBmLCA1MC4wZn07Ci0gICAgZ2xQYXRoQ29tbWFuZHNDSFJPTUlV
TShwYXRoLCAyLCBjb21tYW5kcywgMiwgR0xfRkxPQVQsIGNvb3Jkcyk7Ci0gICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX1RSVUUoZ2xJc1BhdGhDSFJPTUlVTShwYXRoKSA9PSBH
TF9UUlVFKTsKLQotICAgIHN0YXRpYyBjb25zdCBHTGVudW0ga0VuZENhcHNbXSA9IHtHTF9GTEFU
X0NIUk9NSVVNLCBHTF9TUVVBUkVfQ0hST01JVU0sIEdMX1JPVU5EX0NIUk9NSVVNfTsKLSAgICBm
b3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgMzsgKytpKQotICAgIHsKLSAgICAgICAgR0xpbnQg
eDsKLSAgICAgICAgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfRU5EX0NB
UFNfQ0hST01JVU0sIHN0YXRpY19jYXN0PEdMZW51bT4oa0VuZENhcHNbaV0pKTsKLSAgICAgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAgIGdsR2V0UGF0aFBhcmFtZXRlcml2Q0hST01J
VU0ocGF0aCwgR0xfUEFUSF9FTkRfQ0FQU19DSFJPTUlVTSwgJngpOwotICAgICAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKLSAgICAgICAgRVhQRUNUX0VRKGtFbmRDYXBzW2ldLCBzdGF0aWNfY2Fz
dDxHTGVudW0+KHgpKTsKLQotICAgICAgICBHTGZsb2F0IGY7Ci0gICAgICAgIGdsUGF0aFBhcmFt
ZXRlcmZDSFJPTUlVTShwYXRoLCBHTF9QQVRIX0VORF9DQVBTX0NIUk9NSVVNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xmbG9hdD4oa0VuZENhcHNbKGkg
KyAxKSAlIDNdKSk7Ci0gICAgICAgIGdsR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU0ocGF0aCwg
R0xfUEFUSF9FTkRfQ0FQU19DSFJPTUlVTSwgJmYpOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKLSAgICAgICAgRVhQRUNUX0VRKGtFbmRDYXBzWyhpICsgMSkgJSAzXSwgc3RhdGljX2Nh
c3Q8R0xlbnVtPihmKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IEdMZW51bSBrSm9pblN0
eWxlc1tdID0ge0dMX01JVEVSX1JFVkVSVF9DSFJPTUlVTSwgR0xfQkVWRUxfQ0hST01JVU0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JPVU5EX0NIUk9NSVVN
fTsKLSAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgMzsgKytpKQotICAgIHsKLSAgICAg
ICAgR0xpbnQgeDsKLSAgICAgICAgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNKHBhdGgsIEdMX1BB
VEhfSk9JTl9TVFlMRV9DSFJPTUlVTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PEdMZW51bT4oa0pvaW5TdHlsZXNbaV0pKTsKLSAgICAgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0gICAgICAgIGdsR2V0UGF0aFBhcmFtZXRlcml2Q0hST01JVU0ocGF0aCwg
R0xfUEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVNLCAmeCk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotICAgICAgICBFWFBFQ1RfRVEoa0pvaW5TdHlsZXNbaV0sIHN0YXRpY19jYXN0PEdM
ZW51bT4oeCkpOwotCi0gICAgICAgIEdMZmxvYXQgZjsKLSAgICAgICAgZ2xQYXRoUGFyYW1ldGVy
ZkNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfSk9JTl9TVFlMRV9DSFJPTUlVTSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMZmxvYXQ+KGtKb2luU3R5bGVzWyhp
ICsgMSkgJSAzXSkpOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgZ2xH
ZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTShwYXRoLCBHTF9QQVRIX0pPSU5fU1RZTEVfQ0hST01J
VU0sICZmKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAgIEVYUEVDVF9F
UShrSm9pblN0eWxlc1soaSArIDEpICUgM10sIHN0YXRpY19jYXN0PEdMZW51bT4oZikpOwotICAg
IH0KLQotICAgIHsKLSAgICAgICAgZ2xQYXRoUGFyYW1ldGVyZkNIUk9NSVVNKHBhdGgsIEdMX1BB
VEhfU1RST0tFX1dJRFRIX0NIUk9NSVVNLCA1LjBmKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Ci0KLSAgICAgICAgR0xmbG9hdCBmOwotICAgICAgICBnbEdldFBhdGhQYXJhbWV0ZXJm
dkNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfU1RST0tFX1dJRFRIX0NIUk9NSVVNLCAmZik7Ci0gICAg
ICAgIEVYUEVDVF9FUSg1LjBmLCBmKTsKLSAgICB9Ci0KLSAgICBnbERlbGV0ZVBhdGhzQ0hST01J
VU0ocGF0aCwgMSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBzZXR0aW5nIGluY29ycmVjdCBwYXRoIHBh
cmFtZXRlciBnZW5lcmF0ZXMgR0wgZXJyb3IuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5n
VGVzdCwgVGVzdFBhdGhQYXJhbWV0ZXJFcnJvcnMpCi17Ci0gICAgaWYgKCFpc0FwcGxpY2FibGUo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR0x1aW50IHBhdGggPSBnbEdlblBhdGhzQ0hST01J
VU0oMSk7Ci0KLSAgICAvLyBQYXRoUGFyYW1ldGVyKjogV3JvbmcgdmFsdWUgZm9yIHRoZSBwbmFt
ZSBzaG91bGQgZmFpbC4KLSAgICBnbFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0ocGF0aCwgR0xfUEFU
SF9KT0lOX1NUWUxFX0NIUk9NSVVNLCBHTF9GTEFUX0NIUk9NSVVNKTsKLSAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgIGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShw
YXRoLCBHTF9QQVRIX0VORF9DQVBTX0NIUk9NSVVNLCBHTF9NSVRFUl9SRVZFUlRfQ0hST01JVU0p
OwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgLy8gUGF0aFBh
cmFtZXRlcio6IFdyb25nIGZsb2F0aW5nLXBvaW50IHZhbHVlIHNob3VsZCBmYWlsLgotICAgIGds
UGF0aFBhcmFtZXRlcmZDSFJPTUlVTShwYXRoLCBHTF9QQVRIX1NUUk9LRV9XSURUSF9DSFJPTUlV
TSwgLTAuMWYpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAg
IC8vIFBhdGhQYXJhbWV0ZXIqOiBXcm9uZyBwbmFtZSBzaG91bGQgZmFpbC4KLSAgICBnbFBhdGhQ
YXJhbWV0ZXJpQ0hST01JVU0ocGF0aCwgR0xfUEFUSF9TVFJPS0VfV0lEVEhfQ0hST01JVU0gLSAx
LCA1KTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgIGdsRGVs
ZXRlUGF0aHNDSFJPTUlVTShwYXRoLCAxKTsKLX0KLQotLy8gVGVzdCBleHBlY3RlZCBwYXRoIG9i
amVjdCBzdGF0ZS4KLVRFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdUZXN0LCBUZXN0UGF0aE9i
amVjdFN0YXRlKQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIGdsVmlld3BvcnQoMCwgMCwga1Jlc29sdXRpb24sIGtSZXNvbHV0aW9uKTsKLSAgICBn
bENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7Ci0gICAgZ2xTdGVuY2lsTWFzaygw
eGZmZmZmZmZmKTsKLSAgICBnbENsZWFyU3RlbmNpbCgwKTsKLSAgICBnbENsZWFyKEdMX0NPTE9S
X0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwotICAgIGdsUGF0aFN0ZW5jaWxG
dW5jQ0hST01JVU0oR0xfQUxXQVlTLCAwLCAweEZGKTsKLSAgICBnbFN0ZW5jaWxPcChHTF9LRUVQ
LCBHTF9LRUVQLCBHTF9aRVJPKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8v
IFRlc3QgdGhhdCB0cnlpbmcgdG8gZHJhdyBub24tZXhpc3RpbmcgcGF0aHMgZG9lcyBub3QgcHJv
ZHVjZSBlcnJvcnMgb3IgcmVzdWx0cy4KLSAgICBHTHVpbnQgbm9uX2V4aXN0aW5nX3BhdGhzW10g
PSB7MCwgNTUsIDc0NzQ0fTsKLSAgICBmb3IgKGF1dG8gJnAgOiBub25fZXhpc3RpbmdfcGF0aHMp
Ci0gICAgewotICAgICAgICBFWFBFQ1RfVFJVRShnbElzUGF0aENIUk9NSVVNKHApID09IEdMX0ZB
TFNFKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAgIHRyeUFsbERyYXdG
dW5jdGlvbnMocCwgR0xfTk9fRVJST1IpOwotICAgIH0KLQotICAgIC8vIFBhdGggbmFtZSBtYXJr
ZWQgYXMgdXNlZCBidXQgd2l0aG91dCBwYXRoIG9iamVjdCBzdGF0ZSBjYXVzZXMKLSAgICAvLyBh
IEdMIGVycm9yIHVwb24gYW55IGRyYXcgY29tbWFuZC4KLSAgICBHTHVpbnQgcGF0aCA9IGdsR2Vu
UGF0aHNDSFJPTUlVTSgxKTsKLSAgICBFWFBFQ1RfVFJVRShnbElzUGF0aENIUk9NSVVNKHBhdGgp
ID09IEdMX0ZBTFNFKTsKLSAgICB0cnlBbGxEcmF3RnVuY3Rpb25zKHBhdGgsIEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLSAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7Ci0KLSAgICAv
LyBEb2N1bWVudCBhIGJpdCBvZiBhbiBpbmNvbnNpc3RlbmN5OiBwYXRoIG5hbWUgbWFya2VkIGFz
IHVzZWQgYnV0IHdpdGhvdXQKLSAgICAvLyBwYXRoIG9iamVjdCBzdGF0ZSBjYXVzZXMgYSBHTCBl
cnJvciB1cG9uIGFueSBkcmF3IGNvbW1hbmQgKHRlc3RlZCBhYm92ZSkuCi0gICAgLy8gUGF0aCBu
YW1lIHRoYXQgaGFkIHBhdGggb2JqZWN0IHN0YXRlLCBidXQgdGhlbiB3YXMgImNsZWFyZWQiLCBz
dGlsbCBoYXMgYQotICAgIC8vIHBhdGggb2JqZWN0IHN0YXRlLCBldmVuIHRob3VnaCB0aGUgc3Rh
dGUgaXMgZW1wdHkuCi0gICAgcGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgxKTsKLSAgICBFWFBF
Q1RfVFJVRShnbElzUGF0aENIUk9NSVVNKHBhdGgpID09IEdMX0ZBTFNFKTsKLQotICAgIEdMdWJ5
dGUgY29tbWFuZHNbXSA9IHtHTF9NT1ZFX1RPX0NIUk9NSVVNLCBHTF9DTE9TRV9QQVRIX0NIUk9N
SVVNfTsKLSAgICBHTGZsb2F0IGNvb3Jkc1tdID0gezUwLjBmLCA1MC4wZn07Ci0gICAgZ2xQYXRo
Q29tbWFuZHNDSFJPTUlVTShwYXRoLCAyLCBjb21tYW5kcywgMiwgR0xfRkxPQVQsIGNvb3Jkcyk7
Ci0gICAgRVhQRUNUX1RSVUUoZ2xJc1BhdGhDSFJPTUlVTShwYXRoKSA9PSBHTF9UUlVFKTsKLQot
ICAgIGdsUGF0aENvbW1hbmRzQ0hST01JVU0ocGF0aCwgMCwgTlVMTCwgMCwgR0xfRkxPQVQsIE5V
TEwpOwotICAgIEVYUEVDVF9UUlVFKGdsSXNQYXRoQ0hST01JVU0ocGF0aCkgPT0gR0xfVFJVRSk7
ICAvLyBUaGUgc3VycHJpc2UuCi0KLSAgICB0cnlBbGxEcmF3RnVuY3Rpb25zKHBhdGgsIEdMX05P
X0VSUk9SKTsKLSAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7Ci0KLSAgICAvLyBN
YWtlIHN1cmUgbm90aGluZyBnb3QgZHJhd24gYnkgdGhlIGRyYXdpbmcgY29tbWFuZHMgdGhhdCBz
aG91bGQgbm90IHByb2R1Y2UKLSAgICAvLyBhbnl0aGluZy4KLSAgICBjb25zdCBhbmdsZTo6R0xD
b2xvciBibGFjayA9IHswLCAwLCAwLCAwfTsKLSAgICBFWFBFQ1RfVFJVRShDaGVja1BpeGVscygw
LCAwLCBrUmVzb2x1dGlvbiwga1Jlc29sdXRpb24sIDAsIGJsYWNrKSk7Ci19Ci0KLS8vIFRlc3Qg
dGhhdCB0cnlpbmcgdG8gdXNlIHBhdGggb2JqZWN0IHRoYXQgZG9lc24ndCBleGlzdCBnZW5lcmF0
ZXMKLS8vIGEgR0wgZXJyb3IuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdCwgVGVz
dFVubmFtZWRQYXRoc0Vycm9ycykKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICAvLyBVbm5hbWVkIHBhdGhzOiBUcnlpbmcgdG8gY3JlYXRlIGEgcGF0
aCBvYmplY3Qgd2l0aCBub24tZXhpc3RpbmcgcGF0aCBuYW1lCi0gICAgLy8gcHJvZHVjZXMgZXJy
b3IuICAoTm90IGEgZXJyb3IgaW4gcmVhbCBOVl9wYXRoX3JlbmRlcmluZykuCi0gICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7Ci0gICAgR0x1Ynl0ZSBjb21tYW5kc1tdID0ge0dMX01PVkVfVE9fQ0hS
T01JVU0sIEdMX0NMT1NFX1BBVEhfQ0hST01JVU19OwotICAgIEdMZmxvYXQgY29vcmRzW10gPSB7
NTAuMGYsIDUwLjBmfTsKLSAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVNKDU1NSwgMiwgY29tbWFu
ZHMsIDIsIEdMX0ZMT0FULCBjb29yZHMpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X09QRVJBVElPTik7Ci0KLSAgICAvLyBQYXRoUGFyYW1ldGVyKjogVXNpbmcgbm9uLWV4aXN0aW5n
IHBhdGggb2JqZWN0IHByb2R1Y2VzIGVycm9yLgotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
ICAgIGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTSg1NTUsIEdMX1BBVEhfU1RST0tFX1dJRFRIX0NI
Uk9NSVVNLCA1LjBmKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgZ2xQYXRoUGFyYW1ldGVyaUNIUk9N
SVVNKDU1NSwgR0xfUEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVNLCBHTF9ST1VORF9DSFJPTUlVTSk7
Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotLy8gVGVz
dCB0aGF0IHNldHRpbmcgaW5jb3JyZWN0IHBhdGggZGF0YSBnZW5lcmF0ZXMgYSBHTCBlcnJvci4K
LVRFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdUZXN0LCBUZXN0UGF0aENvbW1hbmRzRXJyb3Jz
KQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0
YXRpYyBjb25zdCBHTGVudW0ga0ludmFsaWRDb29yZFR5cGUgPSBHTF9OT05FOwotCi0gICAgR0x1
aW50IHBhdGggICAgICAgID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDEpOwotICAgIEdMdWJ5dGUgY29t
bWFuZHNbXSA9IHtHTF9NT1ZFX1RPX0NIUk9NSVVNLCBHTF9DTE9TRV9QQVRIX0NIUk9NSVVNfTsK
LSAgICBHTGZsb2F0IGNvb3Jkc1tdICAgPSB7NTAuMGYsIDUwLjBmfTsKLQotICAgIGdsUGF0aENv
bW1hbmRzQ0hST01JVU0ocGF0aCwgMiwgY29tbWFuZHMsIC00LCBHTF9GTE9BVCwgY29vcmRzKTsK
LSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICBnbFBhdGhDb21t
YW5kc0NIUk9NSVVNKHBhdGgsIC0xLCBjb21tYW5kcywgMiwgR0xfRkxPQVQsIGNvb3Jkcyk7Ci0g
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgZ2xQYXRoQ29tbWFu
ZHNDSFJPTUlVTShwYXRoLCAyLCBjb21tYW5kcywgMiwga0ludmFsaWRDb29yZFR5cGUsIGNvb3Jk
cyk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAvLyBpbmNv
cnJlY3QgbnVtYmVyIG9mIGNvb3JkaW5hdGVzCi0gICAgZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTShw
YXRoLCAyLCBjb21tYW5kcywgc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCksIEdM
X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRzKTsKLSAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICAvLyBUaGlzIHNob3VsZCBmYWlsIGR1
ZSB0byBjbWQgY291bnQgKyBjb29yZCBjb3VudCAqIHNob3J0IHNpemUuCi0gICAgZ2xQYXRoQ29t
bWFuZHNDSFJPTUlVTShwYXRoLCAyLCBjb21tYW5kcywgc3RkOjpudW1lcmljX2xpbWl0czxHTHNp
emVpPjo6bWF4KCksIEdMX1NIT1JULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRz
KTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgZ2xE
ZWxldGVQYXRoc0NIUk9NSVVNKHBhdGgsIDEpOwotfQotCi0vLyBUZXN0IHRoYXQgdHJ5aW5nIHRv
IHJlbmRlciBhIHBhdGggd2l0aCBpbnZhbGlkIGFyZ3VtZW50cwotLy8gZ2VuZXJhdGVzIGEgR0wg
ZXJyb3IuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdCwgVGVzdFBhdGhSZW5kZXJp
bmdJbnZhbGlkQXJncykKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBHTHVpbnQgcGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgxKTsKLSAgICBnbFBh
dGhDb21tYW5kc0NIUk9NSVVNKHBhdGgsIDAsIE5VTEwsIDAsIEdMX0ZMT0FULCBOVUxMKTsKLQot
ICAgIC8vIFZlcmlmeSB0aGF0IG5vcm1hbCBjYWxscyB3b3JrLgotICAgIGdsU3RlbmNpbEZpbGxQ
YXRoQ0hST01JVU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4N0YpOwotICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU0o
cGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4N0YsIEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlV
TSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBVc2luZyBpbnZhbGlkIGZp
bGwgbW9kZSBjYXVzZXMgSU5WQUxJRF9FTlVNLgotICAgIGdsU3RlbmNpbEZpbGxQYXRoQ0hST01J
VU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0gLSAxLCAweDdGKTsKLSAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENI
Uk9NSVVNKHBhdGgsIEdMX0NPVU5UX1VQX0NIUk9NSVVNIC0gMSwgMHg3RiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlVTSk7Ci0g
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAvLyBVc2luZyBpbnZh
bGlkIGNvdmVyIG1vZGUgY2F1c2VzIElOVkFMSURfRU5VTS4KLSAgICBnbENvdmVyRmlsbFBhdGhD
SFJPTUlVTShwYXRoLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSAtIDEpOwotICAgIEVYUEVDVF9F
UShzdGF0aWNfY2FzdDxHTGVudW0+KEdMX0lOVkFMSURfRU5VTSksIGdsR2V0RXJyb3IoKSk7Ci0g
ICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBHTF9DT1VOVF9VUF9D
SFJPTUlVTSwgMHg3RiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0JPVU5ESU5HX0JPWF9DSFJPTUlVTSArIDEpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZB
TElEX0VOVU0pOwotCi0gICAgLy8gVXNpbmcgbWFzaysxIG5vdCBiZWluZyBwb3dlciBvZiB0d28g
Y2F1c2VzIElOVkFMSURfVkFMVUUgd2l0aCB1cC9kb3duIGZpbGwgbW9kZQotICAgIGdsU3RlbmNp
bEZpbGxQYXRoQ0hST01JVU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4NDApOwotICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIGdsU3RlbmNpbFRoZW5D
b3ZlckZpbGxQYXRoQ0hST01JVU0ocGF0aCwgR0xfQ09VTlRfRE9XTl9DSFJPTUlVTSwgMTIsIEdM
X0JPVU5ESU5HX0JPWF9DSFJPTUlVTSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURf
VkFMVUUpOwotCi0gICAgLy8gY2hlY2sgaW5jb3JyZWN0IGluc3RhbmNlIHBhcmFtZXRlcnMuCi0K
LSAgICAvLyBDb3ZlckZpbGxQYXRoSW5zdGFuY2VkCi0gICAgewotICAgICAgICBnbENvdmVyRmls
bFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgtMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xf
Q09OVkVYX0hVTExfQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX05PTkUsIE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJ
RF9WQUxVRSk7Ci0KLSAgICAgICAgZ2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwg
R0xfRkxPQVQsICZwYXRoLCAwLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwgR0xfTk9ORSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAgIEVY
UEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgICAgIGdsQ292ZXJGaWxsUGF0
aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgTlVMTCwgMCwgR0xfQ09OVkVY
X0hVTExfQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX05PTkUsIE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxV
RSk7Ci0KLSAgICAgICAgZ2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5T
SUdORURfSU5ULCAmcGF0aCwgMCwgR0xfVU5TSUdORURfSU5ULCBHTF9OT05FLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0dM
X0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xDb3ZlckZpbGxQYXRoSW5zdGFu
Y2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xfQ09OVkVYX0hVTExf
Q0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VO
U0lHTkVEX0lOVCwgTlVMTCk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VO
VU0pOwotCi0gICAgICAgIGdsQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VO
U0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9UUkFOU0xBVEVfWF9DSFJPTUlVTSwg
TlVMTCk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICB9
Ci0KLSAgICAvLyBDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQKLSAgICB7Ci0gICAgICAgIGdsQ292
ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oLTEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgs
IDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX05PTkUsIE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1Io
R0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICAgICAgZ2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRD
SFJPTUlVTSgxLCBHTF9GTE9BVCwgJnBhdGgsIDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLCBH
TF9OT05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwp
OwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgICAgICBn
bENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgTlVM
TCwgMCwgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfTk9ORSwgTlVMTCk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJP
UihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgICAgICBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNl
ZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX1VOU0lHTkVEX0lOVCwg
R0xfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM
KTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAg
Z2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZw
YXRoLCAwLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsIE5VTEwpOwotICAgICAgICBFWFBF
Q1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgICAgICBnbENvdmVyU3Ryb2tlUGF0
aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX0NPTlZF
WF9IVUxMX0NIUk9NSVVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1RSQU5TTEFURV9YX0NIUk9NSVVNLCBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0dMX0VS
Uk9SKEdMX0lOVkFMSURfVkFMVUUpOwotICAgIH0KLQotICAgIC8vIFN0ZW5jaWxGaWxsUGF0aElu
c3RhbmNlZAotICAgIHsKLSAgICAgICAgZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlV
TSgtMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4
MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLCBO
VUxMKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAg
ICAgIGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfRkxPQVQsICZwYXRo
LCAwLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgMHgwLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX05PTkUsIE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xfRVJS
T1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgICAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNl
ZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgTlVMTCwgMCwgR0xfQ09VTlRfVVBfQ0hST01J
VU0sIDB4MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9O
T05FLCBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwot
Ci0gICAgICAgIGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdO
RURfSU5ULCAmcGF0aCwgMCwgR0xfVU5TSUdORURfSU5ULCAweDAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwgTlVMTCk7Ci0gICAgICAgIEVYUEVD
VF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgICAgIGdsU3RlbmNpbEZpbGxQYXRo
SW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xfQ09VTlRf
VVBfQ0hST01JVU0sIDB4MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9OT05FLCBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURf
VkFMVUUpOwotCi0gICAgICAgIGdsU3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwg
R0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4MCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQs
IE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAg
ICAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lO
VCwgJnBhdGgsIDAsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAweDAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVFJBTlNMQVRFX1hfQ0hST01JVU0sIE5VTEwp
OwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgfQotCi0g
ICAgLy8gU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWQKLSAgICB7Ci0gICAgICAgIGdsU3RlbmNp
bFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgtMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwg
MCwgMHgwMCwgMHgwMCwgR0xfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9W
QUxVRSk7Ci0KLSAgICAgICAgZ2xTdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKDEs
IEdMX0ZMT0FULCAmcGF0aCwgMCwgMHgwMCwgMHgwMCwgR0xfTk9ORSwgTlVMTCk7Ci0gICAgICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgICAgIGdsU3RlbmNpbFN0
cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsIG51bGxwdHIsIDAs
IDB4MDAsIDB4MDAsIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFM
VUUpOwotCi0gICAgICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBH
TF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCAweDAwLCAweDAwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCBOVUxMKTsKLSAgICAg
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xTdGVuY2ls
U3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAs
IDB4MDAsIDB4MDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9UUkFOU0xBVEVfWF9DSFJPTUlVTSwgTlVMTCk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJP
UihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICB9Ci0KLSAgICAvLyBTdGVuY2lsVGhlbkNvdmVyRmls
bFBhdGhJbnN0YW5jZWQKLSAgICB7Ci0gICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRo
SW5zdGFuY2VkQ0hST01JVU0oLTEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09VTlRfVVBf
Q0hST01JVU0sIDAsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsIE5VTEwpOwotICAgICAgICBF
WFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICAgICAgZ2xTdGVuY2lsVGhl
bkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9GTE9BVCwgJnBhdGgsIDAsIEdM
X0NPTlZFWF9IVUxMX0NIUk9NSVVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCBHTF9OT05FLCBOVUxM
KTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAg
Z2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05F
RF9JTlQsIE5VTEwsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0sIDAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09VTlRfVVBfQ0hST01JVU0s
IEdMX05PTkUsIE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxV
RSk7Ci0KLSAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlV
TSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCBHTF9VTlNJR05FRF9JTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgR0xfQ09VTlRf
VVBfQ0hST01JVU0sIEdMX05PTkUsIE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xf
SU5WQUxJRF9FTlVNKTsKLQotICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3Rh
bmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09OVkVYX0hVTExfQ0hS
T01JVU0sIDAsIEdMX1VOU0lHTkVEX0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLCBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0dM
X0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmls
bFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTlZF
WF9IVUxMX0NIUk9NSVVNLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCBHTF9GTE9BVCwgTlVMTCk7Ci0g
ICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgICAgIGdsU3Rl
bmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oCi0gICAgICAgICAgICAxLCBH
TF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwgMCwgR0xf
Q09VTlRfVVBfQ0hST01JVU0sCi0gICAgICAgICAgICBHTF9UUkFOU0xBVEVfWF9DSFJPTUlVTSwg
TlVMTCk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICB9
Ci0KLSAgICAvLyBTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZAotICAgIHsKLSAg
ICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKC0xLCBH
TF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCAweDAsIDB4MCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVN
LCBHTF9OT05FLCBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFM
VUUpOwotCi0gICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJP
TUlVTSgxLCBHTF9GTE9BVCwgJnBhdGgsIDAsIDB4MCwgMHgwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09OVkVYX0hVTExfQ0hST01J
VU0sIEdMX05PTkUsIE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9F
TlVNKTsKLQotICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hS
T01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCBOVUxMLCAwLCAweDAsIDB4MCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTlZFWF9IVUxM
X0NIUk9NSVVNLCBHTF9OT05FLCBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lO
VkFMSURfVkFMVUUpOwotCi0gICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0
YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCAweDAsIDB4MCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZM
T0FULCBHTF9OT05FLCBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURf
RU5VTSk7Ci0KLSAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENI
Uk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIDB4MCwgMHgwLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09OVkVYX0hV
TExfQ0hST01JVU0sIEdMX0ZMT0FULCBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdM
X0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aElu
c3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIDB4MCwgMHgwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Q09OVkVYX0hVTExfQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9UUkFOU0xBVEVfWF9DSFJPTUlVTSwgTlVMTCk7Ci0gICAg
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICB9Ci0KLSAgICBnbERl
bGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7Ci19Ci0KLWNvbnN0IEdMZmxvYXQga1Byb2plY3Rp
b25NYXRyaXhbMTZdID0gezIuMGYgLyBrUmVzb2x1dGlvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4w
ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjBmIC8ga1Jlc29sdXRpb24sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEuMGYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEuMGYsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAtMS4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLjBm
fTsKLQotY2xhc3MgQ0hST01JVU1QYXRoUmVuZGVyaW5nRHJhd1Rlc3QgOiBwdWJsaWMgQU5HTEVU
ZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBDSFJPTUlVTVBhdGhSZW5kZXJpbmdEcmF3VGVzdCgp
Ci0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aChrUmVzb2x1dGlvbik7Ci0gICAgICAgIHNl
dFdpbmRvd0hlaWdodChrUmVzb2x1dGlvbik7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7
Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJp
dHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmln
RGVwdGhCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdTdGVuY2lsQml0cyg4KTsKLSAgICB9Ci0K
LSAgICBib29sIGlzQXBwbGljYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGV4dGVuc2lvbkVuYWJsZWQo
IkdMX0NIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIik7IH0KLQotICAgIHZvaWQgc2V0dXBTdGF0ZUZv
clRlc3RQYXR0ZXJuKCkKLSAgICB7Ci0gICAgICAgIGdsVmlld3BvcnQoMCwgMCwga1Jlc29sdXRp
b24sIGtSZXNvbHV0aW9uKTsKLSAgICAgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYs
IDAuMGYpOwotICAgICAgICBnbFN0ZW5jaWxNYXNrKDB4ZmZmZmZmZmYpOwotICAgICAgICBnbENs
ZWFyU3RlbmNpbCgwKTsKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xf
U1RFTkNJTF9CVUZGRVJfQklUKTsKLSAgICAgICAgZ2xFbmFibGUoR0xfU1RFTkNJTF9URVNUKTsK
LQotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciAqa1ZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAg
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2
ZWM0KDEuMCk7IFxuIgotICAgICAgICAgICAgIn0iOwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBj
aGFyICprRnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgotICAgICAgICAgICAgInVuaWZvcm0gdmVjNCBjb2xvcjtcbiIKLSAgICAg
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSBj
b2xvcjtcbiIKLSAgICAgICAgICAgICJ9IjsKLQotICAgICAgICBHTHVpbnQgcHJvZ3JhbSA9IENv
bXBpbGVQcm9ncmFtKGtWZXJ0ZXhTaGFkZXJTb3VyY2UsIGtGcmFnbWVudFNoYWRlclNvdXJjZSk7
Ci0gICAgICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKLSAgICAgICAgbUNvbG9yTG9jID0gZ2xH
ZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgImNvbG9yIik7Ci0gICAgICAgIGdsRGVsZXRlUHJv
Z3JhbShwcm9ncmFtKTsKLQotICAgICAgICAvLyBTZXQgdXAgb3J0aG9nb25hbCBwcm9qZWN0aW9u
IHdpdGggbmVhci9mYXIgcGxhbmUgZGlzdGFuY2Ugb2YgMi4KLSAgICAgICAgZ2xNYXRyaXhMb2Fk
ZkNIUk9NSVVNKEdMX1BBVEhfUFJPSkVDVElPTl9DSFJPTUlVTSwga1Byb2plY3Rpb25NYXRyaXgp
OwotICAgICAgICBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNKEdMX1BBVEhfTU9ERUxWSUVX
X0NIUk9NSVVNKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHNldHVwUGF0aFN0YXRlRm9yVGVzdFBhdHRlcm4oR0x1aW50IHBhdGgpCi0gICAgewot
ICAgICAgICBzdGF0aWMgY29uc3QgR0x1Ynl0ZSBrQ29tbWFuZHNbXSA9IHtHTF9NT1ZFX1RPX0NI
Uk9NSVVNLCBHTF9MSU5FX1RPX0NIUk9NSVVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9RVUFEUkFUSUNfQ1VSVkVfVE9fQ0hST01JVU0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NVQklDX0NVUlZFX1RPX0NI
Uk9NSVVNLCBHTF9DTE9TRV9QQVRIX0NIUk9NSVVNfTsKLQotICAgICAgICBzdGF0aWMgY29uc3Qg
R0xmbG9hdCBrQ29vcmRzW10gPSB7NTAuMGYsIDUwLjBmLCA3NS4wZiwgNzUuMGYsIDEwMC4wZiwg
NjIuNWYsIDUwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MjUuNWYsIDAuMGYsICA2Mi41ZiwgNTAuMGYsIDUwLjBmLCAgMjUuMGYsIDc1LjBmfTsKLQotICAg
ICAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVNKHBhdGgsIDUsIGtDb21tYW5kcywgMTQsIEdMX0ZM
T0FULCBrQ29vcmRzKTsKLSAgICAgICAgZ2xQYXRoUGFyYW1ldGVyZkNIUk9NSVVNKHBhdGgsIEdM
X1BBVEhfU1RST0tFX1dJRFRIX0NIUk9NSVVNLCA1LjBmKTsKLSAgICAgICAgZ2xQYXRoUGFyYW1l
dGVyZkNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfTUlURVJfTElNSVRfQ0hST01JVU0sIDEuMGYpOwot
ICAgICAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0ocGF0aCwgR0xfUEFUSF9TVFJPS0VfQk9V
TkRfQ0hST01JVU0sIC4wMmYpOwotICAgICAgICBnbFBhdGhQYXJhbWV0ZXJpQ0hST01JVU0ocGF0
aCwgR0xfUEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVNLCBHTF9ST1VORF9DSFJPTUlVTSk7Ci0gICAg
ICAgIGdsUGF0aFBhcmFtZXRlcmlDSFJPTUlVTShwYXRoLCBHTF9QQVRIX0VORF9DQVBTX0NIUk9N
SVVNLCBHTF9TUVVBUkVfQ0hST01JVU0pOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LSAgICB9Ci0KLSAgICB2b2lkIHZlcmlmeVRlc3RQYXR0ZXJuRmlsbChHTGZsb2F0IGZseCwgR0xm
bG9hdCBmbHkpCi0gICAgewotICAgICAgICBzdGF0aWMgY29uc3QgR0xpbnQga0ZpbGxDb29yZHNb
XSAgPSB7NTUsIDU0LCA1MCwgMjgsIDY2LCA2M307Ci0gICAgICAgIHN0YXRpYyBjb25zdCBhbmds
ZTo6R0xDb2xvciBrQmx1ZSA9IHswLCAwLCAyNTUsIDI1NX07Ci0KLSAgICAgICAgR0xpbnQgeCA9
IHN0YXRpY19jYXN0PEdMaW50PihmbHgpOwotICAgICAgICBHTGludCB5ID0gc3RhdGljX2Nhc3Q8
R0xpbnQ+KGZseSk7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA2OyBpICs9IDIp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEdMaW50IGZ4ID0ga0ZpbGxDb29yZHNbaV07Ci0gICAg
ICAgICAgICBHTGludCBmeSA9IGtGaWxsQ29vcmRzW2kgKyAxXTsKLSAgICAgICAgICAgIEVYUEVD
VF9UUlVFKENoZWNrUGl4ZWxzKHggKyBmeCwgeSArIGZ5LCAxLCAxLCAwLCBrQmx1ZSkpOwotICAg
ICAgICB9Ci0gICAgfQotICAgIHZvaWQgdmVyaWZ5VGVzdFBhdHRlcm5CZyhHTGZsb2F0IGZ4LCBH
TGZsb2F0IGZ5KQotICAgIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IEdMaW50IGtCYWNrZ3JvdW5k
Q29vcmRzW10gICAgID0gezgwLCA4MCwgMjAsIDIwLCA5MCwgMX07Ci0gICAgICAgIHN0YXRpYyBj
b25zdCBhbmdsZTo6R0xDb2xvciBrRXhwZWN0ZWRDb2xvciA9IHswLCAwLCAwLCAwfTsKLQotICAg
ICAgICBHTGludCB4ID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KGZ4KTsKLSAgICAgICAgR0xpbnQgeSA9
IHN0YXRpY19jYXN0PEdMaW50PihmeSk7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCA2OyBpICs9IDIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEdMaW50IGJ4ID0ga0JhY2tncm91
bmRDb29yZHNbaV07Ci0gICAgICAgICAgICBHTGludCBieSA9IGtCYWNrZ3JvdW5kQ29vcmRzW2kg
KyAxXTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKENoZWNrUGl4ZWxzKHggKyBieCwgeSArIGJ5
LCAxLCAxLCAwLCBrRXhwZWN0ZWRDb2xvcikpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9p
ZCB2ZXJpZnlUZXN0UGF0dGVyblN0cm9rZShHTGZsb2F0IGZ4LCBHTGZsb2F0IGZ5KQotICAgIHsK
LSAgICAgICAgR0xpbnQgeCA9IHN0YXRpY19jYXN0PEdMaW50PihmeCk7Ci0gICAgICAgIEdMaW50
IHkgPSBzdGF0aWNfY2FzdDxHTGludD4oZnkpOwotCi0gICAgICAgIC8vIEluc2lkZSB0aGUgc3Ry
b2tlIHdlIHNob3VsZCBoYXZlIGdyZWVuLgotICAgICAgICBzdGF0aWMgY29uc3QgYW5nbGU6OkdM
Q29sb3Iga0dyZWVuID0gezAsIDI1NSwgMCwgMjU1fTsKLSAgICAgICAgRVhQRUNUX1RSVUUoQ2hl
Y2tQaXhlbHMoeCArIDUwLCB5ICsgNTMsIDEsIDEsIDAsIGtHcmVlbikpOwotICAgICAgICBFWFBF
Q1RfVFJVRShDaGVja1BpeGVscyh4ICsgMjYsIHkgKyA3NiwgMSwgMSwgMCwga0dyZWVuKSk7Ci0K
LSAgICAgICAgLy8gT3V0c2lkZSB0aGUgcGF0aCB3ZSBzaG91bGQgaGF2ZSBibGFjay4KLSAgICAg
ICAgc3RhdGljIGNvbnN0IGFuZ2xlOjpHTENvbG9yIGJsYWNrID0gezAsIDAsIDAsIDB9OwotICAg
ICAgICBFWFBFQ1RfVFJVRShDaGVja1BpeGVscyh4ICsgMTAsIHkgKyAxMCwgMSwgMSwgMCwgYmxh
Y2spKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoQ2hlY2tQaXhlbHMoeCArIDgwLCB5ICsgODAsIDEs
IDEsIDAsIGJsYWNrKSk7Ci0gICAgfQotCi0gICAgR0x1aW50IG1Db2xvckxvYzsKLX07Ci0KLS8v
IFRlc3RzIHRoYXQgYmFzaWMgcGF0aCByZW5kZXJpbmcgZnVuY3Rpb25zIHdvcmsuCi1URVNUX1Ao
Q0hST01JVU1QYXRoUmVuZGVyaW5nRHJhd1Rlc3QsIFRlc3RQYXRoUmVuZGVyaW5nKQotewotICAg
IGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0YXRpYyBjb25z
dCBmbG9hdCBrQmx1ZVtdICA9IHswLjBmLCAwLjBmLCAxLjBmLCAxLjBmfTsKLSAgICBzdGF0aWMg
Y29uc3QgZmxvYXQga0dyZWVuW10gPSB7MC4wZiwgMS4wZiwgMC4wZiwgMS4wZn07Ci0KLSAgICBz
ZXR1cFN0YXRlRm9yVGVzdFBhdHRlcm4oKTsKLQotICAgIEdMdWludCBwYXRoID0gZ2xHZW5QYXRo
c0NIUk9NSVVNKDEpOwotICAgIHNldHVwUGF0aFN0YXRlRm9yVGVzdFBhdHRlcm4ocGF0aCk7Ci0K
LSAgICAvLyBEbyB0aGUgc3RlbmNpbCBmaWxsLCBjb3ZlciBmaWxsLCBzdGVuY2lsIHN0cm9rZSwg
Y292ZXIgc3Ryb2tlCi0gICAgLy8gaW4gdW5jb252ZW50aW9uYWwgb3JkZXI6Ci0gICAgLy8gMSkg
c3RlbmNpbCB0aGUgc3Ryb2tlIGluIHN0ZW5jaWwgaGlnaCBiaXQKLSAgICAvLyAyKSBzdGVuY2ls
IHRoZSBmaWxsIGluIGxvdyBiaXRzCi0gICAgLy8gMykgY292ZXIgdGhlIGZpbGwKLSAgICAvLyA0
KSBjb3ZlciB0aGUgc3Ryb2tlCi0gICAgLy8gVGhpcyBpcyBkb25lIHRvIGNoZWNrIHRoYXQgZ2xQ
YXRoU3RlbmNpbEZ1bmMgd29ya3MsIGVnIHRoZSBtYXNrCi0gICAgLy8gZ29lcyB0aHJvdWdoLiBT
dGVuY2lsIGZ1bmMgaXMgbm90IHRlc3RlZCBBVE0sIGZvciBzaW1wbGljaXR5LgotCi0gICAgZ2xQ
YXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTF9BTFdBWVMsIDAsIDB4RkYpOwotICAgIGdsU3RlbmNp
bFN0cm9rZVBhdGhDSFJPTUlVTShwYXRoLCAweDgwLCAweDgwKTsKLQotICAgIGdsUGF0aFN0ZW5j
aWxGdW5jQ0hST01JVU0oR0xfQUxXQVlTLCAwLCAweDdGKTsKLSAgICBnbFN0ZW5jaWxGaWxsUGF0
aENIUk9NSVVNKHBhdGgsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAweDdGKTsKLQotICAgIGdsU3Rl
bmNpbEZ1bmMoR0xfTEVTUywgMCwgMHg3Rik7Ci0gICAgZ2xTdGVuY2lsT3AoR0xfS0VFUCwgR0xf
S0VFUCwgR0xfWkVSTyk7Ci0gICAgZ2xVbmlmb3JtNGZ2KG1Db2xvckxvYywgMSwga0JsdWUpOwot
ICAgIGdsQ292ZXJGaWxsUGF0aENIUk9NSVVNKHBhdGgsIEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlV
TSk7Ci0KLSAgICBnbFN0ZW5jaWxGdW5jKEdMX0VRVUFMLCAweDgwLCAweDgwKTsKLSAgICBnbFN0
ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9aRVJPKTsKLSAgICBnbFVuaWZvcm00ZnYobUNv
bG9yTG9jLCAxLCBrR3JlZW4pOwotICAgIGdsQ292ZXJTdHJva2VQYXRoQ0hST01JVU0ocGF0aCwg
R0xfQ09OVkVYX0hVTExfQ0hST01JVU0pOwotCi0gICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVNKHBh
dGgsIDEpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBWZXJpZnkgdGhl
IGltYWdlLgotICAgIHZlcmlmeVRlc3RQYXR0ZXJuRmlsbCgwLCAwKTsKLSAgICB2ZXJpZnlUZXN0
UGF0dGVybkJnKDAsIDApOwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tlKDAsIDApOwotfQot
Ci0vLyBUZXN0IHRoYXQgU3RlbmNpbFRoZW57U3Ryb2tlLEZpbGx9IHBhdGggcmVuZGVyaW5nIGZ1
bmN0aW9ucyB3b3JrCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nRHJhd1Rlc3QsIFRlc3RQ
YXRoUmVuZGVyaW5nVGhlbkZ1bmN0aW9ucykKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBzdGF0aWMgZmxvYXQga0JsdWVbXSAgPSB7MC4wZiwgMC4w
ZiwgMS4wZiwgMS4wZn07Ci0gICAgc3RhdGljIGZsb2F0IGtHcmVlbltdID0gezAuMGYsIDEuMGYs
IDAuMGYsIDEuMGZ9OwotCi0gICAgc2V0dXBTdGF0ZUZvclRlc3RQYXR0ZXJuKCk7Ci0KLSAgICBH
THVpbnQgcGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgxKTsKLSAgICBzZXR1cFBhdGhTdGF0ZUZv
clRlc3RQYXR0ZXJuKHBhdGgpOwotCi0gICAgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTF9B
TFdBWVMsIDAsIDB4RkYpOwotICAgIGdsU3RlbmNpbEZ1bmMoR0xfRVFVQUwsIDB4ODAsIDB4ODAp
OwotICAgIGdsU3RlbmNpbE9wKEdMX0tFRVAsIEdMX0tFRVAsIEdMX1pFUk8pOwotICAgIGdsVW5p
Zm9ybTRmdihtQ29sb3JMb2MsIDEsIGtHcmVlbik7Ci0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ry
b2tlUGF0aENIUk9NSVVNKHBhdGgsIDB4ODAsIDB4ODAsIEdMX0JPVU5ESU5HX0JPWF9DSFJPTUlV
TSk7Ci0KLSAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKEdMX0FMV0FZUywgMCwgMHg3Rik7
Ci0gICAgZ2xTdGVuY2lsRnVuYyhHTF9MRVNTLCAwLCAweDdGKTsKLSAgICBnbFN0ZW5jaWxPcChH
TF9LRUVQLCBHTF9LRUVQLCBHTF9aRVJPKTsKLSAgICBnbFVuaWZvcm00ZnYobUNvbG9yTG9jLCAx
LCBrQmx1ZSk7Ci0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBH
TF9DT1VOVF9VUF9DSFJPTUlVTSwgMHg3RiwgR0xfQ09OVkVYX0hVTExfQ0hST01JVU0pOwotCi0g
ICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVNKHBhdGgsIDEpOwotCi0gICAgLy8gVmVyaWZ5IHRoZSBp
bWFnZS4KLSAgICB2ZXJpZnlUZXN0UGF0dGVybkZpbGwoMCwgMCk7Ci0gICAgdmVyaWZ5VGVzdFBh
dHRlcm5CZygwLCAwKTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVyblN0cm9rZSgwLCAwKTsKLX0KLQot
Ly8gVGVzdHMgdGhhdCBkcmF3aW5nIHdpdGggKkluc3RhbmNlZCBmdW5jdGlvbnMgd29yay4KLVRF
U1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdEcmF3VGVzdCwgVGVzdFBhdGhSZW5kZXJpbmdJbnN0
YW5jZWQpCi17Ci0gICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgc3RhdGljIGNvbnN0IGZsb2F0IGtCbHVlW10gID0gezAuMGYsIDAuMGYsIDEuMGYsIDEuMGZ9
OwotICAgIHN0YXRpYyBjb25zdCBmbG9hdCBrR3JlZW5bXSA9IHswLjBmLCAxLjBmLCAwLjBmLCAx
LjBmfTsKLQotICAgIHNldHVwU3RhdGVGb3JUZXN0UGF0dGVybigpOwotCi0gICAgR0x1aW50IHBh
dGggPSBnbEdlblBhdGhzQ0hST01JVU0oMSk7Ci0gICAgc2V0dXBQYXRoU3RhdGVGb3JUZXN0UGF0
dGVybihwYXRoKTsKLQotICAgIGNvbnN0IEdMdWludCBrUGF0aHNbXSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSB7MSwgMSwgMSwgMSwgMX07Ci0gICAgY29uc3QgR0xzaXplaSBrUGF0aENv
dW50ICAgICAgICAgICAgICAgICAgICAgICAgICA9IDU7Ci0gICAgY29uc3QgR0xmbG9hdCBrU2hh
cGVTaXplICAgICAgICAgICAgICAgICAgICAgICAgICA9IDgwLjBmOwotICAgIHN0YXRpYyBjb25z
dCBHTGZsb2F0IGtUcmFuc2Zvcm1zW2tQYXRoQ291bnQgKiAxMl0gPSB7Ci0gICAgICAgIDEuMGYs
IDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsICAg
ICAgICAgICAwLjBmLCAgICAgICAwLjBmLAotICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBm
LCAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmLCBrU2hhcGVTaXplLCAgICAgMC4wZiwgICAg
ICAgMC4wZiwKLSAgICAgICAgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwgMC4w
ZiwgMC4wZiwgMS4wZiwga1NoYXBlU2l6ZSAqIDIsIDAuMGYsICAgICAgIDAuMGYsCi0gICAgICAg
IDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIDAu
MGYsICAgICAgICAgICBrU2hhcGVTaXplLCAwLjBmLAotICAgICAgICAxLjBmLCAwLjBmLCAwLjBm
LCAwLjBmLCAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmLCBrU2hhcGVTaXplLCAgICAga1No
YXBlU2l6ZSwgMC4wZn07Ci0KLSAgICAvLyBUaGUgdGVzdCBwYXR0ZXJuIGlzIHRoZSBzYW1lIGFz
IGluIHRoZSBzaW1wbGUgZHJhdyBjYXNlIGFib3ZlLAotICAgIC8vIGV4Y2VwdCB0aGF0IHRoZSBw
YXRoIGlzIGRyYXduIGtQYXRoQ291bnQgdGltZXMgd2l0aCBkaWZmZXJlbnQgb2Zmc2V0cy4KLSAg
ICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKEdMX0FMV0FZUywgMCwgMHhGRik7Ci0gICAgZ2xT
dGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKGtQYXRoQ291bnQsIEdMX1VOU0lHTkVE
X0lOVCwga1BhdGhzLCBwYXRoIC0gMSwgMHg4MCwgMHg4MCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfQUZGSU5FXzNEX0NIUk9NSVVNLCBrVHJhbnNmb3Jtcyk7
Ci0KLSAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKEdMX0FMV0FZUywgMCwgMHg3Rik7Ci0g
ICAgZ2xVbmlmb3JtNGZ2KG1Db2xvckxvYywgMSwga0JsdWUpOwotICAgIGdsU3RlbmNpbEZpbGxQ
YXRoSW5zdGFuY2VkQ0hST01JVU0oa1BhdGhDb3VudCwgR0xfVU5TSUdORURfSU5ULCBrUGF0aHMs
IHBhdGggLSAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09V
TlRfVVBfQ0hST01JVU0sIDB4N0YsIEdMX0FGRklORV8zRF9DSFJPTUlVTSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtUcmFuc2Zvcm1zKTsKLQotICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOwotCi0gICAgZ2xTdGVuY2lsRnVuYyhHTF9MRVNTLCAwLCAweDdGKTsKLSAg
ICBnbFN0ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9aRVJPKTsKLSAgICBnbENvdmVyRmls
bFBhdGhJbnN0YW5jZWRDSFJPTUlVTShrUGF0aENvdW50LCBHTF9VTlNJR05FRF9JTlQsIGtQYXRo
cywgcGF0aCAtIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQk9V
TkRJTkdfQk9YX09GX0JPVU5ESU5HX0JPWEVTX0NIUk9NSVVNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0FGRklORV8zRF9DSFJPTUlVTSwga1RyYW5zZm9ybXMpOwot
Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFN0ZW5jaWxGdW5jKEdMX0VRVUFM
LCAweDgwLCAweDgwKTsKLSAgICBnbFN0ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9aRVJP
KTsKLSAgICBnbFVuaWZvcm00ZnYobUNvbG9yTG9jLCAxLCBrR3JlZW4pOwotICAgIGdsQ292ZXJT
dHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oa1BhdGhDb3VudCwgR0xfVU5TSUdORURfSU5ULCBr
UGF0aHMsIHBhdGggLSAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfQk9VTkRJTkdfQk9YX09GX0JPVU5ESU5HX0JPWEVTX0NIUk9NSVVNLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQUZGSU5FXzNEX0NIUk9NSVVNLCBrVHJhbnNm
b3Jtcyk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsRGVsZXRlUGF0aHND
SFJPTUlVTShwYXRoLCAxKTsKLQotICAgIC8vIFZlcmlmeSB0aGUgaW1hZ2UuCi0gICAgdmVyaWZ5
VGVzdFBhdHRlcm5GaWxsKDAuMGYsIDAuMGYpOwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuQmcoMC4w
ZiwgMC4wZik7Ci0gICAgdmVyaWZ5VGVzdFBhdHRlcm5TdHJva2UoMC4wZiwgMC4wZik7Ci0KLSAg
ICB2ZXJpZnlUZXN0UGF0dGVybkZpbGwoa1NoYXBlU2l6ZSwgMC4wZik7Ci0gICAgdmVyaWZ5VGVz
dFBhdHRlcm5CZyhrU2hhcGVTaXplLCAwLjBmKTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVyblN0cm9r
ZShrU2hhcGVTaXplLCAwLjBmKTsKLQotICAgIHZlcmlmeVRlc3RQYXR0ZXJuRmlsbChrU2hhcGVT
aXplICogMiwgMC4wZik7Ci0gICAgdmVyaWZ5VGVzdFBhdHRlcm5CZyhrU2hhcGVTaXplICogMiwg
MC4wZik7Ci0gICAgdmVyaWZ5VGVzdFBhdHRlcm5TdHJva2Uoa1NoYXBlU2l6ZSAqIDIsIDAuMGYp
OwotCi0gICAgdmVyaWZ5VGVzdFBhdHRlcm5GaWxsKDAuMGYsIGtTaGFwZVNpemUpOwotICAgIHZl
cmlmeVRlc3RQYXR0ZXJuQmcoMC4wZiwga1NoYXBlU2l6ZSk7Ci0gICAgdmVyaWZ5VGVzdFBhdHRl
cm5TdHJva2UoMC4wZiwga1NoYXBlU2l6ZSk7Ci0KLSAgICB2ZXJpZnlUZXN0UGF0dGVybkZpbGwo
a1NoYXBlU2l6ZSwga1NoYXBlU2l6ZSk7Ci0gICAgdmVyaWZ5VGVzdFBhdHRlcm5CZyhrU2hhcGVT
aXplLCBrU2hhcGVTaXplKTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVyblN0cm9rZShrU2hhcGVTaXpl
LCBrU2hhcGVTaXplKTsKLX0KLQotLy8gVGVzdCB0aGF0IGluc3RhbmNlZCBmaWxsL3N0cm9rZSB0
aGVuIGNvdmVyIGZ1bmN0aW9ucyB3b3JrLgotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ0Ry
YXdUZXN0LCBUZXN0UGF0aFJlbmRlcmluZ1RoZW5GdW5jdGlvbnNJbnN0YW5jZWQpCi17Ci0gICAg
aWYgKCFpc0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RhdGljIGNvbnN0
IGZsb2F0IGtCbHVlW10gID0gezAuMGYsIDAuMGYsIDEuMGYsIDEuMGZ9OwotICAgIHN0YXRpYyBj
b25zdCBmbG9hdCBrR3JlZW5bXSA9IHswLjBmLCAxLjBmLCAwLjBmLCAxLjBmfTsKLQotICAgIHNl
dHVwU3RhdGVGb3JUZXN0UGF0dGVybigpOwotCi0gICAgR0x1aW50IHBhdGggPSBnbEdlblBhdGhz
Q0hST01JVU0oMSk7Ci0gICAgc2V0dXBQYXRoU3RhdGVGb3JUZXN0UGF0dGVybihwYXRoKTsKLQot
ICAgIGNvbnN0IEdMdWludCBrUGF0aHNbXSAgICAgICAgICAgICAgPSB7MSwgMSwgMSwgMSwgMX07
Ci0gICAgY29uc3QgR0xzaXplaSBrUGF0aENvdW50ICAgICAgICAgICA9IDU7Ci0gICAgY29uc3Qg
R0xmbG9hdCBrU2hhcGVTaXplICAgICAgICAgICA9IDgwLjBmOwotICAgIHN0YXRpYyBjb25zdCBH
TGZsb2F0IGtUcmFuc2Zvcm1zW10gPSB7Ci0gICAgICAgIDAuMGYsIDAuMGYsIGtTaGFwZVNpemUs
IDAuMGYsICAgICAgIGtTaGFwZVNpemUgKiAyLAotICAgICAgICAwLjBmLCAwLjBmLCBrU2hhcGVT
aXplLCBrU2hhcGVTaXplLCBrU2hhcGVTaXplLAotICAgIH07Ci0KLSAgICBnbFBhdGhTdGVuY2ls
RnVuY0NIUk9NSVVNKEdMX0FMV0FZUywgMCwgMHhGRik7Ci0gICAgZ2xTdGVuY2lsRnVuYyhHTF9F
UVVBTCwgMHg4MCwgMHg4MCk7Ci0gICAgZ2xTdGVuY2lsT3AoR0xfS0VFUCwgR0xfS0VFUCwgR0xf
WkVSTyk7Ci0gICAgZ2xVbmlmb3JtNGZ2KG1Db2xvckxvYywgMSwga0dyZWVuKTsKLSAgICBnbFN0
ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oCi0gICAgICAgIGtQYXRo
Q291bnQsIEdMX1VOU0lHTkVEX0lOVCwga1BhdGhzLCBwYXRoIC0gMSwgMHg4MCwgMHg4MCwKLSAg
ICAgICAgR0xfQk9VTkRJTkdfQk9YX09GX0JPVU5ESU5HX0JPWEVTX0NIUk9NSVVNLCBHTF9UUkFO
U0xBVEVfMkRfQ0hST01JVU0sIGtUcmFuc2Zvcm1zKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotCi0gICAgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTF9BTFdBWVMsIDAsIDB4N0Yp
OwotICAgIGdsU3RlbmNpbEZ1bmMoR0xfTEVTUywgMCwgMHg3Rik7Ci0gICAgZ2xTdGVuY2lsT3Ao
R0xfS0VFUCwgR0xfS0VFUCwgR0xfWkVSTyk7Ci0gICAgZ2xVbmlmb3JtNGZ2KG1Db2xvckxvYywg
MSwga0JsdWUpOwotICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01J
VU0oCi0gICAgICAgIGtQYXRoQ291bnQsIEdMX1VOU0lHTkVEX0lOVCwga1BhdGhzLCBwYXRoIC0g
MSwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4N0YsCi0gICAgICAgIEdMX0JPVU5ESU5HX0JPWF9P
Rl9CT1VORElOR19CT1hFU19DSFJPTUlVTSwgR0xfVFJBTlNMQVRFXzJEX0NIUk9NSVVNLCBrVHJh
bnNmb3Jtcyk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsRGVsZXRlUGF0
aHNDSFJPTUlVTShwYXRoLCAxKTsKLQotICAgIC8vIFZlcmlmeSB0aGUgaW1hZ2UuCi0gICAgdmVy
aWZ5VGVzdFBhdHRlcm5GaWxsKDAuMGYsIDAuMGYpOwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuQmco
MC4wZiwgMC4wZik7Ci0gICAgdmVyaWZ5VGVzdFBhdHRlcm5TdHJva2UoMC4wZiwgMC4wZik7Ci0K
LSAgICB2ZXJpZnlUZXN0UGF0dGVybkZpbGwoa1NoYXBlU2l6ZSwgMC4wZik7Ci0gICAgdmVyaWZ5
VGVzdFBhdHRlcm5CZyhrU2hhcGVTaXplLCAwLjBmKTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVyblN0
cm9rZShrU2hhcGVTaXplLCAwLjBmKTsKLQotICAgIHZlcmlmeVRlc3RQYXR0ZXJuRmlsbChrU2hh
cGVTaXplICogMiwgMC4wZik7Ci0gICAgdmVyaWZ5VGVzdFBhdHRlcm5CZyhrU2hhcGVTaXplICog
MiwgMC4wZik7Ci0gICAgdmVyaWZ5VGVzdFBhdHRlcm5TdHJva2Uoa1NoYXBlU2l6ZSAqIDIsIDAu
MGYpOwotCi0gICAgdmVyaWZ5VGVzdFBhdHRlcm5GaWxsKDAuMGYsIGtTaGFwZVNpemUpOwotICAg
IHZlcmlmeVRlc3RQYXR0ZXJuQmcoMC4wZiwga1NoYXBlU2l6ZSk7Ci0gICAgdmVyaWZ5VGVzdFBh
dHRlcm5TdHJva2UoMC4wZiwga1NoYXBlU2l6ZSk7Ci0KLSAgICB2ZXJpZnlUZXN0UGF0dGVybkZp
bGwoa1NoYXBlU2l6ZSwga1NoYXBlU2l6ZSk7Ci0gICAgdmVyaWZ5VGVzdFBhdHRlcm5CZyhrU2hh
cGVTaXplLCBrU2hhcGVTaXplKTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVyblN0cm9rZShrU2hhcGVT
aXplLCBrU2hhcGVTaXplKTsKLX0KLQotCi0vLyBUaGlzIGNsYXNzIGltcGxlbWVudHMgYSB0ZXN0
IHRoYXQgZHJhd3MgYSBncmlkIG9mIHYtc2hhcGVzLiBUaGUgZ3JpZCBpcwotLy8gZHJhd24gc28g
dGhhdCBldmVuIHJvd3MgKGZyb20gdGhlIGJvdHRvbSkgYXJlIGRyYXduIHdpdGggRHJhd0FycmF5
cyBhbmQgb2RkCi0vLyByb3dzIGFyZSBkcmF3biB3aXRoIHBhdGggcmVuZGVyaW5nLiAgSXQgY2Fu
IGJlIHVzZWQgdG8gdGVzdCB2YXJpb3VzIHRleHR1cmluZwotLy8gbW9kZXMsIGNvbXBhcmluZyBo
b3cgdGhlIGZpbGwgd291bGQgd29yayBpbiBub3JtYWwgR0wgcmVuZGVyaW5nIGFuZCBob3cgdG8K
LS8vIHNldHVwIHNhbWUgc29ydCBvZiBmaWxsIHdpdGggcGF0aCByZW5kZXJpbmcuCi0vLyBUaGUg
dGV4dHVyaW5nIHRlc3QgaXMgcGFyYW1ldHJpemVkIHRvIHJ1biB0aGUgdGVzdCB3aXRoIGFuZCB3
aXRob3V0Ci0vLyBBTkdMRSBuYW1lIGhhc2hpbmcuCi1jbGFzcyBDSFJPTUlVTVBhdGhSZW5kZXJp
bmdXaXRoVGV4dHVyaW5nVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgot
ICAgIENIUk9NSVVNUGF0aFJlbmRlcmluZ1dpdGhUZXh0dXJpbmdUZXN0KCkgOiBtUHJvZ3JhbSgw
KQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoa1Jlc29sdXRpb24pOwotICAgICAgICBz
ZXRXaW5kb3dIZWlnaHQoa1Jlc29sdXRpb24pOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgp
OwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVC
aXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZp
Z0RlcHRoQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnU3RlbmNpbEJpdHMoOCk7Ci0gICAgfQot
Ci0gICAgYm9vbCBpc0FwcGxpY2FibGUoKSBjb25zdCB7IHJldHVybiBleHRlbnNpb25FbmFibGVk
KCJHTF9DSFJPTUlVTV9wYXRoX3JlbmRlcmluZyIpOyB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChtUHJvZ3JhbSkKLSAgICAgICAgewotICAgICAg
ICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAgICAgICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotICAgICAgICB9Ci0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwot
ICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQU5HTEVU
ZXN0OjpTZXRVcCgpOwotICAgICAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbiA9IHJlaW50ZXJwcmV0
X2Nhc3Q8UEZOR0xCSU5EVU5JRk9STUxPQ0FUSU9OQ0hST01JVU1QUk9DPigKLSAgICAgICAgICAg
IGVnbEdldFByb2NBZGRyZXNzKCJnbEJpbmRVbmlmb3JtTG9jYXRpb25DSFJPTUlVTSIpKTsKLSAg
ICB9Ci0KLSAgICAvLyBTZXRzIHVwIHRoZSBHTCBwcm9ncmFtIHN0YXRlIGZvciB0aGUgdGVzdC4K
LSAgICAvLyBWZXJ0ZXggc2hhZGVyIG5lZWRzIGF0IGxlYXN0IGZvbGxvd2luZyB2YXJpYWJsZXM6
Ci0gICAgLy8gIHVuaWZvcm0gbWF0NCB2aWV3X21hdHJpeDsKLSAgICAvLyAgdW5pZm9ybSBtYXQ/
IGNvbG9yX21hdHJpeDsgKGFjY2Vzc2libGUgd2l0aCBrQ29sb3JNYXRyaXhMb2NhdGlvbikKLSAg
ICAvLyAgdW5pZm9ybSB2ZWMyIG1vZGVsX3RyYW5zbGF0ZTsKLSAgICAvLyAgYXR0cmlidXRlIHZl
YzIgcG9zaXRpb247Ci0gICAgLy8gIHZhcnlpbmcgdmVjNCBjb2xvcjsKLSAgICAvLwotICAgIC8v
IEZyYWdtZW50IHNoYWRlciBuZWVkcyBhdCBsZWFzdCBmb2xsb3dpbmcgdmFyaWFibGVzOgotICAg
IC8vICB2YXJ5aW5nIHZlYzQgY29sb3I7Ci0gICAgLy8KLSAgICAvLyAgKD8gY2FuIGJlIGFueXRo
aW5nKQotICAgIHZvaWQgY29tcGlsZVByb2dyYW0oY29uc3QgY2hhciAqdmVydGV4U2hhZGVyU291
cmNlLCBjb25zdCBjaGFyICpmcmFnbWVudFNoYWRlclNvdXJjZSkKLSAgICB7Ci0gICAgICAgIGds
Vmlld3BvcnQoMCwgMCwga1Jlc29sdXRpb24sIGtSZXNvbHV0aW9uKTsKLSAgICAgICAgZ2xDbGVh
ckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOwotICAgICAgICBnbFN0ZW5jaWxNYXNrKDB4
ZmZmZmZmZmYpOwotICAgICAgICBnbENsZWFyU3RlbmNpbCgwKTsKLSAgICAgICAgZ2xDbGVhcihH
TF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLSAgICAgICAgZ2xF
bmFibGUoR0xfQkxFTkQpOwotICAgICAgICBnbEJsZW5kRnVuYyhHTF9TUkNfQUxQSEEsIEdMX09O
RV9NSU5VU19TUkNfQUxQSEEpOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0g
ICAgICAgIEdMdWludCB2U2hhZGVyID0gY29tcGlsZVNoYWRlcihHTF9WRVJURVhfU0hBREVSLCB2
ZXJ0ZXhTaGFkZXJTb3VyY2UpOwotICAgICAgICBHTHVpbnQgZlNoYWRlciA9IGNvbXBpbGVTaGFk
ZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgICAgIEFT
U0VSVF9ORSgwdSwgdlNoYWRlcik7Ci0gICAgICAgIEFTU0VSVF9ORSgwdSwgZlNoYWRlcik7Ci0K
LSAgICAgICAgbVByb2dyYW0gPSBnbENyZWF0ZVByb2dyYW0oKTsKLQotICAgICAgICBnbEF0dGFj
aFNoYWRlcihtUHJvZ3JhbSwgdlNoYWRlcik7Ci0gICAgICAgIGdsQXR0YWNoU2hhZGVyKG1Qcm9n
cmFtLCBmU2hhZGVyKTsKLSAgICAgICAgZ2xEZWxldGVTaGFkZXIodlNoYWRlcik7Ci0gICAgICAg
IGdsRGVsZXRlU2hhZGVyKGZTaGFkZXIpOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OwotICAgIH0KLQotICAgIHZvaWQgYmluZFByb2dyYW0oKQotICAgIHsKLSAgICAgICAgZ2xCaW5k
QXR0cmliTG9jYXRpb24obVByb2dyYW0sIGtQb3NpdGlvbkxvY2F0aW9uLCAicG9zaXRpb24iKTsK
LSAgICAgICAgbUJpbmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIGtWaWV3TWF0cml4TG9jYXRp
b24sICJ2aWV3X21hdHJpeCIpOwotICAgICAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3Jh
bSwga0NvbG9yTWF0cml4TG9jYXRpb24sICJjb2xvcl9tYXRyaXgiKTsKLSAgICAgICAgbUJpbmRV
bmlmb3JtTG9jYXRpb24obVByb2dyYW0sIGtNb2RlbFRyYW5zbGF0ZUxvY2F0aW9uLCAibW9kZWxf
dHJhbnNsYXRlIik7Ci0gICAgICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVN
KG1Qcm9ncmFtLCBrQ29sb3JGcmFnbWVudElucHV0TG9jYXRpb24sICJjb2xvciIpOwotCi0gICAg
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIGJvb2wgbGlua1Byb2dyYW0o
KQotICAgIHsKLSAgICAgICAgZ2xMaW5rUHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICAgICAgR0xp
bnQgbGlua2VkID0gMDsKLSAgICAgICAgZ2xHZXRQcm9ncmFtaXYobVByb2dyYW0sIEdMX0xJTktf
U1RBVFVTLCAmbGlua2VkKTsKLSAgICAgICAgaWYgKGxpbmtlZCkKLSAgICAgICAgewotICAgICAg
ICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVy
biAobGlua2VkID09IDEpOwotICAgIH0KLQotICAgIHZvaWQgZHJhd1Rlc3RQYXR0ZXJuKCkKLSAg
ICB7Ci0gICAgICAgIC8vIFRoaXMgdi1zaGFwZSBpcyB1c2VkIGJvdGggZm9yIERyYXdBcnJheXMg
YW5kIHBhdGggcmVuZGVyaW5nLgotICAgICAgICBzdGF0aWMgY29uc3QgR0xmbG9hdCBrVmVydGlj
ZXNbXSA9IHs3NS4wZiwgNzUuMGYsIDUwLjBmLCAyNS41ZiwgNTAuMGYsIDUwLjBmLCAyNS4wZiwg
NzUuMGZ9OwotCi0gICAgICAgIEdMdWludCB2Ym8gPSAwOwotICAgICAgICBnbEdlbkJ1ZmZlcnMo
MSwgJnZibyk7Ci0gICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIHZibyk7Ci0g
ICAgICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNpemVvZihrVmVydGljZXMpLCBr
VmVydGljZXMsIEdMX1NUQVRJQ19EUkFXKTsKLSAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShrUG9zaXRpb25Mb2NhdGlvbik7Ci0gICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihr
UG9zaXRpb25Mb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAwKTsKLQotICAgICAg
ICAvLyBTZXR1cCBzdGF0ZSBmb3IgZHJhd2luZyB0aGUgc2hhcGUgd2l0aCBwYXRoIHJlbmRlcmlu
Zy4KLSAgICAgICAgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTF9BTFdBWVMsIDAsIDB4N0Yp
OwotICAgICAgICBnbFN0ZW5jaWxGdW5jKEdMX0xFU1MsIDAsIDB4N0YpOwotICAgICAgICBnbFN0
ZW5jaWxPcChHTF9LRUVQLCBHTF9LRUVQLCBHTF9aRVJPKTsKLSAgICAgICAgZ2xNYXRyaXhMb2Fk
ZkNIUk9NSVVNKEdMX1BBVEhfUFJPSkVDVElPTl9DSFJPTUlVTSwga1Byb2plY3Rpb25NYXRyaXgp
OwotICAgICAgICBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNKEdMX1BBVEhfTU9ERUxWSUVX
X0NIUk9NSVVNKTsKLQotICAgICAgICBzdGF0aWMgY29uc3QgR0x1Ynl0ZSBrQ29tbWFuZHNbXSA9
IHtHTF9NT1ZFX1RPX0NIUk9NSVVNLCBHTF9MSU5FX1RPX0NIUk9NSVVNLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9MSU5FX1RPX0NIUk9NSVVNLCBHTF9M
SU5FX1RPX0NIUk9NSVVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9DTE9TRV9QQVRIX0NIUk9NSVVNfTsKLQotICAgICAgICBzdGF0aWMgY29uc3QgR0xm
bG9hdCBrQ29vcmRzW10gPSB7Ci0gICAgICAgICAgICBrVmVydGljZXNbMF0sIGtWZXJ0aWNlc1sx
XSwga1ZlcnRpY2VzWzJdLCBrVmVydGljZXNbM10sCi0gICAgICAgICAgICBrVmVydGljZXNbNl0s
IGtWZXJ0aWNlc1s3XSwga1ZlcnRpY2VzWzRdLCBrVmVydGljZXNbNV0sCi0gICAgICAgIH07Ci0K
LSAgICAgICAgR0x1aW50IHBhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oMSk7Ci0gICAgICAgIGds
UGF0aENvbW1hbmRzQ0hST01JVU0ocGF0aCwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oQXJyYXlTaXpl
KGtDb21tYW5kcykpLCBrQ29tbWFuZHMsCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVp
PihBcnJheVNpemUoa0Nvb3JkcykpLCBHTF9GTE9BVCwga0Nvb3Jkcyk7Ci0gICAgICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIEdMZmxvYXQgcGF0aF9tb2RlbF90cmFuc2xhdGVb
MTZdID0gewotICAgICAgICAgICAgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiwg
MC4wZiwgMC4wZiwKLSAgICAgICAgICAgIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsIDAuMGYsIDAu
MGYsIDAuMGYsIDEuMGYsCi0gICAgICAgIH07Ci0KLSAgICAgICAgLy8gRHJhd3MgdGhlIHNoYXBl
cy4gRXZlcnkgZXZlbiByb3cgZnJvbSB0aGUgYm90dG9tIGlzIGRyYXduIHdpdGgKLSAgICAgICAg
Ly8gRHJhd0FycmF5cywgb2RkIHJvdyB3aXRoIHBhdGggcmVuZGVyaW5nLiBUaGUgc2hhZGVyIHBy
b2dyYW0gaXMKLSAgICAgICAgLy8gdGhlIHNhbWUgZm9yIHRoZSBib3RoIGRyYXdzLgotICAgICAg
ICBmb3IgKGludCBqID0gMDsgaiA8IGtUZXN0Um93czsgKytqKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGtUZXN0Q29sdW1uczsgKytpKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGlmIChqICUgMiA9PSAwKQotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgZ2xEaXNhYmxlKEdMX1NURU5DSUxfVEVTVCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGdsVW5pZm9ybTJmKGtNb2RlbFRyYW5zbGF0ZUxvY2F0aW9uLCBzdGF0aWNfY2Fz
dDxHTGZsb2F0PihpICoga1NoYXBlV2lkdGgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxHTGZsb2F0PihqICoga1NoYXBlSGVpZ2h0KSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9TVFJJUCwgMCwgNCk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIGdsRW5hYmxlKEdMX1NURU5DSUxfVEVTVCk7Ci0gICAgICAgICAgICAg
ICAgICAgIHBhdGhfbW9kZWxfdHJhbnNsYXRlWzEyXSA9IHN0YXRpY19jYXN0PEdMZmxvYXQ+KGkg
KiBrU2hhcGVXaWR0aCk7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGhfbW9kZWxfdHJhbnNsYXRl
WzEzXSA9IHN0YXRpY19jYXN0PEdMZmxvYXQ+KGogKiBrU2hhcGVIZWlnaHQpOwotICAgICAgICAg
ICAgICAgICAgICBnbE1hdHJpeExvYWRmQ0hST01JVU0oR0xfUEFUSF9NT0RFTFZJRVdfQ0hST01J
VU0sIHBhdGhfbW9kZWxfdHJhbnNsYXRlKTsKLSAgICAgICAgICAgICAgICAgICAgZ2xTdGVuY2ls
VGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBHTF9DT1VOVF9VUF9DSFJPTUlVTSwgMHg3
RiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9CT1VORElOR19CT1hfQ0hST01JVU0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAg
ICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShrUG9zaXRpb25Mb2NhdGlvbik7Ci0gICAgICAg
IGdsRGVsZXRlQnVmZmVycygxLCAmdmJvKTsKLSAgICAgICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVN
KHBhdGgsIDEpOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICBl
bnVtCi0gICAgewotICAgICAgICBrU2hhcGVXaWR0aCAgPSA3NSwKLSAgICAgICAga1NoYXBlSGVp
Z2h0ID0gNzUsCi0gICAgICAgIGtUZXN0Um93cyAgICA9IGtSZXNvbHV0aW9uIC8ga1NoYXBlSGVp
Z2h0LAotICAgICAgICBrVGVzdENvbHVtbnMgPSBrUmVzb2x1dGlvbiAvIGtTaGFwZVdpZHRoLAot
ICAgIH07Ci0KLSAgICB0eXBlZGVmIHZvaWQoR0xfQVBJRU5UUllQIFBGTkdMQklORFVOSUZPUk1M
T0NBVElPTkNIUk9NSVVNUFJPQykoR0x1aW50IG1Qcm9ncmFtLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBs
b2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKTsKLSAgICBQRk5HTEJJTkRV
TklGT1JNTE9DQVRJT05DSFJPTUlVTVBST0MgbUJpbmRVbmlmb3JtTG9jYXRpb24gPSBudWxscHRy
OwotCi0gICAgR0x1aW50IG1Qcm9ncmFtOwotCi0gICAgLy8gVGhpcyB1bmlmb3JtIGJlIGNhbiBz
ZXQgYnkgdGhlIHRlc3QuIEl0IHNob3VsZCBiZSB1c2VkIHRvIHNldCB0aGUgY29sb3IgZm9yCi0g
ICAgLy8gZHJhd2luZyB3aXRoIERyYXdBcnJheXMuCi0gICAgc3RhdGljIGNvbnN0IEdMaW50IGtD
b2xvck1hdHJpeExvY2F0aW9uID0gNDsKLQotICAgIC8vIFRoaXMgZnJhZ21lbnQgaW5wdXQgY2Fu
IGJlIHNldCBieSB0aGUgdGVzdC4gSXQgc2hvdWxkIGJlIHVzZWQgdG8gc2V0IHRoZQotICAgIC8v
IGNvbG9yIGZvciBkcmF3aW5nIHdpdGggcGF0aCByZW5kZXJpbmcuCi0gICAgc3RhdGljIGNvbnN0
IEdMaW50IGtDb2xvckZyYWdtZW50SW5wdXRMb2NhdGlvbiA9IDc7Ci0KLSAgICBzdGF0aWMgY29u
c3QgR0xpbnQga01vZGVsVHJhbnNsYXRlTG9jYXRpb24gPSAzOwotICAgIHN0YXRpYyBjb25zdCBH
TGludCBrUG9zaXRpb25Mb2NhdGlvbiAgICAgICA9IDA7Ci0gICAgc3RhdGljIGNvbnN0IEdMaW50
IGtWaWV3TWF0cml4TG9jYXRpb24gICAgID0gNzsKLX07Ci0KLS8vIFRlc3Qgc3VjY2VzcyBhbmQg
ZXJyb3IgY2FzZXMgZm9yIGJpbmRpbmcgZnJhZ21lbnQgaW5wdXQgbG9jYXRpb24uCi1URVNUX1Ao
Q0hST01JVU1QYXRoUmVuZGVyaW5nV2l0aFRleHR1cmluZ1Rlc3QsIFRlc3RCaW5kRnJhZ21lbnRJ
bnB1dExvY2F0aW9uKQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIC8vIG9yaWdpbmFsIE5WX3BhdGhfcmVuZGVyaW5nIHNwZWNpZmljYXRpb24gZG9l
c24ndCBkZWZpbmUgd2hldGhlciB0aGUKLSAgICAvLyBmcmFnbWVudCBzaGFkZXIgaW5wdXQgdmFy
aWFibGVzIHNob3VsZCBiZSBkZWZpbmVkIGluIHRoZSB2ZXJ0ZXggc2hhZGVyIG9yCi0gICAgLy8g
bm90LiBJbiBmYWN0IGl0IGRvZXNuJ3QgZXZlbiByZXF1aXJlIGEgdmVydGV4IHNoYWRlci4KLSAg
ICAvLyBIb3dldmVyIHRoZSBHTEVTMy4xIHNwZWMgYmFzaWNhbGx5IHNheXMgdGhhdCBmcmFnbWVu
dCBpbnB1dHMgYXJlCi0gICAgLy8gZWl0aGVyIGJ1aWx0LWlucyBvciBjb21lIGZyb20gdGhlIHBy
ZXZpb3VzIHNoYWRlciBzdGFnZS4KLSAgICAvLyAowqcgMTQuMSwgRnJhZ21lbnQgU2hhZGVyIFZh
cmlhYmxlcykuCi0gICAgLy8gQWRkaXRpb25hbGx5IHRoZXJlIGFyZSBtYW55IHBsYWNlcyB0aGF0
IGFyZSBiYXNlZCBvbiB0aGUgYXNzdW1wdGlvbiBvZiBoYXZpbmcKLSAgICAvLyBhIHZlcnRleCBz
aGFkZXIgKGNvbW1hbmQgYnVmZmVyLCBhbmdsZSkgc28gd2UncmUgZ29pbmcgdG8gc3RpY2sgdG8g
dGhlIHNhbWUKLSAgICAvLyBzZW1hbnRpY3MgYW5kIHJlcXVpcmUgYSB2ZXJ0ZXggc2hhZGVyIGFu
ZCB0byBoYXZlIHRoZSB2ZXJ0ZXggc2hhZGVyIGRlZmluZSB0aGUKLSAgICAvLyB2YXJ5aW5nIGZy
YWdtZW50IHNoYWRlciBpbnB1dC4KLQotICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICBjb25z
dCBjaGFyKiBrVmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAidmFyeWluZyB2ZWM0IGNvbG9y
O1xuIgotICAgICAgICJ2b2lkIG1haW4oKSB7fVxuIjsKLQotICAgIGNvbnN0IGNoYXIqIGtGcmFn
bWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
LSAgICAgICAgInZhcnlpbmcgdmVjNCBjb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtc
biIKLSAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAgICAgICAifVxu
IjsKLQotICAgIC8vIGNsYW5nLWZvcm1hdCBvbgotICAgIGNvbXBpbGVQcm9ncmFtKGtWZXJ0ZXhT
aGFkZXJTb3VyY2UsIGtGcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0KLSAgICBlbnVtIGtCaW5kTG9j
YXRpb25zCi0gICAgewotICAgICAgICBrQ29sb3JMb2NhdGlvbiAgICAgPSA1LAotICAgICAgICBr
RnJhZ0NvbG9yTG9jYXRpb24gPSA2Ci0gICAgfTsKLQotICAgIC8vIHN1Y2Nlc3NmdWwgYmluZC4K
LSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9y
TG9jYXRpb24sICJjb2xvciIpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8g
YW55IG5hbWUgY2FuIGJlIGJvdW5kIGFuZCBuYW1lcyB0aGF0IGRvIG5vdCBhY3R1YWxseSBleGlz
dCBpbiB0aGUgcHJvZ3JhbSBhZnRlcgotICAgIC8vIGxpbmtpbmcgYXJlIGlnbm9yZWQuCi0gICAg
Z2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtDb2xvckxvY2F0
aW9uLCAiZG9lc250X2V4aXN0Iik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAv
LyBpbGxlZ2FsIHByb2dyYW0KLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlV
TShtUHJvZ3JhbSArIDEsIGtDb2xvckxvY2F0aW9uLCAiY29sb3IiKTsKLSAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgLy8gaWxsZWdhbCBiaW5kIChidWls
dC1pbikKLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwg
a0ZyYWdDb2xvckxvY2F0aW9uLCAiZ2xfRnJhZ0NvbG9yIik7Ci0gICAgRVhQRUNUX0dMX0VSUk9S
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLQotICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlv
bkNIUk9NSVVNKG1Qcm9ncmFtLCBrRnJhZ0NvbG9yTG9jYXRpb24sIE5VTEwpOwotICAgIEVYUEVD
VF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIGdsQmluZEZyYWdtZW50SW5wdXRM
b2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCAweGZmZmZmZiwgImNvbG9yIik7Ci0gICAgRVhQRUNU
X0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgQVNTRVJUX1RSVUUobGlua1Byb2dy
YW0oKSA9PSB0cnVlKTsKLQotICAgIGNvbnN0IEdMZmxvYXQga0NvZWZmaWNpZW50czE2W10gPSB7
MS4wZiwgMi4wZiwgIDMuMGYsICA0LjBmLCAgNS4wZiwgIDYuMGYsICA3LjBmLCAgOC4wZiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkuMGYsIDEwLjBmLCAxMS4wZiwg
MTIuMGYsIDEzLjBmLCAxNC4wZiwgMTUuMGYsIDE2LjBmfTsKLQotICAgIGdsUHJvZ3JhbVBhdGhG
cmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIGtDb2xvckxvY2F0aW9uLCBHTF9FWUVf
TElORUFSX0NIUk9NSVVNLCA0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAga0NvZWZmaWNpZW50czE2KTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAg
IGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0xLCBHTF9F
WUVfTElORUFSX0NIUk9NSVVNLCA0LCBrQ29lZmZpY2llbnRzMTYpOwotICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotfQotCi0vLyBUZXN0IGZyYWdtZW50IGlucHV0IGludGVycG9sYXRpb24gaW4g
Q0hST01JVU1fRVlFIGNvb3JkaW5hdGVzLgotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1dp
dGhUZXh0dXJpbmdUZXN0LCBUZXN0UHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU1f
RVlFKQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICBjb25zdCBjaGFyICprVmVydGV4U2hhZGVyU291cmNl
ID0KLSAgICAgICAgInVuaWZvcm0gbWF0NCB2aWV3X21hdHJpeDtcbiIKLSAgICAgICAgInVuaWZv
cm0gbWF0NCBjb2xvcl9tYXRyaXg7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzIgbW9kZWxfdHJh
bnNsYXRlO1xuIgotICAgICAgICAiYXR0cmlidXRlIHZlYzIgcG9zaXRpb247XG4iCi0gICAgICAg
ICJ2YXJ5aW5nIHZlYzMgY29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAg
ICAgICIgIHZlYzQgcCA9IHZlYzQobW9kZWxfdHJhbnNsYXRlICsgcG9zaXRpb24sIDEuMCwgMS4w
KTtcbiIKLSAgICAgICAgIiAgY29sb3IgPSAoY29sb3JfbWF0cml4ICogcCkucmdiO1xuIgotICAg
ICAgICAiICBnbF9Qb3NpdGlvbiA9IHZpZXdfbWF0cml4ICogcDtcbiIKLSAgICAgICAgIn1cbiI7
Ci0KLSAgICBjb25zdCBjaGFyICprRnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzMgY29sb3I7XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHZl
YzQoY29sb3IsIDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIC8vIGNsYW5nLWZvcm1hdCBv
bgotCi0gICAgY29tcGlsZVByb2dyYW0oa1ZlcnRleFNoYWRlclNvdXJjZSwga0ZyYWdtZW50U2hh
ZGVyU291cmNlKTsKLSAgICBiaW5kUHJvZ3JhbSgpOwotICAgIEFTU0VSVF9UUlVFKGxpbmtQcm9n
cmFtKCkgPT0gdHJ1ZSk7Ci0KLSAgICBnbFVuaWZvcm1NYXRyaXg0ZnYoa1ZpZXdNYXRyaXhMb2Nh
dGlvbiwgMSwgR0xfRkFMU0UsIGtQcm9qZWN0aW9uTWF0cml4KTsKLQotICAgIHN0YXRpYyBjb25z
dCBHTGZsb2F0IGtDb2xvck1hdHJpeFsxNl0gPSB7Ci0gICAgICAgIDEuMGYgLyBrUmVzb2x1dGlv
biwgMC4wZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgMC4wZiwgMS4wZiAvIGtSZXNvbHV0aW9uLCAw
LjBmLCAwLjBmLAotICAgICAgICAwLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAotICAgICAgICAwLjBm
LCAwLjBmLCAwLjBmLCAwLjBmfTsKLQotICAgIGdsVW5pZm9ybU1hdHJpeDRmdihrQ29sb3JNYXRy
aXhMb2NhdGlvbiwgMSwgR0xfRkFMU0UsIGtDb2xvck1hdHJpeCk7Ci0KLSAgICAvLyBUaGlzIGlz
IHRoZSBmdW5jdGlvbmFsaXR5IHdlIGFyZSB0ZXN0aW5nOiBQcm9ncmFtUGF0aEZyYWdtZW50SW5w
dXRHZW4KLSAgICAvLyBkb2VzIHRoZSBzYW1lIHdvcmsgYXMgdGhlIGNvbG9yIHRyYW5zZm9ybSBp
biB2ZXJ0ZXggc2hhZGVyLgotICAgIHN0YXRpYyBjb25zdCBHTGZsb2F0IGtDb2xvckNvZWZmaWNp
ZW50c1sxMl0gPSB7Ci0gICAgICAgIDEuMGYgLyBrUmVzb2x1dGlvbiwgMC4wZiwgMC4wZiwKLSAg
ICAgICAgMC4wZiwgMC4wZiwgMS4wZiAvIGtSZXNvbHV0aW9uLAotICAgICAgICAwLjBmLCAwLjBm
LCAwLjBmLAotICAgICAgICAwLjBmLCAwLjBmLCAwLjBmfTsKLSAgICBnbFByb2dyYW1QYXRoRnJh
Z21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JGcmFnbWVudElucHV0TG9jYXRp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9FWUVfTElO
RUFSX0NIUk9NSVVNLCAzLCBrQ29sb3JDb2VmZmljaWVudHMpOwotICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotCi0gICAgZHJhd1Rlc3RQYXR0ZXJuKCk7Ci0KLSAgICBjb25zdCBHTGZsb2F0IGtG
aWxsQ29vcmRzWzZdID0gezU5LjBmLCA1MC4wZiwgNTAuMGYsIDI4LjBmLCA2Ni4wZiwgNjMuMGZ9
OwotCi0gICAgZm9yIChpbnQgaiA9IDA7IGogPCBrVGVzdFJvd3M7ICsraikKLSAgICB7Ci0gICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwga1Rlc3RDb2x1bW5zOyArK2kpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgQXJyYXlTaXplKGtGaWxsQ29vcmRzKTsg
ayArPSAyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGZ4ID0g
a0ZpbGxDb29yZHNba107Ci0gICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgZnkgPSBrRmlsbENv
b3Jkc1trICsgMV07Ci0gICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgcHggPSBzdGF0aWNfY2Fz
dDxmbG9hdD4oaSAqIGtTaGFwZVdpZHRoKTsKLSAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBw
eSA9IHN0YXRpY19jYXN0PGZsb2F0PihqICoga1NoYXBlSGVpZ2h0KTsKLQotICAgICAgICAgICAg
ICAgIGFuZ2xlOjpHTENvbG9yIGNvbG9yOwotICAgICAgICAgICAgICAgIGNvbG9yLlIgPSBzdGF0
aWNfY2FzdDxHTHVieXRlPihzdGQ6OnJvdW5kZigocHggKyBmeCkgLyBrUmVzb2x1dGlvbiAqIDI1
NS4wZikpOwotICAgICAgICAgICAgICAgIGNvbG9yLkcgPSBzdGF0aWNfY2FzdDxHTHVieXRlPihz
dGQ6OnJvdW5kZigocHkgKyBmeSkgLyBrUmVzb2x1dGlvbiAqIDI1NS4wZikpOwotICAgICAgICAg
ICAgICAgIGNvbG9yLkIgPSAwOwotICAgICAgICAgICAgICAgIGNvbG9yLkEgPSAyNTU7Ci0gICAg
ICAgICAgICAgICAgQ2hlY2tQaXhlbHMoc3RhdGljX2Nhc3Q8R0xpbnQ+KHB4ICsgZngpLCBzdGF0
aWNfY2FzdDxHTGludD4ocHkgKyBmeSksIDEsIDEsIDIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29sb3IpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi0vLyBU
ZXN0IGZyYWdtZW50IGlucHV0IGludGVycG9sYXRpb24gaW4gQ0hST01JVU1fT0JKRUNUIGNvb3Jk
aW5hdGVzLgotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1dpdGhUZXh0dXJpbmdUZXN0LCBU
ZXN0UHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU1fT0JKRUNUKQotewotICAgIGlm
ICghaXNBcHBsaWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIGNsYW5nLWZvcm1h
dCBvZmYKLSAgICBjb25zdCBjaGFyICprVmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgInVu
aWZvcm0gbWF0NCB2aWV3X21hdHJpeDtcbiIKLSAgICAgICAgInVuaWZvcm0gbWF0NCBjb2xvcl9t
YXRyaXg7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzIgbW9kZWxfdHJhbnNsYXRlO1xuIgotICAg
ICAgICAiYXR0cmlidXRlIHZlYzIgcG9zaXRpb247XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzMg
Y29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGNvbG9yID0g
KGNvbG9yX21hdHJpeCAqIHZlYzQocG9zaXRpb24sIDEuMCwgMS4wKSkucmdiO1xuIgotICAgICAg
ICAiICB2ZWM0IHAgPSB2ZWM0KG1vZGVsX3RyYW5zbGF0ZSArIHBvc2l0aW9uLCAxLjAsIDEuMCk7
XG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmlld19tYXRyaXggKiBwO1xuIgotICAgICAg
ICAifSI7Ci0KLSAgICBjb25zdCBjaGFyICprRnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzMgY29s
b3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGdsX0ZyYWdDb2xv
ciA9IHZlYzQoY29sb3IucmdiLCAxLjApO1xuIgotICAgICAgICAifSI7Ci0gICAgLy8gY2xhbmct
Zm9ybWF0IG9uCi0KLSAgICBjb21waWxlUHJvZ3JhbShrVmVydGV4U2hhZGVyU291cmNlLCBrRnJh
Z21lbnRTaGFkZXJTb3VyY2UpOwotICAgIGJpbmRQcm9ncmFtKCk7Ci0gICAgQVNTRVJUX1RSVUUo
bGlua1Byb2dyYW0oKSA9PSB0cnVlKTsKLQotICAgIGdsVW5pZm9ybU1hdHJpeDRmdihrVmlld01h
dHJpeExvY2F0aW9uLCAxLCBHTF9GQUxTRSwga1Byb2plY3Rpb25NYXRyaXgpOwotCi0gICAgc3Rh
dGljIGNvbnN0IEdMZmxvYXQga0NvbG9yTWF0cml4WzE2XSA9IHsKLSAgICAgICAgMS4wZiAvIGtT
aGFwZVdpZHRoLCAwLjBmLCAwLjBmLCAwLjBmLAotICAgICAgICAwLjBmLCAxLjBmIC8ga1NoYXBl
SGVpZ2h0LCAwLjBmLCAwLjBmLAotICAgICAgICAwLjBmLCAwLjBmLCAwLjBmLCAwLjBmLAotICAg
ICAgICAwLjBmLCAwLjBmLCAwLjBmLCAwLjBmIH07Ci0gICAgZ2xVbmlmb3JtTWF0cml4NGZ2KGtD
b2xvck1hdHJpeExvY2F0aW9uLCAxLCBHTF9GQUxTRSwga0NvbG9yTWF0cml4KTsKLQotICAgIC8v
IFRoaXMgaXMgdGhlIGZ1bmN0aW9uYWxpdHkgd2UgYXJlIHRlc3Rpbmc6IFByb2dyYW1QYXRoRnJh
Z21lbnRJbnB1dEdlbgotICAgIC8vIGRvZXMgdGhlIHNhbWUgd29yayBhcyB0aGUgY29sb3IgdHJh
bnNmb3JtIGluIHZlcnRleCBzaGFkZXIuCi0gICAgc3RhdGljIGNvbnN0IEdMZmxvYXQga0NvbG9y
Q29lZmZpY2llbnRzWzldID0gewotICAgICAgICAxLjBmIC8ga1NoYXBlV2lkdGgsIDAuMGYsIDAu
MGYsIDAuMGYsIDEuMGYgLyBrU2hhcGVIZWlnaHQsIDAuMGYsIDAuMGYsIDAuMGYsIDAuMGZ9Owot
ICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIGtDb2xv
ckZyYWdtZW50SW5wdXRMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX09CSkVDVF9MSU5FQVJfQ0hST01JVU0sIDMsIGtDb2xvckNvZWZmaWNpZW50
cyk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdUZXN0UGF0dGVybigp
OwotCi0gICAgY29uc3QgR0xmbG9hdCBrRmlsbENvb3Jkc1s2XSA9IHs1OS4wZiwgNTAuMGYsIDUw
LjBmLCAyOC4wZiwgNjYuMGYsIDYzLjBmfTsKLQotICAgIGZvciAoaW50IGogPSAwOyBqIDwga1Rl
c3RSb3dzOyArK2opCi0gICAgewotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGtUZXN0Q29s
dW1uczsgKytpKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8
IEFycmF5U2l6ZShrRmlsbENvb3Jkcyk7IGsgKz0gMikKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBjb25zdCBmbG9hdCBmeCA9IGtGaWxsQ29vcmRzW2tdOwotICAgICAgICAgICAgICAg
IGNvbnN0IGZsb2F0IGZ5ID0ga0ZpbGxDb29yZHNbayArIDFdOwotICAgICAgICAgICAgICAgIGNv
bnN0IGZsb2F0IHB4ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGkgKiBrU2hhcGVXaWR0aCk7Ci0gICAg
ICAgICAgICAgICAgY29uc3QgZmxvYXQgcHkgPSBzdGF0aWNfY2FzdDxmbG9hdD4oaiAqIGtTaGFw
ZUhlaWdodCk7Ci0KLSAgICAgICAgICAgICAgICBhbmdsZTo6R0xDb2xvciBjb2xvcjsKLSAgICAg
ICAgICAgICAgICBjb2xvci5SID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oc3RkOjpyb3VuZGYoZngg
LyBrU2hhcGVXaWR0aCAqIDI1NS4wZikpOwotICAgICAgICAgICAgICAgIGNvbG9yLkcgPSBzdGF0
aWNfY2FzdDxHTHVieXRlPihzdGQ6OnJvdW5kZihmeSAvIGtTaGFwZUhlaWdodCAqIDI1NS4wZikp
OwotICAgICAgICAgICAgICAgIGNvbG9yLkIgPSAwOwotICAgICAgICAgICAgICAgIGNvbG9yLkEg
PSAyNTU7Ci0gICAgICAgICAgICAgICAgQ2hlY2tQaXhlbHMoc3RhdGljX2Nhc3Q8R0xpbnQ+KHB4
ICsgZngpLCBzdGF0aWNfY2FzdDxHTGludD4ocHkgKyBmeSksIDEsIDEsIDIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29sb3IpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAg
fQotfQotCi0vLyBUZXN0IHN1Y2Nlc3MgYW5kIGVycm9yIGNhc2VzIGZvciBzZXR0aW5nIGludGVy
cG9sYXRpb24gcGFyYW1ldGVycy4KLVRFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdXaXRoVGV4
dHVyaW5nVGVzdCwgVGVzdFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkFyZ3MpCi17Ci0gICAg
aWYgKCFpc0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gY2xhbmctZm9y
bWF0IG9mZgotICAgIGNvbnN0IGNoYXIgKmtWZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAi
dmFyeWluZyB2ZWMyIHZlYzJfdmFyO1xuIgotICAgICAgICAidmFyeWluZyB2ZWMzIHZlYzNfdmFy
O1xuIgotICAgICAgICAidmFyeWluZyB2ZWM0IHZlYzRfdmFyO1xuIgotICAgICAgICAidmFyeWlu
ZyBmbG9hdCBmbG9hdF92YXI7XG4iCi0gICAgICAgICJ2YXJ5aW5nIG1hdDIgbWF0Ml92YXI7XG4i
Ci0gICAgICAgICJ2YXJ5aW5nIG1hdDMgbWF0M192YXI7XG4iCi0gICAgICAgICJ2YXJ5aW5nIG1h
dDQgbWF0NF92YXI7XG4iCi0gICAgICAgICJhdHRyaWJ1dGUgZmxvYXQgYXZvaWRfb3B0O1xuIgot
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICB2ZWMyX3ZhciA9IHZlYzIoMS4w
LCAyLjAgKyBhdm9pZF9vcHQpO1xuIgotICAgICAgICAiICB2ZWMzX3ZhciA9IHZlYzMoMS4wLCAy
LjAsIDMuMCArIGF2b2lkX29wdCk7XG4iCi0gICAgICAgICIgIHZlYzRfdmFyID0gdmVjNCgxLjAs
IDIuMCwgMy4wLCA0LjAgKyBhdm9pZF9vcHQpO1xuIgotICAgICAgICAiICBmbG9hdF92YXIgPSA1
LjAgKyBhdm9pZF9vcHQ7XG4iCi0gICAgICAgICIgIG1hdDJfdmFyID0gbWF0MigyLjAgKyBhdm9p
ZF9vcHQpO1xuIgotICAgICAgICAiICBtYXQzX3ZhciA9IG1hdDMoMy4wICsgYXZvaWRfb3B0KTtc
biIKLSAgICAgICAgIiAgbWF0NF92YXIgPSBtYXQ0KDQuMCArIGF2b2lkX29wdCk7XG4iCi0gICAg
ICAgICIgIGdsX1Bvc2l0aW9uID0gdmVjNCgxLjApO1xuIgotICAgICAgICAifSI7Ci0KLSAgICBj
b25zdCBjaGFyKiBrRnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzIgdmVjMl92YXI7XG4iCi0gICAg
ICAgICJ2YXJ5aW5nIHZlYzMgdmVjM192YXI7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzQgdmVj
NF92YXI7XG4iCi0gICAgICAgICJ2YXJ5aW5nIGZsb2F0IGZsb2F0X3ZhcjtcbiIKLSAgICAgICAg
InZhcnlpbmcgbWF0MiBtYXQyX3ZhcjtcbiIKLSAgICAgICAgInZhcnlpbmcgbWF0MyBtYXQzX3Zh
cjtcbiIKLSAgICAgICAgInZhcnlpbmcgbWF0NCBtYXQ0X3ZhcjtcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKLSAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2ZWMyX3ZhciwgMCwg
MCkgKyB2ZWM0KHZlYzNfdmFyLCAwKSArIHZlYzRfdmFyICsgIgotICAgICAgICAiICAgICAgICAg
ICAgICAgdmVjNChmbG9hdF92YXIpICsgIgotICAgICAgICAiICAgICAgICAgICAgICAgdmVjNCht
YXQyX3ZhclswXVswXSwgbWF0M192YXJbMV1bMV0sIG1hdDRfdmFyWzJdWzJdLCAxKTtcbiIKLSAg
ICAgICAgIn0iOwotICAgIC8vIGNsYW5nLWZvcm1hdCBvbgotCi0gICAgZW51bQotICAgIHsKLSAg
ICAgICAga1ZlYzJMb2NhdGlvbiA9IDAsCi0gICAgICAgIGtWZWMzTG9jYXRpb24sCi0gICAgICAg
IGtWZWM0TG9jYXRpb24sCi0gICAgICAgIGtGbG9hdExvY2F0aW9uLAotICAgICAgICBrTWF0Mkxv
Y2F0aW9uLAotICAgICAgICBrTWF0M0xvY2F0aW9uLAotICAgICAgICBrTWF0NExvY2F0aW9uLAot
ICAgIH07Ci0gICAgc3RydWN0Ci0gICAgewotICAgICAgICBHTGludCBsb2NhdGlvbjsKLSAgICAg
ICAgY29uc3QgY2hhciAqbmFtZTsKLSAgICAgICAgR0xpbnQgY29tcG9uZW50czsKLSAgICB9IHZh
cmlhYmxlc1tdID0gewotICAgICAgICB7a1ZlYzJMb2NhdGlvbiwgInZlYzJfdmFyIiwgMn0sCi0g
ICAgICAgIHtrVmVjM0xvY2F0aW9uLCAidmVjM192YXIiLCAzfSwKLSAgICAgICAge2tWZWM0TG9j
YXRpb24sICJ2ZWM0X3ZhciIsIDR9LAotICAgICAgICB7a0Zsb2F0TG9jYXRpb24sICJmbG9hdF92
YXIiLCAxfSwKLSAgICAgICAgLy8gSWYgYSB2YXJ5aW5nIGlzIG5vdCBzaW5nbGUtcHJlY2lzaW9u
IGZsb2F0aW5nLXBvaW50IHNjYWxhciBvcgotICAgICAgICAvLyB2ZWN0b3IsIGl0IGFsd2F5cyBj
YXVzZXMgYW4gaW52YWxpZCBvcGVyYXRpb24uCi0gICAgICAgIHtrTWF0MkxvY2F0aW9uLCAibWF0
Ml92YXIiLCAtMX0sCi0gICAgICAgIHtrTWF0M0xvY2F0aW9uLCAibWF0M192YXIiLCAtMX0sCi0g
ICAgICAgIHtrTWF0NExvY2F0aW9uLCAibWF0NF92YXIiLCAtMX0sCi0gICAgfTsKLQotICAgIGNv
bXBpbGVQcm9ncmFtKGtWZXJ0ZXhTaGFkZXJTb3VyY2UsIGtGcmFnbWVudFNoYWRlclNvdXJjZSk7
Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IEFycmF5U2l6ZSh2YXJpYWJsZXMpOyArK2kp
Ci0gICAgewotICAgICAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJv
Z3JhbSwgdmFyaWFibGVzW2ldLmxvY2F0aW9uLCB2YXJpYWJsZXNbaV0ubmFtZSk7Ci0gICAgfQot
Ci0gICAgLy8gdGVzdCB0aGF0IHVzaW5nIGludmFsaWQgKG5vdCBsaW5rZWQpIHByb2dyYW0gaXMg
YW4gaW52YWxpZCBvcGVyYXRpb24uCi0gICAgLy8gU2VlIHNpbWlsYXIgY2FsbHMgYXQgdGhlIGVu
ZCBvZiB0aGUgdGVzdCBmb3IgZGlzY3Vzc2lvbiBhYm91dCB0aGUgYXJndW1lbnRzLgotICAgIGds
UHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0xLCBHTF9OT05F
LCAwLCBOVUxMKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
Ci0gICAgQVNTRVJUX1RSVUUobGlua1Byb2dyYW0oKSA9PSB0cnVlKTsKLQotICAgIGNvbnN0IEdM
ZmxvYXQga0NvZWZmaWNpZW50czE2W10gPSB7MS4wZiwgMi4wZiwgIDMuMGYsICA0LjBmLCAgNS4w
ZiwgIDYuMGYsICA3LjBmLCAgOC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDkuMGYsIDEwLjBmLCAxMS4wZiwgMTIuMGYsIDEzLjBmLCAxNC4wZiwgMTUuMGYsIDE2
LjBmfTsKLSAgICBjb25zdCBHTGVudW0ga0dlbk1vZGVzW10gPSB7R0xfTk9ORSwgR0xfRVlFX0xJ
TkVBUl9DSFJPTUlVTSwgR0xfT0JKRUNUX0xJTkVBUl9DSFJPTUlVTSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfQ09OU1RBTlRfQ0hST01JVU19OwotCi0gICAgZm9yIChzaXpl
X3QgdmFyaWFibGUgPSAwOyB2YXJpYWJsZSA8IEFycmF5U2l6ZSh2YXJpYWJsZXMpOyArK3Zhcmlh
YmxlKQotICAgIHsKLSAgICAgICAgZm9yIChHTGludCBjb21wb25lbnRzID0gMDsgY29tcG9uZW50
cyA8PSA0OyArK2NvbXBvbmVudHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90
IGdlbm1vZGUgPSAwOyBnZW5tb2RlIDwgQXJyYXlTaXplKGtHZW5Nb2Rlcyk7ICsrZ2VubW9kZSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1
dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCB2YXJpYWJsZXNbdmFyaWFibGVdLmxvY2F0aW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0dlbk1v
ZGVzW2dlbm1vZGVdLCBjb21wb25lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga0NvZWZmaWNpZW50czE2KTsKLQotICAgICAgICAgICAg
ICAgIGlmIChjb21wb25lbnRzID09IDAgJiYga0dlbk1vZGVzW2dlbm1vZGVdID09IEdMX05PTkUp
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFibGVzW3Zh
cmlhYmxlXS5jb21wb25lbnRzID09IC0xKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBDbGVhcmluZyBhIGZyYWdtZW50IGlucHV0IHRoYXQgaXMgbm90
IHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBv
aW50IHNjYWxhciBvciB2ZWN0b3IgaXMgYW4gaW52YWxpZCBvcGVyYXRpb24uCi0gICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlRfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xlYXJpbmcgYSB2YWxpZCBm
cmFnbWVudCBpbnB1dCBpcyBvay4KLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGNvbXBvbmVudHMgPT0gMCB8fCBrR2VuTW9kZXNbZ2VubW9k
ZV0gPT0gR0xfTk9ORSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIEFT
U0VSVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKGNvbXBvbmVudHMgPT0gdmFyaWFibGVzW3ZhcmlhYmxlXS5jb21wb25lbnRzKQotICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXR0aW5nIGEgZ2Vu
ZXJhdG9yIGZvciBhIHNpbmdsZS1wcmVjaXNpb24gZmxvYXRpbmcgcG9pbnQKLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIHNjYWxhciBvciB2ZWN0b3IgZnJhZ21lbnQgaW5wdXQgaXMgb2suCi0g
ICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldHRpbmcgYSBnZW5lcmF0b3Igd2hlbiBj
b21wb25lbnRzIGRvIG5vdCBtYXRjaCBpcyBhbiBpbnZhbGlkIG9wZXJhdGlvbi4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0g
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBlbnVtCi0gICAgewotICAgICAgICBrVmFsaWRHZW5Nb2Rl
ICAgICAgPSBHTF9DT05TVEFOVF9DSFJPTUlVTSwKLSAgICAgICAga1ZhbGlkQ29tcG9uZW50cyAg
ID0gMywKLSAgICAgICAga0ludmFsaWRHZW5Nb2RlICAgID0gMHhBQiwKLSAgICAgICAga0ludmFs
aWRDb21wb25lbnRzID0gNSwKLSAgICB9OwotCi0gICAgLy8gVGhlIGxvY2F0aW9uID09IC0xIHdv
dWxkIG1lYW4gZnJhZ21lbnQgaW5wdXQgd2FzIG9wdGltaXplZCBhd2F5LiBBdCB0aGUKLSAgICAv
LyB0aW1lIG9mIHdyaXRpbmcsIC0xIGNhbiBub3QgaGFwcGVuIGJlY2F1c2UgdGhlIG9ubHkgd2F5
IHRvIG9idGFpbiB0aGUKLSAgICAvLyBsb2NhdGlvbiBudW1iZXJzIGlzIHRocm91Z2ggYmluZC4g
VGVzdCBqdXN0IHRvIGJlIGNvbnNpc3RlbnQuCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5w
dXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwgLTEsIGtWYWxpZEdlbk1vZGUsIGtWYWxpZENvbXBvbmVu
dHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29lZmZpY2ll
bnRzMTYpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gVGVzdCB0aGF0IGV2
ZW4gdGhvdWdoIHRoZSBzcGVjIHNheXMgbG9jYXRpb24gPT0gLTEgY2F1c2VzIHRoZSBvcGVyYXRp
b24gdG8KLSAgICAvLyBiZSBza2lwcGVkLCB0aGUgdmVyaWZpY2F0aW9uIG9mIG90aGVyIHBhcmFt
ZXRlcnMgaXMgc3RpbGwgZG9uZS4gVGhpcyBpcyBhCi0gICAgLy8gR0wgcG9saWN5LgotICAgIGds
UHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0xLCBrSW52YWxp
ZEdlbk1vZGUsIGtWYWxpZENvbXBvbmVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBrQ29lZmZpY2llbnRzMTYpOwotICAgIEFTU0VSVF9HTF9FUlJPUihHTF9J
TlZBTElEX0VOVU0pOwotCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlV
TShtUHJvZ3JhbSwgLTEsIGtJbnZhbGlkR2VuTW9kZSwga0ludmFsaWRDb21wb25lbnRzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NvZWZmaWNpZW50czE2KTsK
LSAgICBBU1NFUlRfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgIGdsUHJvZ3JhbVBh
dGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0xLCBrVmFsaWRHZW5Nb2RlLCBr
SW52YWxpZENvbXBvbmVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrQ29lZmZpY2llbnRzMTYpOwotICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZB
TFVFKTsKLQotICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICAvLyBUZXN0IHRo
YXQgdXNpbmcgaW52YWxpZCAoZGVsZXRlZCkgcHJvZ3JhbSBpcyBhbiBpbnZhbGlkIG9wZXJhdGlv
bi4KLSAgICBFWFBFQ1RfRkFMU0UoZ2xJc1Byb2dyYW0obVByb2dyYW0pID09IEdMX0ZBTFNFKTsK
LQotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0x
LCBrVmFsaWRHZW5Nb2RlLCBrVmFsaWRDb21wb25lbnRzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga0NvZWZmaWNpZW50czE2KTsKLSAgICBBU1NFUlRfR0xfRVJS
T1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5w
dXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwgLTEsIGtJbnZhbGlkR2VuTW9kZSwga1ZhbGlkQ29tcG9u
ZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDb2VmZmlj
aWVudHMxNik7Ci0gICAgQVNTRVJUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLQot
ICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0xLCBr
SW52YWxpZEdlbk1vZGUsIGtJbnZhbGlkQ29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGtDb2VmZmljaWVudHMxNik7Ci0gICAgQVNTRVJUX0dMX0VS
Uk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLQotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElu
cHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0xLCBrVmFsaWRHZW5Nb2RlLCBrSW52YWxpZENvbXBv
bmVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29lZmZp
Y2llbnRzMTYpOwotICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0K
LSAgICBtUHJvZ3JhbSA9IDB1OwotfQotCi0vLyBUZXN0IHRoYXQgaGF2aW5nIGlucHV0IHN0YXRp
Y2FsbHkgYWxpYXNlZCBmcmFnbWVudCBpbnB1dHMgdGhlIGxpbmtpbmcgZmFpbHMKLS8vIGFuZCB0
aGVuIHN1Y2NlZWRzIHdoZW4gdGhlIGNvbmZsaWN0IGlzIHJlc29sdmVkLgotVEVTVF9QKENIUk9N
SVVNUGF0aFJlbmRlcmluZ1dpdGhUZXh0dXJpbmdUZXN0LCBUZXN0Q29uZmxpY3RpbmdCaW5kKQot
ewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIGNs
YW5nLWZvcm1hdCBvZmYKLSAgICBjb25zdCBjaGFyKiBrVmVydGV4U2hhZGVyU291cmNlID0KLSAg
ICAgICAgImF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uO1xuIgotICAgICAgICAidmFyeWluZyB2ZWM0
IGNvbG9yQTtcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjNCBjb2xvckI7XG4iCi0gICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247XG4iCi0g
ICAgICAgICIgIGNvbG9yQSA9IHBvc2l0aW9uICsgdmVjNCgxKTtcbiIKLSAgICAgICAgIiAgY29s
b3JCID0gcG9zaXRpb24gKyB2ZWM0KDIpO1xuIgotICAgICAgICAifSI7Ci0KLSAgICBjb25zdCBj
aGFyKiBrRnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzQgY29sb3JBO1xuIgotICAgICAgICAidmFy
eWluZyB2ZWM0IGNvbG9yQjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAg
IiAgZ2xfRnJhZ0NvbG9yID0gY29sb3JBICsgY29sb3JCO1xuIgotICAgICAgICAifSI7Ci0gICAg
Ly8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICBjb25zdCBHTGludCBrQ29sb3JBTG9jYXRpb24gPSAz
OwotICAgIGNvbnN0IEdMaW50IGtDb2xvckJMb2NhdGlvbiA9IDQ7Ci0KLSAgICBjb21waWxlUHJv
Z3JhbShrVmVydGV4U2hhZGVyU291cmNlLCBrRnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotCi0gICAg
Z2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtDb2xvckFMb2Nh
dGlvbiwgImNvbG9yQSIpOwotICAgIC8vIEJpbmQgY29sb3JCIHRvIGxvY2F0aW9uIGEsIGNhdXNp
bmcgY29uZmxpY3RzLiBMaW5raW5nIHNob3VsZCBmYWlsLgotICAgIGdsQmluZEZyYWdtZW50SW5w
dXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JBTG9jYXRpb24sICJjb2xvckIiKTsK
LQotICAgIC8vIFNob3VsZCBmYWlsIG5vdy4KLSAgICBBU1NFUlRfVFJVRShsaW5rUHJvZ3JhbSgp
ID09IGZhbHNlKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFJlc29sdmUg
dGhlIGJpbmQgY29uZmxpY3QuCi0gICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01J
VU0obVByb2dyYW0sIGtDb2xvckJMb2NhdGlvbiwgImNvbG9yQiIpOwotCi0gICAgQVNTRVJUX1RS
VUUobGlua1Byb2dyYW0oKSA9PSB0cnVlKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0K
LQotLy8gVGVzdCBiaW5kaW5nIHdpdGggYXJyYXkgdmFyaWFibGVzLCB1c2luZyB6ZXJvIGluZGlj
ZXMuIFRlc3RzIHRoYXQKLS8vIGJpbmRpbmcgY29sb3JBWzBdIHdpdGggZXhwbGljaXQgImNvbG9y
QVswXSIgYXMgd2VsbCBhcyAiY29sb3JBIiBwcm9kdWNlcwotLy8gYSBjb3JyZWN0IGxvY2F0aW9u
IHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBQYXRoUHJvZ3JhbUZyYWdtZW50SW5wdXRHZW4uCi0vLyBG
b3IgcGF0aCByZW5kZXJpbmcsIGNvbG9yQVswXSBpcyBib3VuZCB0byBhIGxvY2F0aW9uLiBUaGUg
aW5wdXQgZ2VuZXJhdG9yIGZvcgotLy8gdGhlIGxvY2F0aW9uIGlzIHNldCB0byBwcm9kdWNlIHZl
YzQoMCwgMC4xLCAwLCAwLjEpLgotLy8gVGhlIGRlZmF1bHQgdmFyeWluZywgY29sb3IsIGlzIGJv
dW5kIHRvIGEgbG9jYXRpb24gYW5kIGl0cyBnZW5lcmF0b3IKLS8vIHdpbGwgcHJvZHVjZSB2ZWM0
KDEwLjApLiAgVGhlIHNoYWRlciBwcm9ncmFtIHByb2R1Y2VzIGdyZWVuIHBpeGVscy4KLS8vIEZv
ciB2ZXJ0ZXgtYmFzZWQgcmVuZGVyaW5nLCB0aGUgdmVydGV4IHNoYWRlciBwcm9kdWNlcyB0aGUg
c2FtZSBlZmZlY3QgYXMKLS8vIHRoZSBpbnB1dCBnZW5lcmF0b3IgZm9yIHBhdGggcmVuZGVyaW5n
LgotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1dpdGhUZXh0dXJpbmdUZXN0LCBCaW5kRnJh
Z21lbnRJbnB1dEFycmF5KQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vY2xhbmctZm9ybWF0IG9mZgotICAgIGNvbnN0IGNoYXIqIGtWZXJ0ZXhT
aGFkZXJTb3VyY2UgPQotICAgICAgICAidW5pZm9ybSBtYXQ0IHZpZXdfbWF0cml4O1xuIgotICAg
ICAgICAidW5pZm9ybSBtYXQ0IGNvbG9yX21hdHJpeDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVj
MiBtb2RlbF90cmFuc2xhdGU7XG4iCi0gICAgICAgICJhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtc
biIKLSAgICAgICAgInZhcnlpbmcgdmVjNCBjb2xvcjtcbiIKLSAgICAgICAgInZhcnlpbmcgdmVj
NCBjb2xvckFbNF07XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIHZl
YzQgcCA9IHZlYzQobW9kZWxfdHJhbnNsYXRlICsgcG9zaXRpb24sIDEsIDEpO1xuIgotICAgICAg
ICAiICBnbF9Qb3NpdGlvbiA9IHZpZXdfbWF0cml4ICogcDtcbiIKLSAgICAgICAgIiAgY29sb3JB
WzBdID0gdmVjNCgwLjAsIDAuMSwgMCwgMC4xKTtcbiIKLSAgICAgICAgIiAgY29sb3JBWzFdID0g
dmVjNCgwLjIpO1xuIgotICAgICAgICAiICBjb2xvckFbMl0gPSB2ZWM0KDAuMyk7XG4iCi0gICAg
ICAgICIgIGNvbG9yQVszXSA9IHZlYzQoMC40KTtcbiIKLSAgICAgICAgIiAgY29sb3IgPSB2ZWM0
KDEwLjApO1xuIgotICAgICAgICAifSI7Ci0KLSAgICBjb25zdCBjaGFyKiBrRnJhZ21lbnRTaGFk
ZXJTb3VyY2UgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAg
ICJ2YXJ5aW5nIHZlYzQgY29sb3I7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzQgY29sb3JBWzRd
O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3Ig
PSBjb2xvckFbMF0gKiBjb2xvcjtcbiIKLSAgICAgICAgIn0iOwotICAgIC8vIGNsYW5nLWZvcm1h
dCBvbgotCi0gICAgY29uc3QgR0xpbnQga0NvbG9yQTBMb2NhdGlvbiA9IDQ7Ci0gICAgY29uc3Qg
R0xpbnQga1VudXNlZExvY2F0aW9uICA9IDU7Ci0gICAgY29uc3QgR0xmbG9hdCBrQ29sb3JBMFtd
ICAgICA9IHswLjBmLCAwLjFmLCAwLjBmLCAwLjFmfTsKLSAgICBjb25zdCBHTGZsb2F0IGtDb2xv
cltdICAgICAgID0gezEwLjBmLCAxMC4wZiwgMTAuMGYsIDEwLjBmfTsKLSAgICBjb25zdCBHTGZs
b2F0IGtGaWxsQ29vcmRzWzZdID0gezU5LjBmLCA1MC4wZiwgNTAuMGYsIDI4LjBmLCA2Ni4wZiwg
NjMuMGZ9OwotCi0gICAgZm9yIChpbnQgcGFzcyA9IDA7IHBhc3MgPCAyOyArK3Bhc3MpCi0gICAg
ewotICAgICAgICBjb21waWxlUHJvZ3JhbShrVmVydGV4U2hhZGVyU291cmNlLCBrRnJhZ21lbnRT
aGFkZXJTb3VyY2UpOwotICAgICAgICBpZiAocGFzcyA9PSAwKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga1VudXNl
ZExvY2F0aW9uLCAiY29sb3JBWzBdIik7Ci0gICAgICAgICAgICBnbEJpbmRGcmFnbWVudElucHV0
TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQTBMb2NhdGlvbiwgImNvbG9yQSIpOwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgZ2xCaW5kRnJh
Z21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtVbnVzZWRMb2NhdGlvbiwgImNv
bG9yQSIpOwotICAgICAgICAgICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0o
bVByb2dyYW0sIGtDb2xvckEwTG9jYXRpb24sICJjb2xvckFbMF0iKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGJpbmRQcm9ncmFtKCk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUobGlua1Byb2dyYW0o
KSA9PSB0cnVlKTsKLQotICAgICAgICBnbFVuaWZvcm1NYXRyaXg0ZnYoa1ZpZXdNYXRyaXhMb2Nh
dGlvbiwgMSwgR0xfRkFMU0UsIGtQcm9qZWN0aW9uTWF0cml4KTsKLSAgICAgICAgZ2xQcm9ncmFt
UGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQTBMb2NhdGlvbiwg
R0xfQ09OU1RBTlRfQ0hST01JVU0sIDQsIGtDb2xvckEwKTsKLSAgICAgICAgZ2xQcm9ncmFtUGF0
aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yRnJhZ21lbnRJbnB1dExv
Y2F0aW9uLCBHTF9DT05TVEFOVF9DSFJPTUlVTSwgNCwga0NvbG9yKTsKLSAgICAgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgZHJhd1Rlc3RQYXR0ZXJuKCk7Ci0KLSAgICAgICAg
Zm9yIChpbnQgaiA9IDA7IGogPCBrVGVzdFJvd3M7ICsraikKLSAgICAgICAgewotICAgICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVGVzdENvbHVtbnM7ICsraSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBrID0gMDsgayA8IEFycmF5U2l6ZShrRmlsbENv
b3Jkcyk7IGsgKz0gMikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bnN0IGZsb2F0IGZ4ID0ga0ZpbGxDb29yZHNba107Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0
IGZsb2F0IGZ5ID0ga0ZpbGxDb29yZHNbayArIDFdOwotICAgICAgICAgICAgICAgICAgICBjb25z
dCBmbG9hdCBweCA9IHN0YXRpY19jYXN0PGZsb2F0PihpICoga1NoYXBlV2lkdGgpOwotICAgICAg
ICAgICAgICAgICAgICBjb25zdCBmbG9hdCBweSA9IHN0YXRpY19jYXN0PGZsb2F0PihqICoga1No
YXBlSGVpZ2h0KTsKLQotICAgICAgICAgICAgICAgICAgICBhbmdsZTo6R0xDb2xvciBjb2xvcjsK
LSAgICAgICAgICAgICAgICAgICAgY29sb3IuUiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGNv
bG9yLkcgPSAyNTU7Ci0gICAgICAgICAgICAgICAgICAgIGNvbG9yLkIgPSAwOwotICAgICAgICAg
ICAgICAgICAgICBjb2xvci5BID0gMjU1OwotICAgICAgICAgICAgICAgICAgICBDaGVja1BpeGVs
cyhzdGF0aWNfY2FzdDxHTGludD4ocHggKyBmeCksIHN0YXRpY19jYXN0PEdMaW50PihweSArIGZ5
KSwgMSwgMSwgMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotLy8g
VGVzdCBiaW5kaW5nIGFycmF5IHZhcmlhYmxlcy4gVGhpcyBpcyBsaWtlIEJpbmRGcmFnbWVudElu
cHV0QXJyYXkuCi0vLyBDdXJyZW50bHkgZGlzYWJsZWQgc2luY2UgaXQgc2VlbXMgdGhlcmUncyBh
IGRyaXZlciBidWcgd2l0aCB0aGUKLS8vIG9sZGVyIGRyaXZlcnMuIFRoaXMgc2hvdWxkIHdvcmsg
d2l0aCBkcml2ZXIgPj0gMzY0LjEyCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nV2l0aFRl
eHR1cmluZ1Rlc3QsCi0gICAgRElTQUJMRURfQmluZEZyYWdtZW50SW5wdXRBcnJheU5vblplcm9J
bmRleCkKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgY29uc3QgY2hhcioga1ZlcnRleFNoYWRlclNvdXJj
ZSA9Ci0gICAgICAgICJ1bmlmb3JtIG1hdDQgdmlld19tYXRyaXg7XG4iCi0gICAgICAgICJ1bmlm
b3JtIG1hdDQgY29sb3JfbWF0cml4O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWMyIG1vZGVsX3Ry
YW5zbGF0ZTtcbiIKLSAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAg
ICAidmFyeWluZyB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAidmFyeWluZyB2ZWM0IGNvbG9yQVs0
XTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgdmVjNCBwID0gdmVj
NChtb2RlbF90cmFuc2xhdGUgKyBwb3NpdGlvbiwgMSwgMSk7XG4iCi0gICAgICAgICIgIGdsX1Bv
c2l0aW9uID0gdmlld19tYXRyaXggKiBwO1xuIgotICAgICAgICAiICBjb2xvckFbMF0gPSB2ZWM0
KDAsIDAuMSwgMCwgMC4xKTtcbiIKLSAgICAgICAgIiAgY29sb3JBWzFdID0gdmVjNCgwLCAxLCAw
LCAxKTtcbiIKLSAgICAgICAgIiAgY29sb3JBWzJdID0gdmVjNCgwLCAwLjgsIDAsIDAuOCk7XG4i
Ci0gICAgICAgICIgIGNvbG9yQVszXSA9IHZlYzQoMCwgMC41LCAwLCAwLjUpO1xuIgotICAgICAg
ICAiICBjb2xvciA9IHZlYzQoMC4yKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb25zdCBj
aGFyKiBrRnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzQgY29sb3JBWzRdO1xuIgotICAgICAgICAi
dmFyeWluZyB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAg
ICAiICBnbF9GcmFnQ29sb3IgPSAoY29sb3JBWzBdICogY29sb3JBWzFdKSArXG4iCi0gICAgICAg
ICIgICAgICBjb2xvckFbMl0gKyAoY29sb3JBWzNdICogY29sb3IpO1xuIgotICAgICAgICAifVxu
IjsKLSAgICAvLyBjbGFuZy1mb3JtYXQgb24KLQotICAgIGNvbnN0IEdMaW50IGtDb2xvckEwTG9j
YXRpb24gPSA0OwotICAgIGNvbnN0IEdMaW50IGtDb2xvckExTG9jYXRpb24gPSAxOwotICAgIGNv
bnN0IEdMaW50IGtDb2xvckEyTG9jYXRpb24gPSAyOwotICAgIGNvbnN0IEdMaW50IGtDb2xvckEz
TG9jYXRpb24gPSAzOwotICAgIGNvbnN0IEdMaW50IGtVbnVzZWRMb2NhdGlvbiA9IDU7Ci0gICAg
Y29uc3QgR0xmbG9hdCBrQ29sb3JBMFtdID0gezAuMGYsIDAuMWYsIDAuMGYsIDAuMWZ9OwotICAg
IGNvbnN0IEdMZmxvYXQga0NvbG9yQTFbXSA9IHswLjBmLCAxLjBmLCAwLjBmLCAxLjBmfTsKLSAg
ICBjb25zdCBHTGZsb2F0IGtDb2xvckEyW10gPSB7MC4wZiwgMC44ZiwgMC4wZiwgMC44Zn07Ci0g
ICAgY29uc3QgR0xmbG9hdCBrQ29sb3JBM1tdID0gezAuMGYsIDAuNWYsIDAuMGYsIDAuNWZ9Owot
ICAgIGNvbnN0IEdMZmxvYXQga0NvbG9yW10gPSB7MC4yZiwgMC4yZiwgMC4yZiwgMC4yZn07Ci0g
ICAgY29uc3QgR0xmbG9hdCBrRmlsbENvb3Jkc1s2XSA9IHs1OS4wZiwgNTAuMGYsIDUwLjBmLCAy
OC4wZiwgNjYuMGYsIDYzLjBmfTsKLQotICAgIGNvbXBpbGVQcm9ncmFtKGtWZXJ0ZXhTaGFkZXJT
b3VyY2UsIGtGcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0KLSAgICBnbEJpbmRGcmFnbWVudElucHV0
TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga1VudXNlZExvY2F0aW9uLCAiY29sb3JBWzBdIik7
Ci0gICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtDb2xv
ckExTG9jYXRpb24sICJjb2xvckFbMV0iKTsKLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRp
b25DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQTJMb2NhdGlvbiwgImNvbG9yQVsyXSIpOwotICAg
IGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JBM0xv
Y2F0aW9uLCAiY29sb3JBWzNdIik7Ci0gICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hS
T01JVU0obVByb2dyYW0sIGtDb2xvckEwTG9jYXRpb24sICJjb2xvckEiKTsKLSAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKLQotICAgIGJpbmRQcm9ncmFtKCk7Ci0gICAgQVNTRVJUX1RSVUUobGlu
a1Byb2dyYW0oKSA9PSB0cnVlKTsKLQotICAgIGdsVW5pZm9ybU1hdHJpeDRmdihrVmlld01hdHJp
eExvY2F0aW9uLCAxLCBHTF9GQUxTRSwga1Byb2plY3Rpb25NYXRyaXgpOwotCi0gICAgZ2xQcm9n
cmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQTBMb2NhdGlv
biwgR0xfQ09OU1RBTlRfQ0hST01JVU0sIDQsIGtDb2xvckEwKTsKLSAgICBnbFByb2dyYW1QYXRo
RnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JBMUxvY2F0aW9uLCBHTF9D
T05TVEFOVF9DSFJPTUlVTSwgNCwga0NvbG9yQTEpOwotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVu
dElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIGtDb2xvckEyTG9jYXRpb24sIEdMX0NPTlNUQU5U
X0NIUk9NSVVNLCA0LCBrQ29sb3JBMik7Ci0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRH
ZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQTNMb2NhdGlvbiwgR0xfQ09OU1RBTlRfQ0hST01J
VU0sIDQsIGtDb2xvckEzKTsKLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9N
SVVNKG1Qcm9ncmFtLCBrQ29sb3JGcmFnbWVudElucHV0TG9jYXRpb24sCi0gICAgICAgIEdMX0NP
TlNUQU5UX0NIUk9NSVVNLCA0LCBrQ29sb3IpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgZHJhd1Rlc3RQYXR0ZXJuKCk7Ci0KLSAgICBmb3IgKGludCBqID0gMDsgaiA8IGtUZXN0
Um93czsgKytqKQotICAgIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVGVzdENvbHVt
bnM7ICsraSkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCBB
cnJheVNpemUoa0ZpbGxDb29yZHMpOyBrICs9IDIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY29uc3QgZmxvYXQgZnggPSBrRmlsbENvb3Jkc1trXTsKLSAgICAgICAgICAgICAgICBj
b25zdCBmbG9hdCBmeSA9IGtGaWxsQ29vcmRzW2sgKyAxXTsKLSAgICAgICAgICAgICAgICBjb25z
dCBmbG9hdCBweCA9IHN0YXRpY19jYXN0PGZsb2F0PihpICoga1NoYXBlV2lkdGgpOwotICAgICAg
ICAgICAgICAgIGNvbnN0IGZsb2F0IHB5ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGogKiBrU2hhcGVI
ZWlnaHQpOwotCi0gICAgICAgICAgICAgICAgYW5nbGU6OkdMQ29sb3IgY29sb3I7Ci0gICAgICAg
ICAgICAgICAgY29sb3IuUiA9IDA7Ci0gICAgICAgICAgICAgICAgY29sb3IuRyA9IDI1NTsKLSAg
ICAgICAgICAgICAgICBjb2xvci5CID0gMDsKLSAgICAgICAgICAgICAgICBjb2xvci5BID0gMjU1
OwotICAgICAgICAgICAgICAgIENoZWNrUGl4ZWxzKHN0YXRpY19jYXN0PEdMaW50PihweCArIGZ4
KSwgc3RhdGljX2Nhc3Q8R0xpbnQ+KHB5ICsgZnkpLCAxLCAxLCAyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbG9yKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0K
LQotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1dpdGhUZXh0dXJpbmdUZXN0LCBVbnVzZWRG
cmFnbWVudElucHV0VXBkYXRlKQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgY29uc3QgY2hhcioga1ZlcnRl
eFNoYWRlclN0cmluZyA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uO1xuIgot
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IGFfcG9z
aXRpb247XG4iCi0gICAgICAgICJ9IjsKLQotICAgIGNvbnN0IGNoYXIqIGtGcmFnbWVudFNoYWRl
clN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAg
InVuaWZvcm0gdmVjNCB1X2NvbG9yQTtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgdV9jb2xv
clU7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgdV9jb2xvckM7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCi0gICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHVfY29sb3JBICsgdV9jb2xv
ckM7XG4iCi0gICAgICAgICJ9IjsKLSAgICAvLyBjbGFuZy1mb3JtYXQgb24KLQotICAgIGNvbnN0
IEdMaW50IGtDb2xvclVMb2NhdGlvbiA9IDE7Ci0gICAgY29uc3QgR0xpbnQga05vbmV4aXN0aW5n
TG9jYXRpb24gPSA1OwotICAgIGNvbnN0IEdMaW50IGtVbmJvdW5kTG9jYXRpb24gPSA2OwotCi0g
ICAgY29tcGlsZVByb2dyYW0oa1ZlcnRleFNoYWRlclN0cmluZywga0ZyYWdtZW50U2hhZGVyU3Ry
aW5nKTsKLQotICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFt
LCBrQ29sb3JVTG9jYXRpb24sICJ1X2NvbG9yVSIpOwotCi0gICAgLy8gVGhlIG5vbi1leGlzdGlu
ZyBpbnB1dCBzaG91bGQgYmVoYXZlIGxpa2UgZXhpc3RpbmcgYnV0IG9wdGltaXplZCBhd2F5IGlu
cHV0LgotICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBr
Tm9uZXhpc3RpbmdMb2NhdGlvbiwgIm5vbmV4aXN0aW5nIik7Ci0KLSAgICAvLyBMZXQgQSBhbmQg
QyBiZSBhc3NpZ25lZCBhdXRvbWF0aWMgbG9jYXRpb25zLgotICAgIEFTU0VSVF9UUlVFKGxpbmtQ
cm9ncmFtKCkgPT0gdHJ1ZSk7Ci0KLSAgICBjb25zdCBHTGZsb2F0IGtDb2xvclsxNl0gPSB7fTsK
LQotICAgIC8vIE5vIGVycm9ycyBvbiBib3VuZCBsb2NhdGlvbnMsIHNpbmNlIGNhbGxlciBkb2Vz
IG5vdCBrbm93Ci0gICAgLy8gaWYgdGhlIGRyaXZlciBvcHRpbWl6ZXMgdGhlbSBhd2F5IG9yIG5v
dC4KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBr
Q29sb3JVTG9jYXRpb24sIEdMX0NPTlNUQU5UX0NIUk9NSVVNLCAxLCBrQ29sb3IpOwotICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gTm8gZXJyb3JzIG9uIGJvdW5kIGxvY2F0aW9u
cyBvZiBuYW1lcyB0aGF0IGRvIG5vdCBleGlzdAotICAgIC8vIGluIHRoZSBzaGFkZXIuIE90aGVy
d2lzZSBpdCB3b3VsZCBiZSBpbmNvbnNpc3RlbnQgd3J0IHRoZQotICAgIC8vIG9wdGltaXphdGlv
biBjYXNlLgotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dy
YW0sIGtOb25leGlzdGluZ0xvY2F0aW9uLCBHTF9DT05TVEFOVF9DSFJPTUlVTSwgMSwga0NvbG9y
KTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFRoZSBhYm92ZSBhcmUgZXF1
YWwgdG8gdXBkYXRpbmcgLTEuCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJP
TUlVTShtUHJvZ3JhbSwgLTEsIEdMX0NPTlNUQU5UX0NIUk9NSVVNLCAxLCBrQ29sb3IpOwotICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gTm8gZXJyb3JzIHdoZW4gdXBkYXRpbmcg
d2l0aCBvdGhlciB0eXBlIGVpdGhlci4KLSAgICAvLyBUaGUgdHlwZSBjYW4gbm90IGJlIGtub3du
IHdpdGggdGhlIG5vbi1leGlzdGluZyBjYXNlLgotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElu
cHV0R2VuQ0hST01JVU0obVByb2dyYW0sIGtDb2xvclVMb2NhdGlvbiwgR0xfQ09OU1RBTlRfQ0hS
T01JVU0sIDQsIGtDb2xvcik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFBy
b2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrTm9uZXhpc3RpbmdM
b2NhdGlvbiwgR0xfQ09OU1RBTlRfQ0hST01JVU0sIDQsIGtDb2xvcik7Ci0gICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVN
KG1Qcm9ncmFtLCAtMSwgR0xfQ09OU1RBTlRfQ0hST01JVU0sIDQsIGtDb2xvcik7Ci0gICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBVcGRhdGluZyBhbiB1bmJvdW5kLCBub24tZXhp
c3RpbmcgbG9jYXRpb24gc3RpbGwgY2F1c2VzIGFuIGVycm9yLgotICAgIGdsUHJvZ3JhbVBhdGhG
cmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIGtVbmJvdW5kTG9jYXRpb24sIEdMX0NP
TlNUQU5UX0NIUk9NSVVNLCA0LCBrQ29sb3IpOwotICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci19Ci0KLQotfSAgLy8gbmFtZXNwYWNlCi0KLUFOR0xFX0lOU1RBTlRJ
QVRFX1RFU1QoQ0hST01JVU1QYXRoUmVuZGVyaW5nVGVzdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzNfT1BFTkdMRVMoKSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKENIUk9NSVVNUGF0
aFJlbmRlcmluZ0RyYXdUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAotICAgICAgICAgICAgICAg
ICAgICAgICBFUzNfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xF
UygpKTsKLQotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChDSFJPTUlVTVBhdGhSZW5kZXJpbmdXaXRo
VGV4dHVyaW5nVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgRVMzX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BidWZmZXJUZXN0LmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9QYnVmZmVyVGVzdC5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMzgxZTE0MzAyYzQ0Nzg0MmMzN2FjYmFhZDFhNWE5YjAz
OTUwOTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BidWZmZXJUZXN0LmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDM0MyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAidGVz
dF91dGlscy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1jbGFzcyBQ
YnVmZmVyVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFBidWZm
ZXJUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDUxMik7Ci0gICAgICAgIHNl
dFdpbmRvd0hlaWdodCg1MTIpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAg
ICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwot
ICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lk
IFNldFVwKCkKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyB2c1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAg
ICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwotICAgICAgICAgICAgYXR0cmlidXRlIHZl
YzQgcG9zaXRpb247Ci0gICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7Ci0KLSAgICAg
ICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfUG9z
aXRpb24gPSBwb3NpdGlvbjsKLSAgICAgICAgICAgICAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54
eSAqIDAuNSkgKyAwLjU7Ci0gICAgICAgICAgICAgICAgdGV4Y29vcmQueSA9IDEuMCAtIHRleGNv
b3JkLnk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcgdGV4dHVyZUZTU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAg
ICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0gICAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIy
RCB0ZXg7Ci0gICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7Ci0KLSAgICAgICAgICAg
IHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9y
ID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQpOwotICAgICAgICAgICAgfQotICAgICAgICApOwot
Ci0gICAgICAgIG1UZXh0dXJlUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzU291cmNlLCB0ZXh0
dXJlRlNTb3VyY2UpOwotICAgICAgICBpZiAobVRleHR1cmVQcm9ncmFtID09IDApCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOwot
ICAgICAgICB9Ci0KLSAgICAgICAgbVRleHR1cmVVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZv
cm1Mb2NhdGlvbihtVGV4dHVyZVByb2dyYW0sICJ0ZXgiKTsKLQotICAgICAgICBFR0xXaW5kb3cg
KndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwotCi0gICAgICAgIEVHTGludCBzdXJmYWNlVHlwZSA9
IDA7Ci0gICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYih3aW5kb3ctPmdldERpc3BsYXkoKSwgd2lu
ZG93LT5nZXRDb25maWcoKSwgRUdMX1NVUkZBQ0VfVFlQRSwgJnN1cmZhY2VUeXBlKTsKLSAgICAg
ICAgbVN1cHBvcnRzUGJ1ZmZlcnMgPSAoc3VyZmFjZVR5cGUgJiBFR0xfUEJVRkZFUl9CSVQpICE9
IDA7Ci0KLSAgICAgICAgRUdMaW50IGJpbmRUb1RleHR1cmVSR0JBID0gMDsKLSAgICAgICAgZWds
R2V0Q29uZmlnQXR0cmliKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCB3aW5kb3ctPmdldENvbmZpZygp
LCBFR0xfQklORF9UT19URVhUVVJFX1JHQkEsICZiaW5kVG9UZXh0dXJlUkdCQSk7Ci0gICAgICAg
IG1TdXBwb3J0c0JpbmRUZXhJbWFnZSA9IChiaW5kVG9UZXh0dXJlUkdCQSA9PSBFR0xfVFJVRSk7
Ci0KLSAgICAgICAgY29uc3QgRUdMaW50IHBCdWZmZXJBdHRyaWJ1dGVzW10gPQotICAgICAgICB7
Ci0gICAgICAgICAgICBFR0xfV0lEVEgsIHN0YXRpY19jYXN0PEVHTGludD4obVBidWZmZXJTaXpl
KSwKLSAgICAgICAgICAgIEVHTF9IRUlHSFQsIHN0YXRpY19jYXN0PEVHTGludD4obVBidWZmZXJT
aXplKSwKLSAgICAgICAgICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwgbVN1cHBvcnRzQmluZFRleElt
YWdlID8gRUdMX1RFWFRVUkVfUkdCQSA6IEVHTF9OT19URVhUVVJFLAotICAgICAgICAgICAgRUdM
X1RFWFRVUkVfVEFSR0VULCBtU3VwcG9ydHNCaW5kVGV4SW1hZ2UgPyBFR0xfVEVYVFVSRV8yRCA6
IEVHTF9OT19URVhUVVJFLAotICAgICAgICAgICAgRUdMX05PTkUsIEVHTF9OT05FLAotICAgICAg
ICB9OwotCi0gICAgICAgIG1QYnVmZmVyID0gZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2Uod2luZG93
LT5nZXREaXNwbGF5KCksIHdpbmRvdy0+Z2V0Q29uZmlnKCksIHBCdWZmZXJBdHRyaWJ1dGVzKTsK
LSAgICAgICAgaWYgKG1TdXBwb3J0c1BidWZmZXJzKQotICAgICAgICB7Ci0gICAgICAgICAgICBB
U1NFUlRfTkUobVBidWZmZXIsIEVHTF9OT19TVVJGQUNFKTsKLSAgICAgICAgICAgIEFTU0VSVF9F
R0xfU1VDQ0VTUygpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAg
ICAgICAgQVNTRVJUX0VRKG1QYnVmZmVyLCBFR0xfTk9fU1VSRkFDRSk7Ci0gICAgICAgICAgICBB
U1NFUlRfRUdMX0VSUk9SKEVHTF9CQURfTUFUQ0gpOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkK
LSAgICB7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtVGV4dHVyZVByb2dyYW0pOwotCi0gICAg
ICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7Ci0gICAgICAgIGVnbERlc3Ry
b3lTdXJmYWNlKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBtUGJ1ZmZlcik7Ci0KLSAgICAgICAgQU5H
TEVUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQotICAgIEdMdWludCBtVGV4dHVyZVByb2dyYW07
Ci0gICAgR0xpbnQgbVRleHR1cmVVbmlmb3JtTG9jYXRpb247Ci0KLSAgICBjb25zdCBzaXplX3Qg
bVBidWZmZXJTaXplID0gMzI7Ci0gICAgRUdMU3VyZmFjZSBtUGJ1ZmZlcjsKLSAgICBib29sIG1T
dXBwb3J0c1BidWZmZXJzOwotICAgIGJvb2wgbVN1cHBvcnRzQmluZFRleEltYWdlOwotfTsKLQot
Ly8gVGVzdCBjbGVhcmluZyBhIFBidWZmZXIgYW5kIGNoZWNraW5nIHRoZSBjb2xvciBpcyBjb3Jy
ZWN0Ci1URVNUX1AoUGJ1ZmZlclRlc3QsIENsZWFyaW5nKQotewotICAgIGlmICghbVN1cHBvcnRz
UGJ1ZmZlcnMpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNh
dXNlIFBidWZmZXJzIGFyZSBub3Qgc3VwcG9ydGVkLiIgPDwgc3RkOjplbmRsOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsK
LQotICAgIC8vIENsZWFyIHRoZSB3aW5kb3cgc3VyZmFjZSB0byBibHVlIGFuZCB2ZXJpZnkKLSAg
ICBlZ2xNYWtlQ3VycmVudCh3aW5kb3ctPmdldERpc3BsYXkoKSwgd2luZG93LT5nZXRTdXJmYWNl
KCksIHdpbmRvdy0+Z2V0U3VyZmFjZSgpLCB3aW5kb3ctPmdldENvbnRleHQoKSk7Ci0gICAgQVNT
RVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMS4wZiwg
MS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdl
dFdpbmRvd0hlaWdodCgpIC8gMiwgMCwgMCwgMjU1LCAyNTUpOwotCi0gICAgLy8gQXBwbHkgdGhl
IFBidWZmZXIgYW5kIGNsZWFyIGl0IHRvIHB1cnBsZSBhbmQgdmVyaWZ5Ci0gICAgZWdsTWFrZUN1
cnJlbnQod2luZG93LT5nZXREaXNwbGF5KCksIG1QYnVmZmVyLCBtUGJ1ZmZlciwgd2luZG93LT5n
ZXRDb250ZXh0KCkpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgZ2xWaWV3cG9y
dCgwLCAwLCBzdGF0aWNfY2FzdDxHTHNpemVpPihtUGJ1ZmZlclNpemUpLCBzdGF0aWNfY2FzdDxH
THNpemVpPihtUGJ1ZmZlclNpemUpKTsKLSAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMS4w
ZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoc3RhdGljX2Nhc3Q8R0xpbnQ+KG1Q
YnVmZmVyU2l6ZSkgLyAyLCBzdGF0aWNfY2FzdDxHTGludD4obVBidWZmZXJTaXplKSAvIDIsIDI1
NSwKLSAgICAgICAgICAgICAgICAgICAgMCwgMjU1LCAyNTUpOwotCi0gICAgLy8gUmViaW5kIHRo
ZSB3aW5kb3cgc3VyZmFjZSBhbmQgdmVyaWZ5IHRoYXQgaXQgaXMgc3RpbGwgYmx1ZQotICAgIGVn
bE1ha2VDdXJyZW50KHdpbmRvdy0+Z2V0RGlzcGxheSgpLCB3aW5kb3ctPmdldFN1cmZhY2UoKSwg
d2luZG93LT5nZXRTdXJmYWNlKCksIHdpbmRvdy0+Z2V0Q29udGV4dCgpKTsKLSAgICBBU1NFUlRf
RUdMX1NVQ0NFU1MoKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIs
IGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMCwgMCwgMjU1LCAyNTUpOwotfQotCi0vLyBCaW5kIHRo
ZSBQYnVmZmVyIHRvIGEgdGV4dHVyZSBhbmQgdmVyaWZ5IGl0IHJlbmRlcnMgY29ycmVjdGx5Ci1U
RVNUX1AoUGJ1ZmZlclRlc3QsIEJpbmRUZXhJbWFnZSkKLXsKLSAgICBpZiAoIW1TdXBwb3J0c1Bi
dWZmZXJzKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVz
ZSBQYnVmZmVycyBhcmUgbm90IHN1cHBvcnRlZC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmICghbVN1cHBvcnRzQmluZFRleEltYWdlKQotICAgIHsKLSAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBQYnVmZmVyIGRvZXMgbm90
IHN1cHBvcnQgYmluZGluZyB0byBSR0JBIHRleHR1cmVzLiIgPDwgc3RkOjplbmRsOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3co
KTsKLQotICAgIC8vIEFwcGx5IHRoZSBQYnVmZmVyIGFuZCBjbGVhciBpdCB0byBwdXJwbGUKLSAg
ICBlZ2xNYWtlQ3VycmVudCh3aW5kb3ctPmdldERpc3BsYXkoKSwgbVBidWZmZXIsIG1QYnVmZmVy
LCB3aW5kb3ctPmdldENvbnRleHQoKSk7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAg
ICBnbFZpZXdwb3J0KDAsIDAsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1QYnVmZmVyU2l6ZSksIHN0
YXRpY19jYXN0PEdMc2l6ZWk+KG1QYnVmZmVyU2l6ZSkpOwotICAgIGdsQ2xlYXJDb2xvcigxLjBm
LCAwLjBmLCAxLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwot
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgRVhQRUNUX1BJWEVMX0VRKHN0YXRpY19j
YXN0PEdMaW50PihtUGJ1ZmZlclNpemUpIC8gMiwgc3RhdGljX2Nhc3Q8R0xpbnQ+KG1QYnVmZmVy
U2l6ZSkgLyAyLCAyNTUsCi0gICAgICAgICAgICAgICAgICAgIDAsIDI1NSwgMjU1KTsKLQotICAg
IC8vIEFwcGx5IHRoZSB3aW5kb3cgc3VyZmFjZQotICAgIGVnbE1ha2VDdXJyZW50KHdpbmRvdy0+
Z2V0RGlzcGxheSgpLCB3aW5kb3ctPmdldFN1cmZhY2UoKSwgd2luZG93LT5nZXRTdXJmYWNlKCks
IHdpbmRvdy0+Z2V0Q29udGV4dCgpKTsKLQotICAgIC8vIENyZWF0ZSBhIHRleHR1cmUgYW5kIGJp
bmQgdGhlIFBidWZmZXIgdG8gaXQKLSAgICBHTHVpbnQgdGV4dHVyZSA9IDA7Ci0gICAgZ2xHZW5U
ZXh0dXJlcygxLCAmdGV4dHVyZSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0
ZXh0dXJlKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9N
SU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwot
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xf
Q0xBTVBfVE9fRURHRSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBlZ2xCaW5k
VGV4SW1hZ2Uod2luZG93LT5nZXREaXNwbGF5KCksIG1QYnVmZmVyLCBFR0xfQkFDS19CVUZGRVIp
OwotICAgIGdsVmlld3BvcnQoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0
KCkpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgLy8gRHJhdyBhIHF1YWQgYW5k
IHZlcmlmeSB0aGF0IGl0IGlzIHB1cnBsZQotICAgIGdsVXNlUHJvZ3JhbShtVGV4dHVyZVByb2dy
YW0pOwotICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uLCAwKTsKLQotICAg
IGRyYXdRdWFkKG1UZXh0dXJlUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBVbmJpbmQgdGhlIHRleHR1cmUKLSAgICBlZ2xSZWxl
YXNlVGV4SW1hZ2Uod2luZG93LT5nZXREaXNwbGF5KCksIG1QYnVmZmVyLCBFR0xfQkFDS19CVUZG
RVIpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgLy8gVmVyaWZ5IHRoYXQgcHVy
cGxlIHdhcyBkcmF3bgotICAgIEVYUEVDVF9QSVhFTF9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwg
Z2V0V2luZG93SGVpZ2h0KCkgLyAyLCAyNTUsIDAsIDI1NSwgMjU1KTsKLQotICAgIGdsRGVsZXRl
VGV4dHVyZXMoMSwgJnRleHR1cmUpOwotfQotCi0vLyBWZXJpZnkgdGhhdCB3aGVuIGVnbEJpbmQv
UmVsZWFzZVRleEltYWdlIGFyZSBjYWxsZWQsIHRoZSB0ZXh0dXJlIGltYWdlcyBhcmUgZnJlZWQg
YW5kIHRoZWlyCi0vLyBzaXplIGluZm9ybWF0aW9uIGlzIGNvcnJlY3RseSB1cGRhdGVkLgotVEVT
VF9QKFBidWZmZXJUZXN0LCBUZXh0dXJlU2l6ZVJlc2V0KQotewotICAgIGlmICghbVN1cHBvcnRz
UGJ1ZmZlcnMpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNh
dXNlIFBidWZmZXJzIGFyZSBub3Qgc3VwcG9ydGVkLiIgPDwgc3RkOjplbmRsOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtU3VwcG9ydHNCaW5kVGV4SW1hZ2UpCi0gICAgewot
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIFBidWZmZXIgZG9lcyBu
b3Qgc3VwcG9ydCBiaW5kaW5nIHRvIFJHQkEgdGV4dHVyZXMuIiA8PCBzdGQ6OmVuZGw7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHVpbnQgdGV4dHVyZSA9IDA7Ci0gICAgZ2xHZW5U
ZXh0dXJlcygxLCAmdGV4dHVyZSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0
ZXh0dXJlKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9N
SU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwot
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xf
Q0xBTVBfVE9fRURHRSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFVzZVBy
b2dyYW0obVRleHR1cmVQcm9ncmFtKTsKLSAgICBnbFVuaWZvcm0xaShtVGV4dHVyZVVuaWZvcm1M
b2NhdGlvbiwgMCk7Ci0KLSAgICAvLyBGaWxsIHRoZSB0ZXh0dXJlIHdpdGggd2hpdGUgcGl4ZWxz
Ci0gICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gd2hpdGVQaXhlbHMobVBidWZmZXJTaXplICogbVBi
dWZmZXJTaXplICogNCwgMjU1KTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwg
R0xfUkdCQSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4obVBidWZmZXJTaXplKSwKLSAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4obVBidWZmZXJTaXplKSwgMCwgR0xfUkdCQSwgR0xf
VU5TSUdORURfQllURSwgJndoaXRlUGl4ZWxzWzBdKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKLQotICAgIC8vIERyYXcgdGhlIHdoaXRlIHRleHR1cmUgYW5kIHZlcmlmeSB0aGF0IHRoZSBw
aXhlbHMgYXJlIGNvcnJlY3QKLSAgICBkcmF3UXVhZChtVGV4dHVyZVByb2dyYW0sICJwb3NpdGlv
biIsIDAuNWYpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAyNTUsIDI1NSwgMjU1LCAyNTUp
OwotCi0gICAgLy8gQmluZCB0aGUgRUdMIHN1cmZhY2UgYW5kIGRyYXcgd2l0aCBpdCwgcmVzdWx0
cyBhcmUgdW5kZWZpbmVkIHNpbmNlIG5vdGhpbmcgaGFzCi0gICAgLy8gYmVlbiB3cml0dGVuIHRv
IGl0Ci0gICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLSAgICBlZ2xCaW5k
VGV4SW1hZ2Uod2luZG93LT5nZXREaXNwbGF5KCksIG1QYnVmZmVyLCBFR0xfQkFDS19CVUZGRVIp
OwotICAgIGRyYXdRdWFkKG1UZXh0dXJlUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBDbGVhciB0aGUgYmFjayBidWZmZXIgdG8g
YSB1bmlxdWUgY29sb3IgKGdyZWVuKQotICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAxLjBmLCAwLjBm
LCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIEVYUEVDVF9Q
SVhFTF9FUSgwLCAwLCAwLCAyNTUsIDAsIDI1NSk7Ci0KLSAgICAvLyBVbmJpbmQgdGhlIEVHTCBz
dXJmYWNlIGFuZCB0cnkgdG8gZHJhdyB3aXRoIHRoZSB0ZXh0dXJlIGFnYWluLCB0aGUgdGV4dHVy
ZSdzIHNpemUgc2hvdWxkCi0gICAgLy8gbm93IGJlIHplcm8gYW5kIGluY29tcGxldGUgc28gdGhl
IGJhY2sgYnVmZmVyIHNob3VsZCBiZSBibGFjawotICAgIGVnbFJlbGVhc2VUZXhJbWFnZSh3aW5k
b3ctPmdldERpc3BsYXkoKSwgbVBidWZmZXIsIEVHTF9CQUNLX0JVRkZFUik7Ci0gICAgZHJhd1F1
YWQobVRleHR1cmVQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfUElYRUxf
RVEoMCwgMCwgMCwgMCwgMCwgMjU1KTsKLX0KLQotLy8gQmluZCBhIFBidWZmZXIsIHJlZGVmaW5l
IHRoZSB0ZXh0dXJlLCBhbmQgdmVyaWZ5IGl0IHJlbmRlcnMgY29ycmVjdGx5Ci1URVNUX1AoUGJ1
ZmZlclRlc3QsIEJpbmRUZXhJbWFnZUFuZFJlZGVmaW5lVGV4dHVyZSkKLXsKLSAgICBpZiAoIW1T
dXBwb3J0c1BidWZmZXJzKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBw
ZWQgYmVjYXVzZSBQYnVmZmVycyBhcmUgbm90IHN1cHBvcnRlZC4iIDw8IHN0ZDo6ZW5kbDsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghbVN1cHBvcnRzQmluZFRleEltYWdlKQot
ICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBQYnVmZmVy
IGRvZXMgbm90IHN1cHBvcnQgYmluZGluZyB0byBSR0JBIHRleHR1cmVzLiIgPDwgc3RkOjplbmRs
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRF
R0xXaW5kb3coKTsKLQotICAgIC8vIEFwcGx5IHRoZSBQYnVmZmVyIGFuZCBjbGVhciBpdCB0byBw
dXJwbGUKLSAgICBlZ2xNYWtlQ3VycmVudCh3aW5kb3ctPmdldERpc3BsYXkoKSwgbVBidWZmZXIs
IG1QYnVmZmVyLCB3aW5kb3ctPmdldENvbnRleHQoKSk7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNT
KCk7Ci0KLSAgICBnbFZpZXdwb3J0KDAsIDAsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1QYnVmZmVy
U2l6ZSksIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1QYnVmZmVyU2l6ZSkpOwotICAgIGdsQ2xlYXJD
b2xvcigxLjBmLCAwLjBmLCAxLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZF
Ul9CSVQpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgRVhQRUNUX1BJWEVMX0VR
KHN0YXRpY19jYXN0PEdMaW50PihtUGJ1ZmZlclNpemUpIC8gMiwgc3RhdGljX2Nhc3Q8R0xpbnQ+
KG1QYnVmZmVyU2l6ZSkgLyAyLCAyNTUsCi0gICAgICAgICAgICAgICAgICAgIDAsIDI1NSwgMjU1
KTsKLQotICAgIC8vIEFwcGx5IHRoZSB3aW5kb3cgc3VyZmFjZQotICAgIGVnbE1ha2VDdXJyZW50
KHdpbmRvdy0+Z2V0RGlzcGxheSgpLCB3aW5kb3ctPmdldFN1cmZhY2UoKSwgd2luZG93LT5nZXRT
dXJmYWNlKCksIHdpbmRvdy0+Z2V0Q29udGV4dCgpKTsKLQotICAgIC8vIENyZWF0ZSBhIHRleHR1
cmUgYW5kIGJpbmQgdGhlIFBidWZmZXIgdG8gaXQKLSAgICBHTHVpbnQgdGV4dHVyZSA9IDA7Ci0g
ICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCB0ZXh0dXJlKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RP
X0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dS
QVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICBlZ2xCaW5kVGV4SW1hZ2Uod2luZG93LT5nZXREaXNwbGF5KCksIG1QYnVmZmVyLCBFR0xfQkFD
S19CVUZGRVIpOwotICAgIGdsVmlld3BvcnQoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2lu
ZG93SGVpZ2h0KCkpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgLy8gUmVkZWZp
bmUgdGhlIHRleHR1cmUKLSAgICB1bnNpZ25lZCBpbnQgcGl4ZWxWYWx1ZSA9IDB4RkZGRjAwRkY7
Ci0gICAgc3RkOjp2ZWN0b3I8dW5zaWduZWQgaW50PiBwaXhlbERhdGEoZ2V0V2luZG93V2lkdGgo
KSAqIGdldFdpbmRvd0hlaWdodCgpLCBwaXhlbFZhbHVlKTsKLSAgICBnbFRleEltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0
KCksIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZwaXhlbERhdGFbMF0pOwotCi0gICAg
Ly8gRHJhdyBhIHF1YWQgYW5kIHZlcmlmeSB0aGF0IGl0IGlzIG1hZ2VudGEKLSAgICBnbFVzZVBy
b2dyYW0obVRleHR1cmVQcm9ncmFtKTsKLSAgICBnbFVuaWZvcm0xaShtVGV4dHVyZVVuaWZvcm1M
b2NhdGlvbiwgMCk7Ci0KLSAgICBkcmF3UXVhZChtVGV4dHVyZVByb2dyYW0sICJwb3NpdGlvbiIs
IDAuNWYpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gVmVyaWZ5IHRoYXQg
bWFnZW50YSB3YXMgZHJhd24KLSAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0V2luZG93V2lkdGgoKSAv
IDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMjU1LCAwLCAyNTUsIDI1NSk7Ci0KLSAgICBnbERl
bGV0ZVRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdo
aWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9y
IHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lOU1RB
TlRJQVRFX1RFU1QoUGJ1ZmZlclRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5
KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9X
QVJQKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9SRUZFUkVOQ0UoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BvaW50U3ByaXRlc1Rlc3QuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BvaW50U3ByaXRl
c1Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDQ1ZTQ4Y2NhYTRlMWVi
OWUyYWZlZWI0YWVmY2VhY2UwY2FkMDViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9Qb2ludFNwcml0ZXNUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyNiArMCwwIEBACi0v
LwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCi0vLwotLy8gU29tZSBvZiB0aGUgcG9pbnRzcHJpdGUgdGVzdHMgYmVsb3cgd2VyZSBwb3J0
ZWQgZnJvbSBLaHJvbm9zIFdlYkdMCi0vLyBjb25mb3JtYW5jZSB0ZXN0IHN1aXRlLgotCi0jaW5j
bHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotI2luY2x1ZGUgPGNtYXRoPgotCi11c2lu
ZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLWNsYXNzIFBvaW50U3ByaXRlc1Rlc3QgOiBwdWJsaWMgQU5H
TEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBjb25zdCBpbnQgd2luZG93V2lkdGggPSAyNTY7
Ci0gICAgY29uc3QgaW50IHdpbmRvd0hlaWdodCA9IDI1NjsKLSAgICBQb2ludFNwcml0ZXNUZXN0
KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKHdpbmRvd1dpZHRoKTsKLSAgICAgICAg
c2V0V2luZG93SGVpZ2h0KHdpbmRvd0hlaWdodCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMo
OCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1
ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICB9Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwot
ICAgIH0KLQotICAgIGZsb2F0IHMycChmbG9hdCBzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIChz
ICsgMS4wZikgKiAwLjVmICogKEdMZmxvYXQpd2luZG93V2lkdGg7Ci0gICAgfQotfTsKLQotLy8g
Q2hlY2tzIGdsX1BvaW50Q29vcmQgYW5kIGdsX1BvaW50U2l6ZQotLy8gaHR0cHM6Ly93d3cua2hy
b25vcy5vcmcvcmVnaXN0cnkvd2ViZ2wvc2RrL3Rlc3RzL2NvbmZvcm1hbmNlL2dsc2wvdmFyaWFi
bGVzL2dsLXBvaW50Y29vcmQuaHRtbAotVEVTVF9QKFBvaW50U3ByaXRlc1Rlc3QsIFBvaW50Q29v
cmRBbmRQb2ludFNpemVDb21wbGlhbmNlKQotewotICAgIC8vIFRPRE8oam1hZGlsbCk6IGZpZ3Vy
ZSBvdXQgd2h5IHRoaXMgZmFpbHMKLSAgICBpZiAoSXNJbnRlbCgpICYmIEdldFBhcmFtKCkgPT0g
RVMyX0QzRDkoKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9u
IEludGVsIGR1ZSB0byBmYWlsdXJlcy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzID0gU0hBREVSX1NPVVJDRQotICAgICgK
LSAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Ci0gICAgICAgIHZvaWQgbWFpbigpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoCi0gICAgICAgICAgICAg
ICAgZ2xfUG9pbnRDb29yZC54LAotICAgICAgICAgICAgICAgIGdsX1BvaW50Q29vcmQueSwKLSAg
ICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgIDEpOwotICAgICAgICB9Ci0gICAgKTsK
LQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAg
ICAgYXR0cmlidXRlIHZlYzQgdlBvc2l0aW9uOwotICAgICAgICB1bmlmb3JtIGZsb2F0IHVQb2lu
dFNpemU7Ci0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsX1Bv
aW50U2l6ZSA9IHVQb2ludFNpemU7Ci0gICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZQb3NpdGlv
bjsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9n
cmFtKHZzLCBmcyk7Ci0gICAgQVNTRVJUX05FKHByb2dyYW0sIDB1KTsKLSAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKLQotICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKLQotICAgIEdMZmxvYXQg
cG9pbnRTaXplUmFuZ2VbMl0gPSB7fTsKLSAgICBnbEdldEZsb2F0dihHTF9BTElBU0VEX1BPSU5U
X1NJWkVfUkFOR0UsIHBvaW50U2l6ZVJhbmdlKTsKLQotICAgIEdMZmxvYXQgbWF4UG9pbnRTaXpl
ID0gcG9pbnRTaXplUmFuZ2VbMV07Ci0KLSAgICBBU1NFUlRfVFJVRShtYXhQb2ludFNpemUgPj0g
MSk7Ci0gICAgbWF4UG9pbnRTaXplID0gZmxvb3JmKG1heFBvaW50U2l6ZSk7Ci0gICAgQVNTRVJU
X1RSVUUoKGludCltYXhQb2ludFNpemUgJSAxID09IDApOwotCi0gICAgbWF4UG9pbnRTaXplID0g
c3RkOjptaW4obWF4UG9pbnRTaXplLCA2NC4wZik7Ci0gICAgR0xmbG9hdCBwb2ludFdpZHRoID0g
bWF4UG9pbnRTaXplIC8gd2luZG93V2lkdGg7Ci0gICAgR0xpbnQgc3RlcCA9IHN0YXRpY19jYXN0
PEdMaW50PihmbG9vcmYobWF4UG9pbnRTaXplIC8gNCkpOwotICAgIEdMaW50IHBvaW50U3RlcCA9
IHN0ZDo6bWF4PEdMaW50PigxLCBzdGVwKTsKLQotICAgIEdMaW50IHBvaW50U2l6ZUxvYyA9IGds
R2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1UG9pbnRTaXplIik7Ci0gICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICBnbFVuaWZvcm0xZihwb2ludFNpemVMb2MsIG1heFBvaW50U2l6
ZSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBHTGZsb2F0IHBpeGVsT2Zmc2V0
ID0gKChpbnQpbWF4UG9pbnRTaXplICUgMikgPyAoMS4wZiAvIChHTGZsb2F0KXdpbmRvd1dpZHRo
KSA6IDA7Ci0gICAgR0x1aW50IHZlcnRleE9iamVjdCA9IDA7Ci0gICAgZ2xHZW5CdWZmZXJzKDEs
ICZ2ZXJ0ZXhPYmplY3QpOwotICAgIEFTU0VSVF9ORSh2ZXJ0ZXhPYmplY3QsIDBVKTsKLSAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIs
IHZlcnRleE9iamVjdCk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBHTGZsb2F0
IHRoZVBvaW50c1tdID0geyAtMC41ZiArIHBpeGVsT2Zmc2V0LCAtMC41ZiArIHBpeGVsT2Zmc2V0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjVmICsgcGl4ZWxPZmZzZXQsIC0wLjVm
ICsgcGl4ZWxPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTAuNWYgKyBwaXhl
bE9mZnNldCwgIDAuNWYgKyBwaXhlbE9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMC41ZiArIHBpeGVsT2Zmc2V0LCAgMC41ZiArIHBpeGVsT2Zmc2V0IH07Ci0KLSAgICBnbEJ1
ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBzaXplb2YodGhlUG9pbnRzKSwgdGhlUG9pbnRzLCBH
TF9TVEFUSUNfRFJBVyk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbEVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KDApOwotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcigwLCAyLCBH
TF9GTE9BVCwgR0xfRkFMU0UsIDAsIDApOwotCi0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJf
QklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCk7Ci0KLSAgICBnbERyYXdBcnJheXMoR0xfUE9JTlRT
LCAwLCA0KTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsRGVsZXRlQnVmZmVy
cygxLCAmdmVydGV4T2JqZWN0KTsKLQotICAgIHN0ZDo6c3RyaW5nIGRlYnVnVGV4dDsKLSAgICBm
b3IgKGZsb2F0IHB5ID0gMDsgcHkgPCAyOyArK3B5KSB7Ci0gICAgICAgIGZvciAoZmxvYXQgcHgg
PSAwOyBweCA8IDI7ICsrcHgpIHsKLSAgICAgICAgICAgIGZsb2F0IHBvaW50WCA9IC0wLjVmICsg
cHggKyBwaXhlbE9mZnNldDsKLSAgICAgICAgICAgIGZsb2F0IHBvaW50WSA9IC0wLjVmICsgcHkg
KyBwaXhlbE9mZnNldDsKLSAgICAgICAgICAgIGZvciAoaW50IHl5ID0gMDsgeXkgPCBtYXhQb2lu
dFNpemU7IHl5ICs9IHBvaW50U3RlcCkgewotICAgICAgICAgICAgICAgIGZvciAoaW50IHh4ID0g
MDsgeHggPCBtYXhQb2ludFNpemU7IHh4ICs9IHBvaW50U3RlcCkgewotICAgICAgICAgICAgICAg
ICAgICAvLyBmb3JtdWxhIGZvciBzIGFuZCB0IGZyb20gT3BlbkdMIEVTIDIuMCBzcGVjIHNlY3Rp
b24gMy4zCi0gICAgICAgICAgICAgICAgICAgIGZsb2F0IHh3ID0gczJwKHBvaW50WCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGZsb2F0IHl3ID0gczJwKHBvaW50WSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGZsb2F0IHUgPSB4eCAvIG1heFBvaW50U2l6ZSAqIDIgLSAxOwotICAgICAgICAgICAgICAg
ICAgICBmbG9hdCB2ID0geXkgLyBtYXhQb2ludFNpemUgKiAyIC0gMTsKLSAgICAgICAgICAgICAg
ICAgICAgaW50IHhmID0gc3RhdGljX2Nhc3Q8aW50PihmbG9vcmYoczJwKHBvaW50WCArIHUgKiBw
b2ludFdpZHRoKSkpOwotICAgICAgICAgICAgICAgICAgICBpbnQgeWYgPSBzdGF0aWNfY2FzdDxp
bnQ+KGZsb29yZihzMnAocG9pbnRZICsgdiAqIHBvaW50V2lkdGgpKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGZsb2F0IHMgPSAwLjVmICsgKHhmICsgMC41ZiAtIHh3KSAvIG1heFBvaW50U2l6ZTsK
LSAgICAgICAgICAgICAgICAgICAgZmxvYXQgdCA9IDAuNWYgKyAoeWYgKyAwLjVmIC0geXcpIC8g
bWF4UG9pbnRTaXplOwotICAgICAgICAgICAgICAgICAgICBHTHVieXRlIGNvbG9yWzRdID0geyBz
dGF0aWNfY2FzdDxHTHVieXRlPihmbG9vcmYocyAqIDI1NSkpLCBzdGF0aWNfY2FzdDxHTHVieXRl
PihmbG9vcmYoKDEgLSB0KSAqIDI1NSkpLCAwLCAyNTUgfTsKLSAgICAgICAgICAgICAgICAgICAg
RVhQRUNUX1BJWEVMX05FQVIoeGYsIHlmLCBjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJdLCBj
b2xvclszXSwgNCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotfQotCi0vLyBWZXJpZnkgdGhhdCBkcmF3aW5nIGEgcG9pbnQgd2l0aG91dCBlbmFi
bGluZyBhbnkgYXR0cmlidXRlcyBzdWNjZWVkcwotLy8gaHR0cHM6Ly93d3cua2hyb25vcy5vcmcv
cmVnaXN0cnkvd2ViZ2wvc2RrL3Rlc3RzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9wb2ludC1uby1h
dHRyaWJ1dGVzLmh0bWwKLVRFU1RfUChQb2ludFNwcml0ZXNUZXN0LCBQb2ludFdpdGhvdXRBdHRy
aWJ1dGVzQ29tcGxpYW5jZSkKLXsKLSAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgZnMgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApOwotICAgICAgICB9Ci0g
ICAgKTsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzID0gU0hBREVSX1NPVVJDRQotICAgICgK
LSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xfUG9pbnRTaXpl
ID0gMi4wOwotICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEu
MCk7Ci0gICAgICAgIH0KLSAgICApOwotICAgIC8vIGNsYW5nLWZvcm1hdCBvbgotCi0gICAgR0x1
aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2cywgZnMpOwotICAgIEFTU0VSVF9ORShwcm9n
cmFtLCAwdSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFVzZVByb2dyYW0o
cHJvZ3JhbSk7Ci0KLSAgICBnbERyYXdBcnJheXMoR0xfUE9JTlRTLCAwLCAxKTsKLSAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIGV4cGVjdCB0aGUgY2VudGVyIHBpeGVsIHRvIGJl
IGdyZWVuCi0gICAgRVhQRUNUX1BJWEVMX0VRKCh3aW5kb3dXaWR0aCAtIDEpIC8gMiwgKHdpbmRv
d0hlaWdodCAtIDEpIC8gMiwgMCwgMjU1LCAwLCAyNTUpOwotfQotCi0vLyBUaGlzIGlzIGEgcmVn
cmVzc2lvbiB0ZXN0IGZvciBhIGdyYXBoaWNzIGRyaXZlciBidWcgYWZmZWN0aW5nIGVuZCBjYXBz
IG9uIHJvYWRzIGluIE1hcHNHTAotLy8gaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkv
d2ViZ2wvc2RrL3Rlc3RzL2NvbmZvcm1hbmNlL3JlbmRlcmluZy9wb2ludC13aXRoLWdsLXBvaW50
Y29vcmQtaW4tZnJhZ21lbnQtc2hhZGVyLmh0bWwKLVRFU1RfUChQb2ludFNwcml0ZXNUZXN0LCBQ
b2ludENvb3JkUmVncmVzc2lvblRlc3QpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnMgPSBT
SEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLSAg
ICAgICAgdmFyeWluZyB2ZWM0IHZfY29sb3I7Ci0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIC8vIEl0IHNlZW1zIGFzIGxvbmcgYXMgdGhpcyBtYXRoZW1hdGljYWwg
ZXhwcmVzc2lvbiByZWZlcmVuY2VzCi0gICAgICAgICAgICAvLyBnbF9Qb2ludENvb3JkLCB0aGUg
ZnJhZ21lbnQncyBjb2xvciBpcyBpbmNvcnJlY3QuCi0gICAgICAgICAgICB2ZWMyIGRpZmYgPSBn
bF9Qb2ludENvb3JkIC0gdmVjMiguNSwgLjUpOwotICAgICAgICAgICAgaWYgKGxlbmd0aChkaWZm
KSA+IDAuNSkKLSAgICAgICAgICAgICAgICBkaXNjYXJkOwotCi0gICAgICAgICAgICAvLyBUaGUg
cG9pbnQgc2hvdWxkIGJlIGEgc29saWQgY29sb3IuCi0gICAgICAgICAgICBnbF9GcmFnQ29sb3Ig
PSB2X2NvbG9yOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZz
ID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgdmFyeWluZyB2ZWM0IHZfY29sb3I7Ci0g
ICAgICAgIC8vIFRoZSBYIGFuZCBZIGNvb3JkaW5hdGVzIG9mIHRoZSBjZW50ZXIgb2YgdGhlIHBv
aW50LgotICAgICAgICBhdHRyaWJ1dGUgdmVjMiBhX3ZlcnRleDsKLSAgICAgICAgdW5pZm9ybSBm
bG9hdCB1X3BvaW50U2l6ZTsKLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgZ2xfUG9pbnRTaXplID0gdV9wb2ludFNpemU7Ci0gICAgICAgICAgICBnbF9Qb3NpdGlv
biA9IHZlYzQoYV92ZXJ0ZXgsIDAuMCwgMS4wKTsKLSAgICAgICAgICAgIC8vIFRoZSBjb2xvciBv
ZiB0aGUgcG9pbnQuCi0gICAgICAgICAgICB2X2NvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAx
LjApOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW0odnMsIGZzKTsKLSAgICBBU1NFUlRfTkUocHJvZ3JhbSwgMHUpOwotICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOwotCi0gICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOwotCi0gICAgR0xmbG9h
dCBwb2ludFNpemVSYW5nZVsyXSA9IHt9OwotICAgIGdsR2V0RmxvYXR2KEdMX0FMSUFTRURfUE9J
TlRfU0laRV9SQU5HRSwgcG9pbnRTaXplUmFuZ2UpOwotCi0gICAgR0xmbG9hdCBtYXhQb2ludFNp
emUgPSBwb2ludFNpemVSYW5nZVsxXTsKLQotICAgIEFTU0VSVF9UUlVFKG1heFBvaW50U2l6ZSA+
IDIpOwotCi0gICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDEpOwotICAgIGdsRGlzYWJsZShHTF9E
RVBUSF9URVNUKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgR0xp
bnQgcG9pbnRTaXplTG9jID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVfcG9pbnRT
aXplIik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBHTGZsb2F0IHBvaW50U2l6
ZSA9IHN0ZDo6bWluPEdMZmxvYXQ+KDIwLjBmLCBtYXhQb2ludFNpemUpOwotICAgIGdsVW5pZm9y
bTFmKHBvaW50U2l6ZUxvYywgcG9pbnRTaXplKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LQotICAgIEdMdWludCB2ZXJ0ZXhPYmplY3QgPSAwOwotICAgIGdsR2VuQnVmZmVycygxLCAmdmVy
dGV4T2JqZWN0KTsKLSAgICBBU1NFUlRfTkUodmVydGV4T2JqZWN0LCAwVSk7Ci0gICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCB2ZXJ0
ZXhPYmplY3QpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgR0xmbG9hdCB0aGVQ
b2ludHNbXSA9IHsgMC4wZiwgMC4wZiB9OwotCi0gICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JV
RkZFUiwgc2l6ZW9mKHRoZVBvaW50cyksIHRoZVBvaW50cywgR0xfU1RBVElDX0RSQVcpOwotICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgw
KTsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoMCwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAw
LCAwKTsKLQotICAgIGdsRHJhd0FycmF5cyhHTF9QT0lOVFMsIDAsIDEpOwotICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOwotCi0gICAgLy8gZXhwZWN0IHRoZSBjZW50ZXIgcGl4ZWwgdG8gYmUgZ3Jl
ZW4KLSAgICBFWFBFQ1RfUElYRUxfRVEoKHdpbmRvd1dpZHRoIC0gMSkgLyAyLCAod2luZG93SGVp
Z2h0IC0gMSkgLyAyLCAwLCAyNTUsIDAsIDI1NSk7Ci0KLSAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwg
JnZlcnRleE9iamVjdCk7Ci19Ci0KLS8vIFZlcmlmeSBHTF9WRVJURVhfUFJPR1JBTV9QT0lOVF9T
SVpFIGlzIGVuYWJsZWQKLS8vIGh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3JlZ2lzdHJ5L3dlYmds
L3Nkay90ZXN0cy9jb25mb3JtYW5jZS9yZW5kZXJpbmcvcG9pbnQtc2l6ZS5odG1sCi1URVNUX1Ao
UG9pbnRTcHJpdGVzVGVzdCwgUG9pbnRTaXplRW5hYmxlZENvbXBsaWFuY2UpCi17Ci0gICAgY29u
c3Qgc3RkOjpzdHJpbmcgZnMgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKLSAgICAgICAgdmFyeWluZyB2ZWM0IGNvbG9yOwotCi0gICAgICAg
IHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9y
OwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzID0gU0hBREVS
X1NPVVJDRQotICAgICgKLSAgICAgICAgYXR0cmlidXRlIHZlYzMgcG9zOwotICAgICAgICBhdHRy
aWJ1dGUgdmVjNCBjb2xvckluOwotICAgICAgICB1bmlmb3JtIGZsb2F0IHBvaW50U2l6ZTsKLSAg
ICAgICAgdmFyeWluZyB2ZWM0IGNvbG9yOwotCi0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGdsX1BvaW50U2l6ZSA9IHBvaW50U2l6ZTsKLSAgICAgICAgICAgIGNv
bG9yID0gY29sb3JJbjsKLSAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3MsIDEuMCk7
Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgLy8gVGhlIFdlYkdMIHRlc3QgaXMgZHJhd24gb24g
YSAyeDIgY2FudmFzLiBFbXVsYXRlIHRoaXMgYnkgc2V0dGluZyBhIDJ4MiB2aWV3cG9ydC4KLSAg
ICBnbFZpZXdwb3J0KDAsIDAsIDIsIDIpOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxl
UHJvZ3JhbSh2cywgZnMpOwotICAgIEFTU0VSVF9ORShwcm9ncmFtLCAwdSk7Ci0gICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7Ci0KLSAgICBnbERp
c2FibGUoR0xfQkxFTkQpOwotCi0gICAgLy8gVGhlIGNob2ljZSBvZiAoMC40LCAwLjQpIGVuc3Vy
ZXMgdGhhdCB0aGUgY2VudGVycyBvZiB0aGUgc3Vycm91bmRpbmcKLSAgICAvLyBwaXhlbHMgYXJl
IG5vdCBjb250YWluZWQgd2l0aGluIHRoZSBwb2ludCB3aGVuIGl0IGlzIG9mIHNpemUgMSwgYnV0
Ci0gICAgLy8gdGhhdCB0aGV5IGRlZmluaXRlbHkgYXJlIHdoZW4gaXQgaXMgb2Ygc2l6ZSAyLgot
ICAgIEdMZmxvYXQgdmVydGljZXNbXSA9IHsgMC40ZiwgMC40ZiwgMC4wZiB9OwotICAgIEdMdWJ5
dGUgY29sb3JzW10gPSB7IDI1NSwgMCwgMCwgMjU1IH07Ci0KLSAgICBHTHVpbnQgdmVydGV4T2Jq
ZWN0ID0gMDsKLSAgICBnbEdlbkJ1ZmZlcnMoMSwgJnZlcnRleE9iamVjdCk7Ci0gICAgQVNTRVJU
X05FKHZlcnRleE9iamVjdCwgMFUpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAg
Z2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKLSAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKLQotICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNpemVv
Zih2ZXJ0aWNlcykgKyBzaXplb2YoY29sb3JzKSwgTlVMTCwgR0xfU1RBVElDX0RSQVcpOwotICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JV
RkZFUiwgMCwgc2l6ZW9mKHZlcnRpY2VzKSwgdmVydGljZXMpOwotICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotCi0gICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKHZl
cnRpY2VzKSwgc2l6ZW9mKGNvbG9ycyksIGNvbG9ycyk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJf
QklUKTsKLQotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcigwLCAzLCBHTF9GTE9BVCwgR0xfRkFM
U0UsIDAsIDApOwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7Ci0KLSAgICBnbFZl
cnRleEF0dHJpYlBvaW50ZXIoMSwgNCwgR0xfVU5TSUdORURfQllURSwgR0xfVFJVRSwgMCwgKEdM
dm9pZCopc2l6ZW9mKHZlcnRpY2VzKSk7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgx
KTsKLQotICAgIEdMaW50IHBvaW50U2l6ZUxvYyA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dy
YW0sICJwb2ludFNpemUiKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsVW5p
Zm9ybTFmKHBvaW50U2l6ZUxvYywgMS4wZik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0K
LSAgICBnbERyYXdBcnJheXMoR0xfUE9JTlRTLCAwLCBzdGF0aWNfY2FzdDxHTHNpemVpPihBcnJh
eVNpemUodmVydGljZXMpKSAvIDMpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAg
Ly8gVGVzdCB0aGUgcGl4ZWxzIGFyb3VuZCB0aGUgdGFyZ2V0IFJlZCBwaXhlbCB0byBlbnN1cmUK
LSAgICAvLyB0aGV5IGFyZSB0aGUgZXhwZWN0ZWQgY29sb3IgdmFsdWVzCi0gICAgZm9yIChHTGlu
dCB5ID0gMDsgeSA8IDI7ICsreSkKLSAgICB7Ci0gICAgICAgIGZvciAoR0xpbnQgeCA9IDA7IHgg
PCAyOyArK3gpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIDF4MSBpcyBleHBlY3RlZCB0byBi
ZSBhIHJlZCBwaXhlbAotICAgICAgICAgICAgLy8gQWxsIG90aGVycyBhcmUgYmxhY2sKLSAgICAg
ICAgICAgIEdMdWJ5dGUgZXhwZWN0ZWRDb2xvcls0XSA9IHsgMCwgMCwgMCwgMCB9OwotICAgICAg
ICAgICAgaWYgKHggPT0gMSAmJiB5ID09IDEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgZXhwZWN0ZWRDb2xvclswXSA9IDI1NTsKLSAgICAgICAgICAgICAgICBleHBlY3RlZENvbG9y
WzNdID0gMjU1OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKHgs
IHksIGV4cGVjdGVkQ29sb3JbMF0sIGV4cGVjdGVkQ29sb3JbMV0sIGV4cGVjdGVkQ29sb3JbMl0s
IGV4cGVjdGVkQ29sb3JbM10pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgR0xmbG9hdCBwb2lu
dFNpemVSYW5nZVsyXSA9IHt9OwotICAgIGdsR2V0RmxvYXR2KEdMX0FMSUFTRURfUE9JTlRfU0la
RV9SQU5HRSwgcG9pbnRTaXplUmFuZ2UpOwotCi0gICAgaWYgKHBvaW50U2l6ZVJhbmdlWzFdID49
IDIuMCkKLSAgICB7Ci0gICAgICAgIC8vIERyYXcgYSBwb2ludCBvZiBzaXplIDIgYW5kIHZlcmlm
eSBpdCBmaWxscyB0aGUgYXBwcm9wcmlhdGUgcmVnaW9uLgotICAgICAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUKTsKLQotICAgICAgICBnbFVuaWZv
cm0xZihwb2ludFNpemVMb2MsIDIuMGYpOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LQotICAgICAgICBnbERyYXdBcnJheXMoR0xfUE9JTlRTLCAwLCBzdGF0aWNfY2FzdDxHTHNpemVp
PihBcnJheVNpemUodmVydGljZXMpKSAvIDMpOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKLQotICAgICAgICAvLyBUZXN0IHRoZSBwaXhlbHMgdG8gZW5zdXJlIHRoZSB0YXJnZXQgaXMg
QUxMIFJlZCBwaXhlbHMKLSAgICAgICAgZm9yIChHTGludCB5ID0gMDsgeSA8IDI7ICsreSkKLSAg
ICAgICAgewotICAgICAgICAgICAgZm9yIChHTGludCB4ID0gMDsgeCA8IDI7ICsreCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfUElYRUxfRVEoeCwgeSwgMjU1LCAwLCAw
LCAyNTUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgZ2xEZWxldGVC
dWZmZXJzKDEsICZ2ZXJ0ZXhPYmplY3QpOwotfQotCi0vLyBWZXJpZnkgdGhhdCByZW5kZXJpbmcg
d29ya3MgY29ycmVjdGx5IHdoZW4gZ2xfUG9pbnRTaXplIGlzIGRlY2xhcmVkIGluIGEgc2hhZGVy
IGJ1dCBpc24ndCB1c2VkCi1URVNUX1AoUG9pbnRTcHJpdGVzVGVzdCwgUG9pbnRTaXplRGVjbGFy
ZWRCdXRVbnVzZWQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgdnMgPSBTSEFERVJfU09VUkNF
Ci0gICAgKAotICAgICAgICBhdHRyaWJ1dGUgaGlnaHAgdmVjNCBwb3NpdGlvbjsKLQotICAgICAg
ICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xfUG9pbnRTaXplID0g
MS4wOwotICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICAgICAgfQotICAg
ICk7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcyA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0g
ICAgICAgIHZvaWQgbWFpbih2b2lkKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAg
R0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2cywgZnMpOwotICAgIEFTU0VSVF9ORShw
cm9ncmFtLCAwdSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFVzZVByb2dy
YW0ocHJvZ3JhbSk7Ci0gICAgZHJhd1F1YWQocHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41ZiwgMS4w
Zik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBleHBlY3QgdGhlIGNlbnRl
ciBwaXhlbCB0byBiZSByZWQKLSAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0V2luZG93V2lkdGgoKSAv
IDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMjU1LCAwLCAwLCAyNTUpOwotCi0gICAgZ2xEZWxl
dGVQcm9ncmFtKHByb2dyYW0pOwotfQotCi0vLyBUZXN0IHRvIGNvdmVyIGEgYnVnIHdoZXJlIHRo
ZSBEM0QxMSByYXN0ZXJpemVyIHN0YXRlIHdvdWxkIG5vdCBiZSB1cGRhdGUgd2hlbiBzd2l0Y2hp
bmcgYmV0d2VlbgotLy8gZHJhdyB0eXBlcy4gIFRoaXMgY2F1c2VzIHRoZSBjdWxsIGZhY2UgdG8g
cG90ZW50aWFsbHkgYmUgaW5jb3JyZWN0IHdoZW4gZHJhd2luZyBlbXVsYXRlZCBwb2ludAotLy8g
c3BpdGVzLgotVEVTVF9QKFBvaW50U3ByaXRlc1Rlc3QsIFBvaW50U3ByaXRlQWx0ZXJuYXRpbmdE
cmF3VHlwZXMpCi17Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIHBvaW50RlMgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAg
Z2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApOwotICAgICAgICB9Ci0gICAg
KTsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHBvaW50VlMgPSBTSEFERVJfU09VUkNFCi0gICAg
KAotICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9Qb2ludFNp
emUgPSAxNi4wOwotICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDAuMCwgMC4wLCAwLjAs
IDEuMCk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgcXVhZEZT
ID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
Ci0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsX0ZyYWdDb2xv
ciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICBj
b25zdCBzdGQ6OnN0cmluZyBxdWFkVlMgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLSAgICAgICAgYXR0cmlidXRlIHZlYzQgcG9zOwotICAg
ICAgICB2b2lkIG1haW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHBv
czsKLSAgICAgICAgfQotICAgICk7Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICBHTHVp
bnQgcG9pbnRQcm9ncmFtID0gQ29tcGlsZVByb2dyYW0ocG9pbnRWUywgcG9pbnRGUyk7Ci0gICAg
QVNTRVJUX05FKHBvaW50UHJvZ3JhbSwgMHUpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgR0x1aW50IHF1YWRQcm9ncmFtID0gQ29tcGlsZVByb2dyYW0ocXVhZFZTLCBxdWFkRlMp
OwotICAgIEFTU0VSVF9ORShwb2ludFByb2dyYW0sIDB1KTsKLSAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKLQotICAgIGdsRW5hYmxlKEdMX0NVTExfRkFDRSk7Ci0gICAgZ2xDdWxsRmFjZShHTF9G
Uk9OVCk7Ci0KLSAgICBjb25zdCBHTGZsb2F0IHF1YWRWZXJ0aWNlc1tdID0gewotICAgICAgICAt
MS4wZiwgMS4wZiwgMC41ZiwgMS4wZiwgLTEuMGYsIDAuNWYsIC0xLjBmLCAtMS4wZiwgMC41ZiwK
LQotICAgICAgICAtMS4wZiwgMS4wZiwgMC41ZiwgMS4wZiwgMS4wZiwgIDAuNWYsIDEuMGYsICAt
MS4wZiwgMC41ZiwKLSAgICB9OwotCi0gICAgZ2xVc2VQcm9ncmFtKHF1YWRQcm9ncmFtKTsKLSAg
ICBHTGludCBwb3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihxdWFkUHJvZ3Jh
bSwgInBvcyIpOwotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCAz
LCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHF1YWRWZXJ0aWNlcyk7Ci0gICAgZ2xFbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKLSAgICBnbERyYXdBcnJheXMoR0xfVFJJ
QU5HTEVTLCAwLCA2KTsKLQotICAgIGdsVXNlUHJvZ3JhbShwb2ludFByb2dyYW0pOwotICAgIGds
RHJhd0FycmF5cyhHTF9QT0lOVFMsIDAsIDEpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgLy8gZXhwZWN0IHRoZSBjZW50ZXIgcGl4ZWwgdG8gYmUgZ3JlZW4KLSAgICBFWFBFQ1Rf
UElYRUxfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMCwg
MjU1LCAwLCAyNTUpOwotCi0gICAgZ2xEZWxldGVQcm9ncmFtKHBvaW50UHJvZ3JhbSk7Ci0gICAg
Z2xEZWxldGVQcm9ncmFtKHF1YWRQcm9ncmFtKTsKLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0
IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTCi0v
LyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi0vLwot
Ly8gV2UgdGVzdCBvbiBEM0QxMSA5XzMgYmVjYXVzZSB0aGUgZXhpc3RpbmcgRDNEMTEgUG9pbnRT
cHJpdGUgaW1wbGVtZW50YXRpb24KLS8vIHVzZXMgR2VvbWV0cnkgU2hhZGVycyB3aGljaCBhcmUg
bm90IHN1cHBvcnRlZCBmb3IgOV8zLgotLy8gRDNEOSBhbmQgRDNEMTEgYXJlIGFsc28gdGVzdGVk
IHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucy4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoUG9pbnRT
cHJpdGVzVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9E
M0QxMV9GTDlfMygpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Qcm9ncmFtQmluYXJ5VGVzdC5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUHJvZ3JhbUJpbmFy
eVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTE3MjVmYzViYmU1ODU4
YzI5NzI1OTJkODI3ZGNkNTc5YTg4ZTk5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9Qcm9ncmFtQmluYXJ5VGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MzkgKzAsMCBAQAot
Ly8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLSNpbmNsdWRl
IDxtZW1vcnk+Ci0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0KLSNpbmNsdWRlICJFR0xXaW5kb3cuaCIK
LSNpbmNsdWRlICJPU1dpbmRvdy5oIgotI2luY2x1ZGUgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9j
b25maWdzLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotY2xhc3MgUHJvZ3JhbUJpbmFy
eVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBQcm9ncmFtQmlu
YXJ5VGVzdCgpCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwotICAgICAgICBz
ZXRXaW5kb3dIZWlnaHQoMTI4KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAg
ICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsK
LSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgIH0KLQotICAgIHZvaWQgU2V0VXAo
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAg
ICAgICAgKAotICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgaW5wdXRBdHRyaWJ1dGU7Ci0gICAg
ICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX1Bv
c2l0aW9uID0gaW5wdXRBdHRyaWJ1dGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09V
UkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLDAsMCwxKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgKTsKLQotICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRl
eFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgICAgICBpZiAobVByb2dy
YW0gPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGls
YXRpb24gZmFpbGVkLiI7Ci0gICAgICAgIH0KLQotICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1C
dWZmZXIpOwotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVyKTsK
LSAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgMTI4LCBOVUxMLCBHTF9TVEFU
SUNfRFJBVyk7Ci0gICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDApOwotCi0g
ICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24o
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLSAg
ICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtQnVmZmVyKTsKLQotICAgICAgICBBTkdMRVRlc3Q6
OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgR0xpbnQgZ2V0QXZhaWxhYmxlUHJvZ3JhbUJpbmFy
eUZvcm1hdENvdW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEdMaW50IGZvcm1hdENvdW50Owot
ICAgICAgICBnbEdldEludGVnZXJ2KEdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTX09FUywg
JmZvcm1hdENvdW50KTsKLSAgICAgICAgcmV0dXJuIGZvcm1hdENvdW50OwotICAgIH0KLQotICAg
IEdMdWludCBtUHJvZ3JhbTsKLSAgICBHTHVpbnQgbUJ1ZmZlcjsKLX07Ci0KLS8vIFRoaXMgdGVz
dHMgdGhlIGFzc3VtcHRpb24gdGhhdCBmbG9hdCBhdHRyaWJzIG9mIGRpZmZlcmVudCBzaXplCi0v
LyBzaG91bGQgbm90IGludGVybmFsbHkgY2F1c2UgYSB2ZXJ0ZXggc2hhZGVyIHJlY29tcGlsZSAo
Zm9yIGNvbnZlcnNpb24pLgotVEVTVF9QKFByb2dyYW1CaW5hcnlUZXN0LCBGbG9hdER5bmFtaWNT
aGFkZXJTaXplKQotewotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2dldF9wcm9n
cmFtX2JpbmFyeSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQg
YmVjYXVzZSBHTF9PRVNfZ2V0X3Byb2dyYW1fYmluYXJ5IGlzIG5vdCBhdmFpbGFibGUuIgotICAg
ICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGdldEF2YWlsYWJsZVByb2dyYW1CaW5hcnlGb3JtYXRDb3VudCgpID09IDApCi0gICAg
ewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIG5vIHByb2dyYW0g
YmluYXJ5IGZvcm1hdHMgYXJlIGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgZ2xCaW5kQnVm
ZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7Ci0KLSAgICBnbFZlcnRleEF0dHJpYlBvaW50
ZXIoMCwgNCwgR0xfRkxPQVQsIEdMX0ZBTFNFLCA4LCBOVUxMKTsKLSAgICBnbEVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KDApOwotICAgIGdsRHJhd0FycmF5cyhHTF9QT0lOVFMsIDAsIDEpOwotCi0g
ICAgR0xpbnQgcHJvZ3JhbUxlbmd0aDsKLSAgICBnbEdldFByb2dyYW1pdihtUHJvZ3JhbSwgR0xf
UFJPR1JBTV9CSU5BUllfTEVOR1RIX09FUywgJnByb2dyYW1MZW5ndGgpOwotCi0gICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICBmb3IgKEdMc2l6ZWkgc2l6ZSA9IDE7IHNpemUgPD0gMzsg
c2l6ZSsrKQotICAgIHsKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIHNpemUsIEdM
X0ZMT0FULCBHTF9GQUxTRSwgOCwgTlVMTCk7Ci0gICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoMCk7Ci0gICAgICAgIGdsRHJhd0FycmF5cyhHTF9QT0lOVFMsIDAsIDEpOwotCi0gICAg
ICAgIEdMaW50IG5ld1Byb2dyYW1MZW5ndGg7Ci0gICAgICAgIGdsR2V0UHJvZ3JhbWl2KG1Qcm9n
cmFtLCBHTF9QUk9HUkFNX0JJTkFSWV9MRU5HVEhfT0VTLCAmbmV3UHJvZ3JhbUxlbmd0aCk7Ci0g
ICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgICAgICBFWFBFQ1RfRVEocHJvZ3JhbUxl
bmd0aCwgbmV3UHJvZ3JhbUxlbmd0aCk7Ci0gICAgfQotfQotCi0vLyBUZXN0cyB0aGF0IHN3aXRj
aGluZyBiZXR3ZWVuIHNpZ25lZCBhbmQgdW5zaWduZWQgdW4tbm9ybWFsaXplZCBkYXRhIGRvZXNu
J3QgdHJpZ2dlciBhIGJ1ZwotLy8gaW4gdGhlIEQzRDExIGJhY2stZW5kLgotVEVTVF9QKFByb2dy
YW1CaW5hcnlUZXN0LCBEeW5hbWljU2hhZGVyc1NpZ25hdHVyZUJ1ZykKLXsKLSAgICBnbFVzZVBy
b2dyYW0obVByb2dyYW0pOwotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZm
ZXIpOwotCi0gICAgR0xpbnQgYXR0cmliTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Q
cm9ncmFtLCAiaW5wdXRBdHRyaWJ1dGUiKTsKLSAgICBBU1NFUlRfTkUoLTEsIGF0dHJpYkxvY2F0
aW9uKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGF0dHJpYkxvY2F0aW9uKTsKLQot
ICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihhdHRyaWJMb2NhdGlvbiwgMiwgR0xfQllURSwgR0xf
RkFMU0UsIDAsIG51bGxwdHIpOwotICAgIGdsRHJhd0FycmF5cyhHTF9QT0lOVFMsIDAsIDEpOwot
Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGF0dHJpYkxvY2F0aW9uLCAyLCBHTF9VTlNJR05F
RF9CWVRFLCBHTF9GQUxTRSwgMCwgbnVsbHB0cik7Ci0gICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5U
UywgMCwgMSk7Ci19Ci0KLS8vIFRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gc3VjY2Vzc2Z1bGx5
IHNhdmUgYW5kIGxvYWQgYSBwcm9ncmFtIGJpbmFyeS4KLVRFU1RfUChQcm9ncmFtQmluYXJ5VGVz
dCwgU2F2ZUFuZExvYWRCaW5hcnkpCi17Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9P
RVNfZ2V0X3Byb2dyYW1fYmluYXJ5IikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3Qgc2tpcHBlZCBiZWNhdXNlIEdMX09FU19nZXRfcHJvZ3JhbV9iaW5hcnkgaXMgbm90IGF2YWls
YWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBpZiAoZ2V0QXZhaWxhYmxlUHJvZ3JhbUJpbmFyeUZvcm1hdENvdW50KCkg
PT0gMCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2Ug
bm8gcHJvZ3JhbSBiaW5hcnkgZm9ybWF0cyBhcmUgYXZhaWxhYmxlLiIgPDwgc3RkOjplbmRsOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xpbnQgcHJvZ3JhbUxlbmd0aCA9IDA7Ci0g
ICAgR0xpbnQgd3JpdHRlbkxlbmd0aCA9IDA7Ci0gICAgR0xlbnVtIGJpbmFyeUZvcm1hdCA9IDA7
Ci0KLSAgICBnbEdldFByb2dyYW1pdihtUHJvZ3JhbSwgR0xfUFJPR1JBTV9CSU5BUllfTEVOR1RI
X09FUywgJnByb2dyYW1MZW5ndGgpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAg
c3RkOjp2ZWN0b3I8dWludDhfdD4gYmluYXJ5KHByb2dyYW1MZW5ndGgpOwotICAgIGdsR2V0UHJv
Z3JhbUJpbmFyeU9FUyhtUHJvZ3JhbSwgcHJvZ3JhbUxlbmd0aCwgJndyaXR0ZW5MZW5ndGgsICZi
aW5hcnlGb3JtYXQsIGJpbmFyeS5kYXRhKCkpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgLy8gVGhlIGxlbmd0aHMgcmVwb3J0ZWQgYnkgZ2xHZXRQcm9ncmFtaXYgYW5kIGdsR2V0
UHJvZ3JhbUJpbmFyeU9FUyBzaG91bGQgbWF0Y2gKLSAgICBFWFBFQ1RfRVEocHJvZ3JhbUxlbmd0
aCwgd3JpdHRlbkxlbmd0aCk7Ci0KLSAgICBpZiAod3JpdHRlbkxlbmd0aCkKLSAgICB7Ci0gICAg
ICAgIEdMdWludCBwcm9ncmFtMiA9IGdsQ3JlYXRlUHJvZ3JhbSgpOwotICAgICAgICBnbFByb2dy
YW1CaW5hcnlPRVMocHJvZ3JhbTIsIGJpbmFyeUZvcm1hdCwgYmluYXJ5LmRhdGEoKSwgd3JpdHRl
bkxlbmd0aCk7Ci0KLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgR0xp
bnQgbGlua1N0YXR1czsKLSAgICAgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbTIsIEdMX0xJTktf
U1RBVFVTLCAmbGlua1N0YXR1cyk7Ci0gICAgICAgIGlmIChsaW5rU3RhdHVzID09IDApCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEdMaW50IGluZm9Mb2dMZW5ndGg7Ci0gICAgICAgICAgICBnbEdl
dFByb2dyYW1pdihwcm9ncmFtMiwgR0xfSU5GT19MT0dfTEVOR1RILCAmaW5mb0xvZ0xlbmd0aCk7
Ci0KLSAgICAgICAgICAgIGlmIChpbmZvTG9nTGVuZ3RoID4gMCkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxHTGNoYXI+IGluZm9Mb2coaW5mb0xvZ0xlbmd0aCk7
Ci0gICAgICAgICAgICAgICAgZ2xHZXRQcm9ncmFtSW5mb0xvZyhwcm9ncmFtMiwgc3RhdGljX2Nh
c3Q8R0xzaXplaT4oaW5mb0xvZy5zaXplKCkpLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmluZm9Mb2dbMF0pOwotICAgICAgICAgICAgICAgIEZBSUwoKSA8PCAi
cHJvZ3JhbSBsaW5rIGZhaWxlZDogIiA8PCAmaW5mb0xvZ1swXTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBGQUlMKCkgPDwg
InByb2dyYW0gbGluayBmYWlsZWQuIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtMik7Ci0g
ICAgICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVyKTsKLQotICAg
ICAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDQsIEdMX0ZMT0FULCBHTF9GQUxTRSwg
OCwgTlVMTCk7Ci0gICAgICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOwotICAg
ICAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwgMSk7Ci0KLSAgICAgICAgICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2xEZWxldGVQcm9ncmFt
KHByb2dyYW0yKTsKLSAgICB9Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25m
aWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9u
KSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9U
RVNUKFByb2dyYW1CaW5hcnlUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgp
LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMzX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpKTsKLQotY2xhc3MgUHJvZ3JhbUJp
bmFyeVRyYW5zZm9ybUZlZWRiYWNrVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVj
dGVkOgotICAgIFByb2dyYW1CaW5hcnlUcmFuc2Zvcm1GZWVkYmFja1Rlc3QoKQotICAgIHsKLSAg
ICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7
Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0
cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0Fs
cGhhQml0cyg4KTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2
ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICggICAjdmVyc2lvbiAz
MDAgZXNcbgotICAgICAgICAgICAgaW4gdmVjNCBpbnB1dEF0dHJpYnV0ZTsKLSAgICAgICAgICAg
IG91dCB2ZWM0IG91dHB1dFZhcnlpbmc7Ci0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1dFZhcnlpbmcgPSBpbnB1dEF0dHJpYnV0ZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBm
cmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKCAgICN2ZXJzaW9u
IDMwMCBlc1xuCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0gICAgICAgICAg
ICBvdXQgdmVjNCBvdXRwdXRDb2xvcjsKLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0cHV0Q29sb3IgPSB2ZWM0KDEsMCwwLDEpOwotICAg
ICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5n
PiB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzOwotICAgICAgICB0cmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzLnB1c2hfYmFjaygib3V0cHV0VmFyeWluZyIpOwotCi0gICAgICAgIG1Qcm9ncmFtID0g
Q29tcGlsZVByb2dyYW1XaXRoVHJhbnNmb3JtRmVlZGJhY2soCi0gICAgICAgICAgICB2ZXJ0ZXhT
aGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlLCB0cmFuc2Zvcm1GZWVkYmFja1Zhcnlp
bmdzLAotICAgICAgICAgICAgR0xfU0VQQVJBVEVfQVRUUklCUyk7Ci0gICAgICAgIGlmIChtUHJv
Z3JhbSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBGQUlMKCkgPDwgInNoYWRlciBjb21w
aWxhdGlvbiBmYWlsZWQuIjsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJE
b3duKCk7Ci0gICAgfQotCi0gICAgR0xpbnQgZ2V0QXZhaWxhYmxlUHJvZ3JhbUJpbmFyeUZvcm1h
dENvdW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEdMaW50IGZvcm1hdENvdW50OwotICAgICAg
ICBnbEdldEludGVnZXJ2KEdMX05VTV9QUk9HUkFNX0JJTkFSWV9GT1JNQVRTX09FUywgJmZvcm1h
dENvdW50KTsKLSAgICAgICAgcmV0dXJuIGZvcm1hdENvdW50OwotICAgIH0KLQotICAgIEdMdWlu
dCBtUHJvZ3JhbTsKLX07Ci0KLS8vIFRoaXMgdGVzdHMgdGhlIGFzc3VtcHRpb24gdGhhdCBmbG9h
dCBhdHRyaWJzIG9mIGRpZmZlcmVudCBzaXplCi0vLyBzaG91bGQgbm90IGludGVybmFsbHkgY2F1
c2UgYSB2ZXJ0ZXggc2hhZGVyIHJlY29tcGlsZSAoZm9yIGNvbnZlcnNpb24pLgotVEVTVF9QKFBy
b2dyYW1CaW5hcnlUcmFuc2Zvcm1GZWVkYmFja1Rlc3QsIEdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZykKLXsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19nZXRfcHJvZ3JhbV9i
aW5hcnkiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1
c2UgR0xfT0VTX2dldF9wcm9ncmFtX2JpbmFyeSBpcyBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAg
ICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlm
IChnZXRBdmFpbGFibGVQcm9ncmFtQmluYXJ5Rm9ybWF0Q291bnQoKSA9PSAwKQotICAgIHsKLSAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBubyBwcm9ncmFtIGJpbmFy
eSBmb3JtYXRzIGFyZSBhdmFpbGFibGUuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBiaW5hcnkoMCk7Ci0gICAgR0xpbnQg
cHJvZ3JhbUxlbmd0aCA9IDA7Ci0gICAgR0xpbnQgd3JpdHRlbkxlbmd0aCA9IDA7Ci0gICAgR0xl
bnVtIGJpbmFyeUZvcm1hdCA9IDA7Ci0KLSAgICAvLyBTYXZlIHRoZSBwcm9ncmFtIGJpbmFyeSBv
dXQKLSAgICBnbEdldFByb2dyYW1pdihtUHJvZ3JhbSwgR0xfUFJPR1JBTV9CSU5BUllfTEVOR1RI
X09FUywgJnByb2dyYW1MZW5ndGgpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIGJp
bmFyeS5yZXNpemUocHJvZ3JhbUxlbmd0aCk7Ci0gICAgZ2xHZXRQcm9ncmFtQmluYXJ5T0VTKG1Q
cm9ncmFtLCBwcm9ncmFtTGVuZ3RoLCAmd3JpdHRlbkxlbmd0aCwgJmJpbmFyeUZvcm1hdCwgYmlu
YXJ5LmRhdGEoKSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbERlbGV0ZVBy
b2dyYW0obVByb2dyYW0pOwotCi0gICAgLy8gTG9hZCBwcm9ncmFtIGJpbmFyeQotICAgIG1Qcm9n
cmFtID0gZ2xDcmVhdGVQcm9ncmFtKCk7Ci0gICAgZ2xQcm9ncmFtQmluYXJ5T0VTKG1Qcm9ncmFt
LCBiaW5hcnlGb3JtYXQsIGJpbmFyeS5kYXRhKCksIHdyaXR0ZW5MZW5ndGgpOwotCi0gICAgLy8g
RW5zdXJlIHRoZSBsb2FkZWQgYmluYXJ5IGlzIGxpbmtlZAotICAgIEdMaW50IGxpbmtTdGF0dXM7
Ci0gICAgZ2xHZXRQcm9ncmFtaXYobVByb2dyYW0sIEdMX0xJTktfU1RBVFVTLCAmbGlua1N0YXR1
cyk7Ci0gICAgRVhQRUNUX1RSVUUobGlua1N0YXR1cyAhPSAwKTsKLQotICAgIC8vIFF1ZXJ5IGlu
Zm9ybWF0aW9uIGFib3V0IHRoZSB0cmFuc2Zvcm0gZmVlZGJhY2sgdmFyeWluZwotICAgIGNoYXIg
dmFyeWluZ05hbWVbNjRdOwotICAgIEdMc2l6ZWkgdmFyeWluZ1NpemUgPSAwOwotICAgIEdMZW51
bSB2YXJ5aW5nVHlwZSA9IEdMX05PTkU7Ci0KLSAgICBnbEdldFRyYW5zZm9ybUZlZWRiYWNrVmFy
eWluZyhtUHJvZ3JhbSwgMCwgNjQsICZ3cml0dGVuTGVuZ3RoLCAmdmFyeWluZ1NpemUsICZ2YXJ5
aW5nVHlwZSwgdmFyeWluZ05hbWUpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAg
RVhQRUNUX0VRKDEzLCB3cml0dGVuTGVuZ3RoKTsKLSAgICBFWFBFQ1RfU1RSRVEoIm91dHB1dFZh
cnlpbmciLCB2YXJ5aW5nTmFtZSk7Ci0gICAgRVhQRUNUX0VRKDEsIHZhcnlpbmdTaXplKTsKLSAg
ICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FUX1ZFQzQsIHZhcnlpbmdUeXBlKTsKLQotICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29u
ZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lv
bikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVf
VEVTVChQcm9ncmFtQmluYXJ5VHJhbnNmb3JtRmVlZGJhY2tUZXN0LAotICAgICAgICAgICAgICAg
ICAgICAgICBFUzNfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgp
KTsKLQotLy8gRm9yIHRoZSBQcm9ncmFtQmluYXJpZXNBY3Jvc3NQbGF0Zm9ybXMgdGVzdHMsIHdl
IG5lZWQgdHdvIHNldHMgb2YgcGFyYW1zOgotLy8gLSBhIHNldCB0byBzYXZlIHRoZSBwcm9ncmFt
IGJpbmFyeQotLy8gLSBhIHNldCB0byBsb2FkIHRoZSBwcm9ncmFtIGJpbmFyeQotLy8gV2UgY29t
YmluZSB0aGVzZSBpbnRvIG9uZSBzdHJ1Y3QgZXh0ZW5kaW5nIFBsYXRmb3JtUGFyYW1ldGVycyBz
byB3ZSBjYW4gcmV1c2UgZXhpc3RpbmcgQU5HTEUgdGVzdCBtYWNyb3MKLXN0cnVjdCBQbGF0Zm9y
bXNXaXRoTGlua1Jlc3VsdCA6IFBsYXRmb3JtUGFyYW1ldGVycwotewotICAgIFBsYXRmb3Jtc1dp
dGhMaW5rUmVzdWx0KFBsYXRmb3JtUGFyYW1ldGVycyBzYXZlUGFyYW1zLCBQbGF0Zm9ybVBhcmFt
ZXRlcnMgbG9hZFBhcmFtc0luLCBib29sIGV4cGVjdGVkTGlua1Jlc3VsdEluKQotICAgIHsKLSAg
ICAgICAgbWFqb3JWZXJzaW9uID0gc2F2ZVBhcmFtcy5tYWpvclZlcnNpb247Ci0gICAgICAgIG1p
bm9yVmVyc2lvbiA9IHNhdmVQYXJhbXMubWlub3JWZXJzaW9uOwotICAgICAgICBlZ2xQYXJhbWV0
ZXJzID0gc2F2ZVBhcmFtcy5lZ2xQYXJhbWV0ZXJzOwotICAgICAgICBsb2FkUGFyYW1zID0gbG9h
ZFBhcmFtc0luOwotICAgICAgICBleHBlY3RlZExpbmtSZXN1bHQgPSBleHBlY3RlZExpbmtSZXN1
bHRJbjsKLSAgICB9Ci0KLSAgICBQbGF0Zm9ybVBhcmFtZXRlcnMgbG9hZFBhcmFtczsKLSAgICBi
b29sIGV4cGVjdGVkTGlua1Jlc3VsdDsKLX07Ci0KLS8vIFByb3ZpZGUgYSBjdXN0b20gZ3Rlc3Qg
cGFyYW1ldGVyIG5hbWUgZnVuY3Rpb24gZm9yIFBsYXRmb3Jtc1dpdGhMaW5rUmVzdWx0Ci0vLyB0
byBhdm9pZCByZXR1cm5pbmcgdGhlIHNhbWUgcGFyYW1ldGVyIG5hbWUgdHdpY2UuIFN1Y2ggYSBj
b25mbGljdCB3b3VsZCBoYXBwZW4KLS8vIGJldHdlZW4gRVMyX0QzRDExX3RvX0VTMkQzRDExIGFu
ZCBFUzJfRDNEMTFfdG9fRVMzRDNEMTEgYXMgdGhleSB3ZXJlIGJvdGgKLS8vIG5hbWVkIEVTMl9E
M0QxMQotc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgc3RyZWFtLCBjb25z
dCBQbGF0Zm9ybXNXaXRoTGlua1Jlc3VsdCAmcGxhdGZvcm0pCi17Ci0gICAgY29uc3QgUGxhdGZv
cm1QYXJhbWV0ZXJzICZwbGF0Zm9ybTEgPSBwbGF0Zm9ybTsKLSAgICBjb25zdCBQbGF0Zm9ybVBh
cmFtZXRlcnMgJnBsYXRmb3JtMiA9IHBsYXRmb3JtLmxvYWRQYXJhbXM7Ci0gICAgc3RyZWFtIDw8
IHBsYXRmb3JtMSA8PCAiX3RvXyIgPDwgcGxhdGZvcm0yOwotICAgIHJldHVybiBzdHJlYW07Ci19
Ci0KLWNsYXNzIFByb2dyYW1CaW5hcmllc0Fjcm9zc1BsYXRmb3JtcyA6IHB1YmxpYyB0ZXN0aW5n
OjpUZXN0V2l0aFBhcmFtPFBsYXRmb3Jtc1dpdGhMaW5rUmVzdWx0PgotewotICBwdWJsaWM6Ci0g
ICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBtT1NXaW5kb3cgPSBDcmVh
dGVPU1dpbmRvdygpOwotICAgICAgICBib29sIHJlc3VsdCA9IG1PU1dpbmRvdy0+aW5pdGlhbGl6
ZSgiUHJvZ3JhbUJpbmFyaWVzQWNyb3NzUmVuZGVyZXJzVGVzdHMiLCAxMDAsIDEwMCk7Ci0KLSAg
ICAgICAgaWYgKHJlc3VsdCA9PSBmYWxzZSkKLSAgICAgICAgewotICAgICAgICAgICAgRkFJTCgp
IDw8ICJGYWlsZWQgdG8gY3JlYXRlIE9TIHdpbmRvdyI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBFR0xXaW5kb3cgKmNyZWF0ZUFuZEluaXRFR0xXaW5kb3coYW5nbGU6OlBsYXRmb3JtUGFyYW1l
dGVycyAmcGFyYW0pCi0gICAgewotICAgICAgICBFR0xXaW5kb3cgKmVnbFdpbmRvdyA9Ci0gICAg
ICAgICAgICBuZXcgRUdMV2luZG93KHBhcmFtLm1ham9yVmVyc2lvbiwgcGFyYW0ubWlub3JWZXJz
aW9uLCBwYXJhbS5lZ2xQYXJhbWV0ZXJzKTsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBlZ2xXaW5k
b3ctPmluaXRpYWxpemVHTChtT1NXaW5kb3cpOwotICAgICAgICBpZiAocmVzdWx0ID09IGZhbHNl
KQotICAgICAgICB7Ci0gICAgICAgICAgICBTYWZlRGVsZXRlKGVnbFdpbmRvdyk7Ci0gICAgICAg
ICAgICBlZ2xXaW5kb3cgPSBudWxscHRyOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGVn
bFdpbmRvdzsKLSAgICB9Ci0KLSAgICB2b2lkIGRlc3Ryb3lFR0xXaW5kb3coRUdMV2luZG93ICoq
ZWdsV2luZG93KQotICAgIHsKLSAgICAgICAgQVNTRVJUKCplZ2xXaW5kb3cgIT0gbnVsbHB0cik7
Ci0gICAgICAgICgqZWdsV2luZG93KS0+ZGVzdHJveUdMKCk7Ci0gICAgICAgIFNhZmVEZWxldGUo
KmVnbFdpbmRvdyk7Ci0gICAgICAgICplZ2xXaW5kb3cgPSBudWxscHRyOwotICAgIH0KLQotICAg
IEdMdWludCBjcmVhdGVFUzJQcm9ncmFtRnJvbVNvdXJjZSgpCi0gICAgewotICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyB0ZXN0VmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQotICAg
ICAgICAoCi0gICAgICAgICAgICBhdHRyaWJ1dGUgaGlnaHAgdmVjNCBwb3NpdGlvbjsKLQotICAg
ICAgICAgICAgdm9pZCBtYWluKHZvaWQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Z2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJf
U09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwg
MS4wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICByZXR1cm4gQ29tcGls
ZVByb2dyYW0odGVzdFZlcnRleFNoYWRlclNvdXJjZSwgdGVzdEZyYWdtZW50U2hhZGVyU291cmNl
KTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgY3JlYXRlRVMzUHJvZ3JhbUZyb21Tb3VyY2UoKQotICAg
IHsKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdFZlcnRleFNoYWRlclNvdXJjZSA9IFNI
QURFUl9TT1VSQ0UKLSAgICAgICAgKCAgICN2ZXJzaW9uIDMwMCBlc1xuCi0gICAgICAgICAgICBw
cmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0gICAgICAgICAgICBpbiBoaWdocCB2ZWM0IHBvc2l0aW9u
OwotCi0gICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAgICAgICAgfQotICAgICAgICAp
OwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZSA9
IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKCAgICN2ZXJzaW9uIDMwMCBlcyBcbgotICAgICAgICAg
ICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwotICAgICAgICAgICAgb3V0IHZlYzQgb3V0X0ZyYWdD
b2xvcjsKLQotICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgb3V0X0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICByZXR1cm4gQ29tcGlsZVByb2dyYW0o
dGVzdFZlcnRleFNoYWRlclNvdXJjZSwgdGVzdEZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICB9
Ci0KLSAgICB2b2lkIGRyYXdXaXRoUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKLSAgICB7Ci0gICAg
ICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAxKTsKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9C
VUZGRVJfQklUKTsKLQotICAgICAgICBHTGludCBwb3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRy
aWJMb2NhdGlvbihwcm9ncmFtLCAicG9zaXRpb24iKTsKLQotICAgICAgICBnbFVzZVByb2dyYW0o
cHJvZ3JhbSk7Ci0KLSAgICAgICAgY29uc3QgR0xmbG9hdCB2ZXJ0aWNlc1tdID0KLSAgICAgICAg
ewotICAgICAgICAgICAgLTEuMGYsICAxLjBmLCAwLjVmLAotICAgICAgICAgICAgLTEuMGYsIC0x
LjBmLCAwLjVmLAotICAgICAgICAgICAgIDEuMGYsIC0xLjBmLCAwLjVmLAotCi0gICAgICAgICAg
ICAtMS4wZiwgIDEuMGYsIDAuNWYsCi0gICAgICAgICAgICAgMS4wZiwgLTEuMGYsIDAuNWYsCi0g
ICAgICAgICAgICAgMS4wZiwgIDEuMGYsIDAuNWYsCi0gICAgICAgIH07Ci0KLSAgICAgICAgZ2xW
ZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDMsIEdMX0ZMT0FULCBHTF9GQUxT
RSwgMCwgdmVydGljZXMpOwotICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0
aW9uTG9jYXRpb24pOwotCi0gICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDYp
OwotCi0gICAgICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24p
OwotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgNCwgR0xf
RkxPQVQsIEdMX0ZBTFNFLCAwLCBOVUxMKTsKLQotICAgICAgICBFWFBFQ1RfUElYRUxfRVEobU9T
V2luZG93LT5nZXRXaWR0aCgpIC8gMiwgbU9TV2luZG93LT5nZXRIZWlnaHQoKSAvIDIsIDI1NSwg
MCwgMCwgMjU1KTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIG1PU1dpbmRvdy0+ZGVzdHJveSgpOwotICAgICAgICBTYWZlRGVsZXRlKG1PU1dp
bmRvdyk7Ci0gICAgfQotCi0gICAgT1NXaW5kb3cgKm1PU1dpbmRvdzsKLX07Ci0KLS8vIFRyaWVz
IHRvIGNyZWF0ZSBhIHByb2dyYW0gYmluYXJ5IHVzaW5nIG9uZSBzZXQgb2YgcGxhdGZvcm0gcGFy
YW1zLCB0aGVuIGxvYWQgaXQgdXNpbmcgYSBkaWZmZXJlbnQgc2VudCBvZiBwYXJhbXMKLVRFU1Rf
UChQcm9ncmFtQmluYXJpZXNBY3Jvc3NQbGF0Zm9ybXMsIENyZWF0ZUFuZFJlbG9hZEJpbmFyeSkK
LXsKLSAgICBhbmdsZTo6UGxhdGZvcm1QYXJhbWV0ZXJzIGZpcnN0UmVuZGVyZXIgID0gR2V0UGFy
YW0oKTsKLSAgICBhbmdsZTo6UGxhdGZvcm1QYXJhbWV0ZXJzIHNlY29uZFJlbmRlcmVyID0gR2V0
UGFyYW0oKS5sb2FkUGFyYW1zOwotICAgIGJvb2wgZXhwZWN0ZWRMaW5rUmVzdWx0ICAgICAgICAg
ICAgICAgICAgPSBHZXRQYXJhbSgpLmV4cGVjdGVkTGlua1Jlc3VsdDsKLQotICAgIGlmICghKElz
UGxhdGZvcm1BdmFpbGFibGUoZmlyc3RSZW5kZXJlcikpKQotICAgIHsKLSAgICAgICAgc3RkOjpj
b3V0IDw8ICJGaXJzdCByZW5kZXJlciBub3Qgc3VwcG9ydGVkLCBza2lwcGluZyB0ZXN0IjsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghKElzUGxhdGZvcm1BdmFpbGFibGUoc2Vj
b25kUmVuZGVyZXIpKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiU2Vjb25kIHJlbmRl
cmVyIG5vdCBzdXBwb3J0ZWQsIHNraXBwaW5nIHRlc3QiOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgRUdMV2luZG93ICplZ2xXaW5kb3cgPSBudWxscHRyOwotICAgIHN0ZDo6dmVjdG9y
PHVpbnQ4X3Q+IGJpbmFyeSgwKTsKLSAgICBHTHVpbnQgcHJvZ3JhbSA9IDA7Ci0KLSAgICBHTGlu
dCBwcm9ncmFtTGVuZ3RoID0gMDsKLSAgICBHTGludCB3cml0dGVuTGVuZ3RoID0gMDsKLSAgICBH
TGVudW0gYmluYXJ5Rm9ybWF0ID0gMDsKLQotICAgIC8vIENyZWF0ZSBhIEVHTCB3aW5kb3cgd2l0
aCB0aGUgZmlyc3QgcmVuZGVyZXIKLSAgICBlZ2xXaW5kb3cgPSBjcmVhdGVBbmRJbml0RUdMV2lu
ZG93KGZpcnN0UmVuZGVyZXIpOwotICAgIGlmIChlZ2xXaW5kb3cgPT0gbnVsbHB0cikKLSAgICB7
Ci0gICAgICAgIEZBSUwoKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBFR0wgd2luZG93IjsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIElmIHRoZSB0ZXN0IGlzIHRyeWluZyB0byB1c2Ug
Ym90aCB0aGUgZGVmYXVsdCBHUFUgYW5kIFdBUlAsIGJ1dCB0aGUgZGVmYXVsdCBHUFUgKklTKiBX
QVJQLAotICAgIC8vIHRoZW4gb3VyIGV4cGVjdGF0aW9ucyBmb3IgdGhlIHRlc3QgcmVzdWx0cyB3
aWxsIGJlIGludmFsaWQuCi0gICAgaWYgKGZpcnN0UmVuZGVyZXIuZWdsUGFyYW1ldGVycy5kZXZp
Y2VUeXBlICE9IEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9XQVJQX0FOR0xFICYmCi0g
ICAgICAgIHNlY29uZFJlbmRlcmVyLmVnbFBhcmFtZXRlcnMuZGV2aWNlVHlwZSA9PSBFR0xfUExB
VEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6
c3RyaW5nIHJlbmRlcmVyU3RyaW5nID0gc3RkOjpzdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyKj4oZ2xHZXRTdHJpbmcoR0xfUkVOREVSRVIpKSk7Ci0gICAgICAgIHN0ZDo6dHJhbnNm
b3JtKHJlbmRlcmVyU3RyaW5nLmJlZ2luKCksIHJlbmRlcmVyU3RyaW5nLmVuZCgpLCByZW5kZXJl
clN0cmluZy5iZWdpbigpLCA6OnRvbG93ZXIpOwotCi0gICAgICAgIGF1dG8gYmFzaWNSZW5kZXJQ
b3MgPSByZW5kZXJlclN0cmluZy5maW5kKHN0ZDo6c3RyaW5nKCJtaWNyb3NvZnQgYmFzaWMgcmVu
ZGVyIikpOwotICAgICAgICBhdXRvIHNvZnR3YXJlQWRhcHRlclBvcyA9IHJlbmRlcmVyU3RyaW5n
LmZpbmQoc3RkOjpzdHJpbmcoInNvZnR3YXJlIGFkYXB0ZXIiKSk7Ci0KLSAgICAgICAgaWYgKGJh
c2ljUmVuZGVyUG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zIHx8IHNvZnR3YXJlQWRhcHRlclBvcyAh
PSBzdGQ6OnN0cmluZzo6bnBvcykKLSAgICAgICAgewotICAgICAgICAgICAgLy8gVGhlIGZpcnN0
IHJlbmRlcmVyIGlzIHVzaW5nIFdBUlAsIGV2ZW4gdGhvdWdoIHdlIGRpZG4ndCBleHBsaWN0bHkg
cmVxdWVzdCBpdAotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIHNraXAgdGhpcyB0ZXN0Ci0gICAg
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiB3aGVuIGRlZmF1bHQgR1BVIGlz
IFdBUlAuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICAvLyBDcmVhdGUgYSBwcm9ncmFtCi0gICAgaWYgKGZpcnN0UmVuZGVyZXIubWFq
b3JWZXJzaW9uID09IDMpCi0gICAgewotICAgICAgICBwcm9ncmFtID0gY3JlYXRlRVMzUHJvZ3Jh
bUZyb21Tb3VyY2UoKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcHJvZ3JhbSA9
IGNyZWF0ZUVTMlByb2dyYW1Gcm9tU291cmNlKCk7Ci0gICAgfQotCi0gICAgaWYgKHByb2dyYW0g
PT0gMCkKLSAgICB7Ci0gICAgICAgIGRlc3Ryb3lFR0xXaW5kb3coJmVnbFdpbmRvdyk7Ci0gICAg
ICAgIEZBSUwoKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBwcm9ncmFtIGZyb20gc291cmNlIjsKLSAg
ICB9Ci0KLSAgICAvLyBEcmF3IHVzaW5nIHRoZSBwcm9ncmFtIHRvIGVuc3VyZSBpdCB3b3JrcyBh
cyBleHBlY3RlZAotICAgIGRyYXdXaXRoUHJvZ3JhbShwcm9ncmFtKTsKLSAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKLQotICAgIC8vIFNhdmUgdGhlIHByb2dyYW0gYmluYXJ5IG91dCBmcm9tIHRo
aXMgcmVuZGVyZXIKLSAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9QUk9HUkFNX0JJTkFS
WV9MRU5HVEhfT0VTLCAmcHJvZ3JhbUxlbmd0aCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci0gICAgYmluYXJ5LnJlc2l6ZShwcm9ncmFtTGVuZ3RoKTsKLSAgICBnbEdldFByb2dyYW1CaW5h
cnlPRVMocHJvZ3JhbSwgcHJvZ3JhbUxlbmd0aCwgJndyaXR0ZW5MZW5ndGgsICZiaW5hcnlGb3Jt
YXQsIGJpbmFyeS5kYXRhKCkpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8g
RGVzdHJveSB0aGUgZmlyc3QgcmVuZGVyZXIKLSAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7
Ci0gICAgZGVzdHJveUVHTFdpbmRvdygmZWdsV2luZG93KTsKLQotICAgIC8vIENyZWF0ZSBhbiBF
R0wgd2luZG93IHdpdGggdGhlIHNlY29uZCByZW5kZXJlcgotICAgIGVnbFdpbmRvdyA9IGNyZWF0
ZUFuZEluaXRFR0xXaW5kb3coc2Vjb25kUmVuZGVyZXIpOwotICAgIGlmIChlZ2xXaW5kb3cgPT0g
bnVsbHB0cikKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBFR0wg
d2luZG93IjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHByb2dyYW0gPSBnbENyZWF0
ZVByb2dyYW0oKTsKLSAgICBnbFByb2dyYW1CaW5hcnlPRVMocHJvZ3JhbSwgYmluYXJ5Rm9ybWF0
LCBiaW5hcnkuZGF0YSgpLCB3cml0dGVuTGVuZ3RoKTsKLQotICAgIEdMaW50IGxpbmtTdGF0dXM7
Ci0gICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfTElOS19TVEFUVVMsICZsaW5rU3RhdHVz
KTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRMaW5rUmVzdWx0LCAobGlua1N0YXR1cyAhPSAwKSk7
Ci0KLSAgICBpZiAobGlua1N0YXR1cyAhPSAwKQotICAgIHsKLSAgICAgICAgLy8gSWYgdGhlIGxp
bmsgd2FzIHN1Y2Nlc3NmdWwsIHRoZW4gd2Ugc2hvdWxkIHRyeSB0byBkcmF3IHVzaW5nIHRoZSBw
cm9ncmFtIHRvIGVuc3VyZSBpdCB3b3JrcyBhcyBleHBlY3RlZAotICAgICAgICBkcmF3V2l0aFBy
b2dyYW0ocHJvZ3JhbSk7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQot
ICAgIC8vIERlc3Ryb3kgdGhlIHNlY29uZCByZW5kZXJlcgotICAgIGdsRGVsZXRlUHJvZ3JhbShw
cm9ncmFtKTsKLSAgICBkZXN0cm95RUdMV2luZG93KCZlZ2xXaW5kb3cpOwotfQotCi1BTkdMRV9J
TlNUQU5USUFURV9URVNUKFByb2dyYW1CaW5hcmllc0Fjcm9zc1BsYXRmb3JtcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICB8IFNhdmUgdGhlIHByb2dyYW0g
ICB8IExvYWQgdGhlIHByb2dyYW0gICAgICB8IEV4cGVjdGVkCi0gICAgICAgICAgICAgICAgICAg
ICAgIC8vICAgICAgICAgICAgICAgICAgICAgfCB1c2luZyB0aGVzZSBwYXJhbXMgfCB1c2luZyB0
aGVzZSBwYXJhbXMgICAgfCBsaW5rIHJlc3VsdAotICAgICAgICAgICAgICAgICAgICAgICBQbGF0
Zm9ybXNXaXRoTGlua1Jlc3VsdChFUzJfRDNEMTEoKSwgICAgICAgICBFUzJfRDNEMTEoKSwgICAg
ICAgICAgICB0cnVlICAgICAgICAgKSwgLy8gTG9hZGluZyArIHJlbG9hZGluZyBiaW5hcnkgc2hv
dWxkIHdvcmsKLSAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1zV2l0aExpbmtSZXN1bHQo
RVMzX0QzRDExKCksICAgICAgICAgRVMzX0QzRDExKCksICAgICAgICAgICAgdHJ1ZSAgICAgICAg
ICksIC8vIExvYWRpbmcgKyByZWxvYWRpbmcgYmluYXJ5IHNob3VsZCB3b3JrCi0gICAgICAgICAg
ICAgICAgICAgICAgIFBsYXRmb3Jtc1dpdGhMaW5rUmVzdWx0KEVTMl9EM0QxMV9GTDExXzAoKSwg
IEVTMl9EM0QxMV9GTDlfMygpLCAgICAgIGZhbHNlICAgICAgICApLCAvLyBTd2l0Y2hpbmcgZmVh
dHVyZSBsZXZlbCBzaG91bGRuJ3Qgd29yawotICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9y
bXNXaXRoTGlua1Jlc3VsdChFUzJfRDNEMTEoKSwgICAgICAgICBFUzJfRDNEMTFfV0FSUCgpLCAg
ICAgICBmYWxzZSAgICAgICAgKSwgLy8gU3dpdGNoaW5nIGZyb20gaGFyZHdhcmUgdG8gc29mdHdh
cmUgc2hvdWxkbid0IHdvcmsKLSAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1zV2l0aExp
bmtSZXN1bHQoRVMyX0QzRDExX0ZMOV8zKCksICAgRVMyX0QzRDExX0ZMOV8zX1dBUlAoKSwgZmFs
c2UgICAgICAgICksIC8vIFN3aXRjaGluZyBmcm9tIGhhcmR3YXJlIHRvIHNvZnR3YXJlIHNob3Vs
ZG4ndCB3b3JrIGZvciBGTDkgZWl0aGVyCi0gICAgICAgICAgICAgICAgICAgICAgIFBsYXRmb3Jt
c1dpdGhMaW5rUmVzdWx0KEVTMl9EM0QxMSgpLCAgICAgICAgIEVTMl9EM0Q5KCksICAgICAgICAg
ICAgIGZhbHNlICAgICAgICApLCAvLyBTd2l0Y2hpbmcgZnJvbSBEM0QxMSB0byBEM0Q5IHNob3Vs
ZG4ndCB3b3JrCi0gICAgICAgICAgICAgICAgICAgICAgIFBsYXRmb3Jtc1dpdGhMaW5rUmVzdWx0
KEVTMl9EM0Q5KCksICAgICAgICAgIEVTMl9EM0QxMSgpLCAgICAgICAgICAgIGZhbHNlICAgICAg
ICApLCAvLyBTd2l0Y2hpbmcgZnJvbSBEM0Q5IHRvIEQzRDExIHNob3VsZG4ndCB3b3JrCi0gICAg
ICAgICAgICAgICAgICAgICAgIFBsYXRmb3Jtc1dpdGhMaW5rUmVzdWx0KEVTMl9EM0QxMSgpLCAg
ICAgICAgIEVTM19EM0QxMSgpLCAgICAgICAgICAgIHRydWUgICAgICAgICApICAvLyBTd2l0Y2hp
bmcgdG8gbmV3ZXIgY2xpZW50IHZlcnNpb24gc2hvdWxkIHdvcmsKLQotICAgICAgICAgICAgICAg
ICAgICAgICAvLyBUT0RPOiBBTkdMRSBpc3N1ZSA1MjMKLSAgICAgICAgICAgICAgICAgICAgICAg
Ly8gQ29tcGlsaW5nIGEgcHJvZ3JhbSB3aXRoIGNsaWVudCB2ZXJzaW9uIDMsIHNhdmluZyB0aGUg
YmluYXJ5LCB0aGVuIGxvYWRpbmcgaXQgd2l0aCBjbGllbnQgdmVyc2lvbiAyIHNob3VsZCBub3Qg
d29yawotICAgICAgICAgICAgICAgICAgICAgICAvLyBQbGF0Zm9ybXNXaXRoTGlua1Jlc3VsdChF
UzNfRDNEMTEoKSwgICAgICAgICBFUzJfRDNEMTEoKSwgICAgICAgICAgICBmYWxzZSAgICAgICAp
Ci0gICAgICAgICAgICAgICAgICAgICAgICk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUHJvdm9raW5nVmVydGV4VGVzdC5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUHJvdm9raW5nVmVydGV4VGVz
dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkZjBiMWE2ZWViN2U1NmQxYTg3
MjY5NmM0Nzc2M2RhODBkNDFiOWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1By
b3Zva2luZ1ZlcnRleFRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzE2ICswLDAgQEAKLS8v
Ci0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KLS8vCi0vLyBQcm92a2luZ1ZlcnRleFRlc3Q6Ci0vLyAgIFRlc3RzIG9uIHRoZSBjb25mb3Jt
YW5jZSBvZiB0aGUgcHJvdm9raW5nIHZlcnRleCwgd2hpY2ggYXBwbGllcyB0byBmbGF0Ci0vLyAg
IHNoYWRpbmcgYW5kIGNvbXBhdGliaWxpdHkgd2l0aCBEM0QuIFNlZSB0aGUgc2VjdGlvbiBvbiAn
ZmxhdHNoYWRpbmcnCi0vLyAgIGluIHRoZSBFUyAzIHNwZWNzLgotLy8KLQotI2luY2x1ZGUgInRl
c3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotbmFtZXNw
YWNlCi17Ci0KLWNsYXNzIFByb3Zva2luZ1ZlcnRleFRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17
Ci0gIHByb3RlY3RlZDoKLSAgICBQcm92b2tpbmdWZXJ0ZXhUZXN0KCkKLSAgICAgICAgOiBtUHJv
Z3JhbSgwKSwKLSAgICAgICAgICBtRnJhbWVidWZmZXIoMCksCi0gICAgICAgICAgbVRleHR1cmUo
MCksCi0gICAgICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrKDApLAotICAgICAgICAgIG1CdWZmZXIo
MCksCi0gICAgICAgICAgbUludEF0dHJpYkxvY2F0aW9uKC0xKQotICAgIHsKLSAgICAgICAgc2V0
V2luZG93V2lkdGgoNjQpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoNjQpOwotICAgICAgICBz
ZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAg
ICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7
Ci0gICAgICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRV
cCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleFNoYWRlciA9Ci0gICAgICAgICAgICAiI3ZlcnNp
b24gMzAwIGVzXG4iCi0gICAgICAgICAgICAiaW4gaW50IGludEF0dHJpYjtcbiIKLSAgICAgICAg
ICAgICJpbiB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgImZsYXQgb3V0IGludCBhdHRy
aWI7XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAgICAgIiAgZ2xf
UG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLCAxKTtcbiIKLSAgICAgICAgICAgICIgIGF0dHJp
YiA9IGludEF0dHJpYjtcbiIKLSAgICAgICAgICAgICJ9IjsKLQotICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyAmZnJhZ21lbnRTaGFkZXIgPQotICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xu
IgotICAgICAgICAgICAgImZsYXQgaW4gaW50IGF0dHJpYjtcbiIKLSAgICAgICAgICAgICJvdXQg
aW50IGZyYWdDb2xvcjtcbiIKLSAgICAgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAg
ICAgICAiICBmcmFnQ29sb3IgPSBhdHRyaWI7XG4iCi0gICAgICAgICAgICAifSI7Ci0KLSAgICAg
ICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRmVmFyeWluZ3M7Ci0gICAgICAgIHRmVmFyeWlu
Z3MucHVzaF9iYWNrKCJhdHRyaWIiKTsKLSAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3Jh
bVdpdGhUcmFuc2Zvcm1GZWVkYmFjayh2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyLCB0ZlZh
cnlpbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1NFUEFSQVRFX0FUVFJJQlMpOwotICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9n
cmFtKTsKLQotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZSk7Ci0gICAgICAgIGds
QmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUpOwotICAgICAgICBnbFRleFN0b3Jh
Z2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SMzJJLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5k
b3dIZWlnaHQoKSk7Ci0KLSAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1GcmFtZWJ1ZmZl
cik7Ci0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZm
ZXIpOwotICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9D
T0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUsIDApOwotCi0gICAgICAg
IG1JbnRBdHRyaWJMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJpbnRB
dHRyaWIiKTsKLSAgICAgICAgQVNTRVJUX05FKC0xLCBtSW50QXR0cmliTG9jYXRpb24pOwotICAg
ICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1JbnRBdHRyaWJMb2NhdGlvbik7Ci0KLSAg
ICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigp
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAobVByb2dyYW0gIT0gMCkKLSAgICAgICAgewot
ICAgICAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAgICAgICAgIG1Qcm9n
cmFtID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtRnJhbWVidWZmZXIgIT0gMCkKLSAg
ICAgICAgewotICAgICAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1GcmFtZWJ1ZmZl
cik7Ci0gICAgICAgICAgICBtRnJhbWVidWZmZXIgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKG1UZXh0dXJlICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsRGVsZXRlVGV4dHVy
ZXMoMSwgJm1UZXh0dXJlKTsKLSAgICAgICAgICAgIG1UZXh0dXJlID0gMDsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChtVHJhbnNmb3JtRmVlZGJhY2sgIT0gMCkKLSAgICAgICAgewotICAgICAg
ICAgICAgZ2xEZWxldGVUcmFuc2Zvcm1GZWVkYmFja3MoMSwgJm1UcmFuc2Zvcm1GZWVkYmFjayk7
Ci0gICAgICAgICAgICBtVHJhbnNmb3JtRmVlZGJhY2sgPSAwOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKG1CdWZmZXIgIT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xEZWxldGVCdWZm
ZXJzKDEsICZtQnVmZmVyKTsKLSAgICAgICAgICAgIG1CdWZmZXIgPSAwOwotICAgICAgICB9Ci0K
LSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQotICAgIEdMdWludCBtUHJv
Z3JhbTsKLSAgICBHTHVpbnQgbUZyYW1lYnVmZmVyOwotICAgIEdMdWludCBtVGV4dHVyZTsKLSAg
ICBHTHVpbnQgbVRyYW5zZm9ybUZlZWRiYWNrOwotICAgIEdMdWludCBtQnVmZmVyOwotICAgIEdM
aW50IG1JbnRBdHRyaWJMb2NhdGlvbjsKLX07Ci0KLS8vIFRlc3QgZHJhd2luZyBhIHNpbXBsZSB0
cmlhbmdsZSB3aXRoIGZsYXQgc2hhZGluZywgYW5kIGRpZmZlcmVudCB2YWx1ZWQgdmVydGljZXMu
Ci1URVNUX1AoUHJvdm9raW5nVmVydGV4VGVzdCwgRmxhdFRyaWFuZ2xlKQotewotICAgIEdMaW50
IHZlcnRleERhdGFbXSA9IHsxLCAyLCAzLCAxLCAyLCAzfTsKLSAgICBnbFZlcnRleEF0dHJpYklQ
b2ludGVyKG1JbnRBdHRyaWJMb2NhdGlvbiwgMSwgR0xfSU5ULCAwLCB2ZXJ0ZXhEYXRhKTsKLQot
ICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEdMaW50IHBp
eGVsVmFsdWUgPSAwOwotICAgIGdsUmVhZFBpeGVscygwLCAwLCAxLCAxLCBHTF9SRURfSU5URUdF
UiwgR0xfSU5ULCAmcGl4ZWxWYWx1ZSk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAg
ICBFWFBFQ1RfRVEodmVydGV4RGF0YVsyXSwgcGl4ZWxWYWx1ZSk7Ci19Ci0KLS8vIEVuc3VyZSB0
aGF0IGFueSBwcm92b2tpbmcgdmVydGV4IHNoZW5hbmlnYW5zIHN0aWxsIGdpdmVzIGNvcnJlY3Qg
dmVydGV4IHN0cmVhbXMuCi1URVNUX1AoUHJvdm9raW5nVmVydGV4VGVzdCwgRmxhdFRyaVdpdGhU
cmFuc2Zvcm1GZWVkYmFjaykKLXsKLSAgICAvLyBUT0RPKGN3YWxsZXopIGZpZ3VyZSBvdXQgd2h5
IGl0IGlzIGJyb2tlbiBvbiBBTUQgb24gTWFjCi0jaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9B
UFBMRSkKLSAgICBpZiAoSXNBTUQoKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVz
dCBza2lwcGVkIG9uIEFNRCBvbiBNYWMuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0jZW5kaWYKLQotICAgIGdsR2VuVHJhbnNmb3JtRmVlZGJhY2tzKDEsICZtVHJhbnNm
b3JtRmVlZGJhY2spOwotICAgIGdsQmluZFRyYW5zZm9ybUZlZWRiYWNrKEdMX1RSQU5TRk9STV9G
RUVEQkFDSywgbVRyYW5zZm9ybUZlZWRiYWNrKTsKLQotICAgIGdsR2VuQnVmZmVycygxLCAmbUJ1
ZmZlcik7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG1C
dWZmZXIpOwotICAgIGdsQnVmZmVyRGF0YShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAx
MjgsIG51bGxwdHIsIEdMX1NUUkVBTV9EUkFXKTsKLQotICAgIGdsQmluZEJ1ZmZlckJhc2UoR0xf
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgbUJ1ZmZlcik7Ci0KLSAgICBHTGludCB2ZXJ0
ZXhEYXRhW10gPSB7MSwgMiwgMywgMSwgMiwgM307Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJJUG9pbnRl
cihtSW50QXR0cmliTG9jYXRpb24sIDEsIEdMX0lOVCwgMCwgdmVydGV4RGF0YSk7Ci0KLSAgICBn
bFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTF9U
UklBTkdMRVMpOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAg
ICBnbEVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7Ci0gICAgZ2xVc2VQcm9ncmFtKDApOwotCi0gICAg
R0xpbnQgcGl4ZWxWYWx1ZSA9IDA7Ci0gICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIEdMX1JF
RF9JTlRFR0VSLCBHTF9JTlQsICZwaXhlbFZhbHVlKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotICAgIEVYUEVDVF9FUSh2ZXJ0ZXhEYXRhWzJdLCBwaXhlbFZhbHVlKTsKLQotICAgIEdM
dm9pZCAqbWFwUG9pbnRlciA9Ci0gICAgICAgIGdsTWFwQnVmZmVyUmFuZ2UoR0xfVFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUiwgMCwgc2l6ZW9mKGludCkgKiA2LCBHTF9NQVBfUkVBRF9CSVQpOwot
ICAgIEFTU0VSVF9ORShudWxscHRyLCBtYXBQb2ludGVyKTsKLQotICAgIGludCAqbWFwcGVkSW50
cyA9IHN0YXRpY19jYXN0PGludCAqPihtYXBQb2ludGVyKTsKLSAgICBmb3IgKHVuc2lnbmVkIGlu
dCBjbnQgPSAwOyBjbnQgPCA2OyArK2NudCkKLSAgICB7Ci0gICAgICAgIEVYUEVDVF9FUSh2ZXJ0
ZXhEYXRhW2NudF0sIG1hcHBlZEludHNbY250XSk7Ci0gICAgfQotfQotCi0vLyBUZXN0IGRyYXdp
bmcgYSBzaW1wbGUgbGluZSB3aXRoIGZsYXQgc2hhZGluZywgYW5kIGRpZmZlcmVudCB2YWx1ZWQg
dmVydGljZXMuCi1URVNUX1AoUHJvdm9raW5nVmVydGV4VGVzdCwgRmxhdExpbmUpCi17Ci0gICAg
R0xmbG9hdCBoYWxmUGl4ZWwgPSAxLjBmIC8gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oZ2V0V2luZG93
V2lkdGgoKSk7Ci0KLSAgICBHTGludCB2ZXJ0ZXhEYXRhW10gICAgID0gezEsIDJ9OwotICAgIEdM
ZmxvYXQgcG9zaXRpb25EYXRhW10gPSB7LTEuMGYgKyBoYWxmUGl4ZWwsIC0xLjBmLCAtMS4wZiAr
IGhhbGZQaXhlbCwgMS4wZn07Ci0KLSAgICBnbFZlcnRleEF0dHJpYklQb2ludGVyKG1JbnRBdHRy
aWJMb2NhdGlvbiwgMSwgR0xfSU5ULCAwLCB2ZXJ0ZXhEYXRhKTsKLQotICAgIEdMaW50IHBvc2l0
aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAicG9zaXRpb24iKTsK
LSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOwotICAgIGds
VmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFM
U0UsIDAsIHBvc2l0aW9uRGF0YSk7Ci0KLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAg
IGdsRHJhd0FycmF5cyhHTF9MSU5FUywgMCwgMik7Ci0KLSAgICBHTGludCBwaXhlbFZhbHVlID0g
MDsKLSAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgR0xfUkVEX0lOVEVHRVIsIEdMX0lOVCwg
JnBpeGVsVmFsdWUpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VR
KHZlcnRleERhdGFbMV0sIHBpeGVsVmFsdWUpOwotfQotCi0vLyBUZXN0IGRyYXdpbmcgYSBzaW1w
bGUgdHJpYW5nbGUgc3RyaXAgd2l0aCBmbGF0IHNoYWRpbmcsIGFuZCBkaWZmZXJlbnQgdmFsdWVk
IHZlcnRpY2VzLgotVEVTVF9QKFByb3Zva2luZ1ZlcnRleFRlc3QsIEZsYXRUcmlTdHJpcCkKLXsK
LSAgICBHTGludCB2ZXJ0ZXhEYXRhW10gICAgID0gezEsIDIsIDMsIDQsIDUsIDZ9OwotICAgIEdM
ZmxvYXQgcG9zaXRpb25EYXRhW10gPSB7LTEuMGYsIC0xLjBmLCAtMS4wZiwgMS4wZiwgIDAuMGYs
IC0xLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwgIDEuMGYsICAxLjBm
LCAgLTEuMGYsIDEuMGYsIDEuMGZ9OwotCi0gICAgZ2xWZXJ0ZXhBdHRyaWJJUG9pbnRlcihtSW50
QXR0cmliTG9jYXRpb24sIDEsIEdMX0lOVCwgMCwgdmVydGV4RGF0YSk7Ci0KLSAgICBHTGludCBw
b3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInBvc2l0aW9u
Iik7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKLSAg
ICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdM
X0ZBTFNFLCAwLCBwb3NpdGlvbkRhdGEpOwotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsK
LSAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVfU1RSSVAsIDAsIDYpOwotCi0gICAgc3RkOjp2
ZWN0b3I8R0xpbnQ+IHBpeGVsQnVmZmVyKGdldFdpbmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWln
aHQoKSwgMCk7Ci0gICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdp
bmRvd0hlaWdodCgpLCBHTF9SRURfSU5URUdFUiwgR0xfSU5ULAotICAgICAgICAgICAgICAgICAm
cGl4ZWxCdWZmZXJbMF0pOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBmb3Ig
KHVuc2lnbmVkIGludCB0cmlJbmRleCA9IDA7IHRyaUluZGV4IDwgNDsgKyt0cmlJbmRleCkKLSAg
ICB7Ci0gICAgICAgIEdMZmxvYXQgc3VtWCA9IHBvc2l0aW9uRGF0YVt0cmlJbmRleCAqIDIgKyAw
XSArIHBvc2l0aW9uRGF0YVt0cmlJbmRleCAqIDIgKyAyXSArCi0gICAgICAgICAgICAgICAgICAg
ICAgIHBvc2l0aW9uRGF0YVt0cmlJbmRleCAqIDIgKyA0XTsKLSAgICAgICAgR0xmbG9hdCBzdW1Z
ID0gcG9zaXRpb25EYXRhW3RyaUluZGV4ICogMiArIDFdICsgcG9zaXRpb25EYXRhW3RyaUluZGV4
ICogMiArIDNdICsKLSAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25EYXRhW3RyaUluZGV4
ICogMiArIDVdOwotCi0gICAgICAgIGZsb2F0IGNlbnRlclggPSBzdW1YIC8gMy4wZiAqIDAuNWYg
KyAwLjVmOwotICAgICAgICBmbG9hdCBjZW50ZXJZID0gc3VtWSAvIDMuMGYgKiAwLjVmICsgMC41
ZjsKLSAgICAgICAgdW5zaWduZWQgaW50IHBpeGVsWCA9Ci0gICAgICAgICAgICBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KGNlbnRlclggKiBzdGF0aWNfY2FzdDxHTGZsb2F0PihnZXRXaW5kb3dX
aWR0aCgpKSk7Ci0gICAgICAgIHVuc2lnbmVkIGludCBwaXhlbFkgPQotICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgaW50PihjZW50ZXJZICogc3RhdGljX2Nhc3Q8R0xmbG9hdD4oZ2V0
V2luZG93SGVpZ2h0KCkpKTsKLSAgICAgICAgdW5zaWduZWQgaW50IHBpeGVsSW5kZXggPSBwaXhl
bFkgKiBnZXRXaW5kb3dXaWR0aCgpICsgcGl4ZWxYOwotCi0gICAgICAgIHVuc2lnbmVkIGludCBw
cm92b2tpbmdWZXJ0ZXhJbmRleCA9IHRyaUluZGV4ICsgMjsKLQotICAgICAgICBFWFBFQ1RfRVEo
dmVydGV4RGF0YVtwcm92b2tpbmdWZXJ0ZXhJbmRleF0sIHBpeGVsQnVmZmVyW3BpeGVsSW5kZXhd
KTsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgZHJhd2luZyBhbiBpbmRleGVkIHRyaWFuZ2xlIHN0cmlw
IHdpdGggZmxhdCBzaGFkaW5nIGFuZCBwcmltaXRpdmUgcmVzdGFydC4KLVRFU1RfUChQcm92b2tp
bmdWZXJ0ZXhUZXN0LCBGbGF0VHJpU3RyaXBQcmltaXRpdmVSZXN0YXJ0KQotewotICAgIC8vIFRP
RE8oam1hZGlsbCk6IEltcGxlbWVudCBvbiB0aGUgRDNEIGJhY2stZW5kLgotICAgIGlmIChJc0Qz
RDExKCkpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gRDNE
MTEuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTGludCBp
bmRleERhdGFbXSAgICAgID0gezAsIDEsIDIsIC0xLCAxLCAyLCAzLCA0LCAtMSwgMywgNCwgNX07
Ci0gICAgR0xpbnQgdmVydGV4RGF0YVtdICAgICA9IHsxLCAyLCAzLCA0LCA1LCA2fTsKLSAgICBH
TGZsb2F0IHBvc2l0aW9uRGF0YVtdID0gey0xLjBmLCAtMS4wZiwgLTEuMGYsIDEuMGYsICAwLjBm
LCAtMS4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsICAxLjBmLCAgMS4w
ZiwgIC0xLjBmLCAxLjBmLCAxLjBmfTsKLQotICAgIGdsVmVydGV4QXR0cmliSVBvaW50ZXIobUlu
dEF0dHJpYkxvY2F0aW9uLCAxLCBHTF9JTlQsIDAsIHZlcnRleERhdGEpOwotCi0gICAgR0xpbnQg
cG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJwb3NpdGlv
biIpOwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7Ci0g
ICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBH
TF9GQUxTRSwgMCwgcG9zaXRpb25EYXRhKTsKLQotICAgIGdsRGlzYWJsZShHTF9DVUxMX0ZBQ0Up
OwotICAgIGdsRW5hYmxlKEdMX1BSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYKTsKLSAgICBn
bFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIGdsRHJhd0VsZW1lbnRzKEdMX1RSSUFOR0xFX1NU
UklQLCAxMiwgR0xfVU5TSUdORURfSU5ULCBpbmRleERhdGEpOwotCi0gICAgc3RkOjp2ZWN0b3I8
R0xpbnQ+IHBpeGVsQnVmZmVyKGdldFdpbmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSwg
MCk7Ci0gICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hl
aWdodCgpLCBHTF9SRURfSU5URUdFUiwgR0xfSU5ULAotICAgICAgICAgICAgICAgICAmcGl4ZWxC
dWZmZXJbMF0pOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBBY2NvdW50
IGZvciBwcmltaXRpdmUgcmVzdGFydCB3aGVuIGNoZWNraW5nIHRoZSB0cmlzLgotICAgIEdMaW50
IHRyaU9mZnNldHNbXSA9IHswLCA0LCA1LCA5fTsKLQotICAgIGZvciAodW5zaWduZWQgaW50IHRy
aUluZGV4ID0gMDsgdHJpSW5kZXggPCA0OyArK3RyaUluZGV4KQotICAgIHsKLSAgICAgICAgR0xp
bnQgdmVydGV4QSA9IGluZGV4RGF0YVt0cmlPZmZzZXRzW3RyaUluZGV4XSArIDBdOwotICAgICAg
ICBHTGludCB2ZXJ0ZXhCID0gaW5kZXhEYXRhW3RyaU9mZnNldHNbdHJpSW5kZXhdICsgMV07Ci0g
ICAgICAgIEdMaW50IHZlcnRleEMgPSBpbmRleERhdGFbdHJpT2Zmc2V0c1t0cmlJbmRleF0gKyAy
XTsKLQotICAgICAgICBHTGZsb2F0IHN1bVggPQotICAgICAgICAgICAgcG9zaXRpb25EYXRhW3Zl
cnRleEEgKiAyXSArIHBvc2l0aW9uRGF0YVt2ZXJ0ZXhCICogMl0gKyBwb3NpdGlvbkRhdGFbdmVy
dGV4QyAqIDJdOwotICAgICAgICBHTGZsb2F0IHN1bVkgPSBwb3NpdGlvbkRhdGFbdmVydGV4QSAq
IDIgKyAxXSArIHBvc2l0aW9uRGF0YVt2ZXJ0ZXhCICogMiArIDFdICsKLSAgICAgICAgICAgICAg
ICAgICAgICAgcG9zaXRpb25EYXRhW3ZlcnRleEMgKiAyICsgMV07Ci0KLSAgICAgICAgZmxvYXQg
Y2VudGVyWCA9IHN1bVggLyAzLjBmICogMC41ZiArIDAuNWY7Ci0gICAgICAgIGZsb2F0IGNlbnRl
clkgPSBzdW1ZIC8gMy4wZiAqIDAuNWYgKyAwLjVmOwotICAgICAgICB1bnNpZ25lZCBpbnQgcGl4
ZWxYID0KLSAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY2VudGVyWCAqIHN0
YXRpY19jYXN0PEdMZmxvYXQ+KGdldFdpbmRvd1dpZHRoKCkpKTsKLSAgICAgICAgdW5zaWduZWQg
aW50IHBpeGVsWSA9Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNlbnRl
clkgKiBzdGF0aWNfY2FzdDxHTGZsb2F0PihnZXRXaW5kb3dIZWlnaHQoKSkpOwotICAgICAgICB1
bnNpZ25lZCBpbnQgcGl4ZWxJbmRleCA9IHBpeGVsWSAqIGdldFdpbmRvd1dpZHRoKCkgKyBwaXhl
bFg7Ci0KLSAgICAgICAgdW5zaWduZWQgaW50IHByb3Zva2luZ1ZlcnRleEluZGV4ID0gdHJpSW5k
ZXggKyAyOwotCi0gICAgICAgIEVYUEVDVF9FUSh2ZXJ0ZXhEYXRhW3Byb3Zva2luZ1ZlcnRleElu
ZGV4XSwgcGl4ZWxCdWZmZXJbcGl4ZWxJbmRleF0pOwotICAgIH0KLX0KLQotQU5HTEVfSU5TVEFO
VElBVEVfVEVTVChQcm92b2tpbmdWZXJ0ZXhUZXN0LCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgp
LCBFUzNfT1BFTkdMRVMoKSk7Ci0KLX0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9SZWFkUGl4ZWxz
VGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUmVh
ZFBpeGVsc1Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2QyZTNkYmFk
NjUxZTk1NDAwMTc5OTQ1NzFmNGEyYzM2OWM3MWJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9SZWFkUGl4ZWxzVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MjIgKzAsMCBA
QAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgotLy8KLS8vIFJlYWRQaXhlbHNUZXN0OgotLy8gICBUZXN0cyBjYWxscyByZWxhdGVk
IHRvIGdsUmVhZFBpeGVscy4KLS8vCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5o
IgotCi0jaW5jbHVkZSA8YXJyYXk+Ci0KLSNpbmNsdWRlICJyYW5kb21fdXRpbHMuaCIKLQotdXNp
bmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3MgUmVhZFBpeGVsc1Rl
c3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBSZWFkUGl4ZWxzVGVz
dCgpCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgzMik7Ci0gICAgICAgIHNldFdpbmRv
d0hlaWdodCgzMik7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENv
bmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAg
IHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICB9Ci19OwotCi0vLyBUZXN0IG91dCBvZiBib3Vu
ZHMgZnJhbWVidWZmZXIgcmVhZHMuCi1URVNUX1AoUmVhZFBpeGVsc1Rlc3QsIE91dE9mQm91bmRz
KQotewotICAgIC8vIFRPRE86IHJlLWVuYWJsZSBvbmNlIHJvb3QgY2F1c2Ugb2YgaHR0cDovL2Fu
Z2xlYnVnLmNvbS8xNDEzIGlzIGZpeGVkCi0gICAgaWYgKElzQW5kcm9pZCgpICYmIElzQWRyZW5v
KCkgJiYgSXNPcGVuR0xFUygpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgb24gQWRyZW5vIE9wZW5HTEVTIG9uIEFuZHJvaWQuIiA8PCBzdGQ6OmVuZGw7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMC4wZiwg
MS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKLQotICAgIEdMc2l6ZWkgcGl4ZWxzV2lkdGggPSAzMjsKLSAgICBHTHNpemVp
IHBpeGVsc0hlaWdodCA9IDMyOwotICAgIEdMaW50IG9mZnNldCA9IDE2OwotICAgIHN0ZDo6dmVj
dG9yPEdMQ29sb3I+IHBpeGVscygocGl4ZWxzV2lkdGggKyBvZmZzZXQpICogKHBpeGVsc0hlaWdo
dCArIG9mZnNldCkpOwotCi0gICAgZ2xSZWFkUGl4ZWxzKC1vZmZzZXQsIC1vZmZzZXQsIHBpeGVs
c1dpZHRoICsgb2Zmc2V0LCBwaXhlbHNIZWlnaHQgKyBvZmZzZXQsIEdMX1JHQkEsIEdMX1VOU0lH
TkVEX0JZVEUsICZwaXhlbHNbMF0pOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAg
Ly8gRXhwZWN0IHRoYXQgYWxsIHBpeGVscyB3aGljaCBmZWxsIHdpdGhpbiB0aGUgZnJhbWVidWZm
ZXIgYXJlIHJlZAotICAgIGZvciAoaW50IHkgPSBwaXhlbHNIZWlnaHQgLyAyOyB5IDwgcGl4ZWxz
SGVpZ2h0OyB5KyspCi0gICAgewotICAgICAgICBmb3IgKGludCB4ID0gcGl4ZWxzV2lkdGggLyAy
OyB4IDwgcGl4ZWxzV2lkdGg7IHgrKykKLSAgICAgICAgewotICAgICAgICAgICAgRVhQRUNUX0VR
KEdMQ29sb3I6OnJlZCwgcGl4ZWxzW3kgKiAocGl4ZWxzV2lkdGggKyBvZmZzZXQpICsgeF0pOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi1jbGFzcyBSZWFkUGl4ZWxzUEJPVGVzdCA6IHB1YmxpYyBS
ZWFkUGl4ZWxzVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgUmVhZFBpeGVsc1BCT1Rlc3QoKSA6
IG1QQk8oMCksIG1UZXh0dXJlKDApLCBtRkJPKDApIHt9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBnbEdl
bkJ1ZmZlcnMoMSwgJm1QQk8pOwotICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbUZCTyk7
Ci0KLSAgICAgICAgUmVzZXQoNCAqIGdldFdpbmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQo
KSwgNCwgMSk7Ci0gICAgfQotCi0gICAgdm9pZCBSZXNldChHTHVpbnQgYnVmZmVyU2l6ZSwgR0x1
aW50IGZib1dpZHRoLCBHTHVpbnQgZmJvSGVpZ2h0KQotICAgIHsKLSAgICAgICAgZ2xCaW5kQnVm
ZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCBtUEJPKTsKLSAgICAgICAgZ2xCdWZmZXJEYXRhKEdM
X1BJWEVMX1BBQ0tfQlVGRkVSLCBidWZmZXJTaXplLCBudWxscHRyLCBHTF9TVEFUSUNfRFJBVyk7
Ci0gICAgICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZFUiwgMCk7Ci0KLSAgICAg
ICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUpOwotICAgICAgICBnbEdlblRleHR1cmVz
KDEsICZtVGV4dHVyZSk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRl
eHR1cmUpOwotICAgICAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JB
OCwgZmJvV2lkdGgsIGZib0hlaWdodCk7Ci0KLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIG1GQk8pOwotICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZS
QU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUs
IDApOwotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7Ci0KLSAg
ICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigp
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1QQk8pOwotICAg
ICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZSk7Ci0gICAgICAgIGdsRGVsZXRlRnJh
bWVidWZmZXJzKDEsICZtRkJPKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0g
ICAgfQotCi0gICAgR0x1aW50IG1QQk8gICAgID0gMDsKLSAgICBHTHVpbnQgbVRleHR1cmUgPSAw
OwotICAgIEdMdWludCBtRkJPICAgICA9IDA7Ci19OwotCi0vLyBUZXN0IGJhc2ljIHVzYWdlIG9m
IFBCT3MuCi1URVNUX1AoUmVhZFBpeGVsc1BCT1Rlc3QsIEJhc2ljKQotewotICAgIGdsQ2xlYXJD
b2xvcigxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZF
Ul9CSVQpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kQnVmZmVyKEdM
X1BJWEVMX1BBQ0tfQlVGRkVSLCBtUEJPKTsKLSAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMTYsIDE2
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKLQotICAgIEdMdm9pZCAqbWFwcGVkUHRy
ICA9IGdsTWFwQnVmZmVyUmFuZ2UoR0xfUElYRUxfUEFDS19CVUZGRVIsIDAsIDMyLCBHTF9NQVBf
UkVBRF9CSVQpOwotICAgIEdMQ29sb3IgKmRhdGFDb2xvciA9IHN0YXRpY19jYXN0PEdMQ29sb3Ig
Kj4obWFwcGVkUHRyKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIEVYUEVDVF9F
UShHTENvbG9yOjpyZWQsIGRhdGFDb2xvclswXSk7Ci0KLSAgICBnbFVubWFwQnVmZmVyKEdMX1BJ
WEVMX1BBQ0tfQlVGRkVSKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVz
dCBhbiBlcnJvciBpcyBnZW5lcmF0ZWQgd2hlbiB0aGUgUEJPIGlzIHRvbyBzbWFsbC4KLVRFU1Rf
UChSZWFkUGl4ZWxzUEJPVGVzdCwgUEJPVG9vU21hbGwpCi17Ci0gICAgUmVzZXQoNCAqIDE2ICog
MTYgLSAxLCAxNiwgMTYpOwotCi0gICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDEu
MGYpOwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIG1QQk8p
OwotICAgIGdsUmVhZFBpeGVscygwLCAwLCAxNiwgMTYsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIDApOwotCi0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0K
LQotLy8gVGVzdCBhbiBlcnJvciBpcyBnZW5lcmF0ZWQgd2hlbiB0aGUgUEJPIGlzIG1hcHBlZC4K
LVRFU1RfUChSZWFkUGl4ZWxzUEJPVGVzdCwgUEJPTWFwcGVkKQotewotICAgIGdsQ2xlYXJDb2xv
cigxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9C
SVQpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kQnVmZmVyKEdMX1BJ
WEVMX1BBQ0tfQlVGRkVSLCBtUEJPKTsKLSAgICBnbE1hcEJ1ZmZlclJhbmdlKEdMX1BJWEVMX1BB
Q0tfQlVGRkVSLCAwLCAzMiwgR0xfTUFQX1JFQURfQklUKTsKLSAgICBnbFJlYWRQaXhlbHMoMCwg
MCwgMTYsIDE2LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKLQotICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLS8vIFRlc3QgdGhhdCBiaW5kaW5n
IGEgUEJPIHRvIEFSUkFZX0JVRkZFUiB3b3JrcyBhcyBleHBlY3RlZC4KLVRFU1RfUChSZWFkUGl4
ZWxzUEJPVGVzdCwgQXJyYXlCdWZmZXJUYXJnZXQpCi17Ci0gICAgZ2xDbGVhckNvbG9yKDEuMGYs
IDAuMGYsIDAuMGYsIDEuMGYpOwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0g
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFD
S19CVUZGRVIsIG1QQk8pOwotICAgIGdsUmVhZFBpeGVscygwLCAwLCAxNiwgMTYsIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsIDApOwotCi0gICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1BBQ0tf
QlVGRkVSLCAwKTsKLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtUEJPKTsKLQot
ICAgIEdMdm9pZCAqbWFwcGVkUHRyID0gZ2xNYXBCdWZmZXJSYW5nZShHTF9BUlJBWV9CVUZGRVIs
IDAsIDMyLCBHTF9NQVBfUkVBRF9CSVQpOwotICAgIEdMQ29sb3IgKmRhdGFDb2xvciA9IHN0YXRp
Y19jYXN0PEdMQ29sb3IgKj4obWFwcGVkUHRyKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
LQotICAgIEVYUEVDVF9FUShHTENvbG9yOjpyZWQsIGRhdGFDb2xvclswXSk7Ci0KLSAgICBnbFVu
bWFwQnVmZmVyKEdMX0FSUkFZX0JVRkZFUik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19
Ci0KLS8vIFRlc3QgdGhhdCB1c2luZyBhIFBCTyBkb2VzIG5vdCBvdmVyd3JpdGUgZXhpc3Rpbmcg
ZGF0YS4KLVRFU1RfUChSZWFkUGl4ZWxzUEJPVGVzdCwgRXhpc3RpbmdEYXRhUHJlc2VydmVkKQot
ewotICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmlndXJlIG91dCB3aHkgdGhpcyBmYWlscyBvbiBB
TUQgT3BlbkdMIChodHRwOi8vYW5nbGVidWcuY29tLzEyOTEpCi0gICAgaWYgKElzQU1EKCkgJiYg
Z2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9B
TkdMRSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBBTUQg
T3BlbkdMLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8g
Q2xlYXIgYmFja2J1ZmZlciB0byByZWQKLSAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMC4w
ZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFJlYWQgMTZ4MTYgcmVnaW9uIGZyb20gcmVkIGJhY2ti
dWZmZXIgdG8gUEJPCi0gICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCBtUEJP
KTsKLSAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMTYsIDE2LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLCAwKTsKLQotICAgIC8vIENsZWFyIGJhY2tidWZmZXIgdG8gZ3JlZW4KLSAgICBnbENsZWFy
Q29sb3IoMC4wZiwgMS4wZiwgMC4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZG
RVJfQklUKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFJlYWQgMTZ4MTYg
cmVnaW9uIGZyb20gZ3JlZW4gYmFja2J1ZmZlciB0byBQQk8gYXQgb2Zmc2V0IDE2Ci0gICAgZ2xS
ZWFkUGl4ZWxzKDAsIDAsIDE2LCAxNiwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcmVpbnRl
cnByZXRfY2FzdDxHTHZvaWQqPigxNikpOwotICAgIEdMdm9pZCAqbWFwcGVkUHRyICA9IGdsTWFw
QnVmZmVyUmFuZ2UoR0xfUElYRUxfUEFDS19CVUZGRVIsIDAsIDMyLCBHTF9NQVBfUkVBRF9CSVQp
OwotICAgIEdMQ29sb3IgKmRhdGFDb2xvciA9IHN0YXRpY19jYXN0PEdMQ29sb3IgKj4obWFwcGVk
UHRyKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFRlc3QgcGl4ZWwgMCBp
cyByZWQgKGV4aXN0aW5nIGRhdGEpCi0gICAgRVhQRUNUX0VRKEdMQ29sb3I6OnJlZCwgZGF0YUNv
bG9yWzBdKTsKLQotICAgIC8vIFRlc3QgcGl4ZWwgMTYgaXMgZ3JlZW4gKG5ldyBkYXRhKQotICAg
IEVYUEVDVF9FUShHTENvbG9yOjpncmVlbiwgZGF0YUNvbG9yWzE2XSk7Ci0KLSAgICBnbFVubWFw
QnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVSKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
LX0KLQotLy8gVGVzdCB0aGF0IGNhbGxpbmcgU3ViRGF0YSBwcmVzZXJ2ZXMgUEJPIGRhdGEuCi1U
RVNUX1AoUmVhZFBpeGVsc1BCT1Rlc3QsIFN1YkRhdGFQcmVzZXJ2ZXNDb250ZW50cykKLXsKLSAg
ICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9D
T0xPUl9CVUZGRVJfQklUKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmlu
ZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZFUiwgbVBCTyk7Ci0gICAgZ2xSZWFkUGl4ZWxzKDAs
IDAsIDE2LCAxNiwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0KLSAgICB1bnNpZ25l
ZCBjaGFyIGRhdGFbNF0gPSB7IDEsIDIsIDMsIDQgfTsKLQotICAgIGdsQmluZEJ1ZmZlcihHTF9Q
SVhFTF9QQUNLX0JVRkZFUiwgMCk7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwg
bVBCTyk7Ci0gICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgMCwgNCwgZGF0YSk7
Ci0KLSAgICBHTHZvaWQgKm1hcHBlZFB0ciAgPSBnbE1hcEJ1ZmZlclJhbmdlKEdMX0FSUkFZX0JV
RkZFUiwgMCwgMzIsIEdMX01BUF9SRUFEX0JJVCk7Ci0gICAgR0xDb2xvciAqZGF0YUNvbG9yID0g
c3RhdGljX2Nhc3Q8R0xDb2xvciAqPihtYXBwZWRQdHIpOwotICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOwotCi0gICAgRVhQRUNUX0VRKEdMQ29sb3IoMSwgMiwgMywgNCksIGRhdGFDb2xvclswXSk7
Ci0KLSAgICBnbFVubWFwQnVmZmVyKEdMX0FSUkFZX0JVRkZFUik7Ci0gICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci19Ci0KLS8vIFNhbWUgYXMgdGhlIHByaW9yIHRlc3QsIGJ1dCB3aXRoIGFuIG9m
ZnNldC4KLVRFU1RfUChSZWFkUGl4ZWxzUEJPVGVzdCwgU3ViRGF0YU9mZnNldFByZXNlcnZlc0Nv
bnRlbnRzKQotewotICAgIC8vIFRPRE86IHJlLWVuYWJsZSBvbmNlIHJvb3QgY2F1c2Ugb2YgaHR0
cDovL2FuZ2xlYnVnLmNvbS8xNDE1IGlzIGZpeGVkCi0gICAgaWYgKElzQW5kcm9pZCgpICYmIElz
QWRyZW5vKCkgJiYgSXNPcGVuR0xFUygpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IHNraXBwZWQgb24gQWRyZW5vIE9wZW5HTEVTIG9uIEFuZHJvaWQuIiA8PCBzdGQ6OmVuZGw7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwg
MC4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZF
UiwgbVBCTyk7Ci0gICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDE2LCAxNiwgR0xfUkdCQSwgR0xfVU5T
SUdORURfQllURSwgMCk7Ci0KLSAgICB1bnNpZ25lZCBjaGFyIGRhdGFbNF0gPSB7IDEsIDIsIDMs
IDQgfTsKLQotICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZFUiwgMCk7Ci0gICAg
Z2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVBCTyk7Ci0gICAgZ2xCdWZmZXJTdWJEYXRh
KEdMX0FSUkFZX0JVRkZFUiwgMTYsIDQsIGRhdGEpOwotCi0gICAgR0x2b2lkICptYXBwZWRQdHIg
ID0gZ2xNYXBCdWZmZXJSYW5nZShHTF9BUlJBWV9CVUZGRVIsIDAsIDMyLCBHTF9NQVBfUkVBRF9C
SVQpOwotICAgIEdMQ29sb3IgKmRhdGFDb2xvciA9IHN0YXRpY19jYXN0PEdMQ29sb3IgKj4obWFw
cGVkUHRyKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIEVYUEVDVF9FUShHTENv
bG9yOjpyZWQsIGRhdGFDb2xvclswXSk7Ci0gICAgRVhQRUNUX0VRKEdMQ29sb3IoMSwgMiwgMywg
NCksIGRhdGFDb2xvcls0XSk7Ci0KLSAgICBnbFVubWFwQnVmZmVyKEdMX0FSUkFZX0JVRkZFUik7
Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLWNsYXNzIFJlYWRQaXhlbHNQQk9EcmF3
VGVzdCA6IHB1YmxpYyBSZWFkUGl4ZWxzUEJPVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgUmVh
ZFBpeGVsc1BCT0RyYXdUZXN0KCkgOiBtUHJvZ3JhbSgwKSwgbVBvc2l0aW9uVkJPKDApIHt9Ci0K
LSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFJlYWRQaXhlbHNQQk9U
ZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGNvbnN0IGNoYXIgKnZlcnRleFNoYWRlclNyYyA9Ci0g
ICAgICAgICAgICAiYXR0cmlidXRlIHZlYzQgYVRlc3Q7IGF0dHJpYnV0ZSB2ZWMyIGFQb3NpdGlv
bjsgdmFyeWluZyB2ZWM0IHZUZXN0O1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0g
ICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgICB2VGVzdCAgICAgICAgPSBhVGVzdDtc
biIKLSAgICAgICAgICAgICIgICAgZ2xfUG9zaXRpb24gID0gdmVjNChhUG9zaXRpb24sIDAuMCwg
MS4wKTtcbiIKLSAgICAgICAgICAgICIgICAgZ2xfUG9pbnRTaXplID0gMS4wO1xuIgotICAgICAg
ICAgICAgIn0iOwotCi0gICAgICAgIGNvbnN0IGNoYXIgKmZyYWdtZW50U2hhZGVyU3JjID0KLSAg
ICAgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsgdmFyeWluZyB2ZWM0IHZUZXN0O1xu
IgotICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgICAie1xuIgotICAgICAg
ICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2VGVzdDtcbiIKLSAgICAgICAgICAgICJ9IjsKLQot
ICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNyYywgZnJhZ21l
bnRTaGFkZXJTcmMpOwotICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKLQotICAgICAg
ICBnbEdlbkJ1ZmZlcnMoMSwgJm1Qb3NpdGlvblZCTyk7Ci0gICAgICAgIGdsQmluZEJ1ZmZlcihH
TF9BUlJBWV9CVUZGRVIsIG1Qb3NpdGlvblZCTyk7Ci0gICAgICAgIGdsQnVmZmVyRGF0YShHTF9B
UlJBWV9CVUZGRVIsIDEyOCwgTlVMTCwgR0xfRFlOQU1JQ19EUkFXKTsKLSAgICAgICAgZ2xCaW5k
QnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigp
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotICAg
ICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1Qb3NpdGlvblZCTyk7Ci0gICAgICAgIFJlYWRQaXhl
bHNQQk9UZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQotICAgIEdMdWludCBtUHJvZ3JhbTsKLSAg
ICBHTHVpbnQgbVBvc2l0aW9uVkJPOwotfTsKLQotLy8gVGVzdCB0aGF0IHdlIGNhbiBkcmF3IHdp
dGggUEJPIGRhdGEuCi1URVNUX1AoUmVhZFBpeGVsc1BCT0RyYXdUZXN0LCBEcmF3V2l0aFBCTykK
LXsKLSAgICBHTENvbG9yIGNvbG9yKDEsIDIsIDMsIDQpOwotICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgbVRleHR1cmUpOwotICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCAwLCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmY29sb3IpOwotICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9G
UkFNRUJVRkZFUiwgbUZCTyk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbEJp
bmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIG1QQk8pOwotICAgIGdsUmVhZFBpeGVscygw
LCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKLSAgICBnbEJpbmRCdWZm
ZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIDApOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgZmxvYXQgcG9zaXRpb25EYXRhW10gPSB7IDAuNWYsIDAuNWYgfTsKLQotICAgIGdsVXNl
UHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgZ2xWaWV3cG9ydCgwLCAwLCAxLCAxKTsKLSAgICBnbEJp
bmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtUG9zaXRpb25WQk8pOwotICAgIGdsQnVmZmVyU3Vi
RGF0YShHTF9BUlJBWV9CVUZGRVIsIDAsIDEgKiAyICogNCwgcG9zaXRpb25EYXRhKTsKLSAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdl
dEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiYVBvc2l0aW9uIik7Ci0gICAgRVhQRUNUX05FKC0x
LCBwb3NpdGlvbkxvY2F0aW9uKTsKLQotICAgIEdMaW50IHRlc3RMb2NhdGlvbiA9IGdsR2V0QXR0
cmliTG9jYXRpb24obVByb2dyYW0sICJhVGVzdCIpOwotICAgIEVYUEVDVF9ORSgtMSwgdGVzdExv
Y2F0aW9uKTsKLQotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCAy
LCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIDApOwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJy
YXkocG9zaXRpb25Mb2NhdGlvbik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBn
bEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtUEJPKTsKLSAgICBnbFZlcnRleEF0dHJpYlBv
aW50ZXIodGVzdExvY2F0aW9uLCA0LCBHTF9VTlNJR05FRF9CWVRFLCBHTF9GQUxTRSwgMCwgMCk7
Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh0ZXN0TG9jYXRpb24pOwotICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwgMSk7Ci0g
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBjb2xvciA9IEdMQ29sb3IoMCwgMCwgMCwg
MCk7Ci0gICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsICZjb2xvcik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBFWFBFQ1RfRVEo
R0xDb2xvcigxLCAyLCAzLCA0KSwgY29sb3IpOwotfQotCi1jbGFzcyBSZWFkUGl4ZWxzTXVsdGlz
YW1wbGVUZXN0IDogcHVibGljIFJlYWRQaXhlbHNUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBS
ZWFkUGl4ZWxzTXVsdGlzYW1wbGVUZXN0KCkgOiBtRkJPKDApLCBtUkJPKDApLCBtUEJPKDApIHt9
Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6
U2V0VXAoKTsKLQotICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbUZCTyk7Ci0gICAgICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRkJPKTsKLQotICAgICAgICBnbEdl
blJlbmRlcmJ1ZmZlcnMoMSwgJm1SQk8pOwotICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xf
UkVOREVSQlVGRkVSLCBtUkJPKTsKLQotICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1QQk8pOwot
ICAgICAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIG1QQk8pOwotICAgICAg
ICBnbEJ1ZmZlckRhdGEoR0xfUElYRUxfUEFDS19CVUZGRVIsIDQgKiBnZXRXaW5kb3dXaWR0aCgp
ICogZ2V0V2luZG93SGVpZ2h0KCksIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICBHTF9T
VEFUSUNfRFJBVyk7Ci0gICAgICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZFUiwg
MCk7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCBU
ZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7
Ci0KLSAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1GQk8pOwotICAgICAgICBnbERl
bGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1SQk8pOwotICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwg
Jm1QQk8pOwotICAgIH0KLQotICAgIEdMdWludCBtRkJPOwotICAgIEdMdWludCBtUkJPOwotICAg
IEdMdWludCBtUEJPOwotfTsKLQotLy8gVGVzdCBSZWFkUGl4ZWxzIGZyb20gYSBtdWx0aXNhbXBs
ZWQgZnJhbWVidWZmZXIuCi1URVNUX1AoUmVhZFBpeGVsc011bHRpc2FtcGxlVGVzdCwgQmFzaWND
bGVhcikKLXsKLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNp
b25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpKQotICAgIHsKLSAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBFUzMgb3IgR0xfQU5HTEVf
ZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9B
TkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpKQotICAgIHsKLSAgICAgICAgZ2xSZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIDIsIEdMX1JHQkE4
LCA0LCA0KTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgZ2xSZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCAyLCBHTF9SR0JBOCwgNCwgNCk7Ci0g
ICAgfQotCi0gICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xf
Q09MT1JfQVRUQUNITUVOVDAsIEdMX1JFTkRFUkJVRkZFUiwgbVJCTyk7Ci0gICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7
Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLQotICAgIGdsQmluZEJ1ZmZlcihH
TF9QSVhFTF9QQUNLX0JVRkZFUiwgbVBCTyk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0K
LSAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgR0xfUkdCQTgsIEdMX1VOU0lHTkVEX0JZVEUs
IE5VTEwpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0K
LWNsYXNzIFJlYWRQaXhlbHNUZXh0dXJlVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHVi
bGljOgotICAgIFJlYWRQaXhlbHNUZXh0dXJlVGVzdCgpIDogbUZCTygwKSwgbVRleHR1cmUoMCkK
LSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDMyKTsKLSAgICAgICAgc2V0V2luZG93SGVp
Z2h0KDMyKTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmln
R3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0
Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGdsR2VuVGV4dHVy
ZXMoMSwgJm1UZXh0dXJlKTsKLSAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1GQk8pOwot
ICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCTyk7Ci0gICAgfQot
Ci0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0ZUZy
YW1lYnVmZmVycygxLCAmbUZCTyk7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0
dXJlKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgdm9p
ZCBpbml0VGV4dHVyZShHTGVudW0gdGV4dHVyZVRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxldmVscywKLSAgICAgICAgICAgICAgICAgICAgIEdMaW50IGF0dGFjaG1lbnRMZXZl
bCwKLSAgICAgICAgICAgICAgICAgICAgIEdMaW50IGF0dGFjaG1lbnRMYXllcikKLSAgICB7Ci0g
ICAgICAgIGdsQmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbVRleHR1cmUpOwotICAgICAgICBn
bFRleFN0b3JhZ2UzRCh0ZXh0dXJlVGFyZ2V0LCBsZXZlbHMsIEdMX1JHQkE4LCA0LCA0LCA0KTsK
LSAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09M
T1JfQVRUQUNITUVOVDAsIG1UZXh0dXJlLCBhdHRhY2htZW50TGV2ZWwsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudExheWVyKTsKLSAgICAgICAgaW5pdGlhbGl6
ZVRleHR1cmVEYXRhKHRleHR1cmVUYXJnZXQsIGxldmVscyk7Ci0gICAgfQotCi0gICAgdm9pZCB0
ZXN0UmVhZChHTGVudW0gdGV4dHVyZVRhcmdldCwgR0xpbnQgbGV2ZWxzLCBHTGludCBhdHRhY2ht
ZW50TGV2ZWwsIEdMaW50IGF0dGFjaG1lbnRMYXllcikKLSAgICB7Ci0gICAgICAgIGluaXRUZXh0
dXJlKHRleHR1cmVUYXJnZXQsIGxldmVscywgYXR0YWNobWVudExldmVsLCBhdHRhY2htZW50TGF5
ZXIpOwotICAgICAgICB2ZXJpZnlDb2xvcihhdHRhY2htZW50TGV2ZWwsIGF0dGFjaG1lbnRMYXll
cik7Ci0gICAgfQotCi0gICAgdm9pZCBpbml0UEJPKCkKLSAgICB7Ci0gICAgICAgIGdsR2VuQnVm
ZmVycygxLCAmbUJ1ZmZlcik7Ci0gICAgICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JV
RkZFUiwgbUJ1ZmZlcik7Ci0gICAgICAgIGdsQnVmZmVyRGF0YShHTF9QSVhFTF9QQUNLX0JVRkZF
Uiwgc2l6ZW9mKGFuZ2xlOjpHTENvbG9yKSwgbnVsbHB0ciwgR0xfU1RSRUFNX0NPUFkpOwotICAg
ICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHRlc3RQQk9SZWFk
KEdMZW51bSB0ZXh0dXJlVGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWxz
LAotICAgICAgICAgICAgICAgICAgICAgR0xpbnQgYXR0YWNobWVudExldmVsLAotICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgYXR0YWNobWVudExheWVyKQotICAgIHsKLSAgICAgICAgaW5pdFBC
TygpOwotICAgICAgICBpbml0VGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBsZXZlbHMsIGF0dGFjaG1l
bnRMZXZlbCwgYXR0YWNobWVudExheWVyKTsKLSAgICAgICAgdmVyaWZ5UEJPKGF0dGFjaG1lbnRM
ZXZlbCwgYXR0YWNobWVudExheWVyKTsKLSAgICB9Ci0KLSAgICAvLyBHaXZlIGVhY2gge2xldmVs
LGxheWVyfSBwYWlyIGEgKHByb2JhYmx5KSB1bmlxdWUgY29sb3IgdmlhIHJhbmRvbS4KLSAgICBH
THVpbnQgZ2V0Q29sb3JWYWx1ZShHTGludCBsZXZlbCwgR0xpbnQgbGF5ZXIpCi0gICAgewotICAg
ICAgICBtUk5HLnJlc2VlZChsZXZlbCArIGxheWVyICogMzIpOwotICAgICAgICByZXR1cm4gbVJO
Ry5yYW5kb21VSW50KCk7Ci0gICAgfQotCi0gICAgdm9pZCB2ZXJpZnlDb2xvcihHTGludCBsZXZl
bCwgR0xpbnQgbGF5ZXIpCi0gICAgewotICAgICAgICBhbmdsZTo6R0xDb2xvciBjb2xvclZhbHVl
KGdldENvbG9yVmFsdWUobGV2ZWwsIGxheWVyKSk7Ci0gICAgICAgIEVYUEVDVF9QSVhFTF9DT0xP
Ul9FUSgwLCAwLCBjb2xvclZhbHVlKTsKLSAgICB9Ci0KLSAgICB2b2lkIHZlcmlmeVBCTyhHTGlu
dCBsZXZlbCwgR0xpbnQgbGF5ZXIpCi0gICAgewotICAgICAgICBnbFJlYWRQaXhlbHMoMCwgMCwg
MSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0KLSAgICAgICAgYW5n
bGU6OkdMQ29sb3IgZXhwZWN0ZWRDb2xvcihnZXRDb2xvclZhbHVlKGxldmVsLCBsYXllcikpOwot
ICAgICAgICB2b2lkICptYXBQb2ludGVyID0KLSAgICAgICAgICAgIGdsTWFwQnVmZmVyUmFuZ2Uo
R0xfUElYRUxfUEFDS19CVUZGRVIsIDAsIHNpemVvZihhbmdsZTo6R0xDb2xvciksIEdMX01BUF9S
RUFEX0JJVCk7Ci0gICAgICAgIEFTU0VSVF9ORShudWxscHRyLCBtYXBQb2ludGVyKTsKLSAgICAg
ICAgYW5nbGU6OkdMQ29sb3IgYWN0dWFsQ29sb3I7Ci0gICAgICAgIG1lbWNweSgmYWN0dWFsQ29s
b3IsIG1hcFBvaW50ZXIsIHNpemVvZihhbmdsZTo6R0xDb2xvcikpOwotICAgICAgICBnbFVubWFw
QnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVSKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0gICAgICAgIEVYUEVDVF9FUShleHBlY3RlZENvbG9yLCBhY3R1YWxDb2xvcik7Ci0gICAg
fQotCi0gICAgdm9pZCBpbml0aWFsaXplVGV4dHVyZURhdGEoR0xlbnVtIHRleHR1cmVUYXJnZXQs
IEdMaW50IGxldmVscykKLSAgICB7Ci0gICAgICAgIGZvciAoR0xpbnQgbGV2ZWwgPSAwOyBsZXZl
bCA8IGxldmVsczsgKytsZXZlbCkKLSAgICAgICAgewotICAgICAgICAgICAgR0xpbnQgbWlwU2l6
ZSA9IDQgPj4gbGV2ZWw7Ci0gICAgICAgICAgICBHTGludCBsYXllcnMgID0gKHRleHR1cmVUYXJn
ZXQgPT0gR0xfVEVYVFVSRV8zRCA/IG1pcFNpemUgOiA0KTsKLQotICAgICAgICAgICAgc2l6ZV90
IGxheWVyU2l6ZSA9IG1pcFNpemUgKiBtaXBTaXplOwotICAgICAgICAgICAgc3RkOjp2ZWN0b3I8
R0x1aW50PiB0ZXh0dXJlRGF0YShsYXllcnMgKiBsYXllclNpemUpOwotCi0gICAgICAgICAgICBm
b3IgKEdMaW50IGxheWVyID0gMDsgbGF5ZXIgPCBsYXllcnM7ICsrbGF5ZXIpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgR0x1aW50IGNvbG9yVmFsdWUgPSBnZXRDb2xvclZhbHVlKGxl
dmVsLCBsYXllcik7Ci0gICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IChsYXllciAqIGxh
eWVyU2l6ZSk7Ci0gICAgICAgICAgICAgICAgc3RkOjpmaWxsKHRleHR1cmVEYXRhLmJlZ2luKCkg
KyBvZmZzZXQsIHRleHR1cmVEYXRhLmJlZ2luKCkgKyBvZmZzZXQgKyBsYXllclNpemUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbG9yVmFsdWUpOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBnbFRleFN1YkltYWdlM0QodGV4dHVyZVRhcmdldCwgbGV2ZWwsIDAsIDAsIDAsIG1p
cFNpemUsIG1pcFNpemUsIGxheWVycywgR0xfUkdCQSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9VTlNJR05FRF9CWVRFLCB0ZXh0dXJlRGF0YS5kYXRhKCkpOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgYW5nbGU6OlJORyBtUk5HOwotICAgIEdMdWludCBtRkJPOwotICAgIEdMdWlu
dCBtVGV4dHVyZTsKLSAgICBHTHVpbnQgbUJ1ZmZlcjsKLX07Ci0KLS8vIFRlc3QgM0QgYXR0YWNo
bWVudCByZWFkYmFjay4KLVRFU1RfUChSZWFkUGl4ZWxzVGV4dHVyZVRlc3QsIEJhc2ljQXR0YWNo
bWVudDNEKQotewotICAgIHRlc3RSZWFkKEdMX1RFWFRVUkVfM0QsIDEsIDAsIDApOwotfQotCi0v
LyBUZXN0IDNEIGF0dGFjaG1lbnQgcmVhZGJhY2ssIG5vbi16ZXJvIG1pcC4KLVRFU1RfUChSZWFk
UGl4ZWxzVGV4dHVyZVRlc3QsIE1pcEF0dGFjaG1lbnQzRCkKLXsKLSAgICB0ZXN0UmVhZChHTF9U
RVhUVVJFXzNELCAyLCAxLCAwKTsKLX0KLQotLy8gVGVzdCAzRCBhdHRhY2htZW50IHJlYWRiYWNr
LCBub24temVybyBsYXllci4KLVRFU1RfUChSZWFkUGl4ZWxzVGV4dHVyZVRlc3QsIExheWVyQXR0
YWNobWVudDNEKQotewotICAgIHRlc3RSZWFkKEdMX1RFWFRVUkVfM0QsIDEsIDAsIDEpOwotfQot
Ci0vLyBUZXN0IDNEIGF0dGFjaG1lbnQgcmVhZGJhY2ssIG5vbi16ZXJvIG1pcCBhbmQgbGF5ZXIu
Ci1URVNUX1AoUmVhZFBpeGVsc1RleHR1cmVUZXN0LCBNaXBMYXllckF0dGFjaG1lbnQzRCkKLXsK
LSAgICB0ZXN0UmVhZChHTF9URVhUVVJFXzNELCAyLCAxLCAxKTsKLX0KLQotLy8gVGVzdCAyRCBh
cnJheSBhdHRhY2htZW50IHJlYWRiYWNrLgotVEVTVF9QKFJlYWRQaXhlbHNUZXh0dXJlVGVzdCwg
QmFzaWNBdHRhY2htZW50MkRBcnJheSkKLXsKLSAgICB0ZXN0UmVhZChHTF9URVhUVVJFXzJEX0FS
UkFZLCAxLCAwLCAwKTsKLX0KLQotLy8gVGVzdCAzRCBhdHRhY2htZW50IHJlYWRiYWNrLCBub24t
emVybyBtaXAuCi1URVNUX1AoUmVhZFBpeGVsc1RleHR1cmVUZXN0LCBNaXBBdHRhY2htZW50MkRB
cnJheSkKLXsKLSAgICB0ZXN0UmVhZChHTF9URVhUVVJFXzJEX0FSUkFZLCAyLCAxLCAwKTsKLX0K
LQotLy8gVGVzdCAzRCBhdHRhY2htZW50IHJlYWRiYWNrLCBub24temVybyBsYXllci4KLVRFU1Rf
UChSZWFkUGl4ZWxzVGV4dHVyZVRlc3QsIExheWVyQXR0YWNobWVudDJEQXJyYXkpCi17Ci0gICAg
dGVzdFJlYWQoR0xfVEVYVFVSRV8yRF9BUlJBWSwgMSwgMCwgMSk7Ci19Ci0KLS8vIFRlc3QgM0Qg
YXR0YWNobWVudCByZWFkYmFjaywgbm9uLXplcm8gbWlwIGFuZCBsYXllci4KLVRFU1RfUChSZWFk
UGl4ZWxzVGV4dHVyZVRlc3QsIE1pcExheWVyQXR0YWNobWVudDJEQXJyYXkpCi17Ci0gICAgdGVz
dFJlYWQoR0xfVEVYVFVSRV8yRF9BUlJBWSwgMiwgMSwgMSk7Ci19Ci0KLS8vIFRlc3QgM0QgYXR0
YWNobWVudCBQQk8gcmVhZGJhY2suCi1URVNUX1AoUmVhZFBpeGVsc1RleHR1cmVUZXN0LCBCYXNp
Y0F0dGFjaG1lbnQzRFBCTykKLXsKLSAgICB0ZXN0UEJPUmVhZChHTF9URVhUVVJFXzNELCAxLCAw
LCAwKTsKLX0KLQotLy8gVGVzdCAzRCBhdHRhY2htZW50IHJlYWRiYWNrLCBub24temVybyBtaXAu
Ci1URVNUX1AoUmVhZFBpeGVsc1RleHR1cmVUZXN0LCBNaXBBdHRhY2htZW50M0RQQk8pCi17Ci0g
ICAgdGVzdFBCT1JlYWQoR0xfVEVYVFVSRV8zRCwgMiwgMSwgMCk7Ci19Ci0KLS8vIFRlc3QgM0Qg
YXR0YWNobWVudCByZWFkYmFjaywgbm9uLXplcm8gbGF5ZXIuCi1URVNUX1AoUmVhZFBpeGVsc1Rl
eHR1cmVUZXN0LCBMYXllckF0dGFjaG1lbnQzRFBCTykKLXsKLSAgICB0ZXN0UEJPUmVhZChHTF9U
RVhUVVJFXzNELCAxLCAwLCAxKTsKLX0KLQotLy8gVGVzdCAzRCBhdHRhY2htZW50IHJlYWRiYWNr
LCBub24temVybyBtaXAgYW5kIGxheWVyLgotVEVTVF9QKFJlYWRQaXhlbHNUZXh0dXJlVGVzdCwg
TWlwTGF5ZXJBdHRhY2htZW50M0RQQk8pCi17Ci0gICAgdGVzdFBCT1JlYWQoR0xfVEVYVFVSRV8z
RCwgMiwgMSwgMSk7Ci19Ci0KLS8vIFRlc3QgMkQgYXJyYXkgYXR0YWNobWVudCByZWFkYmFjay4K
LVRFU1RfUChSZWFkUGl4ZWxzVGV4dHVyZVRlc3QsIEJhc2ljQXR0YWNobWVudDJEQXJyYXlQQk8p
Ci17Ci0gICAgdGVzdFBCT1JlYWQoR0xfVEVYVFVSRV8yRF9BUlJBWSwgMSwgMCwgMCk7Ci19Ci0K
LS8vIFRlc3QgM0QgYXR0YWNobWVudCByZWFkYmFjaywgbm9uLXplcm8gbWlwLgotVEVTVF9QKFJl
YWRQaXhlbHNUZXh0dXJlVGVzdCwgTWlwQXR0YWNobWVudDJEQXJyYXlQQk8pCi17Ci0gICAgdGVz
dFBCT1JlYWQoR0xfVEVYVFVSRV8yRF9BUlJBWSwgMiwgMSwgMCk7Ci19Ci0KLS8vIFRlc3QgM0Qg
YXR0YWNobWVudCByZWFkYmFjaywgbm9uLXplcm8gbGF5ZXIuCi1URVNUX1AoUmVhZFBpeGVsc1Rl
eHR1cmVUZXN0LCBMYXllckF0dGFjaG1lbnQyREFycmF5UEJPKQotewotICAgIHRlc3RQQk9SZWFk
KEdMX1RFWFRVUkVfMkRfQVJSQVksIDEsIDAsIDEpOwotfQotCi0vLyBUZXN0IDNEIGF0dGFjaG1l
bnQgcmVhZGJhY2ssIG5vbi16ZXJvIG1pcCBhbmQgbGF5ZXIuCi1URVNUX1AoUmVhZFBpeGVsc1Rl
eHR1cmVUZXN0LCBNaXBMYXllckF0dGFjaG1lbnQyREFycmF5UEJPKQotewotICAgIHRlc3RQQk9S
ZWFkKEdMX1RFWFRVUkVfMkRfQVJSQVksIDIsIDEsIDEpOwotfQotCi0vLyBhIHRlc3QgY2xhc3Mg
dG8gYmUgdXNlZCBmb3IgZXJyb3IgY2hlY2tpbmcgb2YgZ2xSZWFkUGl4ZWxzCi1jbGFzcyBSZWFk
UGl4ZWxzRXJyb3JUZXN0IDogcHVibGljIFJlYWRQaXhlbHNUZXN0Ci17Ci0gIHByb3RlY3RlZDoK
LSAgICBSZWFkUGl4ZWxzRXJyb3JUZXN0KCkgOiBtVGV4dHVyZSgwKSwgbUZCTygwKSB7fQotCi0g
ICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVw
KCk7Ci0KLSAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVRleHR1cmUpOwotICAgICAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsKLSAgICAgICAgZ2xUZXhTdG9yYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQTgsIDQsIDEpOwotCi0gICAgICAgIGdsR2VuRnJh
bWVidWZmZXJzKDEsICZtRkJPKTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIG1GQk8pOwotICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVG
RkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUsIDApOwot
ICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7Ci0KLSAgICAgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0KLSAgICAgICAgZ2xE
ZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUpOwotICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVy
cygxLCAmbUZCTyk7Ci0gICAgfQotCi0gICAgR0x1aW50IG1UZXh0dXJlOwotICAgIEdMdWludCBt
RkJPOwotfTsKLQotLy8gIFRoZSB0ZXN0IHZlcmlmaWVzIHRoYXQgZ2xSZWFkUGl4ZWxzIGdlbmVy
YXRlcyBhIEdMX0lOVkFMSURfT1BFUkFUSU9OIGVycm9yCi0vLyAgd2hlbiB0aGUgcmVhZCBidWZm
ZXIgaXMgR0xfTk9ORS4KLS8vICBSZWZlcmVuY2U6IEdMRVMgMy4wLjQsIFNlY3Rpb24gNC4zLjIg
UmVhZGluZyBQaXhlbHMKLVRFU1RfUChSZWFkUGl4ZWxzRXJyb3JUZXN0LCBSZWFkQnVmZmVySXNO
b25lKQotewotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRkJPKTsKLSAg
ICBnbFJlYWRCdWZmZXIoR0xfTk9ORSk7Ci0gICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gcGl4ZWxz
KDQpOwotICAgIGdsUmVhZFBpeGVscygwLCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLCBwaXhlbHMuZGF0YSgpKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotfQotCi19ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCi0KLS8vIFVzZSB0aGlzIHRv
IHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2gg
R0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi1B
TkdMRV9JTlNUQU5USUFURV9URVNUKFJlYWRQaXhlbHNUZXN0LCBFUzJfRDNEMTEoKSwgRVMyX09Q
RU5HTCgpLCBFUzJfT1BFTkdMRVMoKSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKFJlYWRQaXhl
bHNQQk9UZXN0LCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7Ci1B
TkdMRV9JTlNUQU5USUFURV9URVNUKFJlYWRQaXhlbHNQQk9EcmF3VGVzdCwgRVMzX0QzRDExKCks
IEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOwotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChS
ZWFkUGl4ZWxzTXVsdGlzYW1wbGVUZXN0LCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNf
T1BFTkdMRVMoKSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKFJlYWRQaXhlbHNUZXh0dXJlVGVz
dCwgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOwotQU5HTEVfSU5T
VEFOVElBVEVfVEVTVChSZWFkUGl4ZWxzRXJyb3JUZXN0LCBFUzNfRDNEMTEoKSwgRVMzX09QRU5H
TCgpLCBFUzNfT1BFTkdMRVMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZ2xfdGVzdHMvUmVuZGVyZXJUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9SZW5kZXJlclRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxYjA3YWNiZjdkMTU2NmRjN2Y4NjhkNzRjZGM3ZGU1ZmI4Njk1MWU4
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9SZW5kZXJlclRlc3QuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMjEwICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBSZW5kZXJlclRlc3Q6Ci0v
LyAgIFRoZXNlIHRlc3RzIGFyZSBkZXNpZ25lZCB0byBlbnN1cmUgdGhhdCB0aGUgdmFyaW91cyBj
b25maWd1cmF0aW9ucyBvZiB0aGUgdGVzdCBmaXh0dXJlcyB3b3JrIGFzIGV4cGVjdGVkLgotLy8g
ICBJZiBvbmUgb2YgdGhlc2UgdGVzdHMgZmFpbHMsIHRoZW4gaXQgaXMgbGlrZWx5IHRoYXQgc29t
ZSBvZiB0aGUgb3RoZXIgdGVzdHMgYXJlIGJlaW5nIGNvbmZpZ3VyZWQgaW5jb3JyZWN0bHkuCi0v
LyAgIEZvciBleGFtcGxlLCB0aGV5IG1pZ2h0IGJlIHVzaW5nIHRoZSBEM0QxMSByZW5kZXJlciB3
aGVuIHRoZSB0ZXN0IGlzIG1lYW50IHRvIGJlIHVzaW5nIHRoZSBEM0Q5IHJlbmRlcmVyLgotCi0j
aW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xl
OwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3MgUmVuZGVyZXJUZXN0IDogcHVibGljIEFOR0xFVGVz
dAotewotICBwcm90ZWN0ZWQ6Ci0gICAgUmVuZGVyZXJUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNl
dFdpbmRvd1dpZHRoKDEyOCk7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwotICAgIH0K
LX07Ci0KLVRFU1RfUChSZW5kZXJlclRlc3QsIFJlcXVlc3RlZFJlbmRlcmVyQ3JlYXRlZCkKLXsK
LSAgICBzdGQ6OnN0cmluZyByZW5kZXJlclN0cmluZyA9IHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhcio+KGdsR2V0U3RyaW5nKEdMX1JFTkRFUkVSKSkpOwotICAgIHN0ZDo6
dHJhbnNmb3JtKHJlbmRlcmVyU3RyaW5nLmJlZ2luKCksIHJlbmRlcmVyU3RyaW5nLmVuZCgpLCBy
ZW5kZXJlclN0cmluZy5iZWdpbigpLCA6OnRvbG93ZXIpOwotCi0gICAgc3RkOjpzdHJpbmcgdmVy
c2lvblN0cmluZyA9IHN0ZDo6c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGds
R2V0U3RyaW5nKEdMX1ZFUlNJT04pKSk7Ci0gICAgc3RkOjp0cmFuc2Zvcm0odmVyc2lvblN0cmlu
Zy5iZWdpbigpLCB2ZXJzaW9uU3RyaW5nLmVuZCgpLCB2ZXJzaW9uU3RyaW5nLmJlZ2luKCksIDo6
dG9sb3dlcik7Ci0KLSAgICBjb25zdCBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgJnBsYXRmb3JtID0g
R2V0UGFyYW0oKS5lZ2xQYXJhbWV0ZXJzOwotCi0gICAgLy8gRW5zdXJlIHRoYXQgdGhlIHJlbmRl
cmVyIHN0cmluZyBjb250YWlucyBEM0QxMSwgaWYgd2UgcmVxdWVzdGVkIGEgRDNEMTEgcmVuZGVy
ZXIuCi0gICAgaWYgKHBsYXRmb3JtLnJlbmRlcmVyID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X0QzRDExX0FOR0xFKQotICAgIHsKLSAgICAgICAgQVNTRVJUX05FKHJlbmRlcmVyU3RyaW5nLmZp
bmQoc3RkOjpzdHJpbmcoImRpcmVjdDNkMTEiKSksIHN0ZDo6c3RyaW5nOjpucG9zKTsKLSAgICB9
Ci0KLSAgICAvLyBFbnN1cmUgdGhhdCB0aGUgcmVuZGVyZXIgc3RyaW5nIGNvbnRhaW5zIEQzRDks
IGlmIHdlIHJlcXVlc3RlZCBhIEQzRDkgcmVuZGVyZXIuCi0gICAgaWYgKHBsYXRmb3JtLnJlbmRl
cmVyID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDlfQU5HTEUpCi0gICAgewotICAgICAg
ICBBU1NFUlRfTkUocmVuZGVyZXJTdHJpbmcuZmluZChzdGQ6OnN0cmluZygiZGlyZWN0M2Q5Iikp
LCBzdGQ6OnN0cmluZzo6bnBvcyk7Ci0gICAgfQotCi0gICAgLy8gRW5zdXJlIHRoYXQgdGhlIG1h
am9yIGFuZCBtaW5vciB2ZXJzaW9ucyB0cmlnZ2VyIGV4cGVjdGVkIGJlaGF2aW9yIGluIEQzRDEx
Ci0gICAgaWYgKHBsYXRmb3JtLnJlbmRlcmVyID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0Qz
RDExX0FOR0xFKQotICAgIHsKLSAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHJlbmRlcmVyIHVz
ZXMgV0FSUCwgaWYgd2UgcmVxdWVzdGVkIGl0LgotICAgICAgICBpZiAocGxhdGZvcm0uZGV2aWNl
VHlwZSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSkKLSAgICAg
ICAgewotICAgICAgICAgICAgYXV0byBiYXNpY1JlbmRlclBvcyA9IHJlbmRlcmVyU3RyaW5nLmZp
bmQoc3RkOjpzdHJpbmcoIm1pY3Jvc29mdCBiYXNpYyByZW5kZXIiKSk7Ci0gICAgICAgICAgICBh
dXRvIHNvZnR3YXJlQWRhcHRlclBvcyA9IHJlbmRlcmVyU3RyaW5nLmZpbmQoc3RkOjpzdHJpbmco
InNvZnR3YXJlIGFkYXB0ZXIiKSk7Ci0gICAgICAgICAgICBBU1NFUlRfVFJVRShiYXNpY1JlbmRl
clBvcyAhPSBzdGQ6OnN0cmluZzo6bnBvcyB8fCBzb2Z0d2FyZUFkYXB0ZXJQb3MgIT0gc3RkOjpz
dHJpbmc6Om5wb3MpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJp
bmc+IGFjY2VwdGFibGVTaGFkZXJNb2RlbHM7Ci0KLSAgICAgICAgLy8gV2hlbiBubyBzcGVjaWZp
YyBtYWpvci9taW5vciB2ZXJzaW9uIGlzIHJlcXVlc3RlZCwgdGhlbiBBTkdMRSBzaG91bGQgcmV0
dXJuIHRoZSBoaWdoZXN0IHBvc3NpYmxlIGZlYXR1cmUgbGV2ZWwgYnkgZGVmYXVsdC4KLSAgICAg
ICAgLy8gVGhlIGN1cnJlbnQgaGFyZHdhcmUgZHJpdmVyIG1pZ2h0IG5vdCBzdXBwb3J0IEZlYXR1
cmUgTGV2ZWwgMTFfMCwgYnV0IFdBUlAgYWx3YXlzIGRvZXMuCi0gICAgICAgIC8vIFRoZXJlZm9y
ZSBpZiBXQVJQIGlzIHNwZWNpZmllZCBidXQgbm8gbWFqb3IvbWlub3IgdmVyc2lvbiBpcyBzcGVj
aWZpZWQsIHRoZW4gd2UgdGVzdCB0byBjaGVjayB0aGF0IEFOR0xFIHJldHVybnMgRkwxMV8wLgot
ICAgICAgICBpZiAocGxhdGZvcm0ubWFqb3JWZXJzaW9uID49IDExIHx8IHBsYXRmb3JtLm1ham9y
VmVyc2lvbiA9PSBFR0xfRE9OVF9DQVJFKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBGZWF0
dXJlIExldmVsIDEwXzAgY29ycmVzcG9uZHMgdG8gc2hhZGVyIG1vZGVsIDVfMAotICAgICAgICAg
ICAgYWNjZXB0YWJsZVNoYWRlck1vZGVscy5wdXNoX2JhY2soInBzXzVfMCIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKHBsYXRmb3JtLm1ham9yVmVyc2lvbiA+PSAxMCB8fCBwbGF0Zm9ybS5t
YWpvclZlcnNpb24gPT0gRUdMX0RPTlRfQ0FSRSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KHBsYXRmb3JtLm1pbm9yVmVyc2lvbiA+PSAxIHx8IHBsYXRmb3JtLm1pbm9yVmVyc2lvbiA9PSBF
R0xfRE9OVF9DQVJFKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIEZlYXR1cmUg
TGV2ZWwgMTBfMSBjb3JyZXNwb25kcyB0byBzaGFkZXIgbW9kZWwgNF8xCi0gICAgICAgICAgICAg
ICAgYWNjZXB0YWJsZVNoYWRlck1vZGVscy5wdXNoX2JhY2soInBzXzRfMSIpOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBpZiAocGxhdGZvcm0ubWlub3JWZXJzaW9uID49IDAgfHwgcGxh
dGZvcm0ubWlub3JWZXJzaW9uID09IEVHTF9ET05UX0NBUkUpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgLy8gRmVhdHVyZSBMZXZlbCAxMF8wIGNvcnJlc3BvbmRzIHRvIHNoYWRlciBt
b2RlbCA0XzAKLSAgICAgICAgICAgICAgICBhY2NlcHRhYmxlU2hhZGVyTW9kZWxzLnB1c2hfYmFj
aygicHNfNF8wIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocGxh
dGZvcm0ubWFqb3JWZXJzaW9uID09IDkgJiYgcGxhdGZvcm0ubWlub3JWZXJzaW9uID09IDMpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGFjY2VwdGFibGVTaGFkZXJNb2RlbHMucHVzaF9iYWNrKCJw
c180XzBfbGV2ZWxfOV8zIik7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIGZvdW5kID0gZmFs
c2U7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYWNjZXB0YWJsZVNoYWRlck1vZGVs
cy5zaXplKCk7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHJlbmRlcmVyU3RyaW5n
LmZpbmQoYWNjZXB0YWJsZVNoYWRlck1vZGVsc1tpXSkgIT0gc3RkOjpzdHJpbmc6Om5wb3MpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUoZm91bmQpOwotICAgIH0KLQotICAg
IEVHTGludCBnbGVzTWFqb3JWZXJzaW9uID0gR2V0UGFyYW0oKS5tYWpvclZlcnNpb247Ci0KLSAg
ICAvLyBFbnN1cmUgdGhhdCB0aGUgcmVuZGVyZXIgc3RyaW5nIGNvbnRhaW5zIEdMIEVTIDMuMCwg
aWYgd2UgcmVxdWVzdGVkIGEgR0wgRVMgMy4wCi0gICAgaWYgKGdsZXNNYWpvclZlcnNpb24gPT0g
MykKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9ORSh2ZXJzaW9uU3RyaW5nLmZpbmQoc3RkOjpzdHJp
bmcoImVzIDMuMCIpKSwgc3RkOjpzdHJpbmc6Om5wb3MpOwotICAgIH0KLQotICAgIC8vIEVuc3Vy
ZSB0aGF0IHRoZSB2ZXJzaW9uIHN0cmluZyBjb250YWlucyBHTCBFUyAyLjAsIGlmIHdlIHJlcXVl
c3RlZCBHTCBFUyAyLjAKLSAgICBpZiAoZ2xlc01ham9yVmVyc2lvbiA9PSAyKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUX05FKHZlcnNpb25TdHJpbmcuZmluZChzdGQ6OnN0cmluZygiZXMgMi4wIikp
LCBzdGQ6OnN0cmluZzo6bnBvcyk7Ci0gICAgfQotfQotCi0vLyBQZXJmb3JtIGEgc2ltcGxlIG9w
ZXJhdGlvbiAoY2xlYXIgYW5kIHJlYWQgcGl4ZWxzKSB0byB2ZXJpZnkgdGhlIGRldmljZSBpcyB3
b3JraW5nCi1URVNUX1AoUmVuZGVyZXJUZXN0LCBTaW1wbGVPcGVyYXRpb24pCi17Ci0gICAgZ2xD
bGVhckNvbG9yKDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYpOwotICAgIGdsQ2xlYXIoR0xfQ09MT1Jf
QlVGRkVSX0JJVCk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDI1NSwgMCwgMjU1KTsK
LX0KLQotLy8gU2VsZWN0IGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGlj
aCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4K
LQotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChSZW5kZXJlclRlc3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgIC8vIEVTMiBvbiB0b3Agb2YgRDNEOQotICAgICAgICAgICAgICAgICAgICAgICBFUzJf
RDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOV9SRUZFUkVOQ0UoKSwKLQot
ICAgICAgICAgICAgICAgICAgICAgICAvLyBFUzIgb24gdG9wIG9mIEQzRDExIGZlYXR1cmUgbGV2
ZWwgOS4zIHRvIDExLjAKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDExXzAoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX0QzRDExX0ZMMTBfMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNE
MTFfRkwxMF8wKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAot
Ci0gICAgICAgICAgICAgICAgICAgICAgIC8vIEVTMiBvbiB0b3Agb2YgRDNEMTEgV0FSUCBmZWF0
dXJlIGxldmVsIDkuMyB0byAxMS4wCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9X
QVJQKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDExXzBfV0FSUCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkwxMF8xX1dBUlAoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMMTBfMF9XQVJQKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9EM0QxMV9GTDlfM19XQVJQKCksCi0KLSAgICAgICAgICAgICAgICAgICAgICAg
Ly8gRVMyIG9uIHRvcCBvZiBEM0QxMSByZWZlcmVuY2UgZmVhdHVyZSBsZXZlbCA5LjMgdG8gMTEu
MAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfUkVGRVJFTkNFKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDExXzBfUkVGRVJFTkNFKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDEwXzFfUkVGRVJFTkNFKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9EM0QxMV9GTDEwXzBfUkVGRVJFTkNFKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9EM0QxMV9GTDlfM19SRUZFUkVOQ0UoKSwKLQotICAgICAgICAgICAgICAgICAg
ICAgICAvLyBFUzMgb24gdG9wIG9mIEQzRDExIGZlYXR1cmUgbGV2ZWwgOS4zIHRvIDExLjAKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAg
IEVTM19EM0QxMV9GTDExXzAoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExX0ZM
MTBfMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTFfRkwxMF8wKCksCi0KLSAg
ICAgICAgICAgICAgICAgICAgICAgLy8gRVMzIG9uIHRvcCBvZiBEM0QxMSBXQVJQIGZlYXR1cmUg
bGV2ZWwgOS4zIHRvIDExLjAKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExX1dBUlAo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExX0ZMMTFfMF9XQVJQKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMV9GTDEwXzFfV0FSUCgpLAotICAgICAgICAgICAg
ICAgICAgICAgICBFUzNfRDNEMTFfRkwxMF8wX1dBUlAoKSwKLQotICAgICAgICAgICAgICAgICAg
ICAgICAvLyBFUzMgb24gdG9wIG9mIEQzRDExIHJlZmVyZW5jZSBmZWF0dXJlIGxldmVsIDkuMyB0
byAxMS4wCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMV9SRUZFUkVOQ0UoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExX0ZMMTFfMF9SRUZFUkVOQ0UoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMzX0QzRDExX0ZMMTBfMV9SRUZFUkVOQ0UoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgRVMzX0QzRDExX0ZMMTBfMF9SRUZFUkVOQ0UoKSwKLQotICAgICAgICAg
ICAgICAgICAgICAgICAvLyBFUzIgb24gdG9wIG9mIGRlc2t0b3AgT3BlbkdMIHZlcnNpb25zIDIu
MSB0byA0LjUKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfT1BFTkdMKDIsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICBF
UzJfT1BFTkdMKDMsIDApLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKDMsIDEp
LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKDMsIDIpLAotICAgICAgICAgICAg
ICAgICAgICAgICBFUzJfT1BFTkdMKDMsIDMpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJf
T1BFTkdMKDQsIDApLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKDQsIDEpLAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKDQsIDIpLAotICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfT1BFTkdMKDQsIDMpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BF
TkdMKDQsIDQpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKDQsIDUpLAotCi0g
ICAgICAgICAgICAgICAgICAgICAgIC8vIEVTMiBvbiB0b3Agb2YgZGVza3RvcCBPcGVuR0wgdmVy
c2lvbnMgMy4yIHRvIDQuNQotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woMywgMiksCi0gICAgICAgICAgICAgICAg
ICAgICAgIEVTM19PUEVOR0woMywgMyksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVO
R0woNCwgMCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woNCwgMSksCi0gICAg
ICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woNCwgMiksCi0gICAgICAgICAgICAgICAgICAg
ICAgIEVTM19PUEVOR0woNCwgMyksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0wo
NCwgNCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woNCwgNSksCi0KLSAgICAg
ICAgICAgICAgICAgICAgICAgLy8gRVMyIG9uIHRvcCBvZiBPcGVuR0wgRVMgMi4wIHRvIDMuMgot
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX09QRU5HTEVTKDIsIDApLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BF
TkdMRVMoMywgMCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygzLCAxKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKDMsIDIpLAotCi0gICAgICAgICAg
ICAgICAgICAgICAgIC8vIEVTMiBvbiB0b3Agb2YgT3BlbkdMIEVTIDMuMCB0byAzLjIKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCksCi0gICAgICAgICAgICAgICAgICAgICAg
IEVTM19PUEVOR0xFUygzLCAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVT
KDMsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoMywgMikpOwotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1Jv
YnVzdENsaWVudE1lbW9yeVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL1JvYnVzdENsaWVudE1lbW9yeVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBiNWY4OWU5MDQxNTc3ZTNhYWRiZTY4ZGFlOTkxNDI4OGM3ZWRlNjZlLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Sb2J1c3RDbGllbnRNZW1vcnlUZXN0LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDM4NSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTYg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBSb2J1c3RD
bGllbnRNZW1vcnlUZXN0LmNwcCA6IFRlc3RzIG9mIHRoZSBHTF9BTkdMRV9yb2J1c3RfY2xpZW50
X21lbW9yeSBleHRlbnNpb24uCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgot
Ci0jaW5jbHVkZSAidGVzdF91dGlscy9nbF9yYWlpLmgiCi0KLW5hbWVzcGFjZSBhbmdsZQotewot
Y2xhc3MgUm9idXN0Q2xpZW50TWVtb3J5VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJv
dGVjdGVkOgotICAgIFJvYnVzdENsaWVudE1lbW9yeVRlc3QoKQotICAgIHsKLSAgICAgICAgc2V0
V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAg
IHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAg
ICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4
KTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFO
R0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBnbEdldEJvb2xlYW52Um9idXN0QU5HTEUgPSBy
ZWludGVycHJldF9jYXN0PFBGTkdMR0VUQk9PTEVBTlZST0JVU1RBTkdMRT4oCi0gICAgICAgICAg
ICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRCb29sZWFudlJvYnVzdEFOR0xFIikpOwotICAgICAg
ICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBG
TkdMR0VUQlVGRkVSUEFSQU1FVEVSSVZST0JVU1RBTkdMRT4oCi0gICAgICAgICAgICBlZ2xHZXRQ
cm9jQWRkcmVzcygiZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFIikpOwotICAgICAg
ICBnbEdldEZsb2F0dlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVEZMT0FU
VlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldEZsb2F0
dlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2Um9idXN0QU5HTEUgPQotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdF
VEZSQU1FQlVGRkVSQVRUQUNITUVOVFBBUkFNRVRFUklWUk9CVVNUQU5HTEU+KAotICAgICAgICAg
ICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFt
ZXRlcml2Um9idXN0QU5HTEUiKSk7Ci0gICAgICAgIGdsR2V0SW50ZWdlcnZSb2J1c3RBTkdMRSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRJTlRFR0VSVlJPQlVTVEFOR0xFPigKLSAgICAgICAg
ICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldEludGVnZXJ2Um9idXN0QU5HTEUiKSk7Ci0gICAg
ICAgIGdsR2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VU
UFJPR1JBTUlWUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImds
R2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUiKSk7Ci0gICAgICAgIGdsR2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRSA9Ci0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdM
R0VUUkVOREVSQlVGRkVSUEFSQU1FVEVSSVZST0JVU1RBTkdMRT4oCi0gICAgICAgICAgICAgICAg
ZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdM
RSIpKTsKLSAgICAgICAgZ2xHZXRTaGFkZXJpdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2Fz
dDxQRk5HTEdFVFNIQURFUklWUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0Fk
ZHJlc3MoImdsR2V0U2hhZGVyaXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRUZXhQYXJh
bWV0ZXJmdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFRFWFBBUkFNRVRF
UkZWUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0VGV4
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRUZXhQYXJhbWV0ZXJpdlJv
YnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFRFWFBBUkFNRVRFUklWUk9CVVNU
QU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0VGV4UGFyYW1ldGVy
aXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRVTklGT1JNRlZST0JVU1RBTkdMRT4oCi0gICAgICAgICAg
ICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRVbmlmb3JtZnZSb2J1c3RBTkdMRSIpKTsKLSAgICAg
ICAgZ2xHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRV
TklGT1JNSVZST0JVU1RBTkdMRT4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xH
ZXRVbmlmb3JtaXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJmdlJv
YnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFZFUlRFWEFUVFJJQkZWUk9CVVNU
QU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0VmVydGV4QXR0cmli
ZnZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xF
ID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFZFUlRFWEFUVFJJQklWUk9CVVNUQU5HTEU+KAot
ICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0VmVydGV4QXR0cmliaXZSb2J1c3RB
TkdMRSIpKTsKLSAgICAgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFID0K
LSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRWRVJURVhBVFRSSUJQT0lOVEVS
VlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRW
ZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbFJlYWRQaXhlbHNS
b2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xSRUFEUElYRUxTUk9CVVNUQU5HTEU+
KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsUmVhZFBpeGVsc1JvYnVzdEFOR0xF
IikpOwotICAgICAgICBnbFRleEltYWdlMkRSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UEZOR0xURVhJTUFHRTJEUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJl
c3MoImdsVGV4SW1hZ2UyRFJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbFRleFBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMVEVYUEFSQU1FVEVSRlZST0JVU1RB
TkdMRT4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xUZXhQYXJhbWV0ZXJmdlJv
YnVzdEFOR0xFIikpOwotICAgICAgICBnbFRleFBhcmFtZXRlcml2Um9idXN0QU5HTEUgPSByZWlu
dGVycHJldF9jYXN0PFBGTkdMVEVYUEFSQU1FVEVSSVZST0JVU1RBTkdMRT4oCi0gICAgICAgICAg
ICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFIikpOwotICAg
ICAgICBnbFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xU
RVhTVUJJTUFHRTJEUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3Mo
ImdsVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbFRleEltYWdlM0RSb2J1
c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xURVhJTUFHRTNEUk9CVVNUQU5HTEU+KAot
ICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsVGV4SW1hZ2UzRFJvYnVzdEFOR0xFIikp
OwotICAgICAgICBnbFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UEZOR0xURVhTVUJJTUFHRTNEUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0Fk
ZHJlc3MoImdsVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbEdldFF1ZXJ5
aXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRRVUVSWUlWUk9CVVNUQU5H
TEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0UXVlcnlpdlJvYnVzdEFO
R0xFIikpOwotICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0dWl2Um9idXN0QU5HTEUgPSByZWludGVy
cHJldF9jYXN0PFBGTkdMR0VUUVVFUllPQkpFQ1RVSVZST0JVU1RBTkdMRT4oCi0gICAgICAgICAg
ICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFIikpOwot
ICAgICAgICBnbEdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0
PFBGTkdMR0VUQlVGRkVSUE9JTlRFUlZST0JVU1RBTkdMRT4oCi0gICAgICAgICAgICBlZ2xHZXRQ
cm9jQWRkcmVzcygiZ2xHZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFIikpOwotICAgICAgICBn
bEdldEludGVnZXJpX3ZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRJTlRF
R0VSSV9WUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0
SW50ZWdlcmlfdlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbEdldEludGVybmFsZm9ybWF0aXZS
b2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0VUSU5URVJOQUxGT1JNQVRJVlJPQlVT
VEFOR0xFPigKLSAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldEludGVybmFsZm9y
bWF0aXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RB
TkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRWRVJURVhBVFRSSUJJSVZST0JVU1RBTkdM
RT4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRWZXJ0ZXhBdHRyaWJJaXZS
b2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUg
PSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUVkVSVEVYQVRUUklCSVVJVlJPQlVTVEFOR0xFPigK
LSAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFZlcnRleEF0dHJpYkl1aXZSb2J1
c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRVbmlmb3JtdWl2Um9idXN0QU5HTEUgPSByZWludGVy
cHJldF9jYXN0PFBGTkdMR0VUVU5JRk9STVVJVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgIGVn
bEdldFByb2NBZGRyZXNzKCJnbEdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAg
Z2xHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFID0KLSAgICAgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRBQ1RJVkVVTklGT1JNQkxPQ0tJVlJPQlVTVEFOR0xFPigKLSAg
ICAgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRBY3RpdmVVbmlmb3JtQmxvY2tp
dlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbEdldEludGVnZXI2NHZSb2J1c3RBTkdMRSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRJTlRFR0VSNjRWUk9CVVNUQU5HTEU+KAotICAgICAgICAg
ICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0SW50ZWdlcjY0dlJvYnVzdEFOR0xFIikpOwotICAg
ICAgICBnbEdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5H
TEdFVElOVEVHRVI2NElfVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgIGVnbEdldFByb2NBZGRy
ZXNzKCJnbEdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbEdldEJ1ZmZl
clBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSA9Ci0gICAgICAgICAgICByZWludGVycHJldF9jYXN0
PFBGTkdMR0VUQlVGRkVSUEFSQU1FVEVSSTY0VlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgICAg
ICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUi
KSk7Ci0gICAgICAgIGdsU2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMU0FNUExFUlBBUkFNRVRFUklWUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAg
ZWdsR2V0UHJvY0FkZHJlc3MoImdsU2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUiKSk7Ci0g
ICAgICAgIGdsU2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0
PFBGTkdMU0FNUExFUlBBUkFNRVRFUkZWUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0
UHJvY0FkZHJlc3MoImdsU2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUiKSk7Ci0gICAgICAg
IGdsR2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUgPQotICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDxQRk5HTEdFVFNBTVBMRVJQQVJBTUVURVJJVlJPQlVTVEFOR0xFPigKLSAgICAg
ICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1
c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRTYW1wbGVyUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSA9
Ci0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMR0VUU0FNUExFUlBBUkFNRVRFUkZW
Uk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFNh
bXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbEdldEZyYW1lYnVmZmVy
UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSA9Ci0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PFBG
TkdMR0VURlJBTUVCVUZGRVJQQVJBTUVURVJJVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgICAg
ICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUiKSk7Ci0gICAgICAgIGdsR2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUgPQotICAg
ICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFBST0dSQU1JTlRFUkZBQ0VJVlJPQlVT
VEFOR0xFPigKLSAgICAgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRQcm9ncmFt
SW50ZXJmYWNlaXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRCb29sZWFuaV92Um9idXN0
QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUQk9PTEVBTklfVlJPQlVTVEFOR0xFPigK
LSAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldEJvb2xlYW5pX3ZSb2J1c3RBTkdM
RSIpKTsKLSAgICAgICAgZ2xHZXRNdWx0aXNhbXBsZWZ2Um9idXN0QU5HTEUgPSByZWludGVycHJl
dF9jYXN0PFBGTkdMR0VUTVVMVElTQU1QTEVGVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgIGVn
bEdldFByb2NBZGRyZXNzKCJnbEdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSIpKTsKLSAgICAg
ICAgZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUgPQotICAgICAgICAgICAgcmVp
bnRlcnByZXRfY2FzdDxQRk5HTEdFVFRFWExFVkVMUEFSQU1FVEVSSVZST0JVU1RBTkdMRT4oCi0g
ICAgICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbEdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRSA9Ci0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMR0VUVEVYTEVWRUxQQVJB
TUVURVJGVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygi
Z2xHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUiKSk7Ci0gICAgICAgIGdsR2V0UG9p
bnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFID0KLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8UEZOR0xHRVRQT0lOVEVSVlJPQlVTVEFOR0xFUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAg
ICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdM
RSIpKTsKLSAgICAgICAgZ2xSZWFkblBpeGVsc1JvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2Fz
dDxQRk5HTFJFQUROUElYRUxTUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0Fk
ZHJlc3MoImdsUmVhZG5QaXhlbHNSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRuVW5pZm9y
bWZ2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUTlVOSUZPUk1GVlJPQlVT
VEFOR0xFPigKLSAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldG5Vbmlmb3JtZnZS
b2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRuVW5pZm9ybWl2Um9idXN0QU5HTEUgPSByZWlu
dGVycHJldF9jYXN0PFBGTkdMR0VUTlVOSUZPUk1JVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAg
IGVnbEdldFByb2NBZGRyZXNzKCJnbEdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSIpKTsKLSAgICAg
ICAgZ2xHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdF
VE5VTklGT1JNVUlWUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3Mo
ImdsR2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xURVhQQVJBTUVURVJJSVZST0JV
U1RBTkdMRT4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xUZXhQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUg
PSByZWludGVycHJldF9jYXN0PFBGTkdMVEVYUEFSQU1FVEVSSVVJVlJPQlVTVEFOR0xFPigKLSAg
ICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RSIpKTsKLSAgICAgICAgZ2xHZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UEZOR0xHRVRURVhQQVJBTUVURVJJSVZST0JVU1RBTkdMRT4oCi0gICAgICAgICAg
ICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSIpKTsK
LSAgICAgICAgZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9j
YXN0PFBGTkdMR0VUVEVYUEFSQU1FVEVSSVVJVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgIGVn
bEdldFByb2NBZGRyZXNzKCJnbEdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSIpKTsKLSAg
ICAgICAgZ2xTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0
PFBGTkdMU0FNUExFUlBBUkFNRVRFUklJVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgIGVnbEdl
dFByb2NBZGRyZXNzKCJnbFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSIpKTsKLSAgICAg
ICAgZ2xTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQ
Rk5HTFNBTVBMRVJQQVJBTUVURVJJVUlWUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0
UHJvY0FkZHJlc3MoImdsU2FtcGxlclBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSIpKTsKLSAgICAg
ICAgZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0QU5HTEUgPQotICAgICAgICAgICAgcmVp
bnRlcnByZXRfY2FzdDxQRk5HTEdFVFNBTVBMRVJQQVJBTUVURVJJSVZST0JVU1RBTkdMRT4oCi0g
ICAgICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0U2FtcGxlclBhcmFtZXRlcklp
dlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEUgPQotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFNBTVBMRVJQQVJB
TUVURVJJVUlWUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNz
KCJnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUiKSk7Ci0gICAgICAgIGdsR2V0
UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFFVRVJZ
T0JKRUNUSVZST0JVU1RBTkdMRT4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xH
ZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUiKSk7Ci0gICAgICAgIGdsR2V0UXVlcnlPYmplY3Rp
NjR2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUUVVFUllPQkpFQ1RJNjRW
Uk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0UXVlcnlP
YmplY3RpNjR2Um9idXN0QU5HTEUiKSk7Ci0gICAgICAgIGdsR2V0UXVlcnlPYmplY3R1aTY0dlJv
YnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFFVRVJZT0JKRUNUVUk2NFZST0JV
U1RBTkdMRT4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRRdWVyeU9iamVj
dHVpNjR2Um9idXN0QU5HTEUiKSk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJy
aWRlIHsgQU5HTEVUZXN0OjpUZWFyRG93bigpOyB9Ci0KLSAgICBib29sIGV4dGVuc2lvbnNQcmVz
ZW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5H
TEVfcm9idXN0X2NsaWVudF9tZW1vcnkiKSkKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9y
eSBpcyBub3QgYXZhaWxhYmxlLiI7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBQRk5HTEdFVEJPT0xFQU5W
Uk9CVVNUQU5HTEUgZ2xHZXRCb29sZWFudlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgID0g
bnVsbHB0cjsKLSAgICBQRk5HTEdFVEJVRkZFUlBBUkFNRVRFUklWUk9CVVNUQU5HTEUgZ2xHZXRC
dWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVEZMT0FU
VlJPQlVTVEFOR0xFIGdsR2V0RmxvYXR2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICAg
ID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVEZSQU1FQlVGRkVSQVRUQUNITUVOVFBBUkFNRVRFUklW
Uk9CVVNUQU5HTEUKLSAgICBnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9i
dXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAg
ICBQRk5HTEdFVElOVEVHRVJWUk9CVVNUQU5HTEUgZ2xHZXRJbnRlZ2VydlJvYnVzdEFOR0xFICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFBST0dS
QU1JVlJPQlVTVEFOR0xFIGdsR2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFJFTkRFUkJVRkZFUlBBUkFNRVRF
UklWUk9CVVNUQU5HTEUgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFID0g
bnVsbHB0cjsKLSAgICBQRk5HTEdFVFNIQURFUklWUk9CVVNUQU5HTEUgZ2xHZXRTaGFkZXJpdlJv
YnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQ
Rk5HTEdFVFRFWFBBUkFNRVRFUkZWUk9CVVNUQU5HTEUgZ2xHZXRUZXhQYXJhbWV0ZXJmdlJvYnVz
dEFOR0xFICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFRFWFBBUkFN
RVRFUklWUk9CVVNUQU5HTEUgZ2xHZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFICAgICAgICAg
ICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFVOSUZPUk1GVlJPQlVTVEFOR0xFIGds
R2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVs
bHB0cjsKLSAgICBQRk5HTEdFVFVOSUZPUk1JVlJPQlVTVEFOR0xFIGdsR2V0VW5pZm9ybWl2Um9i
dXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5H
TEdFVFZFUlRFWEFUVFJJQkZWUk9CVVNUQU5HTEUgZ2xHZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFO
R0xFICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFZFUlRFWEFUVFJJ
QklWUk9CVVNUQU5HTEUgZ2xHZXRWZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFICAgICAgICAgICAg
ICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFZFUlRFWEFUVFJJQlBPSU5URVJWUk9CVVNU
QU5HTEUgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFICAgICAgID0gbnVsbHB0
cjsKLSAgICBQRk5HTFJFQURQSVhFTFNST0JVU1RBTkdMRSBnbFJlYWRQaXhlbHNSb2J1c3RBTkdM
RSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTFRF
WElNQUdFMkRST0JVU1RBTkdMRSBnbFRleEltYWdlMkRSb2J1c3RBTkdMRSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTFRFWFBBUkFNRVRFUkZWUk9C
VVNUQU5HTEUgZ2xUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAg
ICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTFRFWFBBUkFNRVRFUklWUk9CVVNUQU5HTEUgZ2xUZXhQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsK
LSAgICBQRk5HTFRFWFNVQklNQUdFMkRST0JVU1RBTkdMRSBnbFRleFN1YkltYWdlMkRSb2J1c3RB
TkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTFRFWElN
QUdFM0RST0JVU1RBTkdMRSBnbFRleEltYWdlM0RSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTFRFWFNVQklNQUdFM0RST0JVU1RB
TkdMRSBnbFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFFVRVJZSVZST0JVU1RBTkdMRSBnbEdldFF1ZXJ5aXZS
b2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAg
ICBQRk5HTEdFVFFVRVJZT0JKRUNUVUlWUk9CVVNUQU5HTEUgZ2xHZXRRdWVyeU9iamVjdHVpdlJv
YnVzdEFOR0xFICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVEJVRkZF
UlBPSU5URVJWUk9CVVNUQU5HTEUgZ2xHZXRCdWZmZXJQb2ludGVydlJvYnVzdEFOR0xFICAgICAg
ICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVElOVEVHRVJJX1ZST0JVU1RBTkdM
RSBnbEdldEludGVnZXJpX3ZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
bnVsbHB0cjsKLSAgICBQRk5HRVRJTlRFUk5BTEZPUk1BVElWUk9CVVNUQU5HTEUgZ2xHZXRJbnRl
cm5hbGZvcm1hdGl2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQ
Rk5HTEdFVFZFUlRFWEFUVFJJQklJVlJPQlVTVEFOR0xFIGdsR2V0VmVydGV4QXR0cmliSWl2Um9i
dXN0QU5HTEUgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFZFUlRFWEFU
VFJJQklVSVZST0JVU1RBTkdMRSBnbEdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSAgICAg
ICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFVOSUZPUk1VSVZST0JVU1RBTkdMRSBn
bEdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVs
bHB0cjsKLSAgICBQRk5HTEdFVEFDVElWRVVOSUZPUk1CTE9DS0lWUk9CVVNUQU5HTEUgZ2xHZXRB
Y3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5H
TEdFVElOVEVHRVI2NFZST0JVU1RBTkdMRSBnbEdldEludGVnZXI2NHZSb2J1c3RBTkdMRSAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVElOVEVHRVI2NElf
VlJPQlVTVEFOR0xFIGdsR2V0SW50ZWdlcjY0aV92Um9idXN0QU5HTEUgICAgICAgICAgICAgICAg
ICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVEJVRkZFUlBBUkFNRVRFUkk2NFZST0JVU1RB
TkdMRSBnbEdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSAgICAgICAgID0gbnVsbHB0
cjsKLSAgICBQRk5HTFNBTVBMRVJQQVJBTUVURVJJVlJPQlVTVEFOR0xFIGdsU2FtcGxlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTFNB
TVBMRVJQQVJBTUVURVJGVlJPQlVTVEFOR0xFIGdsU2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFNBTVBMRVJQQVJBTUVU
RVJJVlJPQlVTVEFOR0xFIGdsR2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUgICAgICAg
ICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFNBTVBMRVJQQVJBTUVURVJGVlJPQlVTVEFOR0xF
IGdsR2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUgICAgICAgICAgID0gbnVsbHB0cjsK
LSAgICBQRk5HTEdFVEZSQU1FQlVGRkVSUEFSQU1FVEVSSVZST0JVU1RBTkdMRSBnbEdldEZyYW1l
YnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFBS
T0dSQU1JTlRFUkZBQ0VJVlJPQlVTVEFOR0xFIGdsR2V0UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0
QU5HTEUgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVEJPT0xFQU5JX1ZST0JVU1RB
TkdMRSBnbEdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVE1VTFRJU0FNUExFRlZST0JVU1RBTkdMRSBnbEdldE11
bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAg
ICBQRk5HTEdFVFRFWExFVkVMUEFSQU1FVEVSSVZST0JVU1RBTkdMRSBnbEdldFRleExldmVsUGFy
YW1ldGVyaXZSb2J1c3RBTkdMRSAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFRFWExF
VkVMUEFSQU1FVEVSRlZST0JVU1RBTkdMRSBnbEdldFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RB
TkdMRSAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFBPSU5URVJWUk9CVVNUQU5HTEVS
T0JVU1RBTkdMRSBnbEdldFBvaW50ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRSAgICAgICAgID0g
bnVsbHB0cjsKLSAgICBQRk5HTFJFQUROUElYRUxTUk9CVVNUQU5HTEUgZ2xSZWFkblBpeGVsc1Jv
YnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQ
Rk5HTEdFVE5VTklGT1JNRlZST0JVU1RBTkdMRSBnbEdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVE5VTklGT1JN
SVZST0JVU1RBTkdMRSBnbEdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVE5VTklGT1JNVUlWUk9CVVNUQU5HTEUg
Z2xHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVs
bHB0cjsKLSAgICBQRk5HTFRFWFBBUkFNRVRFUklJVlJPQlVTVEFOR0xFIGdsVGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5H
TFRFWFBBUkFNRVRFUklVSVZST0JVU1RBTkdMRSBnbFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RSAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFRFWFBBUkFNRVRF
UklJVlJPQlVTVEFOR0xFIGdsR2V0VGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUgICAgICAgICAg
ICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFRFWFBBUkFNRVRFUklVSVZST0JVU1RBTkdM
RSBnbEdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgID0gbnVsbHB0
cjsKLSAgICBQRk5HTFNBTVBMRVJQQVJBTUVURVJJSVZST0JVU1RBTkdMRSBnbFNhbXBsZXJQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTFNB
TVBMRVJQQVJBTUVURVJJVUlWUk9CVVNUQU5HTEUgZ2xTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFNBTVBMRVJQQVJBTUVU
RVJJSVZST0JVU1RBTkdMRSBnbEdldFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSAgICAg
ICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFNBTVBMRVJQQVJBTUVURVJJVUlWUk9CVVNUQU5H
TEUgZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFICAgICAgID0gbnVsbHB0cjsK
LSAgICBQRk5HTEdFVFFVRVJZT0JKRUNUSVZST0JVU1RBTkdMRSBnbEdldFF1ZXJ5T2JqZWN0aXZS
b2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFFV
RVJZT0JKRUNUSTY0VlJPQlVTVEFOR0xFIGdsR2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUg
ICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFFVRVJZT0JKRUNUVUk2NFZS
T0JVU1RBTkdMRSBnbEdldFF1ZXJ5T2JqZWN0dWk2NHZSb2J1c3RBTkdMRSAgICAgICAgICAgICAg
ID0gbnVsbHB0cjsKLX07Ci0KLS8vIFRlc3QgYmFzaWMgdXNhZ2UgYW5kIHZhbGlkYXRpb24gb2Yg
Z2xHZXRJbnRlZ2VydlJvYnVzdEFOR0xFCi1URVNUX1AoUm9idXN0Q2xpZW50TWVtb3J5VGVzdCwg
R2V0SW50ZWdlcikKLXsKLSAgICBpZiAoIWV4dGVuc2lvbnNQcmVzZW50KCkpCi0gICAgewotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gVmVyaWZ5IHRoYXQgdGhlIHJvYnVzdCBhbmQg
cmVndWxhciBlbnRyeSBwb2ludHMgcmV0dXJuIHRoZSBzYW1lIHZhbHVlcwotICAgIEdMaW50IHJl
c3VsdFJvYnVzdDsKLSAgICBHTHNpemVpIGxlbmd0aDsKLSAgICBnbEdldEludGVnZXJ2Um9idXN0
QU5HTEUoR0xfTUFYX1ZFUlRFWF9BVFRSSUJTLCAxLCAmbGVuZ3RoLCAmcmVzdWx0Um9idXN0KTsK
LSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfRVEoMSwgbGVuZ3RoKTsKLQot
ICAgIEdMaW50IHJlc3VsdFJlZ3VsYXI7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVY
X0FUVFJJQlMsICZyZXN1bHRSZWd1bGFyKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAg
ICBFWFBFQ1RfRVEocmVzdWx0UmVndWxhciwgcmVzdWx0Um9idXN0KTsKLQotICAgIC8vIFF1ZXJ5
IGEgZHluYW1pYyB2YWx1ZQotICAgIEdMaW50IG51bUNvbXByZXNzZWRGb3JtYXRzOwotICAgIGds
R2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHTF9OVU1fQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMs
IDEsICZsZW5ndGgsICZudW1Db21wcmVzc2VkRm9ybWF0cyk7Ci0gICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Ci0gICAgRVhQRUNUX0VRKDEsIGxlbmd0aCk7Ci0KLSAgICBpZiAobnVtQ29tcHJlc3Nl
ZEZvcm1hdHMgPiAwKQotICAgIHsKLSAgICAgICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IHJlc3VsdEJ1
ZihudW1Db21wcmVzc2VkRm9ybWF0cyAqIDIsIDApOwotCi0gICAgICAgIC8vIFRlc3Qgd2hlbiB0
aGUgYnVmU2l6ZSBpcyB0b28gbG93Ci0gICAgICAgIGdsR2V0SW50ZWdlcnZSb2J1c3RBTkdMRShH
TF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUywgbnVtQ29tcHJlc3NlZEZvcm1hdHMgLSAxLCAm
bGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QnVmLmRhdGEo
KSk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAg
ICAgIEVYUEVDVF9UUlVFKHN0ZDo6YWxsX29mKHJlc3VsdEJ1Zi5iZWdpbigpLCByZXN1bHRCdWYu
ZW5kKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKEdMaW50IHZhbHVlKSB7
IHJldHVybiB2YWx1ZSA9PSAwOyB9KSk7Ci0KLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBHTCBk
b2Vzbid0IHRvdWNoIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlcgotICAgICAgICBnbEdldEludGVnZXJ2
Um9idXN0QU5HTEUoR0xfQ09NUFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVpPihyZXN1bHRCdWYuc2l6ZSgp
KSwgJmxlbmd0aCwgcmVzdWx0QnVmLmRhdGEoKSk7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOwotICAgICAgICBFWFBFQ1RfRVEobnVtQ29tcHJlc3NlZEZvcm1hdHMsIGxlbmd0aCk7Ci0g
ICAgICAgIEVYUEVDVF9UUlVFKHN0ZDo6bm9uZV9vZihyZXN1bHRCdWYuYmVnaW4oKSwgcmVzdWx0
QnVmLmJlZ2luKCkgKyBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
XShHTGludCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gMDsgfSkpOwotICAgICAgICBFWFBFQ1Rf
VFJVRShzdGQ6OmFsbF9vZihyZXN1bHRCdWYuYmVnaW4oKSArIGxlbmd0aCwgcmVzdWx0QnVmLmVu
ZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXShHTGludCB2YWx1ZSkgeyBy
ZXR1cm4gdmFsdWUgPT0gMDsgfSkpOwotICAgIH0KLQotICAgIC8vIFRlc3Qgd2l0aCBudWxsIGxl
bmd0aAotICAgIGdsR2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHTF9NQVhfVkFSWUlOR19WRUNUT1JT
LCAxLCBudWxscHRyLCAmcmVzdWx0Um9idXN0KTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
LQotICAgIGdsR2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHTF9NQVhfVklFV1BPUlRfRElNUywgMSwg
bnVsbHB0ciwgJnJlc3VsdFJvYnVzdCk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURf
T1BFUkFUSU9OKTsKLQotICAgIEdMaW50IG1heFZpZXdwb3J0RGltc1syXTsKLSAgICBnbEdldElu
dGVnZXJ2Um9idXN0QU5HTEUoR0xfTUFYX1ZJRVdQT1JUX0RJTVMsIDIsIG51bGxwdHIsIG1heFZp
ZXdwb3J0RGltcyk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRlc3QgYmFz
aWMgdXNhZ2UgYW5kIHZhbGlkYXRpb24gb2YgZ2xUZXhJbWFnZTJEUm9idXN0QU5HTEUKLVRFU1Rf
UChSb2J1c3RDbGllbnRNZW1vcnlUZXN0LCBUZXhJbWFnZTJEKQotewotICAgIGlmICghZXh0ZW5z
aW9uc1ByZXNlbnQoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgR0xUZXh0
dXJlIHRleDsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleC5nZXQoKSk7Ci0K
LSAgICBHTHNpemVpIGRhdGFEaW1lbnNpb24gPSAxMDI0OwotICAgIHN0ZDo6dmVjdG9yPEdMdWJ5
dGU+IHJnYmFEYXRhKGRhdGFEaW1lbnNpb24gKiBkYXRhRGltZW5zaW9uICogNCk7Ci0KLSAgICAv
LyBUZXN0IHRoZSByZWd1bGFyIGNhc2UKLSAgICBnbFRleEltYWdlMkRSb2J1c3RBTkdMRShHTF9U
RVhUVVJFXzJELCAwLCBHTF9SR0JBLCBkYXRhRGltZW5zaW9uLCBkYXRhRGltZW5zaW9uLCAwLCBH
TF9SR0JBLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIHN0
YXRpY19jYXN0PEdMc2l6ZWk+KHJnYmFEYXRhLnNpemUoKSksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmdiYURhdGEuZGF0YSgpKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQot
ICAgIC8vIFRlc3Qgd2l0aCBhIGRhdGEgc2l6ZSB0aGF0IGlzIHRvbyBzbWFsbAotICAgIGdsVGV4
SW1hZ2UyRFJvYnVzdEFOR0xFKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIGRhdGFEaW1lbnNp
b24sIGRhdGFEaW1lbnNpb24sIDAsIEdMX1JHQkEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfVU5TSUdORURfQllURSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4ocmdiYURhdGEuc2l6ZSgp
KSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYURhdGEuZGF0YSgpKTsKLSAg
ICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgaWYgKGdldENs
aWVudE1ham9yVmVyc2lvbigpID49IDMpCi0gICAgewotICAgICAgICAvLyBTZXQgYW4gdW5wYWNr
IHBhcmFtZXRlciB0aGF0IHdvdWxkIGNhdXNlIHRoZSBkcml2ZXIgdG8gcmVhZCBwYXN0IHRoZSBl
bmQgb2YgdGhlIGJ1ZmZlcgotICAgICAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19ST1dfTEVO
R1RILCBkYXRhRGltZW5zaW9uICsgMSk7Ci0gICAgICAgIGdsVGV4SW1hZ2UyRFJvYnVzdEFOR0xF
KEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIGRhdGFEaW1lbnNpb24sIGRhdGFEaW1lbnNpb24s
IDAsIEdMX1JHQkEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVE
X0JZVEUsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHJnYmFEYXRhLnNpemUoKSksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJnYmFEYXRhLmRhdGEoKSk7Ci0gICAgICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgfQotfQotCi0vLyBUZXN0IGJhc2lj
IHVzYWdlIGFuZCB2YWxpZGF0aW9uIG9mIGdsUmVhZFBpeGVsc1JvYnVzdEFOR0xFCi1URVNUX1Ao
Um9idXN0Q2xpZW50TWVtb3J5VGVzdCwgUmVhZFBpeGVscykKLXsKLSAgICBpZiAoIWV4dGVuc2lv
bnNQcmVzZW50KCkpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xzaXpl
aSBkYXRhRGltZW5zaW9uID0gMTY7Ci0gICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gcmdiYURhdGEo
ZGF0YURpbWVuc2lvbiAqIGRhdGFEaW1lbnNpb24gKiA0KTsKLQotICAgIC8vIFRlc3QgdGhlIHJl
Z3VsYXIgY2FzZQotICAgIEdMc2l6ZWkgbGVuZ3RoID0gMDsKLSAgICBnbFJlYWRQaXhlbHNSb2J1
c3RBTkdMRSgwLCAwLCBkYXRhRGltZW5zaW9uLCBkYXRhRGltZW5zaW9uLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdM
c2l6ZWk+KHJnYmFEYXRhLnNpemUoKSksICZsZW5ndGgsIHJnYmFEYXRhLmRhdGEoKSk7Ci0gICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMc2l6ZWk+
KHJnYmFEYXRhLnNpemUoKSksIGxlbmd0aCk7Ci0KLSAgICAvLyBUZXN0IHdpdGggYSBkYXRhIHNp
emUgdGhhdCBpcyB0b28gc21hbGwKLSAgICBnbFJlYWRQaXhlbHNSb2J1c3RBTkdMRSgwLCAwLCBk
YXRhRGltZW5zaW9uLCBkYXRhRGltZW5zaW9uLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHJnYmFEYXRh
LnNpemUoKSkgLSAxLCAmbGVuZ3RoLCByZ2JhRGF0YS5kYXRhKCkpOwotICAgIEVYUEVDVF9HTF9F
UlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0KLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCkgPj0gMykKLSAgICB7Ci0gICAgICAgIC8vIFNldCBhIHBhY2sgcGFyYW1ldGVyIHRoYXQg
d291bGQgY2F1c2UgdGhlIGRyaXZlciB0byB3cml0ZSBwYXN0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZl
cgotICAgICAgICBnbFBpeGVsU3RvcmVpKEdMX1BBQ0tfUk9XX0xFTkdUSCwgZGF0YURpbWVuc2lv
biArIDEpOwotICAgICAgICBnbFJlYWRQaXhlbHNSb2J1c3RBTkdMRSgwLCAwLCBkYXRhRGltZW5z
aW9uLCBkYXRhRGltZW5zaW9uLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVpPihyZ2JhRGF0YS5zaXpl
KCkpLCAmbGVuZ3RoLCByZ2JhRGF0YS5kYXRhKCkpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgIH0KLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0
IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1h
am9yIHZlcnNpb24pIHRoZXNlCi0vLyB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi1BTkdM
RV9JTlNUQU5USUFURV9URVNUKFJvYnVzdENsaWVudE1lbW9yeVRlc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgp
LAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVO
R0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAotICAgICAgICAgICAg
ICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09Q
RU5HTEVTKCkpOwotCi19ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TUkdCVGV4dHVyZVRlc3QuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1NSR0JUZXh0dXJlVGVzdC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNDZmNmRlMTJhNDgzMzRlYzI2NWUxMDg0
NjU1MjJjNzk5ZDRhMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1NSR0JUZXh0
dXJlVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBAQAotLy8KLS8vIENvcHly
aWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQot
I2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmds
ZTsKLQotbmFtZXNwYWNlCi17Ci0KLWNsYXNzIFNSR0JUZXh0dXJlVGVzdCA6IHB1YmxpYyBBTkdM
RVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFNSR0JUZXh0dXJlVGVzdCgpCi0gICAgewotICAg
ICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsK
LSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRz
KDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxw
aGFCaXRzKDgpOwotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLX07
Ci0KLVRFU1RfUChTUkdCVGV4dHVyZVRlc3QsIFNSR0JWYWxpZGF0aW9uKQotewotICAgIGJvb2wg
c3VwcG9ydGVkID0gZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NSR0IiKSB8fCBnZXRDbGllbnRN
YWpvclZlcnNpb24oKSA9PSAzOwotCi0gICAgR0x1aW50IHRleCA9IDA7Ci0gICAgZ2xHZW5UZXh0
dXJlcygxLCAmdGV4KTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7Ci0K
LSAgICBHTHVieXRlIHBpeGVsWzNdID0geyAwIH07Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAsIEdMX1NSR0IsIDEsIDEsIDAsIEdMX1NSR0IsIEdMX1VOU0lHTkVEX0JZVEUsIHBp
eGVsKTsKLSAgICBpZiAoc3VwcG9ydGVkKQotICAgIHsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7Ci0KLSAgICAgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAs
IDAsIDAsIEdMX1NSR0IsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsKTsKLSAgICAgICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgZ2xHZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFXzJE
KTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICB9
Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5V
TSk7Ci0gICAgfQotCi0gICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4KTsKLX0KLQotVEVTVF9Q
KFNSR0JUZXh0dXJlVGVzdCwgU1JHQkFWYWxpZGF0aW9uKQotewotICAgIGJvb2wgc3VwcG9ydGVk
ID0gZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NSR0IiKSB8fCBnZXRDbGllbnRNYWpvclZlcnNp
b24oKSA9PSAzOwotCi0gICAgR0x1aW50IHRleCA9IDA7Ci0gICAgZ2xHZW5UZXh0dXJlcygxLCAm
dGV4KTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7Ci0KLSAgICBHTHVi
eXRlIHBpeGVsWzRdID0geyAwIH07Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IEdMX1NSR0JfQUxQSEFfRVhULCAxLCAxLCAwLCBHTF9TUkdCX0FMUEhBX0VYVCwgR0xfVU5TSUdO
RURfQllURSwgcGl4ZWwpOwotICAgIGlmIChzdXBwb3J0ZWQpCi0gICAgewotICAgICAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwgMCwgMCwgMCwgMCwgR0xfU1JHQl9BTFBIQV9FWFQsIEdMX1VOU0lHTkVEX0JZVEUsIHBp
eGVsKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgZ2xHZW5lcmF0
ZU1pcG1hcChHTF9URVhUVVJFXzJEKTsKLSAgICAgICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lv
bigpID09IDIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAg
ICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNl
Ci0gICAgewotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICB9
Ci0KLSAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXgpOwotfQotCi1URVNUX1AoU1JHQlRleHR1
cmVUZXN0LCBTUkdCQVJlbmRlcmJ1ZmZlcikKLXsKLSAgICBib29sIHN1cHBvcnRlZCA9IGV4dGVu
c2lvbkVuYWJsZWQoIkdMX0VYVF9zUkdCIikgfHwgZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPT0g
MzsKLQotICAgIEdMdWludCByYm8gPSAwOwotICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmcmJv
KTsKLSAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCByYm8pOwotCi0gICAg
Z2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfU1JHQjhfQUxQSEE4X0VY
VCwgMSwgMSk7Ci0gICAgaWYgKHN1cHBvcnRlZCkKLSAgICB7Ci0gICAgICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBFWFBFQ1RfR0xfRVJS
T1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHJibyBoYXMg
YSBzaXplIGZvciBmdXR1cmUgdGVzdHMKLSAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdM
X1JFTkRFUkJVRkZFUiwgR0xfUkdCQThfT0VTLCAxLCAxKTsKLSAgICAgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0gICAgfQotCi0gICAgR0x1aW50IGZibyA9IDA7Ci0gICAgZ2xHZW5GcmFtZWJ1
ZmZlcnMoMSwgJmZibyk7Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZi
byk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09M
T1JfQVRUQUNITUVOVDAsIEdMX1JFTkRFUkJVRkZFUiwgcmJvKTsKLSAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKLQotICAgIEdMaW50IGNvbG9yRW5jb2RpbmcgPSAwOwotICAgIGdsR2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFD
SE1FTlQwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRlJB
TUVCVUZGRVJfQVRUQUNITUVOVF9DT0xPUl9FTkNPRElOR19FWFQsICZjb2xvckVuY29kaW5nKTsK
LSAgICBpZiAoc3VwcG9ydGVkKQotICAgIHsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci0gICAgICAgIEVYUEVDVF9FUShHTF9TUkdCX0VYVCwgY29sb3JFbmNvZGluZyk7Ci0gICAgfQot
ICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0p
OwotICAgIH0KLQotICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmYm8pOwotICAgIGdsRGVs
ZXRlUmVuZGVyYnVmZmVycygxLCAmcmJvKTsKLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdo
aWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9y
IHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lOU1RB
TlRJQVRFX1RFU1QoU1JHQlRleHR1cmVUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJf
RDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgRVMzX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVO
R0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkpOwotCi19IC8vIG5h
bWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2ds
X3Rlc3RzL1NpbXBsZU9wZXJhdGlvblRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL1NpbXBsZU9wZXJhdGlvblRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiMTFmYjlmZTkyMzdjMmVhNGY4NTU1NTk0OGViYmUxZDU3NDhiMmQ1
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TaW1wbGVPcGVyYXRpb25UZXN0LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDIxMiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gU2ltcGxlT3Bl
cmF0aW9uVGVzdDoKLS8vICAgQmFzaWMgR0wgY29tbWFuZHMgc3VjaCBhcyBsaW5raW5nIGEgcHJv
Z3JhbSwgaW5pdGlhbGl6aW5nIGEgYnVmZmVyLCBldGMuCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxz
L0FOR0xFVGVzdC5oIgotCi0jaW5jbHVkZSA8dmVjdG9yPgotCi11c2luZyBuYW1lc3BhY2UgYW5n
bGU7Ci0KLW5hbWVzcGFjZQotewotCi1jbGFzcyBTaW1wbGVPcGVyYXRpb25UZXN0IDogcHVibGlj
IEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgU2ltcGxlT3BlcmF0aW9uVGVzdCgpCi0g
ICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwotICAgICAgICBzZXRXaW5kb3dIZWln
aHQoMTI4KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmln
R3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0
Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgIH0KLX07Ci0KLVRFU1RfUChTaW1wbGVPcGVyYXRpb25U
ZXN0LCBDb21waWxlVmVydGV4U2hhZGVyKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHNvdXJj
ZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFfaW5wdXQ7
Ci0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsX1Bvc2l0aW9u
ID0gYV9pbnB1dDsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICBHTHVpbnQgc2hhZGVyID0gQ29t
cGlsZVNoYWRlcihHTF9WRVJURVhfU0hBREVSLCBzb3VyY2UpOwotICAgIEVYUEVDVF9ORShzaGFk
ZXIsIDB1KTsKLSAgICBnbERlbGV0ZVNoYWRlcihzaGFkZXIpOwotCi0gICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci19Ci0KLVRFU1RfUChTaW1wbGVPcGVyYXRpb25UZXN0LCBDb21waWxlRnJhZ21l
bnRTaGFkZXIpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgc291cmNlID0gU0hBREVSX1NPVVJD
RQotICAgICgKLSAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Ci0gICAgICAgIHZhcnlp
bmcgdmVjNCB2X2lucHV0OwotICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBnbF9GcmFnQ29sb3IgPSB2X2lucHV0OwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIEdM
dWludCBzaGFkZXIgPSBDb21waWxlU2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgc291cmNlKTsK
LSAgICBFWFBFQ1RfTkUoc2hhZGVyLCAwdSk7Ci0gICAgZ2xEZWxldGVTaGFkZXIoc2hhZGVyKTsK
LQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi1URVNUX1AoU2ltcGxlT3BlcmF0aW9u
VGVzdCwgTGlua1Byb2dyYW0pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgdnNTb3VyY2UgPSBT
SEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKLSAgICAgICAg
fQotICAgICk7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmc1NvdXJjZSA9IFNIQURFUl9TT1VS
Q0UKLSAgICAoCi0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGds
X0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKLSAgICAgICAgfQotICAgICk7
Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzU291cmNlLCBmc1NvdXJj
ZSk7Ci0gICAgRVhQRUNUX05FKHByb2dyYW0sIDB1KTsKLSAgICBnbERlbGV0ZVByb2dyYW0ocHJv
Z3JhbSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotVEVTVF9QKFNpbXBsZU9w
ZXJhdGlvblRlc3QsIExpbmtQcm9ncmFtV2l0aFVuaWZvcm1zKQotewotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIHZzU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgdm9pZCBtYWlu
KCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDEuMCwgMS4wLCAx
LjAsIDEuMCk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnNT
b3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKLSAgICAgICAgdW5pZm9ybSB2ZWM0IHVfaW5wdXQ7Ci0gICAgICAgIHZvaWQgbWFpbigp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHVfaW5wdXQ7Ci0gICAgICAg
IH0KLSAgICApOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2c1NvdXJj
ZSwgZnNTb3VyY2UpOwotICAgIEVYUEVDVF9ORShwcm9ncmFtLCAwdSk7Ci0KLSAgICBHTGludCB1
bmlmb3JtTG9jID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVfaW5wdXQiKTsKLSAg
ICBFWFBFQ1RfTkUoLTEsIHVuaWZvcm1Mb2MpOwotCi0gICAgZ2xEZWxldGVQcm9ncmFtKHByb2dy
YW0pOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLVRFU1RfUChTaW1wbGVPcGVy
YXRpb25UZXN0LCBMaW5rUHJvZ3JhbVdpdGhBdHRyaWJ1dGVzKQotewotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIHZzU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgYXR0cmlidXRl
IHZlYzQgYV9pbnB1dDsKLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgZ2xfUG9zaXRpb24gPSBhX2lucHV0OwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIGZzU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgdm9p
ZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAs
IDEuMCwgMS4wLCAxLjApOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIEdMdWludCBwcm9ncmFt
ID0gQ29tcGlsZVByb2dyYW0odnNTb3VyY2UsIGZzU291cmNlKTsKLSAgICBFWFBFQ1RfTkUocHJv
Z3JhbSwgMHUpOwotCi0gICAgR0xpbnQgYXR0cmliTG9jID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihw
cm9ncmFtLCAiYV9pbnB1dCIpOwotICAgIEVYUEVDVF9ORSgtMSwgYXR0cmliTG9jKTsKLQotICAg
IGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwot
fQotCi1URVNUX1AoU2ltcGxlT3BlcmF0aW9uVGVzdCwgQnVmZmVyRGF0YVdpdGhEYXRhKQotewot
ICAgIEdMdWludCBidWZmZXI7Ci0gICAgZ2xHZW5CdWZmZXJzKDEsICZidWZmZXIpOwotICAgIGds
QmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7Ci0KLSAgICBzdGQ6OnZlY3Rvcjx1
aW50OF90PiBkYXRhKDEwMjQpOwotICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIGRh
dGEuc2l6ZSgpLCAmZGF0YVswXSwgR0xfU1RBVElDX0RSQVcpOwotCi0gICAgZ2xEZWxldGVCdWZm
ZXJzKDEsICZidWZmZXIpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLVRFU1Rf
UChTaW1wbGVPcGVyYXRpb25UZXN0LCBCdWZmZXJEYXRhV2l0aE5vRGF0YSkKLXsKLSAgICBHTHVp
bnQgYnVmZmVyOwotICAgIGdsR2VuQnVmZmVycygxLCAmYnVmZmVyKTsKLSAgICBnbEJpbmRCdWZm
ZXIoR0xfQVJSQVlfQlVGRkVSLCBidWZmZXIpOwotICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9C
VUZGRVIsIDEwMjQsIG51bGxwdHIsIEdMX1NUQVRJQ19EUkFXKTsKLSAgICBnbERlbGV0ZUJ1ZmZl
cnMoMSwgJmJ1ZmZlcik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotVEVTVF9Q
KFNpbXBsZU9wZXJhdGlvblRlc3QsIEJ1ZmZlclN1YkRhdGEpCi17Ci0gICAgR0x1aW50IGJ1ZmZl
cjsKLSAgICBnbEdlbkJ1ZmZlcnMoMSwgJmJ1ZmZlcik7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FS
UkFZX0JVRkZFUiwgYnVmZmVyKTsKLQotICAgIGNvbnN0IHNpemVfdCBidWZmZXJTaXplID0gMTAy
NDsKLSAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBidWZmZXJTaXplLCBudWxscHRy
LCBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICBjb25zdCBzaXplX3Qgc3ViRGF0YUNvdW50ID0gMTY7
Ci0gICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gZGF0YShidWZmZXJTaXplIC8gc3ViRGF0YUNvdW50
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN1YkRhdGFDb3VudDsgaSsrKQotICAgIHsK
LSAgICAgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgZGF0YS5zaXplKCkgKiBp
LCBkYXRhLnNpemUoKSwgJmRhdGFbMF0pOwotICAgIH0KLQotICAgIGdsRGVsZXRlQnVmZmVycygx
LCAmYnVmZmVyKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBVc2UgdGhp
cyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdo
aWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0
LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChTaW1wbGVPcGVyYXRpb25UZXN0LAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNE
MTEoRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5UX1BBVEhfQ09QWV9BTkdMRSksCi0gICAgICAgICAg
ICAgICAgICAgICAgIEVTMl9EM0QxMShFR0xfRVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9GQVNU
X0FOR0xFKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09Q
RU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwotCi19IC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1NpeHRlZW5C
cHBUZXh0dXJlVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xf
dGVzdHMvU2l4dGVlbkJwcFRleHR1cmVUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZGZjNDExMWQ3NTkyMGZjNTZmNGMzOGNmM2ExZTBlYmEyNGRiMzk4Mi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU2l4dGVlbkJwcFRleHR1cmVUZXN0LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDU1MSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
LS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gU2l4dGVlbkJwcFRleHR1cmVU
ZXN0OgotLy8gICBCYXNpYyB0ZXN0cyB1c2luZyAxNmJwcCB0ZXh0dXJlIGZvcm1hdHMgKGUuZy4g
R0xfUkdCNTY1KS4KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0jaW5jbHVk
ZSAidGVzdF91dGlscy9nbF9yYWlpLmgiCi0KLSNpbmNsdWRlICJpbWFnZV91dGlsL2ltYWdlZm9y
bWF0cy5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1HTENv
bG9yIENvbnZlcnQ1NjUoY29uc3QgUjVHNkI1ICZyZ2I1NjUpCi17Ci0gICAgZ2w6OkNvbG9yRiBj
b2xvcmY7Ci0gICAgUjVHNkI1OjpyZWFkQ29sb3IoJmNvbG9yZiwgJnJnYjU2NSk7Ci0gICAgVmVj
dG9yNCB2ZWNDb2xvcihjb2xvcmYucmVkLCBjb2xvcmYuZ3JlZW4sIGNvbG9yZi5ibHVlLCBjb2xv
cmYuYWxwaGEpOwotICAgIHJldHVybiBHTENvbG9yKHZlY0NvbG9yKTsKLX0KLQotUjVHNkI1IENv
bnZlcnQ1NjUoY29uc3QgR0xDb2xvciAmZ2xDb2xvcikKLXsKLSAgICBjb25zdCBWZWN0b3I0ICZ2
ZWNDb2xvciA9IGdsQ29sb3IudG9Ob3JtYWxpemVkVmVjdG9yKCk7Ci0gICAgZ2w6OkNvbG9yRiBj
b2xvcmYodmVjQ29sb3IueCwgdmVjQ29sb3IueSwgdmVjQ29sb3IueiwgdmVjQ29sb3Iudyk7Ci0g
ICAgUjVHNkI1IHJnYjU2NTsKLSAgICBSNUc2QjU6OndyaXRlQ29sb3IoJnJnYjU2NSwgJmNvbG9y
Zik7Ci0gICAgcmV0dXJuIHJnYjU2NTsKLX0KLQotY2xhc3MgU2l4dGVlbkJwcFRleHR1cmVUZXN0
IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgU2l4dGVlbkJwcFRleHR1
cmVUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7Ci0gICAgICAgIHNl
dFdpbmRvd0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAg
ICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwot
ICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgp
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQotICAg
ICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0gICAgICAgICAgICBh
dHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKLSAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29y
ZDsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24ueHksIDAuMCwgMS4wKTsKLSAgICAgICAg
ICAgICAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFk
ZXJTb3VyY2UyRCA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lz
aW9uIGhpZ2hwIGZsb2F0OwotICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4OwotICAg
ICAgICAgICAgdmFyeWluZyB2ZWMyIHRleGNvb3JkOwotCi0gICAgICAgICAgICB2b2lkIG1haW4o
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUy
RCh0ZXgsIHRleGNvb3JkKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBt
MkRQcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNo
YWRlclNvdXJjZTJEKTsKLSAgICAgICAgbVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0
VW5pZm9ybUxvY2F0aW9uKG0yRFByb2dyYW0sICJ0ZXgiKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRl
YXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtMkRQcm9n
cmFtKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgdm9p
ZCBzaW1wbGVWYWxpZGF0aW9uQmFzZShHTHVpbnQgdGV4KQotICAgIHsKLSAgICAgICAgLy8gRHJh
dyBhIHF1YWQgdXNpbmcgdGhlIHRleHR1cmUKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZG
RVJfQklUKTsKLSAgICAgICAgZ2xVc2VQcm9ncmFtKG0yRFByb2dyYW0pOwotICAgICAgICBnbFVu
aWZvcm0xaShtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uLCAwKTsKLSAgICAgICAgZHJhd1F1YWQo
bTJEUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotCi0gICAgICAgIGludCB3ID0gZ2V0V2luZG93V2lkdGgoKSAtIDE7Ci0gICAgICAgIGlu
dCBoID0gZ2V0V2luZG93SGVpZ2h0KCkgLSAxOwotCi0gICAgICAgIC8vIENoZWNrIHRoYXQgaXQg
ZHJldyBhcyBleHBlY3RlZAotICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xD
b2xvcjo6cmVkKTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKHcsIDAsIEdMQ29sb3I6
OmdyZWVuKTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIGgsIEdMQ29sb3I6OmJs
dWUpOwotICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEodywgaCwgR0xDb2xvcjo6eWVsbG93
KTsKLQotICAgICAgICAvLyBHZW5lcmF0ZSBtaXBtYXBzCi0gICAgICAgIGdsR2VuZXJhdGVNaXBt
YXAoR0xfVEVYVFVSRV8yRCk7Ci0KLSAgICAgICAgLy8gRHJhdyBhIHF1YWQgdXNpbmcgdGhlIHRl
eHR1cmUKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICAgICAgZ2xV
c2VQcm9ncmFtKG0yRFByb2dyYW0pOwotICAgICAgICBnbFVuaWZvcm0xaShtVGV4dHVyZTJEVW5p
Zm9ybUxvY2F0aW9uLCAwKTsKLSAgICAgICAgZHJhd1F1YWQobTJEUHJvZ3JhbSwgInBvc2l0aW9u
IiwgMC41Zik7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIC8vIENo
ZWNrIHRoYXQgaXQgZHJldyBhcyBleHBlY3RlZAotICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1Jf
RVEoMCwgMCwgR0xDb2xvcjo6cmVkKTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKHcs
IDAsIEdMQ29sb3I6OmdyZWVuKTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIGgs
IEdMQ29sb3I6OmJsdWUpOwotICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEodywgaCwgR0xD
b2xvcjo6eWVsbG93KTsKLQotICAgICAgICAvLyBCaW5kIHRoZSB0ZXh0dXJlIGFzIGEgZnJhbWVi
dWZmZXIsIHJlbmRlciB0byBpdCwgdGhlbiBjaGVjayB0aGUgcmVzdWx0cwotICAgICAgICBHTEZy
YW1lYnVmZmVyIGZibzsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIs
IGZiby5nZXQoKSk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCk7Ci0g
ICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FU
VEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXgsIDApOwotCi0gICAgICAgIGlmIChnbENoZWNr
RnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpICE9IEdMX0ZSQU1FQlVGRkVSX1VOU1VQ
UE9SVEVEKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwg
MC4wZiwgMS4wZik7Ci0gICAgICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwot
ICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDI1NSwgMCwgMCwgMjU1KTsKLSAgICAg
ICAgICAgIEVYUEVDVF9QSVhFTF9FUSgxLCAwLCAyNTUsIDAsIDAsIDI1NSk7Ci0gICAgICAgICAg
ICBFWFBFQ1RfUElYRUxfRVEoMSwgMSwgMjU1LCAwLCAwLCAyNTUpOwotICAgICAgICAgICAgRVhQ
RUNUX1BJWEVMX0VRKDAsIDEsIDI1NSwgMCwgMCwgMjU1KTsKLSAgICAgICAgfQotICAgICAgICBl
bHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiU2tpcHBpbmcgcmVuZGVy
aW5nIHRvIGFuIHVuc3VwcG9ydGVkIGZyYW1lYnVmZmVyIGZvcm1hdCIgPDwgc3RkOjplbmRsOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgR0x1aW50IG0yRFByb2dyYW07Ci0gICAgR0xpbnQgbVRl
eHR1cmUyRFVuaWZvcm1Mb2NhdGlvbjsKLX07Ci0KLWNsYXNzIFNpeHRlZW5CcHBUZXh0dXJlVGVz
dEVTMyA6IHB1YmxpYyBTaXh0ZWVuQnBwVGV4dHVyZVRlc3QKLXsKLX07Ci0KLS8vIFNpbXBsZSB2
YWxpZGF0aW9uIHRlc3QgZm9yIEdMX1JHQjU2NSB0ZXh0dXJlcy4KLS8vIFNhbXBsZXMgZnJvbSB0
aGUgdGV4dHVyZSwgcmVuZGVycyB0byBpdCwgZ2VuZXJhdGVzIG1pcG1hcHMgZXRjLgotVEVTVF9Q
KFNpeHRlZW5CcHBUZXh0dXJlVGVzdCwgUkdCNTY1VmFsaWRhdGlvbikKLXsKLSAgICAvLyBUaGVz
ZSB0ZXN0cyBmYWlsIG9uIGNlcnRhaW4gSW50ZWwgbWFjaGluZXMgcnVubmluZyBhbiB1bi11cGRh
dGVkIHZlcnNpb24gb2YgV2luNwotICAgIC8vIFRoZSB0ZXN0cyBwYXNzIGFmdGVyIGluc3RhbGxp
bmcgdGhlIGxhdGVzdCB1cGRhdGVzIGZyb20gV2luZG93cyBVcGRhdGUuCi0gICAgLy8gVE9ETzog
cmVlbmFibGUgdGhlc2UgdGVzdHMgb25jZSB0aGUgYm90cyBoYXZlIGJlZW4gdXBkYXRlZAotICAg
IGlmIChJc0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9B
TkdMRV9UWVBFX0QzRDExX0FOR0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IHNraXBwZWQgb24gSW50ZWwgRDNEMTEuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBHTHVpbnQgdGVzdDsKLSAgICBtZW1jcHkoJnRlc3QsICZHTENvbG9yOjpi
bGFjaywgNCk7Ci0KLSAgICBSNUc2QjUgcGl4ZWxzWzRdID0ge0NvbnZlcnQ1NjUoR0xDb2xvcjo6
cmVkKSwgQ29udmVydDU2NShHTENvbG9yOjpncmVlbiksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBDb252ZXJ0NTY1KEdMQ29sb3I6OmJsdWUpLCBDb252ZXJ0NTY1KEdMQ29sb3I6OnllbGxvdyl9
OwotCi0gICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDApOwotCi0gICAgLy8gQ3JlYXRlIGEgc2lt
cGxlIFJHQjU2NSB0ZXh0dXJlCi0gICAgR0xUZXh0dXJlIHRleDsKLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIHRleC5nZXQoKSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIEdMX1JHQiwgMiwgMiwgMCwgR0xfUkdCLCBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSwg
bnVsbHB0cik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICAvLyBTdXBwbHkgdGhlIGRhdGEgdG8gaXQKLSAgICBnbFRleFN1Yklt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMiwgMiwgR0xfUkdCLCBHTF9VTlNJR05FRF9T
SE9SVF81XzZfNSwgcGl4ZWxzKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIHNp
bXBsZVZhbGlkYXRpb25CYXNlKHRleC5nZXQoKSk7Ci19Ci0KLS8vIFNpbXBsZSB2YWxpZGF0aW9u
IHRlc3QgZm9yIEdMX1JHQkE1NTUxIHRleHR1cmVzLgotLy8gU2FtcGxlcyBmcm9tIHRoZSB0ZXh0
dXJlLCByZW5kZXJzIHRvIGl0LCBnZW5lcmF0ZXMgbWlwbWFwcyBldGMuCi1URVNUX1AoU2l4dGVl
bkJwcFRleHR1cmVUZXN0LCBSR0JBNTU1MVZhbGlkYXRpb24pCi17Ci0gICAgLy8gVGhlc2UgdGVz
dHMgZmFpbCBvbiBjZXJ0YWluIEludGVsIG1hY2hpbmVzIHJ1bm5pbmcgYW4gdW4tdXBkYXRlZCB2
ZXJzaW9uIG9mIFdpbjcKLSAgICAvLyBUaGUgdGVzdHMgcGFzcyBhZnRlciBpbnN0YWxsaW5nIHRo
ZSBsYXRlc3QgdXBkYXRlcyBmcm9tIFdpbmRvd3MgVXBkYXRlLgotICAgIC8vIFRPRE86IHJlZW5h
YmxlIHRoZXNlIHRlc3RzIG9uY2UgdGhlIGJvdHMgaGF2ZSBiZWVuIHVwZGF0ZWQKLSAgICBpZiAo
SXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9EM0QxMV9BTkdMRSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIG9uIEludGVsIEQzRDExLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgR0x1c2hvcnQgcGl4ZWxzWzRdID0KLSAgICB7Ci0gICAgICAgIDB4RjgwMSwgLy8g
UmVkCi0gICAgICAgIDB4MDdDMSwgLy8gR3JlZW4KLSAgICAgICAgMHgwMDNGLCAvLyBCbHVlCi0g
ICAgICAgIDB4RkZDMSAgLy8gUmVkICsgR3JlZW4KLSAgICB9OwotCi0gICAgLy8gQ3JlYXRlIGEg
c2ltcGxlIDU1NTEgdGV4dHVyZQotICAgIEdMVGV4dHVyZSB0ZXg7Ci0gICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCB0ZXguZ2V0KCkpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCBHTF9SR0JBLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF81XzVf
NV8xLCBudWxscHRyKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVY
VFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKLQotICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAw
LCAwLCAyLCAyLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xLCBwaXhlbHMpOwot
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgc2ltcGxlVmFsaWRhdGlvbkJhc2UodGV4
LmdldCgpKTsKLX0KLQotLy8gVGVzdCB0byBlbnN1cmUgY2FsbGluZyBDbGVhcigpIG9uIGFuIFJH
QkE1NTUxIHRleHR1cmUgZG9lcyBzb21ldGhpbmcgcmVhc29uYWJsZQotLy8gQmFzZWQgb24gV2Vi
R0wgdGVzdCBjb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLWF0dGFjaG1lbnQtZm9ybWF0cy5o
dG1sCi1URVNUX1AoU2l4dGVlbkJwcFRleHR1cmVUZXN0LCBSR0JBNTU1MUNsZWFyQWxwaGEpCi17
Ci0gICAgLy8gVGhlc2UgdGVzdHMgZmFpbCBvbiBjZXJ0YWluIEludGVsIG1hY2hpbmVzIHJ1bm5p
bmcgYW4gdW4tdXBkYXRlZCB2ZXJzaW9uIG9mIFdpbjcKLSAgICAvLyBUaGUgdGVzdHMgcGFzcyBh
ZnRlciBpbnN0YWxsaW5nIHRoZSBsYXRlc3QgdXBkYXRlcyBmcm9tIFdpbmRvd3MgVXBkYXRlLgot
ICAgIC8vIFRPRE86IHJlZW5hYmxlIHRoZXNlIHRlc3RzIG9uY2UgdGhlIGJvdHMgaGF2ZSBiZWVu
IHVwZGF0ZWQKLSAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIEQzRDExLiIgPDwgc3RkOjplbmRsOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xUZXh0dXJlIHRleDsKLSAgICBHTEZyYW1lYnVm
ZmVyIGZibzsKLQotICAgIC8vIENyZWF0ZSBhIHNpbXBsZSA1NTUxIHRleHR1cmUKLSAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleC5nZXQoKSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX1NI
T1JUXzVfNV81XzEsIG51bGxwdHIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gQmluZCB0aGUgdGV4dHVyZSBhcyBhIGZy
YW1lYnVmZmVyLCBjbGVhciBpdCwgdGhlbiBjaGVjayB0aGUgcmVzdWx0cwotICAgIGdsQmluZEZy
YW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8uZ2V0KCkpOwotICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgMCk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJV
RkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleC5nZXQoKSwgMCk7
Ci0KLSAgICBpZiAoZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSAhPSBH
TF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCkKLSAgICB7Ci0gICAgICAgIGdsQ2xlYXJDb2xvcigw
LjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJf
QklUKTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDAsIDAsIDApOwotCi0gICAg
ICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKLSAgICAgICAgZ2xDbGVh
cihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAs
IDAsIDAsIDI1NSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8
PCAiU2tpcHBpbmcgcmVuZGVyaW5nIHRvIGFuIHVuc3VwcG9ydGVkIGZyYW1lYnVmZmVyIGZvcm1h
dCIgPDwgc3RkOjplbmRsOwotICAgIH0KLX0KLQotLy8gU2ltcGxlIHZhbGlkYXRpb24gdGVzdCBm
b3IgR0xfUkdCQTQ0NDQgdGV4dHVyZXMuCi0vLyBTYW1wbGVzIGZyb20gdGhlIHRleHR1cmUsIHJl
bmRlcnMgdG8gaXQsIGdlbmVyYXRlcyBtaXBtYXBzIGV0Yy4KLVRFU1RfUChTaXh0ZWVuQnBwVGV4
dHVyZVRlc3QsIFJHQkE0NDQ0VmFsaWRhdGlvbikKLXsKLSAgICAvLyBUaGVzZSB0ZXN0cyBmYWls
IG9uIGNlcnRhaW4gSW50ZWwgbWFjaGluZXMgcnVubmluZyBhbiB1bi11cGRhdGVkIHZlcnNpb24g
b2YgV2luNwotICAgIC8vIFRoZSB0ZXN0cyBwYXNzIGFmdGVyIGluc3RhbGxpbmcgdGhlIGxhdGVz
dCB1cGRhdGVzIGZyb20gV2luZG93cyBVcGRhdGUuCi0gICAgLy8gVE9ETzogcmVlbmFibGUgdGhl
c2UgdGVzdHMgb25jZSB0aGUgYm90cyBoYXZlIGJlZW4gdXBkYXRlZAotICAgIGlmIChJc0ludGVs
KCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0Qz
RDExX0FOR0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24g
SW50ZWwgRDNEMTEuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBHTHVzaG9ydCBwaXhlbHNbNF0gPQotICAgIHsKLSAgICAgICAgMHhGMDBGLCAvLyBSZWQKLSAg
ICAgICAgMHgwRjBGLCAvLyBHcmVlbgotICAgICAgICAweDAwRkYsIC8vIEJsdWUKLSAgICAgICAg
MHhGRjBGICAvLyBSZWQgKyBHcmVlbgotICAgIH07Ci0KLSAgICBnbENsZWFyQ29sb3IoMCwgMCwg
MCwgMCk7Ci0KLSAgICAvLyBHZW5lcmF0ZSBhIFJHQkE0NDQ0IHRleHR1cmUsIG5vIG1pcG1hcHMK
LSAgICBHTFRleHR1cmUgdGV4OwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4
LmdldCgpKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMiwg
MiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNCwgbnVsbHB0cik7Ci0gICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xf
TkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICAvLyBQcm92aWRlIHNvbWUgZGF0YSBmb3IgdGhlIHRleHR1cmUKLSAgICBnbFRleFN1YkltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMiwgMiwgR0xfUkdCQSwgR0xfVU5TSUdORURfU0hP
UlRfNF80XzRfNCwgcGl4ZWxzKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIHNp
bXBsZVZhbGlkYXRpb25CYXNlKHRleC5nZXQoKSk7Ci19Ci0KLS8vIFRlc3QgdXBsb2FkaW5nIFJH
QkE4IGRhdGEgdG8gUkdCQTQgdGV4dHVyZXMuCi1URVNUX1AoU2l4dGVlbkJwcFRleHR1cmVUZXN0
RVMzLCBSR0JBNFVwbG9hZFJHQkE4KQotewotICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IGZvdXJD
b2xvcnM7Ci0gICAgZm91ckNvbG9ycy5wdXNoX2JhY2soR0xDb2xvcjo6cmVkKTsKLSAgICBmb3Vy
Q29sb3JzLnB1c2hfYmFjayhHTENvbG9yOjpncmVlbik7Ci0gICAgZm91ckNvbG9ycy5wdXNoX2Jh
Y2soR0xDb2xvcjo6Ymx1ZSk7Ci0gICAgZm91ckNvbG9ycy5wdXNoX2JhY2soR0xDb2xvcjo6eWVs
bG93KTsKLQotICAgIEdMVGV4dHVyZSB0ZXg7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCB0ZXguZ2V0KCkpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9S
R0JBNCwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgZm91ckNvbG9ycy5kYXRh
KCkpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9G
SUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotICAgIHNpbXBsZVZhbGlkYXRpb25CYXNlKHRleC5nZXQoKSk7Ci19Ci0KLS8vIFRlc3Qg
dXBsb2FkaW5nIFJHQjggZGF0YSB0byBSR0I1NjUgdGV4dHVyZXMuCi1URVNUX1AoU2l4dGVlbkJw
cFRleHR1cmVUZXN0RVMzLCBSR0I1NjVVcGxvYWRSR0I4KQotewotICAgIHN0ZDo6dmVjdG9yPEdM
Q29sb3JSR0I+IGZvdXJDb2xvcnM7Ci0gICAgZm91ckNvbG9ycy5wdXNoX2JhY2soR0xDb2xvclJH
Qjo6cmVkKTsKLSAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayhHTENvbG9yUkdCOjpncmVlbik7Ci0g
ICAgZm91ckNvbG9ycy5wdXNoX2JhY2soR0xDb2xvclJHQjo6Ymx1ZSk7Ci0gICAgZm91ckNvbG9y
cy5wdXNoX2JhY2soR0xDb2xvclJHQjo6eWVsbG93KTsKLQotICAgIGdsUGl4ZWxTdG9yZWkoR0xf
VU5QQUNLX0FMSUdOTUVOVCwgMSk7Ci0KLSAgICBHTFRleHR1cmUgdGV4OwotICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4LmdldCgpKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgR0xfUkdCNTY1LCAyLCAyLCAwLCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUs
IGZvdXJDb2xvcnMuZGF0YSgpKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIHNpbXBsZVZhbGlkYXRpb25CYXNlKHRleC5nZXQo
KSk7Ci19Ci0KLS8vIFRlc3QgdXBsb2FkaW5nIFJHQkE4IGRhdGEgdG8gUkdCNUE0MSB0ZXh0dXJl
cy4KLVRFU1RfUChTaXh0ZWVuQnBwVGV4dHVyZVRlc3RFUzMsIFJHQjVBMVVwbG9hZFJHQkE4KQot
ewotICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IGZvdXJDb2xvcnM7Ci0gICAgZm91ckNvbG9ycy5w
dXNoX2JhY2soR0xDb2xvcjo6cmVkKTsKLSAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayhHTENvbG9y
OjpncmVlbik7Ci0gICAgZm91ckNvbG9ycy5wdXNoX2JhY2soR0xDb2xvcjo6Ymx1ZSk7Ci0gICAg
Zm91ckNvbG9ycy5wdXNoX2JhY2soR0xDb2xvcjo6eWVsbG93KTsKLQotICAgIEdMVGV4dHVyZSB0
ZXg7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXguZ2V0KCkpOwotICAgIGds
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0I1X0ExLCAyLCAyLCAwLCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICBmb3VyQ29sb3JzLmRhdGEoKSk7
Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRF
UiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
Ci0gICAgc2ltcGxlVmFsaWRhdGlvbkJhc2UodGV4LmdldCgpKTsKLX0KLQotLy8gVGVzdCB1cGxv
YWRpbmcgUkdCMTBBMiBkYXRhIHRvIFJHQjVBMSB0ZXh0dXJlcy4KLVRFU1RfUChTaXh0ZWVuQnBw
VGV4dHVyZVRlc3RFUzMsIFJHQjVBMVVwbG9hZFJHQjEwQTIpCi17Ci0gICAgc3RydWN0IFJHQjEw
QTIKLSAgICB7Ci0gICAgICAgIFJHQjEwQTIodWludDMyX3QgciwgdWludDMyX3QgZywgdWludDMy
X3QgYiwgdWludDMyX3QgYSkgOiBSKHIpLCBHKGcpLCBCKGIpLCBBKGEpIHt9Ci0KLSAgICAgICAg
dWludDMyX3QgUiA6IDEwOwotICAgICAgICB1aW50MzJfdCBHIDogMTA7Ci0gICAgICAgIHVpbnQz
Ml90IEIgOiAxMDsKLSAgICAgICAgdWludDMyX3QgQSA6IDI7Ci0gICAgfTsKLQotICAgIHVpbnQz
Ml90IG9uZTEwID0gKDF1IDw8IDEwdSkgLSAxdTsKLQotICAgIFJHQjEwQTIgcmVkKG9uZTEwLCAw
dSwgMHUsIDB4M3UpOwotICAgIFJHQjEwQTIgZ3JlZW4oMHUsIG9uZTEwLCAwdSwgMHgzdSk7Ci0g
ICAgUkdCMTBBMiBibHVlKDB1LCAwdSwgb25lMTAsIDB4M3UpOwotICAgIFJHQjEwQTIgeWVsbG93
KG9uZTEwLCBvbmUxMCwgMHUsIDB4M3UpOwotCi0gICAgc3RkOjp2ZWN0b3I8UkdCMTBBMj4gZm91
ckNvbG9yczsKLSAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayhyZWQpOwotICAgIGZvdXJDb2xvcnMu
cHVzaF9iYWNrKGdyZWVuKTsKLSAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayhibHVlKTsKLSAgICBm
b3VyQ29sb3JzLnB1c2hfYmFjayh5ZWxsb3cpOwotCi0gICAgR0xUZXh0dXJlIHRleDsKLSAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleC5nZXQoKSk7Ci0gICAgZ2xUZXhJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQjVfQTEsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lH
TkVEX0lOVF8yXzEwXzEwXzEwX1JFViwKLSAgICAgICAgICAgICAgICAgZm91ckNvbG9ycy5kYXRh
KCkpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9G
SUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotICAgIHNpbXBsZVZhbGlkYXRpb25CYXNlKHRleC5nZXQoKSk7Ci19Ci0KLS8vIFRlc3Qg
cmVhZGluZyBmcm9tIFJHQkE0IHRleHR1cmVzIGF0dGFjaGVkIHRvIEZCTy4KLVRFU1RfUChTaXh0
ZWVuQnBwVGV4dHVyZVRlc3RFUzMsIFJHQkE0RnJhbWVidWZmZXJSZWFkYmFjaykKLXsKLSAgICAv
LyBUT0RPKGptYWRpbGwpOiBGaXggYnVnIHdpdGggR0xFUwotICAgIGlmIChJc09wZW5HTEVTKCkp
Ci0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBHTEVTLiIgPDwg
c3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgVmVjdG9yNCByYXdDb2xv
cigwLjVmLCAwLjdmLCAxLjBmLCAwLjBmKTsKLSAgICBHTENvbG9yIGV4cGVjdGVkQ29sb3IocmF3
Q29sb3IpOwotCi0gICAgR0xGcmFtZWJ1ZmZlciBmYm87Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIGZiby5nZXQoKSk7Ci0KLSAgICBHTFRleHR1cmUgdGV4OwotICAgIGds
QmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4LmdldCgpKTsKLSAgICBnbFRleEltYWdlMkQo
R0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTQsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsIG51bGxwdHIpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZG
RVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXguZ2V0KCksIDApOwot
Ci0gICAgZ2xDbGVhckNvbG9yKHJhd0NvbG9yLngsIHJhd0NvbG9yLnksIHJhd0NvbG9yLnosIHJh
d0NvbG9yLncpOwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKLQotICAgIEdMZW51bSBjb2xvclJlYWRGb3JtYXQgPSBHTF9OT05F
OwotICAgIEdMZW51bSBjb2xvclJlYWRUeXBlICAgPSBHTF9OT05FOwotICAgIGdsR2V0SW50ZWdl
cnYoR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQsIHJlaW50ZXJwcmV0X2Nhc3Q8
R0xpbnQgKj4oJmNvbG9yUmVhZEZvcm1hdCkpOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfSU1QTEVN
RU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFLCByZWludGVycHJldF9jYXN0PEdMaW50ICo+KCZjb2xv
clJlYWRUeXBlKSk7Ci0KLSAgICBpZiAoY29sb3JSZWFkRm9ybWF0ID09IEdMX1JHQkEgJiYgY29s
b3JSZWFkVHlwZSA9PSBHTF9VTlNJR05FRF9CWVRFKQotICAgIHsKLSAgICAgICAgR0xDb2xvciBh
Y3R1YWxDb2xvciA9IEdMQ29sb3I6OmJsYWNrOwotICAgICAgICBnbFJlYWRQaXhlbHMoMCwgMCwg
MSwgMSwgY29sb3JSZWFkRm9ybWF0LCBjb2xvclJlYWRUeXBlLCAmYWN0dWFsQ29sb3IpOwotICAg
ICAgICBFWFBFQ1RfQ09MT1JfTkVBUihleHBlY3RlZENvbG9yLCBhY3R1YWxDb2xvciwgMjApOwot
ICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBBU1NFUlRfR0xFTlVNX0VRKEdMX1JHQkEs
IGNvbG9yUmVhZEZvcm1hdCk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKGNvbG9yUmVhZFR5cGUgPT0g
R0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhUIHx8Ci0gICAgICAgICAgICAgICAgICAg
IGNvbG9yUmVhZFR5cGUgPT0gR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNCk7Ci0KLSAgICAgICAg
dWludDE2X3QgcmdiYSA9IDA7Ci0gICAgICAgIGdsUmVhZFBpeGVscygwLCAwLCAxLCAxLCBjb2xv
clJlYWRGb3JtYXQsIGNvbG9yUmVhZFR5cGUsICZyZ2JhKTsKLQotICAgICAgICBHTHVieXRlIHI4
ID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oKHJnYmEgJiAweEYwMDApID4+IDEyKTsKLSAgICAgICAg
R0x1Ynl0ZSBnOCA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+KChyZ2JhICYgMHgwRjAwKSA+PiA4KTsK
LSAgICAgICAgR0x1Ynl0ZSBiOCA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+KChyZ2JhICYgMHgwMEYw
KSA+PiA0KTsKLSAgICAgICAgR0x1Ynl0ZSBhOCA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+KChyZ2Jh
ICYgMHgwMDBGKSk7Ci0KLSAgICAgICAgR0xDb2xvciBhY3R1YWxDb2xvcihyOCA8PCA0LCBnOCA8
PCA0LCBiOCA8PCA0LCBhOCA8PCA0KTsKLSAgICAgICAgRVhQRUNUX0NPTE9SX05FQVIoZXhwZWN0
ZWRDb2xvciwgYWN0dWFsQ29sb3IsIDIwKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKLX0KLQotLy8gVGVzdCByZWFkaW5nIGZyb20gUkdCNTY1IHRleHR1cmVzIGF0dGFjaGVk
IHRvIEZCTy4KLVRFU1RfUChTaXh0ZWVuQnBwVGV4dHVyZVRlc3RFUzMsIFJHQjU2NUZyYW1lYnVm
ZmVyUmVhZGJhY2spCi17Ci0gICAgLy8gVE9ETyhqbWFkaWxsKTogRml4IGJ1ZyB3aXRoIEdMRVMK
LSAgICBpZiAoSXNPcGVuR0xFUygpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IHNraXBwZWQgb24gR0xFUy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIEdMRnJhbWVidWZmZXIgZmJvOwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCBmYm8uZ2V0KCkpOwotCi0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gZm91ckNvbG9y
czsKLSAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayhHTENvbG9yOjpyZWQpOwotICAgIGZvdXJDb2xv
cnMucHVzaF9iYWNrKEdMQ29sb3I6OmdyZWVuKTsKLSAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayhH
TENvbG9yOjpibHVlKTsKLSAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayhHTENvbG9yOjp3aGl0ZSk7
Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U2hhZGVyID0KLSAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIgotICAgICAgICAiaW4gdmVjNCBjb2xvcjtcbiIKLSAgICAgICAgImluIHZl
YzIgcG9zaXRpb247XG4iCi0gICAgICAgICJvdXQgdmVjNCBmY29sb3I7XG4iCi0gICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICAgZmNvbG9yID0gY29sb3I7XG4iCi0gICAgICAg
ICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLjUsIDEuMCk7XG4iCi0gICAgICAg
ICJ9IjsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXIgPQotICAgICAgICAi
I3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJpbiBtZWRpdW1wIHZlYzQgZmNvbG9yO1xuIgot
ICAgICAgICAib3V0IG1lZGl1bXAgdmVjNCBjb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKLSAgICAgICAgIiAgICBjb2xvciA9IGZjb2xvcjtcbiIKLSAgICAgICAgIn0iOwotCi0g
ICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50
U2hhZGVyKTsKLSAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7Ci0KLSAgICBHTGludCBjb2xvckxv
Y2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAiY29sb3IiKTsKLSAgICBBU1NF
UlRfTkUoLTEsIGNvbG9yTG9jYXRpb24pOwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXko
Y29sb3JMb2NhdGlvbik7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGNvbG9yTG9jYXRpb24s
IDQsIEdMX1VOU0lHTkVEX0JZVEUsIEdMX1RSVUUsIDAsIGZvdXJDb2xvcnMuZGF0YSgpKTsKLQot
ICAgIGludCB3ID0gZ2V0V2luZG93V2lkdGgoKTsKLSAgICBpbnQgaCA9IGdldFdpbmRvd0hlaWdo
dCgpOwotCi0gICAgZ2xWaWV3cG9ydCgwLCAwLCB3LCBoKTsKLQotICAgIEdMVGV4dHVyZSB0ZXg7
Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXguZ2V0KCkpOwotICAgIGdsVGV4
SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0I1NjUsIHcsIGgsIDAsIEdMX1JHQiwgR0xf
VU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9G
UkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleC5nZXQo
KSwgMCk7Ci0KLSAgICBkcmF3SW5kZXhlZFF1YWQocHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7
Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGludCB0ID0gMTI7Ci0gICAgRVhQ
RUNUX1BJWEVMX0NPTE9SX05FQVIoMCwgaCAtIDEsIEdMQ29sb3I6OnJlZCwgdCk7Ci0gICAgRVhQ
RUNUX1BJWEVMX0NPTE9SX05FQVIoMCwgMCwgR0xDb2xvcjo6Z3JlZW4sIHQpOwotICAgIEVYUEVD
VF9QSVhFTF9DT0xPUl9ORUFSKHcgLSAxLCAwLCBHTENvbG9yOjpibHVlLCB0KTsKLSAgICBFWFBF
Q1RfUElYRUxfQ09MT1JfTkVBUih3IC0gMSwgaCAtIDEsIEdMQ29sb3I6OndoaXRlLCB0KTsKLQot
ICAgIEdMZW51bSBjb2xvclJlYWRGb3JtYXQgPSBHTF9OT05FOwotICAgIEdMZW51bSBjb2xvclJl
YWRUeXBlICAgPSBHTF9OT05FOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfSU1QTEVNRU5UQVRJT05f
Q09MT1JfUkVBRF9GT1JNQVQsIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQgKj4oJmNvbG9yUmVhZEZv
cm1hdCkpOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9U
WVBFLCByZWludGVycHJldF9jYXN0PEdMaW50ICo+KCZjb2xvclJlYWRUeXBlKSk7Ci0KLSAgICBp
ZiAoY29sb3JSZWFkRm9ybWF0ID09IEdMX1JHQiAmJiBjb2xvclJlYWRUeXBlID09IEdMX1VOU0lH
TkVEX1NIT1JUXzVfNl81KQotICAgIHsKLSAgICAgICAgc3RkOjp2ZWN0b3I8UjVHNkI1PiByZWFk
Q29sb3JzKHcgKiBoKTsKLSAgICAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIHcsIGgsIEdMX1JHQiwg
R0xfVU5TSUdORURfU0hPUlRfNV82XzUsIHJlYWRDb2xvcnMuZGF0YSgpKTsKLQotICAgICAgICBp
bnQgaG9mZnNldCA9IChoIC0gMSkgKiB3OwotICAgICAgICBFWFBFQ1RfQ09MT1JfTkVBUihHTENv
bG9yOjpyZWQsIENvbnZlcnQ1NjUocmVhZENvbG9yc1tob2Zmc2V0XSksIHQpOwotICAgICAgICBF
WFBFQ1RfQ09MT1JfTkVBUihHTENvbG9yOjpncmVlbiwgQ29udmVydDU2NShyZWFkQ29sb3JzWzBd
KSwgdCk7Ci0gICAgICAgIEVYUEVDVF9DT0xPUl9ORUFSKEdMQ29sb3I6OmJsdWUsIENvbnZlcnQ1
NjUocmVhZENvbG9yc1t3IC0gMV0pLCB0KTsKLSAgICAgICAgRVhQRUNUX0NPTE9SX05FQVIoR0xD
b2xvcjo6d2hpdGUsIENvbnZlcnQ1NjUocmVhZENvbG9yc1t3IC0gMSArIGhvZmZzZXRdKSwgdCk7
Ci0gICAgfQotCi0gICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOwotfQotCi0vLyBVc2UgdGhp
cyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdo
aWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0
LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChTaXh0ZWVuQnBwVGV4dHVyZVRlc3QsCi0gICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9E
M0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBF
UzJfT1BFTkdMRVMoKSk7Ci0KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoU2l4dGVlbkJwcFRleHR1
cmVUZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7Ci0K
LX0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvU3RhdGVDaGFuZ2VUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TdGF0ZUNoYW5nZVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0MzlhNzg0MzljODFiZDI2ODdmZDQ4MTBkODgzMzllOWFhODgwNmNl
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TdGF0ZUNoYW5nZVRlc3QuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsNTkxICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBTdGF0ZUNoYW5nZVRl
c3Q6Ci0vLyAgIFNwZWNpZmljYWxseSBkZXNpZ25lZCBmb3IgYW4gQU5HTEUgaW1wbGVtZW50YXRp
b24gb2YgR0wsIHRoZXNlIHRlc3RzIHZhbGlkYXRlIHRoYXQKLS8vICAgQU5HTEUncyBkaXJ0eSBi
aXRzIHN5c3RlbXMgZG9uJ3QgZ2V0IGNvbmZ1c2VkIGJ5IGNlcnRhaW4gc2VxdWVuY2VzIG9mIHN0
YXRlIGNoYW5nZXMuCi0vLwotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLSNp
bmNsdWRlICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwot
Ci1uYW1lc3BhY2UKLXsKLQotY2xhc3MgU3RhdGVDaGFuZ2VUZXN0IDogcHVibGljIEFOR0xFVGVz
dAotewotICBwcm90ZWN0ZWQ6Ci0gICAgU3RhdGVDaGFuZ2VUZXN0KCkKLSAgICB7Ci0gICAgICAg
IHNldFdpbmRvd1dpZHRoKDY0KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDY0KTsKLSAgICAg
ICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwot
ICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRz
KDgpOwotCi0gICAgICAgIC8vIEVuYWJsZSB0aGUgbm8gZXJyb3IgZXh0ZW5zaW9uIHRvIGF2b2lk
IHN5bmNpbmcgdGhlIEZCTyBzdGF0ZSBvbiB2YWxpZGF0aW9uLgotICAgICAgICBzZXROb0Vycm9y
RW5hYmxlZCh0cnVlKTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBnbEdlbkZyYW1lYnVmZmVy
cygxLCAmbUZyYW1lYnVmZmVyKTsKLSAgICAgICAgZ2xHZW5UZXh0dXJlcygyLCBtVGV4dHVyZXMu
ZGF0YSgpKTsKLSAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtUmVuZGVyYnVmZmVyKTsK
LQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJE
b3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmIChtRnJhbWVidWZmZXIgIT0gMCkKLSAg
ICAgICAgewotICAgICAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1GcmFtZWJ1ZmZl
cik7Ci0gICAgICAgICAgICBtRnJhbWVidWZmZXIgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAg
aWYgKCFtVGV4dHVyZXMuZW1wdHkoKSkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xEZWxldGVU
ZXh0dXJlcyhzdGF0aWNfY2FzdDxHTHNpemVpPihtVGV4dHVyZXMuc2l6ZSgpKSwgbVRleHR1cmVz
LmRhdGEoKSk7Ci0gICAgICAgICAgICBtVGV4dHVyZXMuY2xlYXIoKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbVJlbmRlcmJ1ZmZlcik7Ci0KLSAgICAg
ICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQotICAgIEdMdWludCBtRnJhbWVidWZm
ZXIgICAgICAgICAgID0gMDsKLSAgICBHTHVpbnQgbVJlbmRlcmJ1ZmZlciAgICAgICAgICA9IDA7
Ci0gICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBtVGV4dHVyZXMgPSB7MCwgMH07Ci19OwotCi1jbGFz
cyBTdGF0ZUNoYW5nZVRlc3RFUzMgOiBwdWJsaWMgU3RhdGVDaGFuZ2VUZXN0Ci17Ci0gIHByb3Rl
Y3RlZDoKLSAgICBTdGF0ZUNoYW5nZVRlc3RFUzMoKSB7fQotfTsKLQotfSAgLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQotCi0vLyBFbnN1cmUgdGhhdCBDb3B5VGV4SW1hZ2UyRCBzeW5jcyBmcmFtZWJ1
ZmZlciBjaGFuZ2VzLgotVEVTVF9QKFN0YXRlQ2hhbmdlVGVzdCwgQ29weVRleEltYWdlMkRTeW5j
KQotewotICAgIGlmIChJc0FNRCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExB
VEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCi0gICAgewotICAgICAgICAvLyBUT0RPKGdl
b2ZmbGFuZyk6IEZpeCBvbiBMaW51eCBBTUQgZHJpdmVycyAoaHR0cDovL2FuZ2xlYnVnLmNvbS8x
MjkxKQotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gQU1EIE9wZW5HTC4i
IDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOwotCi0gICAgLy8gSW5pdCBmaXJz
dCB0ZXh0dXJlIHRvIHJlZAotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1
cmVzWzBdKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMTYs
IDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLSAgICBnbEZyYW1l
YnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xf
VEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdLCAwKTsKLSAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4w
ZiwgMC4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICBF
WFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1LCAwLCAwLCAyNTUpOwotCi0gICAgLy8gSW5pdCBzZWNv
bmQgdGV4dHVyZSB0byBncmVlbgotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRl
eHR1cmVzWzFdKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwg
MTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLSAgICBnbEZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwg
R0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdLCAwKTsKLSAgICBnbENsZWFyQ29sb3IoMC4wZiwg
MS4wZiwgMC4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAg
ICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwgMjU1LCAwLCAyNTUpOwotCi0gICAgLy8gQ29weSBp
biB0aGUgcmVkIHRleHR1cmUgdG8gdGhlIGdyZWVuIG9uZS4KLSAgICAvLyBDb3B5VGV4SW1hZ2Ug
c2hvdWxkIHN5bmMgdGhlIGZyYW1lYnVmZmVyIGF0dGFjaG1lbnQgY2hhbmdlLgotICAgIGdsRnJh
bWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBH
TF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sIDApOwotICAgIGdsQ29weVRleEltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMCwgMCwgMTYsIDE2LCAwKTsKLSAgICBnbEZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVY
VFVSRV8yRCwgbVRleHR1cmVzWzFdLCAwKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1
LCAwLCAwLCAyNTUpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIEVuc3Vy
ZSB0aGF0IENvcHlUZXhTdWJJbWFnZTJEIHN5bmNzIGZyYW1lYnVmZmVyIGNoYW5nZXMuCi1URVNU
X1AoU3RhdGVDaGFuZ2VUZXN0LCBDb3B5VGV4U3ViSW1hZ2UyRFN5bmMpCi17Ci0gICAgZ2xCaW5k
RnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcik7Ci0KLSAgICAvLyBJbml0
IGZpcnN0IHRleHR1cmUgdG8gcmVkCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBt
VGV4dHVyZXNbMF0pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JB
LCAxNiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotICAgIGds
RnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQw
LCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sIDApOwotICAgIGdsQ2xlYXJDb2xvcigxLjBm
LCAwLjBmLCAwLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwot
ICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7Ci0KLSAgICAvLyBJbml0
IHNlY29uZCB0ZXh0dXJlIHRvIGdyZWVuCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBtVGV4dHVyZXNbMV0pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9S
R0JBLCAxNiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotICAg
IGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1F
TlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0sIDApOwotICAgIGdsQ2xlYXJDb2xvcigw
LjBmLCAxLjBmLCAwLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQp
OwotICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAwLCAyNTUsIDAsIDI1NSk7Ci0KLSAgICAvLyBD
b3B5IGluIHRoZSByZWQgdGV4dHVyZSB0byB0aGUgZ3JlZW4gb25lLgotICAgIC8vIENvcHlUZXhJ
bWFnZSBzaG91bGQgc3luYyB0aGUgZnJhbWVidWZmZXIgYXR0YWNobWVudCBjaGFuZ2UuCi0gICAg
Z2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVO
VDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7Ci0gICAgZ2xDb3B5VGV4U3ViSW1h
Z2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAwLCAwLCAxNiwgMTYpOwotICAgIGdsRnJhbWVi
dWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9U
RVhUVVJFXzJELCBtVGV4dHVyZXNbMV0sIDApOwotICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAy
NTUsIDAsIDAsIDI1NSk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVz
dCB0aGF0IEZyYW1lYnVmZmVyIGNvbXBsZXRlbmVzcyBjYWNoaW5nIHdvcmtzIHdoZW4gY29sb3Ig
YXR0YWNobWVudHMgY2hhbmdlLgotVEVTVF9QKFN0YXRlQ2hhbmdlVGVzdCwgRnJhbWVidWZmZXJJ
bmNvbXBsZXRlQ29sb3JBdHRhY2htZW50KQotewotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZS
QU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmVzWzBdKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xf
UkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLSAg
ICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hN
RU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdLCAwKTsKLSAgICBFWFBFQ1RfR0xFTlVN
X0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xf
RlJBTUVCVUZGRVIpKTsKLQotICAgIC8vIENoYW5nZSB0aGUgdGV4dHVyZSBhdCBjb2xvciBhdHRh
Y2htZW50IDAgdG8gYmUgbm9uLWNvbG9yLXJlbmRlcmFibGUuCi0gICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIEdMX0FMUEhBLCAxNiwgMTYsIDAsIEdMX0FMUEhBLCBHTF9VTlNJR05F
RF9CWVRFLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0lO
Q09NUExFVEVfQVRUQUNITUVOVCwKLSAgICAgICAgICAgICAgICAgICAgIGdsQ2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
Ci19Ci0KLS8vIFRlc3QgdGhhdCBjYWNoaW5nIHdvcmtzIHdoZW4gY29sb3IgYXR0YWNobWVudHMg
Y2hhbmdlIHdpdGggVGV4U3RvcmFnZS4KLVRFU1RfUChTdGF0ZUNoYW5nZVRlc3QsIEZyYW1lYnVm
ZmVySW5jb21wbGV0ZVdpdGhUZXhTdG9yYWdlKQotewotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfRVhUX3RleHR1cmVfc3RvcmFnZSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBUZXhTdG9yYWdlMkRFWFQgbm90IGF2YWlsYWJsZS4iIDw8
IHN0ZDo6ZW5kbDsKLSAgICB9Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgbUZyYW1lYnVmZmVyKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0
dXJlc1swXSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDE2
LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0gICAgZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9G
UkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVG
RkVSKSk7Ci0KLSAgICAvLyBDaGFuZ2UgdGhlIHRleHR1cmUgYXQgY29sb3IgYXR0YWNobWVudCAw
IHRvIGJlIG5vbi1jb2xvci1yZW5kZXJhYmxlLgotICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RF
WFRVUkVfMkQsIDEsIEdMX0FMUEhBOF9FWFQsIDE2LCAxNik7Ci0gICAgRVhQRUNUX0dMRU5VTV9F
UShHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQsCi0gICAgICAgICAgICAgICAg
ICAgICBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLQotICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IHRoYXQgY2FjaGluZyB3b3JrcyB3aGVu
IGNvbG9yIGF0dGFjaG1lbnRzIGNoYW5nZSB3aXRoIENvbXByZXNzZWRUZXhJbWFnZTJELgotVEVT
VF9QKFN0YXRlQ2hhbmdlVGVzdEVTMywgRnJhbWVidWZmZXJJbmNvbXBsZXRlV2l0aENvbXByZXNz
ZWRUZXgpCi17Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1
ZmZlcik7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOwot
ICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0
dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJE
LCBtVGV4dHVyZXNbMF0sIDApOwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJf
Q09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotCi0g
ICAgLy8gQ2hhbmdlIHRoZSB0ZXh0dXJlIGF0IGNvbG9yIGF0dGFjaG1lbnQgMCB0byBiZSBub24t
Y29sb3ItcmVuZGVyYWJsZS4KLSAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyLCAxNiwgMTYsIDAsIDY0LCBudWxscHRyKTsK
LSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVO
VCwKLSAgICAgICAgICAgICAgICAgICAgIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFN
RUJVRkZFUikpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRlc3QgdGhh
dCBjYWNoaW5nIHdvcmtzIHdoZW4gY29sb3IgYXR0YWNobWVudHMgYXJlIGRlbGV0ZWQuCi1URVNU
X1AoU3RhdGVDaGFuZ2VUZXN0RVMzLCBGcmFtZWJ1ZmZlckluY29tcGxldGVXaGVuQXR0YWNobWVu
dERlbGV0ZWQpCi17Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFt
ZWJ1ZmZlcik7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0p
OwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotICAgIGdsRnJhbWVidWZmZXJU
ZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJF
XzJELCBtVGV4dHVyZXNbMF0sIDApOwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZG
RVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwot
Ci0gICAgLy8gRGVsZXRlIHRoZSB0ZXh0dXJlIGF0IGNvbG9yIGF0dGFjaG1lbnQgMC4KLSAgICBn
bERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZXNbMF0pOwotICAgIG1UZXh0dXJlc1swXSA9IDA7
Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdf
QVRUQUNITUVOVCwKLSAgICAgICAgICAgICAgICAgICAgIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhHTF9GUkFNRUJVRkZFUikpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8v
IFRlc3QgdGhhdCBGcmFtZWJ1ZmZlciBjb21wbGV0ZW5lc3MgY2FjaGluZyB3b3JrcyB3aGVuIGRl
cHRoIGF0dGFjaG1lbnRzIGNoYW5nZS4KLVRFU1RfUChTdGF0ZUNoYW5nZVRlc3QsIEZyYW1lYnVm
ZmVySW5jb21wbGV0ZURlcHRoQXR0YWNobWVudCkKLXsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlc1swXSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7
Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRU
QUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7Ci0gICAgZ2xCaW5kUmVu
ZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbVJlbmRlcmJ1ZmZlcik7Ci0gICAgZ2xSZW5kZXJi
dWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfREVQVEhfQ09NUE9ORU5UMTYsIDE2LCAx
Nik7Ci0gICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfREVQ
VEhfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBtUmVuZGVyYnVmZmVyKTsKLSAgICBFWFBF
Q1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJT
dGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLQotICAgIC8vIENoYW5nZSB0aGUgdGV4dHVyZSBhdCBj
b2xvciBhdHRhY2htZW50IDAgdG8gYmUgbm9uLWRlcHRoLXJlbmRlcmFibGUuCi0gICAgZ2xSZW5k
ZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfUkdCQTgsIDE2LCAxNik7Ci0gICAg
RVhQRUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQsCi0g
ICAgICAgICAgICAgICAgICAgICBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZG
RVIpKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IHRoYXQgRnJh
bWVidWZmZXIgY29tcGxldGVuZXNzIGNhY2hpbmcgd29ya3Mgd2hlbiBzdGVuY2lsIGF0dGFjaG1l
bnRzIGNoYW5nZS4KLVRFU1RfUChTdGF0ZUNoYW5nZVRlc3QsIEZyYW1lYnVmZmVySW5jb21wbGV0
ZVN0ZW5jaWxBdHRhY2htZW50KQotewotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBtRnJhbWVidWZmZXIpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRl
eHR1cmVzWzBdKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwg
MTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLSAgICBnbEZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwg
R0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdLCAwKTsKLSAgICBnbEJpbmRSZW5kZXJidWZmZXIo
R0xfUkVOREVSQlVGRkVSLCBtUmVuZGVyYnVmZmVyKTsKLSAgICBnbFJlbmRlcmJ1ZmZlclN0b3Jh
Z2UoR0xfUkVOREVSQlVGRkVSLCBHTF9TVEVOQ0lMX0lOREVYOCwgMTYsIDE2KTsKLSAgICBnbEZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9TVEVOQ0lMX0FUVEFDSE1F
TlQsIEdMX1JFTkRFUkJVRkZFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1SZW5k
ZXJidWZmZXIpOwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUs
IGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotCi0gICAgLy8gQ2hh
bmdlIHRoZSB0ZXh0dXJlIGF0IHRoZSBzdGVuY2lsIGF0dGFjaG1lbnQgdG8gYmUgbm9uLXN0ZW5j
aWwtcmVuZGVyYWJsZS4KLSAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVS
LCBHTF9SR0JBOCwgMTYsIDE2KTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVS
X0lOQ09NUExFVEVfQVRUQUNITUVOVCwKLSAgICAgICAgICAgICAgICAgICAgIGdsQ2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBGcmFtZWJ1ZmZlciBjb21wbGV0ZW5lc3MgY2FjaGluZyB3
b3JrcyB3aGVuIGRlcHRoLXN0ZW5jaWwgYXR0YWNobWVudHMgY2hhbmdlLgotVEVTVF9QKFN0YXRl
Q2hhbmdlVGVzdCwgRnJhbWVidWZmZXJJbmNvbXBsZXRlRGVwdGhTdGVuY2lsQXR0YWNobWVudCkK
LXsKLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFi
bGVkKCJHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgcGFja2VkIGRlcHRoK3N0ZW5jaWwgbm90IGF2
YWlsYmxlLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYg
KElzV2luZG93cygpICYmIElzSW50ZWwoKSAmJiBJc09wZW5HTCgpKQotICAgIHsKLSAgICAgICAg
Ly8gVE9ETyhqbWFkaWxsKTogSW52ZXN0aWdhdGUgdGhlIGZhaWx1cmUgKGh0dHBzOi8vYW5nbGVi
dWcuY29tLzEzODgpCi0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBXaW5k
b3dzIEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOwot
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKLSAgICBnbFRl
eEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdM
X0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1
cmVzWzBdLCAwKTsKLSAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtUmVu
ZGVyYnVmZmVyKTsKLSAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBH
TF9ERVBUSDI0X1NURU5DSUw4LCAxNiwgMTYpOwotICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVS
QlVGRkVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlbmRlcmJ1ZmZlcik7Ci0g
ICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7Ci0KLSAgICAvLyBDaGFuZ2UgdGhlIHRleHR1
cmUgdGhlIGRlcHRoLXN0ZW5jaWwgYXR0YWNobWVudCB0byBiZSBub24tZGVwdGgtc3RlbmNpbC1y
ZW5kZXJhYmxlLgotICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIEdM
X1JHQkE4LCAxNiwgMTYpOwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfSU5D
T01QTEVURV9BVFRBQ0hNRU5ULAotICAgICAgICAgICAgICAgICAgICAgZ2xDaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LX0KLQotLy8gRW5zdXJlIHRoYXQgQ29weVRleFN1YkltYWdlM0Qgc3luY3MgZnJhbWVidWZmZXIg
Y2hhbmdlcy4KLVRFU1RfUChTdGF0ZUNoYW5nZVRlc3RFUzMsIENvcHlUZXhTdWJJbWFnZTNEU3lu
YykKLXsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVy
KTsKLQotICAgIC8vIEluaXQgZmlyc3QgdGV4dHVyZSB0byByZWQKLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfM0QsIG1UZXh0dXJlc1swXSk7Ci0gICAgZ2xUZXhJbWFnZTNEKEdMX1RFWFRV
UkVfM0QsIDAsIEdMX1JHQkEsIDE2LCAxNiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIG51bGxwdHIpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0xfRlJBTUVCVUZG
RVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBtVGV4dHVyZXNbMF0sIDAsIDApOwotICAgIGdsQ2xl
YXJDb2xvcigxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JV
RkZFUl9CSVQpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7Ci0K
LSAgICAvLyBJbml0IHNlY29uZCB0ZXh0dXJlIHRvIGdyZWVuCi0gICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzNELCBtVGV4dHVyZXNbMV0pOwotICAgIGdsVGV4SW1hZ2UzRChHTF9URVhUVVJF
XzNELCAwLCBHTF9SR0JBLCAxNiwgMTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCBudWxscHRyKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdMX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgbVRleHR1cmVzWzFdLCAwLCAwKTsKLSAgICBnbENsZWFy
Q29sb3IoMC4wZiwgMS4wZiwgMC4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZG
RVJfQklUKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwgMjU1LCAwLCAyNTUpOwotCi0g
ICAgLy8gQ29weSBpbiB0aGUgcmVkIHRleHR1cmUgdG8gdGhlIGdyZWVuIG9uZS4KLSAgICAvLyBD
b3B5VGV4SW1hZ2Ugc2hvdWxkIHN5bmMgdGhlIGZyYW1lYnVmZmVyIGF0dGFjaG1lbnQgY2hhbmdl
LgotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9S
X0FUVEFDSE1FTlQwLCBtVGV4dHVyZXNbMF0sIDAsIDApOwotICAgIGdsQ29weVRleFN1YkltYWdl
M0QoR0xfVEVYVFVSRV8zRCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYsIDE2KTsKLSAgICBnbEZyYW1l
YnVmZmVyVGV4dHVyZUxheWVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwg
bVRleHR1cmVzWzFdLCAwLCAwKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1LCAwLCAw
LCAyNTUpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIEVuc3VyZSB0aGF0
IEJsaXRGcmFtZWJ1ZmZlciBzeW5jcyBmcmFtZWJ1ZmZlciBjaGFuZ2VzLgotVEVTVF9QKFN0YXRl
Q2hhbmdlVGVzdEVTMywgQmxpdEZyYW1lYnVmZmVyU3luYykKLXsKLSAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKLQotICAgIC8vIEluaXQgZmlyc3Qg
dGV4dHVyZSB0byByZWQKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJl
c1swXSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDE2LCAx
NiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0gICAgZ2xGcmFtZWJ1
ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RF
WFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7Ci0gICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYs
IDAuMGYsIDEuMGYpOwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgRVhQ
RUNUX1BJWEVMX0VRKDAsIDAsIDI1NSwgMCwgMCwgMjU1KTsKLQotICAgIC8vIEluaXQgc2Vjb25k
IHRleHR1cmUgdG8gZ3JlZW4KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0
dXJlc1sxXSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDE2
LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0gICAgZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSwgMCk7Ci0gICAgZ2xDbGVhckNvbG9yKDAuMGYsIDEu
MGYsIDAuMGYsIDEuMGYpOwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAg
RVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDI1NSwgMCwgMjU1KTsKLQotICAgIC8vIENoYW5nZSB0
byB0aGUgcmVkIHRleHR1cmVzIGFuZCBibGl0LgotICAgIC8vIEJsaXRGcmFtZWJ1ZmZlciBzaG91
bGQgc3luYyB0aGUgZnJhbWVidWZmZXIgYXR0YWNobWVudCBjaGFuZ2UuCi0gICAgZ2xCaW5kRnJh
bWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgMCk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1
cmUyRChHTF9SRUFEX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVS
RV8yRCwgbVRleHR1cmVzWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAg
Z2xCbGl0RnJhbWVidWZmZXIoMCwgMCwgMTYsIDE2LCAwLCAwLCAxNiwgMTYsIEdMX0NPTE9SX0JV
RkZFUl9CSVQsIEdMX05FQVJFU1QpOwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJB
TUVCVUZGRVIsIDApOwotICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7
Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gRW5zdXJlIHRoYXQgUmVhZEJ1
ZmZlciBhbmQgRHJhd0J1ZmZlcnMgc3luYyBmcmFtZWJ1ZmZlciBjaGFuZ2VzLgotVEVTVF9QKFN0
YXRlQ2hhbmdlVGVzdEVTMywgUmVhZEJ1ZmZlckFuZERyYXdCdWZmZXJzU3luYykKLXsKLSAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKLQotICAgIC8v
IEluaXRpYWxpemUgdHdvIEZCTyBhdHRhY2htZW50cwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRy
KTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9B
VFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdLCAwKTsKLSAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgbnVsbHB0cik7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZF
UiwgR0xfQ09MT1JfQVRUQUNITUVOVDEsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSwgMCk7
Ci0KLSAgICAvLyBDbGVhciBmaXJzdCBhdHRhY2htZW50IHRvIHJlZAotICAgIEdMZW51bSBidWZz
MVtdID0ge0dMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9OT05FfTsKLSAgICBnbERyYXdCdWZmZXJz
KDIsIGJ1ZnMxKTsKLSAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7Ci0g
ICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLQotICAgIC8vIENsZWFyIHNlY29uZCB0
ZXh0dXJlIHRvIGdyZWVuCi0gICAgR0xlbnVtIGJ1ZnMyW10gPSB7R0xfTk9ORSwgR0xfQ09MT1Jf
QVRUQUNITUVOVDF9OwotICAgIGdsRHJhd0J1ZmZlcnMoMiwgYnVmczIpOwotICAgIGdsQ2xlYXJD
b2xvcigwLjBmLCAxLjBmLCAwLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZF
Ul9CSVQpOwotCi0gICAgLy8gVmVyaWZ5IGZpcnN0IGF0dGFjaG1lbnQgaXMgcmVkIGFuZCBzZWNv
bmQgaXMgZ3JlZW4KLSAgICBnbFJlYWRCdWZmZXIoR0xfQ09MT1JfQVRUQUNITUVOVDEpOwotICAg
IEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAwLCAyNTUsIDAsIDI1NSk7Ci0KLSAgICBnbFJlYWRCdWZm
ZXIoR0xfQ09MT1JfQVRUQUNITUVOVDApOwotICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAyNTUs
IDAsIDAsIDI1NSk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdHMg
Y2FsbGluZyBpbnZhbGlkYXRlIG9uIGluY29tcGxldGUgZnJhbWVidWZmZXJzIGFmdGVyIHN3aXRj
aGluZyBhdHRhY2htZW50cy4KLS8vIEFkYXB0ZWQgcGFydGlhbGx5IGZyb20gV2ViR0wgMiB0ZXN0
ICJyZW5kZXJidWZmZXJzL2ludmFsaWRhdGUtZnJhbWVidWZmZXIiCi1URVNUX1AoU3RhdGVDaGFu
Z2VUZXN0RVMzLCBJbmNvbXBsZXRlUmVuZGVyYnVmZmVyQXR0YWNobWVudEludmFsaWRhdGVTeW5j
KQotewotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIp
OwotICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1SZW5kZXJidWZmZXIp
OwotICAgIEdMaW50IHNhbXBsZXMgPSAwOwotICAgIGdsR2V0SW50ZXJuYWxmb3JtYXRpdihHTF9S
RU5ERVJCVUZGRVIsIEdMX1JHQkE4LCBHTF9TQU1QTEVTLCAxLCAmc2FtcGxlcyk7Ci0gICAgZ2xG
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVO
VDAsIEdMX1JFTkRFUkJVRkZFUiwgbVJlbmRlcmJ1ZmZlcik7Ci0gICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Ci0KLSAgICAvLyBpbnZhbGlkYXRlIHRoZSBmcmFtZWJ1ZmZlciB3aGVuIHRoZSBhdHRh
Y2htZW50IGlzIGluY29tcGxldGU6IG5vIHN0b3JhZ2UgYWxsb2NhdGVkIHRvIHRoZQotICAgIC8v
IGF0dGFjaGVkIHJlbmRlcmJ1ZmZlcgotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZG
RVJfSU5DT01QTEVURV9BVFRBQ0hNRU5ULAotICAgICAgICAgICAgICAgICAgICAgZ2xDaGVja0Zy
YW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7Ci0gICAgR0xlbnVtIGF0dGFjaG1lbnRz
MVtdID0ge0dMX0NPTE9SX0FUVEFDSE1FTlQwfTsKLSAgICBnbEludmFsaWRhdGVGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgMSwgYXR0YWNobWVudHMxKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKLQotICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdMX1JFTkRFUkJV
RkZFUiwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oc2FtcGxlcyksIEdMX1JHQkE4LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hl
aWdodCgpKTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBn
bENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLSAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgR0xS
ZW5kZXJidWZmZXIgcmVuZGVyYnVmOwotCi0gICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRF
UkJVRkZFUiwgcmVuZGVyYnVmLmdldCgpKTsKLSAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJidWYuZ2V0KCkpOwotICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gaW52YWxpZGF0ZSB0aGUgZnJhbWVidWZmZXIgd2hl
biB0aGUgYXR0YWNobWVudCBpcyBpbmNvbXBsZXRlOiBubyBzdG9yYWdlIGFsbG9jYXRlZCB0byB0
aGUKLSAgICAvLyBhdHRhY2hlZCByZW5kZXJidWZmZXIKLSAgICAvLyBOb3RlOiB0aGUgYnVnIHdp
bGwgb25seSByZXBybyAqd2l0aG91dCogYSBjYWxsIHRvIGNoZWNrU3RhdHVzIGJlZm9yZSB0aGUg
aW52YWxpZGF0ZS4KLSAgICBHTGVudW0gYXR0YWNobWVudHMyW10gPSB7R0xfREVQVEhfQVRUQUNI
TUVOVH07Ci0gICAgZ2xJbnZhbGlkYXRlRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDEsIGF0
dGFjaG1lbnRzMik7Ci0KLSAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9S
RU5ERVJCVUZGRVIsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHNhbXBsZXMpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RFUFRIX0NPTVBPTkVOVDE2LCBnZXRXaW5kb3dX
aWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GUkFN
RUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVS
KSk7Ci0gICAgZ2xDbGVhcihHTF9ERVBUSF9CVUZGRVJfQklUKTsKLSAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLX0KLQotY2xhc3MgU3RhdGVDaGFuZ2VSZW5kZXJUZXN0IDogcHVibGljIFN0YXRl
Q2hhbmdlVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgU3RhdGVDaGFuZ2VSZW5kZXJUZXN0KCkg
OiBtUHJvZ3JhbSgwKSwgbVJlbmRlcmJ1ZmZlcigwKSB7fQotCi0gICAgdm9pZCBTZXRVcCgpIG92
ZXJyaWRlCi0gICAgewotICAgICAgICBTdGF0ZUNoYW5nZVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgICAgICJh
dHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcbiIKLSAgICAgICAgICAgICJ2b2lkIG1haW4oKSB7XG4i
Ci0gICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMCwgMSk7XG4i
Ci0gICAgICAgICAgICAifSI7Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hh
ZGVyU291cmNlID0KLSAgICAgICAgICAgICJ1bmlmb3JtIGhpZ2hwIHZlYzQgdW5pZm9ybUNvbG9y
O1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgICAgICIgICAgZ2xf
RnJhZ0NvbG9yID0gdW5pZm9ybUNvbG9yO1xuIgotICAgICAgICAgICAgIn0iOwotCi0gICAgICAg
IG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNo
YWRlclNvdXJjZSk7Ci0gICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotCi0gICAgICAg
IGdsR2VuUmVuZGVyYnVmZmVycygxLCAmbVJlbmRlcmJ1ZmZlcik7Ci0gICAgfQotCi0gICAgdm9p
ZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVBy
b2dyYW0pOwotICAgICAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1SZW5kZXJidWZmZXIp
OwotCi0gICAgICAgIFN0YXRlQ2hhbmdlVGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICB2
b2lkIHNldFVuaWZvcm1Db2xvcihjb25zdCBHTENvbG9yICZjb2xvcikKLSAgICB7Ci0gICAgICAg
IGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgICAgIGNvbnN0IFZlY3RvcjQgJm5vcm1hbGl6
ZWRDb2xvciA9IGNvbG9yLnRvTm9ybWFsaXplZFZlY3RvcigpOwotICAgICAgICBHTGludCB1bmlm
b3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInVuaWZvcm1Db2xv
ciIpOwotICAgICAgICBBU1NFUlRfTkUoLTEsIHVuaWZvcm1Mb2NhdGlvbik7Ci0gICAgICAgIGds
VW5pZm9ybTRmdih1bmlmb3JtTG9jYXRpb24sIDEsIG5vcm1hbGl6ZWRDb2xvci5kYXRhKCkpOwot
ICAgIH0KLQotICAgIEdMdWludCBtUHJvZ3JhbTsKLSAgICBHTHVpbnQgbVJlbmRlcmJ1ZmZlcjsK
LX07Ci0KLS8vIFRlc3QgdGhhdCByZS1jcmVhdGluZyBhIGN1cnJlbnRseSBhdHRhY2hlZCB0ZXh0
dXJlIHdvcmtzIGFzIGV4cGVjdGVkLgotVEVTVF9QKFN0YXRlQ2hhbmdlUmVuZGVyVGVzdCwgUmVj
cmVhdGVUZXh0dXJlKQotewotICAgIGlmIChJc0ludGVsKCkgJiYgSXNMaW51eCgpKQotICAgIHsK
LSAgICAgICAgLy8gVE9ETyhjd2FsbGV6KTogRml4IG9uIExpbnV4IEludGVsIGRyaXZlcnMgKGh0
dHA6Ly9hbmdsZWJ1Zy5jb20vMTM0NikKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2Fi
bGVkIG9uIExpbnV4IEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVi
dWZmZXIpOwotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0p
OwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotICAgIGdsRnJhbWVidWZmZXJU
ZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJF
XzJELCBtVGV4dHVyZXNbMF0sIDApOwotCi0gICAgLy8gRHJhdyB3aXRoIHJlZCB0byB0aGUgRkJP
LgotICAgIEdMQ29sb3IgcmVkKDI1NSwgMCwgMCwgMjU1KTsKLSAgICBzZXRVbmlmb3JtQ29sb3Io
cmVkKTsKLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQ
RUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIHJlZCk7Ci0KLSAgICAvLyBSZWNyZWF0ZSB0aGUgdGV4
dHVyZSB3aXRoIGdyZWVuLgotICAgIEdMQ29sb3IgZ3JlZW4oMCwgMjU1LCAwLCAyNTUpOwotICAg
IHN0ZDo6dmVjdG9yPEdMQ29sb3I+IGdyZWVuUGl4ZWxzKDMyICogMzIsIGdyZWVuKTsKLSAgICBn
bFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMzIsIDMyLCAwLCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICBncmVlblBpeGVscy5kYXRhKCkp
OwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBncmVlbik7Ci0KLSAgICAvLyBWZXJp
ZnkgZHJhd2luZyBibHVlIGdpdmVzIGJsdWUuIFRoaXMgY292ZXJzIHRoZSBGQk8gc3luYyB3aXRo
IEQzRCBkaXJ0eSBiaXRzLgotICAgIEdMQ29sb3IgYmx1ZSgwLCAwLCAyNTUsIDI1NSk7Ci0gICAg
c2V0VW5pZm9ybUNvbG9yKGJsdWUpOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24i
LCAwLjVmKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgYmx1ZSk7Ci0KLSAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCB0aGF0IHJlLWNyZWF0aW5nIGEgY3Vy
cmVudGx5IGF0dGFjaGVkIHJlbmRlcmJ1ZmZlciB3b3JrcyBhcyBleHBlY3RlZC4KLVRFU1RfUChT
dGF0ZUNoYW5nZVJlbmRlclRlc3QsIFJlY3JlYXRlUmVuZGVyYnVmZmVyKQotewotICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOwotCi0gICAgZ2xCaW5k
UmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbVJlbmRlcmJ1ZmZlcik7Ci0gICAgZ2xSZW5k
ZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfUkdCQTgsIDE2LCAxNik7Ci0gICAg
Z2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNI
TUVOVDAsIEdMX1JFTkRFUkJVRkZFUiwgbVJlbmRlcmJ1ZmZlcik7Ci0KLSAgICAvLyBEcmF3IHdp
dGggcmVkIHRvIHRoZSBGQk8uCi0gICAgR0xDb2xvciByZWQoMjU1LCAwLCAwLCAyNTUpOwotICAg
IHNldFVuaWZvcm1Db2xvcihyZWQpOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24i
LCAwLjVmKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgcmVkKTsKLQotICAgIC8v
IFJlY3JlYXRlIHRoZSByZW5kZXJidWZmZXIgYW5kIGNsZWFyIHRvIGdyZWVuLgotICAgIGdsUmVu
ZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIEdMX1JHQkE4LCAzMiwgMzIpOwotICAg
IGdsQ2xlYXJDb2xvcigwLjBmLCAxLjBmLCAwLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQpOwotICAgIEdMQ29sb3IgZ3JlZW4oMCwgMjU1LCAwLCAyNTUpOwotICAg
IEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBncmVlbik7Ci0KLSAgICAvLyBWZXJpZnkgZHJh
d2luZyBibHVlIGdpdmVzIGJsdWUuIFRoaXMgY292ZXJzIHRoZSBGQk8gc3luYyB3aXRoIEQzRCBk
aXJ0eSBiaXRzLgotICAgIEdMQ29sb3IgYmx1ZSgwLCAwLCAyNTUsIDI1NSk7Ci0gICAgc2V0VW5p
Zm9ybUNvbG9yKGJsdWUpOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgYmx1ZSk7Ci0KLSAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCB0aGF0IHJlY3JlYXRpbmcgYSB0ZXh0dXJlIHdp
dGggR2VuZXJhdGVNaXBtYXBzIHNpZ25hbHMgdGhlIEZCTyBpcyBkaXJ0eS4KLVRFU1RfUChTdGF0
ZUNoYW5nZVJlbmRlclRlc3QsIEdlbmVyYXRlTWlwbWFwKQotewotICAgIGdsQmluZEZyYW1lYnVm
ZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOwotCi0gICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51
bGxwdHIpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBLCA4LCA4
LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLSAgICBnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMiwgR0xfUkdCQSwgNCwgNCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdO
RURfQllURSwgbnVsbHB0cik7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJV
RkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSwg
MCk7Ci0KLSAgICAvLyBEcmF3IG9uY2UgdG8gc2V0IHRoZSBSZW5kZXJUYXJnZXQgaW4gRDNEMTEK
LSAgICBHTENvbG9yIHJlZCgyNTUsIDAsIDAsIDI1NSk7Ci0gICAgc2V0VW5pZm9ybUNvbG9yKHJl
ZCk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVD
VF9QSVhFTF9DT0xPUl9FUSgwLCAwLCByZWQpOwotCi0gICAgLy8gVGhpcyB3aWxsIHRyaWdnZXIg
dGhlIHRleHR1cmUgdG8gYmUgcmUtY3JlYXRlZCBvbiBGTDlfMy4KLSAgICBnbEdlbmVyYXRlTWlw
bWFwKEdMX1RFWFRVUkVfMkQpOwotCi0gICAgLy8gTm93IGVuc3VyZSB3ZSBkb24ndCBoYXZlIGEg
c3RhbGUgcmVuZGVyIHRhcmdldC4KLSAgICBHTENvbG9yIGJsdWUoMCwgMCwgMjU1LCAyNTUpOwot
ICAgIHNldFVuaWZvcm1Db2xvcihibHVlKTsKLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0
aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIGJsdWUpOwotCi0g
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoU3Rh
dGVDaGFuZ2VUZXN0LCBFUzJfRDNEOSgpLCBFUzJfRDNEMTEoKSwgRVMyX09QRU5HTCgpKTsKLUFO
R0xFX0lOU1RBTlRJQVRFX1RFU1QoU3RhdGVDaGFuZ2VSZW5kZXJUZXN0LAotICAgICAgICAgICAg
ICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAotICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKFN0YXRl
Q2hhbmdlVGVzdEVTMywgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU3dpenpsZVRlc3QuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1N3aXp6bGVUZXN0
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFhZDEzMTAyZTFlNzFiYWJkZGJi
ZTQzN2E4M2VmYzc2NmEzZWMxZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU3dp
enpsZVRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDQxICswLDAgQEAKLS8vCi0vLyBDb3B5
cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0K
LSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi0jaW5jbHVkZSA8dmVjdG9yPgot
Ci11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1jbGFzcyBTd2l6emxl
VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFN3aXp6bGVUZXN0
KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7Ci0gICAgICAgIHNldFdpbmRv
d0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRD
b25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAg
ICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0KLSAgICAgICAgR0xlbnVtIHN3aXp6bGVzW10gPQot
ICAgICAgICB7Ci0gICAgICAgICAgICBHTF9SRUQsCi0gICAgICAgICAgICBHTF9HUkVFTiwKLSAg
ICAgICAgICAgIEdMX0JMVUUsCi0gICAgICAgICAgICBHTF9BTFBIQSwKLSAgICAgICAgICAgIEdM
X1pFUk8sCi0gICAgICAgICAgICBHTF9PTkUsCi0gICAgICAgIH07Ci0KLSAgICAgICAgZm9yIChp
bnQgciA9IDA7IHIgPCA2OyByKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoaW50IGcg
PSAwOyBnIDwgNjsgZysrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZvciAoaW50
IGIgPSAwOyBiIDwgNjsgYisrKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgZm9yIChpbnQgYSA9IDA7IGEgPCA2OyBhKyspCi0gICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHN3aXp6bGVQZXJtdXRhdGlvbiBwZXJtdXRhdGlvbjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHBlcm11dGF0aW9uLnN3aXp6bGVSZWQgPSBzd2l6emxlc1ty
XTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBlcm11dGF0aW9uLnN3aXp6bGVHcmVlbiA9IHN3
aXp6bGVzW2ddOwotICAgICAgICAgICAgICAgICAgICAgICAgcGVybXV0YXRpb24uc3dpenpsZUJs
dWUgPSBzd2l6emxlc1tiXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBlcm11dGF0aW9uLnN3
aXp6bGVBbHBoYSA9IHN3aXp6bGVzW2FdOwotICAgICAgICAgICAgICAgICAgICAgICAgbVBlcm11
dGF0aW9ucy5wdXNoX2JhY2socGVybXV0YXRpb24pOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAg
dm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7
Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0gU0hBREVS
X1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0g
ICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKLSAgICAgICAgICAgIHZhcnlpbmcg
dmVjMiB0ZXhjb29yZDsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAgICAgICAgICAg
IHRleGNvb3JkID0gKHBvc2l0aW9uLnh5ICogMC41KSArIDAuNTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJj
ZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hw
IGZsb2F0OwotICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4OwotICAgICAgICAgICAg
dmFyeWluZyB2ZWMyIHRleGNvb3JkOwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRl
eGNvb3JkKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBtUHJvZ3JhbSA9
IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2Up
OwotICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKLQotICAgICAgICBtVGV4dHVyZVVu
aWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4Iik7Ci0g
ICAgICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1cmVVbmlmb3JtTG9jYXRpb24pOwotCi0gICAgICAg
IGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKLSAgICAgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotICAgICAgICBnbERlbGV0ZVRl
eHR1cmVzKDEsICZtVGV4dHVyZSk7Ci0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwot
ICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQgaW5pdDJEVGV4dHVy
ZShHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMZW51bSBkYXRhRm9ybWF0LCBHTGVudW0gZGF0YVR5
cGUsIGNvbnN0IFQqIGRhdGEpCi0gICAgewotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4
dHVyZSk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUpOwot
ICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgaW50ZXJuYWxGb3JtYXQsIDEs
IDEsIDAsIGRhdGFGb3JtYXQsIGRhdGFUeXBlLCBkYXRhKTsKLQotICAgICAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsK
LSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJ
TFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgfQotCi0gICAgdm9pZCBpbml0MkRDb21wcmVzc2VkVGV4
dHVyZShHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LCBHTHNpemVpIGRhdGFTaXplLCBjb25zdCBHTHVieXRlKiBkYXRhKQotICAgIHsKLSAgICAgICAg
Z2xHZW5UZXh0dXJlcygxLCAmbVRleHR1cmUpOwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIG1UZXh0dXJlKTsKLSAgICAgICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgd2lkdGgsIGhl
aWdodCwgMCwgZGF0YVNpemUsIGRhdGEpOwotCi0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgICAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9O
RUFSRVNUKTsKLSAgICB9Ci0KLSAgICBHTHVieXRlIGdldEV4cGVjdGVkVmFsdWUoR0xlbnVtIHN3
aXp6bGUsIEdMdWJ5dGUgdW5zd2l6emxlZFs0XSkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3dp
enpsZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfUkVEOiAgIHJldHVybiB1bnN3aXp6
bGVkWzBdOwotICAgICAgICAgIGNhc2UgR0xfR1JFRU46IHJldHVybiB1bnN3aXp6bGVkWzFdOwot
ICAgICAgICAgIGNhc2UgR0xfQkxVRTogIHJldHVybiB1bnN3aXp6bGVkWzJdOwotICAgICAgICAg
IGNhc2UgR0xfQUxQSEE6IHJldHVybiB1bnN3aXp6bGVkWzNdOwotICAgICAgICAgIGNhc2UgR0xf
WkVSTzogIHJldHVybiAwOwotICAgICAgICAgIGNhc2UgR0xfT05FOiAgIHJldHVybiAyNTU7Ci0g
ICAgICAgICAgZGVmYXVsdDogICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICB2b2lkIHJ1blRlc3QyRCgpCi0gICAgewotICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBGaWd1
cmUgb3V0IHdoeSB0aGlzIGZhaWxzIG9uIEludGVsLgotICAgICAgICBpZiAoSXNJbnRlbCgpICYm
IEdldFBhcmFtKCkuZ2V0UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVO
R0xfQU5HTEUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIG9uIEludGVsLiIgPDwgc3RkOjplbmRsOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZSk7Ci0gICAgICAgIGdsVW5pZm9ybTFpKG1UZXh0
dXJlVW5pZm9ybUxvY2F0aW9uLCAwKTsKLQotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9TV0laWkxFX1IsIEdMX1JFRCk7Ci0gICAgICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1NXSVpaTEVfRywgR0xfR1JFRU4pOwot
ICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9TV0laWkxF
X0IsIEdMX0JMVUUpOwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9TV0laWkxFX0EsIEdMX0FMUEhBKTsKLQotICAgICAgICBnbENsZWFyKEdMX0NPTE9S
X0JVRkZFUl9CSVQpOwotICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41
Zik7Ci0KLSAgICAgICAgR0x1Ynl0ZSB1bnN3aXp6bGVkWzRdOwotICAgICAgICBnbFJlYWRQaXhl
bHMoMCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgJnVuc3dpenpsZWQpOwot
Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbVBlcm11dGF0aW9ucy5zaXplKCk7IGkrKykKLSAgICAgICAgewotICAgICAgICAg
ICAgY29uc3Qgc3dpenpsZVBlcm11dGF0aW9uJiBwZXJtdXRhdGlvbiA9IG1QZXJtdXRhdGlvbnNb
aV07Ci0KLSAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX1NXSVpaTEVfUiwgcGVybXV0YXRpb24uc3dpenpsZVJlZCk7Ci0gICAgICAgICAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9TV0laWkxFX0csIHBlcm11dGF0
aW9uLnN3aXp6bGVHcmVlbik7Ci0gICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9TV0laWkxFX0IsIHBlcm11dGF0aW9uLnN3aXp6bGVCbHVlKTsKLSAg
ICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1NXSVpa
TEVfQSwgcGVybXV0YXRpb24uc3dpenpsZUFscGhhKTsKLQotICAgICAgICAgICAgZ2xDbGVhcihH
TF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICAgICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9z
aXRpb24iLCAwLjVmKTsKLQotICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RXhwZWN0ZWRWYWx1ZShwZXJtdXRhdGlvbi5zd2l6
emxlUmVkLCB1bnN3aXp6bGVkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRFeHBl
Y3RlZFZhbHVlKHBlcm11dGF0aW9uLnN3aXp6bGVHcmVlbiwgdW5zd2l6emxlZCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2V0RXhwZWN0ZWRWYWx1ZShwZXJtdXRhdGlvbi5zd2l6emxl
Qmx1ZSwgdW5zd2l6emxlZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RXhwZWN0
ZWRWYWx1ZShwZXJtdXRhdGlvbi5zd2l6emxlQWxwaGEsIHVuc3dpenpsZWQpKTsKLQotICAgICAg
ICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBHTHVp
bnQgbVByb2dyYW07Ci0gICAgR0xpbnQgbVRleHR1cmVVbmlmb3JtTG9jYXRpb247Ci0KLSAgICBH
THVpbnQgbVRleHR1cmU7Ci0KLSAgICBzdHJ1Y3Qgc3dpenpsZVBlcm11dGF0aW9uCi0gICAgewot
ICAgICAgICBHTGVudW0gc3dpenpsZVJlZDsKLSAgICAgICAgR0xlbnVtIHN3aXp6bGVHcmVlbjsK
LSAgICAgICAgR0xlbnVtIHN3aXp6bGVCbHVlOwotICAgICAgICBHTGVudW0gc3dpenpsZUFscGhh
OwotICAgIH07Ci0gICAgc3RkOjp2ZWN0b3I8c3dpenpsZVBlcm11dGF0aW9uPiBtUGVybXV0YXRp
b25zOwotfTsKLQotY2xhc3MgU3dpenpsZUludGVnZXJUZXN0IDogcHVibGljIFN3aXp6bGVUZXN0
Ci17Ci0gIHByb3RlY3RlZDoKLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0
ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAg
ICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAgICAgICJpbiB2ZWM0IHBv
c2l0aW9uO1xuIgotICAgICAgICAgICAgIm91dCB2ZWMyIHRleGNvb3JkO1xuIgotICAgICAgICAg
ICAgIlxuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgICAie1xuIgot
ICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAg
IiAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7XG4iCi0gICAgICAgICAg
ICAifVxuIjsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJj
ZSA9Ci0gICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICAgICAicHJlY2lz
aW9uIGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCB1c2FtcGxl
cjJEO1xuIgotICAgICAgICAgICAgInVuaWZvcm0gdXNhbXBsZXIyRCB0ZXg7XG4iCi0gICAgICAg
ICAgICAiaW4gdmVjMiB0ZXhjb29yZDtcbiIKLSAgICAgICAgICAgICJvdXQgdmVjNCBteV9GcmFn
Q29sb3I7XG4iCi0gICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKClcbiIK
LSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIHV2ZWM0IHMgPSB0ZXh0dXJlKHRl
eCwgdGV4Y29vcmQpO1xuIgotICAgICAgICAgICAgIiAgICBpZiAoc1swXSA9PSAxdSkgc1swXSA9
IDI1NXU7XG4iCi0gICAgICAgICAgICAiICAgIGlmIChzWzFdID09IDF1KSBzWzFdID0gMjU1dTtc
biIKLSAgICAgICAgICAgICIgICAgaWYgKHNbMl0gPT0gMXUpIHNbMl0gPSAyNTV1O1xuIgotICAg
ICAgICAgICAgIiAgICBpZiAoc1szXSA9PSAxdSkgc1szXSA9IDI1NXU7XG4iCi0gICAgICAgICAg
ICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQocykgLyAyNTUuMDtcbiIKLSAgICAgICAgICAgICJ9
XG4iOwotCi0gICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291
cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dy
YW0pOwotCi0gICAgICAgIG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9j
YXRpb24obVByb2dyYW0sICJ0ZXgiKTsKLSAgICAgICAgQVNTRVJUX05FKC0xLCBtVGV4dHVyZVVu
aWZvcm1Mb2NhdGlvbik7Ci0KLSAgICAgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYs
IDAuMGYpOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci19OwotCi1URVNU
X1AoU3dpenpsZVRlc3QsIFJHQkE4XzJEKQotewotICAgIEdMdWJ5dGUgZGF0YVtdID0geyAxLCA2
NCwgMTI4LCAyMDAgfTsKLSAgICBpbml0MkRUZXh0dXJlKEdMX1JHQkE4LCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLCBkYXRhKTsKLSAgICBydW5UZXN0MkQoKTsKLX0KLQotVEVTVF9QKFN3aXp6
bGVUZXN0LCBSR0I4XzJEKQotewotICAgIEdMdWJ5dGUgZGF0YVtdID0geyA3NywgNjYsIDU1IH07
Ci0gICAgaW5pdDJEVGV4dHVyZShHTF9SR0I4LCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUsIGRh
dGEpOwotICAgIHJ1blRlc3QyRCgpOwotfQotCi1URVNUX1AoU3dpenpsZVRlc3QsIFJHOF8yRCkK
LXsKLSAgICBHTHVieXRlIGRhdGFbXSA9IHsgMTEsIDk5IH07Ci0gICAgaW5pdDJEVGV4dHVyZShH
TF9SRzgsIEdMX1JHLCBHTF9VTlNJR05FRF9CWVRFLCBkYXRhKTsKLSAgICBydW5UZXN0MkQoKTsK
LX0KLQotVEVTVF9QKFN3aXp6bGVUZXN0LCBSOF8yRCkKLXsKLSAgICBHTHVieXRlIGRhdGFbXSA9
IHsgMiB9OwotICAgIGluaXQyRFRleHR1cmUoR0xfUjgsIEdMX1JFRCwgR0xfVU5TSUdORURfQllU
RSwgZGF0YSk7Ci0gICAgcnVuVGVzdDJEKCk7Ci19Ci0KLVRFU1RfUChTd2l6emxlVGVzdCwgUkdC
MTBfQTJfMkQpCi17Ci0gICAgR0x1aW50IGRhdGFbXSA9IHsyMHUgfCAoNDB1IDw8IDEwKSB8ICg2
MHUgPDwgMjApIHwgKDJ1IDw8IDMwKX07Ci0gICAgaW5pdDJEVGV4dHVyZShHTF9SR0IxMF9BMiwg
R0xfUkdCQSwgR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWLCBkYXRhKTsKLSAgICBydW5U
ZXN0MkQoKTsKLX0KLQotVEVTVF9QKFN3aXp6bGVUZXN0LCBSR0JBMzJGXzJEKQotewotICAgIEdM
ZmxvYXQgZGF0YVtdID0geyAwLjI1ZiwgMC41ZiwgMC43NWYsIDAuOGYgfTsKLSAgICBpbml0MkRU
ZXh0dXJlKEdMX1JHQkEzMkYsIEdMX1JHQkEsIEdMX0ZMT0FULCBkYXRhKTsKLSAgICBydW5UZXN0
MkQoKTsKLX0KLQotVEVTVF9QKFN3aXp6bGVUZXN0LCBSR0IzMkZfMkQpCi17Ci0gICAgR0xmbG9h
dCBkYXRhW10gPSB7IDAuMWYsIDAuMmYsIDAuM2YgfTsKLSAgICBpbml0MkRUZXh0dXJlKEdMX1JH
QjMyRiwgR0xfUkdCLCBHTF9GTE9BVCwgZGF0YSk7Ci0gICAgcnVuVGVzdDJEKCk7Ci19Ci0KLVRF
U1RfUChTd2l6emxlVGVzdCwgUkczMkZfMkQpCi17Ci0gICAgR0xmbG9hdCBkYXRhW10gPSB7IDAu
OWYsIDAuMWYgIH07Ci0gICAgaW5pdDJEVGV4dHVyZShHTF9SRzMyRiwgR0xfUkcsIEdMX0ZMT0FU
LCBkYXRhKTsKLSAgICBydW5UZXN0MkQoKTsKLX0KLQotVEVTVF9QKFN3aXp6bGVUZXN0LCBSMzJG
XzJEKQotewotICAgIEdMZmxvYXQgZGF0YVtdID0geyAwLjVmIH07Ci0gICAgaW5pdDJEVGV4dHVy
ZShHTF9SMzJGLCBHTF9SRUQsIEdMX0ZMT0FULCBkYXRhKTsKLSAgICBydW5UZXN0MkQoKTsKLX0K
LQotVEVTVF9QKFN3aXp6bGVUZXN0LCBEMzJGXzJEKQotewotICAgIEdMZmxvYXQgZGF0YVtdID0g
eyAwLjVmIH07Ci0gICAgaW5pdDJEVGV4dHVyZShHTF9ERVBUSF9DT01QT05FTlQzMkYsIEdMX0RF
UFRIX0NPTVBPTkVOVCwgR0xfRkxPQVQsIGRhdGEpOwotICAgIHJ1blRlc3QyRCgpOwotfQotCi1U
RVNUX1AoU3dpenpsZVRlc3QsIEQxNl8yRCkKLXsKLSAgICBHTHVzaG9ydCBkYXRhW10gPSB7IDB4
RkYgfTsKLSAgICBpbml0MkRUZXh0dXJlKEdMX0RFUFRIX0NPTVBPTkVOVDE2LCBHTF9ERVBUSF9D
T01QT05FTlQsIEdMX1VOU0lHTkVEX1NIT1JULCBkYXRhKTsKLSAgICBydW5UZXN0MkQoKTsKLX0K
LQotVEVTVF9QKFN3aXp6bGVUZXN0LCBEMjRfMkQpCi17Ci0gICAgR0x1aW50IGRhdGFbXSA9IHsg
MHhGRkZGIH07Ci0gICAgaW5pdDJEVGV4dHVyZShHTF9ERVBUSF9DT01QT05FTlQyNCwgR0xfREVQ
VEhfQ09NUE9ORU5ULCBHTF9VTlNJR05FRF9JTlQsIGRhdGEpOwotICAgIHJ1blRlc3QyRCgpOwot
fQotCi1URVNUX1AoU3dpenpsZVRlc3QsIEw4XzJEKQotewotICAgIEdMdWJ5dGUgZGF0YVtdID0g
ezB4Nzd9OwotICAgIGluaXQyRFRleHR1cmUoR0xfTFVNSU5BTkNFLCBHTF9MVU1JTkFOQ0UsIEdM
X1VOU0lHTkVEX0JZVEUsIGRhdGEpOwotICAgIHJ1blRlc3QyRCgpOwotfQotCi1URVNUX1AoU3dp
enpsZVRlc3QsIEE4XzJEKQotewotICAgIEdMdWJ5dGUgZGF0YVtdID0gezB4NTV9OwotICAgIGlu
aXQyRFRleHR1cmUoR0xfQUxQSEEsIEdMX0FMUEhBLCBHTF9VTlNJR05FRF9CWVRFLCBkYXRhKTsK
LSAgICBydW5UZXN0MkQoKTsKLX0KLQotVEVTVF9QKFN3aXp6bGVUZXN0LCBMQThfMkQpCi17Ci0g
ICAgR0x1Ynl0ZSBkYXRhW10gPSB7MHg3NywgMHg2Nn07Ci0gICAgaW5pdDJEVGV4dHVyZShHTF9M
VU1JTkFOQ0VfQUxQSEEsIEdMX0xVTUlOQU5DRV9BTFBIQSwgR0xfVU5TSUdORURfQllURSwgZGF0
YSk7Ci0gICAgcnVuVGVzdDJEKCk7Ci19Ci0KLVRFU1RfUChTd2l6emxlVGVzdCwgTDMyRl8yRCkK
LXsKLSAgICBHTGZsb2F0IGRhdGFbXSA9IHswLjdmfTsKLSAgICBpbml0MkRUZXh0dXJlKEdMX0xV
TUlOQU5DRSwgR0xfTFVNSU5BTkNFLCBHTF9GTE9BVCwgZGF0YSk7Ci0gICAgcnVuVGVzdDJEKCk7
Ci19Ci0KLVRFU1RfUChTd2l6emxlVGVzdCwgQTMyRl8yRCkKLXsKLSAgICBHTGZsb2F0IGRhdGFb
XSA9IHsKLSAgICAgICAgMC40ZiwKLSAgICB9OwotICAgIGluaXQyRFRleHR1cmUoR0xfQUxQSEEs
IEdMX0FMUEhBLCBHTF9GTE9BVCwgZGF0YSk7Ci0gICAgcnVuVGVzdDJEKCk7Ci19Ci0KLVRFU1Rf
UChTd2l6emxlVGVzdCwgTEEzMkZfMkQpCi17Ci0gICAgR0xmbG9hdCBkYXRhW10gPSB7Ci0gICAg
ICAgIDAuNWYsIDAuNmYsCi0gICAgfTsKLSAgICBpbml0MkRUZXh0dXJlKEdMX0xVTUlOQU5DRV9B
TFBIQSwgR0xfTFVNSU5BTkNFX0FMUEhBLCBHTF9GTE9BVCwgZGF0YSk7Ci0gICAgcnVuVGVzdDJE
KCk7Ci19Ci0KLSNpbmNsdWRlICJtZWRpYS9waXhlbC5pbmwiCi0KLVRFU1RfUChTd2l6emxlVGVz
dCwgQ29tcHJlc3NlZERYVF8yRCkKLXsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VY
VF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIGR1ZSB0byBtaXNzaW5nIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9u
X2R4dDEuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbml0
MkRDb21wcmVzc2VkVGV4dHVyZShHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4
ZWxfMF93aWR0aCwgcGl4ZWxfMF9oZWlnaHQsIHBpeGVsXzBfc2l6ZSwgcGl4ZWxfMF9kYXRhKTsK
LSAgICBydW5UZXN0MkQoKTsKLX0KLQotVEVTVF9QKFN3aXp6bGVJbnRlZ2VyVGVzdCwgUkdCOFVJ
XzJEKQotewotICAgIEdMdWJ5dGUgZGF0YVtdID0gezc3LCA2NiwgNTV9OwotICAgIGluaXQyRFRl
eHR1cmUoR0xfUkdCOFVJLCBHTF9SR0JfSU5URUdFUiwgR0xfVU5TSUdORURfQllURSwgZGF0YSk7
Ci0gICAgcnVuVGVzdDJEKCk7Ci19Ci0KLS8vIFRlc3QgdGhhdCB1cGRhdGluZyB0aGUgdGV4dHVy
ZSBkYXRhIHN0aWxsIGdlbmVyYXRlcyB0aGUgY29ycmVjdCBzd2l6emxlcwotVEVTVF9QKFN3aXp6
bGVUZXN0LCBTdWJVcGRhdGUpCi17Ci0gICAgR0xDb2xvciBkYXRhKDEsIDY0LCAxMjgsIDIwMCk7
Ci0gICAgaW5pdDJEVGV4dHVyZShHTF9SR0JBOCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwg
JmRhdGEpOwotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsKLSAgICBnbFVuaWZvcm0xaShtVGV4dHVyZVVuaWZv
cm1Mb2NhdGlvbiwgMCk7Ci0KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9TV0laWkxFX1IsIEdMX1JFRCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfU1dJWlpMRV9HLCBHTF9SRUQpOwotICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1NXSVpaTEVfQiwgR0xfUkVEKTsKLSAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9TV0laWkxFX0EsIEdMX1JFRCk7
Ci0KLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIGRyYXdRdWFkKG1Qcm9n
cmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEdMQ29sb3IgZXhwZWN0ZWREYXRhKGRhdGEu
UiwgZGF0YS5SLCBkYXRhLlIsIGRhdGEuUik7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAs
IDAsIGV4cGVjdGVkRGF0YSk7Ci0KLSAgICBHTENvbG9yIHVwZGF0ZURhdGEoMzIsIDIzNCwgMjgs
IDIzMik7Ci0gICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZ1cGRhdGVEYXRhKTsKLQotICAgIGdsQ2xlYXIo
R0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIs
IDAuNWYpOwotCi0gICAgR0xDb2xvciBleHBlY3RlZFVwZGF0ZURhdGEodXBkYXRlRGF0YS5SLCB1
cGRhdGVEYXRhLlIsIHVwZGF0ZURhdGEuUiwgdXBkYXRlRGF0YS5SKTsKLSAgICBFWFBFQ1RfUElY
RUxfQ09MT1JfRVEoMCwgMCwgZXhwZWN0ZWRVcGRhdGVEYXRhKTsKLX0KLQotLy8gVXNlIHRoaXMg
dG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGlj
aCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4K
LUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoU3dpenpsZVRlc3QsIEVTM19EM0QxMSgpLCBFUzNfT1BF
TkdMKCksIEVTM19PUEVOR0woMywgMyksIEVTM19PUEVOR0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJ
QVRFX1RFU1QoU3dpenpsZUludGVnZXJUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBFUzNf
RDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzNfT1BFTkdMKDMsIDMpLAotICAgICAgICAgICAgICAgICAgICAgICBF
UzNfT1BFTkdMRVMoKSk7Ci0KLX0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU3luY1F1ZXJpZXNUZXN0LmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TeW5jUXVlcmllc1Rlc3Qu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzYzMTEyNTRlOTNhNDA4N2NjZDJh
YmJlZmY1NmY0MDgzZDA3NjcyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TeW5j
UXVlcmllc1Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8vCi0vLyBD
b3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8v
Ci0KLS8vIFN5bmNRdWVyaWVzVGVzdC5jcHA6IFRlc3RzIG9mIHRoZSBHTF9DSFJPTUlVTV9zeW5j
X3F1ZXJ5IGV4dGVuc2lvbgotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQot
bmFtZXNwYWNlIGFuZ2xlCi17Ci0KLWNsYXNzIFN5bmNRdWVyaWVzVGVzdCA6IHB1YmxpYyBBTkdM
RVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFN5bmNRdWVyaWVzVGVzdCgpCi0gICAgewotICAg
ICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsK
LSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRz
KDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxw
aGFCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOwotICAgIH0KLQotICAg
IHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKG1RdWVyeSAhPSAw
KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbERlbGV0ZVF1ZXJpZXNFWFQoMSwgJm1RdWVyeSk7
Ci0gICAgICAgICAgICBtUXVlcnkgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgQU5HTEVUZXN0
OjpUZWFyRG93bigpOwotICAgIH0KLQotICAgIEdMdWludCBtUXVlcnkgPSAwOwotfTsKLQotLy8g
VGVzdCBiYXNpYyB1c2FnZSBvZiBzeW5jIHF1ZXJpZXMKLVRFU1RfUChTeW5jUXVlcmllc1Rlc3Qs
IEJhc2ljKQotewotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQ0hST01JVU1fc3luY19x
dWVyeSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVz
ZSBHTF9DSFJPTUlVTV9zeW5jX3F1ZXJ5IGlzIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6OmVuZGw7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBnbEdlblF1ZXJpZXNFWFQoMSwgJm1RdWVy
eSk7Ci0gICAgZ2xCZWdpblF1ZXJ5RVhUKEdMX0NPTU1BTkRTX0NPTVBMRVRFRF9DSFJPTUlVTSwg
bVF1ZXJ5KTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQ2xlYXJDb2xvcigw
LjAsIDAuMCwgMS4wLCAxLjApOwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0K
LSAgICBnbEVuZFF1ZXJ5RVhUKEdMX0NPTU1BTkRTX0NPTVBMRVRFRF9DSFJPTUlVTSk7Ci0KLSAg
ICBnbEZsdXNoKCk7Ci0gICAgR0x1aW50IHJlc3VsdCA9IDA7Ci0gICAgZ2xHZXRRdWVyeU9iamVj
dHVpdkVYVChtUXVlcnksIEdMX1FVRVJZX1JFU1VMVF9FWFQsICZyZXN1bHQpOwotICAgIEVYUEVD
VF9FUShzdGF0aWNfY2FzdDxHTHVpbnQ+KEdMX1RSVUUpLCByZXN1bHQpOwotICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IHRoYXQgdGhlIHN5bmMgcXVlcnkgZW51bXMgYXJl
IG5vdCBhY2NlcHRlZCB1bmxlc3MgdGhlIGV4dGVuc2lvbiBpcyBhdmFpbGFibGUKLVRFU1RfUChT
eW5jUXVlcmllc1Rlc3QsIFZhbGlkYXRpb24pCi17Ci0gICAgLy8gTmVlZCB0aGUgR0xfRVhUX29j
Y2x1c2lvbl9xdWVyeV9ib29sZWFuIGV4dGVuc2lvbiBmb3IgdGhlIGVudHJ5IHBvaW50cwotICAg
IGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIikp
Ci0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX0VY
VF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiBpcyBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAg
ICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGJvb2wg
ZXh0ZW5zaW9uQXZhaWxhYmxlID0gZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQ0hST01JVU1fc3luY19x
dWVyeSIpOwotCi0gICAgZ2xHZW5RdWVyaWVzRVhUKDEsICZtUXVlcnkpOwotCi0gICAgZ2xCZWdp
blF1ZXJ5RVhUKEdMX0NPTU1BTkRTX0NPTVBMRVRFRF9DSFJPTUlVTSwgbVF1ZXJ5KTsKLSAgICBp
ZiAoZXh0ZW5zaW9uQXZhaWxhYmxlKQotICAgIHsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9J
TlZBTElEX0VOVU0pOwotICAgIH0KLQotICAgIGdsRGVsZXRlUXVlcmllc0VYVCgxLCAmbVF1ZXJ5
KTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBVc2UgdGhpcyB0byBzZWxl
Y3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMg
bWFqb3IgdmVyc2lvbikgdGhlc2UKLS8vIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLUFO
R0xFX0lOU1RBTlRJQVRFX1RFU1QoU3luY1F1ZXJpZXNUZXN0LAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAg
IEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgRVMzX09QRU5HTEVTKCkpOwotCi19ICAvLyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9UZXh0dXJlVGVzdC5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVGV4dHVyZVRl
c3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGFlZDA4YTc5ZDk1NmE1Mzk0
NjQ0NGJlYWQxMTY1M2ZiOGZmNzMzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9U
ZXh0dXJlVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNzM3ICswLDAgQEAKLS8vCi0vLyBD
b3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8v
Ci0KLSNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FO
R0xFVGVzdC5oIgotI2luY2x1ZGUgInRlc3RfdXRpbHMvZ2xfcmFpaS5oIgotCi11c2luZyBuYW1l
c3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi0vLyBUYWtlIGEgcGl4ZWwsIGFuZCByZXNl
dCB0aGUgY29tcG9uZW50cyBub3QgY292ZXJlZCBieSB0aGUgZm9ybWF0IHRvIGRlZmF1bHQKLS8v
IHZhbHVlcy4gSW4gcGFydGljdWxhciwgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBhbHBoYSBj
b21wb25lbnQgaXMgMjU1Ci0vLyAoMS4wIGFzIHVuc2lnbmVkIG5vcm1hbGl6ZWQgZml4ZWQgcG9p
bnQgdmFsdWUpLgotR0xDb2xvciBTbGljZUZvcm1hdENvbG9yKEdMZW51bSBmb3JtYXQsIEdMQ29s
b3IgZnVsbCkKLXsKLSAgICBzd2l0Y2ggKGZvcm1hdCkKLSAgICB7Ci0gICAgICAgIGNhc2UgR0xf
UkVEOgotICAgICAgICAgICAgcmV0dXJuIEdMQ29sb3IoZnVsbC5SLCAwLCAwLCAyNTV1KTsKLSAg
ICAgICAgY2FzZSBHTF9SRzoKLSAgICAgICAgICAgIHJldHVybiBHTENvbG9yKGZ1bGwuUiwgZnVs
bC5HLCAwLCAyNTV1KTsKLSAgICAgICAgY2FzZSBHTF9SR0I6Ci0gICAgICAgICAgICByZXR1cm4g
R0xDb2xvcihmdWxsLlIsIGZ1bGwuRywgZnVsbC5CLCAyNTV1KTsKLSAgICAgICAgY2FzZSBHTF9S
R0JBOgotICAgICAgICAgICAgcmV0dXJuIGZ1bGw7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgcmV0dXJuIEdMQ29sb3I6OndoaXRlOwot
ICAgIH0KLX0KLQotY2xhc3MgVGV4Q29vcmREcmF3VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsK
LSAgcHJvdGVjdGVkOgotICAgIFRleENvb3JkRHJhd1Rlc3QoKSA6IEFOR0xFVGVzdCgpLCBtUHJv
Z3JhbSgwKSwgbUZyYW1lYnVmZmVyKDApLCBtRnJhbWVidWZmZXJDb2xvclRleHR1cmUoMCkKLSAg
ICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdo
dCgxMjgpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdH
cmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRD
b25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCBzdGQ6OnN0cmluZyBnZXRW
ZXJ0ZXhTaGFkZXJTb3VyY2UoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKFNI
QURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0
OwotICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247Ci0gICAgICAgICAgICB2YXJ5
aW5nIHZlYzIgdGV4Y29vcmQ7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLnh5LCAwLjAs
IDEuMCk7Ci0gICAgICAgICAgICAgICAgdGV4Y29vcmQgPSAocG9zaXRpb24ueHkgKiAwLjUpICsg
MC41OwotICAgICAgICAgICAgfQotICAgICAgICApCi0gICAgICAgICk7Ci0gICAgfQotCi0gICAg
dmlydHVhbCBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRlclNvdXJjZSgpID0gMDsKLQotICAg
IHZpcnR1YWwgdm9pZCBzZXRVcFByb2dyYW0oKQotICAgIHsKLSAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcgdmVydGV4U2hhZGVyU291cmNlICAgPSBnZXRWZXJ0ZXhTaGFkZXJTb3VyY2UoKTsKLSAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBnZXRGcmFnbWVu
dFNoYWRlclNvdXJjZSgpOwotCi0gICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVy
dGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgICAgIEFTU0VSVF9O
RSgwdSwgbVByb2dyYW0pOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0K
LSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0
VXAoKTsKLQotICAgICAgICBzZXRVcEZyYW1lYnVmZmVyKCk7Ci0gICAgfQotCi0gICAgdm9pZCBU
ZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9G
UkFNRUJVRkZFUiwgMCk7Ci0gICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtRnJhbWVi
dWZmZXIpOwotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtRnJhbWVidWZmZXJDb2xvclRl
eHR1cmUpOwotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotICAgICAgICBBTkdM
RVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXRVcEZyYW1lYnVmZmVyKCkK
LSAgICB7Ci0gICAgICAgIC8vIFdlIHVzZSBhbiBGQk8gdG8gd29yayBhcm91bmQgYW4gaXNzdWUg
d2hlcmUgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIgYXBwbGllcyBTUkdCCi0gICAgICAgIC8vIGNv
bnZlcnNpb24gKHBhcnRpY3VsYXJseSBrbm93biB0byBoYXBwZW4gaW5jb3JyZWN0bHkgb24gSW50
ZWwgR0wgZHJpdmVycykuIEl0J3Mgbm90Ci0gICAgICAgIC8vIGNsZWFyIHdoZXRoZXIgdGhpcyBp
c3N1ZSBjYW4gZXZlbiBiZSBmaXhlZCBvbiBhbGwgYmFja2VuZHMuIEZvciBleGFtcGxlIEdMRVMg
My4wLjQgc3BlYwotICAgICAgICAvLyBzZWN0aW9uIDQuNCBzYXlzIHRoYXQgdGhlIGZvcm1hdCBv
ZiB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBpcyBlbnRpcmVseSB1cCB0byB0aGUgd2luZG93Ci0g
ICAgICAgIC8vIHN5c3RlbSwgc28gaXQgbWlnaHQgYmUgU1JHQiwgYW5kIEdMRVMgMy4wIGRvZXNu
J3QgaGF2ZSBhICJGUkFNRUJVRkZFUl9TUkdCIiB0byB0dXJuIG9mZgotICAgICAgICAvLyBTUkdC
IGNvbnZlcnNpb24gbGlrZSBkZXNrdG9wIEdMIGRvZXMuCi0gICAgICAgIC8vIFRPRE8ob2V0dWFo
byk6IEdldCByaWQgb2YgdGhpcyBpZiB0aGUgdW5kZXJseWluZyBpc3N1ZSBpcyBmaXhlZC4KLSAg
ICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1GcmFtZWJ1ZmZlcik7Ci0gICAgICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOwotCi0gICAgICAgIGds
R2VuVGV4dHVyZXMoMSwgJm1GcmFtZWJ1ZmZlckNvbG9yVGV4dHVyZSk7Ci0gICAgICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbUZyYW1lYnVmZmVyQ29sb3JUZXh0dXJlKTsKLSAgICAg
ICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIGdldFdpbmRvd1dpZHRo
KCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCBHTF9SR0JBLAotICAgICAgICAgICAgICAgICAgICAg
R0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJl
MkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1GcmFtZWJ1ZmZlckNvbG9yVGV4dHVyZSwg
MCk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgICAgICBBU1NFUlRfR0xFTlVN
X0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xf
RlJBTUVCVUZGRVIpKTsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsK
LSAgICB9Ci0KLSAgICAvLyBSZXR1cm5zIHRoZSBjcmVhdGVkIHRleHR1cmUgSUQuCi0gICAgR0x1
aW50IGNyZWF0ZTJEVGV4dHVyZSgpCi0gICAgewotICAgICAgICBHTHVpbnQgdGV4dHVyZTJEOwot
ICAgICAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlMkQpOwotICAgICAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUyRCk7Ci0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAgIHJldHVybiB0
ZXh0dXJlMkQ7Ci0gICAgfQotCi0gICAgR0x1aW50IG1Qcm9ncmFtOwotICAgIEdMdWludCBtRnJh
bWVidWZmZXI7Ci0KLSAgcHJpdmF0ZToKLSAgICBHTHVpbnQgbUZyYW1lYnVmZmVyQ29sb3JUZXh0
dXJlOwotfTsKLQotY2xhc3MgVGV4dHVyZTJEVGVzdCA6IHB1YmxpYyBUZXhDb29yZERyYXdUZXN0
Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBUZXh0dXJlMkRUZXN0KCkgOiBUZXhDb29yZERyYXdUZXN0
KCksIG1UZXh0dXJlMkQoMCksIG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24oLTEpIHt9Ci0KLSAg
ICBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRlclNvdXJjZSgpIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAg
ICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0gICAgICAgICAgICB1bmlmb3JtIHNhbXBs
ZXIyRCB0ZXg7Ci0gICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7Ci0KLSAgICAgICAg
ICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfRnJhZ0Nv
bG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQpOwotICAgICAgICAgICAgfQotICAgICAgICAp
Ci0gICAgICAgICk7Ci0gICAgfQotCi0gICAgdmlydHVhbCBjb25zdCBjaGFyICpnZXRUZXh0dXJl
VW5pZm9ybU5hbWUoKSB7IHJldHVybiAidGV4IjsgfQotCi0gICAgdm9pZCBzZXRVcFByb2dyYW0o
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6c2V0VXBQcm9ncmFt
KCk7Ci0gICAgICAgIG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2Nh
dGlvbihtUHJvZ3JhbSwgZ2V0VGV4dHVyZVVuaWZvcm1OYW1lKCkpOwotICAgICAgICBBU1NFUlRf
TkUoLTEsIG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgU2V0
VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6U2V0VXAoKTsK
LSAgICAgICAgbVRleHR1cmUyRCA9IGNyZWF0ZTJEVGV4dHVyZSgpOwotCi0gICAgICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUyRCk7Ci0gICAgICAg
IFRleENvb3JkRHJhd1Rlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgLy8gVGVzdHMgQ29w
eVRleFN1YkltYWdlIHdpdGggZmxvYXRpbmcgcG9pbnQgdGV4dHVyZXMgb2YgdmFyaW91cyBmb3Jt
YXRzLgotICAgIHZvaWQgdGVzdEZsb2F0Q29weVN1YkltYWdlKGludCBzb3VyY2VJbWFnZUNoYW5u
ZWxzLCBpbnQgZGVzdEltYWdlQ2hhbm5lbHMpCi0gICAgewotICAgICAgICAvLyBUT0RPKGptYWRp
bGwpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGlzIGJyb2tlbiBvbiBJbnRlbCBEM0QxMQotICAgICAg
ICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpjb3V0
IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgRDNEMTEuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzZXRVcFByb2dyYW0oKTsKLQotICAg
ICAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU190ZXh0dXJlX2Zsb2F0IikpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgZHVl
IHRvIG1pc3NpbmcgR0xfT0VTX3RleHR1cmVfZmxvYXQuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoKHNvdXJj
ZUltYWdlQ2hhbm5lbHMgPCAzIHx8IGRlc3RJbWFnZUNoYW5uZWxzIDwgMykgJiYgIWV4dGVuc2lv
bkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX3JnIikpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgZHVlIHRvIG1pc3NpbmcgR0xfRVhUX3Rl
eHR1cmVfcmcuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgR0xmbG9hdCBzb3VyY2VJbWFnZURhdGFbNF1b
MTZdID0KLSAgICAgICAgewotICAgICAgICAgICAgeyAvLyBSCi0gICAgICAgICAgICAgICAgMS4w
ZiwKLSAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAg
ICAgICAgICAgMS4wZgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsgLy8gUkcKLSAgICAg
ICAgICAgICAgICAxLjBmLCAwLjBmLAotICAgICAgICAgICAgICAgIDAuMGYsIDEuMGYsCi0gICAg
ICAgICAgICAgICAgMC4wZiwgMC4wZiwKLSAgICAgICAgICAgICAgICAxLjBmLCAxLjBmCi0gICAg
ICAgICAgICB9LAotICAgICAgICAgICAgeyAvLyBSR0IKLSAgICAgICAgICAgICAgICAxLjBmLCAw
LjBmLCAwLjBmLAotICAgICAgICAgICAgICAgIDAuMGYsIDEuMGYsIDAuMGYsCi0gICAgICAgICAg
ICAgICAgMC4wZiwgMC4wZiwgMS4wZiwKLSAgICAgICAgICAgICAgICAxLjBmLCAxLjBmLCAwLjBm
Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgeyAvLyBSR0JBCi0gICAgICAgICAgICAgICAg
MS4wZiwgMC4wZiwgMC4wZiwgMS4wZiwKLSAgICAgICAgICAgICAgICAwLjBmLCAxLjBmLCAwLjBm
LCAxLjBmLAotICAgICAgICAgICAgICAgIDAuMGYsIDAuMGYsIDEuMGYsIDEuMGYsCi0gICAgICAg
ICAgICAgICAgMS4wZiwgMS4wZiwgMC4wZiwgMS4wZgotICAgICAgICAgICAgfSwKLSAgICAgICAg
fTsKLQotICAgICAgICBHTGVudW0gaW1hZ2VGb3JtYXRzW10gPQotICAgICAgICB7Ci0gICAgICAg
ICAgICBHTF9SMzJGLAotICAgICAgICAgICAgR0xfUkczMkYsCi0gICAgICAgICAgICBHTF9SR0Iz
MkYsCi0gICAgICAgICAgICBHTF9SR0JBMzJGLAotICAgICAgICB9OwotCi0gICAgICAgIEdMZW51
bSBzb3VyY2VVbnNpemVkRm9ybWF0c1tdID0KLSAgICAgICAgewotICAgICAgICAgICAgR0xfUkVE
LAotICAgICAgICAgICAgR0xfUkcsCi0gICAgICAgICAgICBHTF9SR0IsCi0gICAgICAgICAgICBH
TF9SR0JBLAotICAgICAgICB9OwotCi0gICAgICAgIEdMdWludCB0ZXh0dXJlc1syXTsKLQotICAg
ICAgICBnbEdlblRleHR1cmVzKDIsIHRleHR1cmVzKTsKLQotICAgICAgICBHTGZsb2F0ICppbWFn
ZURhdGEgPSBzb3VyY2VJbWFnZURhdGFbc291cmNlSW1hZ2VDaGFubmVscyAtIDFdOwotICAgICAg
ICBHTGVudW0gc291cmNlSW1hZ2VGb3JtYXQgPSBpbWFnZUZvcm1hdHNbc291cmNlSW1hZ2VDaGFu
bmVscyAtIDFdOwotICAgICAgICBHTGVudW0gc291cmNlVW5zaXplZEZvcm1hdCA9IHNvdXJjZVVu
c2l6ZWRGb3JtYXRzW3NvdXJjZUltYWdlQ2hhbm5lbHMgLSAxXTsKLSAgICAgICAgR0xlbnVtIGRl
c3RJbWFnZUZvcm1hdCA9IGltYWdlRm9ybWF0c1tkZXN0SW1hZ2VDaGFubmVscyAtIDFdOwotCi0g
ICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZXNbMF0pOwotICAgICAg
ICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJELCAxLCBzb3VyY2VJbWFnZUZvcm1hdCwg
MiwgMik7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICAgICAgZ2xU
ZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDIsIDIsIHNvdXJjZVVuc2l6ZWRG
b3JtYXQsIEdMX0ZMT0FULCBpbWFnZURhdGEpOwotCi0gICAgICAgIGlmIChzb3VyY2VJbWFnZUNo
YW5uZWxzIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfcmciKSkKLSAg
ICAgICAgewotICAgICAgICAgICAgLy8gVGhpcyBpcyBub3Qgc3VwcG9ydGVkCi0gICAgICAgICAg
ICBBU1NFUlRfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICB9Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBHTHVpbnQgZmJvOwotICAgICAgICBnbEdlbkZyYW1lYnVmZmVy
cygxLCAmZmJvKTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZi
byk7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NP
TE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1swXSwgMCk7Ci0KLSAgICAg
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1sxXSk7Ci0gICAgICAgIGds
VGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIGRlc3RJbWFnZUZvcm1hdCwgMiwgMik7
Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9G
SUxURVIsIEdMX05FQVJFU1QpOwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLQotICAgICAgICBnbENvcHlU
ZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDAsIDIsIDIpOwotICAgICAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9G
UkFNRUJVRkZFUiwgMCk7Ci0gICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAw
LjVmKTsKLQotICAgICAgICBpbnQgdGVzdEltYWdlQ2hhbm5lbHMgPSBzdGQ6Om1pbihzb3VyY2VJ
bWFnZUNoYW5uZWxzLCBkZXN0SW1hZ2VDaGFubmVscyk7Ci0KLSAgICAgICAgRVhQRUNUX1BJWEVM
X0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OnJlZCk7Ci0gICAgICAgIGlmICh0ZXN0SW1hZ2VDaGFu
bmVscyA+IDEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9FUShnZXRXaW5k
b3dIZWlnaHQoKSAtIDEsIDAsIDAsIDI1NSwgMCwgMjU1KTsKLSAgICAgICAgICAgIEVYUEVDVF9Q
SVhFTF9FUShnZXRXaW5kb3dIZWlnaHQoKSAtIDEsIGdldFdpbmRvd1dpZHRoKCkgLSAxLCAyNTUs
IDI1NSwgMCwgMjU1KTsKLSAgICAgICAgICAgIGlmICh0ZXN0SW1hZ2VDaGFubmVscyA+IDIpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDAsIGdldFdpbmRv
d1dpZHRoKCkgLSAxLCAwLCAwLCAyNTUsIDI1NSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZmJvKTsKLSAgICAgICAgZ2xEZWxl
dGVUZXh0dXJlcygyLCB0ZXh0dXJlcyk7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
Ci0gICAgfQotCi0gICAgR0x1aW50IG1UZXh0dXJlMkQ7Ci0gICAgR0xpbnQgbVRleHR1cmUyRFVu
aWZvcm1Mb2NhdGlvbjsKLX07Ci0KLWNsYXNzIFRleHR1cmUyRFRlc3RFUzMgOiBwdWJsaWMgVGV4
dHVyZTJEVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgVGV4dHVyZTJEVGVzdEVTMygpIDogVGV4
dHVyZTJEVGVzdCgpIHt9Ci0KLSAgICBzdGQ6OnN0cmluZyBnZXRWZXJ0ZXhTaGFkZXJTb3VyY2Uo
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKAotICAgICAgICAg
ICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAgICAgIm91dCB2ZWMyIHRleGNvb3JkO1xu
IgotICAgICAgICAgICAgImluIHZlYzQgcG9zaXRpb247XG4iCi0gICAgICAgICAgICAidm9pZCBt
YWluKClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9u
ID0gdmVjNChwb3NpdGlvbi54eSwgMC4wLCAxLjApO1xuIgotICAgICAgICAgICAgIiAgICB0ZXhj
b29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7XG4iCi0gICAgICAgICAgICAifVxuIik7
Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRTaGFkZXJTb3VyY2UoKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKAotICAgICAgICAgICAgIiN2
ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIK
LSAgICAgICAgICAgICJ1bmlmb3JtIGhpZ2hwIHNhbXBsZXIyRCB0ZXg7XG4iCi0gICAgICAgICAg
ICAiaW4gdmVjMiB0ZXhjb29yZDtcbiIKLSAgICAgICAgICAgICJvdXQgdmVjNCBmcmFnQ29sb3I7
XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAg
ICAgICAgICAiICAgIGZyYWdDb2xvciA9IHRleHR1cmUodGV4LCB0ZXhjb29yZCk7XG4iCi0gICAg
ICAgICAgICAifVxuIik7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBUZXh0dXJlMkRUZXN0OjpTZXRVcCgpOwotICAgICAgICBzZXRVcFByb2dyYW0o
KTsKLSAgICB9Ci19OwotCi1jbGFzcyBUZXh0dXJlMkRJbnRlZ2VyQWxwaGExVGVzdEVTMyA6IHB1
YmxpYyBUZXh0dXJlMkRUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBUZXh0dXJlMkRJbnRlZ2Vy
QWxwaGExVGVzdEVTMygpIDogVGV4dHVyZTJEVGVzdCgpIHt9Ci0KLSAgICBzdGQ6OnN0cmluZyBn
ZXRWZXJ0ZXhTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6c3RyaW5nKAotICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAgICAg
Im91dCB2ZWMyIHRleGNvb3JkO1xuIgotICAgICAgICAgICAgImluIHZlYzQgcG9zaXRpb247XG4i
Ci0gICAgICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAg
ICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eSwgMC4wLCAxLjApO1xuIgot
ICAgICAgICAgICAgIiAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7XG4i
Ci0gICAgICAgICAgICAifVxuIik7Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21l
bnRTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3Ry
aW5nKAotICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAgICAgInByZWNp
c2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAgICAgICJ1bmlmb3JtIGhpZ2hwIGlzYW1wbGVy
MkQgdGV4O1xuIgotICAgICAgICAgICAgImluIHZlYzIgdGV4Y29vcmQ7XG4iCi0gICAgICAgICAg
ICAib3V0IHZlYzQgZnJhZ0NvbG9yO1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0g
ICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgICB2ZWM0IGdyZWVuID0gdmVjNCgwLCAx
LCAwLCAxKTtcbiIKLSAgICAgICAgICAgICIgICAgdmVjNCBibGFjayA9IHZlYzQoMCwgMCwgMCwg
MCk7XG4iCi0gICAgICAgICAgICAiICAgIGZyYWdDb2xvciA9ICh0ZXh0dXJlKHRleCwgdGV4Y29v
cmQpLmEgPT0gMSkgPyBncmVlbiA6IGJsYWNrO1xuIgotICAgICAgICAgICAgIn1cbiIpOwotICAg
IH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVGV4dHVyZTJE
VGVzdDo6U2V0VXAoKTsKLSAgICAgICAgc2V0VXBQcm9ncmFtKCk7Ci0gICAgfQotfTsKLQotY2xh
c3MgVGV4dHVyZTJEVW5zaWduZWRJbnRlZ2VyQWxwaGExVGVzdEVTMyA6IHB1YmxpYyBUZXh0dXJl
MkRUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBUZXh0dXJlMkRVbnNpZ25lZEludGVnZXJBbHBo
YTFUZXN0RVMzKCkgOiBUZXh0dXJlMkRUZXN0KCkge30KLQotICAgIHN0ZDo6c3RyaW5nIGdldFZl
cnRleFNoYWRlclNvdXJjZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpz
dHJpbmcoCi0gICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICAgICAib3V0
IHZlYzIgdGV4Y29vcmQ7XG4iCi0gICAgICAgICAgICAiaW4gdmVjNCBwb3NpdGlvbjtcbiIKLSAg
ICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAg
ICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLnh5LCAwLjAsIDEuMCk7XG4iCi0gICAg
ICAgICAgICAiICAgIHRleGNvb3JkID0gKHBvc2l0aW9uLnh5ICogMC41KSArIDAuNTtcbiIKLSAg
ICAgICAgICAgICJ9XG4iKTsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNo
YWRlclNvdXJjZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmco
Ci0gICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICAgICAicHJlY2lzaW9u
IGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAgICAgInVuaWZvcm0gaGlnaHAgdXNhbXBsZXIyRCB0
ZXg7XG4iCi0gICAgICAgICAgICAiaW4gdmVjMiB0ZXhjb29yZDtcbiIKLSAgICAgICAgICAgICJv
dXQgdmVjNCBmcmFnQ29sb3I7XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAg
ICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIHZlYzQgZ3JlZW4gPSB2ZWM0KDAsIDEsIDAs
IDEpO1xuIgotICAgICAgICAgICAgIiAgICB2ZWM0IGJsYWNrID0gdmVjNCgwLCAwLCAwLCAwKTtc
biIKLSAgICAgICAgICAgICIgICAgZnJhZ0NvbG9yID0gKHRleHR1cmUodGV4LCB0ZXhjb29yZCku
YSA9PSAxdSkgPyBncmVlbiA6IGJsYWNrO1xuIgotICAgICAgICAgICAgIn1cbiIpOwotICAgIH0K
LQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVGV4dHVyZTJEVGVz
dDo6U2V0VXAoKTsKLSAgICAgICAgc2V0VXBQcm9ncmFtKCk7Ci0gICAgfQotfTsKLQotY2xhc3Mg
VGV4dHVyZTJEVGVzdFdpdGhEcmF3U2NhbGUgOiBwdWJsaWMgVGV4dHVyZTJEVGVzdAotewotICBw
cm90ZWN0ZWQ6Ci0gICAgVGV4dHVyZTJEVGVzdFdpdGhEcmF3U2NhbGUoKSA6IFRleHR1cmUyRFRl
c3QoKSwgbURyYXdTY2FsZVVuaWZvcm1Mb2NhdGlvbigtMSkge30KLQotICAgIHN0ZDo6c3RyaW5n
IGdldFZlcnRleFNoYWRlclNvdXJjZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4g
c3RkOjpzdHJpbmcoU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNp
b24gaGlnaHAgZmxvYXQ7Ci0gICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKLSAg
ICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsKLQotICAgICAgICAgICAgdW5pZm9ybSB2
ZWMyIGRyYXdTY2FsZTsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24ueHkgKiBkcmF3U2Nh
bGUsIDAuMCwgMS4wKTsKLSAgICAgICAgICAgICAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAq
IDAuNSkgKyAwLjU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICkKLSAgICAgICAgKTsKLSAgICB9
Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFRleHR1cmUyRFRl
c3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgc2V0VXBQcm9ncmFtKCk7Ci0KLSAgICAgICAgbURyYXdT
Y2FsZVVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAiZHJh
d1NjYWxlIik7Ci0gICAgICAgIEFTU0VSVF9ORSgtMSwgbURyYXdTY2FsZVVuaWZvcm1Mb2NhdGlv
bik7Ci0KLSAgICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAgICAgZ2xVbmlmb3Jt
MmYobURyYXdTY2FsZVVuaWZvcm1Mb2NhdGlvbiwgMS4wZiwgMS4wZik7Ci0gICAgICAgIGdsVXNl
UHJvZ3JhbSgwKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAg
R0xpbnQgbURyYXdTY2FsZVVuaWZvcm1Mb2NhdGlvbjsKLX07Ci0KLWNsYXNzIFNhbXBsZXIyREFz
RnVuY3Rpb25QYXJhbWV0ZXJUZXN0IDogcHVibGljIFRleHR1cmUyRFRlc3QKLXsKLSAgcHJvdGVj
dGVkOgotICAgIFNhbXBsZXIyREFzRnVuY3Rpb25QYXJhbWV0ZXJUZXN0KCkgOiBUZXh0dXJlMkRU
ZXN0KCkge30KLQotICAgIHN0ZDo6c3RyaW5nIGdldEZyYWdtZW50U2hhZGVyU291cmNlKCkgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnN0cmluZyhTSEFERVJfU09VUkNFCi0g
ICAgICAgICgKLSAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSAgICAgICAgICAg
IHVuaWZvcm0gc2FtcGxlcjJEIHRleDsKLSAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29y
ZDsKLQotICAgICAgICAgICAgdmVjNCBjb21wdXRlRnJhZ0NvbG9yKHNhbXBsZXIyRCBhVGV4KQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJlMkQoYVRleCwgdGV4
Y29vcmQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IGNvbXB1dGVGcmFnQ29sb3Io
dGV4KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKQotICAgICAgICApOwotICAgIH0KLQotICAg
IHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVGV4dHVyZTJEVGVzdDo6U2V0
VXAoKTsKLSAgICAgICAgc2V0VXBQcm9ncmFtKCk7Ci0gICAgfQotfTsKLQotY2xhc3MgVGV4dHVy
ZUN1YmVUZXN0IDogcHVibGljIFRleENvb3JkRHJhd1Rlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAg
IFRleHR1cmVDdWJlVGVzdCgpCi0gICAgICAgIDogVGV4Q29vcmREcmF3VGVzdCgpLAotICAgICAg
ICAgIG1UZXh0dXJlMkQoMCksCi0gICAgICAgICAgbVRleHR1cmVDdWJlKDApLAotICAgICAgICAg
IG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24oLTEpLAotICAgICAgICAgIG1UZXh0dXJlQ3ViZVVu
aWZvcm1Mb2NhdGlvbigtMSkKLSAgICB7Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgZ2V0RnJh
Z21lbnRTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
c3RyaW5nKFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIGhp
Z2hwIGZsb2F0OwotICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4MkQ7Ci0gICAgICAg
ICAgICB1bmlmb3JtIHNhbXBsZXJDdWJlIHRleEN1YmU7Ci0gICAgICAgICAgICB2YXJ5aW5nIHZl
YzIgdGV4Y29vcmQ7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleDJELCB0ZXhjb29yZCk7
Ci0gICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yICs9IHRleHR1cmVDdWJlKHRleEN1YmUsIHZl
YzModGV4Y29vcmQsIDApKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKQotICAgICAgICApOwot
ICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVGV4Q29v
cmREcmF3VGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVy
ZUN1YmUpOwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIG1UZXh0
dXJlQ3ViZSk7Ci0gICAgICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfQ1VCRV9NQVAs
IDEsIEdMX1JHQkE4LCAxLCAxKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICAgICAgbVRleHR1cmUyRCA9IGNyZWF0ZTJEVGV4dHVyZSgpOwotCi0gICAgICAgIHNldFVwUHJv
Z3JhbSgpOwotCi0gICAgICAgIG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZv
cm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRleDJEIik7Ci0gICAgICAgIEFTU0VSVF9ORSgtMSwgbVRl
eHR1cmUyRFVuaWZvcm1Mb2NhdGlvbik7Ci0gICAgICAgIG1UZXh0dXJlQ3ViZVVuaWZvcm1Mb2Nh
dGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4Q3ViZSIpOwotICAgICAg
ICBBU1NFUlRfTkUoLTEsIG1UZXh0dXJlQ3ViZVVuaWZvcm1Mb2NhdGlvbik7Ci0gICAgfQotCi0g
ICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0ZVRleHR1
cmVzKDEsICZtVGV4dHVyZUN1YmUpOwotICAgICAgICBUZXhDb29yZERyYXdUZXN0OjpUZWFyRG93
bigpOwotICAgIH0KLQotICAgIEdMdWludCBtVGV4dHVyZTJEOwotICAgIEdMdWludCBtVGV4dHVy
ZUN1YmU7Ci0gICAgR0xpbnQgbVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbjsKLSAgICBHTGludCBt
VGV4dHVyZUN1YmVVbmlmb3JtTG9jYXRpb247Ci19OwotCi1jbGFzcyBTYW1wbGVyQXJyYXlUZXN0
IDogcHVibGljIFRleENvb3JkRHJhd1Rlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFNhbXBsZXJB
cnJheVRlc3QoKQotICAgICAgICA6IFRleENvb3JkRHJhd1Rlc3QoKSwKLSAgICAgICAgICBtVGV4
dHVyZTJEQSgwKSwKLSAgICAgICAgICBtVGV4dHVyZTJEQigwKSwKLSAgICAgICAgICBtVGV4dHVy
ZTBVbmlmb3JtTG9jYXRpb24oLTEpLAotICAgICAgICAgIG1UZXh0dXJlMVVuaWZvcm1Mb2NhdGlv
bigtMSkKLSAgICB7Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRTaGFkZXJT
b3VyY2UoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKFNIQURF
Ul9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
Ci0gICAgICAgICAgICB1bmlmb3JtIGhpZ2hwIHNhbXBsZXIyRCB0ZXgyREFycmF5WzJdOwotICAg
ICAgICAgICAgdmFyeWluZyB2ZWMyIHRleGNvb3JkOwotICAgICAgICAgICAgdm9pZCBtYWluKCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQo
dGV4MkRBcnJheVswXSwgdGV4Y29vcmQpOwotICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciAr
PSB0ZXh0dXJlMkQodGV4MkRBcnJheVsxXSwgdGV4Y29vcmQpOwotICAgICAgICAgICAgfQotICAg
ICAgICApCi0gICAgICAgICk7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBUZXhDb29yZERyYXdUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIHNldFVw
UHJvZ3JhbSgpOwotCi0gICAgICAgIG1UZXh0dXJlMFVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5p
Zm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4MkRBcnJheVswXSIpOwotICAgICAgICBBU1NFUlRf
TkUoLTEsIG1UZXh0dXJlMFVuaWZvcm1Mb2NhdGlvbik7Ci0gICAgICAgIG1UZXh0dXJlMVVuaWZv
cm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4MkRBcnJheVsx
XSIpOwotICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXh0dXJlMVVuaWZvcm1Mb2NhdGlvbik7Ci0K
LSAgICAgICAgbVRleHR1cmUyREEgPSBjcmVhdGUyRFRleHR1cmUoKTsKLSAgICAgICAgbVRleHR1
cmUyREIgPSBjcmVhdGUyRFRleHR1cmUoKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBn
bERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZTJEQSk7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVy
ZXMoMSwgJm1UZXh0dXJlMkRCKTsKLSAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6VGVhckRvd24o
KTsKLSAgICB9Ci0KLSAgICB2b2lkIHRlc3RTYW1wbGVyQXJyYXlEcmF3KCkKLSAgICB7Ci0gICAg
ICAgIEdMdWJ5dGUgdGV4RGF0YVs0XTsKLSAgICAgICAgdGV4RGF0YVswXSA9IDA7Ci0gICAgICAg
IHRleERhdGFbMV0gPSA2MDsKLSAgICAgICAgdGV4RGF0YVsyXSA9IDA7Ci0gICAgICAgIHRleERh
dGFbM10gPSAyNTU7Ci0KLSAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAg
ICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEQSk7Ci0gICAgICAg
IGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAxLCAxLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLCB0ZXhEYXRhKTsKLQotICAgICAgICB0ZXhEYXRhWzFdID0gMTIwOwot
ICAgICAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTEpOwotICAgICAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkRCKTsKLSAgICAgICAgZ2xUZXhTdWJJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
IHRleERhdGEpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfTk9fRVJST1IpOwotCi0gICAg
ICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJl
MFVuaWZvcm1Mb2NhdGlvbiwgMCk7Ci0gICAgICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlMVVuaWZv
cm1Mb2NhdGlvbiwgMSk7Ci0gICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAw
LjVmKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgRVhQRUNUX1BJ
WEVMX05FQVIoMCwgMCwgMCwgMTgwLCAwLCAyNTUsIDIpOwotICAgIH0KLQotICAgIEdMdWludCBt
VGV4dHVyZTJEQTsKLSAgICBHTHVpbnQgbVRleHR1cmUyREI7Ci0gICAgR0xpbnQgbVRleHR1cmUw
VW5pZm9ybUxvY2F0aW9uOwotICAgIEdMaW50IG1UZXh0dXJlMVVuaWZvcm1Mb2NhdGlvbjsKLX07
Ci0KLQotY2xhc3MgU2FtcGxlckFycmF5QXNGdW5jdGlvblBhcmFtZXRlclRlc3QgOiBwdWJsaWMg
U2FtcGxlckFycmF5VGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgU2FtcGxlckFycmF5QXNGdW5j
dGlvblBhcmFtZXRlclRlc3QoKSA6IFNhbXBsZXJBcnJheVRlc3QoKSB7fQotCi0gICAgc3RkOjpz
dHJpbmcgZ2V0RnJhZ21lbnRTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHN0ZDo6c3RyaW5nKFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAg
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Ci0gICAgICAgICAgICB1bmlmb3JtIGhpZ2hwIHNhbXBs
ZXIyRCB0ZXgyREFycmF5WzJdOwotICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHRleGNvb3JkOwot
Ci0gICAgICAgICAgICB2ZWM0IGNvbXB1dGVGcmFnQ29sb3IoaGlnaHAgc2FtcGxlcjJEIGFUZXgy
REFycmF5WzJdKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0dXJl
MkQoYVRleDJEQXJyYXlbMF0sIHRleGNvb3JkKSArIHRleHR1cmUyRChhVGV4MkRBcnJheVsxXSwg
dGV4Y29vcmQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IGNvbXB1dGVGcmFnQ29s
b3IodGV4MkRBcnJheSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICkKLSAgICAgICAgKTsKLSAg
ICB9Ci19OwotCi1jbGFzcyBUZXh0dXJlMkRBcnJheVRlc3RFUzMgOiBwdWJsaWMgVGV4Q29vcmRE
cmF3VGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgVGV4dHVyZTJEQXJyYXlUZXN0RVMzKCkgOiBU
ZXhDb29yZERyYXdUZXN0KCksIG0yREFycmF5VGV4dHVyZSgwKSwgbVRleHR1cmVBcnJheUxvY2F0
aW9uKC0xKSB7fQotCi0gICAgc3RkOjpzdHJpbmcgZ2V0VmVydGV4U2hhZGVyU291cmNlKCkgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKLSAgICAgICAgICAgICIj
dmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgICAgICJvdXQgdmVjMiB0ZXhjb29yZDtcbiIKLSAg
ICAgICAgICAgICJpbiB2ZWM0IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbigp
XG4iCi0gICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZl
YzQocG9zaXRpb24ueHksIDAuMCwgMS4wKTtcbiIKLSAgICAgICAgICAgICIgICAgdGV4Y29vcmQg
PSAocG9zaXRpb24ueHkgKiAwLjUpICsgMC41O1xuIgotICAgICAgICAgICAgIn1cbiIpOwotICAg
IH0KLQotICAgIHN0ZDo6c3RyaW5nIGdldEZyYWdtZW50U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKLSAgICAgICAgICAgICIjdmVyc2lv
biAzMDAgZXNcbiIKLSAgICAgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCi0gICAg
ICAgICAgICAidW5pZm9ybSBoaWdocCBzYW1wbGVyMkRBcnJheSB0ZXgyREFycmF5O1xuIgotICAg
ICAgICAgICAgImluIHZlYzIgdGV4Y29vcmQ7XG4iCi0gICAgICAgICAgICAib3V0IHZlYzQgZnJh
Z0NvbG9yO1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgICAie1xu
IgotICAgICAgICAgICAgIiAgICBmcmFnQ29sb3IgPSB0ZXh0dXJlKHRleDJEQXJyYXksIHZlYzMo
dGV4Y29vcmQueCwgdGV4Y29vcmQueSwgMC4wKSk7XG4iCi0gICAgICAgICAgICAifVxuIik7Ci0g
ICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBUZXhDb29y
ZERyYXdUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIHNldFVwUHJvZ3JhbSgpOwotCi0gICAgICAg
IG1UZXh0dXJlQXJyYXlMb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAi
dGV4MkRBcnJheSIpOwotICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXh0dXJlQXJyYXlMb2NhdGlv
bik7Ci0KLSAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbTJEQXJyYXlUZXh0dXJlKTsKLSAgICAg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92
ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtMkRBcnJheVRleHR1
cmUpOwotICAgICAgICBUZXhDb29yZERyYXdUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQotICAg
IEdMdWludCBtMkRBcnJheVRleHR1cmU7Ci0gICAgR0xpbnQgbVRleHR1cmVBcnJheUxvY2F0aW9u
OwotfTsKLQotY2xhc3MgVGV4dHVyZVNpemVUZXh0dXJlQXJyYXlUZXN0IDogcHVibGljIFRleENv
b3JkRHJhd1Rlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFRleHR1cmVTaXplVGV4dHVyZUFycmF5
VGVzdCgpCi0gICAgICAgIDogVGV4Q29vcmREcmF3VGVzdCgpLAotICAgICAgICAgIG1UZXh0dXJl
MkRBKDApLAotICAgICAgICAgIG1UZXh0dXJlMkRCKDApLAotICAgICAgICAgIG1UZXh0dXJlMExv
Y2F0aW9uKC0xKSwKLSAgICAgICAgICBtVGV4dHVyZTFMb2NhdGlvbigtMSkKLSAgICB7Ci0gICAg
fQotCi0gICAgc3RkOjpzdHJpbmcgZ2V0VmVydGV4U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKLSAgICAgICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKLSAgICAgICAgICAgICJpbiB2ZWM0IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAg
InZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgICBnbF9Q
b3NpdGlvbiA9IHZlYzQocG9zaXRpb24ueHksIDAuMCwgMS4wKTtcbiIKLSAgICAgICAgICAgICJ9
XG4iKTsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRlclNvdXJjZSgp
IG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoCi0gICAgICAgICAg
ICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0
O1xuIgotICAgICAgICAgICAgInVuaWZvcm0gaGlnaHAgc2FtcGxlcjJEIHRleDJEQXJyYXlbMl07
XG4iCi0gICAgICAgICAgICAib3V0IHZlYzQgZnJhZ0NvbG9yO1xuIgotICAgICAgICAgICAgInZv
aWQgbWFpbigpXG4iCi0gICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgICBmbG9hdCBy
ZWQgPSBmbG9hdCh0ZXh0dXJlU2l6ZSh0ZXgyREFycmF5WzBdLCAwKS54KSAvIDI1NS4wO1xuIgot
ICAgICAgICAgICAgIiAgICBmbG9hdCBncmVlbiA9IGZsb2F0KHRleHR1cmVTaXplKHRleDJEQXJy
YXlbMV0sIDApLngpIC8gMjU1LjA7XG4iCi0gICAgICAgICAgICAiICAgIGZyYWdDb2xvciA9IHZl
YzQocmVkLCBncmVlbiwgMC4wLCAxLjApO1xuIgotICAgICAgICAgICAgIn1cbiIpOwotICAgIH0K
LQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVGV4Q29vcmREcmF3
VGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBzZXRVcFByb2dyYW0oKTsKLQotICAgICAgICBtVGV4
dHVyZTBMb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4MkRBcnJh
eVswXSIpOwotICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXh0dXJlMExvY2F0aW9uKTsKLSAgICAg
ICAgbVRleHR1cmUxTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRl
eDJEQXJyYXlbMV0iKTsKLSAgICAgICAgQVNTRVJUX05FKC0xLCBtVGV4dHVyZTFMb2NhdGlvbik7
Ci0KLSAgICAgICAgbVRleHR1cmUyREEgPSBjcmVhdGUyRFRleHR1cmUoKTsKLSAgICAgICAgbVRl
eHR1cmUyREIgPSBjcmVhdGUyRFRleHR1cmUoKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZTJEQSk7Ci0gICAgICAgIGdsRGVsZXRlVGV4
dHVyZXMoMSwgJm1UZXh0dXJlMkRCKTsKLSAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6VGVhckRv
d24oKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVRleHR1cmUyREE7Ci0gICAgR0x1aW50IG1UZXh0
dXJlMkRCOwotICAgIEdMaW50IG1UZXh0dXJlMExvY2F0aW9uOwotICAgIEdMaW50IG1UZXh0dXJl
MUxvY2F0aW9uOwotfTsKLQotY2xhc3MgVGV4dHVyZTNEVGVzdEVTMyA6IHB1YmxpYyBUZXhDb29y
ZERyYXdUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBUZXh0dXJlM0RUZXN0RVMzKCkgOiBUZXhD
b29yZERyYXdUZXN0KCksIG1UZXh0dXJlM0QoMCksIG1UZXh0dXJlM0RVbmlmb3JtTG9jYXRpb24o
LTEpIHt9Ci0KLSAgICBzdGQ6OnN0cmluZyBnZXRWZXJ0ZXhTaGFkZXJTb3VyY2UoKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKAotICAgICAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIgotICAgICAgICAgICAgIm91dCB2ZWMyIHRleGNvb3JkO1xuIgotICAgICAg
ICAgICAgImluIHZlYzQgcG9zaXRpb247XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKClcbiIK
LSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChw
b3NpdGlvbi54eSwgMC4wLCAxLjApO1xuIgotICAgICAgICAgICAgIiAgICB0ZXhjb29yZCA9IChw
b3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7XG4iCi0gICAgICAgICAgICAifVxuIik7Ci0gICAgfQot
Ci0gICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKAotICAgICAgICAgICAgIiN2ZXJzaW9uIDMw
MCBlc1xuIgotICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAg
ICAgICJ1bmlmb3JtIGhpZ2hwIHNhbXBsZXIzRCB0ZXgzRDtcbiIKLSAgICAgICAgICAgICJpbiB2
ZWMyIHRleGNvb3JkO1xuIgotICAgICAgICAgICAgIm91dCB2ZWM0IGZyYWdDb2xvcjtcbiIKLSAg
ICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAg
ICIgICAgZnJhZ0NvbG9yID0gdGV4dHVyZSh0ZXgzRCwgdmVjMyh0ZXhjb29yZCwgMC4wKSk7XG4i
Ci0gICAgICAgICAgICAifVxuIik7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRl
Ci0gICAgewotICAgICAgICBUZXhDb29yZERyYXdUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGds
R2VuVGV4dHVyZXMoMSwgJm1UZXh0dXJlM0QpOwotCi0gICAgICAgIHNldFVwUHJvZ3JhbSgpOwot
Ci0gICAgICAgIG1UZXh0dXJlM0RVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlv
bihtUHJvZ3JhbSwgInRleDNEIik7Ci0gICAgICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1cmUzRFVu
aWZvcm1Mb2NhdGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZTNEKTsKLSAgICAgICAg
VGV4Q29vcmREcmF3VGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVRleHR1
cmUzRDsKLSAgICBHTGludCBtVGV4dHVyZTNEVW5pZm9ybUxvY2F0aW9uOwotfTsKLQotY2xhc3Mg
U2hhZG93U2FtcGxlclBsdXNTYW1wbGVyM0RUZXN0RVMzIDogcHVibGljIFRleENvb3JkRHJhd1Rl
c3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFNoYWRvd1NhbXBsZXJQbHVzU2FtcGxlcjNEVGVzdEVT
MygpCi0gICAgICAgIDogVGV4Q29vcmREcmF3VGVzdCgpLAotICAgICAgICAgIG1UZXh0dXJlU2hh
ZG93KDApLAotICAgICAgICAgIG1UZXh0dXJlM0QoMCksCi0gICAgICAgICAgbVRleHR1cmVTaGFk
b3dVbmlmb3JtTG9jYXRpb24oLTEpLAotICAgICAgICAgIG1UZXh0dXJlM0RVbmlmb3JtTG9jYXRp
b24oLTEpLAotICAgICAgICAgIG1EZXB0aFJlZlVuaWZvcm1Mb2NhdGlvbigtMSkKLSAgICB7Ci0g
ICAgfQotCi0gICAgc3RkOjpzdHJpbmcgZ2V0VmVydGV4U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKLSAgICAgICAgICAgICIjdmVyc2lv
biAzMDAgZXNcbiIKLSAgICAgICAgICAgICJvdXQgdmVjMiB0ZXhjb29yZDtcbiIKLSAgICAgICAg
ICAgICJpbiB2ZWM0IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0g
ICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9z
aXRpb24ueHksIDAuMCwgMS4wKTtcbiIKLSAgICAgICAgICAgICIgICAgdGV4Y29vcmQgPSAocG9z
aXRpb24ueHkgKiAwLjUpICsgMC41O1xuIgotICAgICAgICAgICAgIn1cbiIpOwotICAgIH0KLQot
ICAgIHN0ZDo6c3RyaW5nIGdldEZyYWdtZW50U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKLSAgICAgICAgICAgICIjdmVyc2lvbiAzMDAg
ZXNcbiIKLSAgICAgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCi0gICAgICAgICAg
ICAidW5pZm9ybSBoaWdocCBzYW1wbGVyMkRTaGFkb3cgdGV4MkRTaGFkb3c7XG4iCi0gICAgICAg
ICAgICAidW5pZm9ybSBoaWdocCBzYW1wbGVyM0QgdGV4M0Q7XG4iCi0gICAgICAgICAgICAiaW4g
dmVjMiB0ZXhjb29yZDtcbiIKLSAgICAgICAgICAgICJ1bmlmb3JtIGZsb2F0IGRlcHRoUmVmO1xu
IgotICAgICAgICAgICAgIm91dCB2ZWM0IGZyYWdDb2xvcjtcbiIKLSAgICAgICAgICAgICJ2b2lk
IG1haW4oKVxuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIgICAgZnJhZ0NvbG9y
ID0gdmVjNCh0ZXh0dXJlKHRleDJEU2hhZG93LCB2ZWMzKHRleGNvb3JkLCBkZXB0aFJlZikpICog
MC41KTtcbiIKLSAgICAgICAgICAgICIgICAgZnJhZ0NvbG9yICs9IHRleHR1cmUodGV4M0QsIHZl
YzModGV4Y29vcmQsIDAuMCkpO1xuIgotICAgICAgICAgICAgIn1cbiIpOwotICAgIH0KLQotICAg
IHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6
U2V0VXAoKTsKLQotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZTNEKTsKLQotICAg
ICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZVNoYWRvdyk7Ci0gICAgICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVTaGFkb3cpOwotICAgICAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9DT01QQVJFX01PREUsIEdMX0NPTVBBUkVf
UkVGX1RPX1RFWFRVUkUpOwotCi0gICAgICAgIHNldFVwUHJvZ3JhbSgpOwotCi0gICAgICAgIG1U
ZXh0dXJlU2hhZG93VW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dy
YW0sICJ0ZXgyRFNoYWRvdyIpOwotICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXh0dXJlU2hhZG93
VW5pZm9ybUxvY2F0aW9uKTsKLSAgICAgICAgbVRleHR1cmUzRFVuaWZvcm1Mb2NhdGlvbiA9IGds
R2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4M0QiKTsKLSAgICAgICAgQVNTRVJUX05F
KC0xLCBtVGV4dHVyZTNEVW5pZm9ybUxvY2F0aW9uKTsKLSAgICAgICAgbURlcHRoUmVmVW5pZm9y
bUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJkZXB0aFJlZiIpOwot
ICAgICAgICBBU1NFUlRfTkUoLTEsIG1EZXB0aFJlZlVuaWZvcm1Mb2NhdGlvbik7Ci0gICAgfQot
Ci0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0ZVRl
eHR1cmVzKDEsICZtVGV4dHVyZVNoYWRvdyk7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwg
Jm1UZXh0dXJlM0QpOwotICAgICAgICBUZXhDb29yZERyYXdUZXN0OjpUZWFyRG93bigpOwotICAg
IH0KLQotICAgIEdMdWludCBtVGV4dHVyZVNoYWRvdzsKLSAgICBHTHVpbnQgbVRleHR1cmUzRDsK
LSAgICBHTGludCBtVGV4dHVyZVNoYWRvd1VuaWZvcm1Mb2NhdGlvbjsKLSAgICBHTGludCBtVGV4
dHVyZTNEVW5pZm9ybUxvY2F0aW9uOwotICAgIEdMaW50IG1EZXB0aFJlZlVuaWZvcm1Mb2NhdGlv
bjsKLX07Ci0KLWNsYXNzIFNhbXBsZXJUeXBlTWl4VGVzdEVTMyA6IHB1YmxpYyBUZXhDb29yZERy
YXdUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBTYW1wbGVyVHlwZU1peFRlc3RFUzMoKQotICAg
ICAgICA6IFRleENvb3JkRHJhd1Rlc3QoKSwKLSAgICAgICAgICBtVGV4dHVyZTJEKDApLAotICAg
ICAgICAgIG1UZXh0dXJlQ3ViZSgwKSwKLSAgICAgICAgICBtVGV4dHVyZTJEU2hhZG93KDApLAot
ICAgICAgICAgIG1UZXh0dXJlQ3ViZVNoYWRvdygwKSwKLSAgICAgICAgICBtVGV4dHVyZTJEVW5p
Zm9ybUxvY2F0aW9uKC0xKSwKLSAgICAgICAgICBtVGV4dHVyZUN1YmVVbmlmb3JtTG9jYXRpb24o
LTEpLAotICAgICAgICAgIG1UZXh0dXJlMkRTaGFkb3dVbmlmb3JtTG9jYXRpb24oLTEpLAotICAg
ICAgICAgIG1UZXh0dXJlQ3ViZVNoYWRvd1VuaWZvcm1Mb2NhdGlvbigtMSksCi0gICAgICAgICAg
bURlcHRoUmVmVW5pZm9ybUxvY2F0aW9uKC0xKQotICAgIHsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0
cmluZyBnZXRWZXJ0ZXhTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHN0ZDo6c3RyaW5nKAotICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAg
ICAgICAgIm91dCB2ZWMyIHRleGNvb3JkO1xuIgotICAgICAgICAgICAgImluIHZlYzQgcG9zaXRp
b247XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0g
ICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eSwgMC4wLCAxLjAp
O1xuIgotICAgICAgICAgICAgIiAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAw
LjU7XG4iCi0gICAgICAgICAgICAifVxuIik7Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgZ2V0
RnJhZ21lbnRTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0
ZDo6c3RyaW5nKAotICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAgICAg
InByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAgICAgICJ1bmlmb3JtIGhpZ2hwIHNh
bXBsZXIyRCB0ZXgyRDtcbiIKLSAgICAgICAgICAgICJ1bmlmb3JtIGhpZ2hwIHNhbXBsZXJDdWJl
IHRleEN1YmU7XG4iCi0gICAgICAgICAgICAidW5pZm9ybSBoaWdocCBzYW1wbGVyMkRTaGFkb3cg
dGV4MkRTaGFkb3c7XG4iCi0gICAgICAgICAgICAidW5pZm9ybSBoaWdocCBzYW1wbGVyQ3ViZVNo
YWRvdyB0ZXhDdWJlU2hhZG93O1xuIgotICAgICAgICAgICAgImluIHZlYzIgdGV4Y29vcmQ7XG4i
Ci0gICAgICAgICAgICAidW5pZm9ybSBmbG9hdCBkZXB0aFJlZjtcbiIKLSAgICAgICAgICAgICJv
dXQgdmVjNCBmcmFnQ29sb3I7XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAg
ICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIGZyYWdDb2xvciA9IHRleHR1cmUodGV4MkQs
IHRleGNvb3JkKTtcbiIKLSAgICAgICAgICAgICIgICAgZnJhZ0NvbG9yICs9IHRleHR1cmUodGV4
Q3ViZSwgdmVjMygxLjAsIDAuMCwgMC4wKSk7XG4iCi0gICAgICAgICAgICAiICAgIGZyYWdDb2xv
ciArPSB2ZWM0KHRleHR1cmUodGV4MkRTaGFkb3csIHZlYzModGV4Y29vcmQsIGRlcHRoUmVmKSkg
KiAwLjI1KTtcbiIKLSAgICAgICAgICAgICIgICAgZnJhZ0NvbG9yICs9IHZlYzQodGV4dHVyZSh0
ZXhDdWJlU2hhZG93LCB2ZWM0KDEuMCwgMC4wLCAwLjAsIGRlcHRoUmVmKSkgKiAiCi0gICAgICAg
ICAgICAiMC4xMjUpO1xuIgotICAgICAgICAgICAgIn1cbiIpOwotICAgIH0KLQotICAgIHZvaWQg
U2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6U2V0VXAo
KTsKLQotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZTJEKTsKLSAgICAgICAgZ2xH
ZW5UZXh0dXJlcygxLCAmbVRleHR1cmVDdWJlKTsKLQotICAgICAgICBnbEdlblRleHR1cmVzKDEs
ICZtVGV4dHVyZTJEU2hhZG93KTsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBtVGV4dHVyZTJEU2hhZG93KTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFLCBHTF9DT01QQVJFX1JFRl9UT19URVhUVVJFKTsK
LQotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZUN1YmVTaGFkb3cpOwotICAgICAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIG1UZXh0dXJlQ3ViZVNoYWRvdyk7
Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJF
X0NPTVBBUkVfTU9ERSwgR0xfQ09NUEFSRV9SRUZfVE9fVEVYVFVSRSk7Ci0KLSAgICAgICAgc2V0
VXBQcm9ncmFtKCk7Ci0KLSAgICAgICAgbVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0
VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4MkQiKTsKLSAgICAgICAgQVNTRVJUX05FKC0x
LCBtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uKTsKLSAgICAgICAgbVRleHR1cmVDdWJlVW5pZm9y
bUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ0ZXhDdWJlIik7Ci0g
ICAgICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1cmVDdWJlVW5pZm9ybUxvY2F0aW9uKTsKLSAgICAg
ICAgbVRleHR1cmUyRFNoYWRvd1VuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9u
KG1Qcm9ncmFtLCAidGV4MkRTaGFkb3ciKTsKLSAgICAgICAgQVNTRVJUX05FKC0xLCBtVGV4dHVy
ZTJEU2hhZG93VW5pZm9ybUxvY2F0aW9uKTsKLSAgICAgICAgbVRleHR1cmVDdWJlU2hhZG93VW5p
Zm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ0ZXhDdWJlU2hh
ZG93Iik7Ci0gICAgICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1cmVDdWJlU2hhZG93VW5pZm9ybUxv
Y2F0aW9uKTsKLSAgICAgICAgbURlcHRoUmVmVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3Jt
TG9jYXRpb24obVByb2dyYW0sICJkZXB0aFJlZiIpOwotICAgICAgICBBU1NFUlRfTkUoLTEsIG1E
ZXB0aFJlZlVuaWZvcm1Mb2NhdGlvbik7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBn
bERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZTJEKTsKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJl
cygxLCAmbVRleHR1cmVDdWJlKTsKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1
cmUyRFNoYWRvdyk7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlQ3ViZVNo
YWRvdyk7Ci0gICAgICAgIFRleENvb3JkRHJhd1Rlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0g
ICAgR0x1aW50IG1UZXh0dXJlMkQ7Ci0gICAgR0x1aW50IG1UZXh0dXJlQ3ViZTsKLSAgICBHTHVp
bnQgbVRleHR1cmUyRFNoYWRvdzsKLSAgICBHTHVpbnQgbVRleHR1cmVDdWJlU2hhZG93OwotICAg
IEdMaW50IG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb247Ci0gICAgR0xpbnQgbVRleHR1cmVDdWJl
VW5pZm9ybUxvY2F0aW9uOwotICAgIEdMaW50IG1UZXh0dXJlMkRTaGFkb3dVbmlmb3JtTG9jYXRp
b247Ci0gICAgR0xpbnQgbVRleHR1cmVDdWJlU2hhZG93VW5pZm9ybUxvY2F0aW9uOwotICAgIEdM
aW50IG1EZXB0aFJlZlVuaWZvcm1Mb2NhdGlvbjsKLX07Ci0KLWNsYXNzIFNhbXBsZXJJblN0cnVj
dFRlc3QgOiBwdWJsaWMgVGV4dHVyZTJEVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgU2FtcGxl
ckluU3RydWN0VGVzdCgpIDogVGV4dHVyZTJEVGVzdCgpIHt9Ci0KLSAgICBjb25zdCBjaGFyICpn
ZXRUZXh0dXJlVW5pZm9ybU5hbWUoKSBvdmVycmlkZSB7IHJldHVybiAidXMudGV4IjsgfQotCi0g
ICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKAotICAgICAgICAgICAgInByZWNpc2lvbiBoaWdo
cCBmbG9hdDtcbiIKLSAgICAgICAgICAgICJzdHJ1Y3QgU1xuIgotICAgICAgICAgICAgIntcbiIK
LSAgICAgICAgICAgICIgICAgdmVjNCBhO1xuIgotICAgICAgICAgICAgIiAgICBoaWdocCBzYW1w
bGVyMkQgdGV4O1xuIgotICAgICAgICAgICAgIn07XG4iCi0gICAgICAgICAgICAidW5pZm9ybSBT
IHVzO1xuIgotICAgICAgICAgICAgInZhcnlpbmcgdmVjMiB0ZXhjb29yZDtcbiIKLSAgICAgICAg
ICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIgICAg
Z2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHVzLnRleCwgdGV4Y29vcmQgKyB1cy5hLngpO1xuIgot
ICAgICAgICAgICAgIn1cbiIpOwotICAgIH0KLQotICAgIHZvaWQgcnVuU2FtcGxlckluU3RydWN0
VGVzdCgpCi0gICAgewotICAgICAgICBzZXRVcFByb2dyYW0oKTsKLQotICAgICAgICBnbEFjdGl2
ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIG1UZXh0dXJlMkQpOwotICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwg
R0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAg
ICAgICAgICAgICZHTENvbG9yOjpncmVlbik7Ci0gICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAi
cG9zaXRpb24iLCAwLjVmKTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdM
Q29sb3I6OmdyZWVuKTsKLSAgICB9Ci19OwotCi1jbGFzcyBTYW1wbGVySW5TdHJ1Y3RBc0Z1bmN0
aW9uUGFyYW1ldGVyVGVzdCA6IHB1YmxpYyBTYW1wbGVySW5TdHJ1Y3RUZXN0Ci17Ci0gIHByb3Rl
Y3RlZDoKLSAgICBTYW1wbGVySW5TdHJ1Y3RBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCgpIDogU2Ft
cGxlckluU3RydWN0VGVzdCgpIHt9Ci0KLSAgICBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRl
clNvdXJjZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoCi0g
ICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAgICAgInN0cnVj
dCBTXG4iCi0gICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgICB2ZWM0IGE7XG4iCi0g
ICAgICAgICAgICAiICAgIGhpZ2hwIHNhbXBsZXIyRCB0ZXg7XG4iCi0gICAgICAgICAgICAifTtc
biIKLSAgICAgICAgICAgICJ1bmlmb3JtIFMgdXM7XG4iCi0gICAgICAgICAgICAidmFyeWluZyB2
ZWMyIHRleGNvb3JkO1xuIgotICAgICAgICAgICAgInZlYzQgc2FtcGxlRnJvbShTIHMpIHtcbiIK
LSAgICAgICAgICAgICIgICAgcmV0dXJuIHRleHR1cmUyRChzLnRleCwgdGV4Y29vcmQgKyBzLmEu
eCk7XG4iCi0gICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0g
ICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSBzYW1wbGVG
cm9tKHVzKTtcbiIKLSAgICAgICAgICAgICJ9XG4iKTsKLSAgICB9Ci19OwotCi1jbGFzcyBTYW1w
bGVySW5TdHJ1Y3RBcnJheUFzRnVuY3Rpb25QYXJhbWV0ZXJUZXN0IDogcHVibGljIFNhbXBsZXJJ
blN0cnVjdFRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFNhbXBsZXJJblN0cnVjdEFycmF5QXNG
dW5jdGlvblBhcmFtZXRlclRlc3QoKSA6IFNhbXBsZXJJblN0cnVjdFRlc3QoKSB7fQotCi0gICAg
Y29uc3QgY2hhciAqZ2V0VGV4dHVyZVVuaWZvcm1OYW1lKCkgb3ZlcnJpZGUgeyByZXR1cm4gInVz
WzBdLnRleCI7IH0KLQotICAgIHN0ZDo6c3RyaW5nIGdldEZyYWdtZW50U2hhZGVyU291cmNlKCkg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKLSAgICAgICAgICAg
ICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCi0gICAgICAgICAgICAic3RydWN0IFNcbiIKLSAg
ICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIHZlYzQgYTtcbiIKLSAgICAgICAgICAg
ICIgICAgaGlnaHAgc2FtcGxlcjJEIHRleDtcbiIKLSAgICAgICAgICAgICJ9O1xuIgotICAgICAg
ICAgICAgInVuaWZvcm0gUyB1c1sxXTtcbiIKLSAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdGV4
Y29vcmQ7XG4iCi0gICAgICAgICAgICAidmVjNCBzYW1wbGVGcm9tKFMgcykge1xuIgotICAgICAg
ICAgICAgIiAgICByZXR1cm4gdGV4dHVyZTJEKHMudGV4LCB0ZXhjb29yZCArIHMuYS54KTtcbiIK
LSAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAg
ICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHNhbXBsZUZyb20odXNb
MF0pO1xuIgotICAgICAgICAgICAgIn1cbiIpOwotICAgIH0KLX07Ci0KLWNsYXNzIFNhbXBsZXJJ
bk5lc3RlZFN0cnVjdEFzRnVuY3Rpb25QYXJhbWV0ZXJUZXN0IDogcHVibGljIFNhbXBsZXJJblN0
cnVjdFRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFNhbXBsZXJJbk5lc3RlZFN0cnVjdEFzRnVu
Y3Rpb25QYXJhbWV0ZXJUZXN0KCkgOiBTYW1wbGVySW5TdHJ1Y3RUZXN0KCkge30KLQotICAgIGNv
bnN0IGNoYXIgKmdldFRleHR1cmVVbmlmb3JtTmFtZSgpIG92ZXJyaWRlIHsgcmV0dXJuICJ1c1sw
XS5zdWIudGV4IjsgfQotCi0gICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRTaGFkZXJTb3VyY2Uo
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKAotICAgICAgICAg
ICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAgICAgICJzdHJ1Y3QgU1VCXG4i
Ci0gICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgICB2ZWM0IGE7XG4iCi0gICAgICAg
ICAgICAiICAgIGhpZ2hwIHNhbXBsZXIyRCB0ZXg7XG4iCi0gICAgICAgICAgICAifTtcbiIKLSAg
ICAgICAgICAgICJzdHJ1Y3QgU1xuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIg
ICAgU1VCIHN1YjtcbiIKLSAgICAgICAgICAgICJ9O1xuIgotICAgICAgICAgICAgInVuaWZvcm0g
UyB1c1sxXTtcbiIKLSAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7XG4iCi0gICAg
ICAgICAgICAidmVjNCBzYW1wbGVGcm9tKFNVQiBzKSB7XG4iCi0gICAgICAgICAgICAiICAgIHJl
dHVybiB0ZXh0dXJlMkQocy50ZXgsIHRleGNvb3JkICsgcy5hLngpO1xuIgotICAgICAgICAgICAg
In1cbiIKLSAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAgICAgIntcbiIKLSAg
ICAgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gc2FtcGxlRnJvbSh1c1swXS5zdWIpO1xuIgot
ICAgICAgICAgICAgIn1cbiIpOwotICAgIH0KLX07Ci0KLWNsYXNzIFNhbXBsZXJJblN0cnVjdEFu
ZE90aGVyVmFyaWFibGVUZXN0IDogcHVibGljIFNhbXBsZXJJblN0cnVjdFRlc3QKLXsKLSAgcHJv
dGVjdGVkOgotICAgIFNhbXBsZXJJblN0cnVjdEFuZE90aGVyVmFyaWFibGVUZXN0KCkgOiBTYW1w
bGVySW5TdHJ1Y3RUZXN0KCkge30KLQotICAgIHN0ZDo6c3RyaW5nIGdldEZyYWdtZW50U2hhZGVy
U291cmNlKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygKLSAg
ICAgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCi0gICAgICAgICAgICAic3RydWN0
IFNcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIHZlYzQgYTtcbiIKLSAg
ICAgICAgICAgICIgICAgaGlnaHAgc2FtcGxlcjJEIHRleDtcbiIKLSAgICAgICAgICAgICJ9O1xu
IgotICAgICAgICAgICAgInVuaWZvcm0gUyB1cztcbiIKLSAgICAgICAgICAgICJ1bmlmb3JtIGZs
b2F0IHVzX3RleDtcbiIKLSAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7XG4iCi0g
ICAgICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAg
ICAiICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh1cy50ZXgsIHRleGNvb3JkICsgdXMuYS54
ICsgdXNfdGV4KTtcbiIKLSAgICAgICAgICAgICJ9XG4iKTsKLSAgICB9Ci19OwotCi1URVNUX1Ao
VGV4dHVyZTJEVGVzdCwgTmVnYXRpdmVBUElTdWJJbWFnZSkKLXsKLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9OT19F
UlJPUik7Ci0KLSAgICBzZXRVcFByb2dyYW0oKTsKLQotICAgIGNvbnN0IEdMdWJ5dGUgKnBpeGVs
c1syMF0gPSB7IDAgfTsKLSAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMSwg
MSwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKLSAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBxdWVyeWluZyBH
TF9URVhUVVJFX0JJTkRJTkcqIGRvZXNuJ3QgY2F1c2UgYW4gdW5leHBlY3RlZCBlcnJvci4KLVRF
U1RfUChUZXh0dXJlMkRUZXN0LCBRdWVyeUJpbmRpbmcpCi17Ci0gICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCAwKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfTk9fRVJST1IpOwotCi0g
ICAgR0xpbnQgdGV4dHVyZUJpbmRpbmc7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9URVhUVVJFX0JJ
TkRJTkdfMkQsICZ0ZXh0dXJlQmluZGluZyk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0g
ICAgRVhQRUNUX0VRKDAsIHRleHR1cmVCaW5kaW5nKTsKLQotICAgIGdsR2V0SW50ZWdlcnYoR0xf
VEVYVFVSRV9CSU5ESU5HX0VYVEVSTkFMX09FUywgJnRleHR1cmVCaW5kaW5nKTsKLSAgICBpZiAo
ZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpIHx8Ci0gICAgICAg
IGV4dGVuc2lvbkVuYWJsZWQoIkdMX05WX0VHTF9zdHJlYW1fY29uc3VtZXJfZXh0ZXJuYWwiKSkK
LSAgICB7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgICAgICBFWFBFQ1RfRVEo
MCwgdGV4dHVyZUJpbmRpbmcpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBFWFBF
Q1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICB9Ci19Ci0KLVRFU1RfUChUZXh0dXJl
MkRUZXN0LCBaZXJvU2l6ZWRVcGxvYWRzKQotewotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgbVRleHR1cmUyRCk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX05PX0VSUk9SKTsKLQot
ICAgIHNldFVwUHJvZ3JhbSgpOwotCi0gICAgLy8gVXNlIHRoZSB0ZXh0dXJlIGZpcnN0IHRvIG1h
a2Ugc3VyZSBpdCdzIGluIHZpZGVvIG1lbW9yeQotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7
Ci0gICAgZ2xVbmlmb3JtMWkobVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiwgMCk7Ci0gICAgZHJh
d1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgY29uc3QgR0x1Ynl0ZSAq
cGl4ZWxbNF0gPSB7IDAgfTsKLQotICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
LCAwLCAwLCAwLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbCk7Ci0gICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgMCwgMCwgMCwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWwpOwotICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDAsIDAsIDAsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsKTsKLSAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCBkcmF3aW5nIHdpdGggdHdvIHRleHR1
cmUgdHlwZXMsIHRvIHRyaWdnZXIgYW4gQU5HTEUgYnVnIGluIHZhbGlkYXRpb24KLVRFU1RfUChU
ZXh0dXJlQ3ViZVRlc3QsIEN1YmVNYXBCdWcpCi17Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RF
WFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOwot
ICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFX0NVQkVfTUFQLCBtVGV4dHVyZUN1YmUpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9O
T19FUlJPUik7Ci0KLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIGdsVW5pZm9ybTFp
KG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24sIDApOwotICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJl
Q3ViZVVuaWZvcm1Mb2NhdGlvbiwgMSk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlv
biIsIDAuNWYpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IGRyYXdp
bmcgd2l0aCB0d28gdGV4dHVyZSB0eXBlcyBhY2Nlc3NlZCBmcm9tIHRoZSBzYW1lIHNoYWRlciBh
bmQgY2hlY2sgdGhhdCB0aGUgcmVzdWx0IG9mCi0vLyBkcmF3aW5nIGlzIGNvcnJlY3QuCi1URVNU
X1AoVGV4dHVyZUN1YmVUZXN0LCBDdWJlTWFwRHJhdykKLXsKLSAgICBHTHVieXRlIHRleERhdGFb
NF07Ci0gICAgdGV4RGF0YVswXSA9IDA7Ci0gICAgdGV4RGF0YVsxXSA9IDYwOwotICAgIHRleERh
dGFbMl0gPSAwOwotICAgIHRleERhdGFbM10gPSAyNTU7Ci0KLSAgICBnbEFjdGl2ZVRleHR1cmUo
R0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUy
RCk7Ci0gICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHRleERhdGEpOwotCi0gICAgZ2xBY3RpdmVUZXh0dXJl
KEdMX1RFWFRVUkUxKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIG1U
ZXh0dXJlQ3ViZSk7Ci0gICAgdGV4RGF0YVsxXSA9IDEyMDsKLSAgICBnbFRleFN1YkltYWdlMkQo
R0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwLCAwLCAwLCAxLCAxLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICAgICB0ZXhEYXRhKTsKLSAgICBFWFBF
Q1RfR0xfRVJST1IoR0xfTk9fRVJST1IpOwotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsK
LSAgICBnbFVuaWZvcm0xaShtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uLCAwKTsKLSAgICBnbFVu
aWZvcm0xaShtVGV4dHVyZUN1YmVVbmlmb3JtTG9jYXRpb24sIDEpOwotICAgIGRyYXdRdWFkKG1Q
cm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQot
ICAgIGludCBweCA9IGdldFdpbmRvd1dpZHRoKCkgLSAxOwotICAgIGludCBweSA9IDA7Ci0gICAg
RVhQRUNUX1BJWEVMX05FQVIocHgsIHB5LCAwLCAxODAsIDAsIDI1NSwgMik7Ci19Ci0KLVRFU1Rf
UChTYW1wbGVyMkRBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCwgU2FtcGxlcjJEQXNGdW5jdGlvblBh
cmFtZXRlcikKLXsKLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0gICAgR0x1Ynl0ZSB0ZXhEYXRh
WzRdOwotICAgIHRleERhdGFbMF0gPSAwOwotICAgIHRleERhdGFbMV0gPSAxMjg7Ci0gICAgdGV4
RGF0YVsyXSA9IDA7Ci0gICAgdGV4RGF0YVszXSA9IDI1NTsKLSAgICBnbFRleFN1YkltYWdlMkQo
R0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwg
dGV4RGF0YSk7Ci0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBnbFVuaWZvcm0xaSht
VGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uLCAwKTsKLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBv
c2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBFWFBFQ1Rf
UElYRUxfTkVBUigwLCAwLCAwLCAxMjgsIDAsIDI1NSwgMik7Ci19Ci0KLS8vIFRlc3QgZHJhd2lu
ZyB3aXRoIHR3byB0ZXh0dXJlcyBwYXNzZWQgdG8gdGhlIHNoYWRlciBpbiBhIHNhbXBsZXIgYXJy
YXkuCi1URVNUX1AoU2FtcGxlckFycmF5VGVzdCwgU2FtcGxlckFycmF5RHJhdykKLXsKLSAgICB0
ZXN0U2FtcGxlckFycmF5RHJhdygpOwotfQotCi0vLyBUZXN0IGRyYXdpbmcgd2l0aCB0d28gdGV4
dHVyZXMgcGFzc2VkIHRvIHRoZSBzaGFkZXIgaW4gYSBzYW1wbGVyIGFycmF5IHdoaWNoIGlzIHBh
c3NlZCB0byBhCi0vLyB1c2VyLWRlZmluZWQgZnVuY3Rpb24gaW4gdGhlIHNoYWRlci4KLVRFU1Rf
UChTYW1wbGVyQXJyYXlBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCwgU2FtcGxlckFycmF5QXNGdW5j
dGlvblBhcmFtZXRlcikKLXsKLSAgICB0ZXN0U2FtcGxlckFycmF5RHJhdygpOwotfQotCi0vLyBD
b3B5IG9mIGEgdGVzdCBpbiBjb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJlLW1pcHMsIHRvIHRl
c3QgZ2VuZXJhdGUgbWlwbWFwcwotVEVTVF9QKFRleHR1cmUyRFRlc3RXaXRoRHJhd1NjYWxlLCBN
aXBtYXBzVHdpY2UpCi17Ci0gICAgaW50IHB4ID0gZ2V0V2luZG93V2lkdGgoKSAvIDI7Ci0gICAg
aW50IHB5ID0gZ2V0V2luZG93SGVpZ2h0KCkgLyAyOwotCi0gICAgZ2xBY3RpdmVUZXh0dXJlKEdM
X1RFWFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQp
OwotCi0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzUmVkKDE2dSAqIDE2dSwgR0xDb2xv
cjo6cmVkKTsKLQotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAx
NiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsc1JlZC5kYXRhKCkpOwot
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIs
IEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbEdlbmVyYXRl
TWlwbWFwKEdMX1RFWFRVUkVfMkQpOwotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAg
ICBnbFVuaWZvcm0xaShtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uLCAwKTsKLSAgICBnbFVuaWZv
cm0yZihtRHJhd1NjYWxlVW5pZm9ybUxvY2F0aW9uLCAwLjA2MjVmLCAwLjA2MjVmKTsKLSAgICBk
cmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKHB4LCBweSwgR0xDb2xvcjo6cmVkKTsK
LQotICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0JsdWUoMTZ1ICogMTZ1LCBHTENvbG9y
OjpibHVlKTsKLQotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAx
NiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgIHBp
eGVsc0JsdWUuZGF0YSgpKTsKLSAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfMkQpOwot
Ci0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzR3JlZW4oMTZ1ICogMTZ1LCBHTENvbG9y
OjpncmVlbik7Ci0KLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwg
MTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICBw
aXhlbHNHcmVlbi5kYXRhKCkpOwotICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8yRCk7
Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEocHgsIHB5LCBHTENv
bG9yOjpncmVlbik7Ci19Ci0KLS8vIFRlc3QgY3JlYXRpbmcgYSBGQk8gd2l0aCBhIGN1YmUgbWFw
IHJlbmRlciB0YXJnZXQsIHRvIHRlc3QgYW4gQU5HTEUgYnVnCi0vLyBodHRwczovL2NvZGUuZ29v
Z2xlLmNvbS9wL2FuZ2xlcHJvamVjdC9pc3N1ZXMvZGV0YWlsP2lkPTg0OQotVEVTVF9QKFRleHR1
cmVDdWJlVGVzdCwgQ3ViZU1hcEZCTykKLXsKLSAgICBHTHVpbnQgZmJvOwotICAgIGdsR2VuRnJh
bWVidWZmZXJzKDEsICZmYm8pOwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVS
LCBmYm8pOwotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0NVQkVfTUFQLCBtVGV4dHVy
ZUN1YmUpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NP
TE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ksIG1UZXh0dXJl
Q3ViZSwgMCk7Ci0KLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRF
LCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLQotICAgIGdsRGVs
ZXRlRnJhbWVidWZmZXJzKDEsICZmYm8pOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19
Ci0KLS8vIFRlc3QgdGhhdCBnbFRleFN1YkltYWdlMkQgd29ya3MgcHJvcGVybHkgd2hlbiBnbFRl
eFN0b3JhZ2UyREVYVCBoYXMgaW5pdGlhbGl6ZWQgdGhlIGltYWdlIHdpdGggYSBkZWZhdWx0IGNv
bG9yLgotVEVTVF9QKFRleHR1cmUyRFRlc3QsIFRleFN0b3JhZ2UpCi17Ci0gICAgaW50IHdpZHRo
ID0gZ2V0V2luZG93V2lkdGgoKTsKLSAgICBpbnQgaGVpZ2h0ID0gZ2V0V2luZG93SGVpZ2h0KCk7
Ci0KLSAgICBHTHVpbnQgdGV4MkQ7Ci0gICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4MkQpOwotICAg
IGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCB0ZXgyRCk7Ci0KLSAgICAvLyBGaWxsIHdpdGggcmVkCi0gICAgc3RkOjp2ZWN0b3I8
R0x1Ynl0ZT4gcGl4ZWxzKDMgKiAxNiAqIDE2KTsKLSAgICBmb3IgKHNpemVfdCBwaXhlbElkID0g
MDsgcGl4ZWxJZCA8IDE2ICogMTY7ICsrcGl4ZWxJZCkKLSAgICB7Ci0gICAgICAgIHBpeGVsc1tw
aXhlbElkICogMyArIDBdID0gMjU1OwotICAgICAgICBwaXhlbHNbcGl4ZWxJZCAqIDMgKyAxXSA9
IDA7Ci0gICAgICAgIHBpeGVsc1twaXhlbElkICogMyArIDJdID0gMDsKLSAgICB9Ci0KLSAgICAv
LyBBTkdMRSBpbnRlcm5hbGx5IHVzZXMgUkdCQSBhcyB0aGUgRGlyZWN0WCBmb3JtYXQgZm9yIFJH
QiBpbWFnZXMKLSAgICAvLyB0aGVyZWZvcmUgZ2xUZXhTdG9yYWdlMkRFWFQgaW5pdGlhbGl6ZXMg
dGhlIGltYWdlIHRvIGEgZGVmYXVsdCBjb2xvciB0byBnZXQgYSBjb25zaXN0ZW50IGFscGhhIGNv
bG9yLgotICAgIC8vIFRoZSBkYXRhIGlzIGtlcHQgaW4gYSBDUFUtc2lkZSBpbWFnZSBhbmQgdGhl
IGltYWdlIGlzIG1hcmtlZCBhcyBkaXJ0eS4KLSAgICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhU
VVJFXzJELCAxLCBHTF9SR0I4LCAxNiwgMTYpOwotCi0gICAgLy8gSW5pdGlhbGl6ZXMgdGhlIGNv
bG9yIG9mIHRoZSB1cHBlci1sZWZ0IDh4OCBwaXhlbHMsIGxlYXZlcyB0aGUgb3RoZXIgcGl4ZWxz
IHVudG91Y2hlZC4KLSAgICAvLyBnbFRleFN1YkltYWdlMkQgc2hvdWxkIHRha2UgaW50byBhY2Nv
dW50IHRoYXQgdGhlIGltYWdlIGlzIGRpcnR5LgotICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhU
VVJFXzJELCAwLCAwLCAwLCA4LCA4LCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscy5k
YXRhKCkpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01J
Tl9GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLQotICAgIHNldFVwUHJvZ3JhbSgp
OwotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBnbFVuaWZvcm0xaShtVGV4dHVy
ZTJEVW5pZm9ybUxvY2F0aW9uLCAwKTsKLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9u
IiwgMC41Zik7Ci0gICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4MkQpOwotICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9QSVhFTF9FUSh3aWR0aCAvIDQsIGhlaWdodCAvIDQs
IDI1NSwgMCwgMCwgMjU1KTsKLQotICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIHJlZ2lvbiBvZiB0
aGUgdGV4dHVyZSB3aXRob3V0IGRhdGEgaGFzIGFuIGFscGhhIG9mIDEuMAotICAgIEdMdWJ5dGUg
cGl4ZWxbNF07Ci0gICAgZ2xSZWFkUGl4ZWxzKDMgKiB3aWR0aCAvIDQsIDMgKiBoZWlnaHQgLyA0
LCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbCk7Ci0gICAgRVhQRUNUX0VR
KHBpeGVsWzNdLCAyNTUpOwotfQotCi0vLyBUZXN0IHRoYXQgZ2xUZXhTdWJJbWFnZTJEIGNvbWJp
bmVkIHdpdGggYSBQQk8gd29ya3MgcHJvcGVybHkgd2hlbiBnbFRleFN0b3JhZ2UyREVYVCBoYXMg
aW5pdGlhbGl6ZWQgdGhlIGltYWdlIHdpdGggYSBkZWZhdWx0IGNvbG9yLgotVEVTVF9QKFRleHR1
cmUyRFRlc3QsIFRleFN0b3JhZ2VXaXRoUEJPKQotewotICAgIGlmIChleHRlbnNpb25FbmFibGVk
KCJOVl9waXhlbF9idWZmZXJfb2JqZWN0IikpCi0gICAgewotICAgICAgICBpbnQgd2lkdGggPSBn
ZXRXaW5kb3dXaWR0aCgpOwotICAgICAgICBpbnQgaGVpZ2h0ID0gZ2V0V2luZG93SGVpZ2h0KCk7
Ci0KLSAgICAgICAgR0x1aW50IHRleDJEOwotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgy
RCk7Ci0gICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Ci0gICAgICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4MkQpOwotCi0gICAgICAgIC8vIEZpbGwgd2l0aCBy
ZWQKLSAgICAgICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gcGl4ZWxzKDMgKiAxNiAqIDE2KTsKLSAg
ICAgICAgZm9yIChzaXplX3QgcGl4ZWxJZCA9IDA7IHBpeGVsSWQgPCAxNiAqIDE2OyArK3BpeGVs
SWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHBpeGVsc1twaXhlbElkICogMyArIDBdID0gMjU1
OwotICAgICAgICAgICAgcGl4ZWxzW3BpeGVsSWQgKiAzICsgMV0gPSAwOwotICAgICAgICAgICAg
cGl4ZWxzW3BpeGVsSWQgKiAzICsgMl0gPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUmVh
ZCAxNngxNiByZWdpb24gZnJvbSByZWQgYmFja2J1ZmZlciB0byBQQk8KLSAgICAgICAgR0x1aW50
IHBibzsKLSAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZwYm8pOwotICAgICAgICBnbEJpbmRCdWZm
ZXIoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgcGJvKTsKLSAgICAgICAgZ2xCdWZmZXJEYXRhKEdM
X1BJWEVMX1VOUEFDS19CVUZGRVIsIDMgKiAxNiAqIDE2LCBwaXhlbHMuZGF0YSgpLCBHTF9TVEFU
SUNfRFJBVyk7Ci0KLSAgICAgICAgLy8gQU5HTEUgaW50ZXJuYWxseSB1c2VzIFJHQkEgYXMgdGhl
IERpcmVjdFggZm9ybWF0IGZvciBSR0IgaW1hZ2VzCi0gICAgICAgIC8vIHRoZXJlZm9yZSBnbFRl
eFN0b3JhZ2UyREVYVCBpbml0aWFsaXplcyB0aGUgaW1hZ2UgdG8gYSBkZWZhdWx0IGNvbG9yIHRv
IGdldCBhIGNvbnNpc3RlbnQgYWxwaGEgY29sb3IuCi0gICAgICAgIC8vIFRoZSBkYXRhIGlzIGtl
cHQgaW4gYSBDUFUtc2lkZSBpbWFnZSBhbmQgdGhlIGltYWdlIGlzIG1hcmtlZCBhcyBkaXJ0eS4K
LSAgICAgICAgZ2xUZXhTdG9yYWdlMkRFWFQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCOCwgMTYs
IDE2KTsKLQotICAgICAgICAvLyBJbml0aWFsaXplcyB0aGUgY29sb3Igb2YgdGhlIHVwcGVyLWxl
ZnQgOHg4IHBpeGVscywgbGVhdmVzIHRoZSBvdGhlciBwaXhlbHMgdW50b3VjaGVkLgotICAgICAg
ICAvLyBnbFRleFN1YkltYWdlMkQgc2hvdWxkIHRha2UgaW50byBhY2NvdW50IHRoYXQgdGhlIGlt
YWdlIGlzIGRpcnR5LgotICAgICAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwg
MCwgMCwgOCwgOCwgR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRFLCBOVUxMKTsKLSAgICAgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElO
RUFSKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLQotICAgICAgICBzZXRVcFByb2dyYW0oKTsKLQotICAg
ICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgICAgICBnbFVuaWZvcm0xaShtVGV4dHVy
ZTJEVW5pZm9ybUxvY2F0aW9uLCAwKTsKLSAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3Np
dGlvbiIsIDAuNWYpOwotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXgyRCk7Ci0gICAg
ICAgIGdsRGVsZXRlQnVmZmVycygxLCAmcGJvKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Ci0gICAgICAgIEVYUEVDVF9QSVhFTF9FUSgzICogd2lkdGggLyA0LCAzICogaGVpZ2h0IC8g
NCwgMCwgMCwgMCwgMjU1KTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKHdpZHRoIC8gNCwgaGVp
Z2h0IC8gNCwgMjU1LCAwLCAwLCAyNTUpOwotICAgIH0KLX0KLQotLy8gU2VlIGRlc2NyaXB0aW9u
IG9uIHRlc3RGbG9hdENvcHlTdWJJbWFnZQotVEVTVF9QKFRleHR1cmUyRFRlc3QsIENvcHlTdWJJ
bWFnZUZsb2F0X1JfUikKLXsKLSAgICB0ZXN0RmxvYXRDb3B5U3ViSW1hZ2UoMSwgMSk7Ci19Ci0K
LVRFU1RfUChUZXh0dXJlMkRUZXN0LCBDb3B5U3ViSW1hZ2VGbG9hdF9SR19SKQotewotICAgIHRl
c3RGbG9hdENvcHlTdWJJbWFnZSgyLCAxKTsKLX0KLQotVEVTVF9QKFRleHR1cmUyRFRlc3QsIENv
cHlTdWJJbWFnZUZsb2F0X1JHX1JHKQotewotICAgIHRlc3RGbG9hdENvcHlTdWJJbWFnZSgyLCAy
KTsKLX0KLQotVEVTVF9QKFRleHR1cmUyRFRlc3QsIENvcHlTdWJJbWFnZUZsb2F0X1JHQl9SKQot
ewotICAgIGlmIChJc0ludGVsKCkgJiYgSXNMaW51eCgpKQotICAgIHsKLSAgICAgICAgLy8gVE9E
Tyhjd2FsbGV6KTogRml4IG9uIExpbnV4IEludGVsIGRyaXZlcnMgKGh0dHA6Ly9hbmdsZWJ1Zy5j
b20vMTM0NikKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIExpbnV4IElu
dGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHRlc3RGbG9hdENvcHlTdWJJbWFnZSgzLCAxKTsKLX0KLQotVEVTVF9QKFRleHR1cmUyRFRlc3Qs
IENvcHlTdWJJbWFnZUZsb2F0X1JHQl9SRykKLXsKLSAgICBpZiAoSXNJbnRlbCgpICYmIElzTGlu
dXgoKSkKLSAgICB7Ci0gICAgICAgIC8vIFRPRE8oY3dhbGxleik6IEZpeCBvbiBMaW51eCBJbnRl
bCBkcml2ZXJzIChodHRwOi8vYW5nbGVidWcuY29tLzEzNDYpCi0gICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBkaXNhYmxlZCBvbiBMaW51eCBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB0ZXN0RmxvYXRDb3B5U3ViSW1hZ2UoMywgMik7
Ci19Ci0KLVRFU1RfUChUZXh0dXJlMkRUZXN0LCBDb3B5U3ViSW1hZ2VGbG9hdF9SR0JfUkdCKQot
ewotICAgIGlmIChJc0ludGVsKCkgJiYgSXNMaW51eCgpKQotICAgIHsKLSAgICAgICAgLy8gVE9E
Tyhjd2FsbGV6KTogRml4IG9uIExpbnV4IEludGVsIGRyaXZlcnMgKGh0dHA6Ly9hbmdsZWJ1Zy5j
b20vMTM0NikKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIExpbnV4IElu
dGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IC8vIFRPRE8gKGJ1ZyAxMjg0KTogSW52ZXN0aWdhdGUgUkdCQTMyZiBEM0QgU0RLIExheWVycyBt
ZXNzYWdlcyBvbiBEM0QxMV9GTDlfMwotICAgIGlmIChJc0QzRDExX0ZMOTMoKSkKLSAgICB7Ci0g
ICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEZlYXR1cmUgTGV2ZWwgOV8zLiIg
PDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdGVzdEZsb2F0Q29w
eVN1YkltYWdlKDMsIDMpOwotfQotCi1URVNUX1AoVGV4dHVyZTJEVGVzdCwgQ29weVN1YkltYWdl
RmxvYXRfUkdCQV9SKQotewotICAgIHRlc3RGbG9hdENvcHlTdWJJbWFnZSg0LCAxKTsKLX0KLQot
VEVTVF9QKFRleHR1cmUyRFRlc3QsIENvcHlTdWJJbWFnZUZsb2F0X1JHQkFfUkcpCi17Ci0gICAg
dGVzdEZsb2F0Q29weVN1YkltYWdlKDQsIDIpOwotfQotCi1URVNUX1AoVGV4dHVyZTJEVGVzdCwg
Q29weVN1YkltYWdlRmxvYXRfUkdCQV9SR0IpCi17Ci0gICAgLy8gVE9ETyAoYnVnIDEyODQpOiBJ
bnZlc3RpZ2F0ZSBSR0JBMzJmIEQzRCBTREsgTGF5ZXJzIG1lc3NhZ2VzIG9uIEQzRDExX0ZMOV8z
Ci0gICAgaWYgKElzRDNEMTFfRkw5MygpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IHNraXBwZWQgb24gRmVhdHVyZSBMZXZlbCA5XzMuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICB0ZXN0RmxvYXRDb3B5U3ViSW1hZ2UoNCwgMyk7Ci19Ci0K
LVRFU1RfUChUZXh0dXJlMkRUZXN0LCBDb3B5U3ViSW1hZ2VGbG9hdF9SR0JBX1JHQkEpCi17Ci0g
ICAgLy8gVE9ETyAoYnVnIDEyODQpOiBJbnZlc3RpZ2F0ZSBSR0JBMzJmIEQzRCBTREsgTGF5ZXJz
IG1lc3NhZ2VzIG9uIEQzRDExX0ZMOV8zCi0gICAgaWYgKElzRDNEMTFfRkw5MygpKQotICAgIHsK
LSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gRmVhdHVyZSBMZXZlbCA5XzMu
IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB0ZXN0RmxvYXRD
b3B5U3ViSW1hZ2UoNCwgNCk7Ci19Ci0KLS8vIFBvcnQgb2YgaHR0cHM6Ly93d3cua2hyb25vcy5v
cmcvcmVnaXN0cnkvd2ViZ2wvY29uZm9ybWFuY2Utc3VpdGVzLzEuMC4zL2NvbmZvcm1hbmNlL3Rl
eHR1cmVzL3RleHR1cmUtbnBvdC5odG1sCi0vLyBSdW4gYWdhaW5zdCBHTF9BTFBIQS9VTlNJR05F
RF9CWVRFIGZvcm1hdCwgdG8gZW5zdXJlIHRoYXQgRDNEMTEgRmVhdHVyZSBMZXZlbCA5XzMgY29y
cmVjdGx5IGhhbmRsZXMgR0xfQUxQSEEKLVRFU1RfUChUZXh0dXJlMkRUZXN0LCBUZXh0dXJlTlBP
VF9HTF9BTFBIQV9VQllURSkKLXsKLSAgICBjb25zdCBpbnQgbnBvdFRleFNpemUgPSA1OwotICAg
IGNvbnN0IGludCBwb3RUZXhTaXplID0gNDsgLy8gU2hvdWxkIGJlIGxlc3MgdGhhbiBucG90VGV4
U2l6ZQotICAgIEdMdWludCB0ZXgyRDsKLQotICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9P
RVNfdGV4dHVyZV9ucG90IikpCi0gICAgewotICAgICAgICAvLyBUaGlzIHRlc3QgaXNuJ3QgYXBw
bGljYWJsZSBpZiB0ZXh0dXJlX25wb3QgaXMgZW5hYmxlZAotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgc2V0VXBQcm9ncmFtKCk7Ci0KLSAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwg
MC4wZiwgMC4wZik7Ci0KLSAgICAvLyBEZWZhdWx0IHVucGFjayBhbGlnbm1lbnQgaXMgNC4gVGhl
IHZhbHVlcyBvZiAncGl4ZWxzJyBiZWxvdyBuZWVkcyBpdCB0byBiZSAxLgotICAgIGdsUGl4ZWxT
dG9yZWkoR0xfVU5QQUNLX0FMSUdOTUVOVCwgMSk7Ci0KLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xf
VEVYVFVSRTApOwotICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleDJEKTsKLSAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIHRleDJEKTsKLQotICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IHBp
eGVscygxICogbnBvdFRleFNpemUgKiBucG90VGV4U2l6ZSk7Ci0gICAgZm9yIChzaXplX3QgcGl4
ZWxJZCA9IDA7IHBpeGVsSWQgPCBucG90VGV4U2l6ZSAqIG5wb3RUZXhTaXplOyArK3BpeGVsSWQp
Ci0gICAgewotICAgICAgICBwaXhlbHNbcGl4ZWxJZF0gPSA2NDsKLSAgICB9Ci0KLSAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5F
QVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19G
SUxURVIsIEdMX0xJTkVBUik7Ci0KLSAgICAvLyBDaGVjayB0aGF0IGFuIE5QT1QgdGV4dHVyZSBu
b3Qgb24gbGV2ZWwgMCBnZW5lcmF0ZXMgSU5WQUxJRF9WQUxVRQotICAgIGdsVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAxLCBHTF9BTFBIQSwgbnBvdFRleFNpemUsIG5wb3RUZXhTaXplLCAwLCBH
TF9BTFBIQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzLmRhdGEoKSk7Ci0gICAgRVhQRUNUX0dM
X0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgLy8gQ2hlY2sgdGhhdCBhbiBOUE9UIHRl
eHR1cmUgb24gbGV2ZWwgMCBzdWNjZWVkcwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCBHTF9BTFBIQSwgbnBvdFRleFNpemUsIG5wb3RUZXhTaXplLCAwLCBHTF9BTFBIQSwgR0xf
VU5TSUdORURfQllURSwgcGl4ZWxzLmRhdGEoKSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci0KLSAgICAvLyBDaGVjayB0aGF0IGdlbmVyYXRlTWlwbWFwIGZhaWxzIG9uIE5QT1QKLSAgICBn
bEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfMkQpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9J
TlZBTElEX09QRVJBVElPTik7Ci0KLSAgICAvLyBDaGVjayB0aGF0IG5vdGhpbmcgaXMgZHJhd24g
aWYgZmlsdGVyaW5nIGlzIG5vdCBjb3JyZWN0IGZvciBOUE9UCi0gICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xf
TkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
V1JBUF9TLCBHTF9SRVBFQVQpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX1dSQVBfVCwgR0xfUkVQRUFUKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZF
Ul9CSVQpOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAxLjBmKTsKLSAgICBF
WFBFQ1RfUElYRUxfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8g
MiwgMCwgMCwgMCwgMjU1KTsKLQotICAgIC8vIE5QT1QgdGV4dHVyZSB3aXRoIFRFWFRVUkVfTUlO
X0ZJTFRFUiBub3QgTkVBUkVTVCBvciBMSU5FQVIgc2hvdWxkIGRyYXcgd2l0aCAwLDAsMCwyNTUK
LSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdM
X0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVF9NSVBNQVBfTElO
RUFSKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIGRyYXdRdWFkKG1Q
cm9ncmFtLCAicG9zaXRpb24iLCAxLjBmKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0V2luZG93
V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMCwgMCwgMCwgMjU1KTsKLQotICAg
IC8vIE5QT1QgdGV4dHVyZSB3aXRoIFRFWFRVUkVfTUlOX0ZJTFRFUiBzZXQgdG8gTElORUFSIHNo
b3VsZCBkcmF3Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQp
OwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAxLjBmKTsKLSAgICBFWFBFQ1Rf
UElYRUxfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMCwg
MCwgMCwgNjQpOwotCi0gICAgLy8gQ2hlY2sgdGhhdCBnbFRleEltYWdlMkQgZm9yIFBPVCB0ZXh0
dXJlIHN1Y2NlZWRzCi0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX0FMUEhB
LCBwb3RUZXhTaXplLCBwb3RUZXhTaXplLCAwLCBHTF9BTFBIQSwgR0xfVU5TSUdORURfQllURSwg
cGl4ZWxzLmRhdGEoKSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBDaGVj
ayB0aGF0IGdlbmVyYXRlTWlwbWFwIGZvciBhbiBQT1QgdGV4dHVyZSBzdWNjZWVkcwotICAgIGds
R2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8yRCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci0KLSAgICAvLyBQT1QgdGV4dHVyZSB3aXRoIFRFWFRVUkVfTUlOX0ZJTFRFUiBzZXQgdG8gTElO
RUFSX01JUE1BUF9MSU5FQVIgc2hvdWxkIGRyYXcKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUik7
Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRF
UiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVY
VFVSRV9XUkFQX1MsIEdMX1JFUEVBVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9SRVBFQVQpOwotICAgIGdsQ2xlYXIoR0xfQ09MT1Jf
QlVGRkVSX0JJVCk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDEuMGYpOwot
ICAgIEVYUEVDVF9QSVhFTF9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0
KCkgLyAyLCAwLCAwLCAwLCA2NCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8v
IFRlc3QgdG8gZW5zdXJlIHRoYXQgZ2xUZXhTdWJJbWFnZTJEIGFsd2F5cyBhY2NlcHRzIGRhdGEg
Zm9yIG5vbi1wb3dlci1vZi10d28gc3VicmVnaW9ucy4KLS8vIEFOR0xFIHByZXZpb3VzbHkgcmVq
ZWN0ZWQgdGhpcyBpZiBHTF9PRVNfdGV4dHVyZV9ucG90IHdhc24ndCBhY3RpdmUsIHdoaWNoIGlz
IGluY29ycmVjdC4KLVRFU1RfUChUZXh0dXJlMkRUZXN0LCBOUE9UU3ViSW1hZ2VQYXJhbWV0ZXJz
KQotewotICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogQWxsb3cgdGhlIEdMIGJhY2tlbmQgdG8gYWNj
ZXB0IFN1YkltYWdlIGNhbGxzIHdpdGggYSBudWxsIGRhdGEgcHRyLiAoYnVnCi0gICAgLy8gMTI3
OCkKLSAgICBpZiAoZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX09QRU5HTF9BTkdMRSB8fAotICAgICAgICBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdM
X1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUpCi0gICAgewotICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gT3BlbkdMLiIgPDwgc3RkOjplbmRsOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOwotCi0gICAgLy8gQ3Jl
YXRlIGFuIDh4OCAoaS5lLiBwb3dlci1vZi10d28pIHRleHR1cmUuCi0gICAgZ2xUZXhJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDgsIDgsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsIG51bGxwdHIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFS
KTsKLSAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfMkQpOwotCi0gICAgLy8gU3VwcGx5
IGEgM3gzIChpLmUuIG5vbi1wb3dlci1vZi10d28pIHN1YmltYWdlIHRvIHRoZSB0ZXh0dXJlLgot
ICAgIC8vIFRoaXMgc2hvdWxkIGFsd2F5cyB3b3JrLCBldmVuIGlmIEdMX09FU190ZXh0dXJlX25w
b3QgaXNuJ3QgYWN0aXZlLgotICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAxLCAw
LCAwLCAzLCAzLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLQotICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IHRvIGNoZWNrIHRoYXQgdGV4dHVyZSBj
b21wbGV0ZW5lc3MgaXMgZGV0ZXJtaW5lZCBjb3JyZWN0bHkgd2hlbiB0aGUgdGV4dHVyZSBiYXNl
IGxldmVsIGlzCi0vLyBncmVhdGVyIHRoYW4gMCwgYW5kIGFsc28gdGhhdCBsZXZlbCAwIGlzIG5v
dCBzYW1wbGVkIHdoZW4gYmFzZSBsZXZlbCBpcyBncmVhdGVyIHRoYW4gMC4KLVRFU1RfUChUZXh0
dXJlMkRUZXN0RVMzLCBEcmF3V2l0aEJhc2VMZXZlbDEpCi17Ci0gICAgZ2xBY3RpdmVUZXh0dXJl
KEdMX1RFWFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJl
MkQpOwotCi0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YVJlZCg0dSAqIDR1LCBHTENv
bG9yOjpyZWQpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCA0
LCA0LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCB0ZXhEYXRhUmVkLmRhdGEoKSk7Ci0g
ICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YUdyZWVuKDJ1ICogMnUsIEdMQ29sb3I6Omdy
ZWVuKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQSwgMiwgMiwg
MCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAgICAgICAgdGV4RGF0YUdy
ZWVuLmRhdGEoKSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDIsIEdMX1JHQkEs
IDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgIHRl
eERhdGFHcmVlbi5kYXRhKCkpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5F
QVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0JBU0Vf
TEVWRUwsIDEpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZCht
UHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEo
MCwgMCwgR0xDb2xvcjo6Z3JlZW4pOwotfQotCi0vLyBUZXN0IHRoYXQgZHJhd2luZyB3b3JrcyBj
b3JyZWN0bHkgd2hlbiBsZXZlbHMgb3V0c2lkZSB0aGUgQkFTRV9MRVZFTC9NQVhfTEVWRUwgcmFu
Z2UgZG8gbm90Ci0vLyBoYXZlIGltYWdlcyBkZWZpbmVkLgotVEVTVF9QKFRleHR1cmUyRFRlc3RF
UzMsIERyYXdXaXRoTGV2ZWxzT3V0c2lkZVJhbmdlVW5kZWZpbmVkKQotewotICAgIGlmIChJc0FN
RCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9P
UEVOR0xfQU5HTEUpCi0gICAgewotICAgICAgICAvLyBPYnNlcnZlZCBjcmFzaGluZyBvbiBBTUQu
IE9kZGx5IHRoZSBjcmFzaCBvbmx5IGhhcHBlbnMgd2l0aCAyRCB0ZXh0dXJlcywgbm90IDNEIG9y
IGFycmF5LgotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBBTUQgT3BlbkdM
LiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChJc09TWCgp
KQotICAgIHsKLSAgICAgICAgLy8gT2JzZXJ2ZWQgaW5jb3JyZWN0IHJlbmRlcmluZyBvbiBPU1gu
Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIE9TWC4iIDw8IHN0ZDo6ZW5k
bDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVS
RTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0gICAg
c3RkOjp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YUdyZWVuKDJ1ICogMnUsIEdMQ29sb3I6OmdyZWVu
KTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQTgsIDIsIDIsIDAs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgIHRleERhdGFHcmVl
bi5kYXRhKCkpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIpOwotICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDEp
OwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BWF9MRVZF
TCwgMSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9n
cmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAw
LCBHTENvbG9yOjpncmVlbik7Ci19Ci0KLS8vIFRlc3QgdGhhdCBkcmF3aW5nIHdvcmtzIGNvcnJl
Y3RseSB3aGVuIGxldmVsIDAgaXMgdW5kZWZpbmVkIGFuZCBiYXNlIGxldmVsIGlzIDEuCi1URVNU
X1AoVGV4dHVyZTJEVGVzdEVTMywgRHJhd1dpdGhMZXZlbFplcm9VbmRlZmluZWQpCi17Ci0gICAg
aWYgKElzQU1EKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdM
RV9UWVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0gICAgICAgIC8vIE9ic2VydmVkIGNyYXNoaW5n
IG9uIEFNRC4gT2RkbHkgdGhlIGNyYXNoIG9ubHkgaGFwcGVucyB3aXRoIDJEIHRleHR1cmVzLCBu
b3QgM0Qgb3IgYXJyYXkuCi0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEFN
RCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYg
KElzT1NYKCkpCi0gICAgewotICAgICAgICAvLyBPYnNlcnZlZCBpbmNvcnJlY3QgcmVuZGVyaW5n
IG9uIE9TWC4KLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gT1NYLiIgPDwg
c3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGdsQWN0aXZlVGV4dHVyZShH
TF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJE
KTsKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRhR3JlZW4oMnUgKiAydSwgR0xDb2xv
cjo6Z3JlZW4pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOCwg
MiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAgICAgICAgdGV4
RGF0YUdyZWVuLmRhdGEoKSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX0xJTkVB
Uik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQkFTRV9M
RVZFTCwgMSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUFYX0xFVkVMLCAyKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gVGV4
dHVyZSBpcyBpbmNvbXBsZXRlLgotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAw
LjVmKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6YmxhY2spOwot
Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDIsIEdMX1JHQkE4LCAxLCAxLCAwLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICB0ZXhEYXRhR3JlZW4u
ZGF0YSgpKTsKLQotICAgIC8vIFRleHR1cmUgaXMgbm93IGNvbXBsZXRlLgotICAgIGRyYXdRdWFk
KG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEo
MCwgMCwgR0xDb2xvcjo6Z3JlZW4pOwotfQotCi0vLyBUZXN0IHRoYXQgZHJhd2luZyB3b3JrcyBj
b3JyZWN0bHkgd2hlbiBsZXZlbHMgb3V0c2lkZSB0aGUgQkFTRV9MRVZFTC9NQVhfTEVWRUwgcmFu
Z2UgaGF2ZQotLy8gZGltZW5zaW9ucyB0aGF0IGRvbid0IGZpdCB0aGUgaW1hZ2VzIGluc2lkZSB0
aGUgcmFuZ2UuCi0vLyBHTEVTIDMuMC40IHNlY3Rpb24gMy44LjEzIFRleHR1cmUgY29tcGxldGVu
ZXNzCi1URVNUX1AoVGV4dHVyZTJEVGVzdEVTMywgRHJhd1dpdGhMZXZlbHNPdXRzaWRlUmFuZ2VX
aXRoSW5jb25zaXN0ZW50RGltZW5zaW9ucykKLXsKLSAgICBpZiAoSXNPU1goKSkKLSAgICB7Ci0g
ICAgICAgIC8vIE9ic2VydmVkIGluY29ycmVjdCByZW5kZXJpbmcgb24gT1NYLgotICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBPU1guIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOwotICAgIHN0ZDo6dmVjdG9y
PEdMQ29sb3I+IHRleERhdGFSZWQoOHUgKiA4dSwgR0xDb2xvcjo6cmVkKTsKLSAgICBzdGQ6OnZl
Y3RvcjxHTENvbG9yPiB0ZXhEYXRhR3JlZW4oMnUgKiAydSwgR0xDb2xvcjo6Z3JlZW4pOwotICAg
IHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHRleERhdGFDeWFuKDJ1ICogMnUsIEdMQ29sb3I6OmN5YW4p
OwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJ
TFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUik7Ci0KLSAgICAvLyBU
d28gbGV2ZWxzIHRoYXQgYXJlIGluaXRpYWxseSB1bnVzZWQuCi0gICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIEdMX1JHQkE4LCA4LCA4LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLCB0ZXhEYXRhUmVkLmRhdGEoKSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDIsIEdMX1JHQkE4LCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAg
ICAgICAgICAgICB0ZXhEYXRhQ3lhbi5kYXRhKCkpOwotCi0gICAgLy8gT25lIGxldmVsIHRoYXQg
aXMgdXNlZCAtIG9ubHkgdGhpcyBsZXZlbCBzaG91bGQgYWZmZWN0IGNvbXBsZXRlbmVzcy4KLSAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQTgsIDIsIDIsIDAsIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgIHRleERhdGFHcmVlbi5kYXRh
KCkpOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQkFT
RV9MRVZFTCwgMSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfTUFYX0xFVkVMLCAxKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZHJh
d1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgRVhQRUNUX1BJWEVMX0NP
TE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKLQotICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0
UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdM
RSkKLSAgICB7Ci0gICAgICAgIC8vIEludGVsIHdhcyBvYnNlcnZlZCBkcmF3aW5nIGNvbG9yIDAs
MCwwLDAgaW5zdGVhZCBvZiB0aGUgdGV4dHVyZSBjb2xvciBhZnRlciB0aGUgYmFzZQotICAgICAg
ICAvLyBsZXZlbCB3YXMgY2hhbmdlZC4KLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHBhcnRp
YWxseSBza2lwcGVkIG9uIEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIC8vIFN3aXRjaCB0aGUgbGV2ZWwgdGhhdCBpcyBiZWluZyB1c2Vk
IHRvIHRoZSBjeWFuIGxldmVsIDIuCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAyKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAg
RVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmN5YW4pOwotfQotCi0vLyBUZXN0
IHRoYXQgZHJhd2luZyB3b3JrcyBjb3JyZWN0bHkgd2hlbiBsZXZlbHMgb3V0c2lkZSB0aGUgQkFT
RV9MRVZFTC9NQVhfTEVWRUwgcmFuZ2UgZG8gbm90Ci0vLyBoYXZlIGltYWdlcyBkZWZpbmVkLgot
VEVTVF9QKFRleHR1cmUzRFRlc3RFUzMsIERyYXdXaXRoTGV2ZWxzT3V0c2lkZVJhbmdlVW5kZWZp
bmVkKQotewotICAgIGlmIChJc09TWCgpKQotICAgIHsKLSAgICAgICAgLy8gT2JzZXJ2ZWQgaW5j
b3JyZWN0IHJlbmRlcmluZyBvbiBPU1guCi0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIG9uIE9TWC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBn
bEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8zRCwgbVRleHR1cmUzRCk7Ci0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YUdyZWVu
KDJ1ICogMnUgKiAydSwgR0xDb2xvcjo6Z3JlZW4pOwotICAgIGdsVGV4SW1hZ2UzRChHTF9URVhU
VVJFXzNELCAxLCBHTF9SR0JBOCwgMiwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwKLSAgICAgICAgICAgICAgICAgdGV4RGF0YUdyZWVuLmRhdGEoKSk7Ci0gICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsK
LSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8zRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVS
LCBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfM0QsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAxKTsKLQotICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwot
Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKLX0KLQot
Ly8gVGVzdCB0aGF0IGRyYXdpbmcgd29ya3MgY29ycmVjdGx5IHdoZW4gbGV2ZWxzIG91dHNpZGUg
dGhlIEJBU0VfTEVWRUwvTUFYX0xFVkVMIHJhbmdlIGhhdmUKLS8vIGRpbWVuc2lvbnMgdGhhdCBk
b24ndCBmaXQgdGhlIGltYWdlcyBpbnNpZGUgdGhlIHJhbmdlLgotLy8gR0xFUyAzLjAuNCBzZWN0
aW9uIDMuOC4xMyBUZXh0dXJlIGNvbXBsZXRlbmVzcwotVEVTVF9QKFRleHR1cmUzRFRlc3RFUzMs
IERyYXdXaXRoTGV2ZWxzT3V0c2lkZVJhbmdlV2l0aEluY29uc2lzdGVudERpbWVuc2lvbnMpCi17
Ci0gICAgaWYgKElzT1NYKCkpCi0gICAgewotICAgICAgICAvLyBPYnNlcnZlZCBpbmNvcnJlY3Qg
cmVuZGVyaW5nIG9uIE9TWC4KLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24g
T1NYLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGdsQWN0aXZl
VGV4dHVyZShHTF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzNELCBt
VGV4dHVyZTNEKTsKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRhUmVkKDh1ICogOHUg
KiA4dSwgR0xDb2xvcjo6cmVkKTsKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRhR3Jl
ZW4oMnUgKiAydSAqIDJ1LCBHTENvbG9yOjpncmVlbik7Ci0gICAgc3RkOjp2ZWN0b3I8R0xDb2xv
cj4gdGV4RGF0YUN5YW4oMnUgKiAydSAqIDJ1LCBHTENvbG9yOjpjeWFuKTsKLQotICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzNELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVB
Uik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfTUlOX0ZJ
TFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIpOwotCi0gICAgLy8gVHdvIGxldmVscyB0aGF0
IGFyZSBpbml0aWFsbHkgdW51c2VkLgotICAgIGdsVGV4SW1hZ2UzRChHTF9URVhUVVJFXzNELCAw
LCBHTF9SR0JBOCwgOCwgOCwgOCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAg
ICAgICAgICAgICAgdGV4RGF0YVJlZC5kYXRhKCkpOwotICAgIGdsVGV4SW1hZ2UzRChHTF9URVhU
VVJFXzNELCAyLCBHTF9SR0JBOCwgMiwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwKLSAgICAgICAgICAgICAgICAgdGV4RGF0YUN5YW4uZGF0YSgpKTsKLQotICAgIC8vIE9uZSBs
ZXZlbCB0aGF0IGlzIHVzZWQgLSBvbmx5IHRoaXMgbGV2ZWwgc2hvdWxkIGFmZmVjdCBjb21wbGV0
ZW5lc3MuCi0gICAgZ2xUZXhJbWFnZTNEKEdMX1RFWFRVUkVfM0QsIDEsIEdMX1JHQkE4LCAyLCAy
LCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICB0ZXhE
YXRhR3JlZW4uZGF0YSgpKTsKLQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzNELCBH
TF9URVhUVVJFX0JBU0VfTEVWRUwsIDEpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzNELCBHTF9URVhUVVJFX01BWF9MRVZFTCwgMSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEVY
UEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7Ci0KLSAgICBpZiAoSXNJ
bnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9PUEVOR0xfQU5HTEUpCi0gICAgewotICAgICAgICAvLyBJbnRlbCB3YXMgb2JzZXJ2ZWQgZHJh
d2luZyBjb2xvciAwLDAsMCwwIGluc3RlYWQgb2YgdGhlIHRleHR1cmUgY29sb3IgYWZ0ZXIgdGhl
IGJhc2UKLSAgICAgICAgLy8gbGV2ZWwgd2FzIGNoYW5nZWQuCi0gICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBwYXJ0aWFsbHkgc2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBTd2l0Y2ggdGhlIGxldmVsIHRoYXQg
aXMgYmVpbmcgdXNlZCB0byB0aGUgY3lhbiBsZXZlbCAyLgotICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzNELCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDIpOwotICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzNELCBHTF9URVhUVVJFX01BWF9MRVZFTCwgMik7Ci0KLSAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAw
LjVmKTsKLQotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpjeWFuKTsK
LX0KLQotLy8gVGVzdCB0aGF0IGRyYXdpbmcgd29ya3MgY29ycmVjdGx5IHdoZW4gbGV2ZWxzIG91
dHNpZGUgdGhlIEJBU0VfTEVWRUwvTUFYX0xFVkVMIHJhbmdlIGRvIG5vdAotLy8gaGF2ZSBpbWFn
ZXMgZGVmaW5lZC4KLVRFU1RfUChUZXh0dXJlMkRBcnJheVRlc3RFUzMsIERyYXdXaXRoTGV2ZWxz
T3V0c2lkZVJhbmdlVW5kZWZpbmVkKQotewotICAgIGlmIChJc09TWCgpKQotICAgIHsKLSAgICAg
ICAgLy8gT2JzZXJ2ZWQgaW5jb3JyZWN0IHJlbmRlcmluZyBvbiBPU1guCi0gICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIE9TWC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRF9BUlJBWSwgbTJEQXJyYXlUZXh0dXJlKTsKLSAgICBzdGQ6
OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRhR3JlZW4oMnUgKiAydSAqIDJ1LCBHTENvbG9yOjpncmVl
bik7Ci0gICAgZ2xUZXhJbWFnZTNEKEdMX1RFWFRVUkVfMkRfQVJSQVksIDEsIEdMX1JHQkE4LCAy
LCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICB0
ZXhEYXRhR3JlZW4uZGF0YSgpKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRF9B
UlJBWSwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJEX0FSUkFZLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVB
Ul9NSVBNQVBfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRF9BUlJB
WSwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAxKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRF9BUlJBWSwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDEpOwotCi0gICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7
Ci0KLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOwotfQot
Ci0vLyBUZXN0IHRoYXQgZHJhd2luZyB3b3JrcyBjb3JyZWN0bHkgd2hlbiBsZXZlbHMgb3V0c2lk
ZSB0aGUgQkFTRV9MRVZFTC9NQVhfTEVWRUwgcmFuZ2UgaGF2ZQotLy8gZGltZW5zaW9ucyB0aGF0
IGRvbid0IGZpdCB0aGUgaW1hZ2VzIGluc2lkZSB0aGUgcmFuZ2UuCi0vLyBHTEVTIDMuMC40IHNl
Y3Rpb24gMy44LjEzIFRleHR1cmUgY29tcGxldGVuZXNzCi1URVNUX1AoVGV4dHVyZTJEQXJyYXlU
ZXN0RVMzLCBEcmF3V2l0aExldmVsc091dHNpZGVSYW5nZVdpdGhJbmNvbnNpc3RlbnREaW1lbnNp
b25zKQotewotICAgIGlmIChJc09TWCgpKQotICAgIHsKLSAgICAgICAgLy8gT2JzZXJ2ZWQgaW5j
b3JyZWN0IHJlbmRlcmluZyBvbiBPU1guCi0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIG9uIE9TWC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBn
bEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8zRCwgbTJEQXJyYXlUZXh0dXJlKTsKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRh
UmVkKDh1ICogOHUgKiA4dSwgR0xDb2xvcjo6cmVkKTsKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9y
PiB0ZXhEYXRhR3JlZW4oMnUgKiAydSAqIDJ1LCBHTENvbG9yOjpncmVlbik7Ci0gICAgc3RkOjp2
ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YUN5YW4oMnUgKiAydSAqIDJ1LCBHTENvbG9yOjpjeWFuKTsK
LQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJEX0FSUkFZLCBHTF9URVhUVVJFX01B
R19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkRf
QVJSQVksIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIpOwot
Ci0gICAgLy8gVHdvIGxldmVscyB0aGF0IGFyZSBpbml0aWFsbHkgdW51c2VkLgotICAgIGdsVGV4
SW1hZ2UzRChHTF9URVhUVVJFXzJEX0FSUkFZLCAwLCBHTF9SR0JBOCwgOCwgOCwgOCwgMCwgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAgICAgICAgdGV4RGF0YVJlZC5kYXRh
KCkpOwotICAgIGdsVGV4SW1hZ2UzRChHTF9URVhUVVJFXzJEX0FSUkFZLCAyLCBHTF9SR0JBOCwg
MiwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAgICAgICAg
dGV4RGF0YUN5YW4uZGF0YSgpKTsKLQotICAgIC8vIE9uZSBsZXZlbCB0aGF0IGlzIHVzZWQgLSBv
bmx5IHRoaXMgbGV2ZWwgc2hvdWxkIGFmZmVjdCBjb21wbGV0ZW5lc3MuCi0gICAgZ2xUZXhJbWFn
ZTNEKEdMX1RFWFRVUkVfMkRfQVJSQVksIDEsIEdMX1JHQkE4LCAyLCAyLCAyLCAwLCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICB0ZXhEYXRhR3JlZW4uZGF0YSgp
KTsKLQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJEX0FSUkFZLCBHTF9URVhUVVJF
X0JBU0VfTEVWRUwsIDEpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJEX0FSUkFZ
LCBHTF9URVhUVVJFX01BWF9MRVZFTCwgMSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
LQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEVYUEVD
VF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7Ci0KLSAgICBpZiAoSXNJbnRl
bCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9P
UEVOR0xfQU5HTEUpCi0gICAgewotICAgICAgICAvLyBJbnRlbCB3YXMgb2JzZXJ2ZWQgZHJhd2lu
ZyBjb2xvciAwLDAsMCwwIGluc3RlYWQgb2YgdGhlIHRleHR1cmUgY29sb3IgYWZ0ZXIgdGhlIGJh
c2UKLSAgICAgICAgLy8gbGV2ZWwgd2FzIGNoYW5nZWQuCi0gICAgICAgIHN0ZDo6Y291dCA8PCAi
VGVzdCBwYXJ0aWFsbHkgc2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKElzTlZJRElBKCkgJiYgKGdldFBsYXRmb3Jt
UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUgfHwKLSAg
ICAgICAgICAgICAgICAgICAgICAgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFKSkKLSAgICB7Ci0gICAgICAgIC8vIE5WSURJQSB3
YXMgb2JzZXJ2ZWQgZHJhd2luZyBjb2xvciAwLDAsMCwwIGluc3RlYWQgb2YgdGhlIHRleHR1cmUg
Y29sb3IgYWZ0ZXIgdGhlIGJhc2UKLSAgICAgICAgLy8gbGV2ZWwgd2FzIGNoYW5nZWQuCi0gICAg
ICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBwYXJ0aWFsbHkgc2tpcHBlZCBvbiBOVklESUEgT3BlbkdM
LiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gU3dpdGNo
IHRoZSBsZXZlbCB0aGF0IGlzIGJlaW5nIHVzZWQgdG8gdGhlIGN5YW4gbGV2ZWwgMi4KLSAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRF9BUlJBWSwgR0xfVEVYVFVSRV9CQVNFX0xFVkVM
LCAyKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRF9BUlJBWSwgR0xfVEVYVFVS
RV9NQVhfTEVWRUwsIDIpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3
UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQ09M
T1JfRVEoMCwgMCwgR0xDb2xvcjo6Y3lhbik7Ci19Ci0KLS8vIFRlc3QgdGhhdCB0ZXh0dXJlIGNv
bXBsZXRlbmVzcyBpcyB1cGRhdGVkIGlmIHRleHR1cmUgbWF4IGxldmVsIGNoYW5nZXMuCi0vLyBH
TEVTIDMuMC40IHNlY3Rpb24gMy44LjEzIFRleHR1cmUgY29tcGxldGVuZXNzCi1URVNUX1AoVGV4
dHVyZTJEVGVzdEVTMywgVGV4dHVyZUNvbXBsZXRlbmVzc0NoYW5nZXNXaXRoTWF4TGV2ZWwpCi17
Ci0gICAgaWYgKElzSW50ZWwoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQotICAgIHsKLSAgICAgICAgLy8gSW50ZWwgd2Fz
IG9ic2VydmVkIGhhdmluZyB3cm9uZyBiZWhhdmlvciBhZnRlciB0aGUgdGV4dHVyZSBpcyBtYWRl
IGluY29tcGxldGUgYnkgY2hhbmdpbmcKLSAgICAgICAgLy8gdGhlIGJhc2UgbGV2ZWwuCi0gICAg
ICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6
ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoSXNPU1goKSkKLSAgICB7Ci0g
ICAgICAgIC8vIE9ic2VydmVkIGluY29ycmVjdCByZW5kZXJpbmcgb24gT1NYLgotICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBPU1guIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0gICAgc3RkOjp2ZWN0
b3I8R0xDb2xvcj4gdGV4RGF0YUdyZWVuKDh1ICogOHUsIEdMQ29sb3I6OmdyZWVuKTsKLQotICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdM
X0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIpOwotCi0gICAgLy8gQSBsZXZlbCB0
aGF0IGlzIGluaXRpYWxseSB1bnVzZWQuCi0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDEsIEdMX1JHQkE4LCA4LCA4LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAg
ICAgICAgICAgICB0ZXhEYXRhR3JlZW4uZGF0YSgpKTsKLQotICAgIC8vIE9uZSBsZXZlbCB0aGF0
IGlzIGluaXRpYWxseSB1c2VkIC0gb25seSB0aGlzIGxldmVsIHNob3VsZCBhZmZlY3QgY29tcGxl
dGVuZXNzLgotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBOCwgMiwg
MiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAgICAgICAgdGV4RGF0
YUdyZWVuLmRhdGEoKSk7Ci0KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9CQVNFX0xFVkVMLCAwKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDApOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBF
Q1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOwotCi0gICAgLy8gU3dpdGNo
IHRoZSBtYXggbGV2ZWwgdG8gbGV2ZWwgMS4gVGhlIGxldmVscyB3aXRoaW4gdGhlIHVzZWQgcmFu
Z2Ugbm93IGhhdmUgaW5jb25zaXN0ZW50Ci0gICAgLy8gZGltZW5zaW9ucyBhbmQgdGhlIHRleHR1
cmUgc2hvdWxkIGJlIGluY29tcGxldGUuCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAxKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgRVhQ
RUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmJsYWNrKTsKLX0KLQotLy8gVGVzdCB0
aGF0IDNEIHRleHR1cmUgY29tcGxldGVuZXNzIGlzIHVwZGF0ZWQgaWYgdGV4dHVyZSBtYXggbGV2
ZWwgY2hhbmdlcy4KLS8vIEdMRVMgMy4wLjQgc2VjdGlvbiAzLjguMTMgVGV4dHVyZSBjb21wbGV0
ZW5lc3MKLVRFU1RfUChUZXh0dXJlM0RUZXN0RVMzLCBUZXh0dXJlM0RDb21wbGV0ZW5lc3NDaGFu
Z2VzV2l0aE1heExldmVsKQotewotICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5k
ZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0g
ICAgICAgIC8vIEludGVsIHdhcyBvYnNlcnZlZCBoYXZpbmcgd3JvbmcgYmVoYXZpb3IgYWZ0ZXIg
dGhlIHRleHR1cmUgaXMgbWFkZSBpbmNvbXBsZXRlIGJ5IGNoYW5naW5nCi0gICAgICAgIC8vIHRo
ZSBiYXNlIGxldmVsLgotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRl
bCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYg
KElzT1NYKCkpCi0gICAgewotICAgICAgICAvLyBPYnNlcnZlZCBpbmNvcnJlY3QgcmVuZGVyaW5n
IG9uIE9TWC4KLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gT1NYLiIgPDwg
c3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZ2xBY3RpdmVUZXh0dXJl
KEdMX1RFWFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfM0QsIG1UZXh0dXJl
M0QpOwotICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHRleERhdGFHcmVlbigydSAqIDJ1ICogMnUs
IEdMQ29sb3I6OmdyZWVuKTsKLQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzNELCBH
TF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5F
QVIpOwotCi0gICAgLy8gQSBsZXZlbCB0aGF0IGlzIGluaXRpYWxseSB1bnVzZWQuCi0gICAgZ2xU
ZXhJbWFnZTNEKEdMX1RFWFRVUkVfM0QsIDEsIEdMX1JHQkE4LCAxLCAxLCAyLCAwLCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICB0ZXhEYXRhR3JlZW4uZGF0YSgp
KTsKLQotICAgIC8vIE9uZSBsZXZlbCB0aGF0IGlzIGluaXRpYWxseSB1c2VkIC0gb25seSB0aGlz
IGxldmVsIHNob3VsZCBhZmZlY3QgY29tcGxldGVuZXNzLgotICAgIGdsVGV4SW1hZ2UzRChHTF9U
RVhUVVJFXzNELCAwLCBHTF9SR0JBOCwgMiwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwKLSAgICAgICAgICAgICAgICAgdGV4RGF0YUdyZWVuLmRhdGEoKSk7Ci0KLSAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8zRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAwKTsKLSAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8zRCwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDAp
OwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwg
InBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xD
b2xvcjo6Z3JlZW4pOwotCi0gICAgLy8gU3dpdGNoIHRoZSBtYXggbGV2ZWwgdG8gbGV2ZWwgMS4g
VGhlIGxldmVscyB3aXRoaW4gdGhlIHVzZWQgcmFuZ2Ugbm93IGhhdmUgaW5jb25zaXN0ZW50Ci0g
ICAgLy8gZGltZW5zaW9ucyBhbmQgdGhlIHRleHR1cmUgc2hvdWxkIGJlIGluY29tcGxldGUuCi0g
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAx
KTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0s
ICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdM
Q29sb3I6OmJsYWNrKTsKLX0KLQotLy8gVGVzdCB0aGF0IHRleHR1cmUgY29tcGxldGVuZXNzIGlz
IHVwZGF0ZWQgaWYgdGV4dHVyZSBiYXNlIGxldmVsIGNoYW5nZXMuCi0vLyBHTEVTIDMuMC40IHNl
Y3Rpb24gMy44LjEzIFRleHR1cmUgY29tcGxldGVuZXNzCi1URVNUX1AoVGV4dHVyZTJEVGVzdEVT
MywgVGV4dHVyZUNvbXBsZXRlbmVzc0NoYW5nZXNXaXRoQmFzZUxldmVsKQotewotICAgIGlmIChJ
c0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0gICAgICAgIC8vIEludGVsIHdhcyBvYnNlcnZlZCBo
YXZpbmcgd3JvbmcgYmVoYXZpb3IgYWZ0ZXIgdGhlIHRleHR1cmUgaXMgbWFkZSBpbmNvbXBsZXRl
IGJ5IGNoYW5naW5nCi0gICAgICAgIC8vIHRoZSBiYXNlIGxldmVsLgotICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwot
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0gICAgc3RkOjp2
ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YUdyZWVuKDh1ICogOHUsIEdMQ29sb3I6OmdyZWVuKTsKLQot
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIs
IEdMX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIpOwotCi0gICAgLy8gVHdvIGxl
dmVscyB0aGF0IGFyZSBpbml0aWFsbHkgdW51c2VkLgotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhU
VVJFXzJELCAwLCBHTF9SR0JBOCwgOCwgOCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwK
LSAgICAgICAgICAgICAgICAgdGV4RGF0YUdyZWVuLmRhdGEoKSk7Ci0gICAgZ2xUZXhJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4LCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLAotICAgICAgICAgICAgICAgICB0ZXhEYXRhR3JlZW4uZGF0YSgpKTsKLQotICAgIC8v
IE9uZSBsZXZlbCB0aGF0IGlzIGluaXRpYWxseSB1c2VkIC0gb25seSB0aGlzIGxldmVsIHNob3Vs
ZCBhZmZlY3QgY29tcGxldGVuZXNzLgotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAy
LCBHTF9SR0JBOCwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAg
ICAgICAgICAgdGV4RGF0YUdyZWVuLmRhdGEoKSk7Ci0KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAyKTsKLSAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDIpOwotCi0gICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41
Zik7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOwot
Ci0gICAgLy8gU3dpdGNoIHRoZSBiYXNlIGxldmVsIHRvIGxldmVsIDEuIFRoZSBsZXZlbHMgd2l0
aGluIHRoZSB1c2VkIHJhbmdlIG5vdyBoYXZlIGluY29uc2lzdGVudAotICAgIC8vIGRpbWVuc2lv
bnMgYW5kIHRoZSB0ZXh0dXJlIHNob3VsZCBiZSBpbmNvbXBsZXRlLgotICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDEpOwotCi0gICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6YmxhY2sp
OwotfQotCi0vLyBUZXN0IHRoYXQgdGV4dHVyZSBpcyBub3QgY29tcGxldGUgaWYgYmFzZSBsZXZl
bCBpcyBncmVhdGVyIHRoYW4gbWF4IGxldmVsLgotLy8gR0xFUyAzLjAuNCBzZWN0aW9uIDMuOC4x
MyBUZXh0dXJlIGNvbXBsZXRlbmVzcwotVEVTVF9QKFRleHR1cmUyRFRlc3RFUzMsIFRleHR1cmVC
YXNlTGV2ZWxHcmVhdGVyVGhhbk1heExldmVsKQotewotICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0
UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdM
RSkKLSAgICB7Ci0gICAgICAgIC8vIEludGVsIFdpbmRvd3MgT3BlbkdMIGRyaXZlciBjcmFzaGVz
IGlmIHRoZSBiYXNlIGxldmVsIG9mIGEgbm9uLWltbXV0YWJsZSB0ZXh0dXJlIGlzIG91dAotICAg
ICAgICAvLyBvZiByYW5nZS4KLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24g
SW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIG1UZXh0dXJlMkQpOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0K
LSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTgsIDEsIDEsIDAsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZHTENvbG9yOjpncmVlbik7Ci0KLSAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAxMDAwMCk7Ci0g
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAw
KTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0s
ICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgLy8gVGV4dHVyZSBzaG91bGQgYmUgaW5jb21wbGV0
ZS4KLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6YmxhY2spOwotfQot
Ci0vLyBUZXN0IHRoYXQgaW1tdXRhYmxlIHRleHR1cmUgYmFzZSBsZXZlbCBhbmQgbWF4IGxldmVs
IGFyZSBjbGFtcGVkLgotLy8gR0xFUyAzLjAuNCBzZWN0aW9uIDMuOC4xMCBzdWJzZWN0aW9uIE1p
cG1hcHBpbmcKLVRFU1RfUChUZXh0dXJlMkRUZXN0RVMzLCBJbW11dGFibGVUZXh0dXJlQmFzZUxl
dmVsT3V0T2ZSYW5nZSkKLXsKLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0KLSAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNU
KTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklM
VEVSLCBHTF9ORUFSRVNUKTsKLQotICAgIGdsVGV4U3RvcmFnZTJEKEdMX1RFWFRVUkVfMkQsIDEs
IEdMX1JHQkE4LCAxLCAxKTsKLQotICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAw
LCAwLCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmR0xDb2xvcjo6Z3JlZW4p
OwotCi0gICAgLy8gRm9yIGltbXV0YWJsZS1mb3JtYXQgdGV4dHVyZXMsIGJhc2UgbGV2ZWwgc2hv
dWxkIGJlIGNsYW1wZWQgdG8gWzAsIGxldmVscyAtIDFdLCBhbmQgbWF4IGxldmVsCi0gICAgLy8g
c2hvdWxkIGJlIGNsYW1wZWQgdG8gW2Jhc2VfbGV2ZWwsIGxldmVscyAtIDFdLgotICAgIC8vIEdM
RVMgMy4wLjQgc2VjdGlvbiAzLjguMTAgc3Vic2VjdGlvbiBNaXBtYXBwaW5nCi0gICAgLy8gSW4g
dGhlIGNhc2Ugb2YgdGhpcyB0ZXN0LCB0aG9zZSBydWxlcyBtYWtlIHRoZSBlZmZlY3RpdmUgYmFz
ZSBsZXZlbCBhbmQgbWF4IGxldmVsIDAuCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMTAwMDApOwotICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BWF9MRVZFTCwgMTAwMDApOwotCi0gICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41
Zik7Ci0KLSAgICAvLyBUZXh0dXJlIHNob3VsZCBiZSBjb21wbGV0ZS4KLSAgICBFWFBFQ1RfUElY
RUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOwotfQotCi0vLyBUZXN0IHRoYXQgY2hh
bmdpbmcgYmFzZSBsZXZlbCB3b3JrcyB3aGVuIGl0IGFmZmVjdHMgdGhlIGZvcm1hdCBvZiB0aGUg
dGV4dHVyZS4KLVRFU1RfUChUZXh0dXJlMkRUZXN0RVMzLCBUZXh0dXJlRm9ybWF0Q2hhbmdlc1dp
dGhCYXNlTGV2ZWwpCi17Ci0gICAgaWYgKElzTlZJRElBKCkgJiYgSXNPcGVuR0woKSkKLSAgICB7
Ci0gICAgICAgIC8vIE9ic2VydmVkIHJlbmRlcmluZyBjb3JydXB0aW9uIG9uIE5WSURJQSBPcGVu
R0wuCi0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIE5WSURJQSBPcGVuR0wu
IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKElzSW50ZWwo
KSAmJiBJc0Rlc2t0b3BPcGVuR0woKSkKLSAgICB7Ci0gICAgICAgIC8vIE9ic2VydmVkIGluY29y
cmVjdCByZW5kZXJpbmcgb24gSW50ZWwgT3BlbkdMLgotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3Qgc2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgaWYgKElzQU1EKCkgJiYgSXNEZXNrdG9wT3BlbkdMKCkpCi0gICAgewot
ICAgICAgICAvLyBPYnNlcnZlZCBpbmNvcnJlY3QgcmVuZGVyaW5nIG9uIEFNRCBPcGVuR0wuCi0g
ICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEFNRCBPcGVuR0wuIiA8PCBzdGQ6
OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xf
VEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7
Ci0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YUN5YW4oNHUgKiA0dSwgR0xDb2xvcjo6
Y3lhbik7Ci0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YUdyZWVuKDR1ICogNHUsIEdM
Q29sb3I6OmdyZWVuKTsKLQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIp
OwotCi0gICAgLy8gUkdCQTggbGV2ZWwgdGhhdCdzIGluaXRpYWxseSB1bnVzZWQuCi0gICAgZ2xU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkE4LCA0LCA0LCAwLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICB0ZXhEYXRhQ3lhbi5kYXRhKCkpOwot
Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQkFTRV9MRVZF
TCwgMSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFY
X0xFVkVMLCAxKTsKLQotICAgIC8vIFJHOCBsZXZlbCB0aGF0J3MgaW5pdGlhbGx5IHVzZWQsIHdp
dGggY29uc2lzdGVudCBkaW1lbnNpb25zIHdpdGggbGV2ZWwgMCBidXQgYSBkaWZmZXJlbnQKLSAg
ICAvLyBmb3JtYXQuIEl0IHJlYWRzIGdyZWVuIGNoYW5uZWwgZGF0YSBmcm9tIHRoZSBncmVlbiBh
bmQgYWxwaGEgY2hhbm5lbHMgb2YgdGV4RGF0YUdyZWVuCi0gICAgLy8gKHRoaXMgaXMgYSBiaXQg
aGFja3kgYnV0IHdvcmtzKS4KLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xf
Ukc4LCAyLCAyLCAwLCBHTF9SRywgR0xfVU5TSUdORURfQllURSwgdGV4RGF0YUdyZWVuLmRhdGEo
KSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFt
LCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBH
TENvbG9yOjpncmVlbik7Ci0KLSAgICAvLyBTd2l0Y2ggdGhlIHRleHR1cmUgdG8gdXNlIHRoZSBj
eWFuIGxldmVsIDAgd2l0aCB0aGUgUkdCQSBmb3JtYXQuCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMCk7Ci0gICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAwKTsKLQotICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOwotCi0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmN5YW4pOwot
fQotCi0vLyBUZXN0IHRoYXQgc2V0dGluZyBhIHRleHR1cmUgaW1hZ2Ugd29ya3Mgd2hlbiBiYXNl
IGxldmVsIGlzIG91dCBvZiByYW5nZS4KLVRFU1RfUChUZXh0dXJlMkRUZXN0RVMzLCBTZXRJbWFn
ZVdoZW5CYXNlTGV2ZWxPdXRPZlJhbmdlKQotewotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhU
VVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKLQot
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIs
IEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMTAwMDApOwotICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BWF9MRVZFTCwgMTAwMDApOwotCi0gICAg
Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkE4LCAxLCAxLCAwLCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLCAmR0xDb2xvcjo6Z3JlZW4pOwotCi0gICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9CQVNFX0xFVkVMLCAwKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAw
LjVmKTsKLQotICAgIC8vIFRleHR1cmUgc2hvdWxkIGJlIGNvbXBsZXRlLgotICAgIEVYUEVDVF9Q
SVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7Ci19Ci0KLS8vIEluIHRoZSBEM0Qx
MSByZW5kZXJlciwgd2UgbmVlZCB0byBpbml0aWFsaXplIHNvbWUgdGV4dHVyZSBmb3JtYXRzLCB0
byBmaWxsIGVtcHR5IGNoYW5uZWxzLiBFRyBSQkEtPlJHQkE4LCB3aXRoIDEuMAotLy8gaW4gdGhl
IGFscGhhIGNoYW5uZWwuIFRoaXMgdGVzdCBjb3ZlcnMgYSBidWcgd2hlcmUgcmVkZWZpbmluZyBh
cnJheSB0ZXh0dXJlcyB3aXRoIHRoZXNlIGZvcm1hdHMgZG9lcyBub3Qgd29yayBhcwotLy8gZXhw
ZWN0ZWQuCi1URVNUX1AoVGV4dHVyZTJEQXJyYXlUZXN0RVMzLCBSZWRlZmluZUluaXR0YWJsZUFy
cmF5KQotewotICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IHBpeGVsRGF0YTsKLSAgICBmb3IgKHNp
emVfdCBjb3VudCA9IDA7IGNvdW50IDwgNTAwMDsgY291bnQrKykKLSAgICB7Ci0gICAgICAgIHBp
eGVsRGF0YS5wdXNoX2JhY2soMHUpOwotICAgICAgICBwaXhlbERhdGEucHVzaF9iYWNrKDI1NXUp
OwotICAgICAgICBwaXhlbERhdGEucHVzaF9iYWNrKDB1KTsKLSAgICB9Ci0KLSAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkRfQVJSQVksIG0yREFycmF5VGV4dHVyZSk7Ci0gICAgZ2xVc2VQ
cm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBnbFVuaWZvcm0xaShtVGV4dHVyZUFycmF5TG9jYXRpb24s
IDApOwotCi0gICAgLy8gVGhlIGZpcnN0IGRyYXcgd29ya2VkIGNvcnJlY3RseS4KLSAgICBnbFRl
eEltYWdlM0QoR0xfVEVYVFVSRV8yRF9BUlJBWSwgMCwgR0xfUkdCLCA0LCA0LCAyLCAwLCBHTF9S
R0IsIEdMX1VOU0lHTkVEX0JZVEUsICZwaXhlbERhdGFbMF0pOwotCi0gICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkRfQVJSQVksIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVT
VCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkRfQVJSQVksIEdMX1RFWFRVUkVf
TUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkRfQVJSQVksIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9SRVBFQVQpOwotICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJEX0FSUkFZLCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfUkVQRUFUKTsK
LSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMS4wZik7Ci0gICAgRVhQRUNUX1BJ
WEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKLQotICAgIC8vIFRoZSBkaW1lbnNp
b24gb2YgdGhlIHJlc3BlY2lmaWNhdGlvbiBtdXN0IG1hdGNoIHRoZSBvcmlnaW5hbCBleGFjdGx5
IHRvIHRyaWdnZXIgdGhlIGJ1Zy4KLSAgICBnbFRleEltYWdlM0QoR0xfVEVYVFVSRV8yRF9BUlJB
WSwgMCwgR0xfUkdCLCA0LCA0LCAyLCAwLCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUsICZwaXhl
bERhdGFbMF0pOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAxLjBmKTsKLSAg
ICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOwotCi0gICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRlc3Qgc2hhZG93IHNhbXBsZXIgYW5kIHJlZ3Vs
YXIgbm9uLXNoYWRvdyBzYW1wbGVyIGNvZXhpc3RpbmcgaW4gdGhlIHNhbWUgc2hhZGVyLgotLy8g
VGhpcyB0ZXN0IGlzIG5lZWRlZCBlc3BlY2lhbGx5IHRvIGNvbmZpcm0gdGhhdCBzYW1wbGVyIHJl
Z2lzdGVycyBnZXQgYXNzaWduZWQgY29ycmVjdGx5IG9uCi0vLyB0aGUgSExTTCBiYWNrZW5kIGV2
ZW4gd2hlbiB0aGVyZSdzIGEgbWl4IG9mIGRpZmZlcmVudCBITFNMIHNhbXBsZXIgYW5kIHRleHR1
cmUgdHlwZXMuCi1URVNUX1AoU2hhZG93U2FtcGxlclBsdXNTYW1wbGVyM0RUZXN0RVMzLCBTaGFk
b3dTYW1wbGVyUGx1c1NhbXBsZXIzRERyYXcpCi17Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RF
WFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfM0QsIG1UZXh0dXJlM0QpOwot
ICAgIEdMdWJ5dGUgdGV4RGF0YVs0XTsKLSAgICB0ZXhEYXRhWzBdID0gMDsKLSAgICB0ZXhEYXRh
WzFdID0gNjA7Ci0gICAgdGV4RGF0YVsyXSA9IDA7Ci0gICAgdGV4RGF0YVszXSA9IDI1NTsKLSAg
ICBnbFRleEltYWdlM0QoR0xfVEVYVFVSRV8zRCwgMCwgR0xfUkdCQSwgMSwgMSwgMSwgMCwgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwgdGV4RGF0YSk7Ci0KLSAgICBnbEFjdGl2ZVRleHR1cmUo
R0xfVEVYVFVSRTEpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVT
aGFkb3cpOwotICAgIEdMZmxvYXQgZGVwdGhUZXhEYXRhWzFdOwotICAgIGRlcHRoVGV4RGF0YVsw
XSA9IDAuNWY7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX0RFUFRIX0NP
TVBPTkVOVDMyRiwgMSwgMSwgMCwgR0xfREVQVEhfQ09NUE9ORU5ULCBHTF9GTE9BVCwKLSAgICAg
ICAgICAgICAgICAgZGVwdGhUZXhEYXRhKTsKLQotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7
Ci0gICAgZ2xVbmlmb3JtMWYobURlcHRoUmVmVW5pZm9ybUxvY2F0aW9uLCAwLjNmKTsKLSAgICBn
bFVuaWZvcm0xaShtVGV4dHVyZTNEVW5pZm9ybUxvY2F0aW9uLCAwKTsKLSAgICBnbFVuaWZvcm0x
aShtVGV4dHVyZVNoYWRvd1VuaWZvcm1Mb2NhdGlvbiwgMSk7Ci0KLSAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMsIEdMX0xFUVVBTCk7Ci0g
ICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOwotICAgIC8vIFRoZSBzaGFkZXIgd3JpdGVzIDAuNSAqIDxjb21wYXJpc29uIHJl
c3VsdCAoMS4wKT4gKyA8dGV4dHVyZSBjb2xvcj4KLSAgICBFWFBFQ1RfUElYRUxfTkVBUigwLCAw
LCAxMjgsIDE4OCwgMTI4LCAyNTUsIDIpOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DLCBHTF9HUkVBVEVSKTsKLSAgICBkcmF3UXVh
ZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci0gICAgLy8gVGhlIHNoYWRlciB3cml0ZXMgMC41ICogPGNvbXBhcmlzb24gcmVzdWx0ICgwLjAp
PiArIDx0ZXh0dXJlIGNvbG9yPgotICAgIEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAsIDAsIDYwLCAw
LCAyNTUsIDIpOwotfQotCi0vLyBUZXN0IG11bHRpcGxlIGRpZmZlcmVudCBzYW1wbGVyIHR5cGVz
IGluIHRoZSBzYW1lIHNoYWRlci4KLS8vIFRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgZXZlbiBp
ZiBzYW1wbGVyIC8gdGV4dHVyZSByZWdpc3RlcnMgZ2V0IGdyb3VwZWQgdG9nZXRoZXIgYmFzZWQg
b24gdHlwZQotLy8gb3Igb3RoZXJ3aXNlIGdldCBzaHVmZmxlZCBhcm91bmQgaW4gdGhlIEhMU0wg
YmFja2VuZCBvZiB0aGUgc2hhZGVyIHRyYW5zbGF0b3IsIHRoZSBEM0QgcmVuZGVyZXIKLS8vIHN0
aWxsIGhhcyB0aGUgcmlnaHQgcmVnaXN0ZXIgaW5kZXggaW5mb3JtYXRpb24gZm9yIGVhY2ggRVNT
TCBzYW1wbGVyLgotLy8gVGhlIHRlc3RlZCBFU1NMIHNhbXBsZXJzIGhhdmUgdGhlIGZvbGxvd2lu
ZyB0eXBlcyBpbiBEM0QxMSBITFNMOgotLy8gc2FtcGxlcjJEOiAgICAgICAgIFRleHR1cmUyRCAg
ICsgU2FtcGxlclN0YXRlCi0vLyBzYW1wbGVyQ3ViZTogICAgICAgVGV4dHVyZUN1YmUgKyBTYW1w
bGVyU3RhdGUKLS8vIHNhbXBsZXIyRFNoYWRvdzogICBUZXh0dXJlMkQgICArIFNhbXBsZXJDb21w
YXJpc29uU3RhdGUKLS8vIHNhbXBsZXJDdWJlU2hhZG93OiBUZXh0dXJlQ3ViZSArIFNhbXBsZXJD
b21wYXJpc29uU3RhdGUKLVRFU1RfUChTYW1wbGVyVHlwZU1peFRlc3RFUzMsIFNhbXBsZXJUeXBl
TWl4RHJhdykKLXsKLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0gICAgR0x1Ynl0ZSB0ZXhEYXRh
WzRdOwotICAgIHRleERhdGFbMF0gPSAwOwotICAgIHRleERhdGFbMV0gPSAwOwotICAgIHRleERh
dGFbMl0gPSAxMjA7Ci0gICAgdGV4RGF0YVszXSA9IDI1NTsKLSAgICBnbFRleEltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwgdGV4RGF0YSk7Ci0KLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTEpOwotICAgIGds
QmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJFX01BUCwgbVRleHR1cmVDdWJlKTsKLSAgICB0ZXhE
YXRhWzBdID0gMDsKLSAgICB0ZXhEYXRhWzFdID0gOTA7Ci0gICAgdGV4RGF0YVsyXSA9IDA7Ci0g
ICAgdGV4RGF0YVszXSA9IDI1NTsKLSAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFX0NVQkVf
TUFQLCAxLCBHTF9SR0JBOCwgMSwgMSk7Ci0gICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVf
Q1VCRV9NQVBfUE9TSVRJVkVfWCwgMCwgMCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwKLSAgICAgICAgICAgICAgICAgICAgdGV4RGF0YSk7Ci0KLSAgICBnbEFjdGl2ZVRleHR1
cmUoR0xfVEVYVFVSRTIpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1
cmUyRFNoYWRvdyk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfQ09NUEFSRV9GVU5DLCBHTF9MRVFVQUwpOwotICAgIEdMZmxvYXQgZGVwdGhUZXhEYXRhWzFd
OwotICAgIGRlcHRoVGV4RGF0YVswXSA9IDAuNWY7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAsIEdMX0RFUFRIX0NPTVBPTkVOVDMyRiwgMSwgMSwgMCwgR0xfREVQVEhfQ09NUE9O
RU5ULCBHTF9GTE9BVCwKLSAgICAgICAgICAgICAgICAgZGVwdGhUZXhEYXRhKTsKLQotICAgIGds
QWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMyk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
X0NVQkVfTUFQLCBtVGV4dHVyZUN1YmVTaGFkb3cpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQywgR0xfTEVRVUFMKTsKLSAg
ICBkZXB0aFRleERhdGFbMF0gPSAwLjJmOwotICAgIGdsVGV4U3RvcmFnZTJEKEdMX1RFWFRVUkVf
Q1VCRV9NQVAsIDEsIEdMX0RFUFRIX0NPTVBPTkVOVDMyRiwgMSwgMSk7Ci0gICAgZ2xUZXhTdWJJ
bWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgMCwgMCwgMCwgMSwgMSwgR0xf
REVQVEhfQ09NUE9ORU5ULCBHTF9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgZGVwdGhUZXhE
YXRhKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xVc2VQcm9ncmFtKG1Q
cm9ncmFtKTsKLSAgICBnbFVuaWZvcm0xZihtRGVwdGhSZWZVbmlmb3JtTG9jYXRpb24sIDAuM2Yp
OwotICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24sIDApOwotICAgIGds
VW5pZm9ybTFpKG1UZXh0dXJlQ3ViZVVuaWZvcm1Mb2NhdGlvbiwgMSk7Ci0gICAgZ2xVbmlmb3Jt
MWkobVRleHR1cmUyRFNoYWRvd1VuaWZvcm1Mb2NhdGlvbiwgMik7Ci0gICAgZ2xVbmlmb3JtMWko
bVRleHR1cmVDdWJlU2hhZG93VW5pZm9ybUxvY2F0aW9uLCAzKTsKLQotICAgIGRyYXdRdWFkKG1Q
cm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAg
ICAvLyBUaGUgc2hhZGVyIHdyaXRlczoKLSAgICAvLyA8dGV4dHVyZSAyZCBjb2xvcj4gKwotICAg
IC8vIDxjdWJlIG1hcCBjb2xvcj4gKwotICAgIC8vIDAuMjUgKiA8Y29tcGFyaXNvbiByZXN1bHQg
KDEuMCk+ICsKLSAgICAvLyAwLjEyNSAqIDxjb21wYXJpc29uIHJlc3VsdCAoMC4wKT4KLSAgICBF
WFBFQ1RfUElYRUxfTkVBUigwLCAwLCA2NCwgMTU0LCAxODQsIDI1NSwgMik7Ci19Ci0KLS8vIFRl
c3QgZGlmZmVyZW50IGJhc2UgbGV2ZWxzIG9uIHRleHR1cmVzIGFjY2Vzc2VkIHRocm91Z2ggdGhl
IHNhbWUgc2FtcGxlciBhcnJheS4KLS8vIENhbGxpbmcgdGV4dHVyZVNpemUoKSBvbiB0aGUgc2Ft
cGxlcnMgaGl0cyB0aGUgRDNEIHNhbXBsZXIgbWV0YWRhdGEgd29ya2Fyb3VuZC4KLVRFU1RfUChU
ZXh0dXJlU2l6ZVRleHR1cmVBcnJheVRlc3QsIEJhc2VMZXZlbFZhcmllc0luVGV4dHVyZUFycmF5
KQotewotICAgIGlmICgoSXNBTUQoKSB8fCBJc0ludGVsKCkpICYmIGdldFBsYXRmb3JtUmVuZGVy
ZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKLSAgICB7Ci0gICAg
ICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIGFuZCBBTUQgRDNELiIgPDwg
c3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGdsQWN0aXZlVGV4dHVyZShH
TF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJE
QSk7Ci0gICAgR0xzaXplaSBzaXplID0gNjQ7Ci0gICAgZm9yIChHTGludCBsZXZlbCA9IDA7IGxl
dmVsIDwgNzsgKytsZXZlbCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9MVCgwLCBzaXplKTsKLSAg
ICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIGxldmVsLCBHTF9SR0JBLCBzaXplLCBz
aXplLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0cik7Ci0gICAgICAgIHNpemUgPSBzaXplIC8gMjsKLSAgICB9Ci0gICAgQVNTRVJUX0VR
KDAsIHNpemUpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X0JBU0VfTEVWRUwsIDEpOwotCi0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUxKTsKLSAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkRCKTsKLSAgICBzaXplID0g
MTI4OwotICAgIGZvciAoR0xpbnQgbGV2ZWwgPSAwOyBsZXZlbCA8IDg7ICsrbGV2ZWwpCi0gICAg
ewotICAgICAgICBBU1NFUlRfTFQoMCwgc2l6ZSk7Ci0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCBsZXZlbCwgR0xfUkdCQSwgc2l6ZSwgc2l6ZSwgMCwgR0xfUkdCQSwgR0xfVU5T
SUdORURfQllURSwKLSAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICBzaXpl
ID0gc2l6ZSAvIDI7Ci0gICAgfQotICAgIEFTU0VSVF9FUSgwLCBzaXplKTsKLSAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAzKTsKLSAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAg
Z2xVbmlmb3JtMWkobVRleHR1cmUwTG9jYXRpb24sIDApOwotICAgIGdsVW5pZm9ybTFpKG1UZXh0
dXJlMUxvY2F0aW9uLCAxKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAw
LjVmKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICAvLyBSZWQgY2hhbm5lbDogd2lk
dGggb2YgbGV2ZWwgMSBvZiB0ZXh0dXJlIEE6IDMyLgotICAgIC8vIEdyZWVuIGNoYW5uZWw6IHdp
ZHRoIG9mIGxldmVsIDMgb2YgdGV4dHVyZSBCOiAxNi4KLSAgICBFWFBFQ1RfUElYRUxfTkVBUigw
LCAwLCAzMiwgMTYsIDAsIDI1NSwgMik7Ci19Ci0KLS8vIFdoZW4gc2FtcGxpbmcgYSB0ZXh0dXJl
IHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlzIHJldHVybmVkIGFzIHRoZSBhbHBoYSB2
YWx1ZS4KLS8vIEVTIDMuMC40IHRhYmxlIDMuMjQKLVRFU1RfUChUZXh0dXJlMkRUZXN0RVMzLCBU
ZXh0dXJlUkdCSW1wbGljaXRBbHBoYTEpCi17Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRV
UkUwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOwotICAg
IGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0I4LCAxLCAxLCAwLCBHTF9SR0Is
IEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgRVhQRUNU
X1BJWEVMX0FMUEhBX0VRKDAsIDAsIDI1NSk7Ci19Ci0KLS8vIFdoZW4gc2FtcGxpbmcgYSB0ZXh0
dXJlIHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlzIHJldHVybmVkIGFzIHRoZSBhbHBo
YSB2YWx1ZS4KLS8vIEVTIDMuMC40IHRhYmxlIDMuMjQKLVRFU1RfUChUZXh0dXJlMkRUZXN0RVMz
LCBUZXh0dXJlTHVtaW5hbmNlSW1wbGljaXRBbHBoYTEpCi17Ci0gICAgZ2xBY3RpdmVUZXh0dXJl
KEdMX1RFWFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJl
MkQpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9MVU1JTkFOQ0UsIDEs
IDEsIDAsIEdMX0xVTUlOQU5DRSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0gICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQUxQSEFfRVEoMCwgMCwgMjU1KTsKLX0KLQotLy8g
V2hlbiBzYW1wbGluZyBhIHRleHR1cmUgd2l0aG91dCBhbiBhbHBoYSBjaGFubmVsLCAiMSIgaXMg
cmV0dXJuZWQgYXMgdGhlIGFscGhhIHZhbHVlLgotLy8gRVMgMy4wLjQgdGFibGUgMy4yNAotVEVT
VF9QKFRleHR1cmUyRFRlc3RFUzMsIFRleHR1cmVMdW1pbmFuY2UzMkltcGxpY2l0QWxwaGExKQot
ewotICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9mbG9hdCIpKQotICAg
IHsKLSAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICAgICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKLSAgICAgICAgZ2xUZXhJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDAsIEdMX0xVTUlOQU5DRSwgMSwgMSwgMCwgR0xfTFVNSU5BTkNFLCBH
TF9GTE9BVCwgbnVsbHB0cik7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAg
ICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgICAgICBFWFBF
Q1RfUElYRUxfQUxQSEFfRVEoMCwgMCwgMjU1KTsKLSAgICB9Ci19Ci0KLS8vIFdoZW4gc2FtcGxp
bmcgYSB0ZXh0dXJlIHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlzIHJldHVybmVkIGFz
IHRoZSBhbHBoYSB2YWx1ZS4KLS8vIEVTIDMuMC40IHRhYmxlIDMuMjQKLVRFU1RfUChUZXh0dXJl
MkRUZXN0RVMzLCBUZXh0dXJlTHVtaW5hbmNlMTZJbXBsaWNpdEFscGhhMSkKLXsKLSAgICBpZiAo
ZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCIpKQotICAgIHsKLSAg
ICAgICAgaWYgKElzTlZJRElBKCkgJiYgSXNPcGVuR0xFUygpKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBOVklESUEiIDw8IHN0ZDo6ZW5kbDsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAvLyBUT0RPKHlub3Zpa292
KTogcmUtZW5hYmxlIG9uY2Ugcm9vdCBjYXVzZSBvZiBodHRwOi8vYW5nbGVidWcuY29tLzE0MjAg
aXMgZml4ZWQKLSAgICAgICAgaWYgKElzQW5kcm9pZCgpICYmIElzQWRyZW5vKCkgJiYgSXNPcGVu
R0xFUygpKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBl
ZCBvbiBBZHJlbm8gT3BlbkdMRVMgb24gQW5kcm9pZC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhU
VVJFMCk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7
Ci0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9MVU1JTkFOQ0UsIDEs
IDEsIDAsIEdMX0xVTUlOQU5DRSwgR0xfSEFMRl9GTE9BVF9PRVMsCi0gICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAg
ZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgICAgIEVYUEVDVF9Q
SVhFTF9BTFBIQV9FUSgwLCAwLCAyNTUpOwotICAgIH0KLX0KLQotLy8gV2hlbiBzYW1wbGluZyBh
IHRleHR1cmUgd2l0aG91dCBhbiBhbHBoYSBjaGFubmVsLCAiMSIgaXMgcmV0dXJuZWQgYXMgdGhl
IGFscGhhIHZhbHVlLgotLy8gRVMgMy4wLjQgdGFibGUgMy4yNAotVEVTVF9QKFRleHR1cmUyRFVu
c2lnbmVkSW50ZWdlckFscGhhMVRlc3RFUzMsIFRleHR1cmVSR0I4VUlJbXBsaWNpdEFscGhhMSkK
LXsKLSAgICBpZiAoSXNJbnRlbCgpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IGRpc2FibGVkIG9uIEludGVsLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwgR0xfUkdCOFVJLCAxLCAxLCAwLCBHTF9SR0JfSU5URUdFUiwgR0xfVU5TSUdORURfQllU
RSwgbnVsbHB0cik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7
Ci0KLSAgICBFWFBFQ1RfUElYRUxfQUxQSEFfRVEoMCwgMCwgMjU1KTsKLX0KLQotLy8gV2hlbiBz
YW1wbGluZyBhIHRleHR1cmUgd2l0aG91dCBhbiBhbHBoYSBjaGFubmVsLCAiMSIgaXMgcmV0dXJu
ZWQgYXMgdGhlIGFscGhhIHZhbHVlLgotLy8gRVMgMy4wLjQgdGFibGUgMy4yNAotVEVTVF9QKFRl
eHR1cmUyREludGVnZXJBbHBoYTFUZXN0RVMzLCBUZXh0dXJlUkdCOElJbXBsaWNpdEFscGhhMSkK
LXsKLSAgICBpZiAoSXNJbnRlbCgpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IGRpc2FibGVkIG9uIEludGVsLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKLQotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCBHTF9SR0I4SSwgMSwgMSwgMCwgR0xfUkdCX0lOVEVHRVIsIEdMX0JZVEUsIG51bGxw
dHIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19G
SUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAg
RVhQRUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAsIDI1NSk7Ci19Ci0KLS8vIFdoZW4gc2FtcGxpbmcg
YSB0ZXh0dXJlIHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlzIHJldHVybmVkIGFzIHRo
ZSBhbHBoYSB2YWx1ZS4KLS8vIEVTIDMuMC40IHRhYmxlIDMuMjQKLVRFU1RfUChUZXh0dXJlMkRV
bnNpZ25lZEludGVnZXJBbHBoYTFUZXN0RVMzLCBUZXh0dXJlUkdCMTZVSUltcGxpY2l0QWxwaGEx
KQotewotICAgIGlmIChJc0ludGVsKCkpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3QgZGlzYWJsZWQgb24gSW50ZWwuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCBHTF9SR0IxNlVJLCAxLCAxLCAwLCBHTF9SR0JfSU5URUdFUiwgR0xfVU5TSUdORURf
U0hPUlQsIG51bGxwdHIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOwotCi0gICAgRVhQRUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAsIDI1NSk7Ci19Ci0KLS8vIFdo
ZW4gc2FtcGxpbmcgYSB0ZXh0dXJlIHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlzIHJl
dHVybmVkIGFzIHRoZSBhbHBoYSB2YWx1ZS4KLS8vIEVTIDMuMC40IHRhYmxlIDMuMjQKLVRFU1Rf
UChUZXh0dXJlMkRJbnRlZ2VyQWxwaGExVGVzdEVTMywgVGV4dHVyZVJHQjE2SUltcGxpY2l0QWxw
aGExKQotewotICAgIGlmIChJc0ludGVsKCkpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3QgZGlzYWJsZWQgb24gSW50ZWwuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhU
VVJFXzJELCAwLCBHTF9SR0IxNkksIDEsIDEsIDAsIEdMX1JHQl9JTlRFR0VSLCBHTF9TSE9SVCwg
bnVsbHB0cik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0K
LSAgICBFWFBFQ1RfUElYRUxfQUxQSEFfRVEoMCwgMCwgMjU1KTsKLX0KLQotLy8gV2hlbiBzYW1w
bGluZyBhIHRleHR1cmUgd2l0aG91dCBhbiBhbHBoYSBjaGFubmVsLCAiMSIgaXMgcmV0dXJuZWQg
YXMgdGhlIGFscGhhIHZhbHVlLgotLy8gRVMgMy4wLjQgdGFibGUgMy4yNAotVEVTVF9QKFRleHR1
cmUyRFVuc2lnbmVkSW50ZWdlckFscGhhMVRlc3RFUzMsIFRleHR1cmVSR0IzMlVJSW1wbGljaXRB
bHBoYTEpCi17Ci0gICAgaWYgKElzSW50ZWwoKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBkaXNhYmxlZCBvbiBJbnRlbC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAsIEdMX1JHQjMyVUksIDEsIDEsIDAsIEdMX1JHQl9JTlRFR0VSLCBHTF9VTlNJ
R05FRF9JTlQsIG51bGxwdHIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIs
IDAuNWYpOwotCi0gICAgRVhQRUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAsIDI1NSk7Ci19Ci0KLS8v
IFdoZW4gc2FtcGxpbmcgYSB0ZXh0dXJlIHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlz
IHJldHVybmVkIGFzIHRoZSBhbHBoYSB2YWx1ZS4KLS8vIEVTIDMuMC40IHRhYmxlIDMuMjQKLVRF
U1RfUChUZXh0dXJlMkRJbnRlZ2VyQWxwaGExVGVzdEVTMywgVGV4dHVyZVJHQjMySUltcGxpY2l0
QWxwaGExKQotewotICAgIGlmIChJc0ludGVsKCkpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQg
PDwgIlRlc3QgZGlzYWJsZWQgb24gSW50ZWwuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCBHTF9SR0IzMkksIDEsIDEsIDAsIEdMX1JHQl9JTlRFR0VSLCBHTF9JTlQs
IG51bGxwdHIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwot
Ci0gICAgRVhQRUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAsIDI1NSk7Ci19Ci0KLS8vIFdoZW4gc2Ft
cGxpbmcgYSB0ZXh0dXJlIHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlzIHJldHVybmVk
IGFzIHRoZSBhbHBoYSB2YWx1ZS4KLS8vIEVTIDMuMC40IHRhYmxlIDMuMjQKLVRFU1RfUChUZXh0
dXJlMkRUZXN0RVMzLCBUZXh0dXJlUkdCU05PUk1JbXBsaWNpdEFscGhhMSkKLXsKLSAgICBnbEFj
dGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmUyRCk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JH
QjhfU05PUk0sIDEsIDEsIDAsIEdMX1JHQiwgR0xfQllURSwgbnVsbHB0cik7Ci0gICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41
Zik7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQUxQSEFfRVEoMCwgMCwgMjU1KTsKLX0KLQotLy8gV2hl
biBzYW1wbGluZyBhIHRleHR1cmUgd2l0aG91dCBhbiBhbHBoYSBjaGFubmVsLCAiMSIgaXMgcmV0
dXJuZWQgYXMgdGhlIGFscGhhIHZhbHVlLgotLy8gRVMgMy4wLjQgdGFibGUgMy4yNAotVEVTVF9Q
KFRleHR1cmUyRFRlc3RFUzMsIFRleHR1cmVSR0I5RTVJbXBsaWNpdEFscGhhMSkKLXsKLSAgICBn
bEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgbVRleHR1cmUyRCk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdM
X1JHQjlfRTUsIDEsIDEsIDAsIEdMX1JHQiwgR0xfVU5TSUdORURfSU5UXzVfOV85XzlfUkVWLAot
ICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQot
ICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEVYUEVDVF9Q
SVhFTF9BTFBIQV9FUSgwLCAwLCAyNTUpOwotfQotCi0vLyBXaGVuIHNhbXBsaW5nIGEgdGV4dHVy
ZSB3aXRob3V0IGFuIGFscGhhIGNoYW5uZWwsICIxIiBpcyByZXR1cm5lZCBhcyB0aGUgYWxwaGEg
dmFsdWUuCi0vLyBFUyAzLjAuNCB0YWJsZSAzLjI0Ci1URVNUX1AoVGV4dHVyZTJEVGVzdEVTMywg
VGV4dHVyZUNPTVBSRVNTRURSR0I4RVRDMkltcGxpY2l0QWxwaGExKQotewotICAgIGdsQWN0aXZl
VGV4dHVyZShHTF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBt
VGV4dHVyZTJEKTsKLSAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyLCAxLCAxLCAwLCA4LCBudWxscHRyKTsKLSAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAw
LjVmKTsKLQotICAgIEVYUEVDVF9QSVhFTF9BTFBIQV9FUSgwLCAwLCAyNTUpOwotfQotCi0vLyBX
aGVuIHNhbXBsaW5nIGEgdGV4dHVyZSB3aXRob3V0IGFuIGFscGhhIGNoYW5uZWwsICIxIiBpcyBy
ZXR1cm5lZCBhcyB0aGUgYWxwaGEgdmFsdWUuCi0vLyBFUyAzLjAuNCB0YWJsZSAzLjI0Ci1URVNU
X1AoVGV4dHVyZTJEVGVzdEVTMywgVGV4dHVyZUNPTVBSRVNTRURTUkdCOEVUQzJJbXBsaWNpdEFs
cGhhMSkKLXsKLSAgICBpZiAoSXNJbnRlbCgpICYmIElzTGludXgoKSkKLSAgICB7Ci0gICAgICAg
IC8vIFRPRE8oY3dhbGxleik6IEZpeCBvbiBMaW51eCBJbnRlbCBkcml2ZXJzIChodHRwOi8vYW5n
bGVidWcuY29tLzEzNDYpCi0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBM
aW51eCBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwLCBHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIsIDEsIDEsIDAsIDgsIG51
bGxwdHIpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZHJhd1F1YWQobVByb2dy
YW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgRVhQRUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAs
IDI1NSk7Ci19Ci0KLS8vIFVzZSBhIHNhbXBsZXIgaW4gYSB1bmlmb3JtIHN0cnVjdC4KLVRFU1Rf
UChTYW1wbGVySW5TdHJ1Y3RUZXN0LCBTYW1wbGVySW5TdHJ1Y3QpCi17Ci0gICAgcnVuU2FtcGxl
ckluU3RydWN0VGVzdCgpOwotfQotCi0vLyBVc2UgYSBzYW1wbGVyIGluIGEgdW5pZm9ybSBzdHJ1
Y3QgdGhhdCdzIHBhc3NlZCBhcyBhIGZ1bmN0aW9uIHBhcmFtZXRlci4KLVRFU1RfUChTYW1wbGVy
SW5TdHJ1Y3RBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCwgU2FtcGxlckluU3RydWN0QXNGdW5jdGlv
blBhcmFtZXRlcikKLXsKLSAgICAvLyBUT0RPKHlub3Zpa292KTogcmUtZW5hYmxlIG9uY2Ugcm9v
dCBjYXVzZSBvZiBodHRwOi8vYW5nbGVidWcuY29tLzE0MjcgaXMgZml4ZWQKLSAgICBpZiAoSXNB
bmRyb2lkKCkgJiYgSXNBZHJlbm8oKSAmJiBJc09wZW5HTEVTKCkpCi0gICAgewotICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBBZHJlbm8gT3BlbkdMRVMgb24gQW5kcm9pZC4i
IDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChJc1dpbmRv
d3MoKSAmJiBJc0ludGVsKCkgJiYgSXNPcGVuR0woKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291
dCA8PCAiVGVzdCBza2lwcGVkIG9uIFdpbmRvd3MgT3BlbkdMIG9uIEludGVsLiIgPDwgc3RkOjpl
bmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcnVuU2FtcGxlckluU3RydWN0VGVz
dCgpOwotfQotCi0vLyBVc2UgYSBzYW1wbGVyIGluIGEgdW5pZm9ybSBzdHJ1Y3QgYXJyYXkgd2l0
aCBhIHN0cnVjdCBmcm9tIHRoZSBhcnJheSBwYXNzZWQgYXMgYSBmdW5jdGlvbgotLy8gcGFyYW1l
dGVyLgotVEVTVF9QKFNhbXBsZXJJblN0cnVjdEFycmF5QXNGdW5jdGlvblBhcmFtZXRlclRlc3Qs
IFNhbXBsZXJJblN0cnVjdEFycmF5QXNGdW5jdGlvblBhcmFtZXRlcikKLXsKLSAgICBpZiAoSXNJ
bnRlbCgpICYmIEdldFBhcmFtKCkuZ2V0UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9PUEVOR0xfQU5HTEUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgLy8gVE9ETyh5bm92aWtvdik6IHJlLWVuYWJsZSBvbmNlIHJvb3QgY2F1c2Ugb2Yg
aHR0cDovL2FuZ2xlYnVnLmNvbS8xNDI3IGlzIGZpeGVkCi0gICAgaWYgKElzQW5kcm9pZCgpICYm
IElzQWRyZW5vKCkgJiYgSXNPcGVuR0xFUygpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgb24gQWRyZW5vIE9wZW5HTEVTIG9uIEFuZHJvaWQuIiA8PCBzdGQ6OmVu
ZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgcnVuU2FtcGxlckluU3RydWN0VGVzdCgp
OwotfQotCi0vLyBVc2UgYSBzYW1wbGVyIGluIGEgc3RydWN0IGluc2lkZSBhIHVuaWZvcm0gc3Ry
dWN0IHdpdGggdGhlIG5lc3RlZCBzdHJ1Y3QgcGFzc2VkIGFzIGEgZnVuY3Rpb24KLS8vIHBhcmFt
ZXRlci4KLVRFU1RfUChTYW1wbGVySW5OZXN0ZWRTdHJ1Y3RBc0Z1bmN0aW9uUGFyYW1ldGVyVGVz
dCwgU2FtcGxlckluTmVzdGVkU3RydWN0QXNGdW5jdGlvblBhcmFtZXRlcikKLXsKLSAgICBpZiAo
SXNJbnRlbCgpICYmIEdldFBhcmFtKCkuZ2V0UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9PUEVOR0xfQU5HTEUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qg
c2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgLy8gVE9ETyh5bm92aWtvdik6IHJlLWVuYWJsZSBvbmNlIHJvb3QgY2F1c2Ug
b2YgaHR0cDovL2FuZ2xlYnVnLmNvbS8xNDI3IGlzIGZpeGVkCi0gICAgaWYgKElzQW5kcm9pZCgp
ICYmIElzQWRyZW5vKCkgJiYgSXNPcGVuR0xFUygpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0
IDw8ICJUZXN0IHNraXBwZWQgb24gQWRyZW5vIE9wZW5HTEVTIG9uIEFuZHJvaWQuIiA8PCBzdGQ6
OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgcnVuU2FtcGxlckluU3RydWN0VGVz
dCgpOwotfQotCi0vLyBNYWtlIHN1cmUgdGhhdCB0aGVyZSBpc24ndCBhIG5hbWUgY29uZmxpY3Qg
YmV0d2VlbiBzYW1wbGVyIGV4dHJhY3RlZCBmcm9tIGEgc3RydWN0IGFuZCBhCi0vLyBzaW1pbGFy
bHkgbmFtZWQgdW5pZm9ybS4KLVRFU1RfUChTYW1wbGVySW5TdHJ1Y3RBbmRPdGhlclZhcmlhYmxl
VGVzdCwgU2FtcGxlckluU3RydWN0QW5kT3RoZXJWYXJpYWJsZSkKLXsKLSAgICBydW5TYW1wbGVy
SW5TdHJ1Y3RUZXN0KCk7Ci19Ci0KLWNsYXNzIFRleHR1cmVMaW1pdHNUZXN0IDogcHVibGljIEFO
R0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgc3RydWN0IFJHQkE4Ci0gICAgewotICAgICAg
ICB1aW50OF90IFIsIEcsIEIsIEE7Ci0gICAgfTsKLQotICAgIFRleHR1cmVMaW1pdHNUZXN0KCkK
LSAgICAgICAgOiBtUHJvZ3JhbSgwKSwgbU1heFZlcnRleFRleHR1cmVzKDApLCBtTWF4RnJhZ21l
bnRUZXh0dXJlcygwKSwgbU1heENvbWJpbmVkVGV4dHVyZXMoMCkKLSAgICB7Ci0gICAgICAgIHNl
dFdpbmRvd1dpZHRoKDEyOCk7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwotICAgICAg
ICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0g
ICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMo
OCk7Ci0gICAgfQotCi0gICAgflRleHR1cmVMaW1pdHNUZXN0KCkKLSAgICB7Ci0gICAgICAgIGlm
IChtUHJvZ3JhbSAhPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbERlbGV0ZVByb2dyYW0o
bVByb2dyYW0pOwotICAgICAgICAgICAgbVByb2dyYW0gPSAwOwotCi0gICAgICAgICAgICBpZiAo
IW1UZXh0dXJlcy5lbXB0eSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsRGVs
ZXRlVGV4dHVyZXMoc3RhdGljX2Nhc3Q8R0xzaXplaT4obVRleHR1cmVzLnNpemUoKSksICZtVGV4
dHVyZXNbMF0pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBT
ZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAg
ICAgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZt
TWF4VmVydGV4VGV4dHVyZXMpOwotICAgICAgICBnbEdldEludGVnZXJ2KEdMX01BWF9URVhUVVJF
X0lNQUdFX1VOSVRTLCAmbU1heEZyYWdtZW50VGV4dHVyZXMpOwotICAgICAgICBnbEdldEludGVn
ZXJ2KEdMX01BWF9DT01CSU5FRF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmbU1heENvbWJpbmVkVGV4
dHVyZXMpOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZv
aWQgY29tcGlsZVByb2dyYW1XaXRoVGV4dHVyZUNvdW50cyhjb25zdCBzdGQ6OnN0cmluZyAmdmVy
dGV4UHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCB2ZXJ0ZXhUZXh0dXJlQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHZlcnRleEFjdGl2ZVRleHR1cmVDb3VudCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdQcmVmaXgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZyYWdtZW50VGV4
dHVyZUNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBmcmFnbWVudEFjdGl2ZVRleHR1cmVDb3VudCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5n
c3RyZWFtIHZlcnRleFNoYWRlclN0cjsKLSAgICAgICAgdmVydGV4U2hhZGVyU3RyIDw8ICJhdHRy
aWJ1dGUgdmVjMiBwb3NpdGlvbjtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIDw8ICJ2YXJ5
aW5nIHZlYzQgY29sb3I7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCAidmFyeWluZyB2
ZWMyIHRleENvb3JkO1xuIjsKLQotICAgICAgICBmb3IgKEdMaW50IHRleHR1cmVJbmRleCA9IDA7
IHRleHR1cmVJbmRleCA8IHZlcnRleFRleHR1cmVDb3VudDsgKyt0ZXh0dXJlSW5kZXgpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHZlcnRleFNoYWRlclN0ciA8PCAidW5pZm9ybSBzYW1wbGVyMkQg
IiA8PCB2ZXJ0ZXhQcmVmaXggPDwgdGV4dHVyZUluZGV4IDw8ICI7XG4iOwotICAgICAgICB9Ci0K
LSAgICAgICAgdmVydGV4U2hhZGVyU3RyIDw8ICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICA8PCAiICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAsIDEpO1xu
IgotICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiAgdGV4Q29vcmQgPSAocG9zaXRpb24gKiAw
LjUpICsgMC41O1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgPDwgIiAgY29sb3IgPSB2ZWM0
KDApO1xuIjsKLQotICAgICAgICBmb3IgKEdMaW50IHRleHR1cmVJbmRleCA9IDA7IHRleHR1cmVJ
bmRleCA8IHZlcnRleEFjdGl2ZVRleHR1cmVDb3VudDsgKyt0ZXh0dXJlSW5kZXgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHZlcnRleFNoYWRlclN0ciA8PCAiICBjb2xvciArPSB0ZXh0dXJlMkQo
IiA8PCB2ZXJ0ZXhQcmVmaXggPDwgdGV4dHVyZUluZGV4Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgIiwgdGV4Q29vcmQpO1xuIjsKLSAgICAgICAgfQotCi0gICAgICAgIHZlcnRleFNo
YWRlclN0ciA8PCAifSI7Ci0KLSAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZnJhZ21lbnRTaGFk
ZXJTdHI7Ci0gICAgICAgIGZyYWdtZW50U2hhZGVyU3RyIDw8ICJ2YXJ5aW5nIG1lZGl1bXAgdmVj
NCBjb2xvcjtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgInZhcnlpbmcgbWVkaXVt
cCB2ZWMyIHRleENvb3JkO1xuIjsKLQotICAgICAgICBmb3IgKEdMaW50IHRleHR1cmVJbmRleCA9
IDA7IHRleHR1cmVJbmRleCA8IGZyYWdtZW50VGV4dHVyZUNvdW50OyArK3RleHR1cmVJbmRleCkK
LSAgICAgICAgewotICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXJTdHIgPDwgInVuaWZvcm0gc2Ft
cGxlcjJEICIgPDwgZnJhZ1ByZWZpeCA8PCB0ZXh0dXJlSW5kZXggPDwgIjtcbiI7Ci0gICAgICAg
IH0KLQotICAgICAgICBmcmFnbWVudFNoYWRlclN0ciA8PCAidm9pZCBtYWluKCkge1xuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiICBnbF9GcmFnQ29sb3IgPSBjb2xvcjtcbiI7Ci0K
LSAgICAgICAgZm9yIChHTGludCB0ZXh0dXJlSW5kZXggPSAwOyB0ZXh0dXJlSW5kZXggPCBmcmFn
bWVudEFjdGl2ZVRleHR1cmVDb3VudDsgKyt0ZXh0dXJlSW5kZXgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGZyYWdtZW50U2hhZGVyU3RyIDw8ICIgIGdsX0ZyYWdDb2xvciArPSB0ZXh0dXJlMkQo
IiA8PCBmcmFnUHJlZml4IDw8IHRleHR1cmVJbmRleAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgIiwgdGV4Q29vcmQpO1xuIjsKLSAgICAgICAgfQotCi0gICAgICAgIGZyYWdtZW50
U2hhZGVyU3RyIDw8ICJ9IjsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U2hh
ZGVyU291cmNlICAgPSB2ZXJ0ZXhTaGFkZXJTdHIuc3RyKCk7Ci0gICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZmcmFnbWVudFNoYWRlclNvdXJjZSA9IGZyYWdtZW50U2hhZGVyU3RyLnN0cigpOwot
Ci0gICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBm
cmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgfQotCi0gICAgUkdCQTggZ2V0UGl4ZWwoR0xpbnQg
dGV4SW5kZXgpCi0gICAgewotICAgICAgICBSR0JBOCBwaXhlbCA9IHtzdGF0aWNfY2FzdDx1aW50
OF90Pih0ZXhJbmRleCAmIDB4N3UpLCBzdGF0aWNfY2FzdDx1aW50OF90Pih0ZXhJbmRleCA+PiAz
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgMCwgMjU1dX07Ci0gICAgICAgIHJldHVybiBwaXhl
bDsKLSAgICB9Ci0KLSAgICB2b2lkIGluaXRUZXh0dXJlcyhHTGludCB0ZXgyRENvdW50LCBHTGlu
dCB0ZXhDdWJlQ291bnQpCi0gICAgewotICAgICAgICBHTGludCB0b3RhbENvdW50ID0gdGV4MkRD
b3VudCArIHRleEN1YmVDb3VudDsKLSAgICAgICAgbVRleHR1cmVzLmFzc2lnbih0b3RhbENvdW50
LCAwKTsKLSAgICAgICAgZ2xHZW5UZXh0dXJlcyh0b3RhbENvdW50LCAmbVRleHR1cmVzWzBdKTsK
LSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgc3RkOjp2ZWN0b3I8UkdC
QTg+IHRleERhdGEoMTYgKiAxNik7Ci0KLSAgICAgICAgR0xpbnQgdGV4SW5kZXggPSAwOwotICAg
ICAgICBmb3IgKDsgdGV4SW5kZXggPCB0ZXgyRENvdW50OyArK3RleEluZGV4KQotICAgICAgICB7
Ci0gICAgICAgICAgICB0ZXhEYXRhLmFzc2lnbih0ZXhEYXRhLnNpemUoKSwgZ2V0UGl4ZWwodGV4
SW5kZXgpKTsKLSAgICAgICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCArIHRleElu
ZGV4KTsKLSAgICAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVz
W3RleEluZGV4XSk7Ci0gICAgICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwg
R0xfUkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICZ0ZXhEYXRhWzBdKTsKLSAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAg
ICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJ
TFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgICAgICAgICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFN
UF9UT19FREdFKTsKLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgICAgIGZvciAoOyB0ZXhJbmRleCA8IHRleEN1YmVDb3VudDsgKyt0ZXhJbmRleCkKLSAg
ICAgICAgewotICAgICAgICAgICAgdGV4RGF0YS5hc3NpZ24odGV4RGF0YS5zaXplKCksIGdldFBp
eGVsKHRleEluZGV4KSk7Ci0gICAgICAgICAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTAg
KyB0ZXhJbmRleCk7Ci0gICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9N
QVAsIG1UZXh0dXJlc1t0ZXhJbmRleF0pOwotICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JB
LAotICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICZ0ZXhEYXRhWzBd
KTsKLSAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZF
X1ksIDAsIEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9VTlNJR05FRF9CWVRFLCAmdGV4RGF0YVswXSk7Ci0gICAgICAgICAgICBnbFRleElt
YWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aLCAwLCBHTF9SR0JBLCAxNiwgMTYs
IDAsIEdMX1JHQkEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwg
JnRleERhdGFbMF0pOwotICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9N
QVBfTkVHQVRJVkVfWCwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICZ0ZXhEYXRhWzBdKTsKLSAgICAgICAg
ICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ksIDAsIEdMX1JH
QkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJ
R05FRF9CWVRFLCAmdGV4RGF0YVswXSk7Ci0gICAgICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9aLCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAsIEdMX1JHQkEs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgJnRleERhdGFbMF0p
OwotICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIEdMX1RF
WFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgICAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNU
KTsKLSAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9U
RVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgICAgICAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RP
X0VER0UpOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAg
fQotCi0gICAgdm9pZCB0ZXN0V2l0aFRleHR1cmVzKEdMaW50IHZlcnRleFRleHR1cmVDb3VudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleFRleHR1
cmVQcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZyYWdtZW50VGV4dHVy
ZUNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJh
Z21lbnRUZXh0dXJlUHJlZml4KQotICAgIHsKLSAgICAgICAgLy8gR2VuZXJhdGUgdGV4dHVyZXMK
LSAgICAgICAgaW5pdFRleHR1cmVzKHZlcnRleFRleHR1cmVDb3VudCArIGZyYWdtZW50VGV4dHVy
ZUNvdW50LCAwKTsKLQotICAgICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgICAgICBS
R0JBOCBleHBlY3RlZFN1bSA9IHswfTsKLSAgICAgICAgZm9yIChHTGludCB0ZXhJbmRleCA9IDA7
IHRleEluZGV4IDwgdmVydGV4VGV4dHVyZUNvdW50OyArK3RleEluZGV4KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSB1bmlmb3JtTmFtZVN0cjsKLSAgICAgICAgICAg
IHVuaWZvcm1OYW1lU3RyIDw8IHZlcnRleFRleHR1cmVQcmVmaXggPDwgdGV4SW5kZXg7Ci0gICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdW5pZm9ybU5hbWUgPSB1bmlmb3JtTmFtZVN0ci5z
dHIoKTsKLSAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24o
bVByb2dyYW0sIHVuaWZvcm1OYW1lLmNfc3RyKCkpOwotICAgICAgICAgICAgQVNTRVJUX05FKC0x
LCBsb2NhdGlvbik7Ci0KLSAgICAgICAgICAgIGdsVW5pZm9ybTFpKGxvY2F0aW9uLCB0ZXhJbmRl
eCk7Ci0gICAgICAgICAgICBSR0JBOCBjb250cmlidXRpb24gPSBnZXRQaXhlbCh0ZXhJbmRleCk7
Ci0gICAgICAgICAgICBleHBlY3RlZFN1bS5SICs9IGNvbnRyaWJ1dGlvbi5SOwotICAgICAgICAg
ICAgZXhwZWN0ZWRTdW0uRyArPSBjb250cmlidXRpb24uRzsKLSAgICAgICAgfQotCi0gICAgICAg
IGZvciAoR0xpbnQgdGV4SW5kZXggPSAwOyB0ZXhJbmRleCA8IGZyYWdtZW50VGV4dHVyZUNvdW50
OyArK3RleEluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSB1
bmlmb3JtTmFtZVN0cjsKLSAgICAgICAgICAgIHVuaWZvcm1OYW1lU3RyIDw8IGZyYWdtZW50VGV4
dHVyZVByZWZpeCA8PCB0ZXhJbmRleDsKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ1
bmlmb3JtTmFtZSA9IHVuaWZvcm1OYW1lU3RyLnN0cigpOwotICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgdW5pZm9ybU5hbWUuY19zdHIo
KSk7Ci0gICAgICAgICAgICBBU1NFUlRfTkUoLTEsIGxvY2F0aW9uKTsKLQotICAgICAgICAgICAg
Z2xVbmlmb3JtMWkobG9jYXRpb24sIHRleEluZGV4ICsgdmVydGV4VGV4dHVyZUNvdW50KTsKLSAg
ICAgICAgICAgIFJHQkE4IGNvbnRyaWJ1dGlvbiA9IGdldFBpeGVsKHRleEluZGV4ICsgdmVydGV4
VGV4dHVyZUNvdW50KTsKLSAgICAgICAgICAgIGV4cGVjdGVkU3VtLlIgKz0gY29udHJpYnV0aW9u
LlI7Ci0gICAgICAgICAgICBleHBlY3RlZFN1bS5HICs9IGNvbnRyaWJ1dGlvbi5HOwotICAgICAg
ICB9Ci0KLSAgICAgICAgQVNTRVJUX0dFKDI1NnUsIGV4cGVjdGVkU3VtLkcpOwotCi0gICAgICAg
IGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICAgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0gICAgICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCBleHBlY3RlZFN1bS5S
LCBleHBlY3RlZFN1bS5HLCAwLCAyNTUpOwotICAgIH0KLQotICAgIEdMdWludCBtUHJvZ3JhbTsK
LSAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1UZXh0dXJlczsKLSAgICBHTGludCBtTWF4VmVydGV4
VGV4dHVyZXM7Ci0gICAgR0xpbnQgbU1heEZyYWdtZW50VGV4dHVyZXM7Ci0gICAgR0xpbnQgbU1h
eENvbWJpbmVkVGV4dHVyZXM7Ci19OwotCi0vLyBUZXN0IHJlbmRlcmluZyB3aXRoIHRoZSBtYXhp
bXVtIHZlcnRleCB0ZXh0dXJlIHVuaXRzLgotVEVTVF9QKFRleHR1cmVMaW1pdHNUZXN0LCBNYXhW
ZXJ0ZXhUZXh0dXJlcykKLXsKLSAgICAvLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IHdoeSB0
aGlzIGZhaWxzIG9uIEludGVsLgotICAgIGlmIChJc0ludGVsKCkgJiYgR2V0UGFyYW0oKS5nZXRS
ZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKLSAgICB7
Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsLiIgPDwgc3RkOjpl
bmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29tcGlsZVByb2dyYW1XaXRoVGV4
dHVyZUNvdW50cygidGV4IiwgbU1heFZlcnRleFRleHR1cmVzLCBtTWF4VmVydGV4VGV4dHVyZXMs
ICJ0ZXgiLCAwLCAwKTsKLSAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKLSAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKLQotICAgIHRlc3RXaXRoVGV4dHVyZXMobU1heFZlcnRleFRleHR1cmVz
LCAidGV4IiwgMCwgInRleCIpOwotfQotCi0vLyBUZXN0IHJlbmRlcmluZyB3aXRoIHRoZSBtYXhp
bXVtIGZyYWdtZW50IHRleHR1cmUgdW5pdHMuCi1URVNUX1AoVGV4dHVyZUxpbWl0c1Rlc3QsIE1h
eEZyYWdtZW50VGV4dHVyZXMpCi17Ci0gICAgLy8gVE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCB3
aHkgdGhpcyBmYWlscyBvbiBJbnRlbC4KLSAgICBpZiAoSXNJbnRlbCgpICYmIEdldFBhcmFtKCku
Z2V0UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCi0g
ICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbC4iIDw8IHN0
ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbXBpbGVQcm9ncmFtV2l0
aFRleHR1cmVDb3VudHMoInRleCIsIDAsIDAsICJ0ZXgiLCBtTWF4RnJhZ21lbnRUZXh0dXJlcywg
bU1heEZyYWdtZW50VGV4dHVyZXMpOwotICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgdGVzdFdpdGhUZXh0dXJlcyhtTWF4RnJhZ21l
bnRUZXh0dXJlcywgInRleCIsIDAsICJ0ZXgiKTsKLX0KLQotLy8gVGVzdCByZW5kZXJpbmcgd2l0
aCBtYXhpbXVtIGNvbWJpbmVkIHRleHR1cmUgdW5pdHMuCi1URVNUX1AoVGV4dHVyZUxpbWl0c1Rl
c3QsIE1heENvbWJpbmVkVGV4dHVyZXMpCi17Ci0gICAgLy8gVE9ETyhqbWFkaWxsKTogSW52ZXN0
aWdhdGUgd29ya2Fyb3VuZC4KLSAgICBpZiAoSXNJbnRlbCgpICYmIEdldFBhcmFtKCkgPT0gRVMy
X09QRU5HTCgpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24g
SW50ZWwuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTGlu
dCB2ZXJ0ZXhUZXh0dXJlcyA9IG1NYXhWZXJ0ZXhUZXh0dXJlczsKLQotICAgIGlmICh2ZXJ0ZXhU
ZXh0dXJlcyArIG1NYXhGcmFnbWVudFRleHR1cmVzID4gbU1heENvbWJpbmVkVGV4dHVyZXMpCi0g
ICAgewotICAgICAgICB2ZXJ0ZXhUZXh0dXJlcyA9IG1NYXhDb21iaW5lZFRleHR1cmVzIC0gbU1h
eEZyYWdtZW50VGV4dHVyZXM7Ci0gICAgfQotCi0gICAgY29tcGlsZVByb2dyYW1XaXRoVGV4dHVy
ZUNvdW50cygidnRleCIsIHZlcnRleFRleHR1cmVzLCB2ZXJ0ZXhUZXh0dXJlcywgImZ0ZXgiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbU1heEZyYWdtZW50VGV4dHVyZXMs
IG1NYXhGcmFnbWVudFRleHR1cmVzKTsKLSAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKLSAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIHRlc3RXaXRoVGV4dHVyZXModmVydGV4VGV4
dHVyZXMsICJ2dGV4IiwgbU1heEZyYWdtZW50VGV4dHVyZXMsICJmdGV4Iik7Ci19Ci0KLS8vIE5l
Z2F0aXZlIHRlc3QgZm9yIGV4Y2VlZGluZyB0aGUgbnVtYmVyIG9mIHZlcnRleCB0ZXh0dXJlcwot
VEVTVF9QKFRleHR1cmVMaW1pdHNUZXN0LCBFeGNlc3NpdmVWZXJ0ZXhUZXh0dXJlcykKLXsKLSAg
ICBjb21waWxlUHJvZ3JhbVdpdGhUZXh0dXJlQ291bnRzKCJ0ZXgiLCBtTWF4VmVydGV4VGV4dHVy
ZXMgKyAxLCBtTWF4VmVydGV4VGV4dHVyZXMgKyAxLCAidGV4IiwgMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgIEFTU0VSVF9FUSgwdSwgbVByb2dyYW0pOwot
fQotCi0vLyBOZWdhdGl2ZSB0ZXN0IGZvciBleGNlZWRpbmcgdGhlIG51bWJlciBvZiBmcmFnbWVu
dCB0ZXh0dXJlcwotVEVTVF9QKFRleHR1cmVMaW1pdHNUZXN0LCBFeGNlc3NpdmVGcmFnbWVudFRl
eHR1cmVzKQotewotICAgIGNvbXBpbGVQcm9ncmFtV2l0aFRleHR1cmVDb3VudHMoInRleCIsIDAs
IDAsICJ0ZXgiLCBtTWF4RnJhZ21lbnRUZXh0dXJlcyArIDEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtTWF4RnJhZ21lbnRUZXh0dXJlcyArIDEpOwotICAgIEFTU0VSVF9F
USgwdSwgbVByb2dyYW0pOwotfQotCi0vLyBUZXN0IGFjdGl2ZSB2ZXJ0ZXggdGV4dHVyZXMgdW5k
ZXIgdGhlIGxpbWl0LCBidXQgZXhjZXNzaXZlIHRleHR1cmVzIHNwZWNpZmllZC4KLVRFU1RfUChU
ZXh0dXJlTGltaXRzVGVzdCwgTWF4QWN0aXZlVmVydGV4VGV4dHVyZXMpCi17Ci0gICAgLy8gVE9E
TyhqbWFkaWxsKTogRmlndXJlIG91dCB3aHkgdGhpcyBmYWlscyBvbiBJbnRlbC4KLSAgICBpZiAo
SXNJbnRlbCgpICYmIEdldFBhcmFtKCkuZ2V0UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9PUEVOR0xfQU5HTEUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qg
c2tpcHBlZCBvbiBJbnRlbC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGNvbXBpbGVQcm9ncmFtV2l0aFRleHR1cmVDb3VudHMoInRleCIsIG1NYXhWZXJ0ZXhU
ZXh0dXJlcyArIDQsIG1NYXhWZXJ0ZXhUZXh0dXJlcywgInRleCIsIDAsIDApOwotICAgIEFTU0VS
VF9ORSgwdSwgbVByb2dyYW0pOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgdGVz
dFdpdGhUZXh0dXJlcyhtTWF4VmVydGV4VGV4dHVyZXMsICJ0ZXgiLCAwLCAidGV4Iik7Ci19Ci0K
LS8vIFRlc3QgYWN0aXZlIGZyYWdtZW50IHRleHR1cmVzIHVuZGVyIHRoZSBsaW1pdCwgYnV0IGV4
Y2Vzc2l2ZSB0ZXh0dXJlcyBzcGVjaWZpZWQuCi1URVNUX1AoVGV4dHVyZUxpbWl0c1Rlc3QsIE1h
eEFjdGl2ZUZyYWdtZW50VGV4dHVyZXMpCi17Ci0gICAgLy8gVE9ETyhqbWFkaWxsKTogRmlndXJl
IG91dCB3aHkgdGhpcyBmYWlscyBvbiBJbnRlbC4KLSAgICBpZiAoSXNJbnRlbCgpICYmIEdldFBh
cmFtKCkuZ2V0UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5H
TEUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbC4i
IDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbXBpbGVQcm9n
cmFtV2l0aFRleHR1cmVDb3VudHMoInRleCIsIDAsIDAsICJ0ZXgiLCBtTWF4RnJhZ21lbnRUZXh0
dXJlcyArIDQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTWF4RnJhZ21l
bnRUZXh0dXJlcyk7Ci0gICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7Ci0gICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICB0ZXN0V2l0aFRleHR1cmVzKDAsICJ0ZXgiLCBtTWF4RnJhZ21l
bnRUZXh0dXJlcywgInRleCIpOwotfQotCi0vLyBOZWdhdGl2ZSB0ZXN0IGZvciBwb2ludGluZyB0
d28gc2FtcGxlciB1bmlmb3JtcyBvZiBkaWZmZXJlbnQgdHlwZXMgdG8gdGhlIHNhbWUgdGV4dHVy
ZS4KLS8vIEdMRVMgMi4wLjI1IHNlY3Rpb24gMi4xMC40IHBhZ2UgMzkuCi1URVNUX1AoVGV4dHVy
ZUxpbWl0c1Rlc3QsIFRleHR1cmVUeXBlQ29uZmxpY3QpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnZlcnRleFNoYWRlciA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcbiIK
LSAgICAgICAgInZhcnlpbmcgZmxvYXQgY29sb3I7XG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBs
ZXIyRCB0ZXgyRDtcbiIKLSAgICAgICAgInVuaWZvcm0gc2FtcGxlckN1YmUgdGV4Q3ViZTtcbiIK
LSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2ZWM0
KHBvc2l0aW9uLCAwLCAxKTtcbiIKLSAgICAgICAgIiAgdmVjMiB0ZXhDb29yZCA9IChwb3NpdGlv
biAqIDAuNSkgKyAwLjU7XG4iCi0gICAgICAgICIgIGNvbG9yID0gdGV4dHVyZTJEKHRleDJELCB0
ZXhDb29yZCkueDtcbiIKLSAgICAgICAgIiAgY29sb3IgKz0gdGV4dHVyZUN1YmUodGV4Q3ViZSwg
dmVjMyh0ZXhDb29yZCwgMCkpLng7XG4iCi0gICAgICAgICJ9IjsKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyAmZnJhZ21lbnRTaGFkZXIgPQotICAgICAgICAidmFyeWluZyBtZWRpdW1wIGZsb2F0IGNv
bG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KGNvbG9yLCAwLCAwLCAxKTtcbiIKLSAgICAgICAgIn0iOwotCi0gICAgbVByb2dy
YW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyKTsKLSAgICBB
U1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKLQotICAgIGluaXRUZXh0dXJlcygxLCAwKTsKLQotICAg
IGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgR0xpbnQgdGV4MkRMb2NhdGlvbiA9IGdsR2V0
VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4MkQiKTsKLSAgICBBU1NFUlRfTkUoLTEsIHRl
eDJETG9jYXRpb24pOwotICAgIEdMaW50IHRleEN1YmVMb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxv
Y2F0aW9uKG1Qcm9ncmFtLCAidGV4Q3ViZSIpOwotICAgIEFTU0VSVF9ORSgtMSwgdGV4Q3ViZUxv
Y2F0aW9uKTsKLQotICAgIGdsVW5pZm9ybTFpKHRleDJETG9jYXRpb24sIDApOwotICAgIGdsVW5p
Zm9ybTFpKHRleEN1YmVMb2NhdGlvbiwgMCk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0K
LSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX0dM
X0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotLy8gTmVnYXRpdmUgdGVzdCBmb3Ig
cmVuZGVyaW5nIHdpdGggdGV4dHVyZSBvdXRzaWRlIHRoZSB2YWxpZCByYW5nZS4KLS8vIFRPRE8o
am1hZGlsbCk6IFBvc3NpYmx5IGFkanVzdCB0aGUgdGVzdCBhY2NvcmRpbmcgdG8gdGhlIHNwZWM6
Ci0vLyBHTEVTIDMuMC40IHNlY3Rpb24gMi4xMi43IG1lbnRpb25zIHRoYXQgc3BlY2lmeWluZyBh
biBvdXQtb2YtcmFuZ2Ugc2FtcGxlciB1bmlmb3JtIHZhbHVlCi0vLyBnZW5lcmF0ZXMgYW4gSU5W
QUxJRF9WQUxVRSBlcnJvciAtIEdMRVMgMi4wIGRvZXNuJ3QgeWV0IGhhdmUgdGhpcyBtZW50aW9u
LgotVEVTVF9QKFRleHR1cmVMaW1pdHNUZXN0LCBEcmF3V2l0aFRleHR1cmVQYXN0TWF4aW11bSkK
LXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U2hhZGVyID0KLSAgICAgICAgImF0dHJp
YnV0ZSB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAidmFyeWluZyBmbG9hdCBjb2xvcjtcbiIK
LSAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHRleDJEO1xuIgotICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgotICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAsIDEpO1xu
IgotICAgICAgICAiICB2ZWMyIHRleENvb3JkID0gKHBvc2l0aW9uICogMC41KSArIDAuNTtcbiIK
LSAgICAgICAgIiAgY29sb3IgPSB0ZXh0dXJlMkQodGV4MkQsIHRleENvb3JkKS54O1xuIgotICAg
ICAgICAifSI7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U2hhZGVyID0KLSAgICAg
ICAgInZhcnlpbmcgbWVkaXVtcCBmbG9hdCBjb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKLSAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjb2xvciwgMCwgMCwgMSk7XG4i
Ci0gICAgICAgICJ9IjsKLQotICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hh
ZGVyLCBmcmFnbWVudFNoYWRlcik7Ci0gICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7Ci0KLSAg
ICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIEdMaW50IHRleDJETG9jYXRpb24gPSBnbEdl
dFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRleDJEIik7Ci0gICAgQVNTRVJUX05FKC0xLCB0
ZXgyRExvY2F0aW9uKTsKLQotICAgIGdsVW5pZm9ybTFpKHRleDJETG9jYXRpb24sIG1NYXhDb21i
aW5lZFRleHR1cmVzKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdRdWFk
KG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwotfQotCi1jbGFzcyBUZXh0dXJlMkROb3JtMTZUZXN0RVMzIDogcHVi
bGljIFRleHR1cmUyRFRlc3RFUzMKLXsKLSAgcHJvdGVjdGVkOgotICAgIFRleHR1cmUyRE5vcm0x
NlRlc3RFUzMoKSA6IFRleHR1cmUyRFRlc3RFUzMoKSwgbVRleHR1cmVzezAsIDAsIDB9LCBtRkJP
KDApLCBtUmVuZGVyYnVmZmVyKDApIHt9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIFRleHR1cmUyRFRlc3RFUzM6OlNldFVwKCk7Ci0KLSAgICAgICAgZ2xBY3Rp
dmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICAgICAgZ2xHZW5UZXh0dXJlcygzLCBtVGV4dHVy
ZXMpOwotICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbUZCTyk7Ci0gICAgICAgIGdsR2Vu
UmVuZGVyYnVmZmVycygxLCAmbVJlbmRlcmJ1ZmZlcik7Ci0KLSAgICAgICAgZm9yIChzaXplX3Qg
dGV4dHVyZUluZGV4ID0gMDsgdGV4dHVyZUluZGV4IDwgMzsgdGV4dHVyZUluZGV4KyspCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVz
W3RleHR1cmVJbmRleF0pOwotICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVB
Uik7Ci0gICAgICAgIH0KLQotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDAp
OwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZvaWQgVGVh
ckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygzLCBtVGV4
dHVyZXMpOwotICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbUZCTyk7Ci0gICAgICAg
IGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbVJlbmRlcmJ1ZmZlcik7Ci0KLSAgICAgICAgVGV4
dHVyZTJEVGVzdEVTMzo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICB2b2lkIHRlc3ROb3JtMTZU
ZXh0dXJlKEdMaW50IGludGVybmFsZm9ybWF0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSkK
LSAgICB7Ci0gICAgICAgIEdMdXNob3J0IHBpeGVsVmFsdWUgID0gKHR5cGUgPT0gR0xfU0hPUlQp
ID8gMHg3RkZGIDogMHg2QTM1OwotICAgICAgICBHTHVzaG9ydCBpbWFnZURhdGFbXSA9IHtwaXhl
bFZhbHVlLCBwaXhlbFZhbHVlLCBwaXhlbFZhbHVlLCBwaXhlbFZhbHVlfTsKLQotICAgICAgICBz
ZXRVcFByb2dyYW0oKTsKLQotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgbUZCTyk7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIs
IEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0KLSAgICAgICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOwotICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgR0xfUkdCQTE2X0VYVCwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURf
U0hPUlQsIG51bGxwdHIpOwotCi0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
bVRleHR1cmVzWzFdKTsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIGlu
dGVybmFsZm9ybWF0LCAxLCAxLCAwLCBmb3JtYXQsIHR5cGUsIGltYWdlRGF0YSk7Ci0KLSAgICAg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJw
b3NpdGlvbiIsIDAuNWYpOwotCi0gICAgICAgIEdMdWJ5dGUgZXhwZWN0ZWRWYWx1ZSA9ICh0eXBl
ID09IEdMX1NIT1JUKSA/IDB4RkYgOiBzdGF0aWNfY2FzdDxHTHVieXRlPihwaXhlbFZhbHVlID4+
IDgpOwotCi0gICAgICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgKLSAgICAgICAgICAgIDAsIDAs
IFNsaWNlRm9ybWF0Q29sb3IoCi0gICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCBHTENvbG9y
KGV4cGVjdGVkVmFsdWUsIGV4cGVjdGVkVmFsdWUsIGV4cGVjdGVkVmFsdWUsIGV4cGVjdGVkVmFs
dWUpKSk7Ci0KLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOwot
Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZvaWQgdGVzdE5v
cm0xNlJlbmRlcihHTGludCBpbnRlcm5hbGZvcm1hdCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5
cGUpCi0gICAgewotICAgICAgICBHTHVzaG9ydCBwaXhlbFZhbHVlID0gMHg2QTM1OwotICAgICAg
ICBHTHVzaG9ydCBpbWFnZURhdGFbXSA9IHtwaXhlbFZhbHVlLCBwaXhlbFZhbHVlLCBwaXhlbFZh
bHVlLCBwaXhlbFZhbHVlfTsKLQotICAgICAgICBzZXRVcFByb2dyYW0oKTsKLQotICAgICAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7Ci0gICAgICAgIGdsVGV4
SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBpbnRlcm5hbGZvcm1hdCwgMSwgMSwgMCwgZm9ybWF0
LCB0eXBlLCBudWxscHRyKTsKLQotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiwgbUZCTyk7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZG
RVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0KLSAgICAgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMl0pOwotICAgICAgICBnbFRleEltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgaW50ZXJuYWxmb3JtYXQsIDEsIDEsIDAsIGZvcm1hdCwgdHlwZSwgaW1h
Z2VEYXRhKTsKLQotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBkcmF3
UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICAgICAgR0x1Ynl0ZSBleHBl
Y3RlZFZhbHVlID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4ocGl4ZWxWYWx1ZSA+PiA4KTsKLSAgICAg
ICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKAotICAgICAgICAgICAgMCwgMCwgU2xpY2VGb3JtYXRD
b2xvcigKLSAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIEdMQ29sb3IoZXhwZWN0ZWRWYWx1
ZSwgZXhwZWN0ZWRWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSkpKTsKLQotICAg
ICAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtUmVuZGVyYnVmZmVyKTsK
LSAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgaW50ZXJuYWxm
b3JtYXQsIDEsIDEpOwotICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfUkVOREVSQlVGRkVSLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1SZW5kZXJidWZmZXIpOwotICAgICAgICBnbEJpbmRS
ZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCAwKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7Ci0KLSAgICAgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDEuMGYsIDEuMGYsIDEuMGYpOwot
ICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgICAgIGdsQ29weVRl
eFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgMCwgMSwgMSk7Ci0KLSAgICAg
ICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIFNsaWNlRm9ybWF0Q29sb3IoZm9ybWF0LCBH
TENvbG9yOjp3aGl0ZSkpOwotCi0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCAwKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICBH
THVpbnQgbVRleHR1cmVzWzNdOwotICAgIEdMdWludCBtRkJPOwotICAgIEdMdWludCBtUmVuZGVy
YnVmZmVyOwotfTsKLQotLy8gVGVzdCB0ZXh0dXJlIGZvcm1hdHMgZW5hYmxlZCBieSB0aGUgR0xf
RVhUX3RleHR1cmVfbm9ybTE2IGV4dGVuc2lvbi4KLVRFU1RfUChUZXh0dXJlMkROb3JtMTZUZXN0
RVMzLCBUZXh0dXJlTm9ybTE2VGVzdCkKLXsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdM
X0VYVF90ZXh0dXJlX25vcm0xNiIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IHNraXBwZWQgZHVlIHRvIG1pc3NpbmcgR0xfRVhUX3RleHR1cmVfbm9ybTE2LiIgPDwgc3RkOjpl
bmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdGVzdE5vcm0xNlRleHR1cmUoR0xf
UjE2X0VYVCwgR0xfUkVELCBHTF9VTlNJR05FRF9TSE9SVCk7Ci0gICAgdGVzdE5vcm0xNlRleHR1
cmUoR0xfUkcxNl9FWFQsIEdMX1JHLCBHTF9VTlNJR05FRF9TSE9SVCk7Ci0gICAgdGVzdE5vcm0x
NlRleHR1cmUoR0xfUkdCMTZfRVhULCBHTF9SR0IsIEdMX1VOU0lHTkVEX1NIT1JUKTsKLSAgICB0
ZXN0Tm9ybTE2VGV4dHVyZShHTF9SR0JBMTZfRVhULCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9S
VCk7Ci0gICAgdGVzdE5vcm0xNlRleHR1cmUoR0xfUjE2X1NOT1JNX0VYVCwgR0xfUkVELCBHTF9T
SE9SVCk7Ci0gICAgdGVzdE5vcm0xNlRleHR1cmUoR0xfUkcxNl9TTk9STV9FWFQsIEdMX1JHLCBH
TF9TSE9SVCk7Ci0gICAgdGVzdE5vcm0xNlRleHR1cmUoR0xfUkdCMTZfU05PUk1fRVhULCBHTF9S
R0IsIEdMX1NIT1JUKTsKLSAgICB0ZXN0Tm9ybTE2VGV4dHVyZShHTF9SR0JBMTZfU05PUk1fRVhU
LCBHTF9SR0JBLCBHTF9TSE9SVCk7Ci0KLSAgICB0ZXN0Tm9ybTE2UmVuZGVyKEdMX1IxNl9FWFQs
IEdMX1JFRCwgR0xfVU5TSUdORURfU0hPUlQpOwotICAgIHRlc3ROb3JtMTZSZW5kZXIoR0xfUkcx
Nl9FWFQsIEdMX1JHLCBHTF9VTlNJR05FRF9TSE9SVCk7Ci0gICAgdGVzdE5vcm0xNlJlbmRlcihH
TF9SR0JBMTZfRVhULCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVCk7Ci19Ci0KLS8vIFRlc3Qg
dGhhdCBVTlBBQ0tfU0tJUF9JTUFHRVMgZG9lc24ndCBoYXZlIGFuIGVmZmVjdCBvbiAyRCB0ZXh0
dXJlIHVwbG9hZHMuCi0vLyBHTEVTIDMuMC40IHNlY3Rpb24gMy44LjMuCi1URVNUX1AoVGV4dHVy
ZTJEVGVzdEVTMywgVW5wYWNrU2tpcEltYWdlczJEKQotewotICAgIGlmIChJc0ludGVsKCkgJiYg
SXNEZXNrdG9wT3BlbkdMKCkpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgLy8gVE9ETyh5bm92aWtvdik6IHJlLWVuYWJsZSBvbmNlIHJvb3QgY2F1c2Ugb2Yg
aHR0cDovL2FuZ2xlYnVnLmNvbS8xNDI5IGlzIGZpeGVkCi0gICAgaWYgKElzQW5kcm9pZCgpICYm
IElzQWRyZW5vKCkgJiYgSXNPcGVuR0xFUygpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgb24gQWRyZW5vIE9wZW5HTEVTIG9uIEFuZHJvaWQuIiA8PCBzdGQ6OmVu
ZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlMkQpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFNLSVBfSU1BR0VTIHNob3VsZCBub3QgaGF2ZSBh
biBlZmZlY3Qgb24gdXBsb2FkaW5nIDJEIHRleHR1cmVzCi0gICAgZ2xQaXhlbFN0b3JlaShHTF9V
TlBBQ0tfU0tJUF9JTUFHRVMsIDEwMDApOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0g
ICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzR3JlZW4oMTI4dSAqIDEyOHUsIEdMQ29sb3I6
OmdyZWVuKTsKLQotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBOCwg
MTI4LCAxMjgsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAg
IHBpeGVsc0dyZWVuLmRhdGEoKSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBn
bFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMTI4LCAxMjgsIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgICAgIHBpeGVsc0dyZWVuLmRhdGEo
KSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFVzZVByb2dyYW0obVByb2dy
YW0pOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKLQotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENv
bG9yOjpncmVlbik7Ci19Ci0KLS8vIFRlc3QgdGhhdCBza2lwIGRlZmluZWQgaW4gdW5wYWNrIHBh
cmFtZXRlcnMgaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gZGV0ZXJtaW5pbmcgd2hldGhlcgot
Ly8gdW5wYWNraW5nIHNvdXJjZSBleHRlbmRzIG91dHNpZGUgdW5wYWNrIGJ1ZmZlciBib3VuZHMu
Ci1URVNUX1AoVGV4dHVyZTJEVGVzdEVTMywgVW5wYWNrU2tpcFBpeGVsc091dE9mQm91bmRzKQot
ewotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0gICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElO
RUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5f
RklMVEVSLCBHTF9MSU5FQVIpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgR0xC
dWZmZXIgYnVmOwotICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCBidWYu
Z2V0KCkpOwotICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVsc0dyZWVuKDEyOHUgKiAxMjh1
LCBHTENvbG9yOjpncmVlbik7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZG
RVIsIHBpeGVsc0dyZWVuLnNpemUoKSAqIDR1LCBwaXhlbHNHcmVlbi5kYXRhKCksCi0gICAgICAg
ICAgICAgICAgIEdMX0RZTkFNSUNfQ09QWSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0K
LSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTgsIDEyOCwgMTI4LCAw
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKLQotICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUElYRUxTLCAxKTsKLSAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJE
LCAwLCAwLCAwLCAxMjgsIDEyOCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0gICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLQotICAgIGdsUGl4ZWxTdG9y
ZWkoR0xfVU5QQUNLX1NLSVBfUElYRUxTLCAwKTsKLSAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFD
S19TS0lQX1JPV1MsIDEpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xUZXhT
dWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEyOCwgMTI4LCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLCAwKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOwotfQotCi0vLyBUZXN0IHRoYXQgdW5wYWNraW5nIHJvd3MgdGhhdCBvdmVybGFwIGluIGEg
cGl4ZWwgdW5wYWNrIGJ1ZmZlciB3b3JrcyBhcyBleHBlY3RlZC4KLVRFU1RfUChUZXh0dXJlMkRU
ZXN0RVMzLCBVbnBhY2tPdmVybGFwcGluZ1Jvd3NGcm9tVW5wYWNrQnVmZmVyKQotewotICAgIGlm
IChJc0QzRDExKCkpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBv
biBEM0QuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKElz
T1NYKCkgJiYgSXNBTUQoKSkKLSAgICB7Ci0gICAgICAgIC8vIEluY29ycmVjdCByZW5kZXJpbmcg
cmVzdWx0cyBzZWVuIG9uIE9TWCBBTUQuCi0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIG9uIE9TWCBBTUQuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBjb25zdCBHTHVpbnQgd2lkdGggICAgICAgICAgICA9IDh1OwotICAgIGNvbnN0IEdMdWlu
dCBoZWlnaHQgICAgICAgICAgID0gOHU7Ci0gICAgY29uc3QgR0x1aW50IHVucGFja1Jvd0xlbmd0
aCAgPSA1dTsKLSAgICBjb25zdCBHTHVpbnQgdW5wYWNrU2tpcFBpeGVscyA9IDF1OwotCi0gICAg
c2V0V2luZG93V2lkdGgod2lkdGgpOwotICAgIHNldFdpbmRvd0hlaWdodChoZWlnaHQpOwotCi0g
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKLSAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIp
OwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxU
RVIsIEdMX0xJTkVBUik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBHTEJ1ZmZl
ciBidWY7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIGJ1Zi5nZXQo
KSk7Ci0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzR3JlZW4oKGhlaWdodCAtIDF1KSAq
IHVucGFja1Jvd0xlbmd0aCArIHdpZHRoICsgdW5wYWNrU2tpcFBpeGVscywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTENvbG9yOjpncmVlbik7Ci0KLSAgICBmb3IgKEdM
dWludCBza2lwcGVkUGl4ZWwgPSAwdTsgc2tpcHBlZFBpeGVsIDwgdW5wYWNrU2tpcFBpeGVsczsg
Kytza2lwcGVkUGl4ZWwpCi0gICAgewotICAgICAgICBwaXhlbHNHcmVlbltza2lwcGVkUGl4ZWxd
ID0gR0xDb2xvcigyNTUsIDAsIDAsIDI1NSk7Ci0gICAgfQotCi0gICAgZ2xCdWZmZXJEYXRhKEdM
X1BJWEVMX1VOUEFDS19CVUZGRVIsIHBpeGVsc0dyZWVuLnNpemUoKSAqIDR1LCBwaXhlbHNHcmVl
bi5kYXRhKCksCi0gICAgICAgICAgICAgICAgIEdMX0RZTkFNSUNfQ09QWSk7Ci0gICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RI
LCB1bnBhY2tSb3dMZW5ndGgpOwotICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUElY
RUxTLCB1bnBhY2tTa2lwUGl4ZWxzKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAg
IGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBOCwgd2lkdGgsIGhlaWdodCwg
MCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFt
LCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIEdM
dWludCB3aW5kb3dQaXhlbENvdW50ID0gZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdo
dCgpOwotICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IGFjdHVhbCh3aW5kb3dQaXhlbENvdW50LCBH
TENvbG9yOjpibGFjayk7Ci0gICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIGdldFdpbmRvd1dpZHRoKCks
IGdldFdpbmRvd0hlaWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAg
ICAgICAgICBhY3R1YWwuZGF0YSgpKTsKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBleHBlY3Rl
ZCh3aW5kb3dQaXhlbENvdW50LCBHTENvbG9yOjpncmVlbik7Ci0gICAgRVhQRUNUX0VRKGV4cGVj
dGVkLCBhY3R1YWwpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVQgVU5vcm0oZG91Ymxl
IHZhbHVlKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPih2YWx1ZSAqIHN0YXRpY19jYXN0
PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KCkpKTsKLX0KLQotLy8gVGVzdCBy
ZW5kZXJpbmcgYSBkZXB0aCB0ZXh0dXJlIHdpdGggbWlwbWFwcy4KLVRFU1RfUChUZXh0dXJlMkRU
ZXN0RVMzLCBEZXB0aFRleHR1cmVzV2l0aE1pcG1hcHMpCi17Ci0gICAgLy9UT0RPKGN3YWxsZXop
IHRoaXMgaXMgZmFpbGluZyBvbiBJbnRlbCBXaW43IE9wZW5HTAotICAgIGlmIChJc0ludGVsKCkg
JiYgSXNXaW5kb3dzKCkgJiYgSXNPcGVuR0woKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0IGludCBzaXplID0gZ2V0V2luZG93V2lkdGgoKTsK
LQotICAgIGF1dG8gZGltICAgPSBbc2l6ZV0oaW50IGxldmVsKSB7IHJldHVybiBzaXplID4+IGxl
dmVsOyB9OwotICAgIGludCBsZXZlbHMgPSBnbDo6bG9nMihzaXplKTsKLQotICAgIGdsQWN0aXZl
VGV4dHVyZShHTF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBt
VGV4dHVyZTJEKTsKLSAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCBsZXZlbHMsIEdM
X0RFUFRIX0NPTVBPTkVOVDI0LCBzaXplLCBzaXplKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUX01JUE1BUF9ORUFS
RVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdf
RklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0g
ICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfQUxJR05NRU5ULCAxKTsKLSAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKLQotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgZ2xVbmlmb3Jt
MWkobVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiwgMCk7Ci0KLSAgICBzdGQ6OnZlY3Rvcjx1bnNp
Z25lZCBjaGFyPiBleHBlY3RlZDsKLQotICAgIGZvciAoaW50IGxldmVsID0gMDsgbGV2ZWwgPCBs
ZXZlbHM7ICsrbGV2ZWwpCi0gICAgewotICAgICAgICBkb3VibGUgdmFsdWUgPSAoc3RhdGljX2Nh
c3Q8ZG91YmxlPihsZXZlbCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGxldmVscyAtIDEpKTsKLSAg
ICAgICAgZXhwZWN0ZWQucHVzaF9iYWNrKFVOb3JtPHVuc2lnbmVkIGNoYXI+KHZhbHVlKSk7Ci0K
LSAgICAgICAgaW50IGxldmVsRGltID0gZGltKGxldmVsKTsKLQotICAgICAgICBBU1NFUlRfR1Qo
bGV2ZWxEaW0sIDApOwotCi0gICAgICAgIHN0ZDo6dmVjdG9yPHVuc2lnbmVkIGludD4gaW5pdERh
dGEobGV2ZWxEaW0gKiBsZXZlbERpbSwgVU5vcm08dW5zaWduZWQgaW50Pih2YWx1ZSkpOwotICAg
ICAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgbGV2ZWwsIDAsIDAsIGxldmVsRGlt
LCBsZXZlbERpbSwgR0xfREVQVEhfQ09NUE9ORU5ULAotICAgICAgICAgICAgICAgICAgICAgICAg
R0xfVU5TSUdORURfSU5ULCBpbml0RGF0YS5kYXRhKCkpOwotICAgIH0KLSAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKLQotICAgIGZvciAoaW50IGxldmVsID0gMDsgbGV2ZWwgPCBsZXZlbHM7ICsr
bGV2ZWwpCi0gICAgewotICAgICAgICBnbFZpZXdwb3J0KDAsIDAsIGRpbShsZXZlbCksIGRpbShs
ZXZlbCkpOwotICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0g
ICAgICAgIEdMQ29sb3IgYWN0dWFsID0gUmVhZENvbG9yKDAsIDApOwotICAgICAgICBFWFBFQ1Rf
TkVBUihleHBlY3RlZFtsZXZlbF0sIGFjdHVhbC5SLCAxMHUpOwotICAgIH0KLQotICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0cyB1bnBhY2tpbmcgaW50byB0aGUgdW5zaXpl
ZCBHTF9BTFBIQSBmb3JtYXQuCi1URVNUX1AoVGV4dHVyZTJEVGVzdEVTMywgVW5zaXplZEFscGhh
VW5wYWNrQnVmZmVyKQotewotICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgd2h5IHRo
aXMgZmFpbHMgb24gT1NYLgotICAgIEFOR0xFX1NLSVBfVEVTVF9JRihJc09TWCgpKTsKLQotICAg
IC8vIEluaXRpYWxpemUgdGhlIHRleHVyZS4KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIG1UZXh0dXJlMkQpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9B
TFBIQSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIEdMX0FMUEhBLAot
ICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLSAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNU
KTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklM
VEVSLCBHTF9ORUFSRVNUKTsKLQotICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IGJ1ZmZlckRhdGEo
Z2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgpLCAxMjcpOwotCi0gICAgLy8gUHVs
bCBpbiB0aGUgY29sb3IgZGF0YSBmcm9tIHRoZSB1bnBhY2sgYnVmZmVyLgotICAgIEdMQnVmZmVy
IHVucGFja0J1ZmZlcjsKLSAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19BTElHTk1FTlQsIDEp
OwotICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCB1bnBhY2tCdWZmZXIu
Z2V0KCkpOwotICAgIGdsQnVmZmVyRGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCBnZXRXaW5k
b3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCksIGJ1ZmZlckRhdGEuZGF0YSgpLAotICAgICAg
ICAgICAgICAgICBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIEdM
X0FMUEhBLAotICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsK
LQotICAgIC8vIENsZWFyIHRvIGEgd2VpcmQgY29sb3IgdG8gbWFrZSBzdXJlIHdlJ3JlIGRyYXdp
bmcgc29tZXRoaW5nLgotICAgIGdsQ2xlYXJDb2xvcigwLjVmLCAwLjhmLCAxLjBmLCAwLjJmKTsK
LSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgLy8gRHJhdyB3aXRoIHRo
ZSBhbHBoYSB0ZXh0dXJlIGFuZCB2ZXJpZnkuCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3Np
dGlvbiIsIDAuNWYpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX1BJ
WEVMX05FQVIoMCwgMCwgMCwgMCwgMCwgMTI3LCAxKTsKLX0KLQotLy8gRW5zdXJlIHN0YWxlIHVu
cGFjayBkYXRhIGRvZXNuJ3QgcHJvcGFnYXRlIGluIEQzRDExLgotVEVTVF9QKFRleHR1cmUyRFRl
c3RFUzMsIFN0YWxlVW5wYWNrRGF0YSkKLXsKLSAgICAvLyBJbml0IHVucGFjayBidWZmZXIuCi0g
ICAgR0xzaXplaSBwaXhlbENvdW50ID0gZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdo
dCgpIC8gMjsKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHMocGl4ZWxDb3VudCwgR0xD
b2xvcjo6cmVkKTsKLQotICAgIEdMQnVmZmVyIHVucGFja0J1ZmZlcjsKLSAgICBnbFBpeGVsU3Rv
cmVpKEdMX1VOUEFDS19BTElHTk1FTlQsIDEpOwotICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9V
TlBBQ0tfQlVGRkVSLCB1bnBhY2tCdWZmZXIuZ2V0KCkpOwotICAgIEdMc2l6ZWkgYnVmZmVyU2l6
ZSA9IHBpeGVsQ291bnQgKiBzaXplb2YoR0xDb2xvcik7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX1BJ
WEVMX1VOUEFDS19CVUZGRVIsIGJ1ZmZlclNpemUsIHBpeGVscy5kYXRhKCksIEdMX1NUQVRJQ19E
UkFXKTsKLQotICAgIC8vIENyZWF0ZSBmcm9tIHVucGFjayBidWZmZXIuCi0gICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgR0xfUkdCQTgsIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWln
aHQoKSAvIDIsIDAsCi0gICAgICAgICAgICAgICAgIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
IG51bGxwdHIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotCi0gICAgZHJhd1F1YWQo
bVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OnJlZCk7Ci0KLSAgICAv
LyBGaWxsIHVucGFjayB3aXRoIGdyZWVuLCByZWNyZWF0aW5nIGJ1ZmZlci4KLSAgICBwaXhlbHMu
YXNzaWduKGdldFdpbmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSwgR0xDb2xvcjo6Z3Jl
ZW4pOwotICAgIEdMc2l6ZWkgc2l6ZTIgPSBnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVp
Z2h0KCkgKiBzaXplb2YoR0xDb2xvcik7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX1BJWEVMX1VOUEFD
S19CVUZGRVIsIHNpemUyLCBwaXhlbHMuZGF0YSgpLCBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICAv
LyBSZWluaXQgdGV4dHVyZSB3aXRoIGdyZWVuLgotICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhU
VVJFXzJELCAwLCAwLCAwLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkg
LyAyLCBHTF9SR0JBLAotICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBudWxs
cHRyKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBH
TENvbG9yOjpncmVlbik7Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1
cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0
aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi0vLyBUT0RPKG9ldHVhaG8pOiBFbmFi
bGUgYWxsIGJlbG93IHRlc3RzIG9uIE9wZW5HTC4gUmVxdWlyZXMgYSBmaXggZm9yIEFOR0xFIGJ1
ZyAxMjc4LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChUZXh0dXJlMkRUZXN0LAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNE
MTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMy
X09QRU5HTEVTKCkpOwotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChUZXh0dXJlQ3ViZVRlc3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAgICAg
IEVTMl9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfT1BFTkdMRVMoKSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKFRleHR1cmUyRFRl
c3RXaXRoRHJhd1NjYWxlLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
RVMyX0QzRDExX0ZMOV8zKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkpOwotQU5HTEVfSU5TVEFOVElB
VEVfVEVTVChTYW1wbGVyMkRBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAotICAgICAgICAgICAg
ICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVO
R0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoU2FtcGxlckFycmF5VGVzdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMy
X0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAg
IEVTMl9PUEVOR0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoU2FtcGxlckFycmF5QXNG
dW5jdGlvblBhcmFtZXRlclRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCks
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5H
TCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7Ci1BTkdMRV9JTlNU
QU5USUFURV9URVNUKFRleHR1cmUyRFRlc3RFUzMsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCks
IEVTM19PUEVOR0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVGV4dHVyZTNEVGVzdEVT
MywgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOwotQU5HTEVfSU5T
VEFOVElBVEVfVEVTVChUZXh0dXJlMkRJbnRlZ2VyQWxwaGExVGVzdEVTMywgRVMzX0QzRDExKCks
IEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOwotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChU
ZXh0dXJlMkRVbnNpZ25lZEludGVnZXJBbHBoYTFUZXN0RVMzLAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzNfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7Ci1BTkdMRV9JTlNUQU5USUFU
RV9URVNUKFNoYWRvd1NhbXBsZXJQbHVzU2FtcGxlcjNEVGVzdEVTMywKLSAgICAgICAgICAgICAg
ICAgICAgICAgRVMzX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0wo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwotQU5HTEVfSU5TVEFO
VElBVEVfVEVTVChTYW1wbGVyVHlwZU1peFRlc3RFUzMsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdM
KCksIEVTM19PUEVOR0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVGV4dHVyZTJEQXJy
YXlUZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7Ci1B
TkdMRV9JTlNUQU5USUFURV9URVNUKFRleHR1cmVTaXplVGV4dHVyZUFycmF5VGVzdCwgRVMzX0Qz
RDExKCksIEVTM19PUEVOR0woKSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKFNhbXBsZXJJblN0
cnVjdFRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
RVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAotICAgICAg
ICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNU
KFNhbXBsZXJJblN0cnVjdEFzRnVuY3Rpb25QYXJhbWV0ZXJUZXN0LAotICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZM
OV8zKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5H
TEVTKCkpOwotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChTYW1wbGVySW5TdHJ1Y3RBcnJheUFzRnVu
Y3Rpb25QYXJhbWV0ZXJUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0wo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkpOwotQU5HTEVfSU5TVEFO
VElBVEVfVEVTVChTYW1wbGVySW5OZXN0ZWRTdHJ1Y3RBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgIEVTMl9EM0QxMV9GTDlfMygpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgp
LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9PUEVOR0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoU2FtcGxlcklu
U3RydWN0QW5kT3RoZXJWYXJpYWJsZVRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9E
M0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMy
X09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7Ci1BTkdM
RV9JTlNUQU5USUFURV9URVNUKFRleHR1cmVMaW1pdHNUZXN0LCBFUzJfRDNEMTEoKSwgRVMyX09Q
RU5HTCgpLCBFUzJfT1BFTkdMRVMoKSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKFRleHR1cmUy
RE5vcm0xNlRlc3RFUzMsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygp
KTsKLQotfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1RpbWVyUXVlcmllc1Rlc3QuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1RpbWVyUXVlcmllc1Rlc3Qu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZjM3MjVlYzAyMmQ5ZjgzZGUwMDlk
NGFmYTQ3ZDI0ZTIzNDBmYmU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9UaW1l
clF1ZXJpZXNUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5MCArMCwwIEBACi0vLwotLy8g
Q29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0v
LwotLy8gVGltZXJRdWVyaWVzVGVzdC5jcHAKLS8vICAgVmFyaW91cyB0ZXN0cyBmb3IgRVhUX2Rp
c2pvaW50X3RpbWVyX3F1ZXJ5IGZ1bmN0aW9uYWxpdHkgYW5kIHZhbGlkYXRpb24KLS8vCi0KLSNp
bmNsdWRlICJzeXN0ZW1fdXRpbHMuaCIKLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5o
IgotI2luY2x1ZGUgInJhbmRvbV91dGlscy5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0K
LWNsYXNzIFRpbWVyUXVlcmllc1Rlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3Rl
ZDoKLSAgICBUaW1lclF1ZXJpZXNUZXN0KCkgOiBtUHJvZ3JhbSgwKSwgbVByb2dyYW1Db3N0bHko
MCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7Ci0gICAgICAgIHNldFdpbmRv
d0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRD
b25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAg
ICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7
Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIFNldFVwKCkKLSAgICB7Ci0gICAgICAgIEFOR0xF
VGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBwYXNzdGhyb3VnaFZT
ID0KLSAgICAgICAgICAgICJhdHRyaWJ1dGUgaGlnaHAgdmVjNCBwb3NpdGlvbjsgdm9pZCBtYWlu
KHZvaWQpXG4iCi0gICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlv
biA9IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgIn1cbiI7Ci0KLSAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgcGFzc3Rocm91Z2hQUyA9Ci0gICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZs
b2F0OyB2b2lkIG1haW4odm9pZClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAi
ICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTtcbiIKLSAgICAgICAg
ICAgICJ9XG4iOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvc3RseVZTID0KLSAgICAg
ICAgICAgICJhdHRyaWJ1dGUgaGlnaHAgdmVjNCBwb3NpdGlvbjsgdmFyeWluZyBoaWdocCB2ZWM0
IHRlc3RQb3M7IHZvaWQgbWFpbih2b2lkKVxuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAg
ICAgICIgICAgdGVzdFBvcyAgICAgPSBwb3NpdGlvbjtcbiIKLSAgICAgICAgICAgICIgICAgZ2xf
UG9zaXRpb24gPSBwb3NpdGlvbjtcbiIKLSAgICAgICAgICAgICJ9XG4iOwotCi0gICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGNvc3RseVBTID0KLSAgICAgICAgICAgICJwcmVjaXNpb24gaGlnaHAg
ZmxvYXQ7IHZhcnlpbmcgaGlnaHAgdmVjNCB0ZXN0UG9zOyB2b2lkIG1haW4odm9pZClcbiIKLSAg
ICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIHZlYzQgdGVzdCA9IHRlc3RQb3M7XG4i
Ci0gICAgICAgICAgICAiICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNTAwOyBpKyspXG4iCi0gICAg
ICAgICAgICAiICAgIHtcbiIKLSAgICAgICAgICAgICIgICAgICAgIHRlc3QgPSBzcXJ0KHRlc3Qp
O1xuIgotICAgICAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICAgICAiICAgIGdsX0ZyYWdDb2xv
ciA9IHRlc3Q7XG4iCi0gICAgICAgICAgICAifVxuIjsKLQotICAgICAgICBtUHJvZ3JhbSA9IENv
bXBpbGVQcm9ncmFtKHBhc3N0aHJvdWdoVlMsIHBhc3N0aHJvdWdoUFMpOwotICAgICAgICBBU1NF
UlRfTkUoMHUsIG1Qcm9ncmFtKSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOwotCi0g
ICAgICAgIG1Qcm9ncmFtQ29zdGx5ID0gQ29tcGlsZVByb2dyYW0oY29zdGx5VlMsIGNvc3RseVBT
KTsKLSAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbUNvc3RseSkgPDwgInNoYWRlciBjb21w
aWxhdGlvbiBmYWlsZWQuIjsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQot
ICAgIHsKLSAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAgICAgZ2xEZWxl
dGVQcm9ncmFtKG1Qcm9ncmFtQ29zdGx5KTsKLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigp
OwotICAgIH0KLQotICAgIEdMdWludCBtUHJvZ3JhbTsKLSAgICBHTHVpbnQgbVByb2dyYW1Db3N0
bHk7Ci19OwotCi0vLyBUZXN0IHRoYXQgYWxsIHByb2MgYWRkcmVzc2VzIGFyZSBsb2FkYWJsZQot
VEVTVF9QKFRpbWVyUXVlcmllc1Rlc3QsIFByb2NBZGRyZXNzZXMpCi17Ci0gICAgaWYgKCFleHRl
bnNpb25FbmFibGVkKCJHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnkiKSkKLSAgICB7Ci0gICAg
ICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfRVhUX2Rpc2pvaW50X3Rp
bWVyX3F1ZXJ5IGlzIG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjpl
bmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX05FKG51bGxwdHIsIGVn
bEdldFByb2NBZGRyZXNzKCJnbEdlblF1ZXJpZXNFWFQiKSk7Ci0gICAgQVNTRVJUX05FKG51bGxw
dHIsIGVnbEdldFByb2NBZGRyZXNzKCJnbERlbGV0ZVF1ZXJpZXNFWFQiKSk7Ci0gICAgQVNTRVJU
X05FKG51bGxwdHIsIGVnbEdldFByb2NBZGRyZXNzKCJnbElzUXVlcnlFWFQiKSk7Ci0gICAgQVNT
RVJUX05FKG51bGxwdHIsIGVnbEdldFByb2NBZGRyZXNzKCJnbEJlZ2luUXVlcnlFWFQiKSk7Ci0g
ICAgQVNTRVJUX05FKG51bGxwdHIsIGVnbEdldFByb2NBZGRyZXNzKCJnbEVuZFF1ZXJ5RVhUIikp
OwotICAgIEFTU0VSVF9ORShudWxscHRyLCBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xRdWVyeUNvdW50
ZXJFWFQiKSk7Ci0gICAgQVNTRVJUX05FKG51bGxwdHIsIGVnbEdldFByb2NBZGRyZXNzKCJnbEdl
dFF1ZXJ5aXZFWFQiKSk7Ci0gICAgQVNTRVJUX05FKG51bGxwdHIsIGVnbEdldFByb2NBZGRyZXNz
KCJnbEdldFF1ZXJ5T2JqZWN0aXZFWFQiKSk7Ci0gICAgQVNTRVJUX05FKG51bGxwdHIsIGVnbEdl
dFByb2NBZGRyZXNzKCJnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUIikpOwotICAgIEFTU0VSVF9ORShu
dWxscHRyLCBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRRdWVyeU9iamVjdGk2NHZFWFQiKSk7Ci0g
ICAgQVNTRVJUX05FKG51bGxwdHIsIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFF1ZXJ5T2JqZWN0
dWk2NHZFWFQiKSk7Ci19Ci0KLS8vIFRlc3RzIHRoZSB0aW1lIGVsYXBzZWQgcXVlcnkKLVRFU1Rf
UChUaW1lclF1ZXJpZXNUZXN0LCBUaW1lRWxhcHNlZCkKLXsKLSAgICBpZiAoIWV4dGVuc2lvbkVu
YWJsZWQoIkdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeSIpKQotICAgIHsKLSAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVl
cnkgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTGludCBxdWVyeVRpbWVFbGFwc2VkQml0cyA9
IDA7Ci0gICAgZ2xHZXRRdWVyeWl2RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQsIEdMX1FVRVJZX0NP
VU5URVJfQklUU19FWFQsICZxdWVyeVRpbWVFbGFwc2VkQml0cyk7Ci0gICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICBzdGQ6OmNvdXQgPDwgIlRpbWUgZWxhcHNlZCBjb3VudGVyIGJpdHM6
ICIgPDwgcXVlcnlUaW1lRWxhcHNlZEJpdHMgPDwgc3RkOjplbmRsOwotCi0gICAgLy8gU2tpcCB0
ZXN0IGlmIHRoZSBudW1iZXIgb2YgYml0cyBpcyAwCi0gICAgaWYgKHF1ZXJ5VGltZUVsYXBzZWRC
aXRzID09IDApCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNh
dXNlIG9mIDAgY291bnRlciBiaXRzIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBnbERlcHRoTWFzayhHTF9UUlVFKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JV
RkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsK
LQotICAgIEdMdWludCBxdWVyeTEgPSAwOwotICAgIEdMdWludCBxdWVyeTIgPSAwOwotICAgIGds
R2VuUXVlcmllc0VYVCgxLCAmcXVlcnkxKTsKLSAgICBnbEdlblF1ZXJpZXNFWFQoMSwgJnF1ZXJ5
Mik7Ci0KLSAgICAvLyBUZXN0IHRpbWUgZWxhcHNlZCBmb3IgYSBzaW5nbGUgcXVhZAotICAgIGds
QmVnaW5RdWVyeUVYVChHTF9USU1FX0VMQVBTRURfRVhULCBxdWVyeTEpOwotICAgIGRyYXdRdWFk
KG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjhmKTsKLSAgICBnbEVuZFF1ZXJ5RVhUKEdMX1RJTUVf
RUxBUFNFRF9FWFQpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xDbGVhcihH
TF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVG
RkVSX0JJVCk7Ci0KLSAgICAvLyBUZXN0IHRpbWUgZWxhcHNlZCBmb3IgY29zdGx5IHF1YWQKLSAg
ICBnbEJlZ2luUXVlcnlFWFQoR0xfVElNRV9FTEFQU0VEX0VYVCwgcXVlcnkyKTsKLSAgICBkcmF3
UXVhZChtUHJvZ3JhbUNvc3RseSwgInBvc2l0aW9uIiwgMC44Zik7Ci0gICAgZ2xFbmRRdWVyeUVY
VChHTF9USU1FX0VMQVBTRURfRVhUKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAg
IHN3YXBCdWZmZXJzKCk7Ci0KLSAgICBpbnQgdGltZW91dCAgPSAyMDAwMDA7Ci0gICAgR0x1aW50
IHJlYWR5ID0gR0xfRkFMU0U7Ci0gICAgd2hpbGUgKHJlYWR5ID09IEdMX0ZBTFNFICYmIHRpbWVv
dXQgPiAwKQotICAgIHsKLSAgICAgICAgYW5nbGU6OlNsZWVwKDApOwotICAgICAgICBnbEdldFF1
ZXJ5T2JqZWN0dWl2RVhUKHF1ZXJ5MSwgR0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9FWFQsICZy
ZWFkeSk7Ci0gICAgICAgIHRpbWVvdXQtLTsKLSAgICB9Ci0gICAgcmVhZHkgPSBHTF9GQUxTRTsK
LSAgICB3aGlsZSAocmVhZHkgPT0gR0xfRkFMU0UgJiYgdGltZW91dCA+IDApCi0gICAgewotICAg
ICAgICBhbmdsZTo6U2xlZXAoMCk7Ci0gICAgICAgIGdsR2V0UXVlcnlPYmplY3R1aXZFWFQocXVl
cnkyLCBHTF9RVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVCwgJnJlYWR5KTsKLSAgICAgICAgdGlt
ZW91dC0tOwotICAgIH0KLSAgICBBU1NFUlRfTFQoMCwgdGltZW91dCkgPDwgIlF1ZXJ5IHJlc3Vs
dCBhdmFpbGFibGUgdGltZWQgb3V0IiA8PCBzdGQ6OmVuZGw7Ci0KLSAgICBHTHVpbnQ2NCByZXN1
bHQxID0gMDsKLSAgICBHTHVpbnQ2NCByZXN1bHQyID0gMDsKLSAgICBnbEdldFF1ZXJ5T2JqZWN0
dWk2NHZFWFQocXVlcnkxLCBHTF9RVUVSWV9SRVNVTFRfRVhULCAmcmVzdWx0MSk7Ci0gICAgZ2xH
ZXRRdWVyeU9iamVjdHVpNjR2RVhUKHF1ZXJ5MiwgR0xfUVVFUllfUkVTVUxUX0VYVCwgJnJlc3Vs
dDIpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xEZWxldGVRdWVyaWVzRVhU
KDEsICZxdWVyeTEpOwotICAgIGdsRGVsZXRlUXVlcmllc0VYVCgxLCAmcXVlcnkyKTsKLSAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIHN0ZDo6Y291dCA8PCAiRWxhcHNlZCB0aW1lOiAi
IDw8IHJlc3VsdDEgPDwgIiBjaGVhcCBxdWFkIiA8PCBzdGQ6OmVuZGw7Ci0gICAgc3RkOjpjb3V0
IDw8ICJFbGFwc2VkIHRpbWU6ICIgPDwgcmVzdWx0MiA8PCAiIGNvc3RseSBxdWFkIiA8PCBzdGQ6
OmVuZGw7Ci0KLSAgICAvLyBUaGUgdGltZSBlbGFwc2VkIHNob3VsZCBiZSBub256ZXJvCi0gICAg
RVhQRUNUX0xUKDB1bCwgcmVzdWx0MSk7Ci0gICAgRVhQRUNUX0xUKDB1bCwgcmVzdWx0Mik7Ci0K
LSAgICAvLyBUaGUgY29zdGx5IHF1YWQgc2hvdWxkIHRha2UgbG9uZ2VyIHRoYW4gdGhlIGNoZWFw
IHF1YWQKLSAgICBFWFBFQ1RfTFQocmVzdWx0MSwgcmVzdWx0Mik7Ci19Ci0KLS8vIFRlc3RzIHRp
bWUgZWxhcHNlZCBmb3IgYSBub24gZHJhdyBjYWxsICh0ZXh0dXJlIHVwbG9hZCkKLVRFU1RfUChU
aW1lclF1ZXJpZXNUZXN0LCBUaW1lRWxhcHNlZFRleHR1cmVUZXN0KQotewotICAgIC8vIE9TWCBk
cml2ZXJzIGRvbid0IHNlZW0gdG8gcHJvcGVybHkgdGltZSBub24tZHJhdyBjYWxscyBzbyB3ZSBz
a2lwIHRoZSB0ZXN0IG9uIE1hYwotICAgIGlmIChJc09TWCgpKQotICAgIHsKLSAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gT1NYIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kaXNqb2lu
dF90aW1lcl9xdWVyeSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBw
ZWQgYmVjYXVzZSBHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnkgaXMgbm90IGF2YWlsYWJsZS4i
Ci0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBHTGludCBxdWVyeVRpbWVFbGFwc2VkQml0cyA9IDA7Ci0gICAgZ2xHZXRRdWVyeWl2
RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQsIEdMX1FVRVJZX0NPVU5URVJfQklUU19FWFQsICZxdWVy
eVRpbWVFbGFwc2VkQml0cyk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBzdGQ6
OmNvdXQgPDwgIlRpbWUgZWxhcHNlZCBjb3VudGVyIGJpdHM6ICIgPDwgcXVlcnlUaW1lRWxhcHNl
ZEJpdHMgPDwgc3RkOjplbmRsOwotCi0gICAgLy8gU2tpcCB0ZXN0IGlmIHRoZSBudW1iZXIgb2Yg
Yml0cyBpcyAwCi0gICAgaWYgKHF1ZXJ5VGltZUVsYXBzZWRCaXRzID09IDApCi0gICAgewotICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIG9mIDAgY291bnRlciBiaXRz
IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHVieXRlIHBp
eGVsc1tdID0gezAsIDAsIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAsIDAsIDB9
OwotCi0gICAgLy8gUXVlcnkgYW5kIHRleHR1cmUgaW5pdGlhbGl6YXRpb24KLSAgICBHTHVpbnQg
dGV4dHVyZTsKLSAgICBHTHVpbnQgcXVlcnkgPSAwOwotICAgIGdsR2VuUXVlcmllc0VYVCgxLCAm
cXVlcnkpOwotICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUpOwotCi0gICAgLy8gVXBsb2Fk
IGEgdGV4dHVyZSBpbnNpZGUgdGhlIHF1ZXJ5Ci0gICAgZ2xCZWdpblF1ZXJ5RVhUKEdMX1RJTUVf
RUxBUFNFRF9FWFQsIHF1ZXJ5KTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBH
TF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLSAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhU
VVJFXzJELCAwLCBHTF9SR0IsIDIsIDIsIDAsIEdMX1JHQiwgR0xfVU5TSUdORURfQllURSwgcGl4
ZWxzKTsKLSAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfMkQpOwotICAgIGdsRmluaXNo
KCk7Ci0gICAgZ2xFbmRRdWVyeUVYVChHTF9USU1FX0VMQVBTRURfRVhUKTsKLSAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKLQotICAgIGludCB0aW1lb3V0ICA9IDIwMDAwMDsKLSAgICBHTHVpbnQg
cmVhZHkgPSBHTF9GQUxTRTsKLSAgICB3aGlsZSAocmVhZHkgPT0gR0xfRkFMU0UgJiYgdGltZW91
dCA+IDApCi0gICAgewotICAgICAgICBhbmdsZTo6U2xlZXAoMCk7Ci0gICAgICAgIGdsR2V0UXVl
cnlPYmplY3R1aXZFWFQocXVlcnksIEdMX1FVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhULCAmcmVh
ZHkpOwotICAgICAgICB0aW1lb3V0LS07Ci0gICAgfQotICAgIEFTU0VSVF9MVCgwLCB0aW1lb3V0
KSA8PCAiUXVlcnkgcmVzdWx0IGF2YWlsYWJsZSB0aW1lZCBvdXQiIDw8IHN0ZDo6ZW5kbDsKLQot
ICAgIEdMdWludDY0IHJlc3VsdCA9IDA7Ci0gICAgZ2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUKHF1
ZXJ5LCBHTF9RVUVSWV9SRVNVTFRfRVhULCAmcmVzdWx0KTsKLSAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKLQotICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleHR1cmUpOwotICAgIGdsRGVsZXRl
UXVlcmllc0VYVCgxLCAmcXVlcnkpOwotCi0gICAgc3RkOjpjb3V0IDw8ICJFbGFwc2VkIHRpbWU6
ICIgPDwgcmVzdWx0IDw8IHN0ZDo6ZW5kbDsKLSAgICBFWFBFQ1RfTFQoMHVsLCByZXN1bHQpOwot
fQotCi0vLyBUZXN0cyB2YWxpZGF0aW9uIG9mIHF1ZXJ5IGZ1bmN0aW9ucyB3aXRoIHJlc3BlY3Qg
dG8gZWxhcHNlZCB0aW1lIHF1ZXJ5Ci1URVNUX1AoVGltZXJRdWVyaWVzVGVzdCwgVGltZUVsYXBz
ZWRWYWxpZGF0aW9uVGVzdCkKLXsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9k
aXNqb2ludF90aW1lcl9xdWVyeSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IHNraXBwZWQgYmVjYXVzZSBHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnkgaXMgbm90IGF2YWls
YWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBHTGludCBxdWVyeVRpbWVFbGFwc2VkQml0cyA9IDA7Ci0gICAgZ2xHZXRR
dWVyeWl2RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQsIEdMX1FVRVJZX0NPVU5URVJfQklUU19FWFQs
ICZxdWVyeVRpbWVFbGFwc2VkQml0cyk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICBzdGQ6OmNvdXQgPDwgIlRpbWUgZWxhcHNlZCBjb3VudGVyIGJpdHM6ICIgPDwgcXVlcnlUaW1l
RWxhcHNlZEJpdHMgPDwgc3RkOjplbmRsOwotCi0gICAgLy8gU2tpcCB0ZXN0IGlmIHRoZSBudW1i
ZXIgb2YgYml0cyBpcyAwCi0gICAgaWYgKHF1ZXJ5VGltZUVsYXBzZWRCaXRzID09IDApCi0gICAg
ewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIG9mIDAgY291bnRl
ciBiaXRzIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHVp
bnQgcXVlcnkgPSAwOwotICAgIGdsR2VuUXVlcmllc0VYVCgtMSwgJnF1ZXJ5KTsKLSAgICBFWFBF
Q1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICBnbEdlblF1ZXJpZXNFWFQoMSwg
JnF1ZXJ5KTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmVnaW5RdWVyeUVY
VChHTF9USU1FU1RBTVBfRVhULCBxdWVyeSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFM
SURfRU5VTSk7Ci0KLSAgICBnbEJlZ2luUXVlcnlFWFQoR0xfVElNRV9FTEFQU0VEX0VYVCwgMCk7
Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLQotICAgIGdsRW5k
UXVlcnlFWFQoR0xfVElNRV9FTEFQU0VEX0VYVCk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLQotICAgIGdsQmVnaW5RdWVyeUVYVChHTF9USU1FX0VMQVBTRURf
RVhULCBxdWVyeSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbEJlZ2luUXVl
cnlFWFQoR0xfVElNRV9FTEFQU0VEX0VYVCwgcXVlcnkpOwotICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci0KLSAgICBnbEVuZFF1ZXJ5RVhUKEdMX1RJTUVfRUxBUFNF
RF9FWFQpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xFbmRRdWVyeUVYVChH
TF9USU1FX0VMQVBTRURfRVhUKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotfQotCi0vLyBUZXN0cyB0aW1lciBxdWVyaWVzIG9wZXJhdGluZyB1bmRlciBtdWx0
aXBsZSBFR0wgY29udGV4dHMgd2l0aCBtaWQtcXVlcnkgc3dpdGNoaW5nCi1URVNUX1AoVGltZXJR
dWVyaWVzVGVzdCwgVGltZUVsYXBzZWRNdWx0aWNvbnRleHRUZXN0KQotewotICAgIGlmIChJc0FN
RCgpICYmIElzT3BlbkdMKCkgJiYgSXNXaW5kb3dzKCkgJiYgSXNEZWJ1ZygpKQotICAgIHsKLSAg
ICAgICAgLy8gVE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCB3aHkgdGhpcyB0ZXN0IGlzIGZsYWt5
IG9uIFdpbi9BTUQvT3BlbkdML0RlYnVnLgotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBvbiBXaW5kb3dzIEFNRCBPcGVuR0wgRGVidWcuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kaXNq
b2ludF90aW1lcl9xdWVyeSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgYmVjYXVzZSBHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnkgaXMgbm90IGF2YWlsYWJs
ZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBHTGludCBxdWVyeVRpbWVFbGFwc2VkQml0cyA9IDA7Ci0gICAgZ2xHZXRRdWVy
eWl2RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQsIEdMX1FVRVJZX0NPVU5URVJfQklUU19FWFQsICZx
dWVyeVRpbWVFbGFwc2VkQml0cyk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBz
dGQ6OmNvdXQgPDwgIlRpbWUgZWxhcHNlZCBjb3VudGVyIGJpdHM6ICIgPDwgcXVlcnlUaW1lRWxh
cHNlZEJpdHMgPDwgc3RkOjplbmRsOwotCi0gICAgLy8gU2tpcCB0ZXN0IGlmIHRoZSBudW1iZXIg
b2YgYml0cyBpcyAwCi0gICAgaWYgKHF1ZXJ5VGltZUVsYXBzZWRCaXRzID09IDApCi0gICAgewot
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIG9mIDAgY291bnRlciBi
aXRzIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBXaXRo
b3V0IGEgZ2xDbGVhciwgdGhlIGZpcnN0IGRyYXcgY2FsbCBvbiBHTCB0YWtlcyBhIGh1Z2UgYW1v
dW50IG9mIHRpbWUgd2hlbiBydW4gYWZ0ZXIgdGhlCi0gICAgLy8gRDNEIHRlc3Qgb24gY2VydGFp
biBOVklESUEgZHJpdmVycwotICAgIGdsRGVwdGhNYXNrKEdMX1RSVUUpOwotICAgIGdsQ2xlYXIo
R0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JV
RkZFUl9CSVQpOwotCi0gICAgRUdMaW50IGNvbnRleHRBdHRyaWJ1dGVzW10gPSB7Ci0gICAgICAg
IEVHTF9DT05URVhUX01BSk9SX1ZFUlNJT05fS0hSLAotICAgICAgICBHZXRQYXJhbSgpLm1ham9y
VmVyc2lvbiwKLSAgICAgICAgRUdMX0NPTlRFWFRfTUlOT1JfVkVSU0lPTl9LSFIsCi0gICAgICAg
IEdldFBhcmFtKCkubWlub3JWZXJzaW9uLAotICAgICAgICBFR0xfTk9ORSwKLSAgICB9OwotCi0g
ICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLQotICAgIEVHTERpc3BsYXkg
ZGlzcGxheSA9IHdpbmRvdy0+Z2V0RGlzcGxheSgpOwotICAgIEVHTENvbmZpZyBjb25maWcgICA9
IHdpbmRvdy0+Z2V0Q29uZmlnKCk7Ci0gICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gd2luZG93LT5n
ZXRTdXJmYWNlKCk7Ci0KLSAgICBzdHJ1Y3QgQ29udGV4dEluZm8KLSAgICB7Ci0gICAgICAgIEVH
TENvbnRleHQgY29udGV4dDsKLSAgICAgICAgR0x1aW50IHByb2dyYW07Ci0gICAgICAgIEdMdWlu
dCBxdWVyeTsKLSAgICAgICAgRUdMRGlzcGxheSBkaXNwbGF5OwotCi0gICAgICAgIENvbnRleHRJ
bmZvKCkgOiBjb250ZXh0KEVHTF9OT19DT05URVhUKSwgcHJvZ3JhbSgwKSwgcXVlcnkoMCksIGRp
c3BsYXkoRUdMX05PX0RJU1BMQVkpIHt9Ci0KLSAgICAgICAgfkNvbnRleHRJbmZvKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKGNvbnRleHQgIT0gRUdMX05PX0NPTlRFWFQgJiYgZGlzcGxh
eSAhPSBFR0xfTk9fRElTUExBWSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBlZ2xE
ZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgIH07Ci0gICAgQ29udGV4dEluZm8gY29udGV4dHNbMl07Ci0KLSAgICAvLyBTaGFkZXJz
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgY2hlYXBWUyA9Ci0gICAgICAgICJhdHRyaWJ1dGUgaGln
aHAgdmVjNCBwb3NpdGlvbjsgdm9pZCBtYWluKHZvaWQpXG4iCi0gICAgICAgICJ7XG4iCi0gICAg
ICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyBjaGVhcFBTID0KLSAgICAgICAgInByZWNpc2lvbiBoaWdocCBm
bG9hdDsgdm9pZCBtYWluKHZvaWQpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApO1xuIgotICAgICAgICAifVxuIjsK
LQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvc3RseVZTID0KLSAgICAgICAgImF0dHJpYnV0ZSBo
aWdocCB2ZWM0IHBvc2l0aW9uOyB2YXJ5aW5nIGhpZ2hwIHZlYzQgdGVzdFBvczsgdm9pZCBtYWlu
KHZvaWQpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgdGVzdFBvcyAgICAgPSBwb3Np
dGlvbjtcbiIKLSAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uO1xuIgotICAgICAg
ICAifVxuIjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNvc3RseVBTID0KLSAgICAgICAgInBy
ZWNpc2lvbiBoaWdocCBmbG9hdDsgdmFyeWluZyBoaWdocCB2ZWM0IHRlc3RQb3M7IHZvaWQgbWFp
bih2b2lkKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIHZlYzQgdGVzdCA9IHRlc3RQ
b3M7XG4iCi0gICAgICAgICIgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1MDA7IGkrKylcbiIKLSAg
ICAgICAgIiAgICB7XG4iCi0gICAgICAgICIgICAgICAgIHRlc3QgPSBzcXJ0KHRlc3QpO1xuIgot
ICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB0ZXN0O1xuIgot
ICAgICAgICAifVxuIjsKLQotICAgIC8vIFNldHVwIHRoZSBmaXJzdCBjb250ZXh0IHdpdGggYSBj
aGVhcCBzaGFkZXIKLSAgICBjb250ZXh0c1swXS5jb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChk
aXNwbGF5LCBjb25maWcsIEVHTF9OT19DT05URVhULCBjb250ZXh0QXR0cmlidXRlcyk7Ci0gICAg
Y29udGV4dHNbMF0uZGlzcGxheSA9IGRpc3BsYXk7Ci0gICAgQVNTRVJUX05FKGNvbnRleHRzWzBd
LmNvbnRleHQsIEVHTF9OT19DT05URVhUKTsKLSAgICBlZ2xNYWtlQ3VycmVudChkaXNwbGF5LCBz
dXJmYWNlLCBzdXJmYWNlLCBjb250ZXh0c1swXS5jb250ZXh0KTsKLSAgICBjb250ZXh0c1swXS5w
cm9ncmFtID0gQ29tcGlsZVByb2dyYW0oY2hlYXBWUywgY2hlYXBQUyk7Ci0gICAgZ2xHZW5RdWVy
aWVzRVhUKDEsICZjb250ZXh0c1swXS5xdWVyeSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
Ci0KLSAgICAvLyBTZXR1cCB0aGUgc2Vjb25kIGNvbnRleHQgd2l0aCBhbiBleHBlbnNpdmUgc2hh
ZGVyCi0gICAgY29udGV4dHNbMV0uY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwg
Y29uZmlnLCBFR0xfTk9fQ09OVEVYVCwgY29udGV4dEF0dHJpYnV0ZXMpOwotICAgIGNvbnRleHRz
WzFdLmRpc3BsYXkgPSBkaXNwbGF5OwotICAgIEFTU0VSVF9ORShjb250ZXh0c1sxXS5jb250ZXh0
LCBFR0xfTk9fQ09OVEVYVCk7Ci0gICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgc3VyZmFjZSwg
c3VyZmFjZSwgY29udGV4dHNbMV0uY29udGV4dCk7Ci0gICAgY29udGV4dHNbMV0ucHJvZ3JhbSA9
IENvbXBpbGVQcm9ncmFtKGNvc3RseVZTLCBjb3N0bHlQUyk7Ci0gICAgZ2xHZW5RdWVyaWVzRVhU
KDEsICZjb250ZXh0c1sxXS5xdWVyeSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICAvLyBTdGFydCB0aGUgcXVlcnkgYW5kIGRyYXcgYSBxdWFkIG9uIHRoZSBmaXJzdCBjb250ZXh0
IHdpdGhvdXQgZW5kaW5nIHRoZSBxdWVyeQotICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIHN1
cmZhY2UsIHN1cmZhY2UsIGNvbnRleHRzWzBdLmNvbnRleHQpOwotICAgIGdsQmVnaW5RdWVyeUVY
VChHTF9USU1FX0VMQVBTRURfRVhULCBjb250ZXh0c1swXS5xdWVyeSk7Ci0gICAgZHJhd1F1YWQo
Y29udGV4dHNbMF0ucHJvZ3JhbSwgInBvc2l0aW9uIiwgMC44Zik7Ci0gICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICAvLyBTd2l0Y2ggY29udGV4dHMsIGRyYXcgdGhlIGV4cGVuc2l2ZSBx
dWFkIGFuZCBlbmQgaXRzIHF1ZXJ5Ci0gICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgc3VyZmFj
ZSwgc3VyZmFjZSwgY29udGV4dHNbMV0uY29udGV4dCk7Ci0gICAgZ2xCZWdpblF1ZXJ5RVhUKEdM
X1RJTUVfRUxBUFNFRF9FWFQsIGNvbnRleHRzWzFdLnF1ZXJ5KTsKLSAgICBkcmF3UXVhZChjb250
ZXh0c1sxXS5wcm9ncmFtLCAicG9zaXRpb24iLCAwLjhmKTsKLSAgICBnbEVuZFF1ZXJ5RVhUKEdM
X1RJTUVfRUxBUFNFRF9FWFQpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8g
R28gYmFjayB0byB0aGUgZmlyc3QgY29udGV4dCwgZW5kIGl0cyBxdWVyeSwgYW5kIGdldCB0aGUg
cmVzdWx0Ci0gICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgY29u
dGV4dHNbMF0uY29udGV4dCk7Ci0gICAgZ2xFbmRRdWVyeUVYVChHTF9USU1FX0VMQVBTRURfRVhU
KTsKLQotICAgIEdMdWludDY0IHJlc3VsdDEgPSAwOwotICAgIEdMdWludDY0IHJlc3VsdDIgPSAw
OwotICAgIGdsR2V0UXVlcnlPYmplY3R1aTY0dkVYVChjb250ZXh0c1swXS5xdWVyeSwgR0xfUVVF
UllfUkVTVUxUX0VYVCwgJnJlc3VsdDEpOwotICAgIGdsRGVsZXRlUXVlcmllc0VYVCgxLCAmY29u
dGV4dHNbMF0ucXVlcnkpOwotICAgIGdsRGVsZXRlUHJvZ3JhbShjb250ZXh0c1swXS5wcm9ncmFt
KTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIEdldCB0aGUgMm5kIGNvbnRl
eHQncyByZXN1bHRzCi0gICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgc3VyZmFjZSwgc3VyZmFj
ZSwgY29udGV4dHNbMV0uY29udGV4dCk7Ci0gICAgZ2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUKGNv
bnRleHRzWzFdLnF1ZXJ5LCBHTF9RVUVSWV9SRVNVTFRfRVhULCAmcmVzdWx0Mik7Ci0gICAgZ2xE
ZWxldGVRdWVyaWVzRVhUKDEsICZjb250ZXh0c1sxXS5xdWVyeSk7Ci0gICAgZ2xEZWxldGVQcm9n
cmFtKGNvbnRleHRzWzFdLnByb2dyYW0pOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0g
ICAgLy8gU3dpdGNoIGJhY2sgdG8gbWFpbiBjb250ZXh0Ci0gICAgZWdsTWFrZUN1cnJlbnQoZGlz
cGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgd2luZG93LT5nZXRDb250ZXh0KCkpOwotCi0gICAgLy8g
Q29tcGFyZSB0aGUgcmVzdWx0cy4gVGhlIGNoZWFwIHF1YWQgc2hvdWxkIGJlIHNtYWxsZXIgdGhh
biB0aGUgZXhwZW5zaXZlIG9uZSBpZgotICAgIC8vIHZpcnR1YWxpemF0aW9uIGlzIHdvcmtpbmcg
Y29ycmVjdGx5Ci0gICAgc3RkOjpjb3V0IDw8ICJFbGFwc2VkIHRpbWU6ICIgPDwgcmVzdWx0MSA8
PCAiIGNoZWFwIHF1YWQiIDw8IHN0ZDo6ZW5kbDsKLSAgICBzdGQ6OmNvdXQgPDwgIkVsYXBzZWQg
dGltZTogIiA8PCByZXN1bHQyIDw8ICIgY29zdGx5IHF1YWQiIDw8IHN0ZDo6ZW5kbDsKLSAgICBF
WFBFQ1RfTFQoMHVsLCByZXN1bHQxKTsKLSAgICBFWFBFQ1RfTFQoMHVsLCByZXN1bHQyKTsKLSAg
ICBFWFBFQ1RfTFQocmVzdWx0MSwgcmVzdWx0Mik7Ci19Ci0KLS8vIFRlc3RzIEdQVSB0aW1lc3Rh
bXAgZnVuY3Rpb25hbGl0eQotVEVTVF9QKFRpbWVyUXVlcmllc1Rlc3QsIFRpbWVzdGFtcCkKLXsK
LSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeSIp
KQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9F
WFRfZGlzam9pbnRfdGltZXJfcXVlcnkgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAg
ICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTGludCBx
dWVyeVRpbWVzdGFtcEJpdHMgPSAwOwotICAgIGdsR2V0UXVlcnlpdkVYVChHTF9USU1FU1RBTVBf
RVhULCBHTF9RVUVSWV9DT1VOVEVSX0JJVFNfRVhULCAmcXVlcnlUaW1lc3RhbXBCaXRzKTsKLSAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIHN0ZDo6Y291dCA8PCAiVGltZXN0YW1wIGNv
dW50ZXIgYml0czogIiA8PCBxdWVyeVRpbWVzdGFtcEJpdHMgPDwgc3RkOjplbmRsOwotCi0gICAg
Ly8gTWFjcyBmb3Igc29tZSByZWFzb24gcmV0dXJuIDAgYml0cyBzbyBza2lwIHRoZSB0ZXN0IGZv
ciBub3cgaWYgZWl0aGVyIGFyZSAwCi0gICAgaWYgKHF1ZXJ5VGltZXN0YW1wQml0cyA9PSAwKQot
ICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBvZiAwIGNv
dW50ZXIgYml0cyIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Z2xEZXB0aE1hc2soR0xfVFJVRSk7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwg
R0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7Ci0KLSAgICBHTHVp
bnQgcXVlcnkxID0gMDsKLSAgICBHTHVpbnQgcXVlcnkyID0gMDsKLSAgICBnbEdlblF1ZXJpZXNF
WFQoMSwgJnF1ZXJ5MSk7Ci0gICAgZ2xHZW5RdWVyaWVzRVhUKDEsICZxdWVyeTIpOwotICAgIGds
UXVlcnlDb3VudGVyRVhUKHF1ZXJ5MSwgR0xfVElNRVNUQU1QX0VYVCk7Ci0gICAgZHJhd1F1YWQo
bVByb2dyYW0sICJwb3NpdGlvbiIsIDAuOGYpOwotICAgIGdsUXVlcnlDb3VudGVyRVhUKHF1ZXJ5
MiwgR0xfVElNRVNUQU1QX0VYVCk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAg
IHN3YXBCdWZmZXJzKCk7Ci0KLSAgICBpbnQgdGltZW91dCAgPSAyMDAwMDA7Ci0gICAgR0x1aW50
IHJlYWR5ID0gR0xfRkFMU0U7Ci0gICAgd2hpbGUgKHJlYWR5ID09IEdMX0ZBTFNFICYmIHRpbWVv
dXQgPiAwKQotICAgIHsKLSAgICAgICAgYW5nbGU6OlNsZWVwKDApOwotICAgICAgICBnbEdldFF1
ZXJ5T2JqZWN0dWl2RVhUKHF1ZXJ5MSwgR0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9FWFQsICZy
ZWFkeSk7Ci0gICAgICAgIHRpbWVvdXQtLTsKLSAgICB9Ci0gICAgcmVhZHkgPSBHTF9GQUxTRTsK
LSAgICB3aGlsZSAocmVhZHkgPT0gR0xfRkFMU0UgJiYgdGltZW91dCA+IDApCi0gICAgewotICAg
ICAgICBhbmdsZTo6U2xlZXAoMCk7Ci0gICAgICAgIGdsR2V0UXVlcnlPYmplY3R1aXZFWFQocXVl
cnkyLCBHTF9RVUVSWV9SRVNVTFRfQVZBSUxBQkxFX0VYVCwgJnJlYWR5KTsKLSAgICAgICAgdGlt
ZW91dC0tOwotICAgIH0KLSAgICBBU1NFUlRfTFQoMCwgdGltZW91dCkgPDwgIlF1ZXJ5IHJlc3Vs
dCBhdmFpbGFibGUgdGltZWQgb3V0IiA8PCBzdGQ6OmVuZGw7Ci0KLSAgICBHTHVpbnQ2NCByZXN1
bHQxID0gMDsKLSAgICBHTHVpbnQ2NCByZXN1bHQyID0gMDsKLSAgICBnbEdldFF1ZXJ5T2JqZWN0
dWk2NHZFWFQocXVlcnkxLCBHTF9RVUVSWV9SRVNVTFRfRVhULCAmcmVzdWx0MSk7Ci0gICAgZ2xH
ZXRRdWVyeU9iamVjdHVpNjR2RVhUKHF1ZXJ5MiwgR0xfUVVFUllfUkVTVUxUX0VYVCwgJnJlc3Vs
dDIpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbERlbGV0ZVF1ZXJpZXNF
WFQoMSwgJnF1ZXJ5MSk7Ci0gICAgZ2xEZWxldGVRdWVyaWVzRVhUKDEsICZxdWVyeTIpOwotCi0g
ICAgc3RkOjpjb3V0IDw8ICJUaW1lc3RhbXBzOiAiIDw8IHJlc3VsdDEgPDwgIiAiIDw8IHJlc3Vs
dDIgPDwgc3RkOjplbmRsOwotICAgIEVYUEVDVF9MVCgwdWwsIHJlc3VsdDEpOwotICAgIEVYUEVD
VF9MVCgwdWwsIHJlc3VsdDIpOwotICAgIEVYUEVDVF9MVChyZXN1bHQxLCByZXN1bHQyKTsKLX0K
LQotY2xhc3MgVGltZXJRdWVyaWVzVGVzdEVTMyA6IHB1YmxpYyBUaW1lclF1ZXJpZXNUZXN0Ci17
Ci19OwotCi0vLyBUZXN0cyBnZXR0aW5nIHRpbWVzdGFtcHMgdmlhIGdsR2V0SW50ZWdlcjY0dgot
VEVTVF9QKFRpbWVyUXVlcmllc1Rlc3RFUzMsIFRpbWVzdGFtcEdldEludGVnZXI2NCkKLXsKLSAg
ICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeSIpKQot
ICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9FWFRf
ZGlzam9pbnRfdGltZXJfcXVlcnkgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAg
ICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTGludCBxdWVy
eVRpbWVzdGFtcEJpdHMgPSAwOwotICAgIGdsR2V0UXVlcnlpdkVYVChHTF9USU1FU1RBTVBfRVhU
LCBHTF9RVUVSWV9DT1VOVEVSX0JJVFNfRVhULCAmcXVlcnlUaW1lc3RhbXBCaXRzKTsKLSAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIHN0ZDo6Y291dCA8PCAiVGltZXN0YW1wIGNvdW50
ZXIgYml0czogIiA8PCBxdWVyeVRpbWVzdGFtcEJpdHMgPDwgc3RkOjplbmRsOwotCi0gICAgaWYg
KHF1ZXJ5VGltZXN0YW1wQml0cyA9PSAwKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IHNraXBwZWQgYmVjYXVzZSBvZiAwIGNvdW50ZXIgYml0cyIgPDwgc3RkOjplbmRsOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZ2xEZXB0aE1hc2soR0xfVFJVRSk7Ci0gICAgZ2xD
bGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5D
SUxfQlVGRkVSX0JJVCk7Ci0KLSAgICBHTGludDY0IHJlc3VsdDEgPSAwOwotICAgIEdMaW50NjQg
cmVzdWx0MiA9IDA7Ci0gICAgZ2xHZXRJbnRlZ2VyNjR2KEdMX1RJTUVTVEFNUF9FWFQsICZyZXN1
bHQxKTsKLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC44Zik7Ci0gICAgZ2xH
ZXRJbnRlZ2VyNjR2KEdMX1RJTUVTVEFNUF9FWFQsICZyZXN1bHQyKTsKLSAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKLSAgICBzdGQ6OmNvdXQgPDwgIlRpbWVzdGFtcHMgKGdldEludGVnZXI2NHYp
OiAiIDw8IHJlc3VsdDEgPDwgIiAiIDw8IHJlc3VsdDIgPDwgc3RkOjplbmRsOwotICAgIEVYUEVD
VF9MVCgwbCwgcmVzdWx0MSk7Ci0gICAgRVhQRUNUX0xUKDBsLCByZXN1bHQyKTsKLSAgICBFWFBF
Q1RfTFQocmVzdWx0MSwgcmVzdWx0Mik7Ci19Ci0KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVGlt
ZXJRdWVyaWVzVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVT
M19EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSk7Ci0KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1Qo
VGltZXJRdWVyaWVzVGVzdEVTMywgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL1RyYW5zZm9ybUZlZWRiYWNrVGVzdC5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVHJhbnNmb3JtRmVlZGJhY2tUZXN0LmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjg3YjRjODAwNTk4MThkNzY0ZGFjYmI2
MzI2NWNlNzA5MzRlZTQ2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVHJhbnNm
b3JtRmVlZGJhY2tUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3NCArMCwwIEBACi0vLwot
Ly8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
Ci0vLwotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLSNpbmNsdWRlICJyYW5k
b21fdXRpbHMuaCIKLSNpbmNsdWRlICJWZWN0b3IuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xl
OwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3MgVHJhbnNmb3JtRmVlZGJhY2tUZXN0IDogcHVibGlj
IEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgVHJhbnNmb3JtRmVlZGJhY2tUZXN0KCkK
LSAgICAgICAgOiBtUHJvZ3JhbSgwKSwKLSAgICAgICAgICBtVHJhbnNmb3JtRmVlZGJhY2tCdWZm
ZXIoMCksCi0gICAgICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrKDApCi0gICAgewotICAgICAgICBz
ZXRXaW5kb3dXaWR0aCgxMjgpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKLSAgICAg
ICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwot
ICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRz
KDgpOwotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAg
QU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGdsR2VuQnVmZmVycygxLCAmbVRyYW5zZm9y
bUZlZWRiYWNrQnVmZmVyKTsKLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX1RSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVIsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7Ci0gICAgICAgIGdsQnVmZmVy
RGF0YShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBtVHJhbnNmb3JtRmVlZGJhY2tCdWZm
ZXJTaXplLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgR0xfU1RBVElDX0RSQVcpOwotCi0g
ICAgICAgIGdsR2VuVHJhbnNmb3JtRmVlZGJhY2tzKDEsICZtVHJhbnNmb3JtRmVlZGJhY2spOwot
Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRv
d24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKG1Qcm9ncmFtICE9IDApCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgICAgICAgICBt
UHJvZ3JhbSA9IDA7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobVRyYW5zZm9ybUZlZWRiYWNr
QnVmZmVyICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAm
bVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKLSAgICAgICAgICAgIG1UcmFuc2Zvcm1GZWVkYmFj
a0J1ZmZlciA9IDA7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobVRyYW5zZm9ybUZlZWRiYWNr
ICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsRGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tz
KDEsICZtVHJhbnNmb3JtRmVlZGJhY2spOwotICAgICAgICAgICAgbVRyYW5zZm9ybUZlZWRiYWNr
ID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAgICB9
Ci0KLSAgICB2b2lkIGNvbXBpbGVEZWZhdWx0UHJvZ3JhbShjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gJnRmVmFyeWluZ3MsIEdMZW51bSBidWZmZXJNb2RlKQotICAgIHsKLSAgICAgICAg
QVNTRVJUX0VRKDB1LCBtUHJvZ3JhbSk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVy
dGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBw
cmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0gICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlv
bjsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAgICAgICAgfQotICAgICAgICApOwot
Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hBREVS
X1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0K
LSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Z2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOwotICAgICAgICAgICAgfQot
ICAgICAgICApOwotCi0gICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW1XaXRoVHJhbnNm
b3JtRmVlZGJhY2sodmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZlZh
cnlpbmdzLCBidWZmZXJNb2RlKTsKLSAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7Ci0g
ICAgfQotCi0gICAgR0x1aW50IG1Qcm9ncmFtOwotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBt
VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJTaXplID0gMSA8PCAyNDsKLSAgICBHTHVpbnQgbVRyYW5z
Zm9ybUZlZWRiYWNrQnVmZmVyOwotICAgIEdMdWludCBtVHJhbnNmb3JtRmVlZGJhY2s7Ci19Owot
Ci1URVNUX1AoVHJhbnNmb3JtRmVlZGJhY2tUZXN0LCBaZXJvU2l6ZWRWaWV3cG9ydCkKLXsKLSAg
ICAvLyBTZXQgdGhlIHByb2dyYW0ncyB0cmFuc2Zvcm0gZmVlZGJhY2sgdmFyeWluZ3MgKGp1c3Qg
Z2xfUG9zaXRpb24pCi0gICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRmVmFyeWluZ3M7Ci0g
ICAgdGZWYXJ5aW5ncy5wdXNoX2JhY2soImdsX1Bvc2l0aW9uIik7Ci0gICAgY29tcGlsZURlZmF1
bHRQcm9ncmFtKHRmVmFyeWluZ3MsIEdMX0lOVEVSTEVBVkVEX0FUVFJJQlMpOwotCi0gICAgZ2xV
c2VQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgIC8vIEJpbmQgdGhlIGJ1ZmZlciBmb3IgdHJhbnNm
b3JtIGZlZWRiYWNrIG91dHB1dCBhbmQgc3RhcnQgdHJhbnNmb3JtIGZlZWRiYWNrCi0gICAgZ2xC
aW5kQnVmZmVyQmFzZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBtVHJhbnNmb3Jt
RmVlZGJhY2tCdWZmZXIpOwotICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTF9UUklBTkdM
RVMpOwotCi0gICAgLy8gQ3JlYXRlIGEgcXVlcnkgdG8gY2hlY2sgaG93IG1hbnkgcHJpbWl0aXZl
cyB3ZXJlIHdyaXR0ZW4KLSAgICBHTHVpbnQgcHJpbWl0aXZlc1dyaXR0ZW5RdWVyeSA9IDA7Ci0g
ICAgZ2xHZW5RdWVyaWVzKDEsICZwcmltaXRpdmVzV3JpdHRlblF1ZXJ5KTsKLSAgICBnbEJlZ2lu
UXVlcnkoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTiwgcHJpbWl0aXZl
c1dyaXR0ZW5RdWVyeSk7Ci0KLSAgICAvLyBTZXQgYSB2aWV3cG9ydCB0aGF0IHdvdWxkIHJlc3Vs
dCBpbiBubyBwaXhlbHMgYmVpbmcgd3JpdHRlbiB0byB0aGUgZnJhbWVidWZmZXIgYW5kIGRyYXcK
LSAgICAvLyBhIHF1YWQKLSAgICBnbFZpZXdwb3J0KDAsIDAsIDAsIDApOwotCi0gICAgZHJhd1F1
YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgLy8gRW5kIHRoZSBxdWVyeSBh
bmQgdHJhbnNmb3JtIGZlZWRrYmFjawotICAgIGdsRW5kUXVlcnkoR0xfVFJBTlNGT1JNX0ZFRURC
QUNLX1BSSU1JVElWRVNfV1JJVFRFTik7Ci0gICAgZ2xFbmRUcmFuc2Zvcm1GZWVkYmFjaygpOwot
Ci0gICAgZ2xVc2VQcm9ncmFtKDApOwotCi0gICAgLy8gQ2hlY2sgaG93IG1hbnkgcHJpbWl0aXZl
cyB3ZXJlIHdyaXR0ZW4gYW5kIHZlcmlmeSB0aGF0IHNvbWUgd2VyZSB3cml0dGVuIGV2ZW4gaWYK
LSAgICAvLyBubyBwaXhlbHMgd2VyZSByZW5kZXJlZAotICAgIEdMdWludCBwcmltaXRpdmVzV3Jp
dHRlbiA9IDA7Ci0gICAgZ2xHZXRRdWVyeU9iamVjdHVpdihwcmltaXRpdmVzV3JpdHRlblF1ZXJ5
LCBHTF9RVUVSWV9SRVNVTFRfRVhULCAmcHJpbWl0aXZlc1dyaXR0ZW4pOwotICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotCi0gICAgRVhQRUNUX0VRKDJ1LCBwcmltaXRpdmVzV3JpdHRlbik7Ci19
Ci0KLS8vIFRlc3QgdGhhdCByZWJpbmRpbmcgYSBidWZmZXIgd2l0aCB0aGUgc2FtZSBvZmZzZXQg
cmVzZXRzIHRoZSBvZmZzZXQgKG5vIGxvbmdlciBhcHBlbmRpbmcgZnJvbSB0aGUKLS8vIG9sZCBw
b3NpdGlvbikKLVRFU1RfUChUcmFuc2Zvcm1GZWVkYmFja1Rlc3QsIEJ1ZmZlclJlYmluZGluZykK
LXsKLSAgICBnbERpc2FibGUoR0xfREVQVEhfVEVTVCk7Ci0KLSAgICAvLyBTZXQgdGhlIHByb2dy
YW0ncyB0cmFuc2Zvcm0gZmVlZGJhY2sgdmFyeWluZ3MgKGp1c3QgZ2xfUG9zaXRpb24pCi0gICAg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRmVmFyeWluZ3M7Ci0gICAgdGZWYXJ5aW5ncy5wdXNo
X2JhY2soImdsX1Bvc2l0aW9uIik7Ci0gICAgY29tcGlsZURlZmF1bHRQcm9ncmFtKHRmVmFyeWlu
Z3MsIEdMX0lOVEVSTEVBVkVEX0FUVFJJQlMpOwotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFt
KTsKLQotICAgIC8vIE1ha2Ugc3VyZSB0aGUgYnVmZmVyIGhhcyB6ZXJvJ2QgZGF0YQotICAgIHN0
ZDo6dmVjdG9yPGZsb2F0PiBkYXRhKG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlclNpemUgLyBzaXpl
b2YoZmxvYXQpLCAwLjBmKTsKLSAgICBnbEJpbmRCdWZmZXIoR0xfVFJBTlNGT1JNX0ZFRURCQUNL
X0JVRkZFUiwgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKLSAgICBnbEJ1ZmZlckRhdGEoR0xf
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyU2l6ZSwg
ZGF0YS5kYXRhKCksCi0gICAgICAgICAgICAgICAgIEdMX1NUQVRJQ19EUkFXKTsKLQotCi0gICAg
Ly8gQ3JlYXRlIGEgcXVlcnkgdG8gY2hlY2sgaG93IG1hbnkgcHJpbWl0aXZlcyB3ZXJlIHdyaXR0
ZW4KLSAgICBHTHVpbnQgcHJpbWl0aXZlc1dyaXR0ZW5RdWVyeSA9IDA7Ci0gICAgZ2xHZW5RdWVy
aWVzKDEsICZwcmltaXRpdmVzV3JpdHRlblF1ZXJ5KTsKLSAgICBnbEJlZ2luUXVlcnkoR0xfVFJB
TlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTiwgcHJpbWl0aXZlc1dyaXR0ZW5RdWVy
eSk7Ci0KLSAgICBjb25zdCBmbG9hdCBmaW5hbFogPSAwLjk1ZjsKLQotICAgIFJORyBybmc7Ci0K
LSAgICBjb25zdCBzaXplX3QgbG9vcENvdW50ID0gNjQ7Ci0gICAgZm9yIChzaXplX3QgbG9vcElk
eCA9IDA7IGxvb3BJZHggPCBsb29wQ291bnQ7IGxvb3BJZHgrKykKLSAgICB7Ci0gICAgICAgIC8v
IEJpbmQgdGhlIGJ1ZmZlciBmb3IgdHJhbnNmb3JtIGZlZWRiYWNrIG91dHB1dCBhbmQgc3RhcnQg
dHJhbnNmb3JtIGZlZWRiYWNrCi0gICAgICAgIGdsQmluZEJ1ZmZlckJhc2UoR0xfVFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUiwgMCwgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKLSAgICAgICAg
Z2xCZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdMX1RSSUFOR0xFUyk7Ci0KLSAgICAgICAgZmxvYXQg
eiA9IChsb29wSWR4ICsgMSA9PSBsb29wQ291bnQpID8gZmluYWxaIDogcm5nLnJhbmRvbUZsb2F0
QmV0d2VlbigwLjFmLCAwLjVmKTsKLSAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlv
biIsIHopOwotCi0gICAgICAgIGdsRW5kVHJhbnNmb3JtRmVlZGJhY2soKTsKLSAgICB9Ci0KLSAg
ICAvLyBFbmQgdGhlIHF1ZXJ5IGFuZCB0cmFuc2Zvcm0gZmVlZGJhY2sKLSAgICBnbEVuZFF1ZXJ5
KEdMX1RSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU4pOwotCi0gICAgZ2xVc2VQ
cm9ncmFtKDApOwotCi0gICAgLy8gQ2hlY2sgaG93IG1hbnkgcHJpbWl0aXZlcyB3ZXJlIHdyaXR0
ZW4gYW5kIHZlcmlmeSB0aGF0IHNvbWUgd2VyZSB3cml0dGVuIGV2ZW4gaWYKLSAgICAvLyBubyBw
aXhlbHMgd2VyZSByZW5kZXJlZAotICAgIEdMdWludCBwcmltaXRpdmVzV3JpdHRlbiA9IDA7Ci0g
ICAgZ2xHZXRRdWVyeU9iamVjdHVpdihwcmltaXRpdmVzV3JpdHRlblF1ZXJ5LCBHTF9RVUVSWV9S
RVNVTFRfRVhULCAmcHJpbWl0aXZlc1dyaXR0ZW4pOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OwotCi0gICAgRVhQRUNUX0VRKGxvb3BDb3VudCAqIDIsIHByaW1pdGl2ZXNXcml0dGVuKTsKLQot
ICAgIC8vIENoZWNrIHRoZSBidWZmZXIgZGF0YQotICAgIGNvbnN0IGZsb2F0ICpidWZmZXJEYXRh
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQgKj4oZ2xNYXBCdWZmZXJSYW5nZSgKLSAgICAgICAgR0xfVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyU2l6ZSwg
R0xfTUFQX1JFQURfQklUKSk7Ci0KLSAgICBmb3IgKHNpemVfdCB2ZXJ0ZXhJZHggPSAwOyB2ZXJ0
ZXhJZHggPCA2OyB2ZXJ0ZXhJZHgrKykKLSAgICB7Ci0gICAgICAgIC8vIENoZWNrIHRoZSB0aGly
ZCAoWikgY29tcG9uZW50IG9mIGVhY2ggdmVydGV4IHdyaXR0ZW4gYW5kIG1ha2Ugc3VyZSBpdCBo
YXMgdGhlIGZpbmFsCi0gICAgICAgIC8vIHZhbHVlCi0gICAgICAgIEVYUEVDVF9ORUFSKGZpbmFs
WiwgYnVmZmVyRGF0YVt2ZXJ0ZXhJZHggKiA0ICsgMl0sIDAuMDAwMSk7Ci0gICAgfQotCi0gICAg
Zm9yIChzaXplX3QgZGF0YUlkeCA9IDI0OyBkYXRhSWR4IDwgbVRyYW5zZm9ybUZlZWRiYWNrQnVm
ZmVyU2l6ZSAvIHNpemVvZihmbG9hdCk7IGRhdGFJZHgrKykKLSAgICB7Ci0gICAgICAgIEVYUEVD
VF9FUShkYXRhW2RhdGFJZHhdLCBidWZmZXJEYXRhW2RhdGFJZHhdKSA8PCAiQnVmZmVyIG92ZXJy
dW4gZGV0ZWN0ZWQuIjsKLSAgICB9Ci0KLSAgICBnbFVubWFwQnVmZmVyKEdMX1RSQU5TRk9STV9G
RUVEQkFDS19CVUZGRVIpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRl
c3QgdGhhdCBYRkIgY2FuIHdyaXRlIGJhY2sgdmVydGljZXMgdG8gYSBidWZmZXIgYW5kIHRoYXQg
d2UgY2FuIGRyYXcgZnJvbSB0aGlzIGJ1ZmZlciBhZnRlcndhcmQuCi1URVNUX1AoVHJhbnNmb3Jt
RmVlZGJhY2tUZXN0LCBSZWNvcmRBbmREcmF3KQotewotICAgIC8vIFRPRE8oam1hZGlsbCk6IEZp
Z3VyZSBvdXQgd2h5IHRoaXMgZmFpbHMgb24gSW50ZWwuCi0gICAgaWYgKElzSW50ZWwoKSAmJiBH
ZXRQYXJhbSgpLmdldFJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFf
QU5HTEUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRl
bC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsQ2xlYXJD
b2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZF
Ul9CSVQpOwotCi0gICAgLy8gU2V0IHRoZSBwcm9ncmFtJ3MgdHJhbnNmb3JtIGZlZWRiYWNrIHZh
cnlpbmdzIChqdXN0IGdsX1Bvc2l0aW9uKQotICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB0
ZlZhcnlpbmdzOwotICAgIHRmVmFyeWluZ3MucHVzaF9iYWNrKCJnbF9Qb3NpdGlvbiIpOwotICAg
IGNvbXBpbGVEZWZhdWx0UHJvZ3JhbSh0ZlZhcnlpbmdzLCBHTF9JTlRFUkxFQVZFRF9BVFRSSUJT
KTsKLQotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICBHTGludCBwb3NpdGlvbkxv
Y2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInBvc2l0aW9uIik7Ci0KLSAg
ICAvLyBGaXJzdCBwYXNzOiBkcmF3IDYgcG9pbnRzIHRvIHRoZSBYRkIgYnVmZmVyCi0gICAgZ2xF
bmFibGUoR0xfUkFTVEVSSVpFUl9ESVNDQVJEKTsKLQotICAgIGNvbnN0IEdMZmxvYXQgdmVydGlj
ZXNbXSA9Ci0gICAgewotICAgICAgICAtMS4wZiwgIDEuMGYsIDAuNWYsCi0gICAgICAgIC0xLjBm
LCAtMS4wZiwgMC41ZiwKLSAgICAgICAgIDEuMGYsIC0xLjBmLCAwLjVmLAotCi0gICAgICAgIC0x
LjBmLCAgMS4wZiwgMC41ZiwKLSAgICAgICAgIDEuMGYsIC0xLjBmLCAwLjVmLAotICAgICAgICAg
MS4wZiwgIDEuMGYsIDAuNWYsCi0gICAgfTsKLQotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihw
b3NpdGlvbkxvY2F0aW9uLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHZlcnRpY2VzKTsKLSAg
ICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOwotCi0gICAgLy8g
QmluZCB0aGUgYnVmZmVyIGZvciB0cmFuc2Zvcm0gZmVlZGJhY2sgb3V0cHV0IGFuZCBzdGFydCB0
cmFuc2Zvcm0gZmVlZGJhY2sKLSAgICBnbEJpbmRCdWZmZXJCYXNlKEdMX1RSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVIsIDAsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7Ci0gICAgZ2xCZWdpblRy
YW5zZm9ybUZlZWRiYWNrKEdMX1BPSU5UUyk7Ci0KLSAgICAvLyBDcmVhdGUgYSBxdWVyeSB0byBj
aGVjayBob3cgbWFueSBwcmltaXRpdmVzIHdlcmUgd3JpdHRlbgotICAgIEdMdWludCBwcmltaXRp
dmVzV3JpdHRlblF1ZXJ5ID0gMDsKLSAgICBnbEdlblF1ZXJpZXMoMSwgJnByaW1pdGl2ZXNXcml0
dGVuUXVlcnkpOwotICAgIGdsQmVnaW5RdWVyeShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlU
SVZFU19XUklUVEVOLCBwcmltaXRpdmVzV3JpdHRlblF1ZXJ5KTsKLQotICAgIGdsRHJhd0FycmF5
cyhHTF9QT0lOVFMsIDAsIDYpOwotCi0gICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkocG9z
aXRpb25Mb2NhdGlvbik7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRp
b24sIDQsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgTlVMTCk7Ci0gICAgLy8gRW5kIHRoZSBxdWVy
eSBhbmQgdHJhbnNmb3JtIGZlZWRrYmFjawotICAgIGdsRW5kUXVlcnkoR0xfVFJBTlNGT1JNX0ZF
RURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTik7Ci0gICAgZ2xFbmRUcmFuc2Zvcm1GZWVkYmFjaygp
OwotCi0gICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAw
LCAwKTsKLQotICAgIGdsRGlzYWJsZShHTF9SQVNURVJJWkVSX0RJU0NBUkQpOwotCi0gICAgLy8g
Q2hlY2sgaG93IG1hbnkgcHJpbWl0aXZlcyB3ZXJlIHdyaXR0ZW4gYW5kIHZlcmlmeSB0aGF0IHNv
bWUgd2VyZSB3cml0dGVuIGV2ZW4gaWYKLSAgICAvLyBubyBwaXhlbHMgd2VyZSByZW5kZXJlZAot
ICAgIEdMdWludCBwcmltaXRpdmVzV3JpdHRlbiA9IDA7Ci0gICAgZ2xHZXRRdWVyeU9iamVjdHVp
dihwcmltaXRpdmVzV3JpdHRlblF1ZXJ5LCBHTF9RVUVSWV9SRVNVTFRfRVhULCAmcHJpbWl0aXZl
c1dyaXR0ZW4pOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgRVhQRUNUX0VRKDZ1
LCBwcmltaXRpdmVzV3JpdHRlbik7Ci0KLSAgICAvLyBOb3RoaW5nIHNob3VsZCBoYXZlIGJlZW4g
ZHJhd24gdG8gdGhlIGZyYW1lYnVmZmVyCi0gICAgRVhQRUNUX1BJWEVMX0VRKGdldFdpbmRvd1dp
ZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDAsIDAsIDAsIDApOwotCi0gICAgLy8g
U2Vjb25kIHBhc3M6IGRyYXcgZnJvbSB0aGUgZmVlZGJhY2sgYnVmZmVyCi0KLSAgICBnbEJpbmRC
dWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIpOwotICAgIGds
VmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCA0LCBHTF9GTE9BVCwgR0xfRkFM
U0UsIDAsIDApOwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlv
bik7Ci0KLSAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCA2KTsKLQotICAgIEVYUEVD
VF9QSVhFTF9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCAy
NTUsICAgMCwgICAwLCAyNTUpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBU
ZXN0IHRoYXQgYnVmZmVyIGJpbmRpbmcgaGFwcGVucyBvbmx5IG9uIHRoZSBjdXJyZW50IHRyYW5z
Zm9ybSBmZWVkYmFjayBvYmplY3QKLVRFU1RfUChUcmFuc2Zvcm1GZWVkYmFja1Rlc3QsIEJ1ZmZl
ckJpbmRpbmcpCi17Ci0gICAgLy8gUmVzZXQgYW55IHN0YXRlCi0gICAgZ2xCaW5kVHJhbnNmb3Jt
RmVlZGJhY2soR0xfVFJBTlNGT1JNX0ZFRURCQUNLLCAwKTsKLSAgICBnbEJpbmRCdWZmZXIoR0xf
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCk7Ci0KLSAgICAvLyBHZW5lcmF0ZSBhIG5ldyBi
dWZmZXIKLSAgICBHTHVpbnQgc2NyYXRjaEJ1ZmZlciA9IDA7Ci0gICAgZ2xHZW5CdWZmZXJzKDEs
ICZzY3JhdGNoQnVmZmVyKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8g
QmluZCBURiAwIGFuZCBhIGJ1ZmZlcgotICAgIGdsQmluZFRyYW5zZm9ybUZlZWRiYWNrKEdMX1RS
QU5TRk9STV9GRUVEQkFDSywgMCk7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX1RSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVIsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7Ci0KLSAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKLQotICAgIC8vIENoZWNrIHRoYXQgdGhlIGJ1ZmZlciBJRCBtYXRjaGVzIHRo
ZSBvbmUgdGhhdCB3YXMganVzdCBib3VuZAotICAgIEdMaW50IGN1cnJlbnRCdWZmZXJCaW5kaW5n
ID0gMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklO
RElORywgJmN1cnJlbnRCdWZmZXJCaW5kaW5nKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8
R0x1aW50PihjdXJyZW50QnVmZmVyQmluZGluZyksIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7
Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIENoZWNrIHRoYXQgdGhlIGJ1
ZmZlciBJRCBmb3IgdGhlIG5ld2x5IGJvdW5kIHRyYW5zZm9ybSBmZWVkYmFjayBpcyB6ZXJvCi0g
ICAgZ2xCaW5kVHJhbnNmb3JtRmVlZGJhY2soR0xfVFJBTlNGT1JNX0ZFRURCQUNLLCBtVHJhbnNm
b3JtRmVlZGJhY2spOwotCi0gICAgZ2xHZXRJbnRlZ2VydihHTF9UUkFOU0ZPUk1fRkVFREJBQ0tf
QlVGRkVSX0JJTkRJTkcsICZjdXJyZW50QnVmZmVyQmluZGluZyk7Ci0gICAgRVhQRUNUX0VRKDAs
IGN1cnJlbnRCdWZmZXJCaW5kaW5nKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0g
ICAgLy8gQmluZCBhIGJ1ZmZlciB0byB0aGlzIFRGCi0gICAgZ2xCaW5kQnVmZmVyUmFuZ2UoR0xf
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgc2NyYXRjaEJ1ZmZlciwgMCwgMzIpOwotCi0g
ICAgZ2xHZXRJbnRlZ2VyaV92KEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORywg
MCwgJmN1cnJlbnRCdWZmZXJCaW5kaW5nKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0x1
aW50PihjdXJyZW50QnVmZmVyQmluZGluZyksIHNjcmF0Y2hCdWZmZXIpOwotCi0gICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBSZWJpbmQgdGhlIG9yaWdpbmFsIFRGIGFuZCBjaGVj
ayBpdCdzIGJpbmRpbmdzCi0gICAgZ2xCaW5kVHJhbnNmb3JtRmVlZGJhY2soR0xfVFJBTlNGT1JN
X0ZFRURCQUNLLCAwKTsKLQotICAgIGdsR2V0SW50ZWdlcmlfdihHTF9UUkFOU0ZPUk1fRkVFREJB
Q0tfQlVGRkVSX0JJTkRJTkcsIDAsICZjdXJyZW50QnVmZmVyQmluZGluZyk7Ci0gICAgRVhQRUNU
X0VRKDAsIGN1cnJlbnRCdWZmZXJCaW5kaW5nKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OwotCi0gICAgLy8gQ2xlYW4gdXAKLSAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJnNjcmF0Y2hCdWZm
ZXIpOwotfQotCi0vLyBUZXN0IHRoYXQgd2UgY2FuIGNhcHR1cmUgdmFyeWluZ3Mgb25seSB1c2Vk
IGluIHRoZSB2ZXJ0ZXggc2hhZGVyLgotVEVTVF9QKFRyYW5zZm9ybUZlZWRiYWNrVGVzdCwgVmVy
dGV4T25seSkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U2hhZGVyU291cmNlID0K
LSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAiaW4gdmVjMiBwb3NpdGlvbjtc
biIKLSAgICAgICAgImluIGZsb2F0IGF0dHJpYjtcbiIKLSAgICAgICAgIm91dCBmbG9hdCB2YXJ5
aW5nQXR0cmliO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBnbF9Q
b3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAsIDEpO1xuIgotICAgICAgICAiICB2YXJ5aW5nQXR0
cmliID0gYXR0cmliO1xuIgotICAgICAgICAifSI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAm
ZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAg
ICAgICJvdXQgbWVkaXVtcCB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xu
IgotICAgICAgICAiICBjb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTtcbiIKLSAgICAg
ICAgIn0iOwotCi0gICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRmVmFyeWluZ3M7Ci0gICAg
dGZWYXJ5aW5ncy5wdXNoX2JhY2soInZhcnlpbmdBdHRyaWIiKTsKLQotICAgIG1Qcm9ncmFtID0g
Q29tcGlsZVByb2dyYW1XaXRoVHJhbnNmb3JtRmVlZGJhY2sodmVydGV4U2hhZGVyU291cmNlLCBm
cmFnbWVudFNoYWRlclNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRmVmFyeWluZ3MsIEdMX0lOVEVSTEVBVkVEX0FUVFJJQlMpOwotICAg
IEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsK
LQotICAgIGdsQmluZFRyYW5zZm9ybUZlZWRiYWNrKEdMX1RSQU5TRk9STV9GRUVEQkFDSywgbVRy
YW5zZm9ybUZlZWRiYWNrKTsKLSAgICBnbEJpbmRCdWZmZXJCYXNlKEdMX1RSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVIsIDAsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7Ci0KLSAgICBzdGQ6OnZl
Y3RvcjxmbG9hdD4gYXR0cmliRGF0YTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBjbnQgPSAwOyBj
bnQgPCAxMDA7ICsrY250KQotICAgIHsKLSAgICAgICAgYXR0cmliRGF0YS5wdXNoX2JhY2soc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGNudCkpOwotICAgIH0KLQotICAgIEdMaW50IGF0dHJpYkxvY2F0aW9u
ID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImF0dHJpYiIpOwotICAgIEFTU0VSVF9O
RSgtMSwgYXR0cmliTG9jYXRpb24pOwotCi0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGF0dHJp
YkxvY2F0aW9uLCAxLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDQsICZhdHRyaWJEYXRhWzBdKTsKLSAg
ICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGF0dHJpYkxvY2F0aW9uKTsKLQotICAgIGdsQmVn
aW5UcmFuc2Zvcm1GZWVkYmFjayhHTF9UUklBTkdMRVMpOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFt
LCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBnbEVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7Ci0gICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFVzZVByb2dyYW0oMCk7Ci0KLSAgICBHTHZv
aWQgKm1hcHBlZEJ1ZmZlciA9Ci0gICAgICAgIGdsTWFwQnVmZmVyUmFuZ2UoR0xfVFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUiwgMCwgc2l6ZW9mKGZsb2F0KSAqIDYsIEdMX01BUF9SRUFEX0JJVCk7
Ci0gICAgQVNTRVJUX05FKG51bGxwdHIsIG1hcHBlZEJ1ZmZlcik7Ci0KLSAgICBmbG9hdCAqbWFw
cGVkRmxvYXRzID0gc3RhdGljX2Nhc3Q8ZmxvYXQgKj4obWFwcGVkQnVmZmVyKTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGludCBjbnQgPSAwOyBjbnQgPCA2OyArK2NudCkKLSAgICB7Ci0gICAgICAgIEVY
UEVDVF9FUShhdHRyaWJEYXRhW2NudF0sIG1hcHBlZEZsb2F0c1tjbnRdKTsKLSAgICB9Ci0KLSAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCB0aGF0IG11bHRpcGxlIHBhdXNl
ZCB0cmFuc2Zvcm0gZmVlZGJhY2tzIGRvIG5vdCBnZW5lcmF0ZSBlcnJvcnMgb3IgY3Jhc2gKLVRF
U1RfUChUcmFuc2Zvcm1GZWVkYmFja1Rlc3QsIE11bHRpcGxlUGF1c2VkKQotewotICAgIGNvbnN0
IHNpemVfdCBkcmF3U2l6ZSA9IDEwMjQ7Ci0gICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHRyYW5zZm9y
bUZlZWRiYWNrRGF0YShkcmF3U2l6ZSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkcmF3
U2l6ZTsgaSsrKQotICAgIHsKLSAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2tEYXRhW2ldID0gc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGkgKyAxKTsKLSAgICB9Ci0KLSAgICAvLyBJbml0aWFsaXplIHRoZSBi
dWZmZXJzIHRvIHplcm8KLSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IGRyYXdTaXplOwotICAgIHN0
ZDo6dmVjdG9yPGZsb2F0PiBidWZmZXJJbml0aWFsRGF0YShidWZmZXJTaXplLCAwKTsKLQotICAg
IGNvbnN0IHNpemVfdCB0cmFuc2Zvcm1GZWVkYmFja0NvdW50ID0gODsKLQotICAgIC8vIGNsYW5n
LWZvcm1hdCBvZmYKLSAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBT
SEFERVJfU09VUkNFCi0gICAgKCAgI3ZlcnNpb24gMzAwIGVzXG4KLSAgICAgICBpbiBoaWdocCB2
ZWM0IHBvc2l0aW9uOwotICAgICAgIGluIGZsb2F0IHRyYW5zZm9ybUZlZWRiYWNrSW5wdXQ7Ci0g
ICAgICAgb3V0IGZsb2F0IHRyYW5zZm9ybUZlZWRiYWNrT3V0cHV0OwotICAgICAgIHZvaWQgbWFp
bih2b2lkKQotICAgICAgIHsKLSAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAg
ICAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2tPdXRwdXQgPSB0cmFuc2Zvcm1GZWVkYmFja0lucHV0
OwotICAgICAgIH0KLSAgICApOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFk
ZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgKCAgI3ZlcnNpb24gMzAwIGVzXG4KLSAgICAg
ICBvdXQgbWVkaXVtcCB2ZWM0IGNvbG9yOwotICAgICAgIHZvaWQgbWFpbih2b2lkKQotICAgICAg
IHsKLSAgICAgICAgICAgY29sb3IgPSB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEuMCk7Ci0gICAgICAg
fQotICAgICk7Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gdGZWYXJ5aW5nczsKLSAgICB0ZlZhcnlpbmdzLnB1c2hfYmFjaygidHJhbnNmb3Jt
RmVlZGJhY2tPdXRwdXQiKTsKLQotICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW1XaXRoVHJh
bnNmb3JtRmVlZGJhY2sodmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRmVmFy
eWluZ3MsIEdMX0lOVEVSTEVBVkVEX0FUVFJJQlMpOwotICAgIEFTU0VSVF9ORSgwdSwgbVByb2dy
YW0pOwotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICBHTGludCBwb3NpdGlvbkxv
Y2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInBvc2l0aW9uIik7Ci0gICAg
Z2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7Ci0gICAgZ2xWZXJ0
ZXhBdHRyaWI0Zihwb3NpdGlvbkxvY2F0aW9uLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKLQot
ICAgIEdMaW50IHRmSW5wdXRMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0s
ICJ0cmFuc2Zvcm1GZWVkYmFja0lucHV0Iik7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eSh0ZklucHV0TG9jYXRpb24pOwotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcih0ZklucHV0TG9j
YXRpb24sIDEsIEdMX0ZMT0FULCBmYWxzZSwgMCwgJnRyYW5zZm9ybUZlZWRiYWNrRGF0YVswXSk7
Ci0KLSAgICBnbERlcHRoTWFzayhHTF9GQUxTRSk7Ci0gICAgZ2xFbmFibGUoR0xfREVQVEhfVEVT
VCk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBHTHVpbnQgdHJhbnNmb3JtRmVl
ZGJhY2tzW3RyYW5zZm9ybUZlZWRiYWNrQ291bnRdOwotICAgIGdsR2VuVHJhbnNmb3JtRmVlZGJh
Y2tzKHRyYW5zZm9ybUZlZWRiYWNrQ291bnQsIHRyYW5zZm9ybUZlZWRiYWNrcyk7Ci0KLSAgICBH
THVpbnQgYnVmZmVyc1t0cmFuc2Zvcm1GZWVkYmFja0NvdW50XTsKLSAgICBnbEdlbkJ1ZmZlcnMo
dHJhbnNmb3JtRmVlZGJhY2tDb3VudCwgYnVmZmVycyk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHRyYW5zZm9ybUZlZWRiYWNrQ291bnQ7IGkrKykKLSAgICB7Ci0gICAgICAgIGdsQmlu
ZFRyYW5zZm9ybUZlZWRiYWNrKEdMX1RSQU5TRk9STV9GRUVEQkFDSywgdHJhbnNmb3JtRmVlZGJh
Y2tzW2ldKTsKLQotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUiwgYnVmZmVyc1tpXSk7Ci0gICAgICAgIGdsQnVmZmVyRGF0YShHTF9UUkFOU0ZPUk1fRkVF
REJBQ0tfQlVGRkVSLCBidWZmZXJTaXplICogc2l6ZW9mKEdMZmxvYXQpLAotICAgICAgICAgICAg
ICAgICAgICAgJmJ1ZmZlckluaXRpYWxEYXRhWzBdLCBHTF9EWU5BTUlDX0RSQVcpOwotICAgICAg
ICBnbEJpbmRCdWZmZXJCYXNlKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIGJ1ZmZl
cnNbaV0pOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBnbEJlZ2lu
VHJhbnNmb3JtRmVlZGJhY2soR0xfUE9JTlRTKTsKLQotICAgICAgICBnbERyYXdBcnJheXMoR0xf
UE9JTlRTLCAwLCBzdGF0aWNfY2FzdDxHTHNpemVpPihkcmF3U2l6ZSkpOwotCi0gICAgICAgIGds
UGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpOwotCi0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OwotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmb3JtRmVlZGJhY2tD
b3VudDsgaSsrKQotICAgIHsKLSAgICAgICAgZ2xCaW5kVHJhbnNmb3JtRmVlZGJhY2soR0xfVFJB
TlNGT1JNX0ZFRURCQUNLLCB0cmFuc2Zvcm1GZWVkYmFja3NbaV0pOwotICAgICAgICBnbEVuZFRy
YW5zZm9ybUZlZWRiYWNrKCk7Ci0gICAgICAgIGdsRGVsZXRlVHJhbnNmb3JtRmVlZGJhY2tzKDEs
ICZ0cmFuc2Zvcm1GZWVkYmFja3NbaV0pOwotCi0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OwotICAgIH0KLX0KLS8vIFRlc3QgdGhhdCBydW5uaW5nIG11bHRpcGxlIHNpbXVsdGFuZW91cyBx
dWVyaWVzIGFuZCB0cmFuc2Zvcm0gZmVlZGJhY2tzIGZyb20gbXVsdGlwbGUgRUdMCi0vLyBjb250
ZXh0cyByZXR1cm5zIHRoZSBjb3JyZWN0IHJlc3VsdHMuICBIZWxwcyBleHBvc2UgYnVncyBpbiBB
TkdMRSdzIHZpcnR1YWwgY29udGV4dHMuCi1URVNUX1AoVHJhbnNmb3JtRmVlZGJhY2tUZXN0LCBN
dWx0aUNvbnRleHQpCi17Ci0jaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9BUFBMRSkKLSAgICBp
ZiAoKElzTlZJRElBKCkgfHwgSXNBTUQoKSkgJiYgR2V0UGFyYW0oKSA9PSBFUzNfT1BFTkdMKCkp
Ci0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBOVmlkaWEgYW5k
IEFNRCBPcGVuR0wgb24gT1NYLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0xJTlVYKQotICAgIGlmIChJ
c0FNRCgpICYmIEdldFBhcmFtKCkgPT0gRVMzX09QRU5HTCgpKQotICAgIHsKLSAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gQU1EIE9wZW5HTCBvbiBMaW51eC4iIDw8IHN0ZDo6
ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgRUdMaW50IGNvbnRl
eHRBdHRyaWJ1dGVzW10gPSB7Ci0gICAgICAgIEVHTF9DT05URVhUX01BSk9SX1ZFUlNJT05fS0hS
LAotICAgICAgICBHZXRQYXJhbSgpLm1ham9yVmVyc2lvbiwKLSAgICAgICAgRUdMX0NPTlRFWFRf
TUlOT1JfVkVSU0lPTl9LSFIsCi0gICAgICAgIEdldFBhcmFtKCkubWlub3JWZXJzaW9uLAotICAg
ICAgICBFR0xfTk9ORSwKLSAgICB9OwotCi0gICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xX
aW5kb3coKTsKLQotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHdpbmRvdy0+Z2V0RGlzcGxheSgp
OwotICAgIEVHTENvbmZpZyBjb25maWcgICA9IHdpbmRvdy0+Z2V0Q29uZmlnKCk7Ci0gICAgRUdM
U3VyZmFjZSBzdXJmYWNlID0gd2luZG93LT5nZXRTdXJmYWNlKCk7Ci0KLSAgICBjb25zdCBzaXpl
X3QgcGFzc0NvdW50ID0gNTsKLSAgICBzdHJ1Y3QgQ29udGV4dEluZm8KLSAgICB7Ci0gICAgICAg
IEVHTENvbnRleHQgY29udGV4dDsKLSAgICAgICAgR0x1aW50IHByb2dyYW07Ci0gICAgICAgIEdM
dWludCBxdWVyeTsKLSAgICAgICAgR0x1aW50IGJ1ZmZlcjsKLSAgICAgICAgc2l6ZV90IHByaW1p
dGl2ZUNvdW50c1twYXNzQ291bnRdOwotICAgIH07Ci0gICAgQ29udGV4dEluZm8gY29udGV4dHNb
MzJdOwotCi0gICAgY29uc3Qgc2l6ZV90IG1heERyYXdTaXplID0gMTAyNDsKLQotICAgIHN0ZDo6
dmVjdG9yPGZsb2F0PiB0cmFuc2Zvcm1GZWVkYmFja0RhdGEobWF4RHJhd1NpemUpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4RHJhd1NpemU7IGkrKykKLSAgICB7Ci0gICAgICAgIHRy
YW5zZm9ybUZlZWRiYWNrRGF0YVtpXSA9IHN0YXRpY19jYXN0PGZsb2F0PihpICsgMSk7Ci0gICAg
fQotCi0gICAgLy8gSW5pdGlhbGl6ZSB0aGUgYnVmZmVycyB0byB6ZXJvCi0gICAgc2l6ZV90IGJ1
ZmZlclNpemUgPSBtYXhEcmF3U2l6ZSAqIHBhc3NDb3VudDsKLSAgICBzdGQ6OnZlY3RvcjxmbG9h
dD4gYnVmZmVySW5pdGlhbERhdGEoYnVmZmVyU2l6ZSwgMCk7Ci0KLSAgICBmb3IgKGF1dG8gJmNv
bnRleHQgOiBjb250ZXh0cykKLSAgICB7Ci0gICAgICAgIGNvbnRleHQuY29udGV4dCA9IGVnbENy
ZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBFR0xfTk9fQ09OVEVYVCwgY29udGV4dEF0dHJp
YnV0ZXMpOwotICAgICAgICBBU1NFUlRfTkUoY29udGV4dC5jb250ZXh0LCBFR0xfTk9fQ09OVEVY
VCk7Ci0KLSAgICAgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgc3VyZmFjZSwgc3VyZmFjZSwg
Y29udGV4dC5jb250ZXh0KTsKLQotICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAg
ICAgICAgKCAgICN2ZXJzaW9uIDMwMCBlc1xuCi0gICAgICAgICAgICBpbiBoaWdocCB2ZWM0IHBv
c2l0aW9uOwotICAgICAgICAgICAgaW4gZmxvYXQgdHJhbnNmb3JtRmVlZGJhY2tJbnB1dDsKLSAg
ICAgICAgICAgIG91dCBmbG9hdCB0cmFuc2Zvcm1GZWVkYmFja091dHB1dDsKLSAgICAgICAgICAg
IHZvaWQgbWFpbih2b2lkKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX1Bvc2l0
aW9uID0gcG9zaXRpb247Ci0gICAgICAgICAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2tPdXRwdXQg
PSB0cmFuc2Zvcm1GZWVkYmFja0lucHV0OwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0g
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NP
VVJDRQotICAgICAgICAoICAgI3ZlcnNpb24gMzAwIGVzXG4KLSAgICAgICAgICAgIG91dCBtZWRp
dW1wIHZlYzQgY29sb3I7Ci0gICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjb2xvciA9IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgKTsKLSAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCi0KLSAg
ICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRmVmFyeWluZ3M7Ci0gICAgICAgIHRmVmFy
eWluZ3MucHVzaF9iYWNrKCJ0cmFuc2Zvcm1GZWVkYmFja091dHB1dCIpOwotCi0gICAgICAgIGNv
bnRleHQucHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtV2l0aFRyYW5zZm9ybUZlZWRiYWNrKAotICAg
ICAgICAgICAgdmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSwgdGZWYXJ5
aW5ncywgR0xfSU5URVJMRUFWRURfQVRUUklCUyk7Ci0gICAgICAgIEFTU0VSVF9ORShjb250ZXh0
LnByb2dyYW0sIDB1KTsKLSAgICAgICAgZ2xVc2VQcm9ncmFtKGNvbnRleHQucHJvZ3JhbSk7Ci0K
LSAgICAgICAgR0xpbnQgcG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24oY29u
dGV4dC5wcm9ncmFtLCAicG9zaXRpb24iKTsKLSAgICAgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmli
QXJyYXkocG9zaXRpb25Mb2NhdGlvbik7Ci0gICAgICAgIGdsVmVydGV4QXR0cmliNGYocG9zaXRp
b25Mb2NhdGlvbiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZik7Ci0KLSAgICAgICAgR0xpbnQgdGZJ
bnB1dExvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihjb250ZXh0LnByb2dyYW0sICJ0cmFu
c2Zvcm1GZWVkYmFja0lucHV0Iik7Ci0gICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXko
dGZJbnB1dExvY2F0aW9uKTsKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHRmSW5wdXRM
b2NhdGlvbiwgMSwgR0xfRkxPQVQsIGZhbHNlLCAwLCAmdHJhbnNmb3JtRmVlZGJhY2tEYXRhWzBd
KTsKLQotICAgICAgICBnbERlcHRoTWFzayhHTF9GQUxTRSk7Ci0gICAgICAgIGdsRW5hYmxlKEdM
X0RFUFRIX1RFU1QpOwotICAgICAgICBnbEdlblF1ZXJpZXNFWFQoMSwgJmNvbnRleHQucXVlcnkp
OwotICAgICAgICBnbEJlZ2luUXVlcnlFWFQoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElW
RVNfV1JJVFRFTiwgY29udGV4dC5xdWVyeSk7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZjb250ZXh0LmJ1ZmZlcik7Ci0gICAgICAg
IGdsQmluZEJ1ZmZlcihHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBjb250ZXh0LmJ1ZmZl
cik7Ci0gICAgICAgIGdsQnVmZmVyRGF0YShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBi
dWZmZXJTaXplICogc2l6ZW9mKEdMZmxvYXQpLAotICAgICAgICAgICAgICAgICAgICAgJmJ1ZmZl
ckluaXRpYWxEYXRhWzBdLCBHTF9EWU5BTUlDX0RSQVcpOwotICAgICAgICBnbEJpbmRCdWZmZXJC
YXNlKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIGNvbnRleHQuYnVmZmVyKTsKLQot
ICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICAvLyBGb3IgZWFjaCBwYXNz
LCBkcmF3IGJldHdlZW4gMCBhbmQgbWF4RHJhd1NpemUgcHJpbWl0aXZlcwotICAgICAgICBmb3Ig
KGF1dG8gJnByaW1Db3VudCA6IGNvbnRleHQucHJpbWl0aXZlQ291bnRzKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBwcmltQ291bnQgPSByYW5kKCkgJSBtYXhEcmF3U2l6ZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTF9QT0lOVFMpOwotICAgIH0KLQot
ICAgIGZvciAoc2l6ZV90IHBhc3MgPSAwOyBwYXNzIDwgcGFzc0NvdW50OyBwYXNzKyspCi0gICAg
ewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJmNvbnRleHQgOiBjb250ZXh0cykKLSAgICAgICAg
ewotICAgICAgICAgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgc3VyZmFjZSwgc3VyZmFjZSwg
Y29udGV4dC5jb250ZXh0KTsKLQotICAgICAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5UUywg
MCwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oY29udGV4dC5wcmltaXRpdmVDb3VudHNbcGFzc10pKTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIGZvciAoY29uc3QgYXV0byAmY29udGV4dCA6IGNvbnRl
eHRzKQotICAgIHsKLSAgICAgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgc3VyZmFjZSwgc3Vy
ZmFjZSwgY29udGV4dC5jb250ZXh0KTsKLQotICAgICAgICBnbEVuZFRyYW5zZm9ybUZlZWRiYWNr
KCk7Ci0KLSAgICAgICAgZ2xFbmRRdWVyeUVYVChHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlU
SVZFU19XUklUVEVOKTsKLQotICAgICAgICBHTHVpbnQgcmVzdWx0ID0gMDsKLSAgICAgICAgZ2xH
ZXRRdWVyeU9iamVjdHVpdkVYVChjb250ZXh0LnF1ZXJ5LCBHTF9RVUVSWV9SRVNVTFRfRVhULCAm
cmVzdWx0KTsKLQotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBzaXpl
X3QgdG90YWxQcmltQ291bnQgPSAwOwotICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJnByaW1Db3Vu
dCA6IGNvbnRleHQucHJpbWl0aXZlQ291bnRzKQotICAgICAgICB7Ci0gICAgICAgICAgICB0b3Rh
bFByaW1Db3VudCArPSBwcmltQ291bnQ7Ci0gICAgICAgIH0KLSAgICAgICAgRVhQRUNUX0VRKHN0
YXRpY19jYXN0PEdMdWludD4odG90YWxQcmltQ291bnQpLCByZXN1bHQpOwotCi0gICAgICAgIGNv
bnN0IGZsb2F0ICpidWZmZXJEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxmbG9hdCAqPihnbE1hcEJ1
ZmZlclJhbmdlKAotICAgICAgICAgICAgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwg
YnVmZmVyU2l6ZSAqIHNpemVvZihHTGZsb2F0KSwgR0xfTUFQX1JFQURfQklUKSk7Ci0KLSAgICAg
ICAgc2l6ZV90IGN1ckJ1ZmZlckluZGV4ID0gMDsKLSAgICAgICAgZm9yIChjb25zdCBhdXRvICZw
cmltQ291bnQgOiBjb250ZXh0LnByaW1pdGl2ZUNvdW50cykKLSAgICAgICAgewotICAgICAgICAg
ICAgZm9yIChzaXplX3QgcHJpbSA9IDA7IHByaW0gPCBwcmltQ291bnQ7IHByaW0rKykKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoYnVmZmVyRGF0YVtjdXJCdWZmZXJJ
bmRleF0sIHByaW0gKyAxKTsKLSAgICAgICAgICAgICAgICBjdXJCdWZmZXJJbmRleCsrOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgd2hpbGUgKGN1ckJ1ZmZlckluZGV4IDwg
YnVmZmVyU2l6ZSkKLSAgICAgICAgewotICAgICAgICAgICAgRVhQRUNUX0VRKGJ1ZmZlckRhdGFb
Y3VyQnVmZmVySW5kZXhdLCAwLjBmKTsKLSAgICAgICAgICAgIGN1ckJ1ZmZlckluZGV4Kys7Ci0g
ICAgICAgIH0KLQotICAgICAgICBnbFVubWFwQnVmZmVyKEdMX1RSQU5TRk9STV9GRUVEQkFDS19C
VUZGRVIpOwotICAgIH0KLQotICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIHN1cmZhY2UsIHN1
cmZhY2UsIHdpbmRvdy0+Z2V0Q29udGV4dCgpKTsKLQotICAgIGZvciAoYXV0byAmY29udGV4dCA6
IGNvbnRleHRzKQotICAgIHsKLSAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29u
dGV4dC5jb250ZXh0KTsKLSAgICAgICAgY29udGV4dC5jb250ZXh0ID0gRUdMX05PX0NPTlRFWFQ7
Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQgd2hlbiB0d28gdmVjMnMgYXJlIHBhY2tlZCBpbnRv
IHRoZSBzYW1lIHJlZ2lzdGVyLCB3ZSBjYW4gc3RpbGwgY2FwdHVyZSBib3RoIG9mIHRoZW0uCi1U
RVNUX1AoVHJhbnNmb3JtRmVlZGJhY2tUZXN0LCBQYWNraW5nQnVnKQotewotICAgIC8vIFRPRE8o
am1hZGlsbCk6IFdpdGggcG9pbnRzIGFuZCByYXN0ZXJpemVyIGRpc2NhcmQ/Ci0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAg
ZXNcbiIKLSAgICAgICAgImluIHZlYzIgaW5BdHRyaWIxO1xuIgotICAgICAgICAiaW4gdmVjMiBp
bkF0dHJpYjI7XG4iCi0gICAgICAgICJvdXQgdmVjMiBvdXRBdHRyaWIxO1xuIgotICAgICAgICAi
b3V0IHZlYzIgb3V0QXR0cmliMjtcbiIKLSAgICAgICAgImluIHZlYzIgcG9zaXRpb247XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKSB7IgotICAgICAgICAiICBvdXRBdHRyaWIxID0gaW5BdHRyaWIx
O1xuIgotICAgICAgICAiICBvdXRBdHRyaWIyID0gaW5BdHRyaWIyO1xuIgotICAgICAgICAiICBn
bF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAsIDEpO1xuIgotICAgICAgICAifSI7Ci0KLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAg
ICAgICAgIm91dCB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAg
ICAgICAiICBjb2xvciA9IHZlYzQoMCk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIHN0ZDo6dmVj
dG9yPHN0ZDo6c3RyaW5nPiB0ZlZhcnlpbmdzOwotICAgIHRmVmFyeWluZ3MucHVzaF9iYWNrKCJv
dXRBdHRyaWIxIik7Ci0gICAgdGZWYXJ5aW5ncy5wdXNoX2JhY2soIm91dEF0dHJpYjIiKTsKLQot
ICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW1XaXRoVHJhbnNmb3JtRmVlZGJhY2sodmVydGV4
U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRmVmFyeWluZ3MsIEdMX0lOVEVSTEVBVkVE
X0FUVFJJQlMpOwotICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotCi0gICAgZ2xCaW5kQnVm
ZmVyKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZl
cik7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIHNpemVv
ZihWZWN0b3IyKSAqIDIgKiA2LCBudWxscHRyLCBHTF9TVFJFQU1fRFJBVyk7Ci0KLSAgICBnbEJp
bmRUcmFuc2Zvcm1GZWVkYmFjayhHTF9UUkFOU0ZPUk1fRkVFREJBQ0ssIG1UcmFuc2Zvcm1GZWVk
YmFjayk7Ci0gICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
LCAwLCBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIpOwotCi0gICAgR0xpbnQgYXR0cmliMUxvYyA9
IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJpbkF0dHJpYjEiKTsKLSAgICBHTGludCBh
dHRyaWIyTG9jID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImluQXR0cmliMiIpOwot
Ci0gICAgVmVjdG9yMiBhdHRyaWIxRGF0YVtdID0ge1ZlY3RvcjIoMS4wLCAyLjApLCBWZWN0b3Iy
KDMuMCwgNC4wKSwgVmVjdG9yMig1LjAsIDYuMCl9OwotICAgIFZlY3RvcjIgYXR0cmliMkRhdGFb
XSA9IHtWZWN0b3IyKDExLjAsIDEyLjApLCBWZWN0b3IyKDEzLjAsIDE0LjApLCBWZWN0b3IyKDE1
LjAsIDE2LjApfTsKLQotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoYXR0cmliMUxvYyk7
Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShhdHRyaWIyTG9jKTsKLQotICAgIGdsVmVy
dGV4QXR0cmliUG9pbnRlcihhdHRyaWIxTG9jLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIGF0
dHJpYjFEYXRhKTsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoYXR0cmliMkxvYywgMiwgR0xf
RkxPQVQsIEdMX0ZBTFNFLCAwLCBhdHRyaWIyRGF0YSk7Ci0KLSAgICBnbFVzZVByb2dyYW0obVBy
b2dyYW0pOwotICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTF9UUklBTkdMRVMpOwotICAg
IGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBnbEVuZFRyYW5zZm9y
bUZlZWRiYWNrKCk7Ci0gICAgZ2xVc2VQcm9ncmFtKDApOwotICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotCi0gICAgY29uc3QgR0x2b2lkICptYXBQb2ludGVyID0KLSAgICAgICAgZ2xNYXBCdWZm
ZXJSYW5nZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBzaXplb2YoVmVjdG9yMikg
KiAyICogNiwgR0xfTUFQX1JFQURfQklUKTsKLSAgICBBU1NFUlRfTkUobnVsbHB0ciwgbWFwUG9p
bnRlcik7Ci0KLSAgICBjb25zdCBWZWN0b3IyICp2ZWNQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y29u
c3QgVmVjdG9yMiAqPihtYXBQb2ludGVyKTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCB2ZWN0b3JJ
bmRleCA9IDA7IHZlY3RvckluZGV4IDwgMzsgKyt2ZWN0b3JJbmRleCkKLSAgICB7Ci0gICAgICAg
IHVuc2lnbmVkIGludCBzdHJlYW0xSW5kZXggPSB2ZWN0b3JJbmRleCAqIDI7Ci0gICAgICAgIHVu
c2lnbmVkIGludCBzdHJlYW0ySW5kZXggPSB2ZWN0b3JJbmRleCAqIDIgKyAxOwotICAgICAgICBF
WFBFQ1RfRVEoYXR0cmliMURhdGFbdmVjdG9ySW5kZXhdLCB2ZWNQb2ludGVyW3N0cmVhbTFJbmRl
eF0pOwotICAgICAgICBFWFBFQ1RfRVEoYXR0cmliMkRhdGFbdmVjdG9ySW5kZXhdLCB2ZWNQb2lu
dGVyW3N0cmVhbTJJbmRleF0pOwotICAgIH0KLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
fQotCi0vLyBUZXN0IHRoYXQgdHJhbnNmb3JtIGZlZWRiYWNrIHZhcnlpbmdzIHRoYXQgY2FuIGJl
IG9wdGltaXplZCBvdXQgeWV0IGRvIG5vdCBjYXVzZSBwcm9ncmFtCi0vLyBjb21waWxhdGlvbiB0
byBmYWlsCi1URVNUX1AoVHJhbnNmb3JtRmVlZGJhY2tUZXN0LCBPcHRpbWl6ZWRWYXJ5aW5ncykK
LXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAg
IiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAiaW4gdmVjNCBhX3ZlcnRleDtcbiIKLSAgICAg
ICAgImluIHZlYzMgYV9ub3JtYWw7IFxuIgotICAgICAgICAiXG4iCi0gICAgICAgICJ1bmlmb3Jt
IFRyYW5zZm9ybVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIG1hdDQgdV9tb2RlbFZp
ZXdNYXRyaXg7XG4iCi0gICAgICAgICIgICAgbWF0NCB1X3Byb2plY3Rpb25NYXRyaXg7XG4iCi0g
ICAgICAgICIgICAgbWF0MyB1X25vcm1hbE1hdHJpeDtcbiIKLSAgICAgICAgIn07XG4iCi0gICAg
ICAgICJcbiIKLSAgICAgICAgIm91dCB2ZWMzIG5vcm1hbDtcbiIKLSAgICAgICAgIm91dCB2ZWM0
IGVjUG9zaXRpb247XG4iCi0gICAgICAgICJcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0g
ICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgbm9ybWFsID0gbm9ybWFsaXplKHVfbm9ybWFsTWF0
cml4ICogYV9ub3JtYWwpO1xuIgotICAgICAgICAiICAgIGVjUG9zaXRpb24gPSB1X21vZGVsVmll
d01hdHJpeCAqIGFfdmVydGV4O1xuIgotICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdV9wcm9q
ZWN0aW9uTWF0cml4ICogZWNQb3NpdGlvbjtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb25z
dCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAiI3ZlcnNpb24g
MzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAg
IlxuIgotICAgICAgICAiaW4gdmVjMyBub3JtYWw7XG4iCi0gICAgICAgICJpbiB2ZWM0IGVjUG9z
aXRpb247XG4iCi0gICAgICAgICJcbiIKLSAgICAgICAgIm91dCB2ZWM0IGZyYWdDb2xvcjtcbiIK
LSAgICAgICAgIlxuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAg
ICAgICAgIiAgICBmcmFnQ29sb3IgPSB2ZWM0KG5vcm1hbC8yLjArdmVjMygwLjUpLCAxKTtcbiIK
LSAgICAgICAgIn1cbiI7Ci0KLSAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdGZWYXJ5aW5n
czsKLSAgICB0ZlZhcnlpbmdzLnB1c2hfYmFjaygibm9ybWFsIik7Ci0gICAgdGZWYXJ5aW5ncy5w
dXNoX2JhY2soImVjUG9zaXRpb24iKTsKLQotICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW1X
aXRoVHJhbnNmb3JtRmVlZGJhY2sodmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNv
dXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRmVmFyeWluZ3MsIEdMX0lOVEVSTEVBVkVEX0FUVFJJQlMpOwotICAgIEFTU0VSVF9ORSgwdSwg
bVByb2dyYW0pOwotfQotCi0vLyBUZXN0IGFuIGVkZ2UgY2FzZSB3aGVyZSB0d28gdmFyeWluZ3Mg
YXJlIHVucmVmZXJlbmNlZCBpbiB0aGUgZnJhZyBzaGFkZXIuCi1URVNUX1AoVHJhbnNmb3JtRmVl
ZGJhY2tUZXN0LCBUd29VbnJlZmVyZW5jZWRJbkZyYWdTaGFkZXIpCi17Ci0gICAgLy8gVE9ETyhq
bWFkaWxsKTogV2l0aCBwb2ludHMgYW5kIHJhc3Rlcml6ZXIgZGlzY2FyZD8KLSAgICBjb25zdCBz
dGQ6OnN0cmluZyAmdmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBl
c1xuIgotICAgICAgICAiaW4gdmVjMyBwb3NpdGlvbjtcbiIKLSAgICAgICAgIm91dCB2ZWMzIG91
dEF0dHJpYjE7XG4iCi0gICAgICAgICJvdXQgdmVjMyBvdXRBdHRyaWIyO1xuIgotICAgICAgICAi
dm9pZCBtYWluKCkgeyIKLSAgICAgICAgIiAgb3V0QXR0cmliMSA9IHBvc2l0aW9uO1xuIgotICAg
ICAgICAiICBvdXRBdHRyaWIyID0gcG9zaXRpb247XG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9u
ID0gdmVjNChwb3NpdGlvbiwgMSk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZl
YzQgY29sb3I7XG4iCi0gICAgICAgICJpbiB2ZWMzIG91dEF0dHJpYjE7XG4iCi0gICAgICAgICJp
biB2ZWMzIG91dEF0dHJpYjI7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAg
ICIgIGNvbG9yID0gdmVjNCgwKTtcbiIKLSAgICAgICAgIn0iOwotCi0gICAgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IHRmVmFyeWluZ3M7Ci0gICAgdGZWYXJ5aW5ncy5wdXNoX2JhY2soIm91dEF0
dHJpYjEiKTsKLSAgICB0ZlZhcnlpbmdzLnB1c2hfYmFjaygib3V0QXR0cmliMiIpOwotCi0gICAg
bVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbVdpdGhUcmFuc2Zvcm1GZWVkYmFjayh2ZXJ0ZXhTaGFk
ZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGZWYXJ5aW5ncywgR0xfSU5URVJMRUFWRURfQVRU
UklCUyk7Ci0gICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7Ci0KLSAgICBnbEJpbmRCdWZmZXIo
R0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsK
LSAgICBnbEJ1ZmZlckRhdGEoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgc2l6ZW9mKFZl
Y3RvcjMpICogMiAqIDYsIG51bGxwdHIsIEdMX1NUUkVBTV9EUkFXKTsKLQotICAgIGdsQmluZFRy
YW5zZm9ybUZlZWRiYWNrKEdMX1RSQU5TRk9STV9GRUVEQkFDSywgbVRyYW5zZm9ybUZlZWRiYWNr
KTsKLSAgICBnbEJpbmRCdWZmZXJCYXNlKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAs
IG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7Ci0KLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0p
OwotICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTF9UUklBTkdMRVMpOwotICAgIGRyYXdR
dWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBnbEVuZFRyYW5zZm9ybUZlZWRi
YWNrKCk7Ci0gICAgZ2xVc2VQcm9ncmFtKDApOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgY29uc3QgR0x2b2lkICptYXBQb2ludGVyID0KLSAgICAgICAgZ2xNYXBCdWZmZXJSYW5n
ZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBzaXplb2YoVmVjdG9yMikgKiAyICog
NiwgR0xfTUFQX1JFQURfQklUKTsKLSAgICBBU1NFUlRfTkUobnVsbHB0ciwgbWFwUG9pbnRlcik7
Ci0KLSAgICBjb25zdCBhdXRvICZxdWFkVmVydGljZXMgPSBHZXRRdWFkVmVydGljZXMoKTsKLQot
ICAgIGNvbnN0IFZlY3RvcjMgKnZlY1BvaW50ZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBWZWN0b3Iz
ICo+KG1hcFBvaW50ZXIpOwotICAgIGZvciAodW5zaWduZWQgaW50IHZlY3RvckluZGV4ID0gMDsg
dmVjdG9ySW5kZXggPCAzOyArK3ZlY3RvckluZGV4KQotICAgIHsKLSAgICAgICAgdW5zaWduZWQg
aW50IHN0cmVhbTFJbmRleCA9IHZlY3RvckluZGV4ICogMjsKLSAgICAgICAgdW5zaWduZWQgaW50
IHN0cmVhbTJJbmRleCA9IHZlY3RvckluZGV4ICogMiArIDE7Ci0gICAgICAgIEVYUEVDVF9FUShx
dWFkVmVydGljZXNbdmVjdG9ySW5kZXhdLCB2ZWNQb2ludGVyW3N0cmVhbTFJbmRleF0pOwotICAg
ICAgICBFWFBFQ1RfRVEocXVhZFZlcnRpY2VzW3ZlY3RvckluZGV4XSwgdmVjUG9pbnRlcltzdHJl
YW0ySW5kZXhdKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLWNsYXNz
IFRyYW5zZm9ybUZlZWRiYWNrTGlmZXRpbWVUZXN0IDogcHVibGljIFRyYW5zZm9ybUZlZWRiYWNr
VGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgVHJhbnNmb3JtRmVlZGJhY2tMaWZldGltZVRlc3Qo
KSA6IG1WZXJ0ZXhBcnJheSgwKSB7fQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgZ2xHZW5WZXJ0ZXhBcnJh
eXMoMSwgJm1WZXJ0ZXhBcnJheSk7Ci0gICAgICAgIGdsQmluZFZlcnRleEFycmF5KG1WZXJ0ZXhB
cnJheSk7Ci0KLSAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRmVmFyeWluZ3M7Ci0g
ICAgICAgIHRmVmFyeWluZ3MucHVzaF9iYWNrKCJnbF9Qb3NpdGlvbiIpOwotICAgICAgICBjb21w
aWxlRGVmYXVsdFByb2dyYW0odGZWYXJ5aW5ncywgR0xfU0VQQVJBVEVfQVRUUklCUyk7Ci0KLSAg
ICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIpOwotICAgICAg
ICBnbEJpbmRCdWZmZXIoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgbVRyYW5zZm9ybUZl
ZWRiYWNrQnVmZmVyKTsKLSAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX1RSQU5TRk9STV9GRUVEQkFD
S19CVUZGRVIsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlclNpemUsIE5VTEwsCi0gICAgICAgICAg
ICAgICAgICAgICBHTF9EWU5BTUlDX0RSQVcpOwotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCk7Ci0KLSAgICAgICAgZ2xHZW5UcmFuc2Zvcm1GZWVk
YmFja3MoMSwgJm1UcmFuc2Zvcm1GZWVkYmFjayk7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICBnbERlbGV0ZVZlcnRleEFycmF5cygxLCAmbVZlcnRleEFycmF5KTsKLSAgICAgICAgVHJh
bnNmb3JtRmVlZGJhY2tUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQotICAgIEdMdWludCBtVmVy
dGV4QXJyYXk7Ci19OwotCi0vLyBUZXN0cyBhIGJ1ZyB3aXRoIHN0YXRlIHN5bmNpbmcgYW5kIGRl
bGV0ZWQgdHJhbnNmb3JtIGZlZWRiYWNrIGJ1ZmZlcnMuCi1URVNUX1AoVHJhbnNmb3JtRmVlZGJh
Y2tMaWZldGltZVRlc3QsIERlbGV0ZWRCdWZmZXIpCi17Ci0gICAgLy8gRmlyc3Qgc3RyZWFtIHZl
cnRleCBkYXRhIHRvIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlci4KLSAgICBnbEJpbmRUcmFuc2Zv
cm1GZWVkYmFjayhHTF9UUkFOU0ZPUk1fRkVFREJBQ0ssIG1UcmFuc2Zvcm1GZWVkYmFjayk7Ci0g
ICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBtVHJh
bnNmb3JtRmVlZGJhY2tCdWZmZXIpOwotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLQot
ICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTF9UUklBTkdMRVMpOwotICAgIGRyYXdRdWFk
KG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmLCAxLjBmLCB0cnVlKTsKLSAgICBnbEVuZFRyYW5z
Zm9ybUZlZWRiYWNrKCk7Ci0KLSAgICBnbEJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHTF9UUkFOU0ZP
Uk1fRkVFREJBQ0ssIDApOwotCi0gICAgLy8gVE9ETyhqbWFkaWxsKTogUmVtb3ZlIHRoaXMgd2hl
biBodHRwOi8vYW5nbGVidWcuY29tLzEzNTEgaXMgZml4ZWQuCi0gICAgZ2xCaW5kVmVydGV4QXJy
YXkoMCk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIGds
QmluZFZlcnRleEFycmF5KDEpOwotCi0gICAgLy8gTmV4dCwgZHJhdyB2ZXJ0aWNlcyB3aXRoIG1U
cmFuc2Zvcm1GZWVkYmFja0J1ZmZlci4gVGhpcyB3aWxsIGxpbmsgdG8gbVZlcnRleEFycmF5Lgot
ICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZl
cik7Ci0gICAgR0xpbnQgbG9jID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInBvc2l0
aW9uIik7Ci0gICAgQVNTRVJUX05FKC0xLCBsb2MpOwotICAgIGdsVmVydGV4QXR0cmliUG9pbnRl
cihsb2MsIDEsIEdMX0ZMT0FULCBHTF9GQUxTRSwgNCwgbnVsbHB0cik7Ci0gICAgZ2xFbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheShsb2MpOwotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIs
IDApOwotICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOwotCi0gICAgLy8gRGVs
ZXRlIHJlc291cmNlcywgbWFraW5nIGEgc3RyYW5kZWQgcG9pbnRlciB0byBtVmVydGV4QXJyYXkg
aW4gbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyLgotICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbVRy
YW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKLSAgICBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIgPSAw
OwotICAgIGdsRGVsZXRlVmVydGV4QXJyYXlzKDEsICZtVmVydGV4QXJyYXkpOwotICAgIG1WZXJ0
ZXhBcnJheSA9IDA7Ci0KLSAgICAvLyBUaGVuIGRyYXcgYWdhaW4gd2l0aCB0cmFuc2Zvcm0gZmVl
ZGJhY2ssIGRlcmVmZXJlbmNpbmcgdGhlIHN0cmFuZGVkIHBvaW50ZXIuCi0gICAgZ2xCaW5kVHJh
bnNmb3JtRmVlZGJhY2soR0xfVFJBTlNGT1JNX0ZFRURCQUNLLCBtVHJhbnNmb3JtRmVlZGJhY2sp
OwotICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTF9UUklBTkdMRVMpOwotICAgIGRyYXdR
dWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmLCAxLjBmLCB0cnVlKTsKLSAgICBnbEVuZFRy
YW5zZm9ybUZlZWRiYWNrKCk7Ci0gICAgZ2xCaW5kVHJhbnNmb3JtRmVlZGJhY2soR0xfVFJBTlNG
T1JNX0ZFRURCQUNLLCAwKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBV
c2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVy
ZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBh
Z2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChUcmFuc2Zvcm1GZWVkYmFja1Rlc3QsIEVT
M19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJ
QVRFX1RFU1QoVHJhbnNmb3JtRmVlZGJhY2tMaWZldGltZVRlc3QsIEVTM19EM0QxMSgpLCBFUzNf
T1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKLQotfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1Vu
aWZvcm1CdWZmZXJUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9Vbmlmb3JtQnVmZmVyVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDE1ZGNjYjYyMDBiZjdiMzFlYzlkN2U3NjkwN2Y5M2FiYzhhNzMxMWEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1VuaWZvcm1CdWZmZXJUZXN0LmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDU5MCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdM
RVRlc3QuaCIKLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIKLQotdXNpbmcgbmFtZXNw
YWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3MgVW5pZm9ybUJ1ZmZlclRlc3QgOiBw
dWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBVbmlmb3JtQnVmZmVyVGVzdCgp
Ci0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwotICAgICAgICBzZXRXaW5kb3dI
ZWlnaHQoMTI4KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29u
ZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAg
c2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgp
Ci0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoICAg
I3ZlcnNpb24gMzAwIGVzXG4KLSAgICAgICAgICAgIGluIHZlYzQgcG9zaXRpb247Ci0gICAgICAg
ICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX1Bvc2l0
aW9uID0gcG9zaXRpb247Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0gICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAg
ICAoICAgI3ZlcnNpb24gMzAwIGVzXG4KLSAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9h
dDsKLSAgICAgICAgICAgIHVuaWZvcm0gdW5pIHsKLSAgICAgICAgICAgICAgICB2ZWM0IGNvbG9y
OwotICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgb3V0IHZlYzQgZnJhZ0NvbG9yOwotCi0g
ICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZy
YWdDb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIG1Q
cm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRl
clNvdXJjZSk7Ci0gICAgICAgIEFTU0VSVF9ORShtUHJvZ3JhbSwgMHUpOwotCi0gICAgICAgIG1V
bmlmb3JtQnVmZmVySW5kZXggPSBnbEdldFVuaWZvcm1CbG9ja0luZGV4KG1Qcm9ncmFtLCAidW5p
Iik7Ci0gICAgICAgIEFTU0VSVF9ORShtVW5pZm9ybUJ1ZmZlckluZGV4LCAtMSk7Ci0KLSAgICAg
ICAgZ2xHZW5CdWZmZXJzKDEsICZtVW5pZm9ybUJ1ZmZlcik7Ci0KLSAgICAgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKLSAgICB7
Ci0gICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbVVuaWZvcm1CdWZmZXIpOwotICAgICAgICBn
bERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7
Ci0gICAgfQotCi0gICAgR0x1aW50IG1Qcm9ncmFtOwotICAgIEdMaW50IG1Vbmlmb3JtQnVmZmVy
SW5kZXg7Ci0gICAgR0x1aW50IG1Vbmlmb3JtQnVmZmVyOwotfTsKLQotLy8gQmFzaWMgVUJPIGZ1
bmN0aW9uYWxpdHkuCi1URVNUX1AoVW5pZm9ybUJ1ZmZlclRlc3QsIFNpbXBsZSkKLXsKLSAgICBn
bENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIGZsb2F0IGZsb2F0RGF0YVs0XSA9IHsw
LjVmLCAwLjc1ZiwgMC4yNWYsIDEuMGZ9OwotCi0gICAgZ2xCaW5kQnVmZmVyKEdMX1VOSUZPUk1f
QlVGRkVSLCBtVW5pZm9ybUJ1ZmZlcik7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX1VOSUZPUk1fQlVG
RkVSLCBzaXplb2YoZmxvYXQpICogNCwgZmxvYXREYXRhLCBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAg
ICBnbEJpbmRCdWZmZXJCYXNlKEdMX1VOSUZPUk1fQlVGRkVSLCAwLCBtVW5pZm9ybUJ1ZmZlcik7
Ci0KLSAgICBnbFVuaWZvcm1CbG9ja0JpbmRpbmcobVByb2dyYW0sIG1Vbmlmb3JtQnVmZmVySW5k
ZXgsIDApOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAsIDEyOCwg
MTkxLCA2NCwgMjU1LCAxKTsKLX0KLQotLy8gVGVzdCB0aGF0IHVzaW5nIGEgVUJPIHdpdGggYSBu
b24temVybyBvZmZzZXQgYW5kIHNpemUgYWN0dWFsbHkgd29ya3MuCi0vLyBUaGUgZmlyc3Qgc3Rl
cCBvZiB0aGlzIHRlc3QgcmVuZGVycyBhIGNvbG9yIGZyb20gYSBVQk8gd2l0aCBhIHplcm8gb2Zm
c2V0LgotLy8gVGhlIHNlY29uZCBzdGVwIHJlbmRlcnMgYSBjb2xvciBmcm9tIGEgVUJPIHdpdGgg
YSBub24temVybyBvZmZzZXQuCi1URVNUX1AoVW5pZm9ybUJ1ZmZlclRlc3QsIFVuaWZvcm1CdWZm
ZXJSYW5nZSkKLXsKLSAgICAvLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGZh
aWxzIG9uIEludGVsLgotICAgIGlmIChJc0ludGVsKCkgJiYgSXNEM0QxMSgpKQotICAgIHsKLSAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgRDNEMTEuIiA8PCBzdGQ6
OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbnQgcHggPSBnZXRXaW5kb3dX
aWR0aCgpIC8gMjsKLSAgICBpbnQgcHkgPSBnZXRXaW5kb3dIZWlnaHQoKSAvIDI7Ci0KLSAgICAv
LyBRdWVyeSB0aGUgdW5pZm9ybSBidWZmZXIgYWxpZ25tZW50IHJlcXVpcmVtZW50Ci0gICAgR0xp
bnQgYWxpZ25tZW50OwotICAgIGdsR2V0SW50ZWdlcnYoR0xfVU5JRk9STV9CVUZGRVJfT0ZGU0VU
X0FMSUdOTUVOVCwgJmFsaWdubWVudCk7Ci0KLSAgICBHTGludDY0IG1heFVuaWZvcm1CbG9ja1Np
emU7Ci0gICAgZ2xHZXRJbnRlZ2VyNjR2KEdMX01BWF9VTklGT1JNX0JMT0NLX1NJWkUsICZtYXhV
bmlmb3JtQmxvY2tTaXplKTsKLSAgICBpZiAoYWxpZ25tZW50ID49IG1heFVuaWZvcm1CbG9ja1Np
emUpCi0gICAgewotICAgICAgICAvLyBBTkdMRSBkb2Vzbid0IGltcGxlbWVudCBVQk8gb2Zmc2V0
cyBmb3IgdGhpcyBwbGF0Zm9ybS4KLSAgICAgICAgLy8gSWdub3JlIHRoZSB0ZXN0IGNhc2UuCi0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAg
IC8vIExldCdzIGNyZWF0ZSBhIGJ1ZmZlciB3aGljaCBjb250YWlucyB0d28gdmVjNC4KLSAgICBH
THVpbnQgdmVjNFNpemUgPSA0ICogc2l6ZW9mKGZsb2F0KTsKLSAgICBHTHVpbnQgc3RyaWRlID0g
MDsKLSAgICBkbwotICAgIHsKLSAgICAgICAgc3RyaWRlICs9IGFsaWdubWVudDsKLSAgICB9Ci0g
ICAgd2hpbGUgKHN0cmlkZSA8IHZlYzRTaXplKTsKLQotICAgIHN0ZDo6dmVjdG9yPGNoYXI+IHYo
MiAqIHN0cmlkZSk7Ci0gICAgZmxvYXQgKmZpcnN0ID0gcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+
KHYuZGF0YSgpKTsKLSAgICBmbG9hdCAqc2Vjb25kID0gcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+
KHYuZGF0YSgpICsgc3RyaWRlKTsKLQotICAgIGZpcnN0WzBdID0gMTAuZiAvIDI1NS5mOwotICAg
IGZpcnN0WzFdID0gMjAuZiAvIDI1NS5mOwotICAgIGZpcnN0WzJdID0gMzAuZiAvIDI1NS5mOwot
ICAgIGZpcnN0WzNdID0gNDAuZiAvIDI1NS5mOwotCi0gICAgc2Vjb25kWzBdID0gMTEwLmYgLyAy
NTUuZjsKLSAgICBzZWNvbmRbMV0gPSAxMjAuZiAvIDI1NS5mOwotICAgIHNlY29uZFsyXSA9IDEz
MC5mIC8gMjU1LmY7Ci0gICAgc2Vjb25kWzNdID0gMTQwLmYgLyAyNTUuZjsKLQotICAgIGdsQmlu
ZEJ1ZmZlcihHTF9VTklGT1JNX0JVRkZFUiwgbVVuaWZvcm1CdWZmZXIpOwotICAgIC8vIFdlIHVz
ZSBvbiBwdXJwb3NlIGEgc2l6ZSB3aGljaCBpcyBub3QgYSBtdWx0aXBsZSBvZiB0aGUgYWxpZ25t
ZW50LgotICAgIGdsQnVmZmVyRGF0YShHTF9VTklGT1JNX0JVRkZFUiwgc3RyaWRlICsgdmVjNFNp
emUsIHYuZGF0YSgpLCBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICBnbFVuaWZvcm1CbG9ja0JpbmRp
bmcobVByb2dyYW0sIG1Vbmlmb3JtQnVmZmVySW5kZXgsIDApOwotCi0gICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICAvLyBCaW5kIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSB1bmlmb3JtIGJ1
ZmZlciBhbmQgZHJhdwotICAgIC8vIFVzZSBhIHNpemUgd2hpY2ggaXMgc21hbGxlciB0aGFuIHRo
ZSBhbGlnbm1lbnQgdG8gY2hlY2sKLSAgICAvLyB0byBjaGVjayB0aGF0IHRoaXMgY2FzZSBpcyBo
YW5kbGUgY29ycmVjdGx5IGluIHRoZSBjb252ZXJzaW9uIHRvIDExLjEuCi0gICAgZ2xCaW5kQnVm
ZmVyUmFuZ2UoR0xfVU5JRk9STV9CVUZGRVIsIDAsIG1Vbmlmb3JtQnVmZmVyLCAwLCB2ZWM0U2l6
ZSk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9QSVhFTF9FUShweCwgcHksIDEwLCAyMCwgMzAs
IDQwKTsKLQotICAgIC8vIEJpbmQgdGhlIHNlY29uZCBwYXJ0IG9mIHRoZSB1bmlmb3JtIGJ1ZmZl
ciBhbmQgZHJhdwotICAgIC8vIEZ1cnRoZXJtb3JlIHRoZSBEM0QxMS4xIGJhY2tlbmQgd2lsbCBp
bnRlcm5hbGx5IHJvdW5kIHRoZSB2ZWM0U2l6ZSAoMTYgYnl0ZXMpIHRvIGEgc3RyaWRlICgyNTYg
Ynl0ZXMpCi0gICAgLy8gaGVuY2UgaXQgd2lsbCB0cnkgdG8gbWFwIHRoZSByYW5nZSBbc3RyaWRl
LCAyICogc3RyaWRlXSB3aGljaCBpcwotICAgIC8vIG91dC1vZi1ib3VuZCBvZiB0aGUgYnVmZmVy
IGJ1ZmZlclNpemUgPSBzdHJpZGUgKyB2ZWM0U2l6ZSA8IDIgKiBzdHJpZGUuCi0gICAgLy8gRW5z
dXJlIHRoYXQgdGhpcyBiZWhhdmlvdXIgd29ya3MuCi0gICAgZ2xCaW5kQnVmZmVyUmFuZ2UoR0xf
VU5JRk9STV9CVUZGRVIsIDAsIG1Vbmlmb3JtQnVmZmVyLCBzdHJpZGUsIHZlYzRTaXplKTsKLSAg
ICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKHB4LCBweSwgMTEwLCAxMjAsIDEzMCwgMTQw
KTsKLX0KLQotLy8gVGVzdCB1bmlmb3JtIGJsb2NrIGJpbmRpbmdzLgotVEVTVF9QKFVuaWZvcm1C
dWZmZXJUZXN0LCBVbmlmb3JtQnVmZmVyQmluZGluZ3MpCi17Ci0gICAgaW50IHB4ID0gZ2V0V2lu
ZG93V2lkdGgoKSAvIDI7Ci0gICAgaW50IHB5ID0gZ2V0V2luZG93SGVpZ2h0KCkgLyAyOwotCi0g
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBMZXQncyBjcmVhdGUgYSBidWZmZXIg
d2hpY2ggY29udGFpbnMgb25lIHZlYzQuCi0gICAgR0x1aW50IHZlYzRTaXplID0gNCAqIHNpemVv
ZihmbG9hdCk7Ci0gICAgc3RkOjp2ZWN0b3I8Y2hhcj4gdih2ZWM0U2l6ZSk7Ci0gICAgZmxvYXQg
KmZpcnN0ID0gcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHYuZGF0YSgpKTsKLQotICAgIGZpcnN0
WzBdID0gMTAuZiAvIDI1NS5mOwotICAgIGZpcnN0WzFdID0gMjAuZiAvIDI1NS5mOwotICAgIGZp
cnN0WzJdID0gMzAuZiAvIDI1NS5mOwotICAgIGZpcnN0WzNdID0gNDAuZiAvIDI1NS5mOwotCi0g
ICAgZ2xCaW5kQnVmZmVyKEdMX1VOSUZPUk1fQlVGRkVSLCBtVW5pZm9ybUJ1ZmZlcik7Ci0gICAg
Z2xCdWZmZXJEYXRhKEdMX1VOSUZPUk1fQlVGRkVSLCB2ZWM0U2l6ZSwgdi5kYXRhKCksIEdMX1NU
QVRJQ19EUkFXKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gVHJ5IHRv
IGJpbmQgdGhlIGJ1ZmZlciB0byBiaW5kaW5nIHBvaW50IDIKLSAgICBnbFVuaWZvcm1CbG9ja0Jp
bmRpbmcobVByb2dyYW0sIG1Vbmlmb3JtQnVmZmVySW5kZXgsIDIpOwotICAgIGdsQmluZEJ1ZmZl
ckJhc2UoR0xfVU5JRk9STV9CVUZGRVIsIDIsIG1Vbmlmb3JtQnVmZmVyKTsKLSAgICBkcmF3UXVh
ZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci0gICAgRVhQRUNUX1BJWEVMX0VRKHB4LCBweSwgMTAsIDIwLCAzMCwgNDApOwotCi0gICAgLy8g
Q2xlYXIgdGhlIGZyYW1lYnVmZmVyCi0gICAgZ2xDbGVhckNvbG9yKDAuMCwgMC4wLCAwLjAsIDAu
MCk7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICBFWFBFQ1RfUElYRUxf
RVEocHgsIHB5LCAwLCAwLCAwLCAwKTsKLQotICAgIC8vIFRyeSB0byBiaW5kIHRoZSBidWZmZXIg
dG8gYW5vdGhlciBiaW5kaW5nIHBvaW50Ci0gICAgZ2xVbmlmb3JtQmxvY2tCaW5kaW5nKG1Qcm9n
cmFtLCBtVW5pZm9ybUJ1ZmZlckluZGV4LCA1KTsKLSAgICBnbEJpbmRCdWZmZXJCYXNlKEdMX1VO
SUZPUk1fQlVGRkVSLCA1LCBtVW5pZm9ybUJ1ZmZlcik7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0s
ICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVD
VF9QSVhFTF9FUShweCwgcHksIDEwLCAyMCwgMzAsIDQwKTsKLX0KLQotLy8gVGVzdCB0aGF0IEFO
R0xFIGhhbmRsZXMgdXNlZCBidXQgdW5ib3VuZCBVQk8uCi0vLyBUT0RPOiBBIHRlc3QgY2FzZSBz
aG91bGRuJ3QgZGVwZW5kIG9uIHRoZSBlcnJvciBjb2RlIG9mIGFuIHVuZGVmaW5lZCBiZWhhdmlv
dXIuIE1vdmUgdGhpcyB0byB1bml0IHRlc3RzIG9mIHRoZSB2YWxpZGF0aW9uIGxheWVyLgotVEVT
VF9QKFVuaWZvcm1CdWZmZXJUZXN0LCBVbmJvdW5kVW5pZm9ybUJ1ZmZlcikKLXsKLSAgICBnbFVu
aWZvcm1CbG9ja0JpbmRpbmcobVByb2dyYW0sIG1Vbmlmb3JtQnVmZmVySW5kZXgsIDApOwotICAg
IGdsQmluZEJ1ZmZlckJhc2UoR0xfVU5JRk9STV9CVUZGRVIsIDAsIDApOwotICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYp
OwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLS8vIFVw
ZGF0ZSBhIFVCTyBtYW55IHRpbWUgYW5kIHZlcmlmeSB0aGF0IEFOR0xFIHVzZXMgdGhlIGxhdGVz
dCB2ZXJzaW9uIG9mIHRoZSBkYXRhLgotLy8gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmds
ZXByb2plY3QvaXNzdWVzL2RldGFpbD9pZD05NjUKLVRFU1RfUChVbmlmb3JtQnVmZmVyVGVzdCwg
VW5pZm9ybUJ1ZmZlck1hbnlVcGRhdGVzKQotewotICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpZ3Vy
ZSBvdXQgd2h5IHRoaXMgZmFpbHMgb24gSW50ZWwgT3BlbkdMLgotICAgIGlmIChJc0ludGVsKCkg
JiYgSXNPcGVuR0woKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVk
IG9uIEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGludCBweCA9IGdldFdpbmRvd1dpZHRoKCkgLyAyOwotICAgIGludCBweSA9IGdldFdp
bmRvd0hlaWdodCgpIC8gMjsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZmxv
YXQgZGF0YVs0XTsKLQotICAgIGdsQmluZEJ1ZmZlcihHTF9VTklGT1JNX0JVRkZFUiwgbVVuaWZv
cm1CdWZmZXIpOwotICAgIGdsQnVmZmVyRGF0YShHTF9VTklGT1JNX0JVRkZFUiwgc2l6ZW9mKGRh
dGEpLCBOVUxMLCBHTF9EWU5BTUlDX0RSQVcpOwotICAgIGdsVW5pZm9ybUJsb2NrQmluZGluZyht
UHJvZ3JhbSwgbVVuaWZvcm1CdWZmZXJJbmRleCwgMCk7Ci0gICAgZ2xCaW5kQnVmZmVyQmFzZShH
TF9VTklGT1JNX0JVRkZFUiwgMCwgbVVuaWZvcm1CdWZmZXIpOwotCi0gICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICAvLyBSZXBldGVhZGx5IHVwZGF0ZSB0aGUgZGF0YSBhbmQgZHJhdwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTA7ICsraSkKLSAgICB7Ci0gICAgICAgIGRhdGFb
MF0gPSAoaSArIDEwLmYpIC8gMjU1LmY7Ci0gICAgICAgIGRhdGFbMV0gPSAoaSArIDIwLmYpIC8g
MjU1LmY7Ci0gICAgICAgIGRhdGFbMl0gPSAoaSArIDMwLmYpIC8gMjU1LmY7Ci0gICAgICAgIGRh
dGFbM10gPSAoaSArIDQwLmYpIC8gMjU1LmY7Ci0KLSAgICAgICAgZ2xCdWZmZXJTdWJEYXRhKEdM
X1VOSUZPUk1fQlVGRkVSLCAwLCBzaXplb2YoZGF0YSksIGRhdGEpOwotCi0gICAgICAgIGRyYXdR
dWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7Ci0gICAgICAgIEVYUEVDVF9QSVhFTF9FUShweCwgcHksIGkgKyAxMCwgaSArIDIwLCBp
ICsgMzAsIGkgKyA0MCk7Ci0gICAgfQotfQotCi0vLyBVc2UgYSBsYXJnZSBudW1iZXIgb2YgYnVm
ZmVyIHJhbmdlcyAoY29tcGFyZWQgdG8gdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBVQk8pCi1URVNU
X1AoVW5pZm9ybUJ1ZmZlclRlc3QsIE1hbnlVbmlmb3JtQnVmZmVyUmFuZ2UpCi17Ci0gICAgLy8g
VE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCB3aHkgdGhpcyBmYWlscyBvbiBJbnRlbC4KLSAgICBp
ZiAoSXNJbnRlbCgpICYmIElzRDNEMTEoKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAi
VGVzdCBza2lwcGVkIG9uIEludGVsIEQzRDExLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGludCBweCA9IGdldFdpbmRvd1dpZHRoKCkgLyAyOwotICAgIGludCBw
eSA9IGdldFdpbmRvd0hlaWdodCgpIC8gMjsKLQotICAgIC8vIFF1ZXJ5IHRoZSB1bmlmb3JtIGJ1
ZmZlciBhbGlnbm1lbnQgcmVxdWlyZW1lbnQKLSAgICBHTGludCBhbGlnbm1lbnQ7Ci0gICAgZ2xH
ZXRJbnRlZ2VydihHTF9VTklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJR05NRU5ULCAmYWxpZ25tZW50
KTsKLQotICAgIEdMaW50NjQgbWF4VW5pZm9ybUJsb2NrU2l6ZTsKLSAgICBnbEdldEludGVnZXI2
NHYoR0xfTUFYX1VOSUZPUk1fQkxPQ0tfU0laRSwgJm1heFVuaWZvcm1CbG9ja1NpemUpOwotICAg
IGlmIChhbGlnbm1lbnQgPj0gbWF4VW5pZm9ybUJsb2NrU2l6ZSkKLSAgICB7Ci0gICAgICAgIC8v
IEFOR0xFIGRvZXNuJ3QgaW1wbGVtZW50IFVCTyBvZmZzZXRzIGZvciB0aGlzIHBsYXRmb3JtLgot
ICAgICAgICAvLyBJZ25vcmUgdGhlIHRlc3QgY2FzZS4KLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gTGV0J3MgY3JlYXRlIGEgYnVm
ZmVyIHdoaWNoIGNvbnRhaW5zIGVpZ2h0IHZlYzQuCi0gICAgR0x1aW50IHZlYzRTaXplID0gNCAq
IHNpemVvZihmbG9hdCk7Ci0gICAgR0x1aW50IHN0cmlkZSA9IDA7Ci0gICAgZG8KLSAgICB7Ci0g
ICAgICAgIHN0cmlkZSArPSBhbGlnbm1lbnQ7Ci0gICAgfQotICAgIHdoaWxlIChzdHJpZGUgPCB2
ZWM0U2l6ZSk7Ci0KLSAgICBzdGQ6OnZlY3RvcjxjaGFyPiB2KDggKiBzdHJpZGUpOwotCi0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCA4OyArK2kpCi0gICAgewotICAgICAgICBmbG9hdCAqZGF0
YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQqPih2LmRhdGEoKSArIGkgKiBzdHJpZGUpOwotCi0g
ICAgICAgIGRhdGFbMF0gPSAoaSArIDEwLmYpIC8gMjU1LmY7Ci0gICAgICAgIGRhdGFbMV0gPSAo
aSArIDIwLmYpIC8gMjU1LmY7Ci0gICAgICAgIGRhdGFbMl0gPSAoaSArIDMwLmYpIC8gMjU1LmY7
Ci0gICAgICAgIGRhdGFbM10gPSAoaSArIDQwLmYpIC8gMjU1LmY7Ci0gICAgfQotCi0gICAgZ2xC
aW5kQnVmZmVyKEdMX1VOSUZPUk1fQlVGRkVSLCBtVW5pZm9ybUJ1ZmZlcik7Ci0gICAgZ2xCdWZm
ZXJEYXRhKEdMX1VOSUZPUk1fQlVGRkVSLCB2LnNpemUoKSwgdi5kYXRhKCksIEdMX1NUQVRJQ19E
UkFXKTsKLQotICAgIGdsVW5pZm9ybUJsb2NrQmluZGluZyhtUHJvZ3JhbSwgbVVuaWZvcm1CdWZm
ZXJJbmRleCwgMCk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIEJpbmQg
ZWFjaCBwb3NzaWJsZSBvZmZzZXQKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDg7ICsraSkK
LSAgICB7Ci0gICAgICAgIGdsQmluZEJ1ZmZlclJhbmdlKEdMX1VOSUZPUk1fQlVGRkVSLCAwLCBt
VW5pZm9ybUJ1ZmZlciwgaSAqIHN0cmlkZSwgc3RyaWRlKTsKLSAgICAgICAgZHJhd1F1YWQobVBy
b2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
LSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKHB4LCBweSwgMTAgKyBpLCAyMCArIGksIDMwICsgaSwg
NDAgKyBpKTsKLSAgICB9Ci0KLSAgICAvLyBUcnkgdG8gYmluZCBsYXJnZXIgcmFuZ2UKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IDc7ICsraSkKLSAgICB7Ci0gICAgICAgIGdsQmluZEJ1ZmZl
clJhbmdlKEdMX1VOSUZPUk1fQlVGRkVSLCAwLCBtVW5pZm9ybUJ1ZmZlciwgaSAqIHN0cmlkZSwg
MiAqIHN0cmlkZSk7Ci0gICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAgIEVYUEVDVF9QSVhFTF9F
UShweCwgcHksIDEwICsgaSwgMjAgKyBpLCAzMCArIGksIDQwICsgaSk7Ci0gICAgfQotCi0gICAg
Ly8gVHJ5IHRvIGJpbmQgZXZlbiBsYXJnZXIgcmFuZ2UKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IDU7ICsraSkKLSAgICB7Ci0gICAgICAgIGdsQmluZEJ1ZmZlclJhbmdlKEdMX1VOSUZPUk1f
QlVGRkVSLCAwLCBtVW5pZm9ybUJ1ZmZlciwgaSAqIHN0cmlkZSwgNCAqIHN0cmlkZSk7Ci0gICAg
ICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICAgICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci0gICAgICAgIEVYUEVDVF9QSVhFTF9FUShweCwgcHksIDEwICsgaSwg
MjAgKyBpLCAzMCArIGksIDQwICsgaSk7Ci0gICAgfQotfQotCi0vLyBUZXN0cyB0aGF0IGFjdGl2
ZSB1bmlmb3JtcyBoYXZlIHRoZSByaWdodCBuYW1lcy4KLVRFU1RfUChVbmlmb3JtQnVmZmVyVGVz
dCwgQWN0aXZlVW5pZm9ybU5hbWVzKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhT
aGFkZXJTb3VyY2UgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJpbiB2
ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAib3V0IGZsb2F0IHY7XG4iCi0gICAgICAgICJ1bmlm
b3JtIGJsb2NrTmFtZSB7XG4iCi0gICAgICAgICIgIGZsb2F0IGY7XG4iCi0gICAgICAgICJ9IGlu
c3RhbmNlTmFtZTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgdiA9
IGluc3RhbmNlTmFtZS5mO1xuIgotICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRp
b24sIDAsIDEpO1xuIgotICAgICAgICAifSI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJh
Z21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAg
ICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCi0gICAgICAgICJpbiBmbG9hdCB2O1xuIgotICAg
ICAgICAib3V0IHZlYzQgY29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAg
ICAgICIgIGNvbG9yID0gdmVjNCh2LCAwLCAwLCAxKTtcbiIKLSAgICAgICAgIn0iOwotCi0gICAg
R0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdt
ZW50U2hhZGVyU291cmNlKTsKLSAgICBBU1NFUlRfTkUoMHUsIHByb2dyYW0pOwotCi0gICAgR0xp
bnQgYWN0aXZlVW5pZm9ybXM7Ci0gICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZF
X1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOwotCi0gICAgQVNTRVJUX0VRKDEsIGFjdGl2ZVVu
aWZvcm1zKTsKLQotICAgIEdMaW50IG1heExlbmd0aCwgc2l6ZTsKLSAgICBHTGVudW0gdHlwZTsK
LSAgICBHTHNpemVpIGxlbmd0aDsKLSAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9BQ1RJ
VkVfVU5JRk9STV9NQVhfTEVOR1RILCAmbWF4TGVuZ3RoKTsKLSAgICBzdGQ6OnZlY3RvcjxHTGNo
YXI+IHN0ckJ1ZmZlcihtYXhMZW5ndGggKyAxLCAwKTsKLSAgICBnbEdldEFjdGl2ZVVuaWZvcm0o
cHJvZ3JhbSwgMCwgbWF4TGVuZ3RoLCAmbGVuZ3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZmZXJb
MF0pOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VRKDEsIHNpemUp
OwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVQsIHR5cGUpOwotICAgIEVYUEVDVF9FUSgi
YmxvY2tOYW1lLmYiLCBzdGQ6OnN0cmluZygmc3RyQnVmZmVyWzBdKSk7Ci19Ci0KLS8vIFRlc3Rz
IGFjdGl2ZSB1bmlmb3JtcyBhbmQgYmxvY2tzIHdoZW4gdGhlIGxheW91dCBpcyBzdGQxNDAsIHNo
YXJlZCBhbmQgcGFja2VkLgotVEVTVF9QKFVuaWZvcm1CdWZmZXJUZXN0LCBBY3RpdmVVbmlmb3Jt
TnVtYmVyQW5kTmFtZSkKLXsKLSAgICAvLyBUT0RPKEppYWppYSk6IEZpZ3VyZSBvdXQgd2h5IHRo
aXMgZmFpbHMgb24gSW50ZWwgb24gTWFjLgotICAgIC8vIFRoaXMgY2FzZSBjYW4gcGFzcyBvbiBJ
bnRlbCBNYWMtMTAuMTEvMTAuMTIuIEJ1dCBpdCBmYWlscyBvbiBJbnRlbCBNYWMtMTAuMTAuCi0g
ICAgaWYgKElzSW50ZWwoKSAmJiBJc09TWCgpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgb24gTWFjLiIgPDwgc3RkOjplbmRsOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgLy8gVGhpcyBjYXNlIGZhaWxzIG9uIGFsbCBBTUQgcGxhdGZv
cm1zIChNYWMsIExpbnV4LCBXaW4pLgotICAgIGlmIChJc0FNRCgpKQotICAgIHsKLSAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gQU1ELiIgPDwgc3RkOjplbmRsOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleFNoYWRlclNv
dXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgImluIHZlYzIgcG9z
aXRpb247XG4iCi0gICAgICAgICJvdXQgZmxvYXQgdjtcbiIKLSAgICAgICAgInN0cnVjdCBTIHtc
biIKLSAgICAgICAgIiAgaGlnaHAgaXZlYzMgYTtcbiIKLSAgICAgICAgIiAgbWVkaXVtcCBpdmVj
MiBiWzRdO1xuIgotICAgICAgICAifTtcbiIKLSAgICAgICAgInN0cnVjdCBUIHtcbiIKLSAgICAg
ICAgIiAgUyBjWzJdO1xuIgotICAgICAgICAifTtcbiIKLSAgICAgICAgImxheW91dChzdGQxNDAp
IHVuaWZvcm0gYmxvY2tOYW1lMCB7XG4iCi0gICAgICAgICIgIFMgczA7XG4iCi0gICAgICAgICIg
IGxvd3AgdmVjMiB2MDtcbiIKLSAgICAgICAgIiAgVCB0MFsyXTtcbiIKLSAgICAgICAgIiAgaGln
aHAgdWludCB1MDtcbiIKLSAgICAgICAgIn07XG4iCi0gICAgICAgICJsYXlvdXQoc3RkMTQwKSB1
bmlmb3JtIGJsb2NrTmFtZTEge1xuIgotICAgICAgICAiICBmbG9hdCBmMTtcbiIKLSAgICAgICAg
IiAgYm9vbCBiMTtcbiIKLSAgICAgICAgIn0gaW5zdGFuY2VOYW1lMTtcbiIKLSAgICAgICAgImxh
eW91dChzaGFyZWQpIHVuaWZvcm0gYmxvY2tOYW1lMiB7XG4iCi0gICAgICAgICIgIGZsb2F0IGYy
O1xuIgotICAgICAgICAifTtcbiIKLSAgICAgICAgImxheW91dChwYWNrZWQpIHVuaWZvcm0gYmxv
Y2tOYW1lMyB7XG4iCi0gICAgICAgICIgIGZsb2F0IGYzO1xuIgotICAgICAgICAifTtcbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgdiA9IGluc3RhbmNlTmFtZTEuZjE7
XG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMCwgMSk7XG4iCi0g
ICAgICAgICJ9IjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRlclNvdXJj
ZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBoaWdo
cCBmbG9hdDtcbiIKLSAgICAgICAgImluIGZsb2F0IHY7XG4iCi0gICAgICAgICJvdXQgdmVjNCBj
b2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgY29sb3IgPSB2
ZWM0KHYsIDAsIDAsIDEpO1xuIgotICAgICAgICAifSI7Ci0KLSAgICBBTkdMRV9HTF9QUk9HUkFN
KHByb2dyYW0sIHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotCi0g
ICAgR0xpbnQgYWN0aXZlVW5pZm9ybXM7Ci0gICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbS5nZXQo
KSwgR0xfQUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXMpOwotCi0gICAgQVNTRVJUX0VR
KDE1LCBhY3RpdmVVbmlmb3Jtcyk7Ci0KLSAgICBHTGludCBhY3RpdmVVbmlmb3JtQmxvY2tzOwot
ICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0uZ2V0KCksIEdMX0FDVElWRV9VTklGT1JNX0JMT0NL
UywgJmFjdGl2ZVVuaWZvcm1CbG9ja3MpOwotCi0gICAgQVNTRVJUX0VRKDMsIGFjdGl2ZVVuaWZv
cm1CbG9ja3MpOwotCi0gICAgR0xpbnQgbWF4TGVuZ3RoLCBzaXplOwotICAgIEdMZW51bSB0eXBl
OwotICAgIEdMc2l6ZWkgbGVuZ3RoOwotICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0uZ2V0KCks
IEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhMZW5ndGgpOwotICAgIHN0ZDo6dmVj
dG9yPEdMY2hhcj4gc3RyQnVmZmVyKG1heExlbmd0aCArIDEsIDApOwotCi0gICAgZ2xHZXRBY3Rp
dmVVbmlmb3JtKHByb2dyYW0uZ2V0KCksIDAsIG1heExlbmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0
eXBlLCAmc3RyQnVmZmVyWzBdKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBF
Q1RfRVEoMSwgc2l6ZSk7Ci0gICAgRVhQRUNUX0VRKCJzMC5hIiwgc3RkOjpzdHJpbmcoJnN0ckJ1
ZmZlclswXSkpOwotCi0gICAgZ2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0uZ2V0KCksIDEsIG1h
eExlbmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0eXBlLCAmc3RyQnVmZmVyWzBdKTsKLSAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfRVEoNCwgc2l6ZSk7Ci0gICAgRVhQRUNUX0VR
KCJzMC5iWzBdIiwgc3RkOjpzdHJpbmcoJnN0ckJ1ZmZlclswXSkpOwotCi0gICAgZ2xHZXRBY3Rp
dmVVbmlmb3JtKHByb2dyYW0uZ2V0KCksIDIsIG1heExlbmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0
eXBlLCAmc3RyQnVmZmVyWzBdKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBF
Q1RfRVEoMSwgc2l6ZSk7Ci0gICAgRVhQRUNUX0VRKCJ2MCIsIHN0ZDo6c3RyaW5nKCZzdHJCdWZm
ZXJbMF0pKTsKLQotICAgIGdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLmdldCgpLCAzLCBtYXhM
ZW5ndGgsICZsZW5ndGgsICZzaXplLCAmdHlwZSwgJnN0ckJ1ZmZlclswXSk7Ci0gICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VRKDEsIHNpemUpOwotICAgIEVYUEVDVF9FUSgi
dDBbMF0uY1swXS5hIiwgc3RkOjpzdHJpbmcoJnN0ckJ1ZmZlclswXSkpOwotCi0gICAgZ2xHZXRB
Y3RpdmVVbmlmb3JtKHByb2dyYW0uZ2V0KCksIDQsIG1heExlbmd0aCwgJmxlbmd0aCwgJnNpemUs
ICZ0eXBlLCAmc3RyQnVmZmVyWzBdKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBF
WFBFQ1RfRVEoNCwgc2l6ZSk7Ci0gICAgRVhQRUNUX0VRKCJ0MFswXS5jWzBdLmJbMF0iLCBzdGQ6
OnN0cmluZygmc3RyQnVmZmVyWzBdKSk7Ci0KLSAgICBnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3Jh
bS5nZXQoKSwgNSwgbWF4TGVuZ3RoLCAmbGVuZ3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZmZXJb
MF0pOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9FUSgxLCBzaXplKTsK
LSAgICBFWFBFQ1RfRVEoInQwWzBdLmNbMV0uYSIsIHN0ZDo6c3RyaW5nKCZzdHJCdWZmZXJbMF0p
KTsKLQotICAgIGdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLmdldCgpLCA2LCBtYXhMZW5ndGgs
ICZsZW5ndGgsICZzaXplLCAmdHlwZSwgJnN0ckJ1ZmZlclswXSk7Ci0gICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VRKDQsIHNpemUpOwotICAgIEVYUEVDVF9FUSgidDBbMF0u
Y1sxXS5iWzBdIiwgc3RkOjpzdHJpbmcoJnN0ckJ1ZmZlclswXSkpOwotCi0gICAgZ2xHZXRBY3Rp
dmVVbmlmb3JtKHByb2dyYW0uZ2V0KCksIDcsIG1heExlbmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0
eXBlLCAmc3RyQnVmZmVyWzBdKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBF
Q1RfRVEoMSwgc2l6ZSk7Ci0gICAgRVhQRUNUX0VRKCJ0MFsxXS5jWzBdLmEiLCBzdGQ6OnN0cmlu
Zygmc3RyQnVmZmVyWzBdKSk7Ci0KLSAgICBnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbS5nZXQo
KSwgOCwgbWF4TGVuZ3RoLCAmbGVuZ3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZmZXJbMF0pOwot
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9FUSg0LCBzaXplKTsKLSAgICBF
WFBFQ1RfRVEoInQwWzFdLmNbMF0uYlswXSIsIHN0ZDo6c3RyaW5nKCZzdHJCdWZmZXJbMF0pKTsK
LQotICAgIGdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLmdldCgpLCA5LCBtYXhMZW5ndGgsICZs
ZW5ndGgsICZzaXplLCAmdHlwZSwgJnN0ckJ1ZmZlclswXSk7Ci0gICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Ci0gICAgRVhQRUNUX0VRKDEsIHNpemUpOwotICAgIEVYUEVDVF9FUSgidDBbMV0uY1sx
XS5hIiwgc3RkOjpzdHJpbmcoJnN0ckJ1ZmZlclswXSkpOwotCi0gICAgZ2xHZXRBY3RpdmVVbmlm
b3JtKHByb2dyYW0uZ2V0KCksIDEwLCBtYXhMZW5ndGgsICZsZW5ndGgsICZzaXplLCAmdHlwZSwg
JnN0ckJ1ZmZlclswXSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VR
KDQsIHNpemUpOwotICAgIEVYUEVDVF9FUSgidDBbMV0uY1sxXS5iWzBdIiwgc3RkOjpzdHJpbmco
JnN0ckJ1ZmZlclswXSkpOwotCi0gICAgZ2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0uZ2V0KCks
IDExLCBtYXhMZW5ndGgsICZsZW5ndGgsICZzaXplLCAmdHlwZSwgJnN0ckJ1ZmZlclswXSk7Ci0g
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VRKDEsIHNpemUpOwotICAgIEVY
UEVDVF9FUSgidTAiLCBzdGQ6OnN0cmluZygmc3RyQnVmZmVyWzBdKSk7Ci0KLSAgICBnbEdldEFj
dGl2ZVVuaWZvcm0ocHJvZ3JhbS5nZXQoKSwgMTIsIG1heExlbmd0aCwgJmxlbmd0aCwgJnNpemUs
ICZ0eXBlLCAmc3RyQnVmZmVyWzBdKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBF
WFBFQ1RfRVEoMSwgc2l6ZSk7Ci0gICAgRVhQRUNUX0VRKCJibG9ja05hbWUxLmYxIiwgc3RkOjpz
dHJpbmcoJnN0ckJ1ZmZlclswXSkpOwotCi0gICAgZ2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0u
Z2V0KCksIDEzLCBtYXhMZW5ndGgsICZsZW5ndGgsICZzaXplLCAmdHlwZSwgJnN0ckJ1ZmZlclsw
XSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VRKDEsIHNpemUpOwot
ICAgIEVYUEVDVF9FUSgiYmxvY2tOYW1lMS5iMSIsIHN0ZDo6c3RyaW5nKCZzdHJCdWZmZXJbMF0p
KTsKLQotICAgIGdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLmdldCgpLCAxNCwgbWF4TGVuZ3Ro
LCAmbGVuZ3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZmZXJbMF0pOwotICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotICAgIEVYUEVDVF9FUSgxLCBzaXplKTsKLSAgICBFWFBFQ1RfRVEoImYyIiwg
c3RkOjpzdHJpbmcoJnN0ckJ1ZmZlclswXSkpOwotfQotCi0vLyBUZXN0IHRoYXQgdXNpbmcgYSB2
ZXJ5IGxhcmdlIGJ1ZmZlciB0byBiYWNrIGEgc21hbGwgdW5pZm9ybSBibG9jayB3b3JrcyBPSy4K
LVRFU1RfUChVbmlmb3JtQnVmZmVyVGVzdCwgVmVyeUxhcmdlKQotewotICAgIC8vIFRPRE8oam1h
ZGlsbCk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgZmFpbHMgb24gSW50ZWwuCi0gICAgLy8gU2VlIGh0
dHA6Ly9jcmJ1Zy5jb20vNTkzMDI0Ci0gICAgaWYgKElzSW50ZWwoKSAmJiBJc0QzRDExKCkpCi0g
ICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBEM0QxMS4i
IDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsQ2xlYXIoR0xf
Q09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgZmxvYXQgZmxvYXREYXRhWzRdID0gezAuNWYsIDAuNzVm
LCAwLjI1ZiwgMS4wZn07Ci0KLSAgICBHTHNpemVpIGJpZ1NpemUgPSA0MDk2ICogNjQ7Ci0KLSAg
ICBnbEJpbmRCdWZmZXIoR0xfVU5JRk9STV9CVUZGRVIsIG1Vbmlmb3JtQnVmZmVyKTsKLSAgICBn
bEJ1ZmZlckRhdGEoR0xfVU5JRk9STV9CVUZGRVIsIGJpZ1NpemUsIG51bGxwdHIsIEdMX1NUQVRJ
Q19EUkFXKTsKLSAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfVU5JRk9STV9CVUZGRVIsIDAsIHNpemVv
ZihmbG9hdCkgKiA0LCBmbG9hdERhdGEpOwotCi0gICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9VTklG
T1JNX0JVRkZFUiwgMCwgbVVuaWZvcm1CdWZmZXIpOwotCi0gICAgZ2xVbmlmb3JtQmxvY2tCaW5k
aW5nKG1Qcm9ncmFtLCBtVW5pZm9ybUJ1ZmZlckluZGV4LCAwKTsKLSAgICBkcmF3UXVhZChtUHJv
Z3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAg
ICBFWFBFQ1RfUElYRUxfTkVBUigwLCAwLCAxMjgsIDE5MSwgNjQsIDI1NSwgMSk7Ci19Ci0KLS8v
IFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5k
ZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVu
IGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKFVuaWZvcm1CdWZmZXJUZXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
RVMzX0QzRDExX0ZMMTFfMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTFfRkwx
MV8xX1JFRkVSRU5DRSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKLQotfSAvLyBuYW1lc3BhY2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9V
bmlmb3JtVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVz
dHMvVW5pZm9ybVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmQ3MWFl
MzhjMWNmNmY1NzY4MzM0YjcxYzJkMDBlMmNiYzNhNjNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9nbF90ZXN0cy9Vbmlmb3JtVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MzQgKzAsMCBA
QAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLSNpbmNs
dWRlIDxhcnJheT4KLSNpbmNsdWRlIDxjbWF0aD4KLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwot
Ci1uYW1lc3BhY2UKLXsKLQotY2xhc3MgVW5pZm9ybVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17
Ci0gIHByb3RlY3RlZDoKLSAgICBVbmlmb3JtVGVzdCgpIDogbVByb2dyYW0oMCksIG1Vbmlmb3Jt
RkxvY2F0aW9uKC0xKSwgbVVuaWZvcm1JTG9jYXRpb24oLTEpLCBtVW5pZm9ybUJMb2NhdGlvbigt
MSkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7Ci0gICAgICAgIHNldFdpbmRv
d0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRD
b25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAg
ICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnZlcnRleFNoYWRlciA9ICJ2b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9uID0g
dmVjNCgxKTsgfSI7Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnU2hhZGVyID0KLSAg
ICAgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgICAgICJ1bmlm
b3JtIGZsb2F0IHVuaUY7XG4iCi0gICAgICAgICAgICAidW5pZm9ybSBpbnQgdW5pSTtcbiIKLSAg
ICAgICAgICAgICJ1bmlmb3JtIGJvb2wgdW5pQjtcbiIKLSAgICAgICAgICAgICJ1bmlmb3JtIGJv
b2wgdW5pQkFycls0XTtcbiIKLSAgICAgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAg
ICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHVuaUYgKyBmbG9hdCh1bmlJKSk7XG4iCi0gICAg
ICAgICAgICAiICBnbF9GcmFnQ29sb3IgKz0gdmVjNCh1bmlCID8gMS4wIDogMC4wKTtcbiIKLSAg
ICAgICAgICAgICIgIGdsX0ZyYWdDb2xvciArPSB2ZWM0KHVuaUJBcnJbMF0gPyAxLjAgOiAwLjAp
O1xuIgotICAgICAgICAgICAgIn0iOwotCi0gICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dy
YW0odmVydGV4U2hhZGVyLCBmcmFnU2hhZGVyKTsKLSAgICAgICAgQVNTRVJUX05FKG1Qcm9ncmFt
LCAwdSk7Ci0KLSAgICAgICAgbVVuaWZvcm1GTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlv
bihtUHJvZ3JhbSwgInVuaUYiKTsKLSAgICAgICAgQVNTRVJUX05FKG1Vbmlmb3JtRkxvY2F0aW9u
LCAtMSk7Ci0KLSAgICAgICAgbVVuaWZvcm1JTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlv
bihtUHJvZ3JhbSwgInVuaUkiKTsKLSAgICAgICAgQVNTRVJUX05FKG1Vbmlmb3JtSUxvY2F0aW9u
LCAtMSk7Ci0KLSAgICAgICAgbVVuaWZvcm1CTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlv
bihtUHJvZ3JhbSwgInVuaUIiKTsKLSAgICAgICAgQVNTRVJUX05FKG1Vbmlmb3JtQkxvY2F0aW9u
LCAtMSk7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9p
ZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVBy
b2dyYW0pOwotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgR0x1
aW50IG1Qcm9ncmFtOwotICAgIEdMaW50IG1Vbmlmb3JtRkxvY2F0aW9uOwotICAgIEdMaW50IG1V
bmlmb3JtSUxvY2F0aW9uOwotICAgIEdMaW50IG1Vbmlmb3JtQkxvY2F0aW9uOwotfTsKLQotVEVT
VF9QKFVuaWZvcm1UZXN0LCBHZXRVbmlmb3JtTm9DdXJyZW50UHJvZ3JhbSkKLXsKLSAgICBnbFVz
ZVByb2dyYW0obVByb2dyYW0pOwotICAgIGdsVW5pZm9ybTFmKG1Vbmlmb3JtRkxvY2F0aW9uLCAx
LjBmKTsKLSAgICBnbFVuaWZvcm0xaShtVW5pZm9ybUlMb2NhdGlvbiwgMSk7Ci0gICAgZ2xVc2VQ
cm9ncmFtKDApOwotCi0gICAgR0xmbG9hdCBmOwotICAgIGdsR2V0blVuaWZvcm1mdkVYVChtUHJv
Z3JhbSwgbVVuaWZvcm1GTG9jYXRpb24sIDQsICZmKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKLSAgICBFWFBFQ1RfRVEoMS4wZiwgZik7Ci0KLSAgICBnbEdldFVuaWZvcm1mdihtUHJvZ3Jh
bSwgbVVuaWZvcm1GTG9jYXRpb24sICZmKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAg
ICBFWFBFQ1RfRVEoMS4wZiwgZik7Ci0KLSAgICBHTGludCBpOwotICAgIGdsR2V0blVuaWZvcm1p
dkVYVChtUHJvZ3JhbSwgbVVuaWZvcm1JTG9jYXRpb24sIDQsICZpKTsKLSAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfRVEoMSwgaSk7Ci0KLSAgICBnbEdldFVuaWZvcm1pdiht
UHJvZ3JhbSwgbVVuaWZvcm1JTG9jYXRpb24sICZpKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKLSAgICBFWFBFQ1RfRVEoMSwgaSk7Ci19Ci0KLVRFU1RfUChVbmlmb3JtVGVzdCwgVW5pZm9y
bUFycmF5TG9jYXRpb25zKQotewotICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmlndXJlIG91dCB3
aHkgdGhpcyBpcyBicm9rZW4gb24gSW50ZWwgT3BlbkdMCi0gICAgaWYgKElzSW50ZWwoKSAmJiBn
ZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FO
R0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwg
T3BlbkdMLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29u
c3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAg
ICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Ci0gICAgICAgIHVuaWZvcm0gZmxvYXQgdVBvc2l0
aW9uWzRdOwotICAgICAgICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgewotICAgICAgICAgICAg
Z2xfUG9zaXRpb24gPSB2ZWM0KHVQb3NpdGlvblswXSwgdVBvc2l0aW9uWzFdLCB1UG9zaXRpb25b
Ml0sIHVQb3NpdGlvblszXSk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgZnJhZ1NoYWRlciA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIHByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OwotICAgICAgICB1bmlmb3JtIGZsb2F0IHVDb2xvcls0XTsKLSAgICAg
ICAgdm9pZCBtYWluKHZvaWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9
IHZlYzQodUNvbG9yWzBdLCB1Q29sb3JbMV0sIHVDb2xvclsyXSwgdUNvbG9yWzNdKTsKLSAgICAg
ICAgfQotICAgICk7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRl
eFNoYWRlciwgZnJhZ1NoYWRlcik7Ci0gICAgQVNTRVJUX05FKHByb2dyYW0sIDB1KTsKLQotICAg
IC8vIEFycmF5IGluZGV4IHplcm8gc2hvdWxkIGJlIGVxdWl2YWxlbnQgdG8gdGhlIHVuLWluZGV4
ZWQgdW5pZm9ybQotICAgIEVYUEVDVF9ORSgtMSwgZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3Jh
bSwgInVQb3NpdGlvbiIpKTsKLSAgICBFWFBFQ1RfRVEoZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJv
Z3JhbSwgInVQb3NpdGlvbiIpLCBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidVBvc2l0
aW9uWzBdIikpOwotCi0gICAgRVhQRUNUX05FKC0xLCBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCAidUNvbG9yIikpOwotICAgIEVYUEVDVF9FUShnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9n
cmFtLCAidUNvbG9yIiksIGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1Q29sb3JbMF0i
KSk7Ci0KLSAgICAvLyBBbGwgYXJyYXkgdW5pZm9ybSBsb2NhdGlvbnMgc2hvdWxkIGJlIHVuaXF1
ZQotICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb25zWzRdID0KLSAgICB7Ci0gICAgICAgIGdsR2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1UG9zaXRpb25bMF0iKSwKLSAgICAgICAgZ2xHZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVQb3NpdGlvblsxXSIpLAotICAgICAgICBnbEdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidVBvc2l0aW9uWzJdIiksCi0gICAgICAgIGdsR2V0VW5p
Zm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1UG9zaXRpb25bM10iKSwKLSAgICB9OwotCi0gICAgR0xp
bnQgY29sb3JMb2NhdGlvbnNbNF0gPQotICAgIHsKLSAgICAgICAgZ2xHZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgInVDb2xvclswXSIpLAotICAgICAgICBnbEdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAidUNvbG9yWzFdIiksCi0gICAgICAgIGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dy
YW0sICJ1Q29sb3JbMl0iKSwKLSAgICAgICAgZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
InVDb2xvclszXSIpLAotICAgIH07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDQ7IGkr
KykKLSAgICB7Ci0gICAgICAgIEVYUEVDVF9ORSgtMSwgcG9zaXRpb25Mb2NhdGlvbnNbaV0pOwot
ICAgICAgICBFWFBFQ1RfTkUoLTEsIGNvbG9yTG9jYXRpb25zW2ldKTsKLQotICAgICAgICBmb3Ig
KHNpemVfdCBqID0gaSArIDE7IGogPCA0OyBqKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVY
UEVDVF9ORShwb3NpdGlvbkxvY2F0aW9uc1tpXSwgcG9zaXRpb25Mb2NhdGlvbnNbal0pOwotICAg
ICAgICAgICAgRVhQRUNUX05FKGNvbG9yTG9jYXRpb25zW2ldLCBjb2xvckxvY2F0aW9uc1tqXSk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Ci19Ci0K
LS8vIFRlc3QgdGhhdCBmbG9hdCB0byBpbnRlZ2VyIEdldFVuaWZvcm0gcm91bmRzIHZhbHVlcyBj
b3JyZWN0bHkuCi1URVNUX1AoVW5pZm9ybVRlc3QsIEZsb2F0VW5pZm9ybVN0YXRlUXVlcnkpCi17
Ci0gICAgc3RkOjp2ZWN0b3I8ZG91YmxlPiBpblZhbHVlczsKLSAgICBzdGQ6OnZlY3RvcjxHTGZs
b2F0PiBleHBlY3RlZEZWYWx1ZXM7Ci0gICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IGV4cGVjdGVkSVZh
bHVlczsKLQotICAgIGRvdWJsZSBpbnRNYXhEID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51
bWVyaWNfbGltaXRzPEdMaW50Pjo6bWF4KCkpOwotICAgIGRvdWJsZSBpbnRNaW5EID0gc3RhdGlj
X2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPEdMaW50Pjo6bWluKCkpOwotCi0gICAg
Ly8gVE9ETyhqbWFkaWxsKTogSW52ZXN0aWdhdGUgcm91bmRpbmcgb2YgLjUKLSAgICBpblZhbHVl
cy5wdXNoX2JhY2soLTEuMCk7Ci0gICAgaW5WYWx1ZXMucHVzaF9iYWNrKC0wLjYpOwotICAgIC8v
IGluVmFsdWVzLnB1c2hfYmFjaygtMC41KTsgLy8gdW5kZWZpbmVkIGJlaGF2aW91cj8KLSAgICBp
blZhbHVlcy5wdXNoX2JhY2soLTAuNCk7Ci0gICAgaW5WYWx1ZXMucHVzaF9iYWNrKDAuMCk7Ci0g
ICAgaW5WYWx1ZXMucHVzaF9iYWNrKDAuNCk7Ci0gICAgLy8gaW5WYWx1ZXMucHVzaF9iYWNrKDAu
NSk7IC8vIHVuZGVmaW5lZCBiZWhhdmlvdXI/Ci0gICAgaW5WYWx1ZXMucHVzaF9iYWNrKDAuNik7
Ci0gICAgaW5WYWx1ZXMucHVzaF9iYWNrKDEuMCk7Ci0gICAgaW5WYWx1ZXMucHVzaF9iYWNrKDk5
OTk5OS4yKTsKLSAgICBpblZhbHVlcy5wdXNoX2JhY2soaW50TWF4RCAqIDIuMCk7Ci0gICAgaW5W
YWx1ZXMucHVzaF9iYWNrKGludE1heEQgKyAxLjApOwotICAgIGluVmFsdWVzLnB1c2hfYmFjayhp
bnRNaW5EICogMi4wKTsKLSAgICBpblZhbHVlcy5wdXNoX2JhY2soaW50TWluRCAtIDEuMCk7Ci0K
LSAgICBmb3IgKGRvdWJsZSB2YWx1ZSA6IGluVmFsdWVzKQotICAgIHsKLSAgICAgICAgZXhwZWN0
ZWRGVmFsdWVzLnB1c2hfYmFjayhzdGF0aWNfY2FzdDxHTGZsb2F0Pih2YWx1ZSkpOwotCi0gICAg
ICAgIGRvdWJsZSBjbGFtcGVkVmFsdWUgPSBzdGQ6Om1heChpbnRNaW5ELCBzdGQ6Om1pbihpbnRN
YXhELCB2YWx1ZSkpOwotICAgICAgICBkb3VibGUgcm91bmRlZCA9IHJvdW5kKGNsYW1wZWRWYWx1
ZSk7Ci0gICAgICAgIGV4cGVjdGVkSVZhbHVlcy5wdXNoX2JhY2soc3RhdGljX2Nhc3Q8R0xpbnQ+
KHJvdW5kZWQpKTsKLSAgICB9Ci0KLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8
IGluVmFsdWVzLnNpemUoKTsgKytpbmRleCkKLSAgICB7Ci0gICAgICAgIEdMZmxvYXQgaW5WYWx1
ZSAgICAgICA9IHN0YXRpY19jYXN0PEdMZmxvYXQ+KGluVmFsdWVzW2luZGV4XSk7Ci0gICAgICAg
IEdMZmxvYXQgZXhwZWN0ZWRWYWx1ZSA9IGV4cGVjdGVkRlZhbHVlc1tpbmRleF07Ci0KLSAgICAg
ICAgZ2xVbmlmb3JtMWYobVVuaWZvcm1GTG9jYXRpb24sIGluVmFsdWUpOwotICAgICAgICBHTGZs
b2F0IHRlc3RWYWx1ZTsKLSAgICAgICAgZ2xHZXRVbmlmb3JtZnYobVByb2dyYW0sIG1Vbmlmb3Jt
RkxvY2F0aW9uLCAmdGVzdFZhbHVlKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0g
ICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFZhbHVlLCB0ZXN0VmFsdWUpOwotICAgIH0KLQotICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBpblZhbHVlcy5zaXplKCk7ICsraW5kZXgp
Ci0gICAgewotICAgICAgICBHTGZsb2F0IGluVmFsdWUgICAgID0gc3RhdGljX2Nhc3Q8R0xmbG9h
dD4oaW5WYWx1ZXNbaW5kZXhdKTsKLSAgICAgICAgR0xpbnQgZXhwZWN0ZWRWYWx1ZSA9IGV4cGVj
dGVkSVZhbHVlc1tpbmRleF07Ci0KLSAgICAgICAgZ2xVbmlmb3JtMWYobVVuaWZvcm1GTG9jYXRp
b24sIGluVmFsdWUpOwotICAgICAgICBHTGludCB0ZXN0VmFsdWU7Ci0gICAgICAgIGdsR2V0VW5p
Zm9ybWl2KG1Qcm9ncmFtLCBtVW5pZm9ybUZMb2NhdGlvbiwgJnRlc3RWYWx1ZSk7Ci0gICAgICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRWYWx1ZSwg
dGVzdFZhbHVlKTsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCBpbnRlZ2VyIHRvIGZsb2F0IEdl
dFVuaWZvcm0gcm91bmRzIHZhbHVlcyBjb3JyZWN0bHkuCi1URVNUX1AoVW5pZm9ybVRlc3QsIElu
dFVuaWZvcm1TdGF0ZVF1ZXJ5KQotewotICAgIHN0ZDo6dmVjdG9yPEdMaW50PiBpblZhbHVlczsK
LSAgICBzdGQ6OnZlY3RvcjxHTGludD4gZXhwZWN0ZWRJVmFsdWVzOwotICAgIHN0ZDo6dmVjdG9y
PEdMZmxvYXQ+IGV4cGVjdGVkRlZhbHVlczsKLQotICAgIEdMaW50IGludE1heCA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8R0xpbnQ+OjptYXgoKTsKLSAgICBHTGludCBpbnRNaW4gPSBzdGQ6Om51bWVy
aWNfbGltaXRzPEdMaW50Pjo6bWluKCk7Ci0KLSAgICBpblZhbHVlcy5wdXNoX2JhY2soLTEpOwot
ICAgIGluVmFsdWVzLnB1c2hfYmFjaygwKTsKLSAgICBpblZhbHVlcy5wdXNoX2JhY2soMSk7Ci0g
ICAgaW5WYWx1ZXMucHVzaF9iYWNrKDk5OTk5OSk7Ci0gICAgaW5WYWx1ZXMucHVzaF9iYWNrKGlu
dE1heCk7Ci0gICAgaW5WYWx1ZXMucHVzaF9iYWNrKGludE1heCAtIDEpOwotICAgIGluVmFsdWVz
LnB1c2hfYmFjayhpbnRNaW4pOwotICAgIGluVmFsdWVzLnB1c2hfYmFjayhpbnRNaW4gKyAxKTsK
LQotICAgIGZvciAoR0xpbnQgdmFsdWUgOiBpblZhbHVlcykKLSAgICB7Ci0gICAgICAgIGV4cGVj
dGVkSVZhbHVlcy5wdXNoX2JhY2sodmFsdWUpOwotICAgICAgICBleHBlY3RlZEZWYWx1ZXMucHVz
aF9iYWNrKHN0YXRpY19jYXN0PEdMZmxvYXQ+KHZhbHVlKSk7Ci0gICAgfQotCi0gICAgZ2xVc2VQ
cm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGZvciAo
c2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBpblZhbHVlcy5zaXplKCk7ICsraW5kZXgpCi0gICAg
ewotICAgICAgICBHTGludCBpblZhbHVlICAgICAgID0gaW5WYWx1ZXNbaW5kZXhdOwotICAgICAg
ICBHTGludCBleHBlY3RlZFZhbHVlID0gZXhwZWN0ZWRJVmFsdWVzW2luZGV4XTsKLQotICAgICAg
ICBnbFVuaWZvcm0xaShtVW5pZm9ybUlMb2NhdGlvbiwgaW5WYWx1ZSk7Ci0gICAgICAgIEdMaW50
IHRlc3RWYWx1ZTsKLSAgICAgICAgZ2xHZXRVbmlmb3JtaXYobVByb2dyYW0sIG1Vbmlmb3JtSUxv
Y2F0aW9uLCAmdGVzdFZhbHVlKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAg
ICAgIEVYUEVDVF9FUShleHBlY3RlZFZhbHVlLCB0ZXN0VmFsdWUpOwotICAgIH0KLQotICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBpblZhbHVlcy5zaXplKCk7ICsraW5kZXgpCi0g
ICAgewotICAgICAgICBHTGludCBpblZhbHVlICAgICAgICAgPSBpblZhbHVlc1tpbmRleF07Ci0g
ICAgICAgIEdMZmxvYXQgZXhwZWN0ZWRWYWx1ZSA9IGV4cGVjdGVkRlZhbHVlc1tpbmRleF07Ci0K
LSAgICAgICAgZ2xVbmlmb3JtMWkobVVuaWZvcm1JTG9jYXRpb24sIGluVmFsdWUpOwotICAgICAg
ICBHTGZsb2F0IHRlc3RWYWx1ZTsKLSAgICAgICAgZ2xHZXRVbmlmb3JtZnYobVByb2dyYW0sIG1V
bmlmb3JtSUxvY2F0aW9uLCAmdGVzdFZhbHVlKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0gICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFZhbHVlLCB0ZXN0VmFsdWUpOwotICAgIH0K
LX0KLQotLy8gVGVzdCB0aGF0IHF1ZXJpZXMgb2YgYm9vbGVhbiB1bmlmb3JtcyByb3VuZCBjb3Jy
ZWN0bHkuCi1URVNUX1AoVW5pZm9ybVRlc3QsIEJvb2xlYW5Vbmlmb3JtU3RhdGVRdWVyeSkKLXsK
LSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIEdMaW50IGludFZhbHVlICAgICA9IDA7
Ci0gICAgR0xmbG9hdCBmbG9hdFZhbHVlID0gMC4wZjsKLQotICAgIC8vIENhbGxpbmcgVW5pZm9y
bTFpCi0gICAgZ2xVbmlmb3JtMWkobVVuaWZvcm1CTG9jYXRpb24sIEdMX0ZBTFNFKTsKLQotICAg
IGdsR2V0VW5pZm9ybWl2KG1Qcm9ncmFtLCBtVW5pZm9ybUJMb2NhdGlvbiwgJmludFZhbHVlKTsK
LSAgICBFWFBFQ1RfRVEoMCwgaW50VmFsdWUpOwotCi0gICAgZ2xHZXRVbmlmb3JtZnYobVByb2dy
YW0sIG1Vbmlmb3JtQkxvY2F0aW9uLCAmZmxvYXRWYWx1ZSk7Ci0gICAgRVhQRUNUX0VRKDAuMGYs
IGZsb2F0VmFsdWUpOwotCi0gICAgZ2xVbmlmb3JtMWkobVVuaWZvcm1CTG9jYXRpb24sIEdMX1RS
VUUpOwotCi0gICAgZ2xHZXRVbmlmb3JtaXYobVByb2dyYW0sIG1Vbmlmb3JtQkxvY2F0aW9uLCAm
aW50VmFsdWUpOwotICAgIEVYUEVDVF9FUSgxLCBpbnRWYWx1ZSk7Ci0KLSAgICBnbEdldFVuaWZv
cm1mdihtUHJvZ3JhbSwgbVVuaWZvcm1CTG9jYXRpb24sICZmbG9hdFZhbHVlKTsKLSAgICBFWFBF
Q1RfRVEoMS4wZiwgZmxvYXRWYWx1ZSk7Ci0KLSAgICAvLyBDYWxsaW5nIFVuaWZvcm0xZgotICAg
IGdsVW5pZm9ybTFmKG1Vbmlmb3JtQkxvY2F0aW9uLCAwLjBmKTsKLQotICAgIGdsR2V0VW5pZm9y
bWl2KG1Qcm9ncmFtLCBtVW5pZm9ybUJMb2NhdGlvbiwgJmludFZhbHVlKTsKLSAgICBFWFBFQ1Rf
RVEoMCwgaW50VmFsdWUpOwotCi0gICAgZ2xHZXRVbmlmb3JtZnYobVByb2dyYW0sIG1Vbmlmb3Jt
QkxvY2F0aW9uLCAmZmxvYXRWYWx1ZSk7Ci0gICAgRVhQRUNUX0VRKDAuMGYsIGZsb2F0VmFsdWUp
OwotCi0gICAgZ2xVbmlmb3JtMWYobVVuaWZvcm1CTG9jYXRpb24sIDEuMGYpOwotCi0gICAgZ2xH
ZXRVbmlmb3JtaXYobVByb2dyYW0sIG1Vbmlmb3JtQkxvY2F0aW9uLCAmaW50VmFsdWUpOwotICAg
IEVYUEVDVF9FUSgxLCBpbnRWYWx1ZSk7Ci0KLSAgICBnbEdldFVuaWZvcm1mdihtUHJvZ3JhbSwg
bVVuaWZvcm1CTG9jYXRpb24sICZmbG9hdFZhbHVlKTsKLSAgICBFWFBFQ1RfRVEoMS4wZiwgZmxv
YXRWYWx1ZSk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCBxdWVy
aWVzIGZvciBhcnJheXMgb2YgYm9vbGVhbiB1bmlmb3Jtcy4KLVRFU1RfUChVbmlmb3JtVGVzdCwg
Qm9vbGVhbkFycmF5VW5pZm9ybVN0YXRlUXVlcnkpCi17Ci0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9n
cmFtKTsKLSAgICBHTGludCBib29sVmFsdWVzaVs0XSAgID0gezAsIDEsIDAsIDF9OwotICAgIEdM
ZmxvYXQgYm9vbFZhbHVlc2ZbNF0gPSB7MCwgMSwgMCwgMX07Ci0KLSAgICBHTGludCBsb2NhdGlv
bnNbNF0gPSB7Ci0gICAgICAgIGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidW5pQkFy
ciIpLAotICAgICAgICBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInVuaUJBcnJbMV0i
KSwKLSAgICAgICAgZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1bmlCQXJyWzJdIiks
Ci0gICAgICAgIGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidW5pQkFyclszXSIpLAot
ICAgIH07Ci0KLSAgICAvLyBDYWxsaW5nIFVuaWZvcm0xaXYKLSAgICBnbFVuaWZvcm0xaXYobG9j
YXRpb25zWzBdLCA0LCBib29sVmFsdWVzaSk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGludCBpZHgg
PSAwOyBpZHggPCA0OyArK2lkeCkKLSAgICB7Ci0gICAgICAgIGludCB2YWx1ZSA9IC0xOwotICAg
ICAgICBnbEdldFVuaWZvcm1pdihtUHJvZ3JhbSwgbG9jYXRpb25zW2lkeF0sICZ2YWx1ZSk7Ci0g
ICAgICAgIEVYUEVDVF9FUShib29sVmFsdWVzaVtpZHhdLCB2YWx1ZSk7Ci0gICAgfQotCi0gICAg
Zm9yICh1bnNpZ25lZCBpbnQgaWR4ID0gMDsgaWR4IDwgNDsgKytpZHgpCi0gICAgewotICAgICAg
ICBmbG9hdCB2YWx1ZSA9IC0xLjBmOwotICAgICAgICBnbEdldFVuaWZvcm1mdihtUHJvZ3JhbSwg
bG9jYXRpb25zW2lkeF0sICZ2YWx1ZSk7Ci0gICAgICAgIEVYUEVDVF9FUShib29sVmFsdWVzZltp
ZHhdLCB2YWx1ZSk7Ci0gICAgfQotCi0gICAgLy8gQ2FsbGluZyBVbmlmb3JtMWZ2Ci0gICAgZ2xV
bmlmb3JtMWZ2KGxvY2F0aW9uc1swXSwgNCwgYm9vbFZhbHVlc2YpOwotCi0gICAgZm9yICh1bnNp
Z25lZCBpbnQgaWR4ID0gMDsgaWR4IDwgNDsgKytpZHgpCi0gICAgewotICAgICAgICBpbnQgdmFs
dWUgPSAtMTsKLSAgICAgICAgZ2xHZXRVbmlmb3JtaXYobVByb2dyYW0sIGxvY2F0aW9uc1tpZHhd
LCAmdmFsdWUpOwotICAgICAgICBFWFBFQ1RfRVEoYm9vbFZhbHVlc2lbaWR4XSwgdmFsdWUpOwot
ICAgIH0KLQotICAgIGZvciAodW5zaWduZWQgaW50IGlkeCA9IDA7IGlkeCA8IDQ7ICsraWR4KQot
ICAgIHsKLSAgICAgICAgZmxvYXQgdmFsdWUgPSAtMS4wZjsKLSAgICAgICAgZ2xHZXRVbmlmb3Jt
ZnYobVByb2dyYW0sIGxvY2F0aW9uc1tpZHhdLCAmdmFsdWUpOwotICAgICAgICBFWFBFQ1RfRVEo
Ym9vbFZhbHVlc2ZbaWR4XSwgdmFsdWUpOwotICAgIH0KLQotICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotfQotCi1jbGFzcyBVbmlmb3JtVGVzdEVTMyA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAg
cHJvdGVjdGVkOgotICAgIFVuaWZvcm1UZXN0RVMzKCkgOiBtUHJvZ3JhbSgwKSB7fQotCi0gICAg
dm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7
Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBp
ZiAobVByb2dyYW0gIT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xEZWxldGVQcm9ncmFt
KG1Qcm9ncmFtKTsKLSAgICAgICAgICAgIG1Qcm9ncmFtID0gMDsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIEdMdWludCBtUHJvZ3JhbTsKLX07Ci0KLS8vIFRlc3QgcXVlcmllcyBmb3IgdHJhbnNw
b3NlZCBhcnJheXMgb2Ygbm9uLXNxdWFyZSBtYXRyaXggdW5pZm9ybXMuCi1URVNUX1AoVW5pZm9y
bVRlc3RFUzMsIFRyYW5wb3NlZE1hdHJpeEFycmF5VW5pZm9ybVN0YXRlUXVlcnkpCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleFNoYWRlciA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAg
ZXNcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfUG9zaXRpb24gPSB2ZWM0KDEpOyB9IjsK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ1NoYWRlciA9Ci0gICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAi
dW5pZm9ybSBtYXQzeDIgdW5pTWF0M3gyWzVdO1xuIgotICAgICAgICAib3V0IHZlYzQgY29sb3I7
XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGNvbG9yID0gdmVjNCh1
bmlNYXQzeDJbMF1bMF1bMF0pO1xuIgotICAgICAgICAifSI7Ci0KLSAgICBtUHJvZ3JhbSA9IENv
bXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlciwgZnJhZ1NoYWRlcik7Ci0gICAgQVNTRVJUX05FKG1Q
cm9ncmFtLCAwdSk7Ci0KLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotCi0gICAgc3RkOjp2
ZWN0b3I8R0xmbG9hdD4gdHJhbnNwb3NlZFZhbHVlczsKLQotICAgIGZvciAoc2l6ZV90IGFycmF5
RWxlbWVudCA9IDA7IGFycmF5RWxlbWVudCA8IDU7ICsrYXJyYXlFbGVtZW50KQotICAgIHsKLSAg
ICAgICAgdHJhbnNwb3NlZFZhbHVlcy5wdXNoX2JhY2soMS4wZiArIGFycmF5RWxlbWVudCk7Ci0g
ICAgICAgIHRyYW5zcG9zZWRWYWx1ZXMucHVzaF9iYWNrKDMuMGYgKyBhcnJheUVsZW1lbnQpOwot
ICAgICAgICB0cmFuc3Bvc2VkVmFsdWVzLnB1c2hfYmFjayg1LjBmICsgYXJyYXlFbGVtZW50KTsK
LSAgICAgICAgdHJhbnNwb3NlZFZhbHVlcy5wdXNoX2JhY2soMi4wZiArIGFycmF5RWxlbWVudCk7
Ci0gICAgICAgIHRyYW5zcG9zZWRWYWx1ZXMucHVzaF9iYWNrKDQuMGYgKyBhcnJheUVsZW1lbnQp
OwotICAgICAgICB0cmFuc3Bvc2VkVmFsdWVzLnB1c2hfYmFjayg2LjBmICsgYXJyYXlFbGVtZW50
KTsKLSAgICB9Ci0KLSAgICAvLyBTZXR0aW5nIGFzIGEgY2x1bXAKLSAgICBHTGludCBiYXNlTG9j
YXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInVuaU1hdDN4MiIpOwotICAg
IEFTU0VSVF9ORSgtMSwgYmFzZUxvY2F0aW9uKTsKLQotICAgIGdsVW5pZm9ybU1hdHJpeDN4MmZ2
KGJhc2VMb2NhdGlvbiwgNSwgR0xfVFJVRSwgJnRyYW5zcG9zZWRWYWx1ZXNbMF0pOwotCi0gICAg
Zm9yIChzaXplX3QgYXJyYXlFbGVtZW50ID0gMDsgYXJyYXlFbGVtZW50IDwgNTsgKythcnJheUVs
ZW1lbnQpCi0gICAgewotICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBuYW1lU3RyOwotICAgICAg
ICBuYW1lU3RyIDw8ICJ1bmlNYXQzeDJbIiA8PCBhcnJheUVsZW1lbnQgPDwgIl0iOwotICAgICAg
ICBzdGQ6OnN0cmluZyBuYW1lID0gbmFtZVN0ci5zdHIoKTsKLSAgICAgICAgR0xpbnQgbG9jYXRp
b24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgbmFtZS5jX3N0cigpKTsKLSAgICAg
ICAgQVNTRVJUX05FKC0xLCBsb2NhdGlvbik7Ci0KLSAgICAgICAgc3RkOjp2ZWN0b3I8R0xmbG9h
dD4gc2VxdWVudGlhbFZhbHVlcyg2LCAwKTsKLSAgICAgICAgZ2xHZXRVbmlmb3JtZnYobVByb2dy
YW0sIGxvY2F0aW9uLCAmc2VxdWVudGlhbFZhbHVlc1swXSk7Ci0KLSAgICAgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgY29tcCA9IDA7IGNvbXAgPCA2OyAr
K2NvbXApCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTGZs
b2F0Pihjb21wICsgMSArIGFycmF5RWxlbWVudCksIHNlcXVlbnRpYWxWYWx1ZXNbY29tcF0pOwot
ICAgICAgICB9Ci0gICAgfQotfQotCi0vLyBDaGVjayB0aGF0IHNhbXBsZXIgdW5pZm9ybXMgb25s
eSBzaG93IHVwIG9uZSB0aW1lIGluIHRoZSBsaXN0Ci1URVNUX1AoVW5pZm9ybVRlc3QsIFNhbXBs
ZXJVbmlmb3Jtc0FwcGVhck9uY2UpCi17Ci0gICAgaW50IG1heFZlcnRleFRleHR1cmVJbWFnZVVu
aXRzID0gMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9V
TklUUywgJm1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzKTsKLQotICAgIGlmIChtYXhWZXJ0ZXhU
ZXh0dXJlSW1hZ2VVbml0cyA9PSAwKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJSZW5k
ZXJlciBkb2Vzbid0IHN1cHBvcnQgdmVydGV4IHRleHR1cmUgZmV0Y2gsIHNraXBwaW5nIHRlc3Qi
IDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZ2ZXJ0U2hhZGVyID0KLSAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xu
IgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4MkQ7XG4iCi0gICAgICAgICJ2YXJ5aW5n
IHZlYzQgY29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGds
X1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMCwgMSk7XG4iCi0gICAgICAgICIgIGNvbG9yID0g
dGV4dHVyZTJEKHRleDJELCB2ZWMyKDApKTtcbiIKLSAgICAgICAgIn0iOwotCi0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgJmZyYWdTaGFkZXIgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzQgY29sb3I7XG4iCi0gICAgICAgICJ1bmlmb3Jt
IHNhbXBsZXIyRCB0ZXgyRDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAg
IiAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleDJELCB2ZWMyKDApKSArIGNvbG9yO1xuIgot
ICAgICAgICAifSI7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRT
aGFkZXIsIGZyYWdTaGFkZXIpOwotICAgIEFTU0VSVF9ORSgwdSwgcHJvZ3JhbSk7Ci0KLSAgICBH
TGludCBhY3RpdmVVbmlmb3Jtc0NvdW50ID0gMDsKLSAgICBnbEdldFByb2dyYW1pdihwcm9ncmFt
LCBHTF9BQ1RJVkVfVU5JRk9STVMsICZhY3RpdmVVbmlmb3Jtc0NvdW50KTsKLSAgICBBU1NFUlRf
RVEoMSwgYWN0aXZlVW5pZm9ybXNDb3VudCk7Ci0KLSAgICBHTGludCBzaXplICAgICAgID0gMDsK
LSAgICBHTGVudW0gdHlwZSAgICAgID0gR0xfTk9ORTsKLSAgICBHTGNoYXIgbmFtZVsxMjBdID0g
ezB9OwotICAgIGdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwLCAxMDAsIG51bGxwdHIsICZz
aXplLCAmdHlwZSwgbmFtZSk7Ci0gICAgRVhQRUNUX0VRKDEsIHNpemUpOwotICAgIEVYUEVDVF9H
TEVOVU1fRVEoR0xfU0FNUExFUl8yRCwgdHlwZSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJ0ZXgyRCIs
IG5hbWUpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbERlbGV0ZVByb2dy
YW0ocHJvZ3JhbSk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBHZXRVbmlm
b3JtVj4KLXZvaWQgQ2hlY2tPbmVFbGVtZW50KEdldFVuaWZvcm1WIGdldFVuaWZvcm12LAotICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyAmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgIGludCBjb21wb25l
bnRzLAotICAgICAgICAgICAgICAgICAgICAgVCBjYW5hcnkpCi17Ci0gICAgLy8gVGhlIGJ1ZmZl
ciBnZXR0aW5nIHRoZSByZXN1bHRzIGhhcyB0aHJlZSBjaHVua3MKLSAgICAvLyAgLSBBIGNodW5r
IHRvIHNlZSB1bmRlcmZsb3dzCi0gICAgLy8gIC0gQSBjaHVuayB0aGF0IHdpbGwgaG9sZCB0aGUg
cmVzdWx0Ci0gICAgLy8gIC0gQSBjaHVuayB0byBzZWUgb3ZlcmZsb3dzIGZvciB3aGVuIGNvbXBv
bmVudHMgPSBrQ2h1bmtTaXplCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBrQ2h1bmtTaXplID0g
NDsKLSAgICBzdGQ6OmFycmF5PFQsIDMgKiBrQ2h1bmtTaXplPiBidWZmZXI7Ci0gICAgYnVmZmVy
LmZpbGwoY2FuYXJ5KTsKLQotICAgIEdMaW50IGxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgbmFtZS5jX3N0cigpKTsKLSAgICBBU1NFUlRfTkUobG9jYXRpb24sIC0xKTsK
LQotICAgIGdldFVuaWZvcm12KHByb2dyYW0sIGxvY2F0aW9uLCAmYnVmZmVyW2tDaHVua1NpemVd
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGtDaHVua1NpemU7IGkrKykKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVF9FUShjYW5hcnksIGJ1ZmZlcltpXSk7Ci0gICAgfQotICAgIGZvciAoc2l6
ZV90IGkgPSBrQ2h1bmtTaXplICsgY29tcG9uZW50czsgaSA8IGJ1ZmZlci5zaXplKCk7IGkrKykK
LSAgICB7Ci0gICAgICAgIEFTU0VSVF9FUShjYW5hcnksIGJ1ZmZlcltpXSk7Ci0gICAgfQotfQot
Ci0vLyBDaGVjayB0aGF0IGdldHRpbmcgYW4gZWxlbWVudCBhcnJheSBkb2Vzbid0IHJldHVybiB0
aGUgd2hvbGUgYXJyYXkuCi1URVNUX1AoVW5pZm9ybVRlc3RFUzMsIFJldHVybnNPbmx5T25lQXJy
YXlFbGVtZW50KQotewotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga0FycmF5U2l6ZSA9IDQ7Ci0g
ICAgc3RydWN0IFVuaWZvcm1BcnJheUluZm8KLSAgICB7Ci0gICAgICAgIFVuaWZvcm1BcnJheUlu
Zm8oc3RkOjpzdHJpbmcgdHlwZSwgc3RkOjpzdHJpbmcgbmFtZSwgaW50IGNvbXBvbmVudHMpCi0g
ICAgICAgICAgICA6IHR5cGUodHlwZSksIG5hbWUobmFtZSksIGNvbXBvbmVudHMoY29tcG9uZW50
cykKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIHN0ZDo6c3RyaW5nIHR5cGU7Ci0gICAg
ICAgIHN0ZDo6c3RyaW5nIG5hbWU7Ci0gICAgICAgIGludCBjb21wb25lbnRzOwotICAgIH07Ci0K
LSAgICAvLyBDaGVjayBmb3IgdmFyaW91cyBudW1iZXIgb2YgY29tcG9uZW50cyBhbmQgdHlwZXMK
LSAgICBzdGQ6OnZlY3RvcjxVbmlmb3JtQXJyYXlJbmZvPiB1bmlmb3JtQXJyYXlzOwotICAgIHVu
aWZvcm1BcnJheXMuZW1wbGFjZV9iYWNrKCJib29sIiwgInVCb29sIiwgMSk7Ci0gICAgdW5pZm9y
bUFycmF5cy5lbXBsYWNlX2JhY2soInZlYzIiLCAidUZsb2F0IiwgMik7Ci0gICAgdW5pZm9ybUFy
cmF5cy5lbXBsYWNlX2JhY2soIml2ZWMzIiwgInVJbnQiLCAzKTsKLSAgICB1bmlmb3JtQXJyYXlz
LmVtcGxhY2VfYmFjaygidXZlYzQiLCAidVVpbnQiLCA0KTsKLQotICAgIHN0ZDo6b3N0cmluZ3N0
cmVhbSB1bmlmb3JtU3RyZWFtOwotICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBhZGRpdGlvblN0cmVh
bTsKLSAgICBmb3IgKGNvbnN0IGF1dG8gJmFycmF5IDogdW5pZm9ybUFycmF5cykKLSAgICB7Ci0g
ICAgICAgIHVuaWZvcm1TdHJlYW0gPDwgInVuaWZvcm0gIiA8PCBhcnJheS50eXBlIDw8ICIgIiA8
PCBhcnJheS5uYW1lIDw8ICJbIgotICAgICAgICAgICAgICAgICAgICAgIDw8IFRvU3RyaW5nKGtB
cnJheVNpemUpIDw8ICJdO1xuIjsKLQotICAgICAgICAvLyBXZSBuZWVkIHRvIG1ha2UgdXNlIG9m
IHRoZSB1bmlmb3JtcyBvciB0aGV5IGdldCBjb21waWxlZCBvdXQuCi0gICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgNDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoYXJyYXkuY29t
cG9uZW50cyA9PSAxKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGFkZGl0aW9uU3Ry
ZWFtIDw8ICIgKyBmbG9hdCgiIDw8IGFycmF5Lm5hbWUgPDwgIlsiIDw8IGkgPDwgIl0pIjsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBmb3IgKGludCBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCBhcnJheS5jb21wb25lbnRz
OyBjb21wb25lbnQrKykKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGFk
ZGl0aW9uU3RyZWFtIDw8ICIgKyBmbG9hdCgiIDw8IGFycmF5Lm5hbWUgPDwgIlsiIDw8IGkgPDwg
Il1bIiA8PCBjb21wb25lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwg
Il0pIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U2hhZGVyID0KLSAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIiArCi0gICAgICAgIHVuaWZvcm1TdHJlYW0uc3RyKCkgKwotICAgICAgICAi
dm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9
IHZlYzQoMS4wIiArIGFkZGl0aW9uU3RyZWFtLnN0cigpICsgIik7XG4iCi0gICAgICAgICJ9IjsK
LQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRlciA9Ci0gICAgICAgICIjdmVy
c2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAg
ICAgICAib3V0IHZlYzQgY29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4gKClcbiIKLSAgICAg
ICAgIntcbiIKLSAgICAgICAgIiAgICBjb2xvciA9IHZlYzQoMSwgMCwgMCwgMSk7XG4iCi0gICAg
ICAgICJ9IjsKLQotICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyLCBm
cmFnbWVudFNoYWRlcik7Ci0gICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7Ci0KLSAgICBnbFVz
ZVByb2dyYW0obVByb2dyYW0pOwotCi0gICAgZm9yIChjb25zdCBhdXRvICZ1bmlmb3JtQXJyYXkg
OiB1bmlmb3JtQXJyYXlzKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBp
bmRleCA8IGtBcnJheVNpemU7IGluZGV4KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6
c3RyaW5nIHN0ckluZGV4ID0gIlsiICsgVG9TdHJpbmcoaW5kZXgpICsgIl0iOwotICAgICAgICAg
ICAgLy8gQ2hlY2sgYWxsIHRoZSBkaWZmZXJlbnQgZ2xHZXRVbmlmb3JtdiBmdW5jdGlvbnMKLSAg
ICAgICAgICAgIENoZWNrT25lRWxlbWVudDxmbG9hdD4oZ2xHZXRVbmlmb3JtZnYsIG1Qcm9ncmFt
LCB1bmlmb3JtQXJyYXkubmFtZSArIHN0ckluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bmlmb3JtQXJyYXkuY29tcG9uZW50cywgNDIuNDI0MmYpOwotICAgICAgICAg
ICAgQ2hlY2tPbmVFbGVtZW50PGludD4oZ2xHZXRVbmlmb3JtaXYsIG1Qcm9ncmFtLCB1bmlmb3Jt
QXJyYXkubmFtZSArIHN0ckluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5pZm9ybUFycmF5LmNvbXBvbmVudHMsIDB4N0JBREJFRDUpOwotICAgICAgICAgICAgQ2hlY2tP
bmVFbGVtZW50PHVuc2lnbmVkIGludD4oZ2xHZXRVbmlmb3JtdWl2LCBtUHJvZ3JhbSwgdW5pZm9y
bUFycmF5Lm5hbWUgKyBzdHJJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuaWZvcm1BcnJheS5jb21wb25lbnRzLCAweERFQURCRUVGKTsKLSAgICAgICAg
fQotICAgIH0KLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25z
IChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRl
c3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVW5pZm9y
bVRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFf
Rkw5XzMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKFVu
aWZvcm1UZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7
Ci0KLX0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvVW5wYWNrQWxpZ25tZW50VGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVW5wYWNrQWxpZ25tZW50VGVzdC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhM2Y3NmJjNmZhOGMxNGQxMTM3MTZhZTJlYTM1
OWU2M2I3OGM0NTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1VucGFja0FsaWdu
bWVudFRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzI1ICswLDAgQEAKLS8vCi0vLyBDb3B5
cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0K
LSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5n
bGU7Ci0KLW5hbWVzcGFjZQotewotCi1jbGFzcyBVbnBhY2tBbGlnbm1lbnRUZXN0IDogcHVibGlj
IEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgVW5wYWNrQWxpZ25tZW50VGVzdCgpCi0g
ICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwotICAgICAgICBzZXRXaW5kb3dIZWln
aHQoMTI4KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmln
R3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0
Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOwotCi0g
ICAgICAgIG1Qcm9ncmFtID0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAg
ICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSAgICAgICAgICAgIGF0dHJpYnV0ZSB2
ZWM0IHBvc2l0aW9uOwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3Vy
Y2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIHVuaWZvcm0gc2FtcGxl
cjJEIHRleDsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB2ZWMyKDAuMCwgMS4wKSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgbVByb2dyYW0gPSBDb21waWxl
UHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICAg
ICAgaWYgKG1Qcm9ncmFtID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIEZBSUwoKSA8PCAi
c2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9p
ZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVBy
b2dyYW0pOwotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICB2
b2lkIGdldFBpeGVsU2l6ZShHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgdW5zaWduZWQgaW50
KiBzaXplKQotICAgIHsKLSAgICAgICAgc3dpdGNoICh0eXBlKQotICAgICAgICB7Ci0gICAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xOgotICAgICAgICAgIGNhc2UgR0xfVU5T
SUdORURfU0hPUlRfNV82XzU6Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF80XzRf
NF80OgotICAgICAgICAgICAgKnNpemUgPSBzaXplb2YoR0x1c2hvcnQpOwotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Ci0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNvbXBDb3VudCA9IDA7Ci0gICAgICAgICAg
ICAgICAgc3dpdGNoIChmb3JtYXQpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgY2FzZSBHTF9SR0JBOiAgICAgICAgICAgIGNvbXBDb3VudCA9IDQ7IGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgY2FzZSBHTF9SR0I6ICAgICAgICAgICAgIGNvbXBDb3VudCA9IDM7IGJyZWFr
OwotICAgICAgICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6IGNvbXBDb3VudCA9
IDI7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U6ICAgICAgIGNv
bXBDb3VudCA9IDE7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgY2FzZSBHTF9BTFBIQTogICAg
ICAgICAgIGNvbXBDb3VudCA9IDE7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgZGVmYXVsdDog
ICAgICAgICAgICAgICAgIEZBSUwoKSA8PCAidW5rbm93biBwaXhlbCBmb3JtYXQuIjsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKnNpemUgPSBzaXplb2YoR0x1Ynl0ZSkgKiBj
b21wQ291bnQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgRkFJTCgpIDw8ICJ1bmtub3duIHBpeGVsIHR5cGUuIjsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIGJvb2wgZm9ybWF0SGFzUkdCKEdMZW51bSBmb3JtYXQpCi0g
ICAgewotICAgICAgICByZXR1cm4gKGZvcm1hdCAhPSBHTF9BTFBIQSk7Ci0gICAgfQotCi0gICAg
dm9pZCB0ZXN0QWxpZ25tZW50KGludCBhbGlnbm1lbnQsIHVuc2lnbmVkIGludCBvZmZzZXQsIEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKQotICAgIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGludCB3aWR0aCA9IDc7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQg
aGVpZ2h0ID0gMjsKLQotICAgICAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19BTElHTk1FTlQs
IGFsaWdubWVudCk7Ci0KLSAgICAgICAgR0xpbnQgcmVhZGJhY2tBbGlnbm1lbnQ7Ci0gICAgICAg
IGdsR2V0SW50ZWdlcnYoR0xfVU5QQUNLX0FMSUdOTUVOVCwgJnJlYWRiYWNrQWxpZ25tZW50KTsK
LSAgICAgICAgRVhQRUNUX0VRKGFsaWdubWVudCwgcmVhZGJhY2tBbGlnbm1lbnQpOwotCi0gICAg
ICAgIEdMdWJ5dGUgYnVmWzEwMjRdOwotICAgICAgICBtZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVm
KSk7Ci0KLSAgICAgICAgdW5zaWduZWQgaW50IHBpeGVsU2l6ZTsKLSAgICAgICAgZ2V0UGl4ZWxT
aXplKGZvcm1hdCwgdHlwZSwgJnBpeGVsU2l6ZSk7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50
IGkgPSAwOyBpIDwgcGl4ZWxTaXplOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGJ1Zltv
ZmZzZXQraV0gPSAweEZGOwotICAgICAgICB9Ci0KLSAgICAgICAgR0x1aW50IHRleDsKLSAgICAg
ICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4KTsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCB0ZXgpOwotCi0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBm
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGZvcm1hdCwgdHlwZSwgJmJ1ZlswXSk7Ci0gICAgICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdM
X0xJTkVBUik7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0KLSAg
ICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgICAgIEdM
dWJ5dGUgZXhwZWN0ZWRSR0IgPSBmb3JtYXRIYXNSR0IoZm9ybWF0KSA/IDI1NSA6IDA7Ci0gICAg
ICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCBleHBlY3RlZFJHQiwgZXhwZWN0ZWRSR0IsIGV4cGVj
dGVkUkdCLCAyNTUpOwotCi0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleCk7Ci0gICAg
fQotCi0gICAgR0x1aW50IG1Qcm9ncmFtOwotfTsKLQotVEVTVF9QKFVucGFja0FsaWdubWVudFRl
c3QsIERlZmF1bHRBbGlnbm1lbnQpCi17Ci0gICAgR0xpbnQgZGVmYXVsdEFsaWdubWVudDsKLSAg
ICBnbEdldEludGVnZXJ2KEdMX1VOUEFDS19BTElHTk1FTlQsICZkZWZhdWx0QWxpZ25tZW50KTsK
LSAgICBFWFBFQ1RfRVEoZGVmYXVsdEFsaWdubWVudCwgNCk7Ci19Ci0KLQotVEVTVF9QKFVucGFj
a0FsaWdubWVudFRlc3QsIEFsaWdubWVudDFSR0JBVUJ5dGUpCi17Ci0gICAgdGVzdEFsaWdubWVu
dCgxLCA3ICogNCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSk7Ci19Ci0KLVRFU1RfUChVbnBh
Y2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQxUkdCVUJ5dGUpCi17Ci0gICAgdGVzdEFsaWdubWVu
dCgxLCA3ICogMywgR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0KLQotVEVTVF9QKFVucGFj
a0FsaWdubWVudFRlc3QsIEFsaWdubWVudDFSR0JBVVNob3J0NDQ0NCkKLXsKLSAgICB0ZXN0QWxp
Z25tZW50KDEsIDcgKiAyLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80KTsKLX0K
LQotVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDFSR0JBVVNob3J0NTU1MSkK
LXsKLSAgICB0ZXN0QWxpZ25tZW50KDEsIDcgKiAyLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9S
VF81XzVfNV8xKTsKLX0KLQotVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDFS
R0JBVVNob3J0NTY1KQotewotICAgIHRlc3RBbGlnbm1lbnQoMSwgNyAqIDIsIEdMX1JHQiwgR0xf
VU5TSUdORURfU0hPUlRfNV82XzUpOwotfQotCi1URVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwg
QWxpZ25tZW50MUxBVUJ5dGUpCi17Ci0gICAgdGVzdEFsaWdubWVudCgxLCA3ICogMiwgR0xfTFVN
SU5BTkNFX0FMUEhBLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0KLQotVEVTVF9QKFVucGFja0FsaWdu
bWVudFRlc3QsIEFsaWdubWVudDFMVUJ5dGUpCi17Ci0gICAgdGVzdEFsaWdubWVudCgxLCA3LCBH
TF9MVU1JTkFOQ0UsIEdMX1VOU0lHTkVEX0JZVEUpOwotfQotCi1URVNUX1AoVW5wYWNrQWxpZ25t
ZW50VGVzdCwgQWxpZ25tZW50MUFVQnl0ZSkKLXsKLSAgICB0ZXN0QWxpZ25tZW50KDEsIDcsIEdM
X0FMUEhBLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0KLQotCi1URVNUX1AoVW5wYWNrQWxpZ25tZW50
VGVzdCwgQWxpZ25tZW50MlJHQkFVQnl0ZSkKLXsKLSAgICB0ZXN0QWxpZ25tZW50KDIsIDcgKiA0
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0KLQotVEVTVF9QKFVucGFja0FsaWdubWVu
dFRlc3QsIEFsaWdubWVudDJSR0JVQnl0ZSkKLXsKLSAgICB0ZXN0QWxpZ25tZW50KDIsIDcgKiAz
ICsgMSwgR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0KLQotVEVTVF9QKFVucGFja0FsaWdu
bWVudFRlc3QsIEFsaWdubWVudDJSR0JBVVNob3J0NDQ0NCkKLXsKLSAgICB0ZXN0QWxpZ25tZW50
KDIsIDcgKiAyLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80KTsKLX0KLQotVEVT
VF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDJSR0JBVVNob3J0NTU1MSkKLXsKLSAg
ICB0ZXN0QWxpZ25tZW50KDIsIDcgKiAyLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF81XzVf
NV8xKTsKLX0KLQotVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDJSR0JBVVNo
b3J0NTY1KQotewotICAgIHRlc3RBbGlnbm1lbnQoMiwgNyAqIDIsIEdMX1JHQiwgR0xfVU5TSUdO
RURfU0hPUlRfNV82XzUpOwotfQotCi1URVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25t
ZW50MkxBVUJ5dGUpCi17Ci0gICAgdGVzdEFsaWdubWVudCgyLCA3ICogMiwgR0xfTFVNSU5BTkNF
X0FMUEhBLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0KLQotVEVTVF9QKFVucGFja0FsaWdubWVudFRl
c3QsIEFsaWdubWVudDJMQUJ5dGUpCi17Ci0gICAgdGVzdEFsaWdubWVudCgyLCA3ICsgMSwgR0xf
TFVNSU5BTkNFLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0KLQotVEVTVF9QKFVucGFja0FsaWdubWVu
dFRlc3QsIEFsaWdubWVudDJBVUJ5dGUpCi17Ci0gICAgdGVzdEFsaWdubWVudCgyLCA3ICsgMSwg
R0xfQUxQSEEsIEdMX1VOU0lHTkVEX0JZVEUpOwotfQotCi0KLVRFU1RfUChVbnBhY2tBbGlnbm1l
bnRUZXN0LCBBbGlnbm1lbnQ0UkdCQVVCeXRlKQotewotICAgIHRlc3RBbGlnbm1lbnQoNCwgNyAq
IDQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUpOwotfQotCi1URVNUX1AoVW5wYWNrQWxpZ25t
ZW50VGVzdCwgQWxpZ25tZW50NFJHQlVCeXRlKQotewotICAgIHRlc3RBbGlnbm1lbnQoNCwgNyAq
IDMgKyAzLCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUpOwotfQotCi1URVNUX1AoVW5wYWNrQWxp
Z25tZW50VGVzdCwgQWxpZ25tZW50NFJHQkFVU2hvcnQ0NDQ0KQotewotICAgIHRlc3RBbGlnbm1l
bnQoNCwgNyAqIDIgKyAyLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80KTsKLX0K
LQotVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDRSR0JBVVNob3J0NTU1MSkK
LXsKLSAgICB0ZXN0QWxpZ25tZW50KDQsIDcgKiAyICsgMiwgR0xfUkdCQSwgR0xfVU5TSUdORURf
U0hPUlRfNV81XzVfMSk7Ci19Ci0KLVRFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1l
bnQ0UkdCQVVTaG9ydDU2NSkKLXsKLSAgICB0ZXN0QWxpZ25tZW50KDQsIDcgKiAyICsgMiwgR0xf
UkdCLCBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSk7Ci19Ci0KLVRFU1RfUChVbnBhY2tBbGlnbm1l
bnRUZXN0LCBBbGlnbm1lbnQ0TEFVQnl0ZSkKLXsKLSAgICB0ZXN0QWxpZ25tZW50KDQsIDcgKiAy
ICsgMiwgR0xfTFVNSU5BTkNFX0FMUEhBLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0KLQotVEVTVF9Q
KFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDRMVUJ5dGUpCi17Ci0gICAgdGVzdEFsaWdu
bWVudCg0LCA3ICsgMSwgR0xfTFVNSU5BTkNFLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0KLQotVEVT
VF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDRBVUJ5dGUpCi17Ci0gICAgdGVzdEFs
aWdubWVudCg0LCA3ICsgMSwgR0xfQUxQSEEsIEdMX1VOU0lHTkVEX0JZVEUpOwotfQotCi0KLVRF
U1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQ4UkdCQVVCeXRlKQotewotICAgIHRl
c3RBbGlnbm1lbnQoOCwgNyAqIDQgKyA0LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0K
LQotVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDhSR0JVQnl0ZSkKLXsKLSAg
ICB0ZXN0QWxpZ25tZW50KDgsIDcgKiAzICsgMywgR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRFKTsK
LX0KLQotVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDhSR0JBVVNob3J0NDQ0
NCkKLXsKLSAgICB0ZXN0QWxpZ25tZW50KDgsIDcgKiAyICsgMiwgR0xfUkdCQSwgR0xfVU5TSUdO
RURfU0hPUlRfNF80XzRfNCk7Ci19Ci0KLVRFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGln
bm1lbnQ4UkdCQVVTaG9ydDU1NTEpCi17Ci0gICAgdGVzdEFsaWdubWVudCg4LCA3ICogMiArIDIs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEpOwotfQotCi1URVNUX1AoVW5wYWNr
QWxpZ25tZW50VGVzdCwgQWxpZ25tZW50OFJHQkFVU2hvcnQ1NjUpCi17Ci0gICAgdGVzdEFsaWdu
bWVudCg4LCA3ICogMiArIDIsIEdMX1JHQiwgR0xfVU5TSUdORURfU0hPUlRfNV82XzUpOwotfQot
Ci1URVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50OExBVUJ5dGUpCi17Ci0gICAg
dGVzdEFsaWdubWVudCg4LCA3ICogMiArIDIsIEdMX0xVTUlOQU5DRV9BTFBIQSwgR0xfVU5TSUdO
RURfQllURSk7Ci19Ci0KLVRFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQ4TFVC
eXRlKQotewotICAgIHRlc3RBbGlnbm1lbnQoOCwgNyArIDEsIEdMX0xVTUlOQU5DRSwgR0xfVU5T
SUdORURfQllURSk7Ci19Ci0KLVRFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQ4
QVVCeXRlKQotewotICAgIHRlc3RBbGlnbm1lbnQoOCwgNyArIDEsIEdMX0FMUEhBLCBHTF9VTlNJ
R05FRF9CWVRFKTsKLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRp
b25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNl
IHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVW5w
YWNrQWxpZ25tZW50VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAg
IEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgRVMzX09QRU5HTEVTKCkpOwotCi19IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1VucGFja1Jvd0xlbmd0aC5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVW5wYWNrUm93TGVu
Z3RoLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVhZDU5NTI2NWRlMDczMzRm
MjUwOWM0YWE0MTdkMGQyODQ3YTUyZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
VW5wYWNrUm93TGVuZ3RoLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMCArMCwwIEBACi0vLwot
Ly8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
Ci0vLwotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFtZXNw
YWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3MgVW5wYWNrUm93TGVuZ3RoVGVzdCA6
IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFVucGFja1Jvd0xlbmd0aFRl
c3QoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0V2lu
ZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNl
dENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAg
ICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0
KTsKLQotICAgICAgICBtUHJvZ3JhbSA9IDA7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92
ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAg
ICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0gICAgICAgICAgICBhdHRy
aWJ1dGUgdmVjNCBwb3NpdGlvbjsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAgICAg
ICAgfQotICAgICAgICApOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hh
ZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICB1bmlmb3Jt
IHNhbXBsZXIyRCB0ZXg7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdmVjMigwLjAs
IDEuMCkpOwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIG1Qcm9ncmFtID0g
Q29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7
Ci0gICAgICAgIGlmIChtUHJvZ3JhbSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBGQUlM
KCkgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVQcm9n
cmFtKG1Qcm9ncmFtKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQot
Ci0gICAgdm9pZCB0ZXN0Um93TGVuZ3RoKGludCB0ZXhTaXplLCBpbnQgcm93TGVuZ3RoKQotICAg
IHsKLSAgICAgICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgcm93TGVuZ3Ro
KTsKLQotICAgICAgICBpZiAoKGdldENsaWVudE1ham9yVmVyc2lvbigpID09IDMpIHx8IGV4dGVu
c2lvbkVuYWJsZWQoIkdMX0VYVF91bnBhY2tfc3ViaW1hZ2UiKSkKLSAgICAgICAgewotICAgICAg
ICAgICAgLy8gT25seSB0ZXhTaXplICogdGV4U2l6ZSByZWdpb24gaXMgZmlsbGVkIGFzIFdISVRF
LCBvdGhlciBwYXJ0cyBhcmUgQkxBQ0suCi0gICAgICAgICAgICAvLyBJZiB0aGUgVU5QQUNLX1JP
V19MRU5HVEggaXMgaW1wbGVtZW50ZWQgY29ycmVjdGx5LCBhbGwgdGV4ZWxzIGluc2lkZSB0aGlz
IHRleHR1cmUgYXJlIFdISVRFLgotICAgICAgICAgICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gYnVm
KHJvd0xlbmd0aCAqIHRleFNpemUgKiA0KTsKLSAgICAgICAgICAgIGZvciAoaW50IHkgPSAwOyB5
IDwgdGV4U2l6ZTsgeSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0ZDo6dmVj
dG9yPEdMdWJ5dGU+OjppdGVyYXRvciByb3dJdGVyID0gYnVmLmJlZ2luKCkgKyB5ICogcm93TGVu
Z3RoICogNDsKLSAgICAgICAgICAgICAgICBzdGQ6OmZpbGwocm93SXRlciwgcm93SXRlciArIHRl
eFNpemUgKiA0LCBzdGF0aWNfY2FzdDxHTHVieXRlPigyNTV1KSk7Ci0gICAgICAgICAgICAgICAg
c3RkOjpmaWxsKHJvd0l0ZXIgKyB0ZXhTaXplICogNCwgcm93SXRlciArIHJvd0xlbmd0aCAqIDQs
IHN0YXRpY19jYXN0PEdMdWJ5dGU+KDB1KSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IEdMdWludCB0ZXg7Ci0gICAgICAgICAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOwotICAgICAg
ICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXgpOwotCi0gICAgICAgICAgICBn
bFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgdGV4U2l6ZSwgdGV4U2l6ZSwg
MCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgJmJ1ZlswXSk7Ci0gICAgICAgICAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5F
QVIpOwotICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0K
LSAgICAgICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAg
ICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSk7Ci0gICAg
ICAgICAgICBFWFBFQ1RfUElYRUxfRVEoMSwgMCwgMjU1LCAyNTUsIDI1NSwgMjU1KTsKLQotICAg
ICAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4KTsKLSAgICAgICAgfQotICAgICAgICBl
bHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VO
VU0pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgR0x1aW50IG1Qcm9ncmFtOwotfTsKLQotVEVT
VF9QKFVucGFja1Jvd0xlbmd0aFRlc3QsIFJvd0xlbmd0aDEyOCkKLXsKLSAgICB0ZXN0Um93TGVu
Z3RoKDEyOCwgMTI4KTsKLX0KLQotVEVTVF9QKFVucGFja1Jvd0xlbmd0aFRlc3QsIFJvd0xlbmd0
aDEwMjQpCi17Ci0gICAgdGVzdFJvd0xlbmd0aCgxMjgsIDEwMjQpOwotfQotCi0vLyBVc2UgdGhp
cyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdo
aWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0
LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChVbnBhY2tSb3dMZW5ndGhUZXN0LAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0Qz
RDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5H
TCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwotCi19IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1ZlcnRleEF0dHJp
YnV0ZVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L1ZlcnRleEF0dHJpYnV0ZVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MWI3OWVjNjFjNmEyZDgwZWY0MjFkNjE3NWQ3ZmIxNDdjMDA5NjRhLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9WZXJ0ZXhBdHRyaWJ1dGVUZXN0LmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDg5NCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRl
c3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotR0xzaXpl
aSBUeXBlU3RyaWRlKEdMZW51bSBhdHRyaWJUeXBlKQotewotICAgIHN3aXRjaCAoYXR0cmliVHlw
ZSkKLSAgICB7Ci0gICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAgICAgY2FzZSBH
TF9CWVRFOgotICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGNhc2UgR0xfVU5TSUdORURf
U0hPUlQ6Ci0gICAgICAgIGNhc2UgR0xfU0hPUlQ6Ci0gICAgICAgICAgICByZXR1cm4gMjsKLSAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6Ci0gICAgICAgIGNhc2UgR0xfSU5UOgotICAgICAg
ICBjYXNlIEdMX0ZMT0FUOgotICAgICAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUdMZmxvYXQgTm9ybWFsaXplKFQgdmFsdWUp
Ci17Ci0gICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgIkludGVn
ZXIgcmVxdWlyZWQuIik7Ci0gICAgaWYgKHN0ZDo6aXNfc2lnbmVkPFQ+Ojp2YWx1ZSkKLSAgICB7
Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjptYWtlX3Vuc2lnbmVkPFQ+Ojp0eXBlIHVu
c2lnbmVkX3R5cGU7Ci0gICAgICAgIHJldHVybiAoMi4wZiAqIHN0YXRpY19jYXN0PEdMZmxvYXQ+
KHZhbHVlKSArIDEuMGYpIC8KLSAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWRfdHlwZT46Om1heCgpKTsKLSAgICB9Ci0gICAgZWxz
ZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMZmxvYXQ+KHZhbHVlKSAvIHN0
YXRpY19jYXN0PEdMZmxvYXQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCgpKTsKLSAgICB9
Ci19Ci0KLWNsYXNzIFZlcnRleEF0dHJpYnV0ZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0g
IHByb3RlY3RlZDoKLSAgICBWZXJ0ZXhBdHRyaWJ1dGVUZXN0KCkKLSAgICAgICAgOiBtUHJvZ3Jh
bSgwKSwgbVRlc3RBdHRyaWIoLTEpLCBtRXhwZWN0ZWRBdHRyaWIoLTEpLCBtQnVmZmVyKDApLCBt
UXVhZEJ1ZmZlcigwKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAg
ICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0g
ICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMo
OCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnRGVw
dGhCaXRzKDI0KTsKLSAgICB9Ci0KLSAgICBlbnVtIGNsYXNzIFNvdXJjZQotICAgIHsKLSAgICAg
ICAgQlVGRkVSLAotICAgICAgICBJTU1FRElBVEUsCi0gICAgfTsKLQotICAgIHN0cnVjdCBUZXN0
RGF0YSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQotICAgIHsKLSAgICAgICAgVGVzdERhdGEo
R0xlbnVtIHR5cGVJbiwKLSAgICAgICAgICAgICAgICAgR0xib29sZWFuIG5vcm1hbGl6ZWRJbiwK
LSAgICAgICAgICAgICAgICAgU291cmNlIHNvdXJjZUluLAotICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICppbnB1dERhdGFJbiwKLSAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqZXhw
ZWN0ZWREYXRhSW4pCi0gICAgICAgICAgICA6IHR5cGUodHlwZUluKSwKLSAgICAgICAgICAgICAg
bm9ybWFsaXplZChub3JtYWxpemVkSW4pLAotICAgICAgICAgICAgICBidWZmZXJPZmZzZXQoMCks
Ci0gICAgICAgICAgICAgIHNvdXJjZShzb3VyY2VJbiksCi0gICAgICAgICAgICAgIGlucHV0RGF0
YShpbnB1dERhdGFJbiksCi0gICAgICAgICAgICAgIGV4cGVjdGVkRGF0YShleHBlY3RlZERhdGFJ
bikKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICAgICAgR0xlbnVtIHR5cGU7Ci0gICAgICAg
IEdMYm9vbGVhbiBub3JtYWxpemVkOwotICAgICAgICBzaXplX3QgYnVmZmVyT2Zmc2V0OwotICAg
ICAgICBTb3VyY2Ugc291cmNlOwotCi0gICAgICAgIGNvbnN0IHZvaWQgKmlucHV0RGF0YTsKLSAg
ICAgICAgY29uc3QgR0xmbG9hdCAqZXhwZWN0ZWREYXRhOwotICAgIH07Ci0KLSAgICB2b2lkIHNl
dHVwVGVzdChjb25zdCBUZXN0RGF0YSAmdGVzdCwgR0xpbnQgdHlwZVNpemUpCi0gICAgewotICAg
ICAgICBpZiAobVByb2dyYW0gPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgaW5pdEJhc2lj
UHJvZ3JhbSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRlc3Quc291cmNlID09IFNvdXJj
ZTo6QlVGRkVSKQotICAgICAgICB7Ci0gICAgICAgICAgICBHTHNpemVpIGRhdGFTaXplID0gbVZl
cnRleENvdW50ICogVHlwZVN0cmlkZSh0ZXN0LnR5cGUpICogdHlwZVNpemU7Ci0gICAgICAgICAg
ICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVyKTsKLSAgICAgICAgICAgIGds
QnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIGRhdGFTaXplLCB0ZXN0LmlucHV0RGF0YSwgR0xf
U1RBVElDX0RSQVcpOwotICAgICAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1UZXN0QXR0
cmliLCB0eXBlU2l6ZSwgdGVzdC50eXBlLCB0ZXN0Lm5vcm1hbGl6ZWQsIDAsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHTHZvaWQgKj4odGVzdC5i
dWZmZXJPZmZzZXQpKTsKLSAgICAgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIs
IDApOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgQVNT
RVJUX0VRKFNvdXJjZTo6SU1NRURJQVRFLCB0ZXN0LnNvdXJjZSk7Ci0gICAgICAgICAgICBnbEJp
bmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKLSAgICAgICAgICAgIGdsVmVydGV4QXR0cmli
UG9pbnRlcihtVGVzdEF0dHJpYiwgdHlwZVNpemUsIHRlc3QudHlwZSwgdGVzdC5ub3JtYWxpemVk
LCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QuaW5wdXREYXRhKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtRXhwZWN0ZWRBdHRy
aWIsIHR5cGVTaXplLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHRlc3QuZXhwZWN0ZWREYXRhKTsK
LQotICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1UZXN0QXR0cmliKTsKLSAgICAg
ICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtRXhwZWN0ZWRBdHRyaWIpOwotICAgIH0KLQot
ICAgIHZvaWQgY2hlY2tQaXhlbHMoKQotICAgIHsKLSAgICAgICAgR0xpbnQgdmlld3BvcnRTaXpl
WzRdOwotICAgICAgICBnbEdldEludGVnZXJ2KEdMX1ZJRVdQT1JULCB2aWV3cG9ydFNpemUpOwot
Ci0gICAgICAgIEdMaW50IG1pZFBpeGVsWCA9ICh2aWV3cG9ydFNpemVbMF0gKyB2aWV3cG9ydFNp
emVbMl0pIC8gMjsKLSAgICAgICAgR0xpbnQgbWlkUGl4ZWxZID0gKHZpZXdwb3J0U2l6ZVsxXSAr
IHZpZXdwb3J0U2l6ZVszXSkgLyAyOwotCi0gICAgICAgIC8vIFdlIG5lZWQgdG8gb2Zmc2V0IG91
ciBjaGVja3MgZnJvbSB0cmlhbmdsZSBlZGdlcyB0byBlbnN1cmUgd2UgZG9uJ3QgZmFsbCBvbiBh
IHNpbmdsZSB0cmkKLSAgICAgICAgLy8gQXZvaWQgbWFraW5nIGFzc3VtcHRpb25zIG9mIGRyYXdR
dWFkIHdpdGggZm91ciBjaGVja3MgdG8gY2hlY2sgdGhlIGZvdXIgcG9zc2libGUgdHJpCi0gICAg
ICAgIC8vIHJlZ2lvbnMKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKChtaWRQaXhlbFggKyB2aWV3
cG9ydFNpemVbMF0pIC8gMiwgbWlkUGl4ZWxZLCAyNTUsIDI1NSwgMjU1LCAyNTUpOwotICAgICAg
ICBFWFBFQ1RfUElYRUxfRVEoKG1pZFBpeGVsWCArIHZpZXdwb3J0U2l6ZVsyXSkgLyAyLCBtaWRQ
aXhlbFksIDI1NSwgMjU1LCAyNTUsIDI1NSk7Ci0gICAgICAgIEVYUEVDVF9QSVhFTF9FUShtaWRQ
aXhlbFgsIChtaWRQaXhlbFkgKyB2aWV3cG9ydFNpemVbMV0pIC8gMiwgMjU1LCAyNTUsIDI1NSwg
MjU1KTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKG1pZFBpeGVsWCwgKG1pZFBpeGVsWSArIHZp
ZXdwb3J0U2l6ZVszXSkgLyAyLCAyNTUsIDI1NSwgMjU1LCAyNTUpOwotICAgIH0KLQotICAgIHZv
aWQgcnVuVGVzdChjb25zdCBUZXN0RGF0YSAmdGVzdCkKLSAgICB7Ci0gICAgICAgIC8vIFRPRE8o
Z2VvZmZsYW5nKTogRmlndXJlIG91dCB3aHkgdGhpcyBpcyBicm9rZW4gb24gQU1EIE9wZW5HTAot
ICAgICAgICBpZiAoSXNBTUQoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBBTUQgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChHTGludCBpID0gMDsg
aSA8IDQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgR0xpbnQgdHlwZVNpemUgPSBpICsg
MTsKLSAgICAgICAgICAgIHNldHVwVGVzdCh0ZXN0LCB0eXBlU2l6ZSk7Ci0KLSAgICAgICAgICAg
IGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgICAgICAgICAgZ2xE
aXNhYmxlVmVydGV4QXR0cmliQXJyYXkobVRlc3RBdHRyaWIpOwotICAgICAgICAgICAgZ2xEaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkobUV4cGVjdGVkQXR0cmliKTsKLQotICAgICAgICAgICAgY2hl
Y2tQaXhlbHMoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGdsQ2xlYXJD
b2xvcigwLCAwLCAwLCAwKTsKLSAgICAgICAgZ2xDbGVhckRlcHRoZigwLjApOwotICAgICAgICBn
bENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUKTsKLQotICAg
ICAgICBnbERpc2FibGUoR0xfREVQVEhfVEVTVCk7Ci0KLSAgICAgICAgZ2xHZW5CdWZmZXJzKDEs
ICZtQnVmZmVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgICAgIGdsRGVsZXRlQnVm
ZmVycygxLCAmbUJ1ZmZlcik7Ci0gICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbVF1YWRCdWZm
ZXIpOwotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICBHTHVp
bnQgY29tcGlsZU11bHRpQXR0cmliUHJvZ3JhbShHTGludCBhdHRyaWJDb3VudCkKLSAgICB7Ci0g
ICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNoYWRlclN0cmVhbTsKLQotICAgICAgICBzaGFkZXJT
dHJlYW0gPDwgImF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgcG9zaXRpb247IiA8PCBzdGQ6OmVuZGw7
Ci0gICAgICAgIGZvciAoR0xpbnQgYXR0cmliSW5kZXggPSAwOyBhdHRyaWJJbmRleCA8IGF0dHJp
YkNvdW50OyArK2F0dHJpYkluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICBzaGFkZXJTdHJl
YW0gPDwgImF0dHJpYnV0ZSBmbG9hdCBhIiA8PCBhdHRyaWJJbmRleCA8PCAiOyIgPDwgc3RkOjpl
bmRsOwotICAgICAgICB9Ci0gICAgICAgIHNoYWRlclN0cmVhbSA8PCAidmFyeWluZyBtZWRpdW1w
IGZsb2F0IGNvbG9yOyIgPDwgc3RkOjplbmRsCi0gICAgICAgICAgICAgICAgICAgICA8PCAidm9p
ZCBtYWluKCkgeyIgPDwgc3RkOjplbmRsCi0gICAgICAgICAgICAgICAgICAgICA8PCAiICBnbF9Q
b3NpdGlvbiA9IHBvc2l0aW9uOyIgPDwgc3RkOjplbmRsCi0gICAgICAgICAgICAgICAgICAgICA8
PCAiICBjb2xvciA9IDAuMDsiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgZm9yIChHTGludCBhdHRy
aWJJbmRleCA9IDA7IGF0dHJpYkluZGV4IDwgYXR0cmliQ291bnQ7ICsrYXR0cmliSW5kZXgpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHNoYWRlclN0cmVhbSA8PCAiICBjb2xvciArPSBhIiA8PCBh
dHRyaWJJbmRleCA8PCAiOyIgPDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgICAgIHNoYWRl
clN0cmVhbSA8PCAifSIgPDwgc3RkOjplbmRsOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICAgICBTSEFERVJfU09VUkNFKHZh
cnlpbmcgbWVkaXVtcCBmbG9hdCBjb2xvcjsgdm9pZCBtYWluKHZvaWQpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xv
ciA9IHZlYzQoY29sb3IsIDAuMCwgMC4wLCAxLjApOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICB9KTsKLQotICAgICAgICByZXR1cm4gQ29tcGlsZVByb2dyYW0oc2hhZGVyU3RyZWFtLnN0cigp
LCB0ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIH0KLQotICAgIHZvaWQgc2V0dXBNdWx0
aUF0dHJpYnMoR0x1aW50IHByb2dyYW0sIEdMaW50IGF0dHJpYkNvdW50LCBHTGZsb2F0IHZhbHVl
KQotICAgIHsKLSAgICAgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOwotICAgICAgICBmb3IgKEdM
aW50IGF0dHJpYkluZGV4ID0gMDsgYXR0cmliSW5kZXggPCBhdHRyaWJDb3VudDsgKythdHRyaWJJ
bmRleCkKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gYXR0cmliU3Ry
ZWFtOwotICAgICAgICAgICAgYXR0cmliU3RyZWFtIDw8ICJhIiA8PCBhdHRyaWJJbmRleDsKLSAg
ICAgICAgICAgIEdMaW50IGxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBh
dHRyaWJTdHJlYW0uc3RyKCkuY19zdHIoKSk7Ci0gICAgICAgICAgICBBU1NFUlRfTkUoLTEsIGxv
Y2F0aW9uKTsKLSAgICAgICAgICAgIGdsVmVydGV4QXR0cmliMWYobG9jYXRpb24sIHZhbHVlKTsK
LSAgICAgICAgICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KGxvY2F0aW9uKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIHZvaWQgaW5pdEJhc2ljUHJvZ3JhbSgpCi0gICAgewotICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0VmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgICAg
ICJhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgImF0dHJp
YnV0ZSBtZWRpdW1wIHZlYzQgdGVzdDtcbiIKLSAgICAgICAgICAgICJhdHRyaWJ1dGUgbWVkaXVt
cCB2ZWM0IGV4cGVjdGVkO1xuIgotICAgICAgICAgICAgInZhcnlpbmcgbWVkaXVtcCB2ZWM0IGNv
bG9yO1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbih2b2lkKVxuIgotICAgICAgICAgICAgIntc
biIKLSAgICAgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIKLSAgICAgICAg
ICAgICIgICAgdmVjNCB0aHJlc2hvbGQgPSBtYXgoYWJzKGV4cGVjdGVkKSAqIDAuMDEsIDEuMCAv
IDY0LjApO1xuIgotICAgICAgICAgICAgIiAgICBjb2xvciA9IHZlYzQobGVzc1RoYW5FcXVhbChh
YnModGVzdCAtIGV4cGVjdGVkKSwgdGhyZXNob2xkKSk7XG4iCi0gICAgICAgICAgICAifVxuIjsK
LQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2UgPQot
ICAgICAgICAgICAgInZhcnlpbmcgbWVkaXVtcCB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAgICAg
InZvaWQgbWFpbih2b2lkKVxuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIgICAg
Z2xfRnJhZ0NvbG9yID0gY29sb3I7XG4iCi0gICAgICAgICAgICAifVxuIjsKLQotICAgICAgICBt
UHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHRlc3RWZXJ0ZXhTaGFkZXJTb3VyY2UsIHRlc3RGcmFn
bWVudFNoYWRlclNvdXJjZSk7Ci0gICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotCi0g
ICAgICAgIG1UZXN0QXR0cmliID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInRlc3Qi
KTsKLSAgICAgICAgQVNTRVJUX05FKC0xLCBtVGVzdEF0dHJpYik7Ci0gICAgICAgIG1FeHBlY3Rl
ZEF0dHJpYiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJleHBlY3RlZCIpOwotICAg
ICAgICBBU1NFUlRfTkUoLTEsIG1FeHBlY3RlZEF0dHJpYik7Ci0KLSAgICAgICAgZ2xVc2VQcm9n
cmFtKG1Qcm9ncmFtKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1WZXJ0ZXhD
b3VudCA9IDI0OwotCi0gICAgR0x1aW50IG1Qcm9ncmFtOwotICAgIEdMaW50IG1UZXN0QXR0cmli
OwotICAgIEdMaW50IG1FeHBlY3RlZEF0dHJpYjsKLSAgICBHTHVpbnQgbUJ1ZmZlcjsKLSAgICBH
THVpbnQgbVF1YWRCdWZmZXI7Ci19OwotCi1URVNUX1AoVmVydGV4QXR0cmlidXRlVGVzdCwgVW5z
aWduZWRCeXRlVW5ub3JtYWxpemVkKQotewotICAgIEdMdWJ5dGUgaW5wdXREYXRhW21WZXJ0ZXhD
b3VudF0gPSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDEyNSwgMTI2LCAxMjcsIDEyOCwgMTI5
LCAyNTAsIDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU1IH07Ci0gICAgR0xmbG9hdCBleHBlY3RlZERh
dGFbbVZlcnRleENvdW50XTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1WZXJ0ZXhDb3Vu
dDsgaSsrKQotICAgIHsKLSAgICAgICAgZXhwZWN0ZWREYXRhW2ldID0gaW5wdXREYXRhW2ldOwot
ICAgIH0KLQotICAgIFRlc3REYXRhIGRhdGEoR0xfVU5TSUdORURfQllURSwgR0xfRkFMU0UsIFNv
dXJjZTo6SU1NRURJQVRFLCBpbnB1dERhdGEsIGV4cGVjdGVkRGF0YSk7Ci0gICAgcnVuVGVzdChk
YXRhKTsKLX0KLQotVEVTVF9QKFZlcnRleEF0dHJpYnV0ZVRlc3QsIFVuc2lnbmVkQnl0ZU5vcm1h
bGl6ZWQpCi17Ci0gICAgR0x1Ynl0ZSBpbnB1dERhdGFbbVZlcnRleENvdW50XSA9IHsgMCwgMSwg
MiwgMywgNCwgNSwgNiwgNywgMTI1LCAxMjYsIDEyNywgMTI4LCAxMjksIDI1MCwgMjUxLCAyNTIs
IDI1MywgMjU0LCAyNTUgfTsKLSAgICBHTGZsb2F0IGV4cGVjdGVkRGF0YVttVmVydGV4Q291bnRd
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVZlcnRleENvdW50OyBpKyspCi0gICAgewot
ICAgICAgICBleHBlY3RlZERhdGFbaV0gPSBOb3JtYWxpemUoaW5wdXREYXRhW2ldKTsKLSAgICB9
Ci0KLSAgICBUZXN0RGF0YSBkYXRhKEdMX1VOU0lHTkVEX0JZVEUsIEdMX1RSVUUsIFNvdXJjZTo6
SU1NRURJQVRFLCBpbnB1dERhdGEsIGV4cGVjdGVkRGF0YSk7Ci0gICAgcnVuVGVzdChkYXRhKTsK
LX0KLQotVEVTVF9QKFZlcnRleEF0dHJpYnV0ZVRlc3QsIEJ5dGVVbm5vcm1hbGl6ZWQpCi17Ci0g
ICAgR0xieXRlIGlucHV0RGF0YVttVmVydGV4Q291bnRdID0geyAwLCAxLCAyLCAzLCA0LCAtMSwg
LTIsIC0zLCAtNCwgMTI1LCAxMjYsIDEyNywgLTEyOCwgLTEyNywgLTEyNiB9OwotICAgIEdMZmxv
YXQgZXhwZWN0ZWREYXRhW21WZXJ0ZXhDb3VudF07Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtVmVydGV4Q291bnQ7IGkrKykKLSAgICB7Ci0gICAgICAgIGV4cGVjdGVkRGF0YVtpXSA9IGlu
cHV0RGF0YVtpXTsKLSAgICB9Ci0KLSAgICBUZXN0RGF0YSBkYXRhKEdMX0JZVEUsIEdMX0ZBTFNF
LCBTb3VyY2U6OklNTUVESUFURSwgaW5wdXREYXRhLCBleHBlY3RlZERhdGEpOwotICAgIHJ1blRl
c3QoZGF0YSk7Ci19Ci0KLVRFU1RfUChWZXJ0ZXhBdHRyaWJ1dGVUZXN0LCBCeXRlTm9ybWFsaXpl
ZCkKLXsKLSAgICBHTGJ5dGUgaW5wdXREYXRhW21WZXJ0ZXhDb3VudF0gPSB7IDAsIDEsIDIsIDMs
IDQsIC0xLCAtMiwgLTMsIC00LCAxMjUsIDEyNiwgMTI3LCAtMTI4LCAtMTI3LCAtMTI2IH07Ci0g
ICAgR0xmbG9hdCBleHBlY3RlZERhdGFbbVZlcnRleENvdW50XTsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1WZXJ0ZXhDb3VudDsgaSsrKQotICAgIHsKLSAgICAgICAgZXhwZWN0ZWREYXRh
W2ldID0gTm9ybWFsaXplKGlucHV0RGF0YVtpXSk7Ci0gICAgfQotCi0gICAgVGVzdERhdGEgZGF0
YShHTF9CWVRFLCBHTF9UUlVFLCBTb3VyY2U6OklNTUVESUFURSwgaW5wdXREYXRhLCBleHBlY3Rl
ZERhdGEpOwotICAgIHJ1blRlc3QoZGF0YSk7Ci19Ci0KLVRFU1RfUChWZXJ0ZXhBdHRyaWJ1dGVU
ZXN0LCBVbnNpZ25lZFNob3J0VW5ub3JtYWxpemVkKQotewotICAgIEdMdXNob3J0IGlucHV0RGF0
YVttVmVydGV4Q291bnRdID0geyAwLCAxLCAyLCAzLCAyNTQsIDI1NSwgMjU2LCAzMjc2NiwgMzI3
NjcsIDMyNzY4LCA2NTUzMywgNjU1MzQsIDY1NTM1IH07Ci0gICAgR0xmbG9hdCBleHBlY3RlZERh
dGFbbVZlcnRleENvdW50XTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1WZXJ0ZXhDb3Vu
dDsgaSsrKQotICAgIHsKLSAgICAgICAgZXhwZWN0ZWREYXRhW2ldID0gaW5wdXREYXRhW2ldOwot
ICAgIH0KLQotICAgIFRlc3REYXRhIGRhdGEoR0xfVU5TSUdORURfU0hPUlQsIEdMX0ZBTFNFLCBT
b3VyY2U6OklNTUVESUFURSwgaW5wdXREYXRhLCBleHBlY3RlZERhdGEpOwotICAgIHJ1blRlc3Qo
ZGF0YSk7Ci19Ci0KLVRFU1RfUChWZXJ0ZXhBdHRyaWJ1dGVUZXN0LCBVbnNpZ25lZFNob3J0Tm9y
bWFsaXplZCkKLXsKLSAgICBHTHVzaG9ydCBpbnB1dERhdGFbbVZlcnRleENvdW50XSA9IHsgMCwg
MSwgMiwgMywgMjU0LCAyNTUsIDI1NiwgMzI3NjYsIDMyNzY3LCAzMjc2OCwgNjU1MzMsIDY1NTM0
LCA2NTUzNSB9OwotICAgIEdMZmxvYXQgZXhwZWN0ZWREYXRhW21WZXJ0ZXhDb3VudF07Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtVmVydGV4Q291bnQ7IGkrKykKLSAgICB7Ci0gICAgICAg
IGV4cGVjdGVkRGF0YVtpXSA9IE5vcm1hbGl6ZShpbnB1dERhdGFbaV0pOwotICAgIH0KLQotICAg
IFRlc3REYXRhIGRhdGEoR0xfVU5TSUdORURfU0hPUlQsIEdMX1RSVUUsIFNvdXJjZTo6SU1NRURJ
QVRFLCBpbnB1dERhdGEsIGV4cGVjdGVkRGF0YSk7Ci0gICAgcnVuVGVzdChkYXRhKTsKLX0KLQot
VEVTVF9QKFZlcnRleEF0dHJpYnV0ZVRlc3QsIFNob3J0VW5ub3JtYWxpemVkKQotewotICAgIEdM
c2hvcnQgaW5wdXREYXRhW21WZXJ0ZXhDb3VudF0gPSB7ICAwLCAxLCAyLCAzLCAtMSwgLTIsIC0z
LCAtNCwgMzI3NjYsIDMyNzY3LCAtMzI3NjgsIC0zMjc2NywgLTMyNzY2IH07Ci0gICAgR0xmbG9h
dCBleHBlY3RlZERhdGFbbVZlcnRleENvdW50XTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1WZXJ0ZXhDb3VudDsgaSsrKQotICAgIHsKLSAgICAgICAgZXhwZWN0ZWREYXRhW2ldID0gaW5w
dXREYXRhW2ldOwotICAgIH0KLQotICAgIFRlc3REYXRhIGRhdGEoR0xfU0hPUlQsIEdMX0ZBTFNF
LCBTb3VyY2U6OklNTUVESUFURSwgaW5wdXREYXRhLCBleHBlY3RlZERhdGEpOwotICAgIHJ1blRl
c3QoZGF0YSk7Ci19Ci0KLVRFU1RfUChWZXJ0ZXhBdHRyaWJ1dGVUZXN0LCBTaG9ydE5vcm1hbGl6
ZWQpCi17Ci0gICAgR0xzaG9ydCBpbnB1dERhdGFbbVZlcnRleENvdW50XSA9IHsgIDAsIDEsIDIs
IDMsIC0xLCAtMiwgLTMsIC00LCAzMjc2NiwgMzI3NjcsIC0zMjc2OCwgLTMyNzY3LCAtMzI3NjYg
fTsKLSAgICBHTGZsb2F0IGV4cGVjdGVkRGF0YVttVmVydGV4Q291bnRdOwotICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbVZlcnRleENvdW50OyBpKyspCi0gICAgewotICAgICAgICBleHBlY3Rl
ZERhdGFbaV0gPSBOb3JtYWxpemUoaW5wdXREYXRhW2ldKTsKLSAgICB9Ci0KLSAgICBUZXN0RGF0
YSBkYXRhKEdMX1NIT1JULCBHTF9UUlVFLCBTb3VyY2U6OklNTUVESUFURSwgaW5wdXREYXRhLCBl
eHBlY3RlZERhdGEpOwotICAgIHJ1blRlc3QoZGF0YSk7Ci19Ci0KLWNsYXNzIFZlcnRleEF0dHJp
YnV0ZVRlc3RFUzMgOiBwdWJsaWMgVmVydGV4QXR0cmlidXRlVGVzdAotewotICBwcm90ZWN0ZWQ6
Ci0gICAgVmVydGV4QXR0cmlidXRlVGVzdEVTMygpIHt9Ci19OwotCi1URVNUX1AoVmVydGV4QXR0
cmlidXRlVGVzdEVTMywgSW50VW5ub3JtYWxpemVkKQotewotICAgIEdMaW50IGxvICAgICAgICAg
ICAgICAgICAgICAgID0gc3RkOjpudW1lcmljX2xpbWl0czxHTGludD46Om1pbigpOwotICAgIEdM
aW50IGhpICAgICAgICAgICAgICAgICAgICAgID0gc3RkOjpudW1lcmljX2xpbWl0czxHTGludD46
Om1heCgpOwotICAgIEdMaW50IGlucHV0RGF0YVttVmVydGV4Q291bnRdID0gezAsIDEsIDIsIDMs
IC0xLCAtMiwgLTMsIC00LCAtMSwgaGksIGhpIC0gMSwgbG8sIGxvICsgMX07Ci0gICAgR0xmbG9h
dCBleHBlY3RlZERhdGFbbVZlcnRleENvdW50XTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1WZXJ0ZXhDb3VudDsgaSsrKQotICAgIHsKLSAgICAgICAgZXhwZWN0ZWREYXRhW2ldID0gc3Rh
dGljX2Nhc3Q8R0xmbG9hdD4oaW5wdXREYXRhW2ldKTsKLSAgICB9Ci0KLSAgICBUZXN0RGF0YSBk
YXRhKEdMX0lOVCwgR0xfRkFMU0UsIFNvdXJjZTo6QlVGRkVSLCBpbnB1dERhdGEsIGV4cGVjdGVk
RGF0YSk7Ci0gICAgcnVuVGVzdChkYXRhKTsKLX0KLQotVEVTVF9QKFZlcnRleEF0dHJpYnV0ZVRl
c3RFUzMsIEludE5vcm1hbGl6ZWQpCi17Ci0gICAgR0xpbnQgbG8gICAgICAgICAgICAgICAgICAg
ICAgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMaW50Pjo6bWluKCk7Ci0gICAgR0xpbnQgaGkgICAg
ICAgICAgICAgICAgICAgICAgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMaW50Pjo6bWF4KCk7Ci0g
ICAgR0xpbnQgaW5wdXREYXRhW21WZXJ0ZXhDb3VudF0gPSB7MCwgMSwgMiwgMywgLTEsIC0yLCAt
MywgLTQsIC0xLCBoaSwgaGkgLSAxLCBsbywgbG8gKyAxfTsKLSAgICBHTGZsb2F0IGV4cGVjdGVk
RGF0YVttVmVydGV4Q291bnRdOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVZlcnRleENv
dW50OyBpKyspCi0gICAgewotICAgICAgICBleHBlY3RlZERhdGFbaV0gPSBOb3JtYWxpemUoaW5w
dXREYXRhW2ldKTsKLSAgICB9Ci0KLSAgICBUZXN0RGF0YSBkYXRhKEdMX0lOVCwgR0xfVFJVRSwg
U291cmNlOjpCVUZGRVIsIGlucHV0RGF0YSwgZXhwZWN0ZWREYXRhKTsKLSAgICBydW5UZXN0KGRh
dGEpOwotfQotCi1URVNUX1AoVmVydGV4QXR0cmlidXRlVGVzdEVTMywgVW5zaWduZWRJbnRVbm5v
cm1hbGl6ZWQpCi17Ci0gICAgR0x1aW50IG1pZCAgICAgICAgICAgICAgICAgICAgID0gc3RkOjpu
dW1lcmljX2xpbWl0czxHTHVpbnQ+OjptYXgoKSA+PiAxOwotICAgIEdMdWludCBoaSAgICAgICAg
ICAgICAgICAgICAgICA9IHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCk7Ci0gICAg
R0x1aW50IGlucHV0RGF0YVttVmVydGV4Q291bnRdID0gezAsICAgICAgIDEsICAgMiwgICAgICAg
MywgICAgICAyNTQsICAgIDI1NSwgMjU2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtaWQgLSAxLCBtaWQsIG1pZCArIDEsIGhpIC0gMiwgaGkgLSAxLCBoaX07Ci0gICAg
R0xmbG9hdCBleHBlY3RlZERhdGFbbVZlcnRleENvdW50XTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1WZXJ0ZXhDb3VudDsgaSsrKQotICAgIHsKLSAgICAgICAgZXhwZWN0ZWREYXRhW2ld
ID0gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oaW5wdXREYXRhW2ldKTsKLSAgICB9Ci0KLSAgICBUZXN0
RGF0YSBkYXRhKEdMX1VOU0lHTkVEX0lOVCwgR0xfRkFMU0UsIFNvdXJjZTo6QlVGRkVSLCBpbnB1
dERhdGEsIGV4cGVjdGVkRGF0YSk7Ci0gICAgcnVuVGVzdChkYXRhKTsKLX0KLQotVEVTVF9QKFZl
cnRleEF0dHJpYnV0ZVRlc3RFUzMsIFVuc2lnbmVkSW50Tm9ybWFsaXplZCkKLXsKLSAgICBHTHVp
bnQgbWlkICAgICAgICAgICAgICAgICAgICAgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46
Om1heCgpID4+IDE7Ci0gICAgR0x1aW50IGhpICAgICAgICAgICAgICAgICAgICAgID0gc3RkOjpu
dW1lcmljX2xpbWl0czxHTHVpbnQ+OjptYXgoKTsKLSAgICBHTHVpbnQgaW5wdXREYXRhW21WZXJ0
ZXhDb3VudF0gPSB7MCwgICAgICAgMSwgICAyLCAgICAgICAzLCAgICAgIDI1NCwgICAgMjU1LCAy
NTYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pZCAtIDEsIG1pZCwg
bWlkICsgMSwgaGkgLSAyLCBoaSAtIDEsIGhpfTsKLSAgICBHTGZsb2F0IGV4cGVjdGVkRGF0YVtt
VmVydGV4Q291bnRdOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVZlcnRleENvdW50OyBp
KyspCi0gICAgewotICAgICAgICBleHBlY3RlZERhdGFbaV0gPSBOb3JtYWxpemUoaW5wdXREYXRh
W2ldKTsKLSAgICB9Ci0KLSAgICBUZXN0RGF0YSBkYXRhKEdMX1VOU0lHTkVEX0lOVCwgR0xfVFJV
RSwgU291cmNlOjpCVUZGRVIsIGlucHV0RGF0YSwgZXhwZWN0ZWREYXRhKTsKLSAgICBydW5UZXN0
KGRhdGEpOwotfQotCi0vLyBWYWxpZGF0ZSB0aGF0IHdlIGNhbiBzdXBwb3J0IEdMX01BWF9BVFRS
SUJTIGF0dHJpYnMKLVRFU1RfUChWZXJ0ZXhBdHRyaWJ1dGVUZXN0LCBNYXhBdHRyaWJzKQotewot
ICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgd2h5IHdlIGdldCB0aGlzIGVycm9yIG9u
IEFNRC9PcGVuR0wgYW5kIEludGVsLgotICAgIGlmICgoSXNJbnRlbCgpIHx8IElzQU1EKCkpICYm
IEdldFBhcmFtKCkuZ2V0UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVO
R0xfQU5HTEUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJ
bnRlbCBhbmQgQU1ELiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgR0xpbnQgbWF4QXR0cmliczsKLSAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WRVJURVhfQVRU
UklCUywgJm1heEF0dHJpYnMpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8g
UmVzZXJ2ZSBvbmUgYXR0cmliIGZvciBwb3NpdGlvbgotICAgIEdMaW50IGRyYXdBdHRyaWJzID0g
bWF4QXR0cmlicyAtIDE7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IGNvbXBpbGVNdWx0aUF0dHJp
YlByb2dyYW0oZHJhd0F0dHJpYnMpOwotICAgIEFTU0VSVF9ORSgwdSwgcHJvZ3JhbSk7Ci0KLSAg
ICBzZXR1cE11bHRpQXR0cmlicyhwcm9ncmFtLCBkcmF3QXR0cmlicywgMC41ZiAvIHN0YXRpY19j
YXN0PGZsb2F0PihkcmF3QXR0cmlicykpOwotICAgIGRyYXdRdWFkKHByb2dyYW0sICJwb3NpdGlv
biIsIDAuNWYpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX1BJWEVM
X05FQVIoMCwgMCwgMTI4LCAwLCAwLCAyNTUsIDEpOwotfQotCi0vLyBWYWxpZGF0ZSB0aGF0IHdl
IGNhbm5vdCBzdXBwb3J0IEdMX01BWF9BVFRSSUJTKzEgYXR0cmlicwotVEVTVF9QKFZlcnRleEF0
dHJpYnV0ZVRlc3QsIE1heEF0dHJpYnNQbHVzT25lKQotewotICAgIC8vIFRPRE8oam1hZGlsbCk6
IEZpZ3VyZSBvdXQgd2h5IHdlIGdldCB0aGlzIGVycm9yIG9uIEFNRC9FUzIvT3BlbkdMCi0gICAg
aWYgKElzQU1EKCkgJiYgR2V0UGFyYW0oKSA9PSBFUzJfT1BFTkdMKCkpCi0gICAgewotICAgICAg
ICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gQU1EL0VTMi9PcGVuR0wiIDw8IHN0ZDo6
ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEdMaW50IG1heEF0dHJpYnM7Ci0g
ICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVYX0FUVFJJQlMsICZtYXhBdHRyaWJzKTsKLSAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIEV4Y2VlZCBhdHRyaWIgY291bnQgYnkg
b25lIChjb3VudGluZyBwb3NpdGlvbikKLSAgICBHTGludCBkcmF3QXR0cmlicyA9IG1heEF0dHJp
YnM7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IGNvbXBpbGVNdWx0aUF0dHJpYlByb2dyYW0oZHJh
d0F0dHJpYnMpOwotICAgIEFTU0VSVF9FUSgwdSwgcHJvZ3JhbSk7Ci19Ci0KLS8vIFNpbXBsZSB0
ZXN0IGZvciB3aGVuIHdlIHVzZSBnbEJpbmRBdHRyaWJMb2NhdGlvbgotVEVTVF9QKFZlcnRleEF0
dHJpYnV0ZVRlc3QsIFNpbXBsZUJpbmRBdHRyaWJMb2NhdGlvbikKLXsKLSAgICAvLyBUT0RPKGpt
YWRpbGwpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGZhaWxzIG9uIEludGVsLgotICAgIGlmIChJc0lu
dGVsKCkgJiYgR2V0UGFyYW0oKS5nZXRSZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIG9uIEludGVsLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgLy8gUmUtdXNlIHRoZSBtdWx0aS1hdHRyaWIgcHJvZ3JhbSwgYmluZGluZyBhdHRyaWJ1dGUg
MAotICAgIEdMdWludCBwcm9ncmFtID0gY29tcGlsZU11bHRpQXR0cmliUHJvZ3JhbSgxKTsKLSAg
ICBnbEJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAyLCAicG9zaXRpb24iKTsKLSAgICBnbEJp
bmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCAzLCAiYTAiKTsKLSAgICBnbExpbmtQcm9ncmFtKHBy
b2dyYW0pOwotCi0gICAgLy8gU2V0dXAgYW5kIGRyYXcgdGhlIHF1YWQKLSAgICBzZXR1cE11bHRp
QXR0cmlicyhwcm9ncmFtLCAxLCAwLjVmKTsKLSAgICBkcmF3UXVhZChwcm9ncmFtLCAicG9zaXRp
b24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfUElYRUxf
TkVBUigwLCAwLCAxMjgsIDAsIDAsIDI1NSwgMSk7Ci19Ci0KLS8vIFZlcmlmeSB0aGF0IGRyYXdp
bmcgd2l0aCBhIGxhcmdlIG91dC1vZi1yYW5nZSBvZmZzZXQgZ2VuZXJhdGVzIElOVkFMSURfT1BF
UkFUSU9OLgotVEVTVF9QKFZlcnRleEF0dHJpYnV0ZVRlc3QsIERyYXdBcnJheXNCdWZmZXJUb29T
bWFsbCkKLXsKLSAgICBHTGZsb2F0IGlucHV0RGF0YVttVmVydGV4Q291bnRdOwotICAgIEdMZmxv
YXQgZXhwZWN0ZWREYXRhW21WZXJ0ZXhDb3VudF07Ci0gICAgZm9yIChzaXplX3QgY291bnQgPSAw
OyBjb3VudCA8IG1WZXJ0ZXhDb3VudDsgKytjb3VudCkKLSAgICB7Ci0gICAgICAgIGlucHV0RGF0
YVtjb3VudF0gICAgPSBzdGF0aWNfY2FzdDxHTGZsb2F0Pihjb3VudCk7Ci0gICAgICAgIGV4cGVj
dGVkRGF0YVtjb3VudF0gPSBpbnB1dERhdGFbY291bnRdOwotICAgIH0KLQotICAgIFRlc3REYXRh
IGRhdGEoR0xfRkxPQVQsIEdMX0ZBTFNFLCBTb3VyY2U6OkJVRkZFUiwgaW5wdXREYXRhLCBleHBl
Y3RlZERhdGEpOwotICAgIGRhdGEuYnVmZmVyT2Zmc2V0ID0gbVZlcnRleENvdW50ICogVHlwZVN0
cmlkZShHTF9GTE9BVCk7Ci0KLSAgICBzZXR1cFRlc3QoZGF0YSwgMSk7Ci0gICAgZHJhd1F1YWQo
bVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci19Ci0KLS8vIFZlcmlmeSB0aGF0IGluZGV4IGRyYXcgd2l0aCBhbiBv
dXQtb2YtcmFuZ2Ugb2Zmc2V0IGdlbmVyYXRlcyBJTlZBTElEX09QRVJBVElPTi4KLVRFU1RfUChW
ZXJ0ZXhBdHRyaWJ1dGVUZXN0LCBEcmF3RWxlbWVudHNCdWZmZXJUb29TbWFsbCkKLXsKLSAgICBH
TGZsb2F0IGlucHV0RGF0YVttVmVydGV4Q291bnRdOwotICAgIEdMZmxvYXQgZXhwZWN0ZWREYXRh
W21WZXJ0ZXhDb3VudF07Ci0gICAgZm9yIChzaXplX3QgY291bnQgPSAwOyBjb3VudCA8IG1WZXJ0
ZXhDb3VudDsgKytjb3VudCkKLSAgICB7Ci0gICAgICAgIGlucHV0RGF0YVtjb3VudF0gICAgPSBz
dGF0aWNfY2FzdDxHTGZsb2F0Pihjb3VudCk7Ci0gICAgICAgIGV4cGVjdGVkRGF0YVtjb3VudF0g
PSBpbnB1dERhdGFbY291bnRdOwotICAgIH0KLQotICAgIFRlc3REYXRhIGRhdGEoR0xfRkxPQVQs
IEdMX0ZBTFNFLCBTb3VyY2U6OkJVRkZFUiwgaW5wdXREYXRhLCBleHBlY3RlZERhdGEpOwotICAg
IGRhdGEuYnVmZmVyT2Zmc2V0ID0gKG1WZXJ0ZXhDb3VudCAtIDMpICogVHlwZVN0cmlkZShHTF9G
TE9BVCk7Ci0KLSAgICBzZXR1cFRlc3QoZGF0YSwgMSk7Ci0gICAgZHJhd0luZGV4ZWRRdWFkKG1Q
cm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwotfQotCi0vLyBWZXJpZnkgdGhhdCB1c2luZyBhIGRpZmZlcmVudCBzdGFy
dCB2ZXJ0ZXggZG9lc24ndCBtZXNzIHVwIHRoZSBkcmF3LgotVEVTVF9QKFZlcnRleEF0dHJpYnV0
ZVRlc3QsIERyYXdBcnJheXNXaXRoQnVmZmVyT2Zmc2V0KQotewotICAgIC8vIFRPRE8oam1hZGls
bCk6IERpYWdub3NlIHRoaXMgZmFpbHVyZS4KLSAgICBpZiAoSXNEM0QxMV9GTDkzKCkpCi0gICAg
ewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gRDNEMTEgRkwgOV8zIiA8
PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBUT0RPKGdlb2Zm
bGFuZyk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgaXMgYnJva2VuIG9uIEFNRCBPcGVuR0wKLSAgICBp
ZiAoSXNBTUQoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfT1BFTkdMX0FOR0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgb24gQU1EIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGluaXRCYXNpY1Byb2dyYW0oKTsKLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0p
OwotCi0gICAgR0xmbG9hdCBpbnB1dERhdGFbbVZlcnRleENvdW50XTsKLSAgICBHTGZsb2F0IGV4
cGVjdGVkRGF0YVttVmVydGV4Q291bnRdOwotICAgIGZvciAoc2l6ZV90IGNvdW50ID0gMDsgY291
bnQgPCBtVmVydGV4Q291bnQ7ICsrY291bnQpCi0gICAgewotICAgICAgICBpbnB1dERhdGFbY291
bnRdICAgID0gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oY291bnQpOwotICAgICAgICBleHBlY3RlZERh
dGFbY291bnRdID0gaW5wdXREYXRhW2NvdW50XTsKLSAgICB9Ci0KLSAgICBhdXRvIHF1YWRWZXJ0
aWNlcyAgICAgICAgPSBHZXRRdWFkVmVydGljZXMoKTsKLSAgICBHTHNpemVpIHF1YWRWZXJ0aWNl
c1NpemUgPSBzdGF0aWNfY2FzdDxHTHNpemVpPihxdWFkVmVydGljZXMuc2l6ZSgpICogc2l6ZW9m
KHF1YWRWZXJ0aWNlc1swXSkpOwotCi0gICAgZ2xHZW5CdWZmZXJzKDEsICZtUXVhZEJ1ZmZlcik7
Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVF1YWRCdWZmZXIpOwotICAgIGds
QnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHF1YWRWZXJ0aWNlc1NpemUgKyBzaXplb2YoVmVj
dG9yMyksIG51bGxwdHIsIEdMX1NUQVRJQ19EUkFXKTsKLSAgICBnbEJ1ZmZlclN1YkRhdGEoR0xf
QVJSQVlfQlVGRkVSLCAwLCBxdWFkVmVydGljZXNTaXplLCBxdWFkVmVydGljZXMuZGF0YSgpKTsK
LQotICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9n
cmFtLCAicG9zaXRpb24iKTsKLSAgICBBU1NFUlRfTkUoLTEsIHBvc2l0aW9uTG9jYXRpb24pOwot
ICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCAzLCBHTF9GTE9BVCwg
R0xfRkFMU0UsIDAsIG51bGxwdHIpOwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9z
aXRpb25Mb2NhdGlvbik7Ci0KLSAgICBHTHNpemVpIGRhdGFTaXplID0gbVZlcnRleENvdW50ICog
VHlwZVN0cmlkZShHTF9GTE9BVCk7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwg
bUJ1ZmZlcik7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgZGF0YVNpemUgKyBU
eXBlU3RyaWRlKEdMX0ZMT0FUKSwgbnVsbHB0ciwgR0xfU1RBVElDX0RSQVcpOwotICAgIGdsQnVm
ZmVyU3ViRGF0YShHTF9BUlJBWV9CVUZGRVIsIDAsIGRhdGFTaXplLCBpbnB1dERhdGEpOwotICAg
IGdsVmVydGV4QXR0cmliUG9pbnRlcihtVGVzdEF0dHJpYiwgMSwgR0xfRkxPQVQsIEdMX0ZBTFNF
LCAwLCBudWxscHRyKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1UZXN0QXR0cmli
KTsKLQotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDApOwotICAgIGdsVmVydGV4
QXR0cmliUG9pbnRlcihtRXhwZWN0ZWRBdHRyaWIsIDEsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwg
ZXhwZWN0ZWREYXRhKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1FeHBlY3RlZEF0
dHJpYik7Ci0KLSAgICAvLyBWZXJ0ZXggZHJhdyB3aXRoIG5vIHN0YXJ0IHZlcnRleCBvZmZzZXQg
KHNlY29uZCBhcmd1bWVudCBpcyB6ZXJvKS4KLSAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVT
LCAwLCA2KTsKLSAgICBjaGVja1BpeGVscygpOwotCi0gICAgLy8gRHJhdyBvZmZzZXQgYnkgb25l
IHZlcnRleC4KLSAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAxLCA2KTsKLSAgICBjaGVj
a1BpeGVscygpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLWNsYXNzIFZlcnRl
eEF0dHJpYnV0ZUNhY2hpbmdUZXN0IDogcHVibGljIFZlcnRleEF0dHJpYnV0ZVRlc3QKLXsKLSAg
cHJvdGVjdGVkOgotICAgIFZlcnRleEF0dHJpYnV0ZUNhY2hpbmdUZXN0KCkge30KLQotICAgIHZv
aWQgU2V0VXAoKSBvdmVycmlkZTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBEZXN0VD4KLSAg
ICBzdGF0aWMgc3RkOjp2ZWN0b3I8R0xmbG9hdD4gR2V0RXhwZWN0ZWREYXRhKGNvbnN0IHN0ZDo6
dmVjdG9yPEdMdWJ5dGU+ICZzcmNEYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dHJpYlR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCk7Ci0KLSAg
ICB2b2lkIGluaXREb3VibGVBdHRyaWJQcm9ncmFtKCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIHRlc3RWZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAgICAgImF0dHJpYnV0
ZSBtZWRpdW1wIHZlYzQgcG9zaXRpb247XG4iCi0gICAgICAgICAgICAiYXR0cmlidXRlIG1lZGl1
bXAgdmVjNCB0ZXN0O1xuIgotICAgICAgICAgICAgImF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQgZXhw
ZWN0ZWQ7XG4iCi0gICAgICAgICAgICAiYXR0cmlidXRlIG1lZGl1bXAgdmVjNCB0ZXN0MjtcbiIK
LSAgICAgICAgICAgICJhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IGV4cGVjdGVkMjtcbiIKLSAgICAg
ICAgICAgICJ2YXJ5aW5nIG1lZGl1bXAgdmVjNCBjb2xvcjtcbiIKLSAgICAgICAgICAgICJ2b2lk
IG1haW4odm9pZClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIGdsX1Bv
c2l0aW9uID0gcG9zaXRpb247XG4iCi0gICAgICAgICAgICAiICAgIHZlYzQgdGhyZXNob2xkID0g
bWF4KGFicyhleHBlY3RlZCkgKiAwLjAxLCAxLjAgLyA2NC4wKTtcbiIKLSAgICAgICAgICAgICIg
ICAgY29sb3IgPSB2ZWM0KGxlc3NUaGFuRXF1YWwoYWJzKHRlc3QgLSBleHBlY3RlZCksIHRocmVz
aG9sZCkpO1xuIgotICAgICAgICAgICAgIiAgICB2ZWM0IHRocmVzaG9sZDIgPSBtYXgoYWJzKGV4
cGVjdGVkMikgKiAwLjAxLCAxLjAgLyA2NC4wKTtcbiIKLSAgICAgICAgICAgICIgICAgY29sb3Ig
Kz0gdmVjNChsZXNzVGhhbkVxdWFsKGFicyh0ZXN0MiAtIGV4cGVjdGVkMiksIHRocmVzaG9sZDIp
KTtcbiIKLSAgICAgICAgICAgICJ9XG4iOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRl
c3RGcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICAgICAidmFyeWluZyBtZWRpdW1wIHZl
YzQgY29sb3I7XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKHZvaWQpXG4iCi0gICAgICAgICAg
ICAie1xuIgotICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjtcbiIKLSAgICAg
ICAgICAgICJ9XG4iOwotCi0gICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odGVzdFZl
cnRleFNoYWRlclNvdXJjZSwgdGVzdEZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICAgICAgQVNT
RVJUX05FKDB1LCBtUHJvZ3JhbSk7Ci0KLSAgICAgICAgbVRlc3RBdHRyaWIgPSBnbEdldEF0dHJp
YkxvY2F0aW9uKG1Qcm9ncmFtLCAidGVzdCIpOwotICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXN0
QXR0cmliKTsKLSAgICAgICAgbUV4cGVjdGVkQXR0cmliID0gZ2xHZXRBdHRyaWJMb2NhdGlvbiht
UHJvZ3JhbSwgImV4cGVjdGVkIik7Ci0gICAgICAgIEFTU0VSVF9ORSgtMSwgbUV4cGVjdGVkQXR0
cmliKTsKLQotICAgICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIH0KLQotICAgIHN0
cnVjdCBBdHRyaWJEYXRhCi0gICAgewotICAgICAgICBBdHRyaWJEYXRhKEdMZW51bSB0eXBlSW4s
IEdMaW50IHNpemVJbiwgR0xib29sZWFuIG5vcm1hbGl6ZWRJbiwgR0xzaXplaSBzdHJpZGVJbik7
Ci0KLSAgICAgICAgR0xlbnVtIHR5cGU7Ci0gICAgICAgIEdMaW50IHNpemU7Ci0gICAgICAgIEdM
Ym9vbGVhbiBub3JtYWxpemVkOwotICAgICAgICBHTHNpemVpIHN0cmlkZTsKLSAgICB9OwotCi0g
ICAgc3RkOjp2ZWN0b3I8QXR0cmliRGF0YT4gbVRlc3REYXRhOwotICAgIHN0ZDo6bWFwPEdMZW51
bSwgc3RkOjp2ZWN0b3I8R0xmbG9hdD4+IG1FeHBlY3RlZERhdGE7Ci0gICAgc3RkOjptYXA8R0xl
bnVtLCBzdGQ6OnZlY3RvcjxHTGZsb2F0Pj4gbU5vcm1FeHBlY3RlZERhdGE7Ci19OwotCi1WZXJ0
ZXhBdHRyaWJ1dGVDYWNoaW5nVGVzdDo6QXR0cmliRGF0YTo6QXR0cmliRGF0YShHTGVudW0gdHlw
ZUluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgc2l6ZUluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIG5vcm1hbGl6ZWRJbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlSW4pCi0gICAgOiB0eXBl
KHR5cGVJbiksIHNpemUoc2l6ZUluKSwgbm9ybWFsaXplZChub3JtYWxpemVkSW4pLCBzdHJpZGUo
c3RyaWRlSW4pCi17Ci19Ci0KLS8vIHN0YXRpYwotdGVtcGxhdGUgPHR5cGVuYW1lIERlc3RUPgot
c3RkOjp2ZWN0b3I8R0xmbG9hdD4gVmVydGV4QXR0cmlidXRlQ2FjaGluZ1Rlc3Q6OkdldEV4cGVj
dGVkRGF0YSgKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxHTHVieXRlPiAmc3JjRGF0YSwKLSAgICBH
TGVudW0gYXR0cmliVHlwZSwKLSAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCkKLXsKLSAgICBzdGQ6
OnZlY3RvcjxHTGZsb2F0PiBleHBlY3RlZERhdGE7Ci0KLSAgICBjb25zdCBEZXN0VCAqdHlwZWRT
cmNQdHIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IERlc3RUICo+KHNyY0RhdGEuZGF0YSgpKTsK
LSAgICBzaXplX3QgaXRlcmF0aW9ucyAgICAgICAgPSBzcmNEYXRhLnNpemUoKSAvIFR5cGVTdHJp
ZGUoYXR0cmliVHlwZSk7Ci0KLSAgICBpZiAobm9ybWFsaXplZCkKLSAgICB7Ci0gICAgICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBpdGVyYXRpb25zOyArK2luZGV4KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBleHBlY3RlZERhdGEucHVzaF9iYWNrKE5vcm1hbGl6ZSh0eXBlZFNy
Y1B0cltpbmRleF0pKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAg
ICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgaXRlcmF0aW9uczsgKytpbmRleCkKLSAg
ICAgICAgewotICAgICAgICAgICAgZXhwZWN0ZWREYXRhLnB1c2hfYmFjayhzdGF0aWNfY2FzdDxH
TGZsb2F0Pih0eXBlZFNyY1B0cltpbmRleF0pKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJl
dHVybiBleHBlY3RlZERhdGE7Ci19Ci0KLXZvaWQgVmVydGV4QXR0cmlidXRlQ2FjaGluZ1Rlc3Q6
OlNldFVwKCkKLXsKLSAgICBWZXJ0ZXhBdHRyaWJ1dGVUZXN0OjpTZXRVcCgpOwotCi0gICAgZ2xC
aW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7Ci0KLSAgICBzdGQ6OnZlY3RvcjxH
THVieXRlPiBzcmNEYXRhOwotICAgIGZvciAoc2l6ZV90IGNvdW50ID0gMDsgY291bnQgPCA0OyAr
K2NvdW50KQotICAgIHsKLSAgICAgICAgZm9yIChHTHVieXRlIGkgPSAwOyBpIDwgc3RkOjpudW1l
cmljX2xpbWl0czxHTHVieXRlPjo6bWF4KCk7ICsraSkKLSAgICAgICAgewotICAgICAgICAgICAg
c3JjRGF0YS5wdXNoX2JhY2soaSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBnbEJ1ZmZlckRh
dGEoR0xfQVJSQVlfQlVGRkVSLCBzcmNEYXRhLnNpemUoKSwgc3JjRGF0YS5kYXRhKCksIEdMX1NU
QVRJQ19EUkFXKTsKLQotICAgIEdMaW50IHZpZXdwb3J0U2l6ZVs0XTsKLSAgICBnbEdldEludGVn
ZXJ2KEdMX1ZJRVdQT1JULCB2aWV3cG9ydFNpemUpOwotCi0gICAgc3RkOjp2ZWN0b3I8R0xlbnVt
PiBhdHRyaWJUeXBlczsKLSAgICBhdHRyaWJUeXBlcy5wdXNoX2JhY2soR0xfQllURSk7Ci0gICAg
YXR0cmliVHlwZXMucHVzaF9iYWNrKEdMX1VOU0lHTkVEX0JZVEUpOwotICAgIGF0dHJpYlR5cGVz
LnB1c2hfYmFjayhHTF9TSE9SVCk7Ci0gICAgYXR0cmliVHlwZXMucHVzaF9iYWNrKEdMX1VOU0lH
TkVEX1NIT1JUKTsKLQotICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzKQotICAg
IHsKLSAgICAgICAgYXR0cmliVHlwZXMucHVzaF9iYWNrKEdMX0lOVCk7Ci0gICAgICAgIGF0dHJp
YlR5cGVzLnB1c2hfYmFjayhHTF9VTlNJR05FRF9JTlQpOwotICAgIH0KLQotICAgIGNvbnN0IEdM
aW50IG1heFNpemUgICAgID0gNDsKLSAgICBjb25zdCBHTHNpemVpIG1heFN0cmlkZSA9IDQ7Ci0K
LSAgICBmb3IgKEdMZW51bSBhdHRyaWJUeXBlIDogYXR0cmliVHlwZXMpCi0gICAgewotICAgICAg
ICBmb3IgKEdMaW50IGF0dHJpYlNpemUgPSAxOyBhdHRyaWJTaXplIDw9IG1heFNpemU7ICsrYXR0
cmliU2l6ZSkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yIChHTHNpemVpIHN0cmlkZSA9IDE7
IHN0cmlkZSA8PSBtYXhTdHJpZGU7ICsrc3RyaWRlKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIG1UZXN0RGF0YS5wdXNoX2JhY2soQXR0cmliRGF0YShhdHRyaWJUeXBlLCBhdHRyaWJT
aXplLCBHTF9GQUxTRSwgc3RyaWRlKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGF0dHJpYlR5cGUg
IT0gR0xfRkxPQVQpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBtVGVz
dERhdGEucHVzaF9iYWNrKEF0dHJpYkRhdGEoYXR0cmliVHlwZSwgYXR0cmliU2l6ZSwgR0xfVFJV
RSwgc3RyaWRlKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0gICAgfQotCi0gICAgbUV4cGVjdGVkRGF0YVtHTF9CWVRFXSAgICAgICAgICA9IEdldEV4cGVj
dGVkRGF0YTxHTGJ5dGU+KHNyY0RhdGEsIEdMX0JZVEUsIEdMX0ZBTFNFKTsKLSAgICBtRXhwZWN0
ZWREYXRhW0dMX1VOU0lHTkVEX0JZVEVdID0gR2V0RXhwZWN0ZWREYXRhPEdMdWJ5dGU+KHNyY0Rh
dGEsIEdMX1VOU0lHTkVEX0JZVEUsIEdMX0ZBTFNFKTsKLSAgICBtRXhwZWN0ZWREYXRhW0dMX1NI
T1JUXSA9IEdldEV4cGVjdGVkRGF0YTxHTHNob3J0PihzcmNEYXRhLCBHTF9TSE9SVCwgR0xfRkFM
U0UpOwotICAgIG1FeHBlY3RlZERhdGFbR0xfVU5TSUdORURfU0hPUlRdID0KLSAgICAgICAgR2V0
RXhwZWN0ZWREYXRhPEdMdXNob3J0PihzcmNEYXRhLCBHTF9VTlNJR05FRF9TSE9SVCwgR0xfRkFM
U0UpOwotICAgIG1FeHBlY3RlZERhdGFbR0xfSU5UXSAgICAgICAgICA9IEdldEV4cGVjdGVkRGF0
YTxHTGludD4oc3JjRGF0YSwgR0xfSU5ULCBHTF9GQUxTRSk7Ci0gICAgbUV4cGVjdGVkRGF0YVtH
TF9VTlNJR05FRF9JTlRdID0gR2V0RXhwZWN0ZWREYXRhPEdMdWludD4oc3JjRGF0YSwgR0xfVU5T
SUdORURfSU5ULCBHTF9GQUxTRSk7Ci0KLSAgICBtTm9ybUV4cGVjdGVkRGF0YVtHTF9CWVRFXSA9
IEdldEV4cGVjdGVkRGF0YTxHTGJ5dGU+KHNyY0RhdGEsIEdMX0JZVEUsIEdMX1RSVUUpOwotICAg
IG1Ob3JtRXhwZWN0ZWREYXRhW0dMX1VOU0lHTkVEX0JZVEVdID0KLSAgICAgICAgR2V0RXhwZWN0
ZWREYXRhPEdMdWJ5dGU+KHNyY0RhdGEsIEdMX1VOU0lHTkVEX0JZVEUsIEdMX1RSVUUpOwotICAg
IG1Ob3JtRXhwZWN0ZWREYXRhW0dMX1NIT1JUXSA9IEdldEV4cGVjdGVkRGF0YTxHTHNob3J0Pihz
cmNEYXRhLCBHTF9TSE9SVCwgR0xfVFJVRSk7Ci0gICAgbU5vcm1FeHBlY3RlZERhdGFbR0xfVU5T
SUdORURfU0hPUlRdID0KLSAgICAgICAgR2V0RXhwZWN0ZWREYXRhPEdMdXNob3J0PihzcmNEYXRh
LCBHTF9VTlNJR05FRF9TSE9SVCwgR0xfVFJVRSk7Ci0gICAgbU5vcm1FeHBlY3RlZERhdGFbR0xf
SU5UXSAgICAgICAgICA9IEdldEV4cGVjdGVkRGF0YTxHTGludD4oc3JjRGF0YSwgR0xfSU5ULCBH
TF9UUlVFKTsKLSAgICBtTm9ybUV4cGVjdGVkRGF0YVtHTF9VTlNJR05FRF9JTlRdID0gR2V0RXhw
ZWN0ZWREYXRhPEdMdWludD4oc3JjRGF0YSwgR0xfVU5TSUdORURfSU5ULCBHTF9UUlVFKTsKLX0K
LQotLy8gSW4gRDNEMTEsIHdlIG11c3Qgc29tZXRpbWVzIHRyYW5zbGF0ZSBidWZmZXIgZGF0YSBp
bnRvIHN0YXRpYyBhdHRyaWJ1dGUgY2FjaGVzLiBXZSBhbHNvIHVzZSBhCi0vLyBjYWNoZSBtYW5h
Z2VtZW50IHNjaGVtZSB3aGljaCBnYXJiYWdlIGNvbGxlY3RzIG9sZCBhdHRyaWJ1dGVzIGFmdGVy
IHdlIHN0YXJ0IHVzaW5nIHRvbyBtdWNoCi0vLyBjYWNoZSBkYXRhLiBUaGlzIHRlc3QgdHJpZXMg
dG8gbWFrZSBhcyBtYW55IGF0dHJpYnV0ZSBjYWNoZXMgZnJvbSBhIHNpbmdsZSBidWZmZXIgYXMg
cG9zc2libGUKLS8vIHRvIHN0cmVzcy10ZXN0IHRoZSBjYWNoaW5nIGNvZGUuCi1URVNUX1AoVmVy
dGV4QXR0cmlidXRlQ2FjaGluZ1Rlc3QsIEJ1ZmZlck11bHRpY2FjaGluZykKLXsKLSAgICBpZiAo
SXNBTUQoKSAmJiBJc0Rlc2t0b3BPcGVuR0woKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIG9uIEFNRCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpbml0QmFzaWNQcm9ncmFtKCk7Ci0KLSAgICBnbEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KG1UZXN0QXR0cmliKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KG1FeHBlY3RlZEF0dHJpYik7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAg
IGZvciAoY29uc3QgYXV0byAmZGF0YSA6IG1UZXN0RGF0YSkKLSAgICB7Ci0gICAgICAgIGNvbnN0
IGF1dG8gJmV4cGVjdGVkID0KLSAgICAgICAgICAgIChkYXRhLm5vcm1hbGl6ZWQpID8gbU5vcm1F
eHBlY3RlZERhdGFbZGF0YS50eXBlXSA6IG1FeHBlY3RlZERhdGFbZGF0YS50eXBlXTsKLQotICAg
ICAgICBHTHNpemVpIGJhc2VTdHJpZGUgPSBzdGF0aWNfY2FzdDxHTHNpemVpPihkYXRhLnNpemUp
ICogZGF0YS5zdHJpZGU7Ci0gICAgICAgIEdMc2l6ZWkgc3RyaWRlICAgICA9IFR5cGVTdHJpZGUo
ZGF0YS50eXBlKSAqIGJhc2VTdHJpZGU7Ci0KLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZ
X0JVRkZFUiwgbUJ1ZmZlcik7Ci0gICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtVGVzdEF0
dHJpYiwgZGF0YS5zaXplLCBkYXRhLnR5cGUsIGRhdGEubm9ybWFsaXplZCwgc3RyaWRlLCBudWxs
cHRyKTsKLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7Ci0gICAgICAg
IGdsVmVydGV4QXR0cmliUG9pbnRlcihtRXhwZWN0ZWRBdHRyaWIsIGRhdGEuc2l6ZSwgR0xfRkxP
QVQsIEdMX0ZBTFNFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEdMZmxv
YXQpICogYmFzZVN0cmlkZSwgZXhwZWN0ZWQuZGF0YSgpKTsKLSAgICAgICAgZHJhd1F1YWQobVBy
b2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dI
ZWlnaHQoKSAvIDIsIDI1NSwgMjU1LCAyNTUsIDI1NSk7Ci0gICAgfQotfQotCi0vLyBXaXRoIEQz
RDExIGRpcnR5IGJpdHMgZm9yIFZlcnR4QXJyYXkxMSwgd2UgY2FuIGxlYXZlIHZlcnRleCBzdGF0
ZSB1bmNoYW5nZWQgaWYgdGhlcmUgYXJlbid0IGFueQotLy8gR0wgY2FsbHMgdGhhdCBhZmZlY3Qg
aXQuIFRoaXMgdGVzdCB0YXJnZXRzIGxlYXZpbmcgb25lIHZlcnRleCBhdHRyaWJ1dGUgdW5jaGFu
Z2VkIGJldHdlZW4gZHJhdwotLy8gY2FsbHMgd2hpbGUgY2hhbmdpbmcgYW5vdGhlciB2ZXJ0ZXgg
YXR0cmlidXRlIGVub3VnaCB0aGF0IGl0IGNsZWFycyB0aGUgc3RhdGljIGJ1ZmZlciBjYWNoZQot
Ly8gYWZ0ZXIgZW5vdWdoIGl0ZXJhdGlvbnMuIEl0IHZhbGlkYXRlcyB0aGUgdW5jaGFuZ2VkIGF0
dHJpYnV0ZXMgZG9uJ3QgZ2V0IGRlbGV0ZWQgaW5jaWRlbnRhbGx5LgotVEVTVF9QKFZlcnRleEF0
dHJpYnV0ZUNhY2hpbmdUZXN0LCBCdWZmZXJNdWx0aWNhY2hpbmdXaXRoT25lVW5jaGFuZ2VkQXR0
cmliKQotewotICAgIGlmIChJc0FNRCgpICYmIElzRGVza3RvcE9wZW5HTCgpKQotICAgIHsKLSAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gQU1EIE9wZW5HTC4iIDw8IHN0ZDo6
ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGluaXREb3VibGVBdHRyaWJQcm9n
cmFtKCk7Ci0KLSAgICBHTGludCB0ZXN0QXR0cmliMkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2Nh
dGlvbihtUHJvZ3JhbSwgInRlc3QyIik7Ci0gICAgQVNTRVJUX05FKC0xLCB0ZXN0QXR0cmliMkxv
Y2F0aW9uKTsKLSAgICBHTGludCBleHBlY3RlZEF0dHJpYjJMb2NhdGlvbiA9IGdsR2V0QXR0cmli
TG9jYXRpb24obVByb2dyYW0sICJleHBlY3RlZDIiKTsKLSAgICBBU1NFUlRfTkUoLTEsIGV4cGVj
dGVkQXR0cmliMkxvY2F0aW9uKTsKLQotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobVRl
c3RBdHRyaWIpOwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobUV4cGVjdGVkQXR0cmli
KTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHRlc3RBdHRyaWIyTG9jYXRpb24pOwot
ICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoZXhwZWN0ZWRBdHRyaWIyTG9jYXRpb24pOwot
Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBVc2UgYW4gYXR0cmlidXRlIHRo
YXQgd2Uga25vdyBtdXN0IGJlIGNvbnZlcnRlZC4gVGhpcyBpcyBhIGJpdCBzZW5zaXRpdmUuCi0g
ICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7Ci0gICAgZ2xWZXJ0ZXhB
dHRyaWJQb2ludGVyKHRlc3RBdHRyaWIyTG9jYXRpb24sIDMsIEdMX1VOU0lHTkVEX1NIT1JULCBH
TF9GQUxTRSwgNiwgbnVsbHB0cik7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwg
MCk7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGV4cGVjdGVkQXR0cmliMkxvY2F0aW9uLCAz
LCBHTF9GTE9BVCwgR0xfRkFMU0UsIHNpemVvZihHTGZsb2F0KSAqIDMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIG1FeHBlY3RlZERhdGFbR0xfVU5TSUdORURfU0hPUlRdLmRhdGEoKSk7Ci0K
LSAgICBmb3IgKGNvbnN0IGF1dG8gJmRhdGEgOiBtVGVzdERhdGEpCi0gICAgewotICAgICAgICBj
b25zdCBhdXRvICZleHBlY3RlZCA9Ci0gICAgICAgICAgICAoZGF0YS5ub3JtYWxpemVkKSA/IG1O
b3JtRXhwZWN0ZWREYXRhW2RhdGEudHlwZV0gOiBtRXhwZWN0ZWREYXRhW2RhdGEudHlwZV07Ci0K
LSAgICAgICAgR0xzaXplaSBiYXNlU3RyaWRlID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4oZGF0YS5z
aXplKSAqIGRhdGEuc3RyaWRlOwotICAgICAgICBHTHNpemVpIHN0cmlkZSAgICAgPSBUeXBlU3Ry
aWRlKGRhdGEudHlwZSkgKiBiYXNlU3RyaWRlOwotCi0gICAgICAgIGdsQmluZEJ1ZmZlcihHTF9B
UlJBWV9CVUZGRVIsIG1CdWZmZXIpOwotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobVRl
c3RBdHRyaWIsIGRhdGEuc2l6ZSwgZGF0YS50eXBlLCBkYXRhLm5vcm1hbGl6ZWQsIHN0cmlkZSwg
bnVsbHB0cik7Ci0gICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDApOwotICAg
ICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobUV4cGVjdGVkQXR0cmliLCBkYXRhLnNpemUsIEdM
X0ZMT0FULCBHTF9GQUxTRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihH
TGZsb2F0KSAqIGJhc2VTdHJpZGUsIGV4cGVjdGVkLmRhdGEoKSk7Ci0gICAgICAgIGRyYXdRdWFk
KG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRX
aW5kb3dIZWlnaHQoKSAvIDIsIDI1NSwgMjU1LCAyNTUsIDI1NSk7Ci0gICAgfQotfQotCi0vLyBV
c2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVy
ZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBh
Z2FpbnN0LgotLy8gRDNEMTEgRmVhdHVyZSBMZXZlbCA5XzMgdXNlcyBkaWZmZXJlbnQgRDNEIGZv
cm1hdHMgZm9yIHZlcnRleCBhdHRyaWJzIGNvbXBhcmVkIHRvIEZlYXR1cmUgTGV2ZWxzIDEwXzAr
LCBzbyB3ZSBzaG91bGQgdGVzdCB0aGVtIHNlcGFyYXRlbHkuCi1BTkdMRV9JTlNUQU5USUFURV9U
RVNUKFZlcnRleEF0dHJpYnV0ZVRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5
KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09Q
RU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNf
T1BFTkdMRVMoKSk7Ci0KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVmVydGV4QXR0cmlidXRlVGVz
dEVTMywgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOwotCi1BTkdM
RV9JTlNUQU5USUFURV9URVNUKFZlcnRleEF0dHJpYnV0ZUNhY2hpbmdUZXN0LAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNE
MTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTM19PUEVOR0woKSk7Ci0KLX0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9WaWV3
cG9ydFRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L1ZpZXdwb3J0VGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjZDljZDNk
ZjJiZDhmYmJhOTc1OGMxNmViMjA0NGUxYTI2MGI4OGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL1ZpZXdwb3J0VGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzIgKzAsMCBA
QAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5T
RSBmaWxlLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLXVzaW5n
IG5hbWVzcGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17Ci0KLWNsYXNzIFZpZXdwb3J0VGVzdCA6
IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFZpZXdwb3J0VGVzdCgpCi0g
ICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCg1MTIpOwotICAgICAgICBzZXRXaW5kb3dIZWln
aHQoNTEyKTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmln
R3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0
Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOwotCi0g
ICAgICAgIG1Qcm9ncmFtID0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHJ1bk5vblNjaXNzb3JlZFRl
c3QoKQotICAgIHsKLSAgICAgICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDEpOwotICAgICAgICBn
bENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgICAgIHJ1blRlc3QoKTsKLSAgICB9
Ci0KLSAgICB2b2lkIHJ1blNjaXNzb3JlZFRlc3QoKQotICAgIHsKLSAgICAgICAgZ2xDbGVhckNv
bG9yKDAsIDAsIDAsIDEpOwotICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwot
Ci0gICAgICAgIGdsRW5hYmxlKEdMX1NDSVNTT1JfVEVTVCk7Ci0gICAgICAgIGdsU2Npc3Nvcigw
LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdo
dCgpIC8gMik7Ci0KLSAgICAgICAgcnVuVGVzdCgpOwotICAgIH0KLQotICAgIHZvaWQgcnVuVGVz
dCgpCi0gICAgewotICAgICAgICAvLyBGaXJzdGx5IGVuc3VyZSB0aGF0IG5vIGVycm9ycyBoYXZl
IGJlZW4gaGl0LgotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBHTGlu
dCB2aWV3cG9ydFNpemVbNF07Ci0gICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfVklFV1BPUlQsIHZp
ZXdwb3J0U2l6ZSk7Ci0KLSAgICAgICAgLy8gQ2xlYXIgdG8gZ3JlZW4uIE1pZ2h0IGJlIGEgc2Np
c3NvcmVkIGNsZWFyLCBpZiBzY2lzc29yU2l6ZSAhPSB3aW5kb3cgc2l6ZQotICAgICAgICBnbENs
ZWFyQ29sb3IoMCwgMSwgMCwgMSk7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJ
VCk7Ci0KLSAgICAgICAgLy8gRHJhdyBhIHJlZCBxdWFkIGNlbnRlcmVkIGluIHRoZSBtaWRkbGUg
b2YgdGhlIHZpZXdwb3J0LCB3aXRoIGRpbWVuc2lvbnMgMjUlIG9mIHRoZSBzaXplIG9mIHRoZSB2
aWV3cG9ydC4KLSAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYsIDAu
MjVmKTsKLQotICAgICAgICBHTGludCBjZW50ZXJWaWV3cG9ydFggPSB2aWV3cG9ydFNpemVbMF0g
KyAodmlld3BvcnRTaXplWzJdIC8gMik7Ci0gICAgICAgIEdMaW50IGNlbnRlclZpZXdwb3J0WSA9
IHZpZXdwb3J0U2l6ZVsxXSArICh2aWV3cG9ydFNpemVbM10gLyAyKTsKLQotICAgICAgICBHTGlu
dCByZWRRdWFkTGVmdFNpZGVYICAgPSB2aWV3cG9ydFNpemVbMF0gKyB2aWV3cG9ydFNpemVbMl0g
KiAzIC8gODsKLSAgICAgICAgR0xpbnQgcmVkUXVhZFJpZ2h0U2lkZVggID0gdmlld3BvcnRTaXpl
WzBdICsgdmlld3BvcnRTaXplWzJdICogNSAvIDg7Ci0gICAgICAgIEdMaW50IHJlZFF1YWRUb3BT
aWRlWSAgICA9IHZpZXdwb3J0U2l6ZVsxXSArIHZpZXdwb3J0U2l6ZVszXSAqIDMgLyA4OwotICAg
ICAgICBHTGludCByZWRRdWFkQm90dG9tU2lkZVkgPSB2aWV3cG9ydFNpemVbMV0gKyB2aWV3cG9y
dFNpemVbM10gKiA1IC8gODsKLQotICAgICAgICAvLyBUaGUgbWlkcG9pbnQgb2YgdGhlIHZpZXdw
b3J0IHNob3VsZCBiZSByZWQuCi0gICAgICAgIGNoZWNrUGl4ZWwoY2VudGVyVmlld3BvcnRYLCBj
ZW50ZXJWaWV3cG9ydFksIHRydWUpOwotCi0gICAgICAgIC8vIFBpeGVscyBqdXN0IGluc2lkZSB0
aGUgcmVkIHF1YWQgc2hvdWxkIGJlIHJlZC4KLSAgICAgICAgY2hlY2tQaXhlbChyZWRRdWFkTGVm
dFNpZGVYLCAgICAgIHJlZFF1YWRUb3BTaWRlWSwgICAgICAgIHRydWUpOwotICAgICAgICBjaGVj
a1BpeGVsKHJlZFF1YWRMZWZ0U2lkZVgsICAgICAgcmVkUXVhZEJvdHRvbVNpZGVZIC0gMSwgdHJ1
ZSk7Ci0gICAgICAgIGNoZWNrUGl4ZWwocmVkUXVhZFJpZ2h0U2lkZVggLSAxLCByZWRRdWFkVG9w
U2lkZVksICAgICAgICB0cnVlKTsKLSAgICAgICAgY2hlY2tQaXhlbChyZWRRdWFkUmlnaHRTaWRl
WCAtIDEsIHJlZFF1YWRCb3R0b21TaWRlWSAtIDEsIHRydWUpOwotCi0gICAgICAgIC8vIFBpeGVs
cyBqdXN0IG91dHNpZGUgdGhlIHJlZCBxdWFkIHNob3VsZG4ndCBiZSByZWQuCi0gICAgICAgIGNo
ZWNrUGl4ZWwocmVkUXVhZExlZnRTaWRlWCAtIDEsICByZWRRdWFkVG9wU2lkZVkgLSAxLCBmYWxz
ZSk7Ci0gICAgICAgIGNoZWNrUGl4ZWwocmVkUXVhZExlZnRTaWRlWCAtIDEsICByZWRRdWFkQm90
dG9tU2lkZVksICBmYWxzZSk7Ci0gICAgICAgIGNoZWNrUGl4ZWwocmVkUXVhZFJpZ2h0U2lkZVgs
ICAgICByZWRRdWFkVG9wU2lkZVkgLSAxLCBmYWxzZSk7Ci0gICAgICAgIGNoZWNrUGl4ZWwocmVk
UXVhZFJpZ2h0U2lkZVgsICAgICByZWRRdWFkQm90dG9tU2lkZVksICBmYWxzZSk7Ci0KLSAgICAg
ICAgLy8gUGl4ZWxzIGp1c3Qgd2l0aGluIHRoZSB2aWV3cG9ydCBzaG91bGRuJ3QgYmUgcmVkLgot
ICAgICAgICBjaGVja1BpeGVsKHZpZXdwb3J0U2l6ZVswXSwgICAgICAgICAgICAgICAgICAgICAg
ICB2aWV3cG9ydFNpemVbMV0sICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7Ci0gICAgICAg
IGNoZWNrUGl4ZWwodmlld3BvcnRTaXplWzBdLCAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdw
b3J0U2l6ZVsxXSArIHZpZXdwb3J0U2l6ZVszXSAtIDEsIGZhbHNlKTsKLSAgICAgICAgY2hlY2tQ
aXhlbCh2aWV3cG9ydFNpemVbMF0gKyB2aWV3cG9ydFNpemVbMl0gLSAxLCAgdmlld3BvcnRTaXpl
WzFdLCAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwotICAgICAgICBjaGVja1BpeGVsKHZp
ZXdwb3J0U2l6ZVswXSArIHZpZXdwb3J0U2l6ZVsyXSAtIDEsICB2aWV3cG9ydFNpemVbMV0gKyB2
aWV3cG9ydFNpemVbM10gLSAxLCBmYWxzZSk7Ci0gICAgfQotCi0gICAgdm9pZCBjaGVja1BpeGVs
KEdMaW50IHgsIEdMaW50IHksIEdMYm9vbGVhbiByZW5kZXJlZFJlZCkKLSAgICB7Ci0gICAgICAg
IC8vIEJ5IGRlZmF1bHQsIGV4cGVjdCB0aGUgcGl4ZWwgdG8gYmUgYmxhY2suCi0gICAgICAgIEdM
aW50IGV4cGVjdGVkUmVkQ2hhbm5lbCA9IDA7Ci0gICAgICAgIEdMaW50IGV4cGVjdGVkR3JlZW5D
aGFubmVsID0gMDsKLQotICAgICAgICBHTGludCBzY2lzc29yU2l6ZVs0XTsKLSAgICAgICAgZ2xH
ZXRJbnRlZ2VydihHTF9TQ0lTU09SX0JPWCwgc2Npc3NvclNpemUpOwotCi0gICAgICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIGlmIChzY2lzc29yU2l6ZVswXSA8PSB4ICYmIHgg
PCBzY2lzc29yU2l6ZVswXSArIHNjaXNzb3JTaXplWzJdCi0gICAgICAgICAgICAmJiBzY2lzc29y
U2l6ZVsxXSA8PSB5ICYmIHkgPCBzY2lzc29yU2l6ZVsxXSArIHNjaXNzb3JTaXplWzNdKQotICAg
ICAgICB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgcGl4ZWwgbGllcyB3aXRoaW4gdGhlIHNjaXNz
b3IgcmVjdCwgdGhlbiBpdCBzaG91bGQgaGF2ZSBiZWVuIGNsZWFyZWQgdG8gZ3JlZW4uCi0gICAg
ICAgICAgICAvLyBJZiB3ZSByZW5kZXJlZCBhIHJlZCBzcXVhcmUgb24gdG9wIG9mIGl0LCB0aGVu
IHRoZSBwaXhlbCBzaG91bGQgYmUgcmVkICh0aGUgZ3JlZW4gY2hhbm5lbCB3aWxsIGhhdmUgYmVl
biByZXNldCB0byAwKS4KLSAgICAgICAgICAgIGV4cGVjdGVkUmVkQ2hhbm5lbCA9IHJlbmRlcmVk
UmVkID8gMjU1IDogMDsKLSAgICAgICAgICAgIGV4cGVjdGVkR3JlZW5DaGFubmVsID0gcmVuZGVy
ZWRSZWQgPyAwIDogMjU1OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgdGhlIHBpeGVsIGlz
IHdpdGhpbiB0aGUgYm91bmRzIG9mIHRoZSB3aW5kb3csIHRoZW4gd2UgY2hlY2sgaXQuIE90aGVy
d2lzZSB3ZSBza2lwIGl0LgotICAgICAgICBpZiAoMCA8PSB4ICYmIHggPCBnZXRXaW5kb3dXaWR0
aCgpICYmIDAgPD0geSAmJiB5IDwgZ2V0V2luZG93SGVpZ2h0KCkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEVYUEVDVF9QSVhFTF9FUSh4LCB5LCBleHBlY3RlZFJlZENoYW5uZWwsIGV4cGVjdGVk
R3JlZW5DaGFubmVsLCAwLCAyNTUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBTZXRV
cCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdFZlcnRleFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VS
Q0UKLSAgICAgICAgKAotICAgICAgICAgICAgYXR0cmlidXRlIGhpZ2hwIHZlYzQgcG9zaXRpb247
Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7
Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdEZyYWdtZW50U2hhZGVyU291cmNlID0g
U0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4w
LCAwLjAsIDEuMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgbVByb2dy
YW0gPSBDb21waWxlUHJvZ3JhbSh0ZXN0VmVydGV4U2hhZGVyU291cmNlLCB0ZXN0RnJhZ21lbnRT
aGFkZXJTb3VyY2UpOwotICAgICAgICBpZiAobVByb2dyYW0gPT0gMCkKLSAgICAgICAgewotICAg
ICAgICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7Ci0gICAgICAg
IH0KLQotICAgICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotCi0gICAgICAgIGdsQ2xlYXJD
b2xvcigwLCAwLCAwLCAxKTsKLSAgICAgICAgZ2xDbGVhckRlcHRoZigwLjApOwotICAgICAgICBn
bENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUKTsKLQotICAg
ICAgICAvLyBDYWxsIGdsVmlld3BvcnQgYW5kIGdsU2Npc3NvciB3aXRoIGRlZmF1bHQgcGFyYW1l
dGVycy4KLSAgICAgICAgZ2xTY2lzc29yKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRv
d0hlaWdodCgpKTsKLSAgICAgICAgZ2xWaWV3cG9ydCgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBn
ZXRXaW5kb3dIZWlnaHQoKSk7Ci0KLSAgICAgICAgZ2xEaXNhYmxlKEdMX0RFUFRIX1RFU1QpOwot
ICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZ2xE
ZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7
Ci0gICAgfQotCi0gICAgR0x1aW50IG1Qcm9ncmFtOwotfTsKLQotVEVTVF9QKFZpZXdwb3J0VGVz
dCwgUXVhcnRlcldpbmRvdykKLXsKLSAgICBnbFZpZXdwb3J0KDAsIDAsIGdldFdpbmRvd1dpZHRo
KCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQpOwotCi0gICAgcnVuTm9uU2Npc3NvcmVkVGVz
dCgpOwotCi0gICAgcnVuU2Npc3NvcmVkVGVzdCgpOwotfQotCi1URVNUX1AoVmlld3BvcnRUZXN0
LCBRdWFydGVyV2luZG93Q2VudGVyZWQpCi17Ci0gICAgZ2xWaWV3cG9ydChnZXRXaW5kb3dXaWR0
aCgpICogMyAvIDgsIGdldFdpbmRvd0hlaWdodCgpICogMyAvIDgsIGdldFdpbmRvd1dpZHRoKCkg
LyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQpOwotCi0gICAgcnVuTm9uU2Npc3NvcmVkVGVzdCgp
OwotCi0gICAgcnVuU2Npc3NvcmVkVGVzdCgpOwotfQotCi1URVNUX1AoVmlld3BvcnRUZXN0LCBG
dWxsV2luZG93KQotewotICAgIGdsVmlld3BvcnQoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0
V2luZG93SGVpZ2h0KCkpOwotCi0gICAgcnVuTm9uU2Npc3NvcmVkVGVzdCgpOwotCi0gICAgcnVu
U2Npc3NvcmVkVGVzdCgpOwotfQotCi1URVNUX1AoVmlld3BvcnRUZXN0LCBGdWxsV2luZG93T2Zm
Q2VudGVyKQotewotICAgIGdsVmlld3BvcnQoLWdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5k
b3dIZWlnaHQoKSAvIDIsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKLQot
ICAgIHJ1bk5vblNjaXNzb3JlZFRlc3QoKTsKLQotICAgIHJ1blNjaXNzb3JlZFRlc3QoKTsKLX0K
LQotVEVTVF9QKFZpZXdwb3J0VGVzdCwgRG91YmxlV2luZG93KQotewotICAgIGdsVmlld3BvcnQo
MCwgMCwgZ2V0V2luZG93V2lkdGgoKSAqIDIsIGdldFdpbmRvd0hlaWdodCgpICogMik7Ci0KLSAg
ICBydW5Ob25TY2lzc29yZWRUZXN0KCk7Ci0KLSAgICBydW5TY2lzc29yZWRUZXN0KCk7Ci19Ci0K
LVRFU1RfUChWaWV3cG9ydFRlc3QsIERvdWJsZVdpbmRvd0NlbnRlcmVkKQotewotICAgIGdsVmll
d3BvcnQoLWdldFdpbmRvd1dpZHRoKCkgLyAyLCAtZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBnZXRX
aW5kb3dXaWR0aCgpICogMiwgZ2V0V2luZG93SGVpZ2h0KCkgKiAyKTsKLQotICAgIHJ1bk5vblNj
aXNzb3JlZFRlc3QoKTsKLQotICAgIHJ1blNjaXNzb3JlZFRlc3QoKTsKLX0KLQotVEVTVF9QKFZp
ZXdwb3J0VGVzdCwgRG91YmxlV2luZG93T2ZmQ2VudGVyKQotewotICAgIGdsVmlld3BvcnQoLWdl
dFdpbmRvd1dpZHRoKCkgKiAzIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgKiAzIC8gNCwgZ2V0V2lu
ZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotCi0gICAgcnVuTm9uU2Npc3NvcmVkVGVz
dCgpOwotCi0gICAgcnVuU2Npc3NvcmVkVGVzdCgpOwotfQotCi1URVNUX1AoVmlld3BvcnRUZXN0
LCBUcmlwbGVXaW5kb3cpCi17Ci0gICAgZ2xWaWV3cG9ydCgwLCAwLCBnZXRXaW5kb3dXaWR0aCgp
ICogMywgZ2V0V2luZG93SGVpZ2h0KCkgKiAzKTsKLQotICAgIHJ1bk5vblNjaXNzb3JlZFRlc3Qo
KTsKLQotICAgIHJ1blNjaXNzb3JlZFRlc3QoKTsKLX0KLQotVEVTVF9QKFZpZXdwb3J0VGVzdCwg
VHJpcGxlV2luZG93Q2VudGVyZWQpCi17Ci0gICAgZ2xWaWV3cG9ydCgtZ2V0V2luZG93V2lkdGgo
KSwgLWdldFdpbmRvd0hlaWdodCgpLCBnZXRXaW5kb3dXaWR0aCgpICogMywgZ2V0V2luZG93SGVp
Z2h0KCkgKiAzKTsKLQotICAgIHJ1bk5vblNjaXNzb3JlZFRlc3QoKTsKLQotICAgIHJ1blNjaXNz
b3JlZFRlc3QoKTsKLX0KLQotVEVTVF9QKFZpZXdwb3J0VGVzdCwgVHJpcGxlV2luZG93T2ZmQ2Vu
dGVyKQotewotICAgIGdsVmlld3BvcnQoLWdldFdpbmRvd1dpZHRoKCkgKiAzIC8gMiwgLWdldFdp
bmRvd0hlaWdodCgpICogMyAvIDIsIGdldFdpbmRvd1dpZHRoKCkgKiAzLCBnZXRXaW5kb3dIZWln
aHQoKSAqIDMpOwotCi0gICAgcnVuTm9uU2Npc3NvcmVkVGVzdCgpOwotCi0gICAgcnVuU2Npc3Nv
cmVkVGVzdCgpOwotfQotCi0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlv
bnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2Ug
dGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgotLy8gRDNEMTEgRmVhdHVyZSBMZXZlbCA5IGFu
ZCBEM0Q5IGVtdWxhdGUgbGFyZ2UgYW5kIG5lZ2F0aXZlIHZpZXdwb3J0cyBpbiB0aGUgdmVydGV4
IHNoYWRlci4gV2Ugc2hvdWxkIHRlc3QgYm90aCBvZiB0aGVzZSBhcyB3ZWxsIGFzIEQzRDExIEZl
YXR1cmUgTGV2ZWwgMTBfMCsuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKFZpZXdwb3J0VGVzdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX0QzRDExKEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0NPUFlfQU5HTEUpLAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5U
X1BBVEhfRkFTVF9BTkdMRSksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlf
MygpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwotCi19IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1dlYkdMQ29tcGF0
aWJpbGl0eVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL1dlYkdMQ29tcGF0aWJpbGl0eVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwODcyNDdmMTVmYWYxZjlkM2JhNWVlMmFkMmQ0ZjJmYjRlMGM3NDYxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9XZWJHTENvbXBhdGliaWxpdHlUZXN0LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDEyNyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
LS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBXZWJHTENvbXBhdGliaWxp
dHlUZXN0LmNwcCA6IFRlc3RzIG9mIHRoZSBHTF9BTkdMRV93ZWJnbF9jb21wYXRpYmlsaXR5IGV4
dGVuc2lvbi4KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLSNpbmNsdWRl
ICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIKLQotbmFtZXNwYWNlIGFuZ2xlCi17Ci0KLWNsYXNzIFdl
YkdMQ29tcGF0aWJpbGl0eVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoK
LSAgICBXZWJHTENvbXBhdGliaWxpdHlUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dp
ZHRoKDEyOCk7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25m
aWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNl
dENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAg
ICAgIHNldFdlYkdMQ29tcGF0aWJpbGl0eUVuYWJsZWQodHJ1ZSk7Ci0gICAgfQotCi0gICAgdm9p
ZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0g
ICAgICAgIGdsRW5hYmxlRXh0ZW5zaW9uQU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMRU5B
QkxFRVhURU5TSU9OQU5HTEVQUk9DPigKLSAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJn
bEVuYWJsZUV4dGVuc2lvbkFOR0xFIikpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBv
dmVycmlkZSB7IEFOR0xFVGVzdDo6VGVhckRvd24oKTsgfQotCi0gICAgUEZOR0xFTkFCTEVFWFRF
TlNJT05BTkdMRVBST0MgZ2xFbmFibGVFeHRlbnNpb25BTkdMRSA9IG51bGxwdHI7Ci19OwotCi0v
LyBDb250ZXh0IGNyZWF0aW9uIHdvdWxkIGZhaWwgaWYgRUdMX0FOR0xFX2NyZWF0ZV9jb250ZXh0
X3dlYmdsX2NvbXBhdGliaWxpdHkgd2FzIG5vdCBhdmFpbGFibGUgc28KLS8vIHRoZSBHTCBleHRl
bnNpb24gc2hvdWxkIGFsd2F5cyBiZSBwcmVzZW50Ci1URVNUX1AoV2ViR0xDb21wYXRpYmlsaXR5
VGVzdCwgRXh0ZW5zaW9uU3RyaW5nRXhwb3NlZCkKLXsKLSAgICBFWFBFQ1RfVFJVRShleHRlbnNp
b25FbmFibGVkKCJHTF9BTkdMRV93ZWJnbF9jb21wYXRpYmlsaXR5IikpOwotfQotCi0vLyBWZXJp
ZnkgdGhhdCBhbGwgZXh0ZW5zaW9uIGVudHJ5IHBvaW50cyBhcmUgYXZhaWxhYmxlCi1URVNUX1Ao
V2ViR0xDb21wYXRpYmlsaXR5VGVzdCwgRW50cnlQb2ludHMpCi17Ci0gICAgaWYgKGV4dGVuc2lv
bkVuYWJsZWQoIkdMX0FOR0xFX3dlYmdsX2NvbXBhdGliaWxpdHkiKSkKLSAgICB7Ci0gICAgICAg
IEVYUEVDVF9ORShudWxscHRyLCBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xFbmFibGVFeHRlbnNpb25B
TkdMRSIpKTsKLSAgICB9Ci19Ci0KLS8vIFdlYkdMIDEgYWxsb3dzIEdMX0RFUFRIX1NURU5DSUxf
QVRUQUNITUVOVCBhcyBhIHZhbGlkIGJpbmRpbmcgcG9pbnQuICBNYWtlIHN1cmUgaXQgaXMgdXNh
YmxlLAotLy8gZXZlbiBpbiBFUzIgY29udGV4dHMuCi1URVNUX1AoV2ViR0xDb21wYXRpYmlsaXR5
VGVzdCwgRGVwdGhTdGVuY2lsQmluZGluZ1BvaW50KQotewotICAgIEdMUmVuZGVyYnVmZmVyIHJl
bmRlcmJ1ZmZlcjsKLSAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCByZW5k
ZXJidWZmZXIuZ2V0KCkpOwotICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZG
RVIsIEdMX0RFUFRIMjRfU1RFTkNJTDgsIDMyLCAzMik7Ci0KLSAgICBHTEZyYW1lYnVmZmVyIGZy
YW1lYnVmZmVyOwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmcmFtZWJ1
ZmZlci5nZXQoKSk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZF
UiwgR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJidWZmZXIuZ2V0KCkpOwotCi0gICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBhdHRlbXB0aW5nIHRvIGVuYWJsZSBh
biBleHRlbnNpb24gdGhhdCBkb2Vzbid0IGV4aXN0IGdlbmVyYXRlcyBHTF9JTlZBTElEX09QRVJB
VElPTgotVEVTVF9QKFdlYkdMQ29tcGF0aWJpbGl0eVRlc3QsIEVuYWJsZUV4dGVuc2lvblZhbGlk
YXRpb24pCi17Ci0gICAgRVhQRUNUX0VRKEdMX0ZBTFNFLCBnbEVuYWJsZUV4dGVuc2lvbkFOR0xF
KCJpbnZhbGlkX2V4dGVuc2lvbl9zdHJpbmciKSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKLX0KLQotLy8gVGVzdCBlbmFibGluZyB0aGUgR0xfT0VTX2VsZW1l
bnRfaW5kZXhfdWludCBleHRlbnNpb24KLVRFU1RfUChXZWJHTENvbXBhdGliaWxpdHlUZXN0LCBF
bmFibGVFeHRlbnNpb25VaW50SW5kaWNlcykKLXsKLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCkgIT0gMikKLSAgICB7Ci0gICAgICAgIC8vIFRoaXMgdGVzdCBvbmx5IHdvcmtzIG9uIEVT
MiB3aGVyZSB1aW50IGluZGljZXMgYXJlIG5vdCBhdmFpbGFibGUgYnkgZGVmYXVsdAotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgRVhQRUNUX0ZBTFNFKGV4dGVuc2lvbkVuYWJsZWQoIkdM
X09FU19lbGVtZW50X2luZGV4X3VpbnQiKSk7Ci0KLSAgICBHTEJ1ZmZlciBpbmRleEJ1ZmZlcjsK
LSAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGluZGV4QnVmZmVyLmdl
dCgpKTsKLQotICAgIEdMdWludCBkYXRhW10gPSB7MCwgMSwgMiwgMSwgMywgMn07Ci0gICAgZ2xC
dWZmZXJEYXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBzaXplb2YoZGF0YSksIGRhdGEsIEdM
X1NUQVRJQ19EUkFXKTsKLQotICAgIEFOR0xFX0dMX1BST0dSQU0ocHJvZ3JhbSwgInZvaWQgbWFp
bigpIHsgZ2xfUG9zaXRpb24gPSB2ZWM0KDAsIDAsIDAsIDEpOyB9IiwKLSAgICAgICAgICAgICAg
ICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwgMSwgMCwgMSk7IH0i
KQotICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtLmdldCgpKTsKLQotICAgIGdsRHJhd0VsZW1lbnRz
KEdMX1RSSUFOR0xFUywgMiwgR0xfVU5TSUdORURfSU5ULCBudWxscHRyKTsKLSAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgIGlmIChnbEVuYWJsZUV4dGVuc2lvbkFO
R0xFKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpCi0gICAgewotICAgICAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoZXh0ZW5zaW9uRW5hYmxlZCgiR0xf
T0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKTsKLQotICAgICAgICBnbERyYXdFbGVtZW50cyhHTF9U
UklBTkdMRVMsIDIsIEdMX1VOU0lHTkVEX0lOVCwgbnVsbHB0cik7Ci0gICAgICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotICAgIH0KLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNv
bmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNp
b24pIHRoZXNlCi0vLyB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5U
SUFURV9URVNUKFdlYkdMQ29tcGF0aWJpbGl0eVRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
IEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAotICAgICAg
ICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMy
X0QzRDExX0ZMOV8zKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfT1BFTkdMRVMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkp
OwotCi19ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbF90ZXN0cy9tZWRpYS9waXhlbC5pbmwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvbWVkaWEvcGl4ZWwuaW5sCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1ODZlNjk0MmVkZTFmNDgzOTg2MDg2ZDU1MzZmMWYxNmI1ZmZlMGZiLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9tZWRpYS9waXhlbC5pbmwKKysrIC9kZXYv
bnVsbApAQCAtMSwxMTAwMCArMCwwIEBACi0vLyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBoZWFk
ZXIgZnJvbSBwaXhlbC5kZHMsIGEgNTEyeDUxMiAoMTAgbWlwIGxldmVscykKLS8vIERYVDEgdGV4
dHVyZSB1c2luZyBERFNUb0hlYWRlci5leGUuCi1zdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsX3dp
ZHRoID0gNTEyOwotc3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF9oZWlnaHQgPSA1MTI7Ci1zdGF0
aWMgY29uc3Qgc2l6ZV90IHBpeGVsX2xldmVscyA9IDEwOwotCi1zdGF0aWMgY29uc3Qgc2l6ZV90
IHBpeGVsXzBfd2lkdGggPSA1MTI7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzBfaGVpZ2h0
ID0gNTEyOwotc3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF8wX3NpemUgPSAxMzEwNzI7Ci1zdGF0
aWMgY29uc3QgdW5zaWduZWQgY2hhciBwaXhlbF8wX2RhdGFbMTMxMDcyXSA9Ci17Ci0gICAgMHg0
NiwweDYyLDB4NjMsMHg0MSwweDhCLDB4OEIsMHhGRCwweDU1LDB4RTUsMHg1MSwweDIyLDB4Mzks
MHhBQSwweEE4LDB4RkUsMHhENSwKLSAgICAweEM1LDB4NTEsMHgyMywweDM5LDB4NjAsMHg2MCww
eEFFLDB4QUYsMHhBNSwweDQ5LDB4MDIsMHgzOSwweDBCLDB4MkQsMHg5NywweEZGLAotICAgIDB4
NDcsMHg2MiwweDAyLDB4MzksMHgwQSwweEFCLDB4NUYsMHg3RCwweEU1LDB4NTEsMHhDMSwweDMw
LDB4ODAsMHhBQSwweERGLDB4RDUsCi0gICAgMHhBNSwweDQ5LDB4MjMsMHgzOSwweDYwLDB4RUYs
MHhFOSwweDJELDB4QzUsMHg1MSwweEUyLDB4MzAsMHhBRCwweEZELDB4RkYsMHg4MCwKLSAgICAw
eDI3LDB4NUEsMHg0MywweDM5LDB4MEUsMHhGNSwweDU1LDB4N0YsMHhFNSwweDQ5LDB4QzEsMHgz
MCwweEE4LDB4RkYsMHhENSwweEY3LAotICAgIDB4RTUsMHg0OSwweDIzLDB4MzksMHhFQiwweEVE
LDB4QUYsMHgyQiwweEM5LDB4NkEsMHgyMywweDM5LDB4NTUsMHg1NSwweEY3LDB4ODIsCi0gICAg
MHgwNiwweDUyLDB4MDMsMHgzMSwweEZELDB4N0QsMHg2QiwweEE4LDB4ODQsMHg0MSwweEUyLDB4
MzAsMHhBRSwweEQ1LDB4REYsMHg3QywKLSAgICAweEM1LDB4NDksMHg0MywweDM5LDB4NUQsMHhC
RiwweDA5LDB4MjksMHhBOCwweDZBLDB4NDIsMHgzOSwweDU1LDB4NUYsMHhFMiwweDgyLAotICAg
IDB4RTYsMHg1MSwweDIzLDB4MzksMHg1NSwweDVFLDB4RUEsMHhBOCwweDg0LDB4NDEsMHhFMiww
eDMwLDB4RDUsMHhENSwweERFLDB4RDgsCi0gICAgMHhDNSwweDQ5LDB4NDMsMHg0MSwweEZELDB4
MzcsMHgyRiwweDNELDB4RTksMHg3MiwweDQzLDB4NDEsMHg1NSwweEVBLDB4ODIsMHhCQiwKLSAg
ICAweEM1LDB4NDksMHhFMiwweDM4LDB4N0YsMHhFQSwweEU4LDB4QUEsMHg0NCwweDQxLDB4QzIs
MHgzMCwweDJELDB4QjUsMHhERSwweEY4LAotICAgIDB4RTUsMHg1MSwweEUyLDB4MzAsMHhBQiww
eDJCLDB4QUIsMHhCNSwweDY3LDB4NjIsMHg2NCwweDQxLDB4NUIsMHhDMCwweDgzLDB4RDcsCi0g
ICAgMHhBNSwweDQ5LDB4MDIsMHgzOSwweDdCLDB4RkEsMHg4OCwweEZFLDB4QTUsMHg1MSwweDAy
LDB4MzksMHgyRCwweDNGLDB4QkUsMHhBQSwKLSAgICAweDY3LDB4NjIsMHg4NCwweDQ5LDB4MkEs
MHgyQSwweEI3LDB4N0QsMHg4OCwweDZBLDB4NjQsMHg0OSwweEE4LDB4RkEsMHhGRSwweDU1LAot
ICAgIDB4MDYsMHg1QSwweDY0LDB4NDksMHg2OCwweEU4LDB4QkIsMHhGRiwweEE1LDB4NTEsMHgw
MiwweDM5LDB4MzcsMHg5NywweERFLDB4NzgsCi0gICAgMHg0NywweDYyLDB4MDIsMHgzOSwweDBB
LDB4QUIsMHhENywweDU1LDB4QTksMHg2QSwweEMyLDB4MzAsMHhFOCwweEZBLDB4RkYsMHhENSwK
LSAgICAweEE1LDB4NDksMHgyMywweDM5LDB4RTAsMHhCNywweEI3LDB4QUYsMHhBNSwweDQ5LDB4
MDIsMHgzOSwweDJELDB4RDcsMHhEQSwweEZBLAotICAgIDB4MjcsMHg1QSwweDAzLDB4MzksMHgw
QSwweEZGLDB4NTUsMHg1NSwweEE1LDB4NDksMHgyMywweDM5LDB4MjgsMHg2RiwweDdELDB4QUQs
Ci0gICAgMHhDNiwweDUxLDB4MDMsMHgzOSwweDdFLDB4RkYsMHhCRCwweDBCLDB4QzUsMHg1MSww
eEUyLDB4MzgsMHhBRCwweEQ3LDB4RkUsMHhFOCwKLSAgICAweDg1LDB4NDksMHhFMiwweDMwLDB4
MEEsMHhERiwweEQ3LDB4N0UsMHhBNSwweDQ5LDB4MjQsMHgzOSwweEY4LDB4N0QsMHhGOSwweDBC
LAotICAgIDB4MjcsMHg1QSwweDQzLDB4MzksMHg1NSwweDdELDB4RkYsMHg4MiwweDg1LDB4NDks
MHhDMiwweDMwLDB4RUYsMHg3RiwweEE4LDB4MDIsCi0gICAgMHg4NSwweDQ5LDB4QzMsMHgzMCww
eEFCLDB4QkQsMHgzRiwweEZBLDB4QzYsMHg1MSwweDIzLDB4MzksMHhENSwweEJGLDB4MDIsMHgw
MiwKLSAgICAweEU2LDB4NTEsMHgwMywweDM5LDB4N0YsMHhFQSwweEEwLDB4ODAsMHhDNiwweDUx
LDB4MDIsMHgzOSwweDU1LDB4NUUsMHhFQSwweDA4LAotICAgIDB4QzUsMHg1MSwweDIzLDB4Mzks
MHhCRCwweDJELDB4QTUsMHhENSwweDQ3LDB4NUEsMHg2NCwweDQxLDB4N0YsMHg4QSwweDBCLDB4
OEIsCi0gICAgMHhFNiwweDUxLDB4NDMsMHg0MSwweDVELDB4RUUsMHhCOCwweEUwLDB4ODUsMHg0
OSwweDAzLDB4MzksMHg1NywweDc2LDB4RjAsMHhDMCwKLSAgICAweEM1LDB4NTEsMHhFMywweDMw
LDB4MkIsMHgwQiwweDJCLDB4QTUsMHhDOSwweDcyLDB4QTQsMHg0OSwweDVELDB4MEEsMHg4Qiww
eEQ1LAotICAgIDB4ODgsMHg2QSwweEE1LDB4NTEsMHg1RiwweDgyLDB4MDAsMHg1RiwweDA2LDB4
NUEsMHg2NCwweDQxLDB4NUIsMHhCOCwweEFFLDB4QkUsCi0gICAgMHhDNSwweDUxLDB4NjMsMHg0
MSwweEFFLDB4MjgsMHhDQSwweDVGLDB4QzYsMHg1MSwweDQzLDB4MzksMHgwMCwweDgwLDB4QUEs
MHhGNywKLSAgICAweDA2LDB4NTIsMHgyMywweDM5LDB4RkEsMHgyQSwweDNBLDB4OTUsMHg2Niww
eDYyLDB4NjMsMHg0MSwweEQ1LDB4QUUsMHgyMiwweDIyLAotICAgIDB4NDcsMHg2MiwweEE0LDB4
NDksMHhERCwweEFCLDB4QTAsMHg4MCwweDY4LDB4NjIsMHhFNSwweDUxLDB4QUQsMHgwQiwweEFB
LDB4MkEsCi0gICAgMHg2NywweDZBLDB4RTUsMHg1MSwweDU2LDB4MjgsMHgyRSwweDNCLDB4Qzcs
MHg3MiwweDI0LDB4NUEsMHhENSwweEJGLDB4MkYsMHg2RSwKLSAgICAweEE3LDB4NkEsMHgwNSww
eDVBLDB4QUUsMHg4MiwweEE4LDB4NzUsMHg2NiwweDYyLDB4QzQsMHg1MSwweDA4LDB4MkEsMHhF
QSwweEZELAotICAgIDB4NjcsMHg2QSwweEU1LDB4NTEsMHgyQywweDhBLDB4OEEsMHhBNiwweDg4
LDB4NkEsMHg0NywweDYyLDB4NzcsMHg1RiwweEQ3LDB4OTksCi0gICAgMHg4NywweDZBLDB4MjUs
MHg1QSwweDY4LDB4QUEsMHhFQiwweEZCLDB4QTcsMHg2QSwweEM1LDB4NTEsMHg3QSwweEU4LDB4
OEEsMHgyQSwKLSAgICAweDQ2LDB4NUEsMHgyMywweDM5LDB4NTUsMHg1RSwweERBLDB4QTAsMHg4
NSwweDQ5LDB4MjMsMHgzOSwweDBGLDB4RjUsMHgzNSwweEQ3LAotICAgIDB4NjgsMHg2MiwweDQ0
LDB4NDEsMHg1NywweDc1LDB4MjcsMHgzRCwweDg4LDB4NjIsMHg2NCwweDQxLDB4NTUsMHg1NSww
eERFLDB4RjAsCi0gICAgMHhBNSwweDQ5LDB4MDMsMHgzMSwweEU3LDB4RkYsMHg2MCwweDU4LDB4
RTYsMHg1MSwweDQzLDB4MzksMHg1NSwweDM1LDB4QjksMHhCNSwKLSAgICAweDBBLDB4NzMsMHg0
MywweDM5LDB4NTUsMHhGQiwweEUyLDB4OEIsMHhDNSwweDQ5LDB4MDMsMHgzOSwweDVGLDB4N0Es
MHhDOCwweDgwLAotICAgIDB4NjQsMHg0MSwweEUyLDB4MzAsMHgyQSwweDA5LDB4MkYsMHhGRSww
eEE4LDB4NkEsMHg4NCwweDQxLDB4N0QsMHg4QiwweDI5LDB4RDUsCi0gICAgMHg4OCwweDYyLDB4
NjMsMHgzOSwweDU1LDB4RkUsMHhGMCwweEZBLDB4QTUsMHg0OSwweDAyLDB4MzksMHhCRCwweEI2
LDB4RkMsMHg3OCwKLSAgICAweDY4LDB4NjIsMHgwMiwweDM5LDB4RkIsMHgwQSwweDhCLDB4RjUs
MHg4OCwweDYyLDB4QzUsMHg1MSwweDc1LDB4QzAsMHhGRSwweDU1LAotICAgIDB4NTIsMHhDNSww
eEM1LDB4NTEsMHgzNSwweEQ1LDB4NTUsMHg1NSwweDU1LDB4RTYsMHg0NiwweDYyLDB4MDAsMHgw
MiwweDBELDB4QjUsCi0gICAgMHhCNiwweEVFLDB4MzUsMHhFNiwweDg4LDB4MjAsMHgyMiwweDhE
LDB4QjYsMHhFRSwweDk2LDB4RUUsMHhERiwweDdGLDB4NkYsMHg3RiwKLSAgICAweEI2LDB4RjYs
MHg5NiwweEVFLDB4RUQsMHhFRCwweEY5LDB4OTcsMHg5NiwweEY2LDB4QjYsMHhFRSwweEVFLDB4
RkEsMHg3RiwweEJGLAotICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHhBRSwweEI5LDB4M0QsMHg1
NywweDk2LDB4RjYsMHhCNiwweEVFLDB4RkUsMHg3RSwweEY2LDB4RjcsCi0gICAgMHhGNywweEY2
LDB4QjYsMHhFRSwweDc1LDB4QjUsMHhBNSwweEFELDB4RjcsMHhGNiwweDk2LDB4RUUsMHhBQSww
eEFBLDB4QTgsMHg3RiwKLSAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4RkEsMHhGQSwweEJBLDB4
REUsMHhENiwweEY2LDB4QjYsMHhFRSwweEFGLDB4QUIsMHg4RiwweDJELAotICAgIDB4RDYsMHhG
NiwweDk2LDB4RUUsMHhFOCwweEYwLDB4RTgsMHg3OCwweEI2LDB4RUUsMHg3NSwweEU2LDB4NTcs
MHhCRSwweDJFLDB4QkEsCi0gICAgMHhENiwweEY2LDB4OTYsMHhFRSwweEY3LDB4QkYsMHgyQSww
eDAzLDB4RjcsMHhGNiwweDk2LDB4RUUsMHhGNywweEFBLDB4QkEsMHhBQywKLSAgICAweEQ3LDB4
RjYsMHhCNiwweEVFLDB4QzAsMHg2MCwweDc4LDB4MDgsMHhGNywweEY2LDB4QjcsMHhFRSwweEY1
LDB4QkQsMHhBRiwweDhBLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhENSwweDM1LDB4MEYs
MHgwQSwweDE4LDB4RkYsMHhENywweEY2LDB4QkYsMHhBRiwweEJCLDB4QUYsCi0gICAgMHgxOCww
eEZGLDB4RjgsMHhGNiwweEFCLDB4N0EsMHg2QiwweEVFLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhB
RiwweDhCLDB4MEIsMHhBQSwKLSAgICAweDE4LDB4RkYsMHhGNywweEVFLDB4QTgsMHhBOCwweDgw
LDB4MDgsMHhGOCwweEZFLDB4MTgsMHhGNywweDNGLDB4QUQsMHhGRCwweEY3LAotICAgIDB4MTgs
MHhGRiwweEQ3LDB4RjYsMHhGRiwweEZCLDB4QkUsMHhGMCwweDE4LDB4RjcsMHhENywweEY2LDB4
QkYsMHhFQiwweDhFLDB4QkEsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweEJELDB4RkYsMHhE
NSwweEQ1LDB4MzcsMHhGNywweEQ4LDB4RjYsMHhERiwweEJGLDB4REYsMHhGNSwKLSAgICAweEY4
LDB4RjYsMHhENywweEY2LDB4NUYsMHgyMCwweDAwLDB4QjgsMHhGNywweEY2LDB4QjYsMHhFRSww
eEFCLDB4N0IsMHg2QywweDhBLAotICAgIDB4RDcsMHhGNiwweDk3LDB4RUUsMHgwMCwweDA4LDB4
OUUsMHg3OCwweEY4LDB4RjYsMHhCNywweEVFLDB4QkYsMHhGNiwweEVBLDB4M0QsCi0gICAgMHhG
NywweEY2LDB4QjcsMHhFRSwweDgzLDB4QUYsMHhFNSwweDdCLDB4RjcsMHhGNiwweEI3LDB4RUUs
MHhBQSwweDBBLDB4QUEsMHhCNSwKLSAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4N0YsMHhFQSww
eDIyLDB4MkEsMHhENywweEY2LDB4NzUsMHhFNiwweDdFLDB4RkYsMHhERSwweEI4LAotICAgIDB4
OTYsMHhFRSwweDU1LDB4RTYsMHg2QSwweDZBLDB4RjgsMHhFQywweDM1LDB4RTYsMHgxMCwweEJE
LDB4RkMsMHg3OCwweDc4LDB4NzAsCi0gICAgMHgzNCwweEU2LDB4MTAsMHhDNSwweDAwLDB4MDMs
MHgwQiwweDI5LDB4NTUsMHhFNiwweEYzLDB4REQsMHg3RSwweEZFLDB4RkUsMHhGQywKLSAgICAw
eDE0LDB4REUsMHhEMywweERELDB4RTIsMHg2MiwweDgwLDB4QTAsMHgxNCwweERFLDB4RDMsMHhE
RCwweEIzLDB4QkEsMHhCRSwweERFLAotICAgIDB4MTQsMHhERSwweEQyLDB4REQsMHhBMywweEEw
LDB4ODgsMHhCQiwweDE0LDB4REUsMHhCMiwweEQ1LDB4RTgsMHhBMiwweEEyLDB4ODgsCi0gICAg
MHhGMywweERELDB4RDMsMHhENSwweDI3LDB4MEUsMHhCNiwweDhBLDB4MTQsMHhERSwweEQzLDB4
REQsMHhFQSwweEMyLDB4QzgsMHhEMiwKLSAgICAweDg3LDB4NkEsMHg2MywweDQ5LDB4RjUsMHgz
RCwweEI3LDB4REQsMHgyOSwweDdCLDB4MDUsMHg1QSwweDU1LDB4QTAsMHg4OCwweEJELAotICAg
IDB4ODgsMHg2MiwweDY0LDB4NDksMHg3NywweDdFLDB4RjgsMHhGOCwweEM2LDB4NTEsMHg2Myww
eDQxLDB4RjUsMHg3QiwweEE4LDB4NkIsCi0gICAgMHhBNSwweDQ5LDB4NDMsMHg0MSwweEU4LDB4
QTgsMHgyMCwweERFLDB4RTYsMHg1MSwweDIzLDB4MzksMHg1NSwweDVGLDB4RUEsMHhDQiwKLSAg
ICAweEU2LDB4NTEsMHhFMiwweDMwLDB4MkEsMHgwQiwweEFCLDB4NTcsMHg4OCwweDZBLDB4MDIs
MHgzMSwweDgwLDB4MEEsMHhGQiwweDU1LAotICAgIDB4RTYsMHg1MSwweDAyLDB4MzEsMHhBOCww
eEEwLDB4RkUsMHg1NywweEE1LDB4NDksMHgwMiwweDMxLDB4NUUsMHg2OCwweENCLDB4Q0IsCi0g
ICAgMHhBNSwweDQ5LDB4MDIsMHgzMSwweDAyLDB4MjksMHg1NSwweDU3LDB4QTksMHg2QSwweEMx
LDB4MjgsMHgwMiwweEFCLDB4RkYsMHhENSwKLSAgICAweDI3LDB4NUEsMHgwMiwweDMxLDB4QTgs
MHhGQSwweEY3LDB4NUYsMHhDNSwweDQ5LDB4RTIsMHgzMCwweDc4LDB4NkUsMHhFQiwweEUyLAot
ICAgIDB4ODUsMHg0OSwweEUyLDB4MzAsMHgwQiwweEJGLDB4NzcsMHg2QSwweDA2LDB4NUEsMHhF
MiwweDMwLDB4MDIsMHhCNywweEQ1LDB4NzUsCi0gICAgMHhDNSwweDQ5LDB4MjMsMHgzOSwweEFD
LDB4NUYsMHg1RCwweEJCLDB4MDUsMHg1MiwweDAyLDB4MzEsMHg1RiwweEI3LDB4QkQsMHgwMCwK
LSAgICAweEE1LDB4NDEsMHgwMiwweDM5LDB4RkYsMHg1NSwweDZFLDB4ODgsMHg4NCwweDQ5LDB4
RTIsMHgzMCwweDMwLDB4RDUsMHg5NywweERGLAotICAgIDB4QzUsMHg0OSwweDIzLDB4MzksMHg3
NSwweDU1LDB4QkYsMHgyMywweDg3LDB4NjIsMHgyMiwweDM5LDB4NTUsMHg1NSwweERGLDB4QzIs
Ci0gICAgMHg4NSwweDQ5LDB4RTIsMHgzMCwweDU1LDB4NzcsMHhFQSwweDgwLDB4MjMsMHgzOSww
eEUyLDB4MzAsMHgyRCwweDM1LDB4OTcsMHg1OCwKLSAgICAweEE1LDB4NTEsMHhDMiwweDMwLDB4
RkQsMHhCRSwweDJBLDB4MkIsMHgyNywweDYyLDB4NjMsMHg0MSwweDc1LDB4N0QsMHhFQSwweEEw
LAotICAgIDB4QTUsMHg1MSwweDY0LDB4NDksMHhDRCwweDk1LDB4RkYsMHhBMCwweEE1LDB4NTEs
MHg0NCwweDQ5LDB4RUYsMHg5QSwweEJBLDB4M0EsCi0gICAgMHgwNywweDYyLDB4NjQsMHg0OSww
eEZELDB4MkQsMHgzRiwweEZGLDB4NDgsMHg2QSwweDY0LDB4NDEsMHg1RiwweEUwLDB4ODAsMHhF
QSwKLSAgICAweEM1LDB4NTEsMHgyMywweDM5LDB4NTcsMHg3RiwweEZBLDB4QUMsMHg4NSwweDQ5
LDB4RTMsMHgzMCwweEE1LDB4MkYsMHhCRSwweDVGLAotICAgIDB4RTYsMHg1OSwweDIzLDB4Mzks
MHhBQSwweDIyLDB4QUEsMHhGNSwweDY4LDB4NjIsMHg0NCwweDQxLDB4NUYsMHhGMCwweEVBLDB4
NUQsCi0gICAgMHg4NSwweDQ5LDB4MjMsMHgzOSwweEZGLDB4QTgsMHhBOCwweEY1LDB4ODUsMHg0
OSwweEUzLDB4MzAsMHgwRCwweDJELDB4RDcsMHg3RiwKLSAgICAweEE5LDB4NkEsMHg0NCwweDQx
LDB4MEYsMHgyRiwweEY1LDB4NTUsMHg4OSwweDZBLDB4MDMsMHgzMSwweEZBLDB4QjAsMHhGRSww
eDU1LAotICAgIDB4QzYsMHg1MSwweDIzLDB4MzksMHg3QSwweDYyLDB4RUEsMHhGNSwweEU2LDB4
NTEsMHhDMiwweDMwLDB4MEYsMHhBNywweEY3LDB4RkUsCi0gICAgMHg2OCwweDYyLDB4NDQsMHgz
OSwweDgyLDB4QUYsMHg1NSwweDU1LDB4RTYsMHg1MSwweEMyLDB4MzAsMHg4OCwweEE4LDB4RkYs
MHhENywKLSAgICAweDg1LDB4NDksMHhDMiwweDMwLDB4N0MsMHhFOCwweEFFLDB4MjMsMHhDNSww
eDQ5LDB4RTIsMHgzOCwweDJCLDB4QjUsMHhGNywweDIwLAotICAgIDB4RTYsMHg1OSwweDAyLDB4
MzEsMHgwMCwweEZFLDB4N0YsMHhFRSwweEU2LDB4NTEsMHhFMiwweDMwLDB4QTgsMHhGRiwweEY1
LDB4RkYsCi0gICAgMHgyNiwweDVBLDB4NDMsMHg0MSwweDU1LDB4NUYsMHhBRiwweDBCLDB4ODgs
MHg2MiwweDIyLDB4MzksMHhGRCwweDU1LDB4RkYsMHhBMCwKLSAgICAweEU1LDB4NTEsMHgwMyww
eDM5LDB4QjgsMHg3RiwweDdGLDB4QUEsMHhBNSwweDQ5LDB4MDIsMHgzOSwweENFLDB4QkQsMHgy
NSwweEI3LAotICAgIDB4QTgsMHg2QSwweDIzLDB4MzksMHg1NSwweDVELDB4QUYsMHgyRiwweEE4
LDB4NkEsMHg0MywweDQxLDB4NTUsMHhGRiwweEFFLDB4MDAsCi0gICAgMHg4OCwweDZBLDB4NjQs
MHg0MSwweDU1LDB4NTUsMHhGRSwweEY4LDB4MDYsMHg1QSwweDQzLDB4NDEsMHg1NSwweEZGLDB4
QUEsMHhBMCwKLSAgICAweDA2LDB4NUEsMHg0MywweDQxLDB4NTUsMHhGNywweDJFLDB4MEEsMHgy
NywweDVBLDB4NDQsMHg0MSwweEY1LDB4QUYsMHhBQywweEE4LAotICAgIDB4RTYsMHg1MSwweDY0
LDB4NDksMHhGNSwweDJFLDB4QUEsMHg4MiwweDQ3LDB4NjIsMHhDNiwweDUxLDB4MDMsMHhBQiww
eDc1LDB4RDUsCi0gICAgMHg4OSwweDZBLDB4RTYsMHg1MSwweEZBLDB4OEEsMHhFMSwweEVELDB4
ODgsMHg2QSwweDI3LDB4NUEsMHhGNywweERELDB4RUQsMHhBRCwKLSAgICAweDg4LDB4NkEsMHhF
NiwweDU5LDB4QkEsMHgyNywweDJDLDB4QkEsMHg4NywweDZBLDB4MDUsMHg1QSwweDYwLDB4RTAs
MHg0MiwweEEwLAotICAgIDB4RTUsMHg1MSwweDIzLDB4NDEsMHgyRSwweERGLDB4NTYsMHg1Qyww
eDg3LDB4NkEsMHg2MywweDQxLDB4QUYsMHgyQSwweEJELDB4RDUsCi0gICAgMHg0NywweDYyLDB4
ODQsMHg0OSwweEJBLDB4RTAsMHhCOCwweDU1LDB4NDcsMHg2MiwweDY0LDB4NDksMHgyMiwweDJB
LDB4MkUsMHg5NSwKLSAgICAweDg3LDB4NkEsMHgyNiwweDYyLDB4QTgsMHhFMiwweDJFLDB4NTks
MHg4NywweDZBLDB4MjYsMHg1QSwweDg4LDB4ODIsMHhBQiwweEQ1LAotICAgIDB4ODcsMHg2Miww
eDI2LDB4NUEsMHhFMywweEMwLDB4RUEsMHg3NSwweDA2LDB4NUEsMHgwMywweDM5LDB4N0UsMHg3
OCwweEUwLDB4RTAsCi0gICAgMHhFNiwweDUxLDB4MjMsMHgzOSwweDJELDB4QkQsMHg1NSwweDU1
LDB4NjgsMHg2MiwweDIzLDB4MzksMHhBMCwweEVBLDB4NTUsMHhERCwKLSAgICAweDQ3LDB4NjIs
MHg0NCwweDM5LDB4N0YsMHg1NywweDVELDB4OEIsMHg4NSwweDQ5LDB4MDIsMHgzMSwweEI3LDB4
RDcsMHhERiwweDgwLAotICAgIDB4MDYsMHg1MiwweDIzLDB4MzksMHgwQiwweEY1LDB4RkYsMHhC
RiwweEM1LDB4NDksMHgyMywweDM5LDB4QTgsMHhENywweEZGLDB4QkEsCi0gICAgMHhBNSwweDQ5
LDB4MDMsMHgzMSwweDVFLDB4NUYsMHhBQSwweEEwLDB4NjQsMHg0MSwweDIzLDB4MzksMHhCRCww
eEY1LDB4RTIsMHg0MCwKLSAgICAweDg0LDB4NDEsMHgyMywweDM5LDB4QUEsMHhGRiwweDNGLDB4
QUQsMHhFNiwweDUxLDB4NDMsMHgzOSwweDU1LDB4NzcsMHhFQiwweDBCLAotICAgIDB4RTYsMHg1
MSwweEUyLDB4MzAsMHhCRiwweDVGLDB4N0UsMHhFOCwweEE1LDB4NDksMHgwMiwweDM5LDB4MDAs
MHg4QiwweEFELDB4QjUsCi0gICAgMHhBNSwweDQ5LDB4NjQsMHg0OSwweEJFLDB4QjYsMHg4QSww
eDY4LDB4QTgsMHg3MiwweDg0LDB4NDksMHgzRCwweEY1LDB4RDUsMHg1NSwKLSAgICAweDc1LDB4
RUUsMHhDNSwweDUxLDB4MDIsMHgyRCwweEI1LDB4RDUsMHg5NiwweEVFLDB4OEYsMHhBQywweDAw
LDB4MDAsMHgwMCwweDA5LAotICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHhCNywweDNGLDB4QjUs
MHg3RCwweEI2LDB4RjYsMHg5NiwweEVFLDB4NjIsMHhDMCwweENCLDB4NEEsCi0gICAgMHhCNiww
eEVFLDB4OTYsMHhFRSwweEJELDB4QUQsMHhBQSwweDJCLDB4RDcsMHhGNiwweDk2LDB4RUUsMHhC
RiwweDJGLDB4MEEsMHgwQSwKLSAgICAweEQ3LDB4RjYsMHg3NSwweEVFLDB4MDAsMHg4OCwweEE4
LDB4NzgsMHhCNiwweEVFLDB4NzUsMHhFNiwweEE4LDB4QkUsMHhCRiwweEJGLAotICAgIDB4QjYs
MHhFRSwweDk2LDB4RUUsMHhCQiwweEQ5LDB4RUMsMHg3NSwweEQ3LDB4RjYsMHg5NiwweEVFLDB4
MDcsMHgwRiwweEFGLDB4QUQsCi0gICAgMHhENiwweEY2LDB4OTYsMHhFRSwweDdBLDB4RkEsMHhF
QSwweDZCLDB4RDcsMHhGNiwweDU0LDB4RTYsMHhBMiwweEE4LDB4QUEsMHg5NywKLSAgICAweEY3
LDB4RjYsMHg5NiwweEVFLDB4OEEsMHgyQSwweEZBLDB4RjcsMHhGNywweEY2LDB4QjYsMHhFRSww
eDhBLDB4MjgsMHhFQiwweEZGLAotICAgIDB4RjcsMHhGNiwweEI3LDB4RjYsMHgwOCwweDJFLDB4
QkYsMHg3RSwweEY3LDB4RjYsMHg5NiwweEVFLDB4MDAsMHgwMCwweDJCLDB4REYsCi0gICAgMHhG
NywweEY2LDB4OTYsMHhFRSwweDAwLDB4MDAsMHgwMCwweDNELDB4MTgsMHhGRiwweEY3LDB4RjYs
MHg1NSwweDU3LDB4N0YsMHg1NSwKLSAgICAweDE4LDB4RkYsMHhENywweEY2LDB4RUEsMHhGRSww
eEZCLDB4RkUsMHgxOCwweEY3LDB4RDcsMHhGNiwweDJBLDB4QUUsMHhGNywweEZGLAotICAgIDB4
MTgsMHhGNywweEY3LDB4RjYsMHgyQiwweEE3LDB4NTUsMHg1NSwweDE4LDB4RjcsMHhENywweEY2
LDB4MjIsMHgwQSwweDJFLDB4RkYsCi0gICAgMHgxOCwweEY3LDB4RDgsMHhGNiwweEE4LDB4ODgs
MHgyQSwweEE5LDB4MTgsMHhGRiwweEY4LDB4RjYsMHg1NywweEY2LDB4QkYsMHhBRiwKLSAgICAw
eDE4LDB4RjcsMHhGNywweEY2LDB4NTUsMHg2MiwweDg4LDB4MDAsMHgxOCwweEY3LDB4RDcsMHhF
RSwweERGLDB4RjcsMHhBRSwweEE4LAotICAgIDB4MTgsMHhGNywweEQ3LDB4RjYsMHg3NywweEZG
LDB4QUUsMHhBQSwweDE4LDB4RjcsMHhENywweEY2LDB4RkYsMHg3RiwweDZFLDB4N0EsCi0gICAg
MHhGNywweEY2LDB4QjcsMHhFRSwweDc4LDB4RUUsMHhCRiwweEVCLDB4RDcsMHhGNiwweDc1LDB4
RTYsMHhBRSwweDdDLDB4RTAsMHgwMiwKLSAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4ODgsMHgw
MSwweDBELDB4MzcsMHhENywweEY2LDB4QjYsMHhFRSwweEE1LDB4QUQsMHhBRSwweDk4LAotICAg
IDB4RDcsMHhGNiwweDk2LDB4RUUsMHgwMiwweEE2LDB4RkUsMHhGQywweEQ3LDB4RjYsMHg5Niww
eEVFLDB4RTAsMHg4OCwweDAyLDB4QUUsCi0gICAgMHhENiwweEY2LDB4MzQsMHhFNiwweDdBLDB4
N0UsMHg3RSwweEY4LDB4MzQsMHhFNiwweDcxLDB4Q0QsMHg3MCwweDcwLDB4NjAsMHg2MCwKLSAg
ICAweEYzLDB4REQsMHgxMCwweEM1LDB4MkYsMHgzRCwweEI1LDB4QTUsMHgzNCwweEU2LDB4RDMs
MHhENSwweEEwLDB4QTIsMHg4QiwweDA5LAotICAgIDB4MTQsMHhERSwweEIyLDB4RDUsMHhBOCww
eEFBLDB4ODAsMHhDOCwweDEzLDB4REUsMHhEMiwweEQ1LDB4REEsMHhFQywweEI4LDB4QkUsCi0g
ICAgMHgxMywweERFLDB4RDMsMHhERCwweEJELDB4MkYsMHhBQSwweDBBLDB4MzQsMHhFNiwweEYz
LDB4REQsMHhGNywweEVBLDB4NkEsMHhGQSwKLSAgICAweEYzLDB4REQsMHhEMywweEQ1LDB4MjAs
MHgzQSwweEEwLDB4MDAsMHgxMywweERFLDB4RDMsMHhENSwweEE4LDB4RUYsMHhGRSwweEZBLAot
ICAgIDB4ODQsMHg0OSwweDAzLDB4MzksMHhFRiwweEI1LDB4QTcsMHgyNiwweDY3LDB4NjIsMHg0
MywweDQxLDB4NTUsMHhGRCwweDBCLDB4MEYsCi0gICAgMHhFQSwweDcyLDB4NjQsMHg0MSwweDU1
LDB4RDUsMHhBMiwweDAyLDB4QzgsMHg3MiwweDQzLDB4MzksMHg3NSwweDU3LDB4RkEsMHgyMCwK
LSAgICAweEU2LDB4NzIsMHg2MiwweDQxLDB4NTUsMHg1NSwweEZBLDB4QTAsMHgwNiwweDUyLDB4
NjQsMHg0MSwweEU1LDB4QUYsMHhGRSwweEVDLAotICAgIDB4QzUsMHg0OSwweEUyLDB4MzAsMHg1
RiwweDdBLDB4QUEsMHg4MiwweDY0LDB4NDEsMHhBMSwweDI4LDB4RjUsMHhCRiwweEZBLDB4RTgs
Ci0gICAgMHhFNSwweDUxLDB4NDMsMHgzOSwweDU1LDB4RUQsMHgyOSwweEFELDB4RTksMHg2QSww
eDQzLDB4MzksMHhGNSwweEYzLDB4ODIsMHhFRiwKLSAgICAweEU1LDB4NTEsMHg0MywweDM5LDB4
N0IsMHhCQSwweEE4LDB4RjgsMHg4NSwweDQxLDB4RTIsMHgzMCwweEI1LDB4REUsMHhFOCwweEVB
LAotICAgIDB4QTUsMHg0OSwweDAyLDB4MzEsMHhBMiwweDBBLDB4MkQsMHg5NSwweEE4LDB4NkEs
MHg2NCwweDQxLDB4RUIsMHgwMywweEFGLDB4NTUsCi0gICAgMHhFNiwweDUxLDB4MDIsMHgzMSww
eEVBLDB4RTgsMHhGOCwweEQ3LDB4ODUsMHg0MSwweEUyLDB4MzAsMHg3QiwweDcwLDB4N0UsMHg2
QiwKLSAgICAweEE1LDB4NDksMHgwMiwweDMxLDB4MEIsMHgwOSwweEI1LDB4NTUsMHhFOCwweDZB
LDB4MjMsMHgzOSwweDgyLDB4QUIsMHhGNywweDU1LAotICAgIDB4MjcsMHg1QSwweDAyLDB4MzEs
MHhCQSwweEU4LDB4RkIsMHg1NywweDY0LDB4NDEsMHhDMiwweDI4LDB4NUEsMHhGOCwweEY4LDB4
QkIsCi0gICAgMHhFNiwweDUxLDB4QzEsMHgyOCwweDJCLDB4QUQsMHhENSwweEZGLDB4ODcsMHg2
MiwweDIzLDB4MzksMHg4MiwweEZGLDB4NTUsMHg1NSwKLSAgICAweDg0LDB4NDksMHhFMiwweDMw
LDB4MDAsMHgwOCwweEZGLDB4RjUsMHg2NCwweDQxLDB4MDIsMHgzOSwweDVFLDB4RjAsMHhFMCww
eDgwLAotICAgIDB4ODUsMHg0OSwweEUyLDB4MzAsMHgyRiwweDJELDB4QkYsMHg4QSwweEU1LDB4
NTksMHg0NCwweDQxLDB4QTgsMHhGRiwweDVELDB4REYsCi0gICAgMHhDNSwweDUxLDB4NjQsMHg0
OSwweDdDLDB4RDUsMHg3NSwweDNGLDB4RTUsMHg1OSwweDQ0LDB4NDksMHg3QiwweEVCLDB4QkEs
MHhBQSwKLSAgICAweDQ3LDB4NkEsMHg0NCwweDQ5LDB4NzcsMHg1RiwweEZFLDB4QTIsMHhBNSww
eDUxLDB4MDIsMHgzOSwweEFBLDB4NkIsMHhDQiwweEFBLAotICAgIDB4NjQsMHg0MSwweEMxLDB4
MzAsMHhFRSwweDk1LDB4RkYsMHhGQywweEM1LDB4NTEsMHhFMiwweDMwLDB4N0QsMHhFRiwweDJC
LDB4MEIsCi0gICAgMHhFQSwweDcyLDB4RTIsMHgzOCwweDU1LDB4RkYsMHhGRSwweDgyLDB4QzYs
MHg1MSwweDIzLDB4MzksMHg1NSwweDVFLDB4RUEsMHhBOCwKLSAgICAweDg1LDB4NDEsMHhFMiww
eDMwLDB4OTUsMHgzNSwweDFFLDB4N0EsMHhBOCwweDZBLDB4NDQsMHg0MSwweDU1LDB4QkYsMHgy
RCwweEI5LAotICAgIDB4NkEsMHg4MywweDIzLDB4MzksMHg1NSwweDdGLDB4RTIsMHg4MiwweEE1
LDB4NDksMHgwMywweDM5LDB4NUYsMHhGQSwweEEwLDB4ODAsCi0gICAgMHhBNSwweDQ5LDB4RTIs
MHgzMCwweDI1LDB4QTUsMHhCRSwweDdFLDB4MjcsMHg1QSwweDg0LDB4NDEsMHgyNywweDBGLDB4
MkIsMHg3NSwKLSAgICAweDY4LDB4NjIsMHg4NCwweDQxLDB4NzcsMHg3QywweEZBLDB4N0UsMHhB
NSwweDQ5LDB4MDMsMHgzOSwweDU2LDB4RTAsMHg4OCwweEFFLAotICAgIDB4RTYsMHg1MSwweDAz
LDB4MzksMHhCRCwweDM3LDB4QjUsMHg1NywweDg4LDB4NkEsMHgyMywweDM5LDB4OEEsMHhBQSww
eEVGLDB4NzUsCi0gICAgMHgwNiwweDVBLDB4NjMsMHg0MSwweEZFLDB4RUMsMHhGQSwweEQ1LDB4
QTQsMHg0OSwweDAzLDB4MzksMHg3QywweDdDLDB4RUEsMHhBQSwKLSAgICAweDA2LDB4NUEsMHgw
MiwweDMxLDB4MDksMHgwRCwweEQ1LDB4NTUsMHhDOSwweDZBLDB4MjIsMHgzOSwweEUyLDB4OEEs
MHhERiwweEQ1LAotICAgIDB4QzUsMHg1MSwweDYzLDB4MzksMHhCOCwweEUwLDB4N0EsMHhCRiww
eEE1LDB4NDksMHhFMiwweDMwLDB4RkMsMHg1MiwweEVBLDB4MDAsCi0gICAgMHgyNiwweDVBLDB4
MDMsMHgzMSwweDJCLDB4QkQsMHhGRCwweEEyLDB4ODgsMHg2QSwweDQzLDB4MzksMHgwMCwweEZG
LDB4NzUsMHhGRiwKLSAgICAweDg4LDB4NkEsMHg0MywweDQxLDB4QTgsMHhGRiwweDU1LDB4N0Ys
MHhFNiwweDUxLDB4RTMsMHgzOCwweDAwLDB4RkEsMHg1NSwweEY3LAotICAgIDB4MDYsMHg1QSww
eDQ0LDB4NDEsMHg4OCwweEZGLDB4RkQsMHgyRiwweDg3LDB4NjIsMHhBNCwweDQ5LDB4NUYsMHg1
NSwweEZELDB4MDAsCi0gICAgMHg0NiwweDVBLDB4NjQsMHg0MSwweDZGLDB4NTcsMHhGQSwweEUw
LDB4QzYsMHg1MSwweDY0LDB4NDEsMHhGRSwweDdELDB4QkIsMHg4MiwKLSAgICAweDI2LDB4NUEs
MHg2NCwweDQxLDB4MEIsMHgyRCwweEFGLDB4QkYsMHg2OCwweDYyLDB4QzUsMHg1MSwweDgyLDB4
OEEsMHhBOCwweEU1LAotICAgIDB4NjcsMHg2MiwweDYzLDB4NDEsMHgwOCwweEFBLDB4RkYsMHhE
NSwweDY3LDB4NkEsMHhDNSwweDUxLDB4QTAsMHhERiwweEJELDB4MzUsCi0gICAgMHg2NywweDZB
LDB4NDMsMHg0MSwweDdBLDB4N0EsMHhFQSwweEU4LDB4QzUsMHg1MSwweEUyLDB4MzgsMHhCNyww
eEI3LDB4RkEsMHhGMCwKLSAgICAweEU1LDB4NTksMHg0MywweDQxLDB4RDcsMHhGOSwweDJCLDB4
QTUsMHg4OCwweDZBLDB4NjQsMHg0OSwweEQ1LDB4REYsMHhDMiwweEFBLAotICAgIDB4MjYsMHg2
MiwweEE1LDB4NDksMHg4QSwweEVCLDB4QkEsMHg1RSwweEU1LDB4NTEsMHgwMywweDM5LDB4OEEs
MHhBRSwweERFLDB4REUsCi0gICAgMHgyNiwweDVBLDB4NDMsMHg0MSwweEFGLDB4M0YsMHgyRiww
eEY1LDB4NjgsMHg2MiwweDg0LDB4NDksMHg3RiwweEZFLDB4RjgsMHhERCwKLSAgICAweEU2LDB4
NTEsMHg0MywweDQxLDB4NUYsMHg3OCwweDQwLDB4NUIsMHg2NCwweDQxLDB4MDMsMHgzOSwweDAz
LDB4M0QsMHg1NSwweDVFLAotICAgIDB4MEEsMHg3QiwweDIzLDB4MzksMHg4QiwweEFGLDB4RkQs
MHg1NSwweDQ3LDB4NUEsMHgyMywweDM5LDB4QkUsMHhBOCwweEZFLDB4NTUsCi0gICAgMHhFNSww
eDUxLDB4MDMsMHgzOSwweDhBLDB4QUEsMHhGQSwweDU3LDB4QTUsMHg0OSwweDAzLDB4MzksMHgw
MCwweEFDLDB4RkYsMHg1NSwKLSAgICAweEE1LDB4NDksMHgwMywweDM5LDB4ODgsMHhCRSwweDc2
LDB4NTUsMHg4NSwweDQ5LDB4MDMsMHgzOSwweEU4LDB4RjgsMHg1NSwweDU1LAotICAgIDB4NDMs
MHgzOSwweEUzLDB4MzgsMHg4RSwweEFBLDB4RUEsMHhGRCwweEU2LDB4NTEsMHhFMiwweDM4LDB4
MEEsMHhCRiwweEY1LDB4NUQsCi0gICAgMHhFNiwweDUxLDB4RTIsMHgzOCwweEE4LDB4RkUsMHg1
RiwweEY1LDB4NjQsMHg0MSwweDAyLDB4MzksMHhGQywweDdBLDB4N0IsMHhGQSwKLSAgICAweDY0
LDB4NDksMHgwMiwweDM5LDB4QTgsMHhGRCwweDdELDB4RkUsMHg2NCwweDQ5LDB4MDIsMHgzOSww
eDA4LDB4RkYsMHhBRiwweEFELAotICAgIDB4QTYsMHg1MSwweDAyLDB4MzksMHgyOCwweEI5LDB4
QkQsMHgyRiwweDU0LDB4RTYsMHgwNiwweDVBLDB4MjksMHhCNSwweEQ1LDB4RDUsCi0gICAgMHg5
NiwweEVFLDB4Q0UsMHhCNCwweDAwLDB4MDAsMHgwMywweDA5LDB4QjYsMHhGNiwweDk2LDB4RUUs
MHhBQSwweEVFLDB4QUEsMHgwRSwKLSAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4RjcsMHhCRiww
eEJELDB4MkIsMHhENywweEY2LDB4OTYsMHhFRSwweDAwLDB4RTAsMHg2OCwweDcwLAotICAgIDB4
QjYsMHhGNiwweDc2LDB4RUUsMHg3QSwweDdGLDB4RDYsMHg3NSwweEI2LDB4RUUsMHg3NiwweEVF
LDB4QkQsMHhBRCwweDNELDB4QUQsCi0gICAgMHhCNiwweEVFLDB4OTYsMHhFRSwweERELDB4QjUs
MHhFNywweDc3LDB4RDcsMHhGNiwweDk2LDB4RUUsMHhFRiwweEZCLDB4NjksMHhFOSwKLSAgICAw
eDk2LDB4RUUsMHhGNCwweERELDB4ODAsMHg4MCwweEYwLDB4NzAsMHg3NiwweEU2LDB4RjQsMHhE
RCwweDNFLDB4QkQsMHgzRCwweEFELAotICAgIDB4QjYsMHhFRSwweDU1LDB4RTYsMHgwQSwweDJG
LDB4QTksMHhCNywweEQ3LDB4RjYsMHg3NSwweEU2LDB4MEUsMHgyQiwweEZCLDB4RkYsCi0gICAg
MHhENiwweEY2LDB4OTYsMHhFRSwweDIwLDB4MjIsMHhBRiwweEZELDB4RjgsMHhGRSwweDc1LDB4
RTYsMHg1RSwweEFBLDB4ODIsMHgwQSwKLSAgICAweEY4LDB4RjYsMHg1NSwweEU2LDB4RkYsMHg1
RiwweEUwLDB4QTAsMHhENywweEY2LDB4MzQsMHhERSwweDIyLDB4RUYsMHg1RiwweEY4LAotICAg
IDB4RDcsMHhGNiwweDM0LDB4REUsMHgwMCwweDAyLDB4RTcsMHg1NSwweEY3LDB4RjYsMHg1NCww
eEU2LDB4MDAsMHgwMCwweDJBLDB4QjUsCi0gICAgMHgzOCwweEY3LDB4RDcsMHhGNiwweDU3LDB4
N0YsMHhGRiwweEI1LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhCRiwweEFCLDB4QjAsMHgyMCwKLSAg
ICAweEY4LDB4RjYsMHhENywweEY2LDB4NzUsMHg0RSwweDg4LDB4ODAsMHgxOCwweEY3LDB4RDcs
MHhGNiwweDI3LDB4NUQsMHg1NywweEVCLAotICAgIDB4MTgsMHhGNywweEQ3LDB4RjYsMHg4Miww
eEZGLDB4RDUsMHhENywweDE4LDB4RjcsMHhENywweEVFLDB4MjgsMHhBOCwweEVGLDB4RTcsCi0g
ICAgMHgxOCwweEY3LDB4RDcsMHhGNiwweDhBLDB4MDIsMHhBMiwweDdCLDB4MTgsMHhGNywweEI3
LDB4RjYsMHhFMCwweEFBLDB4QUEsMHhBMiwKLSAgICAweEY4LDB4RkUsMHhENywweEVFLDB4N0Es
MHhFQSwweEVBLDB4N0EsMHhGNywweEY2LDB4QjcsMHhFRSwweEI3LDB4N0YsMHhCRiwweDgyLAot
ICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHg1RSwweDYyLDB4OEEsMHgwMCwweEQ3LDB4RjYsMHg3
NSwweEU2LDB4MjIsMHhBOSwweDJGLDB4OUYsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweDYy
LDB4MEIsMHhBNywweEVCLDB4RDcsMHhGNiwweDc2LDB4RUUsMHhBRSwweEJFLDB4RkUsMHg3OCwK
LSAgICAweEQ3LDB4RjYsMHg3NSwweEU2LDB4NzAsMHg3MywweEZGLDB4RUEsMHg5NiwweEVFLDB4
RDIsMHhENSwweDdFLDB4NUEsMHg3QSwweDZBLAotICAgIDB4OTIsMHhDRCwweDMwLDB4QzUsMHhB
NSwweEQ2LDB4QkMsMHhBQywweDM0LDB4RTYsMHg5MSwweENELDB4MDksMHgyRCwweEFELDB4MzUs
Ci0gICAgMHgxNCwweEU2LDB4RjMsMHhENSwweEY4LDB4RkMsMHg3RSwweEZBLDB4MTQsMHhERSww
eEQyLDB4REQsMHhBRiwweEFCLDB4OEEsMHgwQSwKLSAgICAweDM0LDB4RTYsMHhGMywweERELDB4
MjcsMHgyRiwweEFCLDB4OEEsMHgzMywweEU2LDB4RjMsMHhERCwweDdBLDB4N0UsMHg3RSwweDdD
LAotICAgIDB4MTUsMHhFNiwweEYzLDB4RDUsMHhGRiwweEJGLDB4OUYsMHhCNywweDE0LDB4REUs
MHhGMywweERELDB4OUYsMHg5RSwweEI4LDB4QjQsCi0gICAgMHgyNSwweDVBLDB4NDMsMHg0MSww
eDU1LDB4NUUsMHg1RSwweDY4LDB4MjcsMHg1QSwweDIzLDB4MzksMHgwQiwweEFBLDB4REQsMHhG
NSwKLSAgICAweEE5LDB4NkEsMHg2NCwweDQxLDB4MEEsMHhFRiwweDc1LDB4NTUsMHg4NywweDZB
LDB4NDMsMHg0MSwweEEwLDB4RkIsMHg1NSwweDc3LAotICAgIDB4NDUsMHg1QSwweDIyLDB4Mzks
MHgyOCwweEZGLDB4NUYsMHg1NywweEU1LDB4NTEsMHg0MywweDM5LDB4QTgsMHhERiwweEQ1LDB4
RjUsCi0gICAgMHhBNSwweDQ5LDB4MDMsMHgzOSwweDg4LDB4RkMsMHhERSwweEZBLDB4QTUsMHg0
OSwweDAyLDB4MzEsMHg2MiwweDhCLDB4MEIsMHgwMiwKLSAgICAweEM1LDB4NDksMHhFMiwweDMw
LDB4RUQsMHhGNywweEFBLDB4QTAsMHhBNSwweDQ5LDB4MDIsMHgzMSwweDhGLDB4NUYsMHg2QSww
eDJBLAotICAgIDB4NDMsMHg0MSwweEMxLDB4MjgsMHhBQSwweEY1LDB4QjcsMHhCQywweDg0LDB4
NDEsMHgyMywweDM5LDB4MDUsMHhBNSwweDdBLDB4QTIsCi0gICAgMHhBOSwweDZBLDB4RTIsMHgz
MCwweDU1LDB4RkYsMHhFQSwweDAyLDB4QzYsMHg0OSwweDIzLDB4MzksMHg1RCwweDdGLDB4QTks
MHg4MCwKLSAgICAweDY0LDB4NDEsMHhDMSwweDI4LDB4OTUsMHg5RiwweEJBLDB4RTgsMHhDNSww
eDQ5LDB4MDMsMHgzMSwweEY3LDB4QUEsMHgyQiwweDBELAotICAgIDB4RUEsMHg3MiwweDQzLDB4
MzksMHg1NSwweEZGLDB4OEIsMHhBQiwweDI3LDB4NUEsMHg0MywweDQxLDB4NTUsMHhGNSwweEJF
LDB4RTAsCi0gICAgMHhDNSwweDQ5LDB4RTIsMHgzMCwweEQ1LDB4NTYsMHg3RSwweDc4LDB4ODUs
MHg0MSwweEUyLDB4MzAsMHhBQSwweDJCLDB4MDksMHgyRiwKLSAgICAweEE5LDB4NkEsMHg2NCww
eDQxLDB4NTcsMHg4MywweDhCLDB4RjcsMHhFNiwweDUxLDB4MjMsMHgzOSwweEY1LDB4QUUsMHhB
OCwweEVFLAotICAgIDB4QTUsMHg0OSwweEUyLDB4MzAsMHhENywweDdBLDB4RTAsMHhBMiwweEE0
LDB4NDksMHhFMiwweDMwLDB4QUEsMHgyQiwweDJELDB4RDUsCi0gICAgMHhBOSwweDZBLDB4NDQs
MHg0MSwweEFCLDB4OEIsMHhFRiwweDU1LDB4QzYsMHg1MSwweDQzLDB4NDksMHhGQSwweEZDLDB4
RkMsMHhGRiwKLSAgICAweEE1LDB4NTEsMHg2NCwweDUxLDB4MkUsMHgyQSwweDJCLDB4QzksMHhF
NiwweDYxLDB4ODQsMHg1MSwweEZBLDB4RUQsMHhDRiwweDgyLAotICAgIDB4MjcsMHg2QSwweEE0
LDB4NTksMHhDMywweEZELDB4RDUsMHhGNSwweEE1LDB4NTksMHgyMywweDQxLDB4RTgsMHhGOCww
eDdDLDB4RjgsCi0gICAgMHg4NCwweDQ5LDB4RTIsMHgzOCwweDdFLDB4NzgsMHhFQSwweDIwLDB4
QTUsMHg0OSwweEUyLDB4MzAsMHgwMSwweEFELDB4RDcsMHhCQSwKLSAgICAweDY4LDB4NjIsMHg0
NCwweDQxLDB4MDIsMHhGRiwweDVELDB4REQsMHg0OCwweDYyLDB4MjMsMHgzOSwweEZDLDB4NTcs
MHg3NywweEZGLAotICAgIDB4QTUsMHg0OSwweEUyLDB4MzAsMHg3QSwweEVFLDB4QUEsMHgwMCww
eEM2LDB4NTEsMHgwMywweDMxLDB4MEYsMHg1NSwweEJGLDB4QUEsCi0gICAgMHgwNiwweDUyLDB4
NDMsMHg0MSwweDgwLDB4REQsMHhCRiwweEVFLDB4QzUsMHg0OSwweDIzLDB4MzksMHhGQSwweDdF
LDB4RUEsMHgwQSwKLSAgICAweEE1LDB4NDksMHgwMiwweDMxLDB4N0EsMHhBMiwweDAyLDB4MDAs
MHhDNSwweDQ5LDB4MjMsMHgzOSwweEY1LDB4QkQsMHgyQSwweEFBLAotICAgIDB4RTYsMHg1MSww
eDQzLDB4MzksMHhGNywweERCLDB4QTAsMHhBQSwweEM2LDB4NDksMHg0NCwweDQxLDB4OTUsMHhB
RiwweDJBLDB4QUEsCi0gICAgMHhDNiwweDUxLDB4MDIsMHgzOSwweDVFLDB4NzAsMHhFMCwweEE4
LDB4ODQsMHg0OSwweEUxLDB4MzAsMHhBRCwweDJGLDB4M0YsMHhGNiwKLSAgICAweDI2LDB4NUEs
MHg0NCwweDQxLDB4QkYsMHgyQiwweEJGLDB4QjUsMHg4NywweDYyLDB4QTQsMHg0OSwweDdELDB4
ODIsMHhBMCwweEQ1LAotICAgIDB4RTUsMHg1MSwweDIyLDB4MzEsMHg1OCwweEU4LDB4RUMsMHhC
RSwweDg1LDB4NDEsMHgyMywweDM5LDB4MkQsMHhCRCwweEQ2LDB4N0UsCi0gICAgMHhFNSwweDUx
LDB4NDMsMHgzOSwweDAwLDB4OEEsMHhBQSwweERELDB4MDYsMHg1MiwweDg0LDB4NDEsMHgwMCww
eDBBLDB4OUYsMHhGNSwKLSAgICAweDg4LDB4NjIsMHg0MywweDM5LDB4MDIsMHg4MiwweEY3LDB4
RDcsMHgwNiwweDUyLDB4NjQsMHg0MSwweEMwLDB4QjAsMHhGRiwweDU1LAotICAgIDB4RTYsMHg1
MSwweDQzLDB4MzksMHg4MCwweEE4LDB4QkIsMHhENywweEE1LDB4NDksMHgwMywweDMxLDB4NUMs
MHhGOCwweDZBLDB4RkYsCi0gICAgMHhFNSwweDUxLDB4MDMsMHgzMSwweDJGLDB4QkQsMHhGNSww
eDU3LDB4NDcsMHg2MiwweDAzLDB4MzEsMHgwMiwweEFCLDB4RkYsMHg1NSwKLSAgICAweDY2LDB4
NjIsMHgwMywweDMxLDB4RTgsMHhGRSwweEZGLDB4NTUsMHhBNSwweDQ5LDB4RTIsMHgzMCwweDAw
LDB4ODgsMHhFQSwweDdELAotICAgIDB4QzUsMHg0OSwweEUyLDB4MzAsMHgyMiwweDhBLDB4RkYs
MHg1NSwweEM1LDB4NTEsMHgyMiwweDM5LDB4MEEsMHgyQSwweEVELDB4RDUsCi0gICAgMHg0Niww
eDVBLDB4RTIsMHgzMCwweEY3LDB4NUUsMHg3QSwweEMyLDB4RTYsMHg1MSwweEUyLDB4MzAsMHgw
MiwweEJGLDB4RDUsMHg1NywKLSAgICAweDQ2LDB4NjIsMHgwMiwweDM5LDB4QTAsMHhGRiwweDU1
LDB4NTUsMHhDNSwweDUxLDB4MDIsMHgzOSwweDc4LDB4RkEsMHg5NSwweEI1LAotICAgIDB4RTYs
MHg1OSwweDAyLDB4MzksMHhGNSwweDVGLDB4NUUsMHg2MCwweEE1LDB4NTEsMHgwMiwweDM5LDB4
MDAsMHg3RCwweDU1LDB4RDcsCi0gICAgMHhBNSwweDQ5LDB4MDMsMHgzOSwweEM4LDB4REYsMHhE
RCwweDJCLDB4MDYsMHg1QSwweDQzLDB4NDEsMHg3NSwweEU1LDB4MEYsMHgwQSwKLSAgICAweDA2
LDB4NUEsMHgwMywweDM5LDB4RjUsMHhGNywweEZBLDB4QTAsMHhBNCwweDQ5LDB4MDMsMHgzOSww
eEZGLDB4RkYsMHhGRCwweEEwLAotICAgIDB4QzUsMHg1MSwweDAyLDB4MzksMHg3NSwweDc1LDB4
RkQsMHgwMiwweEM1LDB4NTEsMHhFMywweDM4LDB4NUYsMHhERiwweEZGLDB4MDAsCi0gICAgMHhF
NSwweDUxLDB4RTIsMHgzMCwweEZELDB4RkQsMHhCNywweDAyLDB4MDcsMHg1QSwweEUyLDB4MzAs
MHg1NywweDdELDB4RUIsMHgwMiwKLSAgICAweDI3LDB4NUEsMHgyMywweDM5LDB4NTUsMHg1NSww
eERGLDB4MDgsMHgwNiwweDVBLDB4MDIsMHgzOSwweDU1LDB4RDUsMHhCQSwweDAwLAotICAgIDB4
MDYsMHg2MiwweDAzLDB4MzksMHg1NSwweDdFLDB4QUEsMHgwMCwweDY3LDB4NjIsMHgwMywweDM5
LDB4NzUsMHg3RCwweEFBLDB4ODgsCi0gICAgMHgwNiwweDVBLDB4NDMsMHg0MSwweDU1LDB4RjUs
MHgyMCwweDIwLDB4NDcsMHg2MiwweDQzLDB4NDEsMHg1NSwweEY3LDB4QTIsMHg4MCwKLSAgICAw
eDQ3LDB4NjIsMHgyMywweDM5LDB4RDUsMHhCRiwweDAwLDB4MDIsMHgyNywweDYyLDB4NDQsMHg0
MSwweDU1LDB4OEEsMHgwMCwweDAwLAotICAgIDB4NDgsMHg2QSwweDY0LDB4NDksMHg1NSwweEVB
LDB4QTAsMHgyQSwweDQ4LDB4NkEsMHhBNSwweDUxLDB4NTUsMHhBQSwweDBBLDB4ODgsCi0gICAg
MHgwQSwweDgzLDB4QzYsMHg1MSwweEQ1LDB4QkYsMHhBRiwweDJCLDB4OTIsMHhENSwweDQ3LDB4
NjIsMHhENSwweEJGLDB4MkYsMHgyQiwKLSAgICAweDc1LDB4RUUsMHgwRiwweEM1LDB4MDksMHgw
QiwweDAyLDB4MDIsMHhENywweEY2LDB4OTYsMHhGNiwweEVELDB4QUYsMHhCRiwweDBCLAotICAg
IDB4RDcsMHhGNiwweEI2LDB4RUUsMHhDMywweEMyLDB4RTAsMHhDMCwweEI2LDB4RjYsMHg3Niww
eEVFLDB4RTAsMHhFOCwweEJBLDB4QjgsCi0gICAgMHg5NiwweEY2LDB4NzUsMHhFNiwweEJFLDB4
REUsMHhEQSwweDZBLDB4OTYsMHhFRSwweDU1LDB4RUUsMHgwQiwweDBCLDB4QUIsMHg2QiwKLSAg
ICAweDk2LDB4RUUsMHgzNCwweEU2LDB4ODgsMHhBOCwweDdFLDB4RDcsMHhCNiwweEVFLDB4NTUs
MHhFNiwweDhCLDB4RkYsMHhENSwweDU1LAotICAgIDB4NzYsMHhFRSwweEIzLDB4RDUsMHhGMCww
eEY4LDB4N0UsMHhGRSwweDU1LDB4RTYsMHhGNCwweERELDB4MjksMHhFRCwweEI3LDB4MEYsCi0g
ICAgMHg3NSwweEU2LDB4RDMsMHhENSwweDI4LDB4QUUsMHg3QSwweEFBLDB4NzUsMHhFRSwweDcx
LDB4Q0QsMHgwMCwweDBBLDB4RkYsMHg3QiwKLSAgICAweDk2LDB4RUUsMHg1MSwweEM1LDB4MDAs
MHgyMiwweEFBLDB4REQsMHgxOCwweEZGLDB4RjMsMHhERCwweDBBLDB4MkEsMHhCRiwweEY1LAot
ICAgIDB4MTgsMHhGRiwweDk1LDB4RTYsMHhFOCwweDgwLDB4QUIsMHhGRCwweEI3LDB4RjYsMHhE
NiwweEVFLDB4QkEsMHhBQSwweEJCLDB4QUIsCi0gICAgMHhENywweEY2LDB4NTUsMHhFNiwweDVG
LDB4RTAsMHg4MiwweDhBLDB4QjYsMHhFRSwweDM1LDB4REUsMHhENSwweEZGLDB4RUMsMHhBMCwK
LSAgICAweEQ3LDB4RjYsMHgzNSwweERFLDB4MkIsMHhENSwweDVGLDB4RUUsMHgxOCwweEY3LDB4
MzUsMHhFNiwweDBBLDB4MkEsMHhBRiwweEQ1LAotICAgIDB4MTgsMHhGRiwweDk2LDB4RUUsMHgy
QSwweDIwLDB4MEIsMHhBRCwweDE4LDB4RkYsMHhENywweEY2LDB4QTgsMHhFRSwweDdBLDB4RTgs
Ci0gICAgMHgxOCwweEY3LDB4RDcsMHhGNiwweDhFLDB4OEEsMHg4QiwweERGLDB4MTgsMHhGRiww
eEQ3LDB4RjYsMHhGRSwweEVBLDB4QkEsMHg3RiwKLSAgICAweDE4LDB4RjcsMHhENywweEVFLDB4
NUYsMHg1RSwweEYwLDB4RTIsMHhENywweEY2LDB4RjcsMHhFRSwweEE4LDB4QTgsMHgwMiwweDIy
LAotICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHhDOCwweEVDLDB4OEEsMHg4MCwweEQ3LDB4RjYs
MHhCNywweEVFLDB4MDAsMHg3RSwweDZCLDB4QUEsCi0gICAgMHhGNywweEY2LDB4QjcsMHhFRSww
eEVBLDB4QUYsMHhCRCwweEE3LDB4RjcsMHhGNiwweDU1LDB4RTYsMHhEQSwweDYwLDB4RTgsMHhB
MiwKLSAgICAweEQ3LDB4RjYsMHg1NSwweEU2LDB4ODIsMHgwQiwweDA5LDB4MzUsMHhENywweEY2
LDB4NTUsMHhFNiwweDc4LDB4RkEsMHg3OCwweDY4LAotICAgIDB4QjYsMHhFRSwweDU1LDB4RTYs
MHgwQiwweDBGLDB4QkYsMHhGNSwweDc1LDB4RUUsMHhEMiwweEQ1LDB4NjgsMHg2OCwweDYwLDB4
QzAsCi0gICAgMHhEMywweERELDB4NTEsMHhDRCwweEQ2LDB4RUUsMHhCRSwweEZDLDB4RjMsMHhE
RCwweDcxLDB4Q0QsMHgzRiwweEJELDB4QkQsMHhCRiwKLSAgICAweDE0LDB4REUsMHhGMywweERE
LDB4MzQsMHhGMCwweEUyLDB4ODEsMHgxNCwweERFLDB4RjMsMHhERCwweEFGLDB4RUYsMHhCNyww
eDAzLAotICAgIDB4MzQsMHhFNiwweEY0LDB4REQsMHgwQiwweDgzLDB4QUIsMHhFQSwweDM0LDB4
RTYsMHhGMywweERELDB4NzgsMHg3QSwweEZGLDB4RkYsCi0gICAgMHgxNCwweERFLDB4RjMsMHhE
RCwweENGLDB4NUYsMHhENywweEY1LDB4MTQsMHhERSwweEQzLDB4RDUsMHg4RSwweEE3LDB4QUEs
MHg4QSwKLSAgICAweDI1LDB4NUEsMHg2MywweDQxLDB4NzgsMHhFMiwweDgwLDB4OEEsMHhBNCww
eDQ5LDB4MDIsMHgzOSwweDNGLDB4QUYsMHgyQiwweDlFLAotICAgIDB4NjgsMHg2MiwweDYzLDB4
NDEsMHhCRiwweDBGLDB4MkYsMHhGRCwweDg4LDB4NjIsMHg0MywweDQxLDB4QkEsMHgwMCwweDg4
LDB4N0YsCi0gICAgMHgyNywweDVBLDB4NjQsMHg0MSwweDU3LDB4RjgsMHhFOCwweDdGLDB4QzUs
MHg1MSwweDYzLDB4NDEsMHhGRiwweDgzLDB4QTgsMHg1RiwKLSAgICAweEM1LDB4NDksMHg2NCww
eDQxLDB4NkEsMHgwQSwweDBBLDB4RDUsMHhDNSwweDQ5LDB4NDMsMHgzOSwweDJBLDB4QTgsMHhF
OCwweDU3LAotICAgIDB4QzUsMHg0OSwweDIzLDB4MzksMHhBOCwweDIyLDB4QUIsMHhGNSwweEE1
LDB4NDksMHgwMiwweDMxLDB4MkEsMHhBQSwweEZCLDB4NTcsCi0gICAgMHhDNSwweDQ5LDB4MDIs
MHgzMSwweDdFLDB4RTMsMHhBOSwweDJELDB4QTUsMHg0OSwweDIzLDB4MzksMHgyQiwweDM1LDB4
RjUsMHhBQiwKLSAgICAweEE4LDB4NjIsMHg4NCwweDQxLDB4QTksMHg1NSwweDU1LDB4MEQsMHhB
OCwweDYyLDB4NDMsMHgzOSwweEZFLDB4NzUsMHg1NywweEUwLAotICAgIDB4ODQsMHg0MSwweDAy
LDB4MzEsMHg3OCwweDdELDB4NTcsMHg3MCwweEE1LDB4NDEsMHhFMiwweDI4LDB4QUQsMHhGNSww
eEJGLDB4MkYsCi0gICAgMHhDNSwweDQ5LDB4MjMsMHgzOSwweEUyLDB4RkQsMHhCRiwweEE4LDB4
QTgsMHg2QSwweDQzLDB4MzksMHg3RiwweEQ1LDB4QUIsMHg4MiwKLSAgICAweEU2LDB4NTEsMHgy
MywweDMxLDB4NzYsMHhERiwweEJFLDB4RjgsMHhDNiwweDUxLDB4QzIsMHgzMCwweEQ3LDB4RDYs
MHhGOCwweDY4LAotICAgIDB4ODQsMHg0OSwweDIzLDB4MzksMHhERiwweEFGLDB4MDMsMHhBRCww
eDg0LDB4NDEsMHg0MywweDQxLDB4RkIsMHhDRSwweDA4LDB4MDIsCi0gICAgMHg4NCwweDQ5LDB4
MjMsMHgzOSwweEI1LDB4M0YsMHgyRiwweDhFLDB4QTUsMHg0OSwweDAzLDB4MzksMHhENywweEJB
LDB4QTgsMHhBRSwKLSAgICAweEE1LDB4NTEsMHgyMywweDQxLDB4RDUsMHhGQiwweEZBLDB4OUYs
MHg4NCwweDUxLDB4NDQsMHg0OSwweEFELDB4OUUsMHgzQSwweDk1LAotICAgIDB4MDYsMHg2Miww
eDQzLDB4NDksMHhBRiwweDI5LDB4M0YsMHhCRiwweEU1LDB4NjksMHhDNSwweDYxLDB4RUYsMHg2
QiwweDM5LDB4NzcsCi0gICAgMHhFNSwweDYxLDB4QTQsMHg1OSwweEU4LDB4NjAsMHhFMCwweEVD
LDB4QzUsMHg1OSwweDY0LDB4NTEsMHhCQiwweEIyLDB4RTIsMHg3QSwKLSAgICAweEE1LDB4NTEs
MHg0NCwweDQ5LDB4MjIsMHhCRSwweDk3LDB4N0YsMHhBNSwweDQ5LDB4MjQsMHg0MSwweEE4LDB4
QkEsMHhGRSwweDU1LAotICAgIDB4ODUsMHg0OSwweDI0LDB4NDEsMHgwMiwweDNFLDB4MkYsMHhG
NywweEE1LDB4NDksMHg0NCwweDQxLDB4ODIsMHhFQiwweEZGLDB4OTUsCi0gICAgMHhBNSwweDQ5
LDB4MjQsMHgzOSwweDIwLDB4RTIsMHhDRSwweDdGLDB4QTUsMHg0OSwweDIzLDB4MzksMHgwMiww
eEJBLDB4MkIsMHg1RiwKLSAgICAweDg1LDB4NDEsMHgwMywweDM5LDB4MDAsMHhBOCwweEY4LDB4
NzcsMHg4NSwweDQ5LDB4MDMsMHgzOSwweEEwLDB4MkEsMHhBQSwweDU1LAotICAgIDB4QTUsMHg0
OSwweDAzLDB4MzksMHhBMiwweEVGLDB4RUYsMHg3NSwweDg0LDB4NDEsMHhDMiwweDMwLDB4MDAs
MHhBMCwweEJBLDB4NTcsCi0gICAgMHg4NCwweDQ5LDB4RTIsMHgzMCwweDAwLDB4MkEsMHhBRiww
eDU1LDB4QTUsMHg0OSwweEUyLDB4MzAsMHgwQSwweEFBLDB4RkIsMHg1NSwKLSAgICAweEE0LDB4
NDksMHhFMiwweDMwLDB4MEEsMHhBQSwweEY3LDB4NTUsMHg2NCwweDQxLDB4QzIsMHgzMCwweEY4
LDB4NkIsMHhFQiwweDBCLAotICAgIDB4ODQsMHg0MSwweEUyLDB4MzAsMHgwMywweEFELDB4NTUs
MHg1NSwweDYzLDB4NDEsMHhDMiwweDMwLDB4MDAsMHhBOCwweEQ3LDB4RkQsCi0gICAgMHg2NCww
eDQxLDB4QzEsMHgzMCwweDAwLDB4QkYsMHhERiwweEZGLDB4QzUsMHg1MSwweDIyLDB4MzksMHg3
RiwweEZELDB4QjUsMHgwNSwKLSAgICAweEE1LDB4NDksMHgwMiwweDMxLDB4QkYsMHg1NSwweDU3
LDB4NUMsMHg2NCwweDQxLDB4MDIsMHgzMSwweDI4LDB4NUQsMHg1NSwweEZELAotICAgIDB4ODQs
MHg0MSwweDAyLDB4MzEsMHg3RiwweDU1LDB4NUQsMHg4RiwweDY0LDB4NDEsMHhDMiwweDI4LDB4
QkEsMHhGNSwweEZGLDB4MjgsCi0gICAgMHg2NCwweDQxLDB4RTIsMHgzMCwweEZCLDB4NUYsMHg3
RiwweDAyLDB4RTUsMHg1MSwweDAyLDB4MzEsMHhENSwweEI1LDB4QjUsMHgwQSwKLSAgICAweDA2
LDB4NUEsMHgwMiwweDMxLDB4NUYsMHg1RSwweEYwLDB4ODAsMHhDNiwweDUxLDB4QzIsMHgzMCww
eDc1LDB4RDUsMHhCQiwweDAwLAotICAgIDB4RTcsMHg1OSwweDAzLDB4MzEsMHg1NSwweDU1LDB4
RkYsMHg4MCwweEU2LDB4NTksMHhFMiwweDMwLDB4NTUsMHg1NSwweEFGLDB4MDAsCi0gICAgMHhF
NiwweDU5LDB4MDMsMHgzMSwweDU1LDB4NTUsMHgzQiwweDAwLDB4MjYsMHg1QSwweDIzLDB4Mzks
MHg1NSwweEY1LDB4QUEsMHgwOCwKLSAgICAweDY3LDB4NjIsMHhDNSwweDUxLDB4NDMsMHhFOSww
eEZELDB4QkEsMHgwNiwweDVBLDB4MDMsMHgzOSwweDU3LDB4RkEsMHg4OCwweDAwLAotICAgIDB4
MDYsMHg1QSwweDI0LDB4NDEsMHg1NSwweEJBLDB4MDgsMHgwMiwweDI2LDB4NjIsMHgyMywweDQx
LDB4RkQsMHhBQSwweDAyLDB4OEEsCi0gICAgMHgyNywweDYyLDB4QzUsMHg1MSwweDQzLDB4NkEs
MHhBOCwweEFBLDB4MjcsMHg2MiwweEE1LDB4NTEsMHg1NSwweEEzLDB4MjgsMHhBOCwKLSAgICAw
eDI2LDB4NjIsMHhBNCwweDUxLDB4QkQsMHhBOCwweDIyLDB4OEEsMHg0NywweDYyLDB4QzUsMHg1
MSwweDdGLDB4QUUsMHgyQSwweERGLAotICAgIDB4MjYsMHg2MiwweEE1LDB4NTEsMHgyMiwweDJB
LDB4QTgsMHhCRCwweDI2LDB4NjIsMHhDNSwweDUxLDB4REEsMHhBMiwweEFBLDB4NkYsCi0gICAg
MHgyNywweDYyLDB4QzUsMHg1MSwweDJGLDB4QkUsMHgyQSwweEY2LDB4MjcsMHg2MiwweEE1LDB4
NTEsMHhBOCwweDA4LDB4MEEsMHg5NywKLSAgICAweDI3LDB4NjIsMHhDNCwweDUxLDB4RUEsMHhB
MiwweEZDLDB4RDcsMHg0NywweDYyLDB4QTQsMHg1MSwweDhCLDB4OEEsMHhERiwweEJGLAotICAg
IDB4QTgsMHg3MiwweEM2LDB4NTEsMHhFRiwweEVGLDB4NTcsMHgzQiwweEE4LDB4NzIsMHg4NSww
eDUxLDB4QUEsMHhGQiwweEQ3LDB4MDAsCi0gICAgMHgyOSwweDgzLDB4RTUsMHg1OSwweDVELDB4
NTUsMHg1NSwweDBCLDB4OEIsMHg4QiwweEE0LDB4NTEsMHhGNywweDc1LDB4RkQsMHgwMCwKLSAg
ICAweDRELDB4QTQsMHgwNSwweDVBLDB4NTUsMHg1NSwweDU1LDB4MDIsMHhDRiwweEI0LDB4RTUs
MHg1OSwweDU1LDB4NTUsMHhERCwweDAwLAotICAgIDB4MzAsMHhCRCwweEU1LDB4NTksMHg1NSww
eDU1LDB4RkYsMHgwMCwweDcxLDB4QzUsMHgwNSwweDVBLDB4NTUsMHg1NSwweEVGLDB4MDAsCi0g
ICAgMHhCMywweEQ1LDB4MDcsMHg2MiwweDU1LDB4NTUsMHhBQiwweDAwLDB4MTQsMHhERSwweDQ3
LDB4NjIsMHg1NSwweDU1LDB4QUEsMHgwMCwKLSAgICAweDM0LDB4RTYsMHg4NywweDZBLDB4RDUs
MHhCRCwweDIyLDB4MDAsMHg1NSwweEU2LDB4NEQsMHhBQywweEJELDB4MkIsMHgwMCwweDAwLAot
ICAgIDB4RDcsMHhGNiwweDM1LDB4RTYsMHhBRCwweEFELDB4QUIsMHgwQiwweEY4LDB4RkUsMHhC
NywweEY2LDB4QkQsMHhFRiwweDZCLDB4N0EsCi0gICAgMHhENiwweEY2LDB4OTYsMHhFRSwweEVD
LDB4RjcsMHhCRiwweDdCLDB4QjYsMHhGNiwweDc2LDB4RUUsMHhGQSwweEJBLDB4N0EsMHg3RSwK
LSAgICAweDk2LDB4RUUsMHg3NSwweEVFLDB4NTgsMHhGRiwweEVELDB4N0YsMHg3NiwweEVFLDB4
RjMsMHhERCwweEMyLDB4RTgsMHg3OCwweDdBLAotICAgIDB4MzQsMHhFNiwweEQzLDB4RDUsMHgy
RSwweEJELDB4QkQsMHhBNSwweDc1LDB4RUUsMHgxNCwweERFLDB4QUYsMHhFRiwweEFELDB4MkIs
Ci0gICAgMHg5NiwweEVFLDB4RjMsMHhERCwweEY3LDB4OUYsMHhCRiwweDIyLDB4OTYsMHhFRSww
eDM0LDB4RTYsMHg3RCwweEZCLDB4QTIsMHg4MCwKLSAgICAweDc1LDB4RUUsMHgzNSwweEU2LDB4
RTksMHgwQiwweDAyLDB4MEEsMHg5NiwweEVFLDB4MTQsMHhERSwweDdGLDB4QTgsMHgwMCwweDBB
LAotICAgIDB4OTYsMHhFRSwweDUxLDB4Q0QsMHg1NywweEEwLDB4MDAsMHgwMCwweDk2LDB4RUUs
MHgxMCwweEM1LDB4QkQsMHg1NywweEUwLDB4MDAsCi0gICAgMHg5NiwweEVFLDB4NzEsMHhDNSww
eDBBLDB4QkQsMHhENSwweDVFLDB4QjYsMHhFRSwweDkyLDB4Q0QsMHgwMCwweDBBLDB4QUYsMHhG
RCwKLSAgICAweEQ3LDB4RjYsMHg1NSwweEU2LDB4QUEsMHhBMiwweDBCLDB4RjUsMHhENywweEY2
LDB4OTYsMHhFRSwweDRCLDB4MkIsMHgyQiwweDJCLAotICAgIDB4RDcsMHhGNiwweDk2LDB4RUUs
MHg1NSwweEJGLDB4MjAsMHgwMCwweEQ3LDB4RjYsMHhEMywweEQ1LDB4RkEsMHg3OCwweDYwLDB4
QTAsCi0gICAgMHhCNiwweEVFLDB4NzIsMHhDRCwweDAyLDB4MEIsMHhBNSwweEQ1LDB4MTgsMHhG
NywweDU1LDB4RTYsMHgwMiwweDBBLDB4QkIsMHhCNSwKLSAgICAweDE4LDB4RkYsMHhEOCwweEY2
LDB4RkUsMHhFRSwweEEyLDB4MEIsMHgxOCwweEZGLDB4RDcsMHhGNiwweEZELDB4RUYsMHhCQSww
eEFBLAotICAgIDB4MTgsMHhGNywweEY3LDB4RjYsMHhGOSwweDc3LDB4RkQsMHhGNywweDE4LDB4
RjcsMHhENywweEVFLDB4RkEsMHhCQSwweEFGLDB4QkEsCi0gICAgMHhGNywweEY2LDB4QjYsMHhF
RSwweEYyLDB4RkEsMHhGQywweEUwLDB4QjcsMHhGNiwweEY3LDB4RUUsMHhBRiwweEVCLDB4QUEs
MHhBQiwKLSAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4RkYsMHhGRSwweEZBLDB4NkEsMHhENyww
eEY2LDB4OTYsMHhFRSwweEUwLDB4OEIsMHhFQiwweEVGLAotICAgIDB4QjYsMHhFRSwweDE0LDB4
REUsMHgyRiwweDM2LDB4REUsMHg3RSwweEQ3LDB4RjYsMHg1NSwweEU2LDB4NzgsMHhFQSwweEVB
LDB4RUIsCi0gICAgMHg5NiwweEVFLDB4MzQsMHhFNiwweDJELDB4OEYsMHhCRSwweEI3LDB4OTYs
MHhFRSwweDE0LDB4REUsMHg2MCwweDQwLDB4NjIsMHhFOCwKLSAgICAweEYzLDB4REQsMHg3Miww
eENELDB4REUsMHg3RSwweDVDLDB4NUMsMHhCMiwweEQ1LDB4NzIsMHhDRCwweDNFLDB4QkYsMHhG
NywweEY1LAotICAgIDB4MTQsMHhERSwweEQzLDB4RDUsMHg4QiwweDBELDB4QTksMHgyOSwweDM0
LDB4RTYsMHhGNCwweERELDB4QTcsMHhCRiwweEVBLDB4QUIsCi0gICAgMHgzNCwweEU2LDB4MTQs
MHhERSwweDcwLDB4ODAsMHgyRSwweDJGLDB4MzQsMHhFNiwweEY0LDB4REQsMHhERSwweEZBLDB4
RjgsMHhGRiwKLSAgICAweDE0LDB4REUsMHhEMywweEQ1LDB4RkUsMHhCQSwweDZFLDB4RjIsMHgz
NCwweEU2LDB4RjQsMHhERCwweEY1LDB4QkQsMHgyRCwweDNGLAotICAgIDB4NDYsMHg2MiwweEM1
LDB4NTEsMHg3RiwweEY2LDB4RDYsMHhGQywweDA1LDB4NTIsMHgyMywweDM5LDB4REUsMHg3QSww
eDYwLDB4NjAsCi0gICAgMHhDNSwweDQ5LDB4MjIsMHgzOSwweEVGLDB4RUQsMHhFOSwweDM1LDB4
MjcsMHg2MiwweDQzLDB4NDEsMHg1NSwweEJELDB4MDMsMHgwQiwKLSAgICAweDg4LDB4NkEsMHg2
MywweDQxLDB4NTUsMHhGRiwweDgwLDB4RUEsMHhDNSwweDQ5LDB4NDMsMHg0MSwweDU1LDB4QUEs
MHhBOCwweEU4LAotICAgIDB4QzQsMHg0OSwweDQyLDB4MzksMHhGRCwweDJBLDB4QUEsMHhGQiww
eEE0LDB4NDksMHg0MywweDM5LDB4REEsMHgyOCwweEFBLDB4RUYsCi0gICAgMHhBNCwweDQ5LDB4
NjQsMHg0MSwweEFFLDB4MjgsMHhGQywweDU5LDB4QTUsMHg0OSwweDQzLDB4MzksMHg2QiwweEYw
LDB4RkEsMHg3QiwKLSAgICAweDg0LDB4NDEsMHgyMywweDM5LDB4QkQsMHhGQSwweENBLDB4QUEs
MHhBNSwweDQ5LDB4MDIsMHgzMSwweDIyLDB4MDMsMHgyRCwweEU1LAotICAgIDB4Q0EsMHg4Qiww
eEE0LDB4NDksMHgwRCwweEI1LDB4NTUsMHg1NSwweEVDLDB4OEIsMHg2MywweDQxLDB4RTAsMHhF
QSwweDU3LDB4NTUsCi0gICAgMHhBNSwweDQ5LDB4MDMsMHgzMSwweDYwLDB4RTAsMHhDOCwweEVF
LDB4NDQsMHgzMSwweEExLDB4MjgsMHgyQiwweEZFLDB4REUsMHg1RiwKLSAgICAweDg0LDB4NDEs
MHhDMSwweDI4LDB4MjgsMHhBQSwweEFCLDB4QUQsMHgyNiwweDVBLDB4MDIsMHgzMSwweDAyLDB4
RkYsMHhGRiwweDc1LAotICAgIDB4QzUsMHg0OSwweDAyLDB4MzksMHhCOCwweEZFLDB4RkIsMHg1
NSwweEU2LDB4NTEsMHgwMywweDM5LDB4NzIsMHhFMywweEVGLDB4NTUsCi0gICAgMHg0NCwweDQx
LDB4QzEsMHgzMCwweDBCLDB4OEYsMHhGOCwweDU4LDB4QTQsMHg0OSwweEUxLDB4MzAsMHhBMiww
eEJBLDB4RkYsMHg1NSwKLSAgICAweDg0LDB4NDksMHhFMiwweDMwLDB4MjgsMHhGOCwweEZGLDB4
NTUsMHg2NCwweDQxLDB4QzEsMHgzMCwweDAwLDB4ODIsMHhGQiwweDU1LAotICAgIDB4NjQsMHg0
OSwweEMxLDB4MzAsMHgwMCwweDAwLDB4RkYsMHg1NSwweDg0LDB4NTEsMHgwMiwweDM5LDB4M0Es
MHgwRSwweDJELDB4MDUsCi0gICAgMHgyNiwweDZBLDB4ODQsMHg1OSwweEZELDB4QkYsMHgyQiww
eEFCLDB4NDcsMHg3MiwweEM1LDB4NjEsMHhGNSwweEJGLDB4RjgsMHhFQSwKLSAgICAweDI2LDB4
NzIsMHhFNSwweDYxLDB4NzMsMHg1QywweEJFLDB4RUEsMHgwNSwweDZBLDB4NjQsMHg1MSwweDdF
LDB4N0UsMHg1OCwweDYwLAotICAgIDB4ODUsMHg1OSwweDA0LDB4NDEsMHhGQSwweDdFLDB4NTgs
MHg3QSwweDA0LDB4NDEsMHhBMiwweDMwLDB4MDAsMHhGQSwweDVFLDB4ODAsCi0gICAgMHgyNCww
eDQxLDB4QTIsMHgzMCwweDNFLDB4N0YsMHg3RiwweDBCLDB4MjQsMHg0MSwweEEyLDB4MjgsMHhB
QywweDdGLDB4N0YsMHgwMiwKLSAgICAweDQ0LDB4NDEsMHhBMiwweDI4LDB4RUIsMHg1RCwweEZC
LDB4MjAsMHg4NSwweDQ5LDB4QzIsMHgzMCwweDU1LDB4NTUsMHhERCwweDIwLAotICAgIDB4ODUs
MHg0OSwweEMzLDB4MzAsMHg3NSwweDU1LDB4RkYsMHgwMCwweEE1LDB4NTEsMHhFMiwweDMwLDB4
NTUsMHg1NSwweEY3LDB4MDAsCi0gICAgMHgyNywweDVBLDB4RTMsMHgzOCwweDU1LDB4RDUsMHhG
NywweEE4LDB4MDcsMHg1QSwweEEyLDB4MjgsMHg1NSwweDVGLDB4QUUsMHgwMiwKLSAgICAweDA3
LDB4NUEsMHhDMiwweDMwLDB4NTUsMHg3RiwweEFCLDB4MjAsMHgwNiwweDVBLDB4QzIsMHgzMCww
eDU1LDB4RkQsMHhCQSwweDAwLAotICAgIDB4MjcsMHg1QSwweEUyLDB4MzAsMHg1NSwweEZGLDB4
QUEsMHgwMiwweDA2LDB4NUEsMHgwMywweDM5LDB4QUQsMHhBRiwweDIwLDB4MDAsCi0gICAgMHg2
NywweDYyLDB4MjMsMHgzOSwweDU3LDB4RkYsMHhBQSwweEEyLDB4MjcsMHg1QSwweDIzLDB4Mzks
MHg1NSwweEFCLDB4MDgsMHg4MCwKLSAgICAweDA2LDB4NUEsMHg0MywweDQxLDB4RDUsMHgyQiww
eDAwLDB4MDAsMHg0NiwweDYyLDB4QTQsMHg0OSwweEQ1LDB4QUYsMHhBQSwweEVBLAotICAgIDB4
MjcsMHg2MiwweDg0LDB4NDksMHhENywweDJBLDB4MDAsMHhBMiwweDI3LDB4NUEsMHg4NCwweDQ5
LDB4RjUsMHg4QSwweEEwLDB4RUEsCi0gICAgMHgwNiwweDVBLDB4QTUsMHg0OSwweEY1LDB4OEEs
MHgwMCwweEEyLDB4NDYsMHg1QSwweEE1LDB4NTEsMHhENywweDJBLDB4QTAsMHhCQiwKLSAgICAw
eDI2LDB4NUEsMHhBNCwweDUxLDB4QUIsMHg4MCwweDIwLDB4RDcsMHgyNiwweDVBLDB4ODQsMHg0
OSwweDIyLDB4QTgsMHhBOCwweEY3LAotICAgIDB4MjcsMHg2MiwweDg0LDB4NDksMHhBOCwweDgy
LDB4QUEsMHhCNSwweDA3LDB4NUEsMHhBNSwweDUxLDB4QzIsMHgyRiwweEU5LDB4REUsCi0gICAg
MHgyOCwweDYyLDB4ODUsMHg1MSwweEEwLDB4OEEsMHhGNSwweEFFLDB4NDgsMHg2QSwweDY1LDB4
NDksMHhBQSwweEVBLDB4NUYsMHgyQiwKLSAgICAweDY4LDB4NzIsMHg4NSwweDQ5LDB4RkIsMHhG
RiwweDdGLDB4OEEsMHg0NywweDYyLDB4QTUsMHg1MSwweEJFLDB4QkYsMHhGNSwweDAyLAotICAg
IDB4ODgsMHg3MiwweDA2LDB4NUEsMHg3RiwweDdGLDB4RjUsMHgzQiwweDZCLDB4OEIsMHg4NCww
eDQ5LDB4NUYsMHg1RCwweEZGLDB4MDIsCi0gICAgMHg0RSwweEFDLDB4QzUsMHg1MSwweDU1LDB4
NTUsMHhENSwweDAwLDB4QjAsMHhCNCwweEM1LDB4NTEsMHg1NSwweDU1LDB4RkYsMHgwMCwKLSAg
ICAweDUyLDB4QzUsMHhDNiwweDU5LDB4NTUsMHg1NSwweEZGLDB4MDAsMHg5MywweENELDB4QzUs
MHg1OSwweDU1LDB4NTUsMHhBRiwweDAwLAotICAgIDB4QjMsMHhENSwweEU2LDB4NTksMHg1NSww
eDU1LDB4QUEsMHgwMCwweEY1LDB4REQsMHg4NSwweDUxLDB4NTUsMHhGRiwweEFBLDB4MDAsCi0g
ICAgMHg1NiwweEU2LDB4QTUsMHg1MSwweDU1LDB4RkYsMHhBQSwweDAwLDB4OTcsMHhFRSwweDI2
LDB4NjIsMHg1NSwweEZGLDB4QUEsMHgwMCwKLSAgICAweDE1LDB4REUsMHgyNywweDYyLDB4NTUs
MHhBQiwweDIwLDB4MDAsMHgzNiwweEU2LDB4ODgsMHg2QSwweDU1LDB4QUEsMHgwMCwweDAwLAot
ICAgIDB4NzUsMHhFNiwweDI5LDB4ODMsMHg1NSwweEFBLDB4MDgsMHgwMCwweDk2LDB4RUUsMHhD
QiwweDkzLDB4NTUsMHhBQSwweDAwLDB4MDAsCi0gICAgMHg5NiwweEVFLDB4MEQsMHg5QywweEQ1
LDB4QUEsMHgwMCwweDAwLDB4OTcsMHhFRSwweDkwLDB4QUMsMHhGNSwweEEyLDB4MDAsMHgwMCwK
LSAgICAweDk2LDB4RUUsMHgxMSwweEJELDB4RjUsMHhBQSwweDAwLDB4MDAsMHhCNiwweEVFLDB4
NzIsMHhDRCwweEQ1LDB4QUEsMHgwMCwweDAwLAotICAgIDB4OTYsMHhFRSwweEQzLDB4RDUsMHhE
NSwweEFBLDB4MDAsMHgwMCwweEI2LDB4RUUsMHhEMywweEQ1LDB4RkQsMHhBQSwweDAwLDB4MDAs
Ci0gICAgMHhGNiwweEY2LDB4MzQsMHhERSwweDU1LDB4RkYsMHhFQiwweEFBLDB4QjYsMHhFRSww
eDM0LDB4REUsMHhGNywweEFBLDB4ODIsMHgwMCwKLSAgICAweEI2LDB4RUUsMHg1NSwweEU2LDB4
REQsMHhBQSwweDIyLDB4MDAsMHhCNiwweEVFLDB4NTUsMHhFNiwweEVELDB4QUEsMHgwMiwweDAw
LAotICAgIDB4RDYsMHhGNiwweDc1LDB4RTYsMHhERCwweEVCLDB4QUEsMHgyQSwweEY4LDB4RjYs
MHg5NiwweEVFLDB4NTUsMHhENywweEFGLDB4QUIsCi0gICAgMHhGNywweEZFLDB4OTYsMHhFRSww
eEJELDB4QUIsMHhBQSwweEI4LDB4RDYsMHhGNiwweDk2LDB4RUUsMHhGOCwweEZFLDB4RkUsMHhG
QSwKLSAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4RTgsMHhCQSwweEQyLDB4RjMsMHg5NiwweEVF
LDB4NTUsMHhFRSwweEUwLDB4RTAsMHg4MCwweDgyLAotICAgIDB4NzUsMHhFRSwweDM0LDB4RTYs
MHg4OCwweEVBLDB4QTgsMHg3OCwweDU1LDB4RTYsMHhGMywweERELDB4N0EsMHg3OCwweDdFLDB4
N0UsCi0gICAgMHg1NSwweEU2LDB4OTIsMHhENSwweEI3LDB4OTcsMHhBQSwweDAwLDB4RDcsMHhG
NiwweDE0LDB4REUsMHhCRCwweEFELDB4QUYsMHgyQiwKLSAgICAweEY3LDB4RjYsMHg5NiwweEVF
LDB4RkQsMHhBRiwweDBBLDB4OEEsMHhGNywweEY2LDB4OTYsMHhGNiwweDZCLDB4OEEsMHg4MCww
eEEyLAotICAgIDB4RDcsMHhGNiwweDc1LDB4RTYsMHg1NywweERBLDB4RTgsMHgyOCwweDk2LDB4
RUUsMHg1NSwweEU2LDB4QUYsMHhGQSwweEZBLDB4QzgsCi0gICAgMHhCNiwweEVFLDB4NzUsMHhF
NiwweEJGLDB4RDUsMHg5NSwweDdGLDB4QjYsMHhFRSwweDU1LDB4RTYsMHg4OCwweEFBLDB4QkIs
MHhGRiwKLSAgICAweDk2LDB4RUUsMHhGMywweEQ1LDB4NzAsMHgwMCwweDAwLDB4MDAsMHg5Niww
eEVFLDB4QjMsMHhENSwweEQ1LDB4REUsMHhFMCwweDAwLAotICAgIDB4NTUsMHhFNiwweEY0LDB4
RDUsMHgyQSwweDI5LDB4QUQsMHg5OCwweEI3LDB4RUUsMHgzNSwweEU2LDB4MDIsMHhBRiwweEI5
LDB4RkQsCi0gICAgMHhGOCwweEY2LDB4NzUsMHhFNiwweDJBLDB4MkYsMHhBNSwweDc1LDB4Rjcs
MHhGNiwweEI3LDB4RjYsMHhGQSwweEEwLDB4OEEsMHgyRCwKLSAgICAweEY3LDB4RjYsMHhEMyww
eEQ1LDB4NUUsMHhFQSwweDIwLDB4MDAsMHhGOCwweEY2LDB4QjMsMHhENSwweEJELDB4RkYsMHhF
OCwweDAwLAotICAgIDB4RDcsMHhGNiwweDM0LDB4REUsMHgwQSwweDBCLDB4QjUsMHhCQSwweDE4
LDB4RkYsMHg5NiwweEU2LDB4QTAsMHg4MiwweDJGLDB4QUQsCi0gICAgMHgxOCwweEZGLDB4Rjgs
MHhGNiwweDk1LDB4REUsMHhERiwweEJBLDB4MTgsMHhGNywweEY3LDB4RjYsMHg3QSwweEZGLDB4
NUYsMHg1RCwKLSAgICAweDE4LDB4RkYsMHhENywweEY2LDB4NkYsMHhGQSwweEEyLDB4RTIsMHhG
NywweEY2LDB4QjYsMHhFRSwweEVBLDB4QkIsMHhGQywweEYwLAotICAgIDB4RDcsMHhGNiwweEI2
LDB4RUUsMHhEQSwweEZFLDB4RkMsMHg1NCwweEI2LDB4RUUsMHg5NiwweEVFLDB4QjIsMHhCMiww
eDUwLDB4RDAsCi0gICAgMHhCNiwweEVFLDB4MTMsMHhERSwweDU4LDB4RjgsMHhFMCwweEY4LDB4
OTYsMHhFRSwweDM0LDB4RTYsMHg4MywweDBCLDB4ODksMHhBNSwKLSAgICAweDc1LDB4RUUsMHgx
NCwweERFLDB4MzYsMHhCRSwweERDLDB4RkMsMHg3NSwweEVFLDB4NTUsMHhFNiwweDc4LDB4N0Is
MHhFRCwweEZELAotICAgIDB4MzQsMHhFNiwweDkyLDB4Q0QsMHg1RSwweDVFLDB4NUMsMHg1OCww
eDkyLDB4Q0QsMHgzMSwweENELDB4MkEsMHgzQSwweEE4LDB4MDgsCi0gICAgMHgzNCwweEU2LDB4
OTIsMHhDRCwweEFCLDB4QUIsMHgyOSwweDJCLDB4NTUsMHhFNiwweEYzLDB4REQsMHhCRCwweEY3
LDB4RjUsMHhBQiwKLSAgICAweDM0LDB4RTYsMHhGNCwweERELDB4OEEsMHhFQywweENBLDB4RTIs
MHgzNSwweEU2LDB4RjQsMHhERCwweEI3LDB4RkYsMHhBRiwweEVGLAotICAgIDB4MTQsMHhERSww
eEYzLDB4REQsMHhGQSwweDI4LDB4QjAsMHg3RSwweDM0LDB4RTYsMHhGNCwweERELDB4RjcsMHhE
RiwweDc3LDB4RUUsCi0gICAgMHg4OCwweDZBLDB4QTUsMHg1MSwweDU4LDB4NzgsMHhFMCwweEYw
LDB4RTYsMHg1OSwweDg0LDB4NDEsMHg3QSwweEYyLDB4QUUsMHhGMCwKLSAgICAweDg0LDB4NDks
MHhFMSwweDMwLDB4MkYsMHhGRSwweDVDLDB4NTgsMHhDNSwweDUxLDB4QzEsMHgzMCwweDBCLDB4
QUIsMHhCRiwweEQ1LAotICAgIDB4RTUsMHg1MSwweDAyLDB4MzEsMHhBMCwweDhCLDB4RUEsMHg1
NywweEM0LDB4NDksMHhFMSwweDI4LDB4QTIsMHg4OCwweEE4LDB4NUQsCi0gICAgMHhBNSwweDQ5
LDB4QzIsMHgzMCwweDhBLDB4MDgsMHhFQSwweERGLDB4QzUsMHg0OSwweEExLDB4MjgsMHhBQSww
eDAyLDB4RUEsMHg3RiwKLSAgICAweDY0LDB4NDEsMHhDMSwweDI4LDB4MDAsMHgwMCwweEJGLDB4
RTksMHg2NCwweDQxLDB4RTIsMHgzMCwweDAwLDB4MjgsMHg1RiwweEZGLAotICAgIDB4QTUsMHg0
OSwweDAyLDB4MzEsMHhFOCwweEI3LDB4QjUsMHgwRCwweDY0LDB4NDEsMHhDMSwweDI4LDB4QjYs
MHg1QywweEI4LDB4ODAsCi0gICAgMHg0MywweDM5LDB4QzEsMHgyOCwweDJBLDB4REYsMHhGRiww
eEVBLDB4NDQsMHgzOSwweEMyLDB4MjgsMHgyOCwweEQ3LDB4N0YsMHhFRiwKLSAgICAweDY0LDB4
NDEsMHhBMSwweDI4LDB4RkIsMHhGRCwweEZELDB4ODIsMHg2NCwweDQxLDB4QzIsMHgyOCwweDU3
LDB4NUQsMHhGRiwweDJCLAotICAgIDB4NjQsMHg0MSwweEMxLDB4MjgsMHg3NSwweEQ1LDB4RUYs
MHgwMiwweDg1LDB4NDksMHhDMSwweDI4LDB4NTUsMHhENSwweEZGLDB4ODIsCi0gICAgMHhBNiww
eDQ5LDB4RTIsMHgzMCwweDVELDB4NTUsMHg1RCwweDhBLDB4QzUsMHg1MSwweEUyLDB4MzAsMHhG
NSwweDk1LDB4OTUsMHgwMiwKLSAgICAweEU2LDB4NTEsMHhFMiwweDMwLDB4NUUsMHhGQSwweEVB
LDB4MDAsMHgwNiwweDUyLDB4QzEsMHgzMCwweDU1LDB4RDUsMHhFQiwweDA4LAotICAgIDB4MDYs
MHg1QSwweEMxLDB4MzAsMHg1NSwweDc3LDB4QUEsMHgwQSwweDA2LDB4NUEsMHhDMSwweDMwLDB4
NTUsMHhGRCwweEFBLDB4MDIsCi0gICAgMHgwNiwweDYyLDB4QzEsMHgzMCwweDU1LDB4RkYsMHhB
QSwweDAwLDB4MDYsMHg2MiwweDAyLDB4NDEsMHhCNSwweEVGLDB4MkEsMHhBMCwKLSAgICAweDI3
LDB4NzIsMHhBNCwweDU5LDB4M0QsMHgyRiwweDA3LDB4QUYsMHgyNiwweDcyLDB4RTUsMHg2OSww
eDgyLDB4MDIsMHhFOCwweEZFLAotICAgIDB4MjYsMHg3MiwweEU1LDB4NjksMHhGQSwweDIyLDB4
QUYsMHhERCwweDQ2LDB4NzIsMHhFNiwweDY5LDB4NUEsMHhEQywweEE3LDB4RkQsCi0gICAgMHgy
NiwweDZBLDB4ODUsMHg1OSwweDU2LDB4RjgsMHhBOCwweEEyLDB4MDYsMHg2MiwweDY0LDB4NDks
MHg3RSwweEFBLDB4MEEsMHg4QywKLSAgICAweDA2LDB4NjIsMHg2NCwweDQ5LDB4NzUsMHhBOCww
eEIwLDB4QkEsMHgwNiwweDVBLDB4ODQsMHg0OSwweEY1LDB4MkEsMHhBQSwweEFBLAotICAgIDB4
MjcsMHg1QSwweEE1LDB4NTEsMHhERiwweDMyLDB4QUIsMHg1NywweDA3LDB4NUEsMHg4NCwweDQ5
LDB4QUUsMHhBMiwweDgyLDB4N0IsCi0gICAgMHhFNiwweDU5LDB4ODQsMHg0OSwweDJBLDB4MDIs
MHhBMCwweDc3LDB4MDcsMHg1QSwweDg0LDB4NDksMHhBOCwweDBBLDB4QUIsMHhERiwKLSAgICAw
eDI3LDB4NjIsMHg4NCwweDQ5LDB4OEEsMHhBQiwweEZGLDB4RjUsMHgyNywweDYyLDB4QTQsMHg1
MSwweDJBLDB4RUIsMHg3RSwweDU3LAotICAgIDB4NDYsMHg2MiwweDg0LDB4NDksMHhCQSwweEFC
LDB4N0QsMHgzRCwweDQ3LDB4NjIsMHg0NCwweDQ5LDB4QUEsMHhFQSwweEZGLDB4MDgsCi0gICAg
MHhDOCwweDcyLDB4ODMsMHg0OSwweEZGLDB4RkYsMHhGNSwweDJBLDB4MkEsMHg3QiwweDg0LDB4
NTEsMHhGRiwweDU3LDB4NUQsMHgwMiwKLSAgICAweEFDLDB4OTMsMHhBNSwweDUxLDB4RDcsMHg1
NSwweEQ1LDB4MjIsMHgwRCwweEE0LDB4QzUsMHg1MSwweDU1LDB4NTUsMHg3NywweDAyLAotICAg
IDB4NkYsMHhBQywweDQzLDB4NDEsMHhGNywweDU1LDB4QkYsMHgwMCwweEQxLDB4QkMsMHhDNSww
eDUxLDB4NTUsMHg1NSwweEZGLDB4MDAsCi0gICAgMHg3MiwweENELDB4RTYsMHg1OSwweDU1LDB4
NTUsMHhGRiwweDAwLDB4OTMsMHhDRCwweEU1LDB4NTksMHg1NSwweDU1LDB4QkIsMHgwMCwKLSAg
ICAweEIzLDB4RDUsMHg2MywweDQ5LDB4NTUsMHhGRiwweEFBLDB4MDAsMHhGNCwweERELDB4QTQs
MHg1MSwweDU1LDB4RkQsMHhBQSwweDAwLAotICAgIDB4NTYsMHhFRSwweEE0LDB4NTEsMHg1NSww
eEZGLDB4MkEsMHgwMCwweDc2LDB4RUUsMHgwNiwweDYyLDB4NTUsMHhGRiwweDJBLDB4MDAsCi0g
ICAgMHhGNCwweERELDB4RTUsMHg1OSwweDU1LDB4QUEsMHgyMCwweDAwLDB4MTUsMHhFNiwweEE4
LDB4NzIsMHg1NSwweEFBLDB4MDAsMHgwMCwKLSAgICAweDU1LDB4RTYsMHgyQiwweDgzLDB4NTUs
MHhBQSwweDA4LDB4MDAsMHg1NSwweEU2LDB4OEMsMHg5MywweEQ1LDB4QUEsMHgwMCwweDAwLAot
ICAgIDB4MzUsMHhFNiwweDJELDB4QTQsMHg1NSwweEFBLDB4QTAsMHg4MCwweDUyLDB4Q0QsMHhD
QywweDlCLDB4NTUsMHhFOCwweEUwLDB4NzgsCi0gICAgMHhBQywweDkzLDB4NDYsMHg2QSwweEVB
LDB4NjAsMHg1OCwweDU2LDB4QUYsMHhCNCwweDA2LDB4NjIsMHgyQiwweDJGLDB4MjUsMHhCNSwK
LSAgICAweDc2LDB4RUUsMHgxMCwweEJELDB4QUYsMHgyQiwweDA5LDB4MDksMHhCNywweEY2LDB4
RjQsMHhERCwweDU1LDB4QUEsMHgyMiwweDAyLAotICAgIDB4QjcsMHhGNiwweDE1LDB4REUsMHhG
NSwweEVBLDB4MDIsMHgwMCwweEQ3LDB4RjYsMHgzNSwweEU2LDB4RjUsMHhBQiwweDJBLDB4MkEs
Ci0gICAgMHhENywweEY2LDB4NTUsMHhFNiwweDU3LDB4QUUsMHhBMiwweDJBLDB4RDcsMHhGNiww
eDc2LDB4RUUsMHg3NSwweEJFLDB4MkEsMHg4MiwKLSAgICAweEQ3LDB4RjYsMHg3NiwweEVFLDB4
RkQsMHhBQSwweDI4LDB4MDgsMHhENywweEY2LDB4OTYsMHhFRSwweDc1LDB4REUsMHhBQSwweEE4
LAotICAgIDB4RDcsMHhGNiwweDc2LDB4RUUsMHhGRCwweEJGLDB4QUEsMHgyOCwweEQ2LDB4RjYs
MHhCNywweEVFLDB4NzUsMHhGRCwweDZBLDB4RkEsCi0gICAgMHhENywweEY2LDB4OTYsMHhFRSww
eEJGLDB4RUYsMHhBQSwweEFBLDB4OTYsMHhGNiwweEQ3LDB4RUUsMHhBRSwweEJGLDB4RjcsMHhG
RiwKLSAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4RDcsMHhGRiwweEFBLDB4MkEsMHhENiwweEY2
LDB4QjcsMHhFRSwweDc3LDB4RkYsMHhGQSwweDZCLAotICAgIDB4QjcsMHhGNiwweEI2LDB4RUUs
MHhGRiwweEZCLDB4RUYsMHhGRiwweEQ3LDB4RjYsMHhCNiwweEVFLDB4RkQsMHg2RiwweEVCLDB4
RUEsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEE5LDB4QjksMHhCRiwweEZELDB4RDcsMHhG
NiwweEI2LDB4RUUsMHhGRiwweEVBLDB4NjgsMHhGQSwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVF
LDB4NTUsMHhCRiwweDc3LDB4RkYsMHhCNiwweEY2LDB4RDcsMHhFRSwweDhBLDB4QzgsMHg4Miww
eDIyLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHg3QiwweDdCLDB4RkIsMHhCQiwweEQ3LDB4
RjYsMHg5NiwweEVFLDB4QkEsMHhCQSwweEJFLDB4RkUsCi0gICAgMHhENywweEY2LDB4QjcsMHhF
RSwweDJCLDB4MzIsMHgyOCwweDJBLDB4RjcsMHhGNiwweEI2LDB4RjYsMHg4RSwweDgzLDB4QTAs
MHg3MiwKLSAgICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4QTgsMHhCOCwweEZGLDB4RDcsMHhCNiww
eEY2LDB4OTYsMHhFRSwweEEyLDB4NjAsMHg3QSwweEI3LAotICAgIDB4OTYsMHhFRSwweDc1LDB4
RUUsMHgwMCwweEJCLDB4NUYsMHg1QywweEI3LDB4RjYsMHgzNSwweEU2LDB4QTIsMHhFQSwweEVF
LDB4NUYsCi0gICAgMHg1NSwweEU2LDB4MTQsMHhERSwweEE4LDB4QkEsMHhBNywweEFGLDB4OTYs
MHhFRSwweEYzLDB4REQsMHhENywweEJGLDB4QkYsMHgyRiwKLSAgICAweEQ3LDB4RjYsMHgzNCww
eEU2LDB4RjcsMHhGRiwweDBBLDB4MjIsMHhGNywweEY2LDB4OTYsMHhFRSwweEJELDB4MEIsMHhB
MiwweDhBLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBNywweEE3LDB4QTIsMHhFQiwweEY3
LDB4RjYsMHhENywweEY2LDB4RUEsMHg2QSwweEZCLDB4RUQsCi0gICAgMHhGNywweEY2LDB4QjYs
MHhFRSwweEZBLDB4RkEsMHhFQSwweEEyLDB4RDcsMHhGNiwweDk2LDB4RUUsMHg1RSwweEVFLDB4
Q0EsMHg4MCwKLSAgICAweEI2LDB4RUUsMHg3NiwweEVFLDB4N0IsMHhBQiwweEFBLDB4MDAsMHhC
NiwweEVFLDB4NzYsMHhFNiwweEQ1LDB4RkUsMHhGQSwweEZDLAotICAgIDB4OTYsMHhFRSwweDc2
LDB4RTYsMHhFRiwweERFLDB4NkYsMHhCQSwweEI2LDB4RUUsMHg1NiwweEU2LDB4MkEsMHgyQSww
eDJCLDB4MEEsCi0gICAgMHhGNywweEY2LDB4NTUsMHhFNiwweDVFLDB4N0EsMHhFQSwweEFBLDB4
RDcsMHhGNiwweDM0LDB4REUsMHhCNSwweEZGLDB4QUEsMHg4MCwKLSAgICAweEI2LDB4RUUsMHg3
NSwweEU2LDB4NUQsMHhBRiwweEFCLDB4QTAsMHhGNywweEY2LDB4OTYsMHhFRSwweDJELDB4QkQs
MHhFNSwweEJGLAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBQSwweEJCLDB4QkQsMHhCNSww
eDE4LDB4RjcsMHhENywweEY2LDB4RkQsMHhCQSwweEVBLDB4QTgsCi0gICAgMHhGOCwweEY2LDB4
RDcsMHhGNiwweDU2LDB4RjgsMHgwOCwweEFDLDB4RjgsMHhGNiwweEI3LDB4RUUsMHg1NSwweDdB
LDB4QzAsMHgwMCwKLSAgICAweDE4LDB4RkYsMHg5NiwweEU2LDB4ODIsMHgwRCwweEI3LDB4RkUs
MHgxOCwweEZGLDB4RDcsMHhFRSwweEFFLDB4QUUsMHhBRSwweEFELAotICAgIDB4MTgsMHhGRiww
eEY3LDB4RjYsMHhGNywweEQ3LDB4QUYsMHhCRCwweDE4LDB4RkYsMHhENywweEY2LDB4NUEsMHg3
RSwweDdFLDB4N0EsCi0gICAgMHhENywweEY2LDB4OTYsMHhFRSwweEZFLDB4NzIsMHhFRiwweEVC
LDB4QjYsMHhFRSwweDc1LDB4RTYsMHhBQSwweEJBLDB4N0UsMHg3RSwKLSAgICAweDk2LDB4RUUs
MHgxNCwweERFLDB4RTAsMHhFMCwweEU4LDB4N0IsMHg5NiwweEVFLDB4RjMsMHhERCwweDJELDB4
QkQsMHhCNSwweEQ1LAotICAgIDB4NzUsMHhFRSwweEYzLDB4REQsMHhGQywweDc4LDB4RjAsMHhG
OCwweDU1LDB4RTYsMHgxNCwweEU2LDB4OEEsMHhBMywweEE5LDB4RkQsCi0gICAgMHgzNCwweEU2
LDB4OTIsMHhDRCwweDc4LDB4NzgsMHg3MCwweDY4LDB4OTIsMHhDRCwweDUxLDB4QzUsMHgzRSww
eEI1LDB4RDUsMHg5RSwKLSAgICAweDE0LDB4RTYsMHg5MiwweENELDB4MEIsMHgwQiwweDI5LDB4
MEYsMHg1NCwweEU2LDB4MTQsMHhERSwweEVCLDB4REYsMHg1NywweEQ3LAotICAgIDB4MzQsMHhF
NiwweEY0LDB4REQsMHhDMiwweEFBLDB4QUUsMHg2RSwweDE0LDB4REUsMHhCMywweEQ1LDB4MEEs
MHhBOCwweEFBLDB4MkIsCi0gICAgMHgxNCwweERFLDB4RDMsMHhENSwweDM3LDB4MkYsMHgyQSww
eDIwLDB4MzQsMHhFNiwweEY0LDB4REQsMHhFQSwweDdFLDB4NUYsMHg3NiwKLSAgICAweDhCLDB4
OEIsMHgwNiwweDVBLDB4N0UsMHg3RSwweDc4LDB4NzgsMHgwNiwweDVBLDB4QTUsMHg0OSwweERF
LDB4RkEsMHg1OCwweDYwLAotICAgIDB4QTUsMHg0OSwweEMxLDB4MzAsMHg2OCwweEU4LDB4ODIs
MHgwMCwweEE1LDB4NDksMHhBMSwweDI4LDB4RDUsMHhGRiwweEFBLDB4MDgsCi0gICAgMHg0Nyww
eDYyLDB4RTEsMHgzMCwweDU1LDB4RDUsMHhBQiwweDBBLDB4ODgsMHg2QSwweEUxLDB4MzAsMHg1
NSwweEZGLDB4MkEsMHgwMCwKLSAgICAweEU5LDB4NzIsMHgyMywweDM5LDB4NTUsMHhBQiwweDBB
LDB4MjIsMHhFOSwweDcyLDB4ODQsMHg0MSwweDU1LDB4RkEsMHhBMCwweEE4LAotICAgIDB4Njcs
MHg2MiwweDY0LDB4NDEsMHhGNSwweEFBLDB4MDAsMHhBMCwweDg3LDB4NjIsMHg2NCwweDQxLDB4
NTUsMHhGRSwweEE4LDB4QUEsCi0gICAgMHg2OCwweDYyLDB4NDMsMHgzOSwweEJELDB4QUEsMHgy
MiwweEFBLDB4MjcsMHg1QSwweDg0LDB4NDksMHg1RSwweEEwLDB4QTgsMHhBQSwKLSAgICAweDA3
LDB4NUEsMHg4NCwweDQxLDB4NTUsMHgyMCwweDAwLDB4QTAsMHgyNywweDVBLDB4ODQsMHg0OSww
eDU1LDB4MDgsMHgwMCwweEZCLAotICAgIDB4MjcsMHg1QSwweDg0LDB4NDksMHhCRCwweEEwLDB4
ODgsMHhFRiwweDA3LDB4NUEsMHhBNSwweDQ5LDB4QUQsMHgyOCwweDI2LDB4NzcsCi0gICAgMHgy
NywweDVBLDB4ODQsMHg0OSwweEFBLDB4MDAsMHhBRiwweDc3LDB4NDcsMHg1QSwweDg1LDB4NDks
MHhFQiwweEEyLDB4RkIsMHg1NSwKLSAgICAweDA3LDB4NUEsMHg2NCwweDQ5LDB4MkEsMHgwMiww
eEFBLDB4NTUsMHgyNywweDYyLDB4ODQsMHg0OSwweEFBLDB4RjAsMHg3RiwweDU1LAotICAgIDB4
NDcsMHg2MiwweDY0LDB4NDksMHgwMiwweEVBLDB4N0YsMHg1NSwweDI3LDB4NUEsMHg2NSwweDQ5
LDB4MDAsMHhBOCwweDU3LDB4RDUsCi0gICAgMHgyNywweDYyLDB4ODUsMHg0OSwweDBBLDB4OEEs
MHg1NSwweDU1LDB4MDYsMHg1QSwweDY1LDB4NDksMHg4MCwweEUzLDB4REQsMHgzQSwKLSAgICAw
eDQ3LDB4NkEsMHg2NCwweDQ5LDB4RUEsMHhGRiwweDU1LDB4ODIsMHg0NywweDZBLDB4ODQsMHg1
MSwweEZFLDB4NUYsMHhENSwweEU4LAotICAgIDB4MDYsMHg2QSwweEM1LDB4NjEsMHhCQiwweDlG
LDB4QTksMHhBNSwweDA2LDB4NzIsMHhFNSwweDY5LDB4RDQsMHg1RiwweDVGLDB4NUEsCi0gICAg
MHg0NiwweDdBLDB4RTUsMHg2OSwweEY1LDB4RkQsMHhBRiwweEY5LDB4MjYsMHg3MiwweEU1LDB4
NjksMHg2RiwweEZGLDB4QTIsMHgyQSwKLSAgICAweDg4LDB4ODIsMHhFNiwweDY5LDB4N0YsMHhB
RCwweDI5LDB4MkIsMHg0RSwweEFDLDB4QTUsMHg1OSwweDU1LDB4NTcsMHhBRiwweDBBLAotICAg
IDB4NzMsMHhDRCwweEU2LDB4NjEsMHg1NSwweDU1LDB4QUIsMHgwOCwweEIzLDB4RDUsMHg4NCww
eDUxLDB4NTUsMHhERCwweEFBLDB4MDAsCi0gICAgMHgxNCwweERFLDB4ODMsMHg0OSwweDU1LDB4
RkYsMHhBQSwweDAwLDB4MzQsMHhERSwweEU1LDB4NTksMHg1NSwweEZGLDB4MkEsMHgwMCwKLSAg
ICAweDk1LDB4RUUsMHgyNiwweDYyLDB4NTUsMHhGRiwweDJBLDB4MDAsMHhGMywweERELDB4NDYs
MHg2MiwweDU1LDB4QUIsMHgwOCwweDAwLAotICAgIDB4MTQsMHhERSwweDg4LDB4NkEsMHg1NSww
eEFBLDB4MDAsMHgwMCwweDM0LDB4REUsMHgwQSwweDdCLDB4NTUsMHhBQSwweDAwLDB4MDAsCi0g
ICAgMHg1NSwweEU2LDB4NkIsMHg4QiwweDVELDB4QUEsMHgwMCwweDAwLDB4NzUsMHhFNiwweDJE
LDB4OUMsMHg1NSwweEFBLDB4MDAsMHgwMCwKLSAgICAweDk2LDB4RUUsMHg2RSwweEFDLDB4NTUs
MHgyQSwweDAwLDB4MDAsMHg5NiwweEVFLDB4RjAsMHhCQywweDU1LDB4QUEsMHgwMCwweDAwLAot
ICAgIDB4QjYsMHhFRSwweDUyLDB4QzUsMHg3NSwweEFBLDB4MjIsMHg4MCwweEI2LDB4RUUsMHg5
MywweENELDB4RDUsMHhBQSwweDAwLDB4MDAsCi0gICAgMHg5NiwweEVFLDB4RjQsMHhERCwweDU1
LDB4QkIsMHgwMCwweDAwLDB4QjYsMHhGNiwweDE0LDB4REUsMHg1NSwweEFFLDB4QUEsMHgwMCwK
LSAgICAweEI2LDB4RjYsMHgxNSwweERFLDB4RjcsMHhBQSwweDI4LDB4MDAsMHhCNiwweEVFLDB4
MzUsMHhFNiwweDVELDB4QUEsMHgyOCwweDAwLAotICAgIDB4QjYsMHhFRSwweDU1LDB4RTYsMHg3
RCwweEVBLDB4MjIsMHgwMCwweEI2LDB4RUUsMHg1NSwweEU2LDB4RkQsMHgyQSwweDAwLDB4MDAs
Ci0gICAgMHhCNiwweEVFLDB4NzYsMHhFRSwweDU3LDB4QkIsMHgyMiwweDAwLDB4QjYsMHhGNiww
eDU2LDB4RUUsMHhGNywweEFGLDB4MEEsMHgwMCwKLSAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4
NzUsMHhFRCwweEI4LDB4MDAsMHhCNiwweEY2LDB4OTYsMHhFRSwweEY1LDB4RkUsMHhGQSwweDAw
LAotICAgIDB4OTYsMHhGNiwweEI2LDB4RUUsMHhBOCwweEVFLDB4RUUsMHhENSwweEI2LDB4RjYs
MHgxNCwweEU2LDB4QUEsMHhFMCwweDZBLDB4NjAsCi0gICAgMHgzNCwweEU2LDB4NEUsMHhBQyww
eEEwLDB4RTgsMHg2OCwweDdBLDB4QUYsMHhCQywweDA2LDB4NjIsMHhFMCwweEY4LDB4N0UsMHg1
RSwKLSAgICAweDY2LDB4NzIsMHhFNiwweDYxLDB4RkMsMHg3QiwweDdFLDB4NUUsMHhFOSwweDgy
LDB4QzUsMHg2MSwweDNELDB4QkQsMHhCNywweEQ1LAotICAgIDB4NzUsMHhFRSwweDhCLDB4OTMs
MHgwQiwweDI5LDB4MEQsMHgyRCwweDE4LDB4RkYsMHg5NiwweEVFLDB4RjUsMHhGRiwweEFCLDB4
MkIsCi0gICAgMHhGOCwweEY2LDB4QjcsMHhGNiwweEQ1LDB4QkYsMHgyQSwweDA4LDB4RjcsMHhG
NiwweEI3LDB4RUUsMHhGRCwweEFBLDB4MDAsMHgwMCwKLSAgICAweDE3LDB4RkYsMHhENywweEY2
LDB4N0QsMHhCRiwweEVBLDB4QUEsMHgxOCwweEY3LDB4RDcsMHhGNiwweEQ1LDB4QkEsMHgzQiww
eEFBLAotICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhFQSwweEU4LDB4RDAsMHhFOCwweEY3LDB4
RjYsMHhCNiwweEVFLDB4REIsMHhCQiwweEFBLDB4QUIsCi0gICAgMHhENywweEY2LDB4QjYsMHhF
RSwweEJBLDB4MjgsMHgwQSwweDIyLDB4RDcsMHhGNiwweEI3LDB4RUUsMHg4MiwweDgyLDB4MDAs
MHgwMiwKLSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4RjAsMHgzQSwweDgyLDB4ODksMHhENyww
eEY2LDB4QjcsMHhFRSwweDlDLDB4QkUsMHhBQiwweDgyLAotICAgIDB4RDcsMHhGNiwweEI3LDB4
RUUsMHgzRiwweEZCLDB4QUUsMHgwRSwweEQ3LDB4RjYsMHhCNywweEVFLDB4RUEsMHhFMiwweEFB
LDB4QTgsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweEVGLDB4QTIsMHhBMCwweEEwLDB4RDcs
MHhGNiwweEI2LDB4RUUsMHhGMSwweEVCLDB4QTgsMHhBQSwKLSAgICAweEQ3LDB4RjYsMHhCNyww
eEVFLDB4QkYsMHhFQiwweDRBLDB4QUEsMHhENiwweEY2LDB4QjcsMHhFRSwweEQ3LDB4RjUsMHhB
RiwweDhBLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHg3RiwweEZCLDB4RkEsMHhFQSwweEQ3
LDB4RjYsMHhCNiwweEVFLDB4RTMsMHg4QSwweDdELDB4MkYsCi0gICAgMHhENywweEY2LDB4QjYs
MHhFRSwweEVGLDB4NkEsMHgyQiwweDI5LDB4RjcsMHhGNiwweEI2LDB4RUUsMHg1RCwweEZGLDB4
QkYsMHgyQiwKLSAgICAweEY3LDB4RjYsMHhCNiwweEY2LDB4MkIsMHg4QSwweEUyLDB4RjgsMHhE
NywweEY2LDB4NzUsMHhFRSwweEYwLDB4RjgsMHg3RSwweEZFLAotICAgIDB4OTYsMHhFRSwweDc1
LDB4RUUsMHgyNiwweEJGLDB4NjQsMHg2RCwweEI2LDB4RjYsMHg3NSwweEVFLDB4QUIsMHg3Qiww
eDdGLDB4NTUsCi0gICAgMHg5NiwweEVFLDB4MzQsMHhFNiwweEMwLDB4RTgsMHhFRSwweDdBLDB4
NTUsMHhFNiwweEYzLDB4REQsMHhBMCwweEE4LDB4RkEsMHg3RSwKLSAgICAweDU1LDB4RTYsMHhG
MywweERELDB4MkEsMHgyQSwweDJCLDB4MDksMHhCNywweEY2LDB4NTUsMHhFNiwweDJELDB4MkIs
MHgwQiwweDhCLAotICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHgzQSwweEU4LDB4RUEsMHhGRiww
eEQ3LDB4RjYsMHg5NiwweEVFLDB4MDIsMHgzQiwweEFCLDB4MkIsCi0gICAgMHgxNywweEY3LDB4
QjcsMHhGNiwweEZCLDB4RkYsMHhGRCwweDU1LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBRCwweEFE
LDB4NjUsMHg2RCwKLSAgICAweEY3LDB4RjYsMHg5NywweEVFLDB4MjgsMHg4OCwweEFBLDB4OEUs
MHhGNywweEY2LDB4RDcsMHhGNiwweEQ2LDB4RjYsMHg1NSwweDc3LAotICAgIDB4RDcsMHhGNiww
eEI3LDB4RUUsMHg3RSwweEI4LDB4QTgsMHgwOCwweEQ3LDB4RjYsMHg5NiwweEVFLDB4RkIsMHhG
QSwweEVBLDB4MDgsCi0gICAgMHg5NiwweEY2LDB4QjcsMHhFRSwweEJCLDB4REQsMHg3RCwweDU1
LDB4QjcsMHhFRSwweDk2LDB4RUUsMHhGNSwweDdFLDB4NjgsMHg4MCwKLSAgICAweEI2LDB4RUUs
MHg5NiwweEVFLDB4MDMsMHhCNSwweEI2LDB4MkUsMHhGNywweEY2LDB4QjYsMHhFRSwweDdGLDB4
QUQsMHgyRCwweEFELAotICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHg1NSwweDVBLDB4NkEsMHgy
MCwweEQ3LDB4RjYsMHhCNywweEVFLDB4RTUsMHhFRCwweEVGLDB4OTgsCi0gICAgMHgxOCwweEZG
LDB4QjYsMHhGNiwweEJGLDB4QUQsMHhCRSwweEFCLDB4MzgsMHhGRiwweEY4LDB4RjYsMHhGRiww
eEFGLDB4QTksMHhBRiwKLSAgICAweDM5LDB4RkYsMHhGOCwweEY2LDB4NTcsMHg1RSwweDdBLDB4
RkEsMHgxOCwweEY3LDB4RDcsMHhGNiwweEZBLDB4N0IsMHhGQSwweEY4LAotICAgIDB4RjcsMHhG
NiwweDk2LDB4RUUsMHg2OCwweDgwLDB4MDIsMHgwOCwweEY3LDB4RjYsMHhCNiwweEVFLDB4MkQs
MHhCNywweEQ2LDB4N0UsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDAyLDB4MEEsMHgyMCww
eDI5LDB4MzgsMHhGRiwweEQ3LDB4RjYsMHg3RiwweDdCLDB4RkYsMHg3RCwKLSAgICAweEQ3LDB4
RjYsMHg5NiwweEVFLDB4RkUsMHhFQywweEZFLDB4QjgsMHhCNiwweEVFLDB4NTUsMHhFNiwweEZB
LDB4NzgsMHhGOCwweDdBLAotICAgIDB4NzUsMHhFNiwweDE0LDB4REUsMHg2QSwweDZBLDB4NkUs
MHg2OCwweDM0LDB4RTYsMHg5MiwweENELDB4QUUsMHgzRiwweDk1LDB4RDUsCi0gICAgMHg1NSww
eEU2LDB4MTQsMHhFNiwweDcyLDB4NjIsMHg0MiwweDYzLDB4RjQsMHhFNSwweDM0LDB4REUsMHg3
RiwweEZBLDB4RkEsMHhGQSwKLSAgICAweDU1LDB4RUUsMHhCMywweEQ1LDB4NjAsMHg2OCwweEUw
LDB4RTIsMHhCMiwweEQ1LDB4NTEsMHhDNSwweDJGLDB4QjcsMHhGNiwweEY2LAotICAgIDB4MzQs
MHhFNiwweDkyLDB4Q0QsMHgyRiwweDBGLDB4QTksMHgyOSwweDM0LDB4RTYsMHgxNCwweERFLDB4
MDIsMHg4OCwweDBCLDB4RkEsCi0gICAgMHgzNSwweEU2LDB4RjQsMHhERCwweEZBLDB4RkUsMHg5
RSwweEI3LDB4MTQsMHhERSwweEQzLDB4REQsMHgzRSwweEZDLDB4RUUsMHhCQSwKLSAgICAweDE0
LDB4REUsMHhEMywweERELDB4MjgsMHhCQSwweDlGLDB4RTcsMHgxNCwweERFLDB4OTIsMHhDRCww
eEE4LDB4QTgsMHhFQSwweDYwLAotICAgIDB4NTEsMHhDNSwweDg3LDB4NkEsMHg1RSwweDc4LDB4
RTAsMHg4MCwweENCLDB4OTMsMHhDNSwweDUxLDB4NTcsMHg1NywweDVFLDB4RTgsCi0gICAgMHhF
NSwweDU5LDB4NjMsMHg0OSwweEFFLDB4QUYsMHhGNywweEEwLDB4RTUsMHg1OSwweDQyLDB4NDEs
MHgyMiwweDBBLDB4RkYsMHhERiwKLSAgICAweDQ3LDB4NjIsMHg0MywweDQxLDB4MDAsMHhBRSww
eEZGLDB4RTcsMHg2NywweDYyLDB4NDMsMHg0MSwweDAwLDB4QkEsMHg3RiwweEZBLAotICAgIDB4
ODgsMHg2QSwweDg0LDB4NDksMHgyMCwweEZGLDB4NTUsMHhGRiwweDY3LDB4NkEsMHg4NCwweDQ5
LDB4OEEsMHg2RiwweDc1LDB4MjAsCi0gICAgMHhDOSwweDdBLDB4ODQsMHg0OSwweEZGLDB4NUQs
MHg1NSwweDAyLDB4NkIsMHg4QiwweDg0LDB4NDksMHg3RiwweDU1LDB4NTUsMHgwMiwKLSAgICAw
eEVELDB4OUIsMHg4NCwweDQ5LDB4NTUsMHg1NSwweEZGLDB4MDAsMHg2RSwweEFDLDB4QTUsMHg0
OSwweDU1LDB4NTUsMHhGRiwweDAwLAotICAgIDB4RDAsMHhCNCwweEE1LDB4NTEsMHg1NSwweDU1
LDB4RkYsMHgwMCwweDMyLDB4QkQsMHhBNSwweDUxLDB4NTUsMHg1NSwweEVGLDB4MDAsCi0gICAg
MHgzMiwweEM1LDB4QTUsMHg1MSwweDU1LDB4NTUsMHhBQSwweDAwLDB4OTIsMHhDRCwweEE1LDB4
NDksMHg1NSwweEY1LDB4QUEsMHgwMCwKLSAgICAweEYzLDB4REQsMHg4NCwweDQ5LDB4NTUsMHhG
RiwweEFBLDB4MDAsMHgzNCwweEU2LDB4QTUsMHg1MSwweDU1LDB4RkYsMHhBQSwweDAwLAotICAg
IDB4MTQsMHhERSwweDA2LDB4NUEsMHg1NSwweEZGLDB4OEEsMHgwMCwweEIzLDB4RDUsMHhDNSww
eDUxLDB4NTUsMHhBQSwweDAwLDB4MDAsCi0gICAgMHhGNCwweERELDB4NjcsMHg2QSwweDU1LDB4
QUEsMHgwMCwweDAwLDB4MTQsMHhERSwweEU5LDB4NzIsMHg1NSwweEFBLDB4MDAsMHgwMCwKLSAg
ICAweDM1LDB4REUsMHg2QiwweDhCLDB4NTUsMHhBQSwweDA4LDB4MDAsMHgzNSwweEU2LDB4QUQs
MHg5MywweEY1LDB4QUEsMHgwMCwweDAwLAotICAgIDB4MzUsMHhFNiwweDcwLDB4QUMsMHg1NSww
eEFBLDB4MDAsMHgwMCwweDM1LDB4RTYsMHhBOCwweDdBLDB4N0UsMHhGQSwweEUwLDB4RTAsCi0g
ICAgMHg4NywweDdBLDB4ODQsMHg1OSwweEY3LDB4RjYsMHg1NCwweDU0LDB4RTUsMHg2OSwweEE0
LDB4NjEsMHgyMCwweDIyLDB4MjMsMHgzRCwKLSAgICAweDA1LDB4NzIsMHhDNSwweDY5LDB4QkUs
MHhCRiwweDNFLDB4MzcsMHgyNiwweDcyLDB4RTUsMHg2OSwweEZBLDB4QkEsMHhCOCwweEQ3LAot
ICAgIDB4ODgsMHg3QSwweDA2LDB4NzIsMHgyRCwweEJELDB4QjUsMHhENSwweDZFLDB4QjQsMHg2
NywweDcyLDB4MEIsMHgyRCwweEI1LDB4RjUsCi0gICAgMHgzNSwweEU2LDB4MEMsMHhBQywweDJB
LDB4MEIsMHgyRiwweEFELDB4OTYsMHhGNiwweDM1LDB4RTYsMHhCNSwweEFBLDB4QUIsMHgwOSwK
LSAgICAweEI2LDB4RjYsMHg1NSwweEU2LDB4REQsMHhGQiwweEFCLDB4MkEsMHhCNiwweEY2LDB4
NzUsMHhFRSwweDU1LDB4RkYsMHhFQSwweEFBLAotICAgIDB4OTYsMHhGNiwweDc1LDB4RTYsMHg1
RiwweEFFLDB4OEIsMHgwOCwweEI2LDB4RjYsMHg3NSwweEU2LDB4RDcsMHhFRiwweDJBLDB4MjIs
Ci0gICAgMHhCNiwweEY2LDB4OTYsMHhFNiwweDU3LDB4QUIsMHhBRSwweEEyLDB4QjYsMHhGNiww
eDc1LDB4RUUsMHhGRCwweEVFLDB4QjAsMHgzQSwKLSAgICAweEI3LDB4RjYsMHg3NSwweEVFLDB4
QkQsMHhCQiwweEFBLDB4QUEsMHhCNiwweEY2LDB4OTYsMHhFRSwweDdFLDB4Q0EsMHgwMywweDBG
LAotICAgIDB4OTYsMHhGNiwweEI2LDB4RUUsMHg3NiwweDVGLDB4NzcsMHhGRiwweEQ3LDB4RjYs
MHg5NiwweEVFLDB4RDUsMHhGRiwweEZGLDB4QkMsCi0gICAgMHhCNiwweEY2LDB4OTUsMHhFRSww
eEVGLDB4QUEsMHgwQSwweDBBLDB4OTYsMHhGRSwweEI2LDB4RUUsMHg3RCwweEY3LDB4REYsMHhG
RiwKLSAgICAweEI3LDB4RjYsMHhCNiwweEVFLDB4RkYsMHhCRSwweEVCLDB4QUEsMHhENiwweEY2
LDB4OTUsMHhFRSwweEZCLDB4QUEsMHgyOSwweEFGLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUs
MHg3RCwweEFBLDB4MDAsMHgwMiwweEY2LDB4RjYsMHhENywweEY2LDB4NTUsMHg1NywweDdGLDB4
RUIsCi0gICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEQ3LDB4QUIsMHg4MiwweDAwLDB4RjcsMHhG
NiwweEI3LDB4RUUsMHhGNywweDJBLDB4MjIsMHg4MCwKLSAgICAweEY3LDB4RjYsMHhCNiwweEVF
LDB4RkIsMHhFQSwweDhBLDB4MjIsMHhGNywweEY2LDB4QjYsMHhFRSwweEJGLDB4MkEsMHgwMCww
eDAwLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1NSwweDU4LDB4RTIsMHhBMCwweEY4LDB4
RkUsMHhCNiwweEY2LDB4REQsMHhBQSwweDJCLDB4RUEsCi0gICAgMHhENywweEY2LDB4NzUsMHhF
RSwweDg4LDB4ODAsMHhFMCwweDYwLDB4QjYsMHhGNiwweEVGLDB4QkMsMHhBMCwweEU4LDB4RUEs
MHg3QSwKLSAgICAweDUxLDB4Q0QsMHg4NywweDdBLDB4RTAsMHhFOCwweDVBLDB4NUUsMHhDOCww
eDdBLDB4MjYsMHg2QSwweDdDLDB4RkYsMHhGNSwweEY1LAotICAgIDB4NDYsMHg3MiwweEU1LDB4
NjEsMHg3QywweEMwLDB4ODgsMHg2MCwweDY2LDB4NzIsMHhDNSwweDYxLDB4MTUsMHg5NSwweDlF
LDB4QkYsCi0gICAgMHg3NSwweEVFLDB4OEEsMHg5MywweDJELDB4MkQsMHgyRCwweDJELDB4MTgs
MHhGRiwweDk2LDB4RjYsMHgyOSwweDJCLDB4QUIsMHg4QiwKLSAgICAweEY4LDB4RkUsMHgxNyww
eEY3LDB4QUEsMHhBQSwweEFBLDB4RTIsMHgxOCwweEZGLDB4RjcsMHhGNiwweEQ3LDB4RDUsMHhB
RiwweEJFLAotICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHhBRiwweEZGLDB4RUUsMHhCOSwweDE4
LDB4RkYsMHhGNywweEY2LDB4N0UsMHhBQSwweEFBLDB4NkUsCi0gICAgMHhGNywweEY2LDB4RDcs
MHhGNiwweDcwLDB4RTgsMHhFMiwweEE4LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhEQiwweERBLDB4
NUQsMHhENSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NTUsMHg1RCwweDZCLDB4N0IsMHhG
NiwweEY2LDB4RDcsMHhGNiwweDU1LDB4NUYsMHg3RSwweDdGLAotICAgIDB4QjcsMHhGNiwweEQ2
LDB4RUUsMHhCQSwweEVBLDB4QUEsMHhGQiwweEQ3LDB4RjYsMHhCNywweEVFLDB4OEEsMHgwMiww
eDAyLDB4QzgsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweEFBLDB4MjIsMHgyOCwweDJGLDB4
RDcsMHhGNiwweEI3LDB4RUUsMHg4MiwweDAyLDB4MjgsMHgyRSwKLSAgICAweEQ3LDB4RjYsMHhC
NywweEVFLDB4ODAsMHhBOCwweDNFLDB4QTMsMHhENywweEY2LDB4RjcsMHhFRSwweDAwLDB4MEEs
MHg4MiwweDgyLAotICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhGRiwweERBLDB4RkUsMHhCQSww
eEQ3LDB4RjYsMHhCNiwweEVFLDB4OEIsMHg4QSwweEEyLDB4MjgsCi0gICAgMHhENywweEY2LDB4
QjYsMHhFRSwweEUyLDB4RUEsMHhCRSwweEJFLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhGNywweEZG
LDB4RUEsMHhFQSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NTUsMHg1RiwweEJELDB4MkQs
MHgxOCwweEZGLDB4RDcsMHhGNiwweEFELDB4RTksMHhGQiwweDVFLAotICAgIDB4RjcsMHhGNiww
eDk2LDB4RUUsMHhFOCwweEZBLDB4REUsMHg3RSwweEI2LDB4RjYsMHg5NiwweEVFLDB4REUsMHg3
RCwweDc3LDB4N0YsCi0gICAgMHg5NiwweEVFLDB4NzUsMHhFRSwweDcyLDB4RkEsMHg1RSwweDU0
LDB4OTYsMHhFRSwweDE0LDB4RTYsMHhFQSwweEY4LDB4N0EsMHg1QSwKLSAgICAweDU1LDB4RUUs
MHhGNCwweERELDB4QTAsMHhBMiwweEVBLDB4RkYsMHgxNCwweERFLDB4NzEsMHhDRCwweDgwLDB4
RTgsMHg3QywweEQ2LAotICAgIDB4NTUsMHhFNiwweEIyLDB4RDUsMHgwMywweEFELDB4QkQsMHg4
QiwweDc2LDB4RUUsMHgxNCwweERFLDB4MDAsMHhFQiwweDU1LDB4RjIsCi0gICAgMHg5NiwweEVF
LDB4QjIsMHhENSwweDAwLDB4MkEsMHhENywweDVGLDB4OTYsMHhGNiwweEQzLDB4RDUsMHgwMCww
eDAwLDB4QUYsMHhENSwKLSAgICAweEI3LDB4RjYsMHgxNCwweERFLDB4MDgsMHgwMiwweEFBLDB4
RjUsMHhENywweEY2LDB4NTUsMHhFNiwweDAwLDB4ODgsMHhFQiwweEY3LAotICAgIDB4RDcsMHhG
NiwweDk2LDB4RUUsMHgwQSwweDBBLDB4MkQsMHhENSwweEY3LDB4RjYsMHhCNiwweEY2LDB4RUUs
MHgwQSwweDJCLDB4QkQsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDc1LDB4RDYsMHhCNyww
eDI5LDB4RjgsMHhGNiwweEQ3LDB4RjYsMHg1NSwweEZELDB4REYsMHhFNywKLSAgICAweEQ3LDB4
RjYsMHhCNywweEVFLDB4NUUsMHg1OCwweEY4LDB4NzAsMHg5NywweEY2LDB4QjYsMHhFRSwweERG
LDB4RkYsMHhGRiwweDVGLAotICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHgyRSwweEEzLDB4RkUs
MHhGQSwweEQ3LDB4RjYsMHhCNywweEVFLDB4MDgsMHgyQSwweEFGLDB4RjUsCi0gICAgMHhGNyww
eEY2LDB4QjcsMHhFRSwweDgyLDB4QUEsMHhBRiwweDBCLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhF
QSwweDA4LDB4MjAsMHg4MiwKLSAgICAweDE4LDB4RjcsMHhEOCwweEY2LDB4M0QsMHhBRiwweEJG
LDB4RUIsMHgzOCwweEZGLDB4RjcsMHhGNiwweEFCLDB4MkUsMHhBQiwweEFGLAotICAgIDB4Mzks
MHhGRiwweDE4LDB4RjcsMHg3RiwweEVBLDB4RUEsMHgyMiwweDM4LDB4RkYsMHhGOCwweEY2LDB4
NUYsMHhERSwweEZGLDB4NjgsCi0gICAgMHgxOCwweEY3LDB4RDcsMHhGNiwweEJGLDB4RkEsMHhF
QSwweEZFLDB4RjcsMHhGNiwweEI3LDB4RUUsMHhFOCwweEEwLDB4QTIsMHhGQSwKLSAgICAweEY3
LDB4RjYsMHhCNiwweEVFLDB4MEQsMHgyNSwweDE3LDB4RDcsMHhGNywweEY2LDB4OTcsMHhFRSww
eEEwLDB4ODgsMHhBOCwweEVBLAotICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHhFQSwweEZBLDB4
NjAsMHhFMiwweDk2LDB4RUUsMHg1NSwweEU2LDB4RTAsMHhFMCwweEUwLDB4RTAsCi0gICAgMHg1
NSwweEU2LDB4RDMsMHhENSwweDYwLDB4RUEsMHhGMiwweEYwLDB4QjMsMHhENSwweDBGLDB4QkQs
MHgyRSwweDJFLDB4M0UsMHgxNiwKLSAgICAweDU1LDB4RTYsMHhGMywweERELDB4QTMsMHgwQiww
eDA5LDB4QTksMHgxNCwweERFLDB4QjMsMHhERCwweDBBLDB4MEEsMHhBOCwweEJBLAotICAgIDB4
MzQsMHhFNiwweEY0LDB4REQsMHg4MiwweEVBLDB4RUIsMHg4QiwweEQzLDB4RDUsMHgzMCwweEM1
LDB4RDYsMHhEQywweERDLDB4NUMsCi0gICAgMHgxNCwweEU2LDB4NzEsMHhDRCwweDJCLDB4Mjks
MHgyRCwweDBGLDB4MzQsMHhFNiwweDE0LDB4REUsMHhENCwweEY1LDB4OTUsMHg1NSwKLSAgICAw
eDM1LDB4RTYsMHhGMywweERELDB4RUYsMHhFRSwweERBLDB4RTAsMHgxNCwweERFLDB4RjMsMHhE
RCwweEZBLDB4MDAsMHgyOCwweDU0LAotICAgIDB4MTQsMHhERSwweEQzLDB4REQsMHhBQSwweEJD
LDB4RkUsMHgzQSwweEYzLDB4REQsMHgxMCwweEM1LDB4QzAsMHg2MCwweDYwLDB4NjAsCi0gICAg
MHhCNiwweEVFLDB4OTIsMHhDRCwweDdGLDB4RkEsMHhBOCwweDgwLDB4NTUsMHhFNiwweDJELDB4
QTQsMHg1RSwweEFBLDB4MjAsMHgwMCwKLSAgICAweDE0LDB4REUsMHgyOSwweDdCLDB4NTUsMHhB
QSwweDgwLDB4MDAsMHhGNCwweERELDB4QzgsMHg3MiwweDU1LDB4QUEsMHgwMCwweDAwLAotICAg
IDB4MTQsMHhERSwweDA5LDB4N0IsMHg1NSwweEFBLDB4MDIsMHgwMCwweDE1LDB4REUsMHg4Qiww
eDhCLDB4NTUsMHhBQSwweDAwLDB4MDAsCi0gICAgMHgzNSwweEU2LDB4MEQsMHg5QywweDU1LDB4
QUEsMHgwMCwweDAwLDB4NTUsMHhFNiwweDcwLDB4QUMsMHg1NSwweEFBLDB4MDgsMHgwMCwKLSAg
ICAweDU1LDB4RTYsMHhGMSwweEJDLDB4NTUsMHhBQSwweDBBLDB4MDAsMHg3NiwweEU2LDB4MzIs
MHhDNSwweDU3LDB4QUIsMHgyOCwweDAwLAotICAgIDB4NzYsMHhFRSwweDcyLDB4Q0QsMHhENSww
eEJBLDB4MDgsMHgwMCwweDc1LDB4RUUsMHhEMywweEQ1LDB4NTUsMHhCQiwweDIwLDB4MDAsCi0g
ICAgMHg3NSwweEVFLDB4RDMsMHhENSwweDU1LDB4RUEsMHgwMCwweDAwLDB4NzUsMHhFRSwweEQ0
LDB4RDUsMHhERCwweEFBLDB4ODIsMHgwMCwKLSAgICAweDc2LDB4RUUsMHhGNCwweERELDB4NzUs
MHg4MiwweDAyLDB4MDAsMHg5NiwweEY2LDB4MTQsMHhERSwweDU3LDB4RUUsMHhBQSwweDBBLAot
ICAgIDB4OTUsMHhFRSwweDM0LDB4RTYsMHg1NSwweEJCLDB4QUEsMHgwMCwweDk2LDB4RUUsMHgz
NCwweEU2LDB4N0YsMHhBRSwweDhBLDB4MDgsCi0gICAgMHg5NiwweEVFLDB4MzQsMHhFNiwweEQ3
LDB4RUEsMHhBQSwweDg4LDB4OTYsMHhFRSwweDU1LDB4RTYsMHhGRCwweEFGLDB4QTgsMHhBOCwK
LSAgICAweDk2LDB4RUUsMHgzNCwweEU2LDB4RkQsMHhBOCwweEE4LDB4MDgsMHhCNywweEY2LDB4
NTUsMHhFNiwweERELDB4RkYsMHhCRiwweDJCLAotICAgIDB4OTYsMHhFRSwweDc1LDB4RUUsMHhG
RCwweDhCLDB4MjMsMHgwMCwweDk2LDB4RUUsMHg3NiwweEVFLDB4NTUsMHhGMCwweDAwLDB4MDAs
Ci0gICAgMHhCNiwweEY2LDB4NzYsMHhFRSwweEY1LDB4RkQsMHhCQiwweEFELDB4QjYsMHhGNiww
eDRELDB4QUMsMHg3OCwweDZBLDB4NzgsMHg2OCwKLSAgICAweEM4LDB4ODIsMHg4MywweDYxLDB4
NTQsMHhEOCwweDdDLDB4RkMsMHhFNSwweDY5LDB4ODQsMHg2MSwweDNCLDB4NTcsMHhGRiwweEJG
LAotICAgIDB4MjYsMHg3MiwweDg0LDB4NjEsMHgyRiwweDI3LDB4QkYsMHhCRiwweDI2LDB4NzIs
MHhFNSwweDY5LDB4REYsMHhGMCwweEE4LDB4MDIsCi0gICAgMHgyNywweDcyLDB4QTQsMHg2OSww
eDIwLDB4MkIsMHgyRSwweDk2LDB4RTgsMHg4MiwweDI2LDB4NzIsMHgzRCwweEQ1LDB4RDUsMHg1
NSwKLSAgICAweDUxLDB4Q0QsMHhBOCwweDgyLDB4MEIsMHgyRCwweEJELDB4QjUsMHg5NiwweEY2
LDB4MzEsMHhDRCwweDBBLDB4MEIsMHgyRiwweDNELAotICAgIDB4OTYsMHhGNiwweEI2LDB4RUUs
MHhBMywweEE4LDB4QTAsMHg4MCwweEI2LDB4RjYsMHg5NiwweEVFLDB4RUYsMHgyQiwweEJBLDB4
QTgsCi0gICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweDJGLDB4RTgsMHgyQiwweEE3LDB4QjYsMHhG
NiwweDk2LDB4RUUsMHhCRiwweEJGLDB4RkEsMHhBOCwKLSAgICAweEI2LDB4RjYsMHg5NiwweEVF
LDB4QjgsMHhFQSwweEFBLDB4MkYsMHhCNiwweEY2LDB4OTYsMHhFRSwweEYzLDB4QkIsMHhGQiww
eEJBLAotICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHhFQSwweEZBLDB4RkUsMHg5RiwweEI3LDB4
RjYsMHg5NiwweEVFLDB4MDcsMHhCQiwweEU4LDB4OEEsCi0gICAgMHhCNiwweEY2LDB4OTYsMHhF
RSwweDg4LDB4QUEsMHhGRiwweEFCLDB4QjYsMHhGNiwweDk2LDB4RUUsMHgwRSwweDBGLDB4ODIs
MHg4MiwKLSAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4RUEsMHhBQiwweEJBLDB4QTgsMHhCNiww
eEY2LDB4OTcsMHhFRSwweDhCLDB4QTAsMHgwQSwweDIyLAotICAgIDB4QjYsMHhGNiwweEQ3LDB4
RUUsMHgwOCwweEEwLDB4QTgsMHhFOCwweEQ3LDB4RjYsMHhCNiwweEVFLDB4REQsMHgxRCwweEFC
LDB4MjIsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEI1LDB4MjUsMHgyMywweDBBLDB4RDcs
MHhGRSwweEY3LDB4RjYsMHhERCwweDc3LDB4NUQsMHhGNSwKLSAgICAweEY3LDB4RjYsMHhENyww
eEY2LDB4ODgsMHhBQSwweEEyLDB4MDgsMHgxNywweEZGLDB4RDcsMHhGNiwweDZFLDB4NkUsMHhG
QiwweEVGLAotICAgIDB4MTcsMHhGRiwweEQ3LDB4RjYsMHhFRCwweEFELDB4QkYsMHhCRiwweEY3
LDB4RkUsMHhGNywweEY2LDB4RkYsMHhERiwweDc3LDB4RjcsCi0gICAgMHhENywweEZFLDB4Rjcs
MHhGNiwweEY3LDB4RUQsMHhGRiwweEFCLDB4RjcsMHhGRSwweEI2LDB4RjYsMHhBOCwweEFBLDB4
RUEsMHg3QSwKLSAgICAweEI3LDB4RjYsMHg5MiwweEQ1LDB4ODAsMHhFMCwweEU4LDB4N0EsMHhE
MiwweERELDB4QTcsMHg4MiwweEEwLDB4RTgsMHhFOCwweDdBLAotICAgIDB4OEEsMHg5MywweDI2
LDB4NzIsMHg3QywweDVFLDB4RkYsMHg3RCwweEE3LDB4ODIsMHgyNiwweDcyLDB4RjYsMHhFNyww
eEJBLDB4QUEsCi0gICAgMHhBNywweDdBLDB4MDUsMHg2QSwweDdGLDB4RkUsMHhFQSwweENFLDB4
ODcsMHg3QSwweEU0LDB4NjEsMHhGNywweDk1LDB4MzcsMHgzNywKLSAgICAweDc1LDB4RUUsMHhD
QywweEEzLDB4MkQsMHgyRCwweDJELDB4MjksMHhGNywweEY2LDB4OTYsMHhGNiwweDAzLDB4MDks
MHgwQiwweDAyLAotICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHhGNywweEU1LDB4RkYsMHhCNiww
eDE3LDB4RkYsMHhGNywweEY2LDB4RUYsMHhCRCwweEVELDB4OUYsCi0gICAgMHhGOCwweEZFLDB4
MTcsMHhGNywweDdGLDB4NzcsMHhGRiwweEZGLDB4MTgsMHhGRiwweEY3LDB4RjYsMHhGOCwweDI4
LDB4RjAsMHg0QSwKLSAgICAweDE3LDB4RkYsMHhENywweEY2LDB4RkEsMHhFQSwweEFBLDB4N0Es
MHhGNywweEY2LDB4RDcsMHhGNiwweDc3LDB4REQsMHgzRCwweDJELAotICAgIDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHhFRiwweERELDB4RkQsMHhGQSwweEY3LDB4RjYsMHhENywweEY2LDB4RDYsMHhG
RiwweEZCLDB4QkIsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweDBBLDB4MDAsMHg4OCwweDIw
LDB4RDcsMHhGNiwweEY2LDB4RUUsMHgwMiwweDIwLDB4MjgsMHgyOCwKLSAgICAweEY3LDB4RjYs
MHhCNiwweEVFLDB4QkQsMHhBQSwweDJBLDB4QUUsMHhENywweEY2LDB4QjYsMHhFRSwweDA4LDB4
QTIsMHg4MCwweDA4LAotICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHgwOCwweEJFLDB4MjAsMHg4
MCwweEQ3LDB4RjYsMHhENiwweEVFLDB4QTgsMHhBQSwweEFBLDB4QUEsCi0gICAgMHhENywweEY2
LDB4QjYsMHhFRSwweDIwLDB4QTgsMHhBOCwweDIwLDB4RDcsMHhGNiwweEY3LDB4RUUsMHgyMCww
eDIwLDB4RTgsMHhBMCwKLSAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4QkUsMHhGQSwweEFFLDB4
QkUsMHhGNywweEY2LDB4RDcsMHhGNiwweDU1LDB4NTUsMHhGNSwweDJELAotICAgIDB4RjcsMHhG
RSwweEQ3LDB4RUUsMHhBQiwweDhBLDB4RTAsMHg3QSwweEY3LDB4RjYsMHhCNiwweEY2LDB4RTAs
MHg3QSwweDVFLDB4NTcsCi0gICAgMHhENiwweEY2LDB4OTYsMHhFRSwweDVFLDB4REUsMHg1RSww
eDVGLDB4NzUsMHhGNiwweDk2LDB4RUUsMHg1NSwweEY3LDB4RkQsMHhFNywKLSAgICAweDk2LDB4
RUUsMHgzNCwweEU2LDB4QUEsMHhCQSwweEYwLDB4N0EsMHg1NSwweEU2LDB4RjMsMHhERCwweDdD
LDB4N0MsMHg3QSwweDVFLAotICAgIDB4RjMsMHhERCwweDkyLDB4RDUsMHhDMiwweEZBLDB4Njgs
MHhGMiwweDM0LDB4RTYsMHg1MSwweENELDB4RjcsMHg5RCwweDI3LDB4MEIsCi0gICAgMHhCNiww
eEY2LDB4MTMsMHhERSwweEFELDB4MkIsMHgwQSwweDAyLDB4QjYsMHhGNiwweDc2LDB4RUUsMHg3
RSwweDA4LDB4MDgsMHgyMCwKLSAgICAweDk2LDB4RUUsMHhGNCwweERELDB4N0UsMHhGOCwweDgw
LDB4MDAsMHg1NSwweEVFLDB4RDMsMHhENSwweDU3LDB4RkEsMHg4QSwweDAwLAotICAgIDB4NTUs
MHhFRSwweEYzLDB4REQsMHhGRCwweEZELDB4MkMsMHgwMiwweDc1LDB4RUUsMHgxNCwweERFLDB4
QUIsMHhCNSwweEZBLDB4MEEsCi0gICAgMHg5NiwweEVFLDB4MzQsMHhFNiwweDJCLDB4QkQsMHhG
NSwweDdBLDB4RDYsMHhGNiwweDU1LDB4RTYsMHgwQSwweEFGLDB4RUQsMHhGNSwKLSAgICAweEY4
LDB4RjYsMHg5NiwweEVFLDB4MEEsMHhBQiwweEJGLDB4RDUsMHhGNywweEY2LDB4QjYsMHhGNiww
eEEyLDB4QUEsMHgyQiwweEE3LAotICAgIDB4RjgsMHhGNiwweEI2LDB4RUUsMHg3QiwweEZBLDB4
RTgsMHhBQSwweEQ3LDB4RjYsMHhCNywweEVFLDB4RTcsMHhBRiwweDIyLDB4MDIsCi0gICAgMHhE
NywweEY2LDB4OTYsMHhFRSwweEZFLDB4NkEsMHhGMCwweDIwLDB4RDcsMHhGNiwweDk2LDB4RUUs
MHg4RCwweEFELDB4RjcsMHhCRSwKLSAgICAweEY3LDB4RjYsMHhCNywweEVFLDB4MkYsMHhCQiww
eEFCLDB4QUIsMHgxOCwweEZGLDB4RDcsMHhGNiwweEZGLDB4QkYsMHgyQiwweEFFLAotICAgIDB4
MTgsMHhGNywweEY4LDB4RjYsMHhBRCwweEQ2LDB4RDYsMHhFRSwweDE4LDB4RjcsMHhGOCwweEY2
LDB4MjcsMHg5NSwweEQ1LDB4RjcsCi0gICAgMHgzOSwweEZGLDB4RjcsMHhGNiwweDAyLDB4MkIs
MHgwQiwweEI3LDB4MzgsMHhGRiwweEY4LDB4RjYsMHhFMCwweEE4LDB4MjAsMHgwMiwKLSAgICAw
eDE4LDB4RkYsMHhENywweEVFLDB4RkUsMHhGOCwweEZDLDB4NzgsMHhCNywweEY2LDB4RDcsMHhF
RSwweEZELDB4REIsMHhGRiwweEJCLAotICAgIDB4QjYsMHhFRSwweDc2LDB4RTYsMHgyOCwweEI4
LDB4NTgsMHg1OCwweEQ3LDB4RjYsMHg5NiwweEVFLDB4ODAsMHg4QSwweDA5LDB4MEQsCi0gICAg
MHhENywweEY2LDB4OTYsMHhFRSwweEUyLDB4RTIsMHg2QSwweDdBLDB4QjYsMHhFRSwweDU1LDB4
RTYsMHg2MiwweDZFLDB4RUUsMHhFRiwKLSAgICAweDc1LDB4RUUsMHhEMywweEQ1LDB4NkEsMHg2
QSwweDdBLDB4NzgsMHg3MSwweENELDB4RUYsMHhCQywweDNDLDB4MTYsMHgzNCwweEQ0LAotICAg
IDB4NTUsMHhFRSwweEIyLDB4RDUsMHg4MywweDBCLDB4MDksMHgwRCwweDU1LDB4RTYsMHhGMyww
eERELDB4NTcsMHg1RSwweDVDLDB4NUUsCi0gICAgMHgzNCwweEU2LDB4RjQsMHhERCwweDg5LDB4
QkQsMHhBRiwweEJELDB4MzQsMHhFNiwweDMwLDB4QzUsMHg1RSwweDVDLDB4NUEsMHg1OCwKLSAg
ICAweDc1LDB4RUUsMHgzMCwweEM1LDB4MkQsMHgyRCwweDJELDB4QkQsMHhCNiwweEY2LDB4MTQs
MHhERSwweDc3LDB4ODAsMHg4MCwweDIyLAotICAgIDB4OTYsMHhFRSwweEY0LDB4REQsMHg3Riww
eEZBLDB4QTAsMHgwOCwweDc1LDB4RUUsMHhGMywweERELDB4NTcsMHhGRiwweEE4LDB4MDAsCi0g
ICAgMHg1NSwweEU2LDB4RjMsMHhERCwweDVGLDB4NzcsMHhGRiwweEY4LDB4MTQsMHhERSwweDMx
LDB4QzUsMHg2MiwweEM4LDB4ODAsMHgwMCwKLSAgICAweDk2LDB4RjYsMHhCNiwweEVFLDB4QTUs
MHhENywweDc1LDB4NzUsMHhCNiwweEVFLDB4NzYsMHhFRSwweDVELDB4RUUsMHhBQSwweEEwLAot
ICAgIDB4OTUsMHhFRSwweDU1LDB4RTYsMHhGRSwweEJFLDB4MDgsMHgwMCwweEI2LDB4RUUsMHg1
NSwweEU2LDB4REQsMHhGRiwweEFFLDB4OEIsCi0gICAgMHhCNiwweEVFLDB4NTUsMHhFNiwweDU3
LDB4QkYsMHhBQSwweDAyLDB4QjYsMHhFRSwweDU0LDB4RTYsMHhGNSwweEJBLDB4QUEsMHhBMCwK
LSAgICAweEI2LDB4RUUsMHg1NSwweEU2LDB4N0YsMHhCRiwweEFBLDB4ODgsMHhCNiwweEVFLDB4
NTUsMHhFNiwweEQ3LDB4RkYsMHhBQSwweDAwLAotICAgIDB4QjYsMHhFRSwweDc1LDB4RTYsMHhE
NSwweEJGLDB4QUYsMHg4MCwweEI2LDB4RUUsMHg3NSwweEU2LDB4NUQsMHhGQSwweEZBLDB4OEEs
Ci0gICAgMHhCNiwweEVFLDB4NzUsMHhFRSwweDVGLDB4QkEsMHhBQSwweDBBLDB4QjYsMHhGNiww
eDc1LDB4RTYsMHhGNywweEFGLDB4OEEsMHgyMCwKLSAgICAweDk2LDB4RUUsMHg3NSwweEVFLDB4
RkYsMHg4OCwweDgwLDB4ODAsMHg5NiwweEVFLDB4NzUsMHhFRSwweEZFLDB4QzgsMHgwOCwweDIw
LAotICAgIDB4OTYsMHhFRSwweDc1LDB4RUUsMHhCNywweDhBLDB4MjAsMHgyOCwweEI2LDB4RUUs
MHg3NSwweEVFLDB4REQsMHhGQSwweEZGLDB4REUsCi0gICAgMHg5NiwweEVFLDB4NzUsMHhFRSww
eEE4LDB4QUUsMHhGRSwweDJFLDB4NzYsMHhGNiwweDk2LDB4RUUsMHg3RCwweDdGLDB4N0YsMHhG
OSwKLSAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4N0YsMHg3MiwweEMyLDB4ODYsMHhCNiwweEY2
LDB4OTYsMHhFRSwweDc5LDB4QUEsMHgyQSwweDAyLAotICAgIDB4QjYsMHhGNiwweDk2LDB4RUUs
MHhGRiwweDBCLDB4M0UsMHhBMCwweEQ2LDB4RjYsMHg5NiwweEVFLDB4OUQsMHhGRiwweDA4LDB4
MkEsCi0gICAgMHhENiwweEY2LDB4OTYsMHhFRSwweEZGLDB4QUEsMHhBQSwweDJBLDB4RDYsMHhG
NiwweDk2LDB4RUUsMHhERiwweEY3LDB4QjMsMHhCQSwKLSAgICAweEQ2LDB4RjYsMHg5NiwweEVF
LDB4RjUsMHg1QiwweEZFLDB4Q0EsMHgzNCwweEU2LDB4QUEsMHg5QiwweDYwLDB4NzAsMHg2MCww
eDYwLAotICAgIDB4ODcsMHg3QSwweEE0LDB4NjEsMHg1QywweEZDLDB4RkUsMHhGRSwweEU1LDB4
NjksMHg4NCwweDYxLDB4RkYsMHg1MywweEY4LDB4QUEsCi0gICAgMHhDNSwweDY5LDB4NjQsMHg2
MSwweDBBLDB4MkQsMHg4QSwweDBBLDB4NDgsMHg3QSwweEM1LDB4NjksMHgyQiwweDhELDB4REQs
MHg1NSwKLSAgICAweDA2LDB4NzIsMHhDNiwweDY5LDB4QkMsMHhFRSwweDg4LDB4MDAsMHg4OCww
eDgyLDB4MDYsMHg3MiwweDE1LDB4NTUsMHhENSwweEY1LAotICAgIDB4NEIsMHg5QiwweDA2LDB4
NkEsMHgyRiwweEJELDB4RkQsMHhGRCwweEQzLDB4REQsMHhFOSwweDgyLDB4MEEsMHgwQiwweDJE
LDB4QjUsCi0gICAgMHg5NiwweEY2LDB4RjMsMHhERCwweDAyLDB4MDIsMHgwMywweDBELDB4QjYs
MHhGNiwweDk2LDB4RUUsMHhBOCwweEEwLDB4QTIsMHhBQSwKLSAgICAweEQ2LDB4RjYsMHg5Niww
eEVFLDB4RkUsMHhGRiwweEZGLDB4M0YsMHhENiwweEY2LDB4OTcsMHhFRSwweEVGLDB4QUYsMHhB
QiwweEVBLAotICAgIDB4QjcsMHhGNiwweEI1LDB4RUUsMHhBOCwweEFBLDB4QUEsMHhBQSwweEI2
LDB4RjYsMHg5NiwweEVFLDB4RUUsMHhBMiwweDIwLDB4ODgsCi0gICAgMHhCNiwweEY2LDB4OTYs
MHhFRSwweEVGLDB4MkEsMHhBQSwweDJBLDB4RDcsMHhGNiwweDk2LDB4RUUsMHhFQiwweEJCLDB4
QkEsMHhBQSwKLSAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4M0MsMHhCQiwweEI4LDB4MDgsMHhC
NiwweEY2LDB4OTYsMHhFRSwweDg4LDB4RTIsMHhBOCwweDAwLAotICAgIDB4QjYsMHhGNiwweDk2
LDB4RUUsMHg4MCwweDAyLDB4MDAsMHhDMCwweEI2LDB4RjYsMHhEOCwweEVFLDB4MDAsMHhBMiww
eDA4LDB4QTAsCi0gICAgMHhCNiwweEY2LDB4RDYsMHhFRSwweEFBLDB4RTgsMHhGOCwweEI4LDB4
RjcsMHhGNiwweEI2LDB4RUUsMHgzRiwweEJCLDB4QkYsMHgyRiwKLSAgICAweEQ3LDB4RkUsMHhG
NywweEY2LDB4NUQsMHg1NywweDVGLDB4REYsMHhGNywweEZFLDB4RjcsMHhGNiwweEQ3LDB4Rjcs
MHg1RiwweERGLAotICAgIDB4MTcsMHhGRiwweEY3LDB4RjYsMHg3RCwweEZELDB4RjUsMHhGOSww
eEY2LDB4RkUsMHhGNywweEY2LDB4N0QsMHhGNywweEZGLDB4REYsCi0gICAgMHhGNywweEY2LDB4
RDYsMHhGNiwweDJBLDB4MkEsMHgyMiwweDg4LDB4RDcsMHhGRSwweEY3LDB4RjYsMHhGNSwweDU3
LDB4RjUsMHg5NSwKLSAgICAweEY3LDB4RkUsMHhENywweEY2LDB4RUIsMHg4QSwweEVBLDB4NUEs
MHhCNiwweEY2LDB4RDMsMHhERCwweDAwLDB4ODAsMHhFMCwweDcwLAotICAgIDB4MzUsMHhFRSww
eDhCLDB4OUIsMHhBMCwweEU4LDB4N0EsMHg3RSwweDZGLDB4QjQsMHg4NywweDdBLDB4NzgsMHg1
RSwweDU3LDB4NTUsCi0gICAgMHg4NywweDdBLDB4NDcsMHg3QSwweDhBLDB4ODAsMHgwRSwweEE3
LDB4QTcsMHg4MiwweDQ2LDB4NzIsMHhCRCwweDZCLDB4NkEsMHhBQSwKLSAgICAweDg3LDB4N0Es
MHgyNiwweDcyLDB4QzIsMHg1QSwweDZBLDB4RTAsMHg4QiwweDlCLDB4MjYsMHg3MiwweDk1LDB4
OTUsMHgzNSwweDNELAotICAgIDB4QjcsMHhGNiwweDZFLDB4QjQsMHgyRCwweDJELDB4MkQsMHgy
QiwweDE3LDB4RkYsMHhENywweEY2LDB4QUQsMHg4RiwweEFELDB4RkIsCi0gICAgMHgxOCwweEZG
LDB4RjcsMHhGNiwweEJCLDB4QUIsMHhBQiwweEFBLDB4MTcsMHhGRiwweEY4LDB4RjYsMHhBQSww
eEVGLDB4MkUsMHgyQSwKLSAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4QUIsMHhBQSwweEU4LDB4
QTAsMHgxOCwweEZGLDB4RjcsMHhFRSwweDgyLDB4ODIsMHhBMCwweDhBLAotICAgIDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHg2MCwweEEwLDB4RTAsMHhFMCwweEY3LDB4RjYsMHhENywweEY2LDB4QUIs
MHhBOCwweEEyLDB4QjgsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEYzLDB4RDUsMHhGRiww
eEZGLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3RiwweEJGLDB4QUQsMHhFRCwKLSAgICAweEY3LDB4
RjYsMHhCNiwweEVFLDB4QkYsMHhBRSwweEVBLDB4RkEsMHhGNywweEY2LDB4QjYsMHhFRSwweEVB
LDB4QUIsMHhBRSwweEZGLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3RiwweEFGLDB4QUQs
MHhBRCwweEY3LDB4RjYsMHhENywweEY2LDB4RDUsMHg3NSwweDVGLDB4N0YsCi0gICAgMHhCNyww
eEY2LDB4RjcsMHhFRSwweEFBLDB4QUEsMHhCQSwweEJFLDB4RDcsMHhGNiwweEY3LDB4RUUsMHgw
MCwweEI4LDB4MjgsMHg4MiwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NjksMHhGRCwweDU1
LDB4NzksMHhGNywweEY2LDB4QjYsMHhFRSwweEZFLDB4QUEsMHhBRiwweEFGLAotICAgIDB4Rjcs
MHhGNiwweEQ3LDB4RjYsMHhENSwweERGLDB4MUUsMHgzNywweDE3LDB4RkYsMHhENywweEY2LDB4
QkQsMHhFOSwweEFBLDB4RkUsCi0gICAgMHhGNywweEY2LDB4OTYsMHhFRSwweEUwLDB4RjgsMHg2
OCwweEZFLDB4QjYsMHhGNiwweDk2LDB4RUUsMHhBQSwweEFBLDB4RkIsMHhGQiwKLSAgICAweDk2
LDB4RUUsMHg1NSwweEVFLDB4MDAsMHg4MCwweEMwLDB4ODAsMHg5NiwweEVFLDB4NTUsMHhFRSww
eEMyLDB4QTIsMHhGMCwweDU4LAotICAgIDB4NTUsMHhFNiwweDE0LDB4REUsMHhBMCwweEY4LDB4
NUEsMHg1RiwweDM0LDB4RTYsMHhEMywweEQ1LDB4RUMsMHhERSwweEZFLDB4REYsCi0gICAgMHg1
NSwweEU2LDB4RDMsMHhENSwweDdGLDB4QkQsMHhCRiwweDBGLDB4QjcsMHhGNiwweDE0LDB4REUs
MHhBRCwweDJCLDB4MjMsMHgwQSwKLSAgICAweEY3LDB4RjYsMHhCNywweEY2LDB4RDUsMHg1NSww
eEJCLDB4QkUsMHhENywweEY2LDB4QjYsMHhGNiwweEZGLDB4OEMsMHhCRSwweEVFLAotICAgIDB4
RDcsMHhGNiwweDk2LDB4RUUsMHhFRiwweEY4LDB4RkEsMHhGQSwweEI3LDB4RjYsMHg3NiwweEVF
LDB4N0EsMHhBMCwweDIwLDB4MDIsCi0gICAgMHhCNiwweEY2LDB4MzUsMHhFNiwweERGLDB4RkEs
MHgwMCwweDAwLDB4RDYsMHhGNiwweDU1LDB4RTYsMHhENSwweDc1LDB4RTIsMHg4OCwKLSAgICAw
eEI2LDB4RUUsMHg3NSwweEVFLDB4NUYsMHhBRCwweEZCLDB4QjgsMHhCNiwweEVFLDB4NTUsMHhF
NiwweDVELDB4QUEsMHgwMCwweDAwLAotICAgIDB4QjYsMHhFRSwweDc1LDB4RTYsMHhCRCwweEQ3
LDB4RkEsMHhBQywweEQ3LDB4RjYsMHg3NiwweEU2LDB4MEIsMHhBQiwweEJGLDB4REYsCi0gICAg
MHhGNywweEY2LDB4QjYsMHhFRSwweEFBLDB4OEEsMHgyRiwweDM1LDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHhGNSwweEJGLDB4RkIsMHhCQSwKLSAgICAweEY3LDB4RjYsMHhCNywweEVFLDB4RkEsMHhG
QSwweEE4LDB4QTIsMHhENywweEY2LDB4OTcsMHhFRSwweDlFLDB4RUUsMHhBQSwweEEyLAotICAg
IDB4RjgsMHhGNiwweEI3LDB4RUUsMHgyRiwweEFELDB4M0YsMHhBQiwweEQ3LDB4RkUsMHgxOCww
eEY3LDB4RkYsMHhGQSwweEVGLDB4QUUsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEFFLDB4
M0IsMHhFRCwweDk1LDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRiwweEFCLDB4QUUsMHhERSwKLSAg
ICAweDE4LDB4RjcsMHhGOCwweEY2LDB4MzcsMHhCNiwweDVFLDB4RjcsMHgzOCwweEZGLDB4Rjcs
MHhGNiwweDgyLDB4MjIsMHgyQiwweEFGLAotICAgIDB4MzgsMHhGRiwweEY3LDB4RjYsMHg1RSww
eDYyLDB4NjIsMHg2OCwweEY3LDB4RjYsMHg5NiwweEVFLDB4QkEsMHhGQSwweDdDLDB4N0UsCi0g
ICAgMHhCNiwweEVFLDB4NTUsMHhFNiwweDdBLDB4NzgsMHhGRSwweDdCLDB4RDcsMHhGNiwweDU0
LDB4RTYsMHgwQiwweDBCLDB4MkQsMHgyRCwKLSAgICAweEQ3LDB4RjYsMHgzNCwweERFLDB4QTAs
MHhGOCwweEZBLDB4NzgsMHg5NiwweEVFLDB4MzQsMHhFNiwweDhGLDB4QkYsMHhERCwweEY1LAot
ICAgIDB4NTUsMHhFNiwweDMxLDB4QzUsMHhFMCwweDYwLDB4NjgsMHg3OCwweDMxLDB4QzUsMHhE
MCwweEJDLDB4OUMsMHgxNiwweDNGLDB4MkYsCi0gICAgMHg1NSwweEU2LDB4NzIsMHhDRCwweDA5
LDB4MkQsMHgyRCwweDJELDB4NTUsMHhFNiwweEIyLDB4RDUsMHhGQywweEY4LDB4NTgsMHg3QSwK
LSAgICAweDE0LDB4REUsMHhCMiwweEQ1LDB4MkEsMHhBRSwweDM1LDB4MTUsMHg1NSwweEU2LDB4
MTAsMHhCRCwweDc4LDB4NzgsMHg3QSwweDc4LAotICAgIDB4MTQsMHhERSwweEYwLDB4QkMsMHgy
RCwweDJELDB4QkQsMHhGNSwweEI2LDB4RjYsMHg5MiwweENELDB4MjIsMHgwQSwweEFGLDB4QkQs
Ci0gICAgMHg5NiwweEVFLDB4NTUsMHhFRSwweEY4LDB4RTIsMHhGMiwweEZGLDB4OTUsMHhFRSww
eDU1LDB4RTYsMHhFQiwweEZGLDB4RjcsMHg1NSwKLSAgICAweDk1LDB4RUUsMHg1NSwweEU2LDB4
NTcsMHg3QiwweEZGLDB4MkYsMHg5NiwweEVFLDB4MzQsMHhFNiwweDVELDB4OEUsMHhBRSwweEJF
LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg1NiwweERFLDB4NkEsMHg3NSwweEQ2LDB4RjYs
MHhCNiwweEVFLDB4NUQsMHg3NSwweDZGLDB4RTUsCi0gICAgMHhGNiwweEY2LDB4OTYsMHhFRSww
eERELDB4RjUsMHg3RiwweDdFLDB4RDYsMHhGNiwweDk2LDB4RUUsMHhFQiwweEZCLDB4QkEsMHg3
QiwKLSAgICAweDk2LDB4RjYsMHhCNiwweEVFLDB4N0YsMHg3NywweDlGLDB4NzUsMHhENSwweEY2
LDB4OTYsMHhFRSwweDdBLDB4QkIsMHhFRSwweEJBLAotICAgIDB4RDcsMHhGNiwweDk2LDB4RUUs
MHg3RSwweEZFLDB4M0EsMHgyQSwweDk2LDB4RjYsMHhENiwweEVFLDB4RUEsMHhCQiwweEJCLDB4
QkYsCi0gICAgMHhCNiwweEVFLDB4OTYsMHhFRSwweEIwLDB4ODAsMHg4OCwweEI4LDB4QjYsMHhF
RSwweDk2LDB4RUUsMHgyQSwweDJFLDB4MkEsMHgwMiwKLSAgICAweEQ3LDB4RjYsMHg5NiwweEVF
LDB4QkYsMHhGQSwweEZBLDB4RUIsMHg5NSwweEY2LDB4RDYsMHhFRSwweEFBLDB4RUYsMHhCRiww
eEFGLAotICAgIDB4QjYsMHhFRSwweDc1LDB4RUUsMHhGQSwweEY4LDB4RTAsMHhFMCwweDk2LDB4
RUUsMHg3NSwweEVFLDB4MDAsMHgwRSwweDBFLDB4QTIsCi0gICAgMHg5NiwweEVFLDB4NzUsMHhF
RSwweEE4LDB4QUUsMHgzMiwweDI4LDB4OTYsMHhGNiwweDk1LDB4RUUsMHhENywweEZGLDB4RkYs
MHhERiwKLSAgICAweEI2LDB4RkUsMHg5NiwweEVFLDB4NTcsMHg1NywweDVGLDB4RjcsMHhCNiww
eEY2LDB4NzUsMHhFRSwweEU2LDB4MkUsMHhBQiwweDJBLAotICAgIDB4RDYsMHhGNiwweDk2LDB4
RUUsMHhGRiwweEJGLDB4QUIsMHhBQiwweEQ3LDB4RjYsMHhCNiwweEY2LDB4RkQsMHhENywweERE
LDB4MkYsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweDdGLDB4QUUsMHhDQiwweEE4LDB4QjYs
MHhGNiwweEQ3LDB4RUUsMHg4QSwweEFFLDB4RUUsMHhCRSwKLSAgICAweEI2LDB4RjYsMHhENiww
eEVFLDB4QUEsMHgyRSwweEE5LDB4RkYsMHhENywweEY2LDB4QjYsMHhGNiwweDc1LDB4QkQsMHgx
RCwweEFCLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RjYsMHg2QSwweEUyLDB4RTgsMHhCQSwweDc2
LDB4RjYsMHg4QSwweDlCLDB4NjAsMHg2MCwweEUwLDB4RTAsCi0gICAgMHhBOCwweDgyLDB4QTQs
MHg2MSwweEZFLDB4RkUsMHg1QywweDdDLDB4MjYsMHg3QSwweEM1LDB4NjksMHg3QiwweERBLDB4
REUsMHhFMywKLSAgICAweDA2LDB4NzIsMHhBNSwweDY5LDB4RDcsMHhGNSwweEZFLDB4NjIsMHhF
NiwweDcxLDB4ODQsMHg2MSwweDJGLDB4QUYsMHhBRCwweEFELAotICAgIDB4MjcsMHg3QSwweEM1
LDB4NjksMHhCQSwweEJCLDB4QUQsMHgzRCwweDI3LDB4NzIsMHhFNiwweDY5LDB4M0IsMHhCRiww
eDc0LDB4NUEsCi0gICAgMHg4NywweDdBLDB4RTYsMHg2OSwweDBBLDB4QUEsMHhBRiwweEY3LDB4
MkQsMHhBQywweDY3LDB4N0EsMHgyRiwweEJELDB4RkQsMHhGNSwKLSAgICAweDM1LDB4RUUsMHg4
QiwweDlCLDB4MDIsMHgwMywweDJCLDB4MkQsMHhCNiwweEY2LDB4NzYsMHhGNiwweEFBLDB4OEEs
MHhBQSwweDgzLAotICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHhBOCwweEJFLDB4MjMsMHhBMiww
eEI2LDB4RjYsMHg5NiwweEVFLDB4MDIsMHg4MCwweDgyLDB4QTAsCi0gICAgMHhENiwweEY2LDB4
QjYsMHhGNiwweEQ1LDB4RkIsMHg1QiwweEI1LDB4QjYsMHhGNiwweEQ2LDB4RUUsMHgyOCwweDgw
LDB4MDgsMHgwMiwKLSAgICAweEI2LDB4RjYsMHhCNywweEVFLDB4OEEsMHhBOCwweDAwLDB4MkEs
MHg5NiwweEY2LDB4RDcsMHhFRSwweEZBLDB4RUUsMHhBQiwweEVGLAotICAgIDB4QjYsMHhGNiww
eDk2LDB4RUUsMHgwOCwweDAyLDB4MjAsMHhBOCwweEI2LDB4RjYsMHg5NiwweEVFLDB4MDIsMHgw
MCwweDAyLDB4RTgsCi0gICAgMHhENywweEY2LDB4OTYsMHhFRSwweEFFLDB4QUUsMHhBRiwweEJC
LDB4RDcsMHhGNiwweEI2LDB4RjYsMHhERSwweERFLDB4QjMsMHgyQiwKLSAgICAweEQ2LDB4RjYs
MHhCNiwweEVFLDB4QjQsMHhBMiwweDhCLDB4RUEsMHhENywweEY2LDB4QjYsMHhFRSwweDBBLDB4
MEIsMHgyQiwweDNGLAotICAgIDB4MTcsMHhGRiwweEQ3LDB4RjYsMHhGRiwweEJELDB4QkUsMHhB
QiwweDE3LDB4RkYsMHhGNywweEY2LDB4NUQsMHg1NSwweDVGLDB4NUYsCi0gICAgMHgxOCwweEZG
LDB4RjcsMHhGNiwweERELDB4RjksMHhDRiwweDZELDB4MTcsMHhGRiwweEY3LDB4RjYsMHg3RCww
eDc3LDB4RDUsMHg3NSwKLSAgICAweEQ2LDB4RkUsMHhGNywweEY2LDB4NUQsMHg1NSwweEQ3LDB4
REYsMHgxOCwweEZGLDB4RDcsMHhGNiwweEVBLDB4RUYsMHhGRiwweDdGLAotICAgIDB4RjYsMHhG
RSwweDE0LDB4RTYsMHg4MCwweEUwLDB4RjgsMHg3QSwweDM0LDB4RTYsMHhBQiwweDlCLDB4ODAs
MHhBMCwweEU4LDB4N0EsCi0gICAgMHhBRiwweEJDLDB4NDYsMHg3MiwweDY4LDB4N0MsMHg1RSww
eDU3LDB4NjcsMHg4MiwweDQ2LDB4NzIsMHhCQiwweDJCLDB4MzMsMHgwQSwKLSAgICAweDg3LDB4
ODIsMHg0NiwweDdBLDB4M0QsMHgzRiwweDhDLDB4M0EsMHhDNywweDhBLDB4ODcsMHg4MiwweEY1
LDB4Q0UsMHhBRCwweDNELAotICAgIDB4RTgsMHg4QSwweDY2LDB4N0EsMHg3RSwweEZCLDB4RjAs
MHg3MCwweDhFLDB4QkMsMHg0NiwweDdBLDB4QjUsMHhCNSwweDM1LDB4MjUsCi0gICAgMHhENyww
eEZFLDB4MzAsMHhDRCwweDJELDB4MEQsMHgwOSwweDJCLDB4RjcsMHhGRSwweDE4LDB4RjcsMHhF
MCwweEEwLDB4ODgsMHhBMCwKLSAgICAweDE3LDB4RkYsMHhGNywweEY2LDB4QkUsMHhBQSwweDBB
LDB4MEYsMHgxNywweEZGLDB4RjcsMHhGNiwweDJBLDB4MkEsMHhCRSwweDNGLAotICAgIDB4MTgs
MHhGRiwweEY3LDB4RjYsMHg4QSwweDJBLDB4QUIsMHhBRSwweDE4LDB4RkYsMHhGNywweEY2LDB4
RTMsMHhGQSwweEY4LDB4QjgsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEEwLDB4QkMsMHgy
QSwweDgwLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBQSwweEFFLDB4MjAsMHg4OCwKLSAgICAweEY3
LDB4RjYsMHhENywweEY2LDB4QkEsMHhFQSwweEFFLDB4RkEsMHhGNywweEY2LDB4RDcsMHhGNiww
eEY5LDB4RkYsMHg1RCwweDU3LAotICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHhBMCwweDJBLDB4
ODMsMHg4OCwweEQ3LDB4RjYsMHhCNywweEVFLDB4MkEsMHhBMiwweDgyLDB4QUEsCi0gICAgMHhE
NywweEY2LDB4RDcsMHhFRSwweDAwLDB4OEEsMHgyMCwweDIyLDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHg1RiwweEY1LDB4QUQsMHhCRCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QkQsMHg1NSww
eDc3LDB4RTUsMHhENywweEY2LDB4RjcsMHhFRSwweDBBLDB4ODIsMHgwMCwweDIyLAotICAgIDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHg3RiwweDVELDB4RkQsMHgyQiwweDE3LDB4RkYsMHhENywweEY2
LDB4NzUsMHhENywweEY3LDB4M0YsCi0gICAgMHgxNywweEZGLDB4RDcsMHhGNiwweDJELDB4QUYs
MHg4QSwweDcwLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhFMCwweEYwLDB4NTQsMHg1RiwKLSAgICAw
eDk2LDB4RjYsMHhENiwweEVFLDB4QkIsMHhBRiwweEJGLDB4MkEsMHhCNiwweEY2LDB4NzYsMHhF
RSwweEEyLDB4RkEsMHhERSwweERFLAotICAgIDB4OTYsMHhFRSwweDU1LDB4RUUsMHhBOCwweDZB
LDB4NzgsMHg3OCwweDc1LDB4RUUsMHgxNCwweERFLDB4RjgsMHg3OCwweDVBLDB4NUYsCi0gICAg
MHgzNSwweEU2LDB4QjIsMHhENSwweEEyLDB4RkEsMHg3RSwweDVGLDB4NzUsMHhFRSwweEIyLDB4
RDUsMHhGNywweEQ1LDB4QjUsMHgzNSwKLSAgICAweEI2LDB4RjYsMHgxNCwweERFLDB4QkQsMHgy
RCwweDJBLDB4MDIsMHhENywweEY2LDB4OTYsMHhFRSwweDlELDB4RkUsMHhBQSwweEFBLAotICAg
IDB4RDcsMHhGNiwweEI2LDB4RUUsMHgwQSwweDhCLDB4MkIsMHg4MCwweEQ3LDB4RjYsMHhCNyww
eEVFLDB4RTAsMHg4MCwweEEyLDB4QTAsCi0gICAgMHhENywweEY2LDB4OTYsMHhFRSwweDZBLDB4
QTgsMHhBOCwweDIyLDB4RDcsMHhGNiwweDk2LDB4RUUsMHhBQiwweEY5LDB4QkEsMHhFQSwKLSAg
ICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4QUUsMHhBRSwweEE3LDB4RjcsMHhENiwweEY2LDB4QjYs
MHhFRSwweEFBLDB4RUIsMHhFOSwweEU1LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg3RSww
eERFLDB4RDAsMHg1RSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4MkQsMHgwRiwweEJGLDB4NTcsCi0g
ICAgMHhGNywweEY2LDB4OTYsMHhFRSwweDdFLDB4RkEsMHgyQSwweDJCLDB4RjcsMHhGNiwweDk2
LDB4RUUsMHg1NSwweDU3LDB4N0EsMHg4MCwKLSAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4Mjcs
MHhCRCwweEU1LDB4RkYsMHhGNywweEY2LDB4RDcsMHhGNiwweEYyLDB4RTIsMHgyNSwweDBELAot
ICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGQiwweEZGLDB4N0UsMHhGQSwweEY3LDB4RjYsMHhC
NywweEVFLDB4QjYsMHhBRiwweEZBLDB4QUEsCi0gICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweEU1
LDB4Q0QsMHgyQiwweEMyLDB4RjgsMHhGNiwweEQ3LDB4RUUsMHhEQSwweEJCLDB4QkYsMHhBRSwK
LSAgICAweEY4LDB4RjYsMHhENywweEVFLDB4M0IsMHhGMiwweEY4LDB4NTgsMHgxOCwweEY3LDB4
RDcsMHhGNiwweEFBLDB4QUIsMHhBRiwweEFELAotICAgIDB4MTcsMHhGNywweEY4LDB4RjYsMHhG
NiwweDdBLDB4RkEsMHg1RCwweDE4LDB4RjcsMHhENywweEY2LDB4MkEsMHhCQSwweEVFLDB4RDUs
Ci0gICAgMHgzOCwweEZGLDB4RjcsMHhGNiwweEVBLDB4RkEsMHhGNSwweDc1LDB4RjcsMHhGNiww
eDk2LDB4RUUsMHg3QSwweDc4LDB4NzgsMHg3OCwKLSAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4
NjIsMHhGQSwweEZBLDB4N0EsMHhENywweEY2LDB4MzQsMHhERSwweDJGLDB4QjcsMHhCNSwweEI1
LAotICAgIDB4QjYsMHhFRSwweDE0LDB4RTYsMHhGMCwweEUwLDB4NjAsMHg0MCwweDU1LDB4RTYs
MHgxNCwweERFLDB4MEQsMHhBNywweDM1LDB4RkQsCi0gICAgMHg1NSwweEU2LDB4NTEsMHhDNSww
eDc4LDB4NTgsMHg3OCwweDdBLDB4MTAsMHhDNSwweEYwLDB4QkMsMHgyNSwweDJFLDB4MzYsMHgx
NCwKLSAgICAweDM0LDB4RTYsMHg3MSwweENELDB4MkQsMHgyOSwweEFELDB4MkQsMHgzNCwweEU2
LDB4OTIsMHhDRCwweEUwLDB4RTgsMHhFMiwweDYwLAotICAgIDB4RjMsMHhERCwweDkyLDB4Q0Qs
MHgyRiwweDJFLDB4QjUsMHhCRCwweEY0LDB4REQsMHgzMCwweEM1LDB4NzAsMHg2MCwweDQwLDB4
QzAsCi0gICAgMHgxMCwweEM1LDB4NkQsMHhBQywweDJFLDB4OUYsMHhERiwweEJFLDB4NTUsMHhF
NiwweDMxLDB4QzUsMHgyRiwweDBELDB4MjksMHgwQiwKLSAgICAweDk2LDB4RUUsMHg1NSwweEU2
LDB4RkYsMHg2QiwweDdBLDB4RTAsMHg3NSwweEVFLDB4NTUsMHhFNiwweDU3LDB4NTUsMHhCNyww
eEU2LAotICAgIDB4NzUsMHhFRSwweDU1LDB4RTYsMHgwOSwweEZELDB4MjcsMHgzNywweDk2LDB4
RUUsMHg3NSwweEVFLDB4NUQsMHgzRiwweEJELDB4RjUsCi0gICAgMHhENywweEY2LDB4OTYsMHhF
RSwweEVGLDB4QkUsMHhBQiwweEVGLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBRiwweEJGLDB4RkQs
MHhENywKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4NUYsMHg1NywweDU3LDB4N0IsMHhENiww
eEY2LDB4QjYsMHhFRSwweERELDB4RjcsMHg2RCwweEZELAotICAgIDB4RDYsMHhGNiwweEI2LDB4
RUUsMHhGRCwweDc1LDB4N0QsMHhGMywweEQ2LDB4RjYsMHhCNiwweEVFLDB4QkYsMHhFQSwweEJE
LDB4RkYsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweEQxLDB4OUYsMHg1RiwweDdGLDB4RDcs
MHhGNiwweEI2LDB4RUUsMHhERiwweEY3LDB4REQsMHhGNSwKLSAgICAweEQ3LDB4RjYsMHhCNiww
eEVFLDB4NTcsMHhFRCwweEZGLDB4RTQsMHhENywweEY2LDB4QjYsMHhFRSwweDc3LDB4N0YsMHhG
NSwweEZELAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHg3NSwweEQ1LDB4RjcsMHhGRiwweEQ2
LDB4RjYsMHg5NiwweEVFLDB4N0EsMHhFQSwweEVBLDB4RUEsCi0gICAgMHhCNiwweEVFLDB4OTYs
MHhFRSwweDY4LDB4NzYsMHg1RSwweDc2LDB4QjYsMHhGNiwweDc1LDB4RUUsMHhGRiwweEFGLDB4
QTcsMHhCRiwKLSAgICAweDc1LDB4RjYsMHg5NSwweEVFLDB4N0QsMHg3NSwweDVELDB4NTcsMHg3
NiwweEY2LDB4OTUsMHhFRSwweDU1LDB4NzUsMHg1RiwweDdELAotICAgIDB4QjYsMHhGNiwweDk1
LDB4RUUsMHhBRSwweEY2LDB4M0IsMHhGQSwweDk2LDB4RjYsMHhCNiwweEVFLDB4RkYsMHhGRiww
eEJCLDB4QkIsCi0gICAgMHhCNiwweEY2LDB4RDcsMHhFRSwweEE4LDB4QUEsMHhBQSwweEI4LDB4
RDcsMHhGNiwweEI2LDB4RUUsMHgyQiwweDBBLDB4QUEsMHg4MiwKLSAgICAweEQ3LDB4RjYsMHhC
NiwweEVFLDB4RjgsMHhFMiwweEVBLDB4OTgsMHhGNywweEY2LDB4QjYsMHhFRSwweDc3LDB4QUYs
MHhBQiwweEFGLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhBRiwweEFBLDB4ODgsMHgyQSww
eEQ3LDB4RjYsMHhCNiwweEY2LDB4RTcsMHhCNSwweERFLDB4QUUsCi0gICAgMHhENywweEY2LDB4
OTUsMHhGNiwweEVBLDB4RkEsMHhGQSwweEU4LDB4NzUsMHhFRSwweDI5LDB4OTMsMHhFMCwweEUw
LDB4NzgsMHg3OCwKLSAgICAweEM4LDB4OEEsMHhBNSwweDYxLDB4N0MsMHhERSwweDU2LDB4NTcs
MHgyNiwweDdBLDB4RTUsMHg2OSwweEVGLDB4OEQsMHhBRCwweDJELAotICAgIDB4MjYsMHg3QSww
eEM1LDB4NjksMHg3QiwweEZDLDB4ODAsMHg4MiwweEM1LDB4NjksMHg2NCwweDYxLDB4MkEsMHhG
OCwweEZDLDB4QjAsCi0gICAgMHgwNiwweDcyLDB4ODQsMHg2MSwweDJCLDB4MkYsMHhCRiwweERG
LDB4MjcsMHg3MiwweEM1LDB4NjksMHhFMiwweEZBLDB4RUEsMHg3NSwKLSAgICAweDI2LDB4NzIs
MHhDNSwweDY5LDB4MkMsMHhCQSwweEFGLDB4QjYsMHhFOCwweDgyLDB4RTUsMHg2OSwweDJGLDB4
MkYsMHhCRCwweEY1LAotICAgIDB4RDIsMHhERCwweDA4LDB4OEIsMHgyRCwweEI1LDB4RjUsMHhE
NSwweDk1LDB4RjYsMHhFRSwweEJDLDB4MDAsMHgwMiwweDBCLDB4MjksCi0gICAgMHhCNiwweEY2
LDB4OTYsMHhFRSwweEEwLDB4ODgsMHgwMCwweDAwLDB4RDUsMHhGNiwweEI2LDB4RjYsMHg1RCww
eDVELDB4RjcsMHhCRiwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEY2LDB4RUIsMHhFNywweEVGLDB4
RkEsMHhENiwweEY2LDB4QjYsMHhGNiwweERELDB4RjcsMHhEQSwweEFBLAotICAgIDB4RjYsMHhG
NiwweEI2LDB4RjYsMHg1NSwweDU1LDB4NUYsMHg1RiwweEI2LDB4RjYsMHhCNywweEVFLDB4MDgs
MHhBMCwweDJBLDB4QTIsCi0gICAgMHhENywweEY2LDB4OTYsMHhFRSwweEZFLDB4RkEsMHhCRSww
eEFBLDB4QjYsMHhGNiwweEQ3LDB4RUUsMHgwMiwweDgyLDB4ODAsMHgwMCwKLSAgICAweEQ3LDB4
RjYsMHhCNiwweEY2LDB4NTksMHg1NywweEY1LDB4REQsMHhENywweEY2LDB4QjYsMHhGNiwweEFG
LDB4OEQsMHgzNywweDlELAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHgyMiwweDI4LDB4NjAs
MHhFMiwweEY3LDB4RjYsMHhCNiwweEVFLDB4QkYsMHgyQiwweEJCLDB4M0YsCi0gICAgMHgxNyww
eEZGLDB4RDYsMHhGNiwweEFCLDB4RUYsMHhGRiwweERFLDB4RjcsMHhGNiwweEQ2LDB4RjYsMHg4
MCwweDIyLDB4MDIsMHhBQSwKLSAgICAweDE3LDB4RkYsMHhGNywweEY2LDB4NzUsMHg1RCwweDVE
LDB4N0YsMHgxNywweEZGLDB4RjcsMHhGNiwweEI1LDB4REQsMHhGNSwweDc1LAotICAgIDB4Rjcs
MHhGRSwweEQ2LDB4RjYsMHhFQiwweEE4LDB4QUEsMHhCQywweEY3LDB4RkUsMHgzNCwweEU2LDB4
QTAsMHhBMCwweEU4LDB4N0EsCi0gICAgMHg3NSwweEVFLDB4NEQsMHhCNCwweEEwLDB4RTAsMHhG
OCwweDdFLDB4RUYsMHhDNCwweDY2LDB4N0EsMHg2MCwweDc4LDB4NUUsMHg1NywKLSAgICAweDY3
LDB4N0EsMHgwNSwweDZBLDB4QkUsMHg4NiwweDhBLDB4MDIsMHg2NywweDdBLDB4MDYsMHg3Miww
eDI4LDB4MjAsMHgyQSwweERFLAotICAgIDB4QTgsMHg4QSwweDQ2LDB4N0EsMHhCRiwweDhELDB4
OEEsMHg4MywweEM4LDB4OEEsMHg2NywweDgyLDB4MjcsMHhBNSwweEFFLDB4OEIsCi0gICAgMHhD
OCwweDhBLDB4NjYsMHg3QSwweDgwLDB4QjAsMHg5QSwweEYyLDB4MTEsMHhDRCwweDY3LDB4N0Es
MHgzNSwweDM1LDB4MjUsMHgyRCwKLSAgICAweEY3LDB4RkUsMHhEMywweERELDB4MDksMHgyOSww
eDBCLDB4MEIsMHgxNywweEZGLDB4RjgsMHhGNiwweEFFLDB4QUEsMHhCQSwweDcyLAotICAgIDB4
MTgsMHhGRiwweEY3LDB4RjYsMHhBQSwweEJBLDB4QUEsMHhBQSwweEY3LDB4RkUsMHgxOCwweEY3
LDB4N0IsMHg3RSwweDc5LDB4NUYsCi0gICAgMHgzOCwweEZGLDB4MTcsMHhGNywweDc1LDB4Rjcs
MHhGRiwweERCLDB4MTcsMHhGRiwweEY3LDB4RjYsMHhBMCwweEVCLDB4RUUsMHhFQiwKLSAgICAw
eEY3LDB4RjYsMHhGNywweEY2LDB4MDAsMHgwMCwweDAwLDB4MDAsMHhGNywweEY2LDB4RDcsMHhG
NiwweEFBLDB4QUEsMHhBMiwweDVBLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBQiwweDhC
LDB4N0QsMHg1RiwweEY3LDB4RjYsMHhENywweEY2LDB4NTcsMHg3RiwweDdBLDB4NUIsCi0gICAg
MHhENywweEY2LDB4RjYsMHhFRSwweDAwLDB4QTIsMHhBMiwweEE4LDB4RDcsMHhGNiwweEQ2LDB4
RUUsMHhBQSwweDIwLDB4MEEsMHgwOCwKLSAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4QkEsMHg3
QSwweEJBLDB4QkUsMHhGNywweEY2LDB4RDcsMHhGNiwweDY1LDB4N0YsMHg3OSwweEFBLAotICAg
IDB4RDcsMHhGNiwweEY3LDB4RUUsMHhBMCwweDAwLDB4ODAsMHhBMCwweEY2LDB4RjYsMHhENyww
eEY2LDB4REQsMHhGNSwweDU3LDB4QUYsCi0gICAgMHhGNywweEY2LDB4QjYsMHhFRSwweDAzLDB4
MEYsMHgyMSwweDAyLDB4MTgsMHhGRiwweEY3LDB4RjYsMHhBNSwweDg5LDB4ODMsMHhDMCwKLSAg
ICAweDE4LDB4RjcsMHhENywweEY2LDB4NzgsMHg1RSwweDVGLDB4NTcsMHg5NSwweEY2LDB4RDYs
MHhFRSwweEZELDB4QUIsMHhBRiwweEJCLAotICAgIDB4NzYsMHhGNiwweEI2LDB4RUUsMHhGRCww
eEFELDB4QkYsMHgyRSwweDk2LDB4RjYsMHg1NSwweEU2LDB4QUEsMHhGQSwweEFBLDB4N0IsCi0g
ICAgMHg3NSwweEVFLDB4MTQsMHhERSwweEE4LDB4RjgsMHhGRSwweDdGLDB4MzQsMHhFNiwweDky
LDB4Q0QsMHhFOCwweEU4LDB4RjgsMHg3RSwKLSAgICAweDE0LDB4REUsMHg1MSwweEM1LDB4RkUs
MHhGRSwweEI3LDB4MjUsMHg5NiwweEVFLDB4OTIsMHhENSwweDJELDB4MEIsMHgwMiwweDAwLAot
ICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHg5NSwweEJGLDB4QkYsMHg4OCwweEQ3LDB4RjYsMHhC
NiwweEVFLDB4MzMsMHg4MiwweEEwLDB4ODAsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweDgw
LDB4QjAsMHgzRSwweEFDLDB4RDcsMHhGNiwweEI2LDB4RUUsMHgwQiwweDhFLDB4QTgsMHhBMiwK
LSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4QTIsMHhBMiwweDA4LDB4QkEsMHhENywweEY2LDB4
QjYsMHhFRSwweEVCLDB4RUEsMHhBQSwweEVBLAotICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHhG
RiwweEZBLDB4RUEsMHhCQSwweEQ3LDB4RjYsMHg5NiwweEVFLDB4QTcsMHhGRiwweEVBLDB4QUEs
Ci0gICAgMHg5NywweEZFLDB4QjYsMHhFRSwweEQ1LDB4NUYsMHg3NSwweDVGLDB4OTYsMHhGNiww
eEI2LDB4RUUsMHg3NywweDU3LDB4RDUsMHhGNSwKLSAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4
MkUsMHgzRiwweEJELDB4QkYsMHhGNywweEY2LDB4QjcsMHhFRSwweDAyLDB4MDIsMHgyRiwweDJE
LAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHg1RiwweEZFLDB4QUEsMHgyQSwweDE3LDB4Rjcs
MHhCOCwweEY2LDB4QUIsMHhBQSwweEFBLDB4MDIsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGNiww
eDZFLDB4NkYsMHhDQiwweDAyLDB4MTgsMHhGNywweEQ3LDB4RjYsMHhGRiwweEZCLDB4RjgsMHhG
OCwKLSAgICAweEY3LDB4RjYsMHhENywweEVFLDB4QTIsMHhGQSwweDY4LDB4QTIsMHhGOCwweEY2
LDB4RDcsMHhFRSwweDJDLDB4MkEsMHgwMywweDJBLAotICAgIDB4MTgsMHhGNywweEI3LDB4RjYs
MHhEQSwweEY4LDB4RUUsMHhFQSwweEY4LDB4RjYsMHhENywweEY2LDB4OEQsMHg4OCwweEUzLDB4
REIsCi0gICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweDAwLDB4MjEsMHhBQywweEZFLDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHhGRCwweEY4LDB4NzgsMHg1QSwKLSAgICAweEY4LDB4RjYsMHhCNywweEVF
LDB4QUEsMHhCRSwweEZGLDB4RjYsMHhENywweEY2LDB4OTYsMHhFRSwweEUwLDB4NjgsMHhFOCww
eEFBLAotICAgIDB4OTYsMHhFRSwweDM0LDB4REUsMHhCQSwweDZFLDB4NzgsMHg3OCwweDk2LDB4
RUUsMHgxMywweERFLDB4M0QsMHgyNywweEI1LDB4QjUsCi0gICAgMHhENywweEY2LDB4NTQsMHhF
NiwweDYyLDB4RTIsMHhFMCwweEFBLDB4NzUsMHhFRSwweDE0LDB4REUsMHg3RCwweEZFLDB4QUEs
MHhBQywKLSAgICAweDU1LDB4RTYsMHg3MSwweENELDB4N0EsMHg1OCwweDc4LDB4NzgsMHg1MSww
eEM1LDB4RUYsMHhCQywweDk2LDB4QjgsMHgyMCwweDAwLAotICAgIDB4MTMsMHhERSwweDUxLDB4
QzUsMHgyOSwweDI5LDB4QUQsMHhCRCwweDU1LDB4RTYsMHhCMiwweEQ1LDB4N0EsMHhGMiwweDdB
LDB4NkIsCi0gICAgMHhCMiwweEQ1LDB4NzIsMHhDRCwweDJFLDB4QUYsMHhCRiwweDJGLDB4RjMs
MHhERCwweDcxLDB4Q0QsMHg2MiwweDQzLDB4RTIsMHg4MiwKLSAgICAweEQzLDB4RDUsMHhBRSww
eEI0LDB4RDUsMHgzNywweDJGLDB4MkUsMHhENiwweEY2LDB4QjIsMHhENSwweEFELDB4MkIsMHgw
QiwweDJCLAotICAgIDB4QjYsMHhGNiwweDU1LDB4RTYsMHhGQSwweEY4LDB4NjAsMHhFMCwweDc2
LDB4RTYsMHgzNSwweEU2LDB4RkUsMHhGNiwweEQ3LDB4REUsCi0gICAgMHg1NSwweEVFLDB4MzQs
MHhFNiwweDA4LDB4MkMsMHg1RSwweDU1LDB4OTYsMHhFRSwweDM0LDB4RTYsMHhBQiwweDJCLDB4
QUYsMHhBRCwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4RDUsMHhBNSwweEZELDB4OTUsMHhE
NiwweEY2LDB4QjYsMHhFRSwweDdELDB4N0UsMHg1RSwweDc1LAotICAgIDB4RDYsMHhGNiwweEI2
LDB4RUUsMHg3MiwweDVCLDB4OTUsMHhBOSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4REYsMHhCNiww
eEJFLDB4NzcsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDRELDB4OEIsMHhBQiwweEZELDB4
RDYsMHhGNiwweDk2LDB4RUUsMHhBRSwweDhBLDB4ODIsMHg4RiwKLSAgICAweEQ2LDB4RjYsMHhC
NiwweEVFLDB4RkIsMHhFOSwweEI1LDB4NUIsMHhENiwweEY2LDB4QjYsMHhFRSwweEZELDB4QUUs
MHgzOSwweDc3LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhCRSwweDNGLDB4QkEsMHhBQSww
eEQ2LDB4RjYsMHhCNiwweEVFLDB4QUYsMHhFNywweEZGLDB4RDYsCi0gICAgMHhENywweEY2LDB4
QjYsMHhFRSwweEVFLDB4RUIsMHg3QiwweEVGLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGQiwweEZG
LDB4N0EsMHhGRSwKLSAgICAweEQ2LDB4RUUsMHg3NSwweEVFLDB4RkUsMHhERSwweEZGLDB4Rjgs
MHhCNiwweEY2LDB4NzUsMHhFRSwweEZBLDB4QkEsMHhFQSwweEZBLAotICAgIDB4QjUsMHhGNiww
eDU1LDB4RTYsMHhBQSwweEEyLDB4QUEsMHhFQSwweEI2LDB4RjYsMHg5NSwweEVFLDB4REYsMHhG
RCwweEJCLDB4NkEsCi0gICAgMHhCNSwweEVFLDB4OTUsMHhFRSwweEFGLDB4RkIsMHhGRiwweEY5
LDB4QjcsMHhGNiwweDk2LDB4RUUsMHhGOSwweERGLDB4RDcsMHhBRCwKLSAgICAweEQ2LDB4RjYs
MHhCNiwweEVFLDB4QUYsMHg4RCwweEJELDB4QjUsMHhENywweEY2LDB4QjYsMHhFRSwweEEyLDB4
OEUsMHgwQSwweDAyLAotICAgIDB4RDcsMHhGNiwweEY3LDB4RUUsMHgwMCwweDIwLDB4ODgsMHg4
OCwweEQ2LDB4RjYsMHhCNywweEU2LDB4MEEsMHgyMiwweDIwLDB4ODIsCi0gICAgMHhGNywweEY2
LDB4QjYsMHhFRSwweEZFLDB4QkUsMHhBQSwweEVBLDB4RDYsMHhGNiwweEI3LDB4RjYsMHhBRSww
eEFBLDB4MDAsMHhBOCwKLSAgICAweEQ3LDB4RkUsMHgzNCwweEVFLDB4RTAsMHhDOCwweDYwLDB4
NkEsMHhGMiwweERELDB4NDYsMHg3MiwweDc4LDB4N0MsMHg1RSwweDVFLAotICAgIDB4NDcsMHg3
QSwweDg1LDB4NjEsMHhGQSwweEUyLDB4RTgsMHhGMCwweDI2LDB4NzIsMHg0MywweDU5LDB4MEEs
MHhBQiwweEFGLDB4OTUsCi0gICAgMHgyNiwweDcyLDB4RTYsMHg3MSwweEVBLDB4NjMsMHhGQiww
eEQ3LDB4MDYsMHg3MiwweEE1LDB4NjksMHg1NSwweDdFLDB4NjgsMHhFQSwKLSAgICAweEE1LDB4
NjksMHg2NCwweDYxLDB4QzAsMHhGOSwweDU3LDB4NUMsMHhDNSwweDY5LDB4ODUsMHg2MSwweDBB
LDB4OEIsMHhCQiwweEZGLAotICAgIDB4RTYsMHg2OSwweDY0LDB4NTksMHgyQSwweDhBLDB4MkIs
MHgyOSwweDQ2LDB4NzIsMHhDNSwweDYxLDB4MkYsMHgyRCwweEJGLDB4RDcsCi0gICAgMHg2OSww
eDkzLDB4MjYsMHg3MiwweDJGLDB4QkQsMHhCRCwweEY1LDB4MzUsMHhFRSwweDI5LDB4OEIsMHgw
QiwweDBELDB4MkQsMHhCNSwKLSAgICAweEQ3LDB4RkUsMHg1NSwweEVFLDB4QUEsMHgyQSwweDBC
LDB4MkQsMHhENywweEY2LDB4QjYsMHhGNiwweDc1LDB4NUIsMHhGQSwweEFBLAotICAgIDB4RDYs
MHhGNiwweEI2LDB4RjYsMHhGRCwweEE1LDB4ODcsMHg4RiwweEQ2LDB4RjYsMHhCNiwweEY2LDB4
QUQsMHhCRiwweEEzLDB4MEEsCi0gICAgMHhENiwweEY2LDB4QjYsMHhGNiwweEE4LDB4QUEsMHhC
RSwweDk3LDB4RDYsMHhGNiwweEI2LDB4RjYsMHhENCwweDdDLDB4NUMsMHg3NywKLSAgICAweEI2
LDB4RjYsMHhENywweEVFLDB4MEEsMHgwMiwweDA4LDB4MDgsMHhCNiwweEY2LDB4OTYsMHhFRSww
eDA4LDB4MEEsMHg4OCwweDAwLAotICAgIDB4QjYsMHhGNiwweEQ2LDB4RUUsMHhBMCwweDAwLDB4
MDgsMHgyOCwweEQ3LDB4RjYsMHhCNiwweEY2LDB4QUYsMHhCRCwweEI1LDB4RUYsCi0gICAgMHhE
NiwweEY2LDB4QjYsMHhFRSwweEEwLDB4N0EsMHgzQSwweEFGLDB4RjcsMHhGNiwweEQ2LDB4RjYs
MHg5RCwweERELDB4QkYsMHhCNywKLSAgICAweEQ3LDB4RkUsMHhGNywweEY2LDB4REYsMHg3RCww
eDU3LDB4NTUsMHhGNiwweEZFLDB4RjcsMHhGNiwweEZELDB4N0YsMHhGNywweEZELAotICAgIDB4
RDcsMHhGRSwweEY3LDB4RjYsMHg1NSwweDU1LDB4N0QsMHhGRCwweEY3LDB4RkUsMHhENywweEY2
LDB4QTgsMHhBRSwweEFCLDB4ODIsCi0gICAgMHhGNywweEZFLDB4NTUsMHhFRSwweEEwLDB4QTgs
MHhFMCwweDdBLDB4QjYsMHhGNiwweEFGLDB4QkMsMHhBMCwweEU4LDB4RkEsMHg3QSwKLSAgICAw
eDMwLDB4Q0QsMHg2NiwweDdBLDB4RTAsMHg3OCwweDVFLDB4NUYsMHg2NiwweDdBLDB4MDUsMHg3
MiwweEEwLDB4REEsMHhGRSwweEFFLAotICAgIDB4NjYsMHg3QSwweDI2LDB4N0EsMHg4QSwweDlC
LDB4OUUsMHhCQSwweDQ2LDB4ODIsMHgyNiwweDdBLDB4N0YsMHhGRiwweEFELDB4QjMsCi0gICAg
MHg4NywweDhBLDB4MjYsMHg3QSwweDJCLDB4QTksMHhBQiwweDhBLDB4QTgsMHg4QSwweDY3LDB4
ODIsMHhCQSwweEYzLDB4QjMsMHhGRSwKLSAgICAweDg3LDB4ODIsMHg0NiwweDdBLDB4QTAsMHhF
MiwweDdBLDB4MzgsMHgxNCwweEU2LDB4MDksMHg5MywweDM1LDB4QUQsMHgyRCwweDJELAotICAg
IDB4RjcsMHhGRSwweDU1LDB4RUUsMHgwRCwweDAxLDB4MDMsMHgwMywweDE3LDB4RkYsMHhGNyww
eEY2LDB4RjAsMHhBQSwweEVBLDB4Q0EsCi0gICAgMHgxNywweEZGLDB4RjgsMHhGNiwweEFCLDB4
QjgsMHhBRSwweEFCLDB4MzgsMHhGRiwweEY3LDB4RjYsMHhBRiwweEFCLDB4RUQsMHhBQiwKLSAg
ICAweDE4LDB4RkYsMHgxNywweEY3LDB4RUYsMHhCQiwweEZFLDB4QkUsMHgzNiwweEZGLDB4MTgs
MHhGNywweDVELDB4NzcsMHhGNywweEZGLAotICAgIDB4MzcsMHhGNywweEQ3LDB4RjYsMHhERSww
eDdGLDB4RDcsMHg1RiwweEY3LDB4RjYsMHhENywweEY2LDB4RTgsMHhBMiwweEFGLDB4QkYsCi0g
ICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDdBLDB4RjIsMHhCQiwweEJELDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHhGRCwweDdELDB4RDcsMHhGRCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RkQs
MHhGRCwweEQ2LDB4NTYsMHhGNywweEY2LDB4RDcsMHhGNiwweEQ3LDB4NzUsMHhENywweDdGLAot
ICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHgyMCwweDAwLDB4NjgsMHg4MCwweEY3LDB4RjYsMHhC
NywweEY2LDB4MjIsMHhBQSwweEE5LDB4QUYsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDc1
LDB4RjUsMHg5NywweEFGLDB4MzcsMHhGRiwweEQ3LDB4RjYsMHg3NSwweEY3LDB4RjUsMHhCNywK
LSAgICAweDE4LDB4RkYsMHhENywweEY2LDB4MkYsMHg4QSwweDgyLDB4QzAsMHgxNywweEZGLDB4
QjYsMHhFRSwweEE4LDB4RkEsMHg3RSwweEQ3LAotICAgIDB4QjYsMHhGNiwweEQ2LDB4RUUsMHgy
RCwweDJCLDB4MEEsMHg4MCwweEI2LDB4RjYsMHg3NSwweEVFLDB4RTgsMHg2QSwweEZDLDB4RkEs
Ci0gICAgMHg5NiwweEVFLDB4NzUsMHhFRSwweEUwLDB4NjgsMHg0QywweEZBLDB4NzUsMHhFRSww
eDE0LDB4RTYsMHhBMCwweDc4LDB4RjgsMHg3RSwKLSAgICAweDM1LDB4RTYsMHhCMywweEQ1LDB4
QzgsMHhFMiwweEZBLDB4REUsMHgxNCwweERFLDB4NzEsMHhDRCwweDdFLDB4REYsMHg5NywweDJE
LAotICAgIDB4QjYsMHhGNiwweDkyLDB4Q0QsMHhBNSwweDJGLDB4MjIsMHgwMiwweEQ3LDB4RjYs
MHg5NiwweEVFLDB4MDksMHgwQSwweDAyLDB4MDgsCi0gICAgMHhENywweEY2LDB4RDYsMHhFRSww
eDIwLDB4MjIsMHgyMiwweDAwLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhBQiwweEJCLDB4QUUsMHhC
MywKLSAgICAweEQ3LDB4RjYsMHhGNywweEVFLDB4MDAsMHgwMCwweDhBLDB4MEEsMHhENywweEY2
LDB4QjYsMHhFRSwweDgwLDB4MDAsMHhBMCwweEMwLAotICAgIDB4RDcsMHhGNiwweEI3LDB4RUUs
MHgyOCwweDIyLDB4RTgsMHhFQSwweEQ3LDB4RjYsMHhCNywweEVFLDB4RkMsMHg1NywweDc2LDB4
RUYsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweDk3LDB4OEYsMHgyRiwweDJBLDB4RDcsMHhG
NiwweEI3LDB4RUUsMHhFMywweEEyLDB4QTIsMHgyMiwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVF
LDB4NUYsMHhFQSwweEYyLDB4RkUsMHhENywweEY2LDB4QjYsMHhFRSwweDVGLDB4NUUsMHg1RSww
eDdFLAotICAgIDB4QjYsMHhFRSwweDk2LDB4RUUsMHhBMywweEZFLDB4M0EsMHgwMCwweEY3LDB4
RjYsMHg5NiwweEVFLDB4MkYsMHhCRCwweEJGLDB4RkQsCi0gICAgMHgxNywweEZGLDB4QjcsMHhF
RSwweEFBLDB4MkUsMHhBRiwweEZELDB4MTgsMHhGRiwweEY3LDB4RjYsMHhCQiwweDBCLDB4MEEs
MHgyQiwKLSAgICAweDM4LDB4RkYsMHgxOCwweEY3LDB4RjcsMHhFRiwweENCLDB4RUIsMHgzOSww
eEZGLDB4RjcsMHhGNiwweDdFLDB4RkEsMHhFQSwweDhCLAotICAgIDB4MTgsMHhGRiwweEQ3LDB4
RUUsMHhGRiwweEJGLDB4QkUsMHhGOCwweDE4LDB4RjcsMHhGOCwweEY2LDB4NTUsMHg1RiwweEQ1
LDB4RkQsCi0gICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweEFBLDB4QTgsMHhCMCwweDgwLDB4Rjgs
MHhGNiwweEQ3LDB4RjYsMHg1NSwweEI3LDB4Q0YsMHg2QiwKLSAgICAweEY3LDB4RjYsMHhENyww
eEY2LDB4QkUsMHgwQSwweDBBLDB4MDksMHhGNywweEY2LDB4QjcsMHhFRSwweDY4LDB4RTAsMHg3
OCwweDdBLAotICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHg4RCwweDAyLDB4ODIsMHhBQiwweEQ3
LDB4RjYsMHhCNywweEVFLDB4RUEsMHg4OCwweEFBLDB4QUEsCi0gICAgMHhCNiwweEVFLDB4NTUs
MHhFNiwweDU4LDB4NzgsMHg2OCwweEUwLDB4NTUsMHhFNiwweEYzLDB4RDUsMHgyNiwweDM3LDB4
MUYsMHgxNiwKLSAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4MkIsMHhBOSwweDJCLDB4MkQsMHhC
NywweEVFLDB4MzQsMHhFNiwweDVFLDB4N0MsMHg3OCwweDU4LAotICAgIDB4MzQsMHhFNiwweDky
LDB4Q0QsMHg3MCwweDc4LDB4NzAsMHg3OCwweDkyLDB4RDUsMHgzMCwweEM1LDB4RkIsMHg2QSww
eDY4LDB4QjAsCi0gICAgMHhEMywweERELDB4NTEsMHhDNSwweDJELDB4MkQsMHgzRCwweEE3LDB4
MTQsMHhERSwweEIyLDB4RDUsMHg4MiwweEMyLDB4NDIsMHhDMiwKLSAgICAweEIyLDB4RDUsMHgz
MCwweEM1LDB4MkEsMHhCRSwweDlGLDB4RDYsMHhGNCwweERELDB4NTEsMHhDRCwweDgyLDB4OEIs
MHhDQiwweDdELAotICAgIDB4RjMsMHhERCwweDMxLDB4QzUsMHgzNywweDJFLDB4QTYsMHhBRCww
eEI2LDB4RjYsMHhGMywweERELDB4MEIsMHgyOSwweDA5LDB4MEIsCi0gICAgMHhENywweEY2LDB4
NzUsMHhFRSwweDdBLDB4RkEsMHhGQSwweENBLDB4OTYsMHhFRSwweDM0LDB4RTYsMHhGRSwweDU2
LDB4NUEsMHhGQywKLSAgICAweDU1LDB4RTYsMHgzNCwweEU2LDB4MDksMHgyNSwweDlELDB4RkUs
MHg5NiwweEVFLDB4MzQsMHhFNiwweEFELDB4QUIsMHhBRiwweEFGLAotICAgIDB4RDYsMHhGNiww
eEI2LDB4RUUsMHhBRiwweEJCLDB4N0QsMHg3RCwweEQ1LDB4RjYsMHhCNiwweEVFLDB4NTcsMHg3
NSwweEY1LDB4RjcsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEQ5LDB4REYsMHhGQSwweEVC
LDB4RDYsMHhGNiwweEI2LDB4RUUsMHhEOSwweDdBLDB4QUUsMHhBNywKLSAgICAweEQ2LDB4RjYs
MHhCNiwweEVFLDB4N0YsMHg2QiwweEFCLDB4OEQsMHhENiwweEY2LDB4QjYsMHhFRSwweEFELDB4
Q0YsMHhGRSwweEZFLAotICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHg2QSwweEFBLDB4MzIsMHgz
OCwweEQ2LDB4RjYsMHhCNiwweEVFLDB4RTMsMHhFQSwweERBLDB4N0UsCi0gICAgMHhENiwweEY2
LDB4QjYsMHhFRSwweERELDB4NTcsMHhENiwweEI3LDB4QjYsMHhGNiwweEQ3LDB4RUUsMHhFQiww
eEVCLDB4RUEsMHhGQiwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4RkYsMHhGRSwweDdFLDB4
NUEsMHhENiwweEY2LDB4QjYsMHhFRSwweEFGLDB4MkIsMHhBQiwweEZFLAotICAgIDB4QjYsMHhF
RSwweDk1LDB4RUUsMHhGOCwweEEwLDB4NzgsMHg1MCwweEI2LDB4RjYsMHg5NSwweEVFLDB4Nzcs
MHhFRSwweEVCLDB4RjcsCi0gICAgMHhCNiwweEY2LDB4NzUsMHhFRSwweDZGLDB4M0UsMHhBRiww
eDNBLDB4QjUsMHhGNiwweDk2LDB4RUUsMHgwQiwweENBLDB4QkEsMHg3RSwKLSAgICAweDk1LDB4
RjYsMHhCNiwweEVFLDB4RkYsMHhGQiwweEZBLDB4QUUsMHg5NiwweEY2LDB4QjYsMHhFRSwweEU1
LDB4RkQsMHg3QiwweDVFLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg5NSwweEI1LDB4QUIs
MHhCQSwweEQ3LDB4RjYsMHhCNiwweEU2LDB4ODAsMHgyMiwweEEyLDB4MjAsCi0gICAgMHhENyww
eEY2LDB4RjYsMHhFRSwweDIwLDB4MjIsMHgyOCwweDAwLDB4RDcsMHhGNiwweEI2LDB4RUUsMHg4
QSwweDVFLDB4RkUsMHhBQSwKLSAgICAweEY4LDB4RjYsMHhENywweEY2LDB4N0QsMHg3OSwweDdE
LDB4RDUsMHhENiwweEY2LDB4QjYsMHhGNiwweDE4LDB4QkUsMHhBQSwweDIwLAotICAgIDB4QjYs
MHhGNiwweDUyLDB4Q0QsMHhDMCwweEMwLDB4NjAsMHg0MCwweDJDLDB4QUMsMHgwNSwweDZBLDB4
NTgsMHg1QywweDU0LDB4NUUsCi0gICAgMHgwNiwweDZBLDB4NjQsMHg1OSwweEIwLDB4NkEsMHg3
RSwweDc3LDB4NjQsMHg2MSwweEUyLDB4NDgsMHgyQSwweDk2LDB4REUsMHhERSwKLSAgICAweDA2
LDB4NzIsMHgyMywweDU5LDB4QUEsMHgwQiwweEE5LDB4MkQsMHgwNiwweDcyLDB4QTUsMHg2MSww
eDc4LDB4QTgsMHhBMiwweEVBLAotICAgIDB4QTUsMHg2OSwweDQ0LDB4NTksMHgyOCwweEVDLDB4
N0UsMHg5OCwweDg1LDB4NjEsMHg0NCwweDU5LDB4RUEsMHg0RSwweEE2LDB4MjcsCi0gICAgMHhD
NSwweDYxLDB4MjMsMHg1MSwweDNCLDB4QjcsMHhCRiwweEE1LDB4RTYsMHg2OSwweDg1LDB4NTks
MHgzRiwweEJELDB4QkYsMHg5NywKLSAgICAweDg4LDB4N0EsMHgwNiwweDZBLDB4MEQsMHgzRCww
eDNELDB4MzUsMHgyQywweEFDLDB4NDcsMHg3MiwweDJGLDB4QUYsMHhCRiwweEJELAotICAgIDB4
OTYsMHhGNiwweDBDLDB4QTQsMHgwMiwweDBCLDB4MEQsMHgyNSwweEY3LDB4RkUsMHg5NiwweEY2
LDB4QUEsMHhBQSwweEFCLDB4QTksCi0gICAgMHhENiwweEZFLDB4RDcsMHhGNiwweEZGLDB4RkYs
MHhGRiwweEZGLDB4QjYsMHhGRSwweEQ3LDB4RjYsMHg1NSwweDc1LDB4NjcsMHg3RCwKLSAgICAw
eEY3LDB4RkUsMHhCNiwweEY2LDB4RDcsMHg1RSwweDc2LDB4N0UsMHhENywweEY2LDB4QjYsMHhG
NiwweDZFLDB4Q0YsMHhCRCwweERGLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RjYsMHg1NSwweDU2
LDB4NTQsMHg1NywweEQ3LDB4RjYsMHhCNiwweEY2LDB4NzUsMHhCRCwweEI3LDB4MkYsCi0gICAg
MHhENywweEY2LDB4QjYsMHhGNiwweERFLDB4RjgsMHhCQywweDUzLDB4RDYsMHhGNiwweEI2LDB4
RjYsMHg2RCwweEZGLDB4RjYsMHhBNCwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEY2LDB4MUYsMHgw
RiwweDhCLDB4QjgsMHhGNywweEY2LDB4RDYsMHhGNiwweDM1LDB4MTUsMHg5NSwweDU1LAotICAg
IDB4MTcsMHhGRiwweEQ3LDB4RjYsMHhFRSwweEVBLDB4RUYsMHhFRiwweDE3LDB4RkYsMHhGNyww
eEY2LDB4RDUsMHg3NSwweEZELDB4RkQsCi0gICAgMHhENywweEZFLDB4RjcsMHhGNiwweEY5LDB4
QjcsMHhBRCwweDJCLDB4RjcsMHhGRSwweDk1LDB4RUUsMHgwMCwweEFBLDB4RUEsMHg3OCwKLSAg
ICAweEQ2LDB4RjYsMHhGMCwweEM0LDB4QTAsMHhFOCwweDZBLDB4NUEsMHg3MSwweEQ1LDB4NDYs
MHg3QSwweEUwLDB4RTgsMHg1QSwweDVFLAotICAgIDB4QzgsMHg4MiwweEM1LDB4NjksMHhFOCww
eEJFLDB4RkIsMHhGNywweDQ2LDB4N0EsMHgwNSwweDcyLDB4RTgsMHg5MCwweDYwLDB4OEYsCi0g
ICAgMHg0NiwweDgyLDB4RTUsMHg3MSwweEFDLDB4QkEsMHgyRCwweEVBLDB4ODcsMHg4QSwweDI2
LDB4N0EsMHhCRCwweEYzLDB4ODksMHgyQiwKLSAgICAweEE4LDB4OEEsMHg0NiwweDgyLDB4MkEs
MHhCRiwweERGLDB4RkUsMHhBOCwweDhBLDB4MjYsMHg3QSwweEE4LDB4QTAsMHhFRiwweERGLAot
ICAgIDB4QTgsMHg4MiwweEU1LDB4NzEsMHgyQSwweDNFLDB4MUYsMHgzNywweDU1LDB4RUUsMHg4
QSwweDlCLDB4MEQsMHgyOSwweDA5LDB4MEIsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGRSwweDM5
LDB4QTksMHhBQiwweDJCLDB4MTcsMHhGRiwweDE4LDB4RjcsMHhGOCwweEE4LDB4QkEsMHhFQSwK
LSAgICAweDE3LDB4RkYsMHgxOCwweEY3LDB4RkIsMHhCRSwweEVCLDB4RUUsMHgxOCwweEZGLDB4
MTcsMHhGNywweEZGLDB4RUYsMHhGRSwweEVCLAotICAgIDB4MTgsMHhGRiwweDE3LDB4RjcsMHhF
RSwweEZFLDB4QUYsMHhGQiwweDE4LDB4RkYsMHhGNywweEY2LDB4ODIsMHhFMCwweDcwLDB4N0Es
Ci0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDc4LDB4RkEsMHg1RSwweEFBLDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHhBQSwweEFBLDB4OEEsMHg4MywKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4
RkQsMHhGQSwweEJBLDB4QTYsMHhGNywweEY2LDB4RDcsMHhGNiwweEY3LDB4QkYsMHhGRiwweEZG
LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgzNiwweEJBLDB4NzYsMHg1RSwweEY3LDB4RjYs
MHhENywweEY2LDB4NzUsMHhENywweDlELDB4RDUsCi0gICAgMHhGNywweEY2LDB4OTcsMHhGNiww
eEIyLDB4QUEsMHhBMCwweEEyLDB4RDcsMHhGNiwweEY3LDB4RUUsMHg4MCwweEEwLDB4MDAsMHhB
MCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4OEYsMHhFRCwweDM1LDB4MzEsMHgxOCwweEZG
LDB4RjcsMHhGNiwweDM1LDB4MEQsMHhCQSwweEVBLAotICAgIDB4MTgsMHhGRiwweEI2LDB4RUUs
MHhFMCwweDc4LDB4RkUsMHhERiwweEI3LDB4RjYsMHhCNiwweEVFLDB4RkYsMHg5NywweEJGLDB4
QUEsCi0gICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweEEyLDB4QUEsMHhBMCwweEZBLDB4OTYsMHhG
NiwweDc1LDB4RUUsMHg3MCwweDYwLDB4RTgsMHg3OCwKLSAgICAweDk2LDB4RUUsMHgxNCwweERF
LDB4QTgsMHhFOCwweEU4LDB4NUEsMHg1NSwweEU2LDB4QjMsMHhENSwweEE4LDB4QUEsMHhFMiww
eDdBLAotICAgIDB4MTQsMHhERSwweDcxLDB4Q0QsMHg3OCwweDdBLDB4RDcsMHgyNSwweEI2LDB4
RjYsMHg5MiwweEQ1LDB4QkQsMHgyRCwweDBCLDB4MDIsCi0gICAgMHhGNywweEZFLDB4OTYsMHhG
NiwweEJELDB4QUYsMHhCQiwweDhBLDB4RjcsMHhGNiwweEI3LDB4RUUsMHhFQSwweEJBLDB4RUEs
MHhBRSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RkYsMHhERCwweDU3LDB4NTUsMHhGNyww
eEY2LDB4RDcsMHhGNiwweDU5LDB4RDUsMHg1NSwweEI1LAotICAgIDB4RjgsMHhGNiwweEI2LDB4
RUUsMHhFRSwweDdGLDB4QkUsMHgyQSwweEY3LDB4RjYsMHhCNywweEVFLDB4RkYsMHhGRiwweEVC
LDB4QUEsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweEVDLDB4QkYsMHhBQywweDM4LDB4RDcs
MHhGNiwweEI3LDB4RUUsMHhBQiwweDJFLDB4OEUsMHhBQSwKLSAgICAweEQ3LDB4RjYsMHhCNiww
eEVFLDB4MDgsMHhBMiwweEE4LDB4RUEsMHhENywweEY2LDB4QjYsMHhFRSwweDg4LDB4M0UsMHhC
RSwweEI3LAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhGRSwweDZFLDB4RkUsMHg3RSwweEQ3
LDB4RjYsMHhCNiwweEVFLDB4RkYsMHgzRiwweDNGLDB4QUYsCi0gICAgMHhENywweEY2LDB4QjYs
MHhFRSwweERELDB4N0UsMHg3MCwweEVBLDB4RDYsMHhGNiwweEI3LDB4RUUsMHg1RCwweDVGLDB4
NUYsMHhGQiwKLSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4QUQsMHhGRCwweEFELDB4QjcsMHhG
OCwweEZFLDB4RDcsMHhFRSwweDJCLDB4MjcsMHgyRCwweEY1LAotICAgIDB4MzgsMHhGRiwweEY4
LDB4RjYsMHgyQSwweEFBLDB4QUYsMHhCRiwweDM4LDB4RkYsMHgxOSwweEZGLDB4MkUsMHhBNiww
eEFGLDB4QUYsCi0gICAgMHgzOCwweEZGLDB4RjcsMHhGNiwweDdBLDB4RUEsMHhFMCwweDgwLDB4
MTgsMHhGNywweEY3LDB4RjYsMHg1NSwweDU1LDB4NTcsMHg1RSwKLSAgICAweEY4LDB4RjYsMHhE
NywweEY2LDB4RTgsMHhBQSwweEZCLDB4MkUsMHhGNywweEY2LDB4RDcsMHhGNiwweDZBLDB4MkUs
MHgyQiwweEE4LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBNSwweEQ2LDB4RkEsMHg3QSww
eEY3LDB4RjYsMHg5NiwweEVFLDB4RTAsMHhBQSwweEQ4LDB4RkEsCi0gICAgMHhCNywweEY2LDB4
RDcsMHhFRSwweEJFLDB4OEEsMHhBQSwweEEwLDB4RDcsMHhGNiwweEI2LDB4RUUsMHgyQiwweDJB
LDB4QUEsMHgwRiwKLSAgICAweEQ3LDB4RjYsMHgzNCwweERFLDB4RjgsMHg3OCwweEU4LDB4Nzgs
MHg1NCwweEU2LDB4RDIsMHhENSwweDM2LDB4MzYsMHgzRSwweDJFLAotICAgIDB4RDcsMHhGNiww
eDc1LDB4RTYsMHgwRiwweDg5LDB4MDEsMHgwQiwweEQ3LDB4RjYsMHgzNCwweEU2LDB4NzgsMHg3
OCwweEU4LDB4RTIsCi0gICAgMHgzNCwweEU2LDB4OTIsMHhDRCwweDU4LDB4NUEsMHg1OCwweDc4
LDB4QjMsMHhENSwweDcxLDB4Q0QsMHg1RiwweEVBLDB4QzMsMHhDMiwKLSAgICAweEQyLDB4RDUs
MHg3MSwweENELDB4MkQsMHgxNywweEE1LDB4QTUsMHgxNCwweERFLDB4RDMsMHhERCwweDYzLDB4
RUIsMHg4QSwweENELAotICAgIDB4OTIsMHhDRCwweEVGLDB4QkMsMHhFQSwweEI4LDB4RjgsMHg1
QywweDUxLDB4QzUsMHgxMCwweEM1LDB4MjgsMHhCRSwweEJFLDB4NTUsCi0gICAgMHg3NSwweEVF
LDB4NTEsMHhDRCwweEJELDB4QTUsMHgyRCwweDBELDB4RDcsMHhGNiwweDc1LDB4RUUsMHhBRCww
eDI5LDB4MEEsMHgwMiwKLSAgICAweEQ3LDB4RjYsMHg3NSwweEVFLDB4QzIsMHhBQSwweDY4LDB4
QTgsMHg5NiwweEVFLDB4MzQsMHhFNiwweDdDLDB4RkEsMHg3QSwweDZFLAotICAgIDB4NTUsMHhF
NiwweDM0LDB4RTYsMHhERSwweERCLDB4NzcsMHg1QiwweDc1LDB4RUUsMHg1NSwweEU2LDB4MDcs
MHgwOSwweDI5LDB4NzUsCi0gICAgMHhENiwweEY2LDB4OTUsMHhFRSwweEFGLDB4QTksMHhBQiww
eEFCLDB4QjUsMHhGNiwweEQ2LDB4RUUsMHhBRiwweEFBLDB4RkEsMHhFMiwKLSAgICAweEQ2LDB4
RjYsMHhCNiwweEVFLDB4OEYsMHg3OCwweDUwLDB4NzEsMHhENiwweEY2LDB4QjYsMHhFRSwweEFE
LDB4QUIsMHhGRiwweEE3LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBRCwweDc3LDB4Nzcs
MHhGRiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4RUEsMHhCQiwweEFCLDB4OEEsCi0gICAgMHhENiww
eEY2LDB4QjYsMHhFRSwweEJGLDB4NkYsMHg2QSwweDcyLDB4RDYsMHhGNiwweEI2LDB4RUUsMHg1
RiwweDU5LDB4RkUsMHg3RSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4MkIsMHhBRiwweEZG
LDB4RjcsMHhENiwweEY2LDB4QjYsMHhFRSwweEFFLDB4QkEsMHhERSwweEZCLAotICAgIDB4RDYs
MHhGNiwweEI2LDB4RUUsMHg3OCwweEJGLDB4NzUsMHhGRCwweEQ2LDB4RjYsMHhCNiwweEVFLDB4
RkUsMHhGRSwweEZGLDB4NkIsCi0gICAgMHhENiwweEY2LDB4OTUsMHhFRSwweDU2LDB4REEsMHg3
RSwweEZGLDB4QjYsMHhGNiwweDk2LDB4RUUsMHhERiwweDc3LDB4QkYsMHhDRCwKLSAgICAweEI2
LDB4RjYsMHg5NiwweEVFLDB4OUEsMHg3RSwweEYyLDB4RTIsMHhCNSwweEY2LDB4OTYsMHhFRSww
eDVFLDB4REYsMHhGRiwweEZFLAotICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHhGQiwweEVCLDB4
RkQsMHhFRCwweEQ2LDB4RjYsMHg5NiwweEVFLDB4QUQsMHhBRiwweEJELDB4RkYsCi0gICAgMHhE
NiwweEY2LDB4QjYsMHhFRSwweEJBLDB4MzYsMHgyRiwweDBCLDB4RjYsMHhGNiwweEI3LDB4RUUs
MHhCRSwweEJFLDB4QUEsMHhBQiwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4RUMsMHhBQyww
eEE4LDB4MjgsMHhENywweEY2LDB4RjYsMHhFRSwweDAwLDB4QTgsMHhBOCwweDg4LAotICAgIDB4
RDYsMHhGNiwweEY3LDB4RUUsMHg4OCwweDBBLDB4MDIsMHgwMCwweEQ2LDB4RjYsMHhCNywweEY2
LDB4RTgsMHhDMiwweEUwLDB4RkEsCi0gICAgMHhCNiwweEY2LDB4NzIsMHhENSwweDYwLDB4NjAs
MHg2MCwweDQwLDB4OEIsMHg5QiwweDg0LDB4NTksMHg3QywweDVDLDB4NUMsMHg1QywKLSAgICAw
eEE1LDB4NjEsMHg0MywweDUxLDB4RUMsMHg3QSwweEZBLDB4OEYsMHg2NSwweDU5LDB4RTMsMHg0
OCwweEVFLDB4NkEsMHg3OCwweEUwLAotICAgIDB4QTUsMHg2MSwweEMyLDB4NDgsMHgwRiwweDJE
LDB4QkQsMHhCRiwweDA2LDB4NzIsMHg4NCwweDU5LDB4OEEsMHhBQSwweEZGLDB4QkQsCi0gICAg
MHhDNSwweDY5LDB4NjQsMHg1OSwweDU4LDB4N0UsMHhFRSwweDZBLDB4NjQsMHg1OSwweDA0LDB4
NTEsMHg4QSwweEFBLDB4OTgsMHhBQSwKLSAgICAweDY0LDB4NTksMHgyNCwweDUxLDB4MkYsMHhG
QiwweEZBLDB4QUIsMHhDNSwweDYxLDB4NDQsMHg1MSwweDJFLDB4M0YsMHhCRCwweEQ1LAotICAg
IDB4MjcsMHg3MiwweEM1LDB4NjEsMHgyRiwweDJELDB4NUQsMHg1NSwweDA5LDB4OEIsMHhFNiww
eDYxLDB4MkIsMHhBRiwweEJELDB4QjUsCi0gICAgMHg5MiwweEQ1LDB4MjksMHg4QiwweDJELDB4
QkQsMHhGNSwweDU1LDB4QjYsMHhGNiwweDZFLDB4QjQsMHgwMCwweDAyLDB4MEIsMHgwRCwKLSAg
ICAweEQ3LDB4RkUsMHhENiwweEY2LDB4RkYsMHhGRSwweEVBLDB4QUEsMHhCNywweEZFLDB4RDcs
MHhGNiwweDc3LDB4RkQsMHg1NywweDU1LAotICAgIDB4RDcsMHhGNiwweEI2LDB4RjYsMHhGOCww
eEUyLDB4RTAsMHg4MCwweEQ3LDB4RjYsMHhCNiwweEY2LDB4N0UsMHhFQiwweEY5LDB4QTksCi0g
ICAgMHhENywweEY2LDB4QjYsMHhGNiwweEQ1LDB4QjUsMHhBRiwweEJGLDB4RDcsMHhGNiwweEI2
LDB4RjYsMHhBRSwweEY2LDB4QUEsMHhFQiwKLSAgICAweEQ2LDB4RjYsMHhCNywweEY2LDB4NjAs
MHhFMiwweDIwLDB4QUEsMHhENiwweEY2LDB4QjYsMHhGNiwweDFBLDB4QUUsMHg5QSwweDNBLAot
ICAgIDB4RDYsMHhGNiwweEI3LDB4RjYsMHg3OCwweENBLDB4ODAsMHhBMCwweEY3LDB4RkUsMHhC
NiwweEY2LDB4QUIsMHhCRiwweEE3LDB4QUQsCi0gICAgMHhGNywweEZFLDB4RDcsMHhGNiwweDhC
LDB4QUEsMHg4QiwweEFCLDB4RjcsMHhGRSwweEQ3LDB4RjYsMHg4QiwweEFFLDB4QUEsMHhBQSwK
LSAgICAweEY3LDB4RkUsMHhCNiwweEY2LDB4QTgsMHhBMiwweEVBLDB4NjgsMHhCNiwweEY2LDB4
MzEsMHhDRCwweDgwLDB4ODAsMHhFOCwweDc4LAotICAgIDB4NzIsMHhENSwweDI1LDB4NzIsMHhB
MCwweEUwLDB4NzgsMHg3RSwweDA5LDB4OEIsMHhFNSwweDY5LDB4REMsMHhERSwweEQ3LDB4RkQs
Ci0gICAgMHg0NiwweDdBLDB4MDUsMHg3MiwweEQxLDB4QUYsMHgzRiwweDJBLDB4NjcsMHg4Miww
eDI2LDB4N0EsMHhCNSwweDVGLDB4MUYsMHgwMywKLSAgICAweDY3LDB4ODIsMHgyNiwweDdBLDB4
NTcsMHhEQywweDM4LDB4ODAsMHg4NywweDhBLDB4MDYsMHg3QSwweDIzLDB4ODIsMHhDQSwweDVF
LAotICAgIDB4NjcsMHg4MiwweDI2LDB4N0EsMHgyOCwweEUyLDB4Q0IsMHg1OSwweDY3LDB4ODIs
MHgyNiwweDdBLDB4QjIsMHhCRSwweEJELDB4NzcsCi0gICAgMHgwRCwweEFDLDB4NjYsMHg3QSww
eEQ1LDB4OTUsMHhCNSwweDM1LDB4RDcsMHhGRSwweDhFLDB4QkMsMHgyRCwweDI5LDB4MDksMHgw
QiwKLSAgICAweDE4LDB4RkYsMHhGNywweEZFLDB4QkQsMHhCNSwweEFELDB4MkQsMHhGNywweEZF
LDB4MzgsMHhGNywweEJFLDB4RUEsMHhGQSwweDdFLAotICAgIDB4MTgsMHhGRiwweDM3LDB4Rjcs
MHg4MiwweEFBLDB4QUIsMHhBQiwweDM4LDB4RkYsMHgxNywweEY3LDB4NzcsMHg1RiwweERELDB4
RkUsCi0gICAgMHgzOCwweEZGLDB4RjcsMHhGNiwweEFCLDB4QkEsMHhBQiwweEFBLDB4MTgsMHhG
RiwweEY3LDB4RjYsMHg3QiwweEVBLDB4RjgsMHhEOCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2
LDB4QTAsMHhCMCwweEU4LDB4QUUsMHhGNywweEY2LDB4RDcsMHhGNiwweEFBLDB4RUUsMHhBRSww
eEE4LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhCQiwweEVBLDB4RUEsMHhDMiwweEY3LDB4
RjYsMHhCNywweEVFLDB4QkEsMHhGOCwweEFBLDB4MkEsCi0gICAgMHhGNywweEY2LDB4RDcsMHhG
NiwweEQ1LDB4NTUsMHg1NywweDI4LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGNSwweEFELDB4RUIs
MHhDOCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4N0UsMHhERiwweEVGLDB4MEUsMHhGNyww
eEY2LDB4RDcsMHhGNiwweEI1LDB4NUYsMHg5RSwweDJFLAotICAgIDB4MTcsMHhGRiwweEQ3LDB4
RjYsMHhBRiwweDBCLDB4QUIsMHhBMiwweDE3LDB4RkYsMHhCNiwweEY2LDB4QzgsMHhFOCwweDVB
LDB4NTcsCi0gICAgMHhENiwweEY2LDB4OTYsMHhFRSwweDI4LDB4QUEsMHhCRiwweEFGLDB4QjYs
MHhGNiwweEQ3LDB4RUUsMHg4QSwweDBBLDB4MjAsMHg4MiwKLSAgICAweEQ2LDB4RjYsMHg5Niww
eEVFLDB4N0YsMHg1RSwweDVFLDB4N0UsMHg5NiwweEVFLDB4MzQsMHhFNiwweEEwLDB4RTgsMHhG
OCwweEZFLAotICAgIDB4NzUsMHhFNiwweEYzLDB4RDUsMHhGOCwweEZBLDB4NkEsMHg3QSwweDM1
LDB4RTYsMHg5MiwweENELDB4N0EsMHg1RSwweEJGLDB4MkUsCi0gICAgMHhENywweEY2LDB4OTIs
MHhENSwweEI1LDB4QUYsMHgyQSwweDAyLDB4RDcsMHhGNiwweEI2LDB4RjYsMHgyMSwweDBELDB4
MEQsMHgwOSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NzksMHhGRCwweEY1LDB4NTUsMHhG
NywweEY2LDB4RDcsMHhGNiwweEY1LDB4RkIsMHg1RiwweDVELAotICAgIDB4RjcsMHhGNiwweEI3
LDB4RUUsMHhBQiwweEFCLDB4QUYsMHhBRiwweEY3LDB4RjYsMHhCNywweEVFLDB4MkEsMHhBQSww
eEVBLDB4RkEsCi0gICAgMHhENywweEY2LDB4RjcsMHhFRSwweDJBLDB4MDAsMHgwMCwweDIwLDB4
RDcsMHhGNiwweEI3LDB4RUUsMHg4MiwweDgwLDB4QTAsMHg4MCwKLSAgICAweEQ3LDB4RjYsMHhC
NywweEVFLDB4QTgsMHhFQiwweDgyLDB4QzgsMHhENywweEY2LDB4QjcsMHhFRSwweDI4LDB4MDIs
MHhDMiwweEVBLAotICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHhGOCwweDJBLDB4QUUsMHhBRiww
eEQ3LDB4RjYsMHhCNiwweEVFLDB4QTcsMHhCNSwweEZGLDB4REYsCi0gICAgMHhENywweEY2LDB4
QjcsMHhFRSwweDc3LDB4QkUsMHhCQywweEE4LDB4RDcsMHhGNiwweEI2LDB4RUUsMHg4QiwweDhC
LDB4MkYsMHhCRSwKLSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4QzgsMHg4MiwweDAwLDB4ODAs
MHhENywweEY2LDB4QjcsMHhFRSwweEU4LDB4QUUsMHhFQSwweDJBLAotICAgIDB4RDcsMHhGNiww
eEI2LDB4RUUsMHhFRiwweEZCLDB4QUEsMHhBRiwweEQ3LDB4RjYsMHhCNiwweEVFLDB4MjksMHhF
RiwweEFBLDB4MEEsCi0gICAgMHgxOCwweEY3LDB4RDcsMHhGNiwweDJCLDB4QUIsMHhBRiwweEJE
LDB4MzgsMHhGRiwweEY3LDB4RjYsMHhBQiwweDJBLDB4MkIsMHhFRCwKLSAgICAweDM5LDB4RkYs
MHgzOCwweEZGLDB4RUIsMHhBRiwweEFGLDB4QkYsMHgzOCwweEZGLDB4RjcsMHhGNiwweDVFLDB4
N0EsMHg3OCwweDYwLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBRiwweDA5LDB4QTgsMHg4
MywweEY3LDB4RjYsMHhENywweEY2LDB4QzgsMHg2MiwweDdFLDB4NTcsCi0gICAgMHhGNywweEY2
LDB4OTYsMHhFRSwweEEwLDB4QUEsMHhFQSwweERGLDB4RDcsMHhGNiwweDk2LDB4RUUsMHg3MCww
eEZFLDB4NUYsMHg1NywKLSAgICAweEI2LDB4RUUsMHg5NiwweEVFLDB4OEEsMHhBRiwweDNGLDB4
QTUsMHhENywweEY2LDB4QjYsMHhFRSwweDBELDB4MEQsMHgyRCwweDI1LAotICAgIDB4RDcsMHhG
NiwweEY0LDB4REQsMHhFOCwweEUwLDB4NjAsMHg2MCwweDE0LDB4REUsMHg1MSwweEM1LDB4MDAs
MHgyMCwweDJFLDB4MzUsCi0gICAgMHhENiwweEY2LDB4NTUsMHhFNiwweDA5LDB4MkQsMHhBRCww
eEJELDB4RDcsMHhGNiwweDU1LDB4RUUsMHg2MiwweEU4LDB4RUEsMHhFOCwKLSAgICAweDM1LDB4
RTYsMHg5MiwweENELDB4NUEsMHg1OCwweDU4LDB4NTgsMHhCMiwweEQ1LDB4NzEsMHhDRCwweDYz
LDB4QzIsMHhDMiwweEMyLAotICAgIDB4QjIsMHhENSwweDcxLDB4Q0QsMHhCNSwweEFELDB4MkQs
MHgyRCwweDEzLDB4REUsMHhCMiwweEQ1LDB4OEIsMHg4MywweDI5LDB4QTksCi0gICAgMHg5Miww
eEQ1LDB4Q0YsMHhCQywweDdDLDB4NUMsMHg1QywweDVDLDB4MzEsMHhDNSwweEFFLDB4QjQsMHgw
QiwweDJCLDB4QjUsMHhENywKLSAgICAweDk2LDB4RUUsMHg1MSwweENELDB4MkQsMHhBRiwweEJE
LDB4RjUsMHhENywweEY2LDB4RjMsMHhERCwweDAwLDB4MEEsMHgwQiwweDJELAotICAgIDB4RDcs
MHhGNiwweDc1LDB4RUUsMHhFQSwweEY4LDB4NTgsMHhGQSwweDc1LDB4RUUsMHgzNCwweEU2LDB4
RTgsMHhDMCwweDcwLDB4NzgsCi0gICAgMHgzNSwweEVFLDB4NTQsMHhFNiwweEU1LDB4NTcsMHhE
RiwweDc2LDB4NzYsMHhFRSwweDM1LDB4RTYsMHhGQiwweEFGLDB4QjYsMHhGRSwKLSAgICAweEQ2
LDB4RjYsMHhCNiwweEVFLDB4RkQsMHhGRSwweEVFLDB4MkEsMHhENiwweEY2LDB4QjYsMHhFRSww
eERCLDB4RkYsMHg3QiwweDZBLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBRCwweEVGLDB4
QUQsMHgzRiwweEI2LDB4RjYsMHhENiwweEVFLDB4RkYsMHhGRiwweEZGLDB4QUYsCi0gICAgMHhE
NiwweEY2LDB4QjYsMHhFRSwweEE2LDB4RUEsMHhFQSwweEFBLDB4RDYsMHhGNiwweEI2LDB4RUUs
MHhGMiwweEFGLDB4QUEsMHhBMiwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QTEsMHg4RSww
eEZFLDB4QUEsMHhENiwweEY2LDB4QjYsMHhFRSwweEUyLDB4QTMsMHg4MiwweEJBLAotICAgIDB4
RDYsMHhGNiwweDk2LDB4RUUsMHhBMiwweDhBLDB4RDgsMHg4QSwweEQ2LDB4RjYsMHhCNiwweEVF
LDB4RUIsMHhBMiwweDY4LDB4QTIsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDZFLDB4RjIs
MHhFMiwweEVCLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGOSwweEZGLDB4N0EsMHhBQSwKLSAgICAw
eEQ2LDB4RjYsMHg5NiwweEVFLDB4RkYsMHhERiwweEZBLDB4RkEsMHhCNiwweEY2LDB4OTYsMHhF
RSwweDlGLDB4QUEsMHg4QiwweEJBLAotICAgIDB4OTYsMHhGNiwweEI2LDB4RUUsMHhCRiwweEVE
LDB4QkIsMHhGRiwweEI2LDB4RjYsMHg5NiwweEVFLDB4N0UsMHhGQSwweENBLDB4QTgsCi0gICAg
MHg5NiwweEY2LDB4QjYsMHhFRSwweDdFLDB4N0YsMHhGNywweEY3LDB4QjYsMHhFRSwweDk2LDB4
RUUsMHgyMiwweDJBLDB4QUEsMHhDMiwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4OEYsMHgw
QiwweDAzLDB4MkQsMHhGNiwweEY2LDB4QjYsMHhFRSwweEVFLDB4RkEsMHhGQSwweEZFLAotICAg
IDB4RDYsMHhGNiwweEI3LDB4RTYsMHgyMCwweEEyLDB4MEEsMHg4MCwweEQ2LDB4RjYsMHhGNiww
eEVFLDB4MDgsMHgyOCwweDIwLDB4MDIsCi0gICAgMHhGNiwweEY2LDB4QjYsMHhFRSwweEVCLDB4
QUYsMHhBRiwweEZFLDB4RDYsMHhGNiwweEI2LDB4RjYsMHg3MiwweERBLDB4QkEsMHgyMCwKLSAg
ICAweEQ2LDB4RjYsMHhCMiwweEQ1LDB4NjAsMHg2MCwweDYwLDB4RTAsMHg2QywweEFDLDB4ODMs
MHg1MSwweDVFLDB4NUMsMHg1QywweDVDLAotICAgIDB4QTUsMHg2MSwweDIzLDB4NTEsMHgyRiww
eEI3LDB4N0YsMHhEQSwweDg1LDB4NTksMHgyMywweDUxLDB4NkEsMHhFOCwweEFBLDB4QjcsCi0g
ICAgMHg4NSwweDU5LDB4MjMsMHg1MSwweEY1LDB4NzcsMHg1QywweEVFLDB4QzYsMHg2MSwweDI0
LDB4NTEsMHgwQiwweEFGLDB4RUYsMHg1NywKLSAgICAweEE2LDB4NjEsMHg0NCwweDUxLDB4ODgs
MHhFQiwweDdFLDB4NkIsMHg2NCwweDU5LDB4MDMsMHg0OSwweDJBLDB4RkUsMHhERSwweEZGLAot
ICAgIDB4NDQsMHg1MSwweDAzLDB4NDksMHgwMCwweEFFLDB4OTYsMHg1NywweDg1LDB4NTksMHgy
MywweDQ5LDB4QUYsMHgyRiwweEFGLDB4RkQsCi0gICAgMHhFNSwweDYxLDB4NjUsMHg1MSwweDJB
LDB4MkYsMHhBRCwweEFELDB4ODcsMHg3QSwweEU1LDB4NjEsMHgzRCwweEVELDB4MzUsMHhCNSwK
LSAgICAweDRCLDB4OTMsMHg4OCwweDdBLDB4MkIsMHgyRCwweDJELDB4MkQsMHhEMywweERELDB4
NkEsMHg5MywweDJELDB4QkQsMHhGNSwweEQ1LAotICAgIDB4QjYsMHhGNiwweDBELDB4QTQsMHgw
MCwweDAyLDB4MkYsMHhCNSwweEQ3LDB4RkUsMHhGNCwweERELDB4MDAsMHgwMCwweEFBLDB4RjUs
Ci0gICAgMHhENywweEY2LDB4QjIsMHhENSwweDAwLDB4ODAsMHhFQSwweDVGLDB4QjYsMHhGNiww
eDUwLDB4Q0QsMHgwMCwweDAwLDB4MEEsMHhGNSwKLSAgICAweEQ2LDB4RjYsMHg1NSwweEVFLDB4
ODAsMHgyMiwweDIyLDB4QkQsMHhENiwweEY2LDB4QjYsMHhGNiwweEVELDB4N0YsMHg3QSwweDlE
LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RjYsMHgyRiwweEFCLDB4QkIsMHg1NSwweEQ2LDB4RjYs
MHhCNiwweEY2LDB4QTgsMHhERSwweEZFLDB4QkYsCi0gICAgMHhENiwweEY2LDB4QjYsMHhGNiww
eEEzLDB4MkIsMHg4OCwweDZBLDB4RjcsMHhGRSwweEI2LDB4RjYsMHhBOSwweEE3LDB4M0QsMHgw
RCwKLSAgICAweEY3LDB4RkUsMHhENywweEY2LDB4NkYsMHhCRiwweEU4LDB4RkMsMHhGNywweEZF
LDB4RDcsMHhGNiwweDJBLDB4MkIsMHhDQSwweDYwLAotICAgIDB4RDcsMHhGRSwweDcyLDB4RDUs
MHg4MCwweDgwLDB4RTAsMHg3QSwweDM0LDB4RTYsMHg4NywweDdBLDB4QTAsMHhFOCwweDZBLDB4
N0UsCi0gICAgMHg4QiwweDlCLDB4MDUsMHg3MiwweDU4LDB4NUUsMHg1NywweDU1LDB4NDYsMHg3
QSwweDA1LDB4NzIsMHhBNywweEVGLDB4RTgsMHgwMywKLSAgICAweDY3LDB4ODIsMHgyNiwweDdB
LDB4MkYsMHgwRCwweDA1LDB4MkQsMHg4NywweDhBLDB4NDYsMHg4MiwweDM5LDB4MkUsMHhBRiww
eEUyLAotICAgIDB4ODgsMHg4QSwweDI2LDB4ODIsMHhBOCwweEUyLDB4NTMsMHg3QiwweDY3LDB4
OEEsMHhFNSwweDc5LDB4NzYsMHhGMCwweEZFLDB4RUYsCi0gICAgMHg0NiwweDgyLDB4RTQsMHg3
MSwweEVCLDB4NkYsMHhDQiwweDAzLDB4QzgsMHg5MiwweDI1LDB4N0EsMHhERCwweEY3LDB4QkYs
MHgyRiwKLSAgICAweDUyLDB4RDUsMHhBOCwweDhBLDB4MzUsMHgzNSwweDNELDB4MkQsMHhGOCww
eEZFLDB4RDMsMHhFNSwweDJELDB4MEIsMHgwQiwweDAzLAotICAgIDB4MTcsMHhGRiwweEY4LDB4
RkUsMHhCOSwweEE5LDB4RUYsMHhCQiwweDM4LDB4RkYsMHhGNywweEY2LDB4QUIsMHhCQiwweEFG
LDB4OEYsCi0gICAgMHgxOCwweEZGLDB4MzcsMHhGNywweEVCLDB4QUEsMHhCQSwweEFBLDB4Mzgs
MHhGRiwweDE4LDB4RkYsMHg1RSwweDVBLDB4REEsMHhCRiwKLSAgICAweDE4LDB4RkYsMHgzOCww
eEY3LDB4MjgsMHhBMiwweDI4LDB4QUEsMHgxOCwweEZGLDB4RjcsMHhGNiwweDc4LDB4NzgsMHg3
QywweDc4LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhENiwweEFDLDB4MkEsMHgwMiwweEY3
LDB4RjYsMHhENywweEY2LDB4RjgsMHhFOCwweDJBLDB4QUUsCi0gICAgMHhGNywweEY2LDB4RDcs
MHhGNiwweEVBLDB4NjIsMHg4QSwweEFBLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgwRSwweDNBLDB4
RUUsMHhGNiwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4ODAsMHgwMCwweEJBLDB4QkYsMHhG
NywweEY2LDB4RDcsMHhGNiwweEE4LDB4RkUsMHhCOCwweEFBLAotICAgIDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHgyQywweEFDLDB4QUEsMHgyOCwweDE3LDB4RkYsMHhENywweEY2LDB4QkYsMHgwQiww
eDBCLDB4ODIsCi0gICAgMHgxOCwweEY3LDB4QjYsMHhGNiwweEUwLDB4RjgsMHg3OCwweDVGLDB4
RDYsMHhGNiwweDk2LDB4RUUsMHhGQSwweEZBLDB4RUEsMHhGRiwKLSAgICAweEI2LDB4RjYsMHg5
NiwweEVFLDB4MkIsMHhBRiwweEY3LDB4NUYsMHhCNiwweEY2LDB4OTYsMHhFRSwweDM4LDB4RUYs
MHg1RiwweDdELAotICAgIDB4QjcsMHhGNiwweDU1LDB4RTYsMHhFOCwweEZBLDB4NkUsMHg1Nyww
eDc1LDB4RUUsMHgxNCwweEU2LDB4RTgsMHhFMiwweEZBLDB4N0YsCi0gICAgMHg5NiwweEVFLDB4
RjMsMHhERCwweDVCLDB4QkYsMHhBRiwweDBGLDB4RDcsMHhGRSwweDM0LDB4RTYsMHhCNSwweDJG
LDB4MDIsMHgwMiwKLSAgICAweEY3LDB4RjYsMHhCNywweEY2LDB4RkYsMHhGQSwweEVBLDB4QTgs
MHhGNywweEY2LDB4RDcsMHhGNiwweDU1LDB4RUYsMHg5RCwweDNELAotICAgIDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHg1RiwweDc2LDB4NUYsMHhGRiwweEY3LDB4RjYsMHhCNiwweEVFLDB4REIsMHhB
QiwweEFFLDB4QUUsCi0gICAgMHhENywweEY2LDB4RjcsMHhFRSwweDAwLDB4ODIsMHhBMiwweDA4
LDB4QjcsMHhGNiwweEY3LDB4RUUsMHhBQiwweDJGLDB4QUIsMHgyQSwKLSAgICAweEY3LDB4RjYs
MHhCNywweEY2LDB4MkEsMHhCQiwweEVGLDB4RkYsMHhENywweEY2LDB4QjYsMHhFRSwweDgwLDB4
RTAsMHhGOCwweEZDLAotICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHg0RSwweEFBLDB4QUEsMHgw
QSwweEQ3LDB4RjYsMHhCNywweEVFLDB4QUEsMHhBRSwweEZBLDB4NEEsCi0gICAgMHhENywweEY2
LDB4QjYsMHhFRSwweEVGLDB4RkYsMHhFRiwweEEyLDB4RDcsMHhGNiwweEI3LDB4RUUsMHhGRiww
eEFBLDB4ODIsMHgwMCwKLSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4MkEsMHg4MiwweEE4LDB4
QkEsMHhENywweEY2LDB4QjcsMHhFRSwweEE4LDB4MDgsMHgwMCwweDAwLAotICAgIDB4RjcsMHhG
NiwweEI2LDB4RUUsMHhGRiwweEVCLDB4RUEsMHhFQSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4ODgs
MHhBQywweDNFLDB4QUEsCi0gICAgMHhCNywweEY2LDB4RjcsMHhFRSwweEJBLDB4RkEsMHhBRSww
eEFFLDB4RjcsMHhGNiwweEQ3LDB4RUUsMHhGNSwweEZELDB4QUYsMHhBOSwKLSAgICAweEY3LDB4
RjYsMHhENywweEY2LDB4RUQsMHhBRCwweEJFLDB4QUUsMHgxOCwweEZGLDB4RDcsMHhGNiwweDBC
LDB4MjksMHhBRiwweEFGLAotICAgIDB4MzgsMHhGRiwweDE4LDB4RjcsMHgyMywweDJCLDB4QUYs
MHhCNSwweDM4LDB4RkYsMHhGOCwweEY2LDB4RTgsMHhFOCwweEEwLDB4QTIsCi0gICAgMHgxOCww
eEY3LDB4RDcsMHhGNiwweDdFLDB4NUUsMHg1RSwweDUwLDB4RDcsMHhGNiwweEI3LDB4RUUsMHhF
OCwweDcwLDB4NzIsMHg1RSwKLSAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4RkEsMHhGRSwweDdG
LDB4REYsMHg5NiwweEVFLDB4OTcsMHhFNiwweDAwLDB4ODgsMHgyMiwweDgwLAotICAgIDB4OTYs
MHhFRSwweDc2LDB4RTYsMHgyMCwweDIwLDB4MEIsMHgwOCwweEQ3LDB4RjYsMHg5NiwweEVFLDB4
MkYsMHgxRCwweEE3LDB4M0QsCi0gICAgMHhENywweEY2LDB4RjQsMHhERCwweDYwLDB4NjAsMHg2
MCwweDY4LDB4RjMsMHhENSwweEVGLDB4QkMsMHhCRiwweDI3LDB4QkYsMHgzRiwKLSAgICAweEI3
LDB4RjYsMHgzNCwweEU2LDB4MjksMHgwOSwweDJCLDB4MjksMHhCNiwweEY2LDB4NzYsMHhFRSww
eEU4LDB4QTgsMHhFMiwweDZBLAotICAgIDB4NTUsMHhFRSwweDkyLDB4RDUsMHg1OCwweDU4LDB4
NTgsMHhGOCwweEQzLDB4RDUsMHg5MiwweENELDB4NTUsMHg3QiwweDZBLDB4N0UsCi0gICAgMHhC
MiwweEQ1LDB4NzEsMHhDRCwweDBELDB4MzUsMHhGNSwweDk3LDB4RjMsMHhERCwweEIyLDB4RDUs
MHgwRiwweDBELDB4MEYsMHgwMSwKLSAgICAweDkyLDB4RDUsMHg4RSwweEI0LDB4RDgsMHhGQyww
eDU4LDB4N0MsMHhDRiwweEJDLDB4NEQsMHhBNCwweDJBLDB4MEEsMHgyQiwweDI3LAotICAgIDB4
RDMsMHhERCwweDEwLDB4QzUsMHgwOSwweDI5LDB4QTksMHhBRCwweDc1LDB4RUUsMHhEMywweEQ1
LDB4MkQsMHgzRCwweEI1LDB4RjUsCi0gICAgMHhCNiwweEY2LDB4NTUsMHhFNiwweDhBLDB4QUEs
MHhFQiwweEI1LDB4NzUsMHhFRSwweDM0LDB4RTYsMHg2MCwweEYwLDB4RTAsMHgyMiwKLSAgICAw
eDU1LDB4RTYsMHgzNCwweEU2LDB4M0IsMHgyOCwweDQ4LDB4NUMsMHg3NSwweEVFLDB4MzQsMHhF
NiwweEY3LDB4RjUsMHhCNSwweEI1LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBQSwweEE4
LDB4QUQsMHhFRCwweEQ2LDB4RjYsMHhCNiwweEVFLDB4RkIsMHhBRiwweEFCLDB4QTIsCi0gICAg
MHhENiwweEY2LDB4QjYsMHhFRSwweEZDLDB4QjAsMHhBQSwweEZBLDB4RDYsMHhGNiwweEI3LDB4
RUUsMHhFQSwweEZBLDB4RjgsMHhFOCwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4QUIsMHhB
QSwweEFBLDB4QUIsMHhENiwweEY2LDB4RDcsMHhFRSwweEFBLDB4OEEsMHhBOCwweDhBLAotICAg
IDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBQSwweEVBLDB4RTAsMHgwMiwweEQ2LDB4RjYsMHhCNiww
eEVFLDB4RUEsMHgyMSwweEVFLDB4QjIsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEZGLDB4
RkUsMHhCRSwweDIyLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhEQSwweDc3LDB4REUsMHg5MCwKLSAg
ICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4RTksMHhBQiwweEFCLDB4MkIsMHhENiwweEY2LDB4QjYs
MHhFRSwweDJBLDB4M0QsMHgwNywweDVBLAotICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHhGRSww
eEZFLDB4RkUsMHhGRSwweEI2LDB4RjYsMHg5NiwweEVFLDB4REEsMHhCQSwweDlFLDB4N0YsCi0g
ICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweEFFLDB4QUUsMHg4QSwweDJCLDB4OTYsMHhGNiwweEI2
LDB4RUUsMHhCRiwweEFCLDB4QUYsMHhGNywKLSAgICAweDk1LDB4RjYsMHhCNiwweEVFLDB4RkQs
MHhENSwweDU2LDB4NTcsMHhENiwweEY2LDB4OTUsMHhFRSwweEVCLDB4RkYsMHg5RiwweDJGLAot
ICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHgyRCwweDJCLDB4MEQsMHgyRSwweEQ2LDB4RjYsMHhG
NywweEVFLDB4ODAsMHhBMCwweDAwLDB4MjgsCi0gICAgMHhGNiwweEY2LDB4QjYsMHhFRSwweEUy
LDB4QkEsMHhFRSwweEZGLDB4RjYsMHhGNiwweEQ2LDB4RjYsMHg1NiwweEQ1LDB4RkQsMHhGRiwK
LSAgICAweEY2LDB4RjYsMHhCNiwweEVFLDB4QkYsMHhBRSwweEZFLDB4RUEsMHhGNSwweEZFLDB4
RDcsMHhGNiwweDU3LDB4NTUsMHhGNSwweDVELAotICAgIDB4RDcsMHhGNiwweDMzLDB4RUUsMHg2
MCwweEUwLDB4ODAsMHhBMCwweEYyLDB4REQsMHg4MywweDU5LDB4NUUsMHg1QywweDc4LDB4Nzgs
Ci0gICAgMHg4NCwweDUxLDB4MDMsMHg0OSwweEEwLDB4N0UsMHhGRSwweDdFLDB4NjQsMHg1MSww
eDAzLDB4NDksMHgzRSwweEQ3LDB4QkIsMHhCQiwKLSAgICAweDY0LDB4NTksMHgyMywweDQ5LDB4
QjgsMHhCQywweEZCLDB4N0YsMHg2MywweDUxLDB4MjQsMHg1MSwweDVFLDB4N0UsMHhCQSwweDVG
LAotICAgIDB4NDUsMHg1MSwweDA0LDB4NDksMHgwMiwweEI3LDB4NTgsMHg1RCwweDI0LDB4NTEs
MHhFMywweDQwLDB4MDgsMHhBQSwweDc3LDB4NzcsCi0gICAgMHgyNCwweDQ5LDB4QzIsMHg0MCww
eEE4LDB4QUUsMHgwOSwweEI3LDB4ODUsMHg1OSwweDAzLDB4NDksMHhCQiwweDA3LDB4MkQsMHhC
RCwKLSAgICAweDA2LDB4NkEsMHg2NCwweDU5LDB4QUIsMHhBRiwweEFGLDB4MkQsMHhBOCwweDdB
LDB4QzUsMHg2MSwweEI1LDB4QUQsMHgyRiwweDJCLAotICAgIDB4MkEsMHg4QiwweDg4LDB4NzIs
MHgyRCwweDJGLDB4QkQsMHhBRCwweEFCLDB4OUIsMHgwQSwweDhCLDB4MkIsMHhBRiwweEE5LDB4
QkQsCi0gICAgMHg0RSwweEFDLDB4NkEsMHg5MywweDNGLDB4REQsMHg1NSwweDU1LDB4MzEsMHhD
NSwweDZCLDB4OTMsMHgwMiwweEZGLDB4NTUsMHg1NSwKLSAgICAweDMxLDB4QzUsMHg0QSwweDhC
LDB4QTAsMHhGQiwweEY3LDB4NUQsMHgwRiwweEM1LDB4NEEsMHg4QiwweDJBLDB4QUYsMHhERiww
eDU1LAotICAgIDB4MzQsMHhFNiwweDhCLDB4OTMsMHgwMiwweEJCLDB4RjUsMHg1NSwweDc1LDB4
RUUsMHg4QSwweDkzLDB4MDAsMHg4QSwweEZGLDB4NTUsCi0gICAgMHg5NiwweEY2LDB4MkMsMHhB
NCwweDAwLDB4MDIsMHhBRiwweDU1LDB4OTYsMHhGNiwweENGLDB4QkMsMHgwMCwweDAwLDB4QUEs
MHg1NSwKLSAgICAweEI2LDB4RjYsMHhDRiwweEJDLDB4MDAsMHgyMiwweEZFLDB4NTUsMHhENyww
eEY2LDB4RjAsMHhDNCwweDAwLDB4MDIsMHgyQiwweEJELAotICAgIDB4RDcsMHhGRSwweDE0LDB4
RTYsMHgwMCwweDAwLDB4ODIsMHg1NSwweEI3LDB4RjYsMHhEMCwweEM0LDB4MDAsMHg4MCwweEEw
LDB4N0UsCi0gICAgMHgxNSwweEU2LDB4QzksMHg4MiwweEEwLDB4RTgsMHg3QSwweDVGLDB4Q0Ms
MHhBMywweEU1LDB4NjksMHg3OCwweDVFLDB4NUYsMHg3NSwKLSAgICAweDI2LDB4NzIsMHhDNCww
eDY5LDB4REEsMHg4QSwweDA4LDB4RUEsMHg0NiwweDgyLDB4MDUsMHg3MiwweDhGLDB4ODEsMHg4
QiwweEVCLAotICAgIDB4ODcsMHg4QSwweDQ3LDB4ODIsMHhCRCwweDAzLDB4MjksMHg3NSwweDg4
LDB4OEEsMHgwNSwweDdBLDB4QTAsMHg5OCwweEI4LDB4RjMsCi0gICAgMHg2NywweDhBLDB4RTUs
MHg3OSwweEVBLDB4QUEsMHhGRSwweEY2LDB4NjcsMHg4QSwweEU1LDB4NzksMHhBNywweEFCLDB4
MjcsMHgwRiwKLSAgICAweEE4LDB4OTIsMHgwNSwweDgyLDB4QkQsMHhGRiwweDJBLDB4MkEsMHgy
OSwweDlCLDB4NjcsMHg4MiwweEI1LDB4QkYsMHhBQiwweDJGLAotICAgIDB4RDMsMHhFNSwweDI5
LDB4OUIsMHgyNSwweDNELDB4MkQsMHgyRCwweEY3LDB4RkUsMHg1NSwweEVFLDB4MDEsMHgwOSww
eDAzLDB4MDMsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGRSwweEFCLDB4QUQsMHhGQiwweEJCLDB4
MzgsMHhGRiwweEY4LDB4RjYsMHhBRiwweEVGLDB4RkYsMHhBRiwKLSAgICAweDE4LDB4RkYsMHgz
OCwweEY3LDB4QTIsMHhBMCwweDIyLDB4QTgsMHgzOCwweEZGLDB4MTgsMHhGNywweEFGLDB4RkYs
MHhCRSwweEFGLAotICAgIDB4MzgsMHhGRiwweDE4LDB4RkYsMHhGRSwweDdBLDB4N0EsMHg2RSww
eDE4LDB4RkYsMHhGNywweEY2LDB4NzgsMHg3RSwweERBLDB4RUEsCi0gICAgMHgxNywweEZGLDB4
RjcsMHhGNiwweEQ3LDB4NUQsMHg1NSwweDdELDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBOCwweDBF
LDB4MkIsMHg4OCwKLSAgICAweEY3LDB4RkUsMHhGNywweEY2LDB4RkQsMHhENywweDdELDB4REYs
MHhGNywweEY2LDB4RDcsMHhGNiwweDYwLDB4RjAsMHg4MCwweDhCLAotICAgIDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHhBQiwweDBBLDB4MkYsMHgyNiwweEQ3LDB4RkUsMHhGNywweEY2LDB4REQsMHhE
NywweDU3LDB4RDUsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweDk1LDB4MkQsMHgyQiwweENG
LDB4MTcsMHhGRiwweEI2LDB4RjYsMHhBMCwweEUwLDB4N0MsMHg3RSwKLSAgICAweEQ2LDB4RjYs
MHg5NiwweEVFLDB4RkEsMHhGQSwweERFLDB4RkUsMHhCNiwweEY2LDB4OTYsMHhFRSwweEZGLDB4
QkYsMHgzRiwweDc3LAotICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHhGRiwweEFGLDB4QTksMHgy
QiwweEI2LDB4RjYsMHgzNSwweEU2LDB4QUEsMHhFMCwweEZBLDB4NzgsCi0gICAgMHg1NSwweEU2
LDB4RDMsMHhERCwweDIwLDB4RTIsMHhGQSwweDVBLDB4MzUsMHhFNiwweDkzLDB4Q0QsMHgyMCww
eEFBLDB4QjcsMHgzNywKLSAgICAweEQ3LDB4RkUsMHg1NSwweEU2LDB4QjUsMHhBNSwweEFELDB4
MkIsMHhENywweEY2LDB4QjcsMHhGNiwweDAxLDB4MkQsMHgwOCwweDAyLAotICAgIDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHhERiwweEVELDB4N0QsMHhGQiwweEY3LDB4RjYsMHhENywweEY2LDB4QUYs
MHhFMywweEVELDB4NUIsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDZBLDB4RUUsMHhGRCww
eDU1LDB4RjcsMHhGNiwweEI2LDB4RUUsMHhBQSwweEZGLDB4QTYsMHhBRiwKLSAgICAweEY3LDB4
RjYsMHhENywweEY2LDB4NzUsMHg3NywweDU1LDB4RkQsMHhENywweEY2LDB4QjYsMHhFRSwweEQ4
LDB4RTgsMHg4MCwweDgwLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHgzQiwweEJCLDB4N0Ms
MHhFMCwweEQ3LDB4RjYsMHhCNiwweEVFLDB4N0UsMHhFRiwweDJCLDB4OEEsCi0gICAgMHhGNyww
eEY2LDB4QjcsMHhFRSwweEFCLDB4RUUsMHhFMiwweEZBLDB4RDcsMHhGNiwweEI3LDB4RUUsMHhB
OCwweDgwLDB4MDIsMHgwMiwKLSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4ODIsMHhCQSwweDNB
LDB4RkEsMHhENywweEY2LDB4QjcsMHhFRSwweDg4LDB4MkEsMHhGQSwweEVBLAotICAgIDB4RDcs
MHhGNiwweEI3LDB4RUUsMHhBRSwweEFGLDB4RUIsMHg3RCwweEQ3LDB4RjYsMHhCNiwweEVFLDB4
OEEsMHgyMywweDBBLDB4NUYsCi0gICAgMHhGNywweEY2LDB4QjcsMHhFRSwweEVBLDB4QUIsMHhG
QiwweEZGLDB4RDcsMHhGNiwweEI3LDB4RUUsMHhBQSwweEIyLDB4QTgsMHgwQSwKLSAgICAweEQ3
LDB4RjYsMHhENywweEVFLDB4RTIsMHhBOCwweEFBLDB4QUEsMHhENywweEY2LDB4RjcsMHhFNiww
eDg4LDB4MjAsMHg4MiwweDIwLAotICAgIDB4RDcsMHhGNiwweEY3LDB4RUUsMHhBQSwweEE4LDB4
ODAsMHgwMCwweDE4LDB4RkYsMHhENywweEY2LDB4QkEsMHhBRiwweEJGLDB4RkQsCi0gICAgMHgz
OCwweEZGLDB4RjcsMHhGNiwweEFGLDB4QkQsMHhCNSwweEQ1LDB4MTgsMHhGRiwweDM4LDB4Rjcs
MHhBQywweEEyLDB4QTgsMHg4MCwKLSAgICAweDM4LDB4RkYsMHhENywweEY2LDB4NUEsMHg3QSww
eDY4LDB4RTgsMHhENywweEY2LDB4OTYsMHhFRSwweDdBLDB4NUEsMHg1RSwweDVDLAotICAgIDB4
OTYsMHhFRSwweDc2LDB4RTYsMHgyMCwweDM4LDB4QzAsMHg4MCwweDk2LDB4RUUsMHg3NiwweEU2
LDB4RjAsMHgzOCwweDgwLDB4QjksCi0gICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweDA4LDB4MjAs
MHhBOCwweDVFLDB4RDcsMHhGNiwweDc2LDB4RUUsMHgyRSwweEFGLDB4QkYsMHhCRCwKLSAgICAw
eEI3LDB4RjYsMHgxMywweERFLDB4NjAsMHg0MCwweDYwLDB4NDAsMHhEMiwweEQ1LDB4MzAsMHhD
NSwweDE3LDB4MzcsMHgzNywweDM3LAotICAgIDB4QjYsMHhGNiwweDE0LDB4REUsMHgwOSwweDI5
LDB4MjksMHgyRCwweEI2LDB4RjYsMHg3NiwweEVFLDB4RTIsMHhFMiwweEU4LDB4QTAsCi0gICAg
MHg3NiwweEVFLDB4RDMsMHhENSwweDVBLDB4NTgsMHg1OCwweDc4LDB4OTMsMHhENSwweEQyLDB4
Q0QsMHhBQiwweEFBLDB4QUUsMHhCRiwKLSAgICAweEIyLDB4RDUsMHg3MiwweENELDB4QkUsMHhB
RSwweEFBLDB4QUIsMHgxNSwweERFLDB4QjMsMHhENSwweEFGLDB4M0QsMHhBNSwweEE3LAotICAg
IDB4QjMsMHhENSwweDRELDB4QUMsMHg1OCwweDc4LDB4NzgsMHg3OCwweENFLDB4QkMsMHgyQyww
eEE0LDB4QkYsMHhCRiwweEJGLDB4MzUsCi0gICAgMHg3MSwweENELDB4RUYsMHhCQywweDA5LDB4
MkQsMHhBRCwweDAzLDB4RjQsMHhERCwweDcyLDB4Q0QsMHgyQiwweDJELDB4M0YsMHgyRiwKLSAg
ICAweDk1LDB4RUUsMHhGMywweERELDB4MkIsMHg4RiwweDJGLDB4MjksMHg5NiwweEVFLDB4NTUs
MHhFNiwweEJFLDB4N0UsMHg3QSwweDVFLAotICAgIDB4NzUsMHhFRSwweDM1LDB4RTYsMHg3Qyww
eEYyLDB4RUIsMHhFQiwweDc1LDB4RUUsMHgzNCwweEU2LDB4QUQsMHgzRiwweEJGLDB4NTYsCi0g
ICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEFELDB4RkEsMHhGQSwweEVBLDB4RDYsMHhGNiwweEI2
LDB4RUUsMHhCQSwweEFCLDB4OUIsMHg3MiwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUEs
MHgyQSwweEFFLDB4RjcsMHhENywweEY2LDB4QjYsMHhFRSwweDJBLDB4QTgsMHgzOCwweDM2LAot
ICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhCRSwweEI4LDB4MDksMHgyQiwweEQ2LDB4RjYsMHhC
NiwweEVFLDB4OEIsMHhBQSwweDIyLDB4MDAsCi0gICAgMHhENywweEY2LDB4RjYsMHhFRSwweDgw
LDB4QTAsMHg4OCwweDIyLDB4RDYsMHhGNiwweEQ3LDB4RUUsMHg4QSwweEFBLDB4QTIsMHhBQSwK
LSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4OEEsMHgwQSwweDIyLDB4MDIsMHhENiwweEY2LDB4
RjcsMHhFRSwweDAwLDB4MEEsMHgyOCwweDgyLAotICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhG
RiwweEVCLDB4RUMsMHhFQSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4NzYsMHg1QiwweEZFLDB4RkUs
Ci0gICAgMHg5NiwweEY2LDB4QjYsMHhFRSwweEVELDB4QkQsMHhFRCwweEU1LDB4QjYsMHhGNiww
eDk2LDB4RUUsMHhBQSwweEJBLDB4MkEsMHg4MiwKLSAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4
QUUsMHhGOCwweEFCLDB4ODEsMHhCNywweEY2LDB4QjYsMHhFRSwweDZCLDB4RUEsMHhFRSwweEZG
LAotICAgIDB4OTUsMHhGNiwweEI2LDB4RUUsMHg3RCwweDU3LDB4NTUsMHg1NSwweEQ2LDB4RjYs
MHhCNiwweEVFLDB4QjUsMHhGRiwweEJGLDB4RjcsCi0gICAgMHhENiwweEY2LDB4RjYsMHhFRSww
eDgwLDB4QTgsMHhBMCwweDgwLDB4RjcsMHhGNiwweEQ2LDB4RjYsMHg3NSwweDdCLDB4NUEsMHg3
QSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QTIsMHgyOCwweEEwLDB4MDAsMHhENiwweEY2
LDB4QjYsMHhFRSwweDAyLDB4MDAsMHgyOCwweEEwLAotICAgIDB4RjYsMHhGNiwweEQ2LDB4RjYs
MHg1RiwweDVGLDB4QjYsMHhCNSwweEQ2LDB4RjYsMHhENywweEVFLDB4MEEsMHgyOCwweDJBLDB4
QTgsCi0gICAgMHhGNywweEZFLDB4QjYsMHhGNiwweDdFLDB4RUEsMHhBQiwweERBLDB4OTUsMHhF
RSwweDI2LDB4NjIsMHg3OCwweDYwLDB4RTAsMHhFMCwKLSAgICAweDg0LDB4NTEsMHgwMywweDQx
LDB4N0YsMHg3QywweEQ0LDB4NUMsMHg2NSwweDUxLDB4RTMsMHg0MCwweDJBLDB4ODMsMHhBMiww
eEE5LAotICAgIDB4NDQsMHg1MSwweEUyLDB4NDAsMHhBRSwweDI2LDB4RjAsMHg4QSwweDQ0LDB4
NTEsMHgwMywweDQ5LDB4NEIsMHg3QSwweDRELDB4QUIsCi0gICAgMHgyNCwweDQ5LDB4MDMsMHg0
OSwweDQ5LDB4RjQsMHhGRSwweDc4LDB4MjQsMHg0OSwweEMyLDB4MzgsMHhGQSwweERBLDB4RjIs
MHhGOCwKLSAgICAweDIzLDB4NDEsMHhFMywweDQwLDB4NzUsMHg4NSwweDY5LDB4RjUsMHg2NCww
eDUxLDB4RTIsMHg0MCwweDBGLDB4MEIsMHgyRiwweDI1LAotICAgIDB4MjYsMHg2QSwweDY0LDB4
NTEsMHgzNSwweDBGLDB4MEYsMHgyOSwweEM5LDB4N0EsMHg2NywweDcyLDB4MkQsMHgyOSwweDI5
LDB4MEQsCi0gICAgMHgwOSwweDgzLDB4QTgsMHg3QSwweEFGLDB4QjksMHhGNywweDJGLDB4NkEs
MHg5MywweEU5LDB4ODIsMHgyQiwweDA5LDB4QUQsMHhCRiwKLSAgICAweDZCLDB4OTMsMHgwOSww
eDhCLDB4OEEsMHgwQSwweEZCLDB4N0UsMHg0QSwweDhCLDB4QzksMHg4MiwweDIwLDB4QjIsMHhG
QSwweDc3LAotICAgIDB4NEEsMHg4QiwweEE4LDB4N0EsMHg4OCwweEZDLDB4NUYsMHg1NywweDI5
LDB4OEIsMHhBOCwweDdBLDB4MDgsMHhFQSwweEZELDB4NTUsCi0gICAgMHg2QSwweDkzLDB4Qzgs
MHg3QSwweDBGLDB4QjcsMHhENSwweDU1LDB4OEIsMHg5MywweEU5LDB4ODIsMHgwOCwweEFGLDB4
RkYsMHg3NSwKLSAgICAweENCLDB4OUIsMHgwOSwweDhCLDB4MjAsMHhBQiwweEFGLDB4QjUsMHgy
QywweEFDLDB4NkEsMHg5MywweDJBLDB4QUYsMHhCRCwweDdELAotICAgIDB4MkQsMHhBQywweEND
LDB4QTMsMHgwMiwweEZFLDB4RkYsMHg3RCwweEYwLDB4QzQsMHg4QiwweDlCLDB4MkIsMHhCRiww
eEQ1LDB4NTUsCi0gICAgMHgxMCwweENELDB4RTgsMHg4QSwweDAwLDB4RUEsMHhGRiwweDdGLDB4
NkUsMHhCNCwweDQ2LDB4N0EsMHg4MCwweEZBLDB4N0YsMHg1RiwKLSAgICAweEU5LDB4OEEsMHhF
NSwweDY5LDB4RjgsMHg3RSwweDdGLDB4N0YsMHg2NywweDdBLDB4MDUsMHg2QSwweDdGLDB4QTUs
MHhBRiwweEVCLAotICAgIDB4NDcsMHg3QSwweEU1LDB4NzEsMHg1QSwweDc4LDB4NUEsMHg3RSww
eDI2LDB4N0EsMHhDNSwweDcxLDB4QjIsMHgyRiwweEJGLDB4RkQsCi0gICAgMHg0NiwweDgyLDB4
RTUsMHg3MSwweDBBLDB4MEIsMHhFQSwweEY1LDB4NDcsMHg4MiwweEU1LDB4NzksMHhGOCwweEVC
LDB4NkIsMHhBQiwKLSAgICAweDY3LDB4OEEsMHhFNSwweDc5LDB4OUUsMHhCQiwweDJELDB4MkEs
MHhDOSwweDkyLDB4NDYsMHg4MiwweEY1LDB4QkQsMHhCQSwweEEyLAotICAgIDB4QTgsMHg5Miww
eDQ2LDB4ODIsMHhERiwweDE3LDB4MkUsMHg4OCwweDRBLDB4OUIsMHhDOCwweDkyLDB4QkQsMHhC
RCwweEJELDB4MzUsCi0gICAgMHg3NiwweEY2LDB4QUIsMHhBQiwweDJELDB4MEQsMHgyQiwweDA5
LDB4RjcsMHhGRSwweEI2LDB4RjYsMHgwMywweDAzLDB4MDAsMHgwMCwKLSAgICAweDE3LDB4RkYs
MHhGNywweEY2LDB4RUYsMHhFRiwweEFBLDB4QUIsMHgzOCwweEZGLDB4RjcsMHhGNiwweEVGLDB4
QUQsMHhBRiwweEJGLAotICAgIDB4MzgsMHhGRiwweDE3LDB4RjcsMHhGRiwweEJELDB4RDcsMHhG
NSwweDM3LDB4RkYsMHgxOCwweEY3LDB4QkUsMHhCRiwweEZGLDB4RkYsCi0gICAgMHgzOCwweEZG
LDB4MTcsMHhGNywweEZBLDB4NkUsMHhGRSwweERGLDB4RjcsMHhGRSwweDE4LDB4RjcsMHhGRCww
eDVGLDB4RkYsMHg3RiwKLSAgICAweDE3LDB4RjcsMHhGNywweEY2LDB4NzcsMHhGNiwweDdFLDB4
RjIsMHgxNywweEY3LDB4RjcsMHhGNiwweDU1LDB4NzcsMHg1NiwweDU3LAotICAgIDB4MTcsMHhG
RiwweEY3LDB4RjYsMHhENywweDdGLDB4RjcsMHg1NSwweDE4LDB4RkYsMHhENywweEY2LDB4RkIs
MHhBQiwweEVBLDB4RkUsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEZGLDB4RkIsMHhBQiww
eDJBLDB4MTgsMHhGRiwweEY3LDB4RjYsMHg3RCwweEFGLDB4MEQsMHg4MiwKLSAgICAweDE4LDB4
RkYsMHg5NSwweEVFLDB4QTAsMHhBOCwweDc4LDB4NTYsMHhENiwweEY2LDB4NzQsMHhFRSwweEEw
LDB4QUEsMHhGQSwweEZELAotICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHgyMiwweDhGLDB4MkIs
MHhBQSwweEQ2LDB4RjYsMHg5NywweEVFLDB4N0UsMHhCQSwweEFCLDB4QkYsCi0gICAgMHhENyww
eEY2LDB4NzYsMHhFRSwweDhFLDB4RUEsMHhGRSwweDdCLDB4OTYsMHhFRSwweDM0LDB4RTYsMHhG
OCwweDdBLDB4NUUsMHg3RSwKLSAgICAweDc2LDB4RUUsMHg5MiwweEQ1LDB4N0UsMHg1RSwweEFG
LDB4MDIsMHhGNywweEZFLDB4QjMsMHhENSwweEI1LDB4MkYsMHgwQSwweDIyLAotICAgIDB4Rjcs
MHhGRSwweEI3LDB4RjYsMHhCRiwweEFCLDB4QUEsMHhBQSwweEY3LDB4RjYsMHhENywweEY2LDB4
RkQsMHhENywweERELDB4NUYsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDhGLDB4QUQsMHhC
NiwweEY3LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg0RSwweDdBLDB4NzgsMHhGOCwKLSAgICAweEY3
LDB4RjYsMHhENywweEY2LDB4NzUsMHg1NywweDVGLDB4REYsMHhENywweEY2LDB4QjcsMHhFRSww
eDAyLDB4QTgsMHhBMiwweDgwLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHgwMCwweDBBLDB4
MkIsMHhFRSwweEQ3LDB4RjYsMHhGNywweEVFLDB4MDIsMHgyMCwweEEwLDB4MDAsCi0gICAgMHhG
NywweEY2LDB4QjYsMHhFRSwweEZFLDB4RTgsMHhBQSwweEJBLDB4RDcsMHhGNiwweEI2LDB4RUUs
MHgwOCwweDAyLDB4MDAsMHhBQywKLSAgICAweEY3LDB4RjYsMHhCNywweEVFLDB4RjIsMHhGQSww
eEVGLDB4QkIsMHhENywweEY2LDB4QjcsMHhFRSwweDhBLDB4MEEsMHhBQSwweEZBLAotICAgIDB4
RDcsMHhGNiwweEI3LDB4RUUsMHhFQSwweDY4LDB4RkEsMHhCMiwweEQ3LDB4RjYsMHhCNiwweEVF
LDB4NzcsMHhGRCwweDdCLDB4N0YsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweDZELDB4RUQs
MHhBRCwweEVBLDB4RDcsMHhGNiwweEI3LDB4RUUsMHg3RiwweEU5LDB4QkYsMHhCRSwKLSAgICAw
eEI3LDB4RjYsMHhENywweEVFLDB4RUUsMHhBQiwweEZBLDB4RjksMHhENywweEY2LDB4OTcsMHhF
RSwweDhBLDB4RTIsMHhBQSwweDA4LAotICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHg4OCwweEEy
LDB4ODgsMHgwMCwweEQ3LDB4RjYsMHhGNywweEVFLDB4ODgsMHhBMCwweDg4LDB4MDIsCi0gICAg
MHhGOCwweEY2LDB4RDcsMHhGNiwweDc1LDB4OEYsMHhBRiwweEFCLDB4MTgsMHhGRiwweEQ3LDB4
RjYsMHhFOSwweEZCLDB4RkEsMHhBQiwKLSAgICAweDE5LDB4RjcsMHhGOCwweEY2LDB4RDUsMHhF
RCwweEI1LDB4NTcsMHgzOCwweEZGLDB4RjgsMHhGNiwweEFGLDB4QUIsMHg5RiwweDc1LAotICAg
IDB4MzgsMHhGRiwweEY4LDB4RjYsMHg3MiwweDZBLDB4N0EsMHhGQiwweEY4LDB4RjYsMHg1Niww
eEU2LDB4RkUsMHhFQywweEZDLDB4RjgsCi0gICAgMHhCNywweEVFLDB4NzYsMHhFRSwweEZGLDB4
RkEsMHhGRSwweEZBLDB4OTYsMHhFRSwweDc2LDB4RTYsMHhFRiwweEFGLDB4QzAsMHhBQSwKLSAg
ICAweDk2LDB4RUUsMHg1NSwweEU2LDB4RUEsMHhBQSwweEVCLDB4RjgsMHhCNywweEY2LDB4NzYs
MHhFRSwweDNELDB4M0QsMHgyNSwweEI1LAotICAgIDB4QjcsMHhGNiwweDEzLDB4REUsMHg0MCww
eDYwLDB4NjAsMHhFMCwweDEzLDB4REUsMHgwRiwweEM1LDB4QjUsMHgzNywweDM3LDB4QjcsCi0g
ICAgMHg5NiwweEVFLDB4MTQsMHhERSwweDBELDB4MkIsMHgyOSwweDBGLDB4QjcsMHhGNiwweDk2
LDB4RUUsMHhBQSwweEFBLDB4MkEsMHhEQSwKLSAgICAweDc2LDB4RUUsMHhEMywweEQ1LDB4NjAs
MHhGOCwweDYwLDB4RTAsMHhEMywweERELDB4QjMsMHhENSwweDZBLDB4ODIsMHhFMiwweEJGLAot
ICAgIDB4QjMsMHhENSwweDkyLDB4Q0QsMHhGNiwweDE0LDB4QkMsMHg3MCwweEYzLDB4REQsMHg5
MiwweENELDB4MkYsMHhCNywweEFGLDB4RkYsCi0gICAgMHhCMiwweEQ1LDB4MEMsMHg5QywweEY4
LDB4NzAsMHg3OCwweDdBLDB4NzEsMHhDRCwweDRELDB4QUMsMHhCNSwweDM1LDB4MjUsMHgyRCwK
LSAgICAweDEzLDB4REUsMHg3MSwweENELDB4RUQsMHhBRiwweEFBLDB4QUIsMHgzNSwweEU2LDB4
QjMsMHhENSwweEU1LDB4RkQsMHhBQiwweDJFLAotICAgIDB4OTYsMHhFRSwweDE0LDB4RTYsMHgy
RCwweDBELDB4MEIsMHhBOSwweDk2LDB4RUUsMHg1NSwweEU2LDB4NzgsMHg1RSwweDdFLDB4NUEs
Ci0gICAgMHg1NSwweEU2LDB4MzQsMHhFNiwweDA0LDB4MEMsMHhCMiwweDc5LDB4NTUsMHhFNiww
eDM0LDB4RTYsMHhBMiwweDNGLDB4QjksMHgzNywKLSAgICAweEI2LDB4RjYsMHhENiwweEVFLDB4
RkYsMHhBQiwweENGLDB4NkIsMHhENiwweEY2LDB4QjcsMHhFRSwweDgyLDB4QUEsMHg4MiwweEU4
LAotICAgIDB4RDYsMHhGNiwweEI3LDB4RUUsMHhBQSwweEVBLDB4MDgsMHg4MCwweEQ2LDB4RjYs
MHhCNiwweEVFLDB4M0YsMHhBQiwweEFBLDB4QTIsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSww
eDgyLDB4ODAsMHhFMCwweDcwLDB4RDcsMHhGNiwweEI2LDB4RUUsMHg4MiwweDA3LDB4QUUsMHhB
QSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4MDIsMHgwOSwweDJCLDB4QUEsMHhENiwweEY2
LDB4QjYsMHhFNiwweDAwLDB4ODgsMHgyMCwweDJBLAotICAgIDB4RDYsMHhGNiwweEY4LDB4RUUs
MHg4OCwweDA4LDB4QTIsMHgwOCwweEY3LDB4RjYsMHhCNiwweEVFLDB4RUEsMHhDRSwweEJCLDB4
NkIsCi0gICAgMHhENywweEY2LDB4RjYsMHhFRSwweDA4LDB4MjAsMHgyMCwweDJBLDB4QjYsMHhG
NiwweEQ3LDB4RUUsMHhFRCwweEZGLDB4QjcsMHhGRCwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVF
LDB4NTcsMHg1RSwweERFLDB4NUUsMHg5NiwweEY2LDB4QjYsMHhFRSwweERELDB4RkQsMHg1NSww
eEQ1LAotICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHhBQiwweDI5LDB4QkIsMHhBQiwweEQ2LDB4
RjYsMHhCNiwweEVFLDB4NUYsMHhGRSwweEJELDB4RDUsCi0gICAgMHhENywweEY2LDB4QjYsMHhF
RSwweEY1LDB4RjcsMHg3RSwweDVELDB4RDYsMHhGNiwweEI2LDB4RUUsMHhERCwweEVCLDB4Rjks
MHg1RiwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4MjIsMHg4QSwweDJBLDB4MDIsMHhENiww
eEY2LDB4RjYsMHhFRSwweEFBLDB4ODAsMHg4OCwweDg4LAotICAgIDB4RjcsMHhGNiwweEQ2LDB4
RjYsMHg3NywweERELDB4NzUsMHhGRiwweEY3LDB4RjYsMHhCNSwweEY2LDB4RUEsMHhBOCwweDJC
LDB4QUYsCi0gICAgMHhGNywweEY2LDB4RDYsMHhGNiwweEY1LDB4N0YsMHg2RSwweDZBLDB4Rjcs
MHhGNiwweEQ3LDB4RjYsMHg1RiwweEJCLDB4QkYsMHhGRCwKLSAgICAweEI2LDB4RkUsMHhGNyww
eEY2LDB4QUUsMHhBRCwweEJGLDB4RUYsMHhCNiwweEY2LDB4OEUsMHhBQywweDYwLDB4NjAsMHhD
MCwweEMwLAotICAgIDB4Q0MsMHg5QiwweDAyLDB4NDEsMHg1NywweDU2LDB4NUUsMHg1QywweDY0
LDB4NTEsMHhFMiwweDM4LDB4QUYsMHgzOSwweEFBLDB4QUQsCi0gICAgMHg2NCwweDUxLDB4MjMs
MHg0OSwweEFGLDB4RTIsMHhGRiwweDc3LDB4MjMsMHg0OSwweEUyLDB4NDAsMHgyOCwweDg4LDB4
NjgsMHg2MiwKLSAgICAweDI0LDB4NDksMHhFMiwweDQwLDB4NzgsMHg2RSwweDdBLDB4RkIsMHgw
MywweDQxLDB4QzIsMHgzOCwweEFGLDB4QTcsMHhERiwweDlBLAotICAgIDB4MjMsMHg0OSwweEMy
LDB4MzgsMHhGNywweEI3LDB4QkQsMHgyRiwweDg0LDB4NTEsMHgwMywweDQxLDB4QTUsMHhBRiww
eEE1LDB4MjcsCi0gICAgMHgwNiwweDZBLDB4ODQsMHg1MSwweDBGLDB4QUQsMHhBRCwweDJELDB4
QTgsMHg3QSwweDA2LDB4NjIsMHgyMywweDBELDB4MjcsMHhCRCwKLSAgICAweDJBLDB4OEIsMHg4
NywweDcyLDB4MkIsMHgyOSwweDNELDB4QUQsMHg0QSwweDkzLDB4RTksMHg4MiwweDJBLDB4ODgs
MHg3QSwweEQyLAotICAgIDB4NEEsMHg5MywweEE4LDB4N0EsMHhFQywweEZFLDB4NUYsMHg1Riww
eEE4LDB4N0EsMHg4OCwweDcyLDB4RTAsMHg1MiwweEMwLDB4MjMsCi0gICAgMHhBOCwweDdBLDB4
NDcsMHg2QSwweDgyLDB4RUMsMHg3QSwweEU4LDB4QzgsMHg3QSwweDQ3LDB4NkEsMHg4QSwweEVG
LDB4QkQsMHhGNywKLSAgICAweEM5LDB4N0EsMHg2NywweDcyLDB4M0EsMHhGRSwweERFLDB4Qjcs
MHhFOSwweDgyLDB4ODcsMHg3MiwweDAzLDB4QUQsMHhFNSwweERGLAotICAgIDB4NkEsMHg5Myww
eEE4LDB4N0EsMHgyQiwweDJGLDB4MkQsMHgyRCwweDhBLDB4OUIsMHg0QSwweDkzLDB4MkEsMHhB
QiwweEI1LDB4QkYsCi0gICAgMHhDQywweEEzLDB4NkEsMHg5MywweDgzLDB4OEIsMHhFRiwweDdE
LDB4NkIsMHg5QiwweEM4LDB4ODIsMHhBOCwweDY4LDB4NzgsMHg3RSwKLSAgICAweDA5LDB4OTMs
MHgyNiwweDcyLDB4ODAsMHhFOCwweEZBLDB4N0UsMHg2NiwweDdBLDB4QzQsMHg2OSwweEE4LDB4
RkMsMHg3RSwweDVGLAotICAgIDB4NDcsMHg3QSwweEEzLDB4NjEsMHhBQSwweEFGLDB4QjUsMHgy
NywweDg4LDB4ODIsMHgyNywweDcyLDB4NkQsMHhFRiwweEVCLDB4MkYsCi0gICAgMHg0NywweDdB
LDB4QzUsMHg2OSwweEZBLDB4RkMsMHg1QSwweDc4LDB4MDYsMHg3QSwweEM1LDB4NzEsMHhBOSww
eEFFLDB4REYsMHhENSwKLSAgICAweDA2LDB4N0EsMHhDNSwweDcxLDB4OUUsMHhBRiwweDNGLDB4
QkUsMHg0NywweDhBLDB4RTYsMHg3OSwweEFGLDB4MjksMHhBRCwweDJCLAotICAgIDB4ODcsMHg4
QSwweDI2LDB4ODIsMHhBRCwweEE1LDB4QUQsMHhBQiwweEM4LDB4OTIsMHg2NywweDhBLDB4RjAs
MHg2OSwweEZDLDB4NUQsCi0gICAgMHgyQSwweEEzLDB4ODgsMHg4QSwweEZELDB4QkQsMHhBRCww
eDNELDB4NEEsMHhBMywweEM4LDB4OTIsMHgyRCwweDhBLDB4ODIsMHgyQSwKLSAgICAweEI2LDB4
RjYsMHhBQywweEFCLDB4MDksMHgwRCwweDJELDB4MkQsMHhENywweEZFLDB4MTgsMHhGNywweEFB
LDB4QUUsMHhFRSwweEJDLAotICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHhBQiwweDJCLDB4QUIs
MHhBMywweDE3LDB4RkYsMHhGOCwweEY2LDB4MkEsMHgwQSwweDhBLDB4MkEsCi0gICAgMHgxNyww
eEZGLDB4MzksMHhGNywweEEyLDB4ODgsMHhCMCwweEE4LDB4MzcsMHhGRiwweDE4LDB4RjcsMHhG
QiwweEZELDB4RjcsMHhGRiwKLSAgICAweDM4LDB4RkYsMHgxNywweEY3LDB4NzcsMHg1NywweERE
LDB4N0IsMHgzOCwweEZGLDB4MTcsMHhGNywweDdGLDB4REQsMHg3RiwweEZGLAotICAgIDB4MTcs
MHhGRiwweDM4LDB4RjcsMHgwQSwweDA4LDB4QTIsMHhBRSwweDE3LDB4RkYsMHhGNywweEY2LDB4
NzYsMHg3RiwweEFBLDB4QTgsCi0gICAgMHgxNywweEZGLDB4RDcsMHhGNiwweEJGLDB4QkYsMHhC
MiwweEEwLDB4MTcsMHhGRiwweEY3LDB4RjYsMHg3NywweEE3LDB4QUUsMHgwOCwKLSAgICAweDE4
LDB4RkYsMHhGNywweEY2LDB4QUIsMHgwQiwweDBBLDB4QTAsMHgxOCwweEZGLDB4QjYsMHhFRSww
eDYwLDB4NzgsMHg1OCwweDVFLAotICAgIDB4QjYsMHhFRSwweDc1LDB4RUUsMHg3RSwweEQ3LDB4
QkYsMHg4QSwweDk2LDB4RjYsMHg3NSwweEU2LDB4QjUsMHhGRCwweEZFLDB4ODgsCi0gICAgMHhC
NiwweEY2LDB4NzUsMHhFRSwweEFCLDB4QUQsMHhGNSwweDdGLDB4QjYsMHhGNiwweDU1LDB4RUUs
MHgyQSwweEFBLDB4RUYsMHhERiwKLSAgICAweDk2LDB4RUUsMHg3NSwweEVFLDB4NDAsMHgyOCww
eDY2LDB4NUQsMHhCNiwweEY2LDB4NTQsMHhFNiwweEJGLDB4MkYsMHhFRiwweDc1LAotICAgIDB4
RDcsMHhGNiwweDU0LDB4RTYsMHgwMiwweDAyLDB4QkEsMHhENSwweEY3LDB4RkUsMHg3NiwweEVF
LDB4MDIsMHgyMiwweEFGLDB4REQsCi0gICAgMHhGNywweEZFLDB4RDcsMHhGNiwweEFBLDB4QUEs
MHgzRiwweDk1LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3QSwweEUyLDB4OEEsMHhBOCwKLSAgICAw
eEY3LDB4RjYsMHhENywweEY2LDB4OEYsMHg4NSwweEI3LDB4RTcsMHhGNywweEY2LDB4RDcsMHhG
NiwweEZBLDB4REUsMHhENiwweEZFLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1QiwweDVB
LDB4RkEsMHgwMCwweEY3LDB4RjYsMHhENywweEY2LDB4NzUsMHg3QiwweDVFLDB4RTQsCi0gICAg
MHhGNywweEY2LDB4QjcsMHhGNiwweEZGLDB4RUYsMHhBQiwweDA4LDB4RDcsMHhGNiwweEI3LDB4
RUUsMHgwQSwweDAyLDB4MEEsMHgwMCwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4QTgsMHhB
MCwweDI4LDB4MDAsMHhENywweEY2LDB4QjcsMHhFRSwweDdDLDB4QkUsMHhFQSwweDAwLAotICAg
IDB4RDcsMHhGNiwweEI2LDB4RUUsMHgyOCwweDNFLDB4N0EsMHg1QSwweEQ3LDB4RjYsMHhCNyww
eEVFLDB4RjgsMHhBQSwweEVBLDB4RkUsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweEFBLDB4
QUIsMHhBNSwweEVFLDB4RDcsMHhGNiwweEI3LDB4RUUsMHhGNywweDJGLDB4QUUsMHhBQSwKLSAg
ICAweEQ3LDB4RjYsMHhCNywweEVFLDB4M0EsMHhCRSwweEFBLDB4QkUsMHhENywweEY2LDB4Qjcs
MHhFRSwweEEzLDB4QTYsMHhGRSwweEFDLAotICAgIDB4RjcsMHhGNiwweEI3LDB4RjYsMHhGRiww
eEZFLDB4RkYsMHhDQiwweEY4LDB4RjYsMHg5NywweEVFLDB4QUUsMHgyQSwweDJBLDB4MEEsCi0g
ICAgMHhGOCwweEY2LDB4QjcsMHhGNiwweEFGLDB4QUUsMHhCQSwweDBBLDB4RjgsMHhGNiwweEQ3
LDB4RjYsMHhERCwweEJELDB4MkEsMHgyOCwKLSAgICAweEY4LDB4RjYsMHhENywweEY2LDB4RUEs
MHhBRSwweEFBLDB4M0EsMHhGOCwweEY2LDB4RDcsMHhGNiwweDAwLDB4MDgsMHhBQSwweDIyLAot
ICAgIDB4RjgsMHhGNiwweEQ4LDB4RjYsMHgwMCwweDI4LDB4QkUsMHhBQSwweEQ3LDB4RkUsMHhG
OCwweEY2LDB4NTUsMHg3NywweDVELDB4N0YsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDJB
LDB4MkEsMHgyRiwweDJELDB4MTgsMHhGRiwweDc2LDB4RTYsMHg1OCwweDdBLDB4RjgsMHhGOCwK
LSAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4ODAsMHgyQSwweEI2LDB4QkEsMHg5NiwweEVFLDB4
NzYsMHhFNiwweEIyLDB4RUYsMHgzNywweEEzLAotICAgIDB4OTYsMHhFRSwweDc2LDB4RUUsMHg1
QywweEQ3LDB4QkUsMHhGNiwweEI2LDB4RjYsMHg3NiwweEVFLDB4QjUsMHgzRiwweEE5LDB4QkQs
Ci0gICAgMHhCNywweEY2LDB4RjMsMHhERCwweEM4LDB4NjAsMHg2MCwweDYwLDB4RDMsMHhENSww
eEYwLDB4QkMsMHgzRSwweDJGLDB4MzcsMHgzRiwKLSAgICAweDk2LDB4RUUsMHhGNCwweERELDB4
MkIsMHgwRCwweDBCLDB4MjksMHhCNiwweEY2LDB4OTYsMHhFRSwweDdGLDB4RjYsMHg3OCwweEZC
LAotICAgIDB4OTYsMHhFRSwweDE0LDB4REUsMHg3OCwweDc4LDB4NzgsMHg2OCwweEIzLDB4RDUs
MHg1MSwweEM1LDB4MDAsMHhCOCwweDdDLDB4N0UsCi0gICAgMHhCMywweEQ1LDB4NzEsMHhDRCww
eEEwLDB4RkEsMHg3NSwweDU1LDB4QjIsMHhDRCwweDUxLDB4QzUsMHhBQSwweDhBLDB4QUEsMHhF
RCwKLSAgICAweDcyLDB4Q0QsMHgwQywweEE0LDB4NzgsMHg3OCwweDc4LDB4RjgsMHhCMywweEQ1
LDB4OEUsMHhBQywweDJELDB4MkQsMHgyOSwweDA5LAotICAgIDB4MTQsMHhERSwweEIyLDB4RDUs
MHhBRCwweDJGLDB4QjcsMHhCNSwweDU1LDB4RUUsMHhGMywweERELDB4QkYsMHhCRiwweEFGLDB4
MzcsCi0gICAgMHg5NiwweEVFLDB4MzQsMHhFNiwweDJGLDB4QUQsMHhCRiwweDJGLDB4OTYsMHhF
RSwweDU1LDB4RTYsMHg3OCwweEZBLDB4QTgsMHg3QSwKLSAgICAweDU1LDB4RTYsMHgxNCwweEU2
LDB4RTAsMHgwOCwweEE4LDB4ODAsMHg1NSwweEU2LDB4MzUsMHhFNiwweDNGLDB4OUUsMHhEQiww
eDIzLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBRiwweEVBLDB4QUEsMHhBQSwweEQ3LDB4
RjYsMHhCNiwweEVFLDB4QkEsMHhFOCwweEJFLDB4QkEsCi0gICAgMHhCNywweEY2LDB4RDYsMHhF
RSwweEJGLDB4RkYsMHhCNywweDFGLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhBMiwweEIzLDB4MkEs
MHhCQiwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4QTIsMHgwQSwweDgyLDB4MDIsMHhENiww
eEY2LDB4RDcsMHhFRSwweEFBLDB4QUEsMHhBMiwweEFBLAotICAgIDB4RDYsMHhGNiwweEI2LDB4
RUUsMHgyMSwweENCLDB4MEEsMHhBQSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4QTIsMHhBOCwweDJB
LDB4MDIsCi0gICAgMHhENywweEY2LDB4RDYsMHhFRSwweEEyLDB4QUIsMHgyQSwweEE4LDB4Rjcs
MHhGNiwweEI2LDB4RUUsMHhCRiwweEFFLDB4QUIsMHhBRiwKLSAgICAweEY3LDB4RjYsMHhENyww
eEY2LDB4RkQsMHhGNSwweEQ3LDB4NUUsMHhGNywweEY2LDB4QjYsMHhFRSwweEZBLDB4RUEsMHhF
RSwweEVBLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg1RSwweDVFLDB4NUYsMHhGRiwweEQ2
LDB4RjYsMHg5NiwweEVFLDB4RkUsMHhFRiwweEFBLDB4RkEsCi0gICAgMHhENiwweEY2LDB4OTUs
MHhFRSwweEFGLDB4QjcsMHhGRiwweEZGLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGRCwweDVGLDB4
RkYsMHg3RCwKLSAgICAweEI3LDB4RjYsMHhCNiwweEVFLDB4RkQsMHhGRiwweEQ3LDB4RkYsMHhE
NiwweEY2LDB4QjYsMHhFRSwweEJELDB4QjcsMHhENSwweEI1LAotICAgIDB4RDYsMHhGNiwweEY4
LDB4RUUsMHhBMCwweDg4LDB4MjAsMHgwOCwweEQ3LDB4RjYsMHhGNiwweEVFLDB4MDIsMHhBOCww
eDJBLDB4ODAsCi0gICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEJFLDB4QUYsMHhFQiwweDhBLDB4
RjcsMHhGNiwweEI2LDB4RUUsMHhCNiwweEFCLDB4QkEsMHhBQiwKLSAgICAweEQ2LDB4RjYsMHhG
OCwweEVFLDB4MjAsMHg4OCwweDIwLDB4MDAsMHhGNywweEY2LDB4RDcsMHhGNiwweEZELDB4RUYs
MHhGNSwweDU1LAotICAgIDB4RjcsMHhGNiwweEI2LDB4RjYsMHhCQSwweEZBLDB4RjgsMHhGRSww
eEI3LDB4RjYsMHgxNCwweERFLDB4NDAsMHhDMCwweEMwLDB4MDAsCi0gICAgMHg1MSwweEM1LDB4
NDMsMHg0OSwweDVFLDB4NUMsMHg1QywweDU4LDB4MjMsMHg0MSwweEUyLDB4NDAsMHgwMSwweDJE
LDB4REQsMHhFRiwKLSAgICAweDQzLDB4NDksMHgwMywweDQxLDB4QjgsMHgyQSwweDJGLDB4MEQs
MHg2NCwweDUxLDB4MjMsMHg0MSwweDVELDB4QUIsMHgyRSwweEJCLAotICAgIDB4NDQsMHg0OSww
eDAzLDB4NDEsMHg1NywweEQ4LDB4NzAsMHg3MCwweDQ0LDB4NDksMHhFMiwweDM4LDB4RjcsMHhG
NywweEJGLDB4MkUsCi0gICAgMHg2NCwweDUxLDB4MDMsMHg0MSwweEQ3LDB4QjcsMHgwRiwweDAy
LDB4RTUsMHg1OSwweDQzLDB4NDksMHhCNSwweDJGLDB4MDUsMHhBRCwKLSAgICAweDQ3LDB4NkEs
MHhBNCwweDU5LDB4QUQsMHgyQiwweDJCLDB4MEEsMHg4OCwweDcyLDB4MjYsMHg2QSwweDI5LDB4
OEYsMHhBRiwweEMzLAotICAgIDB4QzgsMHg3QSwweDY3LDB4NzIsMHgwMywweEFBLDB4MkIsMHhD
OSwweDA5LDB4ODMsMHhBOCwweDdBLDB4ODIsMHg4MywweEVELDB4NUQsCi0gICAgMHhDOSwweDgy
LDB4NDcsMHg3MiwweEY4LDB4RTIsMHhFQSwweDdCLDB4QTgsMHg3QSwweDQ3LDB4NkEsMHgyRSww
eEZBLDB4REYsMHg5RiwKLSAgICAweEE4LDB4N0EsMHg0NywweDZBLDB4RTIsMHhGQSwweDVGLDB4
NTcsMHg4NywweDcyLDB4MjYsMHg2QSwweEE4LDB4QjYsMHgwQSwweDhFLAotICAgIDB4NjcsMHg3
MiwweDI2LDB4NkEsMHgzQywweEY3LDB4QjAsMHgyMCwweEM4LDB4N0EsMHgyNiwweDZBLDB4QUEs
MHhBMywweEE5LDB4RkIsCi0gICAgMHg0QSwweDkzLDB4ODcsMHg3MiwweDJGLDB4QUYsMHhFNSww
eDdELDB4NkIsMHg5QiwweEM4LDB4ODIsMHgwQSwweDhCLDB4QUYsMHhGRCwKLSAgICAweDhCLDB4
OUIsMHgwOSwweDhCLDB4Q0EsMHg4QiwweEVBLDB4RkQsMHgyOSwweDhCLDB4QzgsMHg4MiwweEQ4
LDB4RjgsMHg3OCwweDYwLAotICAgIDB4QzgsMHg4MiwweEU2LDB4NjksMHhGOCwweEU4LDB4Rjgs
MHg1QSwweDA1LDB4NkEsMHhBNCwweDYxLDB4RjgsMHhERSwweERBLDB4RkEsCi0gICAgMHg0Nyww
eDcyLDB4QzQsMHg2OSwweEI1LDB4QkYsMHhCOSwweDI1LDB4ODgsMHg4MiwweDI3LDB4NzIsMHhB
QiwweEFBLDB4MkIsMHhFNSwKLSAgICAweDQ3LDB4N0EsMHg4NCwweDY5LDB4RjAsMHg2MCwweEUw
LDB4RTgsMHhDNSwweDcxLDB4NjQsMHg2MSwweDI4LDB4MkUsMHhCNSwweEY1LAotICAgIDB4MDYs
MHg4MiwweEE1LDB4NjksMHhBRiwweEJGLDB4QkQsMHhCRiwweDY3LDB4OEEsMHhFNiwweDc5LDB4
QUQsMHhBNywweDJGLDB4QUUsCi0gICAgMHg4NywweDhBLDB4NDYsMHg4MiwweDRGLDB4RTcsMHg3
NywweDVELDB4ODcsMHg4QSwweDI2LDB4ODIsMHgyOCwweEJBLDB4QjcsMHg1NSwKLSAgICAweEU4
LDB4OTIsMHg0NiwweDgyLDB4MkQsMHhCNSwweEJGLDB4RkYsMHg2QSwweEEzLDB4QTgsMHg4QSww
eDJCLDB4QTksMHhBRCwweDI1LAotICAgIDB4OTYsMHhGNiwweDhBLDB4QTMsMHgyRCwweDJELDB4
MkQsMHgyRCwweEQ3LDB4RkUsMHgxNywweEY3LDB4RjgsMHhFOCwweEY4LDB4RUEsCi0gICAgMHgx
NywweEZGLDB4RjcsMHhGNiwweEFBLDB4QTIsMHhBQSwweDBCLDB4MTgsMHhGRiwweEY3LDB4RjYs
MHg4QSwweDAyLDB4MEEsMHgyQSwKLSAgICAweDE4LDB4RkYsMHhGNywweEVFLDB4OEEsMHg4QSww
eDAwLDB4ODAsMHgzOCwweEZGLDB4MTcsMHhGNywweEI3LDB4RUQsMHhFRiwweEZELAotICAgIDB4
MTgsMHhGRiwweDM4LDB4RjcsMHhFRSwweEFGLDB4QUUsMHhBOCwweDM3LDB4RkYsMHgxOCwweEY3
LDB4QkUsMHhBRiwweERCLDB4QkYsCi0gICAgMHgzOCwweEZGLDB4MTgsMHhGRiwweEFBLDB4RUEs
MHg4QSwweDhCLDB4MzgsMHhGRiwweDE4LDB4RjcsMHhGRiwweEFCLDB4QTgsMHhBOCwKLSAgICAw
eDE4LDB4RkYsMHgzNywweEY3LDB4MEEsMHgyQSwweDBBLDB4MDIsMHgxOCwweEZGLDB4MzcsMHhG
NywweDA4LDB4MjAsMHhCMCwweDIwLAotICAgIDB4MTgsMHhGRiwweEI2LDB4RUUsMHhBMCwweEU4
LDB4NzgsMHg3QSwweEQ3LDB4RjYsMHg5NiwweEVFLDB4RDgsMHg1RSwweEZGLDB4RUUsCi0gICAg
MHhCNiwweEY2LDB4OTYsMHhFRSwweEFGLDB4RkUsMHhGRSwweEEwLDB4QjYsMHhGNiwweDk2LDB4
RUUsMHhFQSwweEVCLDB4RUEsMHhGQiwKLSAgICAweDk2LDB4RUUsMHg1NCwweEVFLDB4RTAsMHhD
MCwweEMwLDB4QzAsMHg1NCwweEU2LDB4NzEsMHhDRCwweDAwLDB4ODAsMHhBOCwweDc4LAotICAg
IDB4NTUsMHhFRSwweDEwLDB4QzUsMHgwMCwweEFBLDB4RkIsMHg1NywweDE0LDB4RTYsMHg3MSww
eENELDB4ODAsMHhFQSwweEZELDB4MDksCi0gICAgMHhGMywweERELDB4MTAsMHhDNSwweDAwLDB4
RkUsMHg3RSwweEE4LDB4NTUsMHhFNiwweDMxLDB4QzUsMHgwMCwweDBGLDB4QkQsMHhGNywKLSAg
ICAweEQ3LDB4RkUsMHgxNCwweERFLDB4MDIsMHgyQiwweDJGLDB4QUQsMHhGNywweEY2LDB4OTYs
MHhGNiwweDgyLDB4MkEsMHhBQSwweEFCLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBNyww
eEJELDB4RUQsMHhBNiwweEY3LDB4RjYsMHhENywweEY2LDB4QUIsMHgyMSwweDg5LDB4QTIsCi0g
ICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEJFLDB4RUEsMHhGQiwweEZCLDB4RDcsMHhGRSwweEY3
LDB4RjYsMHhGRCwweDVELDB4RjUsMHhGNywKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QTgs
MHg1RSwweDU1LDB4RkYsMHhGNywweEY2LDB4RDcsMHhGNiwweDU1LDB4RDUsMHhBQiwweEFBLAot
ICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1RiwweEZCLDB4N0YsMHhCQywweEQ3LDB4RjYsMHhG
NywweEVFLDB4MjAsMHgwOCwweDAwLDB4MjIsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweEI4
LDB4QTgsMHhDOCwweDQyLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhBNCwweDIyLDB4QkYsMHhGRCwK
LSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4RUUsMHgyQSwweDhBLDB4MDIsMHhCNiwweEY2LDB4
RjcsMHhFRSwweEFBLDB4QUEsMHhCQiwweEZBLAotICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhE
RiwweEZGLDB4QUYsMHhBQiwweEY3LDB4RjYsMHhCNywweEVFLDB4QUYsMHhBOSwweDJGLDB4QTgs
Ci0gICAgMHhGNywweEY2LDB4RDgsMHhGNiwweDhGLDB4OEEsMHhBOCwweEEwLDB4RjgsMHhGNiww
eEQ3LDB4RjYsMHhBMiwweEY4LDB4REUsMHhFQSwKLSAgICAweEY4LDB4RjYsMHhENywweEY2LDB4
QkEsMHhBQiwweDNFLDB4OEEsMHgxOCwweEZGLDB4RDcsMHhGNiwweEFGLDB4QUIsMHhGRSwweEJG
LAotICAgIDB4RjcsMHhGRSwweEY4LDB4RjYsMHhGNywweEZELDB4RDcsMHg3RiwweDE4LDB4RkYs
MHhENywweEY2LDB4RUUsMHhBQSwweEVFLDB4N0YsCi0gICAgMHhGNywweEY2LDB4QjgsMHhGNiww
eEEyLDB4QUUsMHhBQSwweEVCLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhGRiwweERFLDB4NUQsMHg1
NSwKLSAgICAweDE4LDB4RkYsMHhENywweEY2LDB4MkIsMHgzRiwweEJELDB4QkYsMHgxOCwweEZG
LDB4QjYsMHhFRSwweDU4LDB4NzgsMHhGQSwweEZBLAotICAgIDB4QjYsMHhFRSwweDc2LDB4RTYs
MHg1NywweDU3LDB4RkUsMHhGQywweDc2LDB4RUUsMHg5NiwweEU2LDB4MkYsMHg4QiwweEFBLDB4
MjgsCi0gICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweDlCLDB4QTIsMHhGQiwweEZELDB4OTYsMHhF
RSwweDc2LDB4RUUsMHgwRCwweDJCLDB4MkQsMHgzRiwKLSAgICAweEI2LDB4RjYsMHhGNCwweERE
LDB4NjAsMHg2MCwweDY4LDB4NjIsMHhEMywweEQ1LDB4RjAsMHhCQywweDM3LDB4M0YsMHgyRiww
eDJFLAotICAgIDB4OTYsMHhGNiwweDE0LDB4RTYsMHgyRCwweEFELDB4QUQsMHgyNSwweEI2LDB4
RjYsMHg3NiwweEVFLDB4RUEsMHhGQiwweEZGLDB4RkYsCi0gICAgMHg5NiwweEVFLDB4MTQsMHhF
NiwweDYwLDB4NzAsMHhFQSwweEU4LDB4RjQsMHhERCwweDMxLDB4QzUsMHg3RSwweDdBLDB4N0Ms
MHhGOCwKLSAgICAweDcxLDB4Q0QsMHg1MSwweEM1LDB4MkUsMHhCOSwweEU3LDB4Q0UsMHg3MSww
eENELDB4NTEsMHhDNSwweDIwLDB4MkUsMHgyNSwweDNELAotICAgIDB4NzIsMHhDRCwweENGLDB4
QjQsMHg1QywweDVDLDB4N0MsMHhBOCwweEIzLDB4RDUsMHgxMCwweEM1LDB4MEQsMHgwQiwweDAz
LDB4MEEsCi0gICAgMHgxNCwweERFLDB4QjMsMHhENSwweEJELDB4M0YsMHgyRiwweDIzLDB4NTUs
MHhFNiwweEY0LDB4REQsMHgyRCwweDM1LDB4QjcsMHhCNywKLSAgICAweDc2LDB4RUUsMHg1NSww
eEU2LDB4MjMsMHg4MiwweDBCLDB4MEQsMHg5NiwweEVFLDB4MzUsMHhFNiwweEE4LDB4QzgsMHhB
OCwweEFBLAotICAgIDB4NzUsMHhFRSwweDM1LDB4RTYsMHhGRiwweEY4LDB4RkEsMHhFQSwweDM1
LDB4RUUsMHg1NSwweEU2LDB4NzcsMHg2RCwweDdGLDB4NUYsCi0gICAgMHhENiwweEY2LDB4QjYs
MHhFRSwweEFBLDB4QUEsMHg4QSwweDAyLDB4RDcsMHhGNiwweEI1LDB4RUUsMHgyMiwweDIyLDB4
MjgsMHgyMCwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4NkUsMHhDOCwweEY4LDB4QzgsMHhE
NiwweEY2LDB4QjYsMHhFRSwweEI5LDB4MjMsMHgwMiwweDAyLAotICAgIDB4RDYsMHhGNiwweEI3
LDB4RTYsMHgwOCwweDhBLDB4MDgsMHhBMiwweEY3LDB4RjYsMHhCNiwweEVFLDB4REIsMHg1QSww
eEZGLDB4QkYsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweDFCLDB4MjksMHgyQywweDAwLDB4
RDcsMHhGNiwweEQ2LDB4RUUsMHhBQSwweDIyLDB4QUEsMHhBQSwKLSAgICAweEQ3LDB4RjYsMHhG
NywweEVFLDB4MjgsMHgwOCwweDIwLDB4QUEsMHhGNiwweEY2LDB4QjcsMHhFRSwweEE3LDB4QkUs
MHhBQiwweEFCLAotICAgIDB4RDYsMHhGNiwweEY3LDB4RUUsMHgyQSwweDJBLDB4MjAsMHg4Miww
eEQ2LDB4RjYsMHhGOCwweEVFLDB4MDgsMHg4MCwweDI4LDB4QTgsCi0gICAgMHhENiwweEY2LDB4
QjYsMHhFRSwweEVFLDB4NjgsMHhGOCwweDZDLDB4RDYsMHhGNiwweDk2LDB4RUUsMHhCQiwweEVG
LDB4QUYsMHgwRiwKLSAgICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4RkYsMHhGRSwweEYyLDB4QzIs
MHhENiwweEY2LDB4QjYsMHhFRSwweEZELDB4RjcsMHhCRCwweEJCLAotICAgIDB4RDcsMHhGNiww
eEI2LDB4RUUsMHg3RCwweEZGLDB4QUQsMHhFRSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4QjUsMHhC
RCwweEJCLDB4QjYsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweERGLDB4RkQsMHhERCwweEZE
LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhERCwweEJGLDB4M0EsMHg4RCwKLSAgICAweEY3LDB4RjYs
MHhENywweEY2LDB4RUEsMHhGOCwweERBLDB4RkUsMHhGNiwweEY2LDB4RDcsMHhGNiwweEI1LDB4
RkIsMHhGRiwweEVELAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3OSwweDZCLDB4RkIsMHg5
QiwweEQ3LDB4RjYsMHhGNywweEVFLDB4MDAsMHg4MCwweDBFLDB4MDIsCi0gICAgMHhGNywweEY2
LDB4OTYsMHhFRSwweEFBLDB4MkEsMHg4QSwweEEyLDB4RjcsMHhGRSwweDc2LDB4RUUsMHg2QSww
eEUwLDB4RUEsMHhFQSwKLSAgICAweEY0LDB4REQsMHg0MiwweDQxLDB4NTgsMHg3OCwweDc4LDB4
NzgsMHgwMywweDM5LDB4QzEsMHgzOCwweEFBLDB4MUQsMHgyNCwweEJBLAotICAgIDB4NjQsMHg0
OSwweDAyLDB4NDEsMHgzRiwweEFCLDB4MkYsMHg2NSwweDg0LDB4NTEsMHgyMywweDQ5LDB4RTIs
MHhBMiwweEE5LDB4RjUsCi0gICAgMHg2NCwweDQ5LDB4RTIsMHg0MCwweEY4LDB4NUEsMHhGQiww
eDdFLDB4NDMsMHg0OSwweDAzLDB4NDEsMHhGRiwweEJCLDB4MkQsMHgyOSwKLSAgICAweEM1LDB4
NTksMHg0NCwweDQ5LDB4MzUsMHgyRCwweDA5LDB4MEEsMHgyNywweDZBLDB4ODQsMHg1MSwweEFE
LDB4QUYsMHgyQSwweDNCLAotICAgIDB4MjcsMHg2QSwweEE0LDB4NTksMHgwOCwweDg4LDB4QTgs
MHg3RSwweDY3LDB4NzIsMHg4NSwweDU5LDB4MjAsMHgyQSwweEFELDB4QUQsCi0gICAgMHhBOCww
eDdBLDB4NDYsMHg2QSwweDgzLDB4QUEsMHhBNSwweEY1LDB4QTgsMHg3QSwweDQ3LDB4NkEsMHg4
MiwweDhBLDB4RUYsMHg3RiwKLSAgICAweDg4LDB4NzIsMHg0NywweDcyLDB4QjAsMHhCQSwweENE
LDB4QjUsMHg4OCwweDcyLDB4MDYsMHg2QSwweEEwLDB4QUYsMHg5NywweEFCLAotICAgIDB4Njcs
MHg3MiwweDI2LDB4NkEsMHhBNiwweDAyLDB4MkIsMHhFRiwweDY3LDB4NzIsMHgyNiwweDZBLDB4
ODAsMHhGMCwweDY4LDB4RDgsCi0gICAgMHg2NywweDcyLDB4MDYsMHg2MiwweEIwLDB4QkYsMHhG
RCwweEZGLDB4QTcsMHg3QSwweEU1LDB4NjEsMHgwQSwweEFELDB4QUIsMHhGRiwKLSAgICAweEM4
LDB4N0EsMHg2NywweDcyLDB4QUIsMHhBRSwweEFCLDB4MEQsMHhFOSwweDgyLDB4ODcsMHg3QSww
eDBCLDB4QkYsMHhFRiwweEY3LAotICAgIDB4MkEsMHg4QiwweDg4LDB4N0EsMHgwQSwweEJFLDB4
RkYsMHhENSwweEU5LDB4OEEsMHg0NiwweDcyLDB4QTAsMHhFMCwweDdBLDB4NUUsCi0gICAgMHg2
NywweDdBLDB4QTQsMHg2MSwweEUwLDB4RjgsMHg3RSwweDVGLDB4RTUsMHg2OSwweDgzLDB4NTks
MHhCQywweEU3LDB4Q0YsMHgyRSwKLSAgICAweDI2LDB4NzIsMHhDNSwweDY5LDB4QUQsMHgzRCww
eDNELDB4MkEsMHg2OCwweDdBLDB4RTYsMHg2OSwweEVBLDB4RjgsMHg2QSwweDdFLAotICAgIDB4
MDYsMHg3MiwweDY0LDB4NjEsMHhFMCwweDcyLDB4NzIsMHg1QSwweDg0LDB4NjksMHgyMiwweDU5
LDB4MkEsMHgyNywweDM3LDB4QkYsCi0gICAgMHgwNiwweDdBLDB4NjMsMHg2MSwweDBCLDB4MkYs
MHhBRCwweEJGLDB4NDcsMHg4MiwweDA2LDB4N0EsMHhBRiwweEE2LDB4RjUsMHg3NSwKLSAgICAw
eDY3LDB4OEEsMHgwNiwweDgyLDB4QzAsMHhDQSwweDY5LDB4Q0IsMHg0NywweDgyLDB4MjYsMHg4
MiwweEIyLDB4REQsMHg5NSwweDU1LAotICAgIDB4RTksMHg5MiwweDQ3LDB4ODIsMHhBRCwweEFC
LDB4MkQsMHgyRiwweDI5LDB4OUIsMHhBOCwweDhBLDB4MjcsMHhCNywweEZCLDB4RkYsCi0gICAg
MHhCNiwweEY2LDB4NkIsMHhBMywweDJELDB4MkQsMHgyRCwweDJELDB4MTcsMHhGRiwweEQ3LDB4
RkUsMHhBRCwweEJELDB4QUQsMHhCRiwKLSAgICAweEY3LDB4RkUsMHgxOCwweEY3LDB4QkUsMHhG
QSwweEZFLDB4RkUsMHgxOCwweEZGLDB4RjcsMHhGNiwweEFGLDB4ODksMHhBQiwweEFCLAotICAg
IDB4MTcsMHhGRiwweEY3LDB4RjYsMHg4MiwweDhBLDB4MkEsMHhCNiwweDE4LDB4RkYsMHgxNyww
eEY3LDB4RUEsMHhBQSwweEEyLDB4QUEsCi0gICAgMHgzOCwweEZGLDB4RjcsMHhGNiwweEFFLDB4
QkEsMHgyRiwweEJGLDB4MzgsMHhGRiwweDE3LDB4RjcsMHhGRiwweEFFLDB4QUEsMHhGRiwKLSAg
ICAweDM4LDB4RkYsMHgxOCwweEZGLDB4MkEsMHhBQSwweEJCLDB4RUIsMHgzOCwweEZGLDB4MTgs
MHhGRiwweEEyLDB4QUEsMHhGQSwweEQ1LAotICAgIDB4MTgsMHhGRiwweDM4LDB4RjcsMHgwOCww
eDAyLDB4QzAsMHhBQSwweDM4LDB4RkYsMHhENywweEY2LDB4NkEsMHhFQSwweDc4LDB4NTcsCi0g
ICAgMHhENywweEY2LDB4QjYsMHhFRSwweEUwLDB4QTgsMHhBOCwweEFBLDB4RDcsMHhGNiwweEI2
LDB4RUUsMHhBRiwweDBBLDB4MDgsMHgwMiwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEY2LDB4QUIs
MHhFQSwweEVBLDB4NUMsMHhCNiwweEY2LDB4NzUsMHhFRSwweEEyLDB4QTAsMHhBOCwweEQ4LAot
ICAgIDB4OTYsMHhFRSwweDU1LDB4RUUsMHhFMCwweEUwLDB4RjgsMHhGNywweEI2LDB4RjYsMHgz
MCwweENELDB4N0EsMHg3RSwweEVBLDB4MDAsCi0gICAgMHg3NSwweEVFLDB4QUUsMHhCQywweEQ3
LDB4QjcsMHgyQSwweDAwLDB4NzYsMHhFRSwweEQzLDB4REQsMHgyRCwweDBCLDB4MDAsMHgwOCwK
LSAgICAweDc1LDB4RUUsMHhCMiwweEQ1LDB4NTgsMHhFMiwweEEwLDB4MDAsMHgxNCwweEU2LDB4
NzEsMHhDRCwweEY1LDB4REYsMHhGNiwweEY4LAotICAgIDB4NzYsMHhFRSwweEQzLDB4RDUsMHgw
QiwweDJELDB4QjUsMHhCNSwweEY3LDB4RjYsMHg1NSwweEU2LDB4MkEsMHg4QiwweDJCLDB4QkQs
Ci0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDhBLDB4QUIsMHhFRiwweDk1LDB4RjgsMHhGNiww
eEQ3LDB4RjYsMHhBQSwweDlELDB4M0UsMHhGQSwKLSAgICAweEQ4LDB4RkUsMHhGNywweEY2LDB4
REQsMHg1RCwweDc1LDB4RkQsMHhGNywweEY2LDB4RDcsMHhGNiwweEFBLDB4ODgsMHg4MCwweEZD
LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhFQywweEIyLDB4RDAsMHg1RCwweEY3LDB4RjYs
MHhENywweEY2LDB4ODgsMHg4MiwweEZELDB4NTUsCi0gICAgMHhGNywweEY2LDB4QjcsMHhGNiww
eEEwLDB4RkEsMHhENywweERCLDB4RjcsMHhGNiwweEI3LDB4RjYsMHg3QSwweDdGLDB4REYsMHhC
RiwKLSAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4NUYsMHg1NSwweDk1LDB4QUEsMHhGNywweEY2
LDB4QjYsMHhFRSwweEY1LDB4RkIsMHhBQSwweDJBLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHg1RCwweEY1LDB4QUEsMHhBMCwweDE4LDB4RkYsMHhENywweEY2LDB4NzUsMHhCRiwweEVCLDB4
RUIsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEFELDB4MDIsMHgwMCwweDgwLDB4RjgsMHhG
RSwweEY3LDB4RjYsMHhGRiwweEZGLDB4NUQsMHg1NSwKLSAgICAweEY4LDB4RjYsMHhEOCwweEY2
LDB4MDAsMHgyMCwweEY4LDB4QUUsMHhGOCwweEY2LDB4RDcsMHhGNiwweDgwLDB4RUUsMHhGQyww
eDhBLAotICAgIDB4RjgsMHhGNiwweEQ4LDB4RjYsMHgwMCwweDg2LDB4QUUsMHhGRSwweEY3LDB4
RjYsMHhEOCwweEY2LDB4MkUsMHhBRiwweEZGLDB4NUEsCi0gICAgMHhGOCwweEY2LDB4RDcsMHhG
NiwweEUwLDB4ODAsMHhDQSwweEFELDB4RjgsMHhGNiwweEQ3LDB4RjYsMHg3RiwweEZGLDB4RkQs
MHhBOSwKLSAgICAweEY4LDB4RjYsMHhENywweEY2LDB4NTksMHg3RiwweDZFLDB4NUEsMHhENyww
eEY2LDB4RDgsMHhFRSwweEFBLDB4QTIsMHhBQSwweDJBLAotICAgIDB4RjcsMHhGNiwweEI3LDB4
RUUsMHgwQSwweDNCLDB4MkYsMHhCRiwweDE4LDB4RkYsMHhCNywweEVFLDB4RkEsMHhGQSwweDYy
LDB4RkEsCi0gICAgMHhCNywweEVFLDB4NzUsMHhFRSwweEZBLDB4RDgsMHg3OCwweEZDLDB4NzYs
MHhFRSwweDk2LDB4RTYsMHgwOCwweDAyLDB4OEEsMHgwRiwKLSAgICAweDk2LDB4RUUsMHg1NSww
eEVFLDB4OEEsMHhFRSwweEZGLDB4REYsMHhCNywweEVFLDB4NTYsMHhFRSwweEVCLDB4QUYsMHgy
RCwweEFGLAotICAgIDB4OTYsMHhFRSwweEY0LDB4REQsMHg2MCwweDYwLDB4RTAsMHhDMCwweEQz
LDB4REQsMHgxMCwweEJELDB4M0QsMHhBNSwweDI2LDB4MjcsCi0gICAgMHg5NiwweEVFLDB4RjQs
MHhERCwweDJCLDB4MkQsMHhBRCwweDJGLDB4QjcsMHhGNiwweDc2LDB4RUUsMHhGRSwweEVBLDB4
RkEsMHg3QSwKLSAgICAweDk2LDB4RUUsMHgzNSwweEU2LDB4RjIsMHhFQSwweEZDLDB4N0EsMHgx
NCwweERFLDB4NzIsMHhDRCwweDVDLDB4NUMsMHg1OCwweDc4LAotICAgIDB4OTIsMHhDRCwweDUx
LDB4Q0QsMHhGRiwweDNFLDB4RUYsMHg1NSwweDkyLDB4RDUsMHgzMSwweEM1LDB4RTMsMHhGQSww
eERFLDB4NUYsCi0gICAgMHhCMiwweEQ1LDB4MTAsMHhDNSwweEZCLDB4QUYsMHhBRiwweDI1LDB4
RjMsMHhERCwweDkyLDB4Q0QsMHhCNSwweEFELDB4MkYsMHgyQiwKLSAgICAweDE0LDB4REUsMHhE
MywweERELDB4MEYsMHhBRiwweEFCLDB4QzIsMHg1NSwweEU2LDB4RjQsMHhERCwweEJELDB4Qjcs
MHgzNywweDk3LAotICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHgyRCwweDJELDB4OEIsMHhBRCww
eDk2LDB4RUUsMHg3NiwweEVFLDB4N0MsMHg2QiwweEZCLDB4RkYsCi0gICAgMHg3NSwweEVFLDB4
NTUsMHhFNiwweDU4LDB4QkEsMHhFOCwweEZBLDB4OTYsMHhFRSwweDM0LDB4RTYsMHhGRCwweEFG
LDB4M0YsMHhBQiwKLSAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4QUIsMHhFQiwweEVCLDB4RkUs
MHhGNywweEY2LDB4QjYsMHhFRSwweEZBLDB4RkUsMHhGRiwweEY3LAotICAgIDB4RDcsMHhGNiww
eEQ2LDB4RUUsMHhBQSwweDIyLDB4QUEsMHhBQSwweEQ3LDB4RjYsMHhGNiwweEVFLDB4MDAsMHgy
MiwweEE4LDB4MkEsCi0gICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEVGLDB4RkUsMHhBQSwweENB
LDB4RDcsMHhGNiwweEI2LDB4RUUsMHg4QSwweDJBLDB4MDgsMHg4MywKLSAgICAweEQ3LDB4RjYs
MHhGNiwweEVFLDB4MDgsMHg4MiwweDA4LDB4MzgsMHhENywweEY2LDB4RjcsMHhFRSwweDgwLDB4
MDgsMHgyMiwweDgyLAotICAgIDB4RDcsMHhGNiwweEY2LDB4RUUsMHhFOCwweEEwLDB4MjAsMHgw
OCwweEQ3LDB4RjYsMHhGNywweEVFLDB4ODgsMHgyMiwweDIwLDB4QTIsCi0gICAgMHhGNywweEY2
LDB4RDcsMHhGNiwweEI3LDB4RkQsMHhGRiwweDdGLDB4RjYsMHhGNiwweEQ3LDB4RjYsMHhFRiww
eEZELDB4RDcsMHg1NywKLSAgICAweEQ3LDB4RjYsMHhCNSwweEVFLDB4RTAsMHhBMCwweEE4LDB4
RTgsMHhENywweEY2LDB4QjYsMHhFRSwweEFBLDB4NkEsMHhFQSwweEVFLAotICAgIDB4RDYsMHhG
NiwweEI2LDB4RUUsMHhFQiwweEI1LDB4OUYsMHhCMiwweEQ3LDB4RjYsMHhCNiwweEVFLDB4NTUs
MHhGNywweDc2LDB4REYsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEZFLDB4NTcsMHhGRSww
eEEzLDB4RDYsMHhGNiwweEI2LDB4RUUsMHgzRiwweEFCLDB4MjksMHhBRCwKLSAgICAweEY3LDB4
RjYsMHhCNiwweEVFLDB4QUEsMHhBQSwweEFGLDB4RUIsMHhGNywweEY2LDB4RDcsMHhGNiwweDg5
LDB4OTcsMHg1RCwweDVELAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGRiwweDZGLDB4NkMs
MHg3RCwweEY3LDB4RjYsMHhENywweEY2LDB4RjUsMHg1RiwweDc1LDB4QkQsCi0gICAgMHhGNyww
eEY2LDB4RDcsMHhGNiwweDNFLDB4QkEsMHhBQiwweEJCLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhG
QSwweEEyLDB4NEMsMHhFQSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NUUsMHhGQSwweDVF
LDB4NkEsMHhGNywweEY2LDB4QjYsMHhFRSwweENBLDB4RUEsMHhFQSwweDdBLAotICAgIDB4MzQs
MHhERSwweEU1LDB4NTksMHg3OCwweDcwLDB4NjAsMHg2MCwweDQzLDB4NDEsMHhDMiwweDM4LDB4
NUUsMHhGRSwweDdDLDB4N0EsCi0gICAgMHgyMywweDQ5LDB4ODEsMHgzMCwweDBBLDB4MkIsMHhB
RCwweEFGLDB4NjQsMHg1MSwweDAzLDB4NDEsMHhBRiwweDhGLDB4QTUsMHgzRCwKLSAgICAweDg1
LDB4NTEsMHgwMiwweDQxLDB4NUYsMHhGQSwweEFFLDB4MDIsMHhDNSwweDYxLDB4NDMsMHg0OSww
eEY1LDB4QjksMHhBQSwweDBBLAotICAgIDB4MDYsMHg2MiwweDg0LDB4NTksMHhFNSwweEJGLDB4
MkYsMHgwMiwweEU2LDB4NjEsMHhBNSwweDU5LDB4QTIsMHhFMCwweEUwLDB4QkMsCi0gICAgMHhD
NSwweDU5LDB4NjQsMHg1OSwweDgwLDB4ODgsMHhBQSwweDNBLDB4RTYsMHg2MSwweEE1LDB4NTks
MHgwRSwweEJELDB4NzksMHg1QSwKLSAgICAweDI2LDB4NkEsMHhBNSwweDU5LDB4MDIsMHhBQSww
eEU5LDB4QTcsMHg0NywweDcyLDB4RTYsMHg2MSwweDAzLDB4QTIsMHhBQSwweEVELAotICAgIDB4
NDcsMHg2QSwweDA2LDB4NjIsMHhFQSwweEZGLDB4RkIsMHhGRiwweDY4LDB4NzIsMHhFNSwweDYx
LDB4MEEsMHgyQiwweEFCLDB4QjUsCi0gICAgMHg4OCwweDcyLDB4MDUsMHg2MiwweEUyLDB4RjAs
MHg3QSwweERGLDB4NDcsMHg2QSwweDA2LDB4NjIsMHhGMCwweDcwLDB4REQsMHg1NywKLSAgICAw
eDI2LDB4NkEsMHgwNSwweDYyLDB4QUMsMHhCQSwweDU3LDB4N0QsMHg2NywweDcyLDB4RTUsMHg2
MSwweEJBLDB4MkUsMHhFRCwweEY3LAotICAgIDB4QzksMHg3QSwweDI2LDB4NkEsMHgyRCwweEFG
LDB4QkIsMHhGNSwweEU5LDB4ODIsMHg0NywweDcyLDB4OEUsMHhBRSwweDc3LDB4NTUsCi0gICAg
MHg4OCwweDdBLDB4RTYsMHg2MSwweDAwLDB4QTgsMHhFRSwweDVGLDB4NDcsMHg3MiwweEE0LDB4
NTksMHhFOCwweEVBLDB4N0EsMHg3RiwKLSAgICAweDA1LDB4NkEsMHg4MywweDU5LDB4N0YsMHhG
NywweEJGLDB4MkYsMHg0NywweDdBLDB4QTQsMHg2MSwweEI1LDB4QkYsMHgyQSwweDAyLAotICAg
IDB4NjgsMHg3QSwweDI2LDB4NzIsMHg3RCwweDdGLDB4N0IsMHg3MCwweDI2LDB4NzIsMHhDNSww
eDY5LDB4NzgsMHg3OCwweDc4LDB4NzAsCi0gICAgMHhDNSwweDY5LDB4RTMsMHg1MCwweEU4LDB4
RkMsMHg3RSwweERFLDB4NDQsMHg1OSwweDAzLDB4NTksMHgyMiwweDAzLDB4OUEsMHhBRiwKLSAg
ICAweEE1LDB4NjksMHg0NCwweDYxLDB4MEEsMHgyQiwweDJGLDB4RkQsMHgwNiwweDdBLDB4QTUs
MHg2OSwweDAyLDB4QUIsMHgxRiwweEI5LAotICAgIDB4ODcsMHg4QSwweDI3LDB4ODIsMHg3RCww
eEY1LDB4RjUsMHgyNywweDg3LDB4OEEsMHgyNiwweDdBLDB4NUQsMHhEQiwweEYzLDB4RkUsCi0g
ICAgMHhDOCwweDhBLDB4NDcsMHg4MiwweEJELDB4QkYsMHhBRCwweDI5LDB4MjksMHg5MywweDg3
LDB4ODIsMHg5RiwweDc1LDB4MzcsMHgzNywKLSAgICAweDk2LDB4RjYsMHhFQywweEFCLDB4MkQs
MHgyRCwweDI5LDB4MDksMHhGNywweEZFLDB4RDcsMHhGNiwweDBBLDB4MDgsMHgwMiwweDAzLAot
ICAgIDB4RjcsMHhGRSwweDE3LDB4RjcsMHhFRSwweEVBLDB4RUUsMHhFOCwweEY3LDB4RkUsMHgx
OCwweEY3LDB4RUYsMHhBRSwweEZGLDB4QkIsCi0gICAgMHgxNywweEZGLDB4RjcsMHhGNiwweDlF
LDB4QjUsMHhCRCwweEFCLDB4RjcsMHhGRSwweDE4LDB4RjcsMHg5QiwweDVCLDB4QkYsMHhCRiwK
LSAgICAweDE3LDB4RkYsMHhGNywweEY2LDB4MkIsMHhBRSwweEFFLDB4RUIsMHgxNywweEZGLDB4
RjcsMHhGNiwweEEwLDB4QkYsMHhCNywweERGLAotICAgIDB4MTcsMHhGRiwweEY4LDB4RjYsMHgw
MCwweEFBLDB4RUYsMHhBRiwweDE4LDB4RkYsMHhGNywweEY2LDB4MjIsMHgwQSwweDAyLDB4MEEs
Ci0gICAgMHgzOCwweEZGLDB4RDcsMHhGNiwweEE4LDB4RjIsMHg3QSwweDdFLDB4RjcsMHhGNiww
eEI2LDB4RUUsMHhGMCwweEY4LDB4RkEsMHhGRiwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4
MjksMHhBQiwweEZBLDB4RkUsMHhCNiwweEY2LDB4RDcsMHhFRSwweEZFLDB4QkUsMHhBRSwweEVG
LAotICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHg3QSwweEZFLDB4N0YsMHg1RSwweDk2LDB4RUUs
MHg5MiwweEQ1LDB4QTAsMHhBOCwweEVBLDB4NUEsCi0gICAgMHhENywweEY2LDB4NzEsMHhDRCww
eDJBLDB4QUIsMHgwRiwweDJELDB4MTgsMHhGRiwweEQ3LDB4RkUsMHhCRCwweEFGLDB4MkUsMHhB
QSwKLSAgICAweDE4LDB4RkYsMHg5NiwweEY2LDB4NUUsMHg3QSwweEU4LDB4QTIsMHhENywweEY2
LDB4NzUsMHhFRSwweDU1LDB4NUUsMHg1RiwweDVDLAotICAgIDB4NzUsMHhFRSwweDU1LDB4RUUs
MHg5OCwweDM4LDB4QjgsMHg3OCwweDU1LDB4RUUsMHhCMiwweEQ1LDB4RkMsMHg3MCwweEUwLDB4
ODAsCi0gICAgMHgzNCwweEU2LDB4QjIsMHhENSwweDJCLDB4M0QsMHgzNSwweEFGLDB4QjYsMHhG
NiwweDE0LDB4REUsMHgyRiwweDJGLDB4QkQsMHhFRCwKLSAgICAweEY3LDB4RjYsMHg5NiwweEY2
LDB4MkEsMHgyQiwweDJGLDB4MkQsMHhGNywweEY2LDB4RDcsMHhGNiwweDdFLDB4QUYsMHhFQiww
eDZCLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBRCwweEZFLDB4RTgsMHhBMywweEY3LDB4
RjYsMHhENywweEY2LDB4RkUsMHg1QiwweDZCLDB4RUEsCi0gICAgMHhGNywweEY2LDB4RDcsMHhG
NiwweDc1LDB4RkYsMHhBOSwweDBGLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3NSwweEZCLDB4RkUs
MHhENywKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NTUsMHhGNSwweEJELDB4Q0YsMHhGOCww
eEY2LDB4RDcsMHhGNiwweEQ1LDB4MkQsMHgwMSwweDBBLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHg1QywweDc2LDB4NTQsMHg1QywweEY3LDB4RjYsMHhENywweEY2LDB4OTUsMHg1NywweEI1
LDB4QTUsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEI4LDB4QUUsMHhFNiwweEUyLDB4Rjcs
MHhGNiwweEI3LDB4RjYsMHgwMCwweDJDLDB4MkUsMHg4MiwKLSAgICAweEQ3LDB4RjYsMHhGNyww
eEVFLDB4QUIsMHg4QiwweEFBLDB4QUMsMHhGNywweEY2LDB4RDcsMHhGNiwweEFBLDB4MkIsMHg4
RSwweEZBLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgwOCwweDIyLDB4MDIsMHhCQSwweEY3
LDB4RjYsMHhEOCwweEY2LDB4QUEsMHhCOCwweEE4LDB4ODgsCi0gICAgMHhGNywweEY2LDB4RDcs
MHhGNiwweEZFLDB4QkEsMHhBMiwweDIwLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3OCwweEFBLDB4
ODAsMHgyMCwKLSAgICAweEY3LDB4RjYsMHhEOCwweEY2LDB4OEEsMHg4QSwweDAwLDB4ODAsMHhE
OCwweEZFLDB4RjgsMHhGNiwweEQ1LDB4NTUsMHg3RCwweEY1LAotICAgIDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHhFNCwweDZBLDB4NjAsMHg3QSwweEQ3LDB4RjYsMHhCNywweEVFLDB4OEEsMHhCQSww
eERGLDB4RDYsCi0gICAgMHhCNywweEY2LDB4MTgsMHhFRiwweEE4LDB4QTgsMHhBQSwweEE4LDB4
RjgsMHhGNiwweEI3LDB4RjYsMHhFMiwweEMwLDB4QzAsMHhDMiwKLSAgICAweEI2LDB4RUUsMHg3
NiwweEVFLDB4N0MsMHg1RSwweDdFLDB4NUUsMHhCNiwweEVFLDB4NTYsMHhFNiwweEVCLDB4N0Is
MHhFQiwweDJGLAotICAgIDB4OTYsMHhFRSwweDU1LDB4RUUsMHhERiwweEJBLDB4MDgsMHgwMCww
eDk2LDB4RjYsMHg3NiwweEVFLDB4MkQsMHhBQiwweEU4LDB4QTIsCi0gICAgMHhCNywweEY2LDB4
MTQsMHhERSwweDYwLDB4NkEsMHg2QSwweDcyLDB4RjQsMHhERCwweDUxLDB4QzUsMHgxNywweEI3
LDB4MzcsMHhCNywKLSAgICAweDk3LDB4RUUsMHgxNCwweERFLDB4QkQsMHhBRCwweDI1LDB4MkQs
MHg5NiwweEVFLDB4NTUsMHhFRSwweEEwLDB4RTgsMHhFMCwweEZBLAotICAgIDB4NzUsMHhFRSww
eDM1LDB4RTYsMHhGOCwweEJBLDB4RTgsMHhBRSwweDM1LDB4RTYsMHg3MiwweENELDB4N0MsMHg1
OCwweDU4LDB4NTgsCi0gICAgMHg3MiwweENELDB4MzEsMHhDNSwweEJFLDB4NUUsMHg1OCwweEQ3
LDB4NTIsMHhDRCwweEQwLDB4QkMsMHhFMCwweEZCLDB4N0UsMHg3QSwKLSAgICAweEIyLDB4RDUs
MHhDRiwweEJDLDB4MkIsMHhBRiwweDI1LDB4MkQsMHgzNCwweEU2LDB4RDIsMHhENSwweEZELDB4
QjUsMHhCRCwweDJELAotICAgIDB4MTQsMHhFNiwweDM0LDB4REUsMHhBOCwweEJGLDB4QUYsMHhB
RiwweDU1LDB4RTYsMHhGMywweERELDB4QkQsMHhCRSwweEJGLDB4QUYsCi0gICAgMHg5NiwweEVF
LDB4NTUsMHhFNiwweEJELDB4RUQsMHgwRCwweEFGLDB4OTYsMHhFRSwweDc2LDB4RUUsMHg3OSww
eDM5LDB4QUYsMHg4QiwKLSAgICAweDc1LDB4RUUsMHg1NSwweEU2LDB4RjgsMHhFOCwweDgyLDB4
QTAsMHg5NiwweEVFLDB4NTUsMHhFNiwweEFGLDB4QUYsMHhCNywweEJGLAotICAgIDB4RDYsMHhG
NiwweEI3LDB4RUUsMHhCMCwweDgyLDB4QTgsMHgyQSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4RkEs
MHhFRSwweEFBLDB4QTIsCi0gICAgMHhENiwweEY2LDB4QjcsMHhFRSwweDhCLDB4MkUsMHg4QSww
eEE4LDB4RDYsMHhGNiwweEI3LDB4RUUsMHg4MCwweEYwLDB4ODIsMHgyOCwKLSAgICAweEQ3LDB4
RjYsMHhCNiwweEVFLDB4MkIsMHhBQSwweEFBLDB4QUMsMHhENywweEY2LDB4QjYsMHhFRSwweDAy
LDB4MDIsMHgwMCwweDhFLAotICAgIDB4RDcsMHhGNiwweEY2LDB4RUUsMHhBOCwweDI4LDB4MDAs
MHgyMCwweEY3LDB4RjYsMHhENywweEY2LDB4NUYsMHhGRiwweEZGLDB4RjUsCi0gICAgMHhENyww
eEY2LDB4RjcsMHhFRSwweDIyLDB4MDAsMHg4MiwweEE4LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhG
NSwweEJCLDB4QkUsMHhBRCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RkYsMHhGRiwweDJG
LDB4QUQsMHhGNywweEY2LDB4RDcsMHhGNiwweEJBLDB4QTksMHhBQiwweEU4LAotICAgIDB4RDcs
MHhGNiwweEY2LDB4RUUsMHgyQSwweDAyLDB4MDgsMHgyQSwweEQ2LDB4RjYsMHhCNywweEVFLDB4
MkEsMHgyQSwweEFDLDB4QUUsCi0gICAgMHhENiwweEY2LDB4QjcsMHhFRSwweEEyLDB4MkEsMHhB
QSwweDJBLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhCRiwweEJFLDB4ODgsMHg4MCwKLSAgICAweEI2
LDB4RjYsMHhENiwweEVFLDB4RUYsMHhBQiwweEJCLDB4RUQsMHhCNiwweEY2LDB4RDcsMHhFRSww
eDhCLDB4QUIsMHhGRSwweEVGLAotICAgIDB4RjYsMHhGNiwweEQ3LDB4RjYsMHg3NSwweEY1LDB4
RUQsMHhBRCwweEY3LDB4RjYsMHhENywweEY2LDB4REQsMHhGNywweERELDB4NTcsCi0gICAgMHhG
NywweEY2LDB4RDcsMHhGNiwweDVGLDB4RTksMHhFMywweDdELDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHhBRCwweEJBLDB4RUIsMHg2RSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RkEsMHhBRiww
eEVBLDB4MEMsMHhGNywweEY2LDB4RDcsMHhGNiwweEFGLDB4QTgsMHhFRSwweEVBLAotICAgIDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHg2QSwweDVFLDB4NUQsMHg5RCwweEY3LDB4RjYsMHhCNiwweEVF
LDB4N0EsMHhFQSwweEFCLDB4QUEsCi0gICAgMHg3NSwweEVFLDB4MDksMHg3QiwweDcwLDB4NzAs
MHg2MCwweEUwLDB4RTQsMHg1OSwweEMyLDB4MzgsMHg1RSwweDVFLDB4N0EsMHhGOCwKLSAgICAw
eDY0LDB4NTEsMHhDMiwweDM4LDB4REQsMHhBNSwweEJGLDB4MkEsMHhFNSwweDYxLDB4RTIsMHg0
MCwweEJELDB4QkQsMHgyQiwweDJFLAotICAgIDB4MDYsMHg2QSwweDg0LDB4NTEsMHhGNSwweEJG
LDB4QUEsMHg4MCwweDI2LDB4NkEsMHhDNSwweDU5LDB4OUQsMHgwOSwweEFCLDB4ODAsCi0gICAg
MHgyNywweDcyLDB4MDUsMHg2MiwweEU5LDB4OEEsMHg4OSwweENBLDB4MjYsMHg2QSwweEM2LDB4
NjEsMHg2NCwweEM4LDB4RTgsMHhBMiwKLSAgICAweDA2LDB4NjIsMHhBNCwweDU5LDB4NUIsMHg3
RSwweEJFLDB4RTgsMHhFNSwweDYxLDB4QTUsMHg1OSwweEJGLDB4RkEsMHhBRiwweDhBLAotICAg
IDB4MjcsMHg2QSwweEU2LDB4NjEsMHhFMSwweDNGLDB4MDksMHgwOSwweDQ3LDB4NkEsMHgwNiww
eDYyLDB4OTcsMHhENywweEUyLDB4MDAsCi0gICAgMHg0NywweDZBLDB4RTUsMHg2MSwweEY3LDB4
NUYsMHg3QywweEY4LDB4MjYsMHg2QSwweEM0LDB4NTksMHgyRiwweENGLDB4RkYsMHg5NiwKLSAg
ICAweDA2LDB4NkEsMHhDNSwweDU5LDB4QkMsMHhGRSwweEJCLDB4RkEsMHgwNSwweDZBLDB4QzUs
MHg1OSwweDJBLDB4RTksMHhGQSwweEZBLAotICAgIDB4MjYsMHg2QSwweEM1LDB4NTksMHhBMiww
eEZELDB4RjcsMHg1RCwweDQ3LDB4NkEsMHhFNSwweDYxLDB4NEIsMHhBRCwweEY1LDB4NUQsCi0g
ICAgMHg0NywweDZBLDB4QTQsMHg1OSwweDBFLDB4RkEsMHhFRSwweDlFLDB4MjYsMHg2QSwweEM0
LDB4NTksMHg4OCwweEMyLDB4N0IsMHg1NywKLSAgICAweDA2LDB4NkEsMHhBNCwweDU5LDB4RTgs
MHhBRSwweEY2LDB4RkYsMHhFNSwweDY5LDB4ODMsMHg1OSwweERFLDB4QkEsMHhCRSwweDBFLAot
ICAgIDB4NjcsMHg3QSwweEM0LDB4NjEsMHhCNSwweEFELDB4MkQsMHgwQiwweEM4LDB4OEEsMHg0
NywweDdBLDB4NUYsMHhGNywweEFELDB4OEEsCi0gICAgMHhBOCwweDgyLDB4NDcsMHg3QSwweDdC
LDB4N0YsMHhFOCwweDgwLDB4NjgsMHg3QSwweDY0LDB4NjEsMHhGQSwweDdBLDB4NzgsMHhGOCwK
LSAgICAweDY1LDB4NjEsMHhFMiwweDUwLDB4QjQsMHhGNiwweEZFLDB4QUMsMHg4NSwweDYxLDB4
MjMsMHg1OSwweDU1LDB4RTUsMHhGRCwweDhCLAotICAgIDB4QTQsMHg2OSwweDQzLDB4NTksMHhC
NSwweDE1LDB4QkYsMHgzQiwweDY3LDB4ODIsMHhDNSwweDcxLDB4QkQsMHhBOSwweDI5LDB4MDks
Ci0gICAgMHhBOCwweDhBLDB4NDcsMHg4MiwweEZELDB4MkQsMHg4RiwweDIyLDB4QzgsMHg4QSww
eDY3LDB4ODIsMHg3NywweEZBLDB4QUIsMHhFQSwKLSAgICAweEE4LDB4OEEsMHgyNiwweDdBLDB4
MEEsMHg4MCwweEFBLDB4N0UsMHgyRCwweEFDLDB4MjYsMHg3MiwweEJGLDB4QjcsMHhCNSwweDI1
LAotICAgIDB4RDcsMHhGRSwweEFGLDB4QkMsMHgyRCwweDI5LDB4MDksMHgwQiwweDE3LDB4RkYs
MHhEOCwweEY2LDB4RUIsMHg4QiwweEFBLDB4MDIsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGNiww
eEZGLDB4Q0YsMHhBMywweDgyLDB4MTcsMHhGRiwweEY3LDB4RjYsMHhGRSwweEY3LDB4QkQsMHhC
RiwKLSAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4OEIsMHgyQSwweEFBLDB4MkEsMHhGNywweEZF
LDB4MTgsMHhGNywweEU1LDB4RkYsMHhFRiwweEZGLAotICAgIDB4MTcsMHhGRiwweEY3LDB4RjYs
MHhFQiwweEZFLDB4N0UsMHg1RSwweEY3LDB4RkUsMHhGNywweEY2LDB4NUYsMHhGRiwweEZELDB4
REYsCi0gICAgMHgxNywweEZGLDB4RDcsMHhGNiwweEFGLDB4MEIsMHgyQiwweDBCLDB4MTgsMHhG
RiwweEQ3LDB4RjYsMHgwMCwweDgwLDB4NjgsMHg1OCwKLSAgICAweEY3LDB4RjYsMHhCNiwweEVF
LDB4QjgsMHg1RSwweDU3LDB4NzcsMHhCNiwweEY2LDB4RDcsMHhFRSwweEFBLDB4RUIsMHhFQiww
eEZBLAotICAgIDB4MTgsMHhGRiwweEI2LDB4RUUsMHhGNywweEY3LDB4RkYsMHgyQiwweDM4LDB4
RkYsMHhCNiwweEVFLDB4NzcsMHhGRCwweEJGLDB4MDIsCi0gICAgMHgxOCwweEZGLDB4OTYsMHhF
RSwweDU3LDB4RkYsMHhBQSwweDAwLDB4RDcsMHhGNiwweEIyLDB4RDUsMHg3RSwweEY4LDB4RTAs
MHhBOCwKLSAgICAweEQ3LDB4RjYsMHhCMiwweEQ1LDB4MEQsMHgyQiwweDBBLDB4MEIsMHhGOCww
eEZFLDB4MTgsMHhGNywweDg4LDB4MjAsMHgyOCwweEFBLAotICAgIDB4MTcsMHhGRiwweEQ4LDB4
RjYsMHhBQiwweEE1LDB4RkIsMHgyQSwweDE4LDB4RkYsMHg3NiwweEVFLDB4NUUsMHg3QywweDdB
LDB4NzgsCi0gICAgMHg3NSwweEVFLDB4NTUsMHhFNiwweDVFLDB4RjgsMHhFOCwweEI4LDB4NzUs
MHhFRSwweDM0LDB4RUUsMHhFQSwweEVBLDB4RUEsMHhBQSwKLSAgICAweDM1LDB4RTYsMHhEMiww
eEQ1LDB4QjYsMHhCRSwweEUwLDB4QTAsMHg3NSwweEVFLDB4MTQsMHhERSwweDI5LDB4QUYsMHhB
RiwweDk1LAotICAgIDB4RjgsMHhGRSwweDU1LDB4RTYsMHgyQiwweDJGLDB4QTksMHhBRCwweEY3
LDB4RjYsMHhENywweEY2LDB4ODksMHhCRSwweEJGLDB4QUIsCi0gICAgMHhGNywweEY2LDB4RDcs
MHhGNiwweEVBLDB4RTIsMHhFMiwweDBBLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg2RSwweERELDB4
N0YsMHg4MCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QUQsMHhBNSwweEE5LDB4MDUsMHhG
NywweEY2LDB4RDcsMHhGNiwweEI3LDB4QUYsMHg2RCwweEQ3LAotICAgIDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHhBQSwweDU3LDB4NTUsMHg1NSwweEY3LDB4RjYsMHhENywweEY2LDB4RTgsMHg1RSww
eDVELDB4NUYsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDVGLDB4N0QsMHhGRiwweDdGLDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHhCRiwweEZELDB4N0YsMHhGRiwKLSAgICAweEQ3LDB4RjYsMHhG
NywweEVFLDB4QUUsMHg4MiwweEE4LDB4RUEsMHhGNywweEY2LDB4RDcsMHhGNiwweEVCLDB4RTks
MHhFOSwweDVFLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBQiwweEJBLDB4QUUsMHgyRSww
eEY3LDB4RjYsMHhENywweEY2LDB4MjUsMHhBMywweEUyLDB4N0MsCi0gICAgMHhGNywweEY2LDB4
RDcsMHhGNiwweEFFLDB4MEEsMHgyQSwweDdCLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBQSwweEFC
LDB4RUYsMHg1NSwKLSAgICAweEY3LDB4RjYsMHhENywweEVFLDB4MjAsMHhBQywweEQ0LDB4REQs
MHhGNywweEY2LDB4RDcsMHhGNiwweEE4LDB4QUEsMHhCOSwweDNELAotICAgIDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHg4OCwweEVBLDB4QUUsMHg4OCwweEY3LDB4RjYsMHhENywweEY2LDB4RUEsMHg3
OCwweDVFLDB4N0YsCi0gICAgMHhGNywweEY2LDB4QjcsMHhFRSwweEZBLDB4RkEsMHg3RSwweDVG
LDB4RDcsMHhGNiwweDk2LDB4RUUsMHhBQSwweEJBLDB4QkYsMHhCNywKLSAgICAweEQ3LDB4RjYs
MHhCNywweEVFLDB4MEEsMHgyMiwweEFGLDB4NTUsMHhGNywweEY2LDB4QjcsMHhFRSwweEMyLDB4
RUEsMHhGQiwweEFGLAotICAgIDB4RDcsMHhGNiwweDc1LDB4RTYsMHg1RiwweEZFLDB4N0EsMHhE
QywweEI2LDB4RUUsMHg5NiwweEVFLDB4NzUsMHg3NSwweEZELDB4RTUsCi0gICAgMHg5NiwweEVF
LDB4NzYsMHhFRSwweDAwLDB4RkMsMHhEQywweDlDLDB4OTYsMHhFRSwweDM2LDB4RUUsMHgyOCww
eDJBLDB4M0EsMHgyQSwKLSAgICAweDk3LDB4RjYsMHhGNCwweERELDB4NjgsMHg2MCwweDQ4LDB4
NjAsMHhGNCwweERELDB4NTEsMHhDNSwweEI2LDB4QkUsMHgzRiwweDM2LAotICAgIDB4OTYsMHhF
RSwweDE0LDB4REUsMHhBRCwweEFGLDB4QUQsMHhBRCwweDk2LDB4RUUsMHg1NSwweEU2LDB4N0Es
MHg2OCwweDdFLDB4NUEsCi0gICAgMHg3NSwweEVFLDB4MzYsMHhFNiwweEFBLDB4QUEsMHhGQSww
eERGLDB4NTUsMHhFNiwweDUyLDB4Q0QsMHg3OCwweDc4LDB4NjgsMHg3OCwKLSAgICAweDUyLDB4
Q0QsMHhBRiwweEJDLDB4ODgsMHhBMCwweEVBLDB4N0UsMHgxMSwweEM1LDB4QUYsMHhCQywweEY4
LDB4NzYsMHhEQiwweEY1LAotICAgIDB4RDMsMHhERCwweENGLDB4QkMsMHhBRCwweDJELDB4MkQs
MHgyRCwweDM0LDB4RTYsMHhEMiwweEQ1LDB4MkQsMHgyOSwweDIyLDB4MEIsCi0gICAgMHg1NSww
eEU2LDB4MTQsMHhFNiwweEVCLDB4QUEsMHhBQSwweEVBLDB4NTQsMHhFNiwweDE0LDB4RTYsMHhC
NywweEI3LDB4QjUsMHhBOSwKLSAgICAweDk2LDB4RUUsMHgzNCwweEU2LDB4OEEsMHhBQiwweDJF
LDB4QTksMHhCNiwweEY2LDB4NzYsMHhFRSwweEVGLDB4RUQsMHhBQiwweEFGLAotICAgIDB4OTUs
MHhFRSwweDU1LDB4RTYsMHg1RSwweDVFLDB4REUsMHhERSwweEI3LDB4RjYsMHg1NSwweEU2LDB4
QkQsMHhBRCwweDJCLDB4MEIsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEEyLDB4RkEsMHhF
OCwweDhBLDB4QjYsMHhGNiwweEQ3LDB4RUUsMHhCRiwweEJGLDB4QkYsMHhGNywKLSAgICAweEI2
LDB4RjYsMHhENywweEVFLDB4RkYsMHhGQiwweEZCLDB4QkYsMHhENywweEY2LDB4QjYsMHhFRSww
eDJBLDB4OEUsMHhCOCwweEFDLAotICAgIDB4QjYsMHhGNiwweEQ3LDB4RUUsMHg2RCwweEZGLDB4
RkYsMHhGRiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4RTgsMHgwQSwweDJBLDB4MDIsCi0gICAgMHhE
NywweEY2LDB4RjYsMHhFRSwweDgwLDB4MjIsMHgwQSwweDJBLDB4RDcsMHhGNiwweEY2LDB4RUUs
MHgyMCwweDAyLDB4QzgsMHhBMCwKLSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4MDIsMHgwOCww
eDI4LDB4MDgsMHhENywweEY2LDB4RjcsMHhFRSwweEE4LDB4QTAsMHgyMCwweDgwLAotICAgIDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHhBMSwweEI1LDB4QjUsMHg1NSwweEY3LDB4RjYsMHhENywweEY2
LDB4REIsMHhEQSwweEQwLDB4NUYsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDVBLDB4REUs
MHg1NiwweEQ3LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1NSwweDVGLDB4RkUsMHg5NSwKLSAgICAw
eEQ2LDB4RjYsMHhCNywweEVFLDB4MjAsMHgyMiwweDI4LDB4QTAsMHhENywweEY2LDB4RjYsMHhF
RSwweDIwLDB4QTIsMHgyMiwweEEyLAotICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhEQSwweDdF
LDB4RUUsMHhFQSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4QkYsMHhCQSwweEIyLDB4RUIsCi0gICAg
MHhGOCwweEY2LDB4RDcsMHhGNiwweDg1LDB4QjUsMHhGNSwweEZELDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHg1QiwweEJFLDB4QjUsMHhGOSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RkIsMHgz
QSwweEFFLDB4QUMsMHhGNywweEY2LDB4RDcsMHhGNiwweEVBLDB4RTgsMHhFQSwweEVGLAotICAg
IDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4NywweEVELDB4RUQsMHhERiwweEY3LDB4RjYsMHhENyww
eEY2LDB4OEUsMHhCQiwweEFGLDB4RUEsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEI3LDB4
OTQsMHhENCwweEY4LDB4RjcsMHhGRSwweEQ3LDB4RjYsMHg3QiwweDZFLDB4RkUsMHg1NywKLSAg
ICAweEI2LDB4RjYsMHg0RCwweEFDLDB4NjAsMHhFMCwweDYwLDB4NzgsMHgyOSwweDgzLDB4NDMs
MHg0OSwweDVFLDB4N0MsMHhGOCwweEVBLAotICAgIDB4MjUsMHg2QSwweDQzLDB4NDksMHhENSww
eEZCLDB4QUEsMHg4MCwweDQ2LDB4NkEsMHhBNCwweDU5LDB4N0QsMHhGRiwweDJGLDB4MEIsCi0g
ICAgMHg2NywweDcyLDB4QzUsMHg2MSwweEJELDB4RUEsMHhBOCwweDAyLDB4NjcsMHg3MiwweDA2
LDB4NkEsMHg3RiwweEQ3LDB4MzcsMHgyMiwKLSAgICAweDg4LDB4N0EsMHhFNSwweDYxLDB4RkQs
MHhGQiwweEM4LDB4ODAsMHg2NywweDcyLDB4MDYsMHg2QSwweDdFLDB4RUYsMHhFQiwweEIwLAot
ICAgIDB4MjYsMHg2MiwweEM1LDB4NTksMHhGRiwweEI4LDB4RkUsMHg2RSwweDA2LDB4NjIsMHhB
NCwweDU5LDB4RUEsMHg2MiwweEJBLDB4RkYsCi0gICAgMHg2OCwweDcyLDB4QzUsMHg1OSwweEFE
LDB4QUYsMHgyRCwweEE1LDB4QzgsMHg3QSwweDY3LDB4NzIsMHhGRCwweEI1LDB4QkQsMHgyRCwK
LSAgICAweEE4LDB4N0EsMHgwNiwweDZBLDB4N0EsMHhFOCwweDQwLDB4RTAsMHgyNiwweDZBLDB4
QzUsMHg1OSwweDM3LDB4REUsMHg1RSwweDVFLAotICAgIDB4RTYsMHg2MSwweEE1LDB4NTksMHg2
RSwweDk0LDB4NUUsMHgxQiwweDA2LDB4NjIsMHhDNSwweDU5LDB4REYsMHgzRCwweDI1LDB4ODAs
Ci0gICAgMHgwNSwweDYyLDB4QzUsMHg1OSwweEZCLDB4QkEsMHhGRSwweEJDLDB4MDYsMHg2Miww
eEM1LDB4NTksMHhFOCwweEE3LDB4OEIsMHhFQSwKLSAgICAweDA2LDB4NjIsMHhDNSwweDYxLDB4
M0IsMHgwQiwweDgyLDB4NTMsMHhDNCwweDU5LDB4NjMsMHg1MSwweDgwLDB4NjAsMHhFMCwweEZB
LAotICAgIDB4RTUsMHg2OSwweDgzLDB4NTEsMHhGRiwweERELDB4RkQsMHgzRiwweEM5LDB4ODIs
MHhBNCwweDYxLDB4RkQsMHhCRCwweDBGLDB4MEIsCi0gICAgMHg0QSwweDkzLDB4NjcsMHg3QSww
eDc1LDB4RkYsMHhBQiwweDIyLDB4NEIsMHg5QiwweEE4LDB4ODIsMHhGNSwweEVCLDB4MEEsMHgw
MCwKLSAgICAweDJBLDB4OUIsMHhBOCwweDgyLDB4RDcsMHhGRSwweEZBLDB4QkMsMHhDOSwweDhB
LDB4QTUsMHg2OSwweDdBLDB4N0EsMHhFMCwweDgwLAotICAgIDB4QzgsMHg4QSwweDg1LDB4NjEs
MHg1NSwweEZGLDB4QUIsMHgwMCwweDg4LDB4ODIsMHg2NCwweDYxLDB4RjUsMHhGRiwweEZBLDB4
RjgsCi0gICAgMHg2NywweDdBLDB4QzUsMHg2OSwweDU1LDB4RDUsMHgzNywweDNGLDB4RTksMHg5
MiwweDQ2LDB4N0EsMHhDNSwweDI5LDB4MkIsMHgyRiwKLSAgICAweDA5LDB4OTMsMHg2NywweDgy
LDB4RkEsMHhGOCwweDdBLDB4NUUsMHhBOCwweDhBLDB4MDUsMHg3MiwweEEwLDB4RUEsMHhFOCww
eDdFLAotICAgIDB4NDYsMHg3QSwweEU1LDB4NjksMHhBMCwweEE4LDB4M0UsMHhCNSwweEI0LDB4
REQsMHg2NywweDdBLDB4QjUsMHgyRCwweDJELDB4MEIsCi0gICAgMHhGNywweEZFLDB4RjQsMHhE
RCwweDJELDB4MEYsMHgwQiwweDAyLDB4RjcsMHhGRSwweDE4LDB4RjcsMHhCRSwweEZFLDB4QkUs
MHhGOCwKLSAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4QTIsMHhFMCwweEYyLDB4QkYsMHgxOCww
eEZGLDB4RjcsMHhGNiwweEFBLDB4OEIsMHhBQSwweEVGLAotICAgIDB4MTgsMHhGRiwweEY3LDB4
RjYsMHhBQSwweDJBLDB4MkEsMHg4QiwweDE3LDB4RkYsMHhGNywweEY2LDB4N0EsMHhGQSwweEZB
LDB4RUEsCi0gICAgMHgxNywweEZGLDB4RjcsMHhGNiwweEZFLDB4RjUsMHg1RiwweERGLDB4MTgs
MHhGRiwweEY3LDB4RjYsMHhERCwweDU1LDB4OTUsMHhCQiwKLSAgICAweDE3LDB4RkYsMHhENyww
eEY2LDB4OEEsMHhFQSwweDdBLDB4N0EsMHhGNywweEY2LDB4QjYsMHhFRSwweEY4LDB4RkEsMHhC
RiwweEJCLAotICAgIDB4RDYsMHhGNiwweEI3LDB4RUUsMHhFQiwweDgyLDB4MDgsMHhBQSwweEQ2
LDB4RjYsMHg5NiwweEVFLDB4MDgsMHgwMCwweDIyLDB4RUYsCi0gICAgMHgxOCwweEZGLDB4OTYs
MHhFRSwweDBBLDB4MkEsMHgzRSwweEI1LDB4MzgsMHhGRiwweDE4LDB4RkYsMHgwQiwweDA5LDB4
MEIsMHgwMSwKLSAgICAweDM4LDB4RkYsMHhGNywweEY2LDB4RTAsMHg2MCwweDZBLDB4RjgsMHhG
OCwweEY2LDB4NTUsMHhFNiwweDVFLDB4RkUsMHhCOCwweEE4LAotICAgIDB4RjgsMHhGRSwweDk2
LDB4RTYsMHgyRCwweEFELDB4MkYsMHgyQSwweDE4LDB4RkYsMHhGOCwweEY2LDB4QUIsMHhFRCww
eEFGLDB4RkQsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEZGLDB4RjksMHhFRiwweEVCLDB4
MTgsMHhGRiwweDk3LDB4RjYsMHg2QSwweEU4LDB4QTIsMHhBMCwKLSAgICAweEQ3LDB4RjYsMHg1
NSwweEU2LDB4NzcsMHhERiwweDVFLDB4NzgsMHg3NSwweEVFLDB4NTUsMHhFNiwweEFGLDB4Qjcs
MHg3RiwweDVGLAotICAgIDB4NTUsMHhFNiwweDE0LDB4RTYsMHg3MCwweDYwLDB4MDAsMHgwMCww
eDM1LDB4RTYsMHhGNCwweERELDB4MEIsMHgyOSwweDJGLDB4MzgsCi0gICAgMHhCNiwweEY2LDB4
MzQsMHhFNiwweDA5LDB4MkYsMHg4OSwweEFELDB4RjcsMHhGNiwweEI3LDB4RjYsMHg4QSwweEEy
LDB4ODMsMHgyRCwKLSAgICAweDE3LDB4RjcsMHhCNiwweEVFLDB4QUIsMHhBOSwweEFGLDB4RUUs
MHhGNywweEZFLDB4MTgsMHhGNywweEFBLDB4QUEsMHhBQSwweEEwLAotICAgIDB4MTgsMHhGRiww
eEQ3LDB4RjYsMHhGRCwweEZGLDB4RkEsMHhFQSwweEY3LDB4RjYsMHhENywweEY2LDB4NzUsMHg1
RSwweEQ4LDB4N0UsCi0gICAgMHhGNywweEY2LDB4QjcsMHhFRSwweEZCLDB4QTMsMHhBQiwweEZG
LDB4RDcsMHhGNiwweEY3LDB4RUUsMHgwQSwweDgwLDB4MDAsMHgwMCwKLSAgICAweEY3LDB4RjYs
MHhENywweEY2LDB4NUYsMHhERiwweDdELDB4RDUsMHhGNywweEY2LDB4RDcsMHhGNiwweEVBLDB4
RkIsMHhGQiwweDU5LAotICAgIDB4RDcsMHhGNiwweEY3LDB4RUUsMHhFQSwweEE4LDB4ODIsMHgw
MCwweEQ3LDB4RjYsMHhGNywweEVFLDB4OEEsMHg4RSwweEEyLDB4RTgsCi0gICAgMHhENywweEY2
LDB4RjcsMHhFRSwweEFBLDB4MkEsMHg4QSwweEJBLDB4RDcsMHhGNiwweEY4LDB4RUUsMHgwOCww
eDAwLDB4RjIsMHhFQSwKLSAgICAweDE4LDB4RjcsMHhENywweEY2LDB4NTUsMHg5NywweEFBLDB4
QUUsMHhGOCwweEZFLDB4RDcsMHhFRSwweEZGLDB4QUEsMHg4MiwweEFBLAotICAgIDB4MTgsMHhG
NywweEQ3LDB4RjYsMHhGRiwweEFCLDB4QUIsMHhFQiwweDE4LDB4RjcsMHhENywweEY2LDB4QUYs
MHhCRSwweEZFLDB4RkEsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDgwLDB4NDAsMHhGMCww
eERGLDB4RjcsMHhGNiwweEI3LDB4RUUsMHhFQSwweEVFLDB4N0YsMHhGRSwKLSAgICAweEQ3LDB4
RjYsMHg3NiwweEU2LDB4QTgsMHhGQSwweEZBLDB4NjgsMHhCNiwweEVFLDB4NzYsMHhFNiwweDJB
LDB4QkYsMHhCRiwweEFCLAotICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHg1NiwweDlELDB4MkQs
MHgyQiwweEQ3LDB4RjYsMHhGNywweEVFLDB4QTAsMHgyMCwweDIwLDB4MDgsCi0gICAgMHhENyww
eEY2LDB4NzYsMHhFNiwweDVDLDB4RkYsMHhERSwweDVFLDB4OTYsMHhFRSwweDU1LDB4RTYsMHgw
QSwweDI4LDB4RkUsMHg3QSwKLSAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4QTgsMHgyQSwweEFG
LDB4OTUsMHg5NiwweEVFLDB4NzYsMHhFRSwweEZELDB4RkIsMHgzRCwweDI1LAotICAgIDB4OTYs
MHhFRSwweEY0LDB4REQsMHg0OCwweDYwLDB4RTAsMHg2MCwweEY0LDB4REQsMHg1MiwweEM1LDB4
M0YsMHgzNywweDM3LDB4QkYsCi0gICAgMHg5NiwweEVFLDB4MTQsMHhERSwweEFELDB4MjksMHhB
RCwweDNELDB4QjYsMHhGNiwweDU2LDB4RTYsMHg3RiwweEZDLDB4N0IsMHg3RSwKLSAgICAweDM1
LDB4RUUsMHg1NiwweEU2LDB4RkIsMHhGQiwweEZGLDB4RjcsMHgzNSwweEU2LDB4MzEsMHhDRCww
eDYwLDB4RTAsMHg0MCwweDYwLAotICAgIDB4MTAsMHhDNSwweEFGLDB4QkMsMHhGQywweDc0LDB4
REMsMHg3NiwweEQwLDB4QkMsMHg2RCwweEI0LDB4QTIsMHhFQywweDdBLDB4REUsCi0gICAgMHhG
MywweERELDB4Q0YsMHhCQywweDJELDB4MkQsMHgwRCwweDJELDB4NTQsMHhFNiwweEQyLDB4REQs
MHgyRiwweDJGLDB4QjksMHgyQiwKLSAgICAweDU1LDB4RTYsMHhGMywweERELDB4OEEsMHg2OCww
eDZBLDB4RkUsMHg1NSwweEU2LDB4MTQsMHhERSwweEJCLDB4QjUsMHgzNSwweEJELAotICAgIDB4
NzUsMHhFRSwweDU1LDB4RTYsMHgyRCwweDM3LDB4QTksMHhDNSwweEI2LDB4RjYsMHgzNSwweEU2
LDB4OEEsMHgyQSwweEFGLDB4RUQsCi0gICAgMHg5NiwweEVFLDB4MzUsMHhFNiwweEE4LDB4QUUs
MHgyRSwweDI3LDB4RDcsMHhGNiwweDc1LDB4RTYsMHgyRCwweEFGLDB4MkIsMHgyQSwKLSAgICAw
eEQ3LDB4RjYsMHhCNiwweEVFLDB4QUMsMHhBQywweDJGLDB4MEEsMHhENywweEY2LDB4RjYsMHhF
RSwweDJBLDB4MEEsMHgwMCwweEEyLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBRSwweDJB
LDB4QTIsMHhFMCwweEQ2LDB4RjYsMHhCNywweEVFLDB4RTIsMHhBRSwweEFCLDB4MkEsCi0gICAg
MHhENiwweEY2LDB4QjYsMHhFRSwweEEzLDB4QTgsMHhBQSwweDIyLDB4RDYsMHhGNiwweEQ3LDB4
RUUsMHgyQSwweEFBLDB4OEEsMHhBOCwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4MDgsMHgy
NiwweDBGLDB4MDAsMHhGNywweEY2LDB4QjYsMHhFRSwweDZBLDB4RUUsMHhBQSwweEJCLAotICAg
IDB4RDcsMHhGNiwweEY2LDB4RUUsMHhBMCwweDgyLDB4OEEsMHgwQSwweEQ3LDB4RjYsMHhGOCww
eEVFLDB4MDIsMHgwQSwweEEwLDB4ODAsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDdFLDB4
NUIsMHg3QSwweEZFLDB4RDcsMHhGNiwweEQ2LDB4RUUsMHhBQSwweDhBLDB4OEMsMHgyQSwKLSAg
ICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4MjgsMHhBOCwweEFBLDB4RkEsMHhGNywweEY2LDB4QjYs
MHhFRSwweEFBLDB4RUIsMHhGRiwweEU3LAotICAgIDB4RDYsMHhGNiwweEI3LDB4RUUsMHgyMCww
eDAyLDB4QTgsMHhFMiwweEY3LDB4RjYsMHhENywweEY2LDB4RUQsMHhBRCwweEZELDB4N0QsCi0g
ICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDU2LDB4NzcsMHhERCwweDdCLDB4RDcsMHhGNiwweEI2
LDB4RUUsMHhBQSwweEIyLDB4MDIsMHgwMCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4ODMs
MHhBMiwweDhCLDB4MDIsMHhGNywweEY2LDB4RDcsMHhGNiwweERGLDB4RkEsMHgyQSwweDg4LAot
ICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGRSwweDZBLDB4RTIsMHhFRSwweEY3LDB4RjYsMHhE
NywweEY2LDB4NkIsMHhBNiwweEZBLDB4QUYsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEJG
LDB4OEYsMHgyQiwweEI4LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGMCwweEUyLDB4NkEsMHhFQSwK
LSAgICAweEY3LDB4RkUsMHhENywweEY2LDB4RkEsMHg1RiwweDU1LDB4REYsMHhGNywweEZFLDB4
NzYsMHhFRSwweEUyLDB4RTgsMHg2QSwweDZBLAotICAgIDB4NTUsMHhFRSwweDZBLDB4OTMsMHg3
MCwweDc4LDB4NUUsMHg1RSwweEU4LDB4ODIsMHg2NiwweDcyLDB4NTQsMHhGRSwweEVBLDB4Qjgs
Ci0gICAgMHhBNywweDdBLDB4MDUsMHg2MiwweERFLDB4RUEsMHhBQSwweEY4LDB4QTgsMHg4Miww
eDQ1LDB4NkEsMHhGNSwweDJGLDB4MEIsMHgyMiwKLSAgICAweEU5LDB4OEEsMHg0NywweDcyLDB4
QkQsMHhBQSwweDJBLDB4MDIsMHgwOSwweDhCLDB4NjYsMHg3MiwweDVGLDB4RkUsMHgyMCwweDAw
LAotICAgIDB4MEEsMHg4QiwweDY3LDB4NzIsMHhERCwweEJCLDB4QjgsMHhFOCwweEU5LDB4ODIs
MHg0NywweDcyLDB4NUUsMHg3RSwweDI4LDB4OEEsCi0gICAgMHhBOCwweDdBLDB4MDYsMHg2Miww
eDU1LDB4N0EsMHg4OCwweDgwLDB4NDcsMHg2QSwweEE0LDB4NTksMHg1NywweERDLDB4NUMsMHg3
MCwKLSAgICAweDA2LDB4NkEsMHg4NCwweDUxLDB4MzksMHhBQiwweEE5LDB4QTksMHhBOCwweDdB
LDB4RTUsMHg2MSwweDBCLDB4MEIsMHgwMywweEJELAotICAgIDB4QTgsMHg3QSwweEU1LDB4NjEs
MHhBMCwweEU4LDB4RUMsMHg3RSwweDI2LDB4NkEsMHhBNSwweDU5LDB4RjgsMHg5RSwweEJFLDB4
RkUsCi0gICAgMHhFNSwweDYxLDB4QTUsMHg1OSwweDFFLDB4RDksMHhEOCwweEZGLDB4MDYsMHg2
MiwweEE0LDB4NTksMHg4QSwweDBBLDB4RkIsMHhGRCwKLSAgICAweDQ3LDB4NkEsMHhDNSwweDU5
LDB4QTIsMHgwQSwweEZGLDB4N0QsMHgwNiwweDYyLDB4QzUsMHg2MSwweDdBLDB4Q0MsMHhGRSww
eEZFLAotICAgIDB4MjYsMHg2QSwweEM1LDB4NTksMHg1RiwweEZELDB4RkMsMHg1QiwweDA2LDB4
NkEsMHg4NCwweDU5LDB4OUIsMHgyQSwweDAyLDB4MDAsCi0gICAgMHg4NywweDdBLDB4QzQsMHg2
MSwweEQ3LDB4MkYsMHhBQSwweDBBLDB4MDksMHg5MywweDI2LDB4NzIsMHhBRCwweDJCLDB4MkEs
MHhBQSwKLSAgICAweEFELDB4QTMsMHgwQSwweDkzLDB4QjcsMHhCRCwweEFELDB4MEYsMHhFRCww
eEFCLDB4NEIsMHg5QiwweDdELDB4RkYsMHhBQSwweDgwLAotICAgIDB4NkIsMHhBMywweEM4LDB4
OEEsMHg1QywweDVDLDB4NzgsMHhFMCwweDRBLDB4OUIsMHhBOCwweDhBLDB4QjksMHgwOSwweDBG
LDB4QUYsCi0gICAgMHg0QSwweDlCLDB4RTksMHg5MiwweDZCLDB4QzIsMHhBMCwweEZGLDB4OEMs
MHhBMywweDI2LDB4N0EsMHg1RiwweDdBLDB4QUEsMHgwQSwKLSAgICAweENDLDB4QUIsMHgyNiww
eDcyLDB4RDUsMHhGRiwweEVBLDB4ODAsMHhDOCwweDhBLDB4NjYsMHg4MiwweDBCLDB4MEIsMHhG
QSwweEY0LAotICAgIDB4QzksMHg4QSwweDI2LDB4NzIsMHhGOCwweEZFLDB4RkIsMHg1NywweDY3
LDB4N0EsMHhDNCwweDYxLDB4RTgsMHhFOCwweDdFLDB4NzcsCi0gICAgMHgxMSwweENELDB4RTUs
MHg2OSwweEQ1LDB4QjUsMHhCNSwweDI1LDB4RDcsMHhGRSwweDZGLDB4QkMsMHgyRCwweDJCLDB4
MEIsMHgwMiwKLSAgICAweDE4LDB4RkYsMHhENywweEZFLDB4QUQsMHhBQiwweEFBLDB4MkEsMHgx
NywweEZGLDB4RjgsMHhGNiwweEFGLDB4RUEsMHhFMywweEVBLAotICAgIDB4RjgsMHhGRSwweDE3
LDB4RjcsMHhFQSwweEJBLDB4QkEsMHhCQSwweDE3LDB4RkYsMHhGNywweEY2LDB4QkQsMHhFRiww
eEFGLDB4QUIsCi0gICAgMHgxNywweEZGLDB4RjcsMHhGNiwweDhCLDB4QTYsMHhBQSwweDdFLDB4
MTcsMHhGRiwweEY3LDB4RjYsMHhGQSwweEQ2LDB4NzcsMHhENSwKLSAgICAweDE4LDB4RkYsMHhG
NywweEY2LDB4RjcsMHhGNywweEFELDB4QUIsMHgxOCwweEZGLDB4QjYsMHhFRSwweDA4LDB4ODAs
MHhFOCwweDdBLAotICAgIDB4RjcsMHhGNiwweDk2LDB4RUUsMHg4MCwweEU4LDB4RkUsMHhERiww
eEQ3LDB4RjYsMHg5NiwweEVFLDB4QTAsMHhCRSwweDVGLDB4NTcsCi0gICAgMHhCNiwweEVFLDB4
NTUsMHhFRSwweDAwLDB4RTgsMHg3QSwweDVGLDB4OTYsMHhFRSwweEIyLDB4RDUsMHgyMCwweEEy
LDB4RkEsMHg3QSwKLSAgICAweDE4LDB4RkYsMHhGMywweEQ1LDB4QUYsMHgyRCwweDJELDB4Mjks
MHgzOCwweEZGLDB4MTgsMHhGRiwweDJCLDB4OEIsMHgyRiwweEFGLAotICAgIDB4MzgsMHhGRiww
eEY4LDB4RjYsMHg2QSwweEVBLDB4QzAsMHg4MCwweDE4LDB4RkYsMHhCNywweEVFLDB4N0UsMHhE
QSwweEZBLDB4RkMsCi0gICAgMHhGOCwweEZFLDB4RDcsMHhGNiwweDlELDB4QkYsMHhBNSwweEI1
LDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRiwweEJFLDB4QUIsMHhBQiwKLSAgICAweDE4LDB4RkYs
MHhGOCwweEY2LDB4RUEsMHhBRSwweEIyLDB4QUEsMHgxOCwweEZGLDB4RjgsMHhGNiwweEZGLDB4
QUYsMHhGRSwweEYyLAotICAgIDB4RjgsMHhGRSwweDc1LDB4RUUsMHg1OCwweDU4LDB4NjgsMHhF
MCwweDk2LDB4RUUsMHgzNSwweEU2LDB4N0UsMHhGRSwweEJFLDB4RjgsCi0gICAgMHg3NiwweEVF
LDB4NTUsMHhFNiwweDU3LDB4RjcsMHhFQywweEZGLDB4NTUsMHhFRSwweDM1LDB4RTYsMHg1RSww
eEY4LDB4REMsMHhGOCwKLSAgICAweDk2LDB4RUUsMHgzNSwweEU2LDB4MkYsMHgzRiwweEFELDB4
RUYsMHhGNywweEZFLDB4OTYsMHhFRSwweEE5LDB4MkYsMHhBRCwweEFELAotICAgIDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHg5NCwweEJBLDB4QUEsMHg4MiwweEQ3LDB4RkUsMHhGNywweEY2LDB4Nzcs
MHg1RiwweEZELDB4RjcsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEVBLDB4QUEsMHhBQiww
eEFGLDB4MTgsMHhGNywweEQ3LDB4RjYsMHg3RiwweERFLDB4RkUsMHhBMiwKLSAgICAweEY3LDB4
RjYsMHhCNywweEVFLDB4RkEsMHhBQSwweDgwLDB4MDAsMHhENywweEY2LDB4RjcsMHhFRSwweDAw
LDB4MDAsMHg4QSwweEZBLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RUUsMHhCNywweEVGLDB4Rjcs
MHgyOCwweEY3LDB4RjYsMHhENywweEY2LDB4NUYsMHg3QSwweEUyLDB4QjIsCi0gICAgMHgzOCww
eEY3LDB4RDcsMHhGNiwweDU1LDB4N0QsMHhGRiwweEJGLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhG
RCwweEJCLDB4QjIsMHhGMiwKLSAgICAweEQ5LDB4RkUsMHhGNywweEY2LDB4RjUsMHg1NSwweEY1
LDB4RDUsMHhEOCwweEZFLDB4RjgsMHhGNiwweERELDB4NzcsMHg3NSwweDU3LAotICAgIDB4MTcs
MHhGRiwweEY4LDB4RjYsMHg3RCwweEZELDB4RkQsMHg3NywweEY4LDB4RkUsMHhGNywweEY2LDB4
NzcsMHhERCwweEQ3LDB4NUQsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDAwLDB4MjAsMHgw
OCwweDIyLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4OCwweEMyLDB4RTgsMHhFQywKLSAgICAweEY3
LDB4RjYsMHhENywweEY2LDB4REYsMHhGNywweERELDB4RDUsMHhENywweEY2LDB4QjYsMHhFRSww
eEY4LDB4RTgsMHhGOCwweEZGLAotICAgIDB4QjcsMHhFRSwweDc2LDB4RTYsMHhFMCwweEZBLDB4
NzgsMHhFMCwweEQ3LDB4RjYsMHg3NSwweEU2LDB4QkYsMHhBRCwweDNELDB4QTksCi0gICAgMHhG
NywweEY2LDB4QjYsMHhFRSwweEY3LDB4QkYsMHhCQiwweEFBLDB4RjcsMHhGNiwweEI2LDB4RUUs
MHhGQSwweEZBLDB4RkEsMHhFQSwKLSAgICAweEI3LDB4RjYsMHg3NSwweEVFLDB4N0UsMHhGOCww
eEZDLDB4NUYsMHg5NiwweEVFLDB4MzUsMHhFNiwweEU4LDB4QTgsMHg4OCwweDIyLAotICAgIDB4
NzYsMHhFRSwweDU1LDB4RTYsMHgyQiwweDAyLDB4MDAsMHgwMCwweDk2LDB4RUUsMHg3NiwweEVF
LDB4ODUsMHhCNCwweDlGLDB4RjUsCi0gICAgMHg3NiwweEVFLDB4RjMsMHhERCwweDYwLDB4NjAs
MHg0MCwweEUwLDB4RjQsMHhERCwweDUyLDB4Q0QsMHgzNywweDNFLDB4M0YsMHgyRiwKLSAgICAw
eDc2LDB4RUUsMHgxNCwweERFLDB4MkQsMHhBRCwweEFELDB4MkQsMHg5NiwweEVFLDB4MTQsMHhF
NiwweEFBLDB4RUEsMHhFMCwweEZBLAotICAgIDB4NTUsMHhFNiwweEY0LDB4REQsMHhBMiwweEVB
LDB4RkUsMHhGRSwweDE0LDB4RTYsMHg1MiwweENELDB4NjAsMHhDMCwweEUwLDB4QzAsCi0gICAg
MHgxMSwweEM1LDB4NkUsMHhCNCwweEZFLDB4RjgsMHg3OCwweDVDLDB4Q0YsMHhCQywweDRELDB4
QUMsMHhGRSwweEJGLDB4M0YsMHhCNywKLSAgICAweDEzLDB4REUsMHgwRiwweEM1LDB4QUQsMHgy
RCwweDJELDB4MjksMHg1NCwweEU2LDB4MTQsMHhERSwweEI1LDB4QkQsMHhBRiwweEFBLAotICAg
IDB4NTUsMHhFNiwweDE0LDB4RTYsMHhGRiwweERBLDB4N0EsMHhGQSwweDU1LDB4RTYsMHgxNCww
eERFLDB4QjksMHhFRiwweDJCLDB4MEYsCi0gICAgMHg1NSwweEVFLDB4MzUsMHhFNiwweDNBLDB4
RkYsMHhGQSwweDI4LDB4NTUsMHhFNiwweDE0LDB4REUsMHgwOCwweEJGLDB4RkYsMHhBOCwKLSAg
ICAweEI2LDB4RUUsMHgzNSwweEU2LDB4QjUsMHhBNSwweDJGLDB4MkIsMHhENiwweEY2LDB4OTYs
MHhFRSwweEE5LDB4QUIsMHg4QSwweEJFLAotICAgIDB4QjYsMHhGNiwweEY3LDB4RUUsMHhGQSww
eEZFLDB4QUEsMHhBRSwweEQ3LDB4RjYsMHhGNiwweEVFLDB4MjIsMHgwQSwweDAwLDB4MDgsCi0g
ICAgMHhENywweEY2LDB4QjYsMHhFRSwweDI4LDB4QUEsMHg4RSwweEFCLDB4RDYsMHhGNiwweEI2
LDB4RUUsMHhBMiwweDgyLDB4QTIsMHhFQSwKLSAgICAweEQ2LDB4RjYsMHhCNSwweEVFLDB4MDIs
MHhBQSwweEFFLDB4QTUsMHhENiwweEY2LDB4QjYsMHhFRSwweDAwLDB4ODIsMHgyQywweEFBLAot
ICAgIDB4RDcsMHhGNiwweEY3LDB4RUUsMHgyOCwweDIwLDB4MjAsMHgwMCwweEQ2LDB4RjYsMHhC
NywweEVFLDB4ODIsMHgyQSwweEFBLDB4MjAsCi0gICAgMHhGNiwweEY2LDB4RDcsMHhGNiwweDdE
LDB4N0YsMHg1QSwweDVGLDB4RDYsMHhGNiwweEQ3LDB4RUUsMHgyQSwweEFBLDB4QUEsMHhBQSwK
LSAgICAweEQ3LDB4RjYsMHhGNiwweEVFLDB4MjIsMHgwMCwweDAyLDB4MDgsMHhGNywweEY2LDB4
QjYsMHhFRSwweEJFLDB4QkYsMHhBRiwweEFFLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhC
RSwweEFBLDB4RjgsMHhFMiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4OEYsMHhGRiwweEFGLDB4QUYs
Ci0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDg4LDB4MjgsMHg4QiwweDJELDB4RjcsMHhGNiww
eEI2LDB4RUUsMHhBQSwweEJBLDB4RUYsMHhCRiwKLSAgICAweEQ3LDB4RjYsMHhGNywweEVFLDB4
ODgsMHgwOCwweEMwLDB4MDIsMHhGNywweEY2LDB4RDcsMHhGNiwweDhGLDB4QkUsMHhERSwweEE5
LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgwOCwweDJBLDB4MEEsMHgwQSwweDE3LDB4RkYs
MHhENywweEY2LDB4RkUsMHhBQSwweEZBLDB4RkYsCi0gICAgMHhENywweEZFLDB4RjcsMHhGNiww
eERELDB4REQsMHg1NSwweDU3LDB4RjcsMHhGNiwweEQ2LDB4RjYsMHhCNywweDNBLDB4MjEsMHgw
MCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QTgsMHhBOCwweDIyLDB4MjgsMHhGNywweEY2
LDB4RDcsMHhGNiwweEVBLDB4RkUsMHg2MCwweDc4LAotICAgIDB4RjcsMHhGRSwweEQ3LDB4RjYs
MHhGRiwweEJELDB4REYsMHhERiwweEY3LDB4RjYsMHgxMywweEU2LDB4NjAsMHg2OCwweDY4LDB4
NjIsCi0gICAgMHhFRiwweEM0LDB4QTYsMHg3QSwweEY4LDB4NzgsMHg3OCwweDc4LDB4QzcsMHg4
MiwweDQ2LDB4NzIsMHhCOCwweEY4LDB4NTYsMHg1RiwKLSAgICAweDg3LDB4N0EsMHgyNiwweDcy
LDB4MkEsMHhBQiwweEZBLDB4N0QsMHhBOCwweDdBLDB4NDcsMHg3MiwweDAwLDB4QUIsMHg5RCww
eDVELAotICAgIDB4RTksMHg4MiwweDQ2LDB4NzIsMHgwQSwweDJBLDB4QkYsMHhGNSwweDRBLDB4
OEIsMHg2NywweDcyLDB4QTIsMHhBQiwweDdELDB4NTUsCi0gICAgMHhFOSwweDhBLDB4MDYsMHg2
QSwweEE4LDB4RTgsMHhGQiwweDVGLDB4QTgsMHg3QSwweDA1LDB4NjIsMHg4OCwweEFBLDB4QkEs
MHg3RiwKLSAgICAweEE4LDB4N0EsMHgwNiwweDYyLDB4QTgsMHhGRSwweDVFLDB4NUYsMHgyNyww
eDZBLDB4ODQsMHg1MSwweEUwLDB4QkEsMHhCRiwweERFLAotICAgIDB4RTUsMHg2MSwweDY0LDB4
NTEsMHgwQSwweEFBLDB4QUMsMHhBNSwweDA1LDB4NjIsMHg4NCwweDU5LDB4MDIsMHg3QiwweEZG
LDB4RDcsCi0gICAgMHhFNSwweDYxLDB4QTQsMHg1OSwweDhBLDB4REYsMHhCOSwweEY1LDB4RTUs
MHg2MSwweDg0LDB4NTksMHhBMiwweEFBLDB4QjgsMHhCQiwKLSAgICAweEU1LDB4NjEsMHhBNCww
eDU5LDB4RTUsMHhBQSwweDgyLDB4QUEsMHgwNiwweDYyLDB4QTUsMHg1OSwweDVGLDB4RDUsMHhC
RSwweDhFLAotICAgIDB4RTUsMHg2MSwweEE1LDB4NTksMHg1MywweDJCLDB4MDksMHgwMiwweDI2
LDB4NkEsMHhDNSwweDU5LDB4RUYsMHhCOSwweENCLDB4MEEsCi0gICAgMHg2NywweDcyLDB4QzUs
MHg1OSwweDVGLDB4RUQsMHhBQSwweEEyLDB4QTgsMHg4MiwweEU1LDB4NjEsMHhERCwweEY3LDB4
QkIsMHgwMiwKLSAgICAweDA5LDB4OTMsMHg2NiwweDcyLDB4RDUsMHhCRCwweDJBLDB4MEUsMHgy
QSwweDkzLDB4QzgsMHg4QSwweDlGLDB4ODMsMHgwOCwweDI4LAotICAgIDB4QUMsMHhBMywweDBB
LDB4OTMsMHgwRCwweDJCLDB4MEQsMHgyQiwweDRFLDB4QkMsMHhDQywweEFCLDB4N0QsMHgwRiww
eEFGLDB4MjksCi0gICAgMHg2RSwweEJDLDB4NkIsMHhBMywweDVGLDB4RkUsMHhBOCwweDAwLDB4
MkQsMHhCNCwweDBBLDB4OTMsMHg1NSwweDVGLDB4N0EsMHhCMCwKLSAgICAweDJBLDB4OUIsMHhD
OCwweDhBLDB4QkYsMHhGRSwweDU3LDB4RjgsMHg2QiwweEEzLDB4QzksMHg4QSwweDBCLDB4MkQs
MHgzRiwweEE1LAotICAgIDB4RUQsMHhCMywweDRBLDB4OUIsMHg4MywweEFBLDB4RkYsMHhENSww
eDJBLDB4OUIsMHg2NywweDgyLDB4RDQsMHg1OCwweDc4LDB4RjAsCi0gICAgMHg4NywweDgyLDB4
MjYsMHg3MiwweDdBLDB4RUEsMHg3RSwweDJBLDB4NEEsMHg5MywweEM1LDB4NjksMHg1NywweERG
LDB4QjUsMHgyRiwKLSAgICAweDU2LDB4RUUsMHhDOSwweDgyLDB4MzUsMHgyRCwweDBCLDB4MEIs
MHhENywweEZFLDB4MzUsMHhFRSwweDA5LDB4MDMsMHgwMiwweDAwLAotICAgIDB4MTgsMHhGRiww
eEY3LDB4RkUsMHhGRCwweEJELDB4QkQsMHhBNSwweDE4LDB4RkYsMHhGOCwweEY2LDB4RUUsMHg3
RSwweEQ4LDB4QkEsCi0gICAgMHgxNywweEZGLDB4RjcsMHhGNiwweEVGLDB4RUIsMHhGNywweEZB
LDB4MTgsMHhGRiwweEY3LDB4RjYsMHhCQSwweDhFLDB4RUIsMHg4RSwKLSAgICAweDE3LDB4RkYs
MHhENywweEY2LDB4QUEsMHhCQSwweEZBLDB4RkUsMHgxNywweEZGLDB4RDcsMHhGNiwweEJGLDB4
QjYsMHgzQSwweEFCLAotICAgIDB4MTgsMHhGRiwweEI2LDB4RUUsMHg4MiwweEEwLDB4QTgsMHg3
MiwweEY3LDB4RjYsMHg5NiwweEVFLDB4RjgsMHhGQSwweDVFLDB4NTcsCi0gICAgMHg3NSwweEVF
LDB4QjYsMHhFNiwweEFELDB4QUEsMHhBRSwweEVCLDB4QjYsMHhFRSwweDc1LDB4RUUsMHhGRiww
eDdGLDB4N0YsMHgwMCwKLSAgICAweEI2LDB4RjYsMHg1NCwweEU2LDB4N0YsMHhGRiwweEVCLDB4
ODAsMHg3NSwweEVFLDB4RDMsMHhENSwweDVBLDB4NUUsMHg5RSwweDI4LAotICAgIDB4MTgsMHhG
RiwweDM0LDB4REUsMHgwRCwweDBGLDB4MDMsMHgwMiwweDM5LDB4RkYsMHgxOCwweEZGLDB4QkYs
MHhCRiwweEJCLDB4QUYsCi0gICAgMHgzOSwweEZGLDB4MTgsMHhGRiwweEMyLDB4MDAsMHgwMiww
eEMyLDB4MTgsMHhGNywweEQ3LDB4RjYsMHg1NiwweDVFLDB4NzgsMHhGOCwKLSAgICAweEY4LDB4
RjYsMHhENywweEY2LDB4QTUsMHgyOSwweEEzLDB4MEEsMHgxOCwweEZGLDB4RjgsMHhGNiwweEFG
LDB4RUQsMHhBRiwweEE5LAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhCQSwweDdGLDB4REQs
MHhFRiwweDE4LDB4RkYsMHhGOCwweEY2LDB4NkEsMHhGRiwweDdELDB4N0QsCi0gICAgMHhGOCww
eEY2LDB4QjcsMHhGNiwweDYwLDB4ODAsMHgyMCwweDAwLDB4RDcsMHhGNiwweDU1LDB4RTYsMHg1
NywweDVFLDB4N0MsMHg3OCwKLSAgICAweDc2LDB4RUUsMHg1NSwweEU2LDB4RUIsMHg4RiwweDFG
LDB4RUIsMHg1NSwweEVFLDB4MzUsMHhFNiwweDc4LDB4NzAsMHhGMCwweEU4LAotICAgIDB4NzYs
MHhFRSwweDE0LDB4REUsMHgyQSwweDJBLDB4QUYsMHhBOSwweEQ3LDB4RjYsMHg1NSwweEVFLDB4
MEIsMHgwQiwweDJELDB4QUYsCi0gICAgMHgxOCwweEY3LDB4QjYsMHhFRSwweENBLDB4QTIsMHhG
QiwweEFELDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgyQiwweDhELDB4QTUsMHhCRSwKLSAgICAweEQ3
LDB4RkUsMHhGOCwweEY2LDB4NTcsMHg1RCwweDk3LDB4NTUsMHgxOCwweEZGLDB4RjgsMHhGNiww
eEVELDB4QUQsMHhGRCwweEVELAotICAgIDB4RjcsMHhGNiwweEQ4LDB4RjYsMHgyQSwweEI4LDB4
NzAsMHhCMCwweDE4LDB4RkYsMHhENywweEY2LDB4M0QsMHhBNywweEI3LDB4NTcsCi0gICAgMHgx
OCwweEZGLDB4RjgsMHhGNiwweDVGLDB4N0YsMHhGRiwweEJELDB4MTgsMHhGRiwweEQ3LDB4RjYs
MHhGRSwweEZGLDB4RUEsMHhBOCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4MDgsMHgyRSww
eEFBLDB4MjIsMHgxOCwweEZGLDB4RjcsMHhGNiwweDc1LDB4NTUsMHg3NSwweEQ3LAotICAgIDB4
RjcsMHhGRSwweEY4LDB4RjYsMHg3NSwweERELDB4N0YsMHhGNywweDE4LDB4RkYsMHhGOCwweEY2
LDB4NzUsMHg1NSwweDdGLDB4N0YsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEFCLDB4RUEs
MHhGQiwweERGLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgwMCwweDAwLDB4MDAsMHhBQywKLSAgICAw
eEY3LDB4RjYsMHhENywweEY2LDB4MjgsMHgyMiwweEFDLDB4RUUsMHhGNywweEY2LDB4RDcsMHhG
NiwweDZDLDB4N0UsMHhENywweDU5LAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHgwMCwweEM4
LDB4RTAsMHhDMCwweEQ3LDB4RjYsMHg5NiwweEVFLDB4QUIsMHg4QiwweEVFLDB4N0YsCi0gICAg
MHhCNiwweEVFLDB4NzUsMHhFNiwweEU4LDB4QUUsMHhFQywweERGLDB4RDcsMHhGNiwweDk2LDB4
RUUsMHgwRCwweDJELDB4MjUsMHhBRCwKLSAgICAweEY3LDB4RjYsMHhCNywweEVFLDB4QUEsMHhF
OCwweEZBLDB4RUYsMHhGNywweEY2LDB4QjYsMHhFRSwweEFBLDB4RUIsMHhGQSwweEZCLAotICAg
IDB4QjcsMHhGNiwweDU1LDB4RTYsMHg3RSwweEQ2LDB4NzYsMHg1QywweDk2LDB4RUUsMHg3Niww
eEVFLDB4ODksMHhGRiwweDdELDB4RDUsCi0gICAgMHg3NiwweEVFLDB4NTUsMHhFNiwweDg4LDB4
RTAsMHhGMCwweEZFLDB4OTYsMHhFRSwweDU1LDB4RTYsMHhBQiwweEJCLDB4RUYsMHhGRiwKLSAg
ICAweDc2LDB4RUUsMHhEMywweERELDB4RTAsMHhFMCwweEUwLDB4NjAsMHhGMywweERELDB4NzIs
MHhDRCwweEJGLDB4QUYsMHgyRiwweDNGLAotICAgIDB4NzYsMHhFRSwweEY0LDB4REQsMHgyRCww
eDJELDB4MEIsMHgyRCwweDc2LDB4RUUsMHgxNCwweEU2LDB4RjgsMHhCOCwweDY4LDB4NzAsCi0g
ICAgMHgzNCwweEU2LDB4RjQsMHhERCwweEVDLDB4NjgsMHhGQSwweEI3LDB4MTUsMHhFNiwweDky
LDB4RDUsMHg2MCwweDQ4LDB4NkEsMHg2MiwKLSAgICAweDEwLDB4QzUsMHhFQywweEEzLDB4RTgs
MHhGOCwweEZDLDB4N0MsMHhGMCwweEM0LDB4RUMsMHg5QiwweEFGLDB4MkYsMHgzRCwweDI1LAot
ICAgIDB4MzQsMHhFNiwweDUxLDB4Q0QsMHhBRCwweDJELDB4M0QsMHgyRiwweDU1LDB4RTYsMHgx
NCwweEU2LDB4QUYsMHg4OSwweDIzLDB4MjMsCi0gICAgMHg1NCwweEU2LDB4MTQsMHhERSwweEZB
LDB4NUUsMHhEQSwweEZDLDB4QjcsMHhGNiwweDM0LDB4RTYsMHhGNSwweEFELDB4QTksMHgwOSwK
LSAgICAweEI2LDB4RjYsMHg1NSwweEU2LDB4RDUsMHhGRiwweEVBLDB4NzAsMHg3NiwweEVFLDB4
NTUsMHhFNiwweEQ3LDB4MUYsMHgyRiwweDJCLAotICAgIDB4QjYsMHhFRSwweDc2LDB4RUUsMHhB
RCwweDJGLDB4QUEsMHhBQSwweEI2LDB4RjYsMHg5NiwweEVFLDB4Q0EsMHhDQiwweDdFLDB4REUs
Ci0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweDBBLDB4MzEsMHgyMiwweEJBLDB4RDYsMHhGNiww
eEI2LDB4RUUsMHhCOCwweEZFLDB4QTIsMHg4MCwKLSAgICAweEQ2LDB4RjYsMHhENywweEVFLDB4
QUEsMHhBMiwweEFBLDB4QUEsMHhENiwweEY2LDB4QjcsMHhFRSwweEVBLDB4QTgsMHgyQywweDI4
LAotICAgIDB4RjYsMHhGNiwweEI3LDB4RUUsMHhCRCwweEZFLDB4RkEsMHhFQSwweEQ3LDB4RjYs
MHhCNiwweEVFLDB4QTIsMHhFMiwweDgyLDB4QTgsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSww
eDIyLDB4MEEsMHg4QiwweEE4LDB4RjcsMHhGNiwweEI2LDB4RUUsMHhCQSwweEZFLDB4QUIsMHhB
RiwKLSAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4QkEsMHhFRiwweEFBLDB4QUEsMHhENiwweEY2
LDB4RjgsMHhFRSwweDg4LDB4MjgsMHgwMCwweDIyLAotICAgIDB4RjUsMHhGNiwweEQ3LDB4RjYs
MHg1NywweERGLDB4RjUsMHhGRCwweEQ2LDB4RjYsMHhENywweEVFLDB4QUEsMHhBMiwweEFBLDB4
MjgsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEZFLDB4NkUsMHg2MCwweEYwLDB4RDYsMHhG
NiwweEI2LDB4RUUsMHg2RiwweDdGLDB4RjksMHg5QiwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVF
LDB4OEYsMHhFRiwweEJFLDB4QUUsMHhENywweEY2LDB4QjYsMHhFRSwweEFBLDB4QTgsMHhCQSww
eEZGLAotICAgIDB4RjYsMHhGNiwweEI2LDB4RUUsMHhFQiwweEVCLDB4QUYsMHhBRiwweEY3LDB4
RjYsMHhCNiwweEVFLDB4QUEsMHhCQSwweEFELDB4QkIsCi0gICAgMHhGNiwweEY2LDB4RDYsMHhG
NiwweEY2LDB4RkYsMHhERCwweEY1LDB4RjYsMHhGNiwweEQ2LDB4RjYsMHhBQSwweEEyLDB4QkIs
MHg3OSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4MjAsMHhBQSwweEFFLDB4RjUsMHhGNyww
eEY2LDB4RDcsMHhGNiwweDgwLDB4MjgsMHhBMCwweEFBLAotICAgIDB4RjcsMHhGRSwweEY3LDB4
RjYsMHhGRCwweERGLDB4N0YsMHg3RCwweEQ3LDB4RkUsMHhGNywweEY2LDB4RjUsMHhGRCwweEZE
LDB4QkQsCi0gICAgMHhGNywweEZFLDB4RDYsMHhGNiwweEQ4LDB4RUEsMHhGRiwweDVFLDB4QjYs
MHhGNiwweDUxLDB4Q0QsMHhDMCwweDYwLDB4NDAsMHg2MCwKLSAgICAweDRELDB4QUMsMHhBNiww
eDdBLDB4NTgsMHg1QywweDVDLDB4NUMsMHhFNywweDgyLDB4NDUsMHg2QSwweDU1LDB4NTcsMHhG
RCwweDhBLAotICAgIDB4QTcsMHg3QSwweDI2LDB4NkEsMHg3RCwweDc3LDB4N0EsMHg3OCwweDY3
LDB4NzIsMHhDNSwweDYxLDB4MEEsMHhCQSwweDZFLDB4RUYsCi0gICAgMHg0NywweDcyLDB4RTYs
MHg2MSwweDAyLDB4RUEsMHhGNSwweDg1LDB4NDYsMHg2QSwweEU1LDB4NjEsMHhCQywweERGLDB4
N0IsMHhENywKLSAgICAweDQ2LDB4NkEsMHhFNSwweDYxLDB4OUYsMHgzRiwweEFGLDB4QUEsMHg0
NiwweDZBLDB4MjYsMHg2QSwweDA2LDB4NjgsMHg5RSwweDc2LAotICAgIDB4NDYsMHg2QSwweEM0
LDB4NTksMHhFOCwweEY4LDB4RkEsMHg1RSwweEU1LDB4NTksMHg0MywweDUxLDB4NkUsMHhFMCww
eEU4LDB4RUEsCi0gICAgMHg4NCwweDU5LDB4MDMsMHg0OSwweDgyLDB4NkEsMHhBQSwweEEwLDB4
ODQsMHg1OSwweDIzLDB4NDksMHgyRSwweDNELDB4MjUsMHg4QSwKLSAgICAweEM2LDB4NjEsMHg2
NCwweDUxLDB4RDUsMHhCRCwweDhCLDB4MEIsMHgwNiwweDYyLDB4ODUsMHg1OSwweEZGLDB4RkYs
MHhCQSwweDJFLAotICAgIDB4MDYsMHg2MiwweEE1LDB4NTksMHhGQiwweEI1LDB4RkUsMHhFOCww
eDI2LDB4NkEsMHhDNSwweDYxLDB4RUIsMHhGRiwweDBGLDB4MjksCi0gICAgMHg0NywweDcyLDB4
QzUsMHg1OSwweDdELDB4RDcsMHhBQiwweDJBLDB4QzgsMHg3QSwweDA2LDB4NjIsMHhGNSwweEZG
LDB4RkQsMHg4RiwKLSAgICAweEU5LDB4OEEsMHg0NiwweDcyLDB4RjUsMHhCRCwweDJELDB4MkEs
MHgyQSwweDkzLDB4QzgsMHg4MiwweEY1LDB4RkYsMHgyRSwweDBCLAotICAgIDB4MkEsMHg5Myww
eEU4LDB4OEEsMHgzNiwweDJCLDB4QUMsMHhBQSwweDZCLDB4OUIsMHgwOSwweDkzLDB4RkYsMHhG
RiwweEVCLDB4MkIsCi0gICAgMHg4QiwweEEzLDB4MkEsMHg5QiwweDI5LDB4MkIsMHgwQiwweDAy
LDB4NkUsMHhCQywweEFDLDB4QUIsMHgyRCwweEE1LDB4QUQsMHhBRCwKLSAgICAweENGLDB4Q0Ms
MHg0RSwweEJDLDB4RjcsMHhBRCwweEFGLDB4MEYsMHhDRiwweENDLDB4Q0MsMHhBQiwweDdFLDB4
RUEsMHhBOCwweEEwLAotICAgIDB4MEQsMHhCNCwweDJBLDB4OTMsMHg1RiwweDdBLDB4RjgsMHhF
OCwweDRBLDB4OTMsMHhFOSwweDhBLDB4QUYsMHhFRiwweEZBLDB4RjgsCi0gICAgMHgyQSwweDkz
LDB4ODcsMHg4MiwweDAwLDB4RUEsMHg2RSwweDdFLDB4RTksMHg4QSwweEM1LDB4NjksMHhBMCww
eEVBLDB4N0UsMHg1NywKLSAgICAweDA5LDB4OEIsMHhFNSwweDY5LDB4RkYsMHhERCwweEI1LDB4
M0QsMHgxMiwweEU2LDB4RTgsMHg4MiwweEY1LDB4QjUsMHgyRCwweDBCLAotICAgIDB4RDcsMHhG
RSwweDcyLDB4RDUsMHgyRCwweDBCLDB4MDIsMHgwMCwweDE4LDB4RkYsMHhENywweEZFLDB4QkYs
MHhFQiwweEFBLDB4QUEsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGRSwweDhELDB4QUIsMHhBNSww
eDJELDB4MTgsMHhGRiwweEY3LDB4RjYsMHhBMiwweDgwLDB4QTgsMHhGQSwKLSAgICAweDE3LDB4
RkYsMHhGOCwweEY2LDB4QUEsMHg3QSwweEFFLDB4QUEsMHhGNywweEZFLDB4MTgsMHhGNywweEVG
LDB4RkUsMHhGRiwweEFGLAotICAgIDB4MTcsMHhGRiwweEQ3LDB4RjYsMHg3QSwweEZBLDB4RUEs
MHhFQSwweDE3LDB4RkYsMHhCNiwweEVFLDB4MjIsMHgwQSwweEUyLDB4NkEsCi0gICAgMHhGNyww
eEY2LDB4OTYsMHhFRSwweDYwLDB4NUMsMHhERiwweEY3LDB4RjcsMHhGNiwweDk2LDB4RUUsMHg1
NSwweEY1LDB4RkQsMHgwQiwKLSAgICAweDE3LDB4RkYsMHg5NiwweEVFLDB4RkQsMHhBRiwweDhB
LDB4MDAsMHgzOCwweEZGLDB4RDcsMHhGNiwweEQ1LDB4RkIsMHhBQSwweDhBLAotICAgIDB4MTgs
MHhGRiwweEI2LDB4RjYsMHg3RSwweEZFLDB4RTIsMHhGMCwweEY3LDB4RjYsMHg3NSwweEVFLDB4
OUQsMHhCNywweDM3LDB4MzcsCi0gICAgMHgzOCwweEZGLDB4RjgsMHhGRSwweEFGLDB4QUIsMHhB
QSwweDhBLDB4MzksMHhGRiwweDE4LDB4RkYsMHhCRiwweEY1LDB4MkQsMHgyOSwKLSAgICAweDM5
LDB4RkYsMHgxOCwweEZGLDB4QzIsMHhFOCwweEUwLDB4QjAsMHgxOCwweEZGLDB4RjgsMHhGNiww
eDU2LDB4NzgsMHg1MCwweEQwLAotICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHg4OCwweEFBLDB4
QjgsMHhBMiwweDE4LDB4RkYsMHhGOCwweEY2LDB4RkQsMHhGNSwweEQ1LDB4REQsCi0gICAgMHgx
OCwweEZGLDB4RjgsMHhGNiwweEVELDB4QTUsMHhBQiwweEFGLDB4MTgsMHhGRiwweEY4LDB4RjYs
MHhFQiwweEFFLDB4MkEsMHhCQSwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RkEsMHhEQSww
eEIyLDB4QUEsMHgxOCwweEZGLDB4NTUsMHhFNiwweDdBLDB4RkEsMHhFMCwweEE4LAotICAgIDB4
NzUsMHhFRSwweDU1LDB4RTYsMHhCRiwweEZELDB4REYsMHg3MCwweDc1LDB4RUUsMHgzNSwweEU2
LDB4RUEsMHhGRiwweEFGLDB4OUEsCi0gICAgMHg3NiwweEVFLDB4MzUsMHhFNiwweEFELDB4RUYs
MHgyRiwweEFCLDB4QjYsMHhGNiwweDU1LDB4RTYsMHhBRCwweEFELDB4QkYsMHgwRiwKLSAgICAw
eEY3LDB4RjYsMHhCNiwweEY2LDB4OEYsMHhBOSwweEVELDB4QUQsMHhGNywweEY2LDB4RDcsMHhG
NiwweEZBLDB4N0IsMHhGRiwweEJGLAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBQSwweEFC
LDB4RUIsMHhBRiwweDE4LDB4RkYsMHhGOCwweEY2LDB4RUIsMHhFRCwweEY1LDB4NTUsCi0gICAg
MHgxOCwweEZGLDB4RjgsMHhGNiwweDU3LDB4NTYsMHg1RiwweDVGLDB4RjgsMHhGNiwweEQ3LDB4
RjYsMHhERSwweEZBLDB4QTIsMHgyMCwKLSAgICAweEY4LDB4RjYsMHhENywweEY2LDB4MDAsMHhB
MiwweEFBLDB4MkIsMHgxOCwweEZGLDB4RDcsMHhGNiwweEFBLDB4QkYsMHhCRiwweEJGLAotICAg
IDB4MTgsMHhGRiwweEY3LDB4RjYsMHg1RCwweDc3LDB4N0UsMHhGRCwweEY3LDB4RjYsMHhENyww
eEY2LDB4MDAsMHhBMCwweEYyLDB4QTAsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEFFLDB4
QkUsMHhFQiwweDdGLDB4MTgsMHhGRiwweEY3LDB4RjYsMHhGRiwweEVELDB4NzcsMHhENSwKLSAg
ICAweDE4LDB4RjcsMHhENywweEY2LDB4REUsMHhGQSwweDdFLDB4RkYsMHhGNywweEY2LDB4RDcs
MHhGNiwweEJDLDB4RUUsMHgyRSwweDlFLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBOCww
eEFBLDB4QUUsMHg4QSwweEQ3LDB4RjYsMHhGNywweEVFLDB4MkEsMHhBMiwweDAyLDB4MDAsCi0g
ICAgMHhENywweEY2LDB4QjYsMHhFRSwweENBLDB4RUIsMHhFMywweEVCLDB4QjYsMHhFRSwweDk2
LDB4RUUsMHhFMCwweEMwLDB4NzgsMHg1NiwKLSAgICAweDk2LDB4RUUsMHg3NSwweEVFLDB4OUUs
MHhCOCwweEMyLDB4NkEsMHhENywweEY2LDB4NzYsMHhFRSwweEFCLDB4MEIsMHhFRiwweEFELAot
ICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhFQSwweEVCLDB4QUIsMHgzQSwweEQ3LDB4RjYsMHhC
NiwweEVFLDB4OEIsMHhGQiwweDYzLDB4NzQsCi0gICAgMHg5NiwweEVFLDB4MTQsMHhERSwweEY4
LDB4RkMsMHhGQywweDU4LDB4OTYsMHhFRSwweDM1LDB4RTYsMHgyQiwweEFCLDB4OEYsMHhBRCwK
LSAgICAweDc1LDB4RUUsMHg1NiwweEU2LDB4RTgsMHhBMiwweDJCLDB4MkEsMHg5NiwweEVFLDB4
NTUsMHhFRSwweEI3LDB4OUQsMHgyRiwweDhCLAotICAgIDB4OTYsMHhFRSwweEY0LDB4REQsMHg2
MCwweDcyLDB4NjgsMHhFMCwweDE0LDB4REUsMHg3MiwweENELDB4QjcsMHgyRiwweDM1LDB4Qjcs
Ci0gICAgMHg3NiwweEVFLDB4RjMsMHhERCwweDJELDB4QUYsMHgyQiwweDJCLDB4NzUsMHhFRSww
eDM1LDB4RTYsMHg3MiwweDdBLDB4NUEsMHg3QSwKLSAgICAweDE0LDB4RTYsMHhEMywweERELDB4
RTgsMHhGQSwweDdFLDB4NTYsMHgxNCwweEU2LDB4OTMsMHhENSwweDYyLDB4NkEsMHhFRiwweDdC
LAotICAgIDB4RjAsMHhDNCwweDhCLDB4OTMsMHhGQywweEZDLDB4N0MsMHhGOCwweDcyLDB4RDUs
MHhFQywweDlCLDB4MzUsMHgyNSwweDJELDB4MkIsCi0gICAgMHg1NSwweEVFLDB4OTIsMHhENSww
eEJELDB4QUQsMHgyRCwweEFELDB4OTYsMHhFRSwweDM0LDB4RTYsMHhGRCwweDJBLDB4MEEsMHgw
MiwKLSAgICAweDk2LDB4RUUsMHgzNCwweEU2LDB4NTcsMHhGNCwweDgwLDB4MDAsMHhCNywweEY2
LDB4NTUsMHhFNiwweDA5LDB4MjksMHhFQSwweEZGLAotICAgIDB4QjYsMHhFRSwweDE0LDB4RTYs
MHhCMCwweEZBLDB4RkUsMHhENiwweDk2LDB4RUUsMHhGNCwweERELDB4MkEsMHgwQSwweEFBLDB4
NzUsCi0gICAgMHg5NiwweEVFLDB4MzUsMHhFNiwweDIwLDB4MDAsMHg4MiwweDA5LDB4QjYsMHhG
NiwweDU1LDB4RTYsMHhBQSwweEVBLDB4N0UsMHg3RiwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVF
LDB4QkUsMHgyQiwweDJBLDB4QUEsMHhGNywweEY2LDB4RDcsMHhGNiwweDdDLDB4OUYsMHg1NSww
eDU1LAotICAgIDB4RDcsMHhGNiwweEQ2LDB4RUUsMHhBQiwweEFBLDB4ODgsMHhBQSwweEQ2LDB4
RjYsMHhENywweEVFLDB4QUEsMHhBQSwweDhBLDB4OEEsCi0gICAgMHhENiwweEY2LDB4QjYsMHhF
RSwweDgwLDB4QTIsMHhBQiwweDBCLDB4RjYsMHhGNiwweEI3LDB4RUUsMHhGQSwweEZFLDB4QkEs
MHhBQiwKLSAgICAweEQ2LDB4RjYsMHhGOCwweEVFLDB4MDAsMHhBMiwweDAyLDB4MDIsMHhENiww
eEY2LDB4QjYsMHhFNiwweDg4LDB4MzIsMHgwMiwweDAwLAotICAgIDB4RDYsMHhGNiwweEY4LDB4
RUUsMHgwOCwweDgyLDB4MjAsMHgyMiwweEQ3LDB4RjYsMHhENiwweEVFLDB4QUEsMHhBMiwweEE4
LDB4QTMsCi0gICAgMHhCNSwweEY2LDB4RjYsMHhFRSwweEZBLDB4RUEsMHhCRiwweEFBLDB4RDYs
MHhGNiwweEQ2LDB4RUUsMHgzOCwweEE4LDB4QUEsMHhBOCwKLSAgICAweEQ2LDB4RjYsMHhCNiww
eEVFLDB4RjIsMHhFMiwweDcwLDB4NzgsMHhENiwweEY2LDB4QjYsMHhFRSwweEFBLDB4QUYsMHg5
RCwweDU3LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhFRiwweDk2LDB4RkUsMHhBQSwweEQ2
LDB4RjYsMHhCNiwweEVFLDB4RkUsMHhFRSwweEVCLDB4RkUsCi0gICAgMHhENiwweEY2LDB4QjYs
MHhGNiwweEE4LDB4MEIsMHg4RCwweEFGLDB4RDYsMHhGNiwweEI2LDB4RUUsMHg4MCwweDAwLDB4
ODAsMHhBMywKLSAgICAweEY2LDB4RjYsMHhCNiwweEVFLDB4QUEsMHg5RSwweEJGLDB4RUYsMHhG
NiwweEY2LDB4QjYsMHhFRSwweEFBLDB4REEsMHhCRiwweEVGLAotICAgIDB4RDYsMHhGNiwweEY3
LDB4RUUsMHg4OCwweDgwLDB4MjAsMHhBOCwweEY3LDB4RjYsMHhENiwweEY2LDB4RkEsMHhGQSww
eEVELDB4RjcsCi0gICAgMHhGNywweEY2LDB4RDYsMHhGNiwweDM4LDB4OTYsMHhFQiwweEZBLDB4
RjcsMHhGRSwweEQ3LDB4RjYsMHhBQSwweEFGLDB4RkYsMHg3NCwKLSAgICAweEY3LDB4RkUsMHg3
NSwweEVFLDB4QTIsMHhBQSwweEVBLDB4N0UsMHg1NCwweEVFLDB4MjksMHg4MywweDgwLDB4RTAs
MHhFMCwweDc4LAotICAgIDB4RUMsMHhBMywweEU1LDB4NjEsMHhGOCwweEZBLDB4RkUsMHg1Nyww
eEM4LDB4N0EsMHg2NCwweDUxLDB4MDAsMHhBMCwweEZCLDB4NTcsCi0gICAgMHhBOCwweDdBLDB4
NjMsMHg1MSwweEEwLDB4RTgsMHhGRiwweEQ1LDB4MjYsMHg2QSwweDg0LDB4NTEsMHhBMCwweEE4
LDB4QkIsMHhENSwKLSAgICAweDA2LDB4NjIsMHhBNSwweDU5LDB4MDIsMHgyMiwweEJCLDB4REQs
MHgyNiwweDZBLDB4ODQsMHg1MSwweEFBLDB4ODIsMHg4RSwweDZGLAotICAgIDB4MjYsMHg2QSww
eDIzLDB4NDEsMHhBMCwweDhBLDB4RkEsMHg1RiwweEU1LDB4NTksMHg0MywweDQ5LDB4MDAsMHhG
QSwweDdFLDB4NTUsCi0gICAgMHhDNSwweDU5LDB4NDMsMHg0OSwweDJBLDB4QUEsMHhGRSwweEZE
LDB4QTQsMHg1MSwweDY0LDB4NTEsMHhCMCwweEU4LDB4QUYsMHg3RCwKLSAgICAweEM1LDB4NjEs
MHg0MywweDQ5LDB4REYsMHhGRiwweDJGLDB4MEYsMHhBOCwweDdBLDB4ODQsMHg1OSwweDU1LDB4
RkYsMHhBQiwweDJFLAotICAgIDB4NDcsMHg3MiwweEE1LDB4NTksMHg1NSwweEZFLDB4QTgsMHgw
MCwweDI3LDB4NkEsMHhDNSwweDU5LDB4QjcsMHhBRiwweDk4LDB4OTAsCi0gICAgMHg0NywweDZB
LDB4RTUsMHg2MSwweDc5LDB4RjIsMHgyMCwweEFBLDB4MDYsMHg2QSwweEM1LDB4NjEsMHhBNyww
eDNBLDB4OUEsMHhBQywKLSAgICAweEE4LDB4N0EsMHgwNiwweDZBLDB4RjcsMHhCNSwweDhELDB4
MkYsMHg4QiwweEEzLDB4NjcsMHg3MiwweEZELDB4QUYsMHhBQiwweDBCLAotICAgIDB4Q0MsMHhB
MywweEU5LDB4OEEsMHg1NSwweEZGLDB4QUEsMHgyMCwweEFCLDB4QTMsMHhDOSwweDhBLDB4RkQs
MHhBRSwweENBLDB4MDAsCi0gICAgMHg4QiwweEEzLDB4MDksMHg5MywweDU1LDB4RUYsMHhGQiww
eDc4LDB4OEIsMHhBMywweDJBLDB4OUIsMHgzOSwweDNGLDB4MkQsMHhBOSwKLSAgICAweEFCLDB4
QTMsMHg2QSwweEEzLDB4QUUsMHg5QSwweERDLDB4NTUsMHgyRCwweEJDLDB4OEIsMHhBMywweDJC
LDB4MjUsMHhBRCwweEY1LAotICAgIDB4Q0YsMHhDQywweENDLDB4QUIsMHgyQSwweEFGLDB4Mzcs
MHhGRCwweENGLDB4Q0MsMHgyRCwweEJDLDB4NzgsMHhFOCwweDdBLDB4NzcsCi0gICAgMHgyRSww
eEJDLDB4NEEsMHg5QiwweEY4LDB4RjgsMHg3OCwweDVFLDB4MjksMHg5MywweDQ2LDB4N0EsMHg4
MCwweEZDLDB4RkEsMHg1RSwKLSAgICAweEM4LDB4OEEsMHhFNSwweDY5LDB4RTAsMHhGQSwweDU2
LDB4NUYsMHg0NiwweDcyLDB4QTQsMHg2MSwweERFLDB4NUYsMHhBQSwweDBBLAotICAgIDB4RjMs
MHhFNSwweEE3LDB4N0EsMHhENSwweEI1LDB4MjUsMHgyRCwweEQ2LDB4RjYsMHgxMCwweENELDB4
MkQsMHgyQiwweDAyLDB4MDIsCi0gICAgMHgxOCwweEZGLDB4QjYsMHhGRSwweEFCLDB4OEEsMHgy
QSwweDIyLDB4MTcsMHhGRiwweEY4LDB4RkUsMHhBRiwweEI5LDB4QUIsMHgyMiwKLSAgICAweDE3
LDB4RkYsMHhGOCwweEY2LDB4QUEsMHhBMiwweEE4LDB4MDgsMHgxNywweEZGLDB4RjgsMHhGNiww
eEVBLDB4QTAsMHg4MiwweDgyLAotICAgIDB4RjcsMHhGRSwweDE4LDB4RjcsMHhGRiwweEVGLDB4
QkYsMHhGQSwweDE3LDB4RkYsMHhGNywweEY2LDB4NUIsMHhGRCwweEZGLDB4RUYsCi0gICAgMHgx
NywweEZGLDB4RDcsMHhGNiwweEFBLDB4RTIsMHhFQSwweDdBLDB4RjcsMHhGNiwweDk2LDB4RUUs
MHhFOCwweDc4LDB4QkYsMHhBRiwKLSAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4N0QsMHgyRiww
eDBBLDB4MDAsMHgxOCwweEZGLDB4RDcsMHhGNiwweEJELDB4MEIsMHgwMiwweDAwLAotICAgIDB4
MzgsMHhGRiwweDE4LDB4RkYsMHhCNSwweEFELDB4QUQsMHg4RCwweDM4LDB4RkYsMHgxOCwweEZG
LDB4MEEsMHgwMiwweDAyLDB4MDAsCi0gICAgMHgzOCwweEZGLDB4RjQsMHhERCwweEEwLDB4RTgs
MHg3OCwweDc4LDB4RjcsMHhGRSwweEQzLDB4RDUsMHgyQiwweDI3LDB4MkQsMHgyRCwKLSAgICAw
eDM4LDB4RkYsMHgxOCwweEZGLDB4RUQsMHg3RCwweEZELDB4RkQsMHgzOSwweEZGLDB4MTgsMHhG
RiwweDJGLDB4QUUsMHhCRiwweEJELAotICAgIDB4MzgsMHhGRiwweDE5LDB4RkYsMHhFOCwweEY4
LDB4RkEsMHg2QSwweDE4LDB4RkYsMHhGOCwweEY2LDB4QTgsMHhGOCwweDcyLDB4REEsCi0gICAg
MHgxOCwweEZGLDB4RDcsMHhGNiwweEZGLDB4QUIsMHhBRiwweEJGLDB4MTgsMHhGRiwweEY4LDB4
RjYsMHhFRSwweEJBLDB4MEEsMHg2QSwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RkYsMHhG
RSwweEFBLDB4QkQsMHgxOCwweEZGLDB4RjgsMHhGNiwweEZFLDB4OUYsMHhBRiwweDhBLAotICAg
IDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBRiwweDJCLDB4OEUsMHgwQSwweDE4LDB4RkYsMHhENyww
eEY2LDB4N0EsMHhFMiwweEVBLDB4RUEsCi0gICAgMHhGNywweEZFLDB4NTUsMHhFNiwweDVGLDB4
NUUsMHhGQSwweEY4LDB4NzUsMHhFRSwweDU1LDB4RTYsMHg1NSwweDdGLDB4RkEsMHgwMiwKLSAg
ICAweDU1LDB4RUUsMHg3NSwweEU2LDB4ODAsMHg4MiwweEJFLDB4QUIsMHhCNiwweEY2LDB4NTQs
MHhFNiwweDJGLDB4MjksMHgyQiwweEFCLAotICAgIDB4RjcsMHhGNiwweEI3LDB4RjYsMHhBRiww
eDBGLDB4QTUsMHgzRCwweEY4LDB4RjYsMHhENywweEY2LDB4RUIsMHg2RSwweDYwLDB4NjAsCi0g
ICAgMHhGNywweEY2LDB4RDgsMHhGNiwweDAyLDB4MDIsMHhBQiwweEJELDB4RDYsMHhGRSwweEY4
LDB4RjYsMHg1NSwweDVELDB4REQsMHg1RiwKLSAgICAweEY4LDB4RjYsMHhEOCwweEY2LDB4MDAs
MHhBRSwweEJFLDB4QUEsMHhGOCwweEY2LDB4RDcsMHhGNiwweEFBLDB4OEIsMHhCMywweDgyLAot
ICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4OCwweEE4LDB4ODIsMHgwMCwweEY3LDB4RjYsMHhE
NywweEY2LDB4MDgsMHhFMCwweEM4LDB4MDAsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDAw
LDB4OEEsMHg4RiwweEJGLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgyMCwweDAwLDB4MEEsMHgzQiwK
LSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4Q0EsMHhDOCwweEUyLDB4MjgsMHhGNywweEZFLDB4
RDcsMHhGNiwweDJELDB4MkQsMHgyQiwweEJBLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhB
OCwweEE4LDB4RTgsMHhGQSwweEY3LDB4RjYsMHhENywweEY2LDB4REUsMHhERiwweDdFLDB4NTYs
Ci0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEVCLDB4NEEsMHhERCwweDU1LDB4RjcsMHhGNiww
eEI3LDB4RUUsMHg4RiwweEJGLDB4REUsMHhGRSwKLSAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4
RTgsMHhFQywweDdFLDB4N0YsMHhCNiwweEVFLDB4NTUsMHhFNiwweEY4LDB4RkEsMHg3QSwweDVG
LAotICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHhCQiwweEJELDB4QkQsMHgzNSwweEQ3LDB4RjYs
MHg5NiwweEVFLDB4QUQsMHgyRCwweDBGLDB4M0IsCi0gICAgMHhENywweEY2LDB4QjYsMHhGNiww
eEIyLDB4REYsMHhEOCwweEVBLDB4RDcsMHhGNiwweDk2LDB4RUUsMHhBOCwweEFBLDB4RUIsMHhF
OCwKLSAgICAweDk2LDB4RUUsMHhGNCwweERELDB4NzgsMHg3OCwweDVDLDB4NUEsMHg3NiwweEVF
LDB4RjQsMHhERCwweDAzLDB4MkIsMHgyRCwweEFGLAotICAgIDB4NzUsMHhFRSwweDU1LDB4RTYs
MHg4OCwweEEyLDB4ODgsMHhBMiwweDk2LDB4RUUsMHg3NSwweEVFLDB4QkYsMHhENywweDdELDB4
NTUsCi0gICAgMHg3NiwweEVFLDB4RDMsMHhENSwweDYwLDB4RjgsMHg2MCwweDY4LDB4RjQsMHhE
RCwweDkyLDB4RDUsMHhBRiwweDI3LDB4MkQsMHgzRiwKLSAgICAweDU1LDB4RUUsMHhGNCwweERE
LDB4MEIsMHgyQiwweDI5LDB4QTcsMHg3NiwweEVFLDB4MzUsMHhFNiwweDdBLDB4N0EsMHg2Miww
eDZCLAotICAgIDB4MzUsMHhFNiwweEQzLDB4REQsMHg1NiwweDdFLDB4RTIsMHhFOCwweDE1LDB4
RTYsMHhCMywweEQ1LDB4N0IsMHg2QSwweDYyLDB4NjgsCi0gICAgMHgzMSwweEM1LDB4MEQsMHhB
NCwweERDLDB4N0MsMHhCQywweEFBLDB4OTIsMHhENSwweEFGLDB4QjQsMHgyRCwweDJELDB4MDks
MHhBRiwKLSAgICAweDU1LDB4RUUsMHg5MiwweEQ1LDB4M0YsMHgzNSwweDk1LDB4RkQsMHg5Niww
eEY2LDB4RjQsMHhERCwweDAwLDB4MjIsMHhBQSwweEY1LAotICAgIDB4OTYsMHhFRSwweEQzLDB4
REQsMHhBMCwweEVBLDB4RkYsMHg1RiwweDM1LDB4RTYsMHg5MiwweEQ1LDB4ODAsMHhCQSwweERG
LDB4NTUsCi0gICAgMHhGNCwweERELDB4NTIsMHhDRCwweDAwLDB4QUEsMHhGQiwweEZELDB4RjQs
MHhERCwweDkyLDB4RDUsMHg4RiwweEFGLDB4QUQsMHgwRCwKLSAgICAweDc2LDB4RUUsMHhGMyww
eERELDB4MEQsMHhBNSwweEFELDB4QUQsMHg3NiwweEVFLDB4MzUsMHhFNiwweEU4LDB4RkMsMHg1
NywweDU1LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBQSwweEFBLDB4MDgsMHg4MywweEY2
LDB4RjYsMHhCNywweEVFLDB4RkIsMHhFQiwweEFBLDB4QUYsCi0gICAgMHhENiwweEY2LDB4QjYs
MHhFRSwweDJCLDB4ODMsMHgwMiwweDA4LDB4RDYsMHhGNiwweEQ3LDB4RUUsMHg4QSwweEFBLDB4
QUEsMHgyQSwKLSAgICAweEQ2LDB4RjYsMHhENywweEVFLDB4QTIsMHg4QSwweEE4LDB4QUEsMHhG
NiwweEY2LDB4RDYsMHhGNiwweEJELDB4Q0IsMHg3RCwweDU1LAotICAgIDB4RDYsMHhGNiwweEI2
LDB4RUUsMHgzOCwweDAwLDB4MkEsMHgzOCwweEY2LDB4RjYsMHhENiwweEY2LDB4RjUsMHhGNSww
eERELDB4RkQsCi0gICAgMHhENiwweEY2LDB4RDcsMHhFRSwweDhBLDB4QTgsMHgyQSwweEE4LDB4
RDYsMHhGNiwweEI2LDB4RUUsMHhBQSwweDhBLDB4MzAsMHgwMCwKLSAgICAweEY2LDB4RjYsMHhC
NiwweEVFLDB4RkYsMHhGRiwweEVFLDB4QUEsMHhENiwweEY2LDB4RDYsMHhFRSwweDJBLDB4MjIs
MHhBQSwweEFBLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhCNiwweDJFLDB4QTIsMHhGQSww
eEQ2LDB4RjYsMHhCNiwweEVFLDB4OUYsMHhERiwweEU3LDB4QTUsCi0gICAgMHhCNiwweEY2LDB4
RDYsMHhFRSwweEVCLDB4QUEsMHhCQSwweDJBLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGQSwweDYz
LDB4QUYsMHhCRCwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEY2LDB4RkIsMHhFQiwweEVBLDB4Rjcs
MHhENiwweEY2LDB4QjYsMHhFRSwweDI5LDB4RkIsMHhBRiwweEFCLAotICAgIDB4RDYsMHhGNiww
eEI2LDB4RUUsMHgwQSwweDBBLDB4MjgsMHhCQSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4MDgsMHgy
OCwweEE4LDB4QTMsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDAwLDB4QTIsMHhBOCwweEEy
LDB4RjYsMHhGNiwweEI1LDB4RUUsMHhBQSwweEJBLDB4RUUsMHhGQSwKLSAgICAweEY2LDB4RjYs
MHhCNSwweEVFLDB4MkEsMHhBQiwweDNGLDB4RkYsMHhGNiwweEY2LDB4QjcsMHhGNiwweEU4LDB4
RkEsMHhGRSwweEZFLAotICAgIDB4RDcsMHhGNiwweDc1LDB4RUUsMHg2QSwweDY4LDB4QzAsMHhD
MCwweEYzLDB4REQsMHhFOCwweDgyLDB4NzgsMHg3OCwweDc4LDB4NzgsCi0gICAgMHg0NiwweDZB
LDB4QTQsMHg1MSwweDdFLDB4NTYsMHg1QywweDU4LDB4ODQsMHg1MSwweDIzLDB4NDEsMHg3Nyww
eEJFLDB4N0EsMHhBMCwKLSAgICAweDYzLDB4NDksMHhFMiwweDM4LDB4MDIsMHhBOCwweERGLDB4
NTYsMHg4NCwweDUxLDB4QzIsMHgzMCwweDBBLDB4MkUsMHhFRiwweDU1LAotICAgIDB4ODQsMHg1
MSwweEMyLDB4MzAsMHgwMCwweDAyLDB4QkYsMHhGRCwweEE0LDB4NTEsMHgwMywweDM5LDB4QTAs
MHhGQiwweEQ3LDB4NTUsCi0gICAgMHg4NCwweDUxLDB4RTIsMHgzOCwweEUyLDB4REIsMHhENSww
eDU3LDB4NDMsMHg0OSwweEUyLDB4MzgsMHg4MiwweEI2LDB4RkQsMHg3NSwKLSAgICAweDQ0LDB4
NDksMHhDMiwweDM4LDB4MjIsMHhBRiwweEFELDB4QUIsMHg4NCwweDUxLDB4MjMsMHg0OSwweEE5
LDB4QUQsMHgzRiwweEY5LAotICAgIDB4NjcsMHg3MiwweDg0LDB4NTksMHhCRCwweDJELDB4MkQs
MHgyRiwweEU4LDB4ODIsMHg2NywweDcyLDB4QkQsMHgyOSwweDhCLDB4QUIsCi0gICAgMHhBOCww
eDdBLDB4NDcsMHg3MiwweEZDLDB4N0UsMHg3QywweEYyLDB4NDcsMHg2QSwweEM1LDB4NjEsMHhC
QywweEE4LDB4RjgsMHg1QywKLSAgICAweDI2LDB4NkEsMHhDNSwweDU5LDB4RUMsMHg3RiwweEZC
LDB4RUIsMHgyNiwweDZBLDB4QzUsMHg2MSwweEJFLDB4QUQsMHhBOSwweEFBLAotICAgIDB4Qzgs
MHg4MiwweDI2LDB4NkEsMHgzRCwweDJELDB4MkYsMHhCNywweENDLDB4QTMsMHhDOSwweDgyLDB4
MEIsMHgwQiwweEE5LDB4QTUsCi0gICAgMHgwRCwweEI0LDB4QUMsMHhBMywweEEyLDB4MkEsMHgy
RiwweDlELDB4NEUsMHhCQywweEVELDB4QUIsMHg1RiwweEZFLDB4MkYsMHg4RiwKLSAgICAweDRE
LDB4QkMsMHg0QSwweDlCLDB4NUYsMHhGQSwweEMwLDB4ODAsMHhDQywweEFCLDB4MkEsMHg5Qiww
eEY3LDB4NUUsMHg3RSwweEIwLAotICAgIDB4OEIsMHhBMywweDI5LDB4OUIsMHg2RiwweDc1LDB4
RkIsMHg4MCwweDhCLDB4QTMsMHhFOCwweDhBLDB4MkEsMHhBRiwweEZGLDB4NTUsCi0gICAgMHhF
QywweEFCLDB4MDksMHg5MywweDBBLDB4QUIsMHhBRiwweEZELDB4MEQsMHhCNCwweDZBLDB4OUIs
MHgwQSwweEFGLDB4QkYsMHg3NSwKLSAgICAweEVDLDB4QUIsMHhDOCwweDhBLDB4RTAsMHhGOCww
eDdBLDB4NUYsMHhDOCwweDhBLDB4MjYsMHg3MiwweEZDLDB4RkUsMHhERiwweDU3LAotICAgIDB4
QzksMHg4QSwweEU2LDB4NjksMHg1RCwweDdGLDB4OEEsMHgwQiwweDRELDB4QjQsMHgyNiwweDcy
LDB4RDUsMHhCRCwweDNELDB4MkYsCi0gICAgMHhCNiwweEZFLDB4QUIsMHg5QiwweEFELDB4MkQs
MHgyQSwweDBBLDB4MTgsMHhGRiwweDk2LDB4RjYsMHgyOSwweDJGLDB4OEIsMHgyQSwKLSAgICAw
eDE4LDB4RkYsMHhGNywweEZFLDB4QkQsMHhCRCwweEE1LDB4QTcsMHgxOCwweEZGLDB4MTcsMHhG
NywweEFBLDB4QTgsMHhBMCwweDIwLAotICAgIDB4MTgsMHhGRiwweEY2LDB4RUUsMHhBOCwweDIy
LDB4MDgsMHhBMCwweEY3LDB4RkUsMHgxOCwweEY3LDB4REYsMHhGRiwweEZGLDB4RUYsCi0gICAg
MHgxNywweEZGLDB4RjcsMHhGNiwweDlFLDB4QkEsMHg4OCwweEFBLDB4MTcsMHhGRiwweEQ3LDB4
RjYsMHhBQSwweDgyLDB4RTAsMHg2OCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NzAsMHg1
OCwweDU3LDB4NUYsMHhGOCwweEZFLDB4RDYsMHhFRSwweEI1LDB4QUIsMHhBRSwweDhCLAotICAg
IDB4MzgsMHhGRiwweEY3LDB4RjYsMHhGNSwweEJGLDB4QUQsMHhBQiwweDM4LDB4RkYsMHgxOCww
eEZGLDB4RDUsMHhBQiwweDBBLDB4MDIsCi0gICAgMHg1OSwweEZGLDB4MTgsMHhGRiwweEFELDB4
QUEsMHhBQSwweDJBLDB4MzgsMHhGRiwweDk2LDB4RUUsMHg4MCwweDgwLDB4NDAsMHhGMCwKLSAg
ICAweEQ3LDB4RjYsMHhGNCwweERELDB4NzgsMHg3RSwweEZFLDB4RkUsMHgxOCwweEZGLDB4MTQs
MHhERSwweDJELDB4MkQsMHgwRiwweDhGLAotICAgIDB4MzgsMHhGRiwweDE4LDB4RkYsMHhGRCww
eEZELDB4N0QsMHg1NSwweDM5LDB4RkYsMHgxOCwweEZGLDB4QUQsMHhBRCwweEFGLDB4N0QsCi0g
ICAgMHgzOSwweEZGLDB4MTgsMHhGRiwweDZFLDB4RkUsMHhERSwweDVGLDB4MTgsMHhGRiwweEY4
LDB4RjYsMHg1RiwweDVBLDB4RDYsMHhERSwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4OTUs
MHhCNSwweDlELDB4REQsMHgxOCwweEZGLDB4RjgsMHhGNiwweEQ2LDB4RkEsMHhGRSwweDdGLAot
ICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBOSwweEFCLDB4NzcsMHhGNywweDE4LDB4RkYsMHhG
OCwweEY2LDB4ODAsMHg4MCwweEFBLDB4QUIsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweDhF
LDB4OEIsMHg4MiwweDgyLDB4MTgsMHhGRiwweEY3LDB4RjYsMHhGRSwweEVBLDB4RkEsMHhGRiwK
LSAgICAweEY3LDB4RjYsMHhCNywweEY2LDB4NTIsMHg3MCwweDc4LDB4NzgsMHhCNiwweEY2LDB4
NzYsMHhFRSwweDU3LDB4NUUsMHg3QywweEZBLAotICAgIDB4OTYsMHhFRSwweDc2LDB4RUUsMHg1
NSwweEJELDB4NjksMHhDQSwweEI2LDB4RjYsMHg1NSwweEU2LDB4QTksMHhBQiwweEFCLDB4MkUs
Ci0gICAgMHhGNywweEY2LDB4OTYsMHhFRSwweEFGLDB4QjksMHgyRiwweDJCLDB4MTgsMHhGRiww
eEQ3LDB4RjYsMHhGRiwweEVCLDB4QkYsMHhBRiwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4
M0IsMHhBRiwweDJGLDB4MjgsMHgxOCwweEZGLDB4RjcsMHhGNiwweDU1LDB4NTUsMHhGNywweDdG
LAotICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHgyQSwweEE4LDB4MDgsMHgwMCwweEQ3LDB4RkUs
MHhGNywweEY2LDB4NTcsMHhENywweDU1LDB4NTUsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiww
eDg4LDB4MEEsMHgyMiwweEFBLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGQSwweEZCLDB4RkIsMHhG
OSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4OTYsMHhGRSwweEFBLDB4QTIsMHhGNywweEY2
LDB4RDcsMHhGNiwweEQ3LDB4NUQsMHg1NSwweDU4LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHg4OCwweDJCLDB4RUYsMHgyQywweEY3LDB4RjYsMHhENywweEY2LDB4QjQsMHhENCwweEZFLDB4
RkEsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEFGLDB4QUYsMHhFRCwweEQ3LDB4RjcsMHhG
NiwweDk3LDB4RUUsMHhBOCwweEFBLDB4ODAsMHhFQSwKLSAgICAweEQ3LDB4RjYsMHhCNywweEVF
LDB4MDgsMHgwMiwweDgyLDB4QUMsMHhENywweEY2LDB4OTYsMHhFRSwweEE4LDB4QTAsMHhFOCww
eEZBLAotICAgIDB4QjcsMHhGNiwweDU1LDB4RUUsMHhBMCwweEU4LDB4RTIsMHg3RSwweDc1LDB4
RUUsMHgzNSwweEU2LDB4QjAsMHhBOCwweEVFLDB4RkYsCi0gICAgMHg5NiwweEVFLDB4NTUsMHhF
NiwweDNELDB4MEQsMHgwQiwweDBCLDB4RDcsMHhGNiwweEI3LDB4RjYsMHg4RCwweDM1LDB4RTks
MHhGRCwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEY2LDB4MzgsMHhGOCwweEUyLDB4NzcsMHhENyww
eEY2LDB4NzYsMHhFRSwweEE4LDB4QUEsMHhFOCwweDdBLAotICAgIDB4NzYsMHhFRSwweEQ0LDB4
RDUsMHhEOCwweDVDLDB4N0UsMHg1QSwweDU1LDB4RUUsMHhENCwweERELDB4MkYsMHhBRCwweEFE
LDB4QkQsCi0gICAgMHg3NSwweEVFLDB4NTUsMHhFNiwweDA5LDB4MkYsMHgzNywweDA1LDB4OTYs
MHhFRSwweDc1LDB4RUUsMHhGRiwweEVFLDB4NzcsMHg1NywKLSAgICAweDc2LDB4RUUsMHhEMyww
eEQ1LDB4NjgsMHg3MCwweDYwLDB4RkEsMHhGNCwweERELDB4OTIsMHhDRCwweDM3LDB4M0QsMHgz
NywweDNGLAotICAgIDB4NTUsMHhFRSwweEY0LDB4REQsMHgyRiwweDI5LDB4MjksMHgyRCwweDU1
LDB4RUUsMHgzNSwweEU2LDB4RTIsMHg2OCwweEVBLDB4OEEsCi0gICAgMHg1NSwweEVFLDB4QjMs
MHhERCwweEZBLDB4N0UsMHg3RSwweEYwLDB4RjQsMHhERCwweDkyLDB4RDUsMHg0QSwweDdBLDB4
NEEsMHhDMiwKLSAgICAweDcyLDB4Q0QsMHhDRiwweEJDLDB4NTYsMHhGNiwweEJFLDB4RjgsMHg5
MiwweEQ1LDB4RjAsMHhCQywweEFELDB4MkYsMHgyRiwweDJGLAotICAgIDB4QjMsMHhERCwweDcy
LDB4RDUsMHgyRCwweEJELDB4REYsMHg3RCwweEIzLDB4REQsMHg1MSwweENELDB4QTAsMHg2Qyww
eEZBLDB4NUYsCi0gICAgMHhCMiwweEQ1LDB4MzEsMHhDRCwweEE4LDB4RkYsMHg3NywweDU1LDB4
NzIsMHhDRCwweDMxLDB4Q0QsMHg4MCwweDhBLDB4MkIsMHgzRCwKLSAgICAweEIzLDB4REQsMHg1
MSwweENELDB4QjUsMHhCRiwweDJGLDB4MkIsMHhGNCwweEU1LDB4QjMsMHhENSwweEJGLDB4Qjcs
MHhGRiwweDM1LAotICAgIDB4NTUsMHhFNiwweEY0LDB4REQsMHgyRCwweEFELDB4MkYsMHhFQiww
eDU1LDB4RTYsMHgxNCwweEU2LDB4RkUsMHhBRSwweDJGLDB4MkIsCi0gICAgMHhENiwweEY2LDB4
QjYsMHhGNiwweEUyLDB4RUEsMHhCRSwweDdFLDB4RDYsMHhGNiwweEI2LDB4RUUsMHgyMiwweEUy
LDB4QTAsMHgyQSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4MDIsMHg4OCwweDIyLDB4MDgs
MHhENiwweEY2LDB4RjgsMHhFRSwweDg4LDB4MjAsMHhBQSwweDI4LAotICAgIDB4RDYsMHhGNiww
eEI3LDB4RUUsMHhBMiwweEE4LDB4MDAsMHgwMiwweEY3LDB4RjYsMHhENiwweEY2LDB4RjcsMHhF
NywweDdGLDB4NUQsCi0gICAgMHhCNiwweEY2LDB4RjYsMHhFRSwweEFCLDB4RUYsMHhBQiwweEFG
LDB4RjYsMHhGNiwweEI2LDB4RUUsMHg4QSwweEEyLDB4QUEsMHhCRiwKLSAgICAweEY2LDB4RjYs
MHhCNiwweEVFLDB4RkUsMHhCRSwweEJBLDB4QUEsMHhENiwweEY2LDB4QjYsMHhFRSwweDgyLDB4
QTAsMHg4QSwweDI4LAotICAgIDB4RDYsMHhGNiwweEY3LDB4RUUsMHhBOCwweDgwLDB4MDIsMHg4
MCwweEY2LDB4RjYsMHhCNiwweEVFLDB4RkEsMHhCQSwweEJGLDB4RkUsCi0gICAgMHhENiwweEY2
LDB4QjYsMHhFRSwweEVFLDB4QkEsMHgyQSwweDAwLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhCNyww
eDdCLDB4RUEsMHgwMCwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4RkYsMHhFQiwweDhBLDB4
MjIsMHhENiwweEY2LDB4QjYsMHhGNiwweERELDB4RUUsMHg2OCwweEE4LAotICAgIDB4QjYsMHhG
NiwweEQ2LDB4RUUsMHg4MiwweEFBLDB4RTgsMHhGRSwweEI2LDB4RjYsMHhENSwweEVFLDB4QUEs
MHhBQSwweEY4LDB4RUEsCi0gICAgMHhCNiwweEY2LDB4RDYsMHhFRSwweEVFLDB4QkEsMHhBOCww
eEY4LDB4QjYsMHhGNiwweEQ2LDB4RUUsMHhGRiwweEVCLDB4QUEsMHg4RSwKLSAgICAweEQ2LDB4
RjYsMHhCNiwweEVFLDB4MEEsMHgyMywweDhCLDB4MEEsMHhENiwweEY2LDB4RjYsMHhFRSwweDIy
LDB4MDIsMHhBOCwweDgwLAotICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhCRiwweEFFLDB4QUEs
MHhFQSwweEQ2LDB4RjYsMHhCNywweEY2LDB4QjgsMHhCQSwweEJFLDB4QkMsCi0gICAgMHhENyww
eEY2LDB4MzQsMHhFNiwweEMwLDB4RTAsMHg2MCwweDY4LDB4NzEsMHhDRCwweDg2LDB4NzIsMHhG
MCwweDcwLDB4NzgsMHg3OCwKLSAgICAweDQ2LDB4NkEsMHg2NCwweDQ5LDB4RjgsMHg3OCwweDVB
LDB4NUUsMHhBNCwweDUxLDB4MDIsMHgzOSwweEU4LDB4RkEsMHg3QSwweDdGLAotICAgIDB4MDIs
MHgzOSwweEExLDB4MjgsMHhGOCwweEUwLDB4RUEsMHg1NiwweEMyLDB4MzAsMHg4MSwweDI4LDB4
RjgsMHhBOCwweEE4LDB4MDAsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEFCLDB4OEYsMHg2
RiwweEU3LDB4RTMsMHgzOCwweEMyLDB4MzAsMHgyRiwweEVCLDB4NzksMHg3RCwKLSAgICAweDAz
LDB4MzksMHhDMiwweDMwLDB4QTcsMHgyQiwweDBCLDB4ODUsMHgyMywweDQxLDB4RTIsMHgzOCww
eDU3LDB4RDYsMHhBQiwweDBBLAotICAgIDB4NDQsMHg0OSwweDAzLDB4MzksMHhFOSwweEI5LDB4
QUIsMHhBOSwweEU1LDB4NjEsMHg0MywweDQ5LDB4RDUsMHgzNSwweEE1LDB4MzUsCi0gICAgMHgw
OSwweDkzLDB4QTUsMHg1OSwweEJELDB4QUYsMHhBQiwweDJCLDB4RTksMHg4QSwweDg3LDB4N0Es
MHhGRiwweDVCLDB4N0EsMHg2MCwKLSAgICAweEE3LDB4ODIsMHhDNSwweDYxLDB4QTAsMHhGQSww
eDc3LDB4NUUsMHgyNiwweDZBLDB4NjMsMHg0OSwweEY4LDB4RkEsMHhGRiwweDU3LAotICAgIDB4
RTUsMHg1OSwweDAyLDB4NDEsMHgwMiwweEEyLDB4QkYsMHhGNywweDA2LDB4NkEsMHg4NCwweDUx
LDB4MDIsMHhBQiwweEFGLDB4QjUsCi0gICAgMHg4NywweDdBLDB4RTYsMHg2MSwweDBGLDB4MkYs
MHhBOSwweDJELDB4NEIsMHg5MywweDY3LDB4NzIsMHgwQiwweDJCLDB4QkQsMHhGNSwKLSAgICAw
eDhCLDB4OUIsMHhBOCwweDgyLDB4MDgsMHhBQSwweEFGLDB4RjUsMHgwQywweEFDLDB4MDksMHg5
MywweDA4LDB4MkYsMHhCRiwweEY1LAotICAgIDB4MkQsMHhCQywweDhCLDB4QTMsMHg4MiwweDAy
LDB4MkEsMHhBOSwweDJELDB4QjQsMHhBQiwweEEzLDB4N0MsMHhGQSwweEZBLDB4N0EsCi0gICAg
MHhDQywweEFCLDB4NkEsMHg5QiwweDZCLDB4NkEsMHhFOCwweEJFLDB4NkEsMHhBMywweEM4LDB4
OEEsMHhGQSwweDc4LDB4RTAsMHhDOCwKLSAgICAweDQ5LDB4OUIsMHhBNywweDgyLDB4MEEsMHhB
QiwweEZCLDB4NUYsMHg0QSwweDlCLDB4ODcsMHg3QSwweEEwLDB4RkEsMHg3RiwweDU2LAotICAg
IDB4MDksMHg5MywweDQ2LDB4N0EsMHg2MCwweEVBLDB4QUEsMHhBQiwweDBBLDB4OTMsMHgyNyww
eDcyLDB4N0QsMHhGNywweEFBLDB4MDIsCi0gICAgMHgwOSwweDkzLDB4NjgsMHg3QSwweDM1LDB4
QTcsMHgyQiwweDAyLDB4RUYsMHhDNCwweDA5LDB4OEIsMHgzRCwweDI1LDB4MkQsMHhBRCwKLSAg
ICAweEI2LDB4RkUsMHg1MSwweEQ1LDB4MEIsMHgwQiwweDA5LDB4MEQsMHgxOCwweEZGLDB4RDcs
MHhGRSwweEVCLDB4QUIsMHgyOSwweEFGLAotICAgIDB4MTgsMHhGRiwweEY3LDB4RkUsMHhBQiww
eDdFLDB4N0EsMHg3RSwweDE4LDB4RkYsMHhGNywweEZFLDB4MEEsMHgwOSwweEFCLDB4QUEsCi0g
ICAgMHgxNywweEZGLDB4RjgsMHhGNiwweDIyLDB4ODIsMHgwQSwweDAyLDB4MTcsMHhGRiwweEY4
LDB4RjYsMHhCOCwweEU4LDB4MjAsMHg4MCwKLSAgICAweDE4LDB4RkYsMHhENywweEY2LDB4Mjgs
MHg4MCwweDgwLDB4NzgsMHhGNywweEY2LDB4RDcsMHhGNiwweEUwLDB4RTgsMHhGRSwweDc3LAot
ICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGOSwweEFELDB4QkQsMHhBNywweDE4LDB4RkYsMHhE
NywweEY2LDB4QUYsMHhBRCwweEJGLDB4QUYsCi0gICAgMHgzOCwweEZGLDB4RjcsMHhGRSwweEJC
LDB4QUYsMHgwOSwweDAyLDB4NTksMHhGRiwweDM5LDB4RkYsMHhGNSwweEY1LDB4RUQsMHhGQiwK
LSAgICAweDU5LDB4RkYsMHgxOCwweEZGLDB4OEEsMHhBQSwweEVBLDB4N0UsMHgxOCwweEZGLDB4
OTYsMHhFRSwweDcwLDB4NzgsMHg1OCwweDVFLAotICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHg1
RSwweDdBLDB4RkEsMHhGQSwweDE4LDB4RkYsMHg3NiwweEVFLDB4MkQsMHgyOSwweDhGLDB4MEIs
Ci0gICAgMHgxOCwweEZGLDB4MTksMHhGNywweDIyLDB4ODgsMHg4MiwweDIyLDB4MzksMHhGRiww
eDE4LDB4RkYsMHhGOSwweEVELDB4QjksMHg5RCwKLSAgICAweDM5LDB4RkYsMHgxOCwweEZGLDB4
N0YsMHg3RSwweDVFLDB4N0UsMHgxOCwweEZGLDB4RjgsMHhGNiwweEZFLDB4RUEsMHhBOCwweDJB
LAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRiwweEZBLDB4QkYsMHg3NywweEY3LDB4RkUs
MHhGOCwweEY2LDB4N0YsMHhERiwweDdGLDB4NzUsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiww
eEE5LDB4QzksMHhCOSwweEJCLDB4RjgsMHhGRSwweDE4LDB4RjcsMHg1RSwweEZFLDB4RkUsMHhF
RSwKLSAgICAweDE4LDB4RkYsMHhGNywweEVFLDB4MjIsMHgwQSwweDIyLDB4QTgsMHgxOCwweEZG
LDB4RjcsMHhGNiwweDc2LDB4N0UsMHhGOCwweDc4LAotICAgIDB4RjcsMHhGNiwweEI3LDB4RUUs
MHhGQSwweDdBLDB4N0MsMHhGQywweDk2LDB4RjYsMHhCNiwweEVFLDB4MkIsMHhBRCwweEZFLDB4
RkQsCi0gICAgMHhCNywweEY2LDB4OTYsMHhFRSwweDU1LDB4NzcsMHhGOCwweEY4LDB4RDYsMHhG
NiwweDc1LDB4RUUsMHhGNSwweERELDB4RjcsMHhCRiwKLSAgICAweEQ3LDB4RjYsMHg5NiwweEVF
LDB4MDMsMHgwQiwweDJGLDB4MkIsMHgxOCwweEZGLDB4RDcsMHhGNiwweEFGLDB4QUEsMHhBQiww
eEU5LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBOCwweEE4LDB4QTgsMHhBOCwweDE4LDB4
RkYsMHhENywweEY2LDB4QUEsMHg4QiwweDJCLDB4QUQsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhG
NiwweEZFLDB4RkEsMHhCOCwweDI4LDB4MTgsMHhGNywweEQ3LDB4RjYsMHhFRiwweEZGLDB4RkUs
MHhBOCwKLSAgICAweDE4LDB4RjcsMHhENywweEY2LDB4RjcsMHhGRiwweEJCLDB4QUIsMHgxOCww
eEZGLDB4RDcsMHhGNiwweEY1LDB4RkYsMHhBRSwweEJFLAotICAgIDB4MTgsMHhGRiwweEQ3LDB4
RjYsMHhFRSwweEFFLDB4RkUsMHhGRSwweEQ4LDB4RkUsMHhGNywweEY2LDB4RjUsMHhGRCwweEY1
LDB4RjUsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDI4LDB4QUEsMHhBRiwweEVBLDB4Rjcs
MHhGNiwweEI2LDB4RUUsMHhBMCwweEVBLDB4N0MsMHg3RSwKLSAgICAweEY3LDB4RjYsMHg5Niww
eEVFLDB4QUEsMHgyQiwweEJGLDB4RDUsMHhENywweEY2LDB4OTYsMHhFRSwweEEwLDB4RjgsMHg1
RSwweDVGLAotICAgIDB4QjYsMHhFRSwweDc2LDB4RUUsMHgyOCwweEFBLDB4REIsMHg1RCwweEI2
LDB4RjYsMHgzNSwweEU2LDB4ODAsMHhBQSwweEZBLDB4N0YsCi0gICAgMHg5NiwweEVFLDB4MzUs
MHhFNiwweDY4LDB4RUUsMHhGRiwweEZGLDB4OTYsMHhFRSwweDM1LDB4RTYsMHhCRCwweEFCLDB4
QUIsMHgwQSwKLSAgICAweDc2LDB4RjYsMHg5NiwweEVFLDB4N0UsMHg3RiwweDVGLDB4REQsMHhE
NywweEY2LDB4QjcsMHhGNiwweEVELDB4QUIsMHhEQiwweEMzLAotICAgIDB4QjYsMHhGNiwweDk2
LDB4RUUsMHg2QywweEZFLDB4QjcsMHhGNiwweEI2LDB4RjYsMHg3NiwweEVFLDB4N0IsMHhGRiww
eEVBLDB4ODIsCi0gICAgMHg1NiwweEVFLDB4QjMsMHhENSwweDU4LDB4NzgsMHg3QywweEQ4LDB4
MzUsMHhFNiwweEQzLDB4RDUsMHgzNSwweDJELDB4QUIsMHhCRiwKLSAgICAweDc2LDB4RUUsMHgz
NSwweEU2LDB4MEQsMHgyRCwweEE1LDB4QjUsMHg3NiwweEVFLDB4NTUsMHhFNiwweEUwLDB4RTAs
MHhFMCwweDczLAotICAgIDB4NTUsMHhFNiwweEIyLDB4RDUsMHhFMCwweDcwLDB4NjgsMHg3MCww
eEYzLDB4REQsMHhCMiwweEQ1LDB4MzUsMHhBNywweEI1LDB4OTUsCi0gICAgMHg1NSwweEVFLDB4
RjQsMHhERCwweEE5LDB4MjksMHhBRCwweEJCLDB4NzYsMHhFRSwweEQzLDB4REQsMHg4QSwweDhB
LDB4QUEsMHhERiwKLSAgICAweDU1LDB4RUUsMHhEMywweERELDB4NjgsMHhGQSwweEUyLDB4RUIs
MHgxNCwweEU2LDB4QjMsMHhENSwweDdGLDB4NjIsMHhFMiwweEVBLAotICAgIDB4NzIsMHhDRCww
eDhGLDB4QjQsMHhFOCwweEY4LDB4RkMsMHhERSwweDcyLDB4RDUsMHhEMCwweEJDLDB4MkIsMHgy
QiwweEE5LDB4MkQsCi0gICAgMHg5MiwweEQ1LDB4NTIsMHhDRCwweEIyLDB4RUYsMHhGRiwweERG
LDB4NzIsMHhDRCwweDMxLDB4Q0QsMHhDOCwweEYyLDB4NDIsMHg1QSwKLSAgICAweDcxLDB4Q0Qs
MHgzMSwweEM1LDB4NTUsMHhGRSwweEJELDB4MzUsMHhCMywweEQ1LDB4MzEsMHhDNSwweEFELDB4
QUIsMHhBRiwweDBBLAotICAgIDB4QjMsMHhENSwweDkyLDB4RDUsMHhDOSwweEMxLDB4QjksMHhE
RCwweEY0LDB4REQsMHg5MiwweEQ1LDB4MkYsMHhBRSwweEE3LDB4M0IsCi0gICAgMHgxNCwweEU2
LDB4RDMsMHhERCwweDAwLDB4MEEsMHhFRiwweDVCLDB4NzUsMHhFRSwweEY0LDB4REQsMHgyQiww
eEFGLDB4QUYsMHhCRCwKLSAgICAweEI2LDB4RjYsMHg1MCwweEM1LDB4MDAsMHgwMCwweDgyLDB4
QjUsMHhENiwweEY2LDB4NTUsMHhFRSwweDA4LDB4MEEsMHg4QSwweEE5LAotICAgIDB4RDYsMHhG
NiwweEI2LDB4RUUsMHgyOCwweEEyLDB4QUEsMHhGRSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4MDIs
MHg4MCwweEEzLDB4RTIsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEFBLDB4QUEsMHhBOCww
eEFBLDB4RDYsMHhGNiwweEQ3LDB4RUUsMHhBQSwweDJBLDB4OEEsMHgyMCwKLSAgICAweEY4LDB4
RjYsMHhENiwweEY2LDB4NzcsMHg3RCwweEU1LDB4QkQsMHhGNywweEY2LDB4QjYsMHhFRSwweEJG
LDB4RUUsMHhCQSwweEVBLAotICAgIDB4RjYsMHhGNiwweEI2LDB4RUUsMHhBQSwweEFCLDB4RUIs
MHhGRiwweEQ2LDB4RjYsMHhENiwweEVFLDB4QTgsMHgyQSwweEFBLDB4QUEsCi0gICAgMHhENiww
eEY2LDB4RjYsMHhFRSwweDAwLDB4QTAsMHg4QSwweEEwLDB4RDYsMHhGNiwweEY3LDB4RUUsMHgw
OCwweDg4LDB4MDgsMHgwMiwKLSAgICAweEQ2LDB4RjYsMHhGNiwweEVFLDB4ODgsMHgwMCwweDgw
LDB4QTIsMHhGNywweEY2LDB4RDYsMHhGNiwweEU3LDB4QTUsMHhCNSwweEQ1LAotICAgIDB4Rjcs
MHhGNiwweEQ2LDB4RjYsMHg1NSwweDc1LDB4RjcsMHg1RiwweEQ2LDB4RjYsMHhENiwweEY2LDB4
MDAsMHgwMCwweDAwLDB4MDAsCi0gICAgMHhGNywweEY2LDB4RDYsMHhGNiwweDU1LDB4NTUsMHg3
NSwweEZELDB4RDYsMHhGNiwweEI2LDB4RUUsMHgzQiwweDgzLDB4OEIsMHg4MCwKLSAgICAweEQ2
LDB4RjYsMHhCNiwweEY2LDB4MEMsMHg4QSwweDg4LDB4MDAsMHhENiwweEY2LDB4QjYsMHhGNiww
eDlBLDB4OUEsMHgzQSwweEJFLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHgwOCwweDI4LDB4
MkEsMHhCQSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4MDAsMHgyOCwweDJBLDB4MDIsCi0gICAgMHhE
NiwweEY2LDB4QjYsMHhGNiwweDIwLDB4RTAsMHg2MCwweEI4LDB4RjcsMHhGNiwweEI2LDB4RjYs
MHhGQSwweERGLDB4N0YsMHhERiwKLSAgICAweEQ2LDB4RjYsMHhCMiwweEQ1LDB4RTAsMHg2MCww
eDYwLDB4NjgsMHhDRSwweEJDLDB4MDUsMHg2MiwweDc4LDB4NzgsMHg3OCwweDU4LAotICAgIDB4
QzUsMHg1OSwweDIzLDB4NDEsMHhFOCwweEU4LDB4NUMsMHhFRSwweDQzLDB4NDEsMHhFMiwweDMw
LDB4QzAsMHhFMCwweEZFLDB4NzgsCi0gICAgMHgwMiwweDMxLDB4QTEsMHgyOCwweDdBLDB4Nzgs
MHhEOCwweDVFLDB4RTIsMHgyOCwweDgxLDB4MjgsMHhFMiwweEZFLDB4RkEsMHhGNywKLSAgICAw
eEMxLDB4MjgsMHg4MCwweDI4LDB4MjgsMHgyOCwweEZCLDB4QkYsMHgwMywweDMxLDB4QTIsMHgy
OCwweDJCLDB4MkYsMHhCOSwweEVCLAotICAgIDB4MDIsMHgzMSwweEMyLDB4MzAsMHgwNywweEFG
LDB4QUQsMHhBRiwweDIzLDB4NDEsMHhFMiwweDMwLDB4MEEsMHgyQiwweEE5LDB4RTksCi0gICAg
MHg0MywweDQ5LDB4MDMsMHg0MSwweDhCLDB4MDIsMHgyMywweDI5LDB4MjYsMHg2QSwweDY0LDB4
NTEsMHhCNSwweDJELDB4MkQsMHgyRCwKLSAgICAweDA5LDB4OEIsMHg2NiwweDdBLDB4MEQsMHgw
OSwweDA5LDB4MjksMHgyOSwweDkzLDB4QTcsMHg4MiwweERBLDB4RjgsMHhFOCwweDcwLAotICAg
IDB4ODcsMHg3QSwweEE1LDB4NTksMHg1OCwweDVDLDB4NUMsMHg3QywweDg1LDB4NTksMHgwMyww
eDQxLDB4RjgsMHg3RSwweDc3LDB4NUYsCi0gICAgMHgyMywweDQ5LDB4RTIsMHgzOCwweDJDLDB4
QUYsMHhERSwweEZFLDB4QzYsMHg2MSwweEUyLDB4MzgsMHgwQSwweEFGLDB4RkYsMHhGNSwKLSAg
ICAweDQ2LDB4NkEsMHg2NCwweDUxLDB4MEEsMHgyQiwweEFELDB4QkQsMHhBOCwweDdBLDB4MDYs
MHg2MiwweDBCLDB4QkYsMHhGNywweEZELAotICAgIDB4QzksMHg4MiwweDI2LDB4NkEsMHgyMiww
eEEyLDB4QjcsMHhGNSwweDJBLDB4OTMsMHg4NywweDdBLDB4MEEsMHgwQSwweEFGLDB4QkQsCi0g
ICAgMHhFQywweEFCLDB4MDksMHg5MywweDJCLDB4QUYsMHhBRCwweEI1LDB4RUMsMHhBQiwweEFD
LDB4QUIsMHg3OCwweDcyLDB4M0UsMHgzRCwKLSAgICAweENDLDB4QUIsMHg2QSwweEEzLDB4RkYs
MHhFRCwweEFDLDB4RkMsMHhBQiwweEEzLDB4RTksMHg4QSwweEVBLDB4RTgsMHhFMCwweDc4LAot
ICAgIDB4RTgsMHg4QSwweDY3LDB4N0EsMHhGOCwweDc4LDB4N0UsMHg3RiwweDg3LDB4N0EsMHg0
NiwweDdBLDB4QkEsMHhGNiwweDdGLDB4QTcsCi0gICAgMHgyOSwweDkzLDB4NjcsMHg3QSwweEI5
LDB4M0QsMHhCNSwweEFELDB4RUMsMHhBQiwweDBBLDB4OTMsMHg3RCwweEFGLDB4MEIsMHgwMywK
LSAgICAweEFCLDB4QTMsMHgyOSwweDkzLDB4NzUsMHg3RiwweEVBLDB4ODgsMHg2RCwweEI0LDB4
MDksMHg4QiwweDNELDB4MzUsMHgzNSwweEI3LAotICAgIDB4RDcsMHhGRSwweDRELDB4QjQsMHgw
QiwweDBCLDB4QUIsMHhENSwweEY3LDB4RkUsMHhEMywweERELDB4MDAsMHgwMCwweDBBLDB4MkQs
Ci0gICAgMHgxNywweEZGLDB4RjgsMHhGRSwweERCLDB4RkUsMHhCNywweEY1LDB4MTgsMHhGRiww
eEY4LDB4RkUsMHhBQiwweEFFLDB4RkYsMHhBNywKLSAgICAweDE4LDB4RkYsMHhGNywweEZFLDB4
MEEsMHgwQiwweDJBLDB4QkUsMHgzOCwweEZGLDB4RjcsMHhGNiwweEFBLDB4RUEsMHhGQiwweDVG
LAotICAgIDB4MTgsMHhGRiwweEI2LDB4RUUsMHhFOCwweEZBLDB4RkEsMHg3RiwweEQ3LDB4RjYs
MHhCNiwweEVFLDB4MDAsMHhBMCwweEUyLDB4RkEsCi0gICAgMHhGNywweEY2LDB4QjYsMHhFRSww
eEFBLDB4RkIsMHg2RCwweERELDB4MzksMHhGRiwweEI2LDB4RUUsMHhCRiwweDJELDB4MkQsMHgw
RiwKLSAgICAweDU5LDB4RkYsMHgzOCwweEZGLDB4QjUsMHhGRCwweEFCLDB4RUUsMHg1OSwweEZG
LDB4MzksMHhGRiwweEVCLDB4RUUsMHhGQSwweDVGLAotICAgIDB4MzgsMHhGRiwweEQ3LDB4RjYs
MHhDMCwweEUwLDB4RjAsMHg2OCwweEQ2LDB4RUUsMHg3NiwweEVFLDB4RkMsMHhGRSwweEZFLDB4
RjcsCi0gICAgMHg5NiwweEVFLDB4NTUsMHhFNiwweEQ4LDB4OUMsMHhCNiwweDM3LDB4MTgsMHhG
RiwweDk2LDB4RUUsMHgwMSwweDBCLDB4MjksMHg4QiwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2
LDB4ODIsMHgwQSwweDBBLDB4MjIsMHgzOSwweEZGLDB4MTgsMHhGRiwweDk1LDB4QjUsMHhCNSww
eEZELAotICAgIDB4MzksMHhGRiwweDE4LDB4RkYsMHg3QSwweDdFLDB4N0EsMHg3RSwweDE4LDB4
RkYsMHhGOCwweEY2LDB4QUUsMHhCQSwweEFBLDB4RUEsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhG
NiwweERGLDB4NUUsMHg1OCwweDVFLDB4MTgsMHhGNywweEQ3LDB4RjYsMHhCRiwweEFFLDB4MkIs
MHhBQSwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4QUIsMHhFRSwweEE5LDB4RkQsMHgxOCww
eEZGLDB4RjgsMHhGNiwweEJCLDB4REUsMHhBRSwweEFBLAotICAgIDB4MTgsMHhGRiwweEY4LDB4
RjYsMHhBQSwweEJGLDB4QkUsMHhBQSwweDE4LDB4RkYsMHhGOCwweEY2LDB4NTgsMHg3QSwweEVB
LDB4RkUsCi0gICAgMHhGNywweEY2LDB4QjcsMHhGNiwweEZFLDB4RTAsMHhFMCwweEEwLDB4RDcs
MHhGNiwweEI2LDB4RUUsMHhFRiwweEI1LDB4MzUsMHg4NywKLSAgICAweEQ3LDB4RjYsMHg5Niww
eEVFLDB4RkEsMHhFMCwweEEwLDB4MjAsMHhENywweEY2LDB4OTYsMHhFRSwweDk3LDB4OUYsMHhC
RSwweEFBLAotICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHhBQiwweEJGLDB4QkIsMHhCOCwweDE4
LDB4RkYsMHhCNiwweEVFLDB4QUIsMHhBRiwweEFELDB4MkQsCi0gICAgMHhGOCwweEZFLDB4Rjcs
MHhGNiwweDVGLDB4NUYsMHhERSwweDVGLDB4MTgsMHhGNywweEI3LDB4RjYsMHgwQSwweDJBLDB4
MkUsMHhBQSwKLSAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4MjgsMHgyOCwweDBBLDB4QUYsMHgx
OCwweEZGLDB4RjgsMHhGNiwweEE4LDB4QTAsMHhFOCwweEI4LAotICAgIDB4MTgsMHhGRiwweEY3
LDB4RjYsMHg3RSwweDVELDB4N0QsMHhFQSwweDE3LDB4RkYsMHhGOCwweEY2LDB4RkQsMHhERCww
eERGLDB4QjcsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEZFLDB4REUsMHhEQSwweEVBLDB4
RjgsMHhGRSwweEY3LDB4RjYsMHhGRiwweEZCLDB4RkYsMHhGNywKLSAgICAweEY3LDB4RjYsMHhE
NywweEY2LDB4NkYsMHhERSwweDVFLDB4NTYsMHhENywweEY2LDB4OTYsMHhFRSwweEY4LDB4RUEs
MHhBOCwweEJBLAotICAgIDB4QjcsMHhGNiwweDk2LDB4RUUsMHg3NywweEVCLDB4ODAsMHhBMCww
eDk3LDB4RUUsMHg3NiwweEVFLDB4RDgsMHg1QywweDVDLDB4REMsCi0gICAgMHg5NiwweEVFLDB4
NzYsMHhFRSwweDU1LDB4QTUsMHg5RiwweEZFLDB4OTYsMHhFRSwweDM1LDB4RTYsMHg3RSwweEY4
LDB4QjIsMHhBQSwKLSAgICAweDk2LDB4RUUsMHg1NSwweEVFLDB4RDUsMHhCRCwweDJCLDB4QUEs
MHg5NiwweEVFLDB4NzYsMHhFRSwweEFELDB4M0IsMHgwMCwweEEzLAotICAgIDB4QjYsMHhGNiww
eDc2LDB4RUUsMHhBQiwweDg5LDB4QUYsMHgzRiwweEQ3LDB4RjYsMHg5NiwweEVFLDB4MjIsMHhB
QiwweDZCLDB4N0YsCi0gICAgMHhCNiwweEY2LDB4NzYsMHhFRSwweEFFLDB4MkEsMHhCQSwweEY3
LDB4QjYsMHhGNiwweDk2LDB4RUUsMHhBMiwweDhBLDB4RTIsMHg2MywKLSAgICAweDc2LDB4RUUs
MHhEMywweEQ1LDB4NUMsMHg1OCwweDdFLDB4NUMsMHgxNCwweEU2LDB4RDMsMHhENSwweEFCLDB4
MkQsMHgyRiwweEE1LAotICAgIDB4NTUsMHhFRSwweDE0LDB4RTYsMHgwQiwweDhCLDB4OEIsMHgw
OSwweDc1LDB4RUUsMHgzNSwweEU2LDB4RjMsMHhCRiwweEJGLDB4QUIsCi0gICAgMHg3NSwweEVF
LDB4QjIsMHhENSwweDc4LDB4NzgsMHg3RSwweDdBLDB4RjMsMHhERCwweDkyLDB4RDUsMHgzNSww
eEFELDB4QjUsMHhCRCwKLSAgICAweDM0LDB4RTYsMHhEMywweERELDB4OEIsMHhFQiwweDdCLDB4
N0IsMHhENCwweERELDB4MzAsMHhDNSwweDI4LDB4QkMsMHhGQywweDU3LAotICAgIDB4MTQsMHhF
NiwweDcxLDB4Q0QsMHgwMCwweDJCLDB4QUQsMHhGNSwweDE0LDB4RTYsMHg5MiwweEQ1LDB4RTAs
MHhDQSwweEUyLDB4NEEsCi0gICAgMHg1MSwweENELDB4MkQsMHhBQywweEY4LDB4RkMsMHhGQyww
eERDLDB4NzIsMHhENSwweEQwLDB4QkMsMHg4RCwweDJELDB4QUQsMHgyRCwKLSAgICAweDcyLDB4
Q0QsMHgxMCwweEM1LDB4RTAsMHhBMCwweDg4LDB4NjAsMHg1MSwweENELDB4MTEsMHhDNSwweEIz
LDB4OEYsMHhCRiwweEY5LAotICAgIDB4NzEsMHhDRCwweDMxLDB4QzUsMHhBRCwweDNGLDB4RUQs
MHhGNywweEIzLDB4RDUsMHg3MiwweEQ1LDB4OTUsMHhBRCwweEVGLDB4QTUsCi0gICAgMHhCMyww
eEQ1LDB4NTEsMHhENSwweEJBLDB4MjIsMHgyMiwweDBBLDB4MTQsMHhFNiwweEIzLDB4RDUsMHg5
RCwweEFELDB4QkYsMHhBRCwKLSAgICAweEY0LDB4REQsMHhCMywweERELDB4QjgsMHgzOCwweEIy
LDB4REUsMHgzNSwweEU2LDB4RDMsMHhERCwweDJCLDB4QUYsMHhEQiwweDc3LAotICAgIDB4Q0Us
MHhCQywweEU4LDB4ODIsMHgyQiwweEY1LDB4NTUsMHg1NSwweDE0LDB4RTYsMHgyOSwweDhCLDB4
MDIsMHhCRiwweDc1LDB4NTUsCi0gICAgMHg5NSwweEVFLDB4OEEsMHg5MywweDAwLDB4MDIsMHhC
RCwweDU1LDB4OTUsMHhFRSwweDRELDB4QUMsMHgwMCwweDAwLDB4MEEsMHhCNSwKLSAgICAweEI2
LDB4RjYsMHgxMywweERFLDB4MDAsMHgwMCwweDAwLDB4MEQsMHhENiwweEY2LDB4QjYsMHhGNiww
eDA4LDB4QUEsMHg4QSwweDc1LAotICAgIDB4MTcsMHhGRiwweEI2LDB4RjYsMHhGRiwweEZGLDB4
OUQsMHhENywweEQ3LDB4RjYsMHhCNiwweEY2LDB4MDAsMHgwOCwweEFBLDB4QUUsCi0gICAgMHhE
NywweEY2LDB4QjYsMHhGNiwweEFDLDB4MkEsMHhBQiwweDA4LDB4RjcsMHhGRSwweEQ2LDB4RjYs
MHg1NSwweDU1LDB4RkQsMHhCNywKLSAgICAweEY3LDB4RjYsMHhENiwweEY2LDB4QjUsMHg5Riww
eDVCLDB4N0YsMHhGNywweEY2LDB4RDYsMHhGNiwweDU3LDB4NTcsMHgzNywweEY1LAotICAgIDB4
RjcsMHhGNiwweEQ2LDB4RjYsMHhGQiwweDdBLDB4N0UsMHg3QSwweEY3LDB4RkUsMHhENiwweEY2
LDB4NTUsMHhGNSwweEI3LDB4RkQsCi0gICAgMHhGNiwweEY2LDB4RDYsMHhGNiwweDVELDB4N0Qs
MHg2QSwweDVBLDB4RjcsMHhGNiwweEQ2LDB4RjYsMHhENSwweEQ3LDB4NTcsMHg1RiwKLSAgICAw
eEY2LDB4RkUsMHhENiwweEY2LDB4RTcsMHhGRiwweDU3LDB4NTksMHhGNiwweEY2LDB4QjcsMHhG
NiwweEFBLDB4RUIsMHhBRiwweEZGLAotICAgIDB4RjcsMHhGNiwweEQ2LDB4RjYsMHhBNSwweEFG
LDB4M0UsMHhGRiwweEY3LDB4RkUsMHhENiwweEY2LDB4NTUsMHg1NywweDVGLDB4RjcsCi0gICAg
MHhENiwweEY2LDB4QjYsMHhGNiwweEJDLDB4QUEsMHhBMCwweDA4LDB4RDYsMHhGNiwweEI2LDB4
RjYsMHg4RSwweEE3LDB4QUYsMHgwQSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEY2LDB4RUMsMHhG
OCwweDg4LDB4MjAsMHhENiwweEY2LDB4QjYsMHhGNiwweEFCLDB4RUIsMHhDQSwweEFBLAotICAg
IDB4QjYsMHhGNiwweEIzLDB4RDUsMHg2MCwweDYwLDB4NjAsMHg2MCwweDZFLDB4QjQsMHg2Myww
eDQ5LDB4RjgsMHg3OCwweDc4LDB4NzgsCi0gICAgMHg4NCwweDQ5LDB4MjMsMHg0MSwweEUwLDB4
RjAsMHg3OCwweDdBLDB4NDMsMHg0MSwweEUyLDB4MzAsMHg3OCwweEY4LDB4N0UsMHhGNSwKLSAg
ICAweEUyLDB4MzAsMHg4MSwweDI4LDB4RUEsMHg2QSwweDU4LDB4NzgsMHhBMSwweDI4LDB4NDAs
MHgyMCwweDA4LDB4MjIsMHhCQywweEI3LAotICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHhCRiww
eDI1LDB4MjUsMHgwRCwweEUyLDB4MzAsMHhBMSwweDI4LDB4MEEsMHgwQiwweEFELDB4M0YsCi0g
ICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEVBLDB4RkEsMHhGQiwweEU5LDB4MDIsMHgzOSwweEMy
LDB4MzAsMHg4RiwweEFGLDB4QUIsMHg4QSwKLSAgICAweDQ0LDB4NDksMHhFMiwweDM4LDB4MDks
MHgwRiwweEFGLDB4MkQsMHgyNiwweDcyLDB4NjQsMHg1MSwweDJELDB4M0QsMHgwRCwweDJELAot
ICAgIDB4MjksMHg5MywweDg3LDB4N0EsMHgyOSwweDBELDB4QkYsMHhCNSwweDJBLDB4OTMsMHhB
OCwweDgyLDB4RTgsMHhCMiwweDc4LDB4NkEsCi0gICAgMHg4OCwweDdBLDB4NDQsMHg0OSwweEY4
LDB4NzgsMHg3OCwweDdBLDB4NDQsMHg0OSwweEUyLDB4MzgsMHhCOCwweDc4LDB4NzgsMHg1QywK
LSAgICAweDAyLDB4MzksMHhDMiwweDM4LDB4QUMsMHhCNiwweEQ3LDB4REYsMHg0NCwweDQ5LDB4
RTMsMHgzOCwweDJELDB4MjcsMHgyRCwweDI5LAotICAgIDB4MDUsMHg2MiwweDQzLDB4NDksMHg4
QiwweDNELDB4QjUsMHhGRCwweDI2LDB4NkEsMHhBNSwweDUxLDB4MEEsMHhBQiwweEE1LDB4MkQs
Ci0gICAgMHg4NywweDcyLDB4MDYsMHg2MiwweDNCLDB4QUYsMHgwRCwweEJGLDB4MDksMHg4Qiww
eDY2LDB4NzIsMHgzRCwweEJELDB4RUQsMHhGRiwKLSAgICAweDI5LDB4OTMsMHhDOCwweDgyLDB4
MEUsMHgyRSwweEZELDB4QjUsMHhBQiwweEFCLDB4RTgsMHg4QSwweDAzLDB4MkIsMHhBRCwweDk1
LAotICAgIDB4QUIsMHhBMywweDRBLDB4OUIsMHgyQSwweEEwLDB4RUEsMHg3NSwweDZBLDB4OUIs
MHhDOCwweDgyLDB4RTAsMHhFMCwweDc4LDB4N0UsCi0gICAgMHhBOCwweDgyLDB4NDcsMHg3Miww
eEVBLDB4RkEsMHhGRSwweERFLDB4QzgsMHg4QSwweDQ2LDB4N0EsMHhCNywweEJELDB4MEYsMHgw
QiwKLSAgICAweDRBLDB4OTMsMHhBOCwweDgyLDB4QUQsMHgyQiwweDJCLDB4MkIsMHgwQywweEFD
LDB4NEEsMHg5QiwweDBGLDB4MEIsMHgyQiwweEFELAotICAgIDB4MkMsMHhCNCwweDhCLDB4OUIs
MHg1RSwweDY4LDB4NjgsMHg2QSwweDJBLDB4OTMsMHg2NiwweDcyLDB4QTAsMHg3OCwweDc4LDB4
NzgsCi0gICAgMHg2QSwweDkzLDB4MDYsMHg2QSwweDBBLDB4RUYsMHhGNSwweEQ1LDB4RjQsMHhF
NSwweDg3LDB4N0EsMHgwQiwweEJGLDB4RjUsMHg1NSwKLSAgICAweEI2LDB4RjYsMHg4NiwweDcy
LDB4MDAsMHgwQSwweEJGLDB4RDUsMHhENywweEZFLDB4Q0UsMHhCQywweDAwLDB4MDIsMHgwQiww
eDJELAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RkUsMHhBMiwweDIyLDB4QTMsMHhFRiwweEY3LDB4
RkUsMHg5NiwweEY2LDB4ODAsMHhGMCwweDdBLDB4RkEsCi0gICAgMHhCNiwweEY2LDB4RDYsMHhF
NiwweDg4LDB4ODgsMHgwOCwweDIwLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBQSwweENGLDB4RTks
MHg3RiwKLSAgICAweDE4LDB4RkYsMHhCNiwweEVFLDB4RDUsMHg5NSwweEJELDB4MkQsMHg1OSww
eEZGLDB4RjcsMHhGRSwweEFELDB4MkIsMHgyMiwweDhBLAotICAgIDB4NTksMHhGRiwweDM4LDB4
RkYsMHhFQSwweEZFLDB4RkYsMHg3QiwweDU5LDB4RkYsMHgxOCwweEZGLDB4QUUsMHhGQSwweEZB
LDB4RUUsCi0gICAgMHgzOCwweEZGLDB4NTYsMHhFRSwweEUwLDB4RTgsMHhFQSwweDc4LDB4OTYs
MHhFRSwweDU1LDB4RTYsMHhDOCwweEFBLDB4RUIsMHhGRiwKLSAgICAweEI2LDB4RjYsMHgzNCww
eEU2LDB4M0YsMHhBRiwweEJGLDB4MzUsMHgxOCwweEZGLDB4RDcsMHhGNiwweEJELDB4MkQsMHhB
NSwweEFELAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHgwRSwweDIyLDB4MEEsMHgyMywweDM4
LDB4RkYsMHgxOSwweEZGLDB4QkYsMHhFQiwweEJELDB4QUQsCi0gICAgMHgzOSwweEZGLDB4MTgs
MHhGRiwweDVFLDB4REYsMHhERSwweDdFLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhFMiwweEUwLDB4
QUEsMHhCOCwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4NzcsMHg1NywweDVELDB4NUQsMHgx
OCwweEZGLDB4RjgsMHhGNiwweDVGLDB4N0YsMHhFRiwweEVGLAotICAgIDB4MTgsMHhGRiwweEY4
LDB4RjYsMHhFRCwweEZCLDB4QkIsMHhGRCwweDE4LDB4RkYsMHhGOCwweEY2LDB4RUEsMHhFQiww
eEU5LDB4RjcsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEFBLDB4QUEsMHhFRiwweEFBLDB4
MTgsMHhGRiwweEY4LDB4RjYsMHhGRSwweERFLDB4RkUsMHg1RSwKLSAgICAweEY4LDB4RjYsMHhE
NywweEY2LDB4NjAsMHg3MCwweDVDLDB4NzksMHhENywweEY2LDB4QjcsMHhFRSwweDJGLDB4MEIs
MHgyQSwweDBFLAotICAgIDB4RjgsMHhGNiwweEI2LDB4RUUsMHg2RSwweEVBLDB4OEEsMHhBQSww
eEY3LDB4RjYsMHhCNiwweEVFLDB4OUYsMHhCQiwweEFBLDB4QjIsCi0gICAgMHhENywweEY2LDB4
QjYsMHhFRSwweDdFLDB4RTgsMHgyQSwweDBBLDB4RjcsMHhGRSwweEQ2LDB4RUUsMHgyRCwweDJG
LDB4QkQsMHhBRiwKLSAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4N0YsMHg3NywweEZGLDB4N0Is
MHgxOCwweEY3LDB4RDcsMHhGNiwweEJGLDB4RkYsMHhBRiwweEFFLAotICAgIDB4RjgsMHhGRSww
eDE4LDB4RjcsMHhGRSwweEZFLDB4RkYsMHhGQSwweDE4LDB4RkYsMHhGNywweEY2LDB4RUUsMHhC
QiwweEFFLDB4QUYsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweEFBLDB4QUEsMHgyMCwweEEy
LDB4MTgsMHhGRiwweEY3LDB4RjYsMHhFNywweDk3LDB4RDYsMHhGNywKLSAgICAweDE4LDB4RkYs
MHhGNywweEY2LDB4N0QsMHg1RSwweDc2LDB4NkYsMHhENywweEZFLDB4RjcsMHhGNiwweEY3LDB4
RkYsMHhERiwweEY3LAotICAgIDB4RjcsMHhGNiwweDk2LDB4RUUsMHhBOCwweEJBLDB4RkEsMHg3
RSwweEQ3LDB4RjYsMHg5NiwweEVFLDB4QkEsMHhGQSwweEZBLDB4RkYsCi0gICAgMHhCNiwweEY2
LDB4OTYsMHhFRSwweEMwLDB4RTAsMHhEQiwweDVGLDB4OTYsMHhFRSwweDc2LDB4RUUsMHg4OCww
eDIwLDB4QTMsMHhBRCwKLSAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4RkQsMHg2RSwweDc2LDB4
NUYsMHg3NSwweEVFLDB4NTUsMHhFNiwweDJBLDB4RTgsMHg3QSwweEVFLAotICAgIDB4NzYsMHhF
RSwweDU1LDB4RTYsMHhDQywweEU3LDB4QjUsMHhGNSwweDc2LDB4RUUsMHg1NSwweEU2LDB4MDAs
MHg4QiwweDIyLDB4MkEsCi0gICAgMHhCNiwweEY2LDB4NzYsMHhFRSwweEFGLDB4ODksMHhBRCww
eDJELDB4QjYsMHhGNiwweDc2LDB4RUUsMHhBQSwweEUyLDB4RkEsMHg2QSwKLSAgICAweDk2LDB4
RjYsMHg3NiwweEVFLDB4M0UsMHgwQiwweDA5LDB4MkIsMHhCNiwweEY2LDB4NzYsMHhFRSwweDhB
LDB4QzIsMHhDQSwweDQ4LAotICAgIDB4NTUsMHhFNiwweDkyLDB4Q0QsMHg3OCwweDVDLDB4NUMs
MHg1QSwweDE1LDB4RTYsMHg5MiwweEQ1LDB4MkYsMHhBQiwweEFELDB4QjUsCi0gICAgMHg1NSww
eEVFLDB4RjQsMHhFNSwweDJBLDB4QUYsMHgwOSwweDJCLDB4NzYsMHhFRSwweDU1LDB4RUUsMHhE
RCwweEY1LDB4RDksMHg1RiwKLSAgICAweDU1LDB4RUUsMHhCMiwweEQ1LDB4NzgsMHg3OCwweDZB
LDB4NzgsMHhEMywweERELDB4OTIsMHhENSwweDBCLDB4MjksMHgyRSwweDJCLAotICAgIDB4MTQs
MHhFNiwweEIyLDB4RDUsMHg2MywweDYzLDB4NkEsMHg2MiwweDkyLDB4RDUsMHhGMCwweEJDLDB4
RkUsMHhERSwweDdFLDB4NUMsCi0gICAgMHg5MiwweEQ1LDB4RUYsMHhDNCwweDJCLDB4QkQsMHhC
NSwweEZGLDB4RDQsMHhERCwweDcxLDB4Q0QsMHhDQSwweDhGLDB4Q0YsMHg4NSwKLSAgICAweDUx
LDB4Q0QsMHgyRCwweEFDLDB4REMsMHg1QywweERFLDB4REMsMHg1MSwweENELDB4QUYsMHhCNCww
eDg5LDB4MjEsMHhBOSwweDJELAotICAgIDB4NTEsMHhDRCwweEQwLDB4QkMsMHhFMCwweEZBLDB4
RjYsMHhERSwweDUxLDB4Q0QsMHhGMCwweEM0LDB4OUYsMHgyRCwweDJGLDB4QTksCi0gICAgMHg3
MSwweEQ1LDB4MzEsMHhDNSwweDlCLDB4QUQsMHgzRiwweDlGLDB4OTIsMHhENSwweDUyLDB4Q0Qs
MHgyQSwweDhCLDB4MkIsMHhBRiwKLSAgICAweEIzLDB4RDUsMHg5MiwweEQ1LDB4REYsMHgzNSww
eDI1LDB4OTUsMHhGMywweERELDB4QjMsMHhENSwweEFELDB4QzksMHhGQiwweEZGLAotICAgIDB4
RDMsMHhERCwweEIyLDB4RDUsMHgzRCwweEFELDB4N0QsMHhGRCwweEQzLDB4REQsMHg3MSwweENE
LDB4MDgsMHhFOCwweDc4LDB4NUUsCi0gICAgMHhFOCwweDgyLDB4QTcsMHg3QSwweDBFLDB4ODAs
MHgzQSwweDk4LDB4MDgsMHg4MywweEM4LDB4ODIsMHgyOCwweEFFLDB4Q0IsMHgwRiwKLSAgICAw
eDI4LDB4OEIsMHhDNywweDdBLDB4MEEsMHhCQiwweEVGLDB4REYsMHhFQiwweDlCLDB4QzcsMHg3
QSwweDJCLDB4RkYsMHg3RiwweEQ3LAotICAgIDB4OTEsMHhENSwweDA4LDB4ODMsMHgwQSwweEZE
LDB4NTUsMHg1NSwweDc1LDB4RUUsMHg0OSwweDhCLDB4MDAsMHgyQiwweEY1LDB4NTUsCi0gICAg
MHg5NSwweEVFLDB4RTgsMHg4MiwweDAwLDB4MDAsMHgyQSwweEJELDB4RDYsMHhGNiwweDUwLDB4
Q0QsMHgwMCwweDAyLDB4MkEsMHhCRCwKLSAgICAweEQ2LDB4RjYsMHg1NCwweEVFLDB4MDAsMHgw
OCwweDgyLDB4QUQsMHhENiwweEY2LDB4QjYsMHhGNiwweDI4LDB4MjIsMHgwQSwweDhELAotICAg
IDB4RjcsMHhGNiwweEI2LDB4RjYsMHhBRSwweDJGLDB4RUYsMHhCRiwweEY3LDB4RkUsMHhCNiww
eEY2LDB4QkIsMHhCQSwweEZFLDB4N0EsCi0gICAgMHhENiwweEY2LDB4QjYsMHhGNiwweDAwLDB4
ODAsMHhBMywweEFBLDB4MTYsMHhGNywweEI2LDB4RjYsMHhFRiwweERELDB4RkYsMHg1NSwKLSAg
ICAweEY3LDB4RkUsMHhENiwweEY2LDB4N0YsMHg1RCwweEQ1LDB4NUQsMHhGNiwweEY2LDB4RDYs
MHhGNiwweDdELDB4RDUsMHhGRCwweDc3LAotICAgIDB4RjcsMHhGNiwweEQ2LDB4RjYsMHg1Niww
eEZFLDB4NUUsMHg1NywweEQ2LDB4RjYsMHhCNiwweEY2LDB4RTAsMHhCMCwweDAwLDB4MDAsCi0g
ICAgMHhGNywweEZFLDB4QjYsMHhGNiwweEJCLDB4RkYsMHhGQiwweEFBLDB4RDcsMHhGNiwweEQ2
LDB4RjYsMHhGRCwweEY1LDB4RkYsMHhFRSwKLSAgICAweEQ3LDB4RjYsMHhENiwweEY2LDB4QUQs
MHhCRiwweEJELDB4RjUsMHhCNiwweEZFLDB4RjcsMHhGNiwweEZBLDB4RkIsMHhFRSwweDdBLAot
ICAgIDB4RjYsMHhGNiwweEQ2LDB4RjYsMHg1NywweEI3LDB4RUYsMHhBQiwweEI3LDB4RkUsMHhG
NiwweEY2LDB4QkEsMHhBRiwweEZGLDB4RUYsCi0gICAgMHhENiwweEY2LDB4QjMsMHhENSwweDYw
LDB4RTgsMHhDMCwweEMwLDB4RUYsMHhCQywweDQzLDB4NDksMHg3OCwweDc4LDB4NzgsMHg3OCwK
LSAgICAweDY0LDB4NDksMHgwMiwweDM5LDB4RkMsMHhGRSwweDdCLDB4RkUsMHgyMywweDQxLDB4
RTIsMHgzOCwweDdELDB4NkUsMHhGOCwweEUwLAotICAgIDB4MjMsMHgzOSwweDgwLDB4MjgsMHg3
RSwweEZBLDB4QUEsMHgyMiwweDAzLDB4MzksMHg2MCwweDIwLDB4RDUsMHhGRiwweEJBLDB4MjAs
Ci0gICAgMHgwMiwweDMxLDB4ODEsMHgyMCwweEFELDB4QTEsMHhCQSwweEE4LDB4MDIsMHgzOSww
eEMyLDB4MzAsMHhCRCwweEFCLDB4QUYsMHhBQiwKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4
N0QsMHhFRiwweEVBLDB4Q0IsMHgwMywweDM5LDB4QzIsMHgzMCwweDJFLDB4QjcsMHhBNywweEZC
LAotICAgIDB4ODQsMHg1OSwweEUzLDB4MzgsMHhCRCwweEFELDB4MzcsMHgyNSwweDg3LDB4N0Es
MHg2NCwweDU5LDB4QUQsMHgyRCwweDJGLDB4MkYsCi0gICAgMHhFOSwweDhBLDB4ODcsMHg3QSww
eDA5LDB4QTksMHhBOSwweEY1LDB4RTksMHg4QSwweDA1LDB4NkEsMHg4MCwweDgwLDB4RTIsMHg3
QiwKLSAgICAweDQ3LDB4NzIsMHhFMywweDM4LDB4RjAsMHhFOCwweEY4LDB4N0YsMHgyNCwweDQx
LDB4QTEsMHgzMCwweEYwLDB4RkEsMHg3QywweEZFLAotICAgIDB4RTIsMHgzOCwweEMyLDB4MzAs
MHhGRCwweDJELDB4MzksMHhCQiwweDQ0LDB4NDksMHhDMiwweDM4LDB4OEYsMHgyRiwweEFGLDB4
NkQsCi0gICAgMHhBNSwweDUxLDB4ODEsMHgyOCwweDAyLDB4QUEsMHhGRSwweDVELDB4QTUsMHg1
MSwweDYxLDB4MjgsMHgwMCwweEFBLDB4REYsMHg3NSwKLSAgICAweEU1LDB4NjEsMHhBMiwweDMw
LDB4MDAsMHhBQiwweDdELDB4NTUsMHg0NiwweDZBLDB4RTMsMHg0MCwweDAwLDB4MEEsMHhCRCww
eEQ1LAotICAgIDB4RTgsMHg4QSwweDg0LDB4NTEsMHgwMiwweDhBLDB4QUYsMHhCRCwweDI5LDB4
OTMsMHg4NywweDdBLDB4MkEsMHhBQiwweEJGLDB4QjUsCi0gICAgMHg0QSwweDlCLDB4QzgsMHg4
MiwweDAyLDB4QUIsMHg3RiwweDU1LDB4MkEsMHg5MywweDY3LDB4N0EsMHg2MCwweDYwLDB4RUUs
MHhFRSwKLSAgICAweEE4LDB4ODIsMHg0NiwweDdBLDB4OTMsMHhCRiwweEI1LDB4QUEsMHgwOSww
eDhCLDB4ODcsMHg3QSwweDY1LDB4M0YsMHgyRiwweEFELAotICAgIDB4NEEsMHg5MywweEU5LDB4
OEEsMHhBRiwweEEzLDB4RUEsMHg3RiwweDZBLDB4OUIsMHhDOCwweDgyLDB4MkEsMHhBRiwweDM3
LDB4QkQsCi0gICAgMHhDQywweEEzLDB4RTksMHg4QSwweEEwLDB4RUUsMHg3RSwweDVGLDB4NEIs
MHg5MywweEE4LDB4ODIsMHg3OCwweEU4LDB4NjIsMHg2RiwKLSAgICAweDg3LDB4N0EsMHgwNiww
eDZBLDB4RDcsMHhEOCwweDc4LDB4RjgsMHg2NywweDcyLDB4QzUsMHg2MSwweDBBLDB4QUUsMHg1
RiwweDdBLAotICAgIDB4ODYsMHg3QSwweEU2LDB4NjEsMHgyQSwweEE3LDB4QkQsMHhENSwweDU0
LDB4RUUsMHgyOSwweDhCLDB4MEQsMHgzRCwweDJELDB4QjUsCi0gICAgMHhENywweEZFLDB4NTQs
MHhFRSwweDgyLDB4QUIsMHhBRiwweEI1LDB4QjYsMHhGNiwweDk2LDB4RUUsMHgyOCwweEZBLDB4
M0MsMHgwQSwKLSAgICAweEQ2LDB4RjYsMHg5NSwweEVFLDB4RUYsMHhCRiwweEVBLDB4QzAsMHhG
NywweEY2LDB4OTYsMHhFRSwweDdFLDB4RkUsMHhCRiwweDM1LAotICAgIDB4MzgsMHhGRiwweEI2
LDB4RjYsMHgyRCwweDBCLDB4MDIsMHgwMiwweDU5LDB4RkYsMHgzOSwweEZGLDB4QUQsMHhFRCww
eEZGLDB4NUQsCi0gICAgMHg1OCwweEZGLDB4MzksMHhGRiwweDVCLDB4RDcsMHhERiwweDc1LDB4
MzksMHhGRiwweEY3LDB4RkUsMHhDMCwweEU4LDB4RjgsMHg2OCwKLSAgICAweEY4LDB4RkUsMHg3
NSwweEVFLDB4NTgsMHg1QywweDVFLDB4NUYsMHg3NSwweEVFLDB4MzUsMHhFNiwweEUyLDB4RTAs
MHhFMiwweEVBLAotICAgIDB4RDcsMHhGNiwweDM0LDB4RTYsMHgzNSwweEJELDB4QkQsMHgzRCww
eDE4LDB4RkYsMHhENywweEY2LDB4QTksMHhBOSwweDJCLDB4QUIsCi0gICAgMHgxOCwweEZGLDB4
RjgsMHhGNiwweDJCLDB4MkYsMHgyRiwweDNGLDB4MzgsMHhGRiwweDE5LDB4RkYsMHhFRiwweEVC
LDB4NkIsMHhGRCwKLSAgICAweDM5LDB4RkYsMHgxOCwweEZGLDB4RkYsMHhGRCwweEZELDB4REQs
MHgxOCwweEZGLDB4RjgsMHhGNiwweEY4LDB4QTAsMHhCMCwweEYwLAotICAgIDB4MTgsMHhGRiww
eEY4LDB4RjYsMHhEQSwweDZBLDB4QkUsMHhGNywweDE4LDB4RkYsMHhGOCwweEY2LDB4RkQsMHg3
NywweDU3LDB4NzcsCi0gICAgMHhGNywweEZFLDB4RjgsMHhGNiwweEVGLDB4QUYsMHhBRCwweEZG
LDB4MTgsMHhGRiwweEY4LDB4RjYsMHhCRiwweERCLDB4RjUsMHhGNywKLSAgICAweDE4LDB4RkYs
MHhGOCwweEY2LDB4QkEsMHg3NywweDVGLDB4REYsMHgxOCwweEZGLDB4RDcsMHhGNiwweEU4LDB4
QkEsMHg3RSwweDZFLAotICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHg3NSwweDc2LDB4NUQsMHhF
RiwweEY4LDB4RjYsMHhCNiwweEVFLDB4QTcsMHgyRiwweDJBLDB4QUEsCi0gICAgMHhGNywweEY2
LDB4RDcsMHhGNiwweEFGLDB4QkYsMHhBQiwweEY4LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhCQSww
eEFCLDB4QUIsMHhFQSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NTcsMHhFRiwweEFCLDB4
QTMsMHhGOCwweEY2LDB4RDcsMHhGNiwweEE1LDB4QTcsMHgyMiwweDBBLAotICAgIDB4MTgsMHhG
RiwweEY4LDB4RjYsMHg2QSwweEFCLDB4OEYsMHhGRiwweDE3LDB4RkYsMHhGNywweEY2LDB4NzUs
MHg1NywweDc1LDB4NUYsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweEJCLDB4RkQsMHhCRCww
eEZGLDB4MTgsMHhGRiwweEY3LDB4RjYsMHhCNywweEJELDB4QUYsMHhBQiwKLSAgICAweDE4LDB4
RkYsMHhGOCwweEY2LDB4QkEsMHhFRSwweEZFLDB4QkEsMHgxOCwweEZGLDB4RjcsMHhGNiwweERG
LDB4N0YsMHhFQSwweEVBLAotICAgIDB4RDcsMHhGRSwweDE4LDB4RjcsMHhCRiwweEFCLDB4QUIs
MHhBRiwweEY3LDB4RjYsMHg5OCwweEVFLDB4ODgsMHhBMCwweEFBLDB4QkEsCi0gICAgMHhENyww
eEY2LDB4OTYsMHhFRSwweEU4LDB4QUEsMHg3OCwweDdFLDB4QjYsMHhGNiwweDc2LDB4RUUsMHhB
OCwweEFBLDB4RUEsMHhGQSwKLSAgICAweDk2LDB4RUUsMHg1NiwweEVFLDB4MDAsMHg4MCwweDhB
LDB4RkYsMHg5NiwweEVFLDB4NTUsMHhFNiwweEFCLDB4QTgsMHhGQSwweEZGLAotICAgIDB4OTYs
MHhFRSwweDU1LDB4RTYsMHhBOCwweEJBLDB4QUYsMHhGRSwweDc1LDB4RUUsMHgzNSwweEU2LDB4
QTIsMHhFMCwweEI4LDB4RkYsCi0gICAgMHg1NSwweEVFLDB4NzYsMHhFNiwweEEwLDB4QUEsMHhB
OCwweEFBLDB4OTYsMHhFRSwweDU1LDB4RTYsMHhCRCwweEJELDB4QkYsMHhBRiwKLSAgICAweEI2
LDB4RjYsMHg3NiwweEVFLDB4MjksMHgyMywweEFCLDB4MkIsMHhCNiwweEY2LDB4NzYsMHhFRSww
eEY4LDB4RTgsMHhFQSwweEZBLAotICAgIDB4QjYsMHhGNiwweDc2LDB4RUUsMHhBRCwweEJCLDB4
QUQsMHgyRiwweEI3LDB4RjYsMHg1NSwweEU2LDB4QTAsMHhFMiwweEMwLDB4NDgsCi0gICAgMHgz
NSwweEU2LDB4NTIsMHhDRCwweEY4LDB4REMsMHhERSwweDVBLDB4RjQsMHhERCwweDUxLDB4Q0Qs
MHgyQSwweEE5LDB4M0QsMHhBRCwKLSAgICAweDU1LDB4RUUsMHhEMywweERELDB4MEEsMHg4Qiww
eDJGLDB4QTksMHg3NSwweEVFLDB4MzUsMHhFNiwweEZBLDB4QkUsMHhGQiwweERCLAotICAgIDB4
MzUsMHhFRSwweEIzLDB4RDUsMHg3OCwweDU4LDB4N0MsMHg3QywweEY0LDB4REQsMHg5MiwweEQ1
LDB4QUIsMHgyRiwweDJELDB4QUYsCi0gICAgMHgxNCwweEU2LDB4RDMsMHhERCwweDYyLDB4RTIs
MHhBMiwweEUyLDB4RjMsMHhERCwweDExLDB4QzUsMHg3RSwweDdBLDB4RjgsMHhBMCwKLSAgICAw
eDcxLDB4Q0QsMHgxMCwweEM1LDB4RkQsMHg3RiwweEQ2LDB4RDgsMHhCMywweEQ1LDB4MTAsMHhD
NSwweDg5LDB4QUIsMHhGRCwweEFELAotICAgIDB4MzAsMHhDNSwweDRELDB4QUMsMHg1QywweDVD
LDB4NUUsMHg1NCwweDMxLDB4Q0QsMHg4RSwweEI0LDB4MjksMHg4QiwweDBELDB4MEQsCi0gICAg
MHgzMSwweENELDB4RDAsMHhCQywweEZGLDB4OUUsMHhBQSwweEE4LDB4MzEsMHhDNSwweEYwLDB4
QzQsMHgwRiwweDJCLDB4QkIsMHhFQiwKLSAgICAweDUxLDB4Q0QsMHgxMSwweEM1LDB4MjgsMHhC
MiwweEJCLDB4RkUsMHg5MiwweEQ1LDB4NTEsMHhDRCwweEFCLDB4RUIsMHhBRCwweEZELAotICAg
IDB4QjMsMHhENSwweDcyLDB4Q0QsMHgyQiwweDI3LDB4QUYsMHgzNSwweEQzLDB4REQsMHhCMyww
eEQ1LDB4OEUsMHhFQiwweEFGLDB4MDksCi0gICAgMHhEMywweERELDB4OTIsMHhENSwweEVFLDB4
NjYsMHg3OCwweDY4LDB4OTIsMHhENSwweDMwLDB4Q0QsMHhCOCwweDVFLDB4RkYsMHhENywKLSAg
ICAweDA4LDB4ODMsMHhDNywweDdBLDB4QkMsMHhCNiwweDk2LDB4REYsMHgwOCwweDgzLDB4Qzgs
MHg3QSwweDJBLDB4RkEsMHg1QywweEJBLAotICAgIDB4MjksMHg4QiwweEM4LDB4N0EsMHhGRSww
eDdGLDB4QjYsMHg4RSwweDA4LDB4ODMsMHhDOCwweDgyLDB4RjYsMHhFNiwweEYyLDB4QkUsCi0g
ICAgMHgwOCwweDgzLDB4QzcsMHg3QSwweEFBLDB4ODUsMHhFRiwweDE4LDB4MDgsMHg4MywweEM3
LDB4ODIsMHgwMiwweEEzLDB4MkYsMHgwRSwKLSAgICAweDhBLDB4OTMsMHhFOCwweDgyLDB4MEIs
MHg3NywweDU1LDB4NTcsMHhDRSwweEJDLDB4MDgsMHg4MywweDJCLDB4RjUsMHg1NSwweDU1LAot
ICAgIDB4MTQsMHhFNiwweDI4LDB4OEIsMHgwMiwweEFGLDB4RDUsMHg1NSwweDk2LDB4RUUsMHgy
OSwweDhCLDB4MDAsMHgwMiwweEJGLDB4RDUsCi0gICAgMHhCNiwweEY2LDB4NEUsMHhBQywweDAw
LDB4MDAsMHgwQSwweEJELDB4RDYsMHhGNiwweEYzLDB4RTUsMHgwMCwweDAwLDB4MEEsMHhBRCwK
LSAgICAweEQ2LDB4RjYsMHhCNSwweEY2LDB4QTgsMHhBQSwweEFBLDB4RjUsMHhENiwweEY2LDB4
QjYsMHhGNiwweEY3LDB4RkYsMHhGRCwweDc3LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RjYsMHhB
MiwweEVFLDB4N0IsMHhGOSwweEQ2LDB4RjYsMHhCNiwweEY2LDB4MEMsMHgyQiwweDhBLDB4RTgs
Ci0gICAgMHhENywweEZFLDB4RDYsMHhGNiwweEQ3LDB4REYsMHg3RCwweEQ3LDB4RjcsMHhGRSww
eEQ2LDB4RjYsMHhFRiwweEVELDB4RTksMHhGRCwKLSAgICAweEY3LDB4RkUsMHhENiwweEY2LDB4
RkYsMHhERiwweDdGLDB4REYsMHhGNiwweEZFLDB4RDcsMHhGNiwweEZELDB4RjUsMHg1NywweDVE
LAotICAgIDB4RjcsMHhGRSwweEQ2LDB4RjYsMHg1NSwweDVGLDB4NUYsMHg3RiwweEY3LDB4RkUs
MHhCNiwweEY2LDB4QUYsMHhBRiwweEJGLDB4QkYsCi0gICAgMHhGNiwweEZFLDB4RDYsMHhGNiww
eEFGLDB4QkIsMHg5NSwweEY3LDB4RjcsMHhGRSwweEI2LDB4RjYsMHhCRSwweEVFLDB4REUsMHhG
RSwKLSAgICAweEQ2LDB4RjYsMHg1NCwweEVFLDB4NjAsMHhDMCwweEEwLDB4ODAsMHhGMiwweERE
LDB4QzQsMHg1OSwweDc4LDB4NTgsMHg3OCwweEY4LAotICAgIDB4ODQsMHg0OSwweDAyLDB4Mzks
MHhERiwweDVGLDB4RkYsMHhGMCwweDQzLDB4NDEsMHhFMiwweDM4LDB4MkEsMHgwQiwweEE1LDB4
QkYsCi0gICAgMHg4NCwweDQ5LDB4MjMsMHgzOSwweDU5LDB4OEEsMHhBQiwweEZELDB4NjQsMHg0
OSwweDAyLDB4MzksMHg1RiwweEJFLDB4QTgsMHgyQSwKLSAgICAweDg1LDB4NDksMHhFMiwweDMw
LDB4NTcsMHg1NywweDdBLDB4RTgsMHg0MywweDQxLDB4RTIsMHgzMCwweDc1LDB4RkQsMHhBQSww
eEEwLAotICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHhFRCwweEJCLDB4N0IsMHg1QywweDAzLDB4
MzksMHhDMiwweDM4LDB4QkEsMHhCQywweEI4LDB4MjgsCi0gICAgMHhFNSwweDY5LDB4MjMsMHg0
MSwweEI1LDB4QjUsMHhBRCwweEFELDB4NDcsMHg3QSwweEM0LDB4NjEsMHgwOSwweDI5LDB4MDMs
MHg4MywKLSAgICAweDY3LDB4N0EsMHgwNiwweDcyLDB4MDAsMHhBMCwweEE4LDB4NDMsMHg0Niww
eDcyLDB4ODQsMHg1OSwweDgwLDB4QzgsMHhFQSwweDdFLAotICAgIDB4ODQsMHg1OSwweEUzLDB4
MzgsMHg1OCwweEU4LDB4NjgsMHhFOCwweDI0LDB4NDEsMHhDMiwweDM4LDB4NTUsMHg3QSwweEEy
LDB4NjAsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEZGLDB4QkYsMHg3RiwweDY1LDB4RTIs
MHgzOCwweEExLDB4MjgsMHg1QSwweEY4LDB4RkEsMHg3OCwKLSAgICAweEMyLDB4MzAsMHg2MSww
eDI4LDB4N0EsMHhCRSwweEJBLDB4QTgsMHhBMiwweDMwLDB4ODIsMHgyOCwweEU1LDB4MEYsMHgw
QiwweDAyLAotICAgIDB4QzIsMHgzOCwweEEyLDB4MzAsMHgyOSwweDI4LDB4M0YsMHgyNSwweDQ0
LDB4NDksMHhFMywweDM4LDB4QkQsMHhBRiwweEFELDB4OTUsCi0gICAgMHhDNSwweDYxLDB4MjMs
MHg0OSwweDA5LDB4QkQsMHhENSwweERELDB4QzgsMHg4MiwweDg0LDB4NTksMHgwQiwweDJGLDB4
QUQsMHhCNSwKLSAgICAweEM4LDB4ODIsMHg2NywweDdBLDB4MkMsMHhBQSwweEJELDB4RjUsMHgw
OSwweDkzLDB4ODcsMHg4MiwweEZGLDB4RjcsMHhBRCwweDI1LAotICAgIDB4RTksMHg4QSwweDg3
LDB4N0EsMHhGQiwweDBBLDB4Q0IsMHg2MCwweEU4LDB4OEEsMHg4OCwweDdBLDB4QUYsMHhCMSww
eERELDB4N0QsCi0gICAgMHhFOSwweDhBLDB4ODcsMHg3QSwweDAwLDB4MEIsMHhGNywweEY2LDB4
MkEsMHg5MywweEM5LDB4ODIsMHgyOSwweDJELDB4QjksMHgxNSwKLSAgICAweDJBLDB4OTMsMHg0
NiwweDcyLDB4RTgsMHg3OCwweDc4LDB4NzgsMHgyOSwweDhCLDB4MDYsMHg2QSwweDhBLDB4RkQs
MHhENSwweDc1LAotICAgIDB4ODcsMHg3QSwweEU1LDB4NjksMHhFOCwweEJBLDB4MkYsMHhCRCww
eEM4LDB4ODIsMHhDNSwweDYxLDB4N0YsMHhFMiwweEEyLDB4MEEsCi0gICAgMHg2NywweDcyLDB4
QzUsMHg2MSwweEQ1LDB4RDcsMHhGRSwweDgwLDB4NkUsMHhCNCwweDI2LDB4NzIsMHgyRCwweEI1
LDB4RjUsMHhERCwKLSAgICAweDk2LDB4RjYsMHhDQywweEEzLDB4MDIsMHgwQiwweDJELDB4QjUs
MHhENywweEZFLDB4OTYsMHhGNiwweDJELDB4MEEsMHgwQSwweDJELAotICAgIDB4RjcsMHhGRSww
eDk2LDB4RUUsMHg2QSwweDc4LDB4RkEsMHhBQSwweDM4LDB4RkYsMHg5NSwweEVFLDB4QUQsMHgy
OSwweDBCLDB4MDIsCi0gICAgMHg1OCwweEZGLDB4MzksMHhGRiwweDc1LDB4NUQsMHg1NywweDU3
LDB4MzksMHhGRiwweDE4LDB4RkYsMHgwMCwweDAwLDB4MDAsMHgzQSwKLSAgICAweDM5LDB4RkYs
MHgxOCwweEZGLDB4ODAsMHhBMCwweEY4LDB4RkEsMHg1OSwweEZGLDB4QjYsMHhFRSwweDZBLDB4
NkEsMHg3QSwweDdFLAotICAgIDB4OTYsMHhFRSwweDU1LDB4RUUsMHhEOCwweDdFLDB4NzYsMHg1
NywweDc2LDB4RUUsMHgzNSwweEU2LDB4RTIsMHg2OCwweDVBLDB4NUUsCi0gICAgMHhENywweEY2
LDB4MzUsMHhFNiwweDI1LDB4MkQsMHgyRCwweDNGLDB4MTgsMHhGRiwweEY4LDB4RjYsMHgzNyww
eDlCLDB4QTksMHhFRCwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4M0YsMHgyRSwweDJFLDB4
MEUsMHgzOSwweEZGLDB4MTgsMHhGRiwweDdGLDB4NzksMHhCRiwweDlFLAotICAgIDB4MTgsMHhG
RiwweDNBLDB4RjcsMHg4MCwweDAyLDB4MjIsMHgyQSwweDE4LDB4RkYsMHhGOCwweEY2LDB4RTgs
MHhGMiwweEU4LDB4RkEsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDc2LDB4NUQsMHhGNyww
eDc3LDB4MTgsMHhGRiwweEY4LDB4RjYsMHg3RiwweDY2LDB4NzcsMHhGNSwKLSAgICAweDE3LDB4
RkYsMHhGOCwweEY2LDB4N0YsMHg3NywweEZELDB4RkQsMHgxNywweEZGLDB4RjgsMHhGNiwweEY3
LDB4RUQsMHhERiwweDdGLAotICAgIDB4MTcsMHhGRiwweEY4LDB4RjYsMHhGRiwweEY3LDB4NUQs
MHhGNywweDE4LDB4RkYsMHhGNywweEY2LDB4NTcsMHg3NSwweDZGLDB4NUYsCi0gICAgMHhGNyww
eEY2LDB4RDcsMHhGNiwweDdBLDB4NjIsMHhFMCwweEVDLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgz
NSwweEFELDB4NUQsMHhGOSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RUEsMHhFQSwweEY3
LDB4NkYsMHhGOCwweEY2LDB4RDcsMHhGNiwweEFGLDB4OUQsMHgwRCwweDBELAotICAgIDB4MTcs
MHhGRiwweEY4LDB4RjYsMHhENSwweEY1LDB4REYsMHhEQiwweDE4LDB4RkYsMHhGOCwweEY2LDB4
NTcsMHg3RCwweEJELDB4RjcsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEVGLDB4RjksMHhG
QiwweDNELDB4MTgsMHhGRiwweEY3LDB4RjYsMHg1RCwweDVBLDB4N0UsMHhFQSwKLSAgICAweDE4
LDB4RkYsMHhGNywweEY2LDB4RUQsMHhCOSwweEVELDB4OTcsMHgxOCwweEZGLDB4RjgsMHhGNiww
eEFBLDB4QUIsMHhGRCwweEZGLAotICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHhBRSwweDgyLDB4
QUUsMHhGRSwweEY4LDB4RkUsMHgxOCwweEY3LDB4QkYsMHgyQiwweDJGLDB4MkUsCi0gICAgMHhG
OCwweEY2LDB4RDcsMHhGNiwweEYwLDB4NTIsMHg1OCwweDVBLDB4RDcsMHhGNiwweDk3LDB4RUUs
MHhFMCwweDY4LDB4RTAsMHhBOCwKLSAgICAweEI3LDB4RjYsMHg3NiwweEVFLDB4QTAsMHhGMCww
eEZDLDB4N0EsMHg5NiwweEVFLDB4NzYsMHhFRSwweEI4LDB4NjgsMHhGOCwweDVGLAotICAgIDB4
OTYsMHhFRSwweDU1LDB4RTYsMHg3RSwweDVFLDB4RkEsMHhCQSwweDc2LDB4RUUsMHgzNSwweEU2
LDB4QUYsMHhGRiwweEZGLDB4QzAsCi0gICAgMHg3NiwweEVFLDB4MzUsMHhFNiwweEZBLDB4NUYs
MHg1NywweEZGLDB4NTUsMHhFNiwweDM1LDB4RTYsMHg5RSwweEQ4LDB4MDIsMHg4MywKLSAgICAw
eDc1LDB4RUUsMHg1NSwweEU2LDB4RDksMHhERCwweEZGLDB4NUQsMHg5NiwweEVFLDB4NTUsMHhF
NiwweEJELDB4QjcsMHgzNywweEFELAotICAgIDB4OTYsMHhGNiwweEI3LDB4RUUsMHhFOCwweEZF
LDB4RUUsMHhCQSwweEI3LDB4RjYsMHg3NiwweEVFLDB4RTgsMHhGQywweEZFLDB4NUYsCi0gICAg
MHhCNiwweEY2LDB4OTYsMHhFRSwweEU1LDB4QUQsMHhDRCwweEZELDB4QjYsMHhGNiwweDU1LDB4
RTYsMHg2QSwweDdBLDB4NzIsMHg3QSwKLSAgICAweEY0LDB4REQsMHg3MiwweENELDB4NUMsMHg1
QywweDVDLDB4NzgsMHhEMywweERELDB4NzIsMHhDRCwweDI1LDB4M0QsMHhBRiwweEU5LAotICAg
IDB4MzUsMHhFNiwweEQzLDB4REQsMHgyQiwweDJCLDB4MkQsMHhBRCwweDU1LDB4RUUsMHgxNCww
eEU2LDB4RUEsMHhFQSwweEVCLDB4QUYsCi0gICAgMHgzNSwweEU2LDB4QjMsMHhENSwweDVBLDB4
REEsMHg3QSwweDc4LDB4RjQsMHhERCwweEIzLDB4RDUsMHhCRCwweDJELDB4MzksMHgyRiwKLSAg
ICAweDE0LDB4RTYsMHhEMywweERELDB4RjMsMHhBOCwweEUyLDB4NjAsMHhGNCwweERELDB4OTIs
MHhENSwweEUyLDB4QUEsMHg4MCwweDgwLAotICAgIDB4RDMsMHhERCwweDMxLDB4Q0QsMHg1RSww
eEZFLDB4QTgsMHgwMCwweDkyLDB4RDUsMHhGMCwweEJDLDB4QkYsMHhGNywweDc4LDB4NjAsCi0g
ICAgMHgxMCwweEM1LDB4NEUsMHhBQywweDVDLDB4NUUsMHg1NiwweDU3LDB4MzIsMHhDRCwweDhG
LDB4QjQsMHgyRCwweDJELDB4MEQsMHgwOSwKLSAgICAweDUyLDB4Q0QsMHgxMSwweEM1LDB4NUEs
MHhEQSwweERFLDB4N0MsMHgzMSwweEM1LDB4RDAsMHhDNCwweEFBLDB4MjgsMHgyQiwweDBBLAot
ICAgIDB4NTEsMHhDRCwweDEwLDB4QzUsMHhFQSwweEFBLDB4REEsMHhFRiwweDcyLDB4RDUsMHg1
MSwweENELDB4QUQsMHgzNSwweDU1LDB4NTUsCi0gICAgMHhCMywweEQ1LDB4NzIsMHhDRCwweDE1
LDB4MkIsMHgzRCwweEJELDB4MzQsMHhFNiwweEQzLDB4REQsMHhFQiwweEE5LDB4QzksMHhFRCwK
LSAgICAweEQzLDB4REQsMHgxMCwweEM1LDB4QTAsMHhFMCwweEUwLDB4NzgsMHg1MSwweENELDB4
MTAsMHhDNSwweEJDLDB4QkYsMHhGNSwweEZGLAotICAgIDB4RTgsMHg4MiwweEM4LDB4N0EsMHhE
QSwweDlFLDB4ODAsMHhDMiwweEU4LDB4ODIsMHhBNywweDdBLDB4REEsMHgyRiwweDA2LDB4M0Ys
Ci0gICAgMHgwOCwweDgzLDB4QzgsMHg3QSwweEJFLDB4RUYsMHhFRCwweEE3LDB4RTgsMHg4Miww
eEM4LDB4N0EsMHgyOCwweDNGLDB4NjUsMHg3QSwKLSAgICAweDA4LDB4ODMsMHhBNywweDdBLDB4
NjgsMHhFMiwweDhGLDB4RjUsMHgwOCwweDgzLDB4QzcsMHg4MiwweEVGLDB4N0EsMHhFRiwweDc3
LAotICAgIDB4MDksMHg4QiwweEE3LDB4N0EsMHhCQiwweEI3LDB4M0QsMHhGRiwweDA4LDB4OEIs
MHhDOCwweDgyLDB4QUMsMHg3QywweENGLDB4RUYsCi0gICAgMHgyOSwweDhCLDB4QzcsMHg4Miww
eEE3LDB4RUIsMHhFOSwweDc1LDB4MjksMHg4QiwweEE3LDB4N0EsMHg4OSwweDZBLDB4RjksMHg1
QSwKLSAgICAweDJDLDB4QTQsMHhDOCwweDgyLDB4MkYsMHhGRCwweDU1LDB4NTUsMHg5MCwweEQ1
LDB4MDcsMHg4MywweDBBLDB4QkQsMHg1NSwweDU1LAotICAgIDB4NTQsMHhFRSwweDQ5LDB4OEIs
MHgwMCwweDJBLDB4QjUsMHg1NSwweDk2LDB4RjYsMHg4QSwweDlCLDB4MDAsMHgwMCwweDJCLDB4
RjUsCi0gICAgMHhCNiwweEY2LDB4NzIsMHhENSwweDAwLDB4MDAsMHgwQSwweEJELDB4RDYsMHhG
NiwweDc2LDB4RjYsMHhBMCwweDhBLDB4MkEsMHhCNSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEY2
LDB4MjksMHhCRCwweEZGLDB4NTUsMHhGNywweEY2LDB4QjYsMHhGNiwweEVCLDB4RkYsMHhGRiww
eEQ1LAotICAgIDB4QjcsMHhGRSwweEQ2LDB4RjYsMHhENSwweEQ1LDB4NzcsMHhERCwweEY3LDB4
RkUsMHhCNiwweEY2LDB4QkYsMHhBQiwweEFGLDB4RkIsCi0gICAgMHhGNywweEZFLDB4RDcsMHhG
NiwweDU1LDB4NTcsMHg3RiwweDU1LDB4RjcsMHhGRSwweEI2LDB4RjYsMHg5RSwweEJGLDB4QUUs
MHhCQSwKLSAgICAweEQ2LDB4RkUsMHhGNywweEY2LDB4RUEsMHhGRSwweEZCLDB4RUEsMHhGNyww
eEZFLDB4RDcsMHhGNiwweDc3LDB4NUYsMHg3RCwweDdCLAotICAgIDB4QjYsMHhGRSwweEQ2LDB4
RjYsMHg5NSwweEI1LDB4NTcsMHg1NSwweEI1LDB4RjYsMHgyOSwweDgzLDB4NzgsMHg3OCwweDc4
LDB4RTgsCi0gICAgMHg0NiwweDZBLDB4NDQsMHg0OSwweDVGLDB4RkUsMHhEQywweERDLDB4QTUs
MHg1MSwweDAyLDB4NDEsMHhERiwweEZDLDB4QTIsMHhDOCwKLSAgICAweDg0LDB4NTEsMHgyMyww
eDQxLDB4NTUsMHg1NSwweERGLDB4ODAsMHg4NCwweDUxLDB4MDMsMHgzOSwweEY3LDB4RkQsMHhB
RiwweDAyLAotICAgIDB4ODUsMHg0OSwweDAzLDB4NDEsMHhGQSwweDdCLDB4NkEsMHhGOCwweDQ0
LDB4NDEsMHhFMiwweDM4LDB4OEEsMHhBQiwweEZCLDB4REYsCi0gICAgMHgyMywweDQxLDB4QzIs
MHgzOCwweEVDLDB4QUUsMHgyOSwweDI5LDB4NDQsMHg0OSwweEUyLDB4MzgsMHhGRCwweEJGLDB4
QkUsMHgzQiwKLSAgICAweEU1LDB4NjksMHgyMywweDQ5LDB4MkYsMHhCRCwweEJGLDB4MkIsMHg2
NywweDdBLDB4RTUsMHg2OSwweEFCLDB4OEIsMHgyRCwweEFCLAotICAgIDB4NDcsMHg3MiwweEU0
LDB4NjksMHg2RSwweDdFLDB4N0UsMHhFMCwweEU1LDB4NjksMHg0NCwweDUxLDB4RjgsMHhGOCww
eDc4LDB4NzgsCi0gICAgMHg2NCwweDUxLDB4MDQsMHg0MSwweEY4LDB4REUsMHhFQSwweEUyLDB4
NDQsMHg0OSwweEUzLDB4MzgsMHg3QSwweERDLDB4RjIsMHg2OCwKLSAgICAweDAzLDB4MzksMHhD
MiwweDMwLDB4QUIsMHhBOCwweEY4LDB4NTcsMHgwMywweDM5LDB4QTEsMHgzMCwweDY4LDB4RUEs
MHhFRiwweDgzLAotICAgIDB4RTIsMHgzMCwweDgxLDB4MjgsMHhFRiwweEJFLDB4RkEsMHg3OCww
eEMyLDB4MzAsMHg4MSwweDI4LDB4QjcsMHhGQSwweDdBLDB4NzUsCi0gICAgMHhDMiwweDMwLDB4
ODEsMHgyOCwweDJCLDB4M0UsMHhCNSwweEU1LDB4NDQsMHg0OSwweEEyLDB4MzAsMHhCRiwweEFG
LDB4QkYsMHgyRCwKLSAgICAweDg0LDB4NTksMHgwMywweDQxLDB4QUYsMHgyNywweDM1LDB4Qjcs
MHhBOSwweDgyLDB4ODUsMHg1OSwweDNELDB4M0YsMHgyRiwweDI5LAotICAgIDB4RTksMHg4Miww
eDY3LDB4N0EsMHg3NSwweDdGLDB4QUEsMHgwMiwweDA5LDB4OEIsMHg2NywweDcyLDB4MEYsMHhB
RiwweDlGLDB4NTcsCi0gICAgMHgwQSwweDkzLDB4ODcsMHg3QSwweEMwLDB4RUEsMHhFMywweEQ1
LDB4QzgsMHg4MiwweDY3LDB4NzIsMHgyQiwweDFGLDB4MkUsMHhCMywKLSAgICAweEU5LDB4ODIs
MHg4OCwweDgyLDB4OUUsMHhGRSwweDhFLDB4OEIsMHhFOSwweDgyLDB4ODcsMHg3QSwweDNBLDB4
RUEsMHg2OCwweDcwLAotICAgIDB4RTksMHg4QSwweEM1LDB4NjEsMHhBOCwweEFBLDB4RkUsMHg1
RiwweDQ3LDB4NzIsMHhBNSwweDU5LDB4NjgsMHg1OCwweDVGLDB4NTcsCi0gICAgMHg2NywweDcy
LDB4QTUsMHg2MSwweDNELDB4MjUsMHgyRCwweDBELDB4MDgsMHg4QiwweDg2LDB4N0EsMHhCRCww
eEFELDB4MkEsMHhBOSwKLSAgICAweEU4LDB4ODIsMHg2NywweDdBLDB4RkUsMHhFQSwweDZBLDB4
RTgsMHhDOCwweDgyLDB4MjcsMHg3MiwweDJGLDB4QjcsMHhBRiwweDJFLAotICAgIDB4MkUsMHhB
NCwweEM5LDB4ODIsMHgzRiwweDk1LDB4RDUsMHg1NSwweDc2LDB4RUUsMHgwQSwweDhCLDB4MDIs
MHgyRiwweEFELDB4RjUsCi0gICAgMHgzOCwweEZGLDB4MTQsMHhFNiwweDJBLDB4OEEsMHgwQiww
eDJELDB4MzksMHhGRiwweDE4LDB4RkYsMHg4OSwweDJCLDB4MkEsMHhBMiwKLSAgICAweDM5LDB4
RkYsMHgzOCwweEZGLDB4QTIsMHhBQSwweEE4LDB4QUEsMHgzOSwweEZGLDB4MTgsMHhGRiwweEFB
LDB4QUMsMHhCQSwweEZDLAotICAgIDB4MzgsMHhGRiwweDE4LDB4RkYsMHg3QSwweDdBLDB4RUUs
MHhGQSwweDE4LDB4RkYsMHg3NSwweEVFLDB4NjgsMHg3OCwweDdDLDB4NUMsCi0gICAgMHg3Niww
eEVFLDB4NTUsMHhFNiwweDc2LDB4NUYsMHgyRSwweEFFLDB4NzYsMHhFRSwweDE0LDB4REUsMHhG
MiwweEZBLDB4RkEsMHhERSwKLSAgICAweEQ3LDB4RjYsMHg1NSwweEU2LDB4MkQsMHgyRCwweDJC
LDB4MDksMHhGOCwweEZFLDB4MTgsMHhGNywweEVDLDB4QjgsMHhBQywweEVBLAotICAgIDB4MTgs
MHhGRiwweEY4LDB4RjYsMHgyRiwweDNELDB4MDUsMHgyOSwweDM5LDB4RkYsMHgxOCwweEZGLDB4
OUYsMHhGRiwweDVELDB4REQsCi0gICAgMHgxOCwweEZGLDB4MzksMHhGNywweDJBLDB4ODIsMHgy
MiwweDAyLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhFQSwweEFFLDB4QUEsMHhBMiwKLSAgICAweDE4
LDB4RkYsMHhGOCwweEY2LDB4RDUsMHg3RiwweDdBLDB4RUYsMHhGOCwweEZFLDB4MTgsMHhGNyww
eEE4LDB4QTgsMHhBQSwweDgyLAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGNywweDdELDB4
NUYsMHg3RiwweDE5LDB4RkYsMHhGNywweEY2LDB4N0YsMHg1RiwweDc1LDB4NzUsCi0gICAgMHhG
OCwweEZFLDB4MTgsMHhGNywweEFBLDB4RUEsMHg4QSwweDJBLDB4MTgsMHhGRiwweEQ3LDB4RjYs
MHhFQSwweDdBLDB4RkIsMHg3RSwKLSAgICAweDM4LDB4RkYsMHhENywweEY2LDB4NzcsMHhGRCww
eERELDB4RkQsMHhGNywweEY2LDB4RDcsMHhGNiwweDNBLDB4QkEsMHhFQSwweEUyLAotICAgIDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHg3RSwweEQ2LDB4RDUsMHhERCwweDE4LDB4RkYsMHhENywweEY2
LDB4QkQsMHhBRiwweEFGLDB4RkYsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEFBLDB4QUUs
MHhBRiwweEZGLDB4RjgsMHhGRSwweDE3LDB4RUYsMHhBQSwweDgyLDB4MjIsMHgyQSwKLSAgICAw
eDE4LDB4RkYsMHhGOCwweEY2LDB4QkQsMHgzRCwweEFGLDB4MkQsMHgxOCwweEZGLDB4RjcsMHhG
NiwweEU4LDB4NkEsMHg1MiwweDZBLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgyOCwweDBD
LDB4MEYsMHgwRSwweEY4LDB4RkUsMHgxOCwweEY3LDB4RkYsMHg3RSwweEVFLDB4QkEsCi0gICAg
MHgxOCwweEZGLDB4RjgsMHhGNiwweEZFLDB4RjYsMHhENywweERGLDB4MTgsMHhGRiwweEQ3LDB4
RjYsMHhBMiwweDdBLDB4QUEsMHhFQSwKLSAgICAweEY4LDB4RjYsMHg5NywweEVFLDB4QTgsMHg4
MCwweEE4LDB4RUEsMHhENywweEY2LDB4OTYsMHhFRSwweEFBLDB4RTgsMHhGRSwweDVBLAotICAg
IDB4QjcsMHhGNiwweDc2LDB4RUUsMHhGQSwweEZFLDB4NUYsMHhENywweDk2LDB4RUUsMHg1NSww
eEU2LDB4RkEsMHhCQywweEZBLDB4ODIsCi0gICAgMHg3NiwweEVFLDB4NTUsMHhFNiwweDAwLDB4
MjAsMHhCRSwweEQ3LDB4OTYsMHhFRSwweDU1LDB4RUUsMHg4MCwweDgwLDB4QjUsMHhGRCwKLSAg
ICAweDk2LDB4RUUsMHg1NSwweEU2LDB4N0IsMHhDMCwweEEyLDB4RkEsMHg5NiwweEVFLDB4NTUs
MHhFNiwweDU1LDB4N0YsMHhDQSwweEFCLAotICAgIDB4NTUsMHhFRSwweDM1LDB4RTYsMHhCOSww
eDdBLDB4QjgsMHgyMCwweDk2LDB4RUUsMHg1NSwweEU2LDB4QkQsMHg5NSwweDI1LDB4MkYsCi0g
ICAgMHhCNywweEY2LDB4NzYsMHhFRSwweEZCLDB4RkIsMHg3QSwweDc4LDB4OTYsMHhFRSwweDc2
LDB4RUUsMHhEQSwweDdCLDB4N0YsMHhENSwKLSAgICAweDk2LDB4RUUsMHg3NSwweEVFLDB4QTIs
MHgzRCwweDJCLDB4MDMsMHhCNywweEY2LDB4MzUsMHhFNiwweEZBLDB4RUEsMHg3MiwweDYyLAot
ICAgIDB4MTQsMHhERSwweDUxLDB4Q0QsMHg3QywweDVDLDB4NUUsMHg1RSwweEIzLDB4RDUsMHg1
MSwweENELDB4MkYsMHhBRCwweEI1LDB4QkIsCi0gICAgMHgzNSwweEVFLDB4QjMsMHhENSwweDJE
LDB4M0QsMHgzRCwweEJELDB4MzQsMHhFNiwweDE0LDB4RTYsMHhFMCwweEMwLDB4QzIsMHhFNywK
LSAgICAweDE0LDB4RTYsMHhCMiwweEQ1LDB4NzgsMHhFOCwweDc4LDB4NzAsMHgzNCwweEU2LDB4
QjMsMHhENSwweEJELDB4QTcsMHhCRCwweDJELAotICAgIDB4MzUsMHhFNiwweEQzLDB4REQsMHg3
MiwweEZFLDB4NUMsMHg1QywweEY0LDB4REQsMHhEMywweERELDB4RkIsMHgzRCwweEFELDB4RjIs
Ci0gICAgMHhGNCwweEU1LDB4RDMsMHhERCwweDYwLDB4RkEsMHg3NywweDU1LDB4QjMsMHhERCww
eDExLDB4QzUsMHg3OCwweEUwLDB4NjAsMHg3MCwKLSAgICAweEQwLDB4QkMsMHgyRCwweEE0LDB4
REUsMHhEQywweDVDLDB4NUMsMHg1MSwweENELDB4NkUsMHhBQywweDI5LDB4MkQsMHgwNSwweEJE
LAotICAgIDB4MzEsMHhDRCwweEQwLDB4QkMsMHhCOCwweEY4LDB4RTgsMHg1QSwweDMxLDB4QzUs
MHhBRiwweEI0LDB4MEEsMHhBRiwweDlGLDB4REYsCi0gICAgMHg1MSwweENELDB4MTAsMHhDNSww
eEZFLDB4QkIsMHg3NywweEY5LDB4NzIsMHhENSwweDMxLDB4QzUsMHgzNywweDM5LDB4QUUsMHhC
RiwKLSAgICAweDkyLDB4RDUsMHg1MSwweENELDB4QUIsMHhGQSwweDZBLDB4N0UsMHhEMywweERE
LDB4RjAsMHhDNCwweDAyLDB4RUEsMHhGRiwweDVGLAotICAgIDB4NzIsMHhENSwweEYwLDB4QkMs
MHhGQywweEQ2LDB4NTUsMHhENSwweDcyLDB4Q0QsMHgxMCwweEM1LDB4QkYsMHhCRiwweEE5LDB4
MkEsCi0gICAgMHhDOCwweDdBLDB4ODcsMHg3QSwweDAwLDB4ODgsMHg0MCwweDAzLDB4RTgsMHg4
MiwweEE3LDB4N0EsMHhCRiwweEIyLDB4QTksMHg4QiwKLSAgICAweEU4LDB4ODIsMHhBOCwweDdB
LDB4NzgsMHhBQywweEVCLDB4QkYsMHhFOCwweDgyLDB4QTcsMHg3QSwweDI0LDB4MDgsMHhFRiww
eEFELAotICAgIDB4RTgsMHg4MiwweEM3LDB4N0EsMHgzQiwweDZCLDB4OUUsMHgyQiwweDA5LDB4
OEIsMHhDNywweDgyLDB4QTcsMHg5RSwweERCLDB4NUYsCi0gICAgMHgwOCwweDhCLDB4QTcsMHg3
QSwweEZFLDB4RUYsMHhFNCwweEI3LDB4RTgsMHg4MiwweEE3LDB4ODIsMHhCOCwweDgwLDB4OEEs
MHhGQywKLSAgICAweEU4LDB4ODIsMHhBNywweDgyLDB4RUIsMHgyOCwweDBBLDB4MzIsMHgwOCww
eDhCLDB4QzcsMHg4MiwweERGLDB4RkYsMHhBOSwweEJGLAotICAgIDB4MDgsMHg4QiwweEE3LDB4
N0EsMHhCRiwweEJFLDB4MzYsMHhGQywweDA4LDB4OEIsMHhDNywweDgyLDB4MjksMHhFOCwweEVB
LDB4QTMsCi0gICAgMHgwOCwweDhCLDB4QzcsMHg4MiwweEEwLDB4N0EsMHhBQiwweEVCLDB4NDks
MHg5MywweEE3LDB4N0EsMHgwRSwweEFGLDB4RkUsMHhGQiwKLSAgICAweEYwLDB4QzQsMHgwOSww
eDhCLDB4MkIsMHhENSwweDU1LDB4NTUsMHgzNCwweEU2LDB4MjksMHg4QiwweDAyLDB4QUYsMHhE
NSwweDU1LAotICAgIDB4OTYsMHhGNiwweDhBLDB4OTMsMHgwMCwweDBBLDB4QUYsMHg1NSwweDk2
LDB4RjYsMHg4RSwweEI0LDB4MDAsMHgwMCwweDBBLDB4QjUsCi0gICAgMHhCNiwweEY2LDB4MTQs
MHhFNiwweDAwLDB4MDAsMHgwOCwweEFELDB4RDYsMHhGNiwweDk1LDB4RjYsMHgyMywweDIyLDB4
MjMsMHhBNSwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEY2LDB4RkEsMHhGRSwweEQ4LDB4OUUsMHhC
NiwweEZFLDB4RDYsMHhGNiwweDU3LDB4RkYsMHhERiwweEZELAotICAgIDB4RjcsMHhGRSwweEI2
LDB4RjYsMHhBQSwweEFGLDB4RkEsMHg3RiwweEQ3LDB4RjYsMHhCNiwweEY2LDB4QzAsMHg4MCww
eDBCLDB4RUIsCi0gICAgMHhGNiwweEZFLDB4QjcsMHhGNiwweEJCLDB4QUIsMHhBQiwweEVGLDB4
RDYsMHhGNiwweEFFLDB4QjQsMHg3OCwweDY4LDB4RTAsMHhBMCwKLSAgICAweDhFLDB4QjQsMHhB
NCwweDU5LDB4NTcsMHg1NiwweDVFLDB4NTgsMHhBNSwweDUxLDB4NjQsMHg0OSwweDgyLDB4OUYs
MHg5RCwweEQ3LAotICAgIDB4RTUsMHg1OSwweDg0LDB4NTEsMHhFRCwweEY5LDB4RDcsMHg1Nyww
eEU2LDB4NTksMHg4NCwweDUxLDB4NkYsMHg3RSwweDY4LDB4NjMsCi0gICAgMHhBNSwweDUxLDB4
NDQsMHg0MSwweDdBLDB4RjIsMHg1OCwweDdFLDB4NDQsMHg0MSwweDAzLDB4NDEsMHhEQSwweEI4
LDB4M0MsMHhCQywKLSAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4N0QsMHg2RSwweEU4LDB4OEYs
MHhDNSwweDYxLDB4MDMsMHg0MSwweERELDB4OTUsMHhCRiwweDJBLAotICAgIDB4NjcsMHg3QSww
eEM1LDB4NjEsMHhGNSwweDM1LDB4MjksMHgwQSwweEM4LDB4OEEsMHgyNiwweDcyLDB4RjUsMHg4
QiwweEFBLDB4MjgsCi0gICAgMHhDOSwweDhBLDB4MDYsMHg2QSwweDVCLDB4NkEsMHg3OCwweEI4
LDB4MjcsMHg3MiwweDg0LDB4NTEsMHg1RSwweDdBLDB4NzgsMHhGMCwKLSAgICAweDY0LDB4NTEs
MHgyNCwweDQ5LDB4RkEsMHhGNywweEQ0LDB4QUMsMHg2NCwweDUxLDB4RTIsMHgzOCwweEZBLDB4
N0MsMHg3QSwweEVDLAotICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHhCRSwweERDLDB4NUYsMHhG
QSwweDAzLDB4MzksMHhDMiwweDMwLDB4OEIsMHhBQiwweDg5LDB4QTksCi0gICAgMHgwMywweDM5
LDB4ODIsMHgyOCwweDZBLDB4RkEsMHhFMiwweENBLDB4QTIsMHgzMCwweDgyLDB4MjgsMHhENSww
eDU1LDB4NTcsMHg1QywKLSAgICAweEUyLDB4MzAsMHg4MiwweDI4LDB4RkYsMHhGNSwweEI1LDB4
M0QsMHg0MywweDQxLDB4QTEsMHgzMCwweDI5LDB4QUQsMHhBRiwweEFGLAotICAgIDB4QTUsMHg1
OSwweDIzLDB4NDEsMHhCNSwweEFELDB4M0QsMHgwRCwweEE5LDB4ODIsMHhBNSwweDU5LDB4MkQs
MHgyRCwweEFCLDB4QUIsCi0gICAgMHhDOSwweDgyLDB4MDYsMHg2QSwweDAwLDB4QTgsMHhGRSww
eDdCLDB4QTgsMHg3QSwweEU0LDB4NjEsMHhGOCwweEZBLDB4N0YsMHg1NSwKLSAgICAweDY3LDB4
N0EsMHhDNCwweDYxLDB4MEEsMHhCRiwweEY1LDB4RkYsMHg4OCwweDdBLDB4RTUsMHg2OSwweDAw
LDB4MDIsMHgwQiwweEJELAotICAgIDB4QzksMHg4MiwweDQ2LDB4NzIsMHg4MiwweDJBLDB4QUYs
MHg5NywweEU5LDB4ODIsMHg4NCwweDUxLDB4ODAsMHhBQSwweEZBLDB4N0UsCi0gICAgMHgwNiww
eDZBLDB4MDIsMHg0OSwweEE4LDB4RTgsMHhGRiwweDU3LDB4RTYsMHg2MSwweDQzLDB4NTEsMHhB
QSwweEZELDB4QkQsMHgzNSwKLSAgICAweDQ3LDB4NzIsMHhBNCwweDU5LDB4MEQsMHgyRCwweDJG
LDB4MEEsMHhBOCwweDgyLDB4NDYsMHg3MiwweDAzLDB4QjUsMHhFRCwweEFELAotICAgIDB4Qzks
MHg4QSwweEE4LDB4N0EsMHhFQiwweEVGLDB4QTksMHg4NywweEM5LDB4ODIsMHg2NywweDdBLDB4
QjcsMHhGQywweEZFLDB4NUUsCi0gICAgMHhBOCwweDgyLDB4NDYsMHg3MiwweDAyLDB4QUEsMHgy
QiwweDg5LDB4OEIsMHg5QiwweDY4LDB4N0EsMHgyRiwweDJELDB4QUQsMHhCRCwKLSAgICAweEQ2
LDB4RjYsMHg4QSwweDkzLDB4MEIsMHgwRiwweDJELDB4OTUsMHgzOSwweEZGLDB4QjYsMHhGNiww
eDAwLDB4MjAsMHg4MiwweDg5LAotICAgIDB4MzksMHhGRiwweDE4LDB4RkYsMHgyMCwweDBBLDB4
OEIsMHg4QiwweDM4LDB4RkYsMHgxOCwweEZGLDB4REUsMHg5RSwweEJFLDB4QkUsCi0gICAgMHgz
OCwweEZGLDB4RjcsMHhGNiwweEEwLDB4RUEsMHg2QSwweDdBLDB4QjYsMHhGNiwweDU1LDB4RTYs
MHhGMCwweEY4LDB4NzgsMHhGQSwKLSAgICAweDU1LDB4RUUsMHg3NSwweEU2LDB4MEEsMHgwMiww
eEEwLDB4QTAsMHg1NSwweEVFLDB4MzUsMHhFNiwweEQ3LDB4REUsMHhBQywweEI4LAotICAgIDB4
RjgsMHhGRSwweDc2LDB4RUUsMHgyRCwweDJELDB4MjksMHgwRiwweDE4LDB4RkYsMHhENywweEY2
LDB4RkEsMHhGQSwweEZBLDB4RTgsCi0gICAgMHgzOCwweEZGLDB4RjgsMHhGNiwweEI3LDB4QjUs
MHhCNSwweEFELDB4MTgsMHhGRiwweDM4LDB4RjcsMHgyMCwweDBBLDB4MkEsMHgyQSwKLSAgICAw
eDE4LDB4RkYsMHhGOCwweEY2LDB4MjgsMHhBOCwweEY4LDB4QkEsMHgxOCwweEZGLDB4RjgsMHhG
NiwweEVBLDB4QkEsMHhBRSwweEFCLAotICAgIDB4RjgsMHhGRSwweDE4LDB4RjcsMHhBQSwweEJB
LDB4RUIsMHhCQiwweEY4LDB4RkUsMHgxOCwweEY3LDB4ODIsMHhBQSwweEE4LDB4QUMsCi0gICAg
MHgxOCwweEZGLDB4RjgsMHhGNiwweDdGLDB4NUYsMHhEQSwweDVGLDB4RDgsMHhGRSwweEY3LDB4
RjYsMHhGNywweEY3LDB4N0QsMHhERiwKLSAgICAweEQ3LDB4RkUsMHhGOCwweEY2LDB4RjcsMHhG
RiwweERELDB4NzUsMHhEOCwweEZFLDB4RjcsMHhGNiwweEZELDB4RkQsMHg3NywweDU1LAotICAg
IDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBRiwweEJCLDB4RkYsMHhERiwweEQ4LDB4RkUsMHhGNyww
eEY2LDB4QkQsMHhGNSwweDc3LDB4NUYsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweERELDB4
NUQsMHg3RiwweEZBLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgyQiwweDI1LDB4QjcsMHgzNywKLSAg
ICAweEY4LDB4RkUsMHhGNywweEY2LDB4RkYsMHhGRiwweEZCLDB4QkYsMHgxOCwweEZGLDB4Rjgs
MHhGNiwweDZELDB4REYsMHhGNSwweEZGLAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBRCww
eDBCLDB4OEYsMHhBRiwweDE4LDB4RkYsMHhGOCwweEY2LDB4NjAsMHg3QSwweEVFLDB4RUIsCi0g
ICAgMHhEOCwweEZFLDB4RjcsMHhGNiwweDVELDB4NzUsMHhGNSwweEZGLDB4MTgsMHhGRiwweEQ3
LDB4RjYsMHhBMiwweEFBLDB4RjcsMHhCNywKLSAgICAweEY3LDB4RjYsMHhEOCwweEY2LDB4QTAs
MHhBMCwweEUyLDB4RUEsMHhGOCwweEY2LDB4RDcsMHhGNiwweDgyLDB4N0IsMHg1RiwweDU3LAot
ICAgIDB4RjgsMHhGNiwweEI3LDB4RjYsMHg3QSwweEZBLDB4NzcsMHg1RiwweEI3LDB4RjYsMHg3
NiwweEVFLDB4RjgsMHhCOCwweEVDLDB4RkUsCi0gICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweEQ5
LDB4RDcsMHg1RiwweEQ1LDB4OTYsMHhFRSwweDc2LDB4RUUsMHg2OCwweDdBLDB4NTcsMHg1NSwK
LSAgICAweDc1LDB4RUUsMHgzNSwweEU2LDB4RTIsMHhCQywweEFFLDB4QUUsMHg3NSwweEVFLDB4
MzUsMHhFNiwweEFBLDB4QkIsMHhCNiwweEZGLAotICAgIDB4NzUsMHhFRSwweDU1LDB4RTYsMHg4
QSwweEFBLDB4RkYsMHg1NiwweDc2LDB4RUUsMHgzNSwweEU2LDB4MkEsMHhFRSwweDlGLDB4RDcs
Ci0gICAgMHg3NiwweEVFLDB4NTUsMHhFNiwweDk1LDB4QkQsMHgwRCwweEEzLDB4QjcsMHhGNiww
eDc2LDB4RUUsMHhBNSwweDJCLDB4QTksMHhBQiwKLSAgICAweEI3LDB4RjYsMHg3NiwweEVFLDB4
RkEsMHhGOCwweEVBLDB4NUUsMHhCNiwweEY2LDB4NTUsMHhFRSwweEZELDB4QUYsMHgyQiwweDJB
LAotICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHhGRCwweEZFLDB4OEEsMHhBNiwweEI2LDB4RjYs
MHgxNCwweERFLDB4RTIsMHhFMCwweEVBLDB4N0EsCi0gICAgMHhGNCwweERELDB4MzEsMHhDRCww
eEY4LDB4RjgsMHg3OCwweDVFLDB4QjMsMHhERCwweDMxLDB4Q0QsMHgyQiwweDJCLDB4QUYsMHhG
NSwKLSAgICAweDE1LDB4RTYsMHg5MiwweEQ1LDB4MkYsMHhBQiwweEFELDB4QkQsMHgzNSwweEU2
LDB4RDMsMHhERCwweDgyLDB4OEEsMHhFRSwweDdFLAotICAgIDB4MTQsMHhFNiwweEIzLDB4RDUs
MHg3MCwweEQ4LDB4RUEsMHhFQSwweDE0LDB4RTYsMHhCMywweEQ1LDB4MkYsMHgyRCwweDJGLDB4
MEYsCi0gICAgMHgxNCwweEU2LDB4RDMsMHhERCwweEY4LDB4N0MsMHhEQSwweERBLDB4RjQsMHhE
RCwweDkyLDB4RDUsMHg4MCwweDgwLDB4QzIsMHg2OCwKLSAgICAweEQzLDB4REQsMHgzMSwweEM1
LDB4MDAsMHg4MCwweEFBLDB4NTUsMHg5MiwweEQ1LDB4RDAsMHhCQywweDYwLDB4RjAsMHhGRSww
eEZGLAotICAgIDB4RUYsMHhCQywweDBELDB4QTQsMHg1QSwweDdFLDB4RkMsMHhGOCwweEYwLDB4
QzQsMHg0RCwweEFDLDB4MkQsMHgyRCwweDI1LDB4MzUsCi0gICAgMHgzMSwweENELDB4QjAsMHhC
NCwweEZBLDB4RjAsMHhGOCwweDdBLDB4Q0YsMHhCQywweDhGLDB4QjQsMHgzNiwweDBFLDB4MkYs
MHgxNywKLSAgICAweDMxLDB4QzUsMHhGMCwweEM0LDB4MjMsMHg4OSwweDA5LDB4MDUsMHg3Miww
eENELDB4MzEsMHhDRCwweEFELDB4MjksMHgzRCwweDNCLAotICAgIDB4NzEsMHhDRCwweDMxLDB4
Q0QsMHhBQSwweEU4LDB4RkEsMHg1NiwweDUxLDB4Q0QsMHhGMCwweEJDLDB4NTgsMHg1NiwweERE
LDB4RjcsCi0gICAgMHg1MiwweENELDB4RDAsMHhCQywweDM1LDB4MkYsMHhCQSwweEFBLDB4OTIs
MHhENSwweDMxLDB4QzUsMHhCRiwweEFGLDB4OEIsMHhBRCwKLSAgICAweEU4LDB4ODIsMHg4Niww
eDdBLDB4ODksMHg4QSwweEU4LDB4QTIsMHgwOCwweDgzLDB4ODcsMHg3QSwweEMzLDB4NkUsMHg2
QiwweEVBLAotICAgIDB4RTgsMHg4MiwweDg3LDB4N0EsMHg2RSwweENGLDB4RUYsMHhGRSwweEU4
LDB4ODIsMHg4NiwweDdBLDB4MkQsMHhCRCwweEFCLDB4QkEsCi0gICAgMHhFOCwweDgyLDB4ODcs
MHg3QSwweDAyLDB4OTAsMHgwMCwweDhCLDB4RTcsMHg4MiwweEE3LDB4N0EsMHhCRiwweEJDLDB4
RkUsMHhGQSwKLSAgICAweEM4LDB4ODIsMHhBOCwweDdBLDB4MEUsMHg0MCwweEQyLDB4MDUsMHhF
OCwweDgyLDB4QTcsMHg3QSwweEQ1LDB4QUIsMHgyQSwweDI4LAotICAgIDB4RTgsMHg4MiwweEE2
LDB4ODIsMHgwRiwweEMwLDB4RTAsMHhGMCwweDA4LDB4OEIsMHhBNywweDdBLDB4MjgsMHg1RSww
eEZBLDB4QkEsCi0gICAgMHgwOSwweDhCLDB4QzcsMHg4MiwweDVFLDB4Q0IsMHg3OSwweDVBLDB4
MDgsMHg4QiwweEE3LDB4N0EsMHhBQiwweDNGLDB4RkUsMHhCRCwKLSAgICAweDA4LDB4ODMsMHhB
NywweDgyLDB4MkEsMHhCRSwweEZFLDB4OUYsMHhFOCwweDgyLDB4QzgsMHg4MiwweDIwLDB4MjIs
MHg2QiwweERGLAotICAgIDB4MDgsMHg4QiwweEM4LDB4ODIsMHg4QiwweEI1LDB4QTksMHgyRCww
eDA4LDB4OEIsMHhDOCwweDgyLDB4MjgsMHgyQSwweDNBLDB4NUYsCi0gICAgMHg0OSwweDhCLDB4
QzgsMHg4MiwweEE4LDB4RkYsMHhEQSwweERGLDB4MEMsMHg5QywweEM3LDB4ODIsMHgyQiwweEZG
LDB4RjUsMHg1RCwKLSAgICAweEQzLDB4REQsMHgyOSwweDhCLDB4MEEsMHhGNSwweDU1LDB4NTUs
MHg3NSwweEVFLDB4MjksMHg4QiwweDAwLDB4MEIsMHhGRCwweDU1LAotICAgIDB4QjYsMHhGNiww
eENCLDB4QTMsMHgwMCwweDAwLDB4QUIsMHhGNSwweEQ2LDB4RjYsMHg5MiwweEQ1LDB4MDAsMHgw
OCwweDhBLDB4QkQsCi0gICAgMHhENiwweEY2LDB4NzUsMHhGNiwweDA4LDB4OEEsMHhBQiwweEJE
LDB4RDcsMHhGRSwweDk2LDB4RjYsMHhBQSwweEFFLDB4OUUsMHhGQiwKLSAgICAweEQ3LDB4RkUs
MHhCNiwweEY2LDB4RUEsMHhGRiwweEVCLDB4RUIsMHhCNywweEY2LDB4MzQsMHhFNiwweDYwLDB4
QzAsMHhBMCwweDgwLAotICAgIDB4NTUsMHhFRSwweDg3LDB4NzIsMHg1RSwweDc4LDB4NzgsMHhF
MCwweDY2LDB4NkEsMHg0MywweDQ5LDB4RjcsMHhENSwweDU2LDB4NUMsCi0gICAgMHhBNSwweDU5
LDB4NDMsMHg0OSwweEEwLDB4ODAsMHhFQSwweEQ1LDB4QzUsMHg1MSwweDY0LDB4NDksMHg4QSww
eEFBLDB4RkUsMHg3NSwKLSAgICAweDg1LDB4NTEsMHg2NCwweDQ5LDB4N0EsMHg2OCwweEQ1LDB4
RUYsMHg4NCwweDUxLDB4MjMsMHg0MSwweDc3LDB4N0YsMHhGRSwweDhFLAotICAgIDB4QzUsMHg1
OSwweDIzLDB4NDEsMHhGRCwweDJGLDB4QUIsMHgyQSwweEE4LDB4ODIsMHg4NCwweDUxLDB4RjUs
MHhCRCwweEFGLDB4MkIsCi0gICAgMHgwOSwweDkzLDB4NDYsMHg3MiwweEJELDB4MkQsMHgwQiww
eDBBLDB4MDksMHg5MywweEE4LDB4OEEsMHhENywweDZFLDB4RTIsMHhFMCwKLSAgICAweEM5LDB4
OEEsMHgyNiwweDcyLDB4RjgsMHhGRSwweDU4LDB4RDgsMHg0NywweDdBLDB4QTQsMHg2MSwweDVD
LDB4N0EsMHg3QywweEIwLAotICAgIDB4QzUsMHg2OSwweDQ0LDB4NDksMHhERiwweDdGLDB4QkEs
MHhBMCwweEE1LDB4NTksMHg0NCwweDQ5LDB4NTUsMHhGRiwweEJGLDB4MkEsCi0gICAgMHhFNiww
eDY5LDB4RTIsMHg0MCwweDVGLDB4RkUsMHhBQSwweDJBLDB4QzUsMHg1OSwweDAzLDB4NDEsMHg1
NSwweDU1LDB4NUUsMHhFOCwKLSAgICAweDAzLDB4NDEsMHhDMiwweDMwLDB4RTgsMHg3QSwweEZG
LDB4MkUsMHg0NCwweDQxLDB4QTIsMHgzMCwweDU1LDB4RjcsMHhBQSwweDBBLAotICAgIDB4ODUs
MHg1MSwweDgxLDB4MzAsMHhGRCwweEJGLDB4MkYsMHgwQSwweDY0LDB4NDksMHgwMywweDQxLDB4
QkQsMHgyRSwweEFBLDB4MDIsCi0gICAgMHhDNSwweDYxLDB4NDQsMHg0OSwweDM3LDB4QUYsMHgy
QSwweEFCLDB4MjcsMHg2QSwweDg0LDB4NTEsMHg4MiwweEVCLDB4RkYsMHg1NywKLSAgICAweDA2
LDB4NkEsMHhBNCwweDU5LDB4ODAsMHhFRiwweEI1LDB4QjUsMHhFNSwweDYxLDB4QTQsMHg2MSww
eERFLDB4N0IsMHhFQSwweEE4LAotICAgIDB4RTUsMHg2MSwweEE0LDB4NjEsMHgyRSwweDM5LDB4
MjksMHgwOSwweDI2LDB4NkEsMHhDNSwweDYxLDB4OTcsMHg5RiwweDJCLDB4MkYsCi0gICAgMHg4
NywweDdBLDB4MDYsMHg2MiwweEFCLDB4N0IsMHg4MywweDhBLDB4NjcsMHg3MiwweDIzLDB4NDks
MHg3OCwweDc4LDB4NUUsMHg1RSwKLSAgICAweDYzLDB4NTEsMHhFMiwweDQwLDB4RjcsMHhGNyww
eEJELDB4MjcsMHgyNiwweDZBLDB4MDIsMHg0OSwweDJELDB4MkYsMHgyQiwweDBCLAotICAgIDB4
NjcsMHg3MiwweDI2LDB4NzIsMHhGRiwweDUyLDB4RkEsMHhERSwweDg4LDB4N0EsMHhFNSwweDY5
LDB4QTAsMHg4QiwweEY3LDB4RkYsCi0gICAgMHhDOSwweDhBLDB4MDUsMHg2QSwweDBBLDB4MkIs
MHgzRCwweDI1LDB4NEEsMHg5QiwweDQ2LDB4NzIsMHg1NywweDVFLDB4RkEsMHhFMiwKLSAgICAw
eDg4LDB4N0EsMHgwNSwweDZBLDB4MEYsMHhCNSwweEZELDB4QkEsMHgyQSwweDhCLDB4NjcsMHg3
QSwweDJELDB4MzksMHhCRCwweDNELAotICAgIDB4OEUsMHhCQywweDJBLDB4OEIsMHgzRCwweEJE
LDB4RDUsMHg1NSwweDE4LDB4RkYsMHg2RSwweEI0LDB4MDIsMHgwQiwweDA5LDB4MkQsCi0gICAg
MHgzOCwweEZGLDB4MTgsMHhGRiwweEVELDB4RUQsMHg3RCwweEQ1LDB4MzgsMHhGRiwweDE4LDB4
RkYsMHg1RiwweERGLDB4NTUsMHg1NSwKLSAgICAweDE4LDB4RkYsMHg5NiwweEY2LDB4RTAsMHhF
MCwweDY4LDB4NzgsMHg5NiwweEY2LDB4NTUsMHhFRSwweDVDLDB4REUsMHg3NywweEQ3LAotICAg
IDB4NzUsMHhFRSwweDU1LDB4RUUsMHhGNSwweEZELDB4N0IsMHg3RCwweDc1LDB4RUUsMHgzNSww
eEU2LDB4QjcsMHg5NywweDk3LDB4MkYsCi0gICAgMHhGOCwweEZFLDB4OTYsMHhFRSwweDJELDB4
MkQsMHgwRCwweDJELDB4RjgsMHhGRSwweDE4LDB4RjcsMHhCOCwweEFBLDB4MkUsMHhBRSwKLSAg
ICAweDE4LDB4RkYsMHhGOCwweEY2LDB4MjksMHgwRSwweDBELDB4QUYsMHgxOCwweEZGLDB4Mzgs
MHhGNywweDI4LDB4MjgsMHg4MCwweDAyLAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBQSww
eEVFLDB4QkEsMHhCRSwweDE4LDB4RkYsMHhGOCwweEY2LDB4QUEsMHhBQSwweEU4LDB4REUsCi0g
ICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDdBLDB4N0UsMHhERiwweEVGLDB4RjcsMHhGRSwweEY4
LDB4RjYsMHhCRiwweEZGLDB4N0YsMHhGRiwKLSAgICAweEQ3LDB4RkUsMHhGOCwweEY2LDB4RjUs
MHhGNywweEQ3LDB4NzcsMHgxOCwweEZGLDB4RDcsMHhGNiwweEJGLDB4QUIsMHhFQiwweEFCLAot
ICAgIDB4RDcsMHhGRSwweEY4LDB4RjYsMHg3NSwweEZELDB4RTUsMHhFNywweEQ3LDB4RkUsMHhG
NywweEY2LDB4NTcsMHhERCwweEY3LDB4RkQsCi0gICAgMHhGNywweEY2LDB4QjcsMHhGNiwweDJF
LDB4MjgsMHgyQSwweEE4LDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBRSwweEVCLDB4RkIsMHhFRiwK
LSAgICAweEQ3LDB4RkUsMHhGNywweEY2LDB4NzUsMHhGRCwweEZGLDB4RkQsMHhGNywweEY2LDB4
RDcsMHhGNiwweDdFLDB4M0UsMHg4QSwweDBBLAotICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHg1
NSwweDc1LDB4N0YsMHhGRiwweDE4LDB4RkYsMHhGOCwweEY2LDB4RUYsMHgyRiwweEI1LDB4Qjcs
Ci0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDZCLDB4NzgsMHhGQSwweEZFLDB4MTcsMHhGRiww
eEY4LDB4RjYsMHg2QiwweEZGLDB4RkQsMHg3NywKLSAgICAweEY4LDB4RjYsMHhENywweEY2LDB4
QTgsMHhCQSwweEE4LDB4Q0UsMHhGOCwweEY2LDB4RDcsMHhGNiwweDhBLDB4QTgsMHhBQSwweEJF
LAotICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhDOCwweEEyLDB4NkEsMHg3QSwweDE4LDB4Rjcs
MHhCNywweEY2LDB4N0YsMHg3RiwweERFLDB4N0YsCi0gICAgMHhENywweEY2LDB4OTYsMHhFRSww
eDdBLDB4NUYsMHg1RiwweDdFLDB4OTYsMHhFRSwweDc2LDB4RUUsMHhEQSwweDU4LDB4N0YsMHhG
OSwKLSAgICAweDk2LDB4RUUsMHg1NSwweEVFLDB4RkUsMHhFQSwweEFFLDB4RUEsMHg3NiwweEVF
LDB4NTUsMHhFNiwweDIwLDB4ODAsMHgyMCwweEU4LAotICAgIDB4NzUsMHhFRSwweDM0LDB4RTYs
MHhGOCwweEZBLDB4QUEsMHhFQSwweDc1LDB4RUUsMHgzNSwweEU2LDB4QkYsMHhGRSwweEZFLDB4
RUEsCi0gICAgMHg3NSwweEVFLDB4MzQsMHhFNiwweEZFLDB4QTgsMHgwMiwweDJBLDB4NzUsMHhF
RSwweDM0LDB4RTYsMHg5RiwweEJBLDB4QTIsMHg4MCwKLSAgICAweDc2LDB4RUUsMHg1NSwweEU2
LDB4QUYsMHgwQywweEI3LDB4MjUsMHg5NiwweEVFLDB4NzYsMHhFRSwweDIyLDB4MjYsMHgyRSww
eEJCLAotICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHhGOCwweEVBLDB4RUEsMHhBQSwweDk2LDB4
RUUsMHg1NSwweEVFLDB4MEEsMHgwMiwweDI5LDB4MkYsCi0gICAgMHhCNiwweEY2LDB4OTYsMHhF
RSwweEZCLDB4N0YsMHg3RCwweDU1LDB4OTYsMHhFRSwweDE0LDB4REUsMHg2MCwweDcwLDB4RTAs
MHhFMCwKLSAgICAweEQzLDB4REQsMHgzMCwweEM1LDB4NzYsMHhGQywweEU4LDB4RjAsMHg3MSww
eENELDB4MzAsMHhDRCwweDA5LDB4RTIsMHhBQSwweERDLAotICAgIDB4RjMsMHhERCwweDUxLDB4
Q0QsMHgyRiwweEE5LDB4MkQsMHhCOSwweEY0LDB4REQsMHhCMywweEQ1LDB4ODAsMHhFMCwweDgw
LDB4MDIsCi0gICAgMHhGNCwweERELDB4OTIsMHhENSwweDgzLDB4QUEsMHhGQSwweDYwLDB4MTQs
MHhFNiwweEIzLDB4RDUsMHgyRCwweDBGLDB4QTksMHhCNSwKLSAgICAweDE0LDB4RTYsMHgxMCww
eEM1LDB4MjAsMHhBMCwweEZBLDB4NUUsMHhCMywweEQ1LDB4RjAsMHhDNCwweDgwLDB4NzgsMHg1
NywweDc3LAotICAgIDB4MzAsMHhDNSwweEYwLDB4QkMsMHg1OCwweEZGLDB4NTUsMHg1NSwweDMw
LDB4QzUsMHhEMCwweEJDLDB4RkUsMHgzNiwweDlGLDB4REYsCi0gICAgMHgzMSwweENELDB4MkQs
MHhBQywweDdBLDB4NzgsMHhFMCwweDgwLDB4Q0YsMHhCQywweEVDLDB4QTMsMHgyQiwweDJELDB4
M0YsMHgyRiwKLSAgICAweDMxLDB4Q0QsMHhCMCwweEJDLDB4RkEsMHg0MCwweEEyLDB4Q0IsMHhD
RiwweEJDLDB4NEUsMHhBQywweDNFLDB4MzcsMHg5NywweEJGLAotICAgIDB4NTEsMHhDRCwweEYw
LDB4QzQsMHhBNSwweDI5LDB4ODksMHgyOSwweDUxLDB4Q0QsMHgxMSwweEM1LDB4MEEsMHgyMiww
eEE5LDB4Q0UsCi0gICAgMHg1MiwweENELDB4RDAsMHhCQywweEU4LDB4RTgsMHg3QywweERGLDB4
NTIsMHhDRCwweENGLDB4QkMsMHhGNywweDlGLDB4QUQsMHg4QiwKLSAgICAweDcyLDB4Q0QsMHgx
MSwweEM1LDB4QjcsMHhCRCwweDlGLDB4M0YsMHg3MiwweENELDB4NTEsMHhDRCwweDI5LDB4M0Qs
MHhCNSwweEJELAotICAgIDB4QzgsMHg4MiwweDI1LDB4NkEsMHgyMCwweEFBLDB4QUYsMHhENyww
eEU4LDB4ODIsMHg2NiwweDcyLDB4QTIsMHg4MywweDhBLDB4RkQsCi0gICAgMHhDNywweDgyLDB4
ODcsMHg3QSwweEI4LDB4MkEsMHgyQSwweDJFLDB4MDcsMHg4MywweEM4LDB4ODIsMHg1RiwweDdC
LDB4RkYsMHg3RSwKLSAgICAweEU4LDB4ODIsMHhBNywweDdBLDB4QUIsMHg4QiwweDg5LDB4MjMs
MHgwOCwweDhCLDB4QTcsMHg3QSwweEY3LDB4QjcsMHhCRiwweEJBLAotICAgIDB4MDksMHg4Qiww
eEE3LDB4N0EsMHg4RiwweEM2LDB4REUsMHg1RiwweEU4LDB4ODIsMHhBNywweDgyLDB4RkIsMHg3
NSwweEFCLDB4QTMsCi0gICAgMHhFOCwweDgyLDB4ODcsMHg3QSwweEUwLDB4MkEsMHgwQSwweDI4
LDB4MDgsMHg4QiwweEE3LDB4N0EsMHhFRiwweEJGLDB4RkEsMHg1QywKLSAgICAweEU4LDB4ODIs
MHg4NiwweDdBLDB4MjAsMHhBOCwweDgwLDB4QzEsMHhFOCwweDgyLDB4QTcsMHg3QSwweERFLDB4
QUEsMHgzQSwweEU4LAotICAgIDB4MDksMHg4QiwweEE4LDB4N0EsMHg3RiwweENGLDB4QUIsMHhB
RiwweDA4LDB4OEIsMHhDOCwweDgyLDB4QkYsMHhCMywweEUzLDB4NkEsCi0gICAgMHgwOCwweDhC
LDB4QTcsMHg4MiwweEFGLDB4RTIsMHhBQSwweERBLDB4MDksMHg4QiwweEM4LDB4ODIsMHhENSww
eEQ3LDB4MkIsMHhDNSwKLSAgICAweEM4LDB4OEEsMHhFOCwweDgyLDB4RkQsMHg1OSwweDVGLDB4
RjcsMHgwOCwweDhCLDB4QzgsMHg4MiwweEJCLDB4QUEsMHhGQSwweDdBLAotICAgIDB4RTgsMHg4
MiwweEM4LDB4ODIsMHhEOCwweEI4LDB4QUEsMHg3QiwweDA5LDB4OEIsMHhDOCwweDgyLDB4MjIs
MHg4MywweDBBLDB4RjksCi0gICAgMHg4QSwweDkzLDB4RTgsMHg4MiwweDJGLDB4RkQsMHg1RCww
eDU1LDB4MTAsMHhDRCwweDA5LDB4OEIsMHgyQiwweEY1LDB4NTUsMHg1NSwKLSAgICAweDU0LDB4
RUUsMHgwOSwweDhCLDB4MDIsMHhBRiwweEQ1LDB4NTUsMHg5NSwweEY2LDB4NEEsMHg5MywweDAw
LDB4MDIsMHhBRiwweEQ1LAotICAgIDB4QjYsMHhGNiwweEFFLDB4QkMsMHgwMCwweDAwLDB4MEEs
MHhCRCwweEI3LDB4RjYsMHgxNCwweEU2LDB4MDAsMHgwMCwweDAwLDB4OEQsCi0gICAgMHg5Niww
eEY2LDB4RjAsMHhCQywweDcwLDB4RTAsMHhDMCwweDgwLDB4RDAsMHhCQywweDQ0LDB4NDksMHg1
RSwweDVFLDB4NTgsMHg3OCwKLSAgICAweDQzLDB4NDksMHgwMywweDQxLDB4QTIsMHhCOCwweEVF
LDB4RkYsMHg2MywweDQ5LDB4MDMsMHg0OSwweDBBLDB4QkEsMHhFQiwweDA5LAotICAgIDB4QTUs
MHg1MSwweDQzLDB4NDksMHhDQSwweEFFLDB4QkQsMHhFQiwweEE1LDB4NTksMHg2NCwweDUxLDB4
NTUsMHg2RCwweEI3LDB4MzUsCi0gICAgMHgyNiwweDZBLDB4ODQsMHg1MSwweEE1LDB4QUYsMHgy
OSwweDBGLDB4MDksMHg4QiwweDI2LDB4NzIsMHgzRCwweDJELDB4MjksMHgyRiwKLSAgICAweDRB
LDB4OUIsMHhFOCwweDhBLDB4QTksMHgwMiwweDBBLDB4QTMsMHgyQSwweDlCLDB4QTgsMHg4QSww
eDc4LDB4NzgsMHg2MCwweEYyLAotICAgIDB4QTgsMHg4QSwweDQ3LDB4N0EsMHhENCwweEZBLDB4
N0EsMHhGOCwweDY3LDB4ODIsMHhFNSwweDY5LDB4RkEsMHhGMiwweDdFLDB4N0YsCi0gICAgMHgw
NiwweDcyLDB4QTUsMHg2MSwweDU2LDB4QTgsMHhDQSwweDBBLDB4MjcsMHg3MiwweEE1LDB4NjEs
MHg5NSwweDJBLDB4MEEsMHgyMiwKLSAgICAweDY3LDB4N0EsMHhDNSwweDYxLDB4NTcsMHhGRiww
eEJFLDB4MkUsMHgyNywweDZBLDB4QTUsMHg1OSwweDc2LDB4N0UsMHg3OCwweDYwLAotICAgIDB4
QTUsMHg1OSwweDAzLDB4NDEsMHhERSwweEE4LDB4MjAsMHhGOCwweEE1LDB4NTEsMHgwMywweDQx
LDB4RjcsMHhBOCwweEI4LDB4NUYsCi0gICAgMHhBNiwweDUxLDB4MjQsMHg0OSwweDJGLDB4QUEs
MHhBRSwweEZELDB4QTUsMHg1MSwweDIzLDB4NDksMHhBRSwweEFDLDB4RUUsMHg3RiwKLSAgICAw
eDg0LDB4NTEsMHgyMywweDQ5LDB4MjAsMHhBMiwweEVCLDB4RkQsMHhBNSwweDU5LDB4NDMsMHg0
OSwweDNGLDB4RkYsMHhGRiwweEFELAotICAgIDB4MDYsMHg2MiwweDg0LDB4NTksMHgyRiwweEFE
LDB4MkYsMHg4QiwweDY3LDB4NzIsMHhDNSwweDYxLDB4N0QsMHg3QiwweEMyLDB4MjIsCi0gICAg
MHgyNiwweDZBLDB4QTQsMHg1OSwweEVELDB4RjcsMHg3NiwweDY4LDB4NjcsMHg3MiwweEM1LDB4
NjEsMHhBQiwweEFCLDB4MkQsMHgyOSwKLSAgICAweDY3LDB4NzIsMHhBNCwweDU5LDB4ODAsMHhB
MCwweDcwLDB4N0MsMHhDNCwweDU5LDB4RTIsMHgzOCwweEY4LDB4NUMsMHg1RSwweDU3LAotICAg
IDB4QzUsMHg2MSwweEUyLDB4MzgsMHhCRiwweDM1LDB4M0QsMHgyRCwweDY3LDB4N0EsMHhDNSww
eDYxLDB4MkQsMHgwRiwweDhCLDB4QUIsCi0gICAgMHg4OCwweDdBLDB4MjYsMHg3MiwweEJFLDB4
OEUsMHhFQiwweDVFLDB4NjcsMHg3QSwweEU2LDB4NjksMHhCOCwweEU4LDB4RkEsMHhERiwKLSAg
ICAweEM4LDB4OEEsMHgwNiwweDcyLDB4MkQsMHgyNSwweDJGLDB4MkIsMHgyQSwweDkzLDB4Qzgs
MHg4QSwweDRCLDB4RkIsMHg3RCwweEMzLAotICAgIDB4RTksMHg4QSwweDY3LDB4N0EsMHg1Niww
eEY4LDB4QkMsMHhBOCwweEU5LDB4OEEsMHg4OCwweDgyLDB4MjksMHhCNywweEQ3LDB4NUYsCi0g
ICAgMHgwQSwweDhCLDB4QTgsMHg4MiwweDNBLDB4M0YsMHgzNSwweDU1LDB4NzYsMHhGNiwweDhC
LDB4OUIsMHgyRCwweDJELDB4RjUsMHhENSwKLSAgICAweEY4LDB4RkUsMHgzMSwweEQ1LDB4MDAs
MHgwMCwweDAyLDB4MDksMHgxOCwweEZGLDB4RjgsMHhGRSwweDdBLDB4NTcsMHg3RCwweDU1LAot
ICAgIDB4RjgsMHhGRSwweDc1LDB4RTYsMHhFMCwweEYwLDB4RjAsMHg3OCwweDU1LDB4RUUsMHg3
NSwweEU2LDB4OEEsMHhFQiwweEFBLDB4MjAsCi0gICAgMHg3NSwweEVFLDB4NTUsMHhFRSwweEQ5
LDB4RkYsMHhGRiwweEU1LDB4OTYsMHhFRSwweDM1LDB4RTYsMHg5NywweDJGLDB4QkIsMHgyRiwK
LSAgICAweEY4LDB4RkUsMHg5NiwweEY2LDB4MkQsMHgyRiwweDA5LDB4MEIsMHgxOCwweEZGLDB4
RjgsMHhGNiwweERCLDB4N0IsMHg3QiwweDdBLAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHgy
RiwweEE5LDB4MkIsMHgwRCwweDE4LDB4RkYsMHhGOCwweEY2LDB4MDAsMHgwOCwweEEwLDB4RTAs
Ci0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEJBLDB4QUEsMHhGQSwweEVFLDB4MTgsMHhGRiww
eEY4LDB4RjYsMHhGRiwweDdFLDB4NUUsMHg3RiwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4
RkYsMHhERCwweEVGLDB4RUQsMHhGNywweEZFLDB4RjgsMHhGNiwweEZGLDB4N0UsMHhGRiwweEZG
LAotICAgIDB4RDgsMHhGRSwweEY3LDB4RjYsMHg1NywweDVGLDB4RDcsMHg3RiwweDE4LDB4RkYs
MHhGOCwweEY2LDB4NkYsMHg1NSwweDc1LDB4RDUsCi0gICAgMHhGOCwweEY2LDB4RDcsMHhGNiww
eEJBLDB4RkMsMHhEQywweEJBLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBQSwweDJBLDB4MEIsMHhB
QSwKLSAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4NTcsMHg1RCwweEJGLDB4QkIsMHgxNywweEZG
LDB4RjgsMHhGNiwweDU1LDB4REQsMHhGRiwweEZELAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYs
MHhGRiwweEZELDB4RkYsMHg3NywweDE4LDB4RkYsMHhGOCwweEY2LDB4RkYsMHg3QSwweEJELDB4
RkYsCi0gICAgMHhGOCwweEZFLDB4RjcsMHhGNiwweERCLDB4RkYsMHhGRiwweEFFLDB4MTgsMHhG
RiwweEY4LDB4RjYsMHhCQiwweEZBLDB4RkEsMHhGRiwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2
LDB4N0YsMHg3RCwweDdGLDB4OUIsMHhENywweEZFLDB4RjgsMHhGNiwweERELDB4RkQsMHhGNSww
eEQ1LAotICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHg4RSwweDlDLDB4RkUsMHgyQSwweEY4LDB4
RjYsMHhENywweEY2LDB4QUEsMHhCMiwweEY4LDB4QjIsCi0gICAgMHhGNywweEY2LDB4OTgsMHhG
NiwweEEwLDB4QUEsMHhFOCwweEFBLDB4RDcsMHhGNiwweDk2LDB4RUUsMHhFMCwweEFFLDB4NkEs
MHhGRSwKLSAgICAweDk2LDB4RjYsMHg3NiwweEVFLDB4ODgsMHhEOCwweDU0LDB4QjIsMHg5NSww
eEVFLDB4NTYsMHhFNiwweENBLDB4RkIsMHhGRiwweEZFLAotICAgIDB4NzYsMHhFRSwweDU1LDB4
RUUsMHgwMCwweEE3LDB4RDcsMHhBNSwweDc2LDB4RjYsMHg1NSwweEU2LDB4RkYsMHhGRiwweDdD
LDB4NzgsCi0gICAgMHg3NiwweEVFLDB4MzUsMHhFNiwweEJBLDB4RUEsMHhCMiwweEZBLDB4MzYs
MHhFRSwweDU1LDB4RTYsMHg1NSwweERGLDB4RDcsMHhCQSwKLSAgICAweDc1LDB4RUUsMHgzNSww
eEU2LDB4RjYsMHhGRiwweDNGLDB4QjUsMHg3NiwweEVFLDB4NTUsMHhFNiwweEYzLDB4MjMsMHhC
MywweEZGLAotICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHhBRCwweEJCLDB4QUYsMHgyRiwweDk2
LDB4RUUsMHg3NiwweEVFLDB4NzgsMHhGRSwweDdGLDB4NkIsCi0gICAgMHg5NiwweEVFLDB4NzYs
MHhFRSwweDY1LDB4N0QsMHg1RiwweDdELDB4OTUsMHhFRSwweDc2LDB4RUUsMHg1NSwweDU1LDB4
N0IsMHg5OSwKLSAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4QjUsMHg1NSwweDc1LDB4N0EsMHg5
NiwweEVFLDB4MzQsMHhFNiwweEUyLDB4NjgsMHhGRSwweDdFLAotICAgIDB4MTQsMHhFNiwweDcx
LDB4Q0QsMHg1RSwweEZBLDB4RjgsMHhFOCwweEY0LDB4REQsMHg1MSwweENELDB4NTcsMHg3Riww
eEFBLDB4MkEsCi0gICAgMHhEMywweERELDB4NTEsMHhDRCwweDJELDB4MkUsMHgyQSwweDhBLDB4
MTQsMHhERSwweEIzLDB4RDUsMHg4QSwweEFCLDB4RUYsMHhBRiwKLSAgICAweDE0LDB4RTYsMHg5
MiwweEQ1LDB4NzgsMHg3QSwweEVBLDB4NkEsMHhEMywweERELDB4OTIsMHhENSwweDAxLDB4ODEs
MHhBMywweDQyLAotICAgIDB4NzIsMHhENSwweENGLDB4QkMsMHhGOCwweDY4LDB4RkMsMHg1RSww
eDEwLDB4QzUsMHhDRiwweEJDLDB4QjgsMHhGMywweDcyLDB4NTYsCi0gICAgMHhGMCwweEM0LDB4
Q0YsMHhCQywweDgxLDB4OEQsMHg3NSwweEU2LDB4MTAsMHhDNSwweEFGLDB4QkMsMHgzQiwweEFF
LDB4OUIsMHg5RSwKLSAgICAweDkxLDB4RDUsMHhGMCwweEM0LDB4RUIsMHhFRiwweEFELDB4MkIs
MHg1MSwweENELDB4NkUsMHhCNCwweEQ3LDB4NUUsMHg1RSwweDc4LAotICAgIDB4MzEsMHhDRCww
eEFGLDB4QkMsMHhFMywweENCLDB4OEIsMHhBRCwweEFGLDB4QkMsMHgyRCwweEFDLDB4MzYsMHg5
RSwweEJDLDB4NTQsCi0gICAgMHg1MSwweENELDB4QUYsMHhCQywweDI5LDB4MkIsMHgwRiwweDJE
LDB4NzEsMHhDRCwweDMxLDB4QzUsMHhBQSwweEVBLDB4RkYsMHg3RCwKLSAgICAweDMxLDB4Q0Qs
MHhDRiwweEJDLDB4REEsMHhGRSwweDJFLDB4MkEsMHg3MiwweENELDB4RjAsMHhDNCwweEFELDB4
MkYsMHhBQSwweDJBLAotICAgIDB4NzIsMHhDRCwweDUxLDB4Q0QsMHg1RCwweDVFLDB4MTYsMHg3
QywweDcxLDB4Q0QsMHg1MSwweENELDB4MUQsMHhGNywweEU0LDB4RUEsCi0gICAgMHg4NywweDdB
LDB4MjUsMHg2QSwweDdFLDB4RUUsMHhFRSwweEFBLDB4QTcsMHg3QSwweDI1LDB4NkEsMHhCRCww
eEZELDB4RkQsMHgyRSwKLSAgICAweEM3LDB4N0EsMHg0NSwweDZBLDB4MkUsMHhENywweEY1LDB4
REYsMHhDNywweDdBLDB4MjUsMHg2QSwweDAyLDB4MkIsMHhGNywweEY1LAotICAgIDB4RTgsMHg4
MiwweDQ1LDB4NzIsMHgyQSwweDBCLDB4QUYsMHhGRCwweEU4LDB4ODIsMHg4NiwweDdBLDB4QUEs
MHhCMCwweDJBLDB4QkQsCi0gICAgMHhFOCwweDgyLDB4QTcsMHg3QSwweEZBLDB4NjAsMHhDOCww
eEZELDB4RTgsMHg4MiwweDg3LDB4N0EsMHhBMywweDg5LDB4Q0EsMHg4MiwKLSAgICAweEU4LDB4
ODIsMHg4NywweDdBLDB4MDgsMHgyMCwweEFBLDB4NjIsMHhFOCwweDgyLDB4ODYsMHg3QSwweDcw
LDB4RjAsMHhCQSwweEVCLAotICAgIDB4RTgsMHg4MiwweEE3LDB4N0EsMHg0OSwweEY5LDB4Rjks
MHhFQiwweEU4LDB4OEEsMHhBNywweDdBLDB4OTIsMHgyQSwweEJFLDB4QUYsCi0gICAgMHhFOCww
eDgyLDB4QTcsMHg3QSwweDJCLDB4QUYsMHg1NiwweEE2LDB4RTgsMHg4MiwweEM3LDB4ODIsMHgw
NywweEExLDB4MDUsMHhBRCwKLSAgICAweEM4LDB4OEEsMHhFOCwweDgyLDB4QjUsMHhGNSwweDk1
LDB4RUMsMHgwOCwweDhCLDB4QzgsMHg4MiwweEVCLDB4RUEsMHhFOSwweERGLAotICAgIDB4MDks
MHg4QiwweEM4LDB4ODIsMHg3QiwweEZCLDB4RkQsMHgyRSwweDA5LDB4OEIsMHhDOCwweDgyLDB4
N0YsMHhGQiwweEE5LDB4MzcsCi0gICAgMHhFOCwweDhBLDB4QzgsMHg4MiwweEVCLDB4NDUsMHg4
NiwweDA0LDB4MDgsMHg4QiwweEM4LDB4ODIsMHgzNSwweEE1LDB4RkUsMHhCRSwKLSAgICAweDA5
LDB4OEIsMHhDOCwweDgyLDB4RUEsMHhGMiwweEZGLDB4QTcsMHgwOSwweDhCLDB4QzgsMHg4Miww
eDNFLDB4OTMsMHhGQiwweDdDLAotICAgIDB4MjksMHg4QiwweEU4LDB4ODIsMHhBNywweDVELDB4
NjksMHhBOSwweDI5LDB4OEIsMHhFOCwweDgyLDB4MEYsMHg4RiwweDZGLDB4N0YsCi0gICAgMHhF
QywweEEzLDB4MDksMHg4QiwweDBGLDB4NzUsMHg1NSwweDU1LDB4QjMsMHhERCwweDA5LDB4OEIs
MHgwQSwweEJELDB4NTUsMHg1NSwKLSAgICAweDU1LDB4RUUsMHgyOSwweDhCLDB4MDAsMHhBQSww
eEZELDB4NTUsMHgzMiwweENELDB4ODQsMHg1MSwweDc4LDB4NzgsMHg3QSwweDdGLAotICAgIDB4
NDMsMHg0OSwweEUyLDB4MzgsMHhCRiwweEQ0LDB4QkUsMHgwQSwweDg0LDB4NTEsMHgwMywweDQx
LDB4QUQsMHhGRCwweEVGLDB4NkEsCi0gICAgMHhBNCwweDUxLDB4MjMsMHg0MSwweDhCLDB4OEIs
MHhCRSwweEY3LDB4QTUsMHg1OSwweDQzLDB4NDksMHgyRSwweDNFLDB4MkYsMHgyRCwKLSAgICAw
eDI2LDB4NzIsMHhDNSwweDYxLDB4M0QsMHhCRCwweEJELDB4QjUsMHhDOCwweDhBLDB4MjYsMHg3
MiwweDBGLDB4MEIsMHhBRCwweEI1LAotICAgIDB4MkEsMHg5QiwweEE3LDB4ODIsMHgwMiwweDJC
LDB4QUQsMHhBRCwweDI5LDB4OUIsMHhDOSwweDhBLDB4NkEsMHhBQSwweDIwLDB4MEEsCi0gICAg
MHgwQSwweDlCLDB4NDcsMHg3QSwweDdFLDB4RkMsMHhGOCwweEY4LDB4NjcsMHg3QSwweDA2LDB4
NzIsMHhERCwweEVGLDB4RUYsMHgyQywKLSAgICAweDg3LDB4ODIsMHhFNiwweDY5LDB4NUQsMHg3
RSwweEZBLDB4RTIsMHg0NywweDdBLDB4RTUsMHg2OSwweDFELDB4QjUsMHhENywweEY3LAotICAg
IDB4ODgsMHg3QSwweDI2LDB4NzIsMHgyRSwweEEzLDB4MEYsMHhFRCwweDg4LDB4ODIsMHgwNSww
eDYyLDB4NzgsMHhGOCwweDdFLDB4NTcsCi0gICAgMHhFNiwweDYxLDB4NDMsMHg0OSwweDVFLDB4
NzAsMHhDMCwweDgwLDB4ODQsMHg1MSwweEMyLDB4MzgsMHhERiwweDVFLDB4RkEsMHhBMCwKLSAg
ICAweDQ0LDB4NDksMHgwMywweDQxLDB4RkQsMHg3NSwweEE5LDB4QTgsMHg2NCwweDQ5LDB4MDMs
MHg0MSwweEUzLDB4QkYsMHhFNywweDlCLAotICAgIDB4ODUsMHg1MSwweDAzLDB4NDEsMHg5NSww
eEZGLDB4QUYsMHgwQSwweEE1LDB4NTksMHg0MywweDQ5LDB4MkQsMHgyRCwweDJFLDB4MkYsCi0g
ICAgMHgyNiwweDZBLDB4QzUsMHg1OSwweEI5LDB4QUQsMHhBRCwweEVELDB4ODcsMHg3MiwweDA2
LDB4NkEsMHhCQiwweEZGLDB4OUYsMHgzQiwKLSAgICAweEE4LDB4N0EsMHgyNiwweDZBLDB4N0Ys
MHhGQiwweEFBLDB4MDIsMHg2NywweDcyLDB4MDYsMHg2MiwweDJCLDB4MkEsMHg4OCwweDc4LAot
ICAgIDB4NjcsMHg3MiwweDYzLDB4NTEsMHg3OCwweDU4LDB4NUUsMHg1RiwweDQzLDB4NDksMHhD
MiwweDM4LDB4REEsMHg1QSwweEY4LDB4RjgsCi0gICAgMHhFNSwweDYxLDB4MjMsMHg0MSwweDJE
LDB4QUQsMHhBRCwweEI1LDB4MjYsMHg3MiwweEE1LDB4NTksMHgwMiwweDJCLDB4QTcsMHg3NSwK
LSAgICAweDI3LDB4NzIsMHhDNSwweDYxLDB4RTgsMHhFOCwweEZFLDB4QTksMHgyNywweDcyLDB4
QTUsMHg2MSwweDlGLDB4OTUsMHgxRiwweDlFLAotICAgIDB4RTksMHg4QSwweDQ3LDB4N0EsMHgy
RCwweEE5LDB4MkQsMHg4OSwweDRBLDB4OTMsMHhBOCwweDgyLDB4OEEsMHhGQSwweDdCLDB4NUYs
Ci0gICAgMHhDOSwweDhBLDB4NDcsMHg3QSwweDY4LDB4RUEsMHhBQiwweEE1LDB4QTgsMHg4Miww
eDY3LDB4N0EsMHhBQiwweDBCLDB4MkYsMHhBMiwKLSAgICAweDI5LDB4OTMsMHg4OCwweDdBLDB4
N0QsMHhGRiwweEZFLDB4RTIsMHg0QSwweDkzLDB4ODgsMHg3QSwweDBGLDB4M0QsMHhENSwweEQ1
LAotICAgIDB4QjYsMHhGNiwweDA5LDB4OEIsMHgwQiwweDJGLDB4QUQsMHhCNSwweEQ3LDB4RkUs
MHhEMywweERELDB4MDAsMHgwMCwweDAyLDB4MDksCi0gICAgMHhENywweEZFLDB4NTUsMHhFRSww
eDY4LDB4NzgsMHg1OCwweERBLDB4NzYsMHhFRSwweDU1LDB4RUUsMHhGRiwweEJCLDB4QkIsMHg2
OSwKLSAgICAweDc1LDB4RUUsMHgxNSwweEVFLDB4MkEsMHhBMiwweEE4LDB4RTIsMHg5NiwweEVF
LDB4NTUsMHhFRSwweDM3LDB4MkQsMHgwNSwweDJELAotICAgIDB4RjgsMHhGRSwweEI2LDB4RjYs
MHgyOSwweDJELDB4MEQsMHgyRCwweDE4LDB4RkYsMHhGOCwweEY2LDB4N0UsMHhGRiwweEZGLDB4
REIsCi0gICAgMHgzOSwweEZGLDB4RjgsMHhGRSwweEJELDB4QkQsMHhFRiwweDI5LDB4MzksMHhG
RiwweDE4LDB4RkYsMHg1RiwweDZGLDB4N0YsMHg1RiwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2
LDB4QUEsMHhBOCwweEEyLDB4QUEsMHgxOCwweEZGLDB4RjgsMHhGNiwweEZCLDB4RUIsMHg5Miww
eDVFLAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhENywweDc3LDB4REYsMHhGRiwweEQ3LDB4
RkUsMHhGOCwweEY2LDB4NzcsMHhERCwweEY1LDB4RjUsCi0gICAgMHhGOCwweEY2LDB4RDcsMHhG
NiwweEFDLDB4RUEsMHhFOCwweEVBLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhBMiwweDhBLDB4QUIs
MHhBRSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QUEsMHgwRSwweEFBLDB4QUEsMHgxOCww
eEZGLDB4RDcsMHhGNiwweEJGLDB4QkIsMHhCQiwweEFBLAotICAgIDB4RjcsMHhGRSwweDE4LDB4
RjcsMHhBRSwweEJFLDB4QkEsMHhBQSwweDE4LDB4RkYsMHhGNywweEY2LDB4RkYsMHhGNywweEZG
LDB4N0UsCi0gICAgMHhEOCwweEZFLDB4RjcsMHhGNiwweDU1LDB4RjUsMHhERCwweEZELDB4Rjcs
MHhGRSwweEY4LDB4RjYsMHhGRiwweEZGLDB4RkYsMHhFRiwKLSAgICAweDE5LDB4RkYsMHhGNyww
eEY2LDB4REYsMHhGRiwweERELDB4RkQsMHgxOCwweEZGLDB4RjcsMHhGNiwweEZGLDB4N0QsMHhF
RCwweEZGLAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGQSwweEZFLDB4N0YsMHg3RiwweEQ3
LDB4RkUsMHhGOCwweEY2LDB4OTUsMHhENSwweDU1LDB4NzUsCi0gICAgMHhGNywweEY2LDB4RDgs
MHhGNiwweDJBLDB4QTgsMHhBOCwweEFBLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhCOCwweERCLDB4
RTcsMHhGNiwKLSAgICAweEY3LDB4RjYsMHhCNywweEY2LDB4N0UsMHg3RSwweDVFLDB4NUYsMHhC
NywweEY2LDB4NzYsMHhFRSwweEFBLDB4RUIsMHhFMiwweEZBLAotICAgIDB4OTYsMHhFRSwweDU1
LDB4RUUsMHhBMCwweEM4LDB4RTIsMHhFQiwweDc2LDB4RUUsMHg1NiwweEU2LDB4ODgsMHhBQyww
eEEwLDB4MDAsCi0gICAgMHg3NiwweEVFLDB4NTYsMHhFRSwweDIwLDB4MDIsMHhBQSwweEEyLDB4
NzYsMHhFRSwweDE1LDB4RTYsMHhDOCwweDJBLDB4QTIsMHg4MiwKLSAgICAweDc2LDB4RUUsMHgz
NSwweEU2LDB4RkEsMHhFQSwweEYyLDB4RkEsMHg1NSwweEVFLDB4MTQsMHhERSwweEZBLDB4RTgs
MHhGOCwweEZBLAotICAgIDB4NTUsMHhFNiwweDE0LDB4REUsMHgwQiwweDBCLDB4MkYsMHg4NSww
eDc2LDB4RUUsMHg1NSwweEU2LDB4RUYsMHgyQSwweDI5LDB4QkQsCi0gICAgMHg5NiwweEVFLDB4
NzYsMHhFRSwweEJELDB4N0YsMHhERCwweEY3LDB4OTYsMHhFRSwweDc2LDB4RUUsMHg2RCwweEE3
LDB4MjUsMHgzRiwKLSAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4N0QsMHhGNSwweEZCLDB4Rjgs
MHg5NiwweEVFLDB4NzYsMHhFRSwweEZCLDB4QkEsMHhGRiwweEZGLAotICAgIDB4OTYsMHhGNiww
eDc2LDB4RUUsMHhFRiwweEVCLDB4OEIsMHhFQiwweDk2LDB4RUUsMHgxNCwweEU2LDB4NkEsMHg2
QSwweEU4LDB4NjgsCi0gICAgMHgxNCwweEU2LDB4RDQsMHhERCwweERBLDB4MDgsMHgwQSwweDI4
LDB4MzQsMHhFNiwweEY0LDB4REQsMHg1RCwweDdGLDB4RkIsMHhDQSwKLSAgICAweDE0LDB4RTYs
MHhEMywweERELDB4NTUsMHg1NywweDdCLDB4RTIsMHhGNCwweERELDB4QjMsMHhERCwweDhCLDB4
MEEsMHhBRiwweEE4LAotICAgIDB4MTQsMHhFNiwweDkyLDB4RDUsMHg2QSwweDdBLDB4QUEsMHhB
MCwweEY0LDB4REQsMHhGMCwweEM0LDB4RUEsMHhFQSwweDc4LDB4NzgsCi0gICAgMHgxMCwweEM1
LDB4OEUsMHhCNCwweEE4LDB4QkMsMHhGQSwweERFLDB4Q0YsMHhCQywweEFGLDB4QkMsMHgwMCww
eEYyLDB4RkUsMHhBQywKLSAgICAweEVGLDB4QkMsMHg4RSwweEI0LDB4RTMsMHhGNywweDVGLDB4
NzQsMHhEMCwweEM0LDB4NEQsMHhBQywweEEyLDB4RUEsMHhGRSwweEQ3LAotICAgIDB4NTEsMHhD
RCwweENGLDB4QkMsMHgwOSwweDA1LDB4OEQsMHhBNSwweDUxLDB4Q0QsMHg4RSwweEI0LDB4Nzgs
MHhFMCwweEEwLDB4ODAsCi0gICAgMHgzMSwweENELDB4Q0YsMHhCQywweDI1LDB4RTUsMHhGNSww
eEZGLDB4RjAsMHhCQywweEVDLDB4QTMsMHhERSwweEZDLDB4NUUsMHhGOCwKLSAgICAweDMxLDB4
Q0QsMHg4RiwweEI0LDB4MDksMHgwRCwweDA5LDB4MDksMHg1MSwweENELDB4MTAsMHhDNSwweDhC
LDB4RkUsMHhBQywweDdBLAotICAgIDB4NzIsMHhDRCwweEYwLDB4QzQsMHhCNywweEE3LDB4MkQs
MHhBQSwweDkyLDB4RDUsMHgzMSwweEM1LDB4QUQsMHhFRiwweEVDLDB4MkUsCi0gICAgMHg5Myww
eEQ1LDB4NTEsMHhDRCwweEQ3LDB4NUYsMHg1RiwweEZBLDB4NzEsMHhDRCwweDUxLDB4Q0QsMHhG
MywweEZCLDB4RjYsMHg3RSwKLSAgICAweDg2LDB4N0EsMHg0NiwweDcyLDB4QTgsMHhBNiwweEVF
LDB4QTgsMHg4NiwweDdBLDB4NDYsMHg3MiwweDI4LDB4QUIsMHgyQiwweEFBLAotICAgIDB4QTcs
MHg3QSwweDQ1LDB4NzIsMHhERiwweDVGLDB4RUEsMHg2MiwweDg2LDB4N0EsMHg0NSwweDcyLDB4
NjgsMHg2MCwweDYwLDB4NDMsCi0gICAgMHg4NiwweDcyLDB4MjUsMHg3MiwweEZFLDB4OUYsMHhB
QSwweEEwLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHgwMywweEJCLDB4N0UsMHg4RiwKLSAgICAweEM4
LDB4ODIsMHgyNSwweDZBLDB4MkIsMHhBQiwweERGLDB4NTcsMHhBNywweDgyLDB4MDUsMHg2QSww
eDAwLDB4MDAsMHgwQiwweEJELAotICAgIDB4RTgsMHg4MiwweDg3LDB4N0EsMHhFRSwweDJCLDB4
QkIsMHg3NSwweEU4LDB4ODIsMHhBNywweDdBLDB4RUYsMHhBQiwweEE5LDB4MjksCi0gICAgMHhF
OCwweDgyLDB4ODcsMHg3QSwweEVCLDB4N0EsMHg4OCwweDBFLDB4RTgsMHg4MiwweEE4LDB4ODIs
MHgwMywweDgyLDB4QUEsMHgyOCwKLSAgICAweEU4LDB4ODIsMHg4OCwweDgyLDB4MkEsMHhBMiww
eDI4LDB4QjgsMHgwOSwweDhCLDB4QTcsMHg3QSwweEZGLDB4REUsMHhCRSwweEU4LAotICAgIDB4
RTgsMHg4MiwweEE3LDB4N0EsMHhBQiwweEUyLDB4QzMsMHg4OSwweEU4LDB4ODIsMHhBOCwweDgy
LDB4QTgsMHg4QSwweEFDLDB4RUIsCi0gICAgMHhFOCwweDgyLDB4QzgsMHg4MiwweDBBLDB4RkYs
MHgyQiwweDJBLDB4MDksMHg4MywweEE3LDB4N0EsMHgyRSwweEJGLDB4OUUsMHhGQSwKLSAgICAw
eDA5LDB4OEIsMHhDOCwweDgyLDB4M0EsMHg3NywweEUzLDB4RjAsMHgwOCwweDhCLDB4QzgsMHg4
MiwweDdBLDB4NkQsMHhGNSwweDk1LAotICAgIDB4MDksMHg4QiwweEM4LDB4ODIsMHhDMSwweENG
LDB4QUIsMHhENCwweDA4LDB4OEIsMHhDOCwweDgyLDB4NUUsMHg3RSwweEZBLDB4N0YsCi0gICAg
MHgwOCwweDhCLDB4QzcsMHg4MiwweDgyLDB4MDEsMHhDQiwweEJGLDB4MjksMHg4QiwweEM4LDB4
ODIsMHhGNSwweDZGLDB4QTgsMHhFQiwKLSAgICAweDA5LDB4OEIsMHhDOSwweDgyLDB4QkYsMHgw
MiwweDM4LDB4RkUsMHgwOSwweDhCLDB4QzgsMHg4MiwweDAwLDB4QjAsMHhCRSwweDk2LAotICAg
IDB4MjksMHg4QiwweEM4LDB4N0EsMHhGQywweEZBLDB4RkEsMHg3RSwweEM5LDB4ODIsMHg4NCww
eDUxLDB4NzgsMHg2OCwweEY4LDB4NzgsCi0gICAgMHg2MywweDQ5LDB4MjMsMHg0OSwweEVGLDB4
MkUsMHg2QywweEYwLDB4ODQsMHg1MSwweDQzLDB4NDksMHhFQiwweEJFLDB4QUYsMHhERCwKLSAg
ICAweDg0LDB4NTEsMHg0NCwweDQ5LDB4RjUsMHg1RiwweEJFLDB4M0EsMHhDNSwweDYxLDB4NjQs
MHg1MSwweEJELDB4MzUsMHhBRiwweEFGLAotICAgIDB4RTYsMHg2OSwweEE1LDB4NjEsMHgzOCww
eEFGLDB4QjksMHgyOSwweEE4LDB4ODIsMHhFNSwweDY5LDB4QUQsMHhCRiwweDJELDB4MjksCi0g
ICAgMHhFOSwweDkyLDB4QTgsMHg4MiwweDg5LDB4QjksMHhCQiwweEFBLDB4MDksMHg5MywweEE4
LDB4OEEsMHg4OCwweEZBLDB4RkQsMHg3NywKLSAgICAweEVBLDB4OTIsMHg2NywweDgyLDB4RTgs
MHhGQSwweEZFLDB4N0UsMHg2NywweDdBLDB4MjYsMHg3MiwweDFFLDB4MUEsMHg1OCwweDc3LAot
ICAgIDB4NjcsMHg3QSwweDI2LDB4NzIsMHhFMCwweDAwLDB4M0MsMHhENSwweDQ2LDB4NzIsMHgw
NiwweDcyLDB4RTUsMHhERSwweDM0LDB4OUMsCi0gICAgMHg2NywweDdBLDB4MDYsMHg2QSwweEZE
LDB4RUUsMHhBRSwweDBBLDB4NDYsMHg3MiwweEU1LDB4NjEsMHg1RSwweEZBLDB4N0UsMHg1QywK
LSAgICAweDA2LDB4NkEsMHhBNSwweDU5LDB4RkEsMHhGMCwweDcyLDB4NTUsMHhBNSwweDU5LDB4
MjMsMHg0OSwweDdBLDB4NjgsMHg1QSwweDdBLAotICAgIDB4MjMsMHg0OSwweEUzLDB4NDAsMHgy
OCwweEYwLDB4RTgsMHhCMiwweDY0LDB4NDksMHgwMywweDQxLDB4QkQsMHg5RCwweDJGLDB4Qjks
Ci0gICAgMHg2NCwweDQ5LDB4MjMsMHg0OSwweDM1LDB4QUQsMHhBRiwweEZFLDB4ODQsMHg1OSww
eDIzLDB4NDksMHg5QSwweEFBLDB4MkEsMHgyQSwKLSAgICAweDA1LDB4NjIsMHhBNSwweDU5LDB4
M0YsMHhCRiwweEI1LDB4REQsMHg4OCwweDcyLDB4QzUsMHg1OSwweDJCLDB4MjcsMHhBRiwweEFE
LAotICAgIDB4ODgsMHg3MiwweDQ2LDB4NzIsMHhCRSwweEIyLDB4RTIsMHhDMiwweDY3LDB4NzIs
MHhBNCwweDU5LDB4RTIsMHg2OCwweDdBLDB4N0EsCi0gICAgMHhBNCwweDU5LDB4NDMsMHg0OSww
eEUwLDB4RTgsMHhGOCwweDdFLDB4NjQsMHg1MSwweDAyLDB4NDEsMHhEQywweERDLDB4RkEsMHhF
RiwKLSAgICAweEE1LDB4NTksMHgyMywweDQ5LDB4QkQsMHhBRiwweEJELDB4M0IsMHg0NywweDcy
LDB4ODQsMHg1OSwweEY1LDB4RDUsMHhCRCwweDJGLAotICAgIDB4MjcsMHg3MiwweEM2LDB4Njks
MHhBNSwweEI3LDB4QUEsMHg4OCwweEE4LDB4ODIsMHgwNiwweDZBLDB4RDUsMHhGNSwweEI1LDB4
MEEsCi0gICAgMHgwOSwweDkzLDB4NjcsMHg3QSwweEVELDB4RkYsMHhBRSwweEEyLDB4QzksMHg4
QSwweDI2LDB4NzIsMHhFMCwweDdBLDB4NzgsMHhGQSwKLSAgICAweDg4LDB4ODIsMHgyNiwweDcy
LDB4MkYsMHg5RCwweEZGLDB4RkIsMHhFOSwweDhBLDB4ODcsMHg4MiwweEFCLDB4ODMsMHgwOSww
eDI1LAotICAgIDB4NEEsMHg5MywweEM4LDB4ODIsMHg2MiwweDZBLDB4RUIsMHg1NSwweEM5LDB4
ODIsMHg2NywweDdBLDB4QjcsMHhERiwweDdBLDB4NzgsCi0gICAgMHgwQywweDlDLDB4QTgsMHg4
MiwweDJELDB4RkQsMHhGRCwweEY1LDB4QjYsMHhGNiwweDRBLDB4OTMsMHgwQiwweEFELDB4RjUs
MHg1NSwKLSAgICAweDc2LDB4RjYsMHgxMSwweEM1LDB4MDAsMHg4MCwweDJCLDB4QUQsMHg3Niww
eEVFLDB4NTUsMHhFRSwweEZFLDB4QjUsMHhCNSwweEI1LAotICAgIDB4NzYsMHhFRSwweDU1LDB4
RUUsMHhFOCwweEFFLDB4N0UsMHg1RSwweEQ3LDB4RjYsMHg1NSwweEVFLDB4QkQsMHhBNywweEFG
LDB4QTUsCi0gICAgMHgxOCwweEZGLDB4QjcsMHhGNiwweEFELDB4MkYsMHhBRiwweDJCLDB4MTgs
MHhGRiwweEQ3LDB4RjYsMHhCQSwweEY4LDB4RkEsMHhCRSwKLSAgICAweDM5LDB4RkYsMHhGOCww
eEY2LDB4ODcsMHhBRCwweEFELDB4QUQsMHgxOCwweEZGLDB4MzgsMHhGNywweDIyLDB4ODgsMHgw
MiwweDA4LAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBQSwweEE4LDB4RTIsMHhBQSwweDE4
LDB4RkYsMHhGOCwweEY2LDB4RkUsMHhGQSwweEZGLDB4RkUsCi0gICAgMHgxOCwweEZGLDB4Rjgs
MHhGNiwweEZFLDB4NzksMHhFQiwweERGLDB4RDcsMHhGRSwweEY4LDB4RjYsMHhERCwweDU3LDB4
REQsMHhGRiwKLSAgICAweEY4LDB4RjYsMHhENywweEY2LDB4RUEsMHhCMiwweEJFLDB4QkEsMHhG
NywweEY2LDB4RDcsMHhGNiwweEFFLDB4OUUsMHgzRSwweEE3LAotICAgIDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHhFMywweDg4LDB4QUEsMHg4QSwweEY4LDB4RkUsMHhGNywweEY2LDB4RkYsMHhGRiww
eEY5LDB4RkYsCi0gICAgMHhENywweEZFLDB4RjcsMHhGNiwweDVGLDB4NTcsMHg1NywweDdGLDB4
RjcsMHhGRSwweDE4LDB4RjcsMHgyRSwweDBCLDB4QUEsMHhGRiwKLSAgICAweEY4LDB4RkUsMHgx
NywweEVGLDB4MjgsMHhBMiwweEEyLDB4QUEsMHgxNywweEZGLDB4RjgsMHhGNiwweEZELDB4NTcs
MHg1RiwweEZCLAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBQiwweEZFLDB4QjksMHhERSww
eDE4LDB4RkYsMHhGOCwweEY2LDB4RkYsMHhFRSwweEFBLDB4QUEsCi0gICAgMHgxOCwweEZGLDB4
RjgsMHhGNiwweDdFLDB4REEsMHg1RSwweEQ3LDB4RDgsMHhGRSwweEY3LDB4RjYsMHhENywweEY3
LDB4OUQsMHhCRCwKLSAgICAweEY3LDB4RjYsMHhCNywweEVFLDB4QUEsMHhGRSwweDVGLDB4Nzcs
MHhENywweEY2LDB4OTYsMHhFRSwweDAwLDB4QUEsMHhFRiwweERGLAotICAgIDB4RDcsMHhGNiww
eDc2LDB4RUUsMHhBOCwweEUyLDB4RUIsMHhGRiwweEI3LDB4RjYsMHg1NSwweEU2LDB4RTgsMHhG
QywweEZDLDB4RkUsCi0gICAgMHg3NiwweEVFLDB4NTUsMHhFNiwweDhFLDB4QUUsMHhBOCwweDAw
LDB4OTYsMHhFRSwweDc2LDB4RUUsMHg3RCwweDc1LDB4RDUsMHg1NSwKLSAgICAweDc2LDB4RUUs
MHg1NiwweEVFLDB4QkUsMHhGNCwweDlFLDB4RkEsMHg3NSwweEVFLDB4NTYsMHhFRSwweEQ1LDB4
RjUsMHhBRCwweEJCLAotICAgIDB4NzYsMHhFRSwweDM1LDB4RTYsMHhGQSwweEZBLDB4ODIsMHhB
MCwweDU1LDB4RUUsMHgxNCwweEU2LDB4RjIsMHhGOCwweDIwLDB4MDAsCi0gICAgMHg1NSwweEVF
LDB4MTQsMHhERSwweEFGLDB4REYsMHhCRSwweEIwLDB4NzUsMHhFRSwweDM1LDB4RTYsMHhBQiww
eDJCLDB4MkIsMHhBRCwKLSAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4QkYsMHgyRiwweDhGLDB4
RUYsMHhCNiwweEY2LDB4NzUsMHhFRSwweEFGLDB4QkYsMHhCQSwweDJBLAotICAgIDB4OTYsMHhF
RSwweDU1LDB4RTYsMHhGQywweDdCLDB4QjgsMHgyOCwweDk2LDB4RUUsMHg1NSwweEU2LDB4MkIs
MHhBRiwweDJCLDB4MDAsCi0gICAgMHg5NSwweEVFLDB4NzYsMHhFRSwweDZCLDB4RkIsMHhGMiww
eEUyLDB4OTYsMHhFRSwweDE0LDB4RTYsMHhFOCwweEUwLDB4NjIsMHhGOCwKLSAgICAweDM0LDB4
RTYsMHhGNCwweERELDB4RjAsMHhGOCwweEZGLDB4RDcsMHgxNCwweEU2LDB4RjQsMHhERCwweDAy
LDB4QkEsMHhGQiwweDVELAotICAgIDB4MTQsMHhFNiwweEQzLDB4REQsMHhBMCwweEJFLDB4RDcs
MHhENiwweEQzLDB4RTUsMHhGNCwweERELDB4NUQsMHhERCwweEVGLDB4RkYsCi0gICAgMHgxNCww
eEU2LDB4RDMsMHhENSwweDAyLDB4MDIsMHhFMiwweDY4LDB4QjMsMHhENSwweEFGLDB4QkMsMHhG
MCwweDc4LDB4NTgsMHg1RSwKLSAgICAweENGLDB4QkMsMHg4RSwweEI0LDB4QjgsMHhBOCwweERG
LDB4RUQsMHhBRiwweEJDLDB4NEQsMHhBQywweDAwLDB4QTgsMHhGQSwweDU4LAotICAgIDB4QUYs
MHhCQywweDBDLDB4QTQsMHhBOCwweEVBLDB4RUUsMHg3RiwweDhGLDB4QjQsMHgwRCwweEE0LDB4
MkUsMHhCRCwweEI1LDB4QjUsCi0gICAgMHgxMSwweEM1LDB4NkYsMHhCNCwweDJBLDB4MkIsMHgy
RCwweEFGLDB4NzIsMHhENSwweDEwLDB4QzUsMHhBQSwweEFGLDB4MEQsMHgzNSwKLSAgICAweEIz
LDB4RDUsMHhGMCwweEM0LDB4NUYsMHg3RSwweDdBLDB4QUEsMHhGMCwweEM0LDB4MEQsMHhBNCww
eDU4LDB4NTgsMHhEOCwweEQ4LAotICAgIDB4MzEsMHhDRCwweDZFLDB4QjQsMHgwOSwweDI5LDB4
OEQsMHg4OSwweDMxLDB4Q0QsMHhGMCwweEM0LDB4RDAsMHhGMiwweDgwLDB4MDIsCi0gICAgMHg3
MiwweENELDB4MzEsMHhDRCwweEI1LDB4MEQsMHgyRCwweDJGLDB4OTIsMHhENSwweDUxLDB4Q0Qs
MHhCRiwweEVBLDB4RkIsMHhGRiwKLSAgICAweDkyLDB4RDUsMHg1MSwweENELDB4QTMsMHhEQSww
eERFLDB4QUMsMHg3MSwweEQ1LDB4NTEsMHhDRCwweEY4LDB4RjgsMHhFQywweDMwLAotICAgIDB4
QTcsMHg3QSwweDQ2LDB4N0EsMHhCQiwweDI4LDB4OTIsMHg4MiwweEE3LDB4N0EsMHg0NSwweDcy
LDB4RUEsMHgxMCwweEFBLDB4QUEsCi0gICAgMHhBNywweDdBLDB4NDUsMHg3MiwweEFBLDB4ODUs
MHhBQSwweEEyLDB4QTcsMHg3QSwweDQ1LDB4NkEsMHhGRSwweERDLDB4QjIsMHhBQSwKLSAgICAw
eEE3LDB4N0EsMHg2NiwweDcyLDB4NjksMHhFOSwweEE2LDB4OUEsMHhBNywweDdBLDB4NDYsMHg3
MiwweEFCLDB4QkEsMHg2QiwweDhGLAotICAgIDB4QTcsMHg3QSwweDQ2LDB4NzIsMHg1NywweDVC
LDB4RjcsMHhENywweDg3LDB4N0EsMHg0NiwweDcyLDB4NTUsMHg2QiwweEZBLDB4QTIsCi0gICAg
MHg2NiwweDcyLDB4MjUsMHg2QSwweDlGLDB4N0UsMHg1QiwweDI4LDB4QTcsMHg3QSwweDI1LDB4
NkEsMHgwQSwweEFELDB4RkQsMHhGRiwKLSAgICAweEM3LDB4ODIsMHgyNSwweDZBLDB4MDAsMHg4
QSwweEJGLDB4NTcsMHhFOCwweDhBLDB4NjYsMHg3MiwweDhBLDB4QTAsMHhFRSwweEY1LAotICAg
IDB4RTgsMHg4MiwweEE3LDB4N0EsMHhFQywweDFELDB4QkQsMHg1NSwweDA4LDB4OEIsMHhBNyww
eDdBLDB4RkYsMHhERiwweEFCLDB4QkEsCi0gICAgMHhFOCwweDgyLDB4QTcsMHg4MiwweDA5LDB4
MEIsMHhDMiwweDlGLDB4RTgsMHg4MiwweEE3LDB4N0EsMHhBQSwweEJELDB4RUIsMHhBMywKLSAg
ICAweDA5LDB4ODMsMHhBNywweDdBLDB4RTgsMHhGQSwweEJGLDB4QkIsMHhFOSwweDgyLDB4Qzgs
MHg4MiwweDBGLDB4RDUsMHg1QiwweDQyLAotICAgIDB4MDksMHg4QiwweEE3LDB4N0EsMHhFMiww
eEVBLDB4RDgsMHhERiwweEU4LDB4OEEsMHhBNywweDdBLDB4MkIsMHhCQiwweDNELDB4QUYsCi0g
ICAgMHhFOCwweDhBLDB4QzgsMHg4MiwweEJDLDB4OTYsMHhFRSwweEZDLDB4MDgsMHg4QiwweEM4
LDB4ODIsMHg3NywweEQ0LDB4NUQsMHhCNywKLSAgICAweDA5LDB4OEIsMHhDOCwweDgyLDB4OTUs
MHhEOCwweEY4LDB4RkYsMHgwOSwweDhCLDB4QTcsMHg4MiwweEJFLDB4RkEsMHhGOCwweERFLAot
ICAgIDB4RTgsMHg4QSwweEE4LDB4ODIsMHhCQSwweEVBLDB4QUIsMHgwQSwweDA5LDB4OEIsMHhB
NywweDgyLDB4QkMsMHhCQiwweDZCLDB4QUIsCi0gICAgMHgwOCwweDgzLDB4QTcsMHg3QSwweEZG
LDB4N0YsMHhGRiwweEY4LDB4QTcsMHg3QSwweDg0LDB4NTEsMHhGOCwweDdBLDB4NzgsMHg1RSwK
LSAgICAweEE0LDB4NTksMHgyMywweDQxLDB4NzgsMHhGQSwweEZGLDB4NTcsMHg4NCwweDQ5LDB4
MjMsMHg0OSwweEFCLDB4MkQsMHg5QywweEZELAotICAgIDB4QzUsMHg1OSwweDY0LDB4NTEsMHhC
QSwweEJGLDB4M0IsMHhGRCwweEM1LDB4NjEsMHg4NCwweDU5LDB4M0UsMHhCRiwweEFCLDB4QkIs
Ci0gICAgMHgyNiwweDcyLDB4QzUsMHg2MSwweEE1LDB4QUIsMHgwOSwweDA5LDB4RTgsMHg4QSww
eDI2LDB4NzIsMHhCRCwweEFGLDB4MEYsMHhBQiwKLSAgICAweEU5LDB4OTIsMHhBOCwweDhBLDB4
MkIsMHg4MywweEFBLDB4RUMsMHhDOCwweDkyLDB4NDYsMHg3QSwweEU4LDB4RjgsMHhGRSwweDdF
LAotICAgIDB4ODgsMHg4MiwweDA1LDB4NzIsMHhCMCwweERFLDB4N0YsMHhGRSwweDQ2LDB4N0Es
MHhFNSwweDY5LDB4RUEsMHhCQSwweDdGLDB4RUMsCi0gICAgMHgyNiwweDcyLDB4QzUsMHg2OSww
eDAwLDB4MEEsMHgzRSwweERFLDB4MjYsMHg3MiwweEM1LDB4NjEsMHg4OCwweEU4LDB4RkEsMHhC
RiwKLSAgICAweDI2LDB4NzIsMHg4NCwweDU5LDB4MDAsMHhGRSwweEZCLDB4N0UsMHgyNiwweDcy
LDB4ODQsMHg1OSwweEU4LDB4QkUsMHg1RiwweDVELAotICAgIDB4QTUsMHg1OSwweDIzLDB4NDks
MHhBQSwweEZDLDB4NzgsMHhFQSwweDY0LDB4NTEsMHgwMiwweDQ5LDB4NDgsMHhFQSwweENGLDB4
ODAsCi0gICAgMHg4NCwweDUxLDB4MDMsMHg0OSwweERELDB4QkIsMHhFQSwweDJBLDB4NjQsMHg0
OSwweDIzLDB4NDksMHhGRiwweDVDLDB4REYsMHg5NywKLSAgICAweDQzLDB4NDksMHgwMiwweDQ5
LDB4MjgsMHhFOCwweEVBLDB4MDAsMHhDNSwweDU5LDB4MjMsMHg0OSwweEFGLDB4MkQsMHhCRiww
eDA5LAotICAgIDB4MjcsMHg2QSwweEE0LDB4NTksMHhGRCwweEJELDB4QTksMHgyRSwweDQ3LDB4
NkEsMHhFNSwweDYxLDB4OEQsMHgwMiwweEIwLDB4RkYsCi0gICAgMHg2NywweDcyLDB4RTUsMHg2
MSwweDgwLDB4RjIsMHg3QiwweERELDB4NDYsMHg3MiwweEM1LDB4NjEsMHg3RSwweEUyLDB4QUEs
MHhGQSwKLSAgICAweEE1LDB4NTksMHg0MywweDQ5LDB4N0UsMHhEOCwweDUwLDB4NzAsMHhBNSww
eDU5LDB4MDIsMHg0MSwweEZGLDB4QjcsMHgyRiwweDBCLAotICAgIDB4QzUsMHg2MSwweDQ0LDB4
NTEsMHhBRCwweEFCLDB4QTIsMHgwOCwweDY3LDB4N0EsMHhBNSwweDYxLDB4MkQsMHgwRCwweEJE
LDB4QjksCi0gICAgMHg4NywweDgyLDB4MjYsMHg3MiwweDVGLDB4NTcsMHhBRiwweDgxLDB4MkEs
MHg5MywweDI2LDB4NzIsMHhBRCwweDJELDB4MkQsMHhBRiwKLSAgICAweDJBLDB4OTMsMHhDNyww
eDhBLDB4RUEsMHg2MCwweEU4LDB4NjIsMHhDOCwweDhBLDB4MjcsMHg3MiwweEZFLDB4RjgsMHhG
OCwweDU4LAotICAgIDB4RTksMHg4QSwweDQ3LDB4N0EsMHhCRCwweDM1LDB4MkQsMHgzRCwweEU5
LDB4OEEsMHg0NiwweDcyLDB4QkYsMHhGRSwweEY4LDB4NjAsCi0gICAgMHhBOCwweDgyLDB4MDYs
MHg2QSwweDIwLDB4MjIsMHhCQSwweDVGLDB4QTgsMHg3QSwweEM1LDB4NjEsMHg4OCwweEFBLDB4
RUUsMHhENSwKLSAgICAweEM4LDB4ODIsMHgwNiwweDZBLDB4MDIsMHgwMiwweDJCLDB4QjUsMHgy
QSwweDhCLDB4ODcsMHg3QSwweDJFLDB4MkUsMHgzRiwweDk1LAotICAgIDB4QjMsMHhERCwweDZC
LDB4OTMsMHgwQiwweDJELDB4MzUsMHhGNSwweDU2LDB4RUUsMHg5MywweERELDB4MDAsMHgwMiww
eDBCLDB4MDksCi0gICAgMHg3NiwweEVFLDB4MzUsMHhFNiwweEJBLDB4RjgsMHhCOCwweEZFLDB4
QjcsMHhGNiwweDU1LDB4RUUsMHgyRCwweDJELDB4MkQsMHhBRCwKLSAgICAweEY3LDB4RkUsMHhC
NywweEY2LDB4MDIsMHgwQiwweDAzLDB4OEIsMHhENiwweEZFLDB4RjgsMHhGNiwweEZELDB4RDUs
MHg3RCwweEZELAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHgwMiwweDBBLDB4MEQsMHgyRCww
eDE4LDB4RkYsMHhGOCwweEY2LDB4MDAsMHg4MCwweDgwLDB4QTAsCi0gICAgMHgxOCwweEZGLDB4
RjgsMHhGNiwweDgyLDB4QTAsMHhDQSwweEFBLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRiwweEQ3
LDB4RkQsMHg3RiwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4NUUsMHg1QiwweERGLDB4RDUs
MHhENywweEZFLDB4RjgsMHhGNiwweDVCLDB4NUYsMHg1NywweDc1LAotICAgIDB4RjcsMHhGNiww
eEQ4LDB4RjYsMHg5QywweEEwLDB4MkEsMHhBQSwweEQ3LDB4RkUsMHhGNywweEY2LDB4REYsMHhE
RCwweERGLDB4RkYsCi0gICAgMHhEOCwweEZFLDB4RjcsMHhGNiwweDU3LDB4NUQsMHg1RiwweEZG
LDB4MTgsMHhGRiwweEY3LDB4RjYsMHg1NSwweEQ1LDB4RkYsMHhGRCwKLSAgICAweDE4LDB4RkYs
MHhGNywweEY2LDB4NTcsMHhERCwweDM2LDB4QUYsMHgxOCwweEZGLDB4RjgsMHhGNiwweEUzLDB4
QUEsMHhFQywweEZBLAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBRiwweEFCLDB4QUIsMHhB
QiwweDE4LDB4RkYsMHhGOCwweEY2LDB4RkYsMHhERSwweEZGLDB4RUEsCi0gICAgMHgxOCwweEZG
LDB4RjgsMHhGNiwweEZGLDB4N0YsMHg1RiwweEZFLDB4MTgsMHhGRiwweEQ4LDB4RjYsMHhBQSww
eEJBLDB4RjIsMHhGQSwKLSAgICAweEY4LDB4RjYsMHhENywweEY2LDB4MjAsMHhCOCwweEZCLDB4
NUYsMHhGOCwweEY2LDB4QjcsMHhFRSwweEEwLDB4Q0EsMHhFRSwweDVFLAotICAgIDB4RDcsMHhG
NiwweDk2LDB4RUUsMHg3OCwweEZBLDB4RkUsMHhGRSwweEI2LDB4RjYsMHg3NiwweEVFLDB4RkEs
MHhFRSwweEZBLDB4REUsCi0gICAgMHg5NiwweEVFLDB4NTUsMHhFNiwweEU4LDB4RUEsMHg3OCww
eDdFLDB4OTYsMHhFRSwweDU1LDB4RTYsMHhFQSwweEZBLDB4QUYsMHgyRCwKLSAgICAweDk2LDB4
RUUsMHg3NiwweEVFLDB4RkQsMHhGRCwweEU3LDB4N0IsMHg3NiwweEVFLDB4NTUsMHhFRSwweDMw
LDB4QTAsMHgyMCwweEFFLAotICAgIDB4NzYsMHhFRSwweDU2LDB4RUUsMHhGQiwweEFBLDB4Rjgs
MHhCQywweDc2LDB4RUUsMHg1NSwweEVFLDB4QUYsMHhCNywweEVBLDB4RTgsCi0gICAgMHg3Niww
eEVFLDB4NTUsMHhFRSwweDgyLDB4ODAsMHgzQiwweDJELDB4NzYsMHhFRSwweDU1LDB4RUUsMHhE
NywweDUyLDB4NjgsMHg5OCwKLSAgICAweDU1LDB4RUUsMHgzNSwweEU2LDB4NTgsMHg3MiwweEUw
LDB4MjAsMHg1NSwweEVFLDB4MTQsMHhFNiwweDBCLDB4MTUsMHg5RiwweDlDLAotICAgIDB4OTYs
MHhFRSwweDM1LDB4RUUsMHhBMiwweEFCLDB4RkYsMHhFNywweEI3LDB4RjYsMHgzNCwweEU2LDB4
ODIsMHhBRSwweDdGLDB4NTUsCi0gICAgMHhCNywweEY2LDB4MzUsMHhFNiwweDJBLDB4QUUsMHhG
RCwweDU1LDB4OTYsMHhFRSwweDU1LDB4RUUsMHgyMCwweEEwLDB4RDcsMHhENSwKLSAgICAweDk2
LDB4RUUsMHg1NSwweEVFLDB4MjIsMHgyRSwweDJGLDB4MkEsMHg5NiwweEY2LDB4RjMsMHhERCww
eDY4LDB4NjgsMHg2OCwweEY4LAotICAgIDB4MTQsMHhFNiwweEQzLDB4REQsMHhCNywweEVGLDB4
QUIsMHhBQSwweDE0LDB4RTYsMHhEMywweERELDB4RkYsMHhEQiwweEU2LDB4RkIsCi0gICAgMHgx
NCwweEU2LDB4RDMsMHhERCwweEY3LDB4NzUsMHhGNSwweEFFLDB4MTQsMHhFNiwweEY0LDB4REQs
MHg3OSwweEMzLDB4RTksMHg2QiwKLSAgICAweEY0LDB4RTUsMHgzMSwweENELDB4ODAsMHhFMCww
eDcwLDB4NzAsMHgzMSwweEM1LDB4QUYsMHhCQywweDU4LDB4NUYsMHhCNywweEZFLAotICAgIDB4
RjAsMHhDNCwweDhFLDB4QjQsMHg1NywweEZCLDB4QUUsMHg4MiwweEYwLDB4QzQsMHg0RCwweEFD
LDB4REUsMHhGRiwweEVBLDB4RTIsCi0gICAgMHhBRiwweEJDLDB4MEMsMHhBNCwweDVGLDB4RjYs
MHg4OCwweDAwLDB4OEUsMHhCNCwweEFCLDB4OUIsMHhCRiwweDJFLDB4MjgsMHhBOCwKLSAgICAw
eEQwLDB4QkMsMHg4RSwweEI0LDB4RTMsMHhBQiwweEZCLDB4QkYsMHgzMSwweEM1LDB4OEUsMHhC
NCwweDJBLDB4QUQsMHhGRCwweEQ3LAotICAgIDB4NzEsMHhDRCwweDZFLDB4QjQsMHgwMCwweDgw
LDB4RkYsMHg1RiwweDEwLDB4QzUsMHgyQywweEFDLDB4NzgsMHhEQywweDU3LDB4OTUsCi0gICAg
MHgzMSwweENELDB4OEUsMHhCNCwweDI5LDB4ODksMHgwQiwweDBCLDB4MzEsMHhDRCwweDEwLDB4
QzUsMHgzQywweDE3LDB4RDcsMHhBRiwKLSAgICAweDkyLDB4RDUsMHgzMSwweENELDB4OEYsMHgy
RCwweEE3LDB4QTUsMHg5MiwweEQ1LDB4NTEsMHhDRCwweEJCLDB4MTgsMHhCQSwweEFFLAotICAg
IDB4OTIsMHhENSwweDUxLDB4Q0QsMHhBQSwweEVGLDB4OEUsMHhGMiwweDkyLDB4RDUsMHg1MSww
eENELDB4OUUsMHhERSwweEZCLDB4RTIsCi0gICAgMHhDNywweDdBLDB4NjYsMHg3MiwweDg5LDB4
Q0IsMHhGRiwweEZGLDB4QTcsMHg3QSwweDg2LDB4N0EsMHg5MiwweEEyLDB4OUUsMHgwQiwKLSAg
ICAweEE3LDB4N0EsMHg2NiwweDcyLDB4QTAsMHhGMCwweDM4LDB4RjgsMHg2NywweDdBLDB4ODYs
MHg3MiwweDVELDB4NUIsMHhEQiwweDc1LAotICAgIDB4QzcsMHg3QSwweDg2LDB4NzIsMHg1NSww
eEY3LDB4RUIsMHhERiwweEE3LDB4N0EsMHg2NiwweDcyLDB4MkEsMHgwQSwweDI4LDB4M0UsCi0g
ICAgMHhBNywweDdBLDB4NjcsMHg3MiwweDdBLDB4RkUsMHhGRiwweDg4LDB4ODYsMHg3QSwweDY1
LDB4NkEsMHgwMiwweDA4LDB4QjIsMHg4MiwKLSAgICAweEE3LDB4N0EsMHg0NSwweDcyLDB4Rjcs
MHhENywweEJCLDB4MkMsMHg4NywweDdBLDB4NDYsMHg3MiwweDdFLDB4NjgsMHhBQSwweDhBLAot
ICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhGRiwweEEzLDB4MDgsMHgwOCwweDg2LDB4N0EsMHg2
NiwweDcyLDB4QTUsMHhGQiwweEVELDB4RkYsCi0gICAgMHg4NiwweDdBLDB4NDYsMHg3MiwweDAy
LDB4NUYsMHg1NywweDdFLDB4QzgsMHg4MiwweDI1LDB4NkEsMHgyMiwweEFGLDB4QkYsMHhERiwK
LSAgICAweEU4LDB4ODIsMHg0NSwweDcyLDB4MEEsMHg4MCwweEFGLDB4N0QsMHhFOCwweDgyLDB4
ODcsMHg3QSwweEEwLDB4ODIsMHhBMiwweDNGLAotICAgIDB4RTksMHg4QSwweEM4LDB4ODIsMHgy
RCwweDM3LDB4REYsMHhERSwweEU4LDB4OEEsMHhDOCwweDgyLDB4NjIsMHhDNCwweDZBLDB4QUUs
Ci0gICAgMHgwOSwweDhCLDB4QzgsMHg4MiwweDU5LDB4RjMsMHhFRCwweDE2LDB4RTgsMHg4QSww
eEE4LDB4ODIsMHhBRiwweDJCLDB4RkUsMHhDOCwKLSAgICAweEU4LDB4OEEsMHhBNywweDgyLDB4
M0MsMHgyOCwweDIwLDB4RUQsMHhFOCwweDhBLDB4QzgsMHg4MiwweEIwLDB4QzgsMHhFMiwweEMx
LAotICAgIDB4RTgsMHg4QSwweEM4LDB4ODIsMHg3OCwweDVFLDB4NDAsMHhCQSwweDA5LDB4OTMs
MHhBNywweDgyLDB4REYsMHhBRSwweDJBLDB4RTYsCi0gICAgMHhFOCwweDhBLDB4QTcsMHg4Miww
eDI5LDB4MDAsMHg4MiwweDBCLDB4RTgsMHg4QSwweEM4LDB4ODIsMHgwQiwweERFLDB4QTYsMHhF
OCwKLSAgICAweEU4LDB4ODIsMHg2NiwweDcyLDB4RTAsMHg3MCwweDc0LDB4N0EsMHg2NiwweDcy
LDB4ODQsMHg1MSwweDU4LDB4NUUsMHg1QSwweDc4LAotICAgIDB4NjQsMHg1MSwweEUyLDB4NDAs
MHhGQywweEY2LDB4N0UsMHhGRSwweDQ0LDB4NDksMHhFMiwweDM4LDB4MDIsMHgzRiwweEJGLDB4
NTcsCi0gICAgMHg4NCwweDUxLDB4RTIsMHgzOCwweDgyLDB4MkYsMHhGRiwweEQ1LDB4QTQsMHg1
OSwweDAyLDB4NDEsMHgwMiwweDJCLDB4MkYsMHgwRCwKLSAgICAweDQ2LDB4NzIsMHhDNSwweDYx
LDB4MEQsMHgwRCwweDJGLDB4QTUsMHhDOCwweDhBLDB4MjUsMHg3MiwweDBCLDB4MEQsMHhBRiww
eDI1LAotICAgIDB4MjksMHg5MywweEE3LDB4ODIsMHhGQiwweEJCLDB4MDksMHhBRiwweDA5LDB4
OTMsMHg2NywweDgyLDB4NUUsMHhFQSwweEEwLDB4RTgsCi0gICAgMHg4OCwweDgyLDB4MDYsMHg3
MiwweEVBLDB4RTAsMHhGQSwweDdDLDB4NjcsMHg3QSwweDI2LDB4NzIsMHg3MiwweEYyLDB4Q0Qs
MHhBRCwKLSAgICAweDQ3LDB4N0EsMHhBNCwweDYxLDB4N0EsMHg3QSwweEEwLDB4RTgsMHhFNiww
eDY5LDB4NDQsMHg1MSwweDBBLDB4RUEsMHhEOCwweDdFLAotICAgIDB4RTUsMHg2OSwweDQzLDB4
NTEsMHhBMCwweEEzLDB4NkIsMHhENSwweEE1LDB4NjEsMHgyMywweDQ5LDB4RTgsMHhFQiwweDdC
LDB4NUEsCi0gICAgMHg4NSwweDUxLDB4MDMsMHg0OSwweDJBLDB4QkYsMHhERCwweDdGLDB4ODUs
MHg1MSwweDAzLDB4NDksMHhBQSwweDBGLDB4RkYsMHhCRCwKLSAgICAweDY0LDB4NDksMHgyMyww
eDQ5LDB4QTIsMHg4OCwweDgwLDB4NjMsMHg4NCwweDUxLDB4MDIsMHg0MSwweEY3LDB4REYsMHhG
RiwweDJGLAotICAgIDB4QTUsMHg1MSwweDQzLDB4NDksMHhENSwweEQ1LDB4QTcsMHg4OCwweDA2
LDB4NjIsMHg4NCwweDUxLDB4MjUsMHhCRCwweEVELDB4NUQsCi0gICAgMHgwNiwweDYyLDB4NjQs
MHg1MSwweDIwLDB4QjgsMHhFQiwweEZELDB4MDYsMHg2MiwweDg0LDB4NTEsMHgyMCwweEFCLDB4
QTcsMHhENSwKLSAgICAweDA2LDB4NjIsMHhBNSwweDUxLDB4QUIsMHhBRiwweENGLDB4REQsMHgw
NiwweDYyLDB4ODQsMHg1MSwweDQwLDB4Q0EsMHhFQiwweDVGLAotICAgIDB4QTUsMHg1OSwweDIz
LDB4NDksMHhGQSwweEZFLDB4OUYsMHgzRiwweDA2LDB4NkEsMHg2NCwweDUxLDB4QjUsMHhGNSww
eEJCLDB4OEIsCi0gICAgMHhFNSwweDY5LDB4QzUsMHg2MSwweDVFLDB4N0YsMHg3RCwweEFFLDB4
NjcsMHg3QSwweEM1LDB4NjEsMHg1RiwweEY1LDB4QkQsMHgwQiwKLSAgICAweEE4LDB4ODIsMHg0
NywweDdBLDB4MjUsMHgyNSwweEY3LDB4N0EsMHhFOSwweDhBLDB4NDcsMHg3MiwweDJBLDB4MkEs
MHhCRCwweERELAotICAgIDB4RTksMHg4QSwweDg4LDB4ODIsMHhFMCwweDVBLDB4NTgsMHhDQiww
eEE4LDB4ODIsMHgyNywweDcyLDB4NTgsMHg3RSwweEJDLDB4RkEsCi0gICAgMHg4OCwweDdBLDB4
MjYsMHg3MiwweDJGLDB4REYsMHhGNSwweEU1LDB4QTgsMHg4MiwweEM0LDB4NjEsMHhBMCwweEFB
LDB4RUEsMHg3QSwKLSAgICAweDA2LDB4NkEsMHhFMiwweDQwLDB4QTAsMHhBOCwweEZBLDB4N0Us
MHhDNiwweDYxLDB4MjMsMHg0OSwweDJBLDB4MEYsMHgyRCwweEI1LAotICAgIDB4NDcsMHg3Miww
eEE1LDB4NTksMHgwQSwweEFGLDB4REYsMHhGNSwweEM4LDB4ODIsMHhFNSwweDYxLDB4MEEsMHgy
RiwweDJELDB4QUQsCi0gICAgMHgyRSwweEFDLDB4ODgsMHg3QSwweDJGLDB4MkYsMHhCRCwweEY1
LDB4RjQsMHhFNSwweDZBLDB4OUIsMHgwMiwweDBCLDB4MEYsMHhCNSwKLSAgICAweDU1LDB4RUUs
MHg1MiwweEQ1LDB4MDAsMHgwMCwweEFBLDB4QkQsMHhCNywweEZFLDB4MTQsMHhFNiwweDJCLDB4
MEIsMHgyRiwweDJELAotICAgIDB4RjgsMHhGRSwweEI3LDB4RkUsMHgwQiwweDJCLDB4MkEsMHgy
QiwweEY4LDB4RkUsMHhCNywweEY2LDB4QTgsMHhBQSwweDNFLDB4OUUsCi0gICAgMHgxOCwweEZG
LDB4QjgsMHhGNiwweDBBLDB4MEEsMHgyQSwweDhCLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBMiww
eDgwLDB4ODAsMHg4MCwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4QTIsMHg4RSwweEZBLDB4
RUEsMHgxNywweEZGLDB4RjgsMHhGNiwweDdFLDB4RkYsMHhGRiwweEZGLAotICAgIDB4RDgsMHhG
RSwweEY3LDB4RjYsMHg1NiwweDdGLDB4NzcsMHg3NSwweEY3LDB4RkUsMHhGOCwweEY2LDB4RkYs
MHhGRiwweEVGLDB4RkIsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEFCLDB4OEIsMHhFMiww
eEIwLDB4RjcsMHhGNiwweEQ4LDB4RjYsMHhBOCwweDBFLDB4MkEsMHg4RSwKLSAgICAweEY4LDB4
RkUsMHhGNywweEY2LDB4RkYsMHhGRiwweEJGLDB4RkYsMHgxOCwweEZGLDB4RDcsMHhGNiwweEZG
LDB4RUIsMHhFQSwweEFBLAotICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHhGQiwweEZELDB4RkYs
MHg3RiwweEY4LDB4RkUsMHgxOCwweEY3LDB4QUUsMHhBQSwweEVBLDB4QkUsCi0gICAgMHgxOCww
eEZGLDB4RjgsMHhGNiwweEZCLDB4RkUsMHhGRSwweERGLDB4RjgsMHhGRSwweDE4LDB4RjcsMHhB
QSwweEI4LDB4QUEsMHhBQSwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RkYsMHg3RiwweDVF
LDB4NzYsMHgxOCwweEZGLDB4RDcsMHhGNiwweEZBLDB4RkEsMHhGRSwweEVGLAotICAgIDB4Rjcs
MHhGNiwweEQ3LDB4RjYsMHg3NiwweDdFLDB4QkYsMHg3NywweEQ3LDB4RjYsMHhCNywweEY2LDB4
N0MsMHg3MCwweEEwLDB4RjgsCi0gICAgMHhCNywweEY2LDB4OTYsMHhFRSwweEU4LDB4RUUsMHg3
OCwweEYwLDB4OTYsMHhFRSwweDc2LDB4RUUsMHhEOCwweEYwLDB4N0IsMHg1NiwKLSAgICAweDc1
LDB4RUUsMHgzNSwweEU2LDB4RjgsMHg3RSwweEVBLDB4RkEsMHg3NSwweEVFLDB4MzUsMHhFNiww
eDBCLDB4QUIsMHhCRiwweEZELAotICAgIDB4NTUsMHhFRSwweDc2LDB4RTYsMHhCRCwweDAyLDB4
MDIsMHgyMiwweDc2LDB4RUUsMHg1NSwweEVFLDB4Q0UsMHhERSwweEQ1LDB4RDUsCi0gICAgMHg3
NiwweEVFLDB4NTUsMHhFRSwweEZGLDB4ODcsMHgzQSwweEYyLDB4NzUsMHhFRSwweDU2LDB4RUUs
MHhGQiwweEVGLDB4RjcsMHg1NSwKLSAgICAweDc2LDB4RUUsMHg1NSwweEVFLDB4QUQsMHhCRCww
eEY5LDB4QjAsMHg3NiwweEVFLDB4NTUsMHhFRSwweDY4LDB4RUIsMHgyQSwweEJFLAotICAgIDB4
NzYsMHhFRSwweDE0LDB4RTYsMHhFQSwweEEwLDB4MkEsMHgyMCwweDU1LDB4RUUsMHgxNCwweEU2
LDB4RTAsMHhGMCwweEYwLDB4RjAsCi0gICAgMHg1NSwweEVFLDB4MTQsMHhFNiwweEFCLDB4Rjks
MHhENSwweEZGLDB4MzUsMHhFNiwweDE0LDB4RTYsMHhGQSwweEQ3LDB4QjQsMHhGOCwKLSAgICAw
eDU1LDB4RUUsMHgxNCwweEU2LDB4QkIsMHgzRiwweEJCLDB4M0YsMHg5NiwweEY2LDB4NTUsMHhF
NiwweDlELDB4QUYsMHgwQiwweDIyLAotICAgIDB4OTYsMHhGNiwweDc1LDB4RUUsMHg4OSwweEFC
LDB4QzAsMHhFMCwweDk2LDB4RjYsMHhGMywweERELDB4NzgsMHg1RSwweDVDLDB4NUUsCi0gICAg
MHgxNCwweEU2LDB4RDMsMHhERCwweEFGLDB4M0YsMHg5NSwweEFELDB4MzQsMHhFNiwweEY0LDB4
RTUsMHhERCwweDhCLDB4OEYsMHhCNywKLSAgICAweDM1LDB4RTYsMHhGMywweERELDB4RkUsMHhF
RSwweEI4LDB4N0EsMHgxNCwweEU2LDB4RjQsMHhERCwweEIyLDB4MjAsMHgyMCwweEY5LAotICAg
IDB4MTQsMHhFNiwweDMxLDB4Q0QsMHg3OCwweDY4LDB4RjgsMHg3OCwweDUxLDB4Q0QsMHhGMCww
eEM0LDB4NUYsMHg1NSwweDVDLDB4N0EsCi0gICAgMHhGMCwweEM0LDB4Q0YsMHhCQywweDBBLDB4
MDMsMHg2OSwweDQyLDB4RjAsMHhDNCwweEFGLDB4QkMsMHhFQSwweEVGLDB4RjQsMHg3NywKLSAg
ICAweEQwLDB4QzQsMHhBRSwweEI0LDB4QkQsMHgyRiwweDJBLDB4ODMsMHhDRiwweEJDLDB4RUMs
MHhBMywweEY4LDB4NTgsMHg3OCwweDYwLAotICAgIDB4Q0YsMHhCQywweEVDLDB4QTMsMHg4Miww
eEFCLDB4QUYsMHhBRCwweEFGLDB4QkMsMHgyRCwweEFDLDB4QTgsMHhFRSwweDdGLDB4NUYsCi0g
ICAgMHg4RSwweEI0LDB4RUMsMHhBMywweEEwLDB4RUIsMHhGRSwweDc3LDB4Q0YsMHhCQywweEVD
LDB4OUIsMHhCRiwweEJELDB4M0YsMHgzRCwKLSAgICAweDMxLDB4Q0QsMHhEMCwweEJDLDB4MkQs
MHgyQiwweDhCLDB4OEUsMHgzMSwweENELDB4MTAsMHhDNSwweDI0LDB4RjQsMHhENywweDZCLAot
ICAgIDB4NzIsMHhENSwweDEwLDB4QzUsMHgyQiwweDJCLDB4RkQsMHhGRiwweDcyLDB4RDUsMHgz
MSwweENELDB4QTgsMHhBMiwweEE0LDB4RkYsCi0gICAgMHg5MiwweEQ1LDB4MzEsMHhDRCwweEFB
LDB4ODMsMHhGRSwweERCLDB4OTIsMHhENSwweDMxLDB4Q0QsMHhBMiwweEZBLDB4QUQsMHhGOSwK
LSAgICAweEE3LDB4N0EsMHg0NSwweDZBLDB4MjgsMHhBRiwweDNGLDB4RDUsMHhDNywweDdBLDB4
NjUsMHg2QSwweDJBLDB4QkEsMHhBRSwweERCLAotICAgIDB4QTcsMHg3QSwweDY2LDB4NzIsMHhB
OCwweEVBLDB4QUEsMHhFRCwweEE3LDB4N0EsMHg4NiwweDcyLDB4NTYsMHhCRiwweEEyLDB4QzIs
Ci0gICAgMHhDNywweDdBLDB4ODYsMHg3MiwweEZGLDB4N0UsMHhGQiwweEFCLDB4QzcsMHg3QSww
eDY2LDB4NzIsMHhCNywweEIzLDB4QkIsMHhERSwKLSAgICAweEE3LDB4N0EsMHg4NywweDcyLDB4
QUEsMHgzOCwweEJBLDB4QkUsMHhDOCwweDgyLDB4NjYsMHg3MiwweEU1LDB4QkYsMHgwQiwweEFB
LAotICAgIDB4QTcsMHg3QSwweDY2LDB4NzIsMHhGRiwweEUyLDB4RjAsMHgwQSwweEM3LDB4ODIs
MHg2NiwweDcyLDB4RkUsMHhFMiwweEVCLDB4QjYsCi0gICAgMHhBNywweDdBLDB4NDYsMHg3Miww
eDhFLDB4RUIsMHhBQSwweDlBLDB4QTcsMHg3QSwweDY2LDB4NzIsMHhEMywweEQ3LDB4QkIsMHhB
RSwKLSAgICAweDg3LDB4N0EsMHg0NSwweDcyLDB4NkEsMHhCOCwweDI4LDB4MDAsMHg4NywweDdB
LDB4NDUsMHg3MiwweDdCLDB4RTMsMHg3MiwweEMwLAotICAgIDB4ODYsMHg3QSwweDQ1LDB4NzIs
MHhGRCwweDI1LDB4RkIsMHhERiwweDg3LDB4N0EsMHgyNSwweDZBLDB4M0YsMHhCNywweEE3LDB4
QTIsCi0gICAgMHhDOCwweDgyLDB4NDUsMHg3MiwweDAzLDB4MjcsMHhGNSwweEY3LDB4RTgsMHg4
QSwweDQ2LDB4NzIsMHg4OCwweEFBLDB4M0YsMHg1NSwKLSAgICAweEU4LDB4OEEsMHg2NiwweDcy
LDB4MkEsMHhBMCwweEFBLDB4QkQsMHhFOCwweDgyLDB4QTcsMHg4MiwweDhBLDB4NkYsMHg4OSww
eEJCLAotICAgIDB4RTgsMHg4MiwweEE3LDB4N0EsMHg3NywweDZELDB4MkIsMHhBQSwweDA4LDB4
OEIsMHhBNywweDgyLDB4RkQsMHhGNSwweEJGLDB4MUUsCi0gICAgMHhFOCwweDhBLDB4QzgsMHg4
MiwweEZCLDB4NUUsMHhFQiwweDYyLDB4MDgsMHg4QiwweEE3LDB4ODIsMHhBNiwweDhCLDB4QUIs
MHg2RCwKLSAgICAweEU4LDB4ODIsMHhBOCwweDgyLDB4QUMsMHhCQiwweEZBLDB4RkEsMHhFOCww
eDgyLDB4ODcsMHg3QSwweDZBLDB4NjgsMHgyQSwweDAyLAotICAgIDB4RTgsMHg4MiwweDg2LDB4
NzIsMHg3RiwweEVBLDB4RkMsMHhFOCwweEE3LDB4N0EsMHg4MywweDUxLDB4N0UsMHg3OCwweDc4
LDB4NzgsCi0gICAgMHg0MywweDQ5LDB4RTIsMHgzOCwweEZFLDB4RkMsMHg3QSwweEZDLDB4MDMs
MHg0MSwweEUyLDB4MzgsMHhGRSwweDlFLDB4NUQsMHg3NywKLSAgICAweEUyLDB4MzgsMHg4MSww
eDMwLDB4QUEsMHhEQSwweEFBLDB4QUMsMHg2NCwweDUxLDB4QzIsMHgzOCwweDBGLDB4MkQsMHhG
NSwweDU1LAotICAgIDB4RTUsMHg2OSwweDAzLDB4NDksMHgwMiwweDBBLDB4QUYsMHhCRCwweDg3
LDB4ODIsMHhBNCwweDYxLDB4MkIsMHhBRiwweEY1LDB4NTUsCi0gICAgMHgwOSwweDkzLDB4MjYs
MHg3MiwweDJBLDB4MkIsMHhGRiwweEQ1LDB4MDksMHg5MywweDI3LDB4N0EsMHhFOCwweDZBLDB4
REYsMHg1NywKLSAgICAweDg4LDB4ODIsMHgwNiwweDcyLDB4RkUsMHhERCwweDlFLDB4MjIsMHg2
NywweDdBLDB4MDYsMHg2QSwweEVGLDB4RkYsMHg3RSwweDU4LAotICAgIDB4MDYsMHg2QSwweEM1
LDB4NjksMHg2OCwweDVDLDB4N0YsMHg5NywweDI2LDB4NzIsMHg4NCwweDU5LDB4NTcsMHg3Riww
eEJBLDB4MEEsCi0gICAgMHhFNSwweDY5LDB4NDMsMHg1MSwweEY1LDB4QkYsMHhCQSwweEEwLDB4
QzUsMHg2MSwweDIzLDB4NDksMHg3RSwweEZFLDB4RjgsMHhFOCwKLSAgICAweDQzLDB4NDksMHgw
MywweDQ5LDB4RUEsMHhBRSwweEVDLDB4OUUsMHg0MywweDQ5LDB4MDIsMHg0MSwweDBELDB4OEEs
MHgwQSwweDAwLAotICAgIDB4NjQsMHg0OSwweDIzLDB4NDksMHhFQiwweEFCLDB4M0EsMHg4QSww
eDg1LDB4NTEsMHgyMywweDQxLDB4MkIsMHgwRSwweEJFLDB4NTcsCi0gICAgMHhBNSwweDU5LDB4
MDMsMHg0MSwweDgwLDB4QTIsMHhGRSwweDc1LDB4NjQsMHg0OSwweDIzLDB4NDEsMHgwMCwweEY0
LDB4N0YsMHg2NSwKLSAgICAweDg0LDB4NTEsMHgyMywweDQxLDB4RjIsMHhFRiwweEJGLDB4REQs
MHg4NCwweDUxLDB4MjMsMHg0MSwweDBBLDB4N0UsMHhERSwweEZGLAotICAgIDB4QTUsMHg1OSww
eDIzLDB4NDEsMHgwQSwweDJBLDB4RDcsMHg1NSwweEM1LDB4NTksMHgwMywweDQxLDB4QzgsMHhG
QSwweEY1LDB4NTUsCi0gICAgMHhFNiwweDYxLDB4NDMsMHg0OSwweEI1LDB4M0YsMHgzRCwweDJE
LDB4NjcsMHg3QSwweEU2LDB4NjksMHhBRiwweDBELDB4QTgsMHhCOSwKLSAgICAweDY3LDB4N0Es
MHgwNiwweDZBLDB4NUYsMHhFQywweDhCLDB4QTAsMHhDOCwweDgyLDB4MjYsMHg3MiwweEJELDB4
QkQsMHgyRCwweEVBLAotICAgIDB4RUEsMHg4QSwweDQ3LDB4NzIsMHg3QSwweEZBLDB4RTgsMHhG
OCwweDY3LDB4N0EsMHhDNiwweDY5LDB4OEEsMHhCQiwweEY4LDB4NzgsCi0gICAgMHhDOSwweDhB
LDB4RTUsMHg2OSwweDhBLDB4QUIsMHhERiwweDc1LDB4NjgsMHg3QSwweEM1LDB4NjEsMHgwMCww
eDAwLDB4OEEsMHhGRCwKLSAgICAweDY4LDB4N0EsMHhDNSwweDU5LDB4ODgsMHhFMCwweEVBLDB4
N0UsMHg0NywweDcyLDB4MDMsMHg0OSwweEEwLDB4RUEsMHhGQSwweDVGLAotICAgIDB4NjQsMHg1
MSwweDAyLDB4NDEsMHg1OCwweDdFLDB4RUUsMHhCRiwweEE1LDB4NTksMHgwMywweDQ5LDB4QUQs
MHgyRCwweDJGLDB4MkYsCi0gICAgMHhFNSwweDYxLDB4ODUsMHg1MSwweEVGLDB4QTUsMHgyQiww
eEFBLDB4NDcsMHg3MiwweEM0LDB4NjEsMHgwOSwweDhGLDB4RUUsMHhCQSwKLSAgICAweEE4LDB4
N0EsMHgwNSwweDZBLDB4MEIsMHhGRiwweEY1LDB4QkQsMHhBQywweEEzLDB4NDYsMHg3MiwweDJG
LDB4QkQsMHhGRCwweEZGLAotICAgIDB4MTEsMHhDRCwweDQ2LDB4NzIsMHgwMiwweEFGLDB4RkYs
MHg1RiwweDkzLDB4REQsMHg4NywweDdBLDB4MDAsMHgyQSwweEZGLDB4NTUsCi0gICAgMHhCNyww
eEZFLDB4NkEsMHg5QiwweDAwLDB4QUEsMHhGRiwweDU1LDB4OTcsMHhGNiwweDRELDB4QjQsMHgw
MCwweDAwLDB4QkYsMHhENSwKLSAgICAweEY4LDB4RkUsMHg5MiwweEQ1LDB4MDAsMHgwMiwweDBC
LDB4MkQsMHgxOCwweEZGLDB4RjgsMHhGRSwweEJGLDB4QkUsMHhCNywweEQ1LAotICAgIDB4MTgs
MHhGRiwweEY4LDB4RjYsMHhFQSwweEVBLDB4QkUsMHhCNywweDE4LDB4RkYsMHhGOCwweEY2LDB4
RjcsMHhGRiwweEZBLDB4QUUsCi0gICAgMHhGOCwweEZFLDB4RjcsMHhGNiwweEZGLDB4QkYsMHhG
RiwweEZGLDB4MTgsMHhGRiwweEQ4LDB4RjYsMHhFQSwweEVFLDB4RkEsMHg2RSwKLSAgICAweEY4
LDB4RjYsMHhENywweEY2LDB4QTgsMHhCRSwweEFFLDB4QUUsMHhGNywweEY2LDB4RDcsMHhGNiww
eDNCLDB4QUIsMHhBQywweDIyLAotICAgIDB4RDgsMHhGRSwweDE3LDB4RjcsMHhFQSwweEZBLDB4
QkYsMHhGRiwweDE4LDB4RkYsMHhGNywweEY2LDB4RDcsMHhCRCwweEFGLDB4QUIsCi0gICAgMHgx
OCwweEZGLDB4RjgsMHhGNiwweEZGLDB4RkEsMHhFQiwweEVBLDB4MTgsMHhGRiwweEY4LDB4RjYs
MHhGRSwweEZFLDB4QkYsMHhGNywKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RkYsMHg3OCww
eEVBLDB4NkEsMHhGOCwweEZFLDB4MTgsMHhGNywweEFCLDB4QUUsMHg4QSwweEE4LAotICAgIDB4
MTgsMHhGRiwweEQ4LDB4RjYsMHhBOSwweEFFLDB4QUUsMHhFQSwweEY3LDB4RjYsMHhCNywweEY2
LDB4QTAsMHhFOCwweDY4LDB4N0EsCi0gICAgMHhENywweEY2LDB4QjcsMHhGNiwweDAwLDB4QTIs
MHhBOSwweDBELDB4RDcsMHhGNiwweEI3LDB4RjYsMHhEQywweDU1LDB4NzYsMHg1NiwKLSAgICAw
eEI2LDB4RjYsMHg5NiwweEVFLDB4RjgsMHhGQywweDdFLDB4NTYsMHg5NiwweEVFLDB4NzYsMHhF
RSwweDVFLDB4QkEsMHg4MCwweEE4LAotICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHg1RiwweEZG
LDB4QUUsMHhBMiwweDU1LDB4RUUsMHgzNSwweEU2LDB4RkUsMHhGRiwweEZFLDB4MTgsCi0gICAg
MHg3NiwweEVFLDB4NTUsMHhFRSwweEVGLDB4RUEsMHhBQSwweDAxLDB4NzYsMHhFRSwweDU1LDB4
RUUsMHhBRCwweDI5LDB4MDAsMHhBMCwKLSAgICAweEI1LDB4RjYsMHg1NiwweEVFLDB4NUYsMHhG
RiwweDdELDB4RUYsMHg3NiwweEVFLDB4NTUsMHhFRSwweDk1LDB4NTUsMHg3RCwweEY3LAotICAg
IDB4NzYsMHhFRSwweDU1LDB4RUUsMHhGQSwweEY4LDB4MjcsMHgzNywweDc2LDB4RUUsMHg1NSww
eEVFLDB4OUEsMHhCMiwweEJBLDB4QUEsCi0gICAgMHg3NiwweEVFLDB4NTUsMHhFRSwweEY4LDB4
NzgsMHhGQiwweEQ3LDB4NzUsMHhFRSwweDE1LDB4RTYsMHhFQSwweEFBLDB4QTgsMHgwOCwKLSAg
ICAweDU1LDB4RUUsMHgxNSwweEU2LDB4RkEsMHhGRSwweEZDLDB4QkUsMHg1NSwweEVFLDB4MzUs
MHhFNiwweDVELDB4RUIsMHgyRiwweDNGLAotICAgIDB4NTUsMHhFRSwweDM0LDB4RTYsMHgxNSww
eEU1LDB4RTAsMHg0MCwweDk2LDB4RjYsMHgzNSwweEU2LDB4MDMsMHhBQiwweDI5LDB4RTUsCi0g
ICAgMHg5NiwweEY2LDB4MzUsMHhFNiwweDg4LDB4RjIsMHhGQSwweDdGLDB4NzUsMHhFRSwweEQz
LDB4REQsMHg1OCwweDdBLDB4NUUsMHg1NiwKLSAgICAweDE0LDB4RTYsMHhCMywweEQ1LDB4QUIs
MHgzRCwweEFGLDB4REYsMHgzNCwweEU2LDB4RjQsMHhFNSwweEZGLDB4RUIsMHhBRiwweEFELAot
ICAgIDB4MzUsMHhFNiwweEQzLDB4REQsMHg3QSwweDdBLDB4N0EsMHg4QSwweDE1LDB4RTYsMHhC
MywweEQ1LDB4QkIsMHhENSwweEY3LDB4RTgsCi0gICAgMHhEMywweERELDB4MzAsMHhDRCwweEUw
LDB4NjAsMHg3OCwweDYwLDB4NTEsMHhDRCwweEYwLDB4QzQsMHhFOCwweDdFLDB4N0YsMHhGRSwK
LSAgICAweDEwLDB4QzUsMHhBRSwweEJDLDB4RkIsMHhGRiwweDVGLDB4QjgsMHhGMCwweEJDLDB4
QUYsMHhCQywweEQ1LDB4OUUsMHhBMywweEFFLAotICAgIDB4MTAsMHhDNSwweENGLDB4QkMsMHhG
QiwweEY5LDB4QTksMHg5MiwweDMxLDB4Q0QsMHgyRCwweEFDLDB4N0EsMHhFMiwweDgyLDB4MDAs
Ci0gICAgMHgxMSwweEM1LDB4QUIsMHg5QiwweEI3LDB4RkYsMHg3QSwweDYwLDB4MkQsMHhBQyww
eDA5LDB4OEIsMHg4MCwweEFBLDB4RkYsMHhGNywKLSAgICAweEVDLDB4QTMsMHg0QSwweDhCLDB4
RTgsMHhGQSwweERGLDB4NTUsMHhEMCwweEJDLDB4OEMsMHg5QiwweDJELDB4MkQsMHgwRCwweDJE
LAotICAgIDB4MTAsMHhDNSwweENGLDB4QkMsMHgwMiwweDBCLDB4MEIsMHg5RCwweDEwLDB4QzUs
MHhGMCwweEM0LDB4MDIsMHg4QywweDc2LDB4NjcsCi0gICAgMHg1MSwweENELDB4RjAsMHhDNCww
eEJBLDB4MkYsMHgzRiwweEJELDB4NTEsMHhDRCwweDMxLDB4Q0QsMHg4MywweEE3LDB4RDcsMHhC
NywKLSAgICAweDcyLDB4RDUsMHgzMSwweENELDB4QTIsMHhFRiwweERGLDB4NzcsMHg3MiwweEQ1
LDB4MzAsMHhDRCwweEJCLDB4RUEsMHhGRSwweDU1LAotICAgIDB4NDYsMHg2QSwweDA1LDB4NkEs
MHgyQiwweEFCLDB4QUIsMHhGRiwweDg2LDB4NzIsMHhFNCwweDYxLDB4M0UsMHhCNywweEZGLDB4
RkUsCi0gICAgMHhBNywweDdBLDB4MDUsMHg2QSwweDhBLDB4Q0YsMHg3RiwweDdELDB4QTcsMHg3
QSwweDA1LDB4NjIsMHg4MiwweDIyLDB4QUIsMHhGRCwKLSAgICAweEE3LDB4N0EsMHg0NiwweDZB
LDB4MDIsMHgyMCwweEIyLDB4M0QsMHhDNywweDdBLDB4NjcsMHg3MiwweEI0LDB4OUEsMHhGQyww
eEVBLAotICAgIDB4QTcsMHg3QSwweDQ2LDB4NzIsMHgwMiwweDAwLDB4QTIsMHg2MCwweEM4LDB4
N0EsMHg2NiwweDcyLDB4RjgsMHhGQSwweDdGLDB4RkIsCi0gICAgMHhDNywweDgyLDB4NjYsMHg3
MiwweEJGLDB4QTcsMHgzRiwweEJGLDB4QzcsMHg3QSwweDg2LDB4N0EsMHhENSwweDc5LDB4Nzcs
MHhGNywKLSAgICAweEE3LDB4N0EsMHg0NiwweDcyLDB4OUYsMHhFRSwweDgwLDB4MjgsMHhBNyww
eDdBLDB4NjYsMHg3MiwweEJBLDB4RTcsMHgxRiwweDIzLAotICAgIDB4QTcsMHg3QSwweDg3LDB4
N0EsMHgzRSwweDlDLDB4OUIsMHhFOSwweEE3LDB4N0EsMHg2NiwweDcyLDB4N0EsMHg1NywweEJD
LDB4QjQsCi0gICAgMHg2NiwweDdBLDB4QTcsMHg3MiwweDJFLDB4QkUsMHhCRSwweEFFLDB4Qzcs
MHg4MiwweDQ2LDB4NzIsMHg1RiwweEVGLDB4QUIsMHgyQiwKLSAgICAweEE3LDB4N0EsMHg2Niww
eDcyLDB4NUYsMHhERSwweERDLDB4QzIsMHg4NywweDdBLDB4NDYsMHg3MiwweDdBLDB4NzgsMHhG
RiwweEEzLAotICAgIDB4QTcsMHg4MiwweDQ2LDB4NzIsMHhCRCwweEQ3LDB4QUYsMHg4QSwweEE3
LDB4ODIsMHg0NiwweDcyLDB4MjIsMHhCQiwweDdGLDB4RjksCi0gICAgMHhFOCwweDhBLDB4NDYs
MHg3MiwweDAyLDB4QUUsMHhGNywweDc1LDB4MDksMHg4QiwweDY2LDB4NzIsMHg4MiwweEFBLDB4
QkIsMHhENSwKLSAgICAweDA5LDB4OEIsMHg4NywweDdBLDB4OEEsMHhFRiwweEFGLDB4RkQsMHhF
OCwweDgyLDB4QTcsMHg3QSwweDdFLDB4MkYsMHgwQiwweDBCLAotICAgIDB4MjksMHg4QiwweEM4
LDB4ODIsMHhENSwweDlELDB4QkYsMHhGMiwweDA4LDB4OEIsMHhBNywweDdBLDB4QUEsMHhBMiww
eEUwLDB4REEsCi0gICAgMHhFOCwweDgyLDB4QTcsMHg3QSwweEU4LDB4QkYsMHhBRSwweEJFLDB4
QzcsMHg3QSwweEEzLDB4NTksMHg3OCwweEUwLDB4QTAsMHg4MCwKLSAgICAweDA1LDB4NjIsMHhF
MiwweDQwLDB4NUUsMHg1RSwweDVBLDB4RjgsMHgwMywweDQxLDB4RTIsMHgzOCwweDc3LDB4MEUs
MHhCRSwweEZELAotICAgIDB4MDIsMHg0MSwweEExLDB4MzAsMHhGRSwweEZDLDB4RjYsMHhGRSww
eEUyLDB4MzgsMHg4MSwweDMwLDB4QUEsMHhBRiwweEZGLDB4REIsCi0gICAgMHg0NCwweDUxLDB4
QTIsMHgzOCwweDBCLDB4QUYsMHhCRCwweEY1LDB4ODQsMHg2MSwweEMyLDB4NDAsMHgwMCwweEFC
LDB4RkYsMHg1NSwKLSAgICAweEM1LDB4NjksMHgwMywweDQ5LDB4MDIsMHhCQiwweERGLDB4RTUs
MHg0NywweDdBLDB4ODQsMHg2MSwweDNCLDB4M0YsMHgzNSwweDJELAotICAgIDB4ODgsMHg4Miww
eDI2LDB4NzIsMHg4RSwweEE3LDB4QUUsMHgwOCwweEE4LDB4ODIsMHhDNSwweDY5LDB4N0UsMHg3
QSwweEJBLDB4MDAsCi0gICAgMHg4OCwweDgyLDB4RTUsMHg2OSwweDU1LDB4NTcsMHhCRiwweDI4
LDB4NjcsMHg3QSwweEU1LDB4NjksMHhCRCwweDVELDB4QjcsMHgwMCwKLSAgICAweEE4LDB4ODIs
MHhFNSwweDYxLDB4NTcsMHhGRiwweEFCLDB4ODIsMHg4NywweDdBLDB4NjMsMHg1MSwweDVGLDB4
N0UsMHhGQSwweEE4LAotICAgIDB4QTUsMHg1OSwweDIzLDB4NDksMHhENywweEZGLDB4RkEsMHhF
MCwweDY0LDB4NTEsMHg0MywweDQ5LDB4NjUsMHhGQSwweEY4LDB4N0QsCi0gICAgMHg2NCwweDUx
LDB4MDMsMHg0MSwweEEwLDB4QTIsMHhGMiwweDdFLDB4MjMsMHg0OSwweEMyLDB4MzAsMHhCOCww
eEZBLDB4NUEsMHhGQSwKLSAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4MkIsMHgyQiwweDhCLDB4
QTUsMHg2NCwweDQ5LDB4MDMsMHg0MSwweDNGLDB4RUQsMHhGQSwweDdCLAotICAgIDB4NDMsMHg0
OSwweEUzLDB4MzgsMHgyOCwweEEyLDB4RkEsMHg3RSwweDIzLDB4NDEsMHhBMSwweDMwLDB4ODAs
MHhGQSwweDc2LDB4NUYsCi0gICAgMHgwMywweDQxLDB4ODEsMHgyOCwweDI4LDB4QUYsMHhBNSww
eDI1LDB4NDQsMHg0OSwweEMyLDB4MzgsMHhGRiwweEY1LDB4QUYsMHgwQSwKLSAgICAweEU2LDB4
NjEsMHgwMywweDQxLDB4MjksMHgzRCwweDJGLDB4MkYsMHg2NywweDdBLDB4MDYsMHg2QSwweDlE
LDB4QkYsMHhDMiwweDYzLAotICAgIDB4NjcsMHg3QSwweDI3LDB4NzIsMHgyMCwweDA4LDB4QkYs
MHg3NSwweDY4LDB4N0EsMHgwNiwweDZBLDB4QTAsMHhFMCwweDZDLDB4QUEsCi0gICAgMHg0Nyww
eDdBLDB4RTUsMHg2OSwweEEwLDB4RkUsMHg1RiwweDVFLDB4MDYsMHg3MiwweDg0LDB4NTksMHhF
MCwweEU4LDB4RkUsMHg3RSwKLSAgICAweEU1LDB4NjEsMHg4NCwweDU5LDB4MkQsMHgzNSwweEZG
LDB4QkQsMHhFNiwweDY5LDB4ODQsMHg1OSwweDI4LDB4MEEsMHhGQiwweDVFLAotICAgIDB4RTYs
MHg2MSwweDg0LDB4NTksMHhBMCwweDgwLDB4QUQsMHg3RCwweEE0LDB4NTksMHgwMywweDQxLDB4
RkUsMHg3RSwweDdDLDB4N0UsCi0gICAgMHgyMywweDQ5LDB4MDMsMHg0MSwweDJCLDB4RDUsMHhE
RiwweERCLDB4ODQsMHg1MSwweDIzLDB4NDksMHhCRCwweDI1LDB4MjUsMHgyNSwKLSAgICAweDQ3
LDB4NzIsMHhBNSwweDU5LDB4QkQsMHgwOSwweDJCLDB4MkIsMHg0NywweDcyLDB4QTQsMHg2MSww
eEFBLDB4RjgsMHg3QywweDVDLAotICAgIDB4ODgsMHg3QSwweEU1LDB4NjksMHgyQiwweDBELDB4
MkQsMHgyNSwweDBBLDB4OEIsMHhBOCwweDgyLDB4RTUsMHg4QiwweDhCLDB4MkEsCi0gICAgMHhF
OSwweDhBLDB4MjYsMHg3MiwweEYyLDB4RUEsMHg3OCwweDc4LDB4ODcsMHg3QSwweDA1LDB4NkEs
MHgwOCwweDJGLDB4QkYsMHhCRCwKLSAgICAweDRBLDB4OTMsMHg2NywweDdBLDB4MEIsMHgyRiww
eEY1LDB4RDUsMHgyRCwweEFDLDB4QzgsMHg4MiwweDJGLDB4QkYsMHhENSwweEY1LAotICAgIDB4
QjcsMHhGNiwweENDLDB4QTMsMHgwQiwweDJCLDB4MkQsMHhBRCwweEQ4LDB4RkUsMHg1MSwweEQ1
LDB4MDAsMHgwMCwweEEyLDB4NUYsCi0gICAgMHhENywweEY2LDB4NzIsMHhENSwweDAwLDB4MDAs
MHgwMiwweEFELDB4RjgsMHhGRSwweDk2LDB4RUUsMHgwMCwweDA4LDB4MkEsMHhGRCwKLSAgICAw
eEY4LDB4RkUsMHhENywweEY2LDB4QUEsMHhBOCwweEJCLDB4QTUsMHhGOCwweEZFLDB4RDcsMHhG
NiwweEFBLDB4QUEsMHhCRSwweEFFLAotICAgIDB4RjgsMHhGRSwweEQ3LDB4RjYsMHhEQiwweEZG
LDB4RkEsMHhEQSwweEY4LDB4RkUsMHhENywweEY2LDB4QUEsMHhBRSwweEFGLDB4OUIsCi0gICAg
MHhGOCwweEZFLDB4RjcsMHhGNiwweEJGLDB4RUIsMHhBQSwweDgyLDB4RDgsMHhGRSwweDE3LDB4
RjcsMHhGRiwweEVFLDB4QUEsMHg4QSwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RUEsMHhG
RSwweEJCLDB4RkYsMHhGOCwweEZFLDB4MTgsMHhGNywweEFBLDB4QUUsMHgwQSwweEEyLAotICAg
IDB4RjgsMHhGRSwweDE4LDB4RjcsMHhCRSwweEFBLDB4MDAsMHgwMCwweEY4LDB4RkUsMHgxOCww
eEY3LDB4QUEsMHhBQSwweDA4LDB4MjIsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEVBLDB4
QkEsMHhGRCwweEJCLDB4MTgsMHhGRiwweEI3LDB4RjYsMHg3RiwweDdGLDB4NzYsMHg3RiwKLSAg
ICAweEQ4LDB4RkUsMHhCNywweEVFLDB4QUEsMHhFQSwweDdBLDB4N0YsMHhCNiwweEY2LDB4OTYs
MHhFRSwweEE4LDB4RUEsMHhFMCwweEVBLAotICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHg1Riww
eERFLDB4N0UsMHg3QiwweDk2LDB4RUUsMHg3NiwweEVFLDB4QTAsMHgyOCwweDVELDB4NUYsCi0g
ICAgMHg5NiwweEY2LDB4NzYsMHhFRSwweDVBLDB4RjQsMHhFRCwweEVGLDB4OTYsMHhGNiwweDU1
LDB4RUUsMHg1NSwweDdFLDB4RTIsMHg4MCwKLSAgICAweDc2LDB4RUUsMHg1NSwweEVFLDB4QTks
MHhFRiwweEU4LDB4RjAsMHg3NSwweEVFLDB4NTYsMHhFRSwweEFBLDB4REYsMHg1NSwweDk3LAot
ICAgIDB4OTcsMHhGNiwweDU2LDB4RUUsMHhGRSwweEVFLDB4RUIsMHhGRSwweDc2LDB4RUUsMHgz
NSwweEU2LDB4OEYsMHgyRSwweDBFLDB4MDIsCi0gICAgMHg3NiwweEVFLDB4NTUsMHhFRSwweDJE
LDB4RjcsMHhCRSwweDAwLDB4NzYsMHhFRSwweDU1LDB4RUUsMHhGRSwweEZDLDB4RkYsMHhCRSwK
LSAgICAweDc2LDB4RUUsMHg1NSwweEVFLDB4REUsMHhEQiwweEFCLDB4QTIsMHg3NiwweEVFLDB4
NTUsMHhFRSwweDBELDB4MkUsMHhCQSwweEI2LAotICAgIDB4NzUsMHhFRSwweDM1LDB4RTYsMHg3
NiwweDVDLDB4QkMsMHhFRSwweDc1LDB4RUUsMHgzNCwweEVFLDB4QjUsMHhBRiwweEFCLDB4MjIs
Ci0gICAgMHg3NSwweEVFLDB4NTUsMHhFRSwweDYyLDB4QzUsMHgyMCwweEZBLDB4NTUsMHhFRSww
eDE0LDB4RTYsMHhBQiwweEJGLDB4RkMsMHg5QSwKLSAgICAweDc1LDB4RUUsMHgzNCwweEU2LDB4
RTksMHhFQiwweDdCLDB4N0YsMHgxNCwweEU2LDB4QjMsMHhENSwweEY4LDB4RjgsMHg3QywweDc4
LAotICAgIDB4RjMsMHhERCwweEIzLDB4RDUsMHhENiwweEI3LDB4RUQsMHhBQiwweDM0LDB4RTYs
MHhEMywweERELDB4MkIsMHgyRCwweEFELDB4QUQsCi0gICAgMHgzNSwweEVFLDB4MTQsMHhFNiww
eDJELDB4MkIsMHgyQSwweDA5LDB4MzQsMHhFNiwweEYzLDB4RTUsMHg3OCwweEI4LDB4MjAsMHgw
MCwKLSAgICAweDU1LDB4RUUsMHg1MSwweENELDB4N0YsMHg3QSwweDdBLDB4RTAsMHg3MiwweEQ1
LDB4RjAsMHhDNCwweDVGLDB4RkIsMHhGQSwweEE4LAotICAgIDB4MzEsMHhDNSwweEFGLDB4QkMs
MHhGRSwweERBLDB4RkMsMHhGQSwweDEwLDB4QzUsMHhEMCwweEJDLDB4RjUsMHhBRCwweDhCLDB4
MDAsCi0gICAgMHgzMSwweEM1LDB4RjAsMHhDNCwweEI1LDB4QTUsMHhBMiwweDJBLDB4NTIsMHhD
RCwweDEwLDB4QzUsMHhFOSwweDdGLDB4QkYsMHgwQSwKLSAgICAweDMxLDB4Q0QsMHg4RiwweEJD
LDB4NjAsMHg4MiwweDAwLDB4MDAsMHhEMCwweEJDLDB4QzgsMHg4MiwweDVGLDB4NUUsMHg3Qyww
eDc4LAotICAgIDB4NkIsMHg5MywweEE4LDB4N0EsMHgzRiwweEJELDB4MzUsMHhCNSwweEFGLDB4
QkMsMHg4QiwweDkzLDB4MDksMHgyOSwweDBCLDB4MDksCi0gICAgMHhGMCwweEM0LDB4QUUsMHhC
NCwweDAzLDB4MEIsMHhFRiwweEU3LDB4RjAsMHhDNCwweENGLDB4QkMsMHgyOCwweDYwLDB4OEEs
MHhEOCwKLSAgICAweDMwLDB4Q0QsMHhEMCwweEJDLDB4M0IsMHhBQiwweEZGLDB4N0YsMHg1MSww
eENELDB4RjAsMHhDNCwweEFBLDB4OEIsMHhFRiwweEU1LAotICAgIDB4NTEsMHhDRCwweEYwLDB4
QzQsMHhBOCwweEVBLDB4REYsMHg3RiwweDUxLDB4Q0QsMHhGMCwweEM0LDB4QUIsMHhBMywweEZF
LDB4N0UsCi0gICAgMHg0NSwweDZBLDB4RTQsMHg2OSwweEVCLDB4RkYsMHg2RSwweEI4LDB4NDUs
MHg2QSwweDA1LDB4NjIsMHhGRiwweDdGLDB4REYsMHhBQSwKLSAgICAweDQ1LDB4NkEsMHgwNSww
eDZBLDB4OUEsMHhGQiwweEVBLDB4QkEsMHg0NiwweDZBLDB4RTUsMHg2MSwweDUyLDB4N0EsMHhC
RSwweEI4LAotICAgIDB4NjYsMHg2QSwweDA1LDB4NkEsMHgyRCwweEVGLDB4NTUsMHg3NiwweEE3
LDB4N0EsMHgwNSwweDYyLDB4MEEsMHhCQiwweEY1LDB4RjUsCi0gICAgMHg4NywweDdBLDB4MjUs
MHg2QSwweDAyLDB4MDAsMHgyRSwweDU3LDB4QTcsMHg3QSwweDI2LDB4NkEsMHg4MCwweDAwLDB4
MkEsMHhCRCwKLSAgICAweEM3LDB4N0EsMHg4NywweDdBLDB4QjUsMHhGRiwweDlELDB4NTcsMHhB
NywweDdBLDB4ODcsMHg3QSwweDA5LDB4RDMsMHgxNCwweDEzLAotICAgIDB4QzcsMHg4MiwweDY2
LDB4N0EsMHg3RSwweEVCLDB4RUUsMHhGQSwweEE3LDB4N0EsMHg2NywweDdBLDB4MkEsMHhCMyww
eEFCLDB4QkUsCi0gICAgMHhBNywweDdBLDB4ODcsMHg3QSwweEFGLDB4QjcsMHgyNywweEI1LDB4
QTcsMHg3QSwweDg3LDB4N0EsMHg1NywweEY0LDB4QzMsMHhBQiwKLSAgICAweEM3LDB4ODIsMHg2
NiwweDcyLDB4QkUsMHhBRiwweEFELDB4QkUsMHhBNywweDdBLDB4NjYsMHg3QSwweDJELDB4ODgs
MHgwMCwweDBDLAotICAgIDB4QzcsMHg4MiwweDg3LDB4N0EsMHg3NywweEZDLDB4RUEsMHhBRSww
eEE3LDB4N0EsMHg0NiwweDcyLDB4QUIsMHg4OSwweDAyLDB4MDgsCi0gICAgMHhBNywweDdBLDB4
NjYsMHg3MiwweDU3LDB4RUUsMHg4OCwweDAyLDB4QTcsMHg3QSwweDY2LDB4NzIsMHg3NywweEZG
LDB4RkEsMHhGMiwKLSAgICAweEM3LDB4ODIsMHg0NiwweDcyLDB4REYsMHhERiwweEZCLDB4Qjgs
MHg4NiwweDdBLDB4MjQsMHg2QSwweEE2LDB4OEEsMHg4QSwweEIwLAotICAgIDB4ODcsMHg3QSww
eDQ2LDB4NzIsMHg4RCwweDZCLDB4NjgsMHhDQiwweEU4LDB4ODIsMHg0NSwweDcyLDB4MkIsMHhB
RiwweEQ3LDB4NUYsCi0gICAgMHgwOCwweDhCLDB4NjYsMHg3MiwweDAyLDB4QTIsMHhBRiwweDU3
LDB4RTgsMHg4MiwweEE3LDB4N0EsMHhBMCwweDAwLDB4MEUsMHgzNSwKLSAgICAweEU4LDB4ODIs
MHhBNywweDgyLDB4MkYsMHgwOCwweDIwLDB4RTgsMHhFOCwweDgyLDB4QTYsMHg3QSwweEVBLDB4
RkEsMHgwMiwweENFLAotICAgIDB4QzcsMHg3QSwweDYzLDB4NTEsMHg1QSwweDU4LDB4RTgsMHg4
MCwweEE0LDB4NTksMHhDMiwweDM4LDB4RDcsMHhENywweDdFLDB4RjgsCi0gICAgMHhFMiwweDQw
LDB4QzIsMHgzOCwweDU3LDB4NTcsMHg1RSwweDYwLDB4RTIsMHgzOCwweDgxLDB4MzgsMHg3QSww
eEZBLDB4QTgsMHhBMCwKLSAgICAweEUzLDB4NDAsMHg4MSwweDM4LDB4MkQsMHgwRiwweEFCLDB4
MDIsMHg0NCwweDU5LDB4QzIsMHg0MCwweDk1LDB4QjksMHgwQiwweDJGLAotICAgIDB4QTUsMHg2
MSwweDIzLDB4NTEsMHhCRCwweEFGLDB4MkYsMHgyQiwweDQ3LDB4N0EsMHhDNSwweDY5LDB4QkQs
MHgyRCwweEE5LDB4ODUsCi0gICAgMHhBOCwweDgyLDB4NDcsMHg3QSwweDAzLDB4NUIsMHg3RCww
eEY1LDB4QzksMHg4MiwweDQ3LDB4NzIsMHhBMiwweDdCLDB4N0QsMHhCRiwKLSAgICAweDg4LDB4
ODIsMHgwNiwweDZBLDB4MDgsMHhFOCwweDVGLDB4RUMsMHhBOCwweDgyLDB4QzQsMHg2OSwweDAw
LDB4MDIsMHhCRCwweEI3LAotICAgIDB4RTksMHg4QSwweDI3LDB4NzIsMHg4MiwweDAyLDB4QUYs
MHg3RiwweDY3LDB4N0EsMHhDNSwweDU5LDB4QTgsMHhEQywweDc4LDB4RkUsCi0gICAgMHgyNyww
eDZBLDB4NDQsMHg0OSwweDY4LDB4RTAsMHhFQiwweDU3LDB4NjQsMHg1MSwweEMyLDB4MzgsMHhB
OCwweEZDLDB4RkUsMHg3RiwKLSAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4QTAsMHhBQSwweDdE
LDB4NUIsMHgwMywweDM5LDB4QzIsMHgzOCwweEFBLDB4QUYsMHhBRCwweEFELAotICAgIDB4MDMs
MHg0MSwweEUyLDB4MzgsMHgzNywweEY2LDB4MzIsMHhCRSwweDI0LDB4NDEsMHhFMywweDM4LDB4
QzAsMHhFMiwweDdCLDB4NTcsCi0gICAgMHhFMywweDM4LDB4QTIsMHgzMCwweEUwLDB4NDgsMHhB
QywweDgwLDB4QzIsMHgzOCwweDgxLDB4MzAsMHhERSwweERGLDB4Q0EsMHg4MCwKLSAgICAweDQ0
LDB4NDksMHhBMSwweDMwLDB4QjUsMHhGNSwweDNELDB4MEIsMHhBNSwweDU5LDB4MDMsMHg0MSww
eEFELDB4QUQsMHgyRiwweDBBLAotICAgIDB4QzYsMHg2MSwweDY0LDB4NTEsMHgyNSwweEJGLDB4
RkUsMHhGQSwweDI2LDB4NzIsMHg4NCwweDU5LDB4MjIsMHg4OSwweEJELDB4QjUsCi0gICAgMHg2
NywweDdBLDB4RTYsMHg2OSwweEE5LDB4MEIsMHgyMywweEZELDB4ODgsMHg4MiwweDI2LDB4NzIs
MHhFMCwweEUwLDB4RkEsMHhGRCwKLSAgICAweDI2LDB4NzIsMHhBNCwweDYxLDB4QTAsMHg4OCww
eDgwLDB4N0EsMHhFNiwweDY5LDB4ODQsMHg1OSwweEQ4LDB4REEsMHhENiwweDU1LAotICAgIDB4
QzUsMHg1OSwweDg0LDB4NTksMHhCNywweEI1LDB4MkQsMHgwOSwweEU2LDB4NjEsMHg4NSwweDU5
LDB4RkEsMHhBMywweEVCLDB4REUsCi0gICAgMHhBNSwweDU5LDB4NDQsMHg0OSwweEU4LDB4ODAs
MHhFOCwweDdFLDB4NjQsMHg1MSwweDAzLDB4NDEsMHg2OCwweDdBLDB4N0EsMHg3QSwKLSAgICAw
eDI0LDB4NDksMHhFMywweDQwLDB4QUYsMHhCRiwweEZCLDB4QkYsMHhFNiwweDYxLDB4MDMsMHg0
OSwweEFELDB4QTUsMHhBRiwweDJGLAotICAgIDB4NDcsMHg3MiwweEU2LDB4NjEsMHhBNSwweEEz
LDB4OEYsMHhFMywweDY4LDB4N0EsMHhDNSwweDYxLDB4NUIsMHhCNywweDJGLDB4MkYsCi0gICAg
MHhBOCwweDgyLDB4MjYsMHg3MiwweEFELDB4OEUsMHgwMiwweDhBLDB4QzksMHg4QSwweDI2LDB4
NzIsMHgwMiwweEE4LDB4RkUsMHg3RSwKLSAgICAweDg4LDB4ODIsMHgyNiwweDcyLDB4NjAsMHhB
MiwweEFFLDB4MjcsMHhDOCwweDhBLDB4MjYsMHg3MiwweDk1LDB4M0UsMHgwQSwweDA4LAotICAg
IDB4MDksMHg4QiwweDY2LDB4N0EsMHhGRCwweEFGLDB4QUUsMHgyQSwweDBBLDB4OEIsMHhBOCww
eDgyLDB4MkYsMHgyRSwweEFBLDB4NzgsCi0gICAgMHgyRSwweEI0LDB4ODgsMHg3QSwweDBCLDB4
QkYsMHg1NSwweDU1LDB4NEQsMHhCNCwweEE3LDB4ODIsMHgwMCwweEJFLDB4NzUsMHg1NSwKLSAg
ICAweDMxLDB4Q0QsMHgwOSwweDhCLDB4MkEsMHhCRiwweEZELDB4NTUsMHgxNSwweEU2LDB4MkEs
MHg5MywweDAwLDB4MkEsMHhBRiwweEY1LAotICAgIDB4RDcsMHhGRSwweEQwLDB4QzQsMHgwMCww
eDBBLDB4MkIsMHhGRCwweEQ3LDB4RkUsMHgxMSwweENELDB4MDAsMHgwMCwweEFBLDB4RDUsCi0g
ICAgMHhENywweEZFLDB4OTQsMHhERCwweDAwLDB4MDAsMHgwMiwweEJELDB4RjgsMHhGRSwweDk2
LDB4RjYsMHhBQSwweDJBLDB4QkIsMHhGNSwKLSAgICAweEY4LDB4RkUsMHhENywweEY2LDB4ODIs
MHhBMCwweEEwLDB4NUIsMHhGOCwweEZFLDB4QjcsMHhGNiwweDMyLDB4QTIsMHg4QSwweEZGLAot
ICAgIDB4RjgsMHhGRSwweEQ3LDB4RjYsMHgyOCwweDJFLDB4OEEsMHhFNSwweDE4LDB4RkYsMHhE
NywweEY2LDB4QUEsMHhCQSwweEFCLDB4RkYsCi0gICAgMHhGOCwweEZFLDB4RDgsMHhGNiwweEVB
LDB4QUEsMHhBQSwweEI4LDB4RjgsMHhGRSwweEQ3LDB4RjYsMHgwQSwweEE4LDB4ODIsMHhBQSwK
LSAgICAweEY4LDB4RkUsMHhCNywweEY2LDB4QTAsMHhGQSwweEU4LDB4N0EsMHhENywweEY2LDB4
QjcsMHhGNiwweDdDLDB4RkUsMHg1RiwweDU1LAotICAgIDB4QjcsMHhGNiwweDk2LDB4RUUsMHhF
MCwweEU4LDB4RjIsMHg3QSwweEI3LDB4RjYsMHg3NiwweEVFLDB4QUEsMHhGQSwweDVCLDB4N0Ys
Ci0gICAgMHg5NiwweEVFLDB4NTUsMHhFRSwweDAwLDB4OEEsMHhERCwweEY3LDB4NzYsMHhFRSww
eDU1LDB4RUUsMHgyMCwweDAwLDB4QTIsMHhCRiwKLSAgICAweDU1LDB4RjYsMHg3NiwweEVFLDB4
NTUsMHg1RiwweDc3LDB4RkUsMHg5NiwweEY2LDB4NzYsMHhFRSwweEUyLDB4RkYsMHg3RCwweDVE
LAotICAgIDB4NzYsMHhFRSwweDU1LDB4RUUsMHhFOCwweENBLDB4QjcsMHg0MywweDk2LDB4RjYs
MHg1NiwweEVFLDB4RjUsMHhGRCwweEFGLDB4MkIsCi0gICAgMHg5NiwweEY2LDB4NTYsMHhFRSww
eDVFLDB4N0UsMHhFQSwweEU4LDB4NTUsMHhGNiwweDc2LDB4RUUsMHg3NSwweDU1LDB4NzYsMHhG
RSwKLSAgICAweDk2LDB4RjYsMHg3NiwweEVFLDB4N0YsMHhGRSwweEVBLDB4NkEsMHg1NiwweEY2
LDB4NzYsMHhFRSwweEY3LDB4RkQsMHhERCwweEQ1LAotICAgIDB4NzUsMHhFRSwweDU2LDB4RUUs
MHhBOCwweDlBLDB4RkEsMHhGQiwweDc2LDB4RUUsMHg1NSwweEVFLDB4MjYsMHhGRSwweEVBLDB4
MjgsCi0gICAgMHg3NiwweEVFLDB4NTUsMHhFRSwweEZFLDB4QkUsMHgzRiwweEQ1LDB4NzUsMHhF
RSwweDU1LDB4RUUsMHhGRSwweDBDLDB4ODAsMHhDQiwKLSAgICAweDc2LDB4RUUsMHgzNCwweEU2
LDB4QUEsMHhCQSwweDdFLDB4RkYsMHg1NSwweEVFLDB4MTQsMHhFNiwweEIyLDB4QTgsMHhFQSww
eEFFLAotICAgIDB4NTUsMHhFRSwweDM0LDB4RTYsMHg3MCwweDZCLDB4NjEsMHg3RiwweDE0LDB4
RTYsMHg5MiwweEQ1LDB4RkMsMHhGOCwweDdFLDB4REUsCi0gICAgMHhGMywweERELDB4QjMsMHhE
NSwweDBCLDB4MkYsMHhCRCwweEI1LDB4MTQsMHhFNiwweEQzLDB4REQsMHgyQiwweDJFLDB4QkIs
MHhBRCwKLSAgICAweDU1LDB4RUUsMHhGNCwweERELDB4Q0IsMHhBQiwweDJGLDB4QjksMHg3NSww
eEVFLDB4MzQsMHhFNiwweDE1LDB4QTUsMHgwQiwweEEyLAotICAgIDB4NzUsMHhFRSwweDM1LDB4
RTYsMHg2MCwweEVBLDB4RjYsMHhCNSwweDU1LDB4RUUsMHg5MywweEQ1LDB4NUYsMHhGRSwweEUw
LDB4QTAsCi0gICAgMHhEMywweERELDB4RjAsMHhDNCwweDVGLDB4N0EsMHhBOCwweDgwLDB4NzIs
MHhDRCwweDEwLDB4QzUsMHg5RCwweEY1LDB4QkYsMHhFMCwKLSAgICAweDUxLDB4Q0QsMHgxMSww
eEM1LDB4QkYsMHhCRSwweEEyLDB4MDAsMHg3MiwweENELDB4NTEsMHhDRCwweEVELDB4NkQsMHg5
RCwweDU1LAotICAgIDB4NzIsMHhDRCwweDMxLDB4Q0QsMHg3RiwweDVBLDB4RUEsMHg4RiwweDEx
LDB4QzUsMHgyQiwweDhCLDB4NzgsMHhFMCwweEUwLDB4ODAsCi0gICAgMHg0QSwweDhCLDB4Njcs
MHg3MiwweEJGLDB4QkUsMHhCQywweERDLDB4OEUsMHhCNCwweDA5LDB4ODMsMHgwQiwweDJGLDB4
RkQsMHhENSwKLSAgICAweEFFLDB4QjQsMHg4QiwweDkzLDB4MDAsMHhBOCwweEFBLDB4RkQsMHhE
MCwweEM0LDB4NkUsMHhBQywweDJBLDB4QkIsMHhBRiwweDk1LAotICAgIDB4RjAsMHhDNCwweEFG
LDB4QkMsMHhGQSwweERCLDB4RkQsMHg3NSwweDMxLDB4Q0QsMHhBRiwweEJDLDB4MEYsMHhBRiww
eEZGLDB4RjUsCi0gICAgMHgzMSwweENELDB4Q0YsMHhCQywweDJFLDB4QkUsMHg2RiwweEZELDB4
MTAsMHhDNSwweENGLDB4QkMsMHhFMCwweEE4LDB4RUYsMHhENSwKLSAgICAweDQ2LDB4NkEsMHhF
NSwweDY5LDB4MEEsMHhCQSwweDg4LDB4QTAsMHg0NiwweDZBLDB4MjUsMHg2QSwweEY4LDB4QUEs
MHgzNSwweDE3LAotICAgIDB4NDYsMHg3MiwweDA1LDB4NjIsMHhEQiwweEVGLDB4QUEsMHgwQSww
eDY2LDB4NzIsMHgwNSwweDZBLDB4QkEsMHhGQSwweDVFLDB4RjMsCi0gICAgMHg0NiwweDcyLDB4
MDUsMHg2QSwweDdFLDB4RUYsMHg1RSwweDJBLDB4NDYsMHg3MiwweDA1LDB4NkEsMHhBOSwweDJB
LDB4OUEsMHhDOCwKLSAgICAweDQ2LDB4NzIsMHgwNSwweDZBLDB4RjUsMHg1QSwweDczLDB4RjIs
MHg0NSwweDcyLDB4RTQsMHg2OSwweDJBLDB4RkUsMHhGQiwweEZBLAotICAgIDB4ODcsMHg3QSww
eDA1LDB4NkEsMHgyQSwweEY1LDB4NzUsMHhGRiwweEE3LDB4ODIsMHhFNSwweDY5LDB4MjIsMHgw
QSwweEZCLDB4REYsCi0gICAgMHhBNywweDdBLDB4MjYsMHg3MiwweDIwLDB4MDAsMHg4QSwweEZE
LDB4QzgsMHg4MiwweDg3LDB4N0EsMHg1NywweDZGLDB4RjUsMHg5RCwKLSAgICAweEE3LDB4N0Es
MHg2NiwweDdBLDB4QzIsMHgwMiwweDg0LDB4ODgsMHhBNywweDdBLDB4NjYsMHg3MiwweDgyLDB4
QTgsMHg4RCwweDBFLAotICAgIDB4QzcsMHg4MiwweDY2LDB4NzIsMHg5QiwweDFCLDB4QUIsMHhF
OSwweEM3LDB4N0EsMHg4NywweDdBLDB4RjYsMHg3NiwweDU1LDB4RDcsCi0gICAgMHhBNywweDdB
LDB4ODYsMHg3QSwweDNFLDB4MjUsMHgzQiwweEY1LDB4QzcsMHg4MiwweDg3LDB4N0EsMHhERiww
eEZCLDB4QUYsMHhFQiwKLSAgICAweEE3LDB4N0EsMHg0NSwweDcyLDB4MEEsMHhEQSwweDhFLDB4
MEIsMHhBNywweDdBLDB4NDUsMHg3MiwweEEwLDB4REUsMHhFQywweDhBLAotICAgIDB4QTcsMHg3
QSwweDg3LDB4N0EsMHhGOCwweEJGLDB4RDUsMHgzNSwweEE3LDB4N0EsMHg4NywweDdBLDB4Qjcs
MHhEQSwweEJFLDB4MkYsCi0gICAgMHhBNywweDgyLDB4NDYsMHg3MiwweDcwLDB4QjIsMHg4QSww
eEI4LDB4QTcsMHg3QSwweDY2LDB4N0EsMHg1NiwweEUwLDB4RkUsMHhCNCwKLSAgICAweEE3LDB4
N0EsMHg0NSwweDcyLDB4NzcsMHhBRiwweEFBLDB4MjgsMHhDNywweDgyLDB4NjYsMHg3MiwweDI1
LDB4NUQsMHhFRiwweEZELAotICAgIDB4QzgsMHg4MiwweDY2LDB4NzIsMHgwMywweEI1LDB4NTUs
MHhGRiwweDA4LDB4OEIsMHg2NiwweDcyLDB4QTgsMHgyRiwweEZELDB4REQsCi0gICAgMHhFOCww
eDgyLDB4NjUsMHg3MiwweEUyLDB4OEEsMHgyQiwweEFELDB4ODYsMHg3MiwweDAzLDB4NDksMHg3
RSwweEY4LDB4RTAsMHg4MCwKLSAgICAweEE0LDB4NTksMHhFMiwweDQwLDB4NTUsMHg1NywweDVF
LDB4RjgsMHgwMywweDQ5LDB4QzIsMHg0MCwweDdFLDB4NUEsMHhGOCwweDgwLAotICAgIDB4NDMs
MHg0OSwweEUzLDB4NDAsMHhERCwweDE1LDB4QkQsMHhGNSwweDg0LDB4NTksMHgwMywweDQ5LDB4
RkQsMHhBRSwweEFBLDB4OEIsCi0gICAgMHg4NCwweDU5LDB4RTIsMHg0OCwweDBBLDB4QjcsMHg1
RSwweDdFLDB4RTYsMHg2OSwweEUzLDB4NDgsMHgwQSwweEFGLDB4RkQsMHg3NSwKLSAgICAweDI3
LDB4NzIsMHgyMywweDUxLDB4MDgsMHhCRiwweEY1LDB4RDUsMHhBOSwweDgyLDB4NDQsMHg1OSww
eDBBLDB4QUEsMHhGRiwweDVELAotICAgIDB4ODgsMHg3QSwweDg1LDB4NjEsMHgwMCwweDA4LDB4
OEIsMHhGNSwweDg4LDB4ODIsMHhDNSwweDYxLDB4QUEsMHgwMCwweEEyLDB4NTUsCi0gICAgMHg4
NywweDdBLDB4QzUsMHg2MSwweEUyLDB4RTgsMHg3QSwweDU1LDB4MDYsMHg2QSwweDY0LDB4NTEs
MHg4MCwweEFFLDB4NUYsMHg3NywKLSAgICAweEE1LDB4NTksMHgwMywweDQxLDB4RkMsMHhGRSww
eDU3LDB4NTcsMHgyMywweDQxLDB4RTMsMHgzOCwweDU2LDB4RkEsMHhGQSwweEI1LAotICAgIDB4
MDMsMHgzOSwweEMyLDB4MzgsMHhERSwweDVFLDB4RjgsMHgyOCwweEUyLDB4NDAsMHgwMywweDM5
LDB4N0EsMHg3NiwweEQ3LDB4RDUsCi0gICAgMHhFMiwweDQ4LDB4MDMsMHgzOSwweDc3LDB4RDcs
MHhGRCwweDU3LDB4NDQsMHg0MSwweEMyLDB4MzgsMHhGNywweEJBLDB4QUEsMHhCMiwKLSAgICAw
eDAzLDB4MzksMHhBMiwweDMwLDB4RTgsMHg3QSwweEYwLDB4RTIsMHhFMiwweDM4LDB4QTIsMHgz
MCwweEZELDB4MzcsMHhGRiwweEI5LAotICAgIDB4NDQsMHg0OSwweEMyLDB4MzgsMHgwQiwweDI5
LDB4MDksMHgyOSwweEM1LDB4NTksMHg2NCwweDUxLDB4MkIsMHhDOSwweDhELDB4QTksCi0gICAg
MHhDNSwweDY5LDB4NjQsMHg1MSwweEZGLDB4RkYsMHhGRiwweDJFLDB4MDYsMHg3MiwweDY0LDB4
NTksMHg4OSwweDBCLDB4QTksMHhGQSwKLSAgICAweEU1LDB4NjksMHg4NCwweDU5LDB4MDAsMHgw
MCwweDA4LDB4REQsMHg0NywweDcyLDB4QTQsMHg2MSwweDhCLDB4QjcsMHg5NywweEQ1LAotICAg
IDB4MDYsMHg2QSwweDY0LDB4NTksMHhFOCwweEZBLDB4RkEsMHg1RSwweDg1LDB4NTksMHg2NCww
eDUxLDB4MEYsMHhCOCwweDk4LDB4RUYsCi0gICAgMHhDNSwweDYxLDB4NjQsMHg1MSwweEM5LDB4
QTcsMHhCRiwweEI1LDB4RTYsMHg2MSwweDg0LDB4NTEsMHg3RiwweEU4LDB4ODIsMHhDMiwKLSAg
ICAweEE0LDB4NTksMHgyNCwweDQ5LDB4RUEsMHhFMCwweEU4LDB4N0UsMHg0MywweDQ5LDB4MDIs
MHg0MSwweDc4LDB4QUUsMHhBQSwweEUyLAotICAgIDB4NjQsMHg1MSwweEUyLDB4MzgsMHhCRCww
eEFELDB4M0YsMHgyQSwweEU2LDB4NjEsMHg0NCwweDQ5LDB4MkQsMHgyQiwweEFCLDB4QUYsCi0g
ICAgMHg0NywweDcyLDB4QzYsMHg2MSwweEEyLDB4OEIsMHgzRiwweEY1LDB4ODgsMHg3QSwweDI2
LDB4NkEsMHhCRCwweEVGLDB4RTgsMHgwMSwKLSAgICAweDg4LDB4ODIsMHgyNiwweDcyLDB4OEIs
MHhCQSwweERFLDB4RUEsMHg4OCwweDgyLDB4RTUsMHg2OSwweEYwLDB4N0UsMHhGRiwweEQ3LAot
ICAgIDB4NjcsMHg3QSwweEU1LDB4NjksMHgyNywweDBELDB4ODgsMHgwMiwweEU5LDB4OEEsMHg0
NywweDcyLDB4MkEsMHgwRiwweDJELDB4QjUsCi0gICAgMHgyQSwweDkzLDB4QzksMHg4QSwweDNC
LDB4QUIsMHhFRiwweDZGLDB4MDksMHg4QiwweDY3LDB4N0EsMHhFOCwweEE4LDB4RkEsMHg1RSwK
LSAgICAweDg4LDB4N0EsMHhFNSwweDY5LDB4QTgsMHg3OCwweEJBLDB4QTcsMHhDOCwweDgyLDB4
MjYsMHg3MiwweDJCLDB4QkQsMHhCRiwweEJELAotICAgIDB4RTksMHg4QSwweDA1LDB4NzIsMHg4
MiwweEVBLDB4NUUsMHg1RSwweDZCLDB4OUIsMHg0NywweDcyLDB4MkIsMHgyNSwweEI1LDB4RjUs
Ci0gICAgMHgyRCwweEFDLDB4ODgsMHg3QSwweDAwLDB4RkIsMHg3RiwweDVGLDB4OEIsMHg5Qiww
eDY4LDB4N0EsMHgwOCwweERGLDB4NTUsMHg1NSwKLSAgICAweDkyLDB4RDUsMHg4OCwweDdBLDB4
MEIsMHhCRiwweEZELDB4RDUsMHg3NSwweEVFLDB4NkIsMHg5MywweDAyLDB4QUIsMHhGRiwweDU1
LAotICAgIDB4RDcsMHhGRSwweDZCLDB4OTMsMHgwMCwweEFBLDB4RkYsMHg1NSwweEI2LDB4RjYs
MHg2QSwweDkzLDB4MDAsMHhBQSwweEZGLDB4RjUsCi0gICAgMHhCNiwweEY2LDB4Q0YsMHhCQyww
eDAwLDB4MEEsMHhBRiwweEE1LDB4RDcsMHhGNiwweEY0LDB4RTUsMHgwMCwweDAyLDB4OEEsMHhG
RCwKLSAgICAweEY4LDB4RkUsMHg3NiwweEVFLDB4ODAsMHgwMiwweDJBLDB4RDUsMHhGOCwweEZF
LDB4QjcsMHhGNiwweEUyLDB4QTgsMHhBQSwweEY1LAotICAgIDB4RDcsMHhGNiwweEI3LDB4RjYs
MHg3OCwweDc4LDB4NTgsMHg3NSwweEI3LDB4RjYsMHg5NiwweEVFLDB4ODAsMHgwOCwweEU4LDB4
N0YsCi0gICAgMHhCNiwweEY2LDB4NzYsMHhFRSwweEFBLDB4RkUsMHg3RiwweDc3LDB4OTYsMHhF
RSwweDU1LDB4RUUsMHhGMCwweEY4LDB4N0EsMHhCRSwKLSAgICAweDc2LDB4RjYsMHg1NSwweEU2
LDB4RkIsMHgyQiwweDhBLDB4QUMsMHg5NiwweEY2LDB4NTUsMHhFRSwweEZGLDB4RkIsMHhFOCww
eEZBLAotICAgIDB4NzYsMHhFRSwweDM1LDB4RUUsMHhBOCwweEU4LDB4RkEsMHhGRSwweDc2LDB4
RUUsMHgzNSwweEVFLDB4MDIsMHgwRiwweEFGLDB4QUEsCi0gICAgMHg5NiwweEY2LDB4NzYsMHhF
RSwweDc1LDB4NUQsMHhGRCwweEI1LDB4NTcsMHhGNiwweDc1LDB4RUUsMHg1RiwweDVGLDB4REQs
MHhGRCwKLSAgICAweDk2LDB4RjYsMHg1NiwweEVFLDB4RkEsMHhBQiwweDhCLDB4OEIsMHg5Niww
eEY2LDB4NTYsMHhFRSwweEZELDB4RUYsMHhBQSwweEVBLAotICAgIDB4OTYsMHhGNiwweDc2LDB4
RUUsMHhFRiwweDNCLDB4MkYsMHg4RiwweEI2LDB4RjYsMHg3NiwweEVFLDB4N0QsMHhFRiwweEVC
LDB4N0YsCi0gICAgMHg3NiwweEVFLDB4MzUsMHhFRSwweEE4LDB4RjAsMHhCOCwweEZBLDB4NzUs
MHhFRSwweDM1LDB4RUUsMHhBQSwweDhELDB4RkIsMHhGRiwKLSAgICAweDc2LDB4RUUsMHg1NSww
eEVFLDB4NTUsMHg1NSwweEU1LDB4ODUsMHg3NSwweEVFLDB4MzUsMHhFRSwweEVFLDB4ODgsMHgy
MiwweDIzLAotICAgIDB4NzUsMHhFRSwweDM1LDB4RTYsMHhGRiwweEUzLDB4MjAsMHg4MCwweDU1
LDB4RUUsMHgzNSwweEU2LDB4RUIsMHhFQSwweEVDLDB4RjQsCi0gICAgMHg1NSwweEVFLDB4RjQs
MHhERCwweEFBLDB4QzAsMHhFQSwweDZBLDB4RjMsMHhERCwweDcyLDB4Q0QsMHhEQywweEZBLDB4
N0EsMHg3RSwKLSAgICAweEQzLDB4REQsMHg3MiwweENELDB4OEYsMHhCNywweEJGLDB4QUYsMHgx
NCwweEU2LDB4QjMsMHhENSwweDBCLDB4MkYsMHgyRCwweEFCLAotICAgIDB4MzQsMHhFNiwweEY0
LDB4REQsMHgyQiwweDhBLDB4RkYsMHg3NywweDU1LDB4RUUsMHhGNCwweERELDB4ODIsMHhGRiww
eEZELDB4RkQsCi0gICAgMHg3NiwweEVFLDB4MTQsMHhFNiwweEFELDB4QUYsMHgyRCwweDBGLDB4
OTYsMHhGNiwweDM0LDB4RTYsMHg3QSwweEVBLDB4QTIsMHgyMCwKLSAgICAweDk2LDB4RjYsMHhG
MywweERELDB4REQsMHhBQSwweDgyLDB4MDgsMHg5NiwweEY2LDB4NzIsMHhENSwweDVGLDB4RkEs
MHhFMCwweDgwLAotICAgIDB4MTQsMHhFNiwweDUxLDB4Q0QsMHg1NSwweDU1LDB4NTcsMHhGOCww
eDcyLDB4RDUsMHgzMSwweEM1LDB4RUIsMHhFNywweEVBLDB4RTgsCi0gICAgMHg3MiwweEQ1LDB4
MzEsMHhDNSwweDJBLDB4QTMsMHhBRiwweEE2LDB4NzIsMHhDRCwweEQwLDB4QkMsMHg3OCwweEU4
LDB4ODAsMHg4MiwKLSAgICAweEQwLDB4QkMsMHg2NywweDcyLDB4NUUsMHg3QywweDc4LDB4QzAs
MHhBOCwweDdBLDB4RTYsMHg2MSwweDhBLDB4N0YsMHg1RiwweEZFLAotICAgIDB4QUIsMHg5Qiww
eDA1LDB4NjIsMHgwQiwweEI1LDB4NTUsMHg1NSwweDZFLDB4QUMsMHg0NywweDcyLDB4MDIsMHgw
QSwweEFCLDB4RjUsCi0gICAgMHhBRiwweEJDLDB4RUMsMHhBMywweDAyLDB4MjIsMHhCQiwweEU1
LDB4Q0YsMHhCQywweDJFLDB4QUMsMHg4MCwweDBBLDB4QkYsMHg1NywKLSAgICAweEQwLDB4QkMs
MHg0RSwweEFDLDB4ODAsMHgyOCwweEFBLDB4QTUsMHgxMCwweEM1LDB4QUYsMHhCQywweDlELDB4
OTcsMHgzQiwweEE1LAotICAgIDB4NjYsMHg3MiwweDI1LDB4NkEsMHg2QiwweEVBLDB4N0EsMHhC
QSwweDQ2LDB4NzIsMHgwNSwweDZBLDB4MEQsMHg4MiwweDAwLDB4MkMsCi0gICAgMHg2NywweDcy
LDB4MjUsMHg2QSwweEU2LDB4RDMsMHg2RiwweEU3LDB4NjYsMHg3MiwweDI1LDB4NkEsMHgzQSww
eDFCLDB4OTEsMHg4RiwKLSAgICAweDQ2LDB4NzIsMHgwNSwweDZBLDB4QkEsMHhGQSwweEVFLDB4
NDAsMHgyNiwweDZBLDB4MDUsMHg2QSwweEEyLDB4ODEsMHgxNywweEJELAotICAgIDB4NDYsMHg3
MiwweEU0LDB4NjEsMHhGRSwweEZBLDB4QTIsMHgyQSwweDY3LDB4NzIsMHhFNSwweDY5LDB4OUQs
MHhCRiwweDJGLDB4RkUsCi0gICAgMHg0NiwweDcyLDB4RTQsMHg2MSwweEE4LDB4OEEsMHgzMCww
eDE4LDB4NDYsMHg3MiwweDA1LDB4NkEsMHhGRiwweEZELDB4NkEsMHgyOCwKLSAgICAweDQ2LDB4
NzIsMHgwNSwweDZBLDB4QTAsMHg2MCwweEJFLDB4M0MsMHg4NywweDdBLDB4MDUsMHg2QSwweDBC
LDB4NTcsMHhENywweEZGLAotICAgIDB4QTcsMHg3QSwweDA1LDB4NkEsMHgwOCwweEFBLDB4Njcs
MHg1NywweEE3LDB4N0EsMHgwNSwweDZBLDB4MjAsMHg4MiwweEFCLDB4QkQsCi0gICAgMHhBNyww
eDgyLDB4NDYsMHg3MiwweEMzLDB4MjMsMHgyQSwweEI5LDB4QzcsMHg4MiwweDg3LDB4N0EsMHhE
RCwweEY3LDB4REYsMHg3OSwKLSAgICAweEM3LDB4ODIsMHg2NiwweDcyLDB4NzcsMHhBRSwweEVB
LDB4RTMsMHhDNywweDgyLDB4NjYsMHg3MiwweDhCLDB4QUUsMHhCQiwweERGLAotICAgIDB4Qzcs
MHg4MiwweDg3LDB4N0EsMHg3OSwweEVBLDB4RTIsMHg2MiwweEM3LDB4ODIsMHg2NiwweDcyLDB4
MjksMHhBQSwweEZGLDB4N0YsCi0gICAgMHhDNywweDgyLDB4ODcsMHg3QSwweEY3LDB4NkQsMHhG
OSwweDdBLDB4QzgsMHg4MiwweDY2LDB4N0EsMHhGOSwweEJFLDB4QkEsMHhBMywKLSAgICAweEM3
LDB4ODIsMHg2NywweDdBLDB4RkYsMHhBQSwweDZBLDB4RkEsMHhDOCwweDgyLDB4ODcsMHg3QSww
eERELDB4REQsMHg2OCwweEY2LAotICAgIDB4QTcsMHg3QSwweDg2LDB4N0EsMHg2RCwweDgzLDB4
MEIsMHgwRSwweEM2LDB4ODIsMHg2NSwweDcyLDB4REUsMHhFRSwweEU4LDB4QjgsCi0gICAgMHhD
NywweDgyLDB4NjYsMHg3MiwweDU2LDB4RkYsMHhBQiwweDhBLDB4QzcsMHg4MiwweDY2LDB4NzIs
MHg3NywweDdGLDB4QUEsMHgyRSwKLSAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4RkQsMHhGRiww
eDc4LDB4QzAsMHhBNiwweDdBLDB4NjYsMHg3MiwweDVFLDB4NjUsMHhFQiwweEU5LAotICAgIDB4
NjYsMHg3MiwweDQ0LDB4NTEsMHg3RSwweDc4LDB4RTgsMHhBMCwweEE2LDB4NjEsMHhFMywweDQw
LDB4N0YsMHhGQSwweEU4LDB4QTgsCi0gICAgMHhBNSwweDU5LDB4MjMsMHg0OSwweDU1LDB4Nzcs
MHhGRiwweEZFLDB4NjQsMHg1OSwweDIzLDB4NTEsMHgyRSwweEJBLDB4REEsMHhFMiwKLSAgICAw
eDQ0LDB4NTEsMHgwMywweDUxLDB4NjAsMHgwMCwweEUwLDB4QTAsMHg0NCwweDUxLDB4QzIsMHg0
MCwweEZGLDB4NzYsMHhGRSwweDJBLAotICAgIDB4MDMsMHg0OSwweEMyLDB4NDAsMHgyQiwweDg3
LDB4RTcsMHgwQywweDg1LDB4NjEsMHgwMywweDQ5LDB4RTIsMHhGRCwweEQ5LDB4RkQsCi0gICAg
MHhDNiwweDYxLDB4MjQsMHg0OSwweDJFLDB4QTcsMHhCRiwweEVELDB4QzYsMHg2MSwweDI0LDB4
NDksMHhBMCwweEFBLDB4RkYsMHg3RiwKLSAgICAweEE2LDB4NjEsMHg0NCwweDQ5LDB4NzgsMHg1
RSwweEZGLDB4RkIsMHg4NSwweDUxLDB4RTIsMHgzOCwweDgyLDB4RjgsMHhEQSwweDdFLAotICAg
IDB4MDMsMHg0MSwweEExLDB4MzAsMHg4MCwweEVBLDB4N0EsMHg1RiwweEUyLDB4MzgsMHhBMiww
eDMwLDB4MEMsMHgyQiwweDJGLDB4MjksCi0gICAgMHgyMywweDQxLDB4RTMsMHgzOCwweEY3LDB4
QUEsMHhBQSwweEJBLDB4NDQsMHg0MSwweDAzLDB4NDEsMHg1NSwweEY1LDB4OEIsMHhFOCwKLSAg
ICAweDQ0LDB4NDEsMHgwMywweDQxLDB4QkYsMHgzRiwweDI3LDB4MTcsMHg0NCwweDQxLDB4RTIs
MHgzOCwweDZBLDB4RjAsMHhFMCwweEUwLAotICAgIDB4QzIsMHg0MCwweDAzLDB4MzksMHhFNyww
eEFGLDB4QUQsMHhGQiwweDIzLDB4NDEsMHhDMiwweDM4LDB4NjUsMHhCRiwweDhELDB4MEEsCi0g
ICAgMHg4NCwweDU5LDB4MDMsMHg0MSwweDlELDB4QTksMHgwRiwweDBCLDB4QzUsMHg2MSwweDY0
LDB4NTEsMHhCRCwweDM3LDB4MkEsMHgyQSwKLSAgICAweDI2LDB4NzIsMHhDNSwweDYxLDB4RTUs
MHhGRiwweEZGLDB4MkYsMHgwNiwweDcyLDB4QTQsMHg2MSwweDc4LDB4NzgsMHg3OCwweEFFLAot
ICAgIDB4MDYsMHg3MiwweDg0LDB4NTksMHhGNywweERGLDB4RkIsMHg4QSwweEU1LDB4NjEsMHhB
NCwweDYxLDB4RjcsMHgzRCwweDJELDB4RDcsCi0gICAgMHhDNSwweDYxLDB4MjMsMHg0OSwweEY4
LDB4NzgsMHg3OCwweDY4LDB4ODUsMHg1MSwweDAzLDB4NDksMHgwQSwweEJCLDB4RkYsMHhGNSwK
LSAgICAweDY0LDB4NTEsMHgyMywweDQ5LDB4MjAsMHhCMCwweEZELDB4QjcsMHhFNiwweDYxLDB4
NjQsMHg1MSwweDgzLDB4QkEsMHhGRCwweEQ1LAotICAgIDB4ODUsMHg1MSwweDAyLDB4NDEsMHg3
RSwweDVFLDB4NUMsMHg3OCwweDQzLDB4NDksMHgwMywweDQxLDB4QTksMHhBNSwweEFELDB4QUQs
Ci0gICAgMHhBNSwweDU5LDB4NDQsMHg0OSwweDJELDB4MEIsMHgwOSwweEFELDB4QTUsMHg1OSww
eDQ0LDB4NTEsMHhBQSwweDZFLDB4N0MsMHg1OCwKLSAgICAweEU2LDB4NjksMHgyMywweDQ5LDB4
MEEsMHhCRiwweEZGLDB4RkQsMHg2OCwweDdBLDB4ODUsMHg1OSwweDAyLDB4MEIsMHgyRCwweDJE
LAotICAgIDB4QTksMHg4QSwweDQ3LDB4N0EsMHg3RSwweDZBLDB4RjMsMHhBRiwweDg4LDB4ODIs
MHhDNSwweDY5LDB4RDUsMHhGRiwweEVBLDB4ODAsCi0gICAgMHg2NywweDdBLDB4MDUsMHg3Miww
eDhCLDB4MkEsMHgyQiwweEU3LDB4QTgsMHg4MiwweDI2LDB4NkEsMHgyNywweDI3LDB4QkEsMHg3
QSwKLSAgICAweEM5LDB4OEEsMHg0NywweDcyLDB4MEEsMHhBRiwweEJCLDB4QTUsMHhBOCwweDgy
LDB4NDYsMHg3MiwweDYwLDB4RTgsMHg3RSwweDU3LAotICAgIDB4ODgsMHg4MiwweDA2LDB4NkEs
MHhCNywweEI3LDB4QUYsMHgwRSwweEE4LDB4ODIsMHg0NywweDdBLDB4QjUsMHhGRCwweEVBLDB4
ODAsCi0gICAgMHg4OCwweDdBLDB4MjYsMHg3MiwweDdDLDB4RkEsMHhCOCwweDg4LDB4ODgsMHg4
MiwweDI2LDB4NzIsMHgyOSwweEFBLDB4QUUsMHg4MiwKLSAgICAweEM5LDB4OEEsMHg0NywweDdB
LDB4RTIsMHhGRiwweDVELDB4NzcsMHg4OCwweDdBLDB4NDcsMHg3QSwweDNCLDB4MkIsMHgwRCww
eDVFLAotICAgIDB4QTgsMHg4MiwweDI3LDB4NzIsMHgwQSwweEI3LDB4NzUsMHg1NywweEM5LDB4
ODIsMHgwNiwweDZBLDB4MDAsMHhBQSwweEZGLDB4RDUsCi0gICAgMHhDOSwweDgyLDB4MjcsMHg2
QSwweDgwLDB4MkEsMHg5RiwweEQ1LDB4Q0MsMHg5QiwweDY4LDB4NzIsMHgwRiwweEFGLDB4RkQs
MHhENSwKLSAgICAweEQwLDB4QkMsMHg0NiwweDcyLDB4MDIsMHgyQSwweDdGLDB4NTUsMHgxMSww
eEM1LDB4NDYsMHg3MiwweDAwLDB4QkUsMHhERCwweDU1LAotICAgIDB4RjQsMHhFNSwweEM4LDB4
N0EsMHgwMiwweDJCLDB4QUYsMHhGNSwweDc2LDB4RUUsMHg0RSwweEFDLDB4MDAsMHgwMCwweDBC
LDB4QkQsCi0gICAgMHg5NiwweEY2LDB4RDMsMHhERCwweDAwLDB4MDAsMHhBQSwweEFELDB4OTYs
MHhGNiwweDU1LDB4RUUsMHg4MCwweDIwLDB4RUYsMHhGQiwKLSAgICAweDk2LDB4RjYsMHg1Niww
eEVFLDB4RUEsMHhGRSwweDlGLDB4NUYsMHg1NSwweEY2LDB4NzYsMHhFRSwweDU1LDB4NTUsMHhE
RCwweEZGLAotICAgIDB4NzYsMHhGNiwweDM1LDB4RTYsMHhFMCwweDdFLDB4REIsMHhGRiwweDc1
LDB4RUUsMHgzNCwweEU2LDB4RTAsMHhEOSwweEY3LDB4NTcsCi0gICAgMHg1NSwweEVFLDB4MTQs
MHhFNiwweDg4LDB4QUEsMHhGRSwweEZGLDB4NzUsMHhFRSwweDM0LDB4RTYsMHhBQiwweEVGLDB4
RDUsMHg1NSwKLSAgICAweDk2LDB4RjYsMHgzNSwweEU2LDB4MkEsMHhFQSwweEFELDB4RjUsMHg3
NSwweEVFLDB4MzQsMHhFRSwweEE4LDB4RkEsMHhGRiwweDdGLAotICAgIDB4OTYsMHhGNiwweDM0
LDB4RTYsMHg4QiwweEJCLDB4RjcsMHg1NSwweDk2LDB4RjYsMHgzNCwweEU2LDB4OEEsMHhBQSww
eEJGLDB4RjUsCi0gICAgMHg5NiwweEY2LDB4MzUsMHhFNiwweDgwLDB4RUEsMHhGRSwweDVELDB4
NzUsMHhFRSwweDM1LDB4RTYsMHg4OCwweEZFLDB4RkYsMHg1NSwKLSAgICAweDc1LDB4RUUsMHgz
NSwweEU2LDB4QkUsMHgxQSwweEFGLDB4QjUsMHg3NiwweEVFLDB4NTUsMHhFRSwweERCLDB4Rjgs
MHg4QSwweDgyLAotICAgIDB4NTYsMHhGNiwweDk2LDB4RUUsMHhCRSwweEZFLDB4RkYsMHhGRSww
eDk2LDB4RjYsMHg3NiwweEVFLDB4NTksMHhGRSwweEJBLDB4MkEsCi0gICAgMHg5NiwweEY2LDB4
NTUsMHhFRSwweEZGLDB4RkUsMHhGQSwweEY4LDB4NTUsMHhFRSwweDE1LDB4RTYsMHhGQywweEZD
LDB4QjgsMHhDMCwKLSAgICAweDU1LDB4RUUsMHhEMywweERELDB4NjIsMHg3MiwweEE4LDB4QTgs
MHhGMywweERELDB4NzIsMHhDRCwweEZFLDB4RkUsMHhGQywweDc4LAotICAgIDB4RDMsMHhERCww
eDcyLDB4RDUsMHgwQiwweDJBLDB4MkIsMHgwRCwweDE0LDB4RTYsMHhEMywweERELDB4RkQsMHhE
RiwweEFGLDB4QkQsCi0gICAgMHgxNCwweEU2LDB4RDMsMHhERCwweDlGLDB4M0YsMHgyRSwweDBB
LDB4NTUsMHhFRSwweDE0LDB4RTYsMHg3RCwweDdGLDB4RkIsMHhBQiwKLSAgICAweDc1LDB4RUUs
MHgzNCwweEU2LDB4MkQsMHhBOSwweEE1LDB4MkIsMHg5NiwweEVFLDB4NzUsMHhFRSwweDhBLDB4
RTUsMHhBRCwweDM3LAotICAgIDB4OTYsMHhFRSwweDc2LDB4RUUsMHg3NSwweEVGLDB4RkUsMHhG
NiwweDk2LDB4RUUsMHg3NiwweEVFLDB4NTcsMHg1NSwweDVBLDB4NkMsCi0gICAgMHg1NSwweEVF
LDB4OTIsMHhENSwweDc4LDB4RTAsMHg4MCwweDAwLDB4RjQsMHhERCwweDcyLDB4Q0QsMHg1NSww
eEZFLDB4RkEsMHhFOCwKLSAgICAweEIzLDB4REQsMHgzMSwweENELDB4RjcsMHhGRSwweEVBLDB4
ODAsMHg3MiwweEQ1LDB4NTEsMHhDRCwweDNDLDB4MkUsMHgyRiwweDIzLAotICAgIDB4QjMsMHhE
NSwweEVELDB4QTMsMHg2QSwweEU4LDB4QTgsMHgwMCwweEIwLDB4QkMsMHgyNywweDZBLDB4NTcs
MHg1RSwweEZFLDB4RTgsCi0gICAgMHg4OSwweDdBLDB4RTYsMHg2MSwweERELDB4RUUsMHhBQSww
eDAwLDB4ODgsMHg3QSwweDA2LDB4NkEsMHgzRCwweEZGLDB4REUsMHhBMCwKLSAgICAweEVDLDB4
OUIsMHgyNiwweDZBLDB4MEIsMHg5NSwweEQ1LDB4RDUsMHgwRSwweEE0LDB4NjgsMHg3MiwweDAw
LDB4QUEsMHhGRiwweDU1LAotICAgIDB4NEUsMHhBQywweDg5LDB4NzIsMHgyMiwweDBBLDB4MkYs
MHgyNSwweDEwLDB4QzUsMHg4RSwweEI0LDB4MkQsMHhBOSwweDBELDB4QTksCi0gICAgMHg2Niww
eDcyLDB4MjYsMHg2QSwweDdBLDB4QTgsMHgzQSwweEYyLDB4NjYsMHg3MiwweDA0LDB4NkEsMHhB
NiwweEEzLDB4RkUsMHhGQSwKLSAgICAweDY2LDB4NzIsMHgyNSwweDZBLDB4QUEsMHhBRSwweEJC
LDB4RkIsMHg2NywweDcyLDB4MjYsMHg3MiwweEFGLDB4QUYsMHg4MywweDZFLAotICAgIDB4Njcs
MHg3MiwweDA1LDB4NkEsMHhFRSwweEFCLDB4OEIsMHg4OSwweDY2LDB4NzIsMHgwNSwweDZBLDB4
N0EsMHhGQiwweEFGLDB4MjgsCi0gICAgMHg2NiwweDcyLDB4MDUsMHg2QSwweEJCLDB4QTcsMHhF
RSwweDMyLDB4NjYsMHg3MiwweDA1LDB4NkEsMHhGRiwweEFBLDB4QTgsMHg5RSwKLSAgICAweDY2
LDB4NzIsMHgyNSwweDZBLDB4REYsMHhBMywweDYyLDB4N0EsMHg4NiwweDcyLDB4MjYsMHg2QSww
eDVGLDB4NUYsMHhGQiwweEVCLAotICAgIDB4NDYsMHg3MiwweDA1LDB4NkEsMHgxRSwweDJGLDB4
QUIsMHhBRSwweDY3LDB4NzIsMHgyNiwweDZBLDB4OUYsMHhGNywweEJCLDB4OEYsCi0gICAgMHg2
NywweDcyLDB4MDUsMHg2QSwweDc2LDB4QzcsMHhFRSwweEY4LDB4NjcsMHg3MiwweDA1LDB4NkEs
MHhBRCwweEZGLDB4QkIsMHhCOCwKLSAgICAweDg3LDB4N0EsMHhFNCwweDY5LDB4MkQsMHhBRiww
eEVBLDB4RUEsMHhBNywweDdBLDB4MDUsMHg2QSwweDAyLDB4QUEsMHhBRCwweDdGLAotICAgIDB4
QTcsMHg3QSwweDA1LDB4NkEsMHgwMCwweDAwLDB4QkIsMHhGNSwweEE3LDB4N0EsMHg2NiwweDcy
LDB4OEUsMHg4QSwweDBCLDB4MjUsCi0gICAgMHhFOCwweDgyLDB4ODYsMHg3QSwweEZCLDB4NTUs
MHg1RSwweDUzLDB4QTcsMHg4MiwweDg3LDB4N0EsMHg1NSwweDJGLDB4MkYsMHhCQiwKLSAgICAw
eEM3LDB4ODIsMHg4NywweDdBLDB4RkYsMHg1RSwweEY4LDB4QUEsMHhBNywweDgyLDB4NjcsMHg3
QSwweDhBLDB4QUUsMHgzQywweEIwLAotICAgIDB4QzcsMHg4MiwweDg3LDB4N0EsMHg2QiwweEZB
LDB4RkIsMHhGQSwweEM3LDB4ODIsMHg4NywweDdBLDB4Q0YsMHg3QiwweEZFLDB4NUYsCi0gICAg
MHhDNywweDgyLDB4ODYsMHg3QSwweEJGLDB4RkIsMHhGRiwweDJFLDB4QzcsMHg4MiwweDg2LDB4
N0EsMHg2RiwweEZGLDB4QjgsMHg3OCwKLSAgICAweEM3LDB4ODIsMHg4NiwweDdBLDB4NEUsMHhF
RSwweEI3LDB4MzUsMHhDNywweDgyLDB4QTcsMHg3QSwweEY1LDB4QjUsMHhCRSwweEVELAotICAg
IDB4QTcsMHg4MiwweDg3LDB4N0EsMHhCOCwweEYzLDB4ODgsMHgwQSwweEE3LDB4ODIsMHg4Niww
eDcyLDB4N0YsMHhCQywweDIyLDB4MDAsCi0gICAgMHhBNywweDgyLDB4MDYsMHg2QSwweDdBLDB4
QTIsMHhBMCwweDgwLDB4MjYsMHg3MiwweDY0LDB4NTksMHg1RSwweDVDLDB4NzgsMHhFMCwKLSAg
ICAweEM1LDB4NjksMHg2NCwweDU5LDB4NTUsMHg3NSwweERGLDB4QUEsMHhDNSwweDYxLDB4MjMs
MHg1MSwweDdGLDB4REIsMHhBQSwweDA4LAotICAgIDB4QzUsMHg2OSwweDIzLDB4NTEsMHg3Riww
eDdCLDB4QTgsMHhBOCwweEM2LDB4NjksMHg0NCwweDUxLDB4NTUsMHhGNSwweEJGLDB4MEIsCi0g
ICAgMHhBNSwweDYxLDB4MDMsMHg0OSwweDVGLDB4RUUsMHhBMCwweDgwLDB4ODUsMHg1OSwweDIz
LDB4NDksMHhBRCwweEEyLDB4MjgsMHhFMiwKLSAgICAweDg1LDB4NTEsMHg0NCwweDUxLDB4OEIs
MHhBMiwweERDLDB4NTYsMHg4NSwweDUxLDB4MjMsMHg0OSwweDdBLDB4RDgsMHhGRSwweEZGLAot
ICAgIDB4ODUsMHg1MSwweDAzLDB4MzksMHhDMiwweEVBLDB4RkEsMHg3RiwweDI0LDB4NDEsMHhB
MSwweDMwLDB4RjgsMHhGOCwweEQ2LDB4RDcsCi0gICAgMHhDMiwweDMwLDB4QTIsMHgzMCwweDVG
LDB4MzUsMHgyNSwweDA4LDB4RTIsMHgzOCwweEEyLDB4MzAsMHgyQiwweEFCLDB4QTIsMHhCMiwK
LSAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4MkYsMHgyRCwweEFGLDB4RkEsMHg2NCwweDQ5LDB4
MDMsMHgzOSwweEZDLDB4REYsMHg3RiwweEY1LAotICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHgy
OCwweDYwLDB4NzgsMHg2RiwweDIzLDB4NDEsMHhFMiwweDM4LDB4ODAsMHgyQiwweEJELDB4MEQs
Ci0gICAgMHg0NCwweDQ5LDB4RTIsMHgzOCwweDc1LDB4QUYsMHhBQSwweDIyLDB4ODUsMHg1MSww
eDAzLDB4NDEsMHhFRiwweDJELDB4OEEsMHhFQSwKLSAgICAweDg0LDB4NTEsMHgyMywweDQ5LDB4
M0QsMHhCRiwweEY3LDB4RkQsMHhDNSwweDYxLDB4NDQsMHg1MSwweDBBLDB4M0UsMHgyRCwweEZE
LAotICAgIDB4NDcsMHg3MiwweEE1LDB4NjEsMHgwQSwweDBBLDB4QUIsMHhGOSwweDY4LDB4N0Es
MHhFNSwweDY5LDB4NTUsMHhCNywweDhGLDB4MDksCi0gICAgMHg2OCwweDdBLDB4RTUsMHg2OSww
eDVGLDB4RkUsMHhFOCwweEUwLDB4MDYsMHg2QSwweDY0LDB4NTEsMHhGRSwweEZBLDB4NUMsMHg1
RSwKLSAgICAweEM1LDB4NjEsMHgwMywweDQxLDB4RTgsMHhFOCwweEZFLDB4RkYsMHg0NCwweDQ5
LDB4RTIsMHg0MCwweDBFLDB4QkMsMHg3OCwweEZFLAotICAgIDB4QTYsMHg1OSwweDIzLDB4NDks
MHhFRiwweDhCLDB4QkQsMHhBNSwweDg1LDB4NTEsMHgwMywweDQxLDB4MkEsMHhCRSwweDZBLDB4
RjAsCi0gICAgMHhBNSwweDUxLDB4MDMsMHg0MSwweDc4LDB4RkEsMHhGRiwweEQ1LDB4NDQsMHg0
OSwweDAzLDB4NDEsMHgyRCwweDBELDB4MEEsMHgyQiwKLSAgICAweDg0LDB4NTEsMHg0NCwweDQ5
LDB4QkYsMHhCRCwweDNGLDB4Q0EsMHg4NSwweDUxLDB4MjMsMHg0OSwweDkyLDB4RjIsMHhFMiww
eDhBLAotICAgIDB4QzYsMHg2MSwweDIzLDB4NDksMHhFRCwweEJGLDB4M0QsMHgyNSwweDY4LDB4
N0EsMHhDNiwweDYxLDB4MDUsMHgyNSwweEE1LDB4MkQsCi0gICAgMHg0QSwweDkzLDB4NjgsMHg3
QSwweEJGLDB4MkQsMHhBRCwweEFCLDB4NkIsMHg5QiwweEM5LDB4OEEsMHg3RiwweEVFLDB4RTAs
MHhFQSwKLSAgICAweEU5LDB4OEEsMHgyNiwweDZBLDB4N0YsMHhGQSwweEU4LDB4RTIsMHgyNiww
eDcyLDB4RTUsMHg2OSwweDAyLDB4QUUsMHgwNiwweDk0LAotICAgIDB4NjcsMHg3MiwweEU2LDB4
NjksMHgyQiwweEFGLDB4QkQsMHhCRiwweDg4LDB4N0EsMHgyNiwweDcyLDB4OUMsMHhBNSwweDM3
LDB4M0IsCi0gICAgMHg4OCwweDgyLDB4NDcsMHg3QSwweEFGLDB4REUsMHg4MiwweDAwLDB4Qzgs
MHg4QSwweDY3LDB4N0EsMHhCQSwweDNCLDB4QUYsMHg5NSwKLSAgICAweDA5LDB4OTMsMHhBOCww
eDgyLDB4NUQsMHhCRiwweEFBLDB4MkIsMHgwOSwweDhCLDB4NjcsMHg3QSwweEY3LDB4RkUsMHhG
QSwweEE4LAotICAgIDB4ODgsMHg4MiwweDQ3LDB4N0EsMHhGRiwweDVFLDB4RkEsMHgwMiwweDY4
LDB4N0EsMHgyNywweDcyLDB4QjgsMHhGRCwweDdELDB4QzMsCi0gICAgMHg2OCwweDdBLDB4MDYs
MHg2QSwweDU3LDB4NUUsMHhEQiwweDJGLDB4ODgsMHg3QSwweEU2LDB4NjEsMHg1RiwweDVELDB4
NkUsMHhBMiwKLSAgICAweDY3LDB4N0EsMHhDNiwweDYxLDB4QjcsMHhCRCwweEFCLDB4MkEsMHg4
OCwweDdBLDB4MjYsMHg2QSwweDhCLDB4ODYsMHhBRiwweDY4LAotICAgIDB4ODcsMHg3MiwweDQ2
LDB4NzIsMHhBQywweDgyLDB4M0EsMHhENSwweDY3LDB4NzIsMHgyNiwweDZBLDB4N0UsMHg3Qyww
eEIwLDB4QTIsCi0gICAgMHhBOCwweDdBLDB4RTYsMHg2MSwweDBBLDB4QUIsMHhGNywweDVGLDB4
RjAsMHhDNCwweDg4LDB4NzIsMHgyQiwweEFELDB4OTUsMHg1NSwKLSAgICAweDM1LDB4RUUsMHg0
QSwweDkzLDB4MDIsMHgwQSwweDJCLDB4QkQsMHg3NiwweEY2LDB4RDMsMHhERCwweDAwLDB4MjIs
MHhBQSwweDU1LAotICAgIDB4NTUsMHhFRSwweEY0LDB4RTUsMHgwMCwweDAwLDB4OEEsMHg5NSww
eDU1LDB4RUUsMHgxNSwweEU2LDB4OEEsMHhFMiwweDZDLDB4N0YsCi0gICAgMHg1NSwweEVFLDB4
MTQsMHhFNiwweEEyLDB4QTIsMHgyMywweEFGLDB4MTUsMHhFRSwweDM0LDB4RTYsMHg3OSwweDdG
LDB4N0QsMHhCRiwKLSAgICAweDM1LDB4RTYsMHgxNCwweEU2LDB4QTAsMHhCMCwweDY4LDB4NEYs
MHgzNCwweEU2LDB4RDQsMHhFNSwweEEwLDB4MkEsMHgwQSwweEJBLAotICAgIDB4MzQsMHhFNiww
eEY0LDB4RTUsMHgwOCwweDA4LDB4OTYsMHhCRSwweDE1LDB4RUUsMHgzNCwweEU2LDB4NzUsMHhG
RiwweDdGLDB4RkYsCi0gICAgMHgzNSwweEU2LDB4RDMsMHhERCwweEEyLDB4RkEsMHhERSwweEY4
LDB4MzUsMHhFNiwweEQzLDB4REQsMHgyQSwweEZCLDB4RkQsMHhGNywKLSAgICAweDE0LDB4RTYs
MHhEMywweERELDB4RTgsMHhGRCwweEI1LDB4MkIsMHgzNSwweEU2LDB4RjQsMHhFNSwweDAzLDB4
MkIsMHgwQiwweDNGLAotICAgIDB4NzYsMHhFRSwweDM1LDB4RTYsMHg5NSwweEJELDB4QUIsMHhB
RiwweDk2LDB4RjYsMHg1NSwweEVFLDB4RUIsMHhGRiwweEFGLDB4QTUsCi0gICAgMHg3NiwweEY2
LDB4OTYsMHhFRSwweEU4LDB4RkUsMHhCRiwweEZCLDB4OTYsMHhGNiwweDU1LDB4RUUsMHg4OCww
eEVBLDB4N0EsMHg1RSwKLSAgICAweDc2LDB4RUUsMHgzNSwweEU2LDB4QzAsMHhBRSwweEY1LDB4
REYsMHg1NSwweEVFLDB4MzUsMHhFNiwweEMwLDB4NjIsMHg4QSwweDJCLAotICAgIDB4NTUsMHhF
RSwweEY0LDB4REQsMHg3QSwweDdBLDB4RUEsMHhFMCwweDE0LDB4RTYsMHg3MiwweENELDB4N0Ys
MHg3RSwweEU4LDB4MDAsCi0gICAgMHhEMywweERELDB4NzIsMHhDRCwweDlELDB4REYsMHhCRSww
eDA4LDB4MTQsMHhFNiwweEIyLDB4REQsMHhBRiwweEE1LDB4M0QsMHgwQSwKLSAgICAweDM0LDB4
RTYsMHgxNCwweEU2LDB4NzUsMHhFNSwweEY3LDB4NTUsMHg1NSwweEVFLDB4RjQsMHhERCwweDhC
LDB4QkIsMHhCRiwweEY3LAotICAgIDB4NzUsMHhFRSwweDM1LDB4RTYsMHgwRSwweDJGLDB4QkQs
MHhCRCwweDk2LDB4RUUsMHg3NSwweEVFLDB4RUQsMHhGRiwweDBBLDB4MEEsCi0gICAgMHhCNiww
eEY2LDB4NzYsMHhFRSwweDdGLDB4RkIsMHhGRSwweEZFLDB4OTYsMHhFRSwweDc2LDB4RUUsMHg3
QywweEZFLDB4RkYsMHhGRSwKLSAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4N0IsMHhGQSwweEE4
LDB4QUEsMHg3NSwweEVFLDB4QjIsMHhENSwweDdGLDB4RDgsMHhFOCwweEUwLAotICAgIDB4QjMs
MHhERCwweEYzLDB4RDUsMHhBQSwweEVCLDB4QUIsMHhBQiwweEIzLDB4REQsMHg3MSwweENELDB4
N0YsMHg3QywweDVDLDB4RTAsCi0gICAgMHhEMywweERELDB4NzEsMHhDRCwweDBBLDB4MEIsMHgw
RiwweDI1LDB4RjQsMHhERCwweDJFLDB4QUMsMHg3OCwweEEwLDB4MDAsMHgwMCwKLSAgICAweEIz
LDB4RDUsMHhDOSwweDdBLDB4NTcsMHhGQSwweDgwLDB4MDAsMHgxMCwweEM1LDB4QTgsMHg3QSww
eDU1LDB4NUQsMHhGQSwweDgwLAotICAgIDB4MEQsMHhBNCwweDg3LDB4NzIsMHg1NSwweDU1LDB4
RkUsMHg4MCwweDhCLDB4OTMsMHgyNiwweDZBLDB4NUYsMHhGRCwweEJGLDB4ODAsCi0gICAgMHhB
RiwweEI0LDB4QzksMHg3QSwweDM1LDB4MjUsMHgyOSwweDBCLDB4RjAsMHhDNCwweEFGLDB4QkMs
MHgwOSwweDI5LDB4MEEsMHgwRSwKLSAgICAweDY2LDB4NzIsMHgyNSwweDZBLDB4NjAsMHhCQSww
eEQyLDB4QTAsMHg4NywweDcyLDB4NDYsMHg3MiwweDVBLDB4NzYsMHg3NywweEJBLAotICAgIDB4
NjYsMHg3MiwweDI2LDB4NzIsMHhCQSwweEZGLDB4RUYsMHhFQSwweDg2LDB4NzIsMHgyNiwweDcy
LDB4N0YsMHhERiwweEVELDB4RDUsCi0gICAgMHg2NywweDdBLDB4MjYsMHg2QSwweENELDB4OEIs
MHhBQywweEFELDB4ODcsMHg3QSwweDI1LDB4NkEsMHhBNSwweDlELDB4QkEsMHhCRiwKLSAgICAw
eDg3LDB4N0EsMHgwNCwweDZBLDB4QkIsMHhGRSwweERBLDB4QTIsMHg2NywweDdBLDB4MjUsMHg2
QSwweDVGLDB4QzksMHgyRiwweEJGLAotICAgIDB4NjYsMHg3MiwweDI2LDB4NzIsMHg3RCwweEZF
LDB4OTYsMHhERSwweDY2LDB4NzIsMHgwNSwweDZBLDB4MDIsMHhDQSwweDI3LDB4MDEsCi0gICAg
MHg2NiwweDcyLDB4MjYsMHg2QSwweEQ2LDB4QUQsMHhCRSwweDg4LDB4NjYsMHg3MiwweDI2LDB4
NkEsMHhGRiwweDNELDB4QkUsMHhBRSwKLSAgICAweDg3LDB4NzIsMHgyNiwweDcyLDB4RDcsMHhE
NSwweEZGLDB4RkIsMHg0NiwweDcyLDB4MjUsMHg2QSwweEEwLDB4ODMsMHg4QSwweEVBLAotICAg
IDB4NDYsMHg3MiwweDA1LDB4NkEsMHg4MiwweDBGLDB4MkIsMHgzQSwweDY2LDB4NzIsMHgwNSww
eDZBLDB4NkUsMHhFQywweEQ4LDB4RkUsCi0gICAgMHg0NSwweDcyLDB4MDUsMHg2QSwweDlELDB4
OTAsMHhDMiwweDM4LDB4ODcsMHg3QSwweDA0LDB4NkEsMHgyNywweEZGLDB4REYsMHg3RiwKLSAg
ICAweEE3LDB4N0EsMHgwNCwweDZBLDB4QjAsMHhCRCwweEI3LDB4RUQsMHhBNywweDgyLDB4MjUs
MHg3MiwweDAyLDB4QTAsMHhGQiwweDdFLAotICAgIDB4QTcsMHg4MiwweDQ2LDB4NzIsMHgwMCww
eEE4LDB4QTMsMHhGRCwweEE3LDB4ODIsMHg2NywweDdBLDB4QUEsMHgyQSwweEZBLDB4ODUsCi0g
ICAgMHhDOCwweDgyLDB4ODYsMHg3QSwweEU1LDB4QUYsMHhFQSwweERCLDB4QTcsMHg4MiwweDY2
LDB4N0EsMHgwMCwweDgwLDB4MTgsMHg0MCwKLSAgICAweEM3LDB4ODIsMHg4NiwweDdBLDB4OUUs
MHhCRiwweDhDLDB4QUMsMHhDNywweDgyLDB4ODcsMHg3QSwweEY4LDB4MEEsMHhBMiwweEQ4LAot
ICAgIDB4RTgsMHg4QSwweDg2LDB4N0EsMHhCNywweDJGLDB4M0IsMHhBRiwweEU3LDB4ODIsMHhB
NywweDgyLDB4REEsMHhENiwweDc1LDB4REYsCi0gICAgMHhDNywweDgyLDB4ODYsMHg3QSwweEE2
LDB4RjYsMHhEQywweEZDLDB4QzgsMHg4MiwweDg3LDB4ODIsMHhCRSwweDI3LDB4MkYsMHhBMiwK
LSAgICAweEU4LDB4OEEsMHg4NywweDdBLDB4NUYsMHg1RiwweEVGLDB4QUIsMHhBNywweDgyLDB4
RTUsMHg2OSwweEY2LDB4QkUsMHgyOCwweDI4LAotICAgIDB4RTgsMHg4QSwweDI2LDB4NzIsMHg1
NSwweEVBLDB4ODAsMHhBMCwweDg3LDB4ODIsMHhFNSwweDY5LDB4NTcsMHhGNywweEE4LDB4MDgs
Ci0gICAgMHhBNywweDdBLDB4QTUsMHg2MSwweEQ3LDB4RkUsMHhBQSwweEEyLDB4NDcsMHg3Miww
eEE1LDB4NTksMHhGNywweDdCLDB4NTgsMHg1OCwKLSAgICAweEE1LDB4NTksMHg0NCwweDUxLDB4
RTgsMHhGMCwweDc4LDB4NUEsMHgyMywweDUxLDB4NDQsMHg0OSwweDU3LDB4RTcsMHhERSwweDVG
LAotICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHg4MCwweDgwLDB4ODAsMHg3MCwweDY0LDB4NDks
MHhDMiwweDMwLDB4RTgsMHhGRiwweDdGLDB4N0YsCi0gICAgMHgyMywweDQxLDB4QTIsMHgzMCww
eDhBLDB4RUYsMHhBRCwweEFELDB4MDMsMHgzOSwweEExLDB4MzAsMHg1NSwweDVFLDB4RjgsMHhG
QywKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4NTUsMHhENSwweDFELDB4MjksMHgyNCwweDM5
LDB4QzIsMHgzMCwweDlGLDB4QkYsMHhBRSwweEI4LAotICAgIDB4MjQsMHg0MSwweDAzLDB4Mzks
MHg3MywweEZELDB4ODUsMHg1NywweDAzLDB4MzksMHhBMiwweDMwLDB4QTgsMHhEOCwweEZDLDB4
RjgsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzOCwweENCLDB4QzUsMHhCNSwweEE3LDB4NjUsMHg0
OSwweEUzLDB4MzgsMHhCNSwweDNGLDB4MkQsMHgyNSwKLSAgICAweDg1LDB4NTEsMHg0NCwweDQ5
LDB4NUQsMHg3RiwweERBLDB4Q0YsMHg2NCwweDUxLDB4MjMsMHg0MSwweDYyLDB4NjMsMHhFQSww
eEZGLAotICAgIDB4NjQsMHg1MSwweDI0LDB4NDksMHhBNSwweEFGLDB4M0YsMHgyRCwweEE1LDB4
NjEsMHg0NCwweDQ5LDB4QTUsMHgzNSwweEFGLDB4RkUsCi0gICAgMHgwNiwweDZBLDB4NjQsMHg1
OSwweDBCLDB4MEIsMHhCRiwweEQ1LDB4NjgsMHg3QSwweEM2LDB4NjEsMHgwQiwweEFBLDB4QTks
MHhBRCwKLSAgICAweDY4LDB4N0EsMHhDNiwweDYxLDB4ODAsMHhDMCwweEVBLDB4REYsMHhFNiww
eDYxLDB4NDQsMHg0OSwweDc4LDB4N0MsMHhGQywweDZFLAotICAgIDB4NDQsMHg0OSwweEMyLDB4
MzgsMHhGRiwweDVFLDB4NTQsMHhEQywweDAzLDB4NDEsMHhFMywweDQwLDB4MzgsMHgzRCwweDFG
LDB4REEsCi0gICAgMHg4NSwweDUxLDB4MDMsMHg0MSwweDJGLDB4MDksMHgyQiwweDJELDB4QzYs
MHg1OSwweDAzLDB4NDEsMHg3QSwweEVBLDB4MjgsMHgyMiwKLSAgICAweEM2LDB4NTksMHgwMyww
eDQxLDB4NTUsMHg1NywweDVBLDB4QTAsMHg2NCwweDUxLDB4MDMsMHg0MSwweDJCLDB4MkYsMHgy
RCwweDhFLAotICAgIDB4QTUsMHg1OSwweDIzLDB4NDksMHgyOCwweEUwLDB4RjYsMHhENywweDg1
LDB4NTksMHgwMywweDQxLDB4QUEsMHhFMiwweEVGLDB4N0YsCi0gICAgMHhBNiwweDU5LDB4RTIs
MHg0MCwweDJGLDB4QkYsMHhCNywweEY1LDB4ODgsMHg3QSwweDg1LDB4NTksMHgyRiwweDJCLDB4
MEIsMHhBRCwKLSAgICAweDI5LDB4OEIsMHhBOCwweDgyLDB4QUEsMHg2MiwweEFGLDB4RjUsMHgy
QSwweDkzLDB4ODYsMHg3QSwweDgyLDB4QUEsMHhFQiwweDc1LAotICAgIDB4QTgsMHg4MiwweDA1
LDB4NkEsMHhFOCwweDc4LDB4NTgsMHg3OCwweDI2LDB4NkEsMHg2MywweDUxLDB4MjgsMHhCQSww
eEJGLDB4RjcsCi0gICAgMHg0NywweDcyLDB4QTUsMHg1OSwweDJBLDB4MjMsMHhBQiwweEFELDB4
NDcsMHg3MiwweDA2LDB4NkEsMHgyMiwweEVFLDB4OEYsMHg4NSwKLSAgICAweDg4LDB4N0EsMHgy
NiwweDcyLDB4RTgsMHhFRiwweEY5LDB4NTUsMHhFOSwweDhBLDB4MjYsMHg3MiwweEJGLDB4M0Ys
MHgyOSwweEFELAotICAgIDB4RTksMHg4QSwweDg4LDB4ODIsMHgyMiwweDIwLDB4QTgsMHg2RSww
eDJBLDB4OTMsMHhBOCwweDgyLDB4QUIsMHgwQiwweEJCLDB4RjUsCi0gICAgMHgwQSwweDkzLDB4
QTgsMHg4MiwweDdFLDB4NjAsMHg1RSwweEZGLDB4QTgsMHg4MiwweDY4LDB4N0EsMHg2NCwweEVF
LDB4RjAsMHg2OCwKLSAgICAweDY4LDB4N0EsMHgyNiwweDcyLDB4QUIsMHhFOCwweDUwLDB4RjAs
MHg2NywweDdBLDB4MDYsMHg2QSwweDgwLDB4NkUsMHhGNywweERGLAotICAgIDB4ODgsMHg3QSww
eDI2LDB4NkEsMHgyQiwweDJCLDB4QkYsMHhENSwweEE4LDB4ODIsMHg0NiwweDcyLDB4NkEsMHhF
MiwweEZGLDB4RjcsCi0gICAgMHg4NywweDdBLDB4MjYsMHg2QSwweDc1LDB4RkYsMHhGOCwweEEy
LDB4NjcsMHg2QSwweDA1LDB4NkEsMHgwRiwweEJCLDB4OTcsMHhCNywKLSAgICAweDY3LDB4NzIs
MHhFNiwweDYxLDB4NzIsMHhBMCwweDgwLDB4QTIsMHg4NywweDcyLDB4RTYsMHg2MSwweDJFLDB4
QkIsMHhGNywweEZFLAotICAgIDB4Q0MsMHg5QiwweDI3LDB4NkEsMHgyRiwweEY3LDB4RjUsMHg1
NSwweEFGLDB4QkMsMHg2NywweDcyLDB4MDIsMHhCRiwweEY1LDB4NTUsCi0gICAgMHg5MiwweEQ1
LDB4MkEsMHg4QiwweDAyLDB4MkIsMHhGRCwweDU1LDB4MTQsMHhFNiwweEVDLDB4QTMsMHgwMCww
eDBBLDB4QUIsMHhCNSwKLSAgICAweDM1LDB4RUUsMHg5MywweEQ1LDB4MDIsMHgwOCwweDJBLDB4
QUQsMHgzNCwweEVFLDB4MTQsMHhFNiwweEY3LDB4NUUsMHg3OCwweEVDLAotICAgIDB4MzQsMHhF
NiwweEQ0LDB4RTUsMHhBMiwweEEyLDB4QUEsMHhFMCwweDE0LDB4RTYsMHhGNCwweEU1LDB4ODAs
MHhBMiwweEZELDB4RDUsCi0gICAgMHgxNCwweEU2LDB4RjQsMHhFNSwweDA4LDB4MjIsMHhCNiww
eEE1LDB4MzUsMHhFRSwweEQzLDB4REQsMHgyMiwweDBFLDB4RUUsMHg5RiwKLSAgICAweDM1LDB4
RTYsMHhGNCwweEU1LDB4QUEsMHhGOCwweERFLDB4RkYsMHgzNCwweEU2LDB4RjQsMHhERCwweDc1
LDB4RkEsMHhGRSwweEZFLAotICAgIDB4MTQsMHhFNiwweEY0LDB4REQsMHgzRiwweDM3LDB4MzUs
MHhENSwweDM0LDB4RTYsMHhGNCwweEU1LDB4M0YsMHhBRiwweEZGLDB4RkYsCi0gICAgMHg1NSww
eEVFLDB4MTQsMHhFNiwweDhBLDB4QUIsMHhBRCwweEI5LDB4OTYsMHhGNiwweDU1LDB4RUUsMHhB
RCwweEFGLDB4RDUsMHhENSwKLSAgICAweDk3LDB4RjYsMHgzNSwweEU2LDB4QTIsMHhBOCwweDZF
LDB4NUYsMHg3NiwweEVFLDB4MTQsMHhFNiwweEU4LDB4RkEsMHhGNiwweEQ1LAotICAgIDB4NTUs
MHhFRSwweDE0LDB4RTYsMHhBNywweDNGLDB4QkYsMHhCRiwweDU1LDB4RUUsMHgzNSwweEU2LDB4
MkUsMHgxQywweERGLDB4RkYsCi0gICAgMHg1NSwweEVFLDB4MTQsMHhFNiwweEZBLDB4QUMsMHhG
RSwweDU3LDB4NTUsMHhFRSwweDE0LDB4RTYsMHhGRiwweEUyLDB4RUYsMHg1NSwKLSAgICAweDU1
LDB4RUUsMHhGNCwweERELDB4N0YsMHhBQSwweDgyLDB4RTgsMHgzNSwweEU2LDB4RDMsMHhERCww
eEFELDB4QUUsMHhFOCwweEI4LAotICAgIDB4MTQsMHhFNiwweEY0LDB4REQsMHhFNiwweEZBLDB4
QTIsMHgwMiwweDE0LDB4RTYsMHhENCwweERELDB4MEUsMHgyQiwweEEyLDB4QjYsCi0gICAgMHg1
NSwweEU2LDB4MTQsMHhFNiwweDI5LDB4MkYsMHgzRCwweEFELDB4OTYsMHhFRSwweDU1LDB4RTYs
MHgwMiwweDAyLDB4MDMsMHgwRCwKLSAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4Q0EsMHhFQSww
eEE4LDB4QjgsMHg3NiwweEY2LDB4OTYsMHhFRSwweDlELDB4RDcsMHg5NSwweEY3LAotICAgIDB4
OTYsMHhFRSwweDc2LDB4RUUsMHg3NiwweDVGLDB4RkQsMHgzQiwweDk2LDB4RUUsMHgzNSwweEU2
LDB4N0EsMHg4QSwweDgwLDB4MDgsCi0gICAgMHg5NiwweEVFLDB4RDMsMHhERCwweDU1LDB4N0Us
MHhGQSwweEE4LDB4MzUsMHhFNiwweDkyLDB4RDUsMHg1RiwweDVGLDB4RkUsMHhGMCwKLSAgICAw
eEQzLDB4RDUsMHg3MiwweEQ1LDB4MEQsMHhBQiwweEVELDB4N0YsMHgxNCwweEU2LDB4QjMsMHhE
NSwweEFBLDB4QUIsMHg4RCwweEI5LAotICAgIDB4MTQsMHhFNiwweEIzLDB4RDUsMHg3RSwweDZB
LDB4QUEsMHhBQiwweEY0LDB4REQsMHg1MSwweEQ1LDB4N0UsMHhBQiwweEVBLDB4ODAsCi0gICAg
MHg5MiwweEQ1LDB4NkYsMHhCNCwweDVFLDB4QTAsMHgwMCwweDAwLDB4QjIsMHhENSwweDBELDB4
QTQsMHg1NywweEZGLDB4RUEsMHhBOCwKLSAgICAweEFGLDB4QkMsMHgwRCwweEE0LDB4MkQsMHgw
QSwweDJBLDB4NTgsMHhGMCwweEM0LDB4MEQsMHhBNCwweDA4LDB4MDIsMHgwQSwweEJELAotICAg
IDB4ODcsMHg3QSwweDI1LDB4NkEsMHhERiwweDFELDB4RkIsMHhGQSwweDg2LDB4N0EsMHgyNSww
eDZBLDB4MzIsMHhCOSwweEVCLDB4RTcsCi0gICAgMHg2NiwweDcyLDB4MDUsMHg3MiwweEE4LDB4
QUUsMHhBQiwweEE5LDB4NjYsMHg3MiwweDA2LDB4NzIsMHhBQSwweDJBLDB4MDIsMHhFMCwKLSAg
ICAweDg3LDB4N0EsMHg0NiwweDcyLDB4NTUsMHgxNSwweDk3LDB4RUYsMHg4NywweDdBLDB4MjUs
MHg2QSwweEJELDB4QkIsMHgyQiwweDdBLAotICAgIDB4NjYsMHg3MiwweDA1LDB4NzIsMHgwMCww
eDhDLDB4QTgsMHgyQSwweEE3LDB4ODIsMHgyNSwweDZBLDB4RUYsMHhGQiwweEZGLDB4NkEsCi0g
ICAgMHg4NiwweDcyLDB4MjYsMHg3MiwweEZFLDB4RUUsMHhGRSwweDkyLDB4NjYsMHg3MiwweDI2
LDB4NzIsMHg4MiwweEVCLDB4QUUsMHhBMiwKLSAgICAweDY2LDB4NzIsMHgyNiwweDcyLDB4QTgs
MHhFMiwweEUwLDB4MTIsMHg2NywweDcyLDB4MjYsMHg3MiwweEVFLDB4QkYsMHg4MSwweDJCLAot
ICAgIDB4NjYsMHg3MiwweDI1LDB4NzIsMHg3NiwweEJGLDB4M0YsMHg1RCwweDg3LDB4N0EsMHgy
NSwweDZBLDB4NUYsMHhERiwweEQyLDB4MzgsCi0gICAgMHg2NiwweDcyLDB4MDUsMHg2QSwweEJF
LDB4RUUsMHhGRSwweEIwLDB4NjYsMHg3MiwweEU1LDB4NjksMHhBNiwweDI4LDB4QUEsMHg4MiwK
LSAgICAweDY2LDB4NzIsMHgwNSwweDcyLDB4MkEsMHgwMiwweDhFLDB4QUEsMHg2NiwweDcyLDB4
MjUsMHg3MiwweEZFLDB4RDAsMHhBOCwweDlCLAotICAgIDB4NjYsMHg3MiwweDA1LDB4NkEsMHhF
RiwweEU4LDB4RkEsMHhFRSwweDQ2LDB4NzIsMHgwNSwweDZBLDB4RTAsMHhBOCwweDM3LDB4MEEs
Ci0gICAgMHg2NiwweDcyLDB4MjUsMHg2QSwweEZBLDB4NUYsMHg3NSwweDlGLDB4ODcsMHg3QSww
eDI1LDB4NkEsMHg4QiwweEJELDB4RjcsMHg1NiwKLSAgICAweEM3LDB4ODIsMHgwNSwweDZBLDB4
MEEsMHgyQSwweEJCLDB4RjUsMHhDNywweDgyLDB4NDUsMHg3MiwweDAyLDB4QTAsMHhCQiwweEZE
LAotICAgIDB4QzgsMHg4MiwweDY2LDB4N0EsMHhBQSwweEFBLDB4MkIsMHgyRCwweEM4LDB4ODIs
MHg4NiwweDdBLDB4N0UsMHhGNywweEVDLDB4QjgsCi0gICAgMHhDNywweDgyLDB4ODcsMHg3QSww
eDhCLDB4QUEsMHg4QiwweEJFLDB4QzgsMHg4MiwweEE3LDB4ODIsMHgwRiwweENBLDB4RTgsMHgz
MywKLSAgICAweEU3LDB4OEEsMHhBNywweDgyLDB4RjUsMHhGNSwweEVELDB4NkEsMHhFOCwweDhB
LDB4QTcsMHg4MiwweEFCLDB4RUEsMHhGQiwweEZCLAotICAgIDB4RTgsMHg4QSwweEE3LDB4ODIs
MHhCRiwweEFELDB4RUIsMHgyQiwweEU4LDB4OEEsMHg2NiwweDdBLDB4OUYsMHg3RSwweEY4LDB4
RTgsCi0gICAgMHhFOCwweDhBLDB4ODcsMHg3QSwweEEzLDB4OEIsMHhFRCwweENCLDB4QzgsMHg4
QSwweDQ2LDB4NzIsMHhENiwweEZDLDB4RjgsMHhBOCwKLSAgICAweEE3LDB4N0EsMHgyNiwweDcy
LDB4RjIsMHg3OCwweDdFLDB4NUUsMHgyNiwweDcyLDB4NDQsMHg1MSwweEY4LDB4N0EsMHg3Qyww
eDdBLAotICAgIDB4NjQsMHg1MSwweEUzLDB4MzgsMHg4MCwweDJBLDB4RUEsMHg3QSwweDY0LDB4
NTEsMHhFMywweDM4LDB4ODIsMHhBOCwweDVFLDB4NTcsCi0gICAgMHg0NCwweDQ5LDB4QTEsMHgy
OCwweEY4LDB4RjgsMHhERiwweDU3LDB4RTMsMHgzOCwweDgxLDB4MjgsMHg4QiwweDhGLDB4OUYs
MHhGNSwKLSAgICAweEUzLDB4MzgsMHhDMiwweDMwLDB4MzksMHgzRCwweDlELDB4NTksMHhFMyww
eDM4LDB4QzIsMHgyOCwweEE4LDB4QUEsMHhEQywweEE3LAotICAgIDB4MjMsMHgzOSwweEMzLDB4
MzAsMHgyRCwweEFCLDB4QkUsMHhCRiwweDI0LDB4MzksMHhDMiwweDMwLDB4RkMsMHhGNiwweDdF
LDB4N0UsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEEyLDB4REUsMHg1RCwweEY1LDB4RTIs
MHgzOCwweEMyLDB4MzAsMHgyMCwweDBBLDB4MkEsMHg5RCwKLSAgICAweDAzLDB4MzksMHhFMiww
eDM4LDB4NDksMHg1OSwweEZELDB4OTcsMHg2NCwweDQ5LDB4RTIsMHgzOCwweDJELDB4M0QsMHhC
RCwweDJGLAotICAgIDB4ODUsMHg1MSwweDAzLDB4NDEsMHg4MiwweEEwLDB4QTIsMHg1RSwweDY0
LDB4NDksMHgyMywweDQ5LDB4RjYsMHg5NiwweEVCLDB4QUIsCi0gICAgMHg2NCwweDUxLDB4NDQs
MHg1MSwweERELDB4OUUsMHg4MiwweDIyLDB4QTUsMHg1OSwweDQ0LDB4NTEsMHhGRCwweEU5LDB4
MEIsMHgwMiwKLSAgICAweEE1LDB4NTksMHg2NSwweDU5LDB4OTUsMHhERCwweDM2LDB4MUEsMHgy
NywweDcyLDB4QTUsMHg2MSwweDBELDB4MEQsMHgwOSwweDJGLAotICAgIDB4MDcsMHg2QSwweDY1
LDB4NTEsMHg2OCwweDYwLDB4RkMsMHhGOCwweDY0LDB4NTEsMHgyNCwweDQ5LDB4N0IsMHhGRCww
eENGLDB4RjgsCi0gICAgMHg0NCwweDQ5LDB4RTMsMHg0MCwweDU3LDB4N0UsMHhFQSwweEY4LDB4
MjQsMHg0MSwweEEyLDB4MzAsMHhBMiwweEUyLDB4RkEsMHhGRSwKLSAgICAweDg1LDB4NTEsMHhD
MiwweDM4LDB4QUYsMHhCNSwweEI1LDB4MkQsMHhFNiwweDU5LDB4ODQsMHg1MSwweEE3LDB4QkQs
MHhGRCwweDJBLAotICAgIDB4RTYsMHg2MSwweDg1LDB4NTEsMHhFMiwweEYyLDB4N0IsMHg1RSww
eDg1LDB4NTEsMHgyNCwweDQ5LDB4QUUsMHhDOCwweEZFLDB4REYsCi0gICAgMHg2NSwweDUxLDB4
MDMsMHg0MSwweDU4LDB4N0EsMHg2RiwweDVGLDB4MjMsMHg0OSwweEUzLDB4MzgsMHhBMCwweEZB
LDB4QkIsMHhCRCwKLSAgICAweEUzLDB4NDAsMHgwMiwweDM5LDB4MEEsMHgwMCwweDgwLDB4RTIs
MHg0NiwweDcyLDB4MjMsMHg0OSwweDI5LDB4RjUsMHhGNSwweEQ1LAotICAgIDB4ODYsMHg3QSww
eEM1LDB4NTksMHgwQSwweEFCLDB4RkQsMHg1NSwweDY2LDB4NzIsMHg2NCwweDUxLDB4ODAsMHhF
OCwweEZGLDB4NUYsCi0gICAgMHgyNSwweDZBLDB4NjQsMHg1MSwweEEwLDB4QUIsMHhGNSwweEQ1
LDB4QzUsMHg2MSwweDY0LDB4NTEsMHg1QywweEZBLDB4RkQsMHhGRSwKLSAgICAweEM2LDB4NjEs
MHg2NCwweDUxLDB4MEIsMHhBRCwweEZGLDB4RjcsMHgwNiwweDZBLDB4ODUsMHg1OSwweDJBLDB4
QjcsMHhGNSwweDU1LAotICAgIDB4MjYsMHg3MiwweDg0LDB4NTksMHgyOCwweDJGLDB4QkQsMHg5
NSwweDg4LDB4N0EsMHhFNSwweDY5LDB4MEEsMHgyQSwweEFCLDB4QkQsCi0gICAgMHhBOCwweDgy
LDB4NjcsMHg3QSwweEEyLDB4Q0IsMHg2MSwweDZFLDB4RTksMHg4QSwweDQ2LDB4NzIsMHgwQSww
eDA5LDB4QTcsMHg1NSwKLSAgICAweEU5LDB4OEEsMHg2NywweDdBLDB4QTAsMHg4OCwweEVCLDB4
RkQsMHhDOSwweDhBLDB4NjcsMHg3QSwweDlFLDB4REYsMHhBQiwweEEyLAotICAgIDB4RTksMHg5
MiwweDQ3LDB4NzIsMHg1RiwweDZGLDB4QTIsMHhBMCwweEE4LDB4N0EsMHgwNiwweDcyLDB4Rjcs
MHhGNywweEZFLDB4RjgsCi0gICAgMHg0NywweDcyLDB4RTUsMHg2OSwweDNBLDB4QUUsMHhGRSww
eEY1LDB4NjcsMHg3QSwweEM1LDB4NjEsMHgwMCwweEJBLDB4NUYsMHg1RiwKLSAgICAweDY3LDB4
NzIsMHhDNSwweDYxLDB4MDAsMHgwQiwweEE1LDB4NTUsMHg4NywweDcyLDB4MDYsMHg2QSwweEZF
LDB4ODIsMHhDQSwweEZELAotICAgIDB4NjcsMHg3MiwweEU1LDB4NjEsMHhFQSwweEU4LDB4RjIs
MHhENywweDQ2LDB4NkEsMHhDNSwweDU5LDB4QkEsMHhCOCwweDdDLDB4NUYsCi0gICAgMHgyNyww
eDZBLDB4ODQsMHg1OSwweDAwLDB4MEEsMHhBQSwweERGLDB4NjgsMHg3MiwweEM1LDB4NjEsMHgw
QSwweDJFLDB4RkIsMHg3RCwKLSAgICAweEM4LDB4ODIsMHgyNiwweDZBLDB4MDAsMHgyQSwweEFG
LDB4QTUsMHhBRiwweEJDLDB4QzgsMHg3QSwweDJELDB4MkQsMHhGNSwweEY1LAotICAgIDB4RjQs
MHhFNSwweEVDLDB4QTMsMHgwMiwweDBBLDB4MEIsMHhCRCwweDM1LDB4RUUsMHhEMywweEU1LDB4
MDIsMHgwMiwweDgyLDB4MjksCi0gICAgMHgzNCwweEVFLDB4RjQsMHhFNSwweEUyLDB4RUEsMHhG
QSwweEYyLDB4MTQsMHhFNiwweEQzLDB4REQsMHhCRSwweEZCLDB4RjgsMHhGQSwKLSAgICAweEY0
LDB4RTUsMHhEMywweERELDB4MjgsMHg4QSwweDJGLDB4MEIsMHhGNCwweERELDB4QjMsMHhERCww
eEU4LDB4NzgsMHg3RSwweEIwLAotICAgIDB4MTQsMHhFNiwweEIzLDB4REQsMHgyQSwweDJCLDB4
QUQsMHhGRSwweDE0LDB4RTYsMHhEMywweERELDB4RTgsMHg3QSwweEZBLDB4RkYsCi0gICAgMHhG
NCwweEU1LDB4RDMsMHhERCwweEZFLDB4RkIsMHg1QiwweERGLDB4MTQsMHhFNiwweEQzLDB4REQs
MHhDRiwweEFELDB4RDUsMHhCNSwKLSAgICAweDM0LDB4RTYsMHhGMywweEU1LDB4MEIsMHgyQiww
eDJGLDB4MkEsMHg1NSwweEVFLDB4MzUsMHhFNiwweDAyLDB4ODIsMHg3NywweDU3LAotICAgIDB4
NTYsMHhFRSwweDE0LDB4RTYsMHhBQywweERFLDB4RkUsMHg1NSwweDM1LDB4RTYsMHgxNCwweEU2
LDB4RkMsMHgzOCwweDJGLDB4QkQsCi0gICAgMHg1NSwweEVFLDB4MTQsMHhFNiwweEJFLDB4QUEs
MHgzRSwweEZGLDB4NTUsMHhFRSwweDM1LDB4RTYsMHhFRSwweEJCLDB4N0UsMHhGNywKLSAgICAw
eDM1LDB4RTYsMHhEMywweERELDB4RjgsMHg3OCwweDdBLDB4QTgsMHgxNCwweEU2LDB4RDMsMHhE
RCwweDJCLDB4MzcsMHhCRiwweEFGLAotICAgIDB4RjQsMHhFNSwweDM1LDB4REUsMHhBQiwweDIy
LDB4QTAsMHhGQSwweDM0LDB4RTYsMHhGNCwweEU1LDB4RkYsMHhBOSwweDJCLDB4MkIsCi0gICAg
MHgzNSwweEU2LDB4RjQsMHhERCwweEFGLDB4RUUsMHg2RSwweEZBLDB4MzQsMHhFNiwweEY0LDB4
REQsMHhGNywweEJGLDB4MkQsMHhBRiwKLSAgICAweDc2LDB4RUUsMHgxNSwweEU2LDB4M0QsMHhB
RiwweEJGLDB4RkQsMHhCNiwweEY2LDB4NTYsMHhFNiwweEI5LDB4QUYsMHhCQiwweDBGLAotICAg
IDB4QjYsMHhGNiwweDc2LDB4RUUsMHhGNywweEI1LDB4QkYsMHhGOCwweDc2LDB4RjYsMHg5Niww
eEVFLDB4REQsMHhGRCwweEZGLDB4RjUsCi0gICAgMHg3NiwweEY2LDB4OTYsMHhFRSwweDVELDB4
RjcsMHhGRiwweDU2LDB4OTYsMHhFRSwweDc2LDB4RUUsMHg2QSwweEZELDB4RkEsMHg3MCwKLSAg
ICAweDk2LDB4RUUsMHgzNSwweEU2LDB4RUEsMHhBOCwweDIyLDB4ODgsMHhCNiwweEVFLDB4MTQs
MHhFNiwweDdGLDB4RkEsMHhBQSwweEFBLAotICAgIDB4NTUsMHhFRSwweEIzLDB4RDUsMHg1Nyww
eDVBLDB4QTAsMHgwMCwweDM1LDB4RTYsMHg5MiwweEQ1LDB4QkQsMHhGNSwweEZGLDB4RkMsCi0g
ICAgMHgxNCwweEU2LDB4QjMsMHhENSwweDJFLDB4QUEsMHgyRiwweEFELDB4MTQsMHhFNiwweEQz
LDB4REQsMHhGQiwweENBLDB4NkEsMHhGQSwKLSAgICAweEYzLDB4REQsMHhCMywweEQ1LDB4N0Ys
MHhDMiwweDA4LDB4MjAsMHhGNCwweERELDB4NTEsMHhDRCwweDVFLDB4RTgsMHg4MCwweDAwLAot
ICAgIDB4RDMsMHhERCwweDhGLDB4QjQsMHg1RSwweEVBLDB4MjAsMHgwMCwweDcyLDB4Q0QsMHg2
QSwweDkzLDB4RDcsMHg1RSwweEY4LDB4QzAsCi0gICAgMHg4NywweDdBLDB4NDYsMHg3MiwweDdF
LDB4N0EsMHg1RSwweDc1LDB4NjYsMHg3MiwweDI1LDB4NkEsMHhFNiwweDJBLDB4MEEsMHgzMiwK
LSAgICAweDg2LDB4N0EsMHg0NiwweDcyLDB4RjUsMHhEQiwweEJCLDB4N0EsMHg2NiwweDcyLDB4
MjUsMHg3MiwweDNBLDB4QUEsMHgyMCwweDJGLAotICAgIDB4NjYsMHg3MiwweDI1LDB4NkEsMHhF
MCwweDE4LDB4RDIsMHgzQSwweDg3LDB4N0EsMHgyNiwweDZBLDB4N0UsMHhFQSwweEFGLDB4RUMs
Ci0gICAgMHg4NywweDdBLDB4NDYsMHg3MiwweEQxLDB4N0IsMHhFQSwweDY5LDB4NjYsMHg3Miww
eDI2LDB4NzIsMHg2QSwweEFBLDB4ODIsMHgyMywKLSAgICAweDY2LDB4NzIsMHgyNSwweDcyLDB4
QUUsMHgzRSwweDNGLDB4RUEsMHg4NiwweDcyLDB4MjUsMHg2QSwweEVBLDB4RUYsMHhGNCwweEI3
LAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhERCwweEZCLDB4QkYsMHg4RCwweDY2LDB4NzIs
MHgyNSwweDcyLDB4RTAsMHhDRSwweDJDLDB4QUMsCi0gICAgMHg2NiwweDdBLDB4MjUsMHg2QSww
eDY5LDB4RTksMHhCMiwweDgyLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg5RiwweEU1LDB4NDUsMHhG
RCwKLSAgICAweDg3LDB4N0EsMHgyNSwweDZBLDB4REEsMHg4QiwweENELDB4QUIsMHg4NywweDdB
LDB4MjUsMHg2QSwweEVGLDB4RkEsMHg5QSwweEQ4LAotICAgIDB4NjcsMHg3MiwweDI2LDB4NzIs
MHhBMywweDM2LDB4REUsMHg5OCwweDY2LDB4NzIsMHgwNSwweDZBLDB4QUEsMHhDMCwweEU4LDB4
RjgsCi0gICAgMHg2NiwweDcyLDB4MjUsMHg3MiwweDRBLDB4Q0IsMHhDQSwweENCLDB4NDYsMHg3
MiwweDI1LDB4NkEsMHg4NywweDJCLDB4MDEsMHgwMywKLSAgICAweDg3LDB4N0EsMHgyNSwweDZB
LDB4NTcsMHg3NywweDZCLDB4RjIsMHg2NiwweDcyLDB4MDUsMHg2QSwweDdCLDB4RTIsMHhBMCww
eDBBLAotICAgIDB4NjcsMHg3QSwweDA1LDB4NkEsMHgyRCwweDJCLDB4QUEsMHgyQSwweDY3LDB4
N0EsMHgyNiwweDcyLDB4N0UsMHhGRSwweEJFLDB4QzgsCi0gICAgMHg4NywweDdBLDB4MjUsMHg3
MiwweDA3LDB4QkYsMHhGRiwweEZGLDB4QTgsMHg4MiwweDI1LDB4NzIsMHgwQSwweDJELDB4Rjcs
MHg5RiwKLSAgICAweEM4LDB4ODIsMHgyNiwweDcyLDB4MkEsMHgwQSwweEVCLDB4NjcsMHhDNyww
eDgyLDB4NjYsMHg3QSwweEFDLDB4QjgsMHhBQiwweEFELAotICAgIDB4QzgsMHg4MiwweEE3LDB4
ODIsMHhDMCwweEQ3LDB4RDUsMHg1RiwweEU4LDB4OEEsMHhBNywweDgyLDB4N0IsMHhFQSwweEIy
LDB4RjUsCi0gICAgMHgwOSwweDkzLDB4QTcsMHg4MiwweDhGLDB4OEIsMHhGQiwweERCLDB4MDks
MHg5MywweEM4LDB4OEEsMHg1RiwweEFELDB4M0YsMHgyRiwKLSAgICAweDI5LDB4OTMsMHhDOCww
eDhBLDB4N0QsMHg3RSwweDZFLDB4NzIsMHhDOSwweDhBLDB4MDYsMHg2QSwweEE4LDB4QTgsMHhF
MCwweDc4LAotICAgIDB4NjcsMHg3QSwweEE0LDB4NTksMHhFOCwweEZBLDB4RkEsMHg1RiwweEU1
LDB4NjEsMHgyMywweDQ5LDB4NjgsMHg3OCwweDdFLDB4NUYsCi0gICAgMHgyNCwweDQ5LDB4QzIs
MHgzMCwweEU4LDB4RjgsMHg3QywweDVELDB4MDMsMHgzOSwweEEyLDB4MzAsMHhCRiwweEZGLDB4
RkYsMHg1NSwKLSAgICAweEMyLDB4MzAsMHg4MiwweDI4LDB4QzAsMHg2OCwweDdFLDB4RjcsMHhD
MiwweDMwLDB4ODEsMHgyOCwweDI1LDB4MjUsMHgyRCwweDJELAotICAgIDB4RTIsMHgzMCwweEEy
LDB4MjgsMHhGRSwweEY2LDB4RjcsMHhGNywweDAzLDB4MzEsMHhBMiwweDI4LDB4QkUsMHgxRiww
eEJGLDB4QjcsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEFBLDB4QTgsMHhBQSwweDVCLDB4
RTMsMHgzMCwweDgyLDB4MjgsMHgyMCwweDJBLDB4QjYsMHhBRSwKLSAgICAweEUzLDB4MzAsMHhB
MiwweDMwLDB4ODAsMHhERSwweEZFLDB4REYsMHhFMiwweDMwLDB4QTIsMHgzMCwweDFELDB4RkYs
MHhGRiwweEY1LAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhCNSwweDk1LDB4MzUsMHhCNSww
eEE2LDB4NTEsMHgyNCwweDQxLDB4QkQsMHg4QiwweDgxLDB4RUIsCi0gICAgMHg2NCwweDQ5LDB4
RTMsMHg0MCwweDU4LDB4N0EsMHg1RSwweDU3LDB4NDQsMHg0OSwweEUzLDB4NDAsMHgwMywweDI5
LDB4MjksMHgyRCwKLSAgICAweDg1LDB4NTksMHg0NCwweDUxLDB4RUIsMHhBQSwweEY1LDB4ODMs
MHhBNSwweDU5LDB4NjQsMHg1MSwweDBBLDB4QTYsMHg3NywweDU1LAotICAgIDB4QzUsMHg2MSww
eDQ0LDB4NDksMHhCQywweDI4LDB4M0EsMHhBRCwweDI3LDB4NzIsMHhDNSwweDYxLDB4OEQsMHhF
OSwweEE5LDB4RkQsCi0gICAgMHhFNiwweDYxLDB4NjUsMHg1MSwweEZGLDB4N0UsMHg3OCwweDVB
LDB4NjUsMHg1MSwweEUyLDB4MzgsMHhBOCwweEU4LDB4QkMsMHg1RiwKLSAgICAweDY0LDB4NDks
MHhFMywweDM4LDB4NzgsMHg2QSwweEZBLDB4RUIsMHgyNCwweDQxLDB4QzMsMHgzOCwweDVGLDB4
RkQsMHhBNywweDJGLAotICAgIDB4QTYsMHg1OSwweDAzLDB4NDEsMHgyNSwweEFELDB4QUIsMHg4
RiwweEU3LDB4NjEsMHg0NCwweDQ5LDB4MDIsMHgwQSwweEZGLDB4NTUsCi0gICAgMHhFNywweDYx
LDB4NjQsMHg0OSwweEVBLDB4MjAsMHhBMywweEY1LDB4ODUsMHg1MSwweDI0LDB4NDEsMHg3RSww
eEU4LDB4NzgsMHg1QywKLSAgICAweDQ0LDB4NDksMHhFMywweDM4LDB4N0UsMHhEQywweERDLDB4
RkUsMHg0NCwweDQ5LDB4QzIsMHgzMCwweEY3LDB4RkUsMHhBQSwweDgyLAotICAgIDB4NjUsMHg0
OSwweEUzLDB4MzgsMHhGRCwweEZELDB4Q0IsMHg4MiwweDQ0LDB4NDksMHgwMywweDQxLDB4MkYs
MHgzRiwweEJELDB4RUYsCi0gICAgMHhDNiwweDU5LDB4MjQsMHg0OSwweDhBLDB4QTMsMHhBQiww
eEFELDB4QTUsMHg1OSwweDQzLDB4NDksMHhFMiwweDdBLDB4NUMsMHg1OCwKLSAgICAweDg1LDB4
NTEsMHgyMywweDQ5LDB4RUQsMHhGRiwweEI3LDB4RDcsMHg4NSwweDUxLDB4MjMsMHg0OSwweDAw
LDB4RTAsMHhEQSwweDVGLAotICAgIDB4ODQsMHg1MSwweDQzLDB4NDksMHhBOCwweEU4LDB4RUIs
MHhENywweEM1LDB4NjEsMHg0NCwweDUxLDB4QUYsMHgyRiwweDJGLDB4QUQsCi0gICAgMHgyNiww
eDZBLDB4ODQsMHg1OSwweDlGLDB4QUEsMHhBQSwweDdELDB4ODgsMHg3QSwweEE1LDB4NTksMHgw
QiwweDJBLDB4MEYsMHhBRCwKLSAgICAweEE4LDB4ODIsMHgwNiwweDcyLDB4QTAsMHhBMiwweEFB
LDB4NUUsMHg2OCwweDdBLDB4RTYsMHg2OSwweDhBLDB4QUEsMHhERSwweERGLAotICAgIDB4Qzks
MHg4QSwweDQ2LDB4N0EsMHhCNywweDJELDB4MjUsMHg4RCwweEM5LDB4OEEsMHg4NywweDgyLDB4
MjAsMHhFMCwweEUwLDB4RkMsCi0gICAgMHhFOSwweDhBLDB4NjcsMHg4MiwweDAyLDB4MDIsMHhB
QiwweERBLDB4RUEsMHg4QSwweDQ3LDB4N0EsMHg1QywweDdDLDB4RTIsMHhBQSwKLSAgICAweDg4
LDB4ODIsMHgyNiwweDcyLDB4NTUsMHhCRiwweEY4LDB4QTgsMHg2NywweDdBLDB4QzUsMHg2MSww
eDVGLDB4QjIsMHhDMCwweEUwLAotICAgIDB4MDcsMHg2QSwweEE1LDB4NTksMHg3RiwweDdFLDB4
RDgsMHg2QywweDA2LDB4NkEsMHg2NCwweDUxLDB4MDIsMHhGRSwweDdGLDB4NTcsCi0gICAgMHhF
NSwweDYxLDB4NjQsMHg1MSwweDAwLDB4QUIsMHhCRCwweEQ1LDB4QzUsMHg2MSwweDY0LDB4NTEs
MHg4MCwweEE4LDB4RkEsMHhCNywKLSAgICAweEM2LDB4NTksMHg4NCwweDU5LDB4REMsMHhBQSww
eEJGLDB4MkIsMHgwNiwweDZBLDB4QTUsMHg1OSwweEVCLDB4MkYsMHhBRiwweEZELAotICAgIDB4
NjcsMHg3MiwweEU1LDB4NjEsMHgzRiwweEJGLDB4QUIsMHhERiwweEM5LDB4ODIsMHgyNiwweDZB
LDB4MEEsMHhBQiwweEI3LDB4RDcsCi0gICAgMHg2RSwweEI0LDB4NDcsMHg3MiwweDJCLDB4QkYs
MHhCRCwweEZELDB4RDMsMHhFNSwweDhCLDB4OUIsMHgwMiwweDBCLDB4QkYsMHhENSwKLSAgICAw
eDE0LDB4RTYsMHg2RiwweEJDLDB4MDAsMHgwMiwweEFCLDB4QkQsMHgxNCwweEU2LDB4QjMsMHhF
NSwweEEyLDB4QTIsMHhBQSwweEFELAotICAgIDB4MTQsMHhFNiwweEY0LDB4RTUsMHhFNSwweEJG
LDB4RkUsMHg3QSwweDE0LDB4RTYsMHhEMywweERELDB4QkYsMHhBQywweEEwLDB4QTMsCi0gICAg
MHgxNCwweEU2LDB4RDQsMHhERCwweDVFLDB4RjgsMHhFOCwweEFBLDB4RjMsMHhFNSwweEIzLDB4
REQsMHg4QSwweEZGLDB4RkEsMHg3QywKLSAgICAweDE0LDB4RTYsMHhCMywweERELDB4RkIsMHhE
RiwweDU3LDB4N0YsMHhGNCwweEU1LDB4QjMsMHhERCwweDJFLDB4MkYsMHhBQiwweEJELAotICAg
IDB4MzUsMHhFNiwweEY0LDB4REQsMHgyRiwweEFCLDB4MkQsMHhCRCwweDM1LDB4RTYsMHhGMyww
eEU1LDB4ODAsMHhBOCwweEVBLDB4RkEsCi0gICAgMHgxNCwweEU2LDB4RDMsMHhERCwweEEyLDB4
OTgsMHhGRSwweDdFLDB4MzUsMHhFNiwweEQzLDB4REQsMHgyQSwweEFBLDB4QkIsMHhCRCwKLSAg
ICAweDU2LDB4RTYsMHgxNCwweEU2LDB4QjcsMHg1RiwweEY1LDB4OTUsMHg1NSwweEVFLDB4MTUs
MHhFNiwweEVBLDB4QTgsMHhFMCwweEYwLAotICAgIDB4MzQsMHhFNiwweEY0LDB4REQsMHhFOCww
eEFFLDB4RkYsMHg1NywweDM1LDB4RTYsMHhEMywweERELDB4RkIsMHhFOCwweEVBLDB4N0UsCi0g
ICAgMHhENCwweEU1LDB4MTQsMHhERSwweEJFLDB4RkEsMHhGRSwweEZBLDB4MTQsMHhFNiwweEY0
LDB4REQsMHgyMywweDI4LDB4RUUsMHhBRiwKLSAgICAweDU1LDB4RTYsMHhGNCwweEU1LDB4RkYs
MHhGNSwweEZGLDB4QjcsMHgzNCwweEU2LDB4RjQsMHhERCwweEQ2LDB4QkEsMHhFQSwweEJFLAot
ICAgIDB4NTUsMHhFRSwweDE0LDB4RTYsMHgzNSwweEU1LDB4RjUsMHg1NSwweEI2LDB4RjYsMHgz
NSwweEU2LDB4MkIsMHhBQiwweEE5LDB4QTksCi0gICAgMHhCNiwweEY2LDB4NzYsMHhFRSwweEVB
LDB4RkEsMHhGRSwweEFBLDB4QjYsMHhGNiwweDc2LDB4RUUsMHhGNywweEVGLDB4QkEsMHhFQSwK
LSAgICAweDc2LDB4RjYsMHg5NiwweEVFLDB4NkYsMHg1RiwweEZELDB4RDcsMHg3NiwweEY2LDB4
OTYsMHhFRSwweEZELDB4RjUsMHhGRiwweDY3LAotICAgIDB4OTYsMHhFRSwweDc2LDB4RUUsMHhG
RiwweEJGLDB4QjYsMHg1NywweDk2LDB4RUUsMHgzNSwweEU2LDB4QUEsMHhBMCwweEZBLDB4NUUs
Ci0gICAgMHg3NSwweEVFLDB4RjQsMHhERCwweDIwLDB4QTAsMHhFQSwweDdCLDB4NTUsMHhFRSww
eEIyLDB4RDUsMHhGOCwweEU4LDB4RjYsMHg1NywKLSAgICAweEYzLDB4REQsMHg5MiwweEQ1LDB4
MkEsMHhBQSwweEVBLDB4NUYsMHgxNSwweEU2LDB4QjMsMHhENSwweEIyLDB4QkUsMHhCRCwweDc1
LAotICAgIDB4RjQsMHhERCwweEIzLDB4RDUsMHhBQSwweEJDLDB4QUUsMHhGRiwweEY0LDB4RTUs
MHhCMywweEQ1LDB4MjgsMHhBQiwweEI2LDB4RkYsCi0gICAgMHhGMywweERELDB4OTEsMHhENSww
eEE4LDB4QUEsMHhBQSwweEY2LDB4RDIsMHhERCwweEYwLDB4QzQsMHg2OCwweEUwLDB4QTAsMHhB
MCwKLSAgICAweDg3LDB4N0EsMHgyNSwweDZBLDB4QzksMHhBQiwweEVBLDB4QkYsMHg4NiwweDcy
LDB4MjUsMHg3MiwweERBLDB4QkIsMHhBQSwweDJCLAotICAgIDB4ODYsMHg3QSwweDI2LDB4NkEs
MHhBQSwweEJCLDB4NjgsMHhGQiwweDY2LDB4NzIsMHg0NiwweDcyLDB4MUYsMHgwQiwweDNGLDB4
QTEsCi0gICAgMHg4NywweDdBLDB4NjYsMHg3MiwweDk3LDB4RTcsMHg2QSwweDY5LDB4ODcsMHg3
QSwweDQ2LDB4NzIsMHhGNCwweERFLDB4RUYsMHhBRSwKLSAgICAweDg2LDB4NzIsMHgyNiwweDcy
LDB4QUYsMHhCRiwweDFGLDB4QUYsMHg4NywweDdBLDB4MjYsMHg3MiwweEZCLDB4QzEsMHhFQiww
eEFBLAotICAgIDB4NjYsMHg3MiwweDQ2LDB4NzIsMHg2QiwweDdCLDB4RkQsMHhGRSwweDY2LDB4
NzIsMHgyNSwweDZBLDB4MDcsMHgzNSwweDI3LDB4ODIsCi0gICAgMHg4NiwweDdBLDB4MjYsMHg2
QSwweDlGLDB4RkIsMHhFQSwweEU4LDB4ODYsMHg3QSwweDQ2LDB4NzIsMHhFRCwweEY3LDB4REQs
MHhGRSwKLSAgICAweDY2LDB4NzIsMHgyNSwweDcyLDB4OEEsMHgwQiwweDNFLDB4MkUsMHg2Niww
eDcyLDB4MjUsMHg2QSwweEJBLDB4N0EsMHg4MiwweDAyLAotICAgIDB4NjYsMHg3MiwweDI1LDB4
NkEsMHhGMSwweDdCLDB4QUQsMHg4QywweDg3LDB4N0EsMHg0NiwweDcyLDB4NUUsMHhFRCwweEFC
LDB4RTMsCi0gICAgMHg4NywweDdBLDB4MjUsMHg2QSwweEE2LDB4RUYsMHhBQSwweEU4LDB4NjYs
MHg3QSwweDQ2LDB4NzIsMHg1NiwweERGLDB4RTksMHgwQiwKLSAgICAweDg3LDB4N0EsMHgyNSww
eDZBLDB4NkEsMHhFQSwweEFBLDB4NjIsMHg4NywweDdBLDB4MjYsMHg3MiwweEZGLDB4QTIsMHhC
MiwweDdCLAotICAgIDB4NjYsMHg3MiwweDI2LDB4NzIsMHhCQSwweEFCLDB4MEEsMHgwMCwweDY2
LDB4NzIsMHgyNSwweDcyLDB4MEIsMHgwRSwweEFBLDB4MTgsCi0gICAgMHg2NiwweDcyLDB4MjYs
MHg3MiwweEEwLDB4QTQsMHg2QiwweEMyLDB4ODYsMHg3QSwweDI1LDB4NzIsMHhCRSwweEZGLDB4
NjMsMHg2QSwKLSAgICAweDY2LDB4N0EsMHgyNiwweDcyLDB4QTgsMHg2MiwweDAxLDB4QjksMHg2
NiwweDgyLDB4NDYsMHg3MiwweERELDB4N0YsMHhENywweDU5LAotICAgIDB4NjYsMHg3QSwweDA1
LDB4NzIsMHhCNiwweEI2LDB4QUEsMHg4QSwweDY2LDB4N0EsMHgyNSwweDcyLDB4MEEsMHg5Riww
eDM4LDB4MDIsCi0gICAgMHhBNywweDgyLDB4NDYsMHg3MiwweEE4LDB4QkIsMHhGRiwweDk3LDB4
QzgsMHg4MiwweDY2LDB4N0EsMHgwMiwweDJCLDB4QkYsMHhENSwKLSAgICAweEM4LDB4ODIsMHg2
NiwweDdBLDB4ODgsMHhBOCwweEJGLDB4RDUsMHgwOSwweDhCLDB4QTcsMHg4MiwweDJFLDB4RUEs
MHgwMiwweEM5LAotICAgIDB4MjksMHg5MywweEM4LDB4OEEsMHhBMiwweEU4LDB4NkEsMHg2Miww
eEE3LDB4ODIsMHhDNSwweDYxLDB4NzgsMHg3QSwweDdDLDB4NUUsCi0gICAgMHhBNSwweDU5LDB4
MDMsMHg0MSwweEUwLDB4RjAsMHg1QywweDU0LDB4MjMsMHg0MSwweEMyLDB4MzgsMHhBMCwweEYw
LDB4N0IsMHg3NywKLSAgICAweEUyLDB4MzgsMHhBMiwweDMwLDB4RkMsMHhEQywweEJFLDB4N0Us
MHhDMiwweDMwLDB4ODEsMHgyOCwweDU4LDB4N0UsMHhERSwweEJCLAotICAgIDB4QzIsMHgzMCww
eDYxLDB4MjAsMHhGRiwweDdFLDB4QUUsMHhBQywweEEyLDB4MjgsMHg2MSwweDIwLDB4MEIsMHgw
QiwweDIzLDB4QUEsCi0gICAgMHhDMiwweDI4LDB4QTIsMHgyOCwweDlFLDB4N0QsMHg2MywweEI1
LDB4QzIsMHgzMCwweEEyLDB4MjgsMHhCQSwweEY1LDB4OTUsMHhENiwKLSAgICAweEMyLDB4MzAs
MHhBMiwweDI4LDB4QkEsMHhBNiwweDA2LDB4MEQsMHhFMywweDMwLDB4QTIsMHgyOCwweEVCLDB4
OEIsMHg2RiwweDdGLAotICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhEOCwweEVBLDB4RUIsMHg3
NSwweDAzLDB4MzksMHhBMiwweDMwLDB4QjUsMHhCRCwweEJELDB4MkIsCi0gICAgMHg0NCwweDQ5
LDB4QzIsMHgzMCwweEJELDB4QkQsMHhCQiwweDBBLDB4ODUsMHg1MSwweEUzLDB4MzgsMHhFMiww
eDdBLDB4N0YsMHg3QiwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4QkUsMHhGRiwweERGLDB4
N0YsMHg0NCwweDQ5LDB4RTMsMHg0MCwweDI1LDB4M0YsMHgyRCwweEZELAotICAgIDB4ODUsMHg1
OSwweDIzLDB4NDEsMHg4MiwweEJFLDB4RjUsMHhENSwweDY0LDB4NTEsMHg0NCwweDQ5LDB4N0Is
MHg3RSwweEFCLDB4MjAsCi0gICAgMHg2NCwweDUxLDB4MjMsMHg0OSwweDBELDB4MDcsMHgyRiww
eDBBLDB4QzYsMHg2MSwweDQ0LDB4NDksMHgwQSwweEFCLDB4REYsMHg3NywKLSAgICAweEM2LDB4
NTksMHgyNCwweDQ5LDB4RjgsMHg3RSwweDZCLDB4N0QsMHgyNCwweDQ5LDB4RTMsMHgzOCwweDVF
LDB4RjQsMHg1NCwweDU3LAotICAgIDB4NDQsMHg0MSwweEMyLDB4MzgsMHg4QSwweEVBLDB4RkYs
MHg3RCwweDI0LDB4NDEsMHhFMiwweDM4LDB4MEYsMHgyNiwweEFELDB4RkQsCi0gICAgMHg4NSww
eDQ5LDB4MjMsMHg0MSwweENELDB4QUQsMHgzNSwweEY1LDB4NjUsMHg0OSwweDI0LDB4NDEsMHg3
RiwweDU2LDB4NzIsMHhGQSwKLSAgICAweDY1LDB4NDksMHhFMiwweDM4LDB4MEEsMHgyQiwweEFB
LDB4NkIsMHg0NCwweDQ5LDB4MDMsMHg0MSwweEZDLDB4NUMsMHg1NCwweDU1LAotICAgIDB4NDQs
MHg0OSwweDAzLDB4NDEsMHg1NywweERDLDB4NzcsMHg1NiwweDQ0LDB4NDksMHhFMiwweDM4LDB4
MEEsMHgyQSwweEVCLDB4NUUsCi0gICAgMHg0NCwweDQ5LDB4QzIsMHgzOCwweEE4LDB4QjgsMHhC
RiwweEQ1LDB4NDQsMHg0OSwweEUzLDB4MzgsMHhBQiwweDJBLDB4QkYsMHhCNywKLSAgICAweDg1
LDB4NTEsMHgyMywweDQ5LDB4MkYsMHgzRCwweDNGLDB4MEYsMHhDNiwweDU5LDB4NjQsMHg1MSww
eDVGLDB4RUIsMHhGMiwweEZBLAotICAgIDB4QTUsMHg1MSwweDQzLDB4NDksMHg3NywweDdGLDB4
RjgsMHhCRiwweDY0LDB4NDksMHgyMywweDQ5LDB4N0UsMHg2OCwweDU2LDB4RkUsCi0gICAgMHg0
MywweDQ5LDB4MDMsMHg0MSwweDNBLDB4QjksMHhCQiwweERGLDB4QTUsMHg1OSwweDAzLDB4NDks
MHgyQiwweDJGLDB4QUYsMHhCRCwKLSAgICAweEE1LDB4NTksMHg2NSwweDUxLDB4RkEsMHhGRiww
eDk3LDB4MkUsMHgyNiwweDcyLDB4ODQsMHg1OSwweDI1LDB4OTUsMHhCNSwweEJELAotICAgIDB4
MDYsMHg3MiwweEE0LDB4NjEsMHg4OCwweEJGLDB4QjUsMHhFRSwweDI3LDB4NzIsMHhFNiwweDY5
LDB4RjUsMHhBRiwweDlBLDB4NUUsCi0gICAgMHhDOCwweDhBLDB4MDYsMHg3MiwweDJCLDB4MDks
MHgyRiwweEFGLDB4RTgsMHg4QSwweDQ2LDB4N0EsMHhCOCwweEY4LDB4N0EsMHg3RiwKLSAgICAw
eEE4LDB4ODIsMHgyNiwweDcyLDB4MjAsMHhCQSwweEFGLDB4QjUsMHhDOSwweDhBLDB4NjcsMHg3
QSwweEUyLDB4RUEsMHg2QiwweDVGLAotICAgIDB4QTgsMHg4MiwweDA2LDB4NkEsMHhBOCwweEZB
LDB4NUYsMHg1RCwweDQ3LDB4NzIsMHhDNiwweDY5LDB4QTAsMHhGQSwweERGLDB4QkYsCi0gICAg
MHgyNiwweDZBLDB4ODQsMHg1OSwweDVFLDB4NUUsMHhGQiwweDgwLDB4RTUsMHg2MSwweDY0LDB4
NTEsMHhENywweERELDB4QkIsMHgwMCwKLSAgICAweEM1LDB4NTksMHg2NCwweDUxLDB4RjUsMHhE
NywweEI4LDB4MjgsMHhDNiwweDU5LDB4ODUsMHg1OSwweEJELDB4QjUsMHhFNSwweDg4LAotICAg
IDB4RTYsMHg2MSwweEE1LDB4NTksMHhFNywweEVBLDB4RjksMHg3QSwweEU2LDB4NjEsMHg4NSww
eDUxLDB4OEIsMHhBRSwweEVCLDB4QjcsCi0gICAgMHgwNiwweDYyLDB4QTUsMHg1OSwweEUzLDB4
RUQsMHg1NSwweEQ1LDB4NDcsMHg3MiwweEU1LDB4NjEsMHgzRCwweEI1LDB4REQsMHhCRCwKLSAg
ICAweEU5LDB4ODIsMHg0NywweDcyLDB4M0YsMHhBNSwweEI1LDB4RkQsMHg4QiwweDlCLDB4ODgs
MHg3QSwweDBCLDB4QUIsMHg1RCwweERELAotICAgIDB4MkQsMHhBQywweEE4LDB4ODIsMHgwMiww
eEJGLDB4RjUsMHg1NSwweDkzLDB4REQsMHgyOSwweDhCLDB4MDIsMHgyRiwweEFELDB4QjUsCi0g
ICAgMHhGNCwweEU1LDB4NTEsMHhENSwweDAwLDB4MDMsMHgwOSwweEFELDB4RjQsMHhFNSwweDE0
LDB4REUsMHhBOCwweDg4LDB4MDAsMHgwMCwKLSAgICAweDE0LDB4RTYsMHhENCwweERELDB4OEIs
MHg3QSwweEFFLDB4RUEsMHhEMywweERELDB4QjMsMHhERCwweDk4LDB4QkIsMHhGRSwweEU1LAot
ICAgIDB4RDMsMHhERCwweDkyLDB4RDUsMHg4MCwweDAwLDB4RTAsMHhFOCwweEQzLDB4REQsMHhC
MiwweERELDB4MjcsMHgwRiwweDBELDB4QTksCi0gICAgMHgxNCwweEU2LDB4QjMsMHhERCwweDBB
LDB4MEEsMHhBRiwweEVELDB4MTQsMHhFNiwweEY0LDB4REQsMHhFOCwweEZFLDB4RUQsMHhGRiwK
LSAgICAweDE0LDB4RTYsMHhCMywweERELDB4RUEsMHhCQSwweEY4LDB4NkIsMHgxNCwweEU2LDB4
RDMsMHhERCwweEI1LDB4QTcsMHgwRiwweDJGLAotICAgIDB4NTUsMHhFRSwweDE0LDB4RTYsMHhC
NSwweDA5LDB4MjAsMHgwMCwweDU1LDB4RUUsMHgxNCwweEU2LDB4NzAsMHhGMiwweEVBLDB4QkEs
Ci0gICAgMHgzNSwweEU2LDB4RDMsMHhERCwweERGLDB4NTcsMHhERSwweEU4LDB4MTQsMHhFNiww
eEQzLDB4REQsMHhERCwweEE3LDB4MEIsMHgwMiwKLSAgICAweDM1LDB4RTYsMHhEMywweERELDB4
RkQsMHhGQSwweEVBLDB4QkEsMHgxNCwweEU2LDB4RjQsMHhERCwweDhGLDB4MEIsMHhBOSwweDQ2
LAotICAgIDB4MTQsMHhFNiwweEY0LDB4REQsMHgwQSwweDIwLDB4ODAsMHg4MiwweDE0LDB4RTYs
MHhENCwweERELDB4RkEsMHg3RiwweDdGLDB4QTgsCi0gICAgMHgzNSwweEU2LDB4RDMsMHhERCww
eDNCLDB4QUYsMHhBRCwweDNELDB4OTYsMHhFRSwweDM1LDB4RTYsMHgwRiwweDI5LDB4MjksMHgw
RCwKLSAgICAweEI3LDB4RjYsMHg5NiwweEVFLDB4RjcsMHg1RCwweEVGLDB4NjcsMHhCNiwweEY2
LDB4OTYsMHhFRSwweERFLDB4RjcsMHg5RiwweEQ1LAotICAgIDB4QjYsMHhGNiwweDc2LDB4RUUs
MHhFQSwweEZBLDB4RkEsMHhGRSwweDk2LDB4RUUsMHg3NiwweEVFLDB4RkUsMHhERCwweEVGLDB4
NUUsCi0gICAgMHg5NiwweEVFLDB4RjMsMHhERCwweEE4LDB4RkEsMHg3QSwweDc4LDB4MzUsMHhF
NiwweDkzLDB4RDUsMHgyMCwweEZBLDB4RkUsMHhGRiwKLSAgICAweEYzLDB4REQsMHhCMywweEQ1
LDB4RUEsMHg1RiwweDU3LDB4NTcsMHhEMywweERELDB4OTIsMHhENSwweEM4LDB4RUEsMHhGRiww
eDc1LAotICAgIDB4RDMsMHhERCwweDkyLDB4RDUsMHhENywweEE1LDB4QkQsMHg2RCwweEIzLDB4
REQsMHg3MSwweENELDB4ODAsMHhBMCwweEZGLDB4QjcsCi0gICAgMHhEMywweERELDB4NzIsMHhD
RCwweDhBLDB4MkEsMHhFRiwweEZCLDB4RDMsMHhERCwweDkyLDB4RDUsMHhFQSwweEZBLDB4RkIs
MHhGRCwKLSAgICAweEIyLDB4RDUsMHg1MiwweEQ1LDB4QjgsMHhBRSwweEVDLDB4REEsMHhCMiww
eEQ1LDB4NzIsMHhENSwweEMyLDB4QzksMHg3RCwweDc1LAotICAgIDB4NjYsMHg3MiwweDI1LDB4
NzIsMHgyMCwweDA4LDB4QTgsMHgyNiwweDg3LDB4N0EsMHg0NiwweDcyLDB4RjMsMHg1QywweEU4
LDB4NUYsCi0gICAgMHg2NywweDdBLDB4MjYsMHg3MiwweEU2LDB4QUUsMHgwQSwweDAwLDB4ODcs
MHg3MiwweDI2LDB4NkEsMHhCQSwweEZGLDB4RkUsMHhFOCwKLSAgICAweDg3LDB4N0EsMHg0Niww
eDcyLDB4QTksMHhFRiwweEVFLDB4NzcsMHg4NywweDcyLDB4MjUsMHg2QSwweEFCLDB4QjcsMHhG
QiwweEE4LAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhCRiwweENBLDB4MEEsMHhGRiwweDg3
LDB4N0EsMHgyNiwweDcyLDB4MkEsMHhFQSwweEE2LDB4OEIsCi0gICAgMHg4NiwweDdBLDB4NDYs
MHg3MiwweDVBLDB4RjUsMHhGRCwweEZFLDB4ODYsMHg3QSwweDI2LDB4NkEsMHhFQiwweEYzLDB4
QjgsMHhGMiwKLSAgICAweEE3LDB4N0EsMHg0NiwweDcyLDB4Q0YsMHhFNywweEZGLDB4RUIsMHg4
NiwweDdBLDB4NDYsMHg3MiwweEE5LDB4QUYsMHhGOCwweDdDLAotICAgIDB4ODcsMHg3QSwweDQ1
LDB4NzIsMHhEQywweEUyLDB4RjgsMHhBMiwweDg2LDB4N0EsMHg0NiwweDcyLDB4RTMsMHhGQiww
eEI1LDB4QUQsCi0gICAgMHg4NywweDdBLDB4NDUsMHg3MiwweEZELDB4RTMsMHhDMiwweDgyLDB4
ODcsMHg3QSwweDQ1LDB4NzIsMHg2OSwweDczLDB4RTMsMHhGMiwKLSAgICAweDY2LDB4N0EsMHg0
NSwweDcyLDB4NTAsMHg2RiwweEFFLDB4MkMsMHg2NiwweDcyLDB4MjYsMHg3MiwweEUyLDB4RTMs
MHg4MCwweEIyLAotICAgIDB4ODcsMHg3QSwweDI1LDB4NzIsMHg3MiwweEFBLDB4RkEsMHhGOCww
eDg3LDB4N0EsMHgyNSwweDcyLDB4REIsMHhCQSwweEJBLDB4OUEsCi0gICAgMHg2NiwweDdBLDB4
NDYsMHg3MiwweEI5LDB4RUYsMHg3OCwweDVFLDB4NjYsMHg3QSwweDQ2LDB4NzIsMHg5OCwweDgw
LDB4NDAsMHg2MiwKLSAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4NjIsMHhFQSwweEVBLDB4M0Es
MHg4NywweDdBLDB4NDYsMHg3MiwweEYxLDB4MDUsMHhBMywweDVFLAotICAgIDB4ODcsMHg3QSww
eDI1LDB4NzIsMHhGRCwweEFCLDB4QjgsMHhBMiwweEE3LDB4ODIsMHg0NiwweDcyLDB4RkQsMHhG
QiwweERBLDB4RjIsCi0gICAgMHg4NywweDdBLDB4MjUsMHg3MiwweEVDLDB4QkYsMHgyQiwweEE4
LDB4ODcsMHg4MiwweDQ2LDB4NzIsMHhGRiwweDVBLDB4RUEsMHhCMiwKLSAgICAweDg3LDB4N0Es
MHgyNSwweDcyLDB4OEQsMHhBRiwweEFBLDB4QUYsMHg4NywweDgyLDB4MjUsMHg3MiwweDVGLDB4
RUUsMHhGMCwweEUyLAotICAgIDB4QTcsMHg4MiwweDQ2LDB4NzIsMHhGRiwweEQ3LDB4QjQsMHg3
QSwweDI5LDB4OTMsMHg0NiwweDdBLDB4RkQsMHhCRCwweEJELDB4MkQsCi0gICAgMHgyQSwweDkz
LDB4QTgsMHg4MiwweDZBLDB4N0YsMHg3RSwweDc4LDB4ODcsMHg3QSwweEM1LDB4NjEsMHg3Qyww
eDdDLDB4RkUsMHhGRSwKLSAgICAweEM0LDB4NjEsMHgwMiwweDQxLDB4NUUsMHhGOCwweEU4LDB4
RjAsMHgyMywweDQxLDB4QzIsMHgzMCwweDdFLDB4REEsMHg3OCwweEZBLAotICAgIDB4RTIsMHgz
MCwweEExLDB4MzAsMHg3QSwweDdBLDB4RjMsMHhGNywweEMyLDB4MzAsMHg4MSwweDI4LDB4RUEs
MHhFOCwweDYyLDB4RTIsCi0gICAgMHhDMiwweDI4LDB4NjEsMHgyOCwweEFBLDB4QUIsMHg4QSww
eDA4LDB4RTMsMHgzMCwweEEyLDB4MjgsMHg1NywweEY1LDB4QTcsMHhDOSwKLSAgICAweEMyLDB4
MzAsMHhBMiwweDI4LDB4MDYsMHhFQSwweEVBLDB4Q0IsMHhDMiwweDMwLDB4QTIsMHgyOCwweDU3
LDB4NTUsMHhBNSwweDhFLAotICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHg4RCwweDhGLDB4QUEs
MHg1MiwweEMyLDB4MzAsMHg4MSwweDIwLDB4RkEsMHg2QSwweEVBLDB4QkUsCi0gICAgMHhDMiww
eDMwLDB4ODEsMHgyOCwweDJGLDB4QkIsMHhCRiwweDJCLDB4MjQsMHgzOSwweEMyLDB4MzAsMHgz
RCwweEFELDB4MkYsMHhBRiwKLSAgICAweDY0LDB4NDksMHgyNCwweDQxLDB4MEYsMHgyQiwweDBC
LDB4MjksMHg2NSwweDQ5LDB4RTMsMHgzOCwweDVDLDB4NTYsMHg3RSwweEQ4LAotICAgIDB4MDQs
MHg0MSwweEMyLDB4MzgsMHg1QiwweDVFLDB4N0YsMHgzOCwweDI0LDB4NDksMHhDMiwweDM4LDB4
QTksMHhBQiwweEFCLDB4MkEsCi0gICAgMHg2NCwweDUxLDB4MDMsMHg0MSwweEJELDB4MkQsMHgw
OSwweDBCLDB4ODUsMHg1MSwweDIzLDB4NDksMHg4QSwweEFBLDB4RkUsMHg3QSwKLSAgICAweEM2
LDB4NTksMHg2NCwweDUxLDB4REQsMHhGRCwweEVGLDB4QUIsMHhBNSwweDUxLDB4MDMsMHg0MSww
eEY4LDB4N0MsMHg3RSwweDU4LAotICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHhFQiwweEUzLDB4
RTIsMHg2MywweDY1LDB4NDksMHhFMywweDM4LDB4N0QsMHhFQiwweEEzLDB4RkYsCi0gICAgMHgy
NCwweDQxLDB4QzIsMHgzOCwweEZELDB4RkYsMHhDOCwweDI4LDB4MjQsMHg0MSwweEUyLDB4Mzgs
MHhFRCwweEVCLDB4QUQsMHg4MCwKLSAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4MkEsMHhBQSww
eEVFLDB4NkEsMHg0NCwweDQxLDB4QzIsMHgzOCwweEU4LDB4QjcsMHg3RCwweEQ1LAotICAgIDB4
NjUsMHg0OSwweEUzLDB4MzgsMHg1RiwweEFGLDB4QTksMHgyRiwweDY1LDB4NDksMHhFMiwweDM4
LDB4QjUsMHhBRiwweDNFLDB4MEEsCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweERGLDB4QkEs
MHgyOCwweEEwLDB4NDQsMHg0OSwweEUzLDB4MzgsMHg1RSwweDVBLDB4NTgsMHg3RSwKLSAgICAw
eEUzLDB4MzgsMHhBMiwweDMwLDB4MzYsMHhGRSwweERFLDB4OUUsMHgyNCwweDQxLDB4QzIsMHgz
OCwweEFGLDB4QkQsMHgyRiwweEFCLAotICAgIDB4QTUsMHg1MSwweDQ0LDB4NDksMHhBRCwweDA5
LDB4MDksMHhBNSwweDA2LDB4NjIsMHg4NCwweDUxLDB4NUYsMHg3RCwweEYzLDB4QUIsCi0gICAg
MHhDNSwweDU5LDB4MjMsMHg0MSwweEJGLDB4REYsMHg1RSwweDdDLDB4NDQsMHg0OSwweDAzLDB4
NDEsMHhFMCwweDdDLDB4N0YsMHg3RSwKLSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4QUYsMHgy
RCwweDM1LDB4MjUsMHg4NCwweDUxLDB4MjMsMHg0OSwweDI1LDB4M0QsMHgzNSwweEI3LAotICAg
IDB4NjcsMHg3MiwweEE1LDB4NTksMHhGNSwweEZELDB4QjUsMHgyRCwweDY3LDB4N0EsMHhDNSww
eDYxLDB4REQsMHhCRiwweEFBLDB4ODAsCi0gICAgMHgyNiwweDZBLDB4RTUsMHg2OSwweEQ1LDB4
NkUsMHg2NCwweEU4LDB4MDYsMHg2QSwweEE1LDB4NjEsMHhFOCwweEYyLDB4RjIsMHg3OCwKLSAg
ICAweDQ3LDB4NzIsMHhBNCwweDYxLDB4MDMsMHhGRCwweEY1LDB4NTUsMHg0NywweDdBLDB4QTQs
MHg2MSwweDIwLDB4QUIsMHhGNywweDVELAotICAgIDB4NDYsMHg3QSwweEE0LDB4NjEsMHgyQSww
eEFBLDB4QUQsMHhGRCwweDY3LDB4N0EsMHgyNiwweDcyLDB4MDAsMHgwMCwweEFCLDB4NUQsCi0g
ICAgMHg2NywweDcyLDB4QzUsMHg2MSwweERBLDB4QUEsMHhBOCwweEUyLDB4MDcsMHg2QSwweEE0
LDB4NTksMHgwMiwweEFBLDB4RkMsMHg3RSwKLSAgICAweDQ3LDB4NzIsMHhBNCwweDU5LDB4MDgs
MHhBQiwweDJGLDB4QjUsMHgyNiwweDZBLDB4QTUsMHg1OSwweEVFLDB4RDgsMHg1QSwweDc4LAot
ICAgIDB4RTYsMHg2MSwweEE1LDB4NTksMHhGRiwweEYwLDB4N0UsMHg3NSwweEM2LDB4NTksMHg2
NCwweDUxLDB4QTIsMHhBMiwweERBLDB4NUIsCi0gICAgMHgwNywweDYyLDB4NjQsMHg1MSwweEEy
LDB4MDIsMHhCQiwweDc1LDB4RTYsMHg1OSwweDY0LDB4NTEsMHhCRSwweEIyLDB4RjIsMHhGRCwK
LSAgICAweEE1LDB4NTksMHg0MywweDQ5LDB4ODAsMHg5QSwweDM4LDB4MzgsMHgwNiwweDYyLDB4
QTUsMHg1OSwweDJGLDB4MjUsMHhGNSwweEY3LAotICAgIDB4NDcsMHg3MiwweEE0LDB4NTksMHgw
OCwweEJGLDB4REQsMHg1RiwweEM5LDB4ODIsMHhFNiwweDYxLDB4MjIsMHgyQiwweEFELDB4RjUs
Ci0gICAgMHhDOSwweDgyLDB4NjcsMHg3QSwweEZCLDB4Q0UsMHg2QiwweEY5LDB4MkQsMHhBQyww
eDY3LDB4N0EsMHgyRiwweEJELDB4RjUsMHhGRCwKLSAgICAweDcyLDB4RDUsMHg4QiwweDlCLDB4
MDIsMHgwRiwweDJELDB4QjUsMHhGNCwweEU1LDB4NzIsMHhENSwweDAwLDB4QTIsMHhBQiwweEFE
LAotICAgIDB4RjQsMHhFNSwweEIzLDB4REQsMHgyMCwweEEyLDB4QTMsMHhFOSwweEQzLDB4REQs
MHhCMywweERELDB4NzYsMHhGMCwweDIwLDB4ODAsCi0gICAgMHhGMywweERELDB4QjMsMHhERCww
eDZCLDB4RUYsMHg3QSwweDVFLDB4QjMsMHhERCwweDcyLDB4RDUsMHgwMiwweDA4LDB4RkUsMHg3
RiwKLSAgICAweEQzLDB4REQsMHg5MiwweEQ1LDB4MEEsMHgyRCwweDk1LDB4NTUsMHhGNCwweERE
LDB4OTIsMHhENSwweDAwLDB4MDgsMHg4RiwweEFELAotICAgIDB4RDMsMHhFNSwweDE0LDB4REUs
MHhBQSwweEFBLDB4QUUsMHhGRSwweDU1LDB4RUUsMHhEMywweERELDB4QjUsMHgyOSwweDJCLDB4
MkEsCi0gICAgMHg1NSwweEVFLDB4RjQsMHhERCwweDgwLDB4QjAsMHg3QywweDVBLDB4MzUsMHhF
RSwweDkyLDB4RDUsMHhBMCwweDIwLDB4RkUsMHg1RiwKLSAgICAweDM1LDB4RTYsMHhCMywweEQ1
LDB4MjAsMHgwMCwweDAwLDB4MDksMHg1NSwweEVFLDB4MTQsMHhFNiwweEQ3LDB4N0UsMHhGRSww
eEUzLAotICAgIDB4MzUsMHhFRSwweDE0LDB4REUsMHhENywweEZGLDB4QjYsMHhBMiwweDM1LDB4
RTYsMHhGNCwweERELDB4RUIsMHhFRiwweEVBLDB4NjAsCi0gICAgMHgzNSwweEU2LDB4RjQsMHhF
NSwweEFCLDB4QUYsMHg4QSwweDJBLDB4MzUsMHhFNiwweEY0LDB4RTUsMHhGQiwweEVBLDB4QTgs
MHg4MiwKLSAgICAweDM1LDB4RTYsMHhENCwweERELDB4QkEsMHgyQSwweDJBLDB4MEEsMHg5Niww
eEVFLDB4MzUsMHhFNiwweDA5LDB4MEIsMHgwQiwweDBCLAotICAgIDB4QjYsMHhGNiwweDc2LDB4
RUUsMHhDQSwweDZBLDB4RUEsMHhBQSwweEI2LDB4RjYsMHg3NSwweEVFLDB4NkIsMHhFRiwweEFC
LDB4RUEsCi0gICAgMHg3NiwweEY2LDB4OTYsMHhFRSwweEQ1LDB4RjUsMHhGRiwweERELDB4OTYs
MHhFRSwweDc2LDB4RUUsMHhEOCwweENBLDB4M0UsMHhBOCwKLSAgICAweDc2LDB4RUUsMHgxNCww
eEU2LDB4NjAsMHhDMCwweEMwLDB4MDAsMHgzNSwweEU2LDB4QjMsMHhENSwweDdGLDB4REMsMHg1
QSwweDc4LAotICAgIDB4RDMsMHhERCwweDkzLDB4RDUsMHhCRSwweEZGLDB4QUEsMHhBQSwweEQz
LDB4REQsMHg5MiwweEQ1LDB4N0UsMHhCRSwweEZFLDB4NUEsCi0gICAgMHhCMiwweEQ1LDB4OTIs
MHhENSwweDY1LDB4NzUsMHg3NSwweEZELDB4QjIsMHhENSwweDcyLDB4Q0QsMHhGNywweEJBLDB4
RUEsMHhFRSwKLSAgICAweDkyLDB4RDUsMHg3MiwweENELDB4ODAsMHhBQSwweEUyLDB4QkUsMHg5
MiwweEQ1LDB4NTEsMHhDRCwweDAyLDB4MkIsMHgyQSwweEVBLAotICAgIDB4OTIsMHhENSwweDUx
LDB4Q0QsMHhGOCwweEZBLDB4OUYsMHg1NywweDkyLDB4RDUsMHg1MSwweENELDB4N0YsMHg3Nyww
eEVGLDB4OUQsCi0gICAgMHg2NywweDdBLDB4NDYsMHg3MiwweDNELDB4QUEsMHhDRiwweDlBLDB4
NjcsMHg3QSwweDQ2LDB4NzIsMHhCNCwweDUwLDB4RkUsMHgwQSwKLSAgICAweDg3LDB4N0EsMHg0
NywweDcyLDB4REEsMHhCRiwweEVGLDB4QkIsMHg2NywweDdBLDB4NDYsMHg3MiwweERCLDB4ODIs
MHhDMiwweDhCLAotICAgIDB4NjcsMHg3MiwweDQ2LDB4NzIsMHgzQSwweDdBLDB4RkEsMHg5Nyww
eDg3LDB4N0EsMHg0NiwweDcyLDB4N0MsMHg2QiwweDQzLDB4RjIsCi0gICAgMHg4NywweDdBLDB4
NDYsMHg3MiwweDdGLDB4QTEsMHhCRSwweEFELDB4ODcsMHg3QSwweDI1LDB4NkEsMHgyQSwweEFB
LDB4RTYsMHhGOCwKLSAgICAweEE3LDB4N0EsMHgyNiwweDZBLDB4RUUsMHhCRSwweEI2LDB4MkIs
MHg0NiwweDdBLDB4NjYsMHg3MiwweDdELDB4RDUsMHhCRCwweDc3LAotICAgIDB4ODcsMHg3QSww
eDQ2LDB4NzIsMHgwRSwweEFCLDB4QkIsMHhCNSwweDg2LDB4N0EsMHg0NSwweDcyLDB4REUsMHhB
QywweDJBLDB4QTIsCi0gICAgMHg4NiwweDdBLDB4NDYsMHg3MiwweEE4LDB4QUEsMHhCRCwweEFB
LDB4ODYsMHg3QSwweDQ2LDB4NzIsMHhCRiwweEVDLDB4RTIsMHhBMiwKLSAgICAweDg2LDB4N0Es
MHg0NiwweDcyLDB4RDcsMHg0NSwweDhGLDB4QkUsMHg4NiwweDdBLDB4NDYsMHg3MiwweEVGLDB4
QjcsMHhBQSwweEFBLAotICAgIDB4ODcsMHg3QSwweDQ1LDB4NzIsMHhBRiwweEJGLDB4QUYsMHg4
QSwweDg2LDB4N0EsMHg0NiwweDcyLDB4RkIsMHhFQSwweEVBLDB4OUMsCi0gICAgMHhBNywweDdB
LDB4NjcsMHg3MiwweEZGLDB4N0QsMHhGQiwweEIzLDB4ODYsMHg3QSwweDQ2LDB4NzIsMHhBRSww
eEZFLDB4RjYsMHhENiwKLSAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4QTUsMHhBRSwweEZFLDB4
QUEsMHg2NywweDdBLDB4NDYsMHg3MiwweEI3LDB4QUIsMHgzRSwweDIyLAotICAgIDB4ODcsMHg4
MiwweDQ2LDB4NzIsMHhGRiwweERBLDB4OTgsMHgzRiwweDg3LDB4N0EsMHg0NiwweDdBLDB4QUEs
MHg4MywweEVBLDB4NjAsCi0gICAgMHg4NywweDdBLDB4NDYsMHg3MiwweEJBLDB4RjgsMHgxRCww
eDlCLDB4ODYsMHg3QSwweDQ1LDB4N0EsMHg4QSwweEU4LDB4MkMsMHhCOSwKLSAgICAweDg3LDB4
N0EsMHg0NiwweDdBLDB4QkUsMHhBRiwweEFBLDB4QTIsMHg4NywweDdBLDB4MjYsMHg3QSwweEFD
LDB4QTgsMHhBOCwweDgyLAotICAgIDB4ODcsMHg3QSwweDI1LDB4NzIsMHhBOSwweEZBLDB4QkEs
MHgyOCwweEE3LDB4ODIsMHg2NiwweDdBLDB4NTcsMHhGNSwweEFELDB4QjksCi0gICAgMHhDOCww
eDhBLDB4NDYsMHg3MiwweDdGLDB4N0UsMHhGRiwweDNCLDB4Q0IsMHhBMywweEE4LDB4ODIsMHhG
NSwweEE1LDB4MEQsMHgwQiwKLSAgICAweENCLDB4QTMsMHhBNywweDgyLDB4N0UsMHg1RSwweDc4
LDB4N0MsMHg4NywweDgyLDB4RTUsMHg2MSwweDdFLDB4N0MsMHg3QywweDU4LAotICAgIDB4RTUs
MHg2MSwweDQzLDB4NDksMHg3RSwweDVFLDB4N0MsMHg1QywweDAzLDB4NDEsMHhDMiwweDMwLDB4
RTQsMHg1NiwweDVFLDB4NTQsCi0gICAgMHhDMiwweDMwLDB4QTEsMHgyOCwweDM2LDB4OEYsMHhD
NiwweDgwLDB4QzIsMHgzMCwweEEyLDB4MjgsMHg1OCwweDVGLDB4NUYsMHg5NSwKLSAgICAweEUz
LDB4MzAsMHhBMiwweDI4LDB4QjcsMHhCNywweEFFLDB4OEYsMHgwMywweDMxLDB4QTIsMHgyOCww
eEFELDB4RDcsMHhBRSwweEIyLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhFOSwweEU4LDB4
QzIsMHg4MCwweEMyLDB4MzAsMHhBMiwweDI4LDB4MEIsMHgyRiwweDM1LDB4ODgsCi0gICAgMHhF
MywweDMwLDB4QTIsMHgyOCwweDdFLDB4RUUsMHg3RCwweDU3LDB4QzIsMHgzMCwweDgyLDB4Mjgs
MHhGRiwweEZGLDB4RkIsMHgyMywKLSAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4OTUsMHhBNSww
eEI3LDB4MkEsMHg0MywweDQxLDB4RTMsMHgzOCwweEU1LDB4QUQsMHhBRiwweDhGLAotICAgIDB4
ODUsMHg0OSwweDIzLDB4NDEsMHgyRCwweEFELDB4RUQsMHg3NywweDY0LDB4NDksMHhDMiwweDM4
LDB4RjgsMHg3OCwweDdBLDB4N0YsCi0gICAgMHgyMywweDQxLDB4QzIsMHgzOCwweEJFLDB4M0Qs
MHgwRCwweDhGLDB4QTYsMHg1MSwweDQ0LDB4NDksMHg3RCwweDhELDB4MEQsMHg4OSwKLSAgICAw
eEE2LDB4NTEsMHgyNCwweDQ5LDB4RjUsMHg3RSwweDY4LDB4NjgsMHg2NCwweDQ5LDB4MjQsMHg0
MSwweEFFLDB4MEIsMHgwRiwweEM1LAotICAgIDB4QTUsMHg1OSwweDAzLDB4NDEsMHgwQSwweDhB
LDB4RUUsMHg1RiwweEM1LDB4NTksMHhFMywweDM4LDB4RjgsMHhGMiwweEZGLDB4N0QsCi0gICAg
MHgyNCwweDQxLDB4QzIsMHgzOCwweEU4LDB4NTgsMHhEQSwweEYyLDB4MDMsMHgzOSwweEMyLDB4
MzgsMHgwRSwweEFELDB4MTcsMHhCNSwKLSAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4MDMsMHgy
MywweDNELDB4NUQsMHg2NSwweDQ5LDB4MDMsMHg0MSwweEVBLDB4M0EsMHg5QSwweDVGLAotICAg
IDB4NjQsMHg0OSwweEMxLDB4MzgsMHg2QSwweEYwLDB4RTgsMHhBQiwweDAzLDB4NDEsMHhDMiww
eDMwLDB4RDUsMHhBOSwweEFBLDB4ODAsCi0gICAgMHgyMywweDQxLDB4RTMsMHgzOCwweDJCLDB4
MjMsMHgzRiwweDJCLDB4ODUsMHg1MSwweDAzLDB4NDEsMHg4QiwweDJCLDB4MkQsMHhBRCwKLSAg
ICAweEE2LDB4NTEsMHgyMywweDQxLDB4RkMsMHhGRSwweDdFLDB4NUYsMHg0NSwweDQ5LDB4QzIs
MHgzOCwweDdGLDB4NzYsMHhGQSwweDgyLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHhENSww
eEY3LDB4QTYsMHhCRSwweDAzLDB4NDEsMHhDMiwweDM4LDB4MkYsMHhFRiwweEJFLDB4ODIsCi0g
ICAgMHg4NSwweDQ5LDB4MDMsMHg0MSwweDJELDB4RkQsMHhGRCwweEQ1LDB4QzYsMHg1OSwweDIz
LDB4NDEsMHgyMiwweDJGLDB4QjUsMHhENSwKLSAgICAweEM1LDB4NTEsMHgyNCwweDQ5LDB4Rjgs
MHg2RSwweEZGLDB4N0YsMHg0NCwweDQ5LDB4MDMsMHg0MSwweDdBLDB4NTAsMHg3MiwweEIxLAot
ICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhCNSwweEJELDB4OUQsMHgyQSwweEU1LDB4NjEsMHg2
NCwweDUxLDB4NTUsMHhERCwweEFGLDB4MkQsCi0gICAgMHgyNiwweDZBLDB4ODQsMHg1OSwweDJE
LDB4RjUsMHhGRSwweEFCLDB4NDcsMHg3MiwweEE0LDB4NTksMHg4MCwweDAyLDB4QUIsMHhCNywK
LSAgICAweDI2LDB4NkEsMHg4NCwweDU5LDB4QTgsMHhGMCwweDYwLDB4NzgsMHhFNSwweDYxLDB4
NjQsMHg1MSwweEU4LDB4QkIsMHhGRiwweDdGLAotICAgIDB4QzUsMHg2MSwweDQzLDB4NTEsMHgy
MiwweEFBLDB4QjcsMHhENSwweEM1LDB4NjEsMHg4NCwweDU5LDB4RjIsMHhGQSwweDZCLDB4RkIs
Ci0gICAgMHhDNSwweDYxLDB4ODQsMHg1OSwweEIyLDB4MEQsMHgzNywweDNELDB4MjcsMHg3Miww
eDg0LDB4NTksMHhBQiwweEZGLDB4N0EsMHg3MCwKLSAgICAweDI3LDB4NkEsMHg4NCwweDU5LDB4
RUEsMHg4QiwweDJELDB4RkYsMHgwNiwweDZBLDB4NjQsMHg1MSwweEZBLDB4N0EsMHg3QywweDdB
LAotICAgIDB4QTQsMHg1OSwweDQ0LDB4NTEsMHgyQiwweDM3LDB4NTcsMHg3RCwweEU2LDB4NjEs
MHg0NCwweDQ5LDB4QTAsMHhBRiwweDU3LDB4NTUsCi0gICAgMHhBNSwweDU5LDB4NDQsMHg0OSww
eDA4LDB4OEIsMHhGQSwweEZGLDB4ODUsMHg1MSwweDQ0LDB4NDksMHhGRSwweDcwLDB4NkEsMHg3
QiwKLSAgICAweDg1LDB4NTEsMHgyMywweDQ5LDB4MkYsMHhCNywweEJELDB4NUYsMHhDNiwweDU5
LDB4NjQsMHg0OSwweEY1LDB4OEIsMHgwRCwweDI1LAotICAgIDB4MDYsMHg2MiwweDY0LDB4NTEs
MHg3RiwweEVBLDB4QUEsMHgwQSwweDA2LDB4NjIsMHg4NCwweDUxLDB4QkYsMHhGNywweDc3LDB4
RDgsCi0gICAgMHgwNiwweDYyLDB4ODQsMHg1MSwweEFBLDB4MkYsMHhCRCwweEQ3LDB4RTUsMHg2
MSwweDg0LDB4NTksMHgyMiwweEZBLDB4NjIsMHhBRiwKLSAgICAweDY3LDB4NzIsMHhBNSwweDU5
LDB4MDIsMHgwOSwweEFELDB4NTUsMHhFOSwweDhBLDB4NDcsMHg3MiwweDBCLDB4QTUsMHhCRCww
eEQ1LAotICAgIDB4NEQsMHhCNCwweEU5LDB4OEEsMHgyQiwweDJGLDB4QkQsMHhCNSwweDkyLDB4
REQsMHhFQywweEEzLDB4MDIsMHgyQiwweDJCLDB4MjUsCi0gICAgMHhGNCwweEU1LDB4QjMsMHhE
RCwweEEzLDB4OEIsMHgyQiwweDJELDB4RjQsMHhFNSwweDkyLDB4RDUsMHhBQSwweEJBLDB4N0Es
MHhGQywKLSAgICAweEIzLDB4REQsMHg1MSwweENELDB4QTAsMHhGOCwweERBLDB4RkEsMHg5Miww
eEQ1LDB4NzIsMHhENSwweDZGLDB4QUYsMHhGNSwweEY1LAotICAgIDB4RDMsMHhERCwweDcyLDB4
Q0QsMHhBRCwweEI3LDB4MkYsMHgwRiwweEY0LDB4REQsMHg5MiwweEQ1LDB4QTksMHgwQiwweEFB
LDB4MkIsCi0gICAgMHgzNCwweEU2LDB4RjQsMHhERCwweEZELDB4MkQsMHhBRiwweEY1LDB4MzUs
MHhFNiwweEQzLDB4REQsMHgwMiwweEZBLDB4RkUsMHg1NSwKLSAgICAweDE0LDB4RTYsMHhEMyww
eERELDB4RTAsMHhCNywweDdGLDB4REQsMHhEMywweERELDB4NzIsMHhDRCwweEQ4LDB4NzgsMHg1
OCwweDVFLAotICAgIDB4MTQsMHhFNiwweDkyLDB4RDUsMHgwQiwweDBELDB4MEQsMHgyOSwweDM1
LDB4RTYsMHhGNCwweERELDB4ODAsMHg3QiwweEZFLDB4QkUsCi0gICAgMHg1NSwweEVFLDB4MTQs
MHhFNiwweDg3LDB4MEQsMHgwMywweDAyLDB4NzYsMHhFRSwweDE0LDB4RTYsMHhERSwweEEyLDB4
OEEsMHg4QSwKLSAgICAweDU1LDB4RUUsMHgzNSwweEU2LDB4NzUsMHhGMiwweEMwLDB4NTAsMHgx
NCwweEVFLDB4MzUsMHhFNiwweEQ1LDB4RjcsMHhCNSwweEFELAotICAgIDB4MzUsMHhFNiwweDE0
LDB4RTYsMHgzRiwweEI5LDB4MjMsMHhCQiwweEI3LDB4RjYsMHg1NSwweEU2LDB4RkQsMHgzRCww
eDI5LDB4MEIsCi0gICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweDdBLDB4RTgsMHg3QSwweDdFLDB4
NzYsMHhGRSwweDk2LDB4RUUsMHhENSwweERGLDB4NzUsMHg3NywKLSAgICAweDk2LDB4RUUsMHg3
NiwweEVFLDB4MDgsMHhBMCwweEIyLDB4NjYsMHg5NiwweEVFLDB4NzYsMHhFRSwweEEyLDB4RUEs
MHhERSwweDdCLAotICAgIDB4NzYsMHhFRSwweDU2LDB4RTYsMHgwOCwweDAwLDB4MDAsMHhBMCww
eDc2LDB4RUUsMHhEMywweERELDB4NUUsMHhFMCwweEU4LDB4ODgsCi0gICAgMHgxNCwweEU2LDB4
QjMsMHhENSwweDVGLDB4NUYsMHhGRSwweDYwLDB4RDMsMHhERCwweDkyLDB4RDUsMHhGQywweEZG
LDB4RUUsMHhCOCwKLSAgICAweEIyLDB4RDUsMHg1MiwweENELDB4QUEsMHhBQSwweEE4LDB4RTAs
MHg5MiwweEQ1LDB4NzIsMHhDRCwweDA4LDB4MEEsMHg5OCwweDg4LAotICAgIDB4QjIsMHhENSww
eDcyLDB4Q0QsMHhGNiwweDdBLDB4RkIsMHhGRSwweDkyLDB4RDUsMHg3MSwweENELDB4NjcsMHhG
RSwweDZGLDB4N0EsCi0gICAgMHg3MSwweENELDB4NTEsMHhDRCwweDc3LDB4NUUsMHg1RiwweDlB
LDB4NzEsMHhDRCwweDMxLDB4QzUsMHhBQiwweEZCLDB4RkIsMHhBQSwKLSAgICAweDY3LDB4N0Es
MHhBNCwweDYxLDB4MDIsMHgwQSwweEFBLDB4RDUsMHg4OCwweDdBLDB4RTUsMHg2OSwweDhBLDB4
QUUsMHgwRSwweDJELAotICAgIDB4NjcsMHg3MiwweDI2LDB4NzIsMHhDMiwweDhBLDB4MjcsMHhB
QywweDY3LDB4N0EsMHg0NiwweDcyLDB4MDYsMHhFQSwweDUwLDB4NTAsCi0gICAgMHg2NywweDdB
LDB4NDYsMHg3MiwweDU3LDB4NzAsMHg3QSwweEUzLDB4ODcsMHg3MiwweDI1LDB4NkEsMHg4Miww
eEFCLDB4RTcsMHhBQSwKLSAgICAweDg2LDB4N0EsMHg0NiwweDcyLDB4NzYsMHhBNSwweEFCLDB4
RjUsMHg4NywweDdBLDB4NDYsMHg3MiwweEJGLDB4QUEsMHhDRiwweEVGLAotICAgIDB4ODcsMHg3
QSwweDQ2LDB4NzIsMHhGOSwweDc4LDB4ODAsMHgwMCwweDg3LDB4N0EsMHg0NiwweDcyLDB4Qjks
MHhBMywweDg5LDB4M0UsCi0gICAgMHhBNywweDdBLDB4NDYsMHg3MiwweDc0LDB4NzcsMHhERiww
eERFLDB4ODYsMHg3QSwweDQ2LDB4NzIsMHg4RiwweEFCLDB4RkIsMHhGRCwKLSAgICAweDg2LDB4
N0EsMHg0NiwweDcyLDB4ODgsMHg4QiwweDBBLDB4ODksMHhBNywweDdBLDB4NDUsMHg3MiwweEVB
LDB4NzgsMHhBQSwweEJGLAotICAgIDB4ODYsMHg3QSwweDY2LDB4NzIsMHhDMywweEJCLDB4QkUs
MHg1NywweDg2LDB4N0EsMHg0NSwweDcyLDB4QTIsMHhCOCwweDBELDB4ODgsCi0gICAgMHhBNyww
eDdBLDB4NjYsMHg3MiwweEZBLDB4RTIsMHg1NiwweERGLDB4ODYsMHg3QSwweDY2LDB4NzIsMHhE
RSwweEU2LDB4OEIsMHhBNiwKLSAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4RjQsMHhENywweDdE
LDB4N0IsMHg4NiwweDdBLDB4NDYsMHg3MiwweEJFLDB4RkEsMHg2RSwweEQ1LAotICAgIDB4QTcs
MHg4MiwweDY2LDB4N0EsMHhFNSwweDc1LDB4NzUsMHg3NSwweDg3LDB4N0EsMHg0NiwweDdBLDB4
QjksMHgzMywweDBCLDB4QUIsCi0gICAgMHg4NywweDdBLDB4MjUsMHg3QSwweEFBLDB4NjIsMHhB
QSwweEFBLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhDRCwweEE1LDB4QkYsMHgzRSwKLSAgICAweEE3
LDB4N0EsMHg2NiwweDdBLDB4NzUsMHg3NSwweDZCLDB4RUIsMHhDOCwweDgyLDB4NDUsMHg3Miww
eEY1LDB4RUQsMHgyQiwweDhCLAotICAgIDB4QTcsMHg4MiwweDY2LDB4N0EsMHhGQSwweEI2LDB4
RTQsMHg2NywweEE3LDB4ODIsMHg0NiwweDcyLDB4OEIsMHgyRiwweEI3LDB4QkEsCi0gICAgMHhB
NywweDgyLDB4NjYsMHg3QSwweDlFLDB4QUIsMHhBQSwweEFBLDB4QTcsMHg3QSwweDQ2LDB4NzIs
MHhBQywweEJGLDB4RTYsMHhFQiwKLSAgICAweDJBLDB4OTMsMHg4NiwweDdBLDB4MTcsMHhBNSww
eDJELDB4MkQsMHgwRCwweEFDLDB4MjksMHg5MywweDI5LDB4MkIsMHgwQiwweDBBLAotICAgIDB4
RUMsMHhBQiwweEU4LDB4OEEsMHg3OCwweDc4LDB4RjgsMHg3OCwweEM4LDB4ODIsMHhDNiwweDYx
LDB4N0EsMHg3QSwweEY4LDB4N0MsCi0gICAgMHhDNSwweDYxLDB4MDMsMHg0MSwweDc4LDB4NjAs
MHhFOCwweEVDLDB4MjMsMHg0MSwweEMyLDB4MzgsMHhENywweEFBLDB4QUEsMHgwMCwKLSAgICAw
eDAzLDB4MzksMHhBMiwweDI4LDB4REYsMHg2RSwweDZBLDB4RjAsMHhBMiwweDMwLDB4QzIsMHgy
OCwweDRBLDB4NkUsMHhGRiwweEJBLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg4QSwweEYz
LDB4RjksMHg3NSwweEUzLDB4MzAsMHhBMiwweDI4LDB4M0EsMHhBQiwweEJGLDB4RkYsCi0gICAg
MHhFMywweDMwLDB4QTIsMHgyOCwweEEwLDB4RUEsMHhGOCwweDdBLDB4QzIsMHgzMCwweEEyLDB4
MjgsMHhFMCwweDQyLDB4QzIsMHg2MSwKLSAgICAweEMyLDB4MjgsMHg4MiwweDIwLDB4QjAsMHgy
QSwweEJGLDB4QkQsMHhFMywweDMwLDB4QTIsMHgyOCwweEE1LDB4MkYsMHgyRSwweDJCLAotICAg
IDB4NDQsMHg0MSwweEUzLDB4MzAsMHhGNSwweEJELDB4RUYsMHgyQSwweDQ0LDB4NDEsMHgwMyww
eDM5LDB4MjksMHg4MywweDBCLDB4MDAsCi0gICAgMHg0NCwweDQ5LDB4QzIsMHgzMCwweEU4LDB4
QjIsMHhGRSwweDVFLDB4MDMsMHgzOSwweEMyLDB4MzgsMHhCRSwweEJFLDB4M0YsMHgwQiwKLSAg
ICAweDQ0LDB4NDEsMHhFMiwweDM4LDB4QjcsMHgyRiwweDNCLDB4QUQsMHhBNSwweDUxLDB4MjQs
MHg0MSwweDgzLDB4QUIsMHhCRCwweEY1LAotICAgIDB4ODUsMHg1MSwweDI0LDB4NDEsMHg2Miww
eEU4LDB4NjgsMHg2QiwweDIzLDB4NDEsMHhDMiwweDM4LDB4OEEsMHhGQywweDc4LDB4N0UsCi0g
ICAgMHgwMywweDQxLDB4QTIsMHgzMCwweDIwLDB4QkEsMHhGQiwweDc3LDB4QzIsMHg0MCwweDAz
LDB4MzksMHhGQiwweEVFLDB4RkEsMHhFRiwKLSAgICAweDI0LDB4NDEsMHhDMiwweDM4LDB4QkUs
MHhCQiwweEVGLDB4N0IsMHgwMywweDM5LDB4QTIsMHgzMCwweDBBLDB4MjAsMHhCRSwweDk3LAot
ICAgIDB4MjQsMHg0MSwweEMzLDB4MzAsMHg3RiwweEZBLDB4OEEsMHhBRiwweDI0LDB4NDEsMHhD
MiwweDM4LDB4RjIsMHhGRCwweEI1LDB4RjcsCi0gICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweDBE
LDB4QkYsMHg3QiwweEVELDB4MjMsMHg0MSwweEUyLDB4MzgsMHhBMCwweEFDLDB4QTcsMHgwRiwK
LSAgICAweDQ0LDB4NDEsMHgwMywweDQxLDB4REYsMHg4MywweEUxLDB4MkIsMHg0NCwweDQxLDB4
MDMsMHg0MSwweDM3LDB4MzUsMHg1NywweDU2LAotICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHhE
QSwweDAzLDB4RTEsMHg3RiwweDg1LDB4NTEsMHgyNCwweDQxLDB4N0IsMHg4QSwweEFBLDB4RkIs
Ci0gICAgMHg2NSwweDQ5LDB4MDMsMHg0MSwweDU1LDB4NUUsMHhGQSwweEY4LDB4NjUsMHg0OSww
eDAzLDB4MzksMHg1NywweDdGLDB4NkIsMHgyMywKLSAgICAweDg1LDB4NDksMHgwMywweDQxLDB4
REQsMHhFNSwweEE5LDB4QTIsMHg4NSwweDUxLDB4MjQsMHg0MSwweEI1LDB4MzcsMHhCRSwweEZE
LAotICAgIDB4ODUsMHg1MSwweDI0LDB4NDksMHg2QSwweDZBLDB4RkEsMHhBRSwweDg0LDB4NTEs
MHgwMywweDQxLDB4QkQsMHhBRiwweEJBLDB4ODIsCi0gICAgMHg4NSwweDUxLDB4MjMsMHg0OSww
eEFCLDB4QUYsMHgyRiwweEE0LDB4RTYsMHg2MSwweDg0LDB4NTEsMHhBNSwweDI1LDB4QUQsMHgw
QiwKLSAgICAweDI2LDB4NjIsMHhDNSwweDYxLDB4QUYsMHgzRiwweEZGLDB4QjUsMHgwNiwweDZB
LDB4QTQsMHg1OSwweDJFLDB4NzgsMHg3RSwweDVBLAotICAgIDB4RTUsMHg2OSwweDY0LDB4NTEs
MHhGOCwweEZCLDB4RDUsMHhGNywweEM1LDB4NjEsMHg2NCwweDUxLDB4RkYsMHg3MiwweEE4LDB4
QTMsCi0gICAgMHhBNSwweDU5LDB4MjMsMHg1MSwweEQ2LDB4OTcsMHhFMiwweEEwLDB4RTYsMHg2
OSwweDg0LDB4NTksMHhGRCwweEY5LDB4QkQsMHgyNSwKLSAgICAweDA3LDB4NkEsMHhBNSwweDYx
LDB4REQsMHhERiwweDI5LDB4MEEsMHg0NywweDcyLDB4QTUsMHg2MSwweDdBLDB4Q0EsMHhFQiww
eEU4LAotICAgIDB4QTUsMHg1OSwweDQ0LDB4NTEsMHhGMCwweEZFLDB4OUYsMHhBOCwweEM1LDB4
NjEsMHg0NCwweDQ5LDB4RTgsMHhBQiwweEVCLDB4RjcsCi0gICAgMHg4NSwweDUxLDB4MjMsMHg1
MSwweDZBLDB4QUIsMHgwQiwweDAyLDB4ODQsMHg1MSwweDQ0LDB4NDksMHg3NSwweEZGLDB4NkYs
MHhGQywKLSAgICAweDY0LDB4NDksMHgyMywweDQ5LDB4OEEsMHhFQiwweDY3LDB4ODgsMHg4NSww
eDUxLDB4MjMsMHg0OSwweDhCLDB4MkIsMHhCRCwweEU1LAotICAgIDB4ODUsMHg1MSwweDIzLDB4
NDksMHg3RSwweEFFLDB4MDIsMHgwQiwweEM2LDB4NTksMHg2NCwweDQ5LDB4MkQsMHgyRCwweEJG
LDB4RkYsCi0gICAgMHgwNiwweDYyLDB4QTUsMHg1MSwweDhBLDB4QUEsMHhFQiwweEVGLDB4MDYs
MHg2MiwweDg0LDB4NTEsMHhBOCwweENBLDB4RUIsMHg2RCwKLSAgICAweEU2LDB4NjEsMHhBNSww
eDU5LDB4NzYsMHg3QSwweEVELDB4MDUsMHhFNiwweDYxLDB4ODQsMHg1MSwweDJELDB4QUYsMHhB
NiwweEZBLAotICAgIDB4MjcsMHg3MiwweEE1LDB4NTksMHhERCwweEJBLDB4QUEsMHgyRiwweDg4
LDB4N0EsMHhFNiwweDY5LDB4MkQsMHhBRCwweDJCLDB4MkIsCi0gICAgMHg0OSwweDkzLDB4QTgs
MHg3QSwweDJELDB4MzUsMHhCRCwweEJELDB4NEQsMHhCNCwweEU5LDB4OEEsMHgwQiwweEFGLDB4
RkYsMHhERCwKLSAgICAweDkzLDB4REQsMHhFQywweEEzLDB4MDIsMHgwRiwweEFELDB4QjUsMHhG
MywweEU1LDB4NzIsMHhENSwweEZBLDB4QUEsMHhBQiwweEI1LAotICAgIDB4RDMsMHhERCwweDcy
LDB4RDUsMHg1RiwweDVFLDB4N0MsMHhGRSwweDkyLDB4RDUsMHg3MSwweEQ1LDB4MEIsMHgwOSww
eEE5LDB4MDAsCi0gICAgMHhEMywweERELDB4OTIsMHhENSwweEFELDB4QUIsMHhBNSwweDJELDB4
MTQsMHhFNiwweEIzLDB4RDUsMHhBRiwweEVELDB4QkYsMHg4QiwKLSAgICAweEY0LDB4REQsMHhC
MiwweERELDB4ODgsMHhCRSwweDIwLDB4MjAsMHgxNCwweEU2LDB4RDMsMHhERCwweEQ1LDB4RDUs
MHhBRSwweDA4LAotICAgIDB4MTQsMHhFNiwweEQzLDB4REQsMHg3RiwweEVCLDB4NjIsMHg2MCww
eDkyLDB4RDUsMHhGMCwweEJDLDB4MzAsMHhCOCwweEY4LDB4NUUsCi0gICAgMHgxNCwweEU2LDB4
MTAsMHhDNSwweDJCLDB4QUYsMHhGNSwweEQ1LDB4MzUsMHhFNiwweDkyLDB4RDUsMHg4OCwweDAy
LDB4MEIsMHgwOSwKLSAgICAweDc2LDB4RUUsMHgxNCwweEU2LDB4MkIsMHgyMiwweEFBLDB4QUEs
MHg1NSwweEVFLDB4MzUsMHhFNiwweDgwLDB4RjQsMHg1NywweDVFLAotICAgIDB4NTUsMHhFRSww
eDE1LDB4RTYsMHhEMiwweEJBLDB4RkIsMHhFQiwweDM1LDB4RTYsMHgxNCwweEU2LDB4RjgsMHhC
RSwweEY4LDB4NUEsCi0gICAgMHg1NSwweEU2LDB4MTQsMHhFNiwweEQ3LDB4OTUsMHgzNSwweDBE
LDB4QjcsMHhGNiwweDU1LDB4RTYsMHgyRiwweDI5LDB4MkIsMHhBQiwKLSAgICAweEI2LDB4RjYs
MHg3NiwweEVFLDB4QTIsMHhFQSwweDdBLDB4RkUsMHg5NiwweEVFLDB4NTUsMHhFRSwweDA4LDB4
RTgsMHhFQSwweEZBLAotICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHhFQSwweEFCLDB4QUQsMHhG
RCwweDc2LDB4RUUsMHg1NSwweEU2LDB4MDIsMHgwRSwweDhFLDB4NEUsCi0gICAgMHg3NSwweEVF
LDB4NTUsMHhFNiwweEU4LDB4QzIsMHgyRiwweEZCLDB4MzUsMHhFRSwweDc1LDB4RTYsMHhBRiww
eEFGLDB4QjcsMHhCRSwKLSAgICAweDU1LDB4RUUsMHgxNCwweEU2LDB4NkIsMHhBOCwweDdBLDB4
RkEsMHgxNCwweEU2LDB4QjMsMHhENSwweDVDLDB4NTgsMHg3OCwweDVBLAotICAgIDB4QjIsMHhE
NSwweDcyLDB4Q0QsMHhGOCwweEZDLDB4MkEsMHgyOCwweEIyLDB4RDUsMHg3MywweENELDB4QkEs
MHhEQSwweEFFLDB4MkIsCi0gICAgMHhCMiwweEQ1LDB4NzEsMHhDRCwweDZBLDB4QkEsMHhGNyww
eEVELDB4OTIsMHhENSwweDcyLDB4Q0QsMHg1NiwweDVFLDB4NzUsMHg2RiwKLSAgICAweEIyLDB4
RDUsMHg1MSwweENELDB4NUIsMHhGRiwweEVGLDB4M0IsMHg3MiwweENELDB4MTAsMHhDNSwweEZC
LDB4RkYsMHhCNCwweEY4LAotICAgIDB4ODMsMHg1OSwweDQzLDB4NTksMHg2QSwweEFGLDB4MkYs
MHgwMiwweDA2LDB4NkEsMHg2MywweDU5LDB4MjksMHhGRCwweEQ1LDB4NTUsCi0gICAgMHg0Niww
eDcyLDB4NjMsMHg1OSwweDAwLDB4QUYsMHhERCwweDU1LDB4ODcsMHg3QSwweDg0LDB4NjEsMHgw
OCwweEEyLDB4QTksMHhGNSwKLSAgICAweDY2LDB4NzIsMHgyNSwweDZBLDB4MEIsMHgwRiwweDg5
LDB4RUQsMHg4NywweDdBLDB4NDYsMHg3MiwweEZCLDB4QTcsMHhBNywweDI1LAotICAgIDB4QTgs
MHg3QSwweDQ2LDB4NzIsMHg1NSwweEVGLDB4OEEsMHhGQSwweDg3LDB4N0EsMHg0NiwweDcyLDB4
QTgsMHhBQiwweDUyLDB4NjIsCi0gICAgMHg4NywweDdBLDB4NDYsMHg3MiwweEFBLDB4RkEsMHhF
RSwweEJCLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg4RSwweDBCLDB4QkYsMHhCRSwKLSAgICAweDg3
LDB4N0EsMHg0NiwweDcyLDB4N0EsMHhGQSwweEFBLDB4ODMsMHg4NywweDdBLDB4NDYsMHg3Miww
eEZGLDB4QkIsMHgxRSwweERFLAotICAgIDB4QTcsMHg3QSwweDQ2LDB4NzIsMHgyRCwweEE3LDB4
QkQsMHhCRiwweEE3LDB4N0EsMHg2NiwweDcyLDB4QkYsMHhCOSwweEJCLDB4QUQsCi0gICAgMHhB
NywweDdBLDB4NjYsMHg3MiwweEQ1LDB4NTcsMHhCRSwweEZDLDB4QTcsMHg3QSwweDY2LDB4NzIs
MHhFRiwweEVELDB4RUEsMHhERSwKLSAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4RDcsMHhCNyww
eEI0LDB4OUUsMHg4NiwweDdBLDB4NDYsMHg3MiwweEE4LDB4MEYsMHgwQSwweDAwLAotICAgIDB4
ODYsMHg3QSwweDY2LDB4NzIsMHhDMiwweEFDLDB4Q0MsMHgyMCwweDg3LDB4N0EsMHg0NSwweDcy
LDB4QjUsMHgyQSwweEYwLDB4RTIsCi0gICAgMHhBNywweDgyLDB4NDUsMHg3MiwweDZGLDB4OEYs
MHhCRSwweEFCLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhFQiwweDcyLDB4QkUsMHhBNywKLSAgICAw
eDg3LDB4ODIsMHg2NywweDdBLDB4RDIsMHhDMiwweDZDLDB4N0YsMHhBOCwweDgyLDB4NDYsMHg3
MiwweDdGLDB4N0YsMHg5RCwweDNCLAotICAgIDB4QTcsMHg3QSwweDY2LDB4N0EsMHhFOSwweEJE
LDB4REMsMHhCRSwweEE3LDB4ODIsMHg0NiwweDcyLDB4QUEsMHgyNywweEFBLDB4QUEsCi0gICAg
MHhBNywweDgyLDB4NjYsMHg3QSwweDU1LDB4N0UsMHg5RSwweDU4LDB4QTgsMHg4MiwweDY3LDB4
N0EsMHhEQiwweDdGLDB4Q0IsMHhFRiwKLSAgICAweDg3LDB4ODIsMHg2NiwweDdBLDB4Q0MsMHhG
NSwweERELDB4QzUsMHhFOCwweDhBLDB4NjYsMHg3QSwweEQ3LDB4RkQsMHhCRiwweDNGLAotICAg
IDB4Q0MsMHhBMywweEE3LDB4ODIsMHgzRCwweDJELDB4MkIsMHgwQiwweDBFLDB4QjQsMHg4Qiww
eDlCLDB4MEEsMHhBRSwweEUyLDB4NzAsCi0gICAgMHhFQywweEFCLDB4QTcsMHg4MiwweEY4LDB4
NzgsMHg3QSwweDdBLDB4QzgsMHg4MiwweEM1LDB4NjEsMHg1OCwweDdFLDB4REUsMHhGRSwKLSAg
ICAweDA2LDB4NjIsMHg2NCwweDUxLDB4NUYsMHhGQSwweEU4LDB4RTgsMHg4NSwweDUxLDB4MDMs
MHg0MSwweEZFLDB4RkEsMHg3QywweDU4LAotICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHg3Qyww
eEU4LDB4NkUsMHg0QiwweEMyLDB4MzAsMHhBMiwweDI4LDB4RUMsMHgyMCwweEYyLDB4RjAsCi0g
ICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweEU5LDB4QUEsMHhFQiwweDZCLDB4RTMsMHgzMCwweEEy
LDB4MjgsMHhCNSwweEY1LDB4QkYsMHg5NSwKLSAgICAweEMyLDB4MjgsMHhBMiwweDI4LDB4NzAs
MHg2MiwweDU4LDB4NTQsMHhBMiwweDI4LDB4ODEsMHgyOCwweDM4LDB4MjIsMHhCMCwweEIwLAot
ICAgIDB4QTIsMHgyOCwweDgyLDB4MjgsMHgzQywweEU4LDB4RkUsMHgzOCwweDAzLDB4MzksMHhB
MiwweDI4LDB4MkQsMHg4NSwweEJGLDB4RkYsCi0gICAgMHg0NCwweDQxLDB4RTIsMHgzMCwweEFB
LDB4QUUsMHhGMywweEU1LDB4NDQsMHg0MSwweEUzLDB4MzgsMHhFOCwweEZBLDB4RkYsMHhENywK
LSAgICAweDIzLDB4NDEsMHhBMSwweDMwLDB4N0MsMHg3RiwweEZGLDB4M0UsMHgwMywweDM5LDB4
QzIsMHgzOCwweDAyLDB4RUIsMHhFRiwweEMwLAotICAgIDB4MjQsMHg0MSwweEMyLDB4MzAsMHgy
RiwweEFGLDB4QjcsMHhCRCwweDQ0LDB4NDksMHhFMywweDM4LDB4QUEsMHhCRiwweERGLDB4REYs
Ci0gICAgMHg2NSwweDQ5LDB4RTMsMHgzOCwweEMyLDB4RUEsMHg3RSwweDU1LDB4MjMsMHg0MSww
eEMyLDB4MzgsMHg3OCwweEY4LDB4N0IsMHhGRiwKLSAgICAweEUyLDB4MzgsMHhBMiwweDMwLDB4
QkYsMHhGQSwweDc4LDB4RkMsMHgyMywweDM5LDB4QzIsMHgzMCwweEYyLDB4QUIsMHhBQiwweEFC
LAotICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHg3NywweEZGLDB4OEIsMHgwNiwweDA0LDB4NDEs
MHhBMiwweDMwLDB4NUYsMHhGRSwweEZBLDB4QjgsCi0gICAgMHhFMywweDM4LDB4ODEsMHgyOCww
eDJCLDB4MkYsMHhGRiwweEY3LDB4RTMsMHgzOCwweDgyLDB4MzAsMHhBQSwweEE4LDB4REIsMHhG
RiwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4MDMsMHgwOSwweEFELDB4MDksMHgyMywweDQx
LDB4MDMsMHgzOSwweDM1LDB4QUYsMHgzRiwweDJGLAotICAgIDB4NDQsMHg0MSwweDAzLDB4NDEs
MHgyRiwweDJELDB4MkIsMHgwRSwweDQ0LDB4NDEsMHhFMywweDM4LDB4QUMsMHhFMCwweERBLDB4
REEsCi0gICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweEFBLDB4MkUsMHgwRSwweEI3LDB4NjQsMHg0
OSwweDI0LDB4NDEsMHhGMiwweEY4LDB4RkEsMHg3RiwKLSAgICAweDQ0LDB4NDksMHgwMywweDQx
LDB4RkMsMHhFQSwweEZFLDB4RkUsMHg4NSwweDUxLDB4MjQsMHg0MSwweDJCLDB4MkQsMHgzQiww
eDBCLAotICAgIDB4QTYsMHg1MSwweDQ0LDB4NDksMHhFRSwweEVBLDB4RUEsMHg1MCwweDY0LDB4
NDksMHgwMywweDQxLDB4QTgsMHg2MCwweEZFLDB4QjYsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHg0
MSwweDJFLDB4QTksMHhCQiwweDgyLDB4ODUsMHg1MSwweDI0LDB4NDksMHgyMCwweDJBLDB4RkIs
MHhEOCwKLSAgICAweDg0LDB4NTEsMHgyMywweDQ5LDB4QUEsMHgyQSwweEVFLDB4N0QsMHgwNiww
eDYyLDB4NjUsMHg1MSwweDA5LDB4MjcsMHhBRCwweEE5LAotICAgIDB4RTYsMHg2MSwweDg0LDB4
NTEsMHhBOCwweEI4LDB4RkUsMHhERiwweEE1LDB4NTksMHg2MywweDUxLDB4QzAsMHhDQiwweDhB
LDB4RkMsCi0gICAgMHhBNSwweDU5LDB4NDMsMHg1MSwweEFBLDB4MjksMHg4QSwweEIwLDB4RTUs
MHg2MSwweDQ0LDB4NTEsMHhBQiwweEFGLDB4MkYsMHhGNywKLSAgICAweEU2LDB4NjEsMHg4NCww
eDU5LDB4N0YsMHhEQSwweEVBLDB4OEEsMHgwNiwweDYyLDB4ODQsMHg1OSwweDI5LDB4QUYsMHhC
NSwweEZELAotICAgIDB4MjcsMHg2QSwweEM2LDB4NjEsMHg4MiwweDAwLDB4MkYsMHhCOSwweDI3
LDB4NkEsMHhDNiwweDYxLDB4RkEsMHg3QSwweEU4LDB4QzAsCi0gICAgMHhDNiwweDU5LDB4MjMs
MHg0OSwweEZBLDB4N0EsMHg3QSwweDY4LDB4NjQsMHg1MSwweDAzLDB4NDEsMHgyQSwweEZBLDB4
NUQsMHg1NywKLSAgICAweDg1LDB4NTEsMHgyMywweDQ5LDB4MDIsMHhBMiwweDBDLDB4M0QsMHg4
NSwweDUxLDB4NDQsMHg0OSwweEI4LDB4QkEsMHg3MCwweDI4LAotICAgIDB4NjQsMHg1MSwweDQ0
LDB4NDksMHhBOCwweEFDLDB4QjYsMHgyNSwweEE2LDB4NTEsMHgyMywweDQ5LDB4RUYsMHhFQiww
eEY5LDB4RjgsCi0gICAgMHhFNiwweDU5LDB4NDQsMHg0OSwweEI3LDB4QTksMHgyMiwweDJELDB4
QzYsMHg1OSwweDQzLDB4NDksMHhGQiwweEI2LDB4RjgsMHhFMCwKLSAgICAweEM2LDB4NTksMHg2
NSwweDUxLDB4QjIsMHg3QSwweEI3LDB4RjcsMHhBNSwweDUxLDB4NjQsMHg1MSwweDYyLDB4RkEs
MHg3OSwweDY1LAotICAgIDB4RTYsMHg1OSwweDQzLDB4NDksMHgyQSwweEFGLDB4QjcsMHhENSww
eEU2LDB4NTksMHg4NCwweDUxLDB4NDAsMHhBMiwweDNBLDB4N0QsCi0gICAgMHg0NywweDcyLDB4
QzYsMHg1OSwweDI1LDB4QUQsMHgyRiwweDI5LDB4ODcsMHg3QSwweDI3LDB4NkEsMHgwRiwweDAz
LDB4QUEsMHgyMSwKLSAgICAweEU5LDB4ODIsMHg4NywweDdBLDB4MEIsMHgyMiwweDg5LDB4N0Ys
MHg2QiwweDkzLDB4QzgsMHg4MiwweDBCLDB4N0YsMHg3RiwweDdELAotICAgIDB4OEYsMHhCQyww
eEU4LDB4OEEsMHgyRiwweEJELDB4RkQsMHg1NSwweEIzLDB4REQsMHg4QiwweDlCLDB4MjIsMHgw
QiwweDJGLDB4QUQsCi0gICAgMHhGNCwweEU1LDB4OTIsMHhENSwweDdCLDB4RkIsMHhBRiwweDI5
LDB4RjQsMHhERCwweDcyLDB4RDUsMHg1RiwweDdGLDB4QjgsMHg4MCwKLSAgICAweDE0LDB4RTYs
MHg5MiwweEQ1LDB4QkQsMHhBRCwweDBGLDB4MEEsMHgzNSwweEVFLDB4RjQsMHhERCwweEVGLDB4
QUYsMHhBMiwweEFBLAotICAgIDB4MzUsMHhFNiwweEY0LDB4REQsMHhEQiwweEJFLDB4QUIsMHgy
QSwweDM1LDB4RTYsMHhEMywweERELDB4QUIsMHhCNywweDJBLDB4ODIsCi0gICAgMHgxNCwweEU2
LDB4NzIsMHhDRCwweEMwLDB4NzgsMHg3MCwweDcwLDB4MzEsMHhDNSwweENGLDB4QkMsMHhGQyww
eEY3LDB4REUsMHgzQSwKLSAgICAweDcyLDB4Q0QsMHhGMCwweEM0LDB4QjUsMHhCRCwweEFCLDB4
MkEsMHg1NSwweEVFLDB4OTIsMHhENSwweDJELDB4MjUsMHgyRCwweDJELAotICAgIDB4NzUsMHhF
RSwweDM1LDB4RTYsMHhFMCwweEEyLDB4RTgsMHhFQSwweDU1LDB4RUUsMHgxNCwweEU2LDB4RkUs
MHg3RSwweEUyLDB4NzgsCi0gICAgMHgzNSwweEU2LDB4MTQsMHhFNiwweEMwLDB4M0IsMHg3Riww
eDc1LDB4MzUsMHhFNiwweDE0LDB4RTYsMHg5NiwweDlGLDB4MjUsMHgwNSwKLSAgICAweDk2LDB4
RUUsMHgzNSwweEU2LDB4QjUsMHgyRCwweDNGLDB4MkEsMHg3NiwweEY2LDB4OTYsMHhFRSwweEQ2
LDB4RjUsMHhGRiwweEY3LAotICAgIDB4OTYsMHhFRSwweDM1LDB4RTYsMHg4MCwweEE4LDB4QUEs
MHhBQSwweDk1LDB4RUUsMHg1NSwweEU2LDB4RjQsMHhGRiwweDU3LDB4NTUsCi0gICAgMHg3NSww
eEVFLDB4NTUsMHhFNiwweEJGLDB4MTcsMHg5NywweERGLDB4NzUsMHhFRSwweDU1LDB4RTYsMHhG
RSwweEE4LDB4RkIsMHhCRiwKLSAgICAweDc1LDB4RUUsMHg1NSwweEU2LDB4QUYsMHhBQiwweEI5
LDB4RkYsMHg3NiwweEVFLDB4NTUsMHhFNiwweEYyLDB4RUEsMHhCMiwweEZCLAotICAgIDB4NTUs
MHhFRSwweDM1LDB4RTYsMHg3QSwweDc4LDB4RkEsMHhCQSwweDc1LDB4RUUsMHhCMywweEQ1LDB4
NUUsMHg3QSwweEFBLDB4QUEsCi0gICAgMHgxNCwweEU2LDB4OTIsMHhENSwweDc3LDB4RkYsMHg2
OCwweDgwLDB4QjMsMHhERCwweDcyLDB4RDUsMHhFQSwweEVFLDB4REIsMHhGOCwKLSAgICAweEIz
LDB4RDUsMHg3MSwweEQ1LDB4M0IsMHgyQSwweDhCLDB4NjAsMHhCMywweEQ1LDB4NzIsMHhENSww
eEIyLDB4QTAsMHhBQSwweDdGLAotICAgIDB4QjIsMHhENSwweDUxLDB4Q0QsMHhGRiwweEY4LDB4
RkEsMHhFQiwweDcxLDB4Q0QsMHg1MSwweENELDB4NkYsMHhBQiwweEU3LDB4QUYsCi0gICAgMHg4
MywweDYxLDB4NDMsMHg1OSwweEY4LDB4RkEsMHhBRiwweEM5LDB4QTQsMHg2MSwweDYzLDB4NTks
MHg1RiwweDM3LDB4NUYsMHg5NSwKLSAgICAweDg0LDB4NTksMHg0MywweDU5LDB4QUYsMHhCNiww
eEVCLDB4QkUsMHhDNSwweDY5LDB4NDQsMHg1OSwweDBGLDB4RUIsMHhGRiwweDZGLAotICAgIDB4
RTUsMHg2OSwweDQzLDB4NTksMHgwQSwweEFGLDB4RjcsMHhGNSwweDY3LDB4N0EsMHhBNCwweDYx
LDB4MEEsMHhCRiwweDU1LDB4NTUsCi0gICAgMHg4NywweDdBLDB4QTQsMHg2MSwweEEwLDB4QUEs
MHhCRiwweEQ1LDB4NjYsMHg3MiwweDA1LDB4NkEsMHgwMiwweDBBLDB4RkUsMHhCNSwKLSAgICAw
eDY2LDB4NzIsMHgyNSwweDcyLDB4ODIsMHgwMiwweDM3LDB4MkIsMHhBNywweDdBLDB4NDUsMHg3
MiwweEZFLDB4NzcsMHg2RSwweDNFLAotICAgIDB4ODcsMHg3QSwweDI1LDB4NzIsMHgwQiwweDhC
LDB4QUYsMHhBNSwweDg3LDB4N0EsMHg2NiwweDcyLDB4REYsMHhEMSwweEYzLDB4OEIsCi0gICAg
MHhBNywweDdBLDB4NDYsMHg3MiwweEZGLDB4QUIsMHgzQiwweDJGLDB4ODYsMHg3QSwweDQ2LDB4
NzIsMHgyRSwweEFBLDB4RjIsMHhDOCwKLSAgICAweEE3LDB4N0EsMHg0NiwweDcyLDB4RTgsMHg2
QSwweEVCLDB4RjIsMHhBNywweDdBLDB4NjYsMHg3MiwweDVELDB4RTksMHgyOSwweEZCLAotICAg
IDB4QTcsMHg3QSwweDY2LDB4NzIsMHg2RCwweDhGLDB4QUUsMHg1QywweEE3LDB4N0EsMHg2Niww
eDcyLDB4RUEsMHhDRiwweEY3LDB4QkQsCi0gICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEZBLDB4
REYsMHhENiwweDVBLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg4QSwweDAwLDB4ODksMHhCOSwKLSAg
ICAweDg3LDB4N0EsMHg0NSwweDcyLDB4MEQsMHgyRiwweDBBLDB4MjIsMHg4NywweDdBLDB4NDYs
MHg3MiwweEYwLDB4N0EsMHhBQSwweDBBLAotICAgIDB4ODcsMHg3QSwweDI2LDB4N0EsMHhDQSww
eEEyLDB4OEEsMHg4MCwweEE3LDB4ODIsMHg2NiwweDdBLDB4MjUsMHhGNywweEJBLDB4OEUsCi0g
ICAgMHhBNywweDgyLDB4NDYsMHg3QSwweEE4LDB4QUEsMHhBQSwweEFELDB4ODcsMHg4MiwweDY2
LDB4N0EsMHgzQSwweEE1LDB4RDUsMHg1NywKLSAgICAweEE3LDB4ODIsMHg2NiwweDdBLDB4REUs
MHhCNiwweEY4LDB4RkYsMHhBNywweDgyLDB4NjYsMHg3QSwweEE5LDB4QTEsMHhFQSwweDEzLAot
ICAgIDB4QTcsMHg4MiwweDY2LDB4N0EsMHg3NywweDdCLDB4N0EsMHhGRSwweDZBLDB4OUIsMHg0
NiwweDcyLDB4QkYsMHhCNSwweDJELDB4MEIsCi0gICAgMHgwRCwweEI0LDB4NkEsMHg5QiwweDJE
LDB4MEQsMHgyQSwweDAyLDB4MkQsMHhCNCwweENDLDB4QTMsMHg3OCwweDgwLDB4QzAsMHhERSwK
LSAgICAweENDLDB4QTMsMHg2NiwweDdBLDB4NzgsMHg3OCwweDdDLDB4N0EsMHg0NiwweDcyLDB4
RTUsMHg2OSwweEU4LDB4QkEsMHhGQywweDVDLAotICAgIDB4MDYsMHg2QSwweDYzLDB4NDksMHhG
OCwweDcwLDB4N0EsMHg1RSwweDY0LDB4NTEsMHhFMiwweDM4LDB4NzAsMHg2OCwweEVBLDB4N0Es
Ci0gICAgMHgwMywweDQxLDB4RTIsMHgzOCwweDYyLDB4REEsMHgwRSwweDM1LDB4MDMsMHgzOSww
eEEyLDB4MzAsMHg1RSwweERFLDB4NTAsMHg3QywKLSAgICAweEMyLDB4MzgsMHhBMiwweDI4LDB4
NUUsMHg1NywweEQ3LDB4RDcsMHhDMSwweDMwLDB4ODIsMHgyMCwweDJGLDB4RkIsMHhFRSwweEZB
LAotICAgIDB4QTIsMHgyOCwweDgxLDB4MjgsMHhGMCwweDYwLDB4ODMsMHgwMiwweEMyLDB4Mjgs
MHg4MiwweDI4LDB4RkIsMHhCRiwweEZCLDB4QUEsCi0gICAgMHhDMiwweDI4LDB4NjEsMHgyOCww
eDJBLDB4QUEsMHgyQiwweEEyLDB4RTMsMHgzMCwweEEyLDB4MzAsMHg2RSwweEVCLDB4OEEsMHhF
QiwKLSAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4MkIsMHhFQSwweEQ4LDB4N0EsMHhFMywweDM4
LDB4QTIsMHgzMCwweDJFLDB4QTcsMHhGNywweEZFLAotICAgIDB4NDQsMHg0MSwweEMyLDB4Mzgs
MHgzRCwweEE1LDB4MkQsMHhCRCwweDQ0LDB4NDEsMHhFMywweDM4LDB4RjgsMHhFMCwweDc4LDB4
RjgsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzOCwweDZGLDB4QUEsMHhBRSwweDJFLDB4MjQsMHg0
MSwweEUzLDB4MzgsMHg3QSwweDdDLDB4MkEsMHgyMiwKLSAgICAweDI0LDB4NDEsMHhDMiwweDMw
LDB4N0UsMHhGQiwweEUwLDB4RjAsMHg0NCwweDQxLDB4QzIsMHgzMCwweERELDB4QkQsMHgyRiww
eDJCLAotICAgIDB4NDMsMHg0OSwweEExLDB4MzAsMHhERiwweDVGLDB4RUUsMHhBMCwweDI0LDB4
NDEsMHhFMywweDM4LDB4RkQsMHhBOSwweDBCLDB4ODAsCi0gICAgMHgyMywweDQxLDB4QzIsMHgz
OCwweDBFLDB4QkEsMHhGQywweDdBLDB4MjQsMHg0MSwweEMzLDB4MzgsMHhGMCwweEUyLDB4RkYs
MHhGRiwKLSAgICAweEMzLDB4MzAsMHg4MiwweDMwLDB4RjYsMHhGQSwweEYwLDB4QjIsMHhFMyww
eDM4LDB4ODIsMHgzMCwweEZGLDB4QjcsMHhCNywweDJCLAotICAgIDB4MjQsMHg0MSwweEMyLDB4
MzgsMHhBRCwweDNELDB4MjMsMHhBQSwweDQ0LDB4NDEsMHhFMywweDM4LDB4QkYsMHhCQiwweEZG
LDB4MEQsCi0gICAgMHg2NCwweDQ5LDB4MjQsMHg0MSwweEE1LDB4QkQsMHhENywweDVFLDB4NjQs
MHg0OSwweDI0LDB4NDEsMHg1NywweDcyLDB4RTIsMHg3RSwKLSAgICAweDIzLDB4NDEsMHhFMiww
eDM4LDB4QUMsMHhCMCwweEUzLDB4RUYsMHgyNCwweDQxLDB4RTMsMHgzOCwweDgwLDB4OEEsMHhG
QiwweDlCLAotICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHhBQiwweEFCLDB4QUYsMHgxNSwweDg1
LDB4NTEsMHgyNCwweDQxLDB4OEIsMHgyMiwweEJCLDB4NUYsCi0gICAgMHhBNiwweDUxLDB4MDMs
MHgzOSwweEUwLDB4RkIsMHg3QiwweERELDB4NDQsMHg0MSwweEUzLDB4MzgsMHhBRSwweEJBLDB4
M0YsMHgxRSwKLSAgICAweDg1LDB4NTEsMHgyNCwweDQxLDB4QkIsMHgwRiwweEZGLDB4NzcsMHg2
NSwweDUxLDB4MDMsMHg0MSwweEVDLDB4RTAsMHg2QSwweDVELAotICAgIDB4MjQsMHg0OSwweEUz
LDB4NDAsMHgwQSwweDJCLDB4QkEsMHg1QSwweEM2LDB4NTksMHgyMywweDQ5LDB4OEIsMHhBOSww
eEU5LDB4RjUsCi0gICAgMHhBNSwweDU5LDB4NDQsMHg0OSwweEY4LDB4RkEsMHg3QiwweDdGLDB4
NjQsMHg1MSwweDIzLDB4NDksMHgyMCwweEFBLDB4QTIsMHhGRiwKLSAgICAweDY0LDB4NTEsMHgw
MywweDQxLDB4ODAsMHhCQSwweDlFLDB4RDcsMHg4NSwweDU5LDB4MjMsMHg0OSwweDBFLDB4QTcs
MHhBNywweDJELAotICAgIDB4RTYsMHg2MSwweDg1LDB4NTksMHg4QiwweEExLDB4QkIsMHhGRiww
eEU2LDB4NjEsMHg4NSwweDUxLDB4QTgsMHhBRSwweDc3LDB4N0YsCi0gICAgMHgwNiwweDYyLDB4
ODQsMHg1MSwweEEyLDB4QUIsMHhCRSwweEZELDB4MjcsMHg2QSwweDg0LDB4NTEsMHg4MCwweEFF
LDB4RUYsMHg3NywKLSAgICAweEU2LDB4NjEsMHg4NSwweDUxLDB4NkEsMHhFMCwweEVFLDB4OUYs
MHhDNiwweDU5LDB4MjMsMHg0OSwweDVGLDB4RUUsMHhFQSwweDgwLAotICAgIDB4NjQsMHg1MSww
eDAyLDB4NDEsMHgzRiwweEJGLDB4QzAsMHhBOCwweDg1LDB4NTEsMHgyMywweDQxLDB4MEEsMHhB
RCwweERELDB4QkYsCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweDAzLDB4OEMsMHg4NiwweEFB
LDB4NjQsMHg0OSwweDQ0LDB4NDksMHgyMCwweDFDLDB4MkYsMHgyOSwKLSAgICAweEM2LDB4NTks
MHg2NCwweDQ5LDB4MkQsMHhBRCwweEZELDB4RkYsMHhFNiwweDU5LDB4NjQsMHg0OSwweEEwLDB4
QUEsMHhENSwweDU3LAotICAgIDB4QTUsMHg1MSwweDQ0LDB4NDksMHhFQywweEEwLDB4QUEsMHg3
RiwweDg1LDB4NTEsMHgyMywweDQxLDB4OEYsMHhBQSwweEZCLDB4N0UsCi0gICAgMHhBNSwweDUx
LDB4MjMsMHg0OSwweDJFLDB4MkIsMHgyRiwweEFGLDB4QzUsMHg1MSwweDY0LDB4NTEsMHhGRSww
eEZFLDB4REMsMHhCNywKLSAgICAweDA3LDB4NkEsMHhBNSwweDU5LDB4MjcsMHhBNSwweEE1LDB4
OUQsMHg4NywweDdBLDB4MDYsMHg2MiwweDJBLDB4QUIsMHhBRiwweEY1LAotICAgIDB4QzgsMHg4
MiwweDg4LDB4N0EsMHhCQiwweEMxLDB4Q0QsMHhCRCwweEU4LDB4ODIsMHhBNywweDgyLDB4QUEs
MHhBRiwweEIzLDB4N0YsCi0gICAgMHgyOSwweDhCLDB4QzcsMHg4MiwweDNGLDB4QkYsMHg3NSww
eEU1LDB4MzEsMHhDRCwweDA5LDB4OEIsMHgyRiwweEJELDB4RDUsMHhENSwKLSAgICAweEQ0LDB4
RTUsMHgwRCwweEFDLDB4MDIsMHgwMiwweDBCLDB4MkQsMHgxNCwweEU2LDB4RDMsMHhFNSwweEZF
LDB4QUEsMHgyMiwweDhCLAotICAgIDB4NTUsMHhFNiwweEY0LDB4RTUsMHhGRCwweEJELDB4OEYs
MHhBRiwweDU1LDB4RUUsMHgxNCwweEU2LDB4NTcsMHhENSwweDNBLDB4MEUsCi0gICAgMHg1NSww
eEVFLDB4MTQsMHhFNiwweEI1LDB4QUUsMHhBQSwweDIwLDB4NTUsMHhFRSwweDE1LDB4RTYsMHhG
QSwweEZBLDB4RkYsMHhGQywKLSAgICAweEY0LDB4RTUsMHhEMCwweEJDLDB4RTAsMHhFMCwweEU4
LDB4NzgsMHg3MiwweENELDB4MTAsMHhDNSwweEI3LDB4MjcsMHhBRCwweEY1LAotICAgIDB4NzIs
MHhDRCwweDMwLDB4Q0QsMHhGQiwweEY4LDB4QUUsMHhERCwweDM1LDB4RTYsMHgzMSwweENELDB4
MEYsMHgyRCwweDJGLDB4QUQsCi0gICAgMHg3NiwweEVFLDB4MzQsMHhFNiwweEZCLDB4RUIsMHhB
QiwweDgxLDB4NTUsMHhFRSwweDE1LDB4RTYsMHg3QSwweEVFLDB4RUEsMHhBMiwKLSAgICAweDc2
LDB4RUUsMHgxNCwweEU2LDB4REQsMHhGNywweEI3LDB4MkYsMHg5NiwweEVFLDB4MTQsMHhFNiww
eEJELDB4MkYsMHhBQiwweDAyLAotICAgIDB4OTYsMHhFRSwweDc2LDB4RUUsMHgzRCwweDNGLDB4
QTgsMHg4MiwweEI2LDB4RjYsMHg3NiwweEVFLDB4RkEsMHhGQiwweDVGLDB4NTcsCi0gICAgMHg3
NiwweEVFLDB4NTUsMHhFNiwweEEwLDB4RTAsMHgzOCwweERFLDB4MzUsMHhGNiwweDU1LDB4RTYs
MHg1NSwweERELDB4NUQsMHhERCwKLSAgICAweDU1LDB4RUUsMHg3NSwweEU2LDB4MkUsMHhFQiww
eEVFLDB4QUUsMHg3NSwweEVFLDB4MzUsMHhFNiwweDJBLDB4M0UsMHhGRSwweEFBLAotICAgIDB4
NzUsMHhFRSwweDM1LDB4RTYsMHg4QSwweEE4LDB4QUEsMHhCNywweDU1LDB4RUUsMHg3NSwweEU2
LDB4QUEsMHhBOCwweEE4LDB4RkUsCi0gICAgMHg3NSwweEVFLDB4NTUsMHhFNiwweERFLDB4REYs
MHhBRiwweEMwLDB4NzUsMHhFRSwweDM1LDB4RTYsMHg3RSwweEZFLDB4OUUsMHhCQSwKLSAgICAw
eDU1LDB4RTYsMHgxNCwweEU2LDB4RkEsMHg2QSwweEEwLDB4MDAsMHg1NSwweEVFLDB4QjMsMHhE
NSwweDVFLDB4RUEsMHhBOCwweDgwLAotICAgIDB4MTUsMHhFNiwweDkyLDB4RDUsMHhGNywweDdG
LDB4RkEsMHhBMCwweEQ0LDB4REQsMHg5MiwweEQ1LDB4NUQsMHg1NSwweERFLDB4RjksCi0gICAg
MHhCMywweERELDB4NzEsMHhENSwweDdFLDB4NkEsMHhBQiwweEIwLDB4OTIsMHhENSwweDUxLDB4
Q0QsMHg5NywweEVFLDB4QUMsMHgyMCwKLSAgICAweDg0LDB4NjEsMHg0MywweDU5LDB4RkQsMHhF
QiwweDAyLDB4Q0IsMHg4NCwweDYxLDB4NDMsMHg1OSwweDNGLDB4RkUsMHhERSwweEJGLAotICAg
IDB4ODQsMHg2MSwweDQzLDB4NTksMHg4RSwweEI0LDB4REIsMHg3MiwweEE1LDB4NjEsMHg0Myww
eDU5LDB4RjgsMHg3QywweDVFLDB4NUYsCi0gICAgMHg4NCwweDYxLDB4MjMsMHg1MSwweDJELDB4
MjIsMHg4MCwweEEyLDB4QTQsMHg2MSwweDYzLDB4NTksMHhGQSwweDdFLDB4RjcsMHg2OSwKLSAg
ICAweDg0LDB4NjEsMHg2MywweDU5LDB4MzksMHg1NSwweEFELDB4RjksMHhFNCwweDY5LDB4NjMs
MHg1OSwweDJCLDB4QUQsMHhCNSwweDc5LAotICAgIDB4NDYsMHg3MiwweDYzLDB4NTksMHgwQSww
eEFCLDB4RkQsMHg1RCwweDg3LDB4N0EsMHg4MywweDU5LDB4MDIsMHhBQSwweEJELDB4NTUsCi0g
ICAgMHg2NiwweDcyLDB4QzQsMHg2MSwweDI4LDB4ODAsMHgyQSwweEI1LDB4ODcsMHg3QSwweDY2
LDB4NzIsMHg5MSwweDA1LDB4N0EsMHg3OSwKLSAgICAweEE3LDB4ODIsMHg2NiwweDcyLDB4RkEs
MHhGOCwweEZELDB4N0QsMHg4NiwweDdBLDB4NjYsMHg3MiwweEUwLDB4NzQsMHhENywweEFFLAot
ICAgIDB4QTcsMHg3QSwweDY2LDB4NzIsMHhFNiwweEFGLDB4RkIsMHgyRiwweDg3LDB4N0EsMHg0
NiwweDcyLDB4OEUsMHhCMCwweEE4LDB4RkUsCi0gICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEZG
LDB4NTYsMHhEQSwweDdELDB4QTcsMHg3QSwweDY2LDB4NzIsMHhDRCwweDVGLDB4RUYsMHhGNywK
LSAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4QzgsMHhDMiwweDQyLDB4MDMsMHhBNywweDdBLDB4
NDYsMHg3MiwweEJELDB4MkYsMHhBQiwweEVCLAotICAgIDB4QTgsMHg3QSwweDY2LDB4N0EsMHhG
NywweDdGLDB4RUEsMHg1NywweDg3LDB4N0EsMHg0NiwweDdBLDB4ODgsMHhBMiwweDkyLDB4MTIs
Ci0gICAgMHhBNywweDgyLDB4NjcsMHg3QSwweEFGLDB4QjcsMHhERiwweEZGLDB4QTcsMHg4Miww
eDY3LDB4N0EsMHhDQiwweDU2LDB4OEUsMHhCMiwKLSAgICAweEE3LDB4ODIsMHg0NiwweDcyLDB4
RUQsMHhBRiwweDJCLDB4QTIsMHg4NywweDgyLDB4NjcsMHg3QSwweDlGLDB4QkQsMHgzNCwweDAy
LAotICAgIDB4QTcsMHg4MiwweDY3LDB4N0EsMHhGNCwweEFDLDB4QkYsMHhGOSwweEE3LDB4ODIs
MHg2NiwweDdBLDB4RUEsMHhBQSwweEJGLDB4NTgsCi0gICAgMHgyOSwweDkzLDB4ODcsMHg3QSww
eDVELDB4NUQsMHg5NSwweDNELDB4RUMsMHhBQiwweEE3LDB4ODIsMHgyRCwweDJGLDB4MEEsMHgw
QSwKLSAgICAweDBELDB4QUMsMHhBQiwweEEzLDB4ODgsMHhBOCwweEJGLDB4RkYsMHhFQywweEFC
LDB4QUMsMHhBMywweDgwLDB4RTgsMHhBRSwweEI0LAotICAgIDB4Q0IsMHhBMywweDg2LDB4N0Es
MHg1OCwweDc4LDB4RjgsMHhFOCwweDQ2LDB4NzIsMHhBNSwweDU5LDB4REMsMHg1QywweDVDLDB4
NUMsCi0gICAgMHhBNSwweDU5LDB4NDMsMHg0OSwweDcwLDB4RTgsMHg2MiwweEZFLDB4NjQsMHg0
OSwweDAyLDB4NDEsMHg1RSwweEZFLDB4NjgsMHg1MCwKLSAgICAweDAzLDB4NDEsMHhFMiwweDM4
LDB4N0QsMHhGOCwweERFLDB4NTUsMHhFMiwweDMwLDB4QTIsMHgyOCwweEU4LDB4RjAsMHg2QSww
eDdBLAotICAgIDB4ODIsMHgzMCwweEEyLDB4MjgsMHhERiwweDdELDB4RkIsMHg3RiwweEMyLDB4
MzAsMHhBMiwweDI4LDB4REYsMHg3QiwweEVBLDB4NjgsCi0gICAgMHhDMiwweDI4LDB4ODEsMHgy
OCwweEJCLDB4NkUsMHhFQiwweDgzLDB4QzIsMHgzMCwweEEyLDB4MjgsMHg2QiwweDhELDB4MkUs
MHgwMCwKLSAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4ODIsMHg4QiwweDIzLDB4QUIsMHhFMyww
eDMwLDB4QTIsMHgzMCwweEE3LDB4MkYsMHhBQiwweDAyLAotICAgIDB4RTMsMHgzOCwweEExLDB4
MjgsMHg1QiwweEZFLDB4QUUsMHgyQSwweDAzLDB4MzksMHhBMiwweDMwLDB4RjcsMHhCRiwweEZG
LDB4QTIsCi0gICAgMHgyNCwweDQxLDB4QzIsMHgzMCwweEVELDB4QUEsMHg4MiwweDAyLDB4NDUs
MHg0MSwweDAzLDB4NDEsMHhERiwweERGLDB4RkIsMHhBRCwKLSAgICAweDI0LDB4NDEsMHhFMyww
eDM4LDB4MzYsMHg4NSwweEJCLDB4QTAsMHg0NCwweDQxLDB4MDMsMHg0MSwweEFFLDB4QkYsMHhG
QiwweEJBLAotICAgIDB4NjUsMHg0OSwweDAzLDB4MzksMHg1MywweEU5LDB4QzMsMHhFQiwweDQ0
LDB4NDksMHhFMywweDM4LDB4MkYsMHhCQiwweEZFLDB4NUEsCi0gICAgMHg2NSwweDQ5LDB4MDMs
MHg0MSwweDZBLDB4QUEsMHhBQiwweDBCLDB4ODUsMHg1MSwweDAzLDB4NDEsMHg3RiwweEZCLDB4
RUEsMHg3OCwKLSAgICAweDI0LDB4NDEsMHhDMywweDM4LDB4REEsMHhENCwweDVFLDB4REYsMHhF
MywweDM4LDB4QzIsMHgzMCwweEVFLDB4NjMsMHhDMSwweDAwLAotICAgIDB4RTMsMHgzOCwweEEy
LDB4MzAsMHg1NSwweDlCLDB4QUEsMHg4MCwweDAzLDB4MzksMHhDMywweDM4LDB4QTUsMHgyRCww
eDJGLDB4M0YsCi0gICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweDc1LDB4QUIsMHgyQiwweDJCLDB4
ODUsMHg1MSwweDAzLDB4MzksMHhGNSwweEVBLDB4QzAsMHgyMiwKLSAgICAweDQ0LDB4NDksMHgw
MywweDQxLDB4REMsMHg1RSwweDVFLDB4NUIsMHgyNCwweDQxLDB4MDMsMHgzOSwweEVBLDB4RUYs
MHhCOSwweEMxLAotICAgIDB4MDMsMHg0MSwweEUzLDB4MzgsMHhCRSwweEY4LDB4RUMsMHhBQSww
eDI0LDB4NDEsMHhFMywweDM4LDB4RkYsMHhBRiwweDhCLDB4MEIsCi0gICAgMHgyNCwweDQ5LDB4
RTMsMHgzOCwweDA1LDB4RkYsMHhERSwweDU2LDB4MjQsMHg0MSwweEUzLDB4MzgsMHg4MCwweEJC
LDB4RjksMHg2RiwKLSAgICAweDQ0LDB4NDEsMHgwNCwweDQxLDB4RjUsMHhGNSwweDlELDB4OUYs
MHg0NCwweDQxLDB4MDMsMHg0MSwweEQ1LDB4NUUsMHhGRSwweDJBLAotICAgIDB4NDQsMHg1MSww
eDAzLDB4NDEsMHhGNywweEJGLDB4MkYsMHgzRiwweDQ0LDB4NDksMHgwMywweDQxLDB4RDUsMHhG
RSwweEUyLDB4QTAsCi0gICAgMHgyNCwweDQ5LDB4RTMsMHg0MCwweDU2LDB4OTcsMHhBRSwweEFF
LDB4NDQsMHg0OSwweEUzLDB4NDAsMHgwQiwweEFBLDB4RUUsMHg3RSwKLSAgICAweDQ0LDB4NDks
MHgwMywweDQxLDB4QTgsMHhFQSwweEFGLDB4RUQsMHgyMywweDQ5LDB4RTIsMHg0MCwweDgwLDB4
QTAsMHhFOCwweDU1LAotICAgIDB4MjMsMHg0OSwweEUyLDB4MzgsMHhBQSwweEZBLDB4RkIsMHhC
RiwweDg1LDB4NTksMHgyMywweDQxLDB4MEQsMHhCRCwweEZELDB4QTUsCi0gICAgMHhBNSwweDU5
LDB4NjQsMHg0OSwweDIyLDB4MkEsMHhBQiwweEZELDB4QzYsMHg1OSwweDY0LDB4NTEsMHhFQSww
eEFBLDB4M0UsMHg2RiwKLSAgICAweEE1LDB4NTksMHg0NCwweDQ5LDB4MEIsMHgwQiwweEFBLDB4
QkQsMHg4NSwweDUxLDB4NDQsMHg0OSwweDk4LDB4RDgsMHhEQywweDZGLAotICAgIDB4QTUsMHg1
MSwweDI0LDB4NDksMHgyOCwweENBLDB4RkYsMHhERiwweEM2LDB4NTksMHg0NCwweDQ5LDB4QTAs
MHhFQiwweEZGLDB4NUYsCi0gICAgMHg4NSwweDUxLDB4MjMsMHg0MSwweEZFLDB4RkUsMHg3Miww
eDVFLDB4ODUsMHg1MSwweDIzLDB4NDksMHhBRiwweEFGLDB4QkYsMHhBRCwKLSAgICAweDY1LDB4
NDksMHgyMywweDQxLDB4RjQsMHhEOCwweEQ2LDB4NUYsMHg4NSwweDUxLDB4MjMsMHg0MSwweDhG
LDB4QkIsMHhBRiwweEY1LAotICAgIDB4QTUsMHg1MSwweDQ0LDB4NDksMHgzRCwweEZGLDB4RDcs
MHg1NywweEE1LDB4NTEsMHg0NCwweDQ5LDB4QjgsMHhBOCwweEFGLDB4RDUsCi0gICAgMHhBNiww
eDUxLDB4MjMsMHg0MSwweERGLDB4RkUsMHhGQywweERGLDB4NjQsMHg0OSwweDIzLDB4NDEsMHg1
RSwweEZDLDB4RkEsMHg1NywKLSAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4MkUsMHhCNywweDk0
LDB4OUEsMHhBNCwweDUxLDB4NDQsMHg0OSwweEE3LDB4MkYsMHhBNywweEVGLAotICAgIDB4RTUs
MHg2MSwweDg0LDB4NTEsMHgzRCwweDI5LDB4QUQsMHgzRiwweDI2LDB4NkEsMHhFNSwweDYxLDB4
QjksMHhFQSwweEExLDB4ODksCi0gICAgMHhBOCwweDdBLDB4QzUsMHg2MSwweDJBLDB4QkQsMHg1
NSwweDU1LDB4QTcsMHg4MiwweDA2LDB4NkEsMHgwMiwweEFCLDB4QjcsMHhGNSwKLSAgICAweEU4
LDB4OEEsMHg4NywweDdBLDB4OEYsMHgyQSwweDgyLDB4QjUsMHgwOSwweDhCLDB4QTcsMHg3QSww
eDhFLDB4RkYsMHhGRSwweDdBLAotICAgIDB4MTAsMHhDRCwweDA4LDB4OEIsMHgyRCwweDJELDB4
QkQsMHhCNSwweEY0LDB4RTUsMHgzMSwweENELDB4MDIsMHgwOSwweDBELDB4MkQsCi0gICAgMHgz
NSwweEU2LDB4RDMsMHhERCwweDBCLDB4QTUsMHhCRiwweDBBLDB4NTUsMHhFRSwweDM1LDB4RTYs
MHgzQiwweEJGLDB4MDksMHhBQSwKLSAgICAweDU1LDB4RUUsMHgxNCwweEU2LDB4ODAsMHhFMCww
eEZBLDB4NUUsMHgzNSwweEU2LDB4RDMsMHhERCwweDIwLDB4QTgsMHg2QSwweDVGLAotICAgIDB4
RDQsMHhERCwweEYwLDB4QzQsMHg3OCwweDc4LDB4NUUsMHg1RSwweDMxLDB4Q0QsMHhGMCwweEM0
LDB4Q0YsMHhBOSwweDIzLDB4MjIsCi0gICAgMHg1MSwweENELDB4MTAsMHhDNSwweEY3LDB4QjUs
MHhCNywweEE3LDB4RjQsMHhERCwweDUxLDB4Q0QsMHgzRCwweDM1LDB4MzUsMHhCRCwKLSAgICAw
eDU2LDB4RUUsMHhGNCwweERELDB4MDIsMHgwMiwweDAzLDB4MDksMHg5NiwweEVFLDB4NTUsMHhF
RSwweEQ1LDB4RkQsMHhFRiwweEI1LAotICAgIDB4OTYsMHhFRSwweDU2LDB4RUUsMHhCNywweDJC
LDB4MkEsMHgwMiwweEI2LDB4RjYsMHg3NiwweEVFLDB4QUYsMHhBQiwweEFBLDB4QUIsCi0gICAg
MHg5NiwweEVFLDB4NzYsMHhFRSwweDgwLDB4NzAsMHhDMCwweEVBLDB4NTUsMHhFRSwweDk2LDB4
RTYsMHhCRiwweEFCLDB4RUEsMHhBQiwKLSAgICAweDc1LDB4RUUsMHg1NSwweEU2LDB4NkYsMHhF
MCwweDgwLDB4MkUsMHg3NSwweEVFLDB4NTUsMHhFNiwweEFELDB4QzcsMHhGRiwweDdGLAotICAg
IDB4NzUsMHhFRSwweDU1LDB4RTYsMHhBQSwweEYwLDB4N0IsMHg3RiwweDc2LDB4RUUsMHgzNSww
eEU2LDB4QjIsMHhGQSwweEJCLDB4QkIsCi0gICAgMHg3NiwweEVFLDB4MzUsMHhFNiwweEE3LDB4
RDcsMHg2RSwweEVCLDB4NzYsMHhFRSwweDU1LDB4RTYsMHgyMCwweDIyLDB4MkYsMHgzRCwKLSAg
ICAweDc2LDB4RUUsMHg1NSwweEU2LDB4RTIsMHg1RiwweEFFLDB4Q0UsMHgzNSwweEVFLDB4NTUs
MHhFNiwweDc1LDB4RjUsMHhGRiwweDc3LAotICAgIDB4NzUsMHhFRSwweDU1LDB4RTYsMHg1Riww
eDVGLDB4RUYsMHhGRCwweDc1LDB4RUUsMHgzNSwweEU2LDB4NkIsMHhGQSwweEVBLDB4QUIsCi0g
ICAgMHg1NSwweEU2LDB4RjQsMHhERCwweDcyLDB4QTIsMHg4MCwweEEwLDB4NTYsMHhFRSwweEQz
LDB4RDUsMHg3NywweDJBLDB4MEEsMHg4OCwKLSAgICAweDU2LDB4RUUsMHg5MiwweEQ1LDB4NTcs
MHhGRSwweEUyLDB4MDAsMHgzNSwweEU2LDB4OTIsMHhENSwweEQ1LDB4NzcsMHhCQiwweDIwLAot
ICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHg3RSwweEVBLDB4Q0IsMHhBQSwweDY0LDB4NTksMHgy
MywweDU5LDB4MDMsMHgwMCwweDA4LDB4RkMsCi0gICAgMHg4NCwweDU5LDB4NDMsMHg1OSwweERG
LDB4QjUsMHgxNSwweEY1LDB4QTQsMHg2MSwweDQzLDB4NTksMHg3QiwweENBLDB4RUYsMHhGRiwK
LSAgICAweDg0LDB4NjEsMHg0MywweDU5LDB4RTIsMHgzQiwweEI3LDB4NzcsMHhBNCwweDYxLDB4
NDMsMHg1OSwweEYzLDB4QkYsMHhGRSwweEU2LAotICAgIDB4ODQsMHg2MSwweDYzLDB4NTksMHg1
NSwweDk3LDB4RkQsMHhDQSwweEE0LDB4NjEsMHg2MywweDU5LDB4QjIsMHhGNywweDdGLDB4N0Es
Ci0gICAgMHg4MywweDU5LDB4MjMsMHg1MSwweEE4LDB4QUUsMHhGRSwweEJELDB4ODQsMHg1OSww
eDQzLDB4NTEsMHhBRSwweEJGLDB4RkQsMHg3NSwKLSAgICAweEM0LDB4NjEsMHgyMiwweDUxLDB4
MEEsMHhGRiwweDVGLDB4N0YsMHgyNiwweDcyLDB4NDMsMHg1MSwweDAyLDB4QTcsMHhENSwweDU1
LAotICAgIDB4ODcsMHg3QSwweDQ0LDB4NTEsMHgwMiwweEFBLDB4QkQsMHg3NSwweDg3LDB4N0Es
MHhBNSwweDYxLDB4MEEsMHgyMCwweEFCLDB4RkQsCi0gICAgMHg4NywweDdBLDB4MjYsMHg3Miww
eDA4LDB4ODIsMHgwQiwweEJELDB4QTcsMHg3QSwweDQ2LDB4N0EsMHhGQywweEVBLDB4QkEsMHg3
RSwKLSAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4Q0EsMHhDQywweDhCLDB4RTksMHhBNywweDdB
LDB4NjYsMHg3QSwweEZFLDB4NzcsMHg2RiwweDcxLAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIs
MHhBQiwweDNDLDB4MUMsMHhCQSwweEE3LDB4ODIsMHg0NiwweDcyLDB4RUEsMHhFQSwweEVBLDB4
REIsCi0gICAgMHhBNywweDgyLDB4NjcsMHg3QSwweERELDB4NzcsMHhGQSwweDRCLDB4NjYsMHg4
MiwweDg3LDB4N0EsMHhENSwweDlGLDB4REYsMHhCNiwKLSAgICAweEE3LDB4ODIsMHg2NywweDdB
LDB4RkQsMHhCOSwweEFGLDB4RUIsMHhBNywweDgyLDB4NjcsMHg3QSwweDQzLDB4QUIsMHgyQiww
eEFCLAotICAgIDB4QTcsMHg4MiwweDY3LDB4N0EsMHhFOSwweDBCLDB4QUYsMHhGRCwweEE3LDB4
ODIsMHg2NiwweDdBLDB4RkUsMHg1RSwweDNGLDB4M0UsCi0gICAgMHhBNywweDgyLDB4NjYsMHg3
QSwweDk3LDB4RjcsMHhCQSwweEQ4LDB4QTcsMHg4MiwweDY3LDB4N0EsMHhCOCwweEZBLDB4QkUs
MHhCRSwKLSAgICAweEFCLDB4QTMsMHg4NywweDdBLDB4QjUsMHgyRCwweDJCLDB4MEIsMHgwQyww
eEFDLDB4QUIsMHhBMywweDhELDB4QUYsMHhCQSwweEFCLAotICAgIDB4RUMsMHhBQiwweEFCLDB4
QTMsMHgyMCwweEIwLDB4QUEsMHhGRCwweEVDLDB4QUIsMHhDQiwweEEzLDB4NUUsMHgwQiwweEVE
LDB4NEQsCi0gICAgMHhDQiwweEEzLDB4MDgsMHg4QiwweDY4LDB4NjgsMHg2MCwweEU4LDB4QTcs
MHg4MiwweEE1LDB4NTksMHg1RSwweDVDLDB4N0MsMHg2OCwKLSAgICAweDg0LDB4NTEsMHg0NCww
eDUxLDB4RTQsMHgzOCwweDlFLDB4NUUsMHg2NCwweDQ5LDB4MDIsMHg0MSwweDc4LDB4RTgsMHhG
MCwweDY4LAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhFMiwweENBLDB4RTgsMHhDMCwweEUy
LDB4MzgsMHhDMiwweDMwLDB4NTcsMHg1NiwweDc2LDB4NTIsCi0gICAgMHhDMiwweDMwLDB4QTIs
MHgyOCwweDI3LDB4MEEsMHgyQywweDI0LDB4QzMsMHgzOCwweEEyLDB4MjgsMHhCQSwweEJBLDB4
QjAsMHhBQSwKLSAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4RkYsMHhCMiwweEEwLDB4RTIsMHhF
MywweDMwLDB4QTIsMHgzMCwweEFCLDB4RUUsMHhFRSwweEFBLAotICAgIDB4NjUsMHg0OSwweEMz
LDB4MzAsMHg1NSwweEQ1LDB4QkQsMHgyQiwweDY1LDB4NDksMHhFMywweDM4LDB4RkQsMHhGRiww
eEVBLDB4QTAsCi0gICAgMHg0NCwweDQxLDB4RTMsMHgzOCwweDc3LDB4RkUsMHhGQiwweEEyLDB4
MjQsMHg0MSwweDAzLDB4MzksMHhGNywweEZCLDB4MkMsMHgyOCwKLSAgICAweDQ0LDB4NDEsMHgw
MywweDQxLDB4RjIsMHhGQSwweEVGLDB4OEQsMHg0NCwweDQxLDB4MDMsMHgzOSwweDhCLDB4RUUs
MHhCNywweEE3LAotICAgIDB4NDQsMHg0MSwweEUzLDB4MzgsMHhGNiwweEFBLDB4QUEsMHgwQSww
eDQ0LDB4NDEsMHgwMywweDQxLDB4RjMsMHg2MiwweDZELDB4NUYsCi0gICAgMHgyNCwweDQxLDB4
QzIsMHgzOCwweDAyLDB4RUEsMHhGQSwweDdFLDB4MDMsMHg0MSwweEMzLDB4MzgsMHhFOCwweEJG
LDB4MkYsMHgwQiwKLSAgICAweDg1LDB4NDksMHhFMywweDM4LDB4MjksMHhBRiwweEFCLDB4QkYs
MHg4NSwweDQ5LDB4MDMsMHg0MSwweEY4LDB4N0EsMHhGQSwweEZBLAotICAgIDB4NDQsMHg0OSww
eEUzLDB4MzgsMHg1NSwweEZGLDB4RUEsMHgyQSwweDY0LDB4NDksMHhFMywweDM4LDB4REQsMHg5
NSwweEY1LDB4RjgsCi0gICAgMHg0MywweDQ5LDB4RTMsMHgzOCwweDc1LDB4N0QsMHhGRSwweDhB
LDB4MjMsMHg0MSwweEUzLDB4MzgsMHg3RCwweEY3LDB4RTIsMHg4MCwKLSAgICAweDI0LDB4NDEs
MHhDMiwweDMwLDB4ODMsMHhFQSwweDdGLDB4QjcsMHg2NCwweDQ5LDB4MDMsMHgzOSwweDAzLDB4
MjksMHhCRCwweEI1LAotICAgIDB4NDQsMHg0MSwweDAzLDB4NDEsMHg1NiwweDVDLDB4RjcsMHhF
RiwweDI0LDB4NDEsMHhDMiwweDMwLDB4ODIsMHhGMiwweDc4LDB4RkUsCi0gICAgMHgyNCwweDQx
LDB4QzMsMHgzOCwweEFDLDB4QkYsMHhCRCwweEJGLDB4MjQsMHg0MSwweEUzLDB4MzgsMHgwQiww
eDhFLDB4MjksMHgwRiwKLSAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4RTYsMHg4OCwweDgwLDB4
MDAsMHgyNCwweDQxLDB4RTMsMHgzOCwweDhGLDB4QUYsMHhBRiwweEZCLAotICAgIDB4NjQsMHg0
OSwweDAzLDB4NDEsMHhGNSwweEZELDB4MEQsMHgyOSwweDg1LDB4NTEsMHgyNCwweDQxLDB4RjUs
MHhENSwweEJFLDB4MkEsCi0gICAgMHg4NSwweDUxLDB4MDMsMHg0MSwweEY3LDB4RkYsMHhFRSww
eEEwLDB4NjQsMHg0OSwweDIzLDB4NDEsMHg3RSwweDUyLDB4REIsMHg3NSwKLSAgICAweDI0LDB4
NDksMHgwMywweDQxLDB4M0QsMHhGRCwweDY5LDB4QzIsMHg2NSwweDUxLDB4MDMsMHg0MSwweEZG
LDB4QUQsMHhBOSwweEFBLAotICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHhFQiwweEZFLDB4Njgs
MHhGRSwweDI0LDB4NDksMHhDMiwweDM4LDB4RjcsMHhGNiwweEVBLDB4RUEsCi0gICAgMHgwMyww
eDQxLDB4RTIsMHg0MCwweEE1LDB4MDUsMHgyNSwweDNBLDB4ODUsMHg1MSwweDAzLDB4NDEsMHhB
RCwweDNELDB4MkQsMHgzNSwKLSAgICAweEE1LDB4NTEsMHg2NCwweDUxLDB4QUYsMHhFMiwweDQz
LDB4RUEsMHg4NSwweDUxLDB4MjMsMHg0OSwweDQyLDB4QzgsMHg2OCwweEE4LAotICAgIDB4NDQs
MHg0OSwweDAzLDB4NDEsMHhBQSwweDdELDB4RDUsMHhGQSwweDQ0LDB4NDksMHgwMywweDQxLDB4
QTYsMHg1NywweEY3LDB4OTcsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweEE4LDB4QjksMHg3
RiwweDVGLDB4NjQsMHg0OSwweDAzLDB4NDEsMHhBMCwweDJGLDB4QUQsMHg1NSwKLSAgICAweDQ0
LDB4NDksMHhFMywweDM4LDB4RjgsMHhFOCwweEFBLDB4REYsMHg2NCwweDQ5LDB4MDMsMHg0MSww
eDBGLDB4MjksMHgyNywweEY1LAotICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHhGRSwweEJGLDB4
QTAsMHhBMCwweDY0LDB4NDksMHgyNCwweDQxLDB4QjcsMHhGRiwweEJFLDB4RkEsCi0gICAgMHg2
NCwweDQ5LDB4MjMsMHg0MSwweEZFLDB4OTcsMHhGNywweDVBLDB4ODUsMHg0OSwweDIzLDB4NDEs
MHhFRCwweENFLDB4RkYsMHg3RCwKLSAgICAweDQ0LDB4NDEsMHgwMywweDQxLDB4QUEsMHg3OCww
eDdBLDB4NkUsMHgyMywweDQxLDB4RTMsMHgzOCwweDBBLDB4QUYsMHg4QSwweDAwLAotICAgIDB4
NjQsMHg0OSwweDAzLDB4NDEsMHhBRSwweDg5LDB4MkQsMHhBQiwweEE0LDB4NTEsMHg0NCwweDQ5
LDB4QkQsMHhGNSwweDlGLDB4MjksCi0gICAgMHgwNiwweDZBLDB4ODQsMHg1MSwweDJCLDB4QUYs
MHg4RCwweEFGLDB4NDcsMHg3MiwweEU1LDB4NjEsMHhBRCwweENCLDB4MkIsMHgwQiwKLSAgICAw
eDY3LDB4NzIsMHhFNiwweDYxLDB4NTcsMHg3RSwweEYyLDB4QTIsMHg2NiwweDcyLDB4RTYsMHg2
OSwweDNELDB4QUQsMHhCRiwweDJFLAotICAgIDB4QzgsMHg4MiwweDQ2LDB4NzIsMHgyOSwweDI5
LDB4QUQsMHgyRCwweEU4LDB4ODIsMHhBOCwweDgyLDB4NUMsMHg3RSwweDZCLDB4MjcsCi0gICAg
MHgyQywweEFDLDB4QzgsMHg4MiwweDNELDB4QjUsMHhGNSwweEQ1LDB4QjMsMHhERCwweEFCLDB4
OUIsMHgwMiwweDBCLDB4MDksMHgyRCwKLSAgICAweDU1LDB4RUUsMHhGNCwweEU1LDB4MEEsMHgy
RiwweEVGLDB4RkQsMHg1NSwweEVFLDB4RjQsMHhFNSwweDI4LDB4QTIsMHhGQiwweDVGLAotICAg
IDB4MzUsMHhFNiwweEIzLDB4RDUsMHhBMCwweEVBLDB4N0UsMHg3RiwweEY0LDB4REQsMHg1Miww
eENELDB4RTgsMHhFOCwweDdBLDB4N0EsCi0gICAgMHg1MiwweENELDB4RjAsMHhDNCwweEZDLDB4
RkEsMHg3RSwweEZGLDB4MzEsMHhDRCwweDEwLDB4QzUsMHhCNSwweEFGLDB4MDksMHg4MywKLSAg
ICAweDUxLDB4Q0QsMHgzMSwweEM1LDB4QjUsMHhFQiwweEJGLDB4NjksMHhCMiwweEQ1LDB4MzAs
MHhDRCwweDJGLDB4QUYsMHhBNywweEJELAotICAgIDB4NTYsMHhFRSwweEQzLDB4REQsMHgwQiww
eDBELDB4MkQsMHgzNSwweDk2LDB4RUUsMHg1NiwweEVFLDB4QjcsMHhBQiwweEFCLDB4MkIsCi0g
ICAgMHhCNiwweEY2LDB4NzYsMHhFRSwweDc3LDB4RkQsMHhGRiwweDJGLDB4QjYsMHhGNiwweDk2
LDB4RUUsMHhERCwweEI1LDB4QjcsMHhGOSwKLSAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4NDgs
MHhGOCwweDVDLDB4OEEsMHg5NiwweEVFLDB4MzUsMHhFNiwweEFBLDB4RUEsMHgyQSwweEEwLAot
ICAgIDB4NTUsMHhFRSwweDc1LDB4RTYsMHhFQSwweEVFLDB4RUEsMHhBRiwweDU1LDB4RUUsMHg3
NSwweEU2LDB4QUEsMHhCQSwweEFBLDB4QTIsCi0gICAgMHg3NiwweEVFLDB4MzUsMHhFNiwweEFE
LDB4QUEsMHhCQiwweEZFLDB4NTUsMHhFRSwweDU1LDB4RTYsMHhGRiwweEVGLDB4RkYsMHhGRiwK
LSAgICAweDU2LDB4RUUsMHg1NSwweEU2LDB4RkYsMHhGRiwweEJGLDB4OUIsMHg3NSwweEVFLDB4
MzUsMHhFNiwweDhFLDB4RkEsMHhGRSwweEFBLAotICAgIDB4NTYsMHhFRSwweDc1LDB4RTYsMHg5
RSwweEFBLDB4QUEsMHhFQiwweDc2LDB4RUUsMHg1NSwweEU2LDB4REYsMHg3MywweEZBLDB4QTAs
Ci0gICAgMHg5NiwweEVFLDB4NTUsMHhFNiwweDU1LDB4NTUsMHhGRCwweEE4LDB4OTYsMHhFRSww
eDM1LDB4RTYsMHhERiwweEZGLDB4RkEsMHg4MiwKLSAgICAweDk2LDB4RUUsMHgzNSwweEU2LDB4
NUYsMHhERiwweEJBLDB4MEIsMHg3NiwweEVFLDB4MzUsMHhFNiwweEZGLDB4QkYsMHgyMCwweDAw
LAotICAgIDB4NzYsMHhFRSwweDU2LDB4RTYsMHg3NSwweDhGLDB4MEIsMHhBQSwweDc2LDB4RUUs
MHgzNSwweEU2LDB4NTUsMHhGRiwweEU4LDB4NUMsCi0gICAgMHg2MywweDU5LDB4MjMsMHg1MSww
eDAwLDB4QTMsMHhBQiwweEJGLDB4NjQsMHg1OSwweDIzLDB4NTEsMHg5RSwweEIzLDB4MkUsMHgw
RiwKLSAgICAweDg1LDB4NjEsMHg0NCwweDU5LDB4RjksMHhEQSwweEVGLDB4OEEsMHg4NCwweDU5
LDB4NDMsMHg1OSwweEFGLDB4Q0QsMHhCNSwweEY3LAotICAgIDB4ODQsMHg2MSwweDQzLDB4NTks
MHhEQSwweDgyLDB4NkUsMHhBQiwweDg0LDB4NTksMHg0MywweDU5LDB4RDQsMHhCRCwweDlBLDB4
QjgsCi0gICAgMHg4NCwweDU5LDB4NDMsMHg1OSwweDIwLDB4OEIsMHg4OCwweDY4LDB4ODQsMHg1
OSwweDIyLDB4NTEsMHhDQSwweDdBLDB4N0UsMHg1NywKLSAgICAweDQzLDB4NTEsMHgyMiwweDUx
LDB4OEIsMHhERiwweEVBLDB4NDgsMHg2MywweDUxLDB4MjIsMHg1MSwweERFLDB4NUYsMHhFQiww
eDZCLAotICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHhCQSwweEFCLDB4N0YsMHhEOSwweDQ0LDB4
NTksMHgwMywweDQ5LDB4OTcsMHgzRiwweEE3LDB4MkYsCi0gICAgMHg2NCwweDUxLDB4MDIsMHg0
OSwweDBCLDB4QUUsMHhFQSwweDlBLDB4ODUsMHg2MSwweDIzLDB4NTEsMHgyQSwweDlGLDB4QkYs
MHg4RCwKLSAgICAweDI2LDB4NzIsMHg0MywweDU5LDB4MDIsMHhFQiwweEY1LDB4RkQsMHg2Niww
eDdBLDB4ODQsMHg2MSwweDgwLDB4QUYsMHhGNSwweDU1LAotICAgIDB4NjYsMHg3QSwweEE0LDB4
NjEsMHgwMCwweDBBLDB4MkIsMHhGNSwweDg3LDB4N0EsMHgyNiwweDdBLDB4MjIsMHhFQSwweDBB
LDB4QjksCi0gICAgMHhBNywweDgyLDB4NjcsMHg3QSwweEZGLDB4N0UsMHg3NywweEQ3LDB4ODcs
MHg3QSwweDY3LDB4N0EsMHgyNSwweDAwLDB4MkIsMHg1OSwKLSAgICAweEE3LDB4ODIsMHg2Niww
eDdBLDB4RUIsMHg5QSwweEY4LDB4RUIsMHhBOCwweDgyLDB4NjcsMHg3QSwweEExLDB4NkYsMHhB
OSwweDBGLAotICAgIDB4QTgsMHg4MiwweDQ2LDB4N0EsMHhDMiwweDg3LDB4MkUsMHhGRSwweEE4
LDB4ODIsMHg2NiwweDdBLDB4N0UsMHhFQywweEE4LDB4QUEsCi0gICAgMHhDOCwweDgyLDB4ODcs
MHg3QSwweDVELDB4RkIsMHhBRiwweEI1LDB4QTcsMHg4MiwweDg3LDB4N0EsMHhCNywweERBLDB4
OTYsMHgxNiwKLSAgICAweEM4LDB4ODIsMHg2NiwweDdBLDB4REMsMHhGRSwweEZFLDB4RUUsMHg4
QiwweEEzLDB4ODcsMHg4MiwweEQ1LDB4RjUsMHg5RCwweDNGLAotICAgIDB4RUMsMHhBQiwweDRB
LDB4OTMsMHgyRCwweDA5LDB4OEIsMHhBMiwweEVCLDB4QUIsMHhBQiwweEEzLDB4QUEsMHhCRSww
eDc2LDB4NUYsCi0gICAgMHhDQywweEEzLDB4QUIsMHhBMywweDk1LDB4OTUsMHg2RSwweEFCLDB4
RUIsMHhBQiwweEFCLDB4QTMsMHhDQSwweEFELDB4RDksMHg1NywKLSAgICAweENCLDB4QTMsMHgw
OCwweDhCLDB4RTAsMHhDMCwweDY4LDB4NjAsMHhFOCwweDgyLDB4ODQsMHg1OSwweEY4LDB4Rjgs
MHg3OCwweDdFLAotICAgIDB4ODQsMHg1OSwweDIzLDB4NDksMHg3QywweEQ4LDB4N0EsMHg1MCww
eDQzLDB4NDksMHhFMiwweDQwLDB4RTAsMHhFOCwweEJGLDB4N0YsCi0gICAgMHg0NCwweDQ5LDB4
RTIsMHgzOCwweDdFLDB4QUEsMHg4QSwweDBBLDB4MDMsMHg0MSwweEMyLDB4MzAsMHg1NywweDdG
LDB4N0UsMHg3OCwKLSAgICAweEMyLDB4MzAsMHhBMSwweDMwLDB4MEUsMHgwQiwweDNGLDB4MTUs
MHhFMywweDM4LDB4QTIsMHgyOCwweEVGLDB4QkEsMHhGOCwweEYwLAotICAgIDB4QzIsMHgzMCww
eEEyLDB4MjgsMHgwMiwweDBBLDB4MkEsMHgwMywweDAzLDB4MzksMHhDMiwweDMwLDB4QTMsMHgz
QiwweEJGLDB4QkYsCi0gICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweEFCLDB4REQsMHhCRiwweDJC
LDB4NDQsMHg0OSwweDI0LDB4NDEsMHhDMiwweDZELDB4QUIsMHgwMiwKLSAgICAweDQ0LDB4NDks
MHgyNCwweDQxLDB4QzksMHhFQSwweEUwLDB4QzAsMHg0NCwweDQxLDB4MDMsMHgzOSwweEFBLDB4
RUIsMHg3RiwweEVFLAotICAgIDB4NDQsMHg0MSwweDAzLDB4NDEsMHgzNiwweEJDLDB4MkQsMHgw
MCwweDQ0LDB4NDksMHhFMywweDM4LDB4QUEsMHhCQSwweDY4LDB4QUEsCi0gICAgMHg0NSwweDQx
LDB4RTMsMHgzOCwweDhBLDB4QkUsMHg1RiwweDVGLDB4MjQsMHg0MSwweEMyLDB4MzgsMHhGOCww
eEU4LDB4RkEsMHhBNywKLSAgICAweDQ0LDB4NDksMHhFMywweDM4LDB4RjUsMHhENSwweEE1LDB4
MEYsMHg2NCwweDQ5LDB4RTMsMHgzOCwweEY3LDB4QkYsMHhBQSwweEFBLAotICAgIDB4NDQsMHg0
OSwweDAzLDB4NDEsMHgxNywweDlBLDB4NTgsMHhGQSwweDY0LDB4NTEsMHgwMywweDQxLDB4RkEs
MHhBMiwweDBGLDB4MEQsCi0gICAgMHg4NSwweDUxLDB4MjQsMHg0OSwweEFELDB4QkYsMHhCRiww
eDNCLDB4NjQsMHg0OSwweDI0LDB4NDEsMHg3RSwweEVDLDB4NzgsMHg3MCwKLSAgICAweDg1LDB4
NTEsMHgyMywweDQxLDB4RkIsMHhFQSwweDJELDB4QTUsMHg4NSwweDUxLDB4MjMsMHg0MSwweDU3
LDB4N0YsMHhFQSwweENBLAotICAgIDB4MjQsMHg0MSwweEMyLDB4MzgsMHhGNiwweEI3LDB4RkUs
MHhFOCwweDQ0LDB4NDEsMHhDMiwweDM4LDB4MEIsMHg4QSwweDBCLDB4QTksCi0gICAgMHg0NCww
eDQxLDB4MjMsMHg0MSwweDU3LDB4NUYsMHhFQiwweDU1LDB4MjMsMHg0MSwweEUzLDB4MzgsMHhE
QywweDY4LDB4RkEsMHhGRSwKLSAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4QkQsMHhERiwweDc5
LDB4RkEsMHgyNCwweDQxLDB4MDMsMHgzOSwweDBBLDB4MDksMHgwRCwweDA1LAotICAgIDB4NDUs
MHg0OSwweEUzLDB4MzgsMHhFQSwweDZBLDB4N0IsMHhGNywweDAzLDB4NDEsMHhFMywweDM4LDB4
MzcsMHgwOSwweDhELDB4MkYsCi0gICAgMHg4NSwweDQ5LDB4MDMsMHg0MSwweDI1LDB4M0QsMHhC
RCwweDI3LDB4QzYsMHg1OSwweDY0LDB4NDksMHhGRCwweEE5LDB4Q0IsMHgwMywKLSAgICAweEE1
LDB4NTEsMHgyMywweDQxLDB4RjAsMHg3RSwweERFLDB4RkEsMHg0NCwweDQ5LDB4RTIsMHg0MCww
eERBLDB4NUUsMHg1QywweEQ4LAotICAgIDB4MjQsMHg0OSwweEUyLDB4NDAsMHgyQiwweDM3LDB4
M0YsMHhCQiwweDg1LDB4NTEsMHgyNCwweDQ5LDB4RkYsMHhGRCwweEFBLDB4ODEsCi0gICAgMHg2
NSwweDUxLDB4MDMsMHg0MSwweDdBLDB4QzIsMHhFOCwweEUwLDB4NDQsMHg0OSwweDAzLDB4NDEs
MHg3RSwweERFLDB4QUYsMHhBQSwKLSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4RDUsMHg3Nyww
eEZBLDB4RTIsMHg4NSwweDUxLDB4MjMsMHg0OSwweDFELDB4QUIsMHhBRCwweEFELAotICAgIDB4
ODUsMHg1MSwweDQ0LDB4NDksMHhFOCwweDdBLDB4REMsMHhFMiwweDY0LDB4NDksMHgwMywweDQx
LDB4RkYsMHhGRiwweDdCLDB4RkMsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEFCLDB4MjMs
MHgyQiwweDlBLDB4NjQsMHg0OSwweDAzLDB4NDEsMHhENywweEZFLDB4ODgsMHhBQiwKLSAgICAw
eDIzLDB4NDEsMHgwMywweDM5LDB4ODAsMHg4MiwweEVFLDB4QzQsMHgyMywweDQxLDB4RTMsMHgz
OCwweEFFLDB4OUYsMHhGQiwweDc4LAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzgsMHhCOCwweEJG
LDB4RUYsMHhBNSwweDY1LDB4NDksMHhFMywweDM4LDB4QkYsMHgzNywweEY1LDB4RDcsCi0gICAg
MHg4NSwweDQ5LDB4MjQsMHg0MSwweEZBLDB4MkIsMHhBRiwweEY1LDB4NjQsMHg0OSwweDAzLDB4
NDEsMHgyOCwweEFBLDB4RUEsMHhGQSwKLSAgICAweDY0LDB4NDksMHgwMywweDM5LDB4QjIsMHhG
QSwweDdBLDB4N0QsMHg0NCwweDQxLDB4RTIsMHgzOCwweDJBLDB4ODgsMHhBRiwweEI3LAotICAg
IDB4NDQsMHg0MSwweDAzLDB4NDEsMHhGRSwweEUyLDB4RUUsMHg2NSwweDQ0LDB4NDksMHgwMyww
eDQxLDB4QTksMHgwQiwweDA3LDB4QjUsCi0gICAgMHhBNSwweDUxLDB4MjMsMHg0MSwweEZELDB4
QkIsMHgyQiwweEFCLDB4QzUsMHg1OSwweDQ0LDB4NDksMHhBOSwweDI1LDB4QjgsMHhDOCwKLSAg
ICAweDI3LDB4NkEsMHg4NSwweDUxLDB4QUYsMHgyQiwweEJELDB4RkQsMHg2NywweDcyLDB4RTYs
MHg2MSwweEVCLDB4QUEsMHgyMSwweDI1LAotICAgIDB4QTgsMHg3QSwweDI2LDB4NkEsMHhFNSww
eEZGLDB4QUUsMHgwQSwweEE4LDB4ODIsMHgyNiwweDZBLDB4RDUsMHhGRiwweDBFLDB4MjIsCi0g
ICAgMHhBOCwweDgyLDB4NjcsMHg3MiwweEJGLDB4REIsMHhGQiwweDZBLDB4RTksMHg4MiwweDY3
LDB4N0EsMHhBRiwweEFCLDB4QUQsMHhBRiwKLSAgICAweDA5LDB4OEIsMHhBOCwweDgyLDB4MEIs
MHgyQSwweDE2LDB4M0QsMHhFRiwweEM0LDB4MjksMHg5MywweDJELDB4QjUsMHhCNSwweEY1LAot
ICAgIDB4RjQsMHhFNSwweDZFLDB4QjQsMHgwMiwweDAyLDB4MEIsMHgyRCwweDE1LDB4RTYsMHhE
NCwweERELDB4RTgsMHhGQSwweDdBLDB4RkIsCi0gICAgMHgxNSwweEU2LDB4RDQsMHhERCwweDdG
LDB4QkYsMHg4MywweDAzLDB4RDQsMHhERCwweDMxLDB4QzUsMHg3MCwweDcwLDB4RDAsMHg1OCwK
LSAgICAweDMxLDB4Q0QsMHhGMCwweEM0LDB4QUEsMHhBQSwweEVFLDB4N0QsMHgzMSwweENELDB4
RjAsMHhCQywweEFBLDB4RUEsMHgzQiwweEFELAotICAgIDB4NTEsMHhDRCwweDEwLDB4Q0QsMHg4
MywweDI5LDB4NkUsMHhBQSwweDcyLDB4Q0QsMHgzMSwweENELDB4QTcsMHhDRiwweEJGLDB4QUQs
Ci0gICAgMHgxNSwweEU2LDB4NzIsMHhENSwweDA5LDB4MDksMHgyRCwweDI1LDB4OTYsMHhFRSww
eDM1LDB4RTYsMHgwQiwweDJBLDB4MEIsMHgwOSwKLSAgICAweEI2LDB4RjYsMHg3NiwweEVFLDB4
MkUsMHhCRiwweEI5LDB4RkYsMHhCNywweEY2LDB4OTYsMHhFRSwweEJGLDB4QUYsMHhENSwweDU1
LAotICAgIDB4QjYsMHhGNiwweDc2LDB4RUUsMHhGNywweEZGLDB4RkYsMHhBQiwweDk2LDB4RUUs
MHg1NSwweEU2LDB4QjAsMHg2QSwweDJBLDB4MDAsCi0gICAgMHhCNiwweEY2LDB4NTUsMHhFNiww
eEZGLDB4RkYsMHhBRiwweDIyLDB4QjYsMHhGNiwweDU1LDB4RTYsMHhGNSwweEZGLDB4QUEsMHhB
MiwKLSAgICAweEI2LDB4RjYsMHg1NSwweEU2LDB4NzcsMHhGRiwweEFBLDB4MjAsMHhCNiwweEY2
LDB4NzYsMHhFRSwweEQ1LDB4QkYsMHhBOCwweEEyLAotICAgIDB4QjcsMHhGNiwweDc2LDB4RUUs
MHg1NywweEJBLDB4QUEsMHhFOCwweDk2LDB4RjYsMHg3NiwweEVFLDB4MzksMHhBQSwweDI4LDB4
RDcsCi0gICAgMHhCNiwweEY2LDB4NTUsMHhFNiwweEJFLDB4OEEsMHhFQSwweDdFLDB4OTYsMHhF
RSwweDM1LDB4RTYsMHgyMCwweDAyLDB4MkEsMHg3RCwKLSAgICAweEI3LDB4RjYsMHgxNSwweEU2
LDB4MkEsMHhBOCwweEVBLDB4N0YsMHhCNywweEY2LDB4MTUsMHhERSwweEEwLDB4QTgsMHhFRSww
eDU1LAotICAgIDB4NzYsMHhFRSwweEIzLDB4RDUsMHgwMCwweDAwLDB4QUEsMHg3RiwweDU2LDB4
RUUsMHg3MiwweENELDB4MDAsMHgyMCwweEZBLDB4NTcsCi0gICAgMHg1NSwweEVFLDB4OTMsMHhD
RCwweDgwLDB4RkUsMHg3NywweDU1LDB4RjQsMHhERCwweDcyLDB4Q0QsMHhDMCwweDdCLDB4NTUs
MHg1NSwKLSAgICAweDg0LDB4NTksMHgyMiwweDUxLDB4RkYsMHhFQSwweDYzLDB4N0IsMHg2NCww
eDU5LDB4MjIsMHg1MSwweDNGLDB4MEYsMHgyNSwweDJGLAotICAgIDB4ODQsMHg2MSwweDY0LDB4
NTksMHhGQiwweDJBLDB4RTksMHg3RiwweDg0LDB4NjEsMHgyMywweDUxLDB4RkMsMHhBQywweEY4
LDB4RTAsCi0gICAgMHg4NCwweDU5LDB4NDMsMHg1OSwweEFBLDB4QUIsMHgyQiwweDA3LDB4QTQs
MHg2MSwweDQzLDB4NTEsMHhBQSwweEFBLDB4ODgsMHg3RSwKLSAgICAweDg0LDB4NTksMHgyMiww
eDUxLDB4NkEsMHhFOCwweEFGLDB4QjksMHg4NCwweDU5LDB4MjIsMHg1MSwweEQ3LDB4RjcsMHgz
RiwweEVGLAotICAgIDB4NDMsMHg1MSwweDIyLDB4NTEsMHg1OCwweDNDLDB4RDgsMHgyMCwweDQz
LDB4NTEsMHgyMiwweDQ5LDB4NzgsMHg3QSwweDBELDB4MkUsCi0gICAgMHg2MywweDU5LDB4MjIs
MHg1MSwweDVELDB4NzUsMHhBNywweDJBLDB4NjQsMHg1OSwweDIzLDB4NTEsMHhGRCwweEQ5LDB4
RkEsMHhBQSwKLSAgICAweDg0LDB4NjEsMHgyMywweDUxLDB4NTcsMHhGNywweEU3LDB4QUYsMHg4
NCwweDYxLDB4NjQsMHg1OSwweDE5LDB4QTksMHhCOSwweDgxLAotICAgIDB4QTQsMHg2MSwweDY0
LDB4NTksMHhCNSwweEVGLDB4RkQsMHhGQiwweDg0LDB4NjEsMHg2NCwweDU5LDB4N0EsMHgyRSww
eEI0LDB4MUUsCi0gICAgMHhBNCwweDYxLDB4NjQsMHg1OSwweEZGLDB4N0QsMHg2RSwweEVCLDB4
MDYsMHg3MiwweDYzLDB4NTksMHgwQiwweEVCLDB4RkQsMHg3NSwKLSAgICAweDY3LDB4N0EsMHg2
MywweDU5LDB4MDIsMHhBQiwweEY1LDB4NTcsMHg2NywweDdBLDB4ODQsMHg2MSwweDAwLDB4MDAs
MHgwQiwweEY1LAotICAgIDB4ODgsMHg4MiwweDA2LDB4NzIsMHgwOCwweDhBLDB4QUEsMHhBOSww
eDY3LDB4ODIsMHg4NywweDdBLDB4NzcsMHhEQywweERFLDB4RkIsCi0gICAgMHg4NywweDgyLDB4
NjcsMHg3QSwweDVDLDB4RkYsMHhCRiwweDBCLDB4QTcsMHg4MiwweDY3LDB4N0EsMHhBQSwweEE1
LDB4QjYsMHhBNiwKLSAgICAweEE3LDB4ODIsMHg2NywweDdBLDB4MkUsMHgyQSwweDZCLDB4RkYs
MHhBNywweDgyLDB4ODcsMHg3QSwweDJELDB4MDUsMHhGRCwweDdFLAotICAgIDB4MDgsMHg4Qiww
eDg3LDB4N0EsMHhENSwweEZGLDB4QkYsMHgzRCwweEVDLDB4QUIsMHhFOCwweDhBLDB4QTUsMHgy
RCwweDJCLDB4MEIsCi0gICAgMHhFQiwweEFCLDB4QUIsMHhBMywweDZBLDB4RkEsMHhEMCwweEJG
LDB4Q0IsMHhBMywweDhBLDB4QTMsMHhBQSwweEJGLDB4RUYsMHhBOCwKLSAgICAweENCLDB4QTMs
MHg2QywweEEzLDB4OEEsMHhBOCwweDhFLDB4QUEsMHhDQiwweEEzLDB4OEIsMHhBMywweDg4LDB4
RTksMHhBQiwweDhCLAotICAgIDB4Q0IsMHhBMywweDQ5LDB4OTMsMHg3OCwweEEyLDB4ODgsMHhB
QSwweDI5LDB4OEIsMHgwNiwweDZBLDB4NUUsMHg3OCwweDcwLDB4RTAsCi0gICAgMHhFNiwweDYx
LDB4NDMsMHg1MSwweDVFLDB4RUMsMHhGOCwweEU4LDB4NjQsMHg1MSwweEMyLDB4MzgsMHg3RSww
eDdFLDB4NzgsMHhFMCwKLSAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4MEIsMHhBRiwweEFGLDB4
RjcsMHgwMywweDQxLDB4QzIsMHgzOCwweDcwLDB4NkYsMHg3RSwweDU3LAotICAgIDB4RTMsMHgz
OCwweEExLDB4MzAsMHg5NSwweEJGLDB4RkEsMHhCQSwweEUyLDB4MzgsMHhBMiwweDMwLDB4N0Us
MHhGRiwweEFCLDB4MkEsCi0gICAgMHgwMywweDM5LDB4QTIsMHgzMCwweEQ1LDB4RDcsMHhGQiww
eEJDLDB4MjMsMHg0MSwweEUzLDB4MzgsMHhGNSwweEI1LDB4QUQsMHhCRCwKLSAgICAweDY0LDB4
NDksMHgwMywweDQxLDB4MkQsMHgyRCwweDNGLDB4QkYsMHhBNiwweDUxLDB4NDQsMHg0OSwweDU3
LDB4NUYsMHg3RiwweEUzLAotICAgIDB4NjQsMHg0OSwweDI0LDB4NDEsMHhFQiwweEFBLDB4QkUs
MHhCQSwweDg1LDB4NDksMHgyNCwweDQxLDB4QjcsMHhENywweDhCLDB4MEIsCi0gICAgMHg4NSww
eDUxLDB4MjQsMHg0MSwweEZBLDB4N0UsMHhEOCwweDU4LDB4NDQsMHg0MSwweEUzLDB4NDAsMHg4
RSwweDNCLDB4MkIsMHhBOSwKLSAgICAweDQ0LDB4NDksMHhFMywweDM4LDB4N0UsMHhEOCwweEVF
LDB4QUEsMHgyMywweDQxLDB4RTIsMHgzOCwweEE1LDB4M0YsMHg5RSwweDNGLAotICAgIDB4QTUs
MHg1MSwweDAzLDB4NDEsMHgyRCwweDJGLDB4MkIsMHgyRiwweEE1LDB4NTEsMHgyMywweDQ5LDB4
NzgsMHg3OCwweEUwLDB4QTAsCi0gICAgMHg2NCwweDUxLDB4MDMsMHg0OSwweEZGLDB4QUQsMHhG
NiwweEZDLDB4ODUsMHg1MSwweDI0LDB4NDksMHhGNSwweDY1LDB4QUYsMHgwRiwKLSAgICAweEE1
LDB4NTEsMHg2NCwweDUxLDB4MzUsMHhCNSwweERGLDB4OTgsMHhBNSwweDU5LDB4MjQsMHg0OSww
eDdDLDB4RjgsMHhFMiwweDhBLAotICAgIDB4NjQsMHg1MSwweDI0LDB4NDksMHgxNywweEQ3LDB4
QkUsMHhFOCwweEE1LDB4NTEsMHg0NCwweDQ5LDB4RUYsMHgyRiwweDNELDB4MzcsCi0gICAgMHg4
NSwweDUxLDB4MDMsMHgzOSwweDVGLDB4N0UsMHg1OCwweDc4LDB4MjQsMHg0MSwweEMyLDB4Mzgs
MHg4QSwweEFBLDB4RUEsMHg3RiwKLSAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4QkUsMHhCRCww
eEY1LDB4RDUsMHgwMywweDM5LDB4QTIsMHgzMCwweEEwLDB4MDgsMHgyQSwweDI4LAotICAgIDB4
MjMsMHg0MSwweEUzLDB4MzgsMHhERiwweEJGLDB4RUEsMHg3MiwweDIzLDB4NDEsMHhFMywweDM4
LDB4NkEsMHhGQywweEVFLDB4RkYsCi0gICAgMHgyMywweDQxLDB4RTIsMHgzOCwweENGLDB4MDMs
MHg4QSwweERBLDB4MjQsMHg0MSwweEUzLDB4MzgsMHg5NywweDE0LDB4QkIsMHg3OSwKLSAgICAw
eDg1LDB4NTEsMHhFMywweDM4LDB4QTcsMHhCRiwweEVGLDB4QjUsMHhDNiwweDU5LDB4NjUsMHg0
OSwweDJCLDB4QUYsMHhBRCwweEZGLAotICAgIDB4ODQsMHg1MSwweDQ0LDB4NDksMHg3QywweDU0
LDB4NTQsMHg3RiwweDQ0LDB4NDksMHhFMiwweDQwLDB4RjIsMHg2RSwweEZFLDB4N0UsCi0gICAg
MHgwMywweDQxLDB4RTIsMHg0MCwweDAyLDB4MDIsMHgzQiwweEE5LDB4NDQsMHg0OSwweDAzLDB4
NDEsMHgwQiwweEY2LDB4NUYsMHg3RCwKLSAgICAweDY0LDB4NDksMHgyNCwweDQ5LDB4NTgsMHhF
RiwweEJELDB4QUQsMHg4NSwweDUxLDB4MjMsMHg0OSwweEI5LDB4QTksMHgyQiwweDAyLAotICAg
IDB4ODUsMHg1MSwweDIzLDB4NDEsMHhGMiwweEVBLDB4NzgsMHg1RSwweDY0LDB4NDksMHgyMyww
eDQ5LDB4ODUsMHhBRCwweDBCLDB4MkIsCi0gICAgMHhBNSwweDUxLDB4NDQsMHg0MSwweEVCLDB4
MkYsMHhBRCwweEY1LDB4ODUsMHg0OSwweDQ0LDB4NDksMHg1NiwweDdBLDB4N0EsMHg1NywKLSAg
ICAweDQ0LDB4NDEsMHgwMywweDQxLDB4RDYsMHg1RiwweEZFLDB4QUMsMHg2NCwweDQ5LDB4MDMs
MHgzOSwweDhGLDB4QTcsMHhBRCwweEI1LAotICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHhFOCww
eEFDLDB4QjgsMHhCNCwweDIzLDB4NDEsMHhFMiwweDM4LDB4NDIsMHhDMCwweEUwLDB4N0UsCi0g
ICAgMHgwMywweDM5LDB4QzIsMHgzOCwweDI1LDB4QkYsMHgyQiwweDgyLDB4MjMsMHg0MSwweDAz
LDB4MzksMHhBRCwweDY3LDB4M0QsMHgwOSwKLSAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4QkEs
MHhGRiwweEVCLDB4MjIsMHg0NCwweDQxLDB4MDMsMHg0MSwweEEyLDB4Q0EsMHg3QiwweEVBLAot
ICAgIDB4RTIsMHg0OCwweDAzLDB4MzksMHhGNSwweERELDB4NzUsMHhENywweDIzLDB4NDEsMHhD
MiwweDM4LDB4QTcsMHgyRiwweEVGLDB4QUEsCi0gICAgMHg0MywweDQxLDB4MDMsMHg0MSwweDY1
LDB4RUIsMHhGRiwweEE5LDB4NjQsMHg0OSwweDIzLDB4NDEsMHhCNywweDk1LDB4QjUsMHg3NSwK
LSAgICAweDY0LDB4NDksMHgyMywweDQxLDB4MDIsMHgwMCwweDAyLDB4QUYsMHhBNSwweDUxLDB4
NDQsMHg0OSwweDAwLDB4MkYsMHg5RSwweEIzLAotICAgIDB4RTcsMHg2MSwweDg1LDB4NTEsMHhE
QiwweEVBLDB4MkIsMHgyQiwweDI3LDB4NkEsMHhBNCwweDU5LDB4MjUsMHg5NSwweEVGLDB4RTIs
Ci0gICAgMHhBOCwweDdBLDB4QzUsMHg1OSwweDBBLDB4MDMsMHhCRiwweEJELDB4QzksMHg4Miww
eDY2LDB4NzIsMHgwMiwweDIyLDB4QUIsMHhFOSwKLSAgICAweEE4LDB4N0EsMHg2NywweDdBLDB4
NjgsMHg2QSwweDY4LDB4NzgsMHhBNywweDdBLDB4NDYsMHg3MiwweDBBLDB4MkYsMHgyRiwweDc3
LAotICAgIDB4MDksMHg4QiwweEE3LDB4N0EsMHgzRCwweEVGLDB4QUQsMHhCRiwweDhCLDB4OUIs
MHhFOCwweDgyLDB4MkQsMHgzRCwweEZELDB4NTUsCi0gICAgMHhEMywweERELDB4NkEsMHg5Myww
eDJCLDB4MkQsMHhBRCwweEI1LDB4MTQsMHhFNiwweDcyLDB4RDUsMHg4QSwweDBBLDB4MEIsMHgw
OSwKLSAgICAweDE1LDB4RTYsMHhCMywweERELDB4MDIsMHg4MCwweEEwLDB4NzAsMHhCMywweERE
LDB4RjAsMHhDNCwweDU4LDB4N0MsMHg3QywweDVFLAotICAgIDB4MTAsMHhDNSwweENGLDB4QkMs
MHhFQSwweDZBLDB4RkUsMHhCNiwweDMwLDB4Q0QsMHhEMCwweEJDLDB4QUIsMHhBOSwweEFGLDB4
MkIsCi0gICAgMHgzMSwweENELDB4MTAsMHhDNSwweDQyLDB4QzgsMHhCMywweDgzLDB4NTEsMHhD
RCwweDEwLDB4QzUsMHgwQiwweDhGLDB4MEYsMHg4OSwKLSAgICAweDE0LDB4RTYsMHg1MSwweENE
LDB4MzUsMHgzNSwweEQ1LDB4RDUsMHg5NiwweEY2LDB4RjQsMHhERCwweDBBLDB4MEIsMHgwQiww
eDJELAotICAgIDB4RDcsMHhGNiwweDc2LDB4RUUsMHhCRiwweEFBLDB4QTgsMHg3NSwweEI3LDB4
RjYsMHg1NSwweEVFLDB4MDgsMHgwMCwweDI4LDB4N0YsCi0gICAgMHhCNywweEY2LDB4MzUsMHhF
NiwweDAwLDB4MDAsMHhBMCwweDU3LDB4QjcsMHhGNiwweDM1LDB4RTYsMHgwMiwweEE4LDB4RUEs
MHg1RCwKLSAgICAweEI3LDB4RjYsMHgxNCwweERFLDB4ODIsMHhBMiwweEZGLDB4N0QsMHg5Niww
eEVFLDB4RjQsMHhERCwweDAwLDB4ODgsMHhGRSwweDc3LAotICAgIDB4OTYsMHhFRSwweEIzLDB4
RDUsMHgwMCwweDIwLDB4QUEsMHg1RiwweDc2LDB4RUUsMHhCMywweEQ1LDB4MDAsMHgwMCwweEVB
LDB4NTcsCi0gICAgMHg5NiwweEVFLDB4NzMsMHhDRCwweDAwLDB4QTgsMHhBQSwweDU3LDB4NTUs
MHhFNiwweDUxLDB4QzUsMHgwMCwweDg4LDB4RkEsMHg1NywKLSAgICAweDU1LDB4RTYsMHhGMSww
eEJDLDB4ODAsMHhBQSwweEZFLDB4NzcsMHgxNSwweEU2LDB4RDAsMHhCQywweDAwLDB4QUEsMHhG
RiwweDU1LAotICAgIDB4RjQsMHhERCwweDhGLDB4QjQsMHgwMCwweEFBLDB4REYsMHg1NSwweEY0
LDB4REQsMHhCMCwweEI0LDB4QTgsMHhGRSwweDU1LDB4NTUsCi0gICAgMHg3MiwweENELDB4NEUs
MHhBQywweDIwLDB4QkEsMHhGNywweEY1LDB4NzMsMHhDNSwweEQwLDB4QjQsMHgyQSwweEJGLDB4
MzUsMHgyOSwKLSAgICAweDkzLDB4Q0QsMHg1MiwweEM1LDB4ODIsMHg4RiwweEIzLDB4N0EsMHhC
MywweEQ1LDB4MTEsMHhDNSwweEVBLDB4RTIsMHhGQSwweDdFLAotICAgIDB4NDMsMHg1OSwweDIz
LDB4NTEsMHg1QSwweEZBLDB4RTgsMHg4MCwweDY0LDB4NTksMHgyMywweDUxLDB4MkIsMHgwQSww
eDA5LDB4MDAsCi0gICAgMHg4NCwweDYxLDB4NDQsMHg1OSwweDVFLDB4NUUsMHhCRSwweDJBLDB4
ODQsMHg2MSwweDQzLDB4NTksMHhFNywweERFLDB4RjgsMHhGRSwKLSAgICAweDg0LDB4NTksMHg0
MywweDUxLDB4QkEsMHhBOCwweEEyLDB4RDAsMHg2NCwweDU5LDB4MjMsMHg1MSwweDYwLDB4N0Es
MHhEQSwweDNBLAotICAgIDB4ODQsMHg1OSwweDIzLDB4NTEsMHg4RCwweEE1LDB4QkQsMHhERCww
eDg0LDB4NTksMHgyMiwweDUxLDB4N0YsMHg4QiwweEJFLDB4RkYsCi0gICAgMHg2MywweDU5LDB4
NDMsMHg1MSwweDlELDB4NkMsMHhBNiwweEE5LDB4NjMsMHg1OSwweDIyLDB4NTEsMHg1QiwweDVD
LDB4NUUsMHhERSwKLSAgICAweDYzLDB4NTksMHgwMiwweDQ5LDB4MkEsMHhCRiwweEJELDB4RkIs
MHg2NCwweDU5LDB4MjMsMHg1MSwweDVCLDB4NUYsMHhCRiwweEEzLAotICAgIDB4ODQsMHg2MSww
eDQzLDB4NTEsMHhFRCwweEE5LDB4QUEsMHhFQSwweDg0LDB4NjEsMHg2MywweDU5LDB4OEEsMHg3
QSwweEYwLDB4NjQsCi0gICAgMHhBNCwweDYxLDB4NjMsMHg1OSwweDVBLDB4OEUsMHg2RiwweDgz
LDB4ODQsMHg2MSwweDYzLDB4NTksMHgxMSwweDlGLDB4MkEsMHgyMCwKLSAgICAweEE0LDB4NjEs
MHg2MywweDU5LDB4REEsMHhGQiwweEYwLDB4NTAsMHhBNSwweDYxLDB4MjIsMHg1MSwweEVBLDB4
RTgsMHg3RSwweEZBLAotICAgIDB4NjMsMHg1OSwweDQzLDB4NTksMHgzQywweDdBLDB4RTAsMHhD
MiwweDg0LDB4NjEsMHgyMywweDUxLDB4MkIsMHhGRiwweEZGLDB4N0YsCi0gICAgMHhFNSwweDY5
LDB4MDMsMHg1MSwweDAyLDB4QUUsMHhGRiwweDdGLDB4NjcsMHg3QSwweDQzLDB4NTksMHgwMCww
eDJCLDB4RkQsMHhENSwKLSAgICAweDY3LDB4N0EsMHg4NCwweDU5LDB4MDAsMHgwMCwweDBBLDB4
RkQsMHhDNywweDgyLDB4MDYsMHg3MiwweEFBLDB4MkIsMHhCQiwweEZELAotICAgIDB4QTcsMHg4
MiwweDY2LDB4N0EsMHhGRCwweDBCLDB4OEIsMHhCRCwweEE3LDB4ODIsMHg2NiwweDdBLDB4RUEs
MHhGOCwweEYyLDB4RTAsCi0gICAgMHgwQiwweEFDLDB4QzgsMHg4MiwweEQ1LDB4RjUsMHhCNSww
eDJELDB4RUMsMHhBQiwweDhBLDB4OUIsMHgwRCwweDAzLDB4QTAsMHhGQSwKLSAgICAweENCLDB4
QTMsMHg2QSwweDlCLDB4MDgsMHhBOCwweEZDLDB4RTcsMHhDQiwweEEzLDB4NkEsMHg5QiwweDhB
LDB4RUYsMHg3NywweEQ3LAotICAgIDB4QUIsMHhBMywweDZBLDB4OUIsMHhBOCwweEVCLDB4Q0Ys
MHhFOSwweENDLDB4QTMsMHg2QSwweDlCLDB4MEYsMHhBQiwweEVCLDB4NUYsCi0gICAgMHhBQiww
eEEzLDB4MkEsMHg5MywweDIwLDB4QTgsMHhGQSwweDdGLDB4NkEsMHg5MywweDA1LDB4NkEsMHg3
OCwweDc4LDB4NTgsMHhGRSwKLSAgICAweDI2LDB4NkEsMHhBNCwweDU5LDB4NTcsMHg1NiwweEZD
LDB4RTgsMHhBNSwweDU5LDB4MDIsMHg0MSwweERDLDB4NTgsMHg3OCwweEY4LAotICAgIDB4MDMs
MHg0MSwweEEyLDB4MzgsMHhGQywweDdFLDB4NzgsMHhFOCwweEUzLDB4MzgsMHhBMiwweDMwLDB4
M0IsMHhCRCwweEFBLDB4RTgsCi0gICAgMHhFMywweDM4LDB4QTIsMHgzMCwweEJFLDB4MkEsMHgw
RiwweDJCLDB4MjQsMHg0MSwweEUzLDB4MzgsMHg1NywweEI3LDB4MkYsMHgzRiwKLSAgICAweDI0
LDB4NDEsMHhDMiwweDMwLDB4QjcsMHhBQiwweEIyLDB4QTAsMHhFMywweDQwLDB4MjQsMHgzOSww
eEFBLDB4QTcsMHhCQSwweEJCLAotICAgIDB4NDQsMHg0MSwweEUzLDB4MzgsMHgyRiwweEI1LDB4
REYsMHgzRiwweDg1LDB4NTEsMHgyMywweDQxLDB4MDMsMHgyOSwweEJELDB4QUYsCi0gICAgMHg4
NSwweDUxLDB4MDMsMHgzOSwweEFBLDB4QTAsMHg2MCwweDdBLDB4NDQsMHg0OSwweDAzLDB4NDEs
MHgwOCwweEJFLDB4RkQsMHg1NywKLSAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4NzgsMHg1Niww
eDU1LDB4RkIsMHgyNCwweDQxLDB4RTIsMHgzOCwweDI3LDB4MkUsMHhFQiwweEUyLAotICAgIDB4
MjMsMHg0MSwweEUyLDB4MzgsMHg4MCwweEUyLDB4RkEsMHgwMiwweDY1LDB4NDksMHhFMiwweDM4
LDB4OTUsMHg5NSwweEJELDB4QUYsCi0gICAgMHhDNiwweDUxLDB4NDQsMHg0OSwweEE1LDB4N0Ys
MHhFQSwweDhCLDB4QTUsMHg1MSwweDQ0LDB4NDksMHhDMiwweEM5LDB4RTMsMHg2QSwKLSAgICAw
eDg1LDB4NTEsMHgyMywweDQ5LDB4REUsMHhCQSwweDJGLDB4QjcsMHhBNSwweDU5LDB4NjQsMHg0
OSwweDlELDB4RkIsMHhFQSwweEFCLAotICAgIDB4QTUsMHg1MSwweDQ0LDB4NDksMHhFOCwweEZB
LDB4QkUsMHg3RiwweEM1LDB4NjEsMHg0NCwweDQ5LDB4QUYsMHgyRCwweDM1LDB4MTcsCi0gICAg
MHgwNiwweDZBLDB4NjQsMHg1MSwweDdGLDB4N0EsMHhFMiwweDBBLDB4QzYsMHg1OSwweDY0LDB4
NDksMHhGNSwweDc3LDB4RkUsMHhGMCwKLSAgICAweEE1LDB4NTEsMHgwMywweDQxLDB4NTgsMHg3
MiwweEJGLDB4QTgsMHgyMywweDQxLDB4QzIsMHgzOCwweDU3LDB4NTcsMHg3OCwweDc4LAotICAg
IDB4RTMsMHgzOCwweDgxLDB4MzAsMHhBMiwweEJBLDB4QkUsMHhBNywweDAzLDB4MzksMHhDMiww
eDMwLDB4QUYsMHhGNSwweEFGLDB4M0IsCi0gICAgMHgyMywweDQxLDB4RTMsMHgzOCwweDdBLDB4
RkIsMHg3NywweEZELDB4MDMsMHg0MSwweEUzLDB4MzgsMHhFRCwweEI1LDB4NTUsMHgzOCwKLSAg
ICAweDIzLDB4NDEsMHhDMiwweDM4LDB4RkEsMHg2QiwweEFGLDB4MkUsMHgyMywweDQxLDB4RTMs
MHgzOCwweDdCLDB4QUYsMHgyRSwweDJCLAotICAgIDB4NjQsMHg0OSwweEUzLDB4MzgsMHgyRCww
eDhGLDB4QUUsMHhBQiwweDY0LDB4NTEsMHgyMywweDQ5LDB4MEEsMHgwRSwweEFCLDB4NzMsCi0g
ICAgMHg4NSwweDUxLDB4MjQsMHg0OSwweEUyLDB4RUIsMHg3QiwweEZGLDB4NDQsMHg0OSwweDAz
LDB4NDEsMHg3NCwweEQ0LDB4QUEsMHgyQSwKLSAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4NzUs
MHg2RiwweDJBLDB4MjAsMHg2NCwweDUxLDB4MDMsMHg0MSwweEI1LDB4QkQsMHgzQiwweDJBLAot
ICAgIDB4ODQsMHg1MSwweDQ0LDB4NDksMHhCRCwweEFGLDB4QUYsMHgyRSwweEE1LDB4NTEsMHg2
NCwweDQ5LDB4Q0IsMHg2QSwweEMyLDB4QzAsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEZD
LDB4RjgsMHhFOCwweDgwLDB4NjQsMHg0OSwweDAzLDB4NDEsMHgyQiwweDJCLDB4MDksMHgzRiwK
LSAgICAweDg0LDB4NDksMHgwMywweDQxLDB4N0YsMHg3RSwweDdFLDB4RkMsMHg0NCwweDQ5LDB4
MDMsMHg0MSwweDJFLDB4RkUsMHg3QSwweDVGLAotICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHg4
OCwweDJFLDB4QTcsMHg1NywweDQ0LDB4NDEsMHhFMywweDM4LDB4QkEsMHhGQSwweERDLDB4RkYs
Ci0gICAgMHgyMywweDQxLDB4RTMsMHgzOCwweEZDLDB4NUYsMHhGRiwweEFGLDB4NDQsMHg0MSww
eEUyLDB4MzgsMHhERiwweDc3LDB4OUYsMHhFMiwKLSAgICAweDAzLDB4MzksMHhDMiwweDM4LDB4
MjksMHhBNiwweEFBLDB4MDIsMHg4NCwweDQ5LDB4MDMsMHgzOSwweEFELDB4MEQsMHhBRCwweEU3
LAotICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHhBRSwweEE4LDB4ODAsMHhBOCwweDY1LDB4NDks
MHgyNCwweDQxLDB4N0UsMHg3MiwweEVCLDB4RkQsCi0gICAgMHg0MywweDQxLDB4QzIsMHgzOCww
eEZFLDB4QjYsMHhBQSwweEE4LDB4NjUsMHg0OSwweEUyLDB4MzgsMHg5NywweEI3LDB4OEIsMHgw
RiwKLSAgICAweDQ0LDB4NDEsMHgwMywweDQxLDB4MEQsMHgwOSwweEMwLDB4QTAsMHg0NCwweDQ5
LDB4MjMsMHg0MSwweEVDLDB4REUsMHhENywweDk2LAotICAgIDB4NjQsMHg0OSwweDIzLDB4NDEs
MHg3RCwweEZGLDB4RUUsMHhDMCwweDg1LDB4NTEsMHgwMiwweDQxLDB4MkIsMHhERCwweEY3LDB4
NUUsCi0gICAgMHhDNiwweDU5LDB4NDQsMHg0OSwweDJCLDB4QkYsMHhCRCwweDk1LDB4RTYsMHg2
MSwweDg0LDB4NTksMHgwMiwweEFFLDB4REYsMHg3QSwKLSAgICAweDI2LDB4NkEsMHhBNCwweDU5
LDB4MkYsMHg4QiwweDhCLDB4MjUsMHhBOCwweDdBLDB4MDUsMHg2MiwweDgyLDB4QTksMHhGRCww
eEQ3LAotICAgIDB4NjcsMHg3QSwweDI2LDB4NkEsMHhBMiwweEFCLDB4QkYsMHhGQiwweDQ3LDB4
NzIsMHgwNiwweDZBLDB4RTgsMHg2QywweEZDLDB4NTQsCi0gICAgMHhDOCwweDgyLDB4MDYsMHg2
QSwweDBBLDB4MEQsMHhCNSwweEI1LDB4RTgsMHg4MiwweDg3LDB4N0EsMHgyOCwweDIyLDB4OEIs
MHgzNywKLSAgICAweDZFLDB4QjQsMHhDOCwweDgyLDB4MkQsMHhCRCwweEY1LDB4RDUsMHhEMyww
eERELDB4MkQsMHhBQywweDAyLDB4MEIsMHgyRCwweEFELAotICAgIDB4RjQsMHhFNSwweDUxLDB4
Q0QsMHhBMCwweEUyLDB4N0EsMHhFQSwweDUyLDB4Q0QsMHhEMCwweEJDLDB4RjgsMHhGRSwweERB
LDB4N0MsCi0gICAgMHgxMCwweEM1LDB4RDAsMHhCQywweEY2LDB4QUEsMHg5QSwweEQ3LDB4MTAs
MHhDNSwweEYwLDB4QzQsMHgyRCwweDBGLDB4MjksMHgwNSwKLSAgICAweDMxLDB4Q0QsMHgxMCww
eEM1LDB4MDIsMHg4RSwweDFCLDB4QUIsMHg1MSwweENELDB4MTAsMHhDNSwweEFGLDB4MjcsMHhB
RiwweEFCLAotICAgIDB4NTEsMHhDRCwweDMxLDB4QzUsMHgyOCwweDBFLDB4MkEsMHhGQywweDM1
LDB4RTYsMHg1MiwweENELDB4MEIsMHhBRiwweEFELDB4QUQsCi0gICAgMHgzNSwweEU2LDB4MTAs
MHhDNSwweDAwLDB4QUEsMHg3RiwweDVFLDB4MTQsMHhFNiwweEQwLDB4QkMsMHgwMCwweEFBLDB4
RkYsMHg3NSwKLSAgICAweDE0LDB4RTYsMHhEMCwweEJDLDB4MjAsMHhFQSwweDdGLDB4NTUsMHhG
NCwweERELDB4QUYsMHhCQywweDAwLDB4QUEsMHhGRiwweDU1LAotICAgIDB4QjMsMHhENSwweEIw
LDB4QkMsMHgwMCwweEEyLDB4RkYsMHg1NSwweEIzLDB4RDUsMHg4RiwweEI0LDB4MDAsMHhBQSww
eERGLDB4NTUsCi0gICAgMHg5MiwweEQ1LDB4NkYsMHhBQywweDAwLDB4QUEsMHhGRiwweDU1LDB4
NzIsMHhDRCwweDZFLDB4QUMsMHgwMCwweEFBLDB4RkYsMHg1RCwKLSAgICAweDUyLDB4QzUsMHg0
RSwweEFDLDB4MDAsMHhBQSwweEZFLDB4NTcsMHgzMSwweEM1LDB4MkUsMHhBNCwweDJBLDB4QkEs
MHhGNywweDVELAotICAgIDB4RjAsMHhCQywweDJELDB4QTQsMHhFMCwweEZBLDB4RkYsMHhENSww
eDhGLDB4QjQsMHgyRCwweEE0LDB4QzgsMHhFOCwweEJBLDB4QjcsCi0gICAgMHg1MiwweEM1LDB4
MkQsMHhBNCwweEZELDB4QkQsMHhBRiwweDJGLDB4RDQsMHhENSwweEQwLDB4QjQsMHhGNSwweEFG
LDB4MEEsMHgwMiwKLSAgICAweEQ0LDB4RDUsMHhGMCwweEI0LDB4RDUsMHhFRSwweEE4LDB4QTAs
MHg5MywweENELDB4MzEsMHhCRCwweEI1LDB4QUYsMHg4QSwweEFFLAotICAgIDB4NzMsMHhDRCww
eEYwLDB4QjQsMHhBMCwweEUyLDB4RkEsMHg1RiwweDUyLDB4QzUsMHhCMCwweEI0LDB4RTIsMHhG
QSwweDdFLDB4NUYsCi0gICAgMHg4NCwweDU5LDB4NDMsMHg1OSwweEQ3LDB4RTUsMHhCRiwweENE
LDB4ODQsMHg1OSwweDQzLDB4NTEsMHg4MSwweDAyLDB4OEMsMHhBQSwKLSAgICAweDg0LDB4NTks
MHg2NCwweDU5LDB4NDEsMHhFMCwweDJCLDB4MUEsMHg4NCwweDU5LDB4NDMsMHg1MSwweDhBLDB4
OEEsMHhGOCwweEQ4LAotICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHgxRSwweDJFLDB4MkEsMHhG
QSwweDg0LDB4NTksMHgyMiwweDUxLDB4Q0UsMHhFQSwweEZBLDB4OTcsCi0gICAgMHg2NCwweDU5
LDB4MjMsMHg0OSwweEZELDB4OEEsMHhDQSwweEFBLDB4NjMsMHg1OSwweDAyLDB4NDksMHg5RSww
eEFCLDB4MDIsMHgwQSwKLSAgICAweDQzLDB4NTEsMHgyMiwweDUxLDB4ODIsMHhGRiwweEY4LDB4
RDgsMHg0MywweDU5LDB4MjIsMHg0OSwweEVCLDB4QUQsMHhFQiwweEVFLAotICAgIDB4NjMsMHg1
OSwweDIzLDB4NTEsMHhENSwweEY1LDB4QUYsMHgwQiwweDg0LDB4NjEsMHg0MywweDU5LDB4ODcs
MHgyMywweDhCLDB4QUYsCi0gICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweDRBLDB4ODAsMHhDMCww
eDAyLDB4QTQsMHg2MSwweDYzLDB4NTksMHhGRiwweDVCLDB4RjEsMHg4MCwKLSAgICAweEE0LDB4
NjEsMHg2MywweDU5LDB4QUIsMHg5RCwweEZGLDB4RkEsMHhBNSwweDYxLDB4NDMsMHg1OSwweDJB
LDB4MEUsMHgyOCwweDI4LAotICAgIDB4QTQsMHg2MSwweDQzLDB4NTksMHhGOCwweDdFLDB4NkUs
MHhFRiwweDYzLDB4NTksMHg0MywweDU5LDB4NjIsMHgyMCwweDI4LDB4OEEsCi0gICAgMHg2Myww
eDU5LDB4MjMsMHg1MSwweEEwLDB4QTAsMHhBOCwweDc2LDB4NjQsMHg1OSwweDIzLDB4NTEsMHg1
QSwweEJBLDB4RUUsMHhFOSwKLSAgICAweDIzLDB4NTksMHg0MywweDUxLDB4QUEsMHhERSwweEZF
LDB4QUYsMHg2NCwweDU5LDB4MDMsMHg1MSwweDBBLDB4RUEsMHhCQiwweDVGLAotICAgIDB4ODQs
MHg1OSwweDAyLDB4NTEsMHhBRiwweEY3LDB4RkYsMHhGRCwweEM1LDB4NjksMHgyMywweDUxLDB4
MEEsMHhGRiwweDU1LDB4NTcsCi0gICAgMHg4NywweDgyLDB4MjMsMHg1MSwweDIyLDB4M0YsMHhG
NSwweDU1LDB4QzgsMHg4QSwweDY0LDB4NTksMHgyMiwweDhBLDB4MkYsMHgyNSwKLSAgICAweEVC
LDB4QUIsMHhFNywweDgyLDB4MkQsMHgyQiwweDBCLDB4MEEsMHhFQywweEFCLDB4OEEsMHg5Qiww
eEY4LDB4NjgsMHg2QSwweDdFLAotICAgIDB4OEEsMHg5QiwweDZBLDB4OUIsMHhCMCwweDBDLDB4
MDcsMHg3RiwweEFCLDB4OUIsMHg0QSwweDlCLDB4RkYsMHg3RiwweEY2LDB4QUYsCi0gICAgMHhB
QiwweDlCLDB4NEEsMHg5MywweEFCLDB4QUYsMHhCRSwweDJFLDB4QUIsMHhBMywweDZBLDB4OUIs
MHg2QiwweDZFLDB4REEsMHgwOCwKLSAgICAweENDLDB4QTMsMHgyOSwweDkzLDB4NTcsMHhGRiww
eEZBLDB4QTgsMHgyOSwweDkzLDB4NjYsMHg3MiwweDdFLDB4N0UsMHhGOCwweEY4LAotICAgIDB4
ODYsMHg3QSwweEM1LDB4NjEsMHg1QiwweDdBLDB4RjgsMHhGOCwweEU2LDB4NjEsMHg0NCwweDQ5
LDB4NUUsMHhGQSwweEZBLDB4NzgsCi0gICAgMHg0NCwweDQ5LDB4RTIsMHgzOCwweDdBLDB4Nzgs
MHg1QSwweDZFLDB4MDMsMHg0MSwweEEyLDB4MzAsMHhGRSwweEVCLDB4Q0UsMHhBRSwKLSAgICAw
eDA0LDB4MzksMHhDMiwweDM4LDB4REQsMHhGRCwweEYzLDB4QUIsMHgwMywweDM5LDB4QzIsMHgz
OCwweDJCLDB4QkQsMHgzNSwweDk1LAotICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhGRiwweEZE
LDB4QkYsMHgwRiwweDY1LDB4NDksMHgwMywweDQxLDB4NTcsMHhGQSwweDdBLDB4RTAsCi0gICAg
MHgyMywweDQxLDB4RTMsMHgzOCwweDAyLDB4NkIsMHg1OCwweDVDLDB4NjQsMHg0OSwweEUzLDB4
MzgsMHgwQSwweEJELDB4QUYsMHhCRiwKLSAgICAweDQ0LDB4NDksMHgyNCwweDQxLDB4NDAsMHg3
OCwweDU2LDB4NUEsMHgyMywweDQxLDB4QzIsMHgzOCwweEFBLDB4ODgsMHgyOCwweDFFLAotICAg
IDB4NDQsMHg0OSwweDAzLDB4NDEsMHg3QiwweEMzLDB4MDgsMHgwMywweDY1LDB4NDksMHhFMyww
eDM4LDB4N0YsMHhEQiwweEVFLDB4OEEsCi0gICAgMHg0MywweDQxLDB4MDQsMHg0MSwweEFBLDB4
RTksMHg4QSwweEFCLDB4NDQsMHg0MSwweDAzLDB4NDEsMHhBQSwweEJBLDB4QkYsMHg1NSwKLSAg
ICAweEE1LDB4NTEsMHgyMywweDQxLDB4MDMsMHgwQiwweDJELDB4QkQsMHhBNiwweDUxLDB4MjQs
MHg0OSwweEY4LDB4RjgsMHhFRSwweERGLAotICAgIDB4QTUsMHg1OSwweDIzLDB4NDksMHhCNyww
eDM3LDB4MkYsMHhCRiwweDA2LDB4NjIsMHg0MywweDQ5LDB4N0YsMHg3RSwweDdBLDB4QTIsCi0g
ICAgMHhBNSwweDU5LDB4MjMsMHg0OSwweEQ3LDB4REYsMHg3RSwweEJDLDB4RTUsMHg2MSwweDI0
LDB4NDksMHgzRiwweEJELDB4QkQsMHhGRiwKLSAgICAweDQ3LDB4NkEsMHg2NCwweDU5LDB4OEEs
MHgyQSwweDJCLDB4MkQsMHgyNywweDZBLDB4QTUsMHg1OSwweDdBLDB4RkEsMHhGMCwweDc4LAot
ICAgIDB4QzYsMHg1OSwweDI0LDB4NDksMHhGRSwweEZBLDB4RTgsMHg3OCwweDQ0LDB4NDksMHhD
MiwweDM4LDB4N0MsMHg3MCwweDUwLDB4N0EsCi0gICAgMHhFMywweDM4LDB4QTIsMHgzMCwweEFF
LDB4QUEsMHhBRSwweDJFLDB4MjMsMHgzOSwweEUzLDB4MzgsMHhENSwweEU1LDB4QUQsMHgzQiwK
LSAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4RjksMHhCRiwweDJGLDB4QUUsMHgyMywweDQxLDB4
MDMsMHgzOSwweDdGLDB4NUEsMHhCMCwweDgwLAotICAgIDB4NDMsMHg0OSwweEUzLDB4NDAsMHhG
NywweEZELDB4RkUsMHhFOCwweDAzLDB4NDEsMHgyMywweDM5LDB4RTAsMHhBMCwweEFBLDB4MkMs
Ci0gICAgMHgyNCwweDQ5LDB4RTMsMHg0MCwweEEyLDB4NzgsMHhFQSwweEFCLDB4MjQsMHg0OSww
eEUzLDB4NDAsMHgwMCwweDI3LDB4MkIsMHgwQSwKLSAgICAweDY0LDB4NTEsMHgyMywweDQ5LDB4
RjksMHhCMiwweEI3LDB4MjUsMHg2NCwweDUxLDB4MDMsMHg0MSwweEFFLDB4RkIsMHg5RSwweEI4
LAotICAgIDB4NjUsMHg1MSwweDIzLDB4NDEsMHg1QywweDdGLDB4QUEsMHhBQiwweDY0LDB4NDks
MHgyMywweDQ5LDB4QTUsMHgwNSwweDg3LDB4QUQsCi0gICAgMHhBNSwweDU5LDB4MjMsMHg0MSww
eDJCLDB4QUEsMHhGRSwweDU2LDB4QTUsMHg1MSwweDAzLDB4NDEsMHhBOCwweEJGLDB4RkYsMHg1
RiwKLSAgICAweDY0LDB4NDksMHgyMywweDQxLDB4QUIsMHgwQSwweDA4LDB4ODMsMHg4NSwweDQ5
LDB4MjMsMHg0MSwweERGLDB4RUIsMHhFMCwweEVBLAotICAgIDB4NjQsMHg0OSwweDAzLDB4NDEs
MHhFQSwweDRCLDB4N0EsMHg3QSwweDIzLDB4MzksMHhDMSwweDM4LDB4QTgsMHg3QSwweDdCLDB4
RkEsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweEZFLDB4RkUsMHhGQiwweEFBLDB4MjMsMHg0
MSwweDAzLDB4MzksMHg5NSwweDNELDB4MjksMHgwRCwKLSAgICAweDY0LDB4NDksMHgwMywweDQx
LDB4NUQsMHhGQiwweEVFLDB4OEEsMHg4NSwweDQ5LDB4MjQsMHg0MSwweEY4LDB4QUIsMHhCOSww
eEJCLAotICAgIDB4QTUsMHg0OSwweDAzLDB4MzksMHg1RiwweEY2LDB4RUUsMHhBOCwweDQ0LDB4
NDEsMHgwMywweDQxLDB4MkYsMHhCQiwweEI4LDB4QkUsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHgz
OSwweEFBLDB4REMsMHhGNCwweEZFLDB4NDQsMHg0MSwweDAzLDB4NDEsMHhBRiwweDJFLDB4Qjgs
MHg1NiwKLSAgICAweDQ0LDB4NDEsMHgwMiwweDQxLDB4QUEsMHgwQSwweDg4LDB4MkUsMHg2NCww
eDQ5LDB4MjMsMHg0MSwweDJELDB4MEYsMHgwQiwweDBBLAotICAgIDB4NjQsMHg0OSwweDIzLDB4
NDEsMHhENiwweDdFLDB4RjAsMHhCMCwweDQ0LDB4NDksMHgwMywweDQxLDB4QUYsMHhGRiwweEZG
LDB4QUMsCi0gICAgMHg4NSwweDUxLDB4MDMsMHgzOSwweEFBLDB4OEEsMHhBRCwweEI1LDB4NjQs
MHg0OSwweDAzLDB4NDEsMHg3OCwweEEwLDB4QTAsMHhBMiwKLSAgICAweDY0LDB4NTEsMHgyMyww
eDQxLDB4RjksMHgzRCwweEFBLDB4M0IsMHhFNiwweDYxLDB4NjQsMHg1MSwweDhCLDB4MEYsMHhB
NSwweEQ1LAotICAgIDB4NDYsMHg3MiwweEM1LDB4NjEsMHhGNywweEJGLDB4OEIsMHgyRCwweDY3
LDB4NzIsMHgwNSwweDYyLDB4RkUsMHg2NywweDdGLDB4MkEsCi0gICAgMHg4NywweDcyLDB4MDUs
MHg2QSwweEVCLDB4QUQsMHhBRCwweDBBLDB4NjcsMHg3MiwweEM1LDB4NjEsMHhGRSwweEZFLDB4
QkEsMHg2OCwKLSAgICAweDg3LDB4N0EsMHhFNSwweDYxLDB4M0YsMHhBRiwweEJGLDB4QUQsMHhB
OCwweDdBLDB4NDYsMHg3MiwweDJBLDB4OUIsMHhFRCwweEVCLAotICAgIDB4MDksMHg4QiwweDg3
LDB4N0EsMHgyNiwweDM2LDB4M0QsMHhGNSwweDcyLDB4RDUsMHgyQSwweDhCLDB4MkYsMHgwRCww
eDJELDB4QkQsCi0gICAgMHhENCwweERELDB4MzEsMHhDRCwweEMwLDB4NzgsMHg3QSwweDdCLDB4
MzEsMHhDRCwweENGLDB4QkMsMHhGQSwweDc4LDB4RjIsMHg3RSwKLSAgICAweEYwLDB4QzQsMHhD
RiwweEJDLDB4REEsMHgzRiwweDVELDB4N0YsMHgxMCwweEM1LDB4Q0YsMHhCQywweDJGLDB4MjUs
MHgxNywweDA3LAotICAgIDB4MzEsMHhDRCwweDEwLDB4QzUsMHg4RiwweDE1LDB4MzUsMHgzNSww
eDMxLDB4Q0QsMHgxMCwweEM1LDB4MjAsMHhFRSwweDNDLDB4QTgsCi0gICAgMHg1MSwweENELDB4
MTEsMHhDNSwweEFBLDB4QUIsMHhBRiwweDZFLDB4RDMsMHhERCwweDMxLDB4QzUsMHgwRCwweDBE
LDB4MjUsMHhCNSwKLSAgICAweEQzLDB4REQsMHhBRiwweEJDLDB4N0MsMHhGOCwweDU4LDB4NzAs
MHhEMCwweEJDLDB4OEYsMHhCNCwweEM4LDB4RjIsMHg2RiwweDU3LAotICAgIDB4QUYsMHhCQyww
eDZFLDB4QjQsMHg4MiwweDcyLDB4N0IsMHhGRiwweEFGLDB4QjQsMHg0RCwweEFDLDB4ODAsMHg3
MCwweDdBLDB4RUEsCi0gICAgMHhBRiwweEJDLDB4MkQsMHhBQywweEE4LDB4RkIsMHg3QiwweDdG
LDB4OEYsMHhCNCwweDJELDB4QUMsMHgyMiwweDdCLDB4NzcsMHg3RCwKLSAgICAweDZFLDB4QUMs
MHgwRCwweEE0LDB4MjgsMHgwQSwweEZCLDB4NTcsMHg2RSwweEFDLDB4MEMsMHhBNCwweDYwLDB4
RkEsMHg3RSwweDVELAotICAgIDB4QjAsMHhCNCwweDBELDB4OUMsMHhGRiwweEQ1LDB4RDUsMHgw
QiwweDcyLDB4QzUsMHgwRCwweDlDLDB4NUQsMHhERCwweEJELDB4MkEsCi0gICAgMHg5MywweENE
LDB4MkUsMHhBNCwweDc1LDB4RkQsMHhBQSwweDg4LDB4NzIsMHhDNSwweDRFLDB4QUMsMHhENSww
eEFCLDB4MkEsMHgyMiwKLSAgICAweDkzLDB4Q0QsMHgxMSwweEJELDB4QTUsMHhBRiwweDBBLDB4
ODAsMHhCMywweEQ1LDB4NTMsMHhDNSwweDBBLDB4QTIsMHhBMiwweEZGLAotICAgIDB4RDUsMHhE
NSwweDUyLDB4QzUsMHhFMiwweERFLDB4RkYsMHg1RiwweDczLDB4QzUsMHhGMSwweEJDLDB4OEEs
MHhDOCwweEY2LDB4NTYsCi0gICAgMHgzMiwweEM1LDB4QjAsMHhCNCwweEU4LDB4RUEsMHg2QSww
eDZBLDB4RjEsMHhCNCwweDZGLDB4QUMsMHhGQywweERGLDB4NTcsMHg3NywKLSAgICAweDg0LDB4
NjEsMHg0MywweDU5LDB4RkUsMHhGQywweDc4LDB4RkQsMHhBNSwweDYxLDB4NDMsMHg1MSwweEI3
LDB4QUUsMHg3MywweEZBLAotICAgIDB4ODQsMHg1OSwweDIzLDB4NTEsMHhBMiwweEFBLDB4QUYs
MHhERSwweDY0LDB4NTksMHgyMywweDUxLDB4QjgsMHhBRSwweDdFLDB4NUYsCi0gICAgMHg2NCww
eDU5LDB4MjMsMHg1MSwweEZBLDB4REUsMHhGRiwweEJFLDB4ODQsMHg1OSwweDIyLDB4NTEsMHhF
NywweEVGLDB4RTIsMHhGRSwKLSAgICAweDg0LDB4NTksMHg0MywweDUxLDB4NTcsMHg1QywweDc1
LDB4NTUsMHg2MywweDU5LDB4MjMsMHg1MSwweEVFLDB4QUEsMHhDQywweEJCLAotICAgIDB4NjMs
MHg1OSwweDIzLDB4NTEsMHhCQiwweEFGLDB4RkYsMHhGRCwweDYzLDB4NTksMHgyMywweDUxLDB4
RDcsMHhENiwweEJDLDB4M0EsCi0gICAgMHg4NCwweDU5LDB4NDMsMHg1OSwweDg1LDB4QjUsMHhG
RCwweEY2LDB4QTQsMHg2MSwweDQzLDB4NTksMHhCNSwweEFGLDB4QjcsMHhENSwKLSAgICAweEE0
LDB4NjEsMHg2MywweDU5LDB4QkYsMHhERSwweEZGLDB4NzcsMHhBNCwweDYxLDB4NjQsMHg1OSww
eDhBLDB4RUYsMHhGQiwweEVELAotICAgIDB4QTQsMHg2MSwweDQzLDB4NTksMHg4MiwweENFLDB4
RTIsMHg0MiwweEE1LDB4NjEsMHg0MywweDU5LDB4RkMsMHg1RiwweDVFLDB4N0YsCi0gICAgMHg2
MywweDU5LDB4MjIsMHg1MSwweDgwLDB4QzAsMHgzQiwweEI2LDB4ODQsMHg1OSwweDIzLDB4NTEs
MHhFRiwweENBLDB4RUIsMHg3QSwKLSAgICAweDQzLDB4NTksMHgyMywweDUxLDB4RjAsMHgzRiww
eDM4LDB4RUEsMHg2NCwweDU5LDB4MjMsMHg1MSwweEVCLDB4RUEsMHhGQSwweDZELAotICAgIDB4
NDMsMHg1OSwweDAzLDB4NTEsMHhCQSwweDVBLDB4NkYsMHhGRiwweDIzLDB4NTEsMHhFMiwweDQ4
LDB4QkIsMHhGRiwweDJCLDB4MEEsCi0gICAgMHg0NCwweDUxLDB4MDIsMHg0OSwweDJGLDB4QUUs
MHg3QSwweEVGLDB4MjMsMHg1MSwweEUyLDB4NDgsMHhBMCwweDQwLDB4QTAsMHhCMCwKLSAgICAw
eDYzLDB4NTksMHgwMywweDUxLDB4RDUsMHhENSwweEE3LDB4MzcsMHhBQiwweEEzLDB4NjMsMHg1
OSwweEI1LDB4MkQsMHgyRCwweDBCLAotICAgIDB4RUMsMHhBQiwweDhBLDB4OUIsMHg4RCwweEVC
LDB4QTIsMHhGRSwweENDLDB4QTMsMHg0QSwweDlCLDB4RTgsMHhFMiwweEZFLDB4NTYsCi0gICAg
MHhBQiwweEEzLDB4NkEsMHg5QiwweDU3LDB4N0IsMHhFRSwweEE3LDB4QUIsMHhBMywweDZBLDB4
OUIsMHgyQiwweEZELDB4N0YsMHhFOCwKLSAgICAweEFCLDB4QTMsMHg2QSwweDlCLDB4QTYsMHg3
OCwweDc5LDB4NkIsMHhDQywweEEzLDB4OEIsMHg5QiwweDJFLDB4QUEsMHhENSwweDU1LAotICAg
IDB4Q0MsMHhBQiwweDZCLDB4OUIsMHhFMiwweDYyLDB4RkIsMHhGQiwweDQ5LDB4OTMsMHg4Nyww
eDdBLDB4RkUsMHg3OCwweEZFLDB4NzYsCi0gICAgMHg4NiwweDdBLDB4QzUsMHg2MSwweDc4LDB4
NzgsMHhFMCwweEUwLDB4QzUsMHg2MSwweDQ0LDB4NTEsMHhGQSwweEZDLDB4N0MsMHg3QywKLSAg
ICAweDY0LDB4NTEsMHgwMiwweDQxLDB4N0UsMHhFMCwweEJDLDB4QUIsMHg0NCwweDQ5LDB4RTIs
MHgzOCwweDVGLDB4RkEsMHgyQSwweDIwLAotICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHg1RCww
eERGLDB4NzYsMHg3OCwweDIzLDB4NDEsMHhBMSwweDMwLDB4RkYsMHhCRSwweDJFLDB4MkIsCi0g
ICAgMHg4NSwweDQ5LDB4MjMsMHg0MSwweEE5LDB4MzUsMHhCRCwweEFCLDB4QTUsMHg0OSwweDQ0
LDB4NDksMHg3RiwweEVDLDB4RkYsMHg2QiwKLSAgICAweDY0LDB4NDksMHhFMywweDM4LDB4N0Us
MHhGQSwweEY4LDB4RUEsMHgyMywweDQxLDB4QzIsMHgzOCwweDhCLDB4RkIsMHhEQSwweEJFLAot
ICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhBOSwweDgzLDB4QUQsMHhBNSwweDQ0LDB4NDEsMHgw
MywweDQxLDB4NTYsMHg1NiwweDlFLDB4OUUsCi0gICAgMHg4NSwweDUxLDB4MjMsMHg0MSwweEFE
LDB4QTUsMHhFRCwweDdGLDB4NDQsMHg0OSwweEUyLDB4MzgsMHg4OCwweEZFLDB4QkYsMHhBNywK
LSAgICAweDQ0LDB4NDEsMHgwMywweDQxLDB4RUIsMHhBQiwweDJCLDB4NUYsMHgyMywweDQxLDB4
MDMsMHgzOSwweDdBLDB4RjgsMHgzQywweDNFLAotICAgIDB4NDQsMHg0OSwweEUyLDB4MzgsMHg4
QiwweEFCLDB4NUEsMHhGNywweDQ0LDB4NDksMHhFMiwweDQwLDB4RkMsMHhERCwweDU1LDB4NTUs
Ci0gICAgMHg2NCwweDUxLDB4RTIsMHg0MCwweDJCLDB4M0QsMHgzRCwweEJGLDB4RTYsMHg2MSww
eDg1LDB4NTksMHgwMiwweDAxLDB4REIsMHg2RCwKLSAgICAweEE1LDB4NTksMHgyNCwweDQ5LDB4
QjgsMHhFOCwweEI4LDB4REEsMHg2NCwweDUxLDB4MjMsMHg0OSwweEUwLDB4QTAsMHhBMiwweEZF
LAotICAgIDB4QzUsMHg1OSwweDQzLDB4NDksMHgwRiwweEE1LDB4RjUsMHg1NywweDA2LDB4NkEs
MHg2NCwweDUxLDB4QzIsMHhFQSwweEVELDB4RDUsCi0gICAgMHhDNSwweDU5LDB4NDQsMHg0OSww
eDVGLDB4NTgsMHg2OCwweEEyLDB4NDQsMHg0OSwweEEyLDB4MzAsMHhGQSwweDVDLDB4REMsMHg1
QywKLSAgICAweEUzLDB4MzgsMHhBMiwweDMwLDB4MkUsMHhCRiwweEY3LDB4N0QsMHgyNCwweDM5
LDB4QzIsMHgzMCwweEFBLDB4RUQsMHhBMSwweEIxLAotICAgIDB4MjMsMHg0MSwweEUzLDB4Mzgs
MHgwOCwweDgyLDB4RjYsMHhCRSwweDQ0LDB4NDEsMHgwMywweDQxLDB4REYsMHgzNSwweDM1LDB4
QjUsCi0gICAgMHg2NSwweDQ5LDB4MjQsMHg0MSwweEZGLDB4QkUsMHhBRSwweEU3LDB4NDQsMHg0
OSwweDAzLDB4NDEsMHhGRSwweEFBLDB4MjAsMHgwMCwKLSAgICAweDY0LDB4NDksMHgyMywweDQ5
LDB4NUQsMHg3RSwweDVGLDB4RkIsMHg2NCwweDUxLDB4MDMsMHg0MSwweEY3LDB4QUQsMHhBMiww
eDgyLAotICAgIDB4QTYsMHg1OSwweDQ0LDB4NDksMHhGNSwweEJELDB4QUIsMHgwMiwweEM2LDB4
NTksMHg2NCwweDUxLDB4NTcsMHhERiwweEZBLDB4NkMsCi0gICAgMHhBNSwweDUxLDB4MjMsMHg0
OSwweEZGLDB4N0EsMHhGOCwweEYyLDB4NDQsMHg0OSwweDAzLDB4NDEsMHgyMCwweDZBLDB4RkEs
MHg3NywKLSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4RjgsMHhBRSwweEVCLDB4RjcsMHgyMyww
eDQxLDB4MDMsMHg0MSwweDYyLDB4QTMsMHhDMSwweEMyLAotICAgIDB4NDQsMHg0OSwweEUyLDB4
MzgsMHgwMiwweDBGLDB4MkYsMHhCNywweDg0LDB4NDksMHg0NCwweDQ5LDB4N0QsMHg0RiwweERE
LDB4NTcsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweDZFLDB4MzYsMHhCQSwweEZFLDB4NDMs
MHg0MSwweDAzLDB4NDEsMHg1RCwweDU2LDB4REUsMHg1RiwKLSAgICAweDIzLDB4NDEsMHhFMyww
eDM4LDB4MzcsMHhCQSwweEEyLDB4QTIsMHgyNCwweDQxLDB4RTMsMHgzOCwweDBBLDB4MkIsMHhC
RCwweEZGLAotICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHhDQSwweEVCLDB4QUYsMHhCRCwweDg1
LDB4NDksMHg0NCwweDQ5LDB4RDcsMHgzRCwweEI3LDB4QkQsCi0gICAgMHhBNSwweDUxLDB4NjQs
MHg0OSwweEI2LDB4QUYsMHgyQiwweDJBLDB4ODUsMHg0OSwweDIzLDB4NDEsMHg1NywweEY3LDB4
N0MsMHhFMCwKLSAgICAweDQzLDB4NDEsMHgwMywweDM5LDB4NzgsMHg1NywweDU1LDB4RjYsMHgy
MywweDQxLDB4MDMsMHgzOSwweERGLDB4MzUsMHhBNSwweDdELAotICAgIDB4NjQsMHg0OSwweDAz
LDB4MzksMHhBNywweDJCLDB4MkYsMHgyRCwweEE1LDB4NDksMHg0NCwweDQ5LDB4QUYsMHhGRiww
eEJELDB4M0YsCi0gICAgMHg4NSwweDUxLDB4NDQsMHg0OSwweEE2LDB4QkYsMHhGRiwweDZFLDB4
QTUsMHg1MSwweDQ0LDB4NDksMHhERiwweEVGLDB4RkYsMHg5NSwKLSAgICAweDg1LDB4NTEsMHgy
MywweDQxLDB4RDUsMHhGQiwweEY4LDB4MDAsMHg4NSwweDUxLDB4MjMsMHg0MSwweEJGLDB4RDUs
MHg1RiwweERDLAotICAgIDB4NjQsMHg1MSwweDQ0LDB4NDksMHhBMiwweDdELDB4RDUsMHg1NSww
eDY0LDB4NTEsMHg0NCwweDQ5LDB4MzAsMHgzMiwweDNFLDB4MzIsCi0gICAgMHgwNiwweDZBLDB4
NDQsMHg1MSwweDBCLDB4QUYsMHhGRiwweEY1LDB4ODgsMHg3MiwweDg1LDB4NTksMHhBQSwweDBB
LDB4QkYsMHhGNSwKLSAgICAweEE4LDB4N0EsMHgwNiwweDZBLDB4ODgsMHg4MCwweEFCLDB4QTks
MHg4NywweDcyLDB4MjYsMHg2QSwweDc4LDB4QjgsMHgyRiwweEFFLAotICAgIDB4ODgsMHg3QSww
eDA1LDB4NjIsMHhCRCwweEFGLDB4MDgsMHgwMiwweEM4LDB4ODIsMHg4OCwweDdBLDB4RDUsMHgx
RCwweDM1LDB4RkYsCi0gICAgMHhFOSwweDgyLDB4ODcsMHg3QSwweDk3LDB4QkUsMHg4QSwweEFC
LDB4NEUsMHhCNCwweEM4LDB4ODIsMHgyRCwweDNELDB4QkQsMHgzNSwKLSAgICAweEIzLDB4RDUs
MHhBRiwweEJDLDB4QTIsMHhFMywweEE5LDB4ODksMHgzMSwweENELDB4RDAsMHhCQywweDdFLDB4
REUsMHg3RSwweEY4LAotICAgIDB4RjAsMHhDNCwweEFGLDB4QkMsMHhGRSwweEVBLDB4RkIsMHhG
RiwweDEwLDB4QzUsMHhCMCwweEJDLDB4QUIsMHhBRiwweEE5LDB4M0IsCi0gICAgMHgzMSwweENE
LDB4RjAsMHhDNCwweEE1LDB4RTUsMHhBRiwweEFGLDB4NTEsMHhDRCwweDEwLDB4QzUsMHg3Riww
eDZELDB4Q0IsMHg4RiwKLSAgICAweDUxLDB4Q0QsMHhGMCwweEM0LDB4QTgsMHhBRSwweEI3LDB4
QUEsMHg5MiwweENELDB4RjAsMHhDNCwweDI3LDB4QkYsMHhGRCwweDdFLAotICAgIDB4RDMsMHhE
RCwweDZGLDB4QjQsMHhGMCwweDZBLDB4N0UsMHg3RiwweDhGLDB4QjQsMHgyRCwweEFDLDB4MEEs
MHhDMCwweDZFLDB4RkYsCi0gICAgMHg4RiwweEI0LDB4MkQsMHhBQywweDgwLDB4QUIsMHg2Riww
eDdGLDB4NkUsMHhBQywweDJELDB4QUMsMHgzMCwweDdFLDB4NzUsMHg3RCwKLSAgICAweDZGLDB4
QUMsMHgwRCwweEE0LDB4QTgsMHhERiwweERELDB4NUQsMHg2RSwweEI0LDB4RUQsMHg5QiwweEVB
LDB4RUIsMHhGRCwweDJGLAotICAgIDB4NzMsMHhDRCwweDBELDB4QTQsMHg1NSwweDU1LDB4RjUs
MHgyQiwweDczLDB4Q0QsMHgyRCwweEE0LDB4RDUsMHgzNSwweDBCLDB4MDAsCi0gICAgMHhCMyww
eENELDB4RjAsMHhCQywweEI1LDB4QUIsMHgyQSwweEEwLDB4OTMsMHhDRCwweDUyLDB4QzUsMHgy
MywweEMyLDB4RjIsMHg3RCwKLSAgICAweDkzLDB4Q0QsMHgxMSwweEJELDB4QTAsMHhFMCwweDdC
LDB4REIsMHg3MywweENELDB4MTEsMHhCRCwweDJGLDB4QUYsMHgyRiwweDBELAotICAgIDB4QjQs
MHhENSwweDUyLDB4QzUsMHg2QSwweEMzLDB4OEIsMHhBMiwweDczLDB4Q0QsMHhCMCwweEI0LDB4
QTgsMHhEOCwweDc4LDB4RTgsCi0gICAgMHgzMiwweEM1LDB4OEYsMHhBQywweDAwLDB4OEEsMHhG
OSwweDU1LDB4MzIsMHhCRCwweEQwLDB4QjQsMHg3NCwweEY3LDB4QkIsMHhBOSwKLSAgICAweDEx
LDB4QkQsMHg5MCwweEFDLDB4RUIsMHhGQSwweDZDLDB4RkUsMHhCMCwweEI0LDB4NkYsMHhBQyww
eEJBLDB4RjcsMHhBRiwweEJCLAotICAgIDB4NjMsMHg1OSwweDAyLDB4NDksMHgwQSwweDc4LDB4
MDIsMHgwOCwweDg0LDB4NTksMHg0MywweDUxLDB4N0IsMHg1QSwweDcyLDB4NUUsCi0gICAgMHg0
MywweDUxLDB4MDMsMHg1MSwweDk4LDB4M0EsMHgyMiwweDJBLDB4NjQsMHg1OSwweDAyLDB4NDks
MHhGQywweERFLDB4QkEsMHhGNywKLSAgICAweDQzLDB4NTEsMHhFMywweDQ4LDB4MDAsMHg4MCww
eEFBLDB4Q0EsMHg0MywweDUxLDB4MjMsMHg1MSwweEUwLDB4QzIsMHgxOSwweDJCLAotICAgIDB4
NjMsMHg1MSwweDIzLDB4NTEsMHhGQSwweEY4LDB4QUUsMHg3MywweDY0LDB4NTksMHgyMywweDUx
LDB4QkYsMHhGNiwweEZFLDB4NTcsCi0gICAgMHg2MywweDU5LDB4MDMsMHg1MSwweEJFLDB4REYs
MHhCRiwweDI4LDB4ODQsMHg2MSwweDQzLDB4NTksMHgwRCwweDdCLDB4RkIsMHhGQiwKLSAgICAw
eDg0LDB4NjEsMHg0MywweDU5LDB4RkMsMHhGRSwweEJGLDB4RkYsMHg4NCwweDYxLDB4NDMsMHg1
OSwweEVGLDB4QkQsMHhCQiwweEVGLAotICAgIDB4ODMsMHg2MSwweDY0LDB4NTksMHhGRCwweEZG
LDB4NUIsMHg3RiwweEE0LDB4NjEsMHg0MywweDU5LDB4QUQsMHhBQiwweEYyLDB4QkIsCi0gICAg
MHg4NCwweDYxLDB4NDMsMHg1OSwweEYwLDB4NUQsMHg3RiwweDdGLDB4NjMsMHg1OSwweDIzLDB4
NTEsMHg4RSwweEFGLDB4MjIsMHgyMiwKLSAgICAweDYzLDB4NTksMHgyMiwweDUxLDB4RjIsMHg4
MCwweEMwLDB4QUYsMHg0MywweDU5LDB4MDMsMHg1MSwweDgwLDB4RUEsMHhBRSwweDAwLAotICAg
IDB4NjQsMHg1OSwweDAzLDB4NTEsMHhBQSwweEFBLDB4NkEsMHhFOCwweDY0LDB4NTksMHgwMyww
eDUxLDB4RTMsMHhFQSwweEZGLDB4N0YsCi0gICAgMHgyMywweDUxLDB4RTIsMHg0OCwweDg4LDB4
RTgsMHg3QSwweEZBLDB4NDMsMHg1MSwweDAyLDB4NDksMHgyNSwweEQ5LDB4RDMsMHhGRCwKLSAg
ICAweDIzLDB4NTEsMHgwMiwweDQ5LDB4ODgsMHhCMiwweDI4LDB4QTQsMHgyMywweDUxLDB4MDMs
MHg0OSwweEMyLDB4QjIsMHhFMiwweDAyLAotICAgIDB4MjksMHg5MywweDQzLDB4NTksMHhENSww
eEQ1LDB4QjUsMHgyRCwweEVDLDB4QUIsMHhDNywweDhBLDB4MkQsMHgyOSwweDBBLDB4MjIsCi0g
ICAgMHhDQywweEEzLDB4NkEsMHg5QiwweEEwLDB4QjgsMHg2QywweDVFLDB4NkEsMHg5QiwweDRB
LDB4OTMsMHg2NCwweDE0LDB4RTUsMHgyMiwKLSAgICAweDhBLDB4OUIsMHg0OSwweDkzLDB4MzUs
MHhFRCwweEZGLDB4N0UsMHg4QiwweDlCLDB4NkEsMHg5QiwweDAyLDB4QkYsMHg3RCwweDU1LAot
ICAgIDB4OEIsMHg5QiwweDRBLDB4OUIsMHgwMCwweEFBLDB4QUYsMHhCRiwweDhCLDB4OUIsMHg2
QSwweDlCLDB4MjIsMHgyQSwweEQ3LDB4MjcsCi0gICAgMHhBQywweEEzLDB4MDksMHg4QiwweEUw
LDB4QUEsMHhGMCwweDVDLDB4RTgsMHg4QSwweEE3LDB4N0EsMHg3QywweDU0LDB4RTQsMHhGNCwK
LSAgICAweEM3LDB4ODIsMHg0NiwweDcyLDB4NkUsMHg2QywweDc4LDB4RTgsMHg0NiwweDcyLDB4
NDQsMHg1MSwweDc2LDB4NUUsMHg3QSwweEUwLAotICAgIDB4NjQsMHg0OSwweDAzLDB4NDksMHhB
OCwweERGLDB4RkYsMHhENiwweDQzLDB4NDksMHgwMywweDQxLDB4MDAsMHg4QSwweDI5LDB4QUYs
Ci0gICAgMHg0MywweDQ5LDB4RTMsMHgzOCwweDdBLDB4N0UsMHhGRSwweEUyLDB4MjUsMHg0MSww
eEUzLDB4NDAsMHgzNSwweDk1LDB4QjUsMHhGRiwKLSAgICAweDg0LDB4NTEsMHgyNCwweDQxLDB4
QUIsMHhCOSwweDJELDB4OTksMHhBNSwweDUxLDB4NDQsMHg0OSwweDZBLDB4NjIsMHhFMywweEVB
LAotICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhGRSwweEZDLDB4RkUsMHg1RSwweDQ0LDB4NDks
MHhFMywweDM4LDB4RDYsMHhGRSwweEJFLDB4M0YsCi0gICAgMHg0NCwweDQ5LDB4MjQsMHg0MSww
eEY1LDB4NzYsMHg3OCwweDY4LDB4MjMsMHg0MSwweEUzLDB4MzgsMHhBOCwweEI4LDB4OEUsMHhC
OCwKLSAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4N0YsMHg3RCwweEJELDB4RUEsMHgyMywweDQx
LDB4RTIsMHgzOCwweEI4LDB4QkEsMHhEOCwweDVFLAotICAgIDB4NDQsMHg0MSwweEUzLDB4Mzgs
MHhGQSwweEZFLDB4RUYsMHgzRiwweDQ0LDB4NDEsMHhFMiwweDQwLDB4RUYsMHhGNywweEFCLDB4
QTgsCi0gICAgMHg0NCwweDQxLDB4RTIsMHgzOCwweEQ3LDB4N0YsMHhFQSwweEZBLDB4RTMsMHg0
MCwweDAzLDB4MzksMHhBQSwweDhCLDB4QUYsMHhGQiwKLSAgICAweDg1LDB4NTEsMHhFMywweDQw
LDB4QkQsMHgyRCwweDJGLDB4MkYsMHhFNiwweDYxLDB4ODQsMHg1MSwweDhELDB4QUQsMHhBRiww
eEEzLAotICAgIDB4ODUsMHg1OSwweEUzLDB4NDAsMHhGOCwweEQ4LDB4NzgsMHhCOCwweDQ0LDB4
NTEsMHhFMywweDQwLDB4MEEsMHgwQiwweEJGLDB4RjcsCi0gICAgMHg2NCwweDUxLDB4MDMsMHg0
OSwweEEyLDB4QTAsMHhBOSwweDM1LDB4NjQsMHg1MSwweDIzLDB4NDksMHgwQSwweDBGLDB4Mjcs
MHhFNSwKLSAgICAweEE1LDB4NTksMHg0NCwweDQ5LDB4OEEsMHhBMywweDhGLDB4QUQsMHg2NSww
eDQ5LDB4QTIsMHgzMCwweDVDLDB4NUMsMHg3OCwweEY4LAotICAgIDB4QzMsMHgzMCwweEEyLDB4
MzAsMHhFRiwweEJBLDB4QjAsMHhDMCwweDAzLDB4MzksMHhBMiwweDI4LDB4MkQsMHhBRiwweEY3
LDB4QTcsCi0gICAgMHgyMywweDQxLDB4RTMsMHgzOCwweEZBLDB4M0QsMHhERCwweDdELDB4MDMs
MHgzOSwweEEyLDB4MzAsMHgwMCwweDg4LDB4QTgsMHhBNywKLSAgICAweDY1LDB4NDksMHgwMyww
eDM5LDB4QUQsMHhBRCwweEFELDB4MEQsMHg2NCwweDUxLDB4MjMsMHg0OSwweEVBLDB4QTIsMHg2
QiwweDdBLAotICAgIDB4NjQsMHg1MSwweDQ0LDB4NDksMHgzRCwweEExLDB4MDIsMHgwMSwweDg1
LDB4NTksMHg2NCwweDUxLDB4NjksMHhCOSwweEFCLDB4MEEsCi0gICAgMHhBNSwweDU5LDB4NDQs
MHg1MSwweEE4LDB4MjgsMHhBQSwweEI2LDB4QzYsMHg1OSwweDg1LDB4NTEsMHg1QSwweDYzLDB4
REYsMHhENywKLSAgICAweDg1LDB4NTEsMHgyMywweDQ5LDB4RjgsMHg1QSwweDdDLDB4NUMsMHgy
NCwweDQxLDB4MDIsMHg0MSwweEJCLDB4M0YsMHgwQiwweDAwLAotICAgIDB4NDQsMHg0OSwweDAz
LDB4NDEsMHhGRCwweEUyLDB4Q0EsMHhFOCwweDQ0LDB4NDEsMHhFMiwweDM4LDB4RTIsMHhFQiww
eEZCLDB4NUUsCi0gICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDJCLDB4QjksMHhCRiwweEI5LDB4
NDQsMHg0MSwweDAzLDB4NDEsMHgyQSwweEI3LDB4QUYsMHhGQiwKLSAgICAweDIzLDB4NDEsMHgw
MywweDQxLDB4MjgsMHgwOCwweEMwLDB4N0IsMHgyMywweDQxLDB4MDMsMHgzOSwweEZELDB4Q0Is
MHhCMiwweEUzLAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhCOCwweEZDLDB4RjgsMHhBQSww
eDAzLDB4NDEsMHhDMiwweDM4LDB4QTAsMHhBRSwweEZBLDB4NzMsCi0gICAgMHgyNCwweDQxLDB4
RTMsMHgzOCwweEFCLDB4RkYsMHhCOSwweEI1LDB4NjQsMHg0OSwweDAzLDB4MzksMHgwQiwweEJG
LDB4QkQsMHhCNSwKLSAgICAweDg0LDB4NDksMHgyMywweDQxLDB4MzIsMHhCRCwweEVBLDB4RkEs
MHg4NSwweDQ5LDB4MjMsMHg0MSwweDgwLDB4RUEsMHhERiwweDU1LAotICAgIDB4NDQsMHg0MSww
eDAzLDB4NDEsMHhBOCwweEEwLDB4RTIsMHg3QywweDQ0LDB4NDksMHhFMiwweDM4LDB4RUEsMHhB
MiwweEIwLDB4OUYsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweDM1LDB4RDUsMHg1NywweDVG
LDB4NjQsMHg0OSwweDAyLDB4MzksMHgwMCwweDNCLDB4QkIsMHhCRCwKLSAgICAweDg1LDB4NDks
MHgwMywweDQxLDB4NjgsMHg3QSwweEJFLDB4RjcsMHg2NCwweDQ5LDB4MDMsMHg0MSwweDJGLDB4
M0QsMHhBQSwweDBBLAotICAgIDB4QTUsMHg1MSwweDQ0LDB4NDksMHg4QSwweEZGLDB4RjUsMHg1
RiwweEE1LDB4NTEsMHgyMywweDQ5LDB4REMsMHhBOCwweEEyLDB4MEEsCi0gICAgMHhBNSwweDU5
LDB4MjMsMHg0OSwweERGLDB4RkIsMHhGQSwweDJDLDB4ODUsMHg1MSwweDQ0LDB4NDksMHhBQiww
eEJGLDB4OUUsMHhFQywKLSAgICAweEE1LDB4NTksMHg0NCwweDUxLDB4QjUsMHhCRiwweEFCLDB4
RkIsMHhBNSwweDU5LDB4NjQsMHg1MSwweEFCLDB4RkYsMHg5NiwweEY1LAotICAgIDB4MDYsMHg2
QSwweDY0LDB4NTksMHgyMywweDNGLDB4QkYsMHhCQiwweDY3LDB4NzIsMHhFNiwweDYxLDB4MDAs
MHgwMywweDhELDB4RjUsCi0gICAgMHhBOCwweDdBLDB4MDYsMHg2QSwweDBBLDB4RkIsMHhGRiww
eEQ1LDB4QzksMHg4MiwweDQ2LDB4NkEsMHhBMiwweDgyLDB4QUYsMHhCNSwKLSAgICAweEU5LDB4
ODIsMHg4OCwweDdBLDB4M0YsMHhCNSwweEFGLDB4QkEsMHgwRCwweEFDLDB4QzgsMHg4MiwweDM1
LDB4MzUsMHhGRCwweDk1LAotICAgIDB4QjMsMHhERCwweDBDLDB4QTQsMHg4QSwweDAzLDB4MDks
MHgwRCwweDcyLDB4RDUsMHhDRiwweEJDLDB4N0UsMHg1QywweDc4LDB4NzgsCi0gICAgMHhDRiww
eEJDLDB4QUYsMHhCQywweDk4LDB4QkMsMHhCQiwweEQ3LDB4RjAsMHhDNCwweEFGLDB4QkMsMHgy
QiwweEFCLDB4QUYsMHhBNSwKLSAgICAweDEwLDB4QzUsMHhDRiwweEJDLDB4MkEsMHgwQiwweDNC
LDB4RkYsMHgzMSwweENELDB4RjAsMHhDNCwweEE4LDB4OEEsMHhDRiwweDc1LAotICAgIDB4MzEs
MHhDRCwweEQwLDB4QkMsMHgwMiwweDgwLDB4QTgsMHhBRCwweDMxLDB4Q0QsMHhBRiwweEJDLDB4
RTAsMHhGQSwweDZBLDB4NkEsCi0gICAgMHhEMCwweEJDLDB4MkUsMHhBQywweDY4LDB4NzgsMHg1
RSwweERGLDB4NEUsMHhBQywweDBELDB4QTQsMHhBQiwweEJGLDB4N0YsMHhFRiwKLSAgICAweDRF
LDB4QUMsMHgwRCwweEE0LDB4RUEsMHhDQiwweEE5LDB4QkUsMHhGMCwweEJDLDB4MkQsMHhBNCww
eDc1LDB4QTksMHgyRiwweDBCLAotICAgIDB4OTMsMHhENSwweDRFLDB4QUMsMHg1NSwweEJGLDB4
MEEsMHgwQSwweEIzLDB4RDUsMHg2RiwweEI0LDB4RDUsMHhBQSwweDIwLDB4MDAsCi0gICAgMHhC
NCwweEQ1LDB4MTEsMHhDNSwweDI5LDB4MEEsMHgwMCwweDAwLDB4QjQsMHhENSwweDczLDB4Q0Qs
MHgyMiwweDBBLDB4MDQsMHhENiwKLSAgICAweEQ0LDB4RDUsMHgzMiwweEM1LDB4NzgsMHg1OCww
eDdDLDB4NTgsMHg1MiwweEM1LDB4MTIsMHhCRCwweDAyLDB4NkIsMHg3NSwweDVELAotICAgIDB4
MzIsMHhCRCwweEIwLDB4QUMsMHhBMCwweEJBLDB4QUUsMHg3NywweDkzLDB4Q0QsMHgxMSwweEJE
LDB4M0QsMHgyRiwweDBELDB4MDksCi0gICAgMHg5MywweENELDB4MzIsMHhDNSwweDgwLDB4ODAs
MHg4MCwweDYwLDB4OTMsMHhDRCwweEIwLDB4QjQsMHhFOCwweEVBLDB4RkUsMHg1RiwKLSAgICAw
eEYwLDB4QkMsMHg4RiwweEFDLDB4OUEsMHhBOCwweEZBLDB4QUYsMHgxMSwweEJELDB4QjAsMHhB
QywweDAyLDB4QzAsMHhGQSwweDdDLAotICAgIDB4RDAsMHhCNCwweDZFLDB4QUMsMHhFMiwweEVD
LDB4RkUsMHhERiwweEQwLDB4QjQsMHg4RiwweEFDLDB4RDUsMHhERiwweEU5LDB4M0YsCi0gICAg
MHg4NCwweDU5LDB4MjMsMHg1MSwweEE4LDB4RUUsMHg1QiwweDU2LDB4NjMsMHg1MSwweDIzLDB4
NTEsMHhGOCwweDk1LDB4OTUsMHhBNSwKLSAgICAweDY0LDB4NTksMHgwMiwweDQ5LDB4RUEsMHg2
QSwweDdDLDB4RkEsMHg2NCwweDU5LDB4MDIsMHg0OSwweEJELDB4MjIsMHhFRSwweEVBLAotICAg
IDB4NjQsMHg1MSwweDAzLDB4NTEsMHhFRiwweDdBLDB4RTcsMHhBRiwweDY0LDB4NTksMHgyMyww
eDUxLDB4QkYsMHhDQiwweEJCLDB4RkEsCi0gICAgMHg2MywweDU5LDB4MjMsMHg1MSwweDdGLDB4
RkQsMHhBRiwweEIzLDB4NjMsMHg1OSwweDIzLDB4NTEsMHg3RiwweEZELDB4OEIsMHg4QiwKLSAg
ICAweDg0LDB4NjEsMHg0MywweDU5LDB4QTksMHgyRiwweDJBLDB4RUEsMHg4NCwweDYxLDB4NDMs
MHg1OSwweEY4LDB4N0MsMHg3OCwweEUzLAotICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHhBRCww
eEI1LDB4OUYsMHhENSwweDg0LDB4NjEsMHg2MywweDU5LDB4QTEsMHhBRSwweDU1LDB4ODUsCi0g
ICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweENBLDB4QUEsMHhFQSwweEZGLDB4NjMsMHg1OSwweDIz
LDB4NTEsMHg4MywweEFGLDB4QjQsMHgwRSwKLSAgICAweDYzLDB4NTksMHgyMiwweDU5LDB4ODAs
MHg4MiwweDNFLDB4RUUsMHg2MywweDU5LDB4MjMsMHg1MSwweEEyLDB4RUUsMHhFQiwweEVGLAot
ICAgIDB4NDMsMHg1OSwweDAyLDB4NTEsMHhBMCwweDNFLDB4M0YsMHhGOCwweDY0LDB4NTksMHgy
MywweDUxLDB4RUEsMHhGMiwweEYyLDB4RkIsCi0gICAgMHg0MywweDU5LDB4RTIsMHg0OCwweEIw
LDB4N0EsMHhGRSwweEFBLDB4MjMsMHg1MSwweEUyLDB4NDgsMHg2MiwweEVCLDB4QUYsMHhBQSwK
LSAgICAweDIzLDB4NTEsMHhFMiwweDQ4LDB4MzcsMHg4QSwweDgyLDB4MDIsMHgyMywweDUxLDB4
RTIsMHg0OCwweEU4LDB4RjAsMHg2QiwweDJFLAotICAgIDB4MjMsMHg1MSwweEUyLDB4NDgsMHgz
QiwweEZELDB4RjUsMHhCRiwweEE1LDB4NjksMHhFMiwweDQ4LDB4REYsMHhCRiwweEJGLDB4MkYs
Ci0gICAgMHg4QiwweDlCLDB4NDQsMHg1OSwweDJELDB4MkIsMHgwQiwweDAyLDB4Q0MsMHhBMyww
eDhCLDB4OUIsMHgyQiwweDYyLDB4RkEsMHhERSwKLSAgICAweEFDLDB4QTMsMHg2QSwweDlCLDB4
RUMsMHhBOSwweDJBLDB4QkEsMHg4QiwweDlCLDB4MjksMHg5MywweDJBLDB4MjIsMHhDOCwweDdD
LAotICAgIDB4OEEsMHg5QiwweDI5LDB4OTMsMHhFMCwweEUwLDB4RUUsMHhERCwweDQ5LDB4OTMs
MHgwOSwweDkzLDB4ODAsMHg4QSwweEE4LDB4RkYsCi0gICAgMHg2QSwweDlCLDB4MjksMHg5Myww
eDBBLDB4OEYsMHhGOCwweEVELDB4OEIsMHg5QiwweDRBLDB4OTMsMHhCOCwweEJCLDB4QUYsMHhB
RiwKLSAgICAweDZBLDB4OUIsMHhFOCwweDhBLDB4NzgsMHhFMCwweDY4LDB4NjAsMHhDOCwweDgy
LDB4ODcsMHg3QSwweEJDLDB4QTgsMHhBMCwweDgzLAotICAgIDB4RTgsMHg4MiwweEE3LDB4N0Es
MHhERiwweDhGLDB4MEYsMHhBNSwweEM4LDB4ODIsMHhBNSwweDYxLDB4N0EsMHhGOCwweEUwLDB4
QTgsCi0gICAgMHhFNiwweDYxLDB4MDMsMHg0MSwweDU3LDB4NTYsMHg1OCwweDc4LDB4MjMsMHg0
OSwweEUzLDB4NDAsMHhBQSwweDNFLDB4RkEsMHhFMCwKLSAgICAweDY0LDB4NTEsMHgwMywweDQx
LDB4RkYsMHhGRiwweDM1LDB4QjUsMHg2NCwweDUxLDB4MDMsMHg0MSwweDU1LDB4RkYsMHhFQSww
eEMyLAotICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHgyQSwweEZGLDB4NzIsMHhFQSwweDY0LDB4
NDksMHgwMywweDQxLDB4MDMsMHhBRiwweEVGLDB4RjUsCi0gICAgMHg2NSwweDQ5LDB4RTMsMHgz
OCwweEZDLDB4NUUsMHg3RiwweDZGLDB4NDQsMHg0OSwweEUyLDB4MzgsMHgzNywweEI1LDB4NzUs
MHg1NSwKLSAgICAweDY1LDB4NDksMHhFMiwweDM4LDB4MkEsMHgwQSwweEE5LDB4QUQsMHg2NCww
eDQ5LDB4MjMsMHg0MSwweDVDLDB4REYsMHgyNywweENCLAotICAgIDB4NjQsMHg0OSwweDAyLDB4
NDEsMHhGQiwweEZCLDB4N0EsMHhDRSwweDIzLDB4NDEsMHhDMiwweDM4LDB4N0MsMHhCOCwweEJB
LDB4RUYsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDBBLDB4MkIsMHhBRiwweEJFLDB4NDMs
MHg0OSwweEUzLDB4MzgsMHhCOCwweEZGLDB4RUQsMHhGRiwKLSAgICAweDIzLDB4NDEsMHhFMiww
eDM4LDB4QUEsMHgzOCwweEJGLDB4REUsMHgyNCwweDQxLDB4RTMsMHgzOCwweEI3LDB4MzcsMHgw
NywweEE4LAotICAgIDB4ODUsMHg1MSwweDI0LDB4NDksMHgyNywweDBCLDB4MkIsMHhCRiwweEU2
LDB4NjEsMHg4NSwweDU5LDB4MkEsMHgyMiwweDg4LDB4QkQsCi0gICAgMHhFNiwweDYxLDB4NDQs
MHg1MSwweDVDLDB4NzgsMHhFMCwweEZFLDB4ODUsMHg1MSwweDA0LDB4NDksMHhERCwweEFCLDB4
QUEsMHgwOCwKLSAgICAweDY0LDB4NTEsMHgyNCwweDQ5LDB4RTcsMHhBQSwweDI4LDB4RTgsMHg4
NSwweDUxLDB4MjMsMHg0OSwweEU1LDB4MkUsMHgyQSwweDBCLAotICAgIDB4QTUsMHg1MSwweDIz
LDB4NDksMHhCRiwweEZFLDB4REMsMHg3QSwweDQ0LDB4NDksMHhDMywweDM4LDB4NzgsMHg1OCww
eDVFLDB4NUUsCi0gICAgMHhDMywweDMwLDB4QTIsMHgzMCwweDhDLDB4NDgsMHg3RSwweERELDB4
QzIsMHgzMCwweEEyLDB4MjgsMHg4MiwweDhBLDB4OTUsMHgyRSwKLSAgICAweEUzLDB4MzgsMHhD
MiwweDMwLDB4NDEsMHg0MSwweERGLDB4QjYsMHgwMywweDQxLDB4QTIsMHgzMCwweEFELDB4QkUs
MHgyRiwweDJGLAotICAgIDB4NjQsMHg1MSwweDAzLDB4MzksMHgyRCwweEJELDB4MEYsMHgyQiww
eDY0LDB4NTEsMHgyNCwweDQ5LDB4RUEsMHg2MCwweEZDLDB4N0EsCi0gICAgMHg4NSwweDUxLDB4
MjMsMHg0OSwweDI5LDB4MDksMHhCRCwweDNGLDB4QTUsMHg1OSwweDQ0LDB4NTEsMHhBQSwweEEz
LDB4NkUsMHg2RiwKLSAgICAweDg1LDB4NTksMHgyNCwweDQ5LDB4MkEsMHhBQSwweEFBLDB4NUIs
MHg4NSwweDUxLDB4NDQsMHg0OSwweEJBLDB4RjIsMHhFMCwweDUxLAotICAgIDB4ODUsMHg1MSww
eDAzLDB4NDEsMHhGOCwweEZBLDB4N0UsMHg1RiwweDIzLDB4NDEsMHgwMywweDQxLDB4MkUsMHg4
OCwweDAwLDB4MzAsCi0gICAgMHgyMywweDQxLDB4RTMsMHgzOCwweEEwLDB4RTgsMHhGQSwweDdG
LDB4NDQsMHg0MSwweEUyLDB4MzgsMHg3QSwweDczLDB4RjUsMHhENSwKLSAgICAweDIzLDB4NDEs
MHhFMiwweDM4LDB4MTUsMHhENSwweEI3LDB4REIsMHgyMywweDQxLDB4RTIsMHgzOCwweEEyLDB4
ODgsMHhFMywweEFCLAotICAgIDB4NDQsMHg0OSwweEUyLDB4MzgsMHhGNywweDc3LDB4QUUsMHgy
MiwweDQ0LDB4NDksMHgwMywweDM5LDB4RDUsMHhGNSwweEZFLDB4RDgsCi0gICAgMHgyMywweDQx
LDB4MDMsMHgzOSwweDc2LDB4MzgsMHgwMCwweDBCLDB4MjMsMHg0MSwweEUyLDB4MzgsMHhGRCww
eEUwLDB4RTAsMHg4MCwKLSAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4MTcsMHhGRSwweERBLDB4
M0YsMHg0NCwweDQxLDB4MDMsMHg0MSwweDI3LDB4MDksMHgyNywweDlGLAotICAgIDB4NDQsMHg0
MSwweDIzLDB4NDEsMHg3MiwweEUwLDB4MDgsMHhFMCwweDQ0LDB4NDEsMHgwMywweDM5LDB4RkEs
MHg3QSwweDdFLDB4NUYsCi0gICAgMHg0NCwweDQxLDB4RTIsMHgzOCwweEZFLDB4RDUsMHg1NSww
eERELDB4MjMsMHg0MSwweEMyLDB4MzAsMHgzQSwweEFBLDB4REEsMHhGOCwKLSAgICAweDQzLDB4
NDEsMHgwMywweDM5LDB4N0EsMHhGQiwweEY1LDB4N0QsMHg0MywweDQxLDB4MDMsMHgzOSwweDI5
LDB4RUYsMHhFQiwweEY5LAotICAgIDB4MjMsMHg0MSwweDAzLDB4NDEsMHgwOCwweEY3LDB4RkUs
MHhGQSwweDY0LDB4NDksMHgwMywweDQxLDB4MDIsMHgyOSwweEZELDB4NTUsCi0gICAgMHg4NSww
eDUxLDB4MjMsMHg0MSwweEZBLDB4RTIsMHhBMywweEE5LDB4ODUsMHg1MSwweDI0LDB4NDksMHhB
RiwweEI1LDB4QkUsMHhCQSwKLSAgICAweEE1LDB4NTEsMHgyNCwweDQ5LDB4OEEsMHhBQSwweEVC
LDB4REYsMHhBNSwweDU5LDB4NDQsMHg0OSwweEZBLDB4QTIsMHgyQiwweEFELAotICAgIDB4RTYs
MHg2MSwweDY0LDB4NTEsMHhENywweEZFLDB4M0YsMHgyQSwweDI3LDB4NkEsMHg2NCwweDUxLDB4
RDUsMHhGRiwweDNGLDB4MEEsCi0gICAgMHgyNiwweDZBLDB4ODQsMHg1OSwweEJELDB4RkIsMHhF
QywweEU4LDB4MjYsMHg2QSwweEM1LDB4NjEsMHhGNywweEVFLDB4QTUsMHgzRCwKLSAgICAweDI3
LDB4NkEsMHhDNSwweDYxLDB4RkEsMHhENiwweDlBLDB4QzAsMHhBOCwweDdBLDB4MDYsMHg2Miww
eDJELDB4M0QsMHhENSwweEY1LAotICAgIDB4QzksMHg4MiwweDY3LDB4NzIsMHgwQSwweEFBLDB4
NUYsMHhERCwweDBBLDB4OEIsMHg2NywweDcyLDB4M0IsMHhCRCwweEJELDB4NzcsCi0gICAgMHg1
MiwweENELDB4RTksMHg4MiwweDBCLDB4MEQsMHgyRCwweEI1LDB4NzIsMHhENSwweEQwLDB4QkMs
MHg3OCwweDc4LDB4NjgsMHhFQSwKLSAgICAweEYwLDB4QzQsMHg4RiwweEI0LDB4RkUsMHg3RSww
eDZBLDB4NjAsMHhDRiwweEJDLDB4NkUsMHhCNCwweDBBLDB4MkEsMHgyRiwweEI5LAotICAgIDB4
RjAsMHhDNCwweDhGLDB4QjQsMHhBOCwweEFBLDB4MkIsMHhCRCwweEYwLDB4QzQsMHhDRiwweEJD
LDB4MDksMHgyRiwweEY1LDB4NTYsCi0gICAgMHgxMCwweEM1LDB4QUYsMHhCQywweDAyLDB4RTgs
MHhGRSwweDVELDB4RjAsMHhCQywweDRFLDB4QUMsMHhFOCwweEZBLDB4RkUsMHg3QSwKLSAgICAw
eDhGLDB4QjQsMHgyRCwweEFDLDB4REYsMHg3NywweEY1LDB4MkEsMHhEMCwweEJDLDB4MEQsMHhB
NCwweDVELDB4REQsMHhGRCwweDJBLAotICAgIDB4MzEsMHhDNSwweDBELDB4QTQsMHhENSwweEY3
LDB4QUYsMHgwMiwweDUyLDB4Q0QsMHhBRiwweEI0LDB4QUQsMHgwQiwweDBBLDB4MDAsCi0gICAg
MHg3MiwweENELDB4MzIsMHhDNSwweDA3LDB4MDgsMHgwQSwweEZCLDB4RDQsMHhENSwweDUyLDB4
QzUsMHgwQSwweDJCLDB4QkQsMHg3NSwKLSAgICAweEQ0LDB4RDUsMHg5MywweENELDB4RTIsMHgy
OCwweEVELDB4RkQsMHhCNCwweEQ1LDB4NTIsMHhDNSwweEFFLDB4RkEsMHg3QywweEUwLAotICAg
IDB4OTMsMHhDRCwweEQwLDB4QjQsMHhFMCwweDZBLDB4RjgsMHg3OCwweDEyLDB4QkQsMHg5MCww
eEFDLDB4RTgsMHg3QSwweDdFLDB4N0YsCi0gICAgMHhBRiwweEFDLDB4NkYsMHhBQywweDgyLDB4
OUIsMHg5NywweEJELDB4OTMsMHhDRCwweEQwLDB4QjQsMHgwRCwweDhGLDB4MkQsMHhBRCwKLSAg
ICAweDkzLDB4Q0QsMHhEMSwweEI0LDB4ODAsMHhFMCwweDdBLDB4NTcsMHhGMSwweEJDLDB4NkYs
MHhBNCwweDc4LDB4RDgsMHhERSwweEY3LAotICAgIDB4RDAsMHhCNCwweDkwLDB4QUMsMHgwQSww
eDAzLDB4MDMsMHgwQSwweEYwLDB4QjQsMHg4RiwweEFDLDB4RUMsMHg3QSwweEZBLDB4RkEsCi0g
ICAgMHhCMCwweEI0LDB4NEYsMHhBNCwweEE4LDB4QUEsMHgyNiwweDgwLDB4RjEsMHhCNCwweDhG
LDB4QUMsMHgzNywweDJELDB4MEYsMHgyQiwKLSAgICAweDY0LDB4NTksMHgwMywweDQ5LDB4Rjgs
MHhBRiwweEVGLDB4RkQsMHg2NCwweDU5LDB4MjMsMHg1MSwweEZCLDB4RDksMHhGRiwweDVGLAot
ICAgIDB4NDMsMHg1MSwweDAzLDB4NDksMHhBMCwweDZCLDB4QTgsMHgwQSwweDQzLDB4NTEsMHgw
MiwweDQ5LDB4QjgsMHgzRSwweDJGLDB4MDgsCi0gICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweDlF
LDB4RDEsMHhBOSwweEUzLDB4ODQsMHg1OSwweDIzLDB4NTEsMHhGOCwweDdCLDB4RkYsMHhBQiwK
LSAgICAweDYzLDB4NTksMHgyMywweDUxLDB4QjMsMHhCRSwweEJFLDB4RkUsMHg2NCwweDU5LDB4
NDMsMHg1OSwweDhELDB4MEEsMHhGRSwweEQ4LAotICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHhF
QiwweEIzLDB4NkQsMHg2OSwweEE0LDB4NjEsMHg0MywweDU5LDB4RTMsMHg3QiwweEZELDB4RjUs
Ci0gICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweDdBLDB4N0IsMHg3QiwweDg5LDB4ODQsMHg1OSww
eDQzLDB4NTksMHhBRiwweEQ5LDB4N0YsMHg3RSwKLSAgICAweDYzLDB4NTksMHg0MywweDU5LDB4
RTgsMHg1QSwweDc3LDB4NjUsMHg2MywweDU5LDB4MDIsMHg1MSwweDA4LDB4QkEsMHg3QSwweDZB
LAotICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHhBQSwweDhCLDB4M0QsMHgzNSwweDY0LDB4NTks
MHgyMywweDUxLDB4RUEsMHhGQSwweDdFLDB4RkUsCi0gICAgMHg0MywweDU5LDB4MjMsMHg1MSww
eDYzLDB4QUEsMHhGNywweDczLDB4NDQsMHg1OSwweDAzLDB4NTEsMHgwMiwweEEyLDB4QkEsMHg2
MywKLSAgICAweDIzLDB4NTEsMHgwMiwweDQ5LDB4Q0EsMHg2QSwweDZGLDB4NTksMHg0MywweDUx
LDB4MDIsMHg0OSwweDdGLDB4REEsMHhBMywweEJCLAotICAgIDB4MjMsMHg1MSwweDAzLDB4NDks
MHhCRCwweEI1LDB4MzQsMHhBRCwweDIzLDB4NTEsMHgwMywweDQ5LDB4RkYsMHhCQiwweEZCLDB4
NDMsCi0gICAgMHg0MiwweDUxLDB4MDIsMHg0OSwweEY1LDB4N0YsMHhCRiwweEJGLDB4NEEsMHg5
MywweDQzLDB4NTksMHhGNSwweEI1LDB4MkQsMHgyQiwKLSAgICAweENDLDB4QTMsMHgyOSwweDkz
LDB4MEQsMHgwMywweDAyLDB4QTIsMHhDQywweEEzLDB4NEEsMHg5QiwweEUwLDB4RTgsMHhGQyww
eERFLAotICAgIDB4OEIsMHg5QiwweDI5LDB4OTMsMHhBOCwweEFDLDB4RkEsMHg3QSwweDZBLDB4
OUIsMHgyQSwweDkzLDB4NzIsMHhBQSwweEJGLDB4OUQsCi0gICAgMHg2QiwweDlCLDB4MjksMHg5
MywweEZGLDB4Q0IsMHhFNywweDU3LDB4MjksMHg5MywweDA5LDB4OEIsMHhGQSwweDM4LDB4Mzgs
MHgyMCwKLSAgICAweDZCLDB4OUIsMHgyOSwweDkzLDB4RUQsMHhGNSwweDNELDB4QUQsMHg4Qiww
eDlCLDB4NEEsMHg5QiwweEVGLDB4QUIsMHgwQiwweDgzLAotICAgIDB4NkEsMHg5QiwweEM4LDB4
ODIsMHg2MCwweDYwLDB4RjAsMHhGOCwweEM4LDB4ODIsMHg4NywweDdBLDB4RTgsMHg3NCwweDVF
LDB4RDYsCi0gICAgMHhDOCwweDgyLDB4NjYsMHg3MiwweDBBLDB4QkIsMHhGRiwweEZELDB4QTgs
MHg3QSwweDY3LDB4NzIsMHhGNywweDdGLDB4RUMsMHgzNiwKLSAgICAweDY4LDB4N0EsMHg0NCww
eDQ5LDB4N0EsMHhFOCwweDgwLDB4QTAsMHhDNSwweDYxLDB4MDMsMHg0OSwweDU1LDB4NUYsMHg1
NiwweDU4LAotICAgIDB4MjMsMHg0OSwweEUzLDB4NDAsMHg4RiwweDk3LDB4MzcsMHhFQiwweDY0
LDB4NDksMHgyMywweDQ5LDB4MEQsMHg4NSwweEI1LDB4QjUsCi0gICAgMHg2NCwweDUxLDB4MDMs
MHg0MSwweDdFLDB4NUEsMHhGOCwweEUwLDB4MjMsMHg0MSwweDAzLDB4NDEsMHhGNiwweDIxLDB4
NDEsMHg1RiwKLSAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4RjgsMHhFOCwweDVDLDB4NTYsMHgw
MywweDQxLDB4QzIsMHgzOCwweEVGLDB4RkEsMHgzNSwweEJFLAotICAgIDB4NDQsMHg0OSwweEUy
LDB4MzgsMHhBRCwweDNGLDB4REUsMHhBQiwweDY0LDB4NDksMHgyMywweDQxLDB4OEIsMHhGOSww
eEY1LDB4QUQsCi0gICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweEM2LDB4NTcsMHhGNiwweEU4LDB4
MDMsMHg0MSwweEMyLDB4MzgsMHhGRSwweEEwLDB4ODAsMHg3MCwKLSAgICAweDAzLDB4NDEsMHhD
MiwweDM4LDB4QUEsMHhBRSwweEVGLDB4QjcsMHgyNCwweDQxLDB4RTMsMHgzOCwweDVFLDB4REYs
MHgxRiwweEVELAotICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHg5QiwweEI2LDB4QUMsMHhBQSww
eDQ1LDB4NDEsMHgwNCwweDQxLDB4RUYsMHhGQSwweDVGLDB4NzcsCi0gICAgMHg4NSwweDUxLDB4
MjQsMHg0OSwweEZGLDB4REQsMHhEQiwweDU1LDB4ODUsMHg1OSwweDI0LDB4NDksMHgwMiwweEFC
LDB4MkYsMHhERCwKLSAgICAweDg1LDB4NTksMHgyNCwweDQ5LDB4MkEsMHhFOCwweERFLDB4RkYs
MHhDNiwweDU5LDB4NDQsMHg1MSwweDBCLDB4MkIsMHgyRCwweEJELAotICAgIDB4QzYsMHg2MSww
eDIzLDB4NDksMHg3RSwweDc4LDB4QzgsMHhBMiwweEE1LDB4NTksMHgyNCwweDQ5LDB4MjksMHhC
OSwweEE5LDB4QUIsCi0gICAgMHhBNiwweDU5LDB4MjMsMHg0MSwweDZBLDB4NjAsMHhGQSwweDZF
LDB4MjMsMHg0OSwweEEzLDB4MzAsMHg3QSwweDZFLDB4RkMsMHhGRSwKLSAgICAweEMyLDB4MzAs
MHg4MywweDMwLDB4MkIsMHhBQSwweEFGLDB4MkQsMHgwMywweDM5LDB4QTIsMHgzMCwweEY3LDB4
QTcsMHgyQiwweDBELAotICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHhGRCwweEVGLDB4QUEsMHg4
RSwweDI0LDB4NDEsMHhFMywweDM4LDB4QkYsMHhCQiwweEJGLDB4QjcsCi0gICAgMHhBNSwweDU5
LDB4MjQsMHg0MSwweEFELDB4RUIsMHgwRCwweDIxLDB4QTYsMHg1OSwweDIzLDB4NDksMHhGRiww
eEY2LDB4REUsMHgzOCwKLSAgICAweEE1LDB4NTksMHg0NCwweDUxLDB4QjcsMHgzRCwweDI3LDB4
QkIsMHhBNSwweDU5LDB4NDQsMHg1MSwweEZBLDB4NkUsMHhFQSwweDg4LAotICAgIDB4NjQsMHg1
MSwweDAzLDB4NDksMHg1QywweDU2LDB4NUUsMHg1OCwweDI0LDB4NDksMHhFMywweDQwLDB4MjIs
MHhGRCwweEEzLDB4MDIsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHgzOSwweEU4LDB4QUEsMHg0QSww
eEVBLDB4MjMsMHg0MSwweEMyLDB4MzgsMHhGOCwweEVCLDB4RkIsMHg3RSwKLSAgICAweDAzLDB4
MzksMHhDMiwweDM4LDB4RUUsMHg5NywweDE3LDB4MjcsMHgwMywweDQxLDB4RTMsMHgzOCwweDJC
LDB4MkYsMHhGRSwweEZFLAotICAgIDB4NDQsMHg0MSwweDAzLDB4NDEsMHg1NywweEExLDB4MEIs
MHhBOSwweDY0LDB4NDksMHgyMywweDQxLDB4NUQsMHg3RiwweDYyLDB4QzIsCi0gICAgMHg2NCww
eDQ5LDB4MjMsMHg0MSwweDI5LDB4MEQsMHhCNSwweDk1LDB4ODUsMHg0OSwweDIzLDB4NDEsMHg1
OCwweDUyLDB4NUEsMHg1RSwKLSAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4RUEsMHhGRSwweEVG
LDB4RkYsMHgyNCwweDQxLDB4RTIsMHgzOCwweDk5LDB4QjksMHhBRiwweEU3LAotICAgIDB4NDQs
MHg0MSwweEUyLDB4MzgsMHhGNywweDdFLDB4RkEsMHhBRiwweDQ0LDB4NDEsMHhFMiwweDM4LDB4
M0YsMHhBRCwweEJGLDB4QkUsCi0gICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweEEwLDB4QUIsMHg3
NywweDdBLDB4MjMsMHg0MSwweEUyLDB4MzgsMHhFOCwweDc4LDB4NkEsMHg3MiwKLSAgICAweDAz
LDB4MzksMHhFMywweDM4LDB4RkIsMHhFRiwweDNGLDB4MkQsMHgyMywweDM5LDB4RTIsMHgzOCww
eEFBLDB4QTgsMHg0MywweDgzLAotICAgIDB4MjMsMHgzOSwweEUyLDB4MzgsMHg4QiwweEFELDB4
RTUsMHg1RCwweDIzLDB4NDEsMHhFMywweDM4LDB4OEEsMHhCRSwweEFBLDB4QTIsCi0gICAgMHg0
NCwweDQ5LDB4RTMsMHgzOCwweEZCLDB4NkYsMHhGQSwweDAyLDB4NDQsMHg0OSwweEUzLDB4NDAs
MHhGNywweEVGLDB4M0YsMHhBQSwKLSAgICAweDY0LDB4NDksMHgyMywweDQxLDB4Q0IsMHhBOSww
eEJCLDB4M0EsMHhBNSwweDUxLDB4NDQsMHg0OSwweEZCLDB4RUEsMHhBQiwweDM3LAotICAgIDB4
QTUsMHg1OSwweDQ0LDB4NDksMHhERiwweDdGLDB4RDYsMHg3QywweEE1LDB4NTksMHgyMywweDQ5
LDB4MkYsMHhCRiwweEZGLDB4RDcsCi0gICAgMHhDNSwweDYxLDB4NjQsMHg0OSwweEFBLDB4QUYs
MHgyNywweDI1LDB4NjcsMHg3MiwweEM1LDB4NTksMHgyOSwweDI1LDB4RDUsMHg1NSwKLSAgICAw
eDg4LDB4NzIsMHhFNSwweDYxLDB4N0UsMHhDOCwweDhCLDB4QjUsMHg2NywweDcyLDB4QTQsMHg1
OSwweERELDB4RkIsMHhGOCwweDg4LAotICAgIDB4NDcsMHg3MiwweEU2LDB4NjEsMHg4QSwweEJG
LDB4M0YsMHhGRiwweEM5LDB4ODIsMHgyNiwweDZBLDB4QjUsMHgyRCwweDJCLDB4MkQsCi0gICAg
MHgwQSwweDhCLDB4NjcsMHg3MiwweDU3LDB4N0IsMHhFRSwweEE4LDB4QTgsMHg3QSwweDI3LDB4
NzIsMHhFNywweEE5LDB4QUEsMHhBOCwKLSAgICAweEVELDB4QTMsMHg4OCwweDdBLDB4M0QsMHhC
NSwweEY1LDB4RkYsMHg1MSwweENELDB4RUQsMHhBQiwweEEyLDB4MDMsMHgwOSwweDA5LAotICAg
IDB4MTAsMHhDNSwweEFGLDB4QkMsMHg3RSwweDdBLDB4NkEsMHhBMCwweENGLDB4QkMsMHg2RSww
eEI0LDB4NzcsMHg1NywweEY3LDB4NUMsCi0gICAgMHhDRiwweEJDLDB4NkUsMHhCNCwweDJELDB4
QkYsMHhGRiwweDdELDB4Q0YsMHhCQywweDZFLDB4QjQsMHg4MCwweEE4LDB4RjMsMHhENywKLSAg
ICAweEFGLDB4QjQsMHg2RiwweEI0LDB4QTAsMHhEQywweERGLDB4N0UsMHgzMSwweENELDB4OEYs
MHhCNCwweDc3LDB4QUQsMHgyRiwweDI5LAotICAgIDB4NTIsMHhDRCwweEFGLDB4QkMsMHhGRCww
eEFCLDB4OEEsMHgyMCwweDUxLDB4QzUsMHhGMCwweEM0LDB4NTUsMHhCNiwweDhFLDB4QTIsCi0g
ICAgMHg3MiwweENELDB4RjAsMHhCQywweEE3LDB4MzcsMHhBRiwweDJBLDB4QjMsMHhENSwweDcy
LDB4Q0QsMHg1NSwweEFCLDB4ODMsMHg4QiwKLSAgICAweEIzLDB4RDUsMHgxMCwweEJELDB4N0Ys
MHhGQSwweEZBLDB4RTAsMHg1MiwweEM1LDB4MTEsMHhCRCwweDBELDB4MkYsMHhFRCwweDdFLAot
ICAgIDB4OTMsMHhDRCwweDExLDB4QkQsMHg4MiwweDNGLDB4RkYsMHhGNSwweEIzLDB4Q0QsMHg1
MiwweEM1LDB4MDAsMHgwMiwweEFBLDB4RDcsCi0gICAgMHg5MywweENELDB4RDEsMHhCNCwweDc4
LDB4QTAsMHgwMCwweDAwLDB4NzMsMHhDRCwweEIwLDB4QjQsMHg1NSwweDVGLDB4N0MsMHg2MCwK
LSAgICAweEQxLDB4QjQsMHgyRiwweEE0LDB4QkUsMHhCRiwweDNGLDB4MjgsMHgzMiwweEM1LDB4
OTAsMHhBQywweDAzLDB4ODIsMHg0MiwweDYyLAotICAgIDB4RDAsMHhCNCwweENELDB4OTMsMHhB
OCwweEZBLDB4N0YsMHg1NywweEYxLDB4QjQsMHgwRSwweDlDLDB4QkEsMHgyQiwweDJELDB4QUYs
Ci0gICAgMHhGMSwweEI0LDB4QjAsMHhCNCwweEJELDB4QjYsMHhGNSwweEQ1LDB4RDAsMHhCNCww
eDkwLDB4QUMsMHhCQSwweEM4LDB4RUEsMHg3QSwKLSAgICAweEQwLDB4QjQsMHg4RiwweEFDLDB4
MkUsMHhCNiwweDU3LDB4RDcsMHgxMSwweEJELDB4OTAsMHhBQywweDJGLDB4QUYsMHhCOSwweDZG
LAotICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHhCRCwweEZGLDB4NUEsMHg3MiwweDQzLDB4NTEs
MHhFMiwweDQ4LDB4QTIsMHhGOCwweEZGLDB4QUUsCi0gICAgMHg2NCwweDU5LDB4MjMsMHg1MSww
eDc1LDB4RjUsMHhFRiwweDhGLDB4NjQsMHg1OSwweDQzLDB4NTEsMHhGRCwweERELDB4NzUsMHg1
RSwKLSAgICAweDY0LDB4NTksMHgwMiwweDQ5LDB4NkIsMHg2QSwweEFBLDB4MjIsMHhBNCwweDYx
LDB4MDIsMHg0OSwweEVGLDB4QUQsMHhBRiwweDhBLAotICAgIDB4QTQsMHg2MSwweDQ0LDB4NTks
MHhENywweEJELDB4RkYsMHhENSwweDg0LDB4NjEsMHgyMywweDUxLDB4RjgsMHhCQSwweDdFLDB4
RkYsCi0gICAgMHg4NCwweDYxLDB4MjMsMHg1MSwweDJBLDB4MkUsMHgyRiwweDBCLDB4ODQsMHg1
OSwweDQzLDB4NTksMHhBRCwweDhBLDB4QUUsMHhFRSwKLSAgICAweDg0LDB4NjEsMHgyMywweDUx
LDB4ODgsMHhDMiwweEFBLDB4N0UsMHg2MywweDU5LDB4MDMsMHg1MSwweEEwLDB4ODIsMHg5OCww
eEFFLAotICAgIDB4NDMsMHg1OSwweDIzLDB4NTEsMHgwOCwweDM2LDB4MjgsMHgyMCwweDY0LDB4
NTksMHgyMywweDUxLDB4OUIsMHhERiwweEJCLDB4RjgsCi0gICAgMHg2NCwweDU5LDB4MDIsMHg1
MSwweDNGLDB4M0IsMHhERiwweEJBLDB4NjQsMHg1OSwweDIzLDB4NTEsMHg3RSwweEVFLDB4QkEs
MHhGQiwKLSAgICAweDY0LDB4NTksMHgyMywweDUxLDB4RjksMHg2QiwweDZDLDB4NTUsMHg0NCww
eDU5LDB4MDMsMHg0OSwweEMyLDB4RDIsMHhCQywweEQ2LAotICAgIDB4NDMsMHg1MSwweEUyLDB4
NDgsMHhGRiwweEFFLDB4N0YsMHhCMiwweDIzLDB4NTEsMHhFMiwweDQ4LDB4ODIsMHhBQSwweEVE
LDB4RjYsCi0gICAgMHg0MywweDUxLDB4MDMsMHg0OSwweEY3LDB4NzUsMHg3RCwweEZCLDB4NDMs
MHg1MSwweDAzLDB4NDksMHhGQiwweEFCLDB4OEIsMHgyRSwKLSAgICAweDY4LDB4N0EsMHgyMyww
eDUxLDB4RDUsMHhENSwweDM1LDB4MkQsMHhBQiwweEEzLDB4MjcsMHg3MiwweDJELDB4MjksMHgw
QiwweDBBLAotICAgIDB4Q0MsMHhBMywweDhCLDB4QTMsMHhBQiwweDAwLDB4NjgsMHg1OCwweDhC
LDB4QTMsMHg0QSwweDkzLDB4NkMsMHgyQywweEZGLDB4REYsCi0gICAgMHg2QSwweDlCLDB4Mjks
MHg5MywweEJBLDB4QkUsMHhGOCwweDcyLDB4NEEsMHg5MywweDA5LDB4OTMsMHhGOCwweDcyLDB4
RUEsMHgyMCwKLSAgICAweDRBLDB4OTMsMHgwOSwweDhCLDB4MzgsMHg5NSwweDI3LDB4QjQsMHg2
QSwweDlCLDB4MjksMHg5MywweDZCLDB4QUIsMHhCQiwweDI3LAotICAgIDB4NkEsMHg5MywweDA5
LDB4OTMsMHg4RCwweEJFLDB4RUUsMHhFQSwweDhCLDB4OUIsMHg0QSwweDkzLDB4QjIsMHhBRiww
eEJGLDB4RkQsCi0gICAgMHg4QiwweDlCLDB4QTcsMHg4MiwweEZBLDB4N0EsMHg3QSwweDdBLDB4
QTcsMHg4MiwweDg3LDB4N0EsMHgzRiwweEYwLDB4QzgsMHhDOCwKLSAgICAweEE4LDB4ODIsMHg2
NywweDdBLDB4QkUsMHhFMiwweEZGLDB4N0YsMHhBNywweDdBLDB4NjcsMHg3QSwweEJDLDB4REEs
MHg2OSwweDVGLAotICAgIDB4ODcsMHg3QSwweDI2LDB4NkEsMHg1QywweDdFLDB4RkEsMHhGQSww
eDI2LDB4NkEsMHg2NCwweDUxLDB4NUMsMHg3OCwweEUwLDB4ODAsCi0gICAgMHg4NSwweDU5LDB4
RTMsMHg0MCwweDc3LDB4NUYsMHhERSwweEMwLDB4NDQsMHg0OSwweEUzLDB4NDAsMHgwQSwweDI5
LDB4MkIsMHhBMiwKLSAgICAweDY0LDB4NDksMHgyMywweDQ5LDB4ODAsMHhDQSwweEJFLDB4REQs
MHg0NCwweDQ5LDB4QzIsMHgzOCwweEZBLDB4N0UsMHg3NiwweEU4LAotICAgIDB4MDMsMHgzOSww
eEMyLDB4MzgsMHhCRiwweEJGLDB4ODksMHhBQSwweDAzLDB4MzksMHhDMiwweDM4LDB4ODAsMHhB
OCwweEFFLDB4RDYsCi0gICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweDhCLDB4QUIsMHhCRiwweEY1
LDB4QTUsMHg1MSwweDIzLDB4NDEsMHhGNSwweEU1LDB4QTUsMHgzRCwKLSAgICAweDg1LDB4NTEs
MHgyMywweDQxLDB4N0EsMHg3QSwweDcyLDB4RTAsMHgyMywweDQxLDB4QzMsMHgzOCwweDczLDB4
RUEsMHhCOCwweEZBLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhFRiwweEFBLDB4RjAsMHg3
MCwweDIzLDB4NDEsMHhFMywweDM4LDB4QkIsMHhBQiwweEFCLDB4REQsCi0gICAgMHgyNCwweDQx
LDB4RTMsMHgzOCwweENBLDB4RkEsMHhGOCwweEVBLDB4MDMsMHg0MSwweDIzLDB4MzksMHgyQSww
eEEwLDB4ODAsMHg4OCwKLSAgICAweDQ0LDB4NDksMHhFMywweDM4LDB4QUEsMHhBQSwweDJCLDB4
QTcsMHg2NCwweDUxLDB4MjQsMHg0OSwweEY1LDB4QjksMHhDRSwweEZGLAotICAgIDB4ODUsMHg1
MSwweDQ0LDB4NTEsMHg3QiwweEY5LDB4ODksMHg4NywweDg1LDB4NTksMHg2NSwweDUxLDB4MjUs
MHgwRCwweEFCLDB4QzksCi0gICAgMHhFNiwweDYxLDB4ODUsMHg1OSwweEUxLDB4RTMsMHg3RCww
eDU1LDB4QzYsMHg1OSwweDY1LDB4NTEsMHhCNywweEJBLDB4RTMsMHhDRCwKLSAgICAweDg1LDB4
NTEsMHg0NCwweDQ5LDB4NkEsMHg2OCwweEUyLDB4NUMsMHg0NCwweDQ5LDB4QzIsMHgzMCwweDdF
LDB4RjQsMHg3RSwweDVGLAotICAgIDB4QzIsMHgzMCwweEEyLDB4MzAsMHhCRiwweDk4LDB4MjAs
MHgyMiwweDI0LDB4MzksMHhDMiwweDMwLDB4QTUsMHgzRCwweEE1LDB4RkQsCi0gICAgMHgyNCww
eDQxLDB4RTMsMHgzOCwweEFBLDB4OUUsMHhFRSwweEU3LDB4MDMsMHg0MSwweEUzLDB4MzgsMHgy
NywweDJCLDB4RTAsMHhFQSwKLSAgICAweEE1LDB4NTksMHgwMywweDQxLDB4MDksMHgyRCwweDBG
LDB4M0QsMHgwNywweDYyLDB4ODUsMHg1OSwweERGLDB4N0IsMHhCMywweEJCLAotICAgIDB4MDcs
MHg2QSwweDg1LDB4NTksMHg1NywweDdGLDB4RjIsMHhFOCwweEM2LDB4NTksMHg0NCwweDUxLDB4
MjksMHhBQSwweEUyLDB4RUEsCi0gICAgMHhBNSwweDU5LDB4MDMsMHg0MSwweDU4LDB4NzgsMHg3
QSwweDdBLDB4MjQsMHg0OSwweDAzLDB4NDEsMHg4QSwweEFBLDB4RjUsMHg1NSwKLSAgICAweDI0
LDB4NDEsMHgwMywweDQxLDB4NjAsMHhFMCwweDYwLDB4NjMsMHgwMywweDQxLDB4QzIsMHgzOCww
eDdBLDB4NkEsMHhFRSwweEJBLAotICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHhBNSwweEE1LDB4
QUYsMHhBRCwweDIzLDB4NDEsMHgwMywweDM5LDB4QjcsMHhBRiwweDNGLDB4MzUsCi0gICAgMHg2
NCwweDQ5LDB4MjQsMHg0MSwweDZELDB4QTksMHhBRCwweEJELDB4NjQsMHg0OSwweDIzLDB4NDEs
MHgwOSwweEFGLDB4QTIsMHg4QSwKLSAgICAweDY1LDB4NDksMHgwMywweDQxLDB4QkYsMHhERiww
eEJBLDB4OEEsMHg2NCwweDQ5LDB4MDMsMHgzOSwweDc4LDB4RUMsMHg3RiwweDdFLAotICAgIDB4
MjMsMHg0MSwweEUzLDB4MzgsMHhGRiwweDVGLDB4N0YsMHgyQSwweDAzLDB4NDEsMHhDMiwweDMw
LDB4QUUsMHhBRiwweDVELDB4RkMsCi0gICAgMHg0NCwweDQxLDB4RTIsMHgzOCwweDJCLDB4OEUs
MHg3NSwweEQ1LDB4MjMsMHg0MSwweEUyLDB4MzAsMHgzQSwweDNCLDB4RkYsMHhBRiwKLSAgICAw
eDI0LDB4MzksMHgwMywweDM5LDB4NjgsMHg1NiwweEZGLDB4RjUsMHg0NCwweDQxLDB4RTMsMHgz
OCwweDdCLDB4RkYsMHhFOCwweEFBLAotICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHhFNywweEQ3
LDB4RjcsMHhFQSwweDIzLDB4MzksMHhFMywweDMwLDB4QUMsMHgzRSwweEZCLDB4RjIsCi0gICAg
MHgwMywweDM5LDB4RTIsMHgzMCwweERGLDB4M0UsMHhCQSwweEY4LDB4NDQsMHg0MSwweEUyLDB4
MzgsMHhGNSwweEY2LDB4RjcsMHgzNSwKLSAgICAweDg1LDB4NDksMHgwMywweDM5LDB4QUQsMHgy
RCwweEE1LDB4RjUsMHg2NCwweDQ5LDB4MDMsMHg0MSwweEY4LDB4REUsMHhGQSwweEFBLAotICAg
IDB4NDQsMHg0OSwweDIzLDB4MzksMHgwMiwweDgyLDB4MDIsMHgyMCwweDg1LDB4NTEsMHgyMyww
eDQ5LDB4QjcsMHhCRiwweEUyLDB4RTIsCi0gICAgMHg4NSwweDUxLDB4MjMsMHg0OSwweDU4LDB4
N0YsMHhENywweDdGLDB4NjQsMHg0OSwweDIzLDB4NDksMHhBQiwweEI1LDB4QjUsMHg1RiwKLSAg
ICAweEE1LDB4NTksMHgyMywweDQ5LDB4MkYsMHhBRiwweEZGLDB4N0QsMHhDNSwweDU5LDB4NjQs
MHg1MSwweDAzLDB4MEIsMHgyQiwweEI1LAotICAgIDB4MDUsMHg2MiwweDg0LDB4NTEsMHgzQSww
eEJCLDB4QUQsMHhGNSwweDQ3LDB4NzIsMHhDNSwweDYxLDB4MDIsMHg4QSwweEVCLDB4QkQsCi0g
ICAgMHg0NywweDcyLDB4RTUsMHg2MSwweEZFLDB4RkUsMHgyRSwweDJCLDB4QzksMHg4MiwweDI2
LDB4NkEsMHgyNSwweEI1LDB4RjUsMHhGRiwKLSAgICAweDJBLDB4OEIsMHg4OCwweDdBLDB4QUEs
MHgwQiwweEE5LDB4QkIsMHgyOSwweDkzLDB4ODcsMHg3QSwweEQ3LDB4N0UsMHhFQSwweEEwLAot
ICAgIDB4MEEsMHg4QiwweDg4LDB4N0EsMHgyQiwweEI1LDB4RkYsMHhCNiwweDUyLDB4RDUsMHg0
QSwweDkzLDB4MDksMHgyRCwweDJELDB4MkQsCi0gICAgMHg3MiwweEQ1LDB4RjAsMHhDNCwweDdD
LDB4NzgsMHhGOCwweEUwLDB4NTEsMHhDRCwweDRFLDB4QUMsMHg1RSwweDdBLDB4QTgsMHgwMCwK
LSAgICAweDcyLDB4Q0QsMHg0RSwweEFDLDB4NTUsMHhENSwweEZGLDB4MDIsMHhEMywweERELDB4
NkUsMHhCNCwweDU1LDB4NTUsMHg3RiwweEE4LAotICAgIDB4RjAsMHhDNCwweDRELDB4QUMsMHg5
NiwweEQ3LDB4OTcsMHgwMCwweDkyLDB4RDUsMHhEMCwweEJDLDB4QkQsMHhBRCwweDJELDB4MEIs
Ci0gICAgMHhCMywweEQ1LDB4NTEsMHhDRCwweDVELDB4RkYsMHgwQiwweDBBLDB4RDQsMHhERCww
eDcyLDB4Q0QsMHg1RCwweEVBLDB4NjAsMHg2QSwKLSAgICAweDkzLDB4Q0QsMHg1MiwweENELDB4
NTcsMHhEQywweDM3LDB4ODcsMHhENCwweEQ1LDB4NzIsMHhDRCwweDhELDB4RjksMHhGRSwweERF
LAotICAgIDB4QjQsMHhENSwweDczLDB4Q0QsMHg3MCwweDVBLDB4RjcsMHhENywweDcyLDB4Q0Qs
MHgxMSwweEJELDB4N0UsMHhFOCwweEY4LDB4QkMsCi0gICAgMHgzMiwweEM1LDB4MTEsMHhCRCww
eEJGLDB4RkUsMHg5MCwweDYwLDB4NTIsMHhDNSwweEYxLDB4QkMsMHg4MCwweEFFLDB4QUYsMHhG
NywKLSAgICAweDkzLDB4Q0QsMHgzMiwweEM1LDB4MDMsMHhBQiwweEJGLDB4RkQsMHhCNCwweENE
LDB4NTIsMHhDNSwweDVBLDB4MEIsMHhBRiwweEJELAotICAgIDB4OTMsMHhDRCwweEYxLDB4QkMs
MHg1NywweEUwLDB4QTAsMHhFMCwweDEyLDB4QkQsMHhFRCwweDlCLDB4RTAsMHhFMCwweDY4LDB4
NzgsCi0gICAgMHg2RSwweEE0LDB4Q0MsMHg5MywweDU3LDB4RDUsMHg5NSwweDM1LDB4RDAsMHhC
NCwweDRFLDB4QTQsMHgyOSwweDM5LDB4QUIsMHgwMiwKLSAgICAweEQwLDB4QjQsMHg4RiwweEI0
LDB4QjAsMHg3OCwweEY4LDB4RUEsMHhEMSwweEI0LDB4NkYsMHhBQywweEVBLDB4QTIsMHhERSww
eEVGLAotICAgIDB4RDEsMHhCNCwweDZGLDB4QUMsMHgzRiwweEFGLDB4QjcsMHhBRSwweEYxLDB4
QjQsMHg5MCwweEFDLDB4NEYsMHhCRSwweEE5LDB4RUIsCi0gICAgMHg2MywweDU5LDB4MjMsMHg1
MSwweDdFLDB4NTksMHhFNiwweEFFLDB4NDMsMHg1MSwweDAyLDB4NDksMHgyMCwweEFBLDB4RkIs
MHg2QSwKLSAgICAweDQzLDB4NTEsMHgyMywweDUxLDB4MDIsMHgwMiwweDI5LDB4OTksMHg2NCww
eDU5LDB4MjMsMHg1MSwweDI4LDB4QUUsMHhEQiwweDRGLAotICAgIDB4NjQsMHg1OSwweDIzLDB4
NTEsMHhBMiwweEU4LDB4QTgsMHhCNywweDg0LDB4NTksMHg0MywweDU5LDB4ODIsMHg2QiwweDVG
LDB4NUYsCi0gICAgMHg4NCwweDYxLDB4MjMsMHg1MSwweEZELDB4QkIsMHhFQSwweEMyLDB4ODQs
MHg2MSwweDIzLDB4NTEsMHhGNiwweEZGLDB4RUYsMHg4QiwKLSAgICAweDg0LDB4NjEsMHg0Myww
eDU5LDB4MEEsMHgwMywweDI3LDB4QUEsMHhBNCwweDYxLDB4NDMsMHg1OSwweEZBLDB4NkEsMHhF
MCwweEYyLAotICAgIDB4NjQsMHg1OSwweDIzLDB4NTksMHhGRSwweEZCLDB4QkEsMHhFOCwweDY0
LDB4NTksMHgyMywweDUxLDB4QzgsMHg4QSwweEVGLDB4NkIsCi0gICAgMHg2NCwweDU5LDB4MjMs
MHg1MSwweEJBLDB4QkYsMHgxRiwweEVGLDB4NjQsMHg1OSwweDIzLDB4NTksMHhBOCwweEE4LDB4
MDIsMHhBOSwKLSAgICAweDg1LDB4NjEsMHgyNCwweDUxLDB4RkUsMHhGQSwweDYzLDB4RkYsMHg2
NCwweDU5LDB4MjMsMHg1MSwweEFFLDB4REQsMHg3RCwweDZGLAotICAgIDB4NDQsMHg1OSwweDAz
LDB4NTEsMHg1RiwweEJDLDB4QkQsMHg2RiwweDIzLDB4NTEsMHhFMiwweDQ4LDB4QjgsMHhGMCww
eDI4LDB4QjMsCi0gICAgMHg0MywweDUxLDB4MDMsMHg0OSwweEZCLDB4RkEsMHhFQSwweERCLDB4
MjMsMHg1MSwweEUyLDB4NDgsMHg3MiwweEM4LDB4ODIsMHhBMiwKLSAgICAweDIzLDB4NTEsMHgw
MywweDQ5LDB4QzEsMHhCNSwweENGLDB4MEEsMHg2NCwweDU5LDB4MDMsMHg1MSwweEJGLDB4QkYs
MHgzNywweDM3LAotICAgIDB4NEEsMHg5MywweDY0LDB4NTksMHgyRCwweDJELDB4MEIsMHgwQiww
eENDLDB4QTMsMHg0QSwweDlCLDB4QUQsMHg4QiwweDJBLDB4RUUsCi0gICAgMHhFQywweEFCLDB4
OEIsMHg5QiwweDVFLDB4QUYsMHhBRCwweDhGLDB4Q0MsMHhBQiwweDRBLDB4OTMsMHg3NywweDVB
LDB4RTgsMHhBMCwKLSAgICAweEFCLDB4QTMsMHg0QSwweDkzLDB4NzcsMHhERCwweEVFLDB4QTgs
MHg2QSwweDlCLDB4MjksMHg5MywweEZFLDB4RTYsMHhGNywweDVFLAotICAgIDB4NkEsMHg5Qiww
eDA5LDB4OEIsMHg1RSwweEZFLDB4QTMsMHhBQiwweDRBLDB4OTMsMHgwOSwweDkzLDB4QUYsMHhF
RCwweEVGLDB4MzAsCi0gICAgMHg0QSwweDkzLDB4MDgsMHg5MywweDIwLDB4QUEsMHhBMSwweEU4
LDB4NkEsMHg5MywweDA5LDB4OTMsMHgzQiwweEFELDB4QUYsMHhFRiwKLSAgICAweDZBLDB4OUIs
MHhDOCwweDgyLDB4NzIsMHg2MiwweEZBLDB4N0EsMHhBNywweDdBLDB4NjcsMHg3MiwweEEyLDB4
QjgsMHg2OCwweEFBLAotICAgIDB4QTgsMHg3QSwweDQ3LDB4NzIsMHhFMiwweEUyLDB4N0YsMHhG
NywweDY3LDB4N0EsMHgyNiwweDcyLDB4ODAsMHhFMCwweDUyLDB4NTAsCi0gICAgMHg4OCwweDdB
LDB4NDcsMHg3MiwweDdCLDB4N0QsMHg3NywweDQ5LDB4NDYsMHg3MiwweDA2LDB4NkEsMHg1Riww
eDdBLDB4N0EsMHhGQSwKLSAgICAweDI2LDB4NkEsMHg2NCwweDUxLDB4N0EsMHhFOCwweEVBLDB4
MDgsMHhFNSwweDYxLDB4MjMsMHg0OSwweDU1LDB4NUYsMHg1RSwweDY4LAotICAgIDB4NDMsMHg0
OSwweEUzLDB4NDAsMHhBQSwweEZCLDB4NUYsMHg1NCwweDQzLDB4NDksMHhFMywweDQwLDB4RTgs
MHhFQiwweEVGLDB4RjUsCi0gICAgMHhFMywweDQwLDB4QzIsMHgzMCwweEJFLDB4RUUsMHhFQSww
eDYwLDB4RTIsMHgzOCwweEExLDB4MzAsMHgwQywweEE4LDB4RkEsMHhGQiwKLSAgICAweDAzLDB4
NDEsMHhDMiwweDM4LDB4MEIsMHgwRCwweDdELDB4RjUsMHhBNSwweDUxLDB4RTMsMHgzOCwweDBG
LDB4MkYsMHhBRCwweEZELAotICAgIDB4ODUsMHg1MSwweDIzLDB4NDEsMHhDMCwweENBLDB4RUEs
MHg3QSwweDIzLDB4NDEsMHhFMywweDM4LDB4QkEsMHhEQywweERGLDB4NUYsCi0gICAgMHgyNCww
eDQxLDB4QzIsMHgzOCwweERBLDB4MkEsMHgwMiwweDAwLDB4MDMsMHg0MSwweEUzLDB4MzgsMHg3
RiwweEVDLDB4QkEsMHgzOCwKLSAgICAweDAzLDB4NDEsMHhFMywweDM4LDB4MzYsMHhENSwweEQ3
LDB4NUUsMHgyMywweDQxLDB4RTQsMHgzOCwweEVBLDB4QkYsMHgwQiwweDBBLAotICAgIDB4NDQs
MHg0OSwweEUzLDB4MzgsMHgyQiwweEI3LDB4QUUsMHhFOCwweDY1LDB4NTEsMHgyMywweDQ5LDB4
REMsMHhGMCwweDcwLDB4RjIsCi0gICAgMHg4NSwweDU5LDB4MDMsMHg0MSwweDBCLDB4MkIsMHhC
RiwweDc3LDB4QzYsMHg1OSwweDQ0LDB4NTEsMHg4QiwweDNBLDB4QUEsMHhGRCwKLSAgICAweEE1
LDB4NTksMHg2NSwweDUxLDB4QkMsMHhCQywweEZFLDB4RkUsMHhDNiwweDU5LDB4NjQsMHg1MSww
eDVBLDB4N0EsMHg0QiwweDRGLAotICAgIDB4ODUsMHg1MSwweEMyLDB4MzAsMHhFOCwweDZBLDB4
N0UsMHg1RSwweEUzLDB4MzgsMHg4MiwweDMwLDB4QTAsMHhFQSwweERFLDB4QkYsCi0gICAgMHhD
MywweDMwLDB4QTIsMHgzMCwweEUyLDB4RkYsMHg1RiwweDk0LDB4RTMsMHgzMCwweDgyLDB4Mjgs
MHhBQiwweEZELDB4QkEsMHhBOCwKLSAgICAweEUzLDB4MzgsMHhBMiwweDMwLDB4MjEsMHg3RCww
eDVGLDB4NUUsMHgwMywweDQxLDB4QTMsMHgzMCwweDJCLDB4RkIsMHhCRiwweEJELAotICAgIDB4
NjQsMHg1MSwweDAzLDB4NDEsMHgyRCwweDI1LDB4MTUsMHhENSwweEU2LDB4NjEsMHg4NSwweDUx
LDB4MDksMHhBQiwweEZELDB4NTUsCi0gICAgMHhFNiwweDYxLDB4NjQsMHg1MSwweDAwLDB4ODIs
MHg4QiwweEJGLDB4QzYsMHg2MSwweDY0LDB4NTEsMHg2QSwweEY4LDB4RjAsMHg4MCwKLSAgICAw
eDY0LDB4NTEsMHgwMywweDQxLDB4QTgsMHhFMCwweDYwLDB4RjAsMHgyNCwweDQ5LDB4MDMsMHg0
MSwweDU2LDB4RkUsMHgyRiwweEFDLAotICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHhBQiwweEE2
LDB4N0UsMHg3OCwweDA0LDB4NDEsMHhDMywweDM4LDB4NUUsMHg3MiwweEFBLDB4MjIsCi0gICAg
MHgwMywweDM5LDB4QTMsMHgzOCwweDBCLDB4QUEsMHg4OCwweDI4LDB4MDMsMHgzOSwweEMyLDB4
MzgsMHgyQSwweDJGLDB4QkQsMHhCRiwKLSAgICAweDg1LDB4NDksMHgwMywweDM5LDB4MkIsMHgy
RiwweEFELDB4OEQsMHg4NSwweDQ5LDB4MjQsMHg0MSwweEZGLDB4RDgsMHhFMCwweEZDLAotICAg
IDB4ODUsMHg0OSwweEUyLDB4MzgsMHg4QSwweDhBLDB4RkUsMHg1RCwweDQ0LDB4NDEsMHgwMyww
eDM5LDB4QTgsMHhBRSwweEZGLDB4MkQsCi0gICAgMHgyMywweDQxLDB4RTMsMHgzOCwweDAwLDB4
QTAsMHhGOCwweEUwLDB4MjMsMHg0MSwweEMyLDB4MzAsMHhGRSwweDY2LDB4RkIsMHhBOCwKLSAg
ICAweDAzLDB4MzksMHhDMiwweDMwLDB4MkYsMHgyRiwweDFGLDB4RjgsMHgyNCwweDQxLDB4RTIs
MHgzMCwweEFELDB4MkYsMHhBRiwweEI1LAotICAgIDB4MjMsMHgzOSwweEUzLDB4MzgsMHhBQSww
eDg4LDB4QTgsMHgwRiwweDI0LDB4NDEsMHgwMywweDM5LDB4MUUsMHhCOSwweEFELDB4RTIsCi0g
ICAgMHgyMywweDM5LDB4RTIsMHgzOCwweEU4LDB4NzgsMHhCMiwweEEwLDB4MjMsMHgzOSwweEUy
LDB4MzAsMHhGRiwweDU1LDB4NUYsMHhGMCwKLSAgICAweDIzLDB4NDEsMHgwMywweDM5LDB4NzUs
MHgyNSwweEE1LDB4NTUsMHgyMywweDQxLDB4QzIsMHgzMCwweDI3LDB4QUEsMHhBRiwweDBBLAot
ICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHgxNywweDBFLDB4ODIsMHgwMiwweDY0LDB4NDksMHgy
MywweDQxLDB4MEIsMHgwQiwweDdGLDB4RkYsCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweDM3
LDB4REYsMHhCQSwweEU3LDB4ODQsMHg1MSwweDQ0LDB4NDksMHg1RSwweDJGLDB4NjUsMHg3RCwK
LSAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4RkQsMHhENywweEZCLDB4QzIsMHg2NSwweDQ5LDB4
MjMsMHg0OSwweEY3LDB4QjUsMHgzNiwweEY3LAotICAgIDB4ODUsMHg1MSwweDIzLDB4NDksMHhG
RiwweEJGLDB4MzUsMHg4RiwweEM1LDB4NjEsMHgyMiwweDQ5LDB4REYsMHhGRSwweEE4LDB4MkIs
Ci0gICAgMHhBNCwweDU5LDB4NjQsMHg1MSwweDlCLDB4N0QsMHhEOCwweEE4LDB4MDYsMHg2Miww
eDY0LDB4NTEsMHgyRiwweEFELDB4NzUsMHhGRiwKLSAgICAweDI2LDB4NkEsMHg4NCwweDU5LDB4
MDAsMHhBRSwweEY3LDB4REQsMHg2NywweDdBLDB4QTUsMHg2MSwweDJBLDB4MkIsMHhBRCwweEY1
LAotICAgIDB4MEEsMHg4QiwweDI2LDB4NzIsMHgwQSwweDJCLDB4QUIsMHhGRCwweDJBLDB4OEIs
MHhDOSwweDgyLDB4QzAsMHhBMiwweDI5LDB4RjksCi0gICAgMHgwOSwweDhCLDB4QTgsMHg3QSww
eEZBLDB4RjAsMHhBMCwweDI4LDB4NTIsMHhENSwweDA5LDB4OEIsMHgyRCwweDJELDB4QjUsMHhC
NSwKLSAgICAweDM1LDB4RTYsMHg1MiwweEQ1LDB4NUYsMHhFQiwweDBCLDB4MDksMHg1NSwweEVF
LDB4NzIsMHhENSwweDU1LDB4QkYsMHhBQSwweDAwLAotICAgIDB4MzUsMHhFRSwweDcyLDB4RDUs
MHhBRCwweDhBLDB4MDAsMHgwMCwweDU1LDB4RUUsMHhGNCwweERELDB4NUYsMHhGRiwweEVGLDB4
RjIsCi0gICAgMHgzNSwweEU2LDB4RDMsMHhERCwweDdELDB4QUIsMHg4QSwweDgwLDB4MTQsMHhF
NiwweDkyLDB4RDUsMHhGNywweEFBLDB4MDAsMHgwOCwKLSAgICAweDM0LDB4RTYsMHg5MiwweEQ1
LDB4N0YsMHhGRSwweDhBLDB4MjAsMHgxNCwweERFLDB4NTIsMHhDNSwweDU3LDB4NUYsMHg1QSww
eDU4LAotICAgIDB4QjMsMHhENSwweDUyLDB4QzUsMHhBNSwweDNELDB4QUYsMHhBRCwweEIzLDB4
RDUsMHg3MywweENELDB4RkUsMHhFQSwweEFBLDB4M0IsCi0gICAgMHg5MywweENELDB4NTIsMHhD
NSwweEVFLDB4QUUsMHhGRSwweEY4LDB4NzIsMHhDRCwweDMyLDB4QzUsMHhGNCwweEY4LDB4Nzgs
MHhFMCwKLSAgICAweDUyLDB4QzUsMHgxMiwweEJELDB4NkUsMHhGOCwweDdBLDB4QUEsMHgzMiww
eEM1LDB4RjEsMHhCQywweDVGLDB4NzYsMHg3QSwweEQ4LAotICAgIDB4NTIsMHhDNSwweEYxLDB4
QkMsMHgyQiwweEU1LDB4NUQsMHg1RCwweDczLDB4Q0QsMHhGMSwweEJDLDB4MjIsMHgwQiwweEFG
LDB4RjcsCi0gICAgMHg3MywweENELDB4RDAsMHhCNCwweEUwLDB4RjgsMHg3RSwweDdGLDB4RDEs
MHhCNCwweENELDB4OUIsMHg3OCwweEY4LDB4N0UsMHg3RSwKLSAgICAweEIwLDB4QjQsMHhDQyww
eDkzLDB4MjUsMHgyRiwweDBCLDB4MEIsMHhEMSwweEI0LDB4OEYsMHhBQywweEEyLDB4RTIsMHg0
MCwweEEyLAotICAgIDB4RDAsMHhCNCwweDhGLDB4QUMsMHhFQSwweERCLDB4N0EsMHhDQywweEIw
LDB4QjQsMHg3MCwweEFDLDB4REEsMHg5MCwweDNDLDB4MkUsCi0gICAgMHhCMCwweEI0LDB4NzAs
MHhBQywweEE4LDB4RUEsMHhGRSwweDE4LDB4RDEsMHhCNCwweDkwLDB4QUMsMHhFQiwweEU5LDB4
RDUsMHhCRCwKLSAgICAweDYzLDB4NTksMHgyMywweDUxLDB4QUUsMHhGQSwweEYxLDB4QTMsMHg4
NCwweDU5LDB4NDMsMHg1MSwweDc1LDB4REYsMHhFQiwweEZFLAotICAgIDB4ODQsMHg1OSwweDIz
LDB4NTEsMHg1NywweEZBLDB4RkEsMHhEQywweDgzLDB4NTksMHgyMywweDUxLDB4N0QsMHhGNSww
eEZELDB4RUYsCi0gICAgMHg2MywweDU5LDB4MjMsMHg1MSwweERGLDB4QjIsMHg4MywweENCLDB4
NjMsMHg1OSwweDIzLDB4NTEsMHhGMSwweEFBLDB4QUYsMHhBQSwKLSAgICAweDg0LDB4NjEsMHg0
MywweDU5LDB4REIsMHhFRCwweDBGLDB4MzksMHhBNCwweDYxLDB4NDQsMHg1OSwweEVCLDB4MkQs
MHhFOCwweEFBLAotICAgIDB4QTQsMHg2MSwweDY0LDB4NTksMHhGRiwweEJELDB4QTksMHhGRiww
eDg0LDB4NTksMHg0MywweDU5LDB4RjgsMHg2QywweEVGLDB4QkYsCi0gICAgMHg2NCwweDU5LDB4
MjMsMHg1MSwweEFBLDB4MjEsMHgyQSwweEVFLDB4NjMsMHg1OSwweDIzLDB4NTEsMHhEQSwweDdB
LDB4NkYsMHhFRSwKLSAgICAweDY0LDB4NTksMHgyMywweDUxLDB4RUEsMHg4QSwweEU5LDB4RkYs
MHg0NCwweDU5LDB4MjMsMHg1MSwweEFCLDB4NUUsMHg3NywweERBLAotICAgIDB4NDQsMHg1OSww
eDIzLDB4NTEsMHg5MiwweDczLDB4QjYsMHhBNywweDQ0LDB4NTksMHhFMiwweDQ4LDB4QTAsMHhF
OCwweDc4LDB4RjgsCi0gICAgMHgyMywweDUxLDB4MDMsMHg0OSwweDZCLDB4REYsMHg2OSwweDZE
LDB4MjMsMHg1MSwweEMyLDB4NDAsMHhBQSwweDk4LDB4QUEsMHhBQSwKLSAgICAweDIzLDB4NTEs
MHhFMiwweDQ4LDB4QkEsMHg2QSwweERBLDB4QjIsMHgyMywweDUxLDB4RTIsMHg0OCwweDkyLDB4
MjMsMHgwMiwweEFBLAotICAgIDB4NDMsMHg1MSwweDAzLDB4NDksMHhDQSwweEFGLDB4NUYsMHhG
NywweEU5LDB4OEEsMHgyMywweDUxLDB4RDUsMHg5NSwweEI1LDB4MjUsCi0gICAgMHhBQiwweEEz
LDB4ODgsMHg4MiwweDhELDB4MkIsMHg4QiwweDg4LDB4QUIsMHhBMywweDZCLDB4OUIsMHhGRSww
eDJFLDB4QTYsMHgyRiwKLSAgICAweEVDLDB4QUIsMHhBQiwweEEzLDB4ODUsMHhBRCwweDIxLDB4
MkQsMHgwRCwweEFDLDB4Q0MsMHhBMywweDdGLDB4N0QsMHg3RiwweDdBLAotICAgIDB4Q0IsMHhB
MywweDhCLDB4OUIsMHhGRSwweDVDLDB4NTYsMHg1RSwweDhBLDB4OUIsMHgyOSwweDkzLDB4NkUs
MHhGOCwweDc4LDB4RDgsCi0gICAgMHg2QSwweDlCLDB4MjksMHg5MywweEVELDB4QTcsMHhDQSww
eDdCLDB4NkEsMHg5QiwweDA5LDB4OEIsMHgzRiwweERGLDB4RkUsMHhGRSwKLSAgICAweDZBLDB4
OUIsMHgyQSwweDkzLDB4N0UsMHhGOSwweEFGLDB4QUIsMHg2QSwweDlCLDB4MDgsMHg5MywweEFE
LDB4OEIsMHg4MiwweDAyLAotICAgIDB4NEEsMHg5MywweEM4LDB4ODIsMHg3QSwweDY4LDB4NjAs
MHg3MCwweEE4LDB4N0EsMHg0NiwweDcyLDB4QTgsMHg1QSwweDc4LDB4RkUsCi0gICAgMHg4OCww
eDdBLDB4NDYsMHg3MiwweEJBLDB4NjksMHhFOSwweEVGLDB4NjcsMHg3QSwweDA2LDB4NkEsMHg5
MCwweEZFLDB4RUUsMHhBQSwKLSAgICAweDY3LDB4N0EsMHgwNiwweDZBLDB4NjAsMHg3RSwweEZG
LDB4REYsMHg0NywweDcyLDB4MDYsMHg2QSwweDdCLDB4OEQsMHg3RiwweEU2LAotICAgIDB4MjYs
MHg2QSwweEU2LDB4NjksMHg4MCwweEUwLDB4QTgsMHhDMCwweDA2LDB4NkEsMHg2NCwweDUxLDB4
NzgsMHhFQSwweEMwLDB4MDAsCi0gICAgMHhFNSwweDYxLDB4QzIsMHgzOCwweDdGLDB4N0UsMHg3
QSwweEY4LDB4MjMsMHg0OSwweEMyLDB4MzgsMHhCRCwweEFELDB4MkIsMHg4MCwKLSAgICAweDIz
LDB4NDEsMHhFMiwweDM4LDB4NUYsMHg1NywweDVFLDB4NTgsMHhFMiwweDM4LDB4ODEsMHgzMCww
eEEyLDB4MDAsMHhBQywweEJFLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHhBQiwweEJCLDB4
RkUsMHhFNywweDIzLDB4NDEsMHhFMywweDM4LDB4MkQsMHhGQiwweEFELDB4QUQsCi0gICAgMHg0
NCwweDQ5LDB4RTMsMHgzOCwweEUyLDB4RUEsMHhGRSwweDdCLDB4MDMsMHg0MSwweEUzLDB4Mzgs
MHhBQSwweDc2LDB4NEEsMHhFQiwKLSAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4MEEsMHhFRCww
eEY1LDB4NUYsMHgyNCwweDQxLDB4RTIsMHgzOCwweEUwLDB4RjIsMHhGQSwweEUzLAotICAgIDB4
MjQsMHg0MSwweEMyLDB4MzgsMHhFQSwweEJELDB4RUEsMHhBRSwweDI0LDB4NDEsMHhFMiwweDM4
LDB4QUMsMHg3NywweERFLDB4OEEsCi0gICAgMHg0NCwweDQ5LDB4RTIsMHgzOCwweENBLDB4RkIs
MHg1NywweEY1LDB4NDQsMHg0OSwweDAzLDB4NDEsMHgyQSwweDVCLDB4RkQsMHg5RCwKLSAgICAw
eDQ0LDB4NDksMHgwMywweDQxLDB4RjgsMHg3RiwweDVFLDB4RkUsMHg4NSwweDUxLDB4MjQsMHg0
OSwweEEzLDB4QkQsMHhCRiwweDI3LAotICAgIDB4QTUsMHg1OSwweDY1LDB4NTEsMHhGRSwweDhC
LDB4MkYsMHg4RiwweDg1LDB4NTEsMHg0NCwweDQ5LDB4QzMsMHg2RSwweDdDLDB4NUMsCi0gICAg
MHg0NCwweDQ5LDB4QzMsMHgzMCwweDU4LDB4RjAsMHhFMCwweEY4LDB4MDQsMHgzOSwweEEyLDB4
MzAsMHhENSwweDdGLDB4N0EsMHhGOCwKLSAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4OUMsMHg5
RiwweDk1LDB4OTUsMHgyNCwweDM5LDB4QzMsMHgzMCwweEZELDB4RkYsMHhFQiwweDgyLAotICAg
IDB4MDMsMHgzOSwweEEyLDB4MzAsMHg3RiwweEJGLDB4RUEsMHhFQywweDA0LDB4MzksMHhDMyww
eDM4LDB4NTUsMHhGNSwweEFGLDB4QkQsCi0gICAgMHgyMywweDQxLDB4RTMsMHgzOCwweDNELDB4
RkQsMHhENSwweEJELDB4ODUsMHg1OSwweDAzLDB4NDEsMHgwQiwweDBGLDB4QUQsMHhCRiwKLSAg
ICAweEE1LDB4NTksMHg2NSwweDUxLDB4MEYsMHg4QSwweERCLDB4RkYsMHgyNiwweDZBLDB4ODUs
MHg1MSwweEVCLDB4OEIsMHhBRiwweEY1LAotICAgIDB4QzYsMHg1OSwweDQ0LDB4NDksMHg3RSww
eDVFLDB4RUMsMHhCQywweDQ0LDB4NDksMHgwNCwweDQxLDB4N0YsMHgyOCwweEJBLDB4RjgsCi0g
ICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEZDLDB4RUUsMHhGRSwweEJDLDB4MDQsMHg0MSwweEMz
LDB4MzgsMHhBMiwweEU4LDB4QjAsMHhGOCwKLSAgICAweEUzLDB4MzgsMHhDMywweDM4LDB4MDAs
MHgyMywweDAwLDB4MDgsMHgwMywweDM5LDB4QzMsMHgzMCwweEFGLDB4QkYsMHgwRiwweDI4LAot
ICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHgyQiwweDJGLDB4QkYsMHhCNSwweDY0LDB4NDEsMHgw
MywweDQxLDB4NjgsMHg3RSwweEZFLDB4RkIsCi0gICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweDU3
LDB4RDUsMHhGRiwweEYzLDB4ODUsMHg0OSwweDAzLDB4NDEsMHhCRCwweEFGLDB4QkQsMHhGRiwK
LSAgICAweDg1LDB4NDksMHgyMywweDQxLDB4NUUsMHhGRSwweDY4LDB4REEsMHg0NCwweDQxLDB4
RTIsMHgzOCwweEFBLDB4QTIsMHhBQiwweDdGLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg3
OCwweEE4LDB4MkEsMHgwMCwweDAzLDB4MzksMHhDMiwweDMwLDB4MkYsMHhDQiwweEU4LDB4MjMs
Ci0gICAgMHg0NCwweDM5LDB4RTMsMHgzOCwweEJELDB4RkQsMHhERCwweDU1LDB4MjQsMHgzOSww
eDAzLDB4MzksMHhEMCwweDVDLDB4NUUsMHg1RCwKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4
QTIsMHhBOCwweEZFLDB4NzcsMHgwMywweDM5LDB4RTIsMHgzMCwweEUwLDB4REUsMHhCQiwweEFE
LAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhBRiwweDJCLDB4MEYsMHgyRiwweDQzLDB4NDEs
MHhFMiwweDM4LDB4NkIsMHhGRSwweDJBLDB4QUEsCi0gICAgMHg4NSwweDQ5LDB4MjMsMHg0MSww
eEY1LDB4N0QsMHg5NywweDNELDB4QTUsMHg1MSwweDIzLDB4NDEsMHg3RCwweEVGLDB4NkEsMHg4
MCwKLSAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4RjcsMHhGRiwweEVCLDB4MjAsMHg4NCwweDUx
LDB4NDQsMHg0OSwweDVCLDB4NkEsMHhCQSwweEM4LAotICAgIDB4QTYsMHg1MSwweDQ0LDB4NDks
MHhGNSwweEZGLDB4RkYsMHhGOCwweEE1LDB4NTksMHgyMywweDQxLDB4RDcsMHhGRiwweEEyLDB4
MDIsCi0gICAgMHhBNSwweDU5LDB4NjQsMHg1MSwweDc1LDB4QTUsMHhFNSwweDg4LDB4QzUsMHg1
OSwweDg0LDB4NTEsMHg4RCwweDJCLDB4QUIsMHhGQiwKLSAgICAweEU2LDB4NjEsMHg4NCwweDU5
LDB4NkEsMHhDNywweDI3LDB4M0YsMHhDNSwweDYxLDB4ODQsMHg1OSwweEUzLDB4MDAsMHg4RSww
eDlDLAotICAgIDB4MDYsMHg2QSwweDY0LDB4NTksMHhGRCwweEZCLDB4QUEsMHgwMywweDA2LDB4
NkEsMHg4NCwweDU5LDB4QjUsMHhCNywweDM3LDB4M0UsCi0gICAgMHg4OCwweDdBLDB4MDYsMHg2
QSwweDJGLDB4QUYsMHhFRCwweEFGLDB4MDksMHg4QiwweDQ2LDB4NzIsMHgyQSwweDhGLDB4QkQs
MHhCNSwKLSAgICAweDA5LDB4OEIsMHhBOCwweDgyLDB4MkYsMHhBNywweEE5LDB4MkYsMHgyRSww
eEFDLDB4RTksMHg4MiwweDJELDB4MzUsMHgzRCwweEI1LAotICAgIDB4MzUsMHhFRSwweEIwLDB4
QkMsMHgwQiwweDBCLDB4MEIsMHgwOSwweDc2LDB4RUUsMHgzNSwweEVFLDB4RkUsMHhFQSwweDJB
LDB4MjgsCi0gICAgMHg3NiwweEVFLDB4MzUsMHhFNiwweEZGLDB4RkEsMHhBQSwweEFBLDB4NzYs
MHhFRSwweDM1LDB4RTYsMHg3RSwweEVBLDB4RTgsMHg2QSwKLSAgICAweDU1LDB4RUUsMHgzNSww
eEU2LDB4N0YsMHhBOCwweEU4LDB4N0EsMHgxNCwweEVFLDB4MzUsMHhFNiwweEZFLDB4NzUsMHhE
NSwweEY1LAotICAgIDB4MzUsMHhFNiwweEY0LDB4REQsMHg4OCwweDg4LDB4QTgsMHg3OCwweEY0
LDB4REQsMHgxMSwweEM1LDB4RjAsMHg3OCwweDdDLDB4NUEsCi0gICAgMHhCMywweENELDB4MzEs
MHhDNSwweEFGLDB4OEYsMHgyRCwweDg5LDB4QjMsMHhENSwweDUyLDB4QzUsMHgyQSwweEFBLDB4
QkEsMHhGNiwKLSAgICAweEQzLDB4Q0QsMHg3MywweENELDB4NUYsMHhERiwweDZGLDB4N0QsMHg5
MywweENELDB4NTIsMHhDNSwweDdGLDB4NkEsMHhCQiwweEJFLAotICAgIDB4NzMsMHhDRCwweDEy
LDB4QkQsMHhGRiwweDdBLDB4N0EsMHg2OCwweDMyLDB4QzUsMHgxMSwweEJELDB4NjAsMHhFQSww
eDA5LDB4MEEsCi0gICAgMHgzMiwweEM1LDB4RDAsMHhCNCwweEZGLDB4NkEsMHhFQSwweEE4LDB4
MTEsMHhCRCwweEIwLDB4QjQsMHgwQSwweDhCLDB4RTgsMHg2QSwKLSAgICAweEYxLDB4QjQsMHg4
OSwweDcyLDB4ODAsMHhBOCwweEZFLDB4NUUsMHg5MCwweEFDLDB4QUQsMHg5MywweEZFLDB4QkYs
MHhBRCwweDJELAotICAgIDB4QjAsMHhCNCwweDRGLDB4QTQsMHgwNSwweDBCLDB4MkEsMHgwQiww
eEQwLDB4QjQsMHg5MCwweEFDLDB4OEIsMHhERSwweDdFLDB4RkIsCi0gICAgMHhEMSwweEI0LDB4
NkYsMHhBQywweDBBLDB4MUQsMHhBQiwweDhBLDB4RDEsMHhCNCwweDhGLDB4QUMsMHg5RiwweDNF
LDB4RkMsMHgwOCwKLSAgICAweEQxLDB4QjQsMHg5MCwweEFDLDB4RkEsMHhCQywweEZBLDB4MkEs
MHhEMSwweEI0LDB4OEYsMHhBQywweDg4LDB4RjgsMHg3QiwweDVGLAotICAgIDB4ODQsMHg1OSww
eDQzLDB4NTEsMHgzRiwweDJFLDB4NkEsMHgyQiwweDg0LDB4NTksMHgyMiwweDUxLDB4QTgsMHhB
MiwweEU5LDB4QkYsCi0gICAgMHg4NCwweDU5LDB4MjMsMHg1MSwweEZGLDB4RkEsMHhGQiwweEUy
LDB4NjQsMHg1MSwweDIzLDB4NTEsMHhBRiwweEY2LDB4QUIsMHhBOSwKLSAgICAweDYzLDB4NTks
MHgyMiwweDUxLDB4OEEsMHg4MiwweDhELDB4MDIsMHg4NCwweDU5LDB4NDMsMHg1OSwweEVCLDB4
RkYsMHhCRCwweEI1LAotICAgIDB4QTQsMHg2MSwweDY0LDB4NTksMHhERiwweEZFLDB4M0IsMHgx
QSwweDg0LDB4NjEsMHg0MywweDU5LDB4RUEsMHhGRiwweDRFLDB4N0UsCi0gICAgMHhBNCwweDYx
LDB4MjMsMHg1MSwweEU4LDB4RkEsMHg3RiwweEY1LDB4NjMsMHg2MSwweDQzLDB4NTEsMHhBOSww
eENGLDB4RUQsMHhBQiwKLSAgICAweDYzLDB4NTksMHgyMywweDUxLDB4RkYsMHhBQSwweEEzLDB4
RUEsMHg2NCwweDU5LDB4NDMsMHg1OSwweEY1LDB4RTIsMHg0QiwweDY1LAotICAgIDB4NDQsMHg1
OSwweDIzLDB4NTEsMHgyRSwweDJDLDB4MEUsMHg0RCwweDQzLDB4NTksMHgyMywweDUxLDB4RDgs
MHg5RSwweDdDLDB4QjgsCi0gICAgMHg0MywweDU5LDB4MDMsMHg1MSwweEZGLDB4NTYsMHhGQyww
eEJFLDB4NDMsMHg1MSwweDAzLDB4NDksMHg3OCwweDY5LDB4QUEsMHhCMCwKLSAgICAweDIzLDB4
NTEsMHgwMywweDQ5LDB4NzcsMHg3NSwweDYyLDB4NUMsMHgwMywweDQ5LDB4RTIsMHg0OCwweEIy
LDB4REQsMHg1NywweDBDLAotICAgIDB4MjMsMHg1MSwweEUyLDB4NDgsMHhBMiwweDIyLDB4RTgs
MHg2QSwweDI0LDB4NTEsMHhFMiwweDQ4LDB4QjYsMHhFRSwweEY1LDB4QUQsCi0gICAgMHg2Myww
eDU5LDB4RTIsMHg0MCwweEZGLDB4QkYsMHhBRCwweDJELDB4NEEsMHg5MywweDgzLDB4NTksMHgy
NSwweDJELDB4MjksMHgwQiwKLSAgICAweEFCLDB4QTMsMHg0QSwweDlCLDB4Q0YsMHhGRiwweDJB
LDB4MDIsMHhFQywweEFCLDB4NkIsMHg5QiwweEE1LDB4OEYsMHgyQSwweDBCLAotICAgIDB4RUMs
MHhBQiwweEFCLDB4QTMsMHgzRCwweEU2LDB4NkMsMHhGOCwweEVDLDB4QUIsMHg4QSwweDlCLDB4
MDgsMHhDOCwweEZCLDB4NTcsCi0gICAgMHhDQiwweEEzLDB4OEEsMHg5QiwweEZCLDB4Q0UsMHhF
QiwweDU1LDB4QUIsMHhBMywweDZBLDB4OUIsMHg1NywweEU4LDB4RUUsMHhBOSwKLSAgICAweDhC
LDB4OUIsMHgyOSwweDkzLDB4N0IsMHhGRSwweEJBLDB4QTgsMHg4QiwweDlCLDB4NDksMHg5Myww
eDU1LDB4RDUsMHhFRSwweDAyLAotICAgIDB4OEEsMHg5QiwweDRBLDB4OTMsMHg3RCwweERGLDB4
NkIsMHhGMiwweDZBLDB4OUIsMHgyQSwweDkzLDB4QUUsMHhBQywweEJGLDB4RkUsCi0gICAgMHg2
QSwweDlCLDB4ODcsMHg4MiwweDY4LDB4NjIsMHhFQSwweEZBLDB4QTgsMHg3QSwweDQ2LDB4NzIs
MHhGQywweERFLDB4N0YsMHg3RSwKLSAgICAweDY3LDB4NzIsMHgwNiwweDcyLDB4OEEsMHgyMiww
eEVBLDB4OEEsMHg2NywweDcyLDB4MjYsMHg3MiwweEVBLDB4RTgsMHhGRSwweEY5LAotICAgIDB4
NDcsMHg3MiwweDA1LDB4NkEsMHhCQiwweEVFLDB4N0EsMHgyMCwweDQ3LDB4NzIsMHgwNiwweDZB
LDB4Q0EsMHhBMiwweDdBLDB4NzgsCi0gICAgMHg0NywweDcyLDB4MDYsMHg2QSwweDY5LDB4RkEs
MHg3RiwweDU3LDB4MjYsMHg2QSwweDA2LDB4NkEsMHg2RiwweEQ3LDB4MzcsMHgyNSwKLSAgICAw
eDA2LDB4NjIsMHg0MywweDUxLDB4NzgsMHhFMCwweDgwLDB4ODAsMHhBNSwweDU5LDB4MDMsMHg0
MSwweDVGLDB4N0YsMHhGQSwweEU4LAotICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHg3MCwweDYy
LDB4QjgsMHhFQywweDAzLDB4NDEsMHhBMSwweDMwLDB4RkYsMHg3RSwweEZBLDB4QzgsCi0gICAg
MHgwMywweDQxLDB4QzIsMHgzOCwweEFELDB4ODMsMHhBMSwweDNGLDB4NDQsMHg0OSwweEUyLDB4
MzgsMHhBRCwweEFELDB4OEIsMHhBQiwKLSAgICAweDQ0LDB4NDksMHhFMiwweDM4LDB4NUUsMHg3
QSwweEU4LDB4QTgsMHhFMywweDQwLDB4MDMsMHgzOSwweDdFLDB4RDcsMHhGRCwweDNGLAotICAg
IDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBOCwweEY4LDB4RkEsMHhGQSwweDAzLDB4NDEsMHhDMiww
eDM4LDB4ODIsMHhBRSwweEY3LDB4RjcsCi0gICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEJGLDB4
M0QsMHhCRCwweEJELDB4NDQsMHg0MSwweDAzLDB4NDEsMHhGNywweEZGLDB4QUYsMHhBQSwKLSAg
ICAweDQ0LDB4NDksMHgwMywweDQxLDB4RTUsMHhCQiwweEVBLDB4ODIsMHgyNCwweDQ5LDB4MDMs
MHg0MSwweEJGLDB4N0EsMHgyMywweDBCLAotICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHhCQiww
eENGLDB4QkIsMHhCRiwweEM2LDB4NjEsMHg0NCwweDQ5LDB4RkQsMHhBNSwweDJELDB4QUQsCi0g
ICAgMHhDNiwweDYxLDB4NjUsMHg1MSwweEZELDB4RkYsMHhGQSwweENBLDB4ODYsMHg1MSwweDA0
LDB4NDEsMHhFRSwweDdDLDB4RkUsMHhFQSwKLSAgICAweDI0LDB4NDEsMHhDMywweDM4LDB4RTAs
MHhDQSwweEVBLDB4RTYsMHgwMywweDM5LDB4QzMsMHgzOCwweDVELDB4RkIsMHg3MiwweEZFLAot
ICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHg1RCwweDVFLDB4REUsMHg1RSwweDQ1LDB4NDEsMHhD
MywweDMwLDB4ODEsMHhGQiwweEZELDB4RjUsCi0gICAgMHgwMywweDM5LDB4QzMsMHgzMCwweEZF
LDB4RUYsMHhGRSwweEUwLDB4MjQsMHg0MSwweEMzLDB4MzAsMHhCRiwweEFCLDB4RjksMHhDRCwK
LSAgICAweDQ0LDB4NDEsMHhFMywweDQwLDB4RkYsMHhBQSwweDg5LDB4QkYsMHg2NSwweDQ5LDB4
MDMsMHg0MSwweDNELDB4QkYsMHgzRSwweEFCLAotICAgIDB4ODUsMHg1MSwweDQ0LDB4NDksMHhB
QSwweDVBLDB4RkIsMHhFRiwweDg1LDB4NTEsMHgyNCwweDQ5LDB4MkIsMHhBQiwweEZFLDB4N0Es
Ci0gICAgMHg4NSwweDU5LDB4MDQsMHg0OSwweDg4LDB4RkEsMHhGQSwweDdELDB4NDQsMHg0OSww
eEUzLDB4MzgsMHhDMCwweEY4LDB4RUYsMHhGRSwKLSAgICAweDA0LDB4NDEsMHhDMywweDM4LDB4
QTIsMHgwQiwweDJGLDB4M0YsMHgwNCwweDQxLDB4QzMsMHgzOCwweDY4LDB4RUEsMHg3MCwweEIw
LAotICAgIDB4MjQsMHg0MSwweEMzLDB4MzgsMHhENywweEZELDB4QUIsMHgyOSwweDA0LDB4NDEs
MHhDMywweDM4LDB4QTgsMHhFRiwweEFGLDB4RUYsCi0gICAgMHg0NCwweDQxLDB4QzIsMHgzMCww
eDJGLDB4OEIsMHgyRiwweEI3LDB4NjUsMHg0OSwweDA0LDB4NDEsMHhFQiwweEZCLDB4RUUsMHhG
RSwKLSAgICAweDQ0LDB4NDEsMHgyMywweDQxLDB4NTUsMHhENSwweDlELDB4NTcsMHg2NCwweDQ5
LDB4RTMsMHgzOCwweEFBLDB4MkIsMHhGQSwweEQ3LAotICAgIDB4NDQsMHg0MSwweDAzLDB4Mzks
MHhFQSwweDdFLDB4RkEsMHhFOCwweDIzLDB4NDEsMHhDMiwweDMwLDB4QTgsMHhGRSwweEZBLDB4
NUEsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDgwLDB4QTAsMHhBQiwweDhELDB4QzIsMHgz
OCwweEUyLDB4MzAsMHg3NywweEY3LDB4RjUsMHhERCwKLSAgICAweEUzLDB4MzgsMHhDMiwweDMw
LDB4QTIsMHhBMywweDNFLDB4MkEsMHgwMywweDM5LDB4QzIsMHgzMCwweEUyLDB4RTgsMHg4QSww
eEFGLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGRiwweEZCLDB4QUEsMHhBOCwweDI0LDB4
MzksMHhDMywweDMwLDB4RkQsMHhGQiwweEJGLDB4QUIsCi0gICAgMHgwMywweDM5LDB4QzIsMHgz
MCwweDJGLDB4OEEsMHgwMCwweDgwLDB4MjMsMHg0MSwweEUzLDB4MzgsMHgwQSwweDNCLDB4M0Is
MHhBRCwKLSAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4QkQsMHhBQiwweDM3LDB4QkQsMHhDNSww
eDUxLDB4NjQsMHg0OSwweDBCLDB4QUYsMHhGQSwweEZCLAotICAgIDB4QzYsMHg1OSwweDg1LDB4
NTEsMHg3QSwweDZFLDB4RkEsMHg1NSwweDg0LDB4NTEsMHg2NCwweDUxLDB4REYsMHhGMiwweEVC
LDB4NzksCi0gICAgMHg4NSwweDUxLDB4MjMsMHg0OSwweDAwLDB4MDIsMHhCRSwweDdFLDB4RTYs
MHg2MSwweDQzLDB4NDksMHhBQiwweDBBLDB4MEIsMHhBRCwKLSAgICAweDA2LDB4NjIsMHhDNiww
eDYxLDB4NzUsMHg1QSwweEYyLDB4QTEsMHgwNiwweDZBLDB4QTUsMHg1OSwweDdELDB4RkIsMHhC
RSwweDNGLAotICAgIDB4MjcsMHg2QSwweEE0LDB4NTksMHhENSwweERGLDB4NzgsMHhGMiwweDA2
LDB4NkEsMHhDNSwweDYxLDB4NUEsMHg2RSwweDIxLDB4OUYsCi0gICAgMHg0NywweDcyLDB4ODQs
MHg1OSwweDBGLDB4MjcsMHhCNywweEJGLDB4QTgsMHg4MiwweDA2LDB4NkEsMHg1RCwweEZGLDB4
QTksMHg4MSwKLSAgICAweDY3LDB4N0EsMHgwNiwweDZBLDB4MEQsMHhGNSwweERGLDB4N0UsMHhD
OSwweDgyLDB4NDYsMHg3MiwweDBGLDB4MkIsMHgyOSwweEE1LAotICAgIDB4MDksMHg4QiwweEM4
LDB4ODIsMHhGNSwweEQ1LDB4QkEsMHhBOSwweDZCLDB4OTMsMHhFOSwweDgyLDB4MzUsMHgzRCww
eDI3LDB4MkQsCi0gICAgMHgxNSwweEU2LDB4RUQsMHhBMywweDA5LDB4MEQsMHgyRCwweDJELDB4
NzUsMHhFRSwweDM1LDB4RUUsMHg4QSwweDhCLDB4RUQsMHhGNSwKLSAgICAweDc1LDB4RUUsMHgz
NSwweEU2LDB4OEEsMHhBOCwweEVFLDB4RkQsMHg1NSwweEVFLDB4MTUsMHhFNiwweDg4LDB4ODgs
MHhBOCwweDQyLAotICAgIDB4NTUsMHhFRSwweDE0LDB4RTYsMHg4QSwweEVFLDB4RkYsMHg1NSww
eDM1LDB4RTYsMHhGNCwweERELDB4QTAsMHhFOCwweEZBLDB4N0IsCi0gICAgMHgxNCwweERFLDB4
QjQsMHhENSwweEMwLDB4ODAsMHg2OCwweDdFLDB4OTMsMHhENSwweEYxLDB4QkMsMHhEQywweEE4
LDB4QUMsMHhBRSwKLSAgICAweEI0LDB4RDUsMHg1MiwweEM1LDB4QTksMHg4QiwweEFBLDB4QTAs
MHg5MywweENELDB4MzIsMHhDNSwweEJBLDB4RTgsMHg2OCwweEVBLAotICAgIDB4NzIsMHhDRCww
eDMyLDB4QzUsMHgwMCwweDgzLDB4MkQsMHhFRiwweDczLDB4Q0QsMHg5MywweEM1LDB4ODIsMHhB
QSwweDdDLDB4QUEsCi0gICAgMHg3MywweEM1LDB4MzIsMHhDNSwweEY4LDB4RUEsMHhFQSwweEFB
LDB4NTIsMHhDNSwweDExLDB4QkQsMHhCQSwweEZFLDB4RjcsMHg2NywKLSAgICAweDMyLDB4QzUs
MHhGMSwweEJDLDB4QUMsMHhBQiwweDdGLDB4NUUsMHgzMiwweEM1LDB4RUQsMHg5QiwweEU4LDB4
RTgsMHg2QSwweDdBLAotICAgIDB4RUUsMHg5QiwweDg5LDB4NzIsMHg1NCwweDlFLDB4QkUsMHgy
QSwweDRGLDB4QTQsMHg2QywweDhCLDB4MkQsMHgyQiwweDBCLDB4MDIsCi0gICAgMHhEMSwweEI0
LDB4NkYsMHhBQywweDI1LDB4RkQsMHhCNSwweEY1LDB4RDAsMHhCNCwweDkwLDB4QUMsMHhGNiww
eDNCLDB4QjUsMHhCNSwKLSAgICAweEQxLDB4QjQsMHg4RiwweEFDLDB4QUEsMHhFRiwweDJCLDB4
QjAsMHhEMCwweEI0LDB4NkYsMHhBQywweEEwLDB4RkUsMHg3RSwweDU3LAotICAgIDB4QjAsMHhC
NCwweDRGLDB4QTQsMHgwMCwweEFBLDB4QTYsMHhCNywweEIwLDB4QjQsMHg0RiwweEE0LDB4QjAs
MHhCQiwweEFGLDB4QjUsCi0gICAgMHg2MywweDU5LDB4MjIsMHg0OSwweDgzLDB4RkEsMHg3QSww
eDVCLDB4ODQsMHg1OSwweDIyLDB4NTEsMHhCQiwweEVELDB4M0IsMHgzRiwKLSAgICAweDYzLDB4
NTksMHgyMywweDUxLDB4MDAsMHg4MywweDNDLDB4MkYsMHg4NCwweDU5LDB4MjIsMHg0OSwweEY2
LDB4QTIsMHhBQywweEJBLAotICAgIDB4ODQsMHg2MSwweDYzLDB4NTksMHg1NSwweDc5LDB4NEIs
MHg0NSwweDg0LDB4NjEsMHg0MywweDU5LDB4MkQsMHgyQiwweDJCLDB4MEUsCi0gICAgMHg4NCww
eDYxLDB4NjMsMHg1OSwweDE1LDB4QjYsMHhGRSwweDdBLDB4ODQsMHg1OSwweDQzLDB4NTksMHhF
RSwweEJFLDB4RkUsMHhGRSwKLSAgICAweDg0LDB4NjEsMHgyMywweDUxLDB4RkYsMHhBQSwweEJB
LDB4NjgsMHg2MywweDU5LDB4MDIsMHg1MSwweEEyLDB4MEEsMHhCOCwweDdGLAotICAgIDB4NjMs
MHg1OSwweDIzLDB4NTEsMHgyQSwweDAyLDB4MkIsMHg3RiwweDg0LDB4NjEsMHgyMywweDUxLDB4
RkEsMHhFOCwweERCLDB4RjcsCi0gICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEZBLDB4RkUsMHg2
MiwweDZGLDB4NDQsMHg1MSwweDAzLDB4NTEsMHg4QSwweDAyLDB4MEIsMHg2QiwKLSAgICAweDQ0
LDB4NTEsMHgwMywweDQ5LDB4N0UsMHg2QSwweDczLDB4NjgsMHg0MywweDUxLDB4RTEsMHg0OCww
eEEwLDB4RUEsMHhGQiwweEVBLAotICAgIDB4MjMsMHg1MSwweEUyLDB4NDgsMHhBQSwweEE1LDB4
RDUsMHhGQiwweDIzLDB4NTEsMHhFMywweDQ4LDB4RUYsMHhFOCwweEFBLDB4QUEsCi0gICAgMHgy
MywweDUxLDB4QzIsMHg0OCwweEEyLDB4QUEsMHhCQSwweDc4LDB4MjMsMHg1MSwweEMyLDB4NDgs
MHhBQSwweEVGLDB4QjcsMHgyNSwKLSAgICAweEU2LDB4NjksMHgwMywweDUxLDB4RjUsMHgzNSww
eDNELDB4MkYsMHg2QSwweDlCLDB4MjUsMHg3MiwweDI5LDB4MDEsMHgwMywweDAyLAotICAgIDB4
Q0MsMHhBMywweDhCLDB4OUIsMHhFRiwweEVGLDB4RUQsMHg4QiwweEFDLDB4QTMsMHg4QiwweDlC
LDB4MEEsMHhGOSwweDc5LDB4NjIsCi0gICAgMHhBQiwweEEzLDB4MjksMHg5MywweDgwLDB4N0Es
MHhGRSwweEZFLDB4NjksMHg5QiwweDI4LDB4OTMsMHg4QSwweEFELDB4QUEsMHg4MCwKLSAgICAw
eDhBLDB4OUIsMHg0OSwweDkzLDB4OEIsMHhBQiwweDJGLDB4QkYsMHg4QSwweDlCLDB4NDksMHg5
MywweDAwLDB4ODIsMHhGQywweDdBLAotICAgIDB4OEIsMHg5QiwweDI5LDB4OTMsMHg4MCwweDMy
LDB4RUIsMHg3RiwweDhCLDB4OUIsMHgwOSwweDhCLDB4ODgsMHgyOCwweEZCLDB4NTUsCi0gICAg
MHg4QiwweEEzLDB4MDksMHg5MywweEEyLDB4RTAsMHhFRiwweEVELDB4NEEsMHg5MywweEU5LDB4
OEEsMHg4MCwweEE4LDB4RjgsMHhGRiwKLSAgICAweDA5LDB4OEIsMHg2NywweDdBLDB4RTAsMHhG
OCwweEU4LDB4NzgsMHg4NywweDdBLDB4MjYsMHg3MiwweERDLDB4RkEsMHhGRSwweERFLAotICAg
IDB4NjcsMHg3QSwweDI2LDB4NkEsMHg2RiwweDVCLDB4OEEsMHhGRiwweDQ2LDB4NzIsMHgwNSww
eDZBLDB4QkIsMHhERSwweDgwLDB4MDIsCi0gICAgMHg0NiwweDcyLDB4MDYsMHg2QSwweDNBLDB4
RkEsMHg4QiwweEVCLDB4NDcsMHg3MiwweDA2LDB4NkEsMHg1QywweERFLDB4N0IsMHhCNSwKLSAg
ICAweDI2LDB4NkEsMHhFNSwweDY5LDB4QUQsMHgzNiwweEJBLDB4QTgsMHg0NywweDcyLDB4MDYs
MHg2QSwweEMxLDB4QUIsMHgyOSwweDBGLAotICAgIDB4NjgsMHg3MiwweDA2LDB4NkEsMHg3QSww
eDdBLDB4QjAsMHgyMiwweDY3LDB4NzIsMHg0MywweDQ5LDB4N0UsMHhGQSwweEY4LDB4RTAsCi0g
ICAgMHg2NCwweDQ5LDB4RTMsMHg0MCwweDc3LDB4NUUsMHhGRSwweEY4LDB4MDMsMHg0MSwweEMy
LDB4MzgsMHhBOCwweDBBLDB4ODAsMHg3OCwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4MDIs
MHhBMiwweEVCLDB4RjksMHgyNCwweDQxLDB4QzIsMHgzOCwweDBBLDB4MkUsMHhCQiwweEE5LAot
ICAgIDB4NDQsMHg0OSwweDAzLDB4MzksMHgwMiwweEMwLDB4RUYsMHhBNSwweDIzLDB4NDEsMHhF
MiwweDM4LDB4NUYsMHhEQSwweERFLDB4QzIsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEYy
LDB4Q0EsMHhFOCwweEZBLDB4MDMsMHgzOSwweEMyLDB4MzgsMHhCNywweEVGLDB4M0YsMHhERiwK
LSAgICAweDI0LDB4NDEsMHhDMiwweDM4LDB4QUYsMHgyRiwweDJGLDB4OUYsMHg2NCwweDQ5LDB4
MDMsMHg0MSwweEJELDB4QUYsMHgyRCwweDBELAotICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhG
QSwweEY4LDB4RTgsMHg1OCwweDI0LDB4NDksMHgwMywweDQxLDB4OEEsMHgyMiwweDBBLDB4MkYs
Ci0gICAgMHg0NCwweDQ5LDB4MjQsMHg0OSwweDM3LDB4MUEsMHhEQywweDk0LDB4QTYsMHg1OSww
eDQ0LDB4NDksMHgyRiwweDBGLDB4M0YsMHhCRCwKLSAgICAweEM2LDB4NTksMHg2NSwweDUxLDB4
QzIsMHhFMiwweDYwLDB4RkIsMHg4NSwweDUxLDB4MjMsMHg0MSwweDZCLDB4NkEsMHhFRSwweEUw
LAotICAgIDB4MjQsMHg0MSwweEMyLDB4MzgsMHhGRiwweEQ3LDB4NzYsMHg3OCwweDI0LDB4NDEs
MHhDMywweDM4LDB4N0YsMHhGRiwweDczLDB4RjMsCi0gICAgMHhFMywweDMwLDB4QTIsMHgzMCww
eDc3LDB4RkQsMHhCRSwweDJFLDB4MDMsMHgzOSwweEMzLDB4MzAsMHhCNSwweEQ1LDB4QjcsMHgy
RiwKLSAgICAweDQ1LDB4NDEsMHgwNCwweDM5LDB4NTUsMHg3QSwweEUzLDB4N0IsMHgwMywweDM5
LDB4RTMsMHgzOCwweEM5LDB4QkYsMHhERiwweDFGLAotICAgIDB4MjQsMHg0MSwweEMyLDB4Mzgs
MHhCQSwweDlGLDB4MkUsMHgyMiwweDQ0LDB4NDksMHgwNCwweDQxLDB4MEEsMHgyQiwweDI5LDB4
MEQsCi0gICAgMHg2NSwweDUxLDB4NDQsMHg0OSwweEY1LDB4RkQsMHhCQiwweDc1LDB4NDQsMHg0
OSwweDAzLDB4NDEsMHg4OCwweEVBLDB4RTgsMHhFMCwKLSAgICAweDI0LDB4NDEsMHhFMywweDQw
LDB4MEEsMHgwRiwweDI3LDB4OEEsMHgyNCwweDQxLDB4RTMsMHgzOCwweEU4LDB4NzAsMHg1OCww
eDZBLAotICAgIDB4MDMsMHg0MSwweEUzLDB4MzgsMHhENywweEQ3LDB4N0YsMHhGQiwweDI0LDB4
NDEsMHhFMywweDM4LDB4QkYsMHhCRiwweDU3LDB4NUIsCi0gICAgMHgyNCwweDQxLDB4MDMsMHgz
OSwweDI3LDB4MUUsMHhGNiwweDdGLDB4MjQsMHg0MSwweEUzLDB4MzgsMHg3OCwweDc4LDB4NkIs
MHhBRiwKLSAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4QkQsMHhGRCwweDNELDB4MzcsMHg2NSww
eDQ5LDB4MDMsMHg0MSwweEZBLDB4RUEsMHg2MiwweEU5LAotICAgIDB4NDQsMHg0OSwweEUzLDB4
MzgsMHhBRiwweDZBLDB4MEIsMHgwQSwweDQ0LDB4NDksMHhDMiwweDMwLDB4N0UsMHhGQSwweEU4
LDB4RTAsCi0gICAgMHgyMywweDQxLDB4QzIsMHgzMCwweDhBLDB4REEsMHg1RSwweDUyLDB4RTIs
MHgzOCwweEMyLDB4MzAsMHg3QywweEY2LDB4QzUsMHgyQiwKLSAgICAweDAzLDB4MzksMHhDMiww
eDMwLDB4MkQsMHhFRCwweEFCLDB4MkEsMHgyMywweDM5LDB4QzIsMHgzMCwweEY3LDB4OTcsMHg4
RiwweEFFLAotICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHhGRCwweEJGLDB4RUIsMHgyQSwweDIz
LDB4MzksMHhFMywweDMwLDB4RkQsMHhGRSwweEQ0LDB4N0UsCi0gICAgMHgyNCwweDM5LDB4QzMs
MHgzMCwweEZFLDB4RkYsMHhGRSwweEEzLDB4MjMsMHgzOSwweEUzLDB4MzgsMHgyQiwweDg5LDB4
QjcsMHhGNSwKLSAgICAweDQ0LDB4NDEsMHhFMywweDMwLDB4N0YsMHhFRiwweEJBLDB4OEIsMHgy
MywweDQxLDB4RTIsMHgzOCwweEVELDB4N0QsMHhGRiwweDhCLAotICAgIDB4NDQsMHg0MSwweEUz
LDB4MzgsMHgwOSwweEY1LDB4REIsMHhENSwweDg1LDB4NTEsMHgwMywweDQxLDB4ODIsMHhFMyww
eEZGLDB4RkQsCi0gICAgMHg4NSwweDUxLDB4MDIsMHgzOSwweDI4LDB4OEEsMHhCNSwweDU3LDB4
ODQsMHg1MSwweDIzLDB4NDEsMHgyMCwweEJBLDB4RUEsMHg3RiwKLSAgICAweDg0LDB4NTEsMHgw
MywweDQxLDB4NjgsMHg2QSwweEZFLDB4QUYsMHhBNSwweDU5LDB4MDMsMHg0MSwweDI5LDB4MkQs
MHhBRiwweDJGLAotICAgIDB4MDYsMHg2MiwweEE1LDB4NTksMHg4QiwweEJGLDB4QUQsMHgyQiww
eDI2LDB4NkEsMHhDNSwweDYxLDB4REMsMHhBQiwweDhCLDB4QjcsCi0gICAgMHgyNywweDZBLDB4
QzYsMHg2MSwweEVCLDB4QkYsMHgzNywweDU2LDB4NjcsMHg3QSwweEU1LDB4NjksMHg1RiwweEVB
LDB4QzgsMHgwMywKLSAgICAweDI2LDB4NzIsMHhDNiwweDYxLDB4QjcsMHhCRiwweEZGLDB4RkMs
MHg4OCwweDdBLDB4MDYsMHg2QSwweDBELDB4QUQsMHhGNywweEQ1LAotICAgIDB4NjgsMHg3QSww
eDA2LDB4NkEsMHg3OCwweDdBLDB4NzcsMHg2QiwweEE4LDB4N0EsMHhDNCwweDYxLDB4MkIsMHhB
QiwweEJGLDB4RjUsCi0gICAgMHgwOSwweDhCLDB4NjcsMHg3MiwweDBBLDB4MDksMHhBRCwweEJE
LDB4MjksMHg4QiwweEU4LDB4ODIsMHgwRCwweEZELDB4RkYsMHg1RCwKLSAgICAweEQ0LDB4REQs
MHg2QSwweDkzLDB4MkQsMHgyRCwweDM1LDB4QjUsMHg1NSwweEVFLDB4RDMsMHhERCwweDBBLDB4
MkIsMHhBOSwweDJELAotICAgIDB4NTUsMHhFRSwweDM1LDB4RTYsMHhCRiwweDMzLDB4QUYsMHhG
RiwweDU1LDB4RUUsMHgxNSwweEU2LDB4RUEsMHhCQSwweEZFLDB4RkYsCi0gICAgMHgzNSwweEU2
LDB4MTQsMHhFNiwweEY3LDB4N0UsMHhGQSwweDU2LDB4MTQsMHhFNiwweEIzLDB4RDUsMHhBOCww
eEU4LDB4RkUsMHg1QSwKLSAgICAweEQ0LDB4REQsMHgzMiwweEM1LDB4QTAsMHhFOCwweEZBLDB4
N0EsMHg5MywweENELDB4MTEsMHhCRCwweDJGLDB4MkUsMHgwOSwweDJELAotICAgIDB4QjQsMHhE
NSwweDkzLDB4Q0QsMHg2QSwweDRCLDB4N0YsMHg3QiwweDkzLDB4Q0QsMHg3MywweENELDB4NzIs
MHg2QSwweEVFLDB4NjgsCi0gICAgMHg1MiwweEM1LDB4MzIsMHhCRCwweDM4LDB4QkEsMHg3OCww
eDM4LDB4NzIsMHhDRCwweDMyLDB4QzUsMHgwOCwweDhBLDB4RUEsMHhEQSwKLSAgICAweDczLDB4
Q0QsMHgzMiwweEM1LDB4OEEsMHhFRiwweDVELDB4NzcsMHgzMiwweEM1LDB4RjEsMHhCQywweEZF
LDB4QkMsMHhFQywweDY4LAotICAgIDB4MTIsMHhCRCwweEIwLDB4QjQsMHhFMCwweEZDLDB4NUYs
MHg3NiwweEIwLDB4QjQsMHgwRSwweDlDLDB4NjAsMHhGOCwweEU4LDB4NzgsCi0gICAgMHgyRSww
eEE0LDB4QUMsMHg5MywweDE3LDB4M0YsMHgzRSwweEZBLDB4NkYsMHhBQywweDBGLDB4OUMsMHhB
RCwweDJBLDB4MDMsMHhBOSwKLSAgICAweEIwLDB4QjQsMHg2RiwweEFDLDB4RDUsMHg5NSwweEI5
LDB4QkQsMHhEMSwweEI0LDB4NkYsMHhBQywweDI3LDB4M0IsMHhFRSwweEZFLAotICAgIDB4QjEs
MHhCNCwweDRGLDB4QTQsMHhGOCwweEY4LDB4RkYsMHg1RiwweDZGLDB4QTQsMHgyRiwweEE0LDB4
QjIsMHgyQSwweEVCLDB4QUIsCi0gICAgMHg4RiwweEFDLDB4NEYsMHhBNCwweDJGLDB4QUYsMHhF
QSwweEZCLDB4QjAsMHhBQywweDRGLDB4QTQsMHhGNSwweEI3LDB4MDksMHgwRiwKLSAgICAweDYz
LDB4NTksMHgwMiwweDUxLDB4N0UsMHhFRSwweDJELDB4QUYsMHg2MywweDU5LDB4MjIsMHg1MSww
eDNELDB4MkYsMHgwMiwweEUwLAotICAgIDB4ODQsMHg1OSwweDIzLDB4NTEsMHg4NywweENBLDB4
QTgsMHhFMywweDg0LDB4NTksMHgyMiwweDUxLDB4N0UsMHhBMywweDgwLDB4MkIsCi0gICAgMHhB
NSwweDYxLDB4NjMsMHg1OSwweDI1LDB4RDUsMHhGNSwweEVCLDB4QzUsMHg2MSwweDQzLDB4NTks
MHhBRiwweDJGLDB4RTcsMHhGRCwKLSAgICAweDg0LDB4NjEsMHg0MywweDU5LDB4RTAsMHhGOCww
eEVFLDB4N0UsMHg4NCwweDYxLDB4MjMsMHg1OSwweEZDLDB4REIsMHhFQiwweERBLAotICAgIDB4
NjQsMHg1OSwweDIzLDB4NTEsMHhBMiwweEZCLDB4N0IsMHg1QSwweDYzLDB4NTksMHgyMywweDUx
LDB4RkYsMHhEOCwweEJELDB4QTksCi0gICAgMHg2MywweDU5LDB4MjMsMHg1MSwweDdGLDB4QUEs
MHg4QSwweDZFLDB4NjQsMHg1MSwweDAyLDB4NTEsMHhBRSwweEI0LDB4QkEsMHhBQSwKLSAgICAw
eDQzLDB4NTksMHgwMywweDUxLDB4RTgsMHhBOCwweEZGLDB4RkEsMHg0MywweDUxLDB4MDMsMHg0
OSwweEFGLDB4QkUsMHhBRiwweEJFLAotICAgIDB4NjQsMHg1OSwweDAyLDB4NDksMHhGOCwweEQy
LDB4NUIsMHg3RiwweDIzLDB4NTEsMHgwMywweDQ5LDB4ODgsMHgzOCwweDBCLDB4MDMsCi0gICAg
MHgyMywweDUxLDB4MDMsMHg0OSwweDdGLDB4QUMsMHhFRSwweDYzLDB4MjMsMHg1MSwweEUyLDB4
NDAsMHhBQSwweEVBLDB4QjYsMHgwQSwKLSAgICAweDIzLDB4NTEsMHhDMiwweDQ4LDB4NzIsMHhC
QSwweEVBLDB4MDAsMHg2NCwweDU5LDB4MDMsMHg1MSwweEZELDB4OEIsMHhBQSwweEFBLAotICAg
IDB4QzksMHg4QSwweDY0LDB4NTksMHg5NSwweEI1LDB4MzUsMHgzNSwweEFDLDB4QTMsMHgwOSww
eDhCLDB4MkQsMHgyQiwweDJCLDB4QUEsCi0gICAgMHhDQywweEEzLDB4OEIsMHg5QiwweEVCLDB4
RUIsMHhBQSwweDBGLDB4RUMsMHhBQiwweEFCLDB4QTMsMHg3NSwweDc1LDB4RkIsMHgwNywKLSAg
ICAweEVDLDB4QUIsMHg0QSwweDkzLDB4NUYsMHhGRSwweEFDLDB4ODgsMHhBQiwweEEzLDB4NDks
MHg5MywweEZGLDB4REYsMHhBQSwweEUwLAotICAgIDB4NkEsMHg5QiwweDQ5LDB4OTMsMHg4Qiww
eDI4LDB4MkEsMHhDQywweDZBLDB4OUIsMHgwOCwweDkzLDB4QTAsMHg3MiwweEY4LDB4QjIsCi0g
ICAgMHg0OSwweDkzLDB4RTgsMHg4QSwweDdFLDB4N0YsMHhENiwweDg4LDB4MjksMHg5MywweEU4
LDB4OEEsMHhGQSwweERFLDB4RkUsMHhFQiwKLSAgICAweEU5LDB4OTIsMHgwOSwweDhCLDB4NTUs
MHhGRiwweDVGLDB4OTUsMHgyOSwweDkzLDB4QzgsMHg4MiwweDY4LDB4N0EsMHg3QSwweEZGLAot
ICAgIDB4RTksMHg4QSwweDg3LDB4N0EsMHg3QSwweEU4LDB4ODIsMHhBMCwweEE4LDB4ODIsMHg0
NiwweDcyLDB4NzcsMHg3RiwweDdBLDB4N0MsCi0gICAgMHg2NywweDcyLDB4MjYsMHg3MiwweDdE
LDB4NkYsMHgzQiwweDJBLDB4NjYsMHg3MiwweDA1LDB4NkEsMHhFQiwweDZBLDB4RTgsMHhCOCwK
LSAgICAweDY3LDB4NzIsMHhFNSwweDY5LDB4NkUsMHhFRSwweEZFLDB4MkUsMHg0NywweDcyLDB4
RTUsMHg2OSwweEFGLDB4MjcsMHgzNywweDlFLAotICAgIDB4NDcsMHg3MiwweDA2LDB4NkEsMHg3
NywweDU2LDB4RkMsMHhBRiwweDY3LDB4N0EsMHgwNiwweDZBLDB4QTUsMHhCRiwweDhFLDB4QUEs
Ci0gICAgMHg4NywweDdBLDB4NDcsMHg3MiwweEY1LDB4QjcsMHhGRSwweDJGLDB4ODcsMHg3QSww
eEU2LDB4NjEsMHg3MCwweDgyLDB4MDAsMHgwMCwKLSAgICAweDI2LDB4NkEsMHgwMywweDQxLDB4
NUUsMHg3QywweDc4LDB4RjgsMHgwMywweDQxLDB4QTIsMHgzOCwweDVDLDB4RTAsMHg4MCwweEEw
LAotICAgIDB4RTIsMHgzOCwweEEyLDB4MzAsMHg4MiwweDJBLDB4MUUsMHhBRSwweDAzLDB4NDEs
MHhFMywweDM4LDB4RTksMHhGRCwweEMyLDB4RUIsCi0gICAgMHgyNCwweDQxLDB4RTIsMHgzOCww
eEY1LDB4RkEsMHhFMiwweEFCLDB4MjQsMHg0MSwweEUzLDB4MzgsMHhFRiwweDVGLDB4N0IsMHg1
RCwKLSAgICAweEUzLDB4MzgsMHhDMiwweDM4LDB4ODAsMHhBMCwweEM4LDB4MDMsMHgyMywweDQx
LDB4QzIsMHgzOCwweDU3LDB4REYsMHhGRiwweEJGLAotICAgIDB4MDMsMHg0MSwweEUzLDB4Mzgs
MHgwNSwweDAxLDB4NjksMHgyQiwweDQ0LDB4NDksMHgwMywweDM5LDB4QUEsMHg2QSwweEFELDB4
QjUsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEY4LDB4N0UsMHhEQSwweDdBLDB4MjQsMHg0
OSwweEUzLDB4NDAsMHhCNiwweEFFLDB4QjYsMHhGRiwKLSAgICAweDY1LDB4NTEsMHgwMywweDQx
LDB4M0QsMHhCNSwweEQ1LDB4NTUsMHg4NSwweDUxLDB4QzMsMHg0MCwweDBBLDB4QUEsMHhBQSww
eEZELAotICAgIDB4QTYsMHg1OSwweDI0LDB4NDksMHhBMiwweDIyLDB4QkIsMHhGRCwweDg1LDB4
NTEsMHg0NCwweDQ5LDB4NDIsMHhFOCwweEZBLDB4MkYsCi0gICAgMHg2NSwweDQ5LDB4QzIsMHgz
MCwweDdFLDB4N0EsMHg3OCwweEUwLDB4MDMsMHg0MSwweEMzLDB4MzAsMHhBMSwweEUzLDB4RkEs
MHhGQSwKLSAgICAweEUzLDB4MzgsMHhDMywweDMwLDB4REMsMHg1QSwweEZDLDB4RkYsMHgwNCww
eDM5LDB4QzMsMHgzMCwweDhELDB4QkQsMHhENSwweDdELAotICAgIDB4MjQsMHgzOSwweEEyLDB4
MzAsMHgyMiwweDNFLDB4RkYsMHhENSwweDAzLDB4MzksMHhDMywweDMwLDB4MDAsMHgwMCwweDBB
LDB4M0QsCi0gICAgMHgyNCwweDQxLDB4MDMsMHgzOSwweDVCLDB4QkIsMHg4MywweEFELDB4NDQs
MHg0OSwweDAzLDB4NDEsMHgwRCwweDBCLDB4M0QsMHgwOSwKLSAgICAweDY0LDB4NDksMHgyNCww
eDQ5LDB4QUUsMHhBRiwweEFGLDB4QkIsMHg0NCwweDQ5LDB4MDMsMHg0MSwweDgwLDB4QTAsMHg3
MiwweEZFLAotICAgIDB4MjQsMHg0MSwweEMyLDB4MzgsMHgwMCwweEFBLDB4QkEsMHg3OCwweDAz
LDB4NDEsMHhDMywweDM4LDB4ODIsMHgyQSwweEEwLDB4M0YsCi0gICAgMHgwMywweDQxLDB4RTMs
MHgzOCwweEJBLDB4OUUsMHg1QSwweEY4LDB4MjQsMHg0MSwweDAzLDB4MzksMHg1NywweDNBLDB4
MEIsMHhFRiwKLSAgICAweDY1LDB4NDEsMHhFMywweDMwLDB4RkYsMHhERiwweDdDLDB4N0YsMHg0
NCwweDM5LDB4RTMsMHgzOCwweEJGLDB4QkYsMHhGNywweDc1LAotICAgIDB4MjMsMHgzOSwweEUz
LDB4MzgsMHgzOCwweEZBLDB4QkQsMHgyRiwweDQ0LDB4NDEsMHgwMywweDM5LDB4OEIsMHhBOSww
eEVBLDB4RTIsCi0gICAgMHg2NCwweDQ5LDB4MDIsMHgzOSwweEEwLDB4RUIsMHhGRiwweDU3LDB4
NDQsMHg0MSwweEMyLDB4MzAsMHhGOCwweDZBLDB4RjIsMHhGRiwKLSAgICAweDAyLDB4MzksMHhD
MiwweDMwLDB4NTcsMHhERiwweERFLDB4NzgsMHgwMywweDM5LDB4QzIsMHgzMCwweEJGLDB4QTYs
MHg4QiwweEU1LAotICAgIDB4MjMsMHgzOSwweEUyLDB4MzgsMHhGRCwweEFGLDB4MEIsMHhBOSww
eDIzLDB4MzksMHhFMiwweDMwLDB4RkYsMHhGQSwweEUyLDB4RTMsCi0gICAgMHgyNCwweDM5LDB4
MDMsMHgzOSwweDJGLDB4RTUsMHg3NSwweEI1LDB4MjQsMHgzOSwweEUzLDB4MzgsMHg3QywweEZD
LDB4QTgsMHgwOCwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QTIsMHhFMCwweEI4LDB4QjAs
MHgwMywweDM5LDB4QzIsMHgzMCwweDJCLDB4QUYsMHhERCwweDdBLAotICAgIDB4MjMsMHg0MSww
eEMyLDB4MzAsMHgwQiwweEJGLDB4REQsMHg1RCwweDY0LDB4NDEsMHhDMiwweDM4LDB4RUEsMHhB
QSwweEFCLDB4QUQsCi0gICAgMHgyMywweDQxLDB4RTMsMHgzOCwweEQ3LDB4NUIsMHhGQywweEE4
LDB4NDMsMHg0MSwweEUzLDB4MzgsMHg4RCwweEI1LDB4RjcsMHhGRiwKLSAgICAweDQ0LDB4NDEs
MHhFMywweDM4LDB4RkUsMHhCQSwweDNCLDB4QjksMHgyMywweDQxLDB4RTIsMHgzOCwweDAwLDB4
QzcsMHhGNiwweEJDLAotICAgIDB4NDQsMHg0OSwweEUyLDB4MzgsMHgwMiwweEZBLDB4OUUsMHhF
QiwweEE1LDB4NTEsMHgyMywweDQ5LDB4MjcsMHhCRiwweEI3LDB4QkQsCi0gICAgMHg0NywweDZB
LDB4ODQsMHg1MSwweDI3LDB4M0YsMHhCRCwweEZELDB4ODgsMHg3QSwweEU2LDB4NjEsMHhGNSww
eEZBLDB4QUEsMHgwQiwKLSAgICAweDQ3LDB4NzIsMHhBNSwweDYxLDB4NTUsMHg1NywweDVDLDB4
RTIsMHg0NywweDcyLDB4ODUsMHg1OSwweDBCLDB4MkQsMHhCNywweEZFLAotICAgIDB4NDcsMHg3
MiwweEU1LDB4NjksMHg3OCwweDYwLDB4REIsMHg3OSwweDA1LDB4NkEsMHhDNSwweDYxLDB4ODMs
MHhCRiwweDhFLDB4MEIsCi0gICAgMHg2NywweDcyLDB4RTUsMHg2MSwweDhCLDB4MDksMHgwOSww
eEI1LDB4NDcsMHg3MiwweEU1LDB4NjEsMHhGNiwweEJFLDB4RTAsMHgwMCwKLSAgICAweEE3LDB4
N0EsMHgyNiwweDcyLDB4MDksMHgyQiwweDA5LDB4MkIsMHgwOSwweDgzLDB4QTgsMHg3QSwweEVC
LDB4QTUsMHgzNSwweDdELAotICAgIDB4OEYsMHhCNCwweEU4LDB4ODIsMHgyRCwweDJELDB4MkQs
MHgyRCwweDM1LDB4RTYsMHgzMSwweENELDB4MEIsMHgyOSwweEFELDB4MkQsCi0gICAgMHgzNSww
eEU2LDB4MTQsMHhFNiwweEE4LDB4QkYsMHhGNywweDU1LDB4MzUsMHhFNiwweEY0LDB4REQsMHhB
OCwweEE4LDB4RkEsMHhERiwKLSAgICAweDM0LDB4RTYsMHhGNCwweERELDB4RUEsMHg2QSwweEZC
LDB4N0IsMHgxNCwweERFLDB4OTMsMHhENSwweEY4LDB4RkUsMHhGRSwweDdBLAotICAgIDB4OTMs
MHhENSwweEYxLDB4QkMsMHg2OCwweDU4LDB4NTgsMHg1RSwweDkzLDB4Q0QsMHgxMSwweEJELDB4
MkQsMHgyOSwweDI5LDB4MkYsCi0gICAgMHhCNCwweENELDB4NzMsMHhDRCwweEFBLDB4RUEsMHhG
RSwweDdCLDB4OTMsMHhDRCwweDMyLDB4QzUsMHg4MiwweENBLDB4RkUsMHg3RiwKLSAgICAweDky
LDB4QzUsMHgzMiwweEM1LDB4OUUsMHhGRiwweEY3LDB4RjcsMHg1MiwweEM1LDB4MzIsMHhDNSww
eDgwLDB4QTAsMHhDNiwweEM4LAotICAgIDB4NTIsMHhDNSwweDExLDB4QkQsMHhGMCwweEVBLDB4
RkEsMHg3MiwweDEyLDB4QzUsMHhCMCwweEFDLDB4QTAsMHhGQSwweEZFLDB4NjAsCi0gICAgMHhG
MSwweEJDLDB4OTAsMHhBQywweEY4LDB4RjgsMHhGNiwweERGLDB4QjAsMHhBQywweEVELDB4OUIs
MHhGOCwweDc4LDB4NUUsMHg1NywKLSAgICAweDJFLDB4QTQsMHhDRCwweDkzLDB4OEUsMHgzRCww
eEY3LDB4RjUsMHg5MCwweEFDLDB4RUUsMHg5QiwweDJGLDB4MkYsMHgyQiwweDI5LAotICAgIDB4
QjAsMHhCNCwweDRGLDB4QUMsMHhBRSwweEVGLDB4RTIsMHhGQSwweDkwLDB4QUMsMHg0RiwweEE0
LDB4ODgsMHhBMCwweEZFLDB4NTcsCi0gICAgMHg2RiwweEFDLDB4MEUsMHg5QywweDcyLDB4RTgs
MHhBQSwweDAyLDB4OTAsMHhBQywweDJFLDB4QTQsMHgyOSwweDI5LDB4MkYsMHgwQSwKLSAgICAw
eDkwLDB4QUMsMHg2RiwweEE0LDB4NkEsMHgwMCwweDI4LDB4MDgsMHhCMCwweEFDLDB4NEUsMHhB
NCwweDJBLDB4QjAsMHhGOCwweDU4LAotICAgIDB4ODQsMHg1OSwweDIyLDB4NTEsMHhGRCwweDlG
LDB4RjcsMHhDQSwweDg0LDB4NTksMHg0MywweDUxLDB4RkYsMHg4RSwweEY3LDB4NUEsCi0gICAg
MHg4MywweDU5LDB4MjIsMHg1MSwweENBLDB4QUEsMHg2QSwweEVCLDB4ODQsMHg2MSwweDIyLDB4
NTEsMHgyRiwweEFGLDB4MEQsMHhBOSwKLSAgICAweDg0LDB4NjEsMHg0MywweDUxLDB4NEMsMHhD
QiwweEFFLDB4RkUsMHg2MywweDU5LDB4MjMsMHg1MSwweDAwLDB4RDgsMHg1RSwweDY5LAotICAg
IDB4NjQsMHg1OSwweDIyLDB4NTEsMHhFQSwweDhBLDB4RkUsMHhGRiwweDg0LDB4NTksMHgyMiww
eDUxLDB4REEsMHgyOCwweEFBLDB4QUYsCi0gICAgMHg2MywweDU5LDB4MjMsMHg1MSwweEY4LDB4
NjgsMHhGOCwweDMwLDB4NjQsMHg1OSwweDIyLDB4NTEsMHg4QiwweDA5LDB4RDcsMHg1RSwKLSAg
ICAweDY0LDB4NTksMHgwMiwweDQ5LDB4RkYsMHhGQSwweEZDLDB4RkYsMHg0MywweDUxLDB4MDIs
MHg0OSwweEFBLDB4QUIsMHg2RiwweENCLAotICAgIDB4NDMsMHg1MSwweDAzLDB4NDksMHhGQSww
eEZBLDB4QUIsMHgwRiwweDY0LDB4NTksMHgwMywweDQ5LDB4QkYsMHhGQiwweEExLDB4RkIsCi0g
ICAgMHg0NCwweDUxLDB4MDIsMHg0OSwweEFFLDB4QUEsMHg2QSwweDQwLDB4NDQsMHg1MSwweEUz
LDB4NDgsMHhFRiwweEFCLDB4OEYsMHhBRCwKLSAgICAweDIzLDB4NTEsMHhFMiwweDQ4LDB4RTIs
MHhFMCwweEUwLDB4NjgsMHgyNCwweDU5LDB4MDIsMHg0OSwweEEzLDB4ODksMHgzQiwweDM5LAot
ICAgIDB4NDMsMHg1OSwweDAzLDB4NTEsMHgyOSwweDAzLDB4QTIsMHgyMCwweDY0LDB4NTksMHg0
NCwweDU5LDB4REIsMHgyMSwweEE1LDB4OTUsCi0gICAgMHg0QSwweDkzLDB4QTUsMHg2MSwweEI1
LDB4MjUsMHgyNSwweDJELDB4Q0IsMHhBMywweDRCLDB4OUIsMHgzOSwweEJELDB4QkYsMHhCRiwK
LSAgICAweENDLDB4QTMsMHg4QiwweDlCLDB4MEIsMHhCQywweEJCLDB4QUYsMHhFQywweEFCLDB4
Q0MsMHhBMywweDBDLDB4MDIsMHhBRSwweENCLAotICAgIDB4RUMsMHhBQiwweEFCLDB4QTMsMHhC
OCwweEFDLDB4RjgsMHg3RSwweENDLDB4QTMsMHg2QSwweDlCLDB4RTgsMHhBQSwweDY4LDB4QkEs
Ci0gICAgMHhBQiwweEEzLDB4NDksMHg5MywweEZFLDB4RkIsMHhBRSwweEIyLDB4OEEsMHg5Qiww
eDI5LDB4OTMsMHhBRiwweDg4LDB4QkEsMHg1RSwKLSAgICAweDZBLDB4OUIsMHgwOSwweDhCLDB4
QzgsMHg4MiwweEZDLDB4NzQsMHg0OSwweDkzLDB4RTgsMHg4QSwweEFBLDB4RTgsMHhFRSwweEY3
LAotICAgIDB4MjksMHg5MywweEM4LDB4ODIsMHhDMiwweEUyLDB4N0EsMHg1RSwweDA5LDB4OEIs
MHhDOCwweDgyLDB4N0YsMHg3MCwweDdGLDB4NUQsCi0gICAgMHhFOSwweDhBLDB4ODcsMHg3QSww
eEYwLDB4NzgsMHhGOCwweEYyLDB4ODcsMHg3QSwweDI2LDB4NkEsMHhEQSwweEZBLDB4NzgsMHhC
OCwKLSAgICAweDY3LDB4NzIsMHg0NiwweDcyLDB4N0UsMHhCNiwweEI1LDB4QUIsMHg2NywweDcy
LDB4MjYsMHg3MiwweEZDLDB4QkEsMHgyNSwweEFELAotICAgIDB4NDYsMHg3MiwweDA1LDB4NkEs
MHg2MCwweEMyLDB4RTAsMHg4MCwweDQ2LDB4NzIsMHhFNSwweDY5LDB4REIsMHgyOSwweDI5LDB4
MEEsCi0gICAgMHg0NiwweDcyLDB4MDUsMHg2QSwweERBLDB4Q0EsMHhBRSwweEFBLDB4NDcsMHg3
MiwweDA2LDB4NkEsMHgwMCwweDg5LDB4MDAsMHgwOCwKLSAgICAweEE3LDB4N0EsMHg0NiwweDcy
LDB4RUQsMHgyNSwweDJCLDB4MjcsMHhFOCwweDgyLDB4ODcsMHg3QSwweDc3LDB4Q0YsMHhGQiww
eEVCLAotICAgIDB4QTgsMHg3QSwweDY0LDB4NTEsMHg1RSwweDZBLDB4RTAsMHhBMCwweDg0LDB4
NTEsMHhFMywweDQwLDB4NUYsMHg3RSwweDVDLDB4NTgsCi0gICAgMHhFMywweDM4LDB4QTIsMHgz
OCwweEMwLDB4QUEsMHhFMiwweEVBLDB4RTMsMHgzOCwweEExLDB4MzAsMHgwRiwweDBGLDB4MkYs
MHgyNywKLSAgICAweDI0LDB4MzksMHhDMiwweDM4LDB4MkIsMHhBNywweDlGLDB4RkUsMHgwMyww
eDQxLDB4QTIsMHgzMCwweEUwLDB4RTAsMHg2OCwweDdCLAotICAgIDB4RTMsMHgzOCwweEEyLDB4
MzAsMHgyNSwweEFCLDB4QUIsMHhCOSwweDIzLDB4NDEsMHhFMywweDM4LDB4QkQsMHhBRiwweDBC
LDB4QUIsCi0gICAgMHgyMywweDQxLDB4QzIsMHgzOCwweEFFLDB4RkEsMHhGMiwweDZBLDB4NDUs
MHg0MSwweEUzLDB4MzgsMHgzRiwweEY1LDB4RkYsMHg1NywKLSAgICAweDQ0LDB4NDksMHhFMyww
eDM4LDB4RTgsMHhGOCwweEVFLDB4RUQsMHgwMywweDQxLDB4RTMsMHgzOCwweDg4LDB4N0EsMHg4
MiwweEUwLAotICAgIDB4MDMsMHg0MSwweEUzLDB4NDAsMHg4MCwweDAzLDB4RjIsMHg2MSwweDAz
LDB4NDEsMHhDMywweDM4LDB4OEEsMHhBQSwweDZCLDB4REIsCi0gICAgMHg0NCwweDQ5LDB4QzMs
MHgzOCwweEFBLDB4QUIsMHhBRCwweEVGLDB4ODYsMHg1MSwweDAzLDB4NDEsMHgyQiwweEI5LDB4
QjUsMHhGRCwKLSAgICAweDY1LDB4NDksMHgwMywweDQxLDB4QTAsMHhGOCwweEVBLDB4N0EsMHgy
NCwweDQxLDB4QzMsMHgzMCwweEZFLDB4NTgsMHg3QSwweEZBLAotICAgIDB4RTMsMHgzOCwweDgy
LDB4MjgsMHgyRSwweEJGLDB4REEsMHhFOCwweEMyLDB4MzAsMHg4MSwweDI4LDB4ODAsMHhFQSww
eEZFLDB4RkYsCi0gICAgMHhDMywweDMwLDB4ODEsMHgyOCwweDJGLDB4MkYsMHgyRiwweDJCLDB4
MDMsMHgzOSwweEMzLDB4MzAsMHgzNSwweEJCLDB4QkYsMHg5RiwKLSAgICAweDI0LDB4NDEsMHhF
MywweDM4LDB4MkYsMHgyNywweEFGLDB4QUIsMHg2NSwweDQ5LDB4MDMsMHg0MSwweDJGLDB4QUYs
MHhBRCwweDBGLAotICAgIDB4NjUsMHg0OSwweDIzLDB4NDEsMHg2QSwweDZBLDB4RjcsMHhBQiww
eDQ0LDB4NDksMHgwMywweDQxLDB4MkYsMHhBRiwweEZGLDB4REMsCi0gICAgMHg0NSwweDQ5LDB4
RTMsMHgzOCwweDdFLDB4NkUsMHhBMCwweEFBLDB4MjQsMHg0MSwweEMzLDB4MzgsMHhCRCwweEZG
LDB4RkMsMHhGQywKLSAgICAweDAzLDB4MzksMHhFMywweDM4LDB4QkMsMHhGQywweEZBLDB4QkYs
MHgyNCwweDM5LDB4QzMsMHgzMCwweEEyLDB4QzIsMHg4QSwweEU2LAotICAgIDB4MDMsMHgzOSww
eEMyLDB4MzAsMHhDQSwweDRBLDB4NTIsMHg1QSwweDAzLDB4MzksMHhBMiwweDMwLDB4QUEsMHhB
MywweDlGLDB4RkQsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzOCwweDAyLDB4MkMsMHhCRCwweDdE
LDB4NDQsMHg0MSwweEUzLDB4MzgsMHg4MCwweEZBLDB4NUUsMHg1NSwKLSAgICAweDI0LDB4NDEs
MHhDMiwweDMwLDB4NzgsMHhEQSwweEZGLDB4RkYsMHgwMywweDM5LDB4QzIsMHgzMCwweDJCLDB4
QUQsMHhBQiwweEZBLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg4MCwweDIwLDB4RUYsMHhG
NywweDAzLDB4MzksMHhDMiwweDMwLDB4RjYsMHhBMiwweEVFLDB4RTgsCi0gICAgMHgyMywweDM5
LDB4RTMsMHgzMCwweEFELDB4QkQsMHhGNSwweEU5LDB4MjMsMHgzOSwweEUzLDB4MzAsMHgyMiww
eEFBLDB4QkYsMHg3NywKLSAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4OEEsMHg2MywweEFCLDB4
QkUsMHg0NCwweDQxLDB4RTMsMHgzOCwweDNCLDB4QkQsMHg3OSwweERGLAotICAgIDB4MjQsMHg0
MSwweEUzLDB4MzgsMHhERSwweEZBLDB4RkUsMHg3QywweDI0LDB4MzksMHhFMiwweDMwLDB4N0Is
MHhGRiwweEIwLDB4QUEsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDVELDB4RDcsMHhGNyww
eEZDLDB4NDQsMHg0MSwweEUyLDB4MzAsMHgzRCwweEY1LDB4REYsMHhCNSwKLSAgICAweDQ0LDB4
NDEsMHgwMywweDM5LDB4RkEsMHhCQSwweEVCLDB4RkUsMHgyMywweDQxLDB4RTMsMHgzOCwweEZF
LDB4QkUsMHhBQSwweEFFLAotICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHhBMCwweDUwLDB4NUYs
MHg1NSwweDI0LDB4NDEsMHhDMiwweDM4LDB4QUYsMHg3RSwweDYzLDB4OEEsCi0gICAgMHg2NCww
eDQ5LDB4MDMsMHgzOSwweEFELDB4QUQsMHhBQiwweEFGLDB4ODQsMHg1MSwweDQ0LDB4NDksMHg5
NSwweDM1LDB4MTUsMHhFRCwKLSAgICAweEM1LDB4NTksMHg2NCwweDUxLDB4M0YsMHhGRSwweEZF
LDB4NUYsMHg2NywweDcyLDB4QTUsMHg1OSwweDBCLDB4MjUsMHhENSwweDU1LAotICAgIDB4ODgs
MHg3QSwweEU2LDB4NjEsMHhFOCwweDA4LDB4MDMsMHgyNSwweDg3LDB4N0EsMHhFNSwweDYxLDB4
NTcsMHg1RiwweEUwLDB4QzAsCi0gICAgMHgwNiwweDYyLDB4QTUsMHg1OSwweEFBLDB4MjYsMHgx
QywweDc4LDB4NjcsMHg3MiwweEE1LDB4NTksMHhCRiwweEFGLDB4MkEsMHgyRCwKLSAgICAweDg4
LDB4NzIsMHhFNSwweDYxLDB4REIsMHhBQSwweDJBLDB4MjgsMHhBOCwweDdBLDB4NDYsMHg3Miww
eEZELDB4NzUsMHhBQiwweDJCLAotICAgIDB4QTgsMHg4MiwweDY3LDB4NzIsMHhGOSwweDRELDB4
QkYsMHgxQSwweEE4LDB4N0EsMHg0NywweDcyLDB4MDIsMHgyQiwweDJBLDB4QTYsCi0gICAgMHhC
MCwweEJDLDB4ODgsMHg3QSwweDJELDB4M0QsMHgzRCwweEJELDB4RjQsMHhERCwweEQxLDB4QzQs
MHgwQiwweDBCLDB4MkIsMHgyRCwKLSAgICAweDE0LDB4RTYsMHhENCwweERELDB4QTAsMHg3OCww
eEQ3LDB4NTUsMHgxNCwweEU2LDB4QjMsMHhENSwweDhBLDB4QUEsMHhFRiwweDVGLAotICAgIDB4
MTQsMHhERSwweEIzLDB4RDUsMHg4MiwweEVDLDB4N0UsMHhERiwweEQ0LDB4RDUsMHg1MiwweENE
LDB4RTAsMHhFQSwweDZBLDB4NkEsCi0gICAgMHg3MywweEM1LDB4RDEsMHhCQywweERFLDB4OUMs
MHhCRSwweDNFLDB4RDMsMHhDRCwweDczLDB4Q0QsMHhGNSwweEY1LDB4RkYsMHhFRCwKLSAgICAw
eDkzLDB4Q0QsMHg1MiwweEM1LDB4ODAsMHhFQSwweEU4LDB4NzgsMHg3MywweENELDB4MTEsMHhC
RCwweEVBLDB4RTgsMHg3RSwweDdBLAotICAgIDB4NTIsMHhDNSwweEYxLDB4QkMsMHgyQiwweDNG
LDB4RDUsMHhERiwweDczLDB4Q0QsMHgxMSwweEJELDB4QTIsMHgwQSwweDIyLDB4MkQsCi0gICAg
MHg3MywweENELDB4RDEsMHhCNCwweEUyLDB4RTIsMHhFOCwweDc4LDB4MTEsMHhCRCwweEIxLDB4
QjQsMHhFOCwweEZBLDB4N0MsMHhFQiwKLSAgICAweEQxLDB4QjQsMHg0RSwweEE0LDB4QUEsMHg2
QSwweDc4LDB4NTgsMHgyRSwweEE0LDB4NEMsMHg4MywweEE4LDB4RjgsMHhGQywweDVFLAotICAg
IDB4RUUsMHg5QiwweDZDLDB4OEIsMHg4MiwweDBBLDB4QTcsMHgyNSwweDkwLDB4QUMsMHhFRSww
eDlCLDB4QUQsMHgyOSwweDJGLDB4QUIsCi0gICAgMHg5MCwweEFDLDB4MkYsMHhBNCwweEMwLDB4
RjgsMHhERSwweDVGLDB4NEYsMHhBNCwweEVFLDB4OUIsMHg4MCwweEFBLDB4RTYsMHhCRSwKLSAg
ICAweDZGLDB4QUMsMHgyRSwweDlDLDB4MjksMHgyOSwweDM5LDB4MEUsMHg5MCwweEFDLDB4MkUs
MHhBNCwweDA4LDB4ODAsMHg3OCwweEU4LAotICAgIDB4OTAsMHhBQywweDBFLDB4OUMsMHg4QSww
eEU2LDB4RkQsMHhGNywweDZGLDB4QUMsMHg0RSwweEE0LDB4NzgsMHg3NywweEVBLDB4MzUsCi0g
ICAgMHg2MywweDU5LDB4MDIsMHg0OSwweDAwLDB4MjgsMHgwRiwweDI3LDB4ODQsMHg1OSwweDIz
LDB4NTEsMHhFOCwweEZCLDB4NUEsMHhGQywKLSAgICAweDYzLDB4NTksMHgyMywweDUxLDB4QUIs
MHgwQiwweDAzLDB4MkYsMHg4NCwweDYxLDB4MjMsMHg1MSwweEFDLDB4REEsMHhCQSwweEJDLAot
ICAgIDB4NjMsMHg1OSwweDAxLDB4NTEsMHgyQywweEFFLDB4QUEsMHhCRiwweDQzLDB4NTksMHgy
MywweDUxLDB4OEEsMHg2MCwweDcyLDB4QjgsCi0gICAgMHg4NCwweDU5LDB4MjIsMHg1MSwweEZG
LDB4N0YsMHg3QiwweDVGLDB4NjMsMHg1OSwweDIzLDB4NTEsMHhDQSwweEZGLDB4REQsMHhCNywK
LSAgICAweDYzLDB4NTksMHgwMiwweDQ5LDB4QTgsMHg0OCwweEZBLDB4RkUsMHg2MywweDUxLDB4
MjIsMHg1MSwweDczLDB4NjMsMHhGQiwweDVGLAotICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHhB
QiwweDQzLDB4RTgsMHhGRSwweDQ0LDB4NTEsMHgwMiwweDQ5LDB4RTUsMHgyRCwweDJELDB4MjIs
Ci0gICAgMHg2NCwweDU5LDB4MDMsMHg0OSwweDhBLDB4RUIsMHg2RiwweDdGLDB4NDMsMHg1MSww
eEUyLDB4NDgsMHg4QSwweEU4LDB4RUIsMHhGNywKLSAgICAweDQ0LDB4NTEsMHhFMywweDQ4LDB4
N0EsMHhGRiwweEFBLDB4OEIsMHg0NCwweDUxLDB4RTIsMHg0OCwweEVELDB4M0YsMHhCQiwweEZC
LAotICAgIDB4NDMsMHg1MSwweDAzLDB4NTEsMHhGNywweERBLDB4RjIsMHhCNiwweEE1LDB4NjEs
MHgyMywweDUxLDB4RjUsMHg3NSwweEJELDB4REYsCi0gICAgMHg2NCwweDU5LDB4MjMsMHg1MSww
eEJBLDB4REEsMHhGOCwweEYwLDB4NjQsMHg1OSwweDIzLDB4NTEsMHhBNiwweDM1LDB4MUQsMHhC
RCwKLSAgICAweDJBLDB4OTMsMHg4NCwweDYxLDB4MkQsMHgwOSwweDBGLDB4MEIsMHhBQiwweEEz
LDB4NEEsMHg5QiwweEFELDB4MkQsMHgyRCwweDI3LAotICAgIDB4Q0MsMHhBMywweDhCLDB4QTMs
MHgyRiwweDNELDB4REUsMHgwOCwweDBELDB4QUMsMHhBQiwweEEzLDB4QUEsMHhFRSwweEY3LDB4
M0YsCi0gICAgMHgyRCwweEI0LDB4Q0MsMHhBMywweDU1LDB4QkYsMHhBRCwweDBFLDB4MEQsMHhB
QywweEFCLDB4QTMsMHg2NywweEZBLDB4RTgsMHhFRSwKLSAgICAweEVDLDB4QUIsMHg4QiwweDlC
LDB4RkYsMHhERSwweDVBLDB4RjgsMHg4QiwweDlCLDB4MjgsMHg5MywweDdFLDB4RkUsMHhGOCww
eDZDLAotICAgIDB4MjksMHg5MywweEU5LDB4OEEsMHhGOCwweEUwLDB4RUEsMHhGQSwweDA5LDB4
OEIsMHhDOCwweDhBLDB4NjgsMHhGQiwweDdBLDB4N0EsCi0gICAgMHgwOSwweDhCLDB4QTcsMHg4
MiwweERBLDB4M0UsMHhBRSwweDlBLDB4MDgsMHg4QiwweEE4LDB4ODIsMHhCRCwweEFBLDB4MkEs
MHgyQSwKLSAgICAweDA5LDB4OEIsMHg4NywweDdBLDB4NjIsMHg3MCwweEY4LDB4RkEsMHg4Nyww
eDdBLDB4MjYsMHg2QSwweEJBLDB4RjYsMHhGNiwweEI4LAotICAgIDB4NjcsMHg3MiwweDA1LDB4
NzIsMHhDOCwweEEyLDB4QTgsMHhBOCwweDY3LDB4NzIsMHgyNiwweDcyLDB4QTksMHhGRSwweEZF
LDB4RkIsCi0gICAgMHg0NiwweDcyLDB4MjYsMHg2QSwweDgyLDB4QTgsMHhGQSwweDI0LDB4NDYs
MHg3MiwweDA2LDB4NkEsMHgwQSwweDJBLDB4MUUsMHhEOCwKLSAgICAweDQ2LDB4NzIsMHgwNSww
eDZBLDB4MjAsMHhBNiwweDhCLDB4OEIsMHg4NywweDgyLDB4MjYsMHg3MiwweEQ3LDB4QkYsMHhG
RiwweDBCLAotICAgIDB4QTgsMHg4MiwweDQ2LDB4NzIsMHgyRCwweEEyLDB4MjAsMHgwOCwweEU4
LDB4ODIsMHhBOCwweDgyLDB4OEQsMHhGNSwweEQ1LDB4NTcsCi0gICAgMHhDOCwweDgyLDB4MjYs
MHg2QSwweDZBLDB4RTgsMHg4QSwweDg4LDB4NjcsMHg3QSwweEUzLDB4NDAsMHg3RSwweDdFLDB4
RTgsMHhFOCwKLSAgICAweDAzLDB4NDksMHhBMiwweDMwLDB4N0YsMHhGRiwweEVFLDB4RTAsMHhF
MywweDM4LDB4QTIsMHgzMCwweEJELDB4RkYsMHg2RSwweDVBLAotICAgIDB4RTMsMHgzOCwweDgx
LDB4MzAsMHg4MCwweDJBLDB4QUIsMHhFRCwweEUzLDB4MzgsMHg4MSwweDI4LDB4RTgsMHhBQSww
eEIyLDB4QkYsCi0gICAgMHhFMywweDM4LDB4QTIsMHgzMCwweEFELDB4M0UsMHgzRSwweEFGLDB4
MjQsMHg0MSwweEMzLDB4MzAsMHgyQiwweEJGLDB4RjYsMHhGRiwKLSAgICAweDI0LDB4MzksMHhD
MiwweDMwLDB4RjgsMHhCQSwweEVBLDB4RUYsMHgwNCwweDM5LDB4QzIsMHgzOCwweDdBLDB4QkUs
MHhGRiwweEZGLAotICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHgyRCwweDZELDB4RDUsMHg1NSww
eDQ0LDB4NDksMHhFMywweDM4LDB4QjgsMHhBQiwweEVCLDB4RkQsCi0gICAgMHgyNCwweDQxLDB4
MDMsMHg0MSwweDVELDB4RjAsMHhDQSwweDgyLDB4NjUsMHg0OSwweEMyLDB4MzgsMHhERiwweEYz
LDB4QUEsMHgyMiwKLSAgICAweDY1LDB4NDksMHhFMywweDQwLDB4NzcsMHhGRCwweDJBLDB4OEEs
MHgyNCwweDQxLDB4RTMsMHgzOCwweDJCLDB4MkIsMHgyQSwweDI4LAotICAgIDB4NjUsMHg0OSww
eDAzLDB4NDEsMHg2RiwweENFLDB4RUEsMHhFQiwweDI0LDB4NDEsMHhDMywweDMwLDB4QUEsMHhG
QywweDc4LDB4RkEsCi0gICAgMHgwMywweDM5LDB4QTIsMHgzMCwweDdDLDB4RTAsMHg4MiwweEFB
LDB4RTMsMHgzMCwweDgyLDB4MjgsMHhERiwweDdGLDB4OUYsMHgyRSwKLSAgICAweEUzLDB4MzAs
MHhBMiwweDI4LDB4OTUsMHhCNSwweEE3LDB4QUMsMHgwMywweDM5LDB4QzMsMHgzMCwweERGLDB4
RkEsMHg4QiwweEFCLAotICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHgwRiwweEJCLDB4QkQsMHgw
QiwweEM2LDB4NTEsMHgyMywweDQxLDB4QjUsMHhGNSwweEJELDB4MkIsCi0gICAgMHhBNiwweDUx
LDB4NDQsMHg0OSwweDdFLDB4REYsMHhGQywweEU4LDB4NjQsMHg0OSwweDAzLDB4NDEsMHhGOCww
eEQ3LDB4RkUsMHg4MCwKLSAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4RUEsMHhFQiwweEVBLDB4
RTYsMHgwMywweDQxLDB4QzMsMHgzOCwweEE4LDB4QkMsMHg5RSwweEZBLAotICAgIDB4RTMsMHgz
OCwweDAzLDB4MzEsMHgyMiwweDgzLDB4ODIsMHgwMCwweDAzLDB4MzksMHhDMiwweDMwLDB4OEEs
MHhGRSwweDdGLDB4NTUsCi0gICAgMHhFMywweDMwLDB4QTIsMHgzMCwweEI4LDB4RjYsMHhGRSww
eDJBLDB4RTIsMHgzMCwweEExLDB4MzAsMHg4RiwweDhBLDB4QTgsMHgwMCwKLSAgICAweDAzLDB4
MzksMHhDMiwweDMwLDB4NjIsMHg3RiwweEQ3LDB4RkYsMHhFMiwweDMwLDB4QzIsMHgzMCwweEY2
LDB4RkYsMHhCRSwweEZFLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGRSwweEUyLDB4RTMs
MHhBRCwweDAzLDB4MzksMHhDMiwweDMwLDB4REYsMHhGRiwweEZBLDB4QTgsCi0gICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweEJGLDB4MkUsMHhBQSwweEYyLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhE
RSwweEZDLDB4RjYsMHgzRiwKLSAgICAweDAzLDB4MzksMHhFMywweDMwLDB4MkUsMHgwRiwweDZC
LDB4RUEsMHgyNCwweDM5LDB4QzIsMHgzMCwweEEyLDB4QkIsMHg3RiwweDVELAotICAgIDB4MjQs
MHgzOSwweEMyLDB4MzAsMHgyMywweDBCLDB4MkQsMHhCNywweDIzLDB4MzksMHhFMywweDM4LDB4
REUsMHg1NSwweEZGLDB4RjIsCi0gICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDYwLDB4QzIsMHhD
QSwweDdELDB4MjMsMHgzOSwweEUzLDB4MzgsMHhCRiwweERELDB4REIsMHg1NywKLSAgICAweDI0
LDB4MzksMHhDMiwweDMwLDB4N0MsMHhEOCwweEZBLDB4QkYsMHg0NCwweDQ5LDB4QzIsMHgzMCww
eEFELDB4QUYsMHhCNSwweEJGLAotICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHg5NywweEI1LDB4
RDcsMHhENSwweDQ0LDB4NDEsMHgwMywweDM5LDB4RDYsMHhERiwweEI3LDB4MkQsCi0gICAgMHg0
NCwweDQxLDB4QzIsMHgzMCwweEQ3LDB4QkUsMHhFOCwweEE4LDB4NDMsMHg0MSwweEUzLDB4Mzgs
MHhGRiwweEZGLDB4Q0YsMHg5QiwKLSAgICAweDY1LDB4NDksMHhFMywweDM4LDB4MzUsMHhCRiww
eEY3LDB4RkYsMHg4NSwweDUxLDB4MDMsMHgzOSwweDhBLDB4OEIsMHhCRiwweEY1LAotICAgIDB4
ODQsMHg1MSwweDQ0LDB4NDksMHhBQSwweEIyLDB4REUsMHhCNywweEE1LDB4NTksMHg2NCwweDUx
LDB4MjIsMHgyOSwweDM1LDB4OTUsCi0gICAgMHg0NywweDcyLDB4QTUsMHg1OSwweDA5LDB4QUQs
MHhENSwweDU1LDB4QTcsMHg3QSwweEE1LDB4NTksMHg4OCwweDgyLDB4QUIsMHhBNSwKLSAgICAw
eDY3LDB4NzIsMHg4NSwweDU5LDB4NzgsMHg3OCwweEM4LDB4QTgsMHgwNiwweDZBLDB4NjQsMHg1
MSwweDI3LDB4MzUsMHhGRiwweERFLAotICAgIDB4NjcsMHg3MiwweEE1LDB4NTksMHgwMiwweDAy
LDB4MDMsMHgwRCwweEE4LDB4N0EsMHg0NiwweDZBLDB4MkYsMHgyRiwweEY3LDB4NUYsCi0gICAg
MHhDOSwweDgyLDB4NjcsMHg3QSwweEJBLDB4RTgsMHhBMiwweDAxLDB4QzksMHg4MiwweDY3LDB4
NzIsMHhGRiwweERFLDB4RkEsMHhCOCwKLSAgICAweDJFLDB4QUMsMHhBOCwweDdBLDB4MzUsMHgz
NSwweEI1LDB4QkQsMHhCNCwweERELDB4NkYsMHhCNCwweDBCLDB4MkIsMHhBRCwweEFELAotICAg
IDB4RDMsMHhERCwweDcyLDB4Q0QsMHhBOCwweDZGLDB4RjUsMHhGNSwweEIzLDB4RDUsMHg3Miww
eENELDB4MkEsMHgwRSwweEI3LDB4NTcsCi0gICAgMHhENCwweERELDB4OTMsMHhENSwweEEzLDB4
RUEsMHhCRCwweEY1LDB4QjMsMHhENSwweDExLDB4QkQsMHhFMCwweEUwLDB4RjgsMHg3OCwKLSAg
ICAweDczLDB4Q0QsMHhGMSwweEJDLDB4MjcsMHgwNSwweDM1LDB4M0QsMHhCMywweEQ1LDB4NTMs
MHhDNSwweDhCLDB4OEEsMHhGRiwweDVGLAotICAgIDB4OTMsMHhDRCwweDUyLDB4QzUsMHhFMCww
eEFBLDB4RUUsMHhCNSwweDczLDB4Q0QsMHhGMSwweEI0LDB4RjIsMHhFQSwweEU4LDB4ODgsCi0g
ICAgMHg1MiwweEM1LDB4QjAsMHhCNCwweEZGLDB4RDcsMHhGNiwweEI4LDB4NTIsMHhDNSwweEYx
LDB4QkMsMHgyRiwweEE5LDB4RkYsMHg1NywKLSAgICAweDMxLDB4QzUsMHhCMCwweEI0LDB4RTgs
MHhGQywweEQ2LDB4NTcsMHhGMSwweEJDLDB4OTAsMHhBQywweEM4LDB4RUYsMHhGQywweEZCLAot
ICAgIDB4RDAsMHhCNCwweEFELDB4OTMsMHhFMCwweDYyLDB4N0MsMHg3QSwweEFELDB4OTMsMHhF
QSwweDdBLDB4RjgsMHhGRSwweEY3LDB4RDcsCi0gICAgMHg0RiwweEE0LDB4NkMsMHg4QiwweEE1
LDB4MkQsMHgyRiwweDBCLDB4NzAsMHhBQywweDJFLDB4QTQsMHhBRSwweDI4LDB4NzgsMHg1QiwK
LSAgICAweDRGLDB4QTQsMHgwRSwweDlDLDB4QzgsMHg5MiwweEQzLDB4NUQsMHhCMCwweEFDLDB4
MEUsMHg5QywweEY1LDB4RkUsMHhFRiwweDJCLAotICAgIDB4OTAsMHhBQywweDJFLDB4QTQsMHhB
RiwweDk5LDB4RTIsMHgyMCwweDZGLDB4QUMsMHgyRSwweDlDLDB4QzIsMHhBMiwweERGLDB4MDAs
Ci0gICAgMHg5MCwweEFDLDB4MEQsMHg5QywweEQ3LDB4RDcsMHhCRiwweDAwLDB4RDAsMHhCNCww
eDRFLDB4QTQsMHhERCwweEJELDB4MEIsMHg4QSwKLSAgICAweDY0LDB4NTksMHgyMiwweDUxLDB4
QTUsMHhFRSwweEJBLDB4MkYsMHg4NCwweDYxLDB4MjIsMHg1MSwweEZGLDB4RTUsMHhFQiwweEEw
LAotICAgIDB4ODMsMHg2MSwweDIzLDB4NTEsMHhCNywweEFGLDB4M0YsMHhCRiwweDg0LDB4NjEs
MHgyMiwweDUxLDB4QkUsMHhGQywweDVBLDB4NUEsCi0gICAgMHg0MywweDUxLDB4MDIsMHg1MSww
eEFBLDB4RTAsMHhFQSwweDIxLDB4NjMsMHg1MSwweDIyLDB4NTEsMHhGNywweDk1LDB4RUQsMHhB
RiwKLSAgICAweDQzLDB4NTksMHgyMiwweDQ5LDB4REEsMHhERSwweDBBLDB4OEEsMHg2MywweDUx
LDB4MjMsMHg1MSwweEFGLDB4RkUsMHhFRiwweEFGLAotICAgIDB4NDMsMHg1MSwweDAyLDB4NDks
MHhGMiwweEZFLDB4RTgsMHhBRSwweDIyLDB4NTEsMHgwMiwweDQ5LDB4MkEsMHg2RSwweERFLDB4
RDcsCi0gICAgMHg0MywweDUxLDB4RTIsMHg0OCwweDJFLDB4QTksMHhBRSwweEFCLDB4NDMsMHg1
MSwweDAyLDB4NDksMHgwMCwweEI4LDB4QkUsMHg2RSwKLSAgICAweDQzLDB4NTEsMHgwMywweDQ5
LDB4NzgsMHhFQywweDdFLDB4OTcsMHg2NCwweDU5LDB4MDMsMHg0OSwweDU1LDB4RDUsMHgzRiww
eEZGLAotICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHhBQiwweEZDLDB4RUIsMHg1QSwweDIzLDB4
NTEsMHhFMiwweDQ4LDB4NkUsMHg4QiwweDNBLDB4MkEsCi0gICAgMHg0NCwweDU5LDB4MDMsMHg1
MSwweEI3LDB4MTUsMHhBNywweDJCLDB4NjQsMHg1OSwweDIzLDB4NTEsMHhCMywweDhCLDB4QkIs
MHgyRCwKLSAgICAweDY0LDB4NTksMHgyMywweDUxLDB4RkEsMHg3RSwweEVBLDB4RUUsMHhDNSww
eDY5LDB4MjMsMHg1MSwweEY1LDB4QjUsMHhGNSwweDM3LAotICAgIDB4NEEsMHg5QiwweDI2LDB4
NzIsMHgyRCwweDBELDB4MDksMHgwQiwweEFCLDB4QTMsMHg2QSwweDlCLDB4MEQsMHhBOSwweEVF
LDB4QUIsCi0gICAgMHhFQywweEFCLDB4OEIsMHhBMywweEFCLDB4MkIsMHhBNSwweEJELDB4MEQs
MHhBQywweENDLDB4QTMsMHhCRiwweEFGLDB4MkQsMHgyRCwKLSAgICAweDJELDB4QjQsMHhFQyww
eEFCLDB4ODksMHhBMiwweDgwLDB4M0YsMHgyRCwweEI0LDB4Q0MsMHhBMywweEZFLDB4QkEsMHhB
RiwweEUyLAotICAgIDB4RUQsMHhBQiwweDZCLDB4OUIsMHg2OCwweEVDLDB4RjgsMHhFOCwweDhC
LDB4OUIsMHgyOSwweDkzLDB4N0EsMHhFQiwweEZCLDB4ODgsCi0gICAgMHg2QiwweDlCLDB4MDks
MHg4QiwweDVGLDB4N0YsMHhGQSwweEUwLDB4MjksMHg5MywweEM4LDB4ODIsMHg1RSwweERFLDB4
NUUsMHhCOCwKLSAgICAweEU4LDB4OEEsMHhDOCwweDgyLDB4MzAsMHgwQSwweDBCLDB4RkEsMHgw
OCwweDhCLDB4QzgsMHg4MiwweDhBLDB4MjgsMHg3NywweEY3LAotICAgIDB4RTgsMHg4MiwweDg3
LDB4N0EsMHg3OCwweDdBLDB4RkUsMHg3QywweDg3LDB4N0EsMHgyNiwweDZBLDB4QkMsMHhFQyww
eEQ4LDB4NTgsCi0gICAgMHg2NywweDcyLDB4MjYsMHg3MiwweDlBLDB4RkEsMHg2RiwweEFGLDB4
NjYsMHg3MiwweDA1LDB4NkEsMHhEOCwweEY2LDB4RkYsMHhCRSwKLSAgICAweDQ2LDB4NzIsMHgy
NiwweDZBLDB4M0UsMHhBNSwweEVFLDB4QTcsMHg0NiwweDcyLDB4MjYsMHg2QSwweEZBLDB4RUIs
MHg4QSwweDhBLAotICAgIDB4NjcsMHg3QSwweDI2LDB4NzIsMHhGNSwweDBELDB4MDIsMHgzQiww
eEE4LDB4ODIsMHg0NiwweDdBLDB4QUYsMHgzNiwweEFFLDB4MDIsCi0gICAgMHhDOCwweDgyLDB4
ODcsMHg4MiwweDFGLDB4QUQsMHhBQiwweEFBLDB4QzgsMHg4MiwweDY4LDB4N0EsMHhBQSwweEJB
LDB4RjYsMHhCOCwKLSAgICAweEM5LDB4ODIsMHg2NywweDcyLDB4NkEsMHhGMiwweEY4LDB4RkEs
MHg4OCwweDdBLDB4RTUsMHg2MSwweDU4LDB4NzIsMHhFMCwweEUwLAotICAgIDB4QzUsMHg1OSww
eEUyLDB4MzgsMHg1RSwweDVBLDB4RkUsMHhGOCwweDAzLDB4NDEsMHg4MSwweDMwLDB4N0EsMHhF
OCwweEE4LDB4QTAsCi0gICAgMHhDMiwweDMwLDB4ODEsMHgyOCwweEFGLDB4NUUsMHg3NywweEQ0
LDB4QzIsMHgzMCwweDgxLDB4MjgsMHgzRiwweEFCLDB4MkIsMHhBRCwKLSAgICAweEMyLDB4MzAs
MHhBMiwweDI4LDB4ODAsMHhBMCwweEY4LDB4RkYsMHhFMywweDM4LDB4QTIsMHgzMCwweDA4LDB4
MEEsMHhGQiwweEZFLAotICAgIDB4MjMsMHg0MSwweEExLDB4MzAsMHg4MywweEFCLDB4QUYsMHhG
RCwweEUzLDB4MzgsMHhBMSwweDMwLDB4QTAsMHhFMCwweEU4LDB4RkEsCi0gICAgMHhFMywweDM4
LDB4QzIsMHgzMCwweEE4LDB4MkIsMHgyMywweDAzLDB4MjQsMHg0MSwweEMyLDB4MzgsMHgyQiww
eEFGLDB4RkYsMHg3RiwKLSAgICAweDI0LDB4NDEsMHhDMywweDM4LDB4MDAsMHg4MiwweEZELDB4
RkQsMHg2NSwweDQ5LDB4MDMsMHg0MSwweDIxLDB4MjksMHhBQiwweEE1LAotICAgIDB4ODUsMHg1
MSwweDI0LDB4NDEsMHhBQSwweEUyLDB4Q0YsMHhCNywweDQ0LDB4NDEsMHgwMywweDQxLDB4RDYs
MHg2QSwweDYwLDB4QzIsCi0gICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweEEyLDB4RUYsMHg3Riww
eDdGLDB4MjMsMHg0MSwweEUzLDB4MzgsMHg3MCwweEJBLDB4RUUsMHhCNywKLSAgICAweEUzLDB4
MzAsMHhBMywweDMwLDB4MEEsMHgwMCwweDgwLDB4RjAsMHhDMiwweDMwLDB4QTIsMHgyOCwweDAw
LDB4QTAsMHg5MCwweDk3LAotICAgIDB4MDQsMHgzOSwweEMzLDB4MzAsMHg3NywweEE1LDB4QjUs
MHhGRCwweEMzLDB4MzgsMHhFMywweDMwLDB4N0YsMHhERiwweERGLDB4RDUsCi0gICAgMHg0NCww
eDQ5LDB4QzIsMHgzMCwweEFCLDB4MkQsMHhCRCwweDNGLDB4ODUsMHg0OSwweDQ0LDB4NDksMHgy
NSwweDJELDB4MkYsMHhCNSwKLSAgICAweEE1LDB4NTEsMHg2NSwweDQ5LDB4NDgsMHg3MCwweDVB
LDB4NUQsMHg2NSwweDQ5LDB4MjMsMHg0MSwweEUwLDB4RTAsMHhGOCwweDc4LAotICAgIDB4NDQs
MHg0MSwweDAzLDB4NDEsMHhCRiwweEJGLDB4N0YsMHg1RiwweDAzLDB4NDEsMHhFMywweDM4LDB4
NkEsMHhFQSwweDU4LDB4RjAsCi0gICAgMHgwMywweDM5LDB4QzMsMHgzMCwweEFGLDB4M0IsMHhG
QiwweDdGLDB4RTMsMHgzOCwweEMyLDB4MzAsMHg1NywweDU2LDB4RDcsMHhERSwKLSAgICAweEUz
LDB4MzgsMHhDMywweDMwLDB4RTEsMHhCNywweDE0LDB4MEQsMHgwMywweDM5LDB4QzMsMHgzMCww
eEJGLDB4QkYsMHhCRSwweEFBLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg5QSwweEE4LDB4
QkEsMHhFRSwweEUzLDB4MzAsMHhDMiwweDMwLDB4N0MsMHg1QywweDVCLDB4OTIsCi0gICAgMHgw
MywweDM5LDB4QzIsMHgzMCwweEU1LDB4N0IsMHhCRiwweEVCLDB4MDMsMHgzOSwweEMyLDB4MzAs
MHhFQiwweEI3LDB4N0MsMHg3QSwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RTIsMHhBMyww
eDVGLDB4NzUsMHhFMywweDM4LDB4QzIsMHgzMCwweDJBLDB4RkEsMHhGQSwweDAzLAotICAgIDB4
MDMsMHgzOSwweEMyLDB4MzAsMHhFQSwweEJELDB4RkIsMHhGMiwweEM0LDB4MzgsMHhFMiwweDMw
LDB4QjcsMHhGNSwweDVGLDB4N0YsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDNGLDB4REYs
MHhGQiwweERBLDB4MjQsMHgzOSwweEMyLDB4MzAsMHg2MiwweEZFLDB4RkIsMHhERCwKLSAgICAw
eEUzLDB4MzAsMHhBMiwweDMwLDB4Q0IsMHhDQSwweEY4LDB4RTgsMHhFMywweDMwLDB4QTEsMHgz
MCwweEEwLDB4QUIsMHhBRiwweEJGLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyRiwweEJE
LDB4RkQsMHhERCwweDAzLDB4MzksMHhDMiwweDM4LDB4MEYsMHhCQiwweDlCLDB4MEQsCi0gICAg
MHgyMywweDQxLDB4RTIsMHgzOCwweDJBLDB4MkMsMHgwRiwweDBELDB4NDQsMHg0MSwweDAzLDB4
MzksMHg4RiwweEJGLDB4RDcsMHhGQywKLSAgICAweDQ0LDB4NDEsMHgyMywweDQxLDB4NTcsMHg2
NSwweEI3LDB4RjUsMHg0NCwweDQxLDB4RTMsMHgzOCwweEJFLDB4RkEsMHhGOCwweDFBLAotICAg
IDB4NDQsMHg0MSwweDAzLDB4MzksMHhFRSwweEFGLDB4RkIsMHgyRiwweDIzLDB4NDEsMHhDMiww
eDM4LDB4RkEsMHhERSwweEY4LDB4RjgsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweDBELDB4
MEQsMHhBRCwweEZELDB4ODUsMHg1MSwweDIzLDB4NDEsMHgxRiwweEJFLDB4QUUsMHhFRCwKLSAg
ICAweEE1LDB4NTEsMHg0NCwweDQ5LDB4QTIsMHgyMywweDI1LDB4M0QsMHhDNSwweDYxLDB4NDMs
MHg0OSwweDJCLDB4RkYsMHhERiwweEZGLAotICAgIDB4MjYsMHg2QSwweDY0LDB4NTEsMHg4MCww
eEFCLDB4QUYsMHhGNSwweEU2LDB4NjEsMHg2MywweDUxLDB4N0UsMHhFQSwweEMyLDB4OEIsCi0g
ICAgMHgyNiwweDZBLDB4ODQsMHg1OSwweDJELDB4MjUsMHg5RiwweEJGLDB4QTgsMHg3QSwweDI2
LDB4NkEsMHgzRiwweEFGLDB4MkIsMHgyRCwKLSAgICAweEM5LDB4ODIsMHg2NywweDcyLDB4OEEs
MHhFQSwweEY2LDB4N0YsMHhDOSwweDgyLDB4ODgsMHg3QSwweDZCLDB4QTIsMHhCRSwweEY3LAot
ICAgIDB4QUIsMHg5MywweEE4LDB4N0EsMHgzNSwweEI1LDB4RjUsMHhGNSwweDUyLDB4Q0QsMHhF
QywweEEzLDB4MEIsMHgyQiwweEFELDB4QUQsCi0gICAgMHg5MywweEQ1LDB4MTEsMHhDNSwweDBB
LDB4MkIsMHhBRCwweEI1LDB4OTMsMHhENSwweDUyLDB4Q0QsMHhGNCwweDU0LDB4N0IsMHhGQiwK
LSAgICAweDkzLDB4Q0QsMHgzMSwweEM1LDB4OEEsMHhBRSwweEFGLDB4RkYsMHg5MywweEQ1LDB4
RjAsMHhCQywweDc4LDB4NTgsMHg1RiwweDU3LAotICAgIDB4OTMsMHhDRCwweEYxLDB4QkMsMHhB
RCwweDI5LDB4OEYsMHgyQSwweDczLDB4Q0QsMHgxMSwweEJELDB4RjgsMHg3OCwweEUwLDB4NjAs
Ci0gICAgMHg1MiwweEM1LDB4RjEsMHhCQywweDBFLDB4QkYsMHhGNywweDU3LDB4NzMsMHhDRCww
eEQxLDB4QjQsMHhBOCwweDI4LDB4QUYsMHhGRCwKLSAgICAweDUyLDB4QzUsMHgxMSwweEJELDB4
NzgsMHhBQSwweENGLDB4NkYsMHgxMSwweEJELDB4NkYsMHhBQywweEE4LDB4RjgsMHg3OCwweDVF
LAotICAgIDB4QjAsMHhCNCwweDRGLDB4QTQsMHhBMCwweDkyLDB4QkUsMHgxNywweEIwLDB4QjQs
MHg5MCwweEFDLDB4NEEsMHgzMiwweDUyLDB4NzYsCi0gICAgMHg0RiwweEE0LDB4QzksMHg3QSww
eEUwLDB4RjgsMHg1OCwweDU4LDB4MkUsMHg5QywweEVBLDB4N0EsMHhCNSwweEJELDB4MjUsMHgw
RCwKLSAgICAweEQwLDB4QjQsMHhFRSwweDlCLDB4RkQsMHhFRCwweEFCLDB4MEEsMHhGMSwweEJD
LDB4NEUsMHhBNCwweDU1LDB4NTUsMHhCRCwweDBBLAotICAgIDB4MzIsMHhCRCwweDBFLDB4OUMs
MHhGRCwweEFFLDB4QTIsMHg4MCwweEQwLDB4QjQsMHg2RiwweEFDLDB4QkQsMHhBQSwweEE4LDB4
MjAsCi0gICAgMHhEMCwweEI0LDB4NkYsMHhBQywweEEyLDB4QUYsMHhERiwweEZFLDB4QjAsMHhB
QywweDZGLDB4QUMsMHgwMCwweEFFLDB4REMsMHhERSwKLSAgICAweEIwLDB4QjQsMHg0RiwweEE0
LDB4QTIsMHhFMiwweEZCLDB4RTIsMHhCMCwweEFDLDB4NkYsMHhBQywweENCLDB4RDUsMHhENyww
eEY3LAotICAgIDB4ODQsMHg1OSwweDQzLDB4NTEsMHhCRiwweEJBLDB4RTIsMHhGRSwweDg0LDB4
NTksMHg0MywweDU5LDB4MEEsMHg4QiwweDBGLDB4QjcsCi0gICAgMHg2MywweDU5LDB4MjMsMHg1
MSwweDBGLDB4OEEsMHhFRSwweEZDLDB4NjMsMHg1OSwweDAyLDB4NTEsMHhGQSwweEVBLDB4RUEs
MHhGQiwKLSAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4MDAsMHg3RiwweDZGLDB4N0YsMHg2NCww
eDUxLDB4RTIsMHg0OCwweDBBLDB4QTUsMHhCRiwweEFFLAotICAgIDB4NjMsMHg1MSwweDIyLDB4
NTEsMHhCRiwweEZELDB4N0YsMHg1MywweDQzLDB4NTEsMHgyMiwweDUxLDB4QzgsMHg3MCwweDcw
LDB4N0EsCi0gICAgMHg0MywweDUxLDB4MDIsMHg0OSwweDhFLDB4RTIsMHg2MiwweEQ4LDB4NDMs
MHg1MSwweDAyLDB4NDksMHg5NywweDhGLDB4QkYsMHhFQiwKLSAgICAweDQ0LDB4NTEsMHgwMyww
eDQ5LDB4RUIsMHgyQSwweDJFLDB4MDEsMHg0MywweDUxLDB4MDIsMHg0OSwweEFFLDB4MjcsMHhB
RCwweEFELAotICAgIDB4NjQsMHg1MSwweDAyLDB4NDksMHhGNSwweDM3LDB4RDcsMHg1RCwweDQz
LDB4NTEsMHgwMywweDUxLDB4RUEsMHhDMiwweEMzLDB4RkIsCi0gICAgMHg0MywweDUxLDB4RTIs
MHg0OCwweDc4LDB4RUIsMHhCRSwweEZBLDB4NjQsMHg1OSwweDAzLDB4NTEsMHhGNywweEFGLDB4
QUYsMHg4QiwKLSAgICAweDY0LDB4NTksMHgyMywweDUxLDB4QUEsMHgyQSwweEVBLDB4RUEsMHg2
NCwweDU5LDB4MjMsMHg1MSwweDJELDB4QUUsMHhERSwweEZELAotICAgIDB4NDQsMHg1OSwweDIz
LDB4NTksMHgwOCwweDIwLDB4MDAsMHhDMCwweEU1LDB4NjksMHgwMywweDUxLDB4QkYsMHhCRiww
eDNELDB4MzUsCi0gICAgMHg0QSwweDlCLDB4NjcsMHg3QSwweDA5LDB4MDksMHgwQiwweDBCLDB4
QUIsMHhBMywweDZCLDB4OUIsMHgyMywweEFCLDB4QUYsMHgyRSwKLSAgICAweEVDLDB4QUIsMHg4
QiwweDlCLDB4RkYsMHhGRCwweDJGLDB4QkIsMHhFQywweEFCLDB4QUMsMHhBMywweDJGLDB4QkYs
MHhBRiwweEFGLAotICAgIDB4MEQsMHhBQywweENDLDB4QTMsMHgzQSwweEFGLDB4QkIsMHhCRiww
eDBELDB4QUMsMHhDQywweEFCLDB4NjAsMHg4MiwweEEyLDB4RUIsCi0gICAgMHgwRCwweEFDLDB4
QUIsMHhBMywweDdGLDB4QUUsMHhCRiwweDhBLDB4RUMsMHhBQiwweDhCLDB4OUIsMHg1RiwweEYy
LDB4RTIsMHhBMCwKLSAgICAweEFCLDB4QTMsMHg0QSwweDkzLDB4NzUsMHg3RSwweEZFLDB4QTAs
MHg2QSwweDlCLDB4RTksMHg4QSwweERFLDB4NkUsMHhBOCwweDg4LAotICAgIDB4MjksMHg5Myww
eEM4LDB4ODIsMHg3NywweEZFLDB4QUEsMHhBMCwweEU4LDB4OEEsMHhDOCwweDgyLDB4Q0IsMHhC
RiwweEQ0LDB4RjgsCi0gICAgMHhFOSwweDgyLDB4NjcsMHg3MiwweEYwLDB4NjIsMHg3MiwweDdD
LDB4NjcsMHg3MiwweDI2LDB4NzIsMHhEOCwweEY4LDB4RkMsMHg3RiwKLSAgICAweDQ2LDB4NzIs
MHgwNiwweDZBLDB4MkEsMHgwQSwweDI4LDB4NkEsMHg0NiwweDcyLDB4MjYsMHg2QSwweEQ4LDB4
MjgsMHg4OCwweDJCLAotICAgIDB4NDYsMHg3MiwweDA1LDB4NkEsMHhBQywweDhBLDB4ODgsMHg2
MCwweDY2LDB4NzIsMHgwNSwweDZBLDB4RkIsMHhCRSwweEVGLDB4ODEsCi0gICAgMHg4NywweDdB
LDB4MjYsMHg3MiwweDlCLDB4M0IsMHgyQiwweDAyLDB4RTgsMHg4QSwweDg4LDB4N0EsMHg5Riww
eDk1LDB4QkYsMHhBQiwKLSAgICAweEM4LDB4OEEsMHhBOCwweDdBLDB4OUYsMHhGRSwweEZDLDB4
N0IsMHhFOSwweDhBLDB4ODgsMHg3QSwweEZBLDB4QTgsMHhBMiwweEVBLAotICAgIDB4QTgsMHg4
MiwweDY4LDB4N0EsMHg3OCwweEEwLDB4ODAsMHhFOCwweDg3LDB4N0EsMHgyNiwweDZBLDB4NjIs
MHgyMCwweEEwLDB4NjIsCi0gICAgMHg0NiwweDZBLDB4NDMsMHg0OSwweDVFLDB4NTgsMHg2OCww
eDc4LDB4MjMsMHg0OSwweEEyLDB4MzAsMHhGQSwweDdBLDB4RkMsMHg3OCwKLSAgICAweEEyLDB4
MzAsMHg2MSwweDI4LDB4RjAsMHhGQSwweERFLDB4RDgsMHhBMiwweDI4LDB4NjEsMHgyOCwweDJC
LDB4MkYsMHgyQiwweEEyLAotICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhENywweEVELDB4QUYs
MHg2RCwweEMyLDB4MzAsMHg4MiwweDI4LDB4MDgsMHhBRSwweEJCLDB4REIsCi0gICAgMHhDMiww
eDMwLDB4QTIsMHgzMCwweDBGLDB4MkEsMHgxRiwweEQ3LDB4QzIsMHgzMCwweEEyLDB4MzAsMHhE
QywweDU0LDB4NUEsMHhGMiwKLSAgICAweEUyLDB4MzgsMHhBMiwweDMwLDB4MEYsMHhFRCwweEJE
LDB4RjcsMHhFMywweDM4LDB4QzMsMHgzOCwweEUwLDB4RTAsMHhGRiwweDNCLAotICAgIDB4MDMs
MHg0MSwweEUzLDB4MzgsMHhCRCwweEJELDB4MDUsMHhBMiwweDQ0LDB4NDksMHhFMywweDM4LDB4
MkIsMHgzRiwweERGLDB4NUYsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweDgyLDB4RUUsMHhG
NSwweDc1LDB4NDQsMHg0OSwweDAzLDB4MzksMHgyQSwweEVCLDB4QUQsMHgzNSwKLSAgICAweDQ1
LDB4NDksMHhFMywweDM4LDB4NUUsMHhERiwweEZDLDB4N0MsMHgwMywweDM5LDB4QTIsMHgzOCww
eDJBLDB4MjgsMHgyOCwweEFCLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHg3QSwweDdDLDB4
RTgsMHhBMCwweEMzLDB4MzAsMHg4MSwweDI4LDB4MkIsMHhBOSwweDdGLDB4RDYsCi0gICAgMHhF
MywweDMwLDB4ODIsMHgyOCwweDNBLDB4MkIsMHhBRiwweEJELDB4MDQsMHgzOSwweEMyLDB4MzAs
MHhFMywweEEzLDB4NzcsMHg3RiwKLSAgICAweDQ0LDB4NDksMHhDMiwweDMwLDB4MzUsMHhBNyww
eDM1LDB4QjUsMHg4NSwweDQ5LDB4MDMsMHg0MSwweDJCLDB4QUUsMHhERiwweDU1LAotICAgIDB4
NjQsMHg0OSwweDAzLDB4NDEsMHg4OCwweEZFLDB4RjUsMHhENywweDY0LDB4NDksMHhFMywweDM4
LDB4RTAsMHhGMCwweEFGLDB4REYsCi0gICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEVCLDB4RUIs
MHg1RSwweDU3LDB4MDMsMHgzOSwweEEyLDB4MzAsMHhBMiwweEYyLDB4RkEsMHhEQSwKLSAgICAw
eEUzLDB4MzgsMHhBMiwweDMwLDB4RUEsMHhCQSwweDJBLDB4QjcsMHgwNCwweDM5LDB4QzMsMHgz
MCwweEI1LDB4QkYsMHgzRSwweDk3LAotICAgIDB4MDMsMHgzOSwweEMzLDB4MzAsMHhGRiwweDdF
LDB4RUEsMHhBQiwweDAzLDB4MzksMHhDMywweDMwLDB4QUIsMHhGQiwweEJGLDB4QkQsCi0gICAg
MHgwMywweDM5LDB4QzMsMHgzMCwweEEyLDB4QUEsMHhCOCwweERBLDB4MDMsMHgzOSwweEMyLDB4
MzAsMHgyQSwweDBBLDB4QkEsMHhGRSwKLSAgICAweEUzLDB4MzgsMHhDMiwweDMwLDB4MkYsMHhE
NywweDU3LDB4NTUsMHhFMywweDMwLDB4QTIsMHgzMCwweEE4LDB4M0YsMHgyRiwweDJGLAotICAg
IDB4MDMsMHgzOSwweEEyLDB4MjgsMHhGQSwweEZBLDB4RjAsMHg3MiwweEUzLDB4MzgsMHhDMiww
eDMwLDB4MEQsMHhBRCwweDk1LDB4MjUsCi0gICAgMHgwMywweDQxLDB4RTMsMHgzMCwweDUzLDB4
NUQsMHhGNSwweEY1LDB4MjQsMHg0MSwweEMzLDB4MzAsMHhGNywweEJGLDB4QkEsMHhBRSwKLSAg
ICAweDAzLDB4MzksMHhDMiwweDMwLDB4N0UsMHg3RSwweEJDLDB4QjgsMHgwMywweDM5LDB4QzIs
MHgzMCwweEJGLDB4QkIsMHhBOCwweEMwLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg3OCww
eEVBLDB4RTgsMHg4MiwweDAzLDB4MzksMHhBMSwweDMwLDB4RjcsMHhCQiwweEFBLDB4QTAsCi0g
ICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEZELDB4NUYsMHhDQiwweDhBLDB4MDMsMHgzOSwweEMy
LDB4MzgsMHgwQiwweDAzLDB4MEIsMHhBQiwKLSAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4QUQs
MHgzRiwweEFCLDB4QUIsMHg2NCwweDQ5LDB4MjMsMHg0MSwweEI4LDB4RkUsMHhCRSwweDZGLAot
ICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHg1NiwweDc4LDB4NUYsMHg1RiwweDIzLDB4NDEsMHgw
MywweDM5LDB4RkIsMHhERiwweERELDB4MzYsCi0gICAgMHgyMywweDQxLDB4MDMsMHgzOSwweEVF
LDB4N0IsMHhCRiwweEFFLDB4MDMsMHg0MSwweEUzLDB4MzAsMHhBMiwweDhBLDB4MDAsMHgyOCwK
LSAgICAweDI0LDB4NDEsMHhFMiwweDM4LDB4MTYsMHhGNywweEJFLDB4QUYsMHg0NCwweDQ5LDB4
RTIsMHgzOCwweDNFLDB4MzcsMHgzNywweEZGLAotICAgIDB4QTUsMHg1MSwweDIzLDB4NDksMHhC
RCwweEJCLDB4MkIsMHg4RiwweDg0LDB4NTEsMHg0NCwweDQ5LDB4RUIsMHhFRSwweEY4LDB4RTgs
Ci0gICAgMHhBNSwweDU5LDB4NDQsMHg0OSwweDJGLDB4QjUsMHg1RiwweDVGLDB4QTQsMHg1OSww
eDY0LDB4NTEsMHgyQiwweEFFLDB4MjksMHgwQiwKLSAgICAweDA2LDB4NjIsMHhBNCwweDU5LDB4
MkYsMHhBRCwweEJCLDB4RUIsMHhDOCwweDdBLDB4MDYsMHg2MiwweEFELDB4MjksMHgyRCwweDI1
LAotICAgIDB4MDksMHg4MywweDY3LDB4NzIsMHg3RSwweDVBLDB4NkEsMHhBMiwweEM4LDB4ODIs
MHg2NywweDcyLDB4QUUsMHg4QiwweEJELDB4RDUsCi0gICAgMHgyQSwweDgzLDB4ODcsMHg3QSww
eDNELDB4RkYsMHhGNSwweEY1LDB4QUYsMHhCQywweDRBLDB4OTMsMHgwQiwweDBCLDB4MjksMHgw
RCwKLSAgICAweDUyLDB4Q0QsMHhBRiwweEI0LDB4MEIsMHg4RSwweDJGLDB4QUQsMHg3MiwweENE
LDB4MzIsMHhDNSwweDgyLDB4MkIsMHg4OSwweEE1LAotICAgIDB4OTMsMHhDRCwweDMxLDB4QzUs
MHhGNywweEZGLDB4RTcsMHg4OSwweDMyLDB4QzUsMHhGMSwweEJDLDB4RjgsMHgxRiwweDNDLDB4
QkMsCi0gICAgMHg5NCwweENELDB4NTIsMHhDNSwweDg5LDB4MkIsMHgwQiwweDIzLDB4OTQsMHhD
RCwweDMyLDB4QzUsMHg3OCwweEU4LDB4RTAsMHg1OCwKLSAgICAweDMyLDB4QzUsMHhGMSwweEJD
LDB4N0IsMHg1MCwweEZDLDB4OTYsMHgxMSwweEJELDB4RDAsMHhCNCwweEVDLDB4RUEsMHhEMCww
eERCLAotICAgIDB4MzIsMHhDNSwweDkwLDB4QjQsMHgyMiwweEFBLDB4QkIsMHg3NywweEYxLDB4
QkMsMHg0RiwweEE0LDB4N0MsMHg3OCwweDdBLDB4RkYsCi0gICAgMHg4RiwweEFDLDB4NEYsMHhB
NCwweEI3LDB4QkQsMHgyQSwweDBBLDB4RDAsMHhCNCwweDRGLDB4QTQsMHg3RSwweDdCLDB4NkIs
MHg4QSwKLSAgICAweEQwLDB4QjQsMHhFQSwweDdBLDB4NUUsMHhGRSwweEFBLDB4MDAsMHhGMCww
eEJDLDB4OEMsMHg4QiwweDI1LDB4MkIsMHgwMiwweDA4LAotICAgIDB4MTEsMHhCRCwweEIwLDB4
QjQsMHhCOSwweDhFLDB4ODAsMHg3RiwweDExLDB4QkQsMHhEMCwweEI0LDB4MjIsMHgwQSwweEJB
LDB4QjUsCi0gICAgMHg1MiwweEM1LDB4MTEsMHhCRCwweDZELDB4QkIsMHgyRCwweDNELDB4NTEs
MHhDNSwweEQwLDB4QjQsMHg1RiwweDVBLDB4RkEsMHhGOCwKLSAgICAweDExLDB4QkQsMHg4Riww
eEFDLDB4NTcsMHg3RSwweEZBLDB4QjAsMHhGMSwweEJDLDB4OEYsMHhBQywweDdGLDB4N0YsMHhF
RiwweEUyLAotICAgIDB4QjAsMHhCNCwweDZGLDB4QUMsMHg1RCwweDlGLDB4MjMsMHhDMiwweDkw
LDB4QUMsMHg2RiwweEFDLDB4NTUsMHgyQiwweDdBLDB4N0IsCi0gICAgMHg2NCwweDU5LDB4NDMs
MHg1MSwweDhFLDB4OTgsMHhGNiwweDU3LDB4NjQsMHg1OSwweDIzLDB4NTEsMHhGMCwweDdBLDB4
NUYsMHhEQiwKLSAgICAweDY0LDB4NTksMHgyMywweDUxLDB4REIsMHhFNSwweEEzLDB4Q0IsMHg0
MywweDUxLDB4MjIsMHg1MSwweEY1LDB4NzQsMHg3NCwweDA4LAotICAgIDB4NDMsMHg1MSwweDAy
LDB4NDksMHhBQiwweERBLDB4MzgsMHgyRiwweDQzLDB4NTEsMHgyMywweDUxLDB4OEUsMHhBRiww
eDlDLDB4NTgsCi0gICAgMHg2MywweDUxLDB4MDIsMHg0OSwweEVGLDB4OEYsMHhBRiwweEZFLDB4
NDMsMHg1MSwweEUyLDB4NDAsMHhBOCwweEMyLDB4RUEsMHg3QiwKLSAgICAweDIzLDB4NDksMHhF
MiwweDQ4LDB4RDQsMHhCQSwweEE3LDB4ODksMHg0MywweDUxLDB4MDMsMHg0OSwweDBCLDB4OEYs
MHg4NSwweEQ1LAotICAgIDB4NDQsMHg1MSwweDAzLDB4NDksMHhFQSwweEVBLDB4NUYsMHg1Nyww
eDIzLDB4NTEsMHgwMywweDQ5LDB4MEQsMHg4RiwweERDLDB4MkUsCi0gICAgMHg0MywweDU5LDB4
MDMsMHg1MSwweERELDB4M0IsMHg2OCwweEZBLDB4MjMsMHg1MSwweEUzLDB4NDgsMHg4MiwweEIy
LDB4RjgsMHhGQiwKLSAgICAweDQ0LDB4NTksMHgwMywweDUxLDB4NTUsMHgzNSwweEE5LDB4M0Ys
MHg2NCwweDU5LDB4MjMsMHg1OSwweEFCLDB4RTAsMHg2OCwweENBLAotICAgIDB4NjQsMHg1OSww
eDIzLDB4NTEsMHg3OCwweEUyLDB4RkEsMHg1RSwweDQ0LDB4NTksMHgyMywweDUxLDB4RkQsMHhE
RCwweDc0LDB4MDUsCi0gICAgMHg0NCwweDU5LDB4MDMsMHg1MSwweEVCLDB4QUYsMHg4MywweDgw
LDB4ODcsMHg4MiwweDIzLDB4NTEsMHhCNSwweEI1LDB4QjUsMHgyRCwKLSAgICAweDhCLDB4QTMs
MHhDOCwweDhBLDB4MjksMHgwOSwweDA5LDB4MEIsMHhDQywweEFCLDB4NkEsMHg5QiwweEJGLDB4
QTcsMHhBRCwweEFBLAotICAgIDB4Q0MsMHhBMywweEFCLDB4QTMsMHgwQiwweEI5LDB4N0IsMHhF
QiwweEVDLDB4QUIsMHg4QiwweDlCLDB4MkEsMHg4QSwweEFELDB4RUUsCi0gICAgMHgwRCwweEFD
LDB4QUIsMHhBMywweDI4LDB4MEUsMHgzNywweEQ3LDB4MkQsMHhCNCwweENDLDB4QTMsMHhBOCww
eEEyLDB4Q0IsMHhFRCwKLSAgICAweDBELDB4QUMsMHhDQywweEFCLDB4QUEsMHhGMCwweEUyLDB4
NkQsMHgwRCwweEFDLDB4Q0MsMHhBQiwweEUyLDB4RkIsMHhFOCwweERBLAotICAgIDB4RUMsMHhB
QiwweEFCLDB4QTMsMHg1NiwweDY4LDB4MDAsMHg2RSwweENDLDB4QUIsMHg2QSwweDlCLDB4NUYs
MHhBQSwweDgwLDB4RkUsCi0gICAgMHhBQiwweEEzLDB4MDksMHg4QiwweDVBLDB4N0EsMHhGMCww
eDc4LDB4MDksMHg5MywweDg3LDB4N0EsMHhBQSwweEY4LDB4N0MsMHg3RSwKLSAgICAweEE4LDB4
ODIsMHg0NiwweDcyLDB4RjAsMHhFOCwweEZGLDB4NTcsMHg2NywweDdBLDB4MjYsMHg3MiwweDc2
LDB4ODcsMHgzNywweEY3LAotICAgIDB4NDYsMHg3MiwweDI2LDB4NkEsMHhBOCwweEMwLDB4ODAs
MHgyMCwweDQ2LDB4NzIsMHgyNiwweDZBLDB4QUQsMHg5RiwweEJBLDB4QTMsCi0gICAgMHg0Niww
eDcyLDB4MDUsMHg2QSwweDMyLDB4MkIsMHgwQSwweDJGLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg3
OSwweERELDB4RkQsMHg4QiwKLSAgICAweEM4LDB4ODIsMHg2NywweDcyLDB4M0QsMHgwRiwweDA5
LDB4MDIsMHhDOCwweDgyLDB4ODcsMHg3QSwweEE4LDB4QjAsMHhGQSwweEYyLAotICAgIDB4Qzgs
MHg4MiwweDY3LDB4N0EsMHhBOCwweEFBLDB4QUEsMHg1QSwweEM5LDB4ODIsMHgyNSwweDZBLDB4
ODAsMHhBQiwweEZFLDB4NTYsCi0gICAgMHg4OCwweDdBLDB4MjYsMHg2QSwweDgwLDB4RkEsMHg1
RiwweDVELDB4NjcsMHg3QSwweDA1LDB4NkEsMHg4MCwweEZBLDB4NUIsMHhENywKLSAgICAweDI2
LDB4NkEsMHhBNCwweDU5LDB4NzAsMHg2MCwweEUwLDB4QUEsMHhBNCwweDU5LDB4QzIsMHgzOCww
eDVGLDB4N0UsMHhERSwweDc4LAotICAgIDB4QzIsMHgzOCwweDgyLDB4MzAsMHg1NiwweDVFLDB4
N0MsMHg1QywweEEyLDB4MzAsMHg4MSwweDI4LDB4QUEsMHhBRiwweDIyLDB4MjksCi0gICAgMHhD
MiwweDMwLDB4QTIsMHgyOCwweDZELDB4RTgsMHhDMCwweEUwLDB4QzIsMHgzMCwweDgxLDB4Mjgs
MHg3QiwweEVBLDB4QTIsMHhBQSwKLSAgICAweEMzLDB4MzAsMHg4MSwweDI4LDB4RkEsMHhGQiww
eEJDLDB4MkEsMHhDMiwweDMwLDB4QTIsMHgzMCwweEVGLDB4QUYsMHgwQiwweDBCLAotICAgIDB4
RTMsMHgzOCwweEEyLDB4MzAsMHhGNSwweEFGLDB4MkIsMHgwMiwweDAzLDB4MzksMHhDMiwweDMw
LDB4M0QsMHhBRiwweEFCLDB4MEUsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzOCwweDlDLDB4NUMs
MHg3RSwweDdFLDB4MDMsMHg0MSwweEMzLDB4MzgsMHg4QSwweEM5LDB4RUQsMHhBRCwKLSAgICAw
eDQ0LDB4NDksMHhFMywweDM4LDB4QUQsMHhBRCwweDBELDB4MkIsMHg2NSwweDQ5LDB4MDMsMHg0
MSwweEY1LDB4QUUsMHhBQSwweENBLAotICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHg1NCwweDVD
LDB4OEMsMHg4MCwweDI0LDB4NDEsMHhFMywweDM4LDB4NTUsMHg3RCwweDZBLDB4ODAsCi0gICAg
MHgwMywweDM5LDB4QzIsMHgzMCwweEFCLDB4OUQsMHg5NywweEJBLDB4RTMsMHgzOCwweDgyLDB4
MjgsMHg3QywweEYwLDB4RjgsMHhBMCwKLSAgICAweEMyLDB4MzAsMHg4MiwweDI4LDB4OUYsMHhE
RiwweEQ3LDB4QjYsMHhDMiwweDMwLDB4QTIsMHgyOCwweDAwLDB4QjMsMHg3RiwweEQ2LAotICAg
IDB4RTMsMHgzOCwweDgyLDB4MjgsMHgyQSwweEFBLDB4QUQsMHhCRiwweDIzLDB4NDEsMHhDMyww
eDM4LDB4QUYsMHgzRCwweDlELDB4QkQsCi0gICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweERGLDB4
RkYsMHhDMCwweDhBLDB4MjQsMHg0MSwweEMyLDB4MzgsMHhFRSwweEYyLDB4RkEsMHhGOCwKLSAg
ICAweEUzLDB4MzgsMHg4MiwweDMwLDB4MzAsMHhGRSwweEY2LDB4RkYsMHhDMywweDMwLDB4ODIs
MHgyOCwweDIwLDB4QUIsMHhBNywweERGLAotICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHgwRSww
eDJFLDB4MEEsMHg4MywweEUzLDB4MzAsMHhBMiwweDI4LDB4MkYsMHhCNywweDdGLDB4RkYsCi0g
ICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDBCLDB4MEEsMHgyRiwweEEzLDB4MDMsMHgzMSwweEEy
LDB4MjgsMHg4QSwweEFBLDB4QkUsMHhERCwKLSAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4MjAs
MHgyMiwweEI2LDB4QkYsMHgwMywweDM5LDB4QzIsMHgzMCwweEZGLDB4OUIsMHhGQSwweEU4LAot
ICAgIDB4MDMsMHgzMSwweEEyLDB4MzAsMHhERiwweEZDLDB4RUIsMHhFQiwweEUzLDB4MzgsMHhD
MiwweDMwLDB4QTUsMHhBNSwweDJBLDB4MDgsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDUz
LDB4RUIsMHhCRiwweEZDLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBNSwweDk1LDB4OTcsMHg1NSwK
LSAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4MkEsMHg5QSwweDJBLDB4QTIsMHgwMywweDM5LDB4
RTMsMHgzOCwweEJDLDB4RDcsMHg1NywweERFLAotICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHhE
QSwweDdELDB4RjIsMHg0QSwweDAzLDB4NDEsMHhFMiwweDM4LDB4NzksMHhBQiwweDNBLDB4QTIs
Ci0gICAgMHgyNCwweDQxLDB4RTIsMHgzOCwweEZGLDB4NkIsMHhFOCwweDBGLDB4MDMsMHg0MSww
eEUzLDB4MzgsMHhCRCwweEE3LDB4RkQsMHg3QiwKLSAgICAweDIzLDB4NDEsMHhDMiwweDMwLDB4
QjcsMHhCRSwweDJBLDB4QUEsMHgyNCwweDQxLDB4RTIsMHgzOCwweDk3LDB4RjcsMHhCOSwweDhC
LAotICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhFRiwweEI3LDB4MjUsMHgwRCwweDY0LDB4NDks
MHgwMywweDM5LDB4RUUsMHg1QSwweEZBLDB4RjIsCi0gICAgMHgwMywweDQxLDB4NDQsMHgzOSww
eEFBLDB4RkEsMHgyQiwweEZGLDB4MjQsMHg0MSwweEUyLDB4MzgsMHgyQSwweDhFLDB4RkIsMHhE
RSwKLSAgICAweDIzLDB4NDEsMHgwMywweDM5LDB4MDMsMHgzRiwweDZGLDB4RDcsMHgyMywweDQx
LDB4RTMsMHgzOCwweDJFLDB4MDgsMHhBRiwweEJGLAotICAgIDB4MjQsMHg0MSwweEUyLDB4Mzgs
MHgyRSwweDJBLDB4MkYsMHhCNywweDQ0LDB4NDksMHhFMiwweDM4LDB4QUEsMHgwQSwweEYyLDB4
N0UsCi0gICAgMHg4NSwweDUxLDB4MDMsMHg0MSwweDJCLDB4MEYsMHgzRCwweEJELDB4QTUsMHg1
MSwweDQ0LDB4NDksMHg3RSwweEFFLDB4OEIsMHhBRCwKLSAgICAweEU2LDB4NTksMHg2NCwweDUx
LDB4NUQsMHhGOSwweEFBLDB4MkMsMHhDNSwweDU5LDB4NjQsMHg1MSwweDhELDB4QkQsMHg5Riww
eDNGLAotICAgIDB4MjYsMHg2QSwweEU1LDB4NjEsMHg3NSwweDM1LDB4OUYsMHhBMiwweEE4LDB4
NzIsMHgwNiwweDZBLDB4MkQsMHhCRiwweEVGLDB4QkYsCi0gICAgMHhFOSwweDgyLDB4ODcsMHg3
MiwweEVCLDB4RkIsMHgzRCwweEVELDB4QzgsMHg4MiwweDY3LDB4NzIsMHhENiwweDVBLDB4Rjgs
MHg2MCwKLSAgICAweEE4LDB4N0EsMHg0NiwweDcyLDB4MEEsMHgyRCwweDM3LDB4OUUsMHg2RSww
eEFDLDB4QTgsMHg3QSwweDBGLDB4MkIsMHgyRCwweDJELAotICAgIDB4MTEsMHhDNSwweDhFLDB4
QjQsMHgyOSwweEFGLDB4MkQsMHgyOSwweEIzLDB4RDUsMHgxMSwweEJELDB4RkQsMHhCNSwweEFG
LDB4MEIsCi0gICAgMHhCMywweEQ1LDB4MzIsMHhDNSwweEFCLDB4RUIsMHhGQSwweDc4LDB4MzIs
MHhDNSwweEFGLDB4QUMsMHhBOCwweEFBLDB4QUYsMHhCNSwKLSAgICAweEI0LDB4RDUsMHgzMiww
eEM1LDB4QTksMHhBOSwweEE5LDB4OEYsMHg3MywweENELDB4MzMsMHhDNSwweDcwLDB4RTgsMHhB
OCwweEU4LAotICAgIDB4NTMsMHhDNSwweDExLDB4QkQsMHhGNywweDVBLDB4NTgsMHg3OCwweDEx
LDB4QkQsMHhCMCwweEI0LDB4N0YsMHg3RSwweDdFLDB4NUMsCi0gICAgMHhCMCwweEI0LDB4MEUs
MHhBNCwweEUwLDB4RkEsMHhGQywweEJFLDB4QjAsMHhCNCwweDJFLDB4QTQsMHhBRiwweEFELDB4
QUIsMHg4QSwKLSAgICAweDExLDB4QkQsMHg2RiwweEFDLDB4OUQsMHgyRiwweDBCLDB4QUEsMHhG
MSwweEJDLDB4NkYsMHhBQywweEEyLDB4ODgsMHg2OCwweDVFLAotICAgIDB4RDEsMHhCNCwweDRF
LDB4QTQsMHg4MCwweEZFLDB4NTUsMHg1NSwweEIwLDB4QjQsMHgyRSwweEE0LDB4ODAsMHhBRiww
eEJGLDB4NTUsCi0gICAgMHhCMCwweEI0LDB4MEUsMHg5QywweEEwLDB4QUEsMHg3RSwweDU3LDB4
RjEsMHhCNCwweENELDB4OUIsMHgyQSwweEJBLDB4RkYsMHhENSwKLSAgICAweEYxLDB4QkMsMHg0
RSwweEE0LDB4MDAsMHhBQiwweEY1LDB4NTUsMHgxMSwweEJELDB4NkYsMHhBQywweDAwLDB4OEIs
MHhCRiwweEY1LAotICAgIDB4MzIsMHhDNSwweDhGLDB4QUMsMHhBQSwweDAyLDB4QkEsMHhERCww
eDMyLDB4QzUsMHhEMCwweEI0LDB4N0EsMHhCQywweEY2LDB4OUIsCi0gICAgMHgxMSwweEJELDB4
QjAsMHhCNCwweDVGLDB4MDgsMHgyMCwweDAwLDB4MzIsMHhDNSwweDhGLDB4QUMsMHg1NSwweEVD
LDB4ODgsMHgwQSwKLSAgICAweDY0LDB4NTksMHgyMywweDUxLDB4RkUsMHhEQywweDU1LDB4RDUs
MHg0MywweDUxLDB4MjMsMHg1MSwweENCLDB4NjIsMHhCQywweDc1LAotICAgIDB4NjMsMHg1MSww
eDAzLDB4NDksMHg4RCwweEZFLDB4NUEsMHhGNywweDQzLDB4NTEsMHgwMiwweDQ5LDB4MEMsMHhC
QSwweEZFLDB4OEEsCi0gICAgMHg0MywweDUxLDB4MDMsMHg1MSwweDJBLDB4OEEsMHg0QSwweEM4
LDB4NjQsMHg1OSwweDAzLDB4NDksMHhFQiwweEIyLDB4RkIsMHg2QiwKLSAgICAweDQzLDB4NTEs
MHhFMiwweDQ4LDB4RTIsMHg4MiwweEY4LDB4NkUsMHg0MywweDUxLDB4RTIsMHg0MCwweERCLDB4
RUUsMHhGQiwweEEzLAotICAgIDB4NDMsMHg1MSwweDAzLDB4NDksMHg3RiwweDdGLDB4RkIsMHg4
QiwweDQ0LDB4NTEsMHgwMiwweDQ5LDB4RkQsMHhBQiwweDhBLDB4QjgsCi0gICAgMHgyMywweDUx
LDB4MDIsMHg0OSwweDVFLDB4N0YsMHhBMiwweDAyLDB4NDMsMHg1MSwweEUzLDB4NDgsMHg4QSww
eEUyLDB4QTAsMHhBOCwKLSAgICAweDQ0LDB4NTksMHhFMiwweDUwLDB4RUEsMHg2MiwweEZBLDB4
RUEsMHg0NCwweDU5LDB4RTIsMHg0OCwweEJELDB4MkQsMHhBQSwweDAyLAotICAgIDB4ODUsMHg2
MSwweDIzLDB4NTEsMHhGRCwweDdGLDB4NUUsMHg3OCwweDY0LDB4NTksMHgyMywweDUxLDB4Qjks
MHhCMSwweDIyLDB4ODMsCi0gICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEY0LDB4RkUsMHhGRiww
eEFELDB4NjQsMHg2MSwweDIzLDB4NTEsMHhCRCwweEE5LDB4Q0IsMHhGQiwKLSAgICAweDY0LDB4
NTksMHgyMywweDUxLDB4QUMsMHhCRiwweEY1LDB4MkYsMHhBOCwweDgyLDB4NDQsMHg1OSwweDNE
LDB4M0QsMHgyRCwweDJELAotICAgIDB4QUIsMHhBMywweDA5LDB4OTMsMHhBRiwweEFELDB4MEQs
MHgyQiwweENCLDB4QTMsMHg4QiwweDlCLDB4MUYsMHhBRCwweEFCLDB4QUEsCi0gICAgMHhDQyww
eEEzLDB4OEIsMHhBMywweDgzLDB4QTIsMHhEMiwweEVBLDB4Q0IsMHhBMywweDZBLDB4OUIsMHhB
MiwweEFBLDB4RUIsMHg3RiwKLSAgICAweEFCLDB4QTMsMHg0QiwweDlCLDB4MDAsMHhFMCwweEVC
LDB4NUYsMHhBQywweEEzLDB4NEIsMHg5QiwweDgyLDB4QUIsMHhFQiwweEZELAotICAgIDB4Q0Ms
MHhBQiwweDJBLDB4OTMsMHgwMiwweEFBLDB4QkIsMHg1RiwweENDLDB4QTMsMHgyOSwweDkzLDB4
MDAsMHhBQSwweERGLDB4NTUsCi0gICAgMHhBQiwweEEzLDB4MDksMHg4QiwweDgwLDB4RUEsMHhG
RSwweEQ1LDB4NkEsMHg5QiwweEM4LDB4ODIsMHgwMCwweEVBLDB4RkUsMHg1RiwKLSAgICAweDI5
LDB4OTMsMHg2NywweDdBLDB4QTAsMHhGOCwweEZBLDB4NUYsMHhDOCwweDgyLDB4NjcsMHg3Miww
eERFLDB4NUYsMHhGRiwweEZGLAotICAgIDB4NjcsMHg3QSwweDQ2LDB4NzIsMHg1MywweENDLDB4
N0EsMHg3NCwweDY3LDB4NzIsMHgyNiwweDcyLDB4Q0UsMHg0QSwweDZBLDB4N0YsCi0gICAgMHg0
NiwweDcyLDB4MjUsMHg2QSwweEE4LDB4OTAsMHg3QiwweDU3LDB4NDYsMHg3MiwweDA1LDB4NkEs
MHhBRSwweEEyLDB4QUYsMHgzRiwKLSAgICAweDY3LDB4NzIsMHgwNiwweDZBLDB4QkYsMHhBNiww
eEFGLDB4QUEsMHhFOSwweDgyLDB4NDYsMHg3MiwweDk3LDB4QkQsMHhBRSwweDIzLAotICAgIDB4
RTgsMHg4MiwweDg3LDB4N0EsMHhBRiwweEZBLDB4REEsMHg3NCwweEM4LDB4ODIsMHg0NiwweDcy
LDB4ODgsMHhBOCwweEFBLDB4N0EsCi0gICAgMHhBOCwweDgyLDB4MDUsMHg2QSwweEU4LDB4Rjgs
MHg3RSwweDVGLDB4NjcsMHg3MiwweEM1LDB4NjEsMHhFOCwweDZBLDB4N0YsMHg1RiwKLSAgICAw
eDA1LDB4NkEsMHhBNCwweDU5LDB4RTAsMHg2RCwweEZFLDB4NUYsMHgwNSwweDZBLDB4ODQsMHg1
OSwweDAyLDB4QUIsMHg5RSwweEZGLAotICAgIDB4MjUsMHg2MiwweEM1LDB4NjEsMHg2RiwweERG
LDB4RkQsMHhFRCwweEM1LDB4NjEsMHhFMywweDQwLDB4NzgsMHg3OCwweEU4LDB4ODAsCi0gICAg
MHgwNCwweDQxLDB4NjEsMHgyOCwweDVFLDB4NUUsMHg3OCwweDc4LDB4QzIsMHgzMCwweDYxLDB4
MjgsMHgzRiwweDJELDB4MkYsMHhBRCwKLSAgICAweEUzLDB4MzgsMHhBMiwweDMwLDB4N0YsMHhG
MiwweEFFLDB4M0YsMHhFMywweDM4LDB4QTIsMHgzMCwweDdGLDB4RkIsMHg4QSwweEEwLAotICAg
IDB4MDQsMHgzOSwweEMzLDB4MzAsMHhENSwweERELDB4RjUsMHgwQSwweEUzLDB4MzgsMHhBMiww
eDMwLDB4QUYsMHhBRSwweDVFLDB4RjgsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzOCwweEE5LDB4
MkQsMHgwOSwweDJCLDB4RTIsMHg0MCwweDIzLDB4MzksMHhGQywweEZFLDB4RkYsMHhBRiwKLSAg
ICAweDAzLDB4NDEsMHhBMiwweDM4LDB4RTgsMHhBOCwweDJDLDB4MkUsMHgyNCwweDQxLDB4QzMs
MHgzOCwweEE1LDB4MkYsMHg4QSwweEEwLAotICAgIDB4NjUsMHg0OSwweDAzLDB4NDEsMHhBRCww
eEI1LDB4MEQsMHhFQiwweDY1LDB4NDksMHgyNCwweDQxLDB4QUIsMHg5RiwweERFLDB4OUIsCi0g
ICAgMHg0NCwweDQ5LDB4MjMsMHg0MSwweDU0LDB4NzcsMHg1RiwweDU1LDB4NDQsMHg0MSwweDAz
LDB4NDEsMHhFMiwweEYyLDB4RkYsMHhCNywKLSAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4RkIs
MHhEQSwweEUyLDB4RkEsMHgwMywweDM5LDB4QzIsMHgzMCwweDdFLDB4RkEsMHhDMiwweEUyLAot
ICAgIDB4RTMsMHgzMCwweDgxLDB4MjgsMHhERiwweDVGLDB4RkMsMHhGOCwweEUzLDB4MzAsMHhB
MiwweDMwLDB4NUYsMHg4OSwweDI5LDB4QkQsCi0gICAgMHgwMywweDM5LDB4QTIsMHgzMCwweDFE
LDB4RkIsMHhFRSwweEFFLDB4MjQsMHg0MSwweEMzLDB4MzAsMHgyRiwweDI1LDB4MkYsMHgwQiwK
LSAgICAweDY0LDB4NDksMHgwNCwweDQxLDB4RUYsMHhGRiwweEVGLDB4RUYsMHgyNCwweDQxLDB4
QTIsMHgzMCwweEUwLDB4QjAsMHhGQSwweDVFLAotICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHg3
RiwweDdCLDB4RUIsMHg4QiwweEUyLDB4MzAsMHg4MSwweDI4LDB4RkYsMHg3QiwweEFBLDB4QTAs
Ci0gICAgMHgwMywweDM5LDB4ODIsMHgyOCwweEVCLDB4N0IsMHhGQiwweDBCLDB4RTMsMHgzMCww
eEEyLDB4MjgsMHhFRiwweEJCLDB4OEIsMHgyOCwKLSAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4
RTMsMHhGQiwweEZGLDB4RDYsMHhFMywweDMwLDB4QTIsMHgzMCwweDk3LDB4MUYsMHhBQiwweDJF
LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg1NywweDdCLDB4RUIsMHhBQSwweDQ0LDB4NDEs
MHhFMywweDM4LDB4NTUsMHhERCwweEJELDB4OEYsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCww
eEZFLDB4QkMsMHhBOCwweDJBLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBRiwweEFGLDB4QjYsMHhG
QSwKLSAgICAweEUyLDB4MzgsMHhDMiwweDMwLDB4QTIsMHgyQSwweEJGLDB4RDUsMHhFMiwweDM4
LDB4QTIsMHgzMCwweEZFLDB4MkMsMHgyRSwweEFBLAotICAgIDB4MDQsMHg0MSwweEUzLDB4MzAs
MHhGOSwweDhELDB4QUYsMHhBOSwweDIzLDB4NDEsMHhFMywweDM4LDB4MUQsMHhBRiwweEJBLDB4
QTMsCi0gICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweDdELDB4NUQsMHg4QiwweDJBLDB4MDMsMHg0
MSwweEUzLDB4MzgsMHhFNywweEJFLDB4QTQsMHgyNCwKLSAgICAweDQ0LDB4NDksMHgwMywweDM5
LDB4QkQsMHhCQiwweDdCLDB4MDIsMHg0NCwweDQ5LDB4MDMsMHgzOSwweEY3LDB4RkYsMHhGRiww
eDBGLAotICAgIDB4NDMsMHg0MSwweEUzLDB4MzgsMHhGNywweEVGLDB4RkUsMHhBOCwweDIzLDB4
NDEsMHgwMywweDM5LDB4OUQsMHgxQiwweDAzLDB4MDIsCi0gICAgMHg4NSwweDUxLDB4MDMsMHgz
OSwweDJCLDB4MkYsMHhGRCwweEY3LDB4ODUsMHg0OSwweDAzLDB4NDEsMHhEQywweEZBLDB4RkIs
MHhGRiwKLSAgICAweDQ0LDB4NDEsMHhFMiwweDM4LDB4RTIsMHhFQSwweDdBLDB4RkEsMHgyMyww
eDQxLDB4RTMsMHgzOCwweDU2LDB4OUYsMHgzRCwweEFFLAotICAgIDB4NjQsMHg0OSwweDAzLDB4
MzksMHhGRCwweEZGLDB4QkEsMHg4QSwweDQ0LDB4NDEsMHgwMywweDM5LDB4RkUsMHhBQSwweDlF
LDB4MkEsCi0gICAgMHg0NCwweDQxLDB4RTIsMHgzOCwweEZGLDB4RDcsMHhGRSwweEVDLDB4MjMs
MHg0MSwweDAzLDB4MzksMHg3NywweDJCLDB4MDEsMHhBRCwKLSAgICAweDQ0LDB4NDksMHgwMyww
eDQxLDB4QUIsMHhBQSwweEZFLDB4RTgsMHg4NSwweDUxLDB4NDQsMHg0OSwweDJCLDB4QkQsMHg2
NSwweEQ1LAotICAgIDB4QTUsMHg1MSwweDY0LDB4NTEsMHhGOCwweEZFLDB4QkQsMHgzNSwweEM2
LDB4NTksMHg4NCwweDUxLDB4QjUsMHgxRCwweDFBLDB4MkIsCi0gICAgMHg2NywweDcyLDB4QTUs
MHg1OSwweEFCLDB4MkIsMHgyQiwweEFELDB4NjcsMHg3MiwweDA2LDB4NjIsMHgwQSwweDIyLDB4
QTgsMHhERSwKLSAgICAweEE4LDB4N0EsMHgwNiwweDZBLDB4MDIsMHgwQSwweEFGLDB4NzUsMHhB
OCwweDdBLDB4MjYsMHg2QSwweDAwLDB4MDIsMHhBQiwweEI1LAotICAgIDB4ODgsMHg3QSwweDQ3
LDB4NzIsMHg1RSwweDVCLDB4QjAsMHhBRSwweDRELDB4QUMsMHhBOCwweDdBLDB4MkQsMHgyRCww
eDI1LDB4MjUsCi0gICAgMHg3MiwweENELDB4Q0YsMHhCQywweEE1LDB4MkQsMHgyOSwweDA5LDB4
QjMsMHhENSwweDcyLDB4Q0QsMHhBRCwweDhCLDB4Q0IsMHg3NSwKLSAgICAweDczLDB4Q0QsMHg4
RiwweEFDLDB4RTAsMHg3MCwweDc4LDB4N0MsMHg3MywweENELDB4NEYsMHhBQywweEJELDB4QkQs
MHgyRCwweDJCLAotICAgIDB4OTQsMHhDRCwweDUzLDB4QzUsMHgwOSwweDdELDB4N0EsMHhGQiww
eDczLDB4QzUsMHhGMSwweEJDLDB4RTAsMHhGRSwweERGLDB4NUYsCi0gICAgMHg1MywweEM1LDB4
RDEsMHhCNCwweDhBLDB4MEYsMHhBNywweEZGLDB4MzIsMHhDNSwweDkwLDB4QUMsMHhGOCwweEVB
LDB4RjgsMHg3RSwKLSAgICAweDkwLDB4QUMsMHhFRSwweDlCLDB4MDAsMHgwMCwweEEwLDB4N0Es
MHg5MCwweEFDLDB4Q0QsMHg5MywweDA4LDB4QTgsMHhGRiwweDc1LAotICAgIDB4QjAsMHhBQyww
eENELDB4OTMsMHhBMCwweEVFLDB4RjUsMHg1NSwweDZGLDB4QUMsMHhFRSwweDlCLDB4QTAsMHhG
QiwweEJGLDB4NzcsCi0gICAgMHgwRSwweEE0LDB4MkUsMHg5QywweEI1LDB4RkUsMHhCRiwweDhB
LDB4MkUsMHhBNCwweENDLDB4OTMsMHgwMCwweEVBLDB4RkEsMHg2MiwKLSAgICAweDJGLDB4QTQs
MHhDRCwweDkzLDB4QTAsMHg3NywweDdGLDB4QjcsMHgwRSwweDlDLDB4OEMsMHg4QiwweEJFLDB4
RkYsMHhERiwweDIwLAotICAgIDB4NkYsMHhBQywweEFELDB4OTMsMHgyRiwweEI3LDB4RjUsMHg1
NSwweDZGLDB4QUMsMHhFRCwweDlCLDB4MkEsMHgwQiwweDJCLDB4OTUsCi0gICAgMHhCMCwweEI0
LDB4MkUsMHhBNCwweDIyLDB4QTIsMHhGRiwweDc3LDB4MTEsMHhCRCwweDRGLDB4QTQsMHgwQSww
eDJGLDB4OUYsMHhENSwKLSAgICAweDMyLDB4QzUsMHhCMCwweEFDLDB4ODAsMHgwMiwweDJCLDB4
QjUsMHgzMiwweEM1LDB4MTEsMHhCRCwweDc3LDB4MkEsMHg4MCwweDIzLAotICAgIDB4NDMsMHg1
MSwweDIzLDB4NTEsMHhGRCwweEQ4LDB4MDAsMHhFMCwweDQzLDB4NTEsMHgyMywweDUxLDB4NEEs
MHhDMiwweDhELDB4MTMsCi0gICAgMHg0MywweDUxLDB4RTIsMHg0OCwweEFBLDB4RkEsMHhGOCww
eEJDLDB4NjMsMHg1OSwweDAzLDB4NDksMHhBRiwweDI5LDB4MzUsMHhCRiwKLSAgICAweDY0LDB4
NTksMHgyMywweDUxLDB4N0UsMHgwNywweEU1LDB4NkQsMHg0MywweDUxLDB4MDIsMHg0OSwweDgz
LDB4MDgsMHgwMiwweDVBLAotICAgIDB4MjMsMHg1MSwweEUyLDB4NDAsMHg3QywweEVFLDB4NkUs
MHhBRiwweDIzLDB4NDksMHhFMiwweDQ4LDB4QUIsMHgzRiwweEFFLDB4MDAsCi0gICAgMHg0NCww
eDUxLDB4MDIsMHg0OSwweEJFLDB4OUQsMHhBMywweEEyLDB4NDMsMHg1MSwweDAzLDB4NDksMHhG
MiwweEU4LDB4QkUsMHgyRiwKLSAgICAweDQ0LDB4NTEsMHgwMiwweDQ5LDB4OTksMHhGQywweEEy
LDB4MjgsMHg0MywweDUxLDB4MDIsMHg1MSwweEFBLDB4MEEsMHhDOCwweEVFLAotICAgIDB4NjMs
MHg1MSwweDAzLDB4NTEsMHg2RiwweEJFLDB4QUUsMHgyQSwweDg1LDB4NjEsMHgyMywweDUxLDB4
RTcsMHhDRSwweEY3LDB4NTcsCi0gICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweDcwLDB4NTgsMHhE
RiwweERELDB4NjQsMHg1OSwweDIzLDB4NTEsMHg4RCwweEI3LDB4REEsMHg3QSwKLSAgICAweDY0
LDB4NTksMHgwMywweDUxLDB4MkUsMHhCQiwweEZELDB4QUYsMHg0MywweDU5LDB4MDMsMHg1MSww
eDMyLDB4QkEsMHgyOCwweDFBLAotICAgIDB4NjQsMHg1OSwweDAzLDB4NTEsMHgyRiwweEE3LDB4
QUYsMHhBQSwweDRBLDB4OTMsMHg2NCwweDU5LDB4M0QsMHgyRCwweDJELDB4MkYsCi0gICAgMHhB
QiwweEEzLDB4NDksMHg5QiwweEI1LDB4QTUsMHhGQiwweDBGLDB4QUIsMHhBMywweDZBLDB4OUIs
MHgwMiwweDAyLDB4MkIsMHhEQSwKLSAgICAweENDLDB4QUIsMHg2QiwweDlCLDB4RTIsMHhBMiww
eEVBLDB4RUEsMHg4QiwweDlCLDB4MkEsMHg5MywweEEyLDB4RUMsMHhGQSwweDdFLAotICAgIDB4
NEIsMHg5QiwweDA5LDB4OTMsMHgyMCwweEMwLDB4RkUsMHg3RiwweDZCLDB4OUIsMHhFOSwweDhB
LDB4OEEsMHhFRSwweDdGLDB4NzcsCi0gICAgMHgyQSwweDkzLDB4ODcsMHg3QSwweDIwLDB4QkEs
MHhGRSwweDU3LDB4MDksMHg4QiwweDg3LDB4N0EsMHgwMCwweDgwLDB4RUEsMHg1RCwKLSAgICAw
eDJBLDB4OTMsMHg4NywweDdBLDB4OEEsMHhGQSwweDdGLDB4NTUsMHhBOCwweDgyLDB4NjYsMHg3
MiwweDAwLDB4QkYsMHg3RSwweDdELAotICAgIDB4QTcsMHg3QSwweDQ2LDB4NzIsMHhGMCwweEZB
LDB4RjcsMHhGRiwweDg3LDB4N0EsMHg0NiwweDcyLDB4RTAsMHg3QiwweDU2LDB4RDcsCi0gICAg
MHg2NiwweDcyLDB4MjYsMHg2QSwweEU2LDB4QUQsMHhDOCwweDNBLDB4ODcsMHg3QSwweDI2LDB4
NkEsMHg1NywweEY1LDB4RjUsMHhEQSwKLSAgICAweDY2LDB4NzIsMHgyNSwweDZBLDB4N0YsMHhE
QSwweEFGLDB4QkEsMHg2NiwweDcyLDB4MjYsMHg3MiwweEJCLDB4RkIsMHhBQSwweDBFLAotICAg
IDB4QzgsMHg4MiwweDQ2LDB4NzIsMHhCNSwweEZGLDB4MkQsMHgyQSwweEU5LDB4ODIsMHg4OCww
eDdBLDB4RUEsMHhGQiwweDcyLDB4RUEsCi0gICAgMHhBNywweDdBLDB4NDYsMHg3MiwweEE4LDB4
OEMsMHhFOCwweDdFLDB4ODcsMHg3QSwweEU1LDB4NjksMHhBMCwweEVBLDB4NzIsMHg3RSwKLSAg
ICAweDI2LDB4NkEsMHhDNCwweDYxLDB4MjAsMHhFMCwweDVFLDB4N0IsMHgwNSwweDZBLDB4QTQs
MHg2MSwweDdDLDB4RTcsMHhFRSwweDJCLAotICAgIDB4MDUsMHg2QSwweEE0LDB4NjEsMHg3Riww
eEY1LDB4RkUsMHhBMiwweDA2LDB4NkEsMHhBNCwweDYxLDB4REYsMHhGQiwweEEzLDB4QUEsCi0g
ICAgMHhFNSwweDY5LDB4QTQsMHg1OSwweDJCLDB4QUUsMHhBRCwweDgyLDB4MDYsMHg2QSwweEE1
LDB4NTksMHg1QSwweDdCLDB4N0EsMHhFMiwKLSAgICAweEE1LDB4NTksMHg4MSwweDMwLDB4N0Us
MHhGQSwweEZBLDB4RTgsMHhFMywweDM4LDB4ODEsMHgyOCwweEY1LDB4REEsMHg3QywweEYwLAot
ICAgIDB4RTMsMHgzOCwweDYxLDB4MjgsMHgyQiwweDJCLDB4RkYsMHg1RiwweDA0LDB4MzksMHhB
MiwweDMwLDB4MDAsMHg4MiwweEJELDB4RjUsCi0gICAgMHgyNCwweDQxLDB4QTIsMHgzMCwweDhB
LDB4MEUsMHhCRiwweDI3LDB4MjQsMHg0MSwweEMyLDB4MzAsMHg3RSwweDdBLDB4QTAsMHg4MCwK
LSAgICAweEUzLDB4MzgsMHhBMiwweDMwLDB4MDIsMHhBOCwweEZDLDB4NTgsMHhFMiwweDM4LDB4
QTIsMHgzMCwweEEwLDB4M0IsMHhCRiwweDlGLAotICAgIDB4MjQsMHg0MSwweEUyLDB4MzgsMHgy
NSwweEZCLDB4MkIsMHhCRiwweDY0LDB4NDksMHgwMywweDQxLDB4RjcsMHhCRiwweEJGLDB4QUQs
Ci0gICAgMHg2NCwweDQ5LDB4MjQsMHg0MSwweEZCLDB4RTIsMHg4OCwweDAwLDB4NjUsMHg0OSww
eDI0LDB4NDEsMHhEQiwweDdGLDB4NzcsMHg3RiwKLSAgICAweDQ0LDB4NDEsMHhFMiwweDM4LDB4
OEYsMHhGNywweEZBLDB4QTAsMHg0NCwweDQ5LDB4MDMsMHgzOSwweEI3LDB4RkYsMHhBQSwweEVB
LAotICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHg3MCwweEY4LDB4REEsMHhCOCwweDI0LDB4NDEs
MHhFMywweDM4LDB4NjksMHg1RiwweEJFLDB4MEEsCi0gICAgMHgyNCwweDM5LDB4QTIsMHgzMCww
eDdCLDB4RkUsMHhFQSwweEYwLDB4QzMsMHgzMCwweEEyLDB4MjgsMHgyNSwweDNGLDB4MkMsMHgw
OCwKLSAgICAweDA0LDB4MzksMHhBMiwweDMwLDB4QkYsMHgzRiwweDNFLDB4QjcsMHg0NCwweDQx
LDB4MDQsMHgzOSwweEFELDB4RUYsMHhFMSwweDU1LAotICAgIDB4MjQsMHg0MSwweEMzLDB4MzAs
MHg4MCwweEE4LDB4RTgsMHhERSwweEUzLDB4MzgsMHhDMywweDMwLDB4REMsMHhDOCwweEVBLDB4
MTcsCi0gICAgMHhDMywweDM4LDB4RTMsMHgzMCwweEJGLDB4REYsMHg3RiwweDU1LDB4MDMsMHgz
OSwweEMzLDB4MzAsMHg3NywweDhBLDB4RTIsMHhENiwKLSAgICAweDAzLDB4MzksMHhDMywweDMw
LDB4QUQsMHhBRiwweDNELDB4N0IsMHhFMywweDMwLDB4QzIsMHgyOCwweEFDLDB4NkMsMHhGRSww
eDVDLAotICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHg5RCwweEY1LDB4REYsMHg3MywweDAzLDB4
MzksMHhBMiwweDI4LDB4QkYsMHhCRCwweEFGLDB4MjksCi0gICAgMHg0NCwweDQxLDB4RTMsMHgz
OCwweEZGLDB4QUIsMHgwRCwweDhGLDB4NDQsMHg0MSwweDAzLDB4MzksMHhBRCwweEVCLDB4RkIs
MHg3QSwKLSAgICAweDI0LDB4MzksMHhFMywweDM4LDB4RUYsMHg4QiwweEZBLDB4RkYsMHhFMiww
eDMwLDB4QzIsMHgzMCwweDZFLDB4NTcsMHg1NywweDU3LAotICAgIDB4RTMsMHgzOCwweEMyLDB4
MzAsMHg1NSwweDVELDB4QTIsMHhBMiwweDAzLDB4MzksMHhDMywweDMwLDB4RkYsMHgyRiwweDBG
LDB4OEYsCi0gICAgMHg0NSwweDQxLDB4RTMsMHgzOCwweEE1LDB4MkIsMHgyRSwweEFCLDB4NjUs
MHg0OSwweDI0LDB4NDEsMHg1RCwweDU1LDB4QUUsMHhFQiwKLSAgICAweDY0LDB4NDksMHgwMyww
eDM5LDB4RkIsMHg3RSwweDlGLDB4QTIsMHg0NCwweDQ5LDB4RTMsMHgzOCwweEY1LDB4RjYsMHhC
OCwweEEyLAotICAgIDB4NjQsMHg0OSwweDI0LDB4NDEsMHhBRiwweEJGLDB4RkMsMHhBQSwweDY1
LDB4NDksMHgyMywweDQxLDB4QUYsMHhGRCwweDlGLDB4ODIsCi0gICAgMHg2NCwweDQ5LDB4MDMs
MHgzOSwweEY4LDB4NzgsMHhGQSwweEFBLDB4NDQsMHg0MSwweDAzLDB4NDEsMHhGQSwweEEyLDB4
OTgsMHhGRSwKLSAgICAweDQ0LDB4NDEsMHhDMiwweDM4LDB4MkEsMHgyMiwweEU4LDB4NUUsMHg0
NCwweDQ5LDB4RTMsMHgzOCwweEE4LDB4QTgsMHhFRiwweERELAotICAgIDB4MjMsMHg0MSwweDAz
LDB4MzksMHhBMiwweDYwLDB4MkEsMHgwQiwweDIzLDB4NDEsMHhFMiwweDM4LDB4MkUsMHgyRSww
eDI4LDB4REMsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweDhCLDB4QkYsMHhGNywweEQ1LDB4
NDQsMHg0MSwweEUyLDB4MzgsMHg4OCwweEJBLDB4RUYsMHg3NSwKLSAgICAweDIzLDB4NDEsMHhF
MywweDMwLDB4MDgsMHg4OCwweDgzLDB4MDEsMHg0MywweDQxLDB4MDMsMHgzOSwweEI1LDB4MzUs
MHhCRCwweEQ1LAotICAgIDB4NjQsMHg0OSwweDI0LDB4NDEsMHg4MiwweDgyLDB4OUIsMHhGRCww
eDY0LDB4NDksMHgyMywweDQxLDB4QjIsMHhBMiwweEI4LDB4REQsCi0gICAgMHg4NSwweDUxLDB4
MjMsMHg0MSwweDI3LDB4QkEsMHhGRSwweEVFLDB4QzYsMHg1OSwweDY0LDB4NTEsMHg4MiwweEFF
LDB4RkQsMHhGRCwKLSAgICAweDA2LDB4NjIsMHg4NCwweDUxLDB4MkQsMHhCNywweEY3LDB4RkYs
MHg0NywweDZBLDB4QzUsMHg2MSwweEFCLDB4MEIsMHhBOSwweEFCLAotICAgIDB4NDcsMHg3Miww
eEM1LDB4NTksMHhCRSwweDVBLDB4NTgsMHhFOCwweDQ3LDB4NzIsMHhDNCwweDU5LDB4MEEsMHgz
RCwweDJGLDB4QUYsCi0gICAgMHg4OCwweDcyLDB4MjYsMHg2QSwweEU4LDB4RjUsMHhCRCwweEI1
LDB4MEQsMHhBNCwweDg3LDB4NzIsMHgzNSwweDI1LDB4MzUsMHhCNSwKLSAgICAweDkyLDB4RDUs
MHg4RiwweEI0LDB4OEIsMHgwQiwweDI5LDB4MjksMHg5MywweEQ1LDB4MzEsMHhDNSwweEFBLDB4
QTAsMHhFQSwweDY4LAotICAgIDB4NTIsMHhDRCwweEIwLDB4QjQsMHg1QywweDU4LDB4NUUsMHg1
NywweDczLDB4Q0QsMHhBRiwweEI0LDB4QUQsMHgwQiwweDJCLDB4MEIsCi0gICAgMHg5NCwweENE
LDB4NzMsMHhDNSwweDQ3LDB4ODgsMHhGQSwweDVFLDB4MzIsMHhDNSwweDkwLDB4QUMsMHhFOCww
eEUwLDB4RTAsMHg3OCwKLSAgICAweEQxLDB4QjQsMHgyRSwweEE0LDB4MDAsMHg4OCwweEZBLDB4
RjcsMHhCMCwweEI0LDB4MEUsMHg5QywweEM4LDB4RUEsMHg3RSwweDVGLAotICAgIDB4NEYsMHhB
NCwweEFELDB4OTMsMHhFOCwweEZFLDB4REYsMHg3NywweENFLDB4OUIsMHg2QywweDhCLDB4MDgs
MHhGQSwweDdFLDB4RkIsCi0gICAgMHhDRCwweDkzLDB4NkMsMHg4QiwweDA4LDB4MkIsMHhCNyww
eEE3LDB4MEUsMHg5QywweEFELDB4OTMsMHhBMiwweEVBLDB4RkYsMHhGRCwKLSAgICAweDBFLDB4
OUMsMHg4RCwweDkzLDB4MjAsMHhBQSwweEZGLDB4N0YsMHgwRSwweEE0LDB4QUQsMHg5MywweDhB
LDB4OEIsMHhBRCwweEY5LAotICAgIDB4MkUsMHhBNCwweENELDB4OTMsMHhGRCwweEJGLDB4MEYs
MHhFOSwweDJFLDB4OUMsMHhFRSwweDlCLDB4OEIsMHg2OCwweDU4LDB4NUUsCi0gICAgMHhDRCww
eDkzLDB4NkMsMHg4QiwweEJDLDB4QjQsMHg1RSwweDVFLDB4NEYsMHhBNCwweEFDLDB4OTMsMHhB
RiwweDJCLDB4MkQsMHhBRCwKLSAgICAweDZGLDB4QUMsMHgwRSwweEE0LDB4M0EsMHhBMiwweDBC
LDB4QUIsMHhBRiwweEFDLDB4NEYsMHhBNCwweEQ3LDB4REQsMHhCRiwweEFELAotICAgIDB4RjEs
MHhCQywweDRGLDB4QTQsMHhCNywweEFCLDB4MDIsMHgwMiwweDExLDB4QkQsMHg2RiwweEFDLDB4
MkIsMHhENiwweEU4LDB4MDAsCi0gICAgMHg2NCwweDU5LDB4MDIsMHg0OSwweEYyLDB4QkUsMHg3
OCwweEVCLDB4NjQsMHg1OSwweDAzLDB4NDksMHhBRSwweDNGLDB4QjksMHhCRCwKLSAgICAweDY1
LDB4NTksMHgwMywweDQ5LDB4RjQsMHg3QiwweEVGLDB4RkYsMHg0NCwweDUxLDB4RTMsMHg0OCww
eEFGLDB4OEIsMHhFRiwweERCLAotICAgIDB4NDMsMHg1MSwweEUxLDB4NDgsMHgwMiwweDhBLDB4
QUEsMHg3RSwweDIzLDB4NDksMHhFMiwweDQwLDB4RUMsMHg1RSwweEJGLDB4RkYsCi0gICAgMHg0
MywweDUxLDB4RTIsMHg0MCwweEZCLDB4QjksMHhGNywweDJGLDB4NDMsMHg1MSwweDAyLDB4NDks
MHhGQiwweDhCLDB4MEYsMHhCRSwKLSAgICAweDQzLDB4NTEsMHgyMywweDQ5LDB4QzAsMHg0NCww
eEM2LDB4RTAsMHg2NCwweDUxLDB4MjMsMHg1MSwweEFELDB4NUQsMHhERiwweDU3LAotICAgIDB4
NDMsMHg1MSwweDAzLDB4NTEsMHgyRSwweEE4LDB4OEEsMHhFQiwweDQ0LDB4NTksMHgyMiwweDQ5
LDB4QjcsMHhBNywweEE3LDB4Q0YsCi0gICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEJBLDB4QUIs
MHg4QiwweEY5LDB4NjQsMHg1OSwweDAzLDB4NTEsMHg3RSwweEFBLDB4QTAsMHhBRSwKLSAgICAw
eDQzLDB4NTksMHgyMywweDUxLDB4M0IsMHhGQiwweDc1LDB4QUUsMHg2NCwweDU5LDB4MjMsMHg1
MSwweEYyLDB4NUYsMHhGRiwweEZBLAotICAgIDB4NDMsMHg1OSwweDIzLDB4NTEsMHgyQiwweDFC
LDB4MUUsMHg4QiwweDQ0LDB4NTksMHgwMywweDUxLDB4RUEsMHhGMCwweDVBLDB4NUIsCi0gICAg
MHg4NCwweDYxLDB4MDIsMHg1MSwweEZGLDB4QkQsMHgyRiwweEFELDB4NEEsMHg5QiwweEM1LDB4
NjEsMHgyRCwweDBELDB4MjksMHgwOSwKLSAgICAweEFCLDB4QTMsMHg2QSwweDlCLDB4MEQsMHgy
RCwweDJELDB4QTUsMHhBQiwweEEzLDB4NkEsMHg5QiwweEIwLDB4RkMsMHhGQywweDc3LAotICAg
IDB4OEIsMHg5QiwweDA5LDB4OEIsMHhBMCwweDYwLDB4N0UsMHg1RiwweDRBLDB4OUIsMHg4Nyww
eDgyLDB4QTAsMHhBQSwweDdCLDB4N0YsCi0gICAgMHgyOSwweDkzLDB4ODcsMHg3QSwweEEwLDB4
N0IsMHhERCwweDU1LDB4RTksMHg4QSwweDQ2LDB4NzIsMHhFOCwweEZBLDB4RUYsMHhGRiwKLSAg
ICAweEE4LDB4ODIsMHg0NiwweDcyLDB4QjAsMHhBQSwweEZGLDB4RjcsMHhBOCwweDdBLDB4NDYs
MHg3MiwweEUyLDB4Q0EsMHhGQSwweDdELAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhDQSww
eEVBLDB4QjgsMHg5NywweDg3LDB4N0EsMHg0NiwweDcyLDB4QTMsMHg4OCwweEUyLDB4N0IsCi0g
ICAgMHg4NywweDdBLDB4MjUsMHg3MiwweEMwLDB4RUEsMHhFQSwweDg5LDB4NjYsMHg3MiwweDI3
LDB4NzIsMHhBQSwweEJFLDB4QkIsMHhFRSwKLSAgICAweDY2LDB4NzIsMHgwNSwweDZBLDB4QkMs
MHhGQSwweEZFLDB4QUEsMHg2NiwweDcyLDB4MDUsMHg3MiwweEEwLDB4RTYsMHgyRiwweEFFLAot
ICAgIDB4NjYsMHg3MiwweDI2LDB4NzIsMHg4RiwweDIyLDB4MDAsMHgyOCwweEE4LDB4N0EsMHg0
NiwweDcyLDB4RDUsMHhENSwweDM1LDB4MkUsCi0gICAgMHhDOCwweDgyLDB4ODcsMHg3QSwweDM1
LDB4QTcsMHhFQSwweEE4LDB4QzgsMHg4MiwweDI2LDB4NzIsMHhBMCwweEFBLDB4RkEsMHg3RiwK
LSAgICAweDg3LDB4N0EsMHgwNSwweDZBLDB4QUMsMHhGRiwweDdGLDB4NzUsMHgyNiwweDcyLDB4
RTUsMHg2MSwweDc4LDB4QTgsMHhGMiwweEZBLAotICAgIDB4MjUsMHg2QSwweEU1LDB4NjksMHhE
RiwweDNGLDB4QkQsMHg2MiwweDA1LDB4NkEsMHhFNSwweDYxLDB4OEUsMHg4OCwweDkwLDB4QjAs
Ci0gICAgMHgyNiwweDZBLDB4RTUsMHg2OSwweERELDB4RjcsMHhGMywweEFFLDB4MjcsMHg3Miww
eEM0LDB4NjEsMHhGNywweEZGLDB4QkYsMHgyRSwKLSAgICAweDI2LDB4NzIsMHhDNSwweDYxLDB4
OUEsMHhERSwweEFBLDB4MDIsMHgyNiwweDcyLDB4QzUsMHg1OSwweDdFLDB4N0EsMHhGRSwweEVB
LAotICAgIDB4QzUsMHg2MSwweDI0LDB4NDksMHg3QywweDdBLDB4RjgsMHhFOCwweDQ1LDB4NDks
MHhBMiwweDMwLDB4NUUsMHg1RSwweEY4LDB4RjgsCi0gICAgMHhDMywweDMwLDB4NjEsMHgyOCww
eERGLDB4OUYsMHhCQywweDIwLDB4QTIsMHgzMCwweDgyLDB4MjgsMHgwMiwweEZFLDB4ODgsMHg4
OCwKLSAgICAweEUzLDB4MzgsMHg4MSwweDI4LDB4MkIsMHgyRiwweEJELDB4QjksMHgyNCwweDQx
LDB4QzIsMHgzMCwweEUyLDB4QUYsMHgyOSwweEJELAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAs
MHhGOCwweDc4LDB4N0MsMHg3QSwweEMyLDB4MzAsMHg4MiwweDMwLDB4QkMsMHgyRSwweDNFLDB4
RkMsCi0gICAgMHgyMywweDQxLDB4QTIsMHgzMCwweDJCLDB4MkQsMHg4RCwweDNGLDB4NDQsMHg0
MSwweDAzLDB4NDEsMHgzRiwweEIyLDB4QTIsMHg4MCwKLSAgICAweDY1LDB4NDksMHgyNCwweDQx
LDB4QzIsMHg4QSwweENCLDB4NUQsMHg2NCwweDQ5LDB4MjQsMHg0MSwweDVGLDB4N0IsMHhFRiww
eDhELAotICAgIDB4NjQsMHg0OSwweDI0LDB4NDEsMHhEQSwweDU2LDB4NUUsMHg3RSwweDI0LDB4
NDEsMHgwMywweDQxLDB4NTAsMHg3QSwweDc4LDB4MEEsCi0gICAgMHgyNCwweDQxLDB4RTMsMHgz
OCwweEFFLDB4QUYsMHhCRSwweEZDLDB4NjUsMHg0OSwweDAzLDB4MzksMHhGRiwweEZGLDB4Q0Ys
MHhBOSwKLSAgICAweDI0LDB4NDEsMHhBMiwweDI4LDB4RjgsMHhFQSwweEY4LDB4N0EsMHhDMiww
eDMwLDB4ODIsMHgyOCwweEEyLDB4OEEsMHhBRiwweEVELAotICAgIDB4QzIsMHgzMCwweDgyLDB4
MjgsMHgzQSwweDVFLDB4NTUsMHg1RiwweDA0LDB4MzksMHg4MiwweDI4LDB4ODIsMHhGQSwweEZE
LDB4NzUsCi0gICAgMHhDMywweDMwLDB4QTIsMHgzMCwweDAwLDB4MDIsMHhFMywweDg1LDB4MDMs
MHgzOSwweEMzLDB4MzAsMHgxNSwweEZELDB4QkQsMHgxRCwKLSAgICAweDA0LDB4MzksMHhDMyww
eDMwLDB4MjAsMHhBMiwweDdFLDB4NTcsMHhFMywweDM4LDB4QTIsMHgyOCwweEU4LDB4RkUsMHhG
RiwweEY3LAotICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhBMCwweDFFLDB4MzYsMHhCQSwweEUz
LDB4MzAsMHhBMiwweDI4LDB4RUMsMHhGRiwweEJCLDB4QkEsCi0gICAgMHgwMywweDM5LDB4QTIs
MHgyOCwweERGLDB4RjcsMHhGNSwweDNCLDB4MDMsMHgzOSwweEMzLDB4MzAsMHgyNSwweDI1LDB4
QUYsMHhCRiwKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4MkIsMHhBQSwweEVBLDB4N0YsMHgy
NCwweDM5LDB4QzIsMHgzMCwweDg4LDB4RTIsMHhGRiwweDc1LAotICAgIDB4MDMsMHgzOSwweEEy
LDB4MzAsMHhBMiwweEVBLDB4RUEsMHhGNywweEUzLDB4MzgsMHhDMiwweDMwLDB4RjgsMHhGMCww
eDJBLDB4MDcsCi0gICAgMHgwNCwweDM5LDB4QzMsMHgzMCwweERBLDB4RkUsMHhGNywweDVGLDB4
MDMsMHgzOSwweEMzLDB4MzgsMHhCRiwweEZGLDB4M0YsMHgzNSwKLSAgICAweDY0LDB4NDksMHhF
MywweDM4LDB4QkYsMHhGNSwweEJELDB4M0YsMHg4NSwweDUxLDB4MjQsMHg0MSwweEZGLDB4QjUs
MHgyRiwweDJBLAotICAgIDB4ODUsMHg0OSwweDIzLDB4NDEsMHhGRSwweEY4LDB4RUMsMHg2MCww
eDQ0LDB4NDksMHgwMywweDQxLDB4QUEsMHhFRSwweDc2LDB4N0IsCi0gICAgMHg2NSwweDQ5LDB4
MDMsMHgzOSwweDBBLDB4MkIsMHgyQiwweEI1LDB4ODUsMHg1MSwweDIzLDB4NDEsMHhFOCwweDVG
LDB4REUsMHg3RiwKLSAgICAweDQ0LDB4NDksMHgwMywweDM5LDB4QUEsMHg3MCwweEY4LDB4RkYs
MHgyMywweDQxLDB4RTMsMHgzOCwweEEwLDB4QjgsMHhGNiwweDVGLAotICAgIDB4MjMsMHg0MSww
eEMyLDB4MzAsMHg3OCwweEZBLDB4N0IsMHhGQiwweDAzLDB4MzksMHhDMiwweDMwLDB4MkIsMHhB
NSwweEZELDB4NUYsCi0gICAgMHgyMywweDQxLDB4QzIsMHgzMCwweDhBLDB4QUIsMHg5RiwweEY1
LDB4MDIsMHgzOSwweEMyLDB4MzAsMHg1QywweERGLDB4RkUsMHg3RSwKLSAgICAweDAzLDB4MzEs
MHhBMSwweDMwLDB4MjIsMHhCRiwweEJGLDB4RjksMHgyMywweDM5LDB4QzIsMHgzMCwweEE3LDB4
M0UsMHgwMiwweDhGLAotICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHhCNywweDM3LDB4MzUsMHg5
RCwweDQ0LDB4NDEsMHgwMywweDM5LDB4NUUsMHg1QywweDU4LDB4RkUsCi0gICAgMHg2NCwweDQ5
LDB4MDMsMHgzOSwweEFELDB4MkQsMHhBRCwweEZELDB4NDMsMHg0OSwweDIzLDB4NDEsMHhBNSww
eEE2LDB4RTgsMHg3RCwKLSAgICAweDg1LDB4NTEsMHhFMiwweDM4LDB4MkEsMHgzRiwweEI3LDB4
OTUsMHhDNiwweDUxLDB4NjQsMHg1MSwweEZELDB4QjIsMHhCQiwweEI5LAotICAgIDB4MDYsMHg2
MiwweEE1LDB4NTEsMHhCRCwweEFELDB4MkYsMHgyRiwweDQ3LDB4NkEsMHhDNSwweDYxLDB4QkYs
MHhBNywweDI3LDB4OEYsCi0gICAgMHhBOCwweDdBLDB4MDYsMHg2QSwweDVFLDB4N0UsMHhFQiww
eDgzLDB4NDcsMHg2QSwweEU1LDB4NjEsMHgzQiwweDc2LDB4RDcsMHhGOCwKLSAgICAweDY3LDB4
NzIsMHgyNiwweDZBLDB4RkQsMHhGNSwweDFGLDB4RjcsMHhDQywweDlCLDB4NDcsMHg3MiwweDJE
LDB4MzUsMHgzNSwweEI1LAotICAgIDB4NzIsMHhDRCwweDJFLDB4QUMsMHgwQiwweDBCLDB4MEIs
MHgyOSwweDkzLDB4RDUsMHhGMSwweEJDLDB4QzAsMHhFMCwweDYwLDB4NzAsCi0gICAgMHhGMSww
eEJDLDB4NEYsMHhBQywweERDLDB4QkUsMHhCRiwweEY3LDB4NTMsMHhDNSwweDkwLDB4QUMsMHgw
QiwweEFCLDB4RkYsMHg1RCwKLSAgICAweDUyLDB4QzUsMHhFRCwweDlCLDB4MjAsMHhCMiwweEZF
LDB4N0YsMHhEMCwweEI0LDB4MEUsMHg5QywweEU4LDB4RkEsMHg3RiwweDVELAotICAgIDB4NEYs
MHhBNCwweENELDB4OUIsMHg4OCwweEU4LDB4N0YsMHg1RiwweDBFLDB4QTQsMHg4RCwweDkzLDB4
RTgsMHhGQSwweEQ3LDB4REYsCi0gICAgMHhBRCwweDkzLDB4OEMsMHg4QiwweDAwLDB4ODIsMHhB
MiwweEQ2LDB4Q0QsMHg5MywweDhDLDB4OEIsMHhGRiwweDVGLDB4N0UsMHg3OCwKLSAgICAweEFE
LDB4OTMsMHg2QywweDhCLDB4MzYsMHhBRSwweEFFLDB4QUUsMHhFRSwweDlCLDB4NkMsMHg4Qiww
eDgyLDB4OEEsMHhBRiwweEE3LAotICAgIDB4RUUsMHg5QiwweDhDLDB4OEIsMHhFRiwweEI5LDB4
QUIsMHhFMCwweDJGLDB4QTQsMHg4QywweDhCLDB4QUIsMHgwQSwweEJCLDB4REYsCi0gICAgMHgw
RSwweDlDLDB4Q0QsMHg5MywweDcyLDB4NjgsMHg4QSwweDZCLDB4RUQsMHg5QiwweDZDLDB4ODMs
MHg4MiwweEE4LDB4RkEsMHg1RSwKLSAgICAweENELDB4OTMsMHg0QiwweDgzLDB4RTgsMHhFQSww
eDdCLDB4NUYsMHg0RiwweEE0LDB4NEIsMHg4MywweDJGLDB4MkQsMHgyRCwweEI1LAotICAgIDB4
OTAsMHhBQywweDJFLDB4QTQsMHg1NSwweEZBLDB4RUIsMHg4RiwweEFGLDB4QjQsMHg0RiwweEE0
LDB4QTcsMHgzRiwweEJGLDB4QkUsCi0gICAgMHgzMiwweEJELDB4QjAsMHhBQywweEVGLDB4RkYs
MHgyOSwweEE1LDB4NTMsMHhDNSwweDExLDB4QkQsMHhGNSwweDk1LDB4RjUsMHgyRCwKLSAgICAw
eDQzLDB4NTEsMHgyMywweDUxLDB4NTgsMHg3RiwweDNGLDB4RDUsMHg2NCwweDU5LDB4MDMsMHg1
MSwweEFFLDB4N0YsMHhFRiwweDgzLAotICAgIDB4NDQsMHg1MSwweDAyLDB4NDksMHhGQywweEJG
LDB4RkYsMHhEQSwweDIzLDB4NTEsMHgwMywweDQ5LDB4QkEsMHg1MCwweDU4LDB4NzMsCi0gICAg
MHgwMiwweDQ5LDB4QzIsMHg0MCwweEE4LDB4QTQsMHgzQSwweDAyLDB4NDMsMHg1MSwweEUyLDB4
NDAsMHhERiwweDdCLDB4RkEsMHhDRiwKLSAgICAweDQ0LDB4NTEsMHgwMywweDQ5LDB4QjUsMHgy
NSwweDM1LDB4RkYsMHg0NCwweDUxLDB4MjMsMHg0OSwweEJCLDB4RkEsMHg2MiwweDc3LAotICAg
IDB4NjQsMHg1MSwweDIzLDB4NTEsMHhEQSwweEVBLDB4RTIsMHg1OSwweDQ0LDB4NTEsMHgwMiww
eDUxLDB4RUEsMHg4MCwweDhBLDB4RkIsCi0gICAgMHg0MywweDUxLDB4MDMsMHg0OSwweEZCLDB4
QUUsMHg4RiwweDA2LDB4NjQsMHg1OSwweDIzLDB4NTEsMHhFRCwweDg1LDB4QkQsMHgzQSwKLSAg
ICAweDY0LDB4NTksMHgyMywweDUxLDB4RUYsMHhBOCwweDkyLDB4QTYsMHg4NCwweDYxLDB4MjMs
MHg1MSwweEZGLDB4RjMsMHg2RiwweDY1LAotICAgIDB4ODQsMHg1OSwweDIzLDB4NTEsMHhGRiww
eEVFLDB4Q0IsMHhBOSwweDY0LDB4NTksMHgyMywweDUxLDB4RkUsMHhBQiwweEM1LDB4RDUsCi0g
ICAgMHg0NCwweDU5LDB4MDMsMHg1MSwweEVBLDB4NjIsMHg2QSwweDk0LDB4MjMsMHg1OSwweDAy
LDB4NDksMHhGRiwweEVELDB4QUEsMHhBQSwKLSAgICAweEE0LDB4NjEsMHgwMiwweDUxLDB4QkQs
MHgzNSwweDI3LDB4M0QsMHg4QiwweDlCLDB4MjYsMHg3MiwweDI5LDB4MDksMHgwQiwweDJCLAot
ICAgIDB4OEEsMHg5QiwweDRBLDB4OTMsMHhDMCwweDgyLDB4QTAsMHg5MiwweDZBLDB4OUIsMHgw
OSwweDhCLDB4MDAsMHg4MiwweEUyLDB4NkEsCi0gICAgMHgyQSwweDkzLDB4ODcsMHg3QSwweDgw
LDB4RTgsMHg3QSwweDc2LDB4MDksMHg4QiwweDY3LDB4NzIsMHhGOCwweEZGLDB4NzcsMHg3RCwK
LSAgICAweEE4LDB4N0EsMHg0NiwweDcyLDB4RkMsMHhEOCwweEVBLDB4QkYsMHg4NywweDdBLDB4
MjYsMHg3MiwweEFFLDB4RUIsMHhERSwweEU0LAotICAgIDB4NDUsMHg4MiwweDY3LDB4NzIsMHg1
RiwweERELDB4RDcsMHg3NSwweDg3LDB4N0EsMHg0NiwweDcyLDB4QTYsMHg4MiwweEY4LDB4OEQs
Ci0gICAgMHg4NywweDdBLDB4NDYsMHg3MiwweEJDLDB4OEEsMHhCMCwweDFBLDB4ODcsMHg3QSww
eDQ2LDB4NzIsMHg2RiwweDhGLDB4QkUsMHhGRiwKLSAgICAweDg3LDB4N0EsMHg2NywweDcyLDB4
NzUsMHhCNywweDZFLDB4RjIsMHg2NiwweDcyLDB4MjUsMHg3MiwweEE4LDB4MTAsMHhBQywweDBG
LAotICAgIDB4NjcsMHg3QSwweDQ2LDB4NzIsMHg2NSwweDdGLDB4QTMsMHhCQSwweDY2LDB4NzIs
MHgyNiwweDZBLDB4REYsMHhCQSwweDY4LDB4NkEsCi0gICAgMHg2NiwweDcyLDB4MjUsMHg3Miww
eEFFLDB4M0UsMHgzMiwweDJBLDB4QzgsMHg4MiwweDY3LDB4N0EsMHhBNSwweEE3LDB4MkYsMHg2
QiwKLSAgICAweEE4LDB4ODIsMHgyNSwweDZBLDB4ODAsMHhBOCwweEZFLDB4NTUsMHg2NywweDdB
LDB4QzQsMHg2OSwweEUwLDB4RTAsMHhGQiwweEZGLAotICAgIDB4MjUsMHg2QSwweEU1LDB4Njks
MHhFRSwweDYyLDB4N0EsMHg1RSwweDA1LDB4NkEsMHhDNSwweDYxLDB4MzAsMHhCQSwweEJGLDB4
RkQsCi0gICAgMHgyNiwweDZBLDB4QzQsMHg2MSwweDJBLDB4RkYsMHhGRiwweDdFLDB4MDYsMHg2
QSwweEM1LDB4NjEsMHhCRSwweEVCLDB4QUUsMHg5RiwKLSAgICAweDI2LDB4NkEsMHhFNSwweDY5
LDB4RkYsMHhCQiwweDhCLDB4QUYsMHg0NiwweDcyLDB4MDYsMHg2QSwweEQ1LDB4RkYsMHhFQSww
eEZELAotICAgIDB4NDcsMHg3MiwweDA2LDB4NkEsMHhGOSwweEE5LDB4QUQsMHhBRiwweDQ3LDB4
NzIsMHhFNiwweDY5LDB4NkUsMHg3QSwweEE4LDB4MjIsCi0gICAgMHgyNiwweDZBLDB4NjQsMHg1
MSwweDdFLDB4N0EsMHg3OCwweDY4LDB4NDQsMHg0OSwweEMzLDB4MzgsMHhEOCwweDdCLDB4N0Es
MHg3OCwKLSAgICAweEUzLDB4MzgsMHg4MiwweDMwLDB4QzIsMHhDQSwweDdBLDB4N0UsMHhBMiww
eDMwLDB4ODEsMHgyOCwweEMyLDB4NjMsMHhGQSwweEFCLAotICAgIDB4QzEsMHgzMCwweDgyLDB4
MjgsMHhBRCwweEJELDB4RjcsMHhGRiwweDAzLDB4NDEsMHhBMiwweDMwLDB4QUIsMHgyQSwweDBG
LDB4MzksCi0gICAgMHgwMywweDM5LDB4RTMsMHgzOCwweDVGLDB4OTYsMHhENCwweDdFLDB4RTIs
MHgzOCwweEEyLDB4MzAsMHg1NiwweDc0LDB4QUEsMHhFMiwKLSAgICAweDY0LDB4NDksMHhBMiww
eDMwLDB4QjUsMHgyOSwweDJCLDB4MkIsMHg0NCwweDQ5LDB4RTMsMHgzOCwweEVBLDB4RTAsMHhF
MCwweDYwLAotICAgIDB4MDMsMHg0MSwweEUzLDB4MzgsMHgyMCwweDk2LDB4M0UsMHg3NiwweDY1
LDB4NDksMHhFMywweDM4LDB4MkEsMHhGRSwweEVGLDB4RjUsCi0gICAgMHg2NCwweDQ5LDB4RTMs
MHgzOCwweEVDLDB4RkIsMHhGRiwweEQ3LDB4MjQsMHg0MSwweEMyLDB4MzAsMHgwOCwweDgwLDB4
QkMsMHg1NywKLSAgICAweDIzLDB4NDEsMHhDMywweDMwLDB4QkUsMHhGNiwweEFGLDB4MkIsMHg0
NCwweDQxLDB4QzMsMHgzMCwweDJBLDB4QUIsMHg4RSwweDVFLAotICAgIDB4MDQsMHgzOSwweEEy
LDB4MjgsMHg3OCwweDVDLDB4N0UsMHg1RiwweEUzLDB4MjgsMHg4MiwweDI4LDB4RjUsMHhCRiww
eEZGLDB4RDcsCi0gICAgMHhBMiwweDI4LDB4NjEsMHgyMCwweEUwLDB4RTAsMHhGMCwweEU2LDB4
QTIsMHgyOCwweDYxLDB4MjAsMHgwRiwweEJELDB4QkQsMHgwQiwKLSAgICAweEUzLDB4MzAsMHhB
MiwweDI4LDB4RDUsMHhCRCwweEJELDB4OEEsMHhFMywweDMwLDB4QTIsMHgyOCwweDgyLDB4RUEs
MHg3QSwweDY4LAotICAgIDB4ODEsMHgzMCwweEMyLDB4MjgsMHhGRiwweEZBLDB4RUIsMHg3QSww
eEMyLDB4MzAsMHhBMiwweDI4LDB4QkYsMHhCNSwweDI1LDB4MDUsCi0gICAgMHhFMywweDMwLDB4
QTIsMHgyOCwweEEzLDB4RkIsMHhBRiwweDI3LDB4QzIsMHgzMCwweEEyLDB4MjgsMHhBRSwweENG
LDB4ODgsMHgwOCwKLSAgICAweEUzLDB4MzAsMHhDMywweDMwLDB4MDIsMHhBOSwweDc1LDB4MkQs
MHgwNCwweDM5LDB4QzIsMHgzMCwweERGLDB4OEIsMHhFQiwweERGLAotICAgIDB4QzMsMHgzOCww
eEUzLDB4MzAsMHhGRCwweEY1LDB4RkYsMHhBRCwweDA0LDB4MzksMHhDMiwweDMwLDB4NUYsMHg3
RCwweEFELDB4MkIsCi0gICAgMHhFMywweDM4LDB4QzIsMHgzMCwweDU1LDB4NjEsMHg1QiwweEY4
LDB4RTMsMHgzOCwweEMyLDB4MzAsMHgyOSwweDgxLDB4RDcsMHhGMiwKLSAgICAweEUzLDB4Mzgs
MHhDMiwweDMwLDB4RDYsMHg3RiwweDg5LDB4MkIsMHgwMywweDM5LDB4QzMsMHgzMCwweDE1LDB4
MTUsMHhEQSwweEYyLAotICAgIDB4ODUsMHg1MSwweEUzLDB4MzgsMHhBRCwweDJGLDB4MkQsMHhC
RCwweDg1LDB4NTEsMHg2NSwweDQ5LDB4NTUsMHg3RiwweEYyLDB4N0IsCi0gICAgMHg4NSwweDUx
LDB4MjMsMHg0MSwweEUyLDB4RTIsMHhFQSwweDYyLDB4NDQsMHg0OSwweDAzLDB4MzksMHhGMiww
eDQ4LDB4NEEsMHg3QiwKLSAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4MkYsMHgyRiwweEU3LDB4
RjcsMHg0NCwweDQ5LDB4MjQsMHg0MSwweDcyLDB4NkEsMHg1MywweDk1LAotICAgIDB4MjMsMHg0
MSwweEMyLDB4MzgsMHhGQSwweERGLDB4RUUsMHhCQSwweDAzLDB4NDEsMHhDMiwweDMwLDB4N0Us
MHhFQSwweEFBLDB4QTgsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDBGLDB4QjUsMHhENSww
eEJCLDB4MDMsMHgzOSwweEMyLDB4MzAsMHg3RSwweEQ3LDB4RjYsMHhDQSwKLSAgICAweDAzLDB4
MzksMHhDMiwweDMwLDB4M0YsMHgzRSwweDI3LDB4MkUsMHgyMywweDM5LDB4RTIsMHgzMCwweDc3
LDB4RkYsMHhBQiwweEJDLAotICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHhGRCwweDdFLDB4Nzgs
MHhGOCwweDIzLDB4MzksMHhDMiwweDMwLDB4OEIsMHgwRiwweDJELDB4MkIsCi0gICAgMHgyMyww
eDM5LDB4MDMsMHgzOSwweEQzLDB4MkYsMHhGRCwweDlCLDB4MjMsMHgzOSwweEUyLDB4MzgsMHhG
OCwweEYwLDB4RTgsMHg2QSwKLSAgICAweDIzLDB4NDEsMHhDMiwweDMwLDB4MDIsMHg4QSwweDBC
LDB4ODksMHg0MywweDQxLDB4MDMsMHgzOSwweDlGLDB4QjUsMHhBNSwweDJCLAotICAgIDB4NDQs
MHg0OSwweDAzLDB4MzksMHgzNSwweEJCLDB4QUEsMHhBMywweEE1LDB4NTksMHg0NCwweDQ5LDB4
M0YsMHgzRCwweERELDB4MzcsCi0gICAgMHgyNiwweDYyLDB4ODUsMHg1MSwweEI3LDB4QkYsMHg5
NywweDM3LDB4NjcsMHg3MiwweDA2LDB4NjIsMHhDRCwweEVELDB4QTUsMHhCRSwKLSAgICAweDg4
LDB4NzIsMHg0NiwweDZBLDB4QTksMHgyOSwweEVELDB4RjUsMHg4NywweDcyLDB4RTUsMHg2MSww
eEZBLDB4RTgsMHhFOCwweDVBLAotICAgIDB4NDcsMHg2QSwweEM1LDB4NTksMHhBMCwweEVFLDB4
N0UsMHg1RSwweDZCLDB4OTMsMHhFNSwweDYxLDB4M0YsMHgzRCwweEJELDB4QjUsCi0gICAgMHg3
MywweENELDB4RUQsMHhBMywweDJCLDB4MDksMHgyOSwweDA5LDB4OTMsMHhENSwweDZGLDB4QUMs
MHhFMCwweDcwLDB4NzgsMHg3OCwKLSAgICAweEIwLDB4QjQsMHg0RiwweEFDLDB4QUYsMHgzNyww
eDdGLDB4N0QsMHg5MCwweEFDLDB4RUQsMHg5QiwweEEwLDB4QTgsMHhGQSwweEQ3LAotICAgIDB4
NEYsMHhBNCwweEVFLDB4OUIsMHhDMiwweDdGLDB4NTcsMHg3NywweDBFLDB4OUMsMHhBRCwweDkz
LDB4QTIsMHhFQSwweEYyLDB4NUUsCi0gICAgMHhFRSwweDlCLDB4QUQsMHg5MywweDdFLDB4NkEs
MHg3QSwweDU0LDB4QUQsMHg5MywweDZELDB4OEIsMHhCMCwweEU4LDB4QTIsMHhBMCwKLSAgICAw
eEFELDB4OTMsMHg2QywweDhCLDB4RUEsMHhFQSwweDhCLDB4MEYsMHhDRCwweDkzLDB4OEMsMHg4
QiwweDdELDB4QTksMHg3RCwweDVFLAotICAgIDB4QUQsMHg5MywweDZDLDB4OEIsMHhCNiwweEVG
LDB4QUEsMHgyMiwweENELDB4OTMsMHg4QywweDhCLDB4MDUsMHgwRCwweEZGLDB4RkYsCi0gICAg
MHgwRSwweDlDLDB4OEMsMHg4QiwweDgyLDB4QkEsMHg1QiwweDdGLDB4QUQsMHg5MywweDBBLDB4
N0IsMHgyMCwweDg4LDB4QTgsMHg1RSwKLSAgICAweENELDB4OTMsMHgyQiwweDdCLDB4MDAsMHhB
QSwweDZGLDB4NzUsMHg4QywweDgzLDB4MEEsMHg3QiwweEJDLDB4RkUsMHg3RiwweEQ3LAotICAg
IDB4NkMsMHg4MywweDBCLDB4N0IsMHhCQywweEI3LDB4RkQsMHhCNSwweEFELDB4OTMsMHgwQiww
eDdCLDB4MkYsMHhCRiwweEJGLDB4NTUsCi0gICAgMHg0RiwweEFDLDB4NkMsMHg4QiwweDBBLDB4
MkYsMHhGRiwweDU1LDB4NkYsMHhBQywweEFELDB4OEIsMHgyMCwweDhBLDB4QUYsMHhCRCwKLSAg
ICAweDExLDB4QkQsMHgwRSwweDlDLDB4MkIsMHgyQiwweEJGLDB4QjUsMHgzMiwweEM1LDB4OTAs
MHhBQywweDAyLDB4MDAsMHgwRSwweEE1LAotICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHg5OCww
eEUwLDB4RUMsMHhCRiwweDY0LDB4NTEsMHgwMiwweDQ5LDB4OEIsMHhGOSwweEZGLDB4QkYsCi0g
ICAgMHg0MywweDUxLDB4MDIsMHg0OSwweDZCLDB4RjIsMHg1QSwweDVCLDB4MjMsMHg0OSwweEUx
LDB4NDAsMHhGOCwweEJBLDB4QUQsMHg4MiwKLSAgICAweDIzLDB4NDksMHhFMiwweDQ4LDB4QTMs
MHgwMCwweEEyLDB4OUUsMHg0NCwweDUxLDB4MDMsMHg0OSwweDZGLDB4RDYsMHhBNywweDI1LAot
ICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHhGNSwweDA5LDB4MzYsMHhBQSwweDY0LDB4NTEsMHgy
MywweDQ5LDB4RUYsMHhCRSwweDdBLDB4NzgsCi0gICAgMHg0NCwweDUxLDB4MDMsMHg0OSwweEJC
LDB4N0UsMHg1NiwweERBLDB4NDMsMHg1MSwweDAzLDB4NDksMHhGRiwweEZGLDB4QkUsMHhCNywK
LSAgICAweDY0LDB4NTksMHgwMiwweDQ5LDB4MkYsMHgyNywweEEzLDB4QUEsMHg2NCwweDU5LDB4
MjMsMHg1MSwweEEwLDB4RjcsMHhFNSwweDc3LAotICAgIDB4NjQsMHg1OSwweDAzLDB4NDksMHhC
RSwweEFGLDB4QUYsMHg4RiwweDQ0LDB4NTksMHgwMywweDUxLDB4QUUsMHhFRSwweEY0LDB4QUMs
Ci0gICAgMHg0NCwweDU5LDB4MjMsMHg1MSwweDAxLDB4RUEsMHgwQiwweDA5LDB4NDQsMHg1OSww
eEUyLDB4NDgsMHg2RSwweEU4LDB4RTgsMHhFOCwKLSAgICAweDQzLDB4NTksMHhFMiwweDQ4LDB4
RUUsMHhFMiwweEZCLDB4REYsMHgyMywweDUxLDB4MDMsMHg1MSwweDIxLDB4REIsMHhGQSwweEZE
LAotICAgIDB4MjYsMHg3MiwweDIzLDB4NTEsMHg5NSwweEI1LDB4MzUsMHgzNSwweDRBLDB4OUIs
MHg4NywweDgyLDB4MDEsMHgwQiwweDA5LDB4MDMsCi0gICAgMHg2QSwweDlCLDB4MDksMHg5Myww
eDJBLDB4RkEsMHhGQSwweDdFLDB4NkEsMHg5QiwweDg3LDB4N0EsMHhBOCwweEVFLDB4N0UsMHg3
RSwKLSAgICAweEM4LDB4N0EsMHg2NywweDdBLDB4RjgsMHhGRSwweEVDLDB4RDYsMHg4NywweDdB
LDB4NDYsMHg3MiwweEJFLDB4QkMsMHg3RSwweDYyLAotICAgIDB4ODcsMHg3QSwweDQ3LDB4NzIs
MHhCRiwweEIyLDB4RkEsMHhGRiwweDg3LDB4N0EsMHgyNiwweDcyLDB4MjgsMHhFQSwweDM1LDB4
MEIsCi0gICAgMHg4NywweDdBLDB4NDYsMHg3MiwweDQ4LDB4MkEsMHhGQSwweEZBLDB4ODcsMHg3
QSwweDI2LDB4NzIsMHgwQiwweDhBLDB4OEEsMHhBNywKLSAgICAweDg3LDB4N0EsMHgyNSwweDcy
LDB4QjgsMHhCNiwweEI2LDB4RUEsMHg4NywweDdBLDB4NDYsMHg3MiwweEZDLDB4RkYsMHhGRiww
eDFFLAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhDOSwweDYzLDB4NzgsMHg2QiwweDg3LDB4
NzIsMHgyNSwweDcyLDB4MkYsMHhFRiwweEZFLDB4N0YsCi0gICAgMHg2NiwweDdBLDB4MjYsMHg2
QSwweEIzLDB4RUYsMHhDQiwweDhCLDB4NjcsMHg3QSwweDQ2LDB4NzIsMHhCNywweENGLDB4QUYs
MHgyMiwKLSAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4ODksMHhBQSwweDIzLDB4QUQsMHhBNyww
eDdBLDB4NDYsMHg3MiwweEEzLDB4RUEsMHhGQiwweEZELAotICAgIDB4NjcsMHg3MiwweDA1LDB4
NkEsMHg1RSwweDU4LDB4RkUsMHg3QSwweDI2LDB4NzIsMHhFNSwweDY5LDB4NzcsMHg1NiwweDU1
LDB4ODksCi0gICAgMHgwNiwweDZBLDB4QzUsMHg2MSwweEZFLDB4OEUsMHhGQiwweDdFLDB4MDUs
MHg2QSwweEM1LDB4NjEsMHhFQSwweDVDLDB4NTUsMHg1NSwKLSAgICAweDA1LDB4NkEsMHhDNSww
eDYxLDB4RTIsMHhBMiwweEY5LDB4RkYsMHgwNSwweDZBLDB4QzQsMHg2MSwweEI3LDB4QkYsMHhC
RiwweEJGLAotICAgIDB4MDUsMHg2QSwweEU1LDB4NjEsMHgyNywweDE4LDB4MDgsMHgwRiwweDY2
LDB4NzIsMHgwNiwweDZBLDB4NUYsMHhGMywweEZELDB4RkQsCi0gICAgMHg0NywweDcyLDB4MDYs
MHg2QSwweEJGLDB4RkUsMHg2QiwweDJBLDB4NDcsMHg3MiwweDI2LDB4NkEsMHhFQiwweEFBLDB4
MkUsMHhBQSwKLSAgICAweDI2LDB4NkEsMHhBNCwweDU5LDB4NzAsMHhFMCwweDAwLDB4MDAsMHhF
NSwweDYxLDB4RTIsMHgzOCwweDVGLDB4N0EsMHg3OCwweEYwLAotICAgIDB4RTIsMHgzOCwweDgy
LDB4MjgsMHhGQSwweEZDLDB4RkEsMHg3OCwweEEyLDB4MzAsMHg4MSwweDI4LDB4QzMsMHg4QSww
eDBGLDB4M0YsCi0gICAgMHhFMiwweDMwLDB4ODEsMHgyOCwweEJELDB4MkQsMHgwQiwweDJBLDB4
MDIsMHgzOSwweEExLDB4MzAsMHgzQSwweDNFLDB4RkEsMHhEQSwKLSAgICAweDAzLDB4MzksMHhD
MiwweDM4LDB4RkEsMHhGRSwweEJGLDB4QTEsMHgwMywweDM5LDB4QzIsMHgzOCwweDVGLDB4RDQs
MHhENiwweEZCLAotICAgIDB4NjQsMHg0OSwweEMyLDB4MzgsMHhBOSwweDJELDB4MkQsMHg4OSww
eDY1LDB4NDksMHhFMiwweDM4LDB4NzAsMHg2QSwweEYwLDB4N0UsCi0gICAgMHgwMywweDM5LDB4
QzIsMHgzMCwweDVFLDB4RUEsMHhGQSwweDdBLDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyOSwweEVF
LDB4QkIsMHhBNSwKLSAgICAweDI0LDB4NDEsMHhDMiwweDMwLDB4QUUsMHhDQiwweDU3LDB4NTUs
MHhFMywweDM4LDB4QTIsMHgyOCwweEFBLDB4QkEsMHhGQSwweEZGLAotICAgIDB4MjQsMHg0MSww
eEMyLDB4MzAsMHgyQiwweDJELDB4QUIsMHhBRCwweDI0LDB4MzksMHhBMiwweDI4LDB4NzgsMHhG
OCwweEZFLDB4RkUsCi0gICAgMHhFMywweDMwLDB4ODIsMHgyOCwweEYyLDB4RjgsMHhGQywweDdG
LDB4QTIsMHgyOCwweDYyLDB4MjAsMHhFQywweEY2LDB4RkYsMHhGNywKLSAgICAweDYzLDB4Mjgs
MHhBMiwweDIwLDB4QkUsMHhGQSwweEVCLDB4NkUsMHhFMywweDMwLDB4ODIsMHgyOCwweEI1LDB4
MkQsMHgyRiwweDNGLAotICAgIDB4MDQsMHgzOSwweEEyLDB4MjgsMHhBQSwweEEwLDB4NzIsMHg2
QSwweEMzLDB4MjgsMHg4MiwweDI4LDB4ODAsMHhBQSwweEZCLDB4RjcsCi0gICAgMHhBMiwweDI4
LDB4ODIsMHgyMCwweDJCLDB4MkYsMHhCQSwweDJDLDB4QzIsMHgyOCwweEEyLDB4MjgsMHhFNSww
eEQ1LDB4QUQsMHhGOSwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RkYsMHhGQiwweDNFLDB4
MjksMHhFMywweDMwLDB4QTIsMHgyOCwweDBFLDB4MkYsMHgyQywweEFBLAotICAgIDB4RTMsMHgz
MCwweEMyLDB4MzAsMHhCRiwweDBCLDB4RUEsMHg2QSwweEUzLDB4MzgsMHhBMiwweDI4LDB4MkUs
MHhBRiwweEZGLDB4RkYsCi0gICAgMHhFMywweDMwLDB4QTIsMHgzMCwweDA4LDB4OEEsMHhBQiww
eDJGLDB4MDMsMHgzOSwweEUzLDB4MzAsMHhBRiwweEZCLDB4RjcsMHhGRSwKLSAgICAweEUzLDB4
MzgsMHhDMywweDMwLDB4RjgsMHhFQywweENBLDB4NzAsMHgyNCwweDM5LDB4QzIsMHgzMCwweEZC
LDB4Q0IsMHg3OSwweDc1LAotICAgIDB4RTMsMHgzOCwweEMzLDB4MzAsMHgzNywweEI1LDB4RDUs
MHgzNSwweDAzLDB4MzksMHhDMywweDMwLDB4QTIsMHhCRiwweEJGLDB4RjcsCi0gICAgMHg0NCww
eDQxLDB4RTMsMHgzOCwweDBELDB4M0QsMHg5RiwweERGLDB4NDQsMHg0OSwweEUzLDB4MzgsMHgw
MiwweEEzLDB4QkYsMHg3RCwKLSAgICAweDY0LDB4NDksMHgwMywweDM5LDB4RTIsMHhGRiwweEQ3
LDB4REQsMHgyNCwweDQxLDB4RTMsMHgzOCwweEFFLDB4RkUsMHhCQSwweEY5LAotICAgIDB4MDMs
MHgzOSwweEEyLDB4MzgsMHhCOCwweEE4LDB4QTgsMHg4OCwweDIzLDB4NDEsMHhFMywweDM4LDB4
MkEsMHhBRiwweEFCLDB4QUIsCi0gICAgMHgwMywweDQxLDB4RTMsMHgzOCwweEE1LDB4QUEsMHhF
QiwweDYyLDB4NDQsMHg0MSwweEUyLDB4MzgsMHg3NywweEFGLDB4MEYsMHhFRSwKLSAgICAweDAz
LDB4MzksMHhBMiwweDMwLDB4OUEsMHg5OCwweEEwLDB4RTIsMHgwMywweDM5LDB4QzIsMHgzMCww
eEU4LDB4RkEsMHhBNywweEQ1LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBQywweDdFLDB4
MTcsMHg5NSwweDAzLDB4MzksMHhFMiwweDMwLDB4RTAsMHhBRCwweDJELDB4MkUsCi0gICAgMHgy
MywweDM5LDB4QzIsMHgzMCwweERCLDB4N0YsMHhGRSwweEU4LDB4MjMsMHgzOSwweEMyLDB4MzAs
MHgyRiwweDBELDB4QkYsMHhFRiwKLSAgICAweDY0LDB4NDEsMHgwMywweDM5LDB4NjYsMHhFQSww
eEEzLDB4OEQsMHg0MywweDQxLDB4RTIsMHgzMCwweDdGLDB4RUEsMHhBQSwweEY4LAotICAgIDB4
NDMsMHg0MSwweEUyLDB4MzAsMHgyRCwweDM1LDB4RkIsMHhGRiwweDY0LDB4NDksMHgwMiwweDM5
LDB4QUUsMHgyQiwweDAxLDB4MkIsCi0gICAgMHg4NCwweDUxLDB4MjMsMHg0MSwweEFELDB4QkUs
MHgyRSwweDA4LDB4QTUsMHg1MSwweDY0LDB4NDksMHg5NiwweEYyLDB4RTAsMHg4MiwKLSAgICAw
eDI2LDB4NjIsMHg4NCwweDUxLDB4MzcsMHhFRCwweEY1LDB4NTcsMHgyNiwweDZBLDB4ODQsMHg1
MSwweDgwLDB4RTIsMHhGQiwweDdFLAotICAgIDB4NDcsMHg2QSwweDg0LDB4NTEsMHg4MiwweEFC
LDB4RjcsMHhENSwweDI2LDB4NkEsMHhDNSwweDU5LDB4RjgsMHhGRSwweDdGLDB4QUQsCi0gICAg
MHgwNiwweDYyLDB4QTQsMHg1OSwweEE4LDB4RkYsMHg5RCwweEFELDB4QzksMHg3QSwweEU2LDB4
NjEsMHgxNSwweDM1LDB4OUQsMHhGNSwKLSAgICAweDUyLDB4Q0QsMHhFQSwweDdBLDB4MEIsMHgw
QiwweDA5LDB4MkQsMHg1MiwweENELDB4OEYsMHhBQywweDc4LDB4NzgsMHg3OCwweDU4LAotICAg
IDB4QjAsMHhCNCwweDRFLDB4QTQsMHg2QiwweDcwLDB4QzIsMHhBOCwweDRGLDB4QUMsMHhBRCww
eDhCLDB4RkUsMHhGRSwweDVFLDB4N0MsCi0gICAgMHhFRSwweDlCLDB4OEMsMHg4QiwweDBBLDB4
QTcsMHhENSwweDU3LDB4Q0QsMHg5MywweDZDLDB4OEIsMHhBOCwweEVCLDB4RUQsMHhGRiwKLSAg
ICAweENELDB4OTMsMHg2QywweDhCLDB4QkMsMHhCQywweEFFLDB4QTksMHhDRCwweDkzLDB4OEQs
MHg4QiwweEZCLDB4N0UsMHhBQiwweDJBLAotICAgIDB4Q0UsMHg5MywweDhDLDB4OEIsMHhFNSww
eEZELDB4QkYsMHgzRiwweEVFLDB4OUIsMHg4QywweDhCLDB4REYsMHg3NSwweEI1LDB4QUUsCi0g
ICAgMHhDRCwweDkzLDB4OEMsMHg4QiwweEVELDB4OEIsMHgwMCwweEEwLDB4QUMsMHg4QiwweDRD
LDB4ODMsMHhBMiwweDY4LDB4QUEsMHg3QiwKLSAgICAweEFDLDB4OEIsMHgyQiwweDdCLDB4OEEs
MHg2QSwweEVBLDB4N0YsMHg0QiwweDgzLDB4RUEsMHg3MiwweEIwLDB4RDAsMHhGOCwweEVFLAot
ICAgIDB4MkIsMHg3QiwweEVBLDB4NzIsMHg4QSwweEY2LDB4QTYsMHgxNSwweDJCLDB4N0IsMHhF
QSwweDcyLDB4MjgsMHhCMCwweDkyLDB4QjUsCi0gICAgMHg0QywweDgzLDB4RUEsMHg3MiwweDJF
LDB4QTksMHg1RiwweDVGLDB4NEIsMHg4MywweEM5LDB4NzIsMHhFOCwweEZBLDB4RkUsMHhGQiwK
LSAgICAweDhDLDB4OEIsMHhFQSwweDdBLDB4MkYsMHgyRCwweDJCLDB4MkYsMHhDRCwweDkzLDB4
NkMsMHg4QiwweDNGLDB4OTUsMHg3NywweEZGLAotICAgIDB4MkUsMHhBNCwweDhELDB4OEIsMHgw
QSwweDJGLDB4MzUsMHhBRCwweEQxLDB4QjQsMHgwRSwweDlDLDB4MEIsMHhCRCwweEZGLDB4NzUs
Ci0gICAgMHg0MywweDUxLDB4RTMsMHg0OCwweDhFLDB4QTksMHhBQSwweEJBLDB4NDMsMHg1MSww
eDIzLDB4NDksMHhFNSwweDVGLDB4NUYsMHg3RSwKLSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4
QUIsMHhBQSwweDlBLDB4OEUsMHg0NCwweDUxLDB4RTEsMHg0MCwweDhGLDB4RUIsMHg3RiwweEZG
LAotICAgIDB4NDMsMHg1MSwweEUxLDB4NDAsMHgyRiwweDBCLDB4MkYsMHhCRCwweDQzLDB4NTEs
MHgwMiwweDQ5LDB4MkUsMHhBQywweEFFLDB4RTYsCi0gICAgMHg0MywweDUxLDB4MDIsMHg0OSww
eDA4LDB4QUUsMHhENiwweDdELDB4NDMsMHg1MSwweEUyLDB4NDAsMHhFMCwweDlBLDB4RkIsMHhG
QiwKLSAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4RUEsMHhCQiwweDdELDB4MkQsMHg2NCwweDU5
LDB4MDIsMHg0OSwweDNCLDB4QjksMHg4OSwweEEyLAotICAgIDB4NjQsMHg1OSwweDIzLDB4NTEs
MHhBQiwweEVFLDB4RjcsMHg3NiwweDQzLDB4NTEsMHgyMywweDUxLDB4RDQsMHhEQiwweEMyLDB4
MDMsCi0gICAgMHg0NCwweDU5LDB4MjMsMHg1MSwweEFELDB4QUQsMHgzMSwweDNGLDB4NDQsMHg1
MSwweDAzLDB4NTEsMHhCOCwweDlDLDB4REEsMHhFOCwKLSAgICAweDQzLDB4NTEsMHgwMywweDUx
LDB4REEsMHhEMywweDdBLDB4RkEsMHg0NCwweDU5LDB4MDMsMHg1MSwweEI4LDB4RUEsMHg3Qiww
eERGLAotICAgIDB4RTMsMHg1MCwweDAyLDB4NDksMHhGNywweEZDLDB4NTcsMHg3NywweDIzLDB4
NTEsMHhFMywweDQ4LDB4OEYsMHhGQSwweEVFLDB4RjIsCi0gICAgMHg2NywweDdBLDB4MDMsMHg1
MSwweDM1LDB4M0QsMHgzNSwweDM1LDB4NkIsMHg5QiwweEM5LDB4OEEsMHgyOSwweDA5LDB4MkIs
MHhBQiwKLSAgICAweDRBLDB4OTMsMHhDOCwweDhBLDB4NjIsMHhGQSwweEU4LDB4NkYsMHhDOCww
eDgyLDB4ODgsMHg3QSwweEUwLDB4RTgsMHhGQSwweEFDLAotICAgIDB4QTgsMHg3QSwweDY3LDB4
N0EsMHhEOCwweEYyLDB4RUEsMHhCQSwweEE3LDB4N0EsMHg2NywweDdBLDB4NUYsMHhGRSwweDY4
LDB4RUMsCi0gICAgMHg4NywweDdBLDB4NDYsMHg3MiwweDZBLDB4NjIsMHhDQSwweEEyLDB4ODcs
MHg3QSwweDQ3LDB4NzIsMHhFOSwweEJFLDB4M0IsMHhGOSwKLSAgICAweDg3LDB4N0EsMHg0Niww
eDcyLDB4RUIsMHg3MCwweEUwLDB4RTgsMHg4NywweDdBLDB4NDYsMHg3MiwweDNBLDB4QzAsMHhG
QSwweDNGLAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhFQywweEVFLDB4QTYsMHhGRiwweDg3
LDB4N0EsMHg0NiwweDcyLDB4QUUsMHhFQiwweEFELDB4QkYsCi0gICAgMHg4NywweDcyLDB4MjUs
MHg2QSwweEYyLDB4NkUsMHhGQSwweEZBLDB4ODcsMHg3MiwweDI1LDB4NzIsMHhGRiwweEZDLDB4
RUUsMHhGRCwKLSAgICAweDY2LDB4NzIsMHgyNSwweDZBLDB4REYsMHhBQSwweEFBLDB4RTgsMHg4
NiwweDdBLDB4MjUsMHg3MiwweEU2LDB4RUIsMHhBQiwweDNGLAotICAgIDB4QTcsMHg3QSwweDI2
LDB4NkEsMHhFOSwweEFGLDB4QUEsMHgyQSwweDg3LDB4N0EsMHgyNiwweDcyLDB4QTIsMHhFOCww
eDc4LDB4RDIsCi0gICAgMHg0NiwweDcyLDB4RTUsMHg2MSwweEU4LDB4RTgsMHhFOCwweDdBLDB4
MDYsMHg2QSwweEM1LDB4NjEsMHgwMCwweEZFLDB4RDcsMHg3MiwKLSAgICAweEU1LDB4NjksMHg4
NCwweDYxLDB4RUMsMHhGRSwweDdFLDB4RkIsMHhFNSwweDYxLDB4ODQsMHg1OSwweEFCLDB4QTcs
MHgyRCwweDJFLAotICAgIDB4MDUsMHg2QSwweEM1LDB4NjEsMHhGNiwweEU1LDB4RUYsMHg1QSww
eEU1LDB4NjksMHhDNSwweDYxLDB4OTYsMHgyRiwweEFFLDB4NTcsCi0gICAgMHgyNiwweDZBLDB4
QzQsMHg2MSwweEFGLDB4MEYsMHg4RiwweEI5LDB4NDYsMHg3MiwweDA1LDB4NkEsMHhFRCwweEY1
LDB4N0QsMHhDNSwKLSAgICAweDQ2LDB4NzIsMHgwNSwweDZBLDB4QUEsMHg4MiwweDAzLDB4QTMs
MHg0NiwweDcyLDB4MjYsMHg2QSwweDBDLDB4ODAsMHhGQiwweDFGLAotICAgIDB4NjYsMHg3Miww
eEU0LDB4NjEsMHhCQSwweDcyLDB4RkMsMHg1RSwweDA2LDB4NjIsMHgwMywweDQxLDB4RjgsMHg3
OCwweEU4LDB4N0MsCi0gICAgMHgwMywweDQxLDB4ODEsMHgyOCwweDVDLDB4NUEsMHg1QywweDU2
LDB4QTIsMHgzMCwweDgxLDB4MjgsMHgxNywweEI3LDB4QjcsMHgxRiwKLSAgICAweEMyLDB4MzAs
MHhBMiwweDI4LDB4MEIsMHgwNiwweDBBLDB4ODMsMHgwMiwweDM5LDB4QzIsMHgzMCwweDU1LDB4
RDUsMHhGRCwweDJGLAotICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHhFNSwweEJELDB4MDksMHgw
QiwweDQ0LDB4NDEsMHhFMiwweDM4LDB4NTUsMHhGNSwweEJGLDB4MDIsCi0gICAgMHg0NCwweDQ5
LDB4RTIsMHgzOCwweDI5LDB4RUIsMHhBQSwweDA4LDB4MjMsMHg0MSwweEMyLDB4MzAsMHhDMCww
eEYyLDB4NzgsMHg3QywKLSAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4NzIsMHg3RSwweDVGLDB4
NzcsMHhFMywweDM4LDB4QTIsMHgzMCwweDhCLDB4RkIsMHg1NSwweDU1LAotICAgIDB4QzIsMHgz
MCwweEEyLDB4MjgsMHgwQSwweDAyLDB4RUYsMHg1NSwweEUzLDB4MzAsMHhBMiwweDI4LDB4M0Ys
MHhBRCwweEJCLDB4QkQsCi0gICAgMHgyMywweDM5LDB4QzMsMHgyOCwweEVGLDB4RkYsMHhENSww
eEQ1LDB4RTMsMHgzMCwweDgyLDB4MjgsMHhBOCwweEU4LDB4RkUsMHhEQywKLSAgICAweEMyLDB4
MjgsMHg2MiwweDIwLDB4RUEsMHhGQywweDc3LDB4RDYsMHg4MiwweDIwLDB4NjEsMHgyMCwweDNG
LDB4MkEsMHgwQSwweEJBLAotICAgIDB4NjEsMHgzMCwweDgyLDB4MjAsMHg1RiwweDU1LDB4N0Qs
MHg1NSwweEUzLDB4MzAsMHg4MiwweDIwLDB4QUYsMHhFRiwweEE5LDB4QUYsCi0gICAgMHhFMyww
eDMwLDB4ODIsMHgyOCwweEVBLDB4NjIsMHhGQSwweEZCLDB4QTIsMHgyOCwweDgyLDB4MjAsMHhF
NywweDU1LDB4RjcsMHgwOCwKLSAgICAweEUzLDB4MzAsMHg4MiwweDIwLDB4RkQsMHhFRCwweEJC
LDB4MkIsMHhFMywweDMwLDB4ODEsMHgyMCwweERGLDB4RkYsMHhCRSwweEEwLAotICAgIDB4RTMs
MHgzMCwweEEyLDB4MjgsMHhCNSwweEJGLDB4QUEsMHhBQSwweEUzLDB4MzAsMHhBMiwweDI4LDB4
QUEsMHg3QSwweDZFLDB4RUEsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEUyLDB4RUYsMHg3
NSwweDU3LDB4QzIsMHgzMCwweEEyLDB4MjgsMHhGNSwweEY5LDB4MDEsMHgyOSwKLSAgICAweEUz
LDB4MzAsMHhBMiwweDMwLDB4MEYsMHgwMSwweDBCLDB4MEYsMHgwMywweDM5LDB4QzMsMHgzMCww
eEJBLDB4QjMsMHhGRiwweEZGLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHhGMCwweEZBLDB4
RkEsMHhGNiwweEUzLDB4MzgsMHhBMiwweDMwLDB4MEQsMHhCQiwweEUyLDB4RjAsCi0gICAgMHhF
MywweDM4LDB4QTIsMHgyOCwweDBCLDB4MkUsMHhBNywweEI1LDB4MDMsMHgzOSwweEEyLDB4MzAs
MHhGRiwweEY3LDB4QUUsMHg4OCwKLSAgICAweDAzLDB4MzksMHhFMywweDM4LDB4NzMsMHg3Qiww
eERGLDB4OTgsMHgyNCwweDM5LDB4RTMsMHgzOCwweEE1LDB4QjUsMHhFRiwweDdCLAotICAgIDB4
MjMsMHg0MSwweEMyLDB4MzAsMHhDRSwweEZFLDB4RkYsMHg3QiwweDAzLDB4MzksMHhDMiwweDMw
LDB4QTMsMHhBQSwweEVCLDB4QkYsCi0gICAgMHhFMywweDQ4LDB4MDMsMHgzOSwweDVELDB4Nzcs
MHhGNywweDU1LDB4MjMsMHg0MSwweEUzLDB4MzgsMHhBQSwweDJFLDB4QTUsMHhGNSwKLSAgICAw
eDIzLDB4NDEsMHhDMiwweDMwLDB4QTIsMHhBQSwweEY3LDB4RkYsMHgyNCwweDQxLDB4RTIsMHgz
OCwweEZBLDB4M0EsMHg3QiwweDdGLAotICAgIDB4NDQsMHg0MSwweEMyLDB4MzAsMHhFMiwweEEw
LDB4N0YsMHg1RiwweDAzLDB4MzksMHhDMiwweDMwLDB4QkYsMHhCNiwweEFGLDB4MkYsCi0gICAg
MHgyMywweDQxLDB4QzIsMHgzMCwweEI3LDB4QUUsMHgzQiwweDNFLDB4NDQsMHg0MSwweEUyLDB4
MzgsMHhGRiwweDA5LDB4RTUsMHhGNywKLSAgICAweDQzLDB4NDEsMHgwMywweDM5LDB4NUIsMHhG
RCwweEI1LDB4RjcsMHgyMywweDM5LDB4RTIsMHgzMCwweDVGLDB4RkEsMHhGQSwweEVCLAotICAg
IDB4NDQsMHg0MSwweEUyLDB4MzAsMHgyOSwweEZELDB4RkYsMHg1NSwweDQ0LDB4NDEsMHgwMyww
eDM5LDB4N0MsMHhCRiwweEFGLDB4RTUsCi0gICAgMHgyMywweDM5LDB4QzIsMHgzMCwweEFBLDB4
RTgsMHg3QSwweDVDLDB4NjQsMHg0OSwweEMyLDB4MzAsMHgwQiwweEZGLDB4REYsMHg3RCwKLSAg
ICAweDg1LDB4NTEsMHhFMiwweDM4LDB4MjAsMHhBMywweEFCLDB4RjUsMHhDNSwweDUxLDB4MjMs
MHg0MSwweEEyLDB4RTIsMHhGRiwweDlELAotICAgIDB4ODQsMHg1MSwweDIzLDB4NDEsMHgyQyww
eDNELDB4M0QsMHgyQywweEM1LDB4NTksMHg2NCwweDUxLDB4OEEsMHgyQiwweDlBLDB4QjUsCi0g
ICAgMHhFNSwweDU5LDB4ODQsMHg1MSwweEI1LDB4M0QsMHgyRSwweDJELDB4MjYsMHg2MiwweEU1
LDB4NTksMHhFOSwweEI1LDB4MkIsMHgwQiwKLSAgICAweDQ2LDB4NkEsMHhDNSwweDU5LDB4Rjcs
MHhCRSwweEFBLDB4MkEsMHg0OCwweDZBLDB4RTUsMHg2MSwweDI1LDB4MkYsMHhCQSwweEZBLAot
ICAgIDB4OTAsMHhCNCwweDg5LDB4NzIsMHgwRCwweDJELDB4QjUsMHhCNSwweEYxLDB4QkMsMHgw
RSwweEE0LDB4RTgsMHhGRSwweEVELDB4OTUsCi0gICAgMHhCMCwweEI0LDB4NkYsMHhBQywweEFB
LDB4Q0IsMHhGQiwweDRBLDB4NkYsMHhBQywweEFDLDB4OEIsMHg1OCwweDcwLDB4NjgsMHg2OCwK
LSAgICAweDhDLDB4OEIsMHgyQiwweDgzLDB4ODIsMHhFRSwweEZFLDB4NUMsMHhBRCwweDkzLDB4
NEIsMHg4MywweENBLDB4QUIsMHhGNSwweDJELAotICAgIDB4Q0QsMHg5MywweDRCLDB4ODMsMHhB
RCwweEFELDB4QUIsMHgyQSwweENELDB4OTMsMHg4QywweDhCLDB4MEIsMHgyQiwweDJELDB4MzYs
Ci0gICAgMHhFRSwweDkzLDB4QUQsMHg5MywweEY2LDB4OEEsMHhDMiwweEZFLDB4RUQsMHg5Myww
eDBCLDB4N0IsMHhBOCwweEE4LDB4RUEsMHg2QSwKLSAgICAweEFELDB4OEIsMHhDQSwweDcyLDB4
ODAsMHg4QSwweEZCLDB4NTUsMHg2QywweDgzLDB4MEEsMHg3MywweDdBLDB4RjAsMHhGQiwweERE
LAotICAgIDB4NEIsMHg4MywweENBLDB4NkEsMHhBMiwweDIyLDB4QUUsMHhCNiwweDRDLDB4ODMs
MHhDQSwweDZBLDB4RTAsMHhBRSwweEYwLDB4N0EsCi0gICAgMHgwQiwweDdCLDB4Q0EsMHg3Miww
eEY2LDB4REMsMHg1OCwweDdBLDB4MkEsMHg3QiwweENBLDB4NzIsMHhGOSwweEY3LDB4NTUsMHg3
NywKLSAgICAweDRCLDB4ODMsMHhFQSwweDcyLDB4REQsMHg1NywweEJGLDB4M0IsMHg0QywweDgz
LDB4RUEsMHg3MiwweEFELDB4QUIsMHgyQSwweEM4LAotICAgIDB4NkIsMHg4MywweDBCLDB4N0Is
MHgyRiwweDk3LDB4RjcsMHhCRiwweEFELDB4OTMsMHg2QywweDhCLDB4RkYsMHhBQiwweDZELDB4
RjUsCi0gICAgMHhDRSwweDkzLDB4NkMsMHg4QiwweDBELDB4MkYsMHhGOSwweDdFLDB4NEYsMHhB
NCwweDZDLDB4OEIsMHgwQSwweEFCLDB4QUYsMHhBRCwKLSAgICAweDQzLDB4NTEsMHhFMSwweDQw
LDB4MkEsMHhFMCwweDRBLDB4N0EsMHg0MywweDUxLDB4RTIsMHg0MCwweDhFLDB4MkIsMHhBRiww
eEU5LAotICAgIDB4NjQsMHg1MSwweDAyLDB4NDksMHhGRCwweDczLDB4NUEsMHg3NSwweDIzLDB4
NDksMHhFMSwweDQwLDB4QjIsMHg5RSwweDZCLDB4QUIsCi0gICAgMHg0MywweDUxLDB4RTIsMHg0
OCwweEU2LDB4RTcsMHhBRCwweDNFLDB4MjMsMHg0OSwweDAyLDB4NDksMHg4MCwweDdGLDB4QTQs
MHg5NCwKLSAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4REQsMHg5RiwweDUyLDB4RTIsMHg0Myww
eDUxLDB4RTIsMHg0MCwweDdBLDB4RjgsMHhEQSwweERCLAotICAgIDB4NjQsMHg1OSwweDAyLDB4
NDksMHhCNSwweDJELDB4QTksMHhFQSwweDY0LDB4NTksMHgyMywweDUxLDB4QUIsMHhBOCwweEVC
LDB4RUYsCi0gICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEZGLDB4N0MsMHg3RCwweDZELDB4NDMs
MHg1MSwweDAyLDB4NDksMHg4QSwweEY4LDB4RkYsMHg4NywKLSAgICAweDY0LDB4NTEsMHgyMyww
eDUxLDB4N0EsMHhCRiwweEE3LDB4N0IsMHg2NCwweDU5LDB4MDMsMHg0OSwweDJFLDB4QTgsMHhF
QSwweERGLAotICAgIDB4NDQsMHg1MSwweDAzLDB4NDksMHhCOCwweDY4LDB4RUEsMHhFQSwweDIz
LDB4NTEsMHhFMiwweDQ4LDB4QUEsMHhGRiwweEVGLDB4MEEsCi0gICAgMHg0NCwweDUxLDB4MDMs
MHg0OSwweDdGLDB4NUUsMHgzNSwweEJGLDB4MjMsMHg1MSwweEUyLDB4NDgsMHhGQiwweEJGLDB4
OEUsMHg4RSwKLSAgICAweDg4LDB4N0EsMHgyMywweDUxLDB4MjUsMHgyNSwweDNELDB4MkQsMHgy
QSwweDkzLDB4RTksMHg4QSwweEFCLDB4RkQsMHhBOSwweDZCLAotICAgIDB4MDksMHg4QiwweEE4
LDB4ODIsMHhGOCwweEYyLDB4NzgsMHg1QSwweEM4LDB4ODIsMHg4NywweDdBLDB4RjIsMHhGMCww
eERFLDB4NTcsCi0gICAgMHhBOCwweDdBLDB4NjcsMHg3QSwweEZFLDB4NUYsMHg3QywweEZGLDB4
ODcsMHg3QSwweDQ2LDB4NzIsMHgwMCwweDBGLDB4MkUsMHhCQiwKLSAgICAweEE4LDB4N0EsMHg2
NywweDdBLDB4RjcsMHhFRiwweEJGLDB4QUQsMHg4NywweDdBLDB4NjcsMHg3MiwweEI3LDB4OEEs
MHhDMCwweEEwLAotICAgIDB4ODcsMHg3QSwweDY2LDB4NzIsMHg3RSwweDBBLDB4M0UsMHgxMiww
eEE3LDB4N0EsMHg2NywweDcyLDB4NzUsMHhFNSwweERGLDB4MzcsCi0gICAgMHg4NywweDdBLDB4
NDYsMHg3MiwweEY1LDB4MEYsMHgyQSwweDA4LDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg1RCwweDVG
LDB4M0EsMHhGQSwKLSAgICAweDg2LDB4NzIsMHgyNSwweDZBLDB4RTAsMHg5RSwweEZFLDB4RkYs
MHg2NywweDdBLDB4MjYsMHg2QSwweEJGLDB4QjYsMHhCQywweDhBLAotICAgIDB4ODYsMHg3QSww
eDQ2LDB4NzIsMHg3NSwweDc1LDB4RkQsMHhFRCwweDg3LDB4N0EsMHg0NiwweDcyLDB4QTUsMHgw
MywweDJBLDB4QUYsCi0gICAgMHhBOCwweDdBLDB4NDYsMHg3MiwweEVCLDB4MEUsMHhBQywweEVE
LDB4ODcsMHg3QSwweDI1LDB4NkEsMHg3RSwweEVDLDB4QUUsMHg2RSwKLSAgICAweDI2LDB4NzIs
MHhDNSwweDYxLDB4NjIsMHhCQSwweEI4LDB4RUEsMHgwNiwweDZBLDB4QTQsMHg2MSwweEUwLDB4
RjIsMHhGRSwweDc3LAotICAgIDB4QzUsMHg2MSwweDYzLDB4NTksMHhBMiwweDI3LDB4QUMsMHg4
QSwweDA1LDB4NkEsMHhBNCwweDYxLDB4QUQsMHgyOSwweEFCLDB4NUUsCi0gICAgMHgwNSwweDZB
LDB4QTQsMHg2MSwweEZBLDB4QTgsMHhGQSwweDdBLDB4MDYsMHg2QSwweEE0LDB4NTksMHhERiww
eDdCLDB4RkYsMHgyQiwKLSAgICAweDA1LDB4NkEsMHhBNCwweDYxLDB4QkYsMHg3RiwweEZGLDB4
ODAsMHg0NiwweDcyLDB4QzQsMHg2MSwweDhCLDB4MkQsMHhCRSwweDJFLAotICAgIDB4NDYsMHg3
MiwweDI2LDB4NkEsMHgyRiwweDJFLDB4RDAsMHhGQSwweDg3LDB4N0EsMHgyNiwweDZBLDB4RkQs
MHg1NywweDZCLDB4QTIsCi0gICAgMHg2NiwweDcyLDB4RTUsMHg2MSwweDdFLDB4N0IsMHhFQSww
eEUwLDB4QTQsMHg1OSwweEEyLDB4MzgsMHg3QywweDc4LDB4NzgsMHhGOCwKLSAgICAweEExLDB4
MzAsMHg2MSwweDI4LDB4NzgsMHg1RiwweDVFLDB4NUUsMHhDMiwweDMwLDB4NjEsMHgyOCwweEJG
LDB4M0QsMHhBRCwweEJELAotICAgIDB4MjMsMHg0MSwweEExLDB4MjgsMHhGRCwweEZCLDB4MkIs
MHgwQiwweDIzLDB4NDEsMHhFMiwweDM4LDB4OEQsMHhGNywweEFGLDB4QUMsCi0gICAgMHgyMyww
eDQxLDB4RTIsMHgzOCwweDBGLDB4MkYsMHhGNywweERGLDB4NjQsMHg0OSwweDAzLDB4NDEsMHgy
QiwweDg5LDB4ODUsMHgyNSwKLSAgICAweDY0LDB4NDksMHgyMywweDQxLDB4RTYsMHhGQSwweDcw
LDB4RTAsMHg0MywweDQxLDB4QTIsMHgzMCwweEZDLDB4NUUsMHg3QSwweEZFLAotICAgIDB4QzIs
MHgzMCwweDgxLDB4MjgsMHhGQywweEZBLDB4RTgsMHhBOCwweEEyLDB4MjgsMHg4MSwweDI4LDB4
QkUsMHg3RSwweEZDLDB4NjgsCi0gICAgMHhBMiwweDI4LDB4ODIsMHgyMCwweDgwLDB4RkEsMHg1
RSwweDVELDB4QzIsMHgyOCwweDgyLDB4MjAsMHhBRiwweEJELDB4MUYsMHg3RiwKLSAgICAweEUz
LDB4MzAsMHhBMiwweDI4LDB4MDMsMHhGRiwweEZGLDB4NUYsMHhDMywweDI4LDB4NjEsMHgyMCww
eEY4LDB4RjgsMHg3RSwweDU2LAotICAgIDB4ODMsMHgyMCwweDYxLDB4MjAsMHhEQywweDk2LDB4
REYsMHhEMiwweDgyLDB4MjAsMHg2MSwweDIwLDB4RjgsMHhCRSwweEVCLDB4RkIsCi0gICAgMHhB
MiwweDI4LDB4NDEsMHgxOCwweEEyLDB4QTgsMHhCRSwweERGLDB4QzMsMHgyOCwweDYxLDB4MjAs
MHgwQiwweEVGLDB4QkYsMHhGNSwKLSAgICAweEEyLDB4MjgsMHg4MiwweDIwLDB4QkEsMHhGRSww
eDBGLDB4MkYsMHhDMywweDI4LDB4ODIsMHgyMCwweDJFLDB4ODksMHgzQiwweEFCLAotICAgIDB4
RTMsMHgzMCwweEEyLDB4MjgsMHgzRiwweEJGLDB4RkQsMHhCRCwweDAzLDB4MzEsMHhBMiwweDI4
LDB4REEsMHhGQSwweEUzLDB4RkYsCi0gICAgMHhFMywweDMwLDB4QzIsMHgyOCwweEYyLDB4Nzgs
MHhERSwweDVELDB4RTMsMHgzMCwweEEyLDB4MjgsMHgyQSwweEJGLDB4QkIsMHhGNywKLSAgICAw
eEUzLDB4MzAsMHhBMiwweDI4LDB4N0YsMHhFRSwweEFCLDB4OEEsMHhFMywweDM4LDB4QTIsMHgy
OCwweEZELDB4RjUsMHhGRSwweDJCLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHg4RiwweDJC
LDB4ODgsMHhFQSwweEUzLDB4MzAsMHhBMiwweDMwLDB4QjgsMHhGNiwweEY3LDB4N0QsCi0gICAg
MHhDMiwweDMwLDB4QTIsMHgzMCwweDBFLDB4MEIsMHgwMywweDJBLDB4RTMsMHgzOCwweEEyLDB4
MjgsMHhGOCwweEZCLDB4QkYsMHhBQSwKLSAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4QjUsMHhG
RCwweEJCLDB4MkEsMHgyNCwweDM5LDB4RTMsMHgzMCwweEIyLDB4QkIsMHg1NywweDU3LAotICAg
IDB4MDMsMHgzOSwweEMyLDB4MzAsMHg4MCwweEEwLDB4RkEsMHhGRSwweDAzLDB4MzksMHhDMiww
eDMwLDB4QTIsMHhBQiwweEJGLDB4M0YsCi0gICAgMHgyMywweDM5LDB4RTIsMHgzMCwweEVGLDB4
RkUsMHhFOSwweEUyLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGRiwweEFGLDB4QUIsMHgwMCwKLSAg
ICAweDAzLDB4MzksMHhFMiwweDM4LDB4MDMsMHg1NywweDI3LDB4MDUsMHgyNCwweDM5LDB4RTIs
MHgzOCwweDk1LDB4RjUsMHg5RSwweDVBLAotICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHg3RSww
eDZFLDB4QTAsMHg4QSwweDAzLDB4MzksMHhDMiwweDMwLDB4NjMsMHg2MiwweDcwLDB4RTgsCi0g
ICAgMHgwMywweDM5LDB4QTIsMHgzMCwweDdCLDB4M0YsMHgyRiwweDJFLDB4NDQsMHg0MSwweEUy
LDB4MzAsMHhCNSwweEZELDB4RUUsMHgzQSwKLSAgICAweDQ0LDB4NDksMHgwMywweDM5LDB4NTcs
MHg3NywweEZGLDB4QjAsMHg0NCwweDQ5LDB4MDMsMHgzOSwweEQ1LDB4NTUsMHg3RCwweEYyLAot
ICAgIDB4MjQsMHgzOSwweEUzLDB4MzgsMHhFQSwweEYyLDB4QjksMHhGRiwweDAzLDB4MzksMHhD
MiwweDM4LDB4MDIsMHgwMCwweEMwLDB4QzIsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDc3
LDB4QUYsMHhCQiwweDhBLDB4MjMsMHgzOSwweEMyLDB4MzAsMHg4QiwweEE2LDB4M0YsMHhBQiwK
LSAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4NTYsMHhGRiwweDZBLDB4RTgsMHgwMiwweDM5LDB4
QzEsMHgzMCwweEVBLDB4NjMsMHhBMiwweDgyLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzAsMHgy
RiwweEE5LDB4MkIsMHgzRiwweEE0LDB4NTEsMHgyMywweDQxLDB4QUQsMHgzNywweDI5LDB4MkQs
Ci0gICAgMHhDNSwweDUxLDB4NjQsMHg0OSwweERGLDB4NTksMHg4QSwweDIyLDB4QzUsMHg1OSww
eDY0LDB4NDksMHhGRCwweDk1LDB4RkEsMHhGOCwKLSAgICAweDA1LDB4NjIsMHg2MywweDQ5LDB4
QUYsMHgyRiwweEFGLDB4RjcsMHg2NywweDZBLDB4QzUsMHg1OSwweDhBLDB4QUEsMHhCRiwweDc1
LAotICAgIDB4MDYsMHg2MiwweDg0LDB4NTEsMHgwOCwweEI4LDB4RkUsMHhERiwweDQ3LDB4NkEs
MHhBNCwweDUxLDB4MEEsMHgyQSwweEJELDB4MkQsCi0gICAgMHg4QywweDkzLDB4MjcsMHg2Miww
eDJGLDB4MkQsMHgyRCwweDJELDB4QjAsMHhCNCwweEVELDB4OUIsMHgzRCwweEFELDB4MjksMHgy
OSwKLSAgICAweEQwLDB4QjQsMHg2RiwweEFDLDB4RUUsMHg3RiwweEUyLDB4RkEsMHg2RiwweEFD
LDB4QUQsMHg5MywweDY4LDB4RTAsMHhFOCwweEUwLAotICAgIDB4QUQsMHg5MywweDBBLDB4N0Is
MHhGRSwweEFDLDB4RjgsMHg1OCwweEFDLDB4OEIsMHgyQiwweDgzLDB4MkIsMHgyQiwweDJGLDB4
QkQsCi0gICAgMHhDRCwweDhCLDB4OEMsMHg4QiwweEJDLDB4NjgsMHg4MiwweEM5LDB4Q0QsMHg5
MywweDZDLDB4N0IsMHhBOCwweEFBLDB4MkEsMHhGRiwKLSAgICAweENELDB4OTMsMHgwQSwweDcz
LDB4QTAsMHhBMiwweEZBLDB4N0UsMHg4QywweDhCLDB4QUEsMHg2QSwweEEwLDB4RkEsMHg3RSww
eERGLAotICAgIDB4MEIsMHg3MywweEE5LDB4NkEsMHg3QiwweEYyLDB4RkUsMHg1RSwweDBBLDB4
NzMsMHg4OSwweDYyLDB4MDIsMHgyQiwweEY5LDB4REQsCi0gICAgMHgyQiwweDczLDB4RUEsMHg3
MiwweEFELDB4N0QsMHhENSwweDVELDB4MkIsMHg3QiwweEE5LDB4NkEsMHhCOCwweEJGLDB4Rjcs
MHhCNywKLSAgICAweDBBLDB4NzMsMHhDOSwweDcyLDB4OTYsMHhGQiwweDQyLDB4RTAsMHgwQSww
eDdCLDB4Q0EsMHg3MiwweDlFLDB4MzksMHgyNSwweEQ1LAotICAgIDB4NEMsMHg3QiwweDBCLDB4
N0IsMHhERCwweERELDB4ODksMHhCNywweDZDLDB4ODMsMHgwQiwweDdCLDB4REUsMHhCRiwweDFG
LDB4RUYsCi0gICAgMHg2QywweDgzLDB4MkIsMHg4MywweEZGLDB4RkEsMHhFQSwweEE4LDB4RUUs
MHg5QiwweDRCLDB4ODMsMHhCRCwweDBGLDB4MjksMHgyRCwKLSAgICAweEVFLDB4OUIsMHg0Qiww
eDgzLDB4N0UsMHg3QSwweDU4LDB4RjAsMHhFRSwweDlCLDB4NEMsMHg4MywweDJELDB4MkQsMHhG
RCwweEY1LAotICAgIDB4NDMsMHg1MSwweEUxLDB4NDgsMHhERSwweEVCLDB4OEEsMHgwQiwweDIy
LDB4NDksMHhFMiwweDQwLDB4RTAsMHhGQSwweEZGLDB4RUYsCi0gICAgMHg0NCwweDUxLDB4QzIs
MHg0MCwweEZGLDB4N0YsMHhCRiwweDJCLDB4NDMsMHg1MSwweEUyLDB4NDAsMHhGRCwweEVCLDB4
MkYsMHgwOCwKLSAgICAweDYzLDB4NTEsMHgwMiwweDQ5LDB4RjcsMHg1NSwweDZELDB4RkUsMHg0
MywweDUxLDB4MDIsMHg0OSwweEY3LDB4QTUsMHhCNSwweEJGLAotICAgIDB4NDMsMHg1MSwweEUy
LDB4NDAsMHhFMCwweDdBLDB4N0MsMHhGQSwweDQzLDB4NTEsMHhFMiwweDQwLDB4QkYsMHhBRiww
eEI5LDB4RTksCi0gICAgMHg0MywweDUxLDB4MDIsMHg0OSwweDgwLDB4QTgsMHhBRiwweDRCLDB4
NDMsMHg1MSwweDAzLDB4NDksMHhBMCwweEEzLDB4QkIsMHgwRiwKLSAgICAweDY1LDB4NTksMHgy
MywweDUxLDB4RUQsMHhCQSwweDVBLDB4NUYsMHg2NCwweDU5LDB4MDIsMHg0OSwweEJCLDB4OEYs
MHhDRCwweEVBLAotICAgIDB4NDQsMHg1MSwweDIzLDB4NTEsMHg1QywweERCLDB4OEQsMHhFRCww
eDQzLDB4NTEsMHgwMywweDQ5LDB4RjcsMHhGQiwweENCLDB4RTIsCi0gICAgMHgyMywweDUxLDB4
MDMsMHg0OSwweEUwLDB4RkMsMHg1QSwweDcyLDB4MjMsMHg1MSwweEUyLDB4NDgsMHhDQSwweEZB
LDB4QUEsMHhBQiwKLSAgICAweDIzLDB4NTEsMHhFMiwweDQ4LDB4RTIsMHhCQiwweEZGLDB4NzUs
MHgyMywweDUxLDB4RTIsMHg0OCwweENGLDB4Q0IsMHgyQiwweEVELAotICAgIDB4RTgsMHg4QSww
eDIzLDB4NTEsMHgyRCwweDI1LDB4MjksMHgyRCwweDI5LDB4OTMsMHhFOCwweDhBLDB4NzIsMHhG
MiwweDYyLDB4NUYsCi0gICAgMHhDOSwweDhBLDB4QTcsMHg3QSwweEU4LDB4RjgsMHhCRSwweDcy
LDB4QTgsMHg3QSwweDg3LDB4N0EsMHg1OCwweDVDLDB4RTAsMHhGRiwKLSAgICAweEE3LDB4N0Es
MHg2NywweDcyLDB4REIsMHgyQiwweEJGLDB4NzcsMHg4NywweDdBLDB4NDYsMHg3MiwweDc5LDB4
Q0EsMHgyQSwweDAwLAotICAgIDB4QTcsMHg3QSwweDY3LDB4NzIsMHhBOSwweEI3LDB4RTQsMHg3
QywweEE4LDB4ODIsMHgyNiwweDcyLDB4QTgsMHhBRiwweDBBLDB4MjIsCi0gICAgMHhBNywweDdB
LDB4NjYsMHg3MiwweEJCLDB4REMsMHhFMCwweDgyLDB4ODcsMHg3QSwweDY3LDB4NzIsMHgxOCww
eDBDLDB4MkIsMHgwRSwKLSAgICAweEE3LDB4N0EsMHg2NywweDdBLDB4RkYsMHg1RiwweEVGLDB4
MUYsMHg4NywweDdBLDB4NDYsMHg3MiwweDJBLDB4MkYsMHhCQSwweDkwLAotICAgIDB4NjYsMHg3
MiwweDI2LDB4NzIsMHhFQywweDRDLDB4RDAsMHhDMiwweDY3LDB4N0EsMHgyNSwweDZBLDB4OUEs
MHhDMiwweENCLDB4NkYsCi0gICAgMHg4NywweDdBLDB4NDYsMHg3MiwweEZBLDB4NUUsMHg3RSww
eDdELDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhFRiwweDhGLDB4QUQsMHgwRiwKLSAgICAweDg3LDB4
N0EsMHg2NywweDcyLDB4QTMsMHg5MywweEJELDB4NkYsMHg2NywweDcyLDB4MDUsMHg2QSwweEU4
LDB4RUMsMHhGRSwweERGLAotICAgIDB4MjYsMHg3MiwweEM1LDB4NjEsMHhGOCwweEVGLDB4Nzks
MHhCRSwweEM1LDB4NjEsMHg4MywweDU5LDB4RUMsMHgwMiwweDIwLDB4RTgsCi0gICAgMHgwNSww
eDZBLDB4QTQsMHg2MSwweEY1LDB4RTUsMHgyRCwweDBELDB4NDYsMHg3MiwweEE0LDB4NjEsMHhE
NywweEJELDB4MEEsMHhBQSwKLSAgICAweDQ2LDB4NzIsMHhDNSwweDYxLDB4QTUsMHg4QiwweDgw
LDB4MDgsMHg4NywweDdBLDB4MDYsMHg2QSwweEZELDB4MkQsMHg4QSwweEFBLAotICAgIDB4QTcs
MHg3QSwweDQ2LDB4NzIsMHg1RiwweDJCLDB4MjIsMHhBQiwweEE4LDB4ODIsMHgwNSwweDZBLDB4
RkQsMHhFQiwweDg4LDB4MjIsCi0gICAgMHhBOCwweDdBLDB4MjYsMHg3MiwweDc3LDB4QUYsMHg4
QSwweEFBLDB4QTgsMHg3QSwweDY3LDB4NzIsMHg3RiwweENCLDB4NkEsMHhERCwKLSAgICAweDg3
LDB4NzIsMHgyNiwweDZBLDB4NjAsMHg4MCwweEU4LDB4N0YsMHgwNiwweDYyLDB4RTIsMHgzOCww
eDVBLDB4NzgsMHg3OCwweDc4LAotICAgIDB4QzIsMHgzOCwweDYxLDB4MjgsMHg1RSwweEJFLDB4
RkEsMHhCOCwweEUyLDB4MzgsMHg4MSwweDMwLDB4QkQsMHgzRCwweDJGLDB4MkQsCi0gICAgMHg2
NCwweDQ5LDB4MDMsMHgzOSwweEE5LDB4OEYsMHhBOSwweEZELDB4NjQsMHg0OSwweDAzLDB4Mzks
MHg3QSwweDdBLDB4N0UsMHhBRiwKLSAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4NDUsMHhGNyww
eDdBLDB4RUEsMHg2NSwweDQ5LDB4RTMsMHgzOCwweDJELDB4QUQsMHhGRCwweERELAotICAgIDB4
NjQsMHg0OSwweDAzLDB4MzksMHhBMiwweEEyLDB4QUIsMHg4NywweDIzLDB4MzksMHhBMiwweDI4
LDB4NjgsMHg2QSwweEYwLDB4NjgsCi0gICAgMHhDMiwweDMwLDB4ODIsMHgyOCwweDJGLDB4QUUs
MHgyMCwweDIyLDB4QzIsMHgyOCwweEEyLDB4MjgsMHg3NywweDVGLDB4N0YsMHhFRiwKLSAgICAw
eEEyLDB4MjgsMHg4MiwweDIwLDB4NzIsMHg2MiwweEFCLDB4RUMsMHhDMywweDI4LDB4NjEsMHgy
MCwweEZFLDB4RkEsMHhCOCwweDdFLAotICAgIDB4QzMsMHgyOCwweDYxLDB4MjAsMHhFMywweEVG
LDB4N0YsMHg1NywweDgyLDB4MjAsMHg2MSwweDIwLDB4NTgsMHhERiwweEZGLDB4QkYsCi0gICAg
MHg4MiwweDIwLDB4NjEsMHgyMCwweDYwLDB4MEIsMHgzRiwweDNCLDB4QTIsMHgyOCwweDYxLDB4
MjAsMHhGRiwweEZBLDB4OEIsMHgwMiwKLSAgICAweEEyLDB4MjAsMHg2MSwweDIwLDB4NTcsMHg5
RiwweEZBLDB4RjgsMHhBMiwweDI4LDB4NDEsMHgxOCwweEJELDB4RUEsMHhBQSwweDJBLAotICAg
IDB4QTIsMHgyOCwweDYxLDB4MjAsMHgyQiwweEFGLDB4M0IsMHgwOCwweEMyLDB4MjgsMHg4Miww
eDIwLDB4RkYsMHhGRiwweDNGLDB4QjcsCi0gICAgMHhDMiwweDI4LDB4ODEsMHgyOCwweDBCLDB4
MjIsMHhFOCwweEE4LDB4QzIsMHgyOCwweEEyLDB4MjgsMHg3OCwweDVBLDB4NUQsMHhEQiwKLSAg
ICAweEMyLDB4MzAsMHhBMiwweDI4LDB4NzMsMHhGNSwweDM1LDB4MkIsMHhDMiwweDMwLDB4QTIs
MHgyOCwweDU1LDB4RkEsMHhBMCwweDgwLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhBQiww
eDhCLDB4QTcsMHhGRiwweDAzLDB4MzksMHhDMiwweDMwLDB4QUYsMHhGNiwweDU3LDB4NTcsCi0g
ICAgMHhFMywweDM4LDB4QzMsMHgzMCwweDc4LDB4RUQsMHgzQiwweDM5LDB4RTMsMHgzMCwweEEy
LDB4MzAsMHhGRiwweEVFLDB4QUEsMHhBQiwKLSAgICAweEMyLDB4MzAsMHhBMywweDI4LDB4MEEs
MHhBQSwweDgwLDB4MjAsMHgwMywweDMxLDB4QTIsMHgzMCwweEZFLDB4NUYsMHhGNSwweDc3LAot
ICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyQiwweDJGLDB4QTUsMHg3NSwweDAzLDB4MzksMHhB
MiwweDMwLDB4QTAsMHhBOCwweEZFLDB4RkEsCi0gICAgMHgwMywweDM5LDB4QzMsMHgzMCwweEFB
LDB4MDIsMHhBNywweEQ3LDB4MjMsMHgzOSwweEUzLDB4MzgsMHg5NywweEJCLDB4NzcsMHhENSwK
LSAgICAweDIzLDB4MzksMHhFMywweDM4LDB4RTYsMHhBQSwweDEzLDB4M0IsMHgyMywweDM5LDB4
QzIsMHgzMCwweDg4LDB4OEEsMHhCQSwweDlBLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgw
MywweEJFLDB4M0MsMHhCQSwweDAzLDB4MzksMHhDMiwweDMwLDB4MDAsMHgyQSwweEFBLDB4RkUs
Ci0gICAgMHgyMywweDM5LDB4RTIsMHgzMCwweDI4LDB4M0IsMHhGNSwweDU3LDB4MjMsMHg0MSww
eEUyLDB4MzgsMHhGQywweDU4LDB4NTAsMHg1MywKLSAgICAweEUyLDB4MzgsMHhDMiwweDMwLDB4
MjgsMHgwRSwweDBFLDB4MkUsMHg0NCwweDQxLDB4RTMsMHgzOCwweDIzLDB4QUQsMHgzNywweDFG
LAotICAgIDB4ODUsMHg0OSwweDIzLDB4NDEsMHhGRiwweEZCLDB4OUYsMHgxRiwweDY0LDB4NDks
MHgyNCwweDQxLDB4NTIsMHg1QSwweDc4LDB4MkEsCi0gICAgMHg0NCwweDQxLDB4RTIsMHgzOCww
eDdGLDB4REUsMHhGRSwweEVDLDB4NDQsMHg0MSwweEUzLDB4MzgsMHhFRCwweEFGLDB4RUYsMHhD
QSwKLSAgICAweDAyLDB4MzksMHhDMiwweDMwLDB4RjAsMHg1QSwweEMyLDB4QUUsMHgwMiwweDM5
LDB4QzEsMHgzMCwweDJBLDB4MjUsMHhCNSwweEVGLAotICAgIDB4MjMsMHgzOSwweEUyLDB4Mzgs
MHhFMiwweEFDLDB4QjcsMHhCRCwweDQzLDB4NDEsMHhFMiwweDM4LDB4REYsMHhFQiwweEEwLDB4
QkMsCi0gICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDU1LDB4REYsMHgxNCwweEJGLDB4QTQsMHg1
MSwweDAyLDB4MzksMHgyOSwweEFGLDB4QTUsMHhENywKLSAgICAweEE0LDB4NTEsMHgwMiwweDQx
LDB4MDAsMHg4MiwweEE4LDB4NkUsMHhBNCwweDUxLDB4MjMsMHg0MSwweEEwLDB4RkUsMHhGRiww
eEZELAotICAgIDB4QTQsMHg1OSwweDIyLDB4NDEsMHhBRiwweEI3LDB4MkQsMHgyRiwweEM1LDB4
NTksMHg4NCwweDUxLDB4ODMsMHhBOSwweEZCLDB4QjMsCi0gICAgMHhFNiwweDU5LDB4ODQsMHg1
MSwweDU3LDB4NUYsMHg3QSwweEUyLDB4MjYsMHg2MiwweDg0LDB4NTEsMHgyRiwweEI1LDB4QUQs
MHhBRiwKLSAgICAweDhDLDB4OTMsMHgyNiwweDYyLDB4MkQsMHgyRCwweDI1LDB4MjUsMHhCMCww
eEI0LDB4MkUsMHhBNCwweDBELDB4MDksMHgyOSwweEFELAotICAgIDB4QjAsMHhCNCwweDZGLDB4
QUMsMHg3OCwweEY4LDB4N0IsMHhFNywweDZGLDB4QUMsMHhDRCwweDkzLDB4NjgsMHg2OCwweEY4
LDB4NTgsCi0gICAgMHhBRCwweDkzLDB4QTksMHg3MiwweDc4LDB4NzgsMHg3OCwweDcwLDB4MkMs
MHg4MywweDQ4LDB4NjIsMHgwMiwweDhBLDB4QUYsMHhENSwKLSAgICAweDhDLDB4OEIsMHg4OSww
eDZBLDB4MEEsMHhGRiwweEZGLDB4N0YsMHg4QywweDgzLDB4NjksMHg2MiwweDIwLDB4QUIsMHhG
RiwweDU3LAotICAgIDB4MkIsMHg3MywweDY4LDB4NjIsMHhBMCwweEU4LDB4N0YsMHg1NSwweENB
LDB4NkEsMHg2OCwweDYyLDB4MjIsMHhFRCwweEZBLDB4RjcsCi0gICAgMHhDQSwweDZBLDB4Njgs
MHg2MiwweEY4LDB4NUYsMHg3NSwweDdELDB4Q0EsMHg2QSwweDY4LDB4NjIsMHgzQiwweEIzLDB4
OUQsMHhFOSwKLSAgICAweEVBLDB4NzIsMHg4OSwweDYyLDB4ODIsMHhBQSwweDJCLDB4QUQsMHhF
QSwweDcyLDB4ODksMHg2MiwweDJCLDB4MkQsMHhCRSwweEJFLAotICAgIDB4MEEsMHg3MywweEM5
LDB4NkEsMHhBMCwweEZGLDB4QjUsMHgxNSwweDRCLDB4N0IsMHhDQSwweDcyLDB4NTcsMHhGRCww
eEFCLDB4MkQsCi0gICAgMHhBRCwweDhCLDB4MEIsMHg3QiwweEY1LDB4RkQsMHg4RiwweDBBLDB4
MEUsMHg5QywweDJCLDB4N0IsMHhGNSwweEZGLDB4QUIsMHgyQSwKLSAgICAweEVELDB4OTMsMHg0
QiwweDgzLDB4NTcsMHg3NywweEZFLDB4RkMsMHhFRCwweDkzLDB4NEIsMHg4MywweDNGLDB4Mjcs
MHgzRCwweEJGLAotICAgIDB4MkUsMHhBNCwweDhDLDB4OEIsMHg2MCwweEEyLDB4MDIsMHgwMyww
eDBFLDB4OUMsMHg0QiwweDgzLDB4REQsMHg1RiwweDdFLDB4NTgsCi0gICAgMHg0MywweDUxLDB4
MDMsMHg0OSwweDhCLDB4Q0UsMHg5RSwweDk2LDB4MjMsMHg0OSwweEUyLDB4NDgsMHhGQywweDlF
LDB4M0UsMHgwQSwKLSAgICAweDIzLDB4NDksMHgwMiwweDQ5LDB4NUEsMHhGOCwweDg4LDB4QTgs
MHg0NCwweDUxLDB4MDIsMHg0OSwweEJGLDB4RkYsMHg2QSwweDUyLAotICAgIDB4NDQsMHg1MSww
eDAzLDB4NDksMHhCNiwweEJBLDB4RjUsMHhGNSwweDIyLDB4NDksMHhFMiwweDQwLDB4MjAsMHhB
OCwweEFELDB4REMsCi0gICAgMHg0MywweDUxLDB4RTIsMHg0MCwweEZBLDB4QUQsMHgyQiwweDhB
LDB4NDMsMHg1MSwweDAyLDB4NDksMHhGQiwweERBLDB4QTgsMHhGQSwKLSAgICAweDY0LDB4NTEs
MHgwMywweDQ5LDB4RkUsMHhGRSwweEVFLDB4MzUsMHg0NCwweDUxLDB4MDIsMHg0OSwweENCLDB4
RUYsMHhGOSwweEY5LAotICAgIDB4NjQsMHg1MSwweDIzLDB4NTEsMHhGRCwweEQ1LDB4MzUsMHhB
NSwweDQ0LDB4NTksMHgyMywweDQ5LDB4RUEsMHhFMywweDdBLDB4N0EsCi0gICAgMHg0MywweDUx
LDB4MDMsMHg0OSwweEFGLDB4QTMsMHgwRiwweDZGLDB4NDMsMHg1MSwweDAzLDB4NDksMHg4Myww
eDlDLDB4NUUsMHhGRCwKLSAgICAweDIzLDB4NTEsMHhFMiwweDQ4LDB4RTgsMHg2OCwweEZDLDB4
OTYsMHgyMywweDUxLDB4RTIsMHg0OCwweDM1LDB4QTUsMHhBOSwweENFLAotICAgIDB4MDIsMHg0
OSwweEUyLDB4NDgsMHg3MCwweDAyLDB4QjgsMHhGMCwweDQzLDB4NTEsMHhFMiwweDQ4LDB4RkYs
MHhGNywweDJGLDB4QUQsCi0gICAgMHhFOCwweDgyLDB4ODMsMHg1OSwweDI1LDB4MEQsMHgwRCww
eDBELDB4MjksMHg4QiwweEM4LDB4ODIsMHhFQSwweDdBLDB4RTIsMHhGQSwKLSAgICAweEU5LDB4
OEEsMHg4NywweDdBLDB4NjIsMHhFQiwweEZCLDB4NTYsMHhBOCwweDdBLDB4NjcsMHg3MiwweEUy
LDB4MkUsMHhCQSwweDdGLAotICAgIDB4QTcsMHg4MiwweDY3LDB4NzIsMHhGRiwweEVFLDB4RUIs
MHhGMSwweEE4LDB4N0EsMHg2NywweDdBLDB4RkUsMHhEQSwweERBLDB4QUEsCi0gICAgMHhDOCww
eDgyLDB4NjcsMHg3MiwweDdGLDB4NUUsMHg1OCwweEVCLDB4QTgsMHg3QSwweDY3LDB4NzIsMHhC
RSwweEFCLDB4MkQsMHhCRiwKLSAgICAweDQ2LDB4ODIsMHhBOCwweDdBLDB4RjYsMHhGNywweEZE
LDB4RkYsMHhBOCwweDdBLDB4NDYsMHg3MiwweDhBLDB4QUUsMHhGRiwweEFCLAotICAgIDB4QTcs
MHg3QSwweDY3LDB4NzIsMHhGRiwweDZCLDB4NEIsMHhGRiwweDg3LDB4N0EsMHg0NiwweDcyLDB4
QUIsMHhGQSwweEZBLDB4N0EsCi0gICAgMHg2NiwweDcyLDB4MjYsMHg3MiwweDJGLDB4QUEsMHg2
QiwweEZGLDB4NjYsMHg3MiwweDA1LDB4NzIsMHhBOCwweDhBLDB4OEIsMHg4MiwKLSAgICAweDY3
LDB4N0EsMHg0NiwweDcyLDB4Q0QsMHgzNywweEQ1LDB4MTcsMHg4NywweDdBLDB4NDYsMHg3Miww
eEIyLDB4QUYsMHhBRiwweEVGLAotICAgIDB4ODcsMHg3QSwweDI2LDB4NzIsMHhDMiwweERGLDB4
NkYsMHhGQiwweDQ2LDB4NzIsMHhFNSwweDYxLDB4QjgsMHhGRSwweERFLDB4N0MsCi0gICAgMHgw
NiwweDZBLDB4QTQsMHg2MSwweERDLDB4NUEsMHg1QSwweDZBLDB4MjUsMHg2QSwweDgzLDB4NTks
MHg3RiwweEZGLDB4REQsMHgzQiwKLSAgICAweDQ2LDB4NzIsMHhBNCwweDU5LDB4RkQsMHg3NSww
eDNCLDB4MDAsMHhBOCwweDdBLDB4MDUsMHg2QSwweEQ1LDB4QjUsMHgwRiwweEVFLAotICAgIDB4
ODcsMHg3QSwweDA1LDB4NkEsMHgyQiwweDJBLDB4RTgsMHg1NiwweDg4LDB4N0EsMHgwNSwweDZB
LDB4QTIsMHgyQywweEFGLDB4RjUsCi0gICAgMHg4NywweDdBLDB4MDUsMHg2QSwweDIyLDB4ODgs
MHg4QiwweEZELDB4ODcsMHg3QSwweDI2LDB4NkEsMHg4QSwweEFBLDB4QkIsMHhGRCwKLSAgICAw
eDY3LDB4NzIsMHgyNiwweDZBLDB4QTcsMHhCOCwweDVBLDB4NzgsMHg4NywweDdBLDB4RTYsMHg2
OSwweEFCLDB4RkUsMHhCRCwweDJFLAotICAgIDB4NjcsMHg3MiwweDA2LDB4NkEsMHg2QSwweEJF
LDB4RTAsMHg4MCwweEU2LDB4NjEsMHgwMywweDQxLDB4NzgsMHg1OCwweDc4LDB4NzgsCi0gICAg
MHhFMiwweDM4LDB4ODEsMHgzMCwweEQ4LDB4ODgsMHhBMiwweEE4LDB4MDMsMHg0MSwweDgxLDB4
MzAsMHhBRCwweEFGLDB4QUEsMHg4OCwKLSAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4MDksMHgw
OSwweEY3LDB4RjUsMHg2NCwweDQ5LDB4RTIsMHgzOCwweDhCLDB4MkUsMHgyRCwweEI1LAotICAg
IDB4NDQsMHg0OSwweEMyLDB4MzgsMHhGRSwweEY4LDB4NTgsMHhGMCwweEUyLDB4MzgsMHhDMiww
eDMwLDB4MDAsMHhFRSwweEVFLDB4QkYsCi0gICAgMHgyNCwweDQxLDB4QzIsMHgzMCwweDBBLDB4
QUIsMHhBRiwweDdELDB4MjMsMHgzOSwweEMyLDB4MjgsMHg3OCwweEVBLDB4N0UsMHg3RiwKLSAg
ICAweEMyLDB4MjgsMHg2MiwweDIwLDB4QTIsMHhBQSwweEFBLDB4RUEsMHhDMiwweDI4LDB4ODIs
MHgyMCwweEVBLDB4NUIsMHg1RiwweDU1LAotICAgIDB4QTIsMHgyMCwweDYxLDB4MTgsMHgyQyww
eEJBLDB4QkEsMHhGRiwweEEyLDB4MjAsMHg2MSwweDIwLDB4N0EsMHg3QSwweDc4LDB4N0YsCi0g
ICAgMHg4MiwweDIwLDB4NjEsMHgyMCwweDU1LDB4RDUsMHgzNywweDBCLDB4QTEsMHgyMCwweDYy
LDB4MjAsMHhGNywweEY3LDB4RkUsMHhFQSwKLSAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4NUYs
MHhGRiwweDhCLDB4MDIsMHhDMiwweDI4LDB4ODIsMHgyMCwweEJELDB4NUQsMHhCRiwweDdFLAot
ICAgIDB4QzMsMHgyOCwweDYxLDB4MjAsMHg3QSwweEVBLDB4QUEsMHg4QSwweEEyLDB4MjgsMHg4
MSwweDIwLDB4MDcsMHg3QywweDVFLDB4N0EsCi0gICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweEFG
LDB4QUYsMHhCNSwweEI1LDB4QzIsMHgyOCwweDYxLDB4MjAsMHgyQSwweDIwLDB4QTgsMHhFQSwK
LSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QkYsMHhCQiwweEJGLDB4RDUsMHhDMiwweDI4LDB4
QTIsMHgyOCwweDdBLDB4RUUsMHhENCwweDY3LAotICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHg3
RSwweDVGLDB4N0QsMHhBOSwweEUzLDB4MzAsMHhBMiwweDI4LDB4RkIsMHgwQiwweDAzLDB4MjAs
Ci0gICAgMHhFMywweDMwLDB4QzIsMHgyOCwweEFCLDB4OEIsMHhBQiwweEY2LDB4RTMsMHgzMCww
eDgyLDB4MjgsMHhFQSwweEZBLDB4RkEsMHhERSwKLSAgICAweEMyLDB4MzAsMHg4MSwweDI4LDB4
QTAsMHhCOCwweDZGLDB4QkQsMHhFMywweDMwLDB4QTIsMHgyOCwweEE5LDB4RUIsMHhFRCwweDY5
LAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhFMywweEEzLDB4RkQsMHg3RCwweEMyLDB4MzAs
MHhBMiwweDI4LDB4MzgsMHgzMCwweDNGLDB4MEEsCi0gICAgMHhFMywweDMwLDB4QTIsMHgzMCww
eEJFLDB4QjYsMHhBRSwweDBBLDB4RTMsMHgzOCwweEMyLDB4MzAsMHhGMCwweEUyLDB4RUEsMHhE
MCwKLSAgICAweEMyLDB4MzgsMHhFMywweDMwLDB4RkYsMHhERiwweEZFLDB4MkYsMHhFMywweDM4
LDB4QTIsMHgyOCwweDIyLDB4RTAsMHhEQSwweEZFLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAs
MHgzRSwweDlGLDB4RkYsMHhCNywweDIzLDB4MzksMHhFMiwweDMwLDB4NUYsMHg1NywweEI1LDB4
QjUsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweERBLDB4QUEsMHgyQSwweDA4LDB4MDMsMHgz
OSwweEMyLDB4MzAsMHhGRiwweEJFLDB4QTQsMHgwMCwKLSAgICAweDI0LDB4MzksMHhFMiwweDM4
LDB4NzcsMHhGNywweEJGLDB4RjgsMHgyMywweDQxLDB4RTMsMHgzOCwweEZELDB4QTksMHhBQSww
eDRCLAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhGRiwweERBLDB4QzIsMHhBMiwweDQ0LDB4
NDEsMHgwMywweDQxLDB4QTUsMHhBNSwweDhELDB4RkYsCi0gICAgMHg4NSwweDQ5LDB4MjMsMHg0
MSwweEVELDB4M0QsMHg5RiwweEJBLDB4ODUsMHg1MSwweDQ0LDB4NDEsMHhBRCwweDBELDB4QkIs
MHhCQSwKLSAgICAweDY0LDB4NDksMHgwMywweDM5LDB4NzYsMHhDRSwweEMwLDB4ODgsMHg4NCww
eDQ5LDB4MjMsMHg0MSwweEY1LDB4NUYsMHg1QiwweDYzLAotICAgIDB4NDQsMHg0OSwweEUyLDB4
MzgsMHg3RSwweEFCLDB4OEEsMHg4MiwweDQzLDB4NDksMHhDMSwweDM4LDB4N0QsMHhGRSwweEZB
LDB4QTAsCi0gICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDJGLDB4MjksMHhBRiwweEVGLDB4MjMs
MHg0MSwweDAzLDB4MzksMHgyNCwweDBBLDB4OEYsMHgyQiwKLSAgICAweDIzLDB4NDEsMHhFMiww
eDM4LDB4QkYsMHgzOCwweDAwLDB4QjAsMHg0MywweDQ5LDB4RTIsMHgzOCwweDJDLDB4RUEsMHhC
NywweDJELAotICAgIDB4NjQsMHg0OSwweDAyLDB4NDEsMHgyQSwweDJELDB4QUYsMHgwQSwweEE1
LDB4NTEsMHg0MywweDQxLDB4REYsMHhFNywweDhBLDB4MDIsCi0gICAgMHhFNSwweDU5LDB4MjIs
MHg0MSwweEE3LDB4MkYsMHgwQiwweDJBLDB4MjcsMHg2MiwweDg0LDB4NTEsMHg3RiwweEVGLDB4
M0EsMHgyRiwKLSAgICAweDI3LDB4NjIsMHhDNSwweDU5LDB4RkQsMHhFRiwweEE4LDB4MDAsMHgy
NywweDYyLDB4QzUsMHg1OSwweEY3LDB4NzksMHhCRSwweEE4LAotICAgIDB4MkEsMHg4MywweEU2
LDB4NTksMHgyRCwweDNELDB4MzUsMHgzNSwweDMyLDB4QzUsMHhFRCwweDlCLDB4QkQsMHgyRCww
eDI5LDB4MkQsCi0gICAgMHg3MywweENELDB4RDEsMHhCNCwweDU1LDB4RkYsMHhBMiwweDAwLDB4
NTIsMHhDNSwweDRGLDB4QTQsMHg1RiwweEVBLDB4QTAsMHg4MCwKLSAgICAweEIwLDB4QjQsMHhF
QSwweDdBLDB4N0UsMHhGOCwweEEwLDB4MjAsMHgyRiwweDlDLDB4MDcsMHg1QSwweDU1LDB4NTcs
MHhGQSwweEEwLAotICAgIDB4Q0EsMHg3MiwweDA3LDB4NUEsMHhBMCwweEE4LDB4NkEsMHg3MCww
eDQ5LDB4NjIsMHhBNiwweDUxLDB4ODAsMHhBQywweEJFLDB4RDcsCi0gICAgMHg0OCwweDYyLDB4
QTYsMHg1MSwweDBBLDB4QUIsMHg3RiwweDc3LDB4NjgsMHg2MiwweEU2LDB4NTEsMHg4MCwweEVF
LDB4RkYsMHhERiwKLSAgICAweDY4LDB4NjIsMHgwNywweDUyLDB4MDIsMHgwMiwweEZCLDB4Nzcs
MHg4OSwweDYyLDB4MjcsMHg1QSwweDA4LDB4MkEsMHhFOCwweERGLAotICAgIDB4QTksMHg2QSww
eDY4LDB4NjIsMHgyQiwweEFBLDB4QUQsMHgyNSwweENBLDB4NkEsMHg2OCwweDYyLDB4MjAsMHgw
QiwweDBELDB4MEIsCi0gICAgMHgwQSwweDdCLDB4QTksMHg2QSwweEFGLDB4RTcsMHhCMywweDBB
LDB4QUQsMHg4QiwweDBBLDB4NzMsMHg5NSwweDM1LDB4MkQsMHgwQiwKLSAgICAweDRGLDB4QTQs
MHhBRCwweDhCLDB4RjUsMHhCNSwweDNBLDB4QUIsMHg0RSwweEE0LDB4Q0MsMHg5MywweEQ3LDB4
RkEsMHhBQSwweDAyLAotICAgIDB4NEYsMHhBNCwweEFDLDB4OEIsMHg3RSwweEVBLDB4QUEsMHg4
MiwweENELDB4OTMsMHg2QiwweDhCLDB4QUEsMHhCMCwweDk4LDB4ODgsCi0gICAgMHg0RSwweEE0
LDB4Q0QsMHg5MywweDBELDB4MkYsMHhBRiwweDNELDB4NkYsMHhBQywweDhDLDB4OEIsMHg1RSww
eDc4LDB4NzgsMHhFOCwKLSAgICAweDQ0LDB4NDksMHgwMiwweDQ5LDB4NzgsMHg1NSwweEQ1LDB4
RjUsMHgyMywweDQ5LDB4MDMsMHg0OSwweEVCLDB4REEsMHhGNywweEM4LAotICAgIDB4MjMsMHg0
OSwweEUyLDB4NDAsMHgyOCwweEI3LDB4RDYsMHhBRSwweDQzLDB4NTEsMHgwMywweDQ5LDB4RkYs
MHgwQiwweEJGLDB4RjksCi0gICAgMHg0MywweDUxLDB4RTIsMHg0MCwweEUyLDB4QTgsMHg3QSww
eDlBLDB4NDMsMHg1MSwweEUyLDB4NDAsMHg5NywweEE3LDB4MkYsMHgwQSwKLSAgICAweDY0LDB4
NTEsMHgwMiwweDQ5LDB4RkIsMHhGQSwweEY2LDB4RTgsMHg0MywweDUxLDB4MDMsMHg0OSwweDc3
LDB4MEEsMHgyMCwweDVCLAotICAgIDB4NjQsMHg1OSwweDAyLDB4NDksMHg5RiwweEJFLDB4Qjgs
MHhFRiwweDQzLDB4NTEsMHgwMywweDUxLDB4MjAsMHgwMCwweDJDLDB4RUIsCi0gICAgMHg0Myww
eDUxLDB4MjMsMHg1MSwweDI2LDB4RkUsMHg1NiwweEYxLDB4NDMsMHg1MSwweDAyLDB4NDksMHg2
QSwweEVBLDB4RkEsMHg1MiwKLSAgICAweDIzLDB4NTEsMHgwMywweDQ5LDB4MEEsMHhDNywweDJG
LDB4MDksMHhFMiwweDUwLDB4MjMsMHg0OSwweEZFLDB4QkIsMHhBRCwweEVELAotICAgIDB4NDQs
MHg1MSwweEUyLDB4NDgsMHhGRiwweEZELDB4QUEsMHhBOCwweDIzLDB4NTEsMHhDMSwweDQwLDB4
NkUsMHg3QSwweEVBLDB4RTgsCi0gICAgMHgwMiwweDQ5LDB4RTIsMHg0OCwweDM5LDB4MEIsMHg4
QiwweENELDB4RTYsMHg2OSwweDAyLDB4NDksMHhENSwweEQ1LDB4QjUsMHgyNSwKLSAgICAweDQ5
LDB4OTMsMHhFNSwweDYxLDB4QUQsMHgyRCwweEFCLDB4MkEsMHgwOCwweDhCLDB4QTcsMHg3QSww
eEYwLDB4RkMsMHg3OCwweDdBLAotICAgIDB4QzgsMHg4MiwweDY2LDB4NzIsMHhBOCwweEUwLDB4
NkEsMHg3QSwweEE3LDB4N0EsMHg2NywweDdBLDB4QUUsMHhBMiwweEZBLDB4MUYsCi0gICAgMHhB
NywweDdBLDB4NjYsMHg3MiwweEVFLDB4QTgsMHg2NiwweEFBLDB4QTcsMHg4MiwweDY2LDB4NzIs
MHhDMywweDcxLDB4N0QsMHg3NSwKLSAgICAweDg3LDB4N0EsMHg2NywweDcyLDB4MDIsMHhBMyww
eDIxLDB4MjMsMHhBNywweDdBLDB4NjYsMHg3MiwweEJBLDB4QUIsMHgyOSwweERGLAotICAgIDB4
QTcsMHg3QSwweDY2LDB4NzIsMHhCQSwweEFBLDB4QjYsMHg3NywweEE4LDB4N0EsMHg2NiwweDdB
LDB4MkYsMHhCRiwweEVFLDB4MkQsCi0gICAgMHhBOCwweDgyLDB4NDYsMHg3MiwweEJBLDB4RjIs
MHg3OCwweDc4LDB4NjcsMHg3QSwweDQ2LDB4NzIsMHhGMiwweEVCLDB4N0QsMHg2OSwKLSAgICAw
eDY2LDB4NzIsMHgyNiwweDZBLDB4RjcsMHhGRiwweEY4LDB4RUIsMHg2NiwweDdBLDB4MjYsMHg2
QSwweDJBLDB4ODksMHgwQiwweEJBLAotICAgIDB4QTcsMHg3QSwweDI2LDB4NzIsMHhCRiwweEZG
LDB4N0YsMHgwQSwweDA5LDB4OEIsMHgyNiwweDcyLDB4RjUsMHhCRCwweEFELDB4MkEsCi0gICAg
MHg0QSwweDkzLDB4NDYsMHg3MiwweDU1LDB4RkYsMHhBQSwweDJBLDB4MjksMHg4QiwweDQ2LDB4
NzIsMHg1NSwweEVFLDB4QUEsMHhBMCwKLSAgICAweEE4LDB4N0EsMHhFNSwweDYxLDB4REYsMHhF
QSwweEEwLDB4QjgsMHg2NywweDdBLDB4RTUsMHg2OSwweDJCLDB4ODIsMHhGMCwweDU2LAotICAg
IDB4NjcsMHg3MiwweEU1LDB4NjksMHhBQywweEZGLDB4RkYsMHhGNSwweDI1LDB4NzIsMHhDNSww
eDYxLDB4RTgsMHhFQSwweEFBLDB4QUEsCi0gICAgMHg0NiwweDcyLDB4QzQsMHg2MSwweDdGLDB4
N0YsMHhCQSwweDhBLDB4NDYsMHg3MiwweEU1LDB4NjEsMHhENywweERGLDB4RkIsMHgyOCwKLSAg
ICAweDY3LDB4NzIsMHgwNSwweDZBLDB4REQsMHhGRCwweEY5LDB4ODMsMHg2NywweDdBLDB4MjYs
MHg2QSwweDI5LDB4RjUsMHg1RCwweEZGLAotICAgIDB4ODcsMHg3QSwweDI2LDB4NkEsMHhCRiww
eEI1LDB4QUYsMHgwQiwweDg3LDB4NzIsMHgyNiwweDZBLDB4QUUsMHhGRSwweERGLDB4N0EsCi0g
ICAgMHg4NywweDcyLDB4MjYsMHg2QSwweDdFLDB4N0MsMHg1NywweDU3LDB4RTUsMHg1OSwweDIz
LDB4NDEsMHg3OCwweDc4LDB4NzgsMHg3OCwKLSAgICAweDIzLDB4NDEsMHhBMSwweDMwLDB4REUs
MHhGRSwweERFLDB4RkMsMHgwNCwweDM5LDB4QzIsMHgzOCwweEZCLDB4RjcsMHg2QiwweEU5LAot
ICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHhBQiwweEZGLDB4RkQsMHg3NywweDIzLDB4NDEsMHhD
MiwweDMwLDB4M0YsMHhCNywweEI3LDB4RkYsCi0gICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweDZB
LDB4N0EsMHg3RiwweDU1LDB4MDMsMHgzOSwweEUyLDB4MzAsMHhCRiwweDIwLDB4RjgsMHgzNCwK
LSAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4RkEsMHhGQywweDc4LDB4NzgsMHhDMiwweDI4LDB4
ODEsMHgyMCwweEMwLDB4RTgsMHhGNywweDU1LAotICAgIDB4QTIsMHgyOCwweDYxLDB4MjAsMHhF
QSwweEU4LDB4RjgsMHhGQSwweDgyLDB4MjAsMHg2MSwweDE4LDB4REIsMHg1QSwweDcyLDB4QzAs
Ci0gICAgMHg4MiwweDIwLDB4NjEsMHgxOCwweEQ1LDB4RjUsMHhFRiwweDhGLDB4QTIsMHgyMCww
eDYxLDB4MTgsMHhGNSwweEU5LDB4QUIsMHhBQiwKLSAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4
QUIsMHhFRiwweDI3LDB4QUUsMHhDMiwweDI4LDB4ODEsMHgyMCwweEZCLDB4OEYsMHhBRCwweEFG
LAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHhGNywweEU3LDB4N0QsMHhGRiwweEUzLDB4MzAs
MHg4MSwweDIwLDB4N0UsMHhGRSwweEYyLDB4QUEsCi0gICAgMHhDMiwweDI4LDB4ODIsMHgyOCww
eEZELDB4NUYsMHg1RSwweEI2LDB4QTIsMHgyOCwweDgxLDB4MjAsMHhGRSwweDQwLDB4NzgsMHg1
QSwKLSAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4QUEsMHhBQywweDdBLDB4QUUsMHhBMiwweDI4
LDB4NjEsMHgyMCwweDI4LDB4QTgsMHhGQSwweEZBLAotICAgIDB4QTIsMHgyOCwweDYxLDB4MjAs
MHgwMCwweDAyLDB4MkYsMHhBRiwweEMyLDB4MjgsMHg4MSwweDI4LDB4QUIsMHg4RiwweDJGLDB4
RkYsCi0gICAgMHhDMiwweDI4LDB4ODEsMHgyOCwweDAyLDB4QTgsMHg3QiwweDU1LDB4RTIsMHgz
MCwweDgxLDB4MjgsMHg4QSwweEJFLDB4RTksMHhCRiwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4
LDB4OUIsMHgzQiwweDNFLDB4RkYsMHhDMiwweDMwLDB4QTIsMHgyOCwweDVFLDB4REMsMHg3Qyww
eDVGLAotICAgIDB4NjEsMHgzMCwweEMyLDB4MjgsMHhGQiwweDc3LDB4RkYsMHg1RCwweDAzLDB4
MzEsMHhDMiwweDI4LDB4N0QsMHhGNSwweDZELDB4NDMsCi0gICAgMHhFMywweDMwLDB4QTIsMHgy
OCwweEZELDB4OEUsMHhBMiwweDgyLDB4MDQsMHgzOSwweEMzLDB4MzAsMHhGNSwweEZGLDB4REYs
MHhBRiwKLSAgICAweDI0LDB4MzksMHhFMywweDM4LDB4RjUsMHg4RCwweDI1LDB4RkYsMHgyNCww
eDM5LDB4QzIsMHgzMCwweDVFLDB4N0UsMHg2MCwweEU4LAotICAgIDB4RTMsMHgzMCwweEMyLDB4
MzAsMHg3MiwweERELDB4RjcsMHhCNiwweEMzLDB4MzgsMHhFMywweDMwLDB4RjYsMHhENywweEZE
LDB4RkYsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDJGLDB4MEIsMHhBQSwweEEzLDB4MjMs
MHgzOSwweEUzLDB4MzgsMHhBRCwweDgyLDB4QTEsMHgyRiwKLSAgICAweDIzLDB4MzksMHhFMiww
eDMwLDB4QjgsMHhFQiwweEVDLDB4RjgsMHgyMywweDM5LDB4RTIsMHgzMCwweDJBLDB4MDIsMHhB
MywweERELAotICAgIDB4NDQsMHg0MSwweEMyLDB4MzAsMHhGOCwweEZFLDB4N0YsMHg3RiwweDAz
LDB4MzksMHhFMiwweDMwLDB4QUEsMHgxRiwweDNGLDB4N0YsCi0gICAgMHg0NCwweDQxLDB4RTIs
MHgzOCwweDhGLDB4QUYsMHhCRiwweEQ1LDB4NDQsMHg0MSwweEUyLDB4MzgsMHhGRSwweDdBLDB4
RjgsMHhFRCwKLSAgICAweDQ0LDB4NDksMHgwMywweDM5LDB4MjMsMHg4MywweEExLDB4RTksMHg4
NSwweDQ5LDB4MDMsMHg0MSwweEFCLDB4MkQsMHhCRiwweDVELAotICAgIDB4ODUsMHg1MSwweDQ0
LDB4NDksMHhGQSwweEU5LDB4QUYsMHgwQSwweDg1LDB4NTEsMHgyMywweDQxLDB4MDIsMHgyQSww
eEVBLDB4RDgsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweDA4LDB4MDAsMHg4MCwweEYyLDB4
NjQsMHg0OSwweDAyLDB4MzksMHhGOCwweDUyLDB4REUsMHg5RiwKLSAgICAweDIzLDB4NDEsMHhF
MiwweDM4LDB4RkEsMHg3RSwweEY4LDB4RUMsMHgyMywweDQxLDB4RTIsMHgzOCwweEEyLDB4Qzks
MHhGOSwweDZCLAotICAgIDB4NDMsMHg0MSwweEUyLDB4MzgsMHhERSwweEJGLDB4RkYsMHhBMyww
eDQzLDB4NDEsMHgwMywweDQxLDB4MEQsMHhBQSwweDhBLDB4QkYsCi0gICAgMHg4NSwweDUxLDB4
MDMsMHg0MSwweDIzLDB4MjIsMHhCQSwweEZELDB4QTUsMHg1MSwweDIyLDB4NDEsMHgwQSwweEVB
LDB4NzcsMHg1NSwKLSAgICAweEM1LDB4NTksMHgyMiwweDQxLDB4MEEsMHhBQSwweEFELDB4RkQs
MHhFNiwweDYxLDB4NjMsMHg0OSwweDAyLDB4MEYsMHhGNSwweEQ1LAotICAgIDB4MjcsMHg2Miww
eDg0LDB4NTEsMHgyQSwweEJFLDB4REYsMHg3NSwweDI3LDB4NjIsMHg4NCwweDUxLDB4MDAsMHg4
OCwweEZCLDB4OTUsCi0gICAgMHhFOSwweDdBLDB4RTUsMHg1OSwweDM1LDB4MjUsMHgzNSwweEJE
LDB4MTIsMHhDNSwweDhDLDB4OTMsMHgyOSwweDI5LDB4MjksMHgyRCwKLSAgICAweDczLDB4Q0Qs
MHgzMiwweEM1LDB4MDAsMHhBRSwweEFGLDB4QkQsMHg3MywweENELDB4MTIsMHhCRCwweDZDLDB4
RjgsMHhGQSwweENBLAotICAgIDB4NTIsMHhDNSwweDkwLDB4QUMsMHg1RSwweDVFLDB4NzgsMHg3
QSwweEIwLDB4QjQsMHgwRSwweDlDLDB4NUUsMHhCQSwweEU4LDB4QUYsCi0gICAgMHg2RiwweEE0
LDB4NEMsMHg4MywweDVFLDB4RUEsMHhBOCwweEEyLDB4MEUsMHg5QywweDY4LDB4NjIsMHg1Nyww
eEE4LDB4MDAsMHgwMCwKLSAgICAweDBFLDB4OUMsMHhFNywweDU5LDB4NTUsMHg3RiwweEU4LDB4
MDAsMHhDRCwweDkzLDB4QzYsMHg1MSwweDU1LDB4NTUsMHhGRiwweEE4LAotICAgIDB4NEMsMHg4
MywweEU2LDB4NTEsMHg1NSwweDU1LDB4RkYsMHgwMCwweDJCLDB4N0IsMHgwNywweDVBLDB4NzUs
MHhERCwweEZGLDB4MDAsCi0gICAgMHg2QywweDgzLDB4MDYsMHg1MiwweEZELDB4RkYsMHhCRiww
eDAwLDB4QUQsMHg4QiwweDY4LDB4NjIsMHhGNSwweERGLDB4RUYsMHgwMCwKLSAgICAweDBELDB4
OTQsMHhFQSwweDcyLDB4NzUsMHhGNSwweEFELDB4MkUsMHhFRCwweDkzLDB4NkIsMHg4MywweDNE
LDB4QUYsMHhCNywweDIwLAotICAgIDB4NEUsMHhBNCwweENDLDB4OTMsMHhCRiwweDJGLDB4MkQs
MHhBRiwweDZGLDB4QUMsMHgwRSwweDlDLDB4MkUsMHg4QiwweDlBLDB4QTIsCi0gICAgMHg2Riww
eEE0LDB4MEUsMHhBNCwweDZBLDB4QTgsMHhGQSwweEZFLDB4MkUsMHg5QywweDhCLDB4OEIsMHhG
RSwweDVDLDB4RkUsMHhGOCwKLSAgICAweDJFLDB4QTQsMHg4QywweDhCLDB4MkQsMHgyOSwweEFG
LDB4MkYsMHg2RiwweEE0LDB4MkUsMHhBNCwweDY3LDB4N0IsMHhFQSwweEFCLAotICAgIDB4MjMs
MHg0OSwweEUyLDB4NDAsMHgyRSwweEFGLDB4M0UsMHgyQSwweDAzLDB4NTEsMHg0MywweDQ5LDB4
RkEsMHhCRiwweEZGLDB4RkIsCi0gICAgMHg0MywweDUxLDB4MDMsMHg0OSwweEU3LDB4N0QsMHhG
RiwweEVCLDB4NDMsMHg0OSwweDAzLDB4NDksMHgyRSwweEY3LDB4N0QsMHhGQiwKLSAgICAweDQz
LDB4NTEsMHgwMiwweDQ5LDB4RjYsMHhCQywweEJGLDB4QkYsMHg0MywweDUxLDB4MDIsMHg0OSww
eEFBLDB4RUEsMHhFQiwweEVGLAotICAgIDB4NjMsMHg1OSwweDAyLDB4NDksMHhFQSwweEFFLDB4
MjcsMHhCRiwweDYzLDB4NTksMHgwMiwweDQ5LDB4RkYsMHhFQiwweEFDLDB4QUIsCi0gICAgMHg0
MywweDUxLDB4MDIsMHg0OSwweEZFLDB4N0MsMHhDMiwweDA4LDB4NDMsMHg1MSwweEUyLDB4NDgs
MHhCQiwweENELDB4QUIsMHhBQiwKLSAgICAweDY0LDB4NTksMHhFMiwweDQ4LDB4QUEsMHhBQiww
eEY5LDB4NzcsMHgyMywweDUxLDB4MDIsMHg0OSwweDUyLDB4RDQsMHhENywweDk1LAotICAgIDB4
NDMsMHg1MSwweDAzLDB4NDksMHhGRCwweDNGLDB4RkYsMHg1RiwweDQzLDB4NTEsMHgwMywweDQ5
LDB4QjgsMHhFNywweEI3LDB4NTUsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEEyLDB4QkYs
MHhGMywweERBLDB4MjMsMHg1MSwweEUyLDB4NDgsMHhGQywweDU2LDB4N0YsMHhBRiwKLSAgICAw
eDQzLDB4NTEsMHhFMiwweDQ4LDB4RDUsMHhENSwweEI1LDB4MkYsMHgwOSwweDhCLDB4MjMsMHg1
MSwweEI1LDB4MkQsMHgwRiwweDAzLAotICAgIDB4MjksMHg4QiwweEM4LDB4ODIsMHhCRCwweEU2
LDB4NUMsMHg3QywweEU4LDB4ODIsMHg4NywweDdBLDB4RjgsMHhDOCwweDY4LDB4RUEsCi0gICAg
MHhDNywweDgyLDB4ODcsMHg3QSwweDdELDB4RkQsMHhBRCwweEJELDB4QTcsMHg3QSwweDY2LDB4
NzIsMHhCNiwweDcyLDB4ODAsMHhDMCwKLSAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4RUEsMHg3
QiwweEFFLDB4RUUsMHhBNywweDdBLDB4NDYsMHg3QSwweEFBLDB4OEEsMHhFOCwweDIwLAotICAg
IDB4QTcsMHg4MiwweDQ2LDB4NzIsMHhBQSwweEFFLDB4MEEsMHgwRSwweEE3LDB4N0EsMHg2Niww
eDcyLDB4RkIsMHhCRiwweEFBLDB4MEEsCi0gICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEZGLDB4
QUYsMHhFQSwweEE4LDB4ODcsMHg3QSwweDY3LDB4NzIsMHg4MCwweEMwLDB4OEEsMHhBRiwKLSAg
ICAweDg3LDB4N0EsMHg0NiwweDcyLDB4NjgsMHhFNiwweDc2LDB4QUYsMHg2NywweDdBLDB4MDUs
MHg2QSwweEFBLDB4NjgsMHhBOCwweDIyLAotICAgIDB4MDksMHg4QiwweDA1LDB4NkEsMHhGRCww
eEZGLDB4RkQsMHgwRiwweDg5LDB4OUIsMHg0NiwweDcyLDB4REQsMHhBRCwweDJCLDB4MDIsCi0g
ICAgMHg4QSwweDlCLDB4QzgsMHg4MiwweEQ1LDB4MkIsMHg4MCwweDAyLDB4OEEsMHg5QiwweDA4
LDB4OEIsMHhGNSwweEFFLDB4OEUsMHg3OCwKLSAgICAweDI5LDB4OEIsMHgwNSwweDZBLDB4ODAs
MHgyMCwweEU4LDB4N0UsMHhDOCwweDgyLDB4RTUsMHg2OSwweEEwLDB4RUEsMHhERiwweDU1LAot
ICAgIDB4NDYsMHg2QSwweEU2LDB4NjksMHhGQywweEZGLDB4REQsMHhGRiwweDI2LDB4NkEsMHhF
NSwweDYxLDB4RkUsMHhEQSwweEFBLDB4OEEsCi0gICAgMHgyNiwweDZBLDB4QzUsMHg1OSwweDBB
LDB4QUEsMHhBQiwweERBLDB4NDYsMHg2QSwweDg0LDB4NTEsMHgyQSwweDIwLDB4QTgsMHg1RiwK
LSAgICAweDY3LDB4NzIsMHhBNSwweDU5LDB4MjgsMHhBOCwweEVFLDB4NTUsMHg2NywweDcyLDB4
QTUsMHg1OSwweDIwLDB4MEEsMHhGQiwweDU1LAotICAgIDB4NjcsMHg3MiwweDg0LDB4NTEsMHgw
MCwweDAwLDB4QkEsMHg1RCwweDg3LDB4NzIsMHg4NCwweDUxLDB4MDAsMHgwMCwweEJBLDB4NTUs
Ci0gICAgMHhBOCwweDdBLDB4NjQsMHg1MSwweDAyLDB4QTgsMHhGRSwweDU1LDB4NjcsMHg3Miww
eDQzLDB4NDksMHhBMCwweEE4LDB4RkYsMHg1NSwKLSAgICAweDA2LDB4NjIsMHg0NCwweDQ5LDB4
MDAsMHgwMCwweDJFLDB4RTUsMHhDNSwweDU5LDB4MjMsMHg0OSwweEY4LDB4NzgsMHg3OCwweDc4
LAotICAgIDB4NjUsMHg0OSwweEUzLDB4MzgsMHg1RiwweDdGLDB4QUEsMHhBQSwweDQzLDB4NDEs
MHhFMywweDM4LDB4RkQsMHhFRiwweEZGLDB4RjgsCi0gICAgMHgyNCwweDQxLDB4QzIsMHgzMCww
eEY3LDB4RTcsMHhBQywweEFBLDB4MDMsMHgzOSwweEEyLDB4MzAsMHhBQSwweEE4LDB4RTgsMHhG
QSwKLSAgICAweEUzLDB4MzgsMHhBMiwweDI4LDB4QTgsMHhGQywweDdFLDB4NUYsMHgwMywweDM5
LDB4ODEsMHgyMCwweEE4LDB4QUUsMHhENywweDdELAotICAgIDB4MDMsMHgzMSwweDgxLDB4MjAs
MHhGQywweEZFLDB4RkYsMHg1NSwweEMyLDB4MjgsMHg2MSwweDIwLDB4RkYsMHhFQSwweDc4LDB4
NUUsCi0gICAgMHg4MSwweDIwLDB4NjEsMHgxOCwweEE4LDB4MjgsMHg4MCwweDc2LDB4QTIsMHgy
MCwweDYxLDB4MTgsMHhFQSwweDdBLDB4N0YsMHhGRCwKLSAgICAweDgyLDB4MjAsMHg2MSwweDE4
LDB4Q0QsMHgwQiwweDNCLDB4QkEsMHhDMiwweDI4LDB4ODIsMHgyMCwweEZELDB4RkQsMHhCQiww
eDJCLAotICAgIDB4RTMsMHgzMCwweDgxLDB4MjAsMHhERCwweEY3LDB4QUIsMHgwQSwweEMyLDB4
MjgsMHhBMiwweDI4LDB4QTcsMHgzNSwweDk1LDB4QUMsCi0gICAgMHhFMywweDMwLDB4QTIsMHgy
OCwweEFBLDB4QUIsMHhGOSwweDgwLDB4MDMsMHgzMSwweEMyLDB4MjgsMHg3RCwweEVGLDB4QUUs
MHgyRiwKLSAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4NTcsMHg3MCwweEVDLDB4RTgsMHhFMyww
eDI4LDB4ODIsMHgyOCwweDVGLDB4QkYsMHhCQiwweEUyLAotICAgIDB4QzIsMHgyOCwweDgxLDB4
MjgsMHhGNSwweEQ2LDB4RUEsMHhBOCwweEEyLDB4MjgsMHg4MSwweDIwLDB4RkEsMHhBQSwweDBB
LDB4MEMsCi0gICAgMHhDMiwweDMwLDB4NjEsMHgyMCwweEU5LDB4OEIsMHgwMiwweDAyLDB4RTMs
MHgzMCwweDgxLDB4MjgsMHg3RCwweDdCLDB4RTgsMHhFMCwKLSAgICAweEMyLDB4MjgsMHg2MSww
eDIwLDB4RjcsMHhCRiwweEFBLDB4OEEsMHhDMiwweDMwLDB4QTIsMHgyOCwweEQ1LDB4NzUsMHg4
RCwweEMzLAotICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhCQiwweDFGLDB4REQsMHg3RiwweEMy
LDB4MzAsMHhBMiwweDI4LDB4RjUsMHhFMiwweEY3LDB4RTUsCi0gICAgMHhFMywweDMwLDB4QTIs
MHgyOCwweDJGLDB4MEYsMHhCRCwweDg1LDB4MDMsMHgzMSwweEMyLDB4MzAsMHhBQSwweDBBLDB4
MEIsMHgzRCwKLSAgICAweDAzLDB4MzEsMHhDMywweDMwLDB4QUEsMHgwOCwweDJBLDB4QjcsMHgy
NCwweDM5LDB4RTMsMHgzMCwweDZCLDB4RkIsMHhGRiwweEVELAotICAgIDB4MjQsMHgzOSwweEUz
LDB4MzgsMHhCRCwweEJCLDB4OTcsMHg1NSwweDQ0LDB4NDEsMHhFMywweDM4LDB4RjMsMHhBQSww
eEVFLDB4RkQsCi0gICAgMHgwMywweDM5LDB4RTMsMHgzMCwweEI1LDB4MEEsMHg4OCwweDhDLDB4
MjQsMHg0MSwweEMzLDB4MzAsMHhFRiwweDJFLDB4MkYsMHhCNywKLSAgICAweDI0LDB4MzksMHhD
MiwweDMwLDB4QzksMHhBRSwweEI2LDB4RUEsMHgwMywweDM5LDB4QzIsMHgzMCwweDFCLDB4RjIs
MHgyMCwweDAwLAotICAgIDB4MjMsMHgzOSwweEUyLDB4MzAsMHg3NiwweEJGLDB4M0YsMHhGOCww
eEUyLDB4MzAsMHhDMywweDMwLDB4MjAsMHgyRCwweEI2LDB4QTgsCi0gICAgMHgwMywweDM5LDB4
QzIsMHgzMCwweDdBLDB4QUIsMHhBRiwweDZCLDB4MDIsMHgzOSwweEMyLDB4MzAsMHhBRiwweDJF
LDB4QjcsMHhGRiwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4MEYsMHhBQSwweEFGLDB4NzMs
MHgyNCwweDQxLDB4QzIsMHgzMCwweEFBLDB4MEYsMHgwQSwweEE3LAotICAgIDB4NDMsMHg0MSww
eEUzLDB4MzgsMHhGRiwweEVGLDB4RjYsMHhGOCwweDQzLDB4NDEsMHgwMywweDQxLDB4RkYsMHgz
RCwweDI2LDB4QTcsCi0gICAgMHg4NSwweDUxLDB4NDQsMHg0OSwweDJGLDB4OEIsMHgxRiwweERG
LDB4ODQsMHg1MSwweDIzLDB4NDEsMHg1QywweEU4LDB4RTMsMHhBMiwKLSAgICAweDQ0LDB4NDks
MHgwMywweDQxLDB4RTIsMHhBMiwweDJDLDB4QjQsMHg2NCwweDQ5LDB4MjMsMHg0MSwweERELDB4
RUIsMHhBQiwweEFCLAotICAgIDB4NDQsMHg0OSwweDAyLDB4MzksMHhGRSwweEQ3LDB4RkEsMHhG
QywweDQ0LDB4NDEsMHgwMiwweDQxLDB4N0YsMHhFRiwweEFCLDB4OEIsCi0gICAgMHg0MywweDQx
LDB4RTMsMHgzOCwweEIyLDB4QUEsMHg4MiwweDBBLDB4NDQsMHg0MSwweEUyLDB4MzgsMHhEQiww
eEZFLDB4QUEsMHhFMCwKLSAgICAweDY0LDB4NDksMHgwMywweDM5LDB4RDUsMHhGNSwweEJGLDB4
MkQsMHg2NCwweDQ5LDB4MjMsMHg0MSwweEY3LDB4NTcsMHhGQSwweEYwLAotICAgIDB4ODQsMHg0
OSwweDIyLDB4NDEsMHg4RCwweEE3LDB4MjksMHhBQiwweDY0LDB4NTEsMHg0MywweDQxLDB4M0Us
MHhERSwweDZGLDB4MkYsCi0gICAgMHhBNSwweDUxLDB4NDQsMHg0OSwweEJCLDB4RjksMHhBQiww
eDhBLDB4QzUsMHg1OSwweDg0LDB4NTEsMHgyRCwweEY1LDB4MEIsMHgwQiwKLSAgICAweDY4LDB4
NzIsMHhBNCwweDUxLDB4MkIsMHgyRCwweEFELDB4M0YsMHhEMSwweEJDLDB4MEEsMHg4MywweDJG
LDB4MkQsMHhBRCwweEFELAotICAgIDB4NzMsMHhDRCwweDkwLDB4QjQsMHgyQSwweDJCLDB4RUQs
MHhGRCwweDczLDB4Q0QsMHgxMSwweEJELDB4RTIsMHg4QiwweDJCLDB4QTUsCi0gICAgMHg3Myww
eENELDB4QjAsMHhBQywweDdBLDB4QjgsMHhBMCwweDgwLDB4MTIsMHhCRCwweDZGLDB4QUMsMHg3
NywweDVGLDB4REEsMHg4MCwKLSAgICAweEYxLDB4QkMsMHg0RiwweEE0LDB4NUQsMHhCRiwweEFB
LDB4MEEsMHhEMCwweEI0LDB4MkUsMHhBNCwweDlELDB4QkYsMHhCQSwweDgwLAotICAgIDB4RDAs
MHhCNCwweDJFLDB4OUMsMHg3RiwweEFBLDB4QTIsMHgwOCwweEQwLDB4QjQsMHgyRSwweDlDLDB4
RDUsMHhBQSwweDg4LDB4MDgsCi0gICAgMHhEMCwweEI0LDB4MkUsMHg5QywweDc3LDB4RkEsMHhB
OCwweDgwLDB4QjAsMHhBQywweDBFLDB4OUMsMHg1NSwweEVBLDB4QTgsMHgwQSwKLSAgICAweDhG
LDB4QUMsMHgwRCwweDk0LDB4RDcsMHhGQSwweEE4LDB4QUEsMHg2RiwweEE0LDB4MkUsMHg5Qyww
eEY2LDB4QUEsMHhDMCwweEJBLAotICAgIDB4NkYsMHhBNCwweDBFLDB4OUMsMHhGNSwweEUyLDB4
RUEsMHhGQSwweDRGLDB4QTQsMHhFRCwweDkzLDB4N0UsMHhGQywweEFFLDB4QTIsCi0gICAgMHg2
RiwweEE0LDB4MEUsMHg5QywweEJELDB4QUQsMHg4RCwweEFGLDB4NkYsMHhBNCwweDJFLDB4QTQs
MHg2OCwweDkzLDB4OEUsMHg3NywKLSAgICAweDZGLDB4QTQsMHgwRSwweDlDLDB4QkEsMHhGRiww
eDhGLDB4M0QsMHgyRSwweEE0LDB4Q0MsMHg5MywweDVDLDB4NkEsMHhFQSwweDgwLAotICAgIDB4
MkUsMHhBNCwweENDLDB4OTMsMHgyNSwweDNELDB4OTUsMHgxNywweDkwLDB4QUMsMHgyRSwweEE0
LDB4RUEsMHgyQSwweDI5LDB4QUIsCi0gICAgMHg0NCwweDUxLDB4MDIsMHg0OSwweEJDLDB4QUMs
MHhFNiwweEI1LDB4MjMsMHg0OSwweEUyLDB4NDgsMHgyOCwweDAwLDB4RjAsMHhGMCwKLSAgICAw
eDQzLDB4NTEsMHgwMiwweDQ5LDB4MkYsMHhCNiwweDc3LDB4NzUsMHgyMywweDUxLDB4RTIsMHg0
MCwweEE4LDB4QUYsMHgyRCwweDJELAotICAgIDB4MjMsMHg1MSwweDQzLDB4NDksMHhBMCwweDJB
LDB4MEIsMHg3OCwweDg0LDB4NTksMHgyMywweDUxLDB4RDUsMHg1NSwweEQ1LDB4REMsCi0gICAg
MHg2MywweDU5LDB4MDIsMHg0OSwweEFFLDB4RTgsMHhGQSwweERBLDB4NDMsMHg1MSwweDAyLDB4
NDksMHgzRSwweEI2LDB4NUEsMHhFMywKLSAgICAweDY0LDB4NTksMHgwMiwweDQ5LDB4MjUsMHhG
QiwweEJGLDB4RUYsMHgyMywweDUxLDB4MDIsMHg0OSwweEEyLDB4QzIsMHhBOCwweDJBLAotICAg
IDB4MjMsMHg1MSwweDAyLDB4NDEsMHhGMiwweDcyLDB4RkYsMHhERiwweDIzLDB4NDksMHgwMyww
eDQ5LDB4NTUsMHgxNiwweDM4LDB4MTcsCi0gICAgMHgyMywweDQ5LDB4MDIsMHg0OSwweDVBLDB4
RjAsMHgyOCwweEEwLDB4NDMsMHg0OSwweDAzLDB4NDksMHg1NSwweDU1LDB4MTUsMHhGQiwKLSAg
ICAweDIzLDB4NDksMHhFMiwweDQ4LDB4RTIsMHhBMiwweEE4LDB4RjEsMHgyMywweDQ5LDB4RTIs
MHg0OCwweEI5LDB4QjMsMHhCQSwweDJBLAotICAgIDB4QzgsMHg4MiwweDAyLDB4NDksMHhGNSww
eEI1LDB4MkQsMHgyRiwweDRBLDB4OTMsMHhBNywweDdBLDB4QTksMHg4QiwweEEyLDB4OEEsCi0g
ICAgMHgyOSwweDhCLDB4QzcsMHg4MiwweDc4LDB4RDgsMHg3OCwweDVFLDB4RTgsMHg4MiwweEE3
LDB4N0EsMHhGQSwweDU4LDB4NkEsMHhBQSwKLSAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4M0Ms
MHhFMiwweDIyLDB4MDAsMHhDNywweDgyLDB4NjYsMHg3MiwweDdCLDB4NkYsMHhBQiwweEFGLAot
ICAgIDB4QzcsMHg4MiwweDY2LDB4N0EsMHhGQiwweEU5LDB4RUEsMHhGRSwweEE3LDB4ODIsMHg2
NiwweDcyLDB4M0UsMHgzNiwweERGLDB4QjYsCi0gICAgMHhBNywweDdBLDB4ODcsMHg3QSwweEJE
LDB4MzUsMHhGRiwweERDLDB4ODcsMHg3QSwweDY2LDB4NzIsMHgwOCwweDI4LDB4ODAsMHgwMCwK
LSAgICAweEE4LDB4N0EsMHg0NiwweDcyLDB4RUEsMHhCMiwweEZFLDB4RDcsMHg4NiwweDdBLDB4
MjUsMHg2QSwweDgzLDB4RkEsMHhGQSwweDNFLAotICAgIDB4RTgsMHg4QSwweDQ2LDB4NzIsMHhE
RCwweEVELDB4QUYsMHgyQSwweDRBLDB4OTMsMHg0NywweDcyLDB4RDUsMHhCNywweDJFLDB4MDIs
Ci0gICAgMHhBQiwweEEzLDB4QTgsMHg4MiwweDNELDB4QUIsMHg4QSwweDAwLDB4QUEsMHhBMyww
eDQ5LDB4OTMsMHhBRiwweDhBLDB4QTIsMHg3MiwKLSAgICAweDhBLDB4OUIsMHgyNywweDcyLDB4
MDAsMHg4MCwweEU4LDB4N0UsMHg0OSwweDkzLDB4QzUsMHg2MSwweEE4LDB4RkEsMHg1RiwweDU1
LAotICAgIDB4NjYsMHg3MiwweEM0LDB4NjEsMHhGOCwweDdGLDB4RjcsMHhERCwweDA2LDB4NkEs
MHhDNSwweDYxLDB4Q0UsMHhBRCwweEI1LDB4REYsCi0gICAgMHgyNiwweDZBLDB4QzYsMHg2MSww
eEFBLDB4QTMsMHhFQSwweERFLDB4MjYsMHg2QSwweDIzLDB4NDksMHgwMCwweEEwLDB4N0EsMHg1
RiwKLSAgICAweEU1LDB4NjEsMHgyMywweDQ5LDB4RTgsMHg1RiwweDU1LDB4NTUsMHg2NCwweDUx
LDB4MjMsMHg0OSwweDdBLDB4NUEsMHg1NSwweDU1LAotICAgIDB4NjQsMHg0OSwweDAzLDB4NDEs
MHhBOSwweEJFLDB4QTgsMHhBRiwweDQzLDB4NDksMHgyMywweDQxLDB4MDAsMHg4RSwweEM5LDB4
Q0EsCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0OSwweEY1LDB4RUQsMHg1RCwweEYzLDB4NDMsMHg0
OSwweDAzLDB4NDEsMHhDQSwweDZCLDB4RUUsMHhBMiwKLSAgICAweDQzLDB4NDksMHhFMiwweDQw
LDB4N0EsMHhCQiwweEZBLDB4RTgsMHg0MywweDQ5LDB4RTIsMHg0MCwweDcyLDB4RkEsMHg4Riww
eDJGLAotICAgIDB4ODUsMHg1MSwweDAzLDB4NDEsMHhBRCwweDA3LDB4QUYsMHhBQSwweDg1LDB4
NTEsMHgyMywweDQxLDB4NzAsMHg2QywweEZCLDB4RUEsCi0gICAgMHg2NSwweDQ5LDB4RTMsMHgz
OCwweDBCLDB4RUEsMHhCQSwweDVFLDB4NDQsMHg0MSwweEUzLDB4MzgsMHhEOCwweEFFLDB4QTcs
MHhERiwKLSAgICAweDI0LDB4NDEsMHhDMiwweDMwLDB4MjgsMHhFQSwweDhBLDB4NUUsMHhFMyww
eDMwLDB4ODEsMHgyMCwweEE4LDB4NDgsMHg3QSwweERGLAotICAgIDB4QTIsMHgyOCwweDgxLDB4
MjAsMHg4MiwweDBCLDB4OEIsMHhDMiwweEEyLDB4MjgsMHg4MSwweDIwLDB4NTAsMHg1NiwweDc2
LDB4QTMsCi0gICAgMHhBMiwweDIwLDB4ODEsMHgyMCwweEU1LDB4RUYsMHhCQiwweEYwLDB4QTEs
MHgyMCwweDYxLDB4MTgsMHhEQSwweDVBLDB4NUEsMHg3QSwKLSAgICAweDQxLDB4MjAsMHg2MSww
eDE4LDB4RkQsMHhERCwweDdGLDB4NzcsMHg4MSwweDIwLDB4NDEsMHgxOCwweEFCLDB4M0IsMHgy
RiwweDJCLAotICAgIDB4QTIsMHgyOCwweDYxLDB4MTgsMHhCRiwweDNGLDB4QUYsMHhBQiwweEUz
LDB4MjgsMHg4MiwweDIwLDB4QTMsMHhBQiwweEZGLDB4RTcsCi0gICAgMHgwMywweDMxLDB4QTIs
MHgyOCwweDhGLDB4RUYsMHhENSwweDVGLDB4MjQsMHgzOSwweEMyLDB4MjgsMHhCRiwweEJGLDB4
MDksMHg4OSwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4RjgsMHg5OCwweDVBLDB4NUMsMHgw
MywweDM5LDB4QzIsMHgzMCwweEFGLDB4RjcsMHhFRSwweDgzLAotICAgIDB4RTIsMHgzMCwweEEy
LDB4MjgsMHhGQSwweDVBLDB4NkUsMHhFMCwweEMyLDB4MjgsMHg4MSwweDI4LDB4MjIsMHhBQSww
eDlGLDB4REUsCi0gICAgMHgwMywweDMxLDB4QzIsMHgyOCwweDU1LDB4OTUsMHg5RCwweEI1LDB4
MDMsMHgzMSwweEMyLDB4MjgsMHg1NSwweEY1LDB4QjYsMHhBQywKLSAgICAweDAzLDB4MzEsMHhD
MiwweDI4LDB4RkQsMHhGQSwweEZBLDB4QkUsMHhFMywweDMwLDB4QTIsMHgyOCwweDdBLDB4N0Ms
MHhFRSwweEI2LAotICAgIDB4QzIsMHgzMCwweDgxLDB4MjgsMHgwQiwweEFBLDB4RkEsMHhGOCww
eEUzLDB4MjgsMHg4MSwweDI4LDB4RkIsMHhGRiwweEZELDB4NzUsCi0gICAgMHhBMiwweDI4LDB4
ODEsMHgyOCwweDIwLDB4MjAsMHgyQSwweDBCLDB4QTIsMHgyOCwweDgxLDB4MjAsMHgwMCwweEEw
LDB4QTAsMHhDMiwKLSAgICAweEMyLDB4MjgsMHg4MSwweDI4LDB4MEIsMHhBQiwweEJGLDB4QUYs
MHgwMywweDMxLDB4QTIsMHgyOCwweDNGLDB4RkYsMHhGRiwweDdELAotICAgIDB4RTMsMHgzMCww
eEEyLDB4MjgsMHgzNCwweEFFLDB4RUIsMHhERiwweDAzLDB4MzksMHhBMiwweDI4LDB4QUEsMHhC
RiwweEZGLDB4REQsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDAyLDB4QTcsMHhBRCwweEI2
LDB4MjQsMHgzOSwweEMyLDB4MzAsMHhBRiwweDhELDB4OEYsMHhFNSwKLSAgICAweDI0LDB4Mzks
MHhFMywweDM4LDB4RUYsMHhFQiwweEVCLDB4N0YsMHgwMywweDM5LDB4QzIsMHgzMCwweEZGLDB4
REEsMHhGQSwweEZGLAotICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHhBQiwweDJGLDB4QkYsMHhC
RiwweDIzLDB4MzksMHhFMywweDM4LDB4MkIsMHgzQSwweDNFLDB4RkUsCi0gICAgMHgyMywweDM5
LDB4RTIsMHgzMCwweEIwLDB4QTAsMHhFQSwweEZBLDB4MjMsMHgzOSwweEMyLDB4MzAsMHhGRSww
eEY4LDB4RkUsMHhGQiwKLSAgICAweDAzLDB4MzksMHhDMSwweDMwLDB4QjcsMHgyQiwweEIzLDB4
QUEsMHgyMywweDQxLDB4QzIsMHgzMCwweEFGLDB4QUUsMHgyOSwweDhCLAotICAgIDB4MjMsMHg0
MSwweEMyLDB4MzAsMHg1MiwweDc4LDB4QUMsMHhBOCwweDAzLDB4MzksMHhBMiwweDMwLDB4MkIs
MHg4RiwweEZBLDB4RjIsCi0gICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEZBLDB4N0EsMHg3Riww
eEY3LDB4NjQsMHg0OSwweDAzLDB4NDEsMHhCNSwweDI1LDB4MzUsMHgwNSwKLSAgICAweDg1LDB4
NTEsMHgyMywweDQxLDB4RUYsMHhGRSwweDVDLDB4NUYsMHg4NCwweDUxLDB4MjMsMHg0MSwweEEy
LDB4MkIsMHhGRiwweDc1LAotICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHgyQywweEI0LDB4QjQs
MHhGNiwweDQ0LDB4NDEsMHgwMywweDQxLDB4MjAsMHgwMCwweDI4LDB4MkYsCi0gICAgMHg0Myww
eDQxLDB4RTMsMHgzOCwweEEyLDB4QUEsMHg4NiwweEZFLDB4NDQsMHg0MSwweDAzLDB4NDEsMHg4
QSwweEVGLDB4M0YsMHhENywKLSAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4MkUsMHhCRSwweEY0
LDB4RjYsMHg2NCwweDQ5LDB4MDMsMHg0MSwweDQyLDB4ODIsMHgwMywweEVELAotICAgIDB4QTUs
MHg1MSwweDAzLDB4NDEsMHgyRCwweEFGLDB4RUYsMHhGNSwweDg1LDB4NTEsMHgyMywweDQxLDB4
QUEsMHg4OCwweEUyLDB4RjksCi0gICAgMHhBNSwweDUxLDB4NDMsMHg0MSwweEJGLDB4MkUsMHgy
RiwweEE1LDB4QzUsMHg1MSwweDY0LDB4NDksMHhENSwweEVBLDB4MEEsMHg4QSwKLSAgICAweEU1
LDB4NTksMHg4NCwweDUxLDB4RUQsMHgzRCwweDhCLDB4MEEsMHgyNiwweDYyLDB4QzUsMHg1OSww
eERELDB4QkUsMHhGQiwweDM1LAotICAgIDB4NDcsMHg2QSwweEM1LDB4NTksMHgzRiwweEFGLDB4
QjYsMHhCNywweDBFLDB4QTQsMHg2NywweDZBLDB4MEYsMHgwRiwweDI5LDB4MEQsCi0gICAgMHhE
MSwweEJDLDB4NEYsMHhBQywweDBCLDB4MkQsMHhBRCwweEZELDB4MzIsMHhCRCwweEIwLDB4QjQs
MHgyRiwweDNGLDB4RjUsMHhENSwKLSAgICAweDczLDB4QzUsMHhGMSwweEJDLDB4OEEsMHhCQSww
eEQ3LDB4RDUsMHg1MywweEM1LDB4MTEsMHhCRCwweEZFLDB4MkEsMHgyRiwweDM3LAotICAgIDB4
NzMsMHhDRCwweDExLDB4QkQsMHg3NSwweEFGLDB4QUEsMHg4MCwweDczLDB4QzUsMHhGMCwweEI0
LDB4NTcsMHg3RSwweEFBLDB4MjIsCi0gICAgMHg1MiwweEM1LDB4QUYsMHhBQywweDVELDB4NUUs
MHg1RSwweDdDLDB4RDAsMHhCNCwweDhGLDB4QUMsMHgyQiwweDhCLDB4M0YsMHgxNSwKLSAgICAw
eEQwLDB4QjQsMHg2RiwweEFDLDB4QjIsMHhCQSwweEY4LDB4N0EsMHhCMCwweEFDLDB4NEUsMHhB
NCwweEU4LDB4RTAsMHhGQSwweDU2LAotICAgIDB4OEYsMHhBQywweDJFLDB4QTQsMHhCQSwweEFC
LDB4RUEsMHg3RCwweDZGLDB4QTQsMHgyRSwweEE0LDB4M0YsMHhFQSwweEE5LDB4MjksCi0gICAg
MHg5MCwweEFDLDB4MkUsMHg5QywweDdCLDB4N0UsMHhBQSwweDI4LDB4NkYsMHhBQywweEVELDB4
OUIsMHhGRiwweDVGLDB4RUUsMHhCMCwKLSAgICAweDRGLDB4QTQsMHgwRSwweDlDLDB4M0IsMHhF
QSwweERFLDB4NTYsMHg0RiwweEE0LDB4MEQsMHg5QywweDM4LDB4M0MsMHgyMywweEZCLAotICAg
IDB4NEUsMHhBNCwweDBFLDB4OUMsMHgwQSwweDBBLDB4RUIsMHg3RiwweDZGLDB4QUMsMHgwRCww
eDlDLDB4NjgsMHhFQSwweEJGLDB4RkYsCi0gICAgMHgyRSwweEE0LDB4Q0QsMHg5MywweDM2LDB4
QjgsMHhBQywweEUwLDB4OEYsMHhBQywweDJFLDB4OUMsMHhBQiwweDBELDB4MzksMHgyNSwKLSAg
ICAweDIzLDB4NDksMHhFMiwweDQ4LDB4OUMsMHhDMywweDZCLDB4MkYsMHgyMywweDQ5LDB4RTIs
MHg0MCwweEI4LDB4MjMsMHhGRSwweEVBLAotICAgIDB4MjMsMHg1MSwweEUyLDB4NDAsMHhGRSww
eEZGLDB4OUQsMHgzRCwweDQzLDB4NTEsMHhFMiwweDQ4LDB4QUQsMHgyQiwweEFCLDB4ODgsCi0g
ICAgMHg2MywweDUxLDB4MjMsMHg1MSwweEZBLDB4MTYsMHg0RiwweDZELDB4NjQsMHg1OSwweDIz
LDB4NTEsMHhGRSwweDY3LDB4RUYsMHhFRSwKLSAgICAweDYzLDB4NTksMHgwMywweDQ5LDB4Rjcs
MHhGRiwweDdBLDB4RTgsMHg0MywweDUxLDB4MDIsMHg0OSwweEIwLDB4RTAsMHhCQSwweEE5LAot
ICAgIDB4NDMsMHg1MSwweEUxLDB4NDAsMHhFMiwweEVBLDB4QTIsMHhGOCwweDIzLDB4NTEsMHgw
MiwweDQ5LDB4NjksMHgwQSwweDJELDB4NUQsCi0gICAgMHg0MywweDUxLDB4RTIsMHg0MCwweERF
LDB4RkYsMHgyRSwweEJFLDB4MDIsMHg0OSwweEUyLDB4NDAsMHhCQywweDI4LDB4MzgsMHhCMCwK
LSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4QjAsMHgwQSwweDBBLDB4QkUsMHgwMywweDQ5LDB4
MjIsMHg0MSwweDBBLDB4MDgsMHg4QSwweEEwLAotICAgIDB4MjMsMHg0OSwweEMyLDB4NDAsMHhC
RSwweEFGLDB4M0YsMHg5NywweDQ3LDB4NzIsMHgwMiwweDQ5LDB4RDUsMHhGNSwweEI1LDB4MkQs
Ci0gICAgMHgyOSwweDhCLDB4QTQsMHg2MSwweDJELDB4MEIsMHgwMiwweDAwLDB4NEEsMHg5Myww
eEM4LDB4ODIsMHhBQSwweEVBLDB4N0UsMHhEQywKLSAgICAweDA5LDB4OEIsMHhDOCwweDgyLDB4
NzgsMHhBRiwweEVGLDB4NzcsMHhFOCwweDgyLDB4QTcsMHg4MiwweEFBLDB4NTgsMHg1QiwweEZC
LAotICAgIDB4RTgsMHg4MiwweDg3LDB4N0EsMHg3RSwweEZCLDB4RjIsMHg4MCwweEM4LDB4ODIs
MHg4NywweDdBLDB4RkUsMHg2QSwweDQyLDB4QUIsCi0gICAgMHhDOCwweDgyLDB4ODcsMHg3QSww
eERGLDB4N0YsMHg1QiwweEY4LDB4QzgsMHg4MiwweDg3LDB4N0EsMHg1NSwweEQ1LDB4QUYsMHhC
QiwKLSAgICAweEM3LDB4N0EsMHg2NiwweDdBLDB4QkEsMHhBMiwweDZBLDB4N0EsMHhBNywweDdB
LDB4NDYsMHg3MiwweEUyLDB4RkEsMHhGQiwweDdBLAotICAgIDB4NjYsMHg3QSwweDQ2LDB4NzIs
MHg3NSwweDU2LDB4RDgsMHgxRSwweDZCLDB4OUIsMHg0NSwweDcyLDB4RDUsMHhGNSwweEJELDB4
MkIsCi0gICAgMHhBQiwweEEzLDB4QzcsMHg4MiwweEI1LDB4QUYsMHgyQSwweDAwLDB4Q0IsMHhB
MywweDZBLDB4OUIsMHhBOSwweDhCLDB4MjgsMHhBOCwKLSAgICAweEFCLDB4QTMsMHgwOSwweDhC
LDB4ODgsMHhBMCwweEU4LDB4NTgsMHg2QSwweDlCLDB4RTUsMHg2OSwweDgwLDB4RTAsMHg3OCww
eDVGLAotICAgIDB4ODcsMHg3QSwweEE1LDB4NjEsMHhGOCwweDVFLDB4RDUsMHg1NywweEU2LDB4
NjksMHhBNSwweDYxLDB4NzIsMHg3RSwweEZBLDB4RUYsCi0gICAgMHhFNiwweDYxLDB4QTQsMHg2
MSwweDVFLDB4OUYsMHhBOSwweDJBLDB4MjYsMHg2QSwweDgzLDB4NTksMHhGNywweEJGLDB4QUEs
MHhDQSwKLSAgICAweEU1LDB4NjEsMHg0MywweDUxLDB4RTgsMHhGOCwweDdBLDB4RkIsMHg2NCww
eDUxLDB4MDMsMHg0MSwweEZDLDB4RjYsMHhGQSwweDhBLAotICAgIDB4NjQsMHg0OSwweDAzLDB4
NDEsMHg1RCwweDU3LDB4QkYsMHgyRiwweDY0LDB4NDksMHgwMywweDQxLDB4RUQsMHg4MiwweDIw
LDB4QjAsCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweEVGLDB4RUIsMHg3QywweEZFLDB4NDMs
MHg0OSwweDAzLDB4NDEsMHg4QywweEVBLDB4QkEsMHhDNiwKLSAgICAweDQ0LDB4NDksMHgwMyww
eDQxLDB4QUEsMHhDQSwweDdCLDB4NUQsMHg0MywweDQxLDB4MDMsMHg0MSwweEZBLDB4RkEsMHg3
OSwweDdGLAotICAgIDB4NDMsMHg0OSwweDAzLDB4NDEsMHg3QSwweEZFLDB4NUYsMHhERCwweDQ0
LDB4NDksMHhFMywweDM4LDB4MjcsMHhBQiwweEVGLDB4QkUsCi0gICAgMHg2NCwweDQ5LDB4MDMs
MHg0MSwweDBBLDB4QUEsMHhBOSwweDhCLDB4ODUsMHg1MSwweDIzLDB4NDEsMHhGMCwweEZGLDB4
RjcsMHg1NSwKLSAgICAweDIzLDB4NDEsMHhDMywweDMwLDB4RjgsMHhBQSwweEE4LDB4N0MsMHgw
MywweDM5LDB4QTIsMHgzMCwweDJBLDB4QTgsMHhCRSwweEQ3LAotICAgIDB4RTMsMHgzMCwweEEy
LDB4MjgsMHhFQywweEZFLDB4N0EsMHhDMCwweEEyLDB4MjgsMHg2MSwweDIwLDB4QTgsMHhGQSww
eEY4LDB4RkEsCi0gICAgMHhBMSwweDIwLDB4NjAsMHgyMCwweDgyLDB4MDIsMHgyOSwweEFCLDB4
QzIsMHgyOCwweDgxLDB4MjAsMHhFMiwweDc1LDB4RjcsMHg1NSwKLSAgICAweEEyLDB4MjAsMHg4
MSwweDIwLDB4RjAsMHg3QiwweDU4LDB4NTcsMHg4MSwweDIwLDB4NjEsMHgxOCwweEU4LDB4QUMs
MHhBQSwweENGLAotICAgIDB4QTIsMHgyMCwweDQxLDB4MTgsMHhGRSwweEJFLDB4QTcsMHgyRiww
eEEyLDB4MjAsMHg2MSwweDIwLDB4QUYsMHhCQSwweEEwLDB4MDAsCi0gICAgMHhBMiwweDI4LDB4
ODEsMHgyMCwweDM1LDB4RUQsMHhDQSwweDA4LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhGNSwweEU1
LDB4M0QsMHgyQSwKLSAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4N0YsMHg3RiwweDc4LDB4RTAs
MHgyNCwweDM5LDB4QTIsMHgyOCwweDBGLDB4MDksMHgwOSwweDJGLAotICAgIDB4NDQsMHg0MSww
eEMyLDB4MzAsMHg1QywweDU4LDB4RkMsMHg1QywweDAzLDB4MzksMHhDMiwweDMwLDB4ODEsMHg4
MCwweDhBLDB4RkEsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweDVBLDB4RkEsMHhGQSwweEZF
LDB4QzIsMHgzMCwweDgxLDB4MjgsMHg1QiwweDdFLDB4QkYsMHhBQSwKLSAgICAweEUyLDB4MzAs
MHg4MSwweDIwLDB4MjUsMHg4QiwweEJGLDB4RkYsMHgwMywweDMxLDB4QTEsMHgyOCwweEFFLDB4
MkUsMHg5RCwweEQ1LAotICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHgyMiwweEEwLDB4RkEsMHg3
RSwweEMyLDB4MzAsMHhBMiwweDI4LDB4MkEsMHgyQSwweEVFLDB4QkUsCi0gICAgMHhFMywweDMw
LDB4QTIsMHgyOCwweDVGLDB4NUYsMHg3QSwweDVBLDB4QTIsMHgyOCwweDgyLDB4MjAsMHhGMiww
eDYwLDB4QzAsMHgwMCwKLSAgICAweEEyLDB4MjgsMHg4MSwweDIwLDB4MkUsMHg5RSwweDdGLDB4
Q0IsMHhDMiwweDI4LDB4ODEsMHgyMCwweEVCLDB4OEYsMHg4OSwweEEzLAotICAgIDB4QzIsMHgy
OCwweEEyLDB4MjgsMHhGNywweDZELDB4QzksMHhFOSwweEMxLDB4MjgsMHg4MiwweDI4LDB4QUEs
MHhEQSwweEZFLDB4RkUsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDU3LDB4N0YsMHg2Qiww
eDU5LDB4QzIsMHgzMCwweEEyLDB4MjgsMHhBQiwweEFGLDB4QzksMHg4OCwKLSAgICAweEMyLDB4
MzAsMHhBMiwweDI4LDB4QUMsMHhBQywweEFCLDB4OEIsMHhFMiwweDM4LDB4QTIsMHgyOCwweEFC
LDB4M0YsMHhCRiwweEJGLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBQSwweDVGLDB4N0Ys
MHg1NSwweEUzLDB4MzgsMHhBMiwweDMwLDB4ODgsMHhFQSwweERBLDB4RkYsCi0gICAgMHhFMyww
eDM4LDB4QzIsMHgzMCwweDNFLDB4NTksMHhGRiwweDZELDB4MDMsMHgzOSwweEMyLDB4MzAsMHhG
MiwweEIyLDB4QjUsMHgwRCwKLSAgICAweDIzLDB4MzksMHhFMywweDM4LDB4OEYsMHhCNywweEZF
LDB4OEYsMHgyMywweDM5LDB4QzMsMHgzMCwweEY4LDB4QUEsMHhCRSwweEVCLAotICAgIDB4MDIs
MHg0MSwweEUzLDB4MzAsMHg1NSwweDdGLDB4REYsMHhGRCwweDIzLDB4NDEsMHhFMiwweDMwLDB4
MDksMHgyRiwweDNGLDB4QUYsCi0gICAgMHgyNCwweDQxLDB4RTIsMHgzOCwweEU4LDB4RUMsMHg3
NywweDRELDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBQywweEU3LDB4NkIsMHg3RiwKLSAgICAweDIz
LDB4NDEsMHhDMiwweDMwLDB4QUEsMHgyRiwweDNELDB4RDUsMHg2NCwweDQ5LDB4RTMsMHgzOCww
eDJGLDB4QUEsMHgwMywweDBGLAotICAgIDB4QTUsMHg1MSwweDQzLDB4NDEsMHg1QiwweDYwLDB4
RkUsMHhBQSwweDY0LDB4NDksMHgwMywweDQxLDB4RkIsMHhEQSwweEE4LDB4QkMsCi0gICAgMHg0
NCwweDQ5LDB4QzIsMHgzOCwweEFGLDB4RkUsMHhENCwweEZBLDB4NDQsMHg0MSwweEUyLDB4Mzgs
MHgyQiwweDJGLDB4RUYsMHg3RiwKLSAgICAweDQ0LDB4NDEsMHhDMiwweDM4LDB4RkMsMHg1RSww
eEY3LDB4RUYsMHgwMywweDM5LDB4QzIsMHgzOCwweEJBLDB4RkYsMHg3QSwweEUyLAotICAgIDB4
MjQsMHg0MSwweEUzLDB4MzgsMHhFQSwweDdGLDB4REQsMHhGRiwweDIzLDB4NDEsMHhFMywweDM4
LDB4ODksMHg1RCwweDVGLDB4Q0QsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDhBLDB4RkYs
MHhGRiwweEFBLDB4NDMsMHg0MSwweEUyLDB4MzgsMHgzNywweDI3LDB4RUQsMHhBRCwKLSAgICAw
eDY0LDB4NDksMHgwMiwweDQxLDB4QTgsMHhFQiwweEVGLDB4RjUsMHhBNCwweDUxLDB4MjMsMHg0
MSwweDhCLDB4MkUsMHg3QiwweERGLAotICAgIDB4QzUsMHg1MSwweDQzLDB4NDEsMHgyQSwweEFG
LDB4RUIsMHg1RCwweEU2LDB4NjEsMHg2MywweDQ5LDB4MEEsMHhBQSwweEZGLDB4RDUsCi0gICAg
MHhFNiwweDYxLDB4NDMsMHg0OSwweDIwLDB4QkIsMHhERiwweERGLDB4RUQsMHg5QiwweDA2LDB4
NjIsMHgyRiwweDI5LDB4MkQsMHgyRCwKLSAgICAweDhGLDB4QUMsMHhFRCwweDlCLDB4MEIsMHhB
QSwweEE5LDB4QUIsMHhEMCwweEI0LDB4NEUsMHhBQywweDJFLDB4QUYsMHgzNywweERELAotICAg
IDB4RjEsMHhCQywweDkwLDB4QUMsMHgwMCwweDAwLDB4QUIsMHhCRCwweDUyLDB4QzUsMHhCMCww
eEI0LDB4MkUsMHg5RiwweDU3LDB4RkIsCi0gICAgMHg3MywweENELDB4RjEsMHhCNCwweDgyLDB4
MDIsMHhBRCwweEI1LDB4NzMsMHhDNSwweDMyLDB4QzUsMHhGRCwweEQ2LDB4N0UsMHhBOSwKLSAg
ICAweDUyLDB4QzUsMHhCMCwweEI0LDB4NUEsMHg3QSwweEU4LDB4QTgsMHhGMSwweEJDLDB4NkYs
MHhBQywweEY3LDB4RDcsMHhGRSwweDU4LAotICAgIDB4OTAsMHhBQywweDRGLDB4QTQsMHgwRiww
eEZBLDB4NkEsMHhGOCwweDhGLDB4QUMsMHgyRSwweEE0LDB4RUEsMHg2RiwweDZBLDB4M0EsCi0g
ICAgMHg2RiwweEFDLDB4MEUsMHg5QywweEZGLDB4RkQsMHhBRSwweEE4LDB4NEUsMHhBNCwweDBE
LDB4OUMsMHgyQSwweDcyLDB4RkEsMHhBMCwKLSAgICAweDkwLDB4QUMsMHgyRSwweEE0LDB4MkUs
MHhBMywweEE1LDB4QkYsMHg5MCwweEFDLDB4MEQsMHg5QywweDlBLDB4ODIsMHgwQSwweDBBLAot
ICAgIDB4OTAsMHhBQywweDJFLDB4OUMsMHg1RiwweEZCLDB4QTIsMHhBOCwweDZGLDB4QUMsMHgw
RCwweDlDLDB4RUYsMHhERSwweERFLDB4QkMsCi0gICAgMHg0RSwweEE0LDB4MEUsMHg5QywweEZG
LDB4RUUsMHhBOCwweDAwLDB4NEYsMHhBNCwweEVELDB4OUIsMHgyQSwweDhBLDB4Q0UsMHg2MCwK
LSAgICAweDRFLDB4QTQsMHgwRSwweDlDLDB4N0YsMHg1RiwweEI4LDB4M0YsMHg2RiwweEFDLDB4
MEUsMHg5QywweDA5LDB4MjksMHhBOSwweEFELAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhB
MywweDM1LDB4RkUsMHhGNiwweDQzLDB4NTEsMHhDMiwweDQwLDB4RkEsMHhERSwweEFELDB4MkIs
Ci0gICAgMHg0MywweDUxLDB4RTIsMHg0MCwweEFELDB4M0YsMHgwQiwweDAyLDB4NjQsMHg1OSww
eDIzLDB4NTEsMHhCRCwweDhBLDB4MkEsMHhBQiwKLSAgICAweDg0LDB4NTksMHgwMiwweDQ5LDB4
RkUsMHhGNiwweEZDLDB4RUEsMHg2NCwweDUxLDB4MjIsMHg1MSwweEJGLDB4QjcsMHgxNSwweEY3
LAotICAgIDB4NjMsMHg1OSwweDIzLDB4NTEsMHhEMCwweEI4LDB4REEsMHhGRiwweDQzLDB4NTEs
MHgyMywweDQ5LDB4NTMsMHg2MywweDY4LDB4N0UsCi0gICAgMHgyMywweDQ5LDB4MDMsMHg0OSww
eEI4LDB4QUYsMHgzMSwweEFGLDB4MjMsMHg0OSwweDAyLDB4NDksMHhENywweDk3LDB4MjQsMHg4
QywKLSAgICAweDIzLDB4NDksMHhFMiwweDQ4LDB4OTAsMHhBMiwweEE4LDB4QUEsMHgyMywweDQ5
LDB4RTIsMHg0MCwweDc2LDB4QkEsMHhBMiwweDBBLAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDAs
MHhGMywweEYyLDB4RjAsMHhCOCwweDQ0LDB4NTEsMHhFMiwweDQwLDB4RDcsMHhGRiwweENGLDB4
RTgsCi0gICAgMHhBNCwweDU5LDB4MDMsMHg0OSwweDU1LDB4NTUsMHhENSwweDE1LDB4QUMsMHhB
MywweDQzLDB4NTEsMHhBNSwweDJGLDB4ODMsMHgwQSwKLSAgICAweDQ5LDB4OTMsMHgwOCwweDhC
LDB4NUIsMHg1RSwweDVFLDB4NTYsMHgwOCwweDhCLDB4QzgsMHg4MiwweEQ4LDB4REEsMHgwMiww
eDAzLAotICAgIDB4RTgsMHg4QSwweEM4LDB4ODIsMHhGRSwweEZFLDB4NDAsMHg2QiwweEM3LDB4
ODIsMHhBNywweDgyLDB4QzAsMHg4OCwweEM5LDB4RUUsCi0gICAgMHhDNywweDgyLDB4QTcsMHg3
QSwweDAwLDB4RUMsMHhGOSwweDFBLDB4QzcsMHg4MiwweDg3LDB4N0EsMHgxQiwweDg4LDB4QTAs
MHgwMCwKLSAgICAweEM3LDB4ODIsMHg4NiwweDdBLDB4RUYsMHg5RSwweERBLDB4REMsMHhFNyww
eDgyLDB4ODYsMHg3QSwweEY3LDB4NzcsMHg1NCwweDVGLAotICAgIDB4QTcsMHg4MiwweDQ1LDB4
N0EsMHhFOCwweEZCLDB4N0YsMHhGRSwweEU4LDB4OEEsMHg0NSwweDcyLDB4NTUsMHhGNSwweEJG
LDB4MkYsCi0gICAgMHhBQiwweEEzLDB4NjYsMHg3QSwweEQ1LDB4QjUsMHgyQiwweDAyLDB4Q0Is
MHhBMywweDI5LDB4OTMsMHhBNSwweEEzLDB4MDAsMHgwMCwKLSAgICAweENCLDB4QTMsMHg2QSww
eDlCLDB4MkIsMHgwQSwweDAyLDB4NzgsMHhDQiwweEEzLDB4QTcsMHg3QSwweDgwLDB4QTAsMHhF
OCwweDVFLAotICAgIDB4NDksMHg5MywweDA2LDB4NkEsMHhFMCwweDdFLDB4NUYsMHg1NywweDI3
LDB4NzIsMHg4NCwweDU5LDB4QTgsMHhFRSwweEZFLDB4NUUsCi0gICAgMHhDNSwweDYxLDB4NjQs
MHg1OSwweDI4LDB4RTgsMHhBQiwweEE3LDB4MDYsMHg2QSwweEE0LDB4NTksMHhFRiwweEJELDB4
OUQsMHgzNSwKLSAgICAweDA2LDB4NkEsMHhDNSwweDYxLDB4MEIsMHg2QSwweDdCLDB4NTgsMHgw
NiwweDZBLDB4QTUsMHg1OSwweEM4LDB4RUEsMHg2QSwweDVDLAotICAgIDB4QTUsMHg1OSwweDQ0
LDB4NDksMHg0OCwweEZDLDB4RUMsMHg3QywweDY0LDB4NTEsMHg0NCwweDQ5LDB4QUQsMHhGMiww
eEQwLDB4RjUsCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0OSwweEZBLDB4NUMsMHhGNywweEFFLDB4
NjQsMHg0OSwweEUyLDB4NDAsMHhBQSwweEFCLDB4QUUsMHhGQywKLSAgICAweDQzLDB4NDksMHgw
MywweDQxLDB4QUEsMHhBQSwweEVBLDB4N0EsMHg0MywweDQ5LDB4MDIsMHg0MSwweDBBLDB4Q0Is
MHhFQiwweEZBLAotICAgIDB4NDMsMHg0OSwweDAzLDB4NDEsMHg1QSwweEVGLDB4RkYsMHg3Riww
eDI0LDB4NDksMHhFMywweDQwLDB4OEUsMHhFRiwweEFGLDB4QUYsCi0gICAgMHgyMywweDQ5LDB4
RTIsMHg0MCwweDlGLDB4QUUsMHgzQSwweEZFLDB4NDMsMHg0MSwweEUzLDB4NDAsMHgxRiwweEI3
LDB4QkYsMHhFRiwKLSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4QzIsMHhFMiwweEZCLDB4RkEs
MHg0NCwweDQ5LDB4RTIsMHgzOCwweEY4LDB4RkMsMHg1RSwweDc1LAotICAgIDB4MDMsMHgzOSww
eEEyLDB4MzAsMHhGOCwweEI4LDB4REIsMHhGRCwweEMyLDB4MzAsMHhBMiwweDMwLDB4M0UsMHgz
RSwweDJDLDB4OEEsCi0gICAgMHhFMywweDMwLDB4QzIsMHgzMCwweEVCLDB4REYsMHg4OSwweDgz
LDB4QzIsMHgyOCwweDYxLDB4MjAsMHhGRSwweEQ4LDB4RDgsMHhGOCwKLSAgICAweDgxLDB4MjAs
MHg2MSwweDE4LDB4MDAsMHgyOCwweDI4LDB4QTAsMHg4MSwweDIwLDB4NjEsMHgxOCwweDI4LDB4
QTgsMHhBQSwweENCLAotICAgIDB4ODEsMHgyMCwweDYxLDB4MTgsMHg4MCwweEU4LDB4RkYsMHg1
NSwweDgyLDB4MjAsMHg2MSwweDE4LDB4RUIsMHgyQiwweDg5LDB4MzUsCi0gICAgMHg4MiwweDIw
LDB4NjEsMHgxOCwweDBBLDB4MEYsMHgyOCwweDA4LDB4QTIsMHgyOCwweDgyLDB4MTgsMHgyMiww
eDAxLDB4MDIsMHg4MiwKLSAgICAweEEyLDB4MjgsMHg4MiwweDIwLDB4MEEsMHg4QiwweEFGLDB4
RkEsMHhFMywweDMwLDB4ODEsMHgyOCwweDI4LDB4QTIsMHhGRiwweDk3LAotICAgIDB4MDMsMHgz
MSwweEEyLDB4MjgsMHg4MCwweDhGLDB4OEQsMHhBRiwweDI0LDB4MzksMHhDMiwweDMwLDB4MzUs
MHhCNywweEI1LDB4NTUsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEYwLDB4RjAsMHg3RSww
eERBLDB4RTIsMHgzOCwweEEyLDB4MzAsMHhGMiwweEUyLDB4RUIsMHg2MCwKLSAgICAweDA0LDB4
MzksMHhBMiwweDI4LDB4RkUsMHhFQSwweDhGLDB4QjUsMHgwMywweDM5LDB4QTIsMHgyOCwweEZG
LDB4RUYsMHhBMiwweEEyLAotICAgIDB4MDIsMHgzMSwweDgwLDB4MjgsMHg3RiwweDdFLDB4Qjgs
MHhBOCwweEMyLDB4MzAsMHhBMSwweDI4LDB4OUQsMHhENSwweDdGLDB4RTgsCi0gICAgMHhDMiww
eDI4LDB4ODEsMHgyMCwweEY4LDB4RUUsMHg3QSwweEUwLDB4RTMsMHgyOCwweDgxLDB4MjgsMHhG
RiwweEZGLDB4QjUsMHhGNSwKLSAgICAweEMyLDB4MjgsMHg4MiwweDIwLDB4RTAsMHg2OCwweDZB
LDB4QUUsMHhDMiwweDMwLDB4QTIsMHgyOCwweEQ1LDB4QjUsMHhFNSwweEE5LAotICAgIDB4QzIs
MHgzMCwweEEyLDB4MjgsMHg3NSwweDU1LDB4QkQsMHhGRSwweEUzLDB4MzAsMHg4MSwweDI4LDB4
RkYsMHhGNywweEJGLDB4OEIsCi0gICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweDc1LDB4RjQsMHhF
MCwweDVGLDB4QzIsMHgyOCwweDgxLDB4MjAsMHhGNiwweDhGLDB4ODIsMHhFQSwKLSAgICAweEMy
LDB4MzAsMHhBMiwweDI4LDB4MkIsMHhBQSwweDgxLDB4REIsMHhFMywweDMwLDB4QTIsMHgyOCww
eEZCLDB4MkYsMHgzQSwweDU2LAotICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHhFRiwweEY1LDB4
MzcsMHhBRiwweDAzLDB4MzksMHhDMiwweDMwLDB4NTUsMHg2NSwweENCLDB4QUYsCi0gICAgMHhF
MiwweDMwLDB4QTIsMHgyOCwweEJCLDB4RjUsMHhFRiwweEY4LDB4RTIsMHgzMCwweEEyLDB4MzAs
MHhGRiwweEFBLDB4QTMsMHhBOCwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RTksMHhGOSww
eDdGLDB4REQsMHg0NCwweDQxLDB4QzIsMHgzMCwweEI1LDB4M0QsMHgyRiwweEJGLAotICAgIDB4
NDQsMHg0MSwweDAzLDB4MzksMHg2RiwweEFBLDB4OEUsMHgwOSwweDQ0LDB4NDEsMHhFMywweDM4
LDB4RkIsMHg2QiwweEVBLDB4RTIsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEFCLDB4ODcs
MHgzRiwweEJCLDB4MjMsMHgzOSwweDAyLDB4MzksMHhFOSwweDY5LDB4NTksMHg0MiwKLSAgICAw
eDAzLDB4MzksMHhDMiwweDMwLDB4NjgsMHhCOCwweDBFLDB4QUMsMHgwMywweDM5LDB4QzIsMHgz
MCwweERGLDB4QkUsMHg5QywweENDLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHg3RCwweEY3
LDB4RUIsMHhGMywweDY0LDB4NDksMHhDMiwweDMwLDB4MEQsMHgzRCwweDJELDB4MkYsCi0gICAg
MHhDNSwweDU5LDB4NjQsMHg0OSwweDczLDB4RTgsMHhFQiwweDhFLDB4ODUsMHg1MSwweDAzLDB4
NDEsMHhEQSwweDdBLDB4RDAsMHhBOCwKLSAgICAweDI0LDB4NDEsMHhDMiwweDM4LDB4QTAsMHg4
MiwweDYwLDB4RUEsMHgwMywweDM5LDB4QzIsMHgzMCwweEUwLDB4RTIsMHhBOSwweDI1LAotICAg
IDB4MDMsMHg0MSwweEUyLDB4MzAsMHgzNywweDhGLDB4RjksMHhGNSwweDQ0LDB4NDEsMHhFMyww
eDM4LDB4RTUsMHhBOSwweDI5LDB4MEIsCi0gICAgMHgyMywweDM5LDB4RTIsMHgzOCwweEFBLDB4
RUEsMHg3OCwweEU4LDB4MjMsMHgzOSwweEUyLDB4MzgsMHg5NSwweDk3LDB4QkYsMHhGQiwKLSAg
ICAweDI0LDB4NDEsMHhDMiwweDMwLDB4QjcsMHhCRSwweEZGLDB4MkIsMHg2NCwweDQ5LDB4RTMs
MHgzOCwweEU1LDB4RUYsMHhBQiwweDJBLAotICAgIDB4ODUsMHg0OSwweDIzLDB4NDEsMHhGRiww
eEY1LDB4MkIsMHgwQSwweDg0LDB4NDksMHg0NCwweDQ5LDB4NUYsMHg4QiwweDAxLDB4OEEsCi0g
ICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweEUyLDB4NjgsMHhFMiwweDA4LDB4RTYsMHg1OSwweDQ0
LDB4NDksMHhGRCwweDdGLDB4RUYsMHgwQiwKLSAgICAweEM1LDB4NTksMHg2NCwweDQ5LDB4OTYs
MHhGNSwweEEyLDB4MEMsMHhBQywweDkzLDB4QTQsMHg1MSwweDJELDB4M0QsMHhBRCwweEFELAot
ICAgIDB4NkYsMHhBQywweENELDB4OTMsMHg4QSwweDg5LDB4QTksMHg4RCwweDZGLDB4QUMsMHgy
RSwweEE0LDB4OEEsMHgzQSwweDI3LDB4QTUsCi0gICAgMHhCMCwweEI0LDB4MkUsMHhBNCwweDBB
LDB4QUEsMHhCRiwweDVGLDB4MzEsMHhCRCwweDRGLDB4QTQsMHgyMiwweDJBLDB4QUQsMHhGNSwK
LSAgICAweDUyLDB4QzUsMHhEMCwweEI0LDB4QUYsMHhBQSwweEEyLDB4ODksMHgzMiwweEM1LDB4
RDAsMHhCNCwweDBBLDB4MDAsMHg2RSwweEY4LAotICAgIDB4NTIsMHhDNSwweEQwLDB4QjQsMHhF
OCwweEFBLDB4RkYsMHg3RiwweEQwLDB4QjQsMHg2RiwweEFDLDB4NzgsMHhGOCwweEU4LDB4QUUs
Ci0gICAgMHhCMCwweEFDLDB4NkYsMHhBQywweDdGLDB4RUIsMHhCRSwweEFBLDB4QjAsMHhCNCww
eDRFLDB4QTQsMHhGNSwweEZFLDB4QjIsMHhFMCwKLSAgICAweDhGLDB4QUMsMHg0RiwweEE0LDB4
N0EsMHg3QSwweEJELDB4REQsMHg2RiwweEFDLDB4MkUsMHhBNCwweDlFLDB4MkUsMHgyOCwweDJB
LAotICAgIDB4OTAsMHhBQywweDRGLDB4QTQsMHg1NSwweDBBLDB4MEUsMHhBQywweDhGLDB4QUMs
MHg0RiwweEE0LDB4QkYsMHhGRSwweEU5LDB4QUYsCi0gICAgMHg4RiwweEFDLDB4NEYsMHhBNCww
eERCLDB4RUUsMHhGRSwweEFBLDB4OEYsMHhBQywweDJFLDB4QTQsMHhEQSwweEYyLDB4MkEsMHhD
QiwKLSAgICAweDkwLDB4QUMsMHg0RSwweEE0LDB4RkYsMHg1QSwweEQyLDB4QjcsMHg2RiwweEFD
LDB4MkUsMHhBNCwweDVDLDB4RUUsMHhDMiwweEEzLAotICAgIDB4OEYsMHhCNCwweDBFLDB4QTQs
MHhGNSwweDZCLDB4RUIsMHg4QSwweDZGLDB4QUMsMHgyRSwweEE0LDB4QUQsMHhGOSwweDlBLDB4
ODAsCi0gICAgMHgwMiwweDQ5LDB4RTIsMHg0MCwweEY2LDB4REMsMHhGNSwweDM1LDB4ODQsMHg1
OSwweDAzLDB4NDksMHhBRCwweDM1LDB4QjUsMHhBRCwKLSAgICAweDYzLDB4NTksMHg0MywweDUx
LDB4NkYsMHhDMiwweEU5LDB4NzcsMHg2NCwweDU5LDB4MjMsMHg1MSwweEYyLDB4RTMsMHhGRiww
eEZFLAotICAgIDB4ODQsMHg1OSwweDIyLDB4NTEsMHg1NiwweEQ3LDB4RjcsMHhGNywweDYzLDB4
NTksMHgwMiwweDQ5LDB4N0EsMHgzRSwweEZBLDB4RjgsCi0gICAgMHg0MywweDUxLDB4MDIsMHg0
OSwweDhBLDB4QTgsMHgzQSwweDdFLDB4NDMsMHg0OSwweDAyLDB4NDksMHg3QiwweEY4LDB4RDgs
MHg5NSwKLSAgICAweDIzLDB4NDksMHgwMiwweDQ5LDB4MzYsMHgwRiwweDA3LDB4MUYsMHg0Myww
eDUxLDB4MDMsMHg0OSwweDZGLDB4NkEsMHg1RSwweDU1LAotICAgIDB4MjMsMHg0OSwweEUyLDB4
NDAsMHhGRSwweEFCLDB4MEEsMHgyRSwweDIzLDB4NDksMHhDMSwweDQwLDB4OEUsMHhCNiwweDhF
LDB4QTgsCi0gICAgMHg0MywweDQ5LDB4RTIsMHg0MCwweDNFLDB4REYsMHhERiwweEZGLDB4MjMs
MHg0OSwweEUyLDB4NDAsMHhFMCwweEUwLDB4RTIsMHhGMiwKLSAgICAweEE3LDB4N0EsMHgwMiww
eDQxLDB4OTUsMHhCNSwweDI1LDB4MjUsMHgwQywweEFDLDB4MkEsMHg4QiwweDg5LDB4ODMsMHgw
MiwweDAyLAotICAgIDB4QUIsMHhBMywweDA4LDB4OEIsMHg1RiwweEU4LDB4RjgsMHhCQSwweDY5
LDB4OTMsMHhFNywweDhBLDB4NUYsMHhGRSwweDY4LDB4QTIsCi0gICAgMHgwOCwweDhCLDB4Qzgs
MHg4QSwweEVGLDB4RjgsMHhFMCwweEIwLDB4RTgsMHg4QSwweEE3LDB4ODIsMHhCRiwweEFFLDB4
RkMsMHhEQSwKLSAgICAweEU3LDB4ODIsMHg4NiwweDdBLDB4NkIsMHhFQSwweDJBLDB4QUYsMHhF
OCwweDgyLDB4QTcsMHg3QSwweDc3LDB4NTcsMHhGOCwweDZFLAotICAgIDB4QzcsMHg4MiwweDg2
LDB4N0EsMHg2RSwweDdBLDB4RjgsMHg1OCwweEE2LDB4ODIsMHg2NiwweDdBLDB4OTIsMHhEQSww
eEU1LDB4RUIsCi0gICAgMHgyOSwweDkzLDB4ODYsMHg3QSwweDU1LDB4NTUsMHhGNSwweDBGLDB4
QUIsMHhBMywweDg3LDB4ODIsMHhBNSwweDJGLDB4MEEsMHgwMiwKLSAgICAweENCLDB4QTMsMHg4
QSwweDlCLDB4QTksMHgwRiwweDI4LDB4MDAsMHhFQywweEFCLDB4OEEsMHg5QiwweEU4LDB4Qjgs
MHhGRSwweDVFLAotICAgIDB4OEIsMHg5QiwweDI2LDB4NzIsMHg4MCwweEUwLDB4NzgsMHg1Niww
eEM4LDB4ODIsMHgyNiwweDZBLDB4NzgsMHg1NiwweDU1LDB4NTUsCi0gICAgMHg0NywweDcyLDB4
MDUsMHg2QSwweDdFLDB4QjcsMHg3NSwweDU3LDB4RTUsMHg2OSwweDg0LDB4NTksMHg3QSwweDc4
LDB4N0MsMHhENiwKLSAgICAweEM1LDB4NjEsMHg4NCwweDU5LDB4MkYsMHgyRCwweDJBLDB4QUYs
MHgwNSwweDZBLDB4QTQsMHg1OSwweDJCLDB4QUYsMHgyRiwweDJELAotICAgIDB4MjYsMHg2QSww
eEM1LDB4NjEsMHg1RSwweERDLDB4N0UsMHg1RSwweDA2LDB4NkEsMHg2NCwweDUxLDB4NzgsMHg3
QiwweDVGLDB4NUYsCi0gICAgMHg4NSwweDU5LDB4MjMsMHg0MSwweEYwLDB4RkEsMHg3RSwweDVG
LDB4NjQsMHg0OSwweDIzLDB4NDksMHhBOSwweDE1LDB4QjUsMHgyRSwKLSAgICAweDY0LDB4NDks
MHgyMywweDQxLDB4QjcsMHhCNiwweDNBLDB4ODIsMHg2NCwweDQ5LDB4MDMsMHg0MSwweEZDLDB4
NjAsMHhBQiwweEFBLAotICAgIDB4NDMsMHg0OSwweDAzLDB4NDEsMHg1QiwweDdELDB4NzIsMHhB
QSwweEE1LDB4NTEsMHgwMiwweDQxLDB4N0YsMHg3RiwweEJGLDB4MEIsCi0gICAgMHhDNSwweDYx
LDB4QzIsMHgzOCwweEZGLDB4RkYsMHg4QSwweDAwLDB4RTYsMHg2MSwweEUyLDB4NDAsMHhENSww
eEZGLDB4QUIsMHgwMCwKLSAgICAweEU1LDB4NTksMHgyMywweDQxLDB4NTUsMHhERiwweEFBLDB4
MDAsMHhDNiwweDU5LDB4MDMsMHg0MSwweDU1LDB4RkYsMHhBMCwweDgwLAotICAgIDB4NjQsMHg0
OSwweDAzLDB4NDEsMHg3QSwweEZFLDB4QkMsMHhGRSwweDIzLDB4NDEsMHhDMiwweDM4LDB4RkIs
MHg5QSwweEZFLDB4RjAsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEZGLDB4N0MsMHg3NCww
eDU2LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCOSwweDJCLDB4QjksMHhGRCwKLSAgICAweEUzLDB4
MzAsMHhBMiwweDI4LDB4QTgsMHhGQSwweEYwLDB4NzksMHhDMiwweDI4LDB4ODEsMHgyMCwweDVB
LDB4N0UsMHg3QSwweDVGLAotICAgIDB4QTIsMHgyMCwweDYxLDB4MjAsMHhGRiwweEZBLDB4RUEs
MHg4MywweEEyLDB4MjAsMHg2MSwweDE4LDB4Q0IsMHhFQSwweDdGLDB4RUUsCi0gICAgMHg2MSww
eDE4LDB4NDEsMHgxOCwweEFCLDB4MkYsMHgwRiwweDA4LDB4QTIsMHgyMCwweDQxLDB4MTgsMHhG
RiwweERGLDB4RkYsMHgyRSwKLSAgICAweEMyLDB4MjgsMHg4MiwweDIwLDB4RjksMHhBOSwweEFC
LDB4OEEsMHhDMiwweDI4LDB4ODEsMHgyMCwweEVCLDB4QkEsMHhFOCwweEVFLAotICAgIDB4QTIs
MHgyOCwweDgyLDB4MjAsMHhCQywweDk0LDB4M0QsMHgzRiwweEEyLDB4MjgsMHg4MSwweDI4LDB4
MEUsMHg4OCwweEI4LDB4ODAsCi0gICAgMHhFMywweDMwLDB4ODEsMHgyOCwweDhCLDB4QUIsMHg3
RiwweEZGLDB4QzIsMHgzMCwweDgyLDB4MjgsMHgzQSwweEFGLDB4OEYsMHgwRiwKLSAgICAweEUy
LDB4MzAsMHhBMiwweDI4LDB4REUsMHg5RCwweDJELDB4OEIsMHhFMywweDMwLDB4QTIsMHgzMCww
eEYwLDB4RkEsMHhGRSwweERGLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHhBRCwweEFBLDB4
QkEsMHhGRSwweDAzLDB4MzksMHhDMiwweDMwLDB4QUEsMHg4MywweDAzLDB4QTEsCi0gICAgMHhF
MiwweDMwLDB4QzIsMHgzMCwweEY4LDB4RTAsMHgwMCwweDAwLDB4MDMsMHgzOSwweEExLDB4Mjgs
MHhGRiwweERGLDB4RDcsMHg3MiwKLSAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4N0IsMHhGRiww
eEFCLDB4MkIsMHgwNCwweDM5LDB4QTIsMHgyOCwweDU1LDB4NTcsMHg3RSwweEY4LAotICAgIDB4
QzIsMHgzMCwweEEyLDB4MjgsMHhGRCwweDNELDB4OUEsMHg5QSwweEUzLDB4MzAsMHhBMiwweDI4
LDB4RTksMHg3RiwweEZBLDB4NjgsCi0gICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweEFBLDB4QUYs
MHgyRCwweEFFLDB4RTIsMHgzMCwweEEyLDB4MjgsMHg4QiwweEVGLDB4RUUsMHhGRiwKLSAgICAw
eEMyLDB4MzAsMHhBMiwweDI4LDB4RDcsMHhBNSwweEE2LDB4RjcsMHhFMywweDMwLDB4ODEsMHgy
OCwweDJCLDB4N0EsMHg3RiwweEZGLAotICAgIDB4QzIsMHgyOCwweDgxLDB4MjgsMHgzQiwweEE5
LDB4RkQsMHhBRCwweEMzLDB4MzAsMHg4MiwweDI4LDB4QjgsMHhBRSwweEZBLDB4RkUsCi0gICAg
MHhDMiwweDI4LDB4ODEsMHgyOCwweDAwLDB4MjIsMHhBRiwweDBGLDB4RTIsMHgzMCwweEMyLDB4
MjgsMHhBRiwweDlGLDB4MjcsMHgyNSwKLSAgICAweEUyLDB4MzAsMHhDMiwweDMwLDB4RDQsMHhG
MCwweEEyLDB4RkQsMHhFMiwweDMwLDB4QTIsMHgzMCwweEM4LDB4ODAsMHg4MCwweEEyLAotICAg
IDB4MDMsMHgzOSwweEEyLDB4MzAsMHhFRiwweEZELDB4QUEsMHhFOCwweDAzLDB4MzksMHhDMiww
eDMwLDB4QTcsMHhENywweEVGLDB4RUYsCi0gICAgMHgyNCwweDM5LDB4QzMsMHgzMCwweEFCLDB4
MkYsMHgzQiwweEZGLDB4NDQsMHg0MSwweDAzLDB4MzksMHhFQSwweEVBLDB4RUIsMHg3RCwKLSAg
ICAweDAzLDB4MzksMHhDMiwweDMwLDB4QkEsMHgzRSwweEU2LDB4NTQsMHgyMywweDM5LDB4RTIs
MHgzMCwweEEwLDB4RUEsMHhCNSwweEY3LAotICAgIDB4MDIsMHgzOSwweEMyLDB4MzAsMHhCRSww
eDlFLDB4QkIsMHhGQSwweDAzLDB4MzksMHhDMiwweDMwLDB4MDgsMHhBMiwweEQ4LDB4REEsCi0g
ICAgMHhFMiwweDM4LDB4MDMsMHgzMSwweDA4LDB4ODAsMHg4MCwweDZBLDB4ODUsMHg1MSwweDAz
LDB4MzksMHgyNSwweDI1LDB4QkQsMHhCRCwKLSAgICAweEE1LDB4NTEsMHg0NCwweDQxLDB4MDIs
MHhDQSwweDdCLDB4NUYsMHg4NSwweDQ5LDB4MjQsMHg0MSwweEU4LDB4RTIsMHhFQSwweERGLAot
ICAgIDB4NDQsMHg0OSwweEMzLDB4MzgsMHhFRSwweDdBLDB4N0EsMHhFQywweDAzLDB4MzksMHhD
MiwweDMwLDB4MjQsMHgwRiwweDJGLDB4QTksCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDND
LDB4RTgsMHhFRiwweEFGLDB4MjMsMHgzOSwweEUzLDB4MzgsMHgwMiwweDNELDB4RkIsMHhFNiwK
LSAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4QzgsMHhGQSwweEY3LDB4RjUsMHgwMywweDM5LDB4
QzIsMHgzMCwweEEyLDB4MkMsMHhGNywweEZGLAotICAgIDB4MjQsMHg0MSwweDAzLDB4MzksMHhC
NywweEEzLDB4MEIsMHhBNSwweDY0LDB4NDksMHgyNCwweDQxLDB4QkQsMHhGNSwweEFELDB4Mjks
Ci0gICAgMHhBNSwweDUxLDB4MjMsMHg0MSwweEE5LDB4MEIsMHgwMywweDAwLDB4RTYsMHg1OSww
eDg1LDB4NTEsMHg1NSwweEZELDB4QUQsMHgzRiwKLSAgICAweEU2LDB4NTksMHg0MywweDQ5LDB4
RDcsMHhCQSwweEI4LDB4QTAsMHhFNiwweDU5LDB4QTUsMHg1MSwweDg5LDB4MEEsMHg4MiwweEFC
LAotICAgIDB4MDYsMHg2MiwweEE1LDB4NDksMHhCRiwweEIyLDB4QUYsMHhGRSwweDRCLDB4ODMs
MHhFNSwweDU5LDB4MkQsMHgyRCwweDJELDB4MkQsCi0gICAgMHgyRSwweEE0LDB4OEMsMHg4Qiww
eDJCLDB4QUQsMHhBRiwweEFELDB4NEYsMHhBNCwweEVELDB4OUIsMHgwRSwweEE3LDB4QkQsMHhG
NSwKLSAgICAweDZGLDB4QUMsMHgwRSwweEE0LDB4MEIsMHhBRiwweDdGLDB4REYsMHg4RiwweEFD
LDB4MkUsMHhBNCwweDI3LDB4QUEsMHhBQiwweEZELAotICAgIDB4RjEsMHhCQywweDBFLDB4QTQs
MHgwQSwweEFGLDB4QkYsMHhENywweEYxLDB4QkMsMHhCMCwweEI0LDB4QTgsMHhCQiwweEJCLDB4
OTUsCi0gICAgMHgxMSwweEJELDB4QjAsMHhCNCwweDAyLDB4MEEsMHgyQSwweEJELDB4MzEsMHhC
RCwweEIwLDB4QjQsMHg1NywweDdDLDB4RkEsMHhBQSwKLSAgICAweEYwLDB4QkMsMHg4RiwweEFD
LDB4REYsMHhERSwweEJFLDB4RkEsMHhCMCwweEI0LDB4NkYsMHhBQywweDdCLDB4QUEsMHhFRiww
eEJDLAotICAgIDB4OTAsMHhBQywweDRGLDB4QTQsMHhENywweEZBLDB4OTAsMHhCOCwweDhGLDB4
QUMsMHgyRSwweEE0LDB4OEYsMHg5QSwweDgyLDB4QTIsCi0gICAgMHhBRiwweEI0LDB4NEYsMHhB
NCwweEJELDB4RkYsMHhGRiwweDczLDB4OEYsMHhBQywweDRGLDB4QTQsMHhBQiwweEJGLDB4Rjcs
MHg3NSwKLSAgICAweDhGLDB4QUMsMHgyRSwweEE0LDB4MEEsMHgyQSwweDJCLDB4RTksMHg5MCww
eEFDLDB4NEUsMHhBNCwweEU3LDB4RUUsMHhFMiwweEFCLAotICAgIDB4OEYsMHhBQywweDRFLDB4
QTQsMHhFMiwweEFBLDB4QUIsMHhGNywweDZGLDB4QUMsMHgyRSwweEE0LDB4QkIsMHgwQywweEEw
LDB4QkEsCi0gICAgMHg4RiwweEFDLDB4MkUsMHhBNCwweDJDLDB4RkYsMHg2RiwweEZCLDB4NkYs
MHhBQywweDBELDB4OUMsMHgyOCwweEJCLDB4OUYsMHhGRiwKLSAgICAweDY0LDB4NTksMHhFMiww
eDQwLDB4RjUsMHhBQiwweDJBLDB4QUEsMHg2NCwweDUxLDB4MjMsMHg1MSwweEJELDB4QjksMHgy
RiwweEUzLAotICAgIDB4ODQsMHg1OSwweDQzLDB4NTEsMHg3RiwweERDLDB4RUUsMHhCRiwweDg0
LDB4NTksMHg0MywweDUxLDB4N0QsMHg3OSwweEFCLDB4RUUsCi0gICAgMHg2NCwweDU5LDB4MjIs
MHg1MSwweEY1LDB4NTYsMHhCQywweEU4LDB4NDMsMHg1MSwweDAyLDB4NDksMHhCOCwweERBLDB4
RTgsMHhGQSwKLSAgICAweDY0LDB4NTEsMHgwMiwweDQ5LDB4RkYsMHhCRiwweDdGLDB4RjIsMHgy
MywweDQ5LDB4RTIsMHg0MCwweDI5LDB4M0UsMHhEQSwweDAyLAotICAgIDB4NDMsMHg1MSwweDAz
LDB4NDksMHhGNiwweEZGLDB4QkEsMHhBRiwweDIzLDB4NDksMHgwMiwweDQxLDB4ODAsMHg0Miww
eEEwLDB4N0EsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweDNCLDB4MjMsMHhBRiwweDlGLDB4
MjMsMHg0OSwweEUyLDB4NDAsMHhBMCwweDNFLDB4QkUsMHgyRSwKLSAgICAweDIzLDB4NDksMHgw
MiwweDQxLDB4MUIsMHhGNiwweEQ2LDB4RkMsMHg0NCwweDQ5LDB4MDIsMHg0OSwweDVGLDB4NTcs
MHg5NSwweDk1LAotICAgIDB4OEEsMHg5QiwweDQzLDB4NTEsMHhCNSwweDJELDB4MkQsMHgyRCww
eDBDLDB4QUMsMHg4QSwweDkzLDB4ODIsMHhBQSwweDYyLDB4RTIsCi0gICAgMHhBQiwweDlCLDB4
NDksMHg5MywweEZDLDB4RjgsMHhGQSwweERELDB4NjksMHg5QiwweDA4LDB4OEIsMHhFMCwweDc4
LDB4RkMsMHg3OCwKLSAgICAweDA4LDB4OEIsMHhFOCwweDhBLDB4ODAsMHg3NywweEZFLDB4OUMs
MHgwOCwweDhCLDB4QTcsMHg4MiwweEJGLDB4NkYsMHhFRiwweEIyLAotICAgIDB4RTgsMHg4Miww
eEE3LDB4ODIsMHhCRSwweDdCLDB4QUUsMHhBQiwweEM3LDB4ODIsMHg4NiwweDdBLDB4RUUsMHhF
QSwweDgzLDB4Q0EsCi0gICAgMHhDNywweDgyLDB4ODcsMHg3QSwweEJBLDB4RUYsMHhCRiwweEFB
LDB4OEEsMHg5QiwweDg3LDB4N0EsMHg1RCwweEI3LDB4MkYsMHgwQiwKLSAgICAweENCLDB4QTMs
MHgwOCwweDhCLDB4MjUsMHgwOSwweDAyLDB4MDAsMHhFQSwweEFCLDB4QUIsMHhBMywweDY1LDB4
RUYsMHhGQiwweEZBLAotICAgIDB4RUMsMHhBQiwweEM4LDB4ODIsMHgyMCwweEE4LDB4RjAsMHg3
RSwweDhBLDB4OUIsMHg0NiwweDcyLDB4RTAsMHg3OCwweDVFLDB4NTUsCi0gICAgMHg2NywweDdB
LDB4MDUsMHg2QSwweERDLDB4RkYsMHg3RiwweDc3LDB4NjcsMHg3MiwweDA2LDB4NkEsMHhGRCww
eEFELDB4QUQsMHg4QiwKLSAgICAweDI2LDB4NkEsMHg4NCwweDUxLDB4ODAsMHhFOCwweDQwLDB4
NjAsMHhDNSwweDU5LDB4NDMsMHg1MSwweERDLDB4RkYsMHhCRiwweDJGLAotICAgIDB4RTUsMHg2
MSwweDg0LDB4NTEsMHhFRCwweEFCLDB4QUEsMHhBQSwweDA2LDB4NjIsMHhDNSwweDU5LDB4QTcs
MHhGQiwweDcyLDB4N0IsCi0gICAgMHhFNSwweDYxLDB4NDQsMHg1MSwweEE4LDB4NjgsMHg3OCww
eDc3LDB4QTUsMHg1OSwweDIzLDB4NDksMHhDQSwweEVBLDB4RUQsMHhGRSwKLSAgICAweDY0LDB4
NDksMHgyNCwweDQ5LDB4RDYsMHhENiwweEQyLDB4RjUsMHg4NCwweDUxLDB4NDQsMHg0OSwweDk5
LDB4QjUsMHhGNSwweEI1LAotICAgIDB4ODUsMHg1MSwweDIzLDB4NDEsMHhGQywweEZGLDB4RkUs
MHhGQSwweDY0LDB4NTEsMHgyMywweDQxLDB4RkUsMHhGNiwweEZFLDB4MzMsCi0gICAgMHgyNiww
eDZBLDB4NDMsMHg0OSwweEQ1LDB4QkQsMHgyQiwweDBBLDB4MjYsMHg2QSwweEE1LDB4NTEsMHhC
NSwweEVFLDB4RTAsMHhBMCwKLSAgICAweEU2LDB4NjEsMHg0MywweDUxLDB4MDAsMHg4MiwweEUw
LDB4RkEsMHgwNiwweDYyLDB4NDMsMHg0OSwweDhBLDB4MkEsMHhCRiwweDU1LAotICAgIDB4QzUs
MHg1OSwweDYzLDB4NDksMHgwMCwweEE4LDB4RUEsMHg1RCwweEM1LDB4NTksMHgyMiwweDQxLDB4
RTAsMHhGQSwweEZFLDB4N0YsCi0gICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDAwLDB4QUMsMHg1
RSwweDVFLDB4MDMsMHgzOSwweEMyLDB4MzgsMHhDMCwweEFBLDB4RkMsMHhCQywKLSAgICAweEUy
LDB4MzAsMHg4MSwweDI4LDB4RkUsMHg3OCwweEZBLDB4RUEsMHhDMiwweDMwLDB4NjEsMHgyMCww
eEFBLDB4RUEsMHhGQSwweDdBLAotICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHhFMywweDhELDB4
N0QsMHg3RCwweEEyLDB4MjgsMHg2MSwweDIwLDB4QkEsMHg3RSwweDU2LDB4NUYsCi0gICAgMHhB
MiwweDIwLDB4NjEsMHgxOCwweEVBLDB4REIsMHhENywweDU3LDB4ODEsMHgyMCwweDQxLDB4MTgs
MHgwMiwweEUwLDB4RkUsMHhFMiwKLSAgICAweDgxLDB4MjAsMHg0MSwweDE4LDB4RkYsMHg1Riww
eEJGLDB4MkUsMHhDMiwweDI4LDB4NjEsMHgxOCwweEJELDB4M0QsMHgyRiwweDJFLAotICAgIDB4
QzMsMHgyOCwweEEyLDB4MjgsMHhDQiwweEZFLDB4RTAsMHg4MCwweEMyLDB4MjgsMHg4MSwweDIw
LDB4RkEsMHhGQSwweERFLDB4QTIsCi0gICAgMHhBMiwweDI4LDB4ODIsMHgyMCwweDJGLDB4QUIs
MHhFMywweDJFLDB4QzIsMHgyOCwweDgxLDB4MjgsMHhGQiwweEVGLDB4QUIsMHhBQSwKLSAgICAw
eEMyLDB4MjgsMHg2MSwweDI4LDB4MkIsMHhBQSwweDhBLDB4MDIsMHgwMywweDMxLDB4QTIsMHgy
OCwweEY1LDB4QjUsMHgzOSwweDNBLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHg1NywweDdF
LDB4QkMsMHg4MiwweDAzLDB4MzEsMHhDMiwweDMwLDB4RDcsMHg2NSwweEFGLDB4RUIsCi0gICAg
MHhDMiwweDMwLDB4ODIsMHgyOCwweEE4LDB4RkMsMHhGMCwweDc4LDB4RTIsMHgzMCwweDgxLDB4
MjgsMHgwMiwweEFFLDB4RUIsMHhCRiwKLSAgICAweEUyLDB4MzAsMHhBMSwweDI4LDB4ODgsMHhC
OCwweEJGLDB4NTUsMHgwMywweDM5LDB4QzIsMHgzMCwweEUyLDB4QkEsMHhCRiwweEZELAotICAg
IDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFRiwweEY4LDB4RkEsMHhBMiwweDAzLDB4MzksMHhDMyww
eDMwLDB4N0EsMHhGRiwweDdGLDB4REYsCi0gICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweERGLDB4
REYsMHhERSwweEY4LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhFMywweEFGLDB4QTYsMHhFNSwKLSAg
ICAweDgyLDB4MzAsMHhDMiwweDI4LDB4QkQsMHhENSwweDc3LDB4REQsMHhBMiwweDI4LDB4ODEs
MHgyMCwweDYyLDB4RkUsMHgwQSwweDAwLAotICAgIDB4QzIsMHgyOCwweDgxLDB4MjgsMHg4Riww
eEVGLDB4RUYsMHhBRSwweEMyLDB4MjgsMHg4MiwweDI4LDB4MjAsMHgwMiwweDA5LDB4MDIsCi0g
ICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEZELDB4QUUsMHhBRSwweEJFLDB4QzIsMHgzMCwweEEy
LDB4MjgsMHg1OCwweDUwLDB4RUEsMHhBRiwKLSAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4RDUs
MHhDMywweEY1LDB4RjUsMHhDMiwweDMwLDB4QTIsMHgyOCwweDAyLDB4QkEsMHg5QiwweEFCLAot
ICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHhFRiwweDRELDB4NEQsMHgzRCwweEUyLDB4MzAsMHhB
MSwweDI4LDB4RkEsMHhDQiwweEEzLDB4MEEsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEY3
LDB4RkYsMHg4MSwweDAzLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBQiwweEFGLDB4QkYsMHhGNiwK
LSAgICAweEUyLDB4MzAsMHhBMSwweDMwLDB4MjAsMHhBMCwweEFGLDB4MkIsMHgyMywweDM5LDB4
RTMsMHgzOCwweEJELDB4REYsMHhFRiwweEVELAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhF
RSwweEFCLDB4MDYsMHhCNywweDAzLDB4MzksMHhDMiwweDMwLDB4OEYsMHg4OCwweEMwLDB4RDIs
Ci0gICAgMHgwMywweDM5LDB4RTIsMHgzMCwweEZGLDB4RTcsMHhFMywweEU4LDB4MDMsMHg0MSww
eEUyLDB4MzAsMHg1NSwweDdGLDB4RDcsMHhENywKLSAgICAweDQzLDB4NDEsMHgwMywweDM5LDB4
OTUsMHg3RCwweEZELDB4RUQsMHg0NCwweDQxLDB4RTIsMHgzMCwweEEzLDB4QTksMHhFQSwweEVB
LAotICAgIDB4NjQsMHg0OSwweEUzLDB4MzgsMHhBMCwweEJBLDB4RkUsMHhERCwweDQ0LDB4NDEs
MHhFMywweDM4LDB4MjgsMHhGRSwweDU3LDB4NTUsCi0gICAgMHgyNCwweDQxLDB4QzIsMHgzMCww
eEU4LDB4REUsMHhEQiwweERCLDB4RTMsMHgzOCwweEMyLDB4MzAsMHhBRSwweDlFLDB4QjgsMHg4
MCwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4MkYsMHgyRSwweEFELDB4M0YsMHgwMywweDM5
LDB4RTMsMHgzMCwweEFBLDB4MEEsMHgyRiwweEU3LAotICAgIDB4MjQsMHgzOSwweEMyLDB4MzAs
MHhBQSwweDNBLDB4REUsMHhGQiwweEUzLDB4MzgsMHhDMiwweDMwLDB4RkUsMHg1NCwweDc2LDB4
OEUsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDAzLDB4QTksMHhERCwweDhBLDB4MjMsMHg0
MSwweEUzLDB4MzAsMHgwRiwweDM1LDB4QTMsMHg4OSwKLSAgICAweEE1LDB4NTEsMHgwMywweDM5
LDB4MDIsMHgwQSwweEU5LDB4QkQsMHhDNSwweDUxLDB4NDQsMHg0OSwweDJBLDB4OEYsMHhBNSww
eEI1LAotICAgIDB4MDYsMHg1QSwweDY0LDB4NDksMHg4RSwweEZBLDB4RkYsMHg3NSwweEE1LDB4
NTEsMHg2NCwweDQ5LDB4MjAsMHhCOCwweDNCLDB4MkIsCi0gICAgMHhFNiwweDU5LDB4ODUsMHg1
MSwweDJCLDB4MkIsMHgzRCwweDk3LDB4NEIsMHg4MywweDA2LDB4NUEsMHgzNSwweEE1LDB4MzUs
MHgyRCwKLSAgICAweEVELDB4OUIsMHg4QywweDhCLDB4MkQsMHhCRCwweEI1LDB4NkYsMHhFRCww
eDlCLDB4QUMsMHg5MywweDIyLDB4ODgsMHgyQSwweEQ1LAotICAgIDB4MEUsMHhBNCwweEFDLDB4
OTMsMHgwQSwweDJFLDB4QUUsMHhERCwweDJFLDB4QTQsMHhDRCwweDkzLDB4MDAsMHhDRSwweEFG
LDB4N0QsCi0gICAgMHg0RSwweEE0LDB4RUQsMHg5QiwweDA4LDB4MkIsMHhCNSwweEI1LDB4QjAs
MHhBQywweDBELDB4OUMsMHgwQiwweEJCLDB4RDcsMHg1NywKLSAgICAweEQwLDB4QjQsMHg0RSww
eEE0LDB4MEEsMHhBQiwweDA5LDB4QUQsMHgxMSwweEJELDB4QjAsMHhCNCwweDhCLDB4OEEsMHhG
QiwweDU1LAotICAgIDB4MTEsMHhCRCwweEIwLDB4QUMsMHg3QSwweDdFLDB4ODMsMHg4QiwweEYx
LDB4QkMsMHg4RiwweEFDLDB4RDcsMHg5RSwweDdGLDB4RUMsCi0gICAgMHhCMCwweEI0LDB4NkYs
MHhBQywweEZFLDB4QTgsMHhBQiwweEFBLDB4QjAsMHhCNCwweDZGLDB4QUMsMHg3RiwweDdFLDB4
RTAsMHhBQSwKLSAgICAweEFGLDB4QjQsMHg0RiwweEE0LDB4NkYsMHhGRCwweDZFLDB4QTgsMHg4
RiwweEFDLDB4NEYsMHhBNCwweEY3LDB4REYsMHhGRCwweEIwLAotICAgIDB4OTAsMHhBQywweDJF
LDB4QTQsMHg3QiwweDVBLDB4RkUsMHhEQywweDZGLDB4QTQsMHgyRSwweEE0LDB4MzMsMHhFOSww
eDZBLDB4OUUsCi0gICAgMHg2RSwweEFDLDB4MkUsMHhBNCwweDJFLDB4Q0IsMHhFRCwweEY5LDB4
NkYsMHhBQywweDJFLDB4QTQsMHhBMiwweEJCLDB4REEsMHg0MiwKLSAgICAweDRGLDB4QTQsMHgw
RSwweDlDLDB4RjgsMHhGOCwweDUwLDB4QUYsMHgyRSwweEE0LDB4MEUsMHg5QywweDdCLDB4REQs
MHhDQiwweDgyLAotICAgIDB4NjQsMHg1MSwweDIzLDB4NTEsMHhFQiwweEEyLDB4QkEsMHhCRiww
eDY0LDB4NTksMHg0MywweDUxLDB4RkQsMHhBRCwweDUwLDB4RjgsCi0gICAgMHg2NCwweDU5LDB4
NDMsMHg1MSwweEEyLDB4ODgsMHg2QiwweEZELDB4ODQsMHg1OSwweDIzLDB4NTEsMHhFQSwweEVB
LDB4RUEsMHg0QSwKLSAgICAweDYzLDB4NTEsMHgyMiwweDUxLDB4RkYsMHhCRiwweDZGLDB4QTAs
MHg0MywweDUxLDB4MDIsMHg0OSwweEU4LDB4QkEsMHhGNiwweDdBLAotICAgIDB4NDMsMHg1MSww
eDAyLDB4NDksMHhCQSwweDY4LDB4RjksMHhERCwweDQzLDB4NDksMHgwMiwweDQ5LDB4QUEsMHhB
QiwweEVELDB4RTUsCi0gICAgMHg0MywweDQ5LDB4RTIsMHg0MCwweDhBLDB4QjgsMHhGRiwweERG
LDB4NDMsMHg1MSwweEUyLDB4NDAsMHgzQiwweEJFLDB4RkIsMHhGOSwKLSAgICAweDIzLDB4NDks
MHhFMiwweDQwLDB4QkYsMHhCRSwweEZFLDB4RjgsMHgyMywweDQ5LDB4RTIsMHg0MCwweDNBLDB4
RkEsMHhGOCwweEZBLAotICAgIDB4NDMsMHg0OSwweDAyLDB4NDksMHg1RSwweDU1LDB4NTUsMHhE
NSwweDYzLDB4NTksMHhFMiwweDQwLDB4REQsMHgzRiwweEFGLDB4MkYsCi0gICAgMHhDQiwweEEz
LDB4QzUsMHg2MSwweDJELDB4MkQsMHgwRCwweEE5LDB4RUIsMHhBMywweDQ5LDB4OTMsMHhFMiww
eDhBLDB4RUUsMHg3RSwKLSAgICAweDhBLDB4OUIsMHg0OSwweDkzLDB4QTIsMHhFMiwweEZELDB4
RUQsMHg2OSwweDlCLDB4MDgsMHg4QiwweDQ4LDB4RjIsMHg3QSwweDVFLAotICAgIDB4MjgsMHg5
MywweEM3LDB4ODIsMHhCQSwweDZFLDB4NzgsMHhGQSwweEM4LDB4OEEsMHgwNywweDgzLDB4QUYs
MHhFRSwweEFFLDB4QkYsCi0gICAgMHhFOCwweDhBLDB4QzcsMHg4MiwweEQ2LDB4OTYsMHg4QSww
eDFBLDB4MjksMHg5MywweEE3LDB4ODIsMHg1NywweDU3LDB4QkYsMHgyQiwKLSAgICAweEFCLDB4
QTMsMHhFOCwweDhBLDB4NTUsMHg1NSwweEFELDB4MDIsMHhFQiwweEFCLDB4NEEsMHg5MywweEFE
LDB4QUIsMHhBQiwweDg4LAotICAgIDB4MEIsMHhBQywweEFCLDB4QTMsMHhGRSwweEYzLDB4NkIs
MHg1QSwweENCLDB4QTMsMHg2NiwweDcyLDB4MDAsMHhBMCwweEU4LDB4N0UsCi0gICAgMHg0QSww
eDkzLDB4MjYsMHg3MiwweDc4LDB4N0UsMHg1NywweDU1LDB4NDYsMHg3MiwweDA1LDB4NkEsMHhF
RiwweEVCLDB4OEQsMHhBQiwKLSAgICAweDY3LDB4NzIsMHgyNiwweDcyLDB4NUUsMHg2NSwweDdE
LDB4MDcsMHg2NywweDcyLDB4MDYsMHg2MiwweDAzLDB4MkEsMHhCQiwweDdFLAotICAgIDB4MjYs
MHg2QSwweDg0LDB4NTEsMHg1MCwweDVFLDB4REMsMHg3RiwweDA2LDB4NjIsMHg4NCwweDUxLDB4
QjUsMHgzNywweEFBLDB4QUIsCi0gICAgMHhFNSwweDYxLDB4QzUsMHg1OSwweEIyLDB4RDQsMHg1
NywweEZBLDB4RTYsMHg2MSwweDQzLDB4NDksMHhBMCwweEY4LDB4N0YsMHg1NywKLSAgICAweDg0
LDB4NTksMHg0NCwweDQ5LDB4N0MsMHhENywweDVGLDB4N0YsMHg2NCwweDUxLDB4MDMsMHg0MSww
eEVDLDB4REEsMHhCQSwweEEwLAotICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhCRCwweDg3LDB4
OEIsMHgyQSwweDg0LDB4NDksMHg0NCwweDQ5LDB4QkQsMHhERCwweDU2LDB4NTUsCi0gICAgMHg4
NSwweDUxLDB4MDMsMHg0MSwweEVDLDB4QjgsMHhGRSwweDdGLDB4QzUsMHg2MSwweDIzLDB4NDEs
MHhCRCwweEI3LDB4M0QsMHgzRCwKLSAgICAweDI3LDB4NkEsMHhFNiwweDYxLDB4RTksMHhBQiww
eEQ1LDB4NTcsMHgyNiwweDZBLDB4ODQsMHg1MSwweEFBLDB4NkYsMHg3QywweDdBLAotICAgIDB4
QTQsMHg1OSwweDAyLDB4NDEsMHhGOCwweDdGLDB4NUUsMHg3RSwweDYzLDB4NDksMHhFMiwweDQw
LDB4MkIsMHhCRCwweEY1LDB4RjUsCi0gICAgMHg2MywweDQ5LDB4RTIsMHg0MCwweDIyLDB4RUUs
MHhGRiwweDc3LDB4NjMsMHg0OSwweDAzLDB4NDEsMHhDQywweDZBLDB4N0QsMHg1RCwKLSAgICAw
eDAzLDB4NDEsMHhDMiwweDMwLDB4QjgsMHg2QywweEY4LDB4RjgsMHhFMiwweDM4LDB4QTIsMHgz
MCwweEFBLDB4RTIsMHhGQiwweDhBLAotICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHhGQSwweDVF
LDB4N0EsMHg3QSwweEMyLDB4MjgsMHg2MSwweDIwLDB4RkMsMHg3QSwweEZGLDB4QUUsCi0gICAg
MHhDMiwweDI4LDB4NjEsMHgyMCwweEZCLDB4RTksMHhCQSwweEE4LDB4QTIsMHgyOCwweDYxLDB4
MjAsMHg1NywweEZFLDB4NkMsMHhGQSwKLSAgICAweDgxLDB4MjAsMHg0MSwweDE4LDB4RkIsMHhG
RSwweEZFLDB4RjgsMHg4MSwweDIwLDB4NDEsMHgxOCwweEZCLDB4N0UsMHg3RiwweDNGLAotICAg
IDB4QzMsMHgyOCwweDYxLDB4MTgsMHhCNSwweEFELDB4QTksMHgwQSwweEUzLDB4MzAsMHhBMiww
eDI4LDB4RTUsMHhFOSwweEFCLDB4RkIsCi0gICAgMHhDMiwweDI4LDB4QTIsMHgyOCwweDgzLDB4
ODgsMHgwOCwweEVBLDB4QzIsMHgyOCwweDgxLDB4MjgsMHhFOCwweEEwLDB4MDAsMHgwMCwKLSAg
ICAweEMyLDB4MjgsMHg4MiwweDI4LDB4RUYsMHgyRSwweDI4LDB4MDIsMHhDMiwweDMwLDB4ODEs
MHgyOCwweEVGLDB4REUsMHhFNiwweDJCLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhGRCww
eEJELDB4QUYsMHg4QiwweDAzLDB4MzksMHhDMiwweDMwLDB4M0YsMHhBQiwweDY4LDB4NkEsCi0g
ICAgMHgyMywweDM5LDB4QzIsMHgyOCwweEEyLDB4MkEsMHhGRCwweEQ1LDB4RTMsMHgzMCwweEMy
LDB4MjgsMHg4MCwweDVDLDB4NTYsMHhGRSwKLSAgICAweEMyLDB4MzAsMHg4MiwweDI4LDB4NzAs
MHhGOCwweEEyLDB4QTIsMHhFMywweDMwLDB4ODEsMHgyOCwweEY1LDB4RkYsMHhGQSwweEEyLAot
ICAgIDB4QzIsMHgzMCwweEEyLDB4MzAsMHhEQiwweERGLDB4MjksMHgwMiwweEUzLDB4MzgsMHhD
MiwweDMwLDB4QTIsMHhBQSwweEE3LDB4MkQsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEVC
LDB4QkQsMHhCQiwweEFFLDB4RTMsMHgzMCwweEMyLDB4MzAsMHhGQywweEZBLDB4RkYsMHgxNiwK
LSAgICAweEUzLDB4MzAsMHg4MiwweDIwLDB4QkEsMHhERSwweEZBLDB4QTAsMHhFMywweDMwLDB4
QTIsMHgyOCwweDNELDB4QUIsMHgyQiwweDNGLAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHhG
QiwweEY4LDB4NzcsMHg3RSwweEMyLDB4MzAsMHhBMiwweDI4LDB4RjksMHhFNSwweDQ1LDB4NzUs
Ci0gICAgMHhBMiwweDMwLDB4QzIsMHgyOCwweEZBLDB4RkYsMHhERiwweEZGLDB4QzIsMHgyOCww
eEEyLDB4MjgsMHhFRiwweEVCLDB4QTMsMHg4MCwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4
RjcsMHg3RCwweEZGLDB4M0YsMHhFMywweDMwLDB4QTIsMHgyOCwweEQ1LDB4RUIsMHg3MiwweDVB
LAotICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhCRSwweEFFLDB4OEQsMHhFRiwweEMyLDB4MzAs
MHhBMiwweDI4LDB4ODgsMHhCOCwweEQ4LDB4OUYsCi0gICAgMHhFMywweDMwLDB4QTEsMHgyOCww
eDJGLDB4OEIsMHhFQiwweEE3LDB4RTMsMHgzMCwweEEyLDB4MjgsMHgyMCwweEJFLDB4NzcsMHg1
NSwKLSAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4MEEsMHgwRiwweDJGLDB4QUYsMHgwMywweDM5
LDB4QzIsMHgzMCwweEEyLDB4REEsMHg2MCwweENFLAotICAgIDB4RTMsMHgzMCwweEMyLDB4MzAs
MHhCNywweEQ1LDB4RDUsMHg1NywweDAyLDB4MzksMHhDMywweDMwLDB4RkUsMHhGQSwweDNCLDB4
QUYsCi0gICAgMHhFMiwweDMwLDB4QTIsMHgzMCwweEZFLDB4REYsMHhFQywweEIyLDB4MDMsMHgz
OSwweEMyLDB4MzAsMHhFQiwweDlELDB4QUIsMHg1NywKLSAgICAweDAzLDB4MzksMHhDMiwweDMw
LDB4Q0EsMHg4QSwweEFGLDB4OTUsMHgyMywweDM5LDB4QzIsMHgzMCwweEZGLDB4RjcsMHgzRiww
eEVGLAotICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHgyMywweDNGLDB4QkQsMHhGRCwweDI0LDB4
MzksMHhFMywweDMwLDB4N0UsMHg3MiwweEM4LDB4NkIsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgz
MCwweEY3LDB4QkQsMHhGRiwweEFGLDB4MDMsMHgzOSwweEMzLDB4MzAsMHhFRSwweEYyLDB4QzAs
MHhDMiwKLSAgICAweDAzLDB4MzksMHhDMywweDMwLDB4QkQsMHgzRiwweEVELDB4QUIsMHgwMyww
eDMxLDB4QzMsMHgzMCwweEVBLDB4ODAsMHgwOCwweDY4LAotICAgIDB4MDMsMHgzOSwweEUzLDB4
MzAsMHgzRiwweDNELDB4NjcsMHhCNSwweDIzLDB4MzksMHhFMywweDMwLDB4REYsMHhGRCwweERE
LDB4QzUsCi0gICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDcxLDB4RkQsMHhGNSwweDU5LDB4NDQs
MHg0MSwweEUzLDB4MzAsMHg3RCwweDZGLDB4RUIsMHhBOSwKLSAgICAweDIzLDB4MzksMHhFMyww
eDMwLDB4RUYsMHhGRCwweDI5LDB4OEIsMHg2NCwweDQxLDB4RTMsMHgzOCwweEVELDB4RUYsMHg4
QSwweEFBLAotICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHhBRCwweEE5LDB4M0QsMHgxRSwweDg0
LDB4NDksMHgyMywweDQxLDB4QkYsMHg3NywweEI2LDB4QkUsCi0gICAgMHg4NCwweDUxLDB4NDQs
MHg0OSwweEZFLDB4QjUsMHhCRCwweDI3LDB4RTUsMHg1OSwweDg1LDB4NTEsMHg3RCwweEY1LDB4
QjUsMHgwRSwKLSAgICAweEU2LDB4NTksMHhBNSwweDUxLDB4MTUsMHhBNSwweDBGLDB4MjAsMHg2
QywweDhCLDB4RTUsMHg1OSwweDJELDB4MkQsMHgyRCwweDJGLAotICAgIDB4RUUsMHg5QiwweEFD
LDB4OTMsMHg3RCwweEVCLDB4MjMsMHgyMywweEVELDB4OUIsMHg4QywweDhCLDB4RkYsMHhERiww
eDdBLDB4NUMsCi0gICAgMHhDRCwweDkzLDB4NkIsMHg4QiwweEEwLDB4QjgsMHhGQiwweEZELDB4
RUQsMHg5QiwweDhDLDB4OEIsMHg4RSwweDM5LDB4QjksMHhGNywKLSAgICAweDBFLDB4QTQsMHhB
QywweDkzLDB4MkEsMHgzRCwweEFGLDB4QkYsMHgyRCwweEE0LDB4Q0MsMHg5MywweEI4LDB4MkUs
MHhBQiwweEY3LAotICAgIDB4NkYsMHhBQywweEVELDB4OUIsMHgwQiwweEFELDB4RkYsMHg3NSww
eEFGLDB4QUMsMHgwRCwweDlDLDB4MjgsMHhBRiwweEJELDB4RDUsCi0gICAgMHhGMSwweEJDLDB4
NEUsMHhBNCwweDAyLDB4MkEsMHhCRCwweDlELDB4RjAsMHhCQywweDhGLDB4QUMsMHg3MCwweEVB
LDB4QUUsMHhGQiwKLSAgICAweEQxLDB4QjQsMHg4RiwweEFDLDB4NUYsMHg1RiwweEEwLDB4QUMs
MHhCMCwweEI0LDB4OTAsMHhBQywweDJFLDB4OEIsMHgwNCwweDM2LAotICAgIDB4RDAsMHhCNCww
eDZGLDB4QUMsMHhBNywweEJGLDB4QjcsMHhGNCwweEIwLDB4QjQsMHg2RiwweEFDLDB4RjgsMHhF
MiwweEE4LDB4RTgsCi0gICAgMHhCMCwweEI0LDB4NEYsMHhBNCwweDVBLDB4QjgsMHhCQSwweEVF
LDB4OEYsMHhBQywweDRFLDB4QTQsMHg1NywweDRGLDB4QzMsMHhDRSwKLSAgICAweDZGLDB4QUMs
MHgwRSwweEE0LDB4MjgsMHg4OCwweDg4LDB4N0EsMHg2RiwweEFDLDB4MkUsMHhBNCwweEVBLDB4
NzIsMHhGRSwweDdELAotICAgIDB4NEUsMHhBNCwweDBELDB4OUMsMHhFRiwweEJGLDB4QkUsMHg0
QiwweDJFLDB4QTQsMHhFRCwweDlCLDB4ODAsMHhDQiwweDdGLDB4N0UsCi0gICAgMHg2NCwweDU5
LDB4MDIsMHg0OSwweEVGLDB4RUEsMHgzQywweDdGLDB4ODQsMHg1OSwweDIzLDB4NTEsMHhBRiww
eDNCLDB4QkUsMHhGRCwKLSAgICAweDg0LDB4NTksMHg0MywweDUxLDB4NzcsMHg1NiwweEY0LDB4
MkYsMHg4NCwweDU5LDB4NDMsMHg1MSwweEVCLDB4RUQsMHhGOCwweDdFLAotICAgIDB4ODQsMHg1
OSwweDIyLDB4NDksMHg3RSwweDVFLDB4RUUsMHg3MywweDQzLDB4NTEsMHgwMiwweDQ5LDB4NUUs
MHhDRSwweDdFLDB4NUUsCi0gICAgMHgyMywweDQ5LDB4MDIsMHg0MSwweEZCLDB4MjAsMHgwMiww
eDAwLDB4MjIsMHg0OSwweDAyLDB4NDEsMHhDQiwweDU2LDB4OEIsMHhGNiwKLSAgICAweDIzLDB4
NDksMHhFMiwweDQwLDB4QUIsMHhFQiwweEZBLDB4QTgsMHgyMywweDQ5LDB4RTIsMHg0MCwweEFC
LDB4QkIsMHhERSwweDdFLAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhDOCwweDc4LDB4RUYs
MHg4RCwweDAyLDB4NDksMHhFMiwweDQwLDB4QTAsMHhCOSwweDI1LDB4ODcsCi0gICAgMHgyMyww
eDQ5LDB4RTEsMHg0MCwweEJGLDB4QTUsMHgwQSwweDJCLDB4MDUsMHg2QSwweDQzLDB4NDksMHhE
NSwweEQ1LDB4MTUsMHgzNSwKLSAgICAweEFCLDB4OUIsMHg2NiwweDdBLDB4MjksMHg4OSwweDJG
LDB4MjMsMHhBQiwweEEzLDB4NDksMHg5MywweDdCLDB4RjgsMHg2RSwweDdBLAotICAgIDB4Njks
MHg5QiwweDI5LDB4OTMsMHhBNiwweEJFLDB4NkIsMHhGQSwweDY5LDB4OUIsMHgwOCwweDhCLDB4
REEsMHhFOCwweEUzLDB4N0UsCi0gICAgMHgyOCwweDkzLDB4QzcsMHg4MiwweEVBLDB4QTgsMHg4
OCwweDI4LDB4MjgsMHg4QiwweEU4LDB4OEEsMHg1MCwweDUyLDB4N0QsMHhGQiwKLSAgICAweDhB
LDB4OUIsMHhFOCwweDgyLDB4NTUsMHhCRCwweEFELDB4MkIsMHgwQywweEFDLDB4RTgsMHg4QSww
eEJELDB4QUIsMHgyQSwweDBBLAotICAgIDB4MEMsMHhBQywweEFBLDB4QTMsMHhERCwweDNFLDB4
QkEsMHgyOCwweDBDLDB4QUMsMHg2OSwweDlCLDB4QTIsMHhFQSwweEE4LDB4N0EsCi0gICAgMHhD
QiwweEEzLDB4NjYsMHg3MiwweEEwLDB4RTAsMHg3QSwweDVFLDB4QzgsMHg4MiwweDI1LDB4NkEs
MHhGMCwweERFLDB4NzcsMHg1RSwKLSAgICAweDQ2LDB4NzIsMHgwNSwweDZBLDB4MkMsMHhBRiww
eDBCLDB4MDIsMHg2NywweDdBLDB4MjYsMHg2QSwweEZBLDB4QUYsMHhBNywweDBBLAotICAgIDB4
NjcsMHg3MiwweDI2LDB4NzIsMHg5RSwweERFLDB4RkMsMHg4OCwweDQ3LDB4NzIsMHhBNSwweDU5
LDB4RTgsMHhGOCwweDYyLDB4N0EsCi0gICAgMHhDNSwweDU5LDB4ODQsMHg1OSwweDJDLDB4MkYs
MHhBRSwweDhFLDB4QzUsMHg2MSwweDQzLDB4NTEsMHgyMCwweEEwLDB4QTgsMHhERSwKLSAgICAw
eEM1LDB4NTksMHgyMywweDQ5LDB4ODAsMHhGQSwweDVFLDB4NUQsMHhBNSwweDUxLDB4MDIsMHg0
MSwweDlGLDB4MkYsMHgyRiwweDgyLAotICAgIDB4ODQsMHg1MSwweDQzLDB4NDksMHg3OCwweDc4
LDB4N0MsMHg1QSwweDg0LDB4NTEsMHg0NCwweDQ5LDB4NkYsMHhGRiwweEJGLDB4QUQsCi0gICAg
MHg2NCwweDQ5LDB4MjMsMHg0MSwweDMyLDB4MkEsMHg5RSwweDVDLDB4NjQsMHg0OSwweDIzLDB4
NDEsMHhFMywweDhCLDB4QUYsMHhCRiwKLSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4N0YsMHg3
RSwweERDLDB4NzgsMHhBNSwweDU5LDB4MDMsMHg0MSwweDNELDB4MkQsMHgyOSwweDJGLAotICAg
IDB4MDUsMHg2MiwweEM1LDB4NjEsMHg1RSwweEQ3LDB4Q0EsMHhBMiwweDA2LDB4NkEsMHhBNCww
eDU5LDB4NUEsMHg3QywweEM4LDB4QUIsCi0gICAgMHhBNCwweDU5LDB4MjMsMHg0OSwweDdFLDB4
N0MsMHg3OCwweDVFLDB4MjMsMHg0OSwweEMxLDB4MzgsMHg4OCwweEJCLDB4RkUsMHg2QywKLSAg
ICAweDIzLDB4NDEsMHhFMiwweDQwLDB4REYsMHhCQSwweDBCLDB4NDMsMHgyMywweDQxLDB4RTIs
MHgzOCwweDVBLDB4REEsMHg1RiwweDU1LAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhGQiww
eEEzLDB4RkYsMHg3RCwweDAzLDB4MzksMHhDMiwweDMwLDB4RkEsMHhGQSwweEZGLDB4RkQsCi0g
ICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDVFLDB4RkEsMHhBRSwweEY4LDB4QTIsMHgyOCwweDgx
LDB4MjgsMHgwRSwweDBFLDB4MDgsMHgwMCwKLSAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4RUEs
MHg4MiwweEUyLDB4NUUsMHhBMiwweDIwLDB4NDAsMHgxOCwweEE4LDB4QUEsMHhGOCwweDdFLAot
ICAgIDB4ODIsMHgyMCwweDYxLDB4MTgsMHg1QiwweDVELDB4RjksMHgzRCwweEMyLDB4MjgsMHg2
MSwweDE4LDB4RDUsMHhENSwweDlELDB4MEYsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyMCwweEZG
LDB4RUYsMHhFQiwweEEyLDB4RTMsMHgzMCwweEMyLDB4MjgsMHg1NywweDUyLDB4MkIsMHhGNywK
LSAgICAweEEyLDB4MzAsMHhDMiwweDI4LDB4REYsMHhGRCwweDZELDB4RjUsMHgwMywweDMxLDB4
QTIsMHgyOCwweEZGLDB4REYsMHhCRSwweDNCLAotICAgIDB4MjMsMHgzOSwweEMyLDB4MjgsMHg1
NSwweDdGLDB4RUYsMHg4QSwweDAzLDB4MzEsMHhDMiwweDMwLDB4NTUsMHg3QSwweEY4LDB4RkEs
Ci0gICAgMHhFMywweDMwLDB4QTIsMHgzMCwweDBBLDB4MkEsMHhFQSwweDdBLDB4RTMsMHgzOCww
eDgxLDB4MjgsMHhFOCwweEVFLDB4NUIsMHg1RiwKLSAgICAweEMyLDB4MzAsMHg4MSwweDI4LDB4
MDIsMHg4QiwweEFGLDB4QUQsMHhBMiwweDMwLDB4RTIsMHgyOCwweEJGLDB4QkUsMHhFQSwweEVB
LAotICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHg5NSwweDlELDB4RDcsMHhCNSwweDAzLDB4Mzks
MHhDMiwweDMwLDB4RkEsMHhFQSwweEVGLDB4RUIsCi0gICAgMHhFMywweDM4LDB4QzIsMHgzMCww
eEY3LDB4REYsMHgyRiwweDBFLDB4MDMsMHgzOSwweEMyLDB4MzAsMHgzNywweEJCLDB4NkEsMHhB
QSwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QTIsMHhFQiwweEVCLDB4MDAsMHgwMywweDM5
LDB4QzMsMHgzMCwweDlBLDB4QkIsMHhCMywweEY4LAotICAgIDB4MjQsMHgzOSwweEUzLDB4MzAs
MHg1NywweEUzLDB4RUEsMHhBQiwweDAzLDB4MzEsMHhDMywweDMwLDB4NUUsMHhERSwweEJFLDB4
REUsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDdBLDB4QjgsMHhGOCwweEYwLDB4QzIsMHgy
OCwweEEyLDB4MjgsMHg3NSwweDY2LDB4RjcsMHgxRiwKLSAgICAweEUyLDB4MzAsMHg4MSwweDI4
LDB4RkYsMHg1RCwweDc1LDB4RkUsMHhFMywweDMwLDB4ODEsMHgyMCwweDJCLDB4QUIsMHhGRiww
eEZELAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCNywweEVBLDB4QjMsMHhCOSwweEUzLDB4
MzAsMHhBMiwweDI4LDB4RkEsMHhGQSwweDc0LDB4REYsCi0gICAgMHhBMiwweDI4LDB4ODEsMHgy
MCwweDI4LDB4QjAsMHhBOCwweDgwLDB4RTIsMHgyOCwweDgyLDB4MjgsMHhCRiwweEZGLDB4NzUs
MHhGRiwKLSAgICAweEMyLDB4MjgsMHhBMiwweDI4LDB4RUEsMHg3QSwweDU1LDB4OUQsMHhFMyww
eDMwLDB4ODEsMHgyOCwweEZGLDB4N0YsMHhBMiwweEEyLAotICAgIDB4RTMsMHgzMCwweEEyLDB4
MjgsMHgwQiwweDg5LDB4MDksMHhCRCwweEUzLDB4MzAsMHhBMiwweDMwLDB4ODAsMHhBQSwweEZG
LDB4RkUsCi0gICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweEZBLDB4RkEsMHhGNywweDU2LDB4RTIs
MHgzMCwweEMyLDB4MzAsMHgzQiwweDlGLDB4NUYsMHhERSwKLSAgICAweDAzLDB4MzksMHhDMiww
eDMwLDB4RkEsMHg4MiwweDdBLDB4NTUsMHhFMywweDMwLDB4QzIsMHgzMCwweEZGLDB4QjksMHg0
QiwweDc3LAotICAgIDB4RTMsMHgzMCwweEExLDB4MjgsMHhCOCwweEJDLDB4QUUsMHhCNywweDIz
LDB4MzksMHhDMiwweDI4LDB4QUYsMHhCRiwweEJGLDB4RDcsCi0gICAgMHgwMywweDMxLDB4QzIs
MHgyOCwweDdBLDB4NTAsMHg5QywweEJDLDB4MDMsMHgzMSwweEUzLDB4MzAsMHhFOSwweERELDB4
NTYsMHg1RSwKLSAgICAweDI0LDB4MzEsMHhDMiwweDMwLDB4RkYsMHhGNSwweDZGLDB4REYsMHgy
NCwweDMxLDB4QzIsMHgzMCwweEZCLDB4REYsMHhGRCwweEUzLAotICAgIDB4MDMsMHgzMSwweEMz
LDB4MzAsMHhGMiwweEZGLDB4RkEsMHg3RiwweEUzLDB4MzAsMHhDMiwweDI4LDB4QzAsMHg2MCww
eDYwLDB4NDMsCi0gICAgMHgwMywweDMxLDB4QTIsMHgyOCwweEFBLDB4MkEsMHhFQiwweEY5LDB4
MDMsMHgzOSwweEEyLDB4MjgsMHgyRSwweEFFLDB4RjcsMHhGNywKLSAgICAweEUzLDB4MzAsMHhD
MiwweDI4LDB4MTgsMHhBQSwweDcyLDB4RkIsMHg0NSwweDM5LDB4RTMsMHgzMCwweENCLDB4RkQs
MHhENSwweEQ1LAotICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHhFMiwweDlFLDB4QkMsMHhCOCww
eDIzLDB4NDEsMHhFMiwweDMwLDB4MjAsMHgzRSwweEJGLDB4MzYsCi0gICAgMHg2NSwweDQxLDB4
MjMsMHg0MSwweDlGLDB4QkYsMHhERSwweDlGLDB4QTUsMHg1MSwweDQzLDB4NDEsMHg1NywweERE
LDB4QkQsMHhGRiwKLSAgICAweEM1LDB4NTksMHg0NCwweDQ5LDB4QkIsMHgzOSwweEJGLDB4RkQs
MHgwNiwweDYyLDB4QzUsMHg1MSwweEFCLDB4OEEsMHhDRCwweEU1LAotICAgIDB4MjYsMHg2Miww
eEM1LDB4NTksMHhERSwweEJCLDB4MkYsMHg4RiwweDRCLDB4ODMsMHgyNiwweDYyLDB4MkQsMHgy
RCwweDI5LDB4MkYsCi0gICAgMHhFRCwweDlCLDB4OEMsMHg4QiwweDAzLDB4ODEsMHg4QiwweEFC
LDB4RUQsMHg5QiwweDhDLDB4OEIsMHg3QywweEVGLDB4QkEsMHhBRSwKLSAgICAweEFDLDB4OTMs
MHg2QiwweDhCLDB4QUYsMHhDNCwweDQ4LDB4ODAsMHhDRCwweDlCLDB4NEIsMHg4QiwweDJBLDB4
M0IsMHg5RCwweEQ3LAotICAgIDB4RUQsMHg5QiwweDhDLDB4OEIsMHg4MywweEFBLDB4QUYsMHhG
NSwweEVELDB4OUIsMHhBQywweDkzLDB4QUIsMHhGMywweDkyLDB4RUEsCi0gICAgMHgwRCwweDlD
LDB4OEMsMHg5MywweDgwLDB4MEEsMHhBOSwweDlELDB4MkUsMHhBNCwweENELDB4OTMsMHhFQSww
eDJFLDB4QUQsMHhFQSwKLSAgICAweDZFLDB4QTQsMHhFRCwweDlCLDB4MjMsMHhFRiwweEVGLDB4
REQsMHhCMCwweEI0LDB4MEQsMHg5QywweDhBLDB4QUIsMHhGNSwweEZELAotICAgIDB4QjAsMHhC
NCwweDBFLDB4OUMsMHhBMCwweEFFLDB4QkUsMHhGNywweDhGLDB4QUMsMHgyRSwweEE0LDB4MEEs
MHgwRSwweEFGLDB4N0QsCi0gICAgMHhCMCwweEI0LDB4MEUsMHg5QywweDg4LDB4RUEsMHhBRiww
eDdGLDB4OEYsMHhBQywweDJFLDB4QTQsMHg4MCwweEVGLDB4QkYsMHg1NSwKLSAgICAweDhGLDB4
QUMsMHgwRCwweDlDLDB4ODgsMHhBQSwweEVCLDB4NTUsMHg4RiwweEFDLDB4Q0MsMHg5MywweDhB
LDB4RUEsMHg3NywweDdGLAotICAgIDB4NEUsMHhBNCwweENELDB4OTMsMHhBOCwweEJCLDB4RkYs
MHhGRCwweDJFLDB4QTQsMHhFRCwweDlCLDB4MjMsMHhFMCwweDU5LDB4NTUsCi0gICAgMHg0RSww
eEE0LDB4RUQsMHg5QiwweEZFLDB4NzMsMHhERCwweEQ1LDB4NEYsMHhBNCwweEVELDB4OUIsMHg1
RSwweEZFLDB4RUYsMHg4MiwKLSAgICAweDY0LDB4NTEsMHgwMiwweDUxLDB4OUUsMHhFQSwweEFB
LDB4QkMsMHg2MywweDUxLDB4MjIsMHg1MSwweEJGLDB4QkEsMHhBMiwweEE4LAotICAgIDB4ODQs
MHg1OSwweDQzLDB4NTEsMHhBRSwweENFLDB4RTksMHhFRiwweDY0LDB4NTEsMHgyMywweDUxLDB4
RkEsMHhDOCwweEEyLDB4QUEsCi0gICAgMHg2NCwweDUxLDB4MjMsMHg0OSwweENBLDB4NTUsMHg1
NywweDdGLDB4NDMsMHg0OSwweDAyLDB4NDksMHg2QSwweDdFLDB4NTUsMHg3RCwKLSAgICAweDIz
LDB4NDksMHhFMSwweDQwLDB4ODIsMHgyRCwweEE5LDB4QkIsMHgyMywweDQ5LDB4RTIsMHg0MCww
eEFBLDB4RTAsMHg3OCwweEY3LAotICAgIDB4MjMsMHg0OSwweDAyLDB4NDEsMHhCMiwweEZELDB4
NUQsMHg1RCwweDIzLDB4NDksMHhDMiwweDQwLDB4RkEsMHhEQSwweEJBLDB4OEEsCi0gICAgMHgy
MywweDQ5LDB4QzIsMHg0MCwweDBELDB4MkYsMHhFQSwweEJBLDB4NDQsMHg0OSwweEUyLDB4NDAs
MHg4RSwweDlCLDB4QUYsMHhCQiwKLSAgICAweDIzLDB4NDksMHhFMywweDQwLDB4RUYsMHhFMyww
eEVFLDB4NkEsMHgwOCwweDhCLDB4MDMsMHg0OSwweEI1LDB4QjUsMHhBRCwweDJELAotICAgIDB4
QUIsMHg5QiwweDA4LDB4OEIsMHhBOSwweDBELDB4MEIsMHhBQiwweEFCLDB4OUIsMHg0OSwweDkz
LDB4QzgsMHg2MiwweDU4LDB4N0MsCi0gICAgMHg2QSwweDlCLDB4MjksMHg5MywweEVCLDB4RUEs
MHhCRSwweDdFLDB4NDksMHg5MywweEU4LDB4OEEsMHg2MCwweEYwLDB4RUEsMHg4MCwKLSAgICAw
eDQ5LDB4OTMsMHhFNywweDhBLDB4RkUsMHhEQiwweEJGLDB4MDAsMHg2QSwweDlCLDB4MDgsMHg4
QiwweERELDB4OTUsMHg5RiwweDJFLAotICAgIDB4Q0IsMHhBMywweDY5LDB4OTMsMHgyNSwweDJG
LDB4RUYsMHhCNywweDBDLDB4QUMsMHhBQSwweDlCLDB4QUIsMHhGNywweDc1LDB4RjUsCi0gICAg
MHhFQywweEEzLDB4NDksMHg4QiwweDAwLDB4MDAsMHg4QSwweDdBLDB4Q0IsMHhBMywweDg2LDB4
N0EsMHhFOCwweDc4LDB4NUUsMHg1NywKLSAgICAweDg2LDB4N0EsMHgyNiwweDZBLDB4RjgsMHhB
QSwweERDLDB4RkYsMHg2NiwweDcyLDB4MjUsMHg2QSwweEYwLDB4RkUsMHg1QSwweDgyLAotICAg
IDB4NjYsMHg3MiwweDI1LDB4NzIsMHgyMSwweEVCLDB4RUYsMHhDRSwweDg3LDB4N0EsMHg0Niww
eDcyLDB4NzEsMHg3QiwweERELDB4NzIsCi0gICAgMHg2NywweDcyLDB4QzUsMHg2MSwweEMyLDB4
QTgsMHhGOCwweDcyLDB4RTUsMHg2MSwweDYzLDB4NTEsMHhDMCwweEY4LDB4RkUsMHg1QywKLSAg
ICAweEM0LDB4NTksMHgyMiwweDQxLDB4QTgsMHhFQSwweEZGLDB4NTUsMHg4NCwweDUxLDB4MjMs
MHg0OSwweEY4LDB4NkEsMHg3RSwweDU1LAotICAgIDB4QTUsMHg1MSwweDAyLDB4NDEsMHhCRCww
eEJGLDB4MkIsMHhBQiwweEE1LDB4NTksMHg0MywweDQ5LDB4QUEsMHhFQSwweDY4LDB4RUEsCi0g
ICAgMHg4NCwweDQ5LDB4MjMsMHg0MSwweEFDLDB4RkUsMHhBQiwweEFBLDB4QTUsMHg1MSwweDQ0
LDB4NDksMHg4RiwweEVCLDB4RkEsMHg3RiwKLSAgICAweDY0LDB4NDksMHgyMywweDQxLDB4RkUs
MHhGQSwweEZBLDB4NUYsMHg2NCwweDQ5LDB4MjMsMHg0MSwweEFBLDB4QTAsMHhCNSwweEJCLAot
ICAgIDB4NDQsMHg0OSwweDAzLDB4MzksMHhBOCwweEIyLDB4N0MsMHg1NiwweDg0LDB4NTEsMHhF
MiwweDM4LDB4MkYsMHhCRiwweDlELDB4NTUsCi0gICAgMHhFNSwweDYxLDB4MjMsMHg0OSwweDAw
LDB4MDIsMHgwMywweDI5LDB4RTUsMHg2MSwweEE0LDB4NTksMHhGQSwweDVBLDB4QkEsMHg3OCwK
LSAgICAweEM1LDB4NjEsMHgyMywweDQ5LDB4NzgsMHg3QSwweEYwLDB4RjAsMHgyMywweDQ5LDB4
RTIsMHg0MCwweEVBLDB4NkMsMHhBOCwweDAwLAotICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHg2
MywweEUxLDB4N0UsMHg2QSwweDAzLDB4NDEsMHhDMiwweDM4LDB4RkYsMHg1QiwweDdBLDB4RUUs
Ci0gICAgMHhFMiwweDM4LDB4QzIsMHgzMCwweEY4LDB4RUYsMHg2NywweERGLDB4RTMsMHgzMCww
eEMyLDB4MzAsMHhCRiwweEJBLDB4N0UsMHg1QSwKLSAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4
NkEsMHg4QSwweEFCLDB4M0EsMHhFMywweDMwLDB4ODEsMHgyMCwweEZGLDB4N0IsMHhGOCwweDY4
LAotICAgIDB4QTIsMHgyOCwweDQwLDB4MTgsMHg2OCwweEZBLDB4RUEsMHhGRSwweDgyLDB4MTgs
MHg0MSwweDE4LDB4N0EsMHhGRiwweEFGLDB4QUYsCi0gICAgMHhBMSwweDIwLDB4NDAsMHgxOCww
eEJELDB4MkEsMHgyQiwweDJCLDB4QzIsMHgyOCwweEEyLDB4MjAsMHgwQiwweEUyLDB4NjEsMHhE
QiwKLSAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4QkYsMHhBRiwweEJELDB4MkQsMHgyNCwweDM5
LDB4QzIsMHgyOCwweEQ1LDB4REQsMHhCNywweDBBLAotICAgIDB4NjUsMHg0MSwweEMyLDB4Mjgs
MHg1NywweERGLDB4RUYsMHgwMiwweDY1LDB4NDEsMHhDMSwweDI4LDB4RjUsMHhFRiwweDgyLDB4
ODAsCi0gICAgMHg0NCwweDQxLDB4RTMsMHgzMCwweEZCLDB4N0UsMHhCQywweEJDLDB4MjMsMHgz
OSwweEMyLDB4MzAsMHg1NSwweDc2LDB4RkUsMHhFOCwKLSAgICAweDAzLDB4MzksMHhBMiwweDI4
LDB4NUYsMHhERiwweEZCLDB4NjAsMHhDMiwweDMwLDB4ODEsMHgyOCwweEQwLDB4RTAsMHhGMCww
eDBBLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhENSwweERELDB4QkQsMHg4MywweEUzLDB4
MzgsMHhBMiwweDI4LDB4QkUsMHhGRSwweEY4LDB4RTgsCi0gICAgMHgwMywweDM5LDB4QzIsMHgz
MCwweEE5LDB4RUIsMHg3NywweEI1LDB4MDMsMHgzOSwweEUyLDB4MzAsMHg3QSwweDcyLDB4NjEs
MHg3OCwKLSAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4RUYsMHhBMywweEJCLDB4RkQsMHgyMyww
eDM5LDB4RTIsMHgzMCwweDhGLDB4RkEsMHhFRiwweDc1LAotICAgIDB4MjMsMHgzOSwweEUzLDB4
MzAsMHhBMiwweEJBLDB4QUIsMHhGOSwweDAzLDB4MzksMHhBMiwweDI4LDB4RTgsMHhGOCwweEY4
LDB4REMsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweDIyLDB4QUYsMHhGRCwweEY3LDB4RTIs
MHgzMCwweEEzLDB4MjgsMHhGRSwweEFBLDB4RUEsMHgwMiwKLSAgICAweEUzLDB4MzAsMHhBMiww
eDI4LDB4RUEsMHhBNywweEFGLDB4MkYsMHhFMywweDMwLDB4QTIsMHgyOCwweEU3LDB4RkYsMHhF
RiwweDJFLAotICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHhGNywweERGLDB4RkYsMHhGOCwweEMy
LDB4MjgsMHg2MSwweDIwLDB4N0YsMHhGQSwweDA4LDB4MDAsCi0gICAgMHhDMiwweDI4LDB4ODEs
MHgyMCwweEJELDB4RkQsMHhFQiwweDhCLDB4QzIsMHgzMCwweDgxLDB4MjAsMHhBQSwweEVCLDB4
RkQsMHg3QSwKLSAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4QjAsMHhFRiwweEJFLDB4RkUsMHhB
MiwweDI4LDB4ODEsMHgyMCwweDBBLDB4OEQsMHhFRCwweDdELAotICAgIDB4QzIsMHgyOCwweDYx
LDB4MjAsMHgwQSwweDJBLDB4MDEsMHgwQSwweEUyLDB4MzAsMHhBMiwweDI4LDB4OEUsMHhCNyww
eENCLDB4ODgsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDZGLDB4QUMsMHgyRiwweDJGLDB4
MDQsMHgzMSwweEMzLDB4MzAsMHg1NSwweERBLDB4NUUsMHhGRiwKLSAgICAweEUzLDB4MzAsMHhB
MiwweDI4LDB4NUYsMHgyQywweDlCLDB4QkIsMHgwMywweDM5LDB4QzIsMHgzMCwweDdGLDB4REEs
MHhFQSwweDZBLAotICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHhCQSwweEFGLDB4QTUsMHhENyww
eEUyLDB4MzAsMHhBMiwweDI4LDB4RkEsMHhGRSwweEVFLDB4QkYsCi0gICAgMHhDMiwweDI4LDB4
QTIsMHgyOCwweEQ3LDB4QkQsMHhBRSwweEEwLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhGNywweEJG
LDB4MkEsMHhBQiwKLSAgICAweDAzLDB4MzEsMHhFMywweDMwLDB4RjUsMHhFNywweEZGLDB4N0Is
MHgyNCwweDM5LDB4RTMsMHgzMCwweEVCLDB4QjIsMHhBRiwweDI5LAotICAgIDB4MjQsMHgzOSww
eEMyLDB4MjgsMHg3RSwweEVBLDB4RTIsMHhDMywweDI0LDB4MzksMHhDMiwweDI4LDB4RTMsMHhB
RCwweDZCLDB4NUUsCi0gICAgMHhFMywweDMwLDB4QzIsMHgyOCwweEJBLDB4M0MsMHgyOSwweDhE
LDB4MDMsMHgzMSwweEMyLDB4MzAsMHg2QiwweEZBLDB4RkUsMHhGRiwKLSAgICAweDIzLDB4MzEs
MHhDMiwweDMwLDB4RkQsMHhGQiwweEZGLDB4NTcsMHhFMywweDMwLDB4QzIsMHgyOCwweEQ3LDB4
RjcsMHhGQSwweDAyLAotICAgIDB4MDMsMHgzMSwweEEzLDB4MzAsMHhBQiwweDBBLDB4QUEsMHgw
OCwweDAzLDB4MzEsMHhDMywweDMwLDB4MkMsMHhCQywweEZFLDB4ODIsCi0gICAgMHgwMywweDMx
LDB4RTIsMHgzMCwweEQ4LDB4NTUsMHhBRiwweEZCLDB4NDQsMHg0MSwweEUyLDB4MzAsMHgyRiww
eEE1LDB4QkQsMHhGNywKLSAgICAweDY0LDB4NDksMHgwMywweDM5LDB4QUEsMHgwMiwweEFFLDB4
RjcsMHhBNSwweDUxLDB4MjMsMHg0MSwweDNFLDB4MkIsMHhERiwweEZELAotICAgIDB4QTUsMHg1
MSwweDQ0LDB4NDksMHhGRiwweEFBLDB4QUMsMHhENiwweEM1LDB4NTEsMHg2NCwweDQ5LDB4QUEs
MHgzRiwweEFELDB4MjksCi0gICAgMHg0OCwweDZBLDB4QzUsMHg1MSwweEZELDB4QkYsMHgzRCww
eDM5LDB4QUMsMHg5MywweDg4LDB4NzIsMHhBRCwweDJELDB4MjksMHgyRiwKLSAgICAweDBFLDB4
OUMsMHhBRCwweDkzLDB4REQsMHg1RiwweEFCLDB4QUIsMHhFRCwweDlCLDB4OEMsMHg4QiwweDI3
LDB4RUYsMHg3RSwweEE4LAotICAgIDB4Q0QsMHg5MywweDhDLDB4OEIsMHhGQSwweDdBLDB4NkEs
MHg3NiwweEFELDB4OTMsMHg2QiwweDhCLDB4QjYsMHhERiwweEZCLDB4NUUsCi0gICAgMHg4Qyww
eDkzLDB4NEIsMHg4MywweEMwLDB4QkQsMHhCNywweDZBLDB4Q0QsMHg5MywweDRCLDB4ODMsMHgw
MiwweDBBLDB4M0IsMHgyRCwKLSAgICAweENELDB4OTMsMHhBQywweDkzLDB4OUEsMHgzMCwweDk4
LDB4NUMsMHgyRSwweEE0LDB4Q0QsMHg5MywweEVCLDB4RkQsMHhERiwweDM1LAotICAgIDB4MkUs
MHhBNCwweENELDB4OTMsMHhGRiwweEZGLDB4NkYsMHhDRCwweDJFLDB4QTQsMHhDRCwweDkzLDB4
OEIsMHhFRiwweDlCLDB4QkYsCi0gICAgMHgyRSwweEE0LDB4RUUsMHg5QiwweEZBLDB4ODIsMHhB
RSwweDZCLDB4MkUsMHhBNCwweENELDB4OTMsMHgwMiwweEFCLDB4N0EsMHhGOSwKLSAgICAweDJF
LDB4QTQsMHhDRCwweDkzLDB4QTgsMHhBOCwweDJCLDB4QUQsMHgwRCwweDlDLDB4Q0MsMHg5Myww
eDAwLDB4MjAsMHhBOCwweDVBLAotICAgIDB4MkQsMHg5QywweEFDLDB4OTMsMHhFOCwweEU4LDB4
RkEsMHg1RiwweENELDB4OTMsMHhBQywweDkzLDB4ODMsMHhFRiwweEFDLDB4MzksCi0gICAgMHhF
RCwweDlCLDB4QUMsMHg5MywweDNGLDB4REYsMHhFQiwweDdBLDB4RUQsMHg5QiwweENDLDB4OTMs
MHgwMCwweDJBLDB4RkYsMHg5NSwKLSAgICAweDBELDB4OUMsMHhDQywweDkzLDB4OEEsMHgyOCww
eDJCLDB4MkIsMHg0RiwweEE0LDB4RUQsMHg5QiwweDBGLDB4QUYsMHhERiwweDZELAotICAgIDB4
NDMsMHg1MSwweDIzLDB4NDksMHgxNywweDk1LDB4QUEsMHgzOSwweDYzLDB4NTEsMHgyMywweDQ5
LDB4NkEsMHhFQSwweEVFLDB4N0QsCi0gICAgMHg2NCwweDUxLDB4MjMsMHg0OSwweENCLDB4NzMs
MHhFRSwweDY5LDB4NjQsMHg1MSwweDIzLDB4NDksMHhBQSwweDZBLDB4N0YsMHhFRCwKLSAgICAw
eDQzLDB4NDksMHgwMiwweDQ5LDB4NkMsMHg1RiwweDU3LDB4NTgsMHgyMiwweDQ5LDB4RTEsMHg0
MCwweEVDLDB4REUsMHhFQiwweEFFLAotICAgIDB4MDIsMHg0OSwweEUyLDB4NDAsMHhGRSwweDhB
LDB4RjIsMHg4QSwweDIzLDB4NDksMHhFMiwweDQwLDB4RTcsMHhBRiwweDk5LDB4NTUsCi0gICAg
MHgyMywweDQ5LDB4QzEsMHgzOCwweDBBLDB4ODIsMHhBQSwweEI3LDB4MjIsMHg0OSwweEUzLDB4
NDAsMHhBQSwweDJCLDB4QUIsMHhGRiwKLSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4NzcsMHhC
NywweDE3LDB4RkIsMHgyMywweDQ5LDB4RTMsMHg0MCwweEMzLDB4OEIsMHg4RSwweDJGLAotICAg
IDB4NDMsMHg1MSwweDAzLDB4NDksMHhERCwweDQzLDB4RUQsMHhCRCwweDQ5LDB4OTMsMHg0Myww
eDUxLDB4MjUsMHgyRCwweDJELDB4MEQsCi0gICAgMHhBQSwweDlCLDB4NjksMHg5MywweEY3LDB4
QUUsMHhFMywweDZCLDB4OEEsMHg5QiwweDQ5LDB4OTMsMHhCQSwweEY4LDB4RkEsMHhFRiwKLSAg
ICAweDY5LDB4OUIsMHg0OSwweDkzLDB4RDYsMHg1NSwweEU1LDB4NTUsMHg4OSwweDlCLDB4Mjgs
MHg5MywweEQ3LDB4NjcsMHgxNywweDNELAotICAgIDB4OEEsMHg5QiwweDI5LDB4OTMsMHg3RCww
eDdGLDB4N0EsMHhDMCwweDZBLDB4OUIsMHgyOSwweDkzLDB4NkIsMHgzRSwweEJBLDB4QkUsCi0g
ICAgMHg4QSwweDlCLDB4NDksMHg5MywweDI3LDB4MEYsMHhBQSwweEJGLDB4Q0IsMHhBMywweDI5
LDB4OEIsMHg4QSwweEFBLDB4RUEsMHhGRiwKLSAgICAweDhBLDB4OUIsMHg2NiwweDdBLDB4QTAs
MHg3OCwweDdFLDB4NTcsMHhBNywweDdBLDB4NDYsMHg3MiwweEY4LDB4N0IsMHhGRSwweEZGLAot
ICAgIDB4ODcsMHg3QSwweDI1LDB4NkEsMHhGRiwweDZBLDB4QUIsMHhBQiwweDg2LDB4N0EsMHg0
NSwweDZBLDB4RUIsMHhBRCwweEI2LDB4RTgsCi0gICAgMHg4NywweDcyLDB4NDYsMHg3MiwweEY3
LDB4ODcsMHgwOCwweDZBLDB4ODcsMHg3QSwweDA2LDB4NjIsMHg4MiwweDgwLDB4ODIsMHg3MiwK
LSAgICAweDQ2LDB4NkEsMHgyMywweDQ5LDB4RTAsMHhGQSwweDdBLDB4RDYsMHg4NCwweDU5LDB4
MDIsMHg0MSwweEE4LDB4QkUsMHg3NywweDdGLAotICAgIDB4NDMsMHg0OSwweDIzLDB4NDEsMHhE
QywweEQ3LDB4QTUsMHg4OSwweDYzLDB4NDksMHgyMywweDQ5LDB4OTcsMHgyRiwweDJBLDB4MEEs
Ci0gICAgMHhBNSwweDU5LDB4NjQsMHg1MSwweEJELDB4MkQsMHg4RiwweEJCLDB4ODQsMHg1MSww
eDQzLDB4NDksMHhFRSwweDY4LDB4RkUsMHhGQywKLSAgICAweDY0LDB4NDksMHg0MywweDQ5LDB4
MUEsMHg5NSwweDM3LDB4OTgsMHg4NSwweDQ5LDB4NDQsMHg0OSwweEZGLDB4QUUsMHhCQSwweEVC
LAotICAgIDB4NjQsMHg0OSwweDI0LDB4NDEsMHg3RiwweEVDLDB4NkUsMHg3RSwweDQ0LDB4NDks
MHgyNCwweDQxLDB4MkEsMHg2RiwweEU1LDB4MkQsCi0gICAgMHgyMywweDQxLDB4MDMsMHg0MSww
eEVDLDB4RkEsMHgyMywweEUwLDB4MjMsMHg0MSwweEMyLDB4MzgsMHgyRSwweEFFLDB4QUEsMHhG
NCwKLSAgICAweEE1LDB4NTksMHgwMywweDQxLDB4MDksMHgwNSwweEY1LDB4NTUsMHhDNSwweDU5
LDB4MjMsMHg0OSwweEE4LDB4QUEsMHhBQSwweEJELAotICAgIDB4QTQsMHg1MSwweDQzLDB4NTEs
MHhFOCwweEZBLDB4RkUsMHg3RSwweDY0LDB4NTEsMHgwMywweDQxLDB4RkYsMHhFQSwweEZBLDB4
NkMsCi0gICAgMHgyMywweDQxLDB4QTEsMHgzMCwweEU4LDB4RUEsMHg3QSwweDdFLDB4MDMsMHgz
OSwweEExLDB4MzAsMHhBQiwweDhCLDB4QUQsMHhCRSwKLSAgICAweEUyLDB4MzgsMHhBMSwweDI4
LDB4MDIsMHgyOCwweEVFLDB4NzgsMHgwMywweDM5LDB4QzIsMHgzMCwweDVFLDB4QUEsMHg4Miww
eDUzLAotICAgIDB4RTMsMHgzMCwweDgxLDB4MjgsMHg4MiwweDhBLDB4RUYsMHhERiwweEUzLDB4
MzAsMHg4MSwweDIwLDB4RkMsMHhGRSwweEY3LDB4NUQsCi0gICAgMHhBMSwweDIwLDB4NDAsMHgx
OCwweEY4LDB4RjgsMHhGOCwweDdBLDB4ODIsMHgyMCwweDQwLDB4MTgsMHhCOSwweDJGLDB4QUIs
MHhBRiwKLSAgICAweEMyLDB4MjgsMHg2MSwweDE4LDB4QjcsMHgyRiwweDJCLDB4MDMsMHgwMyww
eDMxLDB4QTIsMHgyOCwweDlGLDB4ODcsMHgyQiwweDJBLAotICAgIDB4NDQsMHg0MSwweEMzLDB4
MzAsMHgyRCwweEJCLDB4OEEsMHhCQSwweDQ0LDB4NDEsMHhDMiwweDI4LDB4MDIsMHgwOCwweEJF
LDB4REUsCi0gICAgMHg4NSwweDQxLDB4QTIsMHgyOCwweDBBLDB4QTgsMHhGRSwweEY3LDB4NDQs
MHg0MSwweEMyLDB4MzAsMHg4MCwweEFBLDB4RUYsMHg1RCwKLSAgICAweDI0LDB4MzksMHhFMyww
eDMwLDB4ODgsMHhBQiwweDNELDB4RDUsMHgyMywweDQxLDB4MDMsMHgzOSwweDVELDB4NUYsMHg3
QiwweDU1LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg3MiwweDk4LDB4QUEsMHhBMCwweDAz
LDB4MzksMHhBMiwweDMwLDB4RTUsMHgyRSwweDhBLDB4OEEsCi0gICAgMHgwMywweDM5LDB4QzMs
MHgzMCwweEUyLDB4RUEsMHhGRSwweEY1LDB4QzIsMHgzOCwweEUzLDB4MzAsMHhGNSwweEJGLDB4
RkQsMHhGRiwKLSAgICAweEUzLDB4MzgsMHhBMSwweDI4LDB4MDMsMHhBQSwweEI2LDB4OUYsMHgw
MywweDM5LDB4QzIsMHgzMCwweEVBLDB4QUEsMHgyMiwweEYyLAotICAgIDB4MDMsMHgzOSwweEEy
LDB4MzAsMHhBQiwweEFCLDB4RUUsMHg3OCwweEUyLDB4MzAsMHhDMiwweDMwLDB4RTEsMHhBMCww
eDIzLDB4QkIsCi0gICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEI5LDB4QjUsMHhBNywweEQ1LDB4
RTMsMHgzMCwweDgxLDB4MjgsMHhCOCwweEY4LDB4N0EsMHg3RiwKLSAgICAweEMyLDB4MjgsMHg4
MiwweDI4LDB4MjgsMHgyRiwweEFGLDB4RjUsMHhFMywweDMwLDB4QTIsMHgyOCwweDBBLDB4QUYs
MHhCRCwweEU5LAotICAgIDB4MDQsMHgzMSwweEMzLDB4MzAsMHhCRiwweEVELDB4RkYsMHhBRCww
eEUzLDB4MzAsMHhDMiwweDI4LDB4Q0MsMHg5OCwweEYwLDB4QzAsCi0gICAgMHgwMywweDM5LDB4
RTMsMHgzMCwweDU3LDB4N0IsMHhFQiwweEE1LDB4RTMsMHgzMCwweEEyLDB4MjgsMHg3RiwweEZG
LDB4MkUsMHhFMiwKLSAgICAweEUzLDB4MzAsMHg4MSwweDI4LDB4QUQsMHhBQiwweEFBLDB4RUEs
MHhDMiwweDI4LDB4ODIsMHgyOCwweDc4LDB4QjAsMHhDMiwweDgwLAotICAgIDB4RTMsMHgzMCww
eDgxLDB4MjAsMHg1NSwweDdGLDB4RUEsMHhBMCwweEMyLDB4MjgsMHg2MSwweDIwLDB4RkQsMHhG
QiwweEFBLDB4MDAsCi0gICAgMHhFMiwweDMwLDB4ODEsMHgyMCwweEFGLDB4QUQsMHhCRSwweDI4
LDB4MjMsMHgzOSwweEMyLDB4MjgsMHhGRCwweEZGLDB4RUIsMHg4RiwKLSAgICAweEUzLDB4MzAs
MHhBMiwweDI4LDB4MkEsMHhBMCwweEEwLDB4RjgsMHgwMywweDMxLDB4QzIsMHgzMCwweDE1LDB4
QjUsMHhBNywweEFGLAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHg5QywweEZFLDB4RkYsMHg1
NiwweEUzLDB4MzAsMHhBMiwweDI4LDB4MDIsMHgwMiwweEVBLDB4REYsCi0gICAgMHhDMiwweDMw
LDB4QTIsMHgyOCwweEFFLDB4MEUsMHgyRSwweEI3LDB4RTMsMHgzMCwweEMyLDB4MjgsMHhERSww
eDk2LDB4MkYsMHhGRiwKLSAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4NkEsMHhFMiwweEEwLDB4
QUIsMHgwMywweDMxLDB4QTIsMHgzMCwweEE5LDB4MjIsMHg4MiwweEE4LAotICAgIDB4MDMsMHgz
MSwweEUzLDB4MzAsMHgyMiwweDZBLDB4RjEsMHhCMiwweDI0LDB4MzksMHhBMSwweDI4LDB4MEEs
MHhBQSwweERGLDB4NUYsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweEY4LDB4N0EsMHg3Riww
eDVELDB4RTMsMHgzMCwweEEyLDB4MjgsMHhGMCwweEY4LDB4RkEsMHg3QiwKLSAgICAweEUzLDB4
MzAsMHhBMiwweDI4LDB4MDUsMHhFRCwweDlGLDB4QUYsMHhFMywweDMwLDB4QzIsMHgyOCwweDhF
LDB4MkYsMHgwRCwweEE1LAotICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHg1NiwweDJBLDB4Mzks
MHgyRiwweEUzLDB4MzAsMHhBMiwweDI4LDB4MDgsMHhCRSwweDNFLDB4MkEsCi0gICAgMHgyMyww
eDMxLDB4RTIsMHgzMCwweDk3LDB4QzcsMHg5NSwweEY1LDB4MDMsMHgzMSwweEUyLDB4MzAsMHhF
MCwweDY4LDB4NDAsMHhENywKLSAgICAweDAzLDB4MzEsMHhBMSwweDI4LDB4MjIsMHg4MiwweEMy
LDB4RkEsMHgwMywweDM5LDB4QzEsMHgyOCwweDgyLDB4MDMsMHgwOSwweDA1LAotICAgIDB4NDQs
MHg0MSwweDAzLDB4MzksMHhGQiwweDJCLDB4QUIsMHhFRCwweDY0LDB4NDksMHgyMywweDQxLDB4
OEYsMHhBRCwweDlELDB4RjUsCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweDc5LDB4RUUsMHhF
MiwweEUwLDB4RTUsMHg1OSwweDQzLDB4NDEsMHgyRiwweEFELDB4QUIsMHhBQSwKLSAgICAweEM4
LDB4N0EsMHhFNCwweDUxLDB4QjcsMHhCRCwweDJELDB4MkYsMHhDRCwweDlCLDB4QzksMHg3QSww
eDJELDB4MEQsMHgyOSwweDBCLAotICAgIDB4MEYsMHg5QywweENELDB4OTMsMHhBRiwweEE5LDB4
QzMsMHgyRiwweEVELDB4OUIsMHhBRCwweDkzLDB4QzgsMHhBMiwweDZBLDB4ODIsCi0gICAgMHhF
RSwweDlCLDB4OEMsMHg4QiwweDVFLDB4NUEsMHhFOCwweEFBLDB4QUMsMHg5MywweDRCLDB4ODMs
MHhEQSwweEZCLDB4RkYsMHhGNiwKLSAgICAweDhCLDB4OEIsMHg0QiwweDgzLDB4QkEsMHg5OSww
eDc3LDB4QUYsMHhBRCwweDkzLDB4MkEsMHg4MywweDM3LDB4OTcsMHhENSwweEY1LAotICAgIDB4
Q0QsMHg5MywweDZDLDB4OEIsMHg4MCwweEJBLDB4MkYsMHgyRCwweEVELDB4OUIsMHhDRCwweDkz
LDB4MjYsMHgyRiwweDM1LDB4RjUsCi0gICAgMHgwRCwweDlDLDB4QUMsMHg5MywweDgwLDB4MEEs
MHgzOSwweDJCLDB4MEUsMHg5QywweENELDB4OUIsMHhBQSwweEI5LDB4RTAsMHhFMiwKLSAgICAw
eEVELDB4OUIsMHhDRCwweDkzLDB4NjgsMHgyMCwweDBBLDB4RTIsMHgwRSwweDlDLDB4Q0QsMHg5
MywweDYyLDB4REUsMHhDQiwweENFLAotICAgIDB4RUQsMHg5QiwweENELDB4OTMsMHhFMywweDY4
LDB4NTcsMHg5NywweEVELDB4OUIsMHhBRCwweDkzLDB4RjYsMHhFRSwweDNBLDB4QUMsCi0gICAg
MHhFRCwweDkzLDB4OEMsMHg5MywweERBLDB4QUEsMHgyQSwweEE4LDB4MEQsMHg5QywweEFDLDB4
OTMsMHhGRCwweDU1LDB4RDQsMHg1RiwKLSAgICAweENELDB4OTMsMHg2QiwweDhCLDB4RTAsMHgy
QSwweDIyLDB4QTIsMHhDRCwweDkzLDB4OEMsMHg5MywweDJBLDB4MDIsMHhBRSwweDJELAotICAg
IDB4RUQsMHg5QiwweDhDLDB4OEIsMHgwMiwweDBBLDB4MkEsMHhCNiwweDJFLDB4QTQsMHhDRCww
eDkzLDB4OEUsMHhGRSwweERGLDB4RkQsCi0gICAgMHg0NCwweDUxLDB4MDMsMHg0OSwweEYyLDB4
RTgsMHhGQiwweDk3LDB4NDMsMHg1MSwweDAzLDB4NDksMHgzQSwweEFCLDB4MkYsMHhBNiwKLSAg
ICAweDYzLDB4NTEsMHgwMywweDQ5LDB4RUIsMHhBMCwweEZCLDB4RDcsMHg0NCwweDUxLDB4MjMs
MHg0OSwweDZCLDB4RUYsMHg1MiwweDU1LAotICAgIDB4MjIsMHg0OSwweDAyLDB4NDEsMHg4MCww
eDBGLDB4QkEsMHhCOCwweDIzLDB4NDksMHgwMiwweDQxLDB4RDYsMHhEQywweDBDLDB4QkUsCi0g
ICAgMHgyMywweDQ5LDB4QzEsMHgzOCwweEEyLDB4RTYsMHg2MiwweEFBLDB4MjMsMHg0OSwweEMx
LDB4MzgsMHhGQSwweDZGLDB4MkYsMHgwQSwKLSAgICAweDIzLDB4NDEsMHhDMSwweDQwLDB4RjYs
MHg4OCwweEVBLDB4Q0UsMHgwMiwweDQxLDB4QzIsMHgzOCwweDI4LDB4Q0QsMHhBQiwweDhCLAot
ICAgIDB4MjMsMHg0MSwweEUzLDB4NDAsMHhFRSwweDBGLDB4MjcsMHgzRSwweDIzLDB4NDksMHhF
MiwweDQwLDB4QjIsMHhEMCwweEVBLDB4RkIsCi0gICAgMHg0MywweDUxLDB4RTIsMHg0MCwweDJC
LDB4MEYsMHgzRCwweEJGLDB4NjksMHg5MywweEM0LDB4NTksMHgyRCwweDA5LDB4MjksMHgwRCwK
LSAgICAweEE5LDB4OUIsMHg2OSwweDkzLDB4N0YsMHg1MywweDdFLDB4NTQsMHg4QSwweDlCLDB4
NDksMHg5MywweEVGLDB4RUEsMHhFOCwweDZELAotICAgIDB4NjksMHg5MywweDI4LDB4OEIsMHhG
RSwweEE5LDB4RkUsMHgwRSwweDhBLDB4OUIsMHg0OSwweDkzLDB4QTUsMHgyRCwweDBELDB4QTAs
Ci0gICAgMHhBQiwweDlCLDB4NDksMHg5MywweDQyLDB4QkEsMHhGQSwweEQ1LDB4OEEsMHg5Qiww
eDRBLDB4OTMsMHg5RiwweEFCLDB4RkEsMHhERiwKLSAgICAweDhBLDB4OUIsMHhFOSwweDhBLDB4
QkEsMHhFOCwweEY4LDB4RkEsMHgyQSwweDkzLDB4MDYsMHg2QSwweDgwLDB4RTgsMHhGQSwweDdF
LAotICAgIDB4ODcsMHg3QSwweDI1LDB4NkEsMHhCQywweEY4LDB4RUUsMHg3RiwweDg3LDB4NzIs
MHg0NiwweDcyLDB4QUQsMHg4MywweDhBLDB4NTgsCi0gICAgMHg4NywweDcyLDB4NDYsMHg3Miww
eEFBLDB4QkEsMHhBQiwweERELDB4QTcsMHg3QSwweDQ2LDB4NzIsMHg1RiwweDlBLDB4QkYsMHgw
QSwKLSAgICAweEE3LDB4N0EsMHg0NiwweDZBLDB4RUIsMHhFRSwweEMyLDB4NjgsMHg0NiwweDcy
LDB4NjQsMHg1MSwweEUwLDB4RTAsMHg3OCwweDVFLAotICAgIDB4ODQsMHg1OSwweDAyLDB4NDEs
MHhGQywweDVFLDB4RkYsMHhEQywweDQzLDB4NDksMHgwMiwweDQxLDB4QzIsMHhBQSwweEFELDB4
QkYsCi0gICAgMHg2NCwweDUxLDB4MDIsMHg0MSwweEE5LDB4OEYsMHhBRiwweDJBLDB4QTUsMHg1
MSwweDQzLDB4NDksMHhCRiwweEE5LDB4QkIsMHg4MiwKLSAgICAweEE0LDB4NTEsMHg0MywweDQ5
LDB4QTgsMHhDOCwweDZBLDB4RkUsMHhBNCwweDUxLDB4NDMsMHg0OSwweERBLDB4MzUsMHgyNSww
eEVGLAotICAgIDB4ODQsMHg0OSwweDQ0LDB4NDksMHg3QSwweDc4LDB4QTAsMHg4MCwweDg1LDB4
NDksMHg0NCwweDQ5LDB4RUIsMHg4QiwweDM3LDB4MTcsCi0gICAgMHg4NCwweDQ5LDB4NDQsMHg0
OSwweDc3LDB4RkUsMHhGNiwweERCLDB4NDQsMHg0MSwweDAzLDB4NDEsMHhBOCwweEFFLDB4QUUs
MHhFQSwKLSAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4RUUsMHgyRiwweEFELDB4QkEsMHgyNCww
eDQxLDB4RTMsMHgzOCwweEQ2LDB4RkIsMHhGQywweEFBLAotICAgIDB4MDMsMHg0MSwweEMyLDB4
MzgsMHhBOCwweDVBLDB4NzcsMHg1RSwweDY0LDB4NTEsMHhBMiwweDM4LDB4MEIsMHhBRiwweEI1
LDB4RjUsCi0gICAgMHg4NCwweDUxLDB4MDMsMHg0MSwweEEwLDB4QTIsMHg4QSwweEE1LDB4NjQs
MHg1MSwweDAyLDB4NDEsMHhFOCwweEVFLDB4NkEsMHhFQiwKLSAgICAweDIzLDB4NDEsMHhDMiww
eDMwLDB4NUYsMHg3QiwweEVCLDB4RTgsMHgwMywweDM5LDB4QzIsMHgzOCwweEZGLDB4RkYsMHhB
NywweDhGLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg1NywweERGLDB4RkUsMHhGQSwweEUz
LDB4MzAsMHg4MSwweDI4LDB4QTIsMHhFQSwweEVBLDB4NUEsCi0gICAgMHhBMiwweDI4LDB4NjEs
MHgyMCwweEEwLDB4QTIsMHg3QSwweDdGLDB4ODEsMHgyMCwweDQxLDB4MTgsMHg4MCwweEU4LDB4
N0UsMHg3RiwKLSAgICAweDYxLDB4MjAsMHg0MSwweDE4LDB4RTIsMHhFRiwweEZELDB4OTUsMHhB
MiwweDI4LDB4NDEsMHgxOCwweEJELDB4QUYsMHhBRiwweDNGLAotICAgIDB4RTMsMHgyOCwweDgx
LDB4MjAsMHg4QiwweEFELDB4RkYsMHg1NywweEUzLDB4MzAsMHg4MSwweDIwLDB4MEEsMHhBQiww
eEVELDB4RjksCi0gICAgMHhFMywweDMwLDB4ODEsMHgyMCwweDgwLDB4RUYsMHhGRCwweDU3LDB4
QzIsMHgyOCwweDgxLDB4MjAsMHgyMCwweEYyLDB4QUYsMHhBRiwKLSAgICAweEMzLDB4MzAsMHg4
MiwweDIwLDB4QTcsMHg5NywweEZGLDB4QkUsMHhDMywweDI4LDB4ODIsMHgyOCwweEVBLDB4RUIs
MHhGRSwweDc2LAotICAgIDB4MDMsMHgzOSwweDgxLDB4MjAsMHhBQiwweDJGLDB4RkQsMHhGNSww
eDI0LDB4MzksMHhFMiwweDMwLDB4QkYsMHhCRSwweEFFLDB4QjUsCi0gICAgMHgyNCwweDM5LDB4
RTMsMHgzOCwweDdBLDB4RjMsMHhERCwweDc3LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGRiwweEZC
LDB4RjgsMHhFRSwKLSAgICAweEUzLDB4MzAsMHhBMSwweDI4LDB4M0UsMHhGOCwweDcwLDB4QTIs
MHgwMywweDM5LDB4QTIsMHgyOCwweDhGLDB4RUIsMHhGQiwweDdGLAotICAgIDB4QzIsMHgzMCww
eDgxLDB4MjgsMHgyOCwweDI4LDB4QTgsMHhCRCwweEUyLDB4MzAsMHhBMiwweDMwLDB4RUEsMHhB
QSwweDhGLDB4MjYsCi0gICAgMHhFMywweDMwLDB4QTIsMHgzMCwweDQwLDB4ODIsMHgwMCwweDAy
LDB4QzIsMHgzMCwweEUzLDB4MjgsMHhCQSwweDJBLDB4MEUsMHhCRSwKLSAgICAweEMyLDB4MzAs
MHhBMiwweDI4LDB4NUEsMHg1RSwweEU4LDB4NTgsMHhBMiwweDI4LDB4ODEsMHgyMCwweDdCLDB4
NkIsMHg1OCwweDcwLAotICAgIDB4QTIsMHgyOCwweDYxLDB4MjAsMHhERiwweEJGLDB4MUIsMHgy
QiwweEMzLDB4MzAsMHhBMiwweDI4LDB4MkQsMHhERiwweENBLDB4MkIsCi0gICAgMHhFMywweDMw
LDB4QTIsMHgyOCwweDJCLDB4RUEsMHhBQiwweDNGLDB4MDMsMHgzMSwweEMyLDB4MzAsMHhFQSww
eEZCLDB4RUEsMHgwOSwKLSAgICAweDAzLDB4MzEsMHhDMywweDMwLDB4OEYsMHhCRiwweEFGLDB4
QUYsMHhFMywweDMwLDB4QTEsMHgyOCwweEIyLDB4QkMsMHhGMCwweEZBLAotICAgIDB4RTMsMHgz
MCwweEEyLDB4MjgsMHhFQiwweEFCLDB4QjksMHhCQiwweEUzLDB4MzAsMHhBMiwweDI4LDB4QUYs
MHgyNiwweDJBLDB4QUEsCi0gICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDU3LDB4OUYsMHgzOSww
eDQzLDB4MjQsMHgzOSwweEMyLDB4MjgsMHg3RSwweEVFLDB4RkUsMHhEQywKLSAgICAweDIzLDB4
MzksMHhFMywweDMwLDB4QzUsMHhCRCwweEVGLDB4RjUsMHgwMywweDM5LDB4QzIsMHgzMCwweEVF
LDB4N0EsMHhFOCwweEU4LAotICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHg1MiwweDE1LDB4Rjcs
MHhGQiwweDAyLDB4MzEsMHhBMiwweDI4LDB4M0YsMHhGRiwweEJELDB4RkYsCi0gICAgMHhFMyww
eDMwLDB4QTIsMHgyOCwweEZDLDB4RkMsMHg1RiwweDU3LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhC
RCwweEUzLDB4N0IsMHhFQSwKLSAgICAweEMyLDB4MjgsMHhBMiwweDI4LDB4REYsMHhENiwweEE1
LDB4OEYsMHhDMiwweDMwLDB4QTIsMHgyOCwweEQ2LDB4OTUsMHhBNSwweEFELAotICAgIDB4MDMs
MHgzMSwweEMyLDB4MjgsMHgzNSwweEE1LDB4QUQsMHg5RCwweDAzLDB4MzEsMHhDMywweDMwLDB4
MDgsMHg4MCwweEFBLDB4REUsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweDdFLDB4QTcsMHhF
RCwweDZCLDB4MDMsMHgzMSwweEEyLDB4MjgsMHg3RSwweEY4LDB4RkEsMHhBQSwKLSAgICAweEUz
LDB4MzAsMHhDMiwweDI4LDB4NzksMHhGRiwweDZCLDB4QzAsMHgwMywweDMxLDB4QzIsMHgyOCww
eDU1LDB4REQsMHhGMywweEI4LAotICAgIDB4QzIsMHgzMCwweEUzLDB4MjgsMHhBRSwweEE5LDB4
QUYsMHhCNywweEUzLDB4MzAsMHhBMiwweDI4LDB4RjksMHgzRSwweEJBLDB4M0EsCi0gICAgMHgw
MywweDMxLDB4QzIsMHgzMCwweEI3LDB4MzYsMHhGOCwweEI4LDB4MDMsMHgzMSwweEMyLDB4MzAs
MHhBNywweEFBLDB4QkUsMHhGRSwKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4MkIsMHg4RSww
eDI3LDB4MEYsMHg0MywweDM5LDB4RTIsMHgzMCwweDU1LDB4N0YsMHhFRiwweEYyLAotICAgIDB4
MDIsMHgzMSwweEMyLDB4MzAsMHg3MiwweDQyLDB4NzYsMHg3RSwweDAzLDB4MzksMHhBMSwweDI4
LDB4M0QsMHhBRCwweDNELDB4QTcsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweEY5LDB4QkYs
MHgzRCwweDJELDB4QTUsMHg1MSwweDQzLDB4NDEsMHg1NSwweEQ1LDB4OEIsMHg4MywKLSAgICAw
eEE1LDB4NTEsMHg2NCwweDQ5LDB4NTcsMHgwNywweDJELDB4QUUsMHgwNiwweDVBLDB4ODQsMHg0
OSwweEI3LDB4RUYsMHhBRiwweDJELAotICAgIDB4MEEsMHg4MywweEU1LDB4NTksMHgyRiwweEFE
LDB4MjksMHgyRiwweEVELDB4OUIsMHg0QiwweDhCLDB4MkYsMHgwRiwweDNELDB4OTksCi0gICAg
MHgwRSwweDlDLDB4OEMsMHg5MywweEFBLDB4MEEsMHhFRiwweDVGLDB4RUQsMHg5QiwweDhDLDB4
OTMsMHgyMCwweEFBLDB4QUEsMHhFRiwKLSAgICAweENELDB4OTMsMHg4QywweDkzLDB4QzAsMHhD
NCwweDZCLDB4NUUsMHg4QywweDhCLDB4NEIsMHg4MywweEUwLDB4QkUsMHhFOCwweEY2LAotICAg
IDB4OEMsMHg4QiwweDRCLDB4ODMsMHhFRiwweDdFLDB4RkYsMHhENSwweDZCLDB4OEIsMHgwQSww
eDdCLDB4QkUsMHhEOCwweERFLDB4N0MsCi0gICAgMHhDQywweDkzLDB4MjksMHg3QiwweDJGLDB4
QUYsMHhBRCwweEZELDB4RUQsMHg5QiwweDhCLDB4OEIsMHhBQSwweEFBLDB4M0IsMHgzRCwKLSAg
ICAweEVELDB4OUIsMHhBQywweDkzLDB4MjIsMHgzOCwweEFBLDB4RjUsMHgwRSwweDlDLDB4OEMs
MHg4QiwweEE4LDB4MkEsMHhBQiwweDdGLAotICAgIDB4MkUsMHhBNCwweEFDLDB4OTMsMHhGOCww
eEJFLDB4RjcsMHg3NSwweDBFLDB4OUMsMHhBQywweDkzLDB4M0EsMHhCRSwweEVCLDB4OUYsCi0g
ICAgMHhDRCwweDkzLDB4OEMsMHg4QiwweDAwLDB4MDIsMHgwQSwweDJDLDB4Q0QsMHg5MywweDhD
LDB4OEIsMHgzOCwweEQwLDB4NkYsMHhFRSwKLSAgICAweENELDB4OTMsMHg4QywweDhCLDB4QTAs
MHgzMCwweEZBLDB4RjcsMHhDRCwweDkzLDB4OEMsMHg4QiwweDI4LDB4MEMsMHgwOCwweDg4LAot
ICAgIDB4Q0QsMHg5MywweDZDLDB4OEIsMHhBQSwweEZFLDB4QTYsMHgyMiwweENDLDB4OTMsMHg2
QiwweDhCLDB4MzIsMHhGQSwweEUyLDB4RTgsCi0gICAgMHhFRCwweDlCLDB4OEMsMHg4QiwweEVG
LDB4RUIsMHhDRiwweDVELDB4MEUsMHg5QywweEFDLDB4OTMsMHhCRCwweEJDLDB4RkYsMHhGNSwK
LSAgICAweDQzLDB4NTEsMHgwMywweDQ5LDB4RUEsMHhFQSwweEZCLDB4NkEsMHg0MywweDUxLDB4
MDMsMHg0MSwweEVCLDB4QTIsMHhEMywweEZGLAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHgw
QiwweDBGLDB4QTIsMHg4OCwweDQzLDB4NDksMHhFMiwweDQwLDB4QUMsMHhGQywweDdGLDB4RUUs
Ci0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEFCLDB4OEYsMHhCQiwweDI5LDB4MjMsMHg0OSww
eEUyLDB4NDAsMHg2MiwweERDLDB4OTgsMHhGOCwKLSAgICAweDAzLDB4NDksMHhFMSwweDM4LDB4
QUEsMHhGMiwweEYyLDB4RDYsMHgyMywweDQxLDB4QzEsMHgzOCwweDgyLDB4OEEsMHhFMywweEZF
LAotICAgIDB4MDIsMHg0MSwweEUyLDB4MzgsMHg4OSwweEU1LDB4QUYsMHgyNSwweDIzLDB4NDks
MHhFMiwweDM4LDB4QTUsMHg4RCwweEZGLDB4RkIsCi0gICAgMHgwMywweDQxLDB4RTIsMHgzOCww
eDA4LDB4MDIsMHgyOCwweDA3LDB4MjMsMHg0OSwweEUyLDB4NDAsMHhGQiwweEZDLDB4RkUsMHg3
RiwKLSAgICAweDQzLDB4NTEsMHhFMiwweDQwLDB4M0YsMHhCRiwweDJGLDB4MkQsMHg2QSwweDkz
LDB4QTUsMHg1OSwweDBCLDB4MDksMHgwQiwweDBCLAotICAgIDB4OEEsMHg5QiwweDY5LDB4OTMs
MHg2OCwweEMwLDB4QTIsMHgyOSwweDhBLDB4OUIsMHg0OSwweDkzLDB4ODcsMHgwNSwweDJBLDB4
QjAsCi0gICAgMHg4QSwweDlCLDB4MjgsMHg4QiwweDI5LDB4MEEsMHhFOCwweEZFLDB4NkEsMHg5
QiwweEU4LDB4ODIsMHhDMCwweDY4LDB4N0UsMHg1NywKLSAgICAweDI5LDB4OEIsMHhDOCwweDgy
LDB4MEEsMHgyRiwweEFGLDB4REQsMHg2QSwweDkzLDB4MDksMHg4QiwweDIwLDB4MDMsMHhBRiww
eEY1LAotICAgIDB4NEEsMHg5MywweDA1LDB4NkEsMHg4MCwweEEwLDB4RTAsMHg3OCwweDY3LDB4
N0EsMHhFNSwweDYxLDB4RTIsMHhGRSwweERFLDB4REYsCi0gICAgMHg2NiwweDcyLDB4MDUsMHg2
QSwweDhCLDB4RUYsMHhCNSwweDdGLDB4NjYsMHg3MiwweEU0LDB4NjEsMHhBOCwweDJCLDB4MkIs
MHhBOSwKLSAgICAweDg3LDB4NzIsMHgyNiwweDcyLDB4OUEsMHhFQSwweEUyLDB4Q0EsMHhDOCww
eDdBLDB4NDYsMHg2QSwweDI5LDB4Q0YsMHhGRiwweEQ3LAotICAgIDB4QTcsMHg3MiwweDg0LDB4
NTksMHhBMCwweEVBLDB4NzgsMHg1RSwweEU1LDB4NjEsMHgyMywweDQ5LDB4RDgsMHhERiwweDdG
LDB4RkYsCi0gICAgMHg2MywweDUxLDB4MjIsMHg0MSwweDVDLDB4NzYsMHg2QSwweEVFLDB4NDMs
MHg0OSwweDAyLDB4NDEsMHhGRiwweDlGLDB4OUEsMHg1OCwKLSAgICAweDY0LDB4NTEsMHhFMiww
eDM4LDB4MEEsMHgwQiwweDJGLDB4QUQsMHhBNSwweDUxLDB4NjQsMHg0OSwweEMwLDB4OEUsMHg3
NywweDc1LAotICAgIDB4ODQsMHg0OSwweDQ0LDB4NDksMHhGQSwweEQ4LDB4MkEsMHgyRiwweEE1
LDB4NTEsMHg0MywweDQ5LDB4QTYsMHhBOCwweDg4LDB4QUEsCi0gICAgMHg4NCwweDUxLDB4NjQs
MHg0OSwweEUyLDB4NDIsMHg3RSwweDVFLDB4ODUsMHg1MSwweDIzLDB4NDEsMHhCQywweEY3LDB4
NTYsMHg3NywKLSAgICAweDY0LDB4NDksMHgyMywweDQxLDB4QTAsMHg3OCwweEEzLDB4QTMsMHg2
NCwweDQ5LDB4MjMsMHg0MSwweDdGLDB4Q0QsMHhGRiwweERFLAotICAgIDB4NjQsMHg0OSwweDAz
LDB4MzksMHhBRiwweEI3LDB4RTYsMHhGRSwweDY0LDB4NDEsMHgwMywweDQxLDB4NTcsMHg3RSww
eDdGLDB4REYsCi0gICAgMHgyMywweDQxLDB4RTMsMHgzOCwweDdCLDB4QTIsMHhFQiwweEJGLDB4
MDMsMHgzOSwweEMyLDB4MzgsMHg1NSwweDVFLDB4NUEsMHhGOCwKLSAgICAweDAzLDB4NDEsMHhB
MSwweDMwLDB4MkUsMHgzNywweEFGLDB4M0IsMHg0MywweDQxLDB4MDMsMHg0MSwweDIyLDB4QTgs
MHhBQiwweDBBLAotICAgIDB4NDMsMHg0MSwweEUyLDB4MzgsMHhGRSwweEZBLDB4RTIsMHhGQSww
eDAzLDB4MzksMHhDMiwweDM4LDB4OEEsMHgyRCwweDJGLDB4MkIsCi0gICAgMHgyMywweDM5LDB4
QzIsMHgzMCwweEZCLDB4N0MsMHhGQSwweEVCLDB4RTMsMHgzMCwweDgxLDB4MjgsMHg1MiwweDVB
LDB4N0YsMHhERiwKLSAgICAweEExLDB4MjgsMHg0MCwweDIwLDB4RjgsMHg2RSwweEZBLDB4QkEs
MHg2MSwweDIwLDB4NDEsMHgxOCwweEVBLDB4QUEsMHhCMCwweDAwLAotICAgIDB4QTIsMHgyOCww
eDQxLDB4MTgsMHg1NSwweEZGLDB4RkYsMHgyRiwweEEyLDB4MjAsMHg2MSwweDIwLDB4QjUsMHhB
OSwweEFCLDB4ODgsCi0gICAgMHhBMSwweDIwLDB4NjEsMHgyMCwweEJFLDB4QUYsMHhBNywweDBC
LDB4QTIsMHgyOCwweDgxLDB4MjAsMHg4RCwweEI3LDB4QkIsMHhCOCwKLSAgICAweEEyLDB4Mjgs
MHg4MSwweDIwLDB4QkUsMHgzRSwweEFBLDB4RTIsMHhDMiwweDI4LDB4ODEsMHgyMCwweDJGLDB4
QTIsMHhBRiwweEJGLAotICAgIDB4QTIsMHgyOCwweDgyLDB4MjAsMHgwOCwweDhBLDB4N0UsMHhF
OSwweEEyLDB4MjgsMHg4MSwweDIwLDB4QUMsMHg3QSwweEZGLDB4RkIsCi0gICAgMHhBMiwweDI4
LDB4ODEsMHgyMCwweEJGLDB4NUUsMHg2RiwweDlGLDB4MjQsMHgzOSwweEEyLDB4MjgsMHhBRiww
eEJELDB4QjUsMHhENSwKLSAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4QTAsMHg4OCwweEFBLDB4
QTksMHgwMywweDM5LDB4QzIsMHgzMCwweEVGLDB4QTcsMHg3RSwweDk3LAotICAgIDB4QTEsMHgz
OCwweEUyLDB4MzAsMHhGNywweEQ1LDB4QTcsMHhGNywweEMyLDB4MzAsMHg4MSwweDI4LDB4Njgs
MHhGQSwweEJGLDB4RjgsCi0gICAgMHhDMiwweDMwLDB4ODEsMHgyOCwweDM1LDB4RUMsMHhGRiww
eEJBLDB4RTIsMHgzMCwweEEyLDB4MzAsMHgwNywweDIxLDB4MkQsMHhCQiwKLSAgICAweEUyLDB4
MzAsMHhBMiwweDI4LDB4MEMsMHg4MCwweDIwLDB4QkUsMHhFMywweDMwLDB4QzIsMHgyOCwweDNC
LDB4QkMsMHgyRSwweERGLAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHg1NiwweEQ3LDB4RTIs
MHhCRiwweEMyLDB4MzAsMHhBMiwweDI4LDB4NUQsMHg3RCwweDYyLDB4NTgsCi0gICAgMHhBMiww
eDI4LDB4ODEsMHgyMCwweDJGLDB4MjUsMHgyRiwweDBBLDB4QzIsMHgyOCwweEEyLDB4MjgsMHhC
RSwweDUzLDB4NUQsMHg1NSwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RjcsMHhGQSwweEFC
LDB4MjcsMHhFMywweDMwLDB4QTIsMHgyOCwweDBCLDB4NkUsMHhBRiwweENBLAotICAgIDB4MjQs
MHgzOSwweEMyLDB4MzAsMHhFRiwweEM5LDB4QTUsMHhENSwweDAzLDB4MzEsMHhBMiwweDI4LDB4
NUUsMHhGQSwweDdFLDB4QUEsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEJFLDB4MUYsMHg5
NywweEI1LDB4RTMsMHgzMCwweEMyLDB4MzAsMHg2NCwweEUwLDB4QTAsMHgzRCwKLSAgICAweDA0
LDB4MzksMHhDMiwweDMwLDB4RkYsMHhFNSwweEMzLDB4QUUsMHgwMywweDM5LDB4QzIsMHgzMCww
eEQ0LDB4RDYsMHg3NywweEI3LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyRCwweEJELDB4
RkQsMHg2QiwweDAzLDB4MzksMHhDMiwweDMwLDB4Q0EsMHg4MiwweEM4LDB4ODIsCi0gICAgMHgw
MywweDM5LDB4QTIsMHgyOCwweEJBLDB4QkEsMHhFOCwweEZDLDB4MDMsMHgzMSwweEMyLDB4MzAs
MHg3NywweEY1LDB4QTUsMHg1NSwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4N0QsMHhGRiww
eEY2LDB4QkUsMHgyNCwweDM5LDB4QzIsMHgyOCwweDc1LDB4RkQsMHhBRCwweDI1LAotICAgIDB4
MDMsMHgzMSwweEEyLDB4MjgsMHhGRCwweERGLDB4RjIsMHhFOCwweEMyLDB4MjgsMHg4MiwweDI4
LDB4MjIsMHgwQSwweEE4LDB4QkUsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDAyLDB4ODIs
MHg3QiwweERELDB4MDMsMHgzMSwweEMzLDB4MjgsMHg3RSwweEVGLDB4QUYsMHhDRCwKLSAgICAw
eDAzLDB4MzksMHhDMywweDMwLDB4QzIsMHg4QiwweEZCLDB4OUEsMHgwMywweDMxLDB4QzIsMHgz
MCwweEVCLDB4RjcsMHg1RSwweEQ3LAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHhBOCwweEJB
LDB4N0IsMHhGQiwweDAzLDB4MzksMHhDMiwweDI4LDB4OUEsMHhBMCwweDVFLDB4NUQsCi0gICAg
MHhFMiwweDMwLDB4QzIsMHgyOCwweEFGLDB4M0UsMHg2RCwweEY5LDB4MDMsMHgzMSwweEMyLDB4
MjgsMHg5NywweEQ3LDB4OTUsMHgxNSwKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4RkIsMHgz
NiwweDJBLDB4ODgsMHgyMywweDM5LDB4RTMsMHgzMCwweDdELDB4RUEsMHg2QiwweEJGLAotICAg
IDB4MDMsMHgzMSwweEUyLDB4MzAsMHhCNSwweEYzLDB4QTMsMHgzNSwweDQzLDB4MzksMHgwMyww
eDMxLDB4N0YsMHhGRiwweDhGLDB4NkQsCi0gICAgMHgyMywweDM5LDB4QzIsMHgzMCwweERBLDB4
QUMsMHg4QSwweDJFLDB4MDIsMHgzOSwweEMyLDB4MzAsMHg2NSwweDMyLDB4QTIsMHgyOCwKLSAg
ICAweDY0LDB4NDksMHhFMiwweDM4LDB4MkQsMHgyOSwweEFGLDB4QTcsMHg4NSwweDUxLDB4NDQs
MHg0OSwweDhCLDB4QUEsMHhERiwweERELAotICAgIDB4ODQsMHg1MSwweDIzLDB4NDEsMHg4QSww
eEZGLDB4M0QsMHg4QSwweDY4LDB4NkEsMHg2NCwweDQ5LDB4QkQsMHhCRCwweEJELDB4M0YsCi0g
ICAgMHg4QywweDkzLDB4ODgsMHg3MiwweEE1LDB4MkQsMHgyOSwweDJELDB4QUMsMHg5MywweDRD
LDB4OEIsMHhBMSwweEFFLDB4MkEsMHhFRSwKLSAgICAweEFDLDB4OTMsMHg0QiwweDhCLDB4QTAs
MHhBQiwweEVFLDB4N0YsMHhBRCwweDkzLDB4MkIsMHg4MywweEEyLDB4ODgsMHhGOCwweERELAot
ICAgIDB4Q0MsMHg5MywweEVBLDB4N0EsMHgyMiwweEFBLDB4RkUsMHg3RiwweDZCLDB4OEIsMHhB
OSwweDcyLDB4QTgsMHhBMCwweEEyLDB4N0UsCi0gICAgMHg0QiwweDgzLDB4NDcsMHg2MiwweDAw
LDB4OEEsMHhBQSwweDc3LDB4NEIsMHg4MywweDA3LDB4NUEsMHgyMCwweDg4LDB4RkUsMHg1NSwK
LSAgICAweDRCLDB4ODMsMHgyNywweDYyLDB4MDIsMHgwMiwweEFCLDB4RjUsMHhBQywweDhCLDB4
ODksMHg2QSwweDAwLDB4OEEsMHhBQiwweEZELAotICAgIDB4QUMsMHg4QiwweDg5LDB4NzIsMHgw
MCwweEEwLDB4RkEsMHg1RiwweDhDLDB4OEIsMHgwNywweDVBLDB4QTAsMHhGQSwweDVGLDB4NTcs
Ci0gICAgMHg2QiwweDhCLDB4MjcsMHg2MiwweDAwLDB4QkQsMHg3NSwweDU1LDB4QUQsMHg5Myww
eDY4LDB4NjIsMHgwMCwweDBBLDB4QkQsMHg1NSwKLSAgICAweEVELDB4OTMsMHhFQSwweDdBLDB4
ODIsMHg4QSwweEFBLDB4QkQsMHhBRCwweDkzLDB4OEMsMHg4QiwweEE4LDB4QTgsMHhFRiwweEZE
LAotICAgIDB4QUMsMHg5MywweDZDLDB4OEIsMHgyQiwweEExLDB4Q0QsMHhBNSwweENDLDB4OTMs
MHg2QywweDhCLDB4QUEsMHhFQSwweEVELDB4M0YsCi0gICAgMHhDRCwweDkzLDB4OEMsMHg4Qiww
eEFDLDB4NEYsMHhBOSwweDdCLDB4Q0MsMHg5MywweDhCLDB4OEIsMHg4QywweEZELDB4RUIsMHhD
QSwKLSAgICAweEFDLDB4OTMsMHg4QywweDhCLDB4RDIsMHhGMiwweDlGLDB4MzYsMHhFRCwweDlC
LDB4OEMsMHg4QiwweDg5LDB4RjksMHg5NSwweERFLAotICAgIDB4NDMsMHg1MSwweEUyLDB4NDAs
MHhDQSwweDdGLDB4RUEsMHhGRSwweDQzLDB4NDksMHhFMiwweDQwLDB4RjksMHg2MSwweEVGLDB4
QUQsCi0gICAgMHg0MywweDQ5LDB4RTIsMHg0MCwweEVFLDB4RUIsMHhCNywweEJGLDB4MjMsMHg0
OSwweDAyLDB4NDEsMHhEQSwweERGLDB4RjIsMHhFQSwKLSAgICAweDQzLDB4NDksMHhFMiwweDQw
LDB4QkIsMHg2QiwweDc4LDB4NUYsMHgyMiwweDQxLDB4QzEsMHgzOCwweDJBLDB4QUYsMHhCRiww
eEI1LAotICAgIDB4MjMsMHg0OSwweEUyLDB4MzgsMHg1RiwweDJCLDB4M0IsMHhENywweDAzLDB4
NDEsMHhDMiwweDM4LDB4RUEsMHg3QywweEZDLDB4RjYsCi0gICAgMHgwMiwweDQxLDB4QzIsMHgz
OCwweDBCLDB4OEIsMHhFRCwweEVCLDB4MDIsMHg0MSwweEExLDB4MzgsMHgwMCwweDAxLDB4MDks
MHgwQiwKLSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4MzcsMHgzQSwweEJFLDB4RjYsMHgwMyww
eDQ5LDB4MjIsMHg0MSwweEFBLDB4QjksMHhGNywweEFFLAotICAgIDB4NjQsMHg1MSwweEUyLDB4
NDAsMHgzNSwweDE3LDB4QkYsMHhBRSwweDZBLDB4OTMsMHhBNSwweDU5LDB4MEIsMHgwQiwweDJE
LDB4RjUsCi0gICAgMHhBQSwweDlCLDB4ODcsMHg3QSwweDhBLDB4ODIsMHhFRSwweDdELDB4NkEs
MHg5MywweEM3LDB4ODIsMHg4MCwweEEwLDB4RkYsMHg1RCwKLSAgICAweDQ5LDB4OTMsMHhBNyww
eDdBLDB4ODAsMHgyQSwweEZFLDB4NUYsMHgyOSwweDhCLDB4QTcsMHg4MiwweEY4LDB4RUEsMHhC
RiwweEQ3LAotICAgIDB4RTgsMHg4MiwweEE3LDB4N0EsMHg3RSwweEZFLDB4QTAsMHg1MCwweDA5
LDB4OEIsMHg2NiwweDcyLDB4MjIsMHhBQSwweERBLDB4N0YsCi0gICAgMHgwOSwweDhCLDB4QzUs
MHg2MSwweEYwLDB4RkUsMHg3RiwweDVGLDB4MDYsMHg2QSwweEU1LDB4NjEsMHhCQywweDNFLDB4
N0MsMHg1NywKLSAgICAweDI2LDB4NkEsMHhDNCwweDYxLDB4MjgsMHgyMCwweDBBLDB4RkQsMHg0
NiwweDZBLDB4RTUsMHg2MSwweDBBLDB4QUEsMHhCNiwweEY3LAotICAgIDB4NjcsMHg3MiwweEE0
LDB4NTksMHgwMCwweEE4LDB4RkEsMHg1RSwweDI1LDB4NkEsMHg2MywweDUxLDB4MDAsMHhGOCww
eDVFLDB4NTUsCi0gICAgMHhBNSwweDU5LDB4MDMsMHg0OSwweEIwLDB4RkMsMHhGRiwweEJGLDB4
ODQsMHg1MSwweDIzLDB4NDksMHhBMCwweEFBLDB4MEQsMHgyRSwKLSAgICAweDg0LDB4NTEsMHgw
MiwweDQxLDB4N0EsMHg3MiwweDdFLDB4RkUsMHg2NCwweDQ5LDB4MDIsMHg0MSwweDdELDB4RkYs
MHgzRCwweDBGLAotICAgIDB4QzUsMHg1MSwweEUyLDB4NDAsMHhGRCwweEJGLDB4QUUsMHhBMCww
eDg1LDB4NTEsMHgyMywweDQxLDB4QUEsMHgyQSwweEE5LDB4QUIsCi0gICAgMHhBNSwweDUxLDB4
NDQsMHg0OSwweEJGLDB4QTcsMHgyRiwweEZFLDB4QTUsMHg1MSwweDQ0LDB4NDksMHhGRiwweEQ2
LDB4NzgsMHhGQiwKLSAgICAweDg0LDB4NDksMHg0NCwweDQ5LDB4RUYsMHg3RiwweDVCLDB4NkIs
MHg2NCwweDQ5LDB4MjMsMHg0MSwweDZGLDB4Q0EsMHhBQSwweEUyLAotICAgIDB4NjQsMHg0OSww
eDAzLDB4NDEsMHhBRSwweEZGLDB4RkUsMHhEQywweDQ0LDB4NDksMHhFMiwweDM4LDB4QTAsMHhB
QSwweEVFLDB4REUsCi0gICAgMHg0NCwweDQ5LDB4RTMsMHg0MCwweEEyLDB4QUIsMHhFQiwweEJG
LDB4MjMsMHg0MSwweDAzLDB4NDEsMHhGMCwweEJFLDB4NTcsMHhEMCwKLSAgICAweDQ0LDB4NDEs
MHhFMiwweDM4LDB4REYsMHhGRiwweEZFLDB4QjgsMHgyMywweDQxLDB4RTIsMHgzOCwweDdFLDB4
RkYsMHhEOCwweEJBLAotICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHg5RCwweEI3LDB4QUIsMHg4
MiwweDY0LDB4NDksMHgwMywweDQxLDB4MkIsMHhFQSwweEVGLDB4NTUsCi0gICAgMHg0MywweDQx
LDB4RTIsMHgzOCwweDcwLDB4N0EsMHg3QSwweDdGLDB4MDMsMHgzOSwweEExLDB4MzAsMHhBQSww
eEJCLDB4MkIsMHhGNSwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RTIsMHg2QSwweDc4LDB4
N0EsMHhFMywweDM4LDB4ODEsMHgyOCwweDdDLDB4NUUsMHg3NywweEVGLAotICAgIDB4QTIsMHgy
OCwweDYxLDB4MjAsMHhGRSwweDdBLDB4N0IsMHg3QSwweEEyLDB4MjgsMHg2MSwweDIwLDB4Rjcs
MHhFRCwweDJELDB4MDksCi0gICAgMHhBMiwweDIwLDB4NjEsMHgyMCwweDI1LDB4MEMsMHgwOCww
eDJBLDB4QzIsMHgyOCwweDgxLDB4MjAsMHhCQSwweEVBLDB4MDIsMHgyNSwKLSAgICAweEMyLDB4
MjgsMHg4MSwweDIwLDB4QkQsMHhBNSwweEJCLDB4RkYsMHhBMiwweDI4LDB4ODEsMHgyMCwweDFB
LDB4QkEsMHhGRiwweENBLAotICAgIDB4QTIsMHgyOCwweDgxLDB4MjAsMHhFMiwweENCLDB4MkIs
MHhBRiwweEEyLDB4MjgsMHg4MSwweDIwLDB4QTgsMHhCRSwweEZCLDB4RDcsCi0gICAgMHhBMiww
eDI4LDB4ODIsMHgyMCwweEFFLDB4RUYsMHhFRiwweEJGLDB4QTIsMHgyOCwweDYxLDB4MjAsMHhB
QSwweEZCLDB4REYsMHhGQywKLSAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4M0UsMHhBRSwweEJG
LDB4M0YsMHhBMiwweDMwLDB4ODEsMHgyMCwweDNGLDB4QkUsMHgzNywweDNFLAotICAgIDB4MDMs
MHgzOSwweEEyLDB4MjgsMHhCRCwweEFGLDB4QTksMHhBRiwweEUzLDB4MzgsMHhDMiwweDMwLDB4
QUQsMHhBOSwweDA4LDB4ODAsCi0gICAgMHhFMiwweDM4LDB4QzIsMHgzMCwweEVBLDB4NjYsMHhG
RSwweEY0LDB4RTMsMHgzOCwweEEyLDB4MjgsMHg1RSwweEZCLDB4RkEsMHhGOCwKLSAgICAweEMy
LDB4MzAsMHhBMiwweDI4LDB4RkEsMHhCRiwweDNDLDB4MTMsMHhFMiwweDMwLDB4QTMsMHgyOCww
eEVFLDB4RUIsMHhBQSwweEVBLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCNywweEVCLDB4
MjUsMHhGNSwweEMyLDB4MjgsMHhBMSwweDI4LDB4MzAsMHhGOCwweDU3LDB4NTUsCi0gICAgMHhD
MiwweDI4LDB4NjEsMHgyOCwweDAyLDB4ODgsMHhBQSwweEFFLDB4QzIsMHgyOCwweDgxLDB4MjAs
MHhBOCwweEZBLDB4N0EsMHg3RSwKLSAgICAweEMyLDB4MjgsMHg4MiwweDI4LDB4QUIsMHgwRSww
eDBELDB4MkIsMHhFMywweDMwLDB4QTIsMHgyOCwweDVELDB4QzMsMHhGQiwweEJCLAotICAgIDB4
RTMsMHgzMCwweEEyLDB4MjgsMHhCNSwweEQ1LDB4NTUsMHg1NiwweEUzLDB4MzAsMHhBMiwweDI4
LDB4QUUsMHhBQiwweDAxLDB4MDMsCi0gICAgMHgwMywweDMxLDB4QTIsMHgyOCwweDNGLDB4RkYs
MHhERSwweEJGLDB4RTMsMHgzMCwweEMyLDB4MzAsMHg4MiwweDczLDB4RTMsMHgwMCwKLSAgICAw
eDAzLDB4MzksMHhBMiwweDI4LDB4RjcsMHhBNywweDNGLDB4MEUsMHgwMywweDM5LDB4QzMsMHgz
MCwweEI1LDB4RkUsMHhDRSwweEFBLAotICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg1OSwweDZC
LDB4NTksMHg3RiwweEUyLDB4MzAsMHhBMiwweDMwLDB4MEEsMHgwQSwweDJGLDB4QjUsCi0gICAg
MHgwMywweDM5LDB4QzIsMHgzMCwweEVCLDB4QUEsMHhGRiwweEZELDB4NDQsMHg0MSwweEEyLDB4
MzAsMHhBRiwweDhELDB4QUYsMHhFRiwKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4NUUsMHg3
QSwweEFDLDB4MjgsMHgwMywweDMxLDB4QzIsMHgzMCwweDc1LDB4NUUsMHhCQywweEVBLAotICAg
IDB4RTMsMHgzMCwweEExLDB4MjgsMHhCQSwweEUwLDB4QkEsMHhENiwweDAzLDB4MzEsMHhDMiww
eDMwLDB4MkIsMHhFRSwweDJGLDB4REYsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweDdBLDB4
ODgsMHgyQSwweEZCLDB4RTMsMHgzMCwweEEyLDB4MjgsMHg1NSwweDU3LDB4REMsMHgyOCwKLSAg
ICAweEMyLDB4MzAsMHhBMiwweDI4LDB4NzksMHg2MiwweDcyLDB4NTIsMHhFMywweDMwLDB4ODEs
MHgyMCwweDBCLDB4QjcsMHhCNSwweEVGLAotICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHhFMCww
eEIwLDB4RUYsMHhFNSwweEUzLDB4MzAsMHhDMiwweDI4LDB4QkEsMHhFRiwweDhFLDB4QUQsCi0g
ICAgMHhFMywweDMwLDB4QzIsMHgyOCwweEE2LDB4MDcsMHhGRSwweDZGLDB4MDMsMHgzMSwweEMy
LDB4MzAsMHg1NSwweEQ3LDB4QkQsMHg5QiwKLSAgICAweEUyLDB4MzAsMHhDMiwweDI4LDB4RUQs
MHhCMywweDAwLDB4MDAsMHgyMywweDM5LDB4QzIsMHgyOCwweERELDB4RkYsMHhGRiwweENBLAot
ICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHg4RiwweDJGLDB4N0YsMHhGQiwweDAzLDB4MzEsMHhD
MiwweDMwLDB4ODgsMHhGRSwweEZFLDB4QkYsCi0gICAgMHgwMywweDM5LDB4QzIsMHgyOCwweDM3
LDB4QjcsMHhCRiwweEZCLDB4MDMsMHgzOSwweEUyLDB4MzAsMHg4MiwweEEyLDB4RkQsMHhCNSwK
LSAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4OUYsMHg5RSwweDFGLDB4M0YsMHgyMywweDQxLDB4
RTIsMHgzOCwweEQ1LDB4QjcsMHg5QiwweDA2LAotICAgIDB4ODUsMHg0OSwweDAzLDB4MzksMHhC
RCwweEJELDB4QUYsMHgyRiwweEM1LDB4NTEsMHg2NCwweDQ5LDB4NTUsMHg5RCwweEVCLDB4MzIs
Ci0gICAgMHhFNSwweDU5LDB4NjQsMHg0OSwweEZELDB4QjUsMHhFQiwweDJBLDB4QzksMHg3QSww
eEE1LDB4NTEsMHhCNSwweEJELDB4QUYsMHgyRiwKLSAgICAweDhDLDB4OTMsMHhBOCwweDcyLDB4
QUQsMHhGRCwweEZGLDB4OEEsMHg0QSwweDhCLDB4ODcsMHg3MiwweDg4LDB4REYsMHg1NywweEEw
LAotICAgIDB4MEEsMHg4MywweDQ3LDB4NkEsMHgwMCwweEZFLDB4REYsMHhGOCwweEU5LDB4N0Es
MHgyNiwweDYyLDB4MDgsMHhGRCwweERELDB4QUEsCi0gICAgMHhDOCwweDcyLDB4MjYsMHg2Miww
eEU4LDB4NUYsMHhGRiwweEJGLDB4QTgsMHg3MiwweDA2LDB4NUEsMHhGOCwweDc3LDB4RkUsMHgw
MiwKLSAgICAweEE5LDB4NzIsMHhFNiwweDUxLDB4NTcsMHg3NSwweEVCLDB4MDIsMHhDOSwweDcy
LDB4RTYsMHg1MSwweDU1LDB4NzcsMHhCQSwweDAwLAotICAgIDB4QTksMHg3MiwweDA3LDB4NUEs
MHhGNSwweEJGLDB4QkIsMHgwMCwweEM5LDB4NzIsMHgyNywweDYyLDB4RjcsMHhGRiwweEU4LDB4
MkEsCi0gICAgMHhBOSwweDcyLDB4NDcsMHg2MiwweEVCLDB4RTksMHhFRiwweDBBLDB4QTksMHg3
MiwweDA3LDB4NjIsMHhGRiwweDdGLDB4RjgsMHhCOCwKLSAgICAweDY4LDB4NkEsMHgwNiwweDVB
LDB4QjksMHhFQSwweDgyLDB4ODgsMHg2OCwweDZBLDB4MjcsMHg2MiwweDU2LDB4RkUsMHhCMCww
eDIwLAotICAgIDB4MEEsMHg3QiwweDA2LDB4NUEsMHgyRCwweEY3LDB4RkYsMHg3RiwweDhDLDB4
OEIsMHg0NywweDYyLDB4MDAsMHgyQiwweEFELDB4QjUsCi0gICAgMHhBRCwweDkzLDB4NEIsMHg4
MywweDJGLDB4QUUsMHhGRiwweDc1LDB4QUQsMHg5MywweDZCLDB4OEIsMHgwQSwweDNGLDB4QjUs
MHg3QiwKLSAgICAweEFDLDB4OEIsMHg2QiwweDhCLDB4MkMsMHgyRiwweEI1LDB4MjUsMHhBQyww
eDkzLDB4NkMsMHg4QiwweDAwLDB4RUMsMHhBQSwweDdFLAotICAgIDB4Q0QsMHg5MywweDZCLDB4
OEIsMHg1QywweDU3LDB4QTUsMHhEQiwweEFELDB4OTMsMHg2QiwweDhCLDB4MkMsMHhBRSwweEFF
LDB4MUUsCi0gICAgMHgyMywweDQ5LDB4QzIsMHg0MCwweEY2LDB4ODIsMHhBOCwweEE4LDB4MjMs
MHg0OSwweEUyLDB4NDAsMHhBQiwweEFFLDB4QkEsMHhFMiwKLSAgICAweDQzLDB4NTEsMHhFMiww
eDQwLDB4OEEsMHhFMywweEVGLDB4RTcsMHgyMywweDQ5LDB4RTIsMHg0MCwweENGLDB4QjcsMHgy
QiwweEFBLAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHg1NywweEQ1LDB4REMsMHhBQSwweDIz
LDB4NDksMHhDMSwweDM4LDB4QTcsMHhBRSwweEVBLDB4OEEsCi0gICAgMHgyMywweDQ5LDB4RTIs
MHgzOCwweEJGLDB4QkQsMHhBRiwweDJFLDB4MjQsMHg0MSwweEUyLDB4NDAsMHhENSwweDQ3LDB4
RkIsMHhFRiwKLSAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4NUUsMHg1QywweDI4LDB4ODAsMHgy
MywweDQxLDB4QzEsMHg0MCwweDJELDB4QUYsMHhBQSwweEFBLAotICAgIDB4NDMsMHg0OSwweEUy
LDB4NDAsMHhCRSwweEJFLDB4OUIsMHgwMCwweDIyLDB4NDksMHgwMywweDQxLDB4NjIsMHg2MCww
eEVBLDB4QUUsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweDBBLDB4MkEsMHhGNywweEY3LDB4
QzQsMHg1OSwweDAyLDB4NDEsMHgyRiwweEE1LDB4NTUsMHg1NSwKLSAgICAweDQ2LDB4NzIsMHgw
MiwweDQ5LDB4MEEsMHhCRiwweEZELDB4NzUsMHhBNywweDdBLDB4QTMsMHg1OSwweDAyLDB4MkYs
MHhBRCwweEI1LAotICAgIDB4QzgsMHg4MiwweDI1LDB4NzIsMHhBMCwweEYyLDB4QkUsMHhENSww
eEM3LDB4ODIsMHg0NSwweDcyLDB4QTgsMHhBQSwweEZELDB4NzUsCi0gICAgMHhFNywweDgyLDB4
NDYsMHg3MiwweEEwLDB4QUEsMHhBQiwweEZELDB4ODYsMHg3QSwweEM0LDB4NjEsMHhDMCwweDQw
LDB4NzgsMHg1RSwKLSAgICAweDA2LDB4NkEsMHg2NCwweDUxLDB4QTIsMHhCRSwweERGLDB4NTcs
MHhFNSwweDYxLDB4NDMsMHg1MSwweDgwLDB4QUMsMHhGRSwweDU1LAotICAgIDB4RTUsMHg2MSww
eDQzLDB4NTEsMHgwMCwweDBBLDB4QUUsMHhBNSwweDA1LDB4NkEsMHg4NCwweDUxLDB4QTgsMHhF
RSwweDdGLDB4REEsCi0gICAgMHhDNSwweDYxLDB4NDMsMHg1MSwweEYyLDB4NkEsMHg3OCwweEZB
LDB4ODMsMHg1MSwweDAzLDB4NDksMHhBQSwweEZGLDB4N0EsMHhBQSwKLSAgICAweDY0LDB4NTEs
MHgyMywweDQ5LDB4QUQsMHhFNSwweEM1LDB4N0QsMHg2NCwweDQ5LDB4MjMsMHg0OSwweDA4LDB4
MDIsMHgwMywweDAzLAotICAgIDB4NjMsMHg0OSwweDIyLDB4NDEsMHhFNiwweDhDLDB4MDAsMHgw
RSwweEM2LDB4NTksMHgyMywweDQxLDB4QkQsMHgyRCwweDJGLDB4OEIsCi0gICAgMHhDNSwweDU5
LDB4NDQsMHg0MSwweEEyLDB4QTgsMHg2QSwweERFLDB4QTUsMHg1MSwweDY0LDB4NDksMHg2QSww
eEU2LDB4M0QsMHhCQiwKLSAgICAweDg1LDB4NDksMHg0NCwweDQ5LDB4RTIsMHhFOCwweEY4LDB4
OUUsMHg2NCwweDQ5LDB4NDQsMHg0OSwweEEyLDB4N0EsMHhGOCwweEZCLAotICAgIDB4ODUsMHg1
MSwweDI0LDB4NDEsMHhBMywweEVGLDB4RkIsMHhGRCwweDY0LDB4NDksMHgyMywweDQ5LDB4MzAs
MHg4MywweEE5LDB4RUQsCi0gICAgMHg0MywweDQ5LDB4MDMsMHg0MSwweEZDLDB4QkMsMHhBQSww
eEIyLDB4RTYsMHg2MSwweDIzLDB4NDEsMHg1NSwweDU1LDB4RjcsMHgyRCwKLSAgICAweEU2LDB4
NjEsMHgwMywweDQxLDB4NTUsMHhERiwweEJGLDB4MDAsMHhFNiwweDYxLDB4MjMsMHg0MSwweDU1
LDB4RkEsMHg4MiwweDAwLAotICAgIDB4QzUsMHg2MSwweDAzLDB4NDEsMHg1NSwweDc3LDB4RkUs
MHg4MCwweDY0LDB4NDksMHgwMywweDQxLDB4NzUsMHhGRiwweEJGLDB4QTgsCi0gICAgMHg4NSww
eDQ5LDB4MDMsMHg0MSwweDdCLDB4NUEsMHhGQiwweENBLDB4MjMsMHg0MSwweEUyLDB4MzgsMHgy
RiwweDJGLDB4QkUsMHg3QSwKLSAgICAweDIzLDB4NDEsMHhDMiwweDMwLDB4RUIsMHg2QiwweEEw
LDB4RTIsMHgwMywweDM5LDB4QTIsMHgzMCwweEZELDB4MkYsMHgyQSwweEFBLAotICAgIDB4MDMs
MHgzOSwweEMyLDB4MzAsMHhFMiwweEUyLDB4ODAsMHgwMCwweDAzLDB4MzksMHhBMiwweDI4LDB4
NzcsMHg3RiwweDdDLDB4NzgsCi0gICAgMHhDMiwweDI4LDB4NjEsMHgyMCwweDdFLDB4RkUsMHhC
RSwweDNGLDB4RTMsMHgzMCwweDYxLDB4MjAsMHhGRCwweEFGLDB4MkEsMHgwMCwKLSAgICAweDA0
LDB4MzEsMHg4MSwweDIwLDB4NUQsMHhENywweEE4LDB4ODAsMHhFMywweDMwLDB4ODEsMHgyMCww
eEQ1LDB4RkUsMHhBMiwweEU4LAotICAgIDB4RTIsMHgyOCwweEEyLDB4MjgsMHg1RiwweDdCLDB4
RkUsMHhGMiwweEEyLDB4MjgsMHg4MSwweDIwLDB4QzgsMHg0OCwweDQwLDB4RTAsCi0gICAgMHhB
MiwweDI4LDB4ODEsMHgyMCwweEZELDB4NjksMHhCRiwweEI3LDB4QTIsMHgyOCwweDYxLDB4MjAs
MHhBRSwweEFGLDB4MEYsMHgwQSwKLSAgICAweEEyLDB4MjgsMHg4MiwweDI4LDB4QjcsMHgzRiww
eDNGLDB4RjMsMHhDMiwweDMwLDB4ODIsMHgyOCwweDU0LDB4RjYsMHg3RiwweEY1LAotICAgIDB4
QTEsMHgyOCwweDYxLDB4MjAsMHhCRSwweENGLDB4RkQsMHhFRiwweEMzLDB4MzAsMHg4MiwweDI4
LDB4RjcsMHhGRCwweERELDB4NDksCi0gICAgMHgwMywweDQxLDB4ODIsMHgyOCwweEFGLDB4MEQs
MHgzRiwweDBCLDB4MjMsMHg0MSwweEMzLDB4MzgsMHg2RiwweEZCLDB4RTAsMHgwOCwKLSAgICAw
eDIzLDB4NDEsMHhBMSwweDMwLDB4REQsMHhBRiwweEU4LDB4MjgsMHhFMiwweDM4LDB4QTIsMHgz
MCwweEY4LDB4RkEsMHhFOCwweEU4LAotICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhCRiwweERF
LDB4RDgsMHg1OCwweEMyLDB4MzAsMHg4MSwweDI4LDB4MDAsMHhBQSwweEY4LDB4RkEsCi0gICAg
MHhDMiwweDI4LDB4ODEsMHgyOCwweDNBLDB4QkIsMHhCQiwweEFCLDB4RTIsMHgzMCwweDgxLDB4
MjgsMHg3RiwweEVCLDB4QTMsMHhBQSwKLSAgICAweEMzLDB4MzAsMHg4MSwweDI4LDB4RjUsMHhG
RiwweEJFLDB4MDIsMHhDMiwweDI4LDB4ODEsMHgyOCwweEU3LDB4RjcsMHhGRiwweEE4LAotICAg
IDB4QTIsMHgyOCwweDgxLDB4MjAsMHgwMiwweDA1LDB4MkQsMHg4MCwweEMzLDB4MzAsMHg4MSww
eDI4LDB4MEEsMHhBQiwweDdGLDB4RDUsCi0gICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweDJBLDB4
MkIsMHhENywweERELDB4MDMsMHgzOSwweEEyLDB4MjgsMHgyQiwweDIzLDB4QUQsMHgwRCwKLSAg
ICAweDAzLDB4MzksMHhFMywweDI4LDB4RkYsMHg5NCwweEE2LDB4MDgsMHhFMiwweDMwLDB4QzIs
MHgyOCwweDgwLDB4ODgsMHgyNiwweDI2LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBQSww
eEZDLDB4RjgsMHhGNiwweDAzLDB4MzksMHhDMywweDMwLDB4NUUsMHhBQiwweEEzLDB4RjgsCi0g
ICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDYxLDB4N0EsMHg3OCwweDY4LDB4RTMsMHgzMCwweEEy
LDB4MzAsMHhEQSwweDdBLDB4QUEsMHgwMiwKLSAgICAweEMyLDB4MzAsMHhBMiwweDMwLDB4MjIs
MHhBQiwweEI4LDB4MkMsMHgwMywweDM5LDB4QzIsMHgzMCwweEYzLDB4MjUsMHgyNSwweEVELAot
ICAgIDB4MjMsMHgzOSwweEUyLDB4MzAsMHg2QSwweEZFLDB4RkEsMHhBMywweDAzLDB4MzksMHhF
MiwweDMwLDB4QUQsMHhBRCwweEY2LDB4QjgsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEQ3
LDB4NkIsMHg3QSwweDdBLDB4RTIsMHgzMCwweEEyLDB4MjgsMHhBMiwweEJFLDB4RUYsMHhGQSwK
LSAgICAweDAzLDB4MzksMHhDMiwweDI4LDB4OUQsMHhGQywweEZBLDB4NTksMHhFMiwweDMwLDB4
QTIsMHgyOCwweEFDLDB4QkUsMHhDRSwweEFGLAotICAgIDB4RTIsMHgzMCwweEExLDB4MjgsMHg1
QSwweEZBLDB4RkIsMHhCQSwweEMyLDB4MjgsMHhBMSwweDI4LDB4MjcsMHgwRSwweDAwLDB4MDAs
Ci0gICAgMHhFMywweDMwLDB4QzIsMHgyOCwweENELDB4MEIsMHgyNSwweDJELDB4RTMsMHgzMCww
eEMyLDB4MzAsMHhFNSwweEJFLDB4QTAsMHgyMCwKLSAgICAweDAzLDB4MzksMHhDMiwweDI4LDB4
RjcsMHhGQiwweDJBLDB4NkEsMHgwMywweDMxLDB4QzIsMHgyOCwweERBLDB4RkEsMHhBQiwweEFB
LAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHgzRiwweEJELDB4QUYsMHhGNywweDAzLDB4MzEs
MHhFMiwweDMwLDB4QzQsMHgzRSwweEY5LDB4NjMsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCww
eDA4LDB4MkMsMHhDMCwweDgyLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhBQywweDcwLDB4NjAsMHg4
MCwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4QjQsMHhBQiwweEZELDB4N0EsMHgyMywweDM5
LDB4QzIsMHgzMCwweEZFLDB4OTcsMHhBRCwweDI3LAotICAgIDB4NDQsMHg0MSwweDAzLDB4Mzks
MHhERCwweEI2LDB4RTMsMHhFMywweDY0LDB4NDksMHgyMywweDQxLDB4NUYsMHg1RCwweDRGLDB4
QTMsCi0gICAgMHg4NSwweDUxLDB4MDMsMHgzOSwweDI1LDB4QkQsMHhBRiwweEVDLDB4QzUsMHg1
MSwweDQzLDB4NDEsMHhFMiwweEFBLDB4QkYsMHhENSwKLSAgICAweDI2LDB4NjIsMHg0MywweDQ5
LDB4QUYsMHgyRiwweDJGLDB4QkQsMHgwRCwweEE0LDB4MjYsMHg2MiwweEJELDB4QUQsMHgyRiww
eDBGLAotICAgIDB4NkUsMHhBQywweDZCLDB4OEIsMHhFRCwweEFGLDB4MEEsMHgwMCwweDZFLDB4
QUMsMHhFRCwweDlCLDB4NTcsMHgyQSwweDgyLDB4MDAsCi0gICAgMHg2RSwweEFDLDB4MkEsMHg4
MywweDdGLDB4QTgsMHgyMCwweDAwLDB4NkUsMHhBQywweDJBLDB4ODMsMHg1NSwweEZFLDB4QUEs
MHgwMCwKLSAgICAweDZGLDB4QUMsMHhFOSwweDdBLDB4NTUsMHhGRSwweEEyLDB4MDgsMHgyRSww
eEE0LDB4RTksMHg3QSwweDU1LDB4N0YsMHhFQywweDgwLAotICAgIDB4OEIsMHg4QiwweEE5LDB4
NzIsMHhGRCwweEZBLDB4QTIsMHhBMCwweDRCLDB4OEIsMHhDOSwweDcyLDB4NzcsMHhGRSwweDcy
LDB4RjgsCi0gICAgMHgwOSwweDdCLDB4QzksMHg3MiwweEJCLDB4RUIsMHg4MiwweDZBLDB4RTks
MHg3QSwweEE4LDB4NzIsMHgzNSwweDE3LDB4RUUsMHhGQSwKLSAgICAweEU5LDB4N0EsMHhBOCww
eDcyLDB4NjksMHhCQSwweDAyLDB4QTYsMHhFOSwweDcyLDB4NjcsMHg2QSwweEQ2LDB4N0YsMHhB
RSwweEU4LAotICAgIDB4QzksMHg3MiwweDY3LDB4NkEsMHg1NiwweERFLDB4RkUsMHhEMCwweEE4
LDB4NzIsMHg2NywweDZBLDB4NEYsMHhBMywweEY3LDB4QkIsCi0gICAgMHg4OCwweDZBLDB4NDcs
MHg2MiwweDY3LDB4NEIsMHg3NiwweEE4LDB4QTgsMHg3MiwweDA2LDB4NUEsMHgyRiwweDVGLDB4
RkEsMHhCQiwKLSAgICAweDZDLDB4OEIsMHg0NywweDYyLDB4MEEsMHgyRCwweEI1LDB4NTUsMHg4
QiwweDhCLDB4QTgsMHg2QSwweDgwLDB4MDAsMHgwQiwweEFELAotICAgIDB4QUMsMHg5MywweDZC
LDB4ODMsMHhGRiwweEFCLDB4RTksMHhCRCwweDhCLDB4OEIsMHg0QiwweDgzLDB4RUUsMHhFQSww
eEVBLDB4MjYsCi0gICAgMHg4QywweDhCLDB4MkEsMHg4MywweEFFLDB4RjcsMHhBQiwweEEyLDB4
QUMsMHg5MywweDRCLDB4ODMsMHhBQiwweEFCLDB4NkEsMHhGQSwKLSAgICAweDIzLDB4NDksMHhF
MiwweDQwLDB4M0EsMHhCQSwweEFDLDB4N0EsMHgyMywweDQ5LDB4RTIsMHg0MCwweDJDLDB4MEEs
MHhBRCwweDQxLAotICAgIDB4MDIsMHg0OSwweEUyLDB4NDAsMHgyOCwweEJBLDB4QkUsMHgwNyww
eDIzLDB4NDksMHhFMiwweDQwLDB4QjAsMHhFRSwweEU3LDB4OEIsCi0gICAgMHgyMywweDQ5LDB4
RTIsMHg0MCwweDhBLDB4MDgsMHgyOCwweEFFLDB4MjMsMHg0OSwweEMyLDB4MzgsMHgyQiwweDI2
LDB4QUEsMHhCQSwKLSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4OEIsMHhBRSwweDJFLDB4M0Ms
MHgyMiwweDQxLDB4RTIsMHg0MCwweDZCLDB4M0UsMHgyMCwweDJBLAotICAgIDB4MjMsMHg0OSww
eDAyLDB4NDEsMHg2MSwweEVCLDB4RUMsMHg3NywweDIzLDB4NDEsMHhFMiwweDM4LDB4MkIsMHhC
QSwweEFGLDB4RUIsCi0gICAgMHg0MywweDQ5LDB4MDIsMHg0MSwweDNGLDB4RkQsMHhDRiwweDg1
LDB4RTIsMHg0OCwweDIyLDB4NDEsMHhCRCwweEE5LDB4RUIsMHhCRiwKLSAgICAweDIzLDB4NDks
MHhFMiwweDQwLDB4RkQsMHhCRiwweEVFLDB4NjIsMHgwMywweDQ5LDB4QzIsMHg0MCwweDBBLDB4
RkEsMHhGRSwweEZGLAotICAgIDB4NjMsMHg1MSwweEMyLDB4NDAsMHhCRCwweEI1LDB4M0YsMHhC
RiwweDI1LDB4NkEsMHg2MywweDUxLDB4MDksMHg4RCwweDhGLDB4QUQsCi0gICAgMHgyNSwweDZB
LDB4QzQsMHg2MSwweDBGLDB4RUQsMHgwRiwweDIyLDB4NDcsMHg3MiwweEU1LDB4NjEsMHhBMiww
eEVELDB4RTUsMHhENywKLSAgICAweDQ2LDB4NzIsMHhDNSwweDU5LDB4OEEsMHhBRSwweEZCLDB4
NTYsMHhFNSwweDYxLDB4NDMsMHg1MSwweDIwLDB4RjgsMHhCOCwweDVFLAotICAgIDB4QTQsMHg1
OSwweDAyLDB4NDksMHhGOCwweDVFLDB4NTcsMHg1NywweDI0LDB4NDksMHhBMywweDQwLDB4RTgs
MHhGRSwweERGLDB4QjcsCi0gICAgMHg4NCwweDU5LDB4RTIsMHg0MCwweDBGLDB4MkQsMHgyRCww
eDJELDB4QzQsMHg1OSwweDg0LDB4NTksMHhDMiwweEFBLDB4OEQsMHhFQiwKLSAgICAweEM1LDB4
NTksMHg2MywweDUxLDB4REUsMHhFQSwweDgyLDB4QTIsMHhBNCwweDU5LDB4NjMsMHg1MSwweEQ3
LDB4REMsMHg2MCwweDcyLAotICAgIDB4ODQsMHg1MSwweDQzLDB4NDksMHhGNSwweENGLDB4OEEs
MHgyQiwweEE0LDB4NTEsMHg2NCwweDUxLDB4NzksMHhFRCwweDdCLDB4NUQsCi0gICAgMHhBNCww
eDUxLDB4NDMsMHg0OSwweEI3LDB4QjUsMHhBRiwweDJCLDB4QTUsMHg1MSwweDQ0LDB4NDksMHg4
MCwweEEwLDB4QjgsMHhEOCwKLSAgICAweDg0LDB4NTEsMHg0NCwweDQ5LDB4QUEsMHhFOCwweEY3
LDB4RkYsMHg4NCwweDQ5LDB4NDQsMHg0OSwweDAxLDB4QTEsMHhGRCwweERFLAotICAgIDB4NjQs
MHg0OSwweDIzLDB4NDEsMHgwOCwweEFBLDB4N0EsMHg4MCwweDY0LDB4NDksMHgyMywweDQxLDB4
MkUsMHhFMiwweEVGLDB4REYsCi0gICAgMHg2NCwweDUxLDB4MjMsMHg0OSwweEFGLDB4MEEsMHhC
RSwweDI3LDB4QTQsMHg1OSwweDIzLDB4NDksMHhERiwweDdGLDB4REUsMHgzQiwKLSAgICAweDA2
LDB4NkEsMHgwMiwweDQxLDB4RjUsMHhCRiwweDJCLDB4MEUsMHgwNiwweDZBLDB4NjQsMHg1MSww
eDBELDB4MEIsMHg4MiwweEEwLAotICAgIDB4NDcsMHg3MiwweDQzLDB4NTEsMHg4QSwweEEyLDB4
QTMsMHhENywweEU1LDB4NjEsMHg4MywweDU5LDB4ODgsMHhCQSwweEUyLDB4NTUsCi0gICAgMHhF
NiwweDYxLDB4ODQsMHg1MSwweEUwLDB4QUIsMHhFRCwweDdGLDB4ODUsMHg1MSwweDAzLDB4NDEs
MHhEOCwweEY4LDB4N0EsMHg1QSwKLSAgICAweDY0LDB4NDksMHgwMiwweDQxLDB4MkEsMHhGRiww
eDdELDB4NTUsMHgyMywweDQxLDB4QzIsMHgzOCwweDY4LDB4RTAsMHhFQSwweEJBLAotICAgIDB4
MjMsMHg0MSwweEUzLDB4MzgsMHg4MiwweDAzLDB4RUIsMHhGOSwweDAzLDB4MzksMHhDMiwweDMw
LDB4OEEsMHhBOCwweEYwLDB4N0UsCi0gICAgMHgyMywweDM5LDB4QzIsMHgzMCwweEFCLDB4QUYs
MHhGRiwweEQ1LDB4MDMsMHgzOSwweDgyLDB4MjAsMHg3MCwweEYwLDB4RjAsMHhGQSwKLSAgICAw
eEMyLDB4MjgsMHg2MSwweDIwLDB4M0YsMHhCNywweEJELDB4MTcsMHgwMywweDMxLDB4QzMsMHgy
OCwweDBBLDB4MDMsMHgwMywweEZELAotICAgIDB4MDMsMHgzMSwweEMzLDB4MjgsMHgyMCwweDYy
LDB4NzcsMHg1NSwweEMzLDB4MjgsMHg2MiwweDI4LDB4QTgsMHgyQSwweEE4LDB4RTgsCi0gICAg
MHhDMiwweDMwLDB4ODEsMHgyOCwweDAyLDB4QkMsMHhBQywweEI3LDB4QzIsMHgyOCwweDgxLDB4
MjgsMHhGQSwweDdBLDB4NkYsMHhBRiwKLSAgICAweEEyLDB4MzAsMHg4MSwweDIwLDB4RUYsMHhG
RCwweDVGLDB4MjgsMHhDMywweDMwLDB4ODEsMHgyOCwweEVELDB4RjUsMHgzNSwweDNDLAotICAg
IDB4NDQsMHg0MSwweDgxLDB4MjgsMHhENSwweEJGLDB4QkIsMHg4MiwweDI0LDB4NDEsMHhBMiww
eDMwLDB4NTcsMHg1QSwweEE4LDB4ODIsCi0gICAgMHhFMywweDM4LDB4NjEsMHgyOCwweDU3LDB4
RkYsMHhFQSwweEEwLDB4QTIsMHgzMCwweDgyLDB4MjgsMHg4RCwweEI3LDB4QkIsMHg4OCwKLSAg
ICAweDI0LDB4NDEsMHhBMiwweDMwLDB4QUQsMHgyRiwweEFELDB4QUQsMHg0NCwweDQ5LDB4MDMs
MHg0MSwweEFGLDB4QkEsMHhBQiwweDlGLAotICAgIDB4NDQsMHg0OSwweDAzLDB4MzksMHhERSww
eDdDLDB4N0UsMHhDMCwweDIzLDB4NDEsMHhBMiwweDMwLDB4RkUsMHhFQSwweEVBLDB4RkMsCi0g
ICAgMHhFMiwweDM4LDB4ODEsMHgyOCwweDdBLDB4RUEsMHhBQSwweDAwLDB4QzIsMHgzMCwweDgx
LDB4MjgsMHhGRiwweDdBLDB4RTgsMHhEQSwKLSAgICAweEUyLDB4MzAsMHg4MSwweDIwLDB4RkYs
MHhBRCwweDBCLDB4MkEsMHgyNCwweDM5LDB4QzIsMHgyOCwweEZELDB4QkYsMHhBRiwweDBBLAot
ICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg1NSwweEU3LDB4MEIsMHgwMiwweDQ0LDB4MzksMHhD
MiwweDMwLDB4NUYsMHg3QSwweEU4LDB4MEEsCi0gICAgMHg0NCwweDM5LDB4QTIsMHgyOCwweDU3
LDB4NTcsMHhGRiwweEU4LDB4MDMsMHgzMSwweDgyLDB4MjgsMHg3NywweEZGLDB4RTIsMHhBQSwK
LSAgICAweEUzLDB4MzAsMHg4MSwweDI4LDB4NzcsMHhGRiwweEJFLDB4MDIsMHgwNCwweDM5LDB4
QTIsMHgyOCwweDA5LDB4QUQsMHgyRiwweDNBLAotICAgIDB4MjQsMHgzOSwweEUyLDB4MzAsMHhB
QSwweEVGLDB4RUYsMHhGRCwweEUyLDB4MzAsMHhBMiwweDI4LDB4MDAsMHgwMiwweDAwLDB4Rjgs
Ci0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEJFLDB4QTYsMHhGQSwweEUzLDB4QzIsMHgzMCww
eEEyLDB4MjgsMHgwMCwweDBFLDB4MkQsMHgyRiwKLSAgICAweDAzLDB4MzksMHhDMywweDMwLDB4
QzIsMHhFQiwweEZGLDB4RjcsMHhFMiwweDMwLDB4QTEsMHgzMCwweEM4LDB4QTksMHhFNiwweEFF
LAotICAgIDB4RTIsMHgzMCwweEMyLDB4MzAsMHg1NywweDU3LDB4RDUsMHg4RCwweDAzLDB4Mzks
MHhDMiwweDMwLDB4QjUsMHgzRCwweDk3LDB4RDcsCi0gICAgMHg0NCwweDM5LDB4RTIsMHgzMCww
eEZCLDB4REUsMHhBRSwweEY3LDB4MDMsMHgzMSwweEUyLDB4MzAsMHgwMywweDgyLDB4QkUsMHhC
NiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4OEYsMHg4QSwweDYyLDB4RjgsMHhFMiwweDMw
LDB4QTIsMHgyOCwweEVBLDB4N0EsMHg2RiwweEVDLAotICAgIDB4RTMsMHgzMCwweEEyLDB4Mjgs
MHhGRCwweEE5LDB4QUQsMHg4QiwweEUzLDB4MzAsMHhBMiwweDI4LDB4QUQsMHhFQiwweDZCLDB4
N0EsCi0gICAgMHhFMiwweDI4LDB4QTEsMHgyOCwweEJGLDB4NkYsMHg1NSwweEE1LDB4QzIsMHgy
OCwweEEyLDB4MjgsMHg4MCwweDhCLDB4RjksMHhGOCwKLSAgICAweEUyLDB4MjgsMHhBMSwweDI4
LDB4QUEsMHhEQSwweEY3LDB4NTUsMHhFMywweDMwLDB4QTEsMHgyOCwweDIzLDB4MEUsMHhBQiww
eDlCLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhFMywweEIyLDB4RUIsMHhERiwweDAzLDB4
MzEsMHhFMywweDMwLDB4Q0QsMHhFRiwweEE1LDB4RjcsCi0gICAgMHgwMiwweDMxLDB4QzIsMHgz
MCwweDVCLDB4Q0EsMHhERSwweEZFLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhBOCwweEJCLDB4RkQs
MHhFQiwKLSAgICAweDIzLDB4MzEsMHhDMiwweDMwLDB4RkYsMHg3RSwweEY3LDB4RDUsMHgyMyww
eDMxLDB4QzIsMHgzMCwweENCLDB4RkYsMHhGQiwweDlFLAotICAgIDB4MDIsMHgzOSwweEMyLDB4
MzAsMHg3QSwweEUyLDB4RkEsMHhBQywweDI0LDB4MzksMHhDMiwweDMwLDB4QjUsMHhBNSwweDI1
LDB4QjUsCi0gICAgMHg2NCwweDQxLDB4RTIsMHgzOCwweEYzLDB4RkYsMHhENywweDU3LDB4ODUs
MHg0OSwweDI0LDB4NDEsMHhGQiwweEFELDB4QUQsMHgyOSwKLSAgICAweEE1LDB4NTEsMHg0Myww
eDQxLDB4REQsMHhGRCwweDZCLDB4OEEsMHhDNiwweDU5LDB4NDMsMHg0OSwweDc1LDB4RkQsMHg5
NywweDI3LAotICAgIDB4MDksMHg4MywweDQzLDB4NDksMHhGRCwweEJELDB4MkYsMHgyRiwweEFG
LDB4QjQsMHhBOCwweDcyLDB4QUQsMHhBRiwweDJGLDB4MkEsCi0gICAgMHhEMCwweEJDLDB4NkUs
MHhBQywweDc1LDB4RkYsMHhBMywweEEyLDB4QUYsMHhCNCwweDRFLDB4QUMsMHhGRiwweDdFLDB4
QkEsMHhGRSwKLSAgICAweDhGLDB4QjQsMHg2RSwweEFDLDB4REQsMHhCQSwweDBBLDB4MEYsMHhB
RiwweEI0LDB4NEUsMHhBQywweERGLDB4QkEsMHgwMCwweEEyLAotICAgIDB4QUYsMHhCNCwweDZF
LDB4QUMsMHg1NywweEY1LDB4MkEsMHgwMCwweEFGLDB4QjQsMHgwRCwweEE0LDB4NkEsMHhBQSww
eEU4LDB4MjAsCi0gICAgMHg0RiwweEFDLDB4NkIsMHg4QiwweDU3LDB4NTgsMHg3OCwweEMwLDB4
NEIsMHg4QiwweDBBLDB4ODMsMHhFRSwweEZBLDB4NUYsMHg1QSwKLSAgICAweDBBLDB4N0IsMHhD
OSwweDcyLDB4QTIsMHhFMCwweEU4LDB4NjgsMHhFOSwweDdBLDB4QTgsMHg3MiwweEZBLDB4NjIs
MHg1QSwweDdBLAotICAgIDB4QTgsMHg3MiwweDQ3LDB4NjIsMHgyMCwweDAwLDB4RUEsMHhEQSww
eEM5LDB4NzIsMHg0NywweDYyLDB4MDIsMHg4RSwweDhGLDB4QjUsCi0gICAgMHhFOSwweDdBLDB4
ODgsMHg2QSwweDdGLDB4OUUsMHg4MywweENBLDB4QzksMHg3MiwweDY3LDB4NkEsMHhGRCwweEJG
LDB4MzgsMHhBQSwKLSAgICAweEM5LDB4NzIsMHg2NywweDYyLDB4NUEsMHhGQSwweDg4LDB4QzAs
MHhBOCwweDcyLDB4NDcsMHg2MiwweERGLDB4RjgsMHhFMCwweEU4LAotICAgIDB4ODcsMHg2QSww
eDI3LDB4NjIsMHg1NiwweEY3LDB4NkUsMHhDQiwweEU5LDB4N0EsMHgwNiwweDVBLDB4MkYsMHhG
RiwweEQ1LDB4NTcsCi0gICAgMHg2QiwweDgzLDB4MDYsMHg1QSwweDAwLDB4MDIsMHgyRCwweDM1
LDB4OEMsMHg4QiwweDRCLDB4ODMsMHhFQSwweDNBLDB4MkMsMHgzNSwKLSAgICAweDhDLDB4OEIs
MHg0QiwweDgzLDB4QjgsMHhFOCwweDMwLDB4OUEsMHg4QywweDhCLDB4NEIsMHg4MywweDlFLDB4
QkEsMHhBRSwweERDLAotICAgIDB4MjMsMHg0OSwweEUzLDB4NDAsMHhGQSwweEU4LDB4QkYsMHgy
RCwweDIzLDB4NDksMHhFMiwweDQwLDB4QTUsMHhBRCwweEZBLDB4NUUsCi0gICAgMHgyMywweDQx
LDB4QzIsMHg0MCwweDdGLDB4RkMsMHhCRSwweEZBLDB4MjMsMHg0MSwweEMyLDB4NDAsMHhBQSww
eEE5LDB4MkEsMHhBQiwKLSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4QkUsMHg5RSwweEZFLDB4
RUEsMHgyMywweDQ5LDB4RTIsMHg0MCwweDU2LDB4REUsMHgxRSwweEVELAotICAgIDB4MjMsMHg0
OSwweEUyLDB4NDAsMHhBRiwweEZGLDB4RkUsMHg4OCwweDQzLDB4NDksMHhFMiwweDQwLDB4RkYs
MHhFRiwweEE3LDB4QUMsCi0gICAgMHg0MywweDQ5LDB4RTIsMHg0MCwweEZCLDB4NkIsMHhFMCww
eEQwLDB4MjMsMHg0MSwweEUyLDB4NDAsMHhBQiwweDg5LDB4OEIsMHhBQSwKLSAgICAweDQzLDB4
NDksMHgwMywweDQxLDB4RjUsMHhENywweEI3LDB4QTQsMHg0MywweDQ5LDB4MDMsMHg0MSwweDlG
LDB4M0UsMHhBOCwweEJGLAotICAgIDB4NDMsMHg0OSwweEUzLDB4NDAsMHg3OCwweEM4LDB4QUYs
MHhFRiwweDAyLDB4NDEsMHhDMiwweDQwLDB4QkYsMHhERiwweDVDLDB4QTAsCi0gICAgMHgyMyww
eDQ5LDB4RTIsMHg0MCwweDNGLDB4M0YsMHhERCwweEY3LDB4RTUsMHg2MSwweDAzLDB4NDksMHgy
RiwweDNGLDB4QjUsMHhGNSwKLSAgICAweDA1LDB4NkEsMHhBNCwweDU5LDB4MEEsMHhBRSwweEMy
LDB4MkQsMHgyNiwweDZBLDB4ODQsMHg1OSwweEE4LDB4RTIsMHg3QSwweDdBLAotICAgIDB4RTUs
MHg2MSwweDAzLDB4NDksMHhBOCwweEVBLDB4RkUsMHg3RiwweDg0LDB4NTksMHhFMiwweDQwLDB4
QTAsMHhFMCwweEZGLDB4REQsCi0gICAgMHgwMywweDQ5LDB4QzIsMHg0MCwweEE4LDB4RUEsMHhG
RSwweDlBLDB4MDMsMHg0OSwweEMyLDB4NDAsMHhCQSwweDg4LDB4NzgsMHg5QSwKLSAgICAweDg1
LDB4NTksMHhFMiwweDQwLDB4M0QsMHgzRCwweDM1LDB4MjcsMHhFNiwweDYxLDB4QTUsMHg1OSww
eEVELDB4RDYsMHhCNiwweDA5LAotICAgIDB4RTYsMHg2MSwweEE1LDB4NTksMHg1RCwweDc2LDB4
REEsMHhCQiwweEM1LDB4NTksMHg2NCwweDUxLDB4NUEsMHg2MCwweEZDLDB4RjgsCi0gICAgMHg4
NCwweDUxLDB4NDMsMHg1MSwweEFBLDB4OEIsMHg4QiwweDA0LDB4QzUsMHg1MSwweDY0LDB4NTEs
MHhGRCwweEZELDB4RUQsMHhCRiwKLSAgICAweEM1LDB4NTksMHg4NCwweDUxLDB4QjUsMHhCQSww
eDZELDB4RDgsMHhBNSwweDUxLDB4NjQsMHg0OSwweEY4LDB4RUUsMHhENiwweDU4LAotICAgIDB4
ODUsMHg1MSwweDQ0LDB4NDksMHhFQywweEJBLDB4RUYsMHhCRiwweDg0LDB4NDksMHgyMywweDQx
LDB4RjgsMHg1RSwweEZBLDB4ODAsCi0gICAgMHg4NSwweDUxLDB4MjMsMHg0OSwweEZCLDB4RkIs
MHg2QSwweEZBLDB4NjQsMHg0OSwweDIzLDB4NDksMHg5NywweDZGLDB4REYsMHhGQSwKLSAgICAw
eDI1LDB4NkEsMHgyMywweDQ5LDB4RjUsMHgzRCwweDBGLDB4MjMsMHg2NSwweDcyLDB4QzQsMHg1
OSwweEI1LDB4OEUsMHgyMiwweEVBLAotICAgIDB4NjYsMHg3MiwweEEzLDB4NTksMHhBQSwweEE4
LDB4RjgsMHg3RSwweDA2LDB4NkEsMHg4NCwweDUxLDB4QTgsMHhBOCwweEVBLDB4NUYsCi0gICAg
MHhDNSwweDU5LDB4NjQsMHg1MSwweDU2LDB4RDQsMHg3RSwweDdCLDB4NjQsMHg1MSwweDIzLDB4
NDksMHg4MCwweDA4LDB4RkEsMHg1NywKLSAgICAweEM1LDB4NTksMHg0MywweDQ5LDB4Q0EsMHhB
QiwweEVCLDB4RkQsMHg2NCwweDQ5LDB4MDMsMHg0MSwweEZBLDB4NUUsMHg3QywweERDLAotICAg
IDB4MjMsMHg0MSwweEEyLDB4MzAsMHhBQSwweEFBLDB4RkEsMHg3QSwweDAzLDB4MzksMHhDMiww
eDM4LDB4QTIsMHhBRSwweEI3LDB4MjUsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDNCLDB4
QkYsMHg1RiwweEQwLDB4RTMsMHgzOCwweDYxLDB4MjgsMHhCMCwweEU4LDB4QTgsMHhBQSwKLSAg
ICAweEMyLDB4MzAsMHg2MSwweDI4LDB4MkEsMHhBQiwweEVFLDB4RkEsMHhDMiwweDI4LDB4ODEs
MHgyOCwweEFBLDB4RkQsMHhCNSwweERELAotICAgIDB4QTIsMHgyOCwweDYxLDB4MjAsMHgzRiww
eEJBLDB4QjgsMHgyQSwweEUzLDB4MzAsMHhBMiwweDI4LDB4MkYsMHhBQiwweEFCLDB4RkQsCi0g
ICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDdFLDB4N0EsMHhCQywweEI2LDB4QzMsMHgzMCwweDgy
LDB4MjgsMHhGRiwweEVBLDB4MEEsMHg4MCwKLSAgICAweEUzLDB4MzAsMHg4MiwweDIwLDB4REYs
MHhENSwweEZCLDB4RUYsMHg0NCwweDQxLDB4QTIsMHgyOCwweEQ1LDB4RkQsMHhBRCwweDJGLAot
ICAgIDB4NDQsMHg0MSwweEEyLDB4MzAsMHhCRCwweDJGLDB4ODgsMHg4MCwweDY1LDB4NDksMHgw
MywweDM5LDB4RDcsMHhGRiwweEVGLDB4M0QsCi0gICAgMHg2NSwweDQ5LDB4QzMsMHgzOCwweEVB
LDB4RTgsMHhGQSwweDU4LDB4MjQsMHg0MSwweEMyLDB4MzgsMHgwQSwweDJBLDB4M0UsMHhGRCwK
LSAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4REYsMHhFNiwweEU4LDB4QTAsMHgyMywweDQxLDB4
QTIsMHgzMCwweEQ3LDB4RUYsMHhBQSwweDBBLAotICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHg3
RCwweDZELDB4RDcsMHg1QywweDQ0LDB4NDksMHhFMiwweDM4LDB4RkYsMHhDRCwweEI1LDB4QjUs
Ci0gICAgMHg4NSwweDUxLDB4MjMsMHg0MSwweEZGLDB4RkQsMHg4RCwweEM5LDB4ODQsMHg1MSww
eDAzLDB4MzksMHg1NywweEZGLDB4QUIsMHhBMiwKLSAgICAweDQzLDB4NDksMHhFMiwweDM4LDB4
NUYsMHg3RSwweDc4LDB4NjAsMHhFMiwweDMwLDB4QTIsMHgzMCwweDdGLDB4N0YsMHhGQywweEQ3
LAotICAgIDB4RTIsMHgzMCwweEExLDB4MjgsMHgzRCwweEI1LDB4QkQsMHhERiwweDAzLDB4Mzks
MHhBMiwweDI4LDB4MDIsMHgyRiwweEJGLDB4NTcsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgzMCww
eEEwLDB4ODIsMHhFRiwweEY1LDB4NDQsMHg0MSwweEUzLDB4MzAsMHgyRCwweDJELDB4QUQsMHhG
RCwKLSAgICAweDQ1LDB4MzksMHhDMywweDMwLDB4RUMsMHhGQSwweDdBLDB4REUsMHgyMywweDM5
LDB4QzIsMHgzMCwweEY4LDB4RkIsMHhBQiwweEFELAotICAgIDB4RTMsMHgzMCwweEEyLDB4Mjgs
MHgyOCwweEMyLDB4QjgsMHhFMCwweEUzLDB4MzAsMHhDMiwweDI4LDB4MDgsMHgwMiwweDIwLDB4
MEQsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgyOCwweEJGLDB4RkYsMHhGRiwweDU0LDB4MDMsMHgz
MSwweEEyLDB4MjgsMHg1QSwweDU0LDB4NzYsMHg3RiwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4
LDB4RTksMHhGQiwweDdELDB4N0UsMHhDMiwweDMwLDB4ODIsMHgyOCwweDNFLDB4M0YsMHhBQiww
eEMyLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBRiwweDhGLDB4RkIsMHhEQiwweDAzLDB4
MzksMHhDMiwweDMwLDB4QUYsMHgwMiwweEEyLDB4RjgsCi0gICAgMHhFMiwweDMwLDB4ODEsMHgy
OCwweEMyLDB4QzgsMHg2MCwweEM4LDB4RTIsMHgzMCwweEExLDB4MjgsMHgyQSwweEFELDB4RUYs
MHhCRCwKLSAgICAweEUyLDB4MzAsMHhDMiwweDMwLDB4MDIsMHhEQiwweEVCLDB4NjMsMHgwMyww
eDMxLDB4QzIsMHgzMCwweDI4LDB4QTgsMHhBMCwweDhCLAotICAgIDB4MDMsMHgzMSwweEMyLDB4
MzAsMHg1MiwweDVFLDB4QkIsMHhGNywweEUzLDB4MzAsMHhBMiwweDI4LDB4QTgsMHhFMiwweDgw
LDB4N0MsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDYyLDB4RkIsMHg5NywweEY3LDB4RTMs
MHgzMCwweEMyLDB4MjgsMHg1RCwweDQ1LDB4OEQsMHgyNSwKLSAgICAweEUyLDB4MzAsMHhDMiww
eDI4LDB4ODksMHhBQiwweDdGLDB4NzcsMHhFMiwweDMwLDB4QTEsMHgyOCwweDVBLDB4REEsMHhB
QSwweDIwLAotICAgIDB4RTMsMHgzMCwweDgxLDB4MjAsMHhERiwweEFFLDB4OEEsMHg4QSwweEUy
LDB4MzAsMHhBMiwweDI4LDB4RkIsMHhFOSwweDhBLDB4MjIsCi0gICAgMHgwMywweDMxLDB4QzIs
MHgzMCwweDdGLDB4RjIsMHhDQSwweEZFLDB4MjMsMHgzOSwweEUzLDB4MzAsMHg3RiwweEZFLDB4
REQsMHgzRiwKLSAgICAweDIzLDB4MzksMHhFMywweDMwLDB4NUYsMHhGRCwweEVGLDB4OEIsMHgy
MywweDM5LDB4QzIsMHgyOCwweEZCLDB4RDcsMHhFRiwweEI4LAotICAgIDB4MDMsMHgzOSwweEMy
LDB4MzAsMHg1NywweDU3LDB4NUMsMHg3OCwweDIzLDB4MzksMHhDMiwweDMwLDB4RDcsMHhENSww
eEJGLDB4QkQsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDk2LDB4RkYsMHhBQiwweEJFLDB4
MDMsMHgzOSwweEMyLDB4MzAsMHhCRiwweEJELDB4QjcsMHgxNywKLSAgICAweDAzLDB4MzksMHhD
MiwweDMwLDB4M0UsMHhFRSwweEI4LDB4QkEsMHhBNSwweDQ5LDB4MDMsMHgzOSwweEFCLDB4MkQs
MHgyRCwweEJELAotICAgIDB4QzUsMHg1OSwweDg0LDB4NDksMHhCOSwweEZBLDB4QkIsMHhGOSww
eDA2LDB4NjIsMHg4NCwweDUxLDB4QjUsMHhBRCwweDI3LDB4MkQsCi0gICAgMHhBRCwweDkzLDB4
MjYsMHg2MiwweEI1LDB4MkQsMHgyRCwweDBCLDB4RjAsMHhCQywweDBFLDB4QTQsMHhBOSwweDJG
LDB4MEYsMHgyQSwKLSAgICAweEYwLDB4QzQsMHhBRiwweEI0LDB4N0IsMHhFRSwweEJFLDB4Nzgs
MHhGMCwweEM0LDB4OEYsMHhCNCwweDdGLDB4NzgsMHhGQSwweEJGLAotICAgIDB4RDAsMHhCQyww
eDZFLDB4QjQsMHhGNywweEY3LDB4RUMsMHhGRSwweEQwLDB4QkMsMHg4RiwweEI0LDB4RkYsMHhC
QiwweDNELDB4QkQsCi0gICAgMHhEMCwweEJDLDB4OEYsMHhCNCwweEZCLDB4QkEsMHhBOCwweEE4
LDB4Q0YsMHhCQywweDhGLDB4QjQsMHhCNiwweEVCLDB4RTIsMHhBQiwKLSAgICAweEFGLDB4QjQs
MHgyRSwweEE0LDB4NzgsMHg2OCwweEE4LDB4QTAsMHg2RSwweEFDLDB4MkIsMHg4MywweDU3LDB4
NUUsMHhGQSwweEU4LAotICAgIDB4NkMsMHg4QiwweEVBLDB4N0EsMHg1RiwweDU3LDB4QUYsMHhB
OCwweDJCLDB4ODMsMHhBOSwweDcyLDB4NUIsMHg3QSwweDc4LDB4NjgsCi0gICAgMHhDOSwweDcy
LDB4NDcsMHg2MiwweEY2LDB4N0YsMHgzQSwweEUwLDB4ODcsMHg2QSwweDI2LDB4NjIsMHhCRSww
eEFFLDB4QkEsMHg0OCwKLSAgICAweEM5LDB4NzIsMHg0NiwweDYyLDB4QUUsMHgyRSwweEFGLDB4
MkQsMHhFOSwweDdBLDB4QTgsMHg3MiwweDdELDB4N0MsMHg3RSwweDdELAotICAgIDB4MDksMHg3
QiwweEE4LDB4NzIsMHg1QiwweDg5LDB4OEIsMHg4QiwweEU5LDB4N0EsMHg4OCwweDZBLDB4N0Us
MHhGRSwweEUyLDB4MjAsCi0gICAgMHhDOSwweDcyLDB4NjgsMHg2QSwweDc3LDB4RUIsMHhFRSww
eDgwLDB4ODgsMHg2QSwweEU2LDB4NTksMHg3RSwweDdBLDB4RUEsMHg4MCwKLSAgICAweDI3LDB4
NjIsMHhDNSwweDUxLDB4MjksMHhBRiwweERFLDB4QUMsMHg0QiwweDgzLDB4RTYsMHg1MSwweDBC
LDB4MzUsMHhENSwweDU1LAotICAgIDB4NkIsMHg4MywweDA2LDB4NUEsMHgwMCwweDAwLDB4MEEs
MHhCNSwweDhDLDB4OEIsMHgyQSwweDdCLDB4QkEsMHhBQSwweEI4LDB4RjUsCi0gICAgMHgwMiww
eDQ5LDB4RTIsMHg0MCwweDhCLDB4OEUsMHg5RSwweDM3LDB4MjIsMHg0OSwweEMyLDB4MzgsMHhC
NywweERGLDB4QkIsMHhGQywKLSAgICAweDAzLDB4NDksMHhFMiwweDM4LDB4REEsMHhGQywweDdB
LDB4RTIsMHgwMywweDQ5LDB4RTIsMHgzOCwweEFBLDB4RkEsMHhCRiwweDJFLAotICAgIDB4MjMs
MHg0MSwweEUyLDB4NDAsMHhDQSwweDhBLDB4OUMsMHgzQywweDIzLDB4NDksMHhFMiwweDQwLDB4
MDcsMHg4OCwweEJBLDB4RTgsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEE4LDB4QTgsMHhC
OCwweEQ3LDB4MjMsMHg0OSwweDAyLDB4NDEsMHg3NSwweDU0LDB4NzgsMHhEOCwKLSAgICAweDY0
LDB4NDksMHgwMiwweDQxLDB4REUsMHhCQiwweEIzLDB4RUIsMHg0MywweDQ5LDB4RTIsMHg0MCww
eDk2LDB4RkEsMHhFMiwweEE4LAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHgyQywweERFLDB4
QUUsMHgzRSwweDIzLDB4NDEsMHhFMiwweDQwLDB4QUUsMHhGQSwweEYzLDB4NTYsCi0gICAgMHgy
MywweDQ5LDB4QzIsMHgzOCwweEFBLDB4QTIsMHhCNSwweDM3LDB4MjMsMHg0OSwweEUyLDB4NDAs
MHg3MiwweDQwLDB4QTgsMHhFRSwKLSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4MTcsMHhCQiww
eEFCLDB4QjMsMHgyMywweDQ5LDB4RTIsMHg0MCwweEE2LDB4QUYsMHhBMSwweDgwLAotICAgIDB4
QTUsMHg1OSwweDAyLDB4NDEsMHgyRiwweDJELDB4QkQsMHhGNywweEM1LDB4NjEsMHgyMywweDQ5
LDB4RTAsMHhGQSwweDdGLDB4NTUsCi0gICAgMHg0NCwweDQ5LDB4RTMsMHg0MCwweEU2LDB4QkMs
MHhGQSwweEU2LDB4MDMsMHg0OSwweEMyLDB4NDAsMHgyQSwweEE4LDB4RkEsMHg1RiwKLSAgICAw
eEUyLDB4NDAsMHhDMiwweDM4LDB4QTgsMHgyNiwweDFGLDB4M0IsMHgwMywweDQ5LDB4QzIsMHg0
MCwweEJGLDB4QUUsMHg3QSwweEZBLAotICAgIDB4QTUsMHg1OSwweDAzLDB4NDksMHgzNSwweDI1
LDB4MzUsMHhBNSwweDA2LDB4NjIsMHhBNCwweDU5LDB4QUYsMHhFQiwweDg5LDB4OEQsCi0gICAg
MHgwNiwweDYyLDB4QTQsMHg1OSwweEVGLDB4RkYsMHhERiwweDVDLDB4RTUsMHg2MSwweDg0LDB4
NTEsMHg3QSwweDdFLDB4NkIsMHhFQSwKLSAgICAweEM1LDB4NTksMHg2MywweDUxLDB4RDcsMHhC
QiwweDAzLDB4MDksMHhDNSwweDU5LDB4ODQsMHg1MSwweEQ3LDB4QkUsMHhCRiwweEZDLAotICAg
IDB4QzUsMHg1OSwweDY0LDB4NTEsMHhFOCwweEQ4LDB4RkYsMHhGRSwweDg0LDB4NTEsMHg0NCww
eDQ5LDB4RjgsMHhFRSwweEJGLDB4QkUsCi0gICAgMHhBNSwweDUxLDB4NjQsMHg0OSwweDVELDB4
N0QsMHhBMywweDdCLDB4QTQsMHg0OSwweDQ0LDB4NDksMHhFRiwweDdGLDB4NUYsMHhGOSwKLSAg
ICAweDY0LDB4NDksMHgyMywweDQxLDB4QTAsMHg4MCwweDIyLDB4MEUsMHg2NCwweDUxLDB4MjMs
MHg0OSwweDFDLDB4M0YsMHgyQSwweDBCLAotICAgIDB4ODgsMHg3QSwweEM1LDB4NTksMHhGRCww
eEFGLDB4MjksMHgzNSwweDQ2LDB4NzIsMHhDMywweDYxLDB4Q0EsMHg2QSwweEMwLDB4RTAsCi0g
ICAgMHgwNSwweDZBLDB4QTMsMHg1OSwweDdFLDB4RkEsMHhFOCwweEU4LDB4ODQsMHg1OSwweEUy
LDB4MzgsMHgwMCwweEEwLDB4RjAsMHg3MCwKLSAgICAweDY0LDB4NTEsMHhBMSwweDMwLDB4ODAs
MHhGQSwweEZBLDB4NTcsMHg0NCwweDQ5LDB4QTIsMHgzMCwweDJBLDB4QUYsMHgzNSwweERGLAot
ICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHgyMCwweDBBLDB4MDMsMHhCRCwweDg0LDB4NDksMHgw
MywweDM5LDB4NUIsMHg3QSwweEY4LDB4N0EsCi0gICAgMHgwMywweDM5LDB4QTIsMHgzMCwweEU4
LDB4QTgsMHgyQSwweDAwLDB4MjMsMHg0MSwweEMyLDB4MzAsMHhGNSwweEZCLDB4ODIsMHgwMiwK
LSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RjIsMHhGMCwweEY3LDB4RTYsMHhFMywweDMwLDB4
QTIsMHgzMCwweEZFLDB4RkUsMHhGQywweENBLAotICAgIDB4QzIsMHgzMCwweDgyLDB4MjgsMHg1
QywweEU4LDB4QTIsMHgyMiwweEMyLDB4MjgsMHg4MSwweDIwLDB4RkIsMHhGMiwweEVBLDB4Rjgs
Ci0gICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweEI1LDB4OTcsMHhBNSwweEFELDB4QTIsMHgzMCww
eEMzLDB4MjgsMHhGRiwweEQ3LDB4NTUsMHhENywKLSAgICAweEUzLDB4MjgsMHhBMiwweDI4LDB4
QkYsMHgxRCwweDk3LDB4RkYsMHhFMywweDMwLDB4QTIsMHgyOCwweEZBLDB4RkUsMHg1NywweERE
LAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg3NywweEE3LDB4QjUsMHhCRCwweDQ0LDB4NDEs
MHhFMywweDMwLDB4MjksMHgwQiwweDAyLDB4MDMsCi0gICAgMHg4NSwweDUxLDB4MDMsMHgzOSww
eDVGLDB4QkEsMHgyQSwweDJBLDB4NjQsMHg0OSwweDIzLDB4NDEsMHgxNSwweDJGLDB4OEEsMHhB
MCwKLSAgICAweDY1LDB4NDksMHhDMiwweDM4LDB4N0EsMHhGRSwweEZFLDB4NjgsMHgwMywweDM5
LDB4QzIsMHgzOCwweEY5LDB4RTEsMHhBQSwweEFBLAotICAgIDB4MjMsMHg0MSwweEUzLDB4Mzgs
MHhBMywweEJGLDB4QkYsMHhGRiwweDIzLDB4NDEsMHhFMiwweDM4LDB4RUEsMHhGQywweDc2LDB4
NzYsCi0gICAgMHgwMywweDQxLDB4RTIsMHgzOCwweDBBLDB4MDksMHhBQiwweDgzLDB4MjMsMHg0
OSwweEMyLDB4NDAsMHgyRSwweDNBLDB4RkUsMHg1RiwKLSAgICAweDY1LDB4NDksMHhFMiwweDQw
LDB4MEIsMHhCQiwweEFGLDB4NUQsMHg2NCwweDQ5LDB4MDMsMHg0MSwweDAwLDB4MDIsMHgyRCww
eEI1LAotICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHg0OCwweDQwLDB4RTAsMHg2QiwweDIzLDB4
NDEsMHhBMSwweDMwLDB4RDUsMHg1RiwweDdFLDB4RTgsCi0gICAgMHhDMiwweDMwLDB4NjEsMHgy
OCwweEU4LDB4NkEsMHhBMiwweEEyLDB4QzIsMHgzMCwweDgxLDB4MjgsMHhGNSwweEZELDB4QUEs
MHgwQSwKLSAgICAweEUzLDB4MzgsMHg2MSwweDI4LDB4MEIsMHgyRiwweEFBLDB4QTIsMHgwMyww
eDM5LDB4QTEsMHgyOCwweDgwLDB4ODIsMHhBQSwweEFCLAotICAgIDB4MDMsMHgzMSwweEEyLDB4
MzAsMHhFQSwweDhBLDB4MEEsMHg4QSwweDAzLDB4MzEsMHhBMiwweDI4LDB4OEEsMHhCRSwweEZB
LDB4N0UsCi0gICAgMHhFMywweDMwLDB4ODEsMHgyMCwweEUyLDB4RUYsMHhGNywweDdGLDB4QzIs
MHgzMCwweDgxLDB4MjgsMHgwQSwweDNCLDB4QUYsMHhDRCwKLSAgICAweEUzLDB4MzAsMHhBMiww
eDI4LDB4RUEsMHg4QiwweDg5LDB4NUQsMHhFMywweDMwLDB4QTIsMHgyOCwweEZCLDB4RkYsMHhG
RiwweERBLAotICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhFRSwweDdELDB4RUEsMHhFMiwweEUy
LDB4MzAsMHhBMiwweDI4LDB4NkIsMHhGOSwweDU3LDB4NTUsCi0gICAgMHhFMiwweDMwLDB4QTIs
MHgyOCwweDAyLDB4QUIsMHhDOSwweDg5LDB4MDMsMHgzOSwweEEyLDB4MjgsMHhCOCwweENCLDB4
QkYsMHg3RCwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QUIsMHgyQiwweEVGLDB4RkQsMHhF
MiwweDMwLDB4QTIsMHgyOCwweEVFLDB4RjQsMHhFQSwweDJCLAotICAgIDB4RTIsMHgzMCwweEEy
LDB4MjgsMHhFQiwweEU4LDB4QkEsMHg3QSwweEUyLDB4MzAsMHhDMiwweDI4LDB4MDksMHgwOSww
eDg3LDB4N0QsCi0gICAgMHhFMiwweDMwLDB4QzIsMHgyOCwweDI4LDB4NzIsMHg3RiwweEU1LDB4
RTIsMHgzMCwweEEyLDB4MjgsMHhCQywweDgyLDB4QTIsMHhBRSwKLSAgICAweEUyLDB4MzAsMHhD
MiwweDI4LDB4RjUsMHg3NywweEEwLDB4M0IsMHhFMywweDMwLDB4QTEsMHgyOCwweDBELDB4Q0Qs
MHhGRiwweDVCLAotICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHhCQSwweEJGLDB4QUYsMHhCQiww
eDAzLDB4MzEsMHhDMiwweDI4LDB4N0UsMHg3RiwweEY3LDB4RUIsCi0gICAgMHgwMywweDMxLDB4
QTEsMHgyOCwweDJGLDB4QUYsMHhBNywweDFFLDB4MDMsMHgzOSwweEUyLDB4MzAsMHhCNywweEIy
LDB4NUUsMHhGRiwKLSAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4QjAsMHhGMCwweEYyLDB4Rjgs
MHgwMywweDMxLDB4QzIsMHgyOCwweDBCLDB4M0QsMHg5NSwweEQ1LAotICAgIDB4MDMsMHgzMSww
eEMyLDB4MzAsMHgwMiwweEJCLDB4RjcsMHg3RCwweDIzLDB4MzksMHhFMywweDMwLDB4RjgsMHhG
RSwweEU1LDB4RjUsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzOCwweDVFLDB4RjMsMHg3RCwweDU1
LDB4MDMsMHgzOSwweEMyLDB4MzAsMHg4NywweEFFLDB4QkUsMHgzRSwKLSAgICAweDAzLDB4Mzks
MHhFMywweDMwLDB4QkYsMHgyMSwweDIxLDB4MzEsMHgwMywweDM5LDB4QTEsMHgyOCwweEZFLDB4
N0MsMHhEOCwweEI4LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhCMywweEFGLDB4QjksMHhE
NSwweDQ0LDB4NDksMHhDMiwweDMwLDB4MjksMHgwNywweDJELDB4QkQsCi0gICAgMHhBNCwweDUx
LDB4MjMsMHg0MSwweDIyLDB4QUYsMHhCRiwweDNELDB4NkIsMHg4QiwweEE0LDB4NTEsMHhGNSww
eEE1LDB4MjUsMHgyRCwKLSAgICAweEYwLDB4QzQsMHg0QiwweDhCLDB4QkQsMHgyRiwweDAyLDB4
MDIsMHgzMSwweENELDB4QjAsMHhCNCwweEJELDB4QUIsMHg4MiwweDAyLAotICAgIDB4MzEsMHhD
NSwweEFGLDB4QkMsMHhERiwweEY4LDB4QTgsMHg4MCwweDEwLDB4QzUsMHg4RSwweEI0LDB4NTcs
MHg3NywweEZBLDB4ODAsCi0gICAgMHhEMCwweEJDLDB4NEUsMHhBQywweEJBLDB4RkUsMHhGRSww
eDc4LDB4Q0YsMHhCNCwweDZFLDB4QjQsMHhERiwweEZELDB4RUQsMHg3NSwKLSAgICAweEFGLDB4
QjQsMHg2RSwweEI0LDB4M0MsMHhCQSwweDdBLDB4N0QsMHhDRiwweEJDLDB4NEUsMHhBQywweEEy
LDB4RUEsMHhCRSwweERGLAotICAgIDB4QUYsMHhCNCwweDRFLDB4QUMsMHhGOCwweDdFLDB4N0Ys
MHg1NywweDZFLDB4QUMsMHhDQywweDlCLDB4NTgsMHhFRSwweEFBLDB4QUEsCi0gICAgMHg0RSww
eEE0LDB4MkIsMHg4MywweDc3LDB4N0YsMHhBOCwweDgwLDB4Q0MsMHg5QiwweEE5LDB4NzIsMHg3
RiwweDdFLDB4N0EsMHhFOCwKLSAgICAweEVBLDB4N0EsMHg2OCwweDZBLDB4RkUsMHhGRiwweERB
LDB4RjAsMHhBOCwweDcyLDB4NDcsMHg2MiwweDVFLDB4RkEsMHhDQSwweDIwLAotICAgIDB4Qzgs
MHg3MiwweDQ2LDB4NjIsMHhBNSwweDJCLDB4RUEsMHhGQSwweEU5LDB4N0EsMHg4NywweDZBLDB4
RUIsMHg4RiwweEFELDB4MkEsCi0gICAgMHgwOSwweDdCLDB4QzksMHg3MiwweEE5LDB4QTksMHgz
QiwweDA5LDB4MkEsMHg4MywweEM5LDB4NzIsMHg3QiwweEZCLDB4QjMsMHhDQiwKLSAgICAweDBB
LDB4N0IsMHg4OCwweDZBLDB4QkYsMHhFQSwweERBLDB4RkMsMHhDOSwweDcyLDB4NjgsMHg2Miww
eDdDLDB4RUEsMHg4QSwweEI4LAotICAgIDB4QTksMHg2QSwweDA2LDB4NUEsMHg1RiwweERFLDB4
RjgsMHhDOCwweDQ3LDB4NjIsMHhDNSwweDUxLDB4N0YsMHg3MiwweEYwLDB4RTAsCi0gICAgMHg4
OCwweDZBLDB4QTUsMHg0OSwweDM3LDB4NTcsMHg1NywweDVGLDB4RUEsMHg3MiwweDY0LDB4NDEs
MHgwMiwweEFGLDB4RkQsMHg1NSwKLSAgICAweDQzLDB4NDksMHhFMiwweDM4LDB4RjcsMHhBRSww
eEU4LDB4RUIsMHgyMywweDQ5LDB4RTIsMHgzOCwweDdFLDB4RUUsMHhFQiwweEZBLAotICAgIDB4
MjMsMHg0OSwweEUyLDB4NDAsMHhBQiwweDA5LDB4QzUsMHhGNywweDIzLDB4NDksMHhDMSwweDM4
LDB4QTgsMHhFOCwweEJBLDB4QkQsCi0gICAgMHgyMywweDQ5LDB4MDIsMHg0MSwweDFGLDB4QTks
MHhERiwweERFLDB4MjMsMHg0OSwweDAyLDB4NDEsMHhFMCwweEUwLDB4RDgsMHg1NywKLSAgICAw
eDIzLDB4NDksMHhFMiwweDQwLDB4RDcsMHhCRCwweDgwLDB4MDAsMHg0MywweDQ5LDB4MDIsMHg0
MSwweDVGLDB4NjksMHhFMywweEZCLAotICAgIDB4NDMsMHg0OSwweDAyLDB4NDEsMHhBMywweEZF
LDB4RUIsMHhFQiwweDIzLDB4NDksMHgwMiwweDQxLDB4QUEsMHg5QSwweDJBLDB4QjcsCi0gICAg
MHg0MywweDQ5LDB4RTIsMHg0MCwweEJCLDB4MkUsMHhEQiwweDVGLDB4MjMsMHg0MSwweEUyLDB4
NDAsMHg1QSwweERFLDB4NTcsMHg3NywKLSAgICAweDIzLDB4NDksMHhDMiwweDQwLDB4RjUsMHhB
RSwweEFCLDB4QUIsMHgyMywweDQ5LDB4QzIsMHgzOCwweENBLDB4MkIsMHhFOCwweDVBLAotICAg
IDB4MjMsMHg0OSwweEUyLDB4NDAsMHgzQiwweEFCLDB4QUIsMHhFRCwweDIzLDB4NDksMHhFMiww
eDQwLDB4QUUsMHhDQSwweENBLDB4NEYsCi0gICAgMHgwMywweDQ5LDB4RTEsMHgzOCwweDIzLDB4
QTksMHhFNywweDZGLDB4MDMsMHg0MSwweEMyLDB4NDAsMHgwMiwweDIwLDB4MzIsMHgwMiwKLSAg
ICAweDIzLDB4NDksMHhDMiwweDM4LDB4Q0EsMHg2QSwweDY4LDB4RTgsMHgwMywweDQxLDB4QTEs
MHgzOCwweEYyLDB4QTYsMHhBRCwweDhBLAotICAgIDB4MDMsMHg0OSwweEMyLDB4MzgsMHhERiww
eEVBLDB4ODIsMHhCQSwweDIzLDB4NDksMHhFMywweDQwLDB4RkEsMHhFQSwweEJELDB4QkQsCi0g
ICAgMHhBNSwweDU5LDB4MDMsMHg0OSwweDJELDB4MzUsMHgzNSwweDI1LDB4NDYsMHg2QSwweEM1
LDB4NTksMHg2NSwweEFGLDB4OEYsMHgwRiwKLSAgICAweDI2LDB4NkEsMHhDNCwweDU5LDB4REUs
MHhGQiwweDdCLDB4RkMsMHhFNSwweDU5LDB4ODQsMHg1MSwweDZBLDB4RUEsMHhBQiwweEFCLAot
ICAgIDB4RTUsMHg2MSwweDg0LDB4NTEsMHhGRCwweEY3LDB4MzIsMHgyQSwweEE0LDB4NTksMHg2
NCwweDQ5LDB4RkUsMHhGRiwweDA4LDB4MDAsCi0gICAgMHhBNCwweDUxLDB4MjMsMHg0OSwweDhB
LDB4RUEsMHhGRSwweDdGLDB4NjQsMHg0OSwweDIzLDB4NDEsMHhDMCwweDYwLDB4QUEsMHhCRSwK
LSAgICAweDg1LDB4NTEsMHg2NCwweDQ5LDB4NEYsMHg5NSwweDk5LDB4NTksMHg4NCwweDQ5LDB4
NDQsMHg0OSwweEM1LDB4NUUsMHg1QSwweEY3LAotICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHhB
QSwweDZCLDB4MkIsMHhBOCwweDY0LDB4NTEsMHgwMywweDQxLDB4OEIsMHhCRSwweEZDLDB4REUs
Ci0gICAgMHg0NywweDcyLDB4NDQsMHg0OSwweDBGLDB4QUQsMHhCOSwweEI1LDB4ODgsMHg3QSww
eEU1LDB4NjEsMHhFOCwweEY3LDB4NzcsMHhERCwKLSAgICAweDA1LDB4NjIsMHg0MywweDQ5LDB4
QTAsMHhFMCwweDY4LDB4NUUsMHg2MywweDUxLDB4NDEsMHgyOCwweEUwLDB4RjgsMHg3QSwweDdF
LAotICAgIDB4QzIsMHgzOCwweDQxLDB4MjAsMHgyMiwweEFBLDB4RkYsMHg3RCwweEUyLDB4Mzgs
MHg2MSwweDI4LDB4QjAsMHhGMiwweEFCLDB4RkQsCi0gICAgMHg0NCwweDQxLDB4QzIsMHgzMCww
eDBCLDB4QkQsMHhGRCwweEY1LDB4NDMsMHg0MSwweEMyLDB4MzAsMHg2MiwweDdGLDB4RkYsMHg3
RiwKLSAgICAweDQ0LDB4NDEsMHhFMiwweDMwLDB4RTksMHhBRiwweDM5LDB4Q0YsMHgyNCwweDQx
LDB4RTMsMHgzMCwweDhCLDB4OEIsMHhGRSwweEZFLAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAs
MHhGQywweEEwLDB4OUUsMHg1NywweDAzLDB4MzEsMHhDMywweDMwLDB4QTcsMHhGNiwweDdDLDB4
RjAsCi0gICAgMHhDMiwweDI4LDB4QTIsMHgyOCwweEJFLDB4RkUsMHhCQSwweDVELDB4QzIsMHgy
OCwweDgxLDB4MjAsMHhGMCwweDBCLDB4MjksMHhCRCwKLSAgICAweEMyLDB4MjgsMHg4MSwweDIw
LDB4QUEsMHhBQSwweEJFLDB4RkYsMHhDMywweDI4LDB4QTIsMHgyOCwweDBCLDB4MDksMHgwMyww
eEEyLAotICAgIDB4QzIsMHgyOCwweEEyLDB4MjgsMHg5MCwweDdDLDB4NjgsMHhDOCwweEMzLDB4
MzAsMHg4MiwweDIwLDB4QTIsMHhFQiwweEFGLDB4M0YsCi0gICAgMHhFMywweDMwLDB4QTIsMHgy
OCwweDNELDB4QkIsMHgzQSwweDNGLDB4NjUsMHg0OSwweDAzLDB4MzksMHhBOSwweDI5LDB4QUQs
MHgyRCwKLSAgICAweDg1LDB4NTEsMHgwMywweDM5LDB4OEEsMHhCQSwweEZFLDB4NUUsMHg0NCww
eDQ5LDB4QzIsMHgzMCwweDAwLDB4QTAsMHhBQSwweEZGLAotICAgIDB4NDQsMHg0OSwweEMyLDB4
MzAsMHg3MCwweEU4LDB4QUYsMHg1NSwweDIzLDB4NDEsMHhDMywweDMwLDB4QjIsMHhBQSwweDhB
LDB4NkYsCi0gICAgMHgwMywweDQxLDB4RTMsMHgzOCwweEY4LDB4NUEsMHg1QiwweDU1LDB4MjMs
MHg0MSwweEMyLDB4MzgsMHhGRiwweEY1LDB4RDcsMHg1NiwKLSAgICAweDIzLDB4NDEsMHhFMiww
eDM4LDB4RUEsMHhFOSwweEU5LDB4QUUsMHgwMywweDQxLDB4QzIsMHgzOCwweDVGLDB4RkUsMHhF
QywweEUwLAotICAgIDB4RTMsMHg0MCwweEMyLDB4MzgsMHg2OSwweERBLDB4QkEsMHhCRSwweDI0
LDB4NDksMHhDMiwweDM4LDB4MEIsMHgyNywweEFGLDB4QUIsCi0gICAgMHg0NCwweDQ5LDB4RTIs
MHgzOCwweEMyLDB4RUIsMHg3NywweDdGLDB4MjMsMHg0MSwweEMyLDB4MzgsMHhFMiwweEUwLDB4
NkEsMHhBRCwKLSAgICAweEUyLDB4MzgsMHhBMSwweDI4LDB4RkEsMHg3QywweEVBLDB4QzAsMHhD
MiwweDMwLDB4QTIsMHgyOCwweEVFLDB4NzUsMHg0RiwweEZBLAotICAgIDB4RTMsMHgzMCwweDgx
LDB4MjgsMHhGQSwweDZBLDB4NzAsMHhFQSwweEUzLDB4MzAsMHg4MiwweDI4LDB4MjksMHhBQiww
eEJCLDB4RDcsCi0gICAgMHhFMywweDMwLDB4ODEsMHgyMCwweEEwLDB4QTIsMHhENiwweDVELDB4
QzIsMHgyOCwweDgxLDB4MjgsMHhBMCwweDgwLDB4M0UsMHhCRCwKLSAgICAweEUzLDB4MzAsMHhB
MiwweDI4LDB4N0QsMHhGNywweEZGLDB4MDcsMHhDMiwweDMwLDB4ODEsMHgyOCwweEY1LDB4REQs
MHhCRiwweDAwLAotICAgIDB4RTMsMHgzMCwweDgxLDB4MjgsMHg3RCwweEFGLDB4QUIsMHg4Miww
eEUzLDB4MzAsMHhBMiwweDI4LDB4NTUsMHg1NywweEZGLDB4QUEsCi0gICAgMHhFMywweDMwLDB4
QTIsMHgyOCwweEZGLDB4RkQsMHg1RiwweEUwLDB4QzMsMHgzMCwweDgxLDB4MjgsMHg2RSwweDc1
LDB4NTcsMHg3OCwKLSAgICAweEUyLDB4MzAsMHg4MiwweDI4LDB4ODksMHhGRCwweDc1LDB4NTUs
MHhDMiwweDI4LDB4ODEsMHgyOCwweEVBLDB4N0IsMHhCRSwweDhCLAotICAgIDB4QzIsMHgyOCww
eEEyLDB4MjgsMHgzNSwweDU1LDB4NTUsMHg3QiwweEMyLDB4MzAsMHhBMiwweDI4LDB4MkQsMHgy
NSwweEVELDB4RkYsCi0gICAgMHhFMiwweDMwLDB4QzIsMHgyOCwweEVCLDB4QkYsMHhGRCwweEEz
LDB4MjMsMHgzMSwweEMyLDB4MjgsMHg3RCwweDdGLDB4NUIsMHhFQiwKLSAgICAweEUyLDB4MzAs
MHhBMiwweDI4LDB4MkYsMHhGRiwweEQ3LDB4RUEsMHhFMywweDMwLDB4QTIsMHgyOCwweEFFLDB4
QUYsMHhBRCwweEFBLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhBRSwweDk3LDB4RjcsMHhF
QSwweDAzLDB4MzEsMHhDMiwweDI4LDB4RkIsMHhBRiwweDg5LDB4QUYsCi0gICAgMHgwMywweDMx
LDB4QzIsMHgzMCwweERGLDB4RUEsMHhDOCwweEEyLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhFMyww
eEVGLDB4QkYsMHhCRiwKLSAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4QjcsMHgwRCwweEJFLDB4
QkYsMHg0NCwweDQxLDB4RTMsMHgzMCwweEJELDB4MjcsMHhBRiwweEFCLAotICAgIDB4MjMsMHgz
OSwweEMyLDB4MzAsMHg1RSwweDdBLDB4NjgsMHhGQywweDAzLDB4MzksMHhBMSwweDI4LDB4RkQs
MHhGRiwweEFELDB4MEYsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEZCLDB4QkIsMHhFRiww
eEVFLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGRiwweDdBLDB4N0EsMHhCQiwKLSAgICAweEUzLDB4
MzAsMHhDMiwweDMwLDB4RkIsMHhBQiwweDJGLDB4RTcsMHhFMywweDM4LDB4MDMsMHgzMSwweEMy
LDB4OEEsMHhFMiwweEVBLAotICAgIDB4MDMsMHgzOSwweEMzLDB4MzAsMHhBQSwweDdCLDB4Mjgs
MHgyQSwweDIzLDB4MzksMHhFMiwweDM4LDB4NTUsMHg1RCwweDdGLDB4N0MsCi0gICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweEZGLDB4RkIsMHg5NSwweEFCLDB4NDQsMHg0OSwweEUzLDB4MzgsMHhC
RCwweEJGLDB4QkIsMHgyQiwKLSAgICAweDI2LDB4NjIsMHg0NCwweDQ5LDB4RkQsMHhCRCwweEJE
LDB4MjksMHhFQywweDlCLDB4QzQsMHg1OSwweDJELDB4MkQsMHgyRiwweDJGLAotICAgIDB4MzEs
MHhDNSwweDhFLDB4QjQsMHgyQiwweDBCLDB4OEQsMHgwNSwweDMxLDB4Q0QsMHgxMCwweEM1LDB4
QUEsMHhCRiwweEZDLDB4QzMsCi0gICAgMHgzMSwweENELDB4MTAsMHhDNSwweDQwLDB4QTksMHg4
MiwweDJCLDB4MzEsMHhDRCwweDEwLDB4QzUsMHhERSwweDZBLDB4RjAsMHg2MCwKLSAgICAweDMw
LDB4QzUsMHhBRiwweEI0LDB4NUUsMHhGQSwweEFBLDB4ODgsMHhFRiwweEM0LDB4NkUsMHhBQyww
eDVELDB4N0EsMHhFOCwweDAwLAotICAgIDB4RUYsMHhCQywweDRELDB4QUMsMHg3RiwweDVGLDB4
N0YsMHhFOCwweDhGLDB4QjQsMHg0RCwweEFDLDB4QkYsMHhBRCwweDU1LDB4NTUsCi0gICAgMHg4
RiwweEI0LDB4MkQsMHhBQywweEZGLDB4NzgsMHhGRiwweERGLDB4OEYsMHhCNCwweDRFLDB4QUMs
MHg1NSwweEY5LDB4QkEsMHhCOCwKLSAgICAweDhGLDB4QjQsMHhFQywweDlCLDB4N0UsMHg3Miww
eDY4LDB4RkEsMHgwRCwweDlDLDB4MEEsMHg4MywweDc4LDB4RTAsMHhFOCwweEEwLAotICAgIDB4
NkIsMHg4QiwweEE5LDB4NzIsMHg3RiwweDdBLDB4RUEsMHhBMCwweEU5LDB4N0EsMHg2NywweDZB
LDB4NzcsMHhEQSwweEE4LDB4RTgsCi0gICAgMHhDOSwweDcyLDB4NjYsMHg2QSwweEJELDB4QUYs
MHhBQSwweDIyLDB4RTksMHg3MiwweEE4LDB4NzIsMHhCRCwweEFCLDB4MEYsMHgzNSwKLSAgICAw
eDBBLDB4N0IsMHhDOCwweDcyLDB4MkQsMHhCRiwweDJELDB4QUYsMHg0QiwweDgzLDB4RTksMHg3
QSwweDNELDB4QkYsMHhBQiwweEFGLAotICAgIDB4NEIsMHg4MywweEU5LDB4N0EsMHg1RSwweDdF
LDB4REUsMHhGQywweDJBLDB4ODMsMHg4OSwweDZBLDB4NUEsMHhGQSwweEE4LDB4QTAsCi0gICAg
MHhFQSwweDdBLDB4ODgsMHg2QSwweDU1LDB4NzYsMHhCQywweEI4LDB4QTksMHg2QSwweDA2LDB4
NUEsMHg1RSwweEYyLDB4QTgsMHg4OCwKLSAgICAweDQ3LDB4NjIsMHhBNSwweDQ5LDB4NUUsMHhF
RiwweEVBLDB4RTAsMHhFNiwweDUxLDB4MjQsMHgzOSwweEZGLDB4NkUsMHhFQSwweDYwLAotICAg
IDB4MjMsMHg0OSwweEMyLDB4MzgsMHhBQSwweDIwLDB4QUIsMHhBRCwweDIzLDB4NDksMHhFMiww
eDQwLDB4OEUsMHhBRSwweDk2LDB4NTcsCi0gICAgMHgyMywweDQ5LDB4QzEsMHgzOCwweDY4LDB4
NzIsMHhEQSwweEZFLDB4NDQsMHg0OSwweEUyLDB4NDAsMHg1NSwweDc1LDB4RkYsMHgzNywKLSAg
ICAweDIzLDB4NDksMHhFMiwweDQwLDB4MkYsMHhFMSwweEUyLDB4RjgsMHgyMywweDQ5LDB4RTIs
MHg0MCwweERFLDB4NTUsMHg1NSwweDFELAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHgyMyww
eDBCLDB4MkIsMHhBRCwweDIzLDB4NDksMHhFMiwweDQwLDB4Q0EsMHg5QSwweEZCLDB4RkIsCi0g
ICAgMHg0MywweDQ5LDB4MDIsMHg0MSwweDJCLDB4RTUsMHhENSwweDdFLDB4MjIsMHg0MSwweEMy
LDB4MzgsMHhBMCwweDI4LDB4QTgsMHg3RSwKLSAgICAweDIzLDB4NDksMHhDMiwweDM4LDB4REYs
MHhENiwweERDLDB4QUYsMHgwMiwweDQxLDB4RTIsMHgzOCwweEFELDB4MDIsMHgwMiwweDAyLAot
ICAgIDB4MDMsMHg0MSwweEUyLDB4NDAsMHg0MywweDc2LDB4RDcsMHhFOSwweDAzLDB4NDEsMHhD
MSwweDM4LDB4RkIsMHhFRCwweENGLDB4ODAsCi0gICAgMHgwMiwweDQ5LDB4RTIsMHgzOCwweDJB
LDB4QUIsMHhCRCwweDc1LDB4MDIsMHg0MSwweEUxLDB4NDAsMHg3MywweDBBLDB4ODAsMHhDMCwK
LSAgICAweDAyLDB4NDEsMHhDMSwweDM4LDB4Q0EsMHgyNiwweDJGLDB4OEIsMHgyMiwweDQxLDB4
RTIsMHgzOCwweEZCLDB4RUIsMHhCNywweDk1LAotICAgIDB4MDIsMHg0MSwweEMyLDB4MzgsMHhF
MCwweDAwLDB4QUUsMHg1RSwweDAyLDB4NDEsMHhDMiwweDM4LDB4RUIsMHhFOCwweEQ4LDB4RkEs
Ci0gICAgMHgwMywweDQ5LDB4RTIsMHg0MCwweDdGLDB4NTUsMHg5NSwweDk3LDB4MDMsMHg0OSww
eEMyLDB4NDAsMHgwQSwweEU3LDB4QTgsMHhGRSwKLSAgICAweEU1LDB4NjEsMHgwMywweDQ5LDB4
QTUsMHgzNSwweEI1LDB4QjUsMHgyNiwweDZBLDB4QzUsMHg1OSwweDBCLDB4MjksMHg4MiwweDgw
LAotICAgIDB4MjYsMHg2QSwweEM1LDB4NTksMHhFOCwweEZBLDB4N0UsMHhGRiwweEU1LDB4NjEs
MHhBNCwweDU5LDB4RUUsMHg4QywweEMwLDB4MDIsCi0gICAgMHhFNSwweDYxLDB4QTQsMHg1MSww
eDJCLDB4QkYsMHhEQSwweDYwLDB4RTUsMHg1OSwweDQzLDB4NDksMHhGQSwweEU4LDB4NkEsMHhF
QSwKLSAgICAweDY0LDB4NDksMHgyMywweDQxLDB4NzgsMHhFRSwweEY4LDB4Q0EsMHg0NCwweDQ5
LDB4RTIsMHgzOCwweDJBLDB4MjYsMHhBQSwweEFBLAotICAgIDB4NjQsMHg0OSwweDAyLDB4Mzks
MHhBOCwweEFBLDB4RkUsMHhENywweDY1LDB4NDksMHgyNCwweDQxLDB4QjUsMHhCNSwweEU1LDB4
RjcsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweDI4LDB4QkIsMHhERiwweERFLDB4NjQsMHg0
OSwweDAzLDB4NDEsMHg3QSwweDdDLDB4RDIsMHhFMiwKLSAgICAweEE1LDB4NTksMHgwMywweDQx
LDB4MkQsMHg5NSwweDk1LDB4NTUsMHgwNiwweDZBLDB4ODQsMHg1MSwweDJBLDB4NjIsMHhFRiww
eEZELAotICAgIDB4QzUsMHg1OSwweEUyLDB4NDAsMHhGOCwweDdFLDB4NUEsMHhBQSwweDY0LDB4
NDksMHg0MSwweDI4LDB4N0YsMHg1RiwweDdGLDB4QTgsCi0gICAgMHhFMywweDM4LDB4NDEsMHgy
OCwweERELDB4N0QsMHhGQiwweEM4LDB4QTIsMHgzMCwweDQxLDB4MjAsMHgyQiwweEE5LDB4MEEs
MHgyMiwKLSAgICAweDAzLDB4MzksMHhBMSwweDI4LDB4MkQsMHgyOSwweEZELDB4REQsMHgyMiww
eDM5LDB4QzIsMHgzMCwweDU3LDB4RjYsMHhERiwweEY1LAotICAgIDB4NDMsMHg0MSwweEUyLDB4
MzAsMHhBRiwweEE5LDB4OEIsMHhGRiwweDAzLDB4MzksMHhBMiwweDI4LDB4ODgsMHhFRSwweEJF
LDB4RjUsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDNBLDB4QjYsMHhENywweEQ1LDB4RTMs
MHgzMCwweDYxLDB4MjAsMHg4MCwweEE4LDB4NkEsMHg1QSwKLSAgICAweEEyLDB4MjgsMHg2MSww
eDIwLDB4QkUsMHhGRSwweERGLDB4NTcsMHhBMiwweDI4LDB4NjEsMHgyMCwweEEzLDB4QUIsMHhC
RiwweEU5LAotICAgIDB4QTIsMHgyOCwweDgyLDB4MjAsMHhBNCwweDM1LDB4RUIsMHgwOSwweEMy
LDB4MjgsMHg4MiwweDIwLDB4MDIsMHgwMiwweDBCLDB4MEYsCi0gICAgMHhFMiwweDI4LDB4QTIs
MHgyOCwweEY4LDB4NkEsMHg3QSwweDdGLDB4QzIsMHgyOCwweDgyLDB4MjgsMHgyRiwweEFGLDB4
RUEsMHgyMiwKLSAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4QUQsMHgyNywweDJGLDB4M0YsMHg0
NCwweDQxLDB4MDMsMHgzOSwweDI1LDB4QUQsMHhGMywweENCLAotICAgIDB4NDQsMHg0MSwweEEy
LDB4MjgsMHhFMCwweEZFLDB4N0UsMHg3RiwweEMyLDB4MzAsMHg2MSwweDIwLDB4ODAsMHhGRSww
eDVBLDB4NUYsCi0gICAgMHhDMiwweDMwLDB4NjEsMHgyMCwweEEyLDB4QkUsMHhGRiwweEY1LDB4
RTIsMHgzOCwweDgxLDB4MjgsMHhBMywweDNCLDB4QkQsMHhGRiwKLSAgICAweEUyLDB4MzgsMHg4
MSwweDI4LDB4MkEsMHhBQSwweEVGLDB4NzUsMHhFMywweDM4LDB4ODEsMHgyOCwweDA4LDB4QUEs
MHhCRSwweEQ3LAotICAgIDB4MjMsMHg0MSwweEEyLDB4MzAsMHgyMiwweEJCLDB4QUQsMHhBRCww
eDIzLDB4NDEsMHhFMywweDM4LDB4RjgsMHhBQSwweDlCLDB4NUYsCi0gICAgMHgyMywweDQxLDB4
QzMsMHgzOCwweDdGLDB4RkEsMHgzRSwweEJGLDB4MjMsMHg0MSwweEUzLDB4MzgsMHgwRCwweEVE
LDB4OUUsMHhERiwKLSAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4RkEsMHg2QiwweEVBLDB4RUEs
MHgyNCwweDQxLDB4RTIsMHgzOCwweEVELDB4MkYsMHhCRCwweDdELAotICAgIDB4MjMsMHg0MSww
eEMyLDB4MzAsMHhGQSwweEVBLDB4RjgsMHhGQiwweEUyLDB4MzgsMHhBMiwweDI4LDB4RkUsMHg3
QSwweEY4LDB4RkUsCi0gICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweEZELDB4RkQsMHhCQSwweDIw
LDB4QzMsMHgzOCwweDYxLDB4MjAsMHg1RSwweEZFLDB4RkUsMHhGOCwKLSAgICAweEEyLDB4Mjgs
MHg2MSwweDIwLDB4RkEsMHhFRSwweEJFLDB4MjAsMHhDMiwweDI4LDB4ODEsMHgyOCwweEI1LDB4
QTUsMHhFOSwweDdDLAotICAgIDB4QzMsMHgyOCwweDgyLDB4MjgsMHgwQiwweEFGLDB4RDUsMHg3
NSwweEUzLDB4MzAsMHg4MSwweDI4LDB4MEEsMHgyQiwweEFGLDB4NzUsCi0gICAgMHhFMywweDMw
LDB4QTIsMHgyOCwweDAyLDB4MDAsMHhBRiwweDc1LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhBOCww
eDJBLDB4MkUsMHgzRiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4N0EsMHg3QSwweEZFLDB4
MDAsMHgwMywweDM5LDB4QTIsMHgyOCwweDdFLDB4RUEsMHhGQSwweEU4LAotICAgIDB4QzIsMHgz
MCwweDgyLDB4MjgsMHg1NiwweEJBLDB4OEEsMHgwMCwweEMxLDB4MjgsMHg4MiwweDI4LDB4QkIs
MHhGRSwweEZBLDB4M0UsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEJGLDB4RDcsMHg3Qiww
eEJGLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhGQSwweDBBLDB4M0EsMHhBQSwKLSAgICAweDAzLDB4
MzEsMHhDMiwweDMwLDB4OEEsMHg4MiwweEJCLDB4MTcsMHgwMywweDMxLDB4QzIsMHgyOCwweEEy
LDB4RjAsMHhGRSwweEQ2LAotICAgIDB4RTIsMHgzMCwweEMyLDB4MjgsMHhFOCwweDhBLDB4MkEs
MHgyMCwweDAzLDB4MzEsMHhFMiwweDMwLDB4N0MsMHg0MCwweDBBLDB4MEIsCi0gICAgMHgwMyww
eDMxLDB4QzIsMHgzMCwweEY3LDB4QTcsMHhCRiwweDBFLDB4RTIsMHgzMCwweEMyLDB4MjgsMHgz
RiwweDNGLDB4QjUsMHg5NSwKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4M0EsMHhEQSwweERD
LDB4QUUsMHgwMywweDMxLDB4QzIsMHgyOCwweERBLDB4RDcsMHhFRSwweEVCLAotICAgIDB4MDMs
MHgzOSwweEMyLDB4MzAsMHgwQSwweDNFLDB4OUQsMHhGNSwweDI0LDB4MzksMHhFMywweDMwLDB4
ODMsMHhBQSwweEZBLDB4NTksCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEE4LDB4ODAsMHg2
QywweDdFLDB4MjMsMHgzOSwweEEyLDB4MjgsMHhCNywweEE3LDB4OEEsMHgyQSwKLSAgICAweDQ0
LDB4NDEsMHhDMiwweDMwLDB4NzcsMHhGRiwweEZBLDB4RjMsMHgyMywweDM5LDB4RTIsMHgzMCww
eEI1LDB4NUQsMHg2RiwweEFCLAotICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHhFRiwweDdFLDB4
N0EsMHhBMCwweDAzLDB4MzksMHhDMywweDMwLDB4OEEsMHhGRiwweEZGLDB4M0UsCi0gICAgMHgy
MywweDQxLDB4QzIsMHgzMCwweDhCLDB4QTEsMHhCQiwweEQ3LDB4RTIsMHg0MCwweDAzLDB4Mzks
MHhCNywweEQ3LDB4NUYsMHhERSwKLSAgICAweDQzLDB4NDEsMHhFMywweDM4LDB4RkQsMHgzRiww
eEVELDB4RjcsMHg4NSwweDQ5LDB4MDMsMHgzOSwweEJGLDB4QkYsMHgzRCwweDBGLAotICAgIDB4
NDcsMHg2QSwweDY1LDB4NDksMHgyRCwweEFELDB4MkYsMHgyRiwweDJELDB4QTQsMHg2NywweDZB
LDB4MkQsMHgyRCwweDJGLDB4MEIsCi0gICAgMHgxMCwweEM1LDB4OEUsMHhCNCwweDBELDB4OEIs
MHg4OSwweEFELDB4MzEsMHhDNSwweEYwLDB4QzQsMHg4MywweEVELDB4RjUsMHhGRiwKLSAgICAw
eDEwLDB4QzUsMHhDRiwweEJDLDB4MDAsMHgwOCwweDBGLDB4OTcsMHgzMSwweEM1LDB4Q0YsMHhC
QywweDBBLDB4QkIsMHhGRSwweEI2LAotICAgIDB4MzAsMHhDNSwweEYwLDB4QkMsMHhFRSwweDVB
LDB4NUYsMHg3RiwweDMwLDB4QzUsMHhGMCwweEJDLDB4QkYsMHg3OSwweEYyLDB4RUUsCi0gICAg
MHgxMCwweEM1LDB4QUYsMHhCNCwweDYwLDB4ODAsMHg4MiwweDg4LDB4MTAsMHhDNSwweDRELDB4
QUMsMHg3RiwweEZBLDB4QTgsMHgyMiwKLSAgICAweEYwLDB4QzQsMHgyRCwweEE0LDB4RDcsMHhE
NywweEVBLDB4RTAsMHhBRiwweEJDLDB4NEUsMHhBQywweEFFLDB4RkQsMHhERCwweDlDLAotICAg
IDB4OEYsMHhCNCwweDRFLDB4QUMsMHg1RSwweEJFLDB4ODMsMHhCNywweDZGLDB4QUMsMHhDRCww
eDlCLDB4NUEsMHg3OCwweEVBLDB4RTgsCi0gICAgMHhDQywweDlCLDB4NkIsMHg4QiwweDVFLDB4
NUEsMHhGQSwweEUwLDB4QUIsMHg5MywweEM5LDB4NzIsMHg1NywweDdFLDB4RUEsMHg4MCwKLSAg
ICAweDRBLDB4ODMsMHhBOCwweDcyLDB4NzUsMHhENSwweEQ2LDB4RjgsMHhFOSwweDdBLDB4ODgs
MHg2QSwweDM2LDB4MkQsMHgzMiwweDIyLAotICAgIDB4MkEsMHg4MywweEM5LDB4NzIsMHg3RSww
eEVFLDB4M0IsMHhGRiwweDRBLDB4ODMsMHhFOCwweDdBLDB4QkQsMHgyRiwweDJGLDB4MTcsCi0g
ICAgMHg2QiwweDgzLDB4MEEsMHg4MywweEVFLDB4RUUsMHgyRiwweEI2LDB4NEIsMHg4MywweEU5
LDB4N0EsMHhCRCwweEZBLDB4QjgsMHgwOCwKLSAgICAweDRCLDB4ODMsMHhDOSwweDcyLDB4NUYs
MHg2QiwweEVBLDB4MjAsMHgyQiwweDgzLDB4ODgsMHg2QSwweDU3LDB4N0YsMHg3RiwweEY4LAot
ICAgIDB4QzksMHg3MiwweDI3LDB4NUEsMHg1QSwweDVFLDB4QUEsMHhFOCwweDI3LDB4NUEsMHg0
NCwweDQxLDB4NzgsMHhFMCwweEEwLDB4ODAsCi0gICAgMHgyMywweDQ5LDB4RTIsMHgzOCwweEI3
LDB4RjcsMHhBOSwweEMxLDB4MDMsMHg0OSwweEUyLDB4MzgsMHhCNCwweDI3LDB4MkQsMHgzRiwK
LSAgICAweDAyLDB4NDksMHhFMiwweDQwLDB4NUEsMHhDOCwweDZDLDB4RkIsMHgyMywweDQ5LDB4
RTIsMHg0MCwweDJCLDB4MzIsMHg3NywweEJGLAotICAgIDB4MDIsMHg0OSwweEUyLDB4NDAsMHg4
RiwweEFDLDB4QUQsMHgwQSwweDIzLDB4NDksMHhFMiwweDQwLDB4QUQsMHhGQiwweEU4LDB4NUEs
Ci0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEJCLDB4QUEsMHgzOCwweDc3LDB4NDMsMHg0OSww
eDAzLDB4NDEsMHg1NywweDdFLDB4N0QsMHhENSwKLSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4
REEsMHg3RiwweEFGLDB4MEIsMHgwMiwweDQxLDB4QzEsMHgzOCwweEZBLDB4OEIsMHhBQiwweEVB
LAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzgsMHhCMCwweEVFLDB4QUIsMHhBOSwweDQ0LDB4NDEs
MHhFMiwweDQwLDB4RjcsMHhCRiwweEZELDB4RjUsCi0gICAgMHgyMywweDQxLDB4QzIsMHg0MCww
eEFGLDB4QkEsMHhGQywweDdFLDB4MjMsMHg0OSwweEUyLDB4MzgsMHhFQSwweEVBLDB4RUUsMHhF
RCwKLSAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4OTksMHgwQiwweDAxLDB4MDEsMHgyMywweDQx
LDB4RTIsMHg0MCwweERCLDB4NTcsMHhENywweDk3LAotICAgIDB4MjMsMHg0MSwweEMyLDB4Mzgs
MHhERiwweDlFLDB4QkEsMHgyQSwweDIzLDB4NDEsMHhFMiwweDQwLDB4RDUsMHhGRiwweDJGLDB4
QUIsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEZGLDB4QjgsMHgyMCwweEEwLDB4MjMsMHg0
OSwweEUyLDB4NDAsMHhERiwweEZCLDB4RkEsMHhBOSwKLSAgICAweDAzLDB4NDksMHhFMiwweDM4
LDB4QTgsMHgyMiwweDhBLDB4QTIsMHgwMywweDQ5LDB4RTIsMHg0MCwweDdGLDB4RTgsMHhGOCww
eDVBLAotICAgIDB4QTQsMHg1OSwweEUyLDB4NDAsMHgzRCwweEJELDB4QTUsMHgzNSwweDQ2LDB4
NkEsMHhFNSwweDYxLDB4QkUsMHhGQiwweEExLDB4MDksCi0gICAgMHg0NiwweDZBLDB4QzUsMHg1
OSwweDdGLDB4NkUsMHhGRiwweEEwLDB4MDYsMHg2MiwweEM1LDB4NTksMHhERiwweEY1LDB4M0Ys
MHgyNSwKLSAgICAweDA1LDB4NjIsMHg4MywweDUxLDB4RTIsMHhGQSwweDY4LDB4RTgsMHhBNSww
eDUxLDB4NDMsMHg0OSwweDcwLDB4N0UsMHhERSwweEQ3LAotICAgIDB4NDMsMHg0OSwweDAzLDB4
NDEsMHhFMiwweEVBLDB4QzgsMHg5QywweDY0LDB4NDksMHgwMywweDM5LDB4MkIsMHhBQSwweEU5
LDB4RjksCi0gICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweDdDLDB4QjcsMHhCRiwweEZGLDB4NDQs
MHg0MSwweDIzLDB4NDEsMHhBRiwweEE3LDB4MjksMHgyMCwKLSAgICAweDQ0LDB4NDksMHgyMyww
eDM5LDB4REYsMHhCNywweEI2LDB4MDksMHg0NCwweDQxLDB4MDMsMHg0MSwweDdBLDB4NTgsMHhG
QywweDlDLAotICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHg3NywweEY2LDB4RTMsMHhFQiwweDg0
LDB4NTEsMHhFMiwweDM4LDB4MDIsMHgzOSwweDk3LDB4NTUsCi0gICAgMHhFNSwweDU5LDB4NDMs
MHg0OSwweDBFLDB4MEEsMHgyMywweEQ1LDB4RTUsMHg1OSwweDQzLDB4NDEsMHg3OCwweEMwLDB4
ODAsMHhFMiwKLSAgICAweDIzLDB4NDEsMHhBMiwweDMwLDB4NkMsMHhGOCwweEZDLDB4NTgsMHhF
MywweDM4LDB4ODEsMHgyOCwweDVGLDB4N0UsMHhGOCwweDdCLAotICAgIDB4QzEsMHgzMCwweDgx
LDB4MjAsMHg2QiwweDlGLDB4REUsMHgzQSwweEMyLDB4MzAsMHhBMSwweDI4LDB4OUIsMHgyQSww
eDJBLDB4RkMsCi0gICAgMHgwMywweDMxLDB4QTIsMHgyOCwweDg4LDB4RkIsMHhCRiwweDVGLDB4
QzIsMHgyOCwweDgyLDB4MjAsMHgyNiwweEFFLDB4RTgsMHhDQSwKLSAgICAweEMyLDB4MjgsMHg2
MSwweDIwLDB4MEEsMHg4QSwweDdGLDB4NTcsMHg4MSwweDIwLDB4NDEsMHgxOCwweEUwLDB4RTgs
MHhGRiwweEZGLAotICAgIDB4ODIsMHgyMCwweDYxLDB4MjAsMHhERCwweERGLDB4QUYsMHgwOCww
eEMyLDB4MjgsMHg4MSwweDIwLDB4RjUsMHhCRCwweEI1LDB4OTUsCi0gICAgMHhDMiwweDI4LDB4
ODEsMHgyMCwweDJGLDB4MkYsMHgwQiwweDJGLDB4QzIsMHgyOCwweEEyLDB4MjgsMHgwRiwweDJB
LDB4M0IsMHgyOCwKLSAgICAweEUzLDB4MjgsMHhBMSwweDIwLDB4RUUsMHgyQiwweEVGLDB4NkYs
MHhFMywweDMwLDB4QTIsMHgyOCwweEZBLDB4ODMsMHhGNSwweDk1LAotICAgIDB4MDMsMHgzMSww
eEEyLDB4MjgsMHgzNSwweDk1LDB4RkYsMHg1QSwweDQ0LDB4NDEsMHhDMiwweDMwLDB4OEEsMHhF
RiwweEZGLDB4REQsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEZDLDB4RkEsMHg3QSwweDdG
LDB4QzIsMHgyOCwweDYxLDB4MjgsMHg3RSwweEU4LDB4MjgsMHg4MiwKLSAgICAweEMyLDB4MzAs
MHg2MSwweDIwLDB4RjUsMHhFRiwweDMyLDB4QjIsMHhDMiwweDI4LDB4ODEsMHgyOCwweDdGLDB4
RkEsMHhDQSwweDgwLAotICAgIDB4QTEsMHgyOCwweDYxLDB4MjAsMHhGQiwweDdDLDB4N0EsMHg3
QywweEEyLDB4MjgsMHg2MSwweDI4LDB4QkYsMHg1NywweEVBLDB4Q0EsCi0gICAgMHhFMywweDM4
LDB4NjEsMHgyMCwweDBCLDB4MEIsMHg4RiwweEVELDB4RTIsMHgzOCwweEMyLDB4MzAsMHg4MCww
eDAwLDB4MDcsMHg4NSwKLSAgICAweDI0LDB4NDEsMHhFMiwweDM4LDB4RDUsMHg5NSwweDhELDB4
QkYsMHgyMywweDQxLDB4RTMsMHgzOCwweEJGLDB4RjYsMHhCRiwweDk3LAotICAgIDB4MjMsMHg0
MSwweEUzLDB4MzgsMHhGQSwweEE2LDB4MkUsMHgyOCwweDIzLDB4NDEsMHhDMiwweDM4LDB4QkUs
MHhGNiwweDNBLDB4MjAsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzOCwweDYwLDB4NjgsMHhGOCww
eEMyLDB4QzIsMHgzMCwweEEyLDB4MzAsMHgwMiwweDAwLDB4QjgsMHhGRSwKLSAgICAweEUzLDB4
MzgsMHhBMiwweDMwLDB4REUsMHg1QSwweDdCLDB4NkQsMHhDMiwweDMwLDB4ODEsMHgyOCwweEE4
LDB4QUYsMHhCNCwweEFFLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhEMywweEI4LDB4QUIs
MHgzNSwweEUzLDB4MzAsMHg2MSwweDIwLDB4NzgsMHg3QSwweEU4LDB4QTAsCi0gICAgMHhBMiww
eDI4LDB4NjEsMHgyMCwweEJCLDB4RkYsMHhGQiwweEEwLDB4QTIsMHgyOCwweDgxLDB4MjAsMHhC
RCwweEZGLDB4NUUsMHhGRiwKLSAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4MDIsMHgwQSwweDJG
LDB4QTcsMHhDMiwweDI4LDB4ODEsMHgyOCwweDBCLDB4QTIsMHhGQSwweEZBLAotICAgIDB4MDMs
MHgzOSwweDgxLDB4MjgsMHgwMiwweEJGLDB4QUQsMHhGRCwweDA0LDB4MzksMHhBMiwweDI4LDB4
RTAsMHhGOCwweEZCLDB4RkUsCi0gICAgMHhDMiwweDI4LDB4ODIsMHgyOCwweEE4LDB4QUEsMHhG
OCwweERBLDB4QzIsMHgyOCwweDgxLDB4MjAsMHhBQSwweDhCLDB4RUIsMHg3RiwKLSAgICAweEMy
LDB4MjgsMHg4MiwweDI4LDB4MEUsMHgyOCwweEY4LDB4NjUsMHhFMywweDMwLDB4ODEsMHgyOCww
eDhBLDB4MkYsMHhCNywweEVELAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHgzQywweDdFLDB4
N0YsMHg3RCwweEUzLDB4MzAsMHhBMiwweDI4LDB4M0UsMHgzNSwweDJELDB4RjUsCi0gICAgMHgw
MywweDMxLDB4QTIsMHgyOCwweDJBLDB4QUIsMHgzRiwweEI1LDB4MjQsMHgzOSwweEUyLDB4MzAs
MHg3RiwweEZGLDB4REYsMHhFQiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4QUEsMHhCOCww
eDc2LDB4RDcsMHhFMiwweDMwLDB4QzIsMHgyOCwweDc4LDB4RTIsMHhDQiwweDg4LAotICAgIDB4
MDMsMHgzMSwweEMyLDB4MzAsMHgyRCwweEVGLDB4Q0YsMHhFRiwweDAzLDB4MzEsMHhBMiwweDI4
LDB4QzIsMHhBQSwweEZGLDB4NUUsCi0gICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweDJBLDB4QUEs
MHhBQSwweEE5LDB4MDMsMHgzOSwweEMyLDB4MzAsMHg1MiwweDVGLDB4QjYsMHhCNSwKLSAgICAw
eDA0LDB4MzksMHhDMywweDMwLDB4RUYsMHgyRCwweEFCLDB4QkUsMHgyMywweDM5LDB4QzIsMHgz
MCwweEI3LDB4RkEsMHhGQSwweDgyLAotICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHhBMCwweDgy
LDB4MDIsMHg2MiwweDIzLDB4NDEsMHhDMiwweDMwLDB4MUUsMHhCQywweEEwLDB4MjAsCi0gICAg
MHgyMywweDQxLDB4MDMsMHgzOSwweDJCLDB4MTksMHg4NSwweDI5LDB4NDQsMHg0OSwweEMyLDB4
MzgsMHhGRSwweERGLDB4RkYsMHgwMiwKLSAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4RDYsMHhC
RSwweEEyLDB4MkEsMHg2NCwweDQ5LDB4RTMsMHgzOCwweEQ3LDB4RkYsMHhBQiwweEFCLAotICAg
IDB4ODUsMHg1MSwweDAzLDB4MzksMHg3NSwweEZGLDB4QUIsMHgwQSwweEM2LDB4NTksMHgyNCww
eDQ5LDB4QkQsMHgzQiwweDJCLDB4MkIsCi0gICAgMHg4OSwweDcyLDB4RTYsMHg1OSwweDM1LDB4
MjUsMHhCRCwweEJGLDB4MkUsMHhBQywweEM5LDB4N0EsMHgwOSwweDJELDB4QkQsMHhGNSwKLSAg
ICAweDEwLDB4QzUsMHhDQywweDlCLDB4MEEsMHgwQSwweEFELDB4RjUsMHgxMCwweEM1LDB4OEYs
MHhCNCwweDIyLDB4MjIsMHgwQSwweEZELAotICAgIDB4RjAsMHhDNCwweENGLDB4QkMsMHgzNyww
eDU3LDB4N0EsMHg4QiwweDEwLDB4QzUsMHhDRiwweEJDLDB4QkYsMHhGOSwweEUzLDB4QUEsCi0g
ICAgMHgxMCwweEM1LDB4Q0YsMHhCQywweEFBLDB4RUYsMHhGRSwweDlBLDB4MTAsMHhDNSwweEYw
LDB4QkMsMHhBMiwweDkwLDB4MzQsMHgzMiwKLSAgICAweDMxLDB4QzUsMHhGMCwweEJDLDB4RkUs
MHg3QiwweEVCLDB4RkUsMHgxMCwweEM1LDB4RDAsMHhCQywweEIxLDB4MkEsMHgyOCwweEFCLAot
ICAgIDB4RjAsMHhCQywweEFGLDB4QkMsMHhFOCwweDg4LDB4RUEsMHg4MiwweEYwLDB4QzQsMHg2
RSwweEI0LDB4NUYsMHhFQSwweEEwLDB4MDAsCi0gICAgMHgxMCwweEM1LDB4NEUsMHhBQywweDU3
LDB4RkYsMHhFQSwweDg4LDB4OEYsMHhCNCwweDJELDB4QTQsMHg1RiwweEY4LDB4RjgsMHhGMCwK
LSAgICAweDJELDB4QTQsMHhBQywweDkzLDB4RkIsMHhGQSwweEE4LDB4ODIsMHgwRCwweDlDLDB4
OEIsMHg5MywweDU3LDB4NzcsMHhGQSwweEE4LAotICAgIDB4RUQsMHg5QiwweDA5LDB4N0IsMHg3
RiwweEEyLDB4MDAsMHgwMCwweEVELDB4OUIsMHhDOCwweDcyLDB4RDUsMHg1RiwweEU4LDB4QTAs
Ci0gICAgMHg4QiwweDhCLDB4QzksMHg3QSwweEZGLDB4RkYsMHhCRiwweDg4LDB4NEEsMHg4Myww
eEU5LDB4N0EsMHg5NywweEJCLDB4RkYsMHhFOCwKLSAgICAweDZCLDB4OEIsMHgwQSwweDdCLDB4
REYsMHhCRiwweEFGLDB4MkIsMHg2QiwweDhCLDB4MkEsMHg4MywweEI2LDB4RUEsMHhEMywweERF
LAotICAgIDB4NkIsMHg4QiwweDJBLDB4ODMsMHg5RSwweEZFLDB4REIsMHhGQSwweDZDLDB4OEIs
MHhDOSwweDcyLDB4NUUsMHg3QSwweEUwLDB4QUEsCi0gICAgMHgwQSwweDdCLDB4QTksMHg2QSww
eDZELDB4N0IsMHhCQywweEIwLDB4RTksMHg3MiwweDI2LDB4NUEsMHg1NywweDVBLDB4N0EsMHg3
OCwKLSAgICAweDIzLDB4NDEsMHhFMiwweDQwLDB4NkIsMHhFRCwweEY0LDB4QUUsMHgyMywweDQ5
LDB4RTIsMHg0MCwweDk2LDB4MkEsMHhBRSwweENCLAotICAgIDB4NDQsMHg0OSwweEUyLDB4NDAs
MHhGOSwweEVDLDB4RjIsMHhGRiwweDIzLDB4NDksMHgwMiwweDQxLDB4N0QsMHhERCwweDc3LDB4
QUUsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEI4LDB4MjUsMHhCRCwweEI4LDB4MjMsMHg0
OSwweEUyLDB4NDAsMHhGMiwweEQ4LDB4RDgsMHhGOCwKLSAgICAweDIzLDB4NDksMHhFMiwweDQw
LDB4QUIsMHgwRiwweEJBLDB4QTksMHg0MywweDQ5LDB4RTIsMHg0MCwweEI3LDB4QUYsMHg4Miww
eEZFLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHgwMCwweDgwLDB4RDAsMHhEQSwweDAzLDB4
NDEsMHhDMiwweDM4LDB4NjIsMHhCRiwweEI3LDB4QkYsCi0gICAgMHgwMywweDQxLDB4QzIsMHgz
OCwweDhCLDB4RDgsMHg5MiwweEFDLDB4MDMsMHg0MSwweEUyLDB4NDAsMHhCMywweEMyLDB4OEEs
MHhERCwKLSAgICAweDAyLDB4NDEsMHhDMiwweDM4LDB4N0UsMHhCQiwweEIyLDB4QTIsMHgwMyww
eDQxLDB4RTIsMHgzOCwweDBBLDB4RTUsMHg3RCwweEVELAotICAgIDB4MDMsMHg0MSwweEUyLDB4
NDAsMHhCQSwweDAwLDB4MDksMHhERiwweDIzLDB4NDEsMHhFMiwweDQwLDB4M0YsMHhBRSwweEQ2
LDB4NzUsCi0gICAgMHgwMywweDQxLDB4QTIsMHgzOCwweDA4LDB4QTgsMHhBOCwweEI3LDB4MDMs
MHg0MSwweEMxLDB4MzgsMHg4MiwweEJFLDB4RTIsMHg3OCwKLSAgICAweDAyLDB4NDEsMHhFMiww
eDQwLDB4NTEsMHhDMywweDhELDB4RDUsMHgyMywweDQxLDB4RTIsMHg0MCwweEJELDB4QUQsMHhC
RCwweDczLAotICAgIDB4MDIsMHg0MSwweEUxLDB4NDAsMHhDMCwweEMwLDB4RUEsMHhFMiwweDIy
LDB4NDEsMHhDMSwweDQwLDB4RkQsMHg5RiwweEQ3LDB4REYsCi0gICAgMHhDNSwweDU5LDB4RTIs
MHg0MCwweDM3LDB4M0QsMHhCNSwweEI1LDB4NDcsMHg2QSwweEU1LDB4NjEsMHhBRiwweEMyLDB4
QzksMHg4OSwKLSAgICAweDQ3LDB4NkEsMHhFNSwweDYxLDB4NjMsMHg3QiwweDdCLDB4NkUsMHgw
NSwweDYyLDB4QTQsMHg1OSwweEFGLDB4RkEsMHhFMiwweDgyLAotICAgIDB4MDYsMHg2MiwweDY0
LDB4NTEsMHhFQywweEZDLDB4RkEsMHg3QSwweDQzLDB4NDksMHgwMywweDQxLDB4NzgsMHg3OCww
eEY4LDB4NUMsCi0gICAgMHgyMywweDQxLDB4RTIsMHgzOCwweEJFLDB4QjUsMHhFNSwweEFBLDB4
MjMsMHg0MSwweEMyLDB4MzAsMHhBMiwweEZCLDB4N0EsMHhGQSwKLSAgICAweDQ0LDB4NDEsMHhF
MiwweDMwLDB4QkYsMHhBQiwweEFGLDB4QTksMHg0NCwweDQxLDB4MjQsMHgzOSwweDAyLDB4OEEs
MHgwMiwweEMyLAotICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHgwMiwweENCLDB4ODMsMHg4Miww
eDQ0LDB4NDEsMHgwMywweDQxLDB4REMsMHhGRSwweEVCLDB4QUEsCi0gICAgMHg0MywweDQxLDB4
RTMsMHgzOCwweDZCLDB4RjIsMHhGQSwweEJBLDB4RTIsMHgzOCwweEExLDB4MzAsMHg4RSwweEJB
LDB4NEEsMHg2OCwKLSAgICAweDQ0LDB4NDksMHhDMiwweDMwLDB4QUYsMHhBRCwweEJELDB4QkQs
MHg4NCwweDQ5LDB4RTMsMHgzOCwweDgyLDB4QjksMHhFRiwweDVELAotICAgIDB4MjMsMHg0MSww
eEEyLDB4MjgsMHg1OCwweEY4LDB4N0UsMHhGRiwweEMyLDB4MjgsMHg4MSwweDI4LDB4QUEsMHhF
RiwweEY3LDB4RUEsCi0gICAgMHhFMiwweDI4LDB4ODEsMHgyMCwweDNFLDB4M0YsMHhGRiwweEVE
LDB4RTIsMHgzMCwweEEyLDB4MjgsMHg3RSwweEY4LDB4RkUsMHhGRiwKLSAgICAweEMyLDB4Mjgs
MHhBMiwweDI4LDB4REYsMHhGRiwweEZGLDB4MjIsMHhBMiwweDI4LDB4NjEsMHgyMCwweDgwLDB4
RjAsMHg3MCwweDc4LAotICAgIDB4ODEsMHgyMCwweDQxLDB4MTgsMHg3OCwweEZFLDB4RkUsMHhG
QiwweDgxLDB4MjAsMHg0MSwweDE4LDB4RkIsMHhBQSwweDhBLDB4MEEsCi0gICAgMHhBMiwweDI4
LDB4NjEsMHgyMCwweEVGLDB4NkYsMHhBQSwweDJCLDB4QzIsMHgyOCwweDYxLDB4MjAsMHhBRCww
eEFCLDB4MzcsMHhBRSwKLSAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4MjksMHg4NSwweEFBLDB4
QkEsMHhFMywweDMwLDB4QTIsMHgyOCwweEZGLDB4Q0EsMHhDRSwweEFBLAotICAgIDB4MDMsMHgy
OSwweEEyLDB4MjgsMHhGNywweDVGLDB4RkQsMHhGRSwweEUyLDB4MzAsMHhBMiwweDI4LDB4Qjcs
MHhCNSwweERELDB4NUEsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDZBLDB4NjIsMHg3Miww
eEZGLDB4QzIsMHgzMCwweEEyLDB4MjgsMHhFMywweDY2LDB4NzUsMHg2NSwKLSAgICAweEEyLDB4
MjgsMHg4MSwweDIwLDB4MDIsMHhCOCwweDU2LDB4N0MsMHhDMiwweDI4LDB4ODEsMHgyMCwweEEy
LDB4QjMsMHhGNSwweEZELAotICAgIDB4QzIsMHgyOCwweEEyLDB4MjgsMHgzMywweDAxLDB4Mjgs
MHgyMywweEUzLDB4MzAsMHg4MSwweDIwLDB4Q0EsMHhFQSwweEZGLDB4N0UsCi0gICAgMHhBMiww
eDI4LDB4ODEsMHgyMCwweDU3LDB4NjksMHg3RCwweEJGLDB4QTIsMHgyOCwweDYxLDB4MjAsMHhG
QiwweEZBLDB4QUEsMHg4MCwKLSAgICAweEExLDB4MjgsMHg2MSwweDIwLDB4MDksMHgzRiwweDhC
LDB4MEUsMHhFMiwweDMwLDB4ODEsMHgyOCwweDBGLDB4OUYsMHhBRiwweEJCLAotICAgIDB4MDMs
MHgzOSwweEEyLDB4MzAsMHgyMCwweDBBLDB4QkYsMHhGRCwweDAzLDB4MzksMHhDMiwweDMwLDB4
MEMsMHgwMiwweDBCLDB4QkYsCi0gICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweEZBLDB4RkUsMHg2
QiwweEZELDB4NDQsMHg0MSwweDAzLDB4MzksMHg1RSwweDc3LDB4REQsMHgzQiwKLSAgICAweDQ0
LDB4NDEsMHhFMiwweDM4LDB4NkYsMHg3QiwweDZCLDB4NjMsMHhFMywweDM4LDB4QTIsMHgzMCww
eERGLDB4NUYsMHg3QiwweDc4LAotICAgIDB4QTIsMHgyOCwweDYxLDB4MjgsMHgwMCwweDAwLDB4
MkEsMHgzRSwweEUzLDB4MzAsMHhBMiwweDMwLDB4REQsMHg1RiwweEZFLDB4MkQsCi0gICAgMHhF
MiwweDMwLDB4ODEsMHgyOCwweDI3LDB4QUYsMHhCRiwweEVFLDB4MDMsMHgzMSwweEMyLDB4Mjgs
MHhFMiwweEVELDB4REQsMHg3RCwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4NTQsMHhBRiww
eDBGLDB4OEYsMHhDMywweDI4LDB4ODEsMHgyOCwweEY3LDB4RkUsMHhGQywweEYwLAotICAgIDB4
QTIsMHgzMCwweDYxLDB4MjAsMHhGNywweEZCLDB4QkUsMHgyQSwweDgxLDB4MzAsMHhBMiwweDI4
LDB4RDcsMHg1QywweDU2LDB4NUYsCi0gICAgMHhFMywweDMwLDB4QTIsMHgzMCwweEJELDB4MkYs
MHgwQiwweDJCLDB4RTMsMHgzMCwweEMyLDB4MjgsMHg3QywweEYwLDB4RkEsMHhCQSwKLSAgICAw
eEUzLDB4MzAsMHg4MSwweDIwLDB4RkYsMHhGNiwweERDLDB4N0UsMHhBMiwweDI4LDB4ODEsMHgy
MCwweDc4LDB4NUMsMHhBMCwweDIzLAotICAgIDB4QzIsMHgyOCwweDYxLDB4MjAsMHhGRiwweEZE
LDB4QUEsMHgyQSwweEMyLDB4MzAsMHg4MiwweDI4LDB4MEQsMHgwRCwweDBGLDB4MDAsCi0gICAg
MHhDMiwweDMwLDB4ODIsMHgyOCwweEUwLDB4RTgsMHhGQywweEY4LDB4RTMsMHgzMCwweEEyLDB4
MjgsMHhENSwweEI1LDB4M0QsMHhFRiwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QkYsMHg5
RiwweDJGLDB4QkYsMHgwMywweDMxLDB4QzMsMHgzMCwweEFBLDB4RUEsMHhCQiwweEFGLAotICAg
IDB4MDMsMHgzMSwweEEyLDB4MjgsMHg5RiwweEY1LDB4MzcsMHhCNywweDAzLDB4MzEsMHhBMiww
eDI4LDB4MjIsMHhGMiwweDdGLDB4NTUsCi0gICAgMHgwMywweDMxLDB4QTIsMHgyOCwweDhCLDB4
QTIsMHhCQiwweDlELDB4RTIsMHgzMCwweEEyLDB4MjgsMHg1RSwweEUwLDB4RTAsMHhBQSwKLSAg
ICAweEUzLDB4MzgsMHhDMiwweDI4LDB4NTcsMHg3RCwweERELDB4N0QsMHgwMywweDMxLDB4QTIs
MHgyOCwweEE3LDB4REQsMHg1RiwweDJCLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgzNSww
eEFGLDB4QkYsMHgzRiwweDQ0LDB4NDEsMHhFMiwweDMwLDB4QUIsMHhBMiwweDlBLDB4RjcsCi0g
ICAgMHgyMywweDM5LDB4RTIsMHgzMCwweEUwLDB4RTIsMHhFMCwweDYyLDB4NDQsMHg0MSwweEMx
LDB4MzAsMHhBQSwweEFGLDB4MkIsMHg4OSwKLSAgICAweDI0LDB4NDEsMHhFMiwweDM4LDB4MzYs
MHgyNiwweEJCLDB4N0EsMHg2NCwweDQ5LDB4RTMsMHgzOCwweEFCLDB4QkYsMHhFRCwweEZGLAot
ICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHg5NSwweDM3LDB4MkQsMHgzRCwweDQ0LDB4NDksMHgw
MywweDQxLDB4MDgsMHgzOCwweDI3LDB4MkEsCi0gICAgMHhDNiwweDU5LDB4MjQsMHg0MSwweEFE
LDB4RUQsMHhFQiwweDJCLDB4MDcsMHg2MiwweDY0LDB4NDksMHhCNywweDNELDB4RkYsMHgwQiwK
LSAgICAweENBLDB4N0EsMHgyNywweDZBLDB4QTUsMHgyRiwweDhELDB4MEIsMHgyQiwweDhCLDB4
Q0EsMHg3QSwweDNELDB4MjUsMHhGRCwweEVGLAotICAgIDB4QUMsMHg5QiwweDBBLDB4ODMsMHgy
QSwweEJELDB4RDUsMHg1NSwweDhGLDB4QjQsMHgyQSwweDhCLDB4MEEsMHhCRiwweEZGLDB4NTUs
Ci0gICAgMHhGMCwweEJDLDB4OEIsMHg5MywweDAyLDB4MkEsMHhCRCwweDU1LDB4RjAsMHhDNCww
eDBELDB4QUMsMHgwMCwweDAwLDB4MEIsMHhCRCwKLSAgICAweDEwLDB4QzUsMHhBRiwweEJDLDB4
QUEsMHgyOCwweDJBLDB4MkQsMHgxMCwweEM1LDB4RjAsMHhCQywweEQ2LDB4MkEsMHg4NiwweEFG
LAotICAgIDB4MTAsMHhDNSwweENGLDB4QkMsMHg5QSwweDYyLDB4RjgsMHhGRSwweDEwLDB4QzUs
MHhBRiwweEI0LDB4QUEsMHg4RSwweDdFLDB4RkIsCi0gICAgMHhGMCwweEJDLDB4QUYsMHhCNCww
eDJBLDB4QjIsMHhCMywweEFGLDB4RjAsMHhCQywweEQwLDB4QkMsMHgwNSwweDJBLDB4MkUsMHhC
QSwKLSAgICAweDExLDB4QzUsMHhBRiwweEI0LDB4QUUsMHhBNiwweEFBLDB4RUIsMHhGMCwweEJD
LDB4NEQsMHhBNCwweDU4LDB4NzgsMHg0OCwweEUwLAotICAgIDB4NkQsMHhBQywweDBELDB4QTQs
MHhERiwweDdGLDB4N0EsMHhGOCwweDJELDB4QTQsMHhDQywweDlCLDB4N0MsMHhBQSwweEFBLDB4
MEEsCi0gICAgMHgyRCwweEE0LDB4RUMsMHg5QiwweEY1LDB4QkQsMHg5NywweDJFLDB4MkQsMHhB
NCwweDBELDB4OUMsMHhDRiwweDdGLDB4RkUsMHhCMywKLSAgICAweDRFLDB4QTQsMHhDQywweDkz
LDB4NjcsMHhBQSwweEEyLDB4MjgsMHgwRCwweDlDLDB4MkEsMHg4MywweDdGLDB4RTgsMHgwMCww
eDAwLAotICAgIDB4MEQsMHg5QywweDJBLDB4ODMsMHg3NSwweEZGLDB4RUEsMHg4MCwweENDLDB4
OTMsMHgyQSwweDgzLDB4NUYsMHhGRiwweEZBLDB4MDAsCi0gICAgMHgwRCwweDlDLDB4MkEsMHg4
MywweDc3LDB4REYsMHhFRiwweDJBLDB4RUMsMHg5QiwweDJBLDB4ODMsMHg1RCwweDdGLDB4RkUs
MHgyMCwKLSAgICAweDhBLDB4OEIsMHhFOSwweDdBLDB4NUYsMHhFQiwweDU4LDB4QTAsMHg0QSww
eDgzLDB4NjgsMHg2QSwweDVGLDB4NUIsMHhFQSwweEE4LAotICAgIDB4MjMsMHg0OSwweEMyLDB4
MzgsMHhBQiwweEE2LDB4QTQsMHgyQSwweDQ0LDB4NDksMHhFMiwweDM4LDB4QUQsMHhCNywweEVB
LDB4QUEsCi0gICAgMHgyMywweDQ5LDB4RTMsMHg0MCwweDM4LDB4QUUsMHhFRSwweENFLDB4MjMs
MHg0OSwweDAzLDB4NDEsMHg2MCwweENFLDB4MkMsMHg1QSwKLSAgICAweDIzLDB4NDksMHhFMiww
eDQwLDB4QUEsMHgwQSwweEUwLDB4RkEsMHgyMywweDUxLDB4MDMsMHg0MSwweEZBLDB4N0YsMHhE
RCwweDU1LAotICAgIDB4NDMsMHg0OSwweDAyLDB4NDEsMHhGQiwweDNCLDB4QTMsMHhCQiwweDIz
LDB4NDksMHhDMiwweDM4LDB4RUEsMHhCQSwweDU4LDB4RTgsCi0gICAgMHgyMywweDQxLDB4QTEs
MHgzOCwweEVBLDB4QUEsMHhGQSwweDY4LDB4MDMsMHg0MSwweEEyLDB4MzgsMHhGRiwweEJFLDB4
QUIsMHg4OSwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4QkMsMHhCNywweEQ0LDB4MkEsMHgy
MywweDQxLDB4RTIsMHg0MCwweEQ3LDB4NUUsMHhEQywweEU3LAotICAgIDB4MDMsMHg0MSwweEMy
LDB4MzgsMHg3QSwweEZGLDB4QjcsMHgyRiwweDAzLDB4NDEsMHhFMiwweDQwLDB4MDUsMHgxNSww
eEE5LDB4NUMsCi0gICAgMHgwMywweDQxLDB4RTIsMHgzOCwweDAzLDB4Q0EsMHhENSwweDVELDB4
MDMsMHg0MSwweEMyLDB4MzgsMHhGRSwweEE2LDB4RDYsMHhENiwKLSAgICAweDAyLDB4NDEsMHhD
MiwweDM4LDB4M0QsMHgzQiwweEFGLDB4QkYsMHgwMywweDQxLDB4RTIsMHgzOCwweDcwLDB4NzAs
MHg1QywweDVELAotICAgIDB4RTIsMHg0MCwweDAyLDB4MzksMHhFMCwweDM4LDB4QUEsMHhCMiww
eDAyLDB4NDEsMHhFMiwweDM4LDB4RjgsMHhBQiwweEJELDB4REQsCi0gICAgMHgwMiwweDQxLDB4
QzIsMHg0MCwweEEyLDB4MjIsMHgwMCwweEFDLDB4MDMsMHg0MSwweEMyLDB4NDAsMHgyQiwweDA3
LDB4MEUsMHhBOCwKLSAgICAweDg0LDB4NTEsMHhFMiwweDQwLDB4MzUsMHgzRiwweDlELDB4RjUs
MHg2NywweDcyLDB4QTQsMHg1OSwweDJCLDB4MEIsMHgwOSwweDgxLAotICAgIDB4NjcsMHg3Miww
eDA1LDB4NjIsMHg1QiwweDcxLDB4RTgsMHg2QSwweDA1LDB4NjIsMHhDNSwweDU5LDB4MkIsMHgw
OCwweDgwLDB4RTgsCi0gICAgMHgwNSwweDYyLDB4NjMsMHg0OSwweDYwLDB4N0EsMHhGQSwweDZB
LDB4NjQsMHg0OSwweEUyLDB4MzgsMHhGMCwweEY4LDB4RjgsMHg1QSwKLSAgICAweDQ0LDB4NDEs
MHhFMiwweDM4LDB4RkUsMHhERiwweEQ3LDB4M0QsMHg0NCwweDQxLDB4MDMsMHgzOSwweDc1LDB4
Q0UsMHhBMiwweDk4LAotICAgIDB4MjMsMHgzOSwweEUyLDB4MzgsMHg4QiwweEEyLDB4MDMsMHgy
MCwweDIzLDB4MzksMHhDMywweDMwLDB4MkEsMHg2RSwweEZFLDB4RjIsCi0gICAgMHg0NCwweDQx
LDB4RTMsMHgzMCwweDBBLDB4MkIsMHhCRCwweEU3LDB4NDQsMHg0MSwweEUyLDB4MzgsMHhBQSww
eDIwLDB4OEYsMHhBRCwKLSAgICAweDQ0LDB4NDEsMHgyMywweDM5LDB4NTcsMHgxOCwweEQ4LDB4
NzEsMHgyMywweDM5LDB4QzIsMHgzMCwweDVFLDB4RkMsMHhGOCwweEE4LAotICAgIDB4MDMsMHgz
OSwweEMyLDB4MzAsMHhFOSwweDdBLDB4QkEsMHhBMiwweDAzLDB4MzksMHhBMSwweDI4LDB4RTIs
MHhFQSwweEYzLDB4N0IsCi0gICAgMHhDMiwweDMwLDB4QTEsMHgyOCwweEEwLDB4RTgsMHhCQyww
eEE1LDB4RTIsMHgyOCwweDgxLDB4MjgsMHhFQSwweEEyLDB4QTgsMHg2QSwKLSAgICAweEUyLDB4
MzAsMHhBMiwweDIwLDB4RUQsMHhFRiwweEJFLDB4N0IsMHhFMywweDI4LDB4ODEsMHgyMCwweDhB
LDB4QTIsMHhFQSwweERGLAotICAgIDB4RTMsMHgyOCwweDgyLDB4MjAsMHhFMiwweDdBLDB4Nzcs
MHhGRiwweEMyLDB4MjAsMHg2MSwweDIwLDB4NUUsMHg1NywweDdGLDB4RkYsCi0gICAgMHhBMiww
eDI4LDB4NjEsMHgyMCwweDdELDB4RjMsMHg4QiwweDAzLDB4RTMsMHgzMCwweDgxLDB4MjAsMHhE
NSwweEZELDB4QTksMHgwQSwKLSAgICAweEMzLDB4MjgsMHg4MSwweDIwLDB4RkQsMHhGRSwweEZD
LDB4QTgsMHgwMiwweDI5LDB4QTIsMHgyOCwweDc1LDB4N0QsMHhGRiwweERFLAotICAgIDB4QzIs
MHgyOCwweEEyLDB4MjgsMHhDQSwweDgwLDB4OEUsMHhCQSwweDAzLDB4MzEsMHhDMiwweDI4LDB4
RkQsMHhFRCwweEQ1LDB4OTUsCi0gICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEY3LDB4N0YsMHg3
QiwweEVBLDB4MDMsMHgyOSwweEEyLDB4MjgsMHhERiwweDVGLDB4RkUsMHhGRiwKLSAgICAweDAz
LDB4MzEsMHhBMiwweDI4LDB4REQsMHg1RCwweDVCLDB4RkIsMHhFMiwweDI4LDB4QTIsMHgyOCww
eEVELDB4N0YsMHhCRSwweEVBLAotICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHg5NywweEZDLDB4
ODIsMHhFMCwweDgxLDB4MjgsMHhDMiwweDIwLDB4QTcsMHhCRiwweEJBLDB4RUEsCi0gICAgMHhF
MywweDMwLDB4ODEsMHgyMCwweEJGLDB4MkYsMHhGRCwweEI3LDB4QzIsMHgyOCwweDgxLDB4MjAs
MHg1NCwweDVFLDB4NTgsMHhGRSwKLSAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4RkYsMHg1Riww
eEZFLDB4MzgsMHhDMiwweDI4LDB4ODEsMHgyMCwweEVCLDB4NzIsMHg3QSwweEY4LAotICAgIDB4
QzIsMHgyOCwweDgxLDB4MjAsMHhERiwweEFCLDB4ODMsMHhFQiwweEUyLDB4MzAsMHhBMiwweDI4
LDB4NTIsMHg2QiwweDdCLDB4NzUsCi0gICAgMHhDMiwweDMwLDB4ODEsMHgyMCwweEFBLDB4RkUs
MHg3NSwweDU3LDB4QzIsMHgzMCwweDgxLDB4MjAsMHgwOCwweDJGLDB4QUQsMHhFRCwKLSAgICAw
eDAzLDB4MzksMHg4MSwweDI4LDB4MDAsMHhBQSwweEFGLDB4RjUsMHgyMywweDQxLDB4QzIsMHgz
MCwweDIwLDB4MDgsMHgyRCwweDlGLAotICAgIDB4NjUsMHg0OSwweDI0LDB4NDEsMHg0MSwweEEy
LDB4QkIsMHhFQiwweDQ0LDB4NDEsMHhBMiwweDI4LDB4N0EsMHhGOCwweENBLDB4NzgsCi0gICAg
MHhDMiwweDMwLDB4NjEsMHgyMCwweEQ2LDB4RkUsMHhCOCwweEFBLDB4QTIsMHgzMCwweDgyLDB4
MjAsMHgwOCwweEEwLDB4MjAsMHhBMCwKLSAgICAweEMzLDB4MzAsMHg4MiwweDI4LDB4RUEsMHhF
QiwweEVCLDB4RkQsMHhDMiwweDMwLDB4ODEsMHgyOCwweEIyLDB4OUYsMHg3RiwweEFGLAotICAg
IDB4QzIsMHgzMCwweDgyLDB4MjgsMHg4QSwweEFFLDB4QkQsMHhGQSwweDAzLDB4MzksMHhBMiww
eDI4LDB4RDksMHhBRiwweEFGLDB4QkQsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEQ1LDB4
QkYsMHgyRSwweDBBLDB4MjQsMHgzOSwweEEyLDB4MzAsMHhENSwweEZCLDB4QUEsMHhBQSwKLSAg
ICAweDAzLDB4MzksMHhBMiwweDMwLDB4RjcsMHhGRiwweEZFLDB4MjIsMHhFMiwweDMwLDB4QTIs
MHgyOCwweEZGLDB4REYsMHg1MywweEMwLAotICAgIDB4QzIsMHgzMCwweDgyLDB4MjgsMHhCQyww
eDdFLDB4QkUsMHhBMiwweEUzLDB4MjgsMHg4MSwweDI4LDB4QkQsMHhGNywweDU3LDB4RkYsCi0g
ICAgMHgwMywweDMxLDB4ODIsMHgyOCwweDNGLDB4QUYsMHhCRCwweEJELDB4MDMsMHgzOSwweEMy
LDB4MjgsMHg2OCwweEUwLDB4QzIsMHg4MywKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4NTgs
MHhFQSwweEMwLDB4QjAsMHhFMiwweDMwLDB4QTIsMHgyOCwweDI3LDB4RjcsMHhERiwweDdGLAot
ICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHg4MCwweEJBLDB4NTksMHhBMywweEUzLDB4MzAsMHg4
MSwweDI4LDB4MEEsMHhDQSwweERBLDB4REYsCi0gICAgMHhDMiwweDI4LDB4ODEsMHgyOCwweDg4
LDB4MkEsMHgwQSwweEFELDB4QzIsMHgyOCwweEEyLDB4MjgsMHg3NywweEI5LDB4RTIsMHgyMiwK
LSAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4M0UsMHhFQSwweEZFLDB4RjIsMHhDMywweDMwLDB4
ODEsMHgyMCwweDAyLDB4QUIsMHhFRSwweDZGLAotICAgIDB4RTMsMHgzMCwweDgxLDB4MjAsMHhB
MiwweEJCLDB4QkQsMHhBNSwweEUzLDB4MzAsMHhDMiwweDI4LDB4QTcsMHhGNywweDY1LDB4NzUs
Ci0gICAgMHgwMywweDM5LDB4QzIsMHgyOCwweDNCLDB4M0QsMHg3NSwweEFELDB4MDIsMHgzOSww
eEEyLDB4MjgsMHgyOCwweEZGLDB4QkYsMHhGRiwKLSAgICAweDAzLDB4MzksMHhBMSwweDI4LDB4
QTAsMHg4QiwweEE5LDB4QUEsMHg0NCwweDQxLDB4QzEsMHgzMCwweDI5LDB4RkIsMHg3RCwweEY1
LAotICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHhEQSwweDVCLDB4RDcsMHgzRCwweDg0LDB4NDks
MHgwMywweDM5LDB4NUQsMHhGRiwweEMxLDB4Q0EsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHg0MSww
eEFELDB4QTUsMHgyNSwweEZGLDB4ODUsMHg1MSwweDIzLDB4NDEsMHhGRCwweEJGLDB4MkYsMHgw
QiwKLSAgICAweEM2LDB4NTksMHg2NCwweDQ5LDB4QTUsMHhCNSwweDNGLDB4MEYsMHgyNywweDZB
LDB4QzUsMHg1OSwweEFELDB4MzUsMHhGNSwweDJCLAotICAgIDB4RUEsMHg4MiwweDQ4LDB4NkEs
MHgyRCwweDJELDB4MkQsMHgwOSwweDJBLDB4ODMsMHhFQSwweDdBLDB4RTksMHg3RiwweDc2LDB4
NkEsCi0gICAgMHgyQiwweDgzLDB4QzksMHg3QSwweEFFLDB4QUYsMHhCNSwweEJGLDB4MkEsMHg4
QiwweEM5LDB4N0EsMHgyRiwweEU2LDB4QTYsMHhBRSwKLSAgICAweDhDLDB4OUIsMHhFOSwweDdB
LDB4MkIsMHhCRiwweEQ3LDB4RkYsMHhFRCwweEEzLDB4MkEsMHg4MywweDBCLDB4QjcsMHhGRCww
eDU1LAotICAgIDB4QUYsMHhCQywweDJCLDB4ODMsMHgwMiwweEFGLDB4RkQsMHhENSwweEYwLDB4
QkMsMHhBQywweDlCLDB4MDAsMHgwMiwweEFELDB4NTUsCi0gICAgMHhGMCwweEJDLDB4NEQsMHhB
QywweDAwLDB4MDAsMHgwQSwweEU1LDB4RjAsMHhCQywweEFGLDB4QjQsMHg3MiwweEEyLDB4MEEs
MHgyRiwKLSAgICAweDExLDB4QzUsMHhEMCwweEJDLDB4RkQsMHg3QiwweENBLDB4RUYsMHgxMCww
eEM1LDB4RDAsMHhCQywweDdFLDB4N0YsMHg2QiwweEVBLAotICAgIDB4MTAsMHhDNSwweEQwLDB4
QkMsMHhFNSwweEZGLDB4QUYsMHg2QiwweEYwLDB4QkMsMHg2RSwweEFDLDB4RTgsMHhBOCwweEUw
LDB4NjAsCi0gICAgMHg4RiwweEFDLDB4MEQsMHhBNCwweDc0LDB4REMsMHhEQSwweEZBLDB4NEUs
MHhBQywweDJELDB4QTQsMHg1RSwweDVFLDB4NjcsMHgyNCwKLSAgICAweDJELDB4QTQsMHhFQyww
eDlCLDB4MTgsMHgyRSwweDAwLDB4MDAsMHgyRCwweEE0LDB4MEQsMHhBNCwweDUwLDB4MDgsMHg5
RCwweDBBLAotICAgIDB4NEUsMHhBQywweDBELDB4OUMsMHhGRCwweDk2LDB4QUUsMHhEQSwweDRF
LDB4QTQsMHgwRCwweEE0LDB4RUEsMHhBQiwweEE3LDB4OUYsCi0gICAgMHg2RSwweEE0LDB4MkQs
MHhBNCwweDdELDB4RTksMHg3RCwweEI1LDB4NEUsMHhBNCwweEVDLDB4OUIsMHg5RSwweDIyLDB4
ODAsMHgwQSwKLSAgICAweDZFLDB4QUMsMHgwRCwweDlDLDB4RDcsMHhCOCwweDJBLDB4MDIsMHg2
RiwweEFDLDB4MEQsMHg5QywweDdGLDB4Q0YsMHhBQSwweEVFLAotICAgIDB4NEUsMHhBNCwweEFC
LDB4OEIsMHg1NywweEE4LDB4QzAsMHgwMiwweDRFLDB4QTQsMHgyQSwweDgzLDB4NTcsMHhGRSww
eEFBLDB4QTAsCi0gICAgMHg0NCwweDQ5LDB4RTIsMHg0MCwweEE1LDB4NkYsMHg1QSwweEZDLDB4
MjMsMHg0OSwweEMyLDB4MzgsMHg4OCwweEVBLDB4RUEsMHg3QSwKLSAgICAweDIzLDB4NDksMHhD
MiwweDM4LDB4RTIsMHhGQSwweEZBLDB4QUQsMHgyMywweDQ5LDB4RTMsMHg0MCwweDhBLDB4RUEs
MHhGQSwweEJGLAotICAgIDB4MjMsMHg0OSwweEUzLDB4NDAsMHg5QSwweEJCLDB4RTksMHhGMCww
eDIzLDB4NDksMHhFMywweDQwLDB4OTYsMHgyNSwweEJGLDB4OUIsCi0gICAgMHgyMywweDQ5LDB4
RTIsMHg0MCwweDgyLDB4QTAsMHgyRSwweDdBLDB4MjMsMHg0MSwweEUyLDB4NDAsMHhBQSwweDM2
LDB4RDcsMHhGNSwKLSAgICAweDAzLDB4NDEsMHhDMSwweDM4LDB4RjgsMHhFOCwweEE4LDB4M0Us
MHgwMiwweDQxLDB4QTEsMHgzOCwweERBLDB4RjgsMHhCQSwweEVFLAotICAgIDB4MDMsMHg0MSww
eEEyLDB4MzgsMHgwMywweEFCLDB4RUYsMHhGQSwweDAzLDB4NDEsMHhDMiwweDM4LDB4ODgsMHg5
RSwweDU3LDB4NUYsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDJGLDB4RkEsMHhCOSwweEY5
LDB4MDIsMHg0MSwweEMyLDB4MzgsMHhFQSwweEVCLDB4NkEsMHhFRiwKLSAgICAweDIzLDB4NDks
MHhDMiwweDM4LDB4REEsMHhGRSwweERDLDB4N0EsMHhFMiwweDQwLDB4QzIsMHgzOCwweDk4LDB4
NzgsMHg2OCwweEE4LAotICAgIDB4MDIsMHg0MSwweEMyLDB4MzgsMHhGRiwweEZFLDB4QjMsMHgw
MywweDAyLDB4NDEsMHhDMiwweDM4LDB4RkUsMHhCNywweEJBLDB4QjgsCi0gICAgMHgwMywweDQx
LDB4RTIsMHg0MCwweDk1LDB4RjUsMHhDRCwweDA2LDB4MDMsMHg0MSwweEUyLDB4NDAsMHhGRiww
eEY4LDB4NzAsMHg1QywKLSAgICAweDAyLDB4NDEsMHhDMiwweDM4LDB4OTcsMHhGRSwweEFFLDB4
QUEsMHgwMywweDQxLDB4QTEsMHgzOCwweDE4LDB4M0EsMHgwQSwweDgyLAotICAgIDB4MjMsMHg0
OSwweEEwLDB4MzgsMHgyRSwweEE4LDB4MkUsMHgyRCwweDY2LDB4NzIsMHg4NCwweDUxLDB4MEIs
MHgwQiwweDA5LDB4QTksCi0gICAgMHg0NiwweDZBLDB4RTUsMHg2MSwweEFBLDB4OUMsMHg4MCww
eDhBLDB4MjcsMHg2QSwweEM1LDB4NTksMHg2RiwweEI3LDB4QUYsMHhBQywKLSAgICAweDA2LDB4
NjIsMHg2MywweDQ5LDB4RkUsMHg1OCwweDc4LDB4NzgsMHg0NCwweDQ5LDB4RTIsMHgzOCwweDdF
LDB4NUUsMHg1RSwweDdDLAotICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHhCRCwweEQ1LDB4QjUs
MHhDRCwweDQzLDB4NDEsMHgwMywweDM5LDB4NzQsMHg1RiwweDVGLDB4NUYsCi0gICAgMHgyMyww
eDM5LDB4RTMsMHgzOCwweDJBLDB4NTcsMHg1QSwweEFCLDB4MjQsMHgzOSwweDAzLDB4MzksMHg4
MSwweEQzLDB4N0YsMHhENywKLSAgICAweDI0LDB4NDEsMHhFMywweDMwLDB4QkEsMHhBQSwweEVE
LDB4NkUsMHgwMywweDM5LDB4RTMsMHgzMCwweDJELDB4RUYsMHg3RSwweEEyLAotICAgIDB4MjMs
MHgzOSwweEUzLDB4MzgsMHgwMCwweDJBLDB4QkQsMHg5RiwweDQzLDB4NDEsMHgwMywweDM5LDB4
NEEsMHg2OSwweEZGLDB4N0YsCi0gICAgMHg0NCwweDQxLDB4RTIsMHgzMCwweEZCLDB4N0EsMHhF
RiwweEUzLDB4MjMsMHgzOSwweEMxLDB4MzAsMHg3RiwweEZELDB4RkIsMHgyOCwKLSAgICAweDAz
LDB4MzksMHhBMSwweDI4LDB4NUYsMHg1NiwweERFLDB4QTgsMHhDMiwweDI4LDB4ODEsMHgyMCww
eDdBLDB4QkEsMHhBMywweDAyLAotICAgIDB4RTMsMHgzMCwweDgxLDB4MjAsMHg2RCwweEJGLDB4
RkMsMHhFQSwweEUzLDB4MzAsMHg4MSwweDIwLDB4NUYsMHhGRiwweDhBLDB4MkEsCi0gICAgMHgw
MywweDMxLDB4QTIsMHgyOCwweEQ1LDB4RjcsMHhCRSwweEE4LDB4RTIsMHgzMCwweDgyLDB4MjAs
MHg1RiwweEFFLDB4MkUsMHgyMiwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RTUsMHhGRiww
eDJGLDB4MjgsMHhFMywweDMwLDB4QzIsMHgyOCwweDZCLDB4NjksMHg2RiwweDU1LAotICAgIDB4
RTMsMHgzMCwweEEyLDB4MjgsMHhFQiwweEE5LDB4RUIsMHhGQSwweEUzLDB4MzAsMHhBMiwweDI4
LDB4QUEsMHhBOSwweEFCLDB4QjgsCi0gICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEY3LDB4Rjcs
MHhGNSwweEI1LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhGMiwweEJBLDB4RkUsMHhBOCwKLSAgICAw
eDAzLDB4MzEsMHhDMiwweDI4LDB4RUEsMHg2QiwweDdGLDB4RkIsMHhFMywweDMwLDB4QzIsMHgy
OCwweDlBLDB4MjcsMHgyMywweDhCLAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHhBQSwweEZB
LDB4RjgsMHhERSwweEUzLDB4MjgsMHhBMiwweDI4LDB4QkEsMHhCQiwweEFFLDB4QUUsCi0gICAg
MHhFMiwweDI4LDB4QTIsMHgyOCwweDVFLDB4RkEsMHhBQSwweDBFLDB4RTMsMHgyOCwweEEyLDB4
MjgsMHhENSwweERFLDB4RDYsMHhFRSwKLSAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4OEEsMHhF
OCwweEQ4LDB4OTgsMHhDMiwweDI4LDB4ODEsMHgyMCwweDJCLDB4QjksMHhFRCwweDVELAotICAg
IDB4RTIsMHgyOCwweEEyLDB4MjAsMHhERSwweEYyLDB4NUQsMHg1NSwweEMyLDB4MjgsMHg4Miww
eDIwLDB4QzIsMHg2MiwweEZBLDB4NjgsCi0gICAgMHhBMiwweDIwLDB4NjEsMHgyMCwweDAwLDB4
ODIsMHhCOCwweDNBLDB4QzIsMHgyOCwweDgxLDB4MjAsMHhFQSwweEZGLDB4RDcsMHg1NywKLSAg
ICAweEEyLDB4MjgsMHg2MSwweDIwLDB4RkEsMHhGQSwweDdBLDB4RjIsMHhBMiwweDI4LDB4ODEs
MHgyMCwweDNGLDB4OTcsMHg5NSwweDNGLAotICAgIDB4QzIsMHgzMCwweDYxLDB4MjAsMHgyRiww
eEZBLDB4NkUsMHhCQSwweEMyLDB4MzAsMHg4MSwweDI4LDB4MjgsMHhGNywweEI1LDB4RUQsCi0g
ICAgMHg0NCwweDQxLDB4QzIsMHgzMCwweDBCLDB4QUQsMHhCRCwweERELDB4MjQsMHgzOSwweEMy
LDB4MzAsMHhEOCwweEJBLDB4QUEsMHhGRSwKLSAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4OTcs
MHhBOCwweEEwLDB4QTIsMHhFMywweDM4LDB4QTIsMHgzMCwweDVFLDB4NUYsMHhERSwweEI4LAot
ICAgIDB4RTIsMHgzMCwweDgxLDB4MjgsMHg3RiwweEVFLDB4QUEsMHhBMiwweEUzLDB4MzAsMHhB
MiwweDI4LDB4OTUsMHgzNywweDJFLDB4QUIsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweERG
LDB4QjYsMHhFQSwweDhBLDB4RTIsMHgzMCwweEEyLDB4MzAsMHgwMSwweDBBLDB4MkEsMHg5QSwK
LSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RkEsMHhCRiwweEFFLDB4MEYsMHg0MywweDQxLDB4
RTMsMHgzOCwweEZCLDB4N0QsMHg3OCwweEVBLAotICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHhG
NSwweDJELDB4RjksMHhBMiwweDY0LDB4NDEsMHhFMywweDM4LDB4NTcsMHhBOCwweDhBLDB4MkEs
Ci0gICAgMHg0NCwweDQxLDB4QzIsMHgzMCwweDVELDB4NUYsMHhFQywweEFBLDB4MjQsMHg0MSww
eEEyLDB4MjgsMHhENSwweEY3LDB4QUEsMHhFOCwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4
ODMsMHgwOCwweDJFLDB4QTcsMHhFMywweDMwLDB4QzIsMHgyOCwweDAwLDB4RTgsMHhCOCwweDdF
LAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhBMCwweEJDLDB4M0UsMHhGQSwweEMyLDB4MzAs
MHhBMiwweDI4LDB4NUUsMHg1RSwweDdDLDB4RkUsCi0gICAgMHhFMiwweDI4LDB4ODIsMHgyOCww
eEM3LDB4RkYsMHhGQiwweEJFLDB4QTIsMHgyOCwweDgxLDB4MjAsMHhBOCwweDZFLDB4MzYsMHgz
MiwKLSAgICAweEMyLDB4MjgsMHg2MSwweDIwLDB4MkYsMHhCRiwweEQ3LDB4QkIsMHhDMiwweDI4
LDB4ODEsMHgyOCwweDAyLDB4OEEsMHhGMiwweEU4LAotICAgIDB4QzIsMHgyOCwweEEyLDB4Mjgs
MHgzRSwweDI3LDB4QjksMHgwRCwweEMyLDB4MzAsMHg4MiwweDI4LDB4NkUsMHhBOCwweEZBLDB4
QzAsCi0gICAgMHhDMiwweDI4LDB4ODEsMHgyOCwweEI1LDB4OTcsMHg5RiwweEJFLDB4RTIsMHgz
MCwweEEyLDB4MjgsMHhCRiwweDlGLDB4OUYsMHg5NSwKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4
LDB4RkIsMHhGRiwweEVGLDB4MkIsMHgwMywweDM5LDB4QzIsMHgzMCwweDVGLDB4NUEsMHhGOCww
eEMwLAotICAgIDB4RTIsMHgzMCwweEEyLDB4MzAsMHg4OCwweEJCLDB4QkIsMHhBMiwweDAzLDB4
MzksMHhDMSwweDMwLDB4QkQsMHhCRiwweEFCLDB4QTMsCi0gICAgMHgyMywweDQxLDB4RTIsMHgz
OCwweEFELDB4RTcsMHhGNywweEJGLDB4NjQsMHg0OSwweDAzLDB4MzksMHg4MCwweEUzLDB4RkIs
MHhFRCwKLSAgICAweDY0LDB4NDksMHgwMiwweDM5LDB4N0UsMHhGQSwweEE5LDB4OEIsMHhDNSww
eDUxLDB4NDMsMHg0MSwweEJELDB4MEYsMHhBRiwweEZGLAotICAgIDB4RTYsMHg1OSwweDY0LDB4
NTEsMHhBNSwweEJFLDB4RUEsMHgzNywweDY4LDB4NkEsMHhDNiwweDU5LDB4QkQsMHgyQiwweDNE
LDB4MkIsCi0gICAgMHhFQSwweDgyLDB4NjgsMHg2QSwweDI5LDB4MkIsMHgwRCwweDJGLDB4MkEs
MHg4MywweENBLDB4N0EsMHhBQSwweEE4LDB4QkIsMHhCNiwKLSAgICAweDJBLDB4ODMsMHhFQSww
eDdBLDB4RUUsMHg2MiwweDZBLDB4RkIsMHgyQSwweDgzLDB4RUEsMHg3QSwweERFLDB4RkYsMHhE
RCwweEM5LAotICAgIDB4MkIsMHg4MywweEM4LDB4N0EsMHhBQiwweDJCLDB4QTUsMHg3NywweDJB
LDB4ODMsMHhDOSwweDdBLDB4MEYsMHhCQywweEZFLDB4NkYsCi0gICAgMHg2QiwweDhCLDB4Qzks
MHg3QSwweDJGLDB4QUYsMHhFRCwweEZELDB4OEMsMHg5MywweEVBLDB4N0EsMHgwMCwweDAyLDB4
RUIsMHhGNSwKLSAgICAweDBELDB4QTQsMHgwQSwweDgzLDB4MDIsMHhBRSwweEZELDB4N0QsMHhF
RiwweEJDLDB4NkIsMHg4QiwweDBBLDB4QUIsMHhGNSwweEQ1LAotICAgIDB4RjAsMHhCQywweDhD
LDB4OTMsMHgwMCwweDAwLDB4QUIsMHhCRCwweEYwLDB4QkMsMHg5MCwweEI0LDB4MjAsMHgwMiww
eDAzLDB4RkQsCi0gICAgMHgzMCwweEM1LDB4Q0YsMHhCQywweEVGLDB4QkIsMHhCQSwweEYxLDB4
MTAsMHhDNSwweDhGLDB4QjQsMHg2QywweEY4LDB4RTgsMHhFOCwKLSAgICAweEFGLDB4QjQsMHgy
RCwweEE0LDB4REEsMHhFOCwweEU4LDB4RkIsMHg2RSwweEFDLDB4MEMsMHhBNCwweEE2LDB4MjMs
MHgyRiwweDg4LAotICAgIDB4NkUsMHhBQywweDJFLDB4QTQsMHg3RSwweEUwLDB4RjMsMHg4MCww
eDZGLDB4QUMsMHgyRSwweEE0LDB4N0YsMHg1NywweEQ3LDB4RkUsCi0gICAgMHg2RSwweEFDLDB4
MEQsMHhBNCwweDc2LDB4N0YsMHhCRiwweENBLDB4NEUsMHhBQywweDBELDB4OUMsMHhBRCwweEUz
LDB4MDIsMHg4QSwKLSAgICAweDRFLDB4QUMsMHgwRCwweEE0LDB4MkIsMHgzQiwweENBLDB4QTAs
MHg2RSwweEFDLDB4MEQsMHhBNCwweEFELDB4RkEsMHgyMiwweDJFLAotICAgIDB4OEYsMHhCNCww
eDJELDB4QUMsMHhCQSwweEU2LDB4QkIsMHhBQSwweDZFLDB4QUMsMHgyRSwweEE0LDB4NkEsMHhF
QSwweDZFLDB4M0EsCi0gICAgMHg2RSwweEFDLDB4MkUsMHhBNCwweEVGLDB4QkYsMHhBQSwweEE4
LDB4NEUsMHhBNCwweDBELDB4OUMsMHhGMCwweDY4LDB4RjgsMHgwMCwKLSAgICAweDIzLDB4NDks
MHhDMiwweDM4LDB4ODgsMHhGQSwweEZCLDB4NjgsMHgwMiwweDQxLDB4QzIsMHgzOCwweDdCLDB4
RkQsMHhGRCwweEI3LAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhCMiwweEVBLDB4QkMsMHgw
RSwweDIzLDB4NDEsMHhDMiwweDQwLDB4N0UsMHhGQSwweEEyLDB4QUEsCi0gICAgMHgyMywweDQ5
LDB4RTMsMHg0MCwweDIzLDB4MEIsMHhBRiwweEY3LDB4MjMsMHg0OSwweEUzLDB4NDAsMHgzQiww
eDI4LDB4OEYsMHg4QywKLSAgICAweDIzLDB4NDEsMHhFMiwweDQwLDB4REYsMHgyMCwweDg4LDB4
NzcsMHgwMywweDQxLDB4RTIsMHgzOCwweEFGLDB4RjAsMHhFQiwweDg5LAotICAgIDB4MDIsMHg0
MSwweEMyLDB4MzgsMHhBRiwweEVGLDB4QzcsMHhGQiwweEUyLDB4NDAsMHhDMiwweDM4LDB4MzYs
MHg5RiwweEU3LDB4NzcsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEMyLDB4RTMsMHhCNSww
eEI1LDB4MDQsMHg0MSwweEMyLDB4MzgsMHhFMiwweEZBLDB4NzYsMHg1NywKLSAgICAweDAzLDB4
NDEsMHhDMiwweDM4LDB4QkYsMHhCNiwweEJFLDB4QUYsMHgyMywweDQxLDB4RTIsMHg0MCwweEVE
LDB4RkQsMHg5NSwweDhCLAotICAgIDB4MjMsMHg0OSwweEMyLDB4MzgsMHhERSwweEZGLDB4REYs
MHgzNSwweDAzLDB4NDEsMHhDMiwweDM4LDB4RkEsMHhBRSwweEZGLDB4QUEsCi0gICAgMHgwMyww
eDQxLDB4RTIsMHgzOCwweEZCLDB4NkIsMHg4QSwweDI1LDB4MjMsMHg0MSwweEMyLDB4MzgsMHhB
NywweDJGLDB4OEIsMHhGQiwKLSAgICAweDAyLDB4NDEsMHhDMiwweDM4LDB4QTgsMHg5QSwweEZG
LDB4REIsMHgyMywweDQxLDB4QzIsMHgzOCwweEZBLDB4RkQsMHhGRCwweDM1LAotICAgIDB4MDMs
MHg0MSwweEUyLDB4MzgsMHhFRiwweDQyLDB4NkYsMHg4RSwweDAzLDB4NDEsMHhBMSwweDM4LDB4
ODgsMHhBMiwweEJGLDB4MjcsCi0gICAgMHgyMywweDQ5LDB4QzIsMHg0MCwweEI1LDB4MTcsMHg5
RSwweEJGLDB4NjYsMHg3MiwweDQ0LDB4NTEsMHgyQiwweEE5LDB4MkQsMHgwRCwKLSAgICAweDg3
LDB4NzIsMHgwNiwweDYyLDB4RkYsMHg3QSwweDc4LDB4RkMsMHgyNiwweDZBLDB4RTUsMHg1OSww
eEVBLDB4OTgsMHhBQSwweDhBLAotICAgIDB4MDYsMHg2MiwweDY0LDB4NDksMHg2OCwweDcwLDB4
NkMsMHhGQSwweDQ0LDB4NDEsMHhFMywweDM4LDB4N0UsMHg3QywweEZGLDB4REYsCi0gICAgMHgw
MywweDM5LDB4QzIsMHgzMCwweDAzLDB4MEEsMHgwMiwweEFCLDB4MDMsMHgzOSwweEUyLDB4MzAs
MHgwMCwweDIwLDB4MEYsMHgwMywKLSAgICAweDIzLDB4MzksMHhFMywweDM4LDB4MDEsMHgyQiww
eEZFLDB4NUYsMHgyNCwweDQxLDB4MDMsMHgzOSwweDU2LDB4NzcsMHg3MywweDU3LAotICAgIDB4
MjMsMHg0MSwweEUzLDB4MzAsMHg4RSwweEZELDB4QjIsMHhBQSwweDI0LDB4MzksMHgwMywweDM5
LDB4NDIsMHg1RiwweEE5LDB4N0UsCi0gICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweDVGLDB4NEIs
MHg4MiwweDAzLDB4NDQsMHg0MSwweEUyLDB4MzAsMHg1RiwweDdGLDB4RTIsMHhFMCwKLSAgICAw
eDIzLDB4MzksMHhFMywweDM4LDB4RjUsMHg3RCwweEZGLDB4ODIsMHgyMywweDM5LDB4RTMsMHgz
OCwweDAyLDB4MDIsMHhGRSwweEY5LAotICAgIDB4NDQsMHgzOSwweEUzLDB4MzAsMHhGRiwweEZG
LDB4QUYsMHg4OSwweDI0LDB4MzksMHhDMiwweDMwLDB4REYsMHhGQSwweEU4LDB4MkEsCi0gICAg
MHgwMywweDMxLDB4QzIsMHgyOCwweEQ1LDB4RkQsMHhCQSwweDgwLDB4MDMsMHgzMSwweEMyLDB4
MjgsMHhCRiwweEZGLDB4NkEsMHg2MCwKLSAgICAweDAzLDB4MzEsMHhFMywweDMwLDB4NkQsMHhB
RCwweEZFLDB4RjksMHgwMywweDMxLDB4QzIsMHgyOCwweEVFLDB4QUYsMHgwQSwweEMyLAotICAg
IDB4MDMsMHgzMSwweEMyLDB4MjgsMHhCOSwweDg4LDB4MDAsMHgwMCwweDI0LDB4MzksMHhDMiww
eDMwLDB4NzcsMHhGMiwweEEyLDB4RTIsCi0gICAgMHgyNCwweDMxLDB4QzIsMHgzMCwweDdGLDB4
RUYsMHhBRSwweEEyLDB4RTMsMHgzMCwweEMyLDB4MzAsMHhEQiwweEFCLDB4MjAsMHg4MiwKLSAg
ICAweDAzLDB4MzksMHhBMiwweDI4LDB4RkYsMHhGNywweEE4LDB4Q0EsMHgyNCwweDM5LDB4QzIs
MHgzMCwweDdDLDB4RjUsMHg3NSwweEZELAotICAgIDB4MjMsMHgzMSwweEUzLDB4MzAsMHg1RCww
eERCLDB4N0IsMHg1RCwweDAzLDB4MzEsMHhDMiwweDI4LDB4QkYsMHgyRSwweEZGLDB4RjUsCi0g
ICAgMHgwMywweDMxLDB4QTIsMHgyOCwweEZFLDB4QjgsMHhGQSwweEE5LDB4RTMsMHgzMCwweEEy
LDB4MjgsMHhBQSwweEVBLDB4NDAsMHg4MiwKLSAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4OUQs
MHg5RiwweEFELDB4MEQsMHhBMiwweDMwLDB4RTMsMHgyOCwweEI5LDB4NzksMHg3RCwweEZELAot
ICAgIDB4RTMsMHgyOCwweDgyLDB4MjAsMHhERiwweDlFLDB4ODgsMHgwOCwweEMzLDB4MjgsMHg4
MSwweDIwLDB4NUIsMHhGMywweEUyLDB4QTgsCi0gICAgMHhDMywweDI4LDB4ODIsMHgyMCwweEZC
LDB4RkYsMHhGQSwweDZCLDB4QzIsMHgyOCwweDgyLDB4MjAsMHg3RSwweDVGLDB4N0UsMHg3QSwK
LSAgICAweEEyLDB4MjgsMHg4MiwweDIwLDB4NTUsMHhEOSwweEI2LDB4QUEsMHg2MSwweDI4LDB4
QTIsMHgyMCwweEJGLDB4QTUsMHhCRCwweEZELAotICAgIDB4QTIsMHgyMCwweDYxLDB4MjAsMHhC
OCwweEJGLDB4REUsMHhGOCwweEEyLDB4MjgsMHg4MiwweDIwLDB4MkEsMHhGMywweDU5LDB4RDUs
Ci0gICAgMHhBMiwweDI4LDB4ODIsMHgyMCwweEFFLDB4OTcsMHhERiwweDdCLDB4QTIsMHgyOCww
eDgyLDB4MjAsMHgwQiwweDBELDB4MDIsMHhDMiwKLSAgICAweEUzLDB4MzAsMHg4MiwweDI4LDB4
MkYsMHgzRiwweDNELDB4M0QsMHgyMywweDM5LDB4QzIsMHgzMCwweDdBLDB4RUIsMHhGQSwweEY4
LAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhBRSwweEJGLDB4RjcsMHhFMCwweEUzLDB4MzAs
MHhBMiwweDI4LDB4ODIsMHgzRSwweDJGLDB4MkYsCi0gICAgMHgyMywweDM5LDB4QzIsMHgzMCww
eERGLDB4OUYsMHg3RSwweEZDLDB4RTIsMHgzMCwweEMxLDB4MzAsMHg4MCwweDgwLDB4QTcsMHg1
NiwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QUIsMHhBQSwweEFCLDB4MEYsMHgyMywweDM5
LDB4QzIsMHgzMCwweERGLDB4QkUsMHhFQSwweEU4LAotICAgIDB4MjMsMHgzOSwweEMyLDB4MzAs
MHgyMywweDA5LDB4QUIsMHhGNywweDQ0LDB4NDEsMHhFMiwweDM4LDB4M0EsMHhCRSwweEZFLDB4
QkQsCi0gICAgMHg2NCwweDQ5LDB4MjQsMHg0MSwweDhFLDB4QUQsMHhBRCwweEE1LDB4NjQsMHg0
MSwweDI0LDB4NDEsMHhCRiwweDhCLDB4ODgsMHhDMCwKLSAgICAweDY0LDB4NDEsMHhFMywweDMw
LDB4RkUsMHg3QywweDdBLDB4RjAsMHgyNCwweDM5LDB4QzIsMHgzMCwweDYyLDB4RkYsMHg3Nyww
eDc3LAotICAgIDB4RTIsMHgzMCwweDgyLDB4MjgsMHgyRSwweEFFLDB4RTcsMHhGRSwweEUzLDB4
MzAsMHhBMSwweDI4LDB4RDcsMHhCRCwweEVCLDB4MEIsCi0gICAgMHgwMywweDM5LDB4QTIsMHgy
OCwweEFELDB4OEIsMHhCRiwweENCLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhBRiwweDJFLDB4M0Es
MHg5QywKLSAgICAweEMyLDB4MzAsMHg4MiwweDI4LDB4RUUsMHhGQywweEI4LDB4QkEsMHhBMiww
eDI4LDB4ODEsMHgyMCwweDMwLDB4RjgsMHgzRSwweDA2LAotICAgIDB4QzIsMHgyOCwweDgxLDB4
MjAsMHhBQSwweDFCLDB4REUsMHgyRSwweEMyLDB4MjgsMHg2MSwweDI4LDB4RTgsMHgyQSwweEEw
LDB4QTgsCi0gICAgMHgwMiwweDMxLDB4QTIsMHgyOCwweDM1LDB4RjUsMHhGRiwweEZGLDB4RTIs
MHgzMCwweEEyLDB4MjgsMHg3QSwweDVBLDB4NzgsMHg1QSwKLSAgICAweEMyLDB4MjgsMHg4MSww
eDIwLDB4QjYsMHhFRSwweEFGLDB4MEQsMHgwMywweDMxLDB4ODIsMHgyOCwweEZGLDB4QkUsMHhF
QiwweDhELAotICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHgyRCwweDBGLDB4ODksMHhBRiwweDIz
LDB4MzksMHhFMywweDMwLDB4QzAsMHg4MCwweDAxLDB4MEYsCi0gICAgMHgyMywweDM5LDB4RTIs
MHgzMCwweDU3LDB4RkEsMHhGRSwweDI4LDB4NDQsMHg0MSwweEUyLDB4MzgsMHg3QiwweEU4LDB4
ODMsMHg4MiwKLSAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4NkYsMHhGQSwweDIyLDB4MDAsMHg2
NCwweDQ5LDB4MDIsMHgzOSwweENELDB4QkQsMHhCRiwweEZGLAotICAgIDB4ODUsMHg1MSwweDIz
LDB4NDEsMHhBOSwweDhCLDB4OEIsMHgyQSwweDg1LDB4NTEsMHg2NCwweDQ5LDB4MDksMHhDQSww
eEYyLDB4MkUsCi0gICAgMHgwNiwweDYyLDB4NjQsMHg1MSwweEFGLDB4MzksMHhBRCwweDJGLDB4
QzksMHg3QSwweDI2LDB4NjIsMHhCRCwweEE1LDB4QUQsMHgyRCwKLSAgICAweEU5LDB4N0EsMHhB
OSwweDcyLDB4MjUsMHgyMSwweEFBLDB4QUMsMHgwQSwweDgzLDB4QTksMHg3QSwweDI4LDB4QTIs
MHg1QSwweDZBLAotICAgIDB4MEEsMHg4MywweEM5LDB4N0EsMHhCMCwweEExLDB4QjUsMHhCRCww
eDBBLDB4ODMsMHhDOSwweDdBLDB4QUIsMHhGRiwweEVCLDB4N0YsCi0gICAgMHgwQSwweDgzLDB4
QzksMHg3QSwweEVDLDB4MDIsMHgyMywweDJELDB4MkIsMHg4MywweEM5LDB4N0EsMHhBRiwweEZG
LDB4QTAsMHhBMCwKLSAgICAweDJCLDB4ODMsMHhBOSwweDdBLDB4OEIsMHhGQSwweDdBLDB4RjAs
MHgwQSwweDgzLDB4QzksMHg3QSwweDZFLDB4QkEsMHgwMSwweDI5LAotICAgIDB4MkEsMHg4Myww
eEVBLDB4ODIsMHg4RCwweDhELDB4QTIsMHhGMCwweDZDLDB4OEIsMHgwQSwweDgzLDB4MDksMHhC
NSwweEJELDB4QjcsCi0gICAgMHhBRCwweDkzLDB4MEEsMHg4MywweDBBLDB4QUYsMHg5RiwweEQ3
LDB4NkYsMHhBQywweDBBLDB4ODMsMHgwMiwweEFGLDB4RkYsMHhGRCwKLSAgICAweEQwLDB4QkMs
MHg0QiwweDhCLDB4MDAsMHgyQSwweEFGLDB4RjUsMHgxMCwweEJELDB4MEQsMHhBNCwweDIwLDB4
QTgsMHhDQiwweEY1LAotICAgIDB4Q0YsMHhCNCwweDRFLDB4QUMsMHg1QywweDdDLDB4RkEsMHg3
RiwweDhGLDB4QjQsMHg0RSwweEFDLDB4NjksMHhCMSwweDJGLDB4RDcsCi0gICAgMHhBRiwweEI0
LDB4NEUsMHhBQywweDdGLDB4OUIsMHhEMywweEIzLDB4OEYsMHhCNCwweDRFLDB4QUMsMHhENyww
eDdGLDB4QkUsMHg4OCwKLSAgICAweDhGLDB4QjQsMHg0RSwweEFDLDB4NTcsMHgzQSwweDhBLDB4
Q0EsMHg2RSwweEFDLDB4MkQsMHhBNCwweEI2LDB4QkMsMHgyQywweDJBLAotICAgIDB4OEYsMHhB
QywweDRFLDB4QUMsMHg1RSwweDdGLDB4NkIsMHhBRiwweEFFLDB4QUMsMHg0RSwweEFDLDB4NUQs
MHhGRCwweDdELDB4RkUsCi0gICAgMHg4RiwweEI0LDB4MkQsMHhBNCwweEJBLDB4QjksMHhBQiww
eEEwLDB4QUYsMHhBQywweDRELDB4QUMsMHg5RiwweEY1LDB4RjcsMHhGRiwKLSAgICAweDZFLDB4
QjQsMHg0RSwweEE0LDB4MkEsMHhFQSwweEY4LDB4RjgsMHg4RiwweEFDLDB4NEUsMHhBQywweDVF
LDB4NUQsMHhGOSwweDZBLAotICAgIDB4MjMsMHg0OSwweEMyLDB4NDAsMHhGRSwweEJBLDB4RkUs
MHhFNywweDAyLDB4NDEsMHhDMiwweDM4LDB4QkYsMHhFRSwweEJGLDB4QkEsCi0gICAgMHgwMyww
eDQxLDB4RTIsMHg0MCwweDBCLDB4MDEsMHg4MSwweEFBLDB4MjMsMHg0MSwweEUyLDB4NDAsMHgy
NywweEI5LDB4MEYsMHhGRCwKLSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4QkYsMHgyRiwweDg3
LDB4MzksMHgyMywweDQ5LDB4RTIsMHgzOCwweEU4LDB4NTgsMHhERiwweDk2LAotICAgIDB4MjMs
MHg0MSwweEMyLDB4NDAsMHhCOSwweEFCLDB4QkEsMHhCOCwweDAzLDB4NDEsMHhDMiwweDM4LDB4
QUIsMHg3RiwweEQ4LDB4NUMsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDhCLDB4QzEsMHhG
MywweDVFLDB4MDMsMHg0MSwweEExLDB4MzgsMHhBRiwweEE4LDB4MDIsMHgyRiwKLSAgICAweDAz
LDB4NDEsMHhDMiwweDM4LDB4RUYsMHhBMiwweDYwLDB4QUEsMHgwMywweDQxLDB4QzIsMHgzOCww
eDM3LDB4ODIsMHhDMywweEFGLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHgzRSwweEZBLDB4
RjksMHhCRiwweDAzLDB4NDEsMHhDMiwweDM4LDB4QzIsMHg2OCwweDRFLDB4RkYsCi0gICAgMHgw
MiwweDQxLDB4QTEsMHgzOCwweDNELDB4QUUsMHhBRSwweEFBLDB4MDMsMHg0MSwweEMyLDB4Mzgs
MHgwMiwweEIyLDB4QUQsMHg4RSwKLSAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4N0YsMHg3Riww
eEVELDB4QUQsMHgwMiwweDQxLDB4QzEsMHgzOCwweEU5LDB4MzgsMHhGMiwweEVCLAotICAgIDB4
RTIsMHg0MCwweEMyLDB4MzgsMHhEQSwweEYwLDB4MDIsMHgwQiwweDAyLDB4NDEsMHhDMiwweDM4
LDB4RUUsMHhGNywweDVFLDB4OUEsCi0gICAgMHhFMiwweDQwLDB4QzIsMHgzOCwweDA4LDB4MkMs
MHgxQiwweDAyLDB4RTIsMHg0MCwweEMyLDB4MzgsMHgyNywweEEyLDB4RTAsMHhDQSwKLSAgICAw
eDAzLDB4NDksMHhFMiwweDM4LDB4QjYsMHhCNywweEJGLDB4QUQsMHg0NiwweDZBLDB4NDMsMHg0
OSwweDBCLDB4MDksMHgwRCwweDBELAotICAgIDB4ODYsMHg3MiwweDI1LDB4NkEsMHhGRSwweEZF
LDB4NkEsMHg2MCwweDI2LDB4NkEsMHhFNSwweDYxLDB4RjgsMHg3QywweDcwLDB4MTIsCi0gICAg
MHgwNSwweDYyLDB4MjMsMHg0MSwweDcwLDB4RTAsMHhFOCwweEEwLDB4MjMsMHg0MSwweEMyLDB4
MzAsMHhBQSwweDk4LDB4RDgsMHhGOCwKLSAgICAweDAzLDB4MzksMHhFMiwweDMwLDB4RUYsMHhF
QSwweDdBLDB4NUIsMHgwMywweDM5LDB4RTIsMHgzMCwweEFCLDB4MkQsMHgzNSwweDk1LAotICAg
IDB4MjQsMHgzOSwweEMzLDB4MzAsMHhGRSwweDlFLDB4RjIsMHhGQSwweDAzLDB4MzksMHhFMyww
eDMwLDB4RTgsMHg2RSwweEUzLDB4RUUsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzOCwweDJCLDB4
QkQsMHhFRiwweEZELDB4MjMsMHgzOSwweEUyLDB4MzgsMHhBOCwweDA4LDB4QkUsMHg3RiwKLSAg
ICAweDIzLDB4MzksMHhFMiwweDM4LDB4MDIsMHgwRSwweEFGLDB4QUIsMHg0NCwweDM5LDB4RTMs
MHgzMCwweENBLDB4OEEsMHhGNywweEJFLAotICAgIDB4NDQsMHg0MSwweEUzLDB4MzAsMHhFMiww
eEFBLDB4M0EsMHhCRiwweDY0LDB4NDEsMHhFMywweDMwLDB4N0QsMHg3QiwweEYwLDB4RTIsCi0g
ICAgMHg0NCwweDQxLDB4RTMsMHgzMCwweEY1LDB4NTUsMHhGQiwweEEyLDB4MjQsMHgzOSwweEUz
LDB4MzAsMHgyQiwweDg3LDB4NUIsMHg3QiwKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4QTAs
MHhBOCwweEVCLDB4QjksMHgyNCwweDM5LDB4RTMsMHgzMCwweDdBLDB4RkEsMHhCRSwweEIyLAot
ICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhFNywweEZFLDB4QkEsMHhCQSwweDIzLDB4MzksMHhF
MywweDMwLDB4MUYsMHhCQiwweEEyLDB4ODAsCi0gICAgMHg0NCwweDM5LDB4RTMsMHgzMCwweEZD
LDB4REYsMHhENSwweEZCLDB4MjQsMHgzOSwweEUzLDB4MzAsMHg4MiwweEFBLDB4QkQsMHhBRSwK
LSAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4OEEsMHgzQSwweEFCLDB4RUQsMHgyNCwweDM5LDB4
RTMsMHgzMCwweDdGLDB4RkMsMHhGQywweEZFLAotICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHg0
QiwweDhBLDB4OEEsMHhBRSwweDAzLDB4MzksMHhFMywweDMwLDB4NTksMHg4MiwweDA2LDB4MjUs
Ci0gICAgMHgyNCwweDM5LDB4QzIsMHgyOCwweDVCLDB4RkIsMHhBMiwweEUyLDB4MDMsMHgzMSww
eEMyLDB4MjgsMHhGNSwweEZGLDB4RUUsMHhBOCwKLSAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4
QkEsMHhFQSwweEU3LDB4QTgsMHgwMywweDMxLDB4QzIsMHgyOCwweDRCLDB4QkQsMHhCNSwweEFG
LAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhBRiwweERFLDB4OTQsMHhGOCwweDAzLDB4MzEs
MHhDMywweDI4LDB4NUEsMHhGQSwweEZFLDB4QkUsCi0gICAgMHgwMywweDMxLDB4QzMsMHgyOCww
eDc1LDB4NTUsMHhERSwweDZCLDB4RTMsMHgyOCwweEEyLDB4MjAsMHhERSwweEJFLDB4QkEsMHhB
QSwKLSAgICAweEMzLDB4MjgsMHg4MiwweDIwLDB4OEEsMHhFMCwweDQwLDB4ODAsMHhDMiwweDI4
LDB4ODIsMHgyMCwweDdBLDB4QUEsMHhBQSwweDMwLAotICAgIDB4QzIsMHgyOCwweEEyLDB4MjAs
MHg3RCwweDM1LDB4QUIsMHhFQywweEMzLDB4MjgsMHg4MiwweDIwLDB4NTcsMHhEQywweEQ4LDB4
N0IsCi0gICAgMHhDMywweDI4LDB4ODIsMHgyMCwweDVFLDB4NUYsMHhGQiwweDJBLDB4QzIsMHgy
OCwweDYyLDB4MTgsMHhBRiwweEFCLDB4RUEsMHhBOCwKLSAgICAweEEyLDB4MjgsMHg2MiwweDIw
LDB4M0EsMHhGOCwweEJFLDB4QkUsMHhBMiwweDI4LDB4ODIsMHgyMCwweEEwLDB4RUUsMHhFRiww
eERGLAotICAgIDB4QzMsMHgzMCwweDgxLDB4MjAsMHgwQiwweDJCLDB4QkYsMHhFRCwweDAzLDB4
MzEsMHhBMiwweDI4LDB4ODAsMHgyMiwweEZCLDB4NTUsCi0gICAgMHhFMywweDMwLDB4QTIsMHgy
OCwweEMwLDB4QzAsMHhFMywweEE1LDB4RTMsMHgzMCwweEEyLDB4MjgsMHg5RiwweEZCLDB4NkIs
MHhFRSwKLSAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4MkIsMHgyRiwweEFELDB4RUYsMHgwMyww
eDM5LDB4QzIsMHgzMCwweEZBLDB4OEEsMHg4QiwweEFCLAotICAgIDB4MDMsMHgzOSwweEUzLDB4
MzAsMHhGRCwweEFFLDB4MjMsMHgwMiwweDAzLDB4MzksMHhBMiwweDI4LDB4QTIsMHhFQSwweEVB
LDB4N0UsCi0gICAgMHhDMiwweDMwLDB4ODEsMHgyOCwweDA4LDB4OEEsMHhFQiwweEVBLDB4MDMs
MHgzOSwweEExLDB4MzAsMHhBQSwweDJGLDB4RUIsMHhBRCwKLSAgICAweDQ0LDB4NDEsMHhDMiww
eDMwLDB4MDIsMHgyQiwweEVGLDB4RDcsMHg2NSwweDQ5LDB4RTIsMHgzMCwweEEwLDB4QTIsMHhB
RiwweEQ1LAotICAgIDB4NjUsMHg0OSwweDAzLDB4MzksMHhGMiwweEYyLDB4OEIsMHhFOSwweDI0
LDB4NDEsMHhBMiwweDMwLDB4NzIsMHhFOCwweEU4LDB4RkEsCi0gICAgMHhFMywweDMwLDB4ODIs
MHgyOCwweEZFLDB4REYsMHhGQSwweEI4LDB4RTMsMHgzMCwweDgxLDB4MjgsMHgwOSwweEFGLDB4
QkIsMHhBRSwKLSAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4OEIsMHhCQiwweEY2LDB4QkYsMHgw
MywweDM5LDB4QTIsMHgyOCwweEZFLDB4QUUsMHhGQSwweDcyLAotICAgIDB4QzIsMHgzMCwweDgy
LDB4MjgsMHhGRSwweEVDLDB4OTgsMHhGOCwweEMyLDB4MzAsMHg4MSwweDI4LDB4MzcsMHhGNiww
eEUyLDB4QTAsCi0gICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweEE2LDB4QUIsMHg4OSwweEFELDB4
RTIsMHgzMCwweEExLDB4MjgsMHhGNSwweEY1LDB4RUUsMHhBOCwKLSAgICAweEUyLDB4MzAsMHg4
MiwweDI4LDB4QjksMHhFQSwweEJBLDB4MDIsMHhFMywweDMwLDB4QTEsMHgyOCwweDVBLDB4QjMs
MHhFQSwweEVBLAotICAgIDB4QzIsMHgyOCwweDgxLDB4MjgsMHgwNSwweEFGLDB4QkYsMHhCRSww
eDIzLDB4MzksMHhDMiwweDI4LDB4MjUsMHhGNSwweDVELDB4RDcsCi0gICAgMHgyNCwweDM5LDB4
QzMsMHgzMCwweDM2LDB4QUIsMHhFOSwweEVFLDB4MjMsMHgzOSwweEMyLDB4MzAsMHgwRiwweEY5
LDB4NUYsMHhFRiwKLSAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4MzgsMHgwRCwweDJCLDB4MDMs
MHg2NCwweDQ5LDB4MjMsMHg0MSwweEI1LDB4MDUsMHhBNSwweEQ1LAotICAgIDB4NjMsMHg0OSww
eDAzLDB4MzksMHhGRiwweEZGLDB4RUYsMHhGQywweDQ0LDB4NDksMHgwMywweDQxLDB4RjUsMHgw
NSwweEZELDB4OTcsCi0gICAgMHhBNSwweDUxLDB4MjMsMHg0MSwweDJGLDB4MkYsMHgyRCwweDM1
LDB4NDcsMHg2QSwweDg0LDB4NDksMHhGNSwweEJELDB4QTcsMHgwRiwKLSAgICAweDY4LDB4NkEs
MHhDNSwweDU5LDB4RjUsMHgyRCwweDAyLDB4MDgsMHhDOSwweDdBLDB4NjgsMHg2QSwweDFELDB4
OUQsMHhBOSwweDhGLAotICAgIDB4RTksMHg3QSwweEE5LDB4NzIsMHhCNiwweDI3LDB4Q0QsMHgw
QiwweDBBLDB4ODMsMHhDOSwweDdBLDB4NUEsMHg2MiwweDU5LDB4NTUsCi0gICAgMHhFOSwweDdB
LDB4QTksMHg3QSwweDhBLDB4OEUsMHhBQSwweEZFLDB4MEEsMHg4MywweEE5LDB4NzIsMHgzRCww
eEFGLDB4MDMsMHhCOCwKLSAgICAweDBBLDB4ODMsMHhBOSwweDcyLDB4ODksMHg4RSwweEJCLDB4
RUIsMHgyQSwweDgzLDB4QzgsMHg3QSwweDIwLDB4RUEsMHhBQiwweDJELAotICAgIDB4NEIsMHg4
QiwweEVBLDB4N0EsMHhFMywweEVFLDB4REUsMHhGQSwweDJBLDB4ODMsMHhFQSwweDdBLDB4QkYs
MHhCRSwweDhCLDB4QUIsCi0gICAgMHg0QiwweDhCLDB4RUEsMHg3QSwweEJGLDB4OEYsMHhFRSww
eDU3LDB4MkEsMHg4MywweEU5LDB4N0EsMHgyOCwweDJBLDB4RUUsMHhCNywKLSAgICAweDRBLDB4
OEIsMHhFOSwweDdBLDB4RjgsMHhGQiwweEYzLDB4RkIsMHg0QiwweDhCLDB4RUEsMHg3QSwweDAx
LDB4QkIsMHgzQSwweEI4LAotICAgIDB4NkIsMHg4QiwweDBBLDB4ODMsMHgwMiwweEZFLDB4RDcs
MHhERSwweEVDLDB4OUIsMHgyQSwweDgzLDB4MEEsMHhCQiwweDlELDB4NzUsCi0gICAgMHgyRCww
eEE0LDB4MjksMHg4MywweDAwLDB4MkEsMHhGRiwweDU1LDB4NEUsMHhBQywweDZCLDB4OEIsMHgw
MCwweDAwLDB4MkIsMHhERCwKLSAgICAweDhGLDB4QjQsMHhDRCwweDlCLDB4MDAsMHgwQSwweDBB
LDB4QTksMHhBRiwweEI0LDB4NEUsMHhBQywweEVFLDB4OEEsMHhBQSwweDdGLAotICAgIDB4OEYs
MHhCNCwweDZFLDB4QUMsMHg3RCwweEFELDB4QTIsMHg2RSwweDhGLDB4QjQsMHgyRCwweEE0LDB4
REEsMHhBQSwweEE4LDB4QjIsCi0gICAgMHg4RiwweEI0LDB4NkUsMHhBQywweEQ2LDB4QkMsMHhF
NSwweDNFLDB4OEYsMHhCNCwweDRFLDB4QUMsMHgwQSwweEFFLDB4OEUsMHhBNCwKLSAgICAweEFG
LDB4QjQsMHg2RSwweEFDLDB4RkYsMHg3NSwweEU3LDB4RkEsMHhBRiwweEI0LDB4NEQsMHhBQyww
eDM3LDB4QTcsMHgyQSwweEFBLAotICAgIDB4QUYsMHhCNCwweDRELDB4QUMsMHhGNywweDZFLDB4
MjgsMHgyOCwweEQwLDB4QjQsMHg2RSwweEFDLDB4NzcsMHg3RSwweEVBLDB4QUEsCi0gICAgMHgy
MywweDQxLDB4RTIsMHg0MCwweDc1LDB4QkQsMHhDQiwweEEyLDB4MjMsMHg0MSwweEUyLDB4NDAs
MHg3RiwweEVGLDB4NkMsMHhGQiwKLSAgICAweDAzLDB4NDEsMHhFMiwweDQwLDB4NEIsMHhGMyww
eDUzLDB4NzMsMHgyMywweDQ5LDB4QzIsMHgzOCwweEZGLDB4RkYsMHhGRiwweDNFLAotICAgIDB4
MjMsMHg0MSwweEMyLDB4MzgsMHgyQiwweDdGLDB4RUEsMHhFRiwweDIzLDB4NDEsMHhDMiwweDQw
LDB4M0MsMHhBRiwweEVELDB4QUQsCi0gICAgMHgyMywweDQ5LDB4QzIsMHgzOCwweEZFLDB4RkYs
MHhFQiwweEUyLDB4RTIsMHg0MCwweEMyLDB4MzgsMHg5QywweEFDLDB4RUEsMHg1NiwKLSAgICAw
eDAyLDB4NDEsMHhDMiwweDM4LDB4RDUsMHhGRCwweEVGLDB4MkYsMHgwMywweDQxLDB4QTEsMHgz
MCwweDM1LDB4QkYsMHgyQiwweDBBLAotICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHhFQywweEZF
LDB4RkUsMHhGOCwweDIzLDB4NDEsMHhDMiwweDM4LDB4QkQsMHgzNywweERFLDB4QkIsCi0gICAg
MHgwMywweDQxLDB4QzIsMHgzOCwweEVGLDB4OEEsMHhBMiwweEU4LDB4RTIsMHg0MCwweEMyLDB4
MzgsMHgyNywweDhGLDB4MDIsMHgwMCwKLSAgICAweEUyLDB4NDAsMHhDMiwweDM4LDB4MjIsMHhB
QSwweEZFLDB4RUUsMHgwMywweDQxLDB4QzIsMHgzOCwweEJCLDB4RTIsMHhERiwweDU1LAotICAg
IDB4MDMsMHg0MSwweEMyLDB4MzgsMHgwMiwweENBLDB4NTUsMHg3OSwweDAzLDB4NDEsMHhBMSww
eDMwLDB4OEEsMHhGRiwweEJGLDB4QUEsCi0gICAgMHgwMywweDQxLDB4RTIsMHgzOCwweDU3LDB4
RUMsMHhEMiwweDVBLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhCMiwweDgyLDB4MDksMHgyRCwKLSAg
ICAweDAzLDB4NDEsMHhDMiwweDM4LDB4OEIsMHhBRiwweENFLDB4NjIsMHhFMiwweDQwLDB4QTIs
MHgzOCwweEMyLDB4RTAsMHhDOCwweDlBLAotICAgIDB4MDIsMHg0MSwweEMyLDB4MzgsMHgwRCww
eDk1LDB4QkYsMHgyRiwweEE3LDB4N0EsMHg0MywweDQ5LDB4MjksMHhBRCwweDJELDB4MkQsCi0g
ICAgMHg4NiwweDcyLDB4NDYsMHg2QSwweDZBLDB4OTIsMHhFMiwweEY2LDB4MjYsMHg2QSwweDA1
LDB4NjIsMHg5MCwweEQyLDB4NzAsMHg1MCwKLSAgICAweDA1LDB4NjIsMHg2MywweDQ5LDB4NjAs
MHg3OCwweEUwLDB4NjAsMHg2MywweDQ5LDB4QzIsMHgzMCwweDdCLDB4N0UsMHhGQywweDdFLAot
ICAgIDB4RTIsMHgzOCwweEMyLDB4MzAsMHhCQSwweEVGLDB4NzYsMHhBMiwweDAzLDB4MzksMHhD
MiwweDMwLDB4OTcsMHhGRSwweEFELDB4QTcsCi0gICAgMHgyMywweDM5LDB4RTIsMHgzOCwweDU1
LDB4NzksMHhDQiwweDZBLDB4MjMsMHgzOSwweEUyLDB4MzAsMHg1RCwweEZFLDB4MkYsMHhBQSwK
LSAgICAweDIzLDB4MzksMHhFMywweDM4LDB4RUYsMHhBRiwweDJELDB4RUYsMHgyMywweDM5LDB4
QzIsMHgzOCwweDYzLDB4QUEsMHhBQSwweEFFLAotICAgIDB4NDMsMHg0MSwweDAzLDB4MzksMHhG
OSwweEVGLDB4NzgsMHhGRSwweDI0LDB4MzksMHgwMywweDM5LDB4QkMsMHgyNywweEE1LDB4OTUs
Ci0gICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweDA2LDB4M0YsMHhCRSwweEVBLDB4NjUsMHg0MSww
eDAzLDB4MzksMHhFMywweEFBLDB4MkYsMHhGQSwKLSAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4
QkEsMHhGOCwweEZFLDB4RUUsMHg0NCwweDQxLDB4MDMsMHgzMSwweDdCLDB4QkEsMHhFMywweEEw
LAotICAgIDB4NDQsMHgzOSwweDAzLDB4MzEsMHg1RCwweDkyLDB4MDAsMHg4OCwweDQ0LDB4Mzks
MHgwMywweDMxLDB4NUQsMHg1NywweDU3LDB4NzgsCi0gICAgMHgyNCwweDM5LDB4RTIsMHgzMCww
eEFBLDB4QUEsMHhBNywweDlGLDB4NDQsMHgzOSwweEUyLDB4MzAsMHhBMiwweEFBLDB4RkYsMHhE
RiwKLSAgICAweDIzLDB4MzksMHgwMywweDM5LDB4QjIsMHgyMiwweEMxLDB4NzksMHgyNCwweDM5
LDB4RTMsMHgzOCwweEVBLDB4NzgsMHg3MCwweEEyLAotICAgIDB4MDMsMHgzOSwweEEyLDB4Mjgs
MHg4MiwweEEyLDB4QUMsMHhBQSwweDI0LDB4MzksMHhDMywweDMwLDB4QkYsMHhGRCwweEJGLDB4
QTgsCi0gICAgMHgwMywweDM5LDB4RTMsMHgzMCwweEFCLDB4QjAsMHhBMCwweEEwLDB4MjMsMHgz
OSwweEUzLDB4MzAsMHhBRCwweEFGLDB4RUYsMHhENywKLSAgICAweDI0LDB4MzksMHhFMywweDMw
LDB4OEEsMHhBQiwweERGLDB4NTcsMHgyMywweDM5LDB4RTMsMHgzMCwweEZFLDB4RkYsMHhBMyww
eEJGLAotICAgIDB4MDMsMHgzMSwweEUzLDB4MzAsMHhEQSwweDc4LDB4NUUsMHhGRSwweDAzLDB4
MzEsMHhBMiwweDI4LDB4QUEsMHhFQSwweEFBLDB4MDgsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgy
OCwweDdGLDB4N0YsMHhEQiwweDYyLDB4MjMsMHgzMSwweEUzLDB4MzAsMHhGNSwweDdGLDB4RkYs
MHg3MywKLSAgICAweDI0LDB4MzEsMHhDMiwweDI4LDB4RUMsMHhFMiwweEVCLDB4N0YsMHhFMyww
eDI4LDB4QzMsMHgyOCwweEQ3LDB4QkUsMHg1RSwweDU3LAotICAgIDB4MDQsMHgzMSwweEMzLDB4
MjgsMHg3RiwweDVFLDB4RUIsMHgyQywweEUzLDB4MjgsMHhDMywweDI4LDB4NUYsMHhDOCwweDYy
LDB4ODAsCi0gICAgMHhFMywweDI4LDB4QTIsMHgyMCwweEJGLDB4OEUsMHg4QSwweDgyLDB4RTMs
MHgyOCwweEEyLDB4MjAsMHg2QiwweEIyLDB4RjIsMHhBQSwKLSAgICAweEMyLDB4MjgsMHg4Miww
eDIwLDB4QUIsMHhGMCwweEJBLDB4QTgsMHhDMiwweDI4LDB4QTEsMHgyOCwweDZFLDB4NTMsMHhC
NywweDAyLAotICAgIDB4QzIsMHgyOCwweDgyLDB4MjAsMHg3RiwweDc2LDB4RkUsMHg2RSwweEMy
LDB4MjgsMHg4MiwweDIwLDB4RDUsMHhGNSwweEJGLDB4QUIsCi0gICAgMHhDMywweDI4LDB4ODIs
MHgyMCwweDZGLDB4RkEsMHhGRSwweDVBLDB4QTIsMHgyOCwweDgyLDB4MjAsMHhCRiwweEFGLDB4
RjYsMHhBNSwKLSAgICAweEMyLDB4MjgsMHg4MiwweDIwLDB4MEUsMHhGQiwweEZBLDB4RDUsMHhD
MiwweDMwLDB4QTIsMHgyOCwweDg5LDB4MkIsMHg5NywweDVCLAotICAgIDB4RTMsMHgzMCwweEEy
LDB4MjgsMHhCRSwweEJDLDB4QUYsMHg5QiwweDAzLDB4MzEsMHhDMiwweDMwLDB4MjksMHgyOSww
eDA1LDB4QUIsCi0gICAgMHgwMywweDM5LDB4RTMsMHgzMCwweEZGLDB4N0MsMHhGRSwweEZGLDB4
NDQsMHg0MSwweDgxLDB4MjgsMHg3RiwweDdGLDB4N0EsMHhFQywKLSAgICAweDAzLDB4MzEsMHhB
MiwweDMwLDB4N0QsMHhGRCwweEY1LDB4QkYsMHhFMiwweDMwLDB4QTIsMHgyOCwweEExLDB4QTcs
MHhCNywweEZFLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHhGRiwweEJGLDB4QUUsMHhFMiww
eDgyLDB4MzgsMHhFMywweDMwLDB4NzcsMHhGRCwweEY3LDB4QkYsCi0gICAgMHgwMywweDM5LDB4
QzIsMHgzMCwweEEyLDB4RjIsMHg1OSwweERELDB4RTIsMHgzMCwweEExLDB4MzAsMHhBMCwweEYw
LDB4NUEsMHg2QSwKLSAgICAweEMyLDB4MzAsMHg4MSwweDI4LDB4QjgsMHg1QywweEZFLDB4MEYs
MHhFMiwweDMwLDB4QzIsMHgzMCwweEY1LDB4NkQsMHhBRCwweEFCLAotICAgIDB4RTMsMHgzMCww
eEEyLDB4MzAsMHgxQSwweDBFLDB4MDgsMHgyQSwweEUzLDB4MzAsMHhDMiwweDMwLDB4N0EsMHg3
MiwweDQ1LDB4Q0EsCi0gICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweERGLDB4NjYsMHhGRiwweDQ4
LDB4QzIsMHgyOCwweEEyLDB4MjgsMHgzQiwweDhBLDB4OEIsMHhGRSwKLSAgICAweEUyLDB4MzAs
MHhBMiwweDI4LDB4MkYsMHhBRCwweDc1LDB4MjksMHgyMywweDM5LDB4QzIsMHgyOCwweEZGLDB4
REYsMHhCOSwweEEyLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MjgsMHhBRSwweDdFLDB4QjgsMHgy
OCwweDIzLDB4MzksMHhDMiwweDI4LDB4NUYsMHg2QSwweEE4LDB4QTAsCi0gICAgMHgwMywweDMx
LDB4QTEsMHgyOCwweDc1LDB4NUYsMHhCQywweEFBLDB4RTMsMHgzMCwweEEyLDB4MjgsMHgyQiww
eDhCLDB4QUEsMHg4OCwKLSAgICAweDAzLDB4MzksMHhDMywweDMwLDB4QUEsMHhCRCwweEZBLDB4
QkUsMHg0MywweDQxLDB4RTIsMHgzMCwweEI1LDB4OTUsMHhGRiwweEFBLAotICAgIDB4NDQsMHg0
MSwweDAyLDB4MzksMHhDRSwweDgwLDB4Q0EsMHhFQiwweDY0LDB4NDksMHgwMywweDM5LDB4QkYs
MHhDRiwweDdCLDB4NTUsCi0gICAgMHg0NCwweDQ5LDB4RTIsMHgzOCwweEI4LDB4QUEsMHhBNSww
eDM1LDB4QTUsMHg1MSwweDAzLDB4NDEsMHg1NSwweDVELDB4QkIsMHgyQSwKLSAgICAweDY3LDB4
NkEsMHgyMywweDQxLDB4RjUsMHhCRCwweEFGLDB4MkEsMHg2NywweDZBLDB4QzUsMHg1MSwweDI1
LDB4MkYsMHhBQiwweDAwLAotICAgIDB4QTgsMHg3MiwweDQ3LDB4NkEsMHhCRCwweDNGLDB4RkYs
MHhFRiwweEU5LDB4N0EsMHg2NywweDcyLDB4QUIsMHgwRiwweEU5LDB4RUYsCi0gICAgMHhDOSww
eDdBLDB4ODgsMHg3MiwweDA4LDB4QTgsMHgyQSwweEJGLDB4QzksMHg3QSwweEE5LDB4NzIsMHhD
NSwweDYxLDB4RkEsMHg1QywKLSAgICAweEVBLDB4N0EsMHg4OSwweDcyLDB4MkYsMHgzRCwweEE1
LDB4QUYsMHgwQSwweDgzLDB4QTksMHg3QSwweDNBLDB4QjgsMHhGQSwweEZGLAotICAgIDB4RTks
MHg3QSwweEE4LDB4N0EsMHg3QSwweDQwLDB4RUUsMHgzRiwweEU5LDB4N0EsMHhBOSwweDcyLDB4
MDEsMHhFRiwweEE0LDB4QjgsCi0gICAgMHgwQSwweDgzLDB4QzksMHg3QSwweDhGLDB4QjUsMHhC
RiwweEZGLDB4MkEsMHg4MywweEM5LDB4N0EsMHhBQSwweDJBLDB4MEIsMHgyNSwKLSAgICAweDJB
LDB4ODMsMHhDOSwweDdBLDB4NUUsMHhGQywweEVFLDB4RTIsMHgyQSwweDgzLDB4RTksMHg3QSww
eDc2LDB4RDUsMHhDRCwweEFELAotICAgIDB4MEEsMHg4MywweEVBLDB4N0EsMHhFQSwweDAyLDB4
MzIsMHg1RiwweDI5LDB4ODMsMHhFQSwweDdBLDB4RDgsMHhFQywweDgyLDB4MDMsCi0gICAgMHg0
QiwweDhCLDB4QTgsMHg3MiwweEEwLDB4ODAsMHhBMiwweEZFLDB4NEIsMHg4QiwweEM5LDB4NzIs
MHgyQiwweDNFLDB4M0YsMHhGRCwKLSAgICAweDRBLDB4OEIsMHgwQSwweDgzLDB4RkMsMHhFRSww
eEQ1LDB4REQsMHg4QiwweDkzLDB4RTksMHg3QSwweDJCLDB4QUIsMHhGRiwweDdELAotICAgIDB4
MEQsMHhBNCwweDJBLDB4ODMsMHgwQSwweEJELDB4RjUsMHg1NSwweDRFLDB4QUMsMHgyQSwweDhC
LDB4MDIsMHhBQiwweEJGLDB4RjUsCi0gICAgMHg4RiwweEFDLDB4QUMsMHg5MywweDAwLDB4OEEs
MHhBOSwweEI1LDB4OEYsMHhBQywweDRFLDB4QUMsMHhBNSwweEY1LDB4RkYsMHg1NSwKLSAgICAw
eDhFLDB4QjQsMHg0RSwweEFDLDB4QUMsMHg4QiwweEIyLDB4RkYsMHg4RSwweEI0LDB4NEQsMHhB
NCwweEJGLDB4MUQsMHgwNywweEFFLAotICAgIDB4QUYsMHhCNCwweDZFLDB4QUMsMHg5QSwweDJB
LDB4MkIsMHgwMiwweENGLDB4QkMsMHg2RSwweEFDLDB4RkUsMHhGRiwweDlGLDB4RjcsCi0gICAg
MHhBRiwweEI0LDB4OEYsMHhBQywweDFCLDB4MkUsMHhFMCwweEMwLDB4Q0YsMHhCNCwweDhGLDB4
QjQsMHhDQSwweEMwLDB4QUIsMHhGMiwKLSAgICAweDIzLDB4NDksMHhDMiwweDM4LDB4QUEsMHhG
RSwweERELDB4QkYsMHgyMywweDQxLDB4RTIsMHg0MCwweDdCLDB4N0YsMHg5RCwweEE3LAotICAg
IDB4MDMsMHg0MSwweEUyLDB4MzgsMHg5NSwweDkyLDB4RUEsMHhBMywweDIzLDB4NDEsMHhFMiww
eDM4LDB4REEsMHg3RiwweDVBLDB4NzgsCi0gICAgMHgwMiwweDQxLDB4QTIsMHgzMCwweEFFLDB4
QUEsMHgyRCwweEFFLDB4MDMsMHg0MSwweEExLDB4MzAsMHgwQSwweEFDLDB4REEsMHhGQSwKLSAg
ICAweDAzLDB4NDEsMHhBMSwweDMwLDB4QjAsMHhBMiwweEFGLDB4QUYsMHgwMywweDQxLDB4QTEs
MHgzMCwweEVGLDB4RkUsMHhCQSwweDA4LAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBQiww
eEVGLDB4QUYsMHgzNywweDAzLDB4NDEsMHhBMiwweDM4LDB4NDgsMHhCQSwweDJCLDB4MjAsCi0g
ICAgMHgwMywweDQxLDB4RTIsMHgzOCwweEIzLDB4NUEsMHg3NiwweEFFLDB4MDMsMHg0MSwweEMy
LDB4MzgsMHhCMCwweEI4LDB4NkUsMHg3RSwKLSAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4NjIs
MHhDQiwweDg1LDB4QUQsMHgyNCwweDQxLDB4QzIsMHgzOCwweEQ3LDB4RDYsMHg3RiwweEZCLAot
ICAgIDB4RTIsMHgzOCwweEMyLDB4MzgsMHhGQywweDE2LDB4MTUsMHgyQiwweDIzLDB4NDEsMHhD
MiwweDM4LDB4RkYsMHg4QiwweEJFLDB4NUYsCi0gICAgMHgwMywweDQxLDB4QTEsMHgzMCwweEUy
LDB4QUIsMHhERSwweEFGLDB4MDMsMHg0MSwweEUyLDB4MzgsMHhDMywweDYzLDB4NTAsMHhEQywK
LSAgICAweDAyLDB4NDEsMHhFMiwweDM4LDB4NUYsMHg3RCwweDM4LDB4QjksMHgwMywweDQxLDB4
QzIsMHgzOCwweEIzLDB4REIsMHg5QSwweEFBLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhG
MCwweEMyLDB4RUUsMHhERSwweDAzLDB4NDEsMHhDMiwweDM4LDB4NTUsMHhFRCwweDJGLDB4QUYs
Ci0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEYzLDB4RTMsMHhFQSwweEZBLDB4NjcsMHg3Miww
eDAyLDB4NDEsMHgyRCwweDJELDB4MkQsMHgyRCwKLSAgICAweDg3LDB4NzIsMHgwNSwweDYyLDB4
QTgsMHhFMCwweDc4LDB4RkEsMHg0NiwweDcyLDB4RTUsMHg2MSwweERGLDB4QjYsMHhGRiwweEZD
LAotICAgIDB4MDUsMHg2MiwweDQzLDB4NDksMHhFMCwweEUwLDB4NjAsMHhFMCwweDYzLDB4NDEs
MHhFMiwweDM4LDB4N0YsMHg1RiwweDVFLDB4REMsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCww
eDJBLDB4MkEsMHg4QSwweDI3LDB4MDMsMHgzOSwweEUzLDB4MzAsMHg3QiwweEUyLDB4QkMsMHhB
RSwKLSAgICAweDAzLDB4MzksMHhFMywweDMwLDB4MUUsMHg2RSwweDczLDB4NTgsMHgyMywweDM5
LDB4RTIsMHgzMCwweEMwLDB4Q0IsMHhFMywweEZBLAotICAgIDB4MjMsMHgzOSwweEUyLDB4MzAs
MHg2QiwweEFBLDB4M0QsMHg5NSwweDIzLDB4MzksMHhFMywweDM4LDB4RDcsMHhENywweEZDLDB4
RDUsCi0gICAgMHgyMywweDM5LDB4RTIsMHgzMCwweDgyLDB4RUEsMHhBRSwweDdCLDB4NDQsMHg0
MSwweEUzLDB4MzAsMHhBQiwweEFFLDB4RTcsMHhGQiwKLSAgICAweDIzLDB4MzksMHgwMywweDM5
LDB4MDEsMHg0MiwweEMyLDB4NjYsMHg0NCwweDQxLDB4MDMsMHgzOSwweEZBLDB4QUIsMHhFQiww
eEQ1LAotICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHgyNywweDBGLDB4QUIsMHhBQiwweDQ0LDB4
NDEsMHhFMywweDMwLDB4ODAsMHgyOCwweDM2LDB4RUUsCi0gICAgMHg0NCwweDQxLDB4MDMsMHgz
OSwweEE4LDB4RTIsMHg3QSwweEFBLDB4NDQsMHg0MSwweEUyLDB4MzAsMHhGRSwweEZGLDB4NkIs
MHg2MiwKLSAgICAweEUzLDB4MzgsMHgwMywweDMxLDB4RkYsMHgyQSwweEFBLDB4OUUsMHgwMyww
eDM5LDB4RTMsMHgzMCwweEZGLDB4MjMsMHhBRiwweDdFLAotICAgIDB4MDMsMHgzOSwweEMyLDB4
MzAsMHgwQSwweDBFLDB4MDMsMHgyQiwweDQ0LDB4NDEsMHhFMiwweDMwLDB4QUIsMHgyRiwweEZE
LDB4RTUsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzOCwweDhGLDB4OEIsMHgwRiwweEZELDB4NDQs
MHg0MSwweDA0LDB4MzksMHhGRiwweEU2LDB4NUEsMHg1OCwKLSAgICAweDQ0LDB4NDEsMHhFMyww
eDMwLDB4RkYsMHg3RiwweEZBLDB4QUIsMHgyNCwweDQxLDB4RTMsMHgzOCwweEJGLDB4QjYsMHhG
OCwweEY4LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFMCwweENBLDB4QUEsMHhBMCwweDIz
LDB4MzksMHhDMiwweDMwLDB4MkIsMHgyRiwweEZGLDB4N0YsCi0gICAgMHgyMywweDM5LDB4QzIs
MHgyOCwweEJBLDB4M0UsMHhGNywweDk1LDB4MDMsMHgzMSwweEUzLDB4MzAsMHg4MCwweDc4LDB4
REYsMHg3NSwKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4N0EsMHg3QiwweEZELDB4NjUsMHgw
MywweDMxLDB4QzMsMHgyOCwweEJBLDB4QUYsMHhCRSwweEIyLAotICAgIDB4MjQsMHgzOSwweEMy
LDB4MjgsMHg3RiwweEZGLDB4RUYsMHhBRSwweDAzLDB4MzEsMHhDMiwweDI4LDB4RkYsMHhFOSww
eENELDB4Q0EsCi0gICAgMHgwNCwweDMxLDB4QzIsMHgyOCwweDJBLDB4RUYsMHhFNSwweEVFLDB4
MDQsMHgzMSwweEMzLDB4MjgsMHg2OCwweDYzLDB4NjksMHhGRCwKLSAgICAweEUzLDB4MzAsMHhD
MywweDI4LDB4REEsMHg3RCwweDU5LDB4NTcsMHgwMywweDMxLDB4QzMsMHgyOCwweDc1LDB4REQs
MHhGRCwweEFELAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhGNiwweEY3LDB4MEEsMHgwQSww
eEUzLDB4MzAsMHhBMiwweDI4LDB4RUYsMHhGRiwweEZBLDB4QjgsCi0gICAgMHhFMywweDMwLDB4
QTIsMHgyOCwweDY3LDB4RkQsMHhEQywweDM4LDB4QzMsMHgyOCwweEEyLDB4MjgsMHg1MSwweDZC
LDB4N0EsMHhDMywKLSAgICAweEMzLDB4MjgsMHg4MiwweDIwLDB4N0UsMHhGRiwweEJGLDB4QUYs
MHhBMiwweDI4LDB4ODIsMHgyMCwweDI2LDB4MjYsMHgzOCwweEE4LAotICAgIDB4QTIsMHgyMCww
eDYxLDB4MjAsMHhGRSwweEZBLDB4REEsMHhBQSwweEEyLDB4MjgsMHg2MSwweDE4LDB4MzgsMHhC
RiwweDlGLDB4RkEsCi0gICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweEI4LDB4MzcsMHhERiwweERF
LDB4MDMsMHgzMSwweEMyLDB4MjgsMHhBRCwweEU5LDB4QUQsMHg3RCwKLSAgICAweDIzLDB4Mzks
MHhDMiwweDI4LDB4QkYsMHhCRCwweEFGLDB4QUYsMHg0NCwweDQxLDB4QTIsMHgzMCwweEZDLDB4
N0UsMHg3RiwweEZFLAotICAgIDB4RTIsMHgzMCwweDgyLDB4MzAsMHgyMiwweDBBLDB4QUIsMHgy
MiwweEMyLDB4MzAsMHhDMiwweDI4LDB4MDgsMHgwMCwweEEwLDB4MkEsCi0gICAgMHgwMywweDM5
LDB4QTIsMHgzMCwweEVGLDB4RkQsMHhCQiwweDJCLDB4RTIsMHgzMCwweEExLDB4MzAsMHg3Riww
eEFCLDB4MDAsMHhBMCwKLSAgICAweEUyLDB4MzAsMHhDMiwweDMwLDB4MUIsMHgyRiwweDFCLDB4
RDcsMHgwMywweDM5LDB4QzIsMHgzMCwweDdGLDB4RjMsMHhBQiwweDJELAotICAgIDB4MDIsMHgz
OSwweEEyLDB4MzAsMHhGRiwweERBLDB4RTAsMHhBMCwweDAzLDB4MzksMHhDMiwweDMwLDB4N0Ys
MHg2RSwweEVCLDB4REQsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEJGLDB4MUYsMHgzRiww
eEFGLDB4MDMsMHgzOSwweEMyLDB4MjgsMHhGRSwweEZCLDB4RjQsMHg1RiwKLSAgICAweEUzLDB4
MzAsMHhBMiwweDI4LDB4QkEsMHhGMiwweEQ3LDB4QjUsMHgwMywweDMxLDB4QTEsMHgyOCwweEZF
LDB4N0MsMHhFQiwweEVBLAotICAgIDB4MDMsMHgzMSwweEExLDB4MjgsMHhBOSwweEJGLDB4MkYs
MHhBQSwweDQ0LDB4NDEsMHhFMiwweDMwLDB4QUIsMHgwRCwweDJELDB4QUQsCi0gICAgMHg0NCww
eDQxLDB4MDMsMHgzOSwweDVFLDB4NUMsMHg3OCwweDNFLDB4ODUsMHg0OSwweDAzLDB4MzksMHg1
RCwweEVELDB4QTcsMHg4RSwKLSAgICAweDQ0LDB4NDEsMHhFMiwweDMwLDB4NTUsMHg1RiwweDc4
LDB4RTgsMHg0NCwweDQxLDB4RTMsMHgzMCwweDU3LDB4RkYsMHhFQiwweDBCLAotICAgIDB4MjMs
MHgzOSwweEUzLDB4MzAsMHhENSwweEU3LDB4QTMsMHg4OCwweDQzLDB4NDEsMHgwMywweDM5LDB4
RkUsMHhBQiwweEFGLDB4RTcsCi0gICAgMHg0MywweDQxLDB4MDMsMHgzOSwweEEyLDB4MDIsMHgw
QiwweDBELDB4NjQsMHg0OSwweDAyLDB4MzksMHhENywweDk3LDB4QTMsMHhFRiwKLSAgICAweEM1
LDB4NTEsMHgyMywweDQxLDB4RDUsMHhBRiwweDJGLDB4MkIsMHgwNiwweDVBLDB4NjQsMHg1MSww
eEI1LDB4OEYsMHhBRSwweDAzLAotICAgIDB4NjcsMHg2QSwweDA2LDB4NUEsMHhCNSwweEJGLDB4
RkIsMHhCRCwweDY3LDB4NkEsMHgyNywweDYyLDB4MjgsMHgwOCwweDg4LDB4MkYsCi0gICAgMHhB
OSwweDZBLDB4NDcsMHg2QSwweEZBLDB4QjYsMHgzRiwweEFGLDB4QzksMHg3MiwweDY3LDB4NkEs
MHg4RCwweEI3LDB4RUUsMHg4QiwKLSAgICAweEM5LDB4N0EsMHg2OCwweDZBLDB4MUYsMHhFQiww
eDhBLDB4MkUsMHhDOSwweDcyLDB4NjgsMHg3MiwweEVBLDB4QUYsMHg0QSwweEFBLAotICAgIDB4
RUEsMHg3QSwweDY4LDB4NzIsMHgyQSwweDAyLDB4MkIsMHhENywweEU5LDB4N0EsMHhBOSwweDdB
LDB4QjcsMHhGRCwweEVELDB4MjksCi0gICAgMHgwQSwweDdCLDB4ODgsMHg3MiwweERGLDB4NUYs
MHhGRSwweEE4LDB4MkEsMHg4MywweEE4LDB4NzIsMHhGRiwweDM1LDB4REQsMHhGRiwKLSAgICAw
eDBBLDB4ODMsMHhBOSwweDcyLDB4MkEsMHgyQSwweEFCLDB4REUsMHgwQSwweDgzLDB4QzksMHg3
QSwweEI3LDB4QjAsMHg4MCwweDhELAotICAgIDB4MkIsMHg4MywweEM5LDB4N0EsMHg3RSwweDZE
LDB4NUMsMHhGQiwweDBBLDB4ODMsMHhBOSwweDcyLDB4QUIsMHhEQiwweERFLDB4MkEsCi0gICAg
MHgwQSwweDgzLDB4QTgsMHg3QSwweDRBLDB4RjksMHhCRiwweEY4LDB4MDksMHg3QiwweEE5LDB4
N0EsMHg4MiwweEFBLDB4MkEsMHg5RSwKLSAgICAweDJBLDB4ODMsMHhDOSwweDdBLDB4NUYsMHhB
OCwweEEyLDB4QUIsMHgyQSwweDgzLDB4QzksMHg3QSwweDc1LDB4RDcsMHhBQSwweEFDLAotICAg
IDB4MkIsMHg4MywweEU5LDB4N0EsMHg5QiwweEE2LDB4RkYsMHgyMiwweDJBLDB4ODMsMHhDOSww
eDdBLDB4RTgsMHhFRSwweDdBLDB4NjIsCi0gICAgMHgwQSwweDgzLDB4QzksMHg3QSwweDA4LDB4
RTIsMHgwRCwweEFGLDB4NEIsMHg4QiwweEM5LDB4N0EsMHgwMiwweERELDB4N0UsMHg3NiwKLSAg
ICAweEFDLDB4OUIsMHgwQSwweDdCLDB4MkEsMHhCRCwweDc1LDB4RDUsMHgyRCwweEE0LDB4MEEs
MHg4MywweDAyLDB4QUYsMHhGRiwweDVELAotICAgIDB4NkUsMHhBQywweDRCLDB4OEIsMHgwMiww
eDBBLDB4QkQsMHhGNSwweDhFLDB4QUMsMHhBQywweDkzLDB4MjAsMHgwMCwweEFBLDB4RkQsCi0g
ICAgMHg4RiwweEI0LDB4MkQsMHhBNCwweEE4LDB4MkEsMHgyQiwweDA5LDB4QUYsMHhCNCwweDZF
LDB4QUMsMHhGNywweEJBLDB4QjgsMHhBQiwKLSAgICAweEYwLDB4QjQsMHg4RiwweEI0LDB4REIs
MHhGNywweEQ3LDB4RkQsMHhBRiwweEI0LDB4OEYsMHhCNCwweDIwLDB4ODgsMHgwRSwweDAyLAot
ICAgIDB4NDQsMHg0MSwweEUyLDB4NDAsMHhGRCwweEJELDB4RjcsMHhERiwweDIzLDB4NDksMHhD
MiwweDM4LDB4QUIsMHhBNywweEVBLDB4OEEsCi0gICAgMHg0MywweDQ5LDB4QzIsMHgzOCwweEZC
LDB4RjcsMHg5RSwweEUzLDB4MDMsMHg0MSwweEMyLDB4MzgsMHg3OCwweDZBLDB4Q0EsMHhDQywK
LSAgICAweDIyLDB4MzksMHhDMiwweDM4LDB4REYsMHg3OSwweEZGLDB4RDcsMHhFMiwweDM4LDB4
QzIsMHgzOCwweDFGLDB4QUYsMHgzNiwweEIwLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhD
QiwweDk2LDB4NTIsMHg3RiwweDAzLDB4NDEsMHhDMiwweDM4LDB4MEYsMHgyRSwweEVBLDB4RUUs
Ci0gICAgMHgwMywweDQxLDB4QTEsMHgzMCwweDM2LDB4QkUsMHhBQiwweEEyLDB4MDIsMHg0MSww
eEMyLDB4MzgsMHgzOCwweEY4LDB4RUIsMHhFQSwKLSAgICAweDIyLDB4MzksMHhDMiwweDM4LDB4
RjcsMHhGNiwweEZDLDB4RkEsMHgwMiwweDM5LDB4QzIsMHgzOCwweDk2LDB4REUsMHhENCwweEJF
LAotICAgIDB4MDIsMHg0MSwweEMyLDB4MzgsMHhBNiwweDI1LDB4OEEsMHhBQSwweDAzLDB4NDEs
MHhDMiwweDM4LDB4QTcsMHhCNywweEY3LDB4QkYsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCww
eEEyLDB4NjAsMHg2RSwweEZBLDB4MDMsMHg0MSwweEExLDB4MzAsMHg5RSwweEZCLDB4RTIsMHhF
QSwKLSAgICAweDAzLDB4MzksMHhDMiwweDM4LDB4REIsMHgyNywweDAzLDB4QkYsMHgyMywweDM5
LDB4QzIsMHgzOCwweEZFLDB4NUYsMHhGNywweEZELAotICAgIDB4MDMsMHg0MSwweEUyLDB4Mzgs
MHg5QSwweEI1LDB4QTksMHg0NywweDAzLDB4NDEsMHhDMiwweDM4LDB4Q0YsMHhFRiwweDhBLDB4
OEYsCi0gICAgMHhFMiwweDM4LDB4QzIsMHgzMCwweDg4LDB4MkUsMHgxQSwweDJFLDB4MDMsMHg0
MSwweEMyLDB4MzgsMHgyRiwweEI1LDB4REUsMHhFRiwKLSAgICAweEUyLDB4NDAsMHhBMiwweDM4
LDB4MDAsMHhCOCwweEZBLDB4QkUsMHg2NiwweDcyLDB4MjMsMHg0OSwweDJELDB4MkQsMHgyRCww
eDJELAotICAgIDB4NjYsMHg3MiwweDA1LDB4NjIsMHhGMCwweDQyLDB4NEEsMHhFOCwweDI2LDB4
NkEsMHgwNiwweDYyLDB4NTQsMHg1RSwweEZFLDB4ODAsCi0gICAgMHg0NiwweDZBLDB4ODQsMHg1
MSwweEZFLDB4NTgsMHhGQSwweEZBLDB4NjQsMHg0OSwweEUyLDB4MzgsMHhERSwweDVBLDB4N0Us
MHg1OCwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4MDMsMHgwMiwweEI4LDB4RDgsMHgyMyww
eDM5LDB4QzIsMHgzMCwweEJGLDB4RjgsMHg3QywweDVBLAotICAgIDB4MDMsMHgzOSwweEMyLDB4
MzAsMHg1QSwweDVGLDB4NTUsMHhENSwweDAzLDB4MzksMHhDMiwweDMwLDB4RUQsMHhBRiwweEVC
LDB4RUIsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweDM2LDB4QkYsMHhGQiwweEJGLDB4MDMs
MHgzOSwweEUyLDB4MzAsMHhFRiwweEYwLDB4QkQsMHg5NywKLSAgICAweDAzLDB4MzksMHhBMSww
eDI4LDB4QTIsMHhBQSwweEJDLDB4NzgsMHgyMywweDM5LDB4QzIsMHgzMCwweEUyLDB4QTIsMHhG
RiwweDZELAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBQSwweDIyLDB4MkEsMHhGRCwweDIz
LDB4MzksMHhDMiwweDMwLDB4OEEsMHgwMCwweDJBLDB4MkIsCi0gICAgMHg0NCwweDQxLDB4MDMs
MHgzOSwweEEyLDB4RUQsMHg3RSwweEIzLDB4MjQsMHgzOSwweEUyLDB4MzgsMHhGMiwweDIyLDB4
QjAsMHg4OCwKLSAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4QTAsMHhBMCwweEJCLDB4RjYsMHg0
NCwweDQxLDB4RTMsMHgzOCwweDZBLDB4NkEsMHgyQSwweEJCLAotICAgIDB4MjMsMHgzOSwweEUz
LDB4MzgsMHhGNSwweEU1LDB4N0YsMHhBMiwweDAzLDB4MzksMHhDMiwweDMwLDB4MEUsMHgyQSww
eDgwLDB4NkEsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweDJELDB4MkUsMHhBRiwweDNGLDB4
NDQsMHg0MSwweEUzLDB4MzAsMHhFNywweEZGLDB4RkQsMHhBNSwKLSAgICAweDI0LDB4MzksMHhD
MiwweDMwLDB4RkYsMHg3RiwweEZGLDB4QUEsMHgwMywweDM5LDB4RTMsMHgzMCwweDAzLDB4MDks
MHg4MSwweDBCLAotICAgIDB4NDQsMHg0MSwweEMyLDB4MzAsMHgwQSwweEFGLDB4RkUsMHg3Riww
eDQ0LDB4NDEsMHgwNCwweDM5LDB4NUEsMHgzMiwweENGLDB4QUYsCi0gICAgMHg0NCwweDQxLDB4
RTMsMHgzOCwweDU2LDB4N0UsMHhFOCwweEVFLDB4MjMsMHgzOSwweEUzLDB4MzAsMHg3RiwweEQ3
LDB4RkQsMHhBQSwKLSAgICAweDAzLDB4MzksMHhDMiwweDI4LDB4MkIsMHgwOCwweDcwLDB4QTAs
MHgyMywweDM5LDB4RTMsMHgzMCwweDVGLDB4N0UsMHg2QywweEFELAotICAgIDB4MDMsMHgzMSww
eEMzLDB4MzAsMHhCQiwweDNFLDB4MjIsMHhBMCwweDIzLDB4MzksMHhFMywweDMwLDB4QkYsMHgz
RiwweERGLDB4QUYsCi0gICAgMHgyNCwweDM5LDB4MDMsMHgzMSwweDU1LDB4NUMsMHhGRSwweDhC
LDB4MjMsMHgzMSwweEUzLDB4MzAsMHg2NywweENELDB4RUIsMHhFMCwKLSAgICAweDA0LDB4MzEs
MHhFMywweDMwLDB4N0QsMHhCNywweDI4LDB4RDYsMHgwMywweDMxLDB4QzIsMHgyOCwweDVBLDB4
RjgsMHhFQywweEFFLAotICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHg1NywweDU2LDB4NUEsMHgw
QSwweEUzLDB4MzAsMHhDMiwweDI4LDB4QUYsMHgwRCwweEVELDB4MjgsCi0gICAgMHgwMywweDMx
LDB4QzIsMHgyOCwweDk3LDB4REMsMHhFRiwweEZBLDB4RTMsMHgzMCwweEMyLDB4MzAsMHhGMCww
eDcyLDB4QUEsMHhFMywKLSAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4QjQsMHg2NywweEZGLDB4
MkIsMHhFMywweDMwLDB4QTIsMHgyOCwweEZGLDB4RkIsMHhFQiwweEU4LAotICAgIDB4RTIsMHgy
OCwweEEyLDB4MjAsMHhGNywweEVCLDB4RUEsMHhBQSwweDgyLDB4MjgsMHhBMiwweDIwLDB4REYs
MHhGRCwweEZELDB4NUYsCi0gICAgMHhDMiwweDI4LDB4QTIsMHgyMCwweDVELDB4QTUsMHhENSww
eDVDLDB4QzIsMHgyOCwweDgxLDB4MjAsMHg2RSwweEYyLDB4NjgsMHhBNywKLSAgICAweEMyLDB4
MjgsMHg4MSwweDIwLDB4REYsMHhENywweDdFLDB4ODAsMHhDMiwweDI4LDB4ODEsMHgyMCwweDIz
LDB4QkYsMHg1RiwweDdGLAotICAgIDB4MDMsMHgzOSwweDgxLDB4MjAsMHgwQSwweDIyLDB4QUQs
MHhCNSwweDI0LDB4MzksMHhDMiwweDMwLDB4RUMsMHhBQSwweDJGLDB4QkQsCi0gICAgMHgyNCww
eDM5LDB4QzIsMHgzMCwweDVELDB4NzUsMHhFRSwweDY4LDB4RTIsMHgzMCwweDgyLDB4MjgsMHg3
RiwweEZFLDB4QUEsMHgwMCwKLSAgICAweEUzLDB4MzgsMHhDMiwweDI4LDB4MkIsMHhBOSwweDBC
LDB4QUIsMHgwMywweDM5LDB4RTIsMHgzMCwweDlFLDB4QUUsMHhCRiwweDVELAotICAgIDB4RTIs
MHgzMCwweEMyLDB4MzAsMHg1NywweEZELDB4QUYsMHg5QSwweDAyLDB4MzksMHhDMiwweDMwLDB4
M0QsMHhBRCwweEEzLDB4QkYsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEZBLDB4NUUsMHhF
RiwweEFFLDB4RTMsMHgzMCwweEMyLDB4MzAsMHg1NywweDlGLDB4RDUsMHg1NywKLSAgICAweDIz
LDB4MzksMHhDMiwweDMwLDB4RkYsMHg3NywweDVELDB4QjUsMHgwMywweDMxLDB4QTIsMHgyOCww
eEYyLDB4N0EsMHhGMiwweEY4LAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg5RiwweEI1LDB4
MEYsMHg4QSwweDAzLDB4MzEsMHhDMiwweDMwLDB4ODMsMHhBQSwweDgyLDB4MEIsCi0gICAgMHgw
MywweDM5LDB4RTIsMHgzMCwweDVDLDB4OTksMHhCNiwweEQ3LDB4MjMsMHgzOSwweEUyLDB4MzAs
MHhCNSwweEY3LDB4ODcsMHhBQiwKLSAgICAweDQzLDB4MzksMHhFMiwweDMwLDB4MkEsMHhCRSww
eEJFLDB4RkEsMHg2NCwweDQxLDB4MDMsMHgzOSwweDgwLDB4RkIsMHg3RiwweDdCLAotICAgIDB4
NDQsMHg0MSwweEUyLDB4MzAsMHhFOCwweEFFLDB4RkUsMHhGRiwweDQ0LDB4MzksMHhFMiwweDMw
LDB4OEYsMHhGRSwweDI5LDB4QjcsCi0gICAgMHgyMywweDM5LDB4QzIsMHgzMCwweDAwLDB4ODgs
MHg3MCwweEFBLDB4MjMsMHgzOSwweEUyLDB4MzAsMHhFNywweEQ0LDB4QTYsMHgwRSwKLSAgICAw
eDY0LDB4NDEsMHgwMywweDM5LDB4RjEsMHg3QiwweDc1LDB4NTUsMHg2NCwweDQ5LDB4RTIsMHgz
OCwweDJELDB4QUYsMHhBOSwweDJGLAotICAgIDB4RTYsMHg1OSwweDY0LDB4NDksMHhBOSwweEFE
LDB4Q0YsMHgyOSwweDI2LDB4NjIsMHhDNSwweDUxLDB4RDksMHhGOSwweEUyLDB4RkEsCi0gICAg
MHg0NywweDYyLDB4RTYsMHg1OSwweDNGLDB4QjcsMHg5NywweEI1LDB4NjgsMHg2QSwweEU2LDB4
NTksMHgyMiwweDAzLDB4QjcsMHhBRSwKLSAgICAweEE5LDB4NzIsMHg0NywweDZBLDB4QjUsMHg5
RiwweEJGLDB4MkQsMHhDOSwweDcyLDB4NjgsMHg2QSwweEFBLDB4RkEsMHhFQSwweDZCLAotICAg
IDB4QzksMHg3MiwweDg4LDB4NkEsMHhCNSwweERBLDB4QkEsMHg0RSwweEM5LDB4N0EsMHg4OCww
eDZBLDB4RUUsMHhFQiwweDBGLDB4MzUsCi0gICAgMHhDOSwweDdBLDB4ODgsMHg3MiwweEQ3LDB4
RUQsMHhFMiwweDMwLDB4RUEsMHg4MiwweDg4LDB4NzIsMHgyRCwweEE3LDB4QjcsMHhGNywKLSAg
ICAweDBBLDB4ODMsMHhBOSwweDcyLDB4MEEsMHhBRiwweEI3LDB4RkQsMHhFOSwweDdBLDB4QTks
MHg3MiwweEYyLDB4NDAsMHg2QSwweEZELAotICAgIDB4QzksMHg3QSwweDg4LDB4NzIsMHgzOCww
eDNBLDB4OEIsMHhDMywweDBBLDB4ODMsMHhDOSwweDdBLDB4QTcsMHhFNywweDY2LDB4RDUsCi0g
ICAgMHhFQSwweDgyLDB4ODgsMHg3MiwweDA4LDB4QUEsMHg1RSwweEFCLDB4MkIsMHg4QiwweEM5
LDB4N0EsMHhCRiwweEFGLDB4MzUsMHgyRCwKLSAgICAweDJBLDB4ODMsMHhFQSwweDdBLDB4NTgs
MHg1RSwweDU4LDB4NTcsMHgwQSwweDgzLDB4QzksMHg3QSwweDU1LDB4NUIsMHg5MCwweEYwLAot
ICAgIDB4MEEsMHg4MywweEE5LDB4NzIsMHgwMiwweEJFLDB4MzcsMHhCNSwweDJCLDB4ODMsMHhD
OSwweDdBLDB4QTIsMHhBOCwweEUyLDB4NUUsCi0gICAgMHgwQSwweDgzLDB4RUEsMHg3QSwweEMz
LDB4NTcsMHg1NywweDdFLDB4MkIsMHg4MywweEVBLDB4ODIsMHg4MywweDNELDB4MDksMHhFQiwK
LSAgICAweDJBLDB4ODMsMHhDOSwweDdBLDB4N0IsMHhGQSwweEZDLDB4NkEsMHgwQSwweDgzLDB4
QzksMHg3QSwweEZDLDB4Q0EsMHhBQSwweEU4LAotICAgIDB4MkEsMHg4MywweEVBLDB4N0EsMHg5
RCwweEI1LDB4NUYsMHg1RiwweDJBLDB4ODMsMHhFQSwweDdBLDB4QUEsMHhCNywweDY5LDB4N0Ys
Ci0gICAgMHg2QiwweDhCLDB4RTksMHg3QSwweDBCLDB4MkYsMHhGNSwweDVGLDB4QUMsMHg5Myww
eEU5LDB4N0EsMHgwMCwweDJBLDB4QUQsMHg1NSwKLSAgICAweDRFLDB4QUMsMHg0QiwweDhCLDB4
MEEsMHhBQiwweEZELDB4NTUsMHg2RSwweEFDLDB4OEMsMHg5MywweDAwLDB4MEEsMHgyRiwweEQ1
LAotICAgIDB4OEYsMHhCNCwweEVELDB4OUIsMHgwMCwweDAwLDB4MDIsMHhCRCwweEYwLDB4QkMs
MHg2RiwweEFDLDB4QUEsMHg4QiwweEVCLDB4RkQsCi0gICAgMHgyMywweDQxLDB4RTIsMHg0MCww
eEZELDB4REIsMHgwQiwweDgwLDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBMiwweDVFLDB4NTgsMHg1
MCwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4MDAsMHhBMiwweEVFLDB4MEEsMHgwMywweDQx
LDB4QTEsMHgzMCwweEY4LDB4NjIsMHhBMCwweEIwLAotICAgIDB4MDMsMHg0MSwweEMyLDB4Mzgs
MHg5NSwweDJELDB4RUIsMHhGRSwweDIzLDB4NDEsMHhFMiwweDM4LDB4RDcsMHhGNSwweDY1LDB4
QkIsCi0gICAgMHgwMywweDQxLDB4RTIsMHgzOCwweEQ3LDB4MzUsMHgxQiwweEMxLDB4MjMsMHg0
MSwweEUyLDB4MzgsMHg3NywweDZBLDB4RUYsMHg2RiwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4
LDB4QTMsMHhCRiwweEZCLDB4N0EsMHgwMiwweDM5LDB4QzIsMHgzOCwweEFBLDB4QkEsMHgyMCww
eEJELAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHg3OCwweEQ0LDB4N0UsMHhGRSwweEUyLDB4
MzgsMHhDMiwweDM4LDB4M0UsMHhCRCwweDMzLDB4NkUsCi0gICAgMHgwMywweDQxLDB4QzIsMHgz
OCwweEFBLDB4QTIsMHg4MiwweEJELDB4RTIsMHgzOCwweEMyLDB4MzgsMHhDQSwweEMwLDB4MDAs
MHgwMiwKLSAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4RkYsMHhGQiwweDVGLDB4NzUsMHgwMiww
eDM5LDB4QzIsMHgzOCwweDU1LDB4RjcsMHhCRiwweDhGLAotICAgIDB4MDMsMHg0MSwweEMyLDB4
MzgsMHhGNCwweDdDLDB4N0IsMHhBMiwweDIzLDB4MzksMHhDMiwweDM4LDB4QjUsMHhGNSwweEZG
LDB4RkYsCi0gICAgMHhFMiwweDM4LDB4QTEsMHgzMCwweDIwLDB4MDQsMHg4QSwweDI4LDB4MDMs
MHgzOSwweEMyLDB4MzgsMHhGRiwweDJGLDB4MEYsMHhDRCwKLSAgICAweDAyLDB4NDEsMHhFMyww
eDM4LDB4RDcsMHg1NSwweDVCLDB4NUQsMHgwMywweDQxLDB4QTIsMHgzMCwweDhELDB4QUYsMHg3
RSwweEVCLAotICAgIDB4RTMsMHg0MCwweEEyLDB4MzgsMHhCRiwweEE4LDB4MjIsMHgwRCwweDY3
LDB4NzIsMHgyMywweDQ5LDB4MkQsMHgyRCwweDJELDB4MDksCi0gICAgMHg2NiwweDcyLDB4MjYs
MHg2QSwweDU1LDB4RTgsMHg4MCwweDEyLDB4NjYsMHg3MiwweDA2LDB4NjIsMHhGQSwweERBLDB4
QjgsMHhGQSwKLSAgICAweDQ2LDB4NkEsMHg2NCwweDQ5LDB4RjgsMHg3QSwweDdFLDB4REEsMHg2
NCwweDQ5LDB4RTIsMHgzOCwweDVDLDB4NzYsMHg3RSwweDVGLAotICAgIDB4MjMsMHgzOSwweEUy
LDB4MzAsMHhENSwweDk3LDB4RkEsMHg3RiwweDIzLDB4MzksMHhBMiwweDMwLDB4QkEsMHhBOCww
eEFFLDB4N0YsCi0gICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDU3LDB4NjIsMHhBMiwweDBCLDB4
MDMsMHgzMSwweEEyLDB4MzAsMHhBQiwweDJBLDB4MDIsMHgyQSwKLSAgICAweDAzLDB4MzEsMHhD
MiwweDMwLDB4RkUsMHhFNywweDk2LDB4RkUsMHgyNCwweDM5LDB4RTMsMHgzMCwweEZCLDB4QkYs
MHhCRCwweEZELAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg3OCwweDY2LDB4RDQsMHhGRSww
eDAzLDB4MzksMHhDMiwweDMwLDB4MjcsMHgyQiwweDBGLDB4OEEsCi0gICAgMHgwMywweDM5LDB4
QzIsMHgzMCwweENBLDB4NkIsMHhBQSwweDgwLDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyOSwweEFG
LDB4QkEsMHgyQSwKLSAgICAweDQ0LDB4NDEsMHhFMiwweDMwLDB4OEIsMHhDNywweEQ1LDB4NTUs
MHgyMywweDM5LDB4RTMsMHgzOCwweENCLDB4RkUsMHhCQywweEZDLAotICAgIDB4MjMsMHgzOSww
eEUzLDB4MzgsMHhGRSwweEE3LDB4RUIsMHhCQSwweDAzLDB4MzksMHhFMywweDMwLDB4MDAsMHhB
MiwweDIyLDB4MjAsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzOCwweDNBLDB4OEEsMHhEQSwweDU4
LDB4NDQsMHg0MSwweEUzLDB4MzAsMHg3NCwweDdGLDB4NUYsMHhGQiwKLSAgICAweDIzLDB4Mzks
MHhDMiwweDMwLDB4MkYsMHhGRiwweEZGLDB4RkUsMHgyNCwweDQxLDB4RTIsMHgzMCwweDI3LDB4
RTEsMHhGRiwweEJGLAotICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHg1MywweDdGLDB4RDUsMHhG
NywweDQ0LDB4NDEsMHgwNCwweDM5LDB4NTUsMHg1RiwweEU4LDB4QUEsCi0gICAgMHgyNCwweDM5
LDB4RTMsMHgzOCwweDZCLDB4ODIsMHhGOCwweEJDLDB4MjMsMHgzOSwweEUzLDB4MzgsMHhBQiww
eEY3LDB4QkYsMHg4RiwKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4OEEsMHgzRSwweDI2LDB4
QUEsMHgyMywweDM5LDB4RTMsMHgzOCwweEFBLDB4QUEsMHhGRSwweDU2LAotICAgIDB4MjQsMHgz
OSwweDAzLDB4MzksMHg1NSwweEJFLDB4M0IsMHg5NSwweDI0LDB4MzksMHhFMiwweDMwLDB4QUEs
MHgyMCwweDJDLDB4OUUsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweDVBLDB4RDgsMHhGRSww
eEJGLDB4MjQsMHgzOSwweEUzLDB4MzAsMHhERiwweDdGLDB4REYsMHg2MCwKLSAgICAweDAzLDB4
MzEsMHhDMiwweDMwLDB4MDIsMHgyQSwweEFBLDB4RjcsMHgyNCwweDMxLDB4QzIsMHgzMCwweEI4
LDB4QkEsMHhCRCwweEJGLAotICAgIDB4MjMsMHgzOSwweEMyLDB4MjgsMHhGQiwweEJGLDB4QUEs
MHhBMywweDIzLDB4MzEsMHhFMywweDMwLDB4RDUsMHg3NSwweERFLDB4QkUsCi0gICAgMHgwMyww
eDMxLDB4QzIsMHgyOCwweEJGLDB4QkYsMHhBQiwweEFBLDB4MDMsMHgzMSwweEMyLDB4MjgsMHg5
RSwweERGLDB4RTgsMHhBOCwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4QUEsMHgyRCwweEVC
LDB4RkEsMHgwNCwweDMxLDB4QTIsMHgyOCwweEUyLDB4RUMsMHg2RiwweEVGLAotICAgIDB4RTMs
MHgzMCwweEMyLDB4MjgsMHhBRiwweEJBLDB4MkQsMHg5NSwweEUzLDB4MzAsMHhDMiwweDI4LDB4
NkUsMHhENywweDc2LDB4RkMsCi0gICAgMHhFMiwweDMwLDB4QzIsMHgyOCwweDdGLDB4NjcsMHg3
NywweDdELDB4RTMsMHgzMCwweEEyLDB4MjgsMHg4RiwweDgyLDB4RkIsMHg5RiwKLSAgICAweEUy
LDB4MjgsMHg4MiwweDIwLDB4RkMsMHg3RiwweEJGLDB4RUUsMHhDMiwweDI4LDB4ODIsMHgyMCww
eEVGLDB4QkYsMHhBQSwweEEyLAotICAgIDB4MDMsMHgyOSwweEEyLDB4MjgsMHhGOSwweEVGLDB4
RkQsMHhERiwweEMyLDB4MjgsMHg4MSwweDIwLDB4N0UsMHhGQywweEZGLDB4RUUsCi0gICAgMHhB
MiwweDI4LDB4ODEsMHgyMCwweDI3LDB4OTUsMHhERiwweDdBLDB4RTMsMHgzMCwweDgxLDB4MjAs
MHgwMiwweEFGLDB4RkYsMHg1RCwKLSAgICAweDI0LDB4MzksMHg4MSwweDIwLDB4OEEsMHhFQiww
eEI5LDB4RjUsMHgwMywweDMxLDB4QTIsMHgyOCwweEFCLDB4MkEsMHhBQSwweERCLAotICAgIDB4
MjMsMHgzOSwweEUyLDB4MzAsMHhGNSwweDBFLDB4QjIsMHhGQiwweDIzLDB4MzksMHhDMiwweDI4
LDB4NUEsMHg2OCwweEVBLDB4QkEsCi0gICAgMHgwMywweDMxLDB4QTEsMHgzMCwweEJBLDB4ODIs
MHg4MiwweEFBLDB4MDIsMHgzMSwweEMyLDB4MjgsMHhCRCwweEJELDB4N0QsMHhGRSwKLSAgICAw
eDAyLDB4MzksMHhBMSwweDI4LDB4QUEsMHhBOCwweEZBLDB4RTksMHgwMywweDM5LDB4QzIsMHgz
MCwweEVGLDB4N0EsMHg1MiwweDVGLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHgyRCwweDA3
LDB4MEEsMHgwMiwweDI0LDB4MzksMHhDMiwweDMwLDB4N0MsMHhCQSwweEFBLDB4RjIsCi0gICAg
MHhFMywweDMwLDB4QTIsMHgyOCwweEVBLDB4ODAsMHhGQSwweDk2LDB4MjQsMHgzOSwweEMyLDB4
MjgsMHhBRiwweEE3LDB4QTcsMHgwRiwKLSAgICAweDAzLDB4MzksMHhFMywweDMwLDB4OUYsMHhC
RSwweEI4LDB4NzAsMHgwMywweDM5LDB4RTMsMHgzMCwweDAwLDB4MEEsMHgwMywweEJGLAotICAg
IDB4NDQsMHg0MSwweDAzLDB4MzksMHg1RiwweEJGLDB4MDgsMHgzOCwweDY1LDB4NDEsMHhFMyww
eDMwLDB4NkYsMHhGNiwweDVFLDB4NTQsCi0gICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEIwLDB4
RUEsMHhGOCwweDU3LDB4MDMsMHgzMSwweEMyLDB4MzAsMHhCRiwweEJGLDB4REYsMHhGOSwKLSAg
ICAweDIzLDB4MzksMHhDMiwweDI4LDB4MkUsMHhBRSwweDRCLDB4NUYsMHgwMywweDMxLDB4QTIs
MHgyOCwweDAwLDB4OEEsMHhBQiwweEE3LAotICAgIDB4NjQsMHg0MSwweEMyLDB4MzAsMHhCRiww
eEJGLDB4QkQsMHgzRiwweDg1LDB4NDksMHhFMiwweDM4LDB4QjksMHgyRiwweEEyLDB4MDIsCi0g
ICAgMHgwNywweDYyLDB4ODUsMHg0OSwweEJELDB4QUYsMHhBQiwweEJCLDB4NDcsMHg2QSwweEU1
LDB4NTksMHg1RiwweEZGLDB4QjcsMHhCRiwKLSAgICAweDQ4LDB4NkEsMHhDNiwweDU5LDB4QkYs
MHgyRiwweDI1LDB4MkYsMHg2OCwweDZBLDB4MjcsMHg2MiwweDI5LDB4MEUsMHgyMiwweDAyLAot
ICAgIDB4QTksMHg3MiwweDQ3LDB4NjIsMHhBNywweEVFLDB4QUEsMHhBQiwweEE4LDB4NzIsMHg2
OCwweDZBLDB4RkYsMHgwRiwweEU3LDB4OUIsCi0gICAgMHhBOSwweDcyLDB4NjcsMHg2QSwweDhF
LDB4QkIsMHg5QSwweDA4LDB4QTksMHg3MiwweDg4LDB4NkEsMHgxNiwweDBFLDB4MkUsMHg0QSwK
LSAgICAweEM5LDB4N0EsMHg4OCwweDZBLDB4QTgsMHhCRSwweEVGLDB4RkQsMHhBOSwweDcyLDB4
NjgsMHg2QSwweDhBLDB4QTAsMHg5RSwweDJBLAotICAgIDB4RUEsMHg4MiwweDY4LDB4NkEsMHhB
RSwweEVCLDB4RUYsMHg3MywweEU5LDB4N0EsMHg4OCwweDcyLDB4RkEsMHhDQSwweERBLDB4RkQs
Ci0gICAgMHhDOSwweDdBLDB4ODgsMHg3MiwweDBBLDB4M0YsMHgyRiwweEEzLDB4MEEsMHg4Myww
eDg4LDB4NzIsMHgzMCwweEEyLDB4NkEsMHhERiwKLSAgICAweEVBLDB4N0EsMHg4OCwweDcyLDB4
QTgsMHhCQiwweEZCLDB4OUUsMHgwQSwweDgzLDB4QTgsMHg3MiwweDJGLDB4QUYsMHhBRiwweEQ1
LAotICAgIDB4MEEsMHg4MywweEE5LDB4NzIsMHhBMiwweEJBLDB4REYsMHg1RiwweDJCLDB4ODMs
MHhDOSwweDdBLDB4RUEsMHhCRiwweDE1LDB4NUQsCi0gICAgMHgwQiwweDgzLDB4Q0EsMHg3QSww
eERELDB4RkYsMHg3RSwweEFGLDB4MEEsMHg4MywweEM5LDB4N0EsMHg2QywweEZGLDB4RkYsMHg4
QSwKLSAgICAweDJCLDB4ODMsMHhDOSwweDdBLDB4M0YsMHhFRCwweEJCLDB4NzEsMHgwQSwweDgz
LDB4QTksMHg3QSwweDI4LDB4QkUsMHgyQiwweDZELAotICAgIDB4NEIsMHg4QiwweENBLDB4N0Es
MHgyQSwweDJBLDB4RUIsMHhGNSwweDJCLDB4OEIsMHhDOSwweDdBLDB4NjAsMHg3NiwweEYyLDB4
RkUsCi0gICAgMHgwQSwweDgzLDB4QzksMHg3QSwweDg4LDB4RUUsMHhBRiwweDlBLDB4NEIsMHg4
QiwweEU5LDB4N0EsMHg3RCwweEZELDB4QjMsMHgyQSwKLSAgICAweDJBLDB4ODMsMHhDOSwweDdB
LDB4QkUsMHg3NywweEZDLDB4RDgsMHgwQSwweDgzLDB4QTgsMHg3MiwweDNGLDB4MkQsMHg4Qiww
eEFFLAotICAgIDB4NEIsMHg4QiwweEVBLDB4N0EsMHgwQiwweEE3LDB4RTcsMHhCRiwweDhDLDB4
OTMsMHhFOSwweDdBLDB4MkEsMHhCQiwweEFGLDB4N0UsCi0gICAgMHhDRCwweDlCLDB4MEEsMHg4
MywweDAyLDB4QUEsMHhCRiwweDdELDB4OEYsMHhCNCwweDRCLDB4OEIsMHgyQSwweEFCLDB4RkQs
MHg1NSwKLSAgICAweDAzLDB4NDEsMHgyMywweDM5LDB4ODIsMHgwMCwweDA4LDB4MjMsMHgyMyww
eDQxLDB4QTIsMHgzOCwweEU4LDB4N0EsMHhGOCwweEZFLAotICAgIDB4MDIsMHg0MSwweEMyLDB4
MzgsMHhCQSwweEI5LDB4NjksMHhFQSwweEUyLDB4MzgsMHhDMiwweDM4LDB4RjgsMHhCQiwweDBC
LDB4MEYsCi0gICAgMHgwMiwweDQxLDB4QTIsMHgzMCwweENBLDB4QUIsMHg4MywweDgyLDB4MjMs
MHg0MSwweEUyLDB4MzgsMHhFQiwweDZELDB4RkMsMHhGQiwKLSAgICAweDIzLDB4NDEsMHhFMiww
eDM4LDB4NjUsMHhENSwweDU3LDB4OTUsMHgyMywweDQxLDB4QzIsMHgzOCwweEZCLDB4M0IsMHhE
RiwweDVCLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhGQywweDU4LDB4NkUsMHhGRiwweDAy
LDB4MzksMHhDMiwweDMwLDB4QUUsMHgzQiwweEZCLDB4REUsCi0gICAgMHgwMywweDQxLDB4QzIs
MHgzOCwweERFLDB4QjgsMHgyMCwweDNCLDB4MjMsMHg0MSwweEMyLDB4MzgsMHg1NiwweERGLDB4
RkUsMHhGQywKLSAgICAweDAzLDB4NDEsMHhBMiwweDMwLDB4QUIsMHhFQiwweEU3LDB4QjAsMHgw
MywweDQxLDB4RTIsMHgzOCwweEUxLDB4MDksMHg5RCwweDU1LAotICAgIDB4MDMsMHg0MSwweEMy
LDB4MzgsMHg3NywweEM0LDB4OEEsMHg4QSwweDAzLDB4NDEsMHhDMiwweDM4LDB4NEQsMHg1OSww
eDVCLDB4RTIsCi0gICAgMHgwMywweDQxLDB4RTIsMHgzOCwweEZDLDB4REYsMHg1NywweDU2LDB4
MDMsMHgzOSwweEMyLDB4MzgsMHhBRSwweEYwLDB4NUEsMHg1RCwKLSAgICAweDAzLDB4MzksMHhD
MSwweDMwLDB4RUYsMHhCRCwweEJFLDB4OEIsMHgwMywweDQxLDB4QzIsMHgzOCwweEI1LDB4QkYs
MHg1RiwweENFLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHhGQSwweDhBLDB4N0YsMHhGNyww
eEUzLDB4MzgsMHhDMiwweDM4LDB4NkMsMHg3RSwweDdGLDB4RjcsCi0gICAgMHgwMywweDQxLDB4
QTEsMHgzMCwweDI1LDB4QUYsMHhBQiwweEZFLDB4ODgsMHg3MiwweDY0LDB4NDksMHgwRCwweDJE
LDB4MkQsMHgyRCwKLSAgICAweDg3LDB4NzIsMHg0NywweDZBLDB4QjgsMHgzQSwweEI2LDB4RjMs
MHg2NiwweDcyLDB4QzQsMHg1OSwweEUyLDB4N0EsMHg3OCwweDdFLAotICAgIDB4RTUsMHg1OSww
eDQ0LDB4NDksMHhGOCwweDdFLDB4NUUsMHg3QSwweDQzLDB4NDEsMHhFMiwweDM4LDB4NUMsMHg3
RSwweEVGLDB4NzgsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDZBLDB4QTAsMHhBMiwweEJB
LDB4MDMsMHgzOSwweEEyLDB4MzAsMHg3QSwweEJBLDB4QUEsMHg4MCwKLSAgICAweDAzLDB4Mzks
MHhDMiwweDMwLDB4ODgsMHhFMiwweDYyLDB4NUEsMHgwMywweDMxLDB4QzIsMHgzMCwweDIzLDB4
OEEsMHgyRiwweDJBLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhBQSwweEJBLDB4NjAsMHhF
MCwweDAzLDB4MzEsMHhDMiwweDI4LDB4MkUsMHhCRCwweDk1LDB4OUQsCi0gICAgMHgwMywweDMx
LDB4QzIsMHgyOCwweEFBLDB4MkMsMHg5QywweEY2LDB4MDMsMHgzMSwweEMyLDB4MzAsMHhFRSww
eEFBLDB4RkEsMHg2OCwKLSAgICAweDAzLDB4MzEsMHhFMiwweDMwLDB4QkYsMHg1RiwweDk3LDB4
RTksMHgyMywweDMxLDB4QzIsMHgyOCwweEVBLDB4Q0EsMHhGRiwweEY4LAotICAgIDB4MDMsMHgz
OSwweEUyLDB4MzAsMHhCRSwweDZCLDB4REUsMHg1MiwweDAzLDB4MzksMHhFMywweDMwLDB4MDAs
MHhERSwweDNFLDB4QUEsCi0gICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDQyLDB4ODIsMHgzRCww
eEY3LDB4MjQsMHgzOSwweEMyLDB4MzAsMHg4MiwweEFBLDB4QUIsMHhGNywKLSAgICAweDAzLDB4
MzksMHhFMywweDMwLDB4QTAsMHhGMCwweDQyLDB4RjAsMHgyNCwweDM5LDB4QzIsMHgzMCwweDhB
LDB4QUIsMHhGRiwweERFLAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHhCOCwweDI4LDB4RjIs
MHg5MiwweDIzLDB4MzksMHhFMywweDMwLDB4QkUsMHhBRSwweEFFLDB4QkYsCi0gICAgMHg0NCww
eDQxLDB4MDMsMHgzOSwweERCLDB4OUYsMHgwNywweEFGLDB4NDQsMHg0MSwweDAzLDB4MzksMHhF
NywweEQ2LDB4QkUsMHgxRSwKLSAgICAweDQ0LDB4NDEsMHgwNCwweDM5LDB4NzcsMHgxRCwweEZC
LDB4QTAsMHg0NCwweDQxLDB4MDMsMHgzOSwweEI1LDB4NkYsMHhGRSwweERBLAotICAgIDB4MjQs
MHg0MSwweDAzLDB4MzksMHg1NSwweDk1LDB4QkYsMHhCQywweDI0LDB4MzksMHhDMiwweDMwLDB4
QkIsMHhBMiwweDgwLDB4MjIsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweEZGLDB4NUYsMHg1
QSwweEY4LDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyQSwweDhGLDB4RjcsMHhCQSwKLSAgICAweDI0
LDB4MzksMHhFMywweDMwLDB4OEYsMHhBOSwweEZGLDB4QkYsMHgyNCwweDM5LDB4RTMsMHgzMCww
eDYyLDB4QzAsMHhERSwweEZFLAotICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHhGRCwweEFBLDB4
QUEsMHhFQiwweDAzLDB4MzEsMHhDMiwweDMwLDB4QUYsMHgwRiwweDI4LDB4QTAsCi0gICAgMHgw
MywweDMxLDB4QTIsMHgzMCwweEEyLDB4RTgsMHgyMiwweDJBLDB4MjQsMHgzOSwweEUzLDB4MzAs
MHgyRSwweDBGLDB4OUYsMHhERSwKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4NkYsMHhFQSww
eEYyLDB4RUIsMHgwMywweDMxLDB4RTMsMHgzMCwweDYyLDB4N0YsMHg1RiwweEIyLAotICAgIDB4
MjMsMHgzOSwweEUzLDB4MzAsMHhENSwweDU1LDB4QzUsMHhGMywweDI0LDB4MzksMHhDMiwweDMw
LDB4NzcsMHg3RiwweDdCLDB4RUEsCi0gICAgMHgwMywweDMxLDB4QzMsMHgzMCwweEY1LDB4RUQs
MHg4RiwweDhELDB4RTMsMHgzMCwweEMyLDB4MjgsMHg3RSwweDc4LDB4NzQsMHg3MCwKLSAgICAw
eEUzLDB4MzAsMHhDMiwweDI4LDB4NTUsMHhGQiwweEJCLDB4RkYsMHhFMiwweDI4LDB4ODIsMHgy
OCwweDJFLDB4QUEsMHgyOCwweDAyLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjAsMHhCRiwweEVF
LDB4QkMsMHhGNCwweDAzLDB4MzEsMHhDMiwweDI4LDB4N0QsMHg3RiwweDUzLDB4REQsCi0gICAg
MHhDMiwweDI4LDB4QTIsMHgyMCwweDNBLDB4QUYsMHgyQSwweDBFLDB4RTIsMHgyOCwweEEyLDB4
MjAsMHg1NywweDVFLDB4NUYsMHg3QywKLSAgICAweDgxLDB4MjgsMHhBMiwweDIwLDB4RkYsMHg5
RiwweEZGLDB4RkQsMHhDMiwweDI4LDB4ODEsMHgyMCwweEZCLDB4RUYsMHhBQSwweDJELAotICAg
IDB4QTIsMHgyOCwweDgxLDB4MjAsMHhCNywweEFFLDB4QTAsMHhDOCwweEMyLDB4MjgsMHg2MSww
eDIwLDB4MkEsMHhCQSwweEZGLDB4RkYsCi0gICAgMHgwMywweDMxLDB4ODEsMHgyMCwweDBBLDB4
QjksMHhGRiwweDc1LDB4MDMsMHgzMSwweEEyLDB4MjgsMHgyOCwweEJBLDB4N0YsMHg1NSwKLSAg
ICAweDAzLDB4MzEsMHhDMiwweDMwLDB4MjIsMHhBQSwweDJGLDB4QTUsMHgwMywweDM5LDB4RTIs
MHgzMCwweERFLDB4MkEsMHgwMiwweDlGLAotICAgIDB4MjMsMHgzOSwweEMyLDB4MjgsMHg3NSww
eEI3LDB4QUEsMHgzQSwweDI0LDB4MzEsMHhDMiwweDMwLDB4N0QsMHhBQiwweEJBLDB4RjgsCi0g
ICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweEVCLDB4RUUsMHhBNSwweEUxLDB4MjQsMHgzOSwweEMy
LDB4MjgsMHhGQSwweDdBLDB4NjgsMHg3QiwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4MTcs
MHhCRiwweEI2LDB4QTgsMHgwMywweDM5LDB4QTEsMHgyOCwweDBFLDB4MkUsMHg5RiwweEJGLAot
ICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHg2MiwweEFBLDB4OEUsMHg4MywweDI0LDB4MzksMHhF
MywweDM4LDB4QUQsMHhCRCwweDM3LDB4QUQsCi0gICAgMHg0NCwweDQxLDB4RTIsMHgzMCwweEFB
LDB4QUYsMHhFQSwweDYyLDB4MjQsMHgzOSwweEMzLDB4MjgsMHhGOCwweDdFLDB4RkIsMHhGRSwK
LSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RDYsMHg1QywweEVFLDB4QjgsMHgwMywweDMxLDB4
QTIsMHgyOCwweEFELDB4QUYsMHhBQSwweDJFLAotICAgIDB4MDMsMHgzMSwweEExLDB4MjgsMHhG
RSwweEZGLDB4REMsMHgwRSwweDAzLDB4MzEsMHhDMiwweDI4LDB4QTUsMHhBNSwweEEzLDB4MDgs
Ci0gICAgMHg2NCwweDQxLDB4RTIsMHgzMCwweEJELDB4QkQsMHhBQiwweDJCLDB4QTUsMHg0OSww
eDY0LDB4NDksMHgyMSwweDJGLDB4QUQsMHgzMywKLSAgICAweEU2LDB4NTksMHhBNSwweDUxLDB4
QjEsMHhBNSwweEFELDB4MEIsMHg0OCwweDYyLDB4MDYsMHg1QSwweEU3LDB4NTUsMHg5RiwweDQ5
LAotICAgIDB4NjgsMHg2QSwweDA2LDB4NUEsMHgzRCwweEI1LDB4REUsMHhGNywweDY4LDB4NkEs
MHhFNiwweDU5LDB4MDgsMHgwQSwweDJBLDB4QTcsCi0gICAgMHhBOSwweDcyLDB4NDgsMHg2QSww
eDVDLDB4RkUsMHhFMCwweDNELDB4QTksMHg3MiwweDQ4LDB4NkEsMHgyMiwweEJBLDB4RjcsMHhG
RSwKLSAgICAweEM5LDB4NzIsMHg2OCwweDZBLDB4QjgsMHhCQiwweEJBLDB4OUYsMHhDQSwweDdB
LDB4MjcsMHg2MiwweEJBLDB4ODIsMHg4NiwweDA4LAotICAgIDB4QTksMHg3MiwweDY4LDB4NkEs
MHgwRSwweDAzLDB4QkYsMHg5OCwweEE5LDB4NzIsMHg4OCwweDZBLDB4RjQsMHhBNywweDk0LDB4
MjQsCi0gICAgMHhDOSwweDdBLDB4ODgsMHg3MiwweDcwLDB4NkYsMHhEQSwweEIyLDB4RTksMHg3
QSwweDg4LDB4NzIsMHhEOSwweEY1LDB4QTIsMHhCMywKLSAgICAweEU5LDB4N0EsMHhBOSwweDcy
LDB4Q0QsMHhGNiwweERDLDB4NUYsMHhFOSwweDdBLDB4QTksMHg3MiwweEZELDB4ODAsMHhFMiww
eDZFLAotICAgIDB4RTksMHg3QSwweDg5LDB4NzIsMHhCQSwweDkyLDB4MkIsMHhCQSwweEU5LDB4
N0EsMHhBOCwweDcyLDB4REYsMHg3MiwweDczLDB4REEsCi0gICAgMHgwQSwweDdCLDB4ODgsMHg2
QSwweEVFLDB4QkYsMHhCNSwweDJGLDB4MkEsMHg4MywweEM5LDB4NzIsMHhENywweDNGLDB4RjUs
MHhGRSwKLSAgICAweDJBLDB4ODMsMHhDOSwweDdBLDB4RkQsMHhCNCwweEFBLDB4REQsMHgyQSww
eDhCLDB4QTgsMHg3QSwweDJGLDB4RUUsMHg3QSwweDc2LAotICAgIDB4MEEsMHg4MywweEE5LDB4
N0EsMHhFMiwweEFCLDB4ODksMHhFQiwweEVBLDB4N0EsMHhBOSwweDdBLDB4RUQsMHg1RCwweEE4
LDB4QTgsCi0gICAgMHgwQSwweDgzLDB4QTksMHg3MiwweEE1LDB4QUQsMHhBRSwweEFFLDB4MEIs
MHg4MywweENBLDB4N0EsMHhCRiwweDk1LDB4QUYsMHg2QiwKLSAgICAweDBCLDB4ODMsMHhDQSww
eDdBLDB4REUsMHhENywweERFLDB4NzksMHg0QiwweDhCLDB4QzksMHg3QSwweDJCLDB4QUYsMHhG
NSwweEZELAotICAgIDB4MkEsMHg4MywweEM5LDB4N0EsMHhGMCwweEEyLDB4QTYsMHgwRSwweDJB
LDB4ODMsMHhDOSwweDdBLDB4RDcsMHhFOCwweEMwLDB4QTgsCi0gICAgMHgwQSwweDgzLDB4Qzks
MHg3QSwweDI4LDB4MDksMHhFRCwweDgzLDB4NEIsMHg4QiwweEU5LDB4N0EsMHhBOCwweDhCLDB4
QkQsMHg4RCwKLSAgICAweDRBLDB4ODMsMHgwOSwweDdCLDB4OEUsMHg2RiwweENCLDB4QUYsMHg0
QiwweDhCLDB4RTksMHg3QSwweDBBLDB4M0IsMHg5RSwweDdGLAotICAgIDB4MDMsMHg0MSwweEMy
LDB4MzgsMHgwNiwweEFBLDB4QzMsMHhFMCwweDAzLDB4NDEsMHhBMiwweDMwLDB4NzgsMHhFQSww
eEJFLDB4RUYsCi0gICAgMHgwMywweDQxLDB4QTIsMHgzOCwweEFCLDB4QkIsMHhFQiwweENELDB4
RTIsMHgzOCwweEExLDB4MzAsMHgwOCwweDBBLDB4MDgsMHhDOCwKLSAgICAweDAzLDB4NDEsMHhD
MiwweDM4LDB4QkEsMHhBNSwweDk3LDB4MTcsMHgyMywweDQxLDB4RTIsMHgzOCwweDZGLDB4NzUs
MHhGRSwweEZFLAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzgsMHhCNywweEVGLDB4RTAsMHg1Myww
eDAzLDB4NDEsMHhDMiwweDM4LDB4RTAsMHhGQSwweDU3LDB4NzMsCi0gICAgMHgwMywweDQxLDB4
RTIsMHgzOCwweDU1LDB4NTYsMHhGRiwweDZGLDB4MjMsMHg0MSwweEMxLDB4MzAsMHhERiwweEQ3
LDB4QkYsMHhCQiwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4QUYsMHhBNywweDJBLDB4M0Ms
MHgwMywweDQxLDB4QzIsMHgzOCwweEVCLDB4QUYsMHgyNywweEI3LAotICAgIDB4MDMsMHg0MSww
eEMyLDB4MzgsMHhBMCwweERBLDB4RjAsMHhBMCwweDAzLDB4MzksMHhDMiwweDM4LDB4RUYsMHhF
QSwweDZBLDB4RkIsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzOCwweDM3LDB4RDcsMHhBRiwweEVC
LDB4MDMsMHg0MSwweEMyLDB4MzgsMHhFOCwweEMwLDB4QzIsMHhERSwKLSAgICAweDAzLDB4NDEs
MHhDMiwweDM4LDB4RUIsMHhEMywweDdCLDB4REEsMHgwMywweDQxLDB4QTEsMHgzMCwweDdGLDB4
RkEsMHhGRCwweENBLAotICAgIDB4RTIsMHgzOCwweEMyLDB4MzgsMHg4RCwweDBELDB4QzUsMHgy
RSwweEUyLDB4MzgsMHhDMiwweDM4LDB4ODQsMHg3NCwweDk1LDB4QTQsCi0gICAgMHhFMiwweDM4
LDB4QzIsMHgzOCwweEMxLDB4RjIsMHgwMCwweDA4LDB4MDMsMHg0MSwweEEyLDB4MzgsMHhCNyww
eEJGLDB4QkIsMHhBMiwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4NTcsMHg3RiwweEVCLDB4
NEIsMHg2NywweDcyLDB4MDMsMHg0MSwweDI5LDB4MEQsMHgwRCwweDBELAotICAgIDB4ODcsMHg3
MiwweDI2LDB4NkEsMHhBMCwweEFBLDB4N0EsMHg3OCwweDQ3LDB4NkEsMHg2NCwweDUxLDB4RTgs
MHg2OCwweEY4LDB4RkEsCi0gICAgMHhBNCwweDUxLDB4MDMsMHg0MSwweEZDLDB4REUsMHg3RSww
eEZBLDB4NDQsMHg0OSwweEMyLDB4MzAsMHhFOCwweEJFLDB4RkYsMHhGRSwKLSAgICAweDAzLDB4
MzksMHhDMiwweDMwLDB4MjgsMHhGOCwweEY4LDB4RTAsMHgwMywweDM5LDB4QzIsMHgzMCwweEFB
LDB4QTcsMHhFNSwweEY1LAotICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHhERiwweEJFLDB4QUIs
MHgyRiwweDAzLDB4MzEsMHhBMiwweDMwLDB4MEEsMHhBQSwweDg4LDB4RTIsCi0gICAgMHgwMyww
eDMxLDB4QzIsMHgzMCwweEMyLDB4QkEsMHhCQSwweDZFLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhB
QSwweEJBLDB4N0YsMHg1RiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4N0UsMHgyQSwweDg4
LDB4MDIsMHgwMywweDMxLDB4QzIsMHgzMCwweDZBLDB4RTIsMHg3QywweEI4LAotICAgIDB4MDMs
MHgzMSwweEMyLDB4MjgsMHg4QiwweENCLDB4RjksMHg4RSwweDIzLDB4MzksMHhDMywweDMwLDB4
QkMsMHhGRiwweDdGLDB4NUYsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEUyLDB4M0YsMHg4
QiwweEFCLDB4MDMsMHgzMSwweEMyLDB4MjgsMHgwMiwweDAyLDB4MjMsMHg3QiwKLSAgICAweDAz
LDB4MzksMHhFMywweDMwLDB4RkEsMHhFRiwweDFFLDB4REIsMHgyNCwweDM5LDB4QzIsMHgzMCww
eEI5LDB4RjcsMHhGQywweEUwLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBMiwweEVCLDB4
QUIsMHhBQSwweEUzLDB4MzAsMHhBMiwweDMwLDB4MDgsMHgyOCwweDJBLDB4OEYsCi0gICAgMHgy
NCwweDQxLDB4RTMsMHgzMCwweEQ3LDB4QUMsMHhBQSwweDgwLDB4MjQsMHgzOSwweEUzLDB4MzAs
MHg3QiwweEJCLDB4QUUsMHhBRiwKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4MDMsMHgyQSww
eDVGLDB4OUYsMHg0NCwweDQxLDB4RTMsMHgzMCwweDJBLDB4MkEsMHhBNywweDk1LAotICAgIDB4
NjQsMHg0MSwweDAzLDB4MzksMHhGQSwweEQ4LDB4NUYsMHhGNywweDI0LDB4MzksMHgwMywweDM5
LDB4NzQsMHhGNCwweDU0LDB4NTcsCi0gICAgMHgyMywweDM5LDB4QzMsMHgzMCwweEUyLDB4OUEs
MHhFRSwweEJCLDB4MjQsMHgzOSwweEUzLDB4MzgsMHgyNywweEFGLDB4QUEsMHhBQSwKLSAgICAw
eDI0LDB4MzksMHhFMywweDM4LDB4RkEsMHhBMiwweEVCLDB4RkYsMHg0NCwweDM5LDB4RTMsMHgz
OCwweDVGLDB4RkYsMHg3RSwweEZELAotICAgIDB4MjQsMHgzOSwweDAzLDB4MzksMHg1NCwweDZE
LDB4RjksMHhERCwweDIzLDB4MzksMHhFMywweDMwLDB4RkUsMHhEOCwweEE4LDB4QjYsCi0gICAg
MHgwMywweDM5LDB4RTMsMHgzMCwweEE5LDB4RTUsMHgxNywweDc0LDB4MjQsMHgzOSwweEUzLDB4
MzAsMHg1RSwweDE1LDB4MEYsMHhCNSwKLSAgICAweDQ0LDB4MzksMHhFMywweDMwLDB4RjUsMHhF
OSwweEZGLDB4RTMsMHgyNCwweDM5LDB4QzIsMHgyOCwweDNBLDB4QjgsMHhBRSwweDlBLAotICAg
IDB4MjMsMHgzOSwweEMzLDB4MjgsMHhERiwweEZGLDB4MkEsMHgwQSwweDIzLDB4MzksMHhFMyww
eDMwLDB4RkYsMHhGQiwweEZDLDB4NjgsCi0gICAgMHhFNCwweDM4LDB4MjMsMHgzMSwweEVGLDB4
RUEsMHhGQiwweEFCLDB4MjMsMHgzOSwweEUzLDB4MzAsMHhENywweEZGLDB4RUMsMHhCQiwKLSAg
ICAweDIzLDB4MzksMHhDMiwweDMwLDB4OEQsMHhBRSwweEVFLDB4RkUsMHgwMywweDMxLDB4QzMs
MHgzMCwweEY4LDB4RjgsMHhCQiwweDg3LAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhGNyww
eEE3LDB4MDksMHgwMywweDAzLDB4MzEsMHhDMiwweDI4LDB4RjcsMHhGRSwweDBBLDB4RjgsCi0g
ICAgMHhFMiwweDMwLDB4QzIsMHgyOCwweDU2LDB4RDcsMHhENywweDU3LDB4RTIsMHgyOCwweEEy
LDB4MjgsMHhBQiwweDgwLDB4RUEsMHg4QSwKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4RDks
MHhGQiwweDZGLDB4NzUsMHgwMywweDMxLDB4ODEsMHgyMCwweDcyLDB4RTIsMHhFQSwweEFCLAot
ICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHg3OCwweDNFLDB4MkEsMHgwMCwweEUzLDB4MzAsMHg4
MSwweDIwLDB4QTksMHg2MywweENBLDB4QkIsCi0gICAgMHhBMiwweDI4LDB4ODEsMHgyMCwweEVC
LDB4MkIsMHhFQSwweEEwLDB4QTIsMHgyOCwweDgyLDB4MjAsMHgzRiwweEFGLDB4QkEsMHhGQSwK
LSAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4QUYsMHhENywweEZGLDB4RjIsMHhDMiwweDI4LDB4
NjEsMHgyMCwweDhBLDB4QkIsMHhGNywweDdGLAotICAgIDB4RTMsMHgzMCwweDgxLDB4MjAsMHgy
QiwweEI3LDB4QkQsMHhENSwweEUzLDB4MzAsMHhBMiwweDI4LDB4MjAsMHgwMiwweERCLDB4NUYs
Ci0gICAgMHgwMywweDMxLDB4QTIsMHgyOCwweDJBLDB4QUEsMHg5RiwweEY1LDB4MjQsMHgzOSww
eEMyLDB4MjgsMHgzQSwweEJBLDB4RUQsMHhENSwKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4
NjcsMHhGNywweDM1LDB4RkYsMHgwNCwweDMxLDB4RTMsMHgzMCwweDdELDB4NjcsMHgxRCwweDU3
LAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHg3RSwweEE4LDB4QUUsMHhCNSwweDAzLDB4MzEs
MHhDMiwweDI4LDB4RjUsMHhBRiwweDJBLDB4ODgsCi0gICAgMHg0NCwweDM5LDB4RTIsMHgzMCww
eENGLDB4QkQsMHg4RiwweDJELDB4MjMsMHgzOSwweEUyLDB4MzAsMHhBRiwweEFFLDB4Q0EsMHgy
OCwKLSAgICAweDI0LDB4MzksMHhDMiwweDI4LDB4ODAsMHhFMiwweEVBLDB4NjAsMHgwMywweDM5
LDB4ODIsMHgyOCwweDAyLDB4ODAsMHhBQiwweEI1LAotICAgIDB4MDMsMHgzMSwweEMyLDB4Mjgs
MHg1RSwweDI3LDB4QTUsMHg5NSwweDAzLDB4MzEsMHhDMiwweDI4LDB4MkYsMHg5RiwweEY3LDB4
RkUsCi0gICAgMHgwMywweDMxLDB4QzIsMHgyOCwweDg4LDB4MkUsMHgzRSwweDNGLDB4NDQsMHgz
OSwweEUzLDB4MzAsMHhCRiwweEZELDB4QUYsMHgyRiwKLSAgICAweEE1LDB4NDksMHgyMywweDM5
LDB4QkQsMHgyRCwweDJGLDB4MkIsMHhDNSwweDUxLDB4ODUsMHg0OSwweEIxLDB4MEIsMHhBOCww
eDAyLAotICAgIDB4MDYsMHg1QSwweEM2LDB4NTEsMHg5RCwweEI1LDB4MjMsMHgzMiwweDI3LDB4
NjIsMHhDNiwweDU5LDB4MEIsMHhGQiwweDZBLDB4QkEsCi0gICAgMHgyNywweDYyLDB4QzYsMHg1
MSwweDgwLDB4QjgsMHhFQSwweDJBLDB4NDcsMHg2MiwweDA3LDB4NjIsMHhBQSwweEFFLDB4MkYs
MHgzOSwKLSAgICAweDY4LDB4NkEsMHgyNywweDYyLDB4MEUsMHhCRSwweERGLDB4QUEsMHg4OCww
eDZBLDB4NDgsMHg2QSwweERDLDB4RUUsMHg5NywweEJELAotICAgIDB4QzksMHg3MiwweDQ4LDB4
NkEsMHhCRiwweDJGLDB4QkYsMHhERiwweEVBLDB4N0EsMHhBOSwweDcyLDB4QkIsMHhFQiwweDdG
LDB4RDYsCi0gICAgMHhFQSwweDdBLDB4ODgsMHg2QSwweDVFLDB4N0IsMHg3RiwweDJCLDB4RTks
MHg3QSwweDg4LDB4NkEsMHhFNSwweDg5LDB4RTAsMHhBRSwKLSAgICAweEU5LDB4N0EsMHg4OCww
eDcyLDB4RjIsMHhFNSwweEI1LDB4QUMsMHhFQSwweDdBLDB4ODksMHg3MiwweDVCLDB4RkYsMHhC
RSwweDhFLAotICAgIDB4QzksMHg3QSwweDg4LDB4NzIsMHhCMCwweEZBLDB4RDIsMHhBMCwweEU5
LDB4N0EsMHg4OCwweDcyLDB4QUUsMHhBRCwweEJGLDB4RkYsCi0gICAgMHhFQSwweDdBLDB4ODgs
MHg3MiwweEFCLDB4RUEsMHg3MiwweDYyLDB4RTksMHg3QSwweEE4LDB4NzIsMHhGQSwweEVFLDB4
RjksMHgyOSwKLSAgICAweDBBLDB4ODMsMHhBOSwweDcyLDB4MjksMHhDQiwweEEyLDB4RUIsMHgy
QSwweDgzLDB4QzksMHg3QSwweEVCLDB4QUEsMHgyRiwweEJELAotICAgIDB4MEEsMHg4MywweEM5
LDB4N0EsMHg1NCwweDNBLDB4QUEsMHhGQSwweDBBLDB4ODMsMHhDOSwweDdBLDB4NTcsMHhBOCww
eEE4LDB4RjcsCi0gICAgMHgyQSwweDgzLDB4QTksMHg3QSwweEI3LDB4QTMsMHhBQSwweEIyLDB4
MkEsMHg4MywweEM5LDB4N0EsMHg3NSwweEZGLDB4QTIsMHhBMiwKLSAgICAweDBBLDB4ODMsMHhB
OSwweDcyLDB4QkUsMHhCQSwweDVFLDB4N0MsMHgwQSwweDgzLDB4QTksMHg3MiwweEZGLDB4QTIs
MHhGQSwweDVCLAotICAgIDB4MEIsMHg4MywweENBLDB4N0EsMHhFQSwweEZGLDB4RkQsMHhGRCww
eEVBLDB4N0EsMHhBOSwweDcyLDB4MjAsMHgyMiwweERBLDB4QTAsCi0gICAgMHgyQSwweDgzLDB4
QTksMHg3MiwweDhBLDB4RUYsMHg3RiwweDdFLDB4MkIsMHg4MywweEE5LDB4NzIsMHhBQSwweDJE
LDB4QkYsMHhGNywKLSAgICAweDJBLDB4ODMsMHhDOSwweDdBLDB4QjIsMHhCOCwweEZFLDB4REYs
MHg0QiwweDhCLDB4RUEsMHg3QSwweENCLDB4MjEsMHg4RSwweDVELAotICAgIDB4NEIsMHg4Myww
eEU5LDB4N0EsMHhGRSwweERFLDB4QUIsMHg3QiwweDBBLDB4ODMsMHhDOSwweDdBLDB4QjAsMHhG
RiwweEJBLDB4RjYsCi0gICAgMHgwMywweDQxLDB4QTEsMHgzMCwweEIwLDB4RjIsMHhCQSwweDhC
LDB4RTIsMHgzOCwweEExLDB4MzAsMHhCQywweEZCLDB4MjgsMHhCQywKLSAgICAweDAzLDB4NDEs
MHhDMiwweDM4LDB4NTUsMHg1RSwweEVBLDB4QUYsMHgyMywweDQxLDB4QzIsMHgzOCwweDc1LDB4
M0QsMHhCRCwweDlFLAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzgsMHhBRCwweEU3LDB4MjYsMHhB
RiwweDIzLDB4NDEsMHhFMiwweDM4LDB4RDcsMHhENywweDVFLDB4QjgsCi0gICAgMHgwMiwweDM5
LDB4QzIsMHgzOCwweDZBLDB4RUEsMHg2OCwweEE4LDB4MDIsMHgzOSwweEMyLDB4MzgsMHhGRiww
eDZGLDB4NUEsMHg3QywKLSAgICAweDIyLDB4NDEsMHhDMiwweDM4LDB4NUIsMHg1RCwweDdELDB4
N0YsMHgwMywweDQxLDB4QTEsMHgzMCwweDhCLDB4QUIsMHhGRCwweEU1LAotICAgIDB4MDMsMHg0
MSwweEMyLDB4MzgsMHhGNCwweDVBLDB4NUIsMHg3QSwweDIzLDB4MzksMHhDMiwweDM4LDB4QkQs
MHhENywweEZELDB4NUYsCi0gICAgMHgwMywweDM5LDB4QTEsMHgzMCwweDJBLDB4QUYsMHhFNiww
eEVBLDB4RTIsMHgzOCwweEMyLDB4MzgsMHgwOCwweDJBLDB4Q0EsMHg3QiwKLSAgICAweDAyLDB4
MzksMHhDMiwweDM4LDB4RkIsMHhGNywweDdGLDB4RUIsMHhFMiwweDM4LDB4QzIsMHgzMCwweEFD
LDB4MEUsMHhDOSwweDRGLAotICAgIDB4RTIsMHgzOCwweEMyLDB4MzgsMHgwOCwweDAyLDB4QTIs
MHgyMCwweDAzLDB4NDEsMHhDMiwweDM4LDB4QUEsMHhERSwweEY5LDB4NEYsCi0gICAgMHgwMyww
eDQxLDB4QzIsMHgzOCwweEZDLDB4RjgsMHhGQSwweEZELDB4MDMsMHgzOSwweEMyLDB4MzgsMHhG
QSwweEJCLDB4REYsMHhENSwKLSAgICAweDAzLDB4NDEsMHhBMiwweDM4LDB4RkEsMHg3QSwweEZF
LDB4QjgsMHhFMiwweDM4LDB4QTIsMHgzMCwweEEyLDB4OUIsMHhCQywweDNDLAotICAgIDB4MDMs
MHg0MSwweEMyLDB4MzgsMHhBQiwweEFBLDB4QkEsMHhFNywweDY3LDB4NzIsMHgwMiwweDQxLDB4
MEQsMHgyRCwweEFELDB4MzUsCi0gICAgMHg4NywweDcyLDB4MDYsMHg2MiwweDc4LDB4NjgsMHg2
QSwweEVBLDB4MDYsMHg2QSwweDYzLDB4NDksMHhFMCwweEU4LDB4RkMsMHg3RSwKLSAgICAweDg0
LDB4NTEsMHgyMywweDQxLDB4N0MsMHhGRSwweDdFLDB4Q0IsMHgyMywweDQxLDB4RTIsMHgzMCww
eEZFLDB4RkMsMHg3QywweDVDLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBMCwweEZFLDB4
QUYsMHhFNywweDAzLDB4MzksMHhDMiwweDMwLDB4RjUsMHhENSwweEFCLDB4QkQsCi0gICAgMHgw
MywweDM5LDB4QzIsMHgzMCwweENCLDB4NkYsMHhFQSwweENCLDB4RTMsMHgzMCwweEMyLDB4Mjgs
MHhFMCwweEZDLDB4QjAsMHhFMCwKLSAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4QkIsMHhBRSww
eEZFLDB4NTgsMHhFMywweDMwLDB4QzIsMHgyOCwweEJDLDB4RjYsMHgzRCwweDA5LAotICAgIDB4
MjQsMHgzOSwweEMyLDB4MzAsMHgyQSwweDhCLDB4RTcsMHhGRiwweDIzLDB4MzksMHhBMiwweDI4
LDB4QTIsMHhGQiwweEY3LDB4RjcsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEE2LDB4QUUs
MHg4QiwweEFCLDB4MDMsMHgzMSwweEMyLDB4MzAsMHhEQSwweDUwLDB4RjIsMHhBQSwKLSAgICAw
eEUzLDB4MzAsMHhDMiwweDI4LDB4MkEsMHgyRiwweEJDLDB4MjgsMHgyMywweDM5LDB4QzIsMHgy
OCwweEZGLDB4RkYsMHhGQiwweEEyLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHgwQiwweDJC
LDB4MkYsMHgwQSwweDIzLDB4MzksMHhFMywweDMwLDB4N0EsMHg3QSwweERGLDB4RDcsCi0gICAg
MHgwMywweDM5LDB4RTMsMHgzMCwweDhCLDB4RUIsMHhGMiwweEQyLDB4MDMsMHgzOSwweEMyLDB4
MzAsMHhBOCwweDM4LDB4RkYsMHg2RiwKLSAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4QTAsMHhG
QSwweDdGLDB4RUQsMHgyNCwweDM5LDB4RTMsMHgzMCwweENGLDB4RTUsMHhGRiwweEY3LAotICAg
IDB4MjQsMHgzOSwweEUzLDB4MzAsMHg4QiwweDhCLDB4OEUsMHg5QywweDI0LDB4MzksMHhFMyww
eDMwLDB4M0YsMHgyRiwweEIzLDB4RkEsCi0gICAgMHg0NCwweDQxLDB4RTIsMHgzMCwweEIyLDB4
RjgsMHhFRSwweDdELDB4NDMsMHgzOSwweEUyLDB4MzgsMHhGQSwweEFBLDB4QUEsMHhCRiwKLSAg
ICAweDQ0LDB4NDEsMHgwMywweDM5LDB4QkQsMHhBQiwweEFELDB4RjcsMHg0NCwweDQxLDB4MDMs
MHgzOSwweDc3LDB4N0UsMHhCNywweDY4LAotICAgIDB4NDQsMHg0MSwweEUzLDB4MzgsMHg3Riww
eDRBLDB4RUEsMHhGRiwweEUzLDB4MzgsMHgyMywweDMxLDB4RUYsMHhBQSwweEFFLDB4QUYsCi0g
ICAgMHgwMywweDM5LDB4QzMsMHgzMCwweDAwLDB4RTIsMHhEQSwweEEzLDB4MjQsMHg0MSwweEUz
LDB4MzAsMHhBRiwweEJGLDB4QTksMHg4QSwKLSAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4RkEs
MHhGRSwweEJFLDB4N0MsMHgyNCwweDM5LDB4QzIsMHgzMCwweEFELDB4RUIsMHhBQSwweEUyLAot
ICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg2MywweDdCLDB4N0YsMHhFRCwweDAzLDB4MzEsMHhD
MiwweDMwLDB4MDAsMHhBQiwweEFELDB4RUEsCi0gICAgMHg0MywweDM5LDB4RTIsMHgzMCwweEJE
LDB4RUEsMHhBQywweEVCLDB4MjMsMHgzOSwweDAzLDB4MzEsMHg0QywweDUwLDB4NzAsMHg1QSwK
LSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4NUYsMHhGRiwweEVCLDB4QTgsMHgwMywweDMxLDB4
RTIsMHgzMCwweEMxLDB4RkEsMHhGNywweDVFLAotICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhC
RiwweEZGLDB4RUIsMHhDQiwweDAzLDB4MzksMHhBMiwweDI4LDB4MjIsMHgyOCwweDJBLDB4MkIs
Ci0gICAgMHg0NCwweDM5LDB4RTMsMHgzMCwweDc1LDB4NzcsMHg3QywweEZBLDB4MDMsMHgzMSww
eEMyLDB4MzAsMHhDMiwweEVFLDB4REUsMHg4QSwKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4
NUQsMHhGRCwweEZGLDB4QTAsMHgwMywweDMxLDB4QzIsMHgyOCwweDU1LDB4NTcsMHhCNywweDFG
LAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhENSwweEY1LDB4QkEsMHgyMCwweDI0LDB4MzEs
MHhDMiwweDI4LDB4NUYsMHg1QiwweDczLDB4NkYsCi0gICAgMHhFMywweDMwLDB4QzIsMHgyOCww
eERELDB4RjcsMHg1NSwweDdGLDB4RTMsMHgyOCwweEEyLDB4MjgsMHg3QSwweEQ4LDB4QUEsMHhB
QiwKLSAgICAweEMyLDB4MjgsMHhBMiwweDIwLDB4NUEsMHhFQiwweDBCLDB4OEYsMHhDMiwweDI4
LDB4QTIsMHgyMCwweDdGLDB4RUMsMHhFQiwweEI3LAotICAgIDB4QzIsMHgyOCwweDgyLDB4MjAs
MHg1QSwweDVBLDB4REMsMHhGQSwweEMzLDB4MjgsMHg4MiwweDIwLDB4NUQsMHg1NywweEZDLDB4
QUEsCi0gICAgMHhDMiwweDIwLDB4NjEsMHgxOCwweEY3LDB4RkYsMHhCQSwweEEyLDB4QTIsMHgy
OCwweDgxLDB4MjAsMHgwRiwweDE1LDB4RjcsMHg3OCwKLSAgICAweEEyLDB4MjgsMHg2MSwweDIw
LDB4MkEsMHhCQSwweEJCLDB4QkYsMHhFMiwweDMwLDB4ODIsMHgyMCwweEJBLDB4MkYsMHhGQiww
eEY1LAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHgzQSwweEJFLDB4NUYsMHhENSwweDAzLDB4
MzEsMHhBMiwweDI4LDB4MjIsMHgyQywweDJFLDB4QkQsCi0gICAgMHhFMywweDMwLDB4QTIsMHgy
OCwweEE4LDB4ODAsMHhGOCwweDVGLDB4MDMsMHgzMSwweEEyLDB4MjgsMHg4QywweDhFLDB4NTcs
MHg1NSwKLSAgICAweDQ0LDB4MzksMHhBMiwweDI4LDB4MkIsMHhBRiwweEFGLDB4RkQsMHg2NSww
eDQxLDB4MDMsMHgzMSwweEJFLDB4RTgsMHhFMywweDdELAotICAgIDB4MjQsMHgzOSwweEMyLDB4
MjgsMHhFOCwweDc4LDB4NUUsMHg1RSwweEUzLDB4MzAsMHhBMiwweDI4LDB4RTMsMHhDMiwweEJG
LDB4OEIsCi0gICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEVGLDB4OEEsMHhBQiwweDNGLDB4MjMs
MHgzOSwweEMyLDB4MjgsMHhERiwweEY3LDB4RTIsMHhBQiwKLSAgICAweDIzLDB4MzksMHhFMyww
eDMwLDB4RjcsMHhBRiwweEFGLDB4MEQsMHhBNSwweDQ5LDB4MDMsMHgzOSwweEE1LDB4MjUsMHhB
RiwweDJCLAotICAgIDB4MDYsMHg1QSwweDY1LDB4NDEsMHhBRCwweDhCLDB4QUIsMHhFQSwweDA2
LDB4NUEsMHhBNSwweDUxLDB4QUIsMHgyRSwweDA5LDB4QTIsCi0gICAgMHhDNiwweDU5LDB4MDUs
MHg1MiwweEFCLDB4RUUsMHhGQiwweEVBLDB4MjcsMHg2MiwweEM1LDB4NTksMHhBNywweEFELDB4
OEIsMHhBMiwKLSAgICAweDQ4LDB4NkEsMHhFNiwweDU5LDB4QkEsMHhGRCwweERCLDB4ODIsMHg4
OCwweDZBLDB4MDYsMHg1QSwweEQ3LDB4RDcsMHhERiwweEFBLAotICAgIDB4QTksMHg3MiwweDQ3
LDB4NjIsMHhFRiwweDJELDB4QUQsMHgzQiwweDg5LDB4NkEsMHg0OCwweDZBLDB4RkEsMHhBMCww
eDgyLDB4OEIsCi0gICAgMHg4OCwweDZBLDB4NDgsMHg2QSwweEFGLDB4QUEsMHhBQSwweERGLDB4
Q0EsMHg3QSwweDY4LDB4NkEsMHg4QiwweDAzLDB4MkIsMHhCRCwKLSAgICAweEU5LDB4N0EsMHg2
OCwweDZBLDB4MjIsMHhGQiwweEZBLDB4RjcsMHhFOSwweDdBLDB4QTksMHg3MiwweEZELDB4QkIs
MHhBRiwweEQ1LAotICAgIDB4RTksMHg3QSwweDY4LDB4NkEsMHhCQSwweDlGLDB4RkUsMHhBOCww
eEM5LDB4N0EsMHg2OCwweDZBLDB4ODAsMHgyOCwweEVBLDB4RkMsCi0gICAgMHhFOSwweDdBLDB4
ODgsMHg3MiwweDYzLDB4QjIsMHgwMywweEFGLDB4RTksMHg3QSwweDg4LDB4NzIsMHhGRiwweEJE
LDB4MkIsMHgwMCwKLSAgICAweEVBLDB4N0EsMHg4OCwweDcyLDB4OEEsMHhCQSwweDZBLDB4N0Ms
MHhFOSwweDdBLDB4QTksMHg3MiwweDgyLDB4MEIsMHhBRiwweDZELAotICAgIDB4RTksMHg3QSww
eEE4LDB4NzIsMHg3OSwweDdBLDB4QTIsMHhFQSwweEU5LDB4N0EsMHhBOSwweDcyLDB4QjgsMHhF
NCwweEMwLDB4QjAsCi0gICAgMHhDOSwweDdBLDB4ODgsMHg3MiwweEJDLDB4REIsMHhCQiwweDdF
LDB4QzksMHg3QSwweDg4LDB4NzIsMHgyQiwweDJCLDB4QUYsMHgxNSwKLSAgICAweDBBLDB4ODMs
MHhBOSwweDcyLDB4MjIsMHhCRiwweEY5LDB4RkYsMHgyQiwweDgzLDB4ODgsMHg3MiwweEE4LDB4
QTMsMHhCRCwweERGLAotICAgIDB4RUEsMHg3QSwweEE4LDB4NzIsMHhCOCwweEZFLDB4QkMsMHhB
QSwweEVBLDB4N0EsMHg4OCwweDcyLDB4RDIsMHhCQSwweEFBLDB4QTgsCi0gICAgMHgyQiwweDgz
LDB4QzksMHg3QSwweEZELDB4NUQsMHhCNywweEQ1LDB4MEEsMHg4MywweEE5LDB4NzIsMHgyMCww
eEI2LDB4OUUsMHhBMiwKLSAgICAweDJCLDB4ODMsMHhDOSwweDdBLDB4NUUsMHhCRiwweDNGLDB4
QUQsMHgyQiwweDgzLDB4QTgsMHg3QSwweDdCLDB4MkEsMHgyMiwweDhBLAotICAgIDB4MEEsMHg4
MywweEE4LDB4NzIsMHg4OSwweDJGLDB4QUIsMHg4RSwweDBBLDB4ODMsMHhDOSwweDdBLDB4QzAs
MHhBQSwweDAwLDB4QkUsCi0gICAgMHhFQSwweDgyLDB4MEEsMHg3QiwweEVGLDB4RjUsMHg2QSww
eEVGLDB4MkEsMHg4MywweEVBLDB4N0EsMHg5RSwweEI2LDB4NzYsMHg3MywKLSAgICAweDAzLDB4
NDEsMHhBMSwweDMwLDB4QTgsMHhCQywweDc2LDB4RDYsMHgyMywweDQxLDB4QzIsMHgzOCwweEU1
LDB4NUQsMHhFRiwweEVGLAotICAgIDB4MDMsMHg0MSwweEExLDB4MzAsMHhBRiwweDM5LDB4MEUs
MHgyQSwweDAzLDB4MzksMHhDMiwweDM4LDB4QUEsMHgyQiwweDNELDB4OTYsCi0gICAgMHgwMyww
eDQxLDB4QzIsMHgzOCwweDAzLDB4QUIsMHhBOCwweDc4LDB4MDMsMHg0MSwweEMyLDB4MzgsMHgy
OCwweEJBLDB4MTYsMHhENSwKLSAgICAweDAyLDB4NDEsMHhFMiwweDM4LDB4QjIsMHgzOCwweDVF
LDB4NUUsMHgwMywweDQxLDB4QTEsMHgzMCwweEZFLDB4RjgsMHhBQSwweDJBLAotICAgIDB4RTIs
MHgzOCwweEExLDB4MzAsMHhGRiwweERGLDB4QkUsMHhFOCwweDAzLDB4NDEsMHhBMSwweDMwLDB4
MjksMHhBQiwweEVCLDB4RkIsCi0gICAgMHhFMiwweDM4LDB4QTEsMHgzMCwweEEwLDB4MkEsMHhC
RSwweDBBLDB4MDIsMHg0MSwweEUyLDB4MzgsMHg1RiwweDU3LDB4ODUsMHhERCwKLSAgICAweDAz
LDB4NDEsMHhBMSwweDMwLDB4RUEsMHg3RSwweDdBLDB4ODIsMHgyMywweDQxLDB4QzIsMHgzOCww
eDdCLDB4NUYsMHg1RCwweDdGLAotICAgIDB4MjIsMHg0MSwweEMyLDB4MzgsMHhENSwweEQ3LDB4
NzcsMHg3RiwweEUyLDB4MzgsMHhBMSwweDMwLDB4RkMsMHhGRSwweEJDLDB4QTIsCi0gICAgMHgw
MiwweDQxLDB4QzIsMHgzOCwweDU1LDB4RUQsMHg4MywweDY4LDB4MDMsMHgzOSwweEMyLDB4Mzgs
MHhFQiwweEVCLDB4MkIsMHg0RiwKLSAgICAweDAzLDB4MzksMHhDMiwweDM4LDB4RDcsMHhGQiww
eEFBLDB4RDYsMHgwMiwweDQxLDB4QTEsMHgzMCwweEZFLDB4RkEsMHhGOCwweEI5LAotICAgIDB4
RTIsMHgzOCwweEEyLDB4MzAsMHgzQSwweEFCLDB4RUEsMHhBQywweEUyLDB4MzgsMHhBMiwweDMw
LDB4NzgsMHhCOSwweEE4LDB4OEEsCi0gICAgMHhFMiwweDM4LDB4QTEsMHgzMCwweDhBLDB4ODgs
MHhGRiwweDVBLDB4MjYsMHg2QSwweEMxLDB4MzAsMHgzRCwweDM1LDB4QjUsMHhCNSwKLSAgICAw
eDY2LDB4NkEsMHhDNSwweDU5LDB4QTAsMHhFMiwweDdBLDB4N0EsMHhFNSwweDU5LDB4ODQsMHg1
MSwweDVDLDB4N0MsMHhGNywweEVCLAotICAgIDB4QTQsMHg1MSwweDY0LDB4NDksMHg2RiwweDVF
LDB4NUUsMHhFMiwweDY0LDB4NDksMHhFMiwweDMwLDB4NTQsMHg1RSwweEQ2LDB4REYsCi0gICAg
MHgyMywweDM5LDB4QzIsMHgzMCwweEU1LDB4QzksMHhBOCwweEUwLDB4MDMsMHgzOSwweEMyLDB4
MzAsMHhBRSwweEE3LDB4Q0YsMHhBRiwKLSAgICAweDI0LDB4MzEsMHhDMiwweDMwLDB4RTcsMHhE
RCwweEY3LDB4REYsMHgwMywweDMxLDB4QzIsMHgzMCwweEFDLDB4RjAsMHg1NiwweEQ3LAotICAg
IDB4MDMsMHgzMSwweEEyLDB4MjgsMHhEOCwweEJFLDB4RkYsMHhGRiwweEUzLDB4MzAsMHhDMiww
eDI4LDB4MkEsMHgyOCwweEFFLDB4RkQsCi0gICAgMHhFMywweDMwLDB4QzIsMHgyOCwweDJDLDB4
MkYsMHgzQSwweEFCLDB4MDIsMHgzMSwweEMyLDB4MjgsMHhENywweENGLDB4RUEsMHhBQiwKLSAg
ICAweDAzLDB4MzEsMHhFMywweDMwLDB4NTUsMHhFNywweEJELDB4OEQsMHgwMywweDM5LDB4QTIs
MHgyOCwweEFBLDB4RTMsMHhBQSwweDgyLAotICAgIDB4MDMsMHgzMSwweEUzLDB4MzAsMHgxNSww
eDU1LDB4N0QsMHg3RiwweDIzLDB4MzksMHhFMywweDMwLDB4NjIsMHhGNywweDU3LDB4NTUsCi0g
ICAgMHgwMywweDMxLDB4QzIsMHgyOCwweDA4LDB4RkEsMHhGNiwweDdELDB4MDMsMHgzMSwweEUy
LDB4MzAsMHhENSwweERFLDB4RjUsMHhFNSwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4QTMs
MHhBMiwweDJBLDB4MkIsMHgwMywweDMxLDB4RTIsMHgzMCwweENGLDB4QUEsMHgwRiwweDI4LAot
ICAgIDB4MDMsMHgzOSwweEMzLDB4MzAsMHg4OSwweEM4LDB4ODgsMHhFOCwweDAzLDB4MzksMHhB
MiwweDI4LDB4MkYsMHhCQSwweEVFLDB4MkUsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEE4
LDB4MzAsMHg1RiwweEZGLDB4MDMsMHgzOSwweEUzLDB4MzAsMHhFMiwweEFBLDB4RUQsMHg3MywK
LSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4RjMsMHg3OSwweEZGLDB4QkQsMHgyMywweDM5LDB4
RTMsMHgzMCwweEFBLDB4RjMsMHhENywweEQ4LAotICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHgy
MiwweDJFLDB4M0YsMHgyRSwweDI0LDB4MzksMHhFMiwweDMwLDB4QTAsMHg3QSwweDdFLDB4OEEs
Ci0gICAgMHgyMywweDM5LDB4RTMsMHgzMCwweEU4LDB4RTMsMHg2QSwweDZBLDB4MjQsMHgzOSww
eEMyLDB4MzgsMHhBQSwweEE4LDB4OEEsMHhBOSwKLSAgICAweDIzLDB4MzksMHhFMywweDM4LDB4
REYsMHg1OCwweEY4LDB4RjYsMHgyNCwweDM5LDB4QzMsMHgzOCwweDAyLDB4OEIsMHhBQSwweDhB
LAotICAgIDB4NDQsMHg0MSwweEMzLDB4MzAsMHhGRSwweERBLDB4RkEsMHgyMiwweDI0LDB4Mzks
MHhDMiwweDMwLDB4QjMsMHhERiwweEJFLDB4Q0MsCi0gICAgMHg0NCwweDM5LDB4RTMsMHgzMCww
eEVELDB4RUQsMHhGNSwweDg3LDB4NDQsMHgzOSwweDAzLDB4MzEsMHg3RSwweEZBLDB4RUUsMHhB
QiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4RTIsMHhBMiwweDAwLDB4QTAsMHgwMywweDMx
LDB4QzIsMHgzMCwweDA4LDB4MkEsMHgzRSwweDNFLAotICAgIDB4NDQsMHgzOSwweEUyLDB4MzAs
MHhBNywweDJCLDB4QUIsMHhGQiwweDI0LDB4MzksMHhFMiwweDMwLDB4REMsMHhCOCwweDI4LDB4
QUEsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweEVBLDB4RjgsMHhBOCwweDAwLDB4MjQsMHgz
OSwweEMyLDB4MzAsMHhCRCwweDIzLDB4MDAsMHhBMCwKLSAgICAweDI0LDB4MzksMHhFMywweDMw
LDB4MjcsMHgzQywweEEwLDB4QUUsMHgyNCwweDM5LDB4RTMsMHgzMCwweEZFLDB4NUUsMHg3QSww
eEIyLAotICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHg1RSwweEVFLDB4RjgsMHhDOCwweDIzLDB4
MzksMHhDMiwweDI4LDB4RkYsMHhFRiwweEZFLDB4RDIsCi0gICAgMHgwMywweDMxLDB4QzIsMHgy
OCwweEJCLDB4M0YsMHhCNiwweDJBLDB4MjQsMHgzOSwweEMyLDB4MzAsMHhGRSwweEZBLDB4RjIs
MHg3QSwKLSAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4NUEsMHgyQSwweDBELDB4M0QsMHgwMyww
eDMxLDB4QzIsMHgyOCwweDU3LDB4N0UsMHhGRSwweDM0LAotICAgIDB4MDMsMHgzMSwweEEyLDB4
MjAsMHg2RiwweEZGLDB4QUIsMHhBOCwweDAzLDB4MzEsMHhDMiwweDI4LDB4NTUsMHhERCwweEY3
LDB4NEIsCi0gICAgMHhFMywweDI4LDB4QTIsMHgyMCwweDU3LDB4OUUsMHhFQSwweDAwLDB4RTMs
MHgyOCwweEEyLDB4MjgsMHhGRCwweEZGLDB4RjMsMHhGMywKLSAgICAweEMyLDB4MjgsMHhBMiww
eDIwLDB4OTcsMHhBNSwweDA1LDB4MEUsMHhDMywweDI4LDB4ODEsMHgyMCwweEZFLDB4RTAsMHgw
MCwweDgwLAotICAgIDB4QzIsMHgyOCwweDgyLDB4MjAsMHg1NSwweEQ1LDB4REIsMHhBOCwweEMz
LDB4MjgsMHg4MiwweDIwLDB4RkQsMHhGNSwweEI3LDB4MkIsCi0gICAgMHhDMiwweDI4LDB4ODIs
MHgyMCwweEY3LDB4RDUsMHhGNywweEFFLDB4QzMsMHgyOCwweDgxLDB4MjAsMHhBQSwweDZGLDB4
QkEsMHhGQywKLSAgICAweEEyLDB4MjgsMHg4MiwweDIwLDB4REYsMHhGRiwweEJGLDB4QkMsMHhD
MiwweDI4LDB4ODIsMHgyMCwweEZGLDB4MkYsMHgyRiwweDNFLAotICAgIDB4RTIsMHgyOCwweEEy
LDB4MjgsMHhBQiwweEE3LDB4RjUsMHhENSwweDAzLDB4MzEsMHhDMiwweDI4LDB4MDMsMHgzQiww
eEE3LDB4QkQsCi0gICAgMHgwMywweDMxLDB4QTIsMHgyOCwweDcyLDB4RUEsMHhCQSwweEZBLDB4
MDMsMHgzMSwweEEyLDB4MjgsMHhFRiwweDM1LDB4M0YsMHgzRSwKLSAgICAweDI0LDB4MzksMHhD
MiwweDI4LDB4RkYsMHg5RiwweDlGLDB4M0YsMHgyNCwweDM5LDB4MDMsMHgzMSwweDU1LDB4QjUs
MHgzRiwweDJBLAotICAgIDB4ODUsMHg0MSwweEUyLDB4MzAsMHhBRCwweEE5LDB4MkYsMHgyQSww
eEM2LDB4NTEsMHg2MywweDQxLDB4QkYsMHhFQSwweDA5LDB4MDIsCi0gICAgMHgwNiwweDVBLDB4
QzYsMHg1MSwweEE5LDB4RUIsMHhCMiwweDNFLDB4MDYsMHg1QSwweEM1LDB4NTEsMHhGOCwweEFB
LDB4OTIsMHhFMiwKLSAgICAweDA2LDB4NUEsMHhBNSwweDUxLDB4RUIsMHhCNywweEJGLDB4QTgs
MHg0OCwweDZBLDB4RTYsMHg1OSwweEVGLDB4QjUsMHgzQiwweEFELAotICAgIDB4NjgsMHg2QSww
eDA2LDB4NUEsMHhFOSwweEE1LDB4QUYsMHgyRiwweDg4LDB4NzIsMHgyNywweDYyLDB4QUYsMHgy
OSwweDI1LDB4RjMsCi0gICAgMHhBOSwweDcyLDB4NjgsMHg2QSwweDJFLDB4QUEsMHhBQSwweEY2
LDB4RUEsMHg3QSwweDY4LDB4NkEsMHhGRCwweEZGLDB4RjUsMHhFMywKLSAgICAweENBLDB4NzIs
MHg0OCwweDZBLDB4NUUsMHg3RiwweEVBLDB4OEEsMHhDOSwweDcyLDB4NjgsMHg2QSwweDJELDB4
QUUsMHgyMywweEMyLAotICAgIDB4QzksMHg3QSwweDY4LDB4NkEsMHhFQiwweENBLDB4QjgsMHg5
QSwweEM5LDB4NzIsMHg2NywweDZBLDB4OEIsMHhBRiwweDU3LDB4RkUsCi0gICAgMHhFQSwweDdB
LDB4NjgsMHg2QSwweDgzLDB4QTUsMHhGRCwweDdGLDB4QzksMHg3QSwweDY3LDB4NkEsMHhCOCww
eEFGLDB4MzcsMHhBRCwKLSAgICAweEM5LDB4N0EsMHg2NywweDZBLDB4QUMsMHgyRiwweDZBLDB4
N0UsMHgwQSwweDgzLDB4QTksMHg3MiwweDhCLDB4RUYsMHg3RiwweEY1LAotICAgIDB4MEEsMHg4
MywweEE4LDB4NzIsMHg3OCwweEZCLDB4QjUsMHhGRCwweDBCLDB4ODMsMHg4OCwweDcyLDB4RkQs
MHg3RiwweDY4LDB4QkIsCi0gICAgMHhFOSwweDdBLDB4ODgsMHg3MiwweEE4LDB4RjUsMHhERCww
eDYzLDB4RTksMHg3QSwweDg4LDB4NzIsMHhCMCwweEFBLDB4QUIsMHhERiwKLSAgICAweEU5LDB4
N0EsMHg4OCwweDcyLDB4N0UsMHhGRSwweEFGLDB4MjksMHhFOSwweDdBLDB4ODgsMHg3MiwweDk1
LDB4RjcsMHg3QywweDZFLAotICAgIDB4RUEsMHg3QSwweEE5LDB4NzIsMHhFQiwweENBLDB4OEQs
MHg2RCwweEM5LDB4N0EsMHg2OCwweDcyLDB4OUEsMHhGMiwweEU4LDB4QUEsCi0gICAgMHhFOSww
eDdBLDB4ODgsMHg3MiwweEFCLDB4RkQsMHgyRCwweDBELDB4RUEsMHg3QSwweDg5LDB4NzIsMHhB
MiwweDgyLDB4RjAsMHhEMCwKLSAgICAweEVBLDB4N0EsMHhBOSwweDcyLDB4QkYsMHhCRSwweEI3
LDB4RjUsMHhFQSwweDdBLDB4ODgsMHg3MiwweDgyLDB4NUEsMHhCNiwweEFBLAotICAgIDB4MEIs
MHg3QiwweEE5LDB4NzIsMHhCRCwweERELDB4QkUsMHhGOCwweDJCLDB4ODMsMHhBOSwweDcyLDB4
MkEsMHhFRSwweEZGLDB4RkYsCi0gICAgMHgwQSwweDgzLDB4QTksMHg3MiwweEEyLDB4RjIsMHhG
RCwweEI1LDB4NEIsMHg4MywweEM5LDB4N0EsMHhGRCwweEZGLDB4MzUsMHhBNywKLSAgICAweDJC
LDB4ODMsMHhFOSwweDdBLDB4RkYsMHhGNywweERDLDB4N0YsMHgyQiwweDgzLDB4RTksMHg3QSww
eEZBLDB4RjUsMHhDRCwweDdELAotICAgIDB4RTIsMHgzOCwweEExLDB4MzAsMHg5OCwweDA4LDB4
MDIsMHg4QSwweDAzLDB4NDEsMHhDMiwweDM4LDB4QTksMHhGOCwweDBBLDB4QUIsCi0gICAgMHgw
MywweDQxLDB4QzIsMHgzOCwweEZGLDB4RkYsMHgwRiwweDhCLDB4MDMsMHg0MSwweEExLDB4MzAs
MHhFNiwweEJBLDB4QUEsMHhBMiwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4N0UsMHg3Riww
eENGLDB4Q0IsMHgwMiwweDM5LDB4QTIsMHgzMCwweDI3LDB4M0IsMHhBRiwweDJGLAotICAgIDB4
MDMsMHg0MSwweEMyLDB4MzgsMHhGQSwweEZFLDB4RkMsMHhGNiwweDAzLDB4NDEsMHhDMiwweDM4
LDB4QjcsMHg5NSwweDJGLDB4QUIsCi0gICAgMHgyMywweDQxLDB4QzIsMHgzOCwweDVBLDB4Nzgs
MHhBOCwweEZBLDB4RTIsMHgzOCwweEExLDB4MzAsMHgyMSwweEEwLDB4OEEsMHg4MiwKLSAgICAw
eDAzLDB4NDEsMHhBMSwweDMwLDB4MkMsMHhBMiwweEFFLDB4RkQsMHgyMywweDM5LDB4QzIsMHgz
OCwweERGLDB4RkYsMHhGNSwweDQ1LAotICAgIDB4RTIsMHgzOCwweEMyLDB4MzgsMHgwMCwweDBB
LDB4OUUsMHg3RiwweDAzLDB4NDEsMHhDMiwweDM4LDB4REIsMHg3QiwweEFCLDB4RkYsCi0gICAg
MHgyMywweDQxLDB4QzEsMHgzMCwweDdCLDB4RkYsMHhGRiwweEJELDB4MDMsMHgzOSwweEMyLDB4
MzgsMHg1QSwweDdFLDB4MDYsMHg4RiwKLSAgICAweDAyLDB4MzksMHhBMSwweDMwLDB4NjIsMHhG
QSwweEQyLDB4N0EsMHhFMiwweDM4LDB4QzEsMHgzOCwweEE5LDB4NDMsMHhDRCwweDI3LAotICAg
IDB4QTIsMHgzOCwweEUzLDB4MzAsMHhCQSwweEZCLDB4RUEsMHhBQSwweDAzLDB4NDEsMHhBMSww
eDMwLDB4QkQsMHg5NywweEFFLDB4MkUsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDVGLDB4
N0IsMHg1RSwweDU4LDB4RTIsMHgzOCwweEEyLDB4MzAsMHgyRSwweEE5LDB4NDMsMHg3QiwKLSAg
ICAweEMyLDB4MzAsMHg4MSwweDMwLDB4QjgsMHhCOCwweEZGLDB4QUIsMHg4MywweDQ5LDB4QzIs
MHgzMCwweDI1LDB4MzUsMHhCNSwweDk1LAotICAgIDB4MjcsMHg2MiwweEE1LDB4NTksMHhFOCww
eEU5LDB4QUUsMHhCRCwweEU1LDB4NTksMHg4NCwweDUxLDB4QUEsMHgyOCwweEVBLDB4NjgsCi0g
ICAgMHhDNSwweDUxLDB4MjIsMHg0MSwweEZBLDB4NzgsMHhGQSwweDgyLDB4MjMsMHg0MSwweEMy
LDB4MzAsMHhBQSwweEFGLDB4QkMsMHg5OCwKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4RUEs
MHhFQSwweDJBLDB4RkUsMHgyMywweDM5LDB4RTIsMHgzMCwweDU3LDB4RUUsMHhGRSwweEJCLAot
ICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhFQSwweDVBLDB4QjgsMHhBOCwweDAzLDB4MzEsMHhD
MiwweDI4LDB4N0UsMHhCQiwweEJFLDB4MjAsCi0gICAgMHhFMywweDMwLDB4QzIsMHgyOCwweEQ1
LDB4RUYsMHhGQywweDVDLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhGNywweEVGLDB4ODYsMHhBQiwK
LSAgICAweDIzLDB4MzksMHhDMiwweDI4LDB4NUYsMHhGRiwweDlGLDB4MjUsMHgwMywweDMxLDB4
QzIsMHgyOCwweEJELDB4QjcsMHhGOCwweEM4LAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHg4
QSwweDhBLDB4QkUsMHg5RSwweDAzLDB4MzEsMHhBMywweDI4LDB4QTIsMHgyMCwweDgwLDB4QTgs
Ci0gICAgMHgwMywweDMxLDB4RTMsMHgzMCwweDU1LDB4NUUsMHg1NiwweEQ1LDB4MjMsMHgzMSww
eEMzLDB4MzAsMHhFRiwweEVGLDB4QTcsMHgzNiwKLSAgICAweDIzLDB4MzksMHhDMiwweDI4LDB4
RjUsMHhGRiwweEFFLDB4RjgsMHgwMywweDMxLDB4RTMsMHgzMCwweEVELDB4MzMsMHg5OCwweDk3
LAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHg5QSwweEZFLDB4RUUsMHhBRSwweDAzLDB4MzEs
MHhDMiwweDI4LDB4MDAsMHhFNiwweEVCLDB4RUUsCi0gICAgMHgwMywweDMxLDB4QzMsMHgzMCww
eEFBLDB4QUIsMHhBNSwweEFGLDB4MjQsMHgzOSwweEMyLDB4MzAsMHgyRiwweEJFLDB4N0EsMHg3
NiwKLSAgICAweDI0LDB4MzksMHhDMiwweDI4LDB4RkIsMHhCMiwweEZCLDB4QTEsMHgyNCwweDM5
LDB4RTMsMHgzMCwweEZBLDB4RUYsMHhDQiwweDIwLAotICAgIDB4NDQsMHgzOSwweEUzLDB4MzAs
MHgzRCwweEJELDB4RkQsMHhGNywweDQ0LDB4MzksMHgwMywweDM5LDB4REYsMHhEQSwweERGLDB4
NTUsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzOCwweEE4LDB4RUIsMHhFRiwweDdGLDB4MjMsMHgz
OSwweEUzLDB4MzgsMHg4QSwweDhGLDB4MjcsMHhFRiwKLSAgICAweDAzLDB4MzksMHhDMiwweDMw
LDB4OEUsMHg2QywweEZDLDB4RTAsMHgyMywweDQxLDB4RTMsMHgzMCwweDdELDB4RkQsMHhBOCww
eEEyLAotICAgIDB4MDMsMHgzOSwweEUyLDB4MzAsMHhBNywweDE2LDB4NUMsMHhEQywweDY0LDB4
NDEsMHgwMywweDM5LDB4NTUsMHhEQywweDVELDB4RUQsCi0gICAgMHg0NSwweDQxLDB4RTMsMHgz
MCwweEFBLDB4RkEsMHg3MCwweDZBLDB4MjMsMHgzOSwweEUzLDB4MzgsMHg3QiwweDRCLDB4MkYs
MHhCRiwKLSAgICAweDIzLDB4MzksMHhFMywweDMwLDB4MEIsMHhFMywweEU4LDB4QUEsMHgyMyww
eDM5LDB4RTIsMHgzMCwweDgyLDB4MDIsMHgyMywweEI1LAotICAgIDB4MjQsMHgzOSwweEUzLDB4
MzAsMHg4RiwweEMwLDB4ODAsMHhBQSwweDIzLDB4MzksMHhFMiwweDMwLDB4QjcsMHhGRiwweEQ5
LDB4NkQsCi0gICAgMHgwMywweDM5LDB4RTIsMHgzMCwweEY4LDB4QzAsMHg3OCwweDRGLDB4MDMs
MHgzOSwweEUzLDB4MzAsMHg5NSwweEQ1LDB4RjUsMHhFRiwKLSAgICAweDQ1LDB4NDEsMHhDMiww
eDMwLDB4MDgsMHg4QSwweDlGLDB4NTcsMHgyNCwweDM5LDB4RTMsMHgzOCwweDgwLDB4QUEsMHhG
RSwweDZGLAotICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhBQSwweDYyLDB4N0EsMHhCQSwweDIz
LDB4MzksMHhFMywweDMwLDB4QUYsMHhBMiwweEJBLDB4OTgsCi0gICAgMHgyMywweDM5LDB4RTIs
MHgzMCwweEJFLDB4REEsMHg3OCwweEZBLDB4MjQsMHgzOSwweEUyLDB4MzAsMHg3QSwweDdFLDB4
RjcsMHhBNiwKLSAgICAweDIzLDB4MzksMHhFMywweDMwLDB4RkIsMHhDQSwweEE3LDB4NkMsMHgw
MywweDMxLDB4QzIsMHgyOCwweEUwLDB4QzIsMHgxQSwweDIyLAotICAgIDB4NDQsMHgzOSwweEUy
LDB4MjgsMHhENSwweEZBLDB4RUEsMHhGRSwweDAzLDB4MzEsMHhDMiwweDI4LDB4MzcsMHhFNiww
eEFBLDB4ODMsCi0gICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEY2LDB4OEEsMHgzQSwweEFBLDB4
MDMsMHgzMSwweEMyLDB4MjgsMHhFMywweEZFLDB4QkEsMHgyMiwKLSAgICAweDAzLDB4MzEsMHhD
MywweDI4LDB4N0EsMHhGRCwweEZGLDB4RUEsMHhFMywweDMwLDB4QTIsMHgyOCwweEZCLDB4M0Us
MHhFRiwweEY3LAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCQSwweEIyLDB4MkIsMHg4Myww
eEUzLDB4MzAsMHhBMiwweDI4LDB4N0EsMHhCQywweEVBLDB4ODMsCi0gICAgMHhFMywweDI4LDB4
ODIsMHgyOCwweEJBLDB4RUQsMHhDRCwweDhBLDB4QzIsMHgyOCwweEEyLDB4MjgsMHg0RSwweDIw
LDB4MDMsMHg4QSwKLSAgICAweEUzLDB4MzAsMHhBMywweDI4LDB4RkIsMHhGMiwweEE4LDB4MkUs
MHgwMywweDMxLDB4QTIsMHgyOCwweERGLDB4QkEsMHhGRiwweDhCLAotICAgIDB4RTIsMHgyOCww
eEEyLDB4MjgsMHg1NywweEJGLDB4MEEsMHg4MiwweEUzLDB4MzAsMHhBMiwweDI4LDB4NTksMHg4
RiwweDAwLDB4MEEsCi0gICAgMHgwMywweDMxLDB4QTIsMHgyOCwweEQ1LDB4OUQsMHhBRSwweDBB
LDB4MDMsMHgzMSwweEMyLDB4MjgsMHg5RiwweDJGLDB4ODUsMHgyQSwKLSAgICAweDI0LDB4Mzks
MHhFMywweDMwLDB4NTcsMHg3RiwweDRGLDB4RkYsMHgwMywweDM5LDB4RTMsMHgzMCwweDA5LDB4
NjksMHg1RCwweEI1LAotICAgIDB4NDQsMHgzOSwweEUzLDB4MzAsMHhCRiwweEFELDB4QjMsMHgz
RiwweDY1LDB4NDEsMHgyNCwweDM5LDB4QTksMHgwMywweDBCLDB4QTUsCi0gICAgMHgwNywweDVB
LDB4NjUsMHg0OSwweDdGLDB4QUYsMHhBRiwweDBGLDB4MDYsMHg1QSwweEE1LDB4NDksMHhCRCww
eEU5LDB4RUMsMHgwMCwKLSAgICAweDA2LDB4NUEsMHhDNiwweDUxLDB4QkYsMHgwNiwweDgzLDB4
MEUsMHgyNywweDYyLDB4QzUsMHg1MSwweDJGLDB4RjcsMHhDRSwweEEyLAotICAgIDB4MjYsMHg2
MiwweEM1LDB4NTEsMHhCRSwweDlFLDB4QUIsMHhBQiwweDQ3LDB4NjIsMHgwNywweDYyLDB4RjMs
MHhFQSwweDZFLDB4REQsCi0gICAgMHg2OCwweDZBLDB4MDcsMHg2MiwweEI1LDB4MjUsMHgwNyww
eDIyLDB4QTksMHg3MiwweDQ4LDB4NkEsMHg2QiwweEEyLDB4RkYsMHhBQiwKLSAgICAweEE5LDB4
NzIsMHg0OCwweDZBLDB4M0EsMHgzRCwweEZGLDB4RkIsMHhFQSwweDdBLDB4NjgsMHg2QSwweEZD
LDB4RkIsMHg3QiwweDdELAotICAgIDB4RUEsMHg3QSwweDg5LDB4NzIsMHgyQiwweEFBLDB4RkQs
MHhGNSwweEM5LDB4N0EsMHg4OCwweDZBLDB4MEIsMHhBRiwweDdGLDB4NkUsCi0gICAgMHhDOSww
eDdBLDB4NDcsMHg2MiwweDZBLDB4QTgsMHgwMiwweDJCLDB4RTksMHg3QSwweDY4LDB4NkEsMHg1
NywweEJGLDB4RUUsMHgwQSwKLSAgICAweEM5LDB4NzIsMHg4OCwweDcyLDB4RTgsMHhFRSwweDFG
LDB4RkEsMHhFQSwweDdBLDB4ODcsMHg2QSwweDc1LDB4NzcsMHhBQSwweDJGLAotICAgIDB4Qzgs
MHg3QSwweDY3LDB4NkEsMHgwQSwweDhELDB4QTgsMHhBOCwweEU5LDB4N0EsMHg2OCwweDcyLDB4
MjMsMHhBQSwweEFFLDB4REUsCi0gICAgMHhFOSwweDdBLDB4QTksMHg3MiwweEYxLDB4NDIsMHg4
MCwweEE5LDB4RUEsMHg3QSwweDg4LDB4NzIsMHgzRiwweEU2LDB4RkMsMHhBRiwKLSAgICAweEVB
LDB4N0EsMHhBOSwweDdBLDB4QzIsMHhBMywweEE5LDB4NTgsMHgwQSwweDgzLDB4QTgsMHg3Miww
eDdGLDB4N0EsMHg2MiwweEM5LAotICAgIDB4RTksMHg3QSwweDg4LDB4NzIsMHgwQiwweDM3LDB4
OTcsMHhBMywweDA5LDB4N0IsMHhBOSwweDcyLDB4QTQsMHhGMiwweEVCLDB4RDQsCi0gICAgMHhD
OSwweDdBLDB4ODgsMHg3MiwweEY4LDB4Q0UsMHg2QSwweDYzLDB4RUEsMHg3QSwweDg4LDB4NzIs
MHhDQiwweEJGLDB4QUQsMHg4MiwKLSAgICAweDBBLDB4N0IsMHhBOCwweDcyLDB4RUQsMHhBNyww
eDhCLDB4QTMsMHgwQSwweDdCLDB4QzksMHg3QSwweEZCLDB4QUEsMHhFQSwweEZDLAotICAgIDB4
RUEsMHg3QSwweDg4LDB4NkEsMHhGQSwweEY2LDB4OEEsMHgwOCwweEVBLDB4N0EsMHg2OCwweDZB
LDB4OEYsMHhBNywweEI3LDB4RUEsCi0gICAgMHhFQSwweDdBLDB4QTksMHg3MiwweDIwLDB4MTAs
MHhCRiwweDVFLDB4RUEsMHg3QSwweEE5LDB4NzIsMHg4NSwweDAyLDB4QjIsMHhGRCwKLSAgICAw
eDBBLDB4ODMsMHhBOSwweDcyLDB4NUQsMHhGRCwweDdGLDB4OEUsMHgwQSwweDgzLDB4QTksMHg3
MiwweDI3LDB4QjcsMHhERCwweEVGLAotICAgIDB4MkEsMHg4MywweEM5LDB4N0EsMHg4RSwweENC
LDB4QTUsMHhENSwweDBBLDB4ODMsMHhDOSwweDdBLDB4MzgsMHg3RSwweDdFLDB4QkEsCi0gICAg
MHhFMiwweDM4LDB4QzIsMHgzOCwweDVCLDB4NUIsMHgwQSwweEM4LDB4MjMsMHgzOSwweEMyLDB4
MzgsMHhFNywweDI2LDB4RUYsMHhBQSwKLSAgICAweDIzLDB4MzksMHhDMiwweDM4LDB4RkQsMHhG
RiwweEYzLDB4RkIsMHgwMiwweDM5LDB4QzIsMHgzOCwweEVGLDB4RjgsMHhFQSwweDlGLAotICAg
IDB4MDMsMHg0MSwweEExLDB4MzAsMHhBMiwweEFBLDB4QkEsMHhGRSwweDAzLDB4NDEsMHhDMiww
eDM4LDB4QTcsMHg3OCwweDVBLDB4RDcsCi0gICAgMHhFMiwweDM4LDB4QzIsMHgzOCwweEQwLDB4
QkYsMHgwRiwweDIxLDB4MjMsMHg0MSwweEMyLDB4MzgsMHg2RCwweEZELDB4Q0YsMHhFMywKLSAg
ICAweDAyLDB4MzksMHhDMiwweDM4LDB4RkEsMHg0QSwweEUzLDB4RkYsMHhFMiwweDM4LDB4QTEs
MHgzMCwweDIwLDB4QjIsMHgyRiwweDJFLAotICAgIDB4MDMsMHg0MSwweEExLDB4MzAsMHhCNyww
eDhBLDB4RUEsMHhCQSwweDAyLDB4MzksMHhDMiwweDM4LDB4QUIsMHg4QiwweDRCLDB4NzgsCi0g
ICAgMHhFMiwweDM4LDB4QTEsMHgzMCwweDg4LDB4MjAsMHgwMiwweDBCLDB4RTIsMHgzOCwweEEx
LDB4MzAsMHhBMCwweEEwLDB4NjAsMHhFOCwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4RUYs
MHhEOSwweEZGLDB4MkYsMHgwMiwweDM5LDB4QzIsMHgzOCwweEI3LDB4RkYsMHhGRiwweDY4LAot
ICAgIDB4MDIsMHgzOSwweEMyLDB4MzgsMHhGNiwweERBLDB4RjcsMHhERCwweEUyLDB4MzgsMHhB
MiwweDMwLDB4OEUsMHgwMCwweDI4LDB4MEMsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDQ5
LDB4RTcsMHhGNSwweEQ3LDB4MDMsMHgzOSwweEMyLDB4MzgsMHgxRCwweDJGLDB4MjksMHgwOCwK
LSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4NkUsMHg3QSwweDc4LDB4NzgsMHhDMiwweDM4LDB4
QTEsMHgzMCwweEMwLDB4RkEsMHhGRSwweDUwLAotICAgIDB4RTIsMHgzOCwweEExLDB4MzAsMHg1
RiwweEU1LDB4MjUsMHgzNSwweDg1LDB4NTEsMHhBMSwweDMwLDB4QjUsMHhCNSwweEI3LDB4Mzcs
Ci0gICAgMHhBOCwweDcyLDB4NDMsMHg0OSwweEJELDB4RUYsMHhFQSwweEEyLDB4RTUsMHg1OSww
eDg0LDB4NTEsMHg2OCwweENCLDB4MEEsMHgwOCwKLSAgICAweEM1LDB4NTEsMHg4NCwweDQ5LDB4
NDIsMHg2MiwweEZFLDB4N0UsMHgyMywweDQxLDB4QzIsMHgzMCwweEY4LDB4NTAsMHhGOCwweEY4
LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBRiwweDZGLDB4NUYsMHg4MCwweDAzLDB4MzEs
MHhDMiwweDI4LDB4MDIsMHgyMywweDIyLDB4MUYsCi0gICAgMHgwMywweDMxLDB4RTMsMHgzMCww
eEJFLDB4NUMsMHg1NywweDVGLDB4MjQsMHgzOSwweEUzLDB4MzAsMHg1QSwweDdGLDB4RkQsMHg2
QiwKLSAgICAweDIzLDB4MzEsMHhDMiwweDMwLDB4NzcsMHhGRSwweDVGLDB4QkYsMHgwMywweDM5
LDB4QzIsMHgyOCwweEZGLDB4N0IsMHhBQiwweEYyLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MzAs
MHg4NywweEZELDB4RUEsMHhFQSwweDAzLDB4MzEsMHhBMiwweDI4LDB4Q0EsMHhFRSwweDZCLDB4
QkYsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEQ3LDB4RjUsMHhCOSwweDhCLDB4MDMsMHgz
MSwweEMyLDB4MzAsMHhFQSwweDc4LDB4N0EsMHg2MiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMw
LDB4ODMsMHhCQiwweEZCLDB4RjUsMHgwMywweDMxLDB4QTIsMHgzMCwweDI4LDB4QUEsMHhBRSww
eDhBLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHhFOCwweEJBLDB4RTIsMHg2QSwweDAzLDB4
MzEsMHhDMiwweDI4LDB4OEEsMHgwQiwweEE5LDB4M0QsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgz
MCwweEZGLDB4OEUsMHgyQiwweDlGLDB4RTMsMHgzMCwweEMyLDB4MjgsMHhFQSwweEFFLDB4RUMs
MHhGRSwKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4NzksMHhFQSwweDdGLDB4NTUsMHgwMyww
eDMxLDB4QTIsMHgzMCwweEJBLDB4QUUsMHgyQSwweDIyLAotICAgIDB4MjQsMHgzOSwweEUzLDB4
MzAsMHg4OSwweDVELDB4NTUsMHg1NywweDI0LDB4MzksMHhDMiwweDMwLDB4ODIsMHhFQSwweEI3
LDB4QkYsCi0gICAgMHgyNCwweDM5LDB4RTIsMHgzMCwweEZFLDB4N0EsMHg2QiwweDVGLDB4MDMs
MHgzOSwweEMyLDB4MzAsMHhBMiwweEJCLDB4RUIsMHhDRiwKLSAgICAweDAzLDB4MzksMHhFMyww
eDMwLDB4QTgsMHgyRSwweDJCLDB4OTUsMHgyNCwweDM5LDB4RTIsMHgzMCwweEVCLDB4QUEsMHhG
QSwweDdGLAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHhDMSwweDY4LDB4NzgsMHhGMywweDAz
LDB4MzksMHhFMywweDMwLDB4QzMsMHhDNywweEVFLDB4OEIsCi0gICAgMHg0NCwweDQxLDB4QzIs
MHgzMCwweERGLDB4MkUsMHhGRiwweDdELDB4MjQsMHgzOSwweEUzLDB4MzgsMHhFMCwweEZBLDB4
RUIsMHhFQiwKLSAgICAweDQ0LDB4NDEsMHhFMywweDMwLDB4QTMsMHhFQiwweDdGLDB4NUYsMHgw
MywweDM5LDB4RTMsMHgzOCwweDlDLDB4QjgsMHg1QiwweDFCLAotICAgIDB4MjQsMHgzOSwweEUz
LDB4MzgsMHhFQiwweDhCLDB4RkQsMHhENywweDAzLDB4MzksMHhFMywweDMwLDB4MjAsMHgwMCww
eDgyLDB4ODMsCi0gICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweDU1LDB4QUYsMHhBRCwweDZELDB4
MjMsMHgzOSwweEUzLDB4MzAsMHgwQiwweDg5LDB4QUEsMHhCNywKLSAgICAweDIzLDB4MzksMHhF
MiwweDM4LDB4Q0IsMHhDMiwweEMyLDB4RkEsMHgyNCwweDM5LDB4RTMsMHgzMCwweEJELDB4NkQs
MHhCRiwweDE3LAotICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHhGNywweEFFLDB4RUMsMHhCOCww
eDAzLDB4MzksMHhFMywweDMwLDB4RkUsMHg3RCwweDlFLDB4MjMsCi0gICAgMHgyNCwweDM5LDB4
QzMsMHgzMCwweEFBLDB4QjUsMHhCQSwweEY4LDB4MjMsMHgzOSwweEM0LDB4MzAsMHgwQSwweDJB
LDB4QjIsMHhBQSwKLSAgICAweDIzLDB4MzksMHgwMywweDMxLDB4N0YsMHg3RSwweEI2LDB4OTUs
MHgyMywweDM5LDB4RTIsMHgzMCwweEU3LDB4MkYsMHgyQywweDMyLAotICAgIDB4NDQsMHgzOSww
eEUyLDB4MzAsMHhGQiwweDdFLDB4RkEsMHg4QSwweDIzLDB4MzksMHhDMiwweDI4LDB4QUEsMHg5
QSwweEJFLDB4MkEsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzMCwweDVBLDB4RkYsMHhCRSwweEFB
LDB4MDMsMHgzMSwweEUzLDB4MzAsMHgyOSwweEZELDB4RDcsMHgyQywKLSAgICAweDI0LDB4Mzks
MHhFMywweDMwLDB4RjgsMHhGRiwweEZBLDB4RTIsMHgyNCwweDM5LDB4RTMsMHgyOCwweERGLDB4
REYsMHhCQSwweEIzLAotICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg3MywweEZBLDB4QTAsMHhB
QSwweDA0LDB4MzEsMHhDMywweDI4LDB4RDcsMHhENywweEJDLDB4MzAsCi0gICAgMHgwNCwweDMx
LDB4RTMsMHgzMCwweDU1LDB4RjUsMHhFQiwweDcwLDB4MjQsMHgzMSwweEUzLDB4MzAsMHg3Riww
eDhGLDB4RUYsMHg5NywKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4RUYsMHhFMCwweEU4LDB4
QTAsMHgwMywweDMxLDB4QTIsMHgyOCwweEI3LDB4RUEsMHhBMiwweEEwLAotICAgIDB4MDMsMHgz
MSwweEMyLDB4MjgsMHgzNiwweEEyLDB4MDMsMHhBMiwweDIzLDB4MzEsMHhFMywweDMwLDB4RDUs
MHhGNywweEZELDB4RkEsCi0gICAgMHhFMywweDMwLDB4MDMsMHgyOSwweDJGLDB4MkIsMHhCMCww
eDIwLDB4MjQsMHgzOSwweEMyLDB4MjgsMHhERiwweEZBLDB4RTIsMHgyMiwKLSAgICAweDI0LDB4
MzksMHhFMywweDMwLDB4QkYsMHg4MywweDgxLDB4QUEsMHgyNCwweDM5LDB4MDMsMHgzMSwweDU3
LDB4NTcsMHhGRiwweDNGLAotICAgIDB4NDQsMHg0MSwweEUzLDB4MzAsMHg3RCwweEY4LDB4RUUs
MHhGRSwweDI0LDB4MzksMHhFMywweDMwLDB4MzcsMHhBQSwweDIyLDB4MjAsCi0gICAgMHg2NCww
eDQxLDB4MDMsMHgzMSwweDI3LDB4MkQsMHhBQiwweDJBLDB4QzUsMHg1MSwweDQzLDB4MzksMHhE
NSwweEJGLDB4QUYsMHgyQSwKLSAgICAweDA3LDB4NUEsMHhBNSwweDQ5LDB4QjUsMHhCRiwweEJG
LDB4M0YsMHgyNywweDYyLDB4RTYsMHg1OSwweEM4LDB4QUUsMHgwNSwweDI3LAotICAgIDB4Mjcs
MHg2MiwweEU2LDB4NTksMHgyRiwweEJDLDB4RDYsMHg3OCwweDQ3LDB4NjIsMHhFNSwweDU5LDB4
NkEsMHhBMiwweEJELDB4MkQsCi0gICAgMHgyNywweDYyLDB4QzUsMHg1OSwweDZFLDB4QzAsMHhD
OCwweEUwLDB4NjgsMHg2QSwweEU2LDB4NTksMHgzRCwweEFELDB4MzUsMHhBNSwKLSAgICAweDg4
LDB4NkEsMHgyNywweDYyLDB4QkYsMHhENywweERGLDB4ODcsMHhBOSwweDZBLDB4NDgsMHg2QSww
eEVGLDB4QUUsMHhDQiwweEU3LAotICAgIDB4QTgsMHg2QSwweDQ4LDB4NkEsMHg3QiwweDdGLDB4
NzcsMHhERiwweDY4LDB4NkEsMHg0NywweDYyLDB4OEIsMHhFMywweEYyLDB4RTEsCi0gICAgMHhB
OSwweDcyLDB4MjcsMHg2MiwweDJGLDB4QkIsMHhCNywweEVCLDB4QTksMHg3MiwweDY4LDB4NkEs
MHgyQywweDhGLDB4M0QsMHhCRCwKLSAgICAweEE5LDB4NzIsMHg0OCwweDZBLDB4MEIsMHgwMiww
eDcyLDB4RjAsMHhDOSwweDdBLDB4NjcsMHg2QSwweDJBLDB4QkIsMHhFQiwweEZELAotICAgIDB4
RTksMHg3QSwweDg4LDB4NzIsMHg3OCwweDJFLDB4RDksMHg1NSwweEM5LDB4N0EsMHg0NywweDYy
LDB4MkYsMHg5NCwweEJBLDB4QUEsCi0gICAgMHhDOSwweDdBLDB4ODgsMHg3MiwweEJBLDB4QkEs
MHgyQSwweEVGLDB4QzksMHg3QSwweDY3LDB4NkEsMHhFQSwweEEyLDB4MDAsMHg4QSwKLSAgICAw
eEM5LDB4N0EsMHhBOCwweDcyLDB4OEEsMHhFOSwweDcyLDB4RkMsMHhFOSwweDdBLDB4ODgsMHg3
MiwweEUzLDB4RUUsMHg3NywweDVGLAotICAgIDB4RUEsMHg3QSwweEE5LDB4NzIsMHg2MiwweEVC
LDB4OUQsMHg1RiwweDBBLDB4N0IsMHhBOCwweDcyLDB4RUYsMHhGRCwweEZGLDB4OUYsCi0gICAg
MHgwQSwweDdCLDB4QTgsMHg3MiwweENCLDB4RjMsMHg2QiwweEFCLDB4RTksMHg3QSwweEE4LDB4
NzIsMHhFQywweEFELDB4OEYsMHg3RiwKLSAgICAweDBBLDB4N0IsMHhBOCwweDcyLDB4RDcsMHhB
NywweDBFLDB4M0IsMHgwQSwweDgzLDB4QTksMHg2QSwweEVFLDB4RDcsMHhGNywweEUyLAotICAg
IDB4RUEsMHg3QSwweEE5LDB4NzIsMHhFOCwweDQ3LDB4QkYsMHg1RiwweEVBLDB4N0EsMHhBOSww
eDcyLDB4QkYsMHhGQSwweEZCLDB4N0UsCi0gICAgMHhFQSwweDdBLDB4QTksMHg3MiwweDNDLDB4
QUEsMHhCQywweDRGLDB4RUEsMHg3QSwweDg5LDB4NzIsMHg5QSwweEZFLDB4MEUsMHgwNiwKLSAg
ICAweEVBLDB4N0EsMHhBOSwweDcyLDB4N0UsMHhCMywweEFFLDB4RkYsMHhFQSwweDdBLDB4ODgs
MHg2QSwweEVGLDB4NTgsMHhBMiwweDAwLAotICAgIDB4MEIsMHg4MywweEE5LDB4NzIsMHg4Miww
eEJELDB4OTcsMHhCRiwweDBBLDB4N0IsMHhDOSwweDdBLDB4RkMsMHhBQiwweDYyLDB4Q0UsCi0g
ICAgMHgwQSwweDdCLDB4QTgsMHg3MiwweERGLDB4QkUsMHgzQiwweEEzLDB4MEEsMHg4MywweEM5
LDB4N0EsMHg4MywweDAxLDB4QzAsMHhGRSwKLSAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4RkUs
MHhCQywweEZGLDB4N0YsMHgwMiwweDM5LDB4QzIsMHgzOCwweEEwLDB4QkUsMHhCRiwweDdELAot
ICAgIDB4MjMsMHg0MSwweEMyLDB4MzgsMHg1RSwweEZBLDB4QkIsMHhDRiwweEMyLDB4NDAsMHgw
MywweDM5LDB4RkIsMHhFRiwweEFCLDB4OUYsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDVF
LDB4QUMsMHhBOSwweEJELDB4MDMsMHg0MSwweEMyLDB4MzgsMHhENSwweEZGLDB4RUEsMHhDMCwK
LSAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4QkQsMHhENSwweEQ3LDB4N0YsMHgwMywweDQxLDB4
QzIsMHgzOCwweDk4LDB4OUQsMHhGNywweEQ1LAotICAgIDB4MDMsMHg0MSwweEExLDB4MzAsMHg5
QSwweEUyLDB4ODgsMHhBRiwweDAzLDB4MzksMHhDMiwweDM4LDB4RkYsMHhBRiwweDBBLDB4MkIs
Ci0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweERCLDB4RjgsMHg3QSwweEY2LDB4RTIsMHgzOCww
eEMxLDB4MzAsMHg3OCwweDE4LDB4MDAsMHg4MiwKLSAgICAweEUyLDB4MzgsMHhDMiwweDM4LDB4
N0YsMHg3MCwweDYwLDB4MEYsMHgwMywweDQxLDB4QTEsMHgzMCwweDdFLDB4RUYsMHhBQiwweEFB
LAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHg4QiwweDc5LDB4N0UsMHhGRSwweEUyLDB4Mzgs
MHhBMiwweDMwLDB4MDAsMHg4QSwweEYwLDB4MjAsCi0gICAgMHhFMiwweDM4LDB4QzIsMHgzOCww
eDczLDB4RUIsMHgwMCwweEUwLDB4RTMsMHgzOCwweEMyLDB4MzgsMHgyQywweERFLDB4RDQsMHhG
MCwKLSAgICAweEUyLDB4MzgsMHhDMiwweDM4LDB4MEIsMHhFMiwweDZCLDB4RUQsMHgwMywweDQx
LDB4QzIsMHgzOCwweERFLDB4NTUsMHhGQiwweEUzLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MzAs
MHhFMiwweDZBLDB4RkEsMHhERSwweEMyLDB4MzgsMHg4MSwweDMwLDB4QkUsMHhBQSwweDI4LDB4
MzcsCi0gICAgMHhFMiwweDM4LDB4QTIsMHgzMCwweDI1LDB4M0YsMHgwQSwweDAzLDB4MjYsMHg2
MiwweEUyLDB4MzgsMHhCRCwweDM1LDB4MkQsMHgyRCwKLSAgICAweEM4LDB4N0EsMHg0NywweDZB
LDB4N0YsMHhFQSwweEUyLDB4QzAsMHg0NywweDZBLDB4RTUsMHg1OSwweDdCLDB4NzgsMHg3QSww
eEVBLAotICAgIDB4RTYsMHg1OSwweDY0LDB4NDksMHhGQywweDdFLDB4NzIsMHg3QSwweDQzLDB4
NDEsMHhDMiwweDMwLDB4REUsMHhERSwweEZFLDB4RjIsCi0gICAgMHgyMywweDM5LDB4RTIsMHgz
MCwweEYzLDB4NTksMHhERSwweEZGLDB4MDMsMHgzOSwweEMyLDB4MjgsMHg3QiwweEVCLDB4QUUs
MHhGMCwKLSAgICAweDAzLDB4MzEsMHhFMywweDMwLDB4NDAsMHg3QSwweERGLDB4RDcsMHgwMyww
eDMxLDB4QzMsMHgzMCwweDgyLDB4OEEsMHgzRSwweERFLAotICAgIDB4MDMsMHgzMSwweEUzLDB4
MzAsMHgzNSwweEQ3LDB4NTcsMHg1OSwweDAzLDB4MzEsMHhDMywweDMwLDB4RTAsMHhGMiwweEIw
LDB4QjAsCi0gICAgMHgwMywweDMxLDB4RTMsMHgzMCwweEI1LDB4NjUsMHg2NSwweEJELDB4MDMs
MHgzMSwweEMyLDB4MjgsMHhGRiwweEZFLDB4RkEsMHhBMiwKLSAgICAweEUyLDB4MzAsMHhDMiww
eDI4LDB4MDIsMHgwOSwweDBCLDB4MzAsMHgwMywweDMxLDB4QzIsMHgzMCwweEFCLDB4RDcsMHhG
RiwweEZCLAotICAgIDB4RTMsMHgzMCwweEMzLDB4MjgsMHgzQSwweEFDLDB4MDgsMHhBQSwweDAz
LDB4MzEsMHhDMywweDMwLDB4QTIsMHg4QiwweDBBLDB4QTksCi0gICAgMHhFMywweDMwLDB4QzIs
MHgzMCwweDAwLDB4MEMsMHg4MywweEQ4LDB4RTMsMHgzMCwweEMyLDB4MjgsMHgwOCwweDhDLDB4
QjgsMHg2MCwKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4QkUsMHhGQiwweEE5LDB4RUIsMHgw
MywweDM5LDB4QzMsMHgyOCwweEI3LDB4RjcsMHhBQSwweEVCLAotICAgIDB4MDMsMHgzMSwweEMy
LDB4MzAsMHg5RiwweDBFLDB4RUEsMHhFQiwweDAzLDB4MzEsMHhDMywweDMwLDB4MEYsMHgyQiww
eDJGLDB4QUYsCi0gICAgMHgwMywweDMxLDB4RTMsMHgzMCwweDg2LDB4RTcsMHg3NywweEJELDB4
QTIsMHgzOCwweDAzLDB4MzEsMHhERiwweDdGLDB4RkYsMHhCRCwKLSAgICAweDAzLDB4MzksMHhD
MiwweDMwLDB4QjgsMHhEOCwweERFLDB4QzIsMHgwMywweDM5LDB4QzIsMHgzMCwweDJGLDB4MUQs
MHg5RiwweERGLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHg5NywweDA4LDB4MEMsMHgyQSww
eDAzLDB4MzksMHhFMiwweDMwLDB4QzAsMHhFMywweEI2LDB4QTgsCi0gICAgMHgwMywweDM5LDB4
RTIsMHgzMCwweDMyLDB4QkYsMHhGRiwweEEzLDB4MjQsMHgzOSwweEMyLDB4MzAsMHhBOCwweEY3
LDB4OUQsMHhGRiwKLSAgICAweEUzLDB4MzgsMHhBMiwweDMwLDB4QjgsMHhCRSwweEJFLDB4RUUs
MHgwMywweDM5LDB4QzIsMHgzMCwweEEyLDB4QTMsMHhCOSwweDBELAotICAgIDB4MDMsMHgzOSww
eEMzLDB4MzAsMHhCMCwweEM4LDB4QUEsMHhFQSwweDI0LDB4MzksMHhDMiwweDMwLDB4MkIsMHhG
RiwweDY3LDB4RkUsCi0gICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDFCLDB4MTUsMHgyRCwweDAx
LDB4MDMsMHgzOSwweEMzLDB4MzAsMHgwMCwweDBBLDB4QUUsMHgzRSwKLSAgICAweDIzLDB4Mzks
MHhFMywweDMwLDB4OEUsMHgyNywweDk3LDB4MzUsMHgyMywweDM5LDB4RTMsMHgzOCwweDdGLDB4
QjAsMHhBRiwweEI3LAotICAgIDB4MDMsMHgzOSwweEMzLDB4MzAsMHgzQiwweDA3LDB4RkYsMHgy
MCwweDI0LDB4MzksMHhFMywweDMwLDB4N0YsMHg2RSwweEFCLDB4QjgsCi0gICAgMHg0NCwweDQx
LDB4RTMsMHgzMCwweEVCLDB4RUEsMHg2QSwweERCLDB4MjQsMHgzOSwweEMyLDB4MzAsMHhCQSww
eEI2LDB4QkIsMHgyQSwKLSAgICAweDAzLDB4MzksMHhFMywweDM4LDB4MjgsMHgyMCwweEEwLDB4
MjgsMHgyNCwweDQxLDB4RTMsMHgzMCwweEZFLDB4REUsMHhBQiwweDAzLAotICAgIDB4MjQsMHgz
OSwweEUzLDB4MzAsMHg5RiwweEQ1LDB4MkUsMHhBQywweDIzLDB4MzksMHhFMiwweDMwLDB4MkIs
MHgyMCwweDIwLDB4N0EsCi0gICAgMHg0NCwweDM5LDB4RTIsMHgzMCwweDJFLDB4QUEsMHhGRSww
eEY1LDB4NDQsMHgzOSwweEUyLDB4MzAsMHhBQSwweEE4LDB4QTcsMHhCRCwKLSAgICAweDQ0LDB4
MzksMHgwMywweDMxLDB4MkQsMHgyQiwweDlGLDB4MkUsMHg0NCwweDM5LDB4MDMsMHgzOSwweDU3
LDB4RkUsMHhFQiwweEEyLAotICAgIDB4NDQsMHgzOSwweEUzLDB4MzAsMHhFRiwweDc2LDB4QTgs
MHhFMCwweDI0LDB4MzksMHgwMywweDMxLDB4RjksMHhGNSwweDhCLDB4MDMsCi0gICAgMHg0NCww
eDM5LDB4MDMsMHgzMSwweEI1LDB4QUEsMHhFQSwweDA4LDB4MjQsMHgzOSwweEUzLDB4MzAsMHhC
RSwweEJDLDB4QTgsMHg4QSwKLSAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4QkYsMHhGNiwweDJF
LDB4QTgsMHgyNCwweDM5LDB4RTMsMHgzMCwweEI4LDB4NUEsMHhGRSwweENBLAotICAgIDB4MjQs
MHgzOSwweEUzLDB4MzAsMHhEQSwweEJGLDB4QkQsMHgyMywweDI0LDB4MzksMHhFMywweDMwLDB4
NTYsMHhCRSwweEZELDB4Q0UsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweEJBLDB4Q0UsMHg2
QiwweENCLDB4MjQsMHgzOSwweEUzLDB4MzAsMHhCMCwweEFCLDB4NjksMHg2QSwKLSAgICAweDQ1
LDB4NDEsMHhDMiwweDMwLDB4RjcsMHhGNywweEFGLDB4QTgsMHgyNCwweDM5LDB4MDMsMHgzMSww
eDlELDB4RjUsMHg5NiwweEE2LAotICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhFQiwweEVBLDB4
RUEsMHg4QiwweDI0LDB4MzksMHhFMywweDMwLDB4MjAsMHgwMiwweDA3LDB4ODksCi0gICAgMHg2
NSwweDQxLDB4MDMsMHgzOSwweDVDLDB4RjUsMHhGNywweEY1LDB4NjUsMHg0OSwweDAzLDB4Mzks
MHhGNywweEZBLDB4QTMsMHg4QSwKLSAgICAweEE2LDB4NDksMHg0NCwweDQxLDB4N0QsMHg3NSww
eDdGLDB4MEIsMHhFNywweDUxLDB4NjUsMHg0MSwweDNELDB4QUQsMHgyQiwweDhBLAotICAgIDB4
MDYsMHg1QSwweEE1LDB4NTEsMHg5QSwweEFCLDB4MkEsMHg4QSwweDA3LDB4NjIsMHhBNSwweDUx
LDB4RkUsMHg5QiwweEMyLDB4RTAsCi0gICAgMHgyNywweDYyLDB4QzYsMHg1OSwweEMwLDB4RkUs
MHg1RiwweDk1LDB4NDcsMHg2MiwweEU2LDB4NTksMHgzRiwweEJELDB4QkIsMHg4RiwKLSAgICAw
eDg4LDB4NkEsMHhFNiwweDU5LDB4RDcsMHhGQiwweEEyLDB4RUEsMHg2OCwweDYyLDB4MDYsMHg1
QSwweEI3LDB4M0UsMHg4QSwweEVBLAotICAgIDB4ODksMHg2QSwweDI3LDB4NjIsMHg4OSwweDBE
LDB4RTksMHhFRiwweDg4LDB4NzIsMHg0NywweDYyLDB4Q0EsMHg3OSwweEZCLDB4RkUsCi0gICAg
MHhBOSwweDcyLDB4NDgsMHg2MiwweEZFLDB4NkEsMHg3QiwweDdDLDB4ODgsMHg2QSwweDQ4LDB4
NkEsMHhGRiwweEFGLDB4RjUsMHhGRiwKLSAgICAweDg4LDB4NzIsMHg0OCwweDZBLDB4RTgsMHg3
RSwweEZGLDB4MkYsMHhBOSwweDcyLDB4NjgsMHg2QSwweERELDB4RDUsMHhFOSwweDhBLAotICAg
IDB4QTksMHg3MiwweDY4LDB4NkEsMHg3NiwweDlDLDB4RkUsMHhCQiwweEE5LDB4NzIsMHg0Nyww
eDZBLDB4RUMsMHg5OCwweDM3LDB4QjcsCi0gICAgMHhDOSwweDcyLDB4ODgsMHg2QSwweDU1LDB4
NTMsMHgyQSwweDhELDB4QzksMHg3MiwweDg4LDB4NzIsMHhFRCwweEFFLDB4QjgsMHhCNiwKLSAg
ICAweEU5LDB4N0EsMHg4OCwweDcyLDB4NkYsMHhGRiwweDVFLDB4RjgsMHhDOSwweDdBLDB4ODgs
MHg3MiwweDZGLDB4QUYsMHhEQSwweDhCLAotICAgIDB4QTgsMHg3MiwweDQ4LDB4NkEsMHgwOCww
eDBBLDB4REMsMHhGOCwweEM5LDB4N0EsMHg2OCwweDZBLDB4MkEsMHhCQywweEY3LDB4RkEsCi0g
ICAgMHhFOSwweDdBLDB4ODgsMHg3MiwweDdBLDB4RTYsMHgwRiwweEFCLDB4QzksMHg3MiwweDY4
LDB4NkEsMHgzMiwweDc2LDB4RkYsMHhCQywKLSAgICAweEU5LDB4N0EsMHg4OCwweDcyLDB4QTgs
MHgyQiwweEYyLDB4QjUsMHgwQSwweDdCLDB4QTgsMHg3MiwweDVGLDB4NzcsMHhDMywweDNBLAot
ICAgIDB4RUEsMHg3MiwweDg4LDB4NkEsMHgzRiwweEZFLDB4NkEsMHhFQywweDBBLDB4N0IsMHhB
OSwweDcyLDB4OEEsMHhBRiwweEY3LDB4N0YsCi0gICAgMHhFQSwweDdBLDB4ODgsMHg2QSwweEJB
LDB4MjIsMHg3QSwweEVCLDB4RUEsMHg3QSwweEE5LDB4NzIsMHg1QiwweEEwLDB4QTksMHgyOSwK
LSAgICAweEVBLDB4N0EsMHg4OCwweDZBLDB4MEYsMHhBQiwweEE3LDB4MEYsMHgwQiwweDgzLDB4
NjcsMHg2QSwweDBBLDB4QzIsMHhGRSwweDk3LAotICAgIDB4RTksMHg3QSwweEE5LDB4NzIsMHhE
RiwweEJFLDB4QTMsMHg0RiwweDJBLDB4N0IsMHhDQSwweDdBLDB4RUQsMHg3RCwweEZGLDB4NkYs
Ci0gICAgMHgwQSwweDdCLDB4QzksMHg3QSwweDcyLDB4QkYsMHgyRiwweDJGLDB4MkEsMHg4Myww
eEM5LDB4NzIsMHhGNSwweENGLDB4QzMsMHhFQiwKLSAgICAweEU5LDB4N0EsMHg4NywweDZBLDB4
QzAsMHg0MCwweEFBLDB4QTgsMHgwQSwweDdCLDB4QTksMHg3MiwweEU1LDB4MjUsMHhBQywweEVG
LAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhFRSwweEM4LDB4RjYsMHhFNiwweDAzLDB4NDEs
MHhDMiwweDM4LDB4QTksMHhDQiwweENGLDB4RUYsCi0gICAgMHgwMywweDQxLDB4RTIsMHgzOCww
eEU3LDB4NTUsMHg4NSwweEE5LDB4MDMsMHg0MSwweEMyLDB4MzgsMHg4QiwweEZCLDB4N0EsMHg2
OCwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4QkEsMHhGQiwweEExLDB4Q0IsMHgyMywweDQx
LDB4QzIsMHgzOCwweEVBLDB4M0IsMHhERSwweDlBLAotICAgIDB4QzMsMHg0MCwweDAyLDB4Mzks
MHhGRiwweEJGLDB4RjUsMHhERiwweDAzLDB4NDEsMHhDMiwweDM4LDB4RDcsMHgyRCwweEUyLDB4
RkEsCi0gICAgMHgwMywweDQxLDB4QTIsMHgzMCwweEJGLDB4RkYsMHg2MiwweENBLDB4RTMsMHgz
OCwweEExLDB4MzAsMHhCMCwweDlGLDB4QUQsMHgzRCwKLSAgICAweEUyLDB4MzgsMHhDMiwweDMw
LDB4MkYsMHg3QywweDIwLDB4ODAsMHgwMywweDQxLDB4QzIsMHgzOCwweDNGLDB4MkQsMHg4Qiww
eEJGLAotICAgIDB4MDMsMHg0MSwweEExLDB4MzAsMHhCRSwweEI2LDB4QUUsMHg4MiwweDAzLDB4
NDEsMHhDMiwweDM4LDB4RjYsMHhGRiwweDI2LDB4QkEsCi0gICAgMHgwMywweDQxLDB4QzIsMHgz
OCwweEZGLDB4REYsMHg3QSwweDhGLDB4QzIsMHgzOCwweEUyLDB4MzAsMHgzQSwweEEyLDB4MjAs
MHgyQiwKLSAgICAweEMyLDB4MzgsMHhFMiwweDMwLDB4QUEsMHg4MCwweDIwLDB4QUIsMHgwMyww
eDQxLDB4QTEsMHgzMCwweEVCLDB4RUYsMHhGOSwweDhFLAotICAgIDB4MDMsMHgzOSwweEMyLDB4
MzgsMHg3RiwweDdGLDB4N0UsMHhGRSwweDAzLDB4MzksMHhBMiwweDMwLDB4RTMsMHhFMywweEVC
LDB4N0EsCi0gICAgMHhFMiwweDM4LDB4ODEsMHgzMCwweDYyLDB4NUUsMHhCQSwweEFGLDB4RTMs
MHgzOCwweDgxLDB4MjgsMHg5NywweEE3LDB4ODIsMHg4OCwKLSAgICAweDAzLDB4MzksMHhBMiww
eDMwLDB4RTEsMHhFQiwweEZELDB4QjUsMHhDNywweDdBLDB4RTIsMHgzOCwweDJELDB4MkQsMHgy
RCwweDI1LAotICAgIDB4MDgsMHg4MywweDY3LDB4NkEsMHhFMiwweDZBLDB4RkEsMHhFQSwweDY3
LDB4NkEsMHg2NCwweDQ5LDB4QTgsMHhFOCwweEUwLDB4NzgsCi0gICAgMHhDNSwweDU5LDB4MDMs
MHgzOSwweEYwLDB4RkUsMHhENiwweDU3LDB4NDQsMHg0MSwweEUyLDB4MzAsMHhFQiwweEYyLDB4
NzIsMHhFQSwKLSAgICAweDIzLDB4MzksMHhDMiwweDI4LDB4MkEsMHhGQSwweDZGLDB4RUUsMHgw
MywweDMxLDB4QzIsMHgyOCwweEIwLDB4QTksMHhGRCwweEU5LAotICAgIDB4MDMsMHgzMSwweEMy
LDB4MjgsMHhBQiwweEVFLDB4QUYsMHhBRiwweDAzLDB4MzEsMHhDMiwweDMwLDB4RjIsMHg4Miww
eEIyLDB4QTEsCi0gICAgMHgwMywweDMxLDB4QzMsMHgzMCwweEVCLDB4MDEsMHgyRiwweEJBLDB4
MDMsMHgzMSwweEMyLDB4MjgsMHhFMiwweEU4LDB4ODAsMHg0MiwKLSAgICAweDAzLDB4MzEsMHhD
MiwweDI4LDB4M0UsMHgyQiwweDJBLDB4QUQsMHgwMywweDMxLDB4QzMsMHgzMCwweDBFLDB4MEIs
MHhFOCwweEY4LAotICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHhFQywweENFLDB4QTcsMHgwMiww
eDAzLDB4MzEsMHhDMywweDMwLDB4QkQsMHg5RCwweEQ3LDB4QkYsCi0gICAgMHhFMywweDMwLDB4
QzIsMHgyOCwweEEyLDB4RUEsMHhGMCwweEU3LDB4RTMsMHgzMCwweEMyLDB4MjgsMHgwMiwweDAx
LDB4NkEsMHg4NiwKLSAgICAweDAzLDB4MzEsMHhDMywweDMwLDB4RkEsMHgyRSwweDYzLDB4NjMs
MHgwMywweDMxLDB4QzIsMHgyOCwweEZBLDB4OTIsMHhEQiwweEJGLAotICAgIDB4MDMsMHgzMSww
eEMyLDB4MzAsMHhGRSwweEZFLDB4QUIsMHg4RSwweDAzLDB4MzEsMHhDMywweDMwLDB4N0IsMHhG
RiwweDJBLDB4MEUsCi0gICAgMHgwMywweDMxLDB4QTIsMHgyOCwweEZBLDB4RDYsMHhGRSwweEND
LDB4RTMsMHgzMCwweEEyLDB4MjgsMHgyMiwweEZBLDB4QTEsMHgwQiwKLSAgICAweDAzLDB4MzEs
MHhDMiwweDI4LDB4MkEsMHhBOSwweDVGLDB4N0UsMHgwMywweDMxLDB4QzIsMHgzMCwweDdDLDB4
RjcsMHg2NSwweDczLAotICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHgwMCwweDJCLDB4OTUsMHhE
QSwweDIzLDB4MzksMHhDMiwweDI4LDB4RjIsMHhDQiwweEY3LDB4QjcsCi0gICAgMHgwMywweDMx
LDB4RTIsMHgzMCwweEMzLDB4QzIsMHhDRiwweDU3LDB4MjMsMHgzMSwweEMyLDB4MzAsMHhBNyww
eDZFLDB4RTMsMHhFMywKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4MDIsMHgyMCwweEVDLDB4
NjgsMHgwMywweDM5LDB4QzIsMHgzMCwweDg4LDB4MDAsMHhGOCwweDBCLAotICAgIDB4MDMsMHgz
OSwweEMyLDB4MzAsMHg3RSwweEVBLDB4QTIsMHgwQSwweDAzLDB4MzksMHhDMywweDMwLDB4MkEs
MHgzNywweEFCLDB4REIsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweEVFLDB4QUEsMHhBRSww
eEY1LDB4MjQsMHgzOSwweEMzLDB4MzAsMHhDMiwweDdBLDB4QjgsMHhCMiwKLSAgICAweDI0LDB4
MzksMHhFMywweDMwLDB4QTksMHhBRiwweEFCLDB4QjcsMHgyNCwweDM5LDB4RTMsMHgzMCwweDU1
LDB4REUsMHhGNywweDdBLAotICAgIDB4MjQsMHg0MSwweEUzLDB4MzAsMHgwOSwweEJFLDB4QkQs
MHg2NSwweDI0LDB4MzksMHhFMywweDM4LDB4QjQsMHgzNiwweEY0LDB4RDcsCi0gICAgMHgyNCww
eDQxLDB4QzMsMHgzMCwweDhBLDB4ODgsMHhFMywweERBLDB4MjQsMHgzOSwweEUzLDB4MzgsMHg1
NywweEZCLDB4RTIsMHgyRiwKLSAgICAweDI0LDB4MzksMHhFMywweDM4LDB4NkQsMHg3QSwweDcy
LDB4RUMsMHgyNCwweDM5LDB4RTMsMHgzOCwweDMzLDB4M0IsMHgzOSwweEI3LAotICAgIDB4MjQs
MHgzOSwweEUzLDB4MzAsMHhCRiwweEI2LDB4QTIsMHhBMiwweDI0LDB4MzksMHgwMywweDM5LDB4
QkUsMHg1NSwweDVGLDB4NTUsCi0gICAgMHgyMywweDM5LDB4RTQsMHgzMCwweEZBLDB4RUEsMHhF
QiwweEEyLDB4MDMsMHgzOSwweEMyLDB4MzAsMHgzRiwweEJGLDB4RUUsMHgwMiwKLSAgICAweDI0
LDB4MzksMHhFMywweDMwLDB4REYsMHhENywweEZDLDB4QUIsMHgwMywweDMxLDB4QzIsMHgzMCww
eDIyLDB4QkYsMHgyRSwweDAwLAotICAgIDB4MjQsMHgzOSwweEUyLDB4MzAsMHgzQSwweEJGLDB4
NzgsMHhBOCwweDY1LDB4NDEsMHhFMywweDMwLDB4RTMsMHhCQiwweEE1LDB4QTcsCi0gICAgMHg2
NCwweDQxLDB4MDQsMHgzMSwweDdCLDB4RUUsMHhGMCwweEFCLDB4NDQsMHgzOSwweDAzLDB4MzEs
MHhBQSwweEUyLDB4RTgsMHg3MCwKLSAgICAweDQ0LDB4NDEsMHgyNCwweDM5LDB4Q0IsMHg3OSww
eDU1LDB4MzUsMHg0NCwweDM5LDB4MDQsMHgzOSwweDZBLDB4NkIsMHg3QSwweEJBLAotICAgIDB4
MjQsMHg0MSwweDAzLDB4MzEsMHhGNywweEJFLDB4QTcsMHgwRSwweDY0LDB4NDEsMHgwMywweDM5
LDB4RkQsMHhGNywweEU1LDB4RkYsCi0gICAgMHg0NCwweDQxLDB4RTMsMHgzMCwweEYyLDB4RTIs
MHhDMiwweEFBLDB4NDQsMHgzOSwweEUzLDB4MzAsMHg2MiwweDYyLDB4QkIsMHhBQiwKLSAgICAw
eDQ0LDB4NDEsMHhFMywweDMwLDB4RUIsMHg3MywweEJBLDB4QjIsMHgyNCwweDQxLDB4MDMsMHgz
MSwweDdGLDB4QUYsMHhCQiwweDA4LAotICAgIDB4NDQsMHg0MSwweEUzLDB4MzAsMHhCNywweEZC
LDB4QkEsMHhBOCwweDQ0LDB4NDEsMHgwMywweDM5LDB4N0UsMHhGQSwweDJGLDB4MDEsCi0gICAg
MHg2NSwweDQxLDB4MDMsMHgzOSwweERELDB4RjcsMHhDQSwweDIzLDB4NjUsMHg0MSwweDA0LDB4
MzksMHg3NSwweEY3LDB4MkUsMHgwQywKLSAgICAweEM2LDB4NTEsMHhFMywweDM4LDB4NUYsMHg1
RiwweEFGLDB4MkIsMHhDNiwweDUxLDB4MjQsMHgzOSwweEJELDB4RkQsMHgyQiwweDAwLAotICAg
IDB4MjcsMHg2MiwweDg1LDB4NDksMHhGNSwweEJELDB4QTMsMHhBMiwweDI3LDB4NjIsMHhBNSww
eDQ5LDB4QkQsMHhGRSwweEFFLDB4MEEsCi0gICAgMHgyNywweDYyLDB4QzYsMHg1MSwweEVELDB4
RUYsMHhGQSwweEE4LDB4MDcsMHg2MiwweEU2LDB4NTksMHhCQSwweDk1LDB4QjUsMHgyRiwKLSAg
ICAweDQ3LDB4NkEsMHhFNiwweDU5LDB4QkQsMHhBQiwweDAyLDB4ODAsMHg0NywweDYyLDB4MDcs
MHg2MiwweDNELDB4NjIsMHgwMiwweDAwLAotICAgIDB4ODgsMHg2QSwweDI3LDB4NjIsMHhEMiww
eDQyLDB4N0QsMHg1RiwweDY4LDB4NkEsMHgwNywweDYyLDB4QUUsMHhBQSwweDFGLDB4QkQsCi0g
ICAgMHhBOCwweDcyLDB4NDcsMHg2QSwweDdELDB4QUEsMHhBRiwweERGLDB4QTksMHg3MiwweDQ3
LDB4NjIsMHhBNywweEJGLDB4QjgsMHhGQSwKLSAgICAweEE4LDB4NzIsMHg0OCwweDYyLDB4RUYs
MHg1RSwweEZFLDB4QTgsMHhBOSwweDcyLDB4MjcsMHg2MiwweEFBLDB4M0UsMHhBNywweDJBLAot
ICAgIDB4QTksMHg3MiwweDY4LDB4NkEsMHhENiwweDc3LDB4Q0YsMHg5RSwweENBLDB4NzIsMHg0
OCwweDZBLDB4QUQsMHhBQiwweEFCLDB4NzgsCi0gICAgMHhBOCwweDcyLDB4NDcsMHg2MiwweEFB
LDB4MkUsMHhGRiwweEI4LDB4QTksMHg3MiwweDY3LDB4NkEsMHhFRSwweDQ2LDB4QTAsMHgwMiwK
LSAgICAweEE4LDB4NzIsMHg0NywweDYyLDB4MEIsMHg4OSwweDI3LDB4MDIsMHhDOSwweDdBLDB4
ODgsMHg2QSwweEFBLDB4OUIsMHg2RiwweEUxLAotICAgIDB4RUEsMHg3QSwweDY3LDB4NkEsMHhG
OCwweEI2LDB4QkYsMHhGRCwweEM5LDB4NzIsMHhBOCwweDcyLDB4QUQsMHgxNSwweEJGLDB4N0Es
Ci0gICAgMHhDOSwweDcyLDB4NjgsMHg2QSwweDdDLDB4RkIsMHhDOSwweEFCLDB4QzksMHg3Miww
eDg5LDB4NzIsMHg0MywweDg5LDB4QkYsMHhBQSwKLSAgICAweEVCLDB4N0EsMHhBOSwweDcyLDB4
RDUsMHhENSwweEYzLDB4QUYsMHhDOSwweDcyLDB4ODgsMHg2QSwweEY1LDB4RjUsMHg5NiwweEUy
LAotICAgIDB4QzgsMHg3MiwweDY4LDB4NkEsMHhGRSwweEZBLDB4MkIsMHgxRiwweEM5LDB4NzIs
MHg2NywweDZBLDB4MzAsMHhBRSwweEVBLDB4QUEsCi0gICAgMHhDOSwweDcyLDB4ODgsMHg3Miww
eDAwLDB4MEIsMHgzRCwweDlBLDB4RTksMHg3QSwweDY4LDB4NkEsMHg2OCwweEVBLDB4QkMsMHhG
QSwKLSAgICAweEVBLDB4N0EsMHg4OCwweDZBLDB4RDUsMHhCQiwweEEzLDB4QUQsMHhFQSwweDdB
LDB4QTksMHg3MiwweDgxLDB4MDIsMHg3RSwweEFELAotICAgIDB4RUEsMHg3QSwweEE5LDB4NzIs
MHgzOSwweDI4LDB4MDMsMHgyQSwweDBBLDB4N0IsMHhBOCwweDcyLDB4NTYsMHg4RSwweDJDLDB4
QkUsCi0gICAgMHgwQSwweDdCLDB4QTksMHg3MiwweDU3LDB4RjUsMHg3MCwweEEwLDB4MEIsMHg4
MywweDg5LDB4NzIsMHg4RiwweDZGLDB4NkYsMHg5RiwKLSAgICAweEU5LDB4N0EsMHhBOSwweDcy
LDB4MEMsMHgyMywweDZFLDB4RDYsMHgwQSwweDdCLDB4QzksMHg3MiwweEUzLDB4QkQsMHhCRiww
eEFELAotICAgIDB4MkIsMHg4MywweEM5LDB4NzIsMHg1RiwweDc3LDB4RDcsMHgyQSwweDJCLDB4
ODMsMHhBOCwweDcyLDB4QUYsMHhBQiwweEE2LDB4RjAsCi0gICAgMHgyMywweDQxLDB4QzIsMHgz
OCwweDU0LDB4NUUsMHg1RSwweDVFLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhCRiwweDgxLDB4Rjks
MHhBMywKLSAgICAweDAyLDB4NDEsMHhDMiwweDM4LDB4OEEsMHgyQSwweEJBLDB4QjUsMHgwMyww
eDQxLDB4RTIsMHgzOCwweEYzLDB4RDUsMHhGNywweDU2LAotICAgIDB4MDMsMHg0MSwweEMyLDB4
MzgsMHg3QywweEU4LDB4QUEsMHhGNywweDIzLDB4NDEsMHhFMiwweDM4LDB4NzMsMHhFQiwweEY1
LDB4NTUsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzOCwweDc2LDB4REUsMHg5MCwweERBLDB4MDMs
MHg0MSwweEMyLDB4MzgsMHg2RSwweDZFLDB4RkEsMHhBQSwKLSAgICAweEUyLDB4MzgsMHhDMiww
eDMwLDB4MEIsMHg4RCwweDI3LDB4REUsMHgwMiwweDQxLDB4QTEsMHgzMCwweEI3LDB4QkEsMHhB
RSwweEE4LAotICAgIDB4RTIsMHgzOCwweEMxLDB4MzgsMHg0MCwweEZBLDB4NEIsMHg3QywweEUy
LDB4MzgsMHhDMSwweDMwLDB4NkUsMHgzNywweDIyLDB4MDEsCi0gICAgMHgwMiwweDQxLDB4QTIs
MHgzMCwweEFBLDB4ODYsMHgyMiwweEUyLDB4MDMsMHg0MSwweEMyLDB4MzgsMHg3RiwweEZBLDB4
RjgsMHhERiwKLSAgICAweEUyLDB4MzgsMHhDMiwweDM4LDB4MjksMHhCNSwweEQ4LDB4M0IsMHhF
MiwweDM4LDB4QzIsMHgzOCwweEFGLDB4QkEsMHg1OCwweERGLAotICAgIDB4MDMsMHgzOSwweEMy
LDB4MzgsMHhGQiwweEQ3LDB4OTUsMHhCQSwweDAzLDB4MzksMHhDMiwweDM4LDB4RkUsMHhCQiww
eDZBLDB4NTgsCi0gICAgMHhFMiwweDM4LDB4QTIsMHgzMCwweEFBLDB4QjgsMHhGQSwweEVFLDB4
QzIsMHgzMCwweDgyLDB4MzAsMHhCMCwweEY4LDB4QkEsMHhCMiwKLSAgICAweDAzLDB4MzksMHhB
MiwweDMwLDB4RjUsMHhBNSwweDJGLDB4QUYsMHhFMiwweDM4LDB4QzIsMHgzMCwweDBCLDB4MkMs
MHhGNiwweDc0LAotICAgIDB4RTIsMHgzOCwweEEyLDB4MzAsMHhERiwweDVFLDB4N0EsMHhGQiww
eDg3LDB4NzIsMHhFMiwweDM4LDB4MEQsMHgyRCwweEJELDB4RDUsCi0gICAgMHhBNywweDcyLDB4
NjQsMHg0OSwweDAwLDB4QTgsMHg3RiwweDU1LDB4MjYsMHg2MiwweDIzLDB4NDEsMHg3OCwweDVF
LDB4N0YsMHg3NSwKLSAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4MUYsMHhGQiwweEU4LDB4QTAs
MHgyMywweDM5LDB4RTIsMHgzMCwweEY4LDB4RDcsMHhERiwweEVFLAotICAgIDB4MjQsMHgzOSww
eEUyLDB4MzAsMHhGRiwweDg5LDB4NjYsMHg3RSwweDAzLDB4MzEsMHhDMiwweDMwLDB4QTgsMHgz
MywweEJCLDB4RUEsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzMCwweEQ1LDB4NzUsMHg3NSwweERF
LDB4MDMsMHgzMSwweEMzLDB4MzAsMHgwQiwweEI3LDB4RjMsMHhCMCwKLSAgICAweDAzLDB4MzEs
MHhDMiwweDI4LDB4QUYsMHg3RSwweEFCLDB4QzgsMHgwMywweDMxLDB4QzMsMHgzMCwweEY2LDB4
RUUsMHhBRSwweEE3LAotICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHgzRCwweEZGLDB4RDcsMHhE
QiwweDAzLDB4MzEsMHhDMiwweDMwLDB4RkUsMHhFRSwweEFFLDB4RUEsCi0gICAgMHhFMywweDMw
LDB4QzIsMHgyOCwweDJELDB4MzUsMHgyOCwweDA4LDB4MDMsMHgzMSwweEMyLDB4MzAsMHhFNSww
eDVFLDB4QUMsMHhFQiwKLSAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4QTksMHhBNywweDJBLDB4
MDAsMHhFMiwweDMwLDB4QzIsMHgyOCwweDJGLDB4MEIsMHhBOCwweEEwLAotICAgIDB4MjMsMHgz
MSwweEMyLDB4MzAsMHg2QiwweEZGLDB4N0QsMHg1RiwweDAzLDB4MzEsMHhDMiwweDMwLDB4RUYs
MHgyRiwweDJGLDB4M0EsCi0gICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDU1LDB4NTUsMHhCNyww
eDVFLDB4MjQsMHgzOSwweEUzLDB4MzAsMHhCRiwweERGLDB4RUYsMHhFRCwKLSAgICAweDAzLDB4
MzksMHhDMiwweDMwLDB4RkUsMHhGRSwweEY4LDB4RjgsMHgwMywweDMxLDB4QzIsMHgyOCwweDk3
LDB4RDUsMHhFNiwweDBGLAotICAgIDB4MjQsMHgzOSwweEMyLDB4MjgsMHhGNywweEJGLDB4QjUs
MHhBRiwweDAzLDB4MzEsMHhDMiwweDMwLDB4RjIsMHhDOCwweEFBLDB4Q0EsCi0gICAgMHhFMyww
eDMwLDB4QzIsMHgyOCwweEEyLDB4N0YsMHhFNiwweDIwLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhC
NiwweEFGLDB4RjcsMHg3RSwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4RkYsMHhCNiwweEJG
LDB4QUQsMHgwNCwweDMxLDB4RTIsMHgzMCwweEZELDB4RjMsMHgxRSwweDI1LAotICAgIDB4MDMs
MHgzMSwweEMyLDB4MjgsMHhERiwweDdGLDB4NzAsMHg4MCwweDAzLDB4MzEsMHhDMiwweDMwLDB4
QUIsMHhFQiwweEZELDB4RUEsCi0gICAgMHgwMywweDMxLDB4RTMsMHgzMCwweDA5LDB4N0IsMHg3
QSwweDU1LDB4MDMsMHgzOSwweEMzLDB4MzAsMHhCMiwweEJFLDB4QTgsMHhGNywKLSAgICAweDAz
LDB4MzksMHhFMywweDMwLDB4RjUsMHhCRSwweDFCLDB4QkUsMHgyNCwweDM5LDB4RTMsMHgzMCww
eDdGLDB4QkYsMHhGQiwweEIyLAotICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhENiwweDdFLDB4
REEsMHg3QSwweDI0LDB4NDEsMHgwMywweDMxLDB4RkYsMHhFQiwweEUzLDB4OEQsCi0gICAgMHgw
MywweDM5LDB4RTMsMHgzMCwweDU1LDB4NzcsMHhFMCwweEY4LDB4MjQsMHg0MSwweEUzLDB4Mzgs
MHhGNSwweEJELDB4QkQsMHhEMiwKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4NTcsMHhBRSww
eDNBLDB4QUEsMHgyNCwweDM5LDB4QzMsMHgzOCwweDBCLDB4QUEsMHhCRSwweEFBLAotICAgIDB4
RTMsMHgzOCwweDI0LDB4MzEsMHhFQSwweEFBLDB4QUUsMHhBNiwweDI0LDB4NDEsMHhFMywweDMw
LDB4RUYsMHg4QSwweDg4LDB4QUQsCi0gICAgMHg0NCwweDM5LDB4RTMsMHgzOCwweDdELDB4RkQs
MHhGOSwweEJGLDB4MjQsMHgzOSwweEMzLDB4MzgsMHhCQSwweEFBLDB4ODIsMHgyMCwKLSAgICAw
eDI0LDB4MzksMHgwMywweDM5LDB4M0UsMHg2RSwweEEwLDB4NUMsMHgyMywweDM5LDB4RTMsMHgz
MCwweDA5LDB4MkEsMHhCQSwweERCLAotICAgIDB4MjQsMHgzOSwweDAzLDB4MzEsMHg1QSwweEIy
LDB4OEIsMHg3RCwweDIzLDB4MzksMHhFMywweDMwLDB4MDAsMHhGMCwweDZBLDB4QUYsCi0gICAg
MHg0NCwweDM5LDB4MDMsMHgzMSwweEZELDB4OEYsMHhDRiwweDY3LDB4NjUsMHg0MSwweEUzLDB4
MzAsMHhDRiwweEVGLDB4NzksMHhCRiwKLSAgICAweDQ0LDB4MzksMHhFMywweDMwLDB4MkIsMHhB
RiwweEZGLDB4RjcsMHgyMywweDM5LDB4RTMsMHgzMCwweDAwLDB4QjgsMHhFRSwweDdFLAotICAg
IDB4NjQsMHg0MSwweEMyLDB4MzAsMHgyQSwweEFGLDB4RkYsMHg3NywweDQ0LDB4NDEsMHgwNCww
eDM5LDB4MkMsMHgyMCwweEFBLDB4MTUsCi0gICAgMHg2NSwweDQ5LDB4MjQsMHg0MSwweDdFLDB4
RUUsMHhGQiwweDBBLDB4NjQsMHg0MSwweDAzLDB4MzksMHg1QSwweEZBLDB4RUEsMHgyOCwKLSAg
ICAweDY0LDB4NDEsMHgwMywweDM5LDB4RkYsMHhBNSwweEFFLDB4M0MsMHg4NiwweDQ5LDB4MDMs
MHgzOSwweEY3LDB4QUQsMHg4QSwweDg4LAotICAgIDB4NjUsMHg0MSwweDA0LDB4MzksMHhERiww
eEVCLDB4MzgsMHgwMCwweDg1LDB4NDksMHgyNCwweDM5LDB4RDUsMHhCRiwweEJCLDB4MDIsCi0g
ICAgMHg4NSwweDQ5LDB4MjQsMHgzOSwweDdELDB4RkYsMHhCOCwweEUwLDB4QTYsMHg1MSwweDIz
LDB4MzksMHhGOSwweEVCLDB4OEEsMHhBQSwKLSAgICAweDg1LDB4NDksMHgyNCwweDQxLDB4Rjcs
MHgwQSwweDAyLDB4OEUsMHhBNSwweDUxLDB4NDQsMHg0MSwweEQ1LDB4QUUsMHhGRSwweDBCLAot
ICAgIDB4RTYsMHg1OSwweDg1LDB4NDksMHg5NSwweDNELDB4M0YsMHhERiwweDA2LDB4NUEsMHhD
NiwweDUxLDB4QkYsMHgzRiwweEUzLDB4OUIsCi0gICAgMHgyNywweDYyLDB4QzUsMHg1MSwweDIw
LDB4MDgsMHhBOSwweDI5LDB4NDcsMHg2MiwweDA2LDB4NUEsMHhENSwweEY1LDB4N0QsMHhCRCwK
LSAgICAweDQ4LDB4NkEsMHgwNywweDVBLDB4RkYsMHhBRiwweEE1LDB4MjcsMHg0OCwweDYyLDB4
RTYsMHg1OSwweEY3LDB4QkEsMHgyRiwweDg3LAotICAgIDB4NjgsMHg2QSwweDA2LDB4NUEsMHhG
QSwweEVBLDB4OEIsMHg4NywweDY3LDB4NkEsMHgyNywweDYyLDB4NEEsMHhCMCwweDNFLDB4QkYs
Ci0gICAgMHg2OCwweDZBLDB4MDYsMHg1QSwweDJBLDB4QkUsMHg3QywweDdCLDB4ODgsMHg2QSww
eDI3LDB4NjIsMHg5NywweEQ5LDB4QkQsMHgwRiwKLSAgICAweEE4LDB4NzIsMHg0NywweDYyLDB4
REYsMHhCRiwweENBLDB4ODIsMHhDOSwweDcyLDB4NjcsMHg2QSwweDJCLDB4MzUsMHhENSwweDU3
LAotICAgIDB4QTgsMHg3MiwweDY4LDB4NkEsMHhCQiwweEU4LDB4QTgsMHhGRiwweEE5LDB4NzIs
MHg0NywweDYyLDB4REYsMHg1NSwweDZCLDB4MkEsCi0gICAgMHhBOSwweDcyLDB4NDcsMHg2Miww
eDlFLDB4QjUsMHgyNywweEJFLDB4QzksMHg3MiwweDg4LDB4NkEsMHg3QSwweEVBLDB4NkEsMHhD
RiwKLSAgICAweEE5LDB4NzIsMHg0NywweDYyLDB4RUEsMHgyMiwweDA5LDB4MDIsMHhDOSwweDcy
LDB4ODgsMHg2QSwweDM5LDB4OTYsMHg1RiwweDU3LAotICAgIDB4QzksMHg3MiwweDg4LDB4NzIs
MHg4MCwweEVBLDB4QkUsMHhGRCwweEM5LDB4N0EsMHg2OCwweDZBLDB4QzksMHhBQiwweEFBLDB4
QjcsCi0gICAgMHhDOSwweDcyLDB4NjcsMHg2QSwweEM5LDB4RTAsMHhBOCwweERBLDB4QTgsMHg3
MiwweDY4LDB4NkEsMHg3MCwweDlGLDB4REYsMHhFQSwKLSAgICAweEM5LDB4N0EsMHg2OCwweDZB
LDB4RkEsMHhCRiwweEIzLDB4QTUsMHhBOSwweDcyLDB4NjgsMHg2QSwweDJFLDB4QUEsMHg5OCww
eERCLAotICAgIDB4Q0EsMHg3QSwweDY4LDB4NkEsMHgyOCwweEJGLDB4RkUsMHhFRiwweEM5LDB4
NzIsMHg2OCwweDZBLDB4RTAsMHhBRSwweDg5LDB4QjksCi0gICAgMHhDOSwweDdBLDB4NjgsMHg2
QSwweEI3LDB4MDUsMHg4RSwweEVBLDB4RTksMHg3QSwweDg4LDB4NkEsMHhCQiwweEJBLDB4QTIs
MHhENSwKLSAgICAweEVBLDB4N0EsMHg4OCwweDZBLDB4N0EsMHhFOCwweDVBLDB4NzksMHhDQSww
eDdBLDB4NjcsMHg2QSwweDhBLDB4QzEsMHgyQiwweDBBLAotICAgIDB4QzksMHg3MiwweDg5LDB4
NzIsMHg5OSwweEI3LDB4MjYsMHhCMiwweEM5LDB4NzIsMHg2OCwweDZBLDB4MjgsMHhBQiwweEY3
LDB4RkMsCi0gICAgMHhDOSwweDcyLDB4MjYsMHg2MiwweDAwLDB4MDAsMHgwMiwweEE2LDB4RTks
MHg3QSwweDg3LDB4NkEsMHhCQSwweEVFLDB4QTMsMHhBNywKLSAgICAweEVBLDB4N0EsMHg4OCww
eDZBLDB4MDIsMHhBQiwweEZCLDB4RkEsMHhDQSwweDdBLDB4NjgsMHg2QSwweDM5LDB4RkEsMHgy
QSwweDBGLAotICAgIDB4Q0EsMHg3QSwweDY4LDB4NkEsMHgwQSwweDhELDB4MkEsMHhBQiwweDBB
LDB4ODMsMHhBOSwweDcyLDB4MkIsMHhBRiwweEY1LDB4NTYsCi0gICAgMHgwQSwweDdCLDB4Qzks
MHg3MiwweEVBLDB4RjgsMHhGQiwweDk1LDB4MEEsMHg3QiwweEE4LDB4NzIsMHhBMCwweDdFLDB4
REEsMHg3RiwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4RkYsMHg5QiwweDczLDB4REIsMHgw
MywweDQxLDB4QzIsMHgzOCwweDZBLDB4NTAsMHhGMiwweEUyLAotICAgIDB4MDMsMHg0MSwweEEy
LDB4MzgsMHhFRiwweEYyLDB4N0EsMHg2QiwweDAyLDB4MzksMHhBMSwweDMwLDB4QUIsMHhBMyww
eEY5LDB4RkIsCi0gICAgMHgwMiwweDQxLDB4QTIsMHgzMCwweEJFLDB4QUEsMHgyNiwweDhGLDB4
MDMsMHgzOSwweEMyLDB4MzgsMHhGRiwweEU4LDB4QkMsMHhGNiwKLSAgICAweEUyLDB4MzgsMHhB
MSwweDMwLDB4QTAsMHhGQSwweEQ3LDB4RDcsMHhFMywweDM4LDB4QTEsMHgzMCwweDAyLDB4ODMs
MHhCRSwweDE2LAotICAgIDB4RTIsMHgzOCwweEEyLDB4MzAsMHhBQSwweEEzLDB4OEEsMHgwMCww
eDAyLDB4MzksMHhDMiwweDM4LDB4QUUsMHhENiwweEFGLDB4OTksCi0gICAgMHhFMiwweDM4LDB4
QTEsMHgzMCwweEEwLDB4RjAsMHhERSwweEFBLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhERiwweEFG
LDB4MkYsMHg3OSwKLSAgICAweDAzLDB4MzksMHhDMiwweDM4LDB4OUEsMHhFQywweEZFLDB4RUYs
MHgwMiwweDM5LDB4QTEsMHgzOCwweEVBLDB4QTgsMHg2QSwweEJBLAotICAgIDB4RTIsMHgzOCww
eEEyLDB4MzAsMHhGQSwweEFCLDB4QTMsMHhBMCwweEUyLDB4MzgsMHhDMiwweDM4LDB4MDUsMHhB
MywweEMyLDB4NjAsCi0gICAgMHhFMiwweDM4LDB4QzIsMHgzMCwweDAyLDB4OEYsMHhCRiwweEVG
LDB4RTIsMHgzOCwweDgxLDB4MzAsMHhCMCwweERCLDB4RDMsMHg3QSwKLSAgICAweEUzLDB4Mzgs
MHhBMiwweDMwLDB4NEEsMHg3QSwweERELDB4RkQsMHgwMywweDM5LDB4QTIsMHgzMCwweDVELDB4
OUQsMHgzNSwweERELAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg5QSwweEVBLDB4RUEsMHhE
RiwweDAzLDB4MzksMHhBMiwweDI4LDB4QkMsMHgxOCwweEVFLDB4RUIsCi0gICAgMHgwMywweDM5
LDB4ODEsMHgzMCwweEJFLDB4RUMsMHhCRiwweDdELDB4RTMsMHgzOCwweEExLDB4MzAsMHgwQiww
eEFCLDB4RkYsMHg3NSwKLSAgICAweDIzLDB4NDEsMHhBMiwweDMwLDB4MEIsMHhFRiwweDdELDB4
REYsMHgyNCwweDQxLDB4ODEsMHgzMCwweDgyLDB4QUUsMHhGRiwweEQ3LAotICAgIDB4MjQsMHg0
MSwweEExLDB4MzAsMHhBMCwweEJBLDB4RkYsMHhENSwweDIzLDB4MzksMHhFMywweDMwLDB4QUUs
MHhBQSwweDdCLDB4NjksCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEZBLDB4RjIsMHhGRiww
eEZGLDB4MDMsMHgzMSwweEMyLDB4MzAsMHgyOSwweDM1LDB4QkYsMHhGRiwKLSAgICAweDAzLDB4
MzEsMHhDMiwweDI4LDB4ODAsMHhCRSwweEZCLDB4RkQsMHgyNCwweDM5LDB4QzMsMHgyOCwweERB
LDB4N0IsMHhDRiwweEZBLAotICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHg3MywweDZELDB4REQs
MHg5NywweEUzLDB4MzAsMHhDMywweDI4LDB4MEIsMHhFMywweEEyLDB4RTgsCi0gICAgMHgwMyww
eDMxLDB4QzMsMHgzMCwweEJBLDB4M0UsMHhBQSwweEFCLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhB
OCwweEUwLDB4NkEsMHhGQSwKLSAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4MTgsMHgxRiwweDhG
LDB4QkYsMHgwMywweDMxLDB4QzIsMHgzMCwweEU3LDB4RkUsMHhCRiwweEZELAotICAgIDB4MDMs
MHgzMSwweEMyLDB4MjgsMHhFQiwweEU3LDB4REUsMHg3MywweDAzLDB4MzEsMHhDMiwweDI4LDB4
RUEsMHhBQiwweEVDLDB4REQsCi0gICAgMHhFMywweDMwLDB4QzIsMHgyOCwweEIyLDB4RDcsMHg4
MCwweDNBLDB4MjQsMHgzOSwweEMyLDB4MzAsMHgyQiwweEVCLDB4QjksMHg1QiwKLSAgICAweDIz
LDB4MzksMHhDMywweDMwLDB4RkUsMHhGOSwweEVBLDB4RTIsMHgyNCwweDM5LDB4QzIsMHgzMCww
eDgyLDB4N0IsMHhGRCwweEQ3LAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHhFNywweDc1LDB4
NTUsMHg1NCwweDA0LDB4MzksMHhFMywweDMwLDB4MDksMHg1NSwweDU1LDB4NTUsCi0gICAgMHhF
MywweDMwLDB4QzIsMHgzMCwweDA4LDB4QTAsMHhCMCwweDAwLDB4MDMsMHgzMSwweEMyLDB4Mjgs
MHg4RiwweDhBLDB4MkEsMHhBNywKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4ODAsMHhBQSww
eEI1LDB4MzYsMHgwMywweDMxLDB4QzMsMHgzMCwweEZFLDB4RjAsMHhGRSwweEVFLAotICAgIDB4
MDMsMHgzOSwweEEyLDB4MzAsMHhBQiwweEZBLDB4RUQsMHhCRSwweDI0LDB4MzksMHhDMiwweDMw
LDB4MEYsMHgwRiwweEJCLDB4RjcsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweEE3LDB4M0Us
MHhCRiwweEVGLDB4MDMsMHgzOSwweEMzLDB4MzAsMHg3NiwweEVFLDB4Q0EsMHg4MCwKLSAgICAw
eDAzLDB4MzEsMHhBMiwweDMwLDB4QUEsMHgyMiwweEFBLDB4QjIsMHgwMywweDMxLDB4QzIsMHgz
MCwweERFLDB4QkEsMHgyQiwweDNBLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHhBQSwweEI4
LDB4NzAsMHg3MCwweDAzLDB4MzEsMHhDMiwweDI4LDB4MDAsMHgyMCwweEJGLDB4MkQsCi0gICAg
MHgwMywweDM5LDB4RTMsMHgzMCwweEU4LDB4QTYsMHg1RSwweDVGLDB4MjQsMHgzOSwweEUzLDB4
MzAsMHgyRiwweDJGLDB4NzcsMHg3NSwKLSAgICAweDAzLDB4MzksMHhFMywweDMwLDB4OEIsMHgy
MCwweDIwLDB4M0EsMHgyNCwweDM5LDB4MDMsMHgzOSwweDdGLDB4NkYsMHgyNSwweEY1LAotICAg
IDB4MjQsMHg0MSwweDAzLDB4MzksMHg2MywweDVCLDB4NUUsMHg1NiwweDQ0LDB4MzksMHhFMyww
eDM4LDB4RkQsMHhGRiwweDdGLDB4QTUsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzOCwweDdGLDB4
N0YsMHhGQSwweEEzLDB4MjQsMHgzOSwweEUzLDB4MzgsMHhBNSwweDM3LDB4QkUsMHhGRiwKLSAg
ICAweDAzLDB4MzksMHhDMywweDMwLDB4MDAsMHgwMCwweEUyLDB4RTIsMHgyNCwweDM5LDB4QzMs
MHgzOCwweEEwLDB4MkEsMHhCMiwweEEyLAotICAgIDB4NDQsMHg0MSwweEUzLDB4MzgsMHhERSww
eEFFLDB4M0UsMHgzNywweDQ0LDB4NDEsMHhFMywweDMwLDB4REYsMHhCQiwweEVFLDB4MkUsCi0g
ICAgMHg0NCwweDQxLDB4RTMsMHgzMCwweEVBLDB4NTMsMHg2RSwweEU4LDB4NDQsMHg0MSwweEUz
LDB4MzAsMHhCQSwweDBBLDB4QUQsMHhFRiwKLSAgICAweDI0LDB4MzksMHgwMywweDM5LDB4ODAs
MHg5OCwweDk1LDB4MTUsMHg0NCwweDM5LDB4MDMsMHgzOSwweEZGLDB4OTcsMHhBRiwweEE4LAot
ICAgIDB4NjUsMHg0MSwweEUzLDB4MzAsMHhENywweDdFLDB4MkEsMHgyRSwweDI0LDB4NDEsMHgw
MywweDM5LDB4NUQsMHg3OSwweDZGLDB4NDgsCi0gICAgMHg0NCwweDQxLDB4QzMsMHgzMCwweDdG
LDB4N0IsMHhBQiwweDAyLDB4NDUsMHg0MSwweDAzLDB4MzksMHgxNSwweEQ1LDB4N0QsMHhBRiwK
LSAgICAweDY1LDB4NDEsMHhFMiwweDMwLDB4MjgsMHgyRiwweEJELDB4RjcsMHg4NSwweDQ5LDB4
MjMsMHgzOSwweDBBLDB4ODAsMHhBQSwweDZELAotICAgIDB4ODUsMHg0OSwweDQ0LDB4NDEsMHhC
RSwweDMyLDB4ODIsMHgwOSwweEE1LDB4NDksMHg0NCwweDQxLDB4RkUsMHhGQSwweEFBLDB4M0Us
Ci0gICAgMHhBNiwweDQ5LDB4NDUsMHg0MSwweEI2LDB4QjYsMHg5RSwweEZFLDB4QzYsMHg1MSww
eDY1LDB4NDksMHhFQSwweDhBLDB4RTcsMHg5NywKLSAgICAweEE1LDB4NTEsMHg2NSwweDQ5LDB4
QUIsMHgyMiwweEFBLDB4M0YsMHhDNiwweDUxLDB4ODUsMHg0OSwweDdELDB4RTYsMHgxRSwweEFC
LAotICAgIDB4QzYsMHg1MSwweDY1LDB4NDksMHg3NywweDlGLDB4QjYsMHgwRSwweDA2LDB4NUEs
MHg0NCwweDQxLDB4QUQsMHhBQiwweEFBLDB4MkEsCi0gICAgMHgyNywweDYyLDB4ODUsMHg0OSww
eEFELDB4M0YsMHgyRiwweDJFLDB4NDcsMHg2MiwweEM2LDB4NTksMHhGNiwweDhBLDB4QUEsMHhB
RSwKLSAgICAweDI3LDB4NjIsMHhFNiwweDU5LDB4MjUsMHgzQiwweEYyLDB4QzgsMHg0NywweDYy
LDB4MDYsMHg1QSwweEUyLDB4QkYsMHhBOSwweDU3LAotICAgIDB4NDcsMHg2MiwweDA3LDB4NjIs
MHhCRiwweEYyLDB4MjIsMHg4RSwweDg4LDB4NkEsMHgwNiwweDVBLDB4QUQsMHhGRiwweEZGLDB4
M0IsCi0gICAgMHg2NywweDZBLDB4MDYsMHg2MiwweEFFLDB4RkQsMHhGQiwweDYwLDB4NjcsMHg2
QSwweEU2LDB4NTksMHgzQSwweEFGLDB4Q0QsMHgyNywKLSAgICAweDY3LDB4NkEsMHgyNiwweDYy
LDB4N0EsMHhCMiwweEZCLDB4QjgsMHg4OCwweDZBLDB4MjcsMHg2MiwweEJGLDB4QTIsMHg5QSww
eEQ1LAotICAgIDB4QTgsMHg3MiwweDY4LDB4NkEsMHgzQiwweEJGLDB4RkYsMHhGNSwweDg4LDB4
NkEsMHgyNywweDYyLDB4ODAsMHgyRSwweEE3LDB4QkUsCi0gICAgMHg4OCwweDZBLDB4MjcsMHg2
MiwweEQyLDB4N0EsMHhCQSwweEJBLDB4QTgsMHg3MiwweDA3LDB4NjIsMHgyQiwweEY3LDB4RDcs
MHhGRSwKLSAgICAweEE4LDB4NzIsMHg0NywweDYyLDB4RUEsMHhDOCwweEFCLDB4MkQsMHhDOSww
eDcyLDB4NjgsMHg2QSwweDJBLDB4MjMsMHhGRiwweDU1LAotICAgIDB4QzksMHg3MiwweDY4LDB4
NkEsMHgyQSwweEFBLDB4MkIsMHgyNSwweDBBLDB4ODMsMHg4OCwweDZBLDB4RkYsMHg3RiwweDdB
LDB4QTIsCi0gICAgMHhDOSwweDcyLDB4NjgsMHg2QSwweDc4LDB4RUEsMHhFQSwweEEwLDB4RUEs
MHg3QSwweDY4LDB4NkEsMHhGNSwweDlFLDB4MkYsMHhGRiwKLSAgICAweEM5LDB4NzIsMHg4OCww
eDZBLDB4RDYsMHg5RiwweEY4LDB4OUIsMHhBOSwweDcyLDB4NjgsMHg2QSwweEUyLDB4NjYsMHhG
RSwweEZBLAotICAgIDB4QTksMHg2QSwweDQ4LDB4NkEsMHhCRiwweERGLDB4RkYsMHgzQiwweDg5
LDB4NkEsMHg0OCwweDZBLDB4NjgsMHg0QSwweEJFLDB4MjgsCi0gICAgMHhDOSwweDcyLDB4NDgs
MHg2MiwweDhBLDB4QUYsMHhFNywweEZGLDB4QzksMHg3MiwweDY4LDB4NkEsMHhBOCwweEU4LDB4
N0YsMHg1RiwKLSAgICAweENBLDB4N0EsMHg2OCwweDZBLDB4Q0EsMHg4QSwweDNCLDB4MjksMHhF
OSwweDdBLDB4ODgsMHg2QSwweEVGLDB4RjksMHgyQSwweDgzLAotICAgIDB4QzksMHg3QSwweDY3
LDB4NkEsMHg4MSwweEMzLDB4Q0EsMHhBNiwweEVBLDB4N0EsMHhBOSwweDcyLDB4QTEsMHg4NSww
eEFELDB4NTYsCi0gICAgMHhFQSwweDdBLDB4ODgsMHg2QSwweDdFLDB4N0EsMHg2OCwweEUwLDB4
QTksMHg3MiwweDQ3LDB4NjIsMHgwMiwweEU5LDB4QkYsMHhBRSwKLSAgICAweEE4LDB4NzIsMHg0
NywweDYyLDB4OEUsMHg4MCwweDgwLDB4RTgsMHhFOSwweDdBLDB4ODgsMHg2QSwweDFELDB4RkQs
MHg3RCwweDFCLAotICAgIDB4RTksMHg3QSwweDg5LDB4NkEsMHhGQiwweDdFLDB4RUEsMHhFMiww
eEVBLDB4N0EsMHg4OCwweDZBLDB4QUIsMHg4QiwweEVGLDB4MzcsCi0gICAgMHgwQSwweDdCLDB4
ODksMHg2QSwweDdCLDB4N0UsMHhCMCwweDIyLDB4QzksMHg3MiwweDY4LDB4NkEsMHgwRSwweDBB
LDB4MkMsMHgyNiwKLSAgICAweDBBLDB4N0IsMHhBOSwweDcyLDB4OEIsMHhBMiwweEQ1LDB4REQs
MHgwOSwweDdCLDB4QTksMHg3MiwweEFFLDB4OEYsMHhBRCwweEJGLAotfTsKLQotc3RhdGljIGNv
bnN0IHNpemVfdCBwaXhlbF8xX3dpZHRoID0gMjU2Owotc3RhdGljIGNvbnN0IHNpemVfdCBwaXhl
bF8xX2hlaWdodCA9IDI1NjsKLXN0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfMV9zaXplID0gMzI3
Njg7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwaXhlbF8xX2RhdGFbMzI3NjhdID0KLXsK
LSAgICAweEE4LDB4NkEsMHg4NCwweDQ5LDB4NUIsMHg1NSwweEFELDB4MEQsMHg0NiwweDYyLDB4
MjMsMHgzOSwweEQ2LDB4REYsMHhGRSwweEY4LAotICAgIDB4MDYsMHg1QSwweDAyLDB4MzksMHhB
MiwweDU3LDB4N0UsMHhBRSwweDY3LDB4NjIsMHhFMiwweDMwLDB4REYsMHhGRiwweDBCLDB4RkYs
Ci0gICAgMHhDNSwweDQ5LDB4RTIsMHgzMCwweEEyLDB4NUEsMHhFOCwweEJFLDB4ODgsMHg2Miww
eDAyLDB4MzEsMHg1RiwweEFGLDB4MkYsMHhENSwKLSAgICAweEM1LDB4NDksMHgwMywweDM5LDB4
NUYsMHg3OCwweDY4LDB4RUYsMHg2NywweDVBLDB4RTIsMHgzMCwweEZGLDB4OEIsMHhCRCwweDU3
LAotICAgIDB4QTUsMHg0OSwweEUyLDB4MzAsMHhERSwweDcwLDB4QkEsMHgwQSwweDQ3LDB4NjIs
MHgyMywweDM5LDB4RUYsMHgwRiwweDU1LDB4NTcsCi0gICAgMHhFNSwweDUxLDB4QzIsMHgzMCww
eERFLDB4N0EsMHhGRiwweDhBLDB4MjYsMHg1QSwweDAzLDB4MzksMHg4QiwweEFELDB4NTUsMHg1
RiwKLSAgICAweDA2LDB4NUEsMHgyMywweDM5LDB4OTcsMHhGRiwweEY1LDB4OEYsMHg0NywweDYy
LDB4NjQsMHg0OSwweDgyLDB4N0IsMHg1NSwweERGLAotICAgIDB4NDcsMHg2MiwweDQzLDB4NDEs
MHg1RSwweDVGLDB4RUIsMHg4RiwweDI3LDB4NUEsMHgwMywweDM5LDB4ODIsMHg1NSwweEQ3LDB4
N0UsCi0gICAgMHgwNywweDVBLDB4MjMsMHg0MSwweERGLDB4N0QsMHhDQSwweEVGLDB4QzUsMHg1
MSwweDAzLDB4MzksMHhBMiwweEY1LDB4OUUsMHg1RiwKLSAgICAweDg5LDB4NkEsMHg0NCwweDQx
LDB4NTUsMHg1RCwweEUzLDB4NUQsMHhDNSwweDUxLDB4MDIsMHgzMSwweEVGLDB4QjUsMHgxQyww
eDdCLAotICAgIDB4MjcsMHg1QSwweDAzLDB4MzksMHg1RiwweEZBLDB4RTIsMHg1NywweEM1LDB4
NTEsMHgyNCwweDM5LDB4RjUsMHgyNSwweDk3LDB4RkQsCi0gICAgMHhFNSwweDUxLDB4MDMsMHgz
OSwweDdFLDB4QTgsMHhFQSwweERGLDB4MjYsMHg1QSwweDIzLDB4MzksMHhBRCwweDBELDB4RDcs
MHg4QSwKLSAgICAweEU1LDB4NTEsMHgwMywweDM5LDB4N0UsMHhFOCwweEZFLDB4REYsMHg2Nyww
eDYyLDB4NDQsMHg0MSwweDJELDB4QUQsMHhENSwweDAzLAotICAgIDB4MjcsMHg2MiwweDY0LDB4
NDksMHhGMCwweEYwLDB4NTUsMHhFOCwweEU2LDB4NTksMHg2NCwweDQxLDB4QUIsMHg3RiwweDk1
LDB4MDIsCi0gICAgMHg0NiwweDVBLDB4ODQsMHg0OSwweEY3LDB4MDUsMHgyRCwweEZGLDB4Njgs
MHg2QSwweEU1LDB4NTEsMHhCNSwweEFFLDB4QTgsMHgyQiwKLSAgICAweDg3LDB4NkEsMHgwNiww
eDVBLDB4QTcsMHgyQiwweENCLDB4OEEsMHg4NywweDZBLDB4MjMsMHg0MSwweDIwLDB4QTIsMHhC
RiwweEY3LAotICAgIDB4NDcsMHg2MiwweEE1LDB4NTEsMHgwMCwweDAyLDB4OEMsMHhENywweDg3
LDB4NkEsMHgyNiwweDVBLDB4NkUsMHgyRSwweDg4LDB4RkYsCi0gICAgMHhBNywweDZBLDB4NDMs
MHg0MSwweDU1LDB4NUUsMHg3QSwweDZBLDB4MjcsMHg1QSwweDAzLDB4MzksMHhGRiwweDgzLDB4
OEIsMHhGNSwKLSAgICAweEE1LDB4NDksMHgyMywweDM5LDB4QkQsMHhCNCwweDVFLDB4RjAsMHg0
NywweDVBLDB4MDIsMHgzMSwweDdFLDB4RTAsMHhGQiwweEZGLAotICAgIDB4MjYsMHg1MiwweDAz
LDB4MzksMHgyRCwweDJELDB4RDcsMHg3RiwweDI2LDB4NTIsMHgyMywweDM5LDB4REUsMHg3OCww
eDc3LDB4QkQsCi0gICAgMHgyNiwweDVBLDB4MjMsMHgzOSwweDAyLDB4QUIsMHhGNSwweEQ3LDB4
NTQsMHhFNiwweEE1LDB4NTEsMHgwRCwweEI1LDB4NTUsMHg1NSwKLSAgICAweDk2LDB4RUUsMHgy
NiwweDVBLDB4MDAsMHgwMCwweDAzLDB4MkQsMHhCNiwweEY2LDB4OTYsMHhFRSwweEJGLDB4QUYs
MHg4QiwweEFELAotICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHhERiwweEZELDB4QkQsMHgyRiww
eEQ3LDB4RjYsMHg5NiwweEVFLDB4MEIsMHg4MiwweDcwLDB4NUUsCi0gICAgMHhENywweEY2LDB4
OTYsMHhFRSwweDJFLDB4QUUsMHgzRCwweEI3LDB4RDcsMHhGNiwweDc1LDB4RTYsMHg3OCwweEJD
LDB4QUEsMHhGQSwKLSAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4RDUsMHhFRCwweDhBLDB4RTUs
MHhGOCwweEZFLDB4QjYsMHhFRSwweEY2LDB4QkYsMHgwMiwweERGLAotICAgIDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHgyOSwweDAyLDB4MDIsMHgwOSwweDE4LDB4RkYsMHhGNywweEY2LDB4QkEsMHgz
RSwweEY3LDB4NTUsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEVBLDB4QTAsMHhBQiwweDU1
LDB4MTgsMHhGRiwweEY4LDB4RjYsMHg1NSwweEQ3LDB4RkUsMHhCOSwKLSAgICAweDE4LDB4Rjcs
MHhENywweEY2LDB4QUEsMHhGQSwweERBLDB4QTAsMHgxOCwweEY3LDB4RDcsMHhGNiwweDVGLDB4
N0YsMHhGRiwweDZBLAotICAgIDB4RDcsMHhGNiwweDk3LDB4RUUsMHgyMCwweDBFLDB4RjgsMHhD
MCwweEY3LDB4RjYsMHg5NiwweEVFLDB4MjIsMHhBQiwweEZBLDB4QUQsCi0gICAgMHhGNywweEY2
LDB4OTYsMHhFRSwweDVFLDB4NzIsMHhFQiwweEJGLDB4OTYsMHhFRSwweDUxLDB4QzUsMHg3MCww
eDY4LDB4RTAsMHhFOCwKLSAgICAweDM0LDB4RTYsMHgxMCwweEM1LDB4ODAsMHgwMywweDg5LDB4
MEQsMHgxNCwweERFLDB4RjMsMHhERCwweDc2LDB4N0MsMHg1RiwweDc2LAotICAgIDB4MTQsMHhE
RSwweEYzLDB4REQsMHg3RSwweEJGLDB4OEQsMHg4QiwweDE0LDB4REUsMHhEMywweERELDB4QTks
MHhBRiwweEVCLDB4RkUsCi0gICAgMHg0NywweDVBLDB4MjMsMHg0MSwweEY1LDB4M0QsMHhBNyww
eERFLDB4ODgsMHg2QSwweDQzLDB4NDEsMHg1RCwweDgwLDB4QTIsMHg1RCwKLSAgICAweDg2LDB4
NjIsMHgyMiwweDM5LDB4RkQsMHhGOCwweEZFLDB4RDcsMHhDNSwweDQ5LDB4QzIsMHgzMCwweDVF
LDB4RkEsMHhBQSwweDJFLAotICAgIDB4MjcsMHg1QSwweDAyLDB4MzEsMHhBRiwweDBCLDB4RkQs
MHhGRSwweEE1LDB4NDksMHhFMiwweDMwLDB4RjgsMHhFMCwweEJELDB4QUQsCi0gICAgMHg2Nyww
eDYyLDB4MjMsMHgzOSwweDJGLDB4QjUsMHg1NSwweEYyLDB4QTUsMHg0OSwweDAyLDB4MzEsMHg2
OCwweDdFLDB4QjUsMHgzNywKLSAgICAweDY4LDB4NjIsMHhFMiwweDMwLDB4MEIsMHhGNSwweEZG
LDB4QTAsMHhDNSwweDQ5LDB4RTIsMHgzMCwweDcwLDB4N0UsMHhCNSwweEJFLAotICAgIDB4MDYs
MHg1MiwweEMyLDB4MzAsMHgwQiwweEZELDB4QjAsMHhBMiwweDg1LDB4NDksMHhFMiwweDMwLDB4
RTAsMHhBRCwweDJFLDB4OTgsCi0gICAgMHgwNywweDYyLDB4MDMsMHg0MSwweEFELDB4RkQsMHhF
MCwweEVCLDB4QzUsMHg2MSwweDY0LDB4NDksMHg2NywweEFELDB4QUIsMHgwRiwKLSAgICAweEU2
LDB4NjEsMHg0NCwweDQxLDB4REYsMHhGOCwweEYwLDB4NkEsMHhBNSwweDQ5LDB4RTIsMHgzMCww
eEZELDB4MjcsMHgzNiwweEZBLAotICAgIDB4NDgsMHg2MiwweDI0LDB4MzksMHg3NSwweEYwLDB4
RkEsMHhGRiwweDI3LDB4NUEsMHhFMiwweDMwLDB4QkQsMHgyNywweEZGLDB4RkUsCi0gICAgMHhD
OCwweDZBLDB4MDMsMHgzOSwweDVGLDB4RjAsMHg3RiwweEZGLDB4MjcsMHg1MiwweEUyLDB4MzAs
MHgyRCwweEFGLDB4RkYsMHhBQSwKLSAgICAweDA2LDB4NTIsMHgyNCwweDQxLDB4N0MsMHhGOCww
eEZGLDB4QUEsMHg2OCwweDYyLDB4MjMsMHgzOSwweDJELDB4RjUsMHg1NywweDVGLAotICAgIDB4
MDYsMHg1MiwweDIzLDB4MzksMHg3QSwweEZCLDB4MEEsMHgwQiwweDI3LDB4NUEsMHgwMiwweDMx
LDB4MEIsMHhGRCwweERFLDB4RkUsCi0gICAgMHgwNiwweDUyLDB4NDIsMHgzOSwweDdFLDB4RkYs
MHgwMiwweEJGLDB4NjcsMHg2MiwweDg0LDB4NDEsMHhBRCwweDU1LDB4RTAsMHg1NSwKLSAgICAw
eEU2LDB4NTEsMHgwMywweDMxLDB4ODAsMHg1RSwweDY4LDB4RkUsMHg0NiwweDYyLDB4NDMsMHgz
OSwweEZGLDB4MEYsMHhBRCwweDU1LAotICAgIDB4MDUsMHg1MiwweDQzLDB4MzksMHhGRSwweEE4
LDB4RkMsMHg1NSwweDI3LDB4NjIsMHgyMywweDMxLDB4MDMsMHgwQSwweEJGLDB4RDUsCi0gICAg
MHgyNywweDYyLDB4RTIsMHgzOCwweDAwLDB4MkIsMHhCRiwweDVFLDB4MjYsMHg1QSwweDAyLDB4
MzksMHhEQywweDY4LDB4RkEsMHhENSwKLSAgICAweDI2LDB4NUEsMHgyMywweDQxLDB4RkYsMHgw
QiwweEY1LDB4NTYsMHgwNiwweDVBLDB4NDQsMHg0MSwweEIwLDB4NTgsMHhENSwweDI1LAotICAg
IDB4QzUsMHg1MSwweDAyLDB4MzksMHgwMiwweDAyLDB4RUQsMHhGMCwweEM1LDB4NTEsMHgyMyww
eDM5LDB4REUsMHg1QywweDU1LDB4RUIsCi0gICAgMHg2OCwweDYyLDB4MDIsMHgzOSwweEEyLDB4
RkYsMHg1NSwweEFGLDB4QzYsMHg1MSwweDIzLDB4MzksMHhBMiwweDU3LDB4NTUsMHgwMCwKLSAg
ICAweDI2LDB4NUEsMHgwMywweDM5LDB4RkYsMHg1NSwweEY3LDB4ODIsMHgyNiwweDVBLDB4MDMs
MHgzOSwweEJELDB4NTUsMHhGRiwweDAyLAotICAgIDB4MjYsMHg2MiwweDAyLDB4MzksMHg3RSww
eDU1LDB4QUYsMHgwMCwweDI3LDB4NjIsMHgwMiwweDM5LDB4REQsMHhERCwweEFFLDB4MDAsCi0g
ICAgMHhGMCwweEJDLDB4NDQsMHg0OSwweDM1LDB4RjUsMHhCRiwweDJGLDB4RDcsMHhGNiwweEQy
LDB4RDUsMHgyMiwweDg5LDB4MjksMHgwQiwKLSAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4OEIs
MHg0MywweDY4LDB4NzgsMHhCNiwweEVFLDB4NzYsMHhFRSwweEI2LDB4OUYsMHg5NSwweDU2LAot
ICAgIDB4QjYsMHhGNiwweDM0LDB4RTYsMHgwMiwweDIyLDB4QUEsMHhGNSwweDk2LDB4RUUsMHhG
MywweERELDB4RjAsMHg5QywweEQ2LDB4OTcsCi0gICAgMHhGNywweEY2LDB4RDMsMHhENSwweDJB
LDB4QUEsMHhCRiwweDVGLDB4RjcsMHhGNiwweEQzLDB4RDUsMHg4OCwweDBBLDB4MkEsMHhCNSwK
LSAgICAweDE4LDB4RkYsMHg3NSwweEU2LDB4RjcsMHg1RSwweEU4LDB4QkIsMHhGNywweEY2LDB4
NTUsMHhFNiwweDAyLDB4QjUsMHg1RiwweEZBLAotICAgIDB4RjcsMHhGNiwweDU1LDB4RTYsMHgy
MCwweDAwLDB4MkQsMHg5NywweDE4LDB4RjcsMHhENywweEY2LDB4RjcsMHhGRiwweDhBLDB4RTks
Ci0gICAgMHgxOCwweEZGLDB4RDcsMHhFRSwweEFBLDB4RkQsMHhFQSwweEVCLDB4MTgsMHhGNyww
eEQ3LDB4RjYsMHhFMiwweEFBLDB4NTcsMHg1QywKLSAgICAweEY3LDB4RjYsMHhCNywweEVFLDB4
RjgsMHhBOCwweEZGLDB4RkUsMHhENywweEY2LDB4NzUsMHhFRSwweDJFLDB4RjAsMHg0MCwweDgy
LAotICAgIDB4RDcsMHhGNiwweDU1LDB4RTYsMHhBMCwweEUyLDB4RTIsMHhDMSwweDk2LDB4RUUs
MHhEMywweEQ1LDB4NjAsMHhFMCwweEMwLDB4QzIsCi0gICAgMHgxNCwweERFLDB4NTEsMHhDRCww
eDI1LDB4MzUsMHhCRiwweEZGLDB4MTQsMHhERSwweEYzLDB4REQsMHhENCwweEJFLDB4QkMsMHhC
QSwKLSAgICAweDM0LDB4RTYsMHhGMywweERELDB4RUIsMHhFQSwweEUyLDB4RkEsMHgxNCwweERF
LDB4RjMsMHhERCwweEI3LDB4RUQsMHhEQiwweEY1LAotICAgIDB4MDUsMHg1QSwweDQzLDB4NDEs
MHhEOCwweDUwLDB4NzIsMHhDMCwweDQ3LDB4NjIsMHg2MywweDQxLDB4MDMsMHhBQiwweDU1LDB4
MjUsCi0gICAgMHg2NywweDYyLDB4ODQsMHg0MSwweDU3LDB4NzcsMHg1NSwweDc4LDB4QTUsMHg0
OSwweDYzLDB4NDEsMHgwMCwweDZBLDB4RUIsMHhGRSwKLSAgICAweEE1LDB4NDksMHgwMiwweDM5
LDB4QTAsMHg3QiwweEEwLDB4QUEsMHhBNSwweDQ5LDB4MDIsMHgzMSwweDNFLDB4QjMsMHg4Riww
eDlBLAotICAgIDB4Q0EsMHg4QiwweEE0LDB4NDksMHg1NSwweDdELDB4QzksMHg1NSwweDg1LDB4
NDEsMHhFMiwweDI4LDB4OUUsMHhCRSwweEY4LDB4NTgsCi0gICAgMHg0NywweDVBLDB4MDIsMHgz
MSwweEZGLDB4MEYsMHhBRiwweDc1LDB4QTUsMHg0OSwweDAyLDB4MzEsMHg1RSwweEM4LDB4Q0Es
MHhGRiwKLSAgICAweDg0LDB4NDksMHhFMiwweDMwLDB4QUEsMHgwMiwweEE5LDB4NzcsMHg4NCww
eDQ5LDB4RTIsMHgzMCwweEFCLDB4MjIsMHhBOCwweDU1LAotICAgIDB4QTQsMHg1MSwweDAyLDB4
MzksMHhBRiwweEFFLDB4QkEsMHg5NSwweDI2LDB4NzIsMHg4NCwweDUxLDB4RUQsMHhCRCwweEFC
LDB4OEIsCi0gICAgMHgwNiwweDZBLDB4ODQsMHg1MSwweDdFLDB4N0EsMHg3OCwweDQwLDB4ODUs
MHg1MSwweEUzLDB4MzgsMHg4MCwweEFBLDB4N0UsMHg1QywKLSAgICAweDg1LDB4NDksMHhDMiww
eDMwLDB4MDAsMHgyQSwweDVELDB4RkQsMHg4NSwweDQ5LDB4QzMsMHgzMCwweDAwLDB4QUEsMHg1
NywweEFGLAotICAgIDB4ODUsMHg0OSwweEUyLDB4MzAsMHg4OCwweEVFLDB4NTUsMHhBQSwweEM1
LDB4NTEsMHhFMywweDMwLDB4QUEsMHg3RiwweDU1LDB4MkEsCi0gICAgMHhDNSwweDQ5LDB4MDMs
MHgzOSwweEFBLDB4NTUsMHg1NSwweDI4LDB4MDYsMHg1MiwweDAzLDB4MzksMHg1QiwweEQ1LDB4
QjUsMHgwMCwKLSAgICAweDA2LDB4NUEsMHhFMiwweDMwLDB4RkYsMHg1NSwweEFFLDB4MDAsMHgw
NiwweDVBLDB4RTIsMHgzMCwweEZGLDB4QjUsMHgyQiwweDAwLAotICAgIDB4MjcsMHg1QSwweDAy
LDB4MzksMHg3NSwweDU3LDB4QUEsMHgwMCwweDA2LDB4NUEsMHgyMywweDM5LDB4NTUsMHg1NSww
eDJBLDB4MDAsCi0gICAgMHgwNSwweDVBLDB4RTIsMHgzMCwweEQ3LDB4QkYsMHgwMCwweDIwLDB4
MDcsMHg1QSwweEMyLDB4MzAsMHhENiwweEE4LDB4ODAsMHgyMiwKLSAgICAweDA3LDB4NjIsMHhF
MiwweDMwLDB4NTUsMHhBQSwweDAwLDB4QUEsMHgwNiwweDVBLDB4MDMsMHgzMSwweEQ1LDB4MEEs
MHgyMCwweDAwLAotICAgIDB4QzgsMHg3MiwweDY0LDB4NDksMHg1QiwweEZGLDB4RkEsMHgwQSww
eEFDLDB4OTMsMHg4NCwweDQ5LDB4NTUsMHhGRCwweDU1LDB4MDIsCi0gICAgMHhEMCwweEI0LDB4
RTYsMHg1OSwweDU1LDB4NTUsMHg1NSwweDBBLDB4MzIsMHhDNSwweDA2LDB4NUEsMHg1NSwweDU1
LDB4NTUsMHgwMCwKLSAgICAweEI0LDB4RDUsMHgwNiwweDVBLDB4NTUsMHg1NSwweEY1LDB4MDAs
MHgzNiwweEU2LDB4MDYsMHg1QSwweDU1LDB4NTUsMHhGRiwweDAwLAotICAgIDB4NTUsMHhFNiww
eDA2LDB4NUEsMHg1NSwweDU1LDB4QUIsMHgwMCwweDk3LDB4RUUsMHgyNywweDYyLDB4NTUsMHg1
NSwweEFBLDB4MDAsCi0gICAgMHgzNSwweERFLDB4MjYsMHg2MiwweDU1LDB4RDUsMHgwMCwweDAw
LDB4NzUsMHhFNiwweEU1LDB4NTksMHg1NSwweEZGLDB4MDAsMHgwMCwKLSAgICAweDc1LDB4RTYs
MHgwNiwweDVBLDB4NTUsMHhBRiwweDAwLDB4MDAsMHg5NiwweEVFLDB4MjcsMHg2MiwweDU1LDB4
QUEsMHgwMCwweDAwLAotICAgIDB4QjYsMHhFRSwweEU4LDB4N0EsMHhCRCwweDBBLDB4MDAsMHgw
MCwweEQ3LDB4RjYsMHg3NSwweEVFLDB4MEQsMHg4OSwweEEyLDB4QTAsCi0gICAgMHhCNiwweEY2
LDB4NzYsMHhFRSwweEUwLDB4NjgsMHg3OCwweEVBLDB4OTYsMHhFRSwweEY0LDB4REQsMHhFOCww
eEUwLDB4N0EsMHg3QSwKLSAgICAweEI2LDB4RjYsMHhEMywweEQ1LDB4QkYsMHhCRCwweEI1LDB4
MkYsMHhENywweEY2LDB4MTQsMHhERSwweEY1LDB4QUIsMHg4MiwweDAwLAotICAgIDB4QjcsMHhG
NiwweDU1LDB4RTYsMHg1RCwweEJGLDB4RkUsMHhFMCwweEI2LDB4RUUsMHg1MSwweENELDB4NUYs
MHg4MCwweDA4LDB4MjIsCi0gICAgMHg5NiwweEVFLDB4OTIsMHhDRCwweDBCLDB4QjUsMHhGOCww
eDgwLDB4RjcsMHhGNiwweDM0LDB4REUsMHhBQSwweEFCLDB4QjUsMHhGNSwKLSAgICAweEQ3LDB4
RjYsMHgxNCwweERFLDB4NkEsMHhDMCwweDAyLDB4MEEsMHhENywweEY2LDB4OTIsMHhDRCwweDAy
LDB4MkQsMHhCRSwweDgwLAotICAgIDB4MTgsMHhGRiwweDk2LDB4RTYsMHhBQSwweDIwLDB4Mjks
MHg5NSwweDE4LDB4RjcsMHhENywweEY2LDB4RUEsMHhCQSwweEFBLDB4RUEsCi0gICAgMHhGNyww
eEY2LDB4QjcsMHhFRSwweEVFLDB4RUMsMHhGMCwweEMwLDB4RDcsMHhGNiwweDk2LDB4RUUsMHhB
QSwweEJDLDB4RkEsMHg2QSwKLSAgICAweEI2LDB4RUUsMHgzNCwweERFLDB4OEIsMHgyNywweEI0
LDB4QkUsMHg5NiwweEVFLDB4MzQsMHhFNiwweENCLDB4RUIsMHhGRCwweEI3LAotICAgIDB4RjMs
MHhERCwweDcxLDB4Q0QsMHhERiwweEQ2LDB4NUMsMHg1QywweDM0LDB4RTYsMHhEMywweERELDB4
QUYsMHhBOSwweDM5LDB4QTksCi0gICAgMHgzNCwweEU2LDB4MTQsMHhERSwweDc4LDB4NTMsMHg1
RiwweDVFLDB4MzQsMHhFNiwweEYzLDB4REQsMHhENSwweEI1LDB4REYsMHhGRiwKLSAgICAweDJB
LDB4ODMsMHhDNSwweDUxLDB4NTcsMHg1RSwweDVFLDB4N0MsMHg4NCwweDQ5LDB4RTEsMHgzMCww
eDJCLDB4RDYsMHg1QywweDAwLAotICAgIDB4NjcsMHg2MiwweDIyLDB4MzksMHhGRiwweDc3LDB4
NTUsMHgyQiwweEE4LDB4NkEsMHgyMywweDM5LDB4RkYsMHg1NSwweEZGLDB4MDAsCi0gICAgMHgy
NywweDYyLDB4MDIsMHgzMSwweEZGLDB4NTUsMHhBQSwweDAwLDB4MjcsMHg1QSwweDAyLDB4MzEs
MHg1RiwweDdELDB4OEEsMHg4MCwKLSAgICAweDA2LDB4NUEsMHgwMiwweDMxLDB4NTUsMHg1NSww
eEFBLDB4MDAsMHhFNiwweDUxLDB4QzIsMHgyOCwweDVELDB4RkYsMHgwMCwweDIwLAotICAgIDB4
MDcsMHg1QSwweEMxLDB4MzAsMHg1NSwweEZGLDB4MDAsMHhBMiwweDA2LDB4NUEsMHhFMiwweDMw
LDB4RDUsMHhGRiwweDAwLDB4QUEsCi0gICAgMHgwNywweDVBLDB4QzEsMHgzMCwweDU2LDB4QTIs
MHgwMCwweEFBLDB4MDYsMHg1QSwweEUyLDB4MzAsMHg1NSwweDIyLDB4ODAsMHhBRSwKLSAgICAw
eEM1LDB4NTksMHgwMiwweDM5LDB4QjUsMHgwMCwweDAwLDB4MDAsMHgyNiwweDcyLDB4QzUsMHg2
MSwweDA5LDB4QTksMHhFRiwweEVELAotICAgIDB4MjYsMHg3MiwweEU1LDB4NjksMHg0QSwweEJG
LDB4RkIsMHg4QiwweEFCLDB4QTMsMHhDNSwweDU5LDB4NTUsMHg1NywweDVELDB4MkYsCi0gICAg
MHgxMSwweEM1LDB4QzYsMHg1OSwweDU1LDB4NTUsMHg1NSwweDAyLDB4NzIsMHhDRCwweEU1LDB4
NTEsMHg1NSwweDU1LDB4NzUsMHgwMCwKLSAgICAweEYzLDB4RDUsMHhDNSwweDUxLDB4NTUsMHg1
NSwweEZGLDB4MDAsMHgzNSwweEU2LDB4RTYsMHg1OSwweDU1LDB4NTUsMHhCRiwweDAwLAotICAg
IDB4NTUsMHhFNiwweEU2LDB4NTksMHg1NSwweDU1LDB4QUEsMHgwMCwweEI2LDB4RUUsMHgyNiww
eDYyLDB4NTUsMHg1NSwweEFBLDB4MDAsCi0gICAgMHgzNCwweERFLDB4QzYsMHg1MSwweDU1LDB4
RkQsMHgwMCwweDAwLDB4NzYsMHhFRSwweEU2LDB4NTksMHg1NSwweEZGLDB4MDAsMHgwMCwKLSAg
ICAweDc2LDB4RTYsMHhDNSwweDU5LDB4NTUsMHhBQSwweDAwLDB4MDAsMHg5NiwweEVFLDB4MjYs
MHg2MiwweDU1LDB4QUEsMHgwMCwweDAwLAotICAgIDB4QjcsMHhGNiwweEE4LDB4N0EsMHg1NSww
eDJBLDB4MDAsMHgwMCwweDc2LDB4RUUsMHhFOSwweDdBLDB4RjUsMHgyMCwweDAwLDB4MDAsCi0g
ICAgMHg3NiwweEVFLDB4MkUsMHhBNCwweEQ1LDB4MDAsMHgwMCwweDAwLDB4RDMsMHhERCwweDI2
LDB4NkEsMHhBQSwweEMwLDB4RTAsMHg3OCwKLSAgICAweDRFLDB4QUMsMHgwNiwweDYyLDB4M0Us
MHhCNywweDU1LDB4NTUsMHhCNywweEY2LDB4OEYsMHhCNCwweEFBLDB4MDMsMHgwOSwweDA5LAot
ICAgIDB4RjgsMHhGRSwweDU1LDB4RTYsMHhENSwweEFFLDB4QUEsMHgwMCwweDE4LDB4RkYsMHg3
NiwweEVFLDB4NzUsMHhCRiwweEEyLDB4MDgsCi0gICAgMHhGNywweEY2LDB4OTYsMHhFRSwweDVE
LDB4QUUsMHhBOCwweEFDLDB4RDcsMHhGNiwweDk2LDB4RUUsMHhCRCwweEFBLDB4MDgsMHgwMCwK
LSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4NUQsMHhFRiwweEVDLDB4OEEsMHhENywweEY2LDB4
OTYsMHhFRSwweEVGLDB4QUEsMHg4MiwweDgyLAotICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHhG
NywweEU3LDB4RUEsMHhBOCwweEQ3LDB4RjYsMHhCNiwweEVFLDB4RUIsMHhFQiwweEZGLDB4QUEs
Ci0gICAgMHhCNiwweEY2LDB4RDcsMHhFRSwweDhBLDB4MjIsMHhGQSwweEVCLDB4RjcsMHhGNiww
eEI2LDB4RUUsMHg3NywweDVGLDB4RkQsMHhCQiwKLSAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4
MkEsMHg4QiwweDYyLDB4NTgsMHhENywweEY2LDB4NzYsMHhFRSwweEU4LDB4QkIsMHhGRCwweDVE
LAotICAgIDB4OTYsMHhFRSwweDE0LDB4RTYsMHgwMCwweEU4LDB4RjgsMHg3RSwweEI2LDB4RjYs
MHgxNCwweERFLDB4NUYsMHhGRCwweDJGLDB4MkQsCi0gICAgMHhGNywweEY2LDB4NTUsMHhFNiww
eEFELDB4MEEsMHhBQSwweEFBLDB4RjcsMHhGNiwweEI3LDB4RjYsMHg4QSwweEEyLDB4QUEsMHhB
RCwKLSAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4NUUsMHhGQSwweEE4LDB4QUIsMHhENywweEY2
LDB4NzUsMHhFNiwweERGLDB4RkEsMHhBQSwweDgwLAotICAgIDB4QjYsMHhFRSwweDc2LDB4RUUs
MHgzNywweEJGLDB4QUEsMHgwMCwweEQ3LDB4RjYsMHg1NSwweEU2LDB4RDYsMHhBOCwweDBBLDB4
MkEsCi0gICAgMHhGNywweEY2LDB4NzYsMHhFRSwweEJELDB4QkYsMHhBRSwweEE4LDB4MzgsMHhG
RiwweEQ3LDB4RjYsMHhGRiwweEVELDB4QkQsMHgyRiwKLSAgICAweDE4LDB4RkYsMHhCNywweEVF
LDB4N0UsMHhBRSwweEVBLDB4QTAsMHgxOCwweEY3LDB4QjcsMHhFRSwweEEzLDB4QUQsMHhERSww
eEZBLAotICAgIDB4MTgsMHhGNywweEQ3LDB4RjYsMHg2QSwweEVBLDB4RUIsMHhGRiwweEI3LDB4
RUUsMHg3NSwweEU2LDB4QTAsMHg2MCwweDYwLDB4NjAsCi0gICAgMHg5NiwweEVFLDB4OTIsMHhE
NSwweEE4LDB4QjgsMHhGQSwweDVBLDB4NzUsMHhFRSwweDE0LDB4REUsMHhCNiwweEY0LDB4REUs
MHg1NiwKLSAgICAweDU1LDB4RTYsMHg3MSwweENELDB4NUUsMHg1QywweDVDLDB4NTgsMHgzNCww
eEU2LDB4QjMsMHhENSwweDhCLDB4ODksMHgwQiwweDAxLAotICAgIDB4MzQsMHhFNiwweEYzLDB4
REQsMHhEQSwweDVBLDB4NUUsMHg1RiwweDE0LDB4REUsMHhEMywweERELDB4MEIsMHhBMiwweEVB
LDB4NkYsCi0gICAgMHgzNSwweEU2LDB4RTUsMHg1OSwweDU2LDB4N0EsMHhBMCwweDAwLDB4RjQs
MHhENSwweEE0LDB4NTEsMHg1NSwweDU1LDB4QkEsMHgwMCwKLSAgICAweEY0LDB4RDUsMHhDNSww
eDUxLDB4NTUsMHg1NSwweEFBLDB4MDAsMHgzNSwweEU2LDB4MDYsMHg1QSwweDU1LDB4NTUsMHhB
QSwweDAwLAotICAgIDB4MzUsMHhFNiwweDI2LDB4NjIsMHg1NSwweDU1LDB4OEEsMHgwMCwweDM1
LDB4RTYsMHhBNSwweDUxLDB4NTUsMHhGRiwweDAwLDB4MDAsCi0gICAgMHgzNSwweEU2LDB4QzUs
MHg1MSwweDU1LDB4QkIsMHgwMCwweDAwLDB4NTUsMHhFNiwweEM1LDB4NTEsMHg1NSwweEFBLDB4
MDAsMHgwMCwKLSAgICAweDc1LDB4RUUsMHg2NywweDZBLDB4NTUsMHhBQSwweDAwLDB4MDAsMHg1
NSwweEU2LDB4RTksMHg3QSwweDU1LDB4MjIsMHgwMCwweDAwLAotICAgIDB4NTUsMHhFNiwweEND
LDB4OTMsMHg1NSwweDAyLDB4MDAsMHgwMCwweDc2LDB4RUUsMHgyRSwweEE0LDB4RjUsMHgyMCww
eDAwLDB4MDAsCi0gICAgMHg1NSwweEVFLDB4QUMsMHg5QiwweDdCLDB4QzAsMHhDMCwweEMwLDB4
NjcsMHg3MiwweEE0LDB4NjEsMHhGNywweEQ2LDB4NTQsMHg1QywKLSAgICAweDI2LDB4NzIsMHhB
NCwweDYxLDB4QUIsMHg4QiwweEE5LDB4MEYsMHgyRCwweEFDLDB4MjYsMHg3MiwweDM1LDB4QjUs
MHg1NSwweDU1LAotICAgIDB4NTUsMHhFRSwweEU5LDB4OEEsMHgwMiwweDAzLDB4MEIsMHgyRCww
eEI2LDB4RjYsMHg3NSwweEVFLDB4RDUsMHhBQiwweEFBLDB4OEIsCi0gICAgMHhCNiwweEY2LDB4
NzUsMHhFRSwweEZELDB4QUIsMHhBMiwweDgyLDB4QjYsMHhGNiwweDk2LDB4RUUsMHg1NSwweEVB
LDB4RUEsMHhFQSwKLSAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4QTUsMHgyQiwweEJFLDB4OEYs
MHhCNiwweEY2LDB4OTYsMHhFRSwweEYzLDB4ODgsMHgzMiwweDBGLAotICAgIDB4QjYsMHhGNiww
eDk2LDB4RUUsMHgyRSwweDgyLDB4MkEsMHgwOCwweEI2LDB4RjYsMHhENywweEVFLDB4MjIsMHhD
OCwweDg4LDB4RkMsCi0gICAgMHhGNywweEY2LDB4QjYsMHhGNiwweEU3LDB4QUEsMHgwQSwweDAy
LDB4RjgsMHhGRSwweEQ3LDB4RUUsMHhGNSwweEVBLDB4OEEsMHhBQSwKLSAgICAweEY3LDB4RjYs
MHhENywweEY2LDB4RDUsMHgwQSwweDAyLDB4MDAsMHhGNywweEZFLDB4RDcsMHhGNiwweEQ3LDB4
RkMsMHhFQSwweDdFLAotICAgIDB4QjYsMHhGNiwweENCLDB4QTMsMHg4MCwweEEwLDB4RTAsMHg3
OCwweENGLDB4QkMsMHg2NywweDcyLDB4NTgsMHg1NiwweDU3LDB4NTUsCi0gICAgMHg2NywweDdB
LDB4QzUsMHg2MSwweERFLDB4RkEsMHhCOCwweDMwLDB4RDcsMHhGNiwweDJELDB4QUMsMHgwOSww
eDA5LDB4MDksMHgwOSwKLSAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4REYsMHhCRiwweEJELDB4
RkYsMHgxNywweEZGLDB4RjcsMHhGNiwweEVCLDB4QkIsMHg4MiwweEFCLAotICAgIDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHg2QywweDVBLDB4RDAsMHgzMCwweEY3LDB4RjYsMHhENywweEY2LDB4NTUs
MHhGRSwweEZGLDB4RUYsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweDBCLDB4MkIsMHgwMCww
eDAwLDB4QjcsMHhGNiwweEY3LDB4RUUsMHhBQSwweEVBLDB4QUUsMHhFRiwKLSAgICAweEQ3LDB4
RjYsMHhCNywweEVFLDB4ODgsMHgwQSwweDAyLDB4ODAsMHhGNywweEY2LDB4QjYsMHhFRSwweEZG
LDB4QkUsMHhBRSwweEFFLAotICAgIDB4QjYsMHhGNiwweEY3LDB4RUUsMHhBQSwweEJBLDB4QkIs
MHhFRSwweEY3LDB4RjYsMHhCNiwweEVFLDB4MEUsMHg4MiwweEMyLDB4NzgsCi0gICAgMHhENyww
eEY2LDB4OTYsMHhFRSwweDc4LDB4NTQsMHg3NiwweDU3LDB4OTYsMHhFRSwweEY0LDB4REQsMHhB
MCwweEU4LDB4NkEsMHg3OCwKLSAgICAweDM1LDB4RTYsMHg5MSwweENELDB4RTAsMHg3MCwweDVG
LDB4MTYsMHg5NiwweEY2LDB4RjMsMHhERCwweEFELDB4RkQsMHgwMywweDAwLAotICAgIDB4QjYs
MHhGNiwweEIzLDB4RDUsMHgwQSwweEY3LDB4RkUsMHhBOCwweEQ3LDB4RjYsMHhGNCwweERELDB4
MDIsMHhBRiwweEZELDB4RkYsCi0gICAgMHhENywweEY2LDB4NTUsMHhFNiwweDAwLDB4MEEsMHgz
RCwweEQ1LDB4RjcsMHhGNiwweEI2LDB4RUUsMHhBQSwweEFBLDB4ODMsMHhCNSwKLSAgICAweEQ3
LDB4RjYsMHg5NiwweEVFLDB4RkUsMHhGOCwweDI4LDB4MDAsMHhENywweEY2LDB4OTYsMHhFRSww
eDBBLDB4QUUsMHg5RSwweEY4LAotICAgIDB4MTgsMHhGNywweEQ3LDB4RjYsMHhGRiwweEZELDB4
QjUsMHhBNSwweDM4LDB4RkYsMHhGOCwweEY2LDB4QTUsMHhCNSwweERELDB4RDcsCi0gICAgMHgz
OCwweEZGLDB4RjgsMHhGNiwweEZBLDB4RTgsMHg4MiwweDBCLDB4MTgsMHhGRiwweEI3LDB4RjYs
MHhFQSwweEZBLDB4RkEsMHhEQywKLSAgICAweEY3LDB4RjYsMHg3NiwweEVFLDB4ODIsMHhBQiww
eEFGLDB4QjcsMHhENywweEY2LDB4NzUsMHhFNiwweDdBLDB4NzgsMHg3OCwweERBLAotICAgIDB4
NTUsMHhFNiwweDEwLDB4QzUsMHhGOCwweEY4LDB4NTgsMHg1OCwweDU1LDB4RUUsMHhEMywweERE
LDB4RkEsMHhGMywweEYyLDB4RTEsCi0gICAgMHgxNCwweEU2LDB4MTAsMHhDNSwweEYwLDB4NjAs
MHg2MCwweDQwLDB4RDcsMHhGNiwweDkyLDB4RDUsMHhGRCwweEJELDB4QTksMHgyRCwKLSAgICAw
eDc1LDB4RUUsMHhGMywweERELDB4N0YsMHg3NywweDdFLDB4ODAsMHgzNCwweEU2LDB4OTIsMHhD
RCwweDZBLDB4N0EsMHg2QSwweDg4LAotICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHg1RiwweDVF
LDB4RUEsMHhBRSwweEI2LDB4RUUsMHg3NSwweEU2LDB4NTUsMHhCQiwweDAyLDB4MDAsCi0gICAg
MHhCNiwweEVFLDB4NzUsMHhFNiwweEQ1LDB4QUEsMHgwMiwweDAwLDB4RDcsMHhGNiwweDc1LDB4
RTYsMHg1NSwweEVGLDB4QUEsMHhBMiwKLSAgICAweEI2LDB4RUUsMHg3NSwweEU2LDB4RkQsMHhB
QSwweDIwLDB4MDAsMHhCNiwweEVFLDB4NzUsMHhFRSwweEZGLDB4MjIsMHgwMCwweDAwLAotICAg
IDB4RDUsMHhFRSwweDc2LDB4RUUsMHhGNywweEZGLDB4RkYsMHhGRSwweDk2LDB4RUUsMHg3NSww
eEVFLDB4OEIsMHhDOCwweDBBLDB4MDgsCi0gICAgMHhCNywweEY2LDB4NzUsMHhFRSwweEZGLDB4
RkYsMHhCRSwweEFBLDB4RDYsMHhGNiwweDk2LDB4RUUsMHhGNywweEJGLDB4QUIsMHhBQSwKLSAg
ICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4RkYsMHgyRiwweDhBLDB4QTIsMHhENywweEY2LDB4OTYs
MHhGNiwweERCLDB4QUEsMHhBQSwweEE4LAotICAgIDB4QjYsMHhGNiwweDZELDB4QjQsMHg2MCww
eDQwLDB4NjAsMHhDMCwweDY2LDB4N0EsMHg4NCwweDYxLDB4N0UsMHhGRSwweEZBLDB4RUMsCi0g
ICAgMHgyNywweDdBLDB4ODQsMHg2MSwweDJELDB4QkYsMHhGRiwweERFLDB4MjYsMHg3MiwweEU2
LDB4NzEsMHgyNSwweDJFLDB4QkYsMHg2RCwKLSAgICAweEQzLDB4REQsMHg2NywweDdBLDB4MjUs
MHhCNSwweEQ1LDB4RDUsMHg5NiwweEY2LDB4OEYsMHhCQywweDAwLDB4MDIsMHgwMiwweDA5LAot
ICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHgyOCwweDAyLDB4OEEsMHgwQSwweEQ2LDB4RjYsMHg5
NiwweEVFLDB4RkUsMHhFQSwweEFBLDB4RUEsCi0gICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweDJB
LDB4MDIsMHgyMiwweDAwLDB4QjYsMHhGNiwweDk2LDB4RUUsMHhBQSwweDgyLDB4MjAsMHgwOCwK
LSAgICAweEQ2LDB4RjYsMHhCNiwweEY2LDB4NUQsMHhENSwweDZELDB4QTUsMHhENywweEY2LDB4
QjYsMHhFRSwweDJCLDB4MkIsMHgyRSwweDNBLAotICAgIDB4RDcsMHhGRSwweEY3LDB4RjYsMHg3
NSwweDU3LDB4RDcsMHg1NSwweDE3LDB4RkYsMHhGNywweEY2LDB4NUQsMHhERiwweDdGLDB4NUIs
Ci0gICAgMHhENiwweEZFLDB4RjcsMHhGNiwweEQ3LDB4RDcsMHg1NSwweEE3LDB4RDYsMHhGNiww
eEFGLDB4QkMsMHgwMCwweDgwLDB4RTAsMHg3OCwKLSAgICAweDM1LDB4RUUsMHg4NywweDdBLDB4
NzgsMHg1RSwweDU3LDB4NTcsMHhDNywweDhBLDB4NDcsMHg3QSwweEZGLDB4RkYsMHhBRCwweDJG
LAotICAgIDB4QUIsMHhBMywweDQ2LDB4NzIsMHhENSwweDk3LDB4OTcsMHgxRiwweEY3LDB4RkUs
MHg4RiwweEJDLDB4MDksMHgwQiwweDAzLDB4MDIsCi0gICAgMHgxNywweEZGLDB4RjgsMHhGNiww
eEVBLDB4MkUsMHgyQSwweEFBLDB4MTgsMHhGRiwweEY3LDB4RjYsMHgwQSwweEE4LDB4QTIsMHhD
QSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QTgsMHhBOCwweEE4LDB4ODIsMHhGNywweEY2
LDB4RDcsMHhGNiwweEZGLDB4OUYsMHhGQSwweDVBLAotICAgIDB4RDcsMHhGNiwweEQ2LDB4RUUs
MHg4MiwweEE4LDB4MjIsMHg4QSwweEY3LDB4RjYsMHhENywweEY2LDB4REYsMHg3QiwweEQ1LDB4
OUQsCi0gICAgMHhGNywweEY2LDB4QjcsMHhFRSwweEFGLDB4QkEsMHhFQSwweEFBLDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHg1RCwweERELDB4RjcsMHgyQiwKLSAgICAweDE3LDB4RkYsMHhCNywweEVF
LDB4QUYsMHhBQiwweEVBLDB4NzgsMHhGOCwweEY2LDB4OTYsMHhFRSwweEZDLDB4N0UsMHg1Riww
eDVGLAotICAgIDB4OTYsMHhFRSwweDM0LDB4RTYsMHg4MCwweEM4LDB4NjgsMHg1QywweDU1LDB4
RTYsMHhCMiwweEQ1LDB4RTgsMHhGQSwweEZFLDB4OTcsCi0gICAgMHhCNywweEY2LDB4RjMsMHhE
RCwweDM1LDB4MkQsMHgwQiwweDAyLDB4RDcsMHhGNiwweEI2LDB4RjYsMHhBRCwweEEwLDB4ODIs
MHhBMiwKLSAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4N0UsMHhBRSwweEJBLDB4QTgsMHhENyww
eEY2LDB4NTUsMHhFNiwweEQ3LDB4OEEsMHgyMiwweDJBLAotICAgIDB4RDcsMHhGNiwweDc1LDB4
RTYsMHg1RiwweEFGLDB4MjgsMHhBOCwweEY3LDB4RjYsMHg3NSwweEU2LDB4QkQsMHhGRiwweEZF
LDB4ODIsCi0gICAgMHhGNywweEY2LDB4OTYsMHhFRSwweEEyLDB4ODMsMHg4OSwweDJGLDB4Rjcs
MHhGNiwweEI3LDB4RUUsMHg1RSwweEZBLDB4QjAsMHhBMCwKLSAgICAweEY4LDB4RjYsMHhCNyww
eEVFLDB4MEIsMHgwQiwweDhBLDB4QTIsMHgxOCwweEY3LDB4RDcsMHhFRSwweDIwLDB4OEEsMHhB
RiwweEI3LAotICAgIDB4MzgsMHhGRiwweEY4LDB4RjYsMHg4RiwweEI1LDB4REYsMHg1NywweDM4
LDB4RkYsMHg5NiwweEVFLDB4RjgsMHg3OCwweDcyLDB4NkEsCi0gICAgMHhENywweEY2LDB4MzUs
MHhFNiwweDJFLDB4M0YsMHhCRSwweERGLDB4QjYsMHhGNiwweDE0LDB4REUsMHhCOCwweEZDLDB4
REMsMHg3QywKLSAgICAweDM0LDB4RTYsMHgxMCwweEJELDB4NTgsMHg1QywweDVDLDB4NUMsMHgz
NCwweEU2LDB4OTIsMHhDRCwweDgzLDB4QzEsMHhDOSwweEM5LAotICAgIDB4RjQsMHhERCwweDUx
LDB4QzUsMHg0MCwweDQyLDB4NDIsMHg4QiwweDc2LDB4RUUsMHhDRiwweEI0LDB4MEIsMHgyRCww
eEI1LDB4MjUsCi0gICAgMHg5NSwweEVFLDB4NTUsMHhFNiwweEVDLDB4NUUsMHg1RiwweERDLDB4
OTYsMHhFRSwweDU1LDB4RTYsMHhENywweEZCLDB4QUQsMHhBOSwKLSAgICAweEQ2LDB4RjYsMHhC
NiwweEVFLDB4QjUsMHhGRCwweEZELDB4REQsMHhENiwweEY2LDB4QjYsMHhFRSwweEY1LDB4REYs
MHhGNiwweEY5LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBRCwweEZGLDB4QkIsMHhCQiww
eEQ2LDB4RjYsMHhCNiwweEVFLDB4RkYsMHhERiwweEJGLDB4RkYsCi0gICAgMHhENywweEY2LDB4
QjYsMHhFRSwweDc3LDB4RkYsMHhCQSwweEZBLDB4QjYsMHhGNiwweEQ2LDB4RUUsMHgyOCwweEJB
LDB4QUYsMHhCQSwKLSAgICAweEI3LDB4RUUsMHg5NSwweEVFLDB4NTYsMHhERiwweDU3LDB4NzYs
MHhCNywweEZFLDB4OTUsMHhFRSwweEQ1LDB4RDUsMHg3RiwweEY1LAotICAgIDB4QjUsMHhGNiww
eDk2LDB4RUUsMHhBRiwweEVFLDB4RkIsMHhCRiwweEQ3LDB4RjYsMHhCNiwweEVFLDB4QUIsMHgy
QiwweDhCLDB4MjksCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweEFFLDB4MjgsMHgwMiwweDgw
LDB4RDcsMHhGNiwweEI2LDB4RUUsMHhCQSwweEFBLDB4QTAsMHgwMCwKLSAgICAweEI2LDB4RjYs
MHg4NiwweDdBLDB4ODAsMHhFMCwweDYwLDB4NzAsMHg0NywweDcyLDB4NjMsMHg2MSwweEE4LDB4
QUUsMHhCQSwweERDLAotICAgIDB4MjYsMHg3MiwweDg0LDB4NjEsMHg3QSwweDcwLDB4RjgsMHhF
QSwweDA3LDB4NzIsMHg2NCwweDYxLDB4MEEsMHhBQiwweEJGLDB4RjcsCi0gICAgMHhBNywweDdB
LDB4QTUsMHg2MSwweDJGLDB4QkYsMHhCRCwweEY1LDB4NzUsMHhFRSwweEE3LDB4ODIsMHgwQiww
eDJELDB4MzUsMHhCNSwKLSAgICAweEQ3LDB4RjYsMHg3NSwweEY2LDB4QUEsMHgyQSwweEFBLDB4
ODEsMHhENiwweEY2LDB4QjYsMHhGNiwweERCLDB4RUUsMHhCOSwweEEzLAotICAgIDB4RDYsMHhG
NiwweEI2LDB4RjYsMHg1RCwweDc2LDB4NzgsMHhGRiwweEI2LDB4RjYsMHhCNywweEVFLDB4ODgs
MHgyMiwweDg4LDB4MjAsCi0gICAgMHhENiwweEY2LDB4QjYsMHhGNiwweDM3LDB4QkQsMHhCNyww
eDlELDB4RjcsMHhGNiwweEI2LDB4RUUsMHhCQiwweEJFLDB4QUYsMHhBRiwKLSAgICAweEQ2LDB4
RkUsMHhGNywweEY2LDB4RDUsMHhERiwweDc3LDB4NTUsMHhENywweEZFLDB4RjcsMHhGNiwweDdE
LDB4NTUsMHhGNSwweEVELAotICAgIDB4RjcsMHhGRSwweDUxLDB4RDUsMHgwMCwweEEwLDB4RTAs
MHg3OCwweEYzLDB4RTUsMHg0NiwweDcyLDB4RTAsMHg3OCwweDVFLDB4NTcsCi0gICAgMHg2Nyww
eDdBLDB4MjYsMHg3QSwweDg5LDB4RkEsMHg3QSwweEZFLDB4QTcsMHg4QSwweDQ3LDB4ODIsMHgz
QiwweDBBLDB4QUYsMHg4RCwKLSAgICAweEIyLDB4REQsMHg4NywweDgyLDB4OTUsMHg5NSwweEI1
LDB4MzUsMHhGNywweEZFLDB4NTUsMHhFRSwweDAxLDB4MDEsMHgwMywweDAyLAotICAgIDB4MTgs
MHhGRiwweEY3LDB4RjYsMHgzQSwweDJBLDB4MkEsMHgyQSwweDM3LDB4RkYsMHhGOCwweEY2LDB4
RkUsMHhGQSwweEVFLDB4QUUsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEEwLDB4RTAsMHhB
OCwweEJDLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3QSwweDZGLDB4RkUsMHhEQiwKLSAgICAweEQ3
LDB4RjYsMHhGNywweEVFLDB4MDgsMHg4OCwweDBBLDB4MjIsMHhGNywweEY2LDB4RDcsMHhGNiww
eEQ3LDB4QjUsMHhCNSwweEQ1LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhERCwweEZELDB4
M0QsMHgyQiwweDE4LDB4RkYsMHhENywweEY2LDB4MkQsMHg4RiwweDYzLDB4NTgsCi0gICAgMHhG
NywweEY2LDB4OTYsMHhFRSwweEY4LDB4RjgsMHg3RiwweDVGLDB4QjcsMHhGNiwweDM1LDB4RTYs
MHhBOCwweEVBLDB4N0EsMHg3QSwKLSAgICAweDU1LDB4RUUsMHg5MiwweENELDB4RTAsMHhFOCww
eDVBLDB4REUsMHhENywweEY2LDB4NzEsMHhDRCwweEI3LDB4MkQsMHgwQiwweDAyLAotICAgIDB4
RDcsMHhGNiwweEI2LDB4RjYsMHg4RCwweDBCLDB4MDAsMHgwMCwweEQ3LDB4RjYsMHhCNywweEVF
LDB4QTgsMHhBQSwweDAwLDB4ODAsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweEU4LDB4OEEs
MHhGOCwweEZDLDB4RDcsMHhGNiwweEI2LDB4RUUsMHg1NSwweDdGLDB4OEYsMHgyMywKLSAgICAw
eEQ3LDB4RjYsMHhCNiwweEVFLDB4NUQsMHg1NSwweDc3LDB4NkUsMHhGNywweEY2LDB4OTYsMHhF
RSwweDJCLDB4MkYsMHhCRCwweEZGLAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGRiwweEFB
LDB4MkIsMHgyRCwweDM5LDB4RkYsMHhGNywweEY2LDB4NUYsMHg3RiwweEVBLDB4QUEsCi0gICAg
MHhGNywweEY2LDB4RDcsMHhFRSwweDJDLDB4MkUsMHgwMiwweDAwLDB4RjgsMHhGNiwweEQ3LDB4
RjYsMHhBNCwweEVDLDB4REEsMHhCOCwKLSAgICAweEY3LDB4RjYsMHhCNywweEVFLDB4QTAsMHhB
MiwweEMyLDB4RTAsMHhENywweEY2LDB4QjcsMHhFRSwweDQwLDB4NkEsMHhBMiwweDIyLAotICAg
IDB4QjcsMHhFRSwweDE0LDB4REUsMHg5RSwweERFLDB4RDgsMHg1OCwweEQ3LDB4RjYsMHgzNCww
eEU2LDB4NTgsMHg3QSwweDcyLDB4NjIsCi0gICAgMHgxNCwweERFLDB4MTAsMHhDNSwweDVDLDB4
RjgsMHhGOCwweEY4LDB4MzQsMHhFNiwweDcxLDB4Q0QsMHg4OSwweEE5LDB4QUQsMHhBRCwKLSAg
ICAweEQzLDB4REQsMHg1MSwweEM1LDB4OEIsMHgwQiwweDBGLDB4QTUsMHhCNiwweEY2LDB4MTAs
MHhDNSwweDI1LDB4MkQsMHgyRiwweDJGLAotICAgIDB4QjYsMHhGNiwweDM0LDB4RTYsMHhEQSww
eDU4LDB4RjgsMHg3MCwweDk2LDB4RUUsMHgzNSwweEU2LDB4M0YsMHhCNSwweEJELDB4QkQsCi0g
ICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDVCLDB4RjcsMHhGRCwweEJELDB4RDYsMHhGNiwweEI2
LDB4RUUsMHg2RiwweEJFLDB4QkEsMHhCNiwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QkYs
MHhFMywweEFELDB4QTcsMHhENiwweEY2LDB4QjYsMHhFRSwweEFGLDB4NkUsMHhGRiwweEVDLAot
ICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBRCwweEJGLDB4RTMsMHhFRiwweEQ2LDB4RjYsMHhC
NiwweEVFLDB4M0YsMHhFRSwweEVFLDB4RkQsCi0gICAgMHhCNiwweEY2LDB4OTUsMHhFRSwweEZB
LDB4RjYsMHhGQywweEJFLDB4QjYsMHhGNiwweDk2LDB4RUUsMHhBNSwweEVELDB4N0UsMHhGRSwK
LSAgICAweDk2LDB4RjYsMHhCNiwweEVFLDB4OUYsMHg2RSwweDdGLDB4N0EsMHhGNiwweEY2LDB4
QjYsMHhFRSwweEZELDB4QkYsMHhGRiwweEFCLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhF
MCwweEUwLDB4MEEsMHgwOCwweEI2LDB4RjYsMHhGNywweEVFLDB4QUYsMHhBRiwweEFCLDB4QUIs
Ci0gICAgMHg1NSwweEVFLDB4QzQsMHg2MSwweDcwLDB4NzAsMHg3MCwweDcwLDB4RTYsMHg2OSww
eDIzLDB4NTEsMHg1OCwweDVFLDB4NUUsMHg3RiwKLSAgICAweEU2LDB4NzEsMHgwMywweDUxLDB4
MDIsMHgwMywweDA5LDB4QUQsMHhBNSwweDYxLDB4NDQsMHg1OSwweEZBLDB4QkUsMHg1QywweDU4
LAotICAgIDB4QzUsMHg2OSwweDQ0LDB4NTEsMHgyRiwweEFELDB4QjUsMHhGNSwweEFCLDB4OUIs
MHhFNiwweDY5LDB4MkQsMHhCRCwweEI1LDB4RDUsCi0gICAgMHhCNiwweEY2LDB4NkEsMHg5Myww
eDAyLDB4MEIsMHgwOSwweDI1LDB4RDYsMHhGRSwweEQ3LDB4RjYsMHhGRiwweEZGLDB4REYsMHhC
RSwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEY2LDB4QkMsMHhGRSwweEVDLDB4QjgsMHhENywweEY2
LDB4QjYsMHhGNiwweEQ1LDB4QjcsMHhCRiwweEFCLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RjYs
MHhGRSwweEJFLDB4QUMsMHhBMCwweEY3LDB4RkUsMHhCNiwweEY2LDB4QkQsMHhFRiwweEJGLDB4
QkUsCi0gICAgMHhENywweEZFLDB4RjcsMHhGNiwweDU1LDB4NTcsMHhGRiwweEVGLDB4RDcsMHhG
NiwweEIyLDB4REQsMHgwMCwweDAwLDB4ODAsMHg2MCwKLSAgICAweDc2LDB4RUUsMHg2NiwweDdB
LDB4RTAsMHg3OCwweDVFLDB4NUYsMHg2NywweDgyLDB4MDUsMHg3MiwweEU4LDB4RkQsMHhCRiww
eDJCLAotICAgIDB4ODcsMHg4QSwweDA1LDB4N0EsMHhBNywweEFELDB4MkYsMHhFQSwweDg3LDB4
OEEsMHgyNSwweDdBLDB4MDIsMHhFQSwweEZFLDB4REYsCi0gICAgMHg3NiwweEVFLDB4NjYsMHg4
MiwweDM1LDB4MjUsMHgyNSwweDJELDB4MTgsMHhGRiwweEY3LDB4RkUsMHgyRCwweDA5LDB4Mjks
MHgwMSwKLSAgICAweDM4LDB4RkYsMHgxNywweEY3LDB4NTcsMHhERCwweDdGLDB4RkUsMHgxOCww
eEZGLDB4RjcsMHhFRSwweDg4LDB4RTIsMHhBMCwweEMwLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHhBQywweDJFLDB4QjgsMHhBQSwweEY3LDB4RjYsMHhENywweEY2LDB4RkYsMHhGQSwweDdB
LDB4QkEsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDVBLDB4RjcsMHg5NSwweEFBLDB4Rjcs
MHhGNiwweEQ3LDB4RjYsMHhENywweDVFLDB4NUYsMHgyMywKLSAgICAweDE4LDB4RkYsMHhCNiww
eEY2LDB4MkIsMHgyQiwweEEyLDB4NzIsMHgxNywweEZGLDB4QjYsMHhGNiwweDVDLDB4NUYsMHg1
NywweDU1LAotICAgIDB4QjYsMHhGNiwweDU0LDB4RTYsMHhFMCwweEE4LDB4RTgsMHg3OCwweDc1
LDB4RUUsMHg5MiwweEQ1LDB4QTAsMHhFOCwweDc4LDB4RkEsCi0gICAgMHhCNywweEY2LDB4OTIs
MHhDRCwweEI3LDB4MjUsMHgwQiwweDAyLDB4RjcsMHhGNiwweEI2LDB4RjYsMHhBRCwweEJCLDB4
QUEsMHhBQiwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NUYsMHhENSwweEZELDB4NzUsMHhE
NywweEY2LDB4QjcsMHhFRSwweEE4LDB4MDAsMHgwMCwweDAwLAotICAgIDB4RDcsMHhGNiwweEI3
LDB4RUUsMHgzQSwweEFBLDB4MEEsMHhBOCwweEQ3LDB4RjYsMHhCNiwweEVFLDB4MjgsMHhGQSww
eEI4LDB4RkIsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweEZFLDB4QkUsMHgyRiwweEI4LDB4
RDcsMHhGNiwweEI3LDB4RUUsMHg1RiwweEZDLDB4QTIsMHhBMCwKLSAgICAweEY3LDB4RjYsMHhC
NywweEVFLDB4MkQsMHgzRCwweEZGLDB4RkYsMHgzOCwweEZGLDB4RjcsMHhGNiwweDJBLDB4QUIs
MHhBRCwweEI1LAotICAgIDB4MzksMHhGRiwweEY3LDB4RjYsMHg1RSwweDU4LDB4NjAsMHhDMCww
eEY3LDB4RjYsMHhEOCwweEY2LDB4QUEsMHhBQSwweDhCLDB4NzgsCi0gICAgMHhGNywweEY2LDB4
OTYsMHhFRSwweDhBLDB4RTgsMHg2OCwweDVGLDB4RDcsMHhGNiwweDk2LDB4RUUsMHgyQSwweDJB
LDB4MkYsMHgyRCwKLSAgICAweEI3LDB4RjYsMHg5MSwweENELDB4QjgsMHhCOCwweEU4LDB4RDgs
MHhENiwweEY2LDB4NTQsMHhFNiwweDYyLDB4RTIsMHhBMywweEE5LAotICAgIDB4MTQsMHhERSww
eDcxLDB4Q0QsMHg3NCwweEZDLDB4NzQsMHhGQywweDM0LDB4RTYsMHg5MiwweENELDB4QUQsMHhB
NSwweEI1LDB4QjUsCi0gICAgMHg3MSwweENELDB4QUYsMHhCNCwweEE4LDB4QUMsMHhCRSwweEQ0
LDB4QjYsMHhGNiwweDcxLDB4Q0QsMHgwRCwweDA5LDB4MEIsMHgyRCwKLSAgICAweEQ3LDB4RjYs
MHgzNCwweEU2LDB4RjgsMHhGOCwweDc4LDB4N0EsMHg3NSwweEVFLDB4MzQsMHhFNiwweDI3LDB4
QTcsMHhCRiwweEVGLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGRiwweEVBLDB4QkEsMHhB
QiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4MjksMHhBQiwweEVDLDB4RUEsCi0gICAgMHhENiwweEY2
LDB4QjYsMHhFRSwweEFBLDB4QUEsMHgwQSwweDBFLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBQSww
eEFBLDB4QUEsMHhBMiwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUEsMHg4NiwweDdGLDB4
NEEsMHhENiwweEY2LDB4QjYsMHhFRSwweEZFLDB4RUEsMHhCQiwweEJBLAotICAgIDB4OTYsMHhG
NiwweEI2LDB4RUUsMHhGOSwweEZELDB4QkQsMHhFRCwweEI2LDB4RjYsMHg5NiwweEVFLDB4RUUs
MHhBQSwweEVFLDB4Q0EsCi0gICAgMHg5NSwweEY2LDB4QjYsMHhFRSwweERGLDB4N0YsMHhERCww
eDU1LDB4RDYsMHhGNiwweEI2LDB4RUUsMHg4MiwweDAzLDB4MjMsMHgwMywKLSAgICAweEQ2LDB4
RjYsMHhGNywweEVFLDB4MDAsMHgyMCwweDIyLDB4QTAsMHhENiwweEY2LDB4QjcsMHhFRSwweEEy
LDB4ODIsMHgwMCwweDAwLAotICAgIDB4QjYsMHhGNiwweEM0LDB4NTksMHg3MCwweDcwLDB4NzAs
MHg2MCwweDg1LDB4NTksMHgyMywweDQ5LDB4RTMsMHhBRSwweDVFLDB4RjcsCi0gICAgMHg4NSww
eDU5LDB4MjMsMHg1MSwweDJELDB4QUUsMHg3RiwweDdGLDB4ODUsMHg2MSwweEUzLDB4NDAsMHhF
MCwweEY4LDB4RkIsMHg1RiwKLSAgICAweDY0LDB4NTEsMHhFMywweDQwLDB4MkEsMHgyRiwweDJG
LDB4M0QsMHg4NywweDcyLDB4ODQsMHg1OSwweDNELDB4QkQsMHhCRCwweDJELAotICAgIDB4Q0Ys
MHhCQywweEE4LDB4N0EsMHgyRCwweEJELDB4RjUsMHhGNSwweDk2LDB4RjYsMHg4QiwweDkzLDB4
MDAsMHgwQiwweEY1LDB4NTUsCi0gICAgMHhCNiwweEY2LDB4OEIsMHg5MywweDAwLDB4MjgsMHhG
RiwweDU1LDB4QjYsMHhGNiwweEFCLDB4OTMsMHgwMCwweDAwLDB4MkEsMHhENSwKLSAgICAweEI2
LDB4RjYsMHhDRiwweEJDLDB4MDAsMHgwMCwweDAwLDB4RjUsMHhENywweEY2LDB4MzEsMHhDRCww
eDAwLDB4MDAsMHgwQSwweEI1LAotICAgIDB4RDcsMHhGRSwweDkyLDB4RDUsMHgwMCwweDAwLDB4
MDAsMHg3QSwweDM1LDB4RTYsMHhFNSwweDY5LDB4ODAsMHhFMCwweDc4LDB4NUUsCi0gICAgMHhF
OCwweDhBLDB4RTUsMHg3MSwweERDLDB4RjcsMHhGRCwweEY1LDB4ODcsMHg4QSwweDI2LDB4N0Es
MHgyOSwweEE5LDB4Q0EsMHhFQiwKLSAgICAweDY3LDB4OEEsMHgwNiwweDdBLDB4NjAsMHhGQyww
eDlBLDB4OTcsMHhDOCwweDkyLDB4MDYsMHg3QSwweEY1LDB4QkQsMHgyRiwweDBBLAotICAgIDB4
QjYsMHhGNiwweDg4LDB4OEEsMHgwRCwweDA5LDB4MEIsMHgwQiwweDM4LDB4RkYsMHhGOCwweEZF
LDB4QkYsMHhCRCwweEJGLDB4RjcsCi0gICAgMHgxOCwweEZGLDB4MzgsMHhGNywweEFFLDB4QkEs
MHhBQSwweEE4LDB4MzgsMHhGRiwweEY3LDB4RjYsMHhGQSwweDdBLDB4RkEsMHhGOCwKLSAgICAw
eEY3LDB4RjYsMHhENywweEY2LDB4Q0UsMHgzMiwweEEwLDB4MjAsMHhGNywweEY2LDB4RDcsMHhG
NiwweEFDLDB4QkEsMHhDMiwweDAwLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBMCwweEFB
LDB4OEEsMHgyMywweDE4LDB4RkYsMHhENiwweEY2LDB4QkYsMHgyRiwweDhBLDB4NzIsCi0gICAg
MHgxNywweEZGLDB4OTYsMHhFRSwweEY4LDB4N0UsMHhENywweDU3LDB4QjYsMHhGNiwweDU1LDB4
RTYsMHg4MiwweEFBLDB4RTIsMHg2MiwKLSAgICAweDk2LDB4RUUsMHhCMywweEQ1LDB4QTAsMHhB
OCwweEZBLDB4REYsMHhENywweEY2LDB4MTQsMHhERSwweEI1LDB4MEIsMHgyQiwweDAyLAotICAg
IDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhENSwweDk2LDB4QUYsMHhGRiwweEQ3LDB4RjYsMHhGNiww
eEVFLDB4MDIsMHg4MiwweDBBLDB4MDAsCi0gICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEVBLDB4
RUEsMHg3QSwweEVBLDB4RDcsMHhGNiwweEI3LDB4RUUsMHg4MCwweEMyLDB4RkIsMHhBQywKLSAg
ICAweEQ3LDB4RjYsMHhCNywweEVFLDB4QUEsMHhFQSwweDAwLDB4MDAsMHhCNywweEY2LDB4RDcs
MHhFRSwweEVBLDB4RkYsMHhGRiwweEFFLAotICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHg4OCww
eDBBLDB4MkIsMHhGRiwweEQ3LDB4RjYsMHhCNywweEVFLDB4ODgsMHhBMCwweDgwLDB4QTAsCi0g
ICAgMHhENywweEY2LDB4RjcsMHhFRSwweDg4LDB4QTAsMHg4OCwweEEwLDB4MTgsMHhGRiwweEQ3
LDB4RjYsMHgzRCwweEJGLDB4QkQsMHhGNSwKLSAgICAweDM4LDB4RkYsMHhGNywweEY2LDB4ODIs
MHg4QSwweEFCLDB4QkQsMHgzOSwweEZGLDB4OTcsMHhFRSwweEZFLDB4RkUsMHg3QywweDc4LAot
ICAgIDB4QjcsMHhGNiwweDc2LDB4RTYsMHhFOCwweEU4LDB4RkYsMHhGRSwweEQ3LDB4RjYsMHg3
NiwweEVFLDB4QUYsMHhCRiwweEJGLDB4QjUsCi0gICAgMHhCNywweEY2LDB4MzAsMHhDNSwweEQ4
LDB4RDgsMHhEOCwweEY4LDB4QjcsMHhGNiwweDM0LDB4RTYsMHg4MywweDhCLDB4MjMsMHg4OSwK
LSAgICAweDU1LDB4RUUsMHg5MiwweENELDB4NTYsMHg3QywweDVDLDB4RkMsMHhGNCwweERELDB4
NzEsMHhDRCwweDJELDB4MkQsMHgyRiwweDJGLAotICAgIDB4OTIsMHhDRCwweDRELDB4QUMsMHhG
RSwweERDLDB4RDQsMHg1QywweDM1LDB4RTYsMHgxMCwweEM1LDB4MkIsMHgyRCwweEJELDB4QUQs
Ci0gICAgMHg5NiwweEVFLDB4MzQsMHhFNiwweEUwLDB4RTIsMHhBOSwweEU5LDB4NTUsMHhFNiww
eDM0LDB4RTYsMHg5MiwweDFDLDB4MjgsMHg4MCwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4
QUIsMHhFRSwweEFFLDB4MkEsMHhENiwweEY2LDB4QjYsMHhFRSwweDhBLDB4QUIsMHhCQSwweEEw
LAotICAgIDB4RDYsMHhGNiwweEI3LDB4RUUsMHhBQSwweDAzLDB4MjgsMHhBQywweEY3LDB4RjYs
MHhCNiwweEVFLDB4QUIsMHhFQSwweEJCLDB4RUYsCi0gICAgMHhENiwweEY2LDB4RDcsMHhFRSww
eDhBLDB4OEEsMHhBMiwweEFBLDB4RDYsMHhGNiwweEI2LDB4RUUsMHg3MiwweEUwLDB4ODAsMHg4
MCwKLSAgICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4RkYsMHhGRSwweEZFLDB4RUEsMHg5NSwweEY2
LDB4RDYsMHhFRSwweEJBLDB4RUEsMHhGNiwweEZGLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUs
MHhGNSwweEY3LDB4RkQsMHhGRiwweEQ2LDB4RjYsMHhGNywweEVFLDB4MjgsMHhBOCwweDgwLDB4
MjAsCi0gICAgMHhENiwweEY2LDB4RjcsMHhFRSwweDgwLDB4MDgsMHgyOCwweDgyLDB4RjYsMHhG
NiwweEQ3LDB4RjYsMHg3NywweDVGLDB4RkYsMHhGRSwKLSAgICAweEQ2LDB4RjYsMHg0QSwweDhC
LDB4NjAsMHhDMCwweDgwLDB4ODAsMHg0NywweDZBLDB4MDMsMHg0MSwweDc3LDB4RDcsMHg1Niww
eEQ0LAotICAgIDB4NDQsMHg0OSwweEUzLDB4NDAsMHhBQiwweEE4LDB4QTAsMHg2MCwweDIzLDB4
NDksMHhFMywweDQwLDB4N0EsMHg2OCwweDVFLDB4NTYsCi0gICAgMHg2NCwweDUxLDB4RTMsMHg0
MCwweDNELDB4QjUsMHgzNSwweDNELDB4QzgsMHg3QSwweEE1LDB4NTksMHgyRCwweDJELDB4MkQs
MHhCRCwKLSAgICAweDRBLDB4OTMsMHhBOCwweDdBLDB4MkYsMHgyRCwweDhCLDB4Q0QsMHg0Qiww
eDkzLDB4QTgsMHg3QSwweDgwLDB4RTgsMHg1RSwweDU3LAotICAgIDB4MDksMHg4MywweDQ3LDB4
NzIsMHgwMCwweEFBLDB4RkYsMHhENywweDRBLDB4OEIsMHg4NywweDcyLDB4MDIsMHhBRiwweEY1
LDB4RDUsCi0gICAgMHgwQywweEE0LDB4RTgsMHg4MiwweDJBLDB4QUYsMHhCRCwweEJELDB4NkUs
MHhCNCwweDA5LDB4OEIsMHgyQSwweEZBLDB4N0IsMHg1RiwKLSAgICAweDZFLDB4QjQsMHgwNSww
eDZBLDB4ODAsMHg3QSwweDVGLDB4NTcsMHhBOCwweDgyLDB4QzQsMHg2MSwweEZDLDB4QkUsMHhB
RiwweEFELAotICAgIDB4NDYsMHg3QSwweEM1LDB4NjksMHhCQywweEZFLDB4RkUsMHhENiwweDQ3
LDB4ODIsMHhFNSwweDc5LDB4RTIsMHhBRiwweEI1LDB4MzUsCi0gICAgMHhBOCwweDkyLDB4MDYs
MHg3QSwweEE3LDB4ODksMHg4QiwweDhCLDB4MkEsMHg5QiwweDY3LDB4OEEsMHgyNSwweDNELDB4
MkIsMHgwQiwKLSAgICAweEY3LDB4RkUsMHgwRCwweEI0LDB4MDksMHgwMywweDAxLDB4MDksMHgz
OCwweEZGLDB4RjcsMHhGNiwweEJGLDB4RkYsMHhCRiwweEZGLAotICAgIDB4MzgsMHhGRiwweDE3
LDB4RjcsMHhGRiwweEJGLDB4RkQsMHhGQiwweDM4LDB4RkYsMHgxNywweEY3LDB4NUUsMHg1Riww
eEY3LDB4N0YsCi0gICAgMHgzOCwweEZGLDB4RjcsMHhGNiwweDU3LDB4NUYsMHg3RiwweEZBLDB4
MTgsMHhGRiwweEY3LDB4RjYsMHg3NywweDVELDB4QjUsMHhBRSwKLSAgICAweDE3LDB4RkYsMHhC
NiwweEVFLDB4MkEsMHgwQSwweEMwLDB4NjAsMHhGNywweEZFLDB4NTUsMHhFNiwweEEwLDB4RkMs
MHhGRiwweEZGLAotICAgIDB4QjYsMHhGNiwweDc1LDB4RUUsMHg4MiwweDAyLDB4QUIsMHg1Nyww
eEI2LDB4RjYsMHg1NSwweEU2LDB4NzAsMHg3QSwweEJBLDB4REYsCi0gICAgMHhGNywweEZFLDB4
QjMsMHhENSwweDk3LDB4MEYsMHgwMiwweEFBLDB4RjcsMHhGRSwweEQ3LDB4RjYsMHhENSwweDdB
LDB4RUEsMHhBQiwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RTMsMHhFRiwweEUzLDB4Rjks
MHhGNywweEY2LDB4RDcsMHhGNiwweDU1LDB4NUYsMHg3NiwweEVBLAotICAgIDB4RjcsMHhGNiww
eEI2LDB4RUUsMHhBQiwweEJGLDB4QkIsMHhCMiwweEQ3LDB4RjYsMHhCNywweEVFLDB4MDgsMHg4
MCwweEU4LDB4ODAsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweEEwLDB4QTgsMHhFOCwweEE2
LDB4QjYsMHhGNiwweEQ3LDB4RUUsMHhBQiwweEFCLDB4QUYsMHhGQSwKLSAgICAweEQ3LDB4RjYs
MHhCNywweEVFLDB4RkYsMHhCQiwweEFBLDB4RUEsMHhCNywweEY2LDB4RjcsMHhFRSwweEFBLDB4
QUEsMHhBQSwweDZFLAotICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhENSwweDU1LDB4RkQsMHgy
QiwweEY4LDB4RjYsMHhENywweEY2LDB4MEYsMHgwQiwweDBBLDB4MEEsCi0gICAgMHgxOCwweEZG
LDB4RDcsMHhGNiwweDJBLDB4MkIsMHhCQiwweEZGLDB4MzksMHhGRiwweDk3LDB4RUUsMHg3OCww
eDdBLDB4NzIsMHg2QSwKLSAgICAweDk2LDB4RUUsMHg3NiwweEU2LDB4QjgsMHg4MCwweEE4LDB4
QkQsMHhCNywweEY2LDB4NTYsMHhFRSwweDNGLDB4QkYsMHhBRiwweEFFLAotICAgIDB4QjcsMHhG
NiwweDMwLDB4QzUsMHhEOCwweEQ4LDB4RjgsMHg1OCwweEI3LDB4RjYsMHgzNCwweEU2LDB4MDks
MHg4OSwweDI5LDB4ODksCi0gICAgMHg3NiwweEVFLDB4NzIsMHhDRCwweEY4LDB4RjgsMHg3OCww
eDU4LDB4RDMsMHhENSwweDcxLDB4Q0QsMHgyQiwweEFFLDB4RkUsMHhENSwKLSAgICAweDkyLDB4
RDUsMHg2RCwweEFDLDB4RDQsMHg5NiwweDE2LDB4MzYsMHgzNCwweEU2LDB4OTIsMHhENSwweEJE
LDB4QUYsMHgyQiwweDBGLAotICAgIDB4OTYsMHhFRSwweDM0LDB4RTYsMHhFMSwweEVCLDB4Q0Is
MHg4QiwweDU1LDB4RTYsMHgzNSwweEU2LDB4QTIsMHhCRSwweEZBLDB4QUMsCi0gICAgMHhENiww
eEY2LDB4QjYsMHhFRSwweEFBLDB4QUEsMHhBQSwweDAyLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhB
QSwweEE4LDB4QkEsMHgyOCwKLSAgICAweEQ2LDB4RjYsMHhCNywweEU2LDB4MjAsMHgwMiwweEMw
LDB4QTIsMHhENiwweEY2LDB4QjYsMHhFRSwweDhBLDB4MkEsMHgwQiwweDAyLAotICAgIDB4RDcs
MHhGNiwweEQ2LDB4RUUsMHhBQSwweDJBLDB4QjIsMHgyMiwweEY4LDB4RjYsMHhENiwweEY2LDB4
N0QsMHg1RiwweDc3LDB4REQsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDU2LDB4RjcsMHg1
RSwweDlFLDB4RDYsMHhGNiwweEI2LDB4RUUsMHg3NSwweEY1LDB4RDUsMHhCNiwKLSAgICAweEQ2
LDB4RjYsMHhCNiwweEVFLDB4OUQsMHhENywweEZELDB4QkIsMHhGOCwweEY2LDB4RDcsMHhGNiww
eDVELDB4RjUsMHhGRiwweEJELAotICAgIDB4RjYsMHhGNiwweEQ3LDB4RjYsMHg1NSwweERELDB4
RkMsMHhGRSwweEY2LDB4RjYsMHhENywweEY2LDB4RkQsMHg3NSwweDVGLDB4NkUsCi0gICAgMHhG
OCwweEZFLDB4NzYsMHhFNiwweDZBLDB4RTgsMHhDQSwweEFBLDB4NTEsMHhDNSwweDAyLDB4NDEs
MHg1NiwweDU2LDB4NTQsMHg1QywKLSAgICAweDg0LDB4NTEsMHgyMywweDQxLDB4RjcsMHhGRCww
eDhELDB4OUQsMHg0NCwweDQ5LDB4MDMsMHg0MSwweDU2LDB4OTQsMHhGNCwweDM2LAotICAgIDB4
MDYsMHg2MiwweDAzLDB4NDEsMHhCNSwweEJGLDB4MkIsMHgyMywweDY3LDB4NzIsMHhDNSwweDU5
LDB4MjksMHgwQiwweDJBLDB4RDcsCi0gICAgMHgwOSwweDgzLDB4NDYsMHg2QSwweDJBLDB4QUIs
MHhGRiwweEZELDB4QTgsMHg3QSwweDI3LDB4NkEsMHhBOCwweEU4LDB4RkUsMHhGQiwKLSAgICAw
eDg4LDB4NzIsMHgyNiwweDZBLDB4QTgsMHgyRSwweEVCLDB4NkYsMHhBNywweDdBLDB4MjYsMHg2
QSwweDJGLDB4QkYsMHhCNywweEQ1LAotICAgIDB4NkEsMHg5MywweEE3LDB4N0EsMHgyOSwweEJE
LDB4RDUsMHg1NSwweDZBLDB4OTMsMHg0NywweDcyLDB4QTAsMHhBMiwweEVBLDB4N0YsCi0gICAg
MHg4OCwweDdBLDB4QTQsMHg2MSwweDc4LDB4NzgsMHg1RSwweERGLDB4NjgsMHg3QSwweEU1LDB4
NjksMHgwRCwweDJELDB4RUQsMHhFRCwKLSAgICAweDQ3LDB4N0EsMHgyMywweDU5LDB4QjgsMHhG
OCwweERFLDB4REUsMHgyNiwweDgyLDB4ODQsMHg2OSwweDJCLDB4MEIsMHgwQiwweDJELAotICAg
IDB4NjcsMHg4QSwweDI2LDB4ODIsMHgwMiwweERBLDB4N0EsMHhERCwweDQ5LDB4OUIsMHg2Nyww
eDhBLDB4MkQsMHgzNSwweEJELDB4RTksCi0gICAgMHhGNywweEZFLDB4MEMsMHhCNCwweDA5LDB4
MDksMHgwOSwweDA5LDB4MTgsMHhGRiwweEY3LDB4RjYsMHgyQSwweDJBLDB4QkEsMHhBQSwKLSAg
ICAweDM4LDB4RkYsMHhGNywweEY2LDB4M0IsMHhBRSwweEZCLDB4RUYsMHgxOCwweEZGLDB4Mzgs
MHhGNywweEVCLDB4QUEsMHhBQSwweEE4LAotICAgIDB4MzgsMHhGRiwweDE4LDB4RkYsMHhCQSww
eEFBLDB4OEEsMHhGQSwweDM4LDB4RkYsMHhENywweEY2LDB4QUEsMHhBQSwweENBLDB4NkEsCi0g
ICAgMHgxOCwweEZGLDB4QjYsMHhFRSwweDU4LDB4NUUsMHhGNywweEZGLDB4RDYsMHhGNiwweDk2
LDB4RUUsMHhGRiwweEZGLDB4NjgsMHg3QSwKLSAgICAweDk1LDB4RUUsMHg5MSwweEQ1LDB4QTAs
MHhFMCwweDcwLDB4ODgsMHg3NiwweEVFLDB4RjAsMHhDNCwweEEyLDB4QjcsMHgyRCwweDAyLAot
ICAgIDB4NTUsMHhFRSwweDUxLDB4Q0QsMHgyRiwweEQ3LDB4RjgsMHhGMCwweEQ3LDB4RjYsMHhE
NCwweERELDB4MDIsMHgwMywweDBGLDB4MkQsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEE5
LDB4MkIsMHhCQSwweEFELDB4RDgsMHhGRSwweEY3LDB4RjYsMHhENSwweDc1LDB4NzcsMHhERCwK
LSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NUUsMHhBNywweDg4LDB4NTYsMHhGNywweEY2LDB4
QjcsMHhFRSwweEFBLDB4RTgsMHhFQSwweEZGLAotICAgIDB4RjcsMHhGNiwweEI3LDB4RUUsMHhG
RiwweERFLDB4RjUsMHhBQiwweEY3LDB4RjYsMHhCNywweEY2LDB4RkYsMHhBQiwweEFBLDB4MDgs
Ci0gICAgMHhGNywweEY2LDB4QjcsMHhFRSwweEJGLDB4QUIsMHgwMCwweDAwLDB4RjgsMHhGNiww
eEQ3LDB4RjYsMHg4QSwweEVBLDB4QTAsMHhBQSwKLSAgICAweEY4LDB4RjYsMHhENywweEY2LDB4
MkEsMHgwQSwweEEyLDB4NkUsMHhGNywweEY2LDB4RDgsMHhGNiwweDAyLDB4MDAsMHhGOCwweEZC
LAotICAgIDB4RDcsMHhGNiwweEY4LDB4RUUsMHhBQSwweDgyLDB4MjIsMHgwQSwweDE4LDB4RkYs
MHhCNywweEVFLDB4NEEsMHhFQSwweEVCLDB4RUYsCi0gICAgMHhCNiwweEVFLDB4NzYsMHhFRSww
eDc3LDB4NUYsMHg1RSwweDc0LDB4OTYsMHhFRSwweDU1LDB4RUUsMHgyMiwweDJBLDB4MkEsMHgz
NywKLSAgICAweEI2LDB4RjYsMHgzMSwweEM1LDB4RDgsMHhEOCwweEQ4LDB4RDgsMHg5NiwweEVF
LDB4MTQsMHhFNiwweDAxLDB4MDksMHgwQiwweDA5LAotICAgIDB4OTYsMHhFRSwweDcyLDB4Q0Qs
MHg1OCwweDc4LDB4NzgsMHg2OCwweDcyLDB4Q0QsMHg1MSwweEM1LDB4MkEsMHg5QiwweEMyLDB4
N0IsCi0gICAgMHhEMywweEQ1LDB4Q0YsMHhCQywweDM3LDB4MkYsMHgyQSwweDBCLDB4MzQsMHhF
NiwweEQzLDB4RDUsMHgzRCwweDM5LDB4M0IsMHhBRiwKLSAgICAweDk2LDB4RUUsMHg1NSwweEU2
LDB4Q0YsMHhBQiwweEExLDB4QUIsMHg3NiwweEVFLDB4NTUsMHhFNiwweDU3LDB4NTcsMHg5Qyww
eDFFLAotICAgIDB4RDYsMHhGNiwweEI3LDB4RUUsMHg4MCwweEE4LDB4RTgsMHhBMiwweEQ3LDB4
RjYsMHhGNiwweEVFLDB4ODgsMHhBMCwweDAwLDB4MDAsCi0gICAgMHhENywweEY2LDB4RDYsMHhF
RSwweEFBLDB4QTgsMHhBQSwweEFBLDB4RDcsMHhGNiwweEY2LDB4RUUsMHgyMCwweDJBLDB4QTgs
MHg4MCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NTksMHhENSwweEZELDB4QkQsMHhGNyww
eEY2LDB4RDcsMHhGNiwweEZGLDB4REYsMHhBRiwweEEzLAotICAgIDB4RDYsMHhGNiwweEI3LDB4
RUUsMHhBOCwweEVBLDB4QTAsMHhCMCwweEQ2LDB4RjYsMHhCNiwweEVFLDB4REIsMHhGRSwweEIy
LDB4ODIsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweEJGLDB4QkUsMHg2RSwweEFFLDB4Rjgs
MHhGNiwweEQ3LDB4RjYsMHhCRiwweDU1LDB4REQsMHhEOSwKLSAgICAweEY3LDB4RjYsMHhENyww
eEY2LDB4NUYsMHhGRiwweEJGLDB4RUYsMHhGNywweEY2LDB4RDcsMHhGNiwweEFBLDB4QUEsMHhB
RSwweEUyLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3NiwweDc2LDB4NzYsMHhERCwweDU0
LDB4RTYsMHgyMywweDQxLDB4NUMsMHg1QywweDVDLDB4NTgsCi0gICAgMHhDNSwweDU5LDB4QTIs
MHgzOCwweEJGLDB4QkQsMHhCRCwweDJCLDB4MDYsMHg2MiwweDIzLDB4NDksMHhGNSwweEJGLDB4
MEIsMHgwMCwKLSAgICAweDI2LDB4NkEsMHhBNSwweDU5LDB4RkQsMHhGQiwweEEwLDB4ODAsMHhF
NSwweDYxLDB4QTUsMHg1OSwweEJGLDB4NjUsMHhFNiwweDM4LAotICAgIDB4NDcsMHg2QSwweEU2
LDB4NjEsMHgyRiwweEE1LDB4RkYsMHgwQiwweDQ3LDB4NzIsMHhFNSwweDYxLDB4MkEsMHgzRSww
eEQ3LDB4NUUsCi0gICAgMHg2OCwweDcyLDB4RTUsMHg2MSwweEU4LDB4RkUsMHg1NSwweDU1LDB4
NDYsMHg2QSwweEU1LDB4NjEsMHg4RSwweEJGLDB4QkQsMHg1NSwKLSAgICAweEE4LDB4N0EsMHhD
NSwweDYxLDB4MDIsMHhBQSwweEZGLDB4NUQsMHg2OCwweDcyLDB4QzQsMHg2MSwweEUwLDB4N0Es
MHg1NywweDU1LAotICAgIDB4ODgsMHg4MiwweEE0LDB4NjEsMHhENSwweEFELDB4OEYsMHgwQiww
eEE4LDB4ODIsMHhBNSwweDY5LDB4RkUsMHhGQSwweDZBLDB4NzAsCi0gICAgMHg4NSwweDYxLDB4
RTMsMHg1OCwweEI4LDB4RkUsMHhCRiwweEFGLDB4NjcsMHg4MiwweDY0LDB4NjEsMHhCRCwweEI1
LDB4QTUsMHgyNSwKLSAgICAweEE4LDB4OEEsMHgyNiwweDgyLDB4N0QsMHhGRCwweEFCLDB4MDIs
MHg2QSwweDlCLDB4NDYsMHg4MiwweEZELDB4QkQsMHhCRiwweDE3LAotICAgIDB4RjcsMHhGRSww
eDhGLDB4QkMsMHgwOSwweDA5LDB4MDMsMHgwMywweEY3LDB4RkUsMHgxNywweEY3LDB4RkEsMHhF
RSwweEFFLDB4RUYsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweDJGLDB4QUIsMHg4MiwweEFB
LDB4MTcsMHhGRiwweEY3LDB4RjYsMHhBQSwweEZBLDB4NUUsMHg3NiwKLSAgICAweDE3LDB4RkYs
MHhENywweEY2LDB4MjAsMHgwQSwweDBCLDB4NDIsMHgxNywweEZGLDB4QjYsMHhFRSwweEUwLDB4
N0MsMHhERiwweDc1LAotICAgIDB4MTgsMHhGRiwweEI2LDB4RUUsMHg3RCwweEY3LDB4RkQsMHgy
QiwweEY4LDB4RkUsMHhGMywweERELDB4RUEsMHg3QSwweDdBLDB4QzAsCi0gICAgMHhGOCwweEZF
LDB4RDMsMHhENSwweDBCLDB4MDksMHgwQiwweDAyLDB4RjcsMHhGRSwweDc2LDB4RUUsMHg3RSww
eDcwLDB4NjAsMHhDMCwKLSAgICAweDc2LDB4RUUsMHhGNCwweERELDB4NzAsMHg0OCwweDg4LDB4
ODgsMHg3NiwweEVFLDB4RDMsMHhENSwweDJELDB4MkQsMHgyRiwweEJFLAotICAgIDB4RjcsMHhG
RSwweDk2LDB4RUUsMHhBQSwweDhCLDB4MjksMHgyOSwweEY3LDB4RjYsMHhENywweEY2LDB4RUIs
MHhFQywweEZBLDB4QTAsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEY1LDB4RjMsMHhCOSww
eEQxLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhCNSwweDJCLDB4RUYsMHg3NSwKLSAgICAweEY3LDB4
RjYsMHhENywweEY2LDB4RDYsMHhGNiwweEY3LDB4RkYsMHhGNywweEY2LDB4RDcsMHhGNiwweEFB
LDB4QkUsMHhCRiwweEY5LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBNiwweEFGLDB4QkEs
MHhDQSwweEY3LDB4RjYsMHhENywweEY2LDB4ODAsMHhBMiwweDBBLDB4QUEsCi0gICAgMHhGNyww
eEY2LDB4RDcsMHhGNiwweDhFLDB4ODIsMHg4OCwweEI1LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgw
OCwweDAwLDB4QzgsMHg3MiwKLSAgICAweEY4LDB4RjYsMHhCNywweEVFLDB4RkEsMHg3OCwweEZF
LDB4NUYsMHhGOCwweEY2LDB4QjcsMHhFRSwweDhCLDB4OEIsMHhBQiwweEI1LAotICAgIDB4QjYs
MHhFRSwweDc2LDB4RTYsMHg3NiwweEY2LDB4QkUsMHhBQywweDk2LDB4RUUsMHg3NiwweEVFLDB4
MzUsMHg4OCwweEQ4LDB4RDYsCi0gICAgMHg5NiwweEY2LDB4NTEsMHhDRCwweEQ4LDB4RDgsMHhG
OCwweEQ4LDB4OTYsMHhFRSwweDE0LDB4REUsMHg4OSwweDhCLDB4OEIsMHhBQiwKLSAgICAweDU1
LDB4RUUsMHg3MiwweENELDB4NjAsMHg2MCwweDQwLDB4NjAsMHg1MSwweENELDB4QUYsMHhCNCww
eEEwLDB4RTgsMHhGOCwweDdFLAotICAgIDB4MzQsMHhFNiwweEYwLDB4QkMsMHhBOSwweDJELDB4
MjksMHgwOSwweDU0LDB4RTYsMHgxNCwweEU2LDB4RDcsMHhERiwweEJBLDB4OUEsCi0gICAgMHg5
NiwweEVFLDB4NTUsMHhFNiwweEE5LDB4MkIsMHgwMywweDBGLDB4QjYsMHhFRSwweDU1LDB4RTYs
MHhGNywweEZGLDB4RjcsMHgyNywKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhBOCww
eDBBLDB4MDIsMHhENywweEY2LDB4QjYsMHhFRSwweEFBLDB4QUEsMHhBQSwweEE4LAotICAgIDB4
RDYsMHhGNiwweEI3LDB4RUUsMHhBMiwweDIyLDB4MjIsMHgwMiwweEY3LDB4RjYsMHhCNiwweEVF
LDB4QUEsMHhCQSwweEVCLDB4QkIsCi0gICAgMHhENywweEY2LDB4RjcsMHhFRSwweEEwLDB4ODAs
MHgyOCwweDhBLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhFQiwweDZELDB4NTYsMHg1RSwKLSAgICAw
eEY3LDB4RjYsMHhCNiwweEVFLDB4RUEsMHhBQSwweEFGLDB4RkYsMHhENywweEY2LDB4RjYsMHhF
RSwweDg4LDB4ODAsMHhBMiwweDgwLAotICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhGNiwweEZB
LDB4RkEsMHhBQSwweEY3LDB4RjYsMHhENywweEY2LDB4RTksMHhGRCwweEUwLDB4OEEsCi0gICAg
MHhGNywweEY2LDB4RDcsMHhGNiwweEFBLDB4QUEsMHhCRSwweEFFLDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHhBOSwweEFGLDB4RUIsMHhBQSwKLSAgICAweEY3LDB4RjYsMHg5NywweEY2LDB4MjIsMHhB
OCwweEM4LDB4NkEsMHg3NSwweEVFLDB4QTQsMHg1OSwweDc4LDB4NzgsMHg3QywweEZFLAotICAg
IDB4QTcsMHg3QSwweDgzLDB4NTEsMHhGNSwweEJGLDB4MkEsMHgwOCwweDA5LDB4OEIsMHgwNiww
eDZBLDB4NTUsMHhGRiwweEVCLDB4MDIsCi0gICAgMHhFOSwweDgyLDB4MjYsMHg2QSwweDU1LDB4
N0YsMHhGQSwweDg4LDB4ODcsMHg3MiwweEM0LDB4NTksMHg3RiwweDU3LDB4N0UsMHg3MCwKLSAg
ICAweEM4LDB4N0EsMHhBNCwweDU5LDB4QUYsMHgyQiwweDI1LDB4QUQsMHg4OCwweDcyLDB4RTUs
MHg2MSwweDU4LDB4NTgsMHg3OCwweDVDLAotICAgIDB4MDUsMHg2MiwweEE0LDB4NTksMHhCRiww
eDJGLDB4MjcsMHhGRiwweDI3LDB4NkEsMHhFNSwweDYxLDB4NTUsMHhENSwweDcwLDB4NTUsCi0g
ICAgMHgwNiwweDYyLDB4ODQsMHg1OSwweDYyLDB4NzgsMHhBQSwweDA4LDB4QzgsMHg4MiwweEE0
LDB4NTksMHg5NSwweDI1LDB4MkYsMHgwQSwKLSAgICAweEFDLDB4QTMsMHg4NywweDdBLDB4RjUs
MHhBQiwweDJBLDB4MDIsMHg2QiwweEEzLDB4RTYsMHg3MSwweDdBLDB4RUEsMHhBQywweDI4LAot
ICAgIDB4MkEsMHg5QiwweEM1LDB4NjksMHg1NSwweDdCLDB4RTAsMHgwMCwweDhCLDB4QTMsMHhF
NSwweDcxLDB4QjUsMHhCNSwweEJGLDB4RjAsCi0gICAgMHhDOSwweDkyLDB4QzUsMHg2OSwweEEw
LDB4RTgsMHhGQSwweDdFLDB4NzYsMHhGNiwweDQ2LDB4NzIsMHg5NSwweEI1LDB4MjUsMHgwRCwK
LSAgICAweEY3LDB4RkUsMHgzNSwweEVFLDB4MDEsMHgwMiwweDAwLDB4MDAsMHhGOCwweEZFLDB4
MTcsMHhGNywweEY5LDB4RkIsMHhDRSwweEJFLAotICAgIDB4MTcsMHhGRiwweEY3LDB4RjYsMHhD
QSwweEVBLDB4RUEsMHhEQSwweDE3LDB4RkYsMHhENywweEY2LDB4RUEsMHhBRSwweDhBLDB4NkEs
Ci0gICAgMHgxOCwweEZGLDB4OTYsMHhFNiwweEUyLDB4QjgsMHhGRSwweDdGLDB4RDcsMHhGNiww
eDE0LDB4REUsMHgwMCwweDIwLDB4RUEsMHg3RSwKLSAgICAweDM4LDB4RkYsMHgzNCwweERFLDB4
MDIsMHgwQSwweDI5LDB4MDksMHgzOCwweEZGLDB4NTUsMHhFNiwweDcwLDB4RTgsMHhBOCwweEEw
LAotICAgIDB4MTgsMHhGRiwweEI3LDB4RUUsMHgyRCwweDI5LDB4QUEsMHgwRiwweDE4LDB4RkYs
MHhENywweEY2LDB4NkEsMHhFQSwweEFBLDB4ODgsCi0gICAgMHhENywweEY2LDB4NTUsMHhFNiww
eEQ3LDB4NUUsMHg3QywweDc4LDB4NzYsMHhFRSwweDE0LDB4RTYsMHhERSwweDVBLDB4RUEsMHhF
QSwKLSAgICAweEY4LDB4RkUsMHg1NSwweEU2LDB4ODksMHgyRCwweDJELDB4QTUsMHgxOCwweEZG
LDB4RDcsMHhGNiwweEE5LDB4QkQsMHhCRiwweEZGLAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYs
MHg1RiwweDdFLDB4RkEsMHhBQiwweEY3LDB4RjYsMHhENywweEY2LDB4NzUsMHg1NSwweDU3LDB4
RjgsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEE3LDB4NkQsMHg2RCwweEFCLDB4MTcsMHhG
NywweEQ3LDB4RjYsMHg3RCwweEQ1LDB4RkQsMHhBQSwKLSAgICAweEY4LDB4RkUsMHhENywweEVF
LDB4N0YsMHhCRiwweEFBLDB4MjgsMHgxOCwweEZGLDB4RDcsMHhGNiwweEZELDB4RkEsMHhBQiww
eEZBLAotICAgIDB4RDgsMHhGRSwweEY3LDB4RjYsMHg1NSwweDU1LDB4RjUsMHhERCwweEY3LDB4
RjYsMHhCNywweEVFLDB4RTgsMHhFOCwweEZBLDB4N0EsCi0gICAgMHhCNiwweEVFLDB4NTYsMHhF
NiwweEEwLDB4QTgsMHgyOCwweDJDLDB4RDcsMHhGNiwweDk2LDB4RUUsMHgwNywweDAzLDB4MDIs
MHgwMCwKLSAgICAweEI2LDB4RjYsMHg1NiwweEVFLDB4QkEsMHg3RSwweEVBLDB4RUUsMHg5Niww
eEVFLDB4MzUsMHhFNiwweDg4LDB4MkIsMHgyQSwweDJBLAotICAgIDB4NzYsMHhFRSwweDcyLDB4
Q0QsMHhEOCwweEQwLDB4RDgsMHhGOCwweDk2LDB4RUUsMHgxNSwweEU2LDB4OEIsMHg4OSwweEFG
LDB4RTksCi0gICAgMHg1NiwweEVFLDB4QjMsMHhENSwweDYwLDB4NjAsMHg2QSwweDZBLDB4RjEs
MHhDNCwweDZFLDB4QUMsMHhFOCwweEY4LDB4N0UsMHhEQywKLSAgICAweDM0LDB4RTYsMHhFRiww
eEM0LDB4MjksMHgwOSwweDBCLDB4MEIsMHg1NSwweEU2LDB4MTQsMHhERSwweEJFLDB4OTcsMHhG
RSwweDNFLAotICAgIDB4OTYsMHhFRSwweDM1LDB4RTYsMHgwQiwweDNCLDB4NTcsMHg1RiwweEQ3
LDB4RjYsMHgzNSwweEU2LDB4MkYsMHgyRiwweDhELDB4MkIsCi0gICAgMHhENiwweEY2LDB4QjYs
MHhFRSwweDAyLDB4MDAsMHhFMiwweDAyLDB4RDYsMHhGNiwweEI2LDB4RUUsMHgyMiwweENBLDB4
ODgsMHhBOCwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4MDIsMHgyQiwweEFBLDB4ODgsMHhE
NywweEY2LDB4RDYsMHhFRSwweEFBLDB4QTIsMHhBQSwweDJBLAotICAgIDB4RDcsMHhGNiwweEY2
LDB4RUUsMHg4MiwweDBBLDB4ODAsMHgwQSwweEQ2LDB4RjYsMHhGNywweEVFLDB4MDgsMHg4Miww
eDgyLDB4MDgsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEJBLDB4QkUsMHhGRSwweEZDLDB4
RDYsMHhGNiwweEI2LDB4RUUsMHgwMiwweDIzLDB4QUIsMHhBQSwKLSAgICAweEQ2LDB4RjYsMHhG
NywweEVFLDB4QTgsMHhBMiwweEEwLDB4MDgsMHhGNywweEY2LDB4RDYsMHhGNiwweDA4LDB4MDIs
MHg4RiwweEZELAotICAgIDB4RjcsMHhGNiwweEQ2LDB4RjYsMHhCOCwweDAyLDB4MDAsMHhBQiww
eEQ3LDB4RkUsMHhGNywweEY2LDB4QkQsMHhGNywweEQ1LDB4RjUsCi0gICAgMHhENywweEY2LDB4
MTMsMHhFNiwweEMwLDB4QzAsMHg0MCwweDQwLDB4OEQsMHhCNCwweDg2LDB4NzIsMHg1QywweDVD
LDB4NTYsMHg1NiwKLSAgICAweEE4LDB4N0EsMHgwNiwweDZBLDB4MkEsMHhFRiwweEZGLDB4NUMs
MHhFOCwweDhBLDB4RTUsMHg2MSwweDAyLDB4QUEsMHg1RiwweDc1LAotICAgIDB4QzgsMHg4Miww
eDA1LDB4NjIsMHhBOCwweEZFLDB4RjUsMHhERCwweDg3LDB4NzIsMHg4NCwweDUxLDB4RTgsMHg3
QSwweDdFLDB4N0UsCi0gICAgMHhFNSwweDYxLDB4NDMsMHg0OSwweDAyLDB4QUIsMHhENywweERG
LDB4RTYsMHg2MSwweDg0LDB4NTEsMHhBQSwweEFCLDB4RTUsMHgyOSwKLSAgICAweDI2LDB4NkEs
MHhBNSwweDU5LDB4NUYsMHhCRiwweEFGLDB4M0YsMHg2NywweDcyLDB4QzUsMHg1OSwweEY1LDB4
RkQsMHhBNywweDJCLAotICAgIDB4MjksMHg5MywweEU1LDB4NjEsMHhENSwweEZGLDB4MkIsMHgw
QiwweDRBLDB4OUIsMHg2NiwweDdBLDB4QUQsMHgyQiwweDhBLDB4MDIsCi0gICAgMHgyRSwweEJD
LDB4NEEsMHg5QiwweDJELDB4MkQsMHgyRCwweDNELDB4OEYsMHhDNCwweDJBLDB4OUIsMHg1Riww
eEU4LDB4ODAsMHgwMCwKLSAgICAweEVDLDB4QUIsMHhDOSwweDhBLDB4OUQsMHhENywweEZFLDB4
RjgsMHhBQywweEFCLDB4MDUsMHg2QSwweEUwLDB4RTgsMHhGQSwweDVGLAotICAgIDB4MzAsMHhD
RCwweDI2LDB4NzIsMHg1NSwweEQ1LDB4QjUsMHgyRCwweEQ3LDB4RkUsMHgyQSwweDkzLDB4MDks
MHgwQiwweDAyLDB4MDAsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweEVFLDB4RUIsMHg4Myww
eEFCLDB4MTcsMHhGRiwweEY3LDB4RjYsMHhBQiwweEJGLDB4QUUsMHhFQSwKLSAgICAweDE3LDB4
RkYsMHhENywweEY2LDB4QkEsMHhCRSwweEFFLDB4RkEsMHgxOCwweEY3LDB4OTUsMHhFRSwweDYw
LDB4N0MsMHg1RSwweEI1LAotICAgIDB4MTcsMHhGRiwweDc1LDB4RTYsMHg3NywweEY3LDB4QUIs
MHgwMCwweDE3LDB4RkYsMHhCMywweEQ1LDB4N0UsMHhGQSwweEE4LDB4QTAsCi0gICAgMHgxOCww
eEZGLDB4NzUsMHhFNiwweDAxLDB4MDIsMHgwMCwweDAwLDB4MzksMHhGRiwweEQ3LDB4RjYsMHg3
MCwweEYwLDB4RTgsMHhFMCwKLSAgICAweDE4LDB4RkYsMHhENywweEY2LDB4QUQsMHgyRiwweEFG
LDB4RUYsMHgxOCwweEZGLDB4RjgsMHhGNiwweEVFLDB4REQsMHhBQiwweEJCLAotICAgIDB4Rjgs
MHhGRSwweDU1LDB4RTYsMHg3OCwweDYwLDB4QzAsMHg4MCwweDc1LDB4RUUsMHgzNCwweEU2LDB4
NkEsMHhFQSwweEVBLDB4RjgsCi0gICAgMHhENywweEY2LDB4MzQsMHhFNiwweDJGLDB4MzUsMHhC
RCwweEJGLDB4RjcsMHhGNiwweEI3LDB4RjYsMHgyMCwweEFBLDB4QUIsMHhBQiwKLSAgICAweDE4
LDB4RkYsMHhGOCwweEY2LDB4RjUsMHhENSwweEJGLDB4NTUsMHhGOCwweEY2LDB4RDcsMHhGNiww
eDNBLDB4QkMsMHhFMCwweDAwLAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHg1NywweDZCLDB4
RDUsMHg1NSwweEY4LDB4RkUsMHhGNywweEY2LDB4RDUsMHhENSwweDVGLDB4NUYsCi0gICAgMHgx
OCwweEZGLDB4RjcsMHhGNiwweDc1LDB4RjcsMHhGRCwweEQ1LDB4RjcsMHhGNiwweEQ4LDB4RjYs
MHgwMCwweDAwLDB4QTgsMHhFOCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RTgsMHg3QSww
eEZBLDB4N0EsMHhENywweEY2LDB4OTYsMHhFRSwweEIwLDB4RTgsMHhGMiwweDdBLAotICAgIDB4
RDcsMHhFRSwweDc1LDB4RUUsMHgyRiwweEJGLDB4MzcsMHhCNywweEQ3LDB4RjYsMHhCNiwweEVF
LDB4MDAsMHgwMCwweEJFLDB4RUEsCi0gICAgMHg5NiwweEVFLDB4MzUsMHhFNiwweDJBLDB4QUMs
MHhBNiwweDk2LDB4NzYsMHhFRSwweDU1LDB4RTYsMHgwOCwweDJFLDB4MzgsMHgwQSwKLSAgICAw
eDc2LDB4RUUsMHg5MiwweENELDB4RDgsMHhEOCwweEQ4LDB4RDgsMHg3NiwweEVFLDB4MTQsMHhE
RSwweEM5LDB4QzEsMHhBOSwweEVCLAotICAgIDB4MzUsMHhFNiwweEIzLDB4RDUsMHg2OCwweDZB
LDB4NkUsMHg3RSwweDUxLDB4Q0QsMHhFQywweEEzLDB4QkUsMHg5NiwweDk3LDB4MzYsCi0gICAg
MHg5NSwweEVFLDB4NzIsMHhENSwweEFELDB4QTksMHg4RiwweDBCLDB4QjcsMHhGNiwweDE0LDB4
REUsMHhCNywweDM3LDB4MkYsMHhBOCwKLSAgICAweEI3LDB4RjYsMHgzNSwweEU2LDB4RkYsMHhG
OCwweEJFLDB4NTcsMHhCNiwweEVFLDB4NTUsMHhFRSwweDAzLDB4OEEsMHhBQSwweDdCLAotICAg
IDB4RjcsMHhGNiwweEI2LDB4RUUsMHg4RiwweEVGLDB4RUYsMHhBQiwweEQ3LDB4RjYsMHhENiww
eEVFLDB4QUEsMHhBQSwweEFBLDB4QUEsCi0gICAgMHhENiwweEY2LDB4RjYsMHhFRSwweDAwLDB4
QTAsMHhBMCwweDgyLDB4RDcsMHhGNiwweEQ2LDB4RUUsMHhBQSwweEFBLDB4MkEsMHgyQSwKLSAg
ICAweEQ2LDB4RjYsMHhENywweEVFLDB4MkEsMHhBMiwweEFBLDB4OEEsMHhENiwweEY2LDB4RDYs
MHhFRSwweDhBLDB4QUEsMHgyQSwweEEyLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBRSww
eERDLDB4RkIsMHhCQSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4RUYsMHhCQSwweEVFLDB4QkIsCi0g
ICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDBBLDB4ODMsMHhCQSwweEFFLDB4RDYsMHhGNiwweEI2
LDB4RUUsMHgwMCwweDgyLDB4ODAsMHhBQSwKLSAgICAweEQ2LDB4RjYsMHhGNywweEVFLDB4QTgs
MHhBQSwweDgwLDB4MDAsMHhENywweEZFLDB4RjYsMHhFRSwweEFCLDB4QUIsMHgzRSwweDJBLAot
ICAgIDB4QjYsMHhGNiwweDQ5LDB4OEIsMHg4MCwweEUwLDB4NjAsMHg2MCwweDQ5LDB4OEIsMHg0
MywweDQ5LDB4QTgsMHhGRSwweDVGLDB4NUYsCi0gICAgMHg4NywweDcyLDB4RTIsMHgzOCwweEE4
LDB4QUUsMHhERiwweDU1LDB4MDYsMHg2MiwweDIzLDB4NDEsMHgwMCwweDJBLDB4RkYsMHg1NSwK
LSAgICAweDA1LDB4NjIsMHhFMiwweDM4LDB4QTAsMHhFRSwweERGLDB4NTUsMHhBNCwweDU5LDB4
MDIsMHgzOSwweDgwLDB4QUEsMHhCRCwweEI1LAotICAgIDB4QTgsMHg3QSwweDQ0LDB4NTEsMHhG
NSwweEFELDB4MEIsMHgwQiwweDg3LDB4N0EsMHhFNSwweDYxLDB4NTUsMHg3RSwweEY4LDB4Nzgs
Ci0gICAgMHgyNywweDZBLDB4RTUsMHg2MSwweERDLDB4NzAsMHhENywweEI3LDB4Q0MsMHhBMyww
eDI2LDB4NkEsMHhGNSwweEFELDB4MkQsMHhBRCwKLSAgICAweDJELDB4QjQsMHgyOSwweDkzLDB4
NTUsMHhGRiwweDgyLDB4MEEsMHg0RCwweEJDLDB4MjksMHg5QiwweEQ1LDB4RDUsMHg3RSwweEY4
LAotICAgIDB4MEQsMHhCNCwweDI5LDB4OTMsMHgyQiwweDNGLDB4RjUsMHg1RiwweEFGLDB4Q0Ms
MHg4QiwweEEzLDB4ODIsMHhBQiwweERELDB4NTUsCi0gICAgMHhFQywweEFCLDB4NjcsMHg3QSww
eEY4LDB4NzgsMHg1OCwweDVFLDB4RUMsMHhBQiwweDA2LDB4NzIsMHg1NywweDU1LDB4RDUsMHgz
RiwKLSAgICAweEQ3LDB4RkUsMHhFOCwweDgyLDB4MkQsMHgyOSwweDBCLDB4MDIsMHgxOCwweEZG
LDB4RjcsMHhGRSwweEJELDB4QUYsMHgwOSwweDAxLAotICAgIDB4MTcsMHhGRiwweEY4LDB4RjYs
MHhBMiwweDA4LDB4QTIsMHhBOCwweDE3LDB4RkYsMHhGNywweEY2LDB4N0EsMHhGQSwweEFFLDB4
NkEsCi0gICAgMHgxOCwweEZGLDB4QjcsMHhFRSwweDc4LDB4REEsMHhCRSwweEFGLDB4MzksMHhG
RiwweEQ2LDB4RjYsMHhGNSwweEFGLDB4QUIsMHgwQSwKLSAgICAweDU5LDB4RkYsMHhENywweEZF
LDB4QUEsMHhBQSwweDhBLDB4NjAsMHhGOCwweEZFLDB4RjQsMHhERCwweEI4LDB4MUMsMHgzNiww
eDJGLAotICAgIDB4MzgsMHhGRiwweDE4LDB4RkYsMHhCRCwweEJELDB4QkQsMHhGRCwweDM5LDB4
RkYsMHhGOCwweEY2LDB4RTgsMHg3OCwweDdBLDB4NUEsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhG
NiwweEE1LDB4QTUsMHhFRCwweEVELDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRiwweEFCLDB4MEIs
MHhBRCwKLSAgICAweDE4LDB4RkYsMHhENywweEY2LDB4RTIsMHhBMiwweEEyLDB4QTAsMHhGNyww
eEY2LDB4NTUsMHhFNiwweDU3LDB4N0UsMHhGOCwweEU4LAotICAgIDB4QjYsMHhGNiwweDU1LDB4
RTYsMHgzNSwweEI3LDB4QkIsMHhBRSwweEY3LDB4RjYsMHhCNywweEY2LDB4OEIsMHg4OSwweDBE
LDB4MkIsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDAwLDB4MEIsMHgyQiwweDBBLDB4RDcs
MHhGRSwweEY4LDB4RjYsMHg3RCwweERGLDB4NUQsMHg1NSwKLSAgICAweEY3LDB4RjYsMHhENyww
eEY2LDB4ODgsMHgwMiwweDAwLDB4ODIsMHhGNywweEY2LDB4RDcsMHhGNiwweDA4LDB4MkIsMHg1
RiwweDc4LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgzOCwweEFBLDB4RkEsMHhFQSwweEY3
LDB4RjYsMHhENywweEY2LDB4RjgsMHg3QSwweDdCLDB4N0YsCi0gICAgMHhGNywweEY2LDB4QjYs
MHhFRSwweEIyLDB4RkEsMHhGQiwweDdGLDB4RDcsMHhGNiwweDU1LDB4RTYsMHhFOCwweDdBLDB4
N0EsMHg1RiwKLSAgICAweEQ3LDB4RjYsMHg1NSwweEVFLDB4MkQsMHgyRCwweDJELDB4MkIsMHhE
NywweEY2LDB4OTYsMHhGNiwweEFBLDB4RTgsMHhBOCwweDZBLAotICAgIDB4NzUsMHhFRSwweEQz
LDB4RDUsMHgyQywweEJDLDB4QjYsMHhGNiwweDk2LDB4RUUsMHg1NSwweEU2LDB4QUIsMHhCRiww
eEFCLDB4QUQsCi0gICAgMHg1NSwweEU2LDB4OTIsMHhENSwweEQ4LDB4RjgsMHhEOCwweEQ4LDB4
NzYsMHhFRSwweEYzLDB4REQsMHg4QiwweEFCLDB4QUIsMHhBOSwKLSAgICAweDM0LDB4RUUsMHhC
MywweERELDB4RkUsMHg2QSwweDdFLDB4N0MsMHg3MiwweEQ1LDB4NkUsMHhBQywweDM3LDB4M0Ys
MHgyRSwweDJBLAotICAgIDB4OTYsMHhGNiwweDMxLDB4Q0QsMHgwQiwweEFGLDB4RkYsMHg3Nyww
eDU1LDB4RUUsMHgzMSwweENELDB4QTAsMHhGQSwweEZGLDB4NTUsCi0gICAgMHhGMywweERELDB4
NTEsMHhDRCwweEE4LDB4MkYsMHhBRCwweDJCLDB4NzUsMHhFRSwweEY0LDB4REQsMHg4MSwweEJC
LDB4RjksMHhBRiwKLSAgICAweEQ2LDB4RjYsMHhGMiwweERELDB4MDAsMHgwMCwweDA4LDB4QUQs
MHhGNywweEY2LDB4QjYsMHhFRSwweEFCLDB4QUIsMHhBRiwweEZGLAotICAgIDB4RDYsMHhGNiww
eEI3LDB4RUUsMHgwOCwweDAyLDB4MEEsMHgwOCwweEQ2LDB4RjYsMHhGNywweEVFLDB4QTAsMHgw
MiwweDgyLDB4MkMsCi0gICAgMHhENiwweEY2LDB4RjYsMHhFRSwweDAwLDB4MEEsMHg4OCwweDAw
LDB4RDYsMHhGNiwweEY3LDB4RUUsMHgyOCwweDAwLDB4ODgsMHgyOCwKLSAgICAweEY2LDB4RjYs
MHhCNiwweEVFLDB4N0YsMHhCQiwweEFBLDB4QkEsMHhENiwweEY2LDB4QjYsMHhFRSwweEVGLDB4
ODgsMHgwMCwweDAwLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGRiwweDNCLDB4MjAsMHg4
MCwweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUIsMHhGQiwweEEyLDB4QTAsCi0gICAgMHhENiwweEY2
LDB4QjYsMHhFRSwweDAyLDB4MDIsMHgwMCwweDJBLDB4RDYsMHhGNiwweEI2LDB4RjYsMHhBMCww
eEUwLDB4QzgsMHhFOCwKLSAgICAweDc1LDB4RUUsMHg4NiwweDcyLDB4RTAsMHg2MCwweDYwLDB4
NzAsMHgwNSwweDYyLDB4QzIsMHgzMCwweEU4LDB4RUMsMHhGQSwweDdFLAotICAgIDB4MDIsMHgz
OSwweEExLDB4MjgsMHg3QywweEZGLDB4N0UsMHg1NiwweDAzLDB4MzksMHhBMSwweDI4LDB4QUIs
MHhGRiwweDNGLDB4RjUsCi0gICAgMHgyMywweDQxLDB4QzIsMHgzMCwweEVGLDB4MjksMHgyOSww
eEFGLDB4RTUsMHg2OSwweDIzLDB4NDEsMHhGNSwweEI1LDB4MzUsMHgzRCwKLSAgICAweDA5LDB4
OTMsMHgwNiwweDZBLDB4QUQsMHhBQiwweDgyLDB4MDIsMHg4NywweDdBLDB4MjMsMHg0MSwweEU4
LDB4RkEsMHg1RSwweDVDLAotICAgIDB4QzUsMHg2MSwweDAzLDB4NDEsMHgwMCwweDBGLDB4QjUs
MHhENSwweDI5LDB4OTMsMHg4NCwweDUxLDB4MkIsMHhBQiwweEJGLDB4RkQsCi0gICAgMHhDQyww
eEFCLDB4NDcsMHg3MiwweDBBLDB4QUIsMHhCNywweEY1LDB4MEQsMHhCNCwweDJBLDB4OTMsMHg4
MCwweDgyLDB4QUIsMHhBRCwKLSAgICAweEFCLDB4QUIsMHgwOSwweDhCLDB4NzgsMHhFMCwweEUy
LDB4NjAsMHgyOSwweDkzLDB4NjcsMHg3QSwweDgwLDB4RUUsMHg1RSwweDU3LAotICAgIDB4RUMs
MHhBQiwweDY3LDB4N0EsMHg1NywweEZGLDB4QUQsMHgyRCwweDhFLDB4QkMsMHhBOCwweDgyLDB4
MzUsMHgzRCwweEJGLDB4QkYsCi0gICAgMHhENywweEZFLDB4RUYsMHhDNCwweDAyLDB4MDMsMHgw
MywweDJELDB4MTgsMHhGRiwweEY3LDB4RkUsMHgyRSwweEE2LDB4QUUsMHhCRCwKLSAgICAweDE4
LDB4RkYsMHhGNywweEY2LDB4QTIsMHg4MiwweDAyLDB4Q0EsMHgxOCwweEZGLDB4QjYsMHhFRSww
eEUwLDB4QjgsMHhGRSwweDdFLAotICAgIDB4MzgsMHhGRiwweEI2LDB4RUUsMHhCRiwweEVGLDB4
QkYsMHgzNSwweDU5LDB4RkYsMHgxOCwweEZGLDB4QTUsMHhBOSwweEFBLDB4OEEsCi0gICAgMHgz
OSwweEZGLDB4OTYsMHhFRSwweEUwLDB4NjAsMHg3OCwweDU4LDB4MTgsMHhGRiwweDU1LDB4RTYs
MHgzNywweEE3LDB4MjcsMHgyRCwKLSAgICAweDM5LDB4RkYsMHgxOCwweEZGLDB4RjUsMHhCRCww
eEQ1LDB4RDUsMHgzOSwweEZGLDB4RjgsMHhGNiwweEZBLDB4RkEsMHhGQywweEZBLAotICAgIDB4
MTgsMHhGRiwweEY4LDB4RjYsMHg3RSwweDdGLDB4NTcsMHg5NiwweDE4LDB4RkYsMHhGOCwweEY2
LDB4MkIsMHhFQiwweEVFLDB4QUIsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDYyLDB4RUEs
MHhDQSwweEVBLDB4RjcsMHhGNiwweDk2LDB4RUUsMHg1QSwweEZBLDB4RjgsMHhCOCwKLSAgICAw
eEQ3LDB4RjYsMHg3NSwweEVFLDB4REYsMHhGRSwweEI4LDB4QTAsMHhGOCwweEY2LDB4QjYsMHhG
NiwweDA5LDB4MEQsMHgyNSwweDM3LAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBRiwweEJG
LDB4M0UsMHhCRiwweDE4LDB4RkYsMHhGNywweEY2LDB4NTcsMHg3RSwweDgwLDB4QUEsCi0gICAg
MHgxOCwweEZGLDB4RDcsMHhGNiwweERGLDB4QUIsMHhCQSwweEFBLDB4RjgsMHhGRSwweEY3LDB4
RjYsMHg3RiwweEZGLDB4RkQsMHhGRiwKLSAgICAweEY3LDB4RjYsMHhCNiwweEY2LDB4QTIsMHg2
OCwweDdBLDB4NUEsMHhENywweEY2LDB4NzYsMHhFRSwweDgwLDB4RUIsMHg3RSwweDdBLAotICAg
IDB4QjYsMHhGNiwweDU1LDB4RTYsMHg4OCwweDdFLDB4N0YsMHhGQiwweDk2LDB4RUUsMHg1NSww
eEU2LDB4RDYsMHhBNSwweDJELDB4MDIsCi0gICAgMHhENywweEY2LDB4NzYsMHhFRSwweDhELDB4
OEYsMHgyRiwweEFGLDB4QjYsMHhGNiwweDk2LDB4RUUsMHg1RSwweEVGLDB4MkIsMHhFNSwKLSAg
ICAweDU1LDB4RTYsMHhCMywweEQ1LDB4QjQsMHhCRSwweEY0LDB4QkUsMHg3NSwweEVFLDB4MzUs
MHhFNiwweDgzLDB4OEQsMHhGOSwweEFELAotICAgIDB4NTUsMHhFRSwweDkyLDB4RDUsMHhGQyww
eERDLDB4REMsMHhERSwweDU1LDB4RUUsMHg1MSwweENELDB4MDIsMHhBMiwweEZBLDB4NUEsCi0g
ICAgMHgxNCwweEU2LDB4NzIsMHhDRCwweEEwLDB4ODAsMHg4MiwweEE5LDB4NTEsMHhDRCwweDZF
LDB4QjQsMHgyOCwweDJFLDB4MkUsMHgzNiwKLSAgICAweDcyLDB4Q0QsMHgzMSwweEM1LDB4ODAs
MHhFMCwweDVDLDB4NUMsMHg5MiwweEQ1LDB4MzAsMHhDNSwweDM3LDB4MkQsMHgwRiwweDJELAot
ICAgIDB4RjQsMHhERCwweDkyLDB4RDUsMHhCRCwweEE1LDB4QTUsMHgyRCwweDU1LDB4RTYsMHhE
MywweERELDB4MkIsMHhBNywweEI3LDB4NzUsCi0gICAgMHg5MiwweEQ1LDB4RTgsMHg4MiwweDJG
LDB4RDUsMHg1NSwweDU1LDB4OTUsMHhFRSwweDA4LDB4ODMsMHgwMCwweEFELDB4RDUsMHg1NSwK
LSAgICAweEI1LDB4RjYsMHgyOCwweDgzLDB4MDAsMHgwMCwweDJGLDB4RDUsMHhCNiwweEY2LDB4
NkQsMHhCNCwweDAwLDB4MDAsMHgwMCwweDJELAotICAgIDB4RjcsMHhGNiwweDk1LDB4RjYsMHhB
QSwweDJCLDB4QUEsMHhCRCwweEY3LDB4RjYsMHhENiwweEY2LDB4REQsMHg5RiwweDVELDB4NzUs
Ci0gICAgMHhGNywweEY2LDB4QjYsMHhGNiwweEFBLDB4MzgsMHhCQiwweDdGLDB4RjYsMHhGNiww
eEQ2LDB4RjYsMHhGNSwweDdFLDB4RjcsMHg1RCwKLSAgICAweEY2LDB4RjYsMHhENiwweEY2LDB4
N0IsMHg1NywweDU2LDB4NTcsMHhGNywweEZFLDB4RDYsMHhGNiwweDVGLDB4RkIsMHg1NSwweDU3
LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RjYsMHgzQSwweEEyLDB4MDAsMHgwMCwweEY3LDB4RjYs
MHhCNiwweEY2LDB4RkYsMHhGRiwweEVBLDB4QUEsCi0gICAgMHg3NSwweEVFLDB4MjYsMHg2Miww
eDcwLDB4NzAsMHg3MCwweDYwLDB4ODQsMHg0OSwweEUyLDB4MzAsMHhGOCwweDdDLDB4N0UsMHhG
RSwKLSAgICAweDAzLDB4MzksMHg2MSwweDIwLDB4RkUsMHg1RSwweERBLDB4ODAsMHgwMiwweDM5
LDB4ODEsMHgyMCwweEFELDB4QkQsMHgyQiwweDJBLAotICAgIDB4MDIsMHgzOSwweEMyLDB4MzAs
MHhCRSwweDJGLDB4QkIsMHhGMCwweDQ2LDB4N0EsMHgwMywweDQxLDB4QkQsMHgzNSwweDNELDB4
MkQsCi0gICAgMHgwOSwweDkzLDB4NjcsMHg3QSwweDgzLDB4ODMsMHhDQiwweDdGLDB4NDcsMHg3
MiwweEUyLDB4MzgsMHg3OCwweDVDLDB4N0MsMHg1RSwKLSAgICAweDQ0LDB4NDksMHhDMiwweDMw
LDB4M0YsMHgzNSwweEJELDB4QkQsMHhFNSwweDYxLDB4QTEsMHgzMCwweDAyLDB4MEEsMHhBQSww
eDU1LAotICAgIDB4RTgsMHg4MiwweEUzLDB4NDAsMHgyQSwweDBBLDB4QUYsMHhENSwweDhBLDB4
QTMsMHhFNSwweDYxLDB4MEEsMHhBQSwweEFCLDB4QkQsCi0gICAgMHhBQiwweEEzLDB4QzgsMHg4
MiwweEUwLDB4RkEsMHg3QiwweDU1LDB4RTksMHg4QSwweDQ2LDB4N0EsMHg5RiwweEI3LDB4QUYs
MHgyRiwKLSAgICAweEVCLDB4QTMsMHhFOSwweDhBLDB4MkQsMHgyRCwweEY3LDB4RDcsMHhFQyww
eEFCLDB4ODgsMHg3QSwweEY4LDB4NzAsMHg2QSwweEZFLAotICAgIDB4RUYsMHhDNCwweDA2LDB4
NkEsMHgyRiwweEY1LDB4NTUsMHg1NywweEI2LDB4RjYsMHgyNSwweDZBLDB4MDAsMHgyRCwweDM1
LDB4QjUsCi0gICAgMHgxOCwweEZGLDB4NzUsMHhFRSwweEEwLDB4RTIsMHhGRiwweEZELDB4RDYs
MHhGNiwweDk2LDB4RUUsMHhBQSwweEFFLDB4Q0YsMHgzOCwKLSAgICAweDU5LDB4RkYsMHhCNyww
eEVFLDB4QUQsMHgwRCwweDhCLDB4MjIsMHg1OSwweEZGLDB4MTgsMHhGRiwweEVBLDB4RTgsMHhG
RSwweDdBLAotICAgIDB4RjcsMHhGRSwweDU1LDB4RTYsMHhGMCwweDdDLDB4NUMsMHg1RiwweEY4
LDB4RkUsMHg1NSwweEU2LDB4MEQsMHgyRCwweDBELDB4MEQsCi0gICAgMHgzOSwweEZGLDB4Rjgs
MHhGNiwweEFCLDB4QUIsMHgyOSwweEFGLDB4MzksMHhGRiwweEY4LDB4RjYsMHhFQSwweEZBLDB4
NkEsMHhFQSwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4N0QsMHhCNywweDVFLDB4REIsMHgx
OCwweEZGLDB4RjgsMHhGNiwweEFGLDB4RkIsMHhGRCwweEY3LAotICAgIDB4MTgsMHhGRiwweEY4
LDB4RjYsMHhGQSwweDZBLDB4RUYsMHg1RiwweEY3LDB4RjYsMHg5NywweEVFLDB4QTgsMHhBOCww
eEFBLDB4QTIsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDU1LDB4NUYsMHhBQiwweEFBLDB4
RjgsMHhGNiwweEI3LDB4RjYsMHgzNywweDNCLDB4MkEsMHgyMiwKLSAgICAweDE4LDB4RkYsMHhG
NywweEY2LDB4NUYsMHhERiwweDVBLDB4N0IsMHgxOCwweEZGLDB4RjgsMHhGNiwweEJCLDB4QUEs
MHhCRiwweEVGLAotICAgIDB4RjcsMHhGRSwweDE4LDB4RjcsMHhBRiwweEJELDB4QUYsMHhGRiww
eEY3LDB4RjYsMHhENywweEY2LDB4QTAsMHgwMCwweEUwLDB4NTgsCi0gICAgMHhENywweEY2LDB4
OTYsMHhFRSwweEUwLDB4RUMsMHg3QSwweDc2LDB4QjcsMHhGNiwweDc2LDB4RUUsMHhGOCwweEZB
LDB4NUUsMHg1NSwKLSAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4RUEsMHg3QSwweEZBLDB4NUIs
MHg3NiwweEVFLDB4NTUsMHhFNiwweDhCLDB4MkQsMHhCOSwweDJGLAotICAgIDB4QjYsMHhGNiww
eDc2LDB4RUUsMHhBMywweEVCLDB4RUEsMHhBQSwweEI2LDB4RjYsMHg3NiwweEVFLDB4QUIsMHg4
RiwweEVCLDB4Q0IsCi0gICAgMHgxNCwweEU2LDB4NzIsMHhDRCwweEFDLDB4QkMsMHhCNCwweEQ2
LDB4NzUsMHhFRSwweEY0LDB4RTUsMHgyQiwweDhCLDB4QUIsMHhBOSwKLSAgICAweDM0LDB4RTYs
MHhCMywweEQ1LDB4REMsMHhEQywweEQ0LDB4REUsMHgxNCwweEU2LDB4MzAsMHhDNSwweDU4LDB4
NTgsMHg2OCwweEUwLAotICAgIDB4QjMsMHhENSwweDEwLDB4QzUsMHgwOSwweDJELDB4MzUsMHg5
RiwweDMxLDB4QzUsMHg0RCwweEFDLDB4MjYsMHgyNiwweEE2LDB4MzYsCi0gICAgMHgzMSwweENE
LDB4RjAsMHhCQywweDNDLDB4M0YsMHgzNywweEVBLDB4OTIsMHhENSwweDMxLDB4QzUsMHgyRiww
eEFGLDB4QTcsMHhBNSwKLSAgICAweEYzLDB4REQsMHg3MiwweEQ1LDB4MkYsMHhBRiwweEFELDB4
QUQsMHhEMywweERELDB4NTEsMHhDRCwweDgyLDB4RUEsMHg3MiwweDU4LAotICAgIDB4RTgsMHg4
MiwweEM3LDB4N0EsMHgwMCwweDhFLDB4RkUsMHg5OCwweDA4LDB4ODMsMHhDNywweDdBLDB4RkUs
MHhBMiwweEZCLDB4REIsCi0gICAgMHgwOCwweDgzLDB4QzcsMHg4MiwweDJCLDB4MkUsMHhGRSww
eEZELDB4RUIsMHg5QiwweEU4LDB4ODIsMHgzRiwweDc1LDB4NTUsMHg1NSwKLSAgICAweDU1LDB4
RUUsMHhFOCwweDgyLDB4MEEsMHhGNSwweDU1LDB4NTUsMHhCNSwweEY2LDB4RTcsMHg4MiwweDAw
LDB4MEEsMHhCRCwweDU1LAotICAgIDB4QjYsMHhGNiwweDhBLDB4OUIsMHgwMCwweDAwLDB4MDIs
MHhGNSwweEQ2LDB4RjYsMHhGNCwweEU1LDB4MDAsMHgwOCwweDAyLDB4MkQsCi0gICAgMHhGNiww
eEZFLDB4QjYsMHhGNiwweEFFLDB4QUYsMHhGRiwweEQ1LDB4RjgsMHhGRSwweEQ2LDB4RjYsMHhE
RiwweDVGLDB4RDUsMHg1NSwKLSAgICAweEQ3LDB4RkUsMHhENiwweEY2LDB4RDUsMHg3RiwweDdG
LDB4RkYsMHhGNiwweEZFLDB4RDcsMHhGNiwweDdFLDB4NUQsMHg3QiwweDdBLAotICAgIDB4QjYs
MHhGNiwweDg2LDB4NzIsMHg2MCwweDYwLDB4QzAsMHhDMCwweEU2LDB4NTksMHgyMywweDQxLDB4
NTUsMHg1NywweDVFLDB4RTgsCi0gICAgMHg4NCwweDQ5LDB4MjMsMHg0MSwweDdGLDB4RkIsMHg1
NSwweDNBLDB4NjQsMHg0OSwweEUyLDB4MzAsMHhENywweEVDLDB4QkEsMHhGOCwKLSAgICAweDIz
LDB4NDEsMHhFMiwweDM4LDB4N0YsMHhGNiwweEJCLDB4MjksMHg0NiwweDdBLDB4NDQsMHg0OSww
eDJELDB4MkQsMHgwRCwweDJGLAotICAgIDB4NjYsMHg3QSwweDg0LDB4NTksMHhBMCwweEU4LDB4
N0EsMHg1QSwweDY0LDB4NTEsMHhFMywweDM4LDB4NUMsMHg3OCwweDZFLDB4RTgsCi0gICAgMHhF
MiwweDM4LDB4QTIsMHgzMCwweDYyLDB4RTIsMHg4MCwweDA4LDB4QzIsMHgzMCwweDgxLDB4Mjgs
MHg5NywweEJFLDB4RUEsMHhGOCwKLSAgICAweDIzLDB4NDEsMHg4MiwweDI4LDB4MkYsMHgyRiww
eEFGLDB4MzUsMHg4OCwweDgyLDB4NDMsMHg0OSwweDJELDB4QjUsMHgzNSwweDM1LAotICAgIDB4
RTksMHg4QSwweDY3LDB4N0EsMHhBQiwweDNELDB4M0YsMHg3QSwweDA5LDB4OEIsMHg4OCwweDdB
LDB4RkIsMHhERSwweEQ4LDB4REYsCi0gICAgMHgyOSwweDkzLDB4ODcsMHg3QSwweDJCLDB4Qjcs
MHhGRiwweDZGLDB4MDksMHg4QiwweEE1LDB4NTksMHhBOCwweEY4LDB4N0EsMHg1RiwKLSAgICAw
eEU4LDB4ODIsMHhDNSwweDYxLDB4RUUsMHhBRiwweDJELDB4MDksMHhDQywweEEzLDB4QzUsMHg2
MSwweDM1LDB4RjcsMHhGQiwweEZFLAotICAgIDB4QjYsMHhGNiwweEU5LDB4OEEsMHgwMiwweDBC
LDB4MkQsMHhENSwweDM4LDB4RkYsMHg3NSwweEVFLDB4QkUsMHgyRiwweDBBLDB4MDEsCi0gICAg
MHgzOSwweEZGLDB4MTksMHhGRiwweDAwLDB4ODAsMHgyMCwweEUwLDB4MzksMHhGRiwweDk2LDB4
RjYsMHhDMCwweEM4LDB4NjAsMHg3OCwKLSAgICAweDc2LDB4RUUsMHgzNSwweEU2LDB4QzgsMHg2
OCwweDZFLDB4N0EsMHhGOCwweEZFLDB4NTUsMHhFNiwweDA5LDB4MDksMHgwOSwweDBCLAotICAg
IDB4MzksMHhGRiwweEY4LDB4RkUsMHhBRiwweEFGLDB4QUQsMHhBRCwweDE4LDB4RkYsMHhGOCww
eEY2LDB4RTAsMHhDMCwweEEwLDB4QTAsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEY3LDB4
RkYsMHhERCwweEZFLDB4MTksMHhGRiwweEY3LDB4RjYsMHhERiwweEZGLDB4RkQsMHg1NywKLSAg
ICAweEY4LDB4RkUsMHgxNywweEY3LDB4MkEsMHhBMiwweDJBLDB4MkEsMHhGNywweEY2LDB4RDcs
MHhGNiwweDlDLDB4RkEsMHhBQSwweEEyLAotICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhCQSww
eDNGLDB4MjcsMHgyRCwweDE3LDB4RkYsMHhGOCwweEY2LDB4REQsMHhGNywweDdGLDB4RkQsCi0g
ICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweDdGLDB4RUIsMHhFOSwweEVCLDB4MTgsMHhGRiwweEQ3
LDB4RjYsMHgyQSwweEFBLDB4MkYsMHg4RiwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RUEs
MHg2QSwweDZGLDB4N0QsMHhGNywweEY2LDB4QjcsMHhFRSwweDc4LDB4NzgsMHg3QSwweDVBLAot
ICAgIDB4QjcsMHhGNiwweDc2LDB4RUUsMHhGOCwweDc2LDB4NUUsMHg3NSwweDk2LDB4RUUsMHg1
NSwweEU2LDB4NUYsMHg3RSwweDhBLDB4OTcsCi0gICAgMHg5NiwweEVFLDB4MzUsMHhFNiwweDc3
LDB4RjcsMHhGQSwweDI4LDB4OTYsMHhFRSwweDM1LDB4RTYsMHhCRiwweEFGLDB4QjcsMHgzRiwK
LSAgICAweEI3LDB4RjYsMHg3NiwweEVFLDB4Q0EsMHhGQSwweDdFLDB4NUUsMHhCNiwweEY2LDB4
NTUsMHhFNiwweEUyLDB4RUEsMHhFQSwweDZBLAotICAgIDB4RDMsMHhERCwweDMxLDB4Q0QsMHgz
QywweEFDLDB4QkMsMHhCNiwweDM1LDB4RTYsMHhCMywweEQ1LDB4MDIsMHgwQiwweDBCLDB4MDks
Ci0gICAgMHgxNCwweEU2LDB4QjMsMHhENSwweDlFLDB4RkMsMHg5QywweEJDLDB4MTQsMHhFNiww
eEQzLDB4REQsMHg3QSwweDZDLDB4REMsMHhGNCwKLSAgICAweEQzLDB4REQsMHgzMSwweEM1LDB4
NUUsMHg3OCwweDQwLDB4NDAsMHgzMSwweENELDB4NEUsMHhBQywweDM3LDB4MzcsMHgzNywweDE3
LAotICAgIDB4MzEsMHhDRCwweENGLDB4QkMsMHhBOCwweDI4LDB4QkMsMHg1RSwweDcxLDB4Q0Qs
MHgxMSwweEM1LDB4MkYsMHhBRiwweEFGLDB4QTcsCi0gICAgMHgxNCwweEU2LDB4MzEsMHhDNSww
eDJCLDB4MEYsMHhCRiwweDVGLDB4RDMsMHhERCwweEYwLDB4QkMsMHhGOCwweDdDLDB4RjcsMHhC
NSwKLSAgICAweEU4LDB4ODIsMHhBNywweDdBLDB4RUYsMHgzRiwweEFCLDB4RUEsMHhFOCwweDgy
LDB4QTcsMHg3QSwweDJDLDB4QkYsMHhERCwweEZGLAotICAgIDB4RTgsMHg4MiwweEM3LDB4ODIs
MHgyQiwweENBLDB4NUUsMHg3QiwweEU4LDB4ODIsMHhBNywweDdBLDB4OEEsMHhBQSwweEZFLDB4
MkQsCi0gICAgMHhFOCwweDgyLDB4QzcsMHg4MiwweEVGLDB4MkEsMHhDQiwweEM0LDB4MDgsMHg4
QiwweEM4LDB4ODIsMHhBRCwweEFELDB4OUYsMHg1NiwKLSAgICAweDQ5LDB4OEIsMHhDNywweDgy
LDB4M0YsMHhGRiwweDdELDB4NTUsMHhCMywweERELDB4MDgsMHg4MywweDJGLDB4NTUsMHg1NSww
eDU1LAotICAgIDB4NzUsMHhFRSwweDI4LDB4OEIsMHgwMCwweDJGLDB4NTUsMHg1NSwweDk2LDB4
RjYsMHgwOCwweDgzLDB4MDAsMHgwMCwweDJCLDB4RDUsCi0gICAgMHhCNiwweEY2LDB4OEUsMHhC
NCwweDAwLDB4MDAsMHgwMCwweDJELDB4OTUsMHhGRSwweEQ2LDB4RjYsMHg1NSwweDc1LDB4RkYs
MHhCQSwKLSAgICAweEI2LDB4RjYsMHg1MSwweEM1LDB4NDAsMHhDMCwweDAwLDB4MDAsMHgxMyww
eEU2LDB4ODQsMHg1MSwweDU3LDB4NTcsMHg1RSwweDU4LAotICAgIDB4QzUsMHg1OSwweDY0LDB4
NDksMHhBQSwweDhGLDB4QUEsMHhGNSwweDg1LDB4NTEsMHgyMywweDQxLDB4NTgsMHg1QywweEY4
LDB4QUEsCi0gICAgMHg2NiwweDdBLDB4MjMsMHg0OSwweDU1LDB4RDUsMHhCRCwweDJGLDB4Mjks
MHg5MywweDA2LDB4NkEsMHhGNSwweEVELDB4QUIsMHg4QSwKLSAgICAweDg4LDB4ODIsMHg4NCww
eDU5LDB4NzgsMHg2OCwweEYwLDB4RTgsMHhBNSwweDYxLDB4MDMsMHg0MSwweDdGLDB4N0YsMHhC
QSwweEEwLAotICAgIDB4QzYsMHg1OSwweEEyLDB4MzAsMHhGNSwweEQ3LDB4RkUsMHhBMiwweDI0
LDB4NDEsMHg4MSwweDI4LDB4NUUsMHg1RSwweEZBLDB4MkEsCi0gICAgMHg2NCwweDQ5LDB4QTEs
MHgyOCwweEI1LDB4QjUsMHhBRCwweDAyLDB4NjcsMHg3QSwweDQzLDB4NDksMHgyNSwweDJELDB4
QUQsMHhGRiwKLSAgICAweEE4LDB4N0EsMHhBNCwweDU5LDB4QzAsMHhGQSwweDVGLDB4RjUsMHg4
OCwweDdBLDB4RTUsMHg2MSwweDBCLDB4QjUsMHg1NSwweEQ1LAotICAgIDB4QTgsMHg3QSwweDIz
LDB4NDksMHgwMCwweEUwLDB4RUEsMHg3MiwweDI2LDB4NkEsMHgwMiwweDQ5LDB4QkEsMHhCNyww
eEI1LDB4MjUsCi0gICAgMHhBNywweDdBLDB4QzUsMHg2MSwweDI5LDB4MkYsMHhBRSwweEZBLDB4
MDksMHg5MywweDA2LDB4NzIsMHhFQSwweEVBLDB4RUIsMHg4OSwKLSAgICAweDRBLDB4OTMsMHgy
NiwweDcyLDB4MkYsMHgzRiwweEJELDB4QjUsMHgxOCwweEZGLDB4NkEsMHg5MywweDAzLDB4MDks
MHgyNSwweDI1LAotICAgIDB4MzgsMHhGRiwweDE4LDB4RkYsMHhFMiwweEEyLDB4NzksMHg1RCww
eDE4LDB4RkYsMHg3NSwweEVFLDB4NzAsMHg3MCwweDU4LDB4NUMsCi0gICAgMHg3NSwweEVFLDB4
MzUsMHhFNiwweDdFLDB4RUIsMHhGQSwweEJBLDB4MTgsMHhGRiwweDk2LDB4RUUsMHhBOSwweDg5
LDB4ODksMHg4QiwKLSAgICAweDM5LDB4RkYsMHhGOCwweEY2LDB4QUYsMHhBOSwweEFGLDB4RUYs
MHgxOCwweEZGLDB4RjgsMHhGNiwweEE4LDB4QUUsMHhBQSwweEVBLAotICAgIDB4MTgsMHhGRiww
eEY4LDB4RjYsMHhGRiwweERBLDB4RjYsMHg3RiwweDE3LDB4RkYsMHhGOCwweEY2LDB4NUYsMHg1
NiwweDU3LDB4RDUsCi0gICAgMHhEOCwweEZFLDB4RjcsMHhGNiwweERGLDB4NUQsMHg3RCwweERE
LDB4RDcsMHhGRSwweEY3LDB4RjYsMHhENywweDdELDB4NUUsMHhERiwKLSAgICAweEY3LDB4RjYs
MHhENywweEY2LDB4M0YsMHg5OCwweEUwLDB4MkEsMHgxOCwweEZGLDB4RjgsMHhGNiwweEY3LDB4
REQsMHhCNSwweEJGLAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhFMywweEFCLDB4RkUsMHhG
RSwweEQ4LDB4RkUsMHhGNywweEY2LDB4NTUsMHg2RiwweDdELDB4RkYsCi0gICAgMHhGNywweEY2
LDB4QjcsMHhGNiwweDg4LDB4RTgsMHhFOCwweEVBLDB4RDcsMHhGNiwweDc2LDB4RUUsMHhFMCww
eEY4LDB4NUUsMHhERSwKLSAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4NjcsMHg3NywweDU1LDB4
NTcsMHg3NiwweEVFLDB4MzUsMHhFNiwweEVBLDB4RkIsMHhGRSwweEVBLAotICAgIDB4NzUsMHhF
RSwweDM0LDB4RTYsMHhBMiwweEZFLDB4RkEsMHg4MiwweEI2LDB4RjYsMHg1NSwweEU2LDB4QTUs
MHgyRiwweEFELDB4QkQsCi0gICAgMHhCNiwweEY2LDB4NTUsMHhFRSwweEJDLDB4QUUsMHhCRSww
eEJGLDB4QjYsMHhGNiwweDM1LDB4RTYsMHhDMiwweEYwLDB4NjIsMHhFQSwKLSAgICAweEQzLDB4
REQsMHgzMSwweENELDB4QkMsMHhGNiwweEZFLDB4N0MsMHgzNCwweEU2LDB4NzIsMHhDRCwweDBC
LDB4QUIsMHhBRCwweEE5LAotICAgIDB4MTQsMHhFNiwweEIzLDB4RDUsMHhCQywweDNFLDB4M0Ys
MHhCNiwweDE0LDB4RTYsMHgxMCwweEM1LDB4ODgsMHg4OCwweDY4LDB4NTYsCi0gICAgMHhEMyww
eERELDB4RjAsMHhDNCwweEUwLDB4N0UsMHg1NSwweDU1LDB4MzEsMHhDNSwweDJELDB4QUMsMHhC
NywweDk2LDB4REUsMHg5OCwKLSAgICAweDExLDB4QzUsMHg2RSwweEI0LDB4QjgsMHhGOCwweEQ4
LDB4NTAsMHg3MiwweENELDB4RjAsMHhDNCwweDJGLDB4QTksMHhBOSwweEJCLAotICAgIDB4NTEs
MHhDRCwweEYwLDB4QkMsMHg2MCwweDc4LDB4REMsMHg5NywweDcxLDB4RDUsMHhGMCwweEJDLDB4
MkQsMHgwRiwweDJCLDB4MkEsCi0gICAgMHhDOCwweDgyLDB4NDUsMHg3MiwweDBBLDB4QUQsMHhE
NywweEQ3LDB4RTgsMHg4MiwweDQ1LDB4NkEsMHgwQSwweDBBLDB4QUYsMHg1RCwKLSAgICAweEU4
LDB4ODIsMHg2NiwweDcyLDB4QTIsMHgwMiwweDhBLDB4QUQsMHhFOCwweDgyLDB4QTcsMHg3QSww
eEYyLDB4QUUsMHhCNCwweEFBLAotICAgIDB4RTgsMHg4MiwweEE3LDB4ODIsMHhBRSwweEMyLDB4
NDIsMHhGRSwweEU4LDB4ODIsMHhDOCwweDgyLDB4NUUsMHg3RiwweEY1LDB4RDUsCi0gICAgMHhF
OCwweDgyLDB4QTcsMHg4MiwweDBCLDB4MDIsMHg4QiwweDJGLDB4QzgsMHg4QSwweEU4LDB4ODIs
MHhFRCwweDdELDB4NUQsMHhFRiwKLSAgICAweDA4LDB4OEIsMHhDOCwweDgyLDB4QUYsMHhFQiww
eEY2LDB4QkIsMHgwOCwweDhCLDB4QzgsMHg4MiwweDJGLDB4QkYsMHg5RCwweEJCLAotICAgIDB4
MkQsMHhBQywweEU4LDB4OEEsMHgyRCwweDU1LDB4NTUsMHg1NSwweDc1LDB4RjYsMHgwOSwweDhC
LDB4MEEsMHhGNSwweDU1LDB4NTUsCi0gICAgMHhCNiwweEY2LDB4MjksMHg4QiwweDAwLDB4MEEs
MHhGRCwweDU1LDB4MzUsMHhFRSwweEU1LDB4NTksMHg3MCwweDcwLDB4NjAsMHg3RiwKLSAgICAw
eDY0LDB4NDksMHgwMiwweDQxLDB4QUUsMHgzRiwweEI1LDB4QUYsMHhBNSwweDU5LDB4NDMsMHg0
OSwweEJBLDB4QkYsMHhBQiwweDNELAotICAgIDB4QzgsMHg4QSwweEE1LDB4NTksMHgyRCwweDJE
LDB4MkYsMHhCRCwweDI5LDB4OUIsMHhDOCwweDhBLDB4NDAsMHg0MCwweEFBLDB4MjksCi0gICAg
MHhDOSwweDkyLDB4RTUsMHg2OSwweEZBLDB4N0EsMHhEOCwweEY4LDB4NjcsMHg3QSwweEM1LDB4
NjEsMHhENywweEJGLDB4RkYsMHhGOCwKLSAgICAweDY3LDB4N0EsMHhBNSwweDU5LDB4N0YsMHhF
QSwweDgwLDB4QTIsMHgwNiwweDYyLDB4RTIsMHgzOCwweEZGLDB4RkEsMHg3RSwweEY4LAotICAg
IDB4ODUsMHg1MSwweDAzLDB4NDEsMHgwMiwweEVBLDB4QjUsMHhGRiwweDg1LDB4NTksMHgyMyww
eDQxLDB4QTgsMHgyRiwweDI1LDB4MkIsCi0gICAgMHg0NywweDcyLDB4QTQsMHg1OSwweEVELDB4
MEYsMHgwQiwweDBGLDB4ODgsMHg3MiwweEM1LDB4NjEsMHhCNSwweEI3LDB4QUEsMHhBMCwKLSAg
ICAweDQ2LDB4NkEsMHhFMiwweDM4LDB4NzAsMHg3OCwweDdDLDB4N0UsMHg2NywweDcyLDB4MDIs
MHg0MSwweDJELDB4MkQsMHgyOSwweEFGLAotICAgIDB4NjcsMHg3QSwweEM1LDB4NjEsMHg4MCww
eEU4LDB4NUYsMHhERiwweDA5LDB4OEIsMHgyNiwweDcyLDB4MDksMHgyOSwweDBCLDB4OEIsCi0g
ICAgMHhDOSwweDgyLDB4NjcsMHg3QSwweDJFLDB4RTAsMHhCRSwweEY5LDB4OTMsMHhERCwweEM4
LDB4ODIsMHgzNSwweEI1LDB4NTUsMHg1NSwKLSAgICAweEY3LDB4RkUsMHg4QiwweDlCLDB4MDAs
MHgwMiwweDAzLDB4MkQsMHhGNywweEZFLDB4NTUsMHhFRSwweDVDLDB4REMsMHg1RSwweDU2LAot
ICAgIDB4OTYsMHhFRSwweDU1LDB4RUUsMHhENywweERELDB4QjcsMHgxNywweDE4LDB4RkYsMHhC
NywweEY2LDB4QTksMHg4OSwweEFGLDB4ODksCi0gICAgMHgzOSwweEZGLDB4RjgsMHhGNiwweEFG
LDB4RTksMHhBRiwweEFCLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGQSwweEZFLDB4RUEsMHg2OCwK
LSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4NzcsMHhEQiwweDU3LDB4NUYsMHhENywweEZFLDB4
RjgsMHhGNiwweDU3LDB4NUQsMHhGRiwweEZGLAotICAgIDB4RjcsMHhGNiwweEQ2LDB4RjYsMHgy
RSwweEFFLDB4MjIsMHgwQSwweDE4LDB4RkYsMHhGNywweEY2LDB4NTcsMHhGQiwweERBLDB4RkIs
Ci0gICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweEVGLDB4RkYsMHg1RiwweDU1LDB4MTgsMHhGRiww
eEY4LDB4RjYsMHhFNywweEU1LDB4REYsMHhGRiwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4
NUYsMHg3RiwweDVFLDB4REYsMHhGNywweEY2LDB4RDcsMHhGNiwweEFBLDB4RUEsMHhFMiwweEY4
LAotICAgIDB4RjgsMHhGNiwweDk2LDB4RUUsMHhFOCwweEZBLDB4NUUsMHg3RSwweDk2LDB4RUUs
MHg3NiwweEVFLDB4RDgsMHg1QywweDVDLDB4NTcsCi0gICAgMHg3NiwweEVFLDB4NTYsMHhFRSww
eDcyLDB4NEQsMHhGMCwweEZBLDB4NzYsMHhFRSwweDE0LDB4RTYsMHhBQSwweEE4LDB4RkEsMHg2
QywKLSAgICAweDc2LDB4RUUsMHgxNCwweEU2LDB4MEUsMHhBQiwweDBCLDB4QTksMHg5NiwweEVF
LDB4NzYsMHhFRSwweDY1LDB4RjUsMHhCRiwweEJELAotICAgIDB4OTYsMHhFRSwweDc2LDB4RUUs
MHg1RCwweEY3LDB4RUYsMHhGRSwweDk2LDB4RUUsMHgzNSwweEU2LDB4Q0EsMHhFQSwweDYwLDB4
RTAsCi0gICAgMHgxNCwweEU2LDB4NzIsMHhDRCwweDc2LDB4RkEsMHg4OCwweDAwLDB4RjQsMHhE
RCwweDcyLDB4RDUsMHgwOSwweDJCLDB4MEEsMHgyMCwKLSAgICAweEY0LDB4RTUsMHgzMSwweEM1
LDB4QTgsMHhBOCwweEU4LDB4NjAsMHg1MCwweENELDB4QUYsMHhCNCwweEY4LDB4RUUsMHg3Riww
eEQ3LAotICAgIDB4RjAsMHhDNCwweDZELDB4QUMsMHgwMiwweEE4LDB4RUEsMHg1RSwweDcxLDB4
Q0QsMHg4RSwweEI0LDB4N0EsMHg2MiwweEUzLDB4OEIsCi0gICAgMHgxMCwweEM1LDB4MkQsMHhB
NCwweEYwLDB4NzIsMHg3MiwweDYyLDB4NTEsMHhDRCwweEQwLDB4QkMsMHgwQiwweDAxLDB4QTks
MHg4OSwKLSAgICAweDcyLDB4Q0QsMHhGMCwweEJDLDB4QjcsMHhBRiwweDJCLDB4MEIsMHg3MSww
eENELDB4NTEsMHhDRCwweEY3LDB4RUUsMHhCRiwweEY4LAotICAgIDB4QTcsMHg3QSwweDY2LDB4
NzIsMHhGRCwweEY3LDB4RUUsMHhCQSwweEE2LDB4N0EsMHg2NiwweDcyLDB4NzUsMHg3NiwweDc5
LDB4RUEsCi0gICAgMHg4NiwweDcyLDB4NDYsMHg3MiwweEE1LDB4QUUsMHg4MCwweDIwLDB4Qzgs
MHg4MiwweDI1LDB4NkEsMHgwQSwweEQ3LDB4RkYsMHhGRiwKLSAgICAweEM4LDB4ODIsMHg0Niww
eDcyLDB4MDAsMHgwQSwweDk1LDB4NTUsMHhFOCwweDhBLDB4NDYsMHg3MiwweDBBLDB4ODgsMHg4
QSwweEI1LAotICAgIDB4RTgsMHg4MiwweEE3LDB4N0EsMHhFQSwweDhBLDB4RUIsMHgyRCwweEU4
LDB4ODIsMHhDOCwweDgyLDB4QkYsMHhGRCwweDUxLDB4NTUsCi0gICAgMHhFOCwweDgyLDB4Qzgs
MHg4MiwweEFCLDB4NjIsMHg5QywweENGLDB4MDksMHg4QiwweEE3LDB4ODIsMHhFQSwweEI4LDB4
RkUsMHhGNiwKLSAgICAweEU4LDB4OEEsMHhDOCwweDgyLDB4QzAsMHhDOCwweEVFLDB4RkIsMHgw
OCwweDhCLDB4QzgsMHg4MiwweEYyLDB4MEIsMHhGRiwweDZFLAotICAgIDB4QzgsMHg4QSwweDA5
LDB4ODMsMHhERiwweEJCLDB4QTIsMHhBOCwweDA4LDB4OEIsMHhDNSwweDU5LDB4NjAsMHg2OCww
eDcyLDB4NzgsCi0gICAgMHg4NCwweDUxLDB4NDMsMHg0OSwweEI1LDB4RjcsMHg5NCwweDU1LDB4
QTUsMHg1OSwweDQ0LDB4NDksMHgzRCwweDJGLDB4MDgsMHgwMiwKLSAgICAweEE4LDB4OEEsMHhD
NSwweDYxLDB4QjUsMHgzNSwweDJELDB4MkYsMHhFOSwweDkyLDB4NjcsMHg4MiwweDBBLDB4QTIs
MHg2MiwweDc4LAotICAgIDB4QTgsMHg4QSwweDI2LDB4NzIsMHhGMCwweDc4LDB4NTYsMHg1Nyww
eDY3LDB4N0EsMHhFNSwweDY5LDB4RjAsMHhFQSwweEZGLDB4NzcsCi0gICAgMHg2NywweDcyLDB4
QTQsMHg1OSwweEVBLDB4RTAsMHhGRiwweDU3LDB4MDUsMHg2MiwweDQ0LDB4NTEsMHg3OCwweDdB
LDB4NTcsMHg1NywKLSAgICAweDY0LDB4NTEsMHgwMywweDQxLDB4RjcsMHhCNywweEVCLDB4RTgs
MHhBNSwweDU5LDB4MjMsMHg0OSwweEZELDB4QUYsMHgzNSwweDM3LAotICAgIDB4NjcsMHg3Miww
eEM1LDB4NTksMHgzRCwweEI1LDB4QTUsMHhFRCwweDg4LDB4NzIsMHhFNSwweDYxLDB4NjgsMHg3
MCwweDdFLDB4RjcsCi0gICAgMHhBNCwweDU5LDB4MDIsMHg0MSwweDc4LDB4RkEsMHhGQywweDND
LDB4NDcsMHg3MiwweDQzLDB4NDksMHhGNSwweDNELDB4MkYsMHhBRiwKLSAgICAweEU5LDB4OEEs
MHhFNiwweDY5LDB4RDUsMHhCRCwweDNGLDB4MkIsMHgyOSwweDkzLDB4NDcsMHg3QSwweDZGLDB4
N0EsMHhGOCwweDc4LAotICAgIDB4RTksMHg4QSwweDQ3LDB4N0EsMHgyRCwweDM1LDB4RjksMHhD
MSwweDRBLDB4OTMsMHgyNiwweDZBLDB4RjgsMHhGQSwweEZGLDB4NTcsCi0gICAgMHhEMywweERE
LDB4QzgsMHg4MiwweDJELDB4RDUsMHhENSwweDU1LDB4NTUsMHhFRSwweDZCLDB4OUIsMHgwMCww
eDAyLDB4MEIsMHgwRCwKLSAgICAweEI2LDB4RjYsMHg1NSwweEVFLDB4QjcsMHgzNywweDE1LDB4
QjUsMHgxOCwweEZGLDB4RDcsMHhGNiwweEU5LDB4RUIsMHhGOSwweEU5LAotICAgIDB4MzgsMHhG
RiwweEY4LDB4RjYsMHhBQiwweEFCLDB4RUIsMHhCOSwweDE4LDB4RkYsMHhGOCwweEY2LDB4RUEs
MHhGOCwweEY4LDB4RkEsCi0gICAgMHgxOCwweEZGLDB4RDgsMHhGNiwweEVBLDB4RkEsMHhCRSww
eEZBLDB4RjcsMHhGNiwweEQ4LDB4RjYsMHhBQSwweEJBLDB4MkEsMHhBMiwKLSAgICAweEQ4LDB4
RkUsMHhGNywweEY2LDB4NUYsMHhGNywweDU3LDB4NUYsMHgxOCwweEZGLDB4RjcsMHhGNiwweDZE
LDB4QkQsMHhBRCwweEVCLAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHg3NSwweEZGLDB4RkIs
MHhFQSwweDE3LDB4RkYsMHhGOCwweEY2LDB4RkEsMHhBRiwweEZGLDB4N0YsCi0gICAgMHgxOCww
eEZGLDB4QjcsMHhGNiwweEE4LDB4RUEsMHhFRSwweDdCLDB4RDcsMHhGNiwweDk2LDB4RUUsMHgy
MCwweEZFLDB4NUUsMHg1RSwKLSAgICAweEI3LDB4RjYsMHg1NSwweEU2LDB4RTAsMHhFOCwweEZG
LDB4RkYsMHg5NiwweEVFLDB4NTUsMHhFNiwweEFGLDB4QkIsMHhFQSwweEZBLAotICAgIDB4NzYs
MHhFRSwweDU2LDB4RUUsMHhERSwweEJFLDB4QkEsMHg4QywweDc2LDB4RUUsMHgzNSwweEU2LDB4
N0UsMHhFOCwweEEwLDB4ODIsCi0gICAgMHg3NiwweEVFLDB4MTQsMHhFNiwweDJGLDB4M0YsMHhG
RSwweEZBLDB4OTYsMHhFRSwweDM1LDB4RTYsMHgwMiwweDA4LDB4MEEsMHg3RiwKLSAgICAweDk2
LDB4RUUsMHg1NSwweEVFLDB4QkUsMHgyQSwweDgyLDB4RDUsMHg5NiwweEVFLDB4MzQsMHhFNiww
eEM4LDB4NDgsMHg2MiwweDQyLAotICAgIDB4MzQsMHhFNiwweEY0LDB4REQsMHhCQywweDVELDB4
NTUsMHg1RCwweDE0LDB4RTYsMHhEMywweERELDB4QkEsMHg3RiwweEE1LDB4QUIsCi0gICAgMHhG
NCwweEU1LDB4QUYsMHhCQywweEUwLDB4NjAsMHg3OCwweDU4LDB4Q0YsMHhCQywweDZFLDB4QjQs
MHhFOCwweDdCLDB4N0EsMHg4MCwKLSAgICAweEFGLDB4QkMsMHgwRCwweEE0LDB4QkEsMHhERiww
eERGLDB4RTgsMHg1MSwweENELDB4QUYsMHhCQywweDA5LDB4MkQsMHg5NSwweDU1LAotICAgIDB4
NTEsMHhDRCwweDBELDB4QUMsMHg2OCwweDYwLDB4RTAsMHhERSwweDMxLDB4Q0QsMHhBRiwweEJD
LDB4ODEsMHgwOSwweDBCLDB4QTMsCi0gICAgMHg5MiwweEQ1LDB4MzEsMHhDRCwweEE5LDB4QTks
MHhBQiwweEE5LDB4OTEsMHhENSwweDUyLDB4Q0QsMHhGQSwweEZFLDB4RUIsMHhFQSwKLSAgICAw
eEE3LDB4N0EsMHg0NSwweDZBLDB4MDIsMHg4QSwweDBBLDB4OEQsMHhBNywweDdBLDB4ODYsMHg3
MiwweEQ0LDB4NTYsMHhGRSwweEFELAotICAgIDB4ODYsMHg3QSwweEE3LDB4NzIsMHhFQSwweEVG
LDB4RUIsMHhBNywweEM4LDB4ODIsMHg2NiwweDdBLDB4RkYsMHhERiwweDlFLDB4QUIsCi0gICAg
MHhBNywweDdBLDB4NjYsMHg3MiwweDU1LDB4RkIsMHg4QiwweEE4LDB4ODcsMHg3QSwweDY2LDB4
NzIsMHhCRCwweEYwLDB4QzIsMHgyQywKLSAgICAweEE2LDB4N0EsMHg0NiwweDcyLDB4MkYsMHhG
NywweEZFLDB4RUUsMHhFOCwweDgyLDB4NDUsMHg3MiwweDA4LDB4QUYsMHg1RCwweEQ1LAotICAg
IDB4RTksMHg4QSwweDQ2LDB4NzIsMHgwMiwweDg4LDB4MkIsMHhGRCwweEU4LDB4OEEsMHg4Nyww
eDdBLDB4QTgsMHg4MiwweEE4LDB4QUQsCi0gICAgMHhFOCwweDgyLDB4QTcsMHg4MiwweDAyLDB4
OEEsMHg5RCwweEFBLDB4RTgsMHg4QSwweEM4LDB4ODIsMHhGNiwweDJDLDB4MkYsMHg5RSwKLSAg
ICAweEU4LDB4OEEsMHhBNywweDdBLDB4QTIsMHg4MiwweDZBLDB4QUUsMHhFOCwweDgyLDB4QTQs
MHg1OSwweDc4LDB4NzgsMHg3MiwweDY4LAotICAgIDB4MjMsMHg0OSwweEUyLDB4MzgsMHgwOCww
eEY4LDB4RkMsMHg1QywweDg0LDB4NTksMHhDMiwweDMwLDB4MDIsMHgzRiwweEI1LDB4RDUsCi0g
ICAgMHhDNywweDhBLDB4NjMsMHg1MSwweDJCLDB4QUIsMHhCRiwweEY1LDB4MDksMHg5MywweDQ3
LDB4N0EsMHhFMiwweDgyLDB4RUEsMHg3NSwKLSAgICAweDY4LDB4N0EsMHgwNiwweDcyLDB4QTgs
MHhCQywweEZGLDB4NjgsMHg0NywweDcyLDB4NjQsMHg1OSwweEZFLDB4NzgsMHhGQSwweEFCLAot
ICAgIDB4QzUsMHg2MSwweDI0LDB4NTEsMHhGMCwweDdCLDB4RUIsMHhFOCwweDY0LDB4NTEsMHgy
MywweDQ5LDB4MkEsMHhENSwweEQ3LDB4RjUsCi0gICAgMHg4NCwweDUxLDB4MjMsMHg0OSwweDVF
LDB4REUsMHgyRiwweDdCLDB4QzUsMHg1OSwweDAzLDB4NDEsMHgyRiwweDBBLDB4RkEsMHhERiwK
LSAgICAweEU2LDB4NjEsMHg0MywweDQxLDB4MDAsMHhCQSwweEY1LDB4NTUsMHhDNSwweDU5LDB4
MjMsMHg0MSwweDAwLDB4MDAsMHhDQSwweDU1LAotICAgIDB4NDcsMHg3MiwweDY0LDB4NTEsMHhE
NSwweEY1LDB4MkQsMHgwRCwweDg4LDB4ODIsMHhDNSwweDYxLDB4NzUsMHhCNSwweDJFLDB4MEEs
Ci0gICAgMHhDOSwweDhBLDB4MDYsMHg3MiwweDBCLDB4QkUsMHhGQywweDc4LDB4QzksMHg4QSww
eDA2LDB4NkEsMHhFMCwweEU4LDB4QkEsMHhENSwKLSAgICAweDg3LDB4N0EsMHg2NCwweDUxLDB4
MDIsMHg4QSwweEU4LDB4N0UsMHhDNSwweDYxLDB4MDMsMHg0OSwweDIwLDB4OUUsMHhCNywweEI3
LAotICAgIDB4ODcsMHg3QSwweDY0LDB4NTEsMHgwQSwweDNGLDB4QUQsMHhBRiwweDE1LDB4RUUs
MHg2NywweDcyLDB4MkYsMHhCRCwweEQ1LDB4NTUsCi0gICAgMHg3NiwweEVFLDB4MDksMHg4Qiww
eDAwLDB4MDIsMHhBRiwweDU1LDB4RDgsMHhGRSwweDBELDB4QUMsMHgwMCwweDAwLDB4MjIsMHhG
NSwKLSAgICAweDE4LDB4RkYsMHgzNCwweEU2LDB4MDAsMHgwMiwweDAyLDB4MjksMHgxOCwweEZG
LDB4RjgsMHhGNiwweEZBLDB4RkEsMHhGQSwweEFGLAotICAgIDB4RjcsMHhGRSwweEY4LDB4RjYs
MHhGRiwweEZGLDB4RUYsMHhGRiwweEY3LDB4RjYsMHhEOCwweEY2LDB4MkEsMHhBOCwweEFFLDB4
MkEsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweDU3LDB4RkQsMHhGNSwweEJGLDB4RjgsMHhG
RSwweDE3LDB4RjcsMHhBQSwweEVBLDB4QkIsMHg4RSwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2
LDB4RkUsMHhGRiwweEVFLDB4RkUsMHgxOCwweEZGLDB4RDcsMHhGNiwweEVBLDB4RUUsMHhGQiww
eDdBLAotICAgIDB4MTcsMHhGNywweEI3LDB4RjYsMHg3RiwweEZFLDB4NUYsMHg1RCwweEI3LDB4
RjYsMHg3NiwweEVFLDB4RjgsMHg1OCwweEY4LDB4RkUsCi0gICAgMHg3NSwweEVFLDB4MzUsMHhF
NiwweEFFLDB4RkUsMHhGQSwweEYwLDB4NzYsMHhFRSwweDU1LDB4RUUsMHhGRSwweERELDB4MUUs
MHgwMiwKLSAgICAweDc2LDB4RUUsMHg1NSwweEVFLDB4RjksMHhEQywweDU4LDB4RjgsMHg3Niww
eEVFLDB4NTUsMHhFRSwweEU5LDB4QUUsMHhFRSwweEFCLAotICAgIDB4NzUsMHhFRSwweDM1LDB4
RTYsMHg2RSwweDY4LDB4RTgsMHhBQSwweDU2LDB4RUUsMHgxNCwweEU2LDB4N0YsMHhGRiwweEJF
LDB4QUUsCi0gICAgMHg5NiwweEY2LDB4MzUsMHhFNiwweEI1LDB4MDUsMHgzRCwweEJGLDB4OTYs
MHhGNiwweEQzLDB4REQsMHhFMCwweDYwLDB4NjgsMHg3QSwKLSAgICAweDE0LDB4RTYsMHhEMyww
eERELDB4MEIsMHgwRCwweDA5LDB4MjUsMHgxNCwweEU2LDB4RDMsMHhERCwweDgwLDB4MjAsMHg1
QywweEQ4LAotICAgIDB4RDQsMHhERCwweEYwLDB4QzQsMHg1OCwweDc4LDB4NzgsMHg3QywweEYw
LDB4QzQsMHhBRiwweEJDLDB4QjAsMHhGQSwweERBLDB4QUEsCi0gICAgMHhGMCwweEM0LDB4NEQs
MHhBQywweDZBLDB4NjIsMHhFMCwweDAwLDB4RDAsMHhCQywweDZBLDB4OTMsMHhBMiwweEFBLDB4
RkIsMHg1QywKLSAgICAweDhFLDB4QjQsMHg0QiwweDkzLDB4MjgsMHgyQSwweDNGLDB4MzUsMHgz
MSwweEM1LDB4RjAsMHhDNCwweEE5LDB4OEIsMHhGOSwweDc1LAotICAgIDB4NzIsMHhENSwweDEw
LDB4QzUsMHgyMywweEFGLDB4QUQsMHhGRCwweDcyLDB4RDUsMHgzMSwweENELDB4MDAsMHhCQSww
eEFBLDB4NTcsCi0gICAgMHg0NSwweDZBLDB4MDUsMHg2MiwweDNBLDB4RUEsMHg3RCwweEU2LDB4
ODYsMHg3MiwweEU1LDB4NjEsMHgwMiwweEFGLDB4NkYsMHhGRSwKLSAgICAweEE3LDB4N0EsMHgw
NSwweDYyLDB4ODAsMHgwQSwweEFGLDB4RDUsMHhBNywweDdBLDB4NDYsMHg3MiwweDgwLDB4QTgs
MHgwQSwweDk1LAotICAgIDB4QTcsMHg3QSwweDg2LDB4N0EsMHhGOSwweEI5LDB4QkIsMHhBQiww
eEE3LDB4N0EsMHg2NiwweDdBLDB4QkQsMHhCOCwweEFBLDB4QjgsCi0gICAgMHhBNywweDdBLDB4
NDYsMHg3MiwweEU4LDB4QTIsMHhBMiwweDAyLDB4QTcsMHg3QSwweDY2LDB4N0EsMHg3RSwweDNC
LDB4MkEsMHgyMiwKLSAgICAweEE3LDB4N0EsMHg2NiwweDdBLDB4NzcsMHg1RSwweEI4LDB4MjAs
MHhBNywweDdBLDB4NjYsMHg3QSwweEU1LDB4NUQsMHhGRiwweEU4LAotICAgIDB4RTgsMHg4Miww
eDQ1LDB4NzIsMHgwMiwweEJELDB4RDcsMHhGRSwweEU4LDB4ODIsMHg2NiwweDcyLDB4QTIsMHgy
QSwweEI1LDB4NTUsCi0gICAgMHgwOCwweDhCLDB4ODcsMHg3QSwweDJBLDB4QzgsMHhBMiwweEJE
LDB4QzcsMHg4MiwweDA1LDB4NjIsMHg2MCwweDgwLDB4MDAsMHgwMCwKLSAgICAweEM3LDB4ODIs
MHhFMiwweDQwLDB4NTcsMHg1NywweDVFLDB4NzgsMHhFMiwweDM4LDB4QTEsMHgzOCwweEZDLDB4
NUUsMHg3QSwweEU4LAotICAgIDB4NjQsMHg1OSwweEEyLDB4MzgsMHgwQiwweEZELDB4QkQsMHgz
RCwweDI2LDB4NzIsMHgyMywweDUxLDB4MkYsMHgzRCwweDJELDB4MkYsCi0gICAgMHg4OCwweDgy
LDB4RTYsMHg2OSwweDZBLDB4MDIsMHgwMCwweDJBLDB4ODgsMHg4MiwweDA1LDB4NkEsMHg1NSww
eEZCLDB4MDIsMHg5NiwKLSAgICAweEU5LDB4OEEsMHg4NCwweDUxLDB4N0YsMHhFQSwweEYwLDB4
RUEsMHgyNywweDZBLDB4MDIsMHg0MSwweEZGLDB4N0YsMHg1OCwweDVGLAotICAgIDB4NDQsMHg0
OSwweEMyLDB4MzgsMHhFMCwweDY4LDB4RkUsMHhENywweDQ0LDB4NDEsMHhFMiwweDM4LDB4MkIs
MHhBOSwweEVELDB4N0YsCi0gICAgMHg0NCwweDQxLDB4QTIsMHgzMCwweEUwLDB4N0EsMHg1Riww
eDVGLDB4QTUsMHg1OSwweDgxLDB4MzAsMHhGRiwweEJELDB4QUQsMHgyQiwKLSAgICAweDQ3LDB4
NzIsMHg0MywweDUxLDB4MEQsMHgwRCwweEFGLDB4QkYsMHg4OCwweDdBLDB4MDYsMHg2QSwweENB
LDB4RUYsMHg4QiwweEFELAotICAgIDB4MjcsMHg3MiwweDg0LDB4NTksMHhFMCwweEY4LDB4Njgs
MHg1QSwweEU2LDB4NjEsMHg4NCwweDU5LDB4MDksMHg2RiwweEFELDB4RUIsCi0gICAgMHhDNiww
eDYxLDB4MjMsMHg0MSwweDcwLDB4NzIsMHg3QSwweDdFLDB4QTUsMHg1OSwweDAzLDB4NDEsMHhC
NSwweEI1LDB4MzUsMHgzNSwKLSAgICAweDQ3LDB4NzIsMHhDNSwweDYxLDB4RTksMHg2MywweEZC
LDB4M0EsMHhFOSwweDhBLDB4MDYsMHg3MiwweDI5LDB4MEQsMHhBQiwweEVBLAotICAgIDB4Qzgs
MHg4MiwweDI2LDB4NzIsMHhCQywweDVDLDB4RkUsMHgyRiwweDhCLDB4OUIsMHg2NywweDdBLDB4
MkIsMHhCRCwweEJELDB4RUYsCi0gICAgMHhGOCwweEZFLDB4QzgsMHg4MiwweDAyLDB4QUIsMHhG
RCwweDU1LDB4RDcsMHhGRSwweDZBLDB4OTMsMHgwMCwweDAyLDB4QUYsMHhENSwKLSAgICAweEY3
LDB4RkUsMHg3MiwweEQ1LDB4MDAsMHgwMCwweDIyLDB4RkQsMHhGOCwweEZFLDB4NTYsMHhFRSww
eDA4LDB4MDgsMHgyMiwweEJELAotICAgIDB4RjgsMHhGRSwweEQ3LDB4RjYsMHgwMCwweEFBLDB4
QTgsMHhGRSwweDE4LDB4RkYsMHhENywweEY2LDB4QUEsMHhBQSwweEFCLDB4RkYsCi0gICAgMHgx
OCwweEZGLDB4RDgsMHhGNiwweEFBLDB4QUYsMHhGRiwweEVGLDB4RjgsMHhGRSwweEI3LDB4RjYs
MHg2MCwweEYyLDB4RjgsMHg1RSwKLSAgICAweEQ3LDB4RjYsMHg3NiwweEVFLDB4QTAsMHhFQyww
eEZBLDB4N0UsMHhCNiwweEY2LDB4NTUsMHhFRSwweEFBLDB4RkEsMHhGQSwweEY1LAotICAgIDB4
OTYsMHhGNiwweDU1LDB4RUUsMHg3QSwweDhBLDB4QUIsMHhFRiwweDc2LDB4RUUsMHg1NSwweEVF
LDB4RkIsMHg3QywweDk4LDB4MEIsCi0gICAgMHg5NywweEY2LDB4NTYsMHhFRSwweERFLDB4OUYs
MHhFNiwweEZBLDB4OTcsMHhGNiwweDU2LDB4RUUsMHg3RCwweEZGLDB4RkEsMHhFQSwKLSAgICAw
eDc2LDB4RUUsMHg1NSwweEVFLDB4MzYsMHhFQSwweEJBLDB4QUUsMHg3NSwweEVFLDB4MzUsMHhF
RSwweEI3LDB4QUUsMHg4OCwweDBBLAotICAgIDB4NzYsMHhFRSwweDM0LDB4RTYsMHg1QSwweDcw
LDB4N0EsMHg1RiwweDU1LDB4RUUsMHhCMywweEQ1LDB4RjAsMHg2OCwweDcwLDB4NzgsCi0gICAg
MHgxNCwweEU2LDB4QjMsMHhENSwweDJELDB4MkYsMHgyQiwweEFELDB4NzUsMHhFRSwweDE0LDB4
RTYsMHg3RCwweEZGLDB4QkYsMHgyRCwKLSAgICAweDU1LDB4RUUsMHgzMSwweENELDB4NTYsMHg3
QywweEUwLDB4ODAsMHhEMywweERELDB4RDAsMHhCQywweDU1LDB4RjcsMHhERSwweEU4LAotICAg
IDB4NzIsMHhDRCwweEYwLDB4QzQsMHhGRCwweEFGLDB4MkIsMHhBQSwweDMxLDB4Q0QsMHgwOSww
eDgzLDB4NzAsMHg3MCwweEMwLDB4ODAsCi0gICAgMHhBRiwweEI0LDB4QTgsMHg3QSwweDJELDB4
MkQsMHgzNSwweEY3LDB4RjAsMHhDNCwweDBDLDB4QTQsMHgwMCwweDBBLDB4QUEsMHhCNSwKLSAg
ICAweDMxLDB4Q0QsMHhBRiwweEJDLDB4MEEsMHhBQiwweDM3LDB4RjUsMHgzMSwweENELDB4Q0Ys
MHhCQywweDAwLDB4RUEsMHhFQiwweERGLAotICAgIDB4NDYsMHg3MiwweDI2LDB4NkEsMHhFRCww
eERFLDB4MTgsMHg4OCwweDQ2LDB4NzIsMHgyNiwweDZBLDB4RTUsMHg2QiwweDA4LDB4MjIsCi0g
ICAgMHg0NiwweDcyLDB4MDUsMHg2QSwweEJGLDB4QUEsMHhGRSwweERBLDB4NDYsMHg3MiwweDA1
LDB4NkEsMHhGRiwweDZFLDB4RDcsMHhCQSwKLSAgICAweEE3LDB4N0EsMHgwNSwweDZBLDB4MkYs
MHg3RCwweERGLDB4RkYsMHhBNywweDdBLDB4MjYsMHg2QSwweDAwLDB4MkIsMHhENywweDU1LAot
ICAgIDB4QTcsMHg4MiwweDI1LDB4NkEsMHgwOCwweEEwLDB4MkEsMHg5NSwweEE3LDB4N0EsMHg4
NywweDdBLDB4QUYsMHhGQSwweEZGLDB4QTUsCi0gICAgMHhBNywweDdBLDB4ODcsMHg3QSwweDhC
LDB4MEYsMHgyRCwweEZDLDB4QzcsMHg4MiwweDY2LDB4NzIsMHg3RiwweEZGLDB4M0EsMHhGOCwK
LSAgICAweEE3LDB4ODIsMHg4NywweDdBLDB4RkYsMHhCRCwweEZGLDB4MEMsMHhBNywweDgyLDB4
NjYsMHg3QSwweEU2LDB4RkEsMHhBQSwweDA4LAotICAgIDB4QzcsMHg4MiwweDY2LDB4NzIsMHhE
NSwweEJCLDB4RkUsMHg4QiwweEM4LDB4ODIsMHg2NiwweDcyLDB4MEIsMHhGNywweEZGLDB4QUEs
Ci0gICAgMHhDNywweDgyLDB4ODQsMHg1OSwweDcwLDB4QzIsMHhBMiwweDI4LDB4NDYsMHg3Miww
eEUzLDB4NDAsMHg1NSwweDU3LDB4RkMsMHhFOCwKLSAgICAweDY0LDB4NTksMHhFMiwweDQwLDB4
QUQsMHgyRCwweDhFLDB4ODgsMHhBNSwweDYxLDB4MDMsMHg0OSwweDJGLDB4NTcsMHg1RiwweDVG
LAotICAgIDB4MjcsMHg3MiwweEUzLDB4NDgsMHgwQSwweEFGLDB4RjUsMHhGNSwweDY3LDB4N0Es
MHg0NCwweDUxLDB4MDAsMHhBQSwweEZELDB4NUQsCi0gICAgMHg0NywweDdBLDB4RTMsMHg0MCww
eEEwLDB4RkEsMHhGRiwweDdGLDB4NDQsMHg1MSwweEEyLDB4MzAsMHhFMCwweEJBLDB4RkUsMHhE
NywKLSAgICAweDQ0LDB4NDEsMHhDMiwweDM4LDB4RjcsMHhFRiwweEJCLDB4MkEsMHg0NCwweDQx
LDB4RTMsMHgzOCwweDdGLDB4RUYsMHhFQSwweDgzLAotICAgIDB4MjMsMHg0MSwweEEyLDB4MzAs
MHhERSwweERFLDB4QkUsMHgyQSwweEE1LDB4NTksMHgwMywweDQxLDB4MkQsMHgwRCwweDJELDB4
MDMsCi0gICAgMHgwNiwweDcyLDB4ODQsMHg1OSwweDM1LDB4RkQsMHhDQSwweEEyLDB4MDYsMHg2
QSwweEE0LDB4NjEsMHgyQSwweEZELDB4RDUsMHhERSwKLSAgICAweEU1LDB4NjksMHgyNCwweDQ5
LDB4QjgsMHhGQSwweEZFLDB4NUUsMHhFNSwweDYxLDB4MjMsMHg0OSwweDhCLDB4MkEsMHhBRiww
eEI1LAotICAgIDB4ODQsMHg1MSwweDAzLDB4NDEsMHhGOCwweEY4LDB4RDYsMHhGNiwweEM2LDB4
NTksMHgwMiwweDQxLDB4MkQsMHgyRCwweEFBLDB4RTMsCi0gICAgMHg4OCwweDdBLDB4NDQsMHg1
MSwweDJBLDB4MEIsMHgyRiwweEI1LDB4ODgsMHg4MiwweEU1LDB4NjksMHg0QSwweEY4LDB4NTgs
MHhBMCwKLSAgICAweEM5LDB4OEEsMHgwNSwweDZBLDB4MkQsMHgyRiwweEJGLDB4RUYsMHgwQSww
eDkzLDB4NjcsMHg3QSwweEEwLDB4RTIsMHg3RiwweDVELAotICAgIDB4ODgsMHg3QSwweDI2LDB4
NzIsMHgyNiwweDNELDB4QkQsMHgwMSwweDJBLDB4OTMsMHgyNiwweDcyLDB4M0UsMHhCNywweEQ3
LDB4RkYsCi0gICAgMHhFQywweEEzLDB4ODgsMHg3QSwweEY4LDB4NTcsMHg1NSwweDU1LDB4RDMs
MHhERCwweDY4LDB4N0EsMHgwQiwweEZELDB4RDUsMHg1NSwKLSAgICAweDM0LDB4RTYsMHg4OCww
eDdBLDB4MDAsMHhCRiwweEQ1LDB4NTUsMHg5NiwweEY2LDB4QTgsMHg3QSwweDAwLDB4MDIsMHhG
RiwweDU1LAotICAgIDB4QjcsMHhGNiwweDZBLDB4OTMsMHgwMCwweDAwLDB4MDMsMHhCRCwweEQ3
LDB4RjYsMHgzNSwweEU2LDB4ODgsMHhBOCwweEFBLDB4RkQsCi0gICAgMHg5NiwweEVFLDB4NTUs
MHhFRSwweEMwLDB4RTgsMHhBRSwweEZGLDB4OTYsMHhGNiwweDM1LDB4RTYsMHhBRSwweDhBLDB4
N0UsMHhENywKLSAgICAweDc2LDB4RUUsMHgzNCwweEU2LDB4MjgsMHhBRSwweEJGLDB4NTUsMHg3
NiwweEVFLDB4MzUsMHhFRSwweDAwLDB4MDAsMHhBMCwweEZCLAotICAgIDB4OTcsMHhGNiwweDM1
LDB4RTYsMHhBQSwweEEyLDB4QUEsMHhENSwweDk2LDB4RjYsMHgzNSwweEU2LDB4MjIsMHgwMiww
eEY4LDB4REYsCi0gICAgMHg3NiwweEVFLDB4NTUsMHhFRSwweEQ0LDB4NTcsMHhFNSwweDI1LDB4
OTYsMHhGNiwweDU1LDB4RUUsMHhENSwweEZELDB4RUIsMHgyQSwKLSAgICAweDc2LDB4RUUsMHgz
NSwweEU2LDB4RkIsMHhGOCwweDcwLDB4NzAsMHgzNSwweEVFLDB4OTIsMHhENSwweDcwLDB4Nzgs
MHg3OCwweDcwLAotICAgIDB4MTUsMHhFNiwweDkyLDB4RDUsMHgyNSwweDNELDB4QUQsMHhBOSww
eDM1LDB4RTYsMHhGNCwweEU1LDB4MEEsMHhERiwweDg1LDB4MEQsCi0gICAgMHg5NiwweEVFLDB4
MzUsMHhFNiwweEVELDB4ODksMHgyOSwweDJCLDB4NzYsMHhFRSwweDkyLDB4RDUsMHg2QSwweDAw
LDB4MDAsMHgwMCwKLSAgICAweDc1LDB4RUUsMHg1MSwweENELDB4NTUsMHg1NywweEZDLDB4RjAs
MHhCMiwweEQ1LDB4MTAsMHhDNSwweDdCLDB4RUYsMHhBRSwweEE4LAotICAgIDB4NzIsMHhDRCww
eDQ3LDB4NkEsMHg1NywweDVDLDB4NzgsMHhGMCwweDBELDB4QTQsMHgwNiwweDYyLDB4MEIsMHhC
NSwweEQ1LDB4NUYsCi0gICAgMHhBRiwweEJDLDB4ODgsMHg3MiwweDAwLDB4MjIsMHhBRCwweDU1
LDB4Q0YsMHhCQywweDJCLDB4OEIsMHgwMCwweDAyLDB4MEIsMHgwRCwKLSAgICAweDY2LDB4NzIs
MHgyNiwweDZBLDB4QkEsMHg3RSwweDhDLDB4MEMsMHg0NiwweDcyLDB4MjUsMHg2QSwweDIwLDB4
MDgsMHgwMCwweDMwLAotICAgIDB4NjYsMHg3MiwweDI2LDB4NkEsMHg3RiwweEIxLDB4QkIsMHgy
QSwweDY2LDB4NzIsMHgyNSwweDZBLDB4RkQsMHhFRSwweEZFLDB4M0MsCi0gICAgMHg2NiwweDcy
LDB4MjUsMHg2QSwweDZGLDB4QUUsMHhBRiwweDFGLDB4NDYsMHg3MiwweDI2LDB4NkEsMHhCOSww
eDI5LDB4M0IsMHgwMCwKLSAgICAweDQ2LDB4NzIsMHgyNiwweDZBLDB4OTUsMHhDQywweEFCLDB4
ODAsMHg4NywweDdBLDB4MjUsMHg2QSwweDI5LDB4REYsMHg3RCwweDdELAotICAgIDB4QTcsMHg3
QSwweDI1LDB4NkEsMHgyMCwweDJELDB4RDUsMHg1NywweEM3LDB4ODIsMHgyNSwweDZBLDB4QUEs
MHhBOCwweDJGLDB4RkQsCi0gICAgMHhBNywweDgyLDB4NjcsMHg3QSwweEE4LDB4ODAsMHhBOCww
eEJELDB4QTcsMHg4MiwweDg3LDB4N0EsMHgyOCwweEUwLDB4OEEsMHhDOCwKLSAgICAweEM3LDB4
OEEsMHhBNywweDdBLDB4NTUsMHg3RCwweEZELDB4RUYsMHhDNywweDgyLDB4ODYsMHg3QSwweEFF
LDB4QTksMHg4MiwweEEyLAotICAgIDB4QzgsMHg4MiwweDg2LDB4N0EsMHg3RiwweEJCLDB4QkIs
MHgzRSwweEM4LDB4ODIsMHg2NCwweDU5LDB4N0EsMHg2OCwweEE4LDB4MjAsCi0gICAgMHhDOCww
eDhBLDB4NjQsMHg1OSwweDU1LDB4REQsMHhGQSwweEEwLDB4NjcsMHg3MiwweDQ0LDB4NTksMHg1
NSwweEZGLDB4RkEsMHhFMCwKLSAgICAweEE1LDB4NTksMHgyNCwweDQ5LDB4QkYsMHhFOCwweEY4
LDB4NUUsMHg4NSwweDUxLDB4RTIsMHgzOCwweEEwLDB4QUEsMHhGRSwweDVFLAotICAgIDB4NjQs
MHg1MSwweEMyLDB4MzAsMHg2OCwweDVBLDB4NUYsMHg3RCwweDAzLDB4MzksMHhBMiwweDMwLDB4
QjUsMHhFRiwweEFGLDB4MDMsCi0gICAgMHg0NCwweDQxLDB4QzIsMHgzMCwweDgzLDB4QUEsMHg3
RSwweDdBLDB4NDQsMHg0OSwweEMyLDB4MzgsMHhBRSwweEJGLDB4QkQsMHgzRCwKLSAgICAweDY0
LDB4NTEsMHgwMywweDQxLDB4MzUsMHg4RiwweEM4LDB4QTAsMHhBNSwweDU5LDB4MjMsMHg0OSww
eDBGLDB4M0QsMHhCRCwweEFGLAotICAgIDB4NDcsMHg3QSwweEE1LDB4NTksMHhCMiwweDJCLDB4
MjksMHhBNSwweDY3LDB4N0EsMHg0NCwweDUxLDB4RkEsMHg2OCwweDcwLDB4N0EsCi0gICAgMHhB
NSwweDU5LDB4QzIsMHgzOCwweEI4LDB4RkEsMHhGNywweEQ3LDB4QTUsMHg1OSwweDIzLDB4NDEs
MHhGQiwweDZCLDB4RTksMHgwOSwKLSAgICAweEE1LDB4NTEsMHgwMywweDQxLDB4REUsMHhGRiww
eEI1LDB4RkMsMHhBNSwweDUxLDB4MjMsMHg0OSwweEVCLDB4QkIsMHhFOCwweDVGLAotICAgIDB4
NjgsMHg3QSwweDAzLDB4NDEsMHgyRiwweEFELDB4MkQsMHgyNSwweDRCLDB4OTMsMHhBNywweDgy
LDB4QTksMHg4RCwweEFFLDB4NUQsCi0gICAgMHhFOSwweDhBLDB4QTUsMHg1OSwweEZBLDB4Rjgs
MHg3RSwweDVFLDB4NjcsMHg3QSwweEU2LDB4NjEsMHgyQiwweDJCLDB4QUYsMHhCRCwKLSAgICAw
eEM5LDB4OEEsMHgyNywweDcyLDB4MkYsMHhBQSwweEJGLDB4MzUsMHgwOSwweDkzLDB4QTgsMHg4
MiwweDVGLDB4N0EsMHgyRSwweEJGLAotICAgIDB4RTksMHg4QSwweDQ3LDB4N0EsMHg1NSwweDVG
LDB4RjgsMHhFOCwweDY3LDB4N0EsMHhFNSwweDY5LDB4N0YsMHhBQSwweDhBLDB4RjgsCi0gICAg
MHg4NywweDdBLDB4RTUsMHg2OSwweEFELDB4QUIsMHgwMiwweEFCLDB4ODcsMHg3MiwweDI2LDB4
NkEsMHg3OCwweEVBLDB4REYsMHg1QSwKLSAgICAweDRFLDB4QUMsMHg0NywweDZBLDB4MjUsMHhE
NSwweDU1LDB4NTUsMHg1NSwweEVFLDB4ODgsMHg3MiwweDAyLDB4MDMsMHhGNSwweDU1LAotICAg
IDB4MzUsMHhFNiwweDZBLDB4OTMsMHgwMCwweDAwLDB4MEEsMHhCNSwweDU1LDB4RUUsMHhEMyww
eERELDB4QTgsMHhBMiwweEFBLDB4QTksCi0gICAgMHgzNCwweEU2LDB4RjQsMHhFNSwweEEwLDB4
QTgsMHhGQSwweERFLDB4MzUsMHhFNiwweEY0LDB4RTUsMHgwMiwweDhFLDB4MkYsMHhERCwKLSAg
ICAweDM0LDB4RTYsMHhGNCwweERELDB4RkUsMHg1NywweEZDLDB4RUYsMHgzNSwweEU2LDB4RDMs
MHhERCwweDJGLDB4MjksMHhCQiwweEFGLAotICAgIDB4OTYsMHhGNiwweDM0LDB4RTYsMHhBRCww
eEFGLDB4MzcsMHhCNSwweDk2LDB4RjYsMHgzNSwweEU2LDB4ODIsMHhBOCwweDcyLDB4NUYsCi0g
ICAgMHg1NSwweEVFLDB4MzUsMHhFNiwweEMwLDB4MkEsMHhBRCwweEY1LDB4MzUsMHhFNiwweDcy
LDB4RDUsMHg3OCwweEEwLDB4MDAsMHgwMCwKLSAgICAweDM1LDB4RUUsMHg5MiwweEQ1LDB4QjUs
MHhCRCwweEE4LDB4ODAsMHgzNCwweEU2LDB4RjQsMHhERCwweDBCLDB4QkEsMHhERiwweERCLAot
ICAgIDB4OTYsMHhFRSwweDE0LDB4RTYsMHg4QiwweDBCLDB4MEYsMHgyRCwweDk2LDB4RUUsMHg3
NiwweEVFLDB4RTgsMHhGOCwweDhBLDB4QTgsCi0gICAgMHg3NiwweEVFLDB4RDMsMHhERCwweDcw
LDB4QzAsMHgwMCwweDAwLDB4NTUsMHhFRSwweDcyLDB4RDUsMHg3RiwweDdGLDB4N0EsMHhFMCwK
LSAgICAweEYzLDB4REQsMHhGMSwweEM0LDB4NjIsMHgwQSwweDBBLDB4MEEsMHhCMywweERELDB4
RTksMHg4MiwweDU3LDB4RTAsMHgwMCwweDAwLAotICAgIDB4NzIsMHhENSwweDY3LDB4NzIsMHg1
NSwweEZGLDB4QTgsMHg4MCwweENGLDB4QkMsMHhFOSwweDgyLDB4MDksMHgwMywweDAyLDB4Mjgs
Ci0gICAgMHg2NiwweDcyLDB4NDYsMHg3MiwweDI1LDB4RDYsMHg5QywweEJFLDB4NjYsMHg3Miww
eDI1LDB4NzIsMHhBRSwweDg5LDB4QTgsMHhBMCwKLSAgICAweDY3LDB4NzIsMHg0NiwweDcyLDB4
RDksMHhBMywweDY2LDB4QjYsMHg2NiwweDdBLDB4NDYsMHg3MiwweEFGLDB4Q0YsMHg3QywweEIy
LAotICAgIDB4NjYsMHg3MiwweDQ2LDB4NzIsMHhGRSwweEY0LDB4QkQsMHg1RCwweDY2LDB4NzIs
MHg0NiwweDcyLDB4NUUsMHgxNiwweEY4LDB4RjMsCi0gICAgMHg2NywweDdBLDB4MjYsMHg3Miww
eDdGLDB4OEYsMHgyRCwweEE4LDB4NjYsMHg3QSwweDI2LDB4NkEsMHhERiwweEVGLDB4QTgsMHhD
MywKLSAgICAweDY2LDB4NzIsMHgyNSwweDcyLDB4RTIsMHhBQiwweEVBLDB4RUUsMHg2NiwweDcy
LDB4MjUsMHg2QSwweDZGLDB4REYsMHg5QSwweEJBLAotICAgIDB4NjYsMHg3MiwweDI1LDB4NkEs
MHgyRiwweDdGLDB4NjcsMHhBOCwweEM3LDB4ODIsMHgyNiwweDZBLDB4OEEsMHhBRCwweDdELDB4
RkYsCi0gICAgMHhDOCwweDhBLDB4NDYsMHg3MiwweEFBLDB4OEEsMHg5RCwweEQ1LDB4QzcsMHg4
MiwweDY2LDB4N0EsMHgyMiwweDBBLDB4QUEsMHhCNSwKLSAgICAweEM3LDB4ODIsMHhBNywweDgy
LDB4MDksMHgwMiwweDBBLDB4MDcsMHhFOCwweDhBLDB4ODcsMHg3QSwweDdBLDB4RUEsMHgwMCww
eDBBLAotICAgIDB4MDksMHg5MywweDQ2LDB4NzIsMHg3QSwweEVCLDB4RTgsMHg2OCwweDg3LDB4
N0EsMHgyMywweDQ5LDB4RTAsMHhGOCwweEZBLDB4N0UsCi0gICAgMHg2NSwweDUxLDB4QzIsMHgz
MCwweDg4LDB4RkEsMHg1RSwweDU3LDB4MjMsMHg0MSwweDgxLDB4MjgsMHhGOCwweERGLDB4REYs
MHhENSwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4MDIsMHhBQSwweEFGLDB4QkYsMHgwMyww
eDM5LDB4QTIsMHgyOCwweEEyLDB4QTIsMHhFQSwweERFLAotICAgIDB4RTMsMHgzMCwweEEyLDB4
MzAsMHgwMCwweEFBLDB4RkEsMHhGRiwweDg0LDB4NTEsMHhDMiwweDMwLDB4QjcsMHhCRiwweDI1
LDB4MEQsCi0gICAgMHg4NCwweDUxLDB4RTMsMHg0MCwweEUwLDB4QUUsMHhCNiwweEQ3LDB4QTUs
MHg1OSwweDQ0LDB4NTEsMHhGNSwweDJGLDB4MkYsMHhGQiwKLSAgICAweDI3LDB4NzIsMHg4NSww
eDU5LDB4MzUsMHgzNSwweEE3LDB4QTUsMHhFNiwweDYxLDB4MDMsMHg0MSwweEY4LDB4RjgsMHg3
QSwweDdDLAotICAgIDB4NDQsMHg0OSwweEMzLDB4MzgsMHhFRSwweDdBLDB4N0MsMHhCQSwweEM2
LDB4NTksMHhFMywweDM4LDB4MkQsMHgwRCwweDBCLDB4QUIsCi0gICAgMHhDNiwweDU5LDB4NDQs
MHg0OSwweEYwLDB4NUMsMHg3MCwweDdBLDB4NDQsMHg0OSwweEUzLDB4MzgsMHhFOCwweEZFLDB4
NzYsMHhBRSwKLSAgICAweEE1LDB4NTksMHhFMywweDM4LDB4MjUsMHhCNSwweEZELDB4RkIsMHg2
NywweDcyLDB4NDQsMHg0OSwweDgyLDB4RkEsMHg3RiwweDc1LAotICAgIDB4RTUsMHg2MSwweDQ0
LDB4NDksMHhFMCwweEJGLDB4RjUsMHg1NSwweEU2LDB4NjEsMHg0MywweDUxLDB4MkIsMHhCRiww
eEJGLDB4QjUsCi0gICAgMHg2NywweDdBLDB4ODQsMHg1OSwweDBCLDB4MkQsMHgyRiwweDNGLDB4
RTksMHg4QSwweDA2LDB4NzIsMHgyQSwweEJFLDB4REEsMHg1RiwKLSAgICAweEU5LDB4OTIsMHg2
NywweDdBLDB4NzgsMHhFRiwweEFELDB4RTksMHhDOSwweDhBLDB4MjcsMHg3MiwweDVFLDB4RjAs
MHhDMCwweDg4LAotICAgIDB4ODcsMHg3QSwweEM0LDB4NjEsMHhBQiwweDdGLDB4RkEsMHhBOCww
eDQ3LDB4NzIsMHg4NCwweDU5LDB4MDAsMHgwQiwweEZGLDB4NUUsCi0gICAgMHgyNiwweDZBLDB4
ODQsMHg1MSwweDgwLDB4QTAsMHhGQiwweDU1LDB4NjcsMHg3MiwweEE1LDB4NTksMHgyQSwweEZE
LDB4RjUsMHhENSwKLSAgICAweDBDLDB4QTQsMHgyNiwweDZBLDB4MkYsMHhCRCwweEQ1LDB4NTUs
MHgzNCwweEVFLDB4MEEsMHg4QiwweDAyLDB4MEEsMHgyRCwweEQ1LAotICAgIDB4MzUsMHhFRSww
eDMxLDB4Q0QsMHhBMCwweEE4LDB4MjIsMHhBRCwweDE0LDB4RTYsMHhCMywweERELDB4RUEsMHg2
QiwweEEyLDB4ODgsCi0gICAgMHgxNCwweEU2LDB4QjMsMHhERCwweENBLDB4QUYsMHhGQSwweDZB
LDB4RjQsMHhFNSwweEQzLDB4REQsMHgyRSwweDlGLDB4OTcsMHhENSwKLSAgICAweDU1LDB4RTYs
MHhGNCwweERELDB4MEIsMHhBQiwweEFGLDB4RUYsMHgzNCwweEU2LDB4RjQsMHhERCwweDgwLDB4
MkEsMHhBRiwweEQ1LAotICAgIDB4NTUsMHhFRSwweDE0LDB4RTYsMHhBQSwweEFGLDB4QUYsMHhD
RCwweDM0LDB4RTYsMHhGNCwweERELDB4RDYsMHg1RSwweDdBLDB4NjcsCi0gICAgMHgzNCwweEU2
LDB4RjQsMHhERCwweEJGLDB4QUYsMHhCNSwweEZELDB4MTQsMHhFNiwweEY0LDB4REQsMHgyMCww
eDI4LDB4ODIsMHgwMiwKLSAgICAweDk2LDB4RUUsMHgxNCwweEU2LDB4MkYsMHgwRCwweDJELDB4
MjUsMHg3NiwweEZFLDB4OTYsMHhFRSwweDc3LDB4REQsMHg3NSwweDVELAotICAgIDB4OTYsMHhF
RSwweDc2LDB4RUUsMHhGOCwweEMyLDB4OEEsMHhBMCwweDk2LDB4RUUsMHgzNSwweEU2LDB4N0Es
MHg4OCwweEEyLDB4RTIsCi0gICAgMHg3NiwweEVFLDB4OTMsMHhENSwweEQ3LDB4RjgsMHhFMCww
eEZBLDB4MTUsMHhFNiwweEIzLDB4RDUsMHhBQSwweDhCLDB4QUYsMHhENywKLSAgICAweEY0LDB4
REQsMHg5MiwweEQ1LDB4N0EsMHg4MCwweDBBLDB4QUEsMHhEMywweERELDB4Q0MsMHg5QiwweDVB
LDB4RTAsMHg4MCwweDAwLAotICAgIDB4NjYsMHg3MiwweDQ1LDB4NzIsMHhDMywweDJCLDB4MDIs
MHg4MywweDY2LDB4N0EsMHg0NiwweDcyLDB4QkEsMHhCNCwweEZELDB4NDIsCi0gICAgMHg4Nyww
eDdBLDB4NDYsMHg3MiwweEVBLDB4QkEsMHhEQiwweDdGLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhG
RCwweEVELDB4QkEsMHhCQiwKLSAgICAweDY2LDB4NzIsMHgyNSwweDcyLDB4MUEsMHhBQSwweDg4
LDB4ODIsMHg4NywweDdBLDB4NDYsMHg3MiwweEY1LDB4RkUsMHhCMywweEVBLAotICAgIDB4ODYs
MHg3QSwweDQ2LDB4NzIsMHg3RCwweEZELDB4RUUsMHhGQywweDg3LDB4N0EsMHgyNSwweDZBLDB4
RUYsMHhBRiwweEFBLDB4ODgsCi0gICAgMHg2NiwweDdBLDB4NDYsMHg3MiwweDc5LDB4QjgsMHg3
NiwweEMyLDB4NjYsMHg3QSwweDQ2LDB4NzIsMHhFQywweDRDLDB4NkMsMHhDNCwKLSAgICAweDY2
LDB4N0EsMHg0NiwweDcyLDB4MTcsMHg3MiwweDhGLDB4QzYsMHg4NywweDdBLDB4NDYsMHg3Miww
eDc3LDB4N0QsMHhCRSwweEVBLAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg1RiwweDdELDB4
QjUsMHg4QSwweDg3LDB4N0EsMHgyNSwweDcyLDB4RkQsMHhBRiwweEVCLDB4OEEsCi0gICAgMHhB
NywweDgyLDB4NDYsMHg3MiwweDBBLDB4QkYsMHg3RCwweDZGLDB4RTgsMHg4QSwweDQ2LDB4NzIs
MHgwQSwweDBGLDB4QjcsMHgxRiwKLSAgICAweDA5LDB4OEIsMHhFNSwweDY5LDB4NzAsMHg3MCww
eDc4LDB4NzgsMHhBNCwweDU5LDB4QzIsMHgzOCwweEY4LDB4NUUsMHg3QywweDc4LAotICAgIDB4
QzIsMHgzMCwweDgyLDB4MjgsMHg2MCwweEYwLDB4QzgsMHhDMCwweEUyLDB4MzAsMHg4MiwweDIw
LDB4RDUsMHg3RiwweEJGLDB4QUUsCi0gICAgMHhDMiwweDI4LDB4QTIsMHgyOCwweEZGLDB4RkYs
MHg1MiwweDNBLDB4QzIsMHgzMCwweEEyLDB4MjgsMHgwQSwweEEzLDB4N0IsMHg1QywKLSAgICAw
eDAzLDB4MzksMHhBMiwweDI4LDB4OTcsMHhCRCwweDI1LDB4MkQsMHg2NSwweDQ5LDB4RTIsMHgz
OCwweENELDB4RkIsMHg2MiwweDYyLAotICAgIDB4MjQsMHg0MSwweEMyLDB4MzgsMHgzRiwweDI3
LDB4QjcsMHgyRiwweDY0LDB4NTEsMHgwMywweDQxLDB4QTAsMHgwRiwweDAxLDB4ODMsCi0gICAg
MHhDNSwweDU5LDB4MjMsMHg0OSwweDJELDB4RkYsMHg3QSwweDZBLDB4ODUsMHg1MSwweEUzLDB4
MzgsMHg3OCwweDVBLDB4RkIsMHhGRSwKLSAgICAweDI0LDB4NDEsMHhFMiwweDM4LDB4MzIsMHhG
NSwweEI1LDB4QUEsMHg2NSwweDQ5LDB4RTMsMHgzOCwweEEyLDB4QTMsMHhGRiwweDU1LAotICAg
IDB4NjQsMHg0OSwweDAzLDB4NDEsMHhGMywweDVGLDB4REQsMHgzOSwweDY0LDB4NDksMHhFMyww
eDM4LDB4QkUsMHhGRiwweDdBLDB4NjAsCi0gICAgMHgyNCwweDQ5LDB4QTIsMHgzMCwweDAwLDB4
QUIsMHhCNywweEE3LDB4QzUsMHg1OSwweDQ0LDB4NDksMHhFRCwweEFELDB4QUIsMHgwOSwKLSAg
ICAweDg0LDB4NTEsMHgwMiwweDQxLDB4RUEsMHhFOCwweDdBLDB4N0MsMHg4NSwweDUxLDB4RTIs
MHgzOCwweDJGLDB4MkYsMHhCRiwweEFELAotICAgIDB4MjYsMHg3MiwweDg1LDB4NTksMHg5NSww
eEQ1LDB4QUIsMHgwMywweDA2LDB4NkEsMHhDNSwweDY5LDB4MkIsMHg4RCwweEUyLDB4NjAsCi0g
ICAgMHhBOCwweDgyLDB4QzUsMHg2MSwweDAyLDB4ODIsMHhGRCwweDU1LDB4QTgsMHg4MiwweEM1
LDB4NjksMHgwOCwweDhBLDB4QUYsMHhBRCwKLSAgICAweDg4LDB4N0EsMHhBNSwweDYxLDB4RTgs
MHhGRSwweEZBLDB4N0UsMHgwNiwweDZBLDB4NDMsMHg1MSwweEZFLDB4QTgsMHg4MCwweDgyLAot
ICAgIDB4QzYsMHg1OSwweDY0LDB4NTEsMHhCRCwweEFBLDB4ODAsMHg2OCwweEU2LDB4NjEsMHg4
NSwweDUxLDB4QUEsMHhCQSwweEYwLDB4RkQsCi0gICAgMHgwNiwweDZBLDB4ODQsMHg1MSwweDJB
LDB4MkYsMHgzNSwweEI1LDB4NEIsMHg5MywweEU1LDB4NjEsMHgyQiwweEFGLDB4QkQsMHhENSwK
LSAgICAweDcyLDB4RDUsMHhBOCwweDgyLDB4MkYsMHhCNSwweEQ1LDB4NTUsMHhGNCwweEU1LDB4
Q0MsMHhBMywweDAwLDB4MDIsMHgwQiwweDI5LAotICAgIDB4RjQsMHhFNSwweEIzLDB4REQsMHhG
MCwweEQwLDB4NzgsMHhCQiwweEQzLDB4REQsMHg3MiwweEQ1LDB4MjAsMHgyOCwweEEwLDB4Nzgs
Ci0gICAgMHgxNCwweEU2LDB4OTMsMHhENSwweDgyLDB4MkEsMHhBRiwweEI1LDB4MzUsMHhFNiww
eEQzLDB4REQsMHhERiwweEI3LDB4MzcsMHgyRiwKLSAgICAweDU1LDB4RUUsMHhCMywweERELDB4
ODIsMHg4MCwweEE4LDB4N0EsMHgzNSwweEU2LDB4RDMsMHhERCwweEY3LDB4QkUsMHgwMCwweDAz
LAotICAgIDB4MzUsMHhFNiwweEY0LDB4REQsMHhCNSwweEZFLDB4QkUsMHhDMCwweDM1LDB4RTYs
MHhEMywweERELDB4N0EsMHhGQSwweDhBLDB4MjAsCi0gICAgMHg5NiwweEVFLDB4RjQsMHhERCww
eDJELDB4MjUsMHgyRiwweDJGLDB4QjcsMHhGNiwweDk2LDB4RUUsMHhGNywweEZGLDB4NUYsMHhE
RiwKLSAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4RjAsMHhGMCwweEU4LDB4QTAsMHg3NSwweEVF
LDB4QjMsMHhENSwweEU4LDB4N0MsMHg3OCwweDYwLAotICAgIDB4RDMsMHhERCwweDkyLDB4RDUs
MHhBOCwweDdFLDB4RUYsMHg2QSwweEIzLDB4RDUsMHg1MiwweEQ1LDB4MDIsMHhBMiwweEVBLDB4
QUEsCi0gICAgMHhCMywweEQ1LDB4NzIsMHhENSwweDAwLDB4OEEsMHhGRiwweDVGLDB4OTIsMHhE
NSwweDUxLDB4Q0QsMHgwMCwweEFDLDB4N0UsMHhCNywKLSAgICAweDY3LDB4N0EsMHhFNSwweDY5
LDB4ODAsMHgyMiwweDIyLDB4M0QsMHg2NywweDdBLDB4NDcsMHg3MiwweEU4LDB4MjIsMHgzRiww
eDRELAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhFRiwweEE3LDB4QkYsMHhERiwweDQ3LDB4
N0EsMHg2NiwweDcyLDB4N0QsMHhGNywweDU2LDB4NzcsCi0gICAgMHg4NywweDgyLDB4NjYsMHg3
MiwweDVELDB4NUQsMHhENywweERBLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhFQSwweEFGLDB4M0Us
MHhGRSwKLSAgICAweDg2LDB4N0EsMHg2NiwweDcyLDB4N0UsMHhFRCwweENCLDB4QTEsMHg4Niww
eDdBLDB4NDYsMHg3MiwweEJELDB4QUEsMHhBQSwweDJBLAotICAgIDB4ODYsMHg3QSwweDY2LDB4
NzIsMHg3RCwweDc5LDB4RjAsMHhCNCwweDg3LDB4N0EsMHg0NiwweDcyLDB4RUEsMHhGMCwweEVB
LDB4RjgsCi0gICAgMHg4NywweDdBLDB4NDYsMHg3MiwweEZCLDB4RkUsMHhCMiwweDJCLDB4ODcs
MHg3QSwweDQ2LDB4NzIsMHhBRSwweENFLDB4QkUsMHhCRSwKLSAgICAweEE3LDB4ODIsMHg0Niww
eDcyLDB4RkUsMHhCRiwweDlGLDB4MkEsMHhBNywweDgyLDB4NjYsMHg3QSwweDc1LDB4NTcsMHhC
RiwweEZGLAotICAgIDB4ODcsMHg3QSwweDQ1LDB4N0EsMHhBRiwweDJCLDB4MjAsMHhBMCwweEVD
LDB4QUIsMHg4NywweDdBLDB4OTUsMHhCNSwweDJELDB4MEQsCi0gICAgMHhDQiwweEEzLDB4RTUs
MHg2OSwweDdFLDB4N0MsMHg3OCwweDc4LDB4QTUsMHg1OSwweEUyLDB4MzgsMHg1QywweDU4LDB4
NTgsMHhGOCwKLSAgICAweEUzLDB4MzgsMHhBMiwweDI4LDB4N0QsMHg1QiwweEZFLDB4RjgsMHhF
MywweDMwLDB4QTIsMHgyOCwweEJGLDB4OEIsMHhBQSwweEZELAotICAgIDB4RTMsMHgzMCwweEEy
LDB4MjgsMHhCRSwweEY4LDB4RjgsMHhGRSwweEUyLDB4MzAsMHg4MSwweDI4LDB4RkEsMHhGRiww
eDNFLDB4MkQsCi0gICAgMHg0NCwweDQxLDB4QTIsMHgyOCwweEJELDB4MkYsMHgyQiwweDAyLDB4
ODUsMHg0OSwweEUzLDB4MzgsMHg2MywweDdFLDB4NUYsMHg1NywKLSAgICAweDg1LDB4NTEsMHhF
MywweDM4LDB4MjUsMHgyRCwweDBGLDB4QUQsMHg4NSwweDUxLDB4RTIsMHgzOCwweEFBLDB4Qjgs
MHhGOCwweDdBLAotICAgIDB4ODUsMHg1MSwweEUyLDB4MzgsMHg4MCwweEZBLDB4NTUsMHg1NSww
eDI0LDB4MzksMHhDMiwweDM4LDB4QkUsMHhENCwweEJCLDB4NUYsCi0gICAgMHg0NCwweDQxLDB4
RTMsMHgzOCwweDBCLDB4Q0YsMHhENSwweDVGLDB4NDQsMHg0OSwweEUyLDB4MzgsMHg1QywweERB
LDB4RTksMHg5NywKLSAgICAweDg1LDB4NDksMHgwMywweDQxLDB4M0QsMHhCNSwweERGLDB4NUYs
MHg4NSwweDUxLDB4RTMsMHgzOCwweDU4LDB4RkUsMHhBQSwweEFBLAotICAgIDB4NDUsMHg0OSww
eEMzLDB4MzgsMHhGNSwweEZGLDB4RUUsMHgwOCwweEE1LDB4NTEsMHgwMywweDM5LDB4MjksMHhC
RCwweEZELDB4QkUsCi0gICAgMHg4NSwweDUxLDB4MDMsMHg0MSwweDc4LDB4RkEsMHhGQSwweEFB
LDB4RTUsMHg2MSwweDAzLDB4NDEsMHhCRCwweEFELDB4MkYsMHgyQiwKLSAgICAweDQ3LDB4NzIs
MHhBNCwweDU5LDB4MEQsMHhCRiwweEZCLDB4N0YsMHgyNiwweDZBLDB4NjQsMHg1MSwweEY4LDB4
N0MsMHg3RiwweEY1LAotICAgIDB4QzYsMHg2MSwweDQzLDB4NTEsMHg4QSwweEFELDB4ODUsMHgy
RSwweDA2LDB4NkEsMHg4NSwweDU5LDB4QUYsMHhDRCwweDhGLDB4MDIsCi0gICAgMHhFNiwweDY5
LDB4NjQsMHg1MSwweEMwLDB4RTIsMHhGNywweERELDB4QTUsMHg1OSwweDQ0LDB4NDksMHgwQiww
eDc3LDB4REYsMHhGQiwKLSAgICAweEE1LDB4NTksMHg0NCwweDQ5LDB4RjIsMHg3RiwweEZELDB4
NTUsMHhDNiwweDU5LDB4NDQsMHg0OSwweEJELDB4MzUsMHgzNSwweEJCLAotICAgIDB4RTYsMHg1
OSwweDg1LDB4NTksMHhGNiwweEMwLDB4ODAsMHhCMiwweEU2LDB4NjEsMHhBNSwweDU5LDB4RTIs
MHhGNSwweERGLDB4RjksCi0gICAgMHhDOSwweDgyLDB4QTUsMHg1OSwweDJCLDB4QUQsMHhCNyww
eEFGLDB4MTAsMHhDRCwweEE4LDB4ODIsMHgwQiwweDJELDB4QkQsMHhGNSwKLSAgICAweEQzLDB4
REQsMHg0RSwweEI0LDB4MDAsMHgwMCwweDAzLDB4MkQsMHhCMywweERELDB4NzIsMHhENSwweERD
LDB4NTcsMHg5NiwweEZFLAotICAgIDB4RjQsMHhERCwweDcyLDB4RDUsMHgyRCwweEFCLDB4MkIs
MHgyQiwweDM1LDB4RTYsMHhEMywweERELDB4OEIsMHg3QSwweDU1LDB4QkYsCi0gICAgMHhGNCww
eERELDB4MTAsMHhDNSwweEEwLDB4RTAsMHhFMCwweDcwLDB4MTQsMHhFNiwweDEwLDB4QzUsMHgw
MiwweDAyLDB4MEIsMHgyRCwKLSAgICAweDc2LDB4RUUsMHgxNCwweEU2LDB4RTksMHgyQSwweEFB
LDB4RkEsMHg1NSwweEVFLDB4MTQsMHhFNiwweEVBLDB4RjgsMHhGRSwweDdGLAotICAgIDB4Qjcs
MHhGNiwweDE0LDB4RTYsMHhCRCwweDI1LDB4MjUsMHgyRCwweEI3LDB4RjYsMHg3NiwweEVFLDB4
RjgsMHhCQSwweEZBLDB4NUUsCi0gICAgMHg5NiwweEVFLDB4NTUsMHhFRSwweDIwLDB4Q0EsMHhC
QSwweEZELDB4NzYsMHhFRSwweEY0LDB4REQsMHg2MCwweDgwLDB4QTAsMHhBMiwKLSAgICAweDU1
LDB4RUUsMHhCMywweEQ1LDB4NTcsMHg1RiwweDc4LDB4NzgsMHhCMiwweEQ1LDB4NzMsMHhDRCww
eEJBLDB4RkUsMHhFQSwweDMyLAotICAgIDB4OTIsMHhENSwweDcyLDB4Q0QsMHhGOCwweEVDLDB4
NjgsMHhGQSwweDkyLDB4RDUsMHgzMSwweEM1LDB4RkYsMHhGRSwweDdBLDB4NzIsCi0gICAgMHhD
NCwweDYxLDB4NDIsMHg1OSwweDNGLDB4RkYsMHhCRiwweEZGLDB4NjYsMHg3MiwweDY0LDB4NTks
MHgwQSwweEJELDB4RDUsMHg1NSwKLSAgICAweDg2LDB4N0EsMHg0NCwweDU5LDB4ODIsMHgyMiww
eEFGLDB4RjUsMHg4NywweDdBLDB4QzQsMHg2MSwweDBBLDB4ODAsMHhBQSwweEFELAotICAgIDB4
ODYsMHg3QSwweDI2LDB4NzIsMHgyOCwweEFBLDB4QUEsMHhBOSwweDg3LDB4N0EsMHgyNSwweDcy
LDB4QUEsMHhBMiwweEFBLDB4OEIsCi0gICAgMHg4NywweDdBLDB4NjYsMHg3MiwweEExLDB4MEQs
MHhCQiwweDYzLDB4ODYsMHg3QSwweDY2LDB4NzIsMHgyNywweEMwLDB4QjgsMHgyQywKLSAgICAw
eDg3LDB4N0EsMHg2NiwweDcyLDB4QkIsMHgyOCwweDAyLDB4QUMsMHg4NiwweDdBLDB4NDYsMHg3
MiwweEI4LDB4QzAsMHgwOCwweEI4LAotICAgIDB4ODcsMHg3QSwweDI1LDB4N0EsMHhBMiwweEEy
LDB4QzIsMHgyMiwweEE3LDB4N0EsMHg0NiwweDdBLDB4N0EsMHhCRiwweEJCLDB4MkUsCi0gICAg
MHg4NywweDdBLDB4NjYsMHg3QSwweDMyLDB4MDgsMHhCMCwweEQzLDB4QTcsMHg4MiwweDY2LDB4
N0EsMHg2NywweEJFLDB4QkYsMHhBRSwKLSAgICAweDZBLDB4OUIsMHg4NywweDdBLDB4NTUsMHhE
NSwweEQ1LDB4MTUsMHgyRSwweEI0LDB4MDgsMHg4QiwweDJELDB4ODksMHg4MywweDIyLAotICAg
IDB4OEEsMHg5QiwweDA1LDB4NkEsMHg3OCwweDU4LDB4NUMsMHg3QywweEU2LDB4NjEsMHgwMiww
eDQxLDB4RkEsMHg3OCwweDc4LDB4NzgsCi0gICAgMHgyMywweDQxLDB4QTIsMHgyOCwweDc4LDB4
N0EsMHhGQSwweDZBLDB4QzIsMHgzMCwweEEyLDB4MjgsMHg5QiwweDNFLDB4NTcsMHg3RCwKLSAg
ICAweEMyLDB4MjgsMHg4MSwweDI4LDB4RjgsMHhFQSwweEI2LDB4QkIsMHhFMywweDM4LDB4ODIs
MHgyOCwweDM3LDB4QUYsMHhBRiwweEFGLAotICAgIDB4MjQsMHg0MSwweEEyLDB4MzAsMHg4MCww
eEFBLDB4RkYsMHhENywweDQ0LDB4NDEsMHhDMiwweDMwLDB4RjcsMHhGRCwweDhCLDB4QzksCi0g
ICAgMHgyNCwweDQxLDB4QzIsMHgzOCwweDJCLDB4QTksMHhFRiwweDJCLDB4NDQsMHg0OSwweEMy
LDB4MzgsMHg2OCwweEZFLDB4RjcsMHhCRSwKLSAgICAweDI0LDB4NDEsMHhDMiwweDMwLDB4RTUs
MHhCNywweEE3LDB4MEMsMHgwNCwweDQxLDB4QTIsMHgzMCwweEY4LDB4QzAsMHgwMCwweEE4LAot
ICAgIDB4RTMsMHgzMCwweDgyLDB4MzAsMHhBMywweEVGLDB4REYsMHhCRSwweDIzLDB4NDEsMHhD
MiwweDM4LDB4MkIsMHgyOSwweEFCLDB4MkEsCi0gICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweEVC
LDB4NzIsMHg4MiwweDBBLDB4NDQsMHg0OSwweEUzLDB4MzgsMHgwQSwweDgzLDB4QUUsMHg3RiwK
LSAgICAweDg2LDB4NDksMHgwMywweDQxLDB4QUYsMHgyNywweDJELDB4RkQsMHg4NSwweDUxLDB4
MDMsMHg0MSwweEUwLDB4RjgsMHhEQywweDVGLAotICAgIDB4ODUsMHg1MSwweDI0LDB4NDEsMHg4
RCwweEVGLDB4RUIsMHg3RiwweDA2LDB4NjIsMHgwNCwweDQxLDB4MkYsMHgzRiwweEI1LDB4RjUs
Ci0gICAgMHhFNSwweDYxLDB4NDQsMHg0OSwweEU4LDB4RUUsMHhERiwweDU3LDB4QTUsMHg1OSww
eDIzLDB4NDksMHgwQSwweDI4LDB4QkYsMHg5NSwKLSAgICAweEU2LDB4NjEsMHg4NSwweDU5LDB4
M0YsMHhCQSwweEFBLDB4N0YsMHgyNywweDcyLDB4QTUsMHg1OSwweEUwLDB4OEIsMHhBRiwweERE
LAotICAgIDB4RTYsMHg2MSwweDAzLDB4NDEsMHhGRSwweDVFLDB4RjgsMHhBMiwweDg1LDB4NTEs
MHgyMywweDQ5LDB4ODgsMHg4MywweDM1LDB4RkUsCi0gICAgMHg2NCwweDQ5LDB4NDQsMHg0OSww
eEE4LDB4ODEsMHg4MywweDNELDB4QzYsMHg1OSwweDY0LDB4NDksMHhGOSwweEUyLDB4MDEsMHg1
RiwKLSAgICAweEE1LDB4NTksMHg0NCwweDQ5LDB4ODgsMHhGQSwweDlBLDB4NUUsMHhFNSwweDYx
LDB4NDMsMHg0OSwweDgzLDB4QUQsMHhGRiwweEVELAotICAgIDB4NjcsMHg3MiwweEM1LDB4NTks
MHgwOSwweDBCLDB4MkQsMHgyNSwweDI5LDB4OEIsMHg4NywweDdBLDB4MkIsMHhBRiwweEZELDB4
RkQsCi0gICAgMHgxMSwweENELDB4QzgsMHg4MiwweDBCLDB4MjUsMHhCRCwweEQ1LDB4MTQsMHhF
NiwweEQwLDB4QzQsMHhBQSwweEEyLDB4MEEsMHgwOSwKLSAgICAweDU2LDB4RUUsMHhCMywweEQ1
LDB4QUQsMHhBRiwweEFBLDB4MEEsMHg1NSwweEVFLDB4RjMsMHhERCwweERGLDB4QkYsMHhDQSww
eEEwLAotICAgIDB4MTQsMHhFNiwweEYwLDB4QzQsMHg1OCwweDU4LDB4REMsMHhGRSwweDE0LDB4
RTYsMHhGMCwweEM0LDB4MkQsMHgyRiwweDNGLDB4M0YsCi0gICAgMHg3NiwweEVFLDB4MTQsMHhF
NiwweEY4LDB4NkEsMHhGQSwweEVBLDB4OTYsMHhFRSwweDE0LDB4RTYsMHhENywweEQ1LDB4QkQs
MHgyRiwKLSAgICAweDk2LDB4RUUsMHgzNSwweEU2LDB4MDksMHgwQSwweDAyLDB4QTAsMHg5Niww
eEVFLDB4NTUsMHhFNiwweEY4LDB4NUUsMHhERSwweDVGLAotICAgIDB4NzUsMHhFRSwweDU1LDB4
RTYsMHhFRiwweEJGLDB4QkUsMHg1RSwweDc1LDB4RUUsMHg1NSwweEU2LDB4Q0IsMHhFQiwweEZB
LDB4QkQsCi0gICAgMHg3NiwweEVFLDB4RDMsMHhERCwweDdBLDB4QUEsMHhBMCwweEEwLDB4NTUs
MHhFRSwweDkyLDB4RDUsMHg1NywweDVFLDB4RTgsMHg4MCwKLSAgICAweDE0LDB4RTYsMHg5Miww
eEQ1LDB4NzUsMHg1NSwweDVGLDB4N0MsMHhCMiwweEQ1LDB4NTEsMHhDRCwweERFLDB4REUsMHhG
OCwweEVBLAotICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHhCQiwweEZBLDB4QkUsMHg3QSwweDg0
LDB4NjEsMHg0MywweDU5LDB4Q0EsMHg2NiwweDhGLDB4RUQsCi0gICAgMHg0MywweDYxLDB4ODQs
MHg1OSwweERFLDB4REQsMHhGRiwweEZBLDB4QzQsMHg2MSwweDYzLDB4NTksMHgzNSwweEJELDB4
RjUsMHg3RCwKLSAgICAweDQ2LDB4NzIsMHg0MywweDUxLDB4MDIsMHhGRiwweEQ1LDB4NTUsMHg2
NiwweDcyLDB4NDMsMHg1MSwweDAwLDB4MEEsMHhCRiwweDU1LAotICAgIDB4QzcsMHg3QSwweEE1
LDB4NjEsMHhBOCwweEFBLDB4QUEsMHhGNSwweDg3LDB4N0EsMHg0NiwweDcyLDB4QTAsMHhDMiww
eDgwLDB4ODksCi0gICAgMHg4NywweDdBLDB4NjYsMHg3QSwweEJFLDB4QUUsMHhBNiwweEFELDB4
ODcsMHg3QSwweDY2LDB4N0EsMHg5RSwweEJFLDB4QUYsMHg0NywKLSAgICAweDg3LDB4N0EsMHg2
NiwweDdBLDB4QUUsMHg2OCwweDhGLDB4QTAsMHhBOCwweDgyLDB4NjcsMHg3QSwweEZCLDB4QUYs
MHhBRiwweEJCLAotICAgIDB4QTcsMHg4MiwweDY3LDB4N0EsMHhGRCwweEZCLDB4RUEsMHhCRiww
eEE3LDB4ODIsMHg2NywweDdBLDB4QUUsMHhFRiwweEVGLDB4RUUsCi0gICAgMHhDQiwweEEzLDB4
ODcsMHg4MiwweDM1LDB4MkQsMHgwOSwweDAzLDB4MEQsMHhBQywweENDLDB4QUIsMHhGQSwweDVE
LDB4RjYsMHg1NSwKLSAgICAweEFBLDB4QTMsMHhBNCwweDU5LDB4N0MsMHg3OCwweDc4LDB4NzAs
MHhBNSwweDU5LDB4MDIsMHg0MSwweDc4LDB4RkEsMHhGQSwweDZBLAotICAgIDB4MDIsMHg0MSww
eEMyLDB4MzAsMHg3QSwweDVBLDB4NUEsMHg3OCwweEMyLDB4MzAsMHg4MiwweDI4LDB4QUIsMHhB
RiwweDAyLDB4MDgsCi0gICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweEQ1LDB4QjUsMHhBQSwweEE4
LDB4NDQsMHg0MSwweEEyLDB4MjgsMHhERCwweEZELDB4QUYsMHgwMywKLSAgICAweDIzLDB4NDEs
MHhBMSwweDMwLDB4RDcsMHhFRiwweDJBLDB4MDAsMHgyNCwweDQxLDB4RTMsMHgzOCwweEFGLDB4
MEEsMHgwMCwweDIyLAotICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHgwQiwweDBBLDB4MDIsMHg4
MCwweDQ0LDB4NDEsMHhFMywweDM4LDB4QkEsMHg2MCwweDVGLDB4RDcsCi0gICAgMHg2NCwweDQ5
LDB4MjQsMHg0MSwweDY2LDB4Q0IsMHg0MSwweDRELDB4NDQsMHg0MSwweEMzLDB4MzgsMHg3Nyww
eDc3LDB4QkYsMHhBMCwKLSAgICAweDIzLDB4NDEsMHhBMiwweDMwLDB4QjUsMHhCRiwweEFBLDB4
MDAsMHg2NSwweDQ5LDB4RTMsMHgzOCwweEFGLDB4MEEsMHgyRCwweEI1LAotICAgIDB4MjMsMHg0
MSwweEUzLDB4MzgsMHhBOCwweEE4LDB4Q0MsMHg3MiwweDI0LDB4NDEsMHhFMywweDM4LDB4RkYs
MHgyRiwweDJGLDB4M0QsCi0gICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweDhCLDB4RjcsMHhCQSww
eEUwLDB4NjQsMHg0OSwweDAzLDB4NDEsMHg1RCwweEZELDB4QkQsMHgwMywKLSAgICAweDY1LDB4
NTEsMHgwMywweDQxLDB4REYsMHhFOSwweEVGLDB4RTgsMHg0NCwweDQ5LDB4RTMsMHg0MCwweDI3
LDB4RUYsMHhBQiwweDJFLAotICAgIDB4MjMsMHg0OSwweEUzLDB4NDAsMHg4MCwweEUyLDB4NTAs
MHhGOCwweDg1LDB4NTEsMHhFMiwweDQwLDB4QTcsMHhCNywweEJELDB4QjUsCi0gICAgMHhBNSww
eDU5LDB4NDQsMHg0OSwweDAyLDB4QUEsMHhFQSwweDdBLDB4QTUsMHg1OSwweDAzLDB4NDEsMHhB
MiwweEVBLDB4NzcsMHhENSwKLSAgICAweEE1LDB4NTksMHgwMywweDM5LDB4ODIsMHhBRSwweEZG
LDB4RDUsMHg2NCwweDQ5LDB4MDMsMHg0MSwweDJBLDB4MkMsMHgzNiwweDlELAotICAgIDB4NjQs
MHg0OSwweDI0LDB4NDEsMHgyRSwweEI3LDB4REIsMHhFOCwweDg1LDB4NDksMHgyMywweDQxLDB4
MDIsMHhBRSwweEJGLDB4NzcsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEU4LDB4RTgsMHhE
RiwweDdGLDB4ODQsMHg1MSwweDIzLDB4NDEsMHgyNSwweDI1LDB4QkQsMHgyOSwKLSAgICAweDQ3
LDB4NzIsMHhBNCwweDUxLDB4QUQsMHhBNSwweEFGLDB4MkQsMHg4NywweDdBLDB4QzYsMHg2MSww
eDBCLDB4QjUsMHhCRiwweEJBLAotICAgIDB4RTgsMHg4MiwweDY3LDB4N0EsMHgyMiwweDhBLDB4
QTksMHhBOSwweEQzLDB4REQsMHgwOSwweDhCLDB4MDksMHgwRCwweDJELDB4MzUsCi0gICAgMHg1
NSwweEVFLDB4RjQsMHhFNSwweDJELDB4MEQsMHhBMiwweEZGLDB4MzUsMHhFRSwweDkyLDB4RDUs
MHgwMCwweEUwLDB4NzgsMHg3RiwKLSAgICAweDkyLDB4RDUsMHhGMCwweEM0LDB4REMsMHhGRSww
eEY3LDB4RkYsMHhEMywweERELDB4MTAsMHhDNSwweDM1LDB4QkQsMHhCRiwweEJELAotICAgIDB4
NzYsMHhFRSwweEQ0LDB4REQsMHgyMiwweDIzLDB4MEIsMHgwOSwweEI3LDB4RjYsMHg3NiwweEVF
LDB4QjUsMHhBRiwweEJGLDB4QUIsCi0gICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweDdDLDB4NTgs
MHg1QywweDdFLDB4NzUsMHhFRSwweDU1LDB4RTYsMHhCRSwweEYwLDB4RkIsMHhGRSwKLSAgICAw
eDc1LDB4RUUsMHg1NSwweEU2LDB4RkMsMHg1RiwweEZELDB4NTcsMHg3NSwweEVFLDB4MzQsMHhF
NiwweDBGLDB4QUUsMHhBRSwweEZBLAotICAgIDB4NzYsMHhFRSwweDU1LDB4RTYsMHg3RSwweDVB
LDB4RkYsMHhFQiwweDc2LDB4RUUsMHg1NSwweEU2LDB4NzcsMHg3RiwweDVELDB4MDgsCi0gICAg
MHg3NiwweEVFLDB4MTQsMHhFNiwweDU3LDB4QkUsMHhBRSwweDAwLDB4NTYsMHhFRSwweEIzLDB4
RDUsMHg1NywweEJBLDB4ODAsMHgwMCwKLSAgICAweDYzLDB4NTksMHgyMywweDUxLDB4RTIsMHgz
QiwweDNBLDB4M0MsMHg4NCwweDYxLDB4NDMsMHg1OSwweEJFLDB4REIsMHhFOCwweDZBLAotICAg
IDB4ODQsMHg1OSwweDQzLDB4NTksMHhGQSwweEVBLDB4MEEsMHg4MywweDg0LDB4NjEsMHgyMiww
eDUxLDB4RTAsMHg3QSwweERFLDB4QkIsCi0gICAgMHg0MywweDUxLDB4MjIsMHg1MSwweDRCLDB4
OEMsMHg2QywweDFBLDB4NjQsMHg1OSwweDAyLDB4NDksMHhGRiwweDk3LDB4QUYsMHhBMiwKLSAg
ICAweDg0LDB4NjEsMHgyMywweDUxLDB4QUQsMHhCNywweDI3LDB4MkIsMHgyNiwweDcyLDB4ODQs
MHg1OSwweDBBLDB4RDUsMHg1NSwweDU1LAotICAgIDB4NjYsMHg3QSwweDg0LDB4NjEsMHgwMCww
eDBCLDB4RDUsMHg1NSwweDY3LDB4N0EsMHg4NCwweDYxLDB4MDAsMHgwMCwweDAyLDB4QjUsCi0g
ICAgMHhBNywweDgyLDB4NDcsMHg3QSwweEFBLDB4MkEsMHhCQiwweEJELDB4QTcsMHg4MiwweDY3
LDB4N0EsMHhFQiwweEFGLDB4QjcsMHhCQiwKLSAgICAweEE3LDB4ODIsMHg4NywweDdBLDB4RkEs
MHhGMywweDFGLDB4RjUsMHhBQiwweEEzLDB4ODcsMHg4MiwweEQ1LDB4OTUsMHgzRCwweDJELAot
ICAgIDB4RUMsMHhBQiwweDhBLDB4OUIsMHhBOSwweEUzLDB4RkEsMHhGQSwweENCLDB4QTMsMHhB
QiwweEEzLDB4MEQsMHhGQSwweEZELDB4RkQsCi0gICAgMHhBQiwweEEzLDB4MDUsMHg2QSwweDcw
LDB4NzgsMHg3MCwweEUwLDB4QzUsMHg1OSwweEUyLDB4NDAsMHhGRSwweERFLDB4NzgsMHg3OCwK
LSAgICAweDQ0LDB4NDEsMHhDMiwweDM4LDB4NUEsMHg3MiwweEZCLDB4NUYsMHhFMywweDM4LDB4
QTIsMHgzMCwweEVGLDB4Q0QsMHhGRCwweEFBLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhB
RiwweEFGLDB4MjUsMHgwRSwweDY0LDB4NDksMHgwMywweDQxLDB4QTcsMHhBRiwweDhCLDB4MEIs
Ci0gICAgMHg2NSwweDQ5LDB4MDMsMHg0MSwweEZFLDB4N0EsMHhBQSwweDJBLDB4NjUsMHg0OSww
eDAzLDB4NDEsMHhGRiwweEZCLDB4RjgsMHhEQywKLSAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4
NDAsMHhGNywweDlDLDB4QTAsMHg4NSwweDUxLDB4RTMsMHgzOCwweERELDB4QUQsMHhDMiwweDAy
LAotICAgIDB4ODUsMHg1MSwweDAzLDB4NDEsMHhFNywweEI3LDB4RkYsMHgyRiwweDg1LDB4NTEs
MHgyNCwweDQ5LDB4RkIsMHg3QiwweEMyLDB4MDAsCi0gICAgMHg4NCwweDUxLDB4MjQsMHg0OSww
eDdFLDB4QTksMHgyRCwweDJFLDB4NjUsMHg0OSwweEUzLDB4MzgsMHhCNSwweEI3LDB4RkUsMHg1
QywKLSAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4RTAsMHhFMCwweEZCLDB4REQsMHgyNCwweDQx
LDB4RTMsMHgzOCwweDJGLDB4MjYsMHhFRiwweEZFLAotICAgIDB4MjQsMHg0MSwweEUzLDB4Mzgs
MHhGOCwweDlFLDB4RkEsMHhGQSwweEE1LDB4NTEsMHgwMywweDQxLDB4MjksMHgwOSwweDBELDB4
MkQsCi0gICAgMHg4NSwweDUxLDB4RTIsMHgzOCwweDc4LDB4RkEsMHhGOCwweEZBLDB4NjUsMHg1
MSwweEUzLDB4MzgsMHhBRiwweDBGLDB4QkYsMHhGRCwKLSAgICAweDg1LDB4NTksMHgwMywweDQx
LDB4N0UsMHhGRSwweEJGLDB4MkIsMHg2NCwweDQ5LDB4MDMsMHg0MSwweDJELDB4MkUsMHgzMCww
eDJDLAotICAgIDB4ODUsMHg1MSwweDIzLDB4NDEsMHg1OCwweDdBLDB4RTIsMHhGMywweDQ0LDB4
NDksMHgwMywweDQxLDB4RTIsMHgwMCwweDM3LDB4MUIsCi0gICAgMHg0MywweDQxLDB4RTMsMHgz
OCwweEZBLDB4RkIsMHhFQSwweEVFLDB4MjMsMHg0MSwweEMyLDB4MzgsMHgyQSwweEJGLDB4Mjks
MHgyQiwKLSAgICAweDY0LDB4NDksMHgyMywweDQxLDB4QTIsMHhFQiwweEQ1LDB4NUQsMHg0NCww
eDQ5LDB4RTIsMHgzOCwweDI4LDB4RkEsMHhERiwweERGLAotICAgIDB4NDQsMHg0MSwweDAzLDB4
NDEsMHhBRSwweDFGLDB4MkIsMHhBRiwweEE1LDB4NTEsMHg0NCwweDQ5LDB4M0QsMHgwQiwweDJG
LDB4RUQsCi0gICAgMHg0NywweDZBLDB4QTUsMHg1OSwweDJCLDB4MkQsMHg5NSwweEZELDB4Qzgs
MHg4MiwweDA2LDB4NjIsMHhGRiwweEFBLDB4MDMsMHhBNSwKLSAgICAweEM4LDB4ODIsMHg2Nyww
eDdBLDB4MjcsMHgzRiwweDk2LDB4NUYsMHg0RCwweEFDLDB4RTgsMHg4MiwweDM1LDB4QjUsMHhE
NSwweDU1LAotICAgIDB4RjQsMHhFNSwweDhCLDB4OUIsMHgwMCwweDAzLDB4MEIsMHgwOSwweDE1
LDB4RTYsMHgxMCwweEM1LDB4RTgsMHg2MCwweDcwLDB4NzgsCi0gICAgMHgzMSwweENELDB4RjAs
MHhDNCwweEFBLDB4QkYsMHg5NSwweDk1LDB4NTEsMHhDRCwweDEwLDB4QzUsMHgwQSwweDJBLDB4
M0YsMHgzRiwKLSAgICAweDk2LDB4RjYsMHg3MiwweENELDB4MkIsMHgwRCwweDJELDB4MjUsMHhC
NiwweEY2LDB4NzYsMHhFRSwweEFCLDB4RUYsMHgwMiwweEZBLAotICAgIDB4QjcsMHhGNiwweDU1
LDB4RTYsMHhFQiwweEJBLDB4ODAsMHg3RiwweEI3LDB4RjYsMHgzNSwweEU2LDB4RkIsMHg4QSww
eEFBLDB4NTUsCi0gICAgMHhCNiwweEY2LDB4MTQsMHhERSwweEFFLDB4MDgsMHhBQSwweDU1LDB4
OTYsMHhFRSwweDkyLDB4Q0QsMHgwMCwweDAwLDB4QTAsMHg1RiwKLSAgICAweDc2LDB4RUUsMHhG
MCwweEJDLDB4MDAsMHgwMCwweEFBLDB4NUYsMHg5NiwweEY2LDB4RDAsMHhCQywweDAwLDB4ODgs
MHhGRSwweDU1LAotICAgIDB4NzYsMHhFRSwweDhGLDB4QUMsMHgwMCwweEFBLDB4RkYsMHhGNSww
eDM2LDB4RTYsMHgzMiwweEM1LDB4RTgsMHhGRiwweEZGLDB4N0YsCi0gICAgMHg4NCwweDU5LDB4
MjMsMHg1OSwweEI3LDB4QkYsMHgyQiwweDhCLDB4ODQsMHg1OSwweDQ0LDB4NTksMHhGNiwweEFB
LDB4QTgsMHhDMiwKLSAgICAweDg0LDB4NTksMHgyMywweDUxLDB4NkEsMHhGOCwweEFCLDB4RkYs
MHg4NCwweDU5LDB4MjMsMHg1MSwweEYxLDB4RkQsMHg3RiwweEFGLAotICAgIDB4NjMsMHg1OSww
eDIzLDB4NTEsMHg2QSwweDcyLDB4REYsMHg3NywweDg0LDB4NjEsMHgyMywweDUxLDB4N0QsMHhG
NSwweDJELDB4QUYsCi0gICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweEE5LDB4OEEsMHg4OCwweDA4
LDB4QTQsMHg2MSwweDYzLDB4NTksMHhGRSwweEJBLDB4MkYsMHhBRiwKLSAgICAweEE0LDB4NjEs
MHg0MywweDU5LDB4RUEsMHg3QywweEZFLDB4RkYsMHg2NCwweDU5LDB4NDMsMHg1OSwweDFFLDB4
NTgsMHg3RSwweDU3LAotICAgIDB4NDcsMHg3QSwweDIzLDB4NTEsMHgyQiwweEY1LDB4REQsMHg1
NSwweDY3LDB4N0EsMHgyMywweDUxLDB4MDAsMHgwQSwweEY1LDB4NTUsCi0gICAgMHg4NywweDdB
LDB4MjMsMHg1MSwweDAwLDB4MDAsMHgwQSwweDM1LDB4RUIsMHhBQiwweEM4LDB4ODIsMHgyRCww
eDA5LDB4ODMsMHhBMiwKLSAgICAweENCLDB4QTMsMHg2QSwweDlCLDB4QTgsMHhERiwweDVGLDB4
REQsMHhBQiwweEEzLDB4NkEsMHg5QiwweDJBLDB4RUIsMHhFRCwweEE5LAotICAgIDB4QUIsMHhB
MywweDQ2LDB4NzIsMHg2MCwweDdBLDB4NkEsMHhGMCwweDY2LDB4N0EsMHgyMywweDQ5LDB4N0Us
MHg3QSwweDdBLDB4RjgsCi0gICAgMHgyMywweDQ5LDB4QzIsMHgzOCwweDU3LDB4NTcsMHg3Qyww
eEQ4LDB4MDQsMHg0MSwweEMyLDB4MzgsMHhBRCwweDJELDB4QkQsMHg5RiwKLSAgICAweDY0LDB4
NDksMHhFMywweDM4LDB4RjUsMHhGRiwweEVFLDB4Q0EsMHg4NCwweDQ5LDB4RTIsMHgzOCwweDJE
LDB4QUYsMHhCRiwweEY3LAotICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhCMCwweDU4LDB4REUs
MHg1RSwweDQ0LDB4NDksMHgwMywweDM5LDB4RDYsMHg3RiwweDdBLDB4QTIsCi0gICAgMHg0NCww
eDQxLDB4RTIsMHg0MCwweERFLDB4QkUsMHg4QSwweEYyLDB4QTYsMHg1MSwweDQzLDB4NDksMHhB
QiwweEVBLDB4RTMsMHg3OSwKLSAgICAweEM2LDB4NTksMHg0NCwweDQ5LDB4RjUsMHhBRCwweEVE
LDB4OEQsMHhBNSwweDU5LDB4NDQsMHg1MSwweDNFLDB4MUYsMHgxNSwweEY3LAotICAgIDB4MDYs
MHg2QSwweDg1LDB4NTEsMHg1NywweDdBLDB4QzAsMHg4MywweEE1LDB4NTEsMHhFMiwweDM4LDB4
NUMsMHg1QSwweDdBLDB4NjgsCi0gICAgMHgwMywweDM5LDB4QTIsMHgzMCwweEJGLDB4QUQsMHgy
QiwweDJCLDB4MjMsMHg0MSwweEUzLDB4MzgsMHhERSwweDdELDB4QUEsMHg4MiwKLSAgICAweDIz
LDB4NDEsMHhFMiwweDM4LDB4RTcsMHgzQiwweEJCLDB4QTgsMHg2NCwweDUxLDB4MDMsMHg0MSww
eDI5LDB4OEYsMHhENywweERELAotICAgIDB4NjQsMHg1MSwweDAzLDB4NDEsMHg3MCwweEJBLDB4
RUEsMHhBQiwweDY0LDB4NDksMHgwMywweDQ5LDB4REQsMHgyRSwweDNFLDB4MzIsCi0gICAgMHhB
NiwweDU5LDB4NDMsMHg0OSwweEFGLDB4OEYsMHhGQiwweDU3LDB4ODQsMHg0OSwweDIzLDB4NDEs
MHg5NywweEZFLDB4RkIsMHhBQSwKLSAgICAweDY0LDB4NDksMHhFMywweDM4LDB4RUUsMHhFQyww
eDdBLDB4NUEsMHgyMywweDQxLDB4QzIsMHgzMCwweDgwLDB4OEEsMHgyNiwweDJBLAotICAgIDB4
NjQsMHg0OSwweEUyLDB4MzgsMHg3NywweEZELDB4MEUsMHgyQSwweDY0LDB4NDksMHhFMywweDM4
LDB4MjUsMHhCRCwweEFFLDB4RTAsCi0gICAgMHg2NCwweDQxLDB4MDMsMHg0MSwweEFBLDB4QTgs
MHhGRSwweDY3LDB4NjQsMHg0OSwweDAzLDB4MzksMHhENSwweEI3LDB4MkIsMHgyRSwKLSAgICAw
eDY0LDB4NDksMHgyMywweDQxLDB4RkQsMHg3RiwweDU3LDB4NTgsMHg2NCwweDQ5LDB4MDMsMHg0
MSwweEJFLDB4RUEsMHhDMCwweDgxLAotICAgIDB4RTYsMHg2MSwweDQ0LDB4NDksMHgyQiwweEFE
LDB4MjUsMHhGNSwweDY2LDB4NzIsMHhDNSwweDU5LDB4MEYsMHhBRCwweEFGLDB4QUIsCi0gICAg
MHg2NywweDcyLDB4RTUsMHg2OSwweEU4LDB4RUEsMHhGQSwweEUyLDB4QzgsMHg4MiwweDI2LDB4
NkEsMHgwMywweDBELDB4RUQsMHhCNSwKLSAgICAweDcyLDB4RDUsMHhDOCwweDgyLDB4MEQsMHgy
RCwweDM1LDB4QjUsMHhEMywweERELDB4RjAsMHhDNCwweDcwLDB4NTgsMHg3OCwweDVFLAotICAg
IDB4MTAsMHhDNSwweEQwLDB4QkMsMHgyRSwweDJGLDB4QkYsMHgxNSwweDUxLDB4Q0QsMHgxMCww
eEM1LDB4QkIsMHhCRiwweEVELDB4RkQsCi0gICAgMHgxNCwweEU2LDB4MzEsMHhDRCwweDNELDB4
MzUsMHhCNSwweEQ1LDB4RjQsMHhERCwweEFGLDB4QkMsMHgwMCwweEZFLDB4NUUsMHg1NiwKLSAg
ICAweEIzLDB4RDUsMHg4RiwweEI0LDB4MDAsMHhGRiwweDc1LDB4NTUsMHg3MiwweENELDB4MkQs
MHhBQywweDAwLDB4RUEsMHg3NywweDU3LAotICAgIDB4NTIsMHhDRCwweDJELDB4QTQsMHgwMCww
eEZGLDB4NUYsMHg1NSwweDExLDB4QzUsMHgyRSwweEE0LDB4QTAsMHhGRSwweDU1LDB4M0QsCi0g
ICAgMHgzMiwweEM1LDB4NEUsMHhBQywweDdFLDB4NTUsMHhCNSwweDAwLDB4QjMsMHhENSwweDhG
LDB4QUMsMHhCNSwweDBELDB4MEEsMHgyMiwKLSAgICAweEI0LDB4RDUsMHgxMSwweEJELDB4QkQs
MHhFOCwweEY4LDB4NUEsMHg3MiwweEM1LDB4NkYsMHhBQywweEE4LDB4RUEsMHg1QSwweDdFLAot
ICAgIDB4ODQsMHg1OSwweDQzLDB4NTEsMHgyRSwweENFLDB4NzcsMHg2RiwweDY0LDB4NTksMHgy
MywweDUxLDB4QTAsMHg3QSwweDc3LDB4NUYsCi0gICAgMHg2MywweDU5LDB4MjMsMHg1MSwweEJF
LDB4OEYsMHhFRiwweEY1LDB4MjIsMHg1OSwweDYzLDB4NTEsMHhGRiwweEVGLDB4QkIsMHhBQiwK
LSAgICAweDYzLDB4NTksMHgyMywweDUxLDB4RkIsMHhBRiwweDA3LDB4MEYsMHg4NCwweDYxLDB4
NDMsMHg1OSwweDM5LDB4REYsMHhCRSwweEZGLAotICAgIDB4ODQsMHg2MSwweDYzLDB4NTksMHgw
QSwweEFBLDB4OUYsMHhDNywweEE0LDB4NjEsMHg0MywweDU5LDB4NkEsMHg2QywweDVGLDB4RDcs
Ci0gICAgMHg2MywweDU5LDB4MjMsMHg1MSwweDA4LDB4QUIsMHhGOCwweEZBLDB4NDMsMHg1OSww
eDIzLDB4NTEsMHgwQSwweDhBLDB4ODAsMHg1QywKLSAgICAweDIzLDB4NTksMHgwMiwweDQ5LDB4
RDgsMHhGQSwweEJFLDB4RTcsMHgyMywweDUxLDB4MDMsMHg0OSwweEMwLDB4QzgsMHg4OCwweDhB
LAotICAgIDB4QUIsMHhBMywweDQzLDB4NTksMHg5NSwweDM1LDB4MjUsMHgwOSwweENCLDB4QTMs
MHg0QSwweDlCLDB4QzIsMHhGMCwweDU4LDB4N0UsCi0gICAgMHg4QiwweDlCLDB4NDksMHg5Myww
eDI4LDB4MDIsMHgwQiwweEVGLDB4QUMsMHhBMywweDZBLDB4OUIsMHgwRSwweEFGLDB4RkYsMHhE
NSwKLSAgICAweENDLDB4QUIsMHhDNywweDgyLDB4NzgsMHg1MiwweDVBLDB4NUUsMHhBNywweDdB
LDB4NjQsMHg1MSwweDdFLDB4NTgsMHg3OCwweDYwLAotICAgIDB4NDQsMHg0OSwweDAzLDB4NDEs
MHg1OCwweEEwLDB4MjgsMHhCRSwweDIzLDB4NDEsMHhFMywweDM4LDB4NTcsMHhEQywweDlFLDB4
RjgsCi0gICAgMHg4NCwweDUxLDB4MjMsMHg0MSwweDg5LDB4QUIsMHg4QiwweDhCLDB4NDQsMHg0
OSwweEUyLDB4MzgsMHhGRSwweDU4LDB4RjgsMHhCQSwKLSAgICAweDQ0LDB4NDksMHgwMywweDQx
LDB4NzIsMHhFMywweDdCLDB4NTgsMHg2NSwweDQ5LDB4RTMsMHgzOCwweEUyLDB4REEsMHhGRiww
eDdBLAotICAgIDB4MjMsMHg0MSwweDAyLDB4NDEsMHhFMCwweEEwLDB4REUsMHgwOSwweEUzLDB4
NDAsMHgyMywweDM5LDB4QjcsMHgwQiwweEFBLDB4QUQsCi0gICAgMHhDNiwweDYxLDB4MDMsMHg0
MSwweDBELDB4OEQsMHgyRCwweDA5LDB4QTUsMHg1OSwweDAzLDB4NDksMHhFOCwweEZFLDB4RjYs
MHg1NiwKLSAgICAweEM2LDB4NjEsMHgyMywweDQ5LDB4MEIsMHgzRiwweERGLDB4REQsMHg4NSww
eDUxLDB4QzIsMHgzOCwweDc4LDB4NzAsMHg2MCwweDYwLAotICAgIDB4MDMsMHgzOSwweEEyLDB4
MzAsMHgyRiwweDJELDB4QkYsMHg5NywweDIzLDB4NDEsMHhFMywweDM4LDB4MjIsMHgyQiwweEZG
LDB4NTcsCi0gICAgMHg2NCwweDQ5LDB4MDQsMHg0MSwweEZBLDB4QUEsMHg4OSwweEFCLDB4ODUs
MHg1MSwweDIzLDB4NDksMHg1NywweEU3LDB4MkIsMHgwQSwKLSAgICAweEE1LDB4NTksMHg0NCww
eDQ5LDB4RUQsMHg4MiwweDg4LDB4OEIsMHg4NSwweDUxLDB4MDMsMHg0MSwweEZBLDB4NTgsMHhG
RSwweERDLAotICAgIDB4NDMsMHg0OSwweEUyLDB4MzgsMHhFMCwweEVBLDB4RUEsMHhGOCwweDY0
LDB4NDksMHgwMiwweDM5LDB4MEIsMHhBRCwweEZELDB4RjUsCi0gICAgMHgyMywweDQxLDB4MDMs
MHgzOSwweDYwLDB4QzAsMHhGMCwweEFBLDB4MjQsMHg0MSwweEUzLDB4MzgsMHgyQiwweEY4LDB4
NzYsMHg3NiwKLSAgICAweDY1LDB4NDksMHhFMiwweDM4LDB4MEEsMHgyQiwweEFGLDB4QkQsMHhB
NSwweDUxLDB4MjMsMHg0MSwweDdBLDB4RTIsMHhFRiwweDdGLAotICAgIDB4NDQsMHg0MSwweDAz
LDB4MzksMHhERiwweDU3LDB4QTgsMHhFQSwweDg1LDB4NDksMHgwMywweDM5LDB4MkIsMHgyOSww
eEFELDB4RjcsCi0gICAgMHg2NCwweDQ5LDB4MjQsMHg0MSwweDAwLDB4MjAsMHg5NCwweEFGLDB4
QTYsMHg1OSwweDIzLDB4NDEsMHhERCwweDdBLDB4RUEsMHgyRiwKLSAgICAweDg0LDB4NTEsMHg0
NCwweDQ5LDB4RUYsMHhGNSwweEE3LDB4RjgsMHg2NywweDcyLDB4ODQsMHg1MSwweDJELDB4QjUs
MHg1NSwweDU1LAotICAgIDB4QTgsMHg3QSwweEE1LDB4NTksMHhBMCwweEFBLDB4QUQsMHhCNSww
eEM5LDB4ODIsMHgyNiwweDZBLDB4QUQsMHhBQiwweDBGLDB4QjUsCi0gICAgMHhFQywweEEzLDB4
QzgsMHg4MiwweDE1LDB4QjUsMHg5NSwweEQ1LDB4QjMsMHhERCwweDhGLDB4QjQsMHhGQSwweEYz
LDB4RTIsMHhFOSwKLSAgICAweEYwLDB4QzQsMHhBRiwweEJDLDB4MkUsMHgyRiwweEFGLDB4OTUs
MHgzMSwweENELDB4RjAsMHhDNCwweEE5LDB4MEIsMHgyOSwweEY1LAotICAgIDB4NTEsMHhDRCww
eEYwLDB4QkMsMHgzQSwweEFCLDB4NkEsMHg3RiwweDcxLDB4RDUsMHgyRCwweEFDLDB4RjgsMHg1
RSwweDVGLDB4NTcsCi0gICAgMHhDRiwweEJDLDB4MkQsMHhBNCwweEZGLDB4NUYsMHhGNSwweDI1
LDB4OTMsMHhDRCwweDJELDB4QTQsMHg1NSwweDU1LDB4QkYsMHgwMiwKLSAgICAweEIzLDB4RDUs
MHgwRCwweEE0LDB4RDUsMHgyRiwweDAyLDB4MDAsMHhCNCwweEQ1LDB4MTEsMHhCRCwweEE5LDB4
RUMsMHhGQywweDVDLAotICAgIDB4NzMsMHhDRCwweEYwLDB4QjQsMHhBMCwweDNFLDB4M0YsMHgz
NSwweDkzLDB4Q0QsMHhGMSwweEJDLDB4NjAsMHg2MCwweEUwLDB4NzgsCi0gICAgMHgzMiwweEJE
LDB4QjAsMHhCNCwweEIwLDB4QTUsMHhBNywweDY3LDB4RjEsMHhCQywweDhGLDB4QUMsMHg1QSww
eDVDLDB4RDcsMHhGNSwKLSAgICAweDY0LDB4NTEsMHgyMywweDUxLDB4RjAsMHg5NiwweEZGLDB4
RjUsMHg0MywweDUxLDB4MjMsMHg1MSwweDNDLDB4ODQsMHg3NywweEJCLAotICAgIDB4NjQsMHg1
OSwweDIzLDB4NTEsMHhCNywweEVELDB4Q0UsMHhBQiwweDYzLDB4NTksMHgyMywweDUxLDB4RkYs
MHhBRSwweDJFLDB4OEUsCi0gICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweENCLDB4RUEsMHg4RSww
eEZGLDB4ODQsMHg2MSwweDQzLDB4NTksMHgyQiwweEFELDB4RjYsMHg3RiwKLSAgICAweDg0LDB4
NTksMHgyMywweDUxLDB4QjgsMHhGQSwweEVFLDB4N0YsMHg2MywweDU5LDB4MjMsMHg1MSwweEE4
LDB4QkEsMHhFQSwweEU5LAotICAgIDB4NjMsMHg1OSwweDIzLDB4NTEsMHhDRiwweEU1LDB4RkYs
MHg3NywweDIzLDB4NTEsMHgwMywweDQ5LDB4NkMsMHhEOCwweENFLDB4MEYsCi0gICAgMHgyMyww
eDUxLDB4MDMsMHg0OSwweDRELDB4NzIsMHhGRiwweEVCLDB4RTgsMHg4QSwweDAyLDB4NTEsMHg1
NSwweEQ1LDB4QjUsMHgzNSwKLSAgICAweEFCLDB4QTMsMHgyNiwweDcyLDB4MDksMHgwMywweDAy
LDB4MDAsMHg4QiwweEEzLDB4MjksMHg5MywweEEwLDB4RTAsMHhFQSwweERFLAotICAgIDB4OEEs
MHg5QiwweDA5LDB4OTMsMHhGOCwweEZFLDB4REIsMHg3RiwweDhCLDB4OUIsMHgyOSwweDkzLDB4
QUIsMHhBRiwweEFELDB4MkQsCi0gICAgMHg2QSwweDlCLDB4ODcsMHg3QSwweDc4LDB4RDgsMHg3
OCwweDVDLDB4RTgsMHg4MiwweDA2LDB4NkEsMHg2MiwweEUyLDB4RUEsMHhBQSwKLSAgICAweDg4
LDB4N0EsMHgyMywweDQ5LDB4NTUsMHg1NywweDVFLDB4NzgsMHg2NCwweDQ5LDB4RTMsMHg0MCww
eEZCLDB4OEIsMHgyRCwweEJGLAotICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhBRiwweDlFLDB4
RDYsMHg1QywweDIzLDB4NDEsMHhFMywweDM4LDB4QkMsMHhEQywweDVGLDB4NTcsCi0gICAgMHg0
NCwweDQ5LDB4MDMsMHg0MSwweDgyLDB4MDksMHgwRCwweDI3LDB4NDQsMHg0OSwweEUzLDB4Mzgs
MHg3QSwweDc4LDB4N0IsMHg3QSwKLSAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4QTksMHhCRCww
eEZELDB4RjUsMHgyNCwweDQxLDB4RTIsMHgzOCwweDlBLDB4MkYsMHgwRSwweEFBLAotICAgIDB4
RTcsMHg2MSwweDQ0LDB4NDksMHgyRCwweEFELDB4RjUsMHg1NSwweEM2LDB4NjEsMHgyNCwweDQ5
LDB4NUMsMHhGOCwweDJGLDB4QjcsCi0gICAgMHhBNiwweDU5LDB4NDQsMHg0OSwweEQ1LDB4Qjcs
MHg5NiwweEIwLDB4ODUsMHg1MSwweEUzLDB4MzgsMHg3QSwweDc4LDB4NTgsMHg1OCwKLSAgICAw
eDA0LDB4MzksMHhBMiwweDMwLDB4REYsMHhENSwweEZELDB4MzUsMHgyNCwweDQxLDB4QzIsMHgz
MCwweEQ3LDB4OUQsMHhBQSwweEIyLAotICAgIDB4ODUsMHg1MSwweDIzLDB4NDEsMHhFRCwweEY5
LDB4RUIsMHg4MiwweDg1LDB4NTksMHg0NCwweDUxLDB4MDksMHhFRCwweENCLDB4MEEsCi0gICAg
MHg4NSwweDU5LDB4MDMsMHg0OSwweEEyLDB4OEEsMHg1NywweEQ2LDB4NjQsMHg1MSwweEUzLDB4
MzgsMHhGOCwweEVFLDB4N0UsMHg3RSwKLSAgICAweDIzLDB4NDEsMHhDMywweDM4LDB4ODgsMHhC
RSwweEJGLDB4RUQsMHg2NSwweDQ5LDB4RTIsMHgzOCwweEZELDB4RkQsMHhFRiwweDhBLAotICAg
IDB4ODUsMHg0OSwweDAyLDB4MzksMHhENSwweDdGLDB4Q0IsMHhFRiwweDIzLDB4NDEsMHhFMiww
eDM4LDB4RUEsMHg4MCwweEJFLDB4RkIsCi0gICAgMHg0MywweDQxLDB4MDMsMHgzOSwweDM1LDB4
OTUsMHhENSwweERGLDB4NDMsMHg0MSwweEUyLDB4MzgsMHhDOCwweEUwLDB4RjIsMHg2RSwKLSAg
ICAweDIzLDB4MzksMHhFMiwweDM4LDB4QkYsMHg2RCwweEFGLDB4QUQsMHgyMywweDQxLDB4RTIs
MHgzMCwweDA4LDB4MEEsMHhBMywweEFELAotICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHgyRiww
eEQ3LDB4RDUsMHhGRSwweDg1LDB4NTEsMHgyMywweDQ5LDB4QkUsMHhFQSwweDhGLDB4MkYsCi0g
ICAgMHg4NSwweDUxLDB4NDQsMHg0OSwweDAyLDB4MkUsMHgxRiwweDVFLDB4NDcsMHg2QSwweDg0
LDB4NTEsMHg1NSwweEJGLDB4M0QsMHhGNSwKLSAgICAweDY3LDB4NzIsMHhDNSwweDYxLDB4NzUs
MHg5NywweDU4LDB4QTMsMHhBOCwweDgyLDB4MDYsMHg2MiwweDk1LDB4RDUsMHgzNywweDNELAot
ICAgIDB4QzksMHg4MiwweDQ2LDB4NzIsMHgyMiwweEJGLDB4REUsMHhFMCwweDMxLDB4Q0QsMHhD
OSwweDgyLDB4MDMsMHgwOSwweDBELDB4MjUsCi0gICAgMHhGMCwweEM0LDB4NkUsMHhCNCwweEFF
LDB4RkMsMHg1OCwweDcwLDB4RjAsMHhDNCwweDhGLDB4QjQsMHgyQSwweEFCLDB4RUQsMHg1NSwK
LSAgICAweDEwLDB4QzUsMHg2RSwweEI0LDB4RTgsMHg3QSwweEI3LDB4MjUsMHgzMSwweENELDB4
MkUsMHhBQywweDU1LDB4RkQsMHgyQSwweDAwLAotICAgIDB4QjMsMHhENSwweDRFLDB4QUMsMHhC
NSwweEFGLDB4MEEsMHgwQSwweEQ0LDB4RDUsMHgxMSwweEJELDB4MkIsMHhCRiwweERGLDB4N0Us
Ci0gICAgMHhENSwweEQ1LDB4MzIsMHhDNSwweEIwLDB4RUEsMHgyRiwweEY1LDB4NzMsMHhDRCww
eEQwLDB4QjQsMHg1OCwweDVDLDB4NUMsMHg0MCwKLSAgICAweDczLDB4QzUsMHg4RiwweEFDLDB4
MjUsMHgzNSwweEE1LDB4RTUsMHg3MywweEM1LDB4MEQsMHg5QywweEUwLDB4RkEsMHhGRiwweDk1
LAotICAgIDB4RDAsMHhCNCwweEIwLDB4QUMsMHhDMywweDQzLDB4RTIsMHg3QiwweEYxLDB4QjQs
MHg4RiwweEFDLDB4OTUsMHgyRCwweDNGLDB4QTcsCi0gICAgMHg0MywweDUxLDB4MDIsMHg0OSww
eEVGLDB4RjYsMHg4OCwweEUwLDB4NjQsMHg1OSwweDIzLDB4NTEsMHhFRCwweEFCLDB4QUIsMHhG
RiwKLSAgICAweDg0LDB4NTksMHgyMywweDUxLDB4OTcsMHhBRiwweDhFLDB4RUYsMHg2NCwweDU5
LDB4NDMsMHg1OSwweEMyLDB4NzIsMHg1RCwweDMwLAotICAgIDB4QTQsMHg2MSwweDQzLDB4NTks
MHhCRiwweEY5LDB4RUIsMHhDQiwweDY0LDB4NjEsMHg0MywweDUxLDB4RTAsMHg1RSwweEU3LDB4
RjYsCi0gICAgMHg0MywweDU5LDB4NjQsMHg1MSwweDAwLDB4MjAsMHhBOCwweEMwLDB4NjQsMHg1
OSwweDIzLDB4NTEsMHhFOSwweEU3LDB4RkMsMHhGQywKLSAgICAweDQ0LDB4NTksMHgwMywweDQ5
LDB4QzIsMHhGQSwweDZFLDB4N0YsMHgyMywweDUxLDB4MDMsMHg0OSwweEJGLDB4NUUsMHg2OCww
eEE4LAotICAgIDB4NDQsMHg1OSwweDAzLDB4NDksMHhGRCwweEJGLDB4M0QsMHgzRiwweDhCLDB4
QTMsMHg0MywweDU5LDB4MjUsMHgyRCwweDBCLDB4MDMsCi0gICAgMHhDQywweEEzLDB4NEEsMHg5
QiwweEYwLDB4N0MsMHg3QSwweDgyLDB4OEEsMHg5QiwweDI5LDB4OTMsMHg3RiwweDVFLDB4RkYs
MHg3MCwKLSAgICAweDRBLDB4OTMsMHgwOSwweDkzLDB4MEYsMHgwQiwweEZFLDB4QTAsMHg2Qiww
eDlCLDB4MjksMHg5MywweDA5LDB4MkYsMHhENywweERELAotICAgIDB4NEEsMHg5MywweDg3LDB4
N0EsMHg3QywweDdDLDB4NTgsMHg1OCwweEE4LDB4N0EsMHgyNywweDcyLDB4ODgsMHhBQSwweEY4
LDB4NkYsCi0gICAgMHg2NywweDcyLDB4ODUsMHg1OSwweDc4LDB4RTAsMHhBMCwweEEwLDB4RTYs
MHg2MSwweDAzLDB4NDksMHhENSwweDc3LDB4NzgsMHhFMCwKLSAgICAweDY0LDB4NTEsMHhFMiww
eDM4LDB4NzAsMHg3QSwweEVGLDB4RDcsMHgwMywweDM5LDB4QzIsMHgzOCwweDhCLDB4QkEsMHhG
RiwweDVFLAotICAgIDB4ODUsMHg1MSwweEUyLDB4MzgsMHhCRiwweDJELDB4M0QsMHg5NSwweDg1
LDB4NTEsMHhFMiwweDM4LDB4N0EsMHg3OCwweDc4LDB4NUEsCi0gICAgMHgyNCwweDQxLDB4RTMs
MHgzOCwweEE1LDB4RjYsMHg3NiwweEYwLDB4MjQsMHg0MSwweEUzLDB4MzgsMHhBQSwweEFFLDB4
RUQsMHgyNywKLSAgICAweDY1LDB4NTEsMHgwMywweDQxLDB4QkYsMHhBRCwweENELDB4OEYsMHhB
NiwweDU5LDB4MjMsMHg0OSwweEFGLDB4QUIsMHgwQiwweEE1LAotICAgIDB4QzYsMHg1OSwweDY1
LDB4NTEsMHhCOCwweEFFLDB4NkYsMHhCRiwweDY1LDB4NTEsMHhDMiwweDM4LDB4NzAsMHg3MCww
eDVBLDB4NTYsCi0gICAgMHgwMywweDM5LDB4QTIsMHgzMCwweDI3LDB4QkYsMHhENywweEY1LDB4
MDMsMHgzOSwweEEyLDB4MzAsMHgwMCwweDAwLDB4QkYsMHhGNywKLSAgICAweEM2LDB4NjEsMHgy
MywweDQxLDB4ODksMHgwOSwweDBELDB4QTUsMHhFNiwweDYxLDB4ODUsMHg1OSwweEQ3LDB4Nzgs
MHg3MCwweDQ5LAotICAgIDB4ODUsMHg1MSwweDAzLDB4NDEsMHhEQywweDVDLDB4NUUsMHhGRSww
eDI0LDB4NDEsMHhFMywweDM4LDB4NzgsMHg3OCwweDdCLDB4NzYsCi0gICAgMHgyNCwweDQxLDB4
RTMsMHgzOCwweEE5LDB4M0IsMHhERCwweDU3LDB4NjQsMHg0OSwweDIzLDB4NDEsMHhCQiwweDI5
LDB4QzMsMHg4MSwKLSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4RUYsMHhGQSwweEYyLDB4Rjcs
MHgyMywweDQxLDB4RTIsMHgzOCwweDVGLDB4NUIsMHg1OCwweEVDLAotICAgIDB4NDQsMHg0MSww
eEUyLDB4MzgsMHhGMywweEY1LDB4RjUsMHg5NSwweDI0LDB4NDEsMHgwMywweDM5LDB4NzYsMHg4
RCwweEJFLDB4QjksCi0gICAgMHg0NCwweDM5LDB4RTIsMHgzOCwweEZELDB4RkYsMHhENiwweDdF
LDB4MjMsMHgzOSwweEUyLDB4MzgsMHhGNywweDlGLDB4OTMsMHhCQiwKLSAgICAweDY0LDB4NDks
MHgwMywweDM5LDB4RTMsMHhBOSwweDJELDB4QkYsMHg2NCwweDQ5LDB4MjMsMHg0MSwweEFFLDB4
MEIsMHgwRiwweEFCLAotICAgIDB4NjQsMHg0OSwweDIzLDB4NDksMHhCRSwweERGLDB4REYsMHhG
OCwweEM1LDB4NjEsMHg0NCwweDQ5LDB4MkQsMHhCRCwweEY1LDB4QUQsCi0gICAgMHgyNiwweDZB
LDB4NjQsMHg1MSwweDBBLDB4MkQsMHhCNywweDc3LDB4ODgsMHg3QSwweEM1LDB4NjEsMHgzRiww
eEFCLDB4QkYsMHhENSwKLSAgICAweDA5LDB4OEIsMHg2OCwweDdBLDB4RTAsMHg4QSwweDAzLDB4
MEQsMHgxMSwweEM1LDB4RTksMHg4MiwweDM1LDB4MzUsMHgxNSwweDk1LAotICAgIDB4MzUsMHhF
RSwweDZGLDB4QjQsMHg3RiwweEZFLDB4QUEsMHgwMiwweDM1LDB4RTYsMHg2RSwweEI0LDB4NTUs
MHhGRiwweDAyLDB4MDAsCi0gICAgMHhGNCwweERELDB4NkUsMHhCNCwweEI1LDB4QjcsMHgwMCww
eDAwLDB4MTQsMHhFNiwweDUyLDB4Q0QsMHhGNSwweEVCLDB4NUEsMHg2MCwKLSAgICAweEIzLDB4
RDUsMHg1MiwweEM1LDB4MjcsMHhDRiwweEE5LDB4MkIsMHhCNCwweENELDB4MzIsMHhDNSwweDc4
LDB4N0EsMHg3QiwweDZFLAotICAgIDB4NTIsMHhDNSwweEYxLDB4QkMsMHhBQiwweEJBLDB4N0Ms
MHg3QSwweDkzLDB4Q0QsMHhGMSwweEJDLDB4MDIsMHgyQSwweEFELDB4RjUsCi0gICAgMHg3Myww
eENELDB4MEUsMHg5QywweEU4LDB4NjAsMHg3OCwweDdBLDB4QjAsMHhCNCwweENDLDB4OTMsMHgy
NSwweDBELDB4MEIsMHgwMywKLSAgICAweEQwLDB4QjQsMHg5MCwweEFDLDB4RUMsMHg3RSwweDdF
LDB4REUsMHhEMCwweEI0LDB4OTAsMHhBQywweEE5LDB4MjksMHhGNywweEQ3LAotICAgIDB4ODQs
MHg1OSwweDQzLDB4NTEsMHg3NywweEI1LDB4RUIsMHhGQSwweDY0LDB4NTksMHgyMywweDUxLDB4
RjYsMHhCQywweEZBLDB4QjgsCi0gICAgMHg2NCwweDU5LDB4NDMsMHg1OSwweDU1LDB4REYsMHgw
QSwweDExLDB4ODQsMHg2MSwweDQzLDB4NTksMHgyRiwweDgzLDB4RTgsMHhGMCwKLSAgICAweDg0
LDB4NjEsMHg0MywweDU5LDB4RTIsMHhGMiwweERDLDB4RDUsMHg2NCwweDU5LDB4MjMsMHg1MSww
eEVBLDB4RkEsMHhBQiwweEFBLAotICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHhGQSwweDdGLDB4
N0YsMHg2RiwweDQ0LDB4NTksMHhFMiwweDQ4LDB4ODgsMHhFMiwweEVFLDB4OEEsCi0gICAgMHgy
MywweDUxLDB4RTIsMHg0OCwweEVBLDB4RUEsMHg3RSwweEZDLDB4MjMsMHg1MSwweEUyLDB4NDgs
MHhDRSwweDJFLDB4QTgsMHg5QSwKLSAgICAweEU5LDB4OEEsMHgyMywweDUxLDB4RDUsMHg5NSww
eDM1LDB4MjUsMHhDQywweEEzLDB4QzksMHg4QSwweEE5LDB4MkEsMHgyQSwweDAyLAotICAgIDB4
RUMsMHhBQiwweDhCLDB4QTMsMHhBMywweDBBLDB4QUEsMHhGQywweEFCLDB4QTMsMHg0QSwweDkz
LDB4NzgsMHg2OCwweEUwLDB4QUEsCi0gICAgMHg4QiwweDlCLDB4MjksMHg5MywweDVELDB4N0Ys
MHhGRSwweDJBLDB4NkEsMHg5QiwweDJBLDB4OTMsMHg5RiwweDJBLDB4QUEsMHhGMCwKLSAgICAw
eDJBLDB4OTMsMHg0NywweDcyLDB4NzgsMHg3OCwweDc4LDB4NzgsMHg2NywweDcyLDB4MjYsMHg3
MiwweDYwLDB4RjIsMHhBMiwweEZFLAotICAgIDB4NDcsMHg3MiwweDA2LDB4NkEsMHhCQywweEZF
LDB4OEUsMHg0QywweDI2LDB4NkEsMHhBNSwweDU5LDB4NzAsMHg4OCwweDIwLDB4MjAsCi0gICAg
MHhFNiwweDYxLDB4RTMsMHg0MCwweDU3LDB4REUsMHg3OCwweEUwLDB4MjMsMHg0MSwweEMyLDB4
MzgsMHg3RiwweDVFLDB4NTgsMHhGQSwKLSAgICAweDI0LDB4NDEsMHhFMiwweDM4LDB4QjUsMHhC
NSwweDNELDB4MkQsMHg0NCwweDQxLDB4RTMsMHgzOCwweDdBLDB4REUsMHhGNiwweDc4LAotICAg
IDB4MjQsMHg0MSwweEMyLDB4MzgsMHg4QSwweEFCLDB4QkUsMHhERiwweDI0LDB4NDEsMHhFMiww
eDM4LDB4RkYsMHhBRiwweEFCLDB4MDksCi0gICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweEFFLDB4
QkQsMHhFQSwweEFBLDB4QTYsMHg1OSwweDAzLDB4NDEsMHhCNywweEJELDB4QTcsMHgyRCwKLSAg
ICAweEE2LDB4NTksMHg0NCwweDQ5LDB4RkEsMHg3MiwweDdBLDB4NTgsMHg0NCwweDQ5LDB4QTIs
MHgzMCwweDVDLDB4RjgsMHhGQSwweEZCLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhCRiww
eDBELDB4MDcsMHgzNywweDAzLDB4MzksMHhDMywweDMwLDB4RDUsMHhCRSwweDJGLDB4M0EsCi0g
ICAgMHg4NSwweDUxLDB4RTMsMHgzOCwweDJELDB4QjUsMHhCRiwweEFGLDB4RTYsMHg2MSwweDQ0
LDB4NDksMHgwQiwweDJGLDB4RDcsMHg1RCwKLSAgICAweEE2LDB4NTksMHgwNCwweDQxLDB4N0Es
MHhGOCwweDdFLDB4NUYsMHgwNCwweDQxLDB4RTMsMHgzOCwweEU4LDB4NjAsMHg2QiwweDQ5LAot
ICAgIDB4MjMsMHgzOSwweEMzLDB4MzgsMHhGRiwweEJGLDB4RUQsMHhEMywweDY0LDB4NDksMHhF
MywweDM4LDB4RTIsMHhBQiwweEU5LDB4QUQsCi0gICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweDI1
LDB4MkUsMHgyQiwweDdFLDB4NjQsMHg0OSwweEMyLDB4MzAsMHhBOCwweEY4LDB4RkEsMHg3QSwK
LSAgICAweDAzLDB4MzksMHhFMiwweDMwLDB4OTYsMHhFMiwweDU4LDB4N0QsMHgyMywweDM5LDB4
RTMsMHgzOCwweENCLDB4RUQsMHg3NSwweEQ1LAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHhD
MCwweEI3LDB4NzUsMHgzRSwweDIzLDB4NDEsMHhFMywweDM4LDB4ODksMHgwOSwweEFELDB4QkUs
Ci0gICAgMHhBNiwweDUxLDB4MjQsMHg0MSwweEZELDB4QUQsMHgwRiwweEE5LDB4QTUsMHg1MSww
eDQ0LDB4NDksMHg3NSwweEVGLDB4QjAsMHhFOCwKLSAgICAweEU2LDB4NjEsMHg0NCwweDQ5LDB4
NUQsMHhGRiwweDJGLDB4QjUsMHhFNiwweDYxLDB4NjQsMHg1MSwweEJELDB4QkYsMHhBOCwweDAw
LAotICAgIDB4MDcsMHg2QSwweEE1LDB4NTksMHg3RCwweDVELDB4QTcsMHhBQywweDg4LDB4N0Es
MHg4NCwweDU5LDB4RDUsMHhGRiwweEFCLDB4MkQsCi0gICAgMHhFOCwweDgyLDB4MjYsMHg2QSww
eDJELDB4QkQsMHgzNSwweEI1LDB4QUMsMHg5QiwweEU4LDB4ODIsMHgzNSwweDE1LDB4OTUsMHg5
NSwKLSAgICAweDU1LDB4RUUsMHg2RSwweEI0LDB4MDIsMHgwMywweDAxLDB4MDksMHg3NiwweEVF
LDB4MzUsMHhFNiwweEVGLDB4Q0EsMHhFQSwweDdCLAotICAgIDB4NTUsMHhFRSwweEY0LDB4REQs
MHhBOCwweEE4LDB4RTIsMHhGRiwweDM1LDB4RTYsMHgzMiwweEM1LDB4NjAsMHg2OCwweDc4LDB4
REEsCi0gICAgMHhCMywweEQ1LDB4NTIsMHhDNSwweEFCLDB4RTksMHhGQiwweDY4LDB4OTMsMHhD
RCwweDUyLDB4QzUsMHhFOCwweEI4LDB4QUIsMHgyRCwKLSAgICAweDczLDB4Q0QsMHgxMSwweEJE
LDB4N0UsMHhERSwweEZBLDB4RDgsMHgxMSwweEJELDB4NEYsMHhBNCwweDA4LDB4ODAsMHhDMCww
eDYwLAotICAgIDB4QjAsMHhCNCwweEVBLDB4N0EsMHhBMCwweEI3LDB4MzcsMHhBRiwweEIwLDB4
QjQsMHg2RiwweEFDLDB4MDEsMHg4QiwweDIxLDB4MjksCi0gICAgMHhEMSwweEI0LDB4NkYsMHhB
QywweEFCLDB4OEEsMHhDQSwweDc4LDB4RDEsMHhCNCwweDZGLDB4QUMsMHg4QSwweEVBLDB4RkEs
MHg1NSwKLSAgICAweDYzLDB4NTksMHgyMywweDUxLDB4QkEsMHgyNiwweDE3LDB4ODksMHg4NCww
eDU5LDB4NDMsMHg1MSwweEZGLDB4RUQsMHhGQiwweEFFLAotICAgIDB4QTQsMHg2MSwweDY0LDB4
NTksMHhENywweERELDB4MTksMHhERiwweDg0LDB4NjEsMHg0MywweDU5LDB4RUEsMHhGOCwweDdD
LDB4N0UsCi0gICAgMHg2MywweDU5LDB4MjIsMHg1MSwweEFBLDB4NjgsMHhFQSwweEI2LDB4NjMs
MHg1OSwweDIyLDB4NTEsMHg4MiwweEFCLDB4RkIsMHhFRSwKLSAgICAweDQzLDB4NTksMHgyMyww
eDQ5LDB4QTgsMHhGOCwweERFLDB4RDcsMHg0NCwweDU5LDB4MDMsMHg0OSwweEU2LDB4RkUsMHhG
QywweEI2LAotICAgIDB4MjMsMHg1MSwweEUzLDB4NDgsMHhBQiwweEFGLDB4RUEsMHhBQSwweDQ0
LDB4NTksMHhFMiwweDQ4LDB4RkYsMHg1NywweDI3LDB4MEUsCi0gICAgMHg2QSwweDlCLDB4MjMs
MHg1MSwweDI1LDB4MEQsMHgwRCwweDA5LDB4Q0MsMHhBQiwweDhCLDB4OUIsMHhGRiwweDdCLDB4
QUUsMHgwQiwKLSAgICAweENCLDB4QTMsMHg0OSwweDkzLDB4NUUsMHg3NywweEY2LDB4RTAsMHg4
QSwweDlCLDB4MjksMHg5MywweDBBLDB4QUEsMHg2QSwweDZFLAotICAgIDB4OEIsMHhBMywweDA5
LDB4OEIsMHhBOCwweEZFLDB4NTUsMHg1NywweDZBLDB4OUIsMHhDOCwweDhBLDB4QTAsMHhFQSww
eEZGLDB4N0YsCi0gICAgMHhFOSwweDhBLDB4NDYsMHg3MiwweDc4LDB4NTgsMHg3QywweDc4LDB4
ODYsMHg3MiwweDI2LDB4NzIsMHg1NywweEZGLDB4N0YsMHg2RiwKLSAgICAweDI2LDB4NzIsMHgw
NiwweDZBLDB4QzAsMHhFMCwweDFDLDB4OTAsMHg0NywweDcyLDB4MDYsMHg2QSwweEJELDB4MjUs
MHgxRiwweDBFLAotICAgIDB4ODcsMHg3QSwweDg1LDB4NTEsMHg3QSwweEM4LDB4QTIsMHgwOCww
eEU2LDB4NjEsMHhDMywweDM4LDB4NzcsMHg3RiwweDVFLDB4NzgsCi0gICAgMHgyMywweDQxLDB4
QzIsMHgzOCwweDJBLDB4QkYsMHhGRCwweEE1LDB4NDQsMHg0OSwweEUzLDB4MzgsMHg3MCwweEZC
LDB4REYsMHg3RiwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4OUEsMHhGQSwweDdGLDB4QUYs
MHg2NCwweDQ5LDB4RTIsMHgzOCwweEJELDB4M0QsMHhFRCwweEJELAotICAgIDB4NDQsMHg0OSww
eDAzLDB4NDEsMHhCOCwweEJDLDB4NUMsMHg1QywweEE2LDB4NTksMHgwNCwweDQxLDB4MkYsMHhC
RiwweEJELDB4RjUsCi0gICAgMHhBNiwweDU5LDB4NDQsMHg0OSwweDcwLDB4RjgsMHhFOCwweEZE
LDB4NDQsMHg0MSwweEEyLDB4MzgsMHhGRiwweEVFLDB4QkUsMHhGOCwKLSAgICAweEUzLDB4Mzgs
MHhBMiwweDMwLDB4MzcsMHgyQSwweDJBLDB4QUEsMHgyNCwweDQxLDB4QzIsMHgzMCwweEI4LDB4
QjAsMHhBQSwweEI1LAotICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHgyNywweDJGLDB4MkYsMHgz
QSwweDY1LDB4NTEsMHgyNCwweDQxLDB4RkEsMHg3QSwweEZCLDB4N0IsCi0gICAgMHgyNCwweDQx
LDB4RTMsMHgzOCwweEMyLDB4RTMsMHhGQSwweEQ2LDB4MjQsMHg0MSwweEUzLDB4MzgsMHhGNSww
eDdGLDB4QTcsMHgyRiwKLSAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4RTIsMHhFRSwweEJFLDB4
REMsMHg0NCwweDQxLDB4RTMsMHgzOCwweDhELDB4MEYsMHhBRSwweDhELAotICAgIDB4NDQsMHg0
MSwweEUyLDB4MzgsMHg3QSwweEMyLDB4NjAsMHhGRSwweDAzLDB4MzksMHhDMiwweDMwLDB4Nzgs
MHhGNCwweEI3LDB4QkUsCi0gICAgMHgyMywweDM5LDB4QzIsMHgzMCwweEQ5LDB4QkIsMHhBQiww
eEEyLDB4MjQsMHg0MSwweEUzLDB4MzAsMHhGNSwweEZCLDB4RUEsMHgyQiwKLSAgICAweDIzLDB4
MzksMHhDMiwweDMwLDB4MkYsMHhCQSwweEZFLDB4N0UsMHg0NCwweDQxLDB4QzIsMHgzMCwweEZF
LDB4QUEsMHhBQiwweDI1LAotICAgIDB4NjQsMHg0OSwweEUzLDB4MzgsMHgwOSwweEE3LDB4RDUs
MHhGRiwweDg0LDB4NTEsMHgwMywweDQxLDB4ODIsMHhCRCwweDU1LDB4NUQsCi0gICAgMHg4NSww
eDUxLDB4MjMsMHg0MSwweDM2LDB4M0YsMHgzNywweDk1LDB4NDcsMHg3MiwweEE1LDB4NTksMHhF
RiwweEJGLDB4QTksMHgwRCwKLSAgICAweDQ3LDB4NzIsMHhBNSwweDU5LDB4QUIsMHgwRiwweDM3
LDB4RkUsMHg2NywweDdBLDB4RTUsMHg2MSwweDNELDB4QjUsMHg1RSwweEQ3LAotICAgIDB4Njcs
MHg3MiwweEU1LDB4NjEsMHgyQywweDlFLDB4RjMsMHhBQiwweDI5LDB4OEIsMHg2NywweDcyLDB4
MjMsMHhBOSwweEJELDB4QkQsCi0gICAgMHgzNSwweEU2LDB4MjksMHg4QiwweDBCLDB4MDksMHgy
RCwweDJELDB4NTUsMHhFRSwweDE0LDB4RTYsMHhBQSwweEVBLDB4N0YsMHg1NSwKLSAgICAweDM1
LDB4RTYsMHhCMywweEQ1LDB4RTgsMHhGOCwweDZBLDB4N0EsMHhCMywweEQ1LDB4RjEsMHhCQyww
eEIwLDB4M0MsMHhCRSwweEI2LAotICAgIDB4QjQsMHhENSwweDUyLDB4QzUsMHhFOCwweEVBLDB4
RUEsMHg1QSwweDczLDB4Q0QsMHgzMiwweEM1LDB4MkYsMHhFNywweEVFLDB4RkYsCi0gICAgMHg1
MiwweEM1LDB4RDEsMHhCNCwweEUwLDB4QTgsMHhGOCwweDc4LDB4MTEsMHhCRCwweEVFLDB4OUIs
MHhFOCwweEVBLDB4NjgsMHg3QSwKLSAgICAweDZGLDB4QUMsMHhDRCwweDkzLDB4MkQsMHhBRiww
eDJGLDB4MjUsMHhCMCwweEI0LDB4NEYsMHhBNCwweDJCLDB4OEIsMHhFQSwweDdFLAotICAgIDB4
QjAsMHhCNCwweDJFLDB4QTQsMHhGQywweEZFLDB4OTcsMHhCRiwweEIwLDB4QjQsMHg0RiwweEE0
LDB4OUYsMHgzRiwweEFBLDB4NEUsCi0gICAgMHg2MywweDU5LDB4MjIsMHg1MSwweDBCLDB4OEEs
MHhBMCwweEM5LDB4ODQsMHg1OSwweDQzLDB4NTksMHg5RSwweDE3LDB4NkQsMHhGRCwKLSAgICAw
eDgzLDB4NjEsMHgyMywweDUxLDB4RUEsMHg3QSwweEZGLDB4N0QsMHg2MywweDU5LDB4MjMsMHg1
MSwweDhBLDB4MkIsMHhBRSwweEY2LAotICAgIDB4NjMsMHg1OSwweDIzLDB4NTEsMHgzRSwweDc4
LDB4RUUsMHg3NywweDQzLDB4NTEsMHgwMiwweDQ5LDB4QUEsMHhCQywweDlBLDB4MkUsCi0gICAg
MHg0MywweDUxLDB4MDIsMHg0OSwweEFFLDB4MjMsMHhBMCwweDVFLDB4NDQsMHg1MSwweDAzLDB4
NDksMHhGQSwweERDLDB4RDcsMHhGQiwKLSAgICAweDQ0LDB4NTksMHgwMiwweDQ5LDB4RTcsMHhC
NywweDNGLDB4MEEsMHg2NCwweDU5LDB4MjMsMHg1MSwweEE5LDB4QUYsMHhCRSwweERDLAotICAg
IDB4OEIsMHg5QiwweEU2LDB4NjksMHgwRCwweDA5LDB4MDksMHgwQiwweEVDLDB4QUIsMHg4Qiww
eDlCLDB4MEIsMHgyRiwweDg5LDB4MkYsCi0gICAgMHgwRCwweEFDLDB4OEIsMHhBMywweDdBLDB4
N0UsMHhCQSwweDgyLDB4Q0MsMHhBQiwweDQ5LDB4OTMsMHhERiwweDdCLDB4NTgsMHg3OCwKLSAg
ICAweDZBLDB4OTMsMHhDOCwweDgyLDB4QTAsMHhGQSwweEZFLDB4N0YsMHgyOSwweDkzLDB4Qzgs
MHg4QSwweDc4LDB4NTYsMHhERCwweEI3LAotICAgIDB4RTksMHg4QSwweDY2LDB4NzIsMHg1Qyww
eDVDLDB4NTgsMHg1OCwweDY2LDB4NzIsMHgyNiwweDcyLDB4RUEsMHhCQSwweEJBLDB4RkEsCi0g
ICAgMHg0NiwweDcyLDB4MDYsMHg2QSwweEZDLDB4QjgsMHgyOCwweEUyLDB4NjcsMHg3QSwweDI2
LDB4NzIsMHhENSwweEJELDB4RkQsMHgyRCwKLSAgICAweEM4LDB4ODIsMHg0NiwweDcyLDB4QTks
MHgyQiwweDJCLDB4OEEsMHhBNywweDdBLDB4MDMsMHg0OSwweDVFLDB4NzgsMHg3MCwweEUwLAot
ICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHgzOCwweDNBLDB4RkUsMHg2MCwweDAzLDB4NDEsMHhB
MiwweDMwLDB4ODIsMHhFQSwweEZCLDB4N0QsCi0gICAgMHgyNCwweDQxLDB4QzIsMHgzMCwweEE1
LDB4MjUsMHhCRCwweEY1LDB4MjQsMHg0MSwweEMzLDB4MzgsMHgyRSwweEVFLDB4RkUsMHhGRSwK
LSAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4N0MsMHhGQiwweEFELDB4RjUsMHg0NCwweDQ5LDB4
RTMsMHg0MCwweERGLDB4NTcsMHg3RiwweDBBLAotICAgIDB4NjUsMHg0OSwweEUzLDB4NDAsMHgy
RiwweEJELDB4RkYsMHhGQSwweDY0LDB4NDksMHhDMiwweDMwLDB4NzgsMHg2QSwweEZBLDB4RjIs
Ci0gICAgMHgwMywweDM5LDB4QTIsMHgzMCwweDdELDB4NTcsMHg1QywweERBLDB4RTMsMHgzOCww
eEEyLDB4MjgsMHgyRCwweDJELDB4OEQsMHgwQSwKLSAgICAweEE1LDB4NTEsMHgwMywweDM5LDB4
RjUsMHhCNSwweEI1LDB4MzUsMHg4NSwweDUxLDB4MjMsMHg0MSwweERGLDB4NUYsMHg3RSwweDcw
LAotICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHg1RSwweDdBLDB4N0EsMHg1QSwweDI0LDB4Mzks
MHhDMiwweDMwLDB4OEUsMHhCQiwweEZFLDB4REYsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCww
eEJBLDB4NTYsMHhENSwweEY1LDB4MjMsMHgzOSwweEMyLDB4MzAsMHgwMiwweEVBLDB4NzcsMHg3
NywKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QkMsMHhBQSwweDdFLDB4QUIsMHgwMywweDQx
LDB4RTIsMHgzMCwweEZFLDB4RjUsMHg3RCwweDVGLAotICAgIDB4MjQsMHgzOSwweEMzLDB4MzAs
MHgwQiwweEJBLDB4RUIsMHg3RSwweDI0LDB4MzksMHhDMiwweDMwLDB4MkEsMHhBQSwweEUyLDB4
QTksCi0gICAgMHgwMywweDM5LDB4RTMsMHgzMCwweEMwLDB4MDgsMHg4OCwweEVFLDB4MjMsMHg0
MSwweEMyLDB4MzAsMHhCNSwweEJGLDB4M0UsMHhCRSwKLSAgICAweDIzLDB4NDEsMHgwMywweDM5
LDB4NTAsMHhCMCwweEUzLDB4MkYsMHgyMywweDQxLDB4RTMsMHgzOCwweDc2LDB4RTUsMHhFNyww
eEE4LAotICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHgyQiwweDJCLDB4MEQsMHhCNSwweDQ3LDB4
NzIsMHg2NCwweDUxLDB4MjcsMHhGNSwweEY1LDB4NTUsCi0gICAgMHg4NywweDdBLDB4QTUsMHg1
OSwweEU4LDB4ODIsMHgwOSwweEI1LDB4NDcsMHg3MiwweEE1LDB4NTksMHhCRiwweDJGLDB4RDQs
MHg1OCwKLSAgICAweDg3LDB4N0EsMHgwNSwweDYyLDB4QUYsMHgwQSwweDJBLDB4QTksMHhBOCww
eDdBLDB4NjcsMHg3MiwweDNGLDB4QkEsMHhFOCwweDgwLAotICAgIDB4OTMsMHhENSwweEM5LDB4
ODIsMHgwOSwweDBELDB4MkQsMHgyRCwweDE0LDB4RTYsMHg3MiwweENELDB4ODgsMHhBQSwweEZG
LDB4NUQsCi0gICAgMHhGNCwweERELDB4MzIsMHhDNSwweEEwLDB4RTgsMHhFQSwweDdBLDB4OTMs
MHhDRCwweEYxLDB4QkMsMHgwNywweDBGLDB4MDksMHhBOSwKLSAgICAweDczLDB4Q0QsMHgxMSww
eEJELDB4QTAsMHg2MCwweDQwLDB4QTAsMHg3MywweENELDB4RDAsMHhCNCwweDBCLDB4MkYsMHhC
NSwweEZGLAotICAgIDB4NTIsMHhDNSwweEIwLDB4QjQsMHhFOCwweDc4LDB4REUsMHg3NywweDkw
LDB4QUMsMHgyQiwweDdCLDB4RTAsMHhGMCwweDc4LDB4NTgsCi0gICAgMHg3MCwweEFDLDB4OEMs
MHg4QiwweDJGLDB4MkQsMHgwOSwweEFCLDB4OTAsMHhBQywweDBFLDB4OUMsMHhGOCwweERGLDB4
RkYsMHhBNywKLSAgICAweDhGLDB4QUMsMHg0RiwweEE0LDB4MEQsMHg2RCwweEZELDB4RDgsMHhE
MCwweEI0LDB4MEUsMHg5QywweEZGLDB4QkQsMHhCRCwweDJBLAotICAgIDB4ODQsMHg1OSwweDQz
LDB4NTEsMHhENSwweEVELDB4MkUsMHgzQSwweDYzLDB4NTksMHgyMiwweDUxLDB4ODMsMHg0Miww
eDYyLDB4RkUsCi0gICAgMHg0MywweDUxLDB4MDIsMHg0OSwweEE4LDB4MkEsMHgzQSwweEI3LDB4
NDMsMHg1MSwweDIyLDB4NTEsMHgwNCwweDAyLDB4QzIsMHg0QywKLSAgICAweDQzLDB4NTEsMHgw
MiwweDQ5LDB4RkUsMHg3QSwweEJBLDB4QjQsMHg0NCwweDUxLDB4MDIsMHg0OSwweEFCLDB4RUIs
MHhCQSwweEJBLAotICAgIDB4NDMsMHg1MSwweDAzLDB4NDksMHhEQywweEJGLDB4OEIsMHhBNyww
eDQ0LDB4NTksMHgwMywweDQ5LDB4NUUsMHhGRiwweEJGLDB4MjcsCi0gICAgMHg2NCwweDU5LDB4
MDMsMHg1MSwweEFELDB4QUYsMHhBMiwweEVBLDB4QTQsMHg2MSwweDI0LDB4NTEsMHg5NywweDlG
LDB4QkYsMHgxNywKLSAgICAweEFCLDB4QTMsMHg0NywweDdBLDB4MDksMHgwQiwweDBCLDB4MEIs
MHgwRCwweEFDLDB4QUIsMHhBMywweEFELDB4M0QsMHhGNSwweEZELAotICAgIDB4MkQsMHhCNCww
eEVDLDB4QUIsMHg3QSwweEYyLDB4NjUsMHg1NSwweEVDLDB4QUIsMHg0QSwweDkzLDB4N0EsMHg3
QywweEE4LDB4ODAsCi0gICAgMHg4QiwweEEzLDB4QzgsMHg4MiwweDdFLDB4N0UsMHhFMiwweEEw
LDB4MjksMHg4QiwweEM4LDB4ODIsMHhCRiwweDdELDB4REYsMHg3OCwKLSAgICAweEM4LDB4ODIs
MHgyNiwweDZBLDB4RjgsMHg2OCwweDc4LDB4NzgsMHg0NiwweDcyLDB4MjYsMHg2QSwweDYwLDB4
RjAsMHg4QiwweEFFLAotICAgIDB4NDYsMHg3MiwweDI1LDB4NkEsMHhFQiwweEFCLDB4RkIsMHgz
RSwweEM4LDB4ODIsMHgyNiwweDcyLDB4QkQsMHhBRiwweEFGLDB4MEIsCi0gICAgMHhDOSwweDgy
LDB4ODgsMHg4MiwweEJCLDB4NkEsMHg4QSwweDBBLDB4QTgsMHg4MiwweDI2LDB4NkEsMHg2OCww
eDY4LDB4RTgsMHhFMCwKLSAgICAweEU1LDB4NjEsMHhDMiwweDM4LDB4NTYsMHg3RSwweDdDLDB4
NzgsMHhBMiwweDMwLDB4NjEsMHgyOCwweDA4LDB4MkEsMHgzQywweEFFLAotICAgIDB4RTMsMHgz
OCwweEEyLDB4MzAsMHgyRSwweEVELDB4RDUsMHg1RCwweDAzLDB4MzksMHhBMiwweDMwLDB4RTIs
MHhFQiwweDdELDB4NUQsCi0gICAgMHgwMywweDQxLDB4QTEsMHgzMCwweDBFLDB4QUEsMHhFOSww
eEJELDB4NDQsMHg0OSwweEUzLDB4MzgsMHgwRSwweDI1LDB4QkQsMHhGRCwKLSAgICAweDY1LDB4
NDksMHgwMywweDQxLDB4NzAsMHhFMiwweEJGLDB4REQsMHgyNCwweDQxLDB4RTMsMHgzOCwweEUw
LDB4QkUsMHg3NiwweERDLAotICAgIDB4MDMsMHgzOSwweDgyLDB4MjgsMHhFQSwweEZBLDB4RkMs
MHg1OCwweEUzLDB4MzgsMHhBMiwweDMwLDB4MjIsMHgwMywweDBCLDB4Q0QsCi0gICAgMHg2NSww
eDQ5LDB4QzIsMHgzMCwweDJCLDB4MDksMHgyOSwweEVELDB4QTUsMHg1MSwweDAzLDB4NDEsMHhF
OCwweEVBLDB4NkYsMHg1NSwKLSAgICAweDI0LDB4NDEsMHhDMiwweDMwLDB4RTAsMHhFOCwweEVB
LDB4N0UsMHhFMywweDM4LDB4QzIsMHgzMCwweDcyLDB4RkMsMHgzNywweDI5LAotICAgIDB4RTMs
MHgzOCwweEMzLDB4MjgsMHhBQSwweDBCLDB4MDgsMHhBOCwweDAzLDB4MzksMHhDMiwweDMwLDB4
N0UsMHg3QSwweDJBLDB4RUEsCi0gICAgMHhFMywweDM4LDB4QzIsMHgzMCwweEFCLDB4NDIsMHhE
QiwweDk1LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGQSwweEY3LDB4RjcsMHhENCwKLSAgICAweDAz
LDB4MzksMHhFMywweDMwLDB4N0QsMHhENywweEQ2LDB4MkQsMHgwMywweDM5LDB4QzIsMHgzMCww
eDhGLDB4RUUsMHhCNiwweDhBLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGRCwweDU3LDB4
NUUsMHhBOCwweDAzLDB4MzksMHhDMiwweDMwLDB4QkIsMHhCRiwweDJELDB4MkEsCi0gICAgMHg0
NCwweDQxLDB4MDMsMHgzOSwweEJGLDB4RUQsMHgwRCwweDA5LDB4NDQsMHg0MSwweDAzLDB4Mzks
MHhGQSwweDZCLDB4NzgsMHhGQywKLSAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4NzAsMHg2MCww
eEVBLDB4QjIsMHg2NCwweDQ5LDB4MDMsMHg0MSwweDIzLDB4MjksMHhENSwweDU1LAotICAgIDB4
QTUsMHg1OSwweDQ0LDB4NDksMHhBQSwweEU5LDB4RkYsMHhGOSwweEU2LDB4NjEsMHg0MywweDQ5
LDB4QTAsMHhBMywweEJGLDB4QjUsCi0gICAgMHg4OCwweDdBLDB4QTUsMHg1OSwweDJELDB4MkQs
MHgyRCwweDI3LDB4RTgsMHg4MiwweDY3LDB4N0EsMHhFRSwweEU3LDB4QjYsMHhEOCwKLSAgICAw
eDMxLDB4QzUsMHhDOCwweDgyLDB4MkQsMHhBNSwweDM1LDB4QjUsMHg5MiwweEQ1LDB4RDAsMHhC
QywweEEyLDB4OEIsMHgyQiwweEFELAotICAgIDB4NzIsMHhDRCwweEYxLDB4QkMsMHg0MCwweDcy
LDB4RkEsMHhGMiwweDk0LDB4Q0QsMHgxMSwweEJELDB4RTksMHhFMywweEMyLDB4QzIsCi0gICAg
MHg1MiwweEM1LDB4RDAsMHhCNCwweDBBLDB4QkYsMHhGRSwweDdFLDB4MzIsMHhDNSwweDhGLDB4
QUMsMHhFMCwweDcwLDB4N0EsMHg3RiwKLSAgICAweEIwLDB4QjQsMHg0RiwweEE0LDB4MEMsMHg4
RiwweEVGLDB4QUIsMHhCMCwweEFDLDB4RUEsMHg3QSwweERFLDB4OTYsMHgyNiwweDAwLAotICAg
IDB4RjEsMHhCQywweDRFLDB4QTQsMHg1NSwweDM5LDB4MDAsMHgwOCwweDMyLDB4QkQsMHg4Riww
eEFDLDB4RDUsMHhGQSwweEUwLDB4ODAsCi0gICAgMHhGMSwweEJDLDB4NkYsMHhBQywweEZCLDB4
N0YsMHhGRSwweEE4LDB4QjAsMHhBQywweDZGLDB4QUMsMHhGRSwweERFLDB4REYsMHg3OCwKLSAg
ICAweDYzLDB4NTksMHgyMywweDUxLDB4NDIsMHhGRSwweEZFLDB4NzUsMHg0NCwweDU5LDB4MjMs
MHg0OSwweEZBLDB4QTIsMHhCQiwweEY3LAotICAgIDB4NDMsMHg1MSwweDIzLDB4NTEsMHhCNSww
eDZGLDB4OEIsMHg3NiwweDQzLDB4NTEsMHgwMywweDQ5LDB4QTIsMHg3QSwweDdBLDB4NzYsCi0g
ICAgMHg0NCwweDUxLDB4MDIsMHg0OSwweDM1LDB4RDUsMHhCRiwweEFCLDB4NDMsMHg1MSwweDAz
LDB4NDksMHg5QSwweEY3LDB4QTcsMHhBQiwKLSAgICAweDYzLDB4NTksMHgwMywweDUxLDB4REYs
MHg1RiwweEQ3LDB4RkYsMHg2NCwweDU5LDB4MDMsMHg1MSwweDhELDB4QUYsMHhBQSwweDJDLAot
ICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHg1QywweEY2LDB4QkUsMHhBRiwweDY3LDB4N0EsMHg0
MywweDU5LDB4RDUsMHg5NSwweDE1LDB4MTUsCi0gICAgMHhBQiwweEEzLDB4MjksMHg5MywweDI5
LDB4MjksMHgwOSwweDBCLDB4RUMsMHhBQiwweDhCLDB4OUIsMHgyQiwweEJFLDB4RkUsMHg3RiwK
LSAgICAweDBELDB4QUMsMHg2QiwweDlCLDB4MDIsMHgwQSwweERGLDB4NTUsMHhFQywweEFCLDB4
MkEsMHg5MywweDAwLDB4MDAsMHhBQSwweERGLAotICAgIDB4RUMsMHhBQiwweEU4LDB4OEEsMHhB
OCwweEEwLDB4RkEsMHg1RiwweDhCLDB4OUIsMHg4NywweDdBLDB4RjgsMHg3OCwweDU2LDB4NTcs
Ci0gICAgMHhBOCwweDdBLDB4NDYsMHg3MiwweDVDLDB4NUYsMHg1NywweDU3LDB4NDYsMHg3Miww
eDI2LDB4NkEsMHg5OCwweDg4LDB4RjgsMHhERiwKLSAgICAweEM4LDB4ODIsMHgyNiwweDZBLDB4
RjUsMHhGRCwweEI1LDB4MEQsMHhDOCwweDgyLDB4ODcsMHg3QSwweDg5LDB4RTMsMHhBQSwweDdD
LAotICAgIDB4QTgsMHg4MiwweDA1LDB4NkEsMHgwMCwweEU4LDB4N0MsMHg1NywweDg3LDB4N0Es
MHhDNCwweDYxLDB4QTgsMHhFRSwweEQ1LDB4NTUsCi0gICAgMHgyNiwweDZBLDB4MDMsMHg0MSww
eDU4LDB4NzgsMHg3MiwweEUyLDB4RTMsMHg0MCwweDYxLDB4MjgsMHhGRiwweEZFLDB4QjYsMHg5
QywKLSAgICAweEUzLDB4MzgsMHhBMiwweDMwLDB4NTcsMHg3RiwweEZFLDB4OEIsMHhFMywweDM4
LDB4QTIsMHgzMCwweEQ1LDB4QjcsMHhCQSwweEUyLAotICAgIDB4MDMsMHg0MSwweEEyLDB4MzAs
MHgzRCwweEFBLDB4MEIsMHgwMiwweDI0LDB4NDEsMHhDMiwweDM4LDB4QkYsMHhENywweDlFLDB4
MEYsCi0gICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweEE5LDB4MDMsMHgwMywweDgyLDB4NDQsMHg0
OSwweEUzLDB4MzgsMHg1NywweEVBLDB4QUEsMHhBQSwKLSAgICAweDI0LDB4NDEsMHhBMiwweDI4
LDB4N0IsMHg2RiwweEU4LDB4QTAsMHhDMywweDMwLDB4ODEsMHgyOCwweDhGLDB4RUYsMHgyRiww
eDJDLAotICAgIDB4MjQsMHg0MSwweEEyLDB4MzAsMHhCRiwweEI1LDB4M0YsMHgyRiwweDQ1LDB4
NDEsMHhDMywweDM4LDB4RkUsMHhFOCwweEUyLDB4NzIsCi0gICAgMHhFMywweDMwLDB4QTIsMHgz
MCwweEZFLDB4NTUsMHg1RiwweEVCLDB4RTMsMHgzMCwweEEyLDB4MzAsMHhCRiwweEZGLDB4RkYs
MHgyQSwKLSAgICAweEUzLDB4MzgsMHhBMiwweDI4LDB4MEEsMHhCQiwweEZFLDB4QkYsMHgyNCww
eDM5LDB4QzIsMHgzMCwweEZGLDB4RjUsMHhGRCwweDJGLAotICAgIDB4MDMsMHgzOSwweEMyLDB4
MzAsMHhENywweEJGLDB4QkUsMHhFMiwweEUzLDB4MzgsMHhDMiwweDMwLDB4OTgsMHhEOCwweDcy
LDB4RkQsCi0gICAgMHgwNCwweDQxLDB4RTIsMHgzMCwweEZELDB4RkYsMHgyQiwweDBCLDB4NDQs
MHg0MSwweEUzLDB4MzgsMHg3NywweEZGLDB4N0YsMHhGMiwKLSAgICAweDI0LDB4NDEsMHhFMiww
eDM4LDB4REYsMHg3QSwweDIwLDB4MjAsMHgyNCwweDQxLDB4RTIsMHgzOCwweERELDB4QkIsMHhB
QiwweDA4LAotICAgIDB4ODQsMHg0OSwweDAzLDB4NDEsMHhGRiwweDY5LDB4RTMsMHhGRiwweDIz
LDB4NDEsMHhFMywweDM4LDB4QTIsMHhGMCwweEY4LDB4QjgsCi0gICAgMHg0NCwweDQxLDB4MDMs
MHgzOSwweEZGLDB4NUQsMHhBRiwweEEwLDB4MjMsMHg0MSwweEUyLDB4MzgsMHgwMiwweDg5LDB4
QUUsMHgyQSwKLSAgICAweEE1LDB4NTEsMHgyMywweDQxLDB4QTksMHhBRCwweEJELDB4RjUsMHhD
NSwweDU5LDB4NjQsMHg1MSwweDlGLDB4QjAsMHhCRiwweEFELAotICAgIDB4NjcsMHg3MiwweEU2
LDB4NjEsMHgyRCwweDI3LDB4MkIsMHhBOSwweEM4LDB4ODIsMHgyNiwweDZBLDB4RTgsMHg4Miww
eDhBLDB4OUQsCi0gICAgMHg2RSwweEFDLDB4NjcsMHg3MiwweDI1LDB4QjUsMHgzNSwweDk1LDB4
OTMsMHhDRCwweEFGLDB4QkMsMHhCRCwweDJELDB4MEIsMHgwQiwKLSAgICAweDkzLDB4Q0QsMHg2
RiwweEFDLDB4QjAsMHhGOCwweDlDLDB4QkUsMHg5NCwweENELDB4RjEsMHhCQywweEEyLDB4QTIs
MHhFMiwweDU4LAotICAgIDB4NTMsMHhDNSwweEIwLDB4QjQsMHg3QSwweDc4LDB4NjIsMHg3Riww
eDkwLDB4QUMsMHhFRSwweDlCLDB4MjgsMHgwQSwweEEwLDB4N0MsCi0gICAgMHhEMCwweEI0LDB4
Q0QsMHg5MywweDAyLDB4ODAsMHhFQSwweEY1LDB4QjAsMHhCNCwweDBFLDB4OUMsMHhBMCwweEZG
LDB4RDcsMHg3NSwKLSAgICAweDZGLDB4QUMsMHhDQywweDkzLDB4MDAsMHhBQSwweDVGLDB4Nzcs
MHgxMSwweEJELDB4Q0QsMHg5QiwweDAyLDB4QUYsMHhGRCwweEQ1LAotICAgIDB4MTEsMHhCRCww
eDRGLDB4QTQsMHgwMCwweDhBLDB4MkYsMHhENSwweDMyLDB4QzUsMHhCMCwweEI0LDB4N0YsMHgy
QSwweDgwLDB4MDksCi0gICAgMHg0MywweDUxLDB4MjMsMHg1MSwweEFFLDB4QjAsMHgzQywweDk0
LDB4NDMsMHg1MSwweDAzLDB4NDksMHgyRiwweDM2LDB4QkMsMHg1QSwKLSAgICAweDQzLDB4NTEs
MHhFMiwweDQwLDB4MDAsMHhBMiwweEYwLDB4RkUsMHg0NCwweDUxLDB4MDMsMHg0OSwweDU3LDB4
RDUsMHhBNSwweEJELAotICAgIDB4NDMsMHg1MSwweDIzLDB4NDksMHg2NSwweEJGLDB4M0EsMHhF
OCwweDQzLDB4NTEsMHgyMywweDUxLDB4QjUsMHg3RSwweDlCLDB4OUQsCi0gICAgMHg0NCwweDU5
LDB4MjMsMHg1MSwweDBGLDB4QTMsMHg0MCwweDAyLDB4NjQsMHg1OSwweDIzLDB4NTEsMHhCNCww
eEU3LDB4NkYsMHhGNywKLSAgICAweDQzLDB4NTksMHgwMywweDUxLDB4QTIsMHhBMywweEEyLDB4
NjgsMHgyOSwweDkzLDB4NDMsMHg1MSwweEI1LDB4MzUsMHgzNSwweDI1LAotICAgIDB4QUIsMHhB
MywweDRBLDB4OTMsMHgwOSwweEFCLDB4ODIsMHhFQiwweENCLDB4QTMsMHhBOCwweDgyLDB4QTAs
MHhBOCwweEZBLDB4N0UsCi0gICAgMHg0QiwweDlCLDB4ODcsMHg3QSwweDAwLDB4QUEsMHg3RSww
eDU1LDB4MDksMHg4QiwweDY3LDB4NzIsMHgwMCwweEVFLDB4NzcsMHg1NSwKLSAgICAweEU5LDB4
OEEsMHg2NywweDcyLDB4RjAsMHg3RSwweEQ1LDB4NTUsMHg4NywweDdBLDB4NDYsMHg3MiwweEU4
LDB4N0YsMHg1QSwweDVGLAotICAgIDB4ODYsMHg3MiwweDI2LDB4NzIsMHhERCwweDdCLDB4Rjcs
MHhERiwweDg3LDB4NzIsMHgyNSwweDZBLDB4RjcsMHhCQiwweEJCLDB4MkEsCi0gICAgMHhDOCww
eDgyLDB4NDYsMHg3MiwweDhGLDB4MEIsMHhBMiwweDcyLDB4ODcsMHg3QSwweDA1LDB4NkEsMHhD
MCwweDY4LDB4N0UsMHg3NywKLSAgICAweDI2LDB4NkEsMHhDNCwweDYxLDB4NTgsMHhGNiwweEFB
LDB4RUEsMHgwNiwweDZBLDB4QzQsMHg2MSwweDU1LDB4QkYsMHhCQSwweDIwLAotICAgIDB4MDYs
MHg2QSwweEE1LDB4NTksMHg2QiwweEVGLDB4QzgsMHg4MCwweEE1LDB4NTksMHhDMiwweDM4LDB4
NTcsMHg1RSwweDU4LDB4NzgsCi0gICAgMHgwNCwweDQxLDB4ODEsMHgyOCwweDBCLDB4RjUsMHg3
NSwweEZGLDB4MjQsMHg0MSwweEEyLDB4MzAsMHhFQSwweDBCLDB4QUQsMHhCRCwKLSAgICAweDAz
LDB4MzksMHhBMiwweDMwLDB4QkEsMHhGRiwweDVDLDB4NUEsMHg0NCwweDQ5LDB4QzIsMHgzMCww
eEFCLDB4MkIsMHgyOSwweDg5LAotICAgIDB4NjUsMHg0OSwweDI0LDB4NDEsMHg2RSwweDcwLDB4
NzgsMHhCNywweDQ0LDB4NDksMHgwMywweDQxLDB4REQsMHhBRSwweDdDLDB4RjgsCi0gICAgMHg0
NCwweDQxLDB4RTMsMHgzOCwweDc2LDB4QkYsMHhBRiwweDJGLDB4MDQsMHgzOSwweEEyLDB4Mjgs
MHhERSwweEY4LDB4N0MsMHg1QywKLSAgICAweDI0LDB4NDEsMHg4MiwweDI4LDB4MEIsMHgyQiww
eEU3LDB4RDUsMHgwNCwweDQxLDB4QTIsMHgyOCwweEUwLDB4QjgsMHhCRiwweEJELAotICAgIDB4
MDQsMHgzOSwweEMzLDB4MzAsMHhCRiwweEVBLDB4NUEsMHg1NywweDAzLDB4MzksMHhBMiwweDI4
LDB4QjMsMHhGQSwweEY3LDB4RkYsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEJELDB4Qjcs
MHgzRiwweEFGLDB4MjQsMHg0MSwweEMzLDB4MzAsMHgyMiwweDAyLDB4Q0EsMHhGRiwKLSAgICAw
eDAzLDB4MzksMHhDMiwweDMwLDB4NzAsMHg1MCwweEVFLDB4QjcsMHgwMywweDM5LDB4QzMsMHgz
MCwweEI1LDB4M0UsMHhGRSwweDlELAotICAgIDB4NjUsMHg0OSwweDAzLDB4MzksMHhGRCwweEFG
LDB4MkQsMHgyOSwweDY0LDB4NDksMHgwMywweDM5LDB4NUYsMHhFRSwweEU4LDB4NzAsCi0gICAg
MHg2NSwweDQ5LDB4MDIsMHg0MSwweEFBLDB4QUEsMHg4MiwweEE5LDB4NjQsMHg0OSwweEUzLDB4
MzgsMHhBQywweEVBLDB4RUUsMHg1RSwKLSAgICAweDQ0LDB4NDksMHhDMiwweDMwLDB4QTIsMHhB
RSwweEQ2LDB4NUYsMHgyMywweDQxLDB4QzEsMHgzMCwweDI4LDB4QTAsMHg3QSwweEZELAotICAg
IDB4NDQsMHg0MSwweEMyLDB4MzAsMHhBMCwweEVCLDB4QkYsMHhCNSwweDQ0LDB4NDEsMHgwMyww
eDM5LDB4OUIsMHhEOSwweDZCLDB4RUQsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEEwLDB4
QUIsMHhCOSwweEZCLDB4QTUsMHg1OSwweDAzLDB4NDEsMHgwQiwweEFFLDB4MkIsMHgwNSwKLSAg
ICAweDI2LDB4NkEsMHhBNSwweDU5LDB4MkQsMHgyNSwweDM5LDB4M0IsMHg2NywweDcyLDB4RTUs
MHg2MSwweDk3LDB4OTYsMHhGQywweEYwLAotICAgIDB4NkIsMHg5MywweDI2LDB4NkEsMHgzNSww
eDNELDB4MTUsMHgxRCwweDcyLDB4Q0QsMHhEMCwweEJDLDB4MDMsMHgwMSwweDAxLDB4ODEsCi0g
ICAgMHg1MywweEM1LDB4NkYsMHhBQywweDJFLDB4MkUsMHgyNywweEZELDB4OTMsMHhDRCwweDRF
LDB4QTQsMHhFMCwweEU4LDB4N0UsMHg1NywKLSAgICAweEQwLDB4QjQsMHhBRCwweDkzLDB4QTAs
MHhFQSwweDdGLDB4NUYsMHgyRSwweEE0LDB4OEMsMHg4QiwweEY4LDB4NUYsMHg3NywweDc1LAot
ICAgIDB4RUUsMHg5QiwweDhDLDB4OEIsMHgwQiwweEFELDB4QTUsMHg5RCwweDBFLDB4OUMsMHhB
RCwweDkzLDB4MkEsMHhGNSwweDJELDB4RkYsCi0gICAgMHgyRSwweDlDLDB4OEMsMHg4QiwweDhB
LDB4QTIsMHhGQSwweDdBLDB4MkUsMHhBNCwweDZDLDB4ODMsMHgyRiwweDM3LDB4MzcsMHg5NSwK
LSAgICAweDhGLDB4QUMsMHgyRiwweEE0LDB4QkYsMHgyQiwweDI3LDB4MkIsMHgzMiwweEM1LDB4
OEYsMHhBQywweERELDB4QUIsMHgyQiwweDBCLAotICAgIDB4NDMsMHg1MSwweDIzLDB4NTEsMHhG
NiwweDM5LDB4OTYsMHhENSwweDIzLDB4NTEsMHgwMiwweDQ5LDB4QzgsMHg2QSwweDc4LDB4NTQs
Ci0gICAgMHgyMywweDQ5LDB4RTIsMHg0OCwweEU3LDB4MkYsMHg4MiwweDJBLDB4NjQsMHg1MSww
eDAyLDB4NDksMHhFRCwweEVELDB4QUYsMHhDRiwKLSAgICAweDQ0LDB4NTEsMHgwMiwweDQ5LDB4
ODAsMHhCMCwweEZGLDB4QTYsMHg0NCwweDU5LDB4MjIsMHg0OSwweDNGLDB4MjksMHg4MSwweEI4
LAotICAgIDB4NDQsMHg1OSwweDIzLDB4NTEsMHgwMCwweDIwLDB4REIsMHhGMSwweDY0LDB4NTks
MHgwMywweDUxLDB4QTIsMHhCMiwweDdBLDB4RkIsCi0gICAgMHg0MywweDU5LDB4MDMsMHg1MSww
eERFLDB4RkUsMHhGNiwweDc1LDB4NkEsMHg5QiwweDQzLDB4NTksMHgyNSwweDI1LDB4MjUsMHgy
RCwKLSAgICAweDZBLDB4OUIsMHhDOCwweDgyLDB4MDAsMHg4MCwweEU4LDB4N0EsMHgyOSwweDkz
LDB4NjcsMHg3MiwweEU4LDB4NUUsMHg1NywweDVGLAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIs
MHhGQywweDcyLDB4RUUsMHg5RSwweDg3LDB4N0EsMHg0NiwweDcyLDB4QUIsMHhCRSwweDNBLDB4
QkUsCi0gICAgMHg4NywweDdBLDB4NDYsMHg3MiwweEJBLDB4QkMsMHhFRiwweEJGLDB4ODcsMHg3
QSwweDQ2LDB4NzIsMHg3QSwweERBLDB4OUUsMHg3RSwKLSAgICAweDY3LDB4N0EsMHg0NiwweDcy
LDB4NTcsMHg3QSwweEI1LDB4QUQsMHhBOCwweDdBLDB4NDYsMHg3MiwweDM1LDB4MkYsMHhBRiww
eEZCLAotICAgIDB4QTgsMHg3QSwweDA1LDB4NkEsMHg2MCwweDVGLDB4NTcsMHg1NywweDA1LDB4
NkEsMHhDNSwweDYxLDB4QzAsMHg5OCwweEVBLDB4NUYsCi0gICAgMHgwNSwweDZBLDB4QzUsMHg2
MSwweEUyLDB4QkUsMHhCOCwweEZGLDB4MjYsMHg2QSwweEU1LDB4NjksMHhBRiwweDBBLDB4MEQs
MHgwRiwKLSAgICAweDQ3LDB4NzIsMHgwNiwweDZBLDB4N0IsMHhBQiwweDhGLDB4MkEsMHgyNiww
eDZBLDB4RTMsMHgzOCwweDVBLDB4N0MsMHg3OCwweEUwLAotICAgIDB4QzIsMHgzOCwweDgxLDB4
MjgsMHhGMCwweEZDLDB4RkMsMHhGQywweDAzLDB4MzksMHg4MSwweDI4LDB4MkQsMHhBRCwweEE5
LDB4QUIsCi0gICAgMHgwMywweDM5LDB4QTIsMHgzOCwweDdBLDB4RTgsMHhGQSwweEFBLDB4NjUs
MHg0OSwweEMyLDB4MzgsMHhFOSwweENCLDB4Q0IsMHhFMywKLSAgICAweDQ0LDB4NDEsMHhDMiww
eDM4LDB4MEYsMHhCRiwweEY3LDB4RDcsMHgyNCwweDQxLDB4QzIsMHgzMCwweDAwLDB4RkEsMHg3
QSwweDU1LAotICAgIDB4MjMsMHg0MSwweEMzLDB4MzAsMHgyQiwweEFCLDB4NjMsMHg3QiwweEUz
LDB4MzgsMHg4MiwweDIwLDB4RkMsMHhGRSwweDVFLDB4NUUsCi0gICAgMHhDMywweDI4LDB4NjEs
MHgyMCwweEZFLDB4QkUsMHgzRiwweDJGLDB4MDMsMHgzMSwweDgxLDB4MjgsMHhBRiwweEVCLDB4
RjgsMHhGQywKLSAgICAweEMyLDB4MjgsMHg2MSwweDIwLDB4MkEsMHgyMiwweDJCLDB4QUEsMHhF
MywweDM4LDB4QzIsMHgyOCwweDVGLDB4REQsMHg5NSwweEZELAotICAgIDB4RTMsMHgzMCwweEMy
LDB4MzAsMHgwMiwweEE5LDB4OTMsMHg1RSwweDAzLDB4MzksMHhDMywweDMwLDB4N0UsMHgzNyww
eEFGLDB4QUQsCi0gICAgMHgwNCwweDM5LDB4QzMsMHgzMCwweEY1LDB4N0YsMHhBRiwweERGLDB4
RTMsMHgzOCwweEMyLDB4MzAsMHgxRiwweDhCLDB4MEIsMHhCOSwKLSAgICAweDg1LDB4NTEsMHgw
MywweDM5LDB4MjksMHg4OSwweEZELDB4NTUsMHg4NSwweDQ5LDB4MDMsMHg0MSwweEY4LDB4N0Es
MHg1RiwweDU3LAotICAgIDB4NDQsMHg0MSwweEUzLDB4MzgsMHg4QiwweEFELDB4QjUsMHhGNyww
eDI0LDB4NDEsMHhFMiwweDM4LDB4NTcsMHg3RiwweEJGLDB4MkYsCi0gICAgMHgwMywweDM5LDB4
QzIsMHgzMCwweEY5LDB4RUYsMHhDNiwweERDLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBQiwweDAz
LDB4OEUsMHgyRCwKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4M0YsMHgzRSwweDM2LDB4QkUs
MHg0NCwweDQxLDB4MDMsMHgzOSwweDdGLDB4NzcsMHg3QSwweEUyLAotICAgIDB4NDQsMHg0OSww
eEMyLDB4MzAsMHhBQSwweEFCLDB4MEIsMHgyRiwweEE1LDB4NTEsMHgwMywweDQxLDB4QUQsMHhC
RiwweEFCLDB4MEEsCi0gICAgMHg0NywweDZBLDB4QTUsMHg1MSwweDJELDB4MkQsMHhBRCwweDc1
LDB4NjcsMHg3MiwweEE1LDB4NTksMHg4MCwweDgwLDB4RkIsMHhGNSwKLSAgICAweEM4LDB4N0Es
MHg4NCwweDU5LDB4MkUsMHgzRiwweEJGLDB4QkQsMHg3MiwweENELDB4OEMsMHg5MywweDgzLDB4
ODIsMHhBMywweDg5LAotICAgIDB4OTAsMHhCNCwweEFELDB4OTMsMHg4MiwweEU4LDB4RjgsMHg3
MCwweDJGLDB4QTQsMHg4QywweDhCLDB4QTAsMHhFQSwweDVGLDB4RDUsCi0gICAgMHhFRSwweDkz
LDB4OEMsMHg4QiwweDdBLDB4N0UsMHhGRiwweEJELDB4Q0QsMHg5MywweDhELDB4OEIsMHhGNyww
eDc5LDB4RkQsMHgzQiwKLSAgICAweENELDB4OTMsMHg2QywweDgzLDB4M0YsMHhBQSwweEZBLDB4
NzAsMHhFRSwweDlCLDB4MEEsMHg3QiwweEEwLDB4RkEsMHg3RSwweDdGLAotICAgIDB4QUQsMHg5
MywweEVBLDB4NzIsMHhFMCwweEZFLDB4RkQsMHg1RCwweDhDLDB4OEIsMHhFQiwweDcyLDB4M0Is
MHhFRiwweEZGLDB4NzcsCi0gICAgMHgyRSwweEE0LDB4MkIsMHg3QiwweDAyLDB4MkIsMHhGRCww
eEZELDB4MzIsMHhCRCwweEFELDB4OTMsMHgwQSwweDJCLDB4QkQsMHhGRCwKLSAgICAweDQzLDB4
NTEsMHgwMywweDQ5LDB4QkIsMHhBRiwweEJDLDB4RDYsMHgyMywweDQ5LDB4MDIsMHg0OSwweDNE
LDB4NzcsMHg1OCwweDU4LAotICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHgzMywweEJELDB4RkQs
MHhERCwweDQzLDB4NDksMHhFMiwweDQ4LDB4QTIsMHhFRSwweEVBLDB4NkEsCi0gICAgMHg2NCww
eDU5LDB4MDIsMHg0OSwweEJGLDB4QUQsMHgyOSwweEFBLDB4NDMsMHg1MSwweDAzLDB4NTEsMHg4
MCwweDI4LDB4QTgsMHhCMiwKLSAgICAweDQ0LDB4NTEsMHgyMywweDUxLDB4NzMsMHg2MywweDA4
LDB4N0EsMHg0MywweDUxLDB4MDIsMHg0OSwweEFFLDB4RUUsMHg1QywweERBLAotICAgIDB4MjMs
MHg1MSwweDAzLDB4NDksMHhENSwweDY1LDB4NUUsMHgxMywweDBBLDB4OTMsMHgyMywweDUxLDB4
MEQsMHgwRCwweDA5LDB4MDksCi0gICAgMHgyQSwweDkzLDB4ODcsMHg3QSwweEY4LDB4NzgsMHhG
RSwweDdFLDB4QTcsMHg3QSwweDY3LDB4N0EsMHhGQywweEVFLDB4QkYsMHg1RSwKLSAgICAweDg3
LDB4N0EsMHg2NywweDdBLDB4NTYsMHg1RiwweERBLDB4ODMsMHg4NywweDdBLDB4NDcsMHg3Miww
eDhFLDB4QjgsMHhCQSwweDA4LAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhBRSwweEJCLDB4
NUIsMHhBMiwweDY2LDB4NzIsMHg0NiwweDcyLDB4NjQsMHhENiwweDVDLDB4RjcsCi0gICAgMHg4
NywweDdBLDB4NDYsMHg3MiwweEQ1LDB4RjcsMHgzNSwweEI5LDB4ODcsMHg3QSwweDQ2LDB4NzIs
MHhFOSwweDYwLDB4NzAsMHg3QSwKLSAgICAweDI2LDB4NzIsMHhDNSwweDYxLDB4RjAsMHhGOCww
eDZFLDB4NUEsMHhFNSwweDYxLDB4QTQsMHg2MSwweDlGLDB4MTcsMHgzNSwweEFELAotICAgIDB4
RTUsMHg2OSwweEM1LDB4NjEsMHhCQiwweEY4LDB4NUMsMHg5NCwweDI2LDB4NkEsMHhDNCwweDYx
LDB4MjMsMHgyQiwweDI1LDB4MkYsCi0gICAgMHg2NywweDdBLDB4MjYsMHg3MiwweEZGLDB4REQs
MHhGRCwweDg3LDB4NDYsMHg2QSwweEUyLDB4MzgsMHhFMCwweEU4LDB4NzgsMHg3MCwKLSAgICAw
eEUyLDB4MzgsMHg2MSwweDI4LDB4RkMsMHhGRSwweEQ3LDB4RjcsMHgyMywweDQxLDB4QTEsMHgy
OCwweEZELDB4QkYsMHhBRiwweEEzLAotICAgIDB4NjQsMHg0OSwweEUzLDB4MzgsMHg1RCwweEI5
LDB4MkYsMHgzNSwweDY0LDB4NDksMHhDMiwweDMwLDB4RUIsMHg2QSwweDc4LDB4NzgsCi0gICAg
MHhFMywweDM4LDB4ODEsMHgyOCwweEE4LDB4RkUsMHg1RiwweDdFLDB4QzMsMHgzMCwweDgyLDB4
MjAsMHgyMCwweDJCLDB4QkUsMHhGNSwKLSAgICAweEUzLDB4MzAsMHg2MiwweDIwLDB4ODAsMHhF
MiwweEUyLDB4N0EsMHhDMiwweDI4LDB4NjEsMHgyMCwweDdFLDB4REYsMHg3NSwweDc3LAotICAg
IDB4QzMsMHgyOCwweDYxLDB4MjAsMHgyRiwweDJGLDB4QkYsMHhGNSwweEMzLDB4MzAsMHg4Miww
eDIwLDB4NTgsMHhGOCwweEI3LDB4QUYsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDU1LDB4
NjksMHhDQiwweEFGLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhFQiwweEVBLDB4QTgsMHhGRSwKLSAg
ICAweEUzLDB4MzAsMHhBMiwweDI4LDB4N0UsMHhGNSwweERGLDB4QUEsMHgwMywweDM5LDB4QTIs
MHgzMCwweEFCLDB4QUIsMHhGQiwweDVFLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHgzQyww
eENFLDB4RTksMHhBRiwweDAzLDB4MzksMHhBMiwweDMwLDB4RkIsMHhBRCwweDA5LDB4QUEsCi0g
ICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDNFLDB4OEEsMHhBQywweDU3LDB4MDMsMHgzOSwweEUy
LDB4MzgsMHhGQiwweDU3LDB4NTgsMHhCMCwKLSAgICAweDAzLDB4MzksMHhFMiwweDM4LDB4MDAs
MHgzMCwweEJGLDB4QzMsMHgyMywweDQxLDB4RTIsMHgzOCwweEFFLDB4RjUsMHg3RSwweDc4LAot
ICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhGOCwweEZGLDB4QjcsMHgyOSwweDQ0LDB4NDEsMHhF
MiwweDM4LDB4QkQsMHhERCwweEZGLDB4QTgsCi0gICAgMHgyMywweDM5LDB4RTIsMHgzMCwweEY4
LDB4QjIsMHhCQSwweEZCLDB4MjMsMHgzOSwweEUyLDB4MzAsMHgwMywweDJELDB4QjUsMHg5RCwK
LSAgICAweDIzLDB4NDEsMHhDMSwweDMwLDB4MkEsMHhGNiwweEVFLDB4RkEsMHhDNSwweDUxLDB4
MDIsMHgzOSwweDhFLDB4RkQsMHhCNSwweEI1LAotICAgIDB4QzUsMHg1MSwweDQzLDB4NDksMHgy
RCwweEFELDB4RkYsMHhBMCwweDQ2LDB4NkEsMHhBNSwweDUxLDB4QTUsMHhBRCwweDBELDB4RjUs
Ci0gICAgMHg0NywweDZBLDB4QTQsMHg1MSwweDNCLDB4QTIsMHgyRiwweEI3LDB4OTAsMHhCNCww
eDg4LDB4NzIsMHgwMywweDJELDB4MkQsMHgwRCwKLSAgICAweDkwLDB4QjQsMHhBRCwweDhCLDB4
NjAsMHhFMCwweEUwLDB4QzAsMHg4QywweDhCLDB4MkIsMHg4MywweDBBLDB4M0UsMHgyRSwweDM0
LAotICAgIDB4Q0QsMHg5MywweDZDLDB4ODMsMHgyOSwweDNBLDB4QUEsMHhCQSwweENELDB4OTMs
MHgwQSwweDczLDB4ODAsMHhDMCwweEY4LDB4NUUsCi0gICAgMHg4QywweDhCLDB4QTksMHg2QSww
eEEwLDB4RUYsMHhGNywweDU3LDB4MkIsMHg3QiwweENBLDB4NkEsMHg4MCwweDgyLDB4RkIsMHhE
RiwKLSAgICAweDJBLDB4NzMsMHhDQSwweDcyLDB4RkYsMHhENiwweEY3LDB4REUsMHg0QywweDgz
LDB4RUEsMHg3MiwweEI3LDB4QUIsMHhBQiwweDJBLAotICAgIDB4Q0QsMHg5MywweDJCLDB4N0Is
MHhBNSwweEE1LDB4MzcsMHgyRiwweDBFLDB4OUMsMHg2QywweDgzLDB4MDksMHgzNywweDk3LDB4
RDQsCi0gICAgMHg0MywweDUxLDB4RTIsMHg0MCwweDZFLDB4RDIsMHhGMiwweEJBLDB4NDMsMHg1
MSwweEUyLDB4NDAsMHhCNSwweEFCLDB4QUUsMHhFQSwKLSAgICAweDIzLDB4NTEsMHgwMiwweDQx
LDB4QkYsMHgzOCwweEUwLDB4REIsMHg0MywweDUxLDB4MDIsMHg0OSwweEQ2LDB4RDYsMHhFRCww
eEVCLAotICAgIDB4NDMsMHg1MSwweDAzLDB4NTEsMHhBOCwweEJCLDB4QUEsMHhGQiwweDQzLDB4
NTEsMHgyMywweDUxLDB4MzAsMHhCQywweEE5LDB4NDEsCi0gICAgMHg0MywweDUxLDB4MDMsMHg0
OSwweEY4LDB4QUEsMHhBQiwweDZCLDB4MjMsMHg1MSwweEUyLDB4NDgsMHhBOCwweEI4LDB4OUMs
MHhCRSwKLSAgICAweDIzLDB4NTEsMHhFMiwweDQ4LDB4QkEsMHhCRiwweEJGLDB4M0YsMHgwOSww
eDhCLDB4ODQsMHg1OSwweDA5LDB4MDksMHgwMSwweDBCLAotICAgIDB4QzgsMHg4MiwweDg3LDB4
N0EsMHg3OCwweEY4LDB4NzgsMHg1RSwweEE3LDB4N0EsMHg2NywweDdBLDB4NUUsMHhGRiwweEVG
LDB4RUUsCi0gICAgMHhBOCwweDgyLDB4NjcsMHg3MiwweEZGLDB4QUUsMHhFNiwweEJDLDB4QTgs
MHg3QSwweDY3LDB4N0EsMHhGRiwweEI4LDB4QkEsMHhERSwKLSAgICAweDg3LDB4N0EsMHg2Nyww
eDcyLDB4OUEsMHg2MiwweDc4LDB4NkEsMHg2NiwweDcyLDB4NDYsMHg3MiwweEU2LDB4NTYsMHhG
RCwweEQ1LAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhCNiwweDM3LDB4QTksMHhCRCwweDg3
LDB4N0EsMHgwNSwweDZBLDB4RTAsMHhGQSwweDdBLDB4N0UsCi0gICAgMHgwNiwweDZBLDB4QTQs
MHg2MSwweDc4LDB4N0EsMHg3NiwweDlFLDB4ODcsMHg3QSwweEM0LDB4NjEsMHg1NSwweEJELDB4
QjUsMHgyQiwKLSAgICAweDY3LDB4N0EsMHgwNSwweDZBLDB4QjUsMHgwQiwweDAwLDB4QkUsMHhB
OCwweDdBLDB4NDYsMHg3MiwweDVGLDB4OEEsMHhGQiwweDU1LAotICAgIDB4ODcsMHg3QSwweDI2
LDB4NkEsMHgwQiwweDgwLDB4N0YsMHhENywweDQ2LDB4NkEsMHgwMywweDQxLDB4NjAsMHg2MCww
eDYwLDB4RTAsCi0gICAgMHhFMiwweDM4LDB4ODEsMHgzMCwweEI1LDB4QkYsMHgzRSwweDA4LDB4
NDQsMHg0MSwweEUyLDB4MzgsMHg4MiwweEEyLDB4MkIsMHgzRCwKLSAgICAweDQ0LDB4NDksMHhD
MiwweDMwLDB4MkYsMHhCRSwweDdFLDB4NUMsMHg0NCwweDQ5LDB4QzIsMHgzMCwweEYwLDB4NjIs
MHg2QiwweDdGLAotICAgIDB4QzIsMHgzMCwweDgyLDB4MjAsMHhBQSwweEEyLDB4RkEsMHg3Niww
eEEyLDB4MjgsMHg2MiwweDIwLDB4QzgsMHhDQSwweEVBLDB4N0YsCi0gICAgMHhBMiwweDIwLDB4
NjEsMHgyMCwweDc4LDB4RjcsMHhGNSwweEVGLDB4QzMsMHgyOCwweDYyLDB4MjAsMHhGRiwweEJE
LDB4QjcsMHhBQiwKLSAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4RDcsMHhBRSwweEE4LDB4QTAs
MHhDMiwweDI4LDB4ODIsMHgyMCwweEZELDB4QkYsMHhBQiwweEFELAotICAgIDB4QzIsMHgyOCww
eEEyLDB4MjgsMHg0QiwweEY2LDB4RTAsMHhFQiwweEUzLDB4MzAsMHhBMiwweDI4LDB4NUYsMHhB
RCwweEE3LDB4MkQsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDAyLDB4RTMsMHhFMiwweDdB
LDB4RTMsMHgzOCwweEEyLDB4MjgsMHhCQSwweEUyLDB4QjcsMHhGNSwKLSAgICAweEMyLDB4MzAs
MHhBMiwweDI4LDB4ODIsMHhCMCwweDAwLDB4MkIsMHgwNCwweDM5LDB4QzMsMHgzMCwweEUzLDB4
N0QsMHhFNSwweEZELAotICAgIDB4MDMsMHgzOSwweEMzLDB4MzAsMHgyMiwweEFGLDB4RUYsMHg1
NywweDIzLDB4MzksMHhDMiwweDMwLDB4MkEsMHhFQSwweEVGLDB4QkYsCi0gICAgMHgwMywweDM5
LDB4RTIsMHgzMCwweDhCLDB4N0YsMHg1NywweDNBLDB4MjMsMHgzOSwweEUyLDB4MzgsMHg0QSww
eDQ1LDB4RkYsMHhBRSwKLSAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4MjUsMHhCNSwweDM1LDB4
MkEsMHg4NCwweDQ5LDB4MjQsMHg0MSwweDZGLDB4RUYsMHgzQiwweEFGLAotICAgIDB4NjQsMHg0
OSwweDAzLDB4MzksMHg1NSwweEY3LDB4QkYsMHg4OCwweDQzLDB4NDksMHhDMSwweDMwLDB4Rjcs
MHhERiwweEZBLDB4QTIsCi0gICAgMHg0MywweDQxLDB4RTIsMHgzOCwweEZFLDB4OEQsMHhCQiww
eEJGLDB4ODQsMHg0OSwweEUyLDB4MzgsMHgyNSwweEI3LDB4RkYsMHg5RiwKLSAgICAweEE0LDB4
NTEsMHg0MywweDQ5LDB4RTAsMHg1NywweEY1LDB4MDUsMHgwNiwweDYyLDB4NjMsMHg0OSwweEI1
LDB4RkQsMHhBRCwweDJCLAotICAgIDB4MjcsMHg2MiwweDg0LDB4NTEsMHg5NywweEJGLDB4QkEs
MHg4OCwweEYxLDB4QkMsMHgyNywweDYyLDB4MEQsMHgyRCwweDJELDB4MkQsCi0gICAgMHg3Myww
eEM1LDB4RUQsMHg5QiwweDdGLDB4N0YsMHhFQSwweDgwLDB4NzAsMHhBQywweDQ4LDB4NjIsMHhG
RSwweEQ2LDB4NUEsMHhFMCwKLSAgICAweDRDLDB4ODMsMHhDNywweDUxLDB4MDAsMHhFQSwweEZF
LDB4NUUsMHgwQiwweDczLDB4QTYsMHg1MSwweEEwLDB4QUEsMHhGRiwweEY1LAotICAgIDB4QTks
MHg2QSwweDI3LDB4NUEsMHgwOCwweEFFLDB4QUIsMHhGNSwweEVBLDB4NzIsMHg2OCwweDYyLDB4
MzIsMHhBQSwweEFGLDB4QkQsCi0gICAgMHg2QywweDhCLDB4QTksMHg2QSwweEZGLDB4QkYsMHgz
RCwweDJGLDB4MkUsMHg5QywweDBCLDB4N0IsMHhGRCwweEFGLDB4OEEsMHgwMCwKLSAgICAweDBF
LDB4OUMsMHg2QywweDgzLDB4OTUsMHhENywweEU4LDB4RTAsMHg0RiwweEE0LDB4NkIsMHg4Qiww
eDVBLDB4NzIsMHg2MiwweDhBLAotICAgIDB4MjMsMHg0OSwweDAyLDB4NDksMHhFNCwweEI5LDB4
MEQsMHgwOSwweDIzLDB4NDksMHgwMywweDQ5LDB4MEQsMHgyNSwweDJGLDB4QTAsCi0gICAgMHg0
MywweDUxLDB4MDIsMHg0OSwweDVFLDB4MTYsMHhBRSwweEJCLDB4NDMsMHg1MSwweDIzLDB4NTEs
MHg1NiwweDc0LDB4RDIsMHgwMSwKLSAgICAweDQzLDB4NTEsMHgwMywweDQ5LDB4MEEsMHhCMiww
eDlFLDB4OTIsMHg0MywweDUxLDB4MDIsMHg0OSwweEUyLDB4RUMsMHg3MiwweERELAotICAgIDB4
MjMsMHg1MSwweDAzLDB4NDksMHhEMywweDYzLDB4MDIsMHhERSwweDIzLDB4NTEsMHhFMiwweDQ4
LDB4N0IsMHg2MCwweEVFLDB4RkUsCi0gICAgMHhFOSwweDgyLDB4RTIsMHg0OCwweEQ1LDB4RDUs
MHhCNSwweDJELDB4RTgsMHg4QSwweDI2LDB4NkEsMHg4MSwweDgyLDB4ODAsMHhBMCwKLSAgICAw
eEM4LDB4N0EsMHg2NiwweDcyLDB4QjgsMHhGRSwweEZFLDB4RTMsMHhBNywweDdBLDB4NjYsMHg3
MiwweEZBLDB4RkUsMHhCRSwweDhCLAotICAgIDB4QTcsMHg3QSwweDY2LDB4N0EsMHhBRiwweEZG
LDB4RkIsMHhBMiwweDg3LDB4N0EsMHg2NiwweDcyLDB4MDAsMHgwQSwweDBBLDB4QTAsCi0gICAg
MHhBNywweDdBLDB4NDYsMHg3MiwweEZFLDB4NUMsMHg1RiwweDdGLDB4NDksMHg4QiwweDQ2LDB4
NzIsMHg1NSwweDU1LDB4OTUsMHgwRCwKLSAgICAweDhBLDB4OUIsMHg2NywweDdBLDB4NTUsMHhE
NSwweEFBLDB4MjAsMHgyOSwweDhCLDB4MDYsMHg2QSwweEZGLDB4ODIsMHhFMCwweDVFLAotICAg
IDB4NjcsMHg3QSwweDA2LDB4NkEsMHhBRSwweDcwLDB4NTcsMHg1NSwweDI2LDB4NkEsMHhDNSww
eDU5LDB4QTAsMHhBMiwweDAyLDB4N0UsCi0gICAgMHg0NiwweDcyLDB4QzQsMHg1OSwweEZGLDB4
QUEsMHgwMCwweEQ1LDB4NjcsMHg3MiwweEM1LDB4NjEsMHgyRSwweEEyLDB4MDAsMHg1NSwKLSAg
ICAweEE4LDB4N0EsMHg4NCwweDUxLDB4QUEsMHhBMiwweEEyLDB4NTcsMHg2NiwweDcyLDB4NDQs
MHg0OSwweDc4LDB4NjgsMHg3QSwweDdGLAotICAgIDB4NDQsMHg0MSwweEMyLDB4MzgsMHhENyww
eDc3LDB4QkUsMHhFMCwweDAzLDB4MzksMHhDMiwweDM4LDB4QkIsMHhCRiwweEFGLDB4NjAsCi0g
ICAgMHgyNCwweDQxLDB4ODEsMHgyOCwweEEwLDB4QTgsMHhFRiwweERGLDB4MDMsMHgzMSwweDYx
LDB4MTgsMHhFQSwweEY4LDB4RkUsMHg3RiwKLSAgICAweEEyLDB4MjAsMHg2MSwweDE4LDB4N0Ms
MHhFQywweEVGLDB4RkYsMHhBMiwweDIwLDB4NjEsMHgxOCwweEY1LDB4QUQsMHhBQiwweDBGLAot
ICAgIDB4RTMsMHgzMCwweDgyLDB4MjAsMHhGNSwweEY1LDB4QkQsMHhCMiwweEUzLDB4MzAsMHhB
MiwweDI4LDB4NUIsMHhFRiwweEFBLDB4MEEsCi0gICAgMHhFMiwweDMwLDB4ODEsMHgyMCwweDc3
LDB4N0YsMHhGRSwweEE4LDB4QTIsMHgyOCwweDgxLDB4MjAsMHhBQiwweDY3LDB4RUUsMHgwMCwK
LSAgICAweEUyLDB4MzAsMHg4MiwweDIwLDB4QkYsMHhGRCwweEZELDB4QTIsMHhDMiwweDI4LDB4
ODEsMHgyOCwweDA4LDB4QTcsMHhBNSwweDBCLAotICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHg2
MiwweDZBLDB4RkIsMHhENywweDAzLDB4MzEsMHhBMiwweDI4LDB4QjUsMHhFRCwweDJCLDB4MkQs
Ci0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEQ1LDB4QkYsMHg4QSwweDJCLDB4MjQsMHgzOSww
eEMyLDB4MzgsMHg2QiwweENBLDB4MEIsMHhBQiwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4
RjcsMHhGRCwweDIyLDB4MzIsMHgyMywweDM5LDB4RTMsMHgzMCwweEFELDB4M0QsMHg3OSwweEVG
LAotICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHgyQSwweEFBLDB4RkEsMHg1QSwweDIzLDB4Mzks
MHhFMiwweDMwLDB4RkMsMHhENSwweEQ3LDB4NTUsCi0gICAgMHgyMywweDQxLDB4RTMsMHgzOCww
eEEyLDB4QTksMHhCRCwweDk1LDB4NjQsMHg0OSwweDAzLDB4MzksMHgyQiwweEZGLDB4RjUsMHhC
NywKLSAgICAweDg1LDB4NTEsMHg0NCwweDQ5LDB4QUUsMHg3MywweDYzLDB4RUYsMHg0NCwweDQ5
LDB4MjMsMHg0MSwweDQwLDB4NUUsMHhFNiwweDBGLAotICAgIDB4NDMsMHg0MSwweDAzLDB4Mzks
MHhENywweDU1LDB4RkYsMHhBRSwweDQzLDB4NDEsMHgwMywweDM5LDB4MzUsMHhBRiwweDdFLDB4
RTIsCi0gICAgMHg4NCwweDUxLDB4MDMsMHgzOSwweDAyLDB4RkYsMHhGRCwweEVGLDB4QzUsMHg1
OSwweDQzLDB4NDEsMHgwQSwweDk5LDB4N0QsMHhERCwKLSAgICAweDA2LDB4NjIsMHg2NCwweDQ5
LDB4MDIsMHhCRiwweEY1LDB4QkYsMHhEMSwweEI0LDB4MDYsMHg2MiwweDJELDB4MjUsMHgyNSww
eEI1LAotICAgIDB4OTMsMHhDRCwweEQxLDB4QkMsMHhBQSwweEFBLDB4QUIsMHhCRCwweDUzLDB4
QzUsMHgyRiwweEE0LDB4N0UsMHhGRSwweEY4LDB4RTAsCi0gICAgMHhCMCwweEFDLDB4RUIsMHg3
QSwweDdFLDB4QUEsMHgyMCwweDAwLDB4OEYsMHhBQywweEU2LDB4NTEsMHg1NywweEZBLDB4MDAs
MHgwMCwKLSAgICAweDZGLDB4QTQsMHgwNywweDVBLDB4NTUsMHhGRiwweDAwLDB4MDAsMHg0Riww
eEE0LDB4QTksMHg2QSwweDU1LDB4RkQsMHgwMCwweDAwLAotICAgIDB4MkUsMHg5QywweENBLDB4
NzIsMHhBRCwweEFCLDB4MDAsMHgwMCwweDZGLDB4QUMsMHhFRCwweDkzLDB4MkQsMHhBOSwweDhC
LDB4QUIsCi0gICAgMHg0RiwweEE0LDB4QUMsMHg4QiwweDcwLDB4RjgsMHhFMCwweEEyLDB4NkYs
MHhBQywweENDLDB4OTMsMHhBRCwweDhELDB4MEQsMHgwRCwKLSAgICAweDIzLDB4NTEsMHgwMiww
eDQxLDB4QTAsMHg0MywweEZGLDB4RkYsMHgyMywweDUxLDB4RTIsMHg0MCwweEEyLDB4MUEsMHgy
RiwweDBGLAotICAgIDB4NDMsMHg1MSwweDIzLDB4NTEsMHhGRCwweDhCLDB4QTAsMHgwMywweDQz
LDB4NTEsMHgyMywweDUxLDB4NTgsMHg3NCwweDY1LDB4NTQsCi0gICAgMHg0MywweDUxLDB4MDMs
MHg0OSwweEYzLDB4QkEsMHhGRSwweERFLDB4MjMsMHg1MSwweDAyLDB4NDEsMHhGQywweEE3LDB4
NUYsMHg3QiwKLSAgICAweDIzLDB4NDksMHgwMywweDQ5LDB4NTQsMHgyOCwweDdFLDB4RjksMHhD
NCwweDYxLDB4QTEsMHg0MCwweEZGLDB4RkYsMHhCRiwweDNELAotICAgIDB4MDksMHg4QiwweDQz
LDB4NTEsMHgwRCwweDA5LDB4MDIsMHgwMCwweDA5LDB4OEIsMHhBNywweDgyLDB4NzgsMHhFQyww
eEZBLDB4N0EsCi0gICAgMHhFOCwweDgyLDB4ODYsMHg3QSwweDU3LDB4REYsMHhGRiwweEY4LDB4
QTcsMHg3QSwweDg3LDB4N0EsMHhERSwweDVFLDB4NUUsMHgwOCwKLSAgICAweEE3LDB4N0EsMHg2
NiwweDcyLDB4QjIsMHhFQSwweDYwLDB4NzgsMHgyOSwweDkzLDB4NjYsMHg3MiwweDU3LDB4NTUs
MHg1NSwweDE1LAotICAgIDB4QUIsMHhBMywweDg3LDB4N0EsMHg1NSwweEI1LDB4MEIsMHgwMCww
eDhBLDB4OUIsMHgyNSwweDZBLDB4MDIsMHgwMCwweEMwLDB4NzgsCi0gICAgMHg4QSwweDlCLDB4
QzUsMHg2MSwweEUwLDB4NUEsMHg1NywweDU1LDB4MjYsMHg2QSwweEE0LDB4NjEsMHhCOCwweEZC
LDB4RDcsMHhBRiwKLSAgICAweDA2LDB4NkEsMHg0NCwweDQ5LDB4MDAsMHg2OCwweDVFLDB4NUUs
MHhBNCwweDU5LDB4MDMsMHg0MSwweEVDLDB4NzcsMHhGNSwweEVGLAotICAgIDB4NDMsMHg0OSww
eDIzLDB4NDEsMHgwQiwweEEyLDB4RTIsMHhEOCwweDQzLDB4NDksMHgwMywweDQxLDB4RTIsMHhB
OCwweEVBLDB4RjcsCi0gICAgMHg0MywweDQ5LDB4MDMsMHg0MSwweDY3LDB4OUUsMHhERSwweEQ3
LDB4ODUsMHg1MSwweDIzLDB4NDEsMHhDOSwweEVCLDB4RUYsMHhEOSwKLSAgICAweDQ0LDB4NDks
MHhDMiwweDMwLDB4QTAsMHhCQSwweEZFLDB4NUUsMHgwMywweDM5LDB4ODIsMHgyMCwweEUwLDB4
RjAsMHg1RSwweDdFLAotICAgIDB4QTIsMHgyOCwweDgxLDB4MjAsMHg2MiwweEUyLDB4QUEsMHhE
RCwweEEyLDB4MjAsMHg2MSwweDE4LDB4NkEsMHhFOCwweEY4LDB4RkUsCi0gICAgMHhBMiwweDI4
LDB4NjEsMHgxOCwweEQ1LDB4RDUsMHhBNywweEE5LDB4RTMsMHgzMCwweDgyLDB4MjAsMHhBNSww
eEY1LDB4QkQsMHgyRiwKLSAgICAweDI0LDB4MzksMHhBMSwweDI4LDB4QUYsMHgzRCwweDM3LDB4
M0UsMHgyNCwweDM5LDB4QzIsMHgzMCwweEY2LDB4RjcsMHhBNCwweEZDLAotICAgIDB4RTIsMHgz
MCwweDgxLDB4MjgsMHhCQSwweDc4LDB4RkMsMHhGOCwweEUzLDB4MzAsMHhBMSwweDI4LDB4QkIs
MHgwMiwweDI5LDB4RjUsCi0gICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweEUyLDB4RjAsMHhFOCww
eEZFLDB4RTMsMHgyOCwweDgxLDB4MjgsMHhGQiwweERFLDB4N0UsMHhGRSwKLSAgICAweEMyLDB4
MjgsMHg4MSwweDIwLDB4RUEsMHhFRiwweEJGLDB4MjcsMHhDMiwweDI4LDB4QTIsMHgyOCwweDA5
LDB4MDUsMHg1OSwweDVCLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHgwQSwweEZGLDB4Rjcs
MHhGNywweDAzLDB4MzksMHhBMiwweDI4LDB4MkIsMHgyRCwweEZGLDB4REYsCi0gICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweEUwLDB4RjAsMHhGRiwweDU3LDB4MjQsMHgzOSwweEMyLDB4MzAsMHhB
MywweEFGLDB4RUQsMHg5NSwKLSAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4NjgsMHg3RSwweEVC
LDB4RkEsMHgyMywweDM5LDB4RTIsMHgzOCwweEI1LDB4QjcsMHgzNSwweEI1LAotICAgIDB4MjMs
MHg0MSwweEMyLDB4MzAsMHhGNCwweDdBLDB4RjgsMHhGQiwweDY0LDB4NDksMHhDMiwweDM4LDB4
QkYsMHgzRiwweDJGLDB4MkQsCi0gICAgMHg4NSwweDQ5LDB4MjMsMHg0MSwweEFCLDB4RDYsMHg3
QywweEYwLDB4NDQsMHg0OSwweEUyLDB4MzgsMHgwQSwweDJBLDB4QkYsMHhGNiwKLSAgICAweDIz
LDB4NDEsMHhDMiwweDM4LDB4MDAsMHgwMiwweEZDLDB4RkYsMHg2NCwweDQ5LDB4RTMsMHgzOCww
eDhCLDB4QUYsMHhERiwweERELAotICAgIDB4ODUsMHg0OSwweEUyLDB4MzgsMHg4MiwweEFCLDB4
RDUsMHhGNSwweEM1LDB4NTEsMHgyMywweDQxLDB4QUIsMHgyQiwweEE3LDB4NzUsCi0gICAgMHgw
NiwweDYyLDB4NjMsMHg0OSwweDJCLDB4MkEsMHhBRiwweEQ1LDB4QUMsMHg5MywweDY0LDB4NTEs
MHgyRiwweDJGLDB4MjUsMHgzNSwKLSAgICAweDExLDB4QkQsMHgyRSwweEE0LDB4MkIsMHhBRiww
eEJELDB4RkQsMHg1MiwweEM1LDB4QjAsMHhCNCwweDIwLDB4MkIsMHhCRiwweDdELAotICAgIDB4
NzMsMHhDRCwweEYwLDB4QkMsMHg3QiwweEE4LDB4QTIsMHhBOSwweDMyLDB4QzUsMHg2RiwweEFD
LDB4RkUsMHhGRSwweERDLDB4NjgsCi0gICAgMHhBRiwweEI0LDB4NEYsMHhBNCwweEMwLDB4Rjgs
MHg1QiwweEZGLDB4NkYsMHhBQywweDJFLDB4QTQsMHhFOCwweEJBLDB4NTUsMHg3RiwKLSAgICAw
eDhGLDB4QUMsMHgwRSwweDlDLDB4NUUsMHhFMiwweEFBLDB4MjMsMHg2RiwweEFDLDB4MEUsMHg5
QywweEVGLDB4RjcsMHhGQSwweEUwLAotICAgIDB4NkYsMHhBNCwweDJFLDB4QTQsMHg0RiwweEQ1
LDB4NTUsMHg1RiwweDkwLDB4QUMsMHhFRCwweDlCLDB4MkQsMHgzNywweEJGLDB4QkYsCi0gICAg
MHg0MywweDUxLDB4RTIsMHg0MCwweEZGLDB4OUYsMHgyNSwweDNELDB4NjQsMHg1OSwweDAyLDB4
NDksMHhBRCwweDJCLDB4QTIsMHhBQSwKLSAgICAweDgzLDB4NTEsMHgyMywweDUxLDB4RjcsMHhE
RSwweDc3LDB4N0YsMHg2MywweDUxLDB4MDIsMHg0OSwweEU4LDB4RkEsMHhFRSwweDdGLAotICAg
IDB4MjMsMHg0OSwweDAzLDB4NDksMHhEQSwweDIzLDB4MDMsMHg3OSwweDIzLDB4NDksMHhFMiww
eDQwLDB4RjgsMHgyQSwweDlFLDB4QTIsCi0gICAgMHgyMywweDQ5LDB4MDIsMHg0MSwweDU2LDB4
MjQsMHhDRiwweDY3LDB4Q0IsMHhBMywweDAzLDB4NDksMHhCNSwweDI1LDB4MEQsMHgwRCwKLSAg
ICAweDhCLDB4OUIsMHhDOCwweDgyLDB4N0UsMHhGRiwweEZDLDB4QzgsMHgwOCwweDhCLDB4QTcs
MHg4MiwweEZCLDB4REUsMHhGQSwweEU4LAotICAgIDB4QTcsMHg4MiwweEU3LDB4N0EsMHgyQSww
eEFBLDB4MjIsMHhCRSwweEM3LDB4ODIsMHg4NiwweDdBLDB4RkIsMHg3NiwweDdFLDB4NTQsCi0g
ICAgMHhBQiwweEEzLDB4NDYsMHg3MiwweDU3LDB4RjUsMHhCNywweDJCLDB4Q0IsMHhBMywweDY3
LDB4N0EsMHgyRCwweDBBLDB4MDAsMHg4MCwKLSAgICAweEFCLDB4QTMsMHgyNiwweDZBLDB4MDAs
MHhDMCwweDc4LDB4NTYsMHhFOSwweDhBLDB4QTQsMHg1OSwweEY4LDB4NUUsMHg1RiwweDVGLAot
ICAgIDB4RTYsMHg2MSwweDg0LDB4NTksMHhBRSwweDNELDB4MkIsMHgyRiwweDA2LDB4NkEsMHg2
NCwweDUxLDB4MjIsMHhFOCwweEU4LDB4N0EsCi0gICAgMHg4NCwweDUxLDB4MjMsMHg0OSwweEE4
LDB4RTgsMHhEQywweEY3LDB4NjQsMHg0OSwweDIzLDB4NDEsMHhGRSwweDdCLDB4NkYsMHhCMiwK
LSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4QkIsMHhGRiwweEU3LDB4MkUsMHhFNSwweDYxLDB4
MDMsMHg0MSwweDU1LDB4NUQsMHhENywweDJBLAotICAgIDB4QzUsMHg1OSwweDAzLDB4NDEsMHg1
NSwweDU1LDB4RkYsMHg4MCwweDY0LDB4NDksMHhFMiwweDM4LDB4RTgsMHg1QSwweDdFLDB4N0Es
Ci0gICAgMHhFMywweDM4LDB4QTEsMHgyOCwweEY4LDB4QkUsMHhBRSwweEY2LDB4RTMsMHgzMCww
eDgxLDB4MjAsMHg3MiwweDcwLDB4NzgsMHg3QSwKLSAgICAweDgxLDB4MjAsMHg2MSwweDE4LDB4
MDAsMHhBQSwweDA4LDB4ODAsMHg4MiwweDIwLDB4NjEsMHgxOCwweEI4LDB4QkYsMHg1NSwweEI1
LAotICAgIDB4QzMsMHgyOCwweDYxLDB4MTgsMHhBRiwweEFGLDB4QUEsMHg4QSwweEMzLDB4MzAs
MHg4MiwweDIwLDB4MEYsMHhCRiwweEY3LDB4RUQsCi0gICAgMHgwNCwweDM5LDB4QTIsMHgyOCww
eDNBLDB4QkIsMHhERiwweEQ1LDB4MDMsMHgzOSwweEEyLDB4MjgsMHhFQywweEU2LDB4RkYsMHg3
OSwKLSAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4RkUsMHhBOSwweDBGLDB4MkYsMHhFMiwweDMw
LDB4QTEsMHgyOCwweDU3LDB4RjgsMHhGOCwweEMwLAotICAgIDB4RTMsMHgzMCwweDgxLDB4Mjgs
MHhGRiwweEQ2LDB4RkEsMHg4MCwweEMyLDB4MzAsMHhBMiwweDI4LDB4RDYsMHg5NSwweEFCLDB4
OEUsCi0gICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweDU1LDB4QkYsMHgyQSwweDhCLDB4QzIsMHgz
MCwweEEyLDB4MjgsMHg1RiwweEY0LDB4QUQsMHg1QiwKLSAgICAweEMyLDB4MjgsMHg4MiwweDI4
LDB4MDAsMHgwQSwweEFBLDB4RUYsMHhFMiwweDMwLDB4QTIsMHgyOCwweEFGLDB4MEIsMHhBRiww
eDNELAotICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHhFRiwweDhFLDB4MjgsMHgwQSwweDI0LDB4
MzksMHhDMiwweDMwLDB4QkYsMHgzNywweEQ1LDB4RkYsCi0gICAgMHg0NCwweDQxLDB4RTMsMHgz
OCwweEZBLDB4QzIsMHhBRCwweEFELDB4MjMsMHgzOSwweEUyLDB4MzAsMHhBRCwweDg1LDB4QUQs
MHhENSwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RUMsMHhBQSwweDhFLDB4RUUsMHg2NCww
eDQ5LDB4QzIsMHgzMCwweEI1LDB4MzUsMHgzNywweDJGLAotICAgIDB4QTUsMHg1MSwweDI0LDB4
NDEsMHg2OCwweDYwLDB4RTAsMHhGNiwweDI0LDB4NDEsMHhDMiwweDMwLDB4RTgsMHg5QywweEJB
LDB4RkMsCi0gICAgMHg0NCwweDQxLDB4RTIsMHgzOCwweEJELDB4MzUsMHhCNywweEY1LDB4MjMs
MHg0MSwweEMyLDB4MzAsMHhCQSwweEE4LDB4QkEsMHg3RSwKLSAgICAweDY1LDB4NDEsMHhFMyww
eDM4LDB4RjUsMHhBRCwweEFGLDB4MkIsMHhDNiwweDU5LDB4MjMsMHg0OSwweEZELDB4QkYsMHhB
QiwweDJBLAotICAgIDB4RTYsMHg1OSwweDQzLDB4NDEsMHhGNSwweEI3LDB4MEYsMHg4OCwweDBB
LDB4N0IsMHg2NCwweDQ5LDB4MzUsMHgzRiwweDI3LDB4M0YsCi0gICAgMHg2RiwweEFDLDB4Q0Qs
MHg5MywweDBBLDB4QUIsMHhCRCwweEI1LDB4RjEsMHhCQywweDBFLDB4QTQsMHgwQiwweDNGLDB4
RkYsMHhGNSwKLSAgICAweDMyLDB4QkQsMHg0RSwweEFDLDB4MDIsMHg4MCwweEFCLDB4QjUsMHgz
MiwweEM1LDB4OEYsMHhBQywweDc4LDB4N0EsMHhFQSwweEFCLAotICAgIDB4RDAsMHhCNCwweDZG
LDB4QUMsMHg1NywweDZGLDB4RkEsMHhGOCwweDhGLDB4QUMsMHg0RiwweEE0LDB4REUsMHhGRiww
eEY3LDB4Q0MsCi0gICAgMHg4RiwweEFDLDB4NEYsMHhBNCwweEJGLDB4QkEsMHhBQiwweERDLDB4
OTAsMHhBQywweDRFLDB4QTQsMHg2RiwweEJBLDB4QjIsMHhBOSwKLSAgICAweDhGLDB4QUMsMHg0
RiwweEE0LDB4NUYsMHg3RSwweERBLDB4NkYsMHg2RiwweEFDLDB4MkUsMHhBNCwweEZELDB4ODgs
MHhCMiwweDVBLAotICAgIDB4NjQsMHg1OSwweDAzLDB4NDksMHhCRCwweEFBLDB4MkEsMHg4QSww
eDY0LDB4NTksMHg0MywweDUxLDB4NkUsMHgwOCwweDgyLDB4QUYsCi0gICAgMHg2MywweDUxLDB4
MjIsMHg0OSwweDc3LDB4NzgsMHg3RiwweDVBLDB4NDMsMHg0OSwweDAyLDB4NDksMHg1QSwweDVD
LDB4QUEsMHg5RiwKLSAgICAweDIzLDB4NDksMHgwMiwweDQ5LDB4QzAsMHhDMCwweDgwLDB4RDUs
MHgyMywweDQ5LDB4MDIsMHg0MSwweEIzLDB4RDUsMHhFRCwweDY2LAotICAgIDB4NjMsMHg1MSww
eDAyLDB4NDksMHg1RCwweEQ1LDB4RDcsMHg5NSwweEFCLDB4OUIsMHg4NCwweDU5LDB4MDksMHgw
OSwweDAzLDB4MDMsCi0gICAgMHg4QSwweDlCLDB4MDgsMHg4QiwweEU4LDB4RUEsMHhFMCwweDdB
LDB4MDgsMHg4QiwweEM4LDB4ODIsMHg1OCwweEZBLDB4RTgsMHhFQywKLSAgICAweDA4LDB4OEIs
MHhBNywweDgyLDB4NUYsMHhERiwweDdGLDB4MkEsMHhDQiwweEEzLDB4QTcsMHg4MiwweDU1LDB4
QjUsMHgyRCwweDAyLAotICAgIDB4Q0IsMHhBMywweEM4LDB4ODIsMHgwMywweDAwLDB4ODAsMHg2
MCwweEFCLDB4QTMsMHgyNiwweDcyLDB4QzAsMHg1OCwweDU2LDB4NTUsCi0gICAgMHg2NywweDcy
LDB4MDUsMHg2QSwweDlFLDB4QjcsMHgyRSwweEYzLDB4MjYsMHg2QSwweDYzLDB4NTEsMHg3OCww
eERDLDB4RkUsMHhCRSwKLSAgICAweEU2LDB4NjEsMHg2MywweDQ5LDB4MEIsMHgwOCwweEM4LDB4
NTIsMHhDNSwweDU5LDB4MjMsMHg0MSwweEU4LDB4RkUsMHg3RiwweEZGLAotICAgIDB4NjQsMHg0
OSwweDAzLDB4NDEsMHgwRSwweDJBLDB4MjksMHhBMiwweDg1LDB4NTEsMHgyMywweDQ5LDB4N0Ys
MHhGRSwweDNFLDB4MzcsCi0gICAgMHgwNiwweDZBLDB4NjQsMHg0OSwweEFELDB4MDIsMHhBMCww
eEUyLDB4QzUsMHg2MSwweEUyLDB4NDAsMHgwMCwweEE4LDB4RkUsMHg1RiwKLSAgICAweEM1LDB4
NTksMHgwMiwweDQxLDB4QzAsMHhGQSwweEZGLDB4NTUsMHgyMywweDQxLDB4QzIsMHgzMCwweEUw
LDB4RkUsMHg1RSwweDVFLAotICAgIDB4QzIsMHgzMCwweDgxLDB4MjAsMHhFQywweDY4LDB4Njgs
MHhEOCwweEEyLDB4MjgsMHg2MSwweDIwLDB4RTAsMHg3QSwweDdBLDB4RTgsCi0gICAgMHg4MSww
eDIwLDB4NDEsMHgxOCwweDIwLDB4RUEsMHhGRiwweEVFLDB4QzIsMHgyOCwweDQwLDB4MTgsMHhC
NywweEFGLDB4MEIsMHgwQSwKLSAgICAweEMzLDB4MzAsMHhBMSwweDIwLDB4N0UsMHhGQSwweENB
LDB4QUEsMHhDMiwweDMwLDB4ODEsMHgyMCwweEZGLDB4QUYsMHhFQiwweEI4LAotICAgIDB4MDMs
MHgzOSwweEEyLDB4MjgsMHhENSwweEJELDB4QUYsMHg4QiwweDAzLDB4MzEsMHhDMiwweDMwLDB4
RDcsMHhBOCwweEYwLDB4N0QsCi0gICAgMHhFMiwweDMwLDB4ODIsMHgyOCwweEFFLDB4QjYsMHhE
RSwweDhFLDB4MDMsMHgzOSwweEEyLDB4MzAsMHhBRSwweEE1LDB4QTUsMHhCRiwKLSAgICAweDAy
LDB4MzksMHhDMywweDMwLDB4RUUsMHg3QSwweDdCLDB4REUsMHhFMywweDMwLDB4QTIsMHgyOCww
eEJGLDB4QkUsMHhCNywweEI0LAotICAgIDB4RTMsMHgzMCwweDgxLDB4MjgsMHg3RSwweEZBLDB4
RjgsMHhGRSwweEMyLDB4MzAsMHhBMiwweDI4LDB4QTUsMHgzNSwweEZCLDB4QUEsCi0gICAgMHhB
MiwweDMwLDB4QzIsMHgyOCwweDk3LDB4RjUsMHhGRiwweDk3LDB4QzIsMHgzMCwweEEyLDB4Mjgs
MHgyRiwweEFELDB4QUEsMHhFOSwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RUEsMHgyQSww
eEEzLDB4NUIsMHgwMywweDM5LDB4QzMsMHgzMCwweEJGLDB4RjIsMHhFMywweEE5LAotICAgIDB4
MDMsMHgzOSwweEMyLDB4MzAsMHgyRiwweDJELDB4RTUsMHhCNSwweDAzLDB4MzksMHhBMiwweDMw
LDB4MkEsMHg4MywweEE3LDB4RUYsCi0gICAgMHgwMywweDM5LDB4RTIsMHgzMCwweDdGLDB4RkUs
MHhEQiwweDk1LDB4MjMsMHgzOSwweEUzLDB4MzAsMHgwQSwweDAyLDB4RUEsMHhFOSwKLSAgICAw
eDY0LDB4NDEsMHhDMywweDMwLDB4QTgsMHg3RiwweEZELDB4RkYsMHgwMywweDM5LDB4QzIsMHgz
MCwweEY4LDB4RUUsMHhBQiwweEFCLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyMywweEFC
LDB4QUEsMHgyMywweDI0LDB4MzksMHhDMiwweDMwLDB4N0EsMHhERSwweEFGLDB4MkYsCi0gICAg
MHg0NCwweDQxLDB4RTMsMHgzMCwweDlELDB4QjUsMHhCRiwweDA5LDB4QTUsMHg1MSwweDIzLDB4
NDEsMHgyMiwweDNELDB4RkQsMHhGNSwKLSAgICAweEM1LDB4NTksMHg0NCwweDQ5LDB4QTAsMHhC
QiwweEFELDB4MkQsMHgyQSwweDgzLDB4QzUsMHg1MSwweEI1LDB4QjUsMHgzNSwweDM1LAotICAg
IDB4RUQsMHg5QiwweDhDLDB4OEIsMHgwOSwweEJGLDB4RkEsMHg2MiwweDJFLDB4QTQsMHg4Qyww
eDhCLDB4MEEsMHhBRiwweEZGLDB4RDUsCi0gICAgMHg2RiwweEFDLDB4Q0QsMHg5MywweDBBLDB4
RUYsMHhGRCwweERELDB4RjAsMHhCNCwweDBELDB4OUMsMHgwQSwweDBCLDB4QkQsMHhENSwKLSAg
ICAweEYxLDB4QkMsMHg4RiwweEFDLDB4RkMsMHhFMiwweEUyLDB4QjUsMHhEMSwweEI0LDB4NzAs
MHhBQywweDdFLDB4RUYsMHhBRSwweEI4LAotICAgIDB4QjAsMHhCNCwweDRGLDB4QTQsMHhERiww
eEZBLDB4OEEsMHg4QSwweDhGLDB4QUMsMHgyRCwweEE0LDB4RjYsMHhGRSwweEU4LDB4MjgsCi0g
ICAgMHg2RiwweEFDLDB4MkUsMHhBNCwweEFBLDB4Q0YsMHhFQSwweEZFLDB4NEYsMHhBNCwweDBF
LDB4OUMsMHg3RSwweEJFLDB4RkIsMHg1QSwKLSAgICAweDY0LDB4NTksMHgyMywweDUxLDB4Mjcs
MHhBNywweEU3LDB4QUUsMHg2NCwweDU5LDB4NDMsMHg1MSwweDJGLDB4ODAsMHg2MCwweDcyLAot
ICAgIDB4NjQsMHg1MSwweDAyLDB4NDksMHhGQSwweDc4LDB4RkUsMHg1RSwweDIyLDB4NDksMHhF
MSwweDQwLDB4QTgsMHhBMCwweDgyLDB4RkIsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEFC
LDB4RUMsMHg3QSwweEFFLDB4MjMsMHg0OSwweEUyLDB4NDAsMHhGQSwweDlCLDB4MjksMHgyRiwK
LSAgICAweDI1LDB4NkEsMHhFMiwweDQwLDB4RjUsMHhCRCwweDM1LDB4MzcsMHg4QSwweDlCLDB4
RTgsMHg4MiwweDgxLDB4ODEsMHgwMywweDgyLAotICAgIDB4NjksMHg5QiwweDA5LDB4OEIsMHhF
QSwweEVBLDB4NkEsMHhFQSwweDQ5LDB4OTMsMHhFOCwweDhBLDB4NkYsMHg3RSwweEJGLDB4MkEs
Ci0gICAgMHhDQiwweEEzLDB4RTgsMHg4QSwweEJELDB4MEYsMHgwMiwweDBBLDB4RUIsMHhBMyww
eDg2LDB4N0EsMHgwMCwweDgwLDB4RTAsMHg3OCwKLSAgICAweEFBLDB4OUIsMHg0NiwweDcyLDB4
NzgsMHg1RSwweDU1LDB4NTUsMHg2NywweDdBLDB4MjYsMHg2QSwweEVELDB4M0IsMHg4QiwweDhC
LAotICAgIDB4NDYsMHg3MiwweEE0LDB4NTksMHhFMCwweEUwLDB4NzAsMHg1QywweEM1LDB4NjEs
MHgyMiwweDQxLDB4ODIsMHhBMiwweEZBLDB4NzcsCi0gICAgMHhBNSwweDUxLDB4MjMsMHg0MSww
eEY4LDB4M0YsMHhBRCwweDhCLDB4ODQsMHg1MSwweDQ0LDB4NDksMHhGNCwweEI2LDB4QUYsMHhF
RiwKLSAgICAweDY0LDB4NDksMHgyMywweDQxLDB4QTIsMHhCNiwweEFFLDB4QkYsMHg4NCwweDUx
LDB4RTMsMHgzOCwweDNGLDB4MkUsMHhCRSwweERGLAotICAgIDB4MDYsMHg2MiwweDg0LDB4NTks
MHhFQSwweDg4LDB4RUEsMHhFOSwweEE1LDB4NTksMHgwMiwweDQxLDB4NUUsMHg1RSwweDVDLDB4
NzgsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDgwLDB4RTAsMHg2MCwweEUwLDB4MDIsMHgz
OSwweEMzLDB4MzAsMHhFOCwweEZGLDB4REYsMHg3NSwKLSAgICAweEUzLDB4MzAsMHg4MSwweDIw
LDB4REEsMHhCQSwweEYwLDB4QzAsMHhDMiwweDI4LDB4NjEsMHgxOCwweEY4LDB4N0EsMHg1Niww
eDU3LAotICAgIDB4QzIsMHgyOCwweDYxLDB4MTgsMHhENywweEI1LDB4MEQsMHhBQiwweDAzLDB4
MzEsMHhDMiwweDI4LDB4NzUsMHhERCwweERELDB4MjksCi0gICAgMHg0NCwweDM5LDB4QTIsMHgy
OCwweERELDB4RjcsMHhCRiwweDAyLDB4MjMsMHgzOSwweEMyLDB4MzAsMHg3NSwweDZBLDB4NTgs
MHhFOCwKLSAgICAweEUzLDB4MzAsMHg4MSwweDMwLDB4QTIsMHg3OCwweEVFLDB4RTgsMHhFMyww
eDM4LDB4QTIsMHgyOCwweEVGLDB4RjUsMHhFRCwweEEyLAotICAgIDB4MDMsMHgzOSwweEMyLDB4
MzAsMHhFRCwweEJELDB4QUIsMHg4RCwweDAzLDB4MzksMHhDMiwweDMwLDB4QjcsMHhFQiwweDAy
LDB4QUIsCi0gICAgMHgyMywweDM5LDB4QzIsMHgzMCwweEZCLDB4RkIsMHg2OCwweDdBLDB4MDQs
MHgzOSwweEEyLDB4MjgsMHhFOCwweEEwLDB4RkEsMHhFRCwKLSAgICAweEUzLDB4MzAsMHhBMiww
eDI4LDB4NUUsMHhGQywweEZFLDB4QjMsMHhDMiwweDMwLDB4ODEsMHgyOCwweDJGLDB4RkYsMHg3
QSwweDIwLAotICAgIDB4QzIsMHgyOCwweDgyLDB4MjgsMHgwMCwweDgwLDB4QUQsMHhGQSwweEEy
LDB4MjgsMHg4MSwweDIwLDB4MDgsMHgyOCwweDNFLDB4RjUsCi0gICAgMHhFMiwweDMwLDB4QTIs
MHgyOCwweDVGLDB4RTUsMHhCRCwweEFELDB4RTMsMHgzMCwweEEyLDB4MjgsMHg4MywweEZCLDB4
OEUsMHg4MywKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QUUsMHhBRiwweDhGLDB4MEUsMHgw
MiwweDM5LDB4QTIsMHgyOCwweEI4LDB4RUUsMHhGRiwweEZELAotICAgIDB4MDMsMHgzMSwweEEx
LDB4MjgsMHgyRiwweEFGLDB4QkQsMHgyRiwweDI0LDB4MzEsMHhDMiwweDMwLDB4RjYsMHhGRiww
eEFCLDB4MkYsCi0gICAgMHgwMywweDMxLDB4QTIsMHgzMCwweEFCLDB4QUEsMHgyOCwweEEwLDB4
RTMsMHgzMCwweEMyLDB4MjgsMHhDOCwweDg4LDB4OEEsMHg4MywKLSAgICAweDA0LDB4MzEsMHhD
MiwweDMwLDB4QkIsMHg1RCwweDVGLDB4RkYsMHgyNCwweDM5LDB4QzMsMHgyOCwweDI3LDB4Qjcs
MHhCRiwweEVCLAotICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHgyNywweEI1LDB4MzcsMHhCRiww
eDg1LDB4NDksMHgyMywweDQxLDB4QkYsMHhBNywweDJCLDB4RjUsCi0gICAgMHgwNiwweDVBLDB4
NjQsMHg0OSwweDBELDB4QTUsMHhGNywweEY1LDB4OEMsMHg4QiwweDA2LDB4NUEsMHg5NSwweDM1
LDB4MzUsMHgyNSwKLSAgICAweEVELDB4OUIsMHhBRCwweDkzLDB4NzMsMHhGQiwweEQ3LDB4NjIs
MHhBQywweDkzLDB4NkIsMHg4QiwweDJCLDB4NTgsMHhGMCwweDY4LAotICAgIDB4RUQsMHg5Qiww
eDZCLDB4OEIsMHhBMiwweDhCLDB4QTUsMHhENSwweDBFLDB4OUMsMHhBQywweDkzLDB4MDIsMHgy
RCwweEE3LDB4QTcsCi0gICAgMHg4RiwweEFDLDB4RUQsMHg5QiwweDJCLDB4QkYsMHg1NSwweDU1
LDB4OTAsMHhBQywweEVELDB4OUIsMHgyOCwweEFBLDB4REYsMHg3NywKLSAgICAweDkwLDB4QUMs
MHhFRCwweDlCLDB4QTAsMHhCQiwweDdGLDB4NUQsMHg2RSwweEFDLDB4Q0MsMHg5MywweEEwLDB4
RkEsMHg1RiwweDU3LAotICAgIDB4MkUsMHhBNCwweENDLDB4OTMsMHg4OCwweEZGLDB4RjUsMHhE
NSwweDJFLDB4QTQsMHhFRCwweDlCLDB4RUMsMHgyRCwweDJGLDB4RkQsCi0gICAgMHg2MywweDUx
LDB4MjMsMHg0OSwweEVELDB4RkYsMHhENywweEQ1LDB4NDMsMHg1MSwweDIzLDB4NDksMHgwMCww
eEFBLDB4RjgsMHg3NywKLSAgICAweDIyLDB4NDksMHgwMiwweDQxLDB4NzgsMHhEQywweEYyLDB4
QUEsMHgyMywweDQ5LDB4RTIsMHg0MCwweEJGLDB4N0YsMHg3RSwweEI2LAotICAgIDB4MjMsMHg0
OSwweEUyLDB4NDAsMHhBQSwweEZGLDB4REYsMHhERiwweDIzLDB4NDksMHhFMywweDQwLDB4QUYs
MHgzRiwweENCLDB4RUIsCi0gICAgMHg0OSwweDkzLDB4MjMsMHg0OSwweDE1LDB4MzUsMHgzNSww
eDI1LDB4OEEsMHg5QiwweDY5LDB4OTMsMHg2MiwweDU4LDB4N0MsMHg1RSwKLSAgICAweDhBLDB4
OUIsMHgyOCwweDkzLDB4RkYsMHg5RiwweDNGLDB4MkYsMHg4QSwweDlCLDB4MjksMHg5MywweEY3
LDB4RkMsMHhBMCwweEFBLAotICAgIDB4QUIsMHg5QiwweDY3LDB4N0EsMHgwMiwweEEyLDB4RUEs
MHg1OCwweDQ5LDB4OEIsMHg0NiwweDcyLDB4NzgsMHg3NiwweEQ3LDB4NzUsCi0gICAgMHg4Nyww
eDcyLDB4NDYsMHg3MiwweEI3LDB4RUIsMHhFQSwweDJGLDB4QTcsMHg3QSwweEE1LDB4NTksMHg4
QSwweEE4LDB4RTIsMHg3OCwKLSAgICAweDA1LDB4NjIsMHgwMiwweDQxLDB4RjgsMHhERSwweDc3
LDB4RDcsMHg4NCwweDUxLDB4MjMsMHg0MSwweEY1LDB4QkQsMHgyOSwweDBGLAotICAgIDB4QTQs
MHg1MSwweDY0LDB4NDksMHg3QiwweDVBLDB4REEsMHhENywweDg0LDB4NDksMHg0NCwweDQ5LDB4
QjcsMHhFRCwweEI0LDB4QjgsCi0gICAgMHg2NCwweDQ5LDB4MjQsMHg0MSwweEZFLDB4REUsMHg3
QSwweDU4LDB4MjMsMHg0MSwweEUzLDB4MzgsMHhCQSwweEYwLDB4RjAsMHhBMCwKLSAgICAweEE1
LDB4NTEsMHhBMiwweDM4LDB4MDMsMHgyQiwweEJGLDB4RDcsMHg4NCwweDUxLDB4MjMsMHg0MSww
eDc4LDB4RjgsMHhGOCwweDc5LAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhCQywweEQ2LDB4
RjcsMHhCOCwweEUzLDB4MzAsMHhBMiwweDMwLDB4MDIsMHgwRSwweEU4LDB4NzAsCi0gICAgMHhF
MywweDMwLDB4NjEsMHgxOCwweEEyLDB4RkEsMHg3RiwweDVGLDB4ODEsMHgyMCwweDQxLDB4MTgs
MHhCOCwweEJDLDB4M0YsMHgzRCwKLSAgICAweEUzLDB4MzAsMHg4MSwweDIwLDB4MkQsMHgyOSww
eDJCLDB4RkYsMHgyNCwweDM5LDB4NjEsMHgyMCwweDAyLDB4ODAsMHhGQiwweEZGLAotICAgIDB4
NDQsMHg0MSwweEEyLDB4MjgsMHg4MCwweEZFLDB4NTUsMHg1NSwweDQzLDB4NDEsMHhBMiwweDI4
LDB4QUEsMHhBQiwweEVGLDB4QjUsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweERFLDB4QTgs
MHhGOCwweEVBLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGQSwweEVGLDB4RDUsMHg3NywKLSAgICAw
eDAzLDB4MzksMHhBMiwweDI4LDB4QUIsMHg4RiwweEZGLDB4QjUsMHhFMywweDM4LDB4QzIsMHgy
OCwweEUyLDB4RUMsMHhGRSwweEUyLAotICAgIDB4RTMsMHgzMCwweDgxLDB4MjgsMHhBMiwweDYy
LDB4NUUsMHg3RSwweEUzLDB4MzAsMHg4MSwweDIwLDB4MkIsMHhCRiwweEI1LDB4QTUsCi0gICAg
MHhFMywweDMwLDB4QzMsMHgyOCwweEEyLDB4ODIsMHgwRiwweDBELDB4MDMsMHgzMSwweEEyLDB4
MzAsMHg3QSwweEIyLDB4RUEsMHg2QSwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4NkQsMHhG
RSwweEJBLDB4QUYsMHgwMywweDM5LDB4ODEsMHgyMCwweDU1LDB4RUUsMHhBOCwweDgwLAotICAg
IDB4MDMsMHgzOSwweEExLDB4MjgsMHhBRCwweDJGLDB4QTIsMHg4MiwweEUzLDB4MzAsMHhDMiww
eDI4LDB4MUMsMHgyRSwweDlGLDB4REYsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDJBLDB4
RUUsMHhCRSwweEU3LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhBRiwweEFGLDB4RjUsMHhERCwKLSAg
ICAweDAzLDB4MzEsMHhDMiwweDMwLDB4QkUsMHg4RSwweDA5LDB4RUQsMHgwMywweDMxLDB4QzIs
MHgyOCwweDA4LDB4NzgsMHg3MiwweEUwLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MjgsMHg2Qyww
eDVGLDB4NTcsMHhFRiwweEUzLDB4MzAsMHhBMiwweDI4LDB4MjEsMHgzRiwweEI4LDB4QTgsCi0g
ICAgMHgyMywweDMxLDB4QzIsMHgzMCwweERELDB4NUQsMHhGRiwweEY2LDB4MjMsMHgzOSwweEUy
LDB4MzAsMHhGRiwweEZELDB4N0QsMHg4RCwKLSAgICAweDAzLDB4MzksMHhBMSwweDI4LDB4MjIs
MHgzRSwweEI4LDB4OUUsMHg4NCwweDUxLDB4MDMsMHgzOSwweEJGLDB4RkQsMHhCRiwweDA5LAot
ICAgIDB4RTUsMHg1OSwweDQ0LDB4NDEsMHhCNSwweEI3LDB4MkYsMHgyQiwweEFDLDB4OTMsMHgy
NSwweDYyLDB4MjUsMHgyRCwweDBELDB4MjksCi0gICAgMHhFRSwweDlCLDB4QUMsMHg5MywweDgy
LDB4ODAsMHg4MCwweEY3LDB4Q0QsMHg5MywweDZCLDB4OEIsMHg3QywweDUwLDB4NzgsMHg1RSwK
LSAgICAweDZCLDB4OEIsMHgwQSwweDdCLDB4MjAsMHhCOCwweEU4LDB4NjIsMHhFRCwweDlCLDB4
NEIsMHg4MywweDBBLDB4MkIsMHgyOSwweEFELAotICAgIDB4MEQsMHg5QywweEFDLDB4OTMsMHhB
MCwweDhCLDB4QUEsMHg3RiwweEVELDB4OUIsMHhDRCwweDkzLDB4ODgsMHgwMiwweEE4LDB4RkQs
Ci0gICAgMHhFRCwweDlCLDB4QUMsMHg5MywweEY4LDB4QUIsMHg3QiwweDVGLDB4Q0QsMHg5Myww
eDhDLDB4OEIsMHgyOCwweDgwLDB4MDgsMHgyRiwKLSAgICAweENELDB4OTMsMHg4QywweDhCLDB4
MjgsMHhCQSwweEVGLDB4RUIsMHgwRSwweDlDLDB4QUMsMHg5MywweDBCLDB4QkYsMHhCNSwweEY1
LAotICAgIDB4NDMsMHg0OSwweDAyLDB4NDksMHhBQSwweEZFLDB4NTcsMHhENywweDIzLDB4NDks
MHgwMiwweDQxLDB4ODEsMHg3QSwweEZCLDB4RTksCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCww
eEUzLDB4Q0IsMHg5OCwweDU2LDB4MDIsMHg0MSwweEUyLDB4MzgsMHgwOCwweENDLDB4NzIsMHg3
MiwKLSAgICAweDAyLDB4NDEsMHhDMiwweDM4LDB4MkEsMHgwQSwweDIzLDB4M0IsMHgyMywweDQ5
LDB4RTIsMHg0MCwweEVGLDB4RkIsMHhBQiwweDJCLAotICAgIDB4NkEsMHg5MywweDAzLDB4NDks
MHgyNSwweDI1LDB4MjUsMHhCNSwweDhBLDB4OUIsMHhFOCwweDgyLDB4MjAsMHgyMCwweEEyLDB4
NTUsCi0gICAgMHg4QSwweDlCLDB4RTgsMHg4MiwweEUyLDB4N0EsMHg3RSwweDU1LDB4NkEsMHg5
MywweDg3LDB4N0EsMHgwQSwweEFGLDB4RkYsMHg3RiwKLSAgICAweDI5LDB4OTMsMHhFNSwweDYx
LDB4NzAsMHhEQywweDVFLDB4NTcsMHg0NiwweDZBLDB4RTUsMHg2MSwweDAwLDB4MkIsMHhBQSww
eEZELAotICAgIDB4QzgsMHg3QSwweDg0LDB4NTksMHgyQSwweEFBLDB4RkEsMHg1RiwweDY3LDB4
NzIsMHg0MywweDQ5LDB4NzAsMHg1RSwweDc3LDB4RDUsCi0gICAgMHg2MywweDQ5LDB4MDIsMHg0
MSwweEZFLDB4NkEsMHhEQywweDNFLDB4QTUsMHg1MSwweDAyLDB4NDEsMHg4QiwweEFELDB4QUQs
MHhCOCwKLSAgICAweDg0LDB4NTEsMHg2NCwweDQ5LDB4QTcsMHgwOSwweDc5LDB4NkIsMHg4NCww
eDUxLDB4MjQsMHg0MSwweEYwLDB4N0EsMHhGRSwweEVFLAotICAgIDB4NjQsMHg0OSwweDAzLDB4
NDEsMHhBOCwweEVBLDB4RUUsMHg1RSwweDY0LDB4NDEsMHgwMywweDQxLDB4N0IsMHhGRiwweDdG
LDB4NUQsCi0gICAgMHgyMywweDQxLDB4QzIsMHgzOCwweDVBLDB4NkEsMHhFQSwweEE4LDB4NDQs
MHg0OSwweEMyLDB4MzgsMHgwRCwweDJELDB4MEIsMHhBQSwKLSAgICAweDQzLDB4NDksMHhDMiww
eDMwLDB4RkUsMHhGOCwweERFLDB4REUsMHgwMywweDM5LDB4ODEsMHgyOCwweDY4LDB4NzgsMHg3
OCwweEZBLAotICAgIDB4QTIsMHgyOCwweDYxLDB4MjAsMHg1NywweDVFLDB4RjYsMHhCNiwweEMy
LDB4MjgsMHg0MSwweDE4LDB4QkQsMHhBRiwweDhCLDB4MkEsCi0gICAgMHhBMiwweDI4LDB4ODEs
MHgyMCwweDlELDB4Q0QsMHhBMSwweEJBLDB4QzIsMHgyOCwweDgxLDB4MjAsMHhBRiwweEJGLDB4
RkUsMHhERiwKLSAgICAweEEyLDB4MjgsMHg4MSwweDIwLDB4QTIsMHhGRiwweEZCLDB4NUIsMHhF
MywweDMwLDB4ODEsMHgyOCwweDI1LDB4QjUsMHhGNSwweEQ1LAotICAgIDB4MDMsMHgzOSwweEMy
LDB4MzAsMHhCQSwweEZCLDB4RjUsMHhCOSwweEUyLDB4MzAsMHhBMiwweDI4LDB4NzgsMHg3Qyww
eEY4LDB4Q0EsCi0gICAgMHhFMywweDMwLDB4QTIsMHgzMCwweDM1LDB4QjUsMHhFNywweEFGLDB4
RTMsMHgzMCwweEExLDB4MjgsMHg4OCwweEFBLDB4RkIsMHg1OSwKLSAgICAweEUzLDB4MzAsMHg4
MSwweDI4LDB4RkUsMHhFMCwweEZCLDB4N0YsMHhDMiwweDI4LDB4NjEsMHgyMCwweDhCLDB4QUEs
MHgwMiwweDBBLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCRiwweEFCLDB4QUQsMHgyNyww
eDAzLDB4MzksMHhBMiwweDMwLDB4RjIsMHhFQiwweEVGLDB4QUYsCi0gICAgMHgwMywweDM5LDB4
QTIsMHgyOCwweEVGLDB4QUQsMHhCRiwweDIzLDB4MDMsMHgzOSwweEEyLDB4MjgsMHhFQiwweEIy
LDB4QTgsMHhEOCwKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4QjksMHhFRiwweDFGLDB4QkYs
MHgyMywweDM5LDB4QzIsMHgzMCwweERGLDB4NTcsMHg3NiwweEYyLAotICAgIDB4MDMsMHgzMSww
eEExLDB4MjgsMHhCNywweDNGLDB4MkUsMHhBRiwweDAzLDB4MzEsMHhBMiwweDI4LDB4N0YsMHhE
RSwweDU4LDB4RUEsCi0gICAgMHgwNCwweDMxLDB4QTIsMHgyOCwweEFBLDB4QjcsMHhENywweDU3
LDB4MDQsMHgzMSwweEMyLDB4MzAsMHhGQSwweDdBLDB4RjYsMHhERCwKLSAgICAweDAzLDB4MzEs
MHhBMiwweDI4LDB4OEEsMHhFNiwweEZCLDB4QUIsMHgwMywweDMxLDB4QzIsMHgyOCwweERGLDB4
REQsMHhGRiwweDJCLAotICAgIDB4MDMsMHgzMSwweEUyLDB4MzAsMHg4NSwweDhCLDB4RTIsMHg1
OCwweDIzLDB4MzksMHhFMiwweDMwLDB4ODcsMHgyRiwweEY1LDB4RDUsCi0gICAgMHgyMywweDM5
LDB4RTIsMHgzMCwweDVFLDB4RkIsMHhGRiwweDNCLDB4QTUsMHg1MSwweDAyLDB4MzksMHhBRCww
eEFELDB4QUYsMHgwRiwKLSAgICAweDg4LDB4NzIsMHg2MywweDQ5LDB4OTUsMHhGNSwweEI1LDB4
MkYsMHg4QywweDkzLDB4QTksMHg3QSwweDA5LDB4MDEsMHhGOSwweDdFLAotICAgIDB4OEMsMHg4
QiwweDY4LDB4NkEsMHgwMCwweDgwLDB4REYsMHg1NywweDhDLDB4OEIsMHgwNiwweDYyLDB4ODAs
MHhBOCwweDVGLDB4RjcsCi0gICAgMHgyQSwweDdCLDB4MDYsMHg1QSwweDAwLDB4RkEsMHg1NSww
eEZGLDB4OEIsMHg4QiwweDI3LDB4NjIsMHgwQSwweEFGLDB4RDUsMHhGRiwKLSAgICAweDhDLDB4
OTMsMHgyNywweDYyLDB4QTAsMHg3RSwweDVGLDB4N0YsMHhDRCwweDkzLDB4NDcsMHg2MiwweDJC
LDB4RDUsMHg1NSwweDU1LAotICAgIDB4QUQsMHg5MywweDQ3LDB4NjIsMHgwMCwweDAyLDB4QUQs
MHg5NSwweEFDLDB4OTMsMHg0QiwweDgzLDB4MDIsMHhBQiwweDIzLDB4QkQsCi0gICAgMHhBQyww
eDkzLDB4NkMsMHg4QiwweDAwLDB4MDAsMHg4QiwweEU5LDB4Q0QsMHg5MywweDZCLDB4OEIsMHgy
RSwweEFCLDB4QjcsMHhGRiwKLSAgICAweDAzLDB4NDksMHgyMiwweDQxLDB4ODAsMHhBQSwweEFB
LDB4ODIsMHgyMywweDQ5LDB4RTIsMHg0MCwweEIwLDB4QUIsMHhDRSwweEJGLAotICAgIDB4MjMs
MHg0MSwweEUyLDB4NDAsMHg5NSwweEZBLDB4MTIsMHhFMiwweDIzLDB4NDEsMHhFMiwweDQwLDB4
REIsMHhCQiwweEFBLDB4QTIsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEQ3LDB4QkYsMHhF
QSwweEJBLDB4NDMsMHg0OSwweDAyLDB4NDEsMHhFRiwweEZFLDB4N0YsMHg1QiwKLSAgICAweDYz
LDB4NTEsMHhFMiwweDQwLDB4MkYsMHhGRCwweDU3LDB4NUYsMHg2NiwweDcyLDB4MjIsMHg0OSww
eDBCLDB4MjUsMHhCNSwweEI1LAotICAgIDB4QTcsMHg3QSwweEU0LDB4NjEsMHgwMCwweEFFLDB4
RkQsMHg1RCwweEM3LDB4ODIsMHg2NCwweDUxLDB4QTAsMHhFMiwweDdCLDB4N0YsCi0gICAgMHhD
NSwweDYxLDB4QzIsMHg0MCwweDAwLDB4QUEsMHg3RSwweDVGLDB4QzQsMHg2MSwweDAzLDB4NDks
MHgwMCwweDgyLDB4MDksMHgyRCwKLSAgICAweEE0LDB4NTksMHg0MywweDQ5LDB4NTgsMHg3Qyww
eEU4LDB4ODAsMHg4NCwweDUxLDB4MjMsMHg0OSwweEFELDB4QkQsMHgwQiwweDgyLAotICAgIDB4
QTUsMHg1MSwweDQzLDB4NDksMHg5NSwweDNGLDB4OEQsMHhDQSwweEE1LDB4NTEsMHg0NCwweDQ5
LDB4QTAsMHhBRSwweEJFLDB4NzcsCi0gICAgMHg4NCwweDQ5LDB4MjMsMHg0MSwweEU4LDB4QUEs
MHhGQSwweERFLDB4NjQsMHg1MSwweDQ0LDB4NDksMHhFQiwweDU1LDB4NzksMHg4RCwKLSAgICAw
eEU2LDB4NjEsMHgyMywweDQ5LDB4NTUsMHg5NSwweDJELDB4MDIsMHgwNiwweDZBLDB4MjMsMHg0
MSwweDc1LDB4MkEsMHhBMCwweEFBLAotICAgIDB4QTUsMHg1OSwweDIzLDB4NDEsMHg1NSwweDU4
LDB4RTAsMHg2MCwweDY0LDB4NDksMHhFMiwweDM4LDB4RkUsMHg3OCwweEZBLDB4N0YsCi0gICAg
MHgyMywweDQxLDB4QzIsMHgzMCwweERFLDB4RjgsMHhFMiwweEZBLDB4MDMsMHgzOSwweEEyLDB4
MjgsMHg3OCwweDYwLDB4NDIsMHg0QiwKLSAgICAweDAzLDB4MzEsMHg2MSwweDIwLDB4RjcsMHhB
RiwweDBELDB4MkQsMHhFMywweDMwLDB4ODEsMHgyMCwweEY3LDB4QTAsMHhFMCwweEU4LAotICAg
IDB4QzIsMHgyOCwweDgyLDB4MjAsMHhGOCwweEUwLDB4RTgsMHhCQSwweEMyLDB4MjgsMHg4MSww
eDIwLDB4REQsMHhERCwweDlGLDB4M0YsCi0gICAgMHgyNCwweDM5LDB4ODEsMHgyOCwweDc1LDB4
NUQsMHhFRCwweDgwLDB4QzIsMHgzMCwweDYxLDB4MjgsMHhCRiwweEJELDB4QkYsMHhFMCwKLSAg
ICAweDI0LDB4NDEsMHhBMiwweDMwLDB4RTksMHg4OSwweDBCLDB4MDksMHg0MywweDQxLDB4QTEs
MHgzMCwweDdGLDB4RkEsMHhGQSwweEU4LAotICAgIDB4RTIsMHgzOCwweEEyLDB4MzAsMHhGNyww
eDU3LDB4NTcsMHg1QSwweDAzLDB4MzEsMHhBMSwweDI4LDB4NzUsMHhGNSwweEFELDB4MEYsCi0g
ICAgMHgyNCwweDM5LDB4ODEsMHgyOCwweEQ1LDB4N0YsMHhBQSwweDAwLDB4MDMsMHgzOSwweDgx
LDB4MjgsMHhGRCwweDVELDB4RkYsMHhBOCwKLSAgICAweDA0LDB4MzEsMHg4MiwweDI4LDB4MkYs
MHgzNSwweDNGLDB4QUIsMHgwMywweDMxLDB4QzIsMHgzMCwweEZBLDB4OTIsMHhCMCwweDYyLAot
ICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHgwMCwweDAwLDB4QkIsMHhEQSwweDAzLDB4MzksMHhB
MiwweDMwLDB4NkEsMHhCOCwweEZBLDB4RkEsCi0gICAgMHgwMywweDMxLDB4QTIsMHgzMCwweEJG
LDB4M0QsMHhCRiwweEJCLDB4MjQsMHgzOSwweEUzLDB4MzAsMHhERSwweEZBLDB4RkUsMHhGQSwK
LSAgICAweDAyLDB4MzEsMHhBMSwweDI4LDB4RUUsMHhGQSwweEYyLDB4RjgsMHhFMiwweDMwLDB4
QzIsMHgyOCwweEY4LDB4REMsMHhENSwweDdELAotICAgIDB4QzIsMHgyOCwweEEyLDB4MjgsMHgz
OCwweDAwLDB4MDIsMHhFOSwweEUzLDB4MzAsMHhBMSwweDI4LDB4QTIsMHgwMywweDJFLDB4RTcs
Ci0gICAgMHgwMywweDMxLDB4RTMsMHgzMCwweDU1LDB4REYsMHg5NywweDk1LDB4MDMsMHgzMSww
eEMyLDB4MjgsMHgyQiwweEFGLDB4QUUsMHhGRSwKLSAgICAweDAzLDB4MzEsMHhFMiwweDMwLDB4
NkEsMHg0QSwweEI3LDB4NzUsMHgwMywweDM5LDB4QzIsMHgzMCwweEFFLDB4M0YsMHgxRSwweDFD
LAotICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHhFNywweEFGLDB4MjcsMHgyNSwweEE1LDB4NTEs
MHgwMywweDQxLDB4MDksMHhBRiwweEJFLDB4MjIsCi0gICAgMHg0RSwweEE0LDB4QzUsMHg1OSww
eEI1LDB4QjUsMHgyNSwweDJELDB4QUYsMHhCNCwweENDLDB4OUIsMHhGRCwweEFCLDB4QTIsMHg4
MCwKLSAgICAweEFGLDB4QjQsMHg4QiwweDkzLDB4NTcsMHhFQSwweDg4LDB4MDIsMHg4RiwweEI0
LDB4MkEsMHg4MywweDU1LDB4RUEsMHgwMCwweDAwLAotICAgIDB4MkUsMHhBQywweEU5LDB4N0Es
MHg1NSwweDdGLDB4N0UsMHg3OCwweDBBLDB4N0IsMHhBOCwweDcyLDB4REEsMHhGOCwweEU4LDB4
NzgsCi0gICAgMHhFOSwweDdBLDB4NjcsMHg2MiwweEZBLDB4QTAsMHhCQiwweEQ3LDB4RTksMHg3
MiwweDY3LDB4NkEsMHhGNywweEY2LDB4RkUsMHhCMiwKLSAgICAweEM5LDB4NzIsMHg0NiwweDYy
LDB4NUQsMHg3RiwweEZFLDB4RTgsMHg2QiwweDgzLDB4MjcsMHg2MiwweDAzLDB4MkYsMHhENSww
eDU3LAotICAgIDB4NkIsMHg4QiwweDQ3LDB4NjIsMHgwMCwweDAwLDB4MDAsMHgwOSwweDhDLDB4
OEIsMHg0QiwweDgzLDB4MEQsMHg4QiwweEVDLDB4RTgsCi0gICAgMHgwMywweDQ5LDB4RTIsMHg0
MCwweDEwLDB4ODIsMHg1MiwweDdGLDB4MDMsMHg0MSwweEUyLDB4NDAsMHgyNiwweDI2LDB4ODYs
MHgzQywKLSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4N0YsMHhBRSwweEFBLDB4QUUsMHgyMyww
eDQ5LDB4MDIsMHg0MSwweEQ1LDB4M0YsMHg3QywweEU3LAotICAgIDB4NDMsMHg0OSwweDAyLDB4
NDEsMHhENywweEQ0LDB4N0EsMHhFOCwweDIzLDB4NDksMHgwMywweDQxLDB4MjksMHgwMiwweDc3
LDB4NUYsCi0gICAgMHgyMywweDQ5LDB4QzIsMHgzOCwweEY4LDB4RTIsMHhDQSwweDhGLDB4ODQs
MHg1OSwweEMyLDB4NDAsMHgyRiwweDNELDB4RkYsMHhGRiwKLSAgICAweDI2LDB4NkEsMHg0Myww
eDQ5LDB4OEEsMHhBMiwweEZELDB4NTUsMHhDNSwweDU5LDB4QzIsMHg0MCwweEE4LDB4RkUsMHg3
RiwweDVGLAotICAgIDB4MDMsMHg0MSwweEMyLDB4NDAsMHg4QSwweENFLDB4QkYsMHhFRiwweDA1
LDB4NjIsMHgwMywweDQ5LDB4QUQsMHgyRCwweDhELDB4MkQsCi0gICAgMHhFNSwweDYxLDB4ODQs
MHg1OSwweDdFLDB4N0EsMHg2QSwweEVDLDB4RTYsMHg1OSwweDY0LDB4NTEsMHhGNSwweERELDB4
RkYsMHhFQiwKLSAgICAweEE1LDB4NTEsMHg2NCwweDQ5LDB4RTIsMHg2MCwweDc4LDB4NUEsMHg4
NSwweDUxLDB4MjIsMHgzOSwweEVBLDB4QUEsMHhBQSwweEEwLAotICAgIDB4NjQsMHg0OSwweDIz
LDB4NDEsMHhGQSwweEU4LDB4QTgsMHgyMiwweDY2LDB4NzIsMHg0MywweDQ5LDB4QUQsMHgyQiww
eDhBLDB4QTIsCi0gICAgMHg0NiwweDZBLDB4MjIsMHg0OSwweEEwLDB4RUMsMHhGQSwweDdBLDB4
QTQsMHg1OSwweEUyLDB4MzgsMHhBOCwweEY4LDB4REUsMHg1NSwKLSAgICAweEE0LDB4NTEsMHgw
MywweDQxLDB4NzAsMHg3QSwweEZBLDB4NkYsMHgyMywweDQxLDB4QzIsMHgzMCwweEVFLDB4OTYs
MHhGRiwweDJBLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHg2QSwweEZFLDB4RjgsMHhGRSww
eEMyLDB4MzAsMHg4MiwweDI4LDB4QkIsMHhENywweEVDLDB4RUEsCi0gICAgMHhFMywweDMwLDB4
ODIsMHgyMCwweDI1LDB4QTcsMHhBRCwweEFELDB4QzMsMHgzMCwweEEyLDB4MjgsMHg3QywweEE4
LDB4OEIsMHhGQiwKLSAgICAweDQ0LDB4NDEsMHhBMiwweDI4LDB4RDUsMHhCNSwweDI1LDB4MEQs
MHg2NCwweDQ5LDB4QzMsMHgzMCwweEFELDB4QUEsMHgyOCwweDgyLAotICAgIDB4NDUsMHg0MSww
eEUzLDB4MzgsMHhCOCwweDU0LDB4NTYsMHg1RSwweDIzLDB4NDEsMHhDMiwweDM4LDB4REUsMHhB
OCwweEEyLDB4RkEsCi0gICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDNELDB4OTcsMHhCQiwweDdG
LDB4NjQsMHg0OSwweDAzLDB4NDEsMHhGQSwweDgyLDB4MEIsMHg5NSwKLSAgICAweDQ0LDB4NDks
MHhBMSwweDI4LDB4N0UsMHg1OCwweDcwLDB4RTgsMHhFMywweDMwLDB4ODEsMHgyOCwweDBCLDB4
QkEsMHhENywweEFFLAotICAgIDB4NDQsMHgzOSwweEEyLDB4MzAsMHgyQSwweEJGLDB4QUQsMHhG
NywweDI0LDB4MzksMHhDMiwweDI4LDB4RTgsMHhCRSwweEZGLDB4N0IsCi0gICAgMHhFMywweDMw
LDB4ODEsMHgyOCwweDA4LDB4MDgsMHhCRSwweEZELDB4RTMsMHgzMCwweEEyLDB4MjgsMHg0MCww
eEY4LDB4RUEsMHhGRiwKLSAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4OTIsMHhGNiwweEFGLDB4
NTgsMHgwMywweDM5LDB4QzIsMHgyOCwweEFCLDB4OEUsMHhFRCwweDVELAotICAgIDB4RTIsMHgz
MCwweEEyLDB4MjgsMHhCOCwweEJFLDB4RkEsMHhBRiwweDAzLDB4MzEsMHhDMiwweDI4LDB4OEYs
MHgyRiwweDk3LDB4RDcsCi0gICAgMHhFMywweDMwLDB4QzIsMHgyOCwweEVDLDB4NjIsMHhBQyww
eEVGLDB4RTIsMHgzMCwweEExLDB4MjgsMHhCRSwweDNGLDB4QkEsMHhFQSwKLSAgICAweEUyLDB4
MzAsMHhBMiwweDI4LDB4NjIsMHg4RSwweEFBLDB4OEIsMHgwMywweDMxLDB4QTEsMHgyOCwweEZE
LDB4QUYsMHg4QiwweDJCLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHg4RSwweDJFLDB4Mzcs
MHg1NywweDAzLDB4MzksMHhDMiwweDMwLDB4RkEsMHg4MCwweDBBLDB4QUYsCi0gICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweEQ3LDB4QkUsMHhCOCwweEFBLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhC
RiwweERCLDB4NzIsMHg2MiwKLSAgICAweDY0LDB4NDksMHhBMiwweDMwLDB4MkYsMHgyRiwweDNG
LDB4QkYsMHhFOSwweDdBLDB4MjMsMHg0MSwweEZGLDB4RkYsMHhCRCwweDM1LAotICAgIDB4MTEs
MHhDNSwweEE5LDB4NzIsMHgyNSwweDJELDB4MDMsMHgwMiwweDMwLDB4Q0QsMHg4RSwweEI0LDB4
N0YsMHhGRiwweDdFLDB4RTgsCi0gICAgMHhBRiwweEJDLDB4NkUsMHhBQywweDJCLDB4MjgsMHhF
RiwweDk0LDB4RDAsMHhCQywweDZFLDB4QjQsMHhBQSwweDg4LDB4RUIsMHg3NywKLSAgICAweDhG
LDB4QjQsMHgyQiwweDgzLDB4NzgsMHhFMCwweEEwLDB4ODgsMHgyRCwweEE0LDB4QTksMHg3Miww
eDc3LDB4N0YsMHhGRSwweDYwLAotICAgIDB4QzksMHg3MiwweDQ2LDB4NjIsMHhERiwweDdDLDB4
NkEsMHhBOCwweEU5LDB4NzIsMHg2NywweDZBLDB4QUYsMHhBOSwweEFELDB4MkYsCi0gICAgMHgw
QSwweDdCLDB4QTgsMHg2QSwweDdGLDB4RTIsMHg4QSwweDBBLDB4RTksMHg3QSwweDA2LDB4NUEs
MHg3QSwweEZBLDB4QzgsMHhBOCwKLSAgICAweEVBLDB4N0EsMHhFNiwweDU5LDB4MzUsMHhENSww
eDVGLDB4N0UsMHg2QiwweDgzLDB4QTUsMHg0OSwweDAwLDB4MDMsMHhCRCwweDU1LAotICAgIDB4
MjMsMHg0OSwweEUyLDB4NDAsMHhGQiwweEU4LDB4QUEsMHg3OSwweDIzLDB4NDksMHhFMiwweDQw
LDB4Q0IsMHg1QiwweDU2LDB4QjcsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweDhBLDB4QUEs
MHg3QiwweERDLDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBRiwweDAwLDB4QUEsMHhFQiwKLSAgICAw
eDIzLDB4NDEsMHhFMiwweDQwLDB4ODAsMHgwMCwweEEyLDB4NjgsMHgyMywweDQ5LDB4QzIsMHgz
OCwweEUwLDB4RkUsMHhCRiwweEFFLAotICAgIDB4MDMsMHg0MSwweEUyLDB4NDAsMHgwOSwweDQz
LDB4NUUsMHhCRCwweDIzLDB4NDksMHhFMiwweDQwLDB4QUEsMHhCQiwweEZGLDB4RTUsCi0gICAg
MHgwMiwweDQxLDB4RTIsMHg0MCwweDIzLDB4QUYsMHgwOSwweDlELDB4MjMsMHg0OSwweEMyLDB4
MzgsMHg3QSwweERDLDB4RUUsMHhGRiwKLSAgICAweDAzLDB4NDksMHhFMiwweDQwLDB4MDUsMHhC
RiwweDk3LDB4N0QsMHgyNiwweDZBLDB4MDMsMHg0OSwweDJELDB4MjksMHgwRCwweDBELAotICAg
IDB4MDYsMHg2MiwweEE0LDB4NTksMHg3QywweEQ4LDB4RTgsMHhBQSwweEU1LDB4NjEsMHg4NCww
eDUxLDB4NUQsMHhGOCwweDZBLDB4N0MsCi0gICAgMHg4NCwweDUxLDB4MDMsMHg0MSwweEEwLDB4
QkEsMHhERSwweEZFLDB4NjQsMHg0OSwweDIzLDB4NDEsMHg4MCwweDgwLDB4OUEsMHhENSwKLSAg
ICAweDY0LDB4NDksMHgwMywweDQxLDB4QUEsMHhFMiwweDZBLDB4QzcsMHgyNiwweDZBLDB4MDMs
MHg0OSwweDAzLDB4MEIsMHhBRCwweEE1LAotICAgIDB4RTUsMHg2MSwweDYxLDB4MjgsMHhFMCww
eDc4LDB4N0UsMHg3QSwweEMyLDB4MzgsMHg2MSwweDI4LDB4OEEsMHhBNSwweEQ1LDB4QUMsCi0g
ICAgMHgyMywweDQxLDB4QzIsMHgzMCwweEMzLDB4RjksMHg3RCwweEQ1LDB4MjMsMHgzOSwweEMy
LDB4MzAsMHgyMiwweEEyLDB4RjIsMHg1MiwKLSAgICAweDAzLDB4MzksMHg4MiwweDIwLDB4QTAs
MHg4QSwweEVBLDB4N0YsMHhDMiwweDI4LDB4NjEsMHgyMCwweEEyLDB4QTgsMHhCRiwweEY1LAot
ICAgIDB4QzIsMHgyOCwweDgyLDB4MjAsMHgyQSwweDBGLDB4MEQsMHgyRiwweEUyLDB4MjgsMHg4
MSwweDI4LDB4RUUsMHg5QSwweEJDLDB4RkEsCi0gICAgMHg0NCwweDQxLDB4QzIsMHgzMCwweDI1
LDB4MjUsMHgyRCwweEFELDB4NDQsMHg0OSwweDgxLDB4MjgsMHgwMCwweEEwLDB4NUEsMHg1RSwK
LSAgICAweDQ0LDB4NDksMHg2MSwweDIwLDB4QTgsMHhBQSwweEY3LDB4RkQsMHgwMywweDQxLDB4
ODEsMHgyOCwweEE4LDB4QUEsMHhBQSwweDdELAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhG
MCwweEMwLDB4MDIsMHg4OSwweDIzLDB4NDEsMHhDMiwweDM4LDB4MzcsMHhCRiwweDNGLDB4RUIs
Ci0gICAgMHgyMywweDQxLDB4RTIsMHgzOCwweEUwLDB4RkYsMHhCRSwweEZFLDB4MDMsMHg0MSww
eEEyLDB4MjgsMHg1RiwweDdFLDB4RjgsMHhGOCwKLSAgICAweEUzLDB4MzAsMHg2MSwweDI4LDB4
QUEsMHhCQywweDdCLDB4RUEsMHhFMywweDMwLDB4ODEsMHgyOCwweEU4LDB4RjcsMHhENSwweEY1
LAotICAgIDB4QzIsMHgyOCwweDgyLDB4MjgsMHhEQSwweDgyLDB4MDMsMHhCNSwweEUzLDB4MzAs
MHhBMiwweDI4LDB4NzUsMHhFQSwweDgyLDB4M0YsCi0gICAgMHgwMywweDMxLDB4ODIsMHgyOCww
eDdGLDB4N0UsMHhFOCwweEEyLDB4QzIsMHgyOCwweDgxLDB4MjgsMHhFMywweEFELDB4RkYsMHhB
MCwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4OUQsMHg3NywweEFGLDB4QUYsMHgwMywweDMx
LDB4QzIsMHgzMCwweDY3LDB4RUYsMHhDQSwweEZCLAotICAgIDB4MDMsMHgzMSwweEMyLDB4Mjgs
MHhENSwweEQ1LDB4OEYsMHgwRSwweDAyLDB4MzEsMHhDMiwweDI4LDB4QTUsMHg5NSwweEZGLDB4
REIsCi0gICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEVFLDB4QjgsMHg2RSwweEVFLDB4MjQsMHgz
OSwweEMyLDB4MzAsMHgzQiwweDJCLDB4MkIsMHhFRCwKLSAgICAweDIzLDB4MzksMHhDMiwweDMw
LDB4NTYsMHhERSwweERFLDB4M0YsMHgyMywweDM5LDB4RTIsMHgzMCwweDU1LDB4NUQsMHhENSww
eEJDLAotICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHhGRCwweEI3LDB4RkYsMHhGQywweDAzLDB4
NDEsMHhFMywweDMwLDB4NzcsMHhFQSwweEFBLDB4MkYsCi0gICAgMHg2NCwweDQ5LDB4QzIsMHgz
OCwweEZELDB4QTUsMHhBQiwweDJGLDB4MEMsMHhBNCwweDg1LDB4NTEsMHhCNSwweDM1LDB4M0Qs
MHgyRCwKLSAgICAweDMxLDB4Q0QsMHhBRiwweEI0LDB4MDMsMHg4OSwweDI5LDB4QTksMHgzMSww
eEM1LDB4RDAsMHhCQywweDgwLDB4MDAsMHhBQSwweEY5LAotICAgIDB4MTAsMHhDNSwweDhFLDB4
QjQsMHg3RSwweEUwLDB4MDAsMHgwOCwweDEwLDB4QzUsMHg0RCwweEFDLDB4RDcsMHg1RSwweEY4
LDB4ODAsCi0gICAgMHhEMCwweEJDLDB4NEUsMHhBQywweDU3LDB4RjUsMHhGNSwweEZDLDB4NkUs
MHhBQywweDZCLDB4OEIsMHg3OCwweEU4LDB4RTAsMHg4MCwKLSAgICAweENDLDB4OUIsMHg4OCww
eDZBLDB4NUYsMHg3RSwweEY4LDB4ODgsMHgwQSwweDdCLDB4ODcsMHg2QSwweEJELDB4QkYsMHhC
RiwweEE4LAotICAgIDB4MkEsMHg4MywweEM4LDB4NzIsMHgyOSwweDJGLDB4MkUsMHgyRiwweDRC
LDB4ODMsMHhBOSwweDZBLDB4N0EsMHhBQSwweEEwLDB4ODIsCi0gICAgMHgyQSwweDgzLDB4Mjcs
MHg1QSwweDdGLDB4RkEsMHhFOCwweEEwLDB4ODgsMHg2QSwweDY0LDB4NDEsMHg1RiwweDdBLDB4
RTgsMHhFMCwKLSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4REQsMHhGQiwweEFGLDB4QkIsMHgy
MywweDQ5LDB4RTIsMHg0MCwweEFGLDB4RkYsMHhGQSwweEE4LAotICAgIDB4MjMsMHg0OSwweEUy
LDB4NDAsMHhGRiwweEVGLDB4Q0IsMHhDQiwweDIzLDB4NDksMHgwMiwweDQxLDB4NkYsMHhGNSww
eDkxLDB4ODcsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEE4LDB4QTAsMHhFMCwweEJDLDB4
MDMsMHg0MSwweEUyLDB4NDAsMHgyQywweDMzLDB4ODcsMHhGRiwKLSAgICAweDAzLDB4NDEsMHhF
MiwweDM4LDB4MEEsMHgwRSwweEI1LDB4REUsMHgwMywweDQxLDB4RTIsMHg0MCwweDZCLDB4QjMs
MHgyMCwweEJCLAotICAgIDB4MDMsMHg0MSwweEMxLDB4MzgsMHhBRSwweDAwLDB4ODgsMHhDRiww
eDIzLDB4NDEsMHhFMiwweDQwLDB4RjUsMHhFRiwweEJGLDB4RkQsCi0gICAgMHgwMiwweDQxLDB4
QzIsMHg0MCwweEEwLDB4ODAsMHhCOCwweEY4LDB4NDYsMHg2QSwweDAyLDB4NDEsMHg4RCwweDJE
LDB4MEQsMHgyRCwKLSAgICAweDI2LDB4NkEsMHhDNSwweDU5LDB4REUsMHhEOCwweEQ4LDB4RkEs
MHgwNSwweDYyLDB4MDMsMHg0MSwweEU4LDB4RjgsMHg3QSwweDdDLAotICAgIDB4NDQsMHg0OSww
eEUyLDB4MzgsMHgwQSwweEE4LDB4RkQsMHg3RiwweDQ0LDB4NDEsMHgwMywweDM5LDB4MkUsMHgy
QSwweDBELDB4ODksCi0gICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweEVBLDB4RUEsMHg2MiwweEFB
LDB4NjQsMHg0OSwweEMyLDB4MzAsMHgyRiwweEZBLDB4NUUsMHg1RSwKLSAgICAweEU1LDB4NTks
MHhFMywweDM4LDB4ODIsMHg4QSwweEZELDB4NzUsMHgwMywweDM5LDB4ODEsMHgyMCwweDc4LDB4
RTgsMHhGQywweDdBLAotICAgIDB4QzIsMHgzMCwweEExLDB4MjAsMHhBNywweEFGLDB4OEIsMHhB
RCwweEUzLDB4MzAsMHg4MSwweDIwLDB4RjAsMHhGQSwweDZGLDB4N0EsCi0gICAgMHhDMiwweDI4
LDB4NjEsMHgyMCwweDcyLDB4NTcsMHg1NSwweEQ1LDB4QTIsMHgyOCwweDYxLDB4MjAsMHhBNSww
eDJGLDB4M0IsMHgyQSwKLSAgICAweEUzLDB4MzAsMHg4MSwweDI4LDB4QkIsMHhBQiwweEFELDB4
MkYsMHhDMiwweDI4LDB4QTIsMHgyOCwweDAwLDB4MzMsMHgxQSwweEMwLAotICAgIDB4MjQsMHgz
OSwweEEyLDB4MjgsMHgwRCwweEY3LDB4N0YsMHg1NywweEUzLDB4MzAsMHg4MSwweDIwLDB4Nzgs
MHhCOCwweEZGLDB4RjUsCi0gICAgMHhDMiwweDI4LDB4NjEsMHgyMCwweEE5LDB4ODgsMHgwMCww
eEEwLDB4QTEsMHgyOCwweDYxLDB4MjAsMHhGRSwweEFFLDB4RUUsMHhBQSwKLSAgICAweEUzLDB4
MzgsMHg4MSwweDI4LDB4MDMsMHgyOSwweEI1LDB4QkQsMHgwMywweDQxLDB4QzIsMHgzMCwweDBC
LDB4QTIsMHgyMiwweEI1LAotICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHg1QSwweEFBLDB4ODgs
MHgwOCwweDIzLDB4NDEsMHhBMiwweDMwLDB4RkUsMHg1QSwweDU4LDB4RjgsCi0gICAgMHhDMiww
eDMwLDB4ODIsMHgyOCwweEE4LDB4QTgsMHhBQSwweDJELDB4RTMsMHgzMCwweDgxLDB4MjgsMHg2
QSwweENBLDB4MEIsMHhBRiwKLSAgICAweEUzLDB4MzAsMHg4MSwweDI4LDB4NTUsMHg1NSwweEZF
LDB4NjIsMHhDMiwweDI4LDB4ODIsMHgyOCwweDJGLDB4RUQsMHg5NSwweEJELAotICAgIDB4MDMs
MHgzOSwweEEyLDB4MjgsMHhDQiwweEVELDB4RUYsMHhFQiwweEMyLDB4MjgsMHg4MSwweDI4LDB4
QUEsMHhGRSwweDdFLDB4RUUsCi0gICAgMHhFMywweDMwLDB4ODEsMHgyMCwweEFCLDB4QkYsMHg5
NSwweEFGLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCRSwweDlGLDB4RDcsMHhCNywKLSAgICAweDAz
LDB4MzksMHhBMiwweDI4LDB4MkEsMHg4QiwweEFELDB4QUYsMHgwMywweDMxLDB4QTIsMHgyOCww
eEVBLDB4QUUsMHg4RCwweDc5LAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhBQiwweDVCLDB4
N0UsMHg3RCwweEMyLDB4MzAsMHhFMywweDI4LDB4QkEsMHhFOCwweDBBLDB4QTIsCi0gICAgMHgy
MywweDQxLDB4QzIsMHgzMCwweEY5LDB4QUYsMHgwOSwweEFGLDB4MjMsMHg0MSwweDAzLDB4Mzks
MHg1RSwweDY3LDB4OTYsMHgxNiwKLSAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4NzIsMHgyMiww
eDBCLDB4M0UsMHg0NCwweDQ5LDB4RTIsMHgzOCwweEY1LDB4MkIsMHgyMywweEEyLAotICAgIDB4
QzYsMHg1OSwweDIzLDB4NDEsMHhCNSwweDJGLDB4M0IsMHgwQiwweEVFLDB4QTMsMHhFNiwweDU5
LDB4MkQsMHhBNSwweEJGLDB4RUYsCi0gICAgMHhGMCwweEJDLDB4MkIsMHg4QiwweDAwLDB4MEIs
MHhCRCwweDU1LDB4RjAsMHhCQywweEFCLDB4OTMsMHgwMCwweDAwLDB4MDIsMHhBNSwKLSAgICAw
eDEwLDB4QzUsMHhGMCwweEJDLDB4OEQsMHhBNywweEFGLDB4QkQsMHgxMCwweEM1LDB4Q0YsMHhC
QywweEE4LDB4QTAsMHhCRSwweDdFLAotICAgIDB4RjAsMHhCQywweDhGLDB4QjQsMHg3OCwweDA4
LDB4MjIsMHgwQSwweEYwLDB4QkMsMHg0RSwweEFDLDB4NzcsMHg3OCwweDYwLDB4ODAsCi0gICAg
MHg0RSwweEFDLDB4QUMsMHg5MywweDVGLDB4RkEsMHhFQSwweEE4LDB4MkQsMHhBNCwweDA5LDB4
N0IsMHg1RiwweEU4LDB4MDIsMHg4MCwKLSAgICAweDJELDB4OUMsMHgwQSwweDdCLDB4NTUsMHg1
RiwweEUyLDB4MDAsMHhDQywweDkzLDB4MkEsMHg3QiwweEY1LDB4N0QsMHhGRiwweEEwLAotICAg
IDB4Q0IsMHg5MywweEVBLDB4N0EsMHg3RiwweEZFLDB4RkIsMHg4MCwweDhCLDB4OEIsMHgyNyww
eDVBLDB4N0YsMHg3QSwweEZBLDB4QTgsCi0gICAgMHgyMywweDQ5LDB4RTIsMHgzOCwweEJGLDB4
OEIsMHhBQiwweDZDLDB4MjMsMHg0OSwweEUzLDB4NDAsMHg4QSwweEFBLDB4QTYsMHhFRCwKLSAg
ICAweDIzLDB4NDksMHhFMywweDQwLDB4QTIsMHhFRSwweEJFLDB4RkUsMHgyMywweDQ5LDB4RTIs
MHg0MCwweEYwLDB4NjAsMHhBOCwweERBLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHg3QSww
eDlDLDB4NkMsMHhGQSwweDAzLDB4NDEsMHhDMiwweDM4LDB4QUIsMHgwRSwweEEzLDB4NzcsCi0g
ICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDNFLDB4QUIsMHhFQiwweEVGLDB4MDMsMHg0MSwweEMy
LDB4MzgsMHhCMiwweEZFLDB4RkMsMHhFQywKLSAgICAweEUyLDB4NDAsMHgwMywweDMxLDB4Mjgs
MHgwOCwweDgwLDB4MkEsMHgwMywweDQxLDB4RTIsMHg0MCwweEVELDB4NTksMHhFRCwweEMzLAot
ICAgIDB4MDMsMHg0MSwweEMyLDB4NDAsMHgzQSwweDI4LDB4RUYsMHgyQSwweDY3LDB4NzIsMHgw
MiwweDQxLDB4MkQsMHgyNSwweDI1LDB4MjUsCi0gICAgMHg0NiwweDZBLDB4RTUsMHg2MSwweERD
LDB4NzgsMHg1QSwweEY4LDB4RTUsMHg1OSwweDAzLDB4NDEsMHg3OCwweDc4LDB4NUMsMHg1OCwK
LSAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4QUYsMHg4RiwweEVELDB4RjksMHgyMywweDM5LDB4
RTMsMHgzOCwweEYyLDB4NzgsMHg4RiwweEFFLAotICAgIDB4NDMsMHg0MSwweEUzLDB4MzAsMHg4
MiwweEJGLDB4REYsMHg3RiwweDQ0LDB4NDEsMHhFMiwweDMwLDB4N0EsMHhGOCwweEFBLDB4RUQs
Ci0gICAgMHgyMywweDM5LDB4QzIsMHgzMCwweDdGLDB4N0YsMHg3OCwweEEyLDB4RTIsMHgzMCww
eEExLDB4MjgsMHhFRSwweEZGLDB4NTcsMHhGOCwKLSAgICAweEUzLDB4MjgsMHhBMiwweDI4LDB4
QUYsMHg3RiwweDU1LDB4QTYsMHhFMiwweDI4LDB4ODEsMHgyMCwweDVFLDB4NUYsMHhGQiwweDIw
LAotICAgIDB4RTMsMHgzMCwweDgxLDB4MjAsMHhENSwweEFELDB4MkEsMHhBQSwweEUzLDB4MzAs
MHhBMiwweDI4LDB4RDUsMHhFNSwweEJCLDB4QUUsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCww
eDJGLDB4QkYsMHhFQSwweEEzLDB4RTMsMHgzMCwweEEyLDB4MjgsMHg2QSwweEU4LDB4MjAsMHgy
OCwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4REYsMHhFRSwweEI4LDB4RUMsMHhFMiwweDI4
LDB4QTIsMHgyOCwweDU1LDB4NTcsMHhGNiwweEYyLAotICAgIDB4QzIsMHgyOCwweDgxLDB4MjAs
MHg2MywweDZCLDB4QUYsMHhENywweEMyLDB4MjgsMHg4MiwweDIwLDB4RUYsMHhFRSwweEM4LDB4
Q0UsCi0gICAgMHhDMiwweDI4LDB4ODIsMHgyMCwweDhCLDB4OEEsMHhCQiwweDU3LDB4QzIsMHgz
MCwweDYxLDB4MjAsMHgyQSwweEJGLDB4QkYsMHhGNiwKLSAgICAweDI0LDB4NDEsMHg4MSwweDIw
LDB4MEEsMHhBRiwweERELDB4RDcsMHg0NCwweDQxLDB4QzIsMHgzMCwweDYwLDB4RTAsMHhFMyww
eEZELAotICAgIDB4RTMsMHgzMCwweDgxLDB4MjgsMHhGNSwweEZGLDB4RUEsMHg4OCwweEUyLDB4
MzAsMHhBMiwweDI4LDB4NUQsMHg1NSwweEQ3LDB4QUEsCi0gICAgMHhFMywweDMwLDB4QTIsMHgy
OCwweEJGLDB4MzUsMHgyQiwweEEwLDB4MjMsMHgzOSwweEEyLDB4MjgsMHhGRCwweEFBLDB4OEUs
MHgwQiwKLSAgICAweDQ0LDB4NDEsMHhBMiwweDMwLDB4NUQsMHg3RiwweEEyLDB4MDIsMHgyNCww
eDM5LDB4ODEsMHgyOCwweEQ3LDB4NUYsMHhGRSwweDg4LAotICAgIDB4MDMsMHgzMSwweEEyLDB4
MjgsMHg4OSwweDBELDB4RUIsMHhBRiwweEUzLDB4MzAsMHhBMiwweDI4LDB4QkUsMHg3OCwweDc4
LDB4RkUsCi0gICAgMHhDMiwweDI4LDB4ODIsMHgyOCwweDAwLDB4RUEsMHhFQiwweEZBLDB4QzIs
MHgyOCwweDgxLDB4MjgsMHhBMiwweDgzLDB4MEQsMHhDNSwKLSAgICAweEMyLDB4MzAsMHhBMiww
eDI4LDB4QjUsMHg1NywweDdGLDB4RTksMHhDMiwweDI4LDB4ODIsMHgyOCwweDAwLDB4MEIsMHgw
RCwweDJFLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MjgsMHhCQiwweERELDB4NkYsMHg4QSwweDAy
LDB4MzksMHhDMiwweDMwLDB4MkEsMHhCRCwweEZELDB4QTcsCi0gICAgMHg2NCwweDQ5LDB4RTIs
MHgzOCwweEI3LDB4OEYsMHg4RCwweEJELDB4QTUsMHg1MSwweDAzLDB4NDEsMHhGRCwweDNELDB4
MjcsMHhBRiwKLSAgICAweDQ3LDB4NkEsMHg2NCwweDUxLDB4QkQsMHhBRCwweDJGLDB4MkYsMHgw
QSwweDgzLDB4NjgsMHg2QSwweDA5LDB4MDksMHgwQiwweDBCLAotICAgIDB4MEEsMHg4MywweEU5
LDB4N0EsMHgzMywweDNELDB4QTgsMHgzMCwweEFDLDB4OUIsMHhFOSwweDdBLDB4MkIsMHhCNyww
eERELDB4NTUsCi0gICAgMHhEMCwweEJDLDB4RUEsMHg4MiwweDBBLDB4QkYsMHhGRCwweEQ1LDB4
Q0YsMHhCQywweDRCLDB4OEIsMHgwMCwweDAwLDB4MkYsMHhENSwKLSAgICAweEYwLDB4QkMsMHgw
RSwweEE0LDB4MDAsMHgwMCwweDAwLDB4MkQsMHgxMCwweEM1LDB4QUUsMHhCNCwweDdBLDB4NkEs
MHhFQSwweEM4LAotICAgIDB4OEUsMHhCNCwweDJELDB4QTQsMHg3NywweEQ2LDB4REMsMHhCOCww
eDZFLDB4QUMsMHgwRCwweEE0LDB4RjUsMHhERSwweEZBLDB4RTgsCi0gICAgMHg0RSwweEFDLDB4
MEQsMHhBNCwweEFELDB4OUUsMHhGRSwweDBBLDB4NEUsMHhBQywweDJELDB4OUMsMHg3QSwweEJC
LDB4QUIsMHgwQSwKLSAgICAweDZFLDB4QUMsMHgyRCwweEE0LDB4NTUsMHhGMiwweEUyLDB4QTgs
MHg0RSwweEE0LDB4NkIsMHg4MywweDdFLDB4QTAsMHg4MCwweDAwLAotICAgIDB4MDMsMHg0MSww
eEMxLDB4MzgsMHhGMCwweDk4LDB4RjgsMHhBQSwweDQzLDB4NDEsMHhFMiwweDQwLDB4NzcsMHhG
NSwweEZGLDB4OUYsCi0gICAgMHgyMywweDQ5LDB4RTMsMHg0MCwweEEyLDB4MkYsMHhFQiwweDdC
LDB4MDMsMHg0MSwweEMyLDB4MzgsMHg4MCwweEEwLDB4RjIsMHg2MCwKLSAgICAweDAyLDB4NDEs
MHhDMiwweDM4LDB4RkIsMHhEQiwweEYzLDB4M0UsMHgwMywweDQxLDB4QzIsMHgzOCwweEVBLDB4
NzksMHhCQSwweEFFLAotICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHgzRCwweDJELDB4RUYsMHg1
NSwweDAzLDB4NDEsMHhDMiwweDM4LDB4RUUsMHhFQiwweDhELDB4M0IsCi0gICAgMHgwMywweDQx
LDB4RTIsMHgzOCwweDFFLDB4QjMsMHhGRiwweDZGLDB4MDIsMHg0MSwweEMyLDB4MzgsMHhBQSww
eDlGLDB4QkUsMHhGQiwKLSAgICAweDAzLDB4NDEsMHhDMSwweDM4LDB4QUEsMHg5QSwweEZBLDB4
RUYsMHg0NiwweDZBLDB4RTIsMHg0MCwweDI1LDB4MzUsMHgyNSwweDM1LAotICAgIDB4NjYsMHg3
MiwweEU1LDB4NjEsMHhGQSwweEZDLDB4NzgsMHhFOCwweDA1LDB4NjIsMHhFMiwweDM4LDB4NTgs
MHg3QSwweDVDLDB4NzgsCi0gICAgMHgwMywweDM5LDB4RTIsMHgzMCwweDAyLDB4MkIsMHhCRSww
eDk3LDB4MjQsMHgzOSwweEUzLDB4MzgsMHhFMiwweEFGLDB4RjcsMHg3NiwKLSAgICAweDIzLDB4
MzksMHgwMywweDM5LDB4NkQsMHhGNiwweEFELDB4NTUsMHg0NCwweDQxLDB4RTIsMHgzMCwweEZF
LDB4ODIsMHhBQSwweEZGLAotICAgIDB4NDMsMHgzOSwweEUzLDB4MzgsMHhBRCwweDdGLDB4RkEs
MHg4QSwweDI0LDB4MzksMHhFMywweDMwLDB4N0IsMHhBMiwweEJELDB4RjgsCi0gICAgMHgyNCww
eDM5LDB4QzIsMHgyOCwweDdELDB4RUUsMHhBOCwweDhBLDB4MjMsMHgzOSwweEUzLDB4MzAsMHg1
RCwweEQ3LDB4QUYsMHhBQSwKLSAgICAweDIzLDB4MzksMHhFMywweDMwLDB4NUQsMHhDRSwweEFF
LDB4QkYsMHgyNCwweDM5LDB4QzIsMHgzMCwweERGLDB4RkEsMHhFMiwweEFBLAotICAgIDB4MDMs
MHgzOSwweEMyLDB4MjgsMHhFNSwweEZBLDB4MjAsMHgyMCwweDAzLDB4MzEsMHhDMiwweDI4LDB4
QjgsMHhEQSwweERDLDB4QTAsCi0gICAgMHhFMywweDMwLDB4QzIsMHgyOCwweEY0LDB4Q0EsMHgy
RSwweDNBLDB4RTMsMHgzMCwweEMyLDB4MjgsMHhGRiwweEJCLDB4QzIsMHgwOCwKLSAgICAweEUz
LDB4MjgsMHg4MiwweDIwLDB4N0YsMHhFOCwweEFBLDB4QTAsMHhDMiwweDI4LDB4ODIsMHgyMCww
eDdGLDB4RUUsMHhFOCwweDg4LAotICAgIDB4QzMsMHgyOCwweDgyLDB4MjAsMHg3NSwweDdGLDB4
NkIsMHhFMiwweEEyLDB4MjgsMHg4MSwweDIwLDB4QTcsMHg1NSwweDE2LDB4ODAsCi0gICAgMHhB
MiwweDI4LDB4ODIsMHgyMCwweDNCLDB4MDcsMHhBRSwweEZELDB4MDMsMHgzOSwweDgyLDB4Mjgs
MHg4RiwweDg5LDB4MEYsMHhGRCwKLSAgICAweEMyLDB4MzAsMHhFMywweDI4LDB4QTAsMHg4Miww
eDBCLDB4MDgsMHgwMywweDM5LDB4QzIsMHgzMCwweEVGLDB4NUMsMHhBQiwweDNELAotICAgIDB4
MDMsMHgzOSwweEMyLDB4MzAsMHhFQSwweDgzLDB4RUEsMHg3MCwweDIzLDB4NDEsMHhBMiwweDI4
LDB4MDIsMHhBQiwweEJELDB4RjUsCi0gICAgMHg2NCwweDQ5LDB4RTMsMHgzOCwweEEyLDB4MDMs
MHg4QiwweEQ1LDB4NjQsMHg0MSwweEMyLDB4MzAsMHhGRSwweDdDLDB4NzgsMHg2QSwKLSAgICAw
eEUzLDB4MzAsMHhBMiwweDI4LDB4RkIsMHhCNSwweEI1LDB4RkUsMHhFMywweDM4LDB4QzIsMHgy
OCwweEQxLDB4RUEsMHhCMywweDRGLAotICAgIDB4QzIsMHgzMCwweDgxLDB4MjgsMHhGRSwweERB
LDB4QkUsMHg4QSwweEUyLDB4MzAsMHhBMiwweDI4LDB4NTUsMHhGNSwweERCLDB4QTMsCi0gICAg
MHhFMiwweDMwLDB4QTIsMHgyOCwweDY5LDB4NkIsMHhFRiwweEFBLDB4RTMsMHgzMCwweDgxLDB4
MjAsMHhBRiwweDM5LDB4MkIsMHhBRiwKLSAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4MDksMHgy
OSwweDlELDB4NUYsMHg2NCwweDQ5LDB4RTIsMHgzMCwweEU3LDB4QkYsMHgyRiwweEJGLAotICAg
IDB4NDMsMHg0MSwweDAzLDB4MzksMHgzNSwweEFFLDB4OUIsMHhGOCwweDI2LDB4NjIsMHgyMyww
eDQxLDB4RkQsMHhGRiwweEJGLDB4MkQsCi0gICAgMHhBOCwweDcyLDB4ODQsMHg1MSwweDJELDB4
MkQsMHgyQiwweDBBLDB4MEEsMHg4MywweEE4LDB4N0EsMHgyOSwweEVCLDB4Q0QsMHhGQiwKLSAg
ICAweDBBLDB4ODMsMHhDOSwweDdBLDB4QUEsMHhGOSwweERELDB4QTUsMHgyQiwweDgzLDB4Q0Es
MHg3QSwweEZCLDB4OEIsMHhBOSwweEI3LAotICAgIDB4MkEsMHg4MywweEM5LDB4N0EsMHhGQiww
eEI2LDB4QjAsMHgyOCwweDRCLDB4OEIsMHhFQSwweDdBLDB4MzksMHgyRSwweEJCLDB4REYsCi0g
ICAgMHgyRSwweEE0LDB4MkEsMHg4MywweDJGLDB4RjUsMHg1NSwweDU1LDB4RjAsMHhCQywweDRB
LDB4OEIsMHgwMiwweEFGLDB4RDUsMHg1NSwKLSAgICAweEQwLDB4QjQsMHg4QiwweDkzLDB4QTgs
MHhBQSwweEFCLDB4RDUsMHhCMCwweEI0LDB4MkUsMHhBNCwweEZFLDB4QUEsMHhBQSwweEE5LAot
ICAgIDB4OEYsMHhCNCwweDRFLDB4QUMsMHg1RiwweEZBLDB4N0EsMHhDQSwweDhGLDB4QjQsMHg0
RSwweEFDLDB4RDcsMHhFQiwweDNBLDB4QjIsCi0gICAgMHg4RiwweEI0LDB4NEUsMHhBQywweEZE
LDB4QkUsMHgzQSwweDAwLDB4QUYsMHhCNCwweDRFLDB4QUMsMHg1RiwweEY3LDB4QUYsMHg4MCwK
LSAgICAweDQzLDB4NDEsMHhFMiwweDQwLDB4N0QsMHhFRiwweDdGLDB4RDUsMHgwMywweDQxLDB4
RTIsMHgzOCwweDdBLDB4QjYsMHg0RSwweENBLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHgw
QSwweEJBLDB4QkIsMHg2OSwweDAyLDB4NDEsMHhDMiwweDM4LDB4NkUsMHhGOCwweDVBLDB4QUQs
Ci0gICAgMHgwMywweDM5LDB4QTEsMHgzOCwweDlCLDB4MkEsMHhBQSwweDIzLDB4RTIsMHg0MCww
eDAzLDB4MzksMHg4QiwweEFCLDB4M0IsMHgyQiwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4
OUEsMHhBQSwweDc4LDB4RTMsMHgwMiwweDQxLDB4QzIsMHgzOCwweEVCLDB4NzcsMHhBRiwweEVE
LAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhGQSwweERGLDB4QUUsMHg4RCwweDAzLDB4NDEs
MHhFMiwweDM4LDB4Q0YsMHg5NiwweDU1LDB4RkEsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCww
eDczLDB4N0UsMHhGQywweEJFLDB4NDYsMHg2QSwweEUyLDB4NDAsMHgyNSwweDM1LDB4MzUsMHgz
NSwKLSAgICAweDg3LDB4NzIsMHgwNSwweDYyLDB4NzgsMHg3QSwweDU4LDB4N0UsMHgwNSwweDYy
LDB4RTIsMHgzOCwweDU4LDB4NzgsMHg1OCwweDc4LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAs
MHhGRiwweDlGLDB4OEEsMHgyMywweDIzLDB4MzksMHhFMywweDMwLDB4RjcsMHhCQSwweDg3LDB4
RTcsCi0gICAgMHgyMywweDM5LDB4RTIsMHgzMCwweEVCLDB4QkIsMHg3QSwweEZELDB4MjMsMHgz
OSwweDAzLDB4MzksMHhCMiwweDk4LDB4MzYsMHg1NSwKLSAgICAweDQ0LDB4NDEsMHgwMywweDM5
LDB4OEIsMHgyQSwweEVGLDB4RkYsMHg0NCwweDQxLDB4MDMsMHgzOSwweDZFLDB4OEUsMHg4Qiww
eERBLAotICAgIDB4NDQsMHgzOSwweDAzLDB4MzksMHg1RiwweDYwLDB4NUEsMHg2RSwweDI0LDB4
MzksMHhFMiwweDMwLDB4MEEsMHhFRiwweEZGLDB4REYsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgz
OCwweEUwLDB4Q0EsMHgyRCwweDk5LDB4NDQsMHg0MSwweEUzLDB4MzAsMHg1NywweEY1LDB4QUIs
MHhFRCwKLSAgICAweDI0LDB4NDEsMHhFMywweDMwLDB4QkYsMHhERSwweEJFLDB4Q0EsMHgwMyww
eDM5LDB4RTIsMHgzMCwweDgwLDB4MkUsMHgzRSwweDVFLAotICAgIDB4MDMsMHgzMSwweEEyLDB4
MzAsMHhBOCwweDJBLDB4ODAsMHhBQiwweDAzLDB4MzEsMHhFMywweDMwLDB4QjUsMHhDNiwweDdD
LDB4NUIsCi0gICAgMHgwMywweDMxLDB4QzMsMHgyOCwweDc4LDB4NUEsMHhCRSwweEIyLDB4MDMs
MHgzMSwweEMzLDB4MjgsMHhGNywweDZBLDB4RUEsMHhGRiwKLSAgICAweEUzLDB4MzAsMHhDMyww
eDI4LDB4NTUsMHg3RiwweEZGLDB4QjcsMHgwMywweDMxLDB4QTIsMHgyMCwweDc3LDB4RjcsMHhG
RiwweEZCLAotICAgIDB4RTMsMHgyOCwweDgxLDB4MjAsMHhENywweEZGLDB4RkEsMHhBQSwweEEy
LDB4MjgsMHg4MiwweDIwLDB4QjgsMHhGQywweDNBLDB4QTIsCi0gICAgMHhDMiwweDMwLDB4ODEs
MHgyMCwweDJCLDB4QUYsMHg1NSwweDU3LDB4RTMsMHgzMCwweDgxLDB4MjgsMHgwQSwweDJBLDB4
MEYsMHgyNywKLSAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4NkEsMHg0OCwweEMzLDB4RTIsMHhF
MywweDMwLDB4QTIsMHgzMCwweEJGLDB4RkIsMHhFQSwweEFCLAotICAgIDB4RTIsMHgzMCwweEMy
LDB4MzAsMHhGNSwweDc3LDB4NUQsMHhBMiwweDAyLDB4MzksMHhBMSwweDI4LDB4RTgsMHg2Riww
eEVBLDB4MkYsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEY3LDB4QjUsMHhFRiwweEE4LDB4
RTMsMHgzMCwweEMyLDB4MzAsMHhFRiwweEIzLDB4OEQsMHhDMSwKLSAgICAweEUzLDB4MzAsMHhB
MiwweDI4LDB4RjcsMHhGRiwweENFLDB4QUQsMHg0NCwweDQxLDB4QTEsMHgyOCwweEZELDB4RUQs
MHgyRiwweDNGLAotICAgIDB4NjQsMHg0MSwweEMyLDB4MjgsMHg3NywweEVGLDB4QUUsMHgyQSww
eDI0LDB4MzksMHhBMSwweDI4LDB4RjUsMHhGRSwweEFBLDB4MDgsCi0gICAgMHgyMywweDM5LDB4
RTMsMHgzMCwweEI1LDB4QTUsMHgwRiwweDBBLDB4NDMsMHg0MSwweDAzLDB4MzksMHgyQSwweEZB
LDB4RDIsMHgyMywKLSAgICAweEM1LDB4NTEsMHhDMiwweDM4LDB4RkYsMHhBRiwweDJCLDB4MDIs
MHg2NywweDZBLDB4NjMsMHg0OSwweDNELDB4OEIsMHgwQSwweDAyLAotICAgIDB4QzksMHg3QSww
eDY4LDB4NkEsMHgyRCwweEI1LDB4QjcsMHhCRCwweEM5LDB4N0EsMHg4OCwweDcyLDB4QTgsMHg4
QiwweEZELDB4RUIsCi0gICAgMHhFQSwweDdBLDB4ODgsMHg3MiwweDBCLDB4ODksMHhBMiwweEJG
LDB4RTksMHg3QSwweEE5LDB4NzIsMHhCQywweEFCLDB4QjcsMHhBRSwKLSAgICAweDJBLDB4ODMs
MHhDOSwweDdBLDB4QTksMHgzRiwweEZCLDB4QjUsMHgwQSwweDgzLDB4QzksMHg3QSwweEFDLDB4
MjgsMHg3RiwweEZDLAotICAgIDB4MkEsMHg4MywweEM5LDB4N0EsMHhBQSwweDhGLDB4QjcsMHg3
NywweDJBLDB4OEIsMHhDOSwweDdBLDB4MjAsMHhGQywweERFLDB4QUEsCi0gICAgMHg0QiwweDhC
LDB4RUEsMHg3QSwweDJBLDB4QkIsMHg3RiwweDdGLDB4RUQsMHg5QiwweEM5LDB4N0EsMHgwMiww
eEFGLDB4RjcsMHg1RCwKLSAgICAweDRFLDB4QUMsMHhFQSwweDgyLDB4MDAsMHgwMiwweEFGLDB4
RkQsMHg2RSwweEFDLDB4NkIsMHg4QiwweDAwLDB4MDAsMHgwMiwweEFELAotICAgIDB4QUYsMHhC
NCwweDRFLDB4QUMsMHhBQSwweEEyLDB4QUIsMHhBOSwweEQwLDB4QjQsMHg4RiwweEI0LDB4QUYs
MHhFRiwweEVFLDB4QkYsCi0gICAgMHgyMywweDQxLDB4RTIsMHg0MCwweERCLDB4RUYsMHhBRiww
eDQyLDB4MDIsMHg0MSwweEMyLDB4MzgsMHhFQSwweEEwLDB4NDgsMHhDQSwKLSAgICAweDAzLDB4
MzksMHhDMiwweDM4LDB4REUsMHhGRiwweEFCLDB4MkUsMHgwMywweDQxLDB4QzIsMHgzOCwweDNG
LDB4QTYsMHg4QSwweDAyLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhDRCwweEFFLDB4QUIs
MHhCRSwweDAzLDB4NDEsMHhDMiwweDM4LDB4RkYsMHhFQywweERFLDB4RkUsCi0gICAgMHgwMiww
eDQxLDB4QzIsMHgzOCwweEJCLDB4RkEsMHhGQSwweEJBLDB4MDMsMHg0MSwweEMyLDB4MzgsMHg3
OCwweEVGLDB4NUUsMHhCRiwKLSAgICAweEUyLDB4MzgsMHhDMiwweDM4LDB4ODIsMHgwMCwweDMw
LDB4MDAsMHgwMywweDM5LDB4QzIsMHgzOCwweEJBLDB4MzIsMHhCRiwweEJGLAotICAgIDB4MDMs
MHg0MSwweEMyLDB4MzgsMHhCRiwweEY3LDB4OUUsMHg3RSwweDQ2LDB4NkEsMHhFMiwweDM4LDB4
MzUsMHgzNSwweDM1LDB4MzUsCi0gICAgMHg2NywweDcyLDB4MDYsMHg2MiwweDdDLDB4N0EsMHhF
RSwweEU4LDB4MDUsMHg2MiwweEUyLDB4MzgsMHg3OCwweDc4LDB4NzgsMHg1OCwKLSAgICAweDAz
LDB4MzksMHhDMiwweDMwLDB4ODIsMHg0QywweDhBLDB4RjgsMHgwMywweDM5LDB4QzIsMHgzMCww
eEI2LDB4RTUsMHhCQSwweEEyLAotICAgIDB4MDMsMHgzOSwweEUyLDB4MjgsMHhBQiwweEJCLDB4
MkQsMHhBNywweDAzLDB4MzksMHhDMiwweDMwLDB4MEUsMHhCNiwweEJFLDB4MkUsCi0gICAgMHgy
MywweDM5LDB4QzIsMHgzMCwweDJBLDB4QUQsMHhGRiwweEVFLDB4MjMsMHg0MSwweEUzLDB4MzAs
MHhBMCwweDg4LDB4QjMsMHhFRCwKLSAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4NzgsMHhCRCww
eDU1LDB4NTUsMHgyMywweDM5LDB4RTMsMHgzOCwweDlELDB4N0EsMHg2QSwweEU2LAotICAgIDB4
MjMsMHgzOSwweEUzLDB4MzAsMHhBOSwweDk5LDB4QkQsMHhCRCwweDQ0LDB4NDEsMHhFMywweDMw
LDB4RjUsMHhERiwweEZFLDB4OEIsCi0gICAgMHg0NCwweDQxLDB4RTMsMHgzMCwweDhCLDB4QTcs
MHhERSwweEJFLDB4MjQsMHg0MSwweEUzLDB4MzgsMHg3NiwweEI4LDB4QkIsMHg2RiwKLSAgICAw
eDIzLDB4MzksMHhFMywweDMwLDB4N0IsMHhCNywweDhBLDB4QUEsMHgyNCwweDM5LDB4RTMsMHgz
MCwweEI1LDB4RkYsMHhGNCwweEVGLAotICAgIDB4MjMsMHgzMSwweEUzLDB4MzAsMHhCRSwweEEy
LDB4NkYsMHhENSwweDAzLDB4MzEsMHhDMywweDI4LDB4RUEsMHhBQSwweEFBLDB4MDAsCi0gICAg
MHgwMywweDMxLDB4QzIsMHgyOCwweEI1LDB4RkYsMHhGRiwweEFBLDB4RTMsMHgzMCwweEMyLDB4
MjgsMHhDRSwweEE4LDB4MDAsMHhGMCwKLSAgICAweEMzLDB4MzAsMHhFMiwweDI4LDB4MEUsMHhC
RSwweEFFLDB4QjgsMHhFMiwweDMwLDB4QTIsMHgyMCwweDVGLDB4NUEsMHhBQSwweEZFLAotICAg
IDB4QzIsMHgyOCwweDgyLDB4MjAsMHhFQiwweEVFLDB4QkEsMHhBQSwweEMyLDB4MjgsMHg4MSww
eDIwLDB4QkYsMHhGRSwweEUwLDB4QjAsCi0gICAgMHgwMywweDM5LDB4ODEsMHgyMCwweDAyLDB4
MjksMHhCRCwweDc1LDB4MDMsMHgzMSwweEEyLDB4MjgsMHg3RiwweEYwLDB4QUEsMHhFRCwKLSAg
ICAweDAzLDB4MzEsMHhDMiwweDMwLDB4QUYsMHhBQiwweEMwLDB4ODAsMHgyMywweDMxLDB4QzIs
MHgzMCwweEY1LDB4RjcsMHhERiwweDdCLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHg1RSww
eDVCLDB4RUUsMHg2RiwweDAzLDB4MzEsMHhDMiwweDMwLDB4NkYsMHg2RiwweDgzLDB4ODIsCi0g
ICAgMHgwMywweDM5LDB4QTIsMHgyOCwweDJELDB4MkIsMHgyRSwweDI3LDB4MDMsMHgzOSwweEUy
LDB4MzAsMHgxNiwweDI5LDB4MEYsMHhBQywKLSAgICAweDQ0LDB4NDEsMHhFMiwweDMwLDB4MEEs
MHhFRSwweEZCLDB4NjAsMHgyMywweDM5LDB4QzIsMHgyOCwweDIwLDB4MkEsMHhGRSwweEY3LAot
ICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHhFMCwweDJFLDB4QkEsMHhERiwweDg0LDB4NTEsMHhF
MiwweDMwLDB4QkYsMHhCRiwweEJELDB4MkQsCi0gICAgMHgyNywweDYyLDB4ODQsMHg0OSwweEFE
LDB4QTksMHhBRiwweDJCLDB4NjgsMHg2QSwweEU2LDB4NTksMHgyRiwweEJELDB4MkQsMHgwOSwK
LSAgICAweEE4LDB4NzIsMHg2OCwweDZBLDB4ODUsMHg4RCwweEJELDB4RkIsMHhDOSwweDdBLDB4
ODgsMHg2QSwweEVGLDB4MUIsMHhERCwweEY3LAotICAgIDB4QzksMHg3QSwweDg4LDB4NzIsMHgz
RiwweEI4LDB4RkEsMHg1RCwweEVBLDB4N0EsMHhBOSwweDcyLDB4QzAsMHhGQiwweEU1LDB4NTUs
Ci0gICAgMHgwQSwweDgzLDB4QTksMHg3MiwweEE3LDB4QkQsMHhDRCwweDdELDB4MEEsMHg4Myww
eEE5LDB4NzIsMHgyRSwweDNELDB4QkYsMHg5NywKLSAgICAweDBBLDB4ODMsMHhBOSwweDcyLDB4
RTgsMHg4OCwweDJBLDB4QjcsMHgyQSwweDgzLDB4QzksMHg3QSwweDhGLDB4RTUsMHhGRCwweEZG
LAotICAgIDB4MkIsMHg4MywweEM5LDB4N0EsMHhBQiwweDJGLDB4RkIsMHhERiwweDJCLDB4OEIs
MHhFQSwweDdBLDB4NzcsMHg3NiwweDYyLDB4RkYsCi0gICAgMHgyQSwweDgzLDB4RTksMHg3QSww
eEFELDB4RjcsMHhGRiwweDA1LDB4QUMsMHg5MywweEU5LDB4N0EsMHgyQiwweERELDB4NTUsMHg1
NywKLSAgICAweDZFLDB4QUMsMHgwQSwweDgzLDB4MEEsMHhCRiwweEY1LDB4NTUsMHhBRiwweEI0
LDB4NEEsMHg4QiwweDAwLDB4MEEsMHhBRiwweDU1LAotICAgIDB4MDMsMHg0MSwweEMyLDB4Mzgs
MHhDMCwweEMwLDB4NzIsMHg3QywweEUyLDB4NDAsMHhDMiwweDMwLDB4RjIsMHgzOCwweEFBLDB4
QTksCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEFCLDB4MEEsMHhBQiwweDBGLDB4MDMsMHgz
OSwweEMyLDB4MzgsMHgyQSwweEVCLDB4Q0EsMHg2OCwKLSAgICAweDIyLDB4MzksMHhDMiwweDM4
LDB4RjYsMHg3RiwweDdGLDB4QkYsMHgwMywweDM5LDB4QzIsMHgzOCwweDZFLDB4QzIsMHhCQiww
eEIyLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHgyRiwweEJGLDB4RUMsMHhFQywweDAzLDB4
NDEsMHhDMiwweDM4LDB4N0YsMHhFMiwweDhGLDB4RUIsCi0gICAgMHgyMiwweDM5LDB4QzIsMHgz
OCwweEZFLDB4N0YsMHg1RiwweERGLDB4RTIsMHgzOCwweEMyLDB4MzgsMHgzMywweDAwLDB4QjMs
MHhCMSwKLSAgICAweEUyLDB4MzgsMHhDMiwweDM4LDB4RTAsMHhGOCwweERBLDB4MjgsMHg0Nyww
eDZBLDB4RTIsMHgzOCwweDM1LDB4MjUsMHgzNSwweDM1LAotICAgIDB4NjcsMHg3MiwweEM1LDB4
NTksMHhFMCwweEUwLDB4NjAsMHg3OCwweEE1LDB4NTksMHgwMiwweDM5LDB4NzgsMHg1QywweDdF
LDB4NTYsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDdDLDB4OEEsMHhCOCwweDlDLDB4MDMs
MHgzOSwweEUzLDB4MzAsMHhCRSwweEQ3LDB4RDcsMHhGMSwKLSAgICAweDAzLDB4MzEsMHhDMiww
eDI4LDB4QkUsMHhEQywweEEyLDB4N0UsMHgwMywweDMxLDB4RTIsMHgzMCwweDdGLDB4NjUsMHg3
NSwweDcyLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHg4QSwweEFBLDB4OEIsMHhGQSwweDAz
LDB4MzEsMHhFMywweDMwLDB4OEUsMHgyNCwweDJELDB4NTksCi0gICAgMHgyMywweDM5LDB4RTMs
MHgzMCwweEFGLDB4REQsMHhERiwweEU3LDB4MDMsMHgzOSwweEMyLDB4MzAsMHgwOCwweEU4LDB4
RkEsMHhEQSwKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4QUYsMHhCRiwweEZFLDB4MzgsMHg0
NCwweDQxLDB4RTMsMHgzMCwweEJBLDB4QTMsMHhBQiwweEY3LAotICAgIDB4NDQsMHg0MSwweDAz
LDB4MzksMHhGRiwweEVFLDB4NzgsMHg1RiwweDI0LDB4MzksMHhFMywweDM4LDB4RkIsMHg4OCww
eEJFLDB4QUYsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweEJGLDB4RjYsMHhFOCwweEFBLDB4
MjMsMHgzOSwweEUyLDB4MzAsMHhDMywweEZGLDB4RUEsMHhBQSwKLSAgICAweDIzLDB4MzksMHhF
MywweDMwLDB4REYsMHhGRiwweEZELDB4OUYsMHgyMywweDM5LDB4RTMsMHgzMCwweDM3LDB4RkQs
MHhFQiwweEZBLAotICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHg3RSwweEZFLDB4RjUsMHhBMyww
eDAzLDB4MzEsMHhDMiwweDMwLDB4RkIsMHhDMCwweDIwLDB4MDAsCi0gICAgMHgwMywweDMxLDB4
QzIsMHgyOCwweDc5LDB4NzMsMHhDMiwweEJBLDB4MDMsMHgzMSwweEMyLDB4MjgsMHg1NSwweEZG
LDB4RkYsMHg4MywKLSAgICAweEUzLDB4MjgsMHhDMiwweDI4LDB4NjUsMHhDNSwweEY3LDB4QkQs
MHhFMiwweDI4LDB4QTIsMHgyMCwweDdGLDB4N0IsMHg4OCwweEEyLAotICAgIDB4QzIsMHgyOCww
eDgxLDB4MjAsMHhCRiwweEFGLDB4MkUsMHg4MCwweEEyLDB4MjgsMHg4MSwweDIwLDB4MkIsMHhE
OCwweEJCLDB4RTgsCi0gICAgMHhFMywweDMwLDB4NjEsMHgyMCwweDAyLDB4QUYsMHhGRiwweEY3
LDB4MDMsMHgzOSwweDgyLDB4MjAsMHg4MiwweDIyLDB4QUYsMHhGRCwKLSAgICAweDAzLDB4Mzks
MHhDMiwweDI4LDB4QTksMHg4OCwweDhCLDB4OTUsMHgwMywweDM5LDB4RTMsMHgzMCwweDQyLDB4
NjIsMHg1QiwweDUzLAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHgyRCwweEZCLDB4QkEsMHgw
QiwweDIzLDB4MzksMHhFMywweDMwLDB4QkUsMHhCQiwweEJBLDB4ODMsCi0gICAgMHgyMywweDM5
LDB4QTEsMHgyOCwweEUwLDB4QTAsMHhBOCwweERDLDB4RTMsMHgzMCwweEEyLDB4MjgsMHgyNyww
eDJBLDB4MjAsMHg4MywKLSAgICAweDQ0LDB4NDEsMHhDMiwweDI4LDB4RDUsMHhGRiwweEJGLDB4
QUQsMHhDNSwweDUxLDB4MDIsMHgzMSwweEFELDB4QUQsMHgwQiwweDBCLAotICAgIDB4MjcsMHg2
MiwweEE1LDB4NTEsMHgyRCwweDBGLDB4QUYsMHhBQSwweDY4LDB4NkEsMHgwNywweDVBLDB4Mjks
MHg5RiwweEI3LDB4RjUsCi0gICAgMHg4OCwweDZBLDB4NDgsMHg2QSwweDBDLDB4QTIsMHg2RCww
eEQ1LDB4QzksMHg3QSwweDY4LDB4NkEsMHhFRSwweDNFLDB4MDksMHhBRCwKLSAgICAweEM5LDB4
NzIsMHg4OSwweDcyLDB4RDksMHhGNSwweDM2LDB4MEEsMHhDOSwweDdBLDB4ODgsMHg3MiwweEZF
LDB4MEUsMHhFQSwweDJCLAotICAgIDB4RTksMHg3QSwweEE5LDB4NzIsMHhFQiwweEU3LDB4OTcs
MHhENiwweEM5LDB4N0EsMHhBOSwweDcyLDB4Q0MsMHhDMiwweDg4LDB4MjQsCi0gICAgMHgwQSww
eDgzLDB4QTgsMHg3MiwweEFELDB4QjksMHgwQiwweDJBLDB4MEEsMHg4MywweEM5LDB4N0EsMHgz
QiwweDZBLDB4RkUsMHhBRSwKLSAgICAweDBBLDB4ODMsMHhBOSwweDdBLDB4REEsMHhGQiwweEFB
LDB4MDgsMHhFQSwweDdBLDB4QTksMHg3QSwweDIxLDB4MDAsMHg4QSwweDQ0LAotICAgIDB4MkIs
MHg4MywweEM5LDB4N0EsMHgyNywweEQ3LDB4RkYsMHg3RCwweDJBLDB4ODMsMHhBOSwweDcyLDB4
RTgsMHg4QSwweDNBLDB4RkYsCi0gICAgMHgyQSwweDgzLDB4RTksMHg3QSwweDA5LDB4M0QsMHgy
RSwweDI3LDB4MkEsMHg4MywweEU5LDB4N0EsMHgwMCwweEUwLDB4N0UsMHg1QSwKLSAgICAweDAz
LDB4NDEsMHhDMiwweDM4LDB4NTQsMHg3RiwweERFLDB4MzUsMHgwMywweDM5LDB4QzIsMHgzOCww
eEI3LDB4QkEsMHhBOSwweEJCLAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzgsMHhGOSwweDhCLDB4
RkEsMHhGRiwweDAzLDB4NDEsMHhDMiwweDM4LDB4RkUsMHhFQywweDY4LDB4QkUsCi0gICAgMHgw
MiwweDM5LDB4QTEsMHgzMCwweEJFLDB4RkEsMHgzNywweEVGLDB4MDIsMHgzOSwweEMyLDB4Mzgs
MHhCRSwweEY2LDB4RUYsMHgzRCwKLSAgICAweEUyLDB4MzgsMHhDMiwweDM4LDB4MjMsMHhFQiww
eEM0LDB4QzgsMHhFMiwweDM4LDB4QzIsMHgzOCwweDJBLDB4RDgsMHg3QiwweDdDLAotICAgIDB4
MDMsMHgzOSwweEMyLDB4MzgsMHhFQiwweEZGLDB4QkYsMHhCQSwweDAzLDB4MzksMHhDMiwweDM4
LDB4RUUsMHg3RSwweDdGLDB4RkYsCi0gICAgMHhFMiwweDM4LDB4QzIsMHgzMCwweDZDLDB4RkMs
MHg3QiwweEZGLDB4MjUsMHg2MiwweEMyLDB4MzgsMHgzRCwweDM1LDB4OTUsMHg5NSwKLSAgICAw
eDY2LDB4NkEsMHhBNCwweDUxLDB4RjgsMHg3OCwweDc4LDB4NUUsMHg4NCwweDUxLDB4RTIsMHgz
MCwweDdBLDB4N0EsMHg3MCwweDc4LAotICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHhERiwweEZG
LDB4OUIsMHhGQSwweDAzLDB4MzEsMHhDMiwweDI4LDB4RkEsMHhFQSwweEFCLDB4N0YsCi0gICAg
MHhFMywweDMwLDB4QzIsMHgyOCwweEJBLDB4MzQsMHgyNCwweEY3LDB4MDMsMHgzOSwweEMyLDB4
MjgsMHhBMiwweDVBLDB4RkYsMHhBRiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4NEIsMHhF
QSwweEVCLDB4QTIsMHgwMywweDM5LDB4QzIsMHgyOCwweEVGLDB4OEYsMHg4QiwweEFBLAotICAg
IDB4MDMsMHgzMSwweEMyLDB4MzAsMHg4MywweEEyLDB4QUEsMHhCRiwweDAzLDB4MzksMHhFMyww
eDMwLDB4RUIsMHg1QywweEZGLDB4MzksCi0gICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweEFDLDB4
QkYsMHhGRiwweERBLDB4MjMsMHgzOSwweEMyLDB4MzAsMHhBMiwweEFBLDB4QUUsMHhFNywKLSAg
ICAweDIzLDB4MzksMHhFMywweDMwLDB4ODgsMHgyQSwweEFFLDB4NkQsMHgyNCwweDM5LDB4MDMs
MHgzOSwweDQyLDB4MDMsMHg2MywweDdELAotICAgIDB4MjMsMHgzOSwweDAzLDB4MzksMHg3Niww
eDVFLDB4NzcsMHg1NywweDIzLDB4MzksMHhFMywweDM4LDB4QkYsMHgzNywweDI2LDB4QkUsCi0g
ICAgMHgyMywweDM5LDB4RTMsMHgzMCwweEQ3LDB4RTYsMHg3NiwweEU4LDB4NDQsMHgzOSwweEUz
LDB4MzAsMHg3RiwweDVELDB4RUYsMHgyOSwKLSAgICAweDI0LDB4MzksMHhFMiwweDMwLDB4OEEs
MHhFMiwweEY3LDB4REUsMHgyNCwweDM5LDB4RTIsMHgzMCwweEZGLDB4N0UsMHhFMywweDg4LAot
ICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHhBQSwweDlBLDB4QjgsMHgwMCwweDI0LDB4MzksMHhF
MywweDMwLDB4NUYsMHg3QywweEYzLDB4RUEsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgyOCwweDU1
LDB4RkYsMHhGQSwweEU4LDB4MDMsMHgzMSwweEMyLDB4MjgsMHg2RCwweEVBLDB4OEIsMHhDQSwK
LSAgICAweEEyLDB4MzAsMHhFMiwweDI4LDB4QkYsMHhGQiwweERELDB4NzcsMHhFMywweDI4LDB4
QTIsMHgyMCwweEY3LDB4N0IsMHhBQiwweDAwLAotICAgIDB4RTMsMHgyOCwweDgyLDB4MjAsMHg1
NywweEZFLDB4QUYsMHhBMCwweEMzLDB4MjgsMHg4MSwweDIwLDB4OTUsMHg3RiwweEVBLDB4MDIs
Ci0gICAgMHhDMiwweDI4LDB4ODIsMHgyMCwweDJGLDB4QjUsMHhENSwweEJBLDB4MDMsMHgzMSww
eDgyLDB4MjAsMHg4QSwweDNGLDB4N0QsMHhGNywKLSAgICAweEUzLDB4MzAsMHg4MSwweDIwLDB4
MjAsMHhFRSwweEY3LDB4OUQsMHg0NCwweDM5LDB4QTIsMHgyOCwweDBCLDB4QUIsMHhCRCwweEY1
LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MjgsMHg3OCwweEQ2LDB4RDYsMHhERiwweDIzLDB4Mzks
MHhFMiwweDMwLDB4NUQsMHhGNSwweEI1LDB4MkQsCi0gICAgMHhFNiwweDUxLDB4MDMsMHgzMSww
eDk1LDB4QjUsMHhBRCwweDJGLDB4MDYsMHg1QSwweEE1LDB4NTEsMHgzOSwweEFGLDB4QUEsMHg4
QSwKLSAgICAweDI3LDB4NjIsMHhDNSwweDUxLDB4QkYsMHhBRiwweEFELDB4MjcsMHg2OCwweDZB
LDB4MDcsMHg2MiwweDc1LDB4QUYsMHgyOSwweDJCLAotICAgIDB4QTksMHg3MiwweDY4LDB4NkEs
MHg3RCwweEZELDB4QkEsMHg4RSwweEM5LDB4NzIsMHg0OCwweDZBLDB4MkYsMHhBNywweDNGLDB4
MkEsCi0gICAgMHhDOSwweDdBLDB4NjgsMHg2QSwweDg4LDB4MkIsMHhCQSwweDdFLDB4QzksMHg3
QSwweDY3LDB4NkEsMHg4QSwweEU4LDB4QTMsMHg5RiwKLSAgICAweEVBLDB4N0EsMHg4OCwweDcy
LDB4RkUsMHgyMiwweDJGLDB4QjcsMHhFOSwweDdBLDB4QTksMHg3MiwweDJBLDB4RjcsMHg1Qyww
eDhCLAotICAgIDB4RTksMHg3QSwweEE5LDB4NzIsMHhFRSwweDhBLDB4RUQsMHhENywweEM5LDB4
N0EsMHg4OCwweDcyLDB4M0UsMHhCRiwweERDLDB4QzMsCi0gICAgMHgwQiwweDgzLDB4ODgsMHg3
MiwweDhBLDB4RkUsMHg3QiwweDdCLDB4RUEsMHg3QSwweEE5LDB4NzIsMHg2RSwweEFBLDB4OEQs
MHg2OSwKLSAgICAweEVBLDB4N0EsMHhBOSwweDcyLDB4MDIsMHgwMiwweDZCLDB4RkQsMHgwQSww
eDgzLDB4QTksMHg3MiwweEFBLDB4MDIsMHgwRCwweEZFLAotICAgIDB4MkEsMHg4MywweEE4LDB4
NzIsMHhBQiwweEFCLDB4QUUsMHgzRCwweDBBLDB4ODMsMHhFOSwweDdBLDB4MjgsMHhDQiwweEFB
LDB4OUMsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzOCwweEFGLDB4MkYsMHgzNywweEFCLDB4MDMs
MHg0MSwweEMyLDB4MzgsMHhGRiwweEUzLDB4RUYsMHhGQSwKLSAgICAweDIyLDB4MzksMHhDMiww
eDM4LDB4RDcsMHhEQiwweEZGLDB4NzcsMHgwMywweDQxLDB4QzIsMHgzOCwweERFLDB4QUUsMHhC
NywweEFGLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhEQywweEY4LDB4N0UsMHhERSwweDAy
LDB4MzksMHhDMiwweDM4LDB4RkEsMHg5RCwweEE5LDB4RUYsCi0gICAgMHhFMiwweDM4LDB4QzIs
MHgzOCwweEMwLDB4MEYsMHhDQSwweDQzLDB4MDMsMHg0MSwweEMyLDB4MzgsMHg2RSwweDNGLDB4
REYsMHhFQiwKLSAgICAweDAyLDB4MzksMHhBMSwweDMwLDB4QUUsMHhCNCwweEJBLDB4QkIsMHgw
MiwweDQxLDB4QTIsMHgzMCwweERGLDB4QUYsMHgzQiwweDJCLAotICAgIDB4MDMsMHg0MSwweEEx
LDB4MzAsMHhGRSwweEZFLDB4RjgsMHg3RSwweDIzLDB4NDksMHhBMSwweDMwLDB4MzcsMHhCNSww
eDk1LDB4M0QsCi0gICAgMHg0NywweDZBLDB4QTQsMHg1MSwweEZFLDB4N0YsMHg3RCwweEY4LDB4
QTQsMHg1MSwweEUyLDB4MzAsMHhEOCwweDc4LDB4NzAsMHg3MCwKLSAgICAweDAzLDB4MzksMHhD
MiwweDMwLDB4QTgsMHgwOCwweDJGLDB4QUEsMHgwMywweDMxLDB4QTMsMHgzMCwweEFFLDB4ODgs
MHg4OCwweDBBLAotICAgIDB4MjMsMHgzMSwweEMyLDB4MzAsMHg3NSwweEI3LDB4N0YsMHhGNyww
eDAzLDB4MzEsMHhDMiwweDI4LDB4RkYsMHg4QiwweEZCLDB4REEsCi0gICAgMHgwMywweDMxLDB4
QzIsMHgyOCwweDhBLDB4ODcsMHhFRCwweENBLDB4MDMsMHgzMSwweEEyLDB4MzAsMHgyQSwweDJB
LDB4QTIsMHhBRSwKLSAgICAweDAzLDB4MzEsMHhBMiwweDMwLDB4MkEsMHg4OCwweDI4LDB4M0Es
MHgwMywweDMxLDB4QzIsMHgyOCwweEFFLDB4RUIsMHhGMiwweEYyLAotICAgIDB4MDMsMHgzOSww
eEUzLDB4MzAsMHgzRCwweDdELDB4NUEsMHhENywweDIzLDB4MzksMHhFMywweDMwLDB4RTcsMHhB
RiwweEFGLDB4RDUsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzMCwweDgzLDB4QUQsMHg3RSwweDVG
LDB4MjMsMHgzOSwweEUzLDB4MzAsMHgzQSwweEJGLDB4QUIsMHhGRCwKLSAgICAweDIzLDB4Mzks
MHhFMywweDM4LDB4RDcsMHg4NywweERGLDB4RjcsMHgyNCwweDQxLDB4RTMsMHgzOCwweENELDB4
MjcsMHhFOSwweEU1LAotICAgIDB4NDQsMHg0MSwweEUzLDB4MzgsMHg3QSwweEY0LDB4REIsMHg3
NywweDIzLDB4MzksMHgwMywweDM5LDB4MjksMHhERiwweDU3LDB4NTUsCi0gICAgMHgyNCwweDQx
LDB4RTMsMHgzMCwweEZBLDB4REEsMHgzQSwweEIyLDB4MjMsMHgzOSwweEUzLDB4MzAsMHg1RSww
eEQ3LDB4RkEsMHhGQSwKLSAgICAweDQ0LDB4NDEsMHhDMywweDMwLDB4QTIsMHhGNywweEZGLDB4
RkUsMHgyNCwweDM5LDB4RTMsMHgzMCwweEFFLDB4RUEsMHgyRCwweEVFLAotICAgIDB4MjMsMHgz
OSwweEUzLDB4MzAsMHg2RSwweEZFLDB4QkEsMHgyQiwweDI0LDB4MzksMHhFMiwweDMwLDB4N0Es
MHhEQiwweEZFLDB4QjgsCi0gICAgMHgyMywweDMxLDB4RTMsMHgzMCwweDVCLDB4REMsMHhERSww
eDdBLDB4MDMsMHgzOSwweEUzLDB4MjgsMHg3RiwweEZGLDB4RjgsMHgwOCwKLSAgICAweDI0LDB4
MzksMHhDMywweDI4LDB4NTcsMHg1RiwweDVBLDB4RTgsMHgwMywweDMxLDB4QzMsMHgyOCwweDc3
LDB4N0QsMHgyQSwweDA4LAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHg3RCwweEZELDB4RkEs
MHg4OCwweDAzLDB4MzEsMHhDMywweDI4LDB4NTcsMHg5RiwweEFBLDB4MDIsCi0gICAgMHgyMyww
eDMxLDB4QTIsMHgyOCwweERELDB4RUYsMHhBQSwweEFBLDB4MjQsMHgzOSwweEEyLDB4MjgsMHhC
RCwweEJCLDB4QTIsMHgwOCwKLSAgICAweDIzLDB4MzksMHhFMywweDMwLDB4RjcsMHhERiwweEJB
LDB4MEEsMHhBNSwweDQ5LDB4MDMsMHgzMSwweEJELDB4QjUsMHhCOSwweDBGLAotICAgIDB4Mjcs
MHg2MiwweEE1LDB4NDksMHhGNSwweEFELDB4OEQsMHgyRiwweDI2LDB4NjIsMHhFNiwweDU5LDB4
RDUsMHhCRCwweDhBLDB4MzYsCi0gICAgMHg0NywweDYyLDB4RTYsMHg1OSwweDg1LDB4QkYsMHhC
RiwweDFFLDB4ODksMHg3MiwweDI3LDB4NjIsMHg4RCwweDI5LDB4MkYsMHhBRiwKLSAgICAweEE5
LDB4NzIsMHg0OCwweDZBLDB4OEIsMHg4RSwweDc3LDB4NzcsMHhDOSwweDcyLDB4NjgsMHg2QSww
eDIwLDB4QUEsMHhCRCwweEQ1LAotICAgIDB4QzksMHg3QSwweDY3LDB4NkEsMHhGRSwweDIyLDB4
QUIsMHhGNiwweEM5LDB4N0EsMHg4OCwweDcyLDB4NUUsMHgyRiwweDU4LDB4NzcsCi0gICAgMHhD
OSwweDdBLDB4ODgsMHg3MiwweDIxLDB4RUUsMHhFQSwweDJCLDB4RTksMHg3QSwweDg4LDB4NzIs
MHhCQSwweEIyLDB4QkEsMHg3RSwKLSAgICAweEU5LDB4N0EsMHhBOSwweDcyLDB4RUEsMHg4RSww
eEJFLDB4QjcsMHhFOSwweDdBLDB4QTgsMHg3MiwweDg5LDB4QUYsMHhCOCwweEJBLAotICAgIDB4
MEEsMHg3QiwweEE5LDB4NzIsMHhENywweEY1LDB4REYsMHhFMywweDBBLDB4N0IsMHhBOSwweDcy
LDB4QTksMHhBMiwweEZGLDB4RjcsCi0gICAgMHhFQSwweDdBLDB4ODksMHg3MiwweDlGLDB4RjIs
MHhFOCwweDNBLDB4RUEsMHg3QSwweEE5LDB4NzIsMHgzOCwweEVGLDB4N0UsMHg4QiwKLSAgICAw
eEVBLDB4N0EsMHhBOSwweDcyLDB4M0QsMHhCQSwweDAwLDB4MEIsMHgwQSwweDdCLDB4QzksMHg3
QSwweEEwLDB4RTksMHgyNSwweDhCLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBQSwweERC
LDB4QkEsMHhBRiwweDAzLDB4NDEsMHhFMiwweDM4LDB4RDYsMHg1QiwweDdELDB4NkIsCi0gICAg
MHgwMywweDQxLDB4QzIsMHgzOCwweERFLDB4OEYsMHg4RSwweEVCLDB4MDMsMHg0MSwweEMyLDB4
MzgsMHhFRCwweERGLDB4REEsMHhBQSwKLSAgICAweDAzLDB4NDEsMHhBMiwweDMwLDB4QUUsMHgy
QSwweEVGLDB4REEsMHgyMywweDM5LDB4QzIsMHgzOCwweDdGLDB4RkYsMHg5RCwweEZGLAotICAg
IDB4MjMsMHgzOSwweEMyLDB4MzgsMHg1NywweEZGLDB4RjUsMHhGQiwweEUyLDB4MzgsMHhDMiww
eDM4LDB4MDAsMHhFOCwweEQ4LDB4RTAsCi0gICAgMHhFMiwweDM4LDB4QzIsMHgzOCwweEFFLDB4
QzgsMHhCRiwweEI3LDB4RTIsMHgzOCwweEMyLDB4MzgsMHhFQSwweDBGLDB4OEEsMHg0QywKLSAg
ICAweEUyLDB4MzgsMHg4MSwweDMwLDB4RTgsMHhGOCwweDlFLDB4QUIsMHg2NywweDZBLDB4QzIs
MHgzMCwweEY1LDB4QjUsMHgzNSwweDM1LAotICAgIDB4RTgsMHg3QSwweEE1LDB4NTksMHhGQSww
eEY4LDB4RTgsMHg3MCwweEM1LDB4NTksMHhFMiwweDMwLDB4NTgsMHg3OCwweEZBLDB4N0YsCi0g
ICAgMHgwMywweDM5LDB4RTIsMHgzMCwweDVDLDB4N0MsMHg1QSwweDVGLDB4MDMsMHgzMSwweEUz
LDB4MzAsMHgyQywweDVELDB4NjUsMHhGRCwKLSAgICAweDAzLDB4MzEsMHhFMywweDMwLDB4NEQs
MHg0NywweDY5LDB4Q0QsMHgwMywweDMxLDB4RTMsMHgzMCwweDU5LDB4N0QsMHgxRCwweDZELAot
ICAgIDB4RTMsMHgzMCwweEMyLDB4MzAsMHgyMiwweDgyLDB4M0EsMHhBMywweDAzLDB4MzEsMHhD
MiwweDMwLDB4MkYsMHgzRiwweEJGLDB4RkYsCi0gICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEVF
LDB4RkYsMHhFQSwweEVFLDB4MDMsMHgzMSwweEMyLDB4MzAsMHg5RiwweEVBLDB4RkUsMHgyQiwK
LSAgICAweDAzLDB4MzEsMHhBMiwweDMwLDB4MkEsMHhBQSwweEU2LDB4QkUsMHgwMywweDMxLDB4
QzIsMHgzMCwweEFBLDB4RUEsMHhGQiwweEZGLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHhC
RSwweEZBLDB4MEIsMHhGNSwweDAzLDB4MzksMHhFMywweDMwLDB4OEQsMHhBQiwweERBLDB4RUQs
Ci0gICAgMHgwMywweDM5LDB4RTIsMHgzMCwweEFBLDB4REYsMHhBMiwweEI3LDB4MDMsMHgzOSww
eEMyLDB4MzAsMHg4NywweEI1LDB4M0UsMHhGMiwKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4
RkYsMHg1NywweEVBLDB4Q0YsMHhFMywweDM4LDB4MDMsMHgzMSwweEZFLDB4QUUsMHhBNywweEY3
LAotICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHhFQiwweEI5LDB4QjMsMHhGOSwweDI0LDB4Mzks
MHhFMywweDM4LDB4RkQsMHhCRCwweEYyLDB4QTYsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzOCww
eEZBLDB4QkMsMHhBRiwweEJFLDB4MjQsMHgzOSwweEUzLDB4MzgsMHg2QiwweEFGLDB4QUYsMHhB
OCwKLSAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4MkIsMHg4QSwweEZBLDB4RUEsMHgyMywweDM5
LDB4RTIsMHgzMCwweDAwLDB4MUIsMHhERiwweEZFLAotICAgIDB4NDQsMHgzOSwweDAzLDB4MzEs
MHhGMywweEFCLDB4QTUsMHg5NywweDY1LDB4NDEsMHgwMywweDMxLDB4NTUsMHhGRSwweEZFLDB4
RUEsCi0gICAgMHg0NCwweDM5LDB4MDMsMHgzOSwweDVGLDB4RjIsMHhFQSwweEVBLDB4MjQsMHgz
OSwweEUzLDB4MzAsMHhFNSwweEVBLDB4MkEsMHgwMiwKLSAgICAweDI0LDB4MzksMHhFMywweDMw
LDB4RkYsMHhCQiwweDgwLDB4MjAsMHgyNCwweDQxLDB4MDMsMHgzMSwweEZELDB4N0QsMHhGRSww
eEFDLAotICAgIDB4NDQsMHg0MSwweEUzLDB4MzAsMHhGNSwweEVFLDB4QUYsMHgyQSwweDY0LDB4
NDEsMHgwNCwweDM5LDB4RjUsMHg1NSwweERGLDB4MkEsCi0gICAgMHhDNSwweDUxLDB4MjQsMHgz
OSwweDU1LDB4RjUsMHhENSwweDJGLDB4MDYsMHg1QSwweDY1LDB4NDEsMHg5NSwweEE1LDB4QUIs
MHgwMCwKLSAgICAweDA3LDB4NUEsMHhDNiwweDU5LDB4N0YsMHhDQiwweDJCLDB4QTAsMHg0Nyww
eDZBLDB4QzYsMHg1OSwweEJFLDB4QUQsMHhBQiwweDAwLAotICAgIDB4NjgsMHg2QSwweDA2LDB4
NUEsMHhCNywweEE4LDB4QTgsMHhCRSwweDg4LDB4NkEsMHg0NywweDYyLDB4QTksMHhFRCwweDNB
LDB4OEEsCi0gICAgMHg4OCwweDZBLDB4NDgsMHg2QSwweEJDLDB4NzQsMHhBRSwweDM4LDB4QTks
MHg3MiwweDY4LDB4NkEsMHg1NSwweEE1LDB4MzcsMHhDRSwKLSAgICAweEE5LDB4NzIsMHg2OCww
eDZBLDB4NkUsMHhERiwweEZCLDB4MEYsMHhBOCwweDcyLDB4NjgsMHg2QSwweDJBLDB4MDAsMHgw
MSwweDAzLAotICAgIDB4QzksMHg3QSwweDg4LDB4NkEsMHhCRSwweEFDLDB4M0UsMHhBOSwweENB
LDB4NzIsMHg2OCwweDZBLDB4QUIsMHhFNywweEFFLDB4QUIsCi0gICAgMHhFQSwweDdBLDB4ODgs
MHg2QSwweDdFLDB4N0IsMHhEQiwweEZBLDB4RTksMHg3QSwweDg4LDB4NkEsMHhFQSwweDBCLDB4
RjcsMHhGRCwKLSAgICAweEU5LDB4NzIsMHg4OCwweDZBLDB4MEYsMHhBQywweEVCLDB4RUYsMHhF
QSwweDdBLDB4ODgsMHg3MiwweDhBLDB4M0UsMHgwRCwweEJBLAotICAgIDB4RUEsMHg3QSwweEE4
LDB4NzIsMHgwOSwweDU5LDB4QUEsMHgwMiwweDBBLDB4N0IsMHhBOSwweDcyLDB4QkYsMHhBRiww
eEZELDB4REMsCi0gICAgMHgwQSwweDdCLDB4QTksMHg3MiwweDNBLDB4MDIsMHhBQiwweEI3LDB4
MEEsMHg3QiwweEE5LDB4NzIsMHg5RSwweEFGLDB4QUUsMHgyMiwKLSAgICAweDAyLDB4MzksMHhD
MiwweDM4LDB4QjYsMHhBNCwweEVGLDB4Q0UsMHgwMywweDQxLDB4QzIsMHgzOCwweEFBLDB4RUIs
MHhGRiwweDU3LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHgwRSwweEFFLDB4RUYsMHhFOSww
eDAzLDB4MzksMHhBMSwweDMwLDB4QUUsMHhBOCwweEFFLDB4RjUsCi0gICAgMHhFMiwweDM4LDB4
QzIsMHgzOCwweEQzLDB4MEQsMHgwQiwweDI4LDB4RTIsMHgzOCwweEMyLDB4MzAsMHhGOCwweDJF
LDB4MDQsMHgyNywKLSAgICAweDAyLDB4NDEsMHhDMiwweDM4LDB4RUIsMHg2QSwweEZFLDB4RUYs
MHhFMiwweDM4LDB4QzIsMHgzOCwweEFCLDB4RUUsMHgzNSwweENFLAotICAgIDB4RTIsMHgzOCww
eEExLDB4MzAsMHgwOCwweDgyLDB4NjAsMHg2QSwweEUyLDB4MzgsMHhBMiwweDMwLDB4N0EsMHg3
RSwweEZFLDB4OUYsCi0gICAgMHhFMiwweDM4LDB4QTIsMHgzMCwweDA5LDB4QTIsMHg4MCwweDg4
LDB4NDYsMHg2QSwweEMyLDB4MzAsMHgzNSwweDk1LDB4NTUsMHg1NSwKLSAgICAweEE3LDB4NzIs
MHhDMywweDM4LDB4RTgsMHhGRiwweDVELDB4NTUsMHgyNCwweDQxLDB4QzIsMHgzMCwweEVBLDB4
RTgsMHhBRSwweEE1LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBMiwweEU4LDB4QkMsMHhG
RiwweDAzLDB4MzEsMHhBMiwweDMwLDB4MkEsMHg4OCwweENBLDB4MkEsCi0gICAgMHgwMywweDMx
LDB4QzIsMHgyOCwweEJFLDB4QkEsMHhGQSwweEZGLDB4MDMsMHgzMSwweEMyLDB4MzAsMHhFMyww
eEJFLDB4OEEsMHhGQSwKLSAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4RTksMHgwMCwweEFBLDB4
QUIsMHhFMywweDMwLDB4QzIsMHgyOCwweDJELDB4QTgsMHgwMiwweDhDLAotICAgIDB4MDMsMHgz
MSwweEMyLDB4MjgsMHhCQSwweDI3LDB4MDcsMHhFRSwweDIzLDB4MzksMHhDMywweDMwLDB4RUYs
MHhCRiwweEFGLDB4RDgsCi0gICAgMHgwMywweDM5LDB4QzIsMHgyOCwweERFLDB4QkMsMHhBQSww
eEVFLDB4QTIsMHgzOCwweDAzLDB4MzEsMHhERiwweDc2LDB4N0YsMHhGRiwKLSAgICAweDAyLDB4
MzksMHhDMywweDMwLDB4QjcsMHg3RiwweEVBLDB4RkIsMHgyNCwweDM5LDB4QzIsMHgyOCwweEJG
LDB4QkQsMHgzRiwweEJELAotICAgIDB4MDMsMHgzOSwweEMyLDB4MjgsMHhBNywweEZDLDB4RTMs
MHg4QSwweDAzLDB4MzEsMHhFMywweDMwLDB4RkIsMHhERiwweDc3LDB4OTUsCi0gICAgMHhDMyww
eDM4LDB4MDMsMHgzMSwweERGLDB4NTcsMHg1RiwweEU5LDB4MjQsMHgzOSwweEUzLDB4MzAsMHhB
RiwweDJFLDB4QkYsMHhENywKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4RjUsMHhFRSwweEFG
LDB4MkUsMHgyNCwweDM5LDB4RTMsMHgzOCwweEJGLDB4RUEsMHhCQywweEJBLAotICAgIDB4MjQs
MHgzOSwweEUzLDB4MzgsMHhBRiwweEFFLDB4OUYsMHhCQSwweDI0LDB4MzksMHhFMywweDM4LDB4
RUYsMHgyQiwweENFLDB4QTcsCi0gICAgMHgyNCwweDQxLDB4MDMsMHgzMSwweDlBLDB4N0EsMHhG
RSwweEEzLDB4NDUsMHgzOSwweDAzLDB4MzksMHhGNywweDVELDB4QjYsMHg5NywKLSAgICAweDIz
LDB4MzksMHgwMywweDM5LDB4MjMsMHhCMiwweEE4LDB4MEQsMHg2NCwweDQxLDB4MDMsMHgzOSww
eEZELDB4NTUsMHg1NSwweDczLAotICAgIDB4NDQsMHg0MSwweEUzLDB4MzAsMHgyMiwweEE1LDB4
QjcsMHhBQSwweDg1LDB4NDEsMHhFMywweDM4LDB4RUEsMHhBQSwweDBCLDB4QUQsCi0gICAgMHg4
NSwweDQ5LDB4MjQsMHgzOSwweEQ1LDB4MkYsMHg4QSwweDIwLDB4QTYsMHg1MSwweDI0LDB4Mzks
MHhENSwweEFFLDB4MEIsMHhBRSwKLSAgICAweEE1LDB4NTEsMHgyNCwweDM5LDB4QjcsMHhBRSww
eDAwLDB4MEEsMHhDNiwweDUxLDB4NDQsMHg0MSwweERELDB4QkYsMHgyQiwweDBBLAotICAgIDB4
MjcsMHg2MiwweDg1LDB4NDksMHhBRCwweEJGLDB4ODksMHgwQSwweDI3LDB4NjIsMHhFNiwweDU5
LDB4QjgsMHgyOSwweDAzLDB4QUEsCi0gICAgMHg0OCwweDZBLDB4MDYsMHg2MiwweDVGLDB4OTks
MHgzRSwweDIyLDB4NjcsMHg2QSwweDA2LDB4NUEsMHg4RSwweEEzLDB4QkIsMHg5RSwKLSAgICAw
eDY4LDB4NkEsMHgwNiwweDYyLDB4QUEsMHgyNiwweDJBLDB4QUEsMHhBOCwweDZBLDB4NDcsMHg2
MiwweDJGLDB4QjIsMHhCQSwweERCLAotICAgIDB4QTksMHg3MiwweDI3LDB4NjIsMHhGOCwweEFB
LDB4RjYsMHg3RiwweEE4LDB4NzIsMHg2OCwweDZBLDB4MDUsMHgwRCwweDBFLDB4RjksCi0gICAg
MHhFQSwweDdBLDB4ODgsMHg2QSwweEY1LDB4N0QsMHhGQiwweDhELDB4QzksMHg3MiwweDg4LDB4
NzIsMHg5OCwweEZGLDB4RDYsMHhCRSwKLSAgICAweEE4LDB4NzIsMHg2OCwweDZBLDB4RTAsMHhG
OCwweEVBLDB4RTAsMHhBOSwweDcyLDB4NjgsMHg2QSwweEFBLDB4RUEsMHg3NSwweDdELAotICAg
IDB4QzksMHg3MiwweDY4LDB4NkEsMHhBQSwweEJCLDB4QUIsMHg3RCwweEU5LDB4N0EsMHg4OSww
eDZBLDB4QUQsMHhGRiwweEZCLDB4MkYsCi0gICAgMHhDOSwweDcyLDB4ODgsMHg3MiwweEJDLDB4
MjQsMHgyQiwweDBCLDB4QzksMHg3QSwweDY3LDB4NkEsMHhBQiwweEYyLDB4RkMsMHhEOCwKLSAg
ICAweEM5LDB4NzIsMHg4OCwweDZBLDB4ODAsMHgyOSwweDlELDB4RUYsMHhFQSwweDcyLDB4ODgs
MHg2QSwweEQyLDB4QkUsMHhCRSwweEJFLAotICAgIDB4RUEsMHg3QSwweDg4LDB4NzIsMHgyOSww
eEFGLDB4OUUsMHhGMCwweEU5LDB4N0EsMHhBOSwweDcyLDB4ODAsMHhFMiwweDIwLDB4QkQsCi19
OwotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzJfd2lkdGggPSAxMjg7Ci1zdGF0aWMgY29u
c3Qgc2l6ZV90IHBpeGVsXzJfaGVpZ2h0ID0gMTI4Owotc3RhdGljIGNvbnN0IHNpemVfdCBwaXhl
bF8yX3NpemUgPSA4MTkyOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcGl4ZWxfMl9kYXRh
WzgxOTJdID0KLXsKLSAgICAweDg3LDB4NjIsMHgyMywweDQxLDB4N0YsMHhFMywweEFELDB4RkYs
MHhFNSwweDUxLDB4RTIsMHgzMCwweEVFLDB4M0EsMHg2OCwweEJBLAotICAgIDB4RTYsMHg1MSww
eDAyLDB4MzEsMHhBNiwweEJFLDB4RTMsMHhEQiwweDA2LDB4NTIsMHgyMywweDM5LDB4QjcsMHhE
RiwweDczLDB4REUsCi0gICAgMHhFNiwweDUxLDB4MjMsMHgzOSwweDM3LDB4N0YsMHg3MywweEQ4
LDB4RTYsMHg1MSwweDAyLDB4MzksMHgzNywweDVCLDB4RkIsMHhGOCwKLSAgICAweEU2LDB4NTks
MHg0MywweDQxLDB4MEQsMHhGOSwweEJELDB4QUMsMHhFNSwweDU5LDB4MjMsMHgzOSwweEJFLDB4
NzIsMHhERSwweDVDLAotICAgIDB4QzYsMHg1MSwweDIzLDB4MzksMHhGRiwweDcyLDB4MUMsMHhG
QywweDI3LDB4NUEsMHgyNCwweDM5LDB4RDcsMHg3QSwweDlDLDB4RkYsCi0gICAgMHhFNiwweDUx
LDB4MDMsMHgzOSwweDlFLDB4RkUsMHgzQywweEZBLDB4MjYsMHg1MiwweDQ0LDB4NDEsMHgxNyww
eEY3LDB4OUYsMHg3MywKLSAgICAweDI2LDB4NUEsMHg2NCwweDQxLDB4MTcsMHhCNSwweDk3LDB4
RUIsMHgyNywweDVBLDB4NDQsMHg0MSwweEY4LDB4QkYsMHhCNiwweEQ3LAotICAgIDB4NDcsMHg2
MiwweDQzLDB4MzksMHgyQiwweDBCLDB4MkUsMHg1NywweDY2LDB4NjIsMHg0MywweDQxLDB4ODIs
MHhGMCwweDZBLDB4NTUsCi0gICAgMHg0NiwweDYyLDB4NDMsMHg0MSwweDAwLDB4MEEsMHhFQiww
eEQ1LDB4NjcsMHg2MiwweDQ0LDB4NDEsMHhGNywweERDLDB4N0YsMHg1NywKLSAgICAweEU2LDB4
NTEsMHg0MywweDM5LDB4Q0QsMHhGNywweEY4LDB4RkQsMHhDNSwweDUxLDB4MjMsMHgzOSwweEMx
LDB4QkYsMHg1NywweDBBLAotICAgIDB4NEUsMHhBNCwweDAyLDB4MzksMHgzRiwweEY1LDB4NTUs
MHhGRiwweDk2LDB4RUUsMHhFNiwweDU5LDB4MDAsMHgwMywweDBELDB4MEQsCi0gICAgMHhENyww
eEY2LDB4NzUsMHhFRSwweDJCLDB4Q0EsMHhEMiwweDdDLDB4RjcsMHhGNiwweDM0LDB4RTYsMHhB
QSwweEFBLDB4N0EsMHg1RiwKLSAgICAweEQ3LDB4RjYsMHgxNCwweERFLDB4MDAsMHgwMCwweDBB
LDB4OTUsMHgxOCwweEZGLDB4NzUsMHhFNiwweDBBLDB4QTIsMHhCNywweDdBLAotICAgIDB4MTgs
MHhGRiwweDk2LDB4RTYsMHhBMCwweDBBLDB4QUEsMHhBRCwweDE4LDB4RjcsMHhENywweEY2LDB4
N0UsMHhFQSwweEFCLDB4N0EsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweDBBLDB4QkUsMHg3
MCwweEU4LDB4RDcsMHhGNiwweEIyLDB4RDUsMHg2OCwweEUwLDB4QzgsMHhBOCwKLSAgICAweDE0
LDB4RTYsMHg3MSwweENELDB4ODIsMHg4MSwweDI5LDB4MEQsMHgzNCwweERFLDB4RjMsMHhERCww
eDVGLDB4NUQsMHhERSwweDVBLAotICAgIDB4QTgsMHg3MiwweDYzLDB4NDEsMHhCNywweERGLDB4
NUUsMHg1QywweDI3LDB4NUEsMHg0MywweDM5LDB4RkYsMHhGQywweDU3LDB4MEIsCi0gICAgMHhF
NiwweDUxLDB4MjMsMHgzOSwweEZGLDB4RkUsMHg3NSwweDAwLDB4NjcsMHg2MiwweDAzLDB4MzEs
MHg3RSwweDcyLDB4NTUsMHhBQSwKLSAgICAweEM2LDB4NTEsMHgyMywweDM5LDB4NjIsMHhGOSww
eDU1LDB4MDAsMHhDNiwweDUxLDB4MjMsMHgzOSwweEZGLDB4NTUsMHhGNiwweDAwLAotICAgIDB4
RTYsMHg2OSwweDQzLDB4NDEsMHgyRCwweDI1LDB4MDksMHgwQSwweDY4LDB4N0EsMHgwMywweDM5
LDB4RkUsMHg1QSwweEFBLDB4MEEsCi0gICAgMHgwRCwweDlDLDB4MjQsMHgzOSwweDc1LDB4NTUs
MHg3NywweDAyLDB4QUYsMHhBQywweDIzLDB4MzksMHg1NSwweDU1LDB4RkYsMHgwMCwKLSAgICAw
eEQzLDB4RDUsMHg4NSwweDQ5LDB4NTUsMHg1NSwweDU1LDB4MDAsMHgzNSwweEU2LDB4NjQsMHg0
MSwweDU1LDB4NTUsMHhGRiwweDAwLAotICAgIDB4OTYsMHhFRSwweDg0LDB4NDksMHg1NSwweDU1
LDB4QkYsMHgwMCwweDc1LDB4RUUsMHg4NCwweDQ5LDB4NTUsMHg1NSwweEFBLDB4MDAsCi0gICAg
MHhENywweEZFLDB4QTUsMHg1MSwweDU1LDB4NTUsMHhBQSwweEUwLDB4NTUsMHhFRSwweEU2LDB4
NTksMHg1NSwweEQ1LDB4MEYsMHgyNSwKLSAgICAweEI3LDB4RjYsMHhFNiwweDU5LDB4NTUsMHhG
RiwweDAwLDB4MDAsMHhCNiwweEVFLDB4MDYsMHg1QSwweDU1LDB4QUIsMHgwMCwweDAwLAotICAg
IDB4QjcsMHhGNiwweDI2LDB4NjIsMHg1NSwweDJBLDB4MDAsMHgwMCwweDk2LDB4RUUsMHg4Nyww
eDZBLDB4NTUsMHgwMCwweDAwLDB4MDAsCi0gICAgMHhCNiwweEVFLDB4MkEsMHg4MywweEQ1LDB4
MDAsMHgwMCwweDAwLDB4QjYsMHhGNiwweDhFLDB4QUMsMHgwOSwweDAwLDB4MDAsMHgwMCwKLSAg
ICAweEI2LDB4RjYsMHgxNCwweERFLDB4RTgsMHg2OCwweEZBLDB4QjYsMHhENywweEY2LDB4MTQs
MHhERSwweEZELDB4MEQsMHgwMiwweDA4LAotICAgIDB4RDcsMHhGNiwweEYzLDB4RDUsMHg3QSww
eEFBLDB4QTAsMHgwMCwweEQ3LDB4RjYsMHhEMywweEQ1LDB4MEQsMHhCRSwweEEyLDB4MDgsCi0g
ICAgMHgxOCwweEY3LDB4MzUsMHhERSwweDlFLDB4RkEsMHg4QiwweDJBLDB4MTgsMHhGNywweDk2
LDB4RUUsMHg4OCwweDI5LDB4QUEsMHhFOCwKLSAgICAweDE4LDB4RjcsMHg5NiwweEU2LDB4RkUs
MHhGOCwweDdBLDB4N0EsMHg3NSwweEVFLDB4RDMsMHhENSwweDAwLDB4QTAsMHhBQywweEU2LAot
ICAgIDB4MzQsMHhFNiwweDkyLDB4Q0QsMHhBNSwweEE3LDB4MzYsMHgyNiwweDM0LDB4RTYsMHhG
MywweERELDB4REEsMHhGRSwweEQ2LDB4NTYsCi0gICAgMHg5NiwweEVFLDB4RTUsMHg1MSwweDU2
LDB4QTgsMHgwMCwweDAwLDB4QjYsMHhFRSwweDA2LDB4NUEsMHg1NSwweEFBLDB4MDAsMHgwMCwK
LSAgICAweDk2LDB4RUUsMHg0NywweDYyLDB4NTUsMHgwMiwweDAwLDB4MDAsMHg3NSwweEVFLDB4
QzksMHg3MiwweEQ1LDB4MDAsMHgwMCwweDAwLAotICAgIDB4OTYsMHhFRSwweDhCLDB4OTMsMHhG
NSwweDAwLDB4MDAsMHgwMCwweEI2LDB4RUUsMHgxMCwweEJELDB4RDUsMHgwMiwweDAwLDB4MDAs
Ci0gICAgMHhENywweEY2LDB4RTUsMHg2OSwweDVBLDB4NTgsMHg1OCwweDU4LDB4MEEsMHg4Qiww
eEM1LDB4NjksMHgzRCwweERELDB4RjUsMHhENSwKLSAgICAweDk2LDB4RUUsMHg0NiwweDcyLDB4
MDIsMHgwMywweDA5LDB4MjUsMHhCNiwweEY2LDB4OTYsMHhFRSwweEY1LDB4QUEsMHg4MiwweDAy
LAotICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHhBQiwweEFCLDB4MDIsMHgyMCwweEI2LDB4RjYs
MHhENiwweEVFLDB4MjAsMHhDMCwweDYwLDB4RkMsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiww
eEY1LDB4ODIsMHgwMiwweDAwLDB4RjcsMHhGNiwweDcxLDB4Q0QsMHgwMCwweDAwLDB4ODAsMHg2
MCwKLSAgICAweDU1LDB4RUUsMHg4NywweDdBLDB4NzAsMHg1OCwweDU2LDB4NTUsMHhCNywweEY2
LDB4NDYsMHg3MiwweDI1LDB4MjUsMHgyNSwweDBELAotICAgIDB4RjgsMHhGRSwweDE3LDB4Rjcs
MHhGQSwweEZFLDB4RkYsMHhGNywweEY3LDB4RjYsMHhENywweEY2LDB4N0UsMHhGQywweEY4LDB4
NjIsCi0gICAgMHhENywweEY2LDB4RjcsMHhFRSwweDAwLDB4MDAsMHgyOCwweDgwLDB4RDcsMHhG
NiwweEY3LDB4RUUsMHgwMCwweEEwLDB4MDgsMHhBOCwKLSAgICAweEY3LDB4RjYsMHg5NiwweEVF
LDB4MkEsMHg4QSwweEUyLDB4NzgsMHg5NiwweEVFLDB4RjMsMHhERCwweDgwLDB4RTAsMHg3MCww
eDVDLAotICAgIDB4QjcsMHhGNiwweEQyLDB4RDUsMHhCNywweDI1LDB4MEIsMHgwMiwweEQ3LDB4
RjYsMHgzNCwweEU2LDB4QkQsMHg1NywweEFBLDB4MjgsCi0gICAgMHhGOCwweEY2LDB4NTUsMHhF
NiwweDBBLDB4MkQsMHhGQiwweEFBLDB4RjcsMHhGNiwweEI3LDB4RUUsMHhENywweDdFLDB4NkEs
MHg4OSwKLSAgICAweDE4LDB4RjcsMHhENywweEY2LDB4M0YsMHhBOSwweDI5LDB4RkYsMHgzOSww
eEZGLDB4QjYsMHhFRSwweEU4LDB4RjIsMHg2MiwweEVFLAotICAgIDB4RDcsMHhGNiwweDM0LDB4
RTYsMHhDMCwweDhBLDB4NkIsMHg2RiwweDM0LDB4RTYsMHgxMCwweEM1LDB4OEMsMHgwNCwweEE2
LDB4MjYsCi0gICAgMHg3NiwweEVFLDB4Q0YsMHhCQywweEFFLDB4MkEsMHgzRSwweDlBLDB4OTYs
MHhFRSwweEQzLDB4RDUsMHg3RiwweDdBLDB4QTgsMHgyQSwKLSAgICAweEQ2LDB4RjYsMHhCNiww
eEVFLDB4RkQsMHhGNywweEZGLDB4QUQsMHhENiwweEY2LDB4QjYsMHhFRSwweEZCLDB4RkEsMHhC
QSwweEU5LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhERiwweEVFLDB4QkIsMHhGQSwweEI1
LDB4RjYsMHg5NiwweEVFLDB4RDcsMHhERCwweEJFLDB4RkUsCi0gICAgMHhENywweEY2LDB4OTYs
MHhFRSwweDJGLDB4MjcsMHgyRiwweDJGLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhDQSwweDA4LDB4
MDgsMHg4MiwKLSAgICAweDk1LDB4RjYsMHhBNSwweDYxLDB4NTgsMHg3QywweDVDLDB4NTQsMHgw
NiwweDcyLDB4NDQsMHg1OSwweDJDLDB4QjgsMHg3QSwweDc5LAotICAgIDB4OTIsMHhENSwweDg0
LDB4NTksMHgyRCwweEI1LDB4RjUsMHhENSwweEQ2LDB4RjYsMHhFQywweEEzLDB4MDAsMHgwMCww
eDAyLDB4MDksCi0gICAgMHhENywweEY2LDB4QjYsMHhGNiwweDc3LDB4REUsMHhERSwweEI4LDB4
RDYsMHhGNiwweEI2LDB4RjYsMHgwQiwweDJELDB4MkUsMHgwOCwKLSAgICAweEY3LDB4RjYsMHg1
NSwweEVFLDB4MDAsMHgwMCwweDgwLDB4NDAsMHgxNywweEZGLDB4NDYsMHg3QSwweEUwLDB4Nzgs
MHg1RSwweDU3LAotICAgIDB4ODcsMHg4QSwweDI2LDB4N0EsMHgwRiwweDI3LDB4QTksMHhGQiww
eEY3LDB4RkUsMHg4NywweDgyLDB4MEQsMHgwRCwweDA5LDB4MDksCi0gICAgMHgxOCwweEZGLDB4
MTcsMHhGNywweEVFLDB4QkIsMHhFRSwweEVBLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhFOCwweEU4
LDB4RUEsMHhFQSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RjUsMHhENywweDdGLDB4RUIs
MHgxNywweEZGLDB4QjcsMHhFRSwweEFGLDB4Q0IsMHg2QSwweDVBLAotICAgIDB4RDYsMHhGNiww
eEQzLDB4RDUsMHhBMCwweEE4LDB4RTgsMHg3QSwweEQ3LDB4RjYsMHg5MiwweEQ1LDB4OUUsMHgy
NywweDA5LDB4MDIsCi0gICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEJGLDB4QUEsMHhFRSwweEVB
LDB4RDcsMHhGNiwweEI2LDB4RUUsMHhEOCwweEFFLDB4OEEsMHhFOCwKLSAgICAweEY3LDB4RjYs
MHhCNiwweEVFLDB4MTUsMHg1NywweDc3LDB4RUYsMHgzOCwweEZGLDB4RDcsMHhFRSwweEVGLDB4
QUIsMHgyRCwweEI1LAotICAgIDB4MzksMHhGRiwweEQ3LDB4RjYsMHhERiwweDdGLDB4REUsMHg3
OCwweEY4LDB4RjYsMHhCNiwweEVFLDB4RjgsMHhGOCwweEZFLDB4RDcsCi0gICAgMHhCNiwweEVF
LDB4RjMsMHhENSwweENFLDB4OEUsMHg4QywweDI2LDB4RjMsMHhERCwweDMwLDB4QzUsMHgyNCww
eDNDLDB4MkEsMHgzQSwKLSAgICAweDk2LDB4RjYsMHgzMCwweEM1LDB4MUYsMHgzRCwweDM1LDB4
MzUsMHhCNiwweEY2LDB4MzQsMHhFNiwweERFLDB4REMsMHhEQywweEZDLAotICAgIDB4QjYsMHhG
NiwweEQ2LDB4RUUsMHhFQiwweEZGLDB4RkIsMHhGRiwweEQ2LDB4RjYsMHhCNywweEVFLDB4QUEs
MHg4MiwweDBBLDB4MjIsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEVBLDB4QUUsMHhDMCww
eDgwLDB4RDYsMHhGNiwweDk2LDB4RUUsMHhGRiwweEZGLDB4QkIsMHhCRSwKLSAgICAweEY3LDB4
RjYsMHhCNiwweEVFLDB4QjUsMHhCNSwweEJELDB4QTcsMHhENiwweEY2LDB4RjcsMHhFRSwweDAw
LDB4MDgsMHhBMiwweEE4LAotICAgIDB4OTUsMHhFRSwweDQzLDB4NTEsMHg1QywweDVDLDB4NTgs
MHg1MCwweDg1LDB4NTksMHhFMiwweDQwLDB4QzIsMHhGRSwweDdCLDB4NzYsCi0gICAgMHg2Nyww
eDcyLDB4MDMsMHg0MSwweDNELDB4QUQsMHgyNSwweDI1LDB4MzQsMHhFNiwweDA5LDB4ODMsMHgw
RCwweEY1LDB4NTUsMHg1NSwKLSAgICAweDk1LDB4RUUsMHhDOCwweDdBLDB4MDAsMHhCRiwweEQ1
LDB4NTUsMHhCNiwweEY2LDB4MDksMHg4QiwweDAwLDB4MjIsMHg3RCwweDU1LAotICAgIDB4NzYs
MHhGNiwweDQ2LDB4NzIsMHg4MCwweDYwLDB4NUYsMHg1NSwweDY3LDB4ODIsMHhFNSwweDcxLDB4
MkMsMHgwQiwweEU3LDB4RDcsCi0gICAgMHgyOSwweDlCLDB4MjYsMHg4MiwweEQ3LDB4RjUsMHhC
RCwweDJELDB4RjcsMHhGRSwweDRCLDB4QTMsMHgwMSwweDAzLDB4MDIsMHgwMiwKLSAgICAweDM4
LDB4RkYsMHgxOCwweEY3LDB4N0UsMHg2QiwweDdGLDB4RkYsMHgxNywweEY3LDB4RDcsMHhGNiww
eEZGLDB4RUUsMHhFRSwweEEwLAotICAgIDB4MTgsMHhGRiwweDc1LDB4RUUsMHgyQSwweDgyLDB4
RTIsMHg1OCwweEY3LDB4RkUsMHg1NSwweEVFLDB4RjgsMHhFRSwweDZFLDB4N0YsCi0gICAgMHhE
NywweEY2LDB4RjQsMHhERCwweEJFLDB4MjcsMHgwOSwweDAyLDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHg3RCwweDdCLDB4NUEsMHhFRSwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4MDAsMHhBMCww
eDgwLDB4ODAsMHhENywweEY2LDB4QjYsMHhFRSwweEFBLDB4QTAsMHhFOCwweEFBLAotICAgIDB4
RDcsMHhGNiwweEI3LDB4RUUsMHg4MCwweDBCLDB4QUYsMHgwQSwweEY4LDB4RjYsMHhENywweEY2
LDB4MkQsMHgzRCwweDI1LDB4QUIsCi0gICAgMHgzOSwweEZGLDB4OTcsMHhFRSwweEUwLDB4NkEs
MHg0QSwweEVBLDB4QjYsMHhFRSwweDc2LDB4RUUsMHgzOCwweEJGLDB4OUYsMHhGRiwKLSAgICAw
eEI3LDB4RjYsMHg3MSwweENELDB4MjQsMHgwNiwweDI0LDB4MjYsMHgzNSwweEU2LDB4OTIsMHhD
RCwweEQ2LDB4OUUsMHhEQywweDU0LAotICAgIDB4RjMsMHhERCwweDhFLDB4QjQsMHgyNywweDM3
LDB4MDcsMHgwOSwweDk2LDB4RUUsMHgzNCwweEU2LDB4RDgsMHhGQiwweERCLDB4RkIsCi0gICAg
MHhENiwweEY2LDB4QjcsMHhFRSwweEFBLDB4OEEsMHgwMCwweDJBLDB4RDcsMHhGNiwweEQ2LDB4
RUUsMHhBQSwweEFBLDB4QUEsMHgwQSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NzUsMHg3
NywweEY1LDB4QUQsMHhENiwweEY2LDB4QjYsMHhFRSwweERGLDB4RDYsMHhFQSwweEE4LAotICAg
IDB4RjcsMHhGNiwweEI2LDB4RUUsMHhBRCwweEE3LDB4QUYsMHhBRiwweEY3LDB4RjYsMHhENyww
eEY2LDB4RjUsMHg3RSwweEE3LDB4QUIsCi0gICAgMHhENywweEY2LDB4MDIsMHg0MSwweDcwLDB4
NzAsMHg2MCwweDYwLDB4RTUsMHg2MSwweEUyLDB4NDAsMHg3RiwweEZGLDB4QkQsMHgwOSwKLSAg
ICAweDY3LDB4NzIsMHg0NCwweDQ5LDB4MkQsMHhBRiwweEZCLDB4RUEsMHhBOCwweDdBLDB4RTUs
MHg2MSwweDgwLDB4QTIsMHhGRCwweDVGLAotICAgIDB4ODgsMHg3MiwweEU1LDB4NjEsMHgyMiww
eEJBLDB4RkUsMHhENSwweDJBLDB4OEIsMHhFNSwweDYxLDB4MDIsMHhBQSwweDdCLDB4NTUsCi0g
ICAgMHg2NywweDdBLDB4QzUsMHg2MSwweDM0LDB4QjcsMHhFRCwweEMzLDB4MjYsMHg3QSwweDQz
LDB4NTksMHgyQywweDI2LDB4QjUsMHgxNSwKLSAgICAweEU5LDB4OTIsMHg0NywweDgyLDB4MzUs
MHgyNSwweEI1LDB4M0YsMHhGNywweEZFLDB4MTAsMHhDRCwweDAxLDB4MDEsMHgwMywweDAzLAot
ICAgIDB4MzgsMHhGRiwweEY3LDB4RjYsMHhBQSwweEFGLDB4RkYsMHg1QiwweDM4LDB4RkYsMHhE
NiwweEY2LDB4QTgsMHhFMCwweDZCLDB4NUIsCi0gICAgMHhENywweEY2LDB4NTQsMHhFNiwweEE4
LDB4ODAsMHg2MCwweDQwLDB4RjgsMHhGRSwweEQzLDB4REQsMHg1RSwweEQ2LDB4ODMsMHg4MiwK
LSAgICAweEQ3LDB4RjYsMHhCMiwweEQ1LDB4MjUsMHgzNywweEJFLDB4RkEsMHhGNywweEY2LDB4
QjYsMHhGNiwweDAyLDB4MDIsMHhBQiwweDA5LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3
RiwweDVBLDB4QkYsMHhERiwweEY3LDB4RjYsMHg5NywweEVFLDB4QUEsMHgwRSwweDIyLDB4OEEs
Ci0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDg1LDB4QzIsMHg4QiwweEFBLDB4RjgsMHhGNiww
eEQ3LDB4RjYsMHgwMiwweEVBLDB4MEEsMHhDQSwKLSAgICAweEY4LDB4RjYsMHhCNywweEVFLDB4
OEEsMHgyQSwweEJFLDB4QjcsMHg5NiwweEVFLDB4NzYsMHhFRSwweEFFLDB4OUMsMHhCRSwweEUw
LAotICAgIDB4OTYsMHhFRSwweDUxLDB4Q0QsMHgyNCwweDI0LDB4MkUsMHgyQywweDU1LDB4RUUs
MHhGMCwweEJDLDB4RkMsMHhGOCwweDc4LDB4NTgsCi0gICAgMHgzNCwweEU2LDB4MTAsMHhDNSww
eDJELDB4MkIsMHgwMSwweDBCLDB4OTYsMHhFRSwweDU1LDB4RTYsMHg1QiwweEZBLDB4RjMsMHgz
MywKLSAgICAweEQ2LDB4RjYsMHhCNiwweEU2LDB4MjgsMHg4MiwweDIwLDB4ODgsMHhENywweEY2
LDB4RDYsMHhFRSwweDhBLDB4QUEsMHgyQiwweEFBLAotICAgIDB4RjYsMHhGNiwweEQ3LDB4RjYs
MHhGRCwweDdGLDB4NzcsMHg3RCwweEQ2LDB4RjYsMHhCNywweEVFLDB4MDAsMHgwOCwweDJBLDB4
QUUsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEQ1LDB4QTcsMHgyRCwweEE1LDB4RjcsMHhG
NiwweEQ2LDB4RjYsMHhCQSwweEFBLDB4Q0EsMHgwMiwKLSAgICAweEI2LDB4RjYsMHg2NiwweDcy
LDB4NjAsMHg2MCwweDcwLDB4NzAsMHhDOCwweDgyLDB4QzUsMHg1OSwweEU1LDB4MEEsMHgyQSww
eEZFLAotICAgIDB4QTgsMHg3QSwweEE0LDB4NTksMHg3QSwweEUwLDB4NjgsMHg3QiwweDY3LDB4
NzIsMHg2NCwweDUxLDB4ODIsMHhDMywweEZGLDB4RjUsCi0gICAgMHg0NiwweDcyLDB4QzUsMHg1
OSwweEZELDB4RTUsMHhENSwweDM5LDB4MkEsMHg5MywweEM1LDB4NjEsMHhENSwweEI1LDB4MkYs
MHgwQSwKLSAgICAweDhFLDB4QzQsMHg4OCwweDgyLDB4N0QsMHhEQiwweEVCLDB4MEEsMHg4Qiww
eEEzLDB4QzUsMHg2OSwweDk3LDB4RUEsMHg4QSwweEU4LAotICAgIDB4RDcsMHhGRSwweDY3LDB4
N0EsMHhENSwweDE1LDB4MjUsMHgwRCwweDE3LDB4RkYsMHhCOCwweEY2LDB4MjEsMHgyMiwweDIy
LDB4MjAsCi0gICAgMHgxOCwweEZGLDB4QjYsMHhFRSwweDI4LDB4ODgsMHg2QSwweDVBLDB4MTcs
MHhGRiwweDM0LDB4RTYsMHhBOCwweDdBLDB4N0YsMHhBMiwKLSAgICAweDM5LDB4RkYsMHg5Niww
eEVFLDB4RTIsMHhDMSwweDgzLDB4ODgsMHgxOCwweEZGLDB4RDgsMHhGNiwweEU5LDB4ODksMHhB
QiwweEFCLAotICAgIDB4MTgsMHhGRiwweDE0LDB4RTYsMHg3RiwweDdFLDB4RkMsMHg3OCwweDE4
LDB4RkYsMHg1NSwweEU2LDB4MkIsMHgyOSwweEFELDB4QUQsCi0gICAgMHgzOCwweEZGLDB4RDcs
MHhGNiwweDU3LDB4N0YsMHhGRiwweEZCLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhEOSwweDBCLDB4
MDAsMHgwMCwKLSAgICAweDE4LDB4RkYsMHhENywweEY2LDB4RkQsMHhBRSwweEJCLDB4RkEsMHhG
NywweEY2LDB4OTUsMHhFRSwweDgwLDB4QTAsMHhFOCwweEU4LAotICAgIDB4RDcsMHhGNiwweDk2
LDB4RUUsMHgzNywweDBELDB4MDksMHhBRCwweDk2LDB4RUUsMHg1NSwweEU2LDB4QTgsMHhBOCww
eEJCLDB4QkQsCi0gICAgMHg1NSwweEVFLDB4QjMsMHhENSwweDA0LDB4MjQsMHgwNCwweDI0LDB4
NTUsMHhFRSwweDZFLDB4QjQsMHg3OCwweDc4LDB4NTgsMHg1QSwKLSAgICAweDc2LDB4RUUsMHg5
MiwweEQ1LDB4QTksMHhBOSwweDI5LDB4MDMsMHhCNiwweEY2LDB4MzQsMHhFNiwweDNCLDB4MjUs
MHgyRSwweEFGLAotICAgIDB4RDYsMHhGNiwweDU1LDB4RUUsMHgwMCwweDAwLDB4MDAsMHgwOSww
eEQ2LDB4RjYsMHhGNywweEVFLDB4MjAsMHg4OCwweDg4LDB4MjAsCi0gICAgMHhENiwweEY2LDB4
RDcsMHhFRSwweDhBLDB4QUEsMHg4OCwweDIyLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhFRSwweEJF
LDB4QUEsMHgwMCwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4MDIsMHg4QSwweEJCLDB4ODAs
MHhGNywweEY2LDB4QjYsMHhFRSwweEFBLDB4QUIsMHhFQiwweEZFLAotICAgIDB4NzUsMHhFRSww
eDYzLDB4NDksMHg3OCwweDU4LDB4NTgsMHg1QywweEU1LDB4NjEsMHhBMSwweDI4LDB4MDAsMHhF
RiwweEQ3LDB4RDUsCi0gICAgMHhDNSwweDU5LDB4RTIsMHgzOCwweEE4LDB4QjcsMHhCRCwweDM1
LDB4MDksMHg5MywweDg0LDB4NTEsMHhGRCwweEVCLDB4N0EsMHg3MiwKLSAgICAweDJBLDB4OEIs
MHgyMywweDQ5LDB4MkYsMHgyQiwweDNGLDB4QjUsMHhFQywweEFCLDB4ODcsMHg4MiwweEJBLDB4
ODAsMHgwQiwweDJELAotICAgIDB4NEUsMHhCQywweDQ3LDB4N0EsMHgwQSwweEFFLDB4RkUsMHg3
QSwweEVDLDB4QUIsMHgyNiwweDcyLDB4NUMsMHhENiwweDNGLDB4MkIsCi0gICAgMHhGOCwweEZF
LDB4Q0IsMHhBMywweDA5LDB4MDIsMHgwMiwweDAyLDB4MTgsMHhGRiwweEQ2LDB4RjYsMHhBMCww
eEEyLDB4RTAsMHg3MCwKLSAgICAweDU5LDB4RkYsMHhENiwweEY2LDB4RDcsMHhBNSwweEFELDB4
MEQsMHgzOCwweEZGLDB4NzUsMHhFNiwweDcwLDB4RDAsMHhEQywweDlDLAotICAgIDB4MzgsMHhG
RiwweEY5LDB4RjYsMHhDQSwweDZBLDB4RUEsMHhFRSwweDE4LDB4RkYsMHhGOCwweEY2LDB4Qjks
MHhCRiwweEFGLDB4QTcsCi0gICAgMHgxOCwweEZGLDB4NTUsMHhFRSwweDc4LDB4RTAsMHhFMCww
eEE4LDB4RjcsMHhGNiwweDU1LDB4RUUsMHgyRCwweDJGLDB4MEYsMHgyQSwKLSAgICAweDE4LDB4
RkYsMHhGNywweEY2LDB4NTUsMHg1NSwweEZELDB4QTUsMHhGNywweEY2LDB4RDcsMHhGNiwweDI4
LDB4NjIsMHgwMCwweDAwLAotICAgIDB4RjcsMHhGNiwweDk2LDB4RUUsMHg4MCwweDI4LDB4Rjgs
MHg3QSwweEQ3LDB4RjYsMHg1NSwweEU2LDB4RTAsMHhGMCwweERFLDB4RjcsCi0gICAgMHhENyww
eEY2LDB4NzYsMHhFRSwweDg5LDB4ODksMHhGMywweEJCLDB4NzUsMHhFRSwweEY0LDB4REQsMHgw
QSwweDA3LDB4MjUsMHhBNywKLSAgICAweDU2LDB4RUUsMHg5MiwweENELDB4MkMsMHgyRSwweDJF
LDB4NjYsMHgxNCwweEU2LDB4QUYsMHhCQywweEQ4LDB4RjgsMHhGMCwweEQyLAotICAgIDB4MzQs
MHhFNiwweDMxLDB4Q0QsMHg4MiwweDdGLDB4RDcsMHhENywweDM1LDB4RTYsMHg5MiwweEQ1LDB4
MEYsMHgwRCwweDJELDB4QkQsCi0gICAgMHgzNCwweEU2LDB4RTgsMHg4MiwweDJELDB4NTUsMHg1
NSwweDU1LDB4QjYsMHhGNiwweDA4LDB4ODMsMHgwMCwweDJGLDB4NTUsMHg1NSwKLSAgICAweEI2
LDB4RjYsMHhFOCwweDgyLDB4MDAsMHgwMCwweDBCLDB4RDUsMHhENiwweEY2LDB4RjAsMHhDNCww
eDAwLDB4MDAsMHgwMCwweDJELAotICAgIDB4QjcsMHhGRSwweEY2LDB4RjYsMHhGRiwweEZGLDB4
QkYsMHhFQSwweEY3LDB4RkUsMHhCNiwweEY2LDB4RkYsMHhBRSwweEVFLDB4QUEsCi0gICAgMHg5
NSwweEVFLDB4NDMsMHg0MSwweDVDLDB4NUMsMHg1QywweDU4LDB4NDQsMHg0MSwweEExLDB4Mjgs
MHhENSwweEY3LDB4QTAsMHg4MCwKLSAgICAweDA2LDB4NzIsMHhFMiwweDM4LDB4QjUsMHgzNSww
eDM1LDB4MkQsMHhDOCwweDgyLDB4RTMsMHg0MCwweDYwLDB4NzAsMHg3QSwweDVFLAotICAgIDB4
RTYsMHg2MSwweDgxLDB4MjgsMHgyRiwweEZGLDB4NzcsMHg1RiwweDA5LDB4OTMsMHhDMiwweDMw
LDB4MEEsMHgyRiwweEI1LDB4QjUsCi0gICAgMHg2QiwweDlCLDB4NjcsMHg3QSwweEQ4LDB4REUs
MHhGRiwweEZGLDB4Q0IsMHhBMywweDA2LDB4NkEsMHhDMiwweEFBLDB4RkIsMHg3RiwKLSAgICAw
eDM0LDB4RTYsMHg2NywweDcyLDB4MkQsMHg5NSwweDU1LDB4NTUsMHhENywweEY2LDB4NEIsMHg5
MywweDAwLDB4MDAsMHgwMiwweDBELAotICAgIDB4NzksMHhGRiwweEQ3LDB4RjYsMHhBOSwweEVC
LDB4RUEsMHg2RSwweEY3LDB4RkUsMHgzNSwweEU2LDB4M0MsMHgzRiwweDM3LDB4MjcsCi0gICAg
MHgzOCwweEZGLDB4RjcsMHhGNiwweEUzLDB4RUIsMHhFQiwweEVCLDB4RjgsMHhGRSwweDE4LDB4
RjcsMHhFQSwweEFCLDB4QUEsMHhBQSwKLSAgICAweDE4LDB4RkYsMHhENywweEY2LDB4N0EsMHg1
QSwweEZFLDB4RkEsMHhGOCwweEY2LDB4RDcsMHhGNiwweEQ1LDB4QkEsMHgwQSwweDBCLAotICAg
IDB4MTgsMHhGRiwweEY3LDB4RjYsMHhBNywweEY2LDB4QkYsMHg5QiwweDE4LDB4RkYsMHhCNyww
eEY2LDB4QTgsMHhFMiwweDY4LDB4N0EsCi0gICAgMHhENywweEY2LDB4NTUsMHhFNiwweEU4LDB4
RkEsMHg3RSwweEZGLDB4NzUsMHhFRSwweDM1LDB4RTYsMHgyMCwweEE4LDB4QUYsMHgzOCwKLSAg
ICAweEI3LDB4RjYsMHg3NiwweEVFLDB4M0UsMHhBQSwweEVFLDB4N0YsMHg3NSwweEVFLDB4OTIs
MHhENSwweDJGLDB4MjUsMHhBNSwweEI1LAotICAgIDB4RjQsMHhERCwweDUxLDB4Q0QsMHg0OCww
eEM4LDB4MDAsMHgwMCwweEQzLDB4REQsMHg2RSwweEI0LDB4RkEsMHhEQSwweERBLDB4RDgsCi0g
ICAgMHg3MiwweEQ1LDB4RjAsMHhDNCwweDJGLDB4MkQsMHhBRiwweEI3LDB4RDMsMHhERCwweDMw
LDB4QzUsMHgyMiwweEUyLDB4NjIsMHg1RiwKLSAgICAweEU4LDB4ODIsMHg2NSwweDcyLDB4MkEs
MHhBOCwweDJCLDB4NTUsMHhFOCwweDgyLDB4QTcsMHg3QSwweEEyLDB4QkEsMHhFQSwweEFELAot
ICAgIDB4RTgsMHg4MiwweEM4LDB4ODIsMHgyMywweEFBLDB4RkYsMHg1NywweDRELDB4QUMsMHhF
OCwweDgyLDB4MzUsMHg1NSwweDU1LDB4NTUsCi0gICAgMHg3NSwweEVFLDB4RTgsMHg4MiwweDAy
LDB4QjUsMHg1NSwweDU1LDB4QjYsMHhGNiwweDA5LDB4OEIsMHgwMCwweDAyLDB4QjUsMHg1NSwK
LSAgICAweDc1LDB4RUUsMHg2MywweDUxLDB4NzAsMHg2MCwweEMwLDB4RUYsMHhBNSwweDUxLDB4
MjMsMHg0MSwweDYwLDB4RTIsMHhBRCwweEE1LAotICAgIDB4MDksMHg5MywweDY0LDB4NTEsMHhC
NSwweDJELDB4MEIsMHgwQiwweDg3LDB4ODIsMHgyNCwweDQ5LDB4NUMsMHhGOCwweEI4LDB4ODgs
Ci0gICAgMHg0NywweDdBLDB4QzIsMHgzMCwweDU1LDB4NUYsMHhFOCwweDYwLDB4MDYsMHg3Miww
eEEyLDB4MzAsMHgzRCwweDJGLDB4RUUsMHhCRiwKLSAgICAweDg4LDB4N0EsMHhDNSwweDYxLDB4
QkMsMHhENSwweDk5LDB4QUIsMHhBOCwweDdBLDB4MjIsMHg0MSwweEY4LDB4REUsMHg5NiwweEI3
LAotICAgIDB4MDksMHg4QiwweEM1LDB4NjEsMHhBRiwweEFGLDB4MkYsMHgyNywweEI2LDB4RjYs
MHhBOCwweDgyLDB4MjUsMHgzNSwweEQ1LDB4NTUsCi0gICAgMHgxOCwweEZGLDB4RjAsMHhDQyww
eDgwLDB4ODAsMHhBMCwweDg5LDB4RjgsMHhGRSwweDU1LDB4RUUsMHgyNSwweDI1LDB4MjUsMHgw
RCwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4ODIsMHhFMiwweEUyLDB4QzIsMHgxOCwweEZG
LDB4RjgsMHhGNiwweDdFLDB4NUYsMHhGNywweDU3LAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYs
MHhGRiwweEJCLDB4RUYsMHhBQiwweDE4LDB4RkYsMHhENywweEY2LDB4QUYsMHhCRiwweEFBLDB4
QUUsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEJBLDB4RkEsMHhGQSwweEZFLDB4RjgsMHhG
NiwweDc2LDB4RUUsMHhFOCwweDc4LDB4N0EsMHg1RSwKLSAgICAweDc2LDB4RUUsMHgzNSwweEU2
LDB4RTAsMHhFMCwweEU4LDB4NjgsMHg5NiwweEVFLDB4MzUsMHhFNiwweDNGLDB4MkUsMHhBQiww
eDJELAotICAgIDB4OTYsMHhFRSwweDU1LDB4RUUsMHg4OCwweEMyLDB4RUUsMHg0QSwweDE0LDB4
RTYsMHg3MSwweENELDB4MjcsMHhCNSwweEJFLDB4QTgsCi0gICAgMHhEMywweERELDB4Q0YsMHhC
QywweDAwLDB4ODAsMHg3MCwweDU4LDB4OTIsMHhENSwweDZFLDB4QjQsMHg1OCwweDdCLDB4RUYs
MHhBNywKLSAgICAweDUxLDB4Q0QsMHg0RSwweEFDLDB4MkUsMHgwRSwweDI2LDB4MjYsMHg3Miww
eENELDB4MTAsMHhDNSwweDE2LDB4QjUsMHgwRCwweEEzLAotICAgIDB4QTcsMHg3QSwweDY2LDB4
NzIsMHhERCwweEZBLDB4QUEsMHhBQiwweEE3LDB4N0EsMHg0NiwweDcyLDB4QkYsMHhEQSwweEEy
LDB4MDgsCi0gICAgMHhFOCwweDgyLDB4NDYsMHg3MiwweDBBLDB4QkQsMHhGNywweEZCLDB4RTgs
MHg4QSwweDY2LDB4NzIsMHgyMiwweEFBLDB4M0QsMHg1NSwKLSAgICAweEU4LDB4ODIsMHg4Nyww
eDdBLDB4MDgsMHhBMCwweDgyLDB4QTUsMHgwOCwweDhCLDB4QzgsMHg4MiwweEFFLDB4RkYsMHhG
RiwweEY1LAotICAgIDB4MDgsMHg4QiwweEM0LDB4NTksMHhDMCwweEUyLDB4NjgsMHhFMiwweEE0
LDB4NTksMHhDMiwweDMwLDB4MkEsMHgwQSwweEJGLDB4REYsCi0gICAgMHhFOCwweDkyLDB4QTQs
MHg1OSwweDA5LDB4OEIsMHgwQiwweEFELDB4QTgsMHg4QSwweEE1LDB4NjEsMHhFOCwweEZFLDB4
N0EsMHg3RSwKLSAgICAweDQ2LDB4NzIsMHgyMywweDQ5LDB4RTgsMHg3QSwweDVGLDB4NUYsMHhB
NSwweDUxLDB4MjMsMHg0MSwweEI1LDB4QjcsMHgzRiwweEVGLAotICAgIDB4ODgsMHg3MiwweDY0
LDB4NDksMHg4QiwweEFCLDB4RkYsMHg1NSwweDQ3LDB4NzIsMHgwMywweDQ5LDB4QjcsMHhCRiww
eDJGLDB4MDMsCi0gICAgMHhFOSwweDkyLDB4MDYsMHg2QSwweEFELDB4OEIsMHhFQiwweEZFLDB4
RTksMHg4QSwweDIzLDB4NDksMHg4MiwweEEyLDB4N0EsMHg1RSwKLSAgICAweDE0LDB4RTYsMHhF
NSwweDYxLDB4MEIsMHgyRCwweEI1LDB4RDUsMHhENywweEZFLDB4MEQsMHhBQywweDA4LDB4MDIs
MHgwMiwweEI1LAotICAgIDB4MTgsMHhGRiwweEI3LDB4RjYsMHg4MCwweDgwLDB4ODIsMHg4OSww
eEQ3LDB4RkUsMHhGOCwweEY2LDB4RjUsMHg3RCwweEQ3LDB4RjUsCi0gICAgMHgxOCwweEZGLDB4
RjcsMHhGNiwweERELDB4QjUsMHhGRiwweEVELDB4MTgsMHhGRiwweEQ3LDB4RjYsMHg4RSwweEFB
LDB4QUEsMHg2QSwKLSAgICAweEY4LDB4RkUsMHg5NiwweEVFLDB4RjAsMHg3QSwweDdBLDB4NUUs
MHhCNiwweEY2LDB4NTUsMHhFNiwweEZDLDB4RUYsMHg3NSwweEY3LAotICAgIDB4NzYsMHhFRSww
eDM1LDB4RUUsMHhFQSwweDg4LDB4MkEsMHhBOCwweDc2LDB4RUUsMHgxNCwweEU2LDB4MEIsMHgw
RSwweDdBLDB4RjgsCi0gICAgMHg5NiwweEY2LDB4RjQsMHhFNSwweDgyLDB4OEEsMHhDMywweDZB
LDB4MTQsMHhFNiwweEQzLDB4REQsMHhFQSwweEJFLDB4MDMsMHg2MSwKLSAgICAweEQzLDB4REQs
MHg4RSwweEI0LDB4NTgsMHg1QywweEZDLDB4N0UsMHg1MSwweENELDB4Q0MsMHg5QiwweDJGLDB4
QUYsMHhGRSwweDdBLAotICAgIDB4MTAsMHhDNSwweEFCLDB4OUIsMHgwOCwweDA4LDB4MEYsMHgw
RCwweDcyLDB4Q0QsMHgxMSwweEM1LDB4MDIsMHgwMCwweDAzLDB4QUYsCi0gICAgMHg2NywweDcy
LDB4MjUsMHg2QSwweDI1LDB4NTUsMHhERCwweEJFLDB4QTgsMHg3QSwweDI1LDB4NkEsMHg4Miww
eEJELDB4NTUsMHg1NSwKLSAgICAweEE3LDB4N0EsMHgyNiwweDcyLDB4QTIsMHg4MCwweDJELDB4
NTUsMHhBNywweDdBLDB4NDYsMHg3QSwweEE4LDB4MEEsMHhBMCwweDJELAotICAgIDB4QTcsMHg3
QSwweDY2LDB4N0EsMHhENywweEU4LDB4RTIsMHg4QSwweEM4LDB4ODIsMHg2NiwweDcyLDB4MEEs
MHhENywweEZCLDB4QUEsCi0gICAgMHhFOCwweDgyLDB4ODYsMHg3QSwweDYwLDB4MjIsMHhENSww
eDc3LDB4ODYsMHg3QSwweEEyLDB4MzgsMHg1NywweDVDLDB4RjgsMHhFMCwKLSAgICAweEU2LDB4
NjksMHhDMiwweDQwLDB4MkQsMHgyRCwweEZGLDB4RkYsMHg2NywweDdBLDB4MDMsMHg0OSwweDIw
LDB4MDAsMHg4QiwweEY1LAotICAgIDB4QTgsMHg4MiwweEMyLDB4MzgsMHhGQSwweEY4LDB4N0Es
MHg1RiwweDQ0LDB4NDksMHhFMiwweDM4LDB4QkMsMHhGNywweEZELDB4QUIsCi0gICAgMHhBNCww
eDU5LDB4QTIsMHgzMCwweERGLDB4QjcsMHgzNywweDJGLDB4NjcsMHg3QSwweDg0LDB4NTksMHgw
OSwweDJELDB4RkQsMHhGRiwKLSAgICAweDA2LDB4NkEsMHg0NCwweDUxLDB4QTgsMHhCOCwweEJF
LDB4RDcsMHhBNSwweDU5LDB4MDMsMHg0MSwweDlDLDB4OUMsMHgzRSwweEE3LAotICAgIDB4RTks
MHg4QSwweEE1LDB4NTksMHgzRiwweEFGLDB4RUIsMHhFRCwweDRBLDB4OTMsMHg2NywweDdBLDB4
MzcsMHhCNSwweEVELDB4NTUsCi0gICAgMHg5NiwweEY2LDB4NjcsMHg3QSwweDAyLDB4QjcsMHg1
NSwweDU1LDB4OTcsMHhGNiwweDY3LDB4N0EsMHgwMCwweDAwLDB4QjcsMHg1NSwKLSAgICAweEQ3
LDB4RkUsMHg2NywweDcyLDB4MDAsMHgwMCwweDBBLDB4NzUsMHhENywweEZFLDB4QjAsMHhCQyww
eDAwLDB4MDAsMHgwMCwweDI5LAotICAgIDB4RDcsMHhGNiwweDU1LDB4RUUsMHhFOCwweDdFLDB4
RkYsMHg1RiwweDk2LDB4RjYsMHgzNSwweEU2LDB4RUEsMHhBQSwweEFCLDB4RTUsCi0gICAgMHg5
NiwweEY2LDB4NTUsMHhFRSwweDdGLDB4RUUsMHgyQSwweDdELDB4NzYsMHhFRSwweDU1LDB4RUUs
MHg1QSwweDNBLDB4RDcsMHgwOSwKLSAgICAweDc1LDB4RUUsMHhCMywweEQ1LDB4RTgsMHg2Miww
eDY4LDB4NjgsMHg3NSwweEVFLDB4QjMsMHhENSwweEFELDB4QUYsMHhBRCwweEJELAotICAgIDB4
NzUsMHhFRSwweDEwLDB4QzUsMHg1NiwweDc4LDB4ODIsMHgwMCwweDM1LDB4RTYsMHg4QiwweDkz
LDB4NkEsMHhFQSwweEFBLDB4QTgsCi0gICAgMHgzMCwweEM1LDB4NjgsMHg3MiwweDBCLDB4QUQs
MHhENywweDVDLDB4RjAsMHhDNCwweEM5LDB4N0EsMHgwMCwweDAwLDB4MDIsMHgzNSwKLSAgICAw
eDY2LDB4NzIsMHg0NiwweDcyLDB4RDcsMHg1QiwweERELDB4QUUsMHg2NywweDdBLDB4NDYsMHg2
QSwweDU1LDB4RkYsMHhBQSwweEFCLAotICAgIDB4NjYsMHg3MiwweDI2LDB4NkEsMHhGRSwweEVC
LDB4QUEsMHg4QSwweDY2LDB4NzIsMHgyNiwweDcyLDB4M0QsMHhGRiwweEZCLDB4QUEsCi0gICAg
MHhBNywweDdBLDB4MjUsMHg2QSwweDBBLDB4QkQsMHg1RiwweEZGLDB4QTcsMHg4MiwweDQ2LDB4
NzIsMHgwOCwweDBBLDB4QjUsMHg1NSwKLSAgICAweEM3LDB4ODIsMHg0NiwweDcyLDB4MkEsMHg4
OCwweDBBLDB4QUQsMHhFOCwweDhBLDB4RTUsMHg2OSwweDZBLDB4RUEsMHg4MCwweDAyLAotICAg
IDB4RTgsMHg4QSwweDg0LDB4NTksMHg1NSwweEZBLDB4NjgsMHg3OCwweDg1LDB4NTEsMHhBMiww
eDMwLDB4MjAsMHhFOCwweDdBLDB4NTcsCi0gICAgMHg0NCwweDQ5LDB4QTIsMHgyOCwweERDLDB4
QkYsMHhGRiwweEZELDB4NjQsMHg0OSwweEMyLDB4MzAsMHhGQSwweEI3LDB4QjcsMHgxNSwKLSAg
ICAweDg1LDB4NTksMHgyMywweDQxLDB4M0QsMHhBRiwweDJFLDB4MjUsMHgyNywweDcyLDB4NDQs
MHg0OSwweEMwLDB4QzMsMHg2QiwweDdCLAotICAgIDB4QTUsMHg1OSwweEUyLDB4MzgsMHhBRSww
eEE1LDB4MzcsMHgyNywweEE1LDB4NTksMHgwMywweDQxLDB4QUYsMHhFRiwweDc4LDB4NUMsCi0g
ICAgMHhDOCwweDgyLDB4RTMsMHg0MCwweDBCLDB4MDksMHhBRCwweEZELDB4NjcsMHg3QSwweDQ0
LDB4NTEsMHgyOCwweEE4LDB4RkYsMHhENSwKLSAgICAweEU5LDB4OEEsMHhFNSwweDYxLDB4OEEs
MHgwQiwweEFELDB4RkQsMHhDOSwweDhBLDB4MjcsMHg3MiwweDVGLDB4NzgsMHg2OCwweDhBLAot
ICAgIDB4NjcsMHg3MiwweEE1LDB4NTksMHgwMiwweDgwLDB4QUEsMHg1OCwweDU1LDB4RUUsMHgw
NiwweDYyLDB4MkQsMHhGNSwweDU1LDB4NTUsCi0gICAgMHgzNCwweEVFLDB4NDcsMHg3MiwweDAw
LDB4MEEsMHgyRCwweEI1LDB4MzUsMHhFNiwweDkzLDB4REQsMHgyMCwweDJBLDB4RTgsMHhBOSwK
LSAgICAweDE0LDB4RTYsMHhEMywweERELDB4M0EsMHgyMCwweEZGLDB4NTYsMHg5NiwweEY2LDB4
RjQsMHhFNSwweDhBLDB4QUIsMHhGQiwweDVELAotICAgIDB4NTUsMHhFRSwweEQzLDB4REQsMHg2
MCwweEFBLDB4RjIsMHhGMiwweDU1LDB4RTYsMHhCMywweEQ1LDB4QUQsMHhFQSwweEFBLDB4QkIs
Ci0gICAgMHg5NiwweEVFLDB4MTQsMHhFNiwweDgyLDB4MEIsMHgwMywweDAxLDB4NzYsMHhFRSww
eDkyLDB4RDUsMHg3OCwweEUwLDB4MDAsMHgwMCwKLSAgICAweDM1LDB4RTYsMHgwRCwweEE0LDB4
N0EsMHhBMiwweDA4LDB4MjAsMHhCMiwweEQ1LDB4QzksMHg3QSwweEI1LDB4QTgsMHhDMCwweDAw
LAotICAgIDB4NjYsMHg3MiwweDI3LDB4NzIsMHg4MiwweEEwLDB4MDIsMHhBOSwweDQ3LDB4N0Es
MHg2NiwweDcyLDB4RjUsMHg1RiwweERGLDB4N0YsCi0gICAgMHg4NiwweDdBLDB4NDYsMHg3Miww
eEY3LDB4RUYsMHhCQiwweEJBLDB4ODYsMHg3QSwweDQ2LDB4NzIsMHhERiwweEVFLDB4QkEsMHhB
MiwKLSAgICAweDg2LDB4N0EsMHg0NiwweDcyLDB4RkYsMHhGRiwweEVBLDB4QTgsMHg2NiwweDdB
LDB4NDYsMHg3MiwweEJGLDB4MEEsMHgwOCwweDAwLAotICAgIDB4ODcsMHg3QSwweDQ1LDB4N0Es
MHhENywweEZCLDB4QUEsMHg4MiwweEFCLDB4QTMsMHg2NiwweDdBLDB4REQsMHhENSwweDk1LDB4
MzUsCi0gICAgMHgwOSwweDkzLDB4QzIsMHgzOCwweDc4LDB4NzgsMHg3OCwweDc4LDB4QzIsMHgz
MCwweDgxLDB4MjgsMHg3QywweEE4LDB4MDgsMHgwOCwKLSAgICAweEMyLDB4MzAsMHhBMiwweDI4
LDB4QUYsMHhFRSwweDY4LDB4MTgsMHg0NCwweDQxLDB4QTIsMHgyOCwweDJELDB4ODksMHg4Qiww
eEUyLAotICAgIDB4NjQsMHg1MSwweEUyLDB4MzgsMHgyRCwweDJELDB4ODEsMHg0MywweDg1LDB4
NTEsMHhFMywweDM4LDB4NjIsMHhFOCwweDVBLDB4NTUsCi0gICAgMHg0NCwweDQxLDB4RTMsMHgz
OCwweDBGLDB4N0YsMHg2MywweEI1LDB4NjUsMHg0OSwweDAzLDB4NDEsMHhGNiwweDZGLDB4NjEs
MHgyNywKLSAgICAweDg1LDB4NTEsMHhFMywweDM4LDB4MkYsMHgwNSwweDM1LDB4QUYsMHhBNSww
eDU5LDB4MDMsMHg0MSwweEZFLDB4RDYsMHgzNiwweDJFLAotICAgIDB4MjYsMHg2QSwweDg0LDB4
NTksMHhBRCwweEEyLDB4NjMsMHhERSwweDg3LDB4ODIsMHg2NCwweDU5LDB4MDAsMHgzQiwweEZE
LDB4RkQsCi0gICAgMHg0NywweDcyLDB4NjQsMHg1MSwweEY4LDB4QTgsMHg1RiwweDVELDB4QzUs
MHg1OSwweDQ0LDB4NDksMHgwQSwweDg4LDB4OUYsMHhCNSwKLSAgICAweEM4LDB4N0EsMHg2NCww
eDQ5LDB4MEYsMHhCRCwweEZGLDB4N0YsMHhEMywweEU1LDB4MjYsMHg3MiwweDBCLDB4MkQsMHhC
NSwweEY1LAotICAgIDB4RDQsMHhERCwweDEwLDB4QzUsMHgwMCwweDgwLDB4QTAsMHhBOSwweDE0
LDB4RTYsMHg5MywweEQ1LDB4QTIsMHgyRiwweDA5LDB4QUIsCi0gICAgMHgzNSwweEVFLDB4NTEs
MHhDRCwweEEwLDB4MDgsMHgyRSwweDE2LDB4NTUsMHhFRSwweEY0LDB4REQsMHg3RCwweEJFLDB4
ODIsMHhFOCwKLSAgICAweEI2LDB4RjYsMHgxNCwweEU2LDB4MjksMHgyOSwweDg5LDB4OEIsMHg5
NiwweEY2LDB4RjQsMHhERCwweDcwLDB4NjAsMHhDOCwweEFBLAotICAgIDB4MzUsMHhFNiwweDky
LDB4RDUsMHg1RiwweDVELDB4NUYsMHg1QywweEIzLDB4RDUsMHg1MSwweENELDB4QTAsMHg3RSww
eDVFLDB4N0UsCi0gICAgMHgyNSwweDcyLDB4NjQsMHg1OSwweDNELDB4RDUsMHg1NSwweDU1LDB4
NjYsMHg3MiwweDYzLDB4NTksMHgwMCwweDI5LDB4RDUsMHg1NSwKLSAgICAweDY2LDB4NzIsMHg2
MywweDUxLDB4MDAsMHgwMCwweDBCLDB4RDUsMHg4NywweDdBLDB4RTUsMHg2OSwweDAwLDB4MDgs
MHg4MCwweDBELAotICAgIDB4ODcsMHg3QSwweDY2LDB4N0EsMHhFQSwweEEyLDB4RUUsMHhCQiww
eDY2LDB4ODIsMHg4NywweDdBLDB4QkIsMHhGQiwweDdGLDB4N0YsCi0gICAgMHg2NiwweDhBLDB4
ODcsMHg3QSwweDc1LDB4NUYsMHhERCwweERELDB4RUMsMHhBQiwweDg3LDB4ODIsMHgyNSwweDA1
LDB4MDksMHgwMiwKLSAgICAweDY5LDB4OUIsMHg0MywweDQ5LDB4N0MsMHg3RSwweDVDLDB4NUMs
MHgwMiwweDM5LDB4QTIsMHgyOCwweDdDLDB4NUMsMHhERSwweEY4LAotICAgIDB4MjMsMHg0MSww
eEEyLDB4MjgsMHhENSwweEQ1LDB4REQsMHgyRiwweDI0LDB4NDEsMHhDMiwweDMwLDB4RkEsMHgy
NSwweDJELDB4MDIsCi0gICAgMHgyMywweDQxLDB4RTMsMHgzOCwweENCLDB4RjksMHg4MiwweEUw
LDB4NDQsMHg0OSwweEMyLDB4MzAsMHg2RCwweEZCLDB4RjAsMHhFMCwKLSAgICAweDY0LDB4NDks
MHhBMiwweDMwLDB4QjUsMHhCRCwweDJELDB4QkEsMHg0NCwweDQ5LDB4RTMsMHgzOCwweDJBLDB4
RjAsMHhGRiwweDlFLAotICAgIDB4NjUsMHg1MSwweDAzLDB4MzksMHg4MywweEVCLDB4RjUsMHhC
NywweEE1LDB4NTksMHgwMywweDQxLDB4MkIsMHg5RiwweDU3LDB4REYsCi0gICAgMHhBNSwweDU5
LDB4MDMsMHg0MSwweDIwLDB4QkUsMHhENywweEQ3LDB4MDYsMHg2QSwweDIzLDB4NDksMHgwQSww
eEFBLDB4RkIsMHg1RiwKLSAgICAweEM2LDB4NTksMHgyMywweDQxLDB4QjYsMHhGOCwweERCLDB4
NTUsMHhBNSwweDUxLDB4NDQsMHg0OSwweDhGLDB4MjUsMHhGNSwweDU1LAotICAgIDB4QzUsMHg1
OSwweDIzLDB4NDEsMHgyQSwweEJFLDB4RDcsMHhGNSwweDA5LDB4OEIsMHhDNSwweDU5LDB4MEYs
MHhBRCwweEZELDB4RkQsCi0gICAgMHhCMywweERELDB4QzgsMHg4MiwweDBCLDB4MEQsMHgzNSww
eDE1LDB4MzUsMHhFNiwweEIzLDB4RDUsMHg4QiwweDAwLDB4ODIsMHg2MCwKLSAgICAweEYzLDB4
REQsMHhGMCwweEM0LDB4MzQsMHhCRSwweEI3LDB4RkYsMHg5NiwweEVFLDB4MTUsMHhFNiwweDVF
LDB4QkUsMHgyQiwweDA5LAotICAgIDB4OTYsMHhFRSwweDU1LDB4RUUsMHg2MywweDdBLDB4RkMs
MHhGOCwweDc1LDB4RUUsMHg1NSwweEU2LDB4QUYsMHhGRSwweDlGLDB4RjcsCi0gICAgMHg1NSww
eEVFLDB4OTIsMHhENSwweDc4LDB4ODAsMHgwMCwweDAwLDB4NzYsMHhFRSwweDUxLDB4Q0QsMHg1
RiwweDdGLDB4RUEsMHgwMCwKLSAgICAweDg0LDB4NTksMHg0MywweDU5LDB4RTcsMHhDNSwweEFE
LDB4QUIsMHg4NCwweDYxLDB4NDMsMHg1MSwweDZFLDB4NzIsMHhENiwweDVGLAotICAgIDB4NjMs
MHg1OSwweDIzLDB4NTEsMHg1RiwweEY3LDB4RkUsMHgzRiwweEU1LDB4NjksMHg0MywweDU5LDB4
MjUsMHhGRCwweEZGLDB4QkYsCi0gICAgMHg4NywweDdBLDB4NDMsMHg1OSwweDAyLDB4QkQsMHg1
NywweDVELDB4ODcsMHg3QSwweDQzLDB4NTksMHgwMCwweDAwLDB4MkQsMHg1NSwKLSAgICAweENC
LDB4QTMsMHhFNSwweDY5LDB4RkYsMHgzRiwweDJGLDB4MEQsMHhDQiwweEFCLDB4NkEsMHg5Qiww
eDIyLDB4QTgsMHhCRSwweEY3LAotICAgIDB4OEEsMHg5QiwweDQzLDB4NDksMHg1QywweDc4LDB4
NTgsMHhGOCwweDIzLDB4NDEsMHhDMiwweDMwLDB4NUMsMHg1NiwweEI3LDB4RkUsCi0gICAgMHg2
NCwweDQ5LDB4QzIsMHgzMCwweEFELDB4MkQsMHgzRiwweEFBLDB4NjQsMHg0OSwweDAzLDB4NDEs
MHhGRSwweEVBLDB4N0MsMHhGNiwKLSAgICAweDg1LDB4NTEsMHgwMywweDM5LDB4RDUsMHgyNyww
eDA1LDB4QUYsMHhBNSwweDU5LDB4MjQsMHg0MSwweEZELDB4QUQsMHhBQiwweEIyLAotICAgIDB4
MDYsMHg2MiwweEUzLDB4MzgsMHhERiwweDdCLDB4N0EsMHhGMCwweDI0LDB4NDEsMHhDMiwweDMw
LDB4MjgsMHhBRSwweEVELDB4MjksCi0gICAgMHhBNSwweDUxLDB4MDMsMHg0MSwweDM1LDB4MTUs
MHhGNSwweEQ1LDB4NjQsMHg1MSwweDAzLDB4NDEsMHg5NCwweERFLDB4RkUsMHhBQSwKLSAgICAw
eDg1LDB4NDksMHgyMywweDQ5LDB4RDcsMHhGQiwweEUyLDB4RUUsMHg2NCwweDUxLDB4RTMsMHgz
OCwweEE4LDB4QjgsMHhGRSwweERFLAotICAgIDB4NjQsMHg0OSwweEUzLDB4MzgsMHhERiwweERG
LDB4OUYsMHhBMiwweDY0LDB4NDksMHhFMywweDM4LDB4RTgsMHg3QiwweEY4LDB4MkIsCi0gICAg
MHg4NSwweDUxLDB4MjMsMHg0MSwweDI1LDB4MjUsMHhGNywweEY3LDB4QTgsMHg3QSwweDQ0LDB4
NDksMHg4QiwweDJGLDB4QUYsMHhCRCwKLSAgICAweDhBLDB4OUIsMHgyNiwweDcyLDB4MkYsMHhC
RiwweEY1LDB4RDUsMHhEMywweERELDB4MjksMHg4QiwweDAwLDB4ODMsMHg4MSwweDhELAotICAg
IDB4NTEsMHhENSwweEQwLDB4QzQsMHgyQiwweEFGLDB4MkQsMHhBRCwweDk2LDB4RUUsMHhBRiww
eEJDLDB4MDIsMHgwMywweEZCLDB4N0YsCi0gICAgMHg3NiwweEVFLDB4OEUsMHhCNCwweDAwLDB4
MDAsMHhGQiwweDU1LDB4NzUsMHhFRSwweDRFLDB4QUMsMHgwMCwweDgwLDB4N0YsMHg1NSwKLSAg
ICAweDc2LDB4RUUsMHg4RiwweEI0LDB4MDAsMHhGRSwweEQ1LDB4QkQsMHgxNSwweERFLDB4QjAs
MHhCNCwweDgwLDB4RUQsMHhGRSwweDdFLAotICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHhDMCww
eDdBLDB4RkUsMHhERiwweDYzLDB4NTksMHgyMywweDUxLDB4QUIsMHhGRiwweEI5LDB4QUEsCi0g
ICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweEY1LDB4RkQsMHhCRSwweEZCLDB4ODQsMHg2MSwweDQz
LDB4NTksMHhDMiwweDZBLDB4NUUsMHg1NSwKLSAgICAweDYzLDB4NTksMHgwMywweDQ5LDB4QTIs
MHhFQywweDczLDB4REUsMHgyNSwweDcyLDB4MjMsMHg1MSwweDU1LDB4NTUsMHg1NSwweDk1LAot
ICAgIDB4OEIsMHg5QiwweDAyLDB4NTEsMHgwOSwweDAzLDB4MDIsMHgwMCwweDhCLDB4OUIsMHgy
OSwweDkzLDB4MDAsMHgwQSwweEI2LDB4QjcsCi0gICAgMHg0OSwweDkzLDB4QTQsMHg1OSwweDc4
LDB4NjAsMHhFOCwweEU4LDB4RTUsMHg2OSwweEUzLDB4NDAsMHg1RiwweDVGLDB4RjcsMHhEQywK
LSAgICAweDg1LDB4NTEsMHhFMywweDM4LDB4RkEsMHhGMiwweDdCLDB4NUUsMHg0NCwweDQ5LDB4
RTMsMHgzOCwweDhDLDB4RUEsMHg2MiwweEUzLAotICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHhF
MCwweEVBLDB4QUIsMHhBRCwweEM2LDB4NjEsMHgyMywweDQ5LDB4RjEsMHg3MSwweEUzLDB4QkQs
Ci0gICAgMHg4NSwweDU5LDB4RTMsMHgzOCwweDQyLDB4NEEsMHhFQSwweDYwLDB4MjQsMHg0MSww
eEEyLDB4MzAsMHgyQiwweEFELDB4RkQsMHhBRCwKLSAgICAweDg1LDB4NTksMHgyMywweDQxLDB4
RkYsMHhBRCwweEFGLDB4MkEsMHhBNSwweDU5LDB4RTMsMHgzOCwweEUyLDB4RTgsMHhGQSwweDdG
LAotICAgIDB4NDQsMHg0OSwweEUyLDB4MzgsMHgyQywweEJBLDB4REYsMHgyRCwweDQ0LDB4NDEs
MHhFMywweDM4LDB4RkEsMHhGRSwweEVCLDB4RjAsCi0gICAgMHg4NSwweDUxLDB4MDMsMHgzOSww
eDhCLDB4QUQsMHg3RCwweDc1LDB4NjQsMHg0OSwweEUzLDB4MzgsMHgyRiwweEJFLDB4QkQsMHhG
RCwKLSAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4RUEsMHgyRiwweEU1LDB4MzUsMHhFNiwweDYx
LDB4NDQsMHg0OSwweDJELDB4RjcsMHhBRiwweDNELAotICAgIDB4QTgsMHg3QSwweEU1LDB4NjEs
MHgyQSwweDNELDB4RjUsMHg5RiwweDExLDB4QzUsMHhBOCwweDdBLDB4MEQsMHgwRCwweDI1LDB4
MTUsCi0gICAgMHgzMSwweENELDB4OEUsMHhCNCwweDJCLDB4MkYsMHhGRiwweEQ3LDB4MTEsMHhD
NSwweDJFLDB4QUMsMHhDMCwweDcwLDB4N0MsMHgwQiwKLSAgICAweDkzLDB4Q0QsMHgyRCwweEFD
LDB4NTUsMHhBRCwweDBCLDB4ODIsMHhCNCwweENELDB4NkYsMHhBQywweDJELDB4QTAsMHhFMCww
eEUyLAotICAgIDB4OTQsMHhDRCwweDJFLDB4QTQsMHg4OCwweDhBLDB4RUIsMHhEQiwweEYxLDB4
QkMsMHg4RiwweEFDLDB4NjAsMHhGMiwweDlFLDB4QkYsCi0gICAgMHg2MywweDU5LDB4MDMsMHg0
OSwweEJGLDB4QUUsMHhBMiwweEEwLDB4ODQsMHg1OSwweDQzLDB4NTksMHhGRCwweDdELDB4MkQs
MHhDRiwKLSAgICAweDg0LDB4NjEsMHg0MywweDU5LDB4N0UsMHg1MiwweDdBLDB4NUYsMHg2NCww
eDU5LDB4MjMsMHg1MSwweDlCLDB4RUIsMHg3RSwweDVGLAotICAgIDB4NDQsMHg1MSwweEUyLDB4
NDAsMHhFOCwweEFBLDB4QkYsMHhGRSwweDZCLDB4OUIsMHgwMywweDQ5LDB4MzUsMHgyNSwweDBE
LDB4MDksCi0gICAgMHhFRCwweEFCLDB4NEEsMHg5MywweDVFLDB4N0UsMHg3MiwweEU4LDB4NkEs
MHg5QiwweDI5LDB4OTMsMHgzRCwweEY3LDB4QjcsMHg4MCwKLSAgICAweDA5LDB4OEIsMHg0Nyww
eDcyLDB4RkMsMHg3OCwweDVDLDB4NUMsMHg2NywweDcyLDB4MjQsMHg0OSwweDU4LDB4NjgsMHhB
MiwweEE4LAotICAgIDB4QzUsMHg2MSwweEMyLDB4MzgsMHg3NiwweDVGLDB4NUYsMHg3OCwweDY0
LDB4NDksMHhFMywweDM4LDB4Q0IsMHg0OSwweEZELDB4RkQsCi0gICAgMHgyMywweDQxLDB4RTMs
MHgzOCwweEFGLDB4OUUsMHhCQiwweDI1LDB4ODUsMHg1OSwweDAzLDB4NDEsMHgyRiwweDI5LDB4
OTUsMHhCRiwKLSAgICAweDg1LDB4NTksMHhDMywweDM4LDB4NDAsMHg3MCwweDcwLDB4NzgsMHgw
NCwweDQxLDB4QTIsMHgzMCwweDBCLDB4RjUsMHhCQiwweEExLAotICAgIDB4QTYsMHg1OSwweEUz
LDB4MzgsMHgwMiwweDAzLDB4MDksMHhBRiwweDg1LDB4NTEsMHhFMywweDM4LDB4N0UsMHg1RSww
eEZDLDB4NUUsCi0gICAgMHg2NCwweDQ5LDB4RTMsMHgzOCwweDJGLDB4MjUsMHhBNSwweEI1LDB4
NDQsMHg0MSwweEUyLDB4MzgsMHg3OCwweDZBLDB4ODIsMHhFQSwKLSAgICAweDI0LDB4NDEsMHhF
MiwweDM4LDB4QUUsMHgyRCwweEJGLDB4NTUsMHgyMywweDM5LDB4RTIsMHgzMCwweEZCLDB4QUUs
MHgzRiwweEJELAotICAgIDB4QTUsMHg1OSwweDIzLDB4NDEsMHhGRCwweERELDB4QjksMHhBMyww
eEU2LDB4NjEsMHg0NCwweDQ5LDB4OTUsMHhENSwweEI3LDB4MEIsCi0gICAgMHg0NywweDcyLDB4
ODQsMHg1OSwweDJCLDB4QTUsMHhGRiwweDNGLDB4NEUsMHhCNCwweDI2LDB4NzIsMHgzRiwweDNG
LDB4QkQsMHhGNSwKLSAgICAweDU1LDB4RUUsMHhEMCwweEJDLDB4NTcsMHgyQSwweDAyLDB4MDMs
MHgzNSwweEU2LDB4RDAsMHhCQywweEJELDB4QzgsMHhDMCwweEUwLAotICAgIDB4OTMsMHhDRCww
eDUyLDB4QzUsMHg0MywweDYyLDB4QzIsMHhCQywweDkzLDB4Q0QsMHhCMCwweEI0LDB4MEUsMHhC
RSwweEZBLDB4N0EsCi0gICAgMHg1MiwweEM1LDB4NEMsMHg4QiwweEI4LDB4QUMsMHhBRiwweEFE
LDB4RDAsMHhCNCwweDkwLDB4QUMsMHhCRSwweEY2LDB4RUEsMHg1NiwKLSAgICAweDYzLDB4NTks
MHg0MywweDUxLDB4QUQsMHgwRCwweDI5LDB4M0IsMHg4NCwweDYxLDB4NDMsMHg1MSwweEFBLDB4
RTIsMHhENiwweDU1LAotICAgIDB4NjMsMHg1OSwweDIzLDB4NTEsMHhBQSwweEVGLDB4NUEsMHg1
RiwweDQzLDB4NTEsMHgwNCwweDQ5LDB4QjgsMHhFQSwweEVBLDB4RkUsCi0gICAgMHg0NCwweDU5
LDB4RTIsMHg0OCwweDdGLDB4M0UsMHgwQiwweDAyLDB4QUIsMHhBMywweEE1LDB4NjEsMHgwOSww
eDAxLDB4MDMsMHgwMywKLSAgICAweENDLDB4QUIsMHg0OSwweDkzLDB4RjcsMHg3RSwweEY4LDB4
NjAsMHg2QSwweDlCLDB4QzgsMHg4MiwweDg4LDB4RkIsMHg3QSwweERGLAotICAgIDB4QzgsMHg4
MiwweDI2LDB4NzIsMHg1QywweDdDLDB4RkMsMHg3QywweDQ2LDB4NzIsMHgwNiwweDZBLDB4OUUs
MHhBNiwweDJFLDB4MjgsCi0gICAgMHhBOCwweDgyLDB4MDMsMHg0MSwweDVBLDB4NzgsMHg2MCww
eEMwLDB4MjQsMHg0MSwweEMyLDB4MzAsMHg4QiwweEFCLDB4RkQsMHg1NywKLSAgICAweDQ0LDB4
NDksMHhDMiwweDMwLDB4M0YsMHhCRiwweEJELDB4NkQsMHg2NSwweDUxLDB4RTMsMHgzOCwweDJF
LDB4QkUsMHg3RiwweEZELAotICAgIDB4QTYsMHg1OSwweEUzLDB4MzgsMHg1OCwweDdBLDB4N0Ys
MHhGRiwweDAzLDB4MzksMHhBMiwweDMwLDB4MEIsMHgyQiwweDk3LDB4QjYsCi0gICAgMHg2NSww
eDQ5LDB4MDMsMHg0MSwweENELDB4RTksMHhFOSwweDgxLDB4MjQsMHg0MSwweEUzLDB4MzgsMHhG
QSwweEI2LDB4RkMsMHg1NCwKLSAgICAweDQ0LDB4NDEsMHhFMywweDMwLDB4M0YsMHgzRiwweEY1
LDB4NTUsMHg0NCwweDQxLDB4QzIsMHgzMCwweDdBLDB4RDgsMHhGRiwweEY3LAotICAgIDB4MjMs
MHgzOSwweEUyLDB4MzAsMHhGRCwweEFFLDB4QUIsMHhGNywweDIzLDB4MzksMHhDMywweDM4LDB4
QUIsMHgzRSwweDlBLDB4QkEsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweDI5LDB4NzUsMHg1
NywweDVGLDB4NDcsMHg2QSwweDAzLDB4NDEsMHhBRiwweDJELDB4QkQsMHhGRCwKLSAgICAweDQ3
LDB4NzIsMHhBNSwweDU5LDB4MzMsMHhFRiwweEIwLDB4NjMsMHgwOSwweDgzLDB4MjYsMHg2QSww
eDI1LDB4QjUsMHhFRiwweEVELAotICAgIDB4MTUsMHhFNiwweDhCLDB4OTMsMHgwMywweDAxLDB4
MDksMHhBOSwweDE0LDB4RTYsMHgzMiwweEM1LDB4RjgsMHhEOCwweERBLDB4REUsCi0gICAgMHg5
MywweENELDB4RjEsMHhCQywweEEwLDB4RTgsMHhCQywweERBLDB4NTIsMHhDNSwweDZDLDB4OEIs
MHhBMCwweEU4LDB4RTgsMHg2QSwKLSAgICAweDkwLDB4QUMsMHhFRSwweDlCLDB4MDksMHg4OSww
eEVELDB4QjksMHg4RiwweEFDLDB4NEYsMHhBNCwweDNFLDB4ODksMHg1OSwweDFFLAotICAgIDB4
NjMsMHg1OSwweDIzLDB4NTEsMHhBQSwweEMwLDB4RkUsMHhERiwweDQzLDB4NTEsMHgwMywweDQ5
LDB4MDIsMHgyQiwweENBLDB4RkEsCi0gICAgMHg0MywweDUxLDB4MDIsMHg0OSwweEJFLDB4QUUs
MHhFRCwweEJCLDB4NDQsMHg1OSwweDAzLDB4NTEsMHg3RiwweEJCLDB4M0YsMHgwRiwKLSAgICAw
eEM2LDB4NjksMHgwMywweDUxLDB4RkQsMHhCRiwweEJGLDB4M0YsMHhFQywweEFCLDB4RTksMHg4
QSwweDI5LDB4MDksMHgyQiwweDhBLAotICAgIDB4MkQsMHhCNCwweDhCLDB4OUIsMHg3OCwweEZB
LDB4QUEsMHg1NSwweEFCLDB4QTMsMHg4NywweDdBLDB4RkUsMHhGQSwweEUwLDB4N0EsCi0gICAg
MHhBNywweDgyLDB4MjUsMHg2QSwweDdDLDB4REMsMHg3RSwweDVGLDB4QTgsMHg4MiwweDI1LDB4
NkEsMHhCRCwweDI3LDB4MEQsMHgwMywKLSAgICAweEE4LDB4ODIsMHhFNSwweDY5LDB4QzAsMHg4
MCwweEU4LDB4NTYsMHhFNSwweDYxLDB4QTIsMHgzMCwweDVGLDB4NTQsMHg1QywweDU4LAotICAg
IDB4RTMsMHgzOCwweEEyLDB4MzAsMHg4QiwweEY1LDB4RDcsMHhBQSwweDI0LDB4NDksMHhDMiww
eDMwLDB4MkYsMHhBRCwweEZELDB4QkIsCi0gICAgMHg2NSwweDQ5LDB4MDMsMHgzOSwweDdDLDB4
NUYsMHg1QiwweEZCLDB4MDMsMHg0MSwweEEyLDB4MjgsMHhCRSwweEI2LDB4NUUsMHhEOCwKLSAg
ICAweDY1LDB4NDksMHhDMiwweDMwLDB4MDMsMHhBQiwweEVELDB4RUQsMHgyMywweDQxLDB4QTIs
MHgyOCwweEY4LDB4QkUsMHg3NywweEY3LAotICAgIDB4MDMsMHgzOSwweEMzLDB4MzAsMHhFRiww
eEFCLDB4OUYsMHgzNSwweDAzLDB4MzksMHhDMiwweDMwLDB4QkYsMHg3RCwweEZGLDB4RkUsCi0g
ICAgMHgyMywweDQxLDB4RTMsMHgzOCwweDU1LDB4NTUsMHhGRCwweENCLDB4MjMsMHg0MSwweEMy
LDB4MzAsMHhGNSwweEJFLDB4QUUsMHgyMCwKLSAgICAweDQ0LDB4NDksMHgwMywweDM5LDB4RUYs
MHhFMywweDdBLDB4NzgsMHg0NCwweDQ5LDB4MDMsMHg0MSwweDI3LDB4RDUsMHhENywweDVBLAot
ICAgIDB4QzUsMHg2MSwweDIzLDB4NDEsMHgwRSwweEJCLDB4QUYsMHhBRCwweEE4LDB4N0EsMHhD
NSwweDYxLDB4MDksMHgwOSwweDBCLDB4QUIsCi0gICAgMHg1MiwweENELDB4QTgsMHg3QSwweDA5
LDB4MDksMHgwRCwweDJELDB4NzMsMHhDRCwweEQwLDB4QjQsMHg4QywweDBDLDB4MEMsMHhDNywK
LSAgICAweDMyLDB4QzUsMHgyRSwweEE0LDB4ODAsMHhFQSwweEY4LDB4NzgsMHhGMSwweEJDLDB4
QUQsMHg5MywweDVBLDB4QkEsMHhBOCwweEZGLAotICAgIDB4MzEsMHhCRCwweEVELDB4OUIsMHhB
RiwweDAyLDB4QkYsMHhENSwweDMyLDB4QzUsMHg4RiwweEFDLDB4NTUsMHg1RiwweEFBLDB4MjUs
Ci0gICAgMHg0MywweDUxLDB4MDIsMHg0OSwweEI4LDB4RTAsMHhGQSwweDZBLDB4NDMsMHg1MSww
eDAyLDB4NDksMHhEOCwweDk2LDB4QjUsMHgyRCwKLSAgICAweDQzLDB4NTEsMHgyMywweDUxLDB4
REQsMHhGQSwweDNDLDB4MjUsMHg0NCwweDU5LDB4MjMsMHg1MSwweEFBLDB4QTgsMHg4MCwweDRF
LAotICAgIDB4MjksMHg5MywweDIzLDB4NTEsMHg5NSwweDk1LDB4MTUsMHgzNSwweEFCLDB4QTMs
MHg4NywweDdBLDB4ODIsMHhFMCwweDdBLDB4NUUsCi0gICAgMHgwQSwweDkzLDB4NjcsMHg3Miww
eEEwLDB4N0UsMHg1NSwweDU1LDB4QzgsMHg4MiwweDQ2LDB4NzIsMHg3OCwweDdGLDB4N0YsMHg3
NywKLSAgICAweDg3LDB4N0EsMHgyNiwweDZBLDB4RkYsMHhBRiwweDNGLDB4MkIsMHhDOCwweDgy
LDB4QzUsMHg2MSwweEEyLDB4RjgsMHg3RSwweDVGLAotICAgIDB4MjYsMHg2QSwweEM0LDB4NjEs
MHhERSwweEVBLDB4MkYsMHgzRiwweDA2LDB4NkEsMHg4MiwweDMwLDB4NzgsMHhFMCwweEMwLDB4
ODAsCi0gICAgMHgwMywweDM5LDB4ODEsMHgyOCwweDBCLDB4M0QsMHg5RiwweEJGLDB4NDQsMHg0
OSwweEEyLDB4MzAsMHhBRiwweDM3LDB4QUYsMHgyRiwKLSAgICAweDY1LDB4NDksMHhDMywweDMw
LDB4QTgsMHhBQSwweEVCLDB4NzcsMHgyNCwweDQxLDB4ODIsMHgyMCwweEU4LDB4RTIsMHhGMiww
eDdBLAotICAgIDB4MjQsMHg0MSwweDgyLDB4MjAsMHhBMywweEJGLDB4RjUsMHhFRCwweEUzLDB4
MzAsMHhBMiwweDI4LDB4ODAsMHhGOCwweEVELDB4QjUsCi0gICAgMHgyNCwweDQxLDB4QTIsMHgz
MCwweDBELDB4QUYsMHhGRiwweEJGLDB4MDQsMHgzOSwweEMyLDB4MzAsMHhCNCwweEZGLDB4RkYs
MHhGRiwKLSAgICAweDg1LDB4NDksMHgwMywweDM5LDB4RkYsMHhFOSwweEUzLDB4N0QsMHg0NCww
eDQ5LDB4RTMsMHgzOCwweDgwLDB4RTAsMHg1QiwweEZELAotICAgIDB4MjMsMHg0MSwweEUyLDB4
MzgsMHg4MiwweDU3LDB4RDUsMHg1NSwweDQzLDB4NDEsMHhDMiwweDMwLDB4QUEsMHhBOSwweEFG
LDB4OEYsCi0gICAgMHg4NSwweDUxLDB4MDIsMHgzOSwweDJFLDB4M0YsMHgzRCwweDI5LDB4Njcs
MHg3MiwweEM1LDB4NTksMHhCRCwweENELDB4ODksMHhERCwKLSAgICAweDMxLDB4QzUsMHgwNiww
eDYyLDB4MEQsMHgwRCwweDA1LDB4MjUsMHg1MywweENELDB4OEMsMHg4QiwweDAyLDB4RUEsMHhG
RiwweDVFLAotICAgIDB4OTAsMHhBQywweEFELDB4OTMsMHg3OCwweDVGLDB4NTUsMHg1NSwweEVF
LDB4OUIsMHg0QiwweDgzLDB4MjIsMHgyQiwweEVCLDB4N0UsCi0gICAgMHgwRSwweDlDLDB4MkIs
MHg3QiwweDMwLDB4QjgsMHhENywweDU1LDB4RjEsMHhCQywweDRCLDB4ODMsMHgwQSwweDBBLDB4
MkIsMHhCNSwKLSAgICAweDIzLDB4NTEsMHgwMiwweDQxLDB4RjIsMHhFQywweDlFLDB4QUMsMHgy
MywweDQ5LDB4MDIsMHg0OSwweDgwLDB4Q0IsMHhFQSwweDBDLAotICAgIDB4NDMsMHg1MSwweDIz
LDB4NTEsMHhBMSwweEUzLDB4OEYsMHhBNywweDQ0LDB4NTEsMHgwMiwweDQ5LDB4QjgsMHg2OCww
eEZBLDB4NUUsCi0gICAgMHgwOSwweDhCLDB4MDMsMHg0OSwweDM1LDB4MzUsMHgyNSwweDI1LDB4
RTksMHg4QSwweDQ3LDB4NzIsMHhGOCwweEY4LDB4RkEsMHhGRSwKLSAgICAweDg3LDB4N0EsMHg2
NywweDcyLDB4RkYsMHhBQSwweDgwLDB4MDAsMHg4NywweDdBLDB4NDYsMHg3MiwweDdFLDB4N0Us
MHhEOCwweDVBLAotICAgIDB4ODcsMHg3QSwweDI2LDB4NkEsMHhBQiwweENCLDB4Q0EsMHg3QSww
eDI2LDB4NzIsMHhBNCwweDYxLDB4N0MsMHhERSwweEI2LDB4MkYsCi0gICAgMHg4NywweDdBLDB4
RTUsMHg2MSwweEQ1LDB4RDUsMHg4QiwweEFBLDB4ODcsMHg3QSwweDIzLDB4NDEsMHhFQSwweDYw
LDB4QzAsMHhFQSwKLSAgICAweDIzLDB4NDEsMHg4MSwweDI4LDB4QjcsMHhBNSwweDBELDB4MEIs
MHg0NCwweDQ5LDB4RTIsMHgzOCwweEVGLDB4NDMsMHg0RiwweDU3LAotICAgIDB4QzIsMHgzMCww
eDgyLDB4MjAsMHgyMCwweEZFLDB4N0EsMHg1RiwweEUzLDB4MzAsMHg2MSwweDIwLDB4NzgsMHhE
RSwweEY3LDB4RkQsCi0gICAgMHhDMywweDI4LDB4ODIsMHgyMCwweEM5LDB4QkQsMHhENSwweEI3
LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhBNywweEVCLDB4RkYsMHhCRiwKLSAgICAweEUzLDB4MzAs
MHhBMiwweDI4LDB4MEYsMHhFQiwweEE4LDB4OUUsMHgwMywweDM5LDB4QzMsMHgzMCwweERELDB4
QjUsMHhGNSwweDk1LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBMiwweDhBLDB4MEEsMHhB
NywweDAzLDB4NDEsMHhFMiwweDMwLDB4QTIsMHhDRSwweEJGLDB4MkYsCi0gICAgMHg2NSwweDQ5
LDB4RTIsMHgzOCwweEQ3LDB4RkQsMHhBRCwweDBGLDB4NDMsMHg0OSwweEUzLDB4MzAsMHhCNiww
eERGLDB4NUIsMHhFMCwKLSAgICAweDg0LDB4NDksMHhFMiwweDM4LDB4MkQsMHg5NywweEJELDB4
RkYsMHgwNiwweDYyLDB4NjMsMHg0OSwweDJELDB4M0YsMHhENSwweEI1LAotICAgIDB4NkYsMHhB
QywweEU2LDB4NTksMHgyNSwweDM1LDB4MzUsMHgzNSwweEQwLDB4QjQsMHhDQSwweDcyLDB4Rjgs
MHhGOCwweDVBLDB4NjAsCi0gICAgMHhBRCwweDhCLDB4MDcsMHg1QSwweDAwLDB4ODAsMHhGQSww
eDU3LDB4NEIsMHg3QiwweDY4LDB4NUEsMHgyMCwweEVCLDB4RkQsMHhGNSwKLSAgICAweEVELDB4
OTMsMHhFQSwweDcyLDB4RDUsMHhGNSwweEI1LDB4MEQsMHgwRSwweDlDLDB4NEIsMHg4MywweDNE
LDB4RkQsMHhDRiwweDA4LAotICAgIDB4MjMsMHg0OSwweDAzLDB4NDksMHgxQiwweEEzLDB4RTgs
MHg5NywweDQzLDB4NTEsMHgyMywweDUxLDB4NzUsMHhBNSwweDZCLDB4RjgsCi0gICAgMHg0Myww
eDUxLDB4MDMsMHg0OSwweEEyLDB4N0UsMHhERSwweDdGLDB4NjQsMHg1MSwweEUyLDB4NDgsMHhG
RiwweEZGLDB4RkYsMHgxRiwKLSAgICAweEU4LDB4ODIsMHgwMiwweDQ5LDB4MDUsMHgwOSwweDAz
LDB4MDAsMHhDNywweDgyLDB4ODcsMHg3QSwweDU3LDB4NUYsMHg3NywweEY4LAotICAgIDB4QTcs
MHg3QSwweDY2LDB4NzIsMHhFQiwweEJBLDB4N0EsMHgxQywweEFBLDB4OUIsMHg2NywweDcyLDB4
NTUsMHhENSwweDJELDB4QzIsCi0gICAgMHg0OSwweDkzLDB4RTUsMHg2MSwweEFGLDB4RTAsMHg1
QywweDU1LDB4NjcsMHg3QSwweDIzLDB4NDksMHhBOCwweEFBLDB4NUEsMHhENywKLSAgICAweDQ2
LDB4NzIsMHg0MywweDQxLDB4MDIsMHgyQSwweDU1LDB4NTUsMHg0NywweDcyLDB4MDMsMHg0MSww
eEMwLDB4RTgsMHhGNSwweEQ1LAotICAgIDB4MjMsMHg0MSwweDgxLDB4MjgsMHhBQSwweEE4LDB4
RTAsMHg3QSwweDIzLDB4MzksMHg4MSwweDIwLDB4NjgsMHg3RiwweDU3LDB4NUQsCi0gICAgMHhD
MywweDI4LDB4NjEsMHgxOCwweERGLDB4QkYsMHhCNSwweDI5LDB4MDMsMHgzOSwweDgyLDB4MjAs
MHhGRCwweEFGLDB4QTMsMHgwMiwKLSAgICAweEUyLDB4MzAsMHg4MiwweDIwLDB4RDcsMHhGQSww
eDJFLDB4QUMsMHhFMiwweDMwLDB4QTIsMHgyOCwweEQ1LDB4REYsMHg1QywweDdBLAotICAgIDB4
RTMsMHgzMCwweDgxLDB4MjgsMHgzRSwweDJCLDB4QkYsMHhFRCwweDA0LDB4MzksMHhBMiwweDI4
LDB4OEIsMHgyMiwweDNGLDB4RkQsCi0gICAgMHgyNCwweDM5LDB4QzMsMHgzMCwweDNELDB4RUEs
MHhBRSwweEQ1LDB4MDMsMHgzOSwweEUyLDB4MzAsMHhBMCwweDU0LDB4MzgsMHgzOCwKLSAgICAw
eDQ0LDB4NDEsMHhFMiwweDM4LDB4MEYsMHhCRCwweEI3LDB4MTcsMHg2NCwweDQ5LDB4MDMsMHg0
MSwweEUwLDB4QjAsMHhCMiwweDU4LAotICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHgzRiwweENB
LDB4MkEsMHhGNSwweEE1LDB4NTEsMHhFMiwweDM4LDB4MkEsMHhBRiwweDJBLDB4QkQsCi0gICAg
MHgwRSwweEE0LDB4QzUsMHg1OSwweDM1LDB4MTUsMHg5NSwweDk1LDB4NTIsMHhDNSwweDZGLDB4
QUMsMHg3MCwweEMyLDB4MjksMHhCNSwKLSAgICAweDUyLDB4QzUsMHhFQSwweDcyLDB4NUYsMHhB
QSwweEEwLDB4ODAsMHg2RiwweEE0LDB4ODksMHg2MiwweEQ1LDB4MDAsMHgwMCwweDAwLAotICAg
IDB4NkYsMHhBNCwweDZCLDB4ODMsMHgyRCwweDJBLDB4MjgsMHg4MCwweDZGLDB4QUMsMHhDRCww
eDkzLDB4QjYsMHgzRSwweDNBLDB4QUEsCi0gICAgMHg2NCwweDU5LDB4RTIsMHg0MCwweDNGLDB4
QTksMHgwQSwweDAyLDB4NDMsMHg1MSwweDAyLDB4NDksMHg4OCwweEE4LDB4NjgsMHhGOCwKLSAg
ICAweDIyLDB4NDksMHgwMywweDQ5LDB4RkUsMHg1QSwweEY4LDB4N0YsMHhDQiwweEEzLDB4MDMs
MHg0OSwweDk1LDB4MzUsMHgzNSwweDI1LAotICAgIDB4NkEsMHg5QiwweEM3LDB4ODIsMHg1Riww
eDc4LDB4NzgsMHhGOCwweDhBLDB4OUIsMHg4NiwweDdBLDB4NzcsMHg1NywweDlGLDB4MkYsCi0g
ICAgMHhDQiwweEEzLDB4NjYsMHg3QSwweDM1LDB4MEIsMHhFMiwweDU4LDB4OEEsMHg5QiwweEE0
LDB4NTksMHg3MCwweDdFLDB4NUYsMHg1RiwKLSAgICAweEU1LDB4NjEsMHg0MywweDQ5LDB4MEEs
MHg4MiwweDYyLDB4NUMsMHg4NCwweDUxLDB4MjQsMHg0MSwweDc4LDB4RkYsMHhGQiwweEJGLAot
ICAgIDB4MDYsMHg2MiwweDAzLDB4NDEsMHg1RCwweEZELDB4QTIsMHg3OCwweEE0LDB4NTEsMHhD
MiwweDM4LDB4RUYsMHhGQSwweDcwLDB4N0YsCi0gICAgMHhFMywweDM4LDB4NjEsMHgxOCwweEM4
LDB4RUEsMHhGRSwweDZFLDB4QzIsMHgzMCwweDYxLDB4MTgsMHhERiwweDVGLDB4RDcsMHgyNSwK
LSAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4M0QsMHhGQSwweEI4LDB4QTIsMHhFMywweDMwLDB4
QTIsMHgyOCwweEEwLDB4RTcsMHgwQiwweDgyLAotICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHhG
MiwweEMyLDB4MzksMHgzRiwweEUzLDB4MzAsMHhBMiwweDI4LDB4RDUsMHhGQSwweEYwLDB4Qjgs
Ci0gICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweEZELDB4RkEsMHg5NiwweEE0LDB4RTIsMHgzMCww
eEEyLDB4MjgsMHhBRiwweEI1LDB4RkYsMHhGRiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4
MzUsMHhGRiwweEU3LDB4QjUsMHgyMywweDM5LDB4QzIsMHgzMCwweEIwLDB4QjIsMHhGOSwweERE
LAotICAgIDB4NDQsMHg0MSwweEMyLDB4MzAsMHg5RiwweDNGLDB4QUYsMHhCRiwweDg1LDB4NTEs
MHhFMywweDMwLDB4NzgsMHg3OCwweDVGLDB4RDUsCi0gICAgMHgyNCwweDM5LDB4QzMsMHgyOCww
eEEyLDB4RUIsMHhFQiwweEJFLDB4QTUsMHg1MSwweDAzLDB4MzksMHhCRCwweDBELDB4QTUsMHhG
NSwKLSAgICAweDg4LDB4NkEsMHg2NCwweDQ5LDB4MzUsMHgzRiwweDM3LDB4M0QsMHhEMCwweEI0
LDB4QUQsMHg5MywweDJCLDB4QkYsMHhGNSwweDU1LAotICAgIDB4MzEsMHhCRCwweEVELDB4OUIs
MHg4MCwweEFCLDB4QUYsMHhENSwweEYwLDB4QjQsMHg0RiwweEE0LDB4REYsMHhGRSwweEY4LDB4
QUEsCi0gICAgMHhCMCwweEFDLDB4NEUsMHhBNCwweEZGLDB4RkYsMHg1RiwweEUyLDB4NkYsMHhB
QywweDBFLDB4OUMsMHhBOCwweEEwLDB4RkEsMHg3QSwKLSAgICAweDY0LDB4NTEsMHgyMywweDQ5
LDB4MEIsMHg4QiwweEVGLDB4REQsMHg0MywweDUxLDB4MDIsMHg0OSwweEZDLDB4NUUsMHg1Nyww
eDU3LAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhFQSwweEJFLDB4QkIsMHhBNywweDZBLDB4
OTMsMHgyMywweDQ5LDB4MDUsMHgwRCwweDBELDB4MDksCi0gICAgMHg2QSwweDlCLDB4MDgsMHg4
QiwweDVBLDB4RkUsMHhBQSwweDAyLDB4Q0IsMHhBMywweDY2LDB4NzIsMHgwMiwweEMyLDB4NzIs
MHg1RSwKLSAgICAweDI5LDB4OTMsMHgwNSwweDYyLDB4RkMsMHhERiwweEZGLDB4N0YsMHg0Niww
eDcyLDB4NDMsMHg0OSwweEY4LDB4N0MsMHg1NywweDU1LAotICAgIDB4ODQsMHg1MSwweDQ0LDB4
NDksMHhGRSwweEIzLDB4OTgsMHhFOCwweDY0LDB4NTEsMHgwMywweDM5LDB4M0EsMHhGQSwweDdF
LDB4N0EsCi0gICAgMHhDNSwweDYxLDB4RTIsMHg0MCwweDYwLDB4RTAsMHhFQiwweEU1LDB4MDMs
MHg0MSwweEMyLDB4MzAsMHhFOCwweDdDLDB4RkUsMHg3RSwKLSAgICAweEUyLDB4MzAsMHg2MSww
eDE4LDB4NkEsMHg1OCwweDdBLDB4NTcsMHgyNCwweDM5LDB4NjEsMHgxOCwweEJELDB4QUQsMHgw
QiwweEZGLAotICAgIDB4MjMsMHgzOSwweEEyLDB4MjgsMHhGRiwweDgyLDB4QTgsMHhCNSwweDAz
LDB4MzksMHhBMiwweDI4LDB4REYsMHhGRiwweEFBLDB4QjgsCi0gICAgMHgwMywweDM5LDB4QTIs
MHgyOCwweEFCLDB4OEEsMHhBMywweEVGLDB4MDMsMHgzMSwweDgyLDB4MjAsMHg4OCwweEE4LDB4
QkEsMHhENywKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4NTYsMHg3RSwweDgwLDB4ODIsMHhF
MywweDMwLDB4ODEsMHgyOCwweEZBLDB4NUYsMHhGRSwweDBBLAotICAgIDB4MDMsMHgzOSwweEEy
LDB4MjgsMHhGRCwweEJELDB4QkIsMHhGOCwweEUyLDB4MzAsMHhBMSwweDI4LDB4OEIsMHhFMiww
eEJBLDB4RkYsCi0gICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEI5LDB4MEQsMHg4QSwweEVCLDB4
MDMsMHgzMSwweEMzLDB4MzAsMHhGQiwweEY4LDB4RDYsMHg3RCwKLSAgICAweDAzLDB4MzEsMHhD
MiwweDMwLDB4MUYsMHhBRiwweDI3LDB4MkUsMHg2NCwweDQ5LDB4QzIsMHgyOCwweDJGLDB4MEYs
MHhBRiwweDI1LAotICAgIDB4NEIsMHg4QiwweDY0LDB4NDksMHhCRCwweDM1LDB4MjUsMHgyRCww
eEVFLDB4OUIsMHg2QiwweDhCLDB4RkEsMHhGQSwweDYwLDB4NkEsCi0gICAgMHhFRCwweDlCLDB4
MkEsMHg4MywweDAyLDB4MkIsMHgyRiwweEI3LDB4NkYsMHhBNCwweENELDB4OTMsMHgwMiwweEY3
LDB4RkYsMHg1NSwKLSAgICAweDZGLDB4QUMsMHhDRCwweDkzLDB4QzgsMHg3RiwweDU1LDB4NTUs
MHgyRSwweDlDLDB4QUMsMHg5MywweDJBLDB4QUYsMHhCNSwweEQ1LAotICAgIDB4MjMsMHg0OSww
eDAyLDB4NDEsMHhFMCwweEVFLDB4RUYsMHhERiwweDIzLDB4NDksMHhFMiwweDQwLDB4RkEsMHg3
NiwweEZGLDB4QUUsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEZGLDB4QUQsMHg4RiwweEFB
LDB4NDksMHg5MywweDAzLDB4NDksMHgwMSwweDA5LDB4RjUsMHhENSwKLSAgICAweDI5LDB4OTMs
MHg4NCwweDU5LDB4MDAsMHhBOCwweEVBLDB4N0YsMHhDOCwweDgyLDB4MDMsMHg0MSwweEE4LDB4
QUEsMHhGRiwweEQ1LAotICAgIDB4NjcsMHg3MiwweDQzLDB4NTEsMHg2MCwweDdFLDB4NTcsMHhE
RiwweDg1LDB4NTEsMHgyMiwweDQxLDB4MzcsMHhCNywweDAzLDB4QTIsCi0gICAgMHg4NCwweDQ5
LDB4NDQsMHg0OSwweDYyLDB4N0EsMHg3RSwweEQ3LDB4RTYsMHg2MSwweDIzLDB4NDEsMHg1Nyww
eDU1LDB4QkQsMHg4MiwKLSAgICAweEM0LDB4NTksMHgwMywweDM5LDB4NTUsMHhENSwweDdGLDB4
NUMsMHgyMywweDQxLDB4QTIsMHgyOCwweDY4LDB4NkUsMHg2QSwweEVDLAotICAgIDB4MDMsMHgz
MSwweDYxLDB4MjAsMHhENSwweEY3LDB4RUIsMHhBQiwweDgxLDB4MjgsMHhDMiwweDIwLDB4RTgs
MHhBQSwweDhGLDB4QUIsCi0gICAgMHhFMywweDMwLDB4ODEsMHgyOCwweDk3LDB4RDUsMHhERiww
eDcwLDB4MjMsMHg0MSwweEExLDB4MjgsMHg3RSwweEZCLDB4RUIsMHg4MywKLSAgICAweEUzLDB4
MzAsMHhBMiwweDI4LDB4MjksMHhGQiwweERGLDB4MzcsMHgwMywweDM5LDB4ODEsMHgyOCwweERF
LDB4RkYsMHhGNywweEUwLAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHhFRiwweEI5LDB4QTks
MHg4OSwweDAzLDB4MzksMHhDMiwweDMwLDB4RkQsMHg2OSwweEVFLDB4NzUsCi0gICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweEYzLDB4RUIsMHgwRCwweDhELDB4RTMsMHgzMCwweEMyLDB4MjgsMHg3
MSwweDRCLDB4RUUsMHg1NCwKLSAgICAweEUzLDB4MzAsMHhBMSwweDI4LDB4MDIsMHg4NywweDhG
LDB4QkYsMHgwMywweDMxLDB4QzIsMHgyOCwweEZCLDB4QjcsMHhCQSwweEVCLAotICAgIDB4MjMs
MHgzOSwweEUyLDB4MzAsMHhCRCwweERGLDB4NTcsMHhERCwweDg0LDB4NTEsMHhFMiwweDMwLDB4
MzcsMHgyRCwweDNCLDB4OEIsCi0gICAgMHgyRCwweEE0LDB4ODQsMHg1MSwweEE1LDB4RUQsMHgw
OSwweDBCLDB4OEYsMHhCNCwweEE4LDB4NzIsMHhGRiwweDU1LDB4RUEsMHgwMCwKLSAgICAweENE
LDB4OUIsMHg2NywweDYyLDB4QkYsMHg1NSwweEZGLDB4RjgsMHg0QiwweDgzLDB4NDcsMHg2Miww
eEJDLDB4NTcsMHhGRiwweEZGLAotICAgIDB4QUMsMHg4QiwweDY3LDB4NjIsMHgwMCwweDJELDB4
QjUsMHg1NywweEFELDB4OTMsMHgwOSwweDdCLDB4MDAsMHgyMiwweEFBLDB4QTksCi0gICAgMHgw
MiwweDQxLDB4RTMsMHg0MCwweDMwLDB4QUUsMHgwMCwweEIwLDB4MjMsMHg0OSwweEUyLDB4NDAs
MHhBRiwweEFBLDB4MjIsMHhFNiwKLSAgICAweDIzLDB4NDEsMHhFMiwweDQwLDB4MEEsMHhFMCww
eEUwLDB4OUMsMHg0NCwweDQ5LDB4RTIsMHg0MCwweDM2LDB4QkQsMHhGRiwweEY1LAotICAgIDB4
RTUsMHg2MSwweDAyLDB4NDEsMHhFMCwweDVGLDB4NTUsMHg1NSwweDA2LDB4NjIsMHhFMiwweDQw
LDB4QjUsMHgzNSwweDM1LDB4MzUsCi0gICAgMHhFNSwweDYxLDB4ODQsMHg1MSwweDVFLDB4RkUs
MHg3OCwweEUwLDB4QTUsMHg1MSwweDIzLDB4NDEsMHhFOCwweEU4LDB4RUYsMHhENywKLSAgICAw
eDI2LDB4NkEsMHg0NCwweDQ5LDB4MzUsMHgwNSwweDI1LDB4RDUsMHhFNCwweDYxLDB4ODIsMHgz
MCwweEEwLDB4RjgsMHg1QywweDU2LAotICAgIDB4ODQsMHg1MSwweEMyLDB4MzAsMHg3OCwweERB
LDB4RkYsMHhGNSwweDAzLDB4MzksMHg4MSwweDIwLDB4N0EsMHhGQSwweEY4LDB4NUYsCi0gICAg
MHhDMiwweDI4LDB4ODIsMHgyOCwweDgxLDB4ODMsMHhBMiwweDhCLDB4NjQsMHg0OSwweEEyLDB4
MjgsMHhBRCwweDg5LDB4OEIsMHg3QiwKLSAgICAweDI0LDB4NDEsMHg4MSwweDI4LDB4ODgsMHhB
OCwweEFBLDB4RkQsMHg0NCwweDQ5LDB4RTIsMHgzOCwweDBELDB4MkYsMHhENywweERELAotICAg
IDB4NDQsMHg0MSwweEExLDB4MjgsMHhERSwweDVDLDB4N0EsMHhGQSwweDA0LDB4MzksMHg4MSww
eDI4LDB4MDAsMHhBMywweEZGLDB4RDcsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEMwLDB4
RjUsMHhGNywweEFELDB4RTMsMHgzMCwweEEyLDB4MjgsMHgwRiwweEFGLDB4NTcsMHg3OCwKLSAg
ICAweDAzLDB4MzEsMHhBMiwweDI4LDB4MkYsMHhGRiwweEFELDB4QUYsMHgwMywweDMxLDB4QzIs
MHgyOCwweDVGLDB4N0YsMHhENSwweEUzLAotICAgIDB4MjMsMHgzOSwweEMyLDB4MjgsMHhENSww
eEZELDB4QUYsMHhCRiwweDAzLDB4MzksMHhDMiwweDMwLDB4OEIsMHhCRiwweEE2LDB4QUEsCi0g
ICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEZGLDB4Q0EsMHhBQiwweDJBLDB4NEEsMHg4QiwweDAz
LDB4MzksMHhGNSwweEI1LDB4QjUsMHgzNSwKLSAgICAweDMxLDB4QzUsMHg0QSwweDgzLDB4QTks
MHg4MiwweDAyLDB4MDAsMHgxMCwweEM1LDB4NkUsMHhBQywweEJGLDB4RjcsMHg3QywweEEwLAot
ICAgIDB4NkUsMHhBQywweDBBLDB4ODMsMHg1QywweDcwLDB4ODAsMHg4MCwweDZCLDB4OTMsMHg2
NywweDZBLDB4RDUsMHhGNywweERFLDB4RTgsCi0gICAgMHg0QSwweDgzLDB4NDcsMHg2MiwweDdF
LDB4RUEsMHhBQSwweDAyLDB4NEIsMHg4MywweEE1LDB4NDksMHgwRiwweERGLDB4N0UsMHhGOCwK
LSAgICAweDIzLDB4NDksMHhFMywweDQwLDB4QkYsMHhBQiwweEFCLDB4QkUsMHgyMywweDQ5LDB4
MDMsMHg0MSwweEY1LDB4QkYsMHg0RiwweDc3LAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHgy
OCwweDJDLDB4QUUsMHhGRSwweDAzLDB4NDEsMHhFMiwweDM4LDB4QTIsMHhBRiwweDc5LDB4NjUs
Ci0gICAgMHgwMiwweDQxLDB4RTIsMHgzOCwweDMyLDB4MkIsMHhGRCwweEFGLDB4MjYsMHg2QSww
eEUyLDB4NDAsMHgzNSwweDM1LDB4MzUsMHgxNSwKLSAgICAweDI2LDB4NkEsMHgyMywweDQxLDB4
RTgsMHg2OCwweDY4LDB4NjgsMHg0NCwweDQxLDB4MDMsMHgzOSwweEEyLDB4MzUsMHg3RCwweDVE
LAotICAgIDB4NDQsMHg0MSwweEUyLDB4MzAsMHhCQSwweDY4LDB4NEEsMHhCRiwweEE0LDB4NTEs
MHhBMiwweDI4LDB4NzAsMHg3QiwweDU3LDB4N0YsCi0gICAgMHhDMiwweDI4LDB4ODEsMHgyMCww
eDgzLDB4QzIsMHg2MCwweDBBLDB4RTMsMHgyOCwweDYxLDB4MjAsMHhENywweEY1LDB4QUIsMHgy
MiwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RkYsMHhGOSwweEFCLDB4OEEsMHgwMywweDMx
LDB4QTIsMHgyOCwweDczLDB4NTcsMHg1RiwweEZFLAotICAgIDB4QzIsMHgyOCwweDgxLDB4MjAs
MHg1QiwweDc4LDB4QkUsMHhBRiwweDAzLDB4NDEsMHg4MSwweDIwLDB4MEIsMHhBRCwweEZGLDB4
NTcsCi0gICAgMHg0NCwweDQxLDB4QTIsMHgyOCwweEZBLDB4RUEsMHg4QiwweEU1LDB4RTIsMHgz
MCwweDgxLDB4MjgsMHhFRSwweDNCLDB4RkQsMHhBOCwKLSAgICAweDAzLDB4MzksMHg4MSwweDIw
LDB4RjUsMHhERSwweEFGLDB4MkEsMHgyNCwweDQxLDB4QTIsMHgyOCwweDVGLDB4NUYsMHg1Riww
eEUwLAotICAgIDB4MDMsMHgzOSwweDgyLDB4MjgsMHhGRiwweEJELDB4RTMsMHhFQSwweDAzLDB4
MzEsMHg4MSwweDI4LDB4QTIsMHhCMywweEZGLDB4REYsCi0gICAgMHhFMiwweDMwLDB4QTIsMHgy
OCwweDI4LDB4QTgsMHg5NSwweERGLDB4MjMsMHgzOSwweEMyLDB4MzAsMHhBQiwweDIzLDB4Rjcs
MHhGRiwKLSAgICAweDY1LDB4NTEsMHgwMywweDM5LDB4RDcsMHhCRCwweEJELDB4MzksMHg2Qyww
eDkzLDB4ODUsMHg1MSwweDM1LDB4QjUsMHhBRCwweEFELAotICAgIDB4RjAsMHhCQywweDBBLDB4
ODMsMHgwMiwweDJELDB4RDUsMHg1NSwweEYwLDB4QkMsMHhFOSwweDdBLDB4MDAsMHgwMCwweDAz
LDB4RkQsCi0gICAgMHgxMCwweEM1LDB4NkUsMHhBQywweDdBLDB4RUEsMHhBMiwweDhCLDB4NkUs
MHhBQywweDZCLDB4OEIsMHg3RSwweEFBLDB4QTgsMHg4MCwKLSAgICAweDJELDB4QTQsMHgwQSww
eDdCLDB4NzUsMHhFOCwweDAwLDB4MDAsMHg0RSwweEE0LDB4NjgsMHg2MiwweDdGLDB4RkEsMHg4
MCwweDAwLAotICAgIDB4MDMsMHg0MSwweEUyLDB4NDAsMHgzNCwweDI3LDB4RjgsMHhCQiwweDIz
LDB4NDksMHhFMiwweDM4LDB4RUEsMHg3RSwweDdGLDB4NTUsCi0gICAgMHgwMywweDQxLDB4QzIs
MHgzOCwweEZGLDB4QUEsMHhBRiwweEFCLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBMywweEJCLDB4
RkUsMHhCQSwKLSAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4RkEsMHg1RiwweEY1LDB4RkQsMHgw
NSwweDYyLDB4RTIsMHg0MCwweDE1LDB4MTUsMHgxNSwweDk1LAotICAgIDB4NDYsMHg2QSwweDAz
LDB4MzksMHg2OCwweDYwLDB4NjAsMHg2OCwweDAzLDB4MzksMHhFMiwweDMwLDB4MDIsMHhBQiww
eDI1LDB4M0IsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzOCwweDhBLDB4MkIsMHg4QiwweEJGLDB4
NDQsMHg0MSwweEUzLDB4MzAsMHg2RiwweEZBLDB4QTIsMHhBQSwKLSAgICAweDQ0LDB4MzksMHhF
MywweDMwLDB4NTUsMHhCRiwweEZDLDB4RkEsMHgyNCwweDQxLDB4RTMsMHgzMCwweDdGLDB4RkYs
MHhGQSwweDNCLAotICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHg1NSwweDdGLDB4RkUsMHhGQSww
eDAzLDB4MzEsMHhDMywweDI4LDB4RkYsMHhGRiwweDJBLDB4Q0EsCi0gICAgMHgwMywweDMxLDB4
QTIsMHgyMCwweDU3LDB4N0UsMHhBQSwweEFBLDB4RTMsMHgyOCwweDgyLDB4MjAsMHg1RCwweEY2
LDB4QUEsMHhBMiwKLSAgICAweDAzLDB4MzksMHg4MiwweDIwLDB4M0QsMHhCRCwweDc3LDB4N0Ys
MHhFMywweDMwLDB4ODIsMHgyMCwweDAyLDB4MEEsMHgyQiwweDM1LAotICAgIDB4MjMsMHg0MSww
eEEyLDB4MzAsMHhBQSwweERFLDB4RkUsMHhGRSwweDQ0LDB4NDEsMHhDMiwweDMwLDB4RTAsMHhD
QSwweDc1LDB4REQsCi0gICAgMHhFMiwweDMwLDB4QTIsMHgzMCwweDhGLDB4QUYsMHhBOSwweDIy
LDB4MjIsMHgzOSwweEEyLDB4MjgsMHg1NSwweEY1LDB4RkQsMHgzRiwKLSAgICAweDQ0LDB4NDEs
MHhBMSwweDI4LDB4RDcsMHhERCwweEZFLDB4QTIsMHg0MywweDQxLDB4RTMsMHgzMCwweEJCLDB4
MzUsMHhBOSwweDhCLAotICAgIDB4NDcsMHg2MiwweDIzLDB4NDEsMHhGNSwweDk1LDB4MjUsMHgy
QiwweEU5LDB4N0EsMHhDNSwweDU5LDB4MDksMHgyQiwweDhBLDB4MkEsCi0gICAgMHgwQSwweDgz
LDB4QTksMHg3MiwweDJBLDB4MkIsMHhGQiwweEZGLDB4MkIsMHg4MywweEM5LDB4N0EsMHgyRiww
eDI4LDB4RUIsMHhGRiwKLSAgICAweENGLDB4QjQsMHgwQSwweDgzLDB4MkQsMHhERCwweDU1LDB4
NTUsMHg2RSwweEFDLDB4MEEsMHg4MywweDAwLDB4MEEsMHhCNSwweDU1LAotICAgIDB4NkUsMHhB
QywweDRBLDB4OEIsMHgwMCwweDAwLDB4MDAsMHgyNSwweEFGLDB4QjQsMHg0RSwweEFDLDB4N0Ys
MHhBQiwweDBBLDB4MEIsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEEwLDB4QzAsMHhFOCww
eEZFLDB4MDMsMHg0MSwweEUyLDB4MzgsMHhENSwweEFELDB4RDEsMHg3OSwKLSAgICAweDAyLDB4
NDEsMHhFMiwweDM4LDB4N0QsMHg1RCwweDU1LDB4RjUsMHgwMywweDQxLDB4RTIsMHgzOCwweDc3
LDB4NTcsMHg1RCwweEQ3LAotICAgIDB4RTIsMHgzOCwweEMyLDB4MzgsMHgwMCwweDAwLDB4MDAs
MHhBOCwweDA2LDB4NjIsMHhFMiwweDM4LDB4OTUsMHgxNSwweDk1LDB4MTUsCi0gICAgMHg2Nyww
eDcyLDB4MDMsMHg0MSwweDY4LDB4NjgsMHg3OCwweDc4LDB4MDMsMHgzOSwweEUyLDB4MzAsMHg1
RSwweEVFLDB4REYsMHhGNywKLSAgICAweDAyLDB4MzksMHhFMywweDMwLDB4REYsMHg5OSwweDU1
LDB4NzUsMHgyMywweDM5LDB4RTMsMHgzMCwweDBCLDB4QTcsMHhGRiwweEQ1LAotICAgIDB4MjQs
MHgzOSwweEUzLDB4MzgsMHg2OCwweEJCLDB4RkYsMHg1RiwweDI0LDB4NDEsMHhFMywweDMwLDB4
RkYsMHgyOSwweDhGLDB4QUUsCi0gICAgMHgyNCwweDQxLDB4MDMsMHgzOSwweDcxLDB4NTcsMHg3
QSwweDVDLDB4MjQsMHgzOSwweEUyLDB4MzAsMHhGRiwweEZBLDB4QkQsMHhBRSwKLSAgICAweDAz
LDB4MzEsMHhFMywweDMwLDB4NjAsMHhBRSwweDJFLDB4MDMsMHgwMywweDMxLDB4QzIsMHgyOCww
eEZGLDB4RUIsMHhDOCwweDAwLAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjAsMHg3RSwweEZCLDB4
QkEsMHhBOCwweEUyLDB4MjgsMHhBMiwweDI4LDB4NTUsMHg2NywweDczLDB4QUEsCi0gICAgMHgw
MywweDMxLDB4ODEsMHgyMCwweEEyLDB4QUQsMHhERiwweDdGLDB4MDMsMHgzOSwweDgyLDB4MjAs
MHhBMiwweEE4LDB4MEIsMHhGNSwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4RjcsMHgyRSww
eDgyLDB4QTksMHgyMywweDM5LDB4QzIsMHgyOCwweEI5LDB4QTksMHhBRCwweDJGLAotICAgIDB4
MjMsMHg0MSwweEMyLDB4MjgsMHhBMCwweEY4LDB4REMsMHhGRSwweEE1LDB4NTEsMHhDMiwweDI4
LDB4RkYsMHhCNywweDNELDB4MkYsCi0gICAgMHg2OCwweDZBLDB4QzUsMHg1MSwweEJELDB4M0Qs
MHhBOSwweEJGLDB4QzksMHg3MiwweDQ4LDB4NkEsMHhBQiwweEFCLDB4QUYsMHgzRCwKLSAgICAw
eEU5LDB4N0EsMHg4OSwweDcyLDB4OEYsMHhGRiwweEI1LDB4QkIsMHhFQSwweDgyLDB4QTksMHg3
QSwweDNCLDB4QjksMHhGQiwweEY3LAotICAgIDB4MEEsMHg4MywweEM5LDB4NzIsMHgzQSwweEJG
LDB4RTksMHhBQiwweDBBLDB4ODMsMHhDOSwweDdBLDB4QTIsMHgwRSwweEY3LDB4REEsCi0gICAg
MHg0QiwweDhCLDB4RUEsMHg3QSwweDJGLDB4NUQsMHhGRCwweDU1LDB4OEYsMHhBQywweDBBLDB4
ODMsMHgwQiwweEJELDB4NTUsMHg1NSwKLSAgICAweDAzLDB4MzksMHhDMiwweDM4LDB4RTcsMHhC
RiwweEVCLDB4RUIsMHgwMywweDQxLDB4RTIsMHgzOCwweDVCLDB4N0YsMHg1NSwweEQ1LAotICAg
IDB4MjIsMHgzOSwweEMyLDB4MzgsMHhGNywweERELDB4RjYsMHhGRiwweEUyLDB4MzgsMHhDMiww
eDM4LDB4QUEsMHhFQSwweDAyLDB4MEEsCi0gICAgMHhFMiwweDM4LDB4QzIsMHgzOCwweDgwLDB4
QzAsMHhEQSwweDJBLDB4ODQsMHg1MSwweEMyLDB4MzAsMHgzNSwweDk1LDB4RDcsMHg1NywKLSAg
ICAweDI2LDB4NkEsMHgwMywweDM5LDB4NzgsMHg3OCwweDdBLDB4NjgsMHgwMywweDM5LDB4RTMs
MHgzMCwweDU3LDB4NTYsMHg1QSwweEJELAotICAgIDB4RTIsMHgzMCwweEMzLDB4MzAsMHgwRiww
eDIzLDB4MDMsMHg4MiwweDAzLDB4MzEsMHhFMywweDMwLDB4REQsMHg5NywweEY5LDB4NTUsCi0g
ICAgMHgwMywweDMxLDB4QTIsMHgzMCwweDgyLDB4MkEsMHhBMiwweENBLDB4MDMsMHgzOSwweEMz
LDB4MzAsMHgwQSwweEFFLDB4MkEsMHgyQSwKLSAgICAweDIzLDB4MzksMHhFMywweDMwLDB4ODIs
MHhBRiwweEFBLDB4RjcsMHhFMywweDM4LDB4MjQsMHgzMSwweEFCLDB4RUIsMHhFRSwweENBLAot
ICAgIDB4MjMsMHgzOSwweEUzLDB4MzgsMHhGRiwweDJFLDB4QUUsMHhGRSwweDIzLDB4MzksMHhF
MiwweDMwLDB4RkEsMHg4RiwweDdFLDB4RTgsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzMCwweDdG
LDB4QTgsMHhBQSwweEJGLDB4MjMsMHgzOSwweEMyLDB4MjgsMHhGNywweEJBLDB4RUEsMHg4QSwK
LSAgICAweDAzLDB4MzEsMHhBMiwweDIwLDB4N0YsMHhCQSwweDg4LDB4MDAsMHgwMywweDMxLDB4
ODEsMHgyMCwweEQ3LDB4RkUsMHhBQSwweDA4LAotICAgIDB4RTMsMHgzMCwweDgyLDB4MjAsMHgy
RCwweEZGLDB4QUUsMHgwMCwweDI0LDB4MzksMHhBMiwweDIwLDB4MkYsMHhGNSwweEJGLDB4MkEs
Ci0gICAgMHg2NSwweDQxLDB4QzIsMHgyOCwweEY3LDB4RjUsMHhBRiwweDJFLDB4MjcsMHg2Miww
eDAzLDB4MzEsMHhBRCwweDJCLDB4MkEsMHgwMiwKLSAgICAweDY4LDB4NkEsMHhFNiwweDU5LDB4
QkQsMHhBRCwweDJELDB4MEYsMHhDOSwweDcyLDB4NDgsMHg2QSwweEJGLDB4QkEsMHg4QiwweEI3
LAotICAgIDB4QzksMHg3MiwweDg4LDB4NzIsMHhBQSwweEZGLDB4QkUsMHg2RCwweEM5LDB4N0Es
MHhBOCwweDcyLDB4MjgsMHg4MSwweDhGLDB4N0IsCi0gICAgMHhDOSwweDdBLDB4QTksMHg3Miww
eEQwLDB4NkIsMHgyMCwweDAyLDB4RTksMHg3QSwweEE5LDB4NzIsMHhBQSwweEI2LDB4MkQsMHhC
QSwKLSAgICAweDBBLDB4ODMsMHhBOSwweDcyLDB4MkEsMHhCNywweEY3LDB4RkYsMHgwQSwweDgz
LDB4QzksMHg3QSwweDhCLDB4OEIsMHhBNSwweDlCLAotICAgIDB4MDMsMHg0MSwweEMyLDB4Mzgs
MHhBRSwweEFFLDB4RUIsMHhGQiwweDAzLDB4NDEsMHhDMiwweDM4LDB4RkIsMHhFQSwweEJCLDB4
REUsCi0gICAgMHhFMiwweDM4LDB4QzIsMHgzOCwweDgwLDB4MjYsMHhBQiwweDMyLDB4RTIsMHgz
OCwweEMyLDB4MzgsMHg4QSwweEUwLDB4QjAsMHhCMCwKLSAgICAweEUyLDB4MzgsMHhBMiwweDMw
LDB4MDgsMHgyQSwweDYyLDB4RkMsMHhFNSwweDU5LDB4QzIsMHgzOCwweDk1LDB4MTUsMHg5NSww
eDU1LAotICAgIDB4QTgsMHg3MiwweEUzLDB4MzgsMHg3OCwweDc4LDB4NUUsMHg1NSwweDAzLDB4
MzksMHhFMywweDMwLDB4RjYsMHhENywweEZDLDB4RDUsCi0gICAgMHgwMywweDMxLDB4RTMsMHgz
MCwweDdELDB4RkIsMHhENywweDU1LDB4RTMsMHgzMCwweEMyLDB4MjgsMHgyMCwweDJBLDB4QjIs
MHgwQiwKLSAgICAweDAzLDB4MzEsMHhFMywweDMwLDB4NTUsMHg1NSwweEI1LDB4RUQsMHgwMyww
eDMxLDB4QzIsMHgzMCwweEFBLDB4RjcsMHhBRSwweEJBLAotICAgIDB4MDMsMHgzMSwweEMyLDB4
MzAsMHgyRSwweDhCLDB4QkYsMHgzRSwweDAzLDB4MzEsMHhDMywweDMwLDB4OUEsMHhBOCwweEFC
LDB4QUEsCi0gICAgMHhFMywweDM4LDB4MjQsMHgzMSwweEFBLDB4QUEsMHhFRSwweEFBLDB4MjQs
MHgzOSwweEUzLDB4MzAsMHhGQiwweEVFLDB4QUYsMHhFQiwKLSAgICAweDI0LDB4MzksMHgwMyww
eDM5LDB4NTcsMHg3NSwweERELDB4RDUsMHgyNCwweDM5LDB4RTIsMHgzMCwweEEzLDB4RjYsMHhB
OCwweDBBLAotICAgIDB4MDMsMHgzOSwweDY0LDB4MzEsMHhBQSwweEE4LDB4OEEsMHgyQSwweDY0
LDB4NDEsMHgwMywweDM5LDB4NTcsMHhGRiwweEFGLDB4M0QsCi0gICAgMHg4NSwweDQ5LDB4MDMs
MHgzMSwweDU1LDB4REYsMHhBQiwweDA4LDB4QzYsMHg1MSwweDAzLDB4MzEsMHg1NSwweEZELDB4
QkIsMHgyMiwKLSAgICAweDA3LDB4NjIsMHg0NCwweDQxLDB4OTUsMHhBRCwweDBCLDB4MDAsMHg0
NywweDYyLDB4RTYsMHg1OSwweDk1LDB4QUQsMHgwRSwweDgyLAotICAgIDB4ODgsMHg3MiwweDI3
LDB4NjIsMHhCRCwweDJGLDB4MkYsMHg4RiwweEE4LDB4NzIsMHg0OCwweDYyLDB4QkYsMHhBRSww
eDNFLDB4MjcsCi0gICAgMHhDOSwweDcyLDB4ODgsMHg2QSwweEI1LDB4OUQsMHhFRCwweEYyLDB4
QTksMHg3MiwweDY4LDB4NkEsMHhBMCwweDIwLDB4QTgsMHg3QywKLSAgICAweEM5LDB4NzIsMHg4
OSwweDcyLDB4MEUsMHhGRSwweEJGLDB4MkQsMHhDOSwweDdBLDB4ODgsMHg2QSwweDAyLDB4MkEs
MHhGRSwweDYzLAotICAgIDB4RUEsMHg3QSwweEE5LDB4NzIsMHgyRiwweEUyLDB4N0QsMHhGNSww
eDBBLDB4N0IsMHhBOSwweDcyLDB4QjIsMHhBQiwweEVELDB4QkYsCi19OwotCi1zdGF0aWMgY29u
c3Qgc2l6ZV90IHBpeGVsXzNfd2lkdGggPSA2NDsKLXN0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxf
M19oZWlnaHQgPSA2NDsKLXN0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfM19zaXplID0gMjA0ODsK
LXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHBpeGVsXzNfZGF0YVsyMDQ4XSA9Ci17Ci0gICAg
MHgyNiwweDVBLDB4NDMsMHg0MSwweEZFLDB4N0IsMHhGQSwweEI0LDB4MDUsMHg1MiwweDIzLDB4
MzksMHhGRiwweEZGLDB4NEYsMHhGRSwKLSAgICAweEE1LDB4NDksMHg0MywweDM5LDB4REIsMHg2
NCwweDVFLDB4OEIsMHgyNiwweDZBLDB4NDQsMHg0MSwweEZGLDB4N0YsMHg2OSwweDAzLAotICAg
IDB4MkEsMHg4MywweDQ0LDB4NDEsMHg1NSwweDc3LDB4NTUsMHgwMiwweDZFLDB4QTQsMHg4NCww
eDQ5LDB4NTUsMHg1NSwweDU1LDB4MEEsCi0gICAgMHg1MiwweEM1LDB4QTUsMHg0OSwweDU1LDB4
NTUsMHg1NSwweDAwLDB4RjQsMHhFNSwweEM1LDB4NTEsMHg3NSwweDU1LDB4NTUsMHgzOCwKLSAg
ICAweDk3LDB4RUUsMHg2NCwweDQ5LDB4NUQsMHg1NSwweEZGLDB4MDAsMHhCNiwweEVFLDB4ODQs
MHg0OSwweDU1LDB4NTUsMHhCQiwweDAwLAotICAgIDB4NzUsMHhFRSwweDY0LDB4NDksMHgwRCww
eDM1LDB4MEEsMHgwMCwweEQ3LDB4RjYsMHgzNCwweEU2LDB4QTIsMHg2QywweDlFLDB4MjcsCi0g
ICAgMHhGNywweEY2LDB4NTUsMHhFNiwweDAyLDB4RUQsMHhENywweEJBLDB4MzgsMHhGRiwweDc2
LDB4RUUsMHhBQSwweEFCLDB4QTcsMHhBQiwKLSAgICAweEQ3LDB4RjYsMHgzNCwweEU2LDB4NjAs
MHhFMCwweEY4LDB4NTAsMHgxNCwweERFLDB4OTIsMHhENSwweEEyLDB4MDEsMHgwMSwweDgzLAot
ICAgIDB4QjYsMHhFRSwweDhCLDB4OEIsMHg1NywweDAwLDB4MDAsMHgwMCwweEI2LDB4RUUsMHhF
RCwweDlCLDB4RjUsMHgwMCwweDAwLDB4MDAsCi0gICAgMHhCNiwweEY2LDB4NTEsMHhDNSwweEY1
LDB4MDAsMHgwMCwweDAwLDB4QjMsMHhENSwweEM1LDB4NjksMHhENCwweDU0LDB4NTQsMHg1NiwK
LSAgICAweEI2LDB4RjYsMHhFNSwweDY5LDB4MDIsMHgwMywweDBELDB4MDUsMHhENiwweEY2LDB4
QjYsMHhGNiwweEQ1LDB4MTUsMHgzNywweEFFLAotICAgIDB4RDcsMHhGNiwweDQ2LDB4N0EsMHgw
MCwweDAwLDB4QzAsMHg3MCwweEY3LDB4RkUsMHg2NywweDdBLDB4OTYsMHgxNywweDM1LDB4MzUs
Ci0gICAgMHgxOCwweEY3LDB4RDcsMHhGNiwweDcyLDB4RjgsMHhGMCwweEYwLDB4RjcsMHhGNiww
eEI2LDB4RjYsMHhFQiwweEFBLDB4MkUsMHhDQSwKLSAgICAweEQ3LDB4RjYsMHgxNCwweERFLDB4
RTAsMHg2MCwweERDLDB4MzYsMHhENywweEY2LDB4RDMsMHhERCwweEI5LDB4ODIsMHgwMCwweDAw
LAotICAgIDB4MTgsMHhGRiwweEI2LDB4RUUsMHg3RCwweEY1LDB4MjUsMHgzRiwweDM4LDB4RkYs
MHhCNywweEVFLDB4Q0IsMHhFQiwweEZGLDB4N0MsCi0gICAgMHhCNiwweEVFLDB4NzEsMHhDRCww
eEYwLDB4RDgsMHhEMiwweEYyLDB4OTYsMHhFRSwweDMxLDB4QzUsMHhBQiwweDhGLDB4OEIsMHg4
OSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEU2LDB4OEEsMHgyMiwweDg4LDB4MDIsMHhGNywweEY2
LDB4QjYsMHhFRSwweDVGLDB4NUUsMHg3QSwweEZBLAotICAgIDB4RjcsMHhGNiwweEI2LDB4RUUs
MHhFRCwweEFCLDB4QTksMHgyQiwweDk2LDB4RUUsMHg0NCwweDUxLDB4NTYsMHg1NCwweDU0LDB4
NUMsCi0gICAgMHg2RSwweEI0LDB4MjMsMHg0OSwweDJELDB4QUQsMHhGRCwweEZGLDB4MTQsMHhF
NiwweDA2LDB4NkEsMHgwMiwweEY3LDB4RkQsMHg1NSwKLSAgICAweDU1LDB4RUUsMHhFNiwweDcx
LDB4NTgsMHg1NywweDU1LDB4NTUsMHgxNywweEZGLDB4ODcsMHg4QSwweDI1LDB4MjUsMHgyNSww
eDA1LAotICAgIDB4MzgsMHhGRiwweEQ3LDB4RjYsMHhGQSwweEVBLDB4QTIsMHg2RSwweEY3LDB4
RjYsMHhGMywweERELDB4QTAsMHhBOCwweDc4LDB4MjgsCi0gICAgMHhGNywweEY2LDB4RDMsMHhE
RCwweDBCLDB4MDIsMHgwOSwweDJGLDB4RjcsMHhGNiwweEI3LDB4RUUsMHhGRSwweEVFLDB4QkEs
MHgyQSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4MTUsMHhCNSwweDhCLDB4QTIsMHgxOCww
eEZGLDB4NzYsMHhFRSwweEY4LDB4NTgsMHg1QSwweDdBLAotICAgIDB4NzUsMHhFRSwweDEwLDB4
QzUsMHhFMiwweEUyLDB4RTIsMHg2MiwweDU1LDB4RUUsMHhFRiwweEJDLDB4MEQsMHgwOSwweDBC
LDB4MDIsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDIyLDB4MDgsMHgwMCwweDAxLDB4Rjcs
MHhGNiwweEI2LDB4RUUsMHhBQSwweEZBLDB4RkUsMHhCQSwKLSAgICAweEY3LDB4RjYsMHg5Niww
eEVFLDB4MjIsMHgwMiwweEFBLDB4QUEsMHgzNCwweEVFLDB4MDIsMHg0MSwweEY4LDB4RkMsMHg1
QywweDU2LAotICAgIDB4QTgsMHg4MiwweEUyLDB4MzgsMHhBOCwweEJBLDB4QUYsMHhDRCwweEFC
LDB4QTMsMHg0MywweDQ5LDB4RkYsMHhCRiwweDBCLDB4MkQsCi0gICAgMHgwRCwweEI0LDB4ODcs
MHg4MiwweDVGLDB4RjIsMHg3MiwweEI2LDB4RjcsMHhGRSwweEE4LDB4ODIsMHgwRCwweDA5LDB4
MDIsMHgwMCwKLSAgICAweDM4LDB4RkYsMHg5NiwweEVFLDB4N0EsMHg3RSwweDRBLDB4NjMsMHgx
OCwweEZGLDB4RjgsMHhGNiwweERELDB4OTAsMHhCMCwweEIwLAotICAgIDB4MTgsMHhGRiwweDU1
LDB4RTYsMHhCNywweEI2LDB4QkMsMHhCOCwweDE4LDB4RkYsMHhENywweEY2LDB4REYsMHhFRSww
eEZCLDB4QkEsCi0gICAgMHhGNywweEY2LDB4NzUsMHhFRSwweDgwLDB4ODAsMHg2MCwweDVFLDB4
RDcsMHhGNiwweEY0LDB4REQsMHhBMiwweEUyLDB4QjIsMHhEOCwKLSAgICAweDc2LDB4RUUsMHhB
RSwweEJDLDB4NjIsMHg2MiwweEUyLDB4NkEsMHg5NiwweEVFLDB4NTIsMHhDRCwweDBCLDB4MjIs
MHhCRiwweEI1LAotICAgIDB4OTUsMHhFRSwweEU4LDB4ODIsMHgyRCwweDU1LDB4NTUsMHg1NSww
eEQ2LDB4RjYsMHhFOCwweDgyLDB4MDAsMHgwRiwweDU1LDB4NTUsCi0gICAgMHhENiwweEY2LDB4
RTgsMHg4QSwweDAwLDB4MDAsMHgwQiwweEQ1LDB4OTYsMHhGNiwweDIzLDB4NDEsMHg1NiwweDU2
LDB4NUMsMHg1QSwKLSAgICAweEU4LDB4OTIsMHhFMywweDM4LDB4Q0QsMHg2RCwweEUzLDB4RTIs
MHhDOCwweDgyLDB4RTIsMHgzOCwweDJELDB4RDUsMHhENSwweERFLAotICAgIDB4NEEsMHg5Myww
eDg0LDB4NTksMHgwOCwweEVBLDB4N0YsMHg1RiwweEQ3LDB4RjYsMHg4OCwweDdBLDB4MEQsMHgy
NSwweDk1LDB4RDUsCi0gICAgMHgzOCwweEZGLDB4NTUsMHhFRSwweEYwLDB4OTgsMHg5QywweDlE
LDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGMCwweEY4LDB4RjgsMHg1OCwKLSAgICAweDE4LDB4RkYs
MHhENywweEY2LDB4NzYsMHhCRSwweEJGLDB4QUIsMHgxOCwweEZGLDB4OTYsMHhFRSwweDgyLDB4
QzgsMHg2OCwweDdBLAotICAgIDB4QjYsMHhGNiwweDU1LDB4RTYsMHhGOCwweDc2LDB4RjcsMHhE
NywweDk2LDB4RUUsMHg5MiwweEQ1LDB4QjAsMHhEMCwweEQwLDB4RjgsCi0gICAgMHhEMywweERE
LDB4QUYsMHhCQywweDYwLDB4NjAsMHg3MCwweERDLDB4OTIsMHhENSwweEFGLDB4QkMsMHgwMyww
eDhCLDB4QTksMHhBRCwKLSAgICAweEE3LDB4N0EsMHgyNSwweDZBLDB4QUEsMHhBMiwweDNELDB4
NTcsMHhDNywweDgyLDB4NDUsMHg3MiwweDBBLDB4QkIsMHhFRSwweEJELAotICAgIDB4RTgsMHg4
QSwweDg3LDB4N0EsMHgwMiwweEFCLDB4RDUsMHg3NywweEU4LDB4ODIsMHhDMiwweDM4LDB4Rjgs
MHg3OCwweDcwLDB4RTIsCi0gICAgMHhDOCwweDhBLDB4NDQsMHg1MSwweEEyLDB4RTMsMHhBRCww
eEQ1LDB4MDYsMHg2QSwweDAzLDB4NDEsMHhGQywweEZGLDB4NUMsMHg1NiwKLSAgICAweDI2LDB4
NzIsMHgwMywweDQxLDB4QjAsMHgyRiwweDI1LDB4QUQsMHhBOCwweDgyLDB4NDQsMHg0OSwweDAy
LDB4NjgsMHg1RiwweDVGLAotICAgIDB4OTYsMHhGNiwweDQ3LDB4N0EsMHgwQiwweDJELDB4NTUs
MHg1NSwweEY3LDB4RjYsMHg4OCwweDdBLDB4MDAsMHgwMCwweDBCLDB4RDUsCi0gICAgMHhGOCww
eEZFLDB4RUMsMHhBMywweDAwLDB4MDAsMHgwMCwweDJELDB4RjcsMHhGNiwweDU1LDB4RUUsMHhG
OCwweDVFLDB4N0UsMHg1NywKLSAgICAweDc2LDB4RUUsMHgzNSwweEU2LDB4MzgsMHg2QSwweDgw
LDB4MjAsMHg3NiwweEVFLDB4RDMsMHhERCwweEYwLDB4RjgsMHg5RSwweEQ0LAotICAgIDB4NzUs
MHhFRSwweDRELDB4QUMsMHhENiwweDdGLDB4N0UsMHhBMCwweDMxLDB4Q0QsMHhDOCwweDdBLDB4
MDAsMHgwMywweDBCLDB4QjcsCi0gICAgMHg2NiwweDcyLDB4NDYsMHg3MiwweDU3LDB4QUUsMHgw
QSwweDI5LDB4NjYsMHg3MiwweDI2LDB4NzIsMHhGRSwweEFBLDB4ODIsMHgwMCwKLSAgICAweEE3
LDB4ODIsMHg0NiwweDcyLDB4MjksMHhENSwweERGLDB4RkYsMHgwOSwweDhCLDB4NjYsMHg3QSww
eDdGLDB4QUYsMHhENSwweDE1LAotICAgIDB4ODcsMHg4MiwweEEyLDB4MzAsMHhGQSwweDc4LDB4
NUMsMHg1QywweDIzLDB4NDEsMHhBMiwweDI4LDB4QUUsMHgzQiwweDM1LDB4ODcsCi0gICAgMHgw
NiwweDZBLDB4RTMsMHgzOCwweDBGLDB4RUIsMHhGRCwweDdGLDB4ODUsMHg1MSwweDAzLDB4Mzks
MHhBQiwweDQ5LDB4RkQsMHhGNSwKLSAgICAweEM4LDB4OEEsMHgyMywweDQxLDB4QTMsMHhGRCww
eDVELDB4RDUsMHhDOSwweDhBLDB4QzUsMHg2MSwweEUyLDB4OEIsMHhCNSwweDU3LAotICAgIDB4
RUMsMHhBQiwweDg0LDB4NTEsMHgzRiwweERGLDB4NTcsMHg1NSwweEY0LDB4RTUsMHgwNiwweDZB
LDB4MDAsMHgwOSwweDM1LDB4RDUsCi0gICAgMHg1NSwweEVFLDB4OTIsMHhENSwweDBBLDB4QUYs
MHhCRiwweEI1LDB4NTUsMHhFRSwweEIzLDB4REQsMHhCOCwweEJBLDB4QUEsMHhBRCwKLSAgICAw
eEI2LDB4RjYsMHhEMywweERELDB4NkEsMHhBMiwweEMzLDB4QUEsMHhGMywweERELDB4MkQsMHhB
QywweDVDLDB4ODAsMHhBOCwweDg4LAotICAgIDB4NDYsMHg3MiwweDYzLDB4NTksMHgyRCwweEQ1
LDB4NTUsMHg1NSwweDY2LDB4N0EsMHg0MywweDUxLDB4MDAsMHgwQiwweEQ1LDB4RDUsCi0gICAg
MHg4NywweDdBLDB4NjQsMHg1OSwweDAwLDB4MDAsMHgwQiwweEQ1LDB4Q0MsMHhBQiwweDg3LDB4
N0EsMHgxNSwweDI1LDB4MEQsMHhBOSwKLSAgICAweDI5LDB4OTMsMHhDMiwweDM4LDB4NUUsMHg1
RSwweDVDLDB4NUMsMHg0NCwweDQ5LDB4QzIsMHgzMCwweEY1LDB4QjUsMHg4MSwweDhBLAotICAg
IDB4ODQsMHg1MSwweEUyLDB4MzgsMHg1NywweEVGLDB4QkIsMHgwMywweEM2LDB4NjEsMHhBMiww
eDMwLDB4RkQsMHhGRiwweEZFLDB4RDgsCi0gICAgMHg2NSwweDQ5LDB4MDMsMHg0MSwweDJBLDB4
RjksMHhFMSwweEVELDB4QzYsMHg2MSwweDAzLDB4NDEsMHgwQSwweEU1LDB4RkYsMHg1RSwKLSAg
ICAweEE1LDB4NTEsMHgwMywweDM5LDB4QUEsMHhCRSwweDc1LDB4RkYsMHhBOCwweDgyLDB4MjMs
MHg0MSwweDJGLDB4QTUsMHgzRCwweEI1LAotICAgIDB4MTQsMHhFNiwweDg3LDB4N0EsMHgwMyww
eDA5LDB4ODUsMHhCNSwweDk2LDB4RUUsMHgxMCwweEM1LDB4QUYsMHgwRCwweDI1LDB4NzUsCi0g
ICAgMHg3NSwweEVFLDB4OEYsMHhCNCwweDAwLDB4MDAsMHgwMCwweDU3LDB4NTUsMHhFRSwweEYx
LDB4QkMsMHhFOCwweDgwLDB4QkEsMHg3RCwKLSAgICAweDg0LDB4NTksMHgyMywweDUxLDB4RkUs
MHhGNywweEFELDB4M0UsMHg4NCwweDU5LDB4MjMsMHg1MSwweDhCLDB4RUEsMHhGQywweDdFLAot
ICAgIDB4NkIsMHg5QiwweDIzLDB4NTEsMHg1NSwweDU1LDB4OTUsMHgzNSwweEFCLDB4QTMsMHg2
NywweDdBLDB4MjEsMHhBQSwweEE4LDB4QTAsCi0gICAgMHhFOCwweDhBLDB4MDMsMHg0MSwweDU4
LDB4NzgsMHhFOCwweEU4LDB4NjQsMHg1MSwweEUyLDB4MzgsMHhFQywweEU2LDB4QjcsMHhGNCwK
LSAgICAweDg1LDB4NTEsMHgwMywweDQxLDB4ODUsMHg4NSwweDM1LDB4OTUsMHhBNSwweDU5LDB4
QzMsMHgzMCwweERBLDB4REUsMHg1QywweERFLAotICAgIDB4QTUsMHg1OSwweDAzLDB4MzksMHhF
QiwweEZCLDB4NzAsMHg3QiwweDQ0LDB4NDEsMHhFMywweDM4LDB4RUEsMHhFQiwweEMxLDB4QTEs
Ci0gICAgMHg2NSwweDQxLDB4RTMsMHgzOCwweEIyLDB4RkYsMHhGRiwweERELDB4QzUsMHg1OSww
eDIzLDB4NDEsMHgzRiwweDNELDB4RkQsMHgzQiwKLSAgICAweDMxLDB4Q0QsMHgwNiwweDZBLDB4
MzUsMHhCNSwweEY1LDB4RDUsMHgzNSwweEU2LDB4QUYsMHhCQywweDdELDB4NTUsMHhBRSwweDgy
LAotICAgIDB4OTMsMHhDRCwweDRFLDB4QUMsMHgyRCwweDhBLDB4QTAsMHhBMCwweDMyLDB4QzUs
MHgwRSwweDlDLDB4QTAsMHhBQSwweEJFLDB4RUQsCi0gICAgMHg4NCwweDU5LDB4MjMsMHg1MSww
eDhCLDB4RkUsMHhGRSwweDU3LDB4NDMsMHg1OSwweDIzLDB4NDksMHhGMCwweDdDLDB4REQsMHhC
RCwKLSAgICAweEFCLDB4QTMsMHg0NCwweDU5LDB4MzUsMHgyNSwweDA1LDB4MDUsMHgwQywweEFD
LDB4RTgsMHg4QSwweDdCLDB4N0UsMHg3OCwweDZBLAotICAgIDB4QTcsMHg4MiwweDI2LDB4NkEs
MHg1NCwweEZFLDB4OUUsMHgzRiwweDY3LDB4N0EsMHhBMiwweDMwLDB4REMsMHg1OCwweDcwLDB4
NjAsCi0gICAgMHg0NCwweDQ5LDB4QzIsMHgzMCwweDJCLDB4QUYsMHg5NSwweEY1LDB4NjUsMHg1
MSwweEEyLDB4MzAsMHhGQywweERBLDB4RkUsMHg3QSwKLSAgICAweDQ0LDB4NDksMHhDMywweDMw
LDB4RTIsMHhFMiwweEYyLDB4NUIsMHgyNCwweDM5LDB4QzIsMHgzMCwweEMyLDB4RkYsMHhGRiww
eEZELAotICAgIDB4MDMsMHg0MSwweEUzLDB4MzAsMHhCQiwweEVBLDB4REYsMHgwQSwweEU2LDB4
NTksMHgwMywweDQxLDB4M0QsMHhCNSwweDU1LDB4NzcsCi0gICAgMHg4OCwweDdBLDB4NjQsMHg1
MSwweDJBLDB4MEUsMHgyRCwweDI1LDB4MTUsMHhERSwweDZCLDB4OTMsMHg4MiwweEEzLDB4QTks
MHhBOSwKLSAgICAweDczLDB4Q0QsMHhFRCwweDlCLDB4RTAsMHg2OCwweDdBLDB4RkUsMHgxMSww
eEJELDB4MkUsMHhBNCwweEZELDB4RjUsMHhFQSwweDJELAotICAgIDB4NDQsMHg1MSwweDAzLDB4
NDksMHhFQywweDlFLDB4RkYsMHhGRiwweDQzLDB4NTEsMHgwMywweDQ5LDB4MEEsMHg4MiwweEEy
LDB4NjIsCi0gICAgMHg2QSwweDkzLDB4MjMsMHg1MSwweDBELDB4OEQsMHhBOSwweEE5LDB4RTks
MHg4QSwweDQ2LDB4NzIsMHhGOCwweERGLDB4NUYsMHg3RiwKLSAgICAweEE3LDB4N0EsMHhDNCww
eDYxLDB4OEEsMHg3QSwweDdBLDB4REEsMHg2NywweDcyLDB4MDMsMHg0OSwweDZBLDB4Q0EsMHhD
QSwweDgwLAotICAgIDB4MjMsMHg0MSwweEEyLDB4MzAsMHhCOSwweDNELDB4MEQsMHhBMSwweDI0
LDB4NDEsMHg4MSwweDIwLDB4QzAsMHhFQSwweDdGLDB4NTcsCi0gICAgMHhFMywweDM4LDB4ODIs
MHgyMCwweEEyLDB4QkIsMHhBRCwweEJELDB4MDQsMHgzOSwweEMzLDB4MzAsMHhCMSwweEZCLDB4
RDUsMHhENSwKLSAgICAweDQ0LDB4NDksMHhFMiwweDMwLDB4ODIsMHhGQSwweEZGLDB4RjUsMHg0
NCwweDQxLDB4RTIsMHgzOCwweEJGLDB4OTUsMHhGRCwweEMzLAotICAgIDB4MjYsMHg2QSwweDAz
LDB4MzksMHgyRiwweDJELDB4QkQsMHhCNSwweEYxLDB4QkMsMHgwNiwweDYyLDB4MDMsMHhBMSww
eEE5LDB4QzksCi0gICAgMHgyRiwweEE0LDB4ODksMHg2MiwweDI4LDB4QUEsMHhGQSwweDU1LDB4
MTEsMHhCRCwweDBCLDB4N0IsMHgyRiwweEI1LDB4RjUsMHhGRCwKLSAgICAweDY0LDB4NTksMHgw
MiwweDQ5LDB4RjcsMHhFNywweEU5LDB4RjIsMHgwOSwweDhCLDB4MjMsMHg0OSwweDU1LDB4NTUs
MHg5NSwweDE1LAotICAgIDB4NDksMHg5MywweDg0LDB4NTksMHhBOSwweEFBLDB4QTgsMHgyOCww
eEFCLDB4QTMsMHhFNSwweDYxLDB4RkYsMHhBRiwweDYyLDB4N0MsCi0gICAgMHhDNywweDgyLDB4
NDQsMHg0OSwweEUwLDB4N0UsMHg1RiwweDU3LDB4MDYsMHg2QSwweEUyLDB4MzgsMHgwMCwweEZG
LDB4N0YsMHg3QSwKLSAgICAweDAzLDB4NDEsMHg2MSwweDE4LDB4QTgsMHhGOCwweDdFLDB4REYs
MHhFMywweDMwLDB4ODEsMHgyMCwweEI1LDB4MEQsMHhBRiwweDJFLAotICAgIDB4RTIsMHgzMCww
eEEyLDB4MjgsMHg1NSwweDZCLDB4RjgsMHhDQiwweDAzLDB4MzksMHhBMiwweDI4LDB4MkYsMHhG
NSwweERELDB4RjcsCi0gICAgMHgyMywweDM5LDB4QzIsMHgzMCwweEVCLDB4QUYsMHg4RCwweEZE
LDB4NjQsMHg0OSwweEUyLDB4MzAsMHg4QiwweENELDB4Q0QsMHg3RCwKLSAgICAweDg0LDB4NTEs
MHhFMiwweDMwLDB4MkYsMHhCRiwweDM3LDB4QkQsMHhEMSwweEI0LDB4ODUsMHg1MSwweDA5LDB4
MEQsMHgyRCwweEE1LAotICAgIDB4MTEsMHhCRCwweEFDLDB4OEIsMHg1NywweEYwLDB4QTgsMHhB
QiwweDZGLDB4QUMsMHhDRCwweDkzLDB4QjksMHhBOCwweDgwLDB4QTAsCi0gICAgMHg2NCwweDU5
LDB4MDIsMHg0MSwweEYyLDB4NUIsMHg1NywweDVELDB4NjksMHg5MywweDAyLDB4NDEsMHgxNSww
eDM1LDB4MzUsMHhENSwKLSAgICAweDY5LDB4OTMsMHg4NCwweDU5LDB4MDgsMHg4MCwweEY4LDB4
NUYsMHg2NiwweDcyLDB4NDMsMHg0OSwweEUwLDB4NTAsMHg1RSwweDc3LAotICAgIDB4QTUsMHg1
MSwweDAzLDB4NDEsMHhGQSwweDdBLDB4N0EsMHgyRSwweEM1LDB4NTksMHhDMiwweDMwLDB4NTgs
MHhEQiwweDdGLDB4NUUsCi0gICAgMHhFMywweDMwLDB4NjEsMHgyMCwweDNFLDB4MjcsMHhGRiww
eEVBLDB4MDMsMHgzOSwweDgxLDB4MjAsMHhCMiwweEEyLDB4QUQsMHgwNiwKLSAgICAweEUzLDB4
MzAsMHhBMiwweDI4LDB4MDAsMHhGMiwweDdCLDB4RUYsMHhFMywweDMwLDB4ODIsMHgyOCwweEZF
LDB4QTAsMHgyQSwweDAyLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhENSwweDVGLDB4NUUs
MHg3MywweDAzLDB4MzEsMHhDMiwweDI4LDB4RUIsMHhGQSwweEY5LDB4QUQsCi0gICAgMHg2NCww
eDQ5LDB4RTMsMHgzMCwweEI1LDB4OTUsMHgzRCwweDI1LDB4MEQsMHhBNCwweEE1LDB4NTEsMHg4
RCwweDI5LDB4RTksMHgwMywKLSAgICAweDZGLDB4QUMsMHhBOSwweDcyLDB4MkEsMHhBQiwweDU1
LDB4NTcsMHgyRSwweDlDLDB4QTgsMHg3MiwweDIwLDB4QUEsMHhBQiwweEI1LAotICAgIDB4MjMs
MHg0OSwweDAzLDB4NDEsMHhENSwweEY1LDB4REQsMHhGRCwweDIzLDB4NDksMHhFMiwweDQwLDB4
MzgsMHhGRSwweERGLDB4NTUsCi0gICAgMHhBNCwweDU5LDB4RTIsMHg0MCwweDFDLDB4MTUsMHgx
RCwweDE1LDB4RTUsMHg2MSwweDIzLDB4MzksMHhFQSwweDc4LDB4NTgsMHg1QywKLSAgICAweEU1
LDB4NjEsMHhBMiwweDMwLDB4QzIsMHg3MywweDZGLDB4N0YsMHg0NCwweDQ5LDB4ODEsMHgyMCww
eEY4LDB4N0EsMHg1NywweEZGLAotICAgIDB4MjQsMHg0MSwweEEyLDB4MjgsMHgzRCwweEE1LDB4
N0YsMHg3RiwweDIzLDB4NDksMHg4MSwweDIwLDB4MkEsMHhBQSwweEI3LDB4REQsCi0gICAgMHgw
MywweDM5LDB4QTIsMHgyOCwweEFDLDB4N0MsMHhEOCwweEYzLDB4MDMsMHgzOSwweEEyLDB4Mjgs
MHhCRiwweDdELDB4NzUsMHhDQiwKLSAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4OEEsMHhBMyww
eDhELDB4N0MsMHgwMywweDM5LDB4QTEsMHgyOCwweEFCLDB4QTIsMHgwRiwweEE3LAotICAgIDB4
QzksMHg3QSwweDAzLDB4MzksMHhENSwweDE1LDB4MzUsMHgzRCwweDEwLDB4QzUsMHgyQSwweDgz
LDB4MkEsMHg4MCwweDBBLDB4QjUsCi0gICAgMHhEMCwweEJDLDB4QTgsMHg3MiwweDVFLDB4NTgs
MHhBMCwweEEwLDB4MkQsMHhBNCwweDA2LDB4NUEsMHhERiwweDdCLDB4RUEsMHgwMCwKLSAgICAw
eDAzLDB4NDEsMHhFMiwweDM4LDB4MDMsMHg3QSwweEZDLDB4NzcsMHgwMywweDQ5LDB4RTIsMHgz
OCwweEZELDB4N0QsMHg1NSwweERELAotICAgIDB4ODQsMHg1OSwweEUyLDB4MzgsMHgxNSwweDk1
LDB4OTUsMHg5NSwweDQ2LDB4NkEsMHgwMywweDM5LDB4NUMsMHg1QywweDVDLDB4NTQsCi0gICAg
MHgyNCwweDM5LDB4RTMsMHgzMCwweENBLDB4MEIsMHhBNywweEY1LDB4MjMsMHgzOSwweEUyLDB4
MzAsMHhGRiwweEFDLDB4QkEsMHgzRiwKLSAgICAweDIzLDB4MzksMHhFMywweDMwLDB4NTcsMHg1
RSwweEVFLDB4QjgsMHgwMywweDMxLDB4QTIsMHgyMCwweDU3LDB4RkEsMHhBMCwweDAwLAotICAg
IDB4RTMsMHgzMCwweDgxLDB4MjAsMHgyQiwweEJGLDB4RkEsMHhBMCwweDQ0LDB4NDEsMHhBMiww
eDI4LDB4QUIsMHhGRiwweEZGLDB4RDUsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweERGLDB4
QkIsMHhBQSwweDJBLDB4NjQsMHg0OSwweEMyLDB4MjgsMHhCNSwweEJGLDB4QkUsMHgzNywKLSAg
ICAweEE5LDB4NzIsMHg0NCwweDQ5LDB4MjUsMHgwOSwweDBCLDB4MkEsMHgwQSwweDgzLDB4QTks
MHg3MiwweDBBLDB4OEYsMHhGRCwweEY1LAotICAgIDB4NkYsMHhBQywweEVBLDB4N0EsMHgyQiww
eEY1LDB4NTUsMHg1NSwweDZFLDB4QUMsMHgwQSwweDgzLDB4MDAsMHgwMiwweDM1LDB4NTUsCi0g
ICAgMHgwMywweDQxLDB4RTIsMHgzOCwweEY1LDB4NTUsMHg3RiwweDU1LDB4RTIsMHgzOCwweEMy
LDB4MzgsMHhBMywweDIwLDB4QTIsMHg4QSwKLSAgICAweDQzLDB4NDksMHhBMiwweDMwLDB4QkYs
MHhGRiwweDFGLDB4RjcsMHg2NiwweDZBLDB4RTMsMHgzMCwweDVFLDB4NUUsMHg1QywweDU3LAot
ICAgIDB4RTMsMHgzMCwweEMzLDB4MzAsMHgwMywweDAyLDB4MDAsMHg4MCwweDAzLDB4MzEsMHhF
MywweDMwLDB4M0YsMHhCRiwweEQ1LDB4N0YsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzMCwweEVB
LDB4QkIsMHg3RCwweEQ1LDB4MDMsMHgzOSwweDA0LDB4MzEsMHhCQSwweEEwLDB4MEEsMHgyQiwK
LSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4NUUsMHhFQiwweEJBLDB4MkEsMHg0NCwweDQxLDB4
QTIsMHgyMCwweDVGLDB4RkIsMHhBMiwweDBBLAotICAgIDB4NjUsMHg0OSwweEEyLDB4MjgsMHhE
NSwweEZGLDB4QUIsMHgwMCwweDQ4LDB4NkEsMHgwMywweDMxLDB4QjUsMHhBNSwweDJCLDB4MEEs
Ci0gICAgMHhBOSwweDcyLDB4MDYsMHg2MiwweDJELDB4MjksMHhBQiwweEFCLDB4QzksMHg3QSww
eDg4LDB4NkEsMHgyQiwweEFCLDB4RUQsMHg3RSwKLSAgICAweEU5LDB4N0EsMHg4OCwweDcyLDB4
QUUsMHgyQSwweEJCLDB4RUQsMHgwQSwweDgzLDB4QTksMHg3MiwweDJCLDB4QUYsMHhFRiwweEZE
LAotfTsKLQotc3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF80X3dpZHRoID0gMzI7Ci1zdGF0aWMg
Y29uc3Qgc2l6ZV90IHBpeGVsXzRfaGVpZ2h0ID0gMzI7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHBp
eGVsXzRfc2l6ZSA9IDUxMjsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHBpeGVsXzRfZGF0
YVs1MTJdID0KLXsKLSAgICAweEQ3LDB4RjYsMHhBNCwweDQ5LDB4NTUsMHg1NSwweEFBLDB4MDAs
MHg3NSwweEVFLDB4QTUsMHg1MSwweDU1LDB4NTUsMHg3MCwweDcwLAotICAgIDB4QjYsMHhGNiww
eDg1LDB4NDksMHg1NSwweERELDB4MDIsMHgwMywweEY3LDB4RkUsMHhFNiwweDU5LDB4NTUsMHhG
RiwweEYwLDB4OUMsCi0gICAgMHhGNywweEY2LDB4ODUsMHg0OSwweDU1LDB4QUEsMHgwMCwweDAw
LDB4OTYsMHhFRSwweDQ2LDB4NUEsMHgwOSwweDAyLDB4MDAsMHgwMCwKLSAgICAweEY4LDB4RjYs
MHg3NSwweEVFLDB4MEIsMHgyNywweDBBLDB4ODIsMHhENywweEVFLDB4QjIsMHhENSwweEY4LDB4
RDgsMHhENiwweDk2LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg0QSwweDgyLDB4MDAsMHgw
MiwweEQ2LDB4RjYsMHg0MywweDQ5LDB4NzAsMHg2MCwweEUwLDB4NzAsCi0gICAgMHg4RiwweEJD
LDB4MDIsMHg0MSwweDA5LDB4RkYsMHhGRiwweEJELDB4QjYsMHhGNiwweDQ3LDB4ODIsMHgxNyww
eDE1LDB4MzcsMHgwNywKLSAgICAweDE4LDB4RkYsMHg5NSwweEVFLDB4NjgsMHg3MCwweEFFLDB4
MEMsMHhGNywweEY2LDB4MzUsMHhFNiwweDgzLDB4MjEsMHgwQiwweDA4LAotICAgIDB4RjcsMHhG
NiwweDU1LDB4RTYsMHhDMiwweEMwLDB4NjAsMHg2RSwweDc1LDB4RUUsMHg1MSwweENELDB4MUMs
MHgzRSwweDI2LDB4QjYsCi0gICAgMHhCNiwweEY2LDB4QTcsMHg3QSwweDJGLDB4NTUsMHg1NSww
eDU1LDB4OTUsMHhGNiwweDAyLDB4NDksMHg3MCwweDZBLDB4N0YsMHg3RiwKLSAgICAweDQ3LDB4
N0EsMHhFMywweDM4LDB4OUIsMHhGOCwweEYwLDB4NkIsMHhGMywweEU1LDB4QTUsMHg1OSwweDNG
LDB4RjUsMHg3NSwweDU1LAotICAgIDB4RDcsMHhGNiwweDQ3LDB4N0EsMHgwMCwweDAwLDB4MEIs
MHhCNSwweEY4LDB4RjYsMHhCMywweEQ1LDB4MDAsMHg4MCwweDgwLDB4QTksCi0gICAgMHg3Niww
eEVFLDB4RjQsMHhERCwweDQwLDB4NDAsMHg0OCwweDcwLDB4QjMsMHhENSwweENDLDB4OUIsMHgy
OCwweEE4LDB4QUUsMHhEOCwKLSAgICAweDY2LDB4NzIsMHg0MywweDU5LDB4MDAsMHgwMCwweDJE
LDB4RDcsMHg4QSwweEEzLDB4RTUsMHg2OSwweEZGLDB4QkYsMHgzRiwweDI1LAotICAgIDB4MDYs
MHg2QSwweEMyLDB4MzAsMHhEQywweDU0LDB4RDQsMHhGNCwweEM1LDB4NjEsMHgwMywweDM5LDB4
RjMsMHhERiwweDU1LDB4N0YsCi0gICAgMHg2NywweDdBLDB4NDQsMHg0OSwweDBFLDB4QTUsMHhE
NSwweDU1LDB4NzIsMHhERCwweDQzLDB4NDksMHgyRiwweEI1LDB4RDUsMHg1NSwKLSAgICAweDE0
LDB4RTYsMHhFOCwweDgyLDB4MDAsMHgwMCwweDIzLDB4MjksMHg1NSwweEU2LDB4RjAsMHhCQyww
eDYwLDB4RTAsMHg4MCwweEZFLAotICAgIDB4NjMsMHg1OSwweDIzLDB4NTEsMHgwQSwweEUzLDB4
NzIsMHg1NiwweENCLDB4QTMsMHg0NCwweDU5LDB4MjUsMHg4RCwweDg5LDB4ODEsCi0gICAgMHg4
NywweDdBLDB4MjMsMHg0MSwweDU0LDB4NTgsMHg2OCwweDYwLDB4NjUsMHg1MSwweEMyLDB4MzAs
MHg0MywweDRCLDB4NkIsMHg2RCwKLSAgICAweDY0LDB4NDksMHhFMywweDMwLDB4RTgsMHhCOCww
eDdFLDB4NTcsMHg4NSwweDUxLDB4RTMsMHgzOCwweDJGLDB4MjcsMHgzRCwweEY1LAotICAgIDB4
OTMsMHhENSwweDg0LDB4NTksMHg4RiwweDBELDB4MEQsMHgyRCwweDcyLDB4Q0QsMHg0RSwweEE0
LDB4RUEsMHhGOCwweDVDLDB4RjcsCi0gICAgMHhDNSwweDYxLDB4MjMsMHg0OSwweEQ1LDB4NzUs
MHg1NSwweDE3LDB4MjksMHg4QiwweEM1LDB4NjEsMHhFMSwweEI5LDB4QUIsMHhDOCwKLSAgICAw
eDY3LDB4N0EsMHgyMywweDQxLDB4RTAsMHhBQywweEY4LDB4N0YsMHgwMywweDM5LDB4ODEsMHgy
MCwweDgyLDB4NzIsMHg5RSwweEI3LAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHgwQiwweEFE
LDB4M0YsMHhGRSwweDQ0LDB4NDksMHhFMiwweDMwLDB4RkEsMHhCRiwweDNELDB4RkQsCi0gICAg
MHhEMSwweEJDLDB4NDMsMHg0MSwweDJELDB4QjUsMHgzNSwweEI1LDB4NEYsMHhBNCwweEVBLDB4
NzIsMHgzQSwweEI1LDB4ODgsMHgwMCwKLSAgICAweDg3LDB4N0EsMHgwMiwweDQxLDB4MTcsMHg5
NSwweDU1LDB4NTUsMHgyOSwweDkzLDB4MjMsMHg0OSwweEUwLDB4N0UsMHg3NSwweDc1LAotICAg
IDB4NjQsMHg1MSwweEEyLDB4MjgsMHhDOCwweEUwLDB4NjgsMHg1RSwweDAzLDB4NDEsMHg4Miww
eDIwLDB4QUQsMHhCRiwweDIzLDB4RkYsCi0gICAgMHhFMywweDM4LDB4QzIsMHgyOCwweDdFLDB4
QjcsMHg1RSwweEZDLDB4RTMsMHgzMCwweEMyLDB4MjgsMHgwRiwweDM4LDB4MEEsMHgxNSwKLSAg
ICAweEFGLDB4QjQsMHgwMywweDM5LDB4QjUsMHhBNSwweDA1LDB4MkQsMHhBRiwweEI0LDB4Mjcs
MHg1QSwweEFBLDB4QkYsMHg3RSwweEE4LAotICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHhGQSww
eDdGLDB4NUQsMHg1NSwweEE1LDB4NTEsMHhFMiwweDM4LDB4Q0QsMHg0RCwweDQ1LDB4NDUsCi0g
ICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweEUyLDB4QkQsMHhGNSwweDU1LDB4MDMsMHgzOSwweEMy
LDB4MjgsMHg1QSwweEEwLDB4MDAsMHgwQSwKLSAgICAweDI0LDB4MzksMHhBMiwweDI4LDB4QkQs
MHhERiwweEVBLDB4MDgsMHgyNywweDYyLDB4QzIsMHgyOCwweEQ1LDB4REQsMHhCNSwweDJGLAot
ICAgIDB4MEEsMHg4MywweEE1LDB4NTEsMHgwOSwweEFCLDB4MkIsMHhBQiwweDZFLDB4QUMsMHhD
OSwweDdBLDB4MEIsMHhENSwweEQ1LDB4NTUsCi19OwotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IHBp
eGVsXzVfd2lkdGggPSAxNjsKLXN0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfNV9oZWlnaHQgPSAx
NjsKLXN0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfNV9zaXplID0gMTI4Owotc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGNoYXIgcGl4ZWxfNV9kYXRhWzEyOF0gPQotewotICAgIDB4OTYsMHhFRSwweDY0
LDB4NDksMHg1NSwweEMwLDB4QzAsMHhDMCwweDU1LDB4RUUsMHg0NywweDZBLDB4NTUsMHhDMiww
eDlELDB4MzUsCi0gICAgMHhENywweEY2LDB4OEIsMHg4QiwweDM1LDB4MDAsMHgwMCwweDAwLDB4
RDcsMHhGNiwweEIyLDB4RDUsMHhFMCwweEYwLDB4RjAsMHhEOCwKLSAgICAweDcxLDB4Q0QsMHg0
MywweDU5LDB4QzMsMHg3RiwweEZGLDB4RjUsMHg2QSwweDlCLDB4RTMsMHgzOCwweDJGLDB4RkYs
MHhENywweDU3LAotICAgIDB4RjcsMHhGNiwweEM1LDB4NTksMHgwMCwweDBCLDB4RDUsMHg1NSww
eDc2LDB4RUUsMHhBRiwweEI0LDB4RjAsMHg3OCwweEMyLDB4QUQsCi0gICAgMHg0OSwweDkzLDB4
NDMsMHg1MSwweDE1LDB4MjUsMHhCNSwweEE1LDB4MjYsMHg2QSwweEMyLDB4MzAsMHhGQywweDU4
LDB4NTAsMHg1QSwKLSAgICAweDY0LDB4NTEsMHhDMiwweDI4LDB4MkMsMHhCRiwweEZELDB4QjUs
MHhEMCwweEI0LDB4NDMsMHg0OSwweDAzLDB4MDMsMHhBOSwweDg5LAotICAgIDB4QzgsMHg4Miww
eDAyLDB4NDEsMHhDRCwweEQ1LDB4RDUsMHg1NSwweDQ0LDB4NDEsMHhBMiwweDI4LDB4RDgsMHhG
QywweEZBLDB4QUYsCi0gICAgMHg4NSwweDQ5LDB4QzIsMHgzMCwweEQ1LDB4NTUsMHhGNSwweDNG
LDB4MEQsMHhBNCwweDY0LDB4NDksMHhBOSwweDgxLDB4MkIsMHhFRiwKLX07Ci0KLXN0YXRpYyBj
b25zdCBzaXplX3QgcGl4ZWxfNl93aWR0aCA9IDg7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVs
XzZfaGVpZ2h0ID0gODsKLXN0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfNl9zaXplID0gMzI7Ci1z
dGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwaXhlbF82X2RhdGFbMzJdID0KLXsKLSAgICAweDM0
LDB4RTYsMHg2NCwweDUxLDB4RUYsMHhCOCwweERCLDB4NUQsMHhCNywweEY2LDB4NDcsMHg2QSww
eDAyLDB4ODAsMHg4MiwweEE1LAotICAgIDB4NjcsMHg3QSwweEMyLDB4MzAsMHhFMywweDYzLDB4
N0IsMHg1RCwweEYxLDB4QkMsMHgwMywweDM5LDB4MjUsMHhCNSwweEI1LDB4QjUsCi19OwotCi1z
dGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzdfd2lkdGggPSA0Owotc3RhdGljIGNvbnN0IHNpemVf
dCBwaXhlbF83X2hlaWdodCA9IDQ7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzdfc2l6ZSA9
IDg7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwaXhlbF83X2RhdGFbOF0gPQotewotICAg
IDB4MTQsMHhERSwweDQ0LDB4NDksMHgwQSwweDI3LDB4RDUsMHhENSwKLX07Ci0KLXN0YXRpYyBj
b25zdCBzaXplX3QgcGl4ZWxfOF93aWR0aCA9IDI7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVs
XzhfaGVpZ2h0ID0gMjsKLXN0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfOF9zaXplID0gODsKLXN0
YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHBpeGVsXzhfZGF0YVs4XSA9Ci17Ci0gICAgMHg5Miww
eENELDB4NDQsMHg0OSwweDMzLDB4REQsMHgzMywweERELAotfTsKLQotc3RhdGljIGNvbnN0IHNp
emVfdCBwaXhlbF85X3dpZHRoID0gMTsKLXN0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfOV9oZWln
aHQgPSAxOwotc3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF85X3NpemUgPSA4Owotc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGNoYXIgcGl4ZWxfOV9kYXRhWzhdID0KLXsKLSAgICAweDJBLDB4ODMsMHgw
QSwweDgzLDB4RkIsMHhFRiwweEVFLDB4RUYsCi19OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvZ2VuZXJhdGVfZ2xl
c19jb25mb3JtYW5jZV90ZXN0cy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2dlbmVyYXRlX2dsZXNfY29uZm9ybWFuY2VfdGVzdHMu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlZDMxM2ExNjlhZTkwYjViZmU3NGFl
NGI4MTQwMzg3ODMzZWM4ZGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXNfY29uZm9ybWFu
Y2VfdGVzdHMvZ2VuZXJhdGVfZ2xlc19jb25mb3JtYW5jZV90ZXN0cy5weQorKysgL2Rldi9udWxs
CkBAIC0xLDY4ICswLDAgQEAKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi0KLWRl
ZiBSZWFkRmlsZUFzTGluZXMoZmlsZW5hbWUpOgotICAgICIiIlJlYWRzIGEgZmlsZSwgcmVtb3Zp
bmcgYmxhbmsgbGluZXMgYW5kIGxpbmVzIHRoYXQgc3RhcnQgd2l0aCAjIiIiCi0gICAgZmlsZSA9
IG9wZW4oZmlsZW5hbWUsICJyIikKLSAgICByYXdfbGluZXMgPSBmaWxlLnJlYWRsaW5lcygpCi0g
ICAgZmlsZS5jbG9zZSgpCi0gICAgbGluZXMgPSBbXQotICAgIGZvciBsaW5lIGluIHJhd19saW5l
czoKLSAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQotICAgICAgICBpZiBsZW4obGluZSkgPiAw
IGFuZCBub3QgbGluZS5zdGFydHN3aXRoKCIjIik6Ci0gICAgICAgICAgICBsaW5lcy5hcHBlbmQo
bGluZSkKLSAgICByZXR1cm4gbGluZXMKLQotZGVmIEdldFN1aXRlTmFtZSh0ZXN0TmFtZSk6Ci0g
ICAgcmV0dXJuIHRlc3ROYW1lWzp0ZXN0TmFtZS5maW5kKCIvIildCi0KLWRlZiBHZXRUZXN0TmFt
ZSh0ZXN0TmFtZSk6Ci0gICAgcmVwbGFjZW1lbnRzID0geyAiLnRlc3QiOiAiIiwgIi4iOiAiXyIg
fQotICAgIHNwbGl0VGVzdE5hbWUgPSB0ZXN0TmFtZS5zcGxpdCgiLyIpCi0gICAgY2xlYW5OYW1l
ID0gc3BsaXRUZXN0TmFtZVstMl0gKyAiXyIgKyBzcGxpdFRlc3ROYW1lWy0xXQotICAgIGZvciBy
ZXBsYWNlS2V5IGluIHJlcGxhY2VtZW50czoKLSAgICAgICAgY2xlYW5OYW1lID0gY2xlYW5OYW1l
LnJlcGxhY2UocmVwbGFjZUtleSwgcmVwbGFjZW1lbnRzW3JlcGxhY2VLZXldKQotICAgIHJldHVy
biBjbGVhbk5hbWUKLQotZGVmIEdlbmVyYXRlVGVzdHMob3V0RmlsZSwgdGVzdE5hbWVzKToKLSAg
ICAjIFJlbW92ZSBkdXBsaWNhdGUgdGVzdHMKLSAgICB0ZXN0TmFtZXMgPSBsaXN0KHNldCh0ZXN0
TmFtZXMpKQotICAgIHRlc3RTdWl0ZXMgPSBbXQotCi0gICAgb3V0RmlsZS53cml0ZSgiI2luY2x1
ZGUgXCJnbGVzX2NvbmZvcm1hbmNlX3Rlc3RzLmhcIlxuXG4iKQotCi0gICAgZm9yIHRlc3QgaW4g
dGVzdE5hbWVzOgotICAgICAgICB0ZXN0U3VpdGUgPSBHZXRTdWl0ZU5hbWUodGVzdCkKLSAgICAg
ICAgaWYgbm90IHRlc3RTdWl0ZSBpbiB0ZXN0U3VpdGVzOgotICAgICAgICAgICAgb3V0RmlsZS53
cml0ZSgiREVGSU5FX0NPTkZPUk1BTkNFX1RFU1RfQ0xBU1MoIiArIHRlc3RTdWl0ZSArICIpO1xu
XG4iKQotICAgICAgICAgICAgdGVzdFN1aXRlcy5hcHBlbmQodGVzdFN1aXRlKQotCi0gICAgICAg
IG91dEZpbGUud3JpdGUoIlRZUEVEX1RFU1QoIiArIHRlc3RTdWl0ZSArICIsICIgKyBHZXRUZXN0
TmFtZSh0ZXN0KSArICIpXG4iKQotICAgICAgICBvdXRGaWxlLndyaXRlKCJ7XG4iKQotICAgICAg
ICBvdXRGaWxlLndyaXRlKCIgICAgcnVuKFwiIiArIHRlc3QgKyAiXCIpO1xuIikKLSAgICAgICAg
b3V0RmlsZS53cml0ZSgifVxuXG4iKQotCi1kZWYgR2VuZXJhdGVUZXN0TGlzdChzb3VyY2VGaWxl
LCByb290RGlyKToKLSAgICB0ZXN0cyA9IFsgXQotICAgIGZpbGVOYW1lLCBmaWxlRXh0ZW5zaW9u
ID0gb3MucGF0aC5zcGxpdGV4dChzb3VyY2VGaWxlKQotICAgIGlmIGZpbGVFeHRlbnNpb24gPT0g
Ii5ydW4iOgotICAgICAgICBsaW5lcyA9IFJlYWRGaWxlQXNMaW5lcyhzb3VyY2VGaWxlKQotICAg
ICAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgICAgIHRlc3RzICs9IEdlbmVyYXRlVGVz
dExpc3Qob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShzb3VyY2VGaWxlKSwgbGluZSksIHJv
b3REaXIpCi0gICAgZWxpZiBmaWxlRXh0ZW5zaW9uID09ICIudGVzdCI6Ci0gICAgICAgIHRlc3Rz
LmFwcGVuZChvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5yZWFscGF0aChzb3VyY2VGaWxlKSwgcm9v
dERpcikucmVwbGFjZSgiXFwiLCAiLyIpKQotICAgIHJldHVybiB0ZXN0czsKLQotZGVmIG1haW4o
YXJndik6Ci0gICAgdGVzdHMgPSBHZW5lcmF0ZVRlc3RMaXN0KGFyZ3ZbMF0sIGFyZ3ZbMV0pCi0g
ICAgdGVzdHMuc29ydCgpCi0KLSAgICBvdXRwdXQgPSBvcGVuKGFyZ3ZbMl0sICd3YicpCi0gICAg
R2VuZXJhdGVUZXN0cyhvdXRwdXQsIHRlc3RzKQotICAgIG91dHB1dC5jbG9zZSgpCi0KLSAgICBy
ZXR1cm4gMAotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHN5cy5leGl0KG1haW4o
c3lzLmFyZ3ZbMTpdKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMv
Z2xlc19jb25mb3JtYW5jZV90ZXN0cy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDBhMTZiYzZiMDc1YWIzOWExYjFmZDc3MGMyZGQzYmQ2ODliOTZhOGMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0jaW5jbHVkZSAiZ2xlc19jb25mb3Jt
YW5jZV90ZXN0cy5oIgotI2luY2x1ZGUgIkdURk1haW4uaCIKLQotI2luY2x1ZGUgPHN0ZGlvLmg+
Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgPHNzdHJl
YW0+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0KLXN0YXRpYyBzdGQ6OnZlY3RvcjxjaGFyPiBGb3Jt
YXRBcmcoY29uc3QgY2hhciogZm10LCAuLi4pCi17Ci0gICAgdmFfbGlzdCB2YXJhcmc7Ci0gICAg
dmFfc3RhcnQodmFyYXJnLCBmbXQpOwotICAgIGludCBsZW4gPSB2c25wcmludGYoTlVMTCwgMCwg
Zm10LCB2YXJhcmcpOwotICAgIHZhX2VuZCh2YXJhcmcpOwotCi0gICAgc3RkOjp2ZWN0b3I8Y2hh
cj4gYnVmKGxlbiArIDEpOwotCi0gICAgdmFfc3RhcnQodmFyYXJnLCBmbXQpOwotICAgIHZzbnBy
aW50ZihidWYuZGF0YSgpLCBidWYuc2l6ZSgpLCBmbXQsIHZhcmFyZyk7Ci0gICAgdmFfZW5kKHZh
cmFyZyk7Ci0KLSAgICByZXR1cm4gYnVmOwotfQotCi1zdGF0aWMgc3RkOjpzdHJpbmcgR2V0RXhl
Y3V0YWJsZURpcmVjdG9yeSgpCi17Ci0gICAgc3RkOjp2ZWN0b3I8Y2hhcj4gZXhlY3V0YWJsZUZp
bGVCdWYoTUFYX1BBVEgpOwotICAgIERXT1JEIGV4ZWN1dGFibGVQYXRoTGVuID0gR2V0TW9kdWxl
RmlsZU5hbWVBKE5VTEwsIGV4ZWN1dGFibGVGaWxlQnVmLmRhdGEoKSwgZXhlY3V0YWJsZUZpbGVC
dWYuc2l6ZSgpKTsKLSAgICBpZiAoZXhlY3V0YWJsZVBhdGhMZW4gPT0gMCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0cmluZyBleGVjdXRhYmxlTG9j
YXRpb24gPSBleGVjdXRhYmxlRmlsZUJ1Zi5kYXRhKCk7Ci0gICAgc2l6ZV90IGxhc3RQYXRoU2Vw
TG9jID0gZXhlY3V0YWJsZUxvY2F0aW9uLmZpbmRfbGFzdF9vZigiXFwvIik7Ci0gICAgaWYgKGxh
c3RQYXRoU2VwTG9jICE9IHN0ZDo6c3RyaW5nOjpucG9zKQotICAgIHsKLSAgICAgICAgZXhlY3V0
YWJsZUxvY2F0aW9uID0gZXhlY3V0YWJsZUxvY2F0aW9uLnN1YnN0cigwLCBsYXN0UGF0aFNlcExv
Yyk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGV4ZWN1dGFibGVMb2NhdGlvbiA9
ICIiOwotICAgIH0KLQotICAgIHJldHVybiBleGVjdXRhYmxlTG9jYXRpb247Ci19Ci0KLXZvaWQg
UnVuQ29uZm9ybWFuY2VUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0ZXN0UGF0aCwgRUdMTmF0aXZl
RGlzcGxheVR5cGUgbmF0aXZlRGlzcGxheSkKLXsKLSAgICBzdGQ6OnZlY3RvcjxjaGFyKj4gYXJn
czsKLQotICAgIC8vIEVtcHR5IGZpcnN0IGFyZ3VtZW50IGZvciB0aGUgcHJvZ3JhbSBuYW1lCi0g
ICAgYXJncy5wdXNoX2JhY2soIiIpOwotCi0gICAgc3RkOjp2ZWN0b3I8Y2hhcj4gd2lkdGhBcmcg
PSBGb3JtYXRBcmcoIi13aWR0aD0ldSIsIDY0KTsKLSAgICBhcmdzLnB1c2hfYmFjayh3aWR0aEFy
Zy5kYXRhKCkpOwotCi0gICAgc3RkOjp2ZWN0b3I8Y2hhcj4gaGVpZ2h0QXJnID0gRm9ybWF0QXJn
KCItaGVpZ2h0PSV1IiwgNjQpOwotICAgIGFyZ3MucHVzaF9iYWNrKGhlaWdodEFyZy5kYXRhKCkp
OwotCi0gICAgc3RkOjp2ZWN0b3I8Y2hhcj4gZGlzcGxheUFyZyA9IEZvcm1hdEFyZygiLWQ9JWxs
dSIsIG5hdGl2ZURpc3BsYXkpOwotICAgIGFyZ3MucHVzaF9iYWNrKGRpc3BsYXlBcmcuZGF0YSgp
KTsKLQotICAgIHN0ZDo6dmVjdG9yPGNoYXI+IHJ1bkFyZyA9IEZvcm1hdEFyZygiLXJ1bj0lcy9j
b25mb3JtYW5jZV90ZXN0cy8lcyIsIEdldEV4ZWN1dGFibGVEaXJlY3RvcnkoKS5jX3N0cigpLCB0
ZXN0UGF0aC5jX3N0cigpKTsKLSAgICBhcmdzLnB1c2hfYmFjayhydW5BcmcuZGF0YSgpKTsKLQot
ICAgIC8vIFJlZGlyZWN0IGNvdXQKLSAgICBzdGQ6OnN0cmVhbWJ1Ziogb2xkQ291dFN0cmVhbUJ1
ZiA9IHN0ZDo6Y291dC5yZGJ1ZigpOwotICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBzdHJDb3V0Owot
ICAgIHN0ZDo6Y291dC5yZGJ1ZihzdHJDb3V0LnJkYnVmKCkpOwotCi0gICAgaWYgKEdURk1haW4o
YXJncy5zaXplKCksIGFyZ3MuZGF0YSgpKSAhPSAwKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8
ICJHVEZNYWluIGZhaWxlZC4iOwotICAgIH0KLQotICAgIC8vIFJlc3RvcmUgb2xkIGNvdXQKLSAg
ICBzdGQ6OmNvdXQucmRidWYob2xkQ291dFN0cmVhbUJ1Zik7Ci0gICAgc3RkOjpzdHJpbmcgbG9n
ID0gc3RyQ291dC5zdHIoKTsKLQotICAgIC8vIExvb2sgZm9yIGZhaWx1cmVzCi0gICAgc2l6ZV90
IG9mZnNldCA9IDA7Ci0gICAgc3RkOjpzdHJpbmcgb2Zmc2V0U2VhcmNoU3RyaW5nID0gImZhaWx1
cmUgPSAiOwotICAgIHdoaWxlICgob2Zmc2V0ID0gbG9nLmZpbmQoImZhaWx1cmUgPSAiLCBvZmZz
ZXQpKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykKLSAgICB7Ci0gICAgICAgIG9mZnNldCArPSBvZmZz
ZXRTZWFyY2hTdHJpbmcubGVuZ3RoKCk7Ci0KLSAgICAgICAgc2l6ZV90IGZhaWx1cmVDb3VudCA9
IGF0b2xsKGxvZy5jX3N0cigpICsgb2Zmc2V0KTsKLSAgICAgICAgRVhQRUNUX0VRKDAsIGZhaWx1
cmVDb3VudCkgPDwgbG9nOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2dsZXNfY29uZm9ybWFuY2Vf
dGVzdHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbGVzX2NvbmZvcm1h
bmNlX3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZGY5MTFiMDM0OWY1MjUxMmEzYmRlNzY3NTE3ZmFiOWVkNTczZjIwYy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy9nbGVzX2NvbmZvcm1hbmNl
X3Rlc3RzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0
IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQot
I2lmbmRlZiBDT05GT1JNQU5DRV9URVNUU19DT05GT1JNQU5DRV9URVNUX0hfCi0jZGVmaW5lIENP
TkZPUk1BTkNFX1RFU1RTX0NPTkZPUk1BTkNFX1RFU1RfSF8KLQotI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCi0KLSNpbmNsdWRlIDxFR0wvZWdsLmg+Ci0jaW5jbHVkZSA8RUdML2VnbGV4dC5oPgot
Ci0jaW5jbHVkZSA8c3RyaW5nPgotCi1zdHJ1Y3QgRDNEOQotewotICAgIHN0YXRpYyBFR0xOYXRp
dmVEaXNwbGF5VHlwZSBHZXROYXRpdmVEaXNwbGF5KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBF
R0xfREVGQVVMVF9ESVNQTEFZOwotICAgIH0KLX07Ci0KLXN0cnVjdCBEM0QxMQotewotICAgIHN0
YXRpYyBFR0xOYXRpdmVEaXNwbGF5VHlwZSBHZXROYXRpdmVEaXNwbGF5KCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBFR0xfRDNEMTFfT05MWV9ESVNQTEFZX0FOR0xFOwotICAgIH0KLX07Ci0KLSNk
ZWZpbmUgQ09ORk9STUFOQ0VfVEVTVFNfRVMyIDIKLSNkZWZpbmUgQ09ORk9STUFOQ0VfVEVTVFNf
RVMzIDMKLQotI2lmIENPTkZPUk1BTkNFX1RFU1RTX1RZUEUgPT0gQ09ORk9STUFOQ0VfVEVTVFNf
RVMyCi0gICAgdHlwZWRlZiB0ZXN0aW5nOjpUeXBlczxEM0Q5LCBEM0QxMT4gQ29uZm9ybWFuY2VU
ZXN0VHlwZXM7Ci0jZWxpZiBDT05GT1JNQU5DRV9URVNUU19UWVBFID09IENPTkZPUk1BTkNFX1RF
U1RTX0VTMwotICAgIHR5cGVkZWYgdGVzdGluZzo6VHlwZXM8RDNEMTE+IENvbmZvcm1hbmNlVGVz
dFR5cGVzOwotI2Vsc2UKLSMgICBlcnJvciAiVW5rbm93biBDT05GT1JNQU5DRV9URVNUU19UWVBF
IgotI2VuZGlmCi0KLSNkZWZpbmUgREVGSU5FX0NPTkZPUk1BTkNFX1RFU1RfQ0xBU1MobmFtZSkg
XAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBuYW1lIDogcHVibGljIENvbmZvcm1h
bmNlVGVzdDxUPiB7IH07IFwKLSAgICBUWVBFRF9URVNUX0NBU0UobmFtZSwgQ29uZm9ybWFuY2VU
ZXN0VHlwZXMpOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIENvbmZvcm1hbmNlVGVz
dCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICBDb25mb3JtYW5jZVRl
c3QoKQotICAgICAgICA6IG1OYXRpdmVEaXNwbGF5KFQ6OkdldE5hdGl2ZURpc3BsYXkoKSkKLSAg
ICB7Ci0gICAgfQotCi0gIHByb3RlY3RlZDoKLSAgICB2b2lkIHJ1bihjb25zdCBzdGQ6OnN0cmlu
ZyAmdGVzdFBhdGgpCi0gICAgewotICAgICAgICBSdW5Db25mb3JtYW5jZVRlc3QodGVzdFBhdGgs
IG1OYXRpdmVEaXNwbGF5KTsKLSAgICB9Ci0KLSAgcHJpdmF0ZToKLSAgICBFR0xOYXRpdmVEaXNw
bGF5VHlwZSBtTmF0aXZlRGlzcGxheTsKLX07Ci0KLXZvaWQgUnVuQ29uZm9ybWFuY2VUZXN0KGNv
bnN0IHN0ZDo6c3RyaW5nICZ0ZXN0UGF0aCwgRUdMTmF0aXZlRGlzcGxheVR5cGUgbmF0aXZlRGlz
cGxheSk7Ci0KLSNlbmRpZiAvLyBDT05GT1JNQU5DRV9URVNUU19DT05GT1JNQU5DRV9URVNUX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xlc19jb25m
b3JtYW5jZV90ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzX21haW4uY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvZ2xlc19jb25m
b3JtYW5jZV90ZXN0c19tYWluLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI5
NWQ1Yzg5NDU3YmI3OWJmMTkzM2NmZDIzMTQxNGM3ZDViOTgyNC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzX21haW4u
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykg
MjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNs
dWRlICJnbGVzX2NvbmZvcm1hbmNlX3Rlc3RzLmgiCi0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgotCi0jaW5jbHVkZSA8RUdML2VnbC5oPgotI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KLQotI2lu
Y2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi1pbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0gICAgdGVzdGluZzo6SW5pdEdvb2dsZVRl
c3QoJmFyZ2MsIGFyZ3YpOwotICAgIGludCBydCA9IFJVTl9BTExfVEVTVFMoKTsKLSAgICByZXR1
cm4gcnQ7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
cGVyZl90ZXN0cy9BTkdMRVBlcmZUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9wZXJmX3Rlc3RzL0FOR0xFUGVyZlRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBlN2M3NDM3MGRlZTE1YjdkODYwZTRhMmE2YmI3NTVlMTM2ZmQ0ZTAzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0FOR0xFUGVyZlRlc3QuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTk0ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gQU5HTEVQZXJmVGVzdHM6
Ci0vLyAgIEJhc2UgY2xhc3MgZm9yIGdvb2dsZSB0ZXN0IHBlcmZvcm1hbmNlIHRlc3RzCi0vLwot
Ci0jaW5jbHVkZSAiQU5HTEVQZXJmVGVzdC5oIgotCi0jaW5jbHVkZSAidGhpcmRfcGFydHkvcGVy
Zi9wZXJmX3Rlc3QuaCIKLQotI2luY2x1ZGUgPGNhc3NlcnQ+Ci0jaW5jbHVkZSA8Y21hdGg+Ci0j
aW5jbHVkZSA8aW9zdHJlYW0+Ci0KLUFOR0xFUGVyZlRlc3Q6OkFOR0xFUGVyZlRlc3QoY29uc3Qg
c3RkOjpzdHJpbmcgJm5hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nICZzdWZmaXgpCi0gICAgOiBtTmFt
ZShuYW1lKSwKLSAgICAgIG1TdWZmaXgoc3VmZml4KSwKLSAgICAgIG1UaW1lcihudWxscHRyKSwK
LSAgICAgIG1SdW5UaW1lU2Vjb25kcyg1LjApLAotICAgICAgbU51bVN0ZXBzUGVyZm9ybWVkKDAp
LAotICAgICAgbVJ1bm5pbmcodHJ1ZSkKLXsKLSAgICBtVGltZXIgPSBDcmVhdGVUaW1lcigpOwot
fQotCi1BTkdMRVBlcmZUZXN0Ojp+QU5HTEVQZXJmVGVzdCgpCi17Ci0gICAgU2FmZURlbGV0ZSht
VGltZXIpOwotfQotCi12b2lkIEFOR0xFUGVyZlRlc3Q6OnJ1bigpCi17Ci0gICAgbVRpbWVyLT5z
dGFydCgpOwotICAgIHdoaWxlIChtUnVubmluZykKLSAgICB7Ci0gICAgICAgIHN0ZXAoKTsKLSAg
ICAgICAgaWYgKG1SdW5uaW5nKQotICAgICAgICB7Ci0gICAgICAgICAgICArK21OdW1TdGVwc1Bl
cmZvcm1lZDsKLSAgICAgICAgfQotICAgICAgICBpZiAobVRpbWVyLT5nZXRFbGFwc2VkVGltZSgp
ID4gbVJ1blRpbWVTZWNvbmRzKQotICAgICAgICB7Ci0gICAgICAgICAgICBtUnVubmluZyA9IGZh
bHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIGZpbmlzaFRlc3QoKTsKLSAgICBtVGltZXItPnN0
b3AoKTsKLX0KLQotdm9pZCBBTkdMRVBlcmZUZXN0OjpwcmludFJlc3VsdChjb25zdCBzdGQ6OnN0
cmluZyAmdHJhY2UsIGRvdWJsZSB2YWx1ZSwgY29uc3Qgc3RkOjpzdHJpbmcgJnVuaXRzLCBib29s
IGltcG9ydGFudCkgY29uc3QKLXsKLSAgICBwZXJmX3Rlc3Q6OlByaW50UmVzdWx0KG1OYW1lLCBt
U3VmZml4LCB0cmFjZSwgdmFsdWUsIHVuaXRzLCBpbXBvcnRhbnQpOwotfQotCi12b2lkIEFOR0xF
UGVyZlRlc3Q6OnByaW50UmVzdWx0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0cmFjZSwgc2l6ZV90IHZh
bHVlLCBjb25zdCBzdGQ6OnN0cmluZyAmdW5pdHMsIGJvb2wgaW1wb3J0YW50KSBjb25zdAotewot
ICAgIHBlcmZfdGVzdDo6UHJpbnRSZXN1bHQobU5hbWUsIG1TdWZmaXgsIHRyYWNlLCB2YWx1ZSwg
dW5pdHMsIGltcG9ydGFudCk7Ci19Ci0KLXZvaWQgQU5HTEVQZXJmVGVzdDo6U2V0VXAoKQotewot
fQotCi12b2lkIEFOR0xFUGVyZlRlc3Q6OlRlYXJEb3duKCkKLXsKLSAgICBkb3VibGUgcmVsYXRp
dmVTY29yZSA9IHN0YXRpY19jYXN0PGRvdWJsZT4obU51bVN0ZXBzUGVyZm9ybWVkKSAvIG1UaW1l
ci0+Z2V0RWxhcHNlZFRpbWUoKTsKLSAgICBwcmludFJlc3VsdCgic2NvcmUiLCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KHN0ZDo6cm91bmQocmVsYXRpdmVTY29yZSkpLCAic2NvcmUiLCB0cnVlKTsKLX0K
LQotZG91YmxlIEFOR0xFUGVyZlRlc3Q6Om5vcm1hbGl6ZWRUaW1lKHNpemVfdCB2YWx1ZSkgY29u
c3QKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBzdGF0aWNfY2Fz
dDxkb3VibGU+KG1OdW1TdGVwc1BlcmZvcm1lZCk7Ci19Ci0KLXN0ZDo6c3RyaW5nIFJlbmRlclRl
c3RQYXJhbXM6OnN1ZmZpeCgpIGNvbnN0Ci17Ci0gICAgc3dpdGNoIChnZXRSZW5kZXJlcigpKQot
ICAgIHsKLSAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRToK
LSAgICAgICAgICAgIHJldHVybiAiX2QzZDExIjsKLSAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9EM0Q5X0FOR0xFOgotICAgICAgICAgICAgcmV0dXJuICJfZDNkOSI7Ci0gICAg
ICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFOgotICAgICAgICAg
ICAgcmV0dXJuICJfZ2wiOwotICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09Q
RU5HTEVTX0FOR0xFOgotICAgICAgICAgICAgcmV0dXJuICJfZ2xlcyI7Ci0gICAgICAgIGNhc2Ug
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfREVGQVVMVF9BTkdMRToKLSAgICAgICAgICAgIHJldHVy
biAiX2RlZmF1bHQiOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYXNzZXJ0KDApOwot
ICAgICAgICAgICAgcmV0dXJuICJfdW5rIjsKLSAgICB9Ci19Ci0KLUFOR0xFUmVuZGVyVGVzdDo6
QU5HTEVSZW5kZXJUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCBjb25zdCBSZW5kZXJUZXN0
UGFyYW1zICZ0ZXN0UGFyYW1zKQotICAgIDogQU5HTEVQZXJmVGVzdChuYW1lLCB0ZXN0UGFyYW1z
LnN1ZmZpeCgpKSwKLSAgICAgIG1UZXN0UGFyYW1zKHRlc3RQYXJhbXMpLAotICAgICAgbUVHTFdp
bmRvdyhudWxscHRyKSwKLSAgICAgIG1PU1dpbmRvdyhudWxscHRyKQotewotfQotCi1BTkdMRVJl
bmRlclRlc3Q6On5BTkdMRVJlbmRlclRlc3QoKQotewotICAgIFNhZmVEZWxldGUobU9TV2luZG93
KTsKLSAgICBTYWZlRGVsZXRlKG1FR0xXaW5kb3cpOwotfQotCi12b2lkIEFOR0xFUmVuZGVyVGVz
dDo6U2V0VXAoKQotewotICAgIG1PU1dpbmRvdyA9IENyZWF0ZU9TV2luZG93KCk7Ci0gICAgbUVH
TFdpbmRvdyA9IG5ldyBFR0xXaW5kb3cobVRlc3RQYXJhbXMubWFqb3JWZXJzaW9uLCBtVGVzdFBh
cmFtcy5taW5vclZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVRlc3RQ
YXJhbXMuZWdsUGFyYW1ldGVycyk7Ci0gICAgbUVHTFdpbmRvdy0+c2V0U3dhcEludGVydmFsKDAp
OwotCi0gICAgaWYgKCFtT1NXaW5kb3ctPmluaXRpYWxpemUobU5hbWUsIG1UZXN0UGFyYW1zLndp
bmRvd1dpZHRoLCBtVGVzdFBhcmFtcy53aW5kb3dIZWlnaHQpKQotICAgIHsKLSAgICAgICAgRkFJ
TCgpIDw8ICJGYWlsZWQgaW5pdGlhbGl6aW5nIE9TV2luZG93IjsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGlmICghbUVHTFdpbmRvdy0+aW5pdGlhbGl6ZUdMKG1PU1dpbmRvdykpCi0g
ICAgewotICAgICAgICBGQUlMKCkgPDwgIkZhaWxlZCBpbml0aWFsaXppbmcgRUdMV2luZG93IjsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGluaXRpYWxpemVCZW5jaG1hcmsoKTsKLQot
ICAgIEFOR0xFUGVyZlRlc3Q6OlNldFVwKCk7Ci19Ci0KLXZvaWQgQU5HTEVSZW5kZXJUZXN0OjpU
ZWFyRG93bigpCi17Ci0gICAgQU5HTEVQZXJmVGVzdDo6VGVhckRvd24oKTsKLQotICAgIGRlc3Ry
b3lCZW5jaG1hcmsoKTsKLQotICAgIG1FR0xXaW5kb3ctPmRlc3Ryb3lHTCgpOwotICAgIG1PU1dp
bmRvdy0+ZGVzdHJveSgpOwotfQotCi12b2lkIEFOR0xFUmVuZGVyVGVzdDo6c3RlcCgpCi17Ci0g
ICAgLy8gQ2xlYXIgZXZlbnRzIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGRpZCBub3QgcHJvY2VzcyBm
cm9tIHRoaXMgZnJhbWUKLSAgICBFdmVudCBldmVudDsKLSAgICBib29sIGNsb3NlZCA9IGZhbHNl
OwotICAgIHdoaWxlIChwb3BFdmVudCgmZXZlbnQpKQotICAgIHsKLSAgICAgICAgLy8gSWYgdGhl
IGFwcGxpY2F0aW9uIGRpZCBub3QgY2F0Y2ggYSBjbG9zZSBldmVudCwgY2xvc2Ugbm93Ci0gICAg
ICAgIGlmIChldmVudC5UeXBlID09IEV2ZW50OjpFVkVOVF9DTE9TRUQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGNsb3NlZCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoY2xv
c2VkKQotICAgIHsKLSAgICAgICAgYWJvcnRUZXN0KCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7
Ci0gICAgICAgIGRyYXdCZW5jaG1hcmsoKTsKLSAgICAgICAgLy8gU3dhcCBpcyBuZWVkZWQgc28g
dGhhdCB0aGUgR1BVIGRyaXZlciB3aWxsIG9jY2FzaW9uYWxseSBmbHVzaCBpdHMgaW50ZXJuYWwg
Y29tbWFuZCBxdWV1ZQotICAgICAgICAvLyB0byB0aGUgR1BVLiBUaGUgbnVsbCBkZXZpY2UgYmVu
Y2htYXJrcyBhcmUgb25seSB0ZXN0aW5nIENQVSBvdmVyaGVhZCwgc28gdGhleSBkb24ndCBuZWVk
Ci0gICAgICAgIC8vIHRvIHN3YXAuCi0gICAgICAgIGlmIChtVGVzdFBhcmFtcy5lZ2xQYXJhbWV0
ZXJzLmRldmljZVR5cGUgIT0gRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX05VTExfQU5H
TEUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1FR0xXaW5kb3ctPnN3YXAoKTsKLSAgICAgICAg
fQotICAgICAgICBtT1NXaW5kb3ctPm1lc3NhZ2VMb29wKCk7Ci0gICAgfQotfQotCi12b2lkIEFO
R0xFUmVuZGVyVGVzdDo6ZmluaXNoVGVzdCgpCi17Ci0gICAgaWYgKG1UZXN0UGFyYW1zLmVnbFBh
cmFtZXRlcnMuZGV2aWNlVHlwZSAhPSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfTlVM
TF9BTkdMRSkKLSAgICB7Ci0gICAgICAgIGdsRmluaXNoKCk7Ci0gICAgfQotfQotCi1ib29sIEFO
R0xFUmVuZGVyVGVzdDo6cG9wRXZlbnQoRXZlbnQgKmV2ZW50KQotewotICAgIHJldHVybiBtT1NX
aW5kb3ctPnBvcEV2ZW50KGV2ZW50KTsKLX0KLQotT1NXaW5kb3cgKkFOR0xFUmVuZGVyVGVzdDo6
Z2V0V2luZG93KCkKLXsKLSAgICByZXR1cm4gbU9TV2luZG93OwotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdC5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJm
VGVzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmYyY2I0NDQ3ZTg1ZjI2NzUy
MGI3OTBiMTAwZjZhMzY2NzQ0ZDIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3Rz
L0FOR0xFUGVyZlRlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi0vLwotLy8g
Q29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgotLy8KLS8vIEFOR0xFUGVyZlRlc3RzOgotLy8gICBCYXNlIGNsYXNzIGZvciBnb29nbGUgdGVz
dCBwZXJmb3JtYW5jZSB0ZXN0cwotLy8KLQotI2lmbmRlZiBQRVJGX1RFU1RTX0FOR0xFX1BFUkZf
VEVTVF9IXwotI2RlZmluZSBQRVJGX1RFU1RTX0FOR0xFX1BFUkZfVEVTVF9IXwotCi0jaW5jbHVk
ZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+
Ci0jaW5jbHVkZSA8RUdML2VnbC5oPgotI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KLQotI2luY2x1
ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCi0jaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCi0jaW5j
bHVkZSAiRUdMV2luZG93LmgiCi0jaW5jbHVkZSAiT1NXaW5kb3cuaCIKLSNpbmNsdWRlICJ0ZXN0
X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5oIgotI2luY2x1ZGUgInRlc3RfdXRpbHMvYW5nbGVf
dGVzdF9pbnN0YW50aWF0ZS5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0KLWNsYXNzIEV2ZW50Owot
Ci0jaWZuZGVmIEFTU0VSVF9HTF9OT19FUlJPUgotI2RlZmluZSBBU1NFUlRfR0xfTk9fRVJST1Io
KSBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8R0xlbnVtPihHTF9OT19FUlJPUiksIGdsR2V0RXJyb3Io
KSkKLSNlbmRpZgotCi1jbGFzcyBBTkdMRVBlcmZUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3Qs
IGFuZ2xlOjpOb25Db3B5YWJsZQotewotICBwdWJsaWM6Ci0gICAgQU5HTEVQZXJmVGVzdChjb25z
dCBzdGQ6OnN0cmluZyAmbmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcgJnN1ZmZpeCk7Ci0gICAgdmly
dHVhbCB+QU5HTEVQZXJmVGVzdCgpOwotCi0gICAgdmlydHVhbCB2b2lkIHN0ZXAoKSA9IDA7Ci0K
LSAgICAvLyBDYWxsZWQgcmlnaHQgYmVmb3JlIHRpbWVyIGlzIHN0b3BwZWQgdG8gbGV0IHRoZSB0
ZXN0IHdhaXQgZm9yIGFzeW5jaHJvbm91cyBvcGVyYXRpb25zLgotICAgIHZpcnR1YWwgdm9pZCBm
aW5pc2hUZXN0KCkge30KLQotICBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBydW4oKTsKLSAgICB2b2lk
IHByaW50UmVzdWx0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0cmFjZSwgZG91YmxlIHZhbHVlLCBjb25z
dCBzdGQ6OnN0cmluZyAmdW5pdHMsIGJvb2wgaW1wb3J0YW50KSBjb25zdDsKLSAgICB2b2lkIHBy
aW50UmVzdWx0KGNvbnN0IHN0ZDo6c3RyaW5nICZ0cmFjZSwgc2l6ZV90IHZhbHVlLCBjb25zdCBz
dGQ6OnN0cmluZyAmdW5pdHMsIGJvb2wgaW1wb3J0YW50KSBjb25zdDsKLSAgICB2b2lkIFNldFVw
KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlOwotCi0gICAgLy8gTm9y
bWFsaXplIGEgdGltZSB2YWx1ZSBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiB0ZXN0IGxvb3Ag
aXRlcmF0aW9ucyAobUZyYW1lQ291bnQpCi0gICAgZG91YmxlIG5vcm1hbGl6ZWRUaW1lKHNpemVf
dCB2YWx1ZSkgY29uc3Q7Ci0KLSAgICAvLyBDYWxsIGlmIHRoZSB0ZXN0IHN0ZXAgd2FzIGFib3J0
ZWQgYW5kIHRoZSB0ZXN0IHNob3VsZCBzdG9wIHJ1bm5pbmcuCi0gICAgdm9pZCBhYm9ydFRlc3Qo
KSB7IG1SdW5uaW5nID0gZmFsc2U7IH0KLQotICAgIHVuc2lnbmVkIGludCBnZXROdW1TdGVwc1Bl
cmZvcm1lZCgpIGNvbnN0IHsgcmV0dXJuIG1OdW1TdGVwc1BlcmZvcm1lZDsgfQotCi0gICAgc3Rk
OjpzdHJpbmcgbU5hbWU7Ci0gICAgc3RkOjpzdHJpbmcgbVN1ZmZpeDsKLSAgICBUaW1lciAqbVRp
bWVyOwotICAgIGRvdWJsZSBtUnVuVGltZVNlY29uZHM7Ci0KLSAgcHJpdmF0ZToKLSAgICB1bnNp
Z25lZCBpbnQgbU51bVN0ZXBzUGVyZm9ybWVkOwotICAgIGJvb2wgbVJ1bm5pbmc7Ci19OwotCi1z
dHJ1Y3QgUmVuZGVyVGVzdFBhcmFtcyA6IHB1YmxpYyBhbmdsZTo6UGxhdGZvcm1QYXJhbWV0ZXJz
Ci17Ci0gICAgdmlydHVhbCBzdGQ6OnN0cmluZyBzdWZmaXgoKSBjb25zdDsKLQotICAgIEVHTGlu
dCB3aW5kb3dXaWR0aDsKLSAgICBFR0xpbnQgd2luZG93SGVpZ2h0OwotfTsKLQotY2xhc3MgQU5H
TEVSZW5kZXJUZXN0IDogcHVibGljIEFOR0xFUGVyZlRlc3QKLXsKLSAgcHVibGljOgotICAgIEFO
R0xFUmVuZGVyVGVzdChjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgY29uc3QgUmVuZGVyVGVzdFBh
cmFtcyAmdGVzdFBhcmFtcyk7Ci0gICAgfkFOR0xFUmVuZGVyVGVzdCgpOwotCi0gICAgdmlydHVh
bCB2b2lkIGluaXRpYWxpemVCZW5jaG1hcmsoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJv
eUJlbmNobWFyaygpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIGRyYXdCZW5jaG1hcmsoKSA9IDA7
Ci0KLSAgICBib29sIHBvcEV2ZW50KEV2ZW50ICpldmVudCk7Ci0KLSAgICBPU1dpbmRvdyAqZ2V0
V2luZG93KCk7Ci0KLSAgcHJvdGVjdGVkOgotICAgIGNvbnN0IFJlbmRlclRlc3RQYXJhbXMgJm1U
ZXN0UGFyYW1zOwotCi0gIHByaXZhdGU6Ci0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlOwotICAg
IHZvaWQgVGVhckRvd24oKSBvdmVycmlkZTsKLQotICAgIHZvaWQgc3RlcCgpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZmluaXNoVGVzdCgpIG92ZXJyaWRlOwotCi0gICAgRUdMV2luZG93ICptRUdMV2lu
ZG93OwotICAgIE9TV2luZG93ICptT1NXaW5kb3c7Ci19OwotCi0jZW5kaWYgLy8gUEVSRl9URVNU
U19BTkdMRV9QRVJGX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0J1ZmZlclN1YkRhdGEuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQnVmZmVyU3ViRGF0YS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4MThkNTJlZTk4YWFhNDhiMWIyNmUxNWYxYWQ0MDA3NDM2
YjdjZGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQnVmZmVyU3ViRGF0YS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MTggKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykg
MjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBCdWZm
ZXJTdWJEYXRhQmVuY2htYXJrOgotLy8gICBQZXJmb3JtYW5jZSB0ZXN0IGZvciBBTkdMRSBidWZm
ZXIgdXBkYXRlcy4KLS8vCi0KLSNpbmNsdWRlIDxzc3RyZWFtPgotCi0jaW5jbHVkZSAiQU5HTEVQ
ZXJmVGVzdC5oIgotI2luY2x1ZGUgInNoYWRlcl91dGlscy5oIgotCi11c2luZyBuYW1lc3BhY2Ug
YW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1zdHJ1Y3QgQnVmZmVyU3ViRGF0YVBhcmFtcyBmaW5h
bCA6IHB1YmxpYyBSZW5kZXJUZXN0UGFyYW1zCi17Ci0gICAgQnVmZmVyU3ViRGF0YVBhcmFtcygp
Ci0gICAgewotICAgICAgICAvLyBDb21tb24gZGVmYXVsdCB2YWx1ZXMKLSAgICAgICAgbWFqb3JW
ZXJzaW9uID0gMjsKLSAgICAgICAgbWlub3JWZXJzaW9uID0gMDsKLSAgICAgICAgd2luZG93V2lk
dGggPSA1MTI7Ci0gICAgICAgIHdpbmRvd0hlaWdodCA9IDUxMjsKLSAgICAgICAgdXBkYXRlU2l6
ZSA9IDMwMDA7Ci0gICAgICAgIGJ1ZmZlclNpemUgPSA0MDAwMDAwMDsKLSAgICAgICAgaXRlcmF0
aW9ucyAgID0gNDsKLSAgICAgICAgdXBkYXRlUmF0ZSA9IDE7Ci0gICAgfQotCi0gICAgc3RkOjpz
dHJpbmcgc3VmZml4KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBHTGJvb2xlYW4gdmVydGV4Tm9y
bWFsaXplZDsKLSAgICBHTGVudW0gdmVydGV4VHlwZTsKLSAgICBHTGludCB2ZXJ0ZXhDb21wb25l
bnRDb3VudDsKLSAgICB1bnNpZ25lZCBpbnQgdXBkYXRlUmF0ZTsKLQotICAgIC8vIHN0YXRpYyBw
YXJhbWV0ZXJzCi0gICAgR0xzaXplaXB0ciB1cGRhdGVTaXplOwotICAgIEdMc2l6ZWlwdHIgYnVm
ZmVyU2l6ZTsKLSAgICB1bnNpZ25lZCBpbnQgaXRlcmF0aW9uczsKLX07Ci0KLXN0ZDo6b3N0cmVh
bSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBCdWZmZXJTdWJEYXRhUGFyYW1z
ICZwYXJhbXMpCi17Ci0gICAgb3MgPDwgcGFyYW1zLnN1ZmZpeCgpLnN1YnN0cigxKTsKLSAgICBy
ZXR1cm4gb3M7Ci19Ci0KLWNsYXNzIEJ1ZmZlclN1YkRhdGFCZW5jaG1hcmsgOiBwdWJsaWMgQU5H
TEVSZW5kZXJUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyA6OnRl
c3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxCdWZmZXJTdWJEYXRhUGFyYW1zPgotewotICBwdWJs
aWM6Ci0gICAgQnVmZmVyU3ViRGF0YUJlbmNobWFyaygpOwotCi0gICAgdm9pZCBpbml0aWFsaXpl
QmVuY2htYXJrKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZXN0cm95QmVuY2htYXJrKCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkcmF3QmVuY2htYXJrKCkgb3ZlcnJpZGU7Ci0KLSAgcHJpdmF0ZToKLSAg
ICBHTHVpbnQgbVByb2dyYW07Ci0gICAgR0x1aW50IG1CdWZmZXI7Ci0gICAgdWludDhfdCAqbVVw
ZGF0ZURhdGE7Ci0gICAgaW50IG1OdW1UcmlzOwotfTsKLQotR0xmbG9hdCAqR2V0RmxvYXREYXRh
KEdMaW50IGNvbXBvbmVudENvdW50KQotewotICAgIHN0YXRpYyBHTGZsb2F0IHZlcnRpY2VzMltd
ID0KLSAgICB7Ci0gICAgICAgIDEsIDIsCi0gICAgICAgIDAsIDAsCi0gICAgICAgIDIsIDAsCi0g
ICAgfTsKLQotICAgIHN0YXRpYyBHTGZsb2F0IHZlcnRpY2VzM1tdID0KLSAgICB7Ci0gICAgICAg
IDEsIDIsIDEsCi0gICAgICAgIDAsIDAsIDEsCi0gICAgICAgIDIsIDAsIDEsCi0gICAgfTsKLQot
ICAgIHN0YXRpYyBHTGZsb2F0IHZlcnRpY2VzNFtdID0KLSAgICB7Ci0gICAgICAgIDEsIDIsIDEs
IDMsCi0gICAgICAgIDAsIDAsIDEsIDMsCi0gICAgICAgIDIsIDAsIDEsIDMsCi0gICAgfTsKLQot
ICAgIHN3aXRjaCAoY29tcG9uZW50Q291bnQpCi0gICAgewotICAgICAgICBjYXNlIDI6Ci0gICAg
ICAgICAgICByZXR1cm4gdmVydGljZXMyOwotICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICBy
ZXR1cm4gdmVydGljZXMzOwotICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICByZXR1cm4gdmVy
dGljZXM0OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLUdMc2l6ZWlwdHIgR2V0Tm9ybWFsaXplZERh
dGEoR0xzaXplaXB0ciBudW1FbGVtZW50cywgR0xmbG9hdCAqZmxvYXREYXRhLCBzdGQ6OnZlY3Rv
cjx1aW50OF90PiAqZGF0YSkKLXsKLSAgICBHTHNpemVpcHRyIHRyaURhdGFTaXplID0gc2l6ZW9m
KFQpICogbnVtRWxlbWVudHM7Ci0gICAgZGF0YS0+cmVzaXplKHRyaURhdGFTaXplKTsKLQotICAg
IFQgKmRlc3RQdHIgPSByZWludGVycHJldF9jYXN0PFQqPihkYXRhLT5kYXRhKCkpOwotCi0gICAg
Zm9yIChHTHNpemVpcHRyIGRhdGFJbmRleCA9IDA7IGRhdGFJbmRleCA8IG51bUVsZW1lbnRzOyBk
YXRhSW5kZXgrKykKLSAgICB7Ci0gICAgICAgIEdMZmxvYXQgc2NhbGVkID0gZmxvYXREYXRhW2Rh
dGFJbmRleF0gKiAwLjI1ZjsKLSAgICAgICAgZGVzdFB0cltkYXRhSW5kZXhdID0gc3RhdGljX2Nh
c3Q8VD4oc2NhbGVkICogc3RhdGljX2Nhc3Q8R0xmbG9hdD4oc3RkOjpudW1lcmljX2xpbWl0czxU
Pjo6bWF4KCkpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJpRGF0YVNpemU7Ci19Ci0KLXRlbXBs
YXRlIDxjbGFzcyBUPgotR0xzaXplaXB0ciBHZXRJbnREYXRhKEdMc2l6ZWlwdHIgbnVtRWxlbWVu
dHMsIEdMZmxvYXQgKmZsb2F0RGF0YSwgc3RkOjp2ZWN0b3I8dWludDhfdD4gKmRhdGEpCi17Ci0g
ICAgR0xzaXplaXB0ciB0cmlEYXRhU2l6ZSA9IHNpemVvZihUKSAqIG51bUVsZW1lbnRzOwotICAg
IGRhdGEtPnJlc2l6ZSh0cmlEYXRhU2l6ZSk7Ci0KLSAgICBUICpkZXN0UHRyID0gcmVpbnRlcnBy
ZXRfY2FzdDxUKj4oZGF0YS0+ZGF0YSgpKTsKLQotICAgIGZvciAoR0xzaXplaXB0ciBkYXRhSW5k
ZXggPSAwOyBkYXRhSW5kZXggPCBudW1FbGVtZW50czsgZGF0YUluZGV4KyspCi0gICAgewotICAg
ICAgICBkZXN0UHRyW2RhdGFJbmRleF0gPSBzdGF0aWNfY2FzdDxUPihmbG9hdERhdGFbZGF0YUlu
ZGV4XSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRyaURhdGFTaXplOwotfQotCi1HTHNpemVpcHRy
IEdldFZlcnRleERhdGEoR0xlbnVtIHR5cGUsIEdMaW50IGNvbXBvbmVudENvdW50LCBHTGJvb2xl
YW4gbm9ybWFsaXplZCwgc3RkOjp2ZWN0b3I8dWludDhfdD4gKmRhdGEpCi17Ci0gICAgR0xzaXpl
aXB0ciB0cmlEYXRhU2l6ZSA9IDA7Ci0gICAgR0xmbG9hdCAqZmxvYXREYXRhID0gR2V0RmxvYXRE
YXRhKGNvbXBvbmVudENvdW50KTsKLQotICAgIGlmICh0eXBlID09IEdMX0ZMT0FUKQotICAgIHsK
LSAgICAgICAgdHJpRGF0YVNpemUgPSBzaXplb2YoR0xmbG9hdCkgKiBjb21wb25lbnRDb3VudCAq
IDM7Ci0gICAgICAgIGRhdGEtPnJlc2l6ZSh0cmlEYXRhU2l6ZSk7Ci0gICAgICAgIG1lbWNweShk
YXRhLT5kYXRhKCksIGZsb2F0RGF0YSwgdHJpRGF0YVNpemUpOwotICAgIH0KLSAgICBlbHNlIGlm
IChub3JtYWxpemVkID09IEdMX1RSVUUpCi0gICAgewotICAgICAgICBHTHNpemVpcHRyIG51bUVs
ZW1lbnRzID0gY29tcG9uZW50Q291bnQgKiAzOwotCi0gICAgICAgIHN3aXRjaCAodHlwZSkKLSAg
ICAgICAgewotICAgICAgICAgICAgY2FzZSBHTF9CWVRFOgotICAgICAgICAgICAgICAgIHRyaURh
dGFTaXplID0gR2V0Tm9ybWFsaXplZERhdGE8R0xieXRlPihudW1FbGVtZW50cywgZmxvYXREYXRh
LCBkYXRhKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgR0xfU0hP
UlQ6Ci0gICAgICAgICAgICAgICAgdHJpRGF0YVNpemUgPSBHZXROb3JtYWxpemVkRGF0YTxHTHNo
b3J0PihudW1FbGVtZW50cywgZmxvYXREYXRhLCBkYXRhKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgR0xfSU5UOgotICAgICAgICAgICAgICAgIHRyaURhdGFTaXpl
ID0gR2V0Tm9ybWFsaXplZERhdGE8R0xpbnQ+KG51bUVsZW1lbnRzLCBmbG9hdERhdGEsIGRhdGEp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9C
WVRFOgotICAgICAgICAgICAgICAgIHRyaURhdGFTaXplID0gR2V0Tm9ybWFsaXplZERhdGE8R0x1
Ynl0ZT4obnVtRWxlbWVudHMsIGZsb2F0RGF0YSwgZGF0YSk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgotICAgICAgICAgICAgICAg
IHRyaURhdGFTaXplID0gR2V0Tm9ybWFsaXplZERhdGE8R0x1c2hvcnQ+KG51bUVsZW1lbnRzLCBm
bG9hdERhdGEsIGRhdGEpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9JTlQ6Ci0gICAgICAgICAgICAgICAgdHJpRGF0YVNpemUgPSBHZXROb3Jt
YWxpemVkRGF0YTxHTHVpbnQ+KG51bUVsZW1lbnRzLCBmbG9hdERhdGEsIGRhdGEpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBh
c3NlcnQoMCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgR0xz
aXplaXB0ciBudW1FbGVtZW50cyA9IGNvbXBvbmVudENvdW50ICogMzsKLQotICAgICAgICBzd2l0
Y2ggKHR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgR0xfQllURToKLSAgICAgICAg
ICAgICAgICB0cmlEYXRhU2l6ZSA9IEdldEludERhdGE8R0xieXRlPihudW1FbGVtZW50cywgZmxv
YXREYXRhLCBkYXRhKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
R0xfU0hPUlQ6Ci0gICAgICAgICAgICAgICAgdHJpRGF0YVNpemUgPSBHZXRJbnREYXRhPEdMc2hv
cnQ+KG51bUVsZW1lbnRzLCBmbG9hdERhdGEsIGRhdGEpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBHTF9JTlQ6Ci0gICAgICAgICAgICAgICAgdHJpRGF0YVNpemUg
PSBHZXRJbnREYXRhPEdMaW50PihudW1FbGVtZW50cywgZmxvYXREYXRhLCBkYXRhKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAg
ICAgICAgICAgICAgICB0cmlEYXRhU2l6ZSA9IEdldEludERhdGE8R0x1Ynl0ZT4obnVtRWxlbWVu
dHMsIGZsb2F0RGF0YSwgZGF0YSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgotICAgICAgICAgICAgICAgIHRyaURhdGFTaXplID0g
R2V0SW50RGF0YTxHTHVzaG9ydD4obnVtRWxlbWVudHMsIGZsb2F0RGF0YSwgZGF0YSk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKLSAg
ICAgICAgICAgICAgICB0cmlEYXRhU2l6ZSA9IEdldEludERhdGE8R0x1aW50PihudW1FbGVtZW50
cywgZmxvYXREYXRhLCBkYXRhKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KDApOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgcmV0dXJuIHRyaURhdGFTaXplOwotfQotCi1zdGQ6OnN0cmluZyBCdWZmZXJTdWJEYXRh
UGFyYW1zOjpzdWZmaXgoKSBjb25zdAotewotICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cnN0cjsK
LQotICAgIHN0cnN0ciA8PCBSZW5kZXJUZXN0UGFyYW1zOjpzdWZmaXgoKTsKLQotICAgIGlmICh2
ZXJ0ZXhOb3JtYWxpemVkKQotICAgIHsKLSAgICAgICAgc3Ryc3RyIDw8ICJfbm9ybSI7Ci0gICAg
fQotCi0gICAgc3dpdGNoICh2ZXJ0ZXhUeXBlKQotICAgIHsKLSAgICAgICAgY2FzZSBHTF9GTE9B
VDoKLSAgICAgICAgICAgIHN0cnN0ciA8PCAiX2Zsb2F0IjsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEdMX0lOVDoKLSAgICAgICAgICAgIHN0cnN0ciA8PCAiX2ludCI7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHTF9CWVRFOgotICAgICAgICAgICAgc3Ryc3Ry
IDw8ICJfYnl0ZSI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHTF9TSE9SVDoK
LSAgICAgICAgICAgIHN0cnN0ciA8PCAiX3Nob3J0IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKLSAgICAgICAgICAgIHN0cnN0ciA8PCAiX3VpbnQi
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAg
ICAgICAgICAgIHN0cnN0ciA8PCAiX3VieXRlIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgotICAgICAgICAgICAgc3Ryc3RyIDw8ICJfdXNob3J0
IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgc3Ry
c3RyIDw8ICJfdnVua18iIDw8IHZlcnRleFR5cGUgPDwgIl8iOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgfQotCi0gICAgc3Ryc3RyIDw8IHZlcnRleENvbXBvbmVudENvdW50OwotICAgIHN0cnN0
ciA8PCAiX2V2ZXJ5IiA8PCB1cGRhdGVSYXRlOwotCi0gICAgcmV0dXJuIHN0cnN0ci5zdHIoKTsK
LX0KLQotQnVmZmVyU3ViRGF0YUJlbmNobWFyazo6QnVmZmVyU3ViRGF0YUJlbmNobWFyaygpCi0g
ICAgOiBBTkdMRVJlbmRlclRlc3QoIkJ1ZmZlclN1YkRhdGEiLCBHZXRQYXJhbSgpKSwKLSAgICAg
IG1Qcm9ncmFtKDApLAotICAgICAgbUJ1ZmZlcigwKSwKLSAgICAgIG1VcGRhdGVEYXRhKG51bGxw
dHIpLAotICAgICAgbU51bVRyaXMoMCkKLXsKLX0KLQotdm9pZCBCdWZmZXJTdWJEYXRhQmVuY2ht
YXJrOjppbml0aWFsaXplQmVuY2htYXJrKCkKLXsKLSAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBH
ZXRQYXJhbSgpOwotCi0gICAgQVNTRVJUX0xUKDEsIHBhcmFtcy52ZXJ0ZXhDb21wb25lbnRDb3Vu
dCk7Ci0gICAgQVNTRVJUX0xUKDB1LCBwYXJhbXMuaXRlcmF0aW9ucyk7Ci0KLSAgICBjb25zdCBz
dGQ6OnN0cmluZyB2cyA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIGF0dHJpYnV0ZSB2
ZWMyIHZQb3NpdGlvbjsKLSAgICAgICAgdW5pZm9ybSBmbG9hdCB1U2NhbGU7Ci0gICAgICAgIHVu
aWZvcm0gZmxvYXQgdU9mZnNldDsKLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHZQb3NpdGlvbiAqIHZlYzIodVNjYWxlKSAtIHZl
YzIodU9mZnNldCksIDAsIDEpOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIGZzID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7Ci0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGds
X0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKLSAgICAgICAgfQotICAgICk7
Ci0KLSAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzLCBmcyk7Ci0gICAgQVNTRVJUX05F
KDB1LCBtUHJvZ3JhbSk7Ci0KLSAgICAvLyBVc2UgdGhlIHByb2dyYW0gb2JqZWN0Ci0gICAgZ2xV
c2VQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBm
LCAwLjBmKTsKLQotCi0gICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gemVyb0RhdGEocGFyYW1zLmJ1
ZmZlclNpemUpOwotICAgIG1lbXNldCgmemVyb0RhdGFbMF0sIDAsIHplcm9EYXRhLnNpemUoKSk7
Ci0KLSAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1CdWZmZXIpOwotICAgIGdsQmluZEJ1ZmZlcihHTF9B
UlJBWV9CVUZGRVIsIG1CdWZmZXIpOwotICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIs
IHBhcmFtcy5idWZmZXJTaXplLCAmemVyb0RhdGFbMF0sIEdMX0RZTkFNSUNfRFJBVyk7Ci0KLSAg
ICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoMCwgcGFyYW1zLnZlcnRleENvbXBvbmVudENvdW50LCBw
YXJhbXMudmVydGV4VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnZlcnRl
eE5vcm1hbGl6ZWQsIDAsIDApOwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7Ci0K
LSAgICBpZiAocGFyYW1zLnVwZGF0ZVNpemUgPiAwKQotICAgIHsKLSAgICAgICAgbVVwZGF0ZURh
dGEgPSBuZXcgdWludDhfdFtwYXJhbXMudXBkYXRlU2l6ZV07Ci0gICAgfQotCi0gICAgc3RkOjp2
ZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBHTHNpemVpIHRyaURhdGFTaXplID0gc3RhdGljX2Nh
c3Q8R0xzaXplaT4oR2V0VmVydGV4RGF0YShwYXJhbXMudmVydGV4VHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMu
dmVydGV4Q29tcG9uZW50Q291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnZlcnRleE5vcm1hbGl6ZWQsICZkYXRh
KSk7Ci0KLSAgICBtTnVtVHJpcyA9IHN0YXRpY19jYXN0PGludD4ocGFyYW1zLnVwZGF0ZVNpemUg
LyB0cmlEYXRhU2l6ZSk7Ci0gICAgZm9yIChpbnQgaSA9IDAsIG9mZnNldCA9IDA7IGkgPCBtTnVt
VHJpczsgKytpKQotICAgIHsKLSAgICAgICAgbWVtY3B5KG1VcGRhdGVEYXRhICsgb2Zmc2V0LCAm
ZGF0YVswXSwgdHJpRGF0YVNpemUpOwotICAgICAgICBvZmZzZXQgKz0gdHJpRGF0YVNpemU7Ci0g
ICAgfQotCi0gICAgaWYgKHBhcmFtcy51cGRhdGVTaXplID09IDApCi0gICAgewotICAgICAgICBt
TnVtVHJpcyA9IDE7Ci0gICAgICAgIGdsQnVmZmVyU3ViRGF0YShHTF9BUlJBWV9CVUZGRVIsIDAs
IGRhdGEuc2l6ZSgpLCAmZGF0YVswXSk7Ci0gICAgfQotCi0gICAgLy8gU2V0IHRoZSB2aWV3cG9y
dAotICAgIGdsVmlld3BvcnQoMCwgMCwgZ2V0V2luZG93KCktPmdldFdpZHRoKCksIGdldFdpbmRv
dygpLT5nZXRIZWlnaHQoKSk7Ci0KLSAgICBHTGZsb2F0IHNjYWxlID0gMC41ZjsKLSAgICBHTGZs
b2F0IG9mZnNldCA9IDAuNWY7Ci0KLSAgICBpZiAocGFyYW1zLnZlcnRleE5vcm1hbGl6ZWQgPT0g
R0xfVFJVRSkKLSAgICB7Ci0gICAgICAgIHNjYWxlID0gMi4wZjsKLSAgICAgICAgb2Zmc2V0ID0g
MC41ZjsKLSAgICB9Ci0KLSAgICBnbFVuaWZvcm0xZihnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJv
Z3JhbSwgInVTY2FsZSIpLCBzY2FsZSk7Ci0gICAgZ2xVbmlmb3JtMWYoZ2xHZXRVbmlmb3JtTG9j
YXRpb24obVByb2dyYW0sICJ1T2Zmc2V0IiksIG9mZnNldCk7Ci0KLSAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLX0KLQotdm9pZCBCdWZmZXJTdWJEYXRhQmVuY2htYXJrOjpkZXN0cm95QmVuY2ht
YXJrKCkKLXsKLSAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotICAgIGdsRGVsZXRlQnVm
ZmVycygxLCAmbUJ1ZmZlcik7Ci0gICAgU2FmZURlbGV0ZUFycmF5KG1VcGRhdGVEYXRhKTsKLX0K
LQotdm9pZCBCdWZmZXJTdWJEYXRhQmVuY2htYXJrOjpkcmF3QmVuY2htYXJrKCkKLXsKLSAgICBn
bENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgY29uc3QgYXV0byAmcGFyYW1zID0g
R2V0UGFyYW0oKTsKLQotICAgIGZvciAodW5zaWduZWQgaW50IGl0ID0gMDsgaXQgPCBwYXJhbXMu
aXRlcmF0aW9uczsgaXQrKykKLSAgICB7Ci0gICAgICAgIGlmIChwYXJhbXMudXBkYXRlU2l6ZSA+
IDAgJiYgKChnZXROdW1TdGVwc1BlcmZvcm1lZCgpICUgcGFyYW1zLnVwZGF0ZVJhdGUpID09IDAp
KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfQVJSQVlfQlVGRkVS
LCAwLCBwYXJhbXMudXBkYXRlU2l6ZSwgbVVwZGF0ZURhdGEpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyAqIG1OdW1UcmlzKTsKLSAgICB9Ci0K
LSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotQnVmZmVyU3ViRGF0YVBhcmFtcyBCdWZm
ZXJVcGRhdGVEM0QxMVBhcmFtcygpCi17Ci0gICAgQnVmZmVyU3ViRGF0YVBhcmFtcyBwYXJhbXM7
Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06OkQzRDExKCk7Ci0gICAg
cGFyYW1zLnZlcnRleFR5cGUgPSBHTF9GTE9BVDsKLSAgICBwYXJhbXMudmVydGV4Q29tcG9uZW50
Q291bnQgPSA0OwotICAgIHBhcmFtcy52ZXJ0ZXhOb3JtYWxpemVkID0gR0xfRkFMU0U7Ci0gICAg
cmV0dXJuIHBhcmFtczsKLX0KLQotQnVmZmVyU3ViRGF0YVBhcmFtcyBCdWZmZXJVcGRhdGVEM0Q5
UGFyYW1zKCkKLXsKLSAgICBCdWZmZXJTdWJEYXRhUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMu
ZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNEOSgpOwotICAgIHBhcmFtcy52ZXJ0ZXhU
eXBlID0gR0xfRkxPQVQ7Ci0gICAgcGFyYW1zLnZlcnRleENvbXBvbmVudENvdW50ID0gNDsKLSAg
ICBwYXJhbXMudmVydGV4Tm9ybWFsaXplZCA9IEdMX0ZBTFNFOwotICAgIHJldHVybiBwYXJhbXM7
Ci19Ci0KLUJ1ZmZlclN1YkRhdGFQYXJhbXMgQnVmZmVyVXBkYXRlT3BlbkdMUGFyYW1zKCkKLXsK
LSAgICBCdWZmZXJTdWJEYXRhUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVy
cyA9IGVnbF9wbGF0Zm9ybTo6T1BFTkdMKCk7Ci0gICAgcGFyYW1zLnZlcnRleFR5cGUgPSBHTF9G
TE9BVDsKLSAgICBwYXJhbXMudmVydGV4Q29tcG9uZW50Q291bnQgPSA0OwotICAgIHBhcmFtcy52
ZXJ0ZXhOb3JtYWxpemVkID0gR0xfRkFMU0U7Ci0gICAgcmV0dXJuIHBhcmFtczsKLX0KLQotVEVT
VF9QKEJ1ZmZlclN1YkRhdGFCZW5jaG1hcmssIFJ1bikKLXsKLSAgICBydW4oKTsKLX0KLQotQU5H
TEVfSU5TVEFOVElBVEVfVEVTVChCdWZmZXJTdWJEYXRhQmVuY2htYXJrLAotICAgICAgICAgICAg
ICAgICAgICAgICBCdWZmZXJVcGRhdGVEM0QxMVBhcmFtcygpLCBCdWZmZXJVcGRhdGVEM0Q5UGFy
YW1zKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlclVwZGF0ZU9wZW5HTFBhcmFtcygp
KTsKLQotfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0RyYXdDYWxsUGVyZi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9EcmF3Q2FsbFBlcmYuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlNTAwN2UxOWVmMjQ2OWExMjBlZTcwMzY0NmJiNTVmNzkxNzll
MDQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0RyYXdDYWxsUGVyZi5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwyNTYgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAx
NCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBEcmF3Q2Fs
bFBlcmY6Ci0vLyAgIFBlcmZvcm1hbmNlIHRlc3RzIGZvciBBTkdMRSBkcmF3IGNhbGwgb3Zlcmhl
YWQuCi0vLwotCi0jaW5jbHVkZSA8c3N0cmVhbT4KLQotI2luY2x1ZGUgIkFOR0xFUGVyZlRlc3Qu
aCIKLSNpbmNsdWRlICJzaGFkZXJfdXRpbHMuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwot
Ci1uYW1lc3BhY2UKLXsKLQotc3RydWN0IERyYXdDYWxsUGVyZlBhcmFtcyBmaW5hbCA6IHB1Ymxp
YyBSZW5kZXJUZXN0UGFyYW1zCi17Ci0gICAgLy8gQ29tbW9uIGRlZmF1bHQgb3B0aW9ucwotICAg
IERyYXdDYWxsUGVyZlBhcmFtcygpCi0gICAgewotICAgICAgICBtYWpvclZlcnNpb24gPSAyOwot
ICAgICAgICBtaW5vclZlcnNpb24gPSAwOwotICAgICAgICB3aW5kb3dXaWR0aCA9IDI1NjsKLSAg
ICAgICAgd2luZG93SGVpZ2h0ID0gMjU2OwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nIHN1ZmZp
eCgpIGNvbnN0IG92ZXJyaWRlCi0gICAgewotICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJz
dHI7Ci0KLSAgICAgICAgc3Ryc3RyIDw8IFJlbmRlclRlc3RQYXJhbXM6OnN1ZmZpeCgpOwotCi0g
ICAgICAgIGlmIChudW1UcmlzID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cnN0ciA8
PCAiX3ZhbGlkYXRpb25fb25seSI7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodXNlRkJPKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBzdHJzdHIgPDwgIl9yZW5kZXJfdG9fdGV4dHVyZSI7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoZWdsUGFyYW1ldGVycy5kZXZpY2VUeXBlID09IEVHTF9Q
TEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9OVUxMX0FOR0xFKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBzdHJzdHIgPDwgIl9udWxsIjsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBzdHJz
dHIuc3RyKCk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgaW50IGl0ZXJhdGlvbnMgPSA1MDsKLSAg
ICBkb3VibGUgcnVuVGltZVNlY29uZHMgICA9IDEwLjA7Ci0gICAgaW50IG51bVRyaXMgICAgICAg
ICAgICAgPSAxOwotICAgIGJvb2wgdXNlRkJPICAgICAgICAgICAgID0gZmFsc2U7Ci19OwotCi1z
dGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgY29uc3QgRHJhd0NhbGxQ
ZXJmUGFyYW1zICZwYXJhbXMpCi17Ci0gICAgb3MgPDwgcGFyYW1zLnN1ZmZpeCgpLnN1YnN0cigx
KTsKLSAgICByZXR1cm4gb3M7Ci19Ci0KLWNsYXNzIERyYXdDYWxsUGVyZkJlbmNobWFyayA6IHB1
YmxpYyBBTkdMRVJlbmRlclRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8RHJhd0NhbGxQZXJmUGFyYW1zPgotewot
ICBwdWJsaWM6Ci0gICAgRHJhd0NhbGxQZXJmQmVuY2htYXJrKCk7Ci0KLSAgICB2b2lkIGluaXRp
YWxpemVCZW5jaG1hcmsoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlc3Ryb3lCZW5jaG1hcmsoKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRyYXdCZW5jaG1hcmsoKSBvdmVycmlkZTsKLQotICBwcml2YXRl
OgotICAgIEdMdWludCBtUHJvZ3JhbSA9IDA7Ci0gICAgR0x1aW50IG1CdWZmZXIgID0gMDsKLSAg
ICBHTHVpbnQgbUZCTyAgICAgPSAwOwotICAgIEdMdWludCBtVGV4dHVyZSA9IDA7Ci0gICAgaW50
IG1OdW1UcmlzICAgID0gR2V0UGFyYW0oKS5udW1UcmlzOwotfTsKLQotRHJhd0NhbGxQZXJmQmVu
Y2htYXJrOjpEcmF3Q2FsbFBlcmZCZW5jaG1hcmsoKSA6IEFOR0xFUmVuZGVyVGVzdCgiRHJhd0Nh
bGxQZXJmIiwgR2V0UGFyYW0oKSkKLXsKLSAgICBtUnVuVGltZVNlY29uZHMgPSBHZXRQYXJhbSgp
LnJ1blRpbWVTZWNvbmRzOwotfQotCi12b2lkIERyYXdDYWxsUGVyZkJlbmNobWFyazo6aW5pdGlh
bGl6ZUJlbmNobWFyaygpCi17Ci0gICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsK
LQotICAgIEFTU0VSVF9MVCgwdSwgcGFyYW1zLml0ZXJhdGlvbnMpOwotCi0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgdnMgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBhdHRyaWJ1dGUgdmVj
MiB2UG9zaXRpb247Ci0gICAgICAgIHVuaWZvcm0gZmxvYXQgdVNjYWxlOwotICAgICAgICB1bmlm
b3JtIGZsb2F0IHVPZmZzZXQ7Ci0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNCh2UG9zaXRpb24gKiB2ZWMyKHVTY2FsZSkgLSB2ZWMy
KHVPZmZzZXQpLCAwLCAxKTsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICBjb25zdCBzdGQ6OnN0
cmluZyBmcyA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OwotICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7Ci0gICAgICAgIH0KLSAgICApOwot
Ci0gICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2cywgZnMpOwotICAgIEFTU0VSVF9ORSgw
dSwgbVByb2dyYW0pOwotCi0gICAgLy8gVXNlIHRoZSBwcm9ncmFtIG9iamVjdAotICAgIGdsVXNl
UHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwg
MC4wZik7Ci0KLSAgICBzdGQ6OnZlY3RvcjxHTGZsb2F0PiBmbG9hdERhdGE7Ci0KLSAgICBmb3Ig
KGludCBxdWFkSW5kZXggPSAwOyBxdWFkSW5kZXggPCBtTnVtVHJpczsgKytxdWFkSW5kZXgpCi0g
ICAgewotICAgICAgICBmbG9hdERhdGEucHVzaF9iYWNrKDEpOwotICAgICAgICBmbG9hdERhdGEu
cHVzaF9iYWNrKDIpOwotICAgICAgICBmbG9hdERhdGEucHVzaF9iYWNrKDApOwotICAgICAgICBm
bG9hdERhdGEucHVzaF9iYWNrKDApOwotICAgICAgICBmbG9hdERhdGEucHVzaF9iYWNrKDIpOwot
ICAgICAgICBmbG9hdERhdGEucHVzaF9iYWNrKDApOwotICAgIH0KLQotICAgIGdsR2VuQnVmZmVy
cygxLCAmbUJ1ZmZlcik7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZl
cik7Ci0KLSAgICAvLyBUbyBhdm9pZCBnZW5lcmF0aW5nIEdMIGVycm9ycyB3aGVuIHRlc3Rpbmcg
dmFsaWRhdGlvbi1vbmx5Ci0gICAgaWYgKGZsb2F0RGF0YS5lbXB0eSgpKQotICAgIHsKLSAgICAg
ICAgZmxvYXREYXRhLnB1c2hfYmFjaygwLjBmKTsKLSAgICB9Ci0KLSAgICBnbEJ1ZmZlckRhdGEo
R0xfQVJSQVlfQlVGRkVSLCBmbG9hdERhdGEuc2l6ZSgpICogc2l6ZW9mKEdMZmxvYXQpLCAmZmxv
YXREYXRhWzBdLCBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIo
MCwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAwKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KDApOwotCi0gICAgLy8gU2V0IHRoZSB2aWV3cG9ydAotICAgIGdsVmlld3BvcnQoMCwg
MCwgZ2V0V2luZG93KCktPmdldFdpZHRoKCksIGdldFdpbmRvdygpLT5nZXRIZWlnaHQoKSk7Ci0K
LSAgICBHTGZsb2F0IHNjYWxlID0gMC41ZjsKLSAgICBHTGZsb2F0IG9mZnNldCA9IDAuNWY7Ci0K
LSAgICBnbFVuaWZvcm0xZihnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInVTY2FsZSIp
LCBzY2FsZSk7Ci0gICAgZ2xVbmlmb3JtMWYoZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0s
ICJ1T2Zmc2V0IiksIG9mZnNldCk7Ci0KLSAgICBpZiAocGFyYW1zLnVzZUZCTykKLSAgICB7Ci0g
ICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtRkJPKTsKLSAgICAgICAgZ2xCaW5kRnJhbWVi
dWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GQk8pOwotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZt
VGV4dHVyZSk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUp
OwotICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgZ2V0V2lu
ZG93KCktPmdldFdpZHRoKCksIGdldFdpbmRvdygpLT5nZXRIZWlnaHQoKSwKLSAgICAgICAgICAg
ICAgICAgICAgIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotICAgICAg
ICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hN
RU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUsIDApOwotICAgIH0KLQotICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOwotfQotCi12b2lkIERyYXdDYWxsUGVyZkJlbmNobWFyazo6ZGVzdHJveUJl
bmNobWFyaygpCi17Ci0gICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBnbERlbGV0
ZUJ1ZmZlcnMoMSwgJm1CdWZmZXIpOwotICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJl
KTsKLSAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbUZCTyk7Ci19Ci0KLXZvaWQgRHJhd0Nh
bGxQZXJmQmVuY2htYXJrOjpkcmF3QmVuY2htYXJrKCkKLXsKLSAgICAvLyBUaGlzIHdvcmthcm91
bmQgZml4ZXMgYSBodWdlIHF1ZXVlIG9mIGdyYXBoaWNzIGNvbW1hbmRzIGFjY3VtdWxhdGluZyBv
biB0aGUgR0wKLSAgICAvLyBiYWNrLWVuZC4gVGhlIEdMIGJhY2stZW5kIGRvZXNuJ3QgaGF2ZSBh
IHByb3BlciBOVUxMIGRldmljZSBhdCB0aGUgbW9tZW50LgotICAgIC8vIFRPRE8oam1hZGlsbCk6
IFJlbW92ZSB0aGlzIHdoZW4vaWYgd2UgZXZlciBnZXQgYSBwcm9wZXIgT3BlbkdMIE5VTEwgZGV2
aWNlLgotICAgIGNvbnN0IGF1dG8gJmVnbFBhcmFtcyA9IEdldFBhcmFtKCkuZWdsUGFyYW1ldGVy
czsKLSAgICBpZiAoZWdsUGFyYW1zLmRldmljZVR5cGUgIT0gRUdMX1BMQVRGT1JNX0FOR0xFX0RF
VklDRV9UWVBFX05VTExfQU5HTEUgfHwKLSAgICAgICAgKGVnbFBhcmFtcy5yZW5kZXJlciAhPSBF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUgJiYKLSAgICAgICAgIGVnbFBhcmFt
cy5yZW5kZXJlciAhPSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRSkpCi0g
ICAgewotICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIH0KLQotICAg
IGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpdCA9IDA7IGl0IDwgcGFyYW1zLml0ZXJhdGlvbnM7IGl0KyspCi0gICAgewotICAgICAgICBn
bERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCBzdGF0aWNfY2FzdDxHTHNpemVpPigzICogbU51
bVRyaXMpKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotdXNpbmcg
bmFtZXNwYWNlIGVnbF9wbGF0Zm9ybTsKLQotRHJhd0NhbGxQZXJmUGFyYW1zIERyYXdDYWxsUGVy
ZkQzRDExUGFyYW1zKGJvb2wgdXNlTnVsbERldmljZSwgYm9vbCByZW5kZXJUb1RleHR1cmUpCi17
Ci0gICAgRHJhd0NhbGxQZXJmUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVy
cyA9IHVzZU51bGxEZXZpY2UgPyBEM0QxMV9OVUxMKCkgOiBEM0QxMSgpOwotICAgIHBhcmFtcy51
c2VGQk8gICAgICAgID0gcmVuZGVyVG9UZXh0dXJlOwotICAgIHJldHVybiBwYXJhbXM7Ci19Ci0K
LURyYXdDYWxsUGVyZlBhcmFtcyBEcmF3Q2FsbFBlcmZEM0Q5UGFyYW1zKGJvb2wgdXNlTnVsbERl
dmljZSwgYm9vbCByZW5kZXJUb1RleHR1cmUpCi17Ci0gICAgRHJhd0NhbGxQZXJmUGFyYW1zIHBh
cmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IHVzZU51bGxEZXZpY2UgPyBEM0Q5X05V
TEwoKSA6IEQzRDkoKTsKLSAgICBwYXJhbXMudXNlRkJPICAgICAgICA9IHJlbmRlclRvVGV4dHVy
ZTsKLSAgICByZXR1cm4gcGFyYW1zOwotfQotCi1EcmF3Q2FsbFBlcmZQYXJhbXMgRHJhd0NhbGxQ
ZXJmT3BlbkdMUGFyYW1zKGJvb2wgdXNlTnVsbERldmljZSwgYm9vbCByZW5kZXJUb1RleHR1cmUp
Ci17Ci0gICAgRHJhd0NhbGxQZXJmUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1l
dGVycyA9IHVzZU51bGxEZXZpY2UgPyBPUEVOR0xfTlVMTCgpIDogT1BFTkdMKCk7Ci0gICAgcGFy
YW1zLnVzZUZCTyAgICAgICAgPSByZW5kZXJUb1RleHR1cmU7Ci0gICAgcmV0dXJuIHBhcmFtczsK
LX0KLQotRHJhd0NhbGxQZXJmUGFyYW1zIERyYXdDYWxsUGVyZlZhbGlkYXRpb25Pbmx5KCkKLXsK
LSAgICBEcmF3Q2FsbFBlcmZQYXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJz
ID0gREVGQVVMVCgpOwotICAgIHBhcmFtcy5pdGVyYXRpb25zICAgICA9IDEwMDAwOwotICAgIHBh
cmFtcy5udW1UcmlzID0gMDsKLSAgICBwYXJhbXMucnVuVGltZVNlY29uZHMgPSA1LjA7Ci0gICAg
cmV0dXJuIHBhcmFtczsKLX0KLQotVEVTVF9QKERyYXdDYWxsUGVyZkJlbmNobWFyaywgUnVuKQot
ewotICAgIHJ1bigpOwotfQotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKERyYXdDYWxsUGVyZkJl
bmNobWFyaywKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0NhbGxQZXJmRDNEOVBhcmFtcyhm
YWxzZSwgZmFsc2UpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3Q2FsbFBlcmZEM0Q5UGFy
YW1zKHRydWUsIGZhbHNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0NhbGxQZXJmRDNE
MTFQYXJhbXMoZmFsc2UsIGZhbHNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHJhd0NhbGxQ
ZXJmRDNEMTFQYXJhbXModHJ1ZSwgZmFsc2UpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3
Q2FsbFBlcmZEM0QxMVBhcmFtcyh0cnVlLCB0cnVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
RHJhd0NhbGxQZXJmT3BlbkdMUGFyYW1zKGZhbHNlLCBmYWxzZSksCi0gICAgICAgICAgICAgICAg
ICAgICAgIERyYXdDYWxsUGVyZk9wZW5HTFBhcmFtcyh0cnVlLCBmYWxzZSksCi0gICAgICAgICAg
ICAgICAgICAgICAgIERyYXdDYWxsUGVyZk9wZW5HTFBhcmFtcyh0cnVlLCB0cnVlKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRHJhd0NhbGxQZXJmVmFsaWRhdGlvbk9ubHkoKSk7Ci0KLX0gLy8g
bmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
cGVyZl90ZXN0cy9EeW5hbWljUHJvbW90aW9uUGVyZlRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvRHluYW1pY1Byb21vdGlvblBlcmZUZXN0LmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzM4MzE0MzU0YmUxNjVlNzMwODE0ZmIz
YWM1ZTUyYmZmNjg4ZmVmOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9EeW5h
bWljUHJvbW90aW9uUGVyZlRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAK
LS8vCi0vLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KLS8vCi0vLyBEeW5hbWljUHJvbW90aW9uUGVyZlRlc3Q6Ci0vLyAgIFRlc3RzIHRoYXQg
QU5HTEUgd2lsbCBwcm9tb3RlIGJ1ZmZlciBzcGVjZmllZCB3aXRoIERZTkFNSUMgdXNhZ2UgdG8g
c3RhdGljIGFmdGVyIGEgbnVtYmVyIG9mCi0vLyAgIGl0ZXJhdGlvbnMgd2l0aG91dCBjaGFuZ2lu
ZyB0aGUgZGF0YS4gSXQgc3BlY2lmaWNhbGx5IGFmZmVjdHMgdGhlIEQzRCBiYWNrLWVuZCwgd2hp
Y2ggdHJlYXRzCi0vLyAgIGR5bmFtaWMgYW5kIHN0YXRpYyBidWZmZXJzIHF1aXRlIGRpZmZlcmVu
dGx5LgotLy8KLQotI2luY2x1ZGUgIkFOR0xFUGVyZlRlc3QuaCIKLSNpbmNsdWRlICJyYW5kb21f
dXRpbHMuaCIKLSNpbmNsdWRlICJzaGFkZXJfdXRpbHMuaCIKLSNpbmNsdWRlICJWZWN0b3IuaCIK
LQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotc3RydWN0IER5bmFt
aWNQcm9tb3Rpb25QYXJhbXMgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGVzdFBhcmFtcwotewotICAg
IER5bmFtaWNQcm9tb3Rpb25QYXJhbXMoKTsKLSAgICBzdGQ6OnN0cmluZyBzdWZmaXgoKSBjb25z
dCBvdmVycmlkZTsKLQotICAgIHNpemVfdCB2ZXJ0ZXhDb3VudDsKLSAgICB1bnNpZ25lZCBpbnQg
aXRlcmF0aW9uczsKLX07Ci0KLUR5bmFtaWNQcm9tb3Rpb25QYXJhbXM6OkR5bmFtaWNQcm9tb3Rp
b25QYXJhbXMoKSA6IHZlcnRleENvdW50KDEwMjQpLCBpdGVyYXRpb25zKDQpCi17Ci19Ci0KLXN0
ZDo6c3RyaW5nIER5bmFtaWNQcm9tb3Rpb25QYXJhbXM6OnN1ZmZpeCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIFJlbmRlclRlc3RQYXJhbXM6OnN1ZmZpeCgpOwotfQotCi1zdGQ6Om9zdHJlYW0gJm9w
ZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgY29uc3QgRHluYW1pY1Byb21vdGlvblBhcmFtcyAm
cGFyYW1zKQotewotICAgIG9zIDw8IHBhcmFtcy5zdWZmaXgoKS5zdWJzdHIoMSk7Ci0gICAgcmV0
dXJuIG9zOwotfQotCi1jbGFzcyBEeW5hbWljUHJvbW90aW9uUGVyZlRlc3QgOiBwdWJsaWMgQU5H
TEVSZW5kZXJUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHRl
c3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxEeW5hbWljUHJvbW90aW9uUGFyYW1zPgotewotICBw
dWJsaWM6Ci0gICAgRHluYW1pY1Byb21vdGlvblBlcmZUZXN0KCk7Ci0KLSAgICB2b2lkIGluaXRp
YWxpemVCZW5jaG1hcmsoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlc3Ryb3lCZW5jaG1hcmsoKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRyYXdCZW5jaG1hcmsoKSBvdmVycmlkZTsKLQotICBwcml2YXRl
OgotICAgIEdMdWludCBtUHJvZ3JhbTsKLSAgICBHTHVpbnQgbUVsZW1lbnRBcnJheUJ1ZmZlcjsK
LSAgICBHTHVpbnQgbUFycmF5QnVmZmVyOwotfTsKLQotRHluYW1pY1Byb21vdGlvblBlcmZUZXN0
OjpEeW5hbWljUHJvbW90aW9uUGVyZlRlc3QoKQotICAgIDogQU5HTEVSZW5kZXJUZXN0KCJEeW5h
bWljUHJvbW90aW9uIiwgR2V0UGFyYW0oKSksCi0gICAgICBtUHJvZ3JhbSgwKSwKLSAgICAgIG1F
bGVtZW50QXJyYXlCdWZmZXIoMCksCi0gICAgICBtQXJyYXlCdWZmZXIoMCkKLXsKLX0KLQotdm9p
ZCBEeW5hbWljUHJvbW90aW9uUGVyZlRlc3Q6OmluaXRpYWxpemVCZW5jaG1hcmsoKQotewotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAiYXR0cmli
dXRlIHZlYzIgcG9zaXRpb247XG4iCi0gICAgICAgICJhdHRyaWJ1dGUgdmVjMyBjb2xvcjtcbiIK
LSAgICAgICAgInZhcnlpbmcgdmVjMyB2Q29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxu
IgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIHZDb2xvciA9IGNvbG9yO1xuIgotICAgICAg
ICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMCwgMSk7XG4iCi0gICAgICAgICJ9
IjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAg
ICAgICJ2YXJ5aW5nIG1lZGl1bXAgdmVjMyB2Q29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQodkNv
bG9yLCAxKTtcbiIKLSAgICAgICAgIn0iOwotCi0gICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3Jh
bSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBBU1NFUlRf
TkUoMHUsIG1Qcm9ncmFtKTsKLQotICAgIGNvbnN0IHNpemVfdCB2ZXJ0ZXhDb3VudCA9IEdldFBh
cmFtKCkudmVydGV4Q291bnQ7Ci0KLSAgICBzdGQ6OnZlY3RvcjxHTHVzaG9ydD4gaW5kZXhEYXRh
OwotICAgIHN0ZDo6dmVjdG9yPFZlY3RvcjI+IHBvc2l0aW9uRGF0YTsKLSAgICBzdGQ6OnZlY3Rv
cjxWZWN0b3IzPiBjb2xvckRhdGE7Ci0KLSAgICBBU1NFUlRfR0Uoc3RhdGljX2Nhc3Q8c2l6ZV90
PihzdGQ6Om51bWVyaWNfbGltaXRzPEdMdXNob3J0Pjo6bWF4KCkpLCB2ZXJ0ZXhDb3VudCk7Ci0K
LSAgICBSTkcgcm5nKDEpOwotCi0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IHZl
cnRleENvdW50OyArK2luZGV4KQotICAgIHsKLSAgICAgICAgaW5kZXhEYXRhLnB1c2hfYmFjayhz
dGF0aWNfY2FzdDxHTHVzaG9ydD4oaW5kZXgpKTsKLQotICAgICAgICBWZWN0b3IyIHBvc2l0aW9u
KHJuZy5yYW5kb21OZWdhdGl2ZU9uZVRvT25lKCksIHJuZy5yYW5kb21OZWdhdGl2ZU9uZVRvT25l
KCkpOwotICAgICAgICBwb3NpdGlvbkRhdGEucHVzaF9iYWNrKHBvc2l0aW9uKTsKLQotICAgICAg
ICBWZWN0b3IzIGNvbG9yKHJuZy5yYW5kb21GbG9hdCgpLCBybmcucmFuZG9tRmxvYXQoKSwgcm5n
LnJhbmRvbUZsb2F0KCkpOwotICAgICAgICBjb2xvckRhdGEucHVzaF9iYWNrKGNvbG9yKTsKLSAg
ICB9Ci0KLSAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1FbGVtZW50QXJyYXlCdWZmZXIpOwotICAgIGds
R2VuQnVmZmVycygxLCAmbUFycmF5QnVmZmVyKTsKLQotICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVN
RU5UX0FSUkFZX0JVRkZFUiwgbUVsZW1lbnRBcnJheUJ1ZmZlcik7Ci0gICAgZ2xCaW5kQnVmZmVy
KEdMX0FSUkFZX0JVRkZFUiwgbUFycmF5QnVmZmVyKTsKLQotICAgIEdMc2l6ZWlwdHIgZWxlbWVu
dEFycmF5U2l6ZSAgPSBzaXplb2YoR0x1c2hvcnQpICogdmVydGV4Q291bnQ7Ci0gICAgR0xzaXpl
aXB0ciBwb3NpdGlvbkFycmF5U2l6ZSA9IHNpemVvZihWZWN0b3IyKSAqIHZlcnRleENvdW50Owot
ICAgIEdMc2l6ZWlwdHIgY29sb3JBcnJheVNpemUgICAgPSBzaXplb2YoVmVjdG9yMykgKiB2ZXJ0
ZXhDb3VudDsKLQotICAgIC8vIFRoZSBEWU5BTUlDX0RSQVcgdXNhZ2UgaXMgdGhlIGtleSB0byB0
aGUgdGVzdC4KLSAgICBnbEJ1ZmZlckRhdGEoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGVsZW1l
bnRBcnJheVNpemUsIGluZGV4RGF0YS5kYXRhKCksIEdMX0RZTkFNSUNfRFJBVyk7Ci0gICAgZ2xC
dWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgcG9zaXRpb25BcnJheVNpemUgKyBjb2xvckFycmF5
U2l6ZSwgbnVsbHB0ciwgR0xfRFlOQU1JQ19EUkFXKTsKLSAgICBnbEJ1ZmZlclN1YkRhdGEoR0xf
QVJSQVlfQlVGRkVSLCAwLCBwb3NpdGlvbkFycmF5U2l6ZSwgcG9zaXRpb25EYXRhLmRhdGEoKSk7
Ci0gICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgcG9zaXRpb25BcnJheVNpemUs
IGNvbG9yQXJyYXlTaXplLCBjb2xvckRhdGEuZGF0YSgpKTsKLQotICAgIGdsVXNlUHJvZ3JhbSht
UHJvZ3JhbSk7Ci0gICAgR0xpbnQgcG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRp
b24obVByb2dyYW0sICJwb3NpdGlvbiIpOwotICAgIEFTU0VSVF9ORSgtMSwgcG9zaXRpb25Mb2Nh
dGlvbik7Ci0gICAgR0xpbnQgY29sb3JMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVBy
b2dyYW0sICJjb2xvciIpOwotICAgIEFTU0VSVF9ORSgtMSwgY29sb3JMb2NhdGlvbik7Ci0KLSAg
ICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdM
X0ZBTFNFLCAwLCBudWxscHRyKTsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoY29sb3JMb2Nh
dGlvbiwgMywgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICByZWludGVycHJldF9jYXN0PGNvbnN0IEdMdm9pZCAqPihwb3NpdGlvbkFycmF5U2l6ZSkpOwot
Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKLSAgICBn
bEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGNvbG9yTG9jYXRpb24pOwotCi0gICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci19Ci0KLXZvaWQgRHluYW1pY1Byb21vdGlvblBlcmZUZXN0OjpkZXN0cm95
QmVuY2htYXJrKCkKLXsKLSAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotICAgIGdsRGVs
ZXRlQnVmZmVycygxLCAmbUVsZW1lbnRBcnJheUJ1ZmZlcik7Ci0gICAgZ2xEZWxldGVCdWZmZXJz
KDEsICZtQXJyYXlCdWZmZXIpOwotfQotCi12b2lkIER5bmFtaWNQcm9tb3Rpb25QZXJmVGVzdDo6
ZHJhd0JlbmNobWFyaygpCi17Ci0gICAgdW5zaWduZWQgaW50IGl0ZXJhdGlvbnMgPSBHZXRQYXJh
bSgpLml0ZXJhdGlvbnM7Ci0gICAgc2l6ZV90IHZlcnRleENvdW50ICAgICAgPSBHZXRQYXJhbSgp
LnZlcnRleENvdW50OwotCi0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICBm
b3IgKHVuc2lnbmVkIGludCBjb3VudCA9IDA7IGNvdW50IDwgaXRlcmF0aW9uczsgKytjb3VudCkK
LSAgICB7Ci0gICAgICAgIGdsRHJhd0VsZW1lbnRzKEdMX1RSSUFOR0xFUywgc3RhdGljX2Nhc3Q8
R0xzaXplaT4odmVydGV4Q291bnQpLCBHTF9VTlNJR05FRF9TSE9SVCwgbnVsbHB0cik7Ci0gICAg
fQotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLUR5bmFtaWNQcm9tb3Rpb25QYXJh
bXMgRHluYW1pY1Byb21vdGlvbkQzRDExUGFyYW1zKCkKLXsKLSAgICBEeW5hbWljUHJvbW90aW9u
UGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6
RDNEMTEoKTsKLSAgICByZXR1cm4gcGFyYW1zOwotfQotCi1EeW5hbWljUHJvbW90aW9uUGFyYW1z
IER5bmFtaWNQcm9tb3Rpb25EM0Q5UGFyYW1zKCkKLXsKLSAgICBEeW5hbWljUHJvbW90aW9uUGFy
YW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNE
OSgpOwotICAgIHJldHVybiBwYXJhbXM7Ci19Ci0KLVRFU1RfUChEeW5hbWljUHJvbW90aW9uUGVy
ZlRlc3QsIFJ1bikKLXsKLSAgICBydW4oKTsKLX0KLQotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChE
eW5hbWljUHJvbW90aW9uUGVyZlRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNQ
cm9tb3Rpb25EM0QxMVBhcmFtcygpLAotICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljUHJv
bW90aW9uRDNEOVBhcmFtcygpKTsKLQotfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvRUdMSW5p
dGlhbGl6ZVBlcmYuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZf
dGVzdHMvRUdMSW5pdGlhbGl6ZVBlcmYuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAyMTBiYTI3NDVjZWQ5NzVkODA5N2YyMGIxY2JkZGIxMjIwNmJhNDg1Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0VHTEluaXRpYWxpemVQZXJmLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDE2MSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gRUdMSW5pdGlhbGl6ZVBlcmZUZXN0Ogot
Ly8gICBQZXJmb3JtYW5jZSB0ZXN0IGZvciBkZXZpY2UgY3JlYXRpb24uCi0vLwotCi0jaW5jbHVk
ZSAiQU5HTEVQZXJmVGVzdC5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSAidGVzdF91
dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuaCIKLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rl
c3RfaW5zdGFudGlhdGUuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9QbGF0Zm9ybS5oIgotCi11c2lu
ZyBuYW1lc3BhY2UgdGVzdGluZzsKLQotbmFtZXNwYWNlCi17Ci0KLS8vIE9ubHkgYXBwbGllcyB0
byBEM0QxMQotY2xhc3MgQ2FwdHVyZVBsYXRmb3JtIDogcHVibGljIGFuZ2xlOjpQbGF0Zm9ybQot
ewotICBwdWJsaWM6Ci0gICAgQ2FwdHVyZVBsYXRmb3JtKCkKLSAgICAgICAgOiBtVGltZXIoQ3Jl
YXRlVGltZXIoKSksCi0gICAgICAgICAgbUxvYWRETExzTVMoMCksCi0gICAgICAgICAgbUNyZWF0
ZURldmljZU1TKDApLAotICAgICAgICAgIG1Jbml0UmVzb3VyY2VzTVMoMCkKLSAgICB7Ci0gICAg
ICAgIG1UaW1lci0+c3RhcnQoKTsKLSAgICB9Ci0KLSAgICBkb3VibGUgY3VycmVudFRpbWUoKSBv
dmVycmlkZTsKLSAgICB2b2lkIGhpc3RvZ3JhbUN1c3RvbUNvdW50cygKLSAgICAgICAgY29uc3Qg
Y2hhciAqbmFtZSwgaW50IHNhbXBsZSwgaW50IG1pbiwgaW50IG1heCwgaW50IGJ1Y2tldENvdW50
KSBvdmVycmlkZTsKLQotICAgIHNpemVfdCBnZXRMb2FkRExMc01TKCkgY29uc3QgeyByZXR1cm4g
bUxvYWRETExzTVM7IH0KLSAgICBzaXplX3QgZ2V0Q3JlYXRlRGV2aWNlTVMoKSBjb25zdCB7IHJl
dHVybiBtQ3JlYXRlRGV2aWNlTVM7IH0KLSAgICBzaXplX3QgZ2V0SW5pdFJlc291cmNlc01TKCkg
Y29uc3QgeyByZXR1cm4gbUluaXRSZXNvdXJjZXNNUzsgfQotCi0gIHByaXZhdGU6Ci0gICAgVGlt
ZXIgKm1UaW1lcjsKLSAgICBzaXplX3QgbUxvYWRETExzTVM7Ci0gICAgc2l6ZV90IG1DcmVhdGVE
ZXZpY2VNUzsKLSAgICBzaXplX3QgbUluaXRSZXNvdXJjZXNNUzsKLX07Ci0KLWRvdWJsZSBDYXB0
dXJlUGxhdGZvcm06OmN1cnJlbnRUaW1lKCkKLXsKLSAgICByZXR1cm4gbVRpbWVyLT5nZXRFbGFw
c2VkVGltZSgpOwotfQotCi12b2lkIENhcHR1cmVQbGF0Zm9ybTo6aGlzdG9ncmFtQ3VzdG9tQ291
bnRzKAotICAgIGNvbnN0IGNoYXIgKm5hbWUsIGludCBzYW1wbGUsIGludCAvKm1pbiovLCBpbnQg
LyptYXgqLywgaW50IC8qYnVja2V0Q291bnQqLykKLXsKLSAgICAvLyBUaGVzZSBtdXN0IG1hdGNo
IHRoZSBuYW1lcyBvZiB0aGUgaGlzdG9ncmFtcy4KLSAgICBpZiAoc3RyY21wKG5hbWUsICJHUFUu
QU5HTEUuUmVuZGVyZXIxMUluaXRpYWxpemVETExzTVMiKSA9PSAwKQotICAgIHsKLSAgICAgICAg
bUxvYWRETExzTVMgKz0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzYW1wbGUpOwotICAgIH0KLSAgICAv
LyBOb3RlOiBub3QgY2FwdHVyZWQgaW4gZGVidWcsIGR1ZSB0byBjcmVhdGluZyBhIGRlYnVnIGRl
dmljZQotICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAiR1BVLkFOR0xFLkQzRDExQ3JlYXRlRGV2
aWNlTVMiKSA9PSAwKQotICAgIHsKLSAgICAgICAgbUNyZWF0ZURldmljZU1TICs9IHN0YXRpY19j
YXN0PHNpemVfdD4oc2FtcGxlKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc3RyY21wKG5hbWUsICJH
UFUuQU5HTEUuUmVuZGVyZXIxMUluaXRpYWxpemVEZXZpY2VNUyIpID09IDApCi0gICAgewotICAg
ICAgICBtSW5pdFJlc291cmNlc01TICs9IHN0YXRpY19jYXN0PHNpemVfdD4oc2FtcGxlKTsKLSAg
ICB9Ci19Ci0KLWNsYXNzIEVHTEluaXRpYWxpemVQZXJmVGVzdCA6IHB1YmxpYyBBTkdMRVBlcmZU
ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdpdGhQYXJhbUludGVy
ZmFjZTxhbmdsZTo6UGxhdGZvcm1QYXJhbWV0ZXJzPgotewotICBwdWJsaWM6Ci0gICAgRUdMSW5p
dGlhbGl6ZVBlcmZUZXN0KCk7Ci0gICAgfkVHTEluaXRpYWxpemVQZXJmVGVzdCgpOwotCi0gICAg
dm9pZCBzdGVwKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlOwotCi0g
IHByaXZhdGU6Ci0gICAgT1NXaW5kb3cgKm1PU1dpbmRvdzsKLSAgICBFR0xEaXNwbGF5IG1EaXNw
bGF5OwotICAgIENhcHR1cmVQbGF0Zm9ybSBtQ2FwdHVyZVBsYXRmb3JtOwotfTsKLQotRUdMSW5p
dGlhbGl6ZVBlcmZUZXN0OjpFR0xJbml0aWFsaXplUGVyZlRlc3QoKQotICAgIDogQU5HTEVQZXJm
VGVzdCgiRUdMSW5pdGlhbGl6ZSIsICJfcnVuIiksCi0gICAgICBtT1NXaW5kb3cobnVsbHB0ciks
Ci0gICAgICBtRGlzcGxheShFR0xfTk9fRElTUExBWSkKLXsKLSAgICBhdXRvIHBsYXRmb3JtID0g
R2V0UGFyYW0oKS5lZ2xQYXJhbWV0ZXJzOwotCi0gICAgc3RkOjp2ZWN0b3I8RUdMaW50PiBkaXNw
bGF5QXR0cmlidXRlczsKLSAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfQU5HTEUpOwotICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhw
bGF0Zm9ybS5yZW5kZXJlcik7Ci0gICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9Q
TEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NQUpPUl9BTkdMRSk7Ci0gICAgZGlzcGxheUF0dHJp
YnV0ZXMucHVzaF9iYWNrKHBsYXRmb3JtLm1ham9yVmVyc2lvbik7Ci0gICAgZGlzcGxheUF0dHJp
YnV0ZXMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NSU5PUl9BTkdM
RSk7Ci0gICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9iYWNrKHBsYXRmb3JtLm1pbm9yVmVyc2lv
bik7Ci0KLSAgICBpZiAocGxhdGZvcm0ucmVuZGVyZXIgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfRDNEOV9BTkdMRSB8fAotICAgICAgICBwbGF0Zm9ybS5yZW5kZXJlciA9PSBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKLSAgICB7Ci0gICAgICAgIGRpc3BsYXlBdHRyaWJ1
dGVzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEUpOwotICAg
ICAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2socGxhdGZvcm0uZGV2aWNlVHlwZSk7Ci0g
ICAgfQotICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfTk9ORSk7Ci0KLSAgICBt
T1NXaW5kb3cgPSBDcmVhdGVPU1dpbmRvdygpOwotICAgIG1PU1dpbmRvdy0+aW5pdGlhbGl6ZSgi
RUdMSW5pdGlhbGl6ZSBUZXN0IiwgNjQsIDY0KTsKLQotICAgIGF1dG8gZWdsR2V0UGxhdGZvcm1E
aXNwbGF5RVhUID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xHRVRQTEFURk9STURJ
U1BMQVlFWFRQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhU
IikpOwotICAgIGlmIChlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQgPT0gbnVsbHB0cikKLSAgICB7
Ci0gICAgICAgIHN0ZDo6Y2VyciA8PCAiRXJyb3IgZ2V0dGluZyBwbGF0Zm9ybSBkaXNwbGF5ISIg
PDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbURpc3BsYXkgPSBl
Z2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQoRUdMX1BMQVRGT1JNX0FOR0xFX0FOR0xFLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAq
PihtT1NXaW5kb3ctPmdldE5hdGl2ZURpc3BsYXkoKSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmRpc3BsYXlBdHRyaWJ1dGVzWzBdKTsKLQotICAgIEFOR0xFUGxh
dGZvcm1Jbml0aWFsaXplKCZtQ2FwdHVyZVBsYXRmb3JtKTsKLX0KLQotRUdMSW5pdGlhbGl6ZVBl
cmZUZXN0Ojp+RUdMSW5pdGlhbGl6ZVBlcmZUZXN0KCkKLXsKLSAgICBTYWZlRGVsZXRlKG1PU1dp
bmRvdyk7Ci19Ci0KLXZvaWQgRUdMSW5pdGlhbGl6ZVBlcmZUZXN0OjpzdGVwKCkKLXsKLSAgICBB
U1NFUlRfTkUoRUdMX05PX0RJU1BMQVksIG1EaXNwbGF5KTsKLQotICAgIEVHTGludCBtYWpvclZl
cnNpb24sIG1pbm9yVmVyc2lvbjsKLSAgICBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8RUdMQm9vbGVh
bj4oRUdMX1RSVUUpLCBlZ2xJbml0aWFsaXplKG1EaXNwbGF5LCAmbWFqb3JWZXJzaW9uLCAmbWlu
b3JWZXJzaW9uKSk7Ci0gICAgQVNTRVJUX0VRKHN0YXRpY19jYXN0PEVHTEJvb2xlYW4+KEVHTF9U
UlVFKSwgZWdsVGVybWluYXRlKG1EaXNwbGF5KSk7Ci19Ci0KLXZvaWQgRUdMSW5pdGlhbGl6ZVBl
cmZUZXN0OjpUZWFyRG93bigpCi17Ci0gICAgQU5HTEVQZXJmVGVzdDo6VGVhckRvd24oKTsKLSAg
ICBwcmludFJlc3VsdCgiTG9hZERMTHMiLCBub3JtYWxpemVkVGltZShtQ2FwdHVyZVBsYXRmb3Jt
LmdldExvYWRETExzTVMoKSksICJtcyIsIHRydWUpOwotICAgIHByaW50UmVzdWx0KCJEM0QxMUNy
ZWF0ZURldmljZSIsIG5vcm1hbGl6ZWRUaW1lKG1DYXB0dXJlUGxhdGZvcm0uZ2V0Q3JlYXRlRGV2
aWNlTVMoKSksICJtcyIsIHRydWUpOwotICAgIHByaW50UmVzdWx0KCJJbml0UmVzb3VyY2VzIiwg
bm9ybWFsaXplZFRpbWUobUNhcHR1cmVQbGF0Zm9ybS5nZXRJbml0UmVzb3VyY2VzTVMoKSksICJt
cyIsIHRydWUpOwotCi0gICAgQU5HTEVQbGF0Zm9ybVNodXRkb3duKCk7Ci19Ci0KLVRFU1RfUChF
R0xJbml0aWFsaXplUGVyZlRlc3QsIFJ1bikKLXsKLSAgICBydW4oKTsKLX0KLQotQU5HTEVfSU5T
VEFOVElBVEVfVEVTVChFR0xJbml0aWFsaXplUGVyZlRlc3QsIGFuZ2xlOjpFUzJfRDNEMTEoKSk7
Ci0KLX0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvcGVyZl90ZXN0cy9JbmRleENvbnZlcnNpb25QZXJmLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0luZGV4Q29udmVyc2lvblBlcmYuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDVlNzlkMDllYjcxMzc5Mjg3ZTU0ZDhi
ZDBhMjA1MTZkMmQ0OTg4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0luZGV4
Q29udmVyc2lvblBlcmYuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjcxICswLDAgQEAKLS8vCi0v
LyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
LS8vCi0vLyBJbmRleENvbnZlcnNpb25QZXJmOgotLy8gICBQZXJmb3JtYW5jZSB0ZXN0cyBmb3Ig
QU5HTEUgaW5kZXggY29udmVyc2lvbiBpbiBEM0QxMS4KLS8vCi0KLSNpbmNsdWRlIDxzc3RyZWFt
PgotCi0jaW5jbHVkZSAiQU5HTEVQZXJmVGVzdC5oIgotI2luY2x1ZGUgInNoYWRlcl91dGlscy5o
IgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1zdHJ1Y3QgSW5k
ZXhDb252ZXJzaW9uUGVyZlBhcmFtcyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUZXN0UGFyYW1zCi17
Ci0gICAgc3RkOjpzdHJpbmcgc3VmZml4KCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IHN0ZDo6c3RyaW5nc3RyZWFtIHN0cnN0cjsKLQotICAgICAgICBpZiAoaW5kZXhSYW5nZU9mZnNl
dCA+IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cnN0ciA8PCAiX2luZGV4X3JhbmdlIjsK
LSAgICAgICAgfQotCi0gICAgICAgIHN0cnN0ciA8PCBSZW5kZXJUZXN0UGFyYW1zOjpzdWZmaXgo
KTsKLQotICAgICAgICByZXR1cm4gc3Ryc3RyLnN0cigpOwotICAgIH0KLQotICAgIHVuc2lnbmVk
IGludCBpdGVyYXRpb25zOwotICAgIHVuc2lnbmVkIGludCBudW1JbmRleFRyaXM7Ci0KLSAgICAv
LyBBIHNlY29uZCB0ZXN0LCB3aGljaCBjb3ZlcnMgdXNpbmcgaW5kZXggcmFuZ2VzIHdpdGggYW4g
b2Zmc2V0LgotICAgIHVuc2lnbmVkIGludCBpbmRleFJhbmdlT2Zmc2V0OwotfTsKLQotLy8gUHJv
dmlkZSBhIGN1c3RvbSBndGVzdCBwYXJhbWV0ZXIgbmFtZSBmdW5jdGlvbiBmb3IgSW5kZXhDb252
ZXJzaW9uUGVyZlBhcmFtcy4KLXN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0g
JnN0cmVhbSwgY29uc3QgSW5kZXhDb252ZXJzaW9uUGVyZlBhcmFtcyAmcGFyYW0pCi17Ci0gICAg
c3RyZWFtIDw8IHBhcmFtLnN1ZmZpeCgpLnN1YnN0cigxKTsKLSAgICByZXR1cm4gc3RyZWFtOwot
fQotCi1jbGFzcyBJbmRleENvbnZlcnNpb25QZXJmVGVzdCA6IHB1YmxpYyBBTkdMRVJlbmRlclRl
c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyA6OnRlc3Rpbmc6Oldp
dGhQYXJhbUludGVyZmFjZTxJbmRleENvbnZlcnNpb25QZXJmUGFyYW1zPgotewotICBwdWJsaWM6
Ci0gICAgSW5kZXhDb252ZXJzaW9uUGVyZlRlc3QoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUJl
bmNobWFyaygpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVzdHJveUJlbmNobWFyaygpIG92ZXJyaWRl
OwotICAgIHZvaWQgZHJhd0JlbmNobWFyaygpIG92ZXJyaWRlOwotCi0gIHByaXZhdGU6Ci0gICAg
dm9pZCB1cGRhdGVCdWZmZXJEYXRhKCk7Ci0gICAgdm9pZCBkcmF3Q29udmVyc2lvbigpOwotICAg
IHZvaWQgZHJhd0luZGV4UmFuZ2UoKTsKLQotICAgIEdMdWludCBtUHJvZ3JhbTsKLSAgICBHTHVp
bnQgbVZlcnRleEJ1ZmZlcjsKLSAgICBHTHVpbnQgbUluZGV4QnVmZmVyOwotICAgIHN0ZDo6dmVj
dG9yPEdMdXNob3J0PiBtSW5kZXhEYXRhOwotfTsKLQotSW5kZXhDb252ZXJzaW9uUGVyZlRlc3Q6
OkluZGV4Q29udmVyc2lvblBlcmZUZXN0KCkKLSAgICA6IEFOR0xFUmVuZGVyVGVzdCgiSW5kZXhD
b252ZXJzaW9uUGVyZlRlc3QiLCBHZXRQYXJhbSgpKSwKLSAgICAgIG1Qcm9ncmFtKDApLAotICAg
ICAgbVZlcnRleEJ1ZmZlcigwKSwKLSAgICAgIG1JbmRleEJ1ZmZlcigwKQotewotICAgIG1SdW5U
aW1lU2Vjb25kcyA9IDMuMDsKLX0KLQotdm9pZCBJbmRleENvbnZlcnNpb25QZXJmVGVzdDo6aW5p
dGlhbGl6ZUJlbmNobWFyaygpCi17Ci0gICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0o
KTsKLQotICAgIEFTU0VSVF9MVCgwdSwgcGFyYW1zLml0ZXJhdGlvbnMpOwotICAgIEFTU0VSVF9M
VCgwdSwgcGFyYW1zLm51bUluZGV4VHJpcyk7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyB2cyA9
IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIGF0dHJpYnV0ZSB2ZWMyIHZQb3NpdGlvbjsK
LSAgICAgICAgdW5pZm9ybSBmbG9hdCB1U2NhbGU7Ci0gICAgICAgIHVuaWZvcm0gZmxvYXQgdU9m
ZnNldDsKLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xfUG9z
aXRpb24gPSB2ZWM0KHZQb3NpdGlvbiAqIHZlYzIodVNjYWxlKSAtIHZlYzIodU9mZnNldCksIDAs
IDEpOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzID0gU0hB
REVSX1NPVVJDRQotICAgICgKLSAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Ci0gICAg
ICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZl
YzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICBtUHJvZ3Jh
bSA9IENvbXBpbGVQcm9ncmFtKHZzLCBmcyk7Ci0gICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7
Ci0KLSAgICAvLyBVc2UgdGhlIHByb2dyYW0gb2JqZWN0Ci0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9n
cmFtKTsKLQotICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKLQotICAg
IC8vIEluaXRpYWxpemUgdGhlIHZlcnRleCBkYXRhCi0gICAgc3RkOjp2ZWN0b3I8R0xmbG9hdD4g
ZmxvYXREYXRhOwotCi0gICAgc2l6ZV90IG51bVRyaXMgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdM
dXNob3J0Pjo6bWF4KCkgLyAzICsgMTsKLSAgICBmb3IgKHNpemVfdCB0cmlJbmRleCA9IDA7IHRy
aUluZGV4IDwgbnVtVHJpczsgKyt0cmlJbmRleCkKLSAgICB7Ci0gICAgICAgIGZsb2F0RGF0YS5w
dXNoX2JhY2soMSk7Ci0gICAgICAgIGZsb2F0RGF0YS5wdXNoX2JhY2soMik7Ci0gICAgICAgIGZs
b2F0RGF0YS5wdXNoX2JhY2soMCk7Ci0gICAgICAgIGZsb2F0RGF0YS5wdXNoX2JhY2soMCk7Ci0g
ICAgICAgIGZsb2F0RGF0YS5wdXNoX2JhY2soMik7Ci0gICAgICAgIGZsb2F0RGF0YS5wdXNoX2Jh
Y2soMCk7Ci0gICAgfQotCi0gICAgZ2xHZW5CdWZmZXJzKDEsICZtVmVydGV4QnVmZmVyKTsKLSAg
ICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4QnVmZmVyKTsKLSAgICBnbEJ1
ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBmbG9hdERhdGEuc2l6ZSgpICogc2l6ZW9mKEdMZmxv
YXQpLCAmZmxvYXREYXRhWzBdLCBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICBnbFZlcnRleEF0dHJp
YlBvaW50ZXIoMCwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAwKTsKLSAgICBnbEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KDApOwotCi0gICAgLy8gSW5pdGlhbGl6ZSB0aGUgaW5kZXggYnVmZmVy
Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgdHJpSW5kZXggPSAwOyB0cmlJbmRleCA8IHBhcmFtcy5u
dW1JbmRleFRyaXM7ICsrdHJpSW5kZXgpCi0gICAgewotICAgICAgICAvLyBIYW5kbGUgdHdvIGRp
ZmZlcmVudCB0eXBlcyBvZiB0ZXN0cywgb25lIHdpdGggaW5kZXggY29udmVyc2lvbiB0cmlnZ2Vy
ZWQgYnkgYSAtMSBpbmRleC4KLSAgICAgICAgaWYgKHBhcmFtcy5pbmRleFJhbmdlT2Zmc2V0ID09
IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1JbmRleERhdGEucHVzaF9iYWNrKHN0ZDo6bnVt
ZXJpY19saW1pdHM8R0x1c2hvcnQ+OjptYXgoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBtSW5kZXhEYXRhLnB1c2hfYmFjaygwKTsKLSAgICAgICAg
fQotCi0gICAgICAgIG1JbmRleERhdGEucHVzaF9iYWNrKDEpOwotICAgICAgICBtSW5kZXhEYXRh
LnB1c2hfYmFjaygyKTsKLSAgICB9Ci0KLSAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1JbmRleEJ1ZmZl
cik7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBtSW5kZXhCdWZm
ZXIpOwotICAgIHVwZGF0ZUJ1ZmZlckRhdGEoKTsKLQotICAgIC8vIFNldCB0aGUgdmlld3BvcnQK
LSAgICBnbFZpZXdwb3J0KDAsIDAsIGdldFdpbmRvdygpLT5nZXRXaWR0aCgpLCBnZXRXaW5kb3co
KS0+Z2V0SGVpZ2h0KCkpOwotCi0gICAgR0xmbG9hdCBzY2FsZSA9IDAuNWY7Ci0gICAgR0xmbG9h
dCBvZmZzZXQgPSAwLjVmOwotCi0gICAgZ2xVbmlmb3JtMWYoZ2xHZXRVbmlmb3JtTG9jYXRpb24o
bVByb2dyYW0sICJ1U2NhbGUiKSwgc2NhbGUpOwotICAgIGdsVW5pZm9ybTFmKGdsR2V0VW5pZm9y
bUxvY2F0aW9uKG1Qcm9ncmFtLCAidU9mZnNldCIpLCBvZmZzZXQpOwotCi0gICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci19Ci0KLXZvaWQgSW5kZXhDb252ZXJzaW9uUGVyZlRlc3Q6OnVwZGF0ZUJ1
ZmZlckRhdGEoKQotewotICAgIGdsQnVmZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwg
bUluZGV4RGF0YS5zaXplKCkgKiBzaXplb2YobUluZGV4RGF0YVswXSksICZtSW5kZXhEYXRhWzBd
LCBHTF9TVEFUSUNfRFJBVyk7Ci19Ci0KLXZvaWQgSW5kZXhDb252ZXJzaW9uUGVyZlRlc3Q6OmRl
c3Ryb3lCZW5jaG1hcmsoKQotewotICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAg
Z2xEZWxldGVCdWZmZXJzKDEsICZtVmVydGV4QnVmZmVyKTsKLSAgICBnbERlbGV0ZUJ1ZmZlcnMo
MSwgJm1JbmRleEJ1ZmZlcik7Ci19Ci0KLXZvaWQgSW5kZXhDb252ZXJzaW9uUGVyZlRlc3Q6OmRy
YXdCZW5jaG1hcmsoKQotewotICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7Ci0K
LSAgICBpZiAocGFyYW1zLmluZGV4UmFuZ2VPZmZzZXQgPT0gMCkKLSAgICB7Ci0gICAgICAgIGRy
YXdDb252ZXJzaW9uKCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGRyYXdJbmRl
eFJhbmdlKCk7Ci0gICAgfQotfQotCi12b2lkIEluZGV4Q29udmVyc2lvblBlcmZUZXN0OjpkcmF3
Q29udmVyc2lvbigpCi17Ci0gICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKLQot
ICAgIC8vIFRyaWdnZXIgYW4gdXBkYXRlIHRvIGVuc3VyZSB3ZSBjb252ZXJ0IG9uY2UgYSBmcmFt
ZQotICAgIHVwZGF0ZUJ1ZmZlckRhdGEoKTsKLQotICAgIGZvciAodW5zaWduZWQgaW50IGl0ID0g
MDsgaXQgPCBwYXJhbXMuaXRlcmF0aW9uczsgaXQrKykKLSAgICB7Ci0gICAgICAgIGdsRHJhd0Vs
ZW1lbnRzKEdMX1RSSUFOR0xFUywKLSAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
R0xzaXplaT4ocGFyYW1zLm51bUluZGV4VHJpcyAqIDMgLSAxKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgR0xfVU5TSUdORURfU0hPUlQsCi0gICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8R0x2b2lkKj4oMCkpOwotICAgIH0KLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OwotfQotCi12b2lkIEluZGV4Q29udmVyc2lvblBlcmZUZXN0OjpkcmF3SW5kZXhSYW5nZSgpCi17
Ci0gICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKLQotICAgIHVuc2lnbmVkIGlu
dCBpbmRleENvdW50ID0gMzsKLSAgICBzaXplX3Qgb2Zmc2V0ICAgICAgICAgICA9IHN0YXRpY19j
YXN0PHNpemVfdD4oaW5kZXhDb3VudCAqIGdldE51bVN0ZXBzUGVyZm9ybWVkKCkpOwotCi0gICAg
b2Zmc2V0ICU9IChwYXJhbXMubnVtSW5kZXhUcmlzICogMyk7Ci0KLSAgICAvLyBUaGlzIHRlc3Qg
aW5jcmVtZW50cyBhbiBvZmZzZXQgZWFjaCBzdGVwLiBEcmF3aW5nIHJlcGVhdGVkbHkgbWF5IGNh
dXNlIHRoZSBzeXN0ZW0gbWVtb3J5Ci0gICAgLy8gdG8gcmVsZWFzZS4gVGhlbiwgdXNpbmcgYSBm
cmVzaCBvZmZzZXQgd2lsbCByZXF1aXJlIGluZGV4IHJhbmdlIHZhbGlkYXRpb24sIHdoaWNoIHBh
Z2VzCi0gICAgLy8gaXQgYmFjayBpbi4gVGhlIHBlcmZvcm1hbmNlIHNob3VsZCBiZSBnb29kIGV2
ZW4gaWYgdGhlIGRhdGEgaXMgd2FzIHVzZWQgcXVpdGUgYSBiaXQuCi0gICAgZm9yICh1bnNpZ25l
ZCBpbnQgaXQgPSAwOyBpdCA8IHBhcmFtcy5pdGVyYXRpb25zOyBpdCsrKQotICAgIHsKLSAgICAg
ICAgZ2xEcmF3RWxlbWVudHMoR0xfVFJJQU5HTEVTLCBzdGF0aWNfY2FzdDxHTHNpemVpPihpbmRl
eENvdW50KSwgR0xfVU5TSUdORURfU0hPUlQsCi0gICAgICAgICAgICAgICAgICAgICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8R0x2b2lkICo+KG9mZnNldCkpOwotICAgIH0KLQotICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotfQotCi1JbmRleENvbnZlcnNpb25QZXJmUGFyYW1zIEluZGV4Q29udmVyc2lv
blBlcmZEM0QxMVBhcmFtcygpCi17Ci0gICAgSW5kZXhDb252ZXJzaW9uUGVyZlBhcmFtcyBwYXJh
bXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06OkQzRDExX05VTEwo
KTsKLSAgICBwYXJhbXMubWFqb3JWZXJzaW9uID0gMjsKLSAgICBwYXJhbXMubWlub3JWZXJzaW9u
ID0gMDsKLSAgICBwYXJhbXMud2luZG93V2lkdGggPSAyNTY7Ci0gICAgcGFyYW1zLndpbmRvd0hl
aWdodCA9IDI1NjsKLSAgICBwYXJhbXMuaXRlcmF0aW9ucyAgICA9IDIyNTsKLSAgICBwYXJhbXMu
bnVtSW5kZXhUcmlzID0gMzAwMDsKLSAgICBwYXJhbXMuaW5kZXhSYW5nZU9mZnNldCA9IDA7Ci0g
ICAgcmV0dXJuIHBhcmFtczsKLX0KLQotSW5kZXhDb252ZXJzaW9uUGVyZlBhcmFtcyBJbmRleFJh
bmdlT2Zmc2V0UGVyZkQzRDExUGFyYW1zKCkKLXsKLSAgICBJbmRleENvbnZlcnNpb25QZXJmUGFy
YW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyAgICA9IGVnbF9wbGF0Zm9ybTo6
RDNEMTFfTlVMTCgpOwotICAgIHBhcmFtcy5tYWpvclZlcnNpb24gICAgID0gMjsKLSAgICBwYXJh
bXMubWlub3JWZXJzaW9uICAgICA9IDA7Ci0gICAgcGFyYW1zLndpbmRvd1dpZHRoICAgICAgPSAy
NTY7Ci0gICAgcGFyYW1zLndpbmRvd0hlaWdodCAgICAgPSAyNTY7Ci0gICAgcGFyYW1zLml0ZXJh
dGlvbnMgICAgICAgPSAxNjsKLSAgICBwYXJhbXMubnVtSW5kZXhUcmlzICAgICA9IDUwMDAwOwot
ICAgIHBhcmFtcy5pbmRleFJhbmdlT2Zmc2V0ID0gNjQ7Ci0gICAgcmV0dXJuIHBhcmFtczsKLX0K
LQotVEVTVF9QKEluZGV4Q29udmVyc2lvblBlcmZUZXN0LCBSdW4pCi17Ci0gICAgcnVuKCk7Ci19
Ci0KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoSW5kZXhDb252ZXJzaW9uUGVyZlRlc3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgIEluZGV4Q29udmVyc2lvblBlcmZEM0QxMVBhcmFtcygpLAotICAg
ICAgICAgICAgICAgICAgICAgICBJbmRleFJhbmdlT2Zmc2V0UGVyZkQzRDExUGFyYW1zKCkpOwot
Ci19ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9wZXJmX3Rlc3RzL0luZGV4RGF0YU1hbmFnZXJUZXN0LmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0luZGV4RGF0YU1hbmFnZXJUZXN0LmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY3YmMyNDdlNTRmYzM2Y2JlMDk0NGU2
ZGM2Nzc2N2QyZTRlMmZlYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9JbmRl
eERhdGFNYW5hZ2VyVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzYgKzAsMCBAQAotLy8K
LS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgotLy8KLS8vIEluZGV4RGF0YU1hbmFnZXJQZXJmVGVzdDoKLS8vICAgUGVyZm9ybWFuY2UgdGVz
dCBmb3IgaW5kZXggYnVmZmVyIG1hbmFnZW1lbnQuCi0vLwotCi0jaW5jbHVkZSAiQU5HTEVQZXJm
VGVzdC5oIgotCi0jaW5jbHVkZSA8Z21vY2svZ21vY2suaD4KLQotI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2QzZC9CdWZmZXJEM0QuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9k
M2QvSW5kZXhCdWZmZXIuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvSW5kZXhE
YXRhTWFuYWdlci5oIgotCi11c2luZyBuYW1lc3BhY2UgdGVzdGluZzsKLQotbmFtZXNwYWNlCi17
Ci0KLWNsYXNzIE1vY2tJbmRleEJ1ZmZlciA6IHB1YmxpYyByeDo6SW5kZXhCdWZmZXIKLXsKLSAg
cHVibGljOgotICAgIE1vY2tJbmRleEJ1ZmZlcih1bnNpZ25lZCBpbnQgYnVmZmVyU2l6ZSwgR0xl
bnVtIGluZGV4VHlwZSkKLSAgICAgICAgOiBtQnVmZmVyU2l6ZShidWZmZXJTaXplKSwKLSAgICAg
ICAgICBtSW5kZXhUeXBlKGluZGV4VHlwZSkKLSAgICB7Ci0gICAgfQotCi0gICAgTU9DS19NRVRI
T0QzKGluaXRpYWxpemUsIGdsOjpFcnJvcih1bnNpZ25lZCBpbnQsIEdMZW51bSwgYm9vbCkpOwot
ICAgIE1PQ0tfTUVUSE9EMyhtYXBCdWZmZXIsIGdsOjpFcnJvcih1bnNpZ25lZCBpbnQsIHVuc2ln
bmVkIGludCwgdm9pZCoqKSk7Ci0gICAgTU9DS19NRVRIT0QwKHVubWFwQnVmZmVyLCBnbDo6RXJy
b3IoKSk7Ci0gICAgTU9DS19NRVRIT0QwKGRpc2NhcmQsIGdsOjpFcnJvcigpKTsKLSAgICBNT0NL
X01FVEhPRDIoc2V0U2l6ZSwgZ2w6OkVycm9yKHVuc2lnbmVkIGludCwgR0xlbnVtKSk7Ci0KLSAg
ICAvLyBpbmxpbmVkIGZvciBzcGVlZAotICAgIEdMZW51bSBnZXRJbmRleFR5cGUoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtSW5kZXhUeXBlOyB9Ci0gICAgdW5zaWduZWQgaW50IGdldEJ1ZmZl
clNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtQnVmZmVyU2l6ZTsgfQotCi0gIHByaXZh
dGU6Ci0gICAgdW5zaWduZWQgaW50IG1CdWZmZXJTaXplOwotICAgIEdMZW51bSBtSW5kZXhUeXBl
OwotfTsKLQotY2xhc3MgTW9ja0J1ZmZlckZhY3RvcnlEM0QgOiBwdWJsaWMgcng6OkJ1ZmZlckZh
Y3RvcnlEM0QKLXsKLSAgcHVibGljOgotICAgIE1vY2tCdWZmZXJGYWN0b3J5RDNEKHVuc2lnbmVk
IGludCBidWZmZXJTaXplLCBHTGVudW0gaW5kZXhUeXBlKQotICAgICAgICA6IG1CdWZmZXJTaXpl
KGJ1ZmZlclNpemUpLAotICAgICAgICAgIG1JbmRleFR5cGUoaW5kZXhUeXBlKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBNT0NLX01FVEhPRDAoY3JlYXRlVmVydGV4QnVmZmVyLCByeDo6VmVydGV4QnVm
ZmVyKigpKTsKLSAgICBNT0NLX0NPTlNUX01FVEhPRDEoZ2V0VmVydGV4Q29udmVyc2lvblR5cGUs
IHJ4OjpWZXJ0ZXhDb252ZXJzaW9uVHlwZShnbDo6VmVydGV4Rm9ybWF0VHlwZSkpOwotICAgIE1P
Q0tfQ09OU1RfTUVUSE9EMShnZXRWZXJ0ZXhDb21wb25lbnRUeXBlLCBHTGVudW0oZ2w6OlZlcnRl
eEZvcm1hdFR5cGUpKTsKLSAgICBNT0NLX0NPTlNUX01FVEhPRDMoZ2V0VmVydGV4U3BhY2VSZXF1
aXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkVycm9yT3JSZXN1bHQ8dW5zaWduZWQg
aW50Pihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICYsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpKSk7Ci0KLSAg
ICAvLyBEZXBlbmRlbmN5IGluamVjdGlvbgotICAgIHJ4OjpJbmRleEJ1ZmZlciogY3JlYXRlSW5k
ZXhCdWZmZXIoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBNb2NrSW5kZXhC
dWZmZXIobUJ1ZmZlclNpemUsIG1JbmRleFR5cGUpOwotICAgIH0KLQotICBwcml2YXRlOgotICAg
IHVuc2lnbmVkIGludCBtQnVmZmVyU2l6ZTsKLSAgICBHTGVudW0gbUluZGV4VHlwZTsKLX07Ci0K
LWNsYXNzIE1vY2tCdWZmZXJEM0QgOiBwdWJsaWMgcng6OkJ1ZmZlckQzRAotewotICBwdWJsaWM6
Ci0gICAgTW9ja0J1ZmZlckQzRChyeDo6QnVmZmVyRmFjdG9yeUQzRCAqZmFjdG9yeSkKLSAgICAg
ICAgOiBCdWZmZXJEM0QoZmFjdG9yeSksCi0gICAgICAgICAgbURhdGEoKQotICAgIHsKLSAgICB9
Ci0KLSAgICAvLyBCdWZmZXJJbXBsCi0gICAgZ2w6OkVycm9yIHNldERhdGEoR0xlbnVtIHRhcmdl
dCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIEdMZW51bSkgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIG1EYXRhLnJlc2l6ZShzaXplKTsKLSAgICAgICAgaWYgKGRhdGEgJiYgc2l6ZSA+
IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1lbWNweSgmbURhdGFbMF0sIGRhdGEsIHNpemUp
OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwotICAg
IH0KLQotICAgIE1PQ0tfTUVUSE9ENChzZXRTdWJEYXRhLCBnbDo6RXJyb3IoR0xlbnVtLCBjb25z
dCB2b2lkICosIHNpemVfdCwgc2l6ZV90KSk7Ci0gICAgTU9DS19NRVRIT0Q0KGNvcHlTdWJEYXRh
LCBnbDo6RXJyb3IoQnVmZmVySW1wbCosIEdMaW50cHRyLCBHTGludHB0ciwgR0xzaXplaXB0cikp
OwotICAgIE1PQ0tfTUVUSE9EMihtYXAsIGdsOjpFcnJvcihHTGVudW0sIEdMdm9pZCAqKikpOwot
ICAgIE1PQ0tfTUVUSE9ENChtYXBSYW5nZSwgZ2w6OkVycm9yKHNpemVfdCwgc2l6ZV90LCBHTGJp
dGZpZWxkLCBHTHZvaWQgKiopKTsKLSAgICBNT0NLX01FVEhPRDEodW5tYXAsIGdsOjpFcnJvcihH
TGJvb2xlYW4gKikpOwotCi0gICAgLy8gQnVmZmVyRDNECi0gICAgTU9DS19NRVRIT0QwKG1hcmtU
cmFuc2Zvcm1GZWVkYmFja1VzYWdlLCBnbDo6RXJyb3IoKSk7Ci0KLSAgICAvLyBpbmxpbmVkIGZv
ciBzcGVlZAotICAgIGJvb2wgc3VwcG9ydHNEaXJlY3RCaW5kaW5nKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICBzaXplX3QgZ2V0U2l6ZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIG1EYXRhLnNpemUoKTsgfQotCi0gICAgZ2w6OkVycm9yIGdldERhdGEoY29uc3QgdWlu
dDhfdCAqKm91dERhdGEpIG92ZXJyaWRlCi0gICAgewotICAgICAgICAqb3V0RGF0YSA9ICZtRGF0
YVswXTsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Ci0gICAgfQotCi0g
IHByaXZhdGU6Ci0gICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gbURhdGE7Ci19OwotCi1jbGFzcyBJ
bmRleERhdGFNYW5hZ2VyUGVyZlRlc3QgOiBwdWJsaWMgQU5HTEVQZXJmVGVzdAotewotICBwdWJs
aWM6Ci0gICAgSW5kZXhEYXRhTWFuYWdlclBlcmZUZXN0KCk7Ci0KLSAgICB2b2lkIHN0ZXAoKSBv
dmVycmlkZTsKLQotICAgIHJ4OjpJbmRleERhdGFNYW5hZ2VyIG1JbmRleERhdGFNYW5hZ2VyOwot
ICAgIEdMc2l6ZWkgbUluZGV4Q291bnQ7Ci0gICAgdW5zaWduZWQgaW50IG1CdWZmZXJTaXplOwot
ICAgIE1vY2tCdWZmZXJGYWN0b3J5RDNEIG1Nb2NrRmFjdG9yeTsKLSAgICBnbDo6QnVmZmVyIG1J
bmRleEJ1ZmZlcjsKLX07Ci0KLU1vY2tCdWZmZXJEM0QgKkluaXRNb2NrQnVmZmVyRDNEKE1vY2tC
dWZmZXJGYWN0b3J5RDNEICptb2NrRmFjdG9yeSkKLXsKLSAgICBNb2NrQnVmZmVyRDNEICptb2Nr
QnVmZmVyRDNEID0gbmV3IE1vY2tCdWZmZXJEM0QobW9ja0ZhY3RvcnkpOwotCi0gICAgRVhQRUNU
X0NBTEwoKm1vY2tGYWN0b3J5LCBjcmVhdGVWZXJ0ZXhCdWZmZXIoKSkuV2lsbE9uY2UoUmV0dXJu
KG51bGxwdHIpKS5SZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci0gICAgbW9ja0J1ZmZlckQzRC0+aW5p
dGlhbGl6ZVN0YXRpY0RhdGEoKTsKLQotICAgIHJldHVybiBtb2NrQnVmZmVyRDNEOwotfQotCi1J
bmRleERhdGFNYW5hZ2VyUGVyZlRlc3Q6OkluZGV4RGF0YU1hbmFnZXJQZXJmVGVzdCgpCi0gICAg
OiBBTkdMRVBlcmZUZXN0KCJJbmRleERhdGFNYW5nZXIiLCAiX3J1biIpLAotICAgICAgbUluZGV4
RGF0YU1hbmFnZXIoJm1Nb2NrRmFjdG9yeSwgcng6OlJFTkRFUkVSX0QzRDExKSwKLSAgICAgIG1J
bmRleENvdW50KDQwMDApLAotICAgICAgbUJ1ZmZlclNpemUobUluZGV4Q291bnQgKiBzaXplb2Yo
R0x1c2hvcnQpKSwKLSAgICAgIG1Nb2NrRmFjdG9yeShtQnVmZmVyU2l6ZSwgR0xfVU5TSUdORURf
U0hPUlQpLAotICAgICAgbUluZGV4QnVmZmVyKEluaXRNb2NrQnVmZmVyRDNEKCZtTW9ja0ZhY3Rv
cnkpLCAxKQotewotICAgIHN0ZDo6dmVjdG9yPEdMdXNob3J0PiBpbmRleERhdGEobUluZGV4Q291
bnQpOwotICAgIGZvciAoR0xzaXplaSBpbmRleCA9IDA7IGluZGV4IDwgbUluZGV4Q291bnQ7ICsr
aW5kZXgpCi0gICAgewotICAgICAgICBpbmRleERhdGFbaW5kZXhdID0gc3RhdGljX2Nhc3Q8R0x1
c2hvcnQ+KGluZGV4KTsKLSAgICB9Ci0gICAgbUluZGV4QnVmZmVyLmJ1ZmZlckRhdGEoR0xfQVJS
QVlfQlVGRkVSLCAmaW5kZXhEYXRhWzBdLCBpbmRleERhdGEuc2l6ZSgpICogc2l6ZW9mKEdMdXNo
b3J0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9TVEFUSUNfRFJBVyk7Ci19Ci0K
LXZvaWQgSW5kZXhEYXRhTWFuYWdlclBlcmZUZXN0OjpzdGVwKCkKLXsKLSAgICByeDo6VHJhbnNs
YXRlZEluZGV4RGF0YSB0cmFuc2xhdGVkSW5kZXhEYXRhOwotICAgIGZvciAodW5zaWduZWQgaW50
IGl0ZXJhdGlvbiA9IDA7IGl0ZXJhdGlvbiA8IDEwMDsgKytpdGVyYXRpb24pCi0gICAgewotICAg
ICAgICBtSW5kZXhCdWZmZXIuZ2V0SW5kZXhSYW5nZShHTF9VTlNJR05FRF9TSE9SVCwgMCwgbUlu
ZGV4Q291bnQsIGZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHJh
bnNsYXRlZEluZGV4RGF0YS5pbmRleFJhbmdlKTsKLSAgICAgICAgbUluZGV4RGF0YU1hbmFnZXIu
cHJlcGFyZUluZGV4RGF0YShHTF9VTlNJR05FRF9TSE9SVCwgbUluZGV4Q291bnQsICZtSW5kZXhC
dWZmZXIsIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJnRyYW5zbGF0ZWRJbmRleERhdGEsIGZhbHNlKTsKLSAgICB9Ci19Ci0KLVRFU1RfRihJbmRl
eERhdGFNYW5hZ2VyUGVyZlRlc3QsIFJ1bikKLXsKLSAgICBydW4oKTsKLX0KLQotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvSW5zdGFu
Y2luZ1BlcmYuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVz
dHMvSW5zdGFuY2luZ1BlcmYuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjAy
YzEwZTk5YzlkOTY0OThhYjJlNmUyZTNmZDQ4MzZjNGVkZmIzLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9wZXJmX3Rlc3RzL0luc3RhbmNpbmdQZXJmLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2
NiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gSW5zdGFuY2luZ1BlcmY6Ci0vLyAgIFBlcmZvcm1hbmNl
IHRlc3RzIGZvciBBTkdMRSBpbnN0YW5jZWQgZHJhdyBjYWxscy4KLS8vCi0KLSNpbmNsdWRlIDxj
bWF0aD4KLSNpbmNsdWRlIDxzc3RyZWFtPgotCi0jaW5jbHVkZSAiQU5HTEVQZXJmVGVzdC5oIgot
I2luY2x1ZGUgIk1hdHJpeC5oIgotI2luY2x1ZGUgInJhbmRvbV91dGlscy5oIgotI2luY2x1ZGUg
InNoYWRlcl91dGlscy5oIgotI2luY2x1ZGUgIlZlY3Rvci5oIgotCi11c2luZyBuYW1lc3BhY2Ug
YW5nbGU7Ci11c2luZyBuYW1lc3BhY2UgZWdsX3BsYXRmb3JtOwotCi1uYW1lc3BhY2UKLXsKLQot
ZmxvYXQgQW5pbWF0aW9uU2lnbmFsKGZsb2F0IHQpCi17Ci0gICAgZmxvYXQgbCA9IHQgLyAyLjBm
OwotICAgIGZsb2F0IGYgPSBsIC0gc3RkOjpmbG9vcihsKTsKLSAgICByZXR1cm4gKGYgPiAwLjVm
ID8gMS4wZiAtIGYgOiBmKSAqIDQuMGYgLSAxLjBmOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KLXNpemVfdCBWZWN0b3JTaXplQnl0ZXMoY29uc3Qgc3RkOjp2ZWN0b3I8VD4gJnZlYykKLXsK
LSAgICByZXR1cm4gc2l6ZW9mKFQpICogdmVjLnNpemUoKTsKLX0KLQotVmVjdG9yMyBSYW5kb21W
ZWN0b3IzKFJORyAqcm5nKQotewotICAgIHJldHVybiBWZWN0b3IzKHJuZy0+cmFuZG9tTmVnYXRp
dmVPbmVUb09uZSgpLCBybmctPnJhbmRvbU5lZ2F0aXZlT25lVG9PbmUoKSwKLSAgICAgICAgICAg
ICAgICAgICBybmctPnJhbmRvbU5lZ2F0aXZlT25lVG9PbmUoKSk7Ci19Ci0KLXN0cnVjdCBJbnN0
YW5jaW5nUGVyZlBhcmFtcyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUZXN0UGFyYW1zCi17Ci0gICAg
Ly8gQ29tbW9uIGRlZmF1bHQgb3B0aW9ucwotICAgIEluc3RhbmNpbmdQZXJmUGFyYW1zKCkKLSAg
ICB7Ci0gICAgICAgIG1ham9yVmVyc2lvbiAgICAgID0gMjsKLSAgICAgICAgbWlub3JWZXJzaW9u
ICAgICAgPSAwOwotICAgICAgICB3aW5kb3dXaWR0aCAgICAgICA9IDI1NjsKLSAgICAgICAgd2lu
ZG93SGVpZ2h0ICAgICAgPSAyNTY7Ci0gICAgICAgIGl0ZXJhdGlvbnMgICAgICAgID0gMTsKLSAg
ICAgICAgcnVuVGltZVNlY29uZHMgICAgPSAxMC4wOwotICAgICAgICBhbmltYXRpb25FbmFibGVk
ICA9IGZhbHNlOwotICAgICAgICBpbnN0YW5jaW5nRW5hYmxlZCA9IHRydWU7Ci0gICAgfQotCi0g
ICAgc3RkOjpzdHJpbmcgc3VmZml4KCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHN0
ZDo6c3RyaW5nc3RyZWFtIHN0cnN0cjsKLQotICAgICAgICBzdHJzdHIgPDwgUmVuZGVyVGVzdFBh
cmFtczo6c3VmZml4KCk7Ci0KLSAgICAgICAgaWYgKCFpbnN0YW5jaW5nRW5hYmxlZCkKLSAgICAg
ICAgewotICAgICAgICAgICAgc3Ryc3RyIDw8ICJfYmlsbGJvYXJkcyI7Ci0gICAgICAgIH0KLQot
ICAgICAgICByZXR1cm4gc3Ryc3RyLnN0cigpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGludCBp
dGVyYXRpb25zOwotICAgIGRvdWJsZSBydW5UaW1lU2Vjb25kczsKLSAgICBib29sIGFuaW1hdGlv
bkVuYWJsZWQ7Ci0gICAgYm9vbCBpbnN0YW5jaW5nRW5hYmxlZDsKLX07Ci0KLXN0ZDo6b3N0cmVh
bSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBJbnN0YW5jaW5nUGVyZlBhcmFt
cyAmcGFyYW1zKQotewotICAgIG9zIDw8IHBhcmFtcy5zdWZmaXgoKS5zdWJzdHIoMSk7Ci0gICAg
cmV0dXJuIG9zOwotfQotCi1jbGFzcyBJbnN0YW5jaW5nUGVyZkJlbmNobWFyayA6IHB1YmxpYyBB
TkdMRVJlbmRlclRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyA6
OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxJbnN0YW5jaW5nUGVyZlBhcmFtcz4KLXsKLSAg
cHVibGljOgotICAgIEluc3RhbmNpbmdQZXJmQmVuY2htYXJrKCk7Ci0KLSAgICB2b2lkIGluaXRp
YWxpemVCZW5jaG1hcmsoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlc3Ryb3lCZW5jaG1hcmsoKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRyYXdCZW5jaG1hcmsoKSBvdmVycmlkZTsKLQotICBwcml2YXRl
OgotICAgIEdMdWludCBtUHJvZ3JhbTsKLSAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1CdWZmZXJz
OwotICAgIEdMdWludCBtTnVtUG9pbnRzOwotICAgIHN0ZDo6dmVjdG9yPFZlY3RvcjM+IG1UcmFu
c2xhdGVEYXRhOwotICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBtU2l6ZURhdGE7Ci0gICAgc3RkOjp2
ZWN0b3I8VmVjdG9yMz4gbUNvbG9yRGF0YTsKLSAgICBhbmdsZTo6Uk5HIG1STkc7Ci19OwotCi1J
bnN0YW5jaW5nUGVyZkJlbmNobWFyazo6SW5zdGFuY2luZ1BlcmZCZW5jaG1hcmsoKQotICAgIDog
QU5HTEVSZW5kZXJUZXN0KCJJbnN0YW5jaW5nUGVyZiIsIEdldFBhcmFtKCkpLCBtUHJvZ3JhbSgw
KSwgbU51bVBvaW50cyg3NTAwMCkKLXsKLSAgICBtUnVuVGltZVNlY29uZHMgPSBHZXRQYXJhbSgp
LnJ1blRpbWVTZWNvbmRzOwotfQotCi12b2lkIEluc3RhbmNpbmdQZXJmQmVuY2htYXJrOjppbml0
aWFsaXplQmVuY2htYXJrKCkKLXsKLSAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgp
OwotCi0gICAgQVNTRVJUX0xUKDB1LCBwYXJhbXMuaXRlcmF0aW9ucyk7Ci0KLSAgICBjb25zdCBz
dGQ6OnN0cmluZyB2cyA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjMiBhUG9zaXRpb247XG4iCi0g
ICAgICAgICJhdHRyaWJ1dGUgdmVjMyBhVHJhbnNsYXRlO1xuIgotICAgICAgICAiYXR0cmlidXRl
IGZsb2F0IGFTY2FsZTtcbiIKLSAgICAgICAgImF0dHJpYnV0ZSB2ZWMzIGFDb2xvcjtcbiIKLSAg
ICAgICAgInVuaWZvcm0gbWF0NCB1V29ybGRNYXRyaXg7XG4iCi0gICAgICAgICJ1bmlmb3JtIG1h
dDQgdVByb2plY3Rpb25NYXRyaXg7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzMgdkNvbG9yO1xu
IgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICB2
ZWM0IHBvc2l0aW9uID0gdVdvcmxkTWF0cml4ICogdmVjNChhVHJhbnNsYXRlLCAxLjApO1xuIgot
ICAgICAgICAiICAgIHBvc2l0aW9uLnh5ICs9IGFQb3NpdGlvbiAqIGFTY2FsZTtcbiIKLSAgICAg
ICAgIiAgICBnbF9Qb3NpdGlvbiA9IHVQcm9qZWN0aW9uTWF0cml4ICogcG9zaXRpb247XG4iCi0g
ICAgICAgICIgICAgdkNvbG9yID0gYUNvbG9yO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGZzID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgotICAgICAgICAidmFyeWluZyB2ZWMzIHZDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigp
XG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2Q29s
b3IsIDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgbVByb2dyYW0gPSBDb21waWxlUHJv
Z3JhbSh2cywgZnMpOwotICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotCi0gICAgZ2xVc2VQ
cm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAw
LjBmKTsKLQotICAgIEdMdWludCBiYXNlSW5kZXhEYXRhWzZdICAgICA9IHswLCAxLCAyLCAxLCAz
LCAyfTsKLSAgICBWZWN0b3IyIGJhc2VQb3NpdGlvbkRhdGFbNF0gPSB7VmVjdG9yMigtMS4wZiwg
MS4wZiksIFZlY3RvcjIoMS4wZiwgMS4wZiksIFZlY3RvcjIoLTEuMGYsIC0xLjBmKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yMigxLjBmLCAtMS4wZil9OwotCi0g
ICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBpbmRleERhdGE7Ci0gICAgc3RkOjp2ZWN0b3I8VmVjdG9y
Mj4gcG9zaXRpb25EYXRhOwotCi0gICAgaWYgKCFwYXJhbXMuaW5zdGFuY2luZ0VuYWJsZWQpCi0g
ICAgewotICAgICAgICBHTHVpbnQgcG9pbnRWZXJ0ZXhTdHJpZGUgPSA0OwotICAgICAgICBmb3Ig
KEdMdWludCBwb2ludEluZGV4ID0gMDsgcG9pbnRJbmRleCA8IG1OdW1Qb2ludHM7ICsrcG9pbnRJ
bmRleCkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yIChHTHVpbnQgaW5kZXhJbmRleCA9IDA7
IGluZGV4SW5kZXggPCA2OyArK2luZGV4SW5kZXgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgaW5kZXhEYXRhLnB1c2hfYmFjayhiYXNlSW5kZXhEYXRhW2luZGV4SW5kZXhdICsgcG9p
bnRJbmRleCAqIHBvaW50VmVydGV4U3RyaWRlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgVmVjdG9yMyByYW5kVmVjID0gUmFuZG9tVmVjdG9yMygmbVJORyk7Ci0gICAgICAgICAgICBm
b3IgKEdMdWludCB2ZXJ0ZXhJbmRleCA9IDA7IHZlcnRleEluZGV4IDwgNDsgKyt2ZXJ0ZXhJbmRl
eCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBwb3NpdGlvbkRhdGEucHVzaF9iYWNr
KGJhc2VQb3NpdGlvbkRhdGFbdmVydGV4SW5kZXhdKTsKLSAgICAgICAgICAgICAgICBtVHJhbnNs
YXRlRGF0YS5wdXNoX2JhY2socmFuZFZlYyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICBtU2l6ZURhdGEucmVzaXplKG1OdW1Qb2ludHMgKiA0LCAwLjAxMmYpOwotICAgICAg
ICBtQ29sb3JEYXRhLnJlc2l6ZShtTnVtUG9pbnRzICogNCwgVmVjdG9yMygxLjBmLCAwLjBmLCAw
LjBmKSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGZvciAoR0x1aW50IGluZGV4
IDogYmFzZUluZGV4RGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgaW5kZXhEYXRhLnB1c2hf
YmFjayhpbmRleCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKGNvbnN0IFZlY3RvcjIgJnBv
c2l0aW9uIDogYmFzZVBvc2l0aW9uRGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgcG9zaXRp
b25EYXRhLnB1c2hfYmFjayhwb3NpdGlvbik7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKEdM
dWludCBwb2ludEluZGV4ID0gMDsgcG9pbnRJbmRleCA8IG1OdW1Qb2ludHM7ICsrcG9pbnRJbmRl
eCkKLSAgICAgICAgewotICAgICAgICAgICAgVmVjdG9yMyByYW5kVmVjID0gUmFuZG9tVmVjdG9y
MygmbVJORyk7Ci0gICAgICAgICAgICBtVHJhbnNsYXRlRGF0YS5wdXNoX2JhY2socmFuZFZlYyk7
Ci0gICAgICAgIH0KLQotICAgICAgICBtU2l6ZURhdGEucmVzaXplKG1OdW1Qb2ludHMsIDAuMDEy
Zik7Ci0gICAgICAgIG1Db2xvckRhdGEucmVzaXplKG1OdW1Qb2ludHMsIFZlY3RvcjMoMS4wZiwg
MC4wZiwgMC4wZikpOwotICAgIH0KLQotICAgIG1CdWZmZXJzLnJlc2l6ZSg1LCAwKTsKLSAgICBn
bEdlbkJ1ZmZlcnMoc3RhdGljX2Nhc3Q8R0xzaXplaT4obUJ1ZmZlcnMuc2l6ZSgpKSwgJm1CdWZm
ZXJzWzBdKTsKLQotICAgIC8vIEluZGV4IERhdGEKLSAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIG1CdWZmZXJzWzBdKTsKLSAgICBnbEJ1ZmZlckRhdGEoR0xfRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIFZlY3RvclNpemVCeXRlcyhpbmRleERhdGEpLCAmaW5kZXhEYXRhWzBd
LAotICAgICAgICAgICAgICAgICBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICAvLyBQb3NpdGlvbiBE
YXRhCi0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcnNbMV0pOwotICAg
IGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIFZlY3RvclNpemVCeXRlcyhwb3NpdGlvbkRh
dGEpLCAmcG9zaXRpb25EYXRhWzBdLCBHTF9TVEFUSUNfRFJBVyk7Ci0gICAgR0xpbnQgcG9zaXRp
b25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJhUG9zaXRpb24iKTsK
LSAgICBBU1NFUlRfTkUoLTEsIHBvc2l0aW9uTG9jYXRpb24pOwotICAgIGdsVmVydGV4QXR0cmli
UG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDgsIG51bGxw
dHIpOwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7Ci0K
LSAgICAvLyBUcmFuc2xhdGUgRGF0YQotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIs
IG1CdWZmZXJzWzJdKTsKLSAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBWZWN0b3JT
aXplQnl0ZXMobVRyYW5zbGF0ZURhdGEpLCAmbVRyYW5zbGF0ZURhdGFbMF0sCi0gICAgICAgICAg
ICAgICAgIEdMX1NUQVRJQ19EUkFXKTsKLSAgICBHTGludCB0cmFuc2xhdGVMb2NhdGlvbiA9IGds
R2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJhVHJhbnNsYXRlIik7Ci0gICAgQVNTRVJUX05F
KC0xLCB0cmFuc2xhdGVMb2NhdGlvbik7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHRyYW5z
bGF0ZUxvY2F0aW9uLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDEyLCBudWxscHRyKTsKLSAgICBn
bEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHRyYW5zbGF0ZUxvY2F0aW9uKTsKLSAgICBnbFZlcnRl
eEF0dHJpYkRpdmlzb3JBTkdMRSh0cmFuc2xhdGVMb2NhdGlvbiwgMSk7Ci0KLSAgICAvLyBTY2Fs
ZSBEYXRhCi0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcnNbM10pOwot
ICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIFZlY3RvclNpemVCeXRlcyhtU2l6ZURh
dGEpLCBudWxscHRyLCBHTF9EWU5BTUlDX0RSQVcpOwotICAgIEdMaW50IHNjYWxlTG9jYXRpb24g
PSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiYVNjYWxlIik7Ci0gICAgQVNTRVJUX05F
KC0xLCBzY2FsZUxvY2F0aW9uKTsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoc2NhbGVMb2Nh
dGlvbiwgMSwgR0xfRkxPQVQsIEdMX0ZBTFNFLCA0LCBudWxscHRyKTsKLSAgICBnbEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KHNjYWxlTG9jYXRpb24pOwotICAgIGdsVmVydGV4QXR0cmliRGl2aXNv
ckFOR0xFKHNjYWxlTG9jYXRpb24sIDEpOwotCi0gICAgLy8gQ29sb3IgRGF0YQotICAgIGdsQmlu
ZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXJzWzRdKTsKLSAgICBnbEJ1ZmZlckRhdGEo
R0xfQVJSQVlfQlVGRkVSLCBWZWN0b3JTaXplQnl0ZXMobUNvbG9yRGF0YSksIG51bGxwdHIsIEdM
X0RZTkFNSUNfRFJBVyk7Ci0gICAgR0xpbnQgY29sb3JMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9j
YXRpb24obVByb2dyYW0sICJhQ29sb3IiKTsKLSAgICBBU1NFUlRfTkUoLTEsIGNvbG9yTG9jYXRp
b24pOwotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihjb2xvckxvY2F0aW9uLCAzLCBHTF9GTE9B
VCwgR0xfRkFMU0UsIDEyLCBudWxscHRyKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KGNvbG9yTG9jYXRpb24pOwotICAgIGdsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGNvbG9yTG9j
YXRpb24sIDEpOwotCi0gICAgLy8gU2V0IHRoZSB2aWV3cG9ydAotICAgIGdsVmlld3BvcnQoMCwg
MCwgZ2V0V2luZG93KCktPmdldFdpZHRoKCksIGdldFdpbmRvdygpLT5nZXRIZWlnaHQoKSk7Ci0K
LSAgICAvLyBJbml0IG1hdHJpY2VzCi0gICAgR0xpbnQgd29ybGRNYXRyaXhMb2NhdGlvbiA9IGds
R2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidVdvcmxkTWF0cml4Iik7Ci0gICAgQVNTRVJU
X05FKC0xLCB3b3JsZE1hdHJpeExvY2F0aW9uKTsKLSAgICBNYXRyaXg0IHdvcmxkTWF0cml4ID0g
TWF0cml4NDo6dHJhbnNsYXRlKFZlY3RvcjMoMCwgMCwgLTMuMGYpKTsKLSAgICB3b3JsZE1hdHJp
eCAqPSBNYXRyaXg0Ojpyb3RhdGUoMjUuMGYsIFZlY3RvcjMoMC42ZiwgMS4wZiwgMC4wZikpOwot
ICAgIGdsVW5pZm9ybU1hdHJpeDRmdih3b3JsZE1hdHJpeExvY2F0aW9uLCAxLCBHTF9GQUxTRSwg
JndvcmxkTWF0cml4LmRhdGFbMF0pOwotCi0gICAgR0xpbnQgcHJvamVjdGlvbk1hdHJpeExvY2F0
aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1UHJvamVjdGlvbk1hdHJpeCIp
OwotICAgIEFTU0VSVF9ORSgtMSwgcHJvamVjdGlvbk1hdHJpeExvY2F0aW9uKTsKLSAgICBmbG9h
dCBmb3YgPQotICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4oZ2V0V2luZG93KCktPmdldFdpZHRo
KCkpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGdldFdpbmRvdygpLT5nZXRIZWlnaHQoKSk7Ci0gICAg
TWF0cml4NCBwcm9qZWN0aW9uTWF0cml4ID0gTWF0cml4NDo6cGVyc3BlY3RpdmUoNjAuMGYsIGZv
diwgMS4wZiwgMzAwLjBmKTsKLSAgICBnbFVuaWZvcm1NYXRyaXg0ZnYocHJvamVjdGlvbk1hdHJp
eExvY2F0aW9uLCAxLCBHTF9GQUxTRSwgJnByb2plY3Rpb25NYXRyaXguZGF0YVswXSk7Ci0KLSAg
ICBnZXRXaW5kb3coKS0+c2V0VmlzaWJsZSh0cnVlKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotfQotCi12b2lkIEluc3RhbmNpbmdQZXJmQmVuY2htYXJrOjpkZXN0cm95QmVuY2htYXJr
KCkKLXsKLSAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotCi0gICAgaWYgKCFtQnVmZmVy
cy5lbXB0eSgpKQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVCdWZmZXJzKHN0YXRpY19jYXN0PEdM
c2l6ZWk+KG1CdWZmZXJzLnNpemUoKSksICZtQnVmZmVyc1swXSk7Ci0gICAgICAgIG1CdWZmZXJz
LmNsZWFyKCk7Ci0gICAgfQotfQotCi12b2lkIEluc3RhbmNpbmdQZXJmQmVuY2htYXJrOjpkcmF3
QmVuY2htYXJrKCkKLXsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAg
Y29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKLQotICAgIC8vIEFuaW1hdGlubyBtYWtl
cyB0aGUgdGVzdCBtb3JlIGludGVyZXN0aW5nIHZpc3VhbGx5LCBidXQgYWxzbyBlYXRzIHVwIG1h
bnkgQ1BVIGN5Y2xlcy4KLSAgICBpZiAocGFyYW1zLmFuaW1hdGlvbkVuYWJsZWQpCi0gICAgewot
ICAgICAgICAvLyBOb3QgaW1wbGVtZW50ZWQgZm9yIGJpbGxib2FyZHMuCi0gICAgICAgIEFTU0VS
VChwYXJhbXMuaW5zdGFuY2luZ0VuYWJsZWQpOwotCi0gICAgICAgIGZsb2F0IHRpbWUgPSBzdGF0
aWNfY2FzdDxmbG9hdD4obVRpbWVyLT5nZXRFbGFwc2VkVGltZSgpKTsKLQotICAgICAgICBmb3Ig
KHNpemVfdCBwb2ludEluZGV4ID0gMDsgcG9pbnRJbmRleCA8IG1UcmFuc2xhdGVEYXRhLnNpemUo
KTsgKytwb2ludEluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBWZWN0b3IzICZ0
cmFuc2xhdGUgPSBtVHJhbnNsYXRlRGF0YVtwb2ludEluZGV4XTsKLQotICAgICAgICAgICAgZmxv
YXQgdHggPSB0cmFuc2xhdGUueCArIHRpbWU7Ci0gICAgICAgICAgICBmbG9hdCB0eSA9IHRyYW5z
bGF0ZS55ICsgdGltZTsKLSAgICAgICAgICAgIGZsb2F0IHR6ID0gdHJhbnNsYXRlLnogKyB0aW1l
OwotCi0gICAgICAgICAgICBmbG9hdCBzY2FsZSAgICAgICAgICAgPSBBbmltYXRpb25TaWduYWwo
dHgpICogMC4wMWYgKyAwLjAxZjsKLSAgICAgICAgICAgIG1TaXplRGF0YVtwb2ludEluZGV4XSA9
IHNjYWxlOwotCi0gICAgICAgICAgICBWZWN0b3IzIGNvbG9yOwotICAgICAgICAgICAgY29sb3Iu
eCA9IEFuaW1hdGlvblNpZ25hbCh0eCkgKiAwLjVmICsgMC41ZjsKLSAgICAgICAgICAgIGNvbG9y
LnkgPSBBbmltYXRpb25TaWduYWwodHkpICogMC41ZiArIDAuNWY7Ci0gICAgICAgICAgICBjb2xv
ci56ID0gQW5pbWF0aW9uU2lnbmFsKHR6KSAqIDAuNWYgKyAwLjVmOwotCi0gICAgICAgICAgICBt
Q29sb3JEYXRhW3BvaW50SW5kZXhdID0gY29sb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAv
LyBVcGRhdGUgc2NhbGVzIGFuZCBjb2xvcnMuCi0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JV
RkZFUiwgbUJ1ZmZlcnNbM10pOwotICAgIGdsQnVmZmVyU3ViRGF0YShHTF9BUlJBWV9CVUZGRVIs
IDAsIFZlY3RvclNpemVCeXRlcyhtU2l6ZURhdGEpLCAmbVNpemVEYXRhWzBdKTsKLQotICAgIGds
QmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXJzWzRdKTsKLSAgICBnbEJ1ZmZlclN1
YkRhdGEoR0xfQVJSQVlfQlVGRkVSLCAwLCBWZWN0b3JTaXplQnl0ZXMobUNvbG9yRGF0YSksICZt
Q29sb3JEYXRhWzBdKTsKLQotICAgIC8vIFJlbmRlciB0aGUgaW5zdGFuY2VzL2JpbGxib2FyZHMu
Ci0gICAgaWYgKHBhcmFtcy5pbnN0YW5jaW5nRW5hYmxlZCkKLSAgICB7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaW50IGl0ID0gMDsgaXQgPCBwYXJhbXMuaXRlcmF0aW9uczsgaXQrKykKLSAgICAg
ICAgewotICAgICAgICAgICAgZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHTF9UUklBTkdM
RVMsIDYsIEdMX1VOU0lHTkVEX0lOVCwgbnVsbHB0ciwgbU51bVBvaW50cyk7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaXQgPSAw
OyBpdCA8IHBhcmFtcy5pdGVyYXRpb25zOyBpdCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBn
bERyYXdFbGVtZW50cyhHTF9UUklBTkdMRVMsIDYgKiBtTnVtUG9pbnRzLCBHTF9VTlNJR05FRF9J
TlQsIG51bGxwdHIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci19Ci0KLUluc3RhbmNpbmdQZXJmUGFyYW1zIEluc3RhbmNpbmdQZXJmRDNEMTFQYXJhbXMo
KQotewotICAgIEluc3RhbmNpbmdQZXJmUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWdsUGFy
YW1ldGVycyA9IEQzRDExKCk7Ci0gICAgcmV0dXJuIHBhcmFtczsKLX0KLQotSW5zdGFuY2luZ1Bl
cmZQYXJhbXMgSW5zdGFuY2luZ1BlcmZEM0Q5UGFyYW1zKCkKLXsKLSAgICBJbnN0YW5jaW5nUGVy
ZlBhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBEM0Q5KCk7Ci0gICAg
cmV0dXJuIHBhcmFtczsKLX0KLQotSW5zdGFuY2luZ1BlcmZQYXJhbXMgSW5zdGFuY2luZ1BlcmZP
cGVuR0xQYXJhbXMoKQotewotICAgIEluc3RhbmNpbmdQZXJmUGFyYW1zIHBhcmFtczsKLSAgICBw
YXJhbXMuZWdsUGFyYW1ldGVycyA9IE9QRU5HTCgpOwotICAgIHJldHVybiBwYXJhbXM7Ci19Ci0K
LVRFU1RfUChJbnN0YW5jaW5nUGVyZkJlbmNobWFyaywgUnVuKQotewotICAgIHJ1bigpOwotfQot
Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKEluc3RhbmNpbmdQZXJmQmVuY2htYXJrLAotICAgICAg
ICAgICAgICAgICAgICAgICBJbnN0YW5jaW5nUGVyZkQzRDExUGFyYW1zKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgIEluc3RhbmNpbmdQZXJmRDNEOVBhcmFtcygpLAotICAgICAgICAgICAgICAg
ICAgICAgICBJbnN0YW5jaW5nUGVyZk9wZW5HTFBhcmFtcygpKTsKLQotfSAgLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3BlcmZfdGVzdHMvSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0ludGVybGVhdmVkQXR0cmlidXRlRGF0YS5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1ZTJhNWIxNGJhNWQ5YThiYTFhMDA4
ZDk0NTFiMWNkOTM3OGFiYjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvSW50
ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzMSArMCwwIEBA
Ci0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgotLy8KLS8vIEludGVybGVhdmVkQXR0cmlidXRlRGF0YToKLS8vICAgUGVyZm9y
bWFuY2UgdGVzdCBmb3IgZHJhd3MgdXNpbmcgaW50ZXJsZWF2ZWQgYXR0cmlidXRlIGRhdGEgaW4g
dmVydGV4IGJ1ZmZlcnMuCi0vLwotCi0jaW5jbHVkZSA8c3N0cmVhbT4KLQotI2luY2x1ZGUgIkFO
R0xFUGVyZlRlc3QuaCIKLSNpbmNsdWRlICJzaGFkZXJfdXRpbHMuaCIKLQotdXNpbmcgbmFtZXNw
YWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotc3RydWN0IEludGVybGVhdmVkQXR0cmlidXRl
RGF0YVBhcmFtcyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUZXN0UGFyYW1zCi17Ci0gICAgSW50ZXJs
ZWF2ZWRBdHRyaWJ1dGVEYXRhUGFyYW1zKCkKLSAgICB7Ci0gICAgICAgIC8vIENvbW1vbiBkZWZh
dWx0IHZhbHVlcwotICAgICAgICBtYWpvclZlcnNpb24gPSAyOwotICAgICAgICBtaW5vclZlcnNp
b24gPSAwOwotICAgICAgICB3aW5kb3dXaWR0aCAgPSA1MTI7Ci0gICAgICAgIHdpbmRvd0hlaWdo
dCA9IDUxMjsKLSAgICAgICAgbnVtU3ByaXRlcyAgID0gMzAwMDsKLSAgICB9Ci0KLSAgICAvLyBz
dGF0aWMgcGFyYW1ldGVycwotICAgIHVuc2lnbmVkIGludCBudW1TcHJpdGVzOwotfTsKLQotc3Rk
Ojpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IEludGVybGVhdmVk
QXR0cmlidXRlRGF0YVBhcmFtcyAmcGFyYW1zKQotewotICAgIG9zIDw8IHBhcmFtcy5zdWZmaXgo
KS5zdWJzdHIoMSk7Ci0KLSAgICBpZiAocGFyYW1zLmVnbFBhcmFtZXRlcnMubWFqb3JWZXJzaW9u
ICE9IEVHTF9ET05UX0NBUkUpCi0gICAgewotICAgICAgICBvcyA8PCAiXyIgPDwgcGFyYW1zLmVn
bFBhcmFtZXRlcnMubWFqb3JWZXJzaW9uIDw8ICJfIiA8PCBwYXJhbXMuZWdsUGFyYW1ldGVycy5t
aW5vclZlcnNpb247Ci0gICAgfQotCi0gICAgcmV0dXJuIG9zOwotfQotCi1jbGFzcyBJbnRlcmxl
YXZlZEF0dHJpYnV0ZURhdGFCZW5jaG1hcmsKLSAgICA6IHB1YmxpYyBBTkdMRVJlbmRlclRlc3Qs
Ci0gICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8SW50ZXJsZWF2ZWRB
dHRyaWJ1dGVEYXRhUGFyYW1zPgotewotICBwdWJsaWM6Ci0gICAgSW50ZXJsZWF2ZWRBdHRyaWJ1
dGVEYXRhQmVuY2htYXJrKCk7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVCZW5jaG1hcmsoKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRlc3Ryb3lCZW5jaG1hcmsoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRy
YXdCZW5jaG1hcmsoKSBvdmVycmlkZTsKLQotICBwcml2YXRlOgotICAgIEdMdWludCBtUG9pbnRT
cHJpdGVQcm9ncmFtOwotICAgIEdMdWludCBtUG9zaXRpb25Db2xvckJ1ZmZlclsyXTsKLQotICAg
IC8vIFRoZSBidWZmZXJzIGNvbnRhaW4gdHdvIGZsb2F0cyBhbmQgMyB1bnNpZ25lZCBieXRlcyBw
ZXIgcG9pbnQgc3ByaXRlCi0gICAgY29uc3Qgc2l6ZV90IG1CeXRlc1BlclNwcml0ZSA9IDIgKiBz
aXplb2YoZmxvYXQpICsgMzsKLX07Ci0KLUludGVybGVhdmVkQXR0cmlidXRlRGF0YUJlbmNobWFy
azo6SW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhQmVuY2htYXJrKCkKLSAgICA6IEFOR0xFUmVuZGVy
VGVzdCgiSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhIiwgR2V0UGFyYW0oKSksIG1Qb2ludFNwcml0
ZVByb2dyYW0oMCkKLXsKLX0KLQotdm9pZCBJbnRlcmxlYXZlZEF0dHJpYnV0ZURhdGFCZW5jaG1h
cms6OmluaXRpYWxpemVCZW5jaG1hcmsoKQotewotICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdl
dFBhcmFtKCk7Ci0KLSAgICAvLyBDb21waWxlIHBvaW50IHNwcml0ZSBzaGFkZXJzCi0gICAgY29u
c3Qgc3RkOjpzdHJpbmcgdnMgPQotICAgICAgICAiYXR0cmlidXRlIHZlYzQgYVBvc2l0aW9uOyIK
LSAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFDb2xvcjsiCi0gICAgICAgICJ2YXJ5aW5nIHZlYzQg
dkNvbG9yOyIKLSAgICAgICAgInZvaWQgbWFpbigpIgotICAgICAgICAieyIKLSAgICAgICAgIiAg
ICBnbF9Qb2ludFNpemUgPSAyNS4wOyIKLSAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiAgPSBhUG9z
aXRpb247IgotICAgICAgICAiICAgIHZDb2xvciA9IGFDb2xvcjsiCi0gICAgICAgICJ9IjsKLQot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OyIKLSAgICAgICAgInZhcnlpbmcgdmVjNCB2Q29sb3I7IgotICAgICAgICAidm9pZCBtYWlu
KCkiCi0gICAgICAgICJ7IgotICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZDb2xvcjsiCi0g
ICAgICAgICJ9IjsKLQotICAgIG1Qb2ludFNwcml0ZVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2
cywgZnMpOwotICAgIEFTU0VSVF9ORSgwdSwgbVBvaW50U3ByaXRlUHJvZ3JhbSk7Ci0KLSAgICBn
bENsZWFyQ29sb3IoMC4wZiwgMS4wZiwgMC4wZiwgMS4wZik7Ci0KLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IEFycmF5U2l6ZShtUG9zaXRpb25Db2xvckJ1ZmZlcik7IGkrKykKLSAgICB7Ci0g
ICAgICAgIC8vIFNldCB1cCBpbml0aWFsIGRhdGEgZm9yIHBvaW50c3ByaXRlIHBvc2l0aW9ucyBh
bmQgY29sb3JzCi0gICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IHBvc2l0aW9uQ29sb3JEYXRh
KG1CeXRlc1BlclNwcml0ZSAqIHBhcmFtcy5udW1TcHJpdGVzKTsKLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnQgaiA9IDA7IGogPCBwYXJhbXMubnVtU3ByaXRlczsgaisrKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBmbG9hdCBwb2ludFNwcml0ZVggPQotICAgICAgICAgICAgICAgIChzdGF0aWNf
Y2FzdDxmbG9hdD4ocmFuZCgpICUgZ2V0V2luZG93KCktPmdldFdpZHRoKCkpIC8gZ2V0V2luZG93
KCktPmdldFdpZHRoKCkpICoKLSAgICAgICAgICAgICAgICAgICAgMi4wZiAtIDEuMGY7Ci0gICAg
ICAgICAgICBmbG9hdCBwb2ludFNwcml0ZVkgPQotICAgICAgICAgICAgICAgIChzdGF0aWNfY2Fz
dDxmbG9hdD4ocmFuZCgpICUgZ2V0V2luZG93KCktPmdldEhlaWdodCgpKSAvIGdldFdpbmRvdygp
LT5nZXRIZWlnaHQoKSkgKgotICAgICAgICAgICAgICAgICAgICAyLjBmIC0gMS4wZjsKLSAgICAg
ICAgICAgIEdMdWJ5dGUgcG9pbnRTcHJpdGVSZWQgICA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+KHJh
bmQoKSAlIDI1NSk7Ci0gICAgICAgICAgICBHTHVieXRlIHBvaW50U3ByaXRlR3JlZW4gPSBzdGF0
aWNfY2FzdDxHTHVieXRlPihyYW5kKCkgJSAyNTUpOwotICAgICAgICAgICAgR0x1Ynl0ZSBwb2lu
dFNwcml0ZUJsdWUgID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4ocmFuZCgpICUgMjU1KTsKLQotICAg
ICAgICAgICAgLy8gQWRkIHBvc2l0aW9uIGRhdGEgZm9yIHRoZSBwb2ludHNwcml0ZQotICAgICAg
ICAgICAgKnJlaW50ZXJwcmV0X2Nhc3Q8ZmxvYXQgKj4oCi0gICAgICAgICAgICAgICAgJihwb3Np
dGlvbkNvbG9yRGF0YVtqICogbUJ5dGVzUGVyU3ByaXRlICsgMCAqIHNpemVvZihmbG9hdCkgKyAw
XSkpID0KLSAgICAgICAgICAgICAgICBwb2ludFNwcml0ZVg7ICAvLyBYCi0gICAgICAgICAgICAq
cmVpbnRlcnByZXRfY2FzdDxmbG9hdCAqPigKLSAgICAgICAgICAgICAgICAmKHBvc2l0aW9uQ29s
b3JEYXRhW2ogKiBtQnl0ZXNQZXJTcHJpdGUgKyAxICogc2l6ZW9mKGZsb2F0KSArIDBdKSkgPQot
ICAgICAgICAgICAgICAgIHBvaW50U3ByaXRlWTsgIC8vIFkKLQotICAgICAgICAgICAgLy8gQWRk
IGNvbG9yIGRhdGEgZm9yIHRoZSBwb2ludHNwcml0ZQotICAgICAgICAgICAgcG9zaXRpb25Db2xv
ckRhdGFbaiAqIG1CeXRlc1BlclNwcml0ZSArIDIgKiBzaXplb2YoZmxvYXQpICsgMF0gPSBwb2lu
dFNwcml0ZVJlZDsgICAgLy8gUgotICAgICAgICAgICAgcG9zaXRpb25Db2xvckRhdGFbaiAqIG1C
eXRlc1BlclNwcml0ZSArIDIgKiBzaXplb2YoZmxvYXQpICsgMV0gPSBwb2ludFNwcml0ZUdyZWVu
OyAgLy8gRwotICAgICAgICAgICAgcG9zaXRpb25Db2xvckRhdGFbaiAqIG1CeXRlc1BlclNwcml0
ZSArIDIgKiBzaXplb2YoZmxvYXQpICsgMl0gPSBwb2ludFNwcml0ZUJsdWU7ICAgLy8gQgotICAg
ICAgICB9Ci0KLSAgICAgICAgLy8gR2VuZXJhdGUgdGhlIEdMIGJ1ZmZlciB3aXRoIHRoZSBwb3Np
dGlvbi9jb2xvciBkYXRhCi0gICAgICAgIGdsR2VuQnVmZmVycygxLCAmbVBvc2l0aW9uQ29sb3JC
dWZmZXJbaV0pOwotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtUG9zaXRp
b25Db2xvckJ1ZmZlcltpXSk7Ci0gICAgICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIs
IHBhcmFtcy5udW1TcHJpdGVzICogbUJ5dGVzUGVyU3ByaXRlLCAmKHBvc2l0aW9uQ29sb3JEYXRh
WzBdKSwKLSAgICAgICAgICAgICAgICAgICAgIEdMX1NUQVRJQ19EUkFXKTsKLSAgICB9Ci0KLSAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotdm9pZCBJbnRlcmxlYXZlZEF0dHJpYnV0ZURh
dGFCZW5jaG1hcms6OmRlc3Ryb3lCZW5jaG1hcmsoKQotewotICAgIGdsRGVsZXRlUHJvZ3JhbSht
UG9pbnRTcHJpdGVQcm9ncmFtKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQXJyYXlT
aXplKG1Qb3NpdGlvbkNvbG9yQnVmZmVyKTsgaSsrKQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVC
dWZmZXJzKDEsICZtUG9zaXRpb25Db2xvckJ1ZmZlcltpXSk7Ci0gICAgfQotfQotCi12b2lkIElu
dGVybGVhdmVkQXR0cmlidXRlRGF0YUJlbmNobWFyazo6ZHJhd0JlbmNobWFyaygpCi17Ci0gICAg
Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLQotICAgIGZvciAoc2l6ZV90IGsgPSAwOyBr
IDwgMjA7IGsrKykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQXJyYXlT
aXplKG1Qb3NpdGlvbkNvbG9yQnVmZmVyKTsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICAv
LyBGaXJzdGx5IGdldCB0aGUgYXR0cmlidXRlIGxvY2F0aW9ucyBmb3IgdGhlIHByb2dyYW0KLSAg
ICAgICAgICAgIGdsVXNlUHJvZ3JhbShtUG9pbnRTcHJpdGVQcm9ncmFtKTsKLSAgICAgICAgICAg
IEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qb2ludFNwcml0
ZVByb2dyYW0sICJhUG9zaXRpb24iKTsKLSAgICAgICAgICAgIEFTU0VSVF9ORShwb3NpdGlvbkxv
Y2F0aW9uLCAtMSk7Ci0gICAgICAgICAgICBHTGludCBjb2xvckxvY2F0aW9uID0gZ2xHZXRBdHRy
aWJMb2NhdGlvbihtUG9pbnRTcHJpdGVQcm9ncmFtLCAiYUNvbG9yIik7Ci0gICAgICAgICAgICBB
U1NFUlRfTkUoY29sb3JMb2NhdGlvbiwgLTEpOwotCi0gICAgICAgICAgICAvLyBCaW5kIHRoZSBw
b3NpdGlvbiBkYXRhIGZyb20gb25lIGJ1ZmZlcgotICAgICAgICAgICAgZ2xCaW5kQnVmZmVyKEdM
X0FSUkFZX0JVRkZFUiwgbVBvc2l0aW9uQ29sb3JCdWZmZXJbaV0pOwotICAgICAgICAgICAgZ2xF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKLSAgICAgICAgICAgIGds
VmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFM
U0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xzaXpl
aT4obUJ5dGVzUGVyU3ByaXRlKSwgMCk7Ci0KLSAgICAgICAgICAgIC8vIEJ1dCBiaW5kIHRoZSBj
b2xvciBkYXRhIGZyb20gdGhlIG90aGVyIGJ1ZmZlci4KLSAgICAgICAgICAgIGdsQmluZEJ1ZmZl
cihHTF9BUlJBWV9CVUZGRVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbVBvc2l0aW9uQ29s
b3JCdWZmZXJbKGkgKyAxKSAlIEFycmF5U2l6ZShtUG9zaXRpb25Db2xvckJ1ZmZlcildKTsKLSAg
ICAgICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoY29sb3JMb2NhdGlvbik7Ci0gICAg
ICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoY29sb3JMb2NhdGlvbiwgMywgR0xfVU5TSUdO
RURfQllURSwgR0xfVFJVRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxHTHNpemVpPihtQnl0ZXNQZXJTcHJpdGUpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPigyICogc2l6ZW9mKGZsb2F0KSkp
OwotCi0gICAgICAgICAgICAvLyBUaGVuIGRyYXcgdGhlIGNvbG9yZWQgcG9pbnRzcHJpdGVzCi0g
ICAgICAgICAgICBnbERyYXdBcnJheXMoR0xfUE9JTlRTLCAwLCBHZXRQYXJhbSgpLm51bVNwcml0
ZXMpOwotICAgICAgICAgICAgZ2xGbHVzaCgpOwotCi0gICAgICAgICAgICBnbERpc2FibGVWZXJ0
ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKLSAgICAgICAgICAgIGdsRGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5KGNvbG9yTG9jYXRpb24pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLVRFU1RfUChJbnRlcmxlYXZlZEF0dHJpYnV0ZURh
dGFCZW5jaG1hcmssIFJ1bikKLXsKLSAgICBydW4oKTsKLX0KLQotSW50ZXJsZWF2ZWRBdHRyaWJ1
dGVEYXRhUGFyYW1zIEQzRDExUGFyYW1zKCkKLXsKLSAgICBJbnRlcmxlYXZlZEF0dHJpYnV0ZURh
dGFQYXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3Jt
OjpEM0QxMSgpOwotICAgIHJldHVybiBwYXJhbXM7Ci19Ci0KLUludGVybGVhdmVkQXR0cmlidXRl
RGF0YVBhcmFtcyBEM0QxMV85XzNQYXJhbXMoKQotewotICAgIEludGVybGVhdmVkQXR0cmlidXRl
RGF0YVBhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZv
cm06OkQzRDExX0ZMOV8zKCk7Ci0gICAgcmV0dXJuIHBhcmFtczsKLX0KLQotSW50ZXJsZWF2ZWRB
dHRyaWJ1dGVEYXRhUGFyYW1zIEQzRDlQYXJhbXMoKQotewotICAgIEludGVybGVhdmVkQXR0cmli
dXRlRGF0YVBhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxh
dGZvcm06OkQzRDkoKTsKLSAgICByZXR1cm4gcGFyYW1zOwotfQotCi1JbnRlcmxlYXZlZEF0dHJp
YnV0ZURhdGFQYXJhbXMgT3BlbkdMUGFyYW1zKCkKLXsKLSAgICBJbnRlcmxlYXZlZEF0dHJpYnV0
ZURhdGFQYXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRm
b3JtOjpPUEVOR0woKTsKLSAgICByZXR1cm4gcGFyYW1zOwotfQotCi1BTkdMRV9JTlNUQU5USUFU
RV9URVNUKEludGVybGVhdmVkQXR0cmlidXRlRGF0YUJlbmNobWFyaywKLSAgICAgICAgICAgICAg
ICAgICAgICAgRDNEMTFQYXJhbXMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfOV8z
UGFyYW1zKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEQzRDlQYXJhbXMoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgT3BlbkdMUGFyYW1zKCkpOwotCi19ICAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90
ZXN0cy9Qb2ludFNwcml0ZXMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3BlcmZfdGVzdHMvUG9pbnRTcHJpdGVzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYjBiMjMxMDliMzM1OGU4OTBlMTFhMDNiMmMwNzA2YTkxZTkyOTJlZi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9Qb2ludFNwcml0ZXMuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMjMwICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gUG9pbnRTcHJpdGVzQmVuY2htYXJrOgot
Ly8gICBQZXJmb3JtYW5jZSB0ZXN0IGZvciBBTkdMRSBwb2ludCBzcHJpdGVzLgotLy8KLS8vCi0j
aW5jbHVkZSAiQU5HTEVQZXJmVGVzdC5oIgotCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVk
ZSA8c3N0cmVhbT4KLQotI2luY2x1ZGUgInNoYWRlcl91dGlscy5oIgotI2luY2x1ZGUgInJhbmRv
bV91dGlscy5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1z
dHJ1Y3QgUG9pbnRTcHJpdGVzUGFyYW1zIGZpbmFsIDogcHVibGljIFJlbmRlclRlc3RQYXJhbXMK
LXsKLSAgICBQb2ludFNwcml0ZXNQYXJhbXMoKQotICAgIHsKLSAgICAgICAgLy8gQ29tbW9uIGRl
ZmF1bHQgcGFyYW1zCi0gICAgICAgIG1ham9yVmVyc2lvbiA9IDI7Ci0gICAgICAgIG1pbm9yVmVy
c2lvbiA9IDA7Ci0gICAgICAgIHdpbmRvd1dpZHRoID0gMTI4MDsKLSAgICAgICAgd2luZG93SGVp
Z2h0ID0gNzIwOwotICAgICAgICBpdGVyYXRpb25zICAgPSAxMDA7Ci0gICAgICAgIGNvdW50ID0g
MTA7Ci0gICAgICAgIHNpemUgPSAzLjBmOwotICAgICAgICBudW1WYXJ5aW5ncyA9IDM7Ci0gICAg
fQotCi0gICAgc3RkOjpzdHJpbmcgc3VmZml4KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICB1bnNp
Z25lZCBpbnQgY291bnQ7Ci0gICAgZmxvYXQgc2l6ZTsKLSAgICB1bnNpZ25lZCBpbnQgbnVtVmFy
eWluZ3M7Ci0KLSAgICAvLyBzdGF0aWMgcGFyYW1ldGVycwotICAgIHVuc2lnbmVkIGludCBpdGVy
YXRpb25zOwotfTsKLQotc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmb3Ms
IGNvbnN0IFBvaW50U3ByaXRlc1BhcmFtcyAmcGFyYW1zKQotewotICAgIG9zIDw8IHBhcmFtcy5z
dWZmaXgoKS5zdWJzdHIoMSk7Ci0gICAgcmV0dXJuIG9zOwotfQotCi1jbGFzcyBQb2ludFNwcml0
ZXNCZW5jaG1hcmsgOiBwdWJsaWMgQU5HTEVSZW5kZXJUZXN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPFBvaW50U3By
aXRlc1BhcmFtcz4KLXsKLSAgcHVibGljOgotICAgIFBvaW50U3ByaXRlc0JlbmNobWFyaygpOwot
Ci0gICAgdm9pZCBpbml0aWFsaXplQmVuY2htYXJrKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZXN0
cm95QmVuY2htYXJrKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3QmVuY2htYXJrKCkgb3ZlcnJp
ZGU7Ci0KLSAgcHJpdmF0ZToKLSAgICBHTHVpbnQgbVByb2dyYW07Ci0gICAgR0x1aW50IG1CdWZm
ZXI7Ci0gICAgUk5HIG1STkc7Ci19OwotCi1zdGQ6OnN0cmluZyBQb2ludFNwcml0ZXNQYXJhbXM6
OnN1ZmZpeCgpIGNvbnN0Ci17Ci0gICAgc3RkOjpzdHJpbmdzdHJlYW0gc3Ryc3RyOwotCi0gICAg
c3Ryc3RyIDw8IFJlbmRlclRlc3RQYXJhbXM6OnN1ZmZpeCgpCi0gICAgICAgICAgIDw8ICJfIiA8
PCBjb3VudCA8PCAiXyIgPDwgc2l6ZSA8PCAicHgiCi0gICAgICAgICAgIDw8ICJfIiA8PCBudW1W
YXJ5aW5ncyA8PCAidmFycyI7Ci0KLSAgICByZXR1cm4gc3Ryc3RyLnN0cigpOwotfQotCi1Qb2lu
dFNwcml0ZXNCZW5jaG1hcms6OlBvaW50U3ByaXRlc0JlbmNobWFyaygpCi0gICAgOiBBTkdMRVJl
bmRlclRlc3QoIlBvaW50U3ByaXRlcyIsIEdldFBhcmFtKCkpLCBtUk5HKDEpCi17Ci19Ci0KLXZv
aWQgUG9pbnRTcHJpdGVzQmVuY2htYXJrOjppbml0aWFsaXplQmVuY2htYXJrKCkKLXsKLSAgICBj
b25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOwotCi0gICAgQVNTRVJUX0xUKDB1LCBwYXJh
bXMuaXRlcmF0aW9ucyk7Ci0KLSAgICBzdGQ6OnN0cmluZ3N0cmVhbSB2c3Ryc3RyOwotCi0gICAg
Ly8gVmVyaWZ5ICJudW1WYXJ5aW5ncyIgaXMgd2l0aGluIE1BWF9WQVJZSU5HUyBsaW1pdAotICAg
IEdMaW50IG1heFZhcnlpbmdzOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVD
VE9SUywgJm1heFZhcnlpbmdzKTsKLQotICAgIGlmIChwYXJhbXMubnVtVmFyeWluZ3MgPiBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1heFZhcnlpbmdzKSkKLSAgICB7Ci0gICAgICAgIEZBSUwo
KSA8PCAiVmFyeWluZyBjb3VudCAoIiA8PCBwYXJhbXMubnVtVmFyeWluZ3MgPDwgIikiCi0gICAg
ICAgICAgICAgICA8PCAiIGV4Y2VlZHMgbWF4aW11bSB2YXJ5aW5nczogIiA8PCBtYXhWYXJ5aW5n
cyA8PCBzdGQ6OmVuZGw7Ci0gICAgfQotCi0gICAgdnN0cnN0ciA8PCAiYXR0cmlidXRlIHZlYzIg
dlBvc2l0aW9uO1xuIgotICAgICAgICAgICAgICAgInVuaWZvcm0gZmxvYXQgdVBvaW50U2l6ZTtc
biI7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGludCB2YXJDb3VudCA9IDA7IHZhckNvdW50IDwgcGFy
YW1zLm51bVZhcnlpbmdzOyB2YXJDb3VudCsrKQotICAgIHsKLSAgICAgICAgdnN0cnN0ciA8PCAi
dmFyeWluZyB2ZWM0IHYiIDw8IHZhckNvdW50IDw8ICI7XG4iOwotICAgIH0KLQotICAgIHZzdHJz
dHIgPDwgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgICAgICAie1xuIjsKLQotICAgIGZvciAo
dW5zaWduZWQgaW50IHZhckNvdW50ID0gMDsgdmFyQ291bnQgPCBwYXJhbXMubnVtVmFyeWluZ3M7
IHZhckNvdW50KyspCi0gICAgewotICAgICAgICB2c3Ryc3RyIDw8ICIgICAgdiIgPDwgdmFyQ291
bnQgPDwgIiA9IHZlYzQoMS4wKTtcbiI7Ci0gICAgfQotCi0gICAgdnN0cnN0ciA8PCAiICAgIGds
X1Bvc2l0aW9uID0gdmVjNCh2UG9zaXRpb24sIDAsIDEuMCk7XG4iCi0gICAgICAgICAgICAgICAi
ICAgIGdsX1BvaW50U2l6ZSA9IHVQb2ludFNpemU7XG4iCi0gICAgICAgICAgICAgICAifSI7Ci0K
LSAgICBzdGQ6OnN0cmluZ3N0cmVhbSBmc3Ryc3RyOwotCi0gICAgZnN0cnN0ciA8PCAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iOwotCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgdmFyQ291bnQg
PSAwOyB2YXJDb3VudCA8IHBhcmFtcy5udW1WYXJ5aW5nczsgdmFyQ291bnQrKykKLSAgICB7Ci0g
ICAgICAgIGZzdHJzdHIgPDwgInZhcnlpbmcgdmVjNCB2IiA8PCB2YXJDb3VudCA8PCAiO1xuIjsK
LSAgICB9Ci0KLSAgICBmc3Ryc3RyIDw8ICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAgICAgICAg
IntcbiIKLSAgICAgICAgICAgICAgICIgICAgdmVjNCBjb2xvck91dCA9IHZlYzQoMS4wLCAwLjAs
IDAuMCwgMS4wKTtcbiI7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGludCB2YXJDb3VudCA9IDA7IHZh
ckNvdW50IDwgcGFyYW1zLm51bVZhcnlpbmdzOyB2YXJDb3VudCsrKQotICAgIHsKLSAgICAgICAg
ZnN0cnN0ciA8PCAiICAgIGNvbG9yT3V0LnIgKz0gdiIgPDwgdmFyQ291bnQgPDwgIi5yO1xuIjsK
LSAgICB9Ci0KLSAgICBmc3Ryc3RyIDw8ICIgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3JPdXQ7XG4i
Ci0gICAgICAgICAgICAgICAifVxuIjsKLQotICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0o
dnN0cnN0ci5zdHIoKSwgZnN0cnN0ci5zdHIoKSk7Ci0gICAgQVNTRVJUX05FKDB1LCBtUHJvZ3Jh
bSk7Ci0KLSAgICAvLyBVc2UgdGhlIHByb2dyYW0gb2JqZWN0Ci0gICAgZ2xVc2VQcm9ncmFtKG1Q
cm9ncmFtKTsKLQotICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKLQot
ICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiB2ZXJ0ZXhQb3NpdGlvbnMocGFyYW1zLmNvdW50ICogMik7
Ci0gICAgZm9yIChzaXplX3QgcG9pbnRJbmRleCA9IDA7IHBvaW50SW5kZXggPCB2ZXJ0ZXhQb3Np
dGlvbnMuc2l6ZSgpOyArK3BvaW50SW5kZXgpCi0gICAgewotICAgICAgICB2ZXJ0ZXhQb3NpdGlv
bnNbcG9pbnRJbmRleF0gPSBtUk5HLnJhbmRvbU5lZ2F0aXZlT25lVG9PbmUoKTsKLSAgICB9Ci0K
LSAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1CdWZmZXIpOwotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJB
WV9CVUZGRVIsIG1CdWZmZXIpOwotICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHZl
cnRleFBvc2l0aW9ucy5zaXplKCkgKiBzaXplb2YoZmxvYXQpLCAmdmVydGV4UG9zaXRpb25zWzBd
LCBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICBHTGludCBwb3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRB
dHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInZQb3NpdGlvbiIpOwotICAgIEFTU0VSVF9ORSgtMSwg
cG9zaXRpb25Mb2NhdGlvbik7Ci0KLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25M
b2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBudWxscHRyKTsKLSAgICBnbEVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOwotCi0gICAgLy8gU2V0IHRoZSB2
aWV3cG9ydAotICAgIGdsVmlld3BvcnQoMCwgMCwgZ2V0V2luZG93KCktPmdldFdpZHRoKCksIGdl
dFdpbmRvdygpLT5nZXRIZWlnaHQoKSk7Ci0KLSAgICBHTGludCBwb2ludFNpemVMb2NhdGlvbiA9
IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidVBvaW50U2l6ZSIpOwotICAgIEFTU0VS
VF9ORSgtMSwgcG9pbnRTaXplTG9jYXRpb24pOwotCi0gICAgZ2xVbmlmb3JtMWYocG9pbnRTaXpl
TG9jYXRpb24sIHBhcmFtcy5zaXplKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotfQot
Ci12b2lkIFBvaW50U3ByaXRlc0JlbmNobWFyazo6ZGVzdHJveUJlbmNobWFyaygpCi17Ci0gICAg
Z2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1CdWZm
ZXIpOwotfQotCi12b2lkIFBvaW50U3ByaXRlc0JlbmNobWFyazo6ZHJhd0JlbmNobWFyaygpCi17
Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLQotICAgIGNvbnN0IGF1dG8gJnBh
cmFtcyA9IEdldFBhcmFtKCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGludCBpdCA9IDA7IGl0IDwg
cGFyYW1zLml0ZXJhdGlvbnM7IGl0KyspCi0gICAgewotICAgICAgICAvL1RPRE8oam1hZGlsbCk6
IEluZGV4ZWQgcG9pbnQgcmVuZGVyaW5nLiBBTkdMRSBpcyBiYWQgYXQgdGhpcy4KLSAgICAgICAg
Z2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwgcGFyYW1zLmNvdW50KTsKLSAgICB9Ci0KLSAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotUG9pbnRTcHJpdGVzUGFyYW1zIEQzRDExUGFyYW1z
KCkKLXsKLSAgICBQb2ludFNwcml0ZXNQYXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQYXJh
bWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpEM0QxMSgpOwotICAgIHJldHVybiBwYXJhbXM7Ci19Ci0K
LVBvaW50U3ByaXRlc1BhcmFtcyBEM0Q5UGFyYW1zKCkKLXsKLSAgICBQb2ludFNwcml0ZXNQYXJh
bXMgcGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpEM0Q5
KCk7Ci0gICAgcmV0dXJuIHBhcmFtczsKLX0KLQotUG9pbnRTcHJpdGVzUGFyYW1zIE9wZW5HTFBh
cmFtcygpCi17Ci0gICAgUG9pbnRTcHJpdGVzUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWds
UGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6T1BFTkdMKCk7Ci0gICAgcmV0dXJuIHBhcmFtczsK
LX0KLQotfSAvLyBuYW1lc3BhY2UKLQotVEVTVF9QKFBvaW50U3ByaXRlc0JlbmNobWFyaywgUnVu
KQotewotICAgIHJ1bigpOwotfQotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKFBvaW50U3ByaXRl
c0JlbmNobWFyaywKLSAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFQYXJhbXMoKSwgRDNEOVBh
cmFtcygpLCBPcGVuR0xQYXJhbXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9UZXhTdWJJbWFnZS5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9UZXhTdWJJbWFnZS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNGI1Y2Y2ODc3MGU2MWQ3OTk0NmMxNDlmOTc1MDMwOTBi
NDZkNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVGV4U3ViSW1hZ2UuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMjk4ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIw
MTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gVGV4U3Vi
SW1hZ2VCZW5jaG1hcms6Ci0vLyAgIFBlcmZvcm1hY2UgdGVzdCBmb3IgQU5HTEUgdGV4dHVyZSB1
cGRhdGVzLgotLy8KLQotI2luY2x1ZGUgPHNzdHJlYW0+Ci0KLSNpbmNsdWRlICJBTkdMRVBlcmZU
ZXN0LmgiCi0jaW5jbHVkZSAic2hhZGVyX3V0aWxzLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmds
ZTsKLQotbmFtZXNwYWNlCi17Ci0KLXN0cnVjdCBUZXhTdWJJbWFnZVBhcmFtcyBmaW5hbCA6IHB1
YmxpYyBSZW5kZXJUZXN0UGFyYW1zCi17Ci0gICAgVGV4U3ViSW1hZ2VQYXJhbXMoKQotICAgIHsK
LSAgICAgICAgLy8gQ29tbW9uIGRlZmF1bHQgcGFyYW1ldGVycwotICAgICAgICBtYWpvclZlcnNp
b24gPSAyOwotICAgICAgICBtaW5vclZlcnNpb24gPSAwOwotICAgICAgICB3aW5kb3dXaWR0aCA9
IDUxMjsKLSAgICAgICAgd2luZG93SGVpZ2h0ID0gNTEyOwotCi0gICAgICAgIGltYWdlV2lkdGgg
PSAxMDI0OwotICAgICAgICBpbWFnZUhlaWdodCA9IDEwMjQ7Ci0gICAgICAgIHN1YkltYWdlV2lk
dGggPSA2NDsKLSAgICAgICAgc3ViSW1hZ2VIZWlnaHQgPSA2NDsKLSAgICAgICAgaXRlcmF0aW9u
cyAgICAgPSA5OwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nIHN1ZmZpeCgpIGNvbnN0IG92ZXJy
aWRlOwotCi0gICAgLy8gU3RhdGljIHBhcmFtZXRlcnMKLSAgICBpbnQgaW1hZ2VXaWR0aDsKLSAg
ICBpbnQgaW1hZ2VIZWlnaHQ7Ci0gICAgaW50IHN1YkltYWdlV2lkdGg7Ci0gICAgaW50IHN1Yklt
YWdlSGVpZ2h0OwotICAgIHVuc2lnbmVkIGludCBpdGVyYXRpb25zOwotfTsKLQotc3RkOjpvc3Ry
ZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IFRleFN1YkltYWdlUGFyYW1z
ICZwYXJhbXMpCi17Ci0gICAgb3MgPDwgcGFyYW1zLnN1ZmZpeCgpLnN1YnN0cigxKTsKLSAgICBy
ZXR1cm4gb3M7Ci19Ci0KLWNsYXNzIFRleFN1YkltYWdlQmVuY2htYXJrIDogcHVibGljIEFOR0xF
UmVuZGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIDo6dGVzdGlu
Zzo6V2l0aFBhcmFtSW50ZXJmYWNlPFRleFN1YkltYWdlUGFyYW1zPgotewotICBwdWJsaWM6Ci0g
ICAgVGV4U3ViSW1hZ2VCZW5jaG1hcmsoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUJlbmNobWFy
aygpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVzdHJveUJlbmNobWFyaygpIG92ZXJyaWRlOwotICAg
IHZvaWQgZHJhd0JlbmNobWFyaygpIG92ZXJyaWRlOwotCi0gIHByaXZhdGU6Ci0gICAgR0x1aW50
IGNyZWF0ZVRleHR1cmUoKTsKLQotICAgIC8vIEhhbmRsZSB0byBhIHByb2dyYW0gb2JqZWN0Ci0g
ICAgR0x1aW50IG1Qcm9ncmFtOwotCi0gICAgLy8gQXR0cmlidXRlIGxvY2F0aW9ucwotICAgIEdM
aW50IG1Qb3NpdGlvbkxvYzsKLSAgICBHTGludCBtVGV4Q29vcmRMb2M7Ci0KLSAgICAvLyBTYW1w
bGVyIGxvY2F0aW9uCi0gICAgR0xpbnQgbVNhbXBsZXJMb2M7Ci0KLSAgICAvLyBUZXh0dXJlIGhh
bmRsZQotICAgIEdMdWludCBtVGV4dHVyZTsKLQotICAgIC8vIEJ1ZmZlciBoYW5kbGUKLSAgICBH
THVpbnQgbVZlcnRleEJ1ZmZlcjsKLSAgICBHTHVpbnQgbUluZGV4QnVmZmVyOwotCi0gICAgR0x1
Ynl0ZSAqbVBpeGVsczsKLX07Ci0KLXN0ZDo6c3RyaW5nIFRleFN1YkltYWdlUGFyYW1zOjpzdWZm
aXgoKSBjb25zdAotewotICAgIC8vIFRPRE8oam1hZGlsbCkKLSAgICByZXR1cm4gUmVuZGVyVGVz
dFBhcmFtczo6c3VmZml4KCk7Ci19Ci0KLVRleFN1YkltYWdlQmVuY2htYXJrOjpUZXhTdWJJbWFn
ZUJlbmNobWFyaygpCi0gICAgOiBBTkdMRVJlbmRlclRlc3QoIlRleFN1YkltYWdlIiwgR2V0UGFy
YW0oKSksCi0gICAgICBtUHJvZ3JhbSgwKSwKLSAgICAgIG1Qb3NpdGlvbkxvYygtMSksCi0gICAg
ICBtVGV4Q29vcmRMb2MoLTEpLAotICAgICAgbVNhbXBsZXJMb2MoLTEpLAotICAgICAgbVRleHR1
cmUoMCksCi0gICAgICBtVmVydGV4QnVmZmVyKDApLAotICAgICAgbUluZGV4QnVmZmVyKDApLAot
ICAgICAgbVBpeGVscyhudWxscHRyKQotewotfQotCi1HTHVpbnQgVGV4U3ViSW1hZ2VCZW5jaG1h
cms6OmNyZWF0ZVRleHR1cmUoKQotewotICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFt
KCk7Ci0KLSAgICBhc3NlcnQocGFyYW1zLml0ZXJhdGlvbnMgPiAwKTsKLQotICAgIC8vIFVzZSB0
aWdodGx5IHBhY2tlZCBkYXRhCi0gICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfQUxJR05NRU5U
LCAxKTsKLQotICAgIC8vIEdlbmVyYXRlIGEgdGV4dHVyZSBvYmplY3QKLSAgICBHTHVpbnQgdGV4
dHVyZTsKLSAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKLQotICAgIC8vIEJpbmQgdGhl
IHRleHR1cmUgb2JqZWN0Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJl
KTsKLQotICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4LCBw
YXJhbXMuaW1hZ2VXaWR0aCwgcGFyYW1zLmltYWdlSGVpZ2h0KTsKLQotICAgIC8vIFNldCB0aGUg
ZmlsdGVyaW5nIG1vZGUKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVY
VFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLQotICAgIHJldHVy
biB0ZXh0dXJlOwotfQotCi12b2lkIFRleFN1YkltYWdlQmVuY2htYXJrOjppbml0aWFsaXplQmVu
Y2htYXJrKCkKLXsKLSAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOwotCi0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgdnMgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBhdHRy
aWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOwotICAgICAgICBhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3Jk
OwotICAgICAgICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKLSAgICAgICAgdm9pZCBtYWluKCkK
LSAgICAgICAgewotICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOwotICAgICAg
ICAgICAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQ7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgZnMgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDsKLSAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7Ci0g
ICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsKLSAgICAgICAgdm9pZCBtYWluKCkK
LSAgICAgICAgewotICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVy
ZSwgdl90ZXhDb29yZCk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgbVByb2dyYW0gPSBDb21w
aWxlUHJvZ3JhbSh2cywgZnMpOwotICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotCi0gICAg
Ly8gR2V0IHRoZSBhdHRyaWJ1dGUgbG9jYXRpb25zCi0gICAgbVBvc2l0aW9uTG9jID0gZ2xHZXRB
dHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImFfcG9zaXRpb24iKTsKLSAgICBtVGV4Q29vcmRMb2Mg
PSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiYV90ZXhDb29yZCIpOwotCi0gICAgLy8g
R2V0IHRoZSBzYW1wbGVyIGxvY2F0aW9uCi0gICAgbVNhbXBsZXJMb2MgPSBnbEdldFVuaWZvcm1M
b2NhdGlvbihtUHJvZ3JhbSwgInNfdGV4dHVyZSIpOwotCi0gICAgLy8gQnVpbGQgdGhlIHZlcnRl
eCBidWZmZXIKLSAgICBHTGZsb2F0IHZlcnRpY2VzW10gPQotICAgIHsKLSAgICAgICAgLTAuNWYs
IDAuNWYsIDAuMGYsICAvLyBQb3NpdGlvbiAwCi0gICAgICAgIDAuMGYsIDAuMGYsICAgICAgICAv
LyBUZXhDb29yZCAwCi0gICAgICAgIC0wLjVmLCAtMC41ZiwgMC4wZiwgIC8vIFBvc2l0aW9uIDEK
LSAgICAgICAgMC4wZiwgMS4wZiwgICAgICAgIC8vIFRleENvb3JkIDEKLSAgICAgICAgMC41Ziwg
LTAuNWYsIDAuMGYsICAvLyBQb3NpdGlvbiAyCi0gICAgICAgIDEuMGYsIDEuMGYsICAgICAgICAv
LyBUZXhDb29yZCAyCi0gICAgICAgIDAuNWYsIDAuNWYsIDAuMGYsICAvLyBQb3NpdGlvbiAzCi0g
ICAgICAgIDEuMGYsIDAuMGYgICAgICAgICAvLyBUZXhDb29yZCAzCi0gICAgfTsKLQotICAgIGds
R2VuQnVmZmVycygxLCAmbVZlcnRleEJ1ZmZlcik7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZ
X0JVRkZFUiwgbVZlcnRleEJ1ZmZlcik7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZF
Uiwgc2l6ZW9mKHZlcnRpY2VzKSwgdmVydGljZXMsIEdMX1NUQVRJQ19EUkFXKTsKLQotICAgIEdM
dXNob3J0IGluZGljZXNbXSA9IHsgMCwgMSwgMiwgMCwgMiwgMyB9OwotICAgIGdsR2VuQnVmZmVy
cygxLCAmbUluZGV4QnVmZmVyKTsKLSAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9C
VUZGRVIsIG1JbmRleEJ1ZmZlcik7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX0VMRU1FTlRfQVJSQVlf
QlVGRkVSLCBzaXplb2YoaW5kaWNlcyksIGluZGljZXMsIEdMX1NUQVRJQ19EUkFXKTsKLQotICAg
IC8vIExvYWQgdGhlIHRleHR1cmUKLSAgICBtVGV4dHVyZSA9IGNyZWF0ZVRleHR1cmUoKTsKLQot
ICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKLQotICAgIG1QaXhlbHMg
PSBuZXcgR0x1Ynl0ZVtwYXJhbXMuc3ViSW1hZ2VXaWR0aCAqIHBhcmFtcy5zdWJJbWFnZUhlaWdo
dCAqIDRdOwotCi0gICAgLy8gRmlsbCB0aGUgcGl4ZWxzIHN0cnVjdHVyZSB3aXRoIHJhbmRvbSBk
YXRhOgotICAgIGZvciAoaW50IHkgPSAwOyB5IDwgcGFyYW1zLnN1YkltYWdlSGVpZ2h0OyArK3kp
Ci0gICAgewotICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHBhcmFtcy5zdWJJbWFnZVdpZHRo
OyArK3gpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSAoeCArICh5ICogcGFy
YW1zLnN1YkltYWdlV2lkdGgpKSAqIDQ7Ci0gICAgICAgICAgICBtUGl4ZWxzW29mZnNldCArIDBd
ID0gcmFuZCgpICUgMjU1OyAvLyBSZWQKLSAgICAgICAgICAgIG1QaXhlbHNbb2Zmc2V0ICsgMV0g
PSByYW5kKCkgJSAyNTU7IC8vIEdyZWVuCi0gICAgICAgICAgICBtUGl4ZWxzW29mZnNldCArIDJd
ID0gcmFuZCgpICUgMjU1OyAvLyBCbHVlCi0gICAgICAgICAgICBtUGl4ZWxzW29mZnNldCArIDNd
ID0gMjU1OyAvLyBBbHBoYQotICAgICAgICB9Ci0gICAgfQotCi0gICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Ci19Ci0KLXZvaWQgVGV4U3ViSW1hZ2VCZW5jaG1hcms6OmRlc3Ryb3lCZW5jaG1hcmso
KQotewotICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgZ2xEZWxldGVCdWZmZXJz
KDEsICZtVmVydGV4QnVmZmVyKTsKLSAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1JbmRleEJ1ZmZl
cik7Ci0gICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUpOwotICAgIGRlbGV0ZVtdIG1Q
aXhlbHM7Ci19Ci0KLXZvaWQgVGV4U3ViSW1hZ2VCZW5jaG1hcms6OmRyYXdCZW5jaG1hcmsoKQot
ewotICAgIC8vIFNldCB0aGUgdmlld3BvcnQKLSAgICBnbFZpZXdwb3J0KDAsIDAsIGdldFdpbmRv
dygpLT5nZXRXaWR0aCgpLCBnZXRXaW5kb3coKS0+Z2V0SGVpZ2h0KCkpOwotCi0gICAgLy8gQ2xl
YXIgdGhlIGNvbG9yIGJ1ZmZlcgotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0K
LSAgICAvLyBVc2UgdGhlIHByb2dyYW0gb2JqZWN0Ci0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFt
KTsKLQotICAgIC8vIEJpbmQgdGhlIGJ1ZmZlcnMKLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlf
QlVGRkVSLCBtVmVydGV4QnVmZmVyKTsKLSAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJB
WV9CVUZGRVIsIG1JbmRleEJ1ZmZlcik7Ci0KLSAgICAvLyBMb2FkIHRoZSB2ZXJ0ZXggcG9zaXRp
b24KLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobVBvc2l0aW9uTG9jLCAzLCBHTF9GTE9BVCwg
R0xfRkFMU0UsIDUgKiBzaXplb2YoR0xmbG9hdCksIDApOwotICAgIC8vIExvYWQgdGhlIHRleHR1
cmUgY29vcmRpbmF0ZQotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtVGV4Q29vcmRMb2MsIDIs
IEdMX0ZMT0FULCBHTF9GQUxTRSwgNSAqIHNpemVvZihHTGZsb2F0KSwgKEdMdm9pZCopKDMgKiBz
aXplb2YoR0xmbG9hdCkpKTsKLQotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobVBvc2l0
aW9uTG9jKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1UZXhDb29yZExvYyk7Ci0K
LSAgICAvLyBCaW5kIHRoZSB0ZXh0dXJlCi0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUw
KTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsKLQotICAgIC8v
IFNldCB0aGUgdGV4dHVyZSBzYW1wbGVyIHRvIHRleHR1cmUgdW5pdCB0byAwCi0gICAgZ2xVbmlm
b3JtMWkobVNhbXBsZXJMb2MsIDApOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOwotCi0gICAgZm9yICh1bnNpZ25lZCBp
bnQgaXRlcmF0aW9uID0gMDsgaXRlcmF0aW9uIDwgcGFyYW1zLml0ZXJhdGlvbnM7ICsraXRlcmF0
aW9uKQotICAgIHsKLSAgICAgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICByYW5kKCkgJSAocGFyYW1zLmltYWdlV2lkdGggLSBwYXJh
bXMuc3ViSW1hZ2VXaWR0aCksCi0gICAgICAgICAgICAgICAgICAgICAgICByYW5kKCkgJSAocGFy
YW1zLmltYWdlSGVpZ2h0IC0gcGFyYW1zLnN1YkltYWdlSGVpZ2h0KSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmFtcy5zdWJJbWFnZVdpZHRoLCBwYXJhbXMuc3ViSW1hZ2VIZWlnaHQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBtUGl4ZWxz
KTsKLQotICAgICAgICBnbERyYXdFbGVtZW50cyhHTF9UUklBTkdMRVMsIDYsIEdMX1VOU0lHTkVE
X1NIT1JULCAwKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotVGV4
U3ViSW1hZ2VQYXJhbXMgRDNEMTFQYXJhbXMoKQotewotICAgIFRleFN1YkltYWdlUGFyYW1zIHBh
cmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNEMTEoKTsK
LSAgICByZXR1cm4gcGFyYW1zOwotfQotCi1UZXhTdWJJbWFnZVBhcmFtcyBEM0Q5UGFyYW1zKCkK
LXsKLSAgICBUZXhTdWJJbWFnZVBhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRl
cnMgPSBlZ2xfcGxhdGZvcm06OkQzRDkoKTsKLSAgICByZXR1cm4gcGFyYW1zOwotfQotCi1UZXhT
dWJJbWFnZVBhcmFtcyBPcGVuR0xQYXJhbXMoKQotewotICAgIFRleFN1YkltYWdlUGFyYW1zIHBh
cmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6T1BFTkdMKCk7
Ci0gICAgcmV0dXJuIHBhcmFtczsKLX0KLQotfSAvLyBuYW1lc3BhY2UKLQotVEVTVF9QKFRleFN1
YkltYWdlQmVuY2htYXJrLCBSdW4pCi17Ci0gICAgcnVuKCk7Ci19Ci0KLUFOR0xFX0lOU1RBTlRJ
QVRFX1RFU1QoVGV4U3ViSW1hZ2VCZW5jaG1hcmssCi0gICAgICAgICAgICAgICAgICAgICAgIEQz
RDExUGFyYW1zKCksIEQzRDlQYXJhbXMoKSwgT3BlbkdMUGFyYW1zKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVGV4dHVyZVNhbXBs
aW5nLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL1Rl
eHR1cmVTYW1wbGluZy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMDBhY2Rk
ZmMxYjViMWQ0MjEzYmVjMmQzMjlhYjkxMmEzMDVmY2MuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3BlcmZfdGVzdHMvVGV4dHVyZVNhbXBsaW5nLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4OCAr
MCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIFRleHR1cmVTYW1wbGluZ0JlbmNobWFyazoKLS8vICAg
UGVyZm9ybWFuY2UgdGVzdCBmb3IgdGV4dHVyZSBzYW1wbGluZy4gVGhlIHRlc3QgZ2VuZXJhdGVz
IGEgdGV4dHVyZSBjb250YWluaW5nIHJhbmRvbSBkYXRhCi0vLyAgIGFuZCB0aGVuIGJsdXJzIGl0
IGluIGEgZnJhZ21lbnQgc2hhZGVyIHVzaW5nIG5lYXJlc3QgbmVpZ2hib3Igc2FtcGxpbmcuIFRo
ZSB0ZXN0IGlzCi0vLyAgIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byB0ZXN0IG92ZXJoZWFkIG9m
IEdMU0wncyBidWlsdGluIHRleHR1cmUqKCkgZnVuY3Rpb25zIHRoYXQgbWF5IHJlc3VsdAotLy8g
ICBmcm9tIGhvdyBBTkdMRSB0cmFuc2xhdGVzIHRoZW0gb24gZWFjaCBiYWNrZW5kLgotLy8KLQot
I2luY2x1ZGUgIkFOR0xFUGVyZlRlc3QuaCIKLQotI2luY2x1ZGUgPGlvc3RyZWFtPgotI2luY2x1
ZGUgPHJhbmRvbT4KLSNpbmNsdWRlIDxzc3RyZWFtPgotCi0jaW5jbHVkZSAic2hhZGVyX3V0aWxz
LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17Ci0KLXN0cnVjdCBU
ZXh0dXJlU2FtcGxpbmdQYXJhbXMgZmluYWwgOiBwdWJsaWMgUmVuZGVyVGVzdFBhcmFtcwotewot
ICAgIFRleHR1cmVTYW1wbGluZ1BhcmFtcygpCi0gICAgewotICAgICAgICAvLyBDb21tb24gZGVm
YXVsdCBwYXJhbXMKLSAgICAgICAgbWFqb3JWZXJzaW9uID0gMjsKLSAgICAgICAgbWlub3JWZXJz
aW9uID0gMDsKLSAgICAgICAgd2luZG93V2lkdGggID0gNzIwOwotICAgICAgICB3aW5kb3dIZWln
aHQgPSA3MjA7Ci0gICAgICAgIGl0ZXJhdGlvbnMgICA9IDQ7Ci0KLSAgICAgICAgbnVtU2FtcGxl
cnMgPSAyOwotICAgICAgICB0ZXh0dXJlU2l6ZSA9IDMyOwotICAgICAgICBrZXJuZWxTaXplICA9
IDM7Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgc3VmZml4KCkgY29uc3Qgb3ZlcnJpZGU7Ci0g
ICAgdW5zaWduZWQgaW50IG51bVNhbXBsZXJzOwotICAgIHVuc2lnbmVkIGludCB0ZXh0dXJlU2l6
ZTsKLSAgICB1bnNpZ25lZCBpbnQga2VybmVsU2l6ZTsKLQotICAgIC8vIHN0YXRpYyBwYXJhbWV0
ZXJzCi0gICAgdW5zaWduZWQgaW50IGl0ZXJhdGlvbnM7Ci19OwotCi1zdGQ6Om9zdHJlYW0gJm9w
ZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgY29uc3QgVGV4dHVyZVNhbXBsaW5nUGFyYW1zICZw
YXJhbXMpCi17Ci0gICAgb3MgPDwgcGFyYW1zLnN1ZmZpeCgpLnN1YnN0cigxKTsKLSAgICByZXR1
cm4gb3M7Ci19Ci0KLXN0ZDo6c3RyaW5nIFRleHR1cmVTYW1wbGluZ1BhcmFtczo6c3VmZml4KCkg
Y29uc3QKLXsKLSAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJzdHI7Ci0KLSAgICBzdHJzdHIgPDwg
UmVuZGVyVGVzdFBhcmFtczo6c3VmZml4KCkgPDwgIl8iIDw8IG51bVNhbXBsZXJzIDw8ICJzYW1w
bGVycyI7Ci0KLSAgICByZXR1cm4gc3Ryc3RyLnN0cigpOwotfQotCi1jbGFzcyBUZXh0dXJlU2Ft
cGxpbmdCZW5jaG1hcmsgOiBwdWJsaWMgQU5HTEVSZW5kZXJUZXN0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPFRl
eHR1cmVTYW1wbGluZ1BhcmFtcz4KLXsKLSAgcHVibGljOgotICAgIFRleHR1cmVTYW1wbGluZ0Jl
bmNobWFyaygpOwotCi0gICAgdm9pZCBpbml0aWFsaXplQmVuY2htYXJrKCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkZXN0cm95QmVuY2htYXJrKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3QmVuY2ht
YXJrKCkgb3ZlcnJpZGU7Ci0KLSAgcHJpdmF0ZToKLSAgICB2b2lkIGluaXRTaGFkZXJzKCk7Ci0g
ICAgdm9pZCBpbml0VmVydGV4QnVmZmVyKCk7Ci0gICAgdm9pZCBpbml0VGV4dHVyZXMoKTsKLQot
ICAgIEdMdWludCBtUHJvZ3JhbTsKLSAgICBHTHVpbnQgbUJ1ZmZlcjsKLSAgICBzdGQ6OnZlY3Rv
cjxHTHVpbnQ+IG1UZXh0dXJlczsKLX07Ci0KLVRleHR1cmVTYW1wbGluZ0JlbmNobWFyazo6VGV4
dHVyZVNhbXBsaW5nQmVuY2htYXJrKCkKLSAgICA6IEFOR0xFUmVuZGVyVGVzdCgiVGV4dHVyZVNh
bXBsaW5nIiwgR2V0UGFyYW0oKSksIG1Qcm9ncmFtKDB1KSwgbUJ1ZmZlcigwdSkKLXsKLX0KLQot
dm9pZCBUZXh0dXJlU2FtcGxpbmdCZW5jaG1hcms6OmluaXRpYWxpemVCZW5jaG1hcmsoKQotewot
ICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7Ci0KLSAgICBBU1NFUlRfTFQoMHUs
IHBhcmFtcy5pdGVyYXRpb25zKTsKLQotICAgIC8vIFZlcmlmeSAibnVtU2FtcGxlcnMiIGlzIHdp
dGhpbiBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyBsaW1pdAotICAgIEdMaW50IG1heFRleHR1cmVJ
bWFnZVVuaXRzOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMs
ICZtYXhUZXh0dXJlSW1hZ2VVbml0cyk7Ci0KLSAgICBpZiAocGFyYW1zLm51bVNhbXBsZXJzID4g
c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtYXhUZXh0dXJlSW1hZ2VVbml0cykpCi0gICAgewot
ICAgICAgICBGQUlMKCkgPDwgIlNhbXBsZXIgY291bnQgKCIgPDwgcGFyYW1zLm51bVNhbXBsZXJz
IDw8ICIpIgotICAgICAgICAgICAgICAgPDwgIiBleGNlZWRzIG1heGltdW0gdGV4dHVyZSBjb3Vu
dDogIiA8PCBtYXhUZXh0dXJlSW1hZ2VVbml0cyA8PCBzdGQ6OmVuZGw7Ci0gICAgfQotICAgIGlu
aXRTaGFkZXJzKCk7Ci0gICAgaW5pdFZlcnRleEJ1ZmZlcigpOwotICAgIGluaXRUZXh0dXJlcygp
OwotICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKLSAgICBnbFZpZXdw
b3J0KDAsIDAsIGdldFdpbmRvdygpLT5nZXRXaWR0aCgpLCBnZXRXaW5kb3coKS0+Z2V0SGVpZ2h0
KCkpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLXZvaWQgVGV4dHVyZVNhbXBs
aW5nQmVuY2htYXJrOjppbml0U2hhZGVycygpCi17Ci0gICAgY29uc3QgYXV0byAmcGFyYW1zID0g
R2V0UGFyYW0oKTsKLQotICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHZzdHJzdHI7Ci0gICAgdnN0cnN0
ciA8PCAiYXR0cmlidXRlIHZlYzIgYVBvc2l0aW9uO1xuIgotICAgICAgICAgICAgICAgInZhcnlp
bmcgdmVjMiB2VGV4dHVyZUNvb3JkaW5hdGVzO1xuIgotICAgICAgICAgICAgICAgInZvaWQgbWFp
bigpXG4iCi0gICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgIiAgICB2VGV4dHVy
ZUNvb3JkaW5hdGVzID0gKGFQb3NpdGlvbiArIHZlYzIoMS4wKSkgKiAwLjU7XG4iCi0gICAgICAg
ICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhUG9zaXRpb24sIDAsIDEuMCk7XG4iCi0g
ICAgICAgICAgICAgICAifSI7Ci0KLSAgICBzdGQ6OnN0cmluZ3N0cmVhbSBmc3Ryc3RyOwotICAg
IGZzdHJzdHIgPDwgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAgICAgICAg
InZhcnlpbmcgdmVjMiB2VGV4dHVyZUNvb3JkaW5hdGVzO1xuIjsKLSAgICBmb3IgKHVuc2lnbmVk
IGludCBjb3VudCA9IDA7IGNvdW50IDwgcGFyYW1zLm51bVNhbXBsZXJzOyBjb3VudCsrKQotICAg
IHsKLSAgICAgICAgZnN0cnN0ciA8PCAidW5pZm9ybSBzYW1wbGVyMkQgdVNhbXBsZXIiIDw8IGNv
dW50IDw8ICI7XG4iOwotICAgIH0KLSAgICBmc3Ryc3RyIDw8ICJ2b2lkIG1haW4oKVxuIgotICAg
ICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICIgICAgY29uc3QgZmxvYXQgaW52ZXJz
ZVRleHR1cmVTaXplID0gMS4wIC8gIgotICAgICAgICAgICAgPDwgcGFyYW1zLnRleHR1cmVTaXpl
IDw8ICIuMDtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHZl
YzQgY29sb3JPdXQgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEuMCk7XG4iOwotICAgIGZvciAodW5z
aWduZWQgaW50IGNvdW50ID0gMDsgY291bnQgPCBwYXJhbXMubnVtU2FtcGxlcnM7IGNvdW50Kysp
Ci0gICAgewotICAgICAgICBmc3Ryc3RyIDw8ICIgICAgZm9yIChpbnQgeCA9IDA7IHggPCAiIDw8
IHBhcmFtcy5rZXJuZWxTaXplIDw8ICI7ICsreClcbiIKLSAgICAgICAgICAgICAgICAgICAiICAg
IHtcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8ICIg
PDwgcGFyYW1zLmtlcm5lbFNpemUgPDwgIjsgKyt5KVxuIgotICAgICAgICAgICAgICAgICAgICIg
ICAgICAgIHtcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgICAgICAgICAgY29sb3JPdXQgKz0g
dGV4dHVyZTJEKHVTYW1wbGVyIiA8PCBjb3VudAotICAgICAgICAgICAgICAgICAgIDw8ICIsIHZU
ZXh0dXJlQ29vcmRpbmF0ZXMgKyB2ZWMyKHgsIHkpICogaW52ZXJzZVRleHR1cmVTaXplKSAqIDAu
MTtcbiIKLSAgICAgICAgICAgICAgICAgICAiICAgICAgICB9XG4iCi0gICAgICAgICAgICAgICAg
ICAgIiAgICB9XG4iOwotICAgIH0KLSAgICBmc3Ryc3RyIDw8ICIgICAgZ2xfRnJhZ0NvbG9yID0g
Y29sb3JPdXQ7XG4iCi0gICAgICAgICAgICAgICAifVxuIjsKLQotICAgIG1Qcm9ncmFtID0gQ29t
cGlsZVByb2dyYW0odnN0cnN0ci5zdHIoKSwgZnN0cnN0ci5zdHIoKSk7Ci0gICAgQVNTRVJUX05F
KDB1LCBtUHJvZ3JhbSk7Ci0KLSAgICAvLyBVc2UgdGhlIHByb2dyYW0gb2JqZWN0Ci0gICAgZ2xV
c2VQcm9ncmFtKG1Qcm9ncmFtKTsKLX0KLQotdm9pZCBUZXh0dXJlU2FtcGxpbmdCZW5jaG1hcms6
OmluaXRWZXJ0ZXhCdWZmZXIoKQotewotICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiB2ZXJ0ZXhQb3Np
dGlvbnMoMTIpOwotICAgIHsKLSAgICAgICAgLy8gQm90dG9tIGxlZnQgdHJpYW5nbGUKLSAgICAg
ICAgdmVydGV4UG9zaXRpb25zWzBdID0gLTEuMGY7Ci0gICAgICAgIHZlcnRleFBvc2l0aW9uc1sx
XSA9IC0xLjBmOwotICAgICAgICB2ZXJ0ZXhQb3NpdGlvbnNbMl0gPSAxLjBmOwotICAgICAgICB2
ZXJ0ZXhQb3NpdGlvbnNbM10gPSAtMS4wZjsKLSAgICAgICAgdmVydGV4UG9zaXRpb25zWzRdID0g
LTEuMGY7Ci0gICAgICAgIHZlcnRleFBvc2l0aW9uc1s1XSA9IDEuMGY7Ci0KLSAgICAgICAgLy8g
VG9wIHJpZ2h0IHRyaWFuZ2xlCi0gICAgICAgIHZlcnRleFBvc2l0aW9uc1s2XSAgPSAtMS4wZjsK
LSAgICAgICAgdmVydGV4UG9zaXRpb25zWzddICA9IDEuMGY7Ci0gICAgICAgIHZlcnRleFBvc2l0
aW9uc1s4XSAgPSAxLjBmOwotICAgICAgICB2ZXJ0ZXhQb3NpdGlvbnNbOV0gID0gLTEuMGY7Ci0g
ICAgICAgIHZlcnRleFBvc2l0aW9uc1sxMF0gPSAxLjBmOwotICAgICAgICB2ZXJ0ZXhQb3NpdGlv
bnNbMTFdID0gMS4wZjsKLSAgICB9Ci0KLSAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1CdWZmZXIpOwot
ICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXIpOwotICAgIGdsQnVmZmVy
RGF0YShHTF9BUlJBWV9CVUZGRVIsIHZlcnRleFBvc2l0aW9ucy5zaXplKCkgKiBzaXplb2YoZmxv
YXQpLCAmdmVydGV4UG9zaXRpb25zWzBdLAotICAgICAgICAgICAgICAgICBHTF9TVEFUSUNfRFJB
Vyk7Ci0KLSAgICBHTGludCBwb3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbiht
UHJvZ3JhbSwgImFQb3NpdGlvbiIpOwotICAgIEFTU0VSVF9ORSgtMSwgcG9zaXRpb25Mb2NhdGlv
bik7Ci0KLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgMiwgR0xf
RkxPQVQsIEdMX0ZBTFNFLCAwLCBudWxscHRyKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFy
cmF5KHBvc2l0aW9uTG9jYXRpb24pOwotfQotCi12b2lkIFRleHR1cmVTYW1wbGluZ0JlbmNobWFy
azo6aW5pdFRleHR1cmVzKCkKLXsKLSAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgp
OwotCi0gICAgdW5zaWduZWQgaW50IGRhdGFTaXplID0gcGFyYW1zLnRleHR1cmVTaXplICogcGFy
YW1zLnRleHR1cmVTaXplOwotICAgIHN0ZDo6dmVjdG9yPHVuc2lnbmVkIGludD4gcmFuZG9tVGV4
dHVyZURhdGE7Ci0gICAgcmFuZG9tVGV4dHVyZURhdGEucmVzaXplKGRhdGFTaXplKTsKLQotICAg
IHVuc2lnbmVkIGludCBwc2V1ZG9SYW5kb20gPSAxdTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IGRhdGFTaXplOyArK2kpCi0gICAgewotICAgICAgICBwc2V1ZG9SYW5kb20gICAg
ICAgICA9IHBzZXVkb1JhbmRvbSAqIDE2NjQ1MjV1ICsgMTAxMzkwNDIyM3U7Ci0gICAgICAgIHJh
bmRvbVRleHR1cmVEYXRhW2ldID0gcHNldWRvUmFuZG9tOwotICAgIH0KLQotICAgIG1UZXh0dXJl
cy5yZXNpemUocGFyYW1zLm51bVNhbXBsZXJzKTsKLSAgICBnbEdlblRleHR1cmVzKHBhcmFtcy5u
dW1TYW1wbGVycywgbVRleHR1cmVzLmRhdGEoKSk7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBwYXJhbXMubnVtU2FtcGxlcnM7ICsraSkKLSAgICB7Ci0gICAgICAgIGdsQWN0aXZl
VGV4dHVyZShHTF9URVhUVVJFMCArIGkpOwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlc1tpXSk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9f
RURHRSk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICAgICAgZ2xU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIHBhcmFtcy50ZXh0dXJlU2l6ZSwg
cGFyYW1zLnRleHR1cmVTaXplLCAwLCBHTF9SR0JBLAotICAgICAgICAgICAgICAgICAgICAgR0xf
VU5TSUdORURfQllURSwgcmFuZG9tVGV4dHVyZURhdGEuZGF0YSgpKTsKLSAgICB9Ci0KLSAgICBm
b3IgKHVuc2lnbmVkIGludCBjb3VudCA9IDA7IGNvdW50IDwgcGFyYW1zLm51bVNhbXBsZXJzOyBj
b3VudCsrKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gc2FtcGxlcnN0cnN0cjsK
LSAgICAgICAgc2FtcGxlcnN0cnN0ciA8PCAidVNhbXBsZXIiIDw8IGNvdW50OwotICAgICAgICBH
TGludCBzYW1wbGVyTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgc2Ft
cGxlcnN0cnN0ci5zdHIoKS5jX3N0cigpKTsKLSAgICAgICAgQVNTRVJUX05FKC0xLCBzYW1wbGVy
TG9jYXRpb24pOwotCi0gICAgICAgIGdsVW5pZm9ybTFpKHNhbXBsZXJMb2NhdGlvbiwgY291bnQp
OwotICAgIH0KLX0KLQotdm9pZCBUZXh0dXJlU2FtcGxpbmdCZW5jaG1hcms6OmRlc3Ryb3lCZW5j
aG1hcmsoKQotewotICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7Ci0KLSAgICBn
bERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbUJ1ZmZl
cik7Ci0gICAgaWYgKCFtVGV4dHVyZXMuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRl
VGV4dHVyZXMocGFyYW1zLm51bVNhbXBsZXJzLCBtVGV4dHVyZXMuZGF0YSgpKTsKLSAgICB9Ci19
Ci0KLXZvaWQgVGV4dHVyZVNhbXBsaW5nQmVuY2htYXJrOjpkcmF3QmVuY2htYXJrKCkKLXsKLSAg
ICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgY29uc3QgYXV0byAmcGFyYW1z
ID0gR2V0UGFyYW0oKTsKLQotICAgIGZvciAodW5zaWduZWQgaW50IGl0ID0gMDsgaXQgPCBwYXJh
bXMuaXRlcmF0aW9uczsgKytpdCkKLSAgICB7Ci0gICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklB
TkdMRVMsIDAsIDYpOwotICAgIH0KLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotfQotCi1U
ZXh0dXJlU2FtcGxpbmdQYXJhbXMgRDNEMTFQYXJhbXMoKQotewotICAgIFRleHR1cmVTYW1wbGlu
Z1BhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06
OkQzRDExKCk7Ci0gICAgcmV0dXJuIHBhcmFtczsKLX0KLQotVGV4dHVyZVNhbXBsaW5nUGFyYW1z
IEQzRDlQYXJhbXMoKQotewotICAgIFRleHR1cmVTYW1wbGluZ1BhcmFtcyBwYXJhbXM7Ci0gICAg
cGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06OkQzRDkoKTsKLSAgICByZXR1cm4g
cGFyYW1zOwotfQotCi1UZXh0dXJlU2FtcGxpbmdQYXJhbXMgT3BlbkdMUGFyYW1zKCkKLXsKLSAg
ICBUZXh0dXJlU2FtcGxpbmdQYXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJz
ID0gZWdsX3BsYXRmb3JtOjpPUEVOR0woKTsKLSAgICByZXR1cm4gcGFyYW1zOwotfQotCi19ICAv
LyBhbm9ueW1vdXMgbmFtZXNwYWNlCi0KLVRFU1RfUChUZXh0dXJlU2FtcGxpbmdCZW5jaG1hcmss
IFJ1bikKLXsKLSAgICBydW4oKTsKLX0KLQotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChUZXh0dXJl
U2FtcGxpbmdCZW5jaG1hcmssIEQzRDExUGFyYW1zKCksIEQzRDlQYXJhbXMoKSwgT3BlbkdMUGFy
YW1zKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Bl
cmZfdGVzdHMvVGV4dHVyZXNQZXJmLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9wZXJmX3Rlc3RzL1RleHR1cmVzUGVyZi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDU4ZTFhOWJhNmFlM2VhYWFjNzAyZWU5YjBjYjk3ODRmMzFmNGJkODMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVGV4dHVyZXNQZXJmLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDI5MyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0v
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIFRleHR1cmVzUGVyZjoKLS8vICAg
UGVyZm9ybWFuY2UgdGVzdCBmb3Igc2V0dGluZyB0ZXh0dXJlIHN0YXRlLgotLy8KLQotI2luY2x1
ZGUgIkFOR0xFUGVyZlRlc3QuaCIKLQotI2luY2x1ZGUgPGlvc3RyZWFtPgotI2luY2x1ZGUgPHJh
bmRvbT4KLSNpbmNsdWRlIDxzc3RyZWFtPgotCi0jaW5jbHVkZSAic2hhZGVyX3V0aWxzLmgiCi0K
LW5hbWVzcGFjZSBhbmdsZQotewotCi1zdHJ1Y3QgVGV4dHVyZXNQYXJhbXMgZmluYWwgOiBwdWJs
aWMgUmVuZGVyVGVzdFBhcmFtcwotewotICAgIFRleHR1cmVzUGFyYW1zKCkKLSAgICB7Ci0gICAg
ICAgIC8vIENvbW1vbiBkZWZhdWx0IHBhcmFtcwotICAgICAgICBtYWpvclZlcnNpb24gPSAyOwot
ICAgICAgICBtaW5vclZlcnNpb24gPSAwOwotICAgICAgICB3aW5kb3dXaWR0aCAgPSA3MjA7Ci0g
ICAgICAgIHdpbmRvd0hlaWdodCA9IDcyMDsKLSAgICAgICAgaXRlcmF0aW9ucyAgID0gMjU2Owot
Ci0gICAgICAgIG51bVRleHR1cmVzICAgICAgICAgICAgICAgICA9IDg7Ci0gICAgICAgIHRleHR1
cmVSZWJpbmRGcmVxdWVuY3kgICAgICA9IDU7Ci0gICAgICAgIHRleHR1cmVTdGF0ZVVwZGF0ZUZy
ZXF1ZW5jeSA9IDM7Ci0gICAgICAgIHRleHR1cmVNaXBDb3VudCAgICAgICAgICAgICA9IDg7Ci0g
ICAgfQotCi0gICAgc3RkOjpzdHJpbmcgc3VmZml4KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc2l6
ZV90IG51bVRleHR1cmVzOwotICAgIHNpemVfdCB0ZXh0dXJlUmViaW5kRnJlcXVlbmN5OwotICAg
IHNpemVfdCB0ZXh0dXJlU3RhdGVVcGRhdGVGcmVxdWVuY3k7Ci0gICAgc2l6ZV90IHRleHR1cmVN
aXBDb3VudDsKLQotICAgIC8vIHN0YXRpYyBwYXJhbWV0ZXJzCi0gICAgc2l6ZV90IGl0ZXJhdGlv
bnM7Ci19OwotCi1zdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgY29u
c3QgVGV4dHVyZXNQYXJhbXMgJnBhcmFtcykKLXsKLSAgICBvcyA8PCBwYXJhbXMuc3VmZml4KCku
c3Vic3RyKDEpOwotICAgIHJldHVybiBvczsKLX0KLQotc3RkOjpzdHJpbmcgVGV4dHVyZXNQYXJh
bXM6OnN1ZmZpeCgpIGNvbnN0Ci17Ci0gICAgc3RkOjpzdHJpbmdzdHJlYW0gc3Ryc3RyOwotCi0g
ICAgc3Ryc3RyIDw8IFJlbmRlclRlc3RQYXJhbXM6OnN1ZmZpeCgpOwotICAgIHN0cnN0ciA8PCAi
XyIgPDwgbnVtVGV4dHVyZXMgPDwgIl90ZXh0dXJlcyI7Ci0gICAgc3Ryc3RyIDw8ICJfIiA8PCB0
ZXh0dXJlUmViaW5kRnJlcXVlbmN5IDw8ICJfcmViaW5kIjsKLSAgICBzdHJzdHIgPDwgIl8iIDw8
IHRleHR1cmVTdGF0ZVVwZGF0ZUZyZXF1ZW5jeSA8PCAiX3N0YXRlIjsKLSAgICBzdHJzdHIgPDwg
Il8iIDw8IHRleHR1cmVNaXBDb3VudCA8PCAiX21pcHMiOwotCi0gICAgcmV0dXJuIHN0cnN0ci5z
dHIoKTsKLX0KLQotY2xhc3MgVGV4dHVyZXNCZW5jaG1hcmsgOiBwdWJsaWMgQU5HTEVSZW5kZXJU
ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFy
YW1JbnRlcmZhY2U8VGV4dHVyZXNQYXJhbXM+Ci17Ci0gIHB1YmxpYzoKLSAgICBUZXh0dXJlc0Jl
bmNobWFyaygpOwotCi0gICAgdm9pZCBpbml0aWFsaXplQmVuY2htYXJrKCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkZXN0cm95QmVuY2htYXJrKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3QmVuY2ht
YXJrKCkgb3ZlcnJpZGU7Ci0KLSAgcHJpdmF0ZToKLSAgICB2b2lkIGluaXRTaGFkZXJzKCk7Ci0g
ICAgdm9pZCBpbml0VGV4dHVyZXMoKTsKLQotICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbVRleHR1
cmVzOwotCi0gICAgR0x1aW50IG1Qcm9ncmFtOwotICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbVVu
aWZvcm1Mb2NhdGlvbnM7Ci19OwotCi1UZXh0dXJlc0JlbmNobWFyazo6VGV4dHVyZXNCZW5jaG1h
cmsoKSA6IEFOR0xFUmVuZGVyVGVzdCgiVGV4dHVyZXMiLCBHZXRQYXJhbSgpKSwgbVByb2dyYW0o
MHUpCi17Ci19Ci0KLXZvaWQgVGV4dHVyZXNCZW5jaG1hcms6OmluaXRpYWxpemVCZW5jaG1hcmso
KQotewotICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7Ci0KLSAgICBBU1NFUlRf
R1QocGFyYW1zLml0ZXJhdGlvbnMsIDB1KTsKLQotICAgIC8vIFZlcmlmeSB0aGUgdW5pZm9ybSBj
b3VudHMgYXJlIHdpdGhpbiB0aGUgbGltaXRzCi0gICAgR0xpbnQgbWF4VGV4dHVyZVVuaXRzOwot
ICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZtYXhUZXh0dXJl
VW5pdHMpOwotICAgIGlmIChwYXJhbXMubnVtVGV4dHVyZXMgPiBzdGF0aWNfY2FzdDxzaXplX3Q+
KG1heFRleHR1cmVVbml0cykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlRleHR1cmUgY291
bnQgKCIgPDwgcGFyYW1zLm51bVRleHR1cmVzIDw8ICIpIgotICAgICAgICAgICAgICAgPDwgIiBl
eGNlZWRzIG1heGltdW0gdGV4dHVyZSB1bml0IGNvdW50OiAiIDw8IG1heFRleHR1cmVVbml0cyA8
PCBzdGQ6OmVuZGw7Ci0gICAgfQotCi0gICAgaW5pdFNoYWRlcnMoKTsKLSAgICBpbml0VGV4dHVy
ZXMoKTsKLSAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7Ci0gICAgZ2xW
aWV3cG9ydCgwLCAwLCBnZXRXaW5kb3coKS0+Z2V0V2lkdGgoKSwgZ2V0V2luZG93KCktPmdldEhl
aWdodCgpKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotfQotCi1zdGQ6OnN0cmluZyBH
ZXRVbmlmb3JtTG9jYXRpb25OYW1lKHNpemVfdCBpZHgsIGJvb2wgdmVydGV4U2hhZGVyKQotewot
ICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cnN0cjsKLSAgICBzdHJzdHIgPDwgKHZlcnRleFNoYWRl
ciA/ICJ2cyIgOiAiZnMiKSA8PCAiX3VfIiA8PCBpZHg7Ci0gICAgcmV0dXJuIHN0cnN0ci5zdHIo
KTsKLX0KLQotdm9pZCBUZXh0dXJlc0JlbmNobWFyazo6aW5pdFNoYWRlcnMoKQotewotICAgIGNv
bnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7Ci0KLSAgICBzdGQ6OnN0cmluZyB2cyA9Ci0g
ICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIGdsX1Bv
c2l0aW9uID0gdmVjNCgwLCAwLCAwLCAwKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBzdGQ6
OnN0cmluZ3N0cmVhbSBmc3Ryc3RyOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1z
Lm51bVRleHR1cmVzOyBpKyspCi0gICAgewotICAgICAgICBmc3Ryc3RyIDw8ICJ1bmlmb3JtIHNh
bXBsZXIyRCB0ZXgiIDw8IGkgPDwgIjsiOwotICAgIH0KLSAgICBmc3Ryc3RyIDw8ICJ2b2lkIG1h
aW4oKVxuIgotICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICIgICAgZ2xfRnJh
Z0NvbG9yID0gdmVjNCgwLCAwLCAwLCAwKSI7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBw
YXJhbXMubnVtVGV4dHVyZXM7IGkrKykKLSAgICB7Ci0gICAgICAgIGZzdHJzdHIgPDwgIisgdGV4
dHVyZTJEKHRleCIgPDwgaSA8PCAiLCB2ZWMyKDAsIDApKSI7Ci0gICAgfQotICAgIGZzdHJzdHIg
PDwgIjtcbiIKLSAgICAgICAgICAgICAgICJ9XG4iOwotCi0gICAgbVByb2dyYW0gPSBDb21waWxl
UHJvZ3JhbSh2cywgZnN0cnN0ci5zdHIoKSk7Ci0gICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7
Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtcy5udW1UZXh0dXJlczsgKytpKQot
ICAgIHsKLSAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gdW5pZm9ybU5hbWU7Ci0gICAgICAgIHVu
aWZvcm1OYW1lIDw8ICJ0ZXgiIDw8IGk7Ci0KLSAgICAgICAgR0xpbnQgbG9jYXRpb24gPSBnbEdl
dFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgdW5pZm9ybU5hbWUuc3RyKCkuY19zdHIoKSk7Ci0g
ICAgICAgIEFTU0VSVF9ORSgtMSwgbG9jYXRpb24pOwotICAgICAgICBtVW5pZm9ybUxvY2F0aW9u
cy5wdXNoX2JhY2sobG9jYXRpb24pOwotICAgIH0KLQotICAgIC8vIFVzZSB0aGUgcHJvZ3JhbSBv
YmplY3QKLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotfQotCi12b2lkIFRleHR1cmVzQmVu
Y2htYXJrOjppbml0VGV4dHVyZXMoKQotewotICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBh
cmFtKCk7Ci0KLSAgICBzaXplX3QgdGV4dHVyZVNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KDEp
IDw8IHBhcmFtcy50ZXh0dXJlTWlwQ291bnQ7Ci0gICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gdGV4
dHVyZURhdGEodGV4dHVyZVNpemUgKiB0ZXh0dXJlU2l6ZSAqIDQpOwotICAgIGZvciAoYXV0byAm
Ynl0ZSA6IHRleHR1cmVEYXRhKQotICAgIHsKLSAgICAgICAgYnl0ZSA9IHJhbmQoKSAlIDI1NXU7
Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3QgdGV4SW5kZXggPSAwOyB0ZXhJbmRleCA8IHBhcmFt
cy5udW1UZXh0dXJlczsgdGV4SW5kZXgrKykKLSAgICB7Ci0gICAgICAgIEdMdWludCB0ZXggPSAw
OwotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOwotCi0gICAgICAgIGdsQWN0aXZlVGV4
dHVyZShzdGF0aWNfY2FzdDxHTGVudW0+KEdMX1RFWFRVUkUwICsgdGV4SW5kZXgpKTsKLSAgICAg
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXgpOwotICAgICAgICBmb3IgKHNpemVf
dCBtaXAgPSAwOyBtaXAgPCBwYXJhbXMudGV4dHVyZU1pcENvdW50OyBtaXArKykKLSAgICAgICAg
ewotICAgICAgICAgICAgR0xzaXplaSBsZXZlbFNpemUgPSBzdGF0aWNfY2FzdDxHTHNpemVpPih0
ZXh0dXJlU2l6ZSA+PiBtaXApOwotICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIHN0YXRpY19jYXN0PEdMaW50PihtaXApLCBHTF9SR0JBLCBsZXZlbFNpemUsIGxldmVsU2l6
ZSwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCB0ZXh0dXJlRGF0YS5kYXRhKCkpOwotICAgICAgICB9Ci0gICAgICAgIG1UZXh0dXJlcy5wdXNo
X2JhY2sodGV4KTsKLQotICAgICAgICBnbFVuaWZvcm0xaShtVW5pZm9ybUxvY2F0aW9uc1t0ZXhJ
bmRleF0sIHN0YXRpY19jYXN0PEdMaW50Pih0ZXhJbmRleCkpOwotICAgIH0KLX0KLQotdm9pZCBU
ZXh0dXJlc0JlbmNobWFyazo6ZGVzdHJveUJlbmNobWFyaygpCi17Ci0gICAgZ2xEZWxldGVQcm9n
cmFtKG1Qcm9ncmFtKTsKLX0KLQotdm9pZCBUZXh0dXJlc0JlbmNobWFyazo6ZHJhd0JlbmNobWFy
aygpCi17Ci0gICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKLQotICAgIGZvciAo
c2l6ZV90IGl0ID0gMDsgaXQgPCBwYXJhbXMuaXRlcmF0aW9uczsgKytpdCkKLSAgICB7Ci0gICAg
ICAgIGlmIChpdCAlIHBhcmFtcy50ZXh0dXJlUmViaW5kRnJlcXVlbmN5ID09IDApCi0gICAgICAg
IHsKLSAgICAgICAgICAgIC8vIFN3YXAgdHdvIHRleHR1cmVzCi0gICAgICAgICAgICBzaXplX3Qg
c3dhcFRleHR1cmUgPSAoaXQgLyBwYXJhbXMudGV4dHVyZVJlYmluZEZyZXF1ZW5jeSkgJSAocGFy
YW1zLm51bVRleHR1cmVzIC0gMSk7Ci0KLSAgICAgICAgICAgIGdsQWN0aXZlVGV4dHVyZShzdGF0
aWNfY2FzdDxHTGVudW0+KEdMX1RFWFRVUkUwICsgc3dhcFRleHR1cmUpKTsKLSAgICAgICAgICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzW3N3YXBUZXh0dXJlXSk7Ci0g
ICAgICAgICAgICBnbEFjdGl2ZVRleHR1cmUoc3RhdGljX2Nhc3Q8R0xlbnVtPihHTF9URVhUVVJF
MCArIHN3YXBUZXh0dXJlICsgMSkpOwotICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCBtVGV4dHVyZXNbc3dhcFRleHR1cmUgKyAxXSk7Ci0gICAgICAgICAgICBzdGQ6OnN3
YXAobVRleHR1cmVzW3N3YXBUZXh0dXJlXSwgbVRleHR1cmVzW3N3YXBUZXh0dXJlICsgMV0pOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGl0ICUgcGFyYW1zLnRleHR1cmVTdGF0ZVVwZGF0ZUZy
ZXF1ZW5jeSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBVcGRhdGUgYSB0ZXh0dXJl
J3Mgc3RhdGUKLSAgICAgICAgICAgIHNpemVfdCBzdGF0ZVVwZGF0ZUNvdW50ID0gaXQgLyBwYXJh
bXMudGV4dHVyZVN0YXRlVXBkYXRlRnJlcXVlbmN5OwotCi0gICAgICAgICAgICBjb25zdCBzaXpl
X3QgbnVtVXBkYXRlVGV4dHVyZXMgPSA0OwotICAgICAgICAgICAgQVNTRVJUX0xFKG51bVVwZGF0
ZVRleHR1cmVzLCBwYXJhbXMubnVtVGV4dHVyZXMpOwotCi0gICAgICAgICAgICBzaXplX3QgZmly
c3RUZXh0dXJlID0gc3RhdGVVcGRhdGVDb3VudCAlIChwYXJhbXMubnVtVGV4dHVyZXMgLSBudW1V
cGRhdGVUZXh0dXJlcyk7Ci0KLSAgICAgICAgICAgIGZvciAoc2l6ZV90IHVwZGF0ZVRleHR1cmVJ
ZHggPSAwOyB1cGRhdGVUZXh0dXJlSWR4IDwgbnVtVXBkYXRlVGV4dHVyZXM7Ci0gICAgICAgICAg
ICAgICAgIHVwZGF0ZVRleHR1cmVJZHgrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBzaXplX3QgdXBkYXRlVGV4dHVyZSA9IGZpcnN0VGV4dHVyZSArIHVwZGF0ZVRleHR1cmVJZHg7
Ci0gICAgICAgICAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKHN0YXRpY19jYXN0PEdMZW51bT4oR0xf
VEVYVFVSRTAgKyB1cGRhdGVUZXh0dXJlKSk7Ci0KLSAgICAgICAgICAgICAgICBjb25zdCBHTGVu
dW0gbWluRmlsdGVyc1tdID0gewotICAgICAgICAgICAgICAgICAgICBHTF9ORUFSRVNULAotICAg
ICAgICAgICAgICAgICAgICBHTF9MSU5FQVIsCi0gICAgICAgICAgICAgICAgICAgIEdMX05FQVJF
U1RfTUlQTUFQX05FQVJFU1QsCi0gICAgICAgICAgICAgICAgICAgIEdMX0xJTkVBUl9NSVBNQVBf
TkVBUkVTVCwKLSAgICAgICAgICAgICAgICAgICAgR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSLAot
ICAgICAgICAgICAgICAgICAgICBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUiwKLSAgICAgICAgICAg
ICAgICB9OwotICAgICAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01JTl9GSUxURVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1p
bkZpbHRlcnNbc3RhdGVVcGRhdGVDb3VudCAlIEFycmF5U2l6ZShtaW5GaWx0ZXJzKV0pOwotCi0g
ICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtIG1hZ0ZpbHRlcnNbXSA9IHsKLSAgICAgICAgICAg
ICAgICAgICAgR0xfTkVBUkVTVCwgR0xfTElORUFSLAotICAgICAgICAgICAgICAgIH07Ci0gICAg
ICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFH
X0ZJTFRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFnRmlsdGVyc1tzdGF0
ZVVwZGF0ZUNvdW50ICUgQXJyYXlTaXplKG1hZ0ZpbHRlcnMpXSk7Ci0KLSAgICAgICAgICAgICAg
ICBjb25zdCBHTGVudW0gd3JhcFBhcmFtZXRlcnNbXSA9IHsKLSAgICAgICAgICAgICAgICAgICAg
R0xfQ0xBTVBfVE9fRURHRSwgR0xfUkVQRUFULCBHTF9NSVJST1JFRF9SRVBFQVQsCi0gICAgICAg
ICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9XUkFQX1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdy
YXBQYXJhbWV0ZXJzW3N0YXRlVXBkYXRlQ291bnQgJSBBcnJheVNpemUod3JhcFBhcmFtZXRlcnMp
XSk7Ci0gICAgICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfV1JBUF9ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwUGFyYW1l
dGVyc1tzdGF0ZVVwZGF0ZUNvdW50ICUgQXJyYXlTaXplKHdyYXBQYXJhbWV0ZXJzKV0pOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xF
UywgMCwgMyk7Ci0gICAgfQotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLVRleHR1
cmVzUGFyYW1zIEQzRDExUGFyYW1zKCkKLXsKLSAgICBUZXh0dXJlc1BhcmFtcyBwYXJhbXM7Ci0g
ICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06OkQzRDExX05VTEwoKTsKLSAg
ICByZXR1cm4gcGFyYW1zOwotfQotCi1UZXh0dXJlc1BhcmFtcyBEM0Q5UGFyYW1zKCkKLXsKLSAg
ICBUZXh0dXJlc1BhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xf
cGxhdGZvcm06OkQzRDlfTlVMTCgpOwotICAgIHJldHVybiBwYXJhbXM7Ci19Ci0KLVRleHR1cmVz
UGFyYW1zIE9wZW5HTFBhcmFtcygpCi17Ci0gICAgVGV4dHVyZXNQYXJhbXMgcGFyYW1zOwotICAg
IHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpPUEVOR0xfTlVMTCgpOwotICAg
IHJldHVybiBwYXJhbXM7Ci19Ci0KLVRFU1RfUChUZXh0dXJlc0JlbmNobWFyaywgUnVuKQotewot
ICAgIHJ1bigpOwotfQotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKFRleHR1cmVzQmVuY2htYXJr
LCBEM0QxMVBhcmFtcygpLCBEM0Q5UGFyYW1zKCksIE9wZW5HTFBhcmFtcygpKTsKLQotfSAgLy8g
bmFtZXNwYWNlIGFuZ2xlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvcGVyZl90ZXN0cy9Vbmlmb3Jtc1BlcmYuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVW5pZm9ybXNQZXJmLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMjc2YjFhYjliZjBhYjQyZmQ3YTU2MmE2ZmVjMWJkNzJmOTdmNjI1Zi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9Vbmlmb3Jtc1BlcmYuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMjI4ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gVW5pZm9ybXNCZW5j
aG1hcms6Ci0vLyAgIFBlcmZvcm1hbmNlIHRlc3QgZm9yIHNldHRpbmcgdW5pZm9ybSBkYXRhLgot
Ly8KLQotI2luY2x1ZGUgIkFOR0xFUGVyZlRlc3QuaCIKLQotI2luY2x1ZGUgPGlvc3RyZWFtPgot
I2luY2x1ZGUgPHJhbmRvbT4KLSNpbmNsdWRlIDxzc3RyZWFtPgotCi0jaW5jbHVkZSAic2hhZGVy
X3V0aWxzLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17Ci0KLXN0
cnVjdCBVbmlmb3Jtc1BhcmFtcyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUZXN0UGFyYW1zCi17Ci0g
ICAgVW5pZm9ybXNQYXJhbXMoKQotICAgIHsKLSAgICAgICAgLy8gQ29tbW9uIGRlZmF1bHQgcGFy
YW1zCi0gICAgICAgIG1ham9yVmVyc2lvbiA9IDI7Ci0gICAgICAgIG1pbm9yVmVyc2lvbiA9IDA7
Ci0gICAgICAgIHdpbmRvd1dpZHRoICA9IDcyMDsKLSAgICAgICAgd2luZG93SGVpZ2h0ID0gNzIw
OwotICAgICAgICBpdGVyYXRpb25zICAgPSA0OwotCi0gICAgICAgIG51bVZlcnRleFVuaWZvcm1z
ICAgPSAyMDA7Ci0gICAgICAgIG51bUZyYWdtZW50VW5pZm9ybXMgPSAyMDA7Ci0gICAgfQotCi0g
ICAgc3RkOjpzdHJpbmcgc3VmZml4KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc2l6ZV90IG51bVZl
cnRleFVuaWZvcm1zOwotICAgIHNpemVfdCBudW1GcmFnbWVudFVuaWZvcm1zOwotCi0gICAgLy8g
c3RhdGljIHBhcmFtZXRlcnMKLSAgICBzaXplX3QgaXRlcmF0aW9uczsKLX07Ci0KLXN0ZDo6b3N0
cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBVbmlmb3Jtc1BhcmFtcyAm
cGFyYW1zKQotewotICAgIG9zIDw8IHBhcmFtcy5zdWZmaXgoKS5zdWJzdHIoMSk7Ci0gICAgcmV0
dXJuIG9zOwotfQotCi1zdGQ6OnN0cmluZyBVbmlmb3Jtc1BhcmFtczo6c3VmZml4KCkgY29uc3QK
LXsKLSAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJzdHI7Ci0KLSAgICBzdHJzdHIgPDwgUmVuZGVy
VGVzdFBhcmFtczo6c3VmZml4KCk7Ci0gICAgc3Ryc3RyIDw8ICJfIiA8PCBudW1WZXJ0ZXhVbmlm
b3JtcyA8PCAiX3ZlcnRleF91bmlmb3JtcyI7Ci0gICAgc3Ryc3RyIDw8ICJfIiA8PCBudW1GcmFn
bWVudFVuaWZvcm1zIDw8ICJfZnJhZ21lbnRfdW5pZm9ybXMiOwotCi0gICAgcmV0dXJuIHN0cnN0
ci5zdHIoKTsKLX0KLQotY2xhc3MgVW5pZm9ybXNCZW5jaG1hcmsgOiBwdWJsaWMgQU5HTEVSZW5k
ZXJUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRo
UGFyYW1JbnRlcmZhY2U8VW5pZm9ybXNQYXJhbXM+Ci17Ci0gIHB1YmxpYzoKLSAgICBVbmlmb3Jt
c0JlbmNobWFyaygpOwotCi0gICAgdm9pZCBpbml0aWFsaXplQmVuY2htYXJrKCkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkZXN0cm95QmVuY2htYXJrKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3QmVu
Y2htYXJrKCkgb3ZlcnJpZGU7Ci0KLSAgcHJpdmF0ZToKLSAgICB2b2lkIGluaXRTaGFkZXJzKCk7
Ci0gICAgdm9pZCBpbml0VmVydGV4QnVmZmVyKCk7Ci0gICAgdm9pZCBpbml0VGV4dHVyZXMoKTsK
LQotICAgIEdMdWludCBtUHJvZ3JhbTsKLSAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1Vbmlmb3Jt
TG9jYXRpb25zOwotfTsKLQotVW5pZm9ybXNCZW5jaG1hcms6OlVuaWZvcm1zQmVuY2htYXJrKCkg
OiBBTkdMRVJlbmRlclRlc3QoIlVuaWZvcm1zIiwgR2V0UGFyYW0oKSksIG1Qcm9ncmFtKDB1KQot
ewotfQotCi12b2lkIFVuaWZvcm1zQmVuY2htYXJrOjppbml0aWFsaXplQmVuY2htYXJrKCkKLXsK
LSAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOwotCi0gICAgQVNTRVJUX0dUKHBh
cmFtcy5pdGVyYXRpb25zLCAwdSk7Ci0KLSAgICAvLyBWZXJpZnkgdGhlIHVuaWZvcm0gY291bnRz
IGFyZSB3aXRoaW4gdGhlIGxpbWl0cwotICAgIEdMaW50IG1heFZlcnRleFVuaWZvcm1zLCBtYXhG
cmFnbWVudFVuaWZvcm1zOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZFUlRFWF9VTklGT1JN
X1ZFQ1RPUlMsICZtYXhWZXJ0ZXhVbmlmb3Jtcyk7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhf
RlJBR01FTlRfVU5JRk9STV9WRUNUT1JTLCAmbWF4RnJhZ21lbnRVbmlmb3Jtcyk7Ci0KLSAgICBp
ZiAocGFyYW1zLm51bVZlcnRleFVuaWZvcm1zID4gc3RhdGljX2Nhc3Q8c2l6ZV90PihtYXhWZXJ0
ZXhVbmlmb3JtcykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlZlcnRleCB1bmlmb3JtIGNv
dW50ICgiIDw8IHBhcmFtcy5udW1WZXJ0ZXhVbmlmb3JtcyA8PCAiKSIKLSAgICAgICAgICAgICAg
IDw8ICIgZXhjZWVkcyBtYXhpbXVtIHZlcnRleCB1bmlmb3JtIGNvdW50OiAiIDw8IG1heFZlcnRl
eFVuaWZvcm1zIDw8IHN0ZDo6ZW5kbDsKLSAgICB9Ci0gICAgaWYgKHBhcmFtcy5udW1GcmFnbWVu
dFVuaWZvcm1zID4gc3RhdGljX2Nhc3Q8c2l6ZV90PihtYXhGcmFnbWVudFVuaWZvcm1zKSkKLSAg
ICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiRnJhZ21lbnQgdW5pZm9ybSBjb3VudCAoIiA8PCBwYXJh
bXMubnVtRnJhZ21lbnRVbmlmb3JtcyA8PCAiKSIKLSAgICAgICAgICAgICAgIDw8ICIgZXhjZWVk
cyBtYXhpbXVtIGZyYWdtZW50IHVuaWZvcm0gY291bnQ6ICIgPDwgbWF4RnJhZ21lbnRVbmlmb3Jt
cyA8PCBzdGQ6OmVuZGw7Ci0gICAgfQotCi0gICAgaW5pdFNoYWRlcnMoKTsKLSAgICBnbENsZWFy
Q29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7Ci0gICAgZ2xWaWV3cG9ydCgwLCAwLCBnZXRX
aW5kb3coKS0+Z2V0V2lkdGgoKSwgZ2V0V2luZG93KCktPmdldEhlaWdodCgpKTsKLQotICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotfQotCi1zdGQ6OnN0cmluZyBHZXRVbmlmb3JtTG9jYXRpb25O
YW1lKHNpemVfdCBpZHgsIGJvb2wgdmVydGV4U2hhZGVyKQotewotICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIHN0cnN0cjsKLSAgICBzdHJzdHIgPDwgKHZlcnRleFNoYWRlciA/ICJ2cyIgOiAiZnMiKSA8
PCAiX3VfIiA8PCBpZHg7Ci0gICAgcmV0dXJuIHN0cnN0ci5zdHIoKTsKLX0KLQotdm9pZCBVbmlm
b3Jtc0JlbmNobWFyazo6aW5pdFNoYWRlcnMoKQotewotICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9
IEdldFBhcmFtKCk7Ci0KLSAgICBzdGQ6OnN0cmluZ3N0cmVhbSB2c3Ryc3RyOwotICAgIHZzdHJz
dHIgPDwgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIjsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHBhcmFtcy5udW1WZXJ0ZXhVbmlmb3JtczsgaSsrKQotICAgIHsKLSAgICAgICAgdnN0
cnN0ciA8PCAidW5pZm9ybSB2ZWM0ICIgPDwgR2V0VW5pZm9ybUxvY2F0aW9uTmFtZShpLCB0cnVl
KSA8PCAiO1xuIjsKLSAgICB9Ci0gICAgdnN0cnN0ciA8PCAidm9pZCBtYWluKClcbiIKLSAgICAg
ICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgw
LCAwLCAwLCAwKTtcbiI7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbXMubnVtVmVy
dGV4VW5pZm9ybXM7IGkrKykKLSAgICB7Ci0gICAgICAgIHZzdHJzdHIgPDwgIiAgICBnbF9Qb3Np
dGlvbiA9IGdsX1Bvc2l0aW9uICsgIiA8PCBHZXRVbmlmb3JtTG9jYXRpb25OYW1lKGksIHRydWUp
IDw8ICI7XG4iOwotICAgIH0KLSAgICB2c3Ryc3RyIDw8ICJ9IjsKLQotICAgIHN0ZDo6c3RyaW5n
c3RyZWFtIGZzdHJzdHI7Ci0gICAgZnN0cnN0ciA8PCAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1zLm51bUZyYWdtZW50VW5pZm9y
bXM7IGkrKykKLSAgICB7Ci0gICAgICAgIGZzdHJzdHIgPDwgInVuaWZvcm0gdmVjNCAiIDw8IEdl
dFVuaWZvcm1Mb2NhdGlvbk5hbWUoaSwgZmFsc2UpIDw8ICI7XG4iOwotICAgIH0KLSAgICBmc3Ry
c3RyIDw8ICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAg
ICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLCAwLCAwLCAwKTtcbiI7Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwYXJhbXMubnVtRnJhZ21lbnRVbmlmb3JtczsgaSsrKQotICAgIHsK
LSAgICAgICAgZnN0cnN0ciA8PCAiICAgIGdsX0ZyYWdDb2xvciA9IGdsX0ZyYWdDb2xvciArICIg
PDwgR2V0VW5pZm9ybUxvY2F0aW9uTmFtZShpLCBmYWxzZSkKLSAgICAgICAgICAgICAgICA8PCAi
O1xuIjsKLSAgICB9Ci0gICAgZnN0cnN0ciA8PCAifSI7Ci0KLSAgICBtUHJvZ3JhbSA9IENvbXBp
bGVQcm9ncmFtKHZzdHJzdHIuc3RyKCksIGZzdHJzdHIuc3RyKCkpOwotICAgIEFTU0VSVF9ORSgw
dSwgbVByb2dyYW0pOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbXMubnVtVmVy
dGV4VW5pZm9ybXM7ICsraSkKLSAgICB7Ci0gICAgICAgIEdMaW50IGxvY2F0aW9uID0gZ2xHZXRV
bmlmb3JtTG9jYXRpb24obVByb2dyYW0sIEdldFVuaWZvcm1Mb2NhdGlvbk5hbWUoaSwgdHJ1ZSku
Y19zdHIoKSk7Ci0gICAgICAgIEFTU0VSVF9ORSgtMSwgbG9jYXRpb24pOwotICAgICAgICBtVW5p
Zm9ybUxvY2F0aW9ucy5wdXNoX2JhY2sobG9jYXRpb24pOwotICAgIH0KLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHBhcmFtcy5udW1GcmFnbWVudFVuaWZvcm1zOyArK2kpCi0gICAgewotICAg
ICAgICBHTGludCBsb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCBHZXRV
bmlmb3JtTG9jYXRpb25OYW1lKGksIGZhbHNlKS5jX3N0cigpKTsKLSAgICAgICAgQVNTRVJUX05F
KC0xLCBsb2NhdGlvbik7Ci0gICAgICAgIG1Vbmlmb3JtTG9jYXRpb25zLnB1c2hfYmFjayhsb2Nh
dGlvbik7Ci0gICAgfQotCi0gICAgLy8gVXNlIHRoZSBwcm9ncmFtIG9iamVjdAotICAgIGdsVXNl
UHJvZ3JhbShtUHJvZ3JhbSk7Ci19Ci0KLXZvaWQgVW5pZm9ybXNCZW5jaG1hcms6OmRlc3Ryb3lC
ZW5jaG1hcmsoKQotewotICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci19Ci0KLXZvaWQg
VW5pZm9ybXNCZW5jaG1hcms6OmRyYXdCZW5jaG1hcmsoKQotewotICAgIGNvbnN0IGF1dG8gJnBh
cmFtcyA9IEdldFBhcmFtKCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpdCA9IDA7IGl0IDwgcGFyYW1z
Lml0ZXJhdGlvbnM7ICsraXQpCi0gICAgewotICAgICAgICBmb3IgKHNpemVfdCB1bmlmb3JtID0g
MDsgdW5pZm9ybSA8IG1Vbmlmb3JtTG9jYXRpb25zLnNpemUoKTsgKyt1bmlmb3JtKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBmbG9hdCB2YWx1ZSA9IHN0YXRpY19jYXN0PGZsb2F0Pih1bmlmb3Jt
KTsKLSAgICAgICAgICAgIGdsVW5pZm9ybTRmKG1Vbmlmb3JtTG9jYXRpb25zW3VuaWZvcm1dLCB2
YWx1ZSwgdmFsdWUsIHZhbHVlLCB2YWx1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBnbERyYXdB
cnJheXMoR0xfVFJJQU5HTEVTLCAwLCAzKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKLX0KLQotVW5pZm9ybXNQYXJhbXMgRDNEMTFQYXJhbXMoKQotewotICAgIFVuaWZvcm1z
UGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6
RDNEMTEoKTsKLSAgICByZXR1cm4gcGFyYW1zOwotfQotCi1Vbmlmb3Jtc1BhcmFtcyBEM0Q5UGFy
YW1zKCkKLXsKLSAgICBVbmlmb3Jtc1BhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFt
ZXRlcnMgPSBlZ2xfcGxhdGZvcm06OkQzRDkoKTsKLSAgICByZXR1cm4gcGFyYW1zOwotfQotCi1V
bmlmb3Jtc1BhcmFtcyBPcGVuR0xQYXJhbXMoKQotewotICAgIFVuaWZvcm1zUGFyYW1zIHBhcmFt
czsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6T1BFTkdMKCk7Ci0g
ICAgcmV0dXJuIHBhcmFtczsKLX0KLQotfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi1URVNU
X1AoVW5pZm9ybXNCZW5jaG1hcmssIFJ1bikKLXsKLSAgICBydW4oKTsKLX0KLQotQU5HTEVfSU5T
VEFOVElBVEVfVEVTVChVbmlmb3Jtc0JlbmNobWFyaywgRDNEMTFQYXJhbXMoKSwgRDNEOVBhcmFt
cygpLCBPcGVuR0xQYXJhbXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvcGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL2FuZ2xlLW1vZHMucGF0Y2gg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy90aGlyZF9wYXJ0
eS9wZXJmL2FuZ2xlLW1vZHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQw
YjY0MDI4OTU5MTI0NWUxMmJjMzUxMDgwMTQ3NjZlYTA1ZWRhOTIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRfcGFydHkvcGVyZi9hbmdsZS1tb2RzLnBhdGNoCisrKyAv
ZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotZGlmZiAtLWdpdCBhL3Rlc3RzL3BlcmZfdGVzdHMv
dGhpcmRfcGFydHkvcGVyZi9wZXJmX3Rlc3QuY2MgYi90ZXN0cy9wZXJmX3Rlc3RzL3RoaXJkX3Bh
cnR5L3BlcmYvcGVyZl90ZXN0LmNjCi1pbmRleCAwZDVhYmMwLi43MzY0MzMwIDEwMDY0NAotLS0t
IGEvdGVzdHMvcGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL3BlcmZfdGVzdC5jYwotKysrIGIv
dGVzdHMvcGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL3BlcmZfdGVzdC5jYwotQEAgLTIsMTYg
KzIsNTEgQEAKLSAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0gLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KLSAKLS0jaW5jbHVkZSAidGVzdGluZy9wZXJmL3BlcmZfdGVzdC5oIgotKyNpbmNsdWRlICJw
ZXJmX3Rlc3QuaCIKLSAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLS0KLS0jaW5jbHVkZSAiYmFzZS9s
b2dnaW5nLmgiCi0tI2luY2x1ZGUgImJhc2Uvc3RyaW5ncy9zdHJpbmdfbnVtYmVyX2NvbnZlcnNp
b25zLmgiCi0tI2luY2x1ZGUgImJhc2Uvc3RyaW5ncy9zdHJpbmdwcmludGYuaCIKLSsjaW5jbHVk
ZSA8c3RkYXJnLmg+Ci0rI2luY2x1ZGUgPHZlY3Rvcj4KLSAKLSBuYW1lc3BhY2UgewotIAotK25h
bWVzcGFjZSBiYXNlIHsKLSsKLStzdGQ6OnN0cmluZyBGb3JtYXRTdHJpbmcoY29uc3QgY2hhciAq
Zm10LCB2YV9saXN0IHZhcmFyZykgewotKyAgc3RhdGljIHN0ZDo6dmVjdG9yPGNoYXI+IGJ1ZmZl
cig1MTIpOwotKwotKyAgLy8gQXR0ZW1wdCB0byBqdXN0IHByaW50IHRvIHRoZSBjdXJyZW50IGJ1
ZmZlcgotKyAgaW50IGxlbiA9IHZzbnByaW50ZigmYnVmZmVyWzBdLCBidWZmZXIuc2l6ZSgpLCBm
bXQsIHZhcmFyZyk7Ci0rICBpZiAobGVuIDwgMCB8fCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbikg
Pj0gYnVmZmVyLnNpemUoKSkgewotKyAgICAvLyBCdWZmZXIgd2FzIG5vdCBsYXJnZSBlbm91Z2gs
IGNhbGN1bGF0ZSB0aGUgcmVxdWlyZWQgc2l6ZSBhbmQgcmVzaXplIHRoZSBidWZmZXIKLSsgICAg
bGVuID0gdnNucHJpbnRmKE5VTEwsIDAsIGZtdCwgdmFyYXJnKTsKLSsgICAgYnVmZmVyLnJlc2l6
ZShsZW4gKyAxKTsKLSsKLSsgICAgLy8gUHJpbnQgYWdhaW4KLSsgICAgdnNucHJpbnRmKCZidWZm
ZXJbMF0sIGJ1ZmZlci5zaXplKCksIGZtdCwgdmFyYXJnKTsKLSsgIH0KLSsKLSsgIHJldHVybiBz
dGQ6OnN0cmluZyhidWZmZXIuZGF0YSgpLCBsZW4pOwotK30KLSsKLStzdGQ6OnN0cmluZyBTdHJp
bmdQcmludGYoY29uc3QgY2hhciAqZm10LCAuLi4pIHsKLSsgIHZhX2xpc3QgdmFyYXJnOwotKyAg
dmFfc3RhcnQodmFyYXJnLCBmbXQpOwotKyAgc3RkOjpzdHJpbmcgcmVzdWx0ID0gRm9ybWF0U3Ry
aW5nKGZtdCwgdmFyYXJnKTsKLSsgIHZhX2VuZCh2YXJhcmcpOwotKyAgcmV0dXJuIHJlc3VsdDsK
LSt9Ci0rCi0rc3RkOjpzdHJpbmcgVWludFRvU3RyaW5nKHVuc2lnbmVkIGludCB2YWx1ZSkgewot
KyAgcmV0dXJuIFN0cmluZ1ByaW50ZigiJXUiLCB2YWx1ZSk7Ci0rfQotKwotK3N0ZDo6c3RyaW5n
IERvdWJsZVRvU3RyaW5nKGRvdWJsZSB2YWx1ZSkgewotKyAgcmV0dXJuIFN0cmluZ1ByaW50Zigi
JS4xMGxmIiwgdmFsdWUpOwotK30KLSsKLSt9Ci0rCi0gc3RkOjpzdHJpbmcgUmVzdWx0c1RvU3Ry
aW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhY2UsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL3Bl
cmZfdGVzdC5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3Rz
L3RoaXJkX3BhcnR5L3BlcmYvcGVyZl90ZXN0LmNjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3MzY0MzMwNmM5N2Q4NWE3YmJjYzI1MmI5MzRlNWMzYjkxNGNmNTI2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3RoaXJkX3BhcnR5L3BlcmYvcGVyZl90ZXN0LmNjCisr
KyAvZGV2L251bGwKQEAgLTEsMjM5ICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDEzIFRoZSBDaHJv
bWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLQotI2luY2x1ZGUgInBlcmZfdGVzdC5oIgotCi0j
aW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRhcmcuaD4KLSNpbmNsdWRlIDx2ZWN0b3I+
Ci0KLW5hbWVzcGFjZSB7Ci0KLW5hbWVzcGFjZSBiYXNlIHsKLQotc3RkOjpzdHJpbmcgRm9ybWF0
U3RyaW5nKGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCB2YXJhcmcpIHsKLSAgc3RhdGljIHN0ZDo6
dmVjdG9yPGNoYXI+IGJ1ZmZlcig1MTIpOwotCi0gIC8vIEF0dGVtcHQgdG8ganVzdCBwcmludCB0
byB0aGUgY3VycmVudCBidWZmZXIKLSAgaW50IGxlbiA9IHZzbnByaW50ZigmYnVmZmVyWzBdLCBi
dWZmZXIuc2l6ZSgpLCBmbXQsIHZhcmFyZyk7Ci0gIGlmIChsZW4gPCAwIHx8IHN0YXRpY19jYXN0
PHNpemVfdD4obGVuKSA+PSBidWZmZXIuc2l6ZSgpKSB7Ci0gICAgLy8gQnVmZmVyIHdhcyBub3Qg
bGFyZ2UgZW5vdWdoLCBjYWxjdWxhdGUgdGhlIHJlcXVpcmVkIHNpemUgYW5kIHJlc2l6ZSB0aGUg
YnVmZmVyCi0gICAgbGVuID0gdnNucHJpbnRmKE5VTEwsIDAsIGZtdCwgdmFyYXJnKTsKLSAgICBi
dWZmZXIucmVzaXplKGxlbiArIDEpOwotCi0gICAgLy8gUHJpbnQgYWdhaW4KLSAgICB2c25wcmlu
dGYoJmJ1ZmZlclswXSwgYnVmZmVyLnNpemUoKSwgZm10LCB2YXJhcmcpOwotICB9Ci0KLSAgcmV0
dXJuIHN0ZDo6c3RyaW5nKGJ1ZmZlci5kYXRhKCksIGxlbik7Ci19Ci0KLXN0ZDo6c3RyaW5nIFN0
cmluZ1ByaW50Zihjb25zdCBjaGFyICpmbXQsIC4uLikgewotICB2YV9saXN0IHZhcmFyZzsKLSAg
dmFfc3RhcnQodmFyYXJnLCBmbXQpOwotICBzdGQ6OnN0cmluZyByZXN1bHQgPSBGb3JtYXRTdHJp
bmcoZm10LCB2YXJhcmcpOwotICB2YV9lbmQodmFyYXJnKTsKLSAgcmV0dXJuIHJlc3VsdDsKLX0K
LQotc3RkOjpzdHJpbmcgVWludFRvU3RyaW5nKHVuc2lnbmVkIGludCB2YWx1ZSkgewotICByZXR1
cm4gU3RyaW5nUHJpbnRmKCIldSIsIHZhbHVlKTsKLX0KLQotc3RkOjpzdHJpbmcgRG91YmxlVG9T
dHJpbmcoZG91YmxlIHZhbHVlKSB7Ci0gIHJldHVybiBTdHJpbmdQcmludGYoIiUuMTBsZiIsIHZh
bHVlKTsKLX0KLQotfQotCi1zdGQ6OnN0cmluZyBSZXN1bHRzVG9TdHJpbmcoY29uc3Qgc3RkOjpz
dHJpbmcmIG1lYXN1cmVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBtb2RpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgdHJhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgcHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBzdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIHVuaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50
KSB7Ci0gIC8vIDwqPlJFU1VMVCA8Z3JhcGhfbmFtZT46IDx0cmFjZV9uYW1lPj0gPHZhbHVlPiA8
dW5pdHM+Ci0gIC8vIDwqPlJFU1VMVCA8Z3JhcGhfbmFtZT46IDx0cmFjZV9uYW1lPj0gezxtZWFu
PiwgPHN0ZCBkZXZpYXRpb24+fSA8dW5pdHM+Ci0gIC8vIDwqPlJFU1VMVCA8Z3JhcGhfbmFtZT46
IDx0cmFjZV9uYW1lPj0gWzx2YWx1ZT4sdmFsdWUsdmFsdWUsLi4uLF0gPHVuaXRzPgotICByZXR1
cm4gYmFzZTo6U3RyaW5nUHJpbnRmKCIlc1JFU1VMVCAlcyVzOiAlcz0gJXMlcyVzICVzXG4iLAot
ICAgICAgICAgaW1wb3J0YW50ID8gIioiIDogIiIsIG1lYXN1cmVtZW50LmNfc3RyKCksIG1vZGlm
aWVyLmNfc3RyKCksCi0gICAgICAgICB0cmFjZS5jX3N0cigpLCBwcmVmaXguY19zdHIoKSwgdmFs
dWVzLmNfc3RyKCksIHN1ZmZpeC5jX3N0cigpLAotICAgICAgICAgdW5pdHMuY19zdHIoKSk7Ci19
Ci0KLXZvaWQgUHJpbnRSZXN1bHRzSW1wbChjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAotICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKLSAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWVzLAotICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHN1ZmZpeCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgdW5pdHMsCi0gICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpIHsK
LSAgZmZsdXNoKHN0ZG91dCk7Ci0gIHByaW50ZigiJXMiLCBSZXN1bHRzVG9TdHJpbmcobWVhc3Vy
ZW1lbnQsIG1vZGlmaWVyLCB0cmFjZSwgdmFsdWVzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHByZWZpeCwgc3VmZml4LCB1bml0cywgaW1wb3J0YW50KS5jX3N0cigpKTsKLSAgZmZs
dXNoKHN0ZG91dCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1uYW1lc3BhY2UgcGVyZl90ZXN0
IHsKLQotdm9pZCBQcmludFJlc3VsdChjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCi0g
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKLSAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRyYWNlLAotICAgICAgICAgICAgICAgICBzaXplX3Qg
dmFsdWUsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKLSAgICAg
ICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKLSAgUHJpbnRSZXN1bHRzSW1wbChtZWFzdXJl
bWVudCwKLSAgICAgICAgICAgICAgICAgICBtb2RpZmllciwKLSAgICAgICAgICAgICAgICAgICB0
cmFjZSwKLSAgICAgICAgICAgICAgICAgICBiYXNlOjpVaW50VG9TdHJpbmcoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgaW50Pih2YWx1ZSkpLAotICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKCks
Ci0gICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoKSwKLSAgICAgICAgICAgICAgICAgICB1
bml0cywKLSAgICAgICAgICAgICAgICAgICBpbXBvcnRhbnQpOwotfQotCi12b2lkIFByaW50UmVz
dWx0KGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKLSAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAotICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgdHJhY2UsCi0gICAgICAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSwKLSAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAotICAgICAgICAgICAgICAgICBib29sIGlt
cG9ydGFudCkgewotICBQcmludFJlc3VsdHNJbXBsKG1lYXN1cmVtZW50LAotICAgICAgICAgICAg
ICAgICAgIG1vZGlmaWVyLAotICAgICAgICAgICAgICAgICAgIHRyYWNlLAotICAgICAgICAgICAg
ICAgICAgIGJhc2U6OkRvdWJsZVRvU3RyaW5nKHZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICBz
dGQ6OnN0cmluZygpLAotICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKCksCi0gICAgICAg
ICAgICAgICAgICAgdW5pdHMsCi0gICAgICAgICAgICAgICAgICAgaW1wb3J0YW50KTsKLX0KLQot
dm9pZCBBcHBlbmRSZXN1bHQoc3RkOjpzdHJpbmcmIG91dHB1dCwKLSAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKLSAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiB0cmFjZSwKLSAgICAgICAgICAgICAgICAgIHNpemVfdCB2YWx1ZSwKLSAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKLSAgICAgICAgICAgICAgICAgIGJvb2wg
aW1wb3J0YW50KSB7Ci0gIG91dHB1dCArPSBSZXN1bHRzVG9TdHJpbmcoCi0gICAgICBtZWFzdXJl
bWVudCwKLSAgICAgIG1vZGlmaWVyLAotICAgICAgdHJhY2UsCi0gICAgICBiYXNlOjpVaW50VG9T
dHJpbmcoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih2YWx1ZSkpLAotICAgICAgc3RkOjpzdHJp
bmcoKSwKLSAgICAgIHN0ZDo6c3RyaW5nKCksCi0gICAgICB1bml0cywKLSAgICAgIGltcG9ydGFu
dCk7Ci19Ci0KLXZvaWQgUHJpbnRSZXN1bHQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50
LAotICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCi0gICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKLSAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHZhbHVlLAotICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgdW5pdHMsCi0gICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KSB7Ci0gIFByaW50UmVz
dWx0c0ltcGwobWVhc3VyZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgbW9kaWZpZXIsCi0gICAg
ICAgICAgICAgICAgICAgdHJhY2UsCi0gICAgICAgICAgICAgICAgICAgdmFsdWUsCi0gICAgICAg
ICAgICAgICAgICAgc3RkOjpzdHJpbmcoKSwKLSAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmlu
ZygpLAotICAgICAgICAgICAgICAgICAgIHVuaXRzLAotICAgICAgICAgICAgICAgICAgIGltcG9y
dGFudCk7Ci19Ci0KLXZvaWQgQXBwZW5kUmVzdWx0KHN0ZDo6c3RyaW5nJiBvdXRwdXQsCi0gICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCi0gICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCi0gICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgdHJhY2UsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgdmFsdWUsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdW5pdHMs
Ci0gICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCkgewotICBvdXRwdXQgKz0gUmVzdWx0
c1RvU3RyaW5nKG1lYXN1cmVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlm
aWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bml0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbXBvcnRhbnQpOwotfQotCi12b2lkIFByaW50UmVzdWx0TWVhbkFuZEVycm9yKGNvbnN0IHN0
ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgdHJhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBtZWFuX2FuZF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGltcG9ydGFudCkgewotICBQcmludFJlc3VsdHNJbXBsKG1lYXN1cmVtZW50LCBt
b2RpZmllciwgdHJhY2UsIG1lYW5fYW5kX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICJ7Iiwg
In0iLCB1bml0cywgaW1wb3J0YW50KTsKLX0KLQotdm9pZCBBcHBlbmRSZXN1bHRNZWFuQW5kRXJy
b3Ioc3RkOjpzdHJpbmcmIG91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFuX2FuZF9lcnJvciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KSB7Ci0gIG91dHB1dCArPSBSZXN1bHRzVG9T
dHJpbmcobWVhc3VyZW1lbnQsIG1vZGlmaWVyLCB0cmFjZSwgbWVhbl9hbmRfZXJyb3IsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInsiLCAifSIsIHVuaXRzLCBpbXBvcnRhbnQpOwotfQot
Ci12b2lkIFByaW50UmVzdWx0TGlzdChjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCi0g
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCi0gICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhY2UsCi0gICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWVzLAotICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAotICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRh
bnQpIHsKLSAgUHJpbnRSZXN1bHRzSW1wbChtZWFzdXJlbWVudCwgbW9kaWZpZXIsIHRyYWNlLCB2
YWx1ZXMsCi0gICAgICAgICAgICAgICAgICAgIlsiLCAiXSIsIHVuaXRzLCBpbXBvcnRhbnQpOwot
fQotCi12b2lkIEFwcGVuZFJlc3VsdExpc3Qoc3RkOjpzdHJpbmcmIG91dHB1dCwKLSAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAotICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgdmFsdWVzLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiB1bml0cywKLSAgICAgICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCkg
ewotICBvdXRwdXQgKz0gUmVzdWx0c1RvU3RyaW5nKG1lYXN1cmVtZW50LCBtb2RpZmllciwgdHJh
Y2UsIHZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWyIsICJdIiwgdW5pdHMs
IGltcG9ydGFudCk7Ci19Ci0KLXZvaWQgUHJpbnRTeXN0ZW1Db21taXRDaGFyZ2UoY29uc3Qgc3Rk
OjpzdHJpbmcmIHRlc3RfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGNoYXJnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpIHsK
LSAgUHJpbnRTeXN0ZW1Db21taXRDaGFyZ2Uoc3Rkb3V0LCB0ZXN0X25hbWUsIGNoYXJnZSwgaW1w
b3J0YW50KTsKLX0KLQotdm9pZCBQcmludFN5c3RlbUNvbW1pdENoYXJnZShGSUxFKiB0YXJnZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X25h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjaGFyZ2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KSB7Ci0gIGZwcmludGYodGFyZ2V0
LCAiJXMiLCBTeXN0ZW1Db21taXRDaGFyZ2VUb1N0cmluZyh0ZXN0X25hbWUsIGNoYXJnZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGFu
dCkuY19zdHIoKSk7Ci19Ci0KLXN0ZDo6c3RyaW5nIFN5c3RlbUNvbW1pdENoYXJnZVRvU3RyaW5n
KGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgY2hhcmdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKLSAgc3RkOjpzdHJpbmcgdHJhY2VfbmFtZSh0
ZXN0X25hbWUpOwotICBzdGQ6OnN0cmluZyBvdXRwdXQ7Ci0gIEFwcGVuZFJlc3VsdChvdXRwdXQs
Ci0gICAgICAgICAgICAgICAiY29tbWl0X2NoYXJnZSIsCi0gICAgICAgICAgICAgICBzdGQ6OnN0
cmluZygpLAotICAgICAgICAgICAgICAgImNjIiArIHRyYWNlX25hbWUsCi0gICAgICAgICAgICAg
ICBjaGFyZ2UsCi0gICAgICAgICAgICAgICAia2IiLAotICAgICAgICAgICAgICAgaW1wb3J0YW50
KTsKLSAgcmV0dXJuIG91dHB1dDsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIHBlcmZfdGVzdApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvdGhp
cmRfcGFydHkvcGVyZi9wZXJmX3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9wZXJmX3Rlc3RzL3RoaXJkX3BhcnR5L3BlcmYvcGVyZl90ZXN0LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDM2ZTI5MTZjNWY1MDZlMTg2YmM4ZDBlMTllZWMyMTE5ODU4N2Q1
ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRfcGFydHkvcGVyZi9w
ZXJmX3Rlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0vLyBDb3B5cmlnaHQg
MjAxMyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLSNpZm5kZWYgVEVTVElO
R19QRVJGX1BFUkZfVEVTVF9IXwotI2RlZmluZSBURVNUSU5HX1BFUkZfUEVSRl9URVNUX0hfCi0K
LSNpbmNsdWRlIDxzdHJpbmc+Ci0KLW5hbWVzcGFjZSBwZXJmX3Rlc3QgewotCi0vLyBQcmludHMg
bnVtZXJpY2FsIGluZm9ybWF0aW9uIHRvIHN0ZG91dCBpbiBhIGNvbnRyb2xsZWQgZm9ybWF0LCBm
b3IKLS8vIHBvc3QtcHJvY2Vzc2luZy4gfG1lYXN1cmVtZW50fCBpcyBhIGRlc2NyaXB0aW9uIG9m
IHRoZSBxdWFudGl0eSBiZWluZwotLy8gbWVhc3VyZWQsIGUuZy4gInZtX3BlYWsiOyB8bW9kaWZp
ZXJ8IGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UgYW5kCi0vLyB3aWxsIGJlIGFwcGVuZGVk
IGRpcmVjdGx5IHRvIHRoZSBuYW1lIG9mIHRoZSB8bWVhc3VyZW1lbnR8LCBlLmcuCi0vLyAiX2Jy
b3dzZXIiOyB8dHJhY2V8IGlzIGEgZGVzY3JpcHRpb24gb2YgdGhlIHBhcnRpY3VsYXIgZGF0YSBw
b2ludCwgZS5nLgotLy8gInJlZmVyZW5jZSI7IHx2YWx1ZXwgaXMgdGhlIG1lYXN1cmVkIHZhbHVl
OyBhbmQgfHVuaXRzfCBpcyBhIGRlc2NyaXB0aW9uCi0vLyBvZiB0aGUgdW5pdHMgb2YgbWVhc3Vy
ZSwgZS5nLiAiYnl0ZXMiLiBJZiB8aW1wb3J0YW50fCBpcyB0cnVlLCB0aGUgb3V0cHV0Ci0vLyBs
aW5lIHdpbGwgYmUgc3BlY2lhbGx5IG1hcmtlZCwgdG8gbm90aWZ5IHRoZSBwb3N0LXByb2Nlc3Nv
ci4gVGhlIHN0cmluZ3MKLS8vIG1heSBiZSBlbXB0eS4gIFRoZXkgc2hvdWxkIG5vdCBjb250YWlu
IGFueSBjb2xvbnMgKDopIG9yIGVxdWFscyBzaWducyAoPSkuCi0vLyBBIHR5cGljYWwgcG9zdC1w
cm9jZXNzaW5nIHN0ZXAgd291bGQgYmUgdG8gcHJvZHVjZSBncmFwaHMgb2YgdGhlIGRhdGEKLS8v
IHByb2R1Y2VkIGZvciB2YXJpb3VzIGJ1aWxkcywgdXNpbmcgdGhlIGNvbWJpbmVkIHxtZWFzdXJl
bWVudHwgKyB8bW9kaWZpZXJ8Ci0vLyBzdHJpbmcgdG8gc3BlY2lmeSBhIHBhcnRpY3VsYXIgZ3Jh
cGggYW5kIHRoZSB8dHJhY2V8IHRvIGlkZW50aWZ5IGEgdHJhY2UKLS8vIChpLmUuLCBkYXRhIHNl
cmllcykgb24gdGhhdCBncmFwaC4KLXZvaWQgUHJpbnRSZXN1bHQoY29uc3Qgc3RkOjpzdHJpbmcm
IG1lYXN1cmVtZW50LAotICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZp
ZXIsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKLSAgICAgICAg
ICAgICAgICAgc2l6ZV90IHZhbHVlLAotICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgdW5pdHMsCi0gICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KTsKLXZvaWQgUHJpbnRS
ZXN1bHQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAotICAgICAgICAgICAgICAgICBj
b25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiB0cmFjZSwKLSAgICAgICAgICAgICAgICAgZG91YmxlIHZhbHVlLAotICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdW5pdHMsCi0gICAgICAgICAgICAgICAgIGJvb2wg
aW1wb3J0YW50KTsKLQotdm9pZCBBcHBlbmRSZXN1bHQoc3RkOjpzdHJpbmcmIG91dHB1dCwKLSAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKLSAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKLSAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKLSAgICAgICAgICAgICAgICAgIHNpemVfdCB2YWx1
ZSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKLSAgICAgICAg
ICAgICAgICAgIGJvb2wgaW1wb3J0YW50KTsKLQotLy8gTGlrZSB0aGUgYWJvdmUgdmVyc2lvbiBv
ZiBQcmludFJlc3VsdCgpLCBidXQgdGFrZXMgYSBzdGQ6OnN0cmluZyB2YWx1ZQotLy8gaW5zdGVh
ZCBvZiBhIHNpemVfdC4KLXZvaWQgUHJpbnRSZXN1bHQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lYXN1
cmVtZW50LAotICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCi0g
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKLSAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlLAotICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgdW5pdHMsCi0gICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KTsKLQotdm9p
ZCBBcHBlbmRSZXN1bHQoc3RkOjpzdHJpbmcmIG91dHB1dCwKLSAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiBtb2RpZmllciwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiB0cmFjZSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSwKLSAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKLSAgICAgICAgICAgICAg
ICAgIGJvb2wgaW1wb3J0YW50KTsKLQotLy8gTGlrZSBQcmludFJlc3VsdCgpLCBidXQgcHJpbnRz
IGEgKG1lYW4sIHN0YW5kYXJkIGRldmlhdGlvbikgcmVzdWx0IHBhaXIuCi0vLyBUaGUgfDx2YWx1
ZXM+fCBzaG91bGQgYmUgdHdvIGNvbW1hLXNlcGFyYXRlZCBudW1iZXJzLCB0aGUgbWVhbiBhbmQK
LS8vIHN0YW5kYXJkIGRldmlhdGlvbiAob3Igb3RoZXIgZXJyb3IgbWV0cmljKSBvZiB0aGUgbWVh
c3VyZW1lbnQuCi12b2lkIFByaW50UmVzdWx0TWVhbkFuZEVycm9yKGNvbnN0IHN0ZDo6c3RyaW5n
JiBtZWFzdXJlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIG1vZGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgdHJhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nJiBtZWFuX2FuZF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGltcG9ydGFudCk7Ci0KLXZvaWQgQXBwZW5kUmVzdWx0TWVhbkFuZEVycm9yKHN0ZDo6c3RyaW5n
JiBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbWVhc3VyZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgbW9kaWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgdHJhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgbWVhbl9hbmRfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgdW5pdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGltcG9ydGFudCk7Ci0KLS8vIExpa2UgUHJpbnRSZXN1bHQoKSwgYnV0IHByaW50cyBh
biBlbnRpcmUgbGlzdCBvZiByZXN1bHRzLiBUaGUgfHZhbHVlc3wKLS8vIHdpbGwgZ2VuZXJhbGx5
IGJlIGEgbGlzdCBvZiBjb21tYS1zZXBhcmF0ZWQgbnVtYmVycy4gQSB0eXBpY2FsCi0vLyBwb3N0
LXByb2Nlc3Npbmcgc3RlcCBtaWdodCBwcm9kdWNlIHBsb3RzIG9mIHRoZWlyIG1lYW4gYW5kIHN0
YW5kYXJkCi0vLyBkZXZpYXRpb24uCi12b2lkIFByaW50UmVzdWx0TGlzdChjb25zdCBzdGQ6OnN0
cmluZyYgbWVhc3VyZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbW9kaWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJh
Y2UsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWVzLAotICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAotICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBpbXBvcnRhbnQpOwotCi12b2lkIEFwcGVuZFJlc3VsdExpc3Qoc3RkOjpz
dHJpbmcmIG91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
bWVhc3VyZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1v
ZGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwK
LSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWVzLAotICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKLSAgICAgICAgICAgICAg
ICAgICAgICBib29sIGltcG9ydGFudCk7Ci0KLS8vIFByaW50cyBtZW1vcnkgY29tbWl0IGNoYXJn
ZSBzdGF0cyBmb3IgdXNlIGJ5IHBlcmYgZ3JhcGhzLgotdm9pZCBQcmludFN5c3RlbUNvbW1pdENo
YXJnZShjb25zdCBzdGQ6OnN0cmluZyYgdGVzdF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgY2hhcmdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGltcG9ydGFudCk7Ci0KLXZvaWQgUHJpbnRTeXN0ZW1Db21taXRDaGFyZ2UoRklMRSogdGFyZ2V0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdGVzdF9u
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2hhcmdlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCk7Ci0KLXN0ZDo6c3RyaW5nIFN5
c3RlbUNvbW1pdENoYXJnZVRvU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X25hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2hhcmdlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpOwotCi19
ICAvLyBuYW1lc3BhY2UgcGVyZl90ZXN0Ci0KLSNlbmRpZiAgLy8gVEVTVElOR19QRVJGX1BFUkZf
VEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3By
ZXByb2Nlc3Nvcl90ZXN0cy9Nb2NrRGlhZ25vc3RpY3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvTW9ja0RpYWdub3N0aWNzLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5NzYxNzg2OWIxMmQyYmE0YmRkZjA3ZjM3Y2YzNTQy
ODJlNGY4YmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9Nb2Nr
RGlhZ25vc3RpY3MuaAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLS8vCi0vLyBDb3B5
cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0v
LwotCi0jaWZuZGVmIFBSRVBST0NFU1NPUl9URVNUU19NT0NLX0RJQUdOT1NUSUNTX0hfCi0jZGVm
aW5lIFBSRVBST0NFU1NPUl9URVNUU19NT0NLX0RJQUdOT1NUSUNTX0hfCi0KLSNpbmNsdWRlICJn
bW9jay9nbW9jay5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaWFnbm9zdGlj
c0Jhc2UuaCIKLQotY2xhc3MgTW9ja0RpYWdub3N0aWNzIDogcHVibGljIHBwOjpEaWFnbm9zdGlj
cwotewotICBwdWJsaWM6Ci0gICAgTU9DS19NRVRIT0QzKHByaW50LAotICAgICAgICB2b2lkKElE
IGlkLCBjb25zdCBwcDo6U291cmNlTG9jYXRpb24mIGxvYywgY29uc3Qgc3RkOjpzdHJpbmcmIHRl
eHQpKTsKLX07Ci0KLSNlbmRpZiAgLy8gUFJFUFJPQ0VTU09SX1RFU1RTX01PQ0tfRElBR05PU1RJ
Q1NfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVw
cm9jZXNzb3JfdGVzdHMvTW9ja0RpcmVjdGl2ZUhhbmRsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvTW9ja0RpcmVjdGl2ZUhhbmRsZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU2MGFkZGU0MTYxYTI2ZDJmNGZlYjc4
ODM0MjY2ZWY4NTE5ZjcxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rl
c3RzL01vY2tEaXJlY3RpdmVIYW5kbGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBA
Ci0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgotLy8KLQotI2lmbmRlZiBQUkVQUk9DRVNTT1JfVEVTVFNfTU9DS19ESVJFQ1RJ
VkVfSEFORExFUl9IXwotI2RlZmluZSBQUkVQUk9DRVNTT1JfVEVTVFNfTU9DS19ESVJFQ1RJVkVf
SEFORExFUl9IXwotCi0jaW5jbHVkZSAiZ21vY2svZ21vY2suaCIKLSNpbmNsdWRlICJjb21waWxl
ci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlSGFuZGxlckJhc2UuaCIKLQotY2xhc3MgTW9ja0RpcmVj
dGl2ZUhhbmRsZXIgOiBwdWJsaWMgcHA6OkRpcmVjdGl2ZUhhbmRsZXIKLXsKLSAgcHVibGljOgot
ICAgIE1PQ0tfTUVUSE9EMihoYW5kbGVFcnJvciwKLSAgICAgICAgdm9pZChjb25zdCBwcDo6U291
cmNlTG9jYXRpb24mIGxvYywgY29uc3Qgc3RkOjpzdHJpbmcmIG1zZykpOwotCi0gICAgTU9DS19N
RVRIT0Q0KGhhbmRsZVByYWdtYSwKLSAgICAgICAgdm9pZChjb25zdCBwcDo6U291cmNlTG9jYXRp
b24mIGxvYywKLSAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKLSAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWUsCi0gICAgICAgICAgICAgYm9vbCBzdGRnbCkp
OwotCi0gICAgTU9DS19NRVRIT0QzKGhhbmRsZUV4dGVuc2lvbiwKLSAgICAgICAgdm9pZChjb25z
dCBwcDo6U291cmNlTG9jYXRpb24mIGxvYywKLSAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbmFtZSwKLSAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgYmVoYXZpb3IpKTsKLQot
ICAgIE1PQ0tfTUVUSE9EMihoYW5kbGVWZXJzaW9uLAotICAgICAgICB2b2lkKGNvbnN0IHBwOjpT
b3VyY2VMb2NhdGlvbiYgbG9jLCBpbnQgdmVyc2lvbikpOwotfTsKLQotI2VuZGlmICAvLyBQUkVQ
Uk9DRVNTT1JfVEVTVFNfTU9DS19ESVJFQ1RJVkVfSEFORExFUl9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9QcmVwcm9j
ZXNzb3JUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9j
ZXNzb3JfdGVzdHMvUHJlcHJvY2Vzc29yVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGI0YWNkMjhkZmYyNGM0MWU1OTM2OGIxM2Y2ZGZjZGE1NTM0NjA5YmMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9QcmVwcm9jZXNzb3JUZXN0LmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAi
UHJlcHJvY2Vzc29yVGVzdC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tl
bi5oIgotCi12b2lkIFByZXByb2Nlc3NvclRlc3Q6OnByZXByb2Nlc3MoY29uc3QgY2hhciogaW5w
dXQsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKQotewotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNz
b3IuaW5pdCgxLCAmaW5wdXQsIE5VTEwpKTsKLQotICAgIGludCBsaW5lID0gMTsKLSAgICBwcDo6
VG9rZW4gdG9rZW47Ci0gICAgc3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwotICAgIGRvCi0gICAg
ewotICAgICAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotICAgICAgICBmb3IgKDsgbGlu
ZSA8IHRva2VuLmxvY2F0aW9uLmxpbmU7ICsrbGluZSkKLSAgICAgICAgewotICAgICAgICAgICAg
c3RyZWFtIDw8ICJcbiI7Ci0gICAgICAgIH0KLSAgICAgICAgc3RyZWFtIDw8IHRva2VuOwotICAg
IH0gd2hpbGUgKHRva2VuLnR5cGUgIT0gcHA6OlRva2VuOjpMQVNUKTsKLQotICAgIHN0ZDo6c3Ry
aW5nIGFjdHVhbCA9IHN0cmVhbS5zdHIoKTsKLSAgICBFWFBFQ1RfU1RSRVEoZXhwZWN0ZWQsIGFj
dHVhbC5jX3N0cigpKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvUHJlcHJvY2Vzc29yVGVzdC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9QcmVwcm9jZXNzb3JU
ZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyNzBmMTI4NWQ0MzUzNmU1MWZk
ZTcyY2QzMTAzZmE0ZGUzYjcwMGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nv
cl90ZXN0cy9QcmVwcm9jZXNzb3JUZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBA
Ci0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLSNpbmNsdWRlICJN
b2NrRGlhZ25vc3RpY3MuaCIKLSNpbmNsdWRlICJNb2NrRGlyZWN0aXZlSGFuZGxlci5oIgotI2lu
Y2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuaCIKLQotI2lmbmRlZiBQ
UkVQUk9DRVNTT1JfVEVTVFNfUFJFUFJPQ0VTU09SX1RFU1RfSF8KLSNkZWZpbmUgUFJFUFJPQ0VT
U09SX1RFU1RTX1BSRVBST0NFU1NPUl9URVNUX0hfCi0KLWNsYXNzIFByZXByb2Nlc3NvclRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgUHJlcHJvY2Vzc29y
VGVzdCgpIDogbVByZXByb2Nlc3NvcigmbURpYWdub3N0aWNzLCAmbURpcmVjdGl2ZUhhbmRsZXIp
IHsgfQotCi0gICAgLy8gUHJlcHJvY2Vzc2VzIHRoZSBpbnB1dCBzdHJpbmcgYW5kIHZlcmlmaWVz
IHRoYXQgaXQgbWF0Y2hlcwotICAgIC8vIGV4cGVjdGVkIG91dHB1dC4KLSAgICB2b2lkIHByZXBy
b2Nlc3MoY29uc3QgY2hhciogaW5wdXQsIGNvbnN0IGNoYXIqIGV4cGVjdGVkKTsKLQotICAgIE1v
Y2tEaWFnbm9zdGljcyBtRGlhZ25vc3RpY3M7Ci0gICAgTW9ja0RpcmVjdGl2ZUhhbmRsZXIgbURp
cmVjdGl2ZUhhbmRsZXI7Ci0gICAgcHA6OlByZXByb2Nlc3NvciBtUHJlcHJvY2Vzc29yOwotfTsK
LQotI2VuZGlmICAvLyBQUkVQUk9DRVNTT1JfVEVTVFNfUFJFUFJPQ0VTU09SX1RFU1RfSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3Jf
dGVzdHMvY2hhcl90ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9w
cmVwcm9jZXNzb3JfdGVzdHMvY2hhcl90ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNjQxZWYyY2Y4YzFhM2IwOTEzMTQwZmY4OTgzZjM5MTczZGNmNGJiOS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2NoYXJfdGVzdC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw5OCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgPGFsZ29yaXRo
bT4KLSNpbmNsdWRlIDxjbGltaXRzPgotCi0jaW5jbHVkZSAiUHJlcHJvY2Vzc29yVGVzdC5oIgot
I2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgotCi1jbGFzcyBDaGFyVGVz
dCA6IHB1YmxpYyBQcmVwcm9jZXNzb3JUZXN0LAotICAgICAgICAgICAgICAgICBwdWJsaWMgdGVz
dGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGludD4KLXsKLX07Ci0KLXN0YXRpYyBjb25zdCBjaGFy
IGtQdW5jdHVhdG9yc1tdID0gewotICAgICcuJywgJysnLCAnLScsICcvJywgJyonLCAnJScsICc8
JywgJz4nLCAnWycsICddJywgJygnLCAnKScsICd7JywgJ30nLAotICAgICdeJywgJ3wnLCAnJics
ICd+JywgJz0nLCAnIScsICc6JywgJzsnLCAnLCcsICc/J307Ci1zdGF0aWMgY29uc3QgaW50IGtO
dW1QdW5jdHVhdG9ycyA9Ci0gICAgc2l6ZW9mKGtQdW5jdHVhdG9ycykgLyBzaXplb2Yoa1B1bmN0
dWF0b3JzWzBdKTsKLQotYm9vbCBpc1B1bmN0dWF0b3IoY2hhciBjKQotewotICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBrUHVuY3R1YXRvckJlZyA9IGtQdW5jdHVhdG9yczsKLSAgICBzdGF0aWMgY29u
c3QgY2hhcioga1B1bmN0dWF0b3JFbmQgPSBrUHVuY3R1YXRvcnMgKyBrTnVtUHVuY3R1YXRvcnM7
Ci0gICAgcmV0dXJuIHN0ZDo6ZmluZChrUHVuY3R1YXRvckJlZywga1B1bmN0dWF0b3JFbmQsIGMp
ICE9IGtQdW5jdHVhdG9yRW5kOwotfQotCi1zdGF0aWMgY29uc3QgY2hhciBrV2hpdGVzcGFjZXNb
XSA9IHsnICcsICdcdCcsICdcdicsICdcZicsICdcbicsICdccid9Owotc3RhdGljIGNvbnN0IGlu
dCBrTnVtV2hpdGVzcGFjZXMgPQotICAgIHNpemVvZihrV2hpdGVzcGFjZXMpIC8gc2l6ZW9mKGtX
aGl0ZXNwYWNlc1swXSk7Ci0KLWJvb2wgaXNXaGl0ZXNwYWNlKGNoYXIgYykKLXsKLSAgICBzdGF0
aWMgY29uc3QgY2hhcioga1doaXRlc3BhY2VCZWcgPSBrV2hpdGVzcGFjZXM7Ci0gICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGtXaGl0ZXNwYWNlRW5kID0ga1doaXRlc3BhY2VzICsga051bVdoaXRlc3Bh
Y2VzOwotICAgIHJldHVybiBzdGQ6OmZpbmQoa1doaXRlc3BhY2VCZWcsIGtXaGl0ZXNwYWNlRW5k
LCBjKSAhPSBrV2hpdGVzcGFjZUVuZDsKLX0KLQotVEVTVF9QKENoYXJUZXN0LCBJZGVudGlmaWVk
KQotewotICAgIHN0ZDo6c3RyaW5nIHN0cigxLCBzdGF0aWNfY2FzdDxjaGFyPihHZXRQYXJhbSgp
KSk7Ci0gICAgY29uc3QgY2hhciogY3N0ciA9IHN0ci5jX3N0cigpOwotICAgIGludCBsZW5ndGgg
PSAxOwotCi0gICAgLy8gTm90ZSB0aGF0IHdlIHBhc3MgdGhlIGxlbmd0aCBwYXJhbSBhcyB3ZWxs
IGJlY2F1c2UgdGhlIGludmFsaWQKLSAgICAvLyBzdHJpbmcgbWF5IGNvbnRhaW4gdGhlIG51bGwg
Y2hhcmFjdGVyLgotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmY3N0ciwg
Jmxlbmd0aCkpOwotCi0gICAgaW50IGV4cGVjdGVkVHlwZSA9IHBwOjpUb2tlbjo6TEFTVDsKLSAg
ICBzdGQ6OnN0cmluZyBleHBlY3RlZFZhbHVlOwotCi0gICAgaWYgKHN0clswXSA9PSAnIycpCi0g
ICAgewotICAgICAgICAvLyBMb25lICcjJyBpcyBpZ25vcmVkLgotICAgIH0KLSAgICBlbHNlIGlm
ICgoc3RyWzBdID09ICdfJykgfHwKLSAgICAgICAgICAgICAoKHN0clswXSA+PSAnYScpICYmIChz
dHJbMF0gPD0gJ3onKSkgfHwKLSAgICAgICAgICAgICAoKHN0clswXSA+PSAnQScpICYmIChzdHJb
MF0gPD0gJ1onKSkpCi0gICAgewotICAgICAgICBleHBlY3RlZFR5cGUgPSBwcDo6VG9rZW46OklE
RU5USUZJRVI7Ci0gICAgICAgIGV4cGVjdGVkVmFsdWUgPSBzdHI7Ci0gICAgfQotICAgIGVsc2Ug
aWYgKHN0clswXSA+PSAnMCcgJiYgc3RyWzBdIDw9ICc5JykKLSAgICB7Ci0gICAgICAgIGV4cGVj
dGVkVHlwZSA9IHBwOjpUb2tlbjo6Q09OU1RfSU5UOwotICAgICAgICBleHBlY3RlZFZhbHVlID0g
c3RyOwotICAgIH0KLSAgICBlbHNlIGlmIChpc1B1bmN0dWF0b3Ioc3RyWzBdKSkKLSAgICB7Ci0g
ICAgICAgIGV4cGVjdGVkVHlwZSA9IHN0clswXTsKLSAgICAgICAgZXhwZWN0ZWRWYWx1ZSA9IHN0
cjsKLSAgICB9Ci0gICAgZWxzZSBpZiAoaXNXaGl0ZXNwYWNlKHN0clswXSkpCi0gICAgewotICAg
ICAgICAvLyBXaGl0ZXNwYWNlIGlzIGlnbm9yZWQuCi0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0g
ICAgICAgIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpcyBpbnZhbGlkLgotICAgICAgICB1c2luZyB0ZXN0
aW5nOjpfOwotICAgICAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCi0gICAgICAgICAgICBw
cmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfQ0hBUkFDVEVSLCBfLCBzdHIpKTsKLSAg
ICB9Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2Vu
KTsKLSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRUeXBlLCB0b2tlbi50eXBlKTsKLSAgICBFWFBFQ1Rf
RVEoZXhwZWN0ZWRWYWx1ZSwgdG9rZW4udGV4dCk7Ci19OwotCi0vLyBOb3RlICsxIGZvciB0aGUg
bWF4LXZhbHVlIGluIHJhbmdlLiBJdCBpcyB0aGVyZSBiZWNhdXNlIHRoZSBtYXgtdmFsdWUKLS8v
IG5vdCBpbmNsdWRlZCBpbiB0aGUgcmFuZ2UuCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChBbGws
IENoYXJUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6UmFuZ2UoQ0hBUl9N
SU4sIENIQVJfTUFYICsgMSkpOwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2NvbW1lbnRfdGVzdC5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2NvbW1lbnRfdGVz
dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzNzEyZWE2NDdkZmEyNTMxYTE4
N2VkZGJlYzE4YjBiMDZjY2JjNGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nv
cl90ZXN0cy9jb21tZW50X3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAot
Ly8KLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJQcmVwcm9jZXNzb3JUZXN0LmgiCi0jaW5jbHVkZSAi
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgiCi0KLWNsYXNzIENvbW1lbnRUZXN0IDogcHVi
bGljIFByZXByb2Nlc3NvclRlc3QsCi0gICAgICAgICAgICAgICAgICAgIHB1YmxpYyB0ZXN0aW5n
OjpXaXRoUGFyYW1JbnRlcmZhY2U8Y29uc3QgY2hhcio+Ci17Ci19OwotCi1URVNUX1AoQ29tbWVu
dFRlc3QsIENvbW1lbnRJZ25vcmVkKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9IEdldFBhcmFt
KCk7Ci0KLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgMCkpOwot
Ci0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci0g
ICAgRVhQRUNUX0VRKHBwOjpUb2tlbjo6TEFTVCwgdG9rZW4udHlwZSk7Ci19Ci0KLUlOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKExpbmVDb21tZW50LCBDb21tZW50VGVzdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlcygiLy9mb29cbiIsIC8vIFdpdGggbmV3bGluZS4KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy9mb28iLCAgIC8vIFdpdGhv
dXQgbmV3bGluZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy8q
Ki8iLCAgIC8vIE5lc3RlZCBibG9jayBjb21tZW50LgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIvLy8vIiwgICAgLy8gTmVzdGVkIGxpbmUgY29tbWVudC4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy9cIiIpKTsgIC8vIEludmFsaWQg
Y2hhcmFjdGVyLiAgCi0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEJsb2NrQ29tbWVudCwgQ29t
bWVudFRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXMoIi8qZm9v
Ki8iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvKmZvb1xuKi8i
LCAvLyBXaXRoIG5ld2xpbmUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIi8qLy8qLyIsICAgIC8vIE5lc3RlZCBsaW5lIGNvbW1lbnQuCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIi8qLyoqLyIsICAgIC8vIE5lc3RlZCBibG9jayBjb21t
ZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvKioqLyIsICAg
ICAvLyBXaXRoIGxvbmUgJyonLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIvKlwiKi8iKSk7ICAvLyBJbnZhbGlkIGNoYXJhY3Rlci4KLQotY2xhc3MgQmxvY2tDb21t
ZW50VGVzdCA6IHB1YmxpYyBQcmVwcm9jZXNzb3JUZXN0Ci17Ci19OwotCi1URVNUX0YoQmxvY2tD
b21tZW50VGVzdCwgQ29tbWVudFJlcGxhY2VkV2l0aFNwYWNlKQotewotICAgIGNvbnN0IGNoYXIq
IHN0ciA9ICIvKmZvbyovYmFyIjsKLQotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5p
dCgxLCAmc3RyLCAwKSk7Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgbVByZXByb2Nlc3Nv
ci5sZXgoJnRva2VuKTsKLSAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpJREVOVElGSUVSLCB0b2tl
bi50eXBlKTsKLSAgICBFWFBFQ1RfRVEoImJhciIsIHRva2VuLnRleHQpOwotICAgIEVYUEVDVF9U
UlVFKHRva2VuLmhhc0xlYWRpbmdTcGFjZSgpKTsKLX0KLQotVEVTVF9GKEJsb2NrQ29tbWVudFRl
c3QsIFVudGVybWluYXRlZENvbW1lbnQpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIi8qZm9v
IjsKLQotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7Ci0K
LSAgICB1c2luZyB0ZXN0aW5nOjpfOwotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJp
bnQocHA6OkRpYWdub3N0aWNzOjpQUF9FT0ZfSU5fQ09NTUVOVCwgXywgXykpOwotCi0gICAgcHA6
OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci19CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3Rz
L2RlZmluZV90ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVw
cm9jZXNzb3JfdGVzdHMvZGVmaW5lX3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2MTdhMDM5ZDdmN2JmMjU1NzRkMmI4MmQ5MzUyNzE5NGRhYmNiODA2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvZGVmaW5lX3Rlc3QuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsOTU3ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAiUHJlcHJv
Y2Vzc29yVGVzdC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgot
Ci11c2luZyB0ZXN0aW5nOjpfOwotCi1jbGFzcyBEZWZpbmVUZXN0IDogcHVibGljIFByZXByb2Nl
c3NvclRlc3QKLXsKLX07Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBOb25JZGVudGlmaWVyKQotewot
ICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgMiBmb29cbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICIyXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIjJcbiI7Ci0KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3Rp
Y3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9VTkVYUEVDVEVE
X1RPS0VOLAotICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwK
LSAgICAgICAgICAgICAgICAgICAgICAiMiIpKTsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4
cGVjdGVkKTsKLX07Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBSZWRlZmluZVByZWRlZmluZWQpCi17
Ci0gICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBfX0xJTkVfXyAxMFxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgIl9fTElORV9fXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAi
I2RlZmluZSBfX0ZJTEVfXyAyMFxuIgotICAgICAgICAgICAgICAgICAgICAgICAgIl9fRklMRV9f
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBfX1ZFUlNJT05fXyAyMDBcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICJfX1ZFUlNJT05fX1xuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgIiNkZWZpbmUgR0xfRVMgMFxuIgotICAgICAgICAgICAgICAgICAgICAgICAgIkdM
X0VTXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIjJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIwXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiMTAwXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiMVxuIjsKLQotICAg
IEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBwcmludChwcDo6RGlh
Z25vc3RpY3M6OlBQX01BQ1JPX1BSRURFRklORURfUkVERUZJTkVELAotICAgICAgICAgICAgICAg
ICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAi
X19MSU5FX18iKSk7Ci0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAotICAgICAgICAgICAg
ICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfTUFDUk9fUFJFREVGSU5FRF9SRURFRklORUQs
Ci0gICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDMpLAotICAgICAg
ICAgICAgICAgICAgICAgICJfX0ZJTEVfXyIpKTsKLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3Rp
Y3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9NQUNST19QUkVE
RUZJTkVEX1JFREVGSU5FRCwKLSAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRp
b24oMCwgNSksCi0gICAgICAgICAgICAgICAgICAgICAgIl9fVkVSU0lPTl9fIikpOwotICAgIEVY
UEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25v
c3RpY3M6OlBQX01BQ1JPX1BSRURFRklORURfUkVERUZJTkVELAotICAgICAgICAgICAgICAgICAg
ICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCA3KSwKLSAgICAgICAgICAgICAgICAgICAgICAiR0xf
RVMiKSk7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihE
ZWZpbmVUZXN0LCBSZXNlcnZlZFVuZGVyU2NvcmUxKQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0
ID0gIiNkZWZpbmUgX19mb28gYmFyXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiX19mb29c
biI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAiYmFyXG4iOwotCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChw
cDo6RGlhZ25vc3RpY3M6OlBQX1dBUk5JTkdfTUFDUk9fTkFNRV9SRVNFUlZFRCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgIl9f
Zm9vIikpOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0Yo
RGVmaW5lVGVzdCwgUmVzZXJ2ZWRVbmRlclNjb3JlMikKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1
dCA9ICIjZGVmaW5lIGZvb19fYmFyIGJhelxuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZv
b19fYmFyXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImJhelxuIjsKLQotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywg
cHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9XQVJOSU5HX01BQ1JPX05BTUVfUkVTRVJWRUQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwg
MSksICJmb29fX2JhciIpKTsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0K
LQotVEVTVF9GKERlZmluZVRlc3QsIFJlc2VydmVkR0wpCi17Ci0gICAgY29uc3QgY2hhciogaW5w
dXQgPSAiI2RlZmluZSBHTF9mb28gYmFyXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiR0xf
Zm9vXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIkdMX2Zvb1xuIjsKLQotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywK
LSAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX01BQ1JPX05BTUVfUkVT
RVJWRUQsCi0gICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLAot
ICAgICAgICAgICAgICAgICAgICAgICJHTF9mb28iKSk7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0
LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBPYmpSZWRlZmluZVZhbGlkKQot
ewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vICgxLTEpXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICAiI2RlZmluZSBmb28gLyogd2hpdGVzcGFjZSAqLyAoMS0xKSAvKiBv
dGhlciAqLyBcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICJmb29cbiI7Ci0gICAgY29uc3Qg
Y2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAiKDEtMSlcbiI7Ci0gICAgLy8gTm8gZXJyb3Igb3Ig
d2FybmluZy4KLSAgICB1c2luZyB0ZXN0aW5nOjpfOwotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9z
dGljcywgcHJpbnQoXywgXywgXykpLlRpbWVzKDApOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwg
ZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgT2JqUmVkZWZpbmVJbnZhbGlkKQot
ewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vICgwKVxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgIiNkZWZpbmUgZm9vICgxLTEpXG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgICAiZm9vXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIigwKVxu
IjsKLQotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBwcmlu
dChwcDo6RGlhZ25vc3RpY3M6OlBQX01BQ1JPX1JFREVGSU5FRCwKLSAgICAgICAgICAgICAgICAg
ICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMiksCi0gICAgICAgICAgICAgICAgICAgICAgImZv
byIpKTsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERl
ZmluZVRlc3QsIEZ1bmNSZWRlZmluZVZhbGlkKQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0g
IiNkZWZpbmUgZm9vKGEpICggYSApXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmlu
ZSBmb28oIGEgKSggLyogd2hpdGVzcGFjZSAqLyBhIC8qIG90aGVyICovIClcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICJmb28oYilcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAi
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAiKCBiIClcbiI7Ci0gICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KLSAgICB1c2lu
ZyB0ZXN0aW5nOjpfOwotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQoXywgXywg
XykpLlRpbWVzKDApOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1U
RVNUX0YoRGVmaW5lVGVzdCwgRnVuY1JlZGVmaW5lSW52YWxpZCkKLXsKLSAgICBjb25zdCBjaGFy
KiBpbnB1dCA9ICIjZGVmaW5lIGZvbyhiKSAoIGEgKVxuIgotICAgICAgICAgICAgICAgICAgICAg
ICAgIiNkZWZpbmUgZm9vKGIpICggYiApXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9v
KDEpXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIiggYSApXG4iOwot
Ci0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgIHByaW50KHBw
OjpEaWFnbm9zdGljczo6UFBfTUFDUk9fUkVERUZJTkVELAotICAgICAgICAgICAgICAgICAgICAg
IHBwOjpTb3VyY2VMb2NhdGlvbigwLCAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAiZm9vIikp
OwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5l
VGVzdCwgT2JqQmFzaWMpCi17Ci0gICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28g
MVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvb1xuIjsKLSAgICBjb25zdCBjaGFyKiBl
eHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIxXG4iOwotCi0gICAg
cHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgT2Jq
RW1wdHkpCi17Ci0gICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb29cbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICJmb29cbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAi
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iOwotCi0gICAgcHJlcHJvY2Vzcyhp
bnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgT2JqQ2hhaW4pCi17Ci0g
ICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28gMVxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgIiNkZWZpbmUgYmFyIGZvb1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgImJh
clxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIxXG4iOwotCi0gICAg
cHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgT2Jq
Q2hhaW5SZXZlcnNlKQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgYmFyIGZv
b1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgZm9vIDFcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICJiYXJcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAiMVxuIjsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVT
VF9GKERlZmluZVRlc3QsIE9ialJlY3Vyc2l2ZSkKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9
ICIjZGVmaW5lIGZvbyBiYXJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGJh
ciBiYXpcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGJheiBmb29cbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICJmb29cbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICJi
YXJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICJiYXpcbiI7Ci0gICAgY29uc3QgY2hhciog
ZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9v
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFyXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAiYmF6XG4iOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwot
fQotCi1URVNUX0YoRGVmaW5lVGVzdCwgT2JqQ29tcG9zaXRlQ2hhaW4pCi17Ci0gICAgY29uc3Qg
Y2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28gMVxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
IiNkZWZpbmUgYmFyIGEgZm9vXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiYmFyXG4iOwot
ICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgImEgMVxuIjsKLQotICAgIHByZXBy
b2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIE9iakNvbXBv
c2l0ZUNoYWluUmV2ZXJzZSkKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGJh
ciBhIGZvb1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgZm9vIDFcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICJiYXJcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQg
PSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAiYSAxXG4iOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwot
fQotCi1URVNUX0YoRGVmaW5lVGVzdCwgT2JqQ29tcG9zaXRlUmVjdXJzaXZlKQotewotICAgIGNv
bnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vIGEgYmFyXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAiI2RlZmluZSBiYXIgYiBiYXpcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIj
ZGVmaW5lIGJheiBjIGZvb1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvb1xuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgImJhclxuIgotICAgICAgICAgICAgICAgICAgICAgICAgImJh
elxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJhIGIgYyBmb29cbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJiIGMgYSBiYXJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJjIGEgYiBiYXpc
biI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZp
bmVUZXN0LCBPYmpDaGFpblNlbGZSZWN1cnNpdmUpCi17Ci0gICAgY29uc3QgY2hhciogaW5wdXQg
PSAiI2RlZmluZSBmb28gZm9vXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBi
YXIgZm9vXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiYmFyXG4iOwotICAgIGNvbnN0IGNo
YXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImZvb1xuIjsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQs
IGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIE9iamVjdExpa2VXaXRoUGFyZW5z
KQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vICgpMVxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgImZvbygpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiI2Rl
ZmluZSBiYXIgKCkyXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiYmFyKClcbiI7Ci0gICAg
Y29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAi
KCkxKClcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIoKTIoKVxuIjsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVk
KTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNFbXB0eSkKLXsKLSAgICBjb25zdCBjaGFy
KiBpbnB1dCA9ICIjZGVmaW5lIGZvbygpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9v
KClcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAiXG4iOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQot
Ci1URVNUX0YoRGVmaW5lVGVzdCwgRnVuY05vQXJncykKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1
dCA9ICIjZGVmaW5lIGZvbygpIGJhclxuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvbygp
XG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImJhclxuIjsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0K
LQotVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNPbmVBcmdVbnVzZWQpCi17Ci0gICAgY29uc3QgY2hh
ciogaW5wdXQgPSAiI2RlZmluZSBmb28oeCkgMVxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ImZvbyhiYXIpXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIjFcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3Rl
ZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBGdW5jVHdvQXJnc1VudXNlZCkKLXsKLSAgICBj
b25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyh4LHkpIDFcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICJmb28oYmFyLGJheilcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAi
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiMVxuIjsKLQotICAgIHByZXByb2Nlc3Mo
aW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNPbmVBcmcpCi17
Ci0gICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28oeCkgKCh4KSsxKVxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgImZvbyhiYXIpXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVj
dGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIigoYmFyKSsxKVxuIjsKLQot
ICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3Qs
IEZ1bmNUd29BcmdzKQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vKHgs
eSkgKCh4KSooeSkpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vKGJhcixiYXopXG4i
OwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIigoYmFyKSooYmF6KSlcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3Rl
ZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBGdW5jRW1wdHlBcmdzKQotewotICAgIGNvbnN0
IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgemVybygpIHBhc3NcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICIjZGVmaW5lIG9uZSh4KSBwYXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAi
I2RlZmluZSB0d28oeCx5KSBwYXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiemVybygp
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAib25lKClcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICJ0d28oLClcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInBhc3NcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4i
OwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5l
VGVzdCwgRnVuY01hY3JvQXNQYXJhbSkKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVm
aW5lIHggMFxuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgZm9vKHgpIHhcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICJmb28oMSlcbiI7Ci0gICAgY29uc3QgY2hhciogZXhw
ZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAiMVxuIjsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVk
KTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNPbmVBcmdNdWx0aSkKLXsKLSAgICBjb25z
dCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyh4KSAoeClcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICJmb28odGhpcyBpcyBhIG11bHRpLXdvcmQgYXJndW1lbnQpXG4iOwotICAgIGNvbnN0
IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIih0aGlz
IGlzIGEgbXVsdGktd29yZCBhcmd1bWVudClcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBl
eHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBGdW5jVHdvQXJnc011bHRpKQotewot
ICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vKHgseSkgeCx0d28gZmlzaCxyZWQg
ZmlzaCx5XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vKG9uZSBmaXNoLCBibHVlIGZp
c2gpXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIm9uZSBmaXNoLHR3byBmaXNoLHJlZCBmaXNoLGJsdWUgZmlzaFxuIjsKLQot
ICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3Qs
IEZ1bmNDb21wb3NlKQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgYmFyKHgp
ICgxKyh4KSlcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGZvbyh5KSAoMioo
eSkpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vKGJhcigzKSlcbiI7Ci0gICAgY29u
c3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAiKDIqKCgxKygzKSkpKVxuIjsKLQotICAgIHBy
ZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNB
cmdXaXRoUGFyZW5zKQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vKHgp
ICh4KVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvbyhhcmd1bWVudCh3aXRoIHBhcmVu
cykgRlRXKVxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIoYXJndW1lbnQod2l0aCBwYXJlbnMpIEZUVylcbiI7Ci0KLSAgICBw
cmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBGdW5j
TWFjcm9Bc05vbk1hY3JvKQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9v
KGJhcikgYmFyXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vIGJhclxuIjsKLSAgICBj
b25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJm
b28gYmFyXG4iOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNU
X0YoRGVmaW5lVGVzdCwgRnVuY0V4dHJhTmV3bGluZXMpCi17Ci0gICAgY29uc3QgY2hhciogaW5w
dXQgPSAiI2RlZmluZSBmb28oYSkgKGEpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9v
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiKFxuIgotICAgICAgICAgICAgICAgICAgICAg
ICAgIjFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIpXG4iOwotICAgIGNvbnN0IGNoYXIq
IGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxu
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIigxKVxuIjsKLQotICAgIHByZXByb2Nlc3Mo
aW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIENoYWluT2JqVG9GdW5j
KQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vKCkgcGFzc1xuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgYmFyIGZvbygpXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAiYmFyXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
InBhc3NcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1Rf
RihEZWZpbmVUZXN0LCBDaGFpbk9ialRvTm9uRnVuYykKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1
dCA9ICIjZGVmaW5lIHBhc3MoKSBmYWlsXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiI2Rl
ZmluZSBiYXIgcGFzc1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgImJhclxuIjsKLSAgICBj
b25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4iOwotCi0gICAgcHJlcHJvY2Vz
cyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgQ2hhaW5PYmpUb0Z1
bmNXaXRoQXJncykKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyhmYWls
KSBmYWlsXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBiYXIgZm9vKHBhc3Mp
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiYmFyXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4
cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInBhc3NcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBl
Y3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBDaGFpbk9ialRvRnVuY0NvbXBvc2UpCi17
Ci0gICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBiYXooZmFpbCkgZmFpbFxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgYmFyKGZhaWwpIGZhaWxcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICIjZGVmaW5lIGZvbyBiYXIoYmF6KHBhc3MpKVxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgImZvb1xuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4iOwotCi0gICAgcHJl
cHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgQ2hhaW5P
YmpUb0Z1bmNQYXJlbnNJblRleHQxKQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZp
bmUgZmFpbCgpIHBhc3NcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGZvbyBm
YWlsXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vKClcbiI7Ci0gICAgY29uc3QgY2hh
ciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIjsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQs
IGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIENoYWluT2JqVG9GdW5jUGFyZW5z
SW5UZXh0MikKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGJhciB3aXRoLGVt
YmVkZGVkLGNvbW1hc1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgZnVuYyh4
KSBwYXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBmb28gZnVuY1xuIgot
ICAgICAgICAgICAgICAgICAgICAgICAgImZvbyhiYXIpXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4
cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3Nc
biI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZp
bmVUZXN0LCBDaGFpbk9ialRvRnVuY011bHRpTGV2ZWwpCi17Ci0gICAgY29uc3QgY2hhciogaW5w
dXQgPSAiI2RlZmluZSBmb28oeCkgcGFzc1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiNk
ZWZpbmUgYmFyIGZvb1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgYmF6IGJh
clxuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgam9lIGJhelxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgImpvZSAoZmFpbClcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0
ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIjsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQs
IGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIE9ialRvRnVuY1JlY3Vyc2l2ZSkK
LXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIEEoYSxiKSBCKGEsYilcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIEMgQSgwLEMpXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAiQ1xuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJC
KDAsQylcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1Rf
RihEZWZpbmVUZXN0LCBDaGFpbkZ1bmNUb0Z1bmNDb21wb3NlKQotewotICAgIGNvbnN0IGNoYXIq
IGlucHV0ID0gIiNkZWZpbmUgYmF6KGZhaWwpIGZhaWxcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICIjZGVmaW5lIGJhcihmYWlsKSBmYWlsXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAi
I2RlZmluZSBmb28oKSBiYXIoYmF6KHBhc3MpKVxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ImZvbygpXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0
LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBGdW5jU2VsZlJlY3Vyc2l2ZSkK
LXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyhhKSBmb28oMiooYSkpXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vKDMpXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4
cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbygyKigzKSlcbiI7
Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVU
ZXN0LCBGdW5jU2VsZkNvbXBvc2UpCi17Ci0gICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmlu
ZSBmb28oYSkgZm9vKDIqKGEpKVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvbyhmb28o
MykpXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImZvbygyKihmb28oMiooMykpKSlcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlu
cHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBGdW5jU2VsZkNvbXBvc2VO
b25GdW5jKQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vKGJhcikgYmFy
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vKGZvbylcbiI7Ci0gICAgY29uc3QgY2hh
ciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9vXG4iOwot
Ci0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVz
dCwgRnVuY1NlbGZDb21wb3NlTm9uRnVuY011bHRpVG9rZW5BcmcpCi17Ci0gICAgY29uc3QgY2hh
ciogaW5wdXQgPSAiI2RlZmluZSBmb28oYmFyKSBiYXJcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICJmb28oMStmb28pXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIjErZm9vXG4iOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1
dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgRmluYWxpemVVbmV4cGFuZGVk
TWFjcm8pCi17Ci0gICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBleHBhbmQoeCkgZXhw
YW5kKHggb25jZSlcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGZvbyh4KSB4
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vKGV4cGFuZChqdXN0KSlcbiI7Ci0gICAg
Y29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwYW5kKGp1c3Qgb25jZSlcbiI7Ci0K
LSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0
LCBGdW5jQXJnV2l0aENvbW1hcykKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5l
IGZvbyh4KSBwYXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vKGFyZ3VtZW50ICh3
aXRoLGVtYmVkZGVkLCBjb21tYXMpIC0tIGJheilcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0
ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIjsKLQotICAgIHBy
ZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNB
cmdPYmpNYXJvV2l0aENvbW1hKQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUg
Zm9vKGEpIChhKVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgYmFyIHR3byx3
b3Jkc1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvbyhiYXIpXG4iOwotICAgIGNvbnN0
IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIih0d28sd29yZHMpXG4iOwotCi0gICAgcHJlcHJv
Y2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgRnVuY0xlZnRQ
YXJlbkluTWFjcm9SaWdodFBhcmVuSW5UZXh0KQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0g
IiNkZWZpbmUgYmFyKGEpIGEqMlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUg
Zm9vIGJhcihcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICJmb28gYilcbiI7Ci0gICAgY29u
c3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAiYioyXG4iOwotCi0gICAgcHJlcHJvY2Vzcyhp
bnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgUmVwZWF0ZWRBcmcpCi17
Ci0gICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBkb3VibGUoeCkgeCB4XG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAiZG91YmxlKDEpXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVj
dGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEgMVxuIjsKLQotICAgIHBy
ZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNN
aXNzaW5nUmlnaHRQYXJlbikKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZv
byh4KSAoMiooeCkpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vKDNcbiI7Ci0gICAg
Y29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iOwotCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgIHBy
aW50KHBwOjpEaWFnbm9zdGljczo6UFBfTUFDUk9fVU5URVJNSU5BVEVEX0lOVk9DQVRJT04sCi0g
ICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDIpLAotICAgICAgICAg
ICAgICAgICAgICAgICJmb28iKSk7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7
Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBGdW5jSW5jb3JyZWN0QXJnQ291bnQpCi17Ci0gICAg
Y29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28oeCx5KSAoKHgpKyh5KSlcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICJmb28oKVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZv
bygxKVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvbygxLDIsMylcbiI7Ci0gICAgY29u
c3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iOwotCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAotICAgICAgICAgICAg
ICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfTUFDUk9fVE9PX0ZFV19BUkdTLAotICAgICAg
ICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAyKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAiZm9vIikpOwotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAgICAg
ICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX01BQ1JPX1RPT19GRVdfQVJHUywKLSAg
ICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMyksCi0gICAgICAgICAg
ICAgICAgICAgICAgImZvbyIpKTsKLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCi0gICAg
ICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9NQUNST19UT09fTUFOWV9BUkdT
LAotICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCA0KSwKLSAgICAg
ICAgICAgICAgICAgICAgICAiZm9vIikpOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0
ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgVW5kZWYpCi17Ci0gICAgY29uc3QgY2hhciog
aW5wdXQgPSAiI2RlZmluZSBmb28gMVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvb1xu
IgotICAgICAgICAgICAgICAgICAgICAgICAgIiN1bmRlZiBmb29cbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICJmb29cbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAiMVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvb1xuIjsKLQotICAgIHByZXByb2Nl
c3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIFVuZGVmUHJlZGVm
aW5lZCkKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjdW5kZWYgX19MSU5FX19cbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICJfX0xJTkVfX1xuIgotICAgICAgICAgICAgICAgICAgICAg
ICAgIiN1bmRlZiBfX0ZJTEVfX1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgIl9fRklMRV9f
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiI3VuZGVmIF9fVkVSU0lPTl9fXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAiX19WRVJTSU9OX19cbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICIjdW5kZWYgR0xfRVNcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICJHTF9FU1xuIjsK
LSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIyXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAiMFxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIjEwMFxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFcbiI7Ci0KLSAgICBFWFBFQ1Rf
Q0FMTChtRGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNz
OjpQUF9NQUNST19QUkVERUZJTkVEX1VOREVGSU5FRCwKLSAgICAgICAgICAgICAgICAgICAgICBw
cDo6U291cmNlTG9jYXRpb24oMCwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgIl9fTElORV9f
IikpOwotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBwcmlu
dChwcDo6RGlhZ25vc3RpY3M6OlBQX01BQ1JPX1BSRURFRklORURfVU5ERUZJTkVELAotICAgICAg
ICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAzKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAiX19GSUxFX18iKSk7Ci0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAotICAg
ICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfTUFDUk9fUFJFREVGSU5FRF9V
TkRFRklORUQsCi0gICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDUp
LAotICAgICAgICAgICAgICAgICAgICAgICJfX1ZFUlNJT05fXyIpKTsKLSAgICBFWFBFQ1RfQ0FM
TChtRGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQ
UF9NQUNST19QUkVERUZJTkVEX1VOREVGSU5FRCwKLSAgICAgICAgICAgICAgICAgICAgICBwcDo6
U291cmNlTG9jYXRpb24oMCwgNyksCi0gICAgICAgICAgICAgICAgICAgICAgIkdMX0VTIikpOwot
Ci0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVz
dCwgVW5kZWZSZWRlZmluZSkKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZv
byAxXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAiI3VuZGVmIGZvb1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvb1xuIgot
ICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgZm9vIDJcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICJmb29cbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAiMVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvb1xuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIjJcbiI7Ci0KLSAg
ICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLS8vIEV4YW1wbGUgZnJvbSBDOTkg
c3RhbmRhcmQgc2VjdGlvbiA2LjEwLjMuNSBTY29wZSBvZiBtYWNybyBkZWZpbml0aW9ucwotVEVT
VF9GKERlZmluZVRlc3QsIEM5OUV4YW1wbGUpCi17Ci0gICAgY29uc3QgY2hhciogaW5wdXQgPQot
ICAgICAgICAiI2RlZmluZSB4ICAgIDMgICAgICAgICAgXG4iCi0gICAgICAgICIjZGVmaW5lIGYo
YSkgZih4ICogKGEpKSBcbiIKLSAgICAgICAgIiN1bmRlZiAgeCAgICAgICAgICAgICAgIFxuIgot
ICAgICAgICAiI2RlZmluZSB4ICAgIDIgICAgICAgICAgXG4iCi0gICAgICAgICIjZGVmaW5lIGcg
ICAgZiAgICAgICAgICBcbiIKLSAgICAgICAgIiNkZWZpbmUgeiAgICB6WzBdICAgICAgIFxuIgot
ICAgICAgICAiI2RlZmluZSBoICAgIGcofiAgICAgICAgXG4iCi0gICAgICAgICIjZGVmaW5lIG0o
YSkgYSh3KSAgICAgICBcbiIKLSAgICAgICAgIiNkZWZpbmUgdyAgICAwLDEgICAgICAgIFxuIgot
ICAgICAgICAiI2RlZmluZSB0KGEpIGEgICAgICAgICAgXG4iCi0gICAgICAgICIjZGVmaW5lIHAo
KSAgaW50ICAgICAgICBcbiIKLSAgICAgICAgIiNkZWZpbmUgcSh4KSB4ICAgICAgICAgIFxuIgot
ICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICJmKHkrMSkgKyBm
KGYoeikpICUgdCh0KGcpKDApICsgdCkoMSk7XG4iCi0gICAgICAgICJnKHgrKDMsNCktdykgfCBo
IDUpICYgbVxuIgotICAgICAgICAiICAgIChmKV5tKG0pO1xuIgotICAgICAgICAicCgpIGlbcSgp
XSA9IHsgcSgxKSwgMjMsIDQsIDUsIH07XG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0g
Ci0gICAgICAgICJcbiIKLSAgICAgICAgIlxuIgotICAgICAgICAiXG4iCi0gICAgICAgICJcbiIK
LSAgICAgICAgIlxuIgotICAgICAgICAiXG4iCi0gICAgICAgICJcbiIKLSAgICAgICAgIlxuIgot
ICAgICAgICAiXG4iCi0gICAgICAgICJcbiIKLSAgICAgICAgIlxuIgotICAgICAgICAiXG4iCi0g
ICAgICAgICJcbiIKLSAgICAgICAgImYoMiAqICh5KzEpKSArIGYoMiAqIChmKDIgKiAoelswXSkp
KSkgJSBmKDIgKiAoMCkpICsgdCgxKTtcbiIKLSAgICAgICAgImYoMiAqICgyKygzLDQpLTAsMSkp
IHwgZigyICogKH4gNSkpICZcbiIKLSAgICAgICAgIiBmKDIgKiAoMCwxKSlebSgwLDEpO1xuIgot
ICAgICAgICAiaW50IGlbXSA9IHsgMSwgMjMsIDQsIDUsIH07XG4iOwotCi0gICAgcHJlcHJvY2Vz
cyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgUHJlZGVmaW5lZF9H
TF9FUykKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICJHTF9FU1xuIjsKLSAgICBjb25zdCBj
aGFyKiBleHBlY3RlZCA9ICIxXG4iOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQp
OwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgUHJlZGVmaW5lZF9WRVJTSU9OKQotewotICAgIGNv
bnN0IGNoYXIqIGlucHV0ID0gIl9fVkVSU0lPTl9fXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVj
dGVkID0gIjEwMFxuIjsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQot
VEVTVF9GKERlZmluZVRlc3QsIFByZWRlZmluZWRfTElORTEpCi17Ci0gICAgY29uc3QgY2hhciog
c3RyID0gIlxuXG5fX0xJTkVfXyI7Ci0gICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0
KDEsICZzdHIsIE5VTEwpKTsKLQotICAgIHBwOjpUb2tlbiB0b2tlbjsKLSAgICBtUHJlcHJvY2Vz
c29yLmxleCgmdG9rZW4pOwotICAgIEVYUEVDVF9FUShwcDo6VG9rZW46OkNPTlNUX0lOVCwgdG9r
ZW4udHlwZSk7Ci0gICAgRVhQRUNUX0VRKCIzIiwgdG9rZW4udGV4dCk7Ci19Ci0KLVRFU1RfRihE
ZWZpbmVUZXN0LCBQcmVkZWZpbmVkX0xJTkUyKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIj
bGluZSAxMFxuIgotICAgICAgICAgICAgICAgICAgICAgICJfX0xJTkVfX1xuIjsKLSAgICBBU1NF
UlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgTlVMTCkpOwotCi0gICAgcHA6OlRv
a2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci0gICAgRVhQRUNUX0VR
KHBwOjpUb2tlbjo6Q09OU1RfSU5ULCB0b2tlbi50eXBlKTsKLSAgICBFWFBFQ1RfRVEoIjEwIiwg
dG9rZW4udGV4dCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBQcmVkZWZpbmVkX0ZJTEUxKQot
ewotICAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0cltdID0geyIiLCAiIiwgIl9fRklMRV9fIn07Ci0g
ICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDMsIHN0ciwgTlVMTCkpOwotCi0gICAg
cHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci0gICAgRVhQ
RUNUX0VRKHBwOjpUb2tlbjo6Q09OU1RfSU5ULCB0b2tlbi50eXBlKTsKLSAgICBFWFBFQ1RfRVEo
IjIiLCB0b2tlbi50ZXh0KTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIFByZWRlZmluZWRfRklM
RTIpCi17Ci0gICAgY29uc3QgY2hhciogY29uc3Qgc3RyW10gPSB7IiNsaW5lIDEwIDIwXG4iLCAi
X19GSUxFX18ifTsKLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMiwgc3RyLCBO
VUxMKSk7Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRv
a2VuKTsKLSAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpDT05TVF9JTlQsIHRva2VuLnR5cGUpOwot
ICAgIEVYUEVDVF9FUSgiMjEiLCB0b2tlbi50ZXh0KTsKLX0KLQotLy8gRGVmaW5lZCBvcGVyYXRv
ciBwcm9kdWNlZCBieSBtYWNybyBleHBhbnNpb24gc2hvdWxkIGJlIHBhcnNlZCBpbnNpZGUgI2lm
IGRpcmVjdGl2ZXMKLVRFU1RfRihEZWZpbmVUZXN0LCBFeHBhbmRlZERlZmluZWRQYXJzZWRJbnNp
ZGVJZikKLXsKLSAgICBjb25zdCBjaGFyICppbnB1dCA9Ci0gICAgICAgICIjZGVmaW5lIGJhciAx
XG4iCi0gICAgICAgICIjZGVmaW5lIGZvbyBkZWZpbmVkKGJhcilcbiIKLSAgICAgICAgIiNpZiBm
b29cbiIKLSAgICAgICAgImJhclxuIgotICAgICAgICAiI2VuZGlmXG4iOwotICAgIGNvbnN0IGNo
YXIgKmV4cGVjdGVkID0KLSAgICAgICAgIlxuIgotICAgICAgICAiXG4iCi0gICAgICAgICJcbiIK
LSAgICAgICAgIjFcbiIKLSAgICAgICAgIlxuIjsKLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBl
Y3RlZCk7Ci19Ci0KLS8vIERlZmluZWQgb3BlcmF0b3IgcHJvZHVjZWQgYnkgbWFjcm8gZXhwYW5z
aW9uIHNob3VsZCBub3QgYmUgcGFyc2VkIG91dHNpZGUgI2lmIGRpcmVjdGl2ZXMKLVRFU1RfRihE
ZWZpbmVUZXN0LCBFeHBhbmRlZERlZmluZWROb3RQYXJzZWRPdXRzaWRlSWYpCi17Ci0gICAgY29u
c3QgY2hhciAqaW5wdXQgPQotICAgICAgICAiI2RlZmluZSBmb28gZGVmaW5lZChiYXIpXG4iCi0g
ICAgICAgICJmb29cbiI7Ci0gICAgY29uc3QgY2hhciAqZXhwZWN0ZWQgPQotICAgICAgICAiXG4i
Ci0gICAgICAgICJkZWZpbmVkKGJhcilcbiI7Ci0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0
ZWQpOwotfQotCi0vLyBUZXN0IHRoYXQgbGluZSBkaXJlY3RpdmUgZXhwcmVzc2lvbnMgZ2l2ZSBl
cnJvcnMgb24gbmVnYXRpdmUgb3IgdW5kZWZpbmVkIHNoaWZ0cy4KLVRFU1RfRihEZWZpbmVUZXN0
LCBOZWdhdGl2ZVNoaWZ0SW5MaW5lRGlyZWN0aXZlKQotewotICAgIGNvbnN0IGNoYXIgKmlucHV0
ID0KLSAgICAgICAgIiNsaW5lIDEgPDwgLTFcbiIKLSAgICAgICAgIiNsaW5lIDEgPj4gLTFcbiIK
LSAgICAgICAgIiNsaW5lIDEgPDwgeFxuIgotICAgICAgICAiI2xpbmUgMSA+PiB4XG4iOwotICAg
IGNvbnN0IGNoYXIgKmV4cGVjdGVkID0KLSAgICAgICAgIlxuIgotICAgICAgICAiXG4iCi0gICAg
ICAgICJcbiIKLSAgICAgICAgIlxuIjsKLQotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywg
cHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9VTkRFRklORURfU0hJRlQsIF8sIF8pKS5UaW1lcyg0
KTsKLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6
UFBfSU5WQUxJRF9MSU5FX05VTUJFUiwgXywgXykpLlRpbWVzKDIpOwotICAgIHByZXByb2Nlc3Mo
aW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotLy8gVW5kZWZpbmluZyBhIG1hY3JvIGluIGl0cyBpbnZv
Y2F0aW9uIHBhcmFtZXRlcnMgcHJvZHVjZXMgYW5kIGVycm9yCi1URVNUX0YoRGVmaW5lVGVzdCwg
VW5kZWZpbmVJbkludm9jYXRpb24pCi17Ci0gICAgY29uc3QgY2hhciAqaW5wdXQgPQotICAgICAg
ICAiI2RlZmluZSBHKGEsIGIpIGEgYlxuIgotICAgICAgICAiRyhcbiIKLSAgICAgICAgIiN1bmRl
ZiBHXG4iCi0gICAgICAgICIxLCAyKVxuIjsKLSAgICBjb25zdCBjaGFyICpleHBlY3RlZCA9ICJc
blxuXG4xIDJcbiI7Ci0KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBwOjpE
aWFnbm9zdGljczo6UFBfTUFDUk9fVU5ERUZJTkVEX1dISUxFX0lOVk9LRUQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMyksIF8pKTsK
LQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvZXJyb3JfdGVz
dC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rl
c3RzL2Vycm9yX3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGNmOGFm
NjU2MDAwZGY4YTVjNjM0YzdiZWM1ODIzNzU1OTBlNzJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9wcmVwcm9jZXNzb3JfdGVzdHMvZXJyb3JfdGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5
MiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgIlByZXByb2Nlc3NvclRlc3QuaCIK
LSNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCIKLQotY2xhc3MgRXJyb3JU
ZXN0IDogcHVibGljIFByZXByb2Nlc3NvclRlc3QKLXsKLX07Ci0KLVRFU1RfRihFcnJvclRlc3Qs
IEVtcHR5KQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjZXJyb3JcbiI7Ci0gICAgY29uc3Qg
Y2hhciogZXhwZWN0ZWQgPSAiXG4iOwotCi0gICAgdXNpbmcgdGVzdGluZzo6XzsKLSAgICBFWFBF
Q1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwgaGFuZGxlRXJyb3IocHA6OlNvdXJjZUxvY2F0aW9u
KDAsIDEpLCAiIikpOwotICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcuCi0gICAgRVhQRUNUX0NB
TEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSkuVGltZXMoMCk7Ci0KLSAgICBwcmVwcm9j
ZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRXJyb3JUZXN0LCBPbmVUb2tlbk1lc3Nh
Z2UpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNlcnJvciBmb29cbiI7Ci0gICAgY29uc3Qg
Y2hhciogZXhwZWN0ZWQgPSAiXG4iOwotCi0gICAgdXNpbmcgdGVzdGluZzo6XzsKLSAgICBFWFBF
Q1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwKLSAgICAgICAgICAgICAgICBoYW5kbGVFcnJvcihw
cDo6U291cmNlTG9jYXRpb24oMCwgMSksICIgZm9vIikpOwotICAgIC8vIE5vIGVycm9yIG9yIHdh
cm5pbmcuCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSkuVGlt
ZXMoMCk7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRXJy
b3JUZXN0LCBUd29Ub2tlbk1lc3NhZ2UpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNlcnJv
ciBmb28gYmFyXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIjsKLQotICAgIHVz
aW5nIHRlc3Rpbmc6Ol87Ci0gICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRsZXIsCi0gICAg
ICAgICAgICAgICAgaGFuZGxlRXJyb3IocHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiIGZvbyBi
YXIiKSk7Ci0gICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KLSAgICBFWFBFQ1RfQ0FMTChtRGlh
Z25vc3RpY3MsIHByaW50KF8sIF8sIF8pKS5UaW1lcygwKTsKLQotICAgIHByZXByb2Nlc3Moc3Ry
LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihFcnJvclRlc3QsIENvbW1lbnRzKQotewotICAgIGNv
bnN0IGNoYXIqIHN0ciA9ICIvKmZvbyovIgotICAgICAgICAgICAgICAgICAgICAgICIjIgotICAg
ICAgICAgICAgICAgICAgICAgICIvKmZvbyovIgotICAgICAgICAgICAgICAgICAgICAgICJlcnJv
ciIKLSAgICAgICAgICAgICAgICAgICAgICAiLypmb28qLyIKLSAgICAgICAgICAgICAgICAgICAg
ICAiZm9vIgotICAgICAgICAgICAgICAgICAgICAgICIvKmZvbyovIgotICAgICAgICAgICAgICAg
ICAgICAgICJiYXIiCi0gICAgICAgICAgICAgICAgICAgICAgIi8qZm9vKi8iCi0gICAgICAgICAg
ICAgICAgICAgICAgIi8vZm9vIgotICAgICAgICAgICAgICAgICAgICAgICJcbiI7Ci0gICAgY29u
c3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iOwotCi0gICAgdXNpbmcgdGVzdGluZzo6XzsKLSAgICBF
WFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwKLSAgICAgICAgICAgICAgICBoYW5kbGVFcnJv
cihwcDo6U291cmNlTG9jYXRpb24oMCwgMSksICIgZm9vIGJhciIpKTsKLSAgICAvLyBObyBlcnJv
ciBvciB3YXJuaW5nLgotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQoXywgXywg
XykpLlRpbWVzKDApOwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVT
VF9GKEVycm9yVGVzdCwgTWlzc2luZ05ld2xpbmUpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0g
IiNlcnJvciBmb28iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIiI7Ci0KLSAgICB1c2lu
ZyB0ZXN0aW5nOjpfOwotICAgIC8vIERpcmVjdGl2ZSBzdWNjZXNzZnVsbHkgcGFyc2VkLgotICAg
IEVYUEVDVF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVyLAotICAgICAgICAgICAgICAgIGhhbmRsZUVy
cm9yKHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgIiBmb28iKSk7Ci0gICAgLy8gRXJyb3IgcmVw
b3J0ZWQgYWJvdXQgRU9GLgotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQocHA6
OkRpYWdub3N0aWNzOjpQUF9FT0ZfSU5fRElSRUNUSVZFLCBfLCBfKSk7Ci0KLSAgICBwcmVwcm9j
ZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9leHRlbnNpb25fdGVzdC5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2V4dGVuc2lv
bl90ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY4Y2E0OTgyNjg5MDVk
MWU0YTdiMjVjNTY1YmM3OTJjYjQ3ZmY5Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJv
Y2Vzc29yX3Rlc3RzL2V4dGVuc2lvbl90ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiAr
MCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgIlByZXByb2Nlc3NvclRlc3QuaCIKLSNp
bmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCIKLQotY2xhc3MgRXh0ZW5zaW9u
VGVzdCA6IHB1YmxpYyBQcmVwcm9jZXNzb3JUZXN0Ci17Ci19OwotCi1URVNUX0YoRXh0ZW5zaW9u
VGVzdCwgVmFsaWQpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNleHRlbnNpb24gZm9vIDog
YmFyXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIjsKLQotICAgIHVzaW5nIHRl
c3Rpbmc6Ol87Ci0gICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRsZXIsCi0gICAgICAgICAg
ICAgICAgaGFuZGxlRXh0ZW5zaW9uKHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgImZvbyIsICJi
YXIiKSk7Ci0gICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KLSAgICBFWFBFQ1RfQ0FMTChtRGlh
Z25vc3RpY3MsIHByaW50KF8sIF8sIF8pKS5UaW1lcygwKTsKLQotICAgIHByZXByb2Nlc3Moc3Ry
LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihFeHRlbnNpb25UZXN0LCBDb21tZW50cykKLXsKLSAg
ICBjb25zdCBjaGFyKiBzdHIgPSAiLypmb28qLyIKLSAgICAgICAgICAgICAgICAgICAgICAiIyIK
LSAgICAgICAgICAgICAgICAgICAgICAiLypmb28qLyIKLSAgICAgICAgICAgICAgICAgICAgICAi
ZXh0ZW5zaW9uIgotICAgICAgICAgICAgICAgICAgICAgICIvKmZvbyovIgotICAgICAgICAgICAg
ICAgICAgICAgICJmb28iCi0gICAgICAgICAgICAgICAgICAgICAgIi8qZm9vKi8iCi0gICAgICAg
ICAgICAgICAgICAgICAgIjoiCi0gICAgICAgICAgICAgICAgICAgICAgIi8qZm9vKi8iCi0gICAg
ICAgICAgICAgICAgICAgICAgImJhciIKLSAgICAgICAgICAgICAgICAgICAgICAiLypmb28qLyIK
LSAgICAgICAgICAgICAgICAgICAgICAiLy9mb28iCi0gICAgICAgICAgICAgICAgICAgICAgIlxu
IjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiI7Ci0KLSAgICB1c2luZyB0ZXN0aW5n
OjpfOwotICAgIEVYUEVDVF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVyLAotICAgICAgICAgICAgICAg
IGhhbmRsZUV4dGVuc2lvbihwcDo6U291cmNlTG9jYXRpb24oMCwgMSksICJmb28iLCAiYmFyIikp
OwotICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcuCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0
aWNzLCBwcmludChfLCBfLCBfKSkuVGltZXMoMCk7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhw
ZWN0ZWQpOwotfQotCi1URVNUX0YoRXh0ZW5zaW9uVGVzdCwgTWlzc2luZ05ld2xpbmUpCi17Ci0g
ICAgY29uc3QgY2hhciogc3RyID0gIiNleHRlbnNpb24gZm9vIDogYmFyIjsKLSAgICBjb25zdCBj
aGFyKiBleHBlY3RlZCA9ICIiOwotCi0gICAgdXNpbmcgdGVzdGluZzo6XzsKLSAgICAvLyBEaXJl
Y3RpdmUgc3VjY2Vzc2Z1bGx5IHBhcnNlZC4KLSAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFu
ZGxlciwKLSAgICAgICAgICAgICAgICBoYW5kbGVFeHRlbnNpb24ocHA6OlNvdXJjZUxvY2F0aW9u
KDAsIDEpLCAiZm9vIiwgImJhciIpKTsKLSAgICAvLyBFcnJvciByZXBvcnRlZCBhYm91dCBFT0Yu
Ci0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQ
X0VPRl9JTl9ESVJFQ1RJVkUsIF8sIF8pKTsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3Rl
ZCk7Ci19Ci0KLVRFU1RfRihFeHRlbnNpb25UZXN0LCBFeHRlbnNpb25BZnRlck5vblByZVByb2Nl
c3NvclRva2VuRVNTTDEpCi17Ci0gICAgY29uc3QgY2hhciAqc3RyID0gImludCBiYXogPSAxO1xu
IgotICAgICAgICAgICAgICAgICAgICAgICIjZXh0ZW5zaW9uIGZvbyA6IGJhclxuIjsKLSAgICBj
b25zdCBjaGFyICpleHBlY3RlZCA9ICJpbnQgYmF6ID0gMTtcblxuIjsKLQotICAgIHVzaW5nIHRl
c3Rpbmc6Ol87Ci0gICAgLy8gRGlyZWN0aXZlIHN1Y2Nlc3NmdWxseSBwYXJzZWQuCi0gICAgRVhQ
RUNUX0NBTEwobURpcmVjdGl2ZUhhbmRsZXIsCi0gICAgICAgIGhhbmRsZUV4dGVuc2lvbihwcDo6
U291cmNlTG9jYXRpb24oMCwgMiksICJmb28iLCAiYmFyIikpOwotICAgIC8vIEV4cGVjdCBhIHdh
cm5pbmcgYWJvdXQgZXh0ZW5zaW9uIHByYWdtYXMgYWZ0ZXIgbm9uLXByZXByb2Nlc3NvciB0b2tl
bnMuCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6
OlBQX05PTl9QUF9UT0tFTl9CRUZPUkVfRVhURU5TSU9OX0VTU0wxLCBfLCBfKSk7Ci0KLSAgICBw
cmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRXh0ZW5zaW9uVGVzdCwgRXh0
ZW5zaW9uQWZ0ZXJOb25QcmVQcm9jZXNzb3JUb2tlbkVTU0wzKQotewotICAgIGNvbnN0IGNoYXIg
KnN0ciA9ICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiaW50IGJh
eiA9IDE7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNleHRlbnNpb24gZm9vIDogYmFyXG4i
OwotICAgIGNvbnN0IGNoYXIgKmV4cGVjdGVkID0gIlxuaW50IGJheiA9IDE7XG5cbiI7Ci0KLSAg
ICB1c2luZyB0ZXN0aW5nOjpfOwotICAgIC8vIERpcmVjdGl2ZSBzdWNjZXNzZnVsbHkgcGFyc2Vk
LgotICAgIEVYUEVDVF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVyLAotICAgICAgICBoYW5kbGVWZXJz
aW9uKHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgMzAwKSk7Ci0gICAgLy8gRXhwZWN0IGEgZXJy
b3IgYWJvdXQgZXh0ZW5zaW9uIHByYWdtYXMgYWZ0ZXIgbm9uLXByZXByb2Nlc3NvciB0b2tlbnMu
Ci0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQ
X05PTl9QUF9UT0tFTl9CRUZPUkVfRVhURU5TSU9OX0VTU0wzLCBfLCBfKSk7Ci0KLSAgICBwcmVw
cm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1zdHJ1Y3QgRXh0ZW5zaW9uVGVzdFBhcmFtCi17
Ci0gICAgY29uc3QgY2hhciogc3RyOwotICAgIHBwOjpEaWFnbm9zdGljczo6SUQgaWQ7Ci19Owot
Ci11c2luZyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U7Ci1jbGFzcyBJbnZhbGlkRXh0ZW5z
aW9uVGVzdCA6IHB1YmxpYyBFeHRlbnNpb25UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgV2l0aFBhcmFtSW50ZXJmYWNlPEV4dGVuc2lvblRlc3RQYXJhbT4KLXsKLX07
Ci0KLVRFU1RfUChJbnZhbGlkRXh0ZW5zaW9uVGVzdCwgSWRlbnRpZmllZCkKLXsKLSAgICBFeHRl
bnNpb25UZXN0UGFyYW0gcGFyYW0gPSBHZXRQYXJhbSgpOwotICAgIGNvbnN0IGNoYXIqIGV4cGVj
dGVkID0gIlxuIjsKLQotICAgIHVzaW5nIHRlc3Rpbmc6Ol87Ci0gICAgLy8gTm8gaGFuZGxlRXh0
ZW5zaW9uIGNhbGwuCi0gICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRsZXIsIGhhbmRsZUV4
dGVuc2lvbihfLCBfLCBfKSkuVGltZXMoMCk7Ci0gICAgLy8gSW52YWxpZCBleHRlbnNpb24gZGly
ZWN0aXZlIGNhbGwuCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChwYXJhbS5p
ZCwgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCBfKSk7Ci0KLSAgICBwcmVwcm9jZXNzKHBhcmFt
LnN0ciwgZXhwZWN0ZWQpOwotfQotCi1zdGF0aWMgY29uc3QgRXh0ZW5zaW9uVGVzdFBhcmFtIGtQ
YXJhbXNbXSA9IHsKLSAgICB7IiNleHRlbnNpb25cbiIsIHBwOjpEaWFnbm9zdGljczo6UFBfSU5W
QUxJRF9FWFRFTlNJT05fRElSRUNUSVZFfSwKLSAgICB7IiNleHRlbnNpb24gMVxuIiwgcHA6OkRp
YWdub3N0aWNzOjpQUF9JTlZBTElEX0VYVEVOU0lPTl9OQU1FfSwKLSAgICB7IiNleHRlbnNpb24g
Zm9vIGJhclxuIiwgcHA6OkRpYWdub3N0aWNzOjpQUF9VTkVYUEVDVEVEX1RPS0VOfSwKLSAgICB7
IiNleHRlbnNpb24gZm9vIDogXG4iLCBwcDo6RGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfRVhURU5T
SU9OX0RJUkVDVElWRX0sCi0gICAgeyIjZXh0ZW5zaW9uIGZvbyA6IDFcbiIsIHBwOjpEaWFnbm9z
dGljczo6UFBfSU5WQUxJRF9FWFRFTlNJT05fQkVIQVZJT1J9LAotICAgIHsiI2V4dGVuc2lvbiBm
b28gOiBiYXIgYmF6XG4iLCBwcDo6RGlhZ25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU59Ci19
OwotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQWxsLCBJbnZhbGlkRXh0ZW5zaW9uVGVzdCwgdGVz
dGluZzo6VmFsdWVzSW4oa1BhcmFtcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9pZGVudGlmaWVyX3Rlc3QuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9pZGVu
dGlmaWVyX3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzEyYjM4Y2Jh
YWU2ZjFhN2M4MGNjYmFiNGYyOGY0OGFlNWMxYjQ3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9w
cmVwcm9jZXNzb3JfdGVzdHMvaWRlbnRpZmllcl90ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDE2MiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgIlByZXByb2Nlc3NvclRlc3Qu
aCIKLSNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCIKLQotI2RlZmluZSBD
TE9TRURfUkFOR0UoeCwgeSkgdGVzdGluZzo6UmFuZ2UoeCwgc3RhdGljX2Nhc3Q8Y2hhcj4oKHkp
ICsgMSkpCi0KLWNsYXNzIElkZW50aWZpZXJUZXN0IDogcHVibGljIFByZXByb2Nlc3NvclRlc3QK
LXsKLXByb3RlY3RlZDoKLSAgICB2b2lkIGV4cGVjdElkZW50aWZpZXIoY29uc3Qgc3RkOjpzdHJp
bmcmIHN0cikKLSAgICB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGNzdHIgPSBzdHIuY19zdHIoKTsK
LSAgICAgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZjc3RyLCAwKSk7Ci0K
LSAgICAgICAgcHA6OlRva2VuIHRva2VuOwotICAgICAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9r
ZW4pOwotICAgICAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpJREVOVElGSUVSLCB0b2tlbi50eXBl
KTsKLSAgICAgICAgRVhQRUNUX0VRKHN0ciwgdG9rZW4udGV4dCk7Ci0gICAgfQotfTsKLQotY2xh
c3MgU2luZ2xlTGV0dGVySWRlbnRpZmllclRlc3QgOiBwdWJsaWMgSWRlbnRpZmllclRlc3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB0ZXN0aW5nOjpXaXRoUGFy
YW1JbnRlcmZhY2U8Y2hhcj4KLXsKLX07Ci0KLS8vIFRoaXMgdGVzdCBjb3ZlcnMgaWRlbnRpZmll
ciBuYW1lcyBvZiBmb3JtIFtfYS16QS1aXS4KLVRFU1RfUChTaW5nbGVMZXR0ZXJJZGVudGlmaWVy
VGVzdCwgSWRlbnRpZmllZCkKLXsKLSAgICBzdGQ6OnN0cmluZyBzdHIoMSwgR2V0UGFyYW0oKSk7
Ci0gICAgZXhwZWN0SWRlbnRpZmllcihzdHIpOwotfQotCi0vLyBUZXN0IHN0cmluZzogJ18nCi1J
TlNUQU5USUFURV9URVNUX0NBU0VfUChVbmRlcnNjb3JlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgU2luZ2xlTGV0dGVySWRlbnRpZmllclRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0aW5nOjpWYWx1ZXMoJ18nKSk7Ci0KLS8vIFRlc3Qgc3RyaW5nOiBbYS16XQotSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoYV96LAotICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlTGV0dGVy
SWRlbnRpZmllclRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBDTE9TRURfUkFOR0UoJ2En
LCAneicpKTsKLQotLy8gVGVzdCBzdHJpbmc6IFtBLVpdCi1JTlNUQU5USUFURV9URVNUX0NBU0Vf
UChBX1osCi0gICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVMZXR0ZXJJZGVudGlmaWVyVGVz
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5HRSgnQScsICdaJykpOwotCi10
eXBlZGVmIHN0ZDo6dHIxOjp0dXBsZTxjaGFyLCBjaGFyPiBJZGVudGlmaWVyUGFyYW1zOwotY2xh
c3MgRG91YmxlTGV0dGVySWRlbnRpZmllclRlc3QgOgotICAgIHB1YmxpYyBJZGVudGlmaWVyVGVz
dCwKLSAgICBwdWJsaWMgdGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPElkZW50aWZpZXJQYXJh
bXM+Ci17Ci19OwotCi0vLyBUaGlzIHRlc3QgY292ZXJzIGlkZW50aWZpZXIgbmFtZXMgb2YgZm9y
bSBbX2EtekEtWl1bX2EtekEtWjAtOV0uCi1URVNUX1AoRG91YmxlTGV0dGVySWRlbnRpZmllclRl
c3QsIElkZW50aWZpZWQpCi17Ci0gICAgc3RkOjpzdHJpbmcgc3RyOwotICAgIHN0ci5wdXNoX2Jh
Y2soc3RkOjp0cjE6OmdldDwwPihHZXRQYXJhbSgpKSk7Ci0gICAgc3RyLnB1c2hfYmFjayhzdGQ6
OnRyMTo6Z2V0PDE+KEdldFBhcmFtKCkpKTsKLQotICAgIGV4cGVjdElkZW50aWZpZXIoc3RyKTsK
LX0KLQotLy8gVGVzdCBzdHJpbmc6ICJfXyIKLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFVuZGVy
c2NvcmVfVW5kZXJzY29yZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIERvdWJsZUxldHRlcklk
ZW50aWZpZXJUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZSh0
ZXN0aW5nOjpWYWx1ZXMoJ18nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdGluZzo6VmFsdWVzKCdfJykpKTsKLQotLy8gVGVzdCBzdHJpbmc6ICJfIlthLXpd
Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChVbmRlcnNjb3JlX2FfeiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIERvdWJsZUxldHRlcklkZW50aWZpZXJUZXN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdGluZzo6Q29tYmluZSh0ZXN0aW5nOjpWYWx1ZXMoJ18nKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xPU0VEX1JBTkdFKCdhJywgJ3onKSkpOwot
Ci0vLyBUZXN0IHN0cmluZzogIl8iW0EtWl0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFVuZGVy
c2NvcmVfQV9aLAotICAgICAgICAgICAgICAgICAgICAgICAgRG91YmxlTGV0dGVySWRlbnRpZmll
clRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKHRlc3Rpbmc6
OlZhbHVlcygnXycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
TE9TRURfUkFOR0UoJ0EnLCAnWicpKSk7Ci0KLS8vIFRlc3Qgc3RyaW5nOiAiXyJbMC05XQotSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoVW5kZXJzY29yZV8wXzksCi0gICAgICAgICAgICAgICAgICAg
ICAgICBEb3VibGVMZXR0ZXJJZGVudGlmaWVyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3Rpbmc6OkNvbWJpbmUodGVzdGluZzo6VmFsdWVzKCdfJyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5HRSgnMCcsICc5JykpKTsKLQotLy8g
VGVzdCBzdHJpbmc6IFthLXpdIl8iCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChhX3pfVW5kZXJz
Y29yZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIERvdWJsZUxldHRlcklkZW50aWZpZXJUZXN0
LAotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZShDTE9TRURfUkFOR0Uo
J2EnLCAneicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
aW5nOjpWYWx1ZXMoJ18nKSkpOwotCi0vLyBUZXN0IHN0cmluZzogW2Etel1bYS16XQotSU5TVEFO
VElBVEVfVEVTVF9DQVNFX1AoYV96X2FfeiwKLSAgICAgICAgICAgICAgICAgICAgICAgIERvdWJs
ZUxldHRlcklkZW50aWZpZXJUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6
Q29tYmluZShDTE9TRURfUkFOR0UoJ2EnLCAneicpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDTE9TRURfUkFOR0UoJ2EnLCAneicpKSk7Ci0KLS8vIFRlc3Qgc3Ry
aW5nOiBbYS16XVtBLVpdCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChhX3pfQV9aLAotICAgICAg
ICAgICAgICAgICAgICAgICAgRG91YmxlTGV0dGVySWRlbnRpZmllclRlc3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKENMT1NFRF9SQU5HRSgnYScsICd6JyksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5HRSgnQScs
ICdaJykpKTsKLQotLy8gVGVzdCBzdHJpbmc6IFthLXpdWzAtOV0KLUlOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKGFfel8wXzksCi0gICAgICAgICAgICAgICAgICAgICAgICBEb3VibGVMZXR0ZXJJZGVu
dGlmaWVyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUoQ0xP
U0VEX1JBTkdFKCdhJywgJ3onKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ0xPU0VEX1JBTkdFKCcwJywgJzknKSkpOwotCi0vLyBUZXN0IHN0cmluZzogW0EtWl0i
XyIKLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFfWl9VbmRlcnNjb3JlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgRG91YmxlTGV0dGVySWRlbnRpZmllclRlc3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKENMT1NFRF9SQU5HRSgnQScsICdaJyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlcygnXycpKSk7
Ci0KLS8vIFRlc3Qgc3RyaW5nOiBbQS1aXVthLXpdCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChB
X1pfYV96LAotICAgICAgICAgICAgICAgICAgICAgICAgRG91YmxlTGV0dGVySWRlbnRpZmllclRl
c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKENMT1NFRF9SQU5H
RSgnQScsICdaJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENM
T1NFRF9SQU5HRSgnYScsICd6JykpKTsKLQotLy8gVGVzdCBzdHJpbmc6IFtBLVpdW0EtWl0KLUlO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFfWl9BX1osCi0gICAgICAgICAgICAgICAgICAgICAgICBE
b3VibGVMZXR0ZXJJZGVudGlmaWVyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rp
bmc6OkNvbWJpbmUoQ0xPU0VEX1JBTkdFKCdBJywgJ1onKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ0xPU0VEX1JBTkdFKCdBJywgJ1onKSkpOwotCi0vLyBUZXN0
IHN0cmluZzogW0EtWl1bMC05XQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQV9aXzBfOSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIERvdWJsZUxldHRlcklkZW50aWZpZXJUZXN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZShDTE9TRURfUkFOR0UoJ0EnLCAnWicp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTE9TRURfUkFOR0Uo
JzAnLCAnOScpKSk7Ci0KLS8vIFRoZSB0ZXN0cyBhYm92ZSBjb3ZlciBvbmUtbGV0dGVyIGFuZCB2
YXJpb3VzIGNvbWJpbmF0aW9ucyBvZiB0d28tbGV0dGVyCi0vLyBpZGVudGlmaWVyIG5hbWVzLiBU
aGlzIHRlc3QgY292ZXJzIGFsbCBjaGFyYWN0ZXJzIGluIGEgc2luZ2xlIHN0cmluZy4KLVRFU1Rf
RihJZGVudGlmaWVyVGVzdCwgQWxsTGV0dGVycykKLXsKLSAgICBzdGQ6OnN0cmluZyBzdHI7Ci0g
ICAgZm9yIChjaGFyIGMgPSAnYSc7IGMgPD0gJ3onOyArK2MpCi0gICAgICAgIHN0ci5wdXNoX2Jh
Y2soYyk7Ci0KLSAgICBzdHIucHVzaF9iYWNrKCdfJyk7Ci0KLSAgICBmb3IgKGNoYXIgYyA9ICdB
JzsgYyA8PSAnWic7ICsrYykKLSAgICAgICAgc3RyLnB1c2hfYmFjayhjKTsKLQotICAgIHN0ci5w
dXNoX2JhY2soJ18nKTsKLQotICAgIGZvciAoY2hhciBjID0gJzAnOyBjIDw9ICc5JzsgKytjKQot
ICAgICAgICBzdHIucHVzaF9iYWNrKGMpOwotCi0gICAgZXhwZWN0SWRlbnRpZmllcihzdHIpOwot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nl
c3Nvcl90ZXN0cy9pZl90ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9wcmVwcm9jZXNzb3JfdGVzdHMvaWZfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDc5NDBiNTY0YTVkMDQ3ZjQ0MzViMzgzZjBjOWExY2VhOGFlNGVkZjguLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9pZl90ZXN0LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDEwNDggKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJQcmVwcm9j
ZXNzb3JUZXN0LmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgiCi0K
LWNsYXNzIElmVGVzdCA6IHB1YmxpYyBQcmVwcm9jZXNzb3JUZXN0Ci17Ci19OwotCi1URVNUX0Yo
SWZUZXN0LCBJZl8wKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICJwYXNzXzFcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAiI2lmIDBcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiZmFpbFxu
IgotICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAicGFzc18yXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gInBhc3NfMVxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInBhc3NfMlxuIjsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19
Ci0KLVRFU1RfRihJZlRlc3QsIElmXzEpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gInBhc3Nf
MVxuIgotICAgICAgICAgICAgICAgICAgICAgICIjaWYgMVxuIgotICAgICAgICAgICAgICAgICAg
ICAgICJwYXNzXzJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgInBhc3NfM1xuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJw
YXNzXzFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJwYXNzXzJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzNcbiI7Ci0KLSAgICBwcmVwcm9jZXNz
KHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoSWZUZXN0LCBJZl8wX0Vsc2UpCi17Ci0gICAg
Y29uc3QgY2hhciogc3RyID0gInBhc3NfMVxuIgotICAgICAgICAgICAgICAgICAgICAgICIjaWYg
MFxuIgotICAgICAgICAgICAgICAgICAgICAgICJmYWlsXG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgIiNlbHNlXG4iCi0gICAgICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgotICAgICAgICAg
ICAgICAgICAgICAgICIjZW5kaWZcbiIKLSAgICAgICAgICAgICAgICAgICAgICAicGFzc18zXG4i
OwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gInBhc3NfMVxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInBh
c3NfMlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInBhc3NfM1xuIjsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7
Ci19Ci0KLVRFU1RfRihJZlRlc3QsIElmXzFfRWxzZSkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIg
PSAicGFzc18xXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNpZiAxXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgInBhc3NfMlxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgot
ICAgICAgICAgICAgICAgICAgICAgICJmYWlsXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNl
bmRpZlxuIgotICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzNcbiI7Ci0gICAgY29uc3QgY2hh
ciogZXhwZWN0ZWQgPSAicGFzc18xXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFz
c18zXG4iOwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKElm
VGVzdCwgSWZfMF9FbGlmKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICJwYXNzXzFcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAiI2lmIDBcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiZmFp
bF8xXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbGlmIDBcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAiZmFpbF8yXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbGlmIDFcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNl
bGlmIDFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiZmFpbF8zXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgIiNlbHNlXG4iCi0gICAgICAgICAgICAgICAgICAgICAgImZhaWxfNFxuIgotICAg
ICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiIKLSAgICAgICAgICAgICAgICAgICAgICAicGFz
c18zXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gInBhc3NfMVxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInBhc3NfMlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NfM1xuIjsK
LQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihJZlRlc3QsIElm
XzFfRWxpZikKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAicGFzc18xXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgIiNpZiAxXG4iCi0gICAgICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgot
ICAgICAgICAgICAgICAgICAgICAgICIjZWxpZiAwXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ImZhaWxfMVxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxpZiAxXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgImZhaWxfMlxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgot
ICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzRcbiIKLSAgICAgICAgICAgICAgICAgICAgICAi
I2VuZGlmXG4iCi0gICAgICAgICAgICAgICAgICAgICAgInBhc3NfM1xuIjsKLSAgICBjb25zdCBj
aGFyKiBleHBlY3RlZCA9ICJwYXNzXzFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzJcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJwYXNzXzNcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0
ZWQpOwotfQotCi1URVNUX0YoSWZUZXN0LCBJZl9FbGlmX0Vsc2UpCi17Ci0gICAgY29uc3QgY2hh
ciogc3RyID0gInBhc3NfMVxuIgotICAgICAgICAgICAgICAgICAgICAgICIjaWYgMFxuIgotICAg
ICAgICAgICAgICAgICAgICAgICJmYWlsXzFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2Vs
aWYgMFxuIgotICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzJcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAiI2VsaWYgMFxuIgotICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzNcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKLSAgICAgICAgICAgICAgICAgICAgICAicGFz
c18yXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICJwYXNzXzNcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAicGFzc18xXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc18zXG4i
OwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKElmVGVzdCwg
SWZfMF9OZXN0ZWQpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gInBhc3NfMVxuIgotICAgICAg
ICAgICAgICAgICAgICAgICIjaWYgMFxuIgotICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzFc
biIKLSAgICAgICAgICAgICAgICAgICAgICAiI2lmIDFcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAiZmFpbF8yXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgImZhaWxfM1xuIgotICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKLSAgICAgICAgICAgICAgICAgICAgICAi
cGFzc18yXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIgotICAgICAgICAgICAg
ICAgICAgICAgICJwYXNzXzNcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAicGFzc18x
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAicGFzc18yXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc18zXG4iOwotCi0gICAgcHJlcHJvY2Vzcyhz
dHIsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKElmVGVzdCwgSWZfMV9OZXN0ZWQpCi17Ci0gICAg
Y29uc3QgY2hhciogc3RyID0gInBhc3NfMVxuIgotICAgICAgICAgICAgICAgICAgICAgICIjaWYg
MVxuIgotICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAiI2lmIDFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAicGFzc18zXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgIiNlbHNlXG4iCi0gICAgICAgICAgICAgICAgICAgICAgImZhaWxfMVxu
IgotICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAiI2Vsc2VcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiZmFpbF8yXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgIiNlbmRpZlxuIgotICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzRcbiI7
Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAicGFzc18xXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAicGFzc18zXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAicGFzc180XG4iOwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsK
LX0KLQotVEVTVF9GKElmVGVzdCwgT3BlcmF0b3JQcmVjZWRlbmNlKQotewotICAgIGNvbnN0IGNo
YXIqIHN0ciA9ICIjaWYgMSArIDIgKiAzICsgLSAoMjYgJSAxNyAtICsgNCAvIDIpXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgImZhaWxfMVxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxz
ZVxuIgotICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzFcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAiI2VuZGlmXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxu
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NfMVxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIjsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0K
LVRFU1RfRihJZlRlc3QsIE9wZXJhdG9yRGVmaW5lZCkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIg
PSAiI2lmIGRlZmluZWQgZm9vXG4iCi0gICAgICAgICAgICAgICAgICAgICAgImZhaWxfMVxuIgot
ICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgotICAgICAgICAgICAgICAgICAgICAgICJw
YXNzXzFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgIiNkZWZpbmUgZm9vXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNpZiBkZWZp
bmVkKGZvbylcbiIKLSAgICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgIiNlbHNlXG4iCi0gICAgICAgICAgICAgICAgICAgICAgImZhaWxfMlxuIgot
ICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiIKLSAgICAgICAgICAgICAgICAgICAgICAi
I3VuZGVmIGZvb1xuIgotICAgICAgICAgICAgICAgICAgICAgICIjaWYgZGVmaW5lZCAoIGZvbyAp
IFxuIgotICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzNcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAiI2Vsc2VcbiIKLSAgICAgICAgICAgICAgICAgICAgICAicGFzc18zXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzFcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJwYXNzXzJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzNc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKHN0
ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoSWZUZXN0LCBPcGVyYXRvckVRKQotewotICAgIGNv
bnN0IGNoYXIqIHN0ciA9ICIjaWYgNCAtIDEgPT0gMiArIDFcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAicGFzc1xuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgotICAgICAgICAg
ICAgICAgICAgICAgICJmYWlsXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsK
LSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJwYXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iOwot
Ci0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKElmVGVzdCwgT3Bl
cmF0b3JORSkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmIDEgIT0gMlxuIgotICAgICAg
ICAgICAgICAgICAgICAgICJwYXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgImZhaWxcbiIKLSAgICAgICAgICAgICAgICAgICAgICAi
I2VuZGlmXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInBhc3NcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0Yo
SWZUZXN0LCBPcGVyYXRvckxlc3MpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNpZiAxIDwg
MlxuIgotICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgIiNlbHNlXG4iCi0gICAgICAgICAgICAgICAgICAgICAgImZhaWxcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAiI2VuZGlmXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwot
fQotCi1URVNUX0YoSWZUZXN0LCBPcGVyYXRvckdyZWF0ZXIpCi17Ci0gICAgY29uc3QgY2hhciog
c3RyID0gIiNpZiAyID4gMVxuIgotICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCi0gICAgICAgICAgICAgICAgICAgICAgImZhaWxc
biIKLSAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4
cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKHN0
ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoSWZUZXN0LCBPcGVyYXRvckxFKQotewotICAgIGNv
bnN0IGNoYXIqIHN0ciA9ICIjaWYgMSA8PSAyXG4iCi0gICAgICAgICAgICAgICAgICAgICAgInBh
c3NfMVxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgotICAgICAgICAgICAgICAg
ICAgICAgICJmYWlsXzFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgIiNpZiAyIDw9IDJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAi
cGFzc18yXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgImZhaWxfMlxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7Ci0g
ICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAicGFzc18xXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAicGFzc18yXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iOwot
Ci0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKElmVGVzdCwgT3Bl
cmF0b3JHRSkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmIDIgPj0gMVxuIgotICAgICAg
ICAgICAgICAgICAgICAgICJwYXNzXzFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2Vc
biIKLSAgICAgICAgICAgICAgICAgICAgICAiZmFpbF8xXG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgIiNlbmRpZlxuIgotICAgICAgICAgICAgICAgICAgICAgICIjaWYgMiA+PSAyXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxz
ZVxuIgotICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAiI2VuZGlmXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInBhc3NfMVxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIjsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0K
LVRFU1RfRihJZlRlc3QsIE9wZXJhdG9yQml0d2lzZU9SKQotewotICAgIGNvbnN0IGNoYXIqIHN0
ciA9ICIjaWYgKDB4YWFhYWFhYWEgfCAweDU1NTU1NTU1KSA9PSAweGZmZmZmZmZmXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgInBhc3NcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2Vc
biIKLSAgICAgICAgICAgICAgICAgICAgICAiZmFpbFxuIgotICAgICAgICAgICAgICAgICAgICAg
ICIjZW5kaWZcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAicGFzc1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxu
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlxuIjsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRFU1Rf
RihJZlRlc3QsIE9wZXJhdG9yQml0d2lzZUFORCkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAi
I2lmICgweGFhYWFhYWEgJiAweDU1NTU1NTUpID09IDBcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAicGFzc1xuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgotICAgICAgICAgICAg
ICAgICAgICAgICJmYWlsXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKLSAg
ICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwYXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iOwotCi0g
ICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKElmVGVzdCwgT3BlcmF0
b3JCaXR3aXNlWE9SKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgKDB4YWFhYWFhYSBe
IDB4NTU1NTU1NSkgPT0gMHhmZmZmZmZmXG4iCi0gICAgICAgICAgICAgICAgICAgICAgInBhc3Nc
biIKLSAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAiZmFpbFxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7Ci0gICAgY29uc3Qg
Y2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc1xu
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKLQotICAgIHByZXBy
b2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihJZlRlc3QsIE9wZXJhdG9yQml0d2lz
ZUNvbXBsZW1lbnQpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNpZiAofiAweGRlYWRiZWVm
KSA9PSAtMzczNTkyODU2MFxuIgotICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCi0gICAgICAgICAgICAgICAgICAgICAgImZhaWxc
biIKLSAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4
cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKHN0
ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoSWZUZXN0LCBPcGVyYXRvckxlZnQpCi17Ci0gICAg
Y29uc3QgY2hhciogc3RyID0gIiNpZiAoMSA8PCAxMikgPT0gNDA5NlxuIgotICAgICAgICAgICAg
ICAgICAgICAgICJwYXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgImZhaWxcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlm
XG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInBhc3NcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJc
biI7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoSWZUZXN0
LCBPcGVyYXRvclJpZ2h0KQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgKDMxNzYyID4+
IDgpID09IDEyNFxuIgotICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgIiNlbHNlXG4iCi0gICAgICAgICAgICAgICAgICAgICAgImZhaWxcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVk
ID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhw
ZWN0ZWQpOwotfQotCi1URVNUX0YoSWZUZXN0LCBFeHByZXNzaW9uV2l0aE1hY3JvcykKLXsKLSAg
ICBjb25zdCBjaGFyKiBzdHIgPSAiI2RlZmluZSBvbmUgMVxuIgotICAgICAgICAgICAgICAgICAg
ICAgICIjZGVmaW5lIHR3byAyXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgdGhy
ZWUgM1xuIgotICAgICAgICAgICAgICAgICAgICAgICIjaWYgb25lICsgdHdvID09IHRocmVlXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKLSAgICAgICAgICAgICAgICAgICAgICAi
I2Vsc2VcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiZmFpbFxuIgotICAgICAgICAgICAgICAg
ICAgICAgICIjZW5kaWZcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAicGFzc1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxu
IjsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihJZlRlc3Qs
IEp1bmtJbnNpZGVFeGNsdWRlZEJsb2NrSWdub3JlZCkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIg
PSAiI2lmIDBcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiZm9vICFAIyQlXiYqIC4xYmFyXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgIiNmb29cbiIKLSAgICAgICAgICAgICAgICAgICAgICAi
I2lmIGJhclxuIgotICAgICAgICAgICAgICAgICAgICAgICJmYWlsXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgIiNlbmRpZlxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgotICAg
ICAgICAgICAgICAgICAgICAgICJwYXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbmRp
ZlxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAiXG4iOwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsK
LX0KLQotVEVTVF9GKElmVGVzdCwgSWZkZWYpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNk
ZWZpbmUgZm9vXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNpZmRlZiBmb29cbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAicGFzc18xXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbHNl
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgImZhaWxfMVxuIgotICAgICAgICAgICAgICAgICAg
ICAgICIjZW5kaWZcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI3VuZGVmIGZvb1xuIgotICAg
ICAgICAgICAgICAgICAgICAgICIjaWZkZWYgZm9vXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ImZhaWxfMlxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgotICAgICAgICAgICAg
ICAgICAgICAgICJwYXNzXzJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOwot
ICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NfMVxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIjsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihJ
ZlRlc3QsIElmbmRlZikKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2RlZmluZSBmb29cbiIK
LSAgICAgICAgICAgICAgICAgICAgICAiI2lmbmRlZiBmb29cbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAiZmFpbF8xXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgInBhc3NfMVxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZc
biIKLSAgICAgICAgICAgICAgICAgICAgICAiI3VuZGVmIGZvb1xuIgotICAgICAgICAgICAgICAg
ICAgICAgICIjaWZuZGVmIGZvb1xuIgotICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzJcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKLSAgICAgICAgICAgICAgICAgICAgICAi
ZmFpbF8yXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKLSAgICBjb25zdCBj
aGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzFcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwYXNzXzJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7Ci0K
LSAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoSWZUZXN0LCBNaXNz
aW5nRXhwcmVzc2lvbikKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29y
LmluaXQoMSwgJnN0ciwgMCkpOwotCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAotICAg
ICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9FWFBSRVNTSU9O
LAotICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAic3ludGF4IGVycm9yIikpOwotCi0gICAgcHA6OlRva2VuIHRva2Vu
OwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci19Ci0KLVRFU1RfRihJZlRlc3QsIERp
dmlzaW9uQnlaZXJvKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgMSAvICgzIC0gKDEg
KyAyKSlcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOwotICAgIEFTU0VSVF9U
UlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7Ci0KLSAgICBFWFBFQ1RfQ0FMTCht
RGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9E
SVZJU0lPTl9CWV9aRVJPLAotICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlv
bigwLCAxKSwgIjEgLyAwIikpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9j
ZXNzb3IubGV4KCZ0b2tlbik7Ci19Ci0KLVRFU1RfRihJZlRlc3QsIE1vZHVsb0J5WmVybykKLXsK
LSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmIDEgJSAoMyAtICgxICsgMikpXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29y
LmluaXQoMSwgJnN0ciwgMCkpOwotCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAotICAg
ICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfRElWSVNJT05fQllfWkVSTywK
LSAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksICIxICUgMCIp
KTsKLQotICAgIHBwOjpUb2tlbiB0b2tlbjsKLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4p
OwotfQotCi1URVNUX0YoSWZUZXN0LCBEZWNJbnRlZ2VyT3ZlcmZsb3cpCi17Ci0gICAgY29uc3Qg
Y2hhciogc3RyID0gIiNpZiA0Mjk0OTY3Mjk2XG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNl
bmRpZlxuIjsKLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgMCkp
OwotCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgIHByaW50
KHBwOjpEaWFnbm9zdGljczo6UFBfSU5URUdFUl9PVkVSRkxPVywKLSAgICAgICAgICAgICAgICAg
ICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksICI0Mjk0OTY3Mjk2IikpOwotCi0gICAgcHA6
OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci19Ci0KLVRFU1Rf
RihJZlRlc3QsIE9jdEludGVnZXJPdmVyZmxvdykKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAi
I2lmIDA3Nzc3Nzc3Nzc3N1xuIgotICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7Ci0g
ICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKLQotICAgIEVY
UEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25v
c3RpY3M6OlBQX0lOVEVHRVJfT1ZFUkZMT1csCi0gICAgICAgICAgICAgICAgICAgICAgcHA6OlNv
dXJjZUxvY2F0aW9uKDAsIDEpLCAiMDc3Nzc3Nzc3Nzc3IikpOwotCi0gICAgcHA6OlRva2VuIHRv
a2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci19Ci0KLVRFU1RfRihJZlRlc3Qs
IEhleEludGVnZXJPdmVyZmxvdykKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmIDB4ZmZm
ZmZmZmZmXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKLSAgICBBU1NFUlRf
VFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgMCkpOwotCi0gICAgRVhQRUNUX0NBTEwo
bURpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBf
SU5URUdFUl9PVkVSRkxPVywKLSAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRp
b24oMCwgMSksICIweGZmZmZmZmZmZiIpKTsKLQotICAgIHBwOjpUb2tlbiB0b2tlbjsKLSAgICBt
UHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotfQotCi1URVNUX0YoSWZUZXN0LCBVbmRlZmluZWRN
YWNybykKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmIFVOREVGSU5FRFxuIgotICAgICAg
ICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7Ci0gICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nv
ci5pbml0KDEsICZzdHIsIDApKTsKLQotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAg
ICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFMX1VORVhQ
RUNURURfVE9LRU4sCi0gICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAs
IDEpLAotICAgICAgICAgICAgICAgICAgICAgICJVTkRFRklORUQiKSk7Ci0KLSAgICBwcDo6VG9r
ZW4gdG9rZW47Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLX0KLQotVEVTVF9GKElm
VGVzdCwgSW52YWxpZEV4cHJlc3Npb25JZ25vcmVkRm9yRXhjbHVkZWRFbGlmKQotewotICAgIGNv
bnN0IGNoYXIqIHN0ciA9ICIjaWYgMVxuIgotICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgIiNlbGlmIFVOREVGSU5FRFxuIgotICAgICAgICAgICAg
ICAgICAgICAgICJmYWlsXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKLSAg
ICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwYXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iOwotCi0g
ICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KLSAgICB1c2luZyB0ZXN0aW5nOjpfOwotICAgIEVY
UEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQoXywgXywgXykpLlRpbWVzKDApOwotCi0gICAg
cHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKElmVGVzdCwgRWxzZVdpdGhv
dXRJZikKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2Vsc2VcbiI7Ci0gICAgQVNTRVJUX1RS
VUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKLQotICAgIEVYUEVDVF9DQUxMKG1E
aWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0NP
TkRJVElPTkFMX0VMU0VfV0lUSE9VVF9JRiwKLSAgICAgICAgICAgICAgICAgICAgICBwcDo6U291
cmNlTG9jYXRpb24oMCwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgImVsc2UiKSk7Ci0KLSAg
ICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLX0KLQot
VEVTVF9GKElmVGVzdCwgRWxpZldpdGhvdXRJZikKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAi
I2VsaWYgMVxuIjsKLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwg
MCkpOwotCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgIHBy
aW50KHBwOjpEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfRUxJRl9XSVRIT1VUX0lGLAotICAg
ICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAiZWxpZiIpKTsKLQotICAgIHBwOjpUb2tlbiB0b2tlbjsKLSAgICBtUHJlcHJv
Y2Vzc29yLmxleCgmdG9rZW4pOwotfQotCi1URVNUX0YoSWZUZXN0LCBFbmRpZldpdGhvdXRJZikK
LXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2VuZGlmXG4iOwotICAgIEFTU0VSVF9UUlVFKG1Q
cmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7Ci0KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25v
c3RpY3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9DT05ESVRJ
T05BTF9FTkRJRl9XSVRIT1VUX0lGLAotICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VM
b2NhdGlvbigwLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAiZW5kaWYiKSk7Ci0KLSAgICBw
cDo6VG9rZW4gdG9rZW47Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLX0KLQotVEVT
VF9GKElmVGVzdCwgRWxzZUFmdGVyRWxzZSkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lm
IDFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAiI2Vsc2VcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOwotICAgIEFT
U0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7Ci0KLSAgICBFWFBFQ1Rf
Q0FMTChtRGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNz
OjpQUF9DT05ESVRJT05BTF9FTFNFX0FGVEVSX0VMU0UsCi0gICAgICAgICAgICAgICAgICAgICAg
cHA6OlNvdXJjZUxvY2F0aW9uKDAsIDMpLAotICAgICAgICAgICAgICAgICAgICAgICJlbHNlIikp
OwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7
Ci19Ci0KLVRFU1RfRihJZlRlc3QsIEVsaWZBZnRlckVsc2UpCi17Ci0gICAgY29uc3QgY2hhciog
c3RyID0gIiNpZiAxXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgIiNlbGlmIDBcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlm
XG4iOwotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7Ci0K
LSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6
OkRpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9FTElGX0FGVEVSX0VMU0UsCi0gICAgICAgICAg
ICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDMpLAotICAgICAgICAgICAgICAgICAg
ICAgICJlbGlmIikpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3Iu
bGV4KCZ0b2tlbik7Ci19Ci0KLVRFU1RfRihJZlRlc3QsIFVudGVybWluYXRlZElmKQotewotICAg
IGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgMVxuIjsKLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vz
c29yLmluaXQoMSwgJnN0ciwgMCkpOwotCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAot
ICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfVU5U
RVJNSU5BVEVELAotICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAx
KSwKLSAgICAgICAgICAgICAgICAgICAgICAiaWYiKSk7Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47
Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLX0KLQotVEVTVF9GKElmVGVzdCwgVW50
ZXJtaW5hdGVkSWZkZWYpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNpZmRlZiBmb29cbiI7
Ci0gICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKLQotICAg
IEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBwcmludChwcDo6RGlh
Z25vc3RpY3M6OlBQX0NPTkRJVElPTkFMX1VOVEVSTUlOQVRFRCwKLSAgICAgICAgICAgICAgICAg
ICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgImlm
ZGVmIikpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0
b2tlbik7Ci19Ci0KLS8vIFRoZSBwcmVwcm9jZXNzb3Igb25seSBhbGxvd3Mgb25lIGV4cHJlc3Np
b24gdG8gZm9sbG93IGFuICNpZiBkaXJlY3RpdmUuCi0vLyBTdXBwbHlpbmcgdHdvIGludGVnZXIg
ZXhwcmVzc2lvbnMgc2hvdWxkIGJlIGFuIGVycm9yLgotVEVTVF9GKElmVGVzdCwgRXh0cmFJbnRF
eHByZXNzaW9uKQotewotICAgIGNvbnN0IGNoYXIgKnN0ciA9Ci0gICAgICAgICIjaWYgMSAxXG4i
Ci0gICAgICAgICIjZW5kaWZcbiI7Ci0gICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0
KDEsICZzdHIsIDApKTsKLQotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQocHA6
OkRpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RPS0VOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiMSIp
KTsKLQotICAgIHBwOjpUb2tlbiB0b2tlbjsKLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4p
OwotfQotCi0vLyBUaGUgcHJlcHJvY2Vzc29yIG9ubHkgYWxsb3dzIG9uZSBleHByZXNzaW9uIHRv
IGZvbGxvdyBhbiAjaWYgZGlyZWN0aXZlLgotLy8gU3VwcGx5aW5nIHR3byBleHByZXNzaW9ucyB3
aGVyZSBvbmUgdXNlcyBhIHByZXByb2Nlc3NvciBkZWZpbmUgc2hvdWxkIGJlIGFuIGVycm9yLgot
VEVTVF9GKElmVGVzdCwgRXh0cmFJZGVudGlmaWVyRXhwcmVzc2lvbikKLXsKLSAgICBjb25zdCBj
aGFyICpzdHIgPQotICAgICAgICAiI2RlZmluZSBvbmUgMVxuIgotICAgICAgICAiI2lmIDEgb25l
XG4iCi0gICAgICAgICIjZW5kaWZcbiI7Ci0gICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5p
bml0KDEsICZzdHIsIDApKTsKLQotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQo
cHA6OkRpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RPS0VOLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDIpLCAi
MSIpKTsKLQotICAgIHBwOjpUb2tlbiB0b2tlbjsKLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9r
ZW4pOwotfQotCi0vLyBEaXZpZGUgYnkgemVybyB0aGF0J3Mgbm90IGV2YWx1YXRlZCBiZWNhdXNl
IG9mIHNob3J0LWNpcmN1aXRpbmcgc2hvdWxkIG5vdCBjYXVzZSBhbiBlcnJvci4KLVRFU1RfRihJ
ZlRlc3QsIFNob3J0Q2lyY3VpdGVkRGl2aWRlQnlaZXJvKQotewotICAgIGNvbnN0IGNoYXIgKnN0
ciA9Ci0gICAgICAgICIjaWYgMSB8fCAoMiAvIDApXG4iCi0gICAgICAgICJwYXNzXG4iCi0gICAg
ICAgICIjZW5kaWZcbiI7Ci0gICAgY29uc3QgY2hhciAqZXhwZWN0ZWQgPQotICAgICAgICAiXG4i
Ci0gICAgICAgICJwYXNzXG4iCi0gICAgICAgICJcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwg
ZXhwZWN0ZWQpOwotfQotCi0vLyBVbmRlZmluZWQgaWRlbnRpZmllciB0aGF0J3Mgbm90IGV2YWx1
YXRlZCBiZWNhdXNlIG9mIHNob3J0LWNpcmN1aXRpbmcgc2hvdWxkIG5vdCBjYXVzZSBhbiBlcnJv
ci4KLVRFU1RfRihJZlRlc3QsIFNob3J0Q2lyY3VpdGVkVW5kZWZpbmVkKQotewotICAgIGNvbnN0
IGNoYXIgKnN0ciA9Ci0gICAgICAgICIjaWYgMSB8fCBVTkRFRklORURcbiIKLSAgICAgICAgInBh
c3NcbiIKLSAgICAgICAgIiNlbmRpZlxuIjsKLSAgICBjb25zdCBjaGFyICpleHBlY3RlZCA9Ci0g
ICAgICAgICJcbiIKLSAgICAgICAgInBhc3NcbiIKLSAgICAgICAgIlxuIjsKLQotICAgIHByZXBy
b2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLS8vIERlZmluZWQgb3BlcmF0b3IgcHJvZHVjZWQg
YnkgbWFjcm8gZXhwYW5zaW9uIGhhcyB1bmRlZmluZWQgYmVoYXZpb3IgYWNjb3JkaW5nIHRvIEMr
KyBzcGVjLAotLy8gd2hpY2ggdGhlIEdMU0wgc3BlYyByZWZlcmVuY2VzIChzZWUgQysrMTQgZHJh
ZnQgc3BlYyBzZWN0aW9uIDE2LjEuNCksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzCi0vLyBuZWVkZWQg
Zm9yIHBhc3NpbmcgZEVRUCB0ZXN0cywgd2hpY2ggZW5mb3JjZSBzdHJpY3RlciBjb21wYXRpYmls
aXR5IGJldHdlZW4gaW1wbGVtZW50YXRpb25zLgotVEVTVF9GKElmVGVzdCwgRGVmaW5lZE9wZXJh
dG9yVmFsaWRBZnRlck1hY3JvRXhwYW5zaW9uKQotewotICAgIGNvbnN0IGNoYXIgKnN0ciA9Ci0g
ICAgICAgICIjZGVmaW5lIGZvbyBkZWZpbmVkXG4iCi0gICAgICAgICIjaWYgIWZvbyBiYXJcbiIK
LSAgICAgICAgInBhc3NcbiIKLSAgICAgICAgIiNlbmRpZlxuIjsKLSAgICBBU1NFUlRfVFJVRSht
UHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgMCkpOwotCi0gICAgRVhQRUNUX0NBTEwobURpYWdu
b3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFMX1VORVhQRUNURURf
VE9LRU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9j
YXRpb24oMCwgMiksICJkZWZpbmVkIikpOwotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywg
cHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RPS0VOLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAs
IDIpLCAiYmFyIikpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3Iu
bGV4KCZ0b2tlbik7Ci19Ci0KLS8vIERlZmluZWQgb3BlcmF0b3IgcHJvZHVjZWQgYnkgbWFjcm8g
ZXhwYW5zaW9uIGhhcyB1bmRlZmluZWQgYmVoYXZpb3IgYWNjb3JkaW5nIHRvIEMrKyBzcGVjLAot
Ly8gd2hpY2ggdGhlIEdMU0wgc3BlYyByZWZlcmVuY2VzIChzZWUgQysrMTQgZHJhZnQgc3BlYyBz
ZWN0aW9uIDE2LjEuNCksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzCi0vLyBuZWVkZWQgZm9yIHBhc3Np
bmcgZEVRUCB0ZXN0cywgd2hpY2ggZW5mb3JjZSBzdHJpY3RlciBjb21wYXRpYmlsaXR5IGJldHdl
ZW4gaW1wbGVtZW50YXRpb25zLgotVEVTVF9GKElmVGVzdCwgVW50ZXJtaW5hdGVkRGVmaW5lZElu
TWFjcm8pCi17Ci0gICAgY29uc3QgY2hhciAqc3RyID0KLSAgICAgICAgIiNkZWZpbmUgZm9vIGRl
ZmluZWQoXG4iCi0gICAgICAgICIjaWYgZm9vXG4iCi0gICAgICAgICIjZW5kaWZcbiI7Ci0gICAg
QVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKLQotICAgIEVYUEVD
VF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9DT05ESVRJT05B
TF9VTkVYUEVDVEVEX1RPS0VOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHA6OlNvdXJjZUxvY2F0aW9uKDAsIDIpLCAiZGVmaW5lZCIpKTsKLSAgICBFWFBFQ1RfQ0FMTCht
RGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfVU5FWFBF
Q1RFRF9UT0tFTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3Vy
Y2VMb2NhdGlvbigwLCAyKSwgIigiKSk7Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgbVBy
ZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLX0KLQotLy8gRGVmaW5lZCBvcGVyYXRvciBwcm9kdWNl
ZCBieSBtYWNybyBleHBhbnNpb24gaGFzIHVuZGVmaW5lZCBiZWhhdmlvciBhY2NvcmRpbmcgdG8g
QysrIHNwZWMsCi0vLyB3aGljaCB0aGUgR0xTTCBzcGVjIHJlZmVyZW5jZXMgKHNlZSBDKysxNCBk
cmFmdCBzcGVjIHNlY3Rpb24gMTYuMS40KSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMKLS8vIG5lZWRl
ZCBmb3IgcGFzc2luZyBkRVFQIHRlc3RzLCB3aGljaCBlbmZvcmNlIHN0cmljdGVyIGNvbXBhdGli
aWxpdHkgYmV0d2VlbiBpbXBsZW1lbnRhdGlvbnMuCi1URVNUX0YoSWZUZXN0LCBVbnRlcm1pbmF0
ZWREZWZpbmVkSW5NYWNybzIpCi17Ci0gICAgY29uc3QgY2hhciAqc3RyID0KLSAgICAgICAgIiNk
ZWZpbmUgZm9vIGRlZmluZWQoYmFyXG4iCi0gICAgICAgICIjaWYgZm9vXG4iCi0gICAgICAgICIj
ZW5kaWZcbiI7Ci0gICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDAp
KTsKLQotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQocHA6OkRpYWdub3N0aWNz
OjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RPS0VOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDIpLCAiZGVmaW5lZCIpKTsKLSAg
ICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfQ09O
RElUSU9OQUxfVU5FWFBFQ1RFRF9UT0tFTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAyKSwgIigiKSk7Ci0KLSAgICBwcDo6VG9rZW4g
dG9rZW47Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLX0KLQotLy8gVW5kZWZpbmVk
IHNoaWZ0OiBuZWdhdGl2ZSBzaGlmdCBvZmZzZXQuCi1URVNUX0YoSWZUZXN0LCBCaXRTaGlmdExl
ZnRPcGVyYXRvck5lZ2F0aXZlT2Zmc2V0KQotewotICAgIGNvbnN0IGNoYXIgKnN0ciA9Ci0gICAg
ICAgICIjaWYgMiA8PCAtMSA9PSAxXG4iCi0gICAgICAgICJmb29cbiIKLSAgICAgICAgIiNlbmRp
ZlxuIjsKLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgMCkpOwot
Ci0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgIHByaW50KHBw
OjpEaWFnbm9zdGljczo6UFBfVU5ERUZJTkVEX1NISUZULCBwcDo6U291cmNlTG9jYXRpb24oMCwg
MSksICIyIDw8IC0xIikpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNz
b3IubGV4KCZ0b2tlbik7Ci19Ci0KLS8vIFVuZGVmaW5lZCBzaGlmdDogc2hpZnQgb2Zmc2V0IGlz
IG91dCBvZiByYW5nZS4KLVRFU1RfRihJZlRlc3QsIEJpdFNoaWZ0TGVmdE9wZXJhdG9yT2Zmc2V0
MzIpCi17Ci0gICAgY29uc3QgY2hhciAqc3RyID0KLSAgICAgICAgIiNpZiAyIDw8IDMyID09IDFc
biIKLSAgICAgICAgImZvb1xuIgotICAgICAgICAiI2VuZGlmXG4iOwotICAgIEFTU0VSVF9UUlVF
KG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7Ci0KLSAgICBFWFBFQ1RfQ0FMTChtRGlh
Z25vc3RpY3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9VTkRF
RklORURfU0hJRlQsIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgIjIgPDwgMzIiKSk7Ci0KLSAg
ICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLX0KLQot
Ly8gTGVmdCBoYW5kIHNpZGUgb2Ygc2hpZnQgaXMgbmVnYXRpdmUuCi1URVNUX0YoSWZUZXN0LCBC
aXRTaGlmdExlZnRPcGVyYXRvck5lZ2F0aXZlTEhTKQotewotICAgIGNvbnN0IGNoYXIgKnN0ciA9
Ci0gICAgICAgICIjaWYgKC0yKSA8PCAxID09IC00XG4iCi0gICAgICAgICJwYXNzXG4iCi0gICAg
ICAgICIjZW5kaWZcbiI7Ci0gICAgY29uc3QgY2hhciAqZXhwZWN0ZWQgPQotICAgICAgICAiXG4i
Ci0gICAgICAgICJwYXNzXG4iCi0gICAgICAgICJcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwg
ZXhwZWN0ZWQpOwotfQotCi0vLyBVbmRlZmluZWQgc2hpZnQ6IHNoaWZ0IG9mZnNldCBpcyBvdXQg
b2YgcmFuZ2UuCi1URVNUX0YoSWZUZXN0LCBCaXRTaGlmdFJpZ2h0T3BlcmF0b3JOZWdhdGl2ZU9m
ZnNldCkKLXsKLSAgICBjb25zdCBjaGFyICpzdHIgPQotICAgICAgICAiI2lmIDIgPj4gLTEgPT0g
NFxuIgotICAgICAgICAiZm9vXG4iCi0gICAgICAgICIjZW5kaWZcbiI7Ci0gICAgQVNTRVJUX1RS
VUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKLQotICAgIEVYUEVDVF9DQUxMKG1E
aWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX1VO
REVGSU5FRF9TSElGVCwgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiMiA+PiAtMSIpKTsKLQot
ICAgIHBwOjpUb2tlbiB0b2tlbjsKLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotfQot
Ci0vLyBVbmRlZmluZWQgc2hpZnQ6IHNoaWZ0IG9mZnNldCBpcyBvdXQgb2YgcmFuZ2UuCi1URVNU
X0YoSWZUZXN0LCBCaXRTaGlmdFJpZ2h0T3BlcmF0b3JPZmZzZXQzMikKLXsKLSAgICBjb25zdCBj
aGFyICpzdHIgPQotICAgICAgICAiI2lmIDIgPj4gMzIgPT0gMFxuIgotICAgICAgICAiZm9vXG4i
Ci0gICAgICAgICIjZW5kaWZcbiI7Ci0gICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0
KDEsICZzdHIsIDApKTsKLQotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAgICAg
ICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX1VOREVGSU5FRF9TSElGVCwgcHA6OlNv
dXJjZUxvY2F0aW9uKDAsIDEpLCAiMiA+PiAzMiIpKTsKLQotICAgIHBwOjpUb2tlbiB0b2tlbjsK
LSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotfQotCi0vLyBMZWZ0IGhhbmQgc2lkZSBv
ZiBzaGlmdCBpcyBuZWdhdGl2ZS4KLVRFU1RfRihJZlRlc3QsIEJpdFNoaWZ0UmlnaHRPcGVyYXRv
ck5lZ2F0aXZlTEhTKQotewotICAgIGNvbnN0IGNoYXIgKnN0ciA9Ci0gICAgICAgICIjaWYgKC0y
KSA+PiAxID09IDB4N2ZmZmZmZmZcbiIKLSAgICAgICAgInBhc3NcbiIKLSAgICAgICAgIiNlbmRp
ZlxuIjsKLSAgICBjb25zdCBjaGFyICpleHBlY3RlZCA9Ci0gICAgICAgICJcbiIKLSAgICAgICAg
InBhc3NcbiIKLSAgICAgICAgIlxuIjsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJv
Y2Vzc29yX3Rlc3RzL2lucHV0X3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9pbnB1dF90ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggY2ExODc4YzVmYWZjZjkwZjA2NzZmMWQ1NDNjODBjMjdlOWZiMDA0YS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2lucHV0X3Rlc3QuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIw
MTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVk
ZSAiUHJlcHJvY2Vzc29yVGVzdC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9J
bnB1dC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgotCi1jbGFz
cyBJbml0VGVzdCA6IHB1YmxpYyBQcmVwcm9jZXNzb3JUZXN0Ci17Ci19OwotCi1URVNUX0YoSW5p
dFRlc3QsIFplcm9Db3VudCkKLXsKLSAgICBFWFBFQ1RfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQo
MCwgTlVMTCwgTlVMTCkpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNz
b3IubGV4KCZ0b2tlbik7Ci0gICAgRVhQRUNUX0VRKHBwOjpUb2tlbjo6TEFTVCwgdG9rZW4udHlw
ZSk7Ci19Ci0KLVRFU1RfRihJbml0VGVzdCwgTnVsbFN0cmluZykKLXsKLSAgICBFWFBFQ1RfRkFM
U0UobVByZXByb2Nlc3Nvci5pbml0KDEsIE5VTEwsIE5VTEwpKTsKLX0KLQotVEVTVChJbnB1dFRl
c3QsIERlZmF1bHRDb25zdHJ1Y3RvcikKLXsKLSAgICBwcDo6SW5wdXQgaW5wdXQ7Ci0gICAgRVhQ
RUNUX0VRKDB1LCBpbnB1dC5jb3VudCgpKTsKLSAgICBpbnQgbGluZU5vID0gMDsKLSAgICBFWFBF
Q1RfRVEoMHUsIGlucHV0LnJlYWQoTlVMTCwgMSwgJmxpbmVObykpOwotfQotCi1URVNUKElucHV0
VGVzdCwgTnVsbExlbmd0aCkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHJbXSA9IHsiZm9vIn07Ci0g
ICAgcHA6OklucHV0IGlucHV0KDEsIHN0ciwgTlVMTCk7Ci0gICAgRVhQRUNUX0VRKDN1LCBpbnB1
dC5sZW5ndGgoMCkpOwotfQotCi1URVNUKElucHV0VGVzdCwgTmVnYXRpdmVMZW5ndGgpCi17Ci0g
ICAgY29uc3QgY2hhciogc3RyW10gPSB7ImZvbyJ9OwotICAgIGludCBsZW5ndGhbXSA9IHstMX07
Ci0gICAgcHA6OklucHV0IGlucHV0KDEsIHN0ciwgbGVuZ3RoKTsKLSAgICBFWFBFQ1RfRVEoM3Us
IGlucHV0Lmxlbmd0aCgwKSk7Ci19Ci0KLVRFU1QoSW5wdXRUZXN0LCBBY3R1YWxMZW5ndGgpCi17
Ci0gICAgY29uc3QgY2hhciogc3RyW10gPSB7ImZvb2JhciJ9OwotICAgIGludCBsZW5ndGhbXSA9
IHszfTsKLSAgICBwcDo6SW5wdXQgaW5wdXQoMSwgc3RyLCBsZW5ndGgpOwotICAgIC8vIE5vdGUg
dGhhdCBzdHJsZW4oc3RyWzBdKSAhPSBsZW5ndGhbMF0uCi0gICAgLy8gRXZlbiB0aGVuIElucHV0
IHNob3VsZCBqdXN0IGFjY2VwdCBhbnkgbm9uLW5lZ2F0aXZlIG51bWJlci4KLSAgICBFWFBFQ1Rf
RVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5ndGhbMF0pLCBpbnB1dC5sZW5ndGgoMCkpOwotfQot
Ci1URVNUKElucHV0VGVzdCwgU3RyaW5nKQotewotICAgIGNvbnN0IGNoYXIqIHN0cltdID0geyJm
b28ifTsKLSAgICBwcDo6SW5wdXQgaW5wdXQoMSwgc3RyLCBOVUxMKTsKLSAgICBFWFBFQ1RfU1RS
RVEoc3RyWzBdLCBpbnB1dC5zdHJpbmcoMCkpOwotfQotCi1URVNUKElucHV0VGVzdCwgUmVhZFNp
bmdsZVN0cmluZykKLXsKLSAgICBpbnQgY291bnQgPSAxOwotICAgIGNvbnN0IGNoYXIqIHN0cltd
ID0geyJmb28ifTsKLSAgICBjaGFyIGJ1Zls0XSA9IHsnXDAnLCAnXDAnLCAnXDAnLCAnXDAnfTsK
LQotICAgIGludCBtYXhTaXplID0gMTsKLSAgICBpbnQgbGluZU5vID0gMDsKLSAgICBwcDo6SW5w
dXQgaW5wdXQxKGNvdW50LCBzdHIsIE5VTEwpOwotICAgIEVYUEVDVF9FUSgxdSwgaW5wdXQxLnJl
YWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7Ci0gICAgRVhQRUNUX0VRKCdmJywgYnVmWzBdKTsK
LSAgICBFWFBFQ1RfRVEoMXUsIGlucHV0MS5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOwot
ICAgIEVYUEVDVF9FUSgnbycsIGJ1ZlswXSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBpbnB1dDEucmVh
ZChidWYsIG1heFNpemUsICZsaW5lTm8pKTsKLSAgICBFWFBFQ1RfRVEoJ28nLCBidWZbMF0pOwot
ICAgIEVYUEVDVF9FUSgwdSwgaW5wdXQxLnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7Ci0K
LSAgICBtYXhTaXplID0gMjsKLSAgICBwcDo6SW5wdXQgaW5wdXQyKGNvdW50LCBzdHIsIE5VTEwp
OwotICAgIEVYUEVDVF9FUSgydSwgaW5wdXQyLnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7
Ci0gICAgRVhQRUNUX1NUUkVRKCJmbyIsIGJ1Zik7Ci0gICAgRVhQRUNUX0VRKDF1LCBpbnB1dDIu
cmVhZChidWYsIG1heFNpemUsICZsaW5lTm8pKTsKLSAgICBFWFBFQ1RfRVEoJ28nLCBidWZbMF0p
OwotICAgIEVYUEVDVF9FUSgwdSwgaW5wdXQyLnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7
Ci0KLSAgICBtYXhTaXplID0gMzsKLSAgICBwcDo6SW5wdXQgaW5wdXQzKGNvdW50LCBzdHIsIE5V
TEwpOwotICAgIEVYUEVDVF9FUSgzdSwgaW5wdXQzLnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5v
KSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJmb28iLCBidWYpOwotICAgIEVYUEVDVF9FUSgwdSwgaW5w
dXQzLnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7Ci0KLSAgICBtYXhTaXplID0gNDsKLSAg
ICBwcDo6SW5wdXQgaW5wdXQ0KGNvdW50LCBzdHIsIE5VTEwpOwotICAgIEVYUEVDVF9FUSgzdSwg
aW5wdXQ0LnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJm
b28iLCBidWYpOwotICAgIEVYUEVDVF9FUSgwdSwgaW5wdXQ0LnJlYWQoYnVmLCBtYXhTaXplLCAm
bGluZU5vKSk7Ci19Ci0KLVRFU1QoSW5wdXRUZXN0LCBSZWFkTXVsdGlwbGVTdHJpbmdzKQotewot
ICAgIGludCBjb3VudCA9IDM7Ci0gICAgY29uc3QgY2hhciogc3RyW10gPSB7ImYiLCAibyIsICJv
In07Ci0gICAgY2hhciBidWZbNF0gPSB7J1wwJywgJ1wwJywgJ1wwJywgJ1wwJ307Ci0KLSAgICBp
bnQgbWF4U2l6ZSA9IDE7Ci0gICAgaW50IGxpbmVObyA9IDA7Ci0gICAgcHA6OklucHV0IGlucHV0
MShjb3VudCwgc3RyLCBOVUxMKTsKLSAgICBFWFBFQ1RfRVEoMXUsIGlucHV0MS5yZWFkKGJ1Ziwg
bWF4U2l6ZSwgJmxpbmVObykpOwotICAgIEVYUEVDVF9FUSgnZicsIGJ1ZlswXSk7Ci0gICAgRVhQ
RUNUX0VRKDF1LCBpbnB1dDEucmVhZChidWYsIG1heFNpemUsICZsaW5lTm8pKTsKLSAgICBFWFBF
Q1RfRVEoJ28nLCBidWZbMF0pOwotICAgIEVYUEVDVF9FUSgxdSwgaW5wdXQxLnJlYWQoYnVmLCBt
YXhTaXplLCAmbGluZU5vKSk7Ci0gICAgRVhQRUNUX0VRKCdvJywgYnVmWzBdKTsKLSAgICBFWFBF
Q1RfRVEoMHUsIGlucHV0MS5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOwotCi0gICAgbWF4
U2l6ZSA9IDI7Ci0gICAgcHA6OklucHV0IGlucHV0Mihjb3VudCwgc3RyLCBOVUxMKTsKLSAgICBF
WFBFQ1RfRVEoMnUsIGlucHV0Mi5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOwotICAgIEVY
UEVDVF9TVFJFUSgiZm8iLCBidWYpOwotICAgIEVYUEVDVF9FUSgxdSwgaW5wdXQyLnJlYWQoYnVm
LCBtYXhTaXplLCAmbGluZU5vKSk7Ci0gICAgRVhQRUNUX0VRKCdvJywgYnVmWzBdKTsKLSAgICBF
WFBFQ1RfRVEoMHUsIGlucHV0Mi5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOwotCi0gICAg
bWF4U2l6ZSA9IDM7Ci0gICAgcHA6OklucHV0IGlucHV0Myhjb3VudCwgc3RyLCBOVUxMKTsKLSAg
ICBFWFBFQ1RfRVEoM3UsIGlucHV0My5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOwotICAg
IEVYUEVDVF9TVFJFUSgiZm9vIiwgYnVmKTsKLSAgICBFWFBFQ1RfRVEoMHUsIGlucHV0My5yZWFk
KGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOwotCi0gICAgbWF4U2l6ZSA9IDQ7Ci0gICAgcHA6Oklu
cHV0IGlucHV0NChjb3VudCwgc3RyLCBOVUxMKTsKLSAgICBFWFBFQ1RfRVEoM3UsIGlucHV0NC5y
ZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOwotICAgIEVYUEVDVF9TVFJFUSgiZm9vIiwgYnVm
KTsKLSAgICBFWFBFQ1RfRVEoMHUsIGlucHV0NC5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykp
OwotfQotCi1URVNUKElucHV0VGVzdCwgUmVhZFN0cmluZ3NXaXRoTGVuZ3RoKQotewotICAgIGlu
dCBjb3VudCA9IDI7Ci0gICAgY29uc3QgY2hhciogc3RyW10gPSB7ImZvbyIsICJiYXIifTsKLSAg
ICAvLyBOb3RlIHRoYXQgdGhlIGxlbmd0aCBmb3IgdGhlIGZpcnN0IHN0cmluZyBpcyAyIHdoaWNo
IGlzIGxlc3MgdGhhbgotICAgIC8vIHN0cmxlbihzdHJbMF0uIFdlIHdhbnQgdG8gbWFrZSBzdXJl
IHRoYXQgdGhlIGxhc3QgY2hhcmFjdGVyIGlzIGlnbm9yZWQuCi0gICAgaW50IGxlbmd0aFtdID0g
ezIsIDN9OwotICAgIGNoYXIgYnVmWzZdID0geydcMCcsICdcMCcsICdcMCcsICdcMCcsICdcMCcs
ICdcMCd9OwotICAgIHNpemVfdCBtYXhTaXplID0gNTsKLSAgICBpbnQgbGluZU5vID0gMDsKLQot
ICAgIHBwOjpJbnB1dCBpbnB1dChjb3VudCwgc3RyLCBsZW5ndGgpOwotICAgIEVYUEVDVF9FUSht
YXhTaXplLCBpbnB1dC5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOwotICAgIEVYUEVDVF9T
VFJFUSgiZm9iYXIiLCBidWYpOwotfQotCi1URVNUKElucHV0VGVzdCwgUmVhZFN0cmluZ3NXaXRo
TGluZUNvbnRpbnVhdGlvbikKLXsKLSAgICBpbnQgY291bnQgPSAyOwotICAgIGNvbnN0IGNoYXIq
IHN0cltdID0geyJmb29cXCIsICJcbmJhXFxcclxuciJ9OwotICAgIGludCBsZW5ndGhbXSA9IHs0
LCA3fTsKLSAgICBjaGFyIGJ1ZlsxMV0gPSB7J1wwJywgJ1wwJywgJ1wwJywgJ1wwJywgJ1wwJywg
J1wwJywgJ1wwJywgJ1wwJywgJ1wwJywgJ1wwJywgJ1wwJ307Ci0gICAgc2l6ZV90IG1heFNpemUg
PSAxMTsKLSAgICBpbnQgbGluZU5vID0gMDsKLQotICAgIHBwOjpJbnB1dCBpbnB1dChjb3VudCwg
c3RyLCBsZW5ndGgpOwotICAgIEVYUEVDVF9FUSgzdSwgaW5wdXQucmVhZChidWYsIG1heFNpemUs
ICZsaW5lTm8pKTsKLSAgICBFWFBFQ1RfRVEoMCwgbGluZU5vKTsKLSAgICBFWFBFQ1RfRVEoMnUs
IGlucHV0LnJlYWQoYnVmICsgMywgbWF4U2l6ZSAtIDMsICZsaW5lTm8pKTsKLSAgICBFWFBFQ1Rf
RVEoMSwgbGluZU5vKTsKLSAgICBFWFBFQ1RfRVEoMXUsIGlucHV0LnJlYWQoYnVmICsgNSwgbWF4
U2l6ZSAtIDUsICZsaW5lTm8pKTsKLSAgICBFWFBFQ1RfRVEoMiwgbGluZU5vKTsKLSAgICBFWFBF
Q1RfU1RSRVEoImZvb2JhciIsIGJ1Zik7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2xvY2F0aW9uX3Rlc3QuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9sb2Nh
dGlvbl90ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJhZjY4YTgzODZi
YjVjNmYxZjQ3ZTBmODdkYWMyZDgxOWVkOTE5ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJl
cHJvY2Vzc29yX3Rlc3RzL2xvY2F0aW9uX3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzUx
ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAiUHJlcHJvY2Vzc29yVGVzdC5oIgot
I2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgotCi1jbGFzcyBMb2NhdGlv
blRlc3QgOiBwdWJsaWMgUHJlcHJvY2Vzc29yVGVzdAotewotcHJvdGVjdGVkOgotICAgIHZvaWQg
ZXhwZWN0TG9jYXRpb24oaW50IGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogY29uc3Qgc3RyaW5nW10sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQg
bGVuZ3RoW10sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcDo6U291cmNlTG9jYXRp
b24mIGxvY2F0aW9uKQotICAgIHsKLSAgICAgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5p
bml0KGNvdW50LCBzdHJpbmcsIGxlbmd0aCkpOwotCi0gICAgICAgIHBwOjpUb2tlbiB0b2tlbjsK
LSAgICAgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLSAgICAgICAgRVhQRUNUX0VRKHBw
OjpUb2tlbjo6SURFTlRJRklFUiwgdG9rZW4udHlwZSk7Ci0gICAgICAgIEVYUEVDVF9FUSgiZm9v
IiwgdG9rZW4udGV4dCk7Ci0KLSAgICAgICAgRVhQRUNUX0VRKGxvY2F0aW9uLmZpbGUsIHRva2Vu
LmxvY2F0aW9uLmZpbGUpOwotICAgICAgICBFWFBFQ1RfRVEobG9jYXRpb24ubGluZSwgdG9rZW4u
bG9jYXRpb24ubGluZSk7Ci0gICAgfQotfTsKLQotVEVTVF9GKExvY2F0aW9uVGVzdCwgU3RyaW5n
MF9MaW5lMSkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiZm9vIjsKLSAgICBwcDo6U291cmNl
TG9jYXRpb24gbG9jKDAsIDEpOwotCi0gICAgU0NPUEVEX1RSQUNFKCJTdHJpbmcwX0xpbmUxIik7
Ci0gICAgZXhwZWN0TG9jYXRpb24oMSwgJnN0ciwgTlVMTCwgbG9jKTsKLX0KLQotVEVTVF9GKExv
Y2F0aW9uVGVzdCwgU3RyaW5nMF9MaW5lMikKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiXG5m
b28iOwotICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBsb2MoMCwgMik7Ci0KLSAgICBTQ09QRURfVFJB
Q0UoIlN0cmluZzBfTGluZTIiKTsKLSAgICBleHBlY3RMb2NhdGlvbigxLCAmc3RyLCBOVUxMLCBs
b2MpOwotfQotCi1URVNUX0YoTG9jYXRpb25UZXN0LCBTdHJpbmcxX0xpbmUxKQotewotICAgIGNv
bnN0IGNoYXIqIGNvbnN0IHN0cltdID0geyJcblxuIiwgImZvbyJ9OwotICAgIHBwOjpTb3VyY2VM
b2NhdGlvbiBsb2MoMSwgMSk7Ci0KLSAgICBTQ09QRURfVFJBQ0UoIlN0cmluZzFfTGluZTEiKTsK
LSAgICBleHBlY3RMb2NhdGlvbigyLCBzdHIsIE5VTEwsIGxvYyk7Ci19Ci0KLVRFU1RfRihMb2Nh
dGlvblRlc3QsIFN0cmluZzFfTGluZTIpCi17Ci0gICAgY29uc3QgY2hhciogY29uc3Qgc3RyW10g
PSB7IlxuXG4iLCAiXG5mb28ifTsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jKDEsIDIpOwot
Ci0gICAgU0NPUEVEX1RSQUNFKCJTdHJpbmcxX0xpbmUyIik7Ci0gICAgZXhwZWN0TG9jYXRpb24o
Miwgc3RyLCBOVUxMLCBsb2MpOwotfQotCi1URVNUX0YoTG9jYXRpb25UZXN0LCBOZXdsaW5lSW5z
aWRlQ29tbWVudENvdW50ZWQpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIi8qXG5cbiovZm9v
IjsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jKDAsIDMpOwotCi0gICAgU0NPUEVEX1RSQUNF
KCJOZXdsaW5lSW5zaWRlQ29tbWVudENvdW50ZWQiKTsKLSAgICBleHBlY3RMb2NhdGlvbigxLCAm
c3RyLCBOVUxMLCBsb2MpOwotfQotCi1URVNUX0YoTG9jYXRpb25UZXN0LCBFcnJvckxvY2F0aW9u
QWZ0ZXJDb21tZW50KQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIvKlxuXG4qL0AiOwotCi0g
ICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIE5VTEwpKTsKLSAgICBF
WFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfSU5WQUxJ
RF9DSEFSQUNURVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcDo6U291
cmNlTG9jYXRpb24oMCwgMyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
QCIpKTsKLQotICAgIHBwOjpUb2tlbiB0b2tlbjsKLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9r
ZW4pOwotfQotCi0vLyBUaGUgbG9jYXRpb24gb2YgYSB0b2tlbiBzdHJhZGRsaW5nIHR3byBvciBt
b3JlIHN0cmluZ3MgaXMgdGhhdCBvZiB0aGUKLS8vIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgdG9r
ZW4uCi0KLVRFU1RfRihMb2NhdGlvblRlc3QsIFRva2VuU3RyYWRkbGluZ1R3b1N0cmluZ3MpCi17
Ci0gICAgY29uc3QgY2hhciogY29uc3Qgc3RyW10gPSB7ImYiLCAib28ifTsKLSAgICBwcDo6U291
cmNlTG9jYXRpb24gbG9jKDAsIDEpOwotCi0gICAgU0NPUEVEX1RSQUNFKCJUb2tlblN0cmFkZGxp
bmdUd29TdHJpbmdzIik7Ci0gICAgZXhwZWN0TG9jYXRpb24oMiwgc3RyLCBOVUxMLCBsb2MpOwot
fQotCi1URVNUX0YoTG9jYXRpb25UZXN0LCBUb2tlblN0cmFkZGxpbmdUaHJlZVN0cmluZ3MpCi17
Ci0gICAgY29uc3QgY2hhciogY29uc3Qgc3RyW10gPSB7ImYiLCAibyIsICJvIn07Ci0gICAgcHA6
OlNvdXJjZUxvY2F0aW9uIGxvYygwLCAxKTsKLQotICAgIFNDT1BFRF9UUkFDRSgiVG9rZW5TdHJh
ZGRsaW5nVGhyZWVTdHJpbmdzIik7Ci0gICAgZXhwZWN0TG9jYXRpb24oMywgc3RyLCBOVUxMLCBs
b2MpOwotfQotCi1URVNUX0YoTG9jYXRpb25UZXN0LCBFbmRPZkZpbGVXaXRob3V0TmV3bGluZSkK
LXsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBzdHJbXSA9IHsiZm9vIn07Ci0gICAgQVNTRVJUX1RS
VUUobVByZXByb2Nlc3Nvci5pbml0KDEsIHN0ciwgTlVMTCkpOwotCi0gICAgcHA6OlRva2VuIHRv
a2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci0gICAgRVhQRUNUX0VRKHBwOjpU
b2tlbjo6SURFTlRJRklFUiwgdG9rZW4udHlwZSk7Ci0gICAgRVhQRUNUX0VRKCJmb28iLCB0b2tl
bi50ZXh0KTsKLSAgICBFWFBFQ1RfRVEoMCwgdG9rZW4ubG9jYXRpb24uZmlsZSk7Ci0gICAgRVhQ
RUNUX0VRKDEsIHRva2VuLmxvY2F0aW9uLmxpbmUpOwotCi0gICAgbVByZXByb2Nlc3Nvci5sZXgo
JnRva2VuKTsKLSAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpMQVNULCB0b2tlbi50eXBlKTsKLSAg
ICBFWFBFQ1RfRVEoMCwgdG9rZW4ubG9jYXRpb24uZmlsZSk7Ci0gICAgRVhQRUNUX0VRKDEsIHRv
a2VuLmxvY2F0aW9uLmxpbmUpOwotfQotCi1URVNUX0YoTG9jYXRpb25UZXN0LCBFbmRPZkZpbGVB
ZnRlck5ld2xpbmUpCi17Ci0gICAgY29uc3QgY2hhciogY29uc3Qgc3RyW10gPSB7ImZvb1xuIn07
Ci0gICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsIHN0ciwgTlVMTCkpOwotCi0g
ICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci0gICAg
RVhQRUNUX0VRKHBwOjpUb2tlbjo6SURFTlRJRklFUiwgdG9rZW4udHlwZSk7Ci0gICAgRVhQRUNU
X0VRKCJmb28iLCB0b2tlbi50ZXh0KTsKLSAgICBFWFBFQ1RfRVEoMCwgdG9rZW4ubG9jYXRpb24u
ZmlsZSk7Ci0gICAgRVhQRUNUX0VRKDEsIHRva2VuLmxvY2F0aW9uLmxpbmUpOwotCi0gICAgbVBy
ZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLSAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpMQVNULCB0
b2tlbi50eXBlKTsKLSAgICBFWFBFQ1RfRVEoMCwgdG9rZW4ubG9jYXRpb24uZmlsZSk7Ci0gICAg
RVhQRUNUX0VRKDIsIHRva2VuLmxvY2F0aW9uLmxpbmUpOwotfQotCi1URVNUX0YoTG9jYXRpb25U
ZXN0LCBFbmRPZkZpbGVBZnRlckVtcHR5U3RyaW5nKQotewotICAgIGNvbnN0IGNoYXIqIGNvbnN0
IHN0cltdID0geyJmb29cbiIsICJcbiIsICIifTsKLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vz
c29yLmluaXQoMywgc3RyLCBOVUxMKSk7Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgbVBy
ZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLSAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpJREVOVElG
SUVSLCB0b2tlbi50eXBlKTsKLSAgICBFWFBFQ1RfRVEoImZvbyIsIHRva2VuLnRleHQpOwotICAg
IEVYUEVDVF9FUSgwLCB0b2tlbi5sb2NhdGlvbi5maWxlKTsKLSAgICBFWFBFQ1RfRVEoMSwgdG9r
ZW4ubG9jYXRpb24ubGluZSk7Ci0KLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotICAg
IEVYUEVDVF9FUShwcDo6VG9rZW46OkxBU1QsIHRva2VuLnR5cGUpOwotICAgIEVYUEVDVF9FUSgy
LCB0b2tlbi5sb2NhdGlvbi5maWxlKTsKLSAgICBFWFBFQ1RfRVEoMSwgdG9rZW4ubG9jYXRpb24u
bGluZSk7Ci19Ci0KLVRFU1RfRihMb2NhdGlvblRlc3QsIFZhbGlkTGluZURpcmVjdGl2ZTEpCi17
Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNsaW5lIDEwXG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgImZvbyI7Ci0gICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYygwLCAxMCk7Ci0KLSAgICBTQ09Q
RURfVFJBQ0UoIlZhbGlkTGluZURpcmVjdGl2ZTEiKTsKLSAgICBleHBlY3RMb2NhdGlvbigxLCAm
c3RyLCBOVUxMLCBsb2MpOwotfQotCi1URVNUX0YoTG9jYXRpb25UZXN0LCBWYWxpZExpbmVEaXJl
Y3RpdmUyKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjbGluZSAxMCAyMFxuIgotICAgICAg
ICAgICAgICAgICAgICAgICJmb28iOwotICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBsb2MoMjAsIDEw
KTsKLQotICAgIFNDT1BFRF9UUkFDRSgiVmFsaWRMaW5lRGlyZWN0aXZlMiIpOwotICAgIGV4cGVj
dExvY2F0aW9uKDEsICZzdHIsIE5VTEwsIGxvYyk7Ci19Ci0KLVRFU1RfRihMb2NhdGlvblRlc3Qs
IExpbmVEaXJlY3RpdmVDb21tZW50c0lnbm9yZWQpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0g
Ii8qIGJhciAqLyIKLSAgICAgICAgICAgICAgICAgICAgICAiIyIKLSAgICAgICAgICAgICAgICAg
ICAgICAiLyogYmFyICovIgotICAgICAgICAgICAgICAgICAgICAgICJsaW5lIgotICAgICAgICAg
ICAgICAgICAgICAgICIvKiBiYXIgKi8iCi0gICAgICAgICAgICAgICAgICAgICAgIjEwIgotICAg
ICAgICAgICAgICAgICAgICAgICIvKiBiYXIgKi8iCi0gICAgICAgICAgICAgICAgICAgICAgIjIw
IgotICAgICAgICAgICAgICAgICAgICAgICIvKiBiYXIgKi8iCi0gICAgICAgICAgICAgICAgICAg
ICAgIi8vIGJhciAgICIKLSAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgImZvbyI7Ci0gICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYygyMCwgMTApOwotCi0g
ICAgU0NPUEVEX1RSQUNFKCJMaW5lRGlyZWN0aXZlQ29tbWVudHNJZ25vcmVkIik7Ci0gICAgZXhw
ZWN0TG9jYXRpb24oMSwgJnN0ciwgTlVMTCwgbG9jKTsKLX0KLQotVEVTVF9GKExvY2F0aW9uVGVz
dCwgTGluZURpcmVjdGl2ZVdpdGhNYWNybzEpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNk
ZWZpbmUgTCAxMFxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIEYoeCkgeFxuIgot
ICAgICAgICAgICAgICAgICAgICAgICIjbGluZSBMIEYoMjApXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgImZvbyI7Ci0gICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYygyMCwgMTApOwotCi0gICAg
U0NPUEVEX1RSQUNFKCJMaW5lRGlyZWN0aXZlV2l0aE1hY3JvMSIpOwotICAgIGV4cGVjdExvY2F0
aW9uKDEsICZzdHIsIE5VTEwsIGxvYyk7Ci19Ci0KLVRFU1RfRihMb2NhdGlvblRlc3QsIExpbmVE
aXJlY3RpdmVXaXRoTWFjcm8yKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjZGVmaW5lIExP
QyAxMCAyMFxuIgotICAgICAgICAgICAgICAgICAgICAgICIjbGluZSBMT0NcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAiZm9vIjsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jKDIwLCAxMCk7
Ci0KLSAgICBTQ09QRURfVFJBQ0UoIkxpbmVEaXJlY3RpdmVXaXRoTWFjcm8yIik7Ci0gICAgZXhw
ZWN0TG9jYXRpb24oMSwgJnN0ciwgTlVMTCwgbG9jKTsKLX0KLQotVEVTVF9GKExvY2F0aW9uVGVz
dCwgTGluZURpcmVjdGl2ZVdpdGhQcmVkZWZpbmVkTWFjcm8pCi17Ci0gICAgY29uc3QgY2hhciog
c3RyID0gIiNsaW5lIF9fTElORV9fIF9fRklMRV9fXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ImZvbyI7Ci0gICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYygwLCAxKTsKLQotICAgIFNDT1BFRF9U
UkFDRSgiTGluZURpcmVjdGl2ZVdpdGhNYWNybyIpOwotICAgIGV4cGVjdExvY2F0aW9uKDEsICZz
dHIsIE5VTEwsIGxvYyk7Ci19Ci0KLVRFU1RfRihMb2NhdGlvblRlc3QsIExpbmVEaXJlY3RpdmVO
ZXdsaW5lQmVmb3JlU3RyaW5nQnJlYWspCi17Ci0gICAgY29uc3QgY2hhciogY29uc3Qgc3RyW10g
PSB7IiNsaW5lIDEwIDIwXG4iLCAiZm9vIn07Ci0gICAgLy8gU3RyaW5nIG51bWJlciBpcyBpbmNy
ZW1lbnRlZCBhZnRlciBpdCBpcyBzZXQgYnkgdGhlIGxpbmUgZGlyZWN0aXZlLgotICAgIC8vIEFs
c28gbm90aWNlIHRoYXQgbGluZSBudW1iZXIgaXMgcmVzZXQgYWZ0ZXIgdGhlIHN0cmluZyBicmVh
ay4KLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jKDIxLCAxKTsKLQotICAgIFNDT1BFRF9UUkFD
RSgiTGluZURpcmVjdGl2ZU5ld2xpbmVCZWZvcmVTdHJpbmdCcmVhayIpOwotICAgIGV4cGVjdExv
Y2F0aW9uKDIsIHN0ciwgTlVMTCwgbG9jKTsKLX0KLQotVEVTVF9GKExvY2F0aW9uVGVzdCwgTGlu
ZURpcmVjdGl2ZU5ld2xpbmVBZnRlclN0cmluZ0JyZWFrKQotewotICAgIGNvbnN0IGNoYXIqIGNv
bnN0IHN0cltdID0geyIjbGluZSAxMCAyMCIsICJcbmZvbyJ9OwotICAgIC8vIFN0cmluZyBudW1i
ZXIgaXMgaW5jcmVtZW50ZWQgYmVmb3JlIGl0IGlzIHNldCBieSB0aGUgbGluZSBkaXJlY3RpdmUu
Ci0gICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYygyMCwgMTApOwotCi0gICAgU0NPUEVEX1RSQUNF
KCJMaW5lRGlyZWN0aXZlTmV3bGluZUFmdGVyU3RyaW5nQnJlYWsiKTsKLSAgICBleHBlY3RMb2Nh
dGlvbigyLCBzdHIsIE5VTEwsIGxvYyk7Ci19Ci0KLVRFU1RfRihMb2NhdGlvblRlc3QsIExpbmVE
aXJlY3RpdmVNaXNzaW5nTmV3bGluZSkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2xpbmUg
MTAiOwotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCBOVUxMKSk7
Ci0KLSAgICB1c2luZyB0ZXN0aW5nOjpfOwotICAgIC8vIEVycm9yIHJlcG9ydGVkIGFib3V0IEVP
Ri4KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6
UFBfRU9GX0lOX0RJUkVDVElWRSwgXywgXykpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAg
IG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci19Ci0KLXN0cnVjdCBMaW5lVGVzdFBhcmFtCi17
Ci0gICAgY29uc3QgY2hhciogc3RyOwotICAgIHBwOjpEaWFnbm9zdGljczo6SUQgaWQ7Ci19Owot
Ci1jbGFzcyBJbnZhbGlkTGluZVRlc3QgOiBwdWJsaWMgTG9jYXRpb25UZXN0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgcHVibGljIHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxMaW5lVGVz
dFBhcmFtPgotewotfTsKLQotVEVTVF9QKEludmFsaWRMaW5lVGVzdCwgSWRlbnRpZmllZCkKLXsK
LSAgICBMaW5lVGVzdFBhcmFtIHBhcmFtID0gR2V0UGFyYW0oKTsKLSAgICBBU1NFUlRfVFJVRSht
UHJlcHJvY2Vzc29yLmluaXQoMSwgJnBhcmFtLnN0ciwgTlVMTCkpOwotCi0gICAgdXNpbmcgdGVz
dGluZzo6XzsKLSAgICAvLyBJbnZhbGlkIGxpbmUgZGlyZWN0aXZlIGNhbGwuCi0gICAgRVhQRUNU
X0NBTEwobURpYWdub3N0aWNzLCBwcmludChwYXJhbS5pZCwgcHA6OlNvdXJjZUxvY2F0aW9uKDAs
IDEpLCBfKSk7Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgo
JnRva2VuKTsKLX0KLQotc3RhdGljIGNvbnN0IExpbmVUZXN0UGFyYW0ga1BhcmFtc1tdID0gewot
ICAgIHsiI2xpbmVcbiIsIHBwOjpEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9MSU5FX0RJUkVDVElW
RX0sCi0gICAgeyIjbGluZSBmb29cbiIsIHBwOjpEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9MSU5F
X05VTUJFUn0sCi0gICAgeyIjbGluZSBkZWZpbmVkKGZvbylcbiIsIHBwOjpEaWFnbm9zdGljczo6
UFBfSU5WQUxJRF9MSU5FX05VTUJFUn0sCi0gICAgeyIjbGluZSAxMCBmb29cbiIsIHBwOjpEaWFn
bm9zdGljczo6UFBfSU5WQUxJRF9GSUxFX05VTUJFUn0sCi0gICAgeyIjbGluZSAxMCAyMCBmb29c
biIsIHBwOjpEaWFnbm9zdGljczo6UFBfVU5FWFBFQ1RFRF9UT0tFTn0sCi0gICAgeyIjbGluZSAw
eGZmZmZmZmZmXG4iLCBwcDo6RGlhZ25vc3RpY3M6OlBQX0lOVEVHRVJfT1ZFUkZMT1d9LAotICAg
IHsiI2xpbmUgMTAgMHhmZmZmZmZmZlxuIiwgcHA6OkRpYWdub3N0aWNzOjpQUF9JTlRFR0VSX09W
RVJGTE9XfX07Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFsbCwgSW52YWxpZExpbmVUZXN0
LCB0ZXN0aW5nOjpWYWx1ZXNJbihrUGFyYW1zKSk7Ci0KLXN0cnVjdCBMaW5lRXhwcmVzc2lvblRl
c3RQYXJhbQotewotICAgIGNvbnN0IGNoYXIgKmV4cHJlc3Npb247Ci0gICAgaW50IGV4cGVjdGVk
TGluZTsKLX07Ci0KLWNsYXNzIExpbmVFeHByZXNzaW9uVGVzdCA6IHB1YmxpYyBMb2NhdGlvblRl
c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdGVzdGluZzo6V2l0aFBhcmFt
SW50ZXJmYWNlPExpbmVFeHByZXNzaW9uVGVzdFBhcmFtPgotewotfTsKLQotVEVTVF9QKExpbmVF
eHByZXNzaW9uVGVzdCwgRXhwcmVzc2lvbkV2YWx1YXRpb24pCi17Ci0gICAgTGluZUV4cHJlc3Np
b25UZXN0UGFyYW0gcGFyYW0gPSBHZXRQYXJhbSgpOwotICAgIGNvbnN0IGNoYXIgKnN0cnNbM10g
PSB7IiNsaW5lICIsIHBhcmFtLmV4cHJlc3Npb24sICJcbmZvbyJ9OwotCi0gICAgcHA6OlNvdXJj
ZUxvY2F0aW9uIGxvYygyLCBwYXJhbS5leHBlY3RlZExpbmUpOwotCi0gICAgZXhwZWN0TG9jYXRp
b24oMywgc3RycywgTlVMTCwgbG9jKTsKLX0KLQotc3RhdGljIGNvbnN0IExpbmVFeHByZXNzaW9u
VGVzdFBhcmFtIGtQYXJhbXNMaW5lRXhwcmVzc2lvblRlc3RbXSA9IHsKLSAgICB7IjEgKyAyIiwg
M30sCi0gICAgeyI1IC0gMyIsIDJ9LAotICAgIHsiNyAqIDExIiwgNzd9LAotICAgIHsiMjAgLyAx
MCIsIDJ9LAotICAgIHsiMTAgJSA1IiwgMH0sCi0gICAgeyI3ICYmIDMiLCAxfSwKLSAgICB7Ijcg
fHwgMCIsIDF9LAotICAgIHsiMTEgPT0gMTEiLCAxfSwKLSAgICB7IjExICE9IDExIiwgMH0sCi0g
ICAgeyIxMSA+IDciLCAxfSwKLSAgICB7IjExIDwgNyIsIDB9LAotICAgIHsiMTEgPj0gNyIsIDF9
LAotICAgIHsiMTEgPD0gNyIsIDB9LAotICAgIHsiITExIiwgMH0sCi0gICAgeyItMSIsIC0xfSwK
LSAgICB7Iis5IiwgOX0sCi0gICAgeyIoMSArIDIpICogNCIsIDEyfSwKLSAgICB7IjMgfCA1Iiwg
N30sCi0gICAgeyIzIF4gNSIsIDZ9LAotICAgIHsiMyAmIDUiLCAxfSwKLSAgICB7In41IiwgfjV9
LAotICAgIHsiMiA8PCAzIiwgMTZ9LAotICAgIHsiMTYgPj4gMiIsIDR9fTsKLQotSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoQWxsLCBMaW5lRXhwcmVzc2lvblRlc3QsIHRlc3Rpbmc6OlZhbHVlc0lu
KGtQYXJhbXNMaW5lRXhwcmVzc2lvblRlc3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvbnVtYmVyX3Rlc3QuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9udW1i
ZXJfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlMjk1ZDMwNzA3M2E3
NjkyYjM3MmI0OTNjOTI4YjdiM2IyMDE0NjMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXBy
b2Nlc3Nvcl90ZXN0cy9udW1iZXJfdGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAs
MCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJQcmVwcm9jZXNzb3JUZXN0LmgiCi0jaW5j
bHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgiCi0KLSNkZWZpbmUgQ0xPU0VEX1JB
TkdFKHgsIHkpIHRlc3Rpbmc6OlJhbmdlKHgsIHN0YXRpY19jYXN0PGNoYXI+KCh5KSArIDEpKQot
Ci1jbGFzcyBJbnZhbGlkTnVtYmVyVGVzdCA6IHB1YmxpYyBQcmVwcm9jZXNzb3JUZXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNl
PGNvbnN0IGNoYXIqPgotewotfTsKLQotVEVTVF9QKEludmFsaWROdW1iZXJUZXN0LCBJbnZhbGlk
TnVtYmVySWRlbnRpZmllZCkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSBHZXRQYXJhbSgpOwot
ICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7Ci0KLSAgICB1
c2luZyB0ZXN0aW5nOjpfOwotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQocHA6
OkRpYWdub3N0aWNzOjpQUF9JTlZBTElEX05VTUJFUiwgXywgc3RyKSk7Ci0KLSAgICBwcDo6VG9r
ZW4gdG9rZW47Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLX0KLQotSU5TVEFOVElB
VEVfVEVTVF9DQVNFX1AoSW52YWxpZEludGVnZXJzLCBJbnZhbGlkTnVtYmVyVGVzdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlcygiMWEiLCAiMDgiLCAiMHhHIikpOwot
Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEludmFsaWRGbG9hdHMsIEludmFsaWROdW1iZXJU
ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6VmFsdWVzKCIxZWciLCAiMC5h
IiwgIjAuMS4yIiwgIi4wYSIsICIuMC4xIikpOwotCi10eXBlZGVmIHN0ZDo6dHIxOjp0dXBsZTxj
b25zdCBjaGFyKiwgY2hhcj4gSW50ZWdlclBhcmFtczsKLWNsYXNzIEludGVnZXJUZXN0IDogcHVi
bGljIFByZXByb2Nlc3NvclRlc3QsCi0gICAgICAgICAgICAgICAgICAgIHB1YmxpYyB0ZXN0aW5n
OjpXaXRoUGFyYW1JbnRlcmZhY2U8SW50ZWdlclBhcmFtcz4KLXsKLX07Ci0KLVRFU1RfUChJbnRl
Z2VyVGVzdCwgSWRlbnRpZmllZCkKLXsKLSAgICBzdGQ6OnN0cmluZyBzdHIoc3RkOjp0cjE6Omdl
dDwwPihHZXRQYXJhbSgpKSk7ICAvLyBwcmVmaXguCi0gICAgc3RyLnB1c2hfYmFjayhzdGQ6OnRy
MTo6Z2V0PDE+KEdldFBhcmFtKCkpKTsgIC8vIGRpZ2l0LgotICAgIGNvbnN0IGNoYXIqIGNzdHIg
PSBzdHIuY19zdHIoKTsKLQotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAm
Y3N0ciwgMCkpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4
KCZ0b2tlbik7Ci0gICAgRVhQRUNUX0VRKHBwOjpUb2tlbjo6Q09OU1RfSU5ULCB0b2tlbi50eXBl
KTsKLSAgICBFWFBFQ1RfRVEoc3RyLCB0b2tlbi50ZXh0KTsKLX0KLQotSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AoRGVjaW1hbEludGVnZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2Vy
VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUodGVzdGluZzo6
VmFsdWVzKCIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xP
U0VEX1JBTkdFKCcwJywgJzknKSkpOwotCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChPY3RhbElu
dGVnZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyVGVzdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUodGVzdGluZzo6VmFsdWVzKCIwIiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5HRSgnMCcsICc3
JykpKTsKLQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSGV4YWRlY2ltYWxJbnRlZ2VyXzBfOSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXJUZXN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdGluZzo6Q29tYmluZSh0ZXN0aW5nOjpWYWx1ZXMoIjB4IiwgIjBYIiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5HRSgnMCcsICc5
JykpKTsKLQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSGV4YWRlY2ltYWxJbnRlZ2VyX2FfZiwK
LSAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXJUZXN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdGluZzo6Q29tYmluZSh0ZXN0aW5nOjpWYWx1ZXMoIjB4IiwgIjBYIiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5HRSgnYScsICdm
JykpKTsKLQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSGV4YWRlY2ltYWxJbnRlZ2VyX0FfRiwK
LSAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXJUZXN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdGluZzo6Q29tYmluZSh0ZXN0aW5nOjpWYWx1ZXMoIjB4IiwgIjBYIiksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5HRSgnQScsICdG
JykpKTsKLQotY2xhc3MgRmxvYXRUZXN0IDogcHVibGljIFByZXByb2Nlc3NvclRlc3QKLXsKLSAg
cHJvdGVjdGVkOgotICAgIHZvaWQgZXhwZWN0RmxvYXQoY29uc3Qgc3RkOjpzdHJpbmcmIHN0cikK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGNzdHIgPSBzdHIuY19zdHIoKTsKLSAgICAgICAg
QVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZjc3RyLCAwKSk7Ci0KLSAgICAgICAg
cHA6OlRva2VuIHRva2VuOwotICAgICAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotICAg
ICAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpDT05TVF9GTE9BVCwgdG9rZW4udHlwZSk7Ci0gICAg
ICAgIEVYUEVDVF9FUShzdHIsIHRva2VuLnRleHQpOwotICAgIH0KLX07Ci0KLXR5cGVkZWYgc3Rk
Ojp0cjE6OnR1cGxlPGNoYXIsIGNoYXIsIGNvbnN0IGNoYXIqLCBjaGFyPiBGbG9hdFNjaWVudGlm
aWNQYXJhbXM7Ci1jbGFzcyBGbG9hdFNjaWVudGlmaWNUZXN0IDoKLSAgICBwdWJsaWMgRmxvYXRU
ZXN0LAotICAgIHB1YmxpYyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8RmxvYXRTY2llbnRp
ZmljUGFyYW1zPgotewotfTsKLQotLy8gVGhpcyB0ZXN0IGNvdmVycyBmbG9hdGluZyBwb2ludCBu
dW1iZXJzIG9mIGZvcm0gWzAtOV1bZUVdWystXT9bMC05XS4KLVRFU1RfUChGbG9hdFNjaWVudGlm
aWNUZXN0LCBGbG9hdElkZW50aWZpZWQpCi17Ci0gICAgc3RkOjpzdHJpbmcgc3RyOwotICAgIHN0
ci5wdXNoX2JhY2soc3RkOjp0cjE6OmdldDwwPihHZXRQYXJhbSgpKSk7ICAvLyBzaWduaWZpY2Fu
ZCBbMC05XS4KLSAgICBzdHIucHVzaF9iYWNrKHN0ZDo6dHIxOjpnZXQ8MT4oR2V0UGFyYW0oKSkp
OyAgLy8gc2VwYXJhdG9yIFtlRV0uCi0gICAgc3RyLmFwcGVuZChzdGQ6OnRyMTo6Z2V0PDI+KEdl
dFBhcmFtKCkpKTsgIC8vIHNpZ24gWyIgIiAiKyIgIi0iXS4KLSAgICBzdHIucHVzaF9iYWNrKHN0
ZDo6dHIxOjpnZXQ8Mz4oR2V0UGFyYW0oKSkpOyAgLy8gZXhwb25lbnQgWzAtOV0uCi0KLSAgICBT
Q09QRURfVFJBQ0UoIkZsb2F0U2NpZW50aWZpY1Rlc3QiKTsKLSAgICBleHBlY3RGbG9hdChzdHIp
OwotfQotCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChGbG9hdFNjaWVudGlmaWMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBGbG9hdFNjaWVudGlmaWNUZXN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdGluZzo6Q29tYmluZShDTE9TRURfUkFOR0UoJzAnLCAnOScpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXMoJ2UnLCAnRScp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1
ZXMoIiIsICIrIiwgIi0iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQ0xPU0VEX1JBTkdFKCcwJywgJzknKSkpOwotCi10eXBlZGVmIHN0ZDo6dHIxOjp0dXBsZTxj
aGFyLCBjaGFyPiBGbG9hdEZyYWN0aW9uUGFyYW1zOwotY2xhc3MgRmxvYXRGcmFjdGlvblRlc3Qg
OgotICAgIHB1YmxpYyBGbG9hdFRlc3QsCi0gICAgcHVibGljIHRlc3Rpbmc6OldpdGhQYXJhbUlu
dGVyZmFjZTxGbG9hdEZyYWN0aW9uUGFyYW1zPgotewotfTsKLQotLy8gVGhpcyB0ZXN0IGNvdmVy
cyBmbG9hdGluZyBwb2ludCBudW1iZXJzIG9mIGZvcm0gWzAtOV0iLiIgYW5kIFswLTldPyIuIlsw
LTldLgotVEVTVF9QKEZsb2F0RnJhY3Rpb25UZXN0LCBGbG9hdElkZW50aWZpZWQpCi17Ci0gICAg
c3RkOjpzdHJpbmcgc3RyOwotCi0gICAgY2hhciBzaWduaWZpY2FuZCA9IHN0ZDo6dHIxOjpnZXQ8
MD4oR2V0UGFyYW0oKSk7Ci0gICAgaWYgKHNpZ25pZmljYW5kICE9ICdcMCcpCi0gICAgICAgIHN0
ci5wdXNoX2JhY2soc2lnbmlmaWNhbmQpOwotCi0gICAgc3RyLnB1c2hfYmFjaygnLicpOwotCi0g
ICAgY2hhciBmcmFjdGlvbiA9IHN0ZDo6dHIxOjpnZXQ8MT4oR2V0UGFyYW0oKSk7Ci0gICAgaWYg
KGZyYWN0aW9uICE9ICdcMCcpCi0gICAgICAgIHN0ci5wdXNoX2JhY2soZnJhY3Rpb24pOwotCi0g
ICAgU0NPUEVEX1RSQUNFKCJGbG9hdEZyYWN0aW9uVGVzdCIpOwotICAgIGV4cGVjdEZsb2F0KHN0
cik7Ci19Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEZsb2F0RnJhY3Rpb25fWF9YLAotICAg
ICAgICAgICAgICAgICAgICAgICAgRmxvYXRGcmFjdGlvblRlc3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKENMT1NFRF9SQU5HRSgnMCcsICc5JyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5HRSgnMCcsICc5Jykp
KTsKLQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoRmxvYXRGcmFjdGlvbl8wX1gsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBGbG9hdEZyYWN0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3Rpbmc6OkNvbWJpbmUodGVzdGluZzo6VmFsdWVzKCdcMCcpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTE9TRURfUkFOR0UoJzAnLCAnOScpKSk7Ci0K
LUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEZsb2F0RnJhY3Rpb25fWF8wLAotICAgICAgICAgICAg
ICAgICAgICAgICAgRmxvYXRGcmFjdGlvblRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0aW5nOjpDb21iaW5lKENMT1NFRF9SQU5HRSgnMCcsICc5JyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlcygnXDAnKSkpOwotCi0vLyBJ
biB0aGUgdGVzdHMgYWJvdmUgd2UgaGF2ZSB0ZXN0ZWQgaW5kaXZpZHVhbCBwYXJ0cyBvZiBhIGZs
b2F0IHNlcGFyYXRlbHkuCi0vLyBUaGlzIHRlc3QgaGFzIGFsbCBwYXJ0cyBvZiBhIGZsb2F0Lgot
VEVTVF9GKEZsb2F0VGVzdCwgRnJhY3Rpb25TY2llbnRpZmljKQotewotICAgIFNDT1BFRF9UUkFD
RSgiRnJhY3Rpb25TY2llbnRpZmljIik7Ci0gICAgZXhwZWN0RmxvYXQoIjAuMWUrMiIpOwotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nv
cl90ZXN0cy9vcGVyYXRvcl90ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvb3BlcmF0b3JfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDUwNWNiZTNmYzY3ZGM2OGJjNDFlMjc3ODEyZWQxNTY1MTk1MDU4Nzgu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9vcGVyYXRvcl90ZXN0
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMp
IDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5j
bHVkZSAiUHJlcHJvY2Vzc29yVGVzdC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9Ub2tlbi5oIgotCi1zdHJ1Y3QgT3BlcmF0b3JUZXN0UGFyYW0KLXsKLSAgICBjb25zdCBjaGFy
KiBzdHI7Ci0gICAgaW50IG9wOwotfTsKLQotY2xhc3MgT3BlcmF0b3JUZXN0IDogcHVibGljIFBy
ZXByb2Nlc3NvclRlc3QsCi0gICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdGVzdGluZzo6V2l0
aFBhcmFtSW50ZXJmYWNlPE9wZXJhdG9yVGVzdFBhcmFtPgotewotfTsKLQotVEVTVF9QKE9wZXJh
dG9yVGVzdCwgSWRlbnRpZmllZCkKLXsKLSAgICBPcGVyYXRvclRlc3RQYXJhbSBwYXJhbSA9IEdl
dFBhcmFtKCk7Ci0KLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnBhcmFt
LnN0ciwgMCkpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4
KCZ0b2tlbik7Ci0gICAgRVhQRUNUX0VRKHBhcmFtLm9wLCB0b2tlbi50eXBlKTsKLSAgICBFWFBF
Q1RfRVEocGFyYW0uc3RyLCB0b2tlbi50ZXh0KTsKLX0KLQotc3RhdGljIGNvbnN0IE9wZXJhdG9y
VGVzdFBhcmFtIGtPcGVyYXRvcnNbXSA9IHsKLSAgICB7IigiLCAnKCd9LAotICAgIHsiKSIsICcp
J30sCi0gICAgeyJbIiwgJ1snfSwKLSAgICB7Il0iLCAnXSd9LAotICAgIHsiLiIsICcuJ30sCi0g
ICAgeyIrIiwgJysnfSwKLSAgICB7Ii0iLCAnLSd9LAotICAgIHsifiIsICd+J30sCi0gICAgeyIh
IiwgJyEnfSwKLSAgICB7IioiLCAnKid9LAotICAgIHsiLyIsICcvJ30sCi0gICAgeyIlIiwgJyUn
fSwKLSAgICB7IjwiLCAnPCd9LAotICAgIHsiPiIsICc+J30sCi0gICAgeyImIiwgJyYnfSwKLSAg
ICB7Il4iLCAnXid9LAotICAgIHsifCIsICd8J30sCi0gICAgeyI/IiwgJz8nfSwKLSAgICB7Ijoi
LCAnOid9LAotICAgIHsiPSIsICc9J30sCi0gICAgeyIsIiwgJywnfSwKLSAgICB7IisrIiwgIHBw
OjpUb2tlbjo6T1BfSU5DfSwKLSAgICB7Ii0tIiwgIHBwOjpUb2tlbjo6T1BfREVDfSwKLSAgICB7
Ijw8IiwgIHBwOjpUb2tlbjo6T1BfTEVGVH0sCi0gICAgeyI+PiIsICBwcDo6VG9rZW46Ok9QX1JJ
R0hUfSwKLSAgICB7Ijw9IiwgIHBwOjpUb2tlbjo6T1BfTEV9LAotICAgIHsiPj0iLCAgcHA6OlRv
a2VuOjpPUF9HRX0sCi0gICAgeyI9PSIsICBwcDo6VG9rZW46Ok9QX0VRfSwKLSAgICB7IiE9Iiwg
IHBwOjpUb2tlbjo6T1BfTkV9LAotICAgIHsiJiYiLCAgcHA6OlRva2VuOjpPUF9BTkR9LAotICAg
IHsiXl4iLCAgcHA6OlRva2VuOjpPUF9YT1J9LAotICAgIHsifHwiLCAgcHA6OlRva2VuOjpPUF9P
Un0sCi0gICAgeyIrPSIsICBwcDo6VG9rZW46Ok9QX0FERF9BU1NJR059LAotICAgIHsiLT0iLCAg
cHA6OlRva2VuOjpPUF9TVUJfQVNTSUdOfSwKLSAgICB7Iio9IiwgIHBwOjpUb2tlbjo6T1BfTVVM
X0FTU0lHTn0sCi0gICAgeyIvPSIsICBwcDo6VG9rZW46Ok9QX0RJVl9BU1NJR059LAotICAgIHsi
JT0iLCAgcHA6OlRva2VuOjpPUF9NT0RfQVNTSUdOfSwKLSAgICB7Ijw8PSIsIHBwOjpUb2tlbjo6
T1BfTEVGVF9BU1NJR059LAotICAgIHsiPj49IiwgcHA6OlRva2VuOjpPUF9SSUdIVF9BU1NJR059
LAotICAgIHsiJj0iLCAgcHA6OlRva2VuOjpPUF9BTkRfQVNTSUdOfSwKLSAgICB7Il49IiwgIHBw
OjpUb2tlbjo6T1BfWE9SX0FTU0lHTn0sCi0gICAgeyJ8PSIsICBwcDo6VG9rZW46Ok9QX09SX0FT
U0lHTn0KLX07Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFsbCwgT3BlcmF0b3JUZXN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6VmFsdWVzSW4oa09wZXJhdG9ycykpOwot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vz
c29yX3Rlc3RzL3ByYWdtYV90ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvcHJhZ21hX3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5Mjk5MmFjZWQ1MDI4ZDExMzJlMmU4NmFhZmQyMDM0YzBhODE0NTIyLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvcHJhZ21hX3Rlc3QuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIw
MTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVk
ZSAiUHJlcHJvY2Vzc29yVGVzdC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9U
b2tlbi5oIgotCi1jbGFzcyBQcmFnbWFUZXN0IDogcHVibGljIFByZXByb2Nlc3NvclRlc3QKLXsK
LX07Ci0KLVRFU1RfRihQcmFnbWFUZXN0LCBFbXB0eU5hbWUpCi17Ci0gICAgY29uc3QgY2hhciog
c3RyID0gIiNwcmFnbWFcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iOwotCi0g
ICAgdXNpbmcgdGVzdGluZzo6XzsKLSAgICAvLyBObyBoYW5kbGVQcmFnbWEgY2FsbHMuCi0gICAg
RVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRsZXIsIGhhbmRsZVByYWdtYShfLCBfLCBfLCBmYWxz
ZSkpLlRpbWVzKDApOwotICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcuCi0gICAgRVhQRUNUX0NB
TEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSkuVGltZXMoMCk7Ci0KLSAgICBwcmVwcm9j
ZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoUHJhZ21hVGVzdCwgRW1wdHlWYWx1ZSkK
LXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI3ByYWdtYSBmb29cbiI7Ci0gICAgY29uc3QgY2hh
ciogZXhwZWN0ZWQgPSAiXG4iOwotCi0gICAgdXNpbmcgdGVzdGluZzo6XzsKLSAgICBFWFBFQ1Rf
Q0FMTChtRGlyZWN0aXZlSGFuZGxlciwKLSAgICAgICAgICAgICAgICBoYW5kbGVQcmFnbWEocHA6
OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiZm9vIiwgIiIsIGZhbHNlKSk7Ci0gICAgLy8gTm8gZXJy
b3Igb3Igd2FybmluZy4KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KF8sIF8s
IF8pKS5UaW1lcygwKTsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRF
U1RfRihQcmFnbWFUZXN0LCBOYW1lVmFsdWUpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNw
cmFnbWEgZm9vKGJhcilcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iOwotCi0g
ICAgdXNpbmcgdGVzdGluZzo6XzsKLSAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwK
LSAgICAgICAgICAgICAgICBoYW5kbGVQcmFnbWEocHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAi
Zm9vIiwgImJhciIsIGZhbHNlKSk7Ci0gICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KLSAgICBF
WFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KF8sIF8sIF8pKS5UaW1lcygwKTsKLQotICAg
IHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihQcmFnbWFUZXN0LCBTVERH
TCkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI3ByYWdtYSBTVERHTFxuIjsKLSAgICBjb25z
dCBjaGFyKiBleHBlY3RlZCA9ICJcbiI7Ci0KLSAgICB1c2luZyB0ZXN0aW5nOjpfOwotICAgIEVY
UEVDVF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVyLAotICAgICAgICAgICAgICAgIGhhbmRsZVByYWdt
YShfLCBfLCBfLCBfKSkuVGltZXMoMCk7Ci0gICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KLSAg
ICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KF8sIF8sIF8pKS5UaW1lcygwKTsKLQot
ICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihQcmFnbWFUZXN0LCBT
VERHTEludmFyaWFudEFsbCkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI3ByYWdtYSBTVERH
TCBpbnZhcmlhbnQoYWxsKVxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiI7Ci0K
LSAgICB1c2luZyB0ZXN0aW5nOjpfOwotICAgIEVYUEVDVF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVy
LAotICAgICAgICAgICAgICAgIGhhbmRsZVByYWdtYShwcDo6U291cmNlTG9jYXRpb24oMCwgMSks
ICJpbnZhcmlhbnQiLCAiYWxsIiwgdHJ1ZSkpOwotICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcu
Ci0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSkuVGltZXMoMCk7
Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoUHJhZ21hVGVz
dCwgQ29tbWVudHMpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIi8qZm9vKi8iCi0gICAgICAg
ICAgICAgICAgICAgICAgIiMiCi0gICAgICAgICAgICAgICAgICAgICAgIi8qZm9vKi8iCi0gICAg
ICAgICAgICAgICAgICAgICAgInByYWdtYSIKLSAgICAgICAgICAgICAgICAgICAgICAiLypmb28q
LyIKLSAgICAgICAgICAgICAgICAgICAgICAiZm9vIgotICAgICAgICAgICAgICAgICAgICAgICIv
KmZvbyovIgotICAgICAgICAgICAgICAgICAgICAgICIoIgotICAgICAgICAgICAgICAgICAgICAg
ICIvKmZvbyovIgotICAgICAgICAgICAgICAgICAgICAgICJiYXIiCi0gICAgICAgICAgICAgICAg
ICAgICAgIi8qZm9vKi8iCi0gICAgICAgICAgICAgICAgICAgICAgIikiCi0gICAgICAgICAgICAg
ICAgICAgICAgIi8qZm9vKi8iCi0gICAgICAgICAgICAgICAgICAgICAgIi8vZm9vIgotICAgICAg
ICAgICAgICAgICAgICAgICJcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iOwot
Ci0gICAgdXNpbmcgdGVzdGluZzo6XzsKLSAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxl
ciwKLSAgICAgICAgICAgICAgICBoYW5kbGVQcmFnbWEocHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEp
LCAiZm9vIiwgImJhciIsIGZhbHNlKSk7Ci0gICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KLSAg
ICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KF8sIF8sIF8pKS5UaW1lcygwKTsKLQot
ICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihQcmFnbWFUZXN0LCBN
aXNzaW5nTmV3bGluZSkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI3ByYWdtYSBmb28oYmFy
KSI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiIjsKLQotICAgIHVzaW5nIHRlc3Rpbmc6
Ol87Ci0gICAgLy8gUHJhZ21hIHN1Y2Nlc3NmdWxseSBwYXJzZWQuCi0gICAgRVhQRUNUX0NBTEwo
bURpcmVjdGl2ZUhhbmRsZXIsCi0gICAgICAgICAgICAgICAgaGFuZGxlUHJhZ21hKHBwOjpTb3Vy
Y2VMb2NhdGlvbigwLCAxKSwgImZvbyIsICJiYXIiLCBmYWxzZSkpOwotICAgIC8vIEVycm9yIHJl
cG9ydGVkIGFib3V0IEVPRi4KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBw
OjpEaWFnbm9zdGljczo6UFBfRU9GX0lOX0RJUkVDVElWRSwgXywgXykpOwotCi0gICAgcHJlcHJv
Y2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotY2xhc3MgSW52YWxpZFByYWdtYVRlc3QgOiBwdWJs
aWMgUHJhZ21hVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHRlc3Rpbmc6
OldpdGhQYXJhbUludGVyZmFjZTxjb25zdCBjaGFyKj4KLXsKLX07Ci0KLVRFU1RfUChJbnZhbGlk
UHJhZ21hVGVzdCwgSWRlbnRpZmllZCkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSBHZXRQYXJh
bSgpOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIjsKLQotICAgIHVzaW5nIHRlc3Rp
bmc6Ol87Ci0gICAgLy8gTm8gaGFuZGxlUHJhZ21hIGNhbGxzLgotICAgIEVYUEVDVF9DQUxMKG1E
aXJlY3RpdmVIYW5kbGVyLCBoYW5kbGVQcmFnbWEoXywgXywgXywgZmFsc2UpKS5UaW1lcygwKTsK
LSAgICAvLyBVbnJlY29nbml6ZWQgcHJhZ21hIHdhcm5pbmcuCi0gICAgRVhQRUNUX0NBTEwobURp
YWdub3N0aWNzLAotICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfVU5S
RUNPR05JWkVEX1BSQUdNQSwKLSAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRp
b24oMCwgMSksIF8pKTsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLUlO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFsbCwgSW52YWxpZFByYWdtYVRlc3QsIHRlc3Rpbmc6OlZh
bHVlcygKLSAgICAiI3ByYWdtYSAxXG4iLCAgICAgICAgICAgICAgIC8vIEludmFsaWQgbmFtZS4K
LSAgICAiI3ByYWdtYSBmb28oKVxuIiwgICAgICAgICAgIC8vIE1pc3NpbmcgdmFsdWUuCi0gICAg
IiNwcmFnbWEgZm9vIGJhcilcbiIsICAgICAgICAvLyBNaXNzaW5nIGxlZnQgcGFyZW4sCi0gICAg
IiNwcmFnbWEgZm9vKGJhclxuIiwgICAgICAgICAvLyBNaXNzaW5nIHJpZ2h0IHBhcmVuLgotICAg
ICIjcHJhZ21hIGZvbyBiYXJcbiIsICAgICAgICAgLy8gTWlzc2luZyBwYXJlbnMuCi0gICAgIiNw
cmFnbWEgZm9vKGJhcikgYmF6XG4iKSk7ICAvLyBFeHRyYSB0b2tlbnMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL3NwYWNl
X3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nv
cl90ZXN0cy9zcGFjZV90ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMz
NDk0YmU1OTEzYzg1OTRmOGFkNmJmMTE5YzFkNWQzY2NjZDk3MS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL3NwYWNlX3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMTA2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAiUHJlcHJvY2Vzc29yVGVz
dC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgotCi1jbGFzcyBT
cGFjZVRlc3QgOiBwdWJsaWMgUHJlcHJvY2Vzc29yVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAg
dm9pZCBleHBlY3RTcGFjZShjb25zdCBzdGQ6OnN0cmluZyYgc3RyKQotICAgIHsKLSAgICAgICAg
Y29uc3QgY2hhciogY3N0ciA9IHN0ci5jX3N0cigpOwotICAgICAgICBBU1NFUlRfVFJVRShtUHJl
cHJvY2Vzc29yLmluaXQoMSwgJmNzdHIsIDApKTsKLQotICAgICAgICBwcDo6VG9rZW4gdG9rZW47
Ci0gICAgICAgIC8vICJmb28iIGlzIHJldHVybmVkIGFmdGVyIGlnbm9yaW5nIHRoZSB3aGl0ZXNw
YWNlIGNoYXJhY3RlcnMuCi0gICAgICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci0gICAg
ICAgIEVYUEVDVF9FUShwcDo6VG9rZW46OklERU5USUZJRVIsIHRva2VuLnR5cGUpOwotICAgICAg
ICBFWFBFQ1RfRVEoImZvbyIsIHRva2VuLnRleHQpOwotICAgICAgICAvLyBUaGUgd2hpdGVzcGFj
ZSBjaGFyYWN0ZXIgaXMgaG93ZXZlciByZWNvcmRlZCB3aXRoIHRoZSBuZXh0IHRva2VuLgotICAg
ICAgICBFWFBFQ1RfVFJVRSh0b2tlbi5oYXNMZWFkaW5nU3BhY2UoKSk7Ci0gICAgfQotfTsKLQot
Ly8gV2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFsbG93ZWQgaW4gR0xTTC4KLS8vIE5vdGUgdGhhdCBu
ZXdsaW5lIGNoYXJhY3RlcnMgKFxuKSB3aWxsIGJlIHRlc3RlZCBzZXBhcmF0ZWx5Lgotc3RhdGlj
IGNvbnN0IGNoYXIga1NwYWNlQ2hhcnNbXSA9IHsnICcsICdcdCcsICdcdicsICdcZid9OwotCi0v
LyBUaGlzIHRlc3QgZml4dHVyZSB0ZXN0cyB0aGUgcHJvY2Vzc2luZyBvZiBhIHNpbmdsZSB3aGl0
ZXNwYWNlIGNoYXJhY3Rlci4KLS8vIEFsbCB0ZXN0cyBpbiB0aGlzIGZpeHR1cmUgYXJlIHJhbiB3
aXRoIGFsbCBwb3NzaWJsZSB3aGl0ZXNwYWNlIGNoYXJhY3RlcgotLy8gYWxsb3dlZCBpbiBHTFNM
LgotY2xhc3MgU3BhY2VDaGFyVGVzdCA6IHB1YmxpYyBTcGFjZVRlc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxjaGFyPgotewotfTsK
LQotVEVTVF9QKFNwYWNlQ2hhclRlc3QsIFNwYWNlSWdub3JlZCkKLXsKLSAgICAvLyBDb25zdHJ1
Y3QgdGVzdCBzdHJpbmcgd2l0aCB0aGUgd2hpdGVzcGFjZSBjaGFyIGJlZm9yZSAiZm9vIi4KLSAg
ICBzdGQ6OnN0cmluZyBzdHIoMSwgR2V0UGFyYW0oKSk7Ci0gICAgc3RyLmFwcGVuZCgiZm9vIik7
Ci0KLSAgICBleHBlY3RTcGFjZShzdHIpOwotfQotCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChT
aW5nbGVTcGFjZUNoYXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBTcGFjZUNoYXJUZXN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6VmFsdWVzSW4oa1NwYWNlQ2hhcnMpKTsK
LQotLy8gVGhpcyB0ZXN0IGZpeHR1cmUgdGVzdHMgdGhlIHByb2Nlc3Npbmcgb2YgYSBzdHJpbmcg
Y29udGFpbmluZyBjb25zZWN1dGl2ZQotLy8gd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLiBBbGwgdGVz
dHMgaW4gdGhpcyBmaXh0dXJlIGFyZSByYW4gd2l0aCBhbGwgcG9zc2libGUKLS8vIGNvbWJpbmF0
aW9ucyBvZiB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgYWxsb3dlZCBpbiBHTFNMLgotdHlwZWRlZiBz
dGQ6OnRyMTo6dHVwbGU8Y2hhciwgY2hhciwgY2hhcj4gU3BhY2VTdHJpbmdQYXJhbXM7Ci1jbGFz
cyBTcGFjZVN0cmluZ1Rlc3QgOiBwdWJsaWMgU3BhY2VUZXN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxTcGFjZVN0cmluZ1BhcmFt
cz4KLXsKLX07Ci0KLVRFU1RfUChTcGFjZVN0cmluZ1Rlc3QsIFNwYWNlSWdub3JlZCkKLXsKLSAg
ICAvLyBDb25zdHJ1Y3QgdGVzdCBzdHJpbmcgd2l0aCB0aGUgd2hpdGVzcGFjZSBjaGFyIGJlZm9y
ZSAiZm9vIi4KLSAgICBzdGQ6OnN0cmluZyBzdHI7Ci0gICAgc3RyLnB1c2hfYmFjayhzdGQ6OnRy
MTo6Z2V0PDA+KEdldFBhcmFtKCkpKTsKLSAgICBzdHIucHVzaF9iYWNrKHN0ZDo6dHIxOjpnZXQ8
MT4oR2V0UGFyYW0oKSkpOwotICAgIHN0ci5wdXNoX2JhY2soc3RkOjp0cjE6OmdldDwyPihHZXRQ
YXJhbSgpKSk7Ci0gICAgc3RyLmFwcGVuZCgiZm9vIik7Ci0KLSAgICBleHBlY3RTcGFjZShzdHIp
OwotfQotCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChTcGFjZUNoYXJDb21iaW5hdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFNwYWNlU3RyaW5nVGVzdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUodGVzdGluZzo6VmFsdWVzSW4oa1NwYWNlQ2hhcnMpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXNJ
bihrU3BhY2VDaGFycyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3Rpbmc6OlZhbHVlc0luKGtTcGFjZUNoYXJzKSkpOwotCi0vLyBUaGUgdGVzdHMgYWJvdmUg
bWFrZSBzdXJlIHRoYXQgdGhlIHNwYWNlIGNoYXIgaXMgcmVjb3JkZWQgaW4gdGhlCi0vLyBuZXh0
IHRva2VuLiBUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGF0IGEgdG9rZW4gaXMgbm90IGluY29ycmVj
dGx5IG1hcmtlZAotLy8gdG8gaGF2ZSBsZWFkaW5nIHNwYWNlLgotVEVTVF9GKFNwYWNlVGVzdCwg
TGVhZGluZ1NwYWNlKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIgZm9vKyAtYmFyIjsKLSAg
ICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgMCkpOwotCi0gICAgcHA6
OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci0gICAgRVhQRUNU
X0VRKHBwOjpUb2tlbjo6SURFTlRJRklFUiwgdG9rZW4udHlwZSk7Ci0gICAgRVhQRUNUX0VRKCJm
b28iLCB0b2tlbi50ZXh0KTsKLSAgICBFWFBFQ1RfVFJVRSh0b2tlbi5oYXNMZWFkaW5nU3BhY2Uo
KSk7Ci0KLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotICAgIEVYUEVDVF9FUSgnKycs
IHRva2VuLnR5cGUpOwotICAgIEVYUEVDVF9GQUxTRSh0b2tlbi5oYXNMZWFkaW5nU3BhY2UoKSk7
Ci0KLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotICAgIEVYUEVDVF9FUSgnLScsIHRv
a2VuLnR5cGUpOwotICAgIEVYUEVDVF9UUlVFKHRva2VuLmhhc0xlYWRpbmdTcGFjZSgpKTsKLQot
ICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci0gICAgRVhQRUNUX0VRKHBwOjpUb2tlbjo6
SURFTlRJRklFUiwgdG9rZW4udHlwZSk7Ci0gICAgRVhQRUNUX0VRKCJiYXIiLCB0b2tlbi50ZXh0
KTsKLSAgICBFWFBFQ1RfRkFMU0UodG9rZW4uaGFzTGVhZGluZ1NwYWNlKCkpOwotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0
cy90b2tlbl90ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVw
cm9jZXNzb3JfdGVzdHMvdG9rZW5fdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDEwNjY0N2M4ZWRlZDI4M2U3Mjg2ZjAyN2UyM2I4ZmEzMzZjODJlMmIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy90b2tlbl90ZXN0LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDkwICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
LS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rl
c3QuaCIKLQotI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgotCi1URVNU
KFRva2VuVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yKQotewotICAgIHBwOjpUb2tlbiB0b2tlbjsK
LSAgICBFWFBFQ1RfRVEoMCwgdG9rZW4udHlwZSk7Ci0gICAgRVhQRUNUX0VRKDB1LCB0b2tlbi5m
bGFncyk7Ci0gICAgRVhQRUNUX0VRKDAsIHRva2VuLmxvY2F0aW9uLmxpbmUpOwotICAgIEVYUEVD
VF9FUSgwLCB0b2tlbi5sb2NhdGlvbi5maWxlKTsKLSAgICBFWFBFQ1RfRVEoIiIsIHRva2VuLnRl
eHQpOwotfQotCi1URVNUKFRva2VuVGVzdCwgQXNzaWdubWVudCkKLXsKLSAgICBwcDo6VG9rZW4g
dG9rZW47Ci0gICAgdG9rZW4udHlwZSA9IDE7Ci0gICAgdG9rZW4uZmxhZ3MgPSAxOwotICAgIHRv
a2VuLmxvY2F0aW9uLmxpbmUgPSAxOwotICAgIHRva2VuLmxvY2F0aW9uLmZpbGUgPSAxOwotICAg
IHRva2VuLnRleHQuYXNzaWduKCJmb28iKTsKLQotICAgIHRva2VuID0gcHA6OlRva2VuKCk7Ci0g
ICAgRVhQRUNUX0VRKDAsIHRva2VuLnR5cGUpOwotICAgIEVYUEVDVF9FUSgwdSwgdG9rZW4uZmxh
Z3MpOwotICAgIEVYUEVDVF9FUSgwLCB0b2tlbi5sb2NhdGlvbi5saW5lKTsKLSAgICBFWFBFQ1Rf
RVEoMCwgdG9rZW4ubG9jYXRpb24uZmlsZSk7Ci0gICAgRVhQRUNUX0VRKCIiLCB0b2tlbi50ZXh0
KTsKLX0KLQotVEVTVChUb2tlblRlc3QsIEVxdWFscykKLXsKLSAgICBwcDo6VG9rZW4gdG9rZW47
Ci0gICAgRVhQRUNUX1RSVUUodG9rZW4uZXF1YWxzKHBwOjpUb2tlbigpKSk7Ci0KLSAgICB0b2tl
bi50eXBlID0gMTsKLSAgICBFWFBFQ1RfRkFMU0UodG9rZW4uZXF1YWxzKHBwOjpUb2tlbigpKSk7
Ci0gICAgdG9rZW4udHlwZSA9IDA7Ci0KLSAgICB0b2tlbi5mbGFncyA9IDE7Ci0gICAgRVhQRUNU
X0ZBTFNFKHRva2VuLmVxdWFscyhwcDo6VG9rZW4oKSkpOwotICAgIHRva2VuLmZsYWdzID0gMDsK
LQotICAgIHRva2VuLmxvY2F0aW9uLmxpbmUgPSAxOwotICAgIEVYUEVDVF9GQUxTRSh0b2tlbi5l
cXVhbHMocHA6OlRva2VuKCkpKTsKLSAgICB0b2tlbi5sb2NhdGlvbi5saW5lID0gMDsKLQotICAg
IHRva2VuLmxvY2F0aW9uLmZpbGUgPSAxOwotICAgIEVYUEVDVF9GQUxTRSh0b2tlbi5lcXVhbHMo
cHA6OlRva2VuKCkpKTsKLSAgICB0b2tlbi5sb2NhdGlvbi5maWxlID0gMDsKLQotICAgIHRva2Vu
LnRleHQuYXNzaWduKCJmb28iKTsKLSAgICBFWFBFQ1RfRkFMU0UodG9rZW4uZXF1YWxzKHBwOjpU
b2tlbigpKSk7Ci0gICAgdG9rZW4udGV4dC5jbGVhcigpOwotCi0gICAgRVhQRUNUX1RSVUUodG9r
ZW4uZXF1YWxzKHBwOjpUb2tlbigpKSk7Ci19Ci0KLVRFU1QoVG9rZW5UZXN0LCBIYXNMZWFkaW5n
U3BhY2UpCi17Ci0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIEVYUEVDVF9GQUxTRSh0b2tlbi5o
YXNMZWFkaW5nU3BhY2UoKSk7Ci0gICAgdG9rZW4uc2V0SGFzTGVhZGluZ1NwYWNlKHRydWUpOwot
ICAgIEVYUEVDVF9UUlVFKHRva2VuLmhhc0xlYWRpbmdTcGFjZSgpKTsKLSAgICB0b2tlbi5zZXRI
YXNMZWFkaW5nU3BhY2UoZmFsc2UpOwotICAgIEVYUEVDVF9GQUxTRSh0b2tlbi5oYXNMZWFkaW5n
U3BhY2UoKSk7Ci19Ci0KLVRFU1QoVG9rZW5UZXN0LCBXcml0ZSkKLXsKLSAgICBwcDo6VG9rZW4g
dG9rZW47Ci0gICAgdG9rZW4udGV4dC5hc3NpZ24oImZvbyIpOwotICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIG91dDE7Ci0gICAgb3V0MSA8PCB0b2tlbjsKLSAgICBFWFBFQ1RfVFJVRShvdXQxLmdvb2Qo
KSk7Ci0gICAgRVhQRUNUX0VRKCJmb28iLCBvdXQxLnN0cigpKTsKLQotICAgIHRva2VuLnNldEhh
c0xlYWRpbmdTcGFjZSh0cnVlKTsKLSAgICBzdGQ6OnN0cmluZ3N0cmVhbSBvdXQyOwotICAgIG91
dDIgPDwgdG9rZW47Ci0gICAgRVhQRUNUX1RSVUUob3V0Mi5nb29kKCkpOwotICAgIEVYUEVDVF9F
USgiIGZvbyIsIG91dDIuc3RyKCkpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy92ZXJzaW9uX3Rlc3QuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy92ZXJzaW9u
X3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzg1NDJkYjE5MTI2ZjQ3
N2ZjZmY2Y2MyYzQyNTgwNmRhZWQ3M2I0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9j
ZXNzb3JfdGVzdHMvdmVyc2lvbl90ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCww
IEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgIlByZXByb2Nlc3NvclRlc3QuaCIKLSNpbmNs
dWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCIKLQotY2xhc3MgVmVyc2lvblRlc3Qg
OiBwdWJsaWMgUHJlcHJvY2Vzc29yVGVzdAotewotfTsKLQotVEVTVF9GKFZlcnNpb25UZXN0LCBW
YWxpZCkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI3ZlcnNpb24gMjAwXG4iOwotICAgIGNv
bnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIjsKLQotICAgIHVzaW5nIHRlc3Rpbmc6Ol87Ci0gICAg
RVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRsZXIsCi0gICAgICAgICAgICAgICAgaGFuZGxlVmVy
c2lvbihwcDo6U291cmNlTG9jYXRpb24oMCwgMSksIDIwMCkpOwotICAgIC8vIE5vIGVycm9yIG9y
IHdhcm5pbmcuCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSku
VGltZXMoMCk7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0Yo
VmVyc2lvblRlc3QsIENvbW1lbnRzSWdub3JlZCkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAi
Lypmb28qLyIKLSAgICAgICAgICAgICAgICAgICAgICAiIyIKLSAgICAgICAgICAgICAgICAgICAg
ICAiLypmb28qLyIKLSAgICAgICAgICAgICAgICAgICAgICAidmVyc2lvbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAiLypmb28qLyIKLSAgICAgICAgICAgICAgICAgICAgICAiMjAwIgotICAgICAg
ICAgICAgICAgICAgICAgICIvKmZvbyovIgotICAgICAgICAgICAgICAgICAgICAgICIvL2ZvbyIK
LSAgICAgICAgICAgICAgICAgICAgICAiXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0g
IlxuIjsKLQotICAgIHVzaW5nIHRlc3Rpbmc6Ol87Ci0gICAgRVhQRUNUX0NBTEwobURpcmVjdGl2
ZUhhbmRsZXIsCi0gICAgICAgICAgICAgICAgaGFuZGxlVmVyc2lvbihwcDo6U291cmNlTG9jYXRp
b24oMCwgMSksIDIwMCkpOwotICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcuCi0gICAgRVhQRUNU
X0NBTEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSkuVGltZXMoMCk7Ci0KLSAgICBwcmVw
cm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoVmVyc2lvblRlc3QsIE1pc3NpbmdO
ZXdsaW5lKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjdmVyc2lvbiAyMDAiOwotICAgIGNv
bnN0IGNoYXIqIGV4cGVjdGVkID0gIiI7Ci0KLSAgICB1c2luZyB0ZXN0aW5nOjpfOwotICAgIC8v
IERpcmVjdGl2ZSBzdWNjZXNzZnVsbHkgcGFyc2VkLgotICAgIEVYUEVDVF9DQUxMKG1EaXJlY3Rp
dmVIYW5kbGVyLAotICAgICAgICAgICAgICAgIGhhbmRsZVZlcnNpb24ocHA6OlNvdXJjZUxvY2F0
aW9uKDAsIDEpLCAyMDApKTsKLSAgICAvLyBFcnJvciByZXBvcnRlZCBhYm91dCBFT0YuCi0gICAg
RVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0VPRl9J
Tl9ESVJFQ1RJVkUsIF8sIF8pKTsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19
Ci0KLVRFU1RfRihWZXJzaW9uVGVzdCwgQWZ0ZXJDb21tZW50cykKLXsKLSAgICBjb25zdCBjaGFy
KiBzdHIgPSAiLyogYmxvY2sgY29tbWVudCBhY2NlcHRhYmxlICovXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgIi8vIGxpbmUgY29tbWVudCBhY2NlcHRhYmxlXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgIiN2ZXJzaW9uIDIwMFxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcblxu
XG4iOwotCi0gICAgdXNpbmcgdGVzdGluZzo6XzsKLSAgICAvLyBEaXJlY3RpdmUgc3VjY2Vzc2Z1
bGx5IHBhcnNlZC4KLSAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwKLSAgICAgICAg
ICAgICAgICBoYW5kbGVWZXJzaW9uKHBwOjpTb3VyY2VMb2NhdGlvbigwLCAzKSwgMjAwKSk7Ci0g
ICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3Ms
IHByaW50KF8sIF8sIF8pKS5UaW1lcygwKTsKLSAgICAKLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhw
ZWN0ZWQpOwotfQotCi1URVNUX0YoVmVyc2lvblRlc3QsIEFmdGVyV2hpdGVzcGFjZSkKLXsKLSAg
ICBjb25zdCBjaGFyKiBzdHIgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAg
ICAgICAgICAgICAgICAgICAgICIjdmVyc2lvbiAyMDBcbiI7Ci0gICAgY29uc3QgY2hhciogZXhw
ZWN0ZWQgPSAiXG5cblxuIjsKLQotICAgIHVzaW5nIHRlc3Rpbmc6Ol87Ci0gICAgLy8gRGlyZWN0
aXZlIHN1Y2Nlc3NmdWxseSBwYXJzZWQuCi0gICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRs
ZXIsCi0gICAgICAgICAgICAgICAgaGFuZGxlVmVyc2lvbihwcDo6U291cmNlTG9jYXRpb24oMCwg
MyksIDIwMCkpOwotICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcuCi0gICAgRVhQRUNUX0NBTEwo
bURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSkuVGltZXMoMCk7Ci0gICAgCi0gICAgcHJlcHJv
Y2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKFZlcnNpb25UZXN0LCBBZnRlclZhbGlk
VG9rZW4pCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gImZvb1xuIgotICAgICAgICAgICAgICAg
ICAgICAgICIjdmVyc2lvbiAyMDBcbiI7Ci0gICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5p
bml0KDEsICZzdHIsIE5VTEwpKTsKLQotICAgIHVzaW5nIHRlc3Rpbmc6Ol87Ci0gICAgRVhQRUNU
X0NBTEwobURpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGlj
czo6UFBfVkVSU0lPTl9OT1RfRklSU1RfU1RBVEVNRU5ULAotICAgICAgICAgICAgICAgICAgICAg
IHBwOjpTb3VyY2VMb2NhdGlvbigwLCAyKSwgXykpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwot
ICAgIGRvCi0gICAgewotICAgICAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotICAgIH0g
d2hpbGUgKHRva2VuLnR5cGUgIT0gcHA6OlRva2VuOjpMQVNUKTsKLX0KLQotVEVTVF9GKFZlcnNp
b25UZXN0LCBBZnRlckludmFsaWRUb2tlbikKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiJFxu
IgotICAgICAgICAgICAgICAgICAgICAgICIjdmVyc2lvbiAyMDBcbiI7Ci0gICAgQVNTRVJUX1RS
VUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIE5VTEwpKTsKLQotICAgIHVzaW5nIHRlc3Rp
bmc6Ol87Ci0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgIHBy
aW50KHBwOjpEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9DSEFSQUNURVIsCi0gICAgICAgICAgICAg
ICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiJCIpKTsKLSAgICBFWFBFQ1RfQ0FM
TChtRGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQ
UF9WRVJTSU9OX05PVF9GSVJTVF9TVEFURU1FTlQsCi0gICAgICAgICAgICAgICAgICAgICAgcHA6
OlNvdXJjZUxvY2F0aW9uKDAsIDIpLCBfKSk7Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAg
ZG8KLSAgICB7Ci0gICAgICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci0gICAgfSB3aGls
ZSAodG9rZW4udHlwZSAhPSBwcDo6VG9rZW46OkxBU1QpOwotfQotCi1URVNUX0YoVmVyc2lvblRl
c3QsIEFmdGVyVmFsaWREaXJlY3RpdmUpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAiI3ZlcnNpb24gMjAwXG4iOwotICAgIEFTU0VSVF9UUlVF
KG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCBOVUxMKSk7Ci0KLSAgICB1c2luZyB0ZXN0aW5n
OjpfOwotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBwcmlu
dChwcDo6RGlhZ25vc3RpY3M6OlBQX1ZFUlNJT05fTk9UX0ZJUlNUX1NUQVRFTUVOVCwKLSAgICAg
ICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMiksIF8pKTsKLQotICAgIHBw
OjpUb2tlbiB0b2tlbjsKLSAgICBkbwotICAgIHsKLSAgICAgICAgbVByZXByb2Nlc3Nvci5sZXgo
JnRva2VuKTsKLSAgICB9IHdoaWxlICh0b2tlbi50eXBlICE9IHBwOjpUb2tlbjo6TEFTVCk7Ci19
Ci0KLVRFU1RfRihWZXJzaW9uVGVzdCwgQWZ0ZXJJbnZhbGlkRGlyZWN0aXZlKQotewotICAgIGNv
bnN0IGNoYXIqIHN0ciA9ICIjZm9vXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiN2ZXJzaW9u
IDIwMFxuIjsKLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgTlVM
TCkpOwotCi0gICAgdXNpbmcgdGVzdGluZzo6XzsKLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3Rp
Y3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9ESVJFQ1RJVkVf
SU5WQUxJRF9OQU1FLAotICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigw
LCAxKSwgImZvbyIpKTsKLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCi0gICAgICAgICAg
ICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9WRVJTSU9OX05PVF9GSVJTVF9TVEFURU1F
TlQsCi0gICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDIpLCBfKSk7
Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgZG8KLSAgICB7Ci0gICAgICAgIG1QcmVwcm9j
ZXNzb3IubGV4KCZ0b2tlbik7Ci0gICAgfSB3aGlsZSAodG9rZW4udHlwZSAhPSBwcDo6VG9rZW46
OkxBU1QpOwotfQotCi1URVNUX0YoVmVyc2lvblRlc3QsIEFmdGVyRXhjbHVkZWRCbG9jaykKLXsK
LSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmIDBcbiIKLSAgICAgICAgICAgICAgICAgICAgICAi
Zm9vXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICIjdmVyc2lvbiAyMDBcbiI7Ci0gICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5p
bml0KDEsICZzdHIsIE5VTEwpKTsKLQotICAgIHVzaW5nIHRlc3Rpbmc6Ol87Ci0gICAgRVhQRUNU
X0NBTEwobURpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGlj
czo6UFBfVkVSU0lPTl9OT1RfRklSU1RfU1RBVEVNRU5ULAotICAgICAgICAgICAgICAgICAgICAg
IHBwOjpTb3VyY2VMb2NhdGlvbigwLCA0KSwgXykpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwot
ICAgIGRvCi0gICAgewotICAgICAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotICAgIH0g
d2hpbGUgKHRva2VuLnR5cGUgIT0gcHA6OlRva2VuOjpMQVNUKTsKLX0KLQotc3RydWN0IFZlcnNp
b25UZXN0UGFyYW0KLXsKLSAgICBjb25zdCBjaGFyKiBzdHI7Ci0gICAgcHA6OkRpYWdub3N0aWNz
OjpJRCBpZDsKLX07Ci0KLWNsYXNzIEludmFsaWRWZXJzaW9uVGVzdCA6IHB1YmxpYyBWZXJzaW9u
VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB0ZXN0aW5nOjpXaXRoUGFy
YW1JbnRlcmZhY2U8VmVyc2lvblRlc3RQYXJhbT4KLXsKLX07Ci0KLVRFU1RfUChJbnZhbGlkVmVy
c2lvblRlc3QsIElkZW50aWZpZWQpCi17Ci0gICAgVmVyc2lvblRlc3RQYXJhbSBwYXJhbSA9IEdl
dFBhcmFtKCk7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iOwotCi0gICAgdXNpbmcg
dGVzdGluZzo6XzsKLSAgICAvLyBObyBoYW5kbGVWZXJzaW9uIGNhbGwuCi0gICAgRVhQRUNUX0NB
TEwobURpcmVjdGl2ZUhhbmRsZXIsIGhhbmRsZVZlcnNpb24oXywgXykpLlRpbWVzKDApOwotICAg
IC8vIEludmFsaWQgdmVyc2lvbiBkaXJlY3RpdmUgY2FsbC4KLSAgICBFWFBFQ1RfQ0FMTChtRGlh
Z25vc3RpY3MsIHByaW50KHBhcmFtLmlkLCBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksIF8pKTsK
LQotICAgIHByZXByb2Nlc3MocGFyYW0uc3RyLCBleHBlY3RlZCk7Ci19Ci0KLXN0YXRpYyBjb25z
dCBWZXJzaW9uVGVzdFBhcmFtIGtQYXJhbXNbXSA9IHsKLSAgICB7IiN2ZXJzaW9uXG4iLCBwcDo6
RGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfVkVSU0lPTl9ESVJFQ1RJVkV9LAotICAgIHsiI3ZlcnNp
b24gZm9vXG4iLCBwcDo6RGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfVkVSU0lPTl9OVU1CRVJ9LAot
ICAgIHsiI3ZlcnNpb24gMTAwIGZvb1xuIiwgcHA6OkRpYWdub3N0aWNzOjpQUF9VTkVYUEVDVEVE
X1RPS0VOfSwKLSAgICB7IiN2ZXJzaW9uIDB4ZmZmZmZmZmZcbiIsIHBwOjpEaWFnbm9zdGljczo6
UFBfSU5URUdFUl9PVkVSRkxPV30KLX07Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFsbCwg
SW52YWxpZFZlcnNpb25UZXN0LCB0ZXN0aW5nOjpWYWx1ZXNJbihrUGFyYW1zKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9BTkdMRVRl
c3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvQU5H
TEVUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2MyMTg0MjQxMTZkNzdk
YTQ4MGY1ZDZjYmM5YjEyNGU0NjA4MjhmZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91
dGlscy9BTkdMRVRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODU1ICswLDAgQEAKLS8vCi0v
LyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
LS8vCi0vLyBBTkdMRVRlc3Q6Ci0vLyAgIEltcGxlbWVudGF0aW9uIG9mIGNvbW1vbiBBTkdMRSB0
ZXN0aW5nIGZpeHR1cmUuCi0vLwotCi0jaW5jbHVkZSAiQU5HTEVUZXN0LmgiCi0jaW5jbHVkZSAi
RUdMV2luZG93LmgiCi0jaW5jbHVkZSAiT1NXaW5kb3cuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9Q
bGF0Zm9ybS5oIgotCi1uYW1lc3BhY2UgYW5nbGUKLXsKLQotY29uc3QgR0xDb2xvclJHQiBHTENv
bG9yUkdCOjpibGFjaygwdSwgMHUsIDB1KTsKLWNvbnN0IEdMQ29sb3JSR0IgR0xDb2xvclJHQjo6
Ymx1ZSgwdSwgMHUsIDI1NXUpOwotY29uc3QgR0xDb2xvclJHQiBHTENvbG9yUkdCOjpncmVlbigw
dSwgMjU1dSwgMHUpOwotY29uc3QgR0xDb2xvclJHQiBHTENvbG9yUkdCOjpyZWQoMjU1dSwgMHUs
IDB1KTsKLWNvbnN0IEdMQ29sb3JSR0IgR0xDb2xvclJHQjo6eWVsbG93KDI1NXUsIDI1NXUsIDAp
OwotCi1jb25zdCBHTENvbG9yIEdMQ29sb3I6OmJsYWNrICAgICAgICAgICAgPSBHTENvbG9yKDB1
LCAwdSwgMHUsIDI1NXUpOwotY29uc3QgR0xDb2xvciBHTENvbG9yOjpibHVlICAgICAgICAgICAg
ID0gR0xDb2xvcigwdSwgMHUsIDI1NXUsIDI1NXUpOwotY29uc3QgR0xDb2xvciBHTENvbG9yOjpj
eWFuICAgICAgICAgICAgID0gR0xDb2xvcigwdSwgMjU1dSwgMjU1dSwgMjU1dSk7Ci1jb25zdCBH
TENvbG9yIEdMQ29sb3I6OmdyZWVuICAgICAgICAgICAgPSBHTENvbG9yKDB1LCAyNTV1LCAwdSwg
MjU1dSk7Ci1jb25zdCBHTENvbG9yIEdMQ29sb3I6OnJlZCAgICAgICAgICAgICAgPSBHTENvbG9y
KDI1NXUsIDB1LCAwdSwgMjU1dSk7Ci1jb25zdCBHTENvbG9yIEdMQ29sb3I6OnRyYW5zcGFyZW50
QmxhY2sgPSBHTENvbG9yKDB1LCAwdSwgMHUsIDB1KTsKLWNvbnN0IEdMQ29sb3IgR0xDb2xvcjo6
d2hpdGUgICAgICAgICAgICA9IEdMQ29sb3IoMjU1dSwgMjU1dSwgMjU1dSwgMjU1dSk7Ci1jb25z
dCBHTENvbG9yIEdMQ29sb3I6OnllbGxvdyAgICAgICAgICAgPSBHTENvbG9yKDI1NXUsIDI1NXUs
IDAsIDI1NXUpOwotCi1uYW1lc3BhY2UKLXsKLWZsb2F0IENvbG9yTm9ybShHTHVieXRlIGNoYW5u
ZWxWYWx1ZSkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNoYW5uZWxWYWx1ZSkg
LyAyNTUuMGY7Ci19Ci0KLUdMdWJ5dGUgQ29sb3JEZW5vcm0oZmxvYXQgY29sb3JWYWx1ZSkKLXsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oY29sb3JWYWx1ZSAqIDI1NS4wZik7Ci19
Ci0KLS8vIFVzZSBhIGN1c3RvbSBBTkdMRSBwbGF0Zm9ybSBjbGFzcyB0byBjYXB0dXJlIGFuZCBy
ZXBvcnQgaW50ZXJuYWwgZXJyb3JzLgotY2xhc3MgVGVzdFBsYXRmb3JtIDogcHVibGljIGFuZ2xl
OjpQbGF0Zm9ybQotewotICBwdWJsaWM6Ci0gICAgVGVzdFBsYXRmb3JtKCkgOiBtSWdub3JlTWVz
c2FnZXMoZmFsc2UpIHt9Ci0KLSAgICB2b2lkIGxvZ0Vycm9yKGNvbnN0IGNoYXIgKmVycm9yTWVz
c2FnZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBsb2dXYXJuaW5nKGNvbnN0IGNoYXIgKndhcm5pbmdN
ZXNzYWdlKSBvdmVycmlkZTsKLSAgICB2b2lkIGxvZ0luZm8oY29uc3QgY2hhciAqaW5mb01lc3Nh
Z2UpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBpZ25vcmVNZXNzYWdlcygpOwotICAgIHZvaWQgZW5h
YmxlTWVzc2FnZXMoKTsKLQotICBwcml2YXRlOgotICAgIGJvb2wgbUlnbm9yZU1lc3NhZ2VzOwot
fTsKLQotdm9pZCBUZXN0UGxhdGZvcm06OmxvZ0Vycm9yKGNvbnN0IGNoYXIgKmVycm9yTWVzc2Fn
ZSkKLXsKLSAgICBpZiAobUlnbm9yZU1lc3NhZ2VzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBG
QUlMKCkgPDwgZXJyb3JNZXNzYWdlOwotfQotCi12b2lkIFRlc3RQbGF0Zm9ybTo6bG9nV2Fybmlu
Zyhjb25zdCBjaGFyICp3YXJuaW5nTWVzc2FnZSkKLXsKLSAgICBpZiAobUlnbm9yZU1lc3NhZ2Vz
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdGQ6OmNlcnIgPDwgIldhcm5pbmc6ICIgPDwgd2Fy
bmluZ01lc3NhZ2UgPDwgc3RkOjplbmRsOwotfQotCi12b2lkIFRlc3RQbGF0Zm9ybTo6bG9nSW5m
byhjb25zdCBjaGFyICppbmZvTWVzc2FnZSkKLXsKLSAgICBpZiAobUlnbm9yZU1lc3NhZ2VzKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBhbmdsZTo6V3JpdGVEZWJ1Z01lc3NhZ2UoIiVzXG4iLCBp
bmZvTWVzc2FnZSk7Ci19Ci0KLXZvaWQgVGVzdFBsYXRmb3JtOjppZ25vcmVNZXNzYWdlcygpCi17
Ci0gICAgbUlnbm9yZU1lc3NhZ2VzID0gdHJ1ZTsKLX0KLQotdm9pZCBUZXN0UGxhdGZvcm06OmVu
YWJsZU1lc3NhZ2VzKCkKLXsKLSAgICBtSWdub3JlTWVzc2FnZXMgPSBmYWxzZTsKLX0KLQotVGVz
dFBsYXRmb3JtIGdfdGVzdFBsYXRmb3JtSW5zdGFuY2U7Ci0KLXN0ZDo6YXJyYXk8VmVjdG9yMywg
ND4gR2V0SW5kZXhlZFF1YWRWZXJ0aWNlcygpCi17Ci0gICAgc3RkOjphcnJheTxWZWN0b3IzLCA0
PiB2ZXJ0aWNlczsKLSAgICB2ZXJ0aWNlc1swXSA9IFZlY3RvcjMoLTEuMGYsIDEuMGYsIDAuNWYp
OwotICAgIHZlcnRpY2VzWzFdID0gVmVjdG9yMygtMS4wZiwgLTEuMGYsIDAuNWYpOwotICAgIHZl
cnRpY2VzWzJdID0gVmVjdG9yMygxLjBmLCAtMS4wZiwgMC41Zik7Ci0gICAgdmVydGljZXNbM10g
PSBWZWN0b3IzKDEuMGYsIDEuMGYsIDAuNWYpOwotICAgIHJldHVybiB2ZXJ0aWNlczsKLX0KLQot
fSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi1HTENvbG9yUkdCOjpHTENvbG9yUkdCKCkgOiBS
KDApLCBHKDApLCBCKDApCi17Ci19Ci0KLUdMQ29sb3JSR0I6OkdMQ29sb3JSR0IoR0x1Ynl0ZSBy
LCBHTHVieXRlIGcsIEdMdWJ5dGUgYikgOiBSKHIpLCBHKGcpLCBCKGIpCi17Ci19Ci0KLUdMQ29s
b3JSR0I6OkdMQ29sb3JSR0IoY29uc3QgVmVjdG9yMyAmZmxvYXRDb2xvcikKLSAgICA6IFIoQ29s
b3JEZW5vcm0oZmxvYXRDb2xvci54KSksIEcoQ29sb3JEZW5vcm0oZmxvYXRDb2xvci55KSksIEIo
Q29sb3JEZW5vcm0oZmxvYXRDb2xvci56KSkKLXsKLX0KLQotR0xDb2xvcjo6R0xDb2xvcigpIDog
UigwKSwgRygwKSwgQigwKSwgQSgwKQotewotfQotCi1HTENvbG9yOjpHTENvbG9yKEdMdWJ5dGUg
ciwgR0x1Ynl0ZSBnLCBHTHVieXRlIGIsIEdMdWJ5dGUgYSkgOiBSKHIpLCBHKGcpLCBCKGIpLCBB
KGEpCi17Ci19Ci0KLUdMQ29sb3I6OkdMQ29sb3IoY29uc3QgVmVjdG9yNCAmZmxvYXRDb2xvcikK
LSAgICA6IFIoQ29sb3JEZW5vcm0oZmxvYXRDb2xvci54KSksCi0gICAgICBHKENvbG9yRGVub3Jt
KGZsb2F0Q29sb3IueSkpLAotICAgICAgQihDb2xvckRlbm9ybShmbG9hdENvbG9yLnopKSwKLSAg
ICAgIEEoQ29sb3JEZW5vcm0oZmxvYXRDb2xvci53KSkKLXsKLX0KLQotR0xDb2xvcjo6R0xDb2xv
cihHTHVpbnQgY29sb3JWYWx1ZSkgOiBSKDApLCBHKDApLCBCKDApLCBBKDApCi17Ci0gICAgbWVt
Y3B5KCZSLCAmY29sb3JWYWx1ZSwgc2l6ZW9mKEdMdWludCkpOwotfQotCi1WZWN0b3I0IEdMQ29s
b3I6OnRvTm9ybWFsaXplZFZlY3RvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFZlY3RvcjQoQ29s
b3JOb3JtKFIpLCBDb2xvck5vcm0oRyksIENvbG9yTm9ybShCKSwgQ29sb3JOb3JtKEEpKTsKLX0K
LQotR0xDb2xvciBSZWFkQ29sb3IoR0xpbnQgeCwgR0xpbnQgeSkKLXsKLSAgICBHTENvbG9yIGFj
dHVhbDsKLSAgICBnbFJlYWRQaXhlbHMoKHgpLCAoeSksIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lH
TkVEX0JZVEUsICZhY3R1YWwuUik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgcmV0
dXJuIGFjdHVhbDsKLX0KLQotYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdMQ29sb3IgJmEsIGNvbnN0
IEdMQ29sb3IgJmIpCi17Ci0gICAgcmV0dXJuIGEuUiA9PSBiLlIgJiYgYS5HID09IGIuRyAmJiBh
LkIgPT0gYi5CICYmIGEuQSA9PSBiLkE7Ci19Ci0KLXN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChz
dGQ6Om9zdHJlYW0gJm9zdHJlYW0sIGNvbnN0IEdMQ29sb3IgJmNvbG9yKQotewotICAgIG9zdHJl
YW0gPDwgIigiIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY29sb3IuUikgPDwgIiwgIgot
ICAgICAgICAgICAgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb2xvci5HKSA8PCAiLCAi
IDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY29sb3IuQikKLSAgICAgICAgICAgIDw8ICIs
ICIgPDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihjb2xvci5BKSA8PCAiKSI7Ci0gICAgcmV0
dXJuIG9zdHJlYW07Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBhbmdsZQotCi0vLyBzdGF0aWMKLXN0
ZDo6YXJyYXk8VmVjdG9yMywgNj4gQU5HTEVUZXN0OjpHZXRRdWFkVmVydGljZXMoKQotewotICAg
IHN0ZDo6YXJyYXk8VmVjdG9yMywgNj4gdmVydGljZXM7Ci0gICAgdmVydGljZXNbMF0gPSBWZWN0
b3IzKC0xLjBmLCAxLjBmLCAwLjVmKTsKLSAgICB2ZXJ0aWNlc1sxXSA9IFZlY3RvcjMoLTEuMGYs
IC0xLjBmLCAwLjVmKTsKLSAgICB2ZXJ0aWNlc1syXSA9IFZlY3RvcjMoMS4wZiwgLTEuMGYsIDAu
NWYpOwotICAgIHZlcnRpY2VzWzNdID0gVmVjdG9yMygtMS4wZiwgMS4wZiwgMC41Zik7Ci0gICAg
dmVydGljZXNbNF0gPSBWZWN0b3IzKDEuMGYsIC0xLjBmLCAwLjVmKTsKLSAgICB2ZXJ0aWNlc1s1
XSA9IFZlY3RvcjMoMS4wZiwgMS4wZiwgMC41Zik7Ci0gICAgcmV0dXJuIHZlcnRpY2VzOwotfQot
Ci1BTkdMRVRlc3Q6OkFOR0xFVGVzdCgpCi0gICAgOiBtRUdMV2luZG93KG51bGxwdHIpLAotICAg
ICAgbVdpZHRoKDE2KSwKLSAgICAgIG1IZWlnaHQoMTYpLAotICAgICAgbUlnbm9yZUQzRDExU0RL
TGF5ZXJzV2FybmluZ3MoZmFsc2UpLAotICAgICAgbVF1YWRWZXJ0ZXhCdWZmZXIoMCkKLXsKLSAg
ICBtRUdMV2luZG93ID0KLSAgICAgICAgbmV3IEVHTFdpbmRvdyhHZXRQYXJhbSgpLm1ham9yVmVy
c2lvbiwgR2V0UGFyYW0oKS5taW5vclZlcnNpb24sIEdldFBhcmFtKCkuZWdsUGFyYW1ldGVycyk7
Ci19Ci0KLUFOR0xFVGVzdDo6fkFOR0xFVGVzdCgpCi17Ci0gICAgaWYgKG1RdWFkVmVydGV4QnVm
ZmVyKQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtUXVhZFZlcnRleEJ1ZmZl
cik7Ci0gICAgfQotICAgIFNhZmVEZWxldGUobUVHTFdpbmRvdyk7Ci19Ci0KLXZvaWQgQU5HTEVU
ZXN0OjpTZXRVcCgpCi17Ci0gICAgYW5nbGU6OmdfdGVzdFBsYXRmb3JtSW5zdGFuY2UuZW5hYmxl
TWVzc2FnZXMoKTsKLQotICAgIC8vIFJlc2l6ZSB0aGUgd2luZG93IGJlZm9yZSBjcmVhdGluZyB0
aGUgY29udGV4dCBzbyB0aGF0IHRoZSBmaXJzdCBtYWtlIGN1cnJlbnQKLSAgICAvLyBzZXRzIHRo
ZSB2aWV3cG9ydCBhbmQgc2Npc3NvciBib3ggdG8gdGhlIHJpZ2h0IHNpemUuCi0gICAgYm9vbCBu
ZWVkU3dhcCA9IGZhbHNlOwotICAgIGlmIChtT1NXaW5kb3ctPmdldFdpZHRoKCkgIT0gbVdpZHRo
IHx8IG1PU1dpbmRvdy0+Z2V0SGVpZ2h0KCkgIT0gbUhlaWdodCkKLSAgICB7Ci0gICAgICAgIGlm
ICghbU9TV2luZG93LT5yZXNpemUobVdpZHRoLCBtSGVpZ2h0KSkKLSAgICAgICAgewotICAgICAg
ICAgICAgRkFJTCgpIDw8ICJGYWlsZWQgdG8gcmVzaXplIEFOR0xFIHRlc3Qgd2luZG93LiI7Ci0g
ICAgICAgIH0KLSAgICAgICAgbmVlZFN3YXAgPSB0cnVlOwotICAgIH0KLQotICAgIGlmICghY3Jl
YXRlRUdMQ29udGV4dCgpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJlZ2wgY29udGV4dCBj
cmVhdGlvbiBmYWlsZWQuIjsKLSAgICB9Ci0KLSAgICBpZiAobmVlZFN3YXApCi0gICAgewotICAg
ICAgICAvLyBTd2FwIHRoZSBidWZmZXJzIHNvIHRoYXQgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIg
cGlja3MgdXAgdGhlIHJlc2l6ZQotICAgICAgICAvLyB3aGljaCB3aWxsIGFsbG93IGZvbGxvdy11
cCB0ZXN0IGNvZGUgdG8gYXNzdW1lIHRoZSBmcmFtZWJ1ZmZlciBjb3ZlcnMKLSAgICAgICAgLy8g
dGhlIHdob2xlIHdpbmRvdy4KLSAgICAgICAgc3dhcEJ1ZmZlcnMoKTsKLSAgICB9Ci0KLSAgICAv
LyBUaGlzIFZpZXdwb3J0IGNvbW1hbmQgaXMgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSBidXQgd2Ug
YWRkIGl0IHNvIHRoYXQgcHJvZ3JhbXMKLSAgICAvLyB0YWtpbmcgT3BlbkdMIHRyYWNlcyBjYW4g
Z3Vlc3MgdGhlIHNpemUgb2YgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIgYW5kIHNob3cgaXQKLSAg
ICAvLyBpbiB0aGVpciBVSXMKLSAgICBnbFZpZXdwb3J0KDAsIDAsIG1XaWR0aCwgbUhlaWdodCk7
Ci0KLSAgICBjb25zdCBhdXRvICZpbmZvID0gdGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNl
KCktPmN1cnJlbnRfdGVzdF9pbmZvKCk7Ci0gICAgYW5nbGU6OldyaXRlRGVidWdNZXNzYWdlKCJF
bnRlcmluZyAlcy4lc1xuIiwgaW5mby0+dGVzdF9jYXNlX25hbWUoKSwgaW5mby0+bmFtZSgpKTsK
LX0KLQotdm9pZCBBTkdMRVRlc3Q6OlRlYXJEb3duKCkKLXsKLSAgICBjaGVja0QzRDExU0RLTGF5
ZXJzTWVzc2FnZXMoKTsKLQotICAgIGNvbnN0IGF1dG8gJmluZm8gPSB0ZXN0aW5nOjpVbml0VGVz
dDo6R2V0SW5zdGFuY2UoKS0+Y3VycmVudF90ZXN0X2luZm8oKTsKLSAgICBhbmdsZTo6V3JpdGVE
ZWJ1Z01lc3NhZ2UoIkV4aXRpbmcgJXMuJXNcbiIsIGluZm8tPnRlc3RfY2FzZV9uYW1lKCksIGlu
Zm8tPm5hbWUoKSk7Ci0KLSAgICBzd2FwQnVmZmVycygpOwotICAgIG1PU1dpbmRvdy0+bWVzc2Fn
ZUxvb3AoKTsKLQotICAgIGlmICghZGVzdHJveUVHTENvbnRleHQoKSkKLSAgICB7Ci0gICAgICAg
IEZBSUwoKSA8PCAiZWdsIGNvbnRleHQgZGVzdHJ1Y3Rpb24gZmFpbGVkLiI7Ci0gICAgfQotCi0g
ICAgLy8gQ2hlY2sgZm9yIHF1aXQgbWVzc2FnZQotICAgIEV2ZW50IG15RXZlbnQ7Ci0gICAgd2hp
bGUgKG1PU1dpbmRvdy0+cG9wRXZlbnQoJm15RXZlbnQpKQotICAgIHsKLSAgICAgICAgaWYgKG15
RXZlbnQuVHlwZSA9PSBFdmVudDo6RVZFTlRfQ0xPU0VEKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBleGl0KDApOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEFOR0xFVGVzdDo6c3dhcEJ1
ZmZlcnMoKQotewotICAgIGlmIChtRUdMV2luZG93LT5pc0dMSW5pdGlhbGl6ZWQoKSkKLSAgICB7
Ci0gICAgICAgIG1FR0xXaW5kb3ctPnN3YXAoKTsKLSAgICB9Ci19Ci0KLXZvaWQgQU5HTEVUZXN0
OjpzZXR1cFF1YWRWZXJ0ZXhCdWZmZXIoR0xmbG9hdCBwb3NpdGlvbkF0dHJpYlosIEdMZmxvYXQg
cG9zaXRpb25BdHRyaWJYWVNjYWxlKQotewotICAgIGlmIChtUXVhZFZlcnRleEJ1ZmZlciA9PSAw
KQotICAgIHsKLSAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtUXVhZFZlcnRleEJ1ZmZlcik7Ci0g
ICAgfQotCi0gICAgYXV0byBxdWFkVmVydGljZXMgPSBHZXRRdWFkVmVydGljZXMoKTsKLSAgICBm
b3IgKFZlY3RvcjMgJnZlcnRleCA6IHF1YWRWZXJ0aWNlcykKLSAgICB7Ci0gICAgICAgIHZlcnRl
eC54ICo9IHBvc2l0aW9uQXR0cmliWFlTY2FsZTsKLSAgICAgICAgdmVydGV4LnkgKj0gcG9zaXRp
b25BdHRyaWJYWVNjYWxlOwotICAgICAgICB2ZXJ0ZXgueiA9IHBvc2l0aW9uQXR0cmliWjsKLSAg
ICB9Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtUXVhZFZlcnRleEJ1ZmZl
cik7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKEdMZmxvYXQpICog
MyAqIDYsIHF1YWRWZXJ0aWNlcy5kYXRhKCksIEdMX1NUQVRJQ19EUkFXKTsKLX0KLQotdm9pZCBB
TkdMRVRlc3Q6OnNldHVwSW5kZXhlZFF1YWRWZXJ0ZXhCdWZmZXIoR0xmbG9hdCBwb3NpdGlvbkF0
dHJpYlosIEdMZmxvYXQgcG9zaXRpb25BdHRyaWJYWVNjYWxlKQotewotICAgIGlmIChtUXVhZFZl
cnRleEJ1ZmZlciA9PSAwKQotICAgIHsKLSAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtUXVhZFZl
cnRleEJ1ZmZlcik7Ci0gICAgfQotCi0gICAgYXV0byBxdWFkVmVydGljZXMgPSBhbmdsZTo6R2V0
SW5kZXhlZFF1YWRWZXJ0aWNlcygpOwotICAgIGZvciAoVmVjdG9yMyAmdmVydGV4IDogcXVhZFZl
cnRpY2VzKQotICAgIHsKLSAgICAgICAgdmVydGV4LnggKj0gcG9zaXRpb25BdHRyaWJYWVNjYWxl
OwotICAgICAgICB2ZXJ0ZXgueSAqPSBwb3NpdGlvbkF0dHJpYlhZU2NhbGU7Ci0gICAgICAgIHZl
cnRleC56ID0gcG9zaXRpb25BdHRyaWJaOwotICAgIH0KLQotICAgIGdsQmluZEJ1ZmZlcihHTF9B
UlJBWV9CVUZGRVIsIG1RdWFkVmVydGV4QnVmZmVyKTsKLSAgICBnbEJ1ZmZlckRhdGEoR0xfQVJS
QVlfQlVGRkVSLCBzaXplb2YoR0xmbG9hdCkgKiAzICogNCwgcXVhZFZlcnRpY2VzLmRhdGEoKSwg
R0xfU1RBVElDX0RSQVcpOwotfQotCi0vLyBzdGF0aWMKLXZvaWQgQU5HTEVUZXN0OjpkcmF3UXVh
ZChHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyAmcG9zaXRpb25BdHRyaWJOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgcG9zaXRpb25BdHRyaWJaKQotewotICAgIGRyYXdRdWFkKHByb2dyYW0sIHBvc2l0aW9uQXR0
cmliTmFtZSwgcG9zaXRpb25BdHRyaWJaLCAxLjBmKTsKLX0KLQotLy8gc3RhdGljCi12b2lkIEFO
R0xFVGVzdDo6ZHJhd1F1YWQoR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnBvc2l0aW9uQXR0cmliTmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWFlTY2FsZSkKLXsKLSAgICBkcmF3UXVhZChwcm9n
cmFtLCBwb3NpdGlvbkF0dHJpYk5hbWUsIHBvc2l0aW9uQXR0cmliWiwgcG9zaXRpb25BdHRyaWJY
WVNjYWxlLCBmYWxzZSk7Ci19Ci0KLXZvaWQgQU5HTEVUZXN0OjpkcmF3UXVhZChHTHVpbnQgcHJv
Z3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmcG9zaXRp
b25BdHRyaWJOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcG9zaXRpb25B
dHRyaWJaLAotICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcG9zaXRpb25BdHRyaWJY
WVNjYWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlVmVydGV4QnVmZmVyKQot
ewotICAgIEdMaW50IHByZXZpb3VzUHJvZ3JhbSA9IDA7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9D
VVJSRU5UX1BST0dSQU0sICZwcmV2aW91c1Byb2dyYW0pOwotICAgIGlmIChwcmV2aW91c1Byb2dy
YW0gIT0gc3RhdGljX2Nhc3Q8R0xpbnQ+KHByb2dyYW0pKQotICAgIHsKLSAgICAgICAgZ2xVc2VQ
cm9ncmFtKHByb2dyYW0pOwotICAgIH0KLQotICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBn
bEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIHBvc2l0aW9uQXR0cmliTmFtZS5jX3N0cigpKTsK
LQotICAgIGlmICh1c2VWZXJ0ZXhCdWZmZXIpCi0gICAgewotICAgICAgICBzZXR1cFF1YWRWZXJ0
ZXhCdWZmZXIocG9zaXRpb25BdHRyaWJaLCBwb3NpdGlvbkF0dHJpYlhZU2NhbGUpOwotICAgICAg
ICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgMywgR0xfRkxPQVQsIEdM
X0ZBTFNFLCAwLCAwKTsKLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7
Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGF1dG8gcXVhZFZlcnRpY2VzID0gR2V0
UXVhZFZlcnRpY2VzKCk7Ci0gICAgICAgIGZvciAoVmVjdG9yMyAmdmVydGV4IDogcXVhZFZlcnRp
Y2VzKQotICAgICAgICB7Ci0gICAgICAgICAgICB2ZXJ0ZXgueCAqPSBwb3NpdGlvbkF0dHJpYlhZ
U2NhbGU7Ci0gICAgICAgICAgICB2ZXJ0ZXgueSAqPSBwb3NpdGlvbkF0dHJpYlhZU2NhbGU7Ci0g
ICAgICAgICAgICB2ZXJ0ZXgueiA9IHBvc2l0aW9uQXR0cmliWjsKLSAgICAgICAgfQotCi0gICAg
ICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCAzLCBHTF9GTE9BVCwg
R0xfRkFMU0UsIDAsIHF1YWRWZXJ0aWNlcy5kYXRhKCkpOwotICAgIH0KLSAgICBnbEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOwotCi0gICAgZ2xEcmF3QXJyYXlzKEdM
X1RSSUFOR0xFUywgMCwgNik7Ci0KLSAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3Np
dGlvbkxvY2F0aW9uKTsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlv
biwgNCwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBOVUxMKTsKLQotICAgIGlmIChwcmV2aW91c1By
b2dyYW0gIT0gc3RhdGljX2Nhc3Q8R0xpbnQ+KHByb2dyYW0pKQotICAgIHsKLSAgICAgICAgZ2xV
c2VQcm9ncmFtKHByZXZpb3VzUHJvZ3JhbSk7Ci0gICAgfQotfQotCi12b2lkIEFOR0xFVGVzdDo6
ZHJhd0luZGV4ZWRRdWFkKEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmcG9zaXRpb25BdHRyaWJOYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWikKLXsKLSAgICBk
cmF3SW5kZXhlZFF1YWQocHJvZ3JhbSwgcG9zaXRpb25BdHRyaWJOYW1lLCBwb3NpdGlvbkF0dHJp
YlosIDEuMGYpOwotfQotCi12b2lkIEFOR0xFVGVzdDo6ZHJhd0luZGV4ZWRRdWFkKEdMdWludCBw
cm9ncmFtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmcG9zaXRpb25BdHRyaWJOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0IHBvc2l0aW9uQXR0cmliWiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCBwb3NpdGlvbkF0dHJpYlhZU2NhbGUpCi17Ci0gICAgR0xpbnQgcG9zaXRpb25Mb2Nh
dGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgcG9zaXRpb25BdHRyaWJOYW1lLmNf
c3RyKCkpOwotCi0gICAgR0xpbnQgYWN0aXZlUHJvZ3JhbSA9IDA7Ci0gICAgZ2xHZXRJbnRlZ2Vy
dihHTF9DVVJSRU5UX1BST0dSQU0sICZhY3RpdmVQcm9ncmFtKTsKLSAgICBpZiAoc3RhdGljX2Nh
c3Q8R0x1aW50PihhY3RpdmVQcm9ncmFtKSAhPSBwcm9ncmFtKQotICAgIHsKLSAgICAgICAgZ2xV
c2VQcm9ncmFtKHByb2dyYW0pOwotICAgIH0KLQotICAgIEdMdWludCBwcmV2QmluZGluZyA9IDA7
Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9BUlJBWV9CVUZGRVJfQklORElORywgcmVpbnRlcnByZXRf
Y2FzdDxHTGludCAqPigmcHJldkJpbmRpbmcpKTsKLQotICAgIHNldHVwSW5kZXhlZFF1YWRWZXJ0
ZXhCdWZmZXIocG9zaXRpb25BdHRyaWJaLCBwb3NpdGlvbkF0dHJpYlhZU2NhbGUpOwotCi0gICAg
Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDMsIEdMX0ZMT0FULCBHTF9G
QUxTRSwgMCwgbnVsbHB0cik7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlv
bkxvY2F0aW9uKTsKLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBwcmV2QmluZGlu
Zyk7Ci0KLSAgICBjb25zdCBHTHVzaG9ydCBpbmRpY2VzW10gPSB7Ci0gICAgICAgIDAsIDEsIDIs
IDAsIDIsIDMsCi0gICAgfTsKLQotICAgIGdsRHJhd0VsZW1lbnRzKEdMX1RSSUFOR0xFUywgNiwg
R0xfVU5TSUdORURfU0hPUlQsIGluZGljZXMpOwotCi0gICAgZ2xEaXNhYmxlVmVydGV4QXR0cmli
QXJyYXkocG9zaXRpb25Mb2NhdGlvbik7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0
aW9uTG9jYXRpb24sIDQsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgTlVMTCk7Ci0KLSAgICBpZiAo
c3RhdGljX2Nhc3Q8R0x1aW50PihhY3RpdmVQcm9ncmFtKSAhPSBwcm9ncmFtKQotICAgIHsKLSAg
ICAgICAgZ2xVc2VQcm9ncmFtKHN0YXRpY19jYXN0PEdMdWludD4oYWN0aXZlUHJvZ3JhbSkpOwot
ICAgIH0KLX0KLQotR0x1aW50IEFOR0xFVGVzdDo6Y29tcGlsZVNoYWRlcihHTGVudW0gdHlwZSwg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNvdXJjZSkKLXsKLSAgICBHTHVpbnQgc2hhZGVyID0gZ2xDcmVh
dGVTaGFkZXIodHlwZSk7Ci0KLSAgICBjb25zdCBjaGFyICpzb3VyY2VBcnJheVsxXSA9IHsgc291
cmNlLmNfc3RyKCkgfTsKLSAgICBnbFNoYWRlclNvdXJjZShzaGFkZXIsIDEsIHNvdXJjZUFycmF5
LCBOVUxMKTsKLSAgICBnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKLQotICAgIEdMaW50IGNvbXBp
bGVSZXN1bHQ7Ci0gICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIEdMX0NPTVBJTEVfU1RBVFVTLCAm
Y29tcGlsZVJlc3VsdCk7Ci0KLSAgICBpZiAoY29tcGlsZVJlc3VsdCA9PSAwKQotICAgIHsKLSAg
ICAgICAgR0xpbnQgaW5mb0xvZ0xlbmd0aDsKLSAgICAgICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIs
IEdMX0lORk9fTE9HX0xFTkdUSCwgJmluZm9Mb2dMZW5ndGgpOwotCi0gICAgICAgIGlmIChpbmZv
TG9nTGVuZ3RoID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6Y2VyciA8PCAic2hh
ZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCB3aXRoIGVtcHR5IGxvZy4iIDw8IHN0ZDo6ZW5kbDsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6dmVjdG9y
PEdMY2hhcj4gaW5mb0xvZyhpbmZvTG9nTGVuZ3RoKTsKLSAgICAgICAgICAgIGdsR2V0U2hhZGVy
SW5mb0xvZyhzaGFkZXIsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGluZm9Mb2cuc2l6ZSgpKSwgTlVM
TCwgJmluZm9Mb2dbMF0pOwotCi0gICAgICAgICAgICBzdGQ6OmNlcnIgPDwgInNoYWRlciBjb21w
aWxhdGlvbiBmYWlsZWQ6ICIgPDwgJmluZm9Mb2dbMF07Ci0gICAgICAgIH0KLQotICAgICAgICBn
bERlbGV0ZVNoYWRlcihzaGFkZXIpOwotICAgICAgICBzaGFkZXIgPSAwOwotICAgIH0KLQotICAg
IHJldHVybiBzaGFkZXI7Ci19Ci0KLXZvaWQgQU5HTEVUZXN0OjpjaGVja0QzRDExU0RLTGF5ZXJz
TWVzc2FnZXMoKQotewotI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fV0lORE9XUykgJiYgIWRl
ZmluZWQoTkRFQlVHKQotICAgIC8vIEluIGRlYnVnIEQzRDExIG1vZGUsIGNoZWNrIElEM0QxMUlu
Zm9RdWV1ZSB0byBzZWUgaWYgYW55IEQzRDExIFNESyBMYXllcnMgbWVzc2FnZXMKLSAgICAvLyB3
ZXJlIG91dHB1dHRlZCBieSB0aGUgdGVzdAotICAgIGlmIChtSWdub3JlRDNEMTFTREtMYXllcnNX
YXJuaW5ncyB8fAotICAgICAgICBtRUdMV2luZG93LT5nZXRQbGF0Zm9ybSgpLnJlbmRlcmVyICE9
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFIHx8Ci0gICAgICAgIG1FR0xXaW5k
b3ctPmdldERpc3BsYXkoKSA9PSBFR0xfTk9fRElTUExBWSkKLSAgICB7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBjb25zdCBjaGFyICpleHRlbnNpb25TdHJpbmcgPQotICAgICAgICBz
dGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KGVnbFF1ZXJ5U3RyaW5nKG1FR0xXaW5kb3ctPmdldERp
c3BsYXkoKSwgRUdMX0VYVEVOU0lPTlMpKTsKLSAgICBpZiAoIXN0cnN0cihleHRlbnNpb25TdHJp
bmcsICJFR0xfRVhUX2RldmljZV9xdWVyeSIpKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEVHTEF0dHJpYiBkZXZpY2UgICAgICA9IDA7Ci0gICAgRUdMQXR0cmliIGFuZ2xl
RGV2aWNlID0gMDsKLQotICAgIFBGTkVHTFFVRVJZRElTUExBWUFUVFJJQkVYVFBST0MgcXVlcnlE
aXNwbGF5QXR0cmliRVhUOwotICAgIFBGTkVHTFFVRVJZREVWSUNFQVRUUklCRVhUUFJPQyBxdWVy
eURldmljZUF0dHJpYkVYVDsKLQotICAgIHF1ZXJ5RGlzcGxheUF0dHJpYkVYVCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UEZORUdMUVVFUllESVNQTEFZQVRUUklCRVhUUFJPQz4oCi0gICAgICAgIGVnbEdl
dFByb2NBZGRyZXNzKCJlZ2xRdWVyeURpc3BsYXlBdHRyaWJFWFQiKSk7Ci0gICAgcXVlcnlEZXZp
Y2VBdHRyaWJFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkVHTFFVRVJZREVWSUNFQVRUUklCRVhU
UFJPQz4oCi0gICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJlZ2xRdWVyeURldmljZUF0dHJpYkVY
VCIpKTsKLSAgICBBU1NFUlRfTkUobnVsbHB0ciwgcXVlcnlEaXNwbGF5QXR0cmliRVhUKTsKLSAg
ICBBU1NFUlRfTkUobnVsbHB0ciwgcXVlcnlEZXZpY2VBdHRyaWJFWFQpOwotCi0gICAgQVNTRVJU
X0VHTF9UUlVFKHF1ZXJ5RGlzcGxheUF0dHJpYkVYVChtRUdMV2luZG93LT5nZXREaXNwbGF5KCks
IEVHTF9ERVZJQ0VfRVhULCAmYW5nbGVEZXZpY2UpKTsKLSAgICBBU1NFUlRfRUdMX1RSVUUocXVl
cnlEZXZpY2VBdHRyaWJFWFQocmVpbnRlcnByZXRfY2FzdDxFR0xEZXZpY2VFWFQ+KGFuZ2xlRGV2
aWNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0QzRDEx
X0RFVklDRV9BTkdMRSwgJmRldmljZSkpOwotICAgIElEM0QxMURldmljZSAqZDNkMTFEZXZpY2Ug
PSByZWludGVycHJldF9jYXN0PElEM0QxMURldmljZSAqPihkZXZpY2UpOwotCi0gICAgSUQzRDEx
SW5mb1F1ZXVlICppbmZvUXVldWUgPSBudWxscHRyOwotICAgIEhSRVNVTFQgaHIgPQotICAgICAg
ICBkM2QxMURldmljZS0+UXVlcnlJbnRlcmZhY2UoX191dWlkb2YoaW5mb1F1ZXVlKSwgcmVpbnRl
cnByZXRfY2FzdDx2b2lkICoqPigmaW5mb1F1ZXVlKSk7Ci0gICAgaWYgKFNVQ0NFRURFRChocikp
Ci0gICAgewotICAgICAgICBVSU5UNjQgbnVtU3RvcmVkRDNERGVidWdNZXNzYWdlcyA9Ci0gICAg
ICAgICAgICBpbmZvUXVldWUtPkdldE51bVN0b3JlZE1lc3NhZ2VzQWxsb3dlZEJ5UmV0cmlldmFs
RmlsdGVyKCk7Ci0KLSAgICAgICAgaWYgKG51bVN0b3JlZEQzRERlYnVnTWVzc2FnZXMgPiAwKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKFVJTlQ2NCBpID0gMDsgaSA8IG51bVN0b3JlZEQz
RERlYnVnTWVzc2FnZXM7IGkrKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTSVpF
X1QgbWVzc2FnZUxlbmd0aCA9IDA7Ci0gICAgICAgICAgICAgICAgaHIgICAgICAgICAgICAgICAg
ICAgPSBpbmZvUXVldWUtPkdldE1lc3NhZ2UoaSwgbnVsbHB0ciwgJm1lc3NhZ2VMZW5ndGgpOwot
Ci0gICAgICAgICAgICAgICAgaWYgKFNVQ0NFRURFRChocikpCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBEM0QxMV9NRVNTQUdFICpwTWVzc2FnZSA9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PEQzRDExX01FU1NBR0UgKj4obWFsbG9jKG1l
c3NhZ2VMZW5ndGgpKTsKLSAgICAgICAgICAgICAgICAgICAgaW5mb1F1ZXVlLT5HZXRNZXNzYWdl
KGksIHBNZXNzYWdlLCAmbWVzc2FnZUxlbmd0aCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJNZXNzYWdlICIgPDwgaSA8PCAiOiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICIgIiA8PCBwTWVzc2FnZS0+cERlc2NyaXB0aW9uIDw8ICJcbiI7Ci0gICAgICAg
ICAgICAgICAgICAgIGZyZWUocE1lc3NhZ2UpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgRkFJTCgpIDw8IG51bVN0b3JlZEQzRERlYnVnTWVzc2FnZXMK
LSAgICAgICAgICAgICAgICAgICA8PCAiIEQzRDExIFNESyBMYXllcnMgbWVzc2FnZShzKSBkZXRl
Y3RlZCEgVGVzdCBGYWlsZWQuXG4iOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgU2FmZVJlbGVh
c2UoaW5mb1F1ZXVlKTsKLSNlbmRpZgotfQotCi1zdGF0aWMgYm9vbCBjaGVja0V4dGVuc2lvbkV4
aXN0cyhjb25zdCBjaGFyICphbGxFeHRlbnNpb25zLCBjb25zdCBzdGQ6OnN0cmluZyAmZXh0TmFt
ZSkKLXsKLSAgICByZXR1cm4gc3Ryc3RyKGFsbEV4dGVuc2lvbnMsIGV4dE5hbWUuY19zdHIoKSkg
IT0gbnVsbHB0cjsKLX0KLQotYm9vbCBBTkdMRVRlc3Q6OmV4dGVuc2lvbkVuYWJsZWQoY29uc3Qg
c3RkOjpzdHJpbmcgJmV4dE5hbWUpCi17Ci0gICAgcmV0dXJuIGNoZWNrRXh0ZW5zaW9uRXhpc3Rz
KHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihnbEdldFN0cmluZyhHTF9FWFRFTlNJT05T
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dE5hbWUpOwotfQotCi1ib29s
IEFOR0xFVGVzdDo6ZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQoRUdMRGlzcGxheSBkaXNwbGF5
LCBjb25zdCBzdGQ6OnN0cmluZyAmZXh0TmFtZSkKLXsKLSAgICByZXR1cm4gY2hlY2tFeHRlbnNp
b25FeGlzdHMoZWdsUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX0VYVEVOU0lPTlMpLCBleHROYW1l
KTsKLX0KLQotYm9vbCBBTkdMRVRlc3Q6OmVnbENsaWVudEV4dGVuc2lvbkVuYWJsZWQoY29uc3Qg
c3RkOjpzdHJpbmcgJmV4dE5hbWUpCi17Ci0gICAgcmV0dXJuIGNoZWNrRXh0ZW5zaW9uRXhpc3Rz
KGVnbFF1ZXJ5U3RyaW5nKEVHTF9OT19ESVNQTEFZLCBFR0xfRVhURU5TSU9OUyksIGV4dE5hbWUp
OwotfQotCi12b2lkIEFOR0xFVGVzdDo6c2V0V2luZG93V2lkdGgoaW50IHdpZHRoKQotewotICAg
IG1XaWR0aCA9IHdpZHRoOwotfQotCi12b2lkIEFOR0xFVGVzdDo6c2V0V2luZG93SGVpZ2h0KGlu
dCBoZWlnaHQpCi17Ci0gICAgbUhlaWdodCA9IGhlaWdodDsKLX0KLQotdm9pZCBBTkdMRVRlc3Q6
OnNldENvbmZpZ1JlZEJpdHMoaW50IGJpdHMpCi17Ci0gICAgbUVHTFdpbmRvdy0+c2V0Q29uZmln
UmVkQml0cyhiaXRzKTsKLX0KLQotdm9pZCBBTkdMRVRlc3Q6OnNldENvbmZpZ0dyZWVuQml0cyhp
bnQgYml0cykKLXsKLSAgICBtRUdMV2luZG93LT5zZXRDb25maWdHcmVlbkJpdHMoYml0cyk7Ci19
Ci0KLXZvaWQgQU5HTEVUZXN0OjpzZXRDb25maWdCbHVlQml0cyhpbnQgYml0cykKLXsKLSAgICBt
RUdMV2luZG93LT5zZXRDb25maWdCbHVlQml0cyhiaXRzKTsKLX0KLQotdm9pZCBBTkdMRVRlc3Q6
OnNldENvbmZpZ0FscGhhQml0cyhpbnQgYml0cykKLXsKLSAgICBtRUdMV2luZG93LT5zZXRDb25m
aWdBbHBoYUJpdHMoYml0cyk7Ci19Ci0KLXZvaWQgQU5HTEVUZXN0OjpzZXRDb25maWdEZXB0aEJp
dHMoaW50IGJpdHMpCi17Ci0gICAgbUVHTFdpbmRvdy0+c2V0Q29uZmlnRGVwdGhCaXRzKGJpdHMp
OwotfQotCi12b2lkIEFOR0xFVGVzdDo6c2V0Q29uZmlnU3RlbmNpbEJpdHMoaW50IGJpdHMpCi17
Ci0gICAgbUVHTFdpbmRvdy0+c2V0Q29uZmlnU3RlbmNpbEJpdHMoYml0cyk7Ci19Ci0KLXZvaWQg
QU5HTEVUZXN0OjpzZXRNdWx0aXNhbXBsZUVuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIG1F
R0xXaW5kb3ctPnNldE11bHRpc2FtcGxlKGVuYWJsZWQpOwotfQotCi12b2lkIEFOR0xFVGVzdDo6
c2V0RGVidWdFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsKLSAgICBtRUdMV2luZG93LT5zZXREZWJ1
Z0VuYWJsZWQoZW5hYmxlZCk7Ci19Ci0KLXZvaWQgQU5HTEVUZXN0OjpzZXROb0Vycm9yRW5hYmxl
ZChib29sIGVuYWJsZWQpCi17Ci0gICAgbUVHTFdpbmRvdy0+c2V0Tm9FcnJvckVuYWJsZWQoZW5h
YmxlZCk7Ci19Ci0KLXZvaWQgQU5HTEVUZXN0OjpzZXRXZWJHTENvbXBhdGliaWxpdHlFbmFibGVk
KGJvb2wgd2ViZ2xDb21wYXRpYmlsaXR5KQotewotICAgIG1FR0xXaW5kb3ctPnNldFdlYkdMQ29t
cGF0aWJpbGl0eUVuYWJsZWQod2ViZ2xDb21wYXRpYmlsaXR5KTsKLX0KLQotdm9pZCBBTkdMRVRl
c3Q6OnNldEJpbmRHZW5lcmF0ZXNSZXNvdXJjZShib29sIGJpbmRHZW5lcmF0ZXNSZXNvdXJjZSkK
LXsKLSAgICBtRUdMV2luZG93LT5zZXRCaW5kR2VuZXJhdGVzUmVzb3VyY2UoYmluZEdlbmVyYXRl
c1Jlc291cmNlKTsKLX0KLQotaW50IEFOR0xFVGVzdDo6Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbUVHTFdpbmRvdy0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCk7
Ci19Ci0KLWludCBBTkdMRVRlc3Q6OmdldENsaWVudE1pbm9yVmVyc2lvbigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1FR0xXaW5kb3ctPmdldENsaWVudE1pbm9yVmVyc2lvbigpOwotfQotCi1FR0xX
aW5kb3cgKkFOR0xFVGVzdDo6Z2V0RUdMV2luZG93KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUVH
TFdpbmRvdzsKLX0KLQotaW50IEFOR0xFVGVzdDo6Z2V0V2luZG93V2lkdGgoKSBjb25zdAotewot
ICAgIHJldHVybiBtV2lkdGg7Ci19Ci0KLWludCBBTkdMRVRlc3Q6OmdldFdpbmRvd0hlaWdodCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1IZWlnaHQ7Ci19Ci0KLWJvb2wgQU5HTEVUZXN0Ojppc011
bHRpc2FtcGxlRW5hYmxlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1FR0xXaW5kb3ctPmlzTXVs
dGlzYW1wbGUoKTsKLX0KLQotYm9vbCBBTkdMRVRlc3Q6OmNyZWF0ZUVHTENvbnRleHQoKQotewot
ICAgIHJldHVybiBtRUdMV2luZG93LT5pbml0aWFsaXplR0wobU9TV2luZG93KTsKLX0KLQotYm9v
bCBBTkdMRVRlc3Q6OmRlc3Ryb3lFR0xDb250ZXh0KCkKLXsKLSAgICBtRUdMV2luZG93LT5kZXN0
cm95R0woKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBBTkdMRVRlc3Q6OkluaXRUZXN0
V2luZG93KCkKLXsKLSAgICBtT1NXaW5kb3cgPSBDcmVhdGVPU1dpbmRvdygpOwotICAgIGlmICgh
bU9TV2luZG93LT5pbml0aWFsaXplKCJBTkdMRV9URVNUIiwgMTI4LCAxMjgpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIG1PU1dpbmRvdy0+c2V0VmlzaWJsZSh0
cnVlKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEFOR0xFVGVzdDo6RGVzdHJveVRl
c3RXaW5kb3coKQotewotICAgIGlmIChtT1NXaW5kb3cpCi0gICAgewotICAgICAgICBtT1NXaW5k
b3ctPmRlc3Ryb3koKTsKLSAgICAgICAgZGVsZXRlIG1PU1dpbmRvdzsKLSAgICAgICAgbU9TV2lu
ZG93ID0gTlVMTDsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBBTkdMRVRl
c3Q6OlNldFdpbmRvd1Zpc2libGUoYm9vbCBpc1Zpc2libGUpCi17Ci0gICAgbU9TV2luZG93LT5z
ZXRWaXNpYmxlKGlzVmlzaWJsZSk7Ci19Ci0KLWJvb2wgSXNJbnRlbCgpCi17Ci0gICAgc3RkOjpz
dHJpbmcgcmVuZGVyZXJTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KGdsR2V0
U3RyaW5nKEdMX1JFTkRFUkVSKSkpOwotICAgIHJldHVybiAocmVuZGVyZXJTdHJpbmcuZmluZCgi
SW50ZWwiKSAhPSBzdGQ6OnN0cmluZzo6bnBvcyk7Ci19Ci0KLWJvb2wgSXNBZHJlbm8oKQotewot
ICAgIHN0ZDo6c3RyaW5nIHJlbmRlcmVyU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hh
ciAqPihnbEdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsKLSAgICByZXR1cm4gKHJlbmRlcmVyU3Ry
aW5nLmZpbmQoIkFkcmVubyIpICE9IHN0ZDo6c3RyaW5nOjpucG9zKTsKLX0KLQotYm9vbCBJc0FN
RCgpCi17Ci0gICAgc3RkOjpzdHJpbmcgcmVuZGVyZXJTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBjaGFyICo+KGdsR2V0U3RyaW5nKEdMX1JFTkRFUkVSKSkpOwotICAgIHJldHVybiAocmVu
ZGVyZXJTdHJpbmcuZmluZCgiQU1EIikgIT0gc3RkOjpzdHJpbmc6Om5wb3MpIHx8Ci0gICAgICAg
ICAgIChyZW5kZXJlclN0cmluZy5maW5kKCJBVEkiKSAhPSBzdGQ6OnN0cmluZzo6bnBvcyk7Ci19
Ci0KLWJvb2wgSXNOVklESUEoKQotewotICAgIHN0ZDo6c3RyaW5nIHJlbmRlcmVyU3RyaW5nKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihnbEdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsK
LSAgICByZXR1cm4gKHJlbmRlcmVyU3RyaW5nLmZpbmQoIk5WSURJQSIpICE9IHN0ZDo6c3RyaW5n
OjpucG9zKTsKLX0KLQotYm9vbCBJc0QzRDExKCkKLXsKLSAgICBzdGQ6OnN0cmluZyByZW5kZXJl
clN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oZ2xHZXRTdHJpbmcoR0xfUkVO
REVSRVIpKSk7Ci0gICAgcmV0dXJuIChyZW5kZXJlclN0cmluZy5maW5kKCJEaXJlY3QzRDExIHZz
XzVfMCIpICE9IHN0ZDo6c3RyaW5nOjpucG9zKTsKLX0KLQotYm9vbCBJc0QzRDExX0ZMOTMoKQot
ewotICAgIHN0ZDo6c3RyaW5nIHJlbmRlcmVyU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
Y2hhciAqPihnbEdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsKLSAgICByZXR1cm4gKHJlbmRlcmVy
U3RyaW5nLmZpbmQoIkRpcmVjdDNEMTEgdnNfNF8wXyIpICE9IHN0ZDo6c3RyaW5nOjpucG9zKTsK
LX0KLQotYm9vbCBJc0QzRDkoKQotewotICAgIHN0ZDo6c3RyaW5nIHJlbmRlcmVyU3RyaW5nKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihnbEdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsK
LSAgICByZXR1cm4gKHJlbmRlcmVyU3RyaW5nLmZpbmQoIkRpcmVjdDNEOSIpICE9IHN0ZDo6c3Ry
aW5nOjpucG9zKTsKLX0KLQotYm9vbCBJc0QzRFNNMygpCi17Ci0gICAgcmV0dXJuIElzRDNEOSgp
IHx8IElzRDNEMTFfRkw5MygpOwotfQotCi1ib29sIElzRGVza3RvcE9wZW5HTCgpCi17Ci0gICAg
cmV0dXJuIElzT3BlbkdMKCkgJiYgIUlzT3BlbkdMRVMoKTsKLX0KLQotYm9vbCBJc09wZW5HTEVT
KCkKLXsKLSAgICBzdGQ6OnN0cmluZyByZW5kZXJlclN0cmluZyhyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIgKj4oZ2xHZXRTdHJpbmcoR0xfUkVOREVSRVIpKSk7Ci0gICAgcmV0dXJuIChyZW5k
ZXJlclN0cmluZy5maW5kKCJPcGVuR0wgRVMiKSAhPSBzdGQ6OnN0cmluZzo6bnBvcyk7Ci19Ci0K
LWJvb2wgSXNPcGVuR0woKQotewotICAgIHN0ZDo6c3RyaW5nIHJlbmRlcmVyU3RyaW5nKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihnbEdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsKLSAg
ICByZXR1cm4gKHJlbmRlcmVyU3RyaW5nLmZpbmQoIk9wZW5HTCIpICE9IHN0ZDo6c3RyaW5nOjpu
cG9zKTsKLX0KLQotYm9vbCBJc0FuZHJvaWQoKQotewotI2lmIGRlZmluZWQoQU5HTEVfUExBVEZP
Uk1fQU5EUk9JRCkKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwot
I2VuZGlmCi19Ci0KLWJvb2wgSXNMaW51eCgpCi17Ci0jaWYgZGVmaW5lZChBTkdMRV9QTEFURk9S
TV9MSU5VWCkKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2Vu
ZGlmCi19Ci0KLWJvb2wgSXNPU1goKQotewotI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fQVBQ
TEUpCi0gICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgot
fQotCi1ib29sIElzV2luZG93cygpCi17Ci0jaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9XSU5E
T1dTKQotICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYK
LX0KLQotYm9vbCBJc0RlYnVnKCkKLXsKLSNpZiAhZGVmaW5lZChOREVCVUcpCi0gICAgcmV0dXJu
IHRydWU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi1ib29sIElzUmVs
ZWFzZSgpCi17Ci0gICAgcmV0dXJuICFJc0RlYnVnKCk7Ci19Ci0KLUVHTGludCBBTkdMRVRlc3Q6
OmdldFBsYXRmb3JtUmVuZGVyZXIoKSBjb25zdAotewotICAgIGFzc2VydChtRUdMV2luZG93KTsK
LSAgICByZXR1cm4gbUVHTFdpbmRvdy0+Z2V0UGxhdGZvcm0oKS5yZW5kZXJlcjsKLX0KLQotdm9p
ZCBBTkdMRVRlc3Q6Omlnbm9yZUQzRDExU0RLTGF5ZXJzV2FybmluZ3MoKQotewotICAgIC8vIFNv
bWUgdGVzdHMgbWF5IG5lZWQgdG8gZGlzYWJsZSB0aGUgRDNEMTEgU0RLIExheWVycyBXYXJuaW5n
cyBjaGVja3MKLSAgICBtSWdub3JlRDNEMTFTREtMYXllcnNXYXJuaW5ncyA9IHRydWU7Ci19Ci0K
LU9TV2luZG93ICpBTkdMRVRlc3Q6Om1PU1dpbmRvdyA9IE5VTEw7Ci0KLXZvaWQgQU5HTEVUZXN0
RW52aXJvbm1lbnQ6OlNldFVwKCkKLXsKLSAgICBtR0xFU0xpYnJhcnkucmVzZXQoYW5nbGU6Omxv
YWRMaWJyYXJ5KCJsaWJHTEVTdjIiKSk7Ci0gICAgaWYgKG1HTEVTTGlicmFyeSkKLSAgICB7Ci0g
ICAgICAgIGF1dG8gaW5pdEZ1bmMgPSByZWludGVycHJldF9jYXN0PEFOR0xFUGxhdGZvcm1Jbml0
aWFsaXplRnVuYz4oCi0gICAgICAgICAgICBtR0xFU0xpYnJhcnktPmdldFN5bWJvbCgiQU5HTEVQ
bGF0Zm9ybUluaXRpYWxpemUiKSk7Ci0gICAgICAgIGlmIChpbml0RnVuYykKLSAgICAgICAgewot
ICAgICAgICAgICAgaW5pdEZ1bmMoJmFuZ2xlOjpnX3Rlc3RQbGF0Zm9ybUluc3RhbmNlKTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIGlmICghQU5HTEVUZXN0OjpJbml0VGVzdFdpbmRvdygpKQot
ICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIEFOR0xFIHRlc3Qgd2lu
ZG93LiI7Ci0gICAgfQotfQotCi12b2lkIEFOR0xFVGVzdEVudmlyb25tZW50OjpUZWFyRG93bigp
Ci17Ci0gICAgQU5HTEVUZXN0OjpEZXN0cm95VGVzdFdpbmRvdygpOwotCi0gICAgaWYgKG1HTEVT
TGlicmFyeSkKLSAgICB7Ci0gICAgICAgIGF1dG8gc2h1dGRvd25GdW5jID0gcmVpbnRlcnByZXRf
Y2FzdDxBTkdMRVBsYXRmb3JtU2h1dGRvd25GdW5jPigKLSAgICAgICAgICAgIG1HTEVTTGlicmFy
eS0+Z2V0U3ltYm9sKCJBTkdMRVBsYXRmb3JtU2h1dGRvd24iKSk7Ci0gICAgICAgIGlmIChzaHV0
ZG93bkZ1bmMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNodXRkb3duRnVuYygpOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi12b2lkIElnbm9yZUFOR0xFUGxhdGZvcm1NZXNzYWdlcygpCi17Ci0g
ICAgLy8gTmVnYXRpdmUgdGVzdHMgbWF5IHRyaWdnZXIgZXhwZWN0ZWQgZXJyb3JzL3dhcm5pbmdz
IGluIHRoZSBBTkdMRSBQbGF0Zm9ybS4KLSAgICBhbmdsZTo6Z190ZXN0UGxhdGZvcm1JbnN0YW5j
ZS5pZ25vcmVNZXNzYWdlcygpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvQU5HTEVUZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9BTkdMRVRlc3QuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjMyY2IzMGE3ODBjNTdhMmI5Y2YwZjY0YmUyNWE0MmI3YWIyNDUyNy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9BTkdMRVRlc3QuaAorKysgL2Rldi9udWxs
CkBAIC0xLDI3MyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0v
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIEFOR0xFVGVzdDoKLS8vICAgSW1w
bGVtZW50YXRpb24gb2YgY29tbW9uIEFOR0xFIHRlc3RpbmcgZml4dHVyZS4KLS8vCi0KLSNpZm5k
ZWYgQU5HTEVfVEVTVFNfQU5HTEVfVEVTVF9IXwotI2RlZmluZSBBTkdMRV9URVNUU19BTkdMRV9U
RVNUX0hfCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotI2luY2x1ZGUgPGFsZ29yaXRobT4K
LSNpbmNsdWRlIDxhcnJheT4KLQotI2luY2x1ZGUgImFuZ2xlX2dsLmgiCi0jaW5jbHVkZSAiYW5n
bGVfdGVzdF9jb25maWdzLmgiCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKLSNpbmNs
dWRlICJzaGFkZXJfdXRpbHMuaCIKLSNpbmNsdWRlICJzeXN0ZW1fdXRpbHMuaCIKLSNpbmNsdWRl
ICJWZWN0b3IuaCIKLQotI2RlZmluZSBFWFBFQ1RfR0xfRVJST1IoZXJyKSBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8R0xlbnVtPihlcnIpLCBnbEdldEVycm9yKCkpCi0jZGVmaW5lIEVYUEVDVF9HTF9O
T19FUlJPUigpIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTGVudW0+KEdMX05PX0VSUk9SKSwgZ2xH
ZXRFcnJvcigpKQotCi0jZGVmaW5lIEFTU0VSVF9HTF9FUlJPUihlcnIpIEFTU0VSVF9FUShzdGF0
aWNfY2FzdDxHTGVudW0+KGVyciksIGdsR2V0RXJyb3IoKSkKLSNkZWZpbmUgQVNTRVJUX0dMX05P
X0VSUk9SKCkgQVNTRVJUX0VRKHN0YXRpY19jYXN0PEdMZW51bT4oR0xfTk9fRVJST1IpLCBnbEdl
dEVycm9yKCkpCi0KLSNkZWZpbmUgRVhQRUNUX0VHTF9FUlJPUihlcnIpIEVYUEVDVF9FUSgoZXJy
KSwgZWdsR2V0RXJyb3IoKSkKLSNkZWZpbmUgRVhQRUNUX0VHTF9TVUNDRVNTKCkgRVhQRUNUX0VH
TF9FUlJPUihFR0xfU1VDQ0VTUykKLQotLy8gRUdMQm9vbGVhbiBpcyB8dW5zaWduZWQgaW50fCBi
dXQgRUdMX1RSVUUgaXMgMCwgbm90IDB1LgotI2RlZmluZSBBU1NFUlRfRUdMX1RSVUUoYSkgQVNT
RVJUX0VRKHN0YXRpY19jYXN0PEVHTEJvb2xlYW4+KEVHTF9UUlVFKSwgKGEpKQotI2RlZmluZSBB
U1NFUlRfRUdMX0ZBTFNFKGEpIEFTU0VSVF9FUShzdGF0aWNfY2FzdDxFR0xCb29sZWFuPihFR0xf
RkFMU0UpLCAoYSkpCi0jZGVmaW5lIEVYUEVDVF9FR0xfVFJVRShhKSBFWFBFQ1RfRVEoc3RhdGlj
X2Nhc3Q8RUdMQm9vbGVhbj4oRUdMX1RSVUUpLCAoYSkpCi0jZGVmaW5lIEVYUEVDVF9FR0xfRkFM
U0UoYSkgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEVHTEJvb2xlYW4+KEVHTF9GQUxTRSksIChhKSkK
LQotI2RlZmluZSBBU1NFUlRfRUdMX0VSUk9SKGVycikgQVNTRVJUX0VRKChlcnIpLCBlZ2xHZXRF
cnJvcigpKQotI2RlZmluZSBBU1NFUlRfRUdMX1NVQ0NFU1MoKSBBU1NFUlRfRUdMX0VSUk9SKEVH
TF9TVUNDRVNTKQotCi0jZGVmaW5lIEFTU0VSVF9HTEVOVU1fRVEoZXhwZWN0ZWQsIGFjdHVhbCkg
QVNTRVJUX0VRKHN0YXRpY19jYXN0PEdMZW51bT4oZXhwZWN0ZWQpLCBzdGF0aWNfY2FzdDxHTGVu
dW0+KGFjdHVhbCkpCi0jZGVmaW5lIEVYUEVDVF9HTEVOVU1fRVEoZXhwZWN0ZWQsIGFjdHVhbCkg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMZW51bT4oZXhwZWN0ZWQpLCBzdGF0aWNfY2FzdDxHTGVu
dW0+KGFjdHVhbCkpCi0KLW5hbWVzcGFjZSBhbmdsZQotewotc3RydWN0IEdMQ29sb3JSR0IKLXsK
LSAgICBHTENvbG9yUkdCKCk7Ci0gICAgR0xDb2xvclJHQihHTHVieXRlIHIsIEdMdWJ5dGUgZywg
R0x1Ynl0ZSBiKTsKLSAgICBHTENvbG9yUkdCKGNvbnN0IFZlY3RvcjMgJmZsb2F0Q29sb3IpOwot
Ci0gICAgR0x1Ynl0ZSBSLCBHLCBCOwotCi0gICAgc3RhdGljIGNvbnN0IEdMQ29sb3JSR0IgYmxh
Y2s7Ci0gICAgc3RhdGljIGNvbnN0IEdMQ29sb3JSR0IgYmx1ZTsKLSAgICBzdGF0aWMgY29uc3Qg
R0xDb2xvclJHQiBncmVlbjsKLSAgICBzdGF0aWMgY29uc3QgR0xDb2xvclJHQiByZWQ7Ci0gICAg
c3RhdGljIGNvbnN0IEdMQ29sb3JSR0IgeWVsbG93OwotfTsKLQotc3RydWN0IEdMQ29sb3IKLXsK
LSAgICBHTENvbG9yKCk7Ci0gICAgR0xDb2xvcihHTHVieXRlIHIsIEdMdWJ5dGUgZywgR0x1Ynl0
ZSBiLCBHTHVieXRlIGEpOwotICAgIEdMQ29sb3IoY29uc3QgVmVjdG9yNCAmZmxvYXRDb2xvcik7
Ci0gICAgR0xDb2xvcihHTHVpbnQgY29sb3JWYWx1ZSk7Ci0KLSAgICBWZWN0b3I0IHRvTm9ybWFs
aXplZFZlY3RvcigpIGNvbnN0OwotCi0gICAgR0x1Ynl0ZSBSLCBHLCBCLCBBOwotCi0gICAgc3Rh
dGljIGNvbnN0IEdMQ29sb3IgYmxhY2s7Ci0gICAgc3RhdGljIGNvbnN0IEdMQ29sb3IgYmx1ZTsK
LSAgICBzdGF0aWMgY29uc3QgR0xDb2xvciBjeWFuOwotICAgIHN0YXRpYyBjb25zdCBHTENvbG9y
IGdyZWVuOwotICAgIHN0YXRpYyBjb25zdCBHTENvbG9yIHJlZDsKLSAgICBzdGF0aWMgY29uc3Qg
R0xDb2xvciB0cmFuc3BhcmVudEJsYWNrOwotICAgIHN0YXRpYyBjb25zdCBHTENvbG9yIHdoaXRl
OwotICAgIHN0YXRpYyBjb25zdCBHTENvbG9yIHllbGxvdzsKLX07Ci0KLS8vIFVzZWZ1bCB0byBj
YXN0IGFueSB0eXBlIHRvIEdMdWJ5dGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVFIsIHR5cGVuYW1l
IFRHLCB0eXBlbmFtZSBUQiwgdHlwZW5hbWUgVEE+Ci1HTENvbG9yIE1ha2VHTENvbG9yKFRSIHIs
IFRHIGcsIFRCIGIsIFRBIGEpCi17Ci0gICAgcmV0dXJuIEdMQ29sb3Ioc3RhdGljX2Nhc3Q8R0x1
Ynl0ZT4ociksIHN0YXRpY19jYXN0PEdMdWJ5dGU+KGcpLCBzdGF0aWNfY2FzdDxHTHVieXRlPihi
KSwKLSAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVieXRlPihhKSk7Ci19Ci0KLWJv
b2wgb3BlcmF0b3I9PShjb25zdCBHTENvbG9yICZhLCBjb25zdCBHTENvbG9yICZiKTsKLXN0ZDo6
b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9zdHJlYW0sIGNvbnN0IEdMQ29sb3Ig
JmNvbG9yKTsKLUdMQ29sb3IgUmVhZENvbG9yKEdMaW50IHgsIEdMaW50IHkpOwotCi19ICAvLyBu
YW1lc3BhY2UgYW5nbGUKLQotI2RlZmluZSBFWFBFQ1RfUElYRUxfRVEoeCwgeSwgciwgZywgYiwg
YSkgXAotICAgIEVYUEVDVF9FUShhbmdsZTo6TWFrZUdMQ29sb3IociwgZywgYiwgYSksIGFuZ2xl
OjpSZWFkQ29sb3IoeCwgeSkpCi0KLSNkZWZpbmUgRVhQRUNUX1BJWEVMX0FMUEhBX0VRKHgsIHks
IGEpIEVYUEVDVF9FUShhLCBhbmdsZTo6UmVhZENvbG9yKHgsIHkpLkEpCi0KLSNkZWZpbmUgRVhQ
RUNUX1BJWEVMX0NPTE9SX0VRKHgsIHksIGFuZ2xlQ29sb3IpIEVYUEVDVF9FUShhbmdsZUNvbG9y
LCBhbmdsZTo6UmVhZENvbG9yKHgsIHkpKQotCi0jZGVmaW5lIEVYUEVDVF9QSVhFTF9ORUFSKHgs
IHksIHIsIGcsIGIsIGEsIGFic19lcnJvcikgXAoteyBcCi0gICAgR0x1Ynl0ZSBwaXhlbFs0XTsg
XAotICAgIGdsUmVhZFBpeGVscygoeCksICh5KSwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgcGl4ZWwpOyBcCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7IFwKLSAgICBFWFBFQ1Rf
TkVBUigociksIHBpeGVsWzBdLCBhYnNfZXJyb3IpOyBcCi0gICAgRVhQRUNUX05FQVIoKGcpLCBw
aXhlbFsxXSwgYWJzX2Vycm9yKTsgXAotICAgIEVYUEVDVF9ORUFSKChiKSwgcGl4ZWxbMl0sIGFi
c19lcnJvcik7IFwKLSAgICBFWFBFQ1RfTkVBUigoYSksIHBpeGVsWzNdLCBhYnNfZXJyb3IpOyBc
Ci19Ci0KLS8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgaG93IHdlIGNhbiB1c2UgR0xDb2xv
cidzIG5pY2UgcHJpbnRpbmcgd2l0aCBFWFBFQ1RfTkVBUi4KLSNkZWZpbmUgRVhQRUNUX1BJWEVM
X0NPTE9SX05FQVIoeCwgeSwgYW5nbGVDb2xvciwgYWJzX2Vycm9yKSBcCi0gICAgRVhQRUNUX1BJ
WEVMX05FQVIoeCwgeSwgYW5nbGVDb2xvci5SLCBhbmdsZUNvbG9yLkcsIGFuZ2xlQ29sb3IuQiwg
YW5nbGVDb2xvci5BLCBhYnNfZXJyb3IpCi0KLSNkZWZpbmUgRVhQRUNUX0NPTE9SX05FQVIoZXhw
ZWN0ZWQsIGFjdHVhbCwgYWJzX2Vycm9yKSBcCi0gICAgXAoteyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBFWFBFQ1RfTkVBUihleHBlY3Rl
ZC5SLCBhY3R1YWwuUiwgYWJzX2Vycm9yKTsgIFwKLSAgICAgICAgRVhQRUNUX05FQVIoZXhwZWN0
ZWQuRywgYWN0dWFsLkcsIGFic19lcnJvcik7ICBcCi0gICAgICAgIEVYUEVDVF9ORUFSKGV4cGVj
dGVkLkIsIGFjdHVhbC5CLCBhYnNfZXJyb3IpOyAgXAotICAgICAgICBFWFBFQ1RfTkVBUihleHBl
Y3RlZC5BLCBhY3R1YWwuQSwgYWJzX2Vycm9yKTsgIFwKLSAgICBcCi19Ci0KLWNsYXNzIEVHTFdp
bmRvdzsKLWNsYXNzIE9TV2luZG93OwotCi1jbGFzcyBBTkdMRVRlc3QgOiBwdWJsaWMgOjp0ZXN0
aW5nOjpUZXN0V2l0aFBhcmFtPGFuZ2xlOjpQbGF0Zm9ybVBhcmFtZXRlcnM+Ci17Ci0gIHByb3Rl
Y3RlZDoKLSAgICBBTkdMRVRlc3QoKTsKLSAgICB+QU5HTEVUZXN0KCk7Ci0KLSAgcHVibGljOgot
ICAgIHN0YXRpYyBib29sIEluaXRUZXN0V2luZG93KCk7Ci0gICAgc3RhdGljIGJvb2wgRGVzdHJv
eVRlc3RXaW5kb3coKTsKLSAgICBzdGF0aWMgdm9pZCBTZXRXaW5kb3dWaXNpYmxlKGJvb2wgaXNW
aXNpYmxlKTsKLSAgICBzdGF0aWMgYm9vbCBlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZChFR0xE
aXNwbGF5IGRpc3BsYXksIGNvbnN0IHN0ZDo6c3RyaW5nICZleHROYW1lKTsKLQotICBwcm90ZWN0
ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIFNldFVwKCk7Ci0gICAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKTsKLQotICAgIHZvaWQgc2V0dXBR
dWFkVmVydGV4QnVmZmVyKEdMZmxvYXQgcG9zaXRpb25BdHRyaWJaLCBHTGZsb2F0IHBvc2l0aW9u
QXR0cmliWFlTY2FsZSk7Ci0gICAgdm9pZCBzZXR1cEluZGV4ZWRRdWFkVmVydGV4QnVmZmVyKEdM
ZmxvYXQgcG9zaXRpb25BdHRyaWJaLCBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWFlTY2FsZSk7Ci0K
LSAgICB2b2lkIGRyYXdRdWFkKEdMdWludCBwcm9ncmFtLCBjb25zdCBzdGQ6OnN0cmluZyAmcG9z
aXRpb25BdHRyaWJOYW1lLCBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWik7Ci0gICAgdm9pZCBkcmF3
UXVhZChHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZwb3NpdGlvbkF0dHJpYk5hbWUsCi0gICAgICAgICAgICAgICAgICBHTGZsb2F0IHBvc2l0aW9u
QXR0cmliWiwKLSAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcG9zaXRpb25BdHRyaWJYWVNjYWxl
KTsKLSAgICB2b2lkIGRyYXdRdWFkKEdMdWludCBwcm9ncmFtLAotICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnBvc2l0aW9uQXR0cmliTmFtZSwKLSAgICAgICAgICAgICAgICAg
IEdMZmxvYXQgcG9zaXRpb25BdHRyaWJaLAotICAgICAgICAgICAgICAgICAgR0xmbG9hdCBwb3Np
dGlvbkF0dHJpYlhZU2NhbGUsCi0gICAgICAgICAgICAgICAgICBib29sIHVzZVZlcnRleEJ1ZmZl
cik7Ci0gICAgc3RhdGljIHN0ZDo6YXJyYXk8VmVjdG9yMywgNj4gR2V0UXVhZFZlcnRpY2VzKCk7
Ci0gICAgdm9pZCBkcmF3SW5kZXhlZFF1YWQoR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnBvc2l0aW9uQXR0cmliTmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWik7Ci0gICAgdm9pZCBk
cmF3SW5kZXhlZFF1YWQoR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnBvc2l0aW9uQXR0cmliTmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWFlTY2FsZSk7Ci0KLSAgICBzdGF0aWMgR0x1aW50IGNv
bXBpbGVTaGFkZXIoR0xlbnVtIHR5cGUsIGNvbnN0IHN0ZDo6c3RyaW5nICZzb3VyY2UpOwotICAg
IHN0YXRpYyBib29sIGV4dGVuc2lvbkVuYWJsZWQoY29uc3Qgc3RkOjpzdHJpbmcgJmV4dE5hbWUp
OwotICAgIHN0YXRpYyBib29sIGVnbENsaWVudEV4dGVuc2lvbkVuYWJsZWQoY29uc3Qgc3RkOjpz
dHJpbmcgJmV4dE5hbWUpOwotCi0gICAgdm9pZCBzZXRXaW5kb3dXaWR0aChpbnQgd2lkdGgpOwot
ICAgIHZvaWQgc2V0V2luZG93SGVpZ2h0KGludCBoZWlnaHQpOwotICAgIHZvaWQgc2V0Q29uZmln
UmVkQml0cyhpbnQgYml0cyk7Ci0gICAgdm9pZCBzZXRDb25maWdHcmVlbkJpdHMoaW50IGJpdHMp
OwotICAgIHZvaWQgc2V0Q29uZmlnQmx1ZUJpdHMoaW50IGJpdHMpOwotICAgIHZvaWQgc2V0Q29u
ZmlnQWxwaGFCaXRzKGludCBiaXRzKTsKLSAgICB2b2lkIHNldENvbmZpZ0RlcHRoQml0cyhpbnQg
Yml0cyk7Ci0gICAgdm9pZCBzZXRDb25maWdTdGVuY2lsQml0cyhpbnQgYml0cyk7Ci0gICAgdm9p
ZCBzZXRNdWx0aXNhbXBsZUVuYWJsZWQoYm9vbCBlbmFibGVkKTsKLSAgICB2b2lkIHNldERlYnVn
RW5hYmxlZChib29sIGVuYWJsZWQpOwotICAgIHZvaWQgc2V0Tm9FcnJvckVuYWJsZWQoYm9vbCBl
bmFibGVkKTsKLSAgICB2b2lkIHNldFdlYkdMQ29tcGF0aWJpbGl0eUVuYWJsZWQoYm9vbCB3ZWJn
bENvbXBhdGliaWxpdHkpOwotICAgIHZvaWQgc2V0QmluZEdlbmVyYXRlc1Jlc291cmNlKGJvb2wg
YmluZEdlbmVyYXRlc1Jlc291cmNlKTsKLQotICAgIGludCBnZXRDbGllbnRNYWpvclZlcnNpb24o
KSBjb25zdDsKLSAgICBpbnQgZ2V0Q2xpZW50TWlub3JWZXJzaW9uKCkgY29uc3Q7Ci0KLSAgICBF
R0xXaW5kb3cgKmdldEVHTFdpbmRvdygpIGNvbnN0OwotICAgIGludCBnZXRXaW5kb3dXaWR0aCgp
IGNvbnN0OwotICAgIGludCBnZXRXaW5kb3dIZWlnaHQoKSBjb25zdDsKLSAgICBib29sIGlzTXVs
dGlzYW1wbGVFbmFibGVkKCkgY29uc3Q7Ci0KLSAgICBFR0xpbnQgZ2V0UGxhdGZvcm1SZW5kZXJl
cigpIGNvbnN0OwotCi0gICAgdm9pZCBpZ25vcmVEM0QxMVNES0xheWVyc1dhcm5pbmdzKCk7Ci0K
LSAgcHJpdmF0ZToKLSAgICBib29sIGNyZWF0ZUVHTENvbnRleHQoKTsKLSAgICBib29sIGRlc3Ry
b3lFR0xDb250ZXh0KCk7Ci0KLSAgICB2b2lkIGNoZWNrRDNEMTFTREtMYXllcnNNZXNzYWdlcygp
OwotCi0gICAgRUdMV2luZG93ICptRUdMV2luZG93OwotICAgIGludCBtV2lkdGg7Ci0gICAgaW50
IG1IZWlnaHQ7Ci0KLSAgICBib29sIG1JZ25vcmVEM0QxMVNES0xheWVyc1dhcm5pbmdzOwotCi0g
ICAgLy8gVXNlZCBmb3IgaW5kZXhlZCBxdWFkIHJlbmRlcmluZwotICAgIEdMdWludCBtUXVhZFZl
cnRleEJ1ZmZlcjsKLQotICAgIHN0YXRpYyBPU1dpbmRvdyAqbU9TV2luZG93OwotfTsKLQotY2xh
c3MgQU5HTEVUZXN0RW52aXJvbm1lbnQgOiBwdWJsaWMgdGVzdGluZzo6RW52aXJvbm1lbnQKLXsK
LSAgcHVibGljOgotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZTsKLSAgICB2b2lkIFRlYXJEb3du
KCkgb3ZlcnJpZGU7Ci0KLSAgcHJpdmF0ZToKLSAgICAvLyBGb3IgbG9hZGluZyBhbmQgZnJlZWlu
ZyBwbGF0Zm9ybQotICAgIHN0ZDo6dW5pcXVlX3B0cjxhbmdsZTo6TGlicmFyeT4gbUdMRVNMaWJy
YXJ5OwotfTsKLQotLy8gRHJpdmVyIHZlbmRvcnMKLWJvb2wgSXNJbnRlbCgpOwotYm9vbCBJc0Fk
cmVubygpOwotYm9vbCBJc0FNRCgpOwotYm9vbCBJc05WSURJQSgpOwotCi0vLyBSZW5kZXJlciBi
YWNrLWVuZHMKLS8vIE5vdGU6IEZMOV8zIGlzIGV4cGxpY2l0bHkgKm5vdCogY29uc2lkZXJlZCBE
M0QxMS4KLWJvb2wgSXNEM0QxMSgpOwotYm9vbCBJc0QzRDExX0ZMOTMoKTsKLS8vIElzIGEgRDNE
OS1jbGFzcyByZW5kZXJlci4KLWJvb2wgSXNEM0Q5KCk7Ci0vLyBJcyBEM0Q5IG9yIFNNOV8zIHJl
bmRlcmVyLgotYm9vbCBJc0QzRFNNMygpOwotYm9vbCBJc0Rlc2t0b3BPcGVuR0woKTsKLWJvb2wg
SXNPcGVuR0xFUygpOwotYm9vbCBJc09wZW5HTCgpOwotCi0vLyBPcGVyYXRpbmcgc3lzdGVtcwot
Ym9vbCBJc0FuZHJvaWQoKTsKLWJvb2wgSXNMaW51eCgpOwotYm9vbCBJc09TWCgpOwotYm9vbCBJ
c1dpbmRvd3MoKTsKLQotLy8gRGVidWcvUmVsZWFzZQotYm9vbCBJc0RlYnVnKCk7Ci1ib29sIElz
UmVsZWFzZSgpOwotCi0vLyBOZWdhdGl2ZSB0ZXN0cyBtYXkgdHJpZ2dlciBleHBlY3RlZCBlcnJv
cnMvd2FybmluZ3MgaW4gdGhlIEFOR0xFIFBsYXRmb3JtLgotdm9pZCBJZ25vcmVBTkdMRVBsYXRm
b3JtTWVzc2FnZXMoKTsKLQotLy8gTm90ZTogZ2l0IGNsIGZvcm1hdCBtZXNzZXMgdXAgdGhpcyBm
b3JtYXR0aW5nLgotI2RlZmluZSBBTkdMRV9TS0lQX1RFU1RfSUYoQ09ORCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgXAotaWYoQ09ORCkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgXAoteyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQ6ICIgI0NPTkQgIi4iIDw8IHN0ZDo6ZW5kbDsgXAotICAgICAg
ICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
Ci0gICAgXAotfQotCi0jZW5kaWYgIC8vIEFOR0xFX1RFU1RTX0FOR0xFX1RFU1RfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xl
X3Rlc3RfY29uZmlncy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVz
dF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3NjY5MGNhN2IxZDUyMmExMTliZjEzZmYwNzY1ZGM4NjBjOTNlMDA0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw1OTggKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJ0ZXN0X3V0
aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5oIgotCi1uYW1lc3BhY2UgYW5nbGUKLXsKLQotUGxhdGZv
cm1QYXJhbWV0ZXJzOjpQbGF0Zm9ybVBhcmFtZXRlcnMoKQotICAgIDogUGxhdGZvcm1QYXJhbWV0
ZXJzKDIsIDAsIEVHTFBsYXRmb3JtUGFyYW1ldGVycygpKQotewotfQotCi1QbGF0Zm9ybVBhcmFt
ZXRlcnM6OlBsYXRmb3JtUGFyYW1ldGVycyhFR0xpbnQgbWFqb3JWZXJzaW9uLCBFR0xpbnQgbWlu
b3JWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RUdMUGxhdGZvcm1QYXJhbWV0ZXJzICZlZ2xQbGF0Zm9ybVBhcmFtZXRlcnMpCi0gICAgOiBtYWpv
clZlcnNpb24obWFqb3JWZXJzaW9uKSwKLSAgICAgIG1pbm9yVmVyc2lvbihtaW5vclZlcnNpb24p
LAotICAgICAgZWdsUGFyYW1ldGVycyhlZ2xQbGF0Zm9ybVBhcmFtZXRlcnMpCi17Ci19Ci0KLUVH
TGludCBQbGF0Zm9ybVBhcmFtZXRlcnM6OmdldFJlbmRlcmVyKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gZWdsUGFyYW1ldGVycy5yZW5kZXJlcjsKLX0KLQotYm9vbCBvcGVyYXRvcjwoY29uc3QgUGxh
dGZvcm1QYXJhbWV0ZXJzICZhLCBjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMgJmIpCi17Ci0gICAg
aWYgKGEubWFqb3JWZXJzaW9uICE9IGIubWFqb3JWZXJzaW9uKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGEubWFqb3JWZXJzaW9uIDwgYi5tYWpvclZlcnNpb247Ci0gICAgfQotCi0gICAgaWYgKGEu
bWlub3JWZXJzaW9uICE9IGIubWlub3JWZXJzaW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGEu
bWlub3JWZXJzaW9uIDwgYi5taW5vclZlcnNpb247Ci0gICAgfQotCi0gICAgcmV0dXJuIGEuZWds
UGFyYW1ldGVycyA8IGIuZWdsUGFyYW1ldGVyczsKLX0KLQotYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFBsYXRmb3JtUGFyYW1ldGVycyAmYSwgY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZiKQotewot
ICAgIHJldHVybiAoYS5tYWpvclZlcnNpb24gPT0gYi5tYWpvclZlcnNpb24pICYmCi0gICAgICAg
ICAgIChhLm1pbm9yVmVyc2lvbiA9PSBiLm1pbm9yVmVyc2lvbikgJiYKLSAgICAgICAgICAgKGEu
ZWdsUGFyYW1ldGVycyA9PSBiLmVnbFBhcmFtZXRlcnMpOwotfQotCi1zdGQ6Om9zdHJlYW0gJm9w
ZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBzdHJlYW0sIGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAm
cHApCi17Ci0gICAgc3RyZWFtIDw8ICJFUyIgPDwgcHAubWFqb3JWZXJzaW9uIDw8ICJfIiA7Ci0g
ICAgaWYgKHBwLm1pbm9yVmVyc2lvbiAhPSAwKQotICAgIHsKLSAgICAgICAgc3RyZWFtIDw8IHBw
Lm1pbm9yVmVyc2lvbiA8PCAiXyI7Ci0gICAgfQotCi0gICAgc3dpdGNoIChwcC5lZ2xQYXJhbWV0
ZXJzLnJlbmRlcmVyKQotICAgIHsKLSAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVf
RDNEOV9BTkdMRToKLSAgICAgICAgc3RyZWFtIDw8ICJEM0Q5IjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFOgotICAgICAgICBz
dHJlYW0gPDwgIkQzRDExIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRToKLSAgICAgICAgc3RyZWFtIDw8ICJPUEVOR0wiOwot
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdM
RVNfQU5HTEU6Ci0gICAgICAgICAgc3RyZWFtIDw8ICJPUEVOR0xFUyI7Ci0gICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xFOgotICAg
ICAgICBzdHJlYW0gPDwgIkRFRkFVTFQiOwotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGlm
IChwcC5lZ2xQYXJhbWV0ZXJzLm1ham9yVmVyc2lvbiAhPSBFR0xfRE9OVF9DQVJFKQotICAgIHsK
LSAgICAgICAgc3RyZWFtIDw8ICJfIiA8PCBwcC5lZ2xQYXJhbWV0ZXJzLm1ham9yVmVyc2lvbjsK
LSAgICB9Ci0KLSAgICBpZiAocHAuZWdsUGFyYW1ldGVycy5taW5vclZlcnNpb24gIT0gRUdMX0RP
TlRfQ0FSRSkKLSAgICB7Ci0gICAgICAgIHN0cmVhbSA8PCAiXyIgPDwgcHAuZWdsUGFyYW1ldGVy
cy5taW5vclZlcnNpb247Ci0gICAgfQotCi0gICAgc3dpdGNoIChwcC5lZ2xQYXJhbWV0ZXJzLmRl
dmljZVR5cGUpCi0gICAgewotICAgICAgY2FzZSBFR0xfRE9OVF9DQVJFOgotICAgICAgY2FzZSBF
R0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEU6Ci0gICAgICAgIC8v
IGRlZmF1bHQKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xF
X0RFVklDRV9UWVBFX05VTExfQU5HTEU6Ci0gICAgICAgICAgc3RyZWFtIDw8ICJfTlVMTCI7Ci0g
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9U
WVBFX1JFRkVSRU5DRV9BTkdMRToKLSAgICAgICAgc3RyZWFtIDw8ICJfUkVGRVJFTkNFIjsKLSAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBF
X1dBUlBfQU5HTEU6Ci0gICAgICAgIHN0cmVhbSA8PCAiX1dBUlAiOwotICAgICAgICBicmVhazsK
LQotICAgICAgZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotCi0gICAgc3dpdGNoIChwcC5lZ2xQYXJhbWV0ZXJzLnByZXNlbnRQYXRoKQotICAg
IHsKLSAgICAgICAgY2FzZSBFR0xfRVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9DT1BZX0FOR0xF
OgotICAgICAgICAgICAgc3RyZWFtIDw8ICJfUFJFU0VOVF9QQVRIX0NPUFkiOwotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBFR0xfRVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9G
QVNUX0FOR0xFOgotICAgICAgICAgICAgc3RyZWFtIDw8ICJfUFJFU0VOVF9QQVRIX0ZBU1QiOwot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBFR0xfRE9OVF9DQVJFOgotICAgICAg
ICAgICAgLy8gZGVmYXVsdAotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0K
LSAgICByZXR1cm4gc3RyZWFtOwotfQotCi0vLyBFR0wgcGxhdGZvcm1zCi1uYW1lc3BhY2UgZWds
X3BsYXRmb3JtCi17Ci0KLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBERUZBVUxUKCkKLXsKLSAgICBy
ZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0RFRkFV
TFRfQU5HTEUpOwotfQotCi1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgREVGQVVMVF9OVUxMKCkKLXsK
LSAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAotICAgICAgICBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xFLAotICAgICAgICBFR0xfRE9OVF9DQVJFLCBFR0xfRE9O
VF9DQVJFLAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfTlVMTF9BTkdM
RSk7Ci19Ci0KLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0Q5KCkKLXsKLSAgICByZXR1cm4gRUdM
UGxhdGZvcm1QYXJhbWV0ZXJzKAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5
X0FOR0xFLAotICAgICAgICBFR0xfRE9OVF9DQVJFLCBFR0xfRE9OVF9DQVJFLAotICAgICAgICBF
R0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEUpOwotfQotCi1FR0xQ
bGF0Zm9ybVBhcmFtZXRlcnMgRDNEOV9OVUxMKCkKLXsKLSAgICByZXR1cm4gRUdMUGxhdGZvcm1Q
YXJhbWV0ZXJzKAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFLAot
ICAgICAgICBFR0xfRE9OVF9DQVJFLCBFR0xfRE9OVF9DQVJFLAotICAgICAgICBFR0xfUExBVEZP
Uk1fQU5HTEVfREVWSUNFX1RZUEVfTlVMTF9BTkdMRSk7Ci19Ci0KLUVHTFBsYXRmb3JtUGFyYW1l
dGVycyBEM0Q5X1JFRkVSRU5DRSgpCi17Ci0gICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVy
cygKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEOV9BTkdMRSwKLSAgICAgICAg
RUdMX0RPTlRfQ0FSRSwgRUdMX0RPTlRfQ0FSRSwKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xF
X0RFVklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci19Ci0KLUVHTFBsYXRmb3JtUGFyYW1ldGVy
cyBEM0QxMSgpCi17Ci0gICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKLSAgICAgICAg
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCi0gICAgICAgIEVHTF9ET05UX0NB
UkUsIEVHTF9ET05UX0NBUkUsCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQ
RV9IQVJEV0FSRV9BTkdMRSk7Ci19Ci0KLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMShFR0xl
bnVtIHByZXNlbnRQYXRoKQotewotICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoRUdM
X1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsIEVHTF9ET05UX0NBUkUsIEVHTF9ET05U
X0NBUkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfUExBVEZPUk1fQU5H
TEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEUsIHByZXNlbnRQYXRoKTsKLX0KLQotRUdMUGxh
dGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTFfMSgpCi17Ci0gICAgcmV0dXJuIEVHTFBsYXRmb3Jt
UGFyYW1ldGVycygKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUs
Ci0gICAgICAgIDExLCAxLAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVf
SEFSRFdBUkVfQU5HTEUpOwotfQotCi1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwxMV8w
KCkKLXsKLSAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAotICAgICAgICBFR0xfUExB
VEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwKLSAgICAgICAgMTEsIDAsCi0gICAgICAgIEVH
TF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRSk7Ci19Ci0KLUVHTFBs
YXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDEwXzEoKQotewotICAgIHJldHVybiBFR0xQbGF0Zm9y
bVBhcmFtZXRlcnMoCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xF
LAotICAgICAgICAxMCwgMSwKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBF
X0hBUkRXQVJFX0FOR0xFKTsKLX0KLQotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTBf
MCgpCi17Ci0gICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKLSAgICAgICAgRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCi0gICAgICAgIDEwLCAwLAotICAgICAgICBF
R0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEUpOwotfQotCi1FR0xQ
bGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkw5XzMoKQotewotICAgIHJldHVybiBFR0xQbGF0Zm9y
bVBhcmFtZXRlcnMoCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xF
LAotICAgICAgICA5LCAzLAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVf
SEFSRFdBUkVfQU5HTEUpOwotfQotCi1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfTlVMTCgp
Ci17Ci0gICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKLSAgICAgICAgRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCi0gICAgICAgIEVHTF9ET05UX0NBUkUsIEVHTF9E
T05UX0NBUkUsCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9OVUxMX0FO
R0xFKTsKLX0KLQotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX1dBUlAoKQotewotICAgIHJl
dHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX0QzRDExX0FOR0xFLAotICAgICAgICBFR0xfRE9OVF9DQVJFLCBFR0xfRE9OVF9DQVJFLAot
ICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSk7Ci19Ci0K
LUVHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDExXzFfV0FSUCgpCi17Ci0gICAgcmV0dXJu
IEVHTFBsYXRmb3JtUGFyYW1ldGVycygKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVf
RDNEMTFfQU5HTEUsCi0gICAgICAgIDExLCAxLAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVf
REVWSUNFX1RZUEVfV0FSUF9BTkdMRSk7Ci19Ci0KLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0Qx
MV9GTDExXzBfV0FSUCgpCi17Ci0gICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKLSAg
ICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCi0gICAgICAgIDExLCAw
LAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSk7Ci19
Ci0KLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDEwXzFfV0FSUCgpCi17Ci0gICAgcmV0
dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfRDNEMTFfQU5HTEUsCi0gICAgICAgIDEwLCAxLAotICAgICAgICBFR0xfUExBVEZPUk1fQU5H
TEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSk7Ci19Ci0KLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBE
M0QxMV9GTDEwXzBfV0FSUCgpCi17Ci0gICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygK
LSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCi0gICAgICAgIDEw
LCAwLAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSk7
Ci19Ci0KLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDlfM19XQVJQKCkKLXsKLSAgICBy
ZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9EM0QxMV9BTkdMRSwKLSAgICAgICAgOSwgMywKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FO
R0xFX0RFVklDRV9UWVBFX1dBUlBfQU5HTEUpOwotfQotCi1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMg
RDNEMTFfUkVGRVJFTkNFKCkKLXsKLSAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAot
ICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwKLSAgICAgICAgRUdM
X0RPTlRfQ0FSRSwgRUdMX0RPTlRfQ0FSRSwKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RF
VklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci19Ci0KLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBE
M0QxMV9GTDExXzFfUkVGRVJFTkNFKCkKLXsKLSAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0
ZXJzKAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwKLSAgICAg
ICAgMTEsIDEsCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9SRUZFUkVO
Q0VfQU5HTEUpOwotfQotCi1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwxMV8wX1JFRkVS
RU5DRSgpCi17Ci0gICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKLSAgICAgICAgRUdM
X1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCi0gICAgICAgIDExLCAwLAotICAgICAg
ICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfUkVGRVJFTkNFX0FOR0xFKTsKLX0KLQot
RUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTBfMV9SRUZFUkVOQ0UoKQotewotICAgIHJl
dHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX0QzRDExX0FOR0xFLAotICAgICAgICAxMCwgMSwKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FO
R0xFX0RFVklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci19Ci0KLUVHTFBsYXRmb3JtUGFyYW1l
dGVycyBEM0QxMV9GTDEwXzBfUkVGRVJFTkNFKCkKLXsKLSAgICByZXR1cm4gRUdMUGxhdGZvcm1Q
YXJhbWV0ZXJzKAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwK
LSAgICAgICAgMTAsIDAsCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9S
RUZFUkVOQ0VfQU5HTEUpOwotfQotCi1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkw5XzNf
UkVGRVJFTkNFKCkKLXsKLSAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAotICAgICAg
ICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwKLSAgICAgICAgOSwgMywKLSAg
ICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci19
Ci0KLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBPUEVOR0woKQotewotICAgIHJldHVybiBFR0xQbGF0
Zm9ybVBhcmFtZXRlcnMoRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKTsKLX0K
LQotCi1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgT1BFTkdMKEVHTGludCBtYWpvciwgRUdMaW50IG1p
bm9yKQotewotICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoCi0gICAgICAgIEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwKLSAgICAgICAgbWFqb3IsIG1pbm9yLAot
ICAgICAgICBFR0xfRE9OVF9DQVJFKTsKLX0KLQotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIE9QRU5H
TF9OVUxMKCkKLXsKLSAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAotICAgICAgICBF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsCi0gICAgICAgIDAsIDAsCi0gICAg
ICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9OVUxMX0FOR0xFKTsKLX0KLQotRUdM
UGxhdGZvcm1QYXJhbWV0ZXJzIE9QRU5HTEVTKCkKLXsKLSAgICByZXR1cm4gRUdMUGxhdGZvcm1Q
YXJhbWV0ZXJzKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFKTsKLX0KLQot
RUdMUGxhdGZvcm1QYXJhbWV0ZXJzIE9QRU5HTEVTKEVHTGludCBtYWpvciwgRUdMaW50IG1pbm9y
KQotewotICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfT1BFTkdMRVNfQU5HTEUsIG1ham9yLCBtaW5vciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTF9ET05UX0NBUkUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBlZ2xfcGxh
dGZvcm0KLQotLy8gQU5HTEUgdGVzdHMgcGxhdGZvcm1zCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMy
X0QzRDkoKQotewotICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRm
b3JtOjpEM0Q5KCkpOwotfQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDlfUkVGRVJFTkNF
KCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9ybTo6
RDNEOV9SRUZFUkVOQ0UoKSk7Ci19Ci0KLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTEoKQot
ewotICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3JtOjpEM0Qx
MSgpKTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMShFR0xlbnVtIHByZXNlbnRQ
YXRoKQotewotICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3Jt
OjpEM0QxMShwcmVzZW50UGF0aCkpOwotfQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDEx
X0ZMMTFfMCgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAwLCBlZ2xfcGxh
dGZvcm06OkQzRDExX0ZMMTFfMCgpKTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0Qx
MV9GTDEwXzEoKQotewotICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3Bs
YXRmb3JtOjpEM0QxMV9GTDEwXzEoKSk7Ci19Ci0KLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNE
MTFfRkwxMF8wKCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9w
bGF0Zm9ybTo6RDNEMTFfRkwxMF8wKCkpOwotfQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0Qz
RDExX0ZMOV8zKCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9w
bGF0Zm9ybTo6RDNEMTFfRkw5XzMoKSk7Ci19Ci0KLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNE
MTFfV0FSUCgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAwLCBlZ2xfcGxh
dGZvcm06OkQzRDExX1dBUlAoKSk7Ci19Ci0KLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFf
RkwxMV8wX1dBUlAoKQotewotICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWds
X3BsYXRmb3JtOjpEM0QxMV9GTDExXzBfV0FSUCgpKTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJz
IEVTMl9EM0QxMV9GTDEwXzFfV0FSUCgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVy
cygyLCAwLCBlZ2xfcGxhdGZvcm06OkQzRDExX0ZMMTBfMV9XQVJQKCkpOwotfQotCi1QbGF0Zm9y
bVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZMMTBfMF9XQVJQKCkKLXsKLSAgICByZXR1cm4gUGxhdGZv
cm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfRkwxMF8wX1dBUlAoKSk7Ci19
Ci0KLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfRkw5XzNfV0FSUCgpCi17Ci0gICAgcmV0
dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAwLCBlZ2xfcGxhdGZvcm06OkQzRDExX0ZMOV8zX1dB
UlAoKSk7Ci19Ci0KLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfUkVGRVJFTkNFKCkKLXsK
LSAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFf
UkVGRVJFTkNFKCkpOwotfQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZMMTFfMF9S
RUZFUkVOQ0UoKQotewotICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3Bs
YXRmb3JtOjpEM0QxMV9GTDExXzBfUkVGRVJFTkNFKCkpOwotfQotCi1QbGF0Zm9ybVBhcmFtZXRl
cnMgRVMyX0QzRDExX0ZMMTBfMV9SRUZFUkVOQ0UoKQotewotICAgIHJldHVybiBQbGF0Zm9ybVBh
cmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3JtOjpEM0QxMV9GTDEwXzFfUkVGRVJFTkNFKCkpOwot
fQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZMMTBfMF9SRUZFUkVOQ0UoKQotewot
ICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3JtOjpEM0QxMV9G
TDEwXzBfUkVGRVJFTkNFKCkpOwotfQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZM
OV8zX1JFRkVSRU5DRSgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAwLCBl
Z2xfcGxhdGZvcm06OkQzRDExX0ZMOV8zX1JFRkVSRU5DRSgpKTsKLX0KLQotUGxhdGZvcm1QYXJh
bWV0ZXJzIEVTM19EM0QxMSgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAw
LCBlZ2xfcGxhdGZvcm06OkQzRDExKCkpOwotfQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0Qz
RDExX0ZMMTFfMSgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAwLCBlZ2xf
cGxhdGZvcm06OkQzRDExX0ZMMTFfMSgpKTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19E
M0QxMV9GTDExXzAoKQotewotICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywgMCwgZWds
X3BsYXRmb3JtOjpEM0QxMV9GTDExXzAoKSk7Ci19Ci0KLVBsYXRmb3JtUGFyYW1ldGVycyBFUzNf
RDNEMTFfRkwxMF8xKCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDMsIDAsIGVn
bF9wbGF0Zm9ybTo6RDNEMTFfRkwxMF8xKCkpOwotfQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMz
X0QzRDExX0ZMMTBfMCgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAwLCBl
Z2xfcGxhdGZvcm06OkQzRDExX0ZMMTBfMCgpKTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVT
M19EM0QxMV9XQVJQKCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDMsIDAsIGVn
bF9wbGF0Zm9ybTo6RDNEMTFfV0FSUCgpKTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19E
M0QxMV9GTDExXzFfV0FSUCgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAw
LCBlZ2xfcGxhdGZvcm06OkQzRDExX0ZMMTFfMV9XQVJQKCkpOwotfQotCi1QbGF0Zm9ybVBhcmFt
ZXRlcnMgRVMzX0QzRDExX0ZMMTFfMF9XQVJQKCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXJh
bWV0ZXJzKDMsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfRkwxMV8wX1dBUlAoKSk7Ci19Ci0KLVBs
YXRmb3JtUGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMF8xX1dBUlAoKQotewotICAgIHJldHVybiBQ
bGF0Zm9ybVBhcmFtZXRlcnMoMywgMCwgZWdsX3BsYXRmb3JtOjpEM0QxMV9GTDEwXzFfV0FSUCgp
KTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9GTDEwXzBfV0FSUCgpCi17Ci0g
ICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAwLCBlZ2xfcGxhdGZvcm06OkQzRDExX0ZM
MTBfMF9XQVJQKCkpOwotfQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX1JFRkVSRU5D
RSgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAwLCBlZ2xfcGxhdGZvcm06
OkQzRDExX1JFRkVSRU5DRSgpKTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9G
TDExXzFfUkVGRVJFTkNFKCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDMsIDAs
IGVnbF9wbGF0Zm9ybTo6RDNEMTFfRkwxMV8xX1JFRkVSRU5DRSgpKTsKLX0KLQotUGxhdGZvcm1Q
YXJhbWV0ZXJzIEVTM19EM0QxMV9GTDExXzBfUkVGRVJFTkNFKCkKLXsKLSAgICByZXR1cm4gUGxh
dGZvcm1QYXJhbWV0ZXJzKDMsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfRkwxMV8wX1JFRkVSRU5D
RSgpKTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9GTDEwXzFfUkVGRVJFTkNF
KCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDMsIDAsIGVnbF9wbGF0Zm9ybTo6
RDNEMTFfRkwxMF8xX1JFRkVSRU5DRSgpKTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19E
M0QxMV9GTDEwXzBfUkVGRVJFTkNFKCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJz
KDMsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfRkwxMF8wX1JFRkVSRU5DRSgpKTsKLX0KLQotUGxh
dGZvcm1QYXJhbWV0ZXJzIEVTMl9PUEVOR0xFUygpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFy
YW1ldGVycygyLCAwLCBlZ2xfcGxhdGZvcm06Ok9QRU5HTEVTKCkpOwotfQotCi1QbGF0Zm9ybVBh
cmFtZXRlcnMgRVMyX09QRU5HTEVTKEVHTGludCBtYWpvciwgRUdMaW50IG1pbm9yKQotewotICAg
IHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3JtOjpPUEVOR0xFUyht
YWpvciwgbWlub3IpKTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19PUEVOR0xFUygpCi17
Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAwLCBlZ2xfcGxhdGZvcm06Ok9QRU5H
TEVTKCkpOwotfQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX09QRU5HTEVTKEVHTGludCBtYWpv
ciwgRUdMaW50IG1pbm9yKQotewotICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywgMCwg
ZWdsX3BsYXRmb3JtOjpPUEVOR0xFUyhtYWpvciwgbWlub3IpKTsKLX0KLQotUGxhdGZvcm1QYXJh
bWV0ZXJzIEVTMzFfT1BFTkdMRVMoKQotewotICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMo
MywgMSwgZWdsX3BsYXRmb3JtOjpPUEVOR0xFUygpKTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJz
IEVTMzFfT1BFTkdMRVMoRUdMaW50IG1ham9yLCBFR0xpbnQgbWlub3IpCi17Ci0gICAgcmV0dXJu
IFBsYXRmb3JtUGFyYW1ldGVycygzLCAxLCBlZ2xfcGxhdGZvcm06Ok9QRU5HTEVTKG1ham9yLCBt
aW5vcikpOwotfQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX09QRU5HTCgpCi17Ci0gICAgcmV0
dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAwLCBlZ2xfcGxhdGZvcm06Ok9QRU5HTCgpKTsKLX0K
LQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9PUEVOR0woRUdMaW50IG1ham9yLCBFR0xpbnQgbWlu
b3IpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAwLCBlZ2xfcGxhdGZvcm06
Ok9QRU5HTChtYWpvciwgbWlub3IpKTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19PUEVO
R0woKQotewotICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywgMCwgZWdsX3BsYXRmb3Jt
OjpPUEVOR0woKSk7Ci19Ci0KLVBsYXRmb3JtUGFyYW1ldGVycyBFUzNfT1BFTkdMKEVHTGludCBt
YWpvciwgRUdMaW50IG1pbm9yKQotewotICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywg
MCwgZWdsX3BsYXRmb3JtOjpPUEVOR0wobWFqb3IsIG1pbm9yKSk7Ci19Ci0KLVBsYXRmb3JtUGFy
YW1ldGVycyBFUzMxX09QRU5HTCgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygz
LCAxLCBlZ2xfcGxhdGZvcm06Ok9QRU5HTCgpKTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVT
MzFfT1BFTkdMKEVHTGludCBtYWpvciwgRUdMaW50IG1pbm9yKQotewotICAgIHJldHVybiBQbGF0
Zm9ybVBhcmFtZXRlcnMoMywgMSwgZWdsX3BsYXRmb3JtOjpPUEVOR0wobWFqb3IsIG1pbm9yKSk7
Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIGFuZ2xlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmln
cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTU5NWE1NTZjOTAwZTE3ODA5YzA4
NjFiNmI3NmM2ZjQxMmM0NzZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2Fu
Z2xlX3Rlc3RfY29uZmlncy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLS8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCi0vLwotCi0jaWZuZGVmIEFOR0xFX1RFU1RfQ09ORklHU19IXwotI2RlZmluZSBBTkdMRV9U
RVNUX0NPTkZJR1NfSF8KLQotLy8gT24gTGludXggRUdML2VnbC5oIGluY2x1ZGVzIFguaCB3aGlj
aCBkb2VzIGRlZmluZXMgZm9yIHNvbWUgdmVyeSBjb21tb24KLS8vIG5hbWVzIHRoYXQgYXJlIHVz
ZWQgYnkgZ3Rlc3QgKGxpa2UgTm9uZSBhbmQgQm9vbCkgYW5kIGNhdXNlcyBhIGxvdCBvZgotLy8g
Y29tcGlsYXRpb24gZXJyb3JzLiBUbyB3b3JrIGFyb3VuZCB0aGlzLCBldmVuIGlmIHRoaXMgZmls
ZSBkb2Vzbid0IHVzZSBpdCwKLS8vIHdlIGluY2x1ZGUgZ3Rlc3QgYmVmb3JlIEVHTCBzbyB0aGF0
IGl0IGNvbXBpbGVzIGZpbmUgaW4gb3RoZXIgZmlsZXMgdGhhdAotLy8gd2FudCB0byB1c2UgZ3Rl
c3QuCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2luY2x1ZGUgPEVHTC9lZ2wuaD4KLSNp
bmNsdWRlIDxFR0wvZWdsZXh0Lmg+Ci0KLSNpbmNsdWRlICJhbmdsZV90ZXN0X2luc3RhbnRpYXRl
LmgiCi0jaW5jbHVkZSAiRUdMV2luZG93LmgiCi0KLW5hbWVzcGFjZSBhbmdsZQotewotCi1zdHJ1
Y3QgUGxhdGZvcm1QYXJhbWV0ZXJzCi17Ci0gICAgUGxhdGZvcm1QYXJhbWV0ZXJzKCk7Ci0gICAg
UGxhdGZvcm1QYXJhbWV0ZXJzKEVHTGludCBtYWpvclZlcnNpb24sIEVHTGludCBtaW5vclZlcnNp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVHTFBsYXRmb3JtUGFyYW1ldGVycyAm
ZWdsUGxhdGZvcm1QYXJhbWV0ZXJzKTsKLQotICAgIEVHTGludCBnZXRSZW5kZXJlcigpIGNvbnN0
OwotCi0gICAgRUdMaW50IG1ham9yVmVyc2lvbjsKLSAgICBFR0xpbnQgbWlub3JWZXJzaW9uOwot
ICAgIEVHTFBsYXRmb3JtUGFyYW1ldGVycyBlZ2xQYXJhbWV0ZXJzOwotfTsKLQotYm9vbCBvcGVy
YXRvcjwoY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZhLCBjb25zdCBQbGF0Zm9ybVBhcmFtZXRl
cnMgJmIpOwotYm9vbCBvcGVyYXRvcj09KGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAmYSwgY29u
c3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZiKTsKLXN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6
Om9zdHJlYW0mIHN0cmVhbSwgY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZwcCk7Ci0KLS8vIEVH
TCBwbGF0Zm9ybXMKLW5hbWVzcGFjZSBlZ2xfcGxhdGZvcm0KLXsKLQotRUdMUGxhdGZvcm1QYXJh
bWV0ZXJzIERFRkFVTFQoKTsKLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBERUZBVUxUX05VTEwoKTsK
LQotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDkoKTsKLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBE
M0Q5X05VTEwoKTsKLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0Q5X1JFRkVSRU5DRSgpOwotCi1F
R0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTEoKTsKLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0Qx
MShFR0xlbnVtIHByZXNlbnRQYXRoKTsKLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDEx
XzEoKTsKLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDExXzAoKTsKLUVHTFBsYXRmb3Jt
UGFyYW1ldGVycyBEM0QxMV9GTDEwXzEoKTsKLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9G
TDEwXzAoKTsKLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDlfMygpOwotCi1FR0xQbGF0
Zm9ybVBhcmFtZXRlcnMgRDNEMTFfTlVMTCgpOwotCi1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNE
MTFfV0FSUCgpOwotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTFfMV9XQVJQKCk7Ci1F
R0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwxMV8wX1dBUlAoKTsKLUVHTFBsYXRmb3JtUGFy
YW1ldGVycyBEM0QxMV9GTDEwXzFfV0FSUCgpOwotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDEx
X0ZMMTBfMF9XQVJQKCk7Ci1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkw5XzNfV0FSUCgp
OwotCi1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfUkVGRVJFTkNFKCk7Ci1FR0xQbGF0Zm9y
bVBhcmFtZXRlcnMgRDNEMTFfRkwxMV8xX1JFRkVSRU5DRSgpOwotRUdMUGxhdGZvcm1QYXJhbWV0
ZXJzIEQzRDExX0ZMMTFfMF9SRUZFUkVOQ0UoKTsKLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0Qx
MV9GTDEwXzFfUkVGRVJFTkNFKCk7Ci1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwxMF8w
X1JFRkVSRU5DRSgpOwotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMOV8zX1JFRkVSRU5D
RSgpOwotCi1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgT1BFTkdMKCk7Ci1FR0xQbGF0Zm9ybVBhcmFt
ZXRlcnMgT1BFTkdMKEVHTGludCBtYWpvciwgRUdMaW50IG1pbm9yKTsKLUVHTFBsYXRmb3JtUGFy
YW1ldGVycyBPUEVOR0xfTlVMTCgpOwotCi1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgT1BFTkdMRVMo
KTsKLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBPUEVOR0xFUyhFR0xpbnQgbWFqb3IsIEVHTGludCBt
aW5vcik7Ci0KLX0gLy8gbmFtZXNwYWNlIGVnbF9wbGF0Zm9ybQotCi0vLyBBTkdMRSB0ZXN0cyBw
bGF0Zm9ybXMKLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEOSgpOwotUGxhdGZvcm1QYXJhbWV0
ZXJzIEVTMl9EM0Q5X1JFRkVSRU5DRSgpOwotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDEx
KCk7Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExKEVHTGVudW0gcHJlc2VudFBhdGgpOwot
UGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDExXzAoKTsKLVBsYXRmb3JtUGFyYW1ldGVy
cyBFUzJfRDNEMTFfRkwxMF8xKCk7Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZMMTBf
MCgpOwotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDlfMygpOwotCi1QbGF0Zm9ybVBh
cmFtZXRlcnMgRVMyX0QzRDExX1dBUlAoKTsKLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFf
RkwxMV8wX1dBUlAoKTsKLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfRkwxMF8xX1dBUlAo
KTsKLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfRkwxMF8wX1dBUlAoKTsKLVBsYXRmb3Jt
UGFyYW1ldGVycyBFUzJfRDNEMTFfRkw5XzNfV0FSUCgpOwotCi1QbGF0Zm9ybVBhcmFtZXRlcnMg
RVMyX0QzRDExX1JFRkVSRU5DRSgpOwotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDEx
XzBfUkVGRVJFTkNFKCk7Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZMMTBfMV9SRUZF
UkVOQ0UoKTsKLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfRkwxMF8wX1JFRkVSRU5DRSgp
OwotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDlfM19SRUZFUkVOQ0UoKTsKLQotUGxh
dGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMSgpOwotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0Qx
MV9GTDExXzEoKTsKLVBsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMV8wKCk7Ci1QbGF0
Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZMMTBfMSgpOwotUGxhdGZvcm1QYXJhbWV0ZXJzIEVT
M19EM0QxMV9GTDEwXzAoKTsKLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9XQVJQKCk7
Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZMMTFfMV9XQVJQKCk7Ci1QbGF0Zm9ybVBh
cmFtZXRlcnMgRVMzX0QzRDExX0ZMMTFfMF9XQVJQKCk7Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMz
X0QzRDExX0ZMMTBfMV9XQVJQKCk7Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZMMTBf
MF9XQVJQKCk7Ci0KLVBsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNEMTFfUkVGRVJFTkNFKCk7Ci1Q
bGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZMMTFfMV9SRUZFUkVOQ0UoKTsKLVBsYXRmb3Jt
UGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMV8wX1JFRkVSRU5DRSgpOwotUGxhdGZvcm1QYXJhbWV0
ZXJzIEVTM19EM0QxMV9GTDEwXzFfUkVGRVJFTkNFKCk7Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMz
X0QzRDExX0ZMMTBfMF9SRUZFUkVOQ0UoKTsKLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9PUEVO
R0woKTsKLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfT1BFTkdMKEVHTGludCBtYWpvciwgRUdMaW50
IG1pbm9yKTsKLVBsYXRmb3JtUGFyYW1ldGVycyBFUzNfT1BFTkdMKCk7Ci1QbGF0Zm9ybVBhcmFt
ZXRlcnMgRVMzX09QRU5HTChFR0xpbnQgbWFqb3IsIEVHTGludCBtaW5vcik7Ci1QbGF0Zm9ybVBh
cmFtZXRlcnMgRVMzMV9PUEVOR0woKTsKLVBsYXRmb3JtUGFyYW1ldGVycyBFUzMxX09QRU5HTChF
R0xpbnQgbWFqb3IsIEVHTGludCBtaW5vcik7Ci0KLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfT1BF
TkdMRVMoKTsKLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfT1BFTkdMRVMoRUdMaW50IG1ham9yLCBF
R0xpbnQgbWlub3IpOwotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19PUEVOR0xFUygpOwotUGxhdGZv
cm1QYXJhbWV0ZXJzIEVTM19PUEVOR0xFUyhFR0xpbnQgbWFqb3IsIEVHTGludCBtaW5vcik7Ci1Q
bGF0Zm9ybVBhcmFtZXRlcnMgRVMzMV9PUEVOR0xFUygpOwotUGxhdGZvcm1QYXJhbWV0ZXJzIEVT
MzFfT1BFTkdMRVMoRUdMaW50IG1ham9yLCBFR0xpbnQgbWlub3IpOwotCi19IC8vIG5hbWVzcGFj
ZSBhbmdsZQotCi0jZW5kaWYgLy8gQU5HTEVfVEVTVF9DT05GSUdTX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2lu
c3RhbnRpYXRlLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0
aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhOTI4ZDg1ZTFhNzFiMDU1MTYzZDYwMjJlZjU4NzEyZWU1NTllYjA1Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIGFuZ2xlX3Rlc3Rf
aW5zdGFudGlhdGUuY3BwOiBBZGRzIHN1cHBvcnQgZm9yIGZpbHRlcmluZyBwYXJhbWV0ZXJpemVk
Ci0vLyB0ZXN0cyBieSBwbGF0Zm9ybSwgc28gd2Ugc2tpcCB1bnN1cHBvcnRlZCBjb25maWdzLgot
Ci0jaW5jbHVkZSAidGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmgiCi0KLSNpbmNs
dWRlIDxtYXA+Ci0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSNpbmNsdWRlICJFR0xXaW5kb3cuaCIK
LSNpbmNsdWRlICJPU1dpbmRvdy5oIgotI2luY2x1ZGUgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9j
b25maWdzLmgiCi0KLW5hbWVzcGFjZSBhbmdsZQotewotCi1ib29sIElzUGxhdGZvcm1BdmFpbGFi
bGUoY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZwYXJhbSkKLXsKLSAgICBzd2l0Y2ggKHBhcmFt
LmdldFJlbmRlcmVyKCkpCi0gICAgewotICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9ERUZBVUxUX0FOR0xFOgotICAgICAgICBicmVhazsKLQotICAgICAgY2FzZSBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFOgotI2lmbmRlZiBBTkdMRV9FTkFCTEVfRDNEOQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2Ug
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEU6Ci0jaWZuZGVmIEFOR0xFX0VOQUJM
RV9EM0QxMQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLSAgICAgICAgYnJlYWs7Ci0K
LSAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFOgotICAgICAg
Y2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRToKLSNpZm5kZWYgQU5H
TEVfRU5BQkxFX09QRU5HTAotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLQotICAgIHN0YXRpYyBzdGQ6Om1hcDxQbGF0Zm9ybVBhcmFtZXRlcnMs
IGJvb2w+IHBhcmFtQXZhaWxhYmlsaXR5Q2FjaGU7Ci0gICAgYXV0byBpdGVyID0gcGFyYW1BdmFp
bGFiaWxpdHlDYWNoZS5maW5kKHBhcmFtKTsKLSAgICBpZiAoaXRlciAhPSBwYXJhbUF2YWlsYWJp
bGl0eUNhY2hlLmVuZCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGl0ZXItPnNlY29uZDsKLSAg
ICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgT1NXaW5kb3cgKm9zV2luZG93ID0gQ3JlYXRl
T1NXaW5kb3coKTsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBvc1dpbmRvdy0+aW5pdGlhbGl6ZSgi
Q09ORklHX1RFU1RFUiIsIDEsIDEpOwotCi0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEVHTFdpbmRvdyAqZWdsV2luZG93ID0KLSAgICAgICAgICAgICAgICBuZXcg
RUdMV2luZG93KHBhcmFtLm1ham9yVmVyc2lvbiwgcGFyYW0ubWlub3JWZXJzaW9uLCBwYXJhbS5l
Z2xQYXJhbWV0ZXJzKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGVnbFdpbmRvdy0+aW5pdGlhbGl6
ZUdMKG9zV2luZG93KTsKLQotICAgICAgICAgICAgZWdsV2luZG93LT5kZXN0cm95R0woKTsKLSAg
ICAgICAgICAgIFNhZmVEZWxldGUoZWdsV2luZG93KTsKLSAgICAgICAgfQotCi0gICAgICAgIG9z
V2luZG93LT5kZXN0cm95KCk7Ci0gICAgICAgIFNhZmVEZWxldGUob3NXaW5kb3cpOwotCi0gICAg
ICAgIHBhcmFtQXZhaWxhYmlsaXR5Q2FjaGVbcGFyYW1dID0gcmVzdWx0OwotCi0gICAgICAgIGlm
ICghcmVzdWx0KQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlNraXBwaW5n
IHRlc3RzIHVzaW5nIGNvbmZpZ3VyYXRpb24gIiA8PCBwYXJhbSA8PCAiIGJlY2F1c2UgaXQgaXMg
bm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgfQotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3Rh
bnRpYXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3YjZhODFhYTFiOTc1YjAy
MDQ1NjkyMzc3ZjMxMThlY2I4NThkM2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRp
bHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBA
QAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KLS8vCi0KLS8vIGFuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaDogQWRkcyBzdXBw
b3J0IGZvciBmaWx0ZXJpbmcgcGFyYW1ldGVyaXplZAotLy8gdGVzdHMgYnkgcGxhdGZvcm0sIHNv
IHdlIHNraXAgdW5zdXBwb3J0ZWQgY29uZmlncy4KLQotI2lmbmRlZiBBTkdMRV9URVNUX0lOU1RB
TlRJQVRFX0hfCi0jZGVmaW5lIEFOR0xFX1RFU1RfSU5TVEFOVElBVEVfSF8KLQotI2luY2x1ZGUg
PGd0ZXN0L2d0ZXN0Lmg+Ci0KLSNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKLQotbmFtZXNwYWNl
IGFuZ2xlCi17Ci0KLXN0cnVjdCBQbGF0Zm9ybVBhcmFtZXRlcnM7Ci0KLWJvb2wgSXNQbGF0Zm9y
bUF2YWlsYWJsZShjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMgJnBhcmFtKTsKLQotLy8gVGhpcyBm
dW5jdGlvbnMgaXMgdXNlZCB0byBmaWx0ZXIgd2hpY2ggdGVzdHMgc2hvdWxkIGJlIHJlZ2lzdGVy
ZWQsCi0vLyBUIG11c3QgYmUgb3IgaW5oZXJpdCBmcm9tIGFuZ2xlOjpQbGF0Zm9ybVBhcmFtZXRl
cnMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0ZDo6dmVjdG9yPFQ+IEZpbHRlclRlc3RQYXJh
bXMoY29uc3QgVCAqcGFyYW1zLCBzaXplX3QgbnVtUGFyYW1zKQotewotICAgIHN0ZDo6dmVjdG9y
PFQ+IGZpbHRlcmVkOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1QYXJhbXM7IGkr
KykKLSAgICB7Ci0gICAgICAgIGlmIChJc1BsYXRmb3JtQXZhaWxhYmxlKHBhcmFtc1tpXSkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGZpbHRlcmVkLnB1c2hfYmFjayhwYXJhbXNbaV0pOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIGZpbHRlcmVkOwotfQotCi0vLyBJbnN0YW50aWF0
ZSB0aGUgdGVzdCBvbmNlIGZvciBlYWNoIGV4dHJhIGFyZ3VtZW50LiBUaGUgdHlwZXMgb2YgYWxs
IHRoZQotLy8gYXJndW1lbnRzIG11c3QgbWF0Y2gsIGFuZCBnZXRSZW5kZXJlciBtdXN0IGJlIGlt
cGxlbWVudGVkIGZvciB0aGF0IHR5cGUuCi0jZGVmaW5lIEFOR0xFX0lOU1RBTlRJQVRFX1RFU1Qo
dGVzdE5hbWUsIGZpcnN0UGFyYW0sIC4uLikgXAotICAgIGNvbnN0IGRlY2x0eXBlKGZpcnN0UGFy
YW0pIHRlc3ROYW1lIyNwYXJhbXNbXSA9IHsgZmlyc3RQYXJhbSwgIyNfX1ZBX0FSR1NfXyB9OyBc
Ci0gICAgSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoLCB0ZXN0TmFtZSwgXAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdGluZzo6VmFsdWVzSW4oOjphbmdsZTo6RmlsdGVyVGVzdFBh
cmFtcyh0ZXN0TmFtZSMjcGFyYW1zLCBBcnJheVNpemUodGVzdE5hbWUjI3BhcmFtcykpKSwgXAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6UHJpbnRUb1N0cmluZ1BhcmFt
TmFtZSgpKTsKLQotfSAvLyBuYW1lc3BhY2UgYW5nbGUKLQotI2VuZGlmIC8vIEFOR0xFX1RFU1Rf
SU5TVEFOVElBVEVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy90ZXN0X3V0aWxzL2NvbXBpbGVyX3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDUyMTVkODkyYWIyOGVhYTI0MWUzMDVjNDM3ZjdlZTM2NTAxN2I1NmMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwyMTcgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNSBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBjb21waWxlcl90
ZXN0LmNwcDoKLS8vICAgICB1dGlsaXRpZXMgZm9yIGNvbXBpbGVyIHVuaXQgdGVzdHMuCi0KLSNp
bmNsdWRlICJ0ZXN0cy90ZXN0X3V0aWxzL2NvbXBpbGVyX3Rlc3QuaCIKLQotI2luY2x1ZGUgImFu
Z2xlX2dsLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Db21waWxlci5oIgotCi1u
YW1lc3BhY2UKLXsKLQotY2xhc3MgU2hhZGVyVmFyaWFibGVGaW5kZXIgOiBwdWJsaWMgVEludGVy
bVRyYXZlcnNlcgotewotICBwdWJsaWM6Ci0gICAgU2hhZGVyVmFyaWFibGVGaW5kZXIoY29uc3Qg
VFN0cmluZyAmdmFyaWFibGVOYW1lLCBUQmFzaWNUeXBlIGJhc2ljVHlwZSkKLSAgICAgICAgOiBU
SW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksCi0gICAgICAgICAgbVZhcmlhYmxl
TmFtZSh2YXJpYWJsZU5hbWUpLAotICAgICAgICAgIG1Ob2RlRm91bmQobnVsbHB0ciksCi0gICAg
ICAgICAgbUJhc2ljVHlwZShiYXNpY1R5cGUpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgdmlz
aXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkKLSAgICB7Ci0gICAgICAgIGlmIChub2RlLT5n
ZXRCYXNpY1R5cGUoKSA9PSBtQmFzaWNUeXBlICYmIG5vZGUtPmdldFN5bWJvbCgpID09IG1WYXJp
YWJsZU5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1Ob2RlRm91bmQgPSBub2RlOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgYm9vbCBpc0ZvdW5kKCkgY29uc3QgeyByZXR1cm4gbU5vZGVG
b3VuZCAhPSBudWxscHRyOyB9Ci0gICAgY29uc3QgVEludGVybVN5bWJvbCAqZ2V0Tm9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1Ob2RlRm91bmQ7IH0KLQotICBwcml2YXRlOgotICAgIFRTdHJpbmcgbVZh
cmlhYmxlTmFtZTsKLSAgICBUSW50ZXJtU3ltYm9sICptTm9kZUZvdW5kOwotICAgIFRCYXNpY1R5
cGUgbUJhc2ljVHlwZTsKLX07Ci0KLX0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotYm9vbCBj
b21waWxlVGVzdFNoYWRlcihHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgU2hT
aGFkZXJTcGVjIHNwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91
dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgU2hCdWlsdEluUmVzb3VyY2VzICpyZXNvdXJj
ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlv
bnMsCi0gICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICp0cmFuc2xhdGVkQ29kZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKmluZm9Mb2cpCi17Ci0gICAgVENv
bXBpbGVyICp0cmFuc2xhdG9yID0gQ29uc3RydWN0Q29tcGlsZXIodHlwZSwgc3BlYywgb3V0cHV0
KTsKLSAgICBpZiAoIXRyYW5zbGF0b3ItPkluaXQoKnJlc291cmNlcykpCi0gICAgewotICAgICAg
ICBTYWZlRGVsZXRlKHRyYW5zbGF0b3IpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgY29uc3QgY2hhciAqc2hhZGVyU3RyaW5nc1tdID0geyBzaGFkZXJTdHJpbmcuY19zdHIo
KSB9OwotCi0gICAgYm9vbCBjb21waWxhdGlvblN1Y2Nlc3MgPSB0cmFuc2xhdG9yLT5jb21waWxl
KHNoYWRlclN0cmluZ3MsIDEsIFNIX09CSkVDVF9DT0RFIHwgY29tcGlsZU9wdGlvbnMpOwotICAg
IFRJbmZvU2luayAmaW5mb1NpbmsgPSB0cmFuc2xhdG9yLT5nZXRJbmZvU2luaygpOwotICAgIGlm
ICh0cmFuc2xhdGVkQ29kZSkKLSAgICAgICAgKnRyYW5zbGF0ZWRDb2RlID0gaW5mb1Npbmsub2Jq
LmNfc3RyKCk7Ci0gICAgaWYgKGluZm9Mb2cpCi0gICAgICAgICppbmZvTG9nID0gaW5mb1Npbmsu
aW5mby5jX3N0cigpOwotICAgIFNhZmVEZWxldGUodHJhbnNsYXRvcik7Ci0gICAgcmV0dXJuIGNv
bXBpbGF0aW9uU3VjY2VzczsKLX0KLQotYm9vbCBjb21waWxlVGVzdFNoYWRlcihHTGVudW0gdHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJTcGVjIHNwZWMsCi0gICAgICAgICAg
ICAgICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAg
ICAgc3RkOjpzdHJpbmcgKnRyYW5zbGF0ZWRDb2RlLAotICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OnN0cmluZyAqaW5mb0xvZykKLXsKLSAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2Vz
OwotICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7Ci0gICAgcmV0dXJuIGNv
bXBpbGVUZXN0U2hhZGVyKHR5cGUsIHNwZWMsIG91dHB1dCwgc2hhZGVyU3RyaW5nLCAmcmVzb3Vy
Y2VzLCBjb21waWxlT3B0aW9ucywgdHJhbnNsYXRlZENvZGUsIGluZm9Mb2cpOwotfQotCi1NYXRj
aE91dHB1dENvZGVUZXN0OjpNYXRjaE91dHB1dENvZGVUZXN0KEdMZW51bSBzaGFkZXJUeXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25z
IGRlZmF1bHRDb21waWxlT3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSkKLSAgICA6IG1TaGFkZXJUeXBlKHNo
YWRlclR5cGUpLCBtRGVmYXVsdENvbXBpbGVPcHRpb25zKGRlZmF1bHRDb21waWxlT3B0aW9ucykK
LXsKLSAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZtUmVzb3VyY2VzKTsKLSAgICBtT3V0cHV0
Q29kZVtvdXRwdXRUeXBlXSA9IHN0ZDo6c3RyaW5nKCk7Ci19Ci0KLXZvaWQgTWF0Y2hPdXRwdXRD
b2RlVGVzdDo6YWRkT3V0cHV0VHlwZShjb25zdCBTaFNoYWRlck91dHB1dCBvdXRwdXRUeXBlKQot
ewotICAgIG1PdXRwdXRDb2RlW291dHB1dFR5cGVdID0gc3RkOjpzdHJpbmcoKTsKLX0KLQotU2hC
dWlsdEluUmVzb3VyY2VzICpNYXRjaE91dHB1dENvZGVUZXN0OjpnZXRSZXNvdXJjZXMoKQotewot
ICAgIHJldHVybiAmbVJlc291cmNlczsKLX0KLQotdm9pZCBNYXRjaE91dHB1dENvZGVUZXN0Ojpj
b21waWxlKGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcpCi17Ci0gICAgY29tcGlsZShz
aGFkZXJTdHJpbmcsIG1EZWZhdWx0Q29tcGlsZU9wdGlvbnMpOwotfQotCi12b2lkIE1hdGNoT3V0
cHV0Q29kZVRlc3Q6OmNvbXBpbGUoY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaENvbXBpbGVPcHRpb25zIGNv
bXBpbGVPcHRpb25zKQotewotICAgIHN0ZDo6c3RyaW5nIGluZm9Mb2c7Ci0gICAgZm9yIChhdXRv
ICZjb2RlIDogbU91dHB1dENvZGUpCi0gICAgewotICAgICAgICBib29sIGNvbXBpbGF0aW9uU3Vj
Y2VzcyA9Ci0gICAgICAgICAgICBjb21waWxlV2l0aFNldHRpbmdzKGNvZGUuZmlyc3QsIHNoYWRl
clN0cmluZywgY29tcGlsZU9wdGlvbnMsICZjb2RlLnNlY29uZCwgJmluZm9Mb2cpOwotICAgICAg
ICBpZiAoIWNvbXBpbGF0aW9uU3VjY2VzcykKLSAgICAgICAgewotICAgICAgICAgICAgRkFJTCgp
IDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkOlxuIiA8PCBpbmZvTG9nOwotICAgICAgICB9
Ci0gICAgfQotfQotCi1ib29sIE1hdGNoT3V0cHV0Q29kZVRlc3Q6OmNvbXBpbGVXaXRoU2V0dGlu
Z3MoU2hTaGFkZXJPdXRwdXQgb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hDb21waWxlT3B0
aW9ucyBjb21waWxlT3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6OnN0cmluZyAqdHJhbnNsYXRlZENvZGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKmluZm9Mb2cpCi17Ci0g
ICAgcmV0dXJuIGNvbXBpbGVUZXN0U2hhZGVyKG1TaGFkZXJUeXBlLCBTSF9HTEVTM19TUEVDLCBv
dXRwdXQsIHNoYWRlclN0cmluZywgJm1SZXNvdXJjZXMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbXBpbGVPcHRpb25zLCB0cmFuc2xhdGVkQ29kZSwgaW5mb0xvZyk7Ci19Ci0KLWJv
b2wgTWF0Y2hPdXRwdXRDb2RlVGVzdDo6Zm91bmRJbkNvZGUoU2hTaGFkZXJPdXRwdXQgb3V0cHV0
LCBjb25zdCBjaGFyICpzdHJpbmdUb0ZpbmQpIGNvbnN0Ci17Ci0gICAgY29uc3QgYXV0byBjb2Rl
ID0gbU91dHB1dENvZGUuZmluZChvdXRwdXQpOwotICAgIEVYUEVDVF9ORShtT3V0cHV0Q29kZS5l
bmQoKSwgY29kZSk7Ci0gICAgaWYgKGNvZGUgPT0gbU91dHB1dENvZGUuZW5kKCkpCi0gICAgewot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNvZGUtPnNlY29uZC5m
aW5kKHN0cmluZ1RvRmluZCkgIT0gc3RkOjpzdHJpbmc6Om5wb3M7Ci19Ci0KLWJvb2wgTWF0Y2hP
dXRwdXRDb2RlVGVzdDo6Zm91bmRJbkNvZGUoU2hTaGFkZXJPdXRwdXQgb3V0cHV0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHJpbmdUb0ZpbmQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBleHBlY3Rl
ZE9jY3VycmVuY2VzKSBjb25zdAotewotICAgIGNvbnN0IGF1dG8gY29kZSA9IG1PdXRwdXRDb2Rl
LmZpbmQob3V0cHV0KTsKLSAgICBFWFBFQ1RfTkUobU91dHB1dENvZGUuZW5kKCksIGNvZGUpOwot
ICAgIGlmIChjb2RlID09IG1PdXRwdXRDb2RlLmVuZCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIHNpemVfdCBjdXJyZW50UG9zICA9IDA7Ci0gICAgaW50IG9j
Y3VyZW5jZXNMZWZ0ID0gZXhwZWN0ZWRPY2N1cnJlbmNlczsKLSAgICB3aGlsZSAob2NjdXJlbmNl
c0xlZnQtLSA+IDApCi0gICAgewotICAgICAgICBhdXRvIHBvc2l0aW9uID0gY29kZS0+c2Vjb25k
LmZpbmQoc3RyaW5nVG9GaW5kLCBjdXJyZW50UG9zKTsKLSAgICAgICAgaWYgKHBvc2l0aW9uID09
IHN0ZDo6c3RyaW5nOjpucG9zKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KLSAgICAgICAgY3VycmVudFBvcyA9IHBvc2l0aW9uICsgMTsKLSAgICB9Ci0g
ICAgcmV0dXJuIGNvZGUtPnNlY29uZC5maW5kKHN0cmluZ1RvRmluZCwgY3VycmVudFBvcykgPT0g
c3RkOjpzdHJpbmc6Om5wb3M7Ci19Ci0KLWJvb2wgTWF0Y2hPdXRwdXRDb2RlVGVzdDo6Zm91bmRJ
bkNvZGUoY29uc3QgY2hhciAqc3RyaW5nVG9GaW5kKSBjb25zdAotewotICAgIGZvciAoYXV0byAm
Y29kZSA6IG1PdXRwdXRDb2RlKQotICAgIHsKLSAgICAgICAgaWYgKCFmb3VuZEluQ29kZShjb2Rl
LmZpcnN0LCBzdHJpbmdUb0ZpbmQpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgTWF0Y2hP
dXRwdXRDb2RlVGVzdDo6Zm91bmRJbkNvZGUoY29uc3QgY2hhciAqc3RyaW5nVG9GaW5kLCBjb25z
dCBpbnQgZXhwZWN0ZWRPY2N1cnJlbmNlcykgY29uc3QKLXsKLSAgICBmb3IgKGF1dG8gJmNvZGUg
OiBtT3V0cHV0Q29kZSkKLSAgICB7Ci0gICAgICAgIGlmICghZm91bmRJbkNvZGUoY29kZS5maXJz
dCwgc3RyaW5nVG9GaW5kLCBleHBlY3RlZE9jY3VycmVuY2VzKSkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwot
fQotCi1ib29sIE1hdGNoT3V0cHV0Q29kZVRlc3Q6Om5vdEZvdW5kSW5Db2RlKGNvbnN0IGNoYXIg
KnN0cmluZ1RvRmluZCkgY29uc3QKLXsKLSAgICBmb3IgKGF1dG8gJmNvZGUgOiBtT3V0cHV0Q29k
ZSkKLSAgICB7Ci0gICAgICAgIGlmIChmb3VuZEluQ29kZShjb2RlLmZpcnN0LCBzdHJpbmdUb0Zp
bmQpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWNvbnN0IFRJbnRlcm1TeW1ib2wgKkZpbmRTeW1i
b2xOb2RlKFRJbnRlcm1Ob2RlICpyb290LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFN0cmluZyAmc3ltYm9sTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRCYXNpY1R5cGUgYmFzaWNUeXBlKQotewotICAgIFNoYWRlclZhcmlhYmxl
RmluZGVyIGZpbmRlcihzeW1ib2xOYW1lLCBiYXNpY1R5cGUpOwotICAgIHJvb3QtPnRyYXZlcnNl
KCZmaW5kZXIpOwotICAgIHJldHVybiBmaW5kZXIuZ2V0Tm9kZSgpOwotfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVz
dC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvY29tcGls
ZXJfdGVzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWI2MDZiYWNmODEzMmJj
NmU1NTNhNGExNThkNTk3MDEyNDk0YmM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0
aWxzL2NvbXBpbGVyX3Rlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLS8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCi0vLwotLy8gY29tcGlsZXJfdGVzdC5oOgotLy8gICAgIHV0aWxpdGllcyBmb3IgY29tcGls
ZXIgdW5pdCB0ZXN0cy4KLQotI2lmbmRlZiBURVNUU19URVNUX1VUSUxTX0NPTVBJTEVSX1RFU1Rf
SF8KLSNkZWZpbmUgVEVTVFNfVEVTVF9VVElMU19DT01QSUxFUl9URVNUX0hfCi0KLSNpbmNsdWRl
IDxtYXA+Ci0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotCi0jaW5jbHVkZSAiYW5nbGVfZ2wu
aCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NMLmgiCi0jaW5j
bHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLWJvb2wgY29tcGlsZVRlc3RTaGFkZXIoR0xl
bnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyU3BlYyBzcGVjLAotICAg
ICAgICAgICAgICAgICAgICAgICBTaFNoYWRlck91dHB1dCBvdXRwdXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcsCi0gICAgICAgICAgICAg
ICAgICAgICAgIFNoQnVpbHRJblJlc291cmNlcyAqcmVzb3VyY2VzLAotICAgICAgICAgICAgICAg
ICAgICAgICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zLAotICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6OnN0cmluZyAqdHJhbnNsYXRlZENvZGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nICppbmZvTG9nKTsKLQotYm9vbCBjb21waWxlVGVzdFNoYWRlcihHTGVu
dW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJTcGVjIHNwZWMsCi0gICAg
ICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZywKLSAgICAgICAgICAgICAg
ICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucywKLSAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjpzdHJpbmcgKnRyYW5zbGF0ZWRDb2RlLAotICAgICAgICAgICAgICAgICAg
ICAgICBzdGQ6OnN0cmluZyAqaW5mb0xvZyk7Ci0KLWNsYXNzIE1hdGNoT3V0cHV0Q29kZVRlc3Qg
OiBwdWJsaWMgdGVzdGluZzo6VGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgTWF0Y2hPdXRwdXRD
b2RlVGVzdChHTGVudW0gc2hhZGVyVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFNoQ29t
cGlsZU9wdGlvbnMgZGVmYXVsdENvbXBpbGVPcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAg
ICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSk7Ci0KLSAgICB2b2lkIGFkZE91dHB1dFR5cGUo
Y29uc3QgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSk7Ci0KLSAgICBTaEJ1aWx0SW5SZXNvdXJj
ZXMgKmdldFJlc291cmNlcygpOwotCi0gICAgLy8gQ29tcGlsZSBmdW5jdGlvbnMgY2xlYXIgYW55
IHJlc3VsdHMgZnJvbSBlYXJsaWVyIGNhbGxzIHRvIHRoZW0uCi0gICAgdm9pZCBjb21waWxlKGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcpOwotICAgIHZvaWQgY29tcGlsZShjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nLCBjb25zdCBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVP
cHRpb25zKTsKLQotICAgIGJvb2wgZm91bmRJbkVTU0xDb2RlKGNvbnN0IGNoYXIgKnN0cmluZ1Rv
RmluZCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmb3VuZEluQ29kZShTSF9FU1NMX09V
VFBVVCwgc3RyaW5nVG9GaW5kKTsKLSAgICB9Ci0KLSAgICBib29sIGZvdW5kSW5HTFNMQ29kZShj
b25zdCBjaGFyICpzdHJpbmdUb0ZpbmQpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZm91
bmRJbkNvZGUoU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCwgc3RyaW5nVG9GaW5kKTsKLSAg
ICB9Ci0KLSAgICBib29sIGZvdW5kSW5Db2RlKFNoU2hhZGVyT3V0cHV0IG91dHB1dCwgY29uc3Qg
Y2hhciAqc3RyaW5nVG9GaW5kKSBjb25zdDsKLQotICAgIC8vIFRlc3QgdGhhdCB0aGUgc3RyaW5n
IG9jY3VycyBmb3IgZXhhY3RseSBleHBlY3RlZE9jY3VycmVuY2VzIHRpbWVzCi0gICAgYm9vbCBm
b3VuZEluQ29kZShTaFNoYWRlck91dHB1dCBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICpzdHJpbmdUb0ZpbmQsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQg
ZXhwZWN0ZWRPY2N1cnJlbmNlcykgY29uc3Q7Ci0KLSAgICAvLyBUZXN0IHRoYXQgdGhlIHN0cmlu
ZyBpcyBmb3VuZCBpbiBhbGwgb3V0cHV0cwotICAgIGJvb2wgZm91bmRJbkNvZGUoY29uc3QgY2hh
ciAqc3RyaW5nVG9GaW5kKSBjb25zdDsKLQotICAgIC8vIFRlc3QgdGhhdCB0aGUgc3RyaW5nIG9j
Y3VycyBmb3IgZXhhY3RseSBleHBlY3RlZE9jY3VycmVuY2VzIHRpbWVzIGluIGFsbCBvdXRwdXRz
Ci0gICAgYm9vbCBmb3VuZEluQ29kZShjb25zdCBjaGFyICpzdHJpbmdUb0ZpbmQsIGNvbnN0IGlu
dCBleHBlY3RlZE9jY3VycmVuY2VzKSBjb25zdDsKLQotICAgIC8vIFRlc3QgdGhhdCB0aGUgc3Ry
aW5nIGlzIGZvdW5kIGluIG5vbmUgb2YgdGhlIG91dHB1dHMKLSAgICBib29sIG5vdEZvdW5kSW5D
b2RlKGNvbnN0IGNoYXIgKnN0cmluZ1RvRmluZCkgY29uc3Q7Ci0KLSAgcHJpdmF0ZToKLSAgICBi
b29sIGNvbXBpbGVXaXRoU2V0dGluZ3MoU2hTaGFkZXJPdXRwdXQgb3V0cHV0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25z
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqdHJhbnNsYXRlZENv
ZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICppbmZvTG9nKTsK
LQotICAgIEdMZW51bSBtU2hhZGVyVHlwZTsKLSAgICBTaENvbXBpbGVPcHRpb25zIG1EZWZhdWx0
Q29tcGlsZU9wdGlvbnM7Ci0gICAgU2hCdWlsdEluUmVzb3VyY2VzIG1SZXNvdXJjZXM7Ci0KLSAg
ICBzdGQ6Om1hcDxTaFNoYWRlck91dHB1dCwgc3RkOjpzdHJpbmc+IG1PdXRwdXRDb2RlOwotfTsK
LQotY29uc3QgVEludGVybVN5bWJvbCAqRmluZFN5bWJvbE5vZGUoVEludGVybU5vZGUgKnJvb3Qs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZzeW1i
b2xOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEJhc2ljVHlwZSBi
YXNpY1R5cGUpOwotCi0jZW5kaWYgLy8gVEVTVFNfVEVTVF9VVElMU19DT01QSUxFUl9URVNUX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGls
cy9nbF9yYWlpLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGls
cy9nbF9yYWlpLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhZGMwY2YwMjM2MjE4
NzQ3NWE2ZWM4Y2I3YWI0NjY3YmM4M2ZhNjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3Rf
dXRpbHMvZ2xfcmFpaS5oCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotLy8KLS8vIENv
cHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
LS8vCi0vLyBnbF9yYWlpOgotLy8gICBIZWxwZXIgbWV0aG9kcyBmb3IgY29udGFpbmluZyBHTCBv
YmplY3RzIGxpa2UgYnVmZmVycyBhbmQgdGV4dHVyZXMuCi0KLSNpZm5kZWYgQU5HTEVfVEVTVFNf
R0xfUkFJSV9IXwotI2RlZmluZSBBTkdMRV9URVNUU19HTF9SQUlJX0hfCi0KLSNpbmNsdWRlIDxm
dW5jdGlvbmFsPgotCi0jaW5jbHVkZSAiYW5nbGVfZ2wuaCIKLQotbmFtZXNwYWNlIGFuZ2xlCi17
Ci0KLS8vIFRoaXMgaXMgYSBiaXQgb2YgaGFjayB0byB3b3JrIGFyb3VuZCBhIGJ1ZyBpbiBNU1ZT
IGludGVsbGlzZW5zZSwgYW5kIG1ha2UgaXQgdmVyeSBlYXN5IHRvCi0vLyB1c2UgdGhlIGNvcnJl
Y3QgZnVuY3Rpb24gcG9pbnRlciB0eXBlIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgdGhlIHZhcmlv
dXMgZGVmaW5pdGlvbnMgb2YKLS8vIEdMX0FQSUNBTEwuCi11c2luZyBHTEdlbiAgICA9IGRlY2x0
eXBlKGdsR2VuQnVmZmVycyk7Ci11c2luZyBHTERlbGV0ZSA9IGRlY2x0eXBlKGdsRGVsZXRlQnVm
ZmVycyk7Ci0KLXRlbXBsYXRlIDxHTEdlbiBHZW5GLCBHTERlbGV0ZSBEZWxldGVGPgotY2xhc3Mg
R0xXcmFwcGVyCi17Ci0gIHB1YmxpYzoKLSAgICBHTFdyYXBwZXIoKSB7fQotICAgIH5HTFdyYXBw
ZXIoKSB7IERlbGV0ZUYoMSwgJm1IYW5kbGUpOyB9Ci0KLSAgICBHTHVpbnQgZ2V0KCkKLSAgICB7
Ci0gICAgICAgIGlmICghbUhhbmRsZSkKLSAgICAgICAgewotICAgICAgICAgICAgR2VuRigxLCAm
bUhhbmRsZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1IYW5kbGU7Ci0gICAgfQotCi0g
IHByaXZhdGU6Ci0gICAgR0x1aW50IG1IYW5kbGUgPSAwOwotfTsKLQotdXNpbmcgR0xCdWZmZXIg
ICAgICAgPSBHTFdyYXBwZXI8Z2xHZW5CdWZmZXJzLCBnbERlbGV0ZUJ1ZmZlcnM+OwotdXNpbmcg
R0xUZXh0dXJlICAgICAgPSBHTFdyYXBwZXI8Z2xHZW5UZXh0dXJlcywgZ2xEZWxldGVUZXh0dXJl
cz47Ci11c2luZyBHTEZyYW1lYnVmZmVyICA9IEdMV3JhcHBlcjxnbEdlbkZyYW1lYnVmZmVycywg
Z2xEZWxldGVGcmFtZWJ1ZmZlcnM+OwotdXNpbmcgR0xSZW5kZXJidWZmZXIgPSBHTFdyYXBwZXI8
Z2xHZW5SZW5kZXJidWZmZXJzLCBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnM+OwotCi1jbGFzcyBHTFBy
b2dyYW0KLXsKLSAgcHVibGljOgotICAgIEdMUHJvZ3JhbShjb25zdCBzdGQ6OnN0cmluZyAmdmVy
dGV4U2hhZGVyLCBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXIpCi0gICAgICAgIDog
bUhhbmRsZSgwKSwgbVZlcnRleFNoYWRlcih2ZXJ0ZXhTaGFkZXIpLCBtRnJhZ21lbnRTaGFkZXIo
ZnJhZ21lbnRTaGFkZXIpCi0gICAgewotICAgIH0KLQotICAgIEdMUHJvZ3JhbShjb25zdCBzdGQ6
OnN0cmluZyAmY29tcHV0ZVNoYWRlcikgOiBtSGFuZGxlKDApLCBtQ29tcHV0ZVNoYWRlcihjb21w
dXRlU2hhZGVyKSB7fQotCi0gICAgfkdMUHJvZ3JhbSgpIHsgZ2xEZWxldGVQcm9ncmFtKG1IYW5k
bGUpOyB9Ci0KLSAgICBHTHVpbnQgZ2V0KCkKLSAgICB7Ci0gICAgICAgIGlmIChtSGFuZGxlID09
IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbUNvbXB1dGVTaGFkZXIuZW1wdHkoKSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtSGFuZGxlID0gQ29tcGlsZUNvbXB1dGVQ
cm9ncmFtKG1Db21wdXRlU2hhZGVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtSGFuZGxlID0gQ29tcGlsZVByb2dyYW0o
bVZlcnRleFNoYWRlciwgbUZyYWdtZW50U2hhZGVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gbUhhbmRsZTsKLSAgICB9Ci0KLSAgcHJpdmF0ZToKLSAgICBHTHVp
bnQgbUhhbmRsZTsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBtVmVydGV4U2hhZGVyOwotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIG1GcmFnbWVudFNoYWRlcjsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBt
Q29tcHV0ZVNoYWRlcjsKLX07Ci0KLSNkZWZpbmUgQU5HTEVfR0xfUFJPR1JBTShuYW1lLCB2ZXJ0
ZXgsIGZyYWdtZW50KSBcCi0gICAgR0xQcm9ncmFtIG5hbWUodmVydGV4LCBmcmFnbWVudCk7ICAg
ICAgICAgICAgXAotICAgIEFTU0VSVF9ORSgwdSwgbmFtZS5nZXQoKSk7Ci0KLSNkZWZpbmUgQU5H
TEVfR0xfQ09NUFVURV9QUk9HUkFNKG5hbWUsIGNvbXB1dGUpIFwKLSAgICBHTFByb2dyYW0gbmFt
ZShjb21wdXRlKTsgICAgICAgICAgICAgICAgICAgIFwKLSAgICBBU1NFUlRfTkUoMHUsIG5hbWUu
Z2V0KCkpOwotCi19ICAvLyBuYW1lc3BhY2UgYW5nbGUKLQotI2VuZGlmICAvLyBBTkdMRV9URVNU
U19HTF9SQUlJX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvdGVzdHMuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RzLmd5
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJkMThlNzg5OGNjYzhmMjViMmUxOGE1
OWM3ZDY0NWMxOGFlZWYzYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdHMuZ3lwCisrKyAv
ZGV2L251bGwKQEAgLTEsMzQ5ICswLDAgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
LSMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLQotewotICAgICdpbmNsdWRlcyc6Ci0gICAg
WwotICAgICAgICAnZGVxcC5neXBpJywKLSAgICAgICAgJy4uLy4uL2J1aWxkL2NvbW1vbl9kZWZp
bmVzLmd5cGknLAotICAgIF0sCi0gICAgJ3ZhcmlhYmxlcyc6Ci0gICAgewotICAgICAgICAnYW5n
bGVfYnVpbGRfY29uZm9ybWFuY2VfdGVzdHMlJzogJzAnLAotCi0gICAgICAgICdyYXBpZGpzb25f
aW5jbHVkZV9kaXInOiAndGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUnLAotICAgICAgICAn
cmFwaWRqc29uX2hlYWRlcnMnOgotICAgICAgICBbCi0gICAgICAgICAgICAndGhpcmRfcGFydHkv
cmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2FsbG9jYXRvcnMuaCcsCi0gICAgICAgICAgICAn
dGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2RvY3VtZW50LmgnLAotICAg
ICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9lbmNvZGVk
c3RyZWFtLmgnLAotICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3Jh
cGlkanNvbi9lbmNvZGluZ3MuaCcsCi0gICAgICAgICAgICAndGhpcmRfcGFydHkvcmFwaWRqc29u
L2luY2x1ZGUvcmFwaWRqc29uL2ZpbGVyZWFkc3RyZWFtLmgnLAotICAgICAgICAgICAgJ3RoaXJk
X3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9maWxlc3RyZWFtLmgnLAotICAgICAg
ICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9maWxld3JpdGVz
dHJlYW0uaCcsCi0gICAgICAgICAgICAndGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFw
aWRqc29uL21lbW9yeWJ1ZmZlci5oJywKLSAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9yYXBpZGpz
b24vaW5jbHVkZS9yYXBpZGpzb24vbWVtb3J5c3RyZWFtLmgnLAotICAgICAgICAgICAgJ3RoaXJk
X3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9wcmV0dHl3cml0ZXIuaCcsCi0gICAg
ICAgICAgICAndGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3JhcGlkanNv
bi5oJywKLSAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpz
b24vcmVhZGVyLmgnLAotICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRl
L3JhcGlkanNvbi9zdHJpbmdidWZmZXIuaCcsCi0gICAgICAgICAgICAndGhpcmRfcGFydHkvcmFw
aWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3dyaXRlci5oJywKLSAgICAgICAgICAgICd0aGlyZF9w
YXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZXJyb3IvZW4uaCcsCi0gICAgICAgICAg
ICAndGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2Vycm9yL2Vycm9yLmgn
LAotICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9p
bnRlcm5hbC9kdG9hLmgnLAotICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNs
dWRlL3JhcGlkanNvbi9pbnRlcm5hbC9pdG9hLmgnLAotICAgICAgICAgICAgJ3RoaXJkX3BhcnR5
L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9tZXRhLmgnLAotICAgICAgICAg
ICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9wb3cx
MC5oJywKLSAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpz
b24vaW50ZXJuYWwvc3RhY2suaCcsCi0gICAgICAgICAgICAndGhpcmRfcGFydHkvcmFwaWRqc29u
L2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL3N0cmZ1bmMuaCcsCi0gICAgICAgICAgICAndGhp
cmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL21zaW50dHlwZXMvaW50dHlwZXMu
aCcsCi0gICAgICAgICAgICAndGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29u
L21zaW50dHlwZXMvc3RkaW50LmgnLAotICAgICAgICBdLAotICAgIH0sCi0gICAgJ2NvbmRpdGlv
bnMnOgotICAgIFsKLSAgICAgICAgIyBHb29nbGVUZXN0IGRvZXNuJ3Qgc3VwcG9ydCBXaW5SVAot
ICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0wJywKLSAgICAgICAgewotICAgICAgICAgICAg
J3RhcmdldHMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2FuZ2xlX3Rlc3Rfc3VwcG9ydCcsCi0gICAgICAgICAg
ICAgICAgICAgICd0eXBlJzogJ25vbmUnLAotICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5j
aWVzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJ2Fu
Z2xlX2ludGVybmFsX2dtb2NrJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9pbnRl
cm5hbF9ndGVzdCcsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgIF0sCi0gICAgICAgIH1dLAotICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0
PT0wJywKLSAgICAgICAgewotICAgICAgICAgICAgJ3RhcmdldHMnOgotICAgICAgICAgICAgWwot
ICAgICAgICAgICAgICAgICMgSGlkZSB0aGVzZSB0YXJnZXRzIGZyb20gQ2hyb21pdW0sIGJlY2F1
c2UgaXQgY2FuJ3QKLSAgICAgICAgICAgICAgICAjIGZpbmQgb3VyIHN0YW5kYWxvbmUgY29weSBv
ZiB0aGUgZ3Rlc3QvZ21vY2sgc291cmNlcy4KLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9pbnRlcm5hbF9ndGVzdCcsCi0gICAgICAg
ICAgICAgICAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKLSAgICAgICAgICAgICAgICAg
ICAgJ2luY2x1ZGVzJzogWyAnLi4vLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScsIF0sCi0g
ICAgICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOgotICAgICAgICAgICAgICAgICAgICBb
Ci0gICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkvZ29vZ2xldGVzdCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkvZ29vZ2xldGVzdC9pbmNsdWRlJywKLSAg
ICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAg
ICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkv
Z29vZ2xldGVzdC9zcmMvZ3Rlc3QtYWxsLmNjJywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnX1ZBUklBRElDX01BWD0xMCcsCi0gICAgICAgICAgICAgICAg
ICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdhbGxfZGVwZW5kZW50X3NldHRpbmdzJzoKLSAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgot
ICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdf
VkFSSUFESUNfTUFYPTEwJywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIFsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkvZ29vZ2xldGVzdCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dvb2dsZXRlc3QvaW5jbHVk
ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9pbnRlcm5hbF9nbW9jaycsCi0gICAgICAgICAgICAg
ICAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKLSAgICAgICAgICAgICAgICAgICAgJ2lu
Y2x1ZGVzJzogWyAnLi4vLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScsIF0sCi0gICAgICAg
ICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkvZ29vZ2xlbW9jaycsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAndGhpcmRfcGFydHkvZ29vZ2xlbW9jay9pbmNsdWRlJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9nb29nbGV0ZXN0L2luY2x1ZGUnLAotICAgICAg
ICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAg
ICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9nb29n
bGVtb2NrL3NyYy9nbW9jay1hbGwuY2MnLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAg
ICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICdfVkFSSUFESUNfTUFYPTEwJywKLSAgICAgICAgICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgICAgICAgICAgJ2FsbF9kZXBlbmRlbnRfc2V0dGluZ3MnOgotICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19WQVJJ
QURJQ19NQVg9MTAnLAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICdpbmNsdWRlX2RpcnMnOgotICAgICAgICAgICAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9nb29nbGVtb2NrJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkvZ29vZ2xlbW9jay9pbmNsdWRlJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkvZ29vZ2xldGVzdC9pbmNs
dWRlJywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgICMgVGhlc2Ugc2FtZSB0YXJn
ZXQgbmFtZXMgZXhpc3Qgb24gdGhlIENocm9taXVtIHNpZGUsCi0gICAgICAgICAgICAgICAgIyB3
aGljaCBpcyBmb3JiaWRkZW4sIHNvIHdlIG1ha2UgdGhlbSBjb25kaXRpb25hbCBvbgotICAgICAg
ICAgICAgICAgICMgQU5HTEUncyBzdGFuZGFsb25lIGJ1aWxkLgotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2FuZ2xlX3VuaXR0ZXN0cycsCi0g
ICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAotICAgICAgICAgICAgICAg
ICAgICAnaW5jbHVkZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnLi4vLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAnYW5nbGVfdW5pdHRlc3RzLmd5cGknLAotICAgICAgICAgICAgICAgICAgICBd
LAotICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsK
LSAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV91bml0dGVzdHNfbWFpbi5jcHAnLAotICAg
ICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAnbXN2c19zZXR0aW5ncyc6
Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdWQ0xpbmtl
clRvb2wnOgotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdjb25kaXRpb25zJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnYW5nbGVfYnVpbGRfd2lucnQ9PTEnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnQWRkaXRpb25hbERlcGVuZGVuY2llcyc6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3J1bnRpbWVvYmplY3QubGliJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAnbXN2c19kaXNhYmxlZF93YXJuaW5n
cyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgIDQyNDQs
ICMgQ29udmVyc2lvbiBmcm9tICd0eXBlMScgdG8gJ3R5cGUyJywgcG9zc2libGUgbG9zcyBvZiBk
YXRhCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9lbmQy
ZW5kX3Rlc3RzJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCi0g
ICAgICAgICAgICAgICAgICAgICdpbmNsdWRlcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICcuLi8uLi9idWlsZC9jb21tb25fZGVmaW5lcy5neXBpJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9lbmQyZW5kX3Rlc3RzLmd5cGknLAotICAg
ICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6Ci0gICAg
ICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9lbmQyZW5k
X3Rlc3RzX21haW4uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1l
JzogJ2FuZ2xlX3BlcmZ0ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ2V4ZWN1
dGFibGUnLAotICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZXMnOgotICAgICAgICAgICAgICAg
ICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnLi4vLi4vYnVpbGQvY29tbW9uX2RlZmlu
ZXMuZ3lwaScsCi0gICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfcGVyZnRlc3RzLmd5cGkn
LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6
Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9w
ZXJmdGVzdHNfbWFpbi5jcHAnLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICB9XSwKLSAgICAgICAgWydPUz09IndpbiIn
LAotICAgICAgICB7Ci0gICAgICAgICAgICAnY29uZGl0aW9ucyc6Ci0gICAgICAgICAgICBbCi0g
ICAgICAgICAgICAgICAgWydhbmdsZV9idWlsZF9jb25mb3JtYW5jZV90ZXN0cycsCi0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVzJzoKLSAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2dsZXNfY29uZm9ybWFuY2VfdGVz
dHNfb3V0cHV0X2Rpcic6ICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS9jb25mb3JtYW5jZV90
ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZ2xlc19jb25mb3JtYW5jZV90ZXN0c19p
bnB1dF9kaXInOiAndGhpcmRfcGFydHkvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy9jb25mb3JtL0dU
Rl9FUy9nbHNsL0dURicsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZ2xlc19jb25mb3JtYW5j
ZV90ZXN0c19nZW5lcmF0b3Jfc2NyaXB0JzogJ2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvZ2VuZXJh
dGVfZ2xlc19jb25mb3JtYW5jZV90ZXN0cy5weScsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgICd0YXJnZXRzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0YXJn
ZXRfbmFtZSc6ICdhbmdsZV9nbGVzMl9jb25mb3JtYW5jZV90ZXN0cycsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2luY2x1ZGVzJzogWyAnLi4vLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScs
IF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
PChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmxpYkdMRVN2MicsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9hbmdsZS5neXA6bGliRUdMJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dsZXNfY29uZm9ybWFu
Y2VfdGVzdHMvY29uZm9ybS9HVEZfRVMvZ2xzbC9HVEYvZXNfY3RzLmd5cDplc19jdHNfdGVzdF9k
YXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dsZXNf
Y29uZm9ybWFuY2VfdGVzdHMvY29uZm9ybS9HVEZfRVMvZ2xzbC9HVEYvZXNfY3RzLmd5cDplczJf
Y3RzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX3Rlc3Rfc3VwcG9y
dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAndmFyaWFibGVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnbGVzMl9jb25mb3JtYW5jZV90ZXN0c19pbnB1
dF9maWxlJzogJzwoZ2xlc19jb25mb3JtYW5jZV90ZXN0c19pbnB1dF9kaXIpL211c3RwYXNzX2Vz
MjAucnVuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dsZXMyX2NvbmZvcm1h
bmNlX3Rlc3RzX2dlbmVyYXRlZF9maWxlJzogJzwoZ2xlc19jb25mb3JtYW5jZV90ZXN0c19vdXRw
dXRfZGlyKS9nZW5lcmF0ZWRfZ2xlczJfY29uZm9ybWFuY2VfdGVzdHMuY3BwJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzb3Vy
Y2VzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdnbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVz
dHMuY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dsZXNfY29uZm9ybWFu
Y2VfdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy5oJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0
c19tYWluLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGdsZXMyX2Nv
bmZvcm1hbmNlX3Rlc3RzX2dlbmVyYXRlZF9maWxlKScsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzoKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICc8KGFuZ2xlX3BhdGgpL2luY2x1ZGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnZ2xlc19jb25mb3JtYW5jZV90ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ09O
Rk9STUFOQ0VfVEVTVFNfVFlQRT1DT05GT1JNQU5DRV9URVNUU19FUzInLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNfc2V0
dGluZ3MnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ1ZDQ0xDb21waWxlclRvb2wnOgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE1TVlMg
aGFzIHRyb3VibGUgY29tcGlsaW5nIHRoaXMgZHVlIHRvIHRoZSBvYmogZmlsZXMgYmVjb21pbmcg
dG9vIGxhcmdlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FkZGl0aW9u
YWxPcHRpb25zJzogWyAnL2JpZ29iaicgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdhY3Rpb25zJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdnZW5lcmF0ZV9nbGVzMl9jb25mb3JtYW5jZV90ZXN0
cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWVzc2FnZSc6ICdHZW5l
cmF0aW5nIEVTMiBjb25mb3JtYW5jZSB0ZXN0cy4uLicsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnbXN2c19jeWd3aW5fc2hlbGwnOiAwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2lucHV0cyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwoZ2xl
c19jb25mb3JtYW5jZV90ZXN0c19nZW5lcmF0b3Jfc2NyaXB0KScsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJzwoZ2xlczJfY29uZm9ybWFuY2VfdGVzdHNfaW5wdXRf
ZmlsZSknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdXRwdXRzJzoKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnPChnbGVzMl9jb25mb3JtYW5jZV90ZXN0c19nZW5lcmF0ZWRfZmlsZSknLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdhY3Rpb24nOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdweXRob24nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGdsZXNfY29uZm9ybWFu
Y2VfdGVzdHNfZ2VuZXJhdG9yX3NjcmlwdCknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICc8KGdsZXMyX2NvbmZvcm1hbmNlX3Rlc3RzX2lucHV0X2ZpbGUpJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChnbGVzX2NvbmZvcm1hbmNl
X3Rlc3RzX2lucHV0X2RpciknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICc8KGdsZXMyX2NvbmZvcm1hbmNlX3Rlc3RzX2dlbmVyYXRlZF9maWxlKScsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9nbGVzM19jb25mb3JtYW5jZV90ZXN0
cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVzJzogWyAnLi4vLi4vYnVpbGQvY29t
bW9uX2RlZmluZXMuZ3lwaScsIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcGVu
ZGVuY2llcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmxpYkdMRVN2Mics
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9hbmds
ZS5neXA6bGliRUdMJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3Bh
cnR5L2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvY29uZm9ybS9HVEZfRVMvZ2xzbC9HVEYvZXNfY3Rz
Lmd5cDplc19jdHNfdGVzdF9kYXRhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3RoaXJkX3BhcnR5L2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvY29uZm9ybS9HVEZfRVMvZ2xzbC9H
VEYvZXNfY3RzLmd5cDplczNfY3RzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2FuZ2xlX3Rlc3Rfc3VwcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVzJzoKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnbGVzM19jb25m
b3JtYW5jZV90ZXN0c19pbnB1dF9maWxlJzogJzwoZ2xlc19jb25mb3JtYW5jZV90ZXN0c19pbnB1
dF9kaXIpL211c3RwYXNzX2VzMzAucnVuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2dsZXMzX2NvbmZvcm1hbmNlX3Rlc3RzX2dlbmVyYXRlZF9maWxlJzogJzwoZ2xlc19jb25m
b3JtYW5jZV90ZXN0c19vdXRwdXRfZGlyKS9nZW5lcmF0ZWRfZ2xlczNfY29uZm9ybWFuY2VfdGVz
dHMuY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2ds
ZXNfY29uZm9ybWFuY2VfdGVzdHMuY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy5oJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvZ2xl
c19jb25mb3JtYW5jZV90ZXN0c19tYWluLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICc8KGdsZXMzX2NvbmZvcm1hbmNlX3Rlc3RzX2dlbmVyYXRlZF9maWxlKScsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
aW5jbHVkZV9kaXJzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL2luY2x1ZGUnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnZ2xlc19jb25mb3JtYW5jZV90ZXN0cycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVm
aW5lcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnQ09ORk9STUFOQ0VfVEVTVFNfVFlQRT1DT05GT1JNQU5DRV9URVNUU19F
UzMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ21zdnNfc2V0dGluZ3MnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZDQ0xDb21waWxlclRvb2wnOgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjIE1TVlMgaGFzIHRyb3VibGUgY29tcGlsaW5nIHRoaXMgZHVlIHRvIHRoZSBv
YmogZmlsZXMgYmVjb21pbmcgdG9vIGxhcmdlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0FkZGl0aW9uYWxPcHRpb25zJzogWyAnL2JpZ29iaicgXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb25zJzoKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdnZW5lcmF0ZV9nbGVz
M19jb25mb3JtYW5jZV90ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnbWVzc2FnZSc6ICdHZW5lcmF0aW5nIEVTMyBjb25mb3JtYW5jZSB0ZXN0cy4uLicsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXN2c19jeWd3aW5fc2hlbGwnOiAwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lucHV0cyc6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJzwoZ2xlc19jb25mb3JtYW5jZV90ZXN0c19nZW5lcmF0b3Jfc2NyaXB0KScs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwoZ2xlczNfY29uZm9y
bWFuY2VfdGVzdHNfaW5wdXRfZmlsZSknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvdXRwdXRzJzoK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnPChnbGVzM19jb25mb3JtYW5jZV90ZXN0c19nZW5lcmF0
ZWRfZmlsZSknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhY3Rpb24nOgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdweXRob24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICc8KGdsZXNfY29uZm9ybWFuY2VfdGVzdHNfZ2VuZXJhdG9yX3NjcmlwdCknLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGdsZXMzX2NvbmZvcm1hbmNlX3Rlc3Rz
X2lucHV0X2ZpbGUpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
PChnbGVzX2NvbmZvcm1hbmNlX3Rlc3RzX2lucHV0X2RpciknLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICc8KGdsZXMzX2NvbmZvcm1hbmNlX3Rlc3RzX2dlbmVyYXRl
ZF9maWxlKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICBdLAot
ICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgXSwKLSAgICAgICAgfV0sCi0gICAgXSwK
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9w
YXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvSG93VG9NYWtlQ2hhbmdlcy5tZCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlv
bnMvSG93VG9NYWtlQ2hhbmdlcy5tZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkw
YTNlOWMzNjI3MTg1NjE0MTM1MDM5NDE3YzJiNDMzNjJhOWVjZC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL0hvd1RvTWFrZUNoYW5nZXMu
bWQKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1CZWNhdXNlIHRoZSBgYGBncHVfdGVz
dF9leHBlY3RhdGlvbnNgYGAgZGlyZWN0b3J5IGlzIGJhc2VkIG9uIHBhcnRzIG9mIENocm9taXVt
J3MgYGBgZ3B1L2NvbmZpZ2BgYAotZGlyZWN0b3J5LCB3ZSB3YW50IHRvIGtlZXAgYSBwYXRjaCBv
ZiB0aGUgY2hhbmdlcyBhZGRlZCB0byBtYWtlIGl0IGNvbXBpbGUgd2l0aCBBTkdMRS4gVGhpcwot
d2lsbCBhbGxvdyB1cyB0byBtZXJnZSBDaHJvbWl1bSBjaGFuZ2VzIGVhc2lseSBpbiBvdXIgYGBg
Z3B1X3Rlc3RfZXhwZWN0YXRpb25zYGBgLgotCi1JbiBvcmRlciB0byBtYWtlIGEgY2hhbmdlIHRv
IHRoaXMgZGlyZWN0b3J5LCBkbyB0aGUgZm9sbG93aW5nOgotCi0gKiBjb3B5IHRoZSBkaXJlY3Rv
cnkgc29tZXdoZXJlIGxpa2UgaW4gYGBgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVydGVkYGBg
Ci0gKiBpbiBgYGBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWRgYGAgcnVuIGBgYHBhdGNo
IC1wIDEgLVIgPCBhbmdsZS1tb2RzLnBhdGNoYGBgCi0gKiBkbyB5b3VyIGNoYW5nZXMgaW4gYGBg
Z3B1X3Rlc3RfZXhwZWN0YXRpb25zYGBgCi0gKiBkZWxldGUgYW5nbGUtbW9kcy5wYXRjaCBpbiBi
b3RoIGRpcmVjdG9yaWVzCi0gKiBydW4gYGBgZGlmZiAtcnVwTiBncHVfdGVzdF9leHBlY3RhdGlv
bnNfcmV2ZXJ0ZWQgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zID4gYW5nbGUtbW9kcy5wYXRjaGBgYAot
ICogY29weSBgYGBhbmdsZS1tb2RzLnBhdGNoYGBgIGluIGBgYGdwdV90ZXN0X2V4cGVjdGF0aW9u
c2BgYAotCi1Ib3cgdG8gdXBkYXRlIGZyb20gQ2hyb21pdW06Ci0KLSAqIGBgYGdpdCBhcHBseSAt
UiBhbmdsZS1tb2RzLnBhdGNoYGBgLCBgYGBnaXQgYWRkIC4gLXVgYGAsIGBgYGdpdCBjb21taXRg
YGAKLSAqIENvcHkgb3ZlciBDaHJvbWl1bSBmaWxlcywgYGBgZ2l0IGFkZCAuIC11YGBgLCBgYGBn
aXQgY29tbWl0YGBgCi0gKiBgYGBnaXQgcmV2ZXJ0IEhFQUR+YGBgCi0gKiBgYGBybSBhbmdsZS1t
b2RzLnBhdGNoYGBgCi0gKiBgYGBnaXQgZGlmZiBIRUFEfiAoYClscyhgKSA+IGFuZ2xlLW1vZHMu
cGF0Y2hgYGAsYGBgZ2l0IGFkZCBhbmdsZS1tb2RzLnBhdGNoYGBgLCBgYGBnaXQgY29tbWl0IC0t
YW1lbmRgYGAKLSAqIGBgYGdpdCByZWJhc2UgLWlgYGAgdG8gc3F1YXNoIHRoZSB0aHJlZSBwYXRj
aGVzIGludG8gb25lLgotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2FuZ2xlLW1vZHMucGF0Y2gg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3Rf
ZXhwZWN0YXRpb25zL2FuZ2xlLW1vZHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDhkZjg1OGM3Y2NiM2JiM2NhMzRjYTJlYWM5ODMxNWU3MDg2NTM0MGIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9hbmdsZS1tb2Rz
LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODY4ICswLDAgQEAKLWRpZmYgLXJ1cE4gZ3B1X3Rl
c3RfZXhwZWN0YXRpb25zX3JldmVydGVkL2FuZ2xlX2NvbmZpZy5oIGdwdV90ZXN0X2V4cGVjdGF0
aW9ucy9hbmdsZV9jb25maWcuaAotLS0tIGdwdV90ZXN0X2V4cGVjdGF0aW9uc19yZXZlcnRlZC9h
bmdsZV9jb25maWcuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGdw
dV90ZXN0X2V4cGVjdGF0aW9ucy9hbmdsZV9jb25maWcuaAkyMDE2LTA4LTIzIDEzOjUwOjE4LjI4
Mjc0MjUwNSAtMDQwMAotQEAgLTAsMCArMSw2NiBAQAotKy8vCi0rLy8gQ29weXJpZ2h0IDIwMTUg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCi0rLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLSsvLwotKy8vIGFuZ2xl
X2NvbmZpZy5oOgotKy8vICAgSGVscGVycyBmb3IgaW1wb3J0aW5nIHRoZSBncHUgdGVzdCBleHBl
Y3RhdGlvbnMgcGFja2FnZSBmcm9tIENocm9tZS4KLSsvLwotKwotKyNpZm5kZWYgR1BVX1RFU1Rf
RVhQRUNUQVRJT05TX0FOR0xFX0NPTkZJR19IXwotKyNkZWZpbmUgR1BVX1RFU1RfRVhQRUNUQVRJ
T05TX0FOR0xFX0NPTkZJR19IXwotKwotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsKLSsjaW5jbHVk
ZSA8aW9zdHJlYW0+Ci0rCi0rI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgotKyNpbmNsdWRlICJj
b21tb24vc3RyaW5nX3V0aWxzLmgiCi0rCi0rI2RlZmluZSBEQ0hFQ0tfRVEoQSxCKSBBU1NFUlQo
KEEpID09IChCKSkKLSsjZGVmaW5lIERDSEVDS19ORShBLEIpIEFTU0VSVCgoQSkgIT0gKEIpKQot
KyNkZWZpbmUgRENIRUNLKFgpIEFTU0VSVChYKQotKyNkZWZpbmUgTE9HKFgpIHN0ZDo6Y2Vycgot
KwotKyNkZWZpbmUgR1BVX0VYUE9SVAotKwotK3R5cGVkZWYgaW50MzJfdCBpbnQzMjsKLSt0eXBl
ZGVmIHVpbnQzMl90IHVpbnQzMjsKLSt0eXBlZGVmIGludDY0X3QgaW50NjQ7Ci0rdHlwZWRlZiB1
aW50NjRfdCB1aW50NjQ7Ci0rCi0rLy8gU2hpbSBDaHJvbWl1bSdzIGJhc2UgYnkgaW1wb3J0aW5n
IGZ1bmN0aW9ucyBpbiB0aGUgYmFzZSBuYW1lc3BhY2UuCi0rbmFtZXNwYWNlIGJhc2UKLSt7Ci0r
ICAgIHVzaW5nIGFuZ2xlOjprV2hpdGVzcGFjZUFTQ0lJOwotKyAgICB1c2luZyBhbmdsZTo6VFJJ
TV9XSElURVNQQUNFOwotKyAgICB1c2luZyBhbmdsZTo6S0VFUF9XSElURVNQQUNFOwotKyAgICB1
c2luZyBhbmdsZTo6U1BMSVRfV0FOVF9BTEw7Ci0rICAgIHVzaW5nIGFuZ2xlOjpTUExJVF9XQU5U
X05PTkVNUFRZOwotKyAgICB1c2luZyBhbmdsZTo6U3BsaXRTdHJpbmc7Ci0rICAgIHVzaW5nIGFu
Z2xlOjpTcGxpdFN0cmluZ0Fsb25nV2hpdGVzcGFjZTsKLSsgICAgdXNpbmcgYW5nbGU6OkhleFN0
cmluZ1RvVUludDsKLSsgICAgdXNpbmcgYW5nbGU6OlJlYWRGaWxlVG9TdHJpbmc7Ci0rCi0rICAg
IC8vIFN0cmluZ1ByaW50ZiBpcyBjYWxsZWQgZGlmZmVyZW50bHkgaW4gQU5HTEUgYnV0IHVzaW5n
IGNhbm5vdCBjaGFuZ2UKLSsgICAgLy8gdGhlIG5hbWUgb2YgdGhlIGltcG9ydGVkIGZ1bmN0aW9u
LiBVc2UgYSBkZWZpbmUgdG8gY2hhbmdlIHRoZSBuYW1lLgotKyAgICB1c2luZyA6OkZvcm1hdFN0
cmluZzsKLSsgICAgI2RlZmluZSBTdHJpbmdQcmludGYgRm9ybWF0U3RyaW5nCi0rfQotKwotKy8v
IFRPRE8oam1hZGlsbCk6IG90aGVyIHBsYXRmb3JtcwotKy8vIGNsYW5nLWZvcm1hdCBvZmYKLSsj
aWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX1dJTjY0KQotKyMgICAgZGVmaW5lIE9TX1dJ
TgotKyNlbGlmIGRlZmluZWQoQU5EUk9JRCkKLSsjICAgIGRlZmluZSBPU19BTkRST0lECi0rI2Vs
aWYgZGVmaW5lZChfX2xpbnV4X18pCi0rIyAgICBkZWZpbmUgT1NfTElOVVgKLSsjZWxpZiBkZWZp
bmVkKF9fQVBQTEVfXykKLSsjICAgIGRlZmluZSBPU19NQUNPU1gKLSsjZWxzZQotKyMgICAgZXJy
b3IgIlVuc3VwcG9ydGVkIHBsYXRmb3JtIgotKyNlbmRpZgotKy8vIGNsYW5nLWZvcm1hdCBvbgot
KwotKyNlbmRpZgotZGlmZiAtcnVwTiBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQvZ3B1
X2luZm8uY2MgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV9pbmZvLmNjCi0tLS0gZ3B1X3Rlc3Rf
ZXhwZWN0YXRpb25zX3JldmVydGVkL2dwdV9pbmZvLmNjCTIwMTYtMDgtMTIgMjE6MjM6NTQuODg0
MTMyNDA1IC0wNDAwCi0rKysgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV9pbmZvLmNjCTIwMTUt
MTEtMzAgMjE6NTQ6MzAuMjM5MjY3NjM1IC0wNTAwCi1AQCAtMiw3ICsyLDcgQEAKLSAvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCi0gLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLSAKLS0jaW5jbHVkZSAi
Z3B1L2NvbmZpZy9ncHVfaW5mby5oIgotKyNpbmNsdWRlICJncHVfaW5mby5oIgotIAotIG5hbWVz
cGFjZSB7Ci0gCi1AQCAtMTcsMzEgKzE3LDYgQEAgdm9pZCBFbnVtZXJhdGVHUFVEZXZpY2UoY29u
c3QgZ3B1OjpHUFVJbgotICAgZW51bWVyYXRvci0+RW5kR1BVRGV2aWNlKCk7Ci0gfQotIAotLXZv
aWQgRW51bWVyYXRlVmlkZW9EZWNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGUoCi0tICAg
IGNvbnN0IGdwdTo6VmlkZW9EZWNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGUmIHByb2Zp
bGUsCi0tICAgIGdwdTo6R1BVSW5mbzo6RW51bWVyYXRvciogZW51bWVyYXRvcikgewotLSAgZW51
bWVyYXRvci0+QmVnaW5WaWRlb0RlY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZSgpOwot
LSAgZW51bWVyYXRvci0+QWRkSW50KCJwcm9maWxlIiwgcHJvZmlsZS5wcm9maWxlKTsKLS0gIGVu
dW1lcmF0b3ItPkFkZEludCgibWF4UmVzb2x1dGlvbldpZHRoIiwgcHJvZmlsZS5tYXhfcmVzb2x1
dGlvbi53aWR0aCgpKTsKLS0gIGVudW1lcmF0b3ItPkFkZEludCgibWF4UmVzb2x1dGlvbkhlaWdo
dCIsIHByb2ZpbGUubWF4X3Jlc29sdXRpb24uaGVpZ2h0KCkpOwotLSAgZW51bWVyYXRvci0+QWRk
SW50KCJtaW5SZXNvbHV0aW9uV2lkdGgiLCBwcm9maWxlLm1pbl9yZXNvbHV0aW9uLndpZHRoKCkp
OwotLSAgZW51bWVyYXRvci0+QWRkSW50KCJtaW5SZXNvbHV0aW9uSGVpZ2h0IiwgcHJvZmlsZS5t
aW5fcmVzb2x1dGlvbi5oZWlnaHQoKSk7Ci0tICBlbnVtZXJhdG9yLT5FbmRWaWRlb0RlY29kZUFj
Y2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZSgpOwotLX0KLS0KLS12b2lkIEVudW1lcmF0ZVZpZGVv
RW5jb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxlKAotLSAgICBjb25zdCBncHU6OlZpZGVv
RW5jb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxlJiBwcm9maWxlLAotLSAgICBncHU6OkdQ
VUluZm86OkVudW1lcmF0b3IqIGVudW1lcmF0b3IpIHsKLS0gIGVudW1lcmF0b3ItPkJlZ2luVmlk
ZW9FbmNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGUoKTsKLS0gIGVudW1lcmF0b3ItPkFk
ZEludCgicHJvZmlsZSIsIHByb2ZpbGUucHJvZmlsZSk7Ci0tICBlbnVtZXJhdG9yLT5BZGRJbnQo
Im1heFJlc29sdXRpb25XaWR0aCIsIHByb2ZpbGUubWF4X3Jlc29sdXRpb24ud2lkdGgoKSk7Ci0t
ICBlbnVtZXJhdG9yLT5BZGRJbnQoIm1heFJlc29sdXRpb25IZWlnaHQiLCBwcm9maWxlLm1heF9y
ZXNvbHV0aW9uLmhlaWdodCgpKTsKLS0gIGVudW1lcmF0b3ItPkFkZEludCgibWF4RnJhbWVyYXRl
TnVtZXJhdG9yIiwgcHJvZmlsZS5tYXhfZnJhbWVyYXRlX251bWVyYXRvcik7Ci0tICBlbnVtZXJh
dG9yLT5BZGRJbnQoIm1heEZyYW1lcmF0ZURlbm9taW5hdG9yIiwKLS0gICAgICAgICAgICAgICAg
ICAgICBwcm9maWxlLm1heF9mcmFtZXJhdGVfZGVub21pbmF0b3IpOwotLSAgZW51bWVyYXRvci0+
RW5kVmlkZW9FbmNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGUoKTsKLS19Ci0tCi0gfSAg
Ly8gbmFtZXNwYWNlCi0gCi0gbmFtZXNwYWNlIGdwdSB7Ci1AQCAtNjgsOSArNDMsNiBAQCBHUFVJ
bmZvOjpHUFVJbmZvKCkKLSAgICAgICBpbl9wcm9jZXNzX2dwdSh0cnVlKSwKLSAgICAgICBiYXNp
Y19pbmZvX3N0YXRlKGtDb2xsZWN0SW5mb05vbmUpLAotICAgICAgIGNvbnRleHRfaW5mb19zdGF0
ZShrQ29sbGVjdEluZm9Ob25lKSwKLS0jaWYgZGVmaW5lZChPU19XSU4pCi0tICAgICAgZHhfZGlh
Z25vc3RpY3NfaW5mb19zdGF0ZShrQ29sbGVjdEluZm9Ob25lKSwKLS0jZW5kaWYKLSAgICAgICBq
cGVnX2RlY29kZV9hY2NlbGVyYXRvcl9zdXBwb3J0ZWQoZmFsc2UpIHsKLSB9Ci0gCi1AQCAtNzgs
MTEgKzUwLDkgQEAgR1BVSW5mbzo6fkdQVUluZm8oKSB7IH0KLSAKLSB2b2lkIEdQVUluZm86OkVu
dW1lcmF0ZUZpZWxkcyhFbnVtZXJhdG9yKiBlbnVtZXJhdG9yKSBjb25zdCB7Ci0gICBzdHJ1Y3Qg
R1BVSW5mb0tub3duRmllbGRzIHsKLS0gICAgYmFzZTo6VGltZURlbHRhIGluaXRpYWxpemF0aW9u
X3RpbWU7Ci0gICAgIGJvb2wgb3B0aW11czsKLSAgICAgYm9vbCBhbWRfc3dpdGNoYWJsZTsKLSAg
ICAgYm9vbCBsZW5vdm9fZGN1dGU7Ci0tICAgIFZlcnNpb24gZGlzcGxheV9saW5rX3ZlcnNpb247
Ci0gICAgIEdQVURldmljZSBncHU7Ci0gICAgIHN0ZDo6dmVjdG9yPEdQVURldmljZT4gc2Vjb25k
YXJ5X2dwdXM7Ci0gICAgIHVpbnQ2NCBhZGFwdGVyX2x1aWQ7Ci1AQCAtMTEwLDE0ICs4MCw2IEBA
IHZvaWQgR1BVSW5mbzo6RW51bWVyYXRlRmllbGRzKEVudW1lcmF0b3IKLSAgICAgYm9vbCBpbl9w
cm9jZXNzX2dwdTsKLSAgICAgQ29sbGVjdEluZm9SZXN1bHQgYmFzaWNfaW5mb19zdGF0ZTsKLSAg
ICAgQ29sbGVjdEluZm9SZXN1bHQgY29udGV4dF9pbmZvX3N0YXRlOwotLSNpZiBkZWZpbmVkKE9T
X1dJTikKLS0gICAgQ29sbGVjdEluZm9SZXN1bHQgZHhfZGlhZ25vc3RpY3NfaW5mb19zdGF0ZTsK
LS0gICAgRHhEaWFnTm9kZSBkeF9kaWFnbm9zdGljczsKLS0jZW5kaWYKLS0gICAgVmlkZW9EZWNv
ZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGVzCi0tICAgICAgICB2aWRlb19kZWNvZGVfYWNj
ZWxlcmF0b3Jfc3VwcG9ydGVkX3Byb2ZpbGVzOwotLSAgICBWaWRlb0VuY29kZUFjY2VsZXJhdG9y
U3VwcG9ydGVkUHJvZmlsZXMKLS0gICAgICAgIHZpZGVvX2VuY29kZV9hY2NlbGVyYXRvcl9zdXBw
b3J0ZWRfcHJvZmlsZXM7Ci0gICAgIGJvb2wganBlZ19kZWNvZGVfYWNjZWxlcmF0b3Jfc3VwcG9y
dGVkOwotICAgfTsKLSAKLUBAIC0xMzYsMTUgKzk4LDkgQEAgdm9pZCBHUFVJbmZvOjpFbnVtZXJh
dGVGaWVsZHMoRW51bWVyYXRvcgotICAgICBFbnVtZXJhdGVHUFVEZXZpY2Uoc2Vjb25kYXJ5X2dw
dSwgZW51bWVyYXRvcik7Ci0gCi0gICBlbnVtZXJhdG9yLT5CZWdpbkF1eEF0dHJpYnV0ZXMoKTsK
LS0gIGVudW1lcmF0b3ItPkFkZFRpbWVEZWx0YUluU2Vjb25kc0YoImluaXRpYWxpemF0aW9uVGlt
ZSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemF0aW9u
X3RpbWUpOwotICAgZW51bWVyYXRvci0+QWRkQm9vbCgib3B0aW11cyIsIG9wdGltdXMpOwotICAg
ZW51bWVyYXRvci0+QWRkQm9vbCgiYW1kU3dpdGNoYWJsZSIsIGFtZF9zd2l0Y2hhYmxlKTsKLSAg
IGVudW1lcmF0b3ItPkFkZEJvb2woImxlbm92b0RjdXRlIiwgbGVub3ZvX2RjdXRlKTsKLS0gIGlm
IChkaXNwbGF5X2xpbmtfdmVyc2lvbi5Jc1ZhbGlkKCkpIHsKLS0gICAgZW51bWVyYXRvci0+QWRk
U3RyaW5nKCJkaXNwbGF5TGlua1ZlcnNpb24iLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGlzcGxheV9saW5rX3ZlcnNpb24uR2V0U3RyaW5nKCkpOwotLSAgfQotICAgZW51bWVyYXRvci0+
QWRkSW50NjQoImFkYXB0ZXJMdWlkIiwgYWRhcHRlcl9sdWlkKTsKLSAgIGVudW1lcmF0b3ItPkFk
ZFN0cmluZygiZHJpdmVyVmVuZG9yIiwgZHJpdmVyX3ZlbmRvcik7Ci0gICBlbnVtZXJhdG9yLT5B
ZGRTdHJpbmcoImRyaXZlclZlcnNpb24iLCBkcml2ZXJfdmVyc2lvbik7Ci1AQCAtMTcxLDE0ICsx
MjcsNyBAQCB2b2lkIEdQVUluZm86OkVudW1lcmF0ZUZpZWxkcyhFbnVtZXJhdG9yCi0gICBlbnVt
ZXJhdG9yLT5BZGRCb29sKCJpblByb2Nlc3NHcHUiLCBpbl9wcm9jZXNzX2dwdSk7Ci0gICBlbnVt
ZXJhdG9yLT5BZGRJbnQoImJhc2ljSW5mb1N0YXRlIiwgYmFzaWNfaW5mb19zdGF0ZSk7Ci0gICBl
bnVtZXJhdG9yLT5BZGRJbnQoImNvbnRleHRJbmZvU3RhdGUiLCBjb250ZXh0X2luZm9fc3RhdGUp
OwotLSNpZiBkZWZpbmVkKE9TX1dJTikKLS0gIGVudW1lcmF0b3ItPkFkZEludCgiRHhEaWFnbm9z
dGljc0luZm9TdGF0ZSIsIGR4X2RpYWdub3N0aWNzX2luZm9fc3RhdGUpOwotLSNlbmRpZgotICAg
Ly8gVE9ETyhrYnIpOiBhZGQgZHhfZGlhZ25vc3RpY3Mgb24gV2luZG93cy4KLS0gIGZvciAoY29u
c3QgYXV0byYgcHJvZmlsZSA6IHZpZGVvX2RlY29kZV9hY2NlbGVyYXRvcl9zdXBwb3J0ZWRfcHJv
ZmlsZXMpCi0tICAgIEVudW1lcmF0ZVZpZGVvRGVjb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9m
aWxlKHByb2ZpbGUsIGVudW1lcmF0b3IpOwotLSAgZm9yIChjb25zdCBhdXRvJiBwcm9maWxlIDog
dmlkZW9fZW5jb2RlX2FjY2VsZXJhdG9yX3N1cHBvcnRlZF9wcm9maWxlcykKLS0gICAgRW51bWVy
YXRlVmlkZW9FbmNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGUocHJvZmlsZSwgZW51bWVy
YXRvcik7Ci0gICBlbnVtZXJhdG9yLT5BZGRCb29sKCJqcGVnRGVjb2RlQWNjZWxlcmF0b3JTdXBw
b3J0ZWQiLAotICAgICAgIGpwZWdfZGVjb2RlX2FjY2VsZXJhdG9yX3N1cHBvcnRlZCk7Ci0gICBl
bnVtZXJhdG9yLT5FbmRBdXhBdHRyaWJ1dGVzKCk7Ci1kaWZmIC1ydXBOIGdwdV90ZXN0X2V4cGVj
dGF0aW9uc19yZXZlcnRlZC9ncHVfaW5mby5oIGdwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfaW5m
by5oCi0tLS0gZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVydGVkL2dwdV9pbmZvLmgJMjAxNi0w
OC0xMiAyMToyMzo1NC44ODQxMzI0MDUgLTA0MDAKLSsrKyBncHVfdGVzdF9leHBlY3RhdGlvbnMv
Z3B1X2luZm8uaAkyMDE1LTExLTMwIDIxOjU0OjMwLjIzOTI2NzYzNSAtMDUwMAotQEAgLTExLDEz
ICsxMSw3IEBACi0gI2luY2x1ZGUgPHN0cmluZz4KLSAjaW5jbHVkZSA8dmVjdG9yPgotIAotLSNp
bmNsdWRlICJiYXNlL2Jhc2ljdHlwZXMuaCIKLS0jaW5jbHVkZSAiYmFzZS90aW1lL3RpbWUuaCIK
LS0jaW5jbHVkZSAiYmFzZS92ZXJzaW9uLmgiCi0tI2luY2x1ZGUgImJ1aWxkL2J1aWxkX2NvbmZp
Zy5oIgotLSNpbmNsdWRlICJncHUvY29uZmlnL2R4X2RpYWdfbm9kZS5oIgotLSNpbmNsdWRlICJn
cHUvZ3B1X2V4cG9ydC5oIgotLSNpbmNsdWRlICJ1aS9nZngvZ2VvbWV0cnkvc2l6ZS5oIgotKyNp
bmNsdWRlICJhbmdsZV9jb25maWcuaCIKLSAKLSBuYW1lc3BhY2UgZ3B1IHsKLSAKLUBAIC01NCwy
NSArNDgsNiBAQCBlbnVtIFZpZGVvQ29kZWNQcm9maWxlIHsKLSAgIFZJREVPX0NPREVDX1BST0ZJ
TEVfTUFYID0gVlA5UFJPRklMRV9BTlksCi0gfTsKLSAKLS0vLyBTcGVjaWZpY2F0aW9uIG9mIGEg
ZGVjb2RpbmcgcHJvZmlsZSBzdXBwb3J0ZWQgYnkgYSBoYXJkd2FyZSBkZWNvZGVyLgotLXN0cnVj
dCBHUFVfRVhQT1JUIFZpZGVvRGVjb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxlIHsKLS0g
IFZpZGVvQ29kZWNQcm9maWxlIHByb2ZpbGU7Ci0tICBnZng6OlNpemUgbWF4X3Jlc29sdXRpb247
Ci0tICBnZng6OlNpemUgbWluX3Jlc29sdXRpb247Ci0tfTsKLS11c2luZyBWaWRlb0RlY29kZUFj
Y2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZXMgPQotLSAgICBzdGQ6OnZlY3RvcjxWaWRlb0RlY29k
ZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZT47Ci0tCi0tLy8gU3BlY2lmaWNhdGlvbiBvZiBh
biBlbmNvZGluZyBwcm9maWxlIHN1cHBvcnRlZCBieSBhIGhhcmR3YXJlIGVuY29kZXIuCi0tc3Ry
dWN0IEdQVV9FWFBPUlQgVmlkZW9FbmNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGUgewot
LSAgVmlkZW9Db2RlY1Byb2ZpbGUgcHJvZmlsZTsKLS0gIGdmeDo6U2l6ZSBtYXhfcmVzb2x1dGlv
bjsKLS0gIHVpbnQzMiBtYXhfZnJhbWVyYXRlX251bWVyYXRvcjsKLS0gIHVpbnQzMiBtYXhfZnJh
bWVyYXRlX2Rlbm9taW5hdG9yOwotLX07Ci0tdXNpbmcgVmlkZW9FbmNvZGVBY2NlbGVyYXRvclN1
cHBvcnRlZFByb2ZpbGVzID0KLS0gICAgc3RkOjp2ZWN0b3I8VmlkZW9FbmNvZGVBY2NlbGVyYXRv
clN1cHBvcnRlZFByb2ZpbGU+OwotLQotIHN0cnVjdCBHUFVfRVhQT1JUIEdQVUluZm8gewotICAg
c3RydWN0IEdQVV9FWFBPUlQgR1BVRGV2aWNlIHsKLSAgICAgR1BVRGV2aWNlKCk7Ci1AQCAtMTA0
LDEwICs3OSw2IEBAIHN0cnVjdCBHUFVfRVhQT1JUIEdQVUluZm8gewotICAgICByZXR1cm4gIWNh
bl9sb3NlX2NvbnRleHQgJiYgIXNvZnR3YXJlX3JlbmRlcmluZzsKLSAgIH0KLSAKLS0gIC8vIFRo
ZSBhbW91bnQgb2YgdGltZSB0YWtlbiB0byBnZXQgZnJvbSB0aGUgcHJvY2VzcyBzdGFydGluZyB0
byB0aGUgbWVzc2FnZQotLSAgLy8gbG9vcCBiZWluZyBwdW1wZWQuCi0tICBiYXNlOjpUaW1lRGVs
dGEgaW5pdGlhbGl6YXRpb25fdGltZTsKLS0KLSAgIC8vIENvbXB1dGVyIGhhcyBOVklESUEgT3B0
aW11cwotICAgYm9vbCBvcHRpbXVzOwotIAotQEAgLTExNywxMCArODgsNiBAQCBzdHJ1Y3QgR1BV
X0VYUE9SVCBHUFVJbmZvIHsKLSAgIC8vIExlbm92byBkQ3V0ZSBpcyBpbnN0YWxsZWQuIGh0dHA6
Ly9jcmJ1Zy5jb20vMTgxNjY1LgotICAgYm9vbCBsZW5vdm9fZGN1dGU7Ci0gCi0tICAvLyBWZXJz
aW9uIG9mIERpc3BsYXlMaW5rIGRyaXZlciBpbnN0YWxsZWQuIFplcm8gaWYgbm90IGluc3RhbGxl
ZC4KLS0gIC8vIGh0dHA6Ly9jcmJ1Zy5jb20vMTc3NjExLgotLSAgVmVyc2lvbiBkaXNwbGF5X2xp
bmtfdmVyc2lvbjsKLS0KLSAgIC8vIFByaW1hcnkgR1BVLCBmb3IgZXhtYXBsZSwgdGhlIGRpc2Ny
ZXRlIEdQVSBpbiBhIGR1YWwgR1BVIG1hY2hpbmUuCi0gICBHUFVEZXZpY2UgZ3B1OwotIAotQEAg
LTIxMywxNyArMTgwLDcgQEAgc3RydWN0IEdQVV9FWFBPUlQgR1BVSW5mbyB7Ci0gICAvLyBpZiB0
aGUgY29sbGVjdGlvbiBmYWlscyBvciBub3QuCi0gICBDb2xsZWN0SW5mb1Jlc3VsdCBiYXNpY19p
bmZvX3N0YXRlOwotICAgQ29sbGVjdEluZm9SZXN1bHQgY29udGV4dF9pbmZvX3N0YXRlOwotLSNp
ZiBkZWZpbmVkKE9TX1dJTikKLS0gIENvbGxlY3RJbmZvUmVzdWx0IGR4X2RpYWdub3N0aWNzX2lu
Zm9fc3RhdGU7Ci0gCi0tICAvLyBUaGUgaW5mb3JtYXRpb24gcmV0dXJuZWQgYnkgdGhlIERpcmVj
dFggRGlhZ25vc3RpY3MgVG9vbC4KLS0gIER4RGlhZ05vZGUgZHhfZGlhZ25vc3RpY3M7Ci0tI2Vu
ZGlmCi0tCi0tICBWaWRlb0RlY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZXMKLS0gICAg
ICB2aWRlb19kZWNvZGVfYWNjZWxlcmF0b3Jfc3VwcG9ydGVkX3Byb2ZpbGVzOwotLSAgVmlkZW9F
bmNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGVzCi0tICAgICAgdmlkZW9fZW5jb2RlX2Fj
Y2VsZXJhdG9yX3N1cHBvcnRlZF9wcm9maWxlczsKLSAgIGJvb2wganBlZ19kZWNvZGVfYWNjZWxl
cmF0b3Jfc3VwcG9ydGVkOwotIAotICAgLy8gTm90ZTogd2hlbiBhZGRpbmcgbmV3IG1lbWJlcnMs
IHBsZWFzZSByZW1lbWJlciB0byB1cGRhdGUgRW51bWVyYXRlRmllbGRzCi1AQCAtMjQzLDggKzIw
MCw2IEBAIHN0cnVjdCBHUFVfRVhQT1JUIEdQVUluZm8gewotICAgICB2aXJ0dWFsIHZvaWQgQWRk
SW50KGNvbnN0IGNoYXIqIG5hbWUsIGludCB2YWx1ZSkgPSAwOwotICAgICB2aXJ0dWFsIHZvaWQg
QWRkU3RyaW5nKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSkgPSAw
OwotICAgICB2aXJ0dWFsIHZvaWQgQWRkQm9vbChjb25zdCBjaGFyKiBuYW1lLCBib29sIHZhbHVl
KSA9IDA7Ci0tICAgIHZpcnR1YWwgdm9pZCBBZGRUaW1lRGVsdGFJblNlY29uZHNGKGNvbnN0IGNo
YXIqIG5hbWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGJhc2U6OlRpbWVEZWx0YSYgdmFsdWUpID0gMDsKLSAKLSAgICAgLy8gTWFya2VycyBpbmRpY2F0
aW5nIHRoYXQgYSBHUFVEZXZpY2UgaXMgYmVpbmcgZGVzY3JpYmVkLgotICAgICB2aXJ0dWFsIHZv
aWQgQmVnaW5HUFVEZXZpY2UoKSA9IDA7Ci1kaWZmIC1ydXBOIGdwdV90ZXN0X2V4cGVjdGF0aW9u
c19yZXZlcnRlZC9ncHVfdGVzdF9jb25maWcuY2MgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90
ZXN0X2NvbmZpZy5jYwotLS0tIGdwdV90ZXN0X2V4cGVjdGF0aW9uc19yZXZlcnRlZC9ncHVfdGVz
dF9jb25maWcuY2MJMjAxNi0wOC0xMiAyMToyMzo1NC44ODQxMzI0MDUgLTA0MDAKLSsrKyBncHVf
dGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnLmNjCTIwMTYtMDktMDkgMTY6NDA6MDUu
NTk3ODY0NDY1IC0wNDAwCi1AQCAtMiwyMCArMiwyMDUgQEAKLSAvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0g
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLSAKLS0jaW5jbHVkZSAiZ3B1L2NvbmZpZy9n
cHVfdGVzdF9jb25maWcuaCIKLSsjaW5jbHVkZSAiZ3B1X3Rlc3RfY29uZmlnLmgiCi0gCi0tI2lu
Y2x1ZGUgImJhc2UvbG9nZ2luZy5oIgotLSNpbmNsdWRlICJiYXNlL3N5c19pbmZvLmgiCi0tI2lu
Y2x1ZGUgImdwdS9jb25maWcvZ3B1X2luZm8uaCIKLS0jaW5jbHVkZSAiZ3B1L2NvbmZpZy9ncHVf
aW5mb19jb2xsZWN0b3IuaCIKLS0jaW5jbHVkZSAiZ3B1L2NvbmZpZy9ncHVfdGVzdF9leHBlY3Rh
dGlvbnNfcGFyc2VyLmgiCi0rI2luY2x1ZGUgImdwdV9pbmZvLmgiCi0rI2luY2x1ZGUgImdwdV90
ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIuaCIKLSsKLSsjaWYgZGVmaW5lZChPU19MSU5VWCkKLStl
eHRlcm4gIkMiIHsKLSsjICAgaW5jbHVkZSA8cGNpL3BjaS5oPgotK30KLSsjZW5kaWYKLSAKLSAj
aWYgZGVmaW5lZChPU19NQUNPU1gpCi0tI2luY2x1ZGUgImJhc2UvbWFjL21hY191dGlsLmgiCi0t
I2VsaWYgZGVmaW5lZChPU19XSU4pCi0tI2luY2x1ZGUgImJhc2Uvd2luL3dpbmRvd3NfdmVyc2lv
bi5oIgotKyNpbmNsdWRlICJncHVfdGVzdF9jb25maWdfbWFjLmgiCi0rI2VuZGlmCi0rCi0rdXNp
bmcgbmFtZXNwYWNlIGdwdTsKLSsKLSsjaWYgZGVmaW5lZChPU19XSU4pCi0rCi0rbmFtZXNwYWNl
IGJhc2UgewotKwotK25hbWVzcGFjZSB7Ci0rCi0rLy8gRGlzYWJsZSB0aGUgZGVwcmVjYXRlZCBm
dW5jdGlvbiB3YXJuaW5nIGZvciBHZXRWZXJzaW9uRXgKLSsjcHJhZ21hIHdhcm5pbmcoZGlzYWJs
ZTogNDk5NikKLSsKLStjbGFzcyBTeXNJbmZvCi0rewotKyAgcHVibGljOgotKyAgICBzdGF0aWMg
dm9pZCBPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uTnVtYmVycygKLSsgICAgICAgIGludDMyICptYWpv
cl92ZXJzaW9uLCBpbnQzMiAqbWlub3JfdmVyc2lvbiwgaW50MzIgKmJ1Z2ZpeF92ZXJzaW9uKTsK
LSt9OwotKwotKy8vIHN0YXRpYwotK3ZvaWQgU3lzSW5mbzo6T3BlcmF0aW5nU3lzdGVtVmVyc2lv
bk51bWJlcnMoCi0rICAgIGludDMyICptYWpvcl92ZXJzaW9uLCBpbnQzMiAqbWlub3JfdmVyc2lv
biwgaW50MzIgKmJ1Z2ZpeF92ZXJzaW9uKQotK3sKLSsgIE9TVkVSU0lPTklORk9FWCB2ZXJzaW9u
X2luZm8gPSB7IHNpemVvZiB2ZXJzaW9uX2luZm8gfTsKLSsgIDo6R2V0VmVyc2lvbkV4KHJlaW50
ZXJwcmV0X2Nhc3Q8T1NWRVJTSU9OSU5GTyo+KCZ2ZXJzaW9uX2luZm8pKTsKLSsgICptYWpvcl92
ZXJzaW9uID0gdmVyc2lvbl9pbmZvLmR3TWFqb3JWZXJzaW9uOwotKyAgKm1pbm9yX3ZlcnNpb24g
PSB2ZXJzaW9uX2luZm8uZHdNaW5vclZlcnNpb247Ci0rICAqYnVnZml4X3ZlcnNpb24gPSB2ZXJz
aW9uX2luZm8uZHdCdWlsZE51bWJlcjsKLSt9Ci0rCi0rfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNl
Ci0rCi0rfSAvLyBuYW1lc3BhY2UgYmFzZQotKwotK3ZvaWQgRGV2aWNlSURUb1ZlbmRvckFuZERl
dmljZShjb25zdCBzdGQ6OnN0cmluZyYgaWQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVpbnQzMiogdmVuZG9yX2lkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MzIqIGRldmljZV9pZCkgewotKyAgKnZlbmRvcl9pZCA9IDA7Ci0rICAqZGV2aWNlX2lkID0g
MDsKLSsgIGlmIChpZC5sZW5ndGgoKSA8IDIxKQotKyAgICByZXR1cm47Ci0rICBzdGQ6OnN0cmlu
ZyB2ZW5kb3JfaWRfc3RyaW5nID0gaWQuc3Vic3RyKDgsIDQpOwotKyAgc3RkOjpzdHJpbmcgZGV2
aWNlX2lkX3N0cmluZyA9IGlkLnN1YnN0cigxNywgNCk7Ci0rICBiYXNlOjpIZXhTdHJpbmdUb1VJ
bnQodmVuZG9yX2lkX3N0cmluZywgdmVuZG9yX2lkKTsKLSsgIGJhc2U6OkhleFN0cmluZ1RvVUlu
dChkZXZpY2VfaWRfc3RyaW5nLCBkZXZpY2VfaWQpOwotK30KLSsKLStDb2xsZWN0SW5mb1Jlc3Vs
dCBDb2xsZWN0R3B1SUQodWludDMyKiB2ZW5kb3JfaWQsIHVpbnQzMiogZGV2aWNlX2lkKSB7Ci0r
ICBEQ0hFQ0sodmVuZG9yX2lkICYmIGRldmljZV9pZCk7Ci0rICAqdmVuZG9yX2lkID0gMDsKLSsg
ICpkZXZpY2VfaWQgPSAwOwotKwotKyAgLy8gVGFrZW4gZnJvbSBodHRwOi8vZGV2ZWxvcGVyLm52
aWRpYS5jb20vb2JqZWN0L2RldmljZV9pZHMuaHRtbAotKyAgRElTUExBWV9ERVZJQ0VBIGRkOwot
KyAgZGQuY2IgPSBzaXplb2YoRElTUExBWV9ERVZJQ0VBKTsKLSsgIHN0ZDo6c3RyaW5nIGlkOwot
KyAgZm9yIChpbnQgaSA9IDA7IEVudW1EaXNwbGF5RGV2aWNlc0EoTlVMTCwgaSwgJmRkLCAwKTsg
KytpKSB7Ci0rICAgIGlmIChkZC5TdGF0ZUZsYWdzICYgRElTUExBWV9ERVZJQ0VfUFJJTUFSWV9E
RVZJQ0UpIHsKLSsgICAgICBpZCA9IGRkLkRldmljZUlEOwotKyAgICAgIGJyZWFrOwotKyAgICB9
Ci0rICB9Ci0rCi0rICBpZiAoaWQubGVuZ3RoKCkgPiAyMCkgewotKyAgICBEZXZpY2VJRFRvVmVu
ZG9yQW5kRGV2aWNlKGlkLCB2ZW5kb3JfaWQsIGRldmljZV9pZCk7Ci0rICAgIGlmICgqdmVuZG9y
X2lkICE9IDAgJiYgKmRldmljZV9pZCAhPSAwKQotKyAgICAgIHJldHVybiBrQ29sbGVjdEluZm9T
dWNjZXNzOwotKyAgfQotKyAgcmV0dXJuIGtDb2xsZWN0SW5mb05vbkZhdGFsRmFpbHVyZTsKLSt9
Ci0rCi0rI2VuZGlmIC8vIGRlZmluZWQoT1NfV0lOKQotKwotKyNpZiBkZWZpbmVkKE9TX0xJTlVY
KQotKwotK2NvbnN0IHVpbnQzMiBrVmVuZG9ySURJbnRlbCA9IDB4ODA4NjsKLStjb25zdCB1aW50
MzIga1ZlbmRvcklETlZpZGlhID0gMHgxMGRlOwotK2NvbnN0IHVpbnQzMiBrVmVuZG9ySURBTUQg
PSAweDEwMDI7Ci0rCi0rQ29sbGVjdEluZm9SZXN1bHQgQ29sbGVjdFBDSVZpZGVvQ2FyZEluZm8o
R1BVSW5mbyogZ3B1X2luZm8pIHsKLSsgIERDSEVDSyhncHVfaW5mbyk7Ci0rCi0rICBzdHJ1Y3Qg
cGNpX2FjY2VzcyogYWNjZXNzID0gcGNpX2FsbG9jKCk7Ci0rICBEQ0hFQ0soYWNjZXNzICE9IE5V
TEwpOwotKyAgcGNpX2luaXQoYWNjZXNzKTsKLSsgIHBjaV9zY2FuX2J1cyhhY2Nlc3MpOwotKwot
KyAgYm9vbCBwcmltYXJ5X2dwdV9pZGVudGlmaWVkID0gZmFsc2U7Ci0rICBmb3IgKHBjaV9kZXYq
IGRldmljZSA9IGFjY2Vzcy0+ZGV2aWNlczsKLSsgICAgICAgZGV2aWNlICE9IE5VTEw7IGRldmlj
ZSA9IGRldmljZS0+bmV4dCkgewotKyAgICBwY2lfZmlsbF9pbmZvKGRldmljZSwgMzMpOwotKyAg
ICBib29sIGlzX2dwdSA9IGZhbHNlOwotKyAgICBzd2l0Y2ggKGRldmljZS0+ZGV2aWNlX2NsYXNz
KSB7Ci0rICAgICAgY2FzZSBQQ0lfQ0xBU1NfRElTUExBWV9WR0E6Ci0rICAgICAgY2FzZSBQQ0lf
Q0xBU1NfRElTUExBWV9YR0E6Ci0rICAgICAgY2FzZSBQQ0lfQ0xBU1NfRElTUExBWV8zRDoKLSsg
ICAgICAgIGlzX2dwdSA9IHRydWU7Ci0rICAgICAgICBicmVhazsKLSsgICAgICBjYXNlIFBDSV9D
TEFTU19ESVNQTEFZX09USEVSOgotKyAgICAgIGRlZmF1bHQ6Ci0rICAgICAgICBicmVhazsKLSsg
ICAgfQotKyAgICBpZiAoIWlzX2dwdSkKLSsgICAgICBjb250aW51ZTsKLSsgICAgaWYgKGRldmlj
ZS0+dmVuZG9yX2lkID09IDAgfHwgZGV2aWNlLT5kZXZpY2VfaWQgPT0gMCkKLSsgICAgICBjb250
aW51ZTsKLSsKLSsgICAgR1BVSW5mbzo6R1BVRGV2aWNlIGdwdTsKLSsgICAgZ3B1LnZlbmRvcl9p
ZCA9IGRldmljZS0+dmVuZG9yX2lkOwotKyAgICBncHUuZGV2aWNlX2lkID0gZGV2aWNlLT5kZXZp
Y2VfaWQ7Ci0rCi0rICAgIGlmICghcHJpbWFyeV9ncHVfaWRlbnRpZmllZCkgewotKyAgICAgIHBy
aW1hcnlfZ3B1X2lkZW50aWZpZWQgPSB0cnVlOwotKyAgICAgIGdwdV9pbmZvLT5ncHUgPSBncHU7
Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgLy8gVE9ETyh6bW8pOiBpZiB0aGVyZSBhcmUgbXVsdGlw
bGUgR1BVcywgd2UgYXNzdW1lIHRoZSBub24gSW50ZWwKLSsgICAgICAvLyBvbmUgaXMgcHJpbWFy
eS4gUmV2aXNpdCB0aGlzIGxvZ2ljIGJlY2F1c2Ugd2UgYWN0dWFsbHkgZG9uJ3Qga25vdwotKyAg
ICAgIC8vIHdoaWNoIEdQVSB3ZSBhcmUgdXNpbmcgYXQgdGhpcyBwb2ludC4KLSsgICAgICBpZiAo
Z3B1X2luZm8tPmdwdS52ZW5kb3JfaWQgPT0ga1ZlbmRvcklESW50ZWwgJiYKLSsgICAgICAgICAg
Z3B1LnZlbmRvcl9pZCAhPSBrVmVuZG9ySURJbnRlbCkgewotKyAgICAgICAgZ3B1X2luZm8tPnNl
Y29uZGFyeV9ncHVzLnB1c2hfYmFjayhncHVfaW5mby0+Z3B1KTsKLSsgICAgICAgIGdwdV9pbmZv
LT5ncHUgPSBncHU7Ci0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIGdwdV9pbmZvLT5zZWNvbmRh
cnlfZ3B1cy5wdXNoX2JhY2soZ3B1KTsKLSsgICAgICB9Ci0rICAgIH0KLSsgIH0KLSsKLSsgIC8v
IERldGVjdCBPcHRpbXVzIG9yIEFNRCBTd2l0Y2hhYmxlIEdQVS4KLSsgIGlmIChncHVfaW5mby0+
c2Vjb25kYXJ5X2dwdXMuc2l6ZSgpID09IDEgJiYKLSsgICAgICBncHVfaW5mby0+c2Vjb25kYXJ5
X2dwdXNbMF0udmVuZG9yX2lkID09IGtWZW5kb3JJREludGVsKSB7Ci0rICAgIGlmIChncHVfaW5m
by0+Z3B1LnZlbmRvcl9pZCA9PSBrVmVuZG9ySUROVmlkaWEpCi0rICAgICAgZ3B1X2luZm8tPm9w
dGltdXMgPSB0cnVlOwotKyAgICBpZiAoZ3B1X2luZm8tPmdwdS52ZW5kb3JfaWQgPT0ga1ZlbmRv
cklEQU1EKQotKyAgICAgIGdwdV9pbmZvLT5hbWRfc3dpdGNoYWJsZSA9IHRydWU7Ci0rICB9Ci0r
Ci0rICBwY2lfY2xlYW51cChhY2Nlc3MpOwotKyAgaWYgKCFwcmltYXJ5X2dwdV9pZGVudGlmaWVk
KQotKyAgICByZXR1cm4ga0NvbGxlY3RJbmZvTm9uRmF0YWxGYWlsdXJlOwotKyAgcmV0dXJuIGtD
b2xsZWN0SW5mb1N1Y2Nlc3M7Ci0rfQotKwotK0NvbGxlY3RJbmZvUmVzdWx0IENvbGxlY3RHcHVJ
RCh1aW50MzIqIHZlbmRvcl9pZCwgdWludDMyKiBkZXZpY2VfaWQpIHsKLSsgIERDSEVDSyh2ZW5k
b3JfaWQgJiYgZGV2aWNlX2lkKTsKLSsgICp2ZW5kb3JfaWQgPSAwOwotKyAgKmRldmljZV9pZCA9
IDA7Ci0rCi0rICBHUFVJbmZvIGdwdV9pbmZvOwotKyAgQ29sbGVjdEluZm9SZXN1bHQgcmVzdWx0
ID0gQ29sbGVjdFBDSVZpZGVvQ2FyZEluZm8oJmdwdV9pbmZvKTsKLSsgIGlmIChyZXN1bHQgPT0g
a0NvbGxlY3RJbmZvU3VjY2VzcykgewotKyAgICAqdmVuZG9yX2lkID0gZ3B1X2luZm8uZ3B1LnZl
bmRvcl9pZDsKLSsgICAgKmRldmljZV9pZCA9IGdwdV9pbmZvLmdwdS5kZXZpY2VfaWQ7Ci0rICB9
Ci0rICByZXR1cm4gcmVzdWx0OwotK30KLSsKLSsjZW5kaWYgLy8gZGVmaW5lZChPU19MSU5VWCkK
LSsKLSsjaWYgZGVmaW5lZChPU19NQUNPU1gpCi0rCi0rQ29sbGVjdEluZm9SZXN1bHQgQ29sbGVj
dEdwdUlEKHVpbnQzMiogdmVuZG9yX2lkLCB1aW50MzIqIGRldmljZV9pZCkgewotKyAgRENIRUNL
KHZlbmRvcl9pZCAmJiBkZXZpY2VfaWQpOwotKwotKyAgR1BVSW5mbzo6R1BVRGV2aWNlIGdwdSA9
IEdldEFjdGl2ZUdQVSgpOwotKyAgKnZlbmRvcl9pZCA9IGdwdS52ZW5kb3JfaWQ7Ci0rICAqZGV2
aWNlX2lkID0gZ3B1LmRldmljZV9pZDsKLSsKLSsgIGlmICgqdmVuZG9yX2lkICE9IDAgJiYgKmRl
dmljZV9pZCAhPSAwKQotKyAgICByZXR1cm4ga0NvbGxlY3RJbmZvU3VjY2VzczsKLSsgIHJldHVy
biBrQ29sbGVjdEluZm9Ob25GYXRhbEZhaWx1cmU7Ci0rfQotKwotICNlbmRpZgotIAotKyNpZiBk
ZWZpbmVkKE9TX0FORFJPSUQpCi0rQ29sbGVjdEluZm9SZXN1bHQgQ29sbGVjdEdwdUlEKHVpbnQz
MiAqdmVuZG9yX2lkLCB1aW50MzIgKmRldmljZV9pZCkKLSt7Ci0rICAgIERDSEVDSyh2ZW5kb3Jf
aWQgJiYgZGV2aWNlX2lkKTsKLSsgICAgKnZlbmRvcl9pZCA9IDA7Ci0rICAgICpkZXZpY2VfaWQg
PSAwOwotKyAgICByZXR1cm4ga0NvbGxlY3RJbmZvTm9uRmF0YWxGYWlsdXJlOwotK30KLSsjZW5k
aWYgIC8vIGRlZmluZWQoT1NfQU5EUk9JRCkKLSsKLSBuYW1lc3BhY2UgZ3B1IHsKLSAKLSBuYW1l
c3BhY2UgewotQEAgLTI0NSwzMyArNDMwLDQxIEBAIGJvb2wgR1BVVGVzdEJvdENvbmZpZzo6TWF0
Y2hlcyhjb25zdCBzdGQKLSAgIHJldHVybiBNYXRjaGVzKGNvbmZpZyk7Ci0gfQotIAotLWJvb2wg
R1BVVGVzdEJvdENvbmZpZzo6TG9hZEN1cnJlbnRDb25maWcoY29uc3QgR1BVSW5mbyogZ3B1X2lu
Zm8pIHsKLS0gIGJvb2wgcnQ7Ci0tICBpZiAoZ3B1X2luZm8gPT0gTlVMTCkgewotLSAgICBHUFVJ
bmZvIG15X2dwdV9pbmZvOwotLSAgICBDb2xsZWN0SW5mb1Jlc3VsdCByZXN1bHQgPSBDb2xsZWN0
R3B1SUQoCi0tICAgICAgICAmbXlfZ3B1X2luZm8uZ3B1LnZlbmRvcl9pZCwgJm15X2dwdV9pbmZv
LmdwdS5kZXZpY2VfaWQpOwotLSAgICBpZiAocmVzdWx0ICE9IGtDb2xsZWN0SW5mb1N1Y2Nlc3Mp
IHsKLS0gICAgICBMT0coRVJST1IpIDw8ICJGYWlsIHRvIGlkZW50aWZ5IEdQVSI7Ci0tICAgICAg
RGlzYWJsZUdQVUluZm9WYWxpZGF0aW9uKCk7Ci0tICAgICAgcnQgPSB0cnVlOwotLSAgICB9IGVs
c2UgewotLSAgICAgIHJ0ID0gU2V0R1BVSW5mbyhteV9ncHVfaW5mbyk7Ci0rYm9vbCBHUFVUZXN0
Qm90Q29uZmlnOjpMb2FkQ3VycmVudENvbmZpZyhjb25zdCBHUFVJbmZvICpncHVfaW5mbykKLSt7
Ci0rICAgIGJvb2wgcnQ7Ci0rICAgIGlmIChncHVfaW5mbyA9PSBOVUxMKQotKyAgICB7Ci0rICAg
ICAgICBHUFVJbmZvIG15X2dwdV9pbmZvOwotKyAgICAgICAgQ29sbGVjdEluZm9SZXN1bHQgcmVz
dWx0ID0KLSsgICAgICAgICAgICBDb2xsZWN0R3B1SUQoJm15X2dwdV9pbmZvLmdwdS52ZW5kb3Jf
aWQsICZteV9ncHVfaW5mby5ncHUuZGV2aWNlX2lkKTsKLSsgICAgICAgIGlmIChyZXN1bHQgIT0g
a0NvbGxlY3RJbmZvU3VjY2VzcykKLSsgICAgICAgIHsKLSsgICAgICAgICAgICBMT0coRVJST1Ip
IDw8ICJGYWlsIHRvIGlkZW50aWZ5IEdQVVxuIjsKLSsgICAgICAgICAgICBEaXNhYmxlR1BVSW5m
b1ZhbGlkYXRpb24oKTsKLSsgICAgICAgICAgICBydCA9IHRydWU7Ci0rICAgICAgICB9Ci0rICAg
ICAgICBlbHNlCi0rICAgICAgICB7Ci0rICAgICAgICAgICAgcnQgPSBTZXRHUFVJbmZvKG15X2dw
dV9pbmZvKTsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgICBlbHNlCi0rICAgIHsKLSsgICAgICAg
IHJ0ID0gU2V0R1BVSW5mbygqZ3B1X2luZm8pOwotKyAgICB9Ci0rICAgIHNldF9vcyhHZXRDdXJy
ZW50T1MoKSk7Ci0rICAgIGlmIChvcygpID09IGtPc1Vua25vd24pCi0rICAgIHsKLSsgICAgICAg
IExPRyhFUlJPUikgPDwgIlVua25vd24gT1NcbiI7Ci0rICAgICAgICBydCA9IGZhbHNlOwotICAg
ICB9Ci0tICB9IGVsc2UgewotLSAgICBydCA9IFNldEdQVUluZm8oKmdwdV9pbmZvKTsKLS0gIH0K
LS0gIHNldF9vcyhHZXRDdXJyZW50T1MoKSk7Ci0tICBpZiAob3MoKSA9PSBrT3NVbmtub3duKSB7
Ci0tICAgIExPRyhFUlJPUikgPDwgIlVua25vd24gT1MiOwotLSAgICBydCA9IGZhbHNlOwotLSAg
fQotICNpZiBkZWZpbmVkKE5ERUJVRykKLS0gIHNldF9idWlsZF90eXBlKGtCdWlsZFR5cGVSZWxl
YXNlKTsKLSsgICAgc2V0X2J1aWxkX3R5cGUoa0J1aWxkVHlwZVJlbGVhc2UpOwotICNlbHNlCi0t
ICBzZXRfYnVpbGRfdHlwZShrQnVpbGRUeXBlRGVidWcpOwotKyAgICBzZXRfYnVpbGRfdHlwZShr
QnVpbGRUeXBlRGVidWcpOwotICNlbmRpZgotLSAgcmV0dXJuIHJ0OwotKyAgICByZXR1cm4gcnQ7
Ci0gfQotIAotIC8vIHN0YXRpYwotQEAgLTI5NSwyMSArNDg4LDUgQEAgYm9vbCBHUFVUZXN0Qm90
Q29uZmlnOjpDdXJyZW50Q29uZmlnTWF0YwotICAgcmV0dXJuIGZhbHNlOwotIH0KLSAKLS0vLyBz
dGF0aWMKLS1ib29sIEdQVVRlc3RCb3RDb25maWc6OkdwdUJsYWNrbGlzdGVkT25Cb3QoKSB7Ci0t
I2lmIGRlZmluZWQoT1NfTUFDT1NYKQotLSAgLy8gQmxhY2tsaXN0IHJ1bGUgIzgxIGRpc2FibGVz
IGFsbCBHcHUgYWNjZWxlcmF0aW9uIG9uIE1hYyA8IDEwLjggYm90cy4KLS0gIGlmIChDdXJyZW50
Q29uZmlnTWF0Y2hlcygiTUFDIFZNV0FSRSIpICYmIGJhc2U6Om1hYzo6SXNPU0xpb25PckVhcmxp
ZXIoKSkgewotLSAgICByZXR1cm4gdHJ1ZTsKLS0gIH0KLS0jZWxpZiBkZWZpbmVkKE9TX1dJTikK
LS0gIC8vIEJsYWNrbGlzdCBydWxlICM3OSBkaXNhYmxlcyBhbGwgR3B1IGFjY2VsZXJhdGlvbiBi
ZWZvcmUgV2luZG93cyA3LgotLSAgaWYgKGJhc2U6Ondpbjo6R2V0VmVyc2lvbigpIDw9IGJhc2U6
Ondpbjo6VkVSU0lPTl9WSVNUQSkgewotLSAgICByZXR1cm4gdHJ1ZTsKLS0gIH0KLS0jZW5kaWYK
LS0gIHJldHVybiBmYWxzZTsKLS19Ci0tCi0gfSAgLy8gbmFtZXNwYWNlIGdwdQotIAotZGlmZiAt
cnVwTiBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQvZ3B1X3Rlc3RfY29uZmlnLmggZ3B1
X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2NvbmZpZy5oCi0tLS0gZ3B1X3Rlc3RfZXhwZWN0
YXRpb25zX3JldmVydGVkL2dwdV90ZXN0X2NvbmZpZy5oCTIwMTYtMDgtMTIgMjE6MjM6NTQuODg0
MTMyNDA1IC0wNDAwCi0rKysgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2NvbmZpZy5o
CTIwMTUtMTEtMzAgMjE6NTQ6MzAuMjM5MjY3NjM1IC0wNTAwCi1AQCAtOCw5ICs4LDcgQEAKLSAj
aW5jbHVkZSA8c3RyaW5nPgotICNpbmNsdWRlIDx2ZWN0b3I+Ci0gCi0tI2luY2x1ZGUgImJhc2Uv
YmFzaWN0eXBlcy5oIgotLSNpbmNsdWRlICJiYXNlL2NvbXBpbGVyX3NwZWNpZmljLmgiCi0tI2lu
Y2x1ZGUgImdwdS9ncHVfZXhwb3J0LmgiCi0rI2luY2x1ZGUgImFuZ2xlX2NvbmZpZy5oIgotIAot
IG5hbWVzcGFjZSBncHUgewotIAotQEAgLTEzNCw5ICsxMzIsNiBAQCBjbGFzcyBHUFVfRVhQT1JU
IEdQVVRlc3RCb3RDb25maWcgOiBwdWJsCi0gICAvLyBDaGVjayBpZiB0aGlzIGJvdCdzIGNvbmZp
ZyBtYXRjaGVzIHxjb25maWdfZGF0YXwgb3IgYW55IG9mIHRoZSB8Y29uZmlnc3wuCi0gICBzdGF0
aWMgYm9vbCBDdXJyZW50Q29uZmlnTWF0Y2hlcyhjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnX2Rh
dGEpOwotICAgc3RhdGljIGJvb2wgQ3VycmVudENvbmZpZ01hdGNoZXMoY29uc3Qgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+JiBjb25maWdzKTsKLS0KLS0gIC8vIENoZWNrIGlmIHRoZSBib3QgaGFz
IGJsYWNrbGlzdGVkIGFsbCBHUFUgZmVhdHVyZXMuCi0tICBzdGF0aWMgYm9vbCBHcHVCbGFja2xp
c3RlZE9uQm90KCk7Ci0gfTsKLSAKLSB9ICAvLyBuYW1lc3BhY2UgZ3B1Ci1kaWZmIC1ydXBOIGdw
dV90ZXN0X2V4cGVjdGF0aW9uc19yZXZlcnRlZC9ncHVfdGVzdF9jb25maWdfbWFjLmggZ3B1X3Rl
c3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2NvbmZpZ19tYWMuaAotLS0tIGdwdV90ZXN0X2V4cGVj
dGF0aW9uc19yZXZlcnRlZC9ncHVfdGVzdF9jb25maWdfbWFjLmgJMTk2OS0xMi0zMSAxOTowMDow
MC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29u
ZmlnX21hYy5oCTIwMTUtMTEtMzAgMjE6NTQ6MzAuMjM5MjY3NjM1IC0wNTAwCi1AQCAtMCwwICsx
LDI4IEBACi0rLy8KLSsvLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSsvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgotKy8vCi0rLy8gZ3B1X3Rlc3RfY29uZmlnX21hYy5oOgotKy8vICAg
SGVscGVyIGZ1bmN0aW9ucyBmb3IgZ3B1X3Rlc3RfY29uZmlnIHRoYXQgaGF2ZSB0byBiZSBjb21w
aWxlZCBpbiBPYmplY3RpdmVDKysKLSsvLwotKwotKyNpZm5kZWYgR1BVX1RFU1RfRVhQRUNUQVRJ
T05TX0dQVV9URVNUX0NPTkZJR19NQUNfSF8KLSsjZGVmaW5lIEdQVV9URVNUX0VYUEVDVEFUSU9O
U19HUFVfVEVTVF9DT05GSUdfTUFDX0hfCi0rCi0rI2luY2x1ZGUgImdwdV9pbmZvLmgiCi0rCi0r
bmFtZXNwYWNlIGJhc2UgewotKwotK2NsYXNzIFN5c0luZm8KLSt7Ci0rICBwdWJsaWM6Ci0rICAg
IHN0YXRpYyB2b2lkIE9wZXJhdGluZ1N5c3RlbVZlcnNpb25OdW1iZXJzKAotKyAgICAgICAgaW50
MzIgKm1ham9yX3ZlcnNpb24sIGludDMyICptaW5vcl92ZXJzaW9uLCBpbnQzMiAqYnVnZml4X3Zl
cnNpb24pOwotK307Ci0rCi0rfSAvLyBuYW1lc3BhY2UgYmFzZQotKwotK2dwdTo6R1BVSW5mbzo6
R1BVRGV2aWNlIEdldEFjdGl2ZUdQVSgpOwotKwotKyNlbmRpZiAvLyBHUFVfVEVTVF9FWFBFQ1RB
VElPTlNfR1BVX1RFU1RfQ09ORklHX01BQ19IXwotZGlmZiAtcnVwTiBncHVfdGVzdF9leHBlY3Rh
dGlvbnNfcmV2ZXJ0ZWQvZ3B1X3Rlc3RfY29uZmlnX21hYy5tbSBncHVfdGVzdF9leHBlY3RhdGlv
bnMvZ3B1X3Rlc3RfY29uZmlnX21hYy5tbQotLS0tIGdwdV90ZXN0X2V4cGVjdGF0aW9uc19yZXZl
cnRlZC9ncHVfdGVzdF9jb25maWdfbWFjLm1tCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAw
IC0wNTAwCi0rKysgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2NvbmZpZ19tYWMubW0J
MjAxNS0xMS0zMCAyMTo1NDozMC4yMzkyNjc2MzUgLTA1MDAKLUBAIC0wLDAgKzEsNjcgQEAKLSsv
LyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0rLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
Ci0rCi0rLy8gZ3B1X3Rlc3RfY29uZmlnX21hYy5tbToKLSsvLyAgIEhlbHBlciBmdW5jdGlvbnMg
Zm9yIGdwdV90ZXN0X2NvbmZpZyB0aGF0IGhhdmUgdG8gYmUgY29tcGlsZWQgaW4gT2JqZWN0aXZl
QysrCi0rCi0rI2luY2x1ZGUgImdwdV90ZXN0X2NvbmZpZ19tYWMuaCIKLSsKLSsjaW1wb3J0IDxD
b2NvYS9Db2NvYS5oPgotKwotK25hbWVzcGFjZSBiYXNlIHsKLSsKLSt2b2lkIFN5c0luZm86Ok9w
ZXJhdGluZ1N5c3RlbVZlcnNpb25OdW1iZXJzKAotKyAgICBpbnQzMiAqbWFqb3JfdmVyc2lvbiwg
aW50MzIgKm1pbm9yX3ZlcnNpb24sIGludDMyICpidWdmaXhfdmVyc2lvbikKLSt7Ci0rI2lmIE1B
Q19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEIDwgTUFDX09TX1hfVkVSU0lPTl8xMF84Ci0rICBH
ZXN0YWx0KGdlc3RhbHRTeXN0ZW1WZXJzaW9uTWFqb3IsIHJlaW50ZXJwcmV0X2Nhc3Q8U0ludDMy
Kj4obWFqb3JfdmVyc2lvbikpOwotKyAgR2VzdGFsdChnZXN0YWx0U3lzdGVtVmVyc2lvbk1pbm9y
LCByZWludGVycHJldF9jYXN0PFNJbnQzMio+KG1pbm9yX3ZlcnNpb24pKTsKLSsgIEdlc3RhbHQo
Z2VzdGFsdFN5c3RlbVZlcnNpb25CdWdGaXgsIHJlaW50ZXJwcmV0X2Nhc3Q8U0ludDMyKj4oYnVn
Zml4X3ZlcnNpb24pKTsKLSsjZWxzZQotKyAgTlNPcGVyYXRpbmdTeXN0ZW1WZXJzaW9uIHZlcnNp
b24gPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIG9wZXJhdGluZ1N5c3RlbVZlcnNpb25d
OwotKyAgKm1ham9yX3ZlcnNpb24gPSB2ZXJzaW9uLm1ham9yVmVyc2lvbjsKLSsgICptaW5vcl92
ZXJzaW9uID0gdmVyc2lvbi5taW5vclZlcnNpb247Ci0rICAqYnVnZml4X3ZlcnNpb24gPSB2ZXJz
aW9uLnBhdGNoVmVyc2lvbjsKLSsjZW5kaWYKLSt9Ci0rCi0rfSAvLyBuYW1lc3BhY2UgYmFzZQot
KwotK1VJbnQzMiBHZXRFbnRyeVByb3BlcnR5KGlvX3JlZ2lzdHJ5X2VudHJ5X3QgZW50cnksIENG
U3RyaW5nUmVmIHByb3BlcnR5X25hbWUpIHsKLSsgIENGVHlwZVJlZiB0eXBlID0gSU9SZWdpc3Ry
eUVudHJ5U2VhcmNoQ0ZQcm9wZXJ0eShlbnRyeSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBrSU9TZXJ2aWNlUGxhbmUsCi0rICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlfbmFtZSwKLSsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGtJT1JlZ2lzdHJ5SXRlcmF0ZVJlY3Vyc2l2ZWx5IHwga0lPUmVnaXN0cnlJdGVy
YXRlUGFyZW50cyk7Ci0rICBDRkRhdGFSZWYgZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZEYXRh
UmVmPih0eXBlKTsKLSsgIGlmICghZGF0YSkgewotKyAgICBDRlJlbGVhc2UoZGF0YSk7Ci0rICAg
IHJldHVybiAwOwotKyAgfQotKwotKyAgVUludDMyIHZhbHVlID0gMDsKLSsgIGNvbnN0IHVpbnQz
Ml90KiB2YWx1ZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oQ0ZE
YXRhR2V0Qnl0ZVB0cihkYXRhKSk7Ci0rICBpZiAodmFsdWVQb2ludGVyICE9IE5VTEwpIHsKLSsg
ICAgdmFsdWUgPSAqdmFsdWVQb2ludGVyOwotKyAgfQotKyAgQ0ZSZWxlYXNlKGRhdGEpOwotKyAg
cmV0dXJuIHZhbHVlOwotK30KLSsKLStncHU6OkdQVUluZm86OkdQVURldmljZSBHZXRBY3RpdmVH
UFUoKSB7Ci0rICBncHU6OkdQVUluZm86OkdQVURldmljZSBncHU7Ci0rCi0rICAvLyBJZ25vcmUg
dGhlIGZhY3QgdGhhdCBDR0Rpc3BsYXlJT1NlcnZpY2VQb3J0IGlzIGRlcHJlY2F0ZWQgYXMgQXBw
bGUKLSsgIC8vIGRpZCBub3QgcHJvdmlkZSBhIGdvb2QgcmVwbGFjZW1lbnQgZm9yIGl0IGFzIG9m
IDEwLjEwLgotKyAgLy8gVE9ETyhjd2FsbGV6KSByZXZpc2l0IHdpdGggbGF0ZXIgc3lzdGVtcwot
KyAgI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSsgICNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotKyAgICBpb19yZWdpc3Ry
eV9lbnRyeV90IGRzcF9wb3J0ID0gQ0dEaXNwbGF5SU9TZXJ2aWNlUG9ydChrQ0dEaXJlY3RNYWlu
RGlzcGxheSk7Ci0rICAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0rCi0rICBncHUudmVu
ZG9yX2lkID0gR2V0RW50cnlQcm9wZXJ0eShkc3BfcG9ydCwgQ0ZTVFIoInZlbmRvci1pZCIpKTsK
LSsgIGdwdS5kZXZpY2VfaWQgPSBHZXRFbnRyeVByb3BlcnR5KGRzcF9wb3J0LCBDRlNUUigiZGV2
aWNlLWlkIikpOwotKyAgcmV0dXJuIGdwdTsKLSt9Ci0rCi1kaWZmIC1ydXBOIGdwdV90ZXN0X2V4
cGVjdGF0aW9uc19yZXZlcnRlZC9ncHVfdGVzdF9leHBlY3RhdGlvbnNfcGFyc2VyLmNjIGdwdV90
ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9leHBlY3RhdGlvbnNfcGFyc2VyLmNjCi0tLS0gZ3B1
X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVydGVkL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIu
Y2MJMjAxNi0wOC0xMiAyMToyMzo1NC44ODQxMzI0MDUgLTA0MDAKLSsrKyBncHVfdGVzdF9leHBl
Y3RhdGlvbnMvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNlci5jYwkyMDE1LTExLTMwIDIxOjU0
OjMwLjIzOTI2NzYzNSAtMDUwMAotQEAgLTIsMTQgKzIsNDMgQEAKLSAvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci0gLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLSAKLS0jaW5jbHVkZSAiZ3B1L2NvbmZp
Zy9ncHVfdGVzdF9leHBlY3RhdGlvbnNfcGFyc2VyLmgiCi0rI2luY2x1ZGUgImdwdV90ZXN0X2V4
cGVjdGF0aW9uc19wYXJzZXIuaCIKLSAKLS0jaW5jbHVkZSAiYmFzZS9maWxlcy9maWxlX3V0aWwu
aCIKLS0jaW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgiCi0tI2luY2x1ZGUgImJhc2Uvc3RyaW5ncy9z
dHJpbmdfbnVtYmVyX2NvbnZlcnNpb25zLmgiCi0tI2luY2x1ZGUgImJhc2Uvc3RyaW5ncy9zdHJp
bmdfc3BsaXQuaCIKLS0jaW5jbHVkZSAiYmFzZS9zdHJpbmdzL3N0cmluZ191dGlsLmgiCi0tI2lu
Y2x1ZGUgImJhc2Uvc3RyaW5ncy9zdHJpbmdwcmludGYuaCIKLSsjaW5jbHVkZSAiY29tbW9uL2Fu
Z2xldXRpbHMuaCIKLSsKLStuYW1lc3BhY2UgYmFzZSB7Ci0rCi0rbmFtZXNwYWNlIHsKLSsKLSti
b29sIFN0YXJ0c1dpdGhBU0NJSShjb25zdCBzdGQ6OnN0cmluZyYgc3RyLAotKyAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBzZWFyY2gsCi0rICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBjYXNlX3NlbnNpdGl2ZSkgewotKyAgQVNTRVJUKCFjYXNlX3NlbnNpdGl2ZSk7Ci0r
ICByZXR1cm4gc3RyLmNvbXBhcmUoMCwgc2VhcmNoLmxlbmd0aCgpLCBzZWFyY2gpID09IDA7Ci0r
fQotKwotK3RlbXBsYXRlIDxjbGFzcyBDaGFyPiBpbmxpbmUgQ2hhciBUb0xvd2VyQVNDSUkoQ2hh
ciBjKSB7Ci0rICByZXR1cm4gKGMgPj0gJ0EnICYmIGMgPD0gJ1onKSA/IChjICsgKCdhJyAtICdB
JykpIDogYzsKLSt9Ci0rCi0rdGVtcGxhdGU8dHlwZW5hbWUgSXRlcj4KLStzdGF0aWMgaW5saW5l
IGJvb2wgRG9Mb3dlckNhc2VFcXVhbHNBU0NJSShJdGVyIGFfYmVnaW4sCi0rICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlciBhX2VuZCwKLSsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBiKSB7Ci0rICBmb3IgKEl0
ZXIgaXQgPSBhX2JlZ2luOyBpdCAhPSBhX2VuZDsgKytpdCwgKytiKSB7Ci0rICAgIGlmICghKmIg
fHwgYmFzZTo6VG9Mb3dlckFTQ0lJKCppdCkgIT0gKmIpCi0rICAgICAgcmV0dXJuIGZhbHNlOwot
KyAgfQotKyAgcmV0dXJuICpiID09IDA7Ci0rfQotKwotK2Jvb2wgTG93ZXJDYXNlRXF1YWxzQVND
SUkoY29uc3Qgc3RkOjpzdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsKLSsgIHJldHVybiBEb0xv
d2VyQ2FzZUVxdWFsc0FTQ0lJKGEuYmVnaW4oKSwgYS5lbmQoKSwgYik7Ci0rfQotKwotK30gLy8g
YW5vbnltb3VzIG5hbWVzcGFjZQotKwotK30gLy8gbmFtZXNwYWNlIGJhc2UKLSAKLSBuYW1lc3Bh
Y2UgZ3B1IHsKLSAKLUBAIC0xNDYsOSArMTc1LDkgQEAgY29uc3QgY2hhcioga0Vycm9yTWVzc2Fn
ZVtdID0gewotIH07Ci0gCi0gVG9rZW4gUGFyc2VUb2tlbihjb25zdCBzdGQ6OnN0cmluZyYgd29y
ZCkgewotLSAgaWYgKGJhc2U6OlN0YXJ0c1dpdGgod29yZCwgIi8vIiwgYmFzZTo6Q29tcGFyZUNh
c2U6OklOU0VOU0lUSVZFX0FTQ0lJKSkKLSsgIGlmIChiYXNlOjpTdGFydHNXaXRoQVNDSUkod29y
ZCwgIi8vIiwgZmFsc2UpKQotICAgICByZXR1cm4ga1Rva2VuQ29tbWVudDsKLS0gIGlmIChiYXNl
OjpTdGFydHNXaXRoKHdvcmQsICIweCIsIGJhc2U6OkNvbXBhcmVDYXNlOjpJTlNFTlNJVElWRV9B
U0NJSSkpCi0rICBpZiAoYmFzZTo6U3RhcnRzV2l0aEFTQ0lJKHdvcmQsICIweCIsIGZhbHNlKSkK
LSAgICAgcmV0dXJuIGtDb25maWdHUFVEZXZpY2VJRDsKLSAKLSAgIGZvciAoaW50MzIgaSA9IDA7
IGkgPCBrTnVtYmVyT2ZFeGFjdE1hdGNoVG9rZW5zOyArK2kpIHsKLUBAIC0xNzYsMTAgKzIwNSwx
MCBAQCBib29sIE5hbWVzTWF0Y2hpbmcoY29uc3Qgc3RkOjpzdHJpbmcmIHJlCi0gCi0gR1BVVGVz
dEV4cGVjdGF0aW9uc1BhcnNlcjo6R1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcigpIHsKLSAgIC8v
IFNvbWUgc2FuaXR5IGNoZWNrLgotLSAgRENIRUNLX0VRKHN0YXRpY19jYXN0PHVuc2lnbmVkIGlu
dD4oa051bWJlck9mRXhhY3RNYXRjaFRva2VucyksCi0tICAgICAgICAgICAgc2l6ZW9mKGtUb2tl
bkRhdGEpIC8gc2l6ZW9mKGtUb2tlbkRhdGFbMF0pKTsKLS0gIERDSEVDS19FUShzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KGtOdW1iZXJPZkVycm9ycyksCi0tICAgICAgICAgICAgc2l6ZW9mKGtF
cnJvck1lc3NhZ2UpIC8gc2l6ZW9mKGtFcnJvck1lc3NhZ2VbMF0pKTsKLSsgIHN0YXRpY19hc3Nl
cnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihrTnVtYmVyT2ZFeGFjdE1hdGNoVG9rZW5zKSA9
PQotKyAgICAgICAgICAgICAgICBzaXplb2Yoa1Rva2VuRGF0YSkgLyBzaXplb2Yoa1Rva2VuRGF0
YVswXSksICJzYW5pdHkgY2hlY2siKTsKLSsgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50PihrTnVtYmVyT2ZFcnJvcnMpID09Ci0rICAgICAgICAgICAgICAgIHNpemVvZihr
RXJyb3JNZXNzYWdlKSAvIHNpemVvZihrRXJyb3JNZXNzYWdlWzBdKSwgInNhbml0eSBjaGVjayIp
OwotIH0KLSAKLSBHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjp+R1BVVGVzdEV4cGVjdGF0aW9u
c1BhcnNlcigpIHsKLUBAIC0yMDQsOCArMjMzLDggQEAgYm9vbCBHUFVUZXN0RXhwZWN0YXRpb25z
UGFyc2VyOjpMb2FkVGVzdAotICAgcmV0dXJuIHJ0OwotIH0KLSAKLS1ib29sIEdQVVRlc3RFeHBl
Y3RhdGlvbnNQYXJzZXI6OkxvYWRUZXN0RXhwZWN0YXRpb25zKAotLSAgICBjb25zdCBiYXNlOjpG
aWxlUGF0aCYgcGF0aCkgewotK2Jvb2wgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6TG9hZFRl
c3RFeHBlY3RhdGlvbnNGcm9tRmlsZSgKLSsgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgpIHsK
LSAgIGVudHJpZXNfLmNsZWFyKCk7Ci0gICBlcnJvcl9tZXNzYWdlc18uY2xlYXIoKTsKLSAKLUBA
IC0zOTksNyArNDI4LDcgQEAgYm9vbCBHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjpQYXJzZUxp
bgotICAgICAgICAgICBzdGFnZSsrOwotICAgICAgICAgYnJlYWs7Ci0gICAgICAgZGVmYXVsdDoK
LS0gICAgICAgIERDSEVDSyhmYWxzZSk7Ci0rICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAg
ICAgYnJlYWs7Ci0gICAgIH0KLSAgIH0KLUBAIC00ODgsNyArNTE3LDcgQEAgYm9vbCBHUFVUZXN0
RXhwZWN0YXRpb25zUGFyc2VyOjpVcGRhdGVUZQotICAgICAgIGNvbmZpZy0+c2V0X2FwaShjb25m
aWctPmFwaSgpIHwga1Rva2VuRGF0YVt0b2tlbl0uZmxhZyk7Ci0gICAgICAgYnJlYWs7Ci0gICAg
IGRlZmF1bHQ6Ci0tICAgICAgRENIRUNLKGZhbHNlKTsKLSsgICAgICBVTlJFQUNIQUJMRSgpOwot
ICAgICAgIGJyZWFrOwotICAgfQotICAgcmV0dXJuIHRydWU7Ci1kaWZmIC1ydXBOIGdwdV90ZXN0
X2V4cGVjdGF0aW9uc19yZXZlcnRlZC9ncHVfdGVzdF9leHBlY3RhdGlvbnNfcGFyc2VyLmggZ3B1
X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIuaAotLS0tIGdw
dV90ZXN0X2V4cGVjdGF0aW9uc19yZXZlcnRlZC9ncHVfdGVzdF9leHBlY3RhdGlvbnNfcGFyc2Vy
LmgJMjAxNi0wOC0xMiAyMToyMzo1NC44ODQxMzI0MDUgLTA0MDAKLSsrKyBncHVfdGVzdF9leHBl
Y3RhdGlvbnMvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNlci5oCTIwMTUtMTEtMzAgMjE6NTQ6
MzAuMjM5MjY3NjM1IC0wNTAwCi1AQCAtOCwxMCArOCw4IEBACi0gI2luY2x1ZGUgPHN0cmluZz4K
LSAjaW5jbHVkZSA8dmVjdG9yPgotIAotLSNpbmNsdWRlICJiYXNlL2Jhc2ljdHlwZXMuaCIKLS0j
aW5jbHVkZSAiYmFzZS9maWxlcy9maWxlX3BhdGguaCIKLS0jaW5jbHVkZSAiZ3B1L2NvbmZpZy9n
cHVfdGVzdF9jb25maWcuaCIKLS0jaW5jbHVkZSAiZ3B1L2dwdV9leHBvcnQuaCIKLSsjaW5jbHVk
ZSAiYW5nbGVfY29uZmlnLmgiCi0rI2luY2x1ZGUgImdwdV90ZXN0X2NvbmZpZy5oIgotIAotIG5h
bWVzcGFjZSBncHUgewotIAotQEAgLTMyLDcgKzMwLDcgQEAgY2xhc3MgR1BVX0VYUE9SVCBHUFVU
ZXN0RXhwZWN0YXRpb25zUGFycwotICAgLy8gc2F2ZSBhbGwgdGhlIGVudHJpZXMuIE90aGVyd2lz
ZSwgZ2VuZXJhdGUgZXJyb3IgbWVzc2FnZXMuCi0gICAvLyBSZXR1cm4gdHJ1ZSBpZiBwYXJzaW5n
IHN1Y2NlZWRzLgotICAgYm9vbCBMb2FkVGVzdEV4cGVjdGF0aW9ucyhjb25zdCBzdGQ6OnN0cmlu
ZyYgZGF0YSk7Ci0tICBib29sIExvYWRUZXN0RXhwZWN0YXRpb25zKGNvbnN0IGJhc2U6OkZpbGVQ
YXRoJiBwYXRoKTsKLSsgIGJvb2wgTG9hZFRlc3RFeHBlY3RhdGlvbnNGcm9tRmlsZShjb25zdCBz
dGQ6OnN0cmluZyYgcGF0aCk7Ci0gCi0gICAvLyBRdWVyeSBlcnJvciBtZXNzYWdlcyBmcm9tIHRo
ZSBsYXN0IExvYWRUZXN0RXhwZWN0YXRpb25zKCkgY2FsbC4KLSAgIGNvbnN0IHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPiYgR2V0RXJyb3JNZXNzYWdlcygpIGNvbnN0OwotZGlmZiAtcnVwTiBncHVf
dGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQvSG93VG9NYWtlQ2hhbmdlcy5tZCBncHVfdGVzdF9l
eHBlY3RhdGlvbnMvSG93VG9NYWtlQ2hhbmdlcy5tZAotLS0tIGdwdV90ZXN0X2V4cGVjdGF0aW9u
c19yZXZlcnRlZC9Ib3dUb01ha2VDaGFuZ2VzLm1kCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAw
MDAwIC0wNTAwCi0rKysgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL0hvd1RvTWFrZUNoYW5nZXMubWQJ
MjAxNi0wOS0wOSAxNjoyNzo1Ni41NzU4MDk5MjEgLTA0MDAKLUBAIC0wLDAgKzEsMjIgQEAKLStC
ZWNhdXNlIHRoZSBgYGBncHVfdGVzdF9leHBlY3RhdGlvbnNgYGAgZGlyZWN0b3J5IGlzIGJhc2Vk
IG9uIHBhcnRzIG9mIENocm9taXVtJ3MgYGBgZ3B1L2NvbmZpZ2BgYAotK2RpcmVjdG9yeSwgd2Ug
d2FudCB0byBrZWVwIGEgcGF0Y2ggb2YgdGhlIGNoYW5nZXMgYWRkZWQgdG8gbWFrZSBpdCBjb21w
aWxlIHdpdGggQU5HTEUuIFRoaXMKLSt3aWxsIGFsbG93IHVzIHRvIG1lcmdlIENocm9taXVtIGNo
YW5nZXMgZWFzaWx5IGluIG91ciBgYGBncHVfdGVzdF9leHBlY3RhdGlvbnNgYGAuCi0rCi0rSW4g
b3JkZXIgdG8gbWFrZSBhIGNoYW5nZSB0byB0aGlzIGRpcmVjdG9yeSwgZG8gdGhlIGZvbGxvd2lu
ZzoKLSsKLSsgKiBjb3B5IHRoZSBkaXJlY3Rvcnkgc29tZXdoZXJlIGxpa2UgaW4gYGBgZ3B1X3Rl
c3RfZXhwZWN0YXRpb25zX3JldmVydGVkYGBgCi0rICogaW4gYGBgZ3B1X3Rlc3RfZXhwZWN0YXRp
b25zX3JldmVydGVkYGBgIHJ1biBgYGBwYXRjaCAtcCAxIC1SIDwgYW5nbGUtbW9kcy5wYXRjaGBg
YAotKyAqIGRvIHlvdXIgY2hhbmdlcyBpbiBgYGBncHVfdGVzdF9leHBlY3RhdGlvbnNgYGAKLSsg
KiBkZWxldGUgYW5nbGUtbW9kcy5wYXRjaCBpbiBib3RoIGRpcmVjdG9yaWVzCi0rICogcnVuIGBg
YGRpZmYgLXJ1cE4gZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVydGVkIGdwdV90ZXN0X2V4cGVj
dGF0aW9ucyA+IGFuZ2xlLW1vZHMucGF0Y2hgYGAKLSsgKiBjb3B5IGBgYGFuZ2xlLW1vZHMucGF0
Y2hgYGAgaW4gYGBgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zYGBgCi0rCi0rSG93IHRvIHVwZGF0ZSBm
cm9tIENocm9taXVtOgotKwotKyAqIGBgYGdpdCBhcHBseSAtUiBhbmdsZS1tb2RzLnBhdGNoYGBg
LCBgYGBnaXQgYWRkIC4gLXVgYGAsIGBgYGdpdCBjb21taXRgYGAKLSsgKiBDb3B5IG92ZXIgQ2hy
b21pdW0gZmlsZXMsIGBgYGdpdCBhZGQgLiAtdWBgYCwgYGBgZ2l0IGNvbW1pdGBgYAotKyAqIGBg
YGdpdCByZXZlcnQgSEVBRH5gYGAKLSsgKiBgYGBybSBhbmdsZS1tb2RzLnBhdGNoYGBgCi0rICog
YGBgZ2l0IGRpZmYgSEVBRH4gKGApbHMoYCkgPiBhbmdsZS1tb2RzLnBhdGNoYGBgLGBgYGdpdCBh
ZGQgYW5nbGUtbW9kcy5wYXRjaGBgYCwgYGBgZ2l0IGNvbW1pdCAtLWFtZW5kYGBgCi0rICogYGBg
Z2l0IHJlYmFzZSAtaWBgYCB0byBzcXVhc2ggdGhlIHRocmVlIHBhdGNoZXMgaW50byBvbmUuCi0r
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFy
dHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2FuZ2xlX2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9hbmds
ZV9jb25maWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU0NmY5OGNjZDY4Yzc5
ZjQ4NDkyMWJiYTY5ZjAyZTE4NmM3MDU5Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRf
cGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2FuZ2xlX2NvbmZpZy5oCisrKyAvZGV2L251bGwK
QEAgLTEsNjYgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIGFuZ2xlX2NvbmZpZy5oOgotLy8gICBIZWxw
ZXJzIGZvciBpbXBvcnRpbmcgdGhlIGdwdSB0ZXN0IGV4cGVjdGF0aW9ucyBwYWNrYWdlIGZyb20g
Q2hyb21lLgotLy8KLQotI2lmbmRlZiBHUFVfVEVTVF9FWFBFQ1RBVElPTlNfQU5HTEVfQ09ORklH
X0hfCi0jZGVmaW5lIEdQVV9URVNUX0VYUEVDVEFUSU9OU19BTkdMRV9DT05GSUdfSF8KLQotI2lu
Y2x1ZGUgPHN0ZGludC5oPgotCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSNpbmNsdWRlICJjb21t
b24vZGVidWcuaCIKLSNpbmNsdWRlICJjb21tb24vc3RyaW5nX3V0aWxzLmgiCi0KLSNkZWZpbmUg
RENIRUNLX0VRKEEsQikgQVNTRVJUKChBKSA9PSAoQikpCi0jZGVmaW5lIERDSEVDS19ORShBLEIp
IEFTU0VSVCgoQSkgIT0gKEIpKQotI2RlZmluZSBEQ0hFQ0soWCkgQVNTRVJUKFgpCi0jZGVmaW5l
IExPRyhYKSBzdGQ6OmNlcnIKLQotI2RlZmluZSBHUFVfRVhQT1JUCi0KLXR5cGVkZWYgaW50MzJf
dCBpbnQzMjsKLXR5cGVkZWYgdWludDMyX3QgdWludDMyOwotdHlwZWRlZiBpbnQ2NF90IGludDY0
OwotdHlwZWRlZiB1aW50NjRfdCB1aW50NjQ7Ci0KLS8vIFNoaW0gQ2hyb21pdW0ncyBiYXNlIGJ5
IGltcG9ydGluZyBmdW5jdGlvbnMgaW4gdGhlIGJhc2UgbmFtZXNwYWNlLgotbmFtZXNwYWNlIGJh
c2UKLXsKLSAgICB1c2luZyBhbmdsZTo6a1doaXRlc3BhY2VBU0NJSTsKLSAgICB1c2luZyBhbmds
ZTo6VFJJTV9XSElURVNQQUNFOwotICAgIHVzaW5nIGFuZ2xlOjpLRUVQX1dISVRFU1BBQ0U7Ci0g
ICAgdXNpbmcgYW5nbGU6OlNQTElUX1dBTlRfQUxMOwotICAgIHVzaW5nIGFuZ2xlOjpTUExJVF9X
QU5UX05PTkVNUFRZOwotICAgIHVzaW5nIGFuZ2xlOjpTcGxpdFN0cmluZzsKLSAgICB1c2luZyBh
bmdsZTo6U3BsaXRTdHJpbmdBbG9uZ1doaXRlc3BhY2U7Ci0gICAgdXNpbmcgYW5nbGU6OkhleFN0
cmluZ1RvVUludDsKLSAgICB1c2luZyBhbmdsZTo6UmVhZEZpbGVUb1N0cmluZzsKLQotICAgIC8v
IFN0cmluZ1ByaW50ZiBpcyBjYWxsZWQgZGlmZmVyZW50bHkgaW4gQU5HTEUgYnV0IHVzaW5nIGNh
bm5vdCBjaGFuZ2UKLSAgICAvLyB0aGUgbmFtZSBvZiB0aGUgaW1wb3J0ZWQgZnVuY3Rpb24uIFVz
ZSBhIGRlZmluZSB0byBjaGFuZ2UgdGhlIG5hbWUuCi0gICAgdXNpbmcgOjpGb3JtYXRTdHJpbmc7
Ci0gICAgI2RlZmluZSBTdHJpbmdQcmludGYgRm9ybWF0U3RyaW5nCi19Ci0KLS8vIFRPRE8oam1h
ZGlsbCk6IG90aGVyIHBsYXRmb3JtcwotLy8gY2xhbmctZm9ybWF0IG9mZgotI2lmIGRlZmluZWQo
X1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42NCkKLSMgICAgZGVmaW5lIE9TX1dJTgotI2VsaWYgZGVm
aW5lZChBTkRST0lEKQotIyAgICBkZWZpbmUgT1NfQU5EUk9JRAotI2VsaWYgZGVmaW5lZChfX2xp
bnV4X18pCi0jICAgIGRlZmluZSBPU19MSU5VWAotI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCi0j
ICAgIGRlZmluZSBPU19NQUNPU1gKLSNlbHNlCi0jICAgIGVycm9yICJVbnN1cHBvcnRlZCBwbGF0
Zm9ybSIKLSNlbmRpZgotLy8gY2xhbmctZm9ybWF0IG9uCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4
cGVjdGF0aW9ucy9ncHVfaW5mby5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X2luZm8uY2MKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMjc5YTQyOTBjNDExYzc1NGE1ZmI5NWE1YmVmMmEzNGI3
YTA2NzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVj
dGF0aW9ucy9ncHVfaW5mby5jYworKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0vLyBD
b3B5cmlnaHQgKGMpIDIwMTIgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotCi0j
aW5jbHVkZSAiZ3B1X2luZm8uaCIKLQotbmFtZXNwYWNlIHsKLQotdm9pZCBFbnVtZXJhdGVHUFVE
ZXZpY2UoY29uc3QgZ3B1OjpHUFVJbmZvOjpHUFVEZXZpY2UmIGRldmljZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGdwdTo6R1BVSW5mbzo6RW51bWVyYXRvciogZW51bWVyYXRvcikgewotICBl
bnVtZXJhdG9yLT5CZWdpbkdQVURldmljZSgpOwotICBlbnVtZXJhdG9yLT5BZGRJbnQoInZlbmRv
cklkIiwgZGV2aWNlLnZlbmRvcl9pZCk7Ci0gIGVudW1lcmF0b3ItPkFkZEludCgiZGV2aWNlSWQi
LCBkZXZpY2UuZGV2aWNlX2lkKTsKLSAgZW51bWVyYXRvci0+QWRkQm9vbCgiYWN0aXZlIiwgZGV2
aWNlLmFjdGl2ZSk7Ci0gIGVudW1lcmF0b3ItPkFkZFN0cmluZygidmVuZG9yU3RyaW5nIiwgZGV2
aWNlLnZlbmRvcl9zdHJpbmcpOwotICBlbnVtZXJhdG9yLT5BZGRTdHJpbmcoImRldmljZVN0cmlu
ZyIsIGRldmljZS5kZXZpY2Vfc3RyaW5nKTsKLSAgZW51bWVyYXRvci0+RW5kR1BVRGV2aWNlKCk7
Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1uYW1lc3BhY2UgZ3B1IHsKLQotR1BVSW5mbzo6R1BV
RGV2aWNlOjpHUFVEZXZpY2UoKQotICAgIDogdmVuZG9yX2lkKDApLAotICAgICAgZGV2aWNlX2lk
KDApLAotICAgICAgYWN0aXZlKGZhbHNlKSB7Ci19Ci0KLUdQVUluZm86OkdQVURldmljZTo6fkdQ
VURldmljZSgpIHsgfQotCi1HUFVJbmZvOjpHUFVJbmZvKCkKLSAgICA6IG9wdGltdXMoZmFsc2Up
LAotICAgICAgYW1kX3N3aXRjaGFibGUoZmFsc2UpLAotICAgICAgbGVub3ZvX2RjdXRlKGZhbHNl
KSwKLSAgICAgIGFkYXB0ZXJfbHVpZCgwKSwKLSAgICAgIGdsX3Jlc2V0X25vdGlmaWNhdGlvbl9z
dHJhdGVneSgwKSwKLSAgICAgIGNhbl9sb3NlX2NvbnRleHQoZmFsc2UpLAotICAgICAgc29mdHdh
cmVfcmVuZGVyaW5nKGZhbHNlKSwKLSAgICAgIGRpcmVjdF9yZW5kZXJpbmcodHJ1ZSksCi0gICAg
ICBzYW5kYm94ZWQoZmFsc2UpLAotICAgICAgcHJvY2Vzc19jcmFzaF9jb3VudCgwKSwKLSAgICAg
IGluX3Byb2Nlc3NfZ3B1KHRydWUpLAotICAgICAgYmFzaWNfaW5mb19zdGF0ZShrQ29sbGVjdElu
Zm9Ob25lKSwKLSAgICAgIGNvbnRleHRfaW5mb19zdGF0ZShrQ29sbGVjdEluZm9Ob25lKSwKLSAg
ICAgIGpwZWdfZGVjb2RlX2FjY2VsZXJhdG9yX3N1cHBvcnRlZChmYWxzZSkgewotfQotCi1HUFVJ
bmZvOjp+R1BVSW5mbygpIHsgfQotCi12b2lkIEdQVUluZm86OkVudW1lcmF0ZUZpZWxkcyhFbnVt
ZXJhdG9yKiBlbnVtZXJhdG9yKSBjb25zdCB7Ci0gIHN0cnVjdCBHUFVJbmZvS25vd25GaWVsZHMg
ewotICAgIGJvb2wgb3B0aW11czsKLSAgICBib29sIGFtZF9zd2l0Y2hhYmxlOwotICAgIGJvb2wg
bGVub3ZvX2RjdXRlOwotICAgIEdQVURldmljZSBncHU7Ci0gICAgc3RkOjp2ZWN0b3I8R1BVRGV2
aWNlPiBzZWNvbmRhcnlfZ3B1czsKLSAgICB1aW50NjQgYWRhcHRlcl9sdWlkOwotICAgIHN0ZDo6
c3RyaW5nIGRyaXZlcl92ZW5kb3I7Ci0gICAgc3RkOjpzdHJpbmcgZHJpdmVyX3ZlcnNpb247Ci0g
ICAgc3RkOjpzdHJpbmcgZHJpdmVyX2RhdGU7Ci0gICAgc3RkOjpzdHJpbmcgcGl4ZWxfc2hhZGVy
X3ZlcnNpb247Ci0gICAgc3RkOjpzdHJpbmcgdmVydGV4X3NoYWRlcl92ZXJzaW9uOwotICAgIHN0
ZDo6c3RyaW5nIG1heF9tc2FhX3NhbXBsZXM7Ci0gICAgc3RkOjpzdHJpbmcgbWFjaGluZV9tb2Rl
bF9uYW1lOwotICAgIHN0ZDo6c3RyaW5nIG1hY2hpbmVfbW9kZWxfdmVyc2lvbjsKLSAgICBzdGQ6
OnN0cmluZyBnbF92ZXJzaW9uX3N0cmluZzsKLSAgICBzdGQ6OnN0cmluZyBnbF92ZW5kb3I7Ci0g
ICAgc3RkOjpzdHJpbmcgZ2xfcmVuZGVyZXI7Ci0gICAgc3RkOjpzdHJpbmcgZ2xfZXh0ZW5zaW9u
czsKLSAgICBzdGQ6OnN0cmluZyBnbF93c192ZW5kb3I7Ci0gICAgc3RkOjpzdHJpbmcgZ2xfd3Nf
dmVyc2lvbjsKLSAgICBzdGQ6OnN0cmluZyBnbF93c19leHRlbnNpb25zOwotICAgIHVpbnQzMiBn
bF9yZXNldF9ub3RpZmljYXRpb25fc3RyYXRlZ3k7Ci0gICAgYm9vbCBjYW5fbG9zZV9jb250ZXh0
OwotICAgIGJvb2wgc29mdHdhcmVfcmVuZGVyaW5nOwotICAgIGJvb2wgZGlyZWN0X3JlbmRlcmlu
ZzsKLSAgICBib29sIHNhbmRib3hlZDsKLSAgICBpbnQgcHJvY2Vzc19jcmFzaF9jb3VudDsKLSAg
ICBib29sIGluX3Byb2Nlc3NfZ3B1OwotICAgIENvbGxlY3RJbmZvUmVzdWx0IGJhc2ljX2luZm9f
c3RhdGU7Ci0gICAgQ29sbGVjdEluZm9SZXN1bHQgY29udGV4dF9pbmZvX3N0YXRlOwotICAgIGJv
b2wganBlZ19kZWNvZGVfYWNjZWxlcmF0b3Jfc3VwcG9ydGVkOwotICB9OwotCi0gIC8vIElmIHRo
aXMgYXNzZXJ0IGZhaWxzIHRoZW4gbW9zdCBsaWtlbHkgc29tZXRoaW5nIGJlbG93IG5lZWRzIHRv
IGJlIHVwZGF0ZWQuCi0gIC8vIE5vdGUgdGhhdCB0aGlzIGFzc2VydCBpcyBvbmx5IGFwcHJveGlt
YXRlLiBJZiBhIG5ldyBmaWVsZCBpcyBhZGRlZCB0bwotICAvLyBHUFVJbmZvIHdoaWNoIGZpdHMg
d2l0aGluIHRoZSBjdXJyZW50IHBhZGRpbmcgdGhlbiBpdCB3aWxsIG5vdCBiZSBjYXVnaHQuCi0g
IHN0YXRpY19hc3NlcnQoCi0gICAgICBzaXplb2YoR1BVSW5mbykgPT0gc2l6ZW9mKEdQVUluZm9L
bm93bkZpZWxkcyksCi0gICAgICAiZmllbGRzIGhhdmUgY2hhbmdlZCBpbiBHUFVJbmZvLCBHUFVJ
bmZvS25vd25GaWVsZHMgbXVzdCBiZSB1cGRhdGVkIik7Ci0KLSAgLy8gUmVxdWlyZWQgZmllbGRz
IChhY2NvcmRpbmcgdG8gRGV2VG9vbHMgcHJvdG9jb2wpIGZpcnN0LgotICBlbnVtZXJhdG9yLT5B
ZGRTdHJpbmcoIm1hY2hpbmVNb2RlbE5hbWUiLCBtYWNoaW5lX21vZGVsX25hbWUpOwotICBlbnVt
ZXJhdG9yLT5BZGRTdHJpbmcoIm1hY2hpbmVNb2RlbFZlcnNpb24iLCBtYWNoaW5lX21vZGVsX3Zl
cnNpb24pOwotICBFbnVtZXJhdGVHUFVEZXZpY2UoZ3B1LCBlbnVtZXJhdG9yKTsKLSAgZm9yIChj
b25zdCBhdXRvJiBzZWNvbmRhcnlfZ3B1OiBzZWNvbmRhcnlfZ3B1cykKLSAgICBFbnVtZXJhdGVH
UFVEZXZpY2Uoc2Vjb25kYXJ5X2dwdSwgZW51bWVyYXRvcik7Ci0KLSAgZW51bWVyYXRvci0+QmVn
aW5BdXhBdHRyaWJ1dGVzKCk7Ci0gIGVudW1lcmF0b3ItPkFkZEJvb2woIm9wdGltdXMiLCBvcHRp
bXVzKTsKLSAgZW51bWVyYXRvci0+QWRkQm9vbCgiYW1kU3dpdGNoYWJsZSIsIGFtZF9zd2l0Y2hh
YmxlKTsKLSAgZW51bWVyYXRvci0+QWRkQm9vbCgibGVub3ZvRGN1dGUiLCBsZW5vdm9fZGN1dGUp
OwotICBlbnVtZXJhdG9yLT5BZGRJbnQ2NCgiYWRhcHRlckx1aWQiLCBhZGFwdGVyX2x1aWQpOwot
ICBlbnVtZXJhdG9yLT5BZGRTdHJpbmcoImRyaXZlclZlbmRvciIsIGRyaXZlcl92ZW5kb3IpOwot
ICBlbnVtZXJhdG9yLT5BZGRTdHJpbmcoImRyaXZlclZlcnNpb24iLCBkcml2ZXJfdmVyc2lvbik7
Ci0gIGVudW1lcmF0b3ItPkFkZFN0cmluZygiZHJpdmVyRGF0ZSIsIGRyaXZlcl9kYXRlKTsKLSAg
ZW51bWVyYXRvci0+QWRkU3RyaW5nKCJwaXhlbFNoYWRlclZlcnNpb24iLCBwaXhlbF9zaGFkZXJf
dmVyc2lvbik7Ci0gIGVudW1lcmF0b3ItPkFkZFN0cmluZygidmVydGV4U2hhZGVyVmVyc2lvbiIs
IHZlcnRleF9zaGFkZXJfdmVyc2lvbik7Ci0gIGVudW1lcmF0b3ItPkFkZFN0cmluZygibWF4TXNh
YVNhbXBsZXMiLCBtYXhfbXNhYV9zYW1wbGVzKTsKLSAgZW51bWVyYXRvci0+QWRkU3RyaW5nKCJn
bFZlcnNpb24iLCBnbF92ZXJzaW9uKTsKLSAgZW51bWVyYXRvci0+QWRkU3RyaW5nKCJnbFZlbmRv
ciIsIGdsX3ZlbmRvcik7Ci0gIGVudW1lcmF0b3ItPkFkZFN0cmluZygiZ2xSZW5kZXJlciIsIGds
X3JlbmRlcmVyKTsKLSAgZW51bWVyYXRvci0+QWRkU3RyaW5nKCJnbEV4dGVuc2lvbnMiLCBnbF9l
eHRlbnNpb25zKTsKLSAgZW51bWVyYXRvci0+QWRkU3RyaW5nKCJnbFdzVmVuZG9yIiwgZ2xfd3Nf
dmVuZG9yKTsKLSAgZW51bWVyYXRvci0+QWRkU3RyaW5nKCJnbFdzVmVyc2lvbiIsIGdsX3dzX3Zl
cnNpb24pOwotICBlbnVtZXJhdG9yLT5BZGRTdHJpbmcoImdsV3NFeHRlbnNpb25zIiwgZ2xfd3Nf
ZXh0ZW5zaW9ucyk7Ci0gIGVudW1lcmF0b3ItPkFkZEludCgKLSAgICAgICJnbFJlc2V0Tm90aWZp
Y2F0aW9uU3RyYXRlZ3kiLAotICAgICAgc3RhdGljX2Nhc3Q8aW50PihnbF9yZXNldF9ub3RpZmlj
YXRpb25fc3RyYXRlZ3kpKTsKLSAgZW51bWVyYXRvci0+QWRkQm9vbCgiY2FuX2xvc2VfY29udGV4
dCIsIGNhbl9sb3NlX2NvbnRleHQpOwotICAvLyBUT0RPKGticik6IGFkZCBwZXJmb3JtYW5jZV9z
dGF0cy4KLSAgZW51bWVyYXRvci0+QWRkQm9vbCgic29mdHdhcmVSZW5kZXJpbmciLCBzb2Z0d2Fy
ZV9yZW5kZXJpbmcpOwotICBlbnVtZXJhdG9yLT5BZGRCb29sKCJkaXJlY3RSZW5kZXJpbmciLCBk
aXJlY3RfcmVuZGVyaW5nKTsKLSAgZW51bWVyYXRvci0+QWRkQm9vbCgic2FuZGJveGVkIiwgc2Fu
ZGJveGVkKTsKLSAgZW51bWVyYXRvci0+QWRkSW50KCJwcm9jZXNzQ3Jhc2hDb3VudCIsIHByb2Nl
c3NfY3Jhc2hfY291bnQpOwotICBlbnVtZXJhdG9yLT5BZGRCb29sKCJpblByb2Nlc3NHcHUiLCBp
bl9wcm9jZXNzX2dwdSk7Ci0gIGVudW1lcmF0b3ItPkFkZEludCgiYmFzaWNJbmZvU3RhdGUiLCBi
YXNpY19pbmZvX3N0YXRlKTsKLSAgZW51bWVyYXRvci0+QWRkSW50KCJjb250ZXh0SW5mb1N0YXRl
IiwgY29udGV4dF9pbmZvX3N0YXRlKTsKLSAgLy8gVE9ETyhrYnIpOiBhZGQgZHhfZGlhZ25vc3Rp
Y3Mgb24gV2luZG93cy4KLSAgZW51bWVyYXRvci0+QWRkQm9vbCgianBlZ0RlY29kZUFjY2VsZXJh
dG9yU3VwcG9ydGVkIiwKLSAgICAgIGpwZWdfZGVjb2RlX2FjY2VsZXJhdG9yX3N1cHBvcnRlZCk7
Ci0gIGVudW1lcmF0b3ItPkVuZEF1eEF0dHJpYnV0ZXMoKTsKLX0KLQotfSAgLy8gbmFtZXNwYWNl
IGdwdQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJk
X3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfaW5mby5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVf
aW5mby5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTdmOWFhNTkyN2ZiMjAwNjJj
MTlkYjU2MjRmOWMxMzFjZmNmMzI5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0
eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X2luZm8uaAorKysgL2Rldi9udWxsCkBAIC0xLDIz
MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIENocm9taXVtIEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgotCi0jaWZuZGVmIEdQVV9DT05GSUdfR1BVX0lORk9fSF8KLSNkZWZpbmUgR1BV
X0NPTkZJR19HUFVfSU5GT19IXwotCi0vLyBQcm92aWRlcyBhY2Nlc3MgdG8gdGhlIEdQVSBpbmZv
cm1hdGlvbiBmb3IgdGhlIHN5c3RlbQotLy8gb24gd2hpY2ggY2hyb21lIGlzIGN1cnJlbnRseSBy
dW5uaW5nLgotCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1
ZGUgImFuZ2xlX2NvbmZpZy5oIgotCi1uYW1lc3BhY2UgZ3B1IHsKLQotLy8gUmVzdWx0IGZvciB0
aGUgdmFyaW91cyBDb2xsZWN0KkluZm8qIGZ1bmN0aW9ucyBiZWxvdy4KLS8vIEZhdGFsIGZhaWx1
cmVzIGFyZSBmb3IgY2FzZXMgd2hlcmUgd2UgY2FuJ3QgY3JlYXRlIGEgY29udGV4dCBhdCBhbGwg
b3IKLS8vIHNvbWV0aGluZywgbWFraW5nIHRoZSB1c2Ugb2YgdGhlIEdQVSBpbXBvc3NpYmxlLgot
Ly8gTm9uLWZhdGFsIGZhaWx1cmVzIGFyZSBmb3IgY2FzZXMgd2hlcmUgd2UgY291bGQgZ2F0aGVy
IG1vc3QgaW5mbywgYnV0IG1heWJlCi0vLyBzb21lIGlzIG1pc3NpbmcgKGUuZy4gdW5hYmxlIHRv
IHBhcnNlIGEgdmVyc2lvbiBzdHJpbmcgb3IgdG8gZGV0ZWN0IHRoZSBleGFjdAotLy8gbW9kZWwp
LgotZW51bSBDb2xsZWN0SW5mb1Jlc3VsdCB7Ci0gIGtDb2xsZWN0SW5mb05vbmUgPSAwLAotICBr
Q29sbGVjdEluZm9TdWNjZXNzID0gMSwKLSAga0NvbGxlY3RJbmZvTm9uRmF0YWxGYWlsdXJlID0g
MiwKLSAga0NvbGxlY3RJbmZvRmF0YWxGYWlsdXJlID0gMwotfTsKLQotLy8gVmlkZW8gcHJvZmls
ZS4gIFRoaXMgKm11c3QqIG1hdGNoIG1lZGlhOjpWaWRlb0NvZGVjUHJvZmlsZS4KLWVudW0gVmlk
ZW9Db2RlY1Byb2ZpbGUgewotICBWSURFT19DT0RFQ19QUk9GSUxFX1VOS05PV04gPSAtMSwKLSAg
VklERU9fQ09ERUNfUFJPRklMRV9NSU4gPSBWSURFT19DT0RFQ19QUk9GSUxFX1VOS05PV04sCi0g
IEgyNjRQUk9GSUxFX0JBU0VMSU5FID0gMCwKLSAgSDI2NFBST0ZJTEVfTUFJTiA9IDEsCi0gIEgy
NjRQUk9GSUxFX0VYVEVOREVEID0gMiwKLSAgSDI2NFBST0ZJTEVfSElHSCA9IDMsCi0gIEgyNjRQ
Uk9GSUxFX0hJR0gxMFBST0ZJTEUgPSA0LAotICBIMjY0UFJPRklMRV9ISUdINDIyUFJPRklMRSA9
IDUsCi0gIEgyNjRQUk9GSUxFX0hJR0g0NDRQUkVESUNUSVZFUFJPRklMRSA9IDYsCi0gIEgyNjRQ
Uk9GSUxFX1NDQUxBQkxFQkFTRUxJTkUgPSA3LAotICBIMjY0UFJPRklMRV9TQ0FMQUJMRUhJR0gg
PSA4LAotICBIMjY0UFJPRklMRV9TVEVSRU9ISUdIID0gOSwKLSAgSDI2NFBST0ZJTEVfTVVMVElW
SUVXSElHSCA9IDEwLAotICBWUDhQUk9GSUxFX0FOWSA9IDExLAotICBWUDlQUk9GSUxFX0FOWSA9
IDEyLAotICBWSURFT19DT0RFQ19QUk9GSUxFX01BWCA9IFZQOVBST0ZJTEVfQU5ZLAotfTsKLQot
c3RydWN0IEdQVV9FWFBPUlQgR1BVSW5mbyB7Ci0gIHN0cnVjdCBHUFVfRVhQT1JUIEdQVURldmlj
ZSB7Ci0gICAgR1BVRGV2aWNlKCk7Ci0gICAgfkdQVURldmljZSgpOwotCi0gICAgLy8gVGhlIERX
T1JEICh1aW50MzIpIHJlcHJlc2VudGluZyB0aGUgZ3JhcGhpY3MgY2FyZCB2ZW5kb3IgaWQuCi0g
ICAgdWludDMyIHZlbmRvcl9pZDsKLQotICAgIC8vIFRoZSBEV09SRCAodWludDMyKSByZXByZXNl
bnRpbmcgdGhlIGdyYXBoaWNzIGNhcmQgZGV2aWNlIGlkLgotICAgIC8vIERldmljZSBpZHMgYXJl
IHVuaXF1ZSB0byB2ZW5kb3IsIG5vdCB0byBvbmUgYW5vdGhlci4KLSAgICB1aW50MzIgZGV2aWNl
X2lkOwotCi0gICAgLy8gV2hldGhlciB0aGlzIEdQVSBpcyB0aGUgY3VycmVudGx5IHVzZWQgb25l
LgotICAgIC8vIEN1cnJlbnRseSB0aGlzIGZpZWxkIGlzIG9ubHkgc3VwcG9ydGVkIGFuZCBtZWFu
aW5nZnVsIG9uIE9TIFguCi0gICAgYm9vbCBhY3RpdmU7Ci0KLSAgICAvLyBUaGUgc3RyaW5ncyB0
aGF0IGRlc2NyaWJlIHRoZSBHUFUuCi0gICAgLy8gSW4gTGludXggdGhlc2Ugc3RyaW5ncyBhcmUg
b2J0YWluZWQgdGhyb3VnaCBsaWJwY2kuCi0gICAgLy8gSW4gV2luL01hY09TWCwgdGhlc2UgdHdv
IHN0cmluZ3MgYXJlIG5vdCBmaWxsZWQgYXQgdGhlIG1vbWVudC4KLSAgICAvLyBJbiBBbmRyb2lk
LCB0aGVzZSBhcmUgcmVzcGVjdGl2ZWx5IEdMX1ZFTkRPUiBhbmQgR0xfUkVOREVSRVIuCi0gICAg
c3RkOjpzdHJpbmcgdmVuZG9yX3N0cmluZzsKLSAgICBzdGQ6OnN0cmluZyBkZXZpY2Vfc3RyaW5n
OwotICB9OwotCi0gIEdQVUluZm8oKTsKLSAgfkdQVUluZm8oKTsKLQotICBib29sIFN1cHBvcnRz
QWNjZWxlcmF0ZWQyZENhbnZhcygpIGNvbnN0IHsKLSAgICByZXR1cm4gIWNhbl9sb3NlX2NvbnRl
eHQgJiYgIXNvZnR3YXJlX3JlbmRlcmluZzsKLSAgfQotCi0gIC8vIENvbXB1dGVyIGhhcyBOVklE
SUEgT3B0aW11cwotICBib29sIG9wdGltdXM7Ci0KLSAgLy8gQ29tcHV0ZXIgaGFzIEFNRCBEeW5h
bWljIFN3aXRjaGFibGUgR3JhcGhpY3MKLSAgYm9vbCBhbWRfc3dpdGNoYWJsZTsKLQotICAvLyBM
ZW5vdm8gZEN1dGUgaXMgaW5zdGFsbGVkLiBodHRwOi8vY3JidWcuY29tLzE4MTY2NS4KLSAgYm9v
bCBsZW5vdm9fZGN1dGU7Ci0KLSAgLy8gUHJpbWFyeSBHUFUsIGZvciBleG1hcGxlLCB0aGUgZGlz
Y3JldGUgR1BVIGluIGEgZHVhbCBHUFUgbWFjaGluZS4KLSAgR1BVRGV2aWNlIGdwdTsKLQotICAv
LyBTZWNvbmRhcnkgR1BVcywgZm9yIGV4YW1wbGUsIHRoZSBpbnRlZ3JhdGVkIEdQVSBpbiBhIGR1
YWwgR1BVIG1hY2hpbmUuCi0gIHN0ZDo6dmVjdG9yPEdQVURldmljZT4gc2Vjb25kYXJ5X2dwdXM7
Ci0KLSAgLy8gT24gV2luZG93cywgdGhlIHVuaXF1ZSBpZGVudGlmaWVyIG9mIHRoZSBhZGFwdGVy
IHRoZSBHUFUgcHJvY2VzcyB1c2VzLgotICAvLyBUaGUgZGVmYXVsdCBpcyB6ZXJvLCB3aGljaCBt
YWtlcyB0aGUgYnJvd3NlciBwcm9jZXNzIGNyZWF0ZSBpdHMgRDNEIGRldmljZQotICAvLyBvbiB0
aGUgcHJpbWFyeSBhZGFwdGVyLiBOb3RlIHRoYXQgdGhlIHByaW1hcnkgYWRhcHRlciBjYW4gY2hh
bmdlIGF0IGFueQotICAvLyB0aW1lIHNvIGl0IGlzIGJldHRlciB0byBzcGVjaWZ5IGEgcGFydGlj
dWxhciBMVUlELiBOb3RlIHRoYXQgdmFsaWQgTFVJRHMKLSAgLy8gYXJlIGFsd2F5cyBub24temVy
by4KLSAgdWludDY0IGFkYXB0ZXJfbHVpZDsKLQotICAvLyBUaGUgdmVuZG9yIG9mIHRoZSBncmFw
aGljcyBkcml2ZXIgY3VycmVudGx5IGluc3RhbGxlZC4KLSAgc3RkOjpzdHJpbmcgZHJpdmVyX3Zl
bmRvcjsKLQotICAvLyBUaGUgdmVyc2lvbiBvZiB0aGUgZ3JhcGhpY3MgZHJpdmVyIGN1cnJlbnRs
eSBpbnN0YWxsZWQuCi0gIHN0ZDo6c3RyaW5nIGRyaXZlcl92ZXJzaW9uOwotCi0gIC8vIFRoZSBk
YXRlIG9mIHRoZSBncmFwaGljcyBkcml2ZXIgY3VycmVudGx5IGluc3RhbGxlZC4KLSAgc3RkOjpz
dHJpbmcgZHJpdmVyX2RhdGU7Ci0KLSAgLy8gVGhlIHZlcnNpb24gb2YgdGhlIHBpeGVsL2ZyYWdt
ZW50IHNoYWRlciB1c2VkIGJ5IHRoZSBncHUuCi0gIHN0ZDo6c3RyaW5nIHBpeGVsX3NoYWRlcl92
ZXJzaW9uOwotCi0gIC8vIFRoZSB2ZXJzaW9uIG9mIHRoZSB2ZXJ0ZXggc2hhZGVyIHVzZWQgYnkg
dGhlIGdwdS4KLSAgc3RkOjpzdHJpbmcgdmVydGV4X3NoYWRlcl92ZXJzaW9uOwotCi0gIC8vIFRo
ZSBtYXhpbXVtIG11bHRpc2FwbGluZyBzYW1wbGUgY291bnQsIGVpdGhlciB0aHJvdWdoIEVTMyBv
cgotICAvLyBFWFRfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIE1TQUEuCi0gIHN0ZDo6
c3RyaW5nIG1heF9tc2FhX3NhbXBsZXM7Ci0KLSAgLy8gVGhlIG1hY2hpbmUgbW9kZWwgaWRlbnRp
Zmllci4gVGhleSBjYW4gY29udGFpbiBhbnkgY2hhcmFjdGVyLCBpbmNsdWRpbmcKLSAgLy8gd2hp
dGVzcGFjZXMuICBDdXJyZW50bHkgaXQgaXMgc3VwcG9ydGVkIG9uIE1hY09TWCBhbmQgQW5kcm9p
ZC4KLSAgLy8gQW5kcm9pZCBleGFtcGxlczogIk5heHVzIDUiLCAiWFQxMDMyIi4KLSAgLy8gT24g
TWFjT1NYLCB0aGUgdmVyc2lvbiBpcyBzdHJpcHBlZCBvdXQgb2YgdGhlIG1vZGVsIGlkZW50aWZp
ZXIsIGZvcgotICAvLyBleGFtcGxlLCB0aGUgb3JpZ2luYWwgaWRlbnRpZmllciBpcyAiTWFjQm9v
a1BybzcsMiIsIGFuZCB3ZSBwdXQKLSAgLy8gIk1hY0Jvb2tQcm8iIGFzIG1hY2hpbmVfbW9kZWxf
bmFtZSwgYW5kICI3LjIiIGFzIG1hY2hpbmVfbW9kZWxfdmVyc2lvbi4KLSAgc3RkOjpzdHJpbmcg
bWFjaGluZV9tb2RlbF9uYW1lOwotCi0gIC8vIFRoZSB2ZXJzaW9uIG9mIHRoZSBtYWNoaW5lIG1v
ZGVsLiBDdXJyZW50bHkgaXQgaXMgc3VwcG9ydGVkIG9uIE1hY09TWC4KLSAgLy8gU2VlIG1hY2hp
bmVfbW9kZWxfbmFtZSdzIGNvbW1lbnQuCi0gIHN0ZDo6c3RyaW5nIG1hY2hpbmVfbW9kZWxfdmVy
c2lvbjsKLQotICAvLyBUaGUgR0xfVkVSU0lPTiBzdHJpbmcuCi0gIHN0ZDo6c3RyaW5nIGdsX3Zl
cnNpb247Ci0KLSAgLy8gVGhlIEdMX1ZFTkRPUiBzdHJpbmcuCi0gIHN0ZDo6c3RyaW5nIGdsX3Zl
bmRvcjsKLQotICAvLyBUaGUgR0xfUkVOREVSRVIgc3RyaW5nLgotICBzdGQ6OnN0cmluZyBnbF9y
ZW5kZXJlcjsKLQotICAvLyBUaGUgR0xfRVhURU5TSU9OUyBzdHJpbmcuCi0gIHN0ZDo6c3RyaW5n
IGdsX2V4dGVuc2lvbnM7Ci0KLSAgLy8gR0wgd2luZG93IHN5c3RlbSBiaW5kaW5nIHZlbmRvci4g
ICIiIGlmIG5vdCBhdmFpbGFibGUuCi0gIHN0ZDo6c3RyaW5nIGdsX3dzX3ZlbmRvcjsKLQotICAv
LyBHTCB3aW5kb3cgc3lzdGVtIGJpbmRpbmcgdmVyc2lvbi4gICIiIGlmIG5vdCBhdmFpbGFibGUu
Ci0gIHN0ZDo6c3RyaW5nIGdsX3dzX3ZlcnNpb247Ci0KLSAgLy8gR0wgd2luZG93IHN5c3RlbSBi
aW5kaW5nIGV4dGVuc2lvbnMuICAiIiBpZiBub3QgYXZhaWxhYmxlLgotICBzdGQ6OnN0cmluZyBn
bF93c19leHRlbnNpb25zOwotCi0gIC8vIEdMIHJlc2V0IG5vdGlmaWNhdGlvbiBzdHJhdGVneSBh
cyBkZWZpbmVkIGJ5IEdMX0FSQl9yb2J1c3RuZXNzLiAwIGlmIEdQVQotICAvLyByZXNldCBkZXRl
Y3Rpb24gb3Igbm90aWZpY2F0aW9uIG5vdCBhdmFpbGFibGUuCi0gIHVpbnQzMiBnbF9yZXNldF9u
b3RpZmljYXRpb25fc3RyYXRlZ3k7Ci0KLSAgLy8gVGhlIGRldmljZSBzZW1hbnRpY3MsIGkuZS4g
d2hldGhlciB0aGUgVmlzdGEgYW5kIFdpbmRvd3MgNyBzcGVjaWZpYwotICAvLyBzZW1hbnRpY3Mg
YXJlIGF2YWlsYWJsZS4KLSAgYm9vbCBjYW5fbG9zZV9jb250ZXh0OwotCi0gIGJvb2wgc29mdHdh
cmVfcmVuZGVyaW5nOwotCi0gIC8vIFdoZXRoZXIgdGhlIGRyaXZlciB1c2VzIGRpcmVjdCByZW5k
ZXJpbmcuIFRydWUgb24gbW9zdCBwbGF0Zm9ybXMsIGZhbHNlIG9uCi0gIC8vIFgxMSB3aGVuIHVz
aW5nIHJlbW90ZSBYLgotICBib29sIGRpcmVjdF9yZW5kZXJpbmc7Ci0KLSAgLy8gV2hldGhlciB0
aGUgZ3B1IHByb2Nlc3MgaXMgcnVubmluZyBpbiBhIHNhbmRib3guCi0gIGJvb2wgc2FuZGJveGVk
OwotCi0gIC8vIE51bWJlciBvZiBHUFUgcHJvY2VzcyBjcmFzaGVzIHJlY29yZGVkLgotICBpbnQg
cHJvY2Vzc19jcmFzaF9jb3VudDsKLQotICAvLyBUcnVlIGlmIHRoZSBHUFUgaXMgcnVubmluZyBp
biB0aGUgYnJvd3NlciBwcm9jZXNzIGluc3RlYWQgb2YgaXRzIG93bi4KLSAgYm9vbCBpbl9wcm9j
ZXNzX2dwdTsKLQotICAvLyBUaGUgc3RhdGUgb2Ygd2hldGhlciB0aGUgYmFzaWMvY29udGV4dC9E
eERpYWdub3N0aWNzIGluZm8gaXMgY29sbGVjdGVkIGFuZAotICAvLyBpZiB0aGUgY29sbGVjdGlv
biBmYWlscyBvciBub3QuCi0gIENvbGxlY3RJbmZvUmVzdWx0IGJhc2ljX2luZm9fc3RhdGU7Ci0g
IENvbGxlY3RJbmZvUmVzdWx0IGNvbnRleHRfaW5mb19zdGF0ZTsKLQotICBib29sIGpwZWdfZGVj
b2RlX2FjY2VsZXJhdG9yX3N1cHBvcnRlZDsKLQotICAvLyBOb3RlOiB3aGVuIGFkZGluZyBuZXcg
bWVtYmVycywgcGxlYXNlIHJlbWVtYmVyIHRvIHVwZGF0ZSBFbnVtZXJhdGVGaWVsZHMKLSAgLy8g
aW4gZ3B1X2luZm8uY2MuCi0KLSAgLy8gSW4gY29uanVuY3Rpb24gd2l0aCBFbnVtZXJhdGVGaWVs
ZHMsIHRoaXMgYWxsb3dzIHRoZSBlbWJlZGRlciB0bwotICAvLyBlbnVtZXJhdGUgdGhlIHZhbHVl
cyBpbiB0aGlzIHN0cnVjdHVyZSB3aXRob3V0IGhhdmluZyB0byBlbWJlZAotICAvLyByZWZlcmVu
Y2VzIHRvIGl0cyBzcGVjaWZpYyBtZW1iZXIgdmFyaWFibGVzLiBUaGlzIHNpbXBsaWZpZXMgdGhl
Ci0gIC8vIGFkZGl0aW9uIG9mIG5ldyBmaWVsZHMgdG8gdGhpcyB0eXBlLgotICBjbGFzcyBFbnVt
ZXJhdG9yIHsKLSAgIHB1YmxpYzoKLSAgICAvLyBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXBwbHkg
dG8gdGhlICJjdXJyZW50IiBvYmplY3QuIEluaXRpYWxseSB0aGlzCi0gICAgLy8gaXMgdGhlIHJv
b3Qgb2JqZWN0LCBidXQgY2FsbHMgdG8gQmVnaW5HUFVEZXZpY2UvRW5kR1BVRGV2aWNlIGFuZAot
ICAgIC8vIEJlZ2luQXV4QXR0cmlidXRlcy9FbmRBdXhBdHRyaWJ1dGVzIGNoYW5nZSB0aGUgb2Jq
ZWN0IHRvIHdoaWNoIHRoZXNlCi0gICAgLy8gY2FsbHMgc2hvdWxkIGFwcGx5LgotICAgIHZpcnR1
YWwgdm9pZCBBZGRJbnQ2NChjb25zdCBjaGFyKiBuYW1lLCBpbnQ2NCB2YWx1ZSkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBBZGRJbnQoY29uc3QgY2hhciogbmFtZSwgaW50IHZhbHVlKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIEFkZFN0cmluZyhjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBzdGQ6OnN0
cmluZyYgdmFsdWUpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgQWRkQm9vbChjb25zdCBjaGFyKiBu
YW1lLCBib29sIHZhbHVlKSA9IDA7Ci0KLSAgICAvLyBNYXJrZXJzIGluZGljYXRpbmcgdGhhdCBh
IEdQVURldmljZSBpcyBiZWluZyBkZXNjcmliZWQuCi0gICAgdmlydHVhbCB2b2lkIEJlZ2luR1BV
RGV2aWNlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBFbmRHUFVEZXZpY2UoKSA9IDA7Ci0KLSAg
ICAvLyBNYXJrZXJzIGluZGljYXRpbmcgdGhhdCBhIFZpZGVvRGVjb2RlQWNjZWxlcmF0b3JTdXBw
b3J0ZWRQcm9maWxlIGlzCi0gICAgLy8gYmVpbmcgZGVzY3JpYmVkLgotICAgIHZpcnR1YWwgdm9p
ZCBCZWdpblZpZGVvRGVjb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxlKCkgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBFbmRWaWRlb0RlY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZSgp
ID0gMDsKLQotICAgIC8vIE1hcmtlcnMgaW5kaWNhdGluZyB0aGF0IGEgVmlkZW9FbmNvZGVBY2Nl
bGVyYXRvclN1cHBvcnRlZFByb2ZpbGUgaXMKLSAgICAvLyBiZWluZyBkZXNjcmliZWQuCi0gICAg
dmlydHVhbCB2b2lkIEJlZ2luVmlkZW9FbmNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGUo
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIEVuZFZpZGVvRW5jb2RlQWNjZWxlcmF0b3JTdXBwb3J0
ZWRQcm9maWxlKCkgPSAwOwotCi0gICAgLy8gTWFya2VycyBpbmRpY2F0aW5nIHRoYXQgImF1eGls
aWFyeSIgYXR0cmlidXRlcyBvZiB0aGUgR1BVSW5mbwotICAgIC8vIChhY2NvcmRpbmcgdG8gdGhl
IERldlRvb2xzIHByb3RvY29sKSBhcmUgYmVpbmcgZGVzY3JpYmVkLgotICAgIHZpcnR1YWwgdm9p
ZCBCZWdpbkF1eEF0dHJpYnV0ZXMoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIEVuZEF1eEF0dHJp
YnV0ZXMoKSA9IDA7Ci0KLSAgIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5FbnVtZXJhdG9yKCkg
e30KLSAgfTsKLQotICAvLyBPdXRwdXRzIHRoZSBmaWVsZHMgaW4gdGhpcyBzdHJ1Y3R1cmUgdG8g
dGhlIHByb3ZpZGVkIGVudW1lcmF0b3IuCi0gIHZvaWQgRW51bWVyYXRlRmllbGRzKEVudW1lcmF0
b3IqIGVudW1lcmF0b3IpIGNvbnN0OwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGdwdQotCi0jZW5k
aWYgIC8vIEdQVV9DT05GSUdfR1BVX0lORk9fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1
X3Rlc3RfY29uZmlnLmNjIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJk
X3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWcuY2MKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwYmY2ZjA2MzU2NDQ5ZjkwY2E4NWZiNmYwYWUxMzZjNjRj
ZGM4OTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVj
dGF0aW9ucy9ncHVfdGVzdF9jb25maWcuY2MKKysrIC9kZXYvbnVsbApAQCAtMSw0OTIgKzAsMCBA
QAotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KLQotI2luY2x1ZGUgImdwdV90ZXN0X2NvbmZpZy5oIgotCi0jaW5jbHVkZSAiZ3B1X2luZm8u
aCIKLSNpbmNsdWRlICJncHVfdGVzdF9leHBlY3RhdGlvbnNfcGFyc2VyLmgiCi0KLSNpZiBkZWZp
bmVkKE9TX0xJTlVYKQotZXh0ZXJuICJDIiB7Ci0jICAgaW5jbHVkZSA8cGNpL3BjaS5oPgotfQot
I2VuZGlmCi0KLSNpZiBkZWZpbmVkKE9TX01BQ09TWCkKLSNpbmNsdWRlICJncHVfdGVzdF9jb25m
aWdfbWFjLmgiCi0jZW5kaWYKLQotdXNpbmcgbmFtZXNwYWNlIGdwdTsKLQotI2lmIGRlZmluZWQo
T1NfV0lOKQotCi1uYW1lc3BhY2UgYmFzZSB7Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIERpc2FibGUg
dGhlIGRlcHJlY2F0ZWQgZnVuY3Rpb24gd2FybmluZyBmb3IgR2V0VmVyc2lvbkV4Ci0jcHJhZ21h
IHdhcm5pbmcoZGlzYWJsZTogNDk5NikKLQotY2xhc3MgU3lzSW5mbwotewotICBwdWJsaWM6Ci0g
ICAgc3RhdGljIHZvaWQgT3BlcmF0aW5nU3lzdGVtVmVyc2lvbk51bWJlcnMoCi0gICAgICAgIGlu
dDMyICptYWpvcl92ZXJzaW9uLCBpbnQzMiAqbWlub3JfdmVyc2lvbiwgaW50MzIgKmJ1Z2ZpeF92
ZXJzaW9uKTsKLX07Ci0KLS8vIHN0YXRpYwotdm9pZCBTeXNJbmZvOjpPcGVyYXRpbmdTeXN0ZW1W
ZXJzaW9uTnVtYmVycygKLSAgICBpbnQzMiAqbWFqb3JfdmVyc2lvbiwgaW50MzIgKm1pbm9yX3Zl
cnNpb24sIGludDMyICpidWdmaXhfdmVyc2lvbikKLXsKLSAgT1NWRVJTSU9OSU5GT0VYIHZlcnNp
b25faW5mbyA9IHsgc2l6ZW9mIHZlcnNpb25faW5mbyB9OwotICA6OkdldFZlcnNpb25FeChyZWlu
dGVycHJldF9jYXN0PE9TVkVSU0lPTklORk8qPigmdmVyc2lvbl9pbmZvKSk7Ci0gICptYWpvcl92
ZXJzaW9uID0gdmVyc2lvbl9pbmZvLmR3TWFqb3JWZXJzaW9uOwotICAqbWlub3JfdmVyc2lvbiA9
IHZlcnNpb25faW5mby5kd01pbm9yVmVyc2lvbjsKLSAgKmJ1Z2ZpeF92ZXJzaW9uID0gdmVyc2lv
bl9pbmZvLmR3QnVpbGROdW1iZXI7Ci19Ci0KLX0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi19
IC8vIG5hbWVzcGFjZSBiYXNlCi0KLXZvaWQgRGV2aWNlSURUb1ZlbmRvckFuZERldmljZShjb25z
dCBzdGQ6OnN0cmluZyYgaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMy
KiB2ZW5kb3JfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyKiBkZXZp
Y2VfaWQpIHsKLSAgKnZlbmRvcl9pZCA9IDA7Ci0gICpkZXZpY2VfaWQgPSAwOwotICBpZiAoaWQu
bGVuZ3RoKCkgPCAyMSkKLSAgICByZXR1cm47Ci0gIHN0ZDo6c3RyaW5nIHZlbmRvcl9pZF9zdHJp
bmcgPSBpZC5zdWJzdHIoOCwgNCk7Ci0gIHN0ZDo6c3RyaW5nIGRldmljZV9pZF9zdHJpbmcgPSBp
ZC5zdWJzdHIoMTcsIDQpOwotICBiYXNlOjpIZXhTdHJpbmdUb1VJbnQodmVuZG9yX2lkX3N0cmlu
ZywgdmVuZG9yX2lkKTsKLSAgYmFzZTo6SGV4U3RyaW5nVG9VSW50KGRldmljZV9pZF9zdHJpbmcs
IGRldmljZV9pZCk7Ci19Ci0KLUNvbGxlY3RJbmZvUmVzdWx0IENvbGxlY3RHcHVJRCh1aW50MzIq
IHZlbmRvcl9pZCwgdWludDMyKiBkZXZpY2VfaWQpIHsKLSAgRENIRUNLKHZlbmRvcl9pZCAmJiBk
ZXZpY2VfaWQpOwotICAqdmVuZG9yX2lkID0gMDsKLSAgKmRldmljZV9pZCA9IDA7Ci0KLSAgLy8g
VGFrZW4gZnJvbSBodHRwOi8vZGV2ZWxvcGVyLm52aWRpYS5jb20vb2JqZWN0L2RldmljZV9pZHMu
aHRtbAotICBESVNQTEFZX0RFVklDRUEgZGQ7Ci0gIGRkLmNiID0gc2l6ZW9mKERJU1BMQVlfREVW
SUNFQSk7Ci0gIHN0ZDo6c3RyaW5nIGlkOwotICBmb3IgKGludCBpID0gMDsgRW51bURpc3BsYXlE
ZXZpY2VzQShOVUxMLCBpLCAmZGQsIDApOyArK2kpIHsKLSAgICBpZiAoZGQuU3RhdGVGbGFncyAm
IERJU1BMQVlfREVWSUNFX1BSSU1BUllfREVWSUNFKSB7Ci0gICAgICBpZCA9IGRkLkRldmljZUlE
OwotICAgICAgYnJlYWs7Ci0gICAgfQotICB9Ci0KLSAgaWYgKGlkLmxlbmd0aCgpID4gMjApIHsK
LSAgICBEZXZpY2VJRFRvVmVuZG9yQW5kRGV2aWNlKGlkLCB2ZW5kb3JfaWQsIGRldmljZV9pZCk7
Ci0gICAgaWYgKCp2ZW5kb3JfaWQgIT0gMCAmJiAqZGV2aWNlX2lkICE9IDApCi0gICAgICByZXR1
cm4ga0NvbGxlY3RJbmZvU3VjY2VzczsKLSAgfQotICByZXR1cm4ga0NvbGxlY3RJbmZvTm9uRmF0
YWxGYWlsdXJlOwotfQotCi0jZW5kaWYgLy8gZGVmaW5lZChPU19XSU4pCi0KLSNpZiBkZWZpbmVk
KE9TX0xJTlVYKQotCi1jb25zdCB1aW50MzIga1ZlbmRvcklESW50ZWwgPSAweDgwODY7Ci1jb25z
dCB1aW50MzIga1ZlbmRvcklETlZpZGlhID0gMHgxMGRlOwotY29uc3QgdWludDMyIGtWZW5kb3JJ
REFNRCA9IDB4MTAwMjsKLQotQ29sbGVjdEluZm9SZXN1bHQgQ29sbGVjdFBDSVZpZGVvQ2FyZElu
Zm8oR1BVSW5mbyogZ3B1X2luZm8pIHsKLSAgRENIRUNLKGdwdV9pbmZvKTsKLQotICBzdHJ1Y3Qg
cGNpX2FjY2VzcyogYWNjZXNzID0gcGNpX2FsbG9jKCk7Ci0gIERDSEVDSyhhY2Nlc3MgIT0gTlVM
TCk7Ci0gIHBjaV9pbml0KGFjY2Vzcyk7Ci0gIHBjaV9zY2FuX2J1cyhhY2Nlc3MpOwotCi0gIGJv
b2wgcHJpbWFyeV9ncHVfaWRlbnRpZmllZCA9IGZhbHNlOwotICBmb3IgKHBjaV9kZXYqIGRldmlj
ZSA9IGFjY2Vzcy0+ZGV2aWNlczsKLSAgICAgICBkZXZpY2UgIT0gTlVMTDsgZGV2aWNlID0gZGV2
aWNlLT5uZXh0KSB7Ci0gICAgcGNpX2ZpbGxfaW5mbyhkZXZpY2UsIDMzKTsKLSAgICBib29sIGlz
X2dwdSA9IGZhbHNlOwotICAgIHN3aXRjaCAoZGV2aWNlLT5kZXZpY2VfY2xhc3MpIHsKLSAgICAg
IGNhc2UgUENJX0NMQVNTX0RJU1BMQVlfVkdBOgotICAgICAgY2FzZSBQQ0lfQ0xBU1NfRElTUExB
WV9YR0E6Ci0gICAgICBjYXNlIFBDSV9DTEFTU19ESVNQTEFZXzNEOgotICAgICAgICBpc19ncHUg
PSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgUENJX0NMQVNTX0RJU1BMQVlfT1RI
RVI6Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKCFpc19n
cHUpCi0gICAgICBjb250aW51ZTsKLSAgICBpZiAoZGV2aWNlLT52ZW5kb3JfaWQgPT0gMCB8fCBk
ZXZpY2UtPmRldmljZV9pZCA9PSAwKQotICAgICAgY29udGludWU7Ci0KLSAgICBHUFVJbmZvOjpH
UFVEZXZpY2UgZ3B1OwotICAgIGdwdS52ZW5kb3JfaWQgPSBkZXZpY2UtPnZlbmRvcl9pZDsKLSAg
ICBncHUuZGV2aWNlX2lkID0gZGV2aWNlLT5kZXZpY2VfaWQ7Ci0KLSAgICBpZiAoIXByaW1hcnlf
Z3B1X2lkZW50aWZpZWQpIHsKLSAgICAgIHByaW1hcnlfZ3B1X2lkZW50aWZpZWQgPSB0cnVlOwot
ICAgICAgZ3B1X2luZm8tPmdwdSA9IGdwdTsKLSAgICB9IGVsc2UgewotICAgICAgLy8gVE9ETyh6
bW8pOiBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgR1BVcywgd2UgYXNzdW1lIHRoZSBub24gSW50ZWwK
LSAgICAgIC8vIG9uZSBpcyBwcmltYXJ5LiBSZXZpc2l0IHRoaXMgbG9naWMgYmVjYXVzZSB3ZSBh
Y3R1YWxseSBkb24ndCBrbm93Ci0gICAgICAvLyB3aGljaCBHUFUgd2UgYXJlIHVzaW5nIGF0IHRo
aXMgcG9pbnQuCi0gICAgICBpZiAoZ3B1X2luZm8tPmdwdS52ZW5kb3JfaWQgPT0ga1ZlbmRvcklE
SW50ZWwgJiYKLSAgICAgICAgICBncHUudmVuZG9yX2lkICE9IGtWZW5kb3JJREludGVsKSB7Ci0g
ICAgICAgIGdwdV9pbmZvLT5zZWNvbmRhcnlfZ3B1cy5wdXNoX2JhY2soZ3B1X2luZm8tPmdwdSk7
Ci0gICAgICAgIGdwdV9pbmZvLT5ncHUgPSBncHU7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBn
cHVfaW5mby0+c2Vjb25kYXJ5X2dwdXMucHVzaF9iYWNrKGdwdSk7Ci0gICAgICB9Ci0gICAgfQot
ICB9Ci0KLSAgLy8gRGV0ZWN0IE9wdGltdXMgb3IgQU1EIFN3aXRjaGFibGUgR1BVLgotICBpZiAo
Z3B1X2luZm8tPnNlY29uZGFyeV9ncHVzLnNpemUoKSA9PSAxICYmCi0gICAgICBncHVfaW5mby0+
c2Vjb25kYXJ5X2dwdXNbMF0udmVuZG9yX2lkID09IGtWZW5kb3JJREludGVsKSB7Ci0gICAgaWYg
KGdwdV9pbmZvLT5ncHUudmVuZG9yX2lkID09IGtWZW5kb3JJRE5WaWRpYSkKLSAgICAgIGdwdV9p
bmZvLT5vcHRpbXVzID0gdHJ1ZTsKLSAgICBpZiAoZ3B1X2luZm8tPmdwdS52ZW5kb3JfaWQgPT0g
a1ZlbmRvcklEQU1EKQotICAgICAgZ3B1X2luZm8tPmFtZF9zd2l0Y2hhYmxlID0gdHJ1ZTsKLSAg
fQotCi0gIHBjaV9jbGVhbnVwKGFjY2Vzcyk7Ci0gIGlmICghcHJpbWFyeV9ncHVfaWRlbnRpZmll
ZCkKLSAgICByZXR1cm4ga0NvbGxlY3RJbmZvTm9uRmF0YWxGYWlsdXJlOwotICByZXR1cm4ga0Nv
bGxlY3RJbmZvU3VjY2VzczsKLX0KLQotQ29sbGVjdEluZm9SZXN1bHQgQ29sbGVjdEdwdUlEKHVp
bnQzMiogdmVuZG9yX2lkLCB1aW50MzIqIGRldmljZV9pZCkgewotICBEQ0hFQ0sodmVuZG9yX2lk
ICYmIGRldmljZV9pZCk7Ci0gICp2ZW5kb3JfaWQgPSAwOwotICAqZGV2aWNlX2lkID0gMDsKLQot
ICBHUFVJbmZvIGdwdV9pbmZvOwotICBDb2xsZWN0SW5mb1Jlc3VsdCByZXN1bHQgPSBDb2xsZWN0
UENJVmlkZW9DYXJkSW5mbygmZ3B1X2luZm8pOwotICBpZiAocmVzdWx0ID09IGtDb2xsZWN0SW5m
b1N1Y2Nlc3MpIHsKLSAgICAqdmVuZG9yX2lkID0gZ3B1X2luZm8uZ3B1LnZlbmRvcl9pZDsKLSAg
ICAqZGV2aWNlX2lkID0gZ3B1X2luZm8uZ3B1LmRldmljZV9pZDsKLSAgfQotICByZXR1cm4gcmVz
dWx0OwotfQotCi0jZW5kaWYgLy8gZGVmaW5lZChPU19MSU5VWCkKLQotI2lmIGRlZmluZWQoT1Nf
TUFDT1NYKQotCi1Db2xsZWN0SW5mb1Jlc3VsdCBDb2xsZWN0R3B1SUQodWludDMyKiB2ZW5kb3Jf
aWQsIHVpbnQzMiogZGV2aWNlX2lkKSB7Ci0gIERDSEVDSyh2ZW5kb3JfaWQgJiYgZGV2aWNlX2lk
KTsKLQotICBHUFVJbmZvOjpHUFVEZXZpY2UgZ3B1ID0gR2V0QWN0aXZlR1BVKCk7Ci0gICp2ZW5k
b3JfaWQgPSBncHUudmVuZG9yX2lkOwotICAqZGV2aWNlX2lkID0gZ3B1LmRldmljZV9pZDsKLQot
ICBpZiAoKnZlbmRvcl9pZCAhPSAwICYmICpkZXZpY2VfaWQgIT0gMCkKLSAgICByZXR1cm4ga0Nv
bGxlY3RJbmZvU3VjY2VzczsKLSAgcmV0dXJuIGtDb2xsZWN0SW5mb05vbkZhdGFsRmFpbHVyZTsK
LX0KLQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE9TX0FORFJPSUQpCi1Db2xsZWN0SW5mb1Jlc3Vs
dCBDb2xsZWN0R3B1SUQodWludDMyICp2ZW5kb3JfaWQsIHVpbnQzMiAqZGV2aWNlX2lkKQotewot
ICAgIERDSEVDSyh2ZW5kb3JfaWQgJiYgZGV2aWNlX2lkKTsKLSAgICAqdmVuZG9yX2lkID0gMDsK
LSAgICAqZGV2aWNlX2lkID0gMDsKLSAgICByZXR1cm4ga0NvbGxlY3RJbmZvTm9uRmF0YWxGYWls
dXJlOwotfQotI2VuZGlmICAvLyBkZWZpbmVkKE9TX0FORFJPSUQpCi0KLW5hbWVzcGFjZSBncHUg
ewotCi1uYW1lc3BhY2UgewotCi1HUFVUZXN0Q29uZmlnOjpPUyBHZXRDdXJyZW50T1MoKSB7Ci0j
aWYgZGVmaW5lZChPU19DSFJPTUVPUykKLSAgcmV0dXJuIEdQVVRlc3RDb25maWc6OmtPc0Nocm9t
ZU9TOwotI2VsaWYgZGVmaW5lZChPU19MSU5VWCkgfHwgZGVmaW5lZChPU19PUEVOQlNEKQotICBy
ZXR1cm4gR1BVVGVzdENvbmZpZzo6a09zTGludXg7Ci0jZWxpZiBkZWZpbmVkKE9TX1dJTikKLSAg
aW50MzIgbWFqb3JfdmVyc2lvbiA9IDA7Ci0gIGludDMyIG1pbm9yX3ZlcnNpb24gPSAwOwotICBp
bnQzMiBidWdmaXhfdmVyc2lvbiA9IDA7Ci0gIGJhc2U6OlN5c0luZm86Ok9wZXJhdGluZ1N5c3Rl
bVZlcnNpb25OdW1iZXJzKAotICAgICAgJm1ham9yX3ZlcnNpb24sICZtaW5vcl92ZXJzaW9uLCAm
YnVnZml4X3ZlcnNpb24pOwotICBpZiAobWFqb3JfdmVyc2lvbiA9PSA1KQotICAgIHJldHVybiBH
UFVUZXN0Q29uZmlnOjprT3NXaW5YUDsKLSAgaWYgKG1ham9yX3ZlcnNpb24gPT0gNiAmJiBtaW5v
cl92ZXJzaW9uID09IDApCi0gICAgcmV0dXJuIEdQVVRlc3RDb25maWc6OmtPc1dpblZpc3RhOwot
ICBpZiAobWFqb3JfdmVyc2lvbiA9PSA2ICYmIG1pbm9yX3ZlcnNpb24gPT0gMSkKLSAgICByZXR1
cm4gR1BVVGVzdENvbmZpZzo6a09zV2luNzsKLSAgaWYgKG1ham9yX3ZlcnNpb24gPT0gNiAmJiAo
bWlub3JfdmVyc2lvbiA9PSAyIHx8IG1pbm9yX3ZlcnNpb24gPT0gMykpCi0gICAgcmV0dXJuIEdQ
VVRlc3RDb25maWc6OmtPc1dpbjg7Ci0gIGlmIChtYWpvcl92ZXJzaW9uID09IDEwKQotICAgIHJl
dHVybiBHUFVUZXN0Q29uZmlnOjprT3NXaW4xMDsKLSNlbGlmIGRlZmluZWQoT1NfTUFDT1NYKQot
ICBpbnQzMiBtYWpvcl92ZXJzaW9uID0gMDsKLSAgaW50MzIgbWlub3JfdmVyc2lvbiA9IDA7Ci0g
IGludDMyIGJ1Z2ZpeF92ZXJzaW9uID0gMDsKLSAgYmFzZTo6U3lzSW5mbzo6T3BlcmF0aW5nU3lz
dGVtVmVyc2lvbk51bWJlcnMoCi0gICAgICAmbWFqb3JfdmVyc2lvbiwgJm1pbm9yX3ZlcnNpb24s
ICZidWdmaXhfdmVyc2lvbik7Ci0gIGlmIChtYWpvcl92ZXJzaW9uID09IDEwKSB7Ci0gICAgc3dp
dGNoIChtaW5vcl92ZXJzaW9uKSB7Ci0gICAgICBjYXNlIDU6Ci0gICAgICAgIHJldHVybiBHUFVU
ZXN0Q29uZmlnOjprT3NNYWNMZW9wYXJkOwotICAgICAgY2FzZSA2OgotICAgICAgICByZXR1cm4g
R1BVVGVzdENvbmZpZzo6a09zTWFjU25vd0xlb3BhcmQ7Ci0gICAgICBjYXNlIDc6Ci0gICAgICAg
IHJldHVybiBHUFVUZXN0Q29uZmlnOjprT3NNYWNMaW9uOwotICAgICAgY2FzZSA4OgotICAgICAg
ICByZXR1cm4gR1BVVGVzdENvbmZpZzo6a09zTWFjTW91bnRhaW5MaW9uOwotICAgICAgY2FzZSA5
OgotICAgICAgICByZXR1cm4gR1BVVGVzdENvbmZpZzo6a09zTWFjTWF2ZXJpY2tzOwotICAgICAg
Y2FzZSAxMDoKLSAgICAgICAgcmV0dXJuIEdQVVRlc3RDb25maWc6OmtPc01hY1lvc2VtaXRlOwot
ICAgICAgY2FzZSAxMToKLSAgICAgICAgcmV0dXJuIEdQVVRlc3RDb25maWc6OmtPc01hY0VsQ2Fw
aXRhbjsKLSAgICB9Ci0gIH0KLSNlbGlmIGRlZmluZWQoT1NfQU5EUk9JRCkKLSAgcmV0dXJuIEdQ
VVRlc3RDb25maWc6OmtPc0FuZHJvaWQ7Ci0jZW5kaWYKLSAgcmV0dXJuIEdQVVRlc3RDb25maWc6
OmtPc1Vua25vd247Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBhbm9ueW1vdXMKLQotR1BVVGVzdENv
bmZpZzo6R1BVVGVzdENvbmZpZygpCi0gICAgOiB2YWxpZGF0ZV9ncHVfaW5mb18odHJ1ZSksCi0g
ICAgICBvc18oa09zVW5rbm93biksCi0gICAgICBncHVfZGV2aWNlX2lkXygwKSwKLSAgICAgIGJ1
aWxkX3R5cGVfKGtCdWlsZFR5cGVVbmtub3duKSwKLSAgICAgIGFwaV8oa0FQSVVua25vd24pIHt9
Ci0KLUdQVVRlc3RDb25maWc6On5HUFVUZXN0Q29uZmlnKCkgewotfQotCi12b2lkIEdQVVRlc3RD
b25maWc6OnNldF9vcyhpbnQzMiBvcykgewotICBEQ0hFQ0tfRVEoMCwgb3MgJiB+KGtPc0FuZHJv
aWQgfCBrT3NXaW4gfCBrT3NNYWMgfCBrT3NMaW51eCB8IGtPc0Nocm9tZU9TKSk7Ci0gIG9zXyA9
IG9zOwotfQotCi12b2lkIEdQVVRlc3RDb25maWc6OkFkZEdQVVZlbmRvcih1aW50MzIgZ3B1X3Zl
bmRvcikgewotICBEQ0hFQ0tfTkUoMHUsIGdwdV92ZW5kb3IpOwotICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGdwdV92ZW5kb3JfLnNpemUoKTsgKytpKQotICAgIERDSEVDS19ORShncHVfdmVuZG9y
X1tpXSwgZ3B1X3ZlbmRvcik7Ci0gIGdwdV92ZW5kb3JfLnB1c2hfYmFjayhncHVfdmVuZG9yKTsK
LX0KLQotdm9pZCBHUFVUZXN0Q29uZmlnOjpzZXRfZ3B1X2RldmljZV9pZCh1aW50MzIgaWQpIHsK
LSAgZ3B1X2RldmljZV9pZF8gPSBpZDsKLX0KLQotdm9pZCBHUFVUZXN0Q29uZmlnOjpzZXRfYnVp
bGRfdHlwZShpbnQzMiBidWlsZF90eXBlKSB7Ci0gIERDSEVDS19FUSgwLCBidWlsZF90eXBlICYg
fihrQnVpbGRUeXBlUmVsZWFzZSB8IGtCdWlsZFR5cGVEZWJ1ZykpOwotICBidWlsZF90eXBlXyA9
IGJ1aWxkX3R5cGU7Ci19Ci0KLXZvaWQgR1BVVGVzdENvbmZpZzo6c2V0X2FwaShpbnQzMiBhcGkp
IHsKLSAgRENIRUNLX0VRKDAsIGFwaSAmIH4oa0FQSUQzRDkgfCBrQVBJRDNEMTEgfCBrQVBJR0xE
ZXNrdG9wIHwga0FQSUdMRVMpKTsKLSAgYXBpXyA9IGFwaTsKLX0KLQotYm9vbCBHUFVUZXN0Q29u
ZmlnOjpJc1ZhbGlkKCkgY29uc3QgewotICBpZiAoIXZhbGlkYXRlX2dwdV9pbmZvXykKLSAgICBy
ZXR1cm4gdHJ1ZTsKLSAgaWYgKGdwdV9kZXZpY2VfaWRfICE9IDAgJiYgKGdwdV92ZW5kb3JfLnNp
emUoKSAhPSAxIHx8IGdwdV92ZW5kb3JfWzBdID09IDApKQotICAgIHJldHVybiBmYWxzZTsKLSAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgR1BVVGVzdENvbmZpZzo6T3ZlcmxhcHNXaXRoKGNvbnN0
IEdQVVRlc3RDb25maWcmIGNvbmZpZykgY29uc3QgewotICBEQ0hFQ0soSXNWYWxpZCgpKTsKLSAg
RENIRUNLKGNvbmZpZy5Jc1ZhbGlkKCkpOwotICBpZiAoY29uZmlnLm9zXyAhPSBrT3NVbmtub3du
ICYmIG9zXyAhPSBrT3NVbmtub3duICYmCi0gICAgICAob3NfICYgY29uZmlnLm9zXykgPT0gMCkK
LSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChjb25maWcuZ3B1X3ZlbmRvcl8uc2l6ZSgpID4gMCAm
JiBncHVfdmVuZG9yXy5zaXplKCkgPiAwKSB7Ci0gICAgYm9vbCBzaGFyZWQgPSBmYWxzZTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbmZpZy5ncHVfdmVuZG9yXy5zaXplKCkgJiYgIXNo
YXJlZDsgKytpKSB7Ci0gICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGdwdV92ZW5kb3JfLnNp
emUoKTsgKytqKSB7Ci0gICAgICAgIGlmIChjb25maWcuZ3B1X3ZlbmRvcl9baV0gPT0gZ3B1X3Zl
bmRvcl9bal0pIHsKLSAgICAgICAgICBzaGFyZWQgPSB0cnVlOwotICAgICAgICAgIGJyZWFrOwot
ICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGlmICghc2hhcmVkKQotICAgICAgcmV0dXJu
IGZhbHNlOwotICB9Ci0gIGlmIChjb25maWcuZ3B1X2RldmljZV9pZF8gIT0gMCAmJiBncHVfZGV2
aWNlX2lkXyAhPSAwICYmCi0gICAgICBncHVfZGV2aWNlX2lkXyAhPSBjb25maWcuZ3B1X2Rldmlj
ZV9pZF8pCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAoY29uZmlnLmJ1aWxkX3R5cGVfICE9IGtC
dWlsZFR5cGVVbmtub3duICYmCi0gICAgICBidWlsZF90eXBlXyAhPSBrQnVpbGRUeXBlVW5rbm93
biAmJgotICAgICAgKGJ1aWxkX3R5cGVfICYgY29uZmlnLmJ1aWxkX3R5cGVfKSA9PSAwKQotICAg
IHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgR1BVVGVzdENvbmZpZzo6
RGlzYWJsZUdQVUluZm9WYWxpZGF0aW9uKCkgewotICB2YWxpZGF0ZV9ncHVfaW5mb18gPSBmYWxz
ZTsKLX0KLQotdm9pZCBHUFVUZXN0Q29uZmlnOjpDbGVhckdQVVZlbmRvcigpIHsKLSAgZ3B1X3Zl
bmRvcl8uY2xlYXIoKTsKLX0KLQotR1BVVGVzdEJvdENvbmZpZzo6fkdQVVRlc3RCb3RDb25maWco
KSB7Ci19Ci0KLXZvaWQgR1BVVGVzdEJvdENvbmZpZzo6QWRkR1BVVmVuZG9yKHVpbnQzMiBncHVf
dmVuZG9yKSB7Ci0gIERDSEVDS19FUSgwdSwgR1BVVGVzdENvbmZpZzo6Z3B1X3ZlbmRvcigpLnNp
emUoKSk7Ci0gIEdQVVRlc3RDb25maWc6OkFkZEdQVVZlbmRvcihncHVfdmVuZG9yKTsKLX0KLQot
Ym9vbCBHUFVUZXN0Qm90Q29uZmlnOjpTZXRHUFVJbmZvKGNvbnN0IEdQVUluZm8mIGdwdV9pbmZv
KSB7Ci0gIERDSEVDSyh2YWxpZGF0ZV9ncHVfaW5mb18pOwotICBpZiAoZ3B1X2luZm8uZ3B1LmRl
dmljZV9pZCA9PSAwIHx8IGdwdV9pbmZvLmdwdS52ZW5kb3JfaWQgPT0gMCkKLSAgICByZXR1cm4g
ZmFsc2U7Ci0gIENsZWFyR1BVVmVuZG9yKCk7Ci0gIEFkZEdQVVZlbmRvcihncHVfaW5mby5ncHUu
dmVuZG9yX2lkKTsKLSAgc2V0X2dwdV9kZXZpY2VfaWQoZ3B1X2luZm8uZ3B1LmRldmljZV9pZCk7
Ci0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIEdQVVRlc3RCb3RDb25maWc6OklzVmFsaWQoKSBj
b25zdCB7Ci0gIHN3aXRjaCAob3MoKSkgewotICAgIGNhc2Uga09zV2luWFA6Ci0gICAgY2FzZSBr
T3NXaW5WaXN0YToKLSAgICBjYXNlIGtPc1dpbjc6Ci0gICAgY2FzZSBrT3NXaW44OgotICAgIGNh
c2Uga09zV2luMTA6Ci0gICAgY2FzZSBrT3NNYWNMZW9wYXJkOgotICAgIGNhc2Uga09zTWFjU25v
d0xlb3BhcmQ6Ci0gICAgY2FzZSBrT3NNYWNMaW9uOgotICAgIGNhc2Uga09zTWFjTW91bnRhaW5M
aW9uOgotICAgIGNhc2Uga09zTWFjTWF2ZXJpY2tzOgotICAgIGNhc2Uga09zTWFjWW9zZW1pdGU6
Ci0gICAgY2FzZSBrT3NNYWNFbENhcGl0YW46Ci0gICAgY2FzZSBrT3NMaW51eDoKLSAgICBjYXNl
IGtPc0Nocm9tZU9TOgotICAgIGNhc2Uga09zQW5kcm9pZDoKLSAgICAgIGJyZWFrOwotICAgIGRl
ZmF1bHQ6Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgaWYgKHZhbGlkYXRlX2dwdV9pbmZv
XykgewotICAgIGlmIChncHVfdmVuZG9yKCkuc2l6ZSgpICE9IDEgfHwgZ3B1X3ZlbmRvcigpWzBd
ID09IDApCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGdwdV9kZXZpY2VfaWQoKSA9PSAw
KQotICAgICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIHN3aXRjaCAoYnVpbGRfdHlwZSgpKSB7Ci0g
ICAgY2FzZSBrQnVpbGRUeXBlUmVsZWFzZToKLSAgICBjYXNlIGtCdWlsZFR5cGVEZWJ1ZzoKLSAg
ICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLSAgcmV0
dXJuIHRydWU7Ci19Ci0KLWJvb2wgR1BVVGVzdEJvdENvbmZpZzo6TWF0Y2hlcyhjb25zdCBHUFVU
ZXN0Q29uZmlnJiBjb25maWcpIGNvbnN0IHsKLSAgRENIRUNLKElzVmFsaWQoKSk7Ci0gIERDSEVD
Syhjb25maWcuSXNWYWxpZCgpKTsKLSAgaWYgKGNvbmZpZy5vcygpICE9IGtPc1Vua25vd24gJiYg
KG9zKCkgJiBjb25maWcub3MoKSkgPT0gMCkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChjb25m
aWcuZ3B1X3ZlbmRvcigpLnNpemUoKSA+IDApIHsKLSAgICBib29sIGNvbnRhaW5lZCA9IGZhbHNl
OwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29uZmlnLmdwdV92ZW5kb3IoKS5zaXplKCk7
ICsraSkgewotICAgICAgaWYgKGNvbmZpZy5ncHVfdmVuZG9yKClbaV0gPT0gZ3B1X3ZlbmRvcigp
WzBdKSB7Ci0gICAgICAgIGNvbnRhaW5lZCA9IHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
fQotICAgIH0KLSAgICBpZiAoIWNvbnRhaW5lZCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgfQot
ICBpZiAoY29uZmlnLmdwdV9kZXZpY2VfaWQoKSAhPSAwICYmCi0gICAgICBncHVfZGV2aWNlX2lk
KCkgIT0gY29uZmlnLmdwdV9kZXZpY2VfaWQoKSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIGlmIChj
b25maWcuYnVpbGRfdHlwZSgpICE9IGtCdWlsZFR5cGVVbmtub3duICYmCi0gICAgICAoYnVpbGRf
dHlwZSgpICYgY29uZmlnLmJ1aWxkX3R5cGUoKSkgPT0gMCkKLSAgICByZXR1cm4gZmFsc2U7Ci0g
IGlmIChjb25maWcuYXBpKCkgIT0gMCAmJiAoYXBpKCkgJiBjb25maWcuYXBpKCkpID09IDApCi0g
ICAgcmV0dXJuIGZhbHNlOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBHUFVUZXN0Qm90Q29u
ZmlnOjpNYXRjaGVzKGNvbnN0IHN0ZDo6c3RyaW5nJiBjb25maWdfZGF0YSkgY29uc3QgewotICBH
UFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyIHBhcnNlcjsKLSAgR1BVVGVzdENvbmZpZyBjb25maWc7
Ci0KLSAgaWYgKCFwYXJzZXIuUGFyc2VDb25maWcoY29uZmlnX2RhdGEsICZjb25maWcpKQotICAg
IHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIE1hdGNoZXMoY29uZmlnKTsKLX0KLQotYm9vbCBHUFVU
ZXN0Qm90Q29uZmlnOjpMb2FkQ3VycmVudENvbmZpZyhjb25zdCBHUFVJbmZvICpncHVfaW5mbykK
LXsKLSAgICBib29sIHJ0OwotICAgIGlmIChncHVfaW5mbyA9PSBOVUxMKQotICAgIHsKLSAgICAg
ICAgR1BVSW5mbyBteV9ncHVfaW5mbzsKLSAgICAgICAgQ29sbGVjdEluZm9SZXN1bHQgcmVzdWx0
ID0KLSAgICAgICAgICAgIENvbGxlY3RHcHVJRCgmbXlfZ3B1X2luZm8uZ3B1LnZlbmRvcl9pZCwg
Jm15X2dwdV9pbmZvLmdwdS5kZXZpY2VfaWQpOwotICAgICAgICBpZiAocmVzdWx0ICE9IGtDb2xs
ZWN0SW5mb1N1Y2Nlc3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIExPRyhFUlJPUikgPDwgIkZh
aWwgdG8gaWRlbnRpZnkgR1BVXG4iOwotICAgICAgICAgICAgRGlzYWJsZUdQVUluZm9WYWxpZGF0
aW9uKCk7Ci0gICAgICAgICAgICBydCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQot
ICAgICAgICB7Ci0gICAgICAgICAgICBydCA9IFNldEdQVUluZm8obXlfZ3B1X2luZm8pOwotICAg
ICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJ0ID0gU2V0R1BVSW5mbygq
Z3B1X2luZm8pOwotICAgIH0KLSAgICBzZXRfb3MoR2V0Q3VycmVudE9TKCkpOwotICAgIGlmIChv
cygpID09IGtPc1Vua25vd24pCi0gICAgewotICAgICAgICBMT0coRVJST1IpIDw8ICJVbmtub3du
IE9TXG4iOwotICAgICAgICBydCA9IGZhbHNlOwotICAgIH0KLSNpZiBkZWZpbmVkKE5ERUJVRykK
LSAgICBzZXRfYnVpbGRfdHlwZShrQnVpbGRUeXBlUmVsZWFzZSk7Ci0jZWxzZQotICAgIHNldF9i
dWlsZF90eXBlKGtCdWlsZFR5cGVEZWJ1Zyk7Ci0jZW5kaWYKLSAgICByZXR1cm4gcnQ7Ci19Ci0K
LS8vIHN0YXRpYwotYm9vbCBHUFVUZXN0Qm90Q29uZmlnOjpDdXJyZW50Q29uZmlnTWF0Y2hlcyhj
b25zdCBzdGQ6OnN0cmluZyYgY29uZmlnX2RhdGEpIHsKLSAgR1BVVGVzdEJvdENvbmZpZyBteV9j
b25maWc7Ci0gIGlmICghbXlfY29uZmlnLkxvYWRDdXJyZW50Q29uZmlnKE5VTEwpKQotICAgIHJl
dHVybiBmYWxzZTsKLSAgcmV0dXJuIG15X2NvbmZpZy5NYXRjaGVzKGNvbmZpZ19kYXRhKTsKLX0K
LQotLy8gc3RhdGljCi1ib29sIEdQVVRlc3RCb3RDb25maWc6OkN1cnJlbnRDb25maWdNYXRjaGVz
KAotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgY29uZmlncykgewotICBHUFVU
ZXN0Qm90Q29uZmlnIG15X2NvbmZpZzsKLSAgaWYgKCFteV9jb25maWcuTG9hZEN1cnJlbnRDb25m
aWcoTlVMTCkpCi0gICAgcmV0dXJuIGZhbHNlOwotICBmb3IgKHNpemVfdCBpID0gMCA7IGkgPCBj
b25maWdzLnNpemUoKTsgKytpKSB7Ci0gICAgaWYgKG15X2NvbmZpZy5NYXRjaGVzKGNvbmZpZ3Nb
aV0pKQotICAgICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgcmV0dXJuIGZhbHNlOwotfQotCi19ICAv
LyBuYW1lc3BhY2UgZ3B1Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmln
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rl
c3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0Y2JjMmMwN2U1MTc2OTIyOTQwNDc2ZmU0NmI5Njc3NGU0OTQwYzNkLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rl
c3RfY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotLy8gQ29weXJpZ2h0
IChjKSAyMDEyIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLQotI2lmbmRlZiBH
UFVfQ09ORklHX0dQVV9URVNUX0NPTkZJR19IXwotI2RlZmluZSBHUFVfQ09ORklHX0dQVV9URVNU
X0NPTkZJR19IXwotCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2lu
Y2x1ZGUgImFuZ2xlX2NvbmZpZy5oIgotCi1uYW1lc3BhY2UgZ3B1IHsKLQotc3RydWN0IEdQVUlu
Zm87Ci0KLWNsYXNzIEdQVV9FWFBPUlQgR1BVVGVzdENvbmZpZyB7Ci0gcHVibGljOgotICBlbnVt
IE9TIHsKLSAgICBrT3NVbmtub3duID0gMCwKLSAgICBrT3NXaW5YUCA9IDEgPDwgMCwKLSAgICBr
T3NXaW5WaXN0YSA9IDEgPDwgMSwKLSAgICBrT3NXaW43ID0gMSA8PCAyLAotICAgIGtPc1dpbjgg
PSAxIDw8IDMsCi0gICAga09zTWFjTGVvcGFyZCA9IDEgPDwgNCwKLSAgICBrT3NNYWNTbm93TGVv
cGFyZCA9IDEgPDwgNSwKLSAgICBrT3NNYWNMaW9uID0gMSA8PCA2LAotICAgIGtPc01hY01vdW50
YWluTGlvbiA9IDEgPDwgNywKLSAgICBrT3NNYWNNYXZlcmlja3MgPSAxIDw8IDgsCi0gICAga09z
TWFjWW9zZW1pdGUgPSAxIDw8IDksCi0gICAga09zTWFjRWxDYXBpdGFuID0gMSA8PCAxMCwKLSAg
ICBrT3NNYWMgPSBrT3NNYWNMZW9wYXJkIHwga09zTWFjU25vd0xlb3BhcmQgfCBrT3NNYWNMaW9u
IHwKLSAgICAgICAgICAgICBrT3NNYWNNb3VudGFpbkxpb24gfCBrT3NNYWNNYXZlcmlja3MgfCBr
T3NNYWNZb3NlbWl0ZSB8Ci0gICAgICAgICAgICAga09zTWFjRWxDYXBpdGFuLAotICAgIGtPc0xp
bnV4ID0gMSA8PCAxMSwKLSAgICBrT3NDaHJvbWVPUyA9IDEgPDwgMTIsCi0gICAga09zQW5kcm9p
ZCA9IDEgPDwgMTMsCi0gICAga09zV2luMTAgPSAxIDw8IDE0LAotICAgIGtPc1dpbiA9IGtPc1dp
blhQIHwga09zV2luVmlzdGEgfCBrT3NXaW43IHwga09zV2luOCB8IGtPc1dpbjEwLAotICB9Owot
Ci0gIGVudW0gQnVpbGRUeXBlIHsKLSAgICBrQnVpbGRUeXBlVW5rbm93biA9IDAsCi0gICAga0J1
aWxkVHlwZVJlbGVhc2UgPSAxIDw8IDAsCi0gICAga0J1aWxkVHlwZURlYnVnID0gMSA8PCAxLAot
ICB9OwotCi0gIGVudW0gQVBJIHsKLSAgICBrQVBJVW5rbm93biA9IDAsCi0gICAga0FQSUQzRDkg
PSAxIDw8IDAsCi0gICAga0FQSUQzRDExID0gMSA8PCAxLAotICAgIGtBUElHTERlc2t0b3AgPSAx
IDw8IDIsCi0gICAga0FQSUdMRVMgPSAxIDw8IDMsCi0gIH07Ci0KLSAgR1BVVGVzdENvbmZpZygp
OwotICB2aXJ0dWFsIH5HUFVUZXN0Q29uZmlnKCk7Ci0KLSAgdm9pZCBzZXRfb3MoaW50MzIgb3Mp
OwotICB2b2lkIHNldF9ncHVfZGV2aWNlX2lkKHVpbnQzMiBpZCk7Ci0gIHZvaWQgc2V0X2J1aWxk
X3R5cGUoaW50MzIgYnVpbGRfdHlwZSk7Ci0gIHZvaWQgc2V0X2FwaShpbnQzMiBhcGkpOwotCi0g
IHZpcnR1YWwgdm9pZCBBZGRHUFVWZW5kb3IodWludDMyIGdwdV92ZW5kb3IpOwotCi0gIGludDMy
IG9zKCkgY29uc3QgeyByZXR1cm4gb3NfOyB9Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQzMj4m
IGdwdV92ZW5kb3IoKSBjb25zdCB7IHJldHVybiBncHVfdmVuZG9yXzsgfQotICB1aW50MzIgZ3B1
X2RldmljZV9pZCgpIGNvbnN0IHsgcmV0dXJuIGdwdV9kZXZpY2VfaWRfOyB9Ci0gIGludDMyIGJ1
aWxkX3R5cGUoKSBjb25zdCB7IHJldHVybiBidWlsZF90eXBlXzsgfQotICBpbnQzMiBhcGkoKSBj
b25zdCB7IHJldHVybiBhcGlfOyB9Ci0KLSAgLy8gQ2hlY2sgaWYgdGhlIGNvbmZpZyBpcyB2YWxp
ZC4gRm9yIGV4YW1wbGUsIGlmIGdwdV9kZXZpY2VfaWRfIGlzIHNldCwgYnV0Ci0gIC8vIGdwdV92
ZW5kb3JfIGlzIHVua25vd24sIHRoZW4gaXQncyBpbnZhbGlkLgotICB2aXJ0dWFsIGJvb2wgSXNW
YWxpZCgpIGNvbnN0OwotCi0gIC8vIENoZWNrIGlmIHR3byBjb25maWdzIG92ZXJsYXAsIGkuZS4s
IGlmIHRoZXJlIGV4aXN0cyBhIGNvbmZpZyB0aGF0IG1hdGNoZXMKLSAgLy8gYm90aCBjb25maWdz
LgotICBib29sIE92ZXJsYXBzV2l0aChjb25zdCBHUFVUZXN0Q29uZmlnJiBjb25maWcpIGNvbnN0
OwotCi0gIC8vIERpc2FibGUgdmFsaWRhdGlvbiBvZiBHUFUgdmVuZG9yIGFuZCBkZXZpY2UgaWRz
LgotICB2b2lkIERpc2FibGVHUFVJbmZvVmFsaWRhdGlvbigpOwotCi0gcHJvdGVjdGVkOgotICB2
b2lkIENsZWFyR1BVVmVuZG9yKCk7Ci0KLSAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIE9TIGhhcyB0
aGUgbm90aW9uIG9mIGEgbnVtZXJpYyBHUFUgdmVuZG9yIGFuZCBkZXZpY2UgaWQKLSAgLy8gYW5k
IHRoaXMgZGF0YSBzaG91bGQgYmUgdmFsaWRhdGVkLgotICBib29sIHZhbGlkYXRlX2dwdV9pbmZv
XzsKLQotIHByaXZhdGU6Ci0gIC8vIG9wZXJhdGluZyBzeXN0ZW0uCi0gIGludDMyIG9zXzsKLQot
ICAvLyBHUFUgdmVuZG9yLgotICBzdGQ6OnZlY3Rvcjx1aW50MzI+IGdwdV92ZW5kb3JfOwotCi0g
IC8vIEdQVSBkZXZpY2UgaWQgKHVuaXF1ZSB0byBlYWNoIHZlbmRvcikuCi0gIHVpbnQzMiBncHVf
ZGV2aWNlX2lkXzsKLQotICAvLyBSZWxlYXNlIG9yIERlYnVnLgotICBpbnQzMiBidWlsZF90eXBl
XzsKLQotICAvLyBCYWNrLWVuZCByZW5kZXJpbmcgQVBJcy4KLSAgaW50MzIgYXBpXzsKLX07Ci0K
LWNsYXNzIEdQVV9FWFBPUlQgR1BVVGVzdEJvdENvbmZpZyA6IHB1YmxpYyBHUFVUZXN0Q29uZmln
IHsKLSBwdWJsaWM6Ci0gIEdQVVRlc3RCb3RDb25maWcoKSB7IH0KLSAgfkdQVVRlc3RCb3RDb25m
aWcoKSBvdmVycmlkZTsKLQotICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIG5v
IGdwdV92ZW5kb3IgaXMgYWRkZWQuCi0gIHZvaWQgQWRkR1BVVmVuZG9yKHVpbnQzMiBncHVfdmVu
ZG9yKSBvdmVycmlkZTsKLQotICAvLyBSZXR1cm4gZmFsc2UgaWYgZ3B1X2luZm8gZG9lcyBub3Qg
aGF2ZSB2YWxpZCB2ZW5kb3JfaWQgYW5kIGRldmljZV9pZC4KLSAgYm9vbCBTZXRHUFVJbmZvKGNv
bnN0IEdQVUluZm8mIGdwdV9pbmZvKTsKLQotICAvLyBDaGVjayBpZiB0aGUgYm90IGNvbmZpZyBp
cyB2YWxpZCwgaS5lLiwgaWYgaXQgaXMgb25lIHZhbGlkIHRlc3QtYm90Ci0gIC8vIGVudmlyb25t
ZW50LiBGb3IgZXhhbXBsZSwgaWYgYSBmaWVsZCBpcyB1bmtub3duLCBvciBpZiBPUyBpcyBub3Qg
b25lCi0gIC8vIGZ1bGx5IGRlZmluZWQgT1MsIHRoZW4gaXQncyB2YWxpZC4KLSAgYm9vbCBJc1Zh
bGlkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgLy8gQ2hlY2sgaWYgYSBib3QgY29uZmlnIG1hdGNo
ZXMgYSB0ZXN0IGNvbmZpZywgaS5lLiwgdGhlIHRlc3QgY29uZmlnIGlzIGEKLSAgLy8gc3VwZXJz
ZXQgb2YgdGhlIGJvdCBjb25maWcuCi0gIGJvb2wgTWF0Y2hlcyhjb25zdCBHUFVUZXN0Q29uZmln
JiBjb25maWcpIGNvbnN0OwotICBib29sIE1hdGNoZXMoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZp
Z19kYXRhKSBjb25zdDsKLQotICAvLyBTZXR1cCB0aGUgY29uZmlnIHdpdGggdGhlIGN1cnJlbnQg
Z3B1IHRlc3RpbmcgZW52aXJvbm1lbnQuCi0gIC8vIElmIGdwdV9pbmZvIGlzIE5VTEwsIGNvbGxl
Y3QgR1BVSW5mbyBmaXJzdC4KLSAgYm9vbCBMb2FkQ3VycmVudENvbmZpZyhjb25zdCBHUFVJbmZv
KiBncHVfaW5mbyk7Ci0KLSAgLy8gQ2hlY2sgaWYgdGhpcyBib3QncyBjb25maWcgbWF0Y2hlcyB8
Y29uZmlnX2RhdGF8IG9yIGFueSBvZiB0aGUgfGNvbmZpZ3N8LgotICBzdGF0aWMgYm9vbCBDdXJy
ZW50Q29uZmlnTWF0Y2hlcyhjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnX2RhdGEpOwotICBzdGF0
aWMgYm9vbCBDdXJyZW50Q29uZmlnTWF0Y2hlcyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4mIGNvbmZpZ3MpOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGdwdQotCi0jZW5kaWYgIC8vIEdQ
VV9DT05GSUdfR1BVX1RFU1RfQ09ORklHX0hfCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1
X3Rlc3RfY29uZmlnX21hYy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Ro
aXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWdfbWFjLmgKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMjJiZDZlZTExMjFkMGZjYTJmOTJiNGIzNTY2
ZDI4MTMxNzg1MzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0
X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWdfbWFjLmgKKysrIC9kZXYvbnVsbApAQCAtMSwy
OCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gZ3B1X3Rlc3RfY29uZmlnX21hYy5oOgotLy8gICBIZWxw
ZXIgZnVuY3Rpb25zIGZvciBncHVfdGVzdF9jb25maWcgdGhhdCBoYXZlIHRvIGJlIGNvbXBpbGVk
IGluIE9iamVjdGl2ZUMrKwotLy8KLQotI2lmbmRlZiBHUFVfVEVTVF9FWFBFQ1RBVElPTlNfR1BV
X1RFU1RfQ09ORklHX01BQ19IXwotI2RlZmluZSBHUFVfVEVTVF9FWFBFQ1RBVElPTlNfR1BVX1RF
U1RfQ09ORklHX01BQ19IXwotCi0jaW5jbHVkZSAiZ3B1X2luZm8uaCIKLQotbmFtZXNwYWNlIGJh
c2UgewotCi1jbGFzcyBTeXNJbmZvCi17Ci0gIHB1YmxpYzoKLSAgICBzdGF0aWMgdm9pZCBPcGVy
YXRpbmdTeXN0ZW1WZXJzaW9uTnVtYmVycygKLSAgICAgICAgaW50MzIgKm1ham9yX3ZlcnNpb24s
IGludDMyICptaW5vcl92ZXJzaW9uLCBpbnQzMiAqYnVnZml4X3ZlcnNpb24pOwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgYmFzZQotCi1ncHU6OkdQVUluZm86OkdQVURldmljZSBHZXRBY3RpdmVHUFUo
KTsKLQotI2VuZGlmIC8vIEdQVV9URVNUX0VYUEVDVEFUSU9OU19HUFVfVEVTVF9DT05GSUdfTUFD
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRf
cGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2NvbmZpZ19tYWMubW0gYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0
YXRpb25zL2dwdV90ZXN0X2NvbmZpZ19tYWMubW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDhjYmQ0OTg5NGJjMDZmMjgyY2U3NjBkZjNlNDRkNzc3MzRjOWY0ZjguLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9j
b25maWdfbWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLy8gQ29weXJpZ2h0
IChjKSAyMDEyIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLQotLy8gZ3B1X3Rl
c3RfY29uZmlnX21hYy5tbToKLS8vICAgSGVscGVyIGZ1bmN0aW9ucyBmb3IgZ3B1X3Rlc3RfY29u
ZmlnIHRoYXQgaGF2ZSB0byBiZSBjb21waWxlZCBpbiBPYmplY3RpdmVDKysKLQotI2luY2x1ZGUg
ImdwdV90ZXN0X2NvbmZpZ19tYWMuaCIKLQotI2ltcG9ydCA8Q29jb2EvQ29jb2EuaD4KLQotbmFt
ZXNwYWNlIGJhc2UgewotCi12b2lkIFN5c0luZm86Ok9wZXJhdGluZ1N5c3RlbVZlcnNpb25OdW1i
ZXJzKAotICAgIGludDMyICptYWpvcl92ZXJzaW9uLCBpbnQzMiAqbWlub3JfdmVyc2lvbiwgaW50
MzIgKmJ1Z2ZpeF92ZXJzaW9uKQotewotI2lmIE1BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVE
IDwgTUFDX09TX1hfVkVSU0lPTl8xMF84Ci0gIEdlc3RhbHQoZ2VzdGFsdFN5c3RlbVZlcnNpb25N
YWpvciwgcmVpbnRlcnByZXRfY2FzdDxTSW50MzIqPihtYWpvcl92ZXJzaW9uKSk7Ci0gIEdlc3Rh
bHQoZ2VzdGFsdFN5c3RlbVZlcnNpb25NaW5vciwgcmVpbnRlcnByZXRfY2FzdDxTSW50MzIqPiht
aW5vcl92ZXJzaW9uKSk7Ci0gIEdlc3RhbHQoZ2VzdGFsdFN5c3RlbVZlcnNpb25CdWdGaXgsIHJl
aW50ZXJwcmV0X2Nhc3Q8U0ludDMyKj4oYnVnZml4X3ZlcnNpb24pKTsKLSNlbHNlCi0gIE5TT3Bl
cmF0aW5nU3lzdGVtVmVyc2lvbiB2ZXJzaW9uID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZv
XSBvcGVyYXRpbmdTeXN0ZW1WZXJzaW9uXTsKLSAgKm1ham9yX3ZlcnNpb24gPSB2ZXJzaW9uLm1h
am9yVmVyc2lvbjsKLSAgKm1pbm9yX3ZlcnNpb24gPSB2ZXJzaW9uLm1pbm9yVmVyc2lvbjsKLSAg
KmJ1Z2ZpeF92ZXJzaW9uID0gdmVyc2lvbi5wYXRjaFZlcnNpb247Ci0jZW5kaWYKLX0KLQotfSAv
LyBuYW1lc3BhY2UgYmFzZQotCi1VSW50MzIgR2V0RW50cnlQcm9wZXJ0eShpb19yZWdpc3RyeV9l
bnRyeV90IGVudHJ5LCBDRlN0cmluZ1JlZiBwcm9wZXJ0eV9uYW1lKSB7Ci0gIENGVHlwZVJlZiB0
eXBlID0gSU9SZWdpc3RyeUVudHJ5U2VhcmNoQ0ZQcm9wZXJ0eShlbnRyeSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtJT1NlcnZpY2VQbGFuZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3Bl
cnR5X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBrQ0ZBbGxvY2F0b3JEZWZhdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga0lPUmVnaXN0cnlJdGVyYXRlUmVjdXJzaXZlbHkgfCBrSU9S
ZWdpc3RyeUl0ZXJhdGVQYXJlbnRzKTsKLSAgQ0ZEYXRhUmVmIGRhdGEgPSByZWludGVycHJldF9j
YXN0PENGRGF0YVJlZj4odHlwZSk7Ci0gIGlmICghZGF0YSkgewotICAgIENGUmVsZWFzZShkYXRh
KTsKLSAgICByZXR1cm4gMDsKLSAgfQotCi0gIFVJbnQzMiB2YWx1ZSA9IDA7Ci0gIGNvbnN0IHVp
bnQzMl90KiB2YWx1ZVBvaW50ZXIgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4o
Q0ZEYXRhR2V0Qnl0ZVB0cihkYXRhKSk7Ci0gIGlmICh2YWx1ZVBvaW50ZXIgIT0gTlVMTCkgewot
ICAgIHZhbHVlID0gKnZhbHVlUG9pbnRlcjsKLSAgfQotICBDRlJlbGVhc2UoZGF0YSk7Ci0gIHJl
dHVybiB2YWx1ZTsKLX0KLQotZ3B1OjpHUFVJbmZvOjpHUFVEZXZpY2UgR2V0QWN0aXZlR1BVKCkg
ewotICBncHU6OkdQVUluZm86OkdQVURldmljZSBncHU7Ci0KLSAgLy8gSWdub3JlIHRoZSBmYWN0
IHRoYXQgQ0dEaXNwbGF5SU9TZXJ2aWNlUG9ydCBpcyBkZXByZWNhdGVkIGFzIEFwcGxlCi0gIC8v
IGRpZCBub3QgcHJvdmlkZSBhIGdvb2QgcmVwbGFjZW1lbnQgZm9yIGl0IGFzIG9mIDEwLjEwLgot
ICAvLyBUT0RPKGN3YWxsZXopIHJldmlzaXQgd2l0aCBsYXRlciBzeXN0ZW1zCi0gICNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0gICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVk
ICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgotICAgIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgZHNw
X3BvcnQgPSBDR0Rpc3BsYXlJT1NlcnZpY2VQb3J0KGtDR0RpcmVjdE1haW5EaXNwbGF5KTsKLSAg
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAotCi0gIGdwdS52ZW5kb3JfaWQgPSBHZXRFbnRy
eVByb3BlcnR5KGRzcF9wb3J0LCBDRlNUUigidmVuZG9yLWlkIikpOwotICBncHUuZGV2aWNlX2lk
ID0gR2V0RW50cnlQcm9wZXJ0eShkc3BfcG9ydCwgQ0ZTVFIoImRldmljZS1pZCIpKTsKLSAgcmV0
dXJuIGdwdTsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9leHBlY3RhdGlv
bnNfcGFyc2VyLmNjIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3Bh
cnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9leHBlY3RhdGlvbnNfcGFyc2VyLmNj
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyM2M0ZDhjNDUzYjhjODUxMGNlZmMwYzQy
YjEwMGNmNThlMTRiNzYwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVf
dGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNlci5jYworKysgL2Rl
di9udWxsCkBAIC0xLDU4MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIENocm9t
aXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotCi0jaW5jbHVkZSAiZ3B1X3Rlc3RfZXhwZWN0YXRp
b25zX3BhcnNlci5oIgotCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKLQotbmFtZXNw
YWNlIGJhc2UgewotCi1uYW1lc3BhY2UgewotCi1ib29sIFN0YXJ0c1dpdGhBU0NJSShjb25zdCBz
dGQ6OnN0cmluZyYgc3RyLAotICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IHNlYXJjaCwKLSAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FzZV9zZW5zaXRpdmUpIHsKLSAg
QVNTRVJUKCFjYXNlX3NlbnNpdGl2ZSk7Ci0gIHJldHVybiBzdHIuY29tcGFyZSgwLCBzZWFyY2gu
bGVuZ3RoKCksIHNlYXJjaCkgPT0gMDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIENoYXI+IGlubGlu
ZSBDaGFyIFRvTG93ZXJBU0NJSShDaGFyIGMpIHsKLSAgcmV0dXJuIChjID49ICdBJyAmJiBjIDw9
ICdaJykgPyAoYyArICgnYScgLSAnQScpKSA6IGM7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEl0
ZXI+Ci1zdGF0aWMgaW5saW5lIGJvb2wgRG9Mb3dlckNhc2VFcXVhbHNBU0NJSShJdGVyIGFfYmVn
aW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyIGFfZW5k
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciog
YikgewotICBmb3IgKEl0ZXIgaXQgPSBhX2JlZ2luOyBpdCAhPSBhX2VuZDsgKytpdCwgKytiKSB7
Ci0gICAgaWYgKCEqYiB8fCBiYXNlOjpUb0xvd2VyQVNDSUkoKml0KSAhPSAqYikKLSAgICAgIHJl
dHVybiBmYWxzZTsKLSAgfQotICByZXR1cm4gKmIgPT0gMDsKLX0KLQotYm9vbCBMb3dlckNhc2VF
cXVhbHNBU0NJSShjb25zdCBzdGQ6OnN0cmluZyYgYSwgY29uc3QgY2hhciogYikgewotICByZXR1
cm4gRG9Mb3dlckNhc2VFcXVhbHNBU0NJSShhLmJlZ2luKCksIGEuZW5kKCksIGIpOwotfQotCi19
IC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotfSAvLyBuYW1lc3BhY2UgYmFzZQotCi1uYW1lc3Bh
Y2UgZ3B1IHsKLQotbmFtZXNwYWNlIHsKLQotZW51bSBMaW5lUGFyc2VyU3RhZ2UgewotICBrTGlu
ZVBhcnNlckJlZ2luID0gMCwKLSAga0xpbmVQYXJzZXJCdWdJRCwKLSAga0xpbmVQYXJzZXJDb25m
aWdzLAotICBrTGluZVBhcnNlckNvbG9uLAotICBrTGluZVBhcnNlclRlc3ROYW1lLAotICBrTGlu
ZVBhcnNlckVxdWFsLAotICBrTGluZVBhcnNlckV4cGVjdGF0aW9ucywKLX07Ci0KLWVudW0gVG9r
ZW4gewotICAvLyBvcwotICBrQ29uZmlnV2luWFAgPSAwLAotICBrQ29uZmlnV2luVmlzdGEsCi0g
IGtDb25maWdXaW43LAotICBrQ29uZmlnV2luOCwKLSAga0NvbmZpZ1dpbjEwLAotICBrQ29uZmln
V2luLAotICBrQ29uZmlnTWFjTGVvcGFyZCwKLSAga0NvbmZpZ01hY1Nub3dMZW9wYXJkLAotICBr
Q29uZmlnTWFjTGlvbiwKLSAga0NvbmZpZ01hY01vdW50YWluTGlvbiwKLSAga0NvbmZpZ01hY01h
dmVyaWNrcywKLSAga0NvbmZpZ01hY1lvc2VtaXRlLAotICBrQ29uZmlnTWFjRWxDYXBpdGFuLAot
ICBrQ29uZmlnTWFjLAotICBrQ29uZmlnTGludXgsCi0gIGtDb25maWdDaHJvbWVPUywKLSAga0Nv
bmZpZ0FuZHJvaWQsCi0gIC8vIGdwdSB2ZW5kb3IKLSAga0NvbmZpZ05WaWRpYSwKLSAga0NvbmZp
Z0FNRCwKLSAga0NvbmZpZ0ludGVsLAotICBrQ29uZmlnVk1XYXJlLAotICAvLyBidWlsZCB0eXBl
Ci0gIGtDb25maWdSZWxlYXNlLAotICBrQ29uZmlnRGVidWcsCi0gIC8vIEFOR0xFIHJlbmRlcmVy
Ci0gIGtDb25maWdEM0Q5LAotICBrQ29uZmlnRDNEMTEsCi0gIGtDb25maWdHTERlc2t0b3AsCi0g
IGtDb25maWdHTEVTLAotICAvLyBleHBlY3RhdGlvbgotICBrRXhwZWN0YXRpb25QYXNzLAotICBr
RXhwZWN0YXRpb25GYWlsLAotICBrRXhwZWN0YXRpb25GbGFreSwKLSAga0V4cGVjdGF0aW9uVGlt
ZW91dCwKLSAga0V4cGVjdGF0aW9uU2tpcCwKLSAgLy8gc2VwYXJhdG9yCi0gIGtTZXBhcmF0b3JD
b2xvbiwKLSAga1NlcGFyYXRvckVxdWFsLAotCi0gIGtOdW1iZXJPZkV4YWN0TWF0Y2hUb2tlbnMs
Ci0KLSAgLy8gb3RoZXJzCi0gIGtDb25maWdHUFVEZXZpY2VJRCwKLSAga1Rva2VuQ29tbWVudCwK
LSAga1Rva2VuV29yZCwKLX07Ci0KLXN0cnVjdCBUb2tlbkluZm8gewotICBjb25zdCBjaGFyKiBu
YW1lOwotICBpbnQzMiBmbGFnOwotfTsKLQotY29uc3QgVG9rZW5JbmZvIGtUb2tlbkRhdGFbXSA9
IHsKLSAgICB7InhwIiwgR1BVVGVzdENvbmZpZzo6a09zV2luWFB9LAotICAgIHsidmlzdGEiLCBH
UFVUZXN0Q29uZmlnOjprT3NXaW5WaXN0YX0sCi0gICAgeyJ3aW43IiwgR1BVVGVzdENvbmZpZzo6
a09zV2luN30sCi0gICAgeyJ3aW44IiwgR1BVVGVzdENvbmZpZzo6a09zV2luOH0sCi0gICAgeyJ3
aW4xMCIsIEdQVVRlc3RDb25maWc6OmtPc1dpbjEwfSwKLSAgICB7IndpbiIsIEdQVVRlc3RDb25m
aWc6OmtPc1dpbn0sCi0gICAgeyJsZW9wYXJkIiwgR1BVVGVzdENvbmZpZzo6a09zTWFjTGVvcGFy
ZH0sCi0gICAgeyJzbm93bGVvcGFyZCIsIEdQVVRlc3RDb25maWc6OmtPc01hY1Nub3dMZW9wYXJk
fSwKLSAgICB7Imxpb24iLCBHUFVUZXN0Q29uZmlnOjprT3NNYWNMaW9ufSwKLSAgICB7Im1vdW50
YWlubGlvbiIsIEdQVVRlc3RDb25maWc6OmtPc01hY01vdW50YWluTGlvbn0sCi0gICAgeyJtYXZl
cmlja3MiLCBHUFVUZXN0Q29uZmlnOjprT3NNYWNNYXZlcmlja3N9LAotICAgIHsieW9zZW1pdGUi
LCBHUFVUZXN0Q29uZmlnOjprT3NNYWNZb3NlbWl0ZX0sCi0gICAgeyJlbGNhcGl0YW4iLCBHUFVU
ZXN0Q29uZmlnOjprT3NNYWNFbENhcGl0YW59LAotICAgIHsibWFjIiwgR1BVVGVzdENvbmZpZzo6
a09zTWFjfSwKLSAgICB7ImxpbnV4IiwgR1BVVGVzdENvbmZpZzo6a09zTGludXh9LAotICAgIHsi
Y2hyb21lb3MiLCBHUFVUZXN0Q29uZmlnOjprT3NDaHJvbWVPU30sCi0gICAgeyJhbmRyb2lkIiwg
R1BVVGVzdENvbmZpZzo6a09zQW5kcm9pZH0sCi0gICAgeyJudmlkaWEiLCAweDEwREV9LAotICAg
IHsiYW1kIiwgMHgxMDAyfSwKLSAgICB7ImludGVsIiwgMHg4MDg2fSwKLSAgICB7InZtd2FyZSIs
IDB4MTVhZH0sCi0gICAgeyJyZWxlYXNlIiwgR1BVVGVzdENvbmZpZzo6a0J1aWxkVHlwZVJlbGVh
c2V9LAotICAgIHsiZGVidWciLCBHUFVUZXN0Q29uZmlnOjprQnVpbGRUeXBlRGVidWd9LAotICAg
IHsiZDNkOSIsIEdQVVRlc3RDb25maWc6OmtBUElEM0Q5fSwKLSAgICB7ImQzZDExIiwgR1BVVGVz
dENvbmZpZzo6a0FQSUQzRDExfSwKLSAgICB7Im9wZW5nbCIsIEdQVVRlc3RDb25maWc6OmtBUElH
TERlc2t0b3B9LAotICAgIHsiZ2xlcyIsIEdQVVRlc3RDb25maWc6OmtBUElHTEVTfSwKLSAgICB7
InBhc3MiLCBHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjprR3B1VGVzdFBhc3N9LAotICAgIHsi
ZmFpbCIsIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OmtHcHVUZXN0RmFpbH0sCi0gICAgeyJm
bGFreSIsIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OmtHcHVUZXN0Rmxha3l9LAotICAgIHsi
dGltZW91dCIsIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OmtHcHVUZXN0VGltZW91dH0sCi0g
ICAgeyJza2lwIiwgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6a0dwdVRlc3RTa2lwfSwKLSAg
ICB7IjoiLCAwfSwKLSAgICB7Ij0iLCAwfSwKLX07Ci0KLWVudW0gRXJyb3JUeXBlIHsKLSAga0Vy
cm9yRmlsZUlPID0gMCwKLSAga0Vycm9ySWxsZWdhbEVudHJ5LAotICBrRXJyb3JJbnZhbGlkRW50
cnksCi0gIGtFcnJvckVudHJ5V2l0aE9zQ29uZmxpY3RzLAotICBrRXJyb3JFbnRyeVdpdGhHcHVW
ZW5kb3JDb25mbGljdHMsCi0gIGtFcnJvckVudHJ5V2l0aEJ1aWxkVHlwZUNvbmZsaWN0cywKLSAg
a0Vycm9yRW50cnlXaXRoQVBJQ29uZmxpY3RzLAotICBrRXJyb3JFbnRyeVdpdGhHcHVEZXZpY2VJ
ZENvbmZsaWN0cywKLSAga0Vycm9yRW50cnlXaXRoRXhwZWN0YXRpb25Db25mbGljdHMsCi0gIGtF
cnJvckVudHJpZXNPdmVybGFwLAotCi0gIGtOdW1iZXJPZkVycm9ycywKLX07Ci0KLWNvbnN0IGNo
YXIqIGtFcnJvck1lc3NhZ2VbXSA9IHsKLSAgICAiZmlsZSBJTyBmYWlsZWQiLAotICAgICJlbnRy
eSB3aXRoIHdyb25nIGZvcm1hdCIsCi0gICAgImVudHJ5IGludmFsaWQsIGxpa2VseSB3cm9uZyBt
b2RpZmllcnMgY29tYmluYXRpb24iLAotICAgICJlbnRyeSB3aXRoIE9TIG1vZGlmaWVyIGNvbmZs
aWN0cyIsCi0gICAgImVudHJ5IHdpdGggR1BVIHZlbmRvciBtb2RpZmllciBjb25mbGljdHMiLAot
ICAgICJlbnRyeSB3aXRoIEdQVSBidWlsZCB0eXBlIGNvbmZsaWN0cyIsCi0gICAgImVudHJ5IHdp
dGggR1BVIEFQSSBjb25mbGljdHMiLAotICAgICJlbnRyeSB3aXRoIEdQVSBkZXZpY2UgaWQgY29u
ZmxpY3RzIG9yIG1hbGZvcm1hdCIsCi0gICAgImVudHJ5IHdpdGggZXhwZWN0YXRpb24gbW9kaWZp
ZXIgY29uZmxpY3RzIiwKLSAgICAidHdvIGVudHJpZXMnIGNvbmZpZ3Mgb3ZlcmxhcCIsCi19Owot
Ci1Ub2tlbiBQYXJzZVRva2VuKGNvbnN0IHN0ZDo6c3RyaW5nJiB3b3JkKSB7Ci0gIGlmIChiYXNl
OjpTdGFydHNXaXRoQVNDSUkod29yZCwgIi8vIiwgZmFsc2UpKQotICAgIHJldHVybiBrVG9rZW5D
b21tZW50OwotICBpZiAoYmFzZTo6U3RhcnRzV2l0aEFTQ0lJKHdvcmQsICIweCIsIGZhbHNlKSkK
LSAgICByZXR1cm4ga0NvbmZpZ0dQVURldmljZUlEOwotCi0gIGZvciAoaW50MzIgaSA9IDA7IGkg
PCBrTnVtYmVyT2ZFeGFjdE1hdGNoVG9rZW5zOyArK2kpIHsKLSAgICBpZiAoYmFzZTo6TG93ZXJD
YXNlRXF1YWxzQVNDSUkod29yZCwga1Rva2VuRGF0YVtpXS5uYW1lKSkKLSAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxUb2tlbj4oaSk7Ci0gIH0KLSAgcmV0dXJuIGtUb2tlbldvcmQ7Ci19Ci0KLS8v
IHJlZmVyZW5jZSBuYW1lIGNhbiBoYXZlIHRoZSBsYXN0IGNoYXJhY3RlciBhcyAqLgotYm9vbCBO
YW1lc01hdGNoaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiByZWYsIGNvbnN0IHN0ZDo6c3RyaW5nJiB0
ZXN0X25hbWUpIHsKLSAgc2l6ZV90IGxlbiA9IHJlZi5sZW5ndGgoKTsKLSAgaWYgKGxlbiA9PSAw
KQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKHJlZltsZW4gLSAxXSA9PSAnKicpIHsKLSAgICBp
ZiAodGVzdF9uYW1lLmxlbmd0aCgpID4gbGVuIC0xICYmCi0gICAgICAgIHJlZi5jb21wYXJlKDAs
IGxlbiAtIDEsIHRlc3RfbmFtZSwgMCwgbGVuIC0gMSkgPT0gMCkKLSAgICAgIHJldHVybiB0cnVl
OwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICByZXR1cm4gKHJlZiA9PSB0ZXN0X25hbWUpOwot
fQotCi19ICAvLyBuYW1lc3BhY2UgYW5vbnltb3VzCi0KLUdQVVRlc3RFeHBlY3RhdGlvbnNQYXJz
ZXI6OkdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXIoKSB7Ci0gIC8vIFNvbWUgc2FuaXR5IGNoZWNr
LgotICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oa051bWJlck9mRXhh
Y3RNYXRjaFRva2VucykgPT0KLSAgICAgICAgICAgICAgICBzaXplb2Yoa1Rva2VuRGF0YSkgLyBz
aXplb2Yoa1Rva2VuRGF0YVswXSksICJzYW5pdHkgY2hlY2siKTsKLSAgc3RhdGljX2Fzc2VydChz
dGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGtOdW1iZXJPZkVycm9ycykgPT0KLSAgICAgICAgICAg
ICAgICBzaXplb2Yoa0Vycm9yTWVzc2FnZSkgLyBzaXplb2Yoa0Vycm9yTWVzc2FnZVswXSksICJz
YW5pdHkgY2hlY2siKTsKLX0KLQotR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6fkdQVVRlc3RF
eHBlY3RhdGlvbnNQYXJzZXIoKSB7Ci19Ci0KLWJvb2wgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNl
cjo6TG9hZFRlc3RFeHBlY3RhdGlvbnMoY29uc3Qgc3RkOjpzdHJpbmcmIGRhdGEpIHsKLSAgZW50
cmllc18uY2xlYXIoKTsKLSAgZXJyb3JfbWVzc2FnZXNfLmNsZWFyKCk7Ci0KLSAgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+IGxpbmVzID0gYmFzZTo6U3BsaXRTdHJpbmcoCi0gICAgICBkYXRhLCAi
XG4iLCBiYXNlOjpUUklNX1dISVRFU1BBQ0UsIGJhc2U6OlNQTElUX1dBTlRfQUxMKTsKLSAgYm9v
bCBydCA9IHRydWU7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGluZXMuc2l6ZSgpOyArK2kp
IHsKLSAgICBpZiAoIVBhcnNlTGluZShsaW5lc1tpXSwgaSArIDEpKQotICAgICAgcnQgPSBmYWxz
ZTsKLSAgfQotICBpZiAoRGV0ZWN0Q29uZmxpY3RzQmV0d2VlbkVudHJpZXMoKSkgewotICAgIGVu
dHJpZXNfLmNsZWFyKCk7Ci0gICAgcnQgPSBmYWxzZTsKLSAgfQotCi0gIHJldHVybiBydDsKLX0K
LQotYm9vbCBHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjpMb2FkVGVzdEV4cGVjdGF0aW9uc0Zy
b21GaWxlKAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoKSB7Ci0gIGVudHJpZXNfLmNsZWFy
KCk7Ci0gIGVycm9yX21lc3NhZ2VzXy5jbGVhcigpOwotCi0gIHN0ZDo6c3RyaW5nIGRhdGE7Ci0g
IGlmICghYmFzZTo6UmVhZEZpbGVUb1N0cmluZyhwYXRoLCAmZGF0YSkpIHsKLSAgICBlcnJvcl9t
ZXNzYWdlc18ucHVzaF9iYWNrKGtFcnJvck1lc3NhZ2Vba0Vycm9yRmlsZUlPXSk7Ci0gICAgcmV0
dXJuIGZhbHNlOwotICB9Ci0gIHJldHVybiBMb2FkVGVzdEV4cGVjdGF0aW9ucyhkYXRhKTsKLX0K
LQotaW50MzIgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6R2V0VGVzdEV4cGVjdGF0aW9uKAot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X25hbWUsCi0gICAgY29uc3QgR1BVVGVzdEJvdENv
bmZpZyYgYm90X2NvbmZpZykgY29uc3QgewotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVudHJp
ZXNfLnNpemUoKTsgKytpKSB7Ci0gICAgaWYgKE5hbWVzTWF0Y2hpbmcoZW50cmllc19baV0udGVz
dF9uYW1lLCB0ZXN0X25hbWUpICYmCi0gICAgICAgIGJvdF9jb25maWcuTWF0Y2hlcyhlbnRyaWVz
X1tpXS50ZXN0X2NvbmZpZykpCi0gICAgICByZXR1cm4gZW50cmllc19baV0udGVzdF9leHBlY3Rh
dGlvbjsKLSAgfQotICByZXR1cm4ga0dwdVRlc3RQYXNzOwotfQotCi1jb25zdCBzdGQ6OnZlY3Rv
cjxzdGQ6OnN0cmluZz4mCi1HUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjpHZXRFcnJvck1lc3Nh
Z2VzKCkgY29uc3QgewotICByZXR1cm4gZXJyb3JfbWVzc2FnZXNfOwotfQotCi1ib29sIEdQVVRl
c3RFeHBlY3RhdGlvbnNQYXJzZXI6OlBhcnNlQ29uZmlnKAotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBjb25maWdfZGF0YSwgR1BVVGVzdENvbmZpZyogY29uZmlnKSB7Ci0gIERDSEVDSyhjb25maWcp
OwotICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdG9rZW5zID0gYmFzZTo6U3BsaXRTdHJpbmco
Ci0gICAgICBjb25maWdfZGF0YSwgYmFzZTo6a1doaXRlc3BhY2VBU0NJSSwgYmFzZTo6S0VFUF9X
SElURVNQQUNFLAotICAgICAgYmFzZTo6U1BMSVRfV0FOVF9OT05FTVBUWSk7Ci0KLSAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB0b2tlbnMuc2l6ZSgpOyArK2kpIHsKLSAgICBUb2tlbiB0b2tlbiA9
IFBhcnNlVG9rZW4odG9rZW5zW2ldKTsKLSAgICBzd2l0Y2ggKHRva2VuKSB7Ci0gICAgICBjYXNl
IGtDb25maWdXaW5YUDoKLSAgICAgIGNhc2Uga0NvbmZpZ1dpblZpc3RhOgotICAgICAgY2FzZSBr
Q29uZmlnV2luNzoKLSAgICAgIGNhc2Uga0NvbmZpZ1dpbjg6Ci0gICAgICBjYXNlIGtDb25maWdX
aW4xMDoKLSAgICAgIGNhc2Uga0NvbmZpZ1dpbjoKLSAgICAgIGNhc2Uga0NvbmZpZ01hY0xlb3Bh
cmQ6Ci0gICAgICBjYXNlIGtDb25maWdNYWNTbm93TGVvcGFyZDoKLSAgICAgIGNhc2Uga0NvbmZp
Z01hY0xpb246Ci0gICAgICBjYXNlIGtDb25maWdNYWNNb3VudGFpbkxpb246Ci0gICAgICBjYXNl
IGtDb25maWdNYWNNYXZlcmlja3M6Ci0gICAgICBjYXNlIGtDb25maWdNYWNZb3NlbWl0ZToKLSAg
ICAgIGNhc2Uga0NvbmZpZ01hY0VsQ2FwaXRhbjoKLSAgICAgIGNhc2Uga0NvbmZpZ01hYzoKLSAg
ICAgIGNhc2Uga0NvbmZpZ0xpbnV4OgotICAgICAgY2FzZSBrQ29uZmlnQ2hyb21lT1M6Ci0gICAg
ICBjYXNlIGtDb25maWdBbmRyb2lkOgotICAgICAgY2FzZSBrQ29uZmlnTlZpZGlhOgotICAgICAg
Y2FzZSBrQ29uZmlnQU1EOgotICAgICAgY2FzZSBrQ29uZmlnSW50ZWw6Ci0gICAgICBjYXNlIGtD
b25maWdWTVdhcmU6Ci0gICAgICBjYXNlIGtDb25maWdSZWxlYXNlOgotICAgICAgY2FzZSBrQ29u
ZmlnRGVidWc6Ci0gICAgICBjYXNlIGtDb25maWdEM0Q5OgotICAgICAgY2FzZSBrQ29uZmlnRDNE
MTE6Ci0gICAgICBjYXNlIGtDb25maWdHTERlc2t0b3A6Ci0gICAgICBjYXNlIGtDb25maWdHTEVT
OgotICAgICAgY2FzZSBrQ29uZmlnR1BVRGV2aWNlSUQ6Ci0gICAgICAgIGlmICh0b2tlbiA9PSBr
Q29uZmlnR1BVRGV2aWNlSUQpIHsKLSAgICAgICAgICBpZiAoIVVwZGF0ZVRlc3RDb25maWcoY29u
ZmlnLCB0b2tlbnNbaV0sIDApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgIGlmICghVXBkYXRlVGVzdENvbmZpZyhjb25maWcsIHRva2VuLCAw
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsK
LSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLSAgcmV0
dXJuIHRydWU7Ci19Ci0KLWJvb2wgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6UGFyc2VMaW5l
KAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBsaW5lX2RhdGEsIHNpemVfdCBsaW5lX251bWJlcikg
ewotICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdG9rZW5zID0gYmFzZTo6U3BsaXRTdHJpbmco
Ci0gICAgICBsaW5lX2RhdGEsIGJhc2U6OmtXaGl0ZXNwYWNlQVNDSUksIGJhc2U6OktFRVBfV0hJ
VEVTUEFDRSwKLSAgICAgIGJhc2U6OlNQTElUX1dBTlRfTk9ORU1QVFkpOwotICBpbnQzMiBzdGFn
ZSA9IGtMaW5lUGFyc2VyQmVnaW47Ci0gIEdQVVRlc3RFeHBlY3RhdGlvbkVudHJ5IGVudHJ5Owot
ICBlbnRyeS5saW5lX251bWJlciA9IGxpbmVfbnVtYmVyOwotICBHUFVUZXN0Q29uZmlnJiBjb25m
aWcgPSBlbnRyeS50ZXN0X2NvbmZpZzsKLSAgYm9vbCBjb21tZW50c19lbmNvdW50ZXJlZCA9IGZh
bHNlOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRva2Vucy5zaXplKCkgJiYgIWNvbW1lbnRz
X2VuY291bnRlcmVkOyArK2kpIHsKLSAgICBUb2tlbiB0b2tlbiA9IFBhcnNlVG9rZW4odG9rZW5z
W2ldKTsKLSAgICBzd2l0Y2ggKHRva2VuKSB7Ci0gICAgICBjYXNlIGtUb2tlbkNvbW1lbnQ6Ci0g
ICAgICAgIGNvbW1lbnRzX2VuY291bnRlcmVkID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIGtDb25maWdXaW5YUDoKLSAgICAgIGNhc2Uga0NvbmZpZ1dpblZpc3RhOgotICAgICAg
Y2FzZSBrQ29uZmlnV2luNzoKLSAgICAgIGNhc2Uga0NvbmZpZ1dpbjg6Ci0gICAgICBjYXNlIGtD
b25maWdXaW4xMDoKLSAgICAgIGNhc2Uga0NvbmZpZ1dpbjoKLSAgICAgIGNhc2Uga0NvbmZpZ01h
Y0xlb3BhcmQ6Ci0gICAgICBjYXNlIGtDb25maWdNYWNTbm93TGVvcGFyZDoKLSAgICAgIGNhc2Ug
a0NvbmZpZ01hY0xpb246Ci0gICAgICBjYXNlIGtDb25maWdNYWNNb3VudGFpbkxpb246Ci0gICAg
ICBjYXNlIGtDb25maWdNYWNNYXZlcmlja3M6Ci0gICAgICBjYXNlIGtDb25maWdNYWNZb3NlbWl0
ZToKLSAgICAgIGNhc2Uga0NvbmZpZ01hY0VsQ2FwaXRhbjoKLSAgICAgIGNhc2Uga0NvbmZpZ01h
YzoKLSAgICAgIGNhc2Uga0NvbmZpZ0xpbnV4OgotICAgICAgY2FzZSBrQ29uZmlnQ2hyb21lT1M6
Ci0gICAgICBjYXNlIGtDb25maWdBbmRyb2lkOgotICAgICAgY2FzZSBrQ29uZmlnTlZpZGlhOgot
ICAgICAgY2FzZSBrQ29uZmlnQU1EOgotICAgICAgY2FzZSBrQ29uZmlnSW50ZWw6Ci0gICAgICBj
YXNlIGtDb25maWdWTVdhcmU6Ci0gICAgICBjYXNlIGtDb25maWdSZWxlYXNlOgotICAgICAgY2Fz
ZSBrQ29uZmlnRGVidWc6Ci0gICAgICBjYXNlIGtDb25maWdEM0Q5OgotICAgICAgY2FzZSBrQ29u
ZmlnRDNEMTE6Ci0gICAgICBjYXNlIGtDb25maWdHTERlc2t0b3A6Ci0gICAgICBjYXNlIGtDb25m
aWdHTEVTOgotICAgICAgY2FzZSBrQ29uZmlnR1BVRGV2aWNlSUQ6Ci0gICAgICAgIC8vIE1PRElG
SUVSUywgY291bGQgYmUgaW4gYW55IG9yZGVyLCBuZWVkIGF0IGxlYXN0IG9uZS4KLSAgICAgICAg
aWYgKHN0YWdlICE9IGtMaW5lUGFyc2VyQ29uZmlncyAmJiBzdGFnZSAhPSBrTGluZVBhcnNlckJ1
Z0lEKSB7Ci0gICAgICAgICAgUHVzaEVycm9yTWVzc2FnZShrRXJyb3JNZXNzYWdlW2tFcnJvckls
bGVnYWxFbnRyeV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlcik7Ci0g
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0b2tlbiA9PSBr
Q29uZmlnR1BVRGV2aWNlSUQpIHsKLSAgICAgICAgICBpZiAoIVVwZGF0ZVRlc3RDb25maWcoJmNv
bmZpZywgdG9rZW5zW2ldLCBsaW5lX251bWJlcikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgaWYgKCFVcGRhdGVUZXN0Q29uZmlnKCZjb25m
aWcsIHRva2VuLCBsaW5lX251bWJlcikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLSAgICAgICAgaWYgKHN0YWdlID09IGtMaW5lUGFyc2VyQnVnSUQpCi0gICAgICAgICAg
c3RhZ2UrKzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIGtTZXBhcmF0b3JDb2xvbjoKLSAg
ICAgICAgLy8gOgotICAgICAgICBpZiAoc3RhZ2UgIT0ga0xpbmVQYXJzZXJDb25maWdzKSB7Ci0g
ICAgICAgICAgUHVzaEVycm9yTWVzc2FnZShrRXJyb3JNZXNzYWdlW2tFcnJvcklsbGVnYWxFbnRy
eV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlcik7Ci0gICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHN0YWdlKys7Ci0gICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBrU2VwYXJhdG9yRXF1YWw6Ci0gICAgICAgIC8vID0KLSAgICAgICAgaWYg
KHN0YWdlICE9IGtMaW5lUGFyc2VyVGVzdE5hbWUpIHsKLSAgICAgICAgICBQdXNoRXJyb3JNZXNz
YWdlKGtFcnJvck1lc3NhZ2Vba0Vycm9ySWxsZWdhbEVudHJ5XSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxpbmVfbnVtYmVyKTsKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICAgICAgc3RhZ2UrKzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIGtUb2tlbldv
cmQ6Ci0gICAgICAgIC8vIEJVR19JRCBvciBURVNUX05BTUUKLSAgICAgICAgaWYgKHN0YWdlID09
IGtMaW5lUGFyc2VyQmVnaW4pIHsKLSAgICAgICAgICAvLyBCdWcgSUQgaXMgbm90IHVzZWQgZm9y
IGFueXRoaW5nOyBpZ25vcmUgaXQuCi0gICAgICAgIH0gZWxzZSBpZiAoc3RhZ2UgPT0ga0xpbmVQ
YXJzZXJDb2xvbikgewotICAgICAgICAgIGVudHJ5LnRlc3RfbmFtZSA9IHRva2Vuc1tpXTsKLSAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBQdXNoRXJyb3JNZXNzYWdlKGtFcnJvck1lc3NhZ2Vb
a0Vycm9ySWxsZWdhbEVudHJ5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVt
YmVyKTsKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgc3RhZ2Ur
KzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIGtFeHBlY3RhdGlvblBhc3M6Ci0gICAgICBj
YXNlIGtFeHBlY3RhdGlvbkZhaWw6Ci0gICAgICBjYXNlIGtFeHBlY3RhdGlvbkZsYWt5OgotICAg
ICAgY2FzZSBrRXhwZWN0YXRpb25UaW1lb3V0OgotICAgICAgY2FzZSBrRXhwZWN0YXRpb25Ta2lw
OgotICAgICAgICAvLyBURVNUX0VYUEVDVEFUSU9OUwotICAgICAgICBpZiAoc3RhZ2UgIT0ga0xp
bmVQYXJzZXJFcXVhbCAmJiBzdGFnZSAhPSBrTGluZVBhcnNlckV4cGVjdGF0aW9ucykgewotICAg
ICAgICAgIFB1c2hFcnJvck1lc3NhZ2Uoa0Vycm9yTWVzc2FnZVtrRXJyb3JJbGxlZ2FsRW50cnld
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIpOwotICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoKGtUb2tlbkRhdGFbdG9rZW5dLmZs
YWcgJiBlbnRyeS50ZXN0X2V4cGVjdGF0aW9uKSAhPSAwKSB7Ci0gICAgICAgICAgUHVzaEVycm9y
TWVzc2FnZShrRXJyb3JNZXNzYWdlW2tFcnJvckVudHJ5V2l0aEV4cGVjdGF0aW9uQ29uZmxpY3Rz
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyKTsKLSAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZW50cnkudGVzdF9leHBlY3RhdGlvbiA9
Ci0gICAgICAgICAgICAoa1Rva2VuRGF0YVt0b2tlbl0uZmxhZyB8IGVudHJ5LnRlc3RfZXhwZWN0
YXRpb24pOwotICAgICAgICBpZiAoc3RhZ2UgPT0ga0xpbmVQYXJzZXJFcXVhbCkKLSAgICAgICAg
ICBzdGFnZSsrOwotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIFVOUkVB
Q0hBQkxFKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgfQotICBpZiAoc3RhZ2UgPT0ga0xp
bmVQYXJzZXJCZWdpbikgewotICAgIC8vIFRoZSB3aG9sZSBsaW5lIGlzIGVtcHR5IG9yIGFsbCBj
b21tZW50cwotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIGlmIChzdGFnZSA9PSBrTGluZVBhcnNl
ckV4cGVjdGF0aW9ucykgewotICAgIGlmICghY29uZmlnLklzVmFsaWQoKSkgewotICAgICAgICBQ
dXNoRXJyb3JNZXNzYWdlKGtFcnJvck1lc3NhZ2Vba0Vycm9ySW52YWxpZEVudHJ5XSwgbGluZV9u
dW1iZXIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGVudHJpZXNfLnB1c2hf
YmFjayhlbnRyeSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgUHVzaEVycm9yTWVzc2FnZShr
RXJyb3JNZXNzYWdlW2tFcnJvcklsbGVnYWxFbnRyeV0sIGxpbmVfbnVtYmVyKTsKLSAgcmV0dXJu
IGZhbHNlOwotfQotCi1ib29sIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OlVwZGF0ZVRlc3RD
b25maWcoCi0gICAgR1BVVGVzdENvbmZpZyogY29uZmlnLCBpbnQzMiB0b2tlbiwgc2l6ZV90IGxp
bmVfbnVtYmVyKSB7Ci0gIERDSEVDSyhjb25maWcpOwotICBzd2l0Y2ggKHRva2VuKSB7Ci0gICAg
Y2FzZSBrQ29uZmlnV2luWFA6Ci0gICAgY2FzZSBrQ29uZmlnV2luVmlzdGE6Ci0gICAgY2FzZSBr
Q29uZmlnV2luNzoKLSAgICBjYXNlIGtDb25maWdXaW44OgotICAgIGNhc2Uga0NvbmZpZ1dpbjEw
OgotICAgIGNhc2Uga0NvbmZpZ1dpbjoKLSAgICBjYXNlIGtDb25maWdNYWNMZW9wYXJkOgotICAg
IGNhc2Uga0NvbmZpZ01hY1Nub3dMZW9wYXJkOgotICAgIGNhc2Uga0NvbmZpZ01hY0xpb246Ci0g
ICAgY2FzZSBrQ29uZmlnTWFjTW91bnRhaW5MaW9uOgotICAgIGNhc2Uga0NvbmZpZ01hY01hdmVy
aWNrczoKLSAgICBjYXNlIGtDb25maWdNYWNZb3NlbWl0ZToKLSAgICBjYXNlIGtDb25maWdNYWNF
bENhcGl0YW46Ci0gICAgY2FzZSBrQ29uZmlnTWFjOgotICAgIGNhc2Uga0NvbmZpZ0xpbnV4Ogot
ICAgIGNhc2Uga0NvbmZpZ0Nocm9tZU9TOgotICAgIGNhc2Uga0NvbmZpZ0FuZHJvaWQ6Ci0gICAg
ICBpZiAoKGNvbmZpZy0+b3MoKSAmIGtUb2tlbkRhdGFbdG9rZW5dLmZsYWcpICE9IDApIHsKLSAg
ICAgICAgUHVzaEVycm9yTWVzc2FnZShrRXJyb3JNZXNzYWdlW2tFcnJvckVudHJ5V2l0aE9zQ29u
ZmxpY3RzXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlcik7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGNvbmZpZy0+c2V0X29zKGNvbmZpZy0+b3Mo
KSB8IGtUb2tlbkRhdGFbdG9rZW5dLmZsYWcpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBrQ29u
ZmlnTlZpZGlhOgotICAgIGNhc2Uga0NvbmZpZ0FNRDoKLSAgICBjYXNlIGtDb25maWdJbnRlbDoK
LSAgICBjYXNlIGtDb25maWdWTVdhcmU6Ci0gICAgICB7Ci0gICAgICAgIHVpbnQzMiBncHVfdmVu
ZG9yID0KLSAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMj4oa1Rva2VuRGF0YVt0b2tlbl0u
ZmxhZyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29uZmlnLT5ncHVfdmVuZG9y
KCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICBpZiAoY29uZmlnLT5ncHVfdmVuZG9yKClbaV0g
PT0gZ3B1X3ZlbmRvcikgewotICAgICAgICAgICAgUHVzaEVycm9yTWVzc2FnZSgKLSAgICAgICAg
ICAgICAgICBrRXJyb3JNZXNzYWdlW2tFcnJvckVudHJ5V2l0aEdwdVZlbmRvckNvbmZsaWN0c10s
Ci0gICAgICAgICAgICAgICAgbGluZV9udW1iZXIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjb25maWctPkFkZEdQVVZlbmRvcihn
cHVfdmVuZG9yKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2Uga0NvbmZpZ1JlbGVh
c2U6Ci0gICAgY2FzZSBrQ29uZmlnRGVidWc6Ci0gICAgICBpZiAoKGNvbmZpZy0+YnVpbGRfdHlw
ZSgpICYga1Rva2VuRGF0YVt0b2tlbl0uZmxhZykgIT0gMCkgewotICAgICAgICBQdXNoRXJyb3JN
ZXNzYWdlKAotICAgICAgICAgICAga0Vycm9yTWVzc2FnZVtrRXJyb3JFbnRyeVdpdGhCdWlsZFR5
cGVDb25mbGljdHNdLAotICAgICAgICAgICAgbGluZV9udW1iZXIpOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICB9Ci0gICAgICBjb25maWctPnNldF9idWlsZF90eXBlKAotICAgICAgICAg
IGNvbmZpZy0+YnVpbGRfdHlwZSgpIHwga1Rva2VuRGF0YVt0b2tlbl0uZmxhZyk7Ci0gICAgICBi
cmVhazsKLSAgICBjYXNlIGtDb25maWdEM0Q5OgotICAgIGNhc2Uga0NvbmZpZ0QzRDExOgotICAg
IGNhc2Uga0NvbmZpZ0dMRGVza3RvcDoKLSAgICBjYXNlIGtDb25maWdHTEVTOgotICAgICAgaWYg
KChjb25maWctPmFwaSgpICYga1Rva2VuRGF0YVt0b2tlbl0uZmxhZykgIT0gMCkgewotICAgICAg
ICBQdXNoRXJyb3JNZXNzYWdlKGtFcnJvck1lc3NhZ2Vba0Vycm9yRW50cnlXaXRoQVBJQ29uZmxp
Y3RzXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlcik7Ci0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGNvbmZpZy0+c2V0X2FwaShjb25maWctPmFwaSgp
IHwga1Rva2VuRGF0YVt0b2tlbl0uZmxhZyk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0Ogot
ICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgIGJyZWFrOwotICB9Ci0gIHJldHVybiB0cnVlOwot
fQotCi1ib29sIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OlVwZGF0ZVRlc3RDb25maWcoCi0g
ICAgR1BVVGVzdENvbmZpZyogY29uZmlnLAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBncHVfZGV2
aWNlX2lkLAotICAgIHNpemVfdCBsaW5lX251bWJlcikgewotICBEQ0hFQ0soY29uZmlnKTsKLSAg
dWludDMyIGRldmljZV9pZCA9IDA7Ci0gIGlmIChjb25maWctPmdwdV9kZXZpY2VfaWQoKSAhPSAw
IHx8Ci0gICAgICAhYmFzZTo6SGV4U3RyaW5nVG9VSW50KGdwdV9kZXZpY2VfaWQsICZkZXZpY2Vf
aWQpIHx8Ci0gICAgICBkZXZpY2VfaWQgPT0gMCkgewotICAgIFB1c2hFcnJvck1lc3NhZ2Uoa0Vy
cm9yTWVzc2FnZVtrRXJyb3JFbnRyeVdpdGhHcHVEZXZpY2VJZENvbmZsaWN0c10sCi0gICAgICAg
ICAgICAgICAgICAgICBsaW5lX251bWJlcik7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIGNv
bmZpZy0+c2V0X2dwdV9kZXZpY2VfaWQoZGV2aWNlX2lkKTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0K
LWJvb2wgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6RGV0ZWN0Q29uZmxpY3RzQmV0d2VlbkVu
dHJpZXMoKSB7Ci0gIGJvb2wgcnQgPSBmYWxzZTsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBl
bnRyaWVzXy5zaXplKCk7ICsraSkgewotICAgIGZvciAoc2l6ZV90IGogPSBpICsgMTsgaiA8IGVu
dHJpZXNfLnNpemUoKTsgKytqKSB7Ci0gICAgICBpZiAoZW50cmllc19baV0udGVzdF9uYW1lID09
IGVudHJpZXNfW2pdLnRlc3RfbmFtZSAmJgotICAgICAgICAgIGVudHJpZXNfW2ldLnRlc3RfY29u
ZmlnLk92ZXJsYXBzV2l0aChlbnRyaWVzX1tqXS50ZXN0X2NvbmZpZykpIHsKLSAgICAgICAgUHVz
aEVycm9yTWVzc2FnZShrRXJyb3JNZXNzYWdlW2tFcnJvckVudHJpZXNPdmVybGFwXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBlbnRyaWVzX1tpXS5saW5lX251bWJlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBlbnRyaWVzX1tqXS5saW5lX251bWJlcik7Ci0gICAgICAgIHJ0ID0gdHJ1
ZTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHJ0OwotfQotCi12b2lkIEdQVVRlc3RF
eHBlY3RhdGlvbnNQYXJzZXI6OlB1c2hFcnJvck1lc3NhZ2UoCi0gICAgY29uc3Qgc3RkOjpzdHJp
bmcmIG1lc3NhZ2UsIHNpemVfdCBsaW5lX251bWJlcikgewotICBlcnJvcl9tZXNzYWdlc18ucHVz
aF9iYWNrKAotICAgICAgYmFzZTo6U3RyaW5nUHJpbnRmKCJMaW5lICVkIDogJXMiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4obGluZV9udW1iZXIpLCBtZXNzYWdl
LmNfc3RyKCkpKTsKLX0KLQotdm9pZCBHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjpQdXNoRXJy
b3JNZXNzYWdlKAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlLAotICAgIHNpemVfdCBl
bnRyeTFfbGluZV9udW1iZXIsCi0gICAgc2l6ZV90IGVudHJ5Ml9saW5lX251bWJlcikgewotICBl
cnJvcl9tZXNzYWdlc18ucHVzaF9iYWNrKAotICAgICAgYmFzZTo6U3RyaW5nUHJpbnRmKCJMaW5l
ICVkIGFuZCAlZCA6ICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxp
bnQ+KGVudHJ5MV9saW5lX251bWJlciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8aW50PihlbnRyeTJfbGluZV9udW1iZXIpLAotICAgICAgICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2UuY19zdHIoKSkpOwotfQotCi1HUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjogR1BV
VGVzdEV4cGVjdGF0aW9uRW50cnk6OkdQVVRlc3RFeHBlY3RhdGlvbkVudHJ5KCkKLSAgICA6IHRl
c3RfZXhwZWN0YXRpb24oMCksCi0gICAgICBsaW5lX251bWJlcigwKSB7Ci19Ci0KLX0gIC8vIG5h
bWVzcGFjZSBncHUKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9leHBlY3RhdGlv
bnNfcGFyc2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFy
dHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTExMjcwMGUyNWQyZTRlOWM0YTFkNThhMGYw
OWRlNTZjMWNiOTdlNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rl
c3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDg2ICswLDAgQEAKLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0g
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLSNpZm5kZWYgR1BVX0NPTkZJR19HUFVfVEVTVF9FWFBF
Q1RBVElPTlNfUEFSU0VSX0hfCi0jZGVmaW5lIEdQVV9DT05GSUdfR1BVX1RFU1RfRVhQRUNUQVRJ
T05TX1BBUlNFUl9IXwotCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQot
I2luY2x1ZGUgImFuZ2xlX2NvbmZpZy5oIgotI2luY2x1ZGUgImdwdV90ZXN0X2NvbmZpZy5oIgot
Ci1uYW1lc3BhY2UgZ3B1IHsKLQotY2xhc3MgR1BVX0VYUE9SVCBHUFVUZXN0RXhwZWN0YXRpb25z
UGFyc2VyIHsKLSBwdWJsaWM6Ci0gIGVudW0gR1BVVGVzdEV4cGVjdGF0aW9uIHsKLSAgICBrR3B1
VGVzdFBhc3MgPSAxIDw8IDAsCi0gICAga0dwdVRlc3RGYWlsID0gMSA8PCAxLAotICAgIGtHcHVU
ZXN0Rmxha3kgPSAxIDw8IDIsCi0gICAga0dwdVRlc3RUaW1lb3V0ID0gMSA8PCAzLAotICAgIGtH
cHVUZXN0U2tpcCA9IDEgPDwgNCwKLSAgfTsKLQotICBHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2Vy
KCk7Ci0gIH5HUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyKCk7Ci0KLSAgLy8gUGFyc2UgdGhlIHRl
eHQgZXhwZWN0YXRpb25zLCBhbmQgaWYgbm8gZXJyb3IgaXMgZW5jb3VudGVyZWQsCi0gIC8vIHNh
dmUgYWxsIHRoZSBlbnRyaWVzLiBPdGhlcndpc2UsIGdlbmVyYXRlIGVycm9yIG1lc3NhZ2VzLgot
ICAvLyBSZXR1cm4gdHJ1ZSBpZiBwYXJzaW5nIHN1Y2NlZWRzLgotICBib29sIExvYWRUZXN0RXhw
ZWN0YXRpb25zKGNvbnN0IHN0ZDo6c3RyaW5nJiBkYXRhKTsKLSAgYm9vbCBMb2FkVGVzdEV4cGVj
dGF0aW9uc0Zyb21GaWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoKTsKLQotICAvLyBRdWVyeSBl
cnJvciBtZXNzYWdlcyBmcm9tIHRoZSBsYXN0IExvYWRUZXN0RXhwZWN0YXRpb25zKCkgY2FsbC4K
LSAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBHZXRFcnJvck1lc3NhZ2VzKCkgY29u
c3Q7Ci0KLSAgLy8gR2V0IHRoZSB0ZXN0IGV4cGVjdGF0aW9uIG9mIGEgZ2l2ZW4gdGVzdCBvbiBh
IGdpdmVuIGJvdC4KLSAgaW50MzIgR2V0VGVzdEV4cGVjdGF0aW9uKGNvbnN0IHN0ZDo6c3RyaW5n
JiB0ZXN0X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHUFVUZXN0Qm90
Q29uZmlnJiBib3RfY29uZmlnKSBjb25zdDsKLQotICAvLyBQYXJzZSBhIGxpc3Qgb2YgY29uZmln
IG1vZGlmaWVycy4gSWYgd2UgaGF2ZSBhIHZhbGlkIGVudHJ5IHdpdGggbm8KLSAgLy8gY29uZmxp
Y3RzLCB8IGNvbmZpZyB8IHN0b3JlcyBpdCwgYW5kIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRydWUu
Ci0gIGJvb2wgUGFyc2VDb25maWcoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZ19kYXRhLCBHUFVU
ZXN0Q29uZmlnKiBjb25maWcpOwotCi0gcHJpdmF0ZToKLSAgc3RydWN0IEdQVVRlc3RFeHBlY3Rh
dGlvbkVudHJ5IHsKLSAgICBHUFVUZXN0RXhwZWN0YXRpb25FbnRyeSgpOwotCi0gICAgc3RkOjpz
dHJpbmcgdGVzdF9uYW1lOwotICAgIEdQVVRlc3RDb25maWcgdGVzdF9jb25maWc7Ci0gICAgaW50
MzIgdGVzdF9leHBlY3RhdGlvbjsKLSAgICBzaXplX3QgbGluZV9udW1iZXI7Ci0gIH07Ci0KLSAg
Ly8gUGFyc2UgYSBsaW5lIG9mIHRleHQuIElmIHdlIGhhdmUgYSB2YWxpZCBlbnRyeSwgc2F2ZSBp
dDsgb3RoZXJ3aXNlLAotICAvLyBnZW5lcmF0ZSBlcnJvciBtZXNzYWdlcy4KLSAgYm9vbCBQYXJz
ZUxpbmUoY29uc3Qgc3RkOjpzdHJpbmcmIGxpbmVfZGF0YSwgc2l6ZV90IGxpbmVfbnVtYmVyKTsK
LQotICAvLyBVcGRhdGUgT1MvR1BVVmVuZG9yL0J1aWxkVHlwZSBtb2RpZmllcnMuIE1heSBnZW5l
cmF0ZSBhbiBlcnJvciBtZXNzYWdlLgotICBib29sIFVwZGF0ZVRlc3RDb25maWcoCi0gICAgICBH
UFVUZXN0Q29uZmlnKiBjb25maWcsIGludDMyIHRva2VuLCBzaXplX3QgbGluZV9udW1iZXIpOwot
Ci0gIC8vIFVwZGF0ZSBHUFVEZXZpY2VJRCBtb2RpZmllci4gTWF5IGdlbmVyYXRlIGFuIGVycm9y
IG1lc3NhZ2UuCi0gIGJvb2wgVXBkYXRlVGVzdENvbmZpZyhHUFVUZXN0Q29uZmlnKiBjb25maWcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmIGdwdV9kZXZpY2Vf
aWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGluZV9udW1iZXIpOwotCi0gIC8v
IENoZWNrIGlmIHR3byBlbnRyaWVzJyBjb25maWcgb3ZlcmxhcCB3aXRoIGVhY2ggb3RoZXIuIE1h
eSBnZW5lcmF0ZSBhbgotICAvLyBlcnJvciBtZXNzYWdlLgotICBib29sIERldGVjdENvbmZsaWN0
c0JldHdlZW5FbnRyaWVzKCk7Ci0KLSAgLy8gU2F2ZSBhbiBlcnJvciBtZXNzYWdlLCB3aGljaCBj
YW4gYmUgcXVlcmllZCBsYXRlci4KLSAgdm9pZCBQdXNoRXJyb3JNZXNzYWdlKGNvbnN0IHN0ZDo6
c3RyaW5nJiBtZXNzYWdlLCBzaXplX3QgbGluZV9udW1iZXIpOwotICB2b2lkIFB1c2hFcnJvck1l
c3NhZ2UoY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgZW50cnkxX2xpbmVfbnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGVudHJ5Ml9saW5lX251bWJlcik7Ci0KLSAgc3RkOjp2ZWN0b3I8R1BVVGVzdEV4cGVjdGF0
aW9uRW50cnk+IGVudHJpZXNfOwotICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gZXJyb3JfbWVz
c2FnZXNfOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGdwdQotCi0jZW5kaWYgIC8vIEdQVV9DT05G
SUdfR1BVX1RFU1RfRVhQRUNUQVRJT05TX1BBUlNFUl9IXwotCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL0xJQ0VOU0Ug
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29u
L0xJQ0VOU0UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZDk3ZDE2M2VkYjllMDM5
MTcwOTkxOGYyY2NjMWFlMjQwN2QwNDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3Bh
cnR5L3JhcGlkanNvbi9MSUNFTlNFCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotQ29w
eXJpZ2h0IChDKSAyMDExIE1pbG8gWWlwCi0KLVBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs
IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLW9mIHRoaXMg
c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy
ZSIpLCB0byBkZWFsCi1pbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk
aW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi10byB1c2UsIGNvcHksIG1vZGlmeSwg
bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi1jb3Bp
ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29m
dHdhcmUgaXMKLWZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnM6Ci0KLVRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi1hbGwgY29waWVzIG9yIHN1YnN0YW50aWFs
IHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB
UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLUlNUExJRUQs
IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZLAotRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF
TUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi1BVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT
IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi1MSUFCSUxJVFksIFdI
RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO
RyBGUk9NLAotT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF
IFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgotVEhFIFNPRlRXQVJFLgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vUkVBRE1FLmNocm9taXVtIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9SRUFETUUuY2hyb21pdW0K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2NjY1OWE4ZjY2MzNkYTY0YzU2M2Q2OTdi
NzVhZTE2YzhjMTFmYzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlk
anNvbi9SRUFETUUuY2hyb21pdW0KKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLU5hbWU6
IFJhcGlkSlNPTgotVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbWlsb3lpcC9yYXBpZGpzb24KLVZl
cnNpb246IDI0ZGQ3ZWY4MzliNzk5NDFkMTI5ZTgzMzM2OGU5MTNhYTljMDQ1ZGEKLUxpY2Vuc2U6
IEN1c3RvbQotTGljZW5zZSBGaWxlOiBMSUNFTlNFCi0KLURlc2NyaXB0aW9uOgotUmFwaWRKU09O
IGlzIGEgSlNPTiBwYXJzZXIgYW5kIGdlbmVyYXRvciBmb3IgQysrLgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vYWxsb2NhdG9ycy5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9p
bmNsdWRlL3JhcGlkanNvbi9hbGxvY2F0b3JzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDBiZDJkMjg5NWFlYzdlZmJkMTQ3YzMyNzlkZDY0NDUxZjM0MWQyYmYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9hbGxv
Y2F0b3JzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNDUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChD
KSAyMDExIE1pbG8gWWlwCi0vLwotLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl
ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQotLy8gb2YgdGhpcyBz
b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJl
IiksIHRvIGRlYWwKLS8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs
dWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKLS8vIHRvIHVzZSwgY29weSwgbW9k
aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwK
LS8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9t
IHRoZSBTb2Z0d2FyZSBpcwotLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9uczoKLS8vCi0vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh
bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotLy8gYWxsIGNv
cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0vLwotLy8gVEhF
IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ
TkQsIEVYUFJFU1MgT1IKLS8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g
VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotLy8gRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
Ci0vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN
LCBEQU1BR0VTIE9SIE9USEVSCi0vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G
IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAotLy8gT1VUIE9GIE9S
IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFM
SU5HUyBJTgotLy8gVEhFIFNPRlRXQVJFLgotCi0jaWZuZGVmIFJBUElESlNPTl9BTExPQ0FUT1JT
X0hfCi0jZGVmaW5lIFJBUElESlNPTl9BTExPQ0FUT1JTX0hfCi0KLSNpbmNsdWRlICJyYXBpZGpz
b24uaCIKLQotUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgotCi0vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vCi0vLyBBbGxvY2F0b3IKLQotLyohIFxjbGFzcyByYXBpZGpzb246OkFsbG9jYXRvcgotICAg
IFxicmllZiBDb25jZXB0IGZvciBhbGxvY2F0aW5nLCByZXNpemluZyBhbmQgZnJlZWluZyBtZW1v
cnkgYmxvY2suCi0gICAgCi0gICAgTm90ZSB0aGF0IE1hbGxvYygpIGFuZCBSZWFsbG9jKCkgYXJl
IG5vbi1zdGF0aWMgYnV0IEZyZWUoKSBpcyBzdGF0aWMuCi0gICAgCi0gICAgU28gaWYgYW4gYWxs
b2NhdG9yIG5lZWQgdG8gc3VwcG9ydCBGcmVlKCksIGl0IG5lZWRzIHRvIHB1dCBpdHMgcG9pbnRl
ciBpbiAKLSAgICB0aGUgaGVhZGVyIG9mIG1lbW9yeSBibG9jay4KLQotXGNvZGUKLWNvbmNlcHQg
QWxsb2NhdG9yIHsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBrTmVlZEZyZWU7ICAgIC8vITwgV2hl
dGhlciB0aGlzIGFsbG9jYXRvciBuZWVkcyB0byBjYWxsIEZyZWUoKS4KLQotICAgIC8vIEFsbG9j
YXRlIGEgbWVtb3J5IGJsb2NrLgotICAgIC8vIFxwYXJhbSBzaXplIG9mIHRoZSBtZW1vcnkgYmxv
Y2sgaW4gYnl0ZXMuCi0gICAgLy8gXHJldHVybnMgcG9pbnRlciB0byB0aGUgbWVtb3J5IGJsb2Nr
LgotICAgIHZvaWQqIE1hbGxvYyhzaXplX3Qgc2l6ZSk7Ci0KLSAgICAvLyBSZXNpemUgYSBtZW1v
cnkgYmxvY2suCi0gICAgLy8gXHBhcmFtIG9yaWdpbmFsUHRyIFRoZSBwb2ludGVyIHRvIGN1cnJl
bnQgbWVtb3J5IGJsb2NrLiBOdWxsIHBvaW50ZXIgaXMgcGVybWl0dGVkLgotICAgIC8vIFxwYXJh
bSBvcmlnaW5hbFNpemUgVGhlIGN1cnJlbnQgc2l6ZSBpbiBieXRlcy4gKERlc2lnbiBpc3N1ZTog
c2luY2Ugc29tZSBhbGxvY2F0b3IgbWF5IG5vdCBib29rLWtlZXAgdGhpcywgZXhwbGljaXRseSBw
YXNzIHRvIGl0IGNhbiBzYXZlIG1lbW9yeS4pCi0gICAgLy8gXHBhcmFtIG5ld1NpemUgdGhlIG5l
dyBzaXplIGluIGJ5dGVzLgotICAgIHZvaWQqIFJlYWxsb2Modm9pZCogb3JpZ2luYWxQdHIsIHNp
emVfdCBvcmlnaW5hbFNpemUsIHNpemVfdCBuZXdTaXplKTsKLQotICAgIC8vIEZyZWUgYSBtZW1v
cnkgYmxvY2suCi0gICAgLy8gXHBhcmFtIHBvaW50ZXIgdG8gdGhlIG1lbW9yeSBibG9jay4gTnVs
bCBwb2ludGVyIGlzIHBlcm1pdHRlZC4KLSAgICBzdGF0aWMgdm9pZCBGcmVlKHZvaWQgKnB0cik7
Ci19OwotXGVuZGNvZGUKLSovCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIENydEFsbG9j
YXRvcgotCi0vLyEgQy1ydW50aW1lIGxpYnJhcnkgYWxsb2NhdG9yLgotLyohIFRoaXMgY2xhc3Mg
aXMganVzdCB3cmFwcGVyIGZvciBzdGFuZGFyZCBDIGxpYnJhcnkgbWVtb3J5IHJvdXRpbmVzLgot
ICAgIFxub3RlIGltcGxlbWVudHMgQWxsb2NhdG9yIGNvbmNlcHQKLSovCi1jbGFzcyBDcnRBbGxv
Y2F0b3IgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBib29sIGtOZWVkRnJlZSA9IHRydWU7
Ci0gICAgdm9pZCogTWFsbG9jKHNpemVfdCBzaXplKSB7IHJldHVybiBzdGQ6Om1hbGxvYyhzaXpl
KTsgfQotICAgIHZvaWQqIFJlYWxsb2Modm9pZCogb3JpZ2luYWxQdHIsIHNpemVfdCBvcmlnaW5h
bFNpemUsIHNpemVfdCBuZXdTaXplKSB7ICh2b2lkKW9yaWdpbmFsU2l6ZTsgcmV0dXJuIHN0ZDo6
cmVhbGxvYyhvcmlnaW5hbFB0ciwgbmV3U2l6ZSk7IH0KLSAgICBzdGF0aWMgdm9pZCBGcmVlKHZv
aWQgKnB0cikgeyBzdGQ6OmZyZWUocHRyKTsgfQotfTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwotLy8gTWVtb3J5UG9vbEFsbG9jYXRvcgotCi0vLyEgRGVmYXVsdCBtZW1vcnkgYWxsb2NhdG9y
IHVzZWQgYnkgdGhlIHBhcnNlciBhbmQgRE9NLgotLyohIFRoaXMgYWxsb2NhdG9yIGFsbG9jYXRl
IG1lbW9yeSBibG9ja3MgZnJvbSBwcmUtYWxsb2NhdGVkIG1lbW9yeSBjaHVua3MuIAotCi0gICAg
SXQgZG9lcyBub3QgZnJlZSBtZW1vcnkgYmxvY2tzLiBBbmQgUmVhbGxvYygpIG9ubHkgYWxsb2Nh
dGUgbmV3IG1lbW9yeS4KLQotICAgIFRoZSBtZW1vcnkgY2h1bmtzIGFyZSBhbGxvY2F0ZWQgYnkg
QmFzZUFsbG9jYXRvciwgd2hpY2ggaXMgQ3J0QWxsb2NhdG9yIGJ5IGRlZmF1bHQuCi0KLSAgICBV
c2VyIG1heSBhbHNvIHN1cHBseSBhIGJ1ZmZlciBhcyB0aGUgZmlyc3QgY2h1bmsuCi0KLSAgICBJ
ZiB0aGUgdXNlci1idWZmZXIgaXMgZnVsbCB0aGVuIGFkZGl0aW9uYWwgY2h1bmtzIGFyZSBhbGxv
Y2F0ZWQgYnkgQmFzZUFsbG9jYXRvci4KLQotICAgIFRoZSB1c2VyLWJ1ZmZlciBpcyBub3QgZGVh
bGxvY2F0ZWQgYnkgdGhpcyBhbGxvY2F0b3IuCi0KLSAgICBcdHBhcmFtIEJhc2VBbGxvY2F0b3Ig
dGhlIGFsbG9jYXRvciB0eXBlIGZvciBhbGxvY2F0aW5nIG1lbW9yeSBjaHVua3MuIERlZmF1bHQg
aXMgQ3J0QWxsb2NhdG9yLgotICAgIFxub3RlIGltcGxlbWVudHMgQWxsb2NhdG9yIGNvbmNlcHQK
LSovCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQmFzZUFsbG9jYXRvciA9IENydEFsbG9jYXRvcj4KLWNs
YXNzIE1lbW9yeVBvb2xBbGxvY2F0b3IgewotcHVibGljOgotICAgIHN0YXRpYyBjb25zdCBib29s
IGtOZWVkRnJlZSA9IGZhbHNlOyAgICAvLyE8IFRlbGwgdXNlcnMgdGhhdCBubyBuZWVkIHRvIGNh
bGwgRnJlZSgpIHdpdGggdGhpcyBhbGxvY2F0b3IuIChjb25jZXB0IEFsbG9jYXRvcikKLQotICAg
IC8vISBDb25zdHJ1Y3RvciB3aXRoIGNodW5rU2l6ZS4KLSAgICAvKiEgXHBhcmFtIGNodW5rU2l6
ZSBUaGUgc2l6ZSBvZiBtZW1vcnkgY2h1bmsuIFRoZSBkZWZhdWx0IGlzIGtEZWZhdWx0Q2h1bmtT
aXplLgotICAgICAgICBccGFyYW0gYmFzZUFsbG9jYXRvciBUaGUgYWxsb2NhdG9yIGZvciBhbGxv
Y2F0aW5nIG1lbW9yeSBjaHVua3MuCi0gICAgKi8KLSAgICBNZW1vcnlQb29sQWxsb2NhdG9yKHNp
emVfdCBjaHVua1NpemUgPSBrRGVmYXVsdENodW5rQ2FwYWNpdHksIEJhc2VBbGxvY2F0b3IqIGJh
c2VBbGxvY2F0b3IgPSAwKSA6IAotICAgICAgICBjaHVua0hlYWRfKDApLCBjaHVua19jYXBhY2l0
eV8oY2h1bmtTaXplKSwgdXNlckJ1ZmZlcl8oMCksIGJhc2VBbGxvY2F0b3JfKGJhc2VBbGxvY2F0
b3IpLCBvd25CYXNlQWxsb2NhdG9yXygwKQotICAgIHsKLSAgICB9Ci0KLSAgICAvLyEgQ29uc3Ry
dWN0b3Igd2l0aCB1c2VyLXN1cHBsaWVkIGJ1ZmZlci4KLSAgICAvKiEgVGhlIHVzZXIgYnVmZmVy
IHdpbGwgYmUgdXNlZCBmaXJzdGx5LiBXaGVuIGl0IGlzIGZ1bGwsIG1lbW9yeSBwb29sIGFsbG9j
YXRlcyBuZXcgY2h1bmsgd2l0aCBjaHVuayBzaXplLgotCi0gICAgICAgIFRoZSB1c2VyIGJ1ZmZl
ciB3aWxsIG5vdCBiZSBkZWFsbG9jYXRlZCB3aGVuIHRoaXMgYWxsb2NhdG9yIGlzIGRlc3RydWN0
ZWQuCi0KLSAgICAgICAgXHBhcmFtIGJ1ZmZlciBVc2VyIHN1cHBsaWVkIGJ1ZmZlci4KLSAgICAg
ICAgXHBhcmFtIHNpemUgU2l6ZSBvZiB0aGUgYnVmZmVyIGluIGJ5dGVzLiBJdCBtdXN0IGF0IGxl
YXN0IGxhcmdlciB0aGFuIHNpemVvZihDaHVua0hlYWRlcikuCi0gICAgICAgIFxwYXJhbSBjaHVu
a1NpemUgVGhlIHNpemUgb2YgbWVtb3J5IGNodW5rLiBUaGUgZGVmYXVsdCBpcyBrRGVmYXVsdENo
dW5rU2l6ZS4KLSAgICAgICAgXHBhcmFtIGJhc2VBbGxvY2F0b3IgVGhlIGFsbG9jYXRvciBmb3Ig
YWxsb2NhdGluZyBtZW1vcnkgY2h1bmtzLgotICAgICovCi0gICAgTWVtb3J5UG9vbEFsbG9jYXRv
cih2b2lkICpidWZmZXIsIHNpemVfdCBzaXplLCBzaXplX3QgY2h1bmtTaXplID0ga0RlZmF1bHRD
aHVua0NhcGFjaXR5LCBCYXNlQWxsb2NhdG9yKiBiYXNlQWxsb2NhdG9yID0gMCkgOgotICAgICAg
ICBjaHVua0hlYWRfKDApLCBjaHVua19jYXBhY2l0eV8oY2h1bmtTaXplKSwgdXNlckJ1ZmZlcl8o
YnVmZmVyKSwgYmFzZUFsbG9jYXRvcl8oYmFzZUFsbG9jYXRvciksIG93bkJhc2VBbGxvY2F0b3Jf
KDApCi0gICAgewotICAgICAgICBSQVBJREpTT05fQVNTRVJUKGJ1ZmZlciAhPSAwKTsKLSAgICAg
ICAgUkFQSURKU09OX0FTU0VSVChzaXplID4gc2l6ZW9mKENodW5rSGVhZGVyKSk7Ci0gICAgICAg
IGNodW5rSGVhZF8gPSByZWludGVycHJldF9jYXN0PENodW5rSGVhZGVyKj4oYnVmZmVyKTsKLSAg
ICAgICAgY2h1bmtIZWFkXy0+Y2FwYWNpdHkgPSBzaXplIC0gc2l6ZW9mKENodW5rSGVhZGVyKTsK
LSAgICAgICAgY2h1bmtIZWFkXy0+c2l6ZSA9IDA7Ci0gICAgICAgIGNodW5rSGVhZF8tPm5leHQg
PSAwOwotICAgIH0KLQotICAgIC8vISBEZXN0cnVjdG9yLgotICAgIC8qISBUaGlzIGRlYWxsb2Nh
dGVzIGFsbCBtZW1vcnkgY2h1bmtzLCBleGNsdWRpbmcgdGhlIHVzZXItc3VwcGxpZWQgYnVmZmVy
LgotICAgICovCi0gICAgfk1lbW9yeVBvb2xBbGxvY2F0b3IoKSB7Ci0gICAgICAgIENsZWFyKCk7
Ci0gICAgICAgIFJBUElESlNPTl9ERUxFVEUob3duQmFzZUFsbG9jYXRvcl8pOwotICAgIH0KLQot
ICAgIC8vISBEZWFsbG9jYXRlcyBhbGwgbWVtb3J5IGNodW5rcywgZXhjbHVkaW5nIHRoZSB1c2Vy
LXN1cHBsaWVkIGJ1ZmZlci4KLSAgICB2b2lkIENsZWFyKCkgewotICAgICAgICB3aGlsZShjaHVu
a0hlYWRfICE9IDAgJiYgY2h1bmtIZWFkXyAhPSB1c2VyQnVmZmVyXykgewotICAgICAgICAgICAg
Q2h1bmtIZWFkZXIqIG5leHQgPSBjaHVua0hlYWRfLT5uZXh0OwotICAgICAgICAgICAgYmFzZUFs
bG9jYXRvcl8tPkZyZWUoY2h1bmtIZWFkXyk7Ci0gICAgICAgICAgICBjaHVua0hlYWRfID0gbmV4
dDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vISBDb21wdXRlcyB0aGUgdG90YWwgY2FwYWNp
dHkgb2YgYWxsb2NhdGVkIG1lbW9yeSBjaHVua3MuCi0gICAgLyohIFxyZXR1cm4gdG90YWwgY2Fw
YWNpdHkgaW4gYnl0ZXMuCi0gICAgKi8KLSAgICBzaXplX3QgQ2FwYWNpdHkoKSBjb25zdCB7Ci0g
ICAgICAgIHNpemVfdCBjYXBhY2l0eSA9IDA7Ci0gICAgICAgIGZvciAoQ2h1bmtIZWFkZXIqIGMg
PSBjaHVua0hlYWRfOyBjICE9IDA7IGMgPSBjLT5uZXh0KQotICAgICAgICAgICAgY2FwYWNpdHkg
Kz0gYy0+Y2FwYWNpdHk7Ci0gICAgICAgIHJldHVybiBjYXBhY2l0eTsKLSAgICB9Ci0KLSAgICAv
LyEgQ29tcHV0ZXMgdGhlIG1lbW9yeSBibG9ja3MgYWxsb2NhdGVkLgotICAgIC8qISBccmV0dXJu
IHRvdGFsIHVzZWQgYnl0ZXMuCi0gICAgKi8KLSAgICBzaXplX3QgU2l6ZSgpIGNvbnN0IHsKLSAg
ICAgICAgc2l6ZV90IHNpemUgPSAwOwotICAgICAgICBmb3IgKENodW5rSGVhZGVyKiBjID0gY2h1
bmtIZWFkXzsgYyAhPSAwOyBjID0gYy0+bmV4dCkKLSAgICAgICAgICAgIHNpemUgKz0gYy0+c2l6
ZTsKLSAgICAgICAgcmV0dXJuIHNpemU7Ci0gICAgfQotCi0gICAgLy8hIEFsbG9jYXRlcyBhIG1l
bW9yeSBibG9jay4gKGNvbmNlcHQgQWxsb2NhdG9yKQotICAgIHZvaWQqIE1hbGxvYyhzaXplX3Qg
c2l6ZSkgewotICAgICAgICBzaXplID0gUkFQSURKU09OX0FMSUdOKHNpemUpOwotICAgICAgICBp
ZiAoY2h1bmtIZWFkXyA9PSAwIHx8IGNodW5rSGVhZF8tPnNpemUgKyBzaXplID4gY2h1bmtIZWFk
Xy0+Y2FwYWNpdHkpCi0gICAgICAgICAgICBBZGRDaHVuayhjaHVua19jYXBhY2l0eV8gPiBzaXpl
ID8gY2h1bmtfY2FwYWNpdHlfIDogc2l6ZSk7Ci0KLSAgICAgICAgdm9pZCAqYnVmZmVyID0gcmVp
bnRlcnByZXRfY2FzdDxjaGFyICo+KGNodW5rSGVhZF8gKyAxKSArIGNodW5rSGVhZF8tPnNpemU7
Ci0gICAgICAgIGNodW5rSGVhZF8tPnNpemUgKz0gc2l6ZTsKLSAgICAgICAgcmV0dXJuIGJ1ZmZl
cjsKLSAgICB9Ci0KLSAgICAvLyEgUmVzaXplcyBhIG1lbW9yeSBibG9jayAoY29uY2VwdCBBbGxv
Y2F0b3IpCi0gICAgdm9pZCogUmVhbGxvYyh2b2lkKiBvcmlnaW5hbFB0ciwgc2l6ZV90IG9yaWdp
bmFsU2l6ZSwgc2l6ZV90IG5ld1NpemUpIHsKLSAgICAgICAgaWYgKG9yaWdpbmFsUHRyID09IDAp
Ci0gICAgICAgICAgICByZXR1cm4gTWFsbG9jKG5ld1NpemUpOwotCi0gICAgICAgIC8vIERvIG5v
dCBzaHJpbmsgaWYgbmV3IHNpemUgaXMgc21hbGxlciB0aGFuIG9yaWdpbmFsCi0gICAgICAgIGlm
IChvcmlnaW5hbFNpemUgPj0gbmV3U2l6ZSkKLSAgICAgICAgICAgIHJldHVybiBvcmlnaW5hbFB0
cjsKLQotICAgICAgICAvLyBTaW1wbHkgZXhwYW5kIGl0IGlmIGl0IGlzIHRoZSBsYXN0IGFsbG9j
YXRpb24gYW5kIHRoZXJlIGlzIHN1ZmZpY2llbnQgc3BhY2UKLSAgICAgICAgaWYgKG9yaWdpbmFs
UHRyID09IChjaGFyICopKGNodW5rSGVhZF8gKyAxKSArIGNodW5rSGVhZF8tPnNpemUgLSBvcmln
aW5hbFNpemUpIHsKLSAgICAgICAgICAgIHNpemVfdCBpbmNyZW1lbnQgPSBzdGF0aWNfY2FzdDxz
aXplX3Q+KG5ld1NpemUgLSBvcmlnaW5hbFNpemUpOwotICAgICAgICAgICAgaW5jcmVtZW50ID0g
UkFQSURKU09OX0FMSUdOKGluY3JlbWVudCk7Ci0gICAgICAgICAgICBpZiAoY2h1bmtIZWFkXy0+
c2l6ZSArIGluY3JlbWVudCA8PSBjaHVua0hlYWRfLT5jYXBhY2l0eSkgewotICAgICAgICAgICAg
ICAgIGNodW5rSGVhZF8tPnNpemUgKz0gaW5jcmVtZW50OwotICAgICAgICAgICAgICAgIHJldHVy
biBvcmlnaW5hbFB0cjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJl
YWxsb2MgcHJvY2VzczogYWxsb2NhdGUgYW5kIGNvcHkgbWVtb3J5LCBkbyBub3QgZnJlZSBvcmln
aW5hbCBidWZmZXIuCi0gICAgICAgIHZvaWQqIG5ld0J1ZmZlciA9IE1hbGxvYyhuZXdTaXplKTsK
LSAgICAgICAgUkFQSURKU09OX0FTU0VSVChuZXdCdWZmZXIgIT0gMCk7ICAgLy8gRG8gbm90IGhh
bmRsZSBvdXQtb2YtbWVtb3J5IGV4cGxpY2l0bHkuCi0gICAgICAgIHJldHVybiBzdGQ6Om1lbWNw
eShuZXdCdWZmZXIsIG9yaWdpbmFsUHRyLCBvcmlnaW5hbFNpemUpOwotICAgIH0KLQotICAgIC8v
ISBGcmVlcyBhIG1lbW9yeSBibG9jayAoY29uY2VwdCBBbGxvY2F0b3IpCi0gICAgc3RhdGljIHZv
aWQgRnJlZSh2b2lkICpwdHIpIHsgKHZvaWQpcHRyOyB9IC8vIERvIG5vdGhpbmcKLQotcHJpdmF0
ZToKLSAgICAvLyEgQ29weSBjb25zdHJ1Y3RvciBpcyBub3QgcGVybWl0dGVkLgotICAgIE1lbW9y
eVBvb2xBbGxvY2F0b3IoY29uc3QgTWVtb3J5UG9vbEFsbG9jYXRvciYgcmhzKSAvKiA9IGRlbGV0
ZSAqLzsKLSAgICAvLyEgQ29weSBhc3NpZ25tZW50IG9wZXJhdG9yIGlzIG5vdCBwZXJtaXR0ZWQu
Ci0gICAgTWVtb3J5UG9vbEFsbG9jYXRvciYgb3BlcmF0b3I9KGNvbnN0IE1lbW9yeVBvb2xBbGxv
Y2F0b3ImIHJocykgLyogPSBkZWxldGUgKi87Ci0KLSAgICAvLyEgQ3JlYXRlcyBhIG5ldyBjaHVu
ay4KLSAgICAvKiEgXHBhcmFtIGNhcGFjaXR5IENhcGFjaXR5IG9mIHRoZSBjaHVuayBpbiBieXRl
cy4KLSAgICAqLwotICAgIHZvaWQgQWRkQ2h1bmsoc2l6ZV90IGNhcGFjaXR5KSB7Ci0gICAgICAg
IGlmICghYmFzZUFsbG9jYXRvcl8pCi0gICAgICAgICAgICBvd25CYXNlQWxsb2NhdG9yXyA9IGJh
c2VBbGxvY2F0b3JfID0gUkFQSURKU09OX05FVyhCYXNlQWxsb2NhdG9yKCkpOwotICAgICAgICBD
aHVua0hlYWRlciogY2h1bmsgPSByZWludGVycHJldF9jYXN0PENodW5rSGVhZGVyKj4oYmFzZUFs
bG9jYXRvcl8tPk1hbGxvYyhzaXplb2YoQ2h1bmtIZWFkZXIpICsgY2FwYWNpdHkpKTsKLSAgICAg
ICAgY2h1bmstPmNhcGFjaXR5ID0gY2FwYWNpdHk7Ci0gICAgICAgIGNodW5rLT5zaXplID0gMDsK
LSAgICAgICAgY2h1bmstPm5leHQgPSBjaHVua0hlYWRfOwotICAgICAgICBjaHVua0hlYWRfID0g
IGNodW5rOwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBpbnQga0RlZmF1bHRDaHVua0NhcGFj
aXR5ID0gNjQgKiAxMDI0OyAvLyE8IERlZmF1bHQgY2h1bmsgY2FwYWNpdHkuCi0KLSAgICAvLyEg
Q2h1bmsgaGVhZGVyIGZvciBwZXJwZW5kaW5nIHRvIGVhY2ggY2h1bmsuCi0gICAgLyohIENodW5r
cyBhcmUgc3RvcmVkIGFzIGEgc2luZ2x5IGxpbmtlZCBsaXN0LgotICAgICovCi0gICAgc3RydWN0
IENodW5rSGVhZGVyIHsKLSAgICAgICAgc2l6ZV90IGNhcGFjaXR5OyAgICAvLyE8IENhcGFjaXR5
IG9mIHRoZSBjaHVuayBpbiBieXRlcyAoZXhjbHVkaW5nIHRoZSBoZWFkZXIgaXRzZWxmKS4KLSAg
ICAgICAgc2l6ZV90IHNpemU7ICAgICAgICAvLyE8IEN1cnJlbnQgc2l6ZSBvZiBhbGxvY2F0ZWQg
bWVtb3J5IGluIGJ5dGVzLgotICAgICAgICBDaHVua0hlYWRlciAqbmV4dDsgIC8vITwgTmV4dCBj
aHVuayBpbiB0aGUgbGlua2VkIGxpc3QuCi0gICAgfTsKLQotICAgIENodW5rSGVhZGVyICpjaHVu
a0hlYWRfOyAgICAvLyE8IEhlYWQgb2YgdGhlIGNodW5rIGxpbmtlZC1saXN0LiBPbmx5IHRoZSBo
ZWFkIGNodW5rIHNlcnZlcyBhbGxvY2F0aW9uLgotICAgIHNpemVfdCBjaHVua19jYXBhY2l0eV87
ICAgICAvLyE8IFRoZSBtaW5pbXVtIGNhcGFjaXR5IG9mIGNodW5rIHdoZW4gdGhleSBhcmUgYWxs
b2NhdGVkLgotICAgIHZvaWQgKnVzZXJCdWZmZXJfOyAgICAgICAgICAvLyE8IFVzZXIgc3VwcGxp
ZWQgYnVmZmVyLgotICAgIEJhc2VBbGxvY2F0b3IqIGJhc2VBbGxvY2F0b3JfOyAgLy8hPCBiYXNl
IGFsbG9jYXRvciBmb3IgYWxsb2NhdGluZyBtZW1vcnkgY2h1bmtzLgotICAgIEJhc2VBbGxvY2F0
b3IqIG93bkJhc2VBbGxvY2F0b3JfOyAgIC8vITwgYmFzZSBhbGxvY2F0b3IgY3JlYXRlZCBieSB0
aGlzIG9iamVjdC4KLX07Ci0KLVJBUElESlNPTl9OQU1FU1BBQ0VfRU5ECi0KLSNlbmRpZiAvLyBS
QVBJREpTT05fRU5DT0RJTkdTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2RvY3Vt
ZW50LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFw
aWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2RvY3VtZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDk0ZDZlNTM1NWZiYmExOGY0OTRhZjhlNjdkOTI4ZDhlMTk0ZDEwZWEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNv
bi9kb2N1bWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTkzMiArMCwwIEBACi0vLyBDb3B5cmln
aHQgKEMpIDIwMTEgTWlsbyBZaXAKLS8vCi0vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk
LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0vLyBvZiB0
aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m
dHdhcmUiKSwgdG8gZGVhbAotLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24s
IGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotLy8gdG8gdXNlLCBjb3B5
LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Ig
c2VsbAotLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRv
IHdob20gdGhlIFNvZnR3YXJlIGlzCi0vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8g
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotLy8KLS8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90
aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0vLyBh
bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLS8vCi0v
LyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB
TlkgS0lORCwgRVhQUkVTUyBPUgotLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF
RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0vLyBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUKLS8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg
Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLS8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ
T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi0vLyBPVVQg
T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS
IERFQUxJTkdTIElOCi0vLyBUSEUgU09GVFdBUkUuCi0KLSNpZm5kZWYgUkFQSURKU09OX0RPQ1VN
RU5UX0hfCi0jZGVmaW5lIFJBUElESlNPTl9ET0NVTUVOVF9IXwotCi0vKiEgXGZpbGUgZG9jdW1l
bnQuaCAqLwotCi0jaW5jbHVkZSAicmVhZGVyLmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwvbWV0YS5o
IgotI2luY2x1ZGUgImludGVybmFsL3N0cmZ1bmMuaCIKLSNpbmNsdWRlIDxuZXc+ICAgICAgLy8g
cGxhY2VtZW50IG5ldwotCi0jaWZkZWYgX01TQ19WRVIKLVJBUElESlNPTl9ESUFHX1BVU0gKLVJB
UElESlNPTl9ESUFHX09GRig0MTI3KSAvLyBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0
YW50Ci0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKQotUkFQSURKU09OX0RJQUdfUFVTSAotUkFQSURK
U09OX0RJQUdfT0ZGKGVmZmMrKykKLSNlbmRpZgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0v
LyBSQVBJREpTT05fSEFTX1NURFNUUklORwotCi0jaWZuZGVmIFJBUElESlNPTl9IQVNfU1REU1RS
SU5HCi0jaWZkZWYgUkFQSURKU09OX0RPWFlHRU5fUlVOTklORwotI2RlZmluZSBSQVBJREpTT05f
SEFTX1NURFNUUklORyAxIC8vIGZvcmNlIGdlbmVyYXRpb24gb2YgZG9jdW1lbnRhdGlvbgotI2Vs
c2UKLSNkZWZpbmUgUkFQSURKU09OX0hBU19TVERTVFJJTkcgMCAvLyBubyBzdGQ6OnN0cmluZyBz
dXBwb3J0IGJ5IGRlZmF1bHQKLSNlbmRpZgotLyohIFxkZWYgUkFQSURKU09OX0hBU19TVERTVFJJ
TkcKLSAgICBcaW5ncm91cCBSQVBJREpTT05fQ09ORklHCi0gICAgXGJyaWVmIEVuYWJsZSBSYXBp
ZEpTT04gc3VwcG9ydCBmb3IgXGMgc3RkOjpzdHJpbmcKLQotICAgIEJ5IGRlZmluaW5nIHRoaXMg
cHJlcHJvY2Vzc29yIHN5bWJvbCB0byBcYyAxLCBzZXZlcmFsIGNvbnZlbmllbmNlIGZ1bmN0aW9u
cyBmb3IgdXNpbmcKLSAgICBccmVmIHJhcGlkanNvbjo6R2VuZXJpY1ZhbHVlIHdpdGggXGMgc3Rk
OjpzdHJpbmcgYXJlIGVuYWJsZWQsIGVzcGVjaWFsbHkKLSAgICBmb3IgY29uc3RydWN0aW9uIGFu
ZCBjb21wYXJpc29uLgotCi0gICAgXGhpZGVpbml0aWFsaXplcgotKi8KLSNpbmNsdWRlIDxzdHJp
bmc+Ci0jZW5kaWYgLy8gUkFQSURKU09OX0hBU19TVERTVFJJTkcKLQotI2lmbmRlZiBSQVBJREpT
T05fTk9NRU1CRVJJVEVSQVRPUkNMQVNTCi0jaW5jbHVkZSA8aXRlcmF0b3I+IC8vIHN0ZDo6aXRl
cmF0b3IsIHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcKLSNlbmRpZgotCi0jaWYgUkFQ
SURKU09OX0hBU19DWFgxMV9SVkFMVUVfUkVGUwotI2luY2x1ZGUgPHV0aWxpdHk+IC8vIHN0ZDo6
bW92ZQotI2VuZGlmCi0KLVJBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KLQotLy8gRm9yd2FyZCBk
ZWNsYXJhdGlvbi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbmNvZGluZywgdHlwZW5hbWUgQWxsb2Nh
dG9yPgotY2xhc3MgR2VuZXJpY1ZhbHVlOwotCi0vLyEgTmFtZS12YWx1ZSBwYWlyIGluIGEgSlNP
TiBvYmplY3QgdmFsdWUuCi0vKiEKLSAgICBUaGlzIGNsYXNzIHdhcyBpbnRlcm5hbCB0byBHZW5l
cmljVmFsdWUuIEl0IHVzZWQgdG8gYmUgYSBpbm5lciBzdHJ1Y3QuCi0gICAgQnV0IGEgY29tcGls
ZXIgKElCTSBYTCBDL0MrKyBmb3IgQUlYKSBoYXZlIHJlcG9ydGVkIHRvIGhhdmUgcHJvYmxlbSB3
aXRoIHRoYXQgc28gaXQgbW92ZWQgYXMgYSBuYW1lc3BhY2Ugc2NvcGUgc3RydWN0LgotICAgIGh0
dHBzOi8vY29kZS5nb29nbGUuY29tL3AvcmFwaWRqc29uL2lzc3Vlcy9kZXRhaWw/aWQ9NjQKLSov
Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgRW5jb2RpbmcsIHR5cGVuYW1lIEFsbG9jYXRvcj4gCi1zdHJ1
Y3QgR2VuZXJpY01lbWJlciB7IAotICAgIEdlbmVyaWNWYWx1ZTxFbmNvZGluZywgQWxsb2NhdG9y
PiBuYW1lOyAgICAgLy8hPCBuYW1lIG9mIG1lbWJlciAobXVzdCBiZSBhIHN0cmluZykKLSAgICBH
ZW5lcmljVmFsdWU8RW5jb2RpbmcsIEFsbG9jYXRvcj4gdmFsdWU7ICAgIC8vITwgdmFsdWUgb2Yg
bWVtYmVyLgotfTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gR2VuZXJpY01lbWJlckl0
ZXJhdG9yCi0KLSNpZm5kZWYgUkFQSURKU09OX05PTUVNQkVSSVRFUkFUT1JDTEFTUwotCi0vLyEg
KENvbnN0YW50KSBtZW1iZXIgaXRlcmF0b3IgZm9yIGEgSlNPTiBvYmplY3QgdmFsdWUKLS8qIQot
ICAgIFx0cGFyYW0gQ29uc3QgSXMgdGhpcyBhIGNvbnN0YW50IGl0ZXJhdG9yPwotICAgIFx0cGFy
YW0gRW5jb2RpbmcgICAgRW5jb2Rpbmcgb2YgdGhlIHZhbHVlLiAoRXZlbiBub24tc3RyaW5nIHZh
bHVlcyBuZWVkIHRvIGhhdmUgdGhlIHNhbWUgZW5jb2RpbmcgaW4gYSBkb2N1bWVudCkKLSAgICBc
dHBhcmFtIEFsbG9jYXRvciAgIEFsbG9jYXRvciB0eXBlIGZvciBhbGxvY2F0aW5nIG1lbW9yeSBv
ZiBvYmplY3QsIGFycmF5IGFuZCBzdHJpbmcuCi0KLSAgICBUaGlzIGNsYXNzIGltcGxlbWVudHMg
YSBSYW5kb20gQWNjZXNzIEl0ZXJhdG9yIGZvciBHZW5lcmljTWVtYmVyIGVsZW1lbnRzCi0gICAg
b2YgYSBHZW5lcmljVmFsdWUsIHNlZSBJU08vSUVDIDE0ODgyOjIwMDMoRSkgQysrIHN0YW5kYXJk
LCAyNC4xIFtsaWIuaXRlcmF0b3IucmVxdWlyZW1lbnRzXS4KLQotICAgIFxub3RlIFRoaXMgaXRl
cmF0b3IgaW1wbGVtZW50YXRpb24gaXMgbWFpbmx5IGludGVuZGVkIHRvIGF2b2lkIGltcGxpY2l0
Ci0gICAgICAgIGNvbnZlcnNpb25zIGZyb20gaXRlcmF0b3IgdmFsdWVzIHRvIFxjIE5VTEwsCi0g
ICAgICAgIGUuZy4gZnJvbSBHZW5lcmljVmFsdWU6OkZpbmRNZW1iZXIuCi0KLSAgICBcbm90ZSBE
ZWZpbmUgXGMgUkFQSURKU09OX05PTUVNQkVSSVRFUkFUT1JDTEFTUyB0byBmYWxsIGJhY2sgdG8g
YQotICAgICAgICBwb2ludGVyLWJhc2VkIGltcGxlbWVudGF0aW9uLCBpZiB5b3VyIHBsYXRmb3Jt
IGRvZXNuJ3QgcHJvdmlkZQotICAgICAgICB0aGUgQysrIDxpdGVyYXRvcj4gaGVhZGVyLgotCi0g
ICAgXHNlZSBHZW5lcmljTWVtYmVyLCBHZW5lcmljVmFsdWU6Ok1lbWJlckl0ZXJhdG9yLCBHZW5l
cmljVmFsdWU6OkNvbnN0TWVtYmVySXRlcmF0b3IKLSAqLwotdGVtcGxhdGUgPGJvb2wgQ29uc3Qs
IHR5cGVuYW1lIEVuY29kaW5nLCB0eXBlbmFtZSBBbGxvY2F0b3I+Ci1jbGFzcyBHZW5lcmljTWVt
YmVySXRlcmF0b3IKLSAgICA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0ZDo6cmFuZG9tX2FjY2Vz
c19pdGVyYXRvcl90YWcKLSAgICAgICAgLCB0eXBlbmFtZSBpbnRlcm5hbDo6TWF5YmVBZGRDb25z
dDxDb25zdCxHZW5lcmljTWVtYmVyPEVuY29kaW5nLEFsbG9jYXRvcj4gPjo6VHlwZT4gewotCi0g
ICAgZnJpZW5kIGNsYXNzIEdlbmVyaWNWYWx1ZTxFbmNvZGluZyxBbGxvY2F0b3I+OwotICAgIHRl
bXBsYXRlIDxib29sLCB0eXBlbmFtZSwgdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBHZW5lcmljTWVt
YmVySXRlcmF0b3I7Ci0KLSAgICB0eXBlZGVmIEdlbmVyaWNNZW1iZXI8RW5jb2RpbmcsQWxsb2Nh
dG9yPiBQbGFpblR5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6TWF5YmVBZGRD
b25zdDxDb25zdCxQbGFpblR5cGU+OjpUeXBlIFZhbHVlVHlwZTsKLSAgICB0eXBlZGVmIHN0ZDo6
aXRlcmF0b3I8c3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyxWYWx1ZVR5cGU+IEJhc2VU
eXBlOwotCi1wdWJsaWM6Ci0gICAgLy8hIEl0ZXJhdG9yIHR5cGUgaXRzZWxmCi0gICAgdHlwZWRl
ZiBHZW5lcmljTWVtYmVySXRlcmF0b3IgSXRlcmF0b3I7Ci0gICAgLy8hIENvbnN0YW50IGl0ZXJh
dG9yIHR5cGUKLSAgICB0eXBlZGVmIEdlbmVyaWNNZW1iZXJJdGVyYXRvcjx0cnVlLEVuY29kaW5n
LEFsbG9jYXRvcj4gIENvbnN0SXRlcmF0b3I7Ci0gICAgLy8hIE5vbi1jb25zdGFudCBpdGVyYXRv
ciB0eXBlCi0gICAgdHlwZWRlZiBHZW5lcmljTWVtYmVySXRlcmF0b3I8ZmFsc2UsRW5jb2Rpbmcs
QWxsb2NhdG9yPiBOb25Db25zdEl0ZXJhdG9yOwotCi0gICAgLy8hIFBvaW50ZXIgdG8gKGNvbnN0
KSBHZW5lcmljTWVtYmVyCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBCYXNlVHlwZTo6cG9pbnRlciAg
ICAgICAgIFBvaW50ZXI7Ci0gICAgLy8hIFJlZmVyZW5jZSB0byAoY29uc3QpIEdlbmVyaWNNZW1i
ZXIKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEJhc2VUeXBlOjpyZWZlcmVuY2UgICAgICAgUmVmZXJl
bmNlOwotICAgIC8vISBTaWduZWQgaW50ZWdlciB0eXBlIChlLmcuIFxjIHB0cmRpZmZfdCkKLSAg
ICB0eXBlZGVmIHR5cGVuYW1lIEJhc2VUeXBlOjpkaWZmZXJlbmNlX3R5cGUgRGlmZmVyZW5jZVR5
cGU7Ci0KLSAgICAvLyEgRGVmYXVsdCBjb25zdHJ1Y3RvciAoc2luZ3VsYXIgdmFsdWUpCi0gICAg
LyohIENyZWF0ZXMgYW4gaXRlcmF0b3IgcG9pbnRpbmcgdG8gbm8gZWxlbWVudC4KLSAgICAgICAg
XG5vdGUgQWxsIG9wZXJhdGlvbnMsIGV4Y2VwdCBmb3IgY29tcGFyaXNvbnMsIGFyZSB1bmRlZmlu
ZWQgb24gc3VjaCB2YWx1ZXMuCi0gICAgICovCi0gICAgR2VuZXJpY01lbWJlckl0ZXJhdG9yKCkg
OiBwdHJfKCkge30KLQotICAgIC8vISBJdGVyYXRvciBjb252ZXJzaW9ucyB0byBtb3JlIGNvbnN0
Ci0gICAgLyohCi0gICAgICAgIFxwYXJhbSBpdCAoTm9uLWNvbnN0KSBpdGVyYXRvciB0byBjb3B5
IGZyb20KLQotICAgICAgICBBbGxvd3MgdGhlIGNyZWF0aW9uIG9mIGFuIGl0ZXJhdG9yIGZyb20g
YW5vdGhlciBHZW5lcmljTWVtYmVySXRlcmF0b3IKLSAgICAgICAgdGhhdCBpcyAibGVzcyBjb25z
dCIuICBFc3BlY2lhbGx5LCBjcmVhdGluZyBhIG5vbi1jb25zdGFudCBpdGVyYXRvcgotICAgICAg
ICBmcm9tIGEgY29uc3RhbnQgaXRlcmF0b3IgYXJlIGRpc2FibGVkOgotICAgICAgICBcbGkgY29u
c3QgLT4gbm9uLWNvbnN0IChub3Qgb2spCi0gICAgICAgIFxsaSBjb25zdCAtPiBjb25zdCAob2sp
Ci0gICAgICAgIFxsaSBub24tY29uc3QgLT4gY29uc3QgKG9rKQotICAgICAgICBcbGkgbm9uLWNv
bnN0IC0+IG5vbi1jb25zdCAob2spCi0KLSAgICAgICAgXG5vdGUgSWYgdGhlIFxjIENvbnN0IHRl
bXBsYXRlIHBhcmFtZXRlciBpcyBhbHJlYWR5IFxjIGZhbHNlLCB0aGlzCi0gICAgICAgICAgICBj
b25zdHJ1Y3RvciBlZmZlY3RpdmVseSBkZWZpbmVzIGEgcmVndWxhciBjb3B5LWNvbnN0cnVjdG9y
LgotICAgICAgICAgICAgT3RoZXJ3aXNlLCB0aGUgY29weSBjb25zdHJ1Y3RvciBpcyBpbXBsaWNp
dGx5IGRlZmluZWQuCi0gICAgKi8KLSAgICBHZW5lcmljTWVtYmVySXRlcmF0b3IoY29uc3QgTm9u
Q29uc3RJdGVyYXRvciAmIGl0KSA6IHB0cl8oaXQucHRyXykge30KLQotICAgIC8vISBAbmFtZSBz
dGVwcGluZwotICAgIC8vQHsKLSAgICBJdGVyYXRvciYgb3BlcmF0b3IrKygpeyArK3B0cl87IHJl
dHVybiAqdGhpczsgfQotICAgIEl0ZXJhdG9yJiBvcGVyYXRvci0tKCl7IC0tcHRyXzsgcmV0dXJu
ICp0aGlzOyB9Ci0gICAgSXRlcmF0b3IgIG9wZXJhdG9yKysoaW50KXsgSXRlcmF0b3Igb2xkKCp0
aGlzKTsgKytwdHJfOyByZXR1cm4gb2xkOyB9Ci0gICAgSXRlcmF0b3IgIG9wZXJhdG9yLS0oaW50
KXsgSXRlcmF0b3Igb2xkKCp0aGlzKTsgLS1wdHJfOyByZXR1cm4gb2xkOyB9Ci0gICAgLy9AfQot
Ci0gICAgLy8hIEBuYW1lIGluY3JlbWVudC9kZWNyZW1lbnQKLSAgICAvL0B7Ci0gICAgSXRlcmF0
b3Igb3BlcmF0b3IrKERpZmZlcmVuY2VUeXBlIG4pIGNvbnN0IHsgcmV0dXJuIEl0ZXJhdG9yKHB0
cl8rbik7IH0KLSAgICBJdGVyYXRvciBvcGVyYXRvci0oRGlmZmVyZW5jZVR5cGUgbikgY29uc3Qg
eyByZXR1cm4gSXRlcmF0b3IocHRyXy1uKTsgfQotCi0gICAgSXRlcmF0b3ImIG9wZXJhdG9yKz0o
RGlmZmVyZW5jZVR5cGUgbikgeyBwdHJfKz1uOyByZXR1cm4gKnRoaXM7IH0KLSAgICBJdGVyYXRv
ciYgb3BlcmF0b3ItPShEaWZmZXJlbmNlVHlwZSBuKSB7IHB0cl8tPW47IHJldHVybiAqdGhpczsg
fQotICAgIC8vQH0KLQotICAgIC8vISBAbmFtZSByZWxhdGlvbnMKLSAgICAvL0B7Ci0gICAgYm9v
bCBvcGVyYXRvcj09KENvbnN0SXRlcmF0b3IgdGhhdCkgY29uc3QgeyByZXR1cm4gcHRyXyA9PSB0
aGF0LnB0cl87IH0KLSAgICBib29sIG9wZXJhdG9yIT0oQ29uc3RJdGVyYXRvciB0aGF0KSBjb25z
dCB7IHJldHVybiBwdHJfICE9IHRoYXQucHRyXzsgfQotICAgIGJvb2wgb3BlcmF0b3I8PShDb25z
dEl0ZXJhdG9yIHRoYXQpIGNvbnN0IHsgcmV0dXJuIHB0cl8gPD0gdGhhdC5wdHJfOyB9Ci0gICAg
Ym9vbCBvcGVyYXRvcj49KENvbnN0SXRlcmF0b3IgdGhhdCkgY29uc3QgeyByZXR1cm4gcHRyXyA+
PSB0aGF0LnB0cl87IH0KLSAgICBib29sIG9wZXJhdG9yPCAoQ29uc3RJdGVyYXRvciB0aGF0KSBj
b25zdCB7IHJldHVybiBwdHJfIDwgdGhhdC5wdHJfOyB9Ci0gICAgYm9vbCBvcGVyYXRvcj4gKENv
bnN0SXRlcmF0b3IgdGhhdCkgY29uc3QgeyByZXR1cm4gcHRyXyA+IHRoYXQucHRyXzsgfQotICAg
IC8vQH0KLQotICAgIC8vISBAbmFtZSBkZXJlZmVyZW5jZQotICAgIC8vQHsKLSAgICBSZWZlcmVu
Y2Ugb3BlcmF0b3IqKCkgY29uc3QgeyByZXR1cm4gKnB0cl87IH0KLSAgICBQb2ludGVyICAgb3Bl
cmF0b3ItPigpIGNvbnN0IHsgcmV0dXJuIHB0cl87IH0KLSAgICBSZWZlcmVuY2Ugb3BlcmF0b3Jb
XShEaWZmZXJlbmNlVHlwZSBuKSBjb25zdCB7IHJldHVybiBwdHJfW25dOyB9Ci0gICAgLy9AfQot
Ci0gICAgLy8hIERpc3RhbmNlCi0gICAgRGlmZmVyZW5jZVR5cGUgb3BlcmF0b3ItKENvbnN0SXRl
cmF0b3IgdGhhdCkgY29uc3QgeyByZXR1cm4gcHRyXy10aGF0LnB0cl87IH0KLQotcHJpdmF0ZToK
LSAgICAvLyEgSW50ZXJuYWwgY29uc3RydWN0b3IgZnJvbSBwbGFpbiBwb2ludGVyCi0gICAgZXhw
bGljaXQgR2VuZXJpY01lbWJlckl0ZXJhdG9yKFBvaW50ZXIgcCkgOiBwdHJfKHApIHt9Ci0KLSAg
ICBQb2ludGVyIHB0cl87IC8vITwgcmF3IHBvaW50ZXIKLX07Ci0KLSNlbHNlIC8vIFJBUElESlNP
Tl9OT01FTUJFUklURVJBVE9SQ0xBU1MKLQotLy8gY2xhc3MtYmFzZWQgbWVtYmVyIGl0ZXJhdG9y
IGltcGxlbWVudGF0aW9uIGRpc2FibGVkLCB1c2UgcGxhaW4gcG9pbnRlcnMKLQotdGVtcGxhdGUg
PGJvb2wgQ29uc3QsIHR5cGVuYW1lIEVuY29kaW5nLCB0eXBlbmFtZSBBbGxvY2F0b3I+Ci1zdHJ1
Y3QgR2VuZXJpY01lbWJlckl0ZXJhdG9yOwotCi0vLyEgbm9uLWNvbnN0IEdlbmVyaWNNZW1iZXJJ
dGVyYXRvcgotdGVtcGxhdGUgPHR5cGVuYW1lIEVuY29kaW5nLCB0eXBlbmFtZSBBbGxvY2F0b3I+
Ci1zdHJ1Y3QgR2VuZXJpY01lbWJlckl0ZXJhdG9yPGZhbHNlLEVuY29kaW5nLEFsbG9jYXRvcj4g
ewotICAgIC8vISB1c2UgcGxhaW4gcG9pbnRlciBhcyBpdGVyYXRvciB0eXBlCi0gICAgdHlwZWRl
ZiBHZW5lcmljTWVtYmVyPEVuY29kaW5nLEFsbG9jYXRvcj4qIEl0ZXJhdG9yOwotfTsKLS8vISBj
b25zdCBHZW5lcmljTWVtYmVySXRlcmF0b3IKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbmNvZGluZywg
dHlwZW5hbWUgQWxsb2NhdG9yPgotc3RydWN0IEdlbmVyaWNNZW1iZXJJdGVyYXRvcjx0cnVlLEVu
Y29kaW5nLEFsbG9jYXRvcj4gewotICAgIC8vISB1c2UgcGxhaW4gY29uc3QgcG9pbnRlciBhcyBp
dGVyYXRvciB0eXBlCi0gICAgdHlwZWRlZiBjb25zdCBHZW5lcmljTWVtYmVyPEVuY29kaW5nLEFs
bG9jYXRvcj4qIEl0ZXJhdG9yOwotfTsKLQotI2VuZGlmIC8vIFJBUElESlNPTl9OT01FTUJFUklU
RVJBVE9SQ0xBU1MKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gR2VuZXJpY1N0cmluZ1Jl
ZgotCi0vLyEgUmVmZXJlbmNlIHRvIGEgY29uc3RhbnQgc3RyaW5nIChub3QgdGFraW5nIGEgY29w
eSkKLS8qIQotICAgIFx0cGFyYW0gQ2hhclR5cGUgY2hhcmFjdGVyIHR5cGUgb2YgdGhlIHN0cmlu
ZwotCi0gICAgVGhpcyBoZWxwZXIgY2xhc3MgaXMgdXNlZCB0byBhdXRvbWF0aWNhbGx5IGluZmVy
IGNvbnN0YW50IHN0cmluZwotICAgIHJlZmVyZW5jZXMgZm9yIHN0cmluZyBsaXRlcmFscywgZXNw
ZWNpYWxseSBmcm9tIFxjIGNvbnN0IFxiICghKQotICAgIGNoYXJhY3RlciBhcnJheXMuCi0KLSAg
ICBUaGUgbWFpbiB1c2UgaXMgZm9yIGNyZWF0aW5nIEpTT04gc3RyaW5nIHZhbHVlcyB3aXRob3V0
IGNvcHlpbmcgdGhlCi0gICAgc291cmNlIHN0cmluZyB2aWEgYW4gXHJlZiBBbGxvY2F0b3IuICBU
aGlzIHJlcXVpcmVzIHRoYXQgdGhlIHJlZmVyZW5jZWQKLSAgICBzdHJpbmcgcG9pbnRlcnMgaGF2
ZSBhIHN1ZmZpY2llbnQgbGlmZXRpbWUsIHdoaWNoIGV4Y2VlZHMgdGhlIGxpZmV0aW1lCi0gICAg
b2YgdGhlIGFzc29jaWF0ZWQgR2VuZXJpY1ZhbHVlLgotCi0gICAgXGIgRXhhbXBsZQotICAgIFxj
b2RlCi0gICAgVmFsdWUgdigiZm9vIik7ICAgLy8gb2ssIG5vIG5lZWQgdG8gY29weSAmIGNhbGN1
bGF0ZSBsZW5ndGgKLSAgICBjb25zdCBjaGFyIGZvb1tdID0gImZvbyI7Ci0gICAgdi5TZXRTdHJp
bmcoZm9vKTsgLy8gb2sKLQotICAgIGNvbnN0IGNoYXIqIGJhciA9IGZvbzsKLSAgICAvLyBWYWx1
ZSB4KGJhcik7IC8vIG5vdCBvaywgY2FuJ3QgcmVseSBvbiBiYXIncyBsaWZldGltZQotICAgIFZh
bHVlIHgoU3RyaW5nUmVmKGJhcikpOyAvLyBsaWZldGltZSBleHBsaWNpdGx5IGd1YXJhbnRlZWQg
YnkgdXNlcgotICAgIFZhbHVlIHkoU3RyaW5nUmVmKGJhciwgMykpOyAgLy8gb2ssIGV4cGxpY2l0
bHkgcGFzcyBsZW5ndGgKLSAgICBcZW5kY29kZQotCi0gICAgXHNlZSBTdHJpbmdSZWYsIEdlbmVy
aWNWYWx1ZTo6U2V0U3RyaW5nCi0qLwotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGU+Ci1zdHJ1
Y3QgR2VuZXJpY1N0cmluZ1JlZiB7Ci0gICAgdHlwZWRlZiBDaGFyVHlwZSBDaDsgLy8hPCBjaGFy
YWN0ZXIgdHlwZSBvZiB0aGUgc3RyaW5nCi0KLSAgICAvLyEgQ3JlYXRlIHN0cmluZyByZWZlcmVu
Y2UgZnJvbSBcYyBjb25zdCBjaGFyYWN0ZXIgYXJyYXkKLSAgICAvKiEKLSAgICAgICAgVGhpcyBj
b25zdHJ1Y3RvciBpbXBsaWNpdGx5IGNyZWF0ZXMgYSBjb25zdGFudCBzdHJpbmcgcmVmZXJlbmNl
IGZyb20KLSAgICAgICAgYSBcYyBjb25zdCBjaGFyYWN0ZXIgYXJyYXkuICBJdCBoYXMgYmV0dGVy
IHBlcmZvcm1hbmNlIHRoYW4KLSAgICAgICAgXHJlZiBTdHJpbmdSZWYoY29uc3QgQ2hhclR5cGUq
KSBieSBpbmZlcnJpbmcgdGhlIHN0cmluZyBccmVmIGxlbmd0aAotICAgICAgICBmcm9tIHRoZSBh
cnJheSBsZW5ndGgsIGFuZCBhbHNvIHN1cHBvcnRzIHN0cmluZ3MgY29udGFpbmluZyBudWxsCi0g
ICAgICAgIGNoYXJhY3RlcnMuCi0KLSAgICAgICAgXHRwYXJhbSBOIGxlbmd0aCBvZiB0aGUgc3Ry
aW5nLCBhdXRvbWF0aWNhbGx5IGluZmVycmVkCi0KLSAgICAgICAgXHBhcmFtIHN0ciBDb25zdGFu
dCBjaGFyYWN0ZXIgYXJyYXksIGxpZmV0aW1lIGFzc3VtZWQgdG8gYmUgbG9uZ2VyCi0gICAgICAg
ICAgICB0aGFuIHRoZSB1c2Ugb2YgdGhlIHN0cmluZyBpbiBlLmcuIGEgR2VuZXJpY1ZhbHVlCi0K
LSAgICAgICAgXHBvc3QgXHJlZiBzID09IHN0cgotCi0gICAgICAgIFxub3RlIENvbnN0YW50IGNv
bXBsZXhpdHkuCi0gICAgICAgIFxub3RlIFRoZXJlIGlzIGEgaGlkZGVuLCBwcml2YXRlIG92ZXJs
b2FkIHRvIGRpc2FsbG93IHJlZmVyZW5jZXMgdG8KLSAgICAgICAgICAgIG5vbi1jb25zdCBjaGFy
YWN0ZXIgYXJyYXlzIHRvIGJlIGNyZWF0ZWQgdmlhIHRoaXMgY29uc3RydWN0b3IuCi0gICAgICAg
ICAgICBCeSB0aGlzLCBlLmcuIGZ1bmN0aW9uLXNjb3BlIGFycmF5cyB1c2VkIHRvIGJlIGZpbGxl
ZCB2aWEKLSAgICAgICAgICAgIFxjIHNucHJpbnRmIGFyZSBleGNsdWRlZCBmcm9tIGNvbnNpZGVy
YXRpb24uCi0gICAgICAgICAgICBJbiBzdWNoIGNhc2VzLCB0aGUgcmVmZXJlbmNlZCBzdHJpbmcg
c2hvdWxkIGJlIFxiIGNvcGllZCB0byB0aGUKLSAgICAgICAgICAgIEdlbmVyaWNWYWx1ZSBpbnN0
ZWFkLgotICAgICAqLwotICAgIHRlbXBsYXRlPFNpemVUeXBlIE4+Ci0gICAgR2VuZXJpY1N0cmlu
Z1JlZihjb25zdCBDaGFyVHlwZSAoJnN0cilbTl0pIFJBUElESlNPTl9OT0VYQ0VQVAotICAgICAg
ICA6IHMoc3RyKSwgbGVuZ3RoKE4tMSkge30KLQotICAgIC8vISBFeHBsaWNpdGx5IGNyZWF0ZSBz
dHJpbmcgcmVmZXJlbmNlIGZyb20gXGMgY29uc3QgY2hhcmFjdGVyIHBvaW50ZXIKLSAgICAvKiEK
LSAgICAgICAgVGhpcyBjb25zdHJ1Y3RvciBjYW4gYmUgdXNlZCB0byBcYiBleHBsaWNpdGx5ICBj
cmVhdGUgYSByZWZlcmVuY2UgdG8KLSAgICAgICAgYSBjb25zdGFudCBzdHJpbmcgcG9pbnRlci4K
LQotICAgICAgICBcc2VlIFN0cmluZ1JlZihjb25zdCBDaGFyVHlwZSopCi0KLSAgICAgICAgXHBh
cmFtIHN0ciBDb25zdGFudCBjaGFyYWN0ZXIgcG9pbnRlciwgbGlmZXRpbWUgYXNzdW1lZCB0byBi
ZSBsb25nZXIKLSAgICAgICAgICAgIHRoYW4gdGhlIHVzZSBvZiB0aGUgc3RyaW5nIGluIGUuZy4g
YSBHZW5lcmljVmFsdWUKLQotICAgICAgICBccG9zdCBccmVmIHMgPT0gc3RyCi0KLSAgICAgICAg
XG5vdGUgVGhlcmUgaXMgYSBoaWRkZW4sIHByaXZhdGUgb3ZlcmxvYWQgdG8gZGlzYWxsb3cgcmVm
ZXJlbmNlcyB0bwotICAgICAgICAgICAgbm9uLWNvbnN0IGNoYXJhY3RlciBhcnJheXMgdG8gYmUg
Y3JlYXRlZCB2aWEgdGhpcyBjb25zdHJ1Y3Rvci4KLSAgICAgICAgICAgIEJ5IHRoaXMsIGUuZy4g
ZnVuY3Rpb24tc2NvcGUgYXJyYXlzIHVzZWQgdG8gYmUgZmlsbGVkIHZpYQotICAgICAgICAgICAg
XGMgc25wcmludGYgYXJlIGV4Y2x1ZGVkIGZyb20gY29uc2lkZXJhdGlvbi4KLSAgICAgICAgICAg
IEluIHN1Y2ggY2FzZXMsIHRoZSByZWZlcmVuY2VkIHN0cmluZyBzaG91bGQgYmUgXGIgY29waWVk
IHRvIHRoZQotICAgICAgICAgICAgR2VuZXJpY1ZhbHVlIGluc3RlYWQuCi0gICAgICovCi0gICAg
ZXhwbGljaXQgR2VuZXJpY1N0cmluZ1JlZihjb25zdCBDaGFyVHlwZSogc3RyKQotICAgICAgICA6
IHMoc3RyKSwgbGVuZ3RoKGludGVybmFsOjpTdHJMZW4oc3RyKSl7IFJBUElESlNPTl9BU1NFUlQo
cyAhPSBOVUxMKTsgfQotCi0gICAgLy8hIENyZWF0ZSBjb25zdGFudCBzdHJpbmcgcmVmZXJlbmNl
IGZyb20gcG9pbnRlciBhbmQgbGVuZ3RoCi0gICAgLyohIFxwYXJhbSBzdHIgY29uc3RhbnQgc3Ry
aW5nLCBsaWZldGltZSBhc3N1bWVkIHRvIGJlIGxvbmdlciB0aGFuIHRoZSB1c2Ugb2YgdGhlIHN0
cmluZyBpbiBlLmcuIGEgR2VuZXJpY1ZhbHVlCi0gICAgICAgIFxwYXJhbSBsZW4gbGVuZ3RoIG9m
IHRoZSBzdHJpbmcsIGV4Y2x1ZGluZyB0aGUgdHJhaWxpbmcgTlVMTCB0ZXJtaW5hdG9yCi0KLSAg
ICAgICAgXHBvc3QgXHJlZiBzID09IHN0ciAmJiBccmVmIGxlbmd0aCA9PSBsZW4KLSAgICAgICAg
XG5vdGUgQ29uc3RhbnQgY29tcGxleGl0eS4KLSAgICAgKi8KLSAgICBHZW5lcmljU3RyaW5nUmVm
KGNvbnN0IENoYXJUeXBlKiBzdHIsIFNpemVUeXBlIGxlbikKLSAgICAgICAgOiBzKHN0ciksIGxl
bmd0aChsZW4pIHsgUkFQSURKU09OX0FTU0VSVChzICE9IE5VTEwpOyB9Ci0KLSAgICAvLyEgaW1w
bGljaXQgY29udmVyc2lvbiB0byBwbGFpbiBDaGFyVHlwZSBwb2ludGVyCi0gICAgb3BlcmF0b3Ig
Y29uc3QgQ2ggKigpIGNvbnN0IHsgcmV0dXJuIHM7IH0KLQotICAgIGNvbnN0IENoKiBjb25zdCBz
OyAvLyE8IHBsYWluIENoYXJUeXBlIHBvaW50ZXIKLSAgICBjb25zdCBTaXplVHlwZSBsZW5ndGg7
IC8vITwgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgKGV4Y2x1ZGluZyB0aGUgdHJhaWxpbmcgTlVMTCB0
ZXJtaW5hdG9yKQotCi1wcml2YXRlOgotICAgIC8vISBEaXNhbGxvdyBjb3B5LWFzc2lnbm1lbnQK
LSAgICBHZW5lcmljU3RyaW5nUmVmIG9wZXJhdG9yPShjb25zdCBHZW5lcmljU3RyaW5nUmVmJik7
Ci0gICAgLy8hIERpc2FsbG93IGNvbnN0cnVjdGlvbiBmcm9tIG5vbi1jb25zdCBhcnJheQotICAg
IHRlbXBsYXRlPFNpemVUeXBlIE4+Ci0gICAgR2VuZXJpY1N0cmluZ1JlZihDaGFyVHlwZSAoJnN0
cilbTl0pIC8qID0gZGVsZXRlICovOwotfTsKLQotLy8hIE1hcmsgYSBjaGFyYWN0ZXIgcG9pbnRl
ciBhcyBjb25zdGFudCBzdHJpbmcKLS8qISBNYXJrIGEgcGxhaW4gY2hhcmFjdGVyIHBvaW50ZXIg
YXMgYSAic3RyaW5nIGxpdGVyYWwiLiAgVGhpcyBmdW5jdGlvbgotICAgIGNhbiBiZSB1c2VkIHRv
IGF2b2lkIGNvcHlpbmcgYSBjaGFyYWN0ZXIgc3RyaW5nIHRvIGJlIHJlZmVyZW5jZWQgYXMgYQot
ICAgIHZhbHVlIGluIGEgSlNPTiBHZW5lcmljVmFsdWUgb2JqZWN0LCBpZiB0aGUgc3RyaW5nJ3Mg
bGlmZXRpbWUgaXMga25vd24KLSAgICB0byBiZSB2YWxpZCBsb25nIGVub3VnaC4KLSAgICBcdHBh
cmFtIENoYXJUeXBlIENoYXJhY3RlciB0eXBlIG9mIHRoZSBzdHJpbmcKLSAgICBccGFyYW0gc3Ry
IENvbnN0YW50IHN0cmluZywgbGlmZXRpbWUgYXNzdW1lZCB0byBiZSBsb25nZXIgdGhhbiB0aGUg
dXNlIG9mIHRoZSBzdHJpbmcgaW4gZS5nLiBhIEdlbmVyaWNWYWx1ZQotICAgIFxyZXR1cm4gR2Vu
ZXJpY1N0cmluZ1JlZiBzdHJpbmcgcmVmZXJlbmNlIG9iamVjdAotICAgIFxyZWxhdGVzYWxzbyBH
ZW5lcmljU3RyaW5nUmVmCi0KLSAgICBcc2VlIEdlbmVyaWNWYWx1ZTo6R2VuZXJpY1ZhbHVlKFN0
cmluZ1JlZlR5cGUpLCBHZW5lcmljVmFsdWU6Om9wZXJhdG9yPShTdHJpbmdSZWZUeXBlKSwgR2Vu
ZXJpY1ZhbHVlOjpTZXRTdHJpbmcoU3RyaW5nUmVmVHlwZSksIEdlbmVyaWNWYWx1ZTo6UHVzaEJh
Y2soU3RyaW5nUmVmVHlwZSwgQWxsb2NhdG9yJiksIEdlbmVyaWNWYWx1ZTo6QWRkTWVtYmVyCi0q
LwotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGU+Ci1pbmxpbmUgR2VuZXJpY1N0cmluZ1JlZjxD
aGFyVHlwZT4gU3RyaW5nUmVmKGNvbnN0IENoYXJUeXBlKiBzdHIpIHsKLSAgICByZXR1cm4gR2Vu
ZXJpY1N0cmluZ1JlZjxDaGFyVHlwZT4oc3RyLCBpbnRlcm5hbDo6U3RyTGVuKHN0cikpOwotfQot
Ci0vLyEgTWFyayBhIGNoYXJhY3RlciBwb2ludGVyIGFzIGNvbnN0YW50IHN0cmluZwotLyohIE1h
cmsgYSBwbGFpbiBjaGFyYWN0ZXIgcG9pbnRlciBhcyBhICJzdHJpbmcgbGl0ZXJhbCIuICBUaGlz
IGZ1bmN0aW9uCi0gICAgY2FuIGJlIHVzZWQgdG8gYXZvaWQgY29weWluZyBhIGNoYXJhY3RlciBz
dHJpbmcgdG8gYmUgcmVmZXJlbmNlZCBhcyBhCi0gICAgdmFsdWUgaW4gYSBKU09OIEdlbmVyaWNW
YWx1ZSBvYmplY3QsIGlmIHRoZSBzdHJpbmcncyBsaWZldGltZSBpcyBrbm93bgotICAgIHRvIGJl
IHZhbGlkIGxvbmcgZW5vdWdoLgotCi0gICAgVGhpcyB2ZXJzaW9uIGhhcyBiZXR0ZXIgcGVyZm9y
bWFuY2Ugd2l0aCBzdXBwbGllZCBsZW5ndGgsIGFuZCBhbHNvCi0gICAgc3VwcG9ydHMgc3RyaW5n
IGNvbnRhaW5pbmcgbnVsbCBjaGFyYWN0ZXJzLgotCi0gICAgXHRwYXJhbSBDaGFyVHlwZSBjaGFy
YWN0ZXIgdHlwZSBvZiB0aGUgc3RyaW5nCi0gICAgXHBhcmFtIHN0ciBDb25zdGFudCBzdHJpbmcs
IGxpZmV0aW1lIGFzc3VtZWQgdG8gYmUgbG9uZ2VyIHRoYW4gdGhlIHVzZSBvZiB0aGUgc3RyaW5n
IGluIGUuZy4gYSBHZW5lcmljVmFsdWUKLSAgICBccGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGggb2Yg
c291cmNlIHN0cmluZy4KLSAgICBccmV0dXJuIEdlbmVyaWNTdHJpbmdSZWYgc3RyaW5nIHJlZmVy
ZW5jZSBvYmplY3QKLSAgICBccmVsYXRlc2Fsc28gR2VuZXJpY1N0cmluZ1JlZgotKi8KLXRlbXBs
YXRlPHR5cGVuYW1lIENoYXJUeXBlPgotaW5saW5lIEdlbmVyaWNTdHJpbmdSZWY8Q2hhclR5cGU+
IFN0cmluZ1JlZihjb25zdCBDaGFyVHlwZSogc3RyLCBzaXplX3QgbGVuZ3RoKSB7Ci0gICAgcmV0
dXJuIEdlbmVyaWNTdHJpbmdSZWY8Q2hhclR5cGU+KHN0ciwgU2l6ZVR5cGUobGVuZ3RoKSk7Ci19
Ci0KLSNpZiBSQVBJREpTT05fSEFTX1NURFNUUklORwotLy8hIE1hcmsgYSBzdHJpbmcgb2JqZWN0
IGFzIGNvbnN0YW50IHN0cmluZwotLyohIE1hcmsgYSBzdHJpbmcgb2JqZWN0IChlLmcuIFxjIHN0
ZDo6c3RyaW5nKSBhcyBhICJzdHJpbmcgbGl0ZXJhbCIuCi0gICAgVGhpcyBmdW5jdGlvbiBjYW4g
YmUgdXNlZCB0byBhdm9pZCBjb3B5aW5nIGEgc3RyaW5nIHRvIGJlIHJlZmVyZW5jZWQgYXMgYQot
ICAgIHZhbHVlIGluIGEgSlNPTiBHZW5lcmljVmFsdWUgb2JqZWN0LCBpZiB0aGUgc3RyaW5nJ3Mg
bGlmZXRpbWUgaXMga25vd24KLSAgICB0byBiZSB2YWxpZCBsb25nIGVub3VnaC4KLQotICAgIFx0
cGFyYW0gQ2hhclR5cGUgY2hhcmFjdGVyIHR5cGUgb2YgdGhlIHN0cmluZwotICAgIFxwYXJhbSBz
dHIgQ29uc3RhbnQgc3RyaW5nLCBsaWZldGltZSBhc3N1bWVkIHRvIGJlIGxvbmdlciB0aGFuIHRo
ZSB1c2Ugb2YgdGhlIHN0cmluZyBpbiBlLmcuIGEgR2VuZXJpY1ZhbHVlCi0gICAgXHJldHVybiBH
ZW5lcmljU3RyaW5nUmVmIHN0cmluZyByZWZlcmVuY2Ugb2JqZWN0Ci0gICAgXHJlbGF0ZXNhbHNv
IEdlbmVyaWNTdHJpbmdSZWYKLSAgICBcbm90ZSBSZXF1aXJlcyB0aGUgZGVmaW5pdGlvbiBvZiB0
aGUgcHJlcHJvY2Vzc29yIHN5bWJvbCBccmVmIFJBUElESlNPTl9IQVNfU1REU1RSSU5HLgotKi8K
LXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgotaW5saW5lIEdlbmVyaWNTdHJpbmdSZWY8Q2hh
clR5cGU+IFN0cmluZ1JlZihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyVHlwZT4mIHN0cikg
ewotICAgIHJldHVybiBHZW5lcmljU3RyaW5nUmVmPENoYXJUeXBlPihzdHIuZGF0YSgpLCBTaXpl
VHlwZShzdHIuc2l6ZSgpKSk7Ci19Ci0jZW5kaWYKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwot
Ly8gR2VuZXJpY1ZhbHVlIHR5cGUgdHJhaXRzCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi10ZW1w
bGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRW5jb2RpbmcgPSB2b2lkLCB0eXBlbmFtZSBBbGxv
Y2F0b3IgPSB2b2lkPgotc3RydWN0IElzR2VuZXJpY1ZhbHVlSW1wbCA6IEZhbHNlVHlwZSB7fTsK
LQotLy8gc2VsZWN0IGNhbmRpZGF0ZXMgYWNjb3JkaW5nIHRvIG5lc3RlZCBlbmNvZGluZyBhbmQg
YWxsb2NhdG9yIHR5cGVzCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzR2VuZXJpY1Zh
bHVlSW1wbDxULCB0eXBlbmFtZSBWb2lkPHR5cGVuYW1lIFQ6OkVuY29kaW5nVHlwZT46OlR5cGUs
IHR5cGVuYW1lIFZvaWQ8dHlwZW5hbWUgVDo6QWxsb2NhdG9yVHlwZT46OlR5cGU+Ci0gICAgOiBJ
c0Jhc2VPZjxHZW5lcmljVmFsdWU8dHlwZW5hbWUgVDo6RW5jb2RpbmdUeXBlLCB0eXBlbmFtZSBU
OjpBbGxvY2F0b3JUeXBlPiwgVD46OlR5cGUge307Ci0KLS8vIGhlbHBlciB0byBtYXRjaCBhcmJp
dHJhcnkgR2VuZXJpY1ZhbHVlIGluc3RhbnRpYXRpb25zLCBpbmNsdWRpbmcgZGVyaXZlZCBjbGFz
c2VzCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzR2VuZXJpY1ZhbHVlIDogSXNHZW5l
cmljVmFsdWVJbXBsPFQ+OjpUeXBlIHt9OwotCi19IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotCi0v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBHZW5lcmljVmFsdWUKLQotLy8hIFJlcHJlc2VudHMg
YSBKU09OIHZhbHVlLiBVc2UgVmFsdWUgZm9yIFVURjggZW5jb2RpbmcgYW5kIGRlZmF1bHQgYWxs
b2NhdG9yLgotLyohCi0gICAgQSBKU09OIHZhbHVlIGNhbiBiZSBvbmUgb2YgNyB0eXBlcy4gVGhp
cyBjbGFzcyBpcyBhIHZhcmlhbnQgdHlwZSBzdXBwb3J0aW5nCi0gICAgdGhlc2UgdHlwZXMuCi0K
LSAgICBVc2UgdGhlIFZhbHVlIGlmIFVURjggYW5kIGRlZmF1bHQgYWxsb2NhdG9yCi0KLSAgICBc
dHBhcmFtIEVuY29kaW5nICAgIEVuY29kaW5nIG9mIHRoZSB2YWx1ZS4gKEV2ZW4gbm9uLXN0cmlu
ZyB2YWx1ZXMgbmVlZCB0byBoYXZlIHRoZSBzYW1lIGVuY29kaW5nIGluIGEgZG9jdW1lbnQpCi0g
ICAgXHRwYXJhbSBBbGxvY2F0b3IgICBBbGxvY2F0b3IgdHlwZSBmb3IgYWxsb2NhdGluZyBtZW1v
cnkgb2Ygb2JqZWN0LCBhcnJheSBhbmQgc3RyaW5nLgotKi8KLXRlbXBsYXRlIDx0eXBlbmFtZSBF
bmNvZGluZywgdHlwZW5hbWUgQWxsb2NhdG9yID0gTWVtb3J5UG9vbEFsbG9jYXRvcjw+ID4gCi1j
bGFzcyBHZW5lcmljVmFsdWUgewotcHVibGljOgotICAgIC8vISBOYW1lLXZhbHVlIHBhaXIgaW4g
YW4gb2JqZWN0LgotICAgIHR5cGVkZWYgR2VuZXJpY01lbWJlcjxFbmNvZGluZywgQWxsb2NhdG9y
PiBNZW1iZXI7Ci0gICAgdHlwZWRlZiBFbmNvZGluZyBFbmNvZGluZ1R5cGU7ICAgICAgICAgICAg
ICAgICAgLy8hPCBFbmNvZGluZyB0eXBlIGZyb20gdGVtcGxhdGUgcGFyYW1ldGVyLgotICAgIHR5
cGVkZWYgQWxsb2NhdG9yIEFsbG9jYXRvclR5cGU7ICAgICAgICAgICAgICAgIC8vITwgQWxsb2Nh
dG9yIHR5cGUgZnJvbSB0ZW1wbGF0ZSBwYXJhbWV0ZXIuCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBF
bmNvZGluZzo6Q2ggQ2g7ICAgICAgICAgICAgICAgLy8hPCBDaGFyYWN0ZXIgdHlwZSBkZXJpdmVk
IGZyb20gRW5jb2RpbmcuCi0gICAgdHlwZWRlZiBHZW5lcmljU3RyaW5nUmVmPENoPiBTdHJpbmdS
ZWZUeXBlOyAgICAgLy8hPCBSZWZlcmVuY2UgdG8gYSBjb25zdGFudCBzdHJpbmcKLSAgICB0eXBl
ZGVmIHR5cGVuYW1lIEdlbmVyaWNNZW1iZXJJdGVyYXRvcjxmYWxzZSxFbmNvZGluZyxBbGxvY2F0
b3I+OjpJdGVyYXRvciBNZW1iZXJJdGVyYXRvcjsgIC8vITwgTWVtYmVyIGl0ZXJhdG9yIGZvciBp
dGVyYXRpbmcgaW4gb2JqZWN0LgotICAgIHR5cGVkZWYgdHlwZW5hbWUgR2VuZXJpY01lbWJlckl0
ZXJhdG9yPHRydWUsRW5jb2RpbmcsQWxsb2NhdG9yPjo6SXRlcmF0b3IgQ29uc3RNZW1iZXJJdGVy
YXRvcjsgIC8vITwgQ29uc3RhbnQgbWVtYmVyIGl0ZXJhdG9yIGZvciBpdGVyYXRpbmcgaW4gb2Jq
ZWN0LgotICAgIHR5cGVkZWYgR2VuZXJpY1ZhbHVlKiBWYWx1ZUl0ZXJhdG9yOyAgICAgICAgICAg
IC8vITwgVmFsdWUgaXRlcmF0b3IgZm9yIGl0ZXJhdGluZyBpbiBhcnJheS4KLSAgICB0eXBlZGVm
IGNvbnN0IEdlbmVyaWNWYWx1ZSogQ29uc3RWYWx1ZUl0ZXJhdG9yOyAvLyE8IENvbnN0YW50IHZh
bHVlIGl0ZXJhdG9yIGZvciBpdGVyYXRpbmcgaW4gYXJyYXkuCi0KLSAgICAvLyFAbmFtZSBDb25z
dHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3IuCi0gICAgLy9AewotCi0gICAgLy8hIERlZmF1bHQgY29u
c3RydWN0b3IgY3JlYXRlcyBhIG51bGwgdmFsdWUuCi0gICAgR2VuZXJpY1ZhbHVlKCkgUkFQSURK
U09OX05PRVhDRVBUIDogZGF0YV8oKSwgZmxhZ3NfKGtOdWxsRmxhZykge30KLQotI2lmIFJBUElE
SlNPTl9IQVNfQ1hYMTFfUlZBTFVFX1JFRlMKLSAgICAvLyEgTW92ZSBjb25zdHJ1Y3RvciBpbiBD
KysxMQotICAgIEdlbmVyaWNWYWx1ZShHZW5lcmljVmFsdWUmJiByaHMpIFJBUElESlNPTl9OT0VY
Q0VQVCA6IGRhdGFfKHJocy5kYXRhXyksIGZsYWdzXyhyaHMuZmxhZ3NfKSB7Ci0gICAgICAgIHJo
cy5mbGFnc18gPSBrTnVsbEZsYWc7IC8vIGdpdmUgdXAgY29udGVudHMKLSAgICB9Ci0jZW5kaWYK
LQotcHJpdmF0ZToKLSAgICAvLyEgQ29weSBjb25zdHJ1Y3RvciBpcyBub3QgcGVybWl0dGVkLgot
ICAgIEdlbmVyaWNWYWx1ZShjb25zdCBHZW5lcmljVmFsdWUmIHJocyk7Ci0KLXB1YmxpYzoKLQot
ICAgIC8vISBDb25zdHJ1Y3RvciB3aXRoIEpTT04gdmFsdWUgdHlwZS4KLSAgICAvKiEgVGhpcyBj
cmVhdGVzIGEgVmFsdWUgb2Ygc3BlY2lmaWVkIHR5cGUgd2l0aCBkZWZhdWx0IGNvbnRlbnQuCi0g
ICAgICAgIFxwYXJhbSB0eXBlIFR5cGUgb2YgdGhlIHZhbHVlLgotICAgICAgICBcbm90ZSBEZWZh
dWx0IGNvbnRlbnQgZm9yIG51bWJlciBpcyB6ZXJvLgotICAgICovCi0gICAgZXhwbGljaXQgR2Vu
ZXJpY1ZhbHVlKFR5cGUgdHlwZSkgUkFQSURKU09OX05PRVhDRVBUIDogZGF0YV8oKSwgZmxhZ3Nf
KCkgewotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgZGVmYXVsdEZsYWdzWzddID0gewot
ICAgICAgICAgICAga051bGxGbGFnLCBrRmFsc2VGbGFnLCBrVHJ1ZUZsYWcsIGtPYmplY3RGbGFn
LCBrQXJyYXlGbGFnLCBrU2hvcnRTdHJpbmdGbGFnLAotICAgICAgICAgICAga051bWJlckFueUZs
YWcKLSAgICAgICAgfTsKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVCh0eXBlIDw9IGtOdW1iZXJU
eXBlKTsKLSAgICAgICAgZmxhZ3NfID0gZGVmYXVsdEZsYWdzW3R5cGVdOwotCi0gICAgICAgIC8v
IFVzZSBTaG9ydFN0cmluZyB0byBzdG9yZSBlbXB0eSBzdHJpbmcuCi0gICAgICAgIGlmICh0eXBl
ID09IGtTdHJpbmdUeXBlKQotICAgICAgICAgICAgZGF0YV8uc3MuU2V0TGVuZ3RoKDApOwotICAg
IH0KLQotICAgIC8vISBFeHBsaWNpdCBjb3B5IGNvbnN0cnVjdG9yICh3aXRoIGFsbG9jYXRvcikK
LSAgICAvKiEgQ3JlYXRlcyBhIGNvcHkgb2YgYSBWYWx1ZSBieSB1c2luZyB0aGUgZ2l2ZW4gQWxs
b2NhdG9yCi0gICAgICAgIFx0cGFyYW0gU291cmNlQWxsb2NhdG9yIGFsbG9jYXRvciBvZiBcYyBy
aHMKLSAgICAgICAgXHBhcmFtIHJocyBWYWx1ZSB0byBjb3B5IGZyb20gKHJlYWQtb25seSkKLSAg
ICAgICAgXHBhcmFtIGFsbG9jYXRvciBBbGxvY2F0b3IgZm9yIGFsbG9jYXRpbmcgY29waWVkIGVs
ZW1lbnRzIGFuZCBidWZmZXJzLiBDb21tb25seSB1c2UgR2VuZXJpY0RvY3VtZW50OjpHZXRBbGxv
Y2F0b3IoKS4KLSAgICAgICAgXHNlZSBDb3B5RnJvbSgpCi0gICAgKi8KLSAgICB0ZW1wbGF0ZTwg
dHlwZW5hbWUgU291cmNlQWxsb2NhdG9yID4KLSAgICBHZW5lcmljVmFsdWUoY29uc3QgR2VuZXJp
Y1ZhbHVlPEVuY29kaW5nLCBTb3VyY2VBbGxvY2F0b3I+JiByaHMsIEFsbG9jYXRvciAmIGFsbG9j
YXRvcik7Ci0KLSAgICAvLyEgQ29uc3RydWN0b3IgZm9yIGJvb2xlYW4gdmFsdWUuCi0gICAgLyoh
IFxwYXJhbSBiIEJvb2xlYW4gdmFsdWUKLSAgICAgICAgXG5vdGUgVGhpcyBjb25zdHJ1Y3RvciBp
cyBsaW1pdGVkIHRvIFxlbSByZWFsIGJvb2xlYW4gdmFsdWVzIGFuZCByZWplY3RzCi0gICAgICAg
ICAgICBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0eXBlcyBsaWtlIGFyYml0cmFyeSBwb2ludGVycy4g
IFVzZSBhbiBleHBsaWNpdCBjYXN0Ci0gICAgICAgICAgICB0byBcYyBib29sLCBpZiB5b3Ugd2Fu
dCB0byBjb25zdHJ1Y3QgYSBib29sZWFuIEpTT04gdmFsdWUgaW4gc3VjaCBjYXNlcy4KLSAgICAg
Ki8KLSNpZm5kZWYgUkFQSURKU09OX0RPWFlHRU5fUlVOTklORyAvLyBoaWRlIFNGSU5BRSBmcm9t
IERveHlnZW4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBleHBsaWNpdCBHZW5lcmlj
VmFsdWUoVCBiLCBSQVBJREpTT05fRU5BQkxFSUYoKGludGVybmFsOjpJc1NhbWU8VCxib29sPikp
KSBSQVBJREpTT05fTk9FWENFUFQKLSNlbHNlCi0gICAgZXhwbGljaXQgR2VuZXJpY1ZhbHVlKGJv
b2wgYikgUkFQSURKU09OX05PRVhDRVBUCi0jZW5kaWYKLSAgICAgICAgOiBkYXRhXygpLCBmbGFn
c18oYiA/IGtUcnVlRmxhZyA6IGtGYWxzZUZsYWcpIHsKLSAgICAgICAgICAgIC8vIHNhZmUtZ3Vh
cmQgYWdhaW5zdCBmYWlsaW5nIFNGSU5BRQotICAgICAgICAgICAgUkFQSURKU09OX1NUQVRJQ19B
U1NFUlQoKGludGVybmFsOjpJc1NhbWU8Ym9vbCxUPjo6VmFsdWUpKTsKLSAgICB9Ci0KLSAgICAv
LyEgQ29uc3RydWN0b3IgZm9yIGludCB2YWx1ZS4KLSAgICBleHBsaWNpdCBHZW5lcmljVmFsdWUo
aW50IGkpIFJBUElESlNPTl9OT0VYQ0VQVCA6IGRhdGFfKCksIGZsYWdzXyhrTnVtYmVySW50Rmxh
ZykgewotICAgICAgICBkYXRhXy5uLmk2NCA9IGk7Ci0gICAgICAgIGlmIChpID49IDApCi0gICAg
ICAgICAgICBmbGFnc18gfD0ga1VpbnRGbGFnIHwga1VpbnQ2NEZsYWc7Ci0gICAgfQotCi0gICAg
Ly8hIENvbnN0cnVjdG9yIGZvciB1bnNpZ25lZCB2YWx1ZS4KLSAgICBleHBsaWNpdCBHZW5lcmlj
VmFsdWUodW5zaWduZWQgdSkgUkFQSURKU09OX05PRVhDRVBUIDogZGF0YV8oKSwgZmxhZ3NfKGtO
dW1iZXJVaW50RmxhZykgewotICAgICAgICBkYXRhXy5uLnU2NCA9IHU7IAotICAgICAgICBpZiAo
ISh1ICYgMHg4MDAwMDAwMCkpCi0gICAgICAgICAgICBmbGFnc18gfD0ga0ludEZsYWcgfCBrSW50
NjRGbGFnOwotICAgIH0KLQotICAgIC8vISBDb25zdHJ1Y3RvciBmb3IgaW50NjRfdCB2YWx1ZS4K
LSAgICBleHBsaWNpdCBHZW5lcmljVmFsdWUoaW50NjRfdCBpNjQpIFJBUElESlNPTl9OT0VYQ0VQ
VCA6IGRhdGFfKCksIGZsYWdzXyhrTnVtYmVySW50NjRGbGFnKSB7Ci0gICAgICAgIGRhdGFfLm4u
aTY0ID0gaTY0OwotICAgICAgICBpZiAoaTY0ID49IDApIHsKLSAgICAgICAgICAgIGZsYWdzXyB8
PSBrTnVtYmVyVWludDY0RmxhZzsKLSAgICAgICAgICAgIGlmICghKHN0YXRpY19jYXN0PHVpbnQ2
NF90PihpNjQpICYgUkFQSURKU09OX1VJTlQ2NF9DMigweEZGRkZGRkZGLCAweDAwMDAwMDAwKSkp
Ci0gICAgICAgICAgICAgICAgZmxhZ3NfIHw9IGtVaW50RmxhZzsKLSAgICAgICAgICAgIGlmICgh
KHN0YXRpY19jYXN0PHVpbnQ2NF90PihpNjQpICYgUkFQSURKU09OX1VJTlQ2NF9DMigweEZGRkZG
RkZGLCAweDgwMDAwMDAwKSkpCi0gICAgICAgICAgICAgICAgZmxhZ3NfIHw9IGtJbnRGbGFnOwot
ICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGk2NCA+PSBzdGF0aWNfY2FzdDxpbnQ2NF90PihS
QVBJREpTT05fVUlOVDY0X0MyKDB4RkZGRkZGRkYsIDB4ODAwMDAwMDApKSkKLSAgICAgICAgICAg
IGZsYWdzXyB8PSBrSW50RmxhZzsKLSAgICB9Ci0KLSAgICAvLyEgQ29uc3RydWN0b3IgZm9yIHVp
bnQ2NF90IHZhbHVlLgotICAgIGV4cGxpY2l0IEdlbmVyaWNWYWx1ZSh1aW50NjRfdCB1NjQpIFJB
UElESlNPTl9OT0VYQ0VQVCA6IGRhdGFfKCksIGZsYWdzXyhrTnVtYmVyVWludDY0RmxhZykgewot
ICAgICAgICBkYXRhXy5uLnU2NCA9IHU2NDsKLSAgICAgICAgaWYgKCEodTY0ICYgUkFQSURKU09O
X1VJTlQ2NF9DMigweDgwMDAwMDAwLCAweDAwMDAwMDAwKSkpCi0gICAgICAgICAgICBmbGFnc18g
fD0ga0ludDY0RmxhZzsKLSAgICAgICAgaWYgKCEodTY0ICYgUkFQSURKU09OX1VJTlQ2NF9DMigw
eEZGRkZGRkZGLCAweDAwMDAwMDAwKSkpCi0gICAgICAgICAgICBmbGFnc18gfD0ga1VpbnRGbGFn
OwotICAgICAgICBpZiAoISh1NjQgJiBSQVBJREpTT05fVUlOVDY0X0MyKDB4RkZGRkZGRkYsIDB4
ODAwMDAwMDApKSkKLSAgICAgICAgICAgIGZsYWdzXyB8PSBrSW50RmxhZzsKLSAgICB9Ci0KLSAg
ICAvLyEgQ29uc3RydWN0b3IgZm9yIGRvdWJsZSB2YWx1ZS4KLSAgICBleHBsaWNpdCBHZW5lcmlj
VmFsdWUoZG91YmxlIGQpIFJBUElESlNPTl9OT0VYQ0VQVCA6IGRhdGFfKCksIGZsYWdzXyhrTnVt
YmVyRG91YmxlRmxhZykgeyBkYXRhXy5uLmQgPSBkOyB9Ci0KLSAgICAvLyEgQ29uc3RydWN0b3Ig
Zm9yIGNvbnN0YW50IHN0cmluZyAoaS5lLiBkbyBub3QgbWFrZSBhIGNvcHkgb2Ygc3RyaW5nKQot
ICAgIEdlbmVyaWNWYWx1ZShjb25zdCBDaCogcywgU2l6ZVR5cGUgbGVuZ3RoKSBSQVBJREpTT05f
Tk9FWENFUFQgOiBkYXRhXygpLCBmbGFnc18oKSB7IFNldFN0cmluZ1JhdyhTdHJpbmdSZWYocywg
bGVuZ3RoKSk7IH0KLQotICAgIC8vISBDb25zdHJ1Y3RvciBmb3IgY29uc3RhbnQgc3RyaW5nIChp
LmUuIGRvIG5vdCBtYWtlIGEgY29weSBvZiBzdHJpbmcpCi0gICAgZXhwbGljaXQgR2VuZXJpY1Zh
bHVlKFN0cmluZ1JlZlR5cGUgcykgUkFQSURKU09OX05PRVhDRVBUIDogZGF0YV8oKSwgZmxhZ3Nf
KCkgeyBTZXRTdHJpbmdSYXcocyk7IH0KLQotICAgIC8vISBDb25zdHJ1Y3RvciBmb3IgY29weS1z
dHJpbmcgKGkuZS4gZG8gbWFrZSBhIGNvcHkgb2Ygc3RyaW5nKQotICAgIEdlbmVyaWNWYWx1ZShj
b25zdCBDaCogcywgU2l6ZVR5cGUgbGVuZ3RoLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgOiBkYXRh
XygpLCBmbGFnc18oKSB7IFNldFN0cmluZ1JhdyhTdHJpbmdSZWYocywgbGVuZ3RoKSwgYWxsb2Nh
dG9yKTsgfQotCi0gICAgLy8hIENvbnN0cnVjdG9yIGZvciBjb3B5LXN0cmluZyAoaS5lLiBkbyBt
YWtlIGEgY29weSBvZiBzdHJpbmcpCi0gICAgR2VuZXJpY1ZhbHVlKGNvbnN0IENoKnMsIEFsbG9j
YXRvciYgYWxsb2NhdG9yKSA6IGRhdGFfKCksIGZsYWdzXygpIHsgU2V0U3RyaW5nUmF3KFN0cmlu
Z1JlZihzKSwgYWxsb2NhdG9yKTsgfQotCi0jaWYgUkFQSURKU09OX0hBU19TVERTVFJJTkcKLSAg
ICAvLyEgQ29uc3RydWN0b3IgZm9yIGNvcHktc3RyaW5nIGZyb20gYSBzdHJpbmcgb2JqZWN0IChp
LmUuIGRvIG1ha2UgYSBjb3B5IG9mIHN0cmluZykKLSAgICAvKiEgXG5vdGUgUmVxdWlyZXMgdGhl
IGRlZmluaXRpb24gb2YgdGhlIHByZXByb2Nlc3NvciBzeW1ib2wgXHJlZiBSQVBJREpTT05fSEFT
X1NURFNUUklORy4KLSAgICAgKi8KLSAgICBHZW5lcmljVmFsdWUoY29uc3Qgc3RkOjpiYXNpY19z
dHJpbmc8Q2g+JiBzLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgOiBkYXRhXygpLCBmbGFnc18oKSB7
IFNldFN0cmluZ1JhdyhTdHJpbmdSZWYocyksIGFsbG9jYXRvcik7IH0KLSNlbmRpZgotCi0gICAg
Ly8hIERlc3RydWN0b3IuCi0gICAgLyohIE5lZWQgdG8gZGVzdHJ1Y3QgZWxlbWVudHMgb2YgYXJy
YXksIG1lbWJlcnMgb2Ygb2JqZWN0LCBvciBjb3B5LXN0cmluZy4KLSAgICAqLwotICAgIH5HZW5l
cmljVmFsdWUoKSB7Ci0gICAgICAgIGlmIChBbGxvY2F0b3I6OmtOZWVkRnJlZSkgeyAvLyBTaG9y
dGN1dCBieSBBbGxvY2F0b3IncyB0cmFpdAotICAgICAgICAgICAgc3dpdGNoKGZsYWdzXykgewot
ICAgICAgICAgICAgY2FzZSBrQXJyYXlGbGFnOgotICAgICAgICAgICAgICAgIGZvciAoR2VuZXJp
Y1ZhbHVlKiB2ID0gZGF0YV8uYS5lbGVtZW50czsgdiAhPSBkYXRhXy5hLmVsZW1lbnRzICsgZGF0
YV8uYS5zaXplOyArK3YpCi0gICAgICAgICAgICAgICAgICAgIHYtPn5HZW5lcmljVmFsdWUoKTsK
LSAgICAgICAgICAgICAgICBBbGxvY2F0b3I6OkZyZWUoZGF0YV8uYS5lbGVtZW50cyk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGNhc2Uga09iamVjdEZsYWc6Ci0gICAg
ICAgICAgICAgICAgZm9yIChNZW1iZXJJdGVyYXRvciBtID0gTWVtYmVyQmVnaW4oKTsgbSAhPSBN
ZW1iZXJFbmQoKTsgKyttKQotICAgICAgICAgICAgICAgICAgICBtLT5+TWVtYmVyKCk7Ci0gICAg
ICAgICAgICAgICAgQWxsb2NhdG9yOjpGcmVlKGRhdGFfLm8ubWVtYmVycyk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGNhc2Uga0NvcHlTdHJpbmdGbGFnOgotICAgICAg
ICAgICAgICAgIEFsbG9jYXRvcjo6RnJlZShjb25zdF9jYXN0PENoKj4oZGF0YV8ucy5zdHIpKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICBicmVhazsgIC8vIERvIG5vdGhpbmcgZm9yIG90aGVyIHR5cGVzLgotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy9AfQotCi0gICAgLy8hQG5hbWUgQXNzaWdu
bWVudCBvcGVyYXRvcnMKLSAgICAvL0B7Ci0KLSAgICAvLyEgQXNzaWdubWVudCB3aXRoIG1vdmUg
c2VtYW50aWNzLgotICAgIC8qISBccGFyYW0gcmhzIFNvdXJjZSBvZiB0aGUgYXNzaWdubWVudC4g
SXQgd2lsbCBiZWNvbWUgYSBudWxsIHZhbHVlIGFmdGVyIGFzc2lnbm1lbnQuCi0gICAgKi8KLSAg
ICBHZW5lcmljVmFsdWUmIG9wZXJhdG9yPShHZW5lcmljVmFsdWUmIHJocykgUkFQSURKU09OX05P
RVhDRVBUIHsKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVCh0aGlzICE9ICZyaHMpOwotICAgICAg
ICB0aGlzLT5+R2VuZXJpY1ZhbHVlKCk7Ci0gICAgICAgIFJhd0Fzc2lnbihyaHMpOwotICAgICAg
ICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jaWYgUkFQSURKU09OX0hBU19DWFgxMV9SVkFMVUVf
UkVGUwotICAgIC8vISBNb3ZlIGFzc2lnbm1lbnQgaW4gQysrMTEKLSAgICBHZW5lcmljVmFsdWUm
IG9wZXJhdG9yPShHZW5lcmljVmFsdWUmJiByaHMpIFJBUElESlNPTl9OT0VYQ0VQVCB7Ci0gICAg
ICAgIHJldHVybiAqdGhpcyA9IHJocy5Nb3ZlKCk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICAvLyEg
QXNzaWdubWVudCBvZiBjb25zdGFudCBzdHJpbmcgcmVmZXJlbmNlIChubyBjb3B5KQotICAgIC8q
ISBccGFyYW0gc3RyIENvbnN0YW50IHN0cmluZyByZWZlcmVuY2UgdG8gYmUgYXNzaWduZWQKLSAg
ICAgICAgXG5vdGUgVGhpcyBvdmVybG9hZCBpcyBuZWVkZWQgdG8gYXZvaWQgY2xhc2hlcyB3aXRo
IHRoZSBnZW5lcmljIHByaW1pdGl2ZSB0eXBlIGFzc2lnbm1lbnQgb3ZlcmxvYWQgYmVsb3cuCi0g
ICAgICAgIFxzZWUgR2VuZXJpY1N0cmluZ1JlZiwgb3BlcmF0b3I9KFQpCi0gICAgKi8KLSAgICBH
ZW5lcmljVmFsdWUmIG9wZXJhdG9yPShTdHJpbmdSZWZUeXBlIHN0cikgUkFQSURKU09OX05PRVhD
RVBUIHsKLSAgICAgICAgR2VuZXJpY1ZhbHVlIHMoc3RyKTsKLSAgICAgICAgcmV0dXJuICp0aGlz
ID0gczsKLSAgICB9Ci0KLSAgICAvLyEgQXNzaWdubWVudCB3aXRoIHByaW1pdGl2ZSB0eXBlcy4K
LSAgICAvKiEgXHRwYXJhbSBUIEVpdGhlciBccmVmIFR5cGUsIFxjIGludCwgXGMgdW5zaWduZWQs
IFxjIGludDY0X3QsIFxjIHVpbnQ2NF90Ci0gICAgICAgIFxwYXJhbSB2YWx1ZSBUaGUgdmFsdWUg
dG8gYmUgYXNzaWduZWQuCi0KLSAgICAgICAgXG5vdGUgVGhlIHNvdXJjZSB0eXBlIFxjIFQgZXhw
bGljaXRseSBkaXNhbGxvd3MgYWxsIHBvaW50ZXIgdHlwZXMsCi0gICAgICAgICAgICBlc3BlY2lh
bGx5IChcYyBjb25zdCkgXHJlZiBDaCouICBUaGlzIGhlbHBzIGF2b2lkaW5nIGltcGxpY2l0bHkK
LSAgICAgICAgICAgIHJlZmVyZW5jaW5nIGNoYXJhY3RlciBzdHJpbmdzIHdpdGggaW5zdWZmaWNp
ZW50IGxpZmV0aW1lLCB1c2UKLSAgICAgICAgICAgIFxyZWYgU2V0U3RyaW5nKGNvbnN0IENoKiwg
QWxsb2NhdG9yJikgKGZvciBjb3B5aW5nKSBvcgotICAgICAgICAgICAgXHJlZiBTdHJpbmdSZWYo
KSAodG8gZXhwbGljaXRseSBtYXJrIHRoZSBwb2ludGVyIGFzIGNvbnN0YW50KSBpbnN0ZWFkLgot
ICAgICAgICAgICAgQWxsIG90aGVyIHBvaW50ZXIgdHlwZXMgd291bGQgaW1wbGljaXRseSBjb252
ZXJ0IHRvIFxjIGJvb2wsCi0gICAgICAgICAgICB1c2UgXHJlZiBTZXRCb29sKCkgaW5zdGVhZC4K
LSAgICAqLwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIFJBUElESlNPTl9ESVNBQkxF
SUZfUkVUVVJOKChpbnRlcm5hbDo6SXNQb2ludGVyPFQ+KSwgKEdlbmVyaWNWYWx1ZSYpKQotICAg
IG9wZXJhdG9yPShUIHZhbHVlKSB7Ci0gICAgICAgIEdlbmVyaWNWYWx1ZSB2KHZhbHVlKTsKLSAg
ICAgICAgcmV0dXJuICp0aGlzID0gdjsKLSAgICB9Ci0KLSAgICAvLyEgRGVlcC1jb3B5IGFzc2ln
bm1lbnQgZnJvbSBWYWx1ZQotICAgIC8qISBBc3NpZ25zIGEgXGIgY29weSBvZiB0aGUgVmFsdWUg
dG8gdGhlIGN1cnJlbnQgVmFsdWUgb2JqZWN0Ci0gICAgICAgIFx0cGFyYW0gU291cmNlQWxsb2Nh
dG9yIEFsbG9jYXRvciB0eXBlIG9mIFxjIHJocwotICAgICAgICBccGFyYW0gcmhzIFZhbHVlIHRv
IGNvcHkgZnJvbSAocmVhZC1vbmx5KQotICAgICAgICBccGFyYW0gYWxsb2NhdG9yIEFsbG9jYXRv
ciB0byB1c2UgZm9yIGNvcHlpbmcKLSAgICAgKi8KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU291
cmNlQWxsb2NhdG9yPgotICAgIEdlbmVyaWNWYWx1ZSYgQ29weUZyb20oY29uc3QgR2VuZXJpY1Zh
bHVlPEVuY29kaW5nLCBTb3VyY2VBbGxvY2F0b3I+JiByaHMsIEFsbG9jYXRvciYgYWxsb2NhdG9y
KSB7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoKHZvaWQqKXRoaXMgIT0gKHZvaWQgY29uc3Qq
KSZyaHMpOwotICAgICAgICB0aGlzLT5+R2VuZXJpY1ZhbHVlKCk7Ci0gICAgICAgIG5ldyAodGhp
cykgR2VuZXJpY1ZhbHVlKHJocywgYWxsb2NhdG9yKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwot
ICAgIH0KLQotICAgIC8vISBFeGNoYW5nZSB0aGUgY29udGVudHMgb2YgdGhpcyB2YWx1ZSB3aXRo
IHRob3NlIG9mIG90aGVyLgotICAgIC8qIQotICAgICAgICBccGFyYW0gb3RoZXIgQW5vdGhlciB2
YWx1ZS4KLSAgICAgICAgXG5vdGUgQ29uc3RhbnQgY29tcGxleGl0eS4KLSAgICAqLwotICAgIEdl
bmVyaWNWYWx1ZSYgU3dhcChHZW5lcmljVmFsdWUmIG90aGVyKSBSQVBJREpTT05fTk9FWENFUFQg
ewotICAgICAgICBHZW5lcmljVmFsdWUgdGVtcDsKLSAgICAgICAgdGVtcC5SYXdBc3NpZ24oKnRo
aXMpOwotICAgICAgICBSYXdBc3NpZ24ob3RoZXIpOwotICAgICAgICBvdGhlci5SYXdBc3NpZ24o
dGVtcCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICAvLyEgUHJlcGFyZSBW
YWx1ZSBmb3IgbW92ZSBzZW1hbnRpY3MKLSAgICAvKiEgXHJldHVybiAqdGhpcyAqLwotICAgIEdl
bmVyaWNWYWx1ZSYgTW92ZSgpIFJBUElESlNPTl9OT0VYQ0VQVCB7IHJldHVybiAqdGhpczsgfQot
ICAgIC8vQH0KLQotICAgIC8vIUBuYW1lIEVxdWFsLXRvIGFuZCBub3QtZXF1YWwtdG8gb3BlcmF0
b3JzCi0gICAgLy9AewotICAgIC8vISBFcXVhbC10byBvcGVyYXRvcgotICAgIC8qIQotICAgICAg
ICBcbm90ZSBJZiBhbiBvYmplY3QgY29udGFpbnMgZHVwbGljYXRlZCBuYW1lZCBtZW1iZXIsIGNv
bXBhcmluZyBlcXVhbGl0eSB3aXRoIGFueSBvYmplY3QgaXMgYWx3YXlzIFxjIGZhbHNlLgotICAg
ICAgICBcbm90ZSBMaW5lYXIgdGltZSBjb21wbGV4aXR5IChudW1iZXIgb2YgYWxsIHZhbHVlcyBp
biB0aGUgc3VidHJlZSBhbmQgdG90YWwgbGVuZ3RocyBvZiBhbGwgc3RyaW5ncykuCi0gICAgKi8K
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU291cmNlQWxsb2NhdG9yPgotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBHZW5lcmljVmFsdWU8RW5jb2RpbmcsIFNvdXJjZUFsbG9jYXRvcj4mIHJocykg
Y29uc3QgewotICAgICAgICB0eXBlZGVmIEdlbmVyaWNWYWx1ZTxFbmNvZGluZywgU291cmNlQWxs
b2NhdG9yPiBSaHNUeXBlOwotICAgICAgICBpZiAoR2V0VHlwZSgpICE9IHJocy5HZXRUeXBlKCkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgc3dpdGNoIChHZXRUeXBlKCkp
IHsKLSAgICAgICAgY2FzZSBrT2JqZWN0VHlwZTogLy8gV2FybmluZzogTyhuXjIpIGlubmVyLWxv
b3AKLSAgICAgICAgICAgIGlmIChkYXRhXy5vLnNpemUgIT0gcmhzLmRhdGFfLm8uc2l6ZSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAo
Q29uc3RNZW1iZXJJdGVyYXRvciBsaHNNZW1iZXJJdHIgPSBNZW1iZXJCZWdpbigpOyBsaHNNZW1i
ZXJJdHIgIT0gTWVtYmVyRW5kKCk7ICsrbGhzTWVtYmVySXRyKSB7Ci0gICAgICAgICAgICAgICAg
dHlwZW5hbWUgUmhzVHlwZTo6Q29uc3RNZW1iZXJJdGVyYXRvciByaHNNZW1iZXJJdHIgPSByaHMu
RmluZE1lbWJlcihsaHNNZW1iZXJJdHItPm5hbWUpOwotICAgICAgICAgICAgICAgIGlmIChyaHNN
ZW1iZXJJdHIgPT0gcmhzLk1lbWJlckVuZCgpIHx8IGxoc01lbWJlckl0ci0+dmFsdWUgIT0gcmhz
TWVtYmVySXRyLT52YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgY2FzZSBrQXJyYXlUeXBlOgotICAgICAgICAgICAgaWYgKGRhdGFfLmEuc2l6ZSAhPSByaHMu
ZGF0YV8uYS5zaXplKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IGZvciAoU2l6ZVR5cGUgaSA9IDA7IGkgPCBkYXRhXy5hLnNpemU7IGkrKykKLSAgICAgICAgICAg
ICAgICBpZiAoKCp0aGlzKVtpXSAhPSByaHNbaV0pCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIGNhc2Uga1N0cmlu
Z1R5cGU6Ci0gICAgICAgICAgICByZXR1cm4gU3RyaW5nRXF1YWwocmhzKTsKLQotICAgICAgICBj
YXNlIGtOdW1iZXJUeXBlOgotICAgICAgICAgICAgaWYgKElzRG91YmxlKCkgfHwgcmhzLklzRG91
YmxlKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEdldERvdWJsZSgpID09IHJocy5HZXREb3Vi
bGUoKTsgLy8gTWF5IGNvbnZlcnQgb25lIG9wZXJhbmQgZnJvbSBpbnRlZ2VyIHRvIGRvdWJsZS4K
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gZGF0YV8ubi51NjQgPT0g
cmhzLmRhdGFfLm4udTY0OwotCi0gICAgICAgIGRlZmF1bHQ6IC8vIGtUcnVlVHlwZSwga0ZhbHNl
VHlwZSwga051bGxUeXBlCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIC8vISBFcXVhbC10byBvcGVyYXRvciB3aXRoIGNvbnN0IEMtc3RyaW5nIHBvaW50
ZXIKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ2gqIHJocykgY29uc3QgeyByZXR1cm4gKnRo
aXMgPT0gR2VuZXJpY1ZhbHVlKFN0cmluZ1JlZihyaHMpKTsgfQotCi0jaWYgUkFQSURKU09OX0hB
U19TVERTVFJJTkcKLSAgICAvLyEgRXF1YWwtdG8gb3BlcmF0b3Igd2l0aCBzdHJpbmcgb2JqZWN0
Ci0gICAgLyohIFxub3RlIFJlcXVpcmVzIHRoZSBkZWZpbml0aW9uIG9mIHRoZSBwcmVwcm9jZXNz
b3Igc3ltYm9sIFxyZWYgUkFQSURKU09OX0hBU19TVERTVFJJTkcuCi0gICAgICovCi0gICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPENoPiYgcmhzKSBjb25zdCB7IHJl
dHVybiAqdGhpcyA9PSBHZW5lcmljVmFsdWUoU3RyaW5nUmVmKHJocykpOyB9Ci0jZW5kaWYKLQot
ICAgIC8vISBFcXVhbC10byBvcGVyYXRvciB3aXRoIHByaW1pdGl2ZSB0eXBlcwotICAgIC8qISBc
dHBhcmFtIFQgRWl0aGVyIFxyZWYgVHlwZSwgXGMgaW50LCBcYyB1bnNpZ25lZCwgXGMgaW50NjRf
dCwgXGMgdWludDY0X3QsIFxjIGRvdWJsZSwgXGMgdHJ1ZSwgXGMgZmFsc2UKLSAgICAqLwotICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBSQVBJREpTT05fRElTQUJMRUlGX1JFVFVSTigoaW50ZXJu
YWw6Ok9yRXhwcjxpbnRlcm5hbDo6SXNQb2ludGVyPFQ+LGludGVybmFsOjpJc0dlbmVyaWNWYWx1
ZTxUPiA+KSwgKGJvb2wpKSBvcGVyYXRvcj09KGNvbnN0IFQmIHJocykgY29uc3QgeyByZXR1cm4g
KnRoaXMgPT0gR2VuZXJpY1ZhbHVlKHJocyk7IH0KLQotICAgIC8vISBOb3QtZXF1YWwtdG8gb3Bl
cmF0b3IKLSAgICAvKiEgXHJldHVybiAhKCp0aGlzID09IHJocykKLSAgICAgKi8KLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgU291cmNlQWxsb2NhdG9yPgotICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBHZW5lcmljVmFsdWU8RW5jb2RpbmcsIFNvdXJjZUFsbG9jYXRvcj4mIHJocykgY29uc3QgeyBy
ZXR1cm4gISgqdGhpcyA9PSByaHMpOyB9Ci0KLSAgICAvLyEgTm90LWVxdWFsLXRvIG9wZXJhdG9y
IHdpdGggY29uc3QgQy1zdHJpbmcgcG9pbnRlcgotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBD
aCogcmhzKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IHJocyk7IH0KLQotICAgIC8vISBOb3Qt
ZXF1YWwtdG8gb3BlcmF0b3Igd2l0aCBhcmJpdHJhcnkgdHlwZXMKLSAgICAvKiEgXHJldHVybiAh
KCp0aGlzID09IHJocykKLSAgICAgKi8KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gUkFQSURK
U09OX0RJU0FCTEVJRl9SRVRVUk4oKGludGVybmFsOjpJc0dlbmVyaWNWYWx1ZTxUPiksIChib29s
KSkgb3BlcmF0b3IhPShjb25zdCBUJiByaHMpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gcmhz
KTsgfQotCi0gICAgLy8hIEVxdWFsLXRvIG9wZXJhdG9yIHdpdGggYXJiaXRyYXJ5IHR5cGVzIChz
eW1tZXRyaWMgdmVyc2lvbikKLSAgICAvKiEgXHJldHVybiAocmhzID09IGxocykKLSAgICAgKi8K
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gZnJpZW5kIFJBUElESlNPTl9ESVNBQkxFSUZfUkVU
VVJOKChpbnRlcm5hbDo6SXNHZW5lcmljVmFsdWU8VD4pLCAoYm9vbCkpIG9wZXJhdG9yPT0oY29u
c3QgVCYgbGhzLCBjb25zdCBHZW5lcmljVmFsdWUmIHJocykgeyByZXR1cm4gcmhzID09IGxoczsg
fQotCi0gICAgLy8hIE5vdC1FcXVhbC10byBvcGVyYXRvciB3aXRoIGFyYml0cmFyeSB0eXBlcyAo
c3ltbWV0cmljIHZlcnNpb24pCi0gICAgLyohIFxyZXR1cm4gIShyaHMgPT0gbGhzKQotICAgICAq
LwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBmcmllbmQgUkFQSURKU09OX0RJU0FCTEVJRl9S
RVRVUk4oKGludGVybmFsOjpJc0dlbmVyaWNWYWx1ZTxUPiksIChib29sKSkgb3BlcmF0b3IhPShj
b25zdCBUJiBsaHMsIGNvbnN0IEdlbmVyaWNWYWx1ZSYgcmhzKSB7IHJldHVybiAhKHJocyA9PSBs
aHMpOyB9Ci0gICAgLy9AfQotCi0gICAgLy8hQG5hbWUgVHlwZQotICAgIC8vQHsKLQotICAgIFR5
cGUgR2V0VHlwZSgpICBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPihmbGFnc18gJiBr
VHlwZU1hc2spOyB9Ci0gICAgYm9vbCBJc051bGwoKSAgIGNvbnN0IHsgcmV0dXJuIGZsYWdzXyA9
PSBrTnVsbEZsYWc7IH0KLSAgICBib29sIElzRmFsc2UoKSAgY29uc3QgeyByZXR1cm4gZmxhZ3Nf
ID09IGtGYWxzZUZsYWc7IH0KLSAgICBib29sIElzVHJ1ZSgpICAgY29uc3QgeyByZXR1cm4gZmxh
Z3NfID09IGtUcnVlRmxhZzsgfQotICAgIGJvb2wgSXNCb29sKCkgICBjb25zdCB7IHJldHVybiAo
ZmxhZ3NfICYga0Jvb2xGbGFnKSAhPSAwOyB9Ci0gICAgYm9vbCBJc09iamVjdCgpIGNvbnN0IHsg
cmV0dXJuIGZsYWdzXyA9PSBrT2JqZWN0RmxhZzsgfQotICAgIGJvb2wgSXNBcnJheSgpICBjb25z
dCB7IHJldHVybiBmbGFnc18gPT0ga0FycmF5RmxhZzsgfQotICAgIGJvb2wgSXNOdW1iZXIoKSBj
b25zdCB7IHJldHVybiAoZmxhZ3NfICYga051bWJlckZsYWcpICE9IDA7IH0KLSAgICBib29sIElz
SW50KCkgICAgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAmIGtJbnRGbGFnKSAhPSAwOyB9Ci0gICAg
Ym9vbCBJc1VpbnQoKSAgIGNvbnN0IHsgcmV0dXJuIChmbGFnc18gJiBrVWludEZsYWcpICE9IDA7
IH0KLSAgICBib29sIElzSW50NjQoKSAgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAmIGtJbnQ2NEZs
YWcpICE9IDA7IH0KLSAgICBib29sIElzVWludDY0KCkgY29uc3QgeyByZXR1cm4gKGZsYWdzXyAm
IGtVaW50NjRGbGFnKSAhPSAwOyB9Ci0gICAgYm9vbCBJc0RvdWJsZSgpIGNvbnN0IHsgcmV0dXJu
IChmbGFnc18gJiBrRG91YmxlRmxhZykgIT0gMDsgfQotICAgIGJvb2wgSXNTdHJpbmcoKSBjb25z
dCB7IHJldHVybiAoZmxhZ3NfICYga1N0cmluZ0ZsYWcpICE9IDA7IH0KLQotICAgIC8vQH0KLQot
ICAgIC8vIUBuYW1lIE51bGwKLSAgICAvL0B7Ci0KLSAgICBHZW5lcmljVmFsdWUmIFNldE51bGwo
KSB7IHRoaXMtPn5HZW5lcmljVmFsdWUoKTsgbmV3ICh0aGlzKSBHZW5lcmljVmFsdWUoKTsgcmV0
dXJuICp0aGlzOyB9Ci0KLSAgICAvL0B9Ci0KLSAgICAvLyFAbmFtZSBCb29sCi0gICAgLy9Aewot
Ci0gICAgYm9vbCBHZXRCb29sKCkgY29uc3QgeyBSQVBJREpTT05fQVNTRVJUKElzQm9vbCgpKTsg
cmV0dXJuIGZsYWdzXyA9PSBrVHJ1ZUZsYWc7IH0KLSAgICAvLyE8IFNldCBib29sZWFuIHZhbHVl
Ci0gICAgLyohIFxwb3N0IElzQm9vbCgpID09IHRydWUgKi8KLSAgICBHZW5lcmljVmFsdWUmIFNl
dEJvb2woYm9vbCBiKSB7IHRoaXMtPn5HZW5lcmljVmFsdWUoKTsgbmV3ICh0aGlzKSBHZW5lcmlj
VmFsdWUoYik7IHJldHVybiAqdGhpczsgfQotCi0gICAgLy9AfQotCi0gICAgLy8hQG5hbWUgT2Jq
ZWN0Ci0gICAgLy9AewotCi0gICAgLy8hIFNldCB0aGlzIHZhbHVlIGFzIGFuIGVtcHR5IG9iamVj
dC4KLSAgICAvKiEgXHBvc3QgSXNPYmplY3QoKSA9PSB0cnVlICovCi0gICAgR2VuZXJpY1ZhbHVl
JiBTZXRPYmplY3QoKSB7IHRoaXMtPn5HZW5lcmljVmFsdWUoKTsgbmV3ICh0aGlzKSBHZW5lcmlj
VmFsdWUoa09iamVjdFR5cGUpOyByZXR1cm4gKnRoaXM7IH0KLQotICAgIC8vISBHZXQgdGhlIG51
bWJlciBvZiBtZW1iZXJzIGluIHRoZSBvYmplY3QuCi0gICAgU2l6ZVR5cGUgTWVtYmVyQ291bnQo
KSBjb25zdCB7IFJBUElESlNPTl9BU1NFUlQoSXNPYmplY3QoKSk7IHJldHVybiBkYXRhXy5vLnNp
emU7IH0KLQotICAgIC8vISBDaGVjayB3aGV0aGVyIHRoZSBvYmplY3QgaXMgZW1wdHkuCi0gICAg
Ym9vbCBPYmplY3RFbXB0eSgpIGNvbnN0IHsgUkFQSURKU09OX0FTU0VSVChJc09iamVjdCgpKTsg
cmV0dXJuIGRhdGFfLm8uc2l6ZSA9PSAwOyB9Ci0KLSAgICAvLyEgR2V0IGEgdmFsdWUgZnJvbSBh
biBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBuYW1lLgotICAgIC8qISBccHJlIElzT2JqZWN0
KCkgPT0gdHJ1ZQotICAgICAgICBcdHBhcmFtIFQgRWl0aGVyIFxjIENoIG9yIFxjIGNvbnN0IFxj
IENoICh0ZW1wbGF0ZSB1c2VkIGZvciBkaXNhbWJpZ3VhdGlvbiB3aXRoIFxyZWYgb3BlcmF0b3Jb
XShTaXplVHlwZSkpCi0gICAgICAgIFxub3RlIEluIHZlcnNpb24gMC4xeCwgaWYgdGhlIG1lbWJl
ciBpcyBub3QgZm91bmQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIG51bGwgdmFsdWUuIFRoaXMg
bWFrZXMgaXNzdWUgNy4KLSAgICAgICAgU2luY2UgMC4yLCBpZiB0aGUgbmFtZSBpcyBub3QgY29y
cmVjdCwgaXQgd2lsbCBhc3NlcnQuCi0gICAgICAgIElmIHVzZXIgaXMgdW5zdXJlIHdoZXRoZXIg
YSBtZW1iZXIgZXhpc3RzLCB1c2VyIHNob3VsZCB1c2UgSGFzTWVtYmVyKCkgZmlyc3QuCi0gICAg
ICAgIEEgYmV0dGVyIGFwcHJvYWNoIGlzIHRvIHVzZSBGaW5kTWVtYmVyKCkuCi0gICAgICAgIFxu
b3RlIExpbmVhciB0aW1lIGNvbXBsZXhpdHkuCi0gICAgKi8KLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLSAgICBSQVBJREpTT05fRElTQUJMRUlGX1JFVFVSTigoaW50ZXJuYWw6Ok5vdEV4cHI8
aW50ZXJuYWw6OklzU2FtZTx0eXBlbmFtZSBpbnRlcm5hbDo6UmVtb3ZlQ29uc3Q8VD46OlR5cGUs
IENoPiA+KSwoR2VuZXJpY1ZhbHVlJikpIG9wZXJhdG9yW10oVCogbmFtZSkgewotICAgICAgICBH
ZW5lcmljVmFsdWUgbihTdHJpbmdSZWYobmFtZSkpOwotICAgICAgICByZXR1cm4gKCp0aGlzKVtu
XTsKLSAgICB9Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgUkFQSURKU09OX0RJU0FC
TEVJRl9SRVRVUk4oKGludGVybmFsOjpOb3RFeHByPGludGVybmFsOjpJc1NhbWU8dHlwZW5hbWUg
aW50ZXJuYWw6OlJlbW92ZUNvbnN0PFQ+OjpUeXBlLCBDaD4gPiksKGNvbnN0IEdlbmVyaWNWYWx1
ZSYpKSBvcGVyYXRvcltdKFQqIG5hbWUpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8R2VuZXJp
Y1ZhbHVlJj4oKnRoaXMpW25hbWVdOyB9Ci0KLSAgICAvLyEgR2V0IGEgdmFsdWUgZnJvbSBhbiBv
YmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBuYW1lLgotICAgIC8qISBccHJlIElzT2JqZWN0KCkg
PT0gdHJ1ZQotICAgICAgICBcdHBhcmFtIFNvdXJjZUFsbG9jYXRvciBBbGxvY2F0b3Igb2YgdGhl
IFxjIG5hbWUgdmFsdWUKLQotICAgICAgICBcbm90ZSBDb21wYXJlZCB0byBccmVmIG9wZXJhdG9y
W10oVCopLCB0aGlzIHZlcnNpb24gaXMgZmFzdGVyIGJlY2F1c2UgaXQgZG9lcyBub3QgbmVlZCBh
IFN0ckxlbigpLgotICAgICAgICBBbmQgaXQgY2FuIGFsc28gaGFuZGxlIHN0cmluZ3Mgd2l0aCBl
bWJlZGRlZCBudWxsIGNoYXJhY3RlcnMuCi0KLSAgICAgICAgXG5vdGUgTGluZWFyIHRpbWUgY29t
cGxleGl0eS4KLSAgICAqLwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTb3VyY2VBbGxvY2F0b3I+
Ci0gICAgR2VuZXJpY1ZhbHVlJiBvcGVyYXRvcltdKGNvbnN0IEdlbmVyaWNWYWx1ZTxFbmNvZGlu
ZywgU291cmNlQWxsb2NhdG9yPiYgbmFtZSkgewotICAgICAgICBNZW1iZXJJdGVyYXRvciBtZW1i
ZXIgPSBGaW5kTWVtYmVyKG5hbWUpOwotICAgICAgICBpZiAobWVtYmVyICE9IE1lbWJlckVuZCgp
KQotICAgICAgICAgICAgcmV0dXJuIG1lbWJlci0+dmFsdWU7Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7ICAgIC8vIHNlZSBhYm92ZSBub3RlCi0g
ICAgICAgICAgICBzdGF0aWMgR2VuZXJpY1ZhbHVlIE51bGxWYWx1ZTsKLSAgICAgICAgICAgIHJl
dHVybiBOdWxsVmFsdWU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFNvdXJjZUFsbG9jYXRvcj4KLSAgICBjb25zdCBHZW5lcmljVmFsdWUmIG9wZXJhdG9yW10oY29u
c3QgR2VuZXJpY1ZhbHVlPEVuY29kaW5nLCBTb3VyY2VBbGxvY2F0b3I+JiBuYW1lKSBjb25zdCB7
IHJldHVybiBjb25zdF9jYXN0PEdlbmVyaWNWYWx1ZSY+KCp0aGlzKVtuYW1lXTsgfQotCi0gICAg
Ly8hIENvbnN0IG1lbWJlciBpdGVyYXRvcgotICAgIC8qISBccHJlIElzT2JqZWN0KCkgPT0gdHJ1
ZSAqLwotICAgIENvbnN0TWVtYmVySXRlcmF0b3IgTWVtYmVyQmVnaW4oKSBjb25zdCB7IFJBUElE
SlNPTl9BU1NFUlQoSXNPYmplY3QoKSk7IHJldHVybiBDb25zdE1lbWJlckl0ZXJhdG9yKGRhdGFf
Lm8ubWVtYmVycyk7IH0KLSAgICAvLyEgQ29uc3QgXGVtIHBhc3QtdGhlLWVuZCBtZW1iZXIgaXRl
cmF0b3IKLSAgICAvKiEgXHByZSBJc09iamVjdCgpID09IHRydWUgKi8KLSAgICBDb25zdE1lbWJl
ckl0ZXJhdG9yIE1lbWJlckVuZCgpIGNvbnN0ICAgeyBSQVBJREpTT05fQVNTRVJUKElzT2JqZWN0
KCkpOyByZXR1cm4gQ29uc3RNZW1iZXJJdGVyYXRvcihkYXRhXy5vLm1lbWJlcnMgKyBkYXRhXy5v
LnNpemUpOyB9Ci0gICAgLy8hIE1lbWJlciBpdGVyYXRvcgotICAgIC8qISBccHJlIElzT2JqZWN0
KCkgPT0gdHJ1ZSAqLwotICAgIE1lbWJlckl0ZXJhdG9yIE1lbWJlckJlZ2luKCkgICAgICAgICAg
ICB7IFJBUElESlNPTl9BU1NFUlQoSXNPYmplY3QoKSk7IHJldHVybiBNZW1iZXJJdGVyYXRvcihk
YXRhXy5vLm1lbWJlcnMpOyB9Ci0gICAgLy8hIFxlbSBQYXN0LXRoZS1lbmQgbWVtYmVyIGl0ZXJh
dG9yCi0gICAgLyohIFxwcmUgSXNPYmplY3QoKSA9PSB0cnVlICovCi0gICAgTWVtYmVySXRlcmF0
b3IgTWVtYmVyRW5kKCkgICAgICAgICAgICAgIHsgUkFQSURKU09OX0FTU0VSVChJc09iamVjdCgp
KTsgcmV0dXJuIE1lbWJlckl0ZXJhdG9yKGRhdGFfLm8ubWVtYmVycyArIGRhdGFfLm8uc2l6ZSk7
IH0KLQotICAgIC8vISBDaGVjayB3aGV0aGVyIGEgbWVtYmVyIGV4aXN0cyBpbiB0aGUgb2JqZWN0
LgotICAgIC8qIQotICAgICAgICBccGFyYW0gbmFtZSBNZW1iZXIgbmFtZSB0byBiZSBzZWFyY2hl
ZC4KLSAgICAgICAgXHByZSBJc09iamVjdCgpID09IHRydWUKLSAgICAgICAgXHJldHVybiBXaGV0
aGVyIGEgbWVtYmVyIHdpdGggdGhhdCBuYW1lIGV4aXN0cy4KLSAgICAgICAgXG5vdGUgSXQgaXMg
YmV0dGVyIHRvIHVzZSBGaW5kTWVtYmVyKCkgZGlyZWN0bHkgaWYgeW91IG5lZWQgdGhlIG9idGFp
biB0aGUgdmFsdWUgYXMgd2VsbC4KLSAgICAgICAgXG5vdGUgTGluZWFyIHRpbWUgY29tcGxleGl0
eS4KLSAgICAqLwotICAgIGJvb2wgSGFzTWVtYmVyKGNvbnN0IENoKiBuYW1lKSBjb25zdCB7IHJl
dHVybiBGaW5kTWVtYmVyKG5hbWUpICE9IE1lbWJlckVuZCgpOyB9Ci0KLSAgICAvLyEgQ2hlY2sg
d2hldGhlciBhIG1lbWJlciBleGlzdHMgaW4gdGhlIG9iamVjdCB3aXRoIEdlbmVyaWNWYWx1ZSBu
YW1lLgotICAgIC8qIQotICAgICAgICBUaGlzIHZlcnNpb24gaXMgZmFzdGVyIGJlY2F1c2UgaXQg
ZG9lcyBub3QgbmVlZCBhIFN0ckxlbigpLiBJdCBjYW4gYWxzbyBoYW5kbGUgc3RyaW5nIHdpdGgg
bnVsbCBjaGFyYWN0ZXIuCi0gICAgICAgIFxwYXJhbSBuYW1lIE1lbWJlciBuYW1lIHRvIGJlIHNl
YXJjaGVkLgotICAgICAgICBccHJlIElzT2JqZWN0KCkgPT0gdHJ1ZQotICAgICAgICBccmV0dXJu
IFdoZXRoZXIgYSBtZW1iZXIgd2l0aCB0aGF0IG5hbWUgZXhpc3RzLgotICAgICAgICBcbm90ZSBJ
dCBpcyBiZXR0ZXIgdG8gdXNlIEZpbmRNZW1iZXIoKSBkaXJlY3RseSBpZiB5b3UgbmVlZCB0aGUg
b2J0YWluIHRoZSB2YWx1ZSBhcyB3ZWxsLgotICAgICAgICBcbm90ZSBMaW5lYXIgdGltZSBjb21w
bGV4aXR5LgotICAgICovCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNvdXJjZUFsbG9jYXRvcj4K
LSAgICBib29sIEhhc01lbWJlcihjb25zdCBHZW5lcmljVmFsdWU8RW5jb2RpbmcsIFNvdXJjZUFs
bG9jYXRvcj4mIG5hbWUpIGNvbnN0IHsgcmV0dXJuIEZpbmRNZW1iZXIobmFtZSkgIT0gTWVtYmVy
RW5kKCk7IH0KLQotICAgIC8vISBGaW5kIG1lbWJlciBieSBuYW1lLgotICAgIC8qIQotICAgICAg
ICBccGFyYW0gbmFtZSBNZW1iZXIgbmFtZSB0byBiZSBzZWFyY2hlZC4KLSAgICAgICAgXHByZSBJ
c09iamVjdCgpID09IHRydWUKLSAgICAgICAgXHJldHVybiBJdGVyYXRvciB0byBtZW1iZXIsIGlm
IGl0IGV4aXN0cy4KLSAgICAgICAgICAgIE90aGVyd2lzZSByZXR1cm5zIFxyZWYgTWVtYmVyRW5k
KCkuCi0KLSAgICAgICAgXG5vdGUgRWFybGllciB2ZXJzaW9ucyBvZiBSYXBpZGpzb24gcmV0dXJu
ZWQgYSBcYyBOVUxMIHBvaW50ZXIsIGluIGNhc2UKLSAgICAgICAgICAgIHRoZSByZXF1ZXN0ZWQg
bWVtYmVyIGRvZXNuJ3QgZXhpc3QuIEZvciBjb25zaXN0ZW5jeSB3aXRoIGUuZy4KLSAgICAgICAg
ICAgIFxjIHN0ZDo6bWFwLCB0aGlzIGhhcyBiZWVuIGNoYW5nZWQgdG8gTWVtYmVyRW5kKCkgbm93
LgotICAgICAgICBcbm90ZSBMaW5lYXIgdGltZSBjb21wbGV4aXR5LgotICAgICovCi0gICAgTWVt
YmVySXRlcmF0b3IgRmluZE1lbWJlcihjb25zdCBDaCogbmFtZSkgewotICAgICAgICBHZW5lcmlj
VmFsdWUgbihTdHJpbmdSZWYobmFtZSkpOwotICAgICAgICByZXR1cm4gRmluZE1lbWJlcihuKTsK
LSAgICB9Ci0KLSAgICBDb25zdE1lbWJlckl0ZXJhdG9yIEZpbmRNZW1iZXIoY29uc3QgQ2gqIG5h
bWUpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8R2VuZXJpY1ZhbHVlJj4oKnRoaXMpLkZpbmRN
ZW1iZXIobmFtZSk7IH0KLQotICAgIC8vISBGaW5kIG1lbWJlciBieSBuYW1lLgotICAgIC8qIQot
ICAgICAgICBUaGlzIHZlcnNpb24gaXMgZmFzdGVyIGJlY2F1c2UgaXQgZG9lcyBub3QgbmVlZCBh
IFN0ckxlbigpLiBJdCBjYW4gYWxzbyBoYW5kbGUgc3RyaW5nIHdpdGggbnVsbCBjaGFyYWN0ZXIu
Ci0gICAgICAgIFxwYXJhbSBuYW1lIE1lbWJlciBuYW1lIHRvIGJlIHNlYXJjaGVkLgotICAgICAg
ICBccHJlIElzT2JqZWN0KCkgPT0gdHJ1ZQotICAgICAgICBccmV0dXJuIEl0ZXJhdG9yIHRvIG1l
bWJlciwgaWYgaXQgZXhpc3RzLgotICAgICAgICAgICAgT3RoZXJ3aXNlIHJldHVybnMgXHJlZiBN
ZW1iZXJFbmQoKS4KLQotICAgICAgICBcbm90ZSBFYXJsaWVyIHZlcnNpb25zIG9mIFJhcGlkanNv
biByZXR1cm5lZCBhIFxjIE5VTEwgcG9pbnRlciwgaW4gY2FzZQotICAgICAgICAgICAgdGhlIHJl
cXVlc3RlZCBtZW1iZXIgZG9lc24ndCBleGlzdC4gRm9yIGNvbnNpc3RlbmN5IHdpdGggZS5nLgot
ICAgICAgICAgICAgXGMgc3RkOjptYXAsIHRoaXMgaGFzIGJlZW4gY2hhbmdlZCB0byBNZW1iZXJF
bmQoKSBub3cuCi0gICAgICAgIFxub3RlIExpbmVhciB0aW1lIGNvbXBsZXhpdHkuCi0gICAgKi8K
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU291cmNlQWxsb2NhdG9yPgotICAgIE1lbWJlckl0ZXJh
dG9yIEZpbmRNZW1iZXIoY29uc3QgR2VuZXJpY1ZhbHVlPEVuY29kaW5nLCBTb3VyY2VBbGxvY2F0
b3I+JiBuYW1lKSB7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoSXNPYmplY3QoKSk7Ci0gICAg
ICAgIFJBUElESlNPTl9BU1NFUlQobmFtZS5Jc1N0cmluZygpKTsKLSAgICAgICAgTWVtYmVySXRl
cmF0b3IgbWVtYmVyID0gTWVtYmVyQmVnaW4oKTsKLSAgICAgICAgZm9yICggOyBtZW1iZXIgIT0g
TWVtYmVyRW5kKCk7ICsrbWVtYmVyKQotICAgICAgICAgICAgaWYgKG5hbWUuU3RyaW5nRXF1YWwo
bWVtYmVyLT5uYW1lKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgcmV0dXJuIG1l
bWJlcjsKLSAgICB9Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNvdXJjZUFsbG9jYXRvcj4gQ29u
c3RNZW1iZXJJdGVyYXRvciBGaW5kTWVtYmVyKGNvbnN0IEdlbmVyaWNWYWx1ZTxFbmNvZGluZywg
U291cmNlQWxsb2NhdG9yPiYgbmFtZSkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxHZW5lcmlj
VmFsdWUmPigqdGhpcykuRmluZE1lbWJlcihuYW1lKTsgfQotCi0gICAgLy8hIEFkZCBhIG1lbWJl
ciAobmFtZS12YWx1ZSBwYWlyKSB0byB0aGUgb2JqZWN0LgotICAgIC8qISBccGFyYW0gbmFtZSBB
IHN0cmluZyB2YWx1ZSBhcyBuYW1lIG9mIG1lbWJlci4KLSAgICAgICAgXHBhcmFtIHZhbHVlIFZh
bHVlIG9mIGFueSB0eXBlLgotICAgICAgICBccGFyYW0gYWxsb2NhdG9yICAgIEFsbG9jYXRvciBm
b3IgcmVhbGxvY2F0aW5nIG1lbW9yeS4gSXQgbXVzdCBiZSB0aGUgc2FtZSBvbmUgYXMgdXNlZCBi
ZWZvcmUuIENvbW1vbmx5IHVzZSBHZW5lcmljRG9jdW1lbnQ6OkdldEFsbG9jYXRvcigpLgotICAg
ICAgICBccmV0dXJuIFRoZSB2YWx1ZSBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCi0gICAgICAgIFxu
b3RlIFRoZSBvd25lcnNoaXAgb2YgXGMgbmFtZSBhbmQgXGMgdmFsdWUgd2lsbCBiZSB0cmFuc2Zl
cnJlZCB0byB0aGlzIG9iamVjdCBvbiBzdWNjZXNzLgotICAgICAgICBccHJlICBJc09iamVjdCgp
ICYmIG5hbWUuSXNTdHJpbmcoKQotICAgICAgICBccG9zdCBuYW1lLklzTnVsbCgpICYmIHZhbHVl
LklzTnVsbCgpCi0gICAgICAgIFxub3RlIEFtb3J0aXplZCBDb25zdGFudCB0aW1lIGNvbXBsZXhp
dHkuCi0gICAgKi8KLSAgICBHZW5lcmljVmFsdWUmIEFkZE1lbWJlcihHZW5lcmljVmFsdWUmIG5h
bWUsIEdlbmVyaWNWYWx1ZSYgdmFsdWUsIEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7Ci0gICAgICAg
IFJBUElESlNPTl9BU1NFUlQoSXNPYmplY3QoKSk7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQo
bmFtZS5Jc1N0cmluZygpKTsKLQotICAgICAgICBPYmplY3QmIG8gPSBkYXRhXy5vOwotICAgICAg
ICBpZiAoby5zaXplID49IG8uY2FwYWNpdHkpIHsKLSAgICAgICAgICAgIGlmIChvLmNhcGFjaXR5
ID09IDApIHsKLSAgICAgICAgICAgICAgICBvLmNhcGFjaXR5ID0ga0RlZmF1bHRPYmplY3RDYXBh
Y2l0eTsKLSAgICAgICAgICAgICAgICBvLm1lbWJlcnMgPSByZWludGVycHJldF9jYXN0PE1lbWJl
cio+KGFsbG9jYXRvci5NYWxsb2Moby5jYXBhY2l0eSAqIHNpemVvZihNZW1iZXIpKSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBTaXplVHlwZSBv
bGRDYXBhY2l0eSA9IG8uY2FwYWNpdHk7Ci0gICAgICAgICAgICAgICAgby5jYXBhY2l0eSArPSAo
b2xkQ2FwYWNpdHkgKyAxKSAvIDI7IC8vIGdyb3cgYnkgZmFjdG9yIDEuNQotICAgICAgICAgICAg
ICAgIG8ubWVtYmVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8TWVtYmVyKj4oYWxsb2NhdG9yLlJlYWxs
b2Moby5tZW1iZXJzLCBvbGRDYXBhY2l0eSAqIHNpemVvZihNZW1iZXIpLCBvLmNhcGFjaXR5ICog
c2l6ZW9mKE1lbWJlcikpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBvLm1l
bWJlcnNbby5zaXplXS5uYW1lLlJhd0Fzc2lnbihuYW1lKTsKLSAgICAgICAgby5tZW1iZXJzW28u
c2l6ZV0udmFsdWUuUmF3QXNzaWduKHZhbHVlKTsKLSAgICAgICAgby5zaXplKys7Ci0gICAgICAg
IHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNpZiBSQVBJREpTT05fSEFTX0NYWDExX1JWQUxVRV9S
RUZTCi0gICAgR2VuZXJpY1ZhbHVlJiBBZGRNZW1iZXIoR2VuZXJpY1ZhbHVlJiYgbmFtZSwgR2Vu
ZXJpY1ZhbHVlJiYgdmFsdWUsIEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7Ci0gICAgICAgIHJldHVy
biBBZGRNZW1iZXIobmFtZSwgdmFsdWUsIGFsbG9jYXRvcik7Ci0gICAgfQotICAgIEdlbmVyaWNW
YWx1ZSYgQWRkTWVtYmVyKEdlbmVyaWNWYWx1ZSYmIG5hbWUsIEdlbmVyaWNWYWx1ZSYgdmFsdWUs
IEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7Ci0gICAgICAgIHJldHVybiBBZGRNZW1iZXIobmFtZSwg
dmFsdWUsIGFsbG9jYXRvcik7Ci0gICAgfQotICAgIEdlbmVyaWNWYWx1ZSYgQWRkTWVtYmVyKEdl
bmVyaWNWYWx1ZSYgbmFtZSwgR2VuZXJpY1ZhbHVlJiYgdmFsdWUsIEFsbG9jYXRvciYgYWxsb2Nh
dG9yKSB7Ci0gICAgICAgIHJldHVybiBBZGRNZW1iZXIobmFtZSwgdmFsdWUsIGFsbG9jYXRvcik7
Ci0gICAgfQotICAgIEdlbmVyaWNWYWx1ZSYgQWRkTWVtYmVyKFN0cmluZ1JlZlR5cGUgbmFtZSwg
R2VuZXJpY1ZhbHVlJiYgdmFsdWUsIEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7Ci0gICAgICAgIEdl
bmVyaWNWYWx1ZSBuKG5hbWUpOwotICAgICAgICByZXR1cm4gQWRkTWVtYmVyKG4sIHZhbHVlLCBh
bGxvY2F0b3IpOwotICAgIH0KLSNlbmRpZiAvLyBSQVBJREpTT05fSEFTX0NYWDExX1JWQUxVRV9S
RUZTCi0KLQotICAgIC8vISBBZGQgYSBtZW1iZXIgKG5hbWUtdmFsdWUgcGFpcikgdG8gdGhlIG9i
amVjdC4KLSAgICAvKiEgXHBhcmFtIG5hbWUgQSBjb25zdGFudCBzdHJpbmcgcmVmZXJlbmNlIGFz
IG5hbWUgb2YgbWVtYmVyLgotICAgICAgICBccGFyYW0gdmFsdWUgVmFsdWUgb2YgYW55IHR5cGUu
Ci0gICAgICAgIFxwYXJhbSBhbGxvY2F0b3IgICAgQWxsb2NhdG9yIGZvciByZWFsbG9jYXRpbmcg
bWVtb3J5LiBJdCBtdXN0IGJlIHRoZSBzYW1lIG9uZSBhcyB1c2VkIGJlZm9yZS4gQ29tbW9ubHkg
dXNlIEdlbmVyaWNEb2N1bWVudDo6R2V0QWxsb2NhdG9yKCkuCi0gICAgICAgIFxyZXR1cm4gVGhl
IHZhbHVlIGl0c2VsZiBmb3IgZmx1ZW50IEFQSS4KLSAgICAgICAgXG5vdGUgVGhlIG93bmVyc2hp
cCBvZiBcYyB2YWx1ZSB3aWxsIGJlIHRyYW5zZmVycmVkIHRvIHRoaXMgb2JqZWN0IG9uIHN1Y2Nl
c3MuCi0gICAgICAgIFxwcmUgIElzT2JqZWN0KCkKLSAgICAgICAgXHBvc3QgdmFsdWUuSXNOdWxs
KCkKLSAgICAgICAgXG5vdGUgQW1vcnRpemVkIENvbnN0YW50IHRpbWUgY29tcGxleGl0eS4KLSAg
ICAqLwotICAgIEdlbmVyaWNWYWx1ZSYgQWRkTWVtYmVyKFN0cmluZ1JlZlR5cGUgbmFtZSwgR2Vu
ZXJpY1ZhbHVlJiB2YWx1ZSwgQWxsb2NhdG9yJiBhbGxvY2F0b3IpIHsKLSAgICAgICAgR2VuZXJp
Y1ZhbHVlIG4obmFtZSk7Ci0gICAgICAgIHJldHVybiBBZGRNZW1iZXIobiwgdmFsdWUsIGFsbG9j
YXRvcik7Ci0gICAgfQotCi0gICAgLy8hIEFkZCBhIGNvbnN0YW50IHN0cmluZyB2YWx1ZSBhcyBt
ZW1iZXIgKG5hbWUtdmFsdWUgcGFpcikgdG8gdGhlIG9iamVjdC4KLSAgICAvKiEgXHBhcmFtIG5h
bWUgQSBjb25zdGFudCBzdHJpbmcgcmVmZXJlbmNlIGFzIG5hbWUgb2YgbWVtYmVyLgotICAgICAg
ICBccGFyYW0gdmFsdWUgY29uc3RhbnQgc3RyaW5nIHJlZmVyZW5jZSBhcyB2YWx1ZSBvZiBtZW1i
ZXIuCi0gICAgICAgIFxwYXJhbSBhbGxvY2F0b3IgICAgQWxsb2NhdG9yIGZvciByZWFsbG9jYXRp
bmcgbWVtb3J5LiBJdCBtdXN0IGJlIHRoZSBzYW1lIG9uZSBhcyB1c2VkIGJlZm9yZS4gQ29tbW9u
bHkgdXNlIEdlbmVyaWNEb2N1bWVudDo6R2V0QWxsb2NhdG9yKCkuCi0gICAgICAgIFxyZXR1cm4g
VGhlIHZhbHVlIGl0c2VsZiBmb3IgZmx1ZW50IEFQSS4KLSAgICAgICAgXHByZSAgSXNPYmplY3Qo
KQotICAgICAgICBcbm90ZSBUaGlzIG92ZXJsb2FkIGlzIG5lZWRlZCB0byBhdm9pZCBjbGFzaGVz
IHdpdGggdGhlIGdlbmVyaWMgcHJpbWl0aXZlIHR5cGUgQWRkTWVtYmVyKFN0cmluZ1JlZlR5cGUs
VCxBbGxvY2F0b3ImKSBvdmVybG9hZCBiZWxvdy4KLSAgICAgICAgXG5vdGUgQW1vcnRpemVkIENv
bnN0YW50IHRpbWUgY29tcGxleGl0eS4KLSAgICAqLwotICAgIEdlbmVyaWNWYWx1ZSYgQWRkTWVt
YmVyKFN0cmluZ1JlZlR5cGUgbmFtZSwgU3RyaW5nUmVmVHlwZSB2YWx1ZSwgQWxsb2NhdG9yJiBh
bGxvY2F0b3IpIHsKLSAgICAgICAgR2VuZXJpY1ZhbHVlIHYodmFsdWUpOwotICAgICAgICByZXR1
cm4gQWRkTWVtYmVyKG5hbWUsIHYsIGFsbG9jYXRvcik7Ci0gICAgfQotCi0gICAgLy8hIEFkZCBh
bnkgcHJpbWl0aXZlIHZhbHVlIGFzIG1lbWJlciAobmFtZS12YWx1ZSBwYWlyKSB0byB0aGUgb2Jq
ZWN0LgotICAgIC8qISBcdHBhcmFtIFQgRWl0aGVyIFxyZWYgVHlwZSwgXGMgaW50LCBcYyB1bnNp
Z25lZCwgXGMgaW50NjRfdCwgXGMgdWludDY0X3QKLSAgICAgICAgXHBhcmFtIG5hbWUgQSBjb25z
dGFudCBzdHJpbmcgcmVmZXJlbmNlIGFzIG5hbWUgb2YgbWVtYmVyLgotICAgICAgICBccGFyYW0g
dmFsdWUgVmFsdWUgb2YgcHJpbWl0aXZlIHR5cGUgXGMgVCBhcyB2YWx1ZSBvZiBtZW1iZXIKLSAg
ICAgICAgXHBhcmFtIGFsbG9jYXRvciBBbGxvY2F0b3IgZm9yIHJlYWxsb2NhdGluZyBtZW1vcnku
IENvbW1vbmx5IHVzZSBHZW5lcmljRG9jdW1lbnQ6OkdldEFsbG9jYXRvcigpLgotICAgICAgICBc
cmV0dXJuIFRoZSB2YWx1ZSBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCi0gICAgICAgIFxwcmUgIElz
T2JqZWN0KCkKLQotICAgICAgICBcbm90ZSBUaGUgc291cmNlIHR5cGUgXGMgVCBleHBsaWNpdGx5
IGRpc2FsbG93cyBhbGwgcG9pbnRlciB0eXBlcywKLSAgICAgICAgICAgIGVzcGVjaWFsbHkgKFxj
IGNvbnN0KSBccmVmIENoKi4gIFRoaXMgaGVscHMgYXZvaWRpbmcgaW1wbGljaXRseQotICAgICAg
ICAgICAgcmVmZXJlbmNpbmcgY2hhcmFjdGVyIHN0cmluZ3Mgd2l0aCBpbnN1ZmZpY2llbnQgbGlm
ZXRpbWUsIHVzZQotICAgICAgICAgICAgXHJlZiBBZGRNZW1iZXIoU3RyaW5nUmVmVHlwZSwgR2Vu
ZXJpY1ZhbHVlJiwgQWxsb2NhdG9yJikgb3IgXHJlZgotICAgICAgICAgICAgQWRkTWVtYmVyKFN0
cmluZ1JlZlR5cGUsIFN0cmluZ1JlZlR5cGUsIEFsbG9jYXRvciYpLgotICAgICAgICAgICAgQWxs
IG90aGVyIHBvaW50ZXIgdHlwZXMgd291bGQgaW1wbGljaXRseSBjb252ZXJ0IHRvIFxjIGJvb2ws
Ci0gICAgICAgICAgICB1c2UgYW4gZXhwbGljaXQgY2FzdCBpbnN0ZWFkLCBpZiBuZWVkZWQuCi0g
ICAgICAgIFxub3RlIEFtb3J0aXplZCBDb25zdGFudCB0aW1lIGNvbXBsZXhpdHkuCi0gICAgKi8K
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBSQVBJREpTT05fRElTQUJMRUlGX1JFVFVS
TigoaW50ZXJuYWw6Ok9yRXhwcjxpbnRlcm5hbDo6SXNQb2ludGVyPFQ+LCBpbnRlcm5hbDo6SXNH
ZW5lcmljVmFsdWU8VD4gPiksIChHZW5lcmljVmFsdWUmKSkKLSAgICBBZGRNZW1iZXIoU3RyaW5n
UmVmVHlwZSBuYW1lLCBUIHZhbHVlLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgewotICAgICAgICBH
ZW5lcmljVmFsdWUgbihuYW1lKTsKLSAgICAgICAgR2VuZXJpY1ZhbHVlIHYodmFsdWUpOwotICAg
ICAgICByZXR1cm4gQWRkTWVtYmVyKG4sIHYsIGFsbG9jYXRvcik7Ci0gICAgfQotCi0gICAgLy8h
IFJlbW92ZSBhbGwgbWVtYmVycyBpbiB0aGUgb2JqZWN0LgotICAgIC8qISBUaGlzIGZ1bmN0aW9u
IGRvIG5vdCBkZWFsbG9jYXRlIG1lbW9yeSBpbiB0aGUgb2JqZWN0LCBpLmUuIHRoZSBjYXBhY2l0
eSBpcyB1bmNoYW5nZWQuCi0gICAgICAgIFxub3RlIExpbmVhciB0aW1lIGNvbXBsZXhpdHkuCi0g
ICAgKi8KLSAgICB2b2lkIFJlbW92ZUFsbE1lbWJlcnMoKSB7Ci0gICAgICAgIFJBUElESlNPTl9B
U1NFUlQoSXNPYmplY3QoKSk7IAotICAgICAgICBmb3IgKE1lbWJlckl0ZXJhdG9yIG0gPSBNZW1i
ZXJCZWdpbigpOyBtICE9IE1lbWJlckVuZCgpOyArK20pCi0gICAgICAgICAgICBtLT5+TWVtYmVy
KCk7Ci0gICAgICAgIGRhdGFfLm8uc2l6ZSA9IDA7Ci0gICAgfQotCi0gICAgLy8hIFJlbW92ZSBh
IG1lbWJlciBpbiBvYmplY3QgYnkgaXRzIG5hbWUuCi0gICAgLyohIFxwYXJhbSBuYW1lIE5hbWUg
b2YgbWVtYmVyIHRvIGJlIHJlbW92ZWQuCi0gICAgICAgIFxyZXR1cm4gV2hldGhlciB0aGUgbWVt
YmVyIGV4aXN0ZWQuCi0gICAgICAgIFxub3RlIFRoaXMgZnVuY3Rpb24gbWF5IHJlb3JkZXIgdGhl
IG9iamVjdCBtZW1iZXJzLiBVc2UgXHJlZgotICAgICAgICAgICAgRXJhc2VNZW1iZXIoQ29uc3RN
ZW1iZXJJdGVyYXRvcikgaWYgeW91IG5lZWQgdG8gcHJlc2VydmUgdGhlCi0gICAgICAgICAgICBy
ZWxhdGl2ZSBvcmRlciBvZiB0aGUgcmVtYWluaW5nIG1lbWJlcnMuCi0gICAgICAgIFxub3RlIExp
bmVhciB0aW1lIGNvbXBsZXhpdHkuCi0gICAgKi8KLSAgICBib29sIFJlbW92ZU1lbWJlcihjb25z
dCBDaCogbmFtZSkgewotICAgICAgICBHZW5lcmljVmFsdWUgbihTdHJpbmdSZWYobmFtZSkpOwot
ICAgICAgICByZXR1cm4gUmVtb3ZlTWVtYmVyKG4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBTb3VyY2VBbGxvY2F0b3I+Ci0gICAgYm9vbCBSZW1vdmVNZW1iZXIoY29uc3QgR2Vu
ZXJpY1ZhbHVlPEVuY29kaW5nLCBTb3VyY2VBbGxvY2F0b3I+JiBuYW1lKSB7Ci0gICAgICAgIE1l
bWJlckl0ZXJhdG9yIG0gPSBGaW5kTWVtYmVyKG5hbWUpOwotICAgICAgICBpZiAobSAhPSBNZW1i
ZXJFbmQoKSkgewotICAgICAgICAgICAgUmVtb3ZlTWVtYmVyKG0pOwotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIC8vISBSZW1vdmUgYSBtZW1iZXIgaW4gb2JqZWN0IGJ5IGl0ZXJh
dG9yLgotICAgIC8qISBccGFyYW0gbSBtZW1iZXIgaXRlcmF0b3IgKG9idGFpbmVkIGJ5IEZpbmRN
ZW1iZXIoKSBvciBNZW1iZXJCZWdpbigpKS4KLSAgICAgICAgXHJldHVybiB0aGUgbmV3IGl0ZXJh
dG9yIGFmdGVyIHJlbW92YWwuCi0gICAgICAgIFxub3RlIFRoaXMgZnVuY3Rpb24gbWF5IHJlb3Jk
ZXIgdGhlIG9iamVjdCBtZW1iZXJzLiBVc2UgXHJlZgotICAgICAgICAgICAgRXJhc2VNZW1iZXIo
Q29uc3RNZW1iZXJJdGVyYXRvcikgaWYgeW91IG5lZWQgdG8gcHJlc2VydmUgdGhlCi0gICAgICAg
ICAgICByZWxhdGl2ZSBvcmRlciBvZiB0aGUgcmVtYWluaW5nIG1lbWJlcnMuCi0gICAgICAgIFxu
b3RlIENvbnN0YW50IHRpbWUgY29tcGxleGl0eS4KLSAgICAqLwotICAgIE1lbWJlckl0ZXJhdG9y
IFJlbW92ZU1lbWJlcihNZW1iZXJJdGVyYXRvciBtKSB7Ci0gICAgICAgIFJBUElESlNPTl9BU1NF
UlQoSXNPYmplY3QoKSk7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoZGF0YV8uby5zaXplID4g
MCk7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoZGF0YV8uby5tZW1iZXJzICE9IDApOwotICAg
ICAgICBSQVBJREpTT05fQVNTRVJUKG0gPj0gTWVtYmVyQmVnaW4oKSAmJiBtIDwgTWVtYmVyRW5k
KCkpOwotCi0gICAgICAgIE1lbWJlckl0ZXJhdG9yIGxhc3QoZGF0YV8uby5tZW1iZXJzICsgKGRh
dGFfLm8uc2l6ZSAtIDEpKTsKLSAgICAgICAgaWYgKGRhdGFfLm8uc2l6ZSA+IDEgJiYgbSAhPSBs
YXN0KSB7Ci0gICAgICAgICAgICAvLyBNb3ZlIHRoZSBsYXN0IG9uZSB0byB0aGlzIHBsYWNlCi0g
ICAgICAgICAgICAqbSA9ICpsYXN0OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgLy8gT25seSBvbmUgbGVmdCwganVzdCBkZXN0cm95Ci0gICAgICAgICAgICBtLT5+TWVt
YmVyKCk7Ci0gICAgICAgIH0KLSAgICAgICAgLS1kYXRhXy5vLnNpemU7Ci0gICAgICAgIHJldHVy
biBtOwotICAgIH0KLQotICAgIC8vISBSZW1vdmUgYSBtZW1iZXIgZnJvbSBhbiBvYmplY3QgYnkg
aXRlcmF0b3IuCi0gICAgLyohIFxwYXJhbSBwb3MgaXRlcmF0b3IgdG8gdGhlIG1lbWJlciB0byBy
ZW1vdmUKLSAgICAgICAgXHByZSBJc09iamVjdCgpID09IHRydWUgJiYgXHJlZiBNZW1iZXJCZWdp
bigpIDw9IFxjIHBvcyA8IFxyZWYgTWVtYmVyRW5kKCkKLSAgICAgICAgXHJldHVybiBJdGVyYXRv
ciBmb2xsb3dpbmcgdGhlIHJlbW92ZWQgZWxlbWVudC4KLSAgICAgICAgICAgIElmIHRoZSBpdGVy
YXRvciBcYyBwb3MgcmVmZXJzIHRvIHRoZSBsYXN0IGVsZW1lbnQsIHRoZSBccmVmIE1lbWJlckVu
ZCgpIGl0ZXJhdG9yIGlzIHJldHVybmVkLgotICAgICAgICBcbm90ZSBUaGlzIGZ1bmN0aW9uIHBy
ZXNlcnZlcyB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgdGhlIHJlbWFpbmluZyBvYmplY3QKLSAgICAg
ICAgICAgIG1lbWJlcnMuIElmIHlvdSBkbyBub3QgbmVlZCB0aGlzLCB1c2UgdGhlIG1vcmUgZWZm
aWNpZW50IFxyZWYgUmVtb3ZlTWVtYmVyKE1lbWJlckl0ZXJhdG9yKS4KLSAgICAgICAgXG5vdGUg
TGluZWFyIHRpbWUgY29tcGxleGl0eS4KLSAgICAqLwotICAgIE1lbWJlckl0ZXJhdG9yIEVyYXNl
TWVtYmVyKENvbnN0TWVtYmVySXRlcmF0b3IgcG9zKSB7Ci0gICAgICAgIHJldHVybiBFcmFzZU1l
bWJlcihwb3MsIHBvcyArMSk7Ci0gICAgfQotCi0gICAgLy8hIFJlbW92ZSBtZW1iZXJzIGluIHRo
ZSByYW5nZSBbZmlyc3QsIGxhc3QpIGZyb20gYW4gb2JqZWN0LgotICAgIC8qISBccGFyYW0gZmly
c3QgaXRlcmF0b3IgdG8gdGhlIGZpcnN0IG1lbWJlciB0byByZW1vdmUKLSAgICAgICAgXHBhcmFt
IGxhc3QgIGl0ZXJhdG9yIGZvbGxvd2luZyB0aGUgbGFzdCBtZW1iZXIgdG8gcmVtb3ZlCi0gICAg
ICAgIFxwcmUgSXNPYmplY3QoKSA9PSB0cnVlICYmIFxyZWYgTWVtYmVyQmVnaW4oKSA8PSBcYyBm
aXJzdCA8PSBcYyBsYXN0IDw9IFxyZWYgTWVtYmVyRW5kKCkKLSAgICAgICAgXHJldHVybiBJdGVy
YXRvciBmb2xsb3dpbmcgdGhlIGxhc3QgcmVtb3ZlZCBlbGVtZW50LgotICAgICAgICBcbm90ZSBU
aGlzIGZ1bmN0aW9uIHByZXNlcnZlcyB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgdGhlIHJlbWFpbmlu
ZyBvYmplY3QKLSAgICAgICAgICAgIG1lbWJlcnMuCi0gICAgICAgIFxub3RlIExpbmVhciB0aW1l
IGNvbXBsZXhpdHkuCi0gICAgKi8KLSAgICBNZW1iZXJJdGVyYXRvciBFcmFzZU1lbWJlcihDb25z
dE1lbWJlckl0ZXJhdG9yIGZpcnN0LCBDb25zdE1lbWJlckl0ZXJhdG9yIGxhc3QpIHsKLSAgICAg
ICAgUkFQSURKU09OX0FTU0VSVChJc09iamVjdCgpKTsKLSAgICAgICAgUkFQSURKU09OX0FTU0VS
VChkYXRhXy5vLnNpemUgPiAwKTsKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVChkYXRhXy5vLm1l
bWJlcnMgIT0gMCk7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoZmlyc3QgPj0gTWVtYmVyQmVn
aW4oKSk7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoZmlyc3QgPD0gbGFzdCk7Ci0gICAgICAg
IFJBUElESlNPTl9BU1NFUlQobGFzdCA8PSBNZW1iZXJFbmQoKSk7Ci0KLSAgICAgICAgTWVtYmVy
SXRlcmF0b3IgcG9zID0gTWVtYmVyQmVnaW4oKSArIChmaXJzdCAtIE1lbWJlckJlZ2luKCkpOwot
ICAgICAgICBmb3IgKE1lbWJlckl0ZXJhdG9yIGl0ciA9IHBvczsgaXRyICE9IGxhc3Q7ICsraXRy
KQotICAgICAgICAgICAgaXRyLT5+TWVtYmVyKCk7Ci0gICAgICAgIHN0ZDo6bWVtbW92ZSgmKnBv
cywgJipsYXN0LCAoTWVtYmVyRW5kKCkgLSBsYXN0KSAqIHNpemVvZihNZW1iZXIpKTsKLSAgICAg
ICAgZGF0YV8uby5zaXplIC09IChsYXN0IC0gZmlyc3QpOwotICAgICAgICByZXR1cm4gcG9zOwot
ICAgIH0KLQotICAgIC8vQH0KLQotICAgIC8vIUBuYW1lIEFycmF5Ci0gICAgLy9AewotCi0gICAg
Ly8hIFNldCB0aGlzIHZhbHVlIGFzIGFuIGVtcHR5IGFycmF5LgotICAgIC8qISBccG9zdCBJc0Fy
cmF5ID09IHRydWUgKi8KLSAgICBHZW5lcmljVmFsdWUmIFNldEFycmF5KCkgeyAgdGhpcy0+fkdl
bmVyaWNWYWx1ZSgpOyBuZXcgKHRoaXMpIEdlbmVyaWNWYWx1ZShrQXJyYXlUeXBlKTsgcmV0dXJu
ICp0aGlzOyB9Ci0KLSAgICAvLyEgR2V0IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYXJyYXku
Ci0gICAgU2l6ZVR5cGUgU2l6ZSgpIGNvbnN0IHsgUkFQSURKU09OX0FTU0VSVChJc0FycmF5KCkp
OyByZXR1cm4gZGF0YV8uYS5zaXplOyB9Ci0KLSAgICAvLyEgR2V0IHRoZSBjYXBhY2l0eSBvZiBh
cnJheS4KLSAgICBTaXplVHlwZSBDYXBhY2l0eSgpIGNvbnN0IHsgUkFQSURKU09OX0FTU0VSVChJ
c0FycmF5KCkpOyByZXR1cm4gZGF0YV8uYS5jYXBhY2l0eTsgfQotCi0gICAgLy8hIENoZWNrIHdo
ZXRoZXIgdGhlIGFycmF5IGlzIGVtcHR5LgotICAgIGJvb2wgRW1wdHkoKSBjb25zdCB7IFJBUElE
SlNPTl9BU1NFUlQoSXNBcnJheSgpKTsgcmV0dXJuIGRhdGFfLmEuc2l6ZSA9PSAwOyB9Ci0KLSAg
ICAvLyEgUmVtb3ZlIGFsbCBlbGVtZW50cyBpbiB0aGUgYXJyYXkuCi0gICAgLyohIFRoaXMgZnVu
Y3Rpb24gZG8gbm90IGRlYWxsb2NhdGUgbWVtb3J5IGluIHRoZSBhcnJheSwgaS5lLiB0aGUgY2Fw
YWNpdHkgaXMgdW5jaGFuZ2VkLgotICAgICAgICBcbm90ZSBMaW5lYXIgdGltZSBjb21wbGV4aXR5
LgotICAgICovCi0gICAgdm9pZCBDbGVhcigpIHsKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVChJ
c0FycmF5KCkpOyAKLSAgICAgICAgZm9yIChTaXplVHlwZSBpID0gMDsgaSA8IGRhdGFfLmEuc2l6
ZTsgKytpKQotICAgICAgICAgICAgZGF0YV8uYS5lbGVtZW50c1tpXS5+R2VuZXJpY1ZhbHVlKCk7
Ci0gICAgICAgIGRhdGFfLmEuc2l6ZSA9IDA7Ci0gICAgfQotCi0gICAgLy8hIEdldCBhbiBlbGVt
ZW50IGZyb20gYXJyYXkgYnkgaW5kZXguCi0gICAgLyohIFxwcmUgSXNBcnJheSgpID09IHRydWUK
LSAgICAgICAgXHBhcmFtIGluZGV4IFplcm8tYmFzZWQgaW5kZXggb2YgZWxlbWVudC4KLSAgICAg
ICAgXHNlZSBvcGVyYXRvcltdKFQqKQotICAgICovCi0gICAgR2VuZXJpY1ZhbHVlJiBvcGVyYXRv
cltdKFNpemVUeXBlIGluZGV4KSB7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoSXNBcnJheSgp
KTsKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVChpbmRleCA8IGRhdGFfLmEuc2l6ZSk7Ci0gICAg
ICAgIHJldHVybiBkYXRhXy5hLmVsZW1lbnRzW2luZGV4XTsKLSAgICB9Ci0gICAgY29uc3QgR2Vu
ZXJpY1ZhbHVlJiBvcGVyYXRvcltdKFNpemVUeXBlIGluZGV4KSBjb25zdCB7IHJldHVybiBjb25z
dF9jYXN0PEdlbmVyaWNWYWx1ZSY+KCp0aGlzKVtpbmRleF07IH0KLQotICAgIC8vISBFbGVtZW50
IGl0ZXJhdG9yCi0gICAgLyohIFxwcmUgSXNBcnJheSgpID09IHRydWUgKi8KLSAgICBWYWx1ZUl0
ZXJhdG9yIEJlZ2luKCkgeyBSQVBJREpTT05fQVNTRVJUKElzQXJyYXkoKSk7IHJldHVybiBkYXRh
Xy5hLmVsZW1lbnRzOyB9Ci0gICAgLy8hIFxlbSBQYXN0LXRoZS1lbmQgZWxlbWVudCBpdGVyYXRv
cgotICAgIC8qISBccHJlIElzQXJyYXkoKSA9PSB0cnVlICovCi0gICAgVmFsdWVJdGVyYXRvciBF
bmQoKSB7IFJBUElESlNPTl9BU1NFUlQoSXNBcnJheSgpKTsgcmV0dXJuIGRhdGFfLmEuZWxlbWVu
dHMgKyBkYXRhXy5hLnNpemU7IH0KLSAgICAvLyEgQ29uc3RhbnQgZWxlbWVudCBpdGVyYXRvcgot
ICAgIC8qISBccHJlIElzQXJyYXkoKSA9PSB0cnVlICovCi0gICAgQ29uc3RWYWx1ZUl0ZXJhdG9y
IEJlZ2luKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxHZW5lcmljVmFsdWUmPigqdGhpcyku
QmVnaW4oKTsgfQotICAgIC8vISBDb25zdGFudCBcZW0gcGFzdC10aGUtZW5kIGVsZW1lbnQgaXRl
cmF0b3IKLSAgICAvKiEgXHByZSBJc0FycmF5KCkgPT0gdHJ1ZSAqLwotICAgIENvbnN0VmFsdWVJ
dGVyYXRvciBFbmQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEdlbmVyaWNWYWx1ZSY+KCp0
aGlzKS5FbmQoKTsgfQotCi0gICAgLy8hIFJlcXVlc3QgdGhlIGFycmF5IHRvIGhhdmUgZW5vdWdo
IGNhcGFjaXR5IHRvIHN0b3JlIGVsZW1lbnRzLgotICAgIC8qISBccGFyYW0gbmV3Q2FwYWNpdHkg
IFRoZSBjYXBhY2l0eSB0aGF0IHRoZSBhcnJheSBhdCBsZWFzdCBuZWVkIHRvIGhhdmUuCi0gICAg
ICAgIFxwYXJhbSBhbGxvY2F0b3IgICAgQWxsb2NhdG9yIGZvciByZWFsbG9jYXRpbmcgbWVtb3J5
LiBJdCBtdXN0IGJlIHRoZSBzYW1lIG9uZSBhcyB1c2VkIGJlZm9yZS4gQ29tbW9ubHkgdXNlIEdl
bmVyaWNEb2N1bWVudDo6R2V0QWxsb2NhdG9yKCkuCi0gICAgICAgIFxyZXR1cm4gVGhlIHZhbHVl
IGl0c2VsZiBmb3IgZmx1ZW50IEFQSS4KLSAgICAgICAgXG5vdGUgTGluZWFyIHRpbWUgY29tcGxl
eGl0eS4KLSAgICAqLwotICAgIEdlbmVyaWNWYWx1ZSYgUmVzZXJ2ZShTaXplVHlwZSBuZXdDYXBh
Y2l0eSwgQWxsb2NhdG9yICZhbGxvY2F0b3IpIHsKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVChJ
c0FycmF5KCkpOwotICAgICAgICBpZiAobmV3Q2FwYWNpdHkgPiBkYXRhXy5hLmNhcGFjaXR5KSB7
Ci0gICAgICAgICAgICBkYXRhXy5hLmVsZW1lbnRzID0gKEdlbmVyaWNWYWx1ZSopYWxsb2NhdG9y
LlJlYWxsb2MoZGF0YV8uYS5lbGVtZW50cywgZGF0YV8uYS5jYXBhY2l0eSAqIHNpemVvZihHZW5l
cmljVmFsdWUpLCBuZXdDYXBhY2l0eSAqIHNpemVvZihHZW5lcmljVmFsdWUpKTsKLSAgICAgICAg
ICAgIGRhdGFfLmEuY2FwYWNpdHkgPSBuZXdDYXBhY2l0eTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgLy8hIEFwcGVuZCBhIEdlbmVyaWNWYWx1ZSBhdCB0
aGUgZW5kIG9mIHRoZSBhcnJheS4KLSAgICAvKiEgXHBhcmFtIHZhbHVlICAgICAgICBWYWx1ZSB0
byBiZSBhcHBlbmRlZC4KLSAgICAgICAgXHBhcmFtIGFsbG9jYXRvciAgICBBbGxvY2F0b3IgZm9y
IHJlYWxsb2NhdGluZyBtZW1vcnkuIEl0IG11c3QgYmUgdGhlIHNhbWUgb25lIGFzIHVzZWQgYmVm
b3JlLiBDb21tb25seSB1c2UgR2VuZXJpY0RvY3VtZW50OjpHZXRBbGxvY2F0b3IoKS4KLSAgICAg
ICAgXHByZSBJc0FycmF5KCkgPT0gdHJ1ZQotICAgICAgICBccG9zdCB2YWx1ZS5Jc051bGwoKSA9
PSB0cnVlCi0gICAgICAgIFxyZXR1cm4gVGhlIHZhbHVlIGl0c2VsZiBmb3IgZmx1ZW50IEFQSS4K
LSAgICAgICAgXG5vdGUgVGhlIG93bmVyc2hpcCBvZiBcYyB2YWx1ZSB3aWxsIGJlIHRyYW5zZmVy
cmVkIHRvIHRoaXMgYXJyYXkgb24gc3VjY2Vzcy4KLSAgICAgICAgXG5vdGUgSWYgdGhlIG51bWJl
ciBvZiBlbGVtZW50cyB0byBiZSBhcHBlbmRlZCBpcyBrbm93biwgY2FsbHMgUmVzZXJ2ZSgpIG9u
Y2UgZmlyc3QgbWF5IGJlIG1vcmUgZWZmaWNpZW50LgotICAgICAgICBcbm90ZSBBbW9ydGl6ZWQg
Y29uc3RhbnQgdGltZSBjb21wbGV4aXR5LgotICAgICovCi0gICAgR2VuZXJpY1ZhbHVlJiBQdXNo
QmFjayhHZW5lcmljVmFsdWUmIHZhbHVlLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgewotICAgICAg
ICBSQVBJREpTT05fQVNTRVJUKElzQXJyYXkoKSk7Ci0gICAgICAgIGlmIChkYXRhXy5hLnNpemUg
Pj0gZGF0YV8uYS5jYXBhY2l0eSkKLSAgICAgICAgICAgIFJlc2VydmUoZGF0YV8uYS5jYXBhY2l0
eSA9PSAwID8ga0RlZmF1bHRBcnJheUNhcGFjaXR5IDogKGRhdGFfLmEuY2FwYWNpdHkgKyAoZGF0
YV8uYS5jYXBhY2l0eSArIDEpIC8gMiksIGFsbG9jYXRvcik7Ci0gICAgICAgIGRhdGFfLmEuZWxl
bWVudHNbZGF0YV8uYS5zaXplKytdLlJhd0Fzc2lnbih2YWx1ZSk7Ci0gICAgICAgIHJldHVybiAq
dGhpczsKLSAgICB9Ci0KLSNpZiBSQVBJREpTT05fSEFTX0NYWDExX1JWQUxVRV9SRUZTCi0gICAg
R2VuZXJpY1ZhbHVlJiBQdXNoQmFjayhHZW5lcmljVmFsdWUmJiB2YWx1ZSwgQWxsb2NhdG9yJiBh
bGxvY2F0b3IpIHsKLSAgICAgICAgcmV0dXJuIFB1c2hCYWNrKHZhbHVlLCBhbGxvY2F0b3IpOwot
ICAgIH0KLSNlbmRpZiAvLyBSQVBJREpTT05fSEFTX0NYWDExX1JWQUxVRV9SRUZTCi0KLSAgICAv
LyEgQXBwZW5kIGEgY29uc3RhbnQgc3RyaW5nIHJlZmVyZW5jZSBhdCB0aGUgZW5kIG9mIHRoZSBh
cnJheS4KLSAgICAvKiEgXHBhcmFtIHZhbHVlICAgICAgICBDb25zdGFudCBzdHJpbmcgcmVmZXJl
bmNlIHRvIGJlIGFwcGVuZGVkLgotICAgICAgICBccGFyYW0gYWxsb2NhdG9yICAgIEFsbG9jYXRv
ciBmb3IgcmVhbGxvY2F0aW5nIG1lbW9yeS4gSXQgbXVzdCBiZSB0aGUgc2FtZSBvbmUgdXNlZCBw
cmV2aW91c2x5LiBDb21tb25seSB1c2UgR2VuZXJpY0RvY3VtZW50OjpHZXRBbGxvY2F0b3IoKS4K
LSAgICAgICAgXHByZSBJc0FycmF5KCkgPT0gdHJ1ZQotICAgICAgICBccmV0dXJuIFRoZSB2YWx1
ZSBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCi0gICAgICAgIFxub3RlIElmIHRoZSBudW1iZXIgb2Yg
ZWxlbWVudHMgdG8gYmUgYXBwZW5kZWQgaXMga25vd24sIGNhbGxzIFJlc2VydmUoKSBvbmNlIGZp
cnN0IG1heSBiZSBtb3JlIGVmZmljaWVudC4KLSAgICAgICAgXG5vdGUgQW1vcnRpemVkIGNvbnN0
YW50IHRpbWUgY29tcGxleGl0eS4KLSAgICAgICAgXHNlZSBHZW5lcmljU3RyaW5nUmVmCi0gICAg
Ki8KLSAgICBHZW5lcmljVmFsdWUmIFB1c2hCYWNrKFN0cmluZ1JlZlR5cGUgdmFsdWUsIEFsbG9j
YXRvciYgYWxsb2NhdG9yKSB7Ci0gICAgICAgIHJldHVybiAoKnRoaXMpLnRlbXBsYXRlIFB1c2hC
YWNrPFN0cmluZ1JlZlR5cGU+KHZhbHVlLCBhbGxvY2F0b3IpOwotICAgIH0KLQotICAgIC8vISBB
cHBlbmQgYSBwcmltaXRpdmUgdmFsdWUgYXQgdGhlIGVuZCBvZiB0aGUgYXJyYXkuCi0gICAgLyoh
IFx0cGFyYW0gVCBFaXRoZXIgXHJlZiBUeXBlLCBcYyBpbnQsIFxjIHVuc2lnbmVkLCBcYyBpbnQ2
NF90LCBcYyB1aW50NjRfdAotICAgICAgICBccGFyYW0gdmFsdWUgVmFsdWUgb2YgcHJpbWl0aXZl
IHR5cGUgVCB0byBiZSBhcHBlbmRlZC4KLSAgICAgICAgXHBhcmFtIGFsbG9jYXRvciAgICBBbGxv
Y2F0b3IgZm9yIHJlYWxsb2NhdGluZyBtZW1vcnkuIEl0IG11c3QgYmUgdGhlIHNhbWUgb25lIGFz
IHVzZWQgYmVmb3JlLiBDb21tb25seSB1c2UgR2VuZXJpY0RvY3VtZW50OjpHZXRBbGxvY2F0b3Io
KS4KLSAgICAgICAgXHByZSBJc0FycmF5KCkgPT0gdHJ1ZQotICAgICAgICBccmV0dXJuIFRoZSB2
YWx1ZSBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCi0gICAgICAgIFxub3RlIElmIHRoZSBudW1iZXIg
b2YgZWxlbWVudHMgdG8gYmUgYXBwZW5kZWQgaXMga25vd24sIGNhbGxzIFJlc2VydmUoKSBvbmNl
IGZpcnN0IG1heSBiZSBtb3JlIGVmZmljaWVudC4KLQotICAgICAgICBcbm90ZSBUaGUgc291cmNl
IHR5cGUgXGMgVCBleHBsaWNpdGx5IGRpc2FsbG93cyBhbGwgcG9pbnRlciB0eXBlcywKLSAgICAg
ICAgICAgIGVzcGVjaWFsbHkgKFxjIGNvbnN0KSBccmVmIENoKi4gIFRoaXMgaGVscHMgYXZvaWRp
bmcgaW1wbGljaXRseQotICAgICAgICAgICAgcmVmZXJlbmNpbmcgY2hhcmFjdGVyIHN0cmluZ3Mg
d2l0aCBpbnN1ZmZpY2llbnQgbGlmZXRpbWUsIHVzZQotICAgICAgICAgICAgXHJlZiBQdXNoQmFj
ayhHZW5lcmljVmFsdWUmLCBBbGxvY2F0b3ImKSBvciBccmVmCi0gICAgICAgICAgICBQdXNoQmFj
ayhTdHJpbmdSZWZUeXBlLCBBbGxvY2F0b3ImKS4KLSAgICAgICAgICAgIEFsbCBvdGhlciBwb2lu
dGVyIHR5cGVzIHdvdWxkIGltcGxpY2l0bHkgY29udmVydCB0byBcYyBib29sLAotICAgICAgICAg
ICAgdXNlIGFuIGV4cGxpY2l0IGNhc3QgaW5zdGVhZCwgaWYgbmVlZGVkLgotICAgICAgICBcbm90
ZSBBbW9ydGl6ZWQgY29uc3RhbnQgdGltZSBjb21wbGV4aXR5LgotICAgICovCi0gICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci0gICAgUkFQSURKU09OX0RJU0FCTEVJRl9SRVRVUk4oKGludGVybmFs
OjpPckV4cHI8aW50ZXJuYWw6OklzUG9pbnRlcjxUPiwgaW50ZXJuYWw6OklzR2VuZXJpY1ZhbHVl
PFQ+ID4pLCAoR2VuZXJpY1ZhbHVlJikpCi0gICAgUHVzaEJhY2soVCB2YWx1ZSwgQWxsb2NhdG9y
JiBhbGxvY2F0b3IpIHsKLSAgICAgICAgR2VuZXJpY1ZhbHVlIHYodmFsdWUpOwotICAgICAgICBy
ZXR1cm4gUHVzaEJhY2sodiwgYWxsb2NhdG9yKTsKLSAgICB9Ci0KLSAgICAvLyEgUmVtb3ZlIHRo
ZSBsYXN0IGVsZW1lbnQgaW4gdGhlIGFycmF5LgotICAgIC8qIQotICAgICAgICBcbm90ZSBDb25z
dGFudCB0aW1lIGNvbXBsZXhpdHkuCi0gICAgKi8KLSAgICBHZW5lcmljVmFsdWUmIFBvcEJhY2so
KSB7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoSXNBcnJheSgpKTsKLSAgICAgICAgUkFQSURK
U09OX0FTU0VSVCghRW1wdHkoKSk7Ci0gICAgICAgIGRhdGFfLmEuZWxlbWVudHNbLS1kYXRhXy5h
LnNpemVdLn5HZW5lcmljVmFsdWUoKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQot
ICAgIC8vISBSZW1vdmUgYW4gZWxlbWVudCBvZiBhcnJheSBieSBpdGVyYXRvci4KLSAgICAvKiEK
LSAgICAgICAgXHBhcmFtIHBvcyBpdGVyYXRvciB0byB0aGUgZWxlbWVudCB0byByZW1vdmUKLSAg
ICAgICAgXHByZSBJc0FycmF5KCkgPT0gdHJ1ZSAmJiBccmVmIEJlZ2luKCkgPD0gXGMgcG9zIDwg
XHJlZiBFbmQoKQotICAgICAgICBccmV0dXJuIEl0ZXJhdG9yIGZvbGxvd2luZyB0aGUgcmVtb3Zl
ZCBlbGVtZW50LiBJZiB0aGUgaXRlcmF0b3IgcG9zIHJlZmVycyB0byB0aGUgbGFzdCBlbGVtZW50
LCB0aGUgRW5kKCkgaXRlcmF0b3IgaXMgcmV0dXJuZWQuCi0gICAgICAgIFxub3RlIExpbmVhciB0
aW1lIGNvbXBsZXhpdHkuCi0gICAgKi8KLSAgICBWYWx1ZUl0ZXJhdG9yIEVyYXNlKENvbnN0VmFs
dWVJdGVyYXRvciBwb3MpIHsKLSAgICAgICAgcmV0dXJuIEVyYXNlKHBvcywgcG9zICsgMSk7Ci0g
ICAgfQotCi0gICAgLy8hIFJlbW92ZSBlbGVtZW50cyBpbiB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0
KSBvZiB0aGUgYXJyYXkuCi0gICAgLyohCi0gICAgICAgIFxwYXJhbSBmaXJzdCBpdGVyYXRvciB0
byB0aGUgZmlyc3QgZWxlbWVudCB0byByZW1vdmUKLSAgICAgICAgXHBhcmFtIGxhc3QgIGl0ZXJh
dG9yIGZvbGxvd2luZyB0aGUgbGFzdCBlbGVtZW50IHRvIHJlbW92ZQotICAgICAgICBccHJlIElz
QXJyYXkoKSA9PSB0cnVlICYmIFxyZWYgQmVnaW4oKSA8PSBcYyBmaXJzdCA8PSBcYyBsYXN0IDw9
IFxyZWYgRW5kKCkKLSAgICAgICAgXHJldHVybiBJdGVyYXRvciBmb2xsb3dpbmcgdGhlIGxhc3Qg
cmVtb3ZlZCBlbGVtZW50LgotICAgICAgICBcbm90ZSBMaW5lYXIgdGltZSBjb21wbGV4aXR5Lgot
ICAgICovCi0gICAgVmFsdWVJdGVyYXRvciBFcmFzZShDb25zdFZhbHVlSXRlcmF0b3IgZmlyc3Qs
IENvbnN0VmFsdWVJdGVyYXRvciBsYXN0KSB7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoSXNB
cnJheSgpKTsKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVChkYXRhXy5hLnNpemUgPiAwKTsKLSAg
ICAgICAgUkFQSURKU09OX0FTU0VSVChkYXRhXy5hLmVsZW1lbnRzICE9IDApOwotICAgICAgICBS
QVBJREpTT05fQVNTRVJUKGZpcnN0ID49IEJlZ2luKCkpOwotICAgICAgICBSQVBJREpTT05fQVNT
RVJUKGZpcnN0IDw9IGxhc3QpOwotICAgICAgICBSQVBJREpTT05fQVNTRVJUKGxhc3QgPD0gRW5k
KCkpOwotICAgICAgICBWYWx1ZUl0ZXJhdG9yIHBvcyA9IEJlZ2luKCkgKyAoZmlyc3QgLSBCZWdp
bigpKTsKLSAgICAgICAgZm9yIChWYWx1ZUl0ZXJhdG9yIGl0ciA9IHBvczsgaXRyICE9IGxhc3Q7
ICsraXRyKQotICAgICAgICAgICAgaXRyLT5+R2VuZXJpY1ZhbHVlKCk7ICAgICAgIAotICAgICAg
ICBzdGQ6Om1lbW1vdmUocG9zLCBsYXN0LCAoRW5kKCkgLSBsYXN0KSAqIHNpemVvZihHZW5lcmlj
VmFsdWUpKTsKLSAgICAgICAgZGF0YV8uYS5zaXplIC09IChsYXN0IC0gZmlyc3QpOwotICAgICAg
ICByZXR1cm4gcG9zOwotICAgIH0KLQotICAgIC8vQH0KLQotICAgIC8vIUBuYW1lIE51bWJlcgot
ICAgIC8vQHsKLQotICAgIGludCBHZXRJbnQoKSBjb25zdCAgICAgICAgICB7IFJBUElESlNPTl9B
U1NFUlQoZmxhZ3NfICYga0ludEZsYWcpOyAgIHJldHVybiBkYXRhXy5uLmkuaTsgICB9Ci0gICAg
dW5zaWduZWQgR2V0VWludCgpIGNvbnN0ICAgIHsgUkFQSURKU09OX0FTU0VSVChmbGFnc18gJiBr
VWludEZsYWcpOyAgcmV0dXJuIGRhdGFfLm4udS51OyAgIH0KLSAgICBpbnQ2NF90IEdldEludDY0
KCkgY29uc3QgICAgeyBSQVBJREpTT05fQVNTRVJUKGZsYWdzXyAmIGtJbnQ2NEZsYWcpOyByZXR1
cm4gZGF0YV8ubi5pNjQ7IH0KLSAgICB1aW50NjRfdCBHZXRVaW50NjQoKSBjb25zdCAgeyBSQVBJ
REpTT05fQVNTRVJUKGZsYWdzXyAmIGtVaW50NjRGbGFnKTsgcmV0dXJuIGRhdGFfLm4udTY0OyB9
Ci0KLSAgICBkb3VibGUgR2V0RG91YmxlKCkgY29uc3QgewotICAgICAgICBSQVBJREpTT05fQVNT
RVJUKElzTnVtYmVyKCkpOwotICAgICAgICBpZiAoKGZsYWdzXyAmIGtEb3VibGVGbGFnKSAhPSAw
KSAgICAgICAgICAgICAgICByZXR1cm4gZGF0YV8ubi5kOyAgIC8vIGV4YWN0IHR5cGUsIG5vIGNv
bnZlcnNpb24uCi0gICAgICAgIGlmICgoZmxhZ3NfICYga0ludEZsYWcpICE9IDApICAgICAgICAg
ICAgICAgICAgIHJldHVybiBkYXRhXy5uLmkuaTsgLy8gaW50IC0+IGRvdWJsZQotICAgICAgICBp
ZiAoKGZsYWdzXyAmIGtVaW50RmxhZykgIT0gMCkgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0
YV8ubi51LnU7IC8vIHVuc2lnbmVkIC0+IGRvdWJsZQotICAgICAgICBpZiAoKGZsYWdzXyAmIGtJ
bnQ2NEZsYWcpICE9IDApICAgICAgICAgICAgICAgICByZXR1cm4gKGRvdWJsZSlkYXRhXy5uLmk2
NDsgLy8gaW50NjRfdCAtPiBkb3VibGUgKG1heSBsb3NlIHByZWNpc2lvbikKLSAgICAgICAgUkFQ
SURKU09OX0FTU0VSVCgoZmxhZ3NfICYga1VpbnQ2NEZsYWcpICE9IDApOyAgcmV0dXJuIChkb3Vi
bGUpZGF0YV8ubi51NjQ7IC8vIHVpbnQ2NF90IC0+IGRvdWJsZSAobWF5IGxvc2UgcHJlY2lzaW9u
KQotICAgIH0KLQotICAgIEdlbmVyaWNWYWx1ZSYgU2V0SW50KGludCBpKSAgICAgICAgICAgICB7
IHRoaXMtPn5HZW5lcmljVmFsdWUoKTsgbmV3ICh0aGlzKSBHZW5lcmljVmFsdWUoaSk7ICAgIHJl
dHVybiAqdGhpczsgfQotICAgIEdlbmVyaWNWYWx1ZSYgU2V0VWludCh1bnNpZ25lZCB1KSAgICAg
ICB7IHRoaXMtPn5HZW5lcmljVmFsdWUoKTsgbmV3ICh0aGlzKSBHZW5lcmljVmFsdWUodSk7ICAg
IHJldHVybiAqdGhpczsgfQotICAgIEdlbmVyaWNWYWx1ZSYgU2V0SW50NjQoaW50NjRfdCBpNjQp
ICAgICB7IHRoaXMtPn5HZW5lcmljVmFsdWUoKTsgbmV3ICh0aGlzKSBHZW5lcmljVmFsdWUoaTY0
KTsgIHJldHVybiAqdGhpczsgfQotICAgIEdlbmVyaWNWYWx1ZSYgU2V0VWludDY0KHVpbnQ2NF90
IHU2NCkgICB7IHRoaXMtPn5HZW5lcmljVmFsdWUoKTsgbmV3ICh0aGlzKSBHZW5lcmljVmFsdWUo
dTY0KTsgIHJldHVybiAqdGhpczsgfQotICAgIEdlbmVyaWNWYWx1ZSYgU2V0RG91YmxlKGRvdWJs
ZSBkKSAgICAgICB7IHRoaXMtPn5HZW5lcmljVmFsdWUoKTsgbmV3ICh0aGlzKSBHZW5lcmljVmFs
dWUoZCk7ICAgIHJldHVybiAqdGhpczsgfQotCi0gICAgLy9AfQotCi0gICAgLy8hQG5hbWUgU3Ry
aW5nCi0gICAgLy9AewotCi0gICAgY29uc3QgQ2gqIEdldFN0cmluZygpIGNvbnN0IHsgUkFQSURK
U09OX0FTU0VSVChJc1N0cmluZygpKTsgcmV0dXJuICgoZmxhZ3NfICYga0lubGluZVN0ckZsYWcp
ID8gZGF0YV8uc3Muc3RyIDogZGF0YV8ucy5zdHIpOyB9Ci0KLSAgICAvLyEgR2V0IHRoZSBsZW5n
dGggb2Ygc3RyaW5nLgotICAgIC8qISBTaW5jZSByYXBpZGpzb24gcGVybWl0cyAiXFx1MDAwMCIg
aW4gdGhlIGpzb24gc3RyaW5nLCBzdHJsZW4odi5HZXRTdHJpbmcoKSkgbWF5IG5vdCBlcXVhbCB0
byB2LkdldFN0cmluZ0xlbmd0aCgpLgotICAgICovCi0gICAgU2l6ZVR5cGUgR2V0U3RyaW5nTGVu
Z3RoKCkgY29uc3QgeyBSQVBJREpTT05fQVNTRVJUKElzU3RyaW5nKCkpOyByZXR1cm4gKChmbGFn
c18gJiBrSW5saW5lU3RyRmxhZykgPyAoZGF0YV8uc3MuR2V0TGVuZ3RoKCkpIDogZGF0YV8ucy5s
ZW5ndGgpOyB9Ci0KLSAgICAvLyEgU2V0IHRoaXMgdmFsdWUgYXMgYSBzdHJpbmcgd2l0aG91dCBj
b3B5aW5nIHNvdXJjZSBzdHJpbmcuCi0gICAgLyohIFRoaXMgdmVyc2lvbiBoYXMgYmV0dGVyIHBl
cmZvcm1hbmNlIHdpdGggc3VwcGxpZWQgbGVuZ3RoLCBhbmQgYWxzbyBzdXBwb3J0IHN0cmluZyBj
b250YWluaW5nIG51bGwgY2hhcmFjdGVyLgotICAgICAgICBccGFyYW0gcyBzb3VyY2Ugc3RyaW5n
IHBvaW50ZXIuIAotICAgICAgICBccGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGggb2Ygc291cmNlIHN0
cmluZywgZXhjbHVkaW5nIHRoZSB0cmFpbGluZyBudWxsIHRlcm1pbmF0b3IuCi0gICAgICAgIFxy
ZXR1cm4gVGhlIHZhbHVlIGl0c2VsZiBmb3IgZmx1ZW50IEFQSS4KLSAgICAgICAgXHBvc3QgSXNT
dHJpbmcoKSA9PSB0cnVlICYmIEdldFN0cmluZygpID09IHMgJiYgR2V0U3RyaW5nTGVuZ3RoKCkg
PT0gbGVuZ3RoCi0gICAgICAgIFxzZWUgU2V0U3RyaW5nKFN0cmluZ1JlZlR5cGUpCi0gICAgKi8K
LSAgICBHZW5lcmljVmFsdWUmIFNldFN0cmluZyhjb25zdCBDaCogcywgU2l6ZVR5cGUgbGVuZ3Ro
KSB7IHJldHVybiBTZXRTdHJpbmcoU3RyaW5nUmVmKHMsIGxlbmd0aCkpOyB9Ci0KLSAgICAvLyEg
U2V0IHRoaXMgdmFsdWUgYXMgYSBzdHJpbmcgd2l0aG91dCBjb3B5aW5nIHNvdXJjZSBzdHJpbmcu
Ci0gICAgLyohIFxwYXJhbSBzIHNvdXJjZSBzdHJpbmcgcmVmZXJlbmNlCi0gICAgICAgIFxyZXR1
cm4gVGhlIHZhbHVlIGl0c2VsZiBmb3IgZmx1ZW50IEFQSS4KLSAgICAgICAgXHBvc3QgSXNTdHJp
bmcoKSA9PSB0cnVlICYmIEdldFN0cmluZygpID09IHMgJiYgR2V0U3RyaW5nTGVuZ3RoKCkgPT0g
cy5sZW5ndGgKLSAgICAqLwotICAgIEdlbmVyaWNWYWx1ZSYgU2V0U3RyaW5nKFN0cmluZ1JlZlR5
cGUgcykgeyB0aGlzLT5+R2VuZXJpY1ZhbHVlKCk7IFNldFN0cmluZ1JhdyhzKTsgcmV0dXJuICp0
aGlzOyB9Ci0KLSAgICAvLyEgU2V0IHRoaXMgdmFsdWUgYXMgYSBzdHJpbmcgYnkgY29weWluZyBm
cm9tIHNvdXJjZSBzdHJpbmcuCi0gICAgLyohIFRoaXMgdmVyc2lvbiBoYXMgYmV0dGVyIHBlcmZv
cm1hbmNlIHdpdGggc3VwcGxpZWQgbGVuZ3RoLCBhbmQgYWxzbyBzdXBwb3J0IHN0cmluZyBjb250
YWluaW5nIG51bGwgY2hhcmFjdGVyLgotICAgICAgICBccGFyYW0gcyBzb3VyY2Ugc3RyaW5nLiAK
LSAgICAgICAgXHBhcmFtIGxlbmd0aCBUaGUgbGVuZ3RoIG9mIHNvdXJjZSBzdHJpbmcsIGV4Y2x1
ZGluZyB0aGUgdHJhaWxpbmcgbnVsbCB0ZXJtaW5hdG9yLgotICAgICAgICBccGFyYW0gYWxsb2Nh
dG9yIEFsbG9jYXRvciBmb3IgYWxsb2NhdGluZyBjb3BpZWQgYnVmZmVyLiBDb21tb25seSB1c2Ug
R2VuZXJpY0RvY3VtZW50OjpHZXRBbGxvY2F0b3IoKS4KLSAgICAgICAgXHJldHVybiBUaGUgdmFs
dWUgaXRzZWxmIGZvciBmbHVlbnQgQVBJLgotICAgICAgICBccG9zdCBJc1N0cmluZygpID09IHRy
dWUgJiYgR2V0U3RyaW5nKCkgIT0gcyAmJiBzdHJjbXAoR2V0U3RyaW5nKCkscykgPT0gMCAmJiBH
ZXRTdHJpbmdMZW5ndGgoKSA9PSBsZW5ndGgKLSAgICAqLwotICAgIEdlbmVyaWNWYWx1ZSYgU2V0
U3RyaW5nKGNvbnN0IENoKiBzLCBTaXplVHlwZSBsZW5ndGgsIEFsbG9jYXRvciYgYWxsb2NhdG9y
KSB7IHRoaXMtPn5HZW5lcmljVmFsdWUoKTsgU2V0U3RyaW5nUmF3KFN0cmluZ1JlZihzLCBsZW5n
dGgpLCBhbGxvY2F0b3IpOyByZXR1cm4gKnRoaXM7IH0KLQotICAgIC8vISBTZXQgdGhpcyB2YWx1
ZSBhcyBhIHN0cmluZyBieSBjb3B5aW5nIGZyb20gc291cmNlIHN0cmluZy4KLSAgICAvKiEgXHBh
cmFtIHMgc291cmNlIHN0cmluZy4gCi0gICAgICAgIFxwYXJhbSBhbGxvY2F0b3IgQWxsb2NhdG9y
IGZvciBhbGxvY2F0aW5nIGNvcGllZCBidWZmZXIuIENvbW1vbmx5IHVzZSBHZW5lcmljRG9jdW1l
bnQ6OkdldEFsbG9jYXRvcigpLgotICAgICAgICBccmV0dXJuIFRoZSB2YWx1ZSBpdHNlbGYgZm9y
IGZsdWVudCBBUEkuCi0gICAgICAgIFxwb3N0IElzU3RyaW5nKCkgPT0gdHJ1ZSAmJiBHZXRTdHJp
bmcoKSAhPSBzICYmIHN0cmNtcChHZXRTdHJpbmcoKSxzKSA9PSAwICYmIEdldFN0cmluZ0xlbmd0
aCgpID09IGxlbmd0aAotICAgICovCi0gICAgR2VuZXJpY1ZhbHVlJiBTZXRTdHJpbmcoY29uc3Qg
Q2gqIHMsIEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7IHJldHVybiBTZXRTdHJpbmcocywgaW50ZXJu
YWw6OlN0ckxlbihzKSwgYWxsb2NhdG9yKTsgfQotCi0jaWYgUkFQSURKU09OX0hBU19TVERTVFJJ
TkcKLSAgICAvLyEgU2V0IHRoaXMgdmFsdWUgYXMgYSBzdHJpbmcgYnkgY29weWluZyBmcm9tIHNv
dXJjZSBzdHJpbmcuCi0gICAgLyohIFxwYXJhbSBzIHNvdXJjZSBzdHJpbmcuCi0gICAgICAgIFxw
YXJhbSBhbGxvY2F0b3IgQWxsb2NhdG9yIGZvciBhbGxvY2F0aW5nIGNvcGllZCBidWZmZXIuIENv
bW1vbmx5IHVzZSBHZW5lcmljRG9jdW1lbnQ6OkdldEFsbG9jYXRvcigpLgotICAgICAgICBccmV0
dXJuIFRoZSB2YWx1ZSBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCi0gICAgICAgIFxwb3N0IElzU3Ry
aW5nKCkgPT0gdHJ1ZSAmJiBHZXRTdHJpbmcoKSAhPSBzLmRhdGEoKSAmJiBzdHJjbXAoR2V0U3Ry
aW5nKCkscy5kYXRhKCkgPT0gMCAmJiBHZXRTdHJpbmdMZW5ndGgoKSA9PSBzLnNpemUoKQotICAg
ICAgICBcbm90ZSBSZXF1aXJlcyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgcHJlcHJvY2Vzc29yIHN5
bWJvbCBccmVmIFJBUElESlNPTl9IQVNfU1REU1RSSU5HLgotICAgICovCi0gICAgR2VuZXJpY1Zh
bHVlJiBTZXRTdHJpbmcoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Q2g+JiBzLCBBbGxvY2F0b3Im
IGFsbG9jYXRvcikgeyByZXR1cm4gU2V0U3RyaW5nKHMuZGF0YSgpLCBzLnNpemUoKSwgYWxsb2Nh
dG9yKTsgfQotI2VuZGlmCi0KLSAgICAvL0B9Ci0KLSAgICAvLyEgR2VuZXJhdGUgZXZlbnRzIG9m
IHRoaXMgdmFsdWUgdG8gYSBIYW5kbGVyLgotICAgIC8qISBUaGlzIGZ1bmN0aW9uIGFkb3B0cyB0
aGUgR29GIHZpc2l0b3IgcGF0dGVybi4KLSAgICAgICAgVHlwaWNhbCB1c2FnZSBpcyB0byBvdXRw
dXQgdGhpcyBKU09OIHZhbHVlIGFzIEpTT04gdGV4dCB2aWEgV3JpdGVyLCB3aGljaCBpcyBhIEhh
bmRsZXIuCi0gICAgICAgIEl0IGNhbiBhbHNvIGJlIHVzZWQgdG8gZGVlcCBjbG9uZSB0aGlzIHZh
bHVlIHZpYSBHZW5lcmljRG9jdW1lbnQsIHdoaWNoIGlzIGFsc28gYSBIYW5kbGVyLgotICAgICAg
ICBcdHBhcmFtIEhhbmRsZXIgdHlwZSBvZiBoYW5kbGVyLgotICAgICAgICBccGFyYW0gaGFuZGxl
ciBBbiBvYmplY3QgaW1wbGVtZW50aW5nIGNvbmNlcHQgSGFuZGxlci4KLSAgICAqLwotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBIYW5kbGVyPgotICAgIGJvb2wgQWNjZXB0KEhhbmRsZXImIGhhbmRs
ZXIpIGNvbnN0IHsKLSAgICAgICAgc3dpdGNoKEdldFR5cGUoKSkgewotICAgICAgICBjYXNlIGtO
dWxsVHlwZTogICAgIHJldHVybiBoYW5kbGVyLk51bGwoKTsKLSAgICAgICAgY2FzZSBrRmFsc2VU
eXBlOiAgICByZXR1cm4gaGFuZGxlci5Cb29sKGZhbHNlKTsKLSAgICAgICAgY2FzZSBrVHJ1ZVR5
cGU6ICAgICByZXR1cm4gaGFuZGxlci5Cb29sKHRydWUpOwotCi0gICAgICAgIGNhc2Uga09iamVj
dFR5cGU6Ci0gICAgICAgICAgICBpZiAoIWhhbmRsZXIuU3RhcnRPYmplY3QoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKENvbnN0TWVtYmVySXRlcmF0
b3IgbSA9IE1lbWJlckJlZ2luKCk7IG0gIT0gTWVtYmVyRW5kKCk7ICsrbSkgewotICAgICAgICAg
ICAgICAgIFJBUElESlNPTl9BU1NFUlQobS0+bmFtZS5Jc1N0cmluZygpKTsgLy8gVXNlciBtYXkg
Y2hhbmdlIHRoZSB0eXBlIG9mIG5hbWUgYnkgTWVtYmVySXRlcmF0b3IuCi0gICAgICAgICAgICAg
ICAgaWYgKCFoYW5kbGVyLktleShtLT5uYW1lLkdldFN0cmluZygpLCBtLT5uYW1lLkdldFN0cmlu
Z0xlbmd0aCgpLCAobS0+bmFtZS5mbGFnc18gJiBrQ29weUZsYWcpICE9IDApKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKCFtLT52YWx1ZS5B
Y2NlcHQoaGFuZGxlcikpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBoYW5kbGVyLkVuZE9iamVjdChkYXRhXy5vLnNp
emUpOwotCi0gICAgICAgIGNhc2Uga0FycmF5VHlwZToKLSAgICAgICAgICAgIGlmICghaGFuZGxl
ci5TdGFydEFycmF5KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgZm9yIChHZW5lcmljVmFsdWUqIHYgPSBkYXRhXy5hLmVsZW1lbnRzOyB2ICE9IGRhdGFfLmEu
ZWxlbWVudHMgKyBkYXRhXy5hLnNpemU7ICsrdikKLSAgICAgICAgICAgICAgICBpZiAoIXYtPkFj
Y2VwdChoYW5kbGVyKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgcmV0dXJuIGhhbmRsZXIuRW5kQXJyYXkoZGF0YV8uYS5zaXplKTsKLSAgICAKLSAgICAg
ICAgY2FzZSBrU3RyaW5nVHlwZToKLSAgICAgICAgICAgIHJldHVybiBoYW5kbGVyLlN0cmluZyhH
ZXRTdHJpbmcoKSwgR2V0U3RyaW5nTGVuZ3RoKCksIChmbGFnc18gJiBrQ29weUZsYWcpICE9IDAp
OwotICAgIAotICAgICAgICBjYXNlIGtOdW1iZXJUeXBlOgotICAgICAgICAgICAgaWYgKElzSW50
KCkpICAgICAgICAgICAgcmV0dXJuIGhhbmRsZXIuSW50KGRhdGFfLm4uaS5pKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKElzVWludCgpKSAgICAgIHJldHVybiBoYW5kbGVyLlVpbnQoZGF0YV8ubi51
LnUpOwotICAgICAgICAgICAgZWxzZSBpZiAoSXNJbnQ2NCgpKSAgICAgcmV0dXJuIGhhbmRsZXIu
SW50NjQoZGF0YV8ubi5pNjQpOwotICAgICAgICAgICAgZWxzZSBpZiAoSXNVaW50NjQoKSkgICAg
cmV0dXJuIGhhbmRsZXIuVWludDY0KGRhdGFfLm4udTY0KTsKLSAgICAgICAgICAgIGVsc2UgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVyLkRvdWJsZShkYXRhXy5uLmQpOwotICAgIAot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgR2VuZXJpY1ZhbHVlOwot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWUsIHR5cGVuYW1lPiBmcmllbmQgY2xhc3Mg
R2VuZXJpY0RvY3VtZW50OwotCi0gICAgZW51bSB7Ci0gICAgICAgIGtCb29sRmxhZyA9IDB4MTAw
LAotICAgICAgICBrTnVtYmVyRmxhZyA9IDB4MjAwLAotICAgICAgICBrSW50RmxhZyA9IDB4NDAw
LAotICAgICAgICBrVWludEZsYWcgPSAweDgwMCwKLSAgICAgICAga0ludDY0RmxhZyA9IDB4MTAw
MCwKLSAgICAgICAga1VpbnQ2NEZsYWcgPSAweDIwMDAsCi0gICAgICAgIGtEb3VibGVGbGFnID0g
MHg0MDAwLAotICAgICAgICBrU3RyaW5nRmxhZyA9IDB4MTAwMDAwLAotICAgICAgICBrQ29weUZs
YWcgPSAweDIwMDAwMCwKLSAgICAgICAga0lubGluZVN0ckZsYWcgPSAweDQwMDAwMCwKLQotICAg
ICAgICAvLyBJbml0aWFsIGZsYWdzIG9mIGRpZmZlcmVudCB0eXBlcy4KLSAgICAgICAga051bGxG
bGFnID0ga051bGxUeXBlLAotICAgICAgICBrVHJ1ZUZsYWcgPSBrVHJ1ZVR5cGUgfCBrQm9vbEZs
YWcsCi0gICAgICAgIGtGYWxzZUZsYWcgPSBrRmFsc2VUeXBlIHwga0Jvb2xGbGFnLAotICAgICAg
ICBrTnVtYmVySW50RmxhZyA9IGtOdW1iZXJUeXBlIHwga051bWJlckZsYWcgfCBrSW50RmxhZyB8
IGtJbnQ2NEZsYWcsCi0gICAgICAgIGtOdW1iZXJVaW50RmxhZyA9IGtOdW1iZXJUeXBlIHwga051
bWJlckZsYWcgfCBrVWludEZsYWcgfCBrVWludDY0RmxhZyB8IGtJbnQ2NEZsYWcsCi0gICAgICAg
IGtOdW1iZXJJbnQ2NEZsYWcgPSBrTnVtYmVyVHlwZSB8IGtOdW1iZXJGbGFnIHwga0ludDY0Rmxh
ZywKLSAgICAgICAga051bWJlclVpbnQ2NEZsYWcgPSBrTnVtYmVyVHlwZSB8IGtOdW1iZXJGbGFn
IHwga1VpbnQ2NEZsYWcsCi0gICAgICAgIGtOdW1iZXJEb3VibGVGbGFnID0ga051bWJlclR5cGUg
fCBrTnVtYmVyRmxhZyB8IGtEb3VibGVGbGFnLAotICAgICAgICBrTnVtYmVyQW55RmxhZyA9IGtO
dW1iZXJUeXBlIHwga051bWJlckZsYWcgfCBrSW50RmxhZyB8IGtJbnQ2NEZsYWcgfCBrVWludEZs
YWcgfCBrVWludDY0RmxhZyB8IGtEb3VibGVGbGFnLAotICAgICAgICBrQ29uc3RTdHJpbmdGbGFn
ID0ga1N0cmluZ1R5cGUgfCBrU3RyaW5nRmxhZywKLSAgICAgICAga0NvcHlTdHJpbmdGbGFnID0g
a1N0cmluZ1R5cGUgfCBrU3RyaW5nRmxhZyB8IGtDb3B5RmxhZywKLSAgICAgICAga1Nob3J0U3Ry
aW5nRmxhZyA9IGtTdHJpbmdUeXBlIHwga1N0cmluZ0ZsYWcgfCBrQ29weUZsYWcgfCBrSW5saW5l
U3RyRmxhZywKLSAgICAgICAga09iamVjdEZsYWcgPSBrT2JqZWN0VHlwZSwKLSAgICAgICAga0Fy
cmF5RmxhZyA9IGtBcnJheVR5cGUsCi0KLSAgICAgICAga1R5cGVNYXNrID0gMHhGRiAgICAvLyBi
aXR3aXNlLWFuZCB3aXRoIG1hc2sgb2YgMHhGRiBjYW4gYmUgb3B0aW1pemVkIGJ5IGNvbXBpbGVy
Ci0gICAgfTsKLQotICAgIHN0YXRpYyBjb25zdCBTaXplVHlwZSBrRGVmYXVsdEFycmF5Q2FwYWNp
dHkgPSAxNjsKLSAgICBzdGF0aWMgY29uc3QgU2l6ZVR5cGUga0RlZmF1bHRPYmplY3RDYXBhY2l0
eSA9IDE2OwotCi0gICAgc3RydWN0IFN0cmluZyB7Ci0gICAgICAgIGNvbnN0IENoKiBzdHI7Ci0g
ICAgICAgIFNpemVUeXBlIGxlbmd0aDsKLSAgICAgICAgdW5zaWduZWQgaGFzaGNvZGU7ICAvLyE8
IHJlc2VydmVkCi0gICAgfTsgIC8vIDEyIGJ5dGVzIGluIDMyLWJpdCBtb2RlLCAxNiBieXRlcyBp
biA2NC1iaXQgbW9kZQotCi0gICAgLy8gaW1wbGVtZW50YXRpb24gZGV0YWlsOiBTaG9ydFN0cmlu
ZyBjYW4gcmVwcmVzZW50IHplcm8tdGVybWluYXRlZCBzdHJpbmdzIHVwIHRvIE1heFNpemUgY2hh
cnMKLSAgICAvLyAoZXhjbHVkaW5nIHRoZSB0ZXJtaW5hdGluZyB6ZXJvKSBhbmQgc3RvcmUgYSB2
YWx1ZSB0byBkZXRlcm1pbmUgdGhlIGxlbmd0aCBvZiB0aGUgY29udGFpbmVkCi0gICAgLy8gc3Ry
aW5nIGluIHRoZSBsYXN0IGNoYXJhY3RlciBzdHJbTGVuUG9zXSBieSBzdG9yaW5nICJNYXhTaXpl
IC0gbGVuZ3RoIiB0aGVyZS4gSWYgdGhlIHN0cmluZwotICAgIC8vIHRvIHN0b3JlIGhhcyB0aGUg
bWF4aW1hbCBsZW5ndGggb2YgTWF4U2l6ZSB0aGVuIHN0cltMZW5Qb3NdIHdpbGwgYmUgMCBhbmQg
dGhlcmVmb3JlIGFjdCBhcwotICAgIC8vIHRoZSBzdHJpbmcgdGVybWluYXRvciBhcyB3ZWxsLiBG
b3IgZ2V0dGluZyB0aGUgc3RyaW5nIGxlbmd0aCBiYWNrIGZyb20gdGhhdCB2YWx1ZSBqdXN0IHVz
ZQotICAgIC8vICJNYXhTaXplIC0gc3RyW0xlblBvc10iLgotICAgIC8vIFRoaXMgYWxsb3dzIHRv
IHN0b3JlIDExLWNoYXJzIHN0cmluZ3MgaW4gMzItYml0IG1vZGUgYW5kIDE1LWNoYXJzIHN0cmlu
Z3MgaW4gNjQtYml0IG1vZGUKLSAgICAvLyBpbmxpbmUgKGZvciBgVVRGOGAtZW5jb2RlZCBzdHJp
bmdzKS4KLSAgICBzdHJ1Y3QgU2hvcnRTdHJpbmcgewotICAgICAgICBlbnVtIHsgTWF4Q2hhcnMg
PSBzaXplb2YoU3RyaW5nKSAvIHNpemVvZihDaCksIE1heFNpemUgPSBNYXhDaGFycyAtIDEsIExl
blBvcyA9IE1heFNpemUgfTsKLSAgICAgICAgQ2ggc3RyW01heENoYXJzXTsKLQotICAgICAgICBp
bmxpbmUgc3RhdGljIGJvb2wgVXNhYmxlKFNpemVUeXBlIGxlbikgeyByZXR1cm4gICAgICAgICAg
ICAoTWF4U2l6ZSA+PSBsZW4pOyB9Ci0gICAgICAgIGlubGluZSB2b2lkICAgICBTZXRMZW5ndGgo
U2l6ZVR5cGUgbGVuKSB7IHN0cltMZW5Qb3NdID0gKENoKShNYXhTaXplIC0gIGxlbik7IH0KLSAg
ICAgICAgaW5saW5lIFNpemVUeXBlIEdldExlbmd0aCgpIGNvbnN0ICAgICAgIHsgcmV0dXJuICAo
U2l6ZVR5cGUpKE1heFNpemUgLSAgc3RyW0xlblBvc10pOyB9Ci0gICAgfTsgIC8vIGF0IG1vc3Qg
YXMgbWFueSBieXRlcyBhcyAiU3RyaW5nIiBhYm92ZSA9PiAxMiBieXRlcyBpbiAzMi1iaXQgbW9k
ZSwgMTYgYnl0ZXMgaW4gNjQtYml0IG1vZGUKLQotICAgIC8vIEJ5IHVzaW5nIHByb3BlciBiaW5h
cnkgbGF5b3V0LCByZXRyaWV2YWwgb2YgZGlmZmVyZW50IGludGVnZXIgdHlwZXMgZG8gbm90IG5l
ZWQgY29udmVyc2lvbnMuCi0gICAgdW5pb24gTnVtYmVyIHsKLSNpZiBSQVBJREpTT05fRU5ESUFO
ID09IFJBUElESlNPTl9MSVRUTEVFTkRJQU4KLSAgICAgICAgc3RydWN0IEkgewotICAgICAgICAg
ICAgaW50IGk7Ci0gICAgICAgICAgICBjaGFyIHBhZGRpbmdbNF07Ci0gICAgICAgIH1pOwotICAg
ICAgICBzdHJ1Y3QgVSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCB1OwotICAgICAgICAgICAgY2hh
ciBwYWRkaW5nMls0XTsKLSAgICAgICAgfXU7Ci0jZWxzZQotICAgICAgICBzdHJ1Y3QgSSB7Ci0g
ICAgICAgICAgICBjaGFyIHBhZGRpbmdbNF07Ci0gICAgICAgICAgICBpbnQgaTsKLSAgICAgICAg
fWk7Ci0gICAgICAgIHN0cnVjdCBVIHsKLSAgICAgICAgICAgIGNoYXIgcGFkZGluZzJbNF07Ci0g
ICAgICAgICAgICB1bnNpZ25lZCB1OwotICAgICAgICB9dTsKLSNlbmRpZgotICAgICAgICBpbnQ2
NF90IGk2NDsKLSAgICAgICAgdWludDY0X3QgdTY0OwotICAgICAgICBkb3VibGUgZDsKLSAgICB9
OyAgLy8gOCBieXRlcwotCi0gICAgc3RydWN0IE9iamVjdCB7Ci0gICAgICAgIE1lbWJlciogbWVt
YmVyczsKLSAgICAgICAgU2l6ZVR5cGUgc2l6ZTsKLSAgICAgICAgU2l6ZVR5cGUgY2FwYWNpdHk7
Ci0gICAgfTsgIC8vIDEyIGJ5dGVzIGluIDMyLWJpdCBtb2RlLCAxNiBieXRlcyBpbiA2NC1iaXQg
bW9kZQotCi0gICAgc3RydWN0IEFycmF5IHsKLSAgICAgICAgR2VuZXJpY1ZhbHVlKiBlbGVtZW50
czsKLSAgICAgICAgU2l6ZVR5cGUgc2l6ZTsKLSAgICAgICAgU2l6ZVR5cGUgY2FwYWNpdHk7Ci0g
ICAgfTsgIC8vIDEyIGJ5dGVzIGluIDMyLWJpdCBtb2RlLCAxNiBieXRlcyBpbiA2NC1iaXQgbW9k
ZQotCi0gICAgdW5pb24gRGF0YSB7Ci0gICAgICAgIFN0cmluZyBzOwotICAgICAgICBTaG9ydFN0
cmluZyBzczsKLSAgICAgICAgTnVtYmVyIG47Ci0gICAgICAgIE9iamVjdCBvOwotICAgICAgICBB
cnJheSBhOwotICAgIH07ICAvLyAxMiBieXRlcyBpbiAzMi1iaXQgbW9kZSwgMTYgYnl0ZXMgaW4g
NjQtYml0IG1vZGUKLQotICAgIC8vIEluaXRpYWxpemUgdGhpcyB2YWx1ZSBhcyBhcnJheSB3aXRo
IGluaXRpYWwgZGF0YSwgd2l0aG91dCBjYWxsaW5nIGRlc3RydWN0b3IuCi0gICAgdm9pZCBTZXRB
cnJheVJhdyhHZW5lcmljVmFsdWUqIHZhbHVlcywgU2l6ZVR5cGUgY291bnQsIEFsbG9jYXRvciYg
YWxsb2NhdG9yKSB7Ci0gICAgICAgIGZsYWdzXyA9IGtBcnJheUZsYWc7Ci0gICAgICAgIGRhdGFf
LmEuZWxlbWVudHMgPSAoR2VuZXJpY1ZhbHVlKilhbGxvY2F0b3IuTWFsbG9jKGNvdW50ICogc2l6
ZW9mKEdlbmVyaWNWYWx1ZSkpOwotICAgICAgICBzdGQ6Om1lbWNweShkYXRhXy5hLmVsZW1lbnRz
LCB2YWx1ZXMsIGNvdW50ICogc2l6ZW9mKEdlbmVyaWNWYWx1ZSkpOwotICAgICAgICBkYXRhXy5h
LnNpemUgPSBkYXRhXy5hLmNhcGFjaXR5ID0gY291bnQ7Ci0gICAgfQotCi0gICAgLy8hIEluaXRp
YWxpemUgdGhpcyB2YWx1ZSBhcyBvYmplY3Qgd2l0aCBpbml0aWFsIGRhdGEsIHdpdGhvdXQgY2Fs
bGluZyBkZXN0cnVjdG9yLgotICAgIHZvaWQgU2V0T2JqZWN0UmF3KE1lbWJlciogbWVtYmVycywg
U2l6ZVR5cGUgY291bnQsIEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7Ci0gICAgICAgIGZsYWdzXyA9
IGtPYmplY3RGbGFnOwotICAgICAgICBkYXRhXy5vLm1lbWJlcnMgPSAoTWVtYmVyKilhbGxvY2F0
b3IuTWFsbG9jKGNvdW50ICogc2l6ZW9mKE1lbWJlcikpOwotICAgICAgICBzdGQ6Om1lbWNweShk
YXRhXy5vLm1lbWJlcnMsIG1lbWJlcnMsIGNvdW50ICogc2l6ZW9mKE1lbWJlcikpOwotICAgICAg
ICBkYXRhXy5vLnNpemUgPSBkYXRhXy5vLmNhcGFjaXR5ID0gY291bnQ7Ci0gICAgfQotCi0gICAg
Ly8hIEluaXRpYWxpemUgdGhpcyB2YWx1ZSBhcyBjb25zdGFudCBzdHJpbmcsIHdpdGhvdXQgY2Fs
bGluZyBkZXN0cnVjdG9yLgotICAgIHZvaWQgU2V0U3RyaW5nUmF3KFN0cmluZ1JlZlR5cGUgcykg
UkFQSURKU09OX05PRVhDRVBUIHsKLSAgICAgICAgZmxhZ3NfID0ga0NvbnN0U3RyaW5nRmxhZzsK
LSAgICAgICAgZGF0YV8ucy5zdHIgPSBzOwotICAgICAgICBkYXRhXy5zLmxlbmd0aCA9IHMubGVu
Z3RoOwotICAgIH0KLQotICAgIC8vISBJbml0aWFsaXplIHRoaXMgdmFsdWUgYXMgY29weSBzdHJp
bmcgd2l0aCBpbml0aWFsIGRhdGEsIHdpdGhvdXQgY2FsbGluZyBkZXN0cnVjdG9yLgotICAgIHZv
aWQgU2V0U3RyaW5nUmF3KFN0cmluZ1JlZlR5cGUgcywgQWxsb2NhdG9yJiBhbGxvY2F0b3IpIHsK
LSAgICAgICAgQ2gqIHN0ciA9IE5VTEw7Ci0gICAgICAgIGlmKFNob3J0U3RyaW5nOjpVc2FibGUo
cy5sZW5ndGgpKSB7Ci0gICAgICAgICAgICBmbGFnc18gPSBrU2hvcnRTdHJpbmdGbGFnOwotICAg
ICAgICAgICAgZGF0YV8uc3MuU2V0TGVuZ3RoKHMubGVuZ3RoKTsKLSAgICAgICAgICAgIHN0ciA9
IGRhdGFfLnNzLnN0cjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZsYWdzXyA9IGtD
b3B5U3RyaW5nRmxhZzsKLSAgICAgICAgICAgIGRhdGFfLnMubGVuZ3RoID0gcy5sZW5ndGg7Ci0g
ICAgICAgICAgICBzdHIgPSAoQ2ggKilhbGxvY2F0b3IuTWFsbG9jKChzLmxlbmd0aCArIDEpICog
c2l6ZW9mKENoKSk7Ci0gICAgICAgICAgICBkYXRhXy5zLnN0ciA9IHN0cjsKLSAgICAgICAgfQot
ICAgICAgICBzdGQ6Om1lbWNweShzdHIsIHMsIHMubGVuZ3RoICogc2l6ZW9mKENoKSk7Ci0gICAg
ICAgIHN0cltzLmxlbmd0aF0gPSAnXDAnOwotICAgIH0KLQotICAgIC8vISBBc3NpZ25tZW50IHdp
dGhvdXQgY2FsbGluZyBkZXN0cnVjdG9yCi0gICAgdm9pZCBSYXdBc3NpZ24oR2VuZXJpY1ZhbHVl
JiByaHMpIFJBUElESlNPTl9OT0VYQ0VQVCB7Ci0gICAgICAgIGRhdGFfID0gcmhzLmRhdGFfOwot
ICAgICAgICBmbGFnc18gPSByaHMuZmxhZ3NfOwotICAgICAgICByaHMuZmxhZ3NfID0ga051bGxG
bGFnOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTb3VyY2VBbGxvY2F0b3I+Ci0g
ICAgYm9vbCBTdHJpbmdFcXVhbChjb25zdCBHZW5lcmljVmFsdWU8RW5jb2RpbmcsIFNvdXJjZUFs
bG9jYXRvcj4mIHJocykgY29uc3QgewotICAgICAgICBSQVBJREpTT05fQVNTRVJUKElzU3RyaW5n
KCkpOwotICAgICAgICBSQVBJREpTT05fQVNTRVJUKHJocy5Jc1N0cmluZygpKTsKLQotICAgICAg
ICBjb25zdCBTaXplVHlwZSBsZW4xID0gR2V0U3RyaW5nTGVuZ3RoKCk7Ci0gICAgICAgIGNvbnN0
IFNpemVUeXBlIGxlbjIgPSByaHMuR2V0U3RyaW5nTGVuZ3RoKCk7Ci0gICAgICAgIGlmKGxlbjEg
IT0gbGVuMikgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgICAgICBjb25zdCBDaCogY29uc3Qgc3Ry
MSA9IEdldFN0cmluZygpOwotICAgICAgICBjb25zdCBDaCogY29uc3Qgc3RyMiA9IHJocy5HZXRT
dHJpbmcoKTsKLSAgICAgICAgaWYoc3RyMSA9PSBzdHIyKSB7IHJldHVybiB0cnVlOyB9IC8vIGZh
c3QgcGF0aCBmb3IgY29uc3RhbnQgc3RyaW5nCi0KLSAgICAgICAgcmV0dXJuIChzdGQ6Om1lbWNt
cChzdHIxLCBzdHIyLCBzaXplb2YoQ2gpICogbGVuMSkgPT0gMCk7Ci0gICAgfQotCi0gICAgRGF0
YSBkYXRhXzsKLSAgICB1bnNpZ25lZCBmbGFnc187Ci19OwotCi0vLyEgR2VuZXJpY1ZhbHVlIHdp
dGggVVRGOCBlbmNvZGluZwotdHlwZWRlZiBHZW5lcmljVmFsdWU8VVRGODw+ID4gVmFsdWU7Ci0K
LS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIEdlbmVyaWNEb2N1bWVudCAKLQotLy8hIEEgZG9j
dW1lbnQgZm9yIHBhcnNpbmcgSlNPTiB0ZXh0IGFzIERPTS4KLS8qIQotICAgIFxub3RlIGltcGxl
bWVudHMgSGFuZGxlciBjb25jZXB0Ci0gICAgXHRwYXJhbSBFbmNvZGluZyBFbmNvZGluZyBmb3Ig
Ym90aCBwYXJzaW5nIGFuZCBzdHJpbmcgc3RvcmFnZS4KLSAgICBcdHBhcmFtIEFsbG9jYXRvciBB
bGxvY2F0b3IgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IGZvciB0aGUgRE9NCi0gICAgXHRwYXJhbSBT
dGFja0FsbG9jYXRvciBBbGxvY2F0b3IgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBzdGFjayBk
dXJpbmcgcGFyc2luZy4KLSAgICBcd2FybmluZyBBbHRob3VnaCBHZW5lcmljRG9jdW1lbnQgaW5o
ZXJpdHMgZnJvbSBHZW5lcmljVmFsdWUsIHRoZSBBUEkgZG9lcyBcYiBub3QgcHJvdmlkZSBhbnkg
dmlydHVhbCBmdW5jdGlvbnMsIGVzcGVjaWFsbHkgbm8gdmlydHVhbCBkZXN0cnVjdG9yLiAgVG8g
YXZvaWQgbWVtb3J5IGxlYWtzLCBkbyBub3QgXGMgZGVsZXRlIGEgR2VuZXJpY0RvY3VtZW50IG9i
amVjdCB2aWEgYSBwb2ludGVyIHRvIGEgR2VuZXJpY1ZhbHVlLgotKi8KLXRlbXBsYXRlIDx0eXBl
bmFtZSBFbmNvZGluZywgdHlwZW5hbWUgQWxsb2NhdG9yID0gTWVtb3J5UG9vbEFsbG9jYXRvcjw+
LCB0eXBlbmFtZSBTdGFja0FsbG9jYXRvciA9IENydEFsbG9jYXRvcj4KLWNsYXNzIEdlbmVyaWNE
b2N1bWVudCA6IHB1YmxpYyBHZW5lcmljVmFsdWU8RW5jb2RpbmcsIEFsbG9jYXRvcj4gewotcHVi
bGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5jb2Rpbmc6OkNoIENoOyAgICAgICAgICAgICAg
ICAgICAgICAgLy8hPCBDaGFyYWN0ZXIgdHlwZSBkZXJpdmVkIGZyb20gRW5jb2RpbmcuCi0gICAg
dHlwZWRlZiBHZW5lcmljVmFsdWU8RW5jb2RpbmcsIEFsbG9jYXRvcj4gVmFsdWVUeXBlOyAgICAv
LyE8IFZhbHVlIHR5cGUgb2YgdGhlIGRvY3VtZW50LgotICAgIHR5cGVkZWYgQWxsb2NhdG9yIEFs
bG9jYXRvclR5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgLy8hPCBBbGxvY2F0b3IgdHlwZSBm
cm9tIHRlbXBsYXRlIHBhcmFtZXRlci4KLQotICAgIC8vISBDb25zdHJ1Y3RvcgotICAgIC8qISBc
cGFyYW0gYWxsb2NhdG9yICAgICAgICBPcHRpb25hbCBhbGxvY2F0b3IgZm9yIGFsbG9jYXRpbmcg
bWVtb3J5LgotICAgICAgICBccGFyYW0gc3RhY2tDYXBhY2l0eSAgICBPcHRpb25hbCBpbml0aWFs
IGNhcGFjaXR5IG9mIHN0YWNrIGluIGJ5dGVzLgotICAgICAgICBccGFyYW0gc3RhY2tBbGxvY2F0
b3IgICBPcHRpb25hbCBhbGxvY2F0b3IgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBzdGFjay4K
LSAgICAqLwotICAgIEdlbmVyaWNEb2N1bWVudChBbGxvY2F0b3IqIGFsbG9jYXRvciA9IDAsIHNp
emVfdCBzdGFja0NhcGFjaXR5ID0ga0RlZmF1bHRTdGFja0NhcGFjaXR5LCBTdGFja0FsbG9jYXRv
ciogc3RhY2tBbGxvY2F0b3IgPSAwKSA6IAotICAgICAgICBhbGxvY2F0b3JfKGFsbG9jYXRvciks
IG93bkFsbG9jYXRvcl8oMCksIHN0YWNrXyhzdGFja0FsbG9jYXRvciwgc3RhY2tDYXBhY2l0eSks
IHBhcnNlUmVzdWx0XygpCi0gICAgewotICAgICAgICBpZiAoIWFsbG9jYXRvcl8pCi0gICAgICAg
ICAgICBvd25BbGxvY2F0b3JfID0gYWxsb2NhdG9yXyA9IFJBUElESlNPTl9ORVcoQWxsb2NhdG9y
KCkpOwotICAgIH0KLQotI2lmIFJBUElESlNPTl9IQVNfQ1hYMTFfUlZBTFVFX1JFRlMKLSAgICAv
LyEgTW92ZSBjb25zdHJ1Y3RvciBpbiBDKysxMQotICAgIEdlbmVyaWNEb2N1bWVudChHZW5lcmlj
RG9jdW1lbnQmJiByaHMpIFJBUElESlNPTl9OT0VYQ0VQVAotICAgICAgICA6IFZhbHVlVHlwZShz
dGQ6Om1vdmUocmhzKSksCi0gICAgICAgICAgYWxsb2NhdG9yXyhyaHMuYWxsb2NhdG9yXyksCi0g
ICAgICAgICAgb3duQWxsb2NhdG9yXyhyaHMub3duQWxsb2NhdG9yXyksCi0gICAgICAgICAgc3Rh
Y2tfKHN0ZDo6bW92ZShyaHMuc3RhY2tfKSksCi0gICAgICAgICAgcGFyc2VSZXN1bHRfKHJocy5w
YXJzZVJlc3VsdF8pCi0gICAgewotICAgICAgICByaHMuYWxsb2NhdG9yXyA9IDA7Ci0gICAgICAg
IHJocy5vd25BbGxvY2F0b3JfID0gMDsKLSAgICAgICAgcmhzLnBhcnNlUmVzdWx0XyA9IFBhcnNl
UmVzdWx0KCk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICB+R2VuZXJpY0RvY3VtZW50KCkgewotICAg
ICAgICBEZXN0cm95KCk7Ci0gICAgfQotCi0jaWYgUkFQSURKU09OX0hBU19DWFgxMV9SVkFMVUVf
UkVGUwotICAgIC8vISBNb3ZlIGFzc2lnbm1lbnQgaW4gQysrMTEKLSAgICBHZW5lcmljRG9jdW1l
bnQmIG9wZXJhdG9yPShHZW5lcmljRG9jdW1lbnQmJiByaHMpIFJBUElESlNPTl9OT0VYQ0VQVAot
ICAgIHsKLSAgICAgICAgLy8gVGhlIGNhc3QgdG8gVmFsdWVUeXBlIGlzIG5lY2Vzc2FyeSBoZXJl
LCBiZWNhdXNlIG90aGVyd2lzZSBpdCB3b3VsZAotICAgICAgICAvLyBhdHRlbXB0IHRvIGNhbGwg
R2VuZXJpY1ZhbHVlJ3MgdGVtcGxhdGVkIGFzc2lnbm1lbnQgb3BlcmF0b3IuCi0gICAgICAgIFZh
bHVlVHlwZTo6b3BlcmF0b3I9KHN0ZDo6Zm9yd2FyZDxWYWx1ZVR5cGU+KHJocykpOwotCi0gICAg
ICAgIC8vIENhbGxpbmcgdGhlIGRlc3RydWN0b3IgaGVyZSB3b3VsZCBwcmVtYXR1cmVseSBjYWxs
IHN0YWNrXydzIGRlc3RydWN0b3IKLSAgICAgICAgRGVzdHJveSgpOwotCi0gICAgICAgIGFsbG9j
YXRvcl8gPSByaHMuYWxsb2NhdG9yXzsKLSAgICAgICAgb3duQWxsb2NhdG9yXyA9IHJocy5vd25B
bGxvY2F0b3JfOwotICAgICAgICBzdGFja18gPSBzdGQ6Om1vdmUocmhzLnN0YWNrXyk7Ci0gICAg
ICAgIHBhcnNlUmVzdWx0XyA9IHJocy5wYXJzZVJlc3VsdF87Ci0KLSAgICAgICAgcmhzLmFsbG9j
YXRvcl8gPSAwOwotICAgICAgICByaHMub3duQWxsb2NhdG9yXyA9IDA7Ci0gICAgICAgIHJocy5w
YXJzZVJlc3VsdF8gPSBQYXJzZVJlc3VsdCgpOwotCi0gICAgICAgIHJldHVybiAqdGhpczsKLSAg
ICB9Ci0jZW5kaWYKLQotICAgIC8vIUBuYW1lIFBhcnNlIGZyb20gc3RyZWFtCi0gICAgLy8hQHsK
LQotICAgIC8vISBQYXJzZSBKU09OIHRleHQgZnJvbSBhbiBpbnB1dCBzdHJlYW0gKHdpdGggRW5j
b2RpbmcgY29udmVyc2lvbikKLSAgICAvKiEgXHRwYXJhbSBwYXJzZUZsYWdzIENvbWJpbmF0aW9u
IG9mIFxyZWYgUGFyc2VGbGFnLgotICAgICAgICBcdHBhcmFtIFNvdXJjZUVuY29kaW5nIEVuY29k
aW5nIG9mIGlucHV0IHN0cmVhbQotICAgICAgICBcdHBhcmFtIElucHV0U3RyZWFtIFR5cGUgb2Yg
aW5wdXQgc3RyZWFtLCBpbXBsZW1lbnRpbmcgU3RyZWFtIGNvbmNlcHQKLSAgICAgICAgXHBhcmFt
IGlzIElucHV0IHN0cmVhbSB0byBiZSBwYXJzZWQuCi0gICAgICAgIFxyZXR1cm4gVGhlIGRvY3Vt
ZW50IGl0c2VsZiBmb3IgZmx1ZW50IEFQSS4KLSAgICAqLwotICAgIHRlbXBsYXRlIDx1bnNpZ25l
ZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBTb3VyY2VFbmNvZGluZywgdHlwZW5hbWUgSW5wdXRTdHJl
YW0+Ci0gICAgR2VuZXJpY0RvY3VtZW50JiBQYXJzZVN0cmVhbShJbnB1dFN0cmVhbSYgaXMpIHsK
LSAgICAgICAgVmFsdWVUeXBlOjpTZXROdWxsKCk7IC8vIFJlbW92ZSBleGlzdGluZyByb290IGlm
IGV4aXN0Ci0gICAgICAgIEdlbmVyaWNSZWFkZXI8U291cmNlRW5jb2RpbmcsIEVuY29kaW5nLCBB
bGxvY2F0b3I+IHJlYWRlcigmR2V0QWxsb2NhdG9yKCkpOwotICAgICAgICBDbGVhclN0YWNrT25F
eGl0IHNjb3BlKCp0aGlzKTsKLSAgICAgICAgcGFyc2VSZXN1bHRfID0gcmVhZGVyLnRlbXBsYXRl
IFBhcnNlPHBhcnNlRmxhZ3M+KGlzLCAqdGhpcyk7Ci0gICAgICAgIGlmIChwYXJzZVJlc3VsdF8p
IHsKLSAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoc3RhY2tfLkdldFNpemUoKSA9PSBzaXpl
b2YoVmFsdWVUeXBlKSk7IC8vIEdvdCBvbmUgYW5kIG9ubHkgb25lIHJvb3Qgb2JqZWN0Ci0gICAg
ICAgICAgICB0aGlzLT5SYXdBc3NpZ24oKnN0YWNrXy50ZW1wbGF0ZSBQb3A8VmFsdWVUeXBlPigx
KSk7ICAgIC8vIEFkZCB0aGlzLT4gdG8gcHJldmVudCBpc3N1ZSAxMy4KLSAgICAgICAgfQotICAg
ICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgLy8hIFBhcnNlIEpTT04gdGV4dCBmcm9t
IGFuIGlucHV0IHN0cmVhbQotICAgIC8qISBcdHBhcmFtIHBhcnNlRmxhZ3MgQ29tYmluYXRpb24g
b2YgXHJlZiBQYXJzZUZsYWcuCi0gICAgICAgIFx0cGFyYW0gSW5wdXRTdHJlYW0gVHlwZSBvZiBp
bnB1dCBzdHJlYW0sIGltcGxlbWVudGluZyBTdHJlYW0gY29uY2VwdAotICAgICAgICBccGFyYW0g
aXMgSW5wdXQgc3RyZWFtIHRvIGJlIHBhcnNlZC4KLSAgICAgICAgXHJldHVybiBUaGUgZG9jdW1l
bnQgaXRzZWxmIGZvciBmbHVlbnQgQVBJLgotICAgICovCi0gICAgdGVtcGxhdGUgPHVuc2lnbmVk
IHBhcnNlRmxhZ3MsIHR5cGVuYW1lIElucHV0U3RyZWFtPgotICAgIEdlbmVyaWNEb2N1bWVudCYg
UGFyc2VTdHJlYW0oSW5wdXRTdHJlYW0mIGlzKSB7Ci0gICAgICAgIHJldHVybiBQYXJzZVN0cmVh
bTxwYXJzZUZsYWdzLEVuY29kaW5nLElucHV0U3RyZWFtPihpcyk7Ci0gICAgfQotCi0gICAgLy8h
IFBhcnNlIEpTT04gdGV4dCBmcm9tIGFuIGlucHV0IHN0cmVhbSAod2l0aCBccmVmIGtQYXJzZURl
ZmF1bHRGbGFncykKLSAgICAvKiEgXHRwYXJhbSBJbnB1dFN0cmVhbSBUeXBlIG9mIGlucHV0IHN0
cmVhbSwgaW1wbGVtZW50aW5nIFN0cmVhbSBjb25jZXB0Ci0gICAgICAgIFxwYXJhbSBpcyBJbnB1
dCBzdHJlYW0gdG8gYmUgcGFyc2VkLgotICAgICAgICBccmV0dXJuIFRoZSBkb2N1bWVudCBpdHNl
bGYgZm9yIGZsdWVudCBBUEkuCi0gICAgKi8KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRT
dHJlYW0+Ci0gICAgR2VuZXJpY0RvY3VtZW50JiBQYXJzZVN0cmVhbShJbnB1dFN0cmVhbSYgaXMp
IHsKLSAgICAgICAgcmV0dXJuIFBhcnNlU3RyZWFtPGtQYXJzZURlZmF1bHRGbGFncywgRW5jb2Rp
bmcsIElucHV0U3RyZWFtPihpcyk7Ci0gICAgfQotICAgIC8vIUB9Ci0KLSAgICAvLyFAbmFtZSBQ
YXJzZSBpbi1wbGFjZSBmcm9tIG11dGFibGUgc3RyaW5nCi0gICAgLy8hQHsKLQotICAgIC8vISBQ
YXJzZSBKU09OIHRleHQgZnJvbSBhIG11dGFibGUgc3RyaW5nICh3aXRoIEVuY29kaW5nIGNvbnZl
cnNpb24pCi0gICAgLyohIFx0cGFyYW0gcGFyc2VGbGFncyBDb21iaW5hdGlvbiBvZiBccmVmIFBh
cnNlRmxhZy4KLSAgICAgICAgXHRwYXJhbSBTb3VyY2VFbmNvZGluZyBUcmFuc2NvZGluZyBmcm9t
IGlucHV0IEVuY29kaW5nCi0gICAgICAgIFxwYXJhbSBzdHIgTXV0YWJsZSB6ZXJvLXRlcm1pbmF0
ZWQgc3RyaW5nIHRvIGJlIHBhcnNlZC4KLSAgICAgICAgXHJldHVybiBUaGUgZG9jdW1lbnQgaXRz
ZWxmIGZvciBmbHVlbnQgQVBJLgotICAgICovCi0gICAgdGVtcGxhdGUgPHVuc2lnbmVkIHBhcnNl
RmxhZ3MsIHR5cGVuYW1lIFNvdXJjZUVuY29kaW5nPgotICAgIEdlbmVyaWNEb2N1bWVudCYgUGFy
c2VJbnNpdHUoQ2gqIHN0cikgewotICAgICAgICBHZW5lcmljSW5zaXR1U3RyaW5nU3RyZWFtPEVu
Y29kaW5nPiBzKHN0cik7Ci0gICAgICAgIHJldHVybiBQYXJzZVN0cmVhbTxwYXJzZUZsYWdzIHwg
a1BhcnNlSW5zaXR1RmxhZywgU291cmNlRW5jb2Rpbmc+KHMpOwotICAgIH0KLQotICAgIC8vISBQ
YXJzZSBKU09OIHRleHQgZnJvbSBhIG11dGFibGUgc3RyaW5nCi0gICAgLyohIFx0cGFyYW0gcGFy
c2VGbGFncyBDb21iaW5hdGlvbiBvZiBccmVmIFBhcnNlRmxhZy4KLSAgICAgICAgXHBhcmFtIHN0
ciBNdXRhYmxlIHplcm8tdGVybWluYXRlZCBzdHJpbmcgdG8gYmUgcGFyc2VkLgotICAgICAgICBc
cmV0dXJuIFRoZSBkb2N1bWVudCBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCi0gICAgKi8KLSAgICB0
ZW1wbGF0ZSA8dW5zaWduZWQgcGFyc2VGbGFncz4KLSAgICBHZW5lcmljRG9jdW1lbnQmIFBhcnNl
SW5zaXR1KENoKiBzdHIpIHsKLSAgICAgICAgcmV0dXJuIFBhcnNlSW5zaXR1PHBhcnNlRmxhZ3Ms
IEVuY29kaW5nPihzdHIpOwotICAgIH0KLQotICAgIC8vISBQYXJzZSBKU09OIHRleHQgZnJvbSBh
IG11dGFibGUgc3RyaW5nICh3aXRoIFxyZWYga1BhcnNlRGVmYXVsdEZsYWdzKQotICAgIC8qISBc
cGFyYW0gc3RyIE11dGFibGUgemVyby10ZXJtaW5hdGVkIHN0cmluZyB0byBiZSBwYXJzZWQuCi0g
ICAgICAgIFxyZXR1cm4gVGhlIGRvY3VtZW50IGl0c2VsZiBmb3IgZmx1ZW50IEFQSS4KLSAgICAq
LwotICAgIEdlbmVyaWNEb2N1bWVudCYgUGFyc2VJbnNpdHUoQ2gqIHN0cikgewotICAgICAgICBy
ZXR1cm4gUGFyc2VJbnNpdHU8a1BhcnNlRGVmYXVsdEZsYWdzLCBFbmNvZGluZz4oc3RyKTsKLSAg
ICB9Ci0gICAgLy8hQH0KLQotICAgIC8vIUBuYW1lIFBhcnNlIGZyb20gcmVhZC1vbmx5IHN0cmlu
ZwotICAgIC8vIUB7Ci0KLSAgICAvLyEgUGFyc2UgSlNPTiB0ZXh0IGZyb20gYSByZWFkLW9ubHkg
c3RyaW5nICh3aXRoIEVuY29kaW5nIGNvbnZlcnNpb24pCi0gICAgLyohIFx0cGFyYW0gcGFyc2VG
bGFncyBDb21iaW5hdGlvbiBvZiBccmVmIFBhcnNlRmxhZyAobXVzdCBub3QgY29udGFpbiBccmVm
IGtQYXJzZUluc2l0dUZsYWcpLgotICAgICAgICBcdHBhcmFtIFNvdXJjZUVuY29kaW5nIFRyYW5z
Y29kaW5nIGZyb20gaW5wdXQgRW5jb2RpbmcKLSAgICAgICAgXHBhcmFtIHN0ciBSZWFkLW9ubHkg
emVyby10ZXJtaW5hdGVkIHN0cmluZyB0byBiZSBwYXJzZWQuCi0gICAgKi8KLSAgICB0ZW1wbGF0
ZSA8dW5zaWduZWQgcGFyc2VGbGFncywgdHlwZW5hbWUgU291cmNlRW5jb2Rpbmc+Ci0gICAgR2Vu
ZXJpY0RvY3VtZW50JiBQYXJzZShjb25zdCBDaCogc3RyKSB7Ci0gICAgICAgIFJBUElESlNPTl9B
U1NFUlQoIShwYXJzZUZsYWdzICYga1BhcnNlSW5zaXR1RmxhZykpOwotICAgICAgICBHZW5lcmlj
U3RyaW5nU3RyZWFtPFNvdXJjZUVuY29kaW5nPiBzKHN0cik7Ci0gICAgICAgIHJldHVybiBQYXJz
ZVN0cmVhbTxwYXJzZUZsYWdzLCBTb3VyY2VFbmNvZGluZz4ocyk7Ci0gICAgfQotCi0gICAgLy8h
IFBhcnNlIEpTT04gdGV4dCBmcm9tIGEgcmVhZC1vbmx5IHN0cmluZwotICAgIC8qISBcdHBhcmFt
IHBhcnNlRmxhZ3MgQ29tYmluYXRpb24gb2YgXHJlZiBQYXJzZUZsYWcgKG11c3Qgbm90IGNvbnRh
aW4gXHJlZiBrUGFyc2VJbnNpdHVGbGFnKS4KLSAgICAgICAgXHBhcmFtIHN0ciBSZWFkLW9ubHkg
emVyby10ZXJtaW5hdGVkIHN0cmluZyB0byBiZSBwYXJzZWQuCi0gICAgKi8KLSAgICB0ZW1wbGF0
ZSA8dW5zaWduZWQgcGFyc2VGbGFncz4KLSAgICBHZW5lcmljRG9jdW1lbnQmIFBhcnNlKGNvbnN0
IENoKiBzdHIpIHsKLSAgICAgICAgcmV0dXJuIFBhcnNlPHBhcnNlRmxhZ3MsIEVuY29kaW5nPihz
dHIpOwotICAgIH0KLQotICAgIC8vISBQYXJzZSBKU09OIHRleHQgZnJvbSBhIHJlYWQtb25seSBz
dHJpbmcgKHdpdGggXHJlZiBrUGFyc2VEZWZhdWx0RmxhZ3MpCi0gICAgLyohIFxwYXJhbSBzdHIg
UmVhZC1vbmx5IHplcm8tdGVybWluYXRlZCBzdHJpbmcgdG8gYmUgcGFyc2VkLgotICAgICovCi0g
ICAgR2VuZXJpY0RvY3VtZW50JiBQYXJzZShjb25zdCBDaCogc3RyKSB7Ci0gICAgICAgIHJldHVy
biBQYXJzZTxrUGFyc2VEZWZhdWx0RmxhZ3M+KHN0cik7Ci0gICAgfQotICAgIC8vIUB9Ci0KLSAg
ICAvLyFAbmFtZSBIYW5kbGluZyBwYXJzZSBlcnJvcnMKLSAgICAvLyFAewotCi0gICAgLy8hIFdo
ZXRoZXIgYSBwYXJzZSBlcnJvciBoYXMgb2NjdXJlZCBpbiB0aGUgbGFzdCBwYXJzaW5nLgotICAg
IGJvb2wgSGFzUGFyc2VFcnJvcigpIGNvbnN0IHsgcmV0dXJuIHBhcnNlUmVzdWx0Xy5Jc0Vycm9y
KCk7IH0KLQotICAgIC8vISBHZXQgdGhlIFxyZWYgUGFyc2VFcnJvckNvZGUgb2YgbGFzdCBwYXJz
aW5nLgotICAgIFBhcnNlRXJyb3JDb2RlIEdldFBhcnNlRXJyb3IoKSBjb25zdCB7IHJldHVybiBw
YXJzZVJlc3VsdF8uQ29kZSgpOyB9Ci0KLSAgICAvLyEgR2V0IHRoZSBwb3NpdGlvbiBvZiBsYXN0
IHBhcnNpbmcgZXJyb3IgaW4gaW5wdXQsIDAgb3RoZXJ3aXNlLgotICAgIHNpemVfdCBHZXRFcnJv
ck9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHBhcnNlUmVzdWx0Xy5PZmZzZXQoKTsgfQotCi0gICAg
Ly8hQH0KLQotICAgIC8vISBHZXQgdGhlIGFsbG9jYXRvciBvZiB0aGlzIGRvY3VtZW50LgotICAg
IEFsbG9jYXRvciYgR2V0QWxsb2NhdG9yKCkgeyByZXR1cm4gKmFsbG9jYXRvcl87IH0KLQotICAg
IC8vISBHZXQgdGhlIGNhcGFjaXR5IG9mIHN0YWNrIGluIGJ5dGVzLgotICAgIHNpemVfdCBHZXRT
dGFja0NhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhY2tfLkdldENhcGFjaXR5KCk7IH0KLQot
cHJpdmF0ZToKLSAgICAvLyBjbGVhciBzdGFjayBvbiBhbnkgZXhpdCBmcm9tIFBhcnNlU3RyZWFt
LCBlLmcuIGR1ZSB0byBleGNlcHRpb24KLSAgICBzdHJ1Y3QgQ2xlYXJTdGFja09uRXhpdCB7Ci0g
ICAgICAgIGV4cGxpY2l0IENsZWFyU3RhY2tPbkV4aXQoR2VuZXJpY0RvY3VtZW50JiBkKSA6IGRf
KGQpIHt9Ci0gICAgICAgIH5DbGVhclN0YWNrT25FeGl0KCkgeyBkXy5DbGVhclN0YWNrKCk7IH0K
LSAgICBwcml2YXRlOgotICAgICAgICBDbGVhclN0YWNrT25FeGl0KGNvbnN0IENsZWFyU3RhY2tP
bkV4aXQmKTsKLSAgICAgICAgQ2xlYXJTdGFja09uRXhpdCYgb3BlcmF0b3I9KGNvbnN0IENsZWFy
U3RhY2tPbkV4aXQmKTsKLSAgICAgICAgR2VuZXJpY0RvY3VtZW50JiBkXzsKLSAgICB9OwotCi0g
ICAgLy8gY2FsbGVycyBvZiB0aGUgZm9sbG93aW5nIHByaXZhdGUgSGFuZGxlciBmdW5jdGlvbnMK
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUsdHlwZW5hbWUsdHlwZW5hbWU+IGZyaWVuZCBjbGFzcyBH
ZW5lcmljUmVhZGVyOyAvLyBmb3IgcGFyc2luZwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSwgdHlw
ZW5hbWU+IGZyaWVuZCBjbGFzcyBHZW5lcmljVmFsdWU7IC8vIGZvciBkZWVwIGNvcHlpbmcKLQot
ICAgIC8vIEltcGxlbWVudGF0aW9uIG9mIEhhbmRsZXIKLSAgICBib29sIE51bGwoKSB7IG5ldyAo
c3RhY2tfLnRlbXBsYXRlIFB1c2g8VmFsdWVUeXBlPigpKSBWYWx1ZVR5cGUoKTsgcmV0dXJuIHRy
dWU7IH0KLSAgICBib29sIEJvb2woYm9vbCBiKSB7IG5ldyAoc3RhY2tfLnRlbXBsYXRlIFB1c2g8
VmFsdWVUeXBlPigpKSBWYWx1ZVR5cGUoYik7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBJbnQo
aW50IGkpIHsgbmV3IChzdGFja18udGVtcGxhdGUgUHVzaDxWYWx1ZVR5cGU+KCkpIFZhbHVlVHlw
ZShpKTsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIFVpbnQodW5zaWduZWQgaSkgeyBuZXcgKHN0
YWNrXy50ZW1wbGF0ZSBQdXNoPFZhbHVlVHlwZT4oKSkgVmFsdWVUeXBlKGkpOyByZXR1cm4gdHJ1
ZTsgfQotICAgIGJvb2wgSW50NjQoaW50NjRfdCBpKSB7IG5ldyAoc3RhY2tfLnRlbXBsYXRlIFB1
c2g8VmFsdWVUeXBlPigpKSBWYWx1ZVR5cGUoaSk7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBV
aW50NjQodWludDY0X3QgaSkgeyBuZXcgKHN0YWNrXy50ZW1wbGF0ZSBQdXNoPFZhbHVlVHlwZT4o
KSkgVmFsdWVUeXBlKGkpOyByZXR1cm4gdHJ1ZTsgfQotICAgIGJvb2wgRG91YmxlKGRvdWJsZSBk
KSB7IG5ldyAoc3RhY2tfLnRlbXBsYXRlIFB1c2g8VmFsdWVUeXBlPigpKSBWYWx1ZVR5cGUoZCk7
IHJldHVybiB0cnVlOyB9Ci0KLSAgICBib29sIFN0cmluZyhjb25zdCBDaCogc3RyLCBTaXplVHlw
ZSBsZW5ndGgsIGJvb2wgY29weSkgeyAKLSAgICAgICAgaWYgKGNvcHkpIAotICAgICAgICAgICAg
bmV3IChzdGFja18udGVtcGxhdGUgUHVzaDxWYWx1ZVR5cGU+KCkpIFZhbHVlVHlwZShzdHIsIGxl
bmd0aCwgR2V0QWxsb2NhdG9yKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBuZXcgKHN0
YWNrXy50ZW1wbGF0ZSBQdXNoPFZhbHVlVHlwZT4oKSkgVmFsdWVUeXBlKHN0ciwgbGVuZ3RoKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBTdGFydE9iamVjdCgpIHsg
bmV3IChzdGFja18udGVtcGxhdGUgUHVzaDxWYWx1ZVR5cGU+KCkpIFZhbHVlVHlwZShrT2JqZWN0
VHlwZSk7IHJldHVybiB0cnVlOyB9Ci0gICAgCi0gICAgYm9vbCBLZXkoY29uc3QgQ2gqIHN0ciwg
U2l6ZVR5cGUgbGVuZ3RoLCBib29sIGNvcHkpIHsgcmV0dXJuIFN0cmluZyhzdHIsIGxlbmd0aCwg
Y29weSk7IH0KLQotICAgIGJvb2wgRW5kT2JqZWN0KFNpemVUeXBlIG1lbWJlckNvdW50KSB7Ci0g
ICAgICAgIHR5cGVuYW1lIFZhbHVlVHlwZTo6TWVtYmVyKiBtZW1iZXJzID0gc3RhY2tfLnRlbXBs
YXRlIFBvcDx0eXBlbmFtZSBWYWx1ZVR5cGU6Ok1lbWJlcj4obWVtYmVyQ291bnQpOwotICAgICAg
ICBzdGFja18udGVtcGxhdGUgVG9wPFZhbHVlVHlwZT4oKS0+U2V0T2JqZWN0UmF3KG1lbWJlcnMs
IChTaXplVHlwZSltZW1iZXJDb3VudCwgR2V0QWxsb2NhdG9yKCkpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICBib29sIFN0YXJ0QXJyYXkoKSB7IG5ldyAoc3RhY2tfLnRlbXBs
YXRlIFB1c2g8VmFsdWVUeXBlPigpKSBWYWx1ZVR5cGUoa0FycmF5VHlwZSk7IHJldHVybiB0cnVl
OyB9Ci0gICAgCi0gICAgYm9vbCBFbmRBcnJheShTaXplVHlwZSBlbGVtZW50Q291bnQpIHsKLSAg
ICAgICAgVmFsdWVUeXBlKiBlbGVtZW50cyA9IHN0YWNrXy50ZW1wbGF0ZSBQb3A8VmFsdWVUeXBl
PihlbGVtZW50Q291bnQpOwotICAgICAgICBzdGFja18udGVtcGxhdGUgVG9wPFZhbHVlVHlwZT4o
KS0+U2V0QXJyYXlSYXcoZWxlbWVudHMsIGVsZW1lbnRDb3VudCwgR2V0QWxsb2NhdG9yKCkpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8hIFByb2hpYml0
IGNvcHlpbmcKLSAgICBHZW5lcmljRG9jdW1lbnQoY29uc3QgR2VuZXJpY0RvY3VtZW50Jik7Ci0g
ICAgLy8hIFByb2hpYml0IGFzc2lnbm1lbnQKLSAgICBHZW5lcmljRG9jdW1lbnQmIG9wZXJhdG9y
PShjb25zdCBHZW5lcmljRG9jdW1lbnQmKTsKLQotICAgIHZvaWQgQ2xlYXJTdGFjaygpIHsKLSAg
ICAgICAgaWYgKEFsbG9jYXRvcjo6a05lZWRGcmVlKQotICAgICAgICAgICAgd2hpbGUgKHN0YWNr
Xy5HZXRTaXplKCkgPiAwKSAgICAvLyBIZXJlIGFzc3VtZXMgYWxsIGVsZW1lbnRzIGluIHN0YWNr
IGFycmF5IGFyZSBHZW5lcmljVmFsdWUgKE1lbWJlciBpcyBhY3R1YWxseSAyIEdlbmVyaWNWYWx1
ZSBvYmplY3RzKQotICAgICAgICAgICAgICAgIChzdGFja18udGVtcGxhdGUgUG9wPFZhbHVlVHlw
ZT4oMSkpLT5+VmFsdWVUeXBlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0YWNrXy5D
bGVhcigpOwotICAgICAgICBzdGFja18uU2hyaW5rVG9GaXQoKTsKLSAgICB9Ci0KLSAgICB2b2lk
IERlc3Ryb3koKSB7Ci0gICAgICAgIFJBUElESlNPTl9ERUxFVEUob3duQWxsb2NhdG9yXyk7Ci0g
ICAgfQotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBrRGVmYXVsdFN0YWNrQ2FwYWNpdHkgPSAx
MDI0OwotICAgIEFsbG9jYXRvciogYWxsb2NhdG9yXzsKLSAgICBBbGxvY2F0b3IqIG93bkFsbG9j
YXRvcl87Ci0gICAgaW50ZXJuYWw6OlN0YWNrPFN0YWNrQWxsb2NhdG9yPiBzdGFja187Ci0gICAg
UGFyc2VSZXN1bHQgcGFyc2VSZXN1bHRfOwotfTsKLQotLy8hIEdlbmVyaWNEb2N1bWVudCB3aXRo
IFVURjggZW5jb2RpbmcKLXR5cGVkZWYgR2VuZXJpY0RvY3VtZW50PFVURjg8PiA+IERvY3VtZW50
OwotCi0vLyBkZWZpbmVkIGhlcmUgZHVlIHRvIHRoZSBkZXBlbmRlbmN5IG9uIEdlbmVyaWNEb2N1
bWVudAotdGVtcGxhdGUgPHR5cGVuYW1lIEVuY29kaW5nLCB0eXBlbmFtZSBBbGxvY2F0b3I+Ci10
ZW1wbGF0ZSA8dHlwZW5hbWUgU291cmNlQWxsb2NhdG9yPgotaW5saW5lCi1HZW5lcmljVmFsdWU8
RW5jb2RpbmcsQWxsb2NhdG9yPjo6R2VuZXJpY1ZhbHVlKGNvbnN0IEdlbmVyaWNWYWx1ZTxFbmNv
ZGluZyxTb3VyY2VBbGxvY2F0b3I+JiByaHMsIEFsbG9jYXRvciYgYWxsb2NhdG9yKQotewotICAg
IHN3aXRjaCAocmhzLkdldFR5cGUoKSkgewotICAgIGNhc2Uga09iamVjdFR5cGU6Ci0gICAgY2Fz
ZSBrQXJyYXlUeXBlOiB7IC8vIHBlcmZvcm0gZGVlcCBjb3B5IHZpYSBTQVggSGFuZGxlcgotICAg
ICAgICAgICAgR2VuZXJpY0RvY3VtZW50PEVuY29kaW5nLEFsbG9jYXRvcj4gZCgmYWxsb2NhdG9y
KTsKLSAgICAgICAgICAgIHJocy5BY2NlcHQoZCk7Ci0gICAgICAgICAgICBSYXdBc3NpZ24oKmQu
c3RhY2tfLnRlbXBsYXRlIFBvcDxHZW5lcmljVmFsdWU+KDEpKTsKLSAgICAgICAgfQotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIGtTdHJpbmdUeXBlOgotICAgICAgICBpZiAocmhzLmZsYWdzXyA9
PSBrQ29uc3RTdHJpbmdGbGFnKSB7Ci0gICAgICAgICAgICBmbGFnc18gPSByaHMuZmxhZ3NfOwot
ICAgICAgICAgICAgZGF0YV8gID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRGF0YSo+KCZyaHMu
ZGF0YV8pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgU2V0U3RyaW5nUmF3KFN0cmlu
Z1JlZihyaHMuR2V0U3RyaW5nKCksIHJocy5HZXRTdHJpbmdMZW5ndGgoKSksIGFsbG9jYXRvcik7
Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDogLy8ga051bWJlclR5cGUs
IGtUcnVlVHlwZSwga0ZhbHNlVHlwZSwga051bGxUeXBlCi0gICAgICAgIGZsYWdzXyA9IHJocy5m
bGFnc187Ci0gICAgICAgIGRhdGFfICA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IERhdGEqPigm
cmhzLmRhdGFfKTsKLSAgICB9Ci19Ci0KLVJBUElESlNPTl9OQU1FU1BBQ0VfRU5ECi0KLSNpZiBk
ZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fR05VQ19fKQotUkFQSURKU09OX0RJQUdfUE9Q
Ci0jZW5kaWYKLQotI2VuZGlmIC8vIFJBUElESlNPTl9ET0NVTUVOVF9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9p
bmNsdWRlL3JhcGlkanNvbi9lbmNvZGVkc3RyZWFtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2VuY29k
ZWRzdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU4Y2FhMDVmZTgyOTg3
ZWNhN2MyNzAyNGM0ODQ1NDg3MWI1ZjIwNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRf
cGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2VuY29kZWRzdHJlYW0uaAorKysgL2Rl
di9udWxsCkBAIC0xLDI5MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAK
LS8vCi0vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g
YW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv
Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAotLy8g
aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp
bWl0YXRpb24gdGhlIHJpZ2h0cwotLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs
aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotLy8gY29waWVzIG9mIHRo
ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz
Ci0vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zOgotLy8KLS8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50
aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLS8vCi0vLyBUSEUgU09GVFdBUkUgSVMgUFJP
VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgot
Ly8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFksCi0vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
TkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLS8vIEFVVEhPUlMgT1Ig
Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI
RVIKLS8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg
T1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi0vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX
SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCi0vLyBUSEUg
U09GVFdBUkUuCi0KLSNpZm5kZWYgUkFQSURKU09OX0VOQ09ERURTVFJFQU1fSF8KLSNkZWZpbmUg
UkFQSURKU09OX0VOQ09ERURTVFJFQU1fSF8KLQotI2luY2x1ZGUgInJhcGlkanNvbi5oIgotCi0j
aWZkZWYgX19HTlVDX18KLVJBUElESlNPTl9ESUFHX1BVU0gKLVJBUElESlNPTl9ESUFHX09GRihl
ZmZjKyspCi0jZW5kaWYKLQotUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgotCi0vLyEgSW5wdXQg
Ynl0ZSBzdHJlYW0gd3JhcHBlciB3aXRoIGEgc3RhdGljYWxseSBib3VuZCBlbmNvZGluZy4KLS8q
IQotICAgIFx0cGFyYW0gRW5jb2RpbmcgVGhlIGludGVycHJldGF0aW9uIG9mIGVuY29kaW5nIG9m
IHRoZSBzdHJlYW0uIEVpdGhlciBVVEY4LCBVVEYxNkxFLCBVVEYxNkJFLCBVVEYzMkxFLCBVVEYz
MkJFLgotICAgIFx0cGFyYW0gSW5wdXRCeXRlU3RyZWFtIFR5cGUgb2YgaW5wdXQgYnl0ZSBzdHJl
YW0uIEZvciBleGFtcGxlLCBGaWxlUmVhZFN0cmVhbS4KLSovCi10ZW1wbGF0ZSA8dHlwZW5hbWUg
RW5jb2RpbmcsIHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KLWNsYXNzIEVuY29kZWRJbnB1dFN0
cmVhbSB7Ci0gICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIElucHV0
Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5j
b2Rpbmc6OkNoIENoOwotCi0gICAgRW5jb2RlZElucHV0U3RyZWFtKElucHV0Qnl0ZVN0cmVhbSYg
aXMpIDogaXNfKGlzKSB7IAotICAgICAgICBjdXJyZW50XyA9IEVuY29kaW5nOjpUYWtlQk9NKGlz
Xyk7Ci0gICAgfQotCi0gICAgQ2ggUGVlaygpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfOyB9Ci0g
ICAgQ2ggVGFrZSgpIHsgQ2ggYyA9IGN1cnJlbnRfOyBjdXJyZW50XyA9IEVuY29kaW5nOjpUYWtl
KGlzXyk7IHJldHVybiBjOyB9Ci0gICAgc2l6ZV90IFRlbGwoKSBjb25zdCB7IHJldHVybiBpc18u
VGVsbCgpOyB9Ci0KLSAgICAvLyBOb3QgaW1wbGVtZW50ZWQKLSAgICB2b2lkIFB1dChDaCkgeyBS
QVBJREpTT05fQVNTRVJUKGZhbHNlKTsgfQotICAgIHZvaWQgRmx1c2goKSB7IFJBUElESlNPTl9B
U1NFUlQoZmFsc2UpOyB9IAotICAgIENoKiBQdXRCZWdpbigpIHsgUkFQSURKU09OX0FTU0VSVChm
YWxzZSk7IHJldHVybiAwOyB9Ci0gICAgc2l6ZV90IFB1dEVuZChDaCopIHsgUkFQSURKU09OX0FT
U0VSVChmYWxzZSk7IHJldHVybiAwOyB9Ci0KLXByaXZhdGU6Ci0gICAgRW5jb2RlZElucHV0U3Ry
ZWFtKGNvbnN0IEVuY29kZWRJbnB1dFN0cmVhbSYpOwotICAgIEVuY29kZWRJbnB1dFN0cmVhbSYg
b3BlcmF0b3I9KGNvbnN0IEVuY29kZWRJbnB1dFN0cmVhbSYpOwotCi0gICAgSW5wdXRCeXRlU3Ry
ZWFtJiBpc187Ci0gICAgQ2ggY3VycmVudF87Ci19OwotCi0vLyEgT3V0cHV0IGJ5dGUgc3RyZWFt
IHdyYXBwZXIgd2l0aCBzdGF0aWNhbGx5IGJvdW5kIGVuY29kaW5nLgotLyohCi0gICAgXHRwYXJh
bSBFbmNvZGluZyBUaGUgaW50ZXJwcmV0YXRpb24gb2YgZW5jb2Rpbmcgb2YgdGhlIHN0cmVhbS4g
RWl0aGVyIFVURjgsIFVURjE2TEUsIFVURjE2QkUsIFVURjMyTEUsIFVURjMyQkUuCi0gICAgXHRw
YXJhbSBJbnB1dEJ5dGVTdHJlYW0gVHlwZSBvZiBpbnB1dCBieXRlIHN0cmVhbS4gRm9yIGV4YW1w
bGUsIEZpbGVXcml0ZVN0cmVhbS4KLSovCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRW5jb2RpbmcsIHR5
cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW0+Ci1jbGFzcyBFbmNvZGVkT3V0cHV0U3RyZWFtIHsKLSAg
ICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVh
bTo6Q2gpID09IDEpOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5jb2Rpbmc6OkNo
IENoOwotCi0gICAgRW5jb2RlZE91dHB1dFN0cmVhbShPdXRwdXRCeXRlU3RyZWFtJiBvcywgYm9v
bCBwdXRCT00gPSB0cnVlKSA6IG9zXyhvcykgeyAKLSAgICAgICAgaWYgKHB1dEJPTSkKLSAgICAg
ICAgICAgIEVuY29kaW5nOjpQdXRCT00ob3NfKTsKLSAgICB9Ci0KLSAgICB2b2lkIFB1dChDaCBj
KSB7IEVuY29kaW5nOjpQdXQob3NfLCBjKTsgIH0KLSAgICB2b2lkIEZsdXNoKCkgeyBvc18uRmx1
c2goKTsgfQotCi0gICAgLy8gTm90IGltcGxlbWVudGVkCi0gICAgQ2ggUGVlaygpIGNvbnN0IHsg
UkFQSURKU09OX0FTU0VSVChmYWxzZSk7IH0KLSAgICBDaCBUYWtlKCkgeyBSQVBJREpTT05fQVNT
RVJUKGZhbHNlKTsgIH0KLSAgICBzaXplX3QgVGVsbCgpIGNvbnN0IHsgUkFQSURKU09OX0FTU0VS
VChmYWxzZSk7ICByZXR1cm4gMDsgfQotICAgIENoKiBQdXRCZWdpbigpIHsgUkFQSURKU09OX0FT
U0VSVChmYWxzZSk7IHJldHVybiAwOyB9Ci0gICAgc2l6ZV90IFB1dEVuZChDaCopIHsgUkFQSURK
U09OX0FTU0VSVChmYWxzZSk7IHJldHVybiAwOyB9Ci0KLXByaXZhdGU6Ci0gICAgRW5jb2RlZE91
dHB1dFN0cmVhbShjb25zdCBFbmNvZGVkT3V0cHV0U3RyZWFtJik7Ci0gICAgRW5jb2RlZE91dHB1
dFN0cmVhbSYgb3BlcmF0b3I9KGNvbnN0IEVuY29kZWRPdXRwdXRTdHJlYW0mKTsKLQotICAgIE91
dHB1dEJ5dGVTdHJlYW0mIG9zXzsKLX07Ci0KLSNkZWZpbmUgUkFQSURKU09OX0VOQ09ESU5HU19G
VU5DKHgpIFVURjg8Q2g+Ojp4LCBVVEYxNkxFPENoPjo6eCwgVVRGMTZCRTxDaD46OngsIFVURjMy
TEU8Q2g+Ojp4LCBVVEYzMkJFPENoPjo6eAotCi0vLyEgSW5wdXQgc3RyZWFtIHdyYXBwZXIgd2l0
aCBkeW5hbWljYWxseSBib3VuZCBlbmNvZGluZyBhbmQgYXV0b21hdGljIGVuY29kaW5nIGRldGVj
dGlvbi4KLS8qIQotICAgIFx0cGFyYW0gQ2hhclR5cGUgVHlwZSBvZiBjaGFyYWN0ZXIgZm9yIHJl
YWRpbmcuCi0gICAgXHRwYXJhbSBJbnB1dEJ5dGVTdHJlYW0gdHlwZSBvZiBpbnB1dCBieXRlIHN0
cmVhbSB0byBiZSB3cmFwcGVkLgotKi8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZSwgdHlw
ZW5hbWUgSW5wdXRCeXRlU3RyZWFtPgotY2xhc3MgQXV0b1VURklucHV0U3RyZWFtIHsKLSAgICBS
QVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtOjpD
aCkgPT0gMSk7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBDaGFyVHlwZSBDaDsKLQotICAgIC8vISBD
b25zdHJ1Y3Rvci4KLSAgICAvKiEKLSAgICAgICAgXHBhcmFtIGlzIGlucHV0IHN0cmVhbSB0byBi
ZSB3cmFwcGVkLgotICAgICAgICBccGFyYW0gdHlwZSBVVEYgZW5jb2RpbmcgdHlwZSBpZiBpdCBp
cyBub3QgZGV0ZWN0ZWQgZnJvbSB0aGUgc3RyZWFtLgotICAgICovCi0gICAgQXV0b1VURklucHV0
U3RyZWFtKElucHV0Qnl0ZVN0cmVhbSYgaXMsIFVURlR5cGUgdHlwZSA9IGtVVEY4KSA6IGlzXygm
aXMpLCB0eXBlXyh0eXBlKSwgaGFzQk9NXyhmYWxzZSkgewotICAgICAgICBEZXRlY3RUeXBlKCk7
Ci0gICAgICAgIHN0YXRpYyBjb25zdCBUYWtlRnVuYyBmW10gPSB7IFJBUElESlNPTl9FTkNPRElO
R1NfRlVOQyhUYWtlKSB9OwotICAgICAgICB0YWtlRnVuY18gPSBmW3R5cGVfXTsKLSAgICAgICAg
Y3VycmVudF8gPSB0YWtlRnVuY18oKmlzXyk7Ci0gICAgfQotCi0gICAgVVRGVHlwZSBHZXRUeXBl
KCkgY29uc3QgeyByZXR1cm4gdHlwZV87IH0KLSAgICBib29sIEhhc0JPTSgpIGNvbnN0IHsgcmV0
dXJuIGhhc0JPTV87IH0KLQotICAgIENoIFBlZWsoKSBjb25zdCB7IHJldHVybiBjdXJyZW50Xzsg
fQotICAgIENoIFRha2UoKSB7IENoIGMgPSBjdXJyZW50XzsgY3VycmVudF8gPSB0YWtlRnVuY18o
KmlzXyk7IHJldHVybiBjOyB9Ci0gICAgc2l6ZV90IFRlbGwoKSBjb25zdCB7IHJldHVybiBpc18t
PlRlbGwoKTsgfQotCi0gICAgLy8gTm90IGltcGxlbWVudGVkCi0gICAgdm9pZCBQdXQoQ2gpIHsg
UkFQSURKU09OX0FTU0VSVChmYWxzZSk7IH0KLSAgICB2b2lkIEZsdXNoKCkgeyBSQVBJREpTT05f
QVNTRVJUKGZhbHNlKTsgfSAKLSAgICBDaCogUHV0QmVnaW4oKSB7IFJBUElESlNPTl9BU1NFUlQo
ZmFsc2UpOyByZXR1cm4gMDsgfQotICAgIHNpemVfdCBQdXRFbmQoQ2gqKSB7IFJBUElESlNPTl9B
U1NFUlQoZmFsc2UpOyByZXR1cm4gMDsgfQotCi1wcml2YXRlOgotICAgIEF1dG9VVEZJbnB1dFN0
cmVhbShjb25zdCBBdXRvVVRGSW5wdXRTdHJlYW0mKTsKLSAgICBBdXRvVVRGSW5wdXRTdHJlYW0m
IG9wZXJhdG9yPShjb25zdCBBdXRvVVRGSW5wdXRTdHJlYW0mKTsKLQotICAgIC8vIERldGVjdCBl
bmNvZGluZyB0eXBlIHdpdGggQk9NIG9yIFJGQyA0NjI3Ci0gICAgdm9pZCBEZXRlY3RUeXBlKCkg
ewotICAgICAgICAvLyBCT00gKEJ5dGUgT3JkZXIgTWFyayk6Ci0gICAgICAgIC8vIDAwIDAwIEZF
IEZGICBVVEYtMzJCRQotICAgICAgICAvLyBGRiBGRSAwMCAwMCAgVVRGLTMyTEUKLSAgICAgICAg
Ly8gRkUgRkYgICAgICAgIFVURi0xNkJFCi0gICAgICAgIC8vIEZGIEZFICAgICAgICBVVEYtMTZM
RQotICAgICAgICAvLyBFRiBCQiBCRiAgICAgVVRGLTgKLQotICAgICAgICBjb25zdCB1bnNpZ25l
ZCBjaGFyKiBjID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilpc18tPlBlZWs0KCk7Ci0gICAgICAg
IGlmICghYykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB1bnNpZ25lZCBib20gPSBj
WzBdIHwgKGNbMV0gPDwgOCkgfCAoY1syXSA8PCAxNikgfCAoY1szXSA8PCAyNCk7Ci0gICAgICAg
IGhhc0JPTV8gPSBmYWxzZTsKLSAgICAgICAgaWYgKGJvbSA9PSAweEZGRkUwMDAwKSAgICAgICAg
ICAgICAgICAgIHsgdHlwZV8gPSBrVVRGMzJCRTsgaGFzQk9NXyA9IHRydWU7IGlzXy0+VGFrZSgp
OyBpc18tPlRha2UoKTsgaXNfLT5UYWtlKCk7IGlzXy0+VGFrZSgpOyB9Ci0gICAgICAgIGVsc2Ug
aWYgKGJvbSA9PSAweDAwMDBGRUZGKSAgICAgICAgICAgICB7IHR5cGVfID0ga1VURjMyTEU7IGhh
c0JPTV8gPSB0cnVlOyBpc18tPlRha2UoKTsgaXNfLT5UYWtlKCk7IGlzXy0+VGFrZSgpOyBpc18t
PlRha2UoKTsgfQotICAgICAgICBlbHNlIGlmICgoYm9tICYgMHhGRkZGKSA9PSAweEZGRkUpICAg
ICAgeyB0eXBlXyA9IGtVVEYxNkJFOyBoYXNCT01fID0gdHJ1ZTsgaXNfLT5UYWtlKCk7IGlzXy0+
VGFrZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoKGJv
bSAmIDB4RkZGRikgPT0gMHhGRUZGKSAgICAgIHsgdHlwZV8gPSBrVVRGMTZMRTsgaGFzQk9NXyA9
IHRydWU7IGlzXy0+VGFrZSgpOyBpc18tPlRha2UoKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgIGVsc2UgaWYgKChib20gJiAweEZGRkZGRikgPT0gMHhCRkJCRUYpICB7IHR5
cGVfID0ga1VURjg7ICAgIGhhc0JPTV8gPSB0cnVlOyBpc18tPlRha2UoKTsgaXNfLT5UYWtlKCk7
IGlzXy0+VGFrZSgpOyAgICAgICAgICAgICAgfQotCi0gICAgICAgIC8vIFJGQyA0NjI3OiBTZWN0
aW9uIDMKLSAgICAgICAgLy8gIlNpbmNlIHRoZSBmaXJzdCB0d28gY2hhcmFjdGVycyBvZiBhIEpT
T04gdGV4dCB3aWxsIGFsd2F5cyBiZSBBU0NJSQotICAgICAgICAvLyBjaGFyYWN0ZXJzIFtSRkMw
MDIwXSwgaXQgaXMgcG9zc2libGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW4gb2N0ZXQKLSAgICAg
ICAgLy8gc3RyZWFtIGlzIFVURi04LCBVVEYtMTYgKEJFIG9yIExFKSwgb3IgVVRGLTMyIChCRSBv
ciBMRSkgYnkgbG9va2luZwotICAgICAgICAvLyBhdCB0aGUgcGF0dGVybiBvZiBudWxscyBpbiB0
aGUgZmlyc3QgZm91ciBvY3RldHMuIgotICAgICAgICAvLyAwMCAwMCAwMCB4eCAgVVRGLTMyQkUK
LSAgICAgICAgLy8gMDAgeHggMDAgeHggIFVURi0xNkJFCi0gICAgICAgIC8vIHh4IDAwIDAwIDAw
ICBVVEYtMzJMRQotICAgICAgICAvLyB4eCAwMCB4eCAwMCAgVVRGLTE2TEUKLSAgICAgICAgLy8g
eHggeHggeHggeHggIFVURi04Ci0KLSAgICAgICAgaWYgKCFoYXNCT01fKSB7Ci0gICAgICAgICAg
ICB1bnNpZ25lZCBwYXR0ZXJuID0gKGNbMF0gPyAxIDogMCkgfCAoY1sxXSA/IDIgOiAwKSB8IChj
WzJdID8gNCA6IDApIHwgKGNbM10gPyA4IDogMCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHBhdHRl
cm4pIHsKLSAgICAgICAgICAgIGNhc2UgMHgwODogdHlwZV8gPSBrVVRGMzJCRTsgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIDB4MEE6IHR5cGVfID0ga1VURjE2QkU7IGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSAweDAxOiB0eXBlXyA9IGtVVEYzMkxFOyBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
MHgwNTogdHlwZV8gPSBrVVRGMTZMRTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDB4MEY6IHR5
cGVfID0ga1VURjg7ICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7IC8vIFVz
ZSB0eXBlIGRlZmluZWQgYnkgdXNlci4KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIFJ1bnRpbWUgY2hlY2sgd2hldGhlciB0aGUgc2l6ZSBvZiBjaGFyYWN0ZXIgdHlwZSBp
cyBzdWZmaWNpZW50LiBJdCBvbmx5IHBlcmZvcm0gY2hlY2tzIHdpdGggYXNzZXJ0aW9uLgotICAg
ICAgICBzd2l0Y2ggKHR5cGVfKSB7Ci0gICAgICAgIGNhc2Uga1VURjg6Ci0gICAgICAgICAgICAv
LyBEbyBub3RoaW5nCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBrVVRGMTZMRToK
LSAgICAgICAgY2FzZSBrVVRGMTZCRToKLSAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoc2l6
ZW9mKENoKSA+PSAyKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIGtVVEYzMkxF
OgotICAgICAgICBjYXNlIGtVVEYzMkJFOgotICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChz
aXplb2YoQ2gpID49IDQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsgICAgLy8gSW52YWxpZCB0eXBlCi0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICB0eXBlZGVmIENoICgqVGFrZUZ1bmMpKElucHV0Qnl0ZVN0
cmVhbSYgaXMpOwotICAgIElucHV0Qnl0ZVN0cmVhbSogaXNfOwotICAgIFVURlR5cGUgdHlwZV87
Ci0gICAgQ2ggY3VycmVudF87Ci0gICAgVGFrZUZ1bmMgdGFrZUZ1bmNfOwotICAgIGJvb2wgaGFz
Qk9NXzsKLX07Ci0KLS8vISBPdXRwdXQgc3RyZWFtIHdyYXBwZXIgd2l0aCBkeW5hbWljYWxseSBi
b3VuZCBlbmNvZGluZyBhbmQgYXV0b21hdGljIGVuY29kaW5nIGRldGVjdGlvbi4KLS8qIQotICAg
IFx0cGFyYW0gQ2hhclR5cGUgVHlwZSBvZiBjaGFyYWN0ZXIgZm9yIHdyaXRpbmcuCi0gICAgXHRw
YXJhbSBJbnB1dEJ5dGVTdHJlYW0gdHlwZSBvZiBvdXRwdXQgYnl0ZSBzdHJlYW0gdG8gYmUgd3Jh
cHBlZC4KLSovCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGUsIHR5cGVuYW1lIE91dHB1dEJ5
dGVTdHJlYW0+Ci1jbGFzcyBBdXRvVVRGT3V0cHV0U3RyZWFtIHsKLSAgICBSQVBJREpTT05fU1RB
VElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOwot
cHVibGljOgotICAgIHR5cGVkZWYgQ2hhclR5cGUgQ2g7Ci0KLSAgICAvLyEgQ29uc3RydWN0b3Iu
Ci0gICAgLyohCi0gICAgICAgIFxwYXJhbSBvcyBvdXRwdXQgc3RyZWFtIHRvIGJlIHdyYXBwZWQu
Ci0gICAgICAgIFxwYXJhbSB0eXBlIFVURiBlbmNvZGluZyB0eXBlLgotICAgICAgICBccGFyYW0g
cHV0Qk9NIFdoZXRoZXIgdG8gd3JpdGUgQk9NIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmVh
bS4KLSAgICAqLwotICAgIEF1dG9VVEZPdXRwdXRTdHJlYW0oT3V0cHV0Qnl0ZVN0cmVhbSYgb3Ms
IFVURlR5cGUgdHlwZSwgYm9vbCBwdXRCT00pIDogb3NfKCZvcyksIHR5cGVfKHR5cGUpIHsKLSAg
ICAgICAgLy8gUlVudGltZSBjaGVjayB3aGV0aGVyIHRoZSBzaXplIG9mIGNoYXJhY3RlciB0eXBl
IGlzIHN1ZmZpY2llbnQuIEl0IG9ubHkgcGVyZm9ybSBjaGVja3Mgd2l0aCBhc3NlcnRpb24uCi0g
ICAgICAgIHN3aXRjaCAodHlwZV8pIHsKLSAgICAgICAgY2FzZSBrVVRGMTZMRToKLSAgICAgICAg
Y2FzZSBrVVRGMTZCRToKLSAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoc2l6ZW9mKENoKSA+
PSAyKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIGtVVEYzMkxFOgotICAgICAg
ICBjYXNlIGtVVEYzMkJFOgotICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChzaXplb2YoQ2gp
ID49IDQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Uga1VURjg6Ci0gICAgICAg
ICAgICAvLyBEbyBub3RoaW5nCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyAgICAvLyBJbnZhbGlkIFVURlR5
cGUKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBjb25zdCBQdXRGdW5jIGZbXSA9IHsgUkFQ
SURKU09OX0VOQ09ESU5HU19GVU5DKFB1dCkgfTsKLSAgICAgICAgcHV0RnVuY18gPSBmW3R5cGVf
XTsKLQotICAgICAgICBpZiAocHV0Qk9NKQotICAgICAgICAgICAgUHV0Qk9NKCk7Ci0gICAgfQot
Ci0gICAgVVRGVHlwZSBHZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gdHlwZV87IH0KLQotICAgIHZv
aWQgUHV0KENoIGMpIHsgcHV0RnVuY18oKm9zXywgYyk7IH0KLSAgICB2b2lkIEZsdXNoKCkgeyBv
c18tPkZsdXNoKCk7IH0gCi0KLSAgICAvLyBOb3QgaW1wbGVtZW50ZWQKLSAgICBDaCBQZWVrKCkg
Y29uc3QgeyBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsgfQotICAgIENoIFRha2UoKSB7IFJBUElE
SlNPTl9BU1NFUlQoZmFsc2UpOyB9Ci0gICAgc2l6ZV90IFRlbGwoKSBjb25zdCB7IFJBUElESlNP
Tl9BU1NFUlQoZmFsc2UpOyByZXR1cm4gMDsgfQotICAgIENoKiBQdXRCZWdpbigpIHsgUkFQSURK
U09OX0FTU0VSVChmYWxzZSk7IHJldHVybiAwOyB9Ci0gICAgc2l6ZV90IFB1dEVuZChDaCopIHsg
UkFQSURKU09OX0FTU0VSVChmYWxzZSk7IHJldHVybiAwOyB9Ci0KLXByaXZhdGU6Ci0gICAgQXV0
b1VURk91dHB1dFN0cmVhbShjb25zdCBBdXRvVVRGT3V0cHV0U3RyZWFtJik7Ci0gICAgQXV0b1VU
Rk91dHB1dFN0cmVhbSYgb3BlcmF0b3I9KGNvbnN0IEF1dG9VVEZPdXRwdXRTdHJlYW0mKTsKLQot
ICAgIHZvaWQgUHV0Qk9NKCkgeyAKLSAgICAgICAgdHlwZWRlZiB2b2lkICgqUHV0Qk9NRnVuYyko
T3V0cHV0Qnl0ZVN0cmVhbSYpOwotICAgICAgICBzdGF0aWMgY29uc3QgUHV0Qk9NRnVuYyBmW10g
PSB7IFJBUElESlNPTl9FTkNPRElOR1NfRlVOQyhQdXRCT00pIH07Ci0gICAgICAgIGZbdHlwZV9d
KCpvc18pOwotICAgIH0KLQotICAgIHR5cGVkZWYgdm9pZCAoKlB1dEZ1bmMpKE91dHB1dEJ5dGVT
dHJlYW0mLCBDaCk7Ci0KLSAgICBPdXRwdXRCeXRlU3RyZWFtKiBvc187Ci0gICAgVVRGVHlwZSB0
eXBlXzsKLSAgICBQdXRGdW5jIHB1dEZ1bmNfOwotfTsKLQotI3VuZGVmIFJBUElESlNPTl9FTkNP
RElOR1NfRlVOQwotCi1SQVBJREpTT05fTkFNRVNQQUNFX0VORAotCi0jaWZkZWYgX19HTlVDX18K
LVJBUElESlNPTl9ESUFHX1BPUAotI2VuZGlmCi0KLSNlbmRpZiAvLyBSQVBJREpTT05fRklMRVNU
UkVBTV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Ro
aXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9lbmNvZGluZ3MuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVk
ZS9yYXBpZGpzb24vZW5jb2RpbmdzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcx
NTk1ZjcwYzgzMTIzODE3OWIyOGJiMTllOWU1Yzg1YjVmNTA2ZGEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9lbmNvZGluZ3Mu
aAorKysgL2Rldi9udWxsCkBAIC0xLDYzMCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTEg
TWlsbyBZaXAKLS8vCi0vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo
YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0vLyBvZiB0aGlzIHNvZnR3YXJl
IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8g
ZGVhbAotLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3
aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l
cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotLy8gY29w
aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNv
ZnR3YXJlIGlzCi0vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zOgotLy8KLS8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz
IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0vLyBhbGwgY29waWVzIG9y
IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLS8vCi0vLyBUSEUgU09GVFdB
UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ
UkVTUyBPUgotLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLS8vIEFV
VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH
RVMgT1IgT1RIRVIKLS8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB
Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi0vLyBPVVQgT0YgT1IgSU4gQ09O
TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElO
Ci0vLyBUSEUgU09GVFdBUkUuCi0KLSNpZm5kZWYgUkFQSURKU09OX0VOQ09ESU5HU19IXwotI2Rl
ZmluZSBSQVBJREpTT05fRU5DT0RJTkdTX0hfCi0KLSNpbmNsdWRlICJyYXBpZGpzb24uaCIKLQot
I2lmZGVmIF9NU0NfVkVSCi1SQVBJREpTT05fRElBR19QVVNICi1SQVBJREpTT05fRElBR19PRkYo
NDI0NCkgLy8gY29udmVyc2lvbiBmcm9tICd0eXBlMScgdG8gJ3R5cGUyJywgcG9zc2libGUgbG9z
cyBvZiBkYXRhCi1SQVBJREpTT05fRElBR19PRkYoNDcwMikgIC8vIHVucmVhY2hhYmxlIGNvZGUK
LSNlbGlmIGRlZmluZWQoX19HTlVDX18pCi1SQVBJREpTT05fRElBR19QVVNICi1SQVBJREpTT05f
RElBR19PRkYoZWZmYysrKQotI2VuZGlmCi0KLVJBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KLQot
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gRW5jb2RpbmcKLQotLyohIFxjbGFzcyByYXBpZGpz
b246OkVuY29kaW5nCi0gICAgXGJyaWVmIENvbmNlcHQgZm9yIGVuY29kaW5nIG9mIFVuaWNvZGUg
Y2hhcmFjdGVycy4KLQotXGNvZGUKLWNvbmNlcHQgRW5jb2RpbmcgewotICAgIHR5cGVuYW1lIENo
OyAgICAvLyEgVHlwZSBvZiBjaGFyYWN0ZXIuIEEgImNoYXJhY3RlciIgaXMgYWN0dWFsbHkgYSBj
b2RlIHVuaXQgaW4gdW5pY29kZSdzIGRlZmluaXRpb24uCi0KLSAgICBlbnVtIHsgc3VwcG9ydFVu
aWNvZGUgPSAxIH07IC8vIG9yIDAgaWYgbm90IHN1cHBvcnRpbmcgdW5pY29kZQotCi0gICAgLy8h
IFxicmllZiBFbmNvZGUgYSBVbmljb2RlIGNvZGVwb2ludCB0byBhbiBvdXRwdXQgc3RyZWFtLgot
ICAgIC8vISBccGFyYW0gb3MgT3V0cHV0IHN0cmVhbS4KLSAgICAvLyEgXHBhcmFtIGNvZGVwb2lu
dCBBbiB1bmljb2RlIGNvZGVwb2ludCwgcmFuZ2luZyBmcm9tIDB4MCB0byAweDEwRkZGRiBpbmNs
dXNpdmVseS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXRTdHJlYW0+Ci0gICAgc3RhdGlj
IHZvaWQgRW5jb2RlKE91dHB1dFN0cmVhbSYgb3MsIHVuc2lnbmVkIGNvZGVwb2ludCk7Ci0KLSAg
ICAvLyEgXGJyaWVmIERlY29kZSBhIFVuaWNvZGUgY29kZXBvaW50IGZyb20gYW4gaW5wdXQgc3Ry
ZWFtLgotICAgIC8vISBccGFyYW0gaXMgSW5wdXQgc3RyZWFtLgotICAgIC8vISBccGFyYW0gY29k
ZXBvaW50IE91dHB1dCBvZiB0aGUgdW5pY29kZSBjb2RlcG9pbnQuCi0gICAgLy8hIFxyZXR1cm4g
dHJ1ZSBpZiBhIHZhbGlkIGNvZGVwb2ludCBjYW4gYmUgZGVjb2RlZCBmcm9tIHRoZSBzdHJlYW0u
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0U3RyZWFtPgotICAgIHN0YXRpYyBib29sIERl
Y29kZShJbnB1dFN0cmVhbSYgaXMsIHVuc2lnbmVkKiBjb2RlcG9pbnQpOwotCi0gICAgLy8hIFxi
cmllZiBWYWxpZGF0ZSBvbmUgVW5pY29kZSBjb2RlcG9pbnQgZnJvbSBhbiBlbmNvZGVkIHN0cmVh
bS4KLSAgICAvLyEgXHBhcmFtIGlzIElucHV0IHN0cmVhbSB0byBvYnRhaW4gY29kZXBvaW50Lgot
ICAgIC8vISBccGFyYW0gb3MgT3V0cHV0IGZvciBjb3B5aW5nIG9uZSBjb2RlcG9pbnQuCi0gICAg
Ly8hIFxyZXR1cm4gdHJ1ZSBpZiBpdCBpcyB2YWxpZC4KLSAgICAvLyEgXG5vdGUgVGhpcyBmdW5j
dGlvbiBqdXN0IHZhbGlkYXRpbmcgYW5kIGNvcHlpbmcgdGhlIGNvZGVwb2ludCB3aXRob3V0IGFj
dHVhbGx5IGRlY29kZSBpdC4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRTdHJlYW0sIHR5
cGVuYW1lIE91dHB1dFN0cmVhbT4KLSAgICBzdGF0aWMgYm9vbCBWYWxpZGF0ZShJbnB1dFN0cmVh
bSYgaXMsIE91dHB1dFN0cmVhbSYgb3MpOwotCi0gICAgLy8gVGhlIGZvbGxvd2luZyBmdW5jdGlv
bnMgYXJlIGRlYWwgd2l0aCBieXRlIHN0cmVhbXMuCi0KLSAgICAvLyEgVGFrZSBhIGNoYXJhY3Rl
ciBmcm9tIGlucHV0IGJ5dGUgc3RyZWFtLCBza2lwIEJPTSBpZiBleGlzdC4KLSAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtPgotICAgIHN0YXRpYyBDaGFyVHlwZSBUYWtlQk9N
KElucHV0Qnl0ZVN0cmVhbSYgaXMpOwotCi0gICAgLy8hIFRha2UgYSBjaGFyYWN0ZXIgZnJvbSBp
bnB1dCBieXRlIHN0cmVhbS4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFt
PgotICAgIHN0YXRpYyBDaCBUYWtlKElucHV0Qnl0ZVN0cmVhbSYgaXMpOwotCi0gICAgLy8hIFB1
dCBCT00gdG8gb3V0cHV0IGJ5dGUgc3RyZWFtLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPdXRw
dXRCeXRlU3RyZWFtPgotICAgIHN0YXRpYyB2b2lkIFB1dEJPTShPdXRwdXRCeXRlU3RyZWFtJiBv
cyk7Ci0KLSAgICAvLyEgUHV0IGEgY2hhcmFjdGVyIHRvIG91dHB1dCBieXRlIHN0cmVhbS4KLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbT4KLSAgICBzdGF0aWMgdm9pZCBQ
dXQoT3V0cHV0Qnl0ZVN0cmVhbSYgb3MsIENoIGMpOwotfTsKLVxlbmRjb2RlCi0qLwotCi0vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0vLyBVVEY4Ci0KLS8vISBVVEYtOCBlbmNvZGluZy4KLS8qISBo
dHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VURi04Ci0gICAgaHR0cDovL3Rvb2xzLmlldGYu
b3JnL2h0bWwvcmZjMzYyOQotICAgIFx0cGFyYW0gQ2hhclR5cGUgQ29kZSB1bml0IGZvciBzdG9y
aW5nIDgtYml0IFVURi04IGRhdGEuIERlZmF1bHQgaXMgY2hhci4KLSAgICBcbm90ZSBpbXBsZW1l
bnRzIEVuY29kaW5nIGNvbmNlcHQKLSovCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSA9IGNo
YXI+Ci1zdHJ1Y3QgVVRGOCB7Ci0gICAgdHlwZWRlZiBDaGFyVHlwZSBDaDsKLQotICAgIGVudW0g
eyBzdXBwb3J0VW5pY29kZSA9IDEgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dFN0
cmVhbT4KLSAgICBzdGF0aWMgdm9pZCBFbmNvZGUoT3V0cHV0U3RyZWFtJiBvcywgdW5zaWduZWQg
Y29kZXBvaW50KSB7Ci0gICAgICAgIGlmIChjb2RlcG9pbnQgPD0gMHg3RikgCi0gICAgICAgICAg
ICBvcy5QdXQoc3RhdGljX2Nhc3Q8Q2g+KGNvZGVwb2ludCAmIDB4RkYpKTsKLSAgICAgICAgZWxz
ZSBpZiAoY29kZXBvaW50IDw9IDB4N0ZGKSB7Ci0gICAgICAgICAgICBvcy5QdXQoc3RhdGljX2Nh
c3Q8Q2g+KDB4QzAgfCAoKGNvZGVwb2ludCA+PiA2KSAmIDB4RkYpKSk7Ci0gICAgICAgICAgICBv
cy5QdXQoc3RhdGljX2Nhc3Q8Q2g+KDB4ODAgfCAoKGNvZGVwb2ludCAmIDB4M0YpKSkpOwotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGNvZGVwb2ludCA8PSAweEZGRkYpIHsKLSAgICAgICAg
ICAgIG9zLlB1dChzdGF0aWNfY2FzdDxDaD4oMHhFMCB8ICgoY29kZXBvaW50ID4+IDEyKSAmIDB4
RkYpKSk7Ci0gICAgICAgICAgICBvcy5QdXQoc3RhdGljX2Nhc3Q8Q2g+KDB4ODAgfCAoKGNvZGVw
b2ludCA+PiA2KSAmIDB4M0YpKSk7Ci0gICAgICAgICAgICBvcy5QdXQoc3RhdGljX2Nhc3Q8Q2g+
KDB4ODAgfCAoY29kZXBvaW50ICYgMHgzRikpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoY29kZXBvaW50IDw9IDB4MTBGRkZGKTsKLSAg
ICAgICAgICAgIG9zLlB1dChzdGF0aWNfY2FzdDxDaD4oMHhGMCB8ICgoY29kZXBvaW50ID4+IDE4
KSAmIDB4RkYpKSk7Ci0gICAgICAgICAgICBvcy5QdXQoc3RhdGljX2Nhc3Q8Q2g+KDB4ODAgfCAo
KGNvZGVwb2ludCA+PiAxMikgJiAweDNGKSkpOwotICAgICAgICAgICAgb3MuUHV0KHN0YXRpY19j
YXN0PENoPigweDgwIHwgKChjb2RlcG9pbnQgPj4gNikgJiAweDNGKSkpOwotICAgICAgICAgICAg
b3MuUHV0KHN0YXRpY19jYXN0PENoPigweDgwIHwgKGNvZGVwb2ludCAmIDB4M0YpKSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRTdHJlYW0+Ci0gICAg
c3RhdGljIGJvb2wgRGVjb2RlKElucHV0U3RyZWFtJiBpcywgdW5zaWduZWQqIGNvZGVwb2ludCkg
ewotI2RlZmluZSBDT1BZKCkgYyA9IGlzLlRha2UoKTsgKmNvZGVwb2ludCA9ICgqY29kZXBvaW50
IDw8IDYpIHwgKCh1bnNpZ25lZCBjaGFyKWMgJiAweDNGdSkKLSNkZWZpbmUgVFJBTlMobWFzaykg
cmVzdWx0ICY9ICgoR2V0UmFuZ2UoKHVuc2lnbmVkIGNoYXIpYykgJiBtYXNrKSAhPSAwKQotI2Rl
ZmluZSBUQUlMKCkgQ09QWSgpOyBUUkFOUygweDcwKQotICAgICAgICBDaCBjID0gaXMuVGFrZSgp
OwotICAgICAgICBpZiAoIShjICYgMHg4MCkpIHsKLSAgICAgICAgICAgICpjb2RlcG9pbnQgPSAo
dW5zaWduZWQgY2hhciljOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQot
ICAgICAgICB1bnNpZ25lZCBjaGFyIHR5cGUgPSBHZXRSYW5nZSgodW5zaWduZWQgY2hhciljKTsK
LSAgICAgICAgKmNvZGVwb2ludCA9ICgweEZGID4+IHR5cGUpICYgKHVuc2lnbmVkIGNoYXIpYzsK
LSAgICAgICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAg
ICAgICAgY2FzZSAyOiBUQUlMKCk7IHJldHVybiByZXN1bHQ7Ci0gICAgICAgIGNhc2UgMzogVEFJ
TCgpOyBUQUlMKCk7IHJldHVybiByZXN1bHQ7Ci0gICAgICAgIGNhc2UgNDogQ09QWSgpOyBUUkFO
UygweDUwKTsgVEFJTCgpOyByZXR1cm4gcmVzdWx0OwotICAgICAgICBjYXNlIDU6IENPUFkoKTsg
VFJBTlMoMHgxMCk7IFRBSUwoKTsgVEFJTCgpOyByZXR1cm4gcmVzdWx0OwotICAgICAgICBjYXNl
IDY6IFRBSUwoKTsgVEFJTCgpOyBUQUlMKCk7IHJldHVybiByZXN1bHQ7Ci0gICAgICAgIGNhc2Ug
MTA6IENPUFkoKTsgVFJBTlMoMHgyMCk7IFRBSUwoKTsgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAg
Y2FzZSAxMTogQ09QWSgpOyBUUkFOUygweDYwKTsgVEFJTCgpOyBUQUlMKCk7IHJldHVybiByZXN1
bHQ7Ci0gICAgICAgIGRlZmF1bHQ6IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotI3VuZGVmIENP
UFkKLSN1bmRlZiBUUkFOUwotI3VuZGVmIFRBSUwKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSW5wdXRTdHJlYW0sIHR5cGVuYW1lIE91dHB1dFN0cmVhbT4KLSAgICBzdGF0aWMgYm9v
bCBWYWxpZGF0ZShJbnB1dFN0cmVhbSYgaXMsIE91dHB1dFN0cmVhbSYgb3MpIHsKLSNkZWZpbmUg
Q09QWSgpIG9zLlB1dChjID0gaXMuVGFrZSgpKQotI2RlZmluZSBUUkFOUyhtYXNrKSByZXN1bHQg
Jj0gKChHZXRSYW5nZSgodW5zaWduZWQgY2hhciljKSAmIG1hc2spICE9IDApCi0jZGVmaW5lIFRB
SUwoKSBDT1BZKCk7IFRSQU5TKDB4NzApCi0gICAgICAgIENoIGM7Ci0gICAgICAgIENPUFkoKTsK
LSAgICAgICAgaWYgKCEoYyAmIDB4ODApKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAg
ICAgICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgICAgICBzd2l0Y2ggKEdldFJhbmdlKCh1bnNp
Z25lZCBjaGFyKWMpKSB7Ci0gICAgICAgIGNhc2UgMjogVEFJTCgpOyByZXR1cm4gcmVzdWx0Owot
ICAgICAgICBjYXNlIDM6IFRBSUwoKTsgVEFJTCgpOyByZXR1cm4gcmVzdWx0OwotICAgICAgICBj
YXNlIDQ6IENPUFkoKTsgVFJBTlMoMHg1MCk7IFRBSUwoKTsgcmV0dXJuIHJlc3VsdDsKLSAgICAg
ICAgY2FzZSA1OiBDT1BZKCk7IFRSQU5TKDB4MTApOyBUQUlMKCk7IFRBSUwoKTsgcmV0dXJuIHJl
c3VsdDsKLSAgICAgICAgY2FzZSA2OiBUQUlMKCk7IFRBSUwoKTsgVEFJTCgpOyByZXR1cm4gcmVz
dWx0OwotICAgICAgICBjYXNlIDEwOiBDT1BZKCk7IFRSQU5TKDB4MjApOyBUQUlMKCk7IHJldHVy
biByZXN1bHQ7Ci0gICAgICAgIGNhc2UgMTE6IENPUFkoKTsgVFJBTlMoMHg2MCk7IFRBSUwoKTsg
VEFJTCgpOyByZXR1cm4gcmVzdWx0OwotICAgICAgICBkZWZhdWx0OiByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KLSN1bmRlZiBDT1BZCi0jdW5kZWYgVFJBTlMKLSN1bmRlZiBUQUlMCi0gICAgfQot
Ci0gICAgc3RhdGljIHVuc2lnbmVkIGNoYXIgR2V0UmFuZ2UodW5zaWduZWQgY2hhciBjKSB7Ci0g
ICAgICAgIC8vIFJlZmVycmluZyB0byBERkEgb2YgaHR0cDovL2Jqb2Vybi5ob2Vocm1hbm4uZGUv
dXRmLTgvZGVjb2Rlci9kZmEvCi0gICAgICAgIC8vIFdpdGggbmV3IG1hcHBpbmcgMSAtPiAweDEw
LCA3IC0+IDB4MjAsIDkgLT4gMHg0MCwgc3VjaCB0aGF0IEFORCBvcGVyYXRpb24gY2FuIHRlc3Qg
bXVsdGlwbGUgdHlwZXMuCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHR5cGVb
XSA9IHsKLSAgICAgICAgICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsICAwLDAs
MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgICAgICAgICAgMCwwLDAsMCwwLDAsMCww
LDAsMCwwLDAsMCwwLDAsMCwgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAg
ICAgICAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLCAgMCwwLDAsMCwwLDAsMCww
LDAsMCwwLDAsMCwwLDAsMCwKLSAgICAgICAgICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAs
MCwwLDAsICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgICAgICAgICAgMHgx
MCwweDEwLDB4MTAsMHgxMCwweDEwLDB4MTAsMHgxMCwweDEwLDB4MTAsMHgxMCwweDEwLDB4MTAs
MHgxMCwweDEwLDB4MTAsMHgxMCwKLSAgICAgICAgICAgIDB4NDAsMHg0MCwweDQwLDB4NDAsMHg0
MCwweDQwLDB4NDAsMHg0MCwweDQwLDB4NDAsMHg0MCwweDQwLDB4NDAsMHg0MCwweDQwLDB4NDAs
Ci0gICAgICAgICAgICAweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgy
MCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLAotICAgICAgICAgICAgMHgyMCww
eDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgy
MCwweDIwLDB4MjAsMHgyMCwKLSAgICAgICAgICAgIDgsOCwyLDIsMiwyLDIsMiwyLDIsMiwyLDIs
MiwyLDIsICAyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLAotICAgICAgICAgICAgMTAs
MywzLDMsMywzLDMsMywzLDMsMywzLDMsNCwzLDMsIDExLDYsNiw2LDUsOCw4LDgsOCw4LDgsOCw4
LDgsOCw4LAotICAgICAgICB9OwotICAgICAgICByZXR1cm4gdHlwZVtjXTsKLSAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtPgotICAgIHN0YXRpYyBDaGFyVHlw
ZSBUYWtlQk9NKElucHV0Qnl0ZVN0cmVhbSYgaXMpIHsKLSAgICAgICAgUkFQSURKU09OX1NUQVRJ
Q19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOwotICAg
ICAgICBDaCBjID0gVGFrZShpcyk7Ci0gICAgICAgIGlmICgodW5zaWduZWQgY2hhciljICE9IDB4
RUZ1KSByZXR1cm4gYzsKLSAgICAgICAgYyA9IGlzLlRha2UoKTsKLSAgICAgICAgaWYgKCh1bnNp
Z25lZCBjaGFyKWMgIT0gMHhCQnUpIHJldHVybiBjOwotICAgICAgICBjID0gaXMuVGFrZSgpOwot
ICAgICAgICBpZiAoKHVuc2lnbmVkIGNoYXIpYyAhPSAweEJGdSkgcmV0dXJuIGM7Ci0gICAgICAg
IGMgPSBpcy5UYWtlKCk7Ci0gICAgICAgIHJldHVybiBjOwotICAgIH0KLQotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW0+Ci0gICAgc3RhdGljIENoIFRha2UoSW5wdXRCeXRl
U3RyZWFtJiBpcykgewotICAgICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlw
ZW5hbWUgSW5wdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7Ci0gICAgICAgIHJldHVybiBpcy5UYWtl
KCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW0+Ci0g
ICAgc3RhdGljIHZvaWQgUHV0Qk9NKE91dHB1dEJ5dGVTdHJlYW0mIG9zKSB7Ci0gICAgICAgIFJB
UElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtOjpD
aCkgPT0gMSk7Ci0gICAgICAgIG9zLlB1dCgweEVGdSk7IG9zLlB1dCgweEJCdSk7IG9zLlB1dCgw
eEJGdSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW0+
Ci0gICAgc3RhdGljIHZvaWQgUHV0KE91dHB1dEJ5dGVTdHJlYW0mIG9zLCBDaCBjKSB7Ci0gICAg
ICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBPdXRwdXRCeXRlU3Ry
ZWFtOjpDaCkgPT0gMSk7Ci0gICAgICAgIG9zLlB1dChzdGF0aWNfY2FzdDx0eXBlbmFtZSBPdXRw
dXRCeXRlU3RyZWFtOjpDaD4oYykpOwotICAgIH0KLX07Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KLS8vIFVURjE2Ci0KLS8vISBVVEYtMTYgZW5jb2RpbmcuCi0vKiEgaHR0cDovL2VuLndpa2lw
ZWRpYS5vcmcvd2lraS9VVEYtMTYKLSAgICBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMy
NzgxCi0gICAgXHRwYXJhbSBDaGFyVHlwZSBUeXBlIGZvciBzdG9yaW5nIDE2LWJpdCBVVEYtMTYg
ZGF0YS4gRGVmYXVsdCBpcyB3Y2hhcl90LiBDKysxMSBtYXkgdXNlIGNoYXIxNl90IGluc3RlYWQu
Ci0gICAgXG5vdGUgaW1wbGVtZW50cyBFbmNvZGluZyBjb25jZXB0Ci0KLSAgICBcbm90ZSBGb3Ig
aW4tbWVtb3J5IGFjY2Vzcywgbm8gbmVlZCB0byBjb25jZXJuIGVuZGlhbm5lc3MuIFRoZSBjb2Rl
IHVuaXRzIGFuZCBjb2RlIHBvaW50cyBhcmUgcmVwcmVzZW50ZWQgYnkgQ1BVJ3MgZW5kaWFubmVz
cy4KLSAgICBGb3Igc3RyZWFtaW5nLCB1c2UgVVRGMTZMRSBhbmQgVVRGMTZCRSwgd2hpY2ggaGFu
ZGxlIGVuZGlhbm5lc3MuCi0qLwotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGUgPSB3Y2hhcl90
Pgotc3RydWN0IFVURjE2IHsKLSAgICB0eXBlZGVmIENoYXJUeXBlIENoOwotICAgIFJBUElESlNP
Tl9TVEFUSUNfQVNTRVJUKHNpemVvZihDaCkgPj0gMik7Ci0KLSAgICBlbnVtIHsgc3VwcG9ydFVu
aWNvZGUgPSAxIH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdXRwdXRTdHJlYW0+Ci0gICAg
c3RhdGljIHZvaWQgRW5jb2RlKE91dHB1dFN0cmVhbSYgb3MsIHVuc2lnbmVkIGNvZGVwb2ludCkg
ewotICAgICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0
U3RyZWFtOjpDaCkgPj0gMik7Ci0gICAgICAgIGlmIChjb2RlcG9pbnQgPD0gMHhGRkZGKSB7Ci0g
ICAgICAgICAgICBSQVBJREpTT05fQVNTRVJUKGNvZGVwb2ludCA8IDB4RDgwMCB8fCBjb2RlcG9p
bnQgPiAweERGRkYpOyAvLyBDb2RlIHBvaW50IGl0c2VsZiBjYW5ub3QgYmUgc3Vycm9nYXRlIHBh
aXIgCi0gICAgICAgICAgICBvcy5QdXQoc3RhdGljX2Nhc3Q8dHlwZW5hbWUgT3V0cHV0U3RyZWFt
OjpDaD4oY29kZXBvaW50KSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICBSQVBJREpTT05fQVNTRVJUKGNvZGVwb2ludCA8PSAweDEwRkZGRik7Ci0gICAgICAgICAgICB1
bnNpZ25lZCB2ID0gY29kZXBvaW50IC0gMHgxMDAwMDsKLSAgICAgICAgICAgIG9zLlB1dChzdGF0
aWNfY2FzdDx0eXBlbmFtZSBPdXRwdXRTdHJlYW06OkNoPigodiA+PiAxMCkgfCAweEQ4MDApKTsK
LSAgICAgICAgICAgIG9zLlB1dCgodiAmIDB4M0ZGKSB8IDB4REMwMCk7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRTdHJlYW0+Ci0gICAgc3RhdGljIGJv
b2wgRGVjb2RlKElucHV0U3RyZWFtJiBpcywgdW5zaWduZWQqIGNvZGVwb2ludCkgewotICAgICAg
ICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgSW5wdXRTdHJlYW06OkNo
KSA+PSAyKTsKLSAgICAgICAgQ2ggYyA9IGlzLlRha2UoKTsKLSAgICAgICAgaWYgKGMgPCAweEQ4
MDAgfHwgYyA+IDB4REZGRikgewotICAgICAgICAgICAgKmNvZGVwb2ludCA9IGM7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjIDw9IDB4REJG
RikgewotICAgICAgICAgICAgKmNvZGVwb2ludCA9IChjICYgMHgzRkYpIDw8IDEwOwotICAgICAg
ICAgICAgYyA9IGlzLlRha2UoKTsKLSAgICAgICAgICAgICpjb2RlcG9pbnQgfD0gKGMgJiAweDNG
Rik7Ci0gICAgICAgICAgICAqY29kZXBvaW50ICs9IDB4MTAwMDA7Ci0gICAgICAgICAgICByZXR1
cm4gYyA+PSAweERDMDAgJiYgYyA8PSAweERGRkY7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dFN0cmVhbSwgdHlw
ZW5hbWUgT3V0cHV0U3RyZWFtPgotICAgIHN0YXRpYyBib29sIFZhbGlkYXRlKElucHV0U3RyZWFt
JiBpcywgT3V0cHV0U3RyZWFtJiBvcykgewotICAgICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VS
VChzaXplb2YodHlwZW5hbWUgSW5wdXRTdHJlYW06OkNoKSA+PSAyKTsKLSAgICAgICAgUkFQSURK
U09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIE91dHB1dFN0cmVhbTo6Q2gpID49IDIp
OwotICAgICAgICBDaCBjOwotICAgICAgICBvcy5QdXQoYyA9IGlzLlRha2UoKSk7Ci0gICAgICAg
IGlmIChjIDwgMHhEODAwIHx8IGMgPiAweERGRkYpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgZWxzZSBpZiAoYyA8PSAweERCRkYpIHsKLSAgICAgICAgICAgIG9zLlB1dChjID0g
aXMuVGFrZSgpKTsKLSAgICAgICAgICAgIHJldHVybiBjID49IDB4REMwMCAmJiBjIDw9IDB4REZG
RjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfTsKLQotLy8hIFVU
Ri0xNiBsaXR0bGUgZW5kaWFuIGVuY29kaW5nLgotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGUg
PSB3Y2hhcl90Pgotc3RydWN0IFVURjE2TEUgOiBVVEYxNjxDaGFyVHlwZT4gewotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW0+Ci0gICAgc3RhdGljIENoYXJUeXBlIFRha2VC
T00oSW5wdXRCeXRlU3RyZWFtJiBpcykgewotICAgICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VS
VChzaXplb2YodHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7Ci0gICAgICAgIENo
YXJUeXBlIGMgPSBUYWtlKGlzKTsKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBzaG9ydCljID09
IDB4RkVGRnUgPyBUYWtlKGlzKSA6IGM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IElucHV0Qnl0ZVN0cmVhbT4KLSAgICBzdGF0aWMgQ2hhclR5cGUgVGFrZShJbnB1dEJ5dGVTdHJl
YW0mIGlzKSB7Ci0gICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFt
ZSBJbnB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKLSAgICAgICAgQ2hhclR5cGUgYyA9ICh1bnNp
Z25lZCBjaGFyKWlzLlRha2UoKTsKLSAgICAgICAgYyB8PSAodW5zaWduZWQgY2hhcilpcy5UYWtl
KCkgPDwgODsKLSAgICAgICAgcmV0dXJuIGM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIE91dHB1dEJ5dGVTdHJlYW0+Ci0gICAgc3RhdGljIHZvaWQgUHV0Qk9NKE91dHB1dEJ5dGVT
dHJlYW0mIG9zKSB7Ci0gICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBl
bmFtZSBPdXRwdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7Ci0gICAgICAgIG9zLlB1dCgweEZGdSk7
IG9zLlB1dCgweEZFdSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE91dHB1dEJ5
dGVTdHJlYW0+Ci0gICAgc3RhdGljIHZvaWQgUHV0KE91dHB1dEJ5dGVTdHJlYW0mIG9zLCBDaGFy
VHlwZSBjKSB7Ci0gICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFt
ZSBPdXRwdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7Ci0gICAgICAgIG9zLlB1dChjICYgMHhGRnUp
OwotICAgICAgICBvcy5QdXQoKGMgPj4gOCkgJiAweEZGdSk7Ci0gICAgfQotfTsKLQotLy8hIFVU
Ri0xNiBiaWcgZW5kaWFuIGVuY29kaW5nLgotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGUgPSB3
Y2hhcl90Pgotc3RydWN0IFVURjE2QkUgOiBVVEYxNjxDaGFyVHlwZT4gewotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW0+Ci0gICAgc3RhdGljIENoYXJUeXBlIFRha2VCT00o
SW5wdXRCeXRlU3RyZWFtJiBpcykgewotICAgICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChz
aXplb2YodHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7Ci0gICAgICAgIENoYXJU
eXBlIGMgPSBUYWtlKGlzKTsKLSAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBzaG9ydCljID09IDB4
RkVGRnUgPyBUYWtlKGlzKSA6IGM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIElu
cHV0Qnl0ZVN0cmVhbT4KLSAgICBzdGF0aWMgQ2hhclR5cGUgVGFrZShJbnB1dEJ5dGVTdHJlYW0m
IGlzKSB7Ci0gICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBJ
bnB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKLSAgICAgICAgQ2hhclR5cGUgYyA9ICh1bnNpZ25l
ZCBjaGFyKWlzLlRha2UoKSA8PCA4OwotICAgICAgICBjIHw9ICh1bnNpZ25lZCBjaGFyKWlzLlRh
a2UoKTsKLSAgICAgICAgcmV0dXJuIGM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IE91dHB1dEJ5dGVTdHJlYW0+Ci0gICAgc3RhdGljIHZvaWQgUHV0Qk9NKE91dHB1dEJ5dGVTdHJl
YW0mIG9zKSB7Ci0gICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFt
ZSBPdXRwdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7Ci0gICAgICAgIG9zLlB1dCgweEZFdSk7IG9z
LlB1dCgweEZGdSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE91dHB1dEJ5dGVT
dHJlYW0+Ci0gICAgc3RhdGljIHZvaWQgUHV0KE91dHB1dEJ5dGVTdHJlYW0mIG9zLCBDaGFyVHlw
ZSBjKSB7Ci0gICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBP
dXRwdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7Ci0gICAgICAgIG9zLlB1dCgoYyA+PiA4KSAmIDB4
RkZ1KTsKLSAgICAgICAgb3MuUHV0KGMgJiAweEZGdSk7Ci0gICAgfQotfTsKLQotLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwotLy8gVVRGMzIKLQotLy8hIFVURi0zMiBlbmNvZGluZy4gCi0vKiEgaHR0
cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9VVEYtMzIKLSAgICBcdHBhcmFtIENoYXJUeXBlIFR5
cGUgZm9yIHN0b3JpbmcgMzItYml0IFVURi0zMiBkYXRhLiBEZWZhdWx0IGlzIHVuc2lnbmVkLiBD
KysxMSBtYXkgdXNlIGNoYXIzMl90IGluc3RlYWQuCi0gICAgXG5vdGUgaW1wbGVtZW50cyBFbmNv
ZGluZyBjb25jZXB0Ci0KLSAgICBcbm90ZSBGb3IgaW4tbWVtb3J5IGFjY2Vzcywgbm8gbmVlZCB0
byBjb25jZXJuIGVuZGlhbm5lc3MuIFRoZSBjb2RlIHVuaXRzIGFuZCBjb2RlIHBvaW50cyBhcmUg
cmVwcmVzZW50ZWQgYnkgQ1BVJ3MgZW5kaWFubmVzcy4KLSAgICBGb3Igc3RyZWFtaW5nLCB1c2Ug
VVRGMzJMRSBhbmQgVVRGMzJCRSwgd2hpY2ggaGFuZGxlIGVuZGlhbm5lc3MuCi0qLwotdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhclR5cGUgPSB1bnNpZ25lZD4KLXN0cnVjdCBVVEYzMiB7Ci0gICAgdHlw
ZWRlZiBDaGFyVHlwZSBDaDsKLSAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YoQ2gp
ID49IDQpOwotCi0gICAgZW51bSB7IHN1cHBvcnRVbmljb2RlID0gMSB9OwotCi0gICAgdGVtcGxh
dGU8dHlwZW5hbWUgT3V0cHV0U3RyZWFtPgotICAgIHN0YXRpYyB2b2lkIEVuY29kZShPdXRwdXRT
dHJlYW0mIG9zLCB1bnNpZ25lZCBjb2RlcG9pbnQpIHsKLSAgICAgICAgUkFQSURKU09OX1NUQVRJ
Q19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIE91dHB1dFN0cmVhbTo6Q2gpID49IDQpOwotICAgICAg
ICBSQVBJREpTT05fQVNTRVJUKGNvZGVwb2ludCA8PSAweDEwRkZGRik7Ci0gICAgICAgIG9zLlB1
dChjb2RlcG9pbnQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dFN0cmVh
bT4KLSAgICBzdGF0aWMgYm9vbCBEZWNvZGUoSW5wdXRTdHJlYW0mIGlzLCB1bnNpZ25lZCogY29k
ZXBvaW50KSB7Ci0gICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFt
ZSBJbnB1dFN0cmVhbTo6Q2gpID49IDQpOwotICAgICAgICBDaCBjID0gaXMuVGFrZSgpOwotICAg
ICAgICAqY29kZXBvaW50ID0gYzsKLSAgICAgICAgcmV0dXJuIGMgPD0gMHgxMEZGRkY7Ci0gICAg
fQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0U3RyZWFtLCB0eXBlbmFtZSBPdXRwdXRT
dHJlYW0+Ci0gICAgc3RhdGljIGJvb2wgVmFsaWRhdGUoSW5wdXRTdHJlYW0mIGlzLCBPdXRwdXRT
dHJlYW0mIG9zKSB7Ci0gICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBl
bmFtZSBJbnB1dFN0cmVhbTo6Q2gpID49IDQpOwotICAgICAgICBDaCBjOwotICAgICAgICBvcy5Q
dXQoYyA9IGlzLlRha2UoKSk7Ci0gICAgICAgIHJldHVybiBjIDw9IDB4MTBGRkZGOwotICAgIH0K
LX07Ci0KLS8vISBVVEYtMzIgbGl0dGxlIGVuZGlhbiBlbm9jb2RpbmcuCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyVHlwZSA9IHVuc2lnbmVkPgotc3RydWN0IFVURjMyTEUgOiBVVEYzMjxDaGFyVHlw
ZT4gewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW0+Ci0gICAgc3RhdGlj
IENoYXJUeXBlIFRha2VCT00oSW5wdXRCeXRlU3RyZWFtJiBpcykgewotICAgICAgICBSQVBJREpT
T05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtOjpDaCkgPT0g
MSk7Ci0gICAgICAgIENoYXJUeXBlIGMgPSBUYWtlKGlzKTsKLSAgICAgICAgcmV0dXJuICh1bnNp
Z25lZCljID09IDB4MDAwMEZFRkZ1ID8gVGFrZShpcykgOiBjOwotICAgIH0KLQotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW0+Ci0gICAgc3RhdGljIENoYXJUeXBlIFRha2Uo
SW5wdXRCeXRlU3RyZWFtJiBpcykgewotICAgICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChz
aXplb2YodHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7Ci0gICAgICAgIENoYXJU
eXBlIGMgPSAodW5zaWduZWQgY2hhcilpcy5UYWtlKCk7Ci0gICAgICAgIGMgfD0gKHVuc2lnbmVk
IGNoYXIpaXMuVGFrZSgpIDw8IDg7Ci0gICAgICAgIGMgfD0gKHVuc2lnbmVkIGNoYXIpaXMuVGFr
ZSgpIDw8IDE2OwotICAgICAgICBjIHw9ICh1bnNpZ25lZCBjaGFyKWlzLlRha2UoKSA8PCAyNDsK
LSAgICAgICAgcmV0dXJuIGM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE91dHB1
dEJ5dGVTdHJlYW0+Ci0gICAgc3RhdGljIHZvaWQgUHV0Qk9NKE91dHB1dEJ5dGVTdHJlYW0mIG9z
KSB7Ci0gICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBPdXRw
dXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7Ci0gICAgICAgIG9zLlB1dCgweEZGdSk7IG9zLlB1dCgw
eEZFdSk7IG9zLlB1dCgweDAwdSk7IG9zLlB1dCgweDAwdSk7Ci0gICAgfQotCi0gICAgdGVtcGxh
dGUgPHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW0+Ci0gICAgc3RhdGljIHZvaWQgUHV0KE91dHB1
dEJ5dGVTdHJlYW0mIG9zLCBDaGFyVHlwZSBjKSB7Ci0gICAgICAgIFJBUElESlNPTl9TVEFUSUNf
QVNTRVJUKHNpemVvZih0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7Ci0gICAg
ICAgIG9zLlB1dChjICYgMHhGRnUpOwotICAgICAgICBvcy5QdXQoKGMgPj4gOCkgJiAweEZGdSk7
Ci0gICAgICAgIG9zLlB1dCgoYyA+PiAxNikgJiAweEZGdSk7Ci0gICAgICAgIG9zLlB1dCgoYyA+
PiAyNCkgJiAweEZGdSk7Ci0gICAgfQotfTsKLQotLy8hIFVURi0zMiBiaWcgZW5kaWFuIGVuY29k
aW5nLgotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGUgPSB1bnNpZ25lZD4KLXN0cnVjdCBVVEYz
MkJFIDogVVRGMzI8Q2hhclR5cGU+IHsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRCeXRl
U3RyZWFtPgotICAgIHN0YXRpYyBDaGFyVHlwZSBUYWtlQk9NKElucHV0Qnl0ZVN0cmVhbSYgaXMp
IHsKLSAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIElucHV0
Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOwotICAgICAgICBDaGFyVHlwZSBjID0gVGFrZShpcyk7Ci0g
ICAgICAgIHJldHVybiAodW5zaWduZWQpYyA9PSAweDAwMDBGRUZGdSA/IFRha2UoaXMpIDogYzsg
Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KLSAgICBz
dGF0aWMgQ2hhclR5cGUgVGFrZShJbnB1dEJ5dGVTdHJlYW0mIGlzKSB7Ci0gICAgICAgIFJBUElE
SlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW06OkNoKSA9
PSAxKTsKLSAgICAgICAgQ2hhclR5cGUgYyA9ICh1bnNpZ25lZCBjaGFyKWlzLlRha2UoKSA8PCAy
NDsKLSAgICAgICAgYyB8PSAodW5zaWduZWQgY2hhcilpcy5UYWtlKCkgPDwgMTY7Ci0gICAgICAg
IGMgfD0gKHVuc2lnbmVkIGNoYXIpaXMuVGFrZSgpIDw8IDg7Ci0gICAgICAgIGMgfD0gKHVuc2ln
bmVkIGNoYXIpaXMuVGFrZSgpOwotICAgICAgICByZXR1cm4gYzsKLSAgICB9Ci0KLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbT4KLSAgICBzdGF0aWMgdm9pZCBQdXRCT00o
T3V0cHV0Qnl0ZVN0cmVhbSYgb3MpIHsKLSAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQo
c2l6ZW9mKHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKLSAgICAgICAgb3Mu
UHV0KDB4MDB1KTsgb3MuUHV0KDB4MDB1KTsgb3MuUHV0KDB4RkV1KTsgb3MuUHV0KDB4RkZ1KTsK
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbT4KLSAgICBz
dGF0aWMgdm9pZCBQdXQoT3V0cHV0Qnl0ZVN0cmVhbSYgb3MsIENoYXJUeXBlIGMpIHsKLSAgICAg
ICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJl
YW06OkNoKSA9PSAxKTsKLSAgICAgICAgb3MuUHV0KChjID4+IDI0KSAmIDB4RkZ1KTsKLSAgICAg
ICAgb3MuUHV0KChjID4+IDE2KSAmIDB4RkZ1KTsKLSAgICAgICAgb3MuUHV0KChjID4+IDgpICYg
MHhGRnUpOwotICAgICAgICBvcy5QdXQoYyAmIDB4RkZ1KTsKLSAgICB9Ci19OwotCi0vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCi0vLyBBU0NJSQotCi0vLyEgQVNDSUkgZW5jb2RpbmcuCi0vKiEgaHR0
cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BU0NJSQotICAgIFx0cGFyYW0gQ2hhclR5cGUgQ29k
ZSB1bml0IGZvciBzdG9yaW5nIDctYml0IEFTQ0lJIGRhdGEuIERlZmF1bHQgaXMgY2hhci4KLSAg
ICBcbm90ZSBpbXBsZW1lbnRzIEVuY29kaW5nIGNvbmNlcHQKLSovCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyVHlwZSA9IGNoYXI+Ci1zdHJ1Y3QgQVNDSUkgewotICAgIHR5cGVkZWYgQ2hhclR5cGUg
Q2g7Ci0KLSAgICBlbnVtIHsgc3VwcG9ydFVuaWNvZGUgPSAwIH07Ci0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPdXRwdXRTdHJlYW0+Ci0gICAgc3RhdGljIHZvaWQgRW5jb2RlKE91dHB1dFN0cmVh
bSYgb3MsIHVuc2lnbmVkIGNvZGVwb2ludCkgewotICAgICAgICBSQVBJREpTT05fQVNTRVJUKGNv
ZGVwb2ludCA8PSAweDdGKTsKLSAgICAgICAgb3MuUHV0KHN0YXRpY19jYXN0PENoPihjb2RlcG9p
bnQgJiAweEZGKSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0U3RyZWFt
PgotICAgIHN0YXRpYyBib29sIERlY29kZShJbnB1dFN0cmVhbSYgaXMsIHVuc2lnbmVkKiBjb2Rl
cG9pbnQpIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oaXMuVGFrZSgpKTsKLSAgICAgICAgKmNvZGVwb2ludCA9IGM7Ci0gICAgICAgIHJldHVy
biBjIDw9IDBYN0Y7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0U3RyZWFt
LCB0eXBlbmFtZSBPdXRwdXRTdHJlYW0+Ci0gICAgc3RhdGljIGJvb2wgVmFsaWRhdGUoSW5wdXRT
dHJlYW0mIGlzLCBPdXRwdXRTdHJlYW0mIG9zKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9
IGlzLlRha2UoKTsKLSAgICAgICAgb3MuUHV0KGMpOwotICAgICAgICByZXR1cm4gYyA8PSAweDdG
OwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW0+Ci0gICAg
c3RhdGljIENoYXJUeXBlIFRha2VCT00oSW5wdXRCeXRlU3RyZWFtJiBpcykgewotICAgICAgICBS
QVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtOjpD
aCkgPT0gMSk7Ci0gICAgICAgIENoIGMgPSBUYWtlKGlzKTsKLSAgICAgICAgcmV0dXJuIGM7Ci0g
ICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KLSAgICBzdGF0
aWMgQ2ggVGFrZShJbnB1dEJ5dGVTdHJlYW0mIGlzKSB7Ci0gICAgICAgIFJBUElESlNPTl9TVEFU
SUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKLSAg
ICAgICAgcmV0dXJuIGlzLlRha2UoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
T3V0cHV0Qnl0ZVN0cmVhbT4KLSAgICBzdGF0aWMgdm9pZCBQdXRCT00oT3V0cHV0Qnl0ZVN0cmVh
bSYgb3MpIHsKLSAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1l
IE91dHB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKLSAgICAgICAgKHZvaWQpb3M7Ci0gICAgfQot
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW0+Ci0gICAgc3RhdGljIHZv
aWQgUHV0KE91dHB1dEJ5dGVTdHJlYW0mIG9zLCBDaCBjKSB7Ci0gICAgICAgIFJBUElESlNPTl9T
VEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7
Ci0gICAgICAgIG9zLlB1dChzdGF0aWNfY2FzdDx0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtOjpD
aD4oYykpOwotICAgIH0KLX07Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIEF1dG9VVEYK
LQotLy8hIFJ1bnRpbWUtc3BlY2lmaWVkIFVURiBlbmNvZGluZyB0eXBlIG9mIGEgc3RyZWFtLgot
ZW51bSBVVEZUeXBlIHsKLSAgICBrVVRGOCA9IDAsICAgICAgLy8hPCBVVEYtOC4KLSAgICBrVVRG
MTZMRSA9IDEsICAgLy8hPCBVVEYtMTYgbGl0dGxlIGVuZGlhbi4KLSAgICBrVVRGMTZCRSA9IDIs
ICAgLy8hPCBVVEYtMTYgYmlnIGVuZGlhbi4KLSAgICBrVVRGMzJMRSA9IDMsICAgLy8hPCBVVEYt
MzIgbGl0dGxlIGVuZGlhbi4KLSAgICBrVVRGMzJCRSA9IDQgICAgLy8hPCBVVEYtMzIgYmlnIGVu
ZGlhbi4KLX07Ci0KLS8vISBEeW5hbWljYWxseSBzZWxlY3QgZW5jb2RpbmcgYWNjb3JkaW5nIHRv
IHN0cmVhbSdzIHJ1bnRpbWUtc3BlY2lmaWVkIFVURiBlbmNvZGluZyB0eXBlLgotLyohIFxub3Rl
IFRoaXMgY2xhc3MgY2FuIGJlIHVzZWQgd2l0aCBBdXRvVVRGSW5wdXR0U3RyZWFtIGFuZCBBdXRv
VVRGT3V0cHV0U3RyZWFtLCB3aGljaCBwcm92aWRlcyBHZXRUeXBlKCkuCi0qLwotdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhclR5cGU+Ci1zdHJ1Y3QgQXV0b1VURiB7Ci0gICAgdHlwZWRlZiBDaGFyVHlw
ZSBDaDsKLQotICAgIGVudW0geyBzdXBwb3J0VW5pY29kZSA9IDEgfTsKLQotI2RlZmluZSBSQVBJ
REpTT05fRU5DT0RJTkdTX0ZVTkMoeCkgVVRGODxDaD46OngsIFVURjE2TEU8Q2g+Ojp4LCBVVEYx
NkJFPENoPjo6eCwgVVRGMzJMRTxDaD46OngsIFVURjMyQkU8Q2g+Ojp4Ci0KLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBPdXRwdXRTdHJlYW0+Ci0gICAgUkFQSURKU09OX0ZPUkNFSU5MSU5FIHN0YXRp
YyB2b2lkIEVuY29kZShPdXRwdXRTdHJlYW0mIG9zLCB1bnNpZ25lZCBjb2RlcG9pbnQpIHsKLSAg
ICAgICAgdHlwZWRlZiB2b2lkICgqRW5jb2RlRnVuYykoT3V0cHV0U3RyZWFtJiwgdW5zaWduZWQp
OwotICAgICAgICBzdGF0aWMgY29uc3QgRW5jb2RlRnVuYyBmW10gPSB7IFJBUElESlNPTl9FTkNP
RElOR1NfRlVOQyhFbmNvZGUpIH07Ci0gICAgICAgICgqZltvcy5HZXRUeXBlKCldKShvcywgY29k
ZXBvaW50KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRTdHJlYW0+Ci0g
ICAgUkFQSURKU09OX0ZPUkNFSU5MSU5FIHN0YXRpYyBib29sIERlY29kZShJbnB1dFN0cmVhbSYg
aXMsIHVuc2lnbmVkKiBjb2RlcG9pbnQpIHsKLSAgICAgICAgdHlwZWRlZiBib29sICgqRGVjb2Rl
RnVuYykoSW5wdXRTdHJlYW0mLCB1bnNpZ25lZCopOwotICAgICAgICBzdGF0aWMgY29uc3QgRGVj
b2RlRnVuYyBmW10gPSB7IFJBUElESlNPTl9FTkNPRElOR1NfRlVOQyhEZWNvZGUpIH07Ci0gICAg
ICAgIHJldHVybiAoKmZbaXMuR2V0VHlwZSgpXSkoaXMsIGNvZGVwb2ludCk7Ci0gICAgfQotCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0U3RyZWFtLCB0eXBlbmFtZSBPdXRwdXRTdHJlYW0+
Ci0gICAgUkFQSURKU09OX0ZPUkNFSU5MSU5FIHN0YXRpYyBib29sIFZhbGlkYXRlKElucHV0U3Ry
ZWFtJiBpcywgT3V0cHV0U3RyZWFtJiBvcykgewotICAgICAgICB0eXBlZGVmIGJvb2wgKCpWYWxp
ZGF0ZUZ1bmMpKElucHV0U3RyZWFtJiwgT3V0cHV0U3RyZWFtJik7Ci0gICAgICAgIHN0YXRpYyBj
b25zdCBWYWxpZGF0ZUZ1bmMgZltdID0geyBSQVBJREpTT05fRU5DT0RJTkdTX0ZVTkMoVmFsaWRh
dGUpIH07Ci0gICAgICAgIHJldHVybiAoKmZbaXMuR2V0VHlwZSgpXSkoaXMsIG9zKTsKLSAgICB9
Ci0KLSN1bmRlZiBSQVBJREpTT05fRU5DT0RJTkdTX0ZVTkMKLX07Ci0KLS8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KLS8vIFRyYW5zY29kZXIKLQotLy8hIEVuY29kaW5nIGNvbnZlcnNpb24uCi10ZW1w
bGF0ZTx0eXBlbmFtZSBTb3VyY2VFbmNvZGluZywgdHlwZW5hbWUgVGFyZ2V0RW5jb2Rpbmc+Ci1z
dHJ1Y3QgVHJhbnNjb2RlciB7Ci0gICAgLy8hIFRha2Ugb25lIFVuaWNvZGUgY29kZXBvaW50IGZy
b20gc291cmNlIGVuY29kaW5nLCBjb252ZXJ0IGl0IHRvIHRhcmdldCBlbmNvZGluZyBhbmQgcHV0
IGl0IHRvIHRoZSBvdXRwdXQgc3RyZWFtLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0U3Ry
ZWFtLCB0eXBlbmFtZSBPdXRwdXRTdHJlYW0+Ci0gICAgUkFQSURKU09OX0ZPUkNFSU5MSU5FIHN0
YXRpYyBib29sIFRyYW5zY29kZShJbnB1dFN0cmVhbSYgaXMsIE91dHB1dFN0cmVhbSYgb3MpIHsK
LSAgICAgICAgdW5zaWduZWQgY29kZXBvaW50OwotICAgICAgICBpZiAoIVNvdXJjZUVuY29kaW5n
OjpEZWNvZGUoaXMsICZjb2RlcG9pbnQpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICBUYXJnZXRFbmNvZGluZzo6RW5jb2RlKG9zLCBjb2RlcG9pbnQpOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyEgVmFsaWRhdGUgb25lIFVuaWNvZGUgY29kZXBvaW50
IGZyb20gYW4gZW5jb2RlZCBzdHJlYW0uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRTdHJl
YW0sIHR5cGVuYW1lIE91dHB1dFN0cmVhbT4KLSAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgc3Rh
dGljIGJvb2wgVmFsaWRhdGUoSW5wdXRTdHJlYW0mIGlzLCBPdXRwdXRTdHJlYW0mIG9zKSB7Ci0g
ICAgICAgIHJldHVybiBUcmFuc2NvZGUoaXMsIG9zKTsgICAvLyBTaW5jZSBzb3VyY2UvdGFyZ2V0
IGVuY29kaW5nIGlzIGRpZmZlcmVudCwgbXVzdCB0cmFuc2NvZGUuCi0gICAgfQotfTsKLQotLy8h
IFNwZWNpYWxpemF0aW9uIG9mIFRyYW5zY29kZXIgd2l0aCBzYW1lIHNvdXJjZSBhbmQgdGFyZ2V0
IGVuY29kaW5nLgotdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2Rpbmc+Ci1zdHJ1Y3QgVHJhbnNjb2Rl
cjxFbmNvZGluZywgRW5jb2Rpbmc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dFN0cmVh
bSwgdHlwZW5hbWUgT3V0cHV0U3RyZWFtPgotICAgIFJBUElESlNPTl9GT1JDRUlOTElORSBzdGF0
aWMgYm9vbCBUcmFuc2NvZGUoSW5wdXRTdHJlYW0mIGlzLCBPdXRwdXRTdHJlYW0mIG9zKSB7Ci0g
ICAgICAgIG9zLlB1dChpcy5UYWtlKCkpOyAgLy8gSnVzdCBjb3B5IG9uZSBjb2RlIHVuaXQuIFRo
aXMgc2VtYW50aWMgaXMgZGlmZmVyZW50IGZyb20gcHJpbWFyeSB0ZW1wbGF0ZSBjbGFzcy4KLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIElu
cHV0U3RyZWFtLCB0eXBlbmFtZSBPdXRwdXRTdHJlYW0+Ci0gICAgUkFQSURKU09OX0ZPUkNFSU5M
SU5FIHN0YXRpYyBib29sIFZhbGlkYXRlKElucHV0U3RyZWFtJiBpcywgT3V0cHV0U3RyZWFtJiBv
cykgewotICAgICAgICByZXR1cm4gRW5jb2Rpbmc6OlZhbGlkYXRlKGlzLCBvcyk7ICAvLyBzb3Vy
Y2UvdGFyZ2V0IGVuY29kaW5nIGFyZSB0aGUgc2FtZQotICAgIH0KLX07Ci0KLVJBUElESlNPTl9O
QU1FU1BBQ0VfRU5ECi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSB8fCBkZWZpbmVkKF9NU1ZfVkVS
KQotUkFQSURKU09OX0RJQUdfUE9QCi0jZW5kaWYKLQotI2VuZGlmIC8vIFJBUElESlNPTl9FTkNP
RElOR1NfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90
aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZXJyb3IvZW4uaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVk
ZS9yYXBpZGpzb24vZXJyb3IvZW4uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE3
MTE4MzNlMWVmMWViZTEzOTJhM2E1NjM5MmVlYWI0NDkxOGUxOC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2Vycm9yL2VuLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWls
byBZaXAKLS8vCi0vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn
ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0vLyBvZiB0aGlzIHNvZnR3YXJlIGFu
ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVh
bAotLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo
b3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl
LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotLy8gY29waWVz
IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3
YXJlIGlzCi0vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zOgotLy8KLS8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl
cm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0vLyBhbGwgY29waWVzIG9yIHN1
YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLS8vCi0vLyBUSEUgU09GVFdBUkUg
SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT
UyBPUgotLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLS8vIEFVVEhP
UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg
T1IgT1RIRVIKLS8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs
IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi0vLyBPVVQgT0YgT1IgSU4gQ09OTkVD
VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCi0v
LyBUSEUgU09GVFdBUkUuCi0KLSNpZm5kZWYgUkFQSURKU09OX0VSUk9SX0VOX0hfXwotI2RlZmlu
ZSBSQVBJREpTT05fRVJST1JfRU5fSF9fCi0KLSNpbmNsdWRlICJlcnJvci5oIgotCi1SQVBJREpT
T05fTkFNRVNQQUNFX0JFR0lOCi0KLS8vISBNYXBzIGVycm9yIGNvZGUgb2YgcGFyc2luZyBpbnRv
IGVycm9yIG1lc3NhZ2UuCi0vKiEKLSAgICBcaW5ncm91cCBSQVBJREpTT05fRVJST1JTCi0gICAg
XHBhcmFtIHBhcnNlRXJyb3JDb2RlIEVycm9yIGNvZGUgb2J0YWluZWQgaW4gcGFyc2luZy4KLSAg
ICBccmV0dXJuIHRoZSBlcnJvciBtZXNzYWdlLgotICAgIFxub3RlIFVzZXIgY2FuIG1ha2UgYSBj
b3B5IG9mIHRoaXMgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbi4KLSAgICAgICAgVXNpbmcgc3dp
dGNoLWNhc2UgaXMgc2FmZXIgZm9yIGZ1dHVyZSBtb2RpZmljYXRpb24gb2YgZXJyb3IgY29kZXMu
Ci0qLwotaW5saW5lIGNvbnN0IFJBUElESlNPTl9FUlJPUl9DSEFSVFlQRSogR2V0UGFyc2VFcnJv
cl9FbihQYXJzZUVycm9yQ29kZSBwYXJzZUVycm9yQ29kZSkgewotICAgIHN3aXRjaCAocGFyc2VF
cnJvckNvZGUpIHsKLSAgICAgICAgY2FzZSBrUGFyc2VFcnJvck5vbmU6ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIFJBUElESlNPTl9FUlJPUl9TVFJJTkcoIk5vIGVycm9yLiIpOwot
Ci0gICAgICAgIGNhc2Uga1BhcnNlRXJyb3JEb2N1bWVudEVtcHR5OiAgICAgICAgICAgICAgICAg
IHJldHVybiBSQVBJREpTT05fRVJST1JfU1RSSU5HKCJUaGUgZG9jdW1lbnQgaXMgZW1wdHkuIik7
Ci0gICAgICAgIGNhc2Uga1BhcnNlRXJyb3JEb2N1bWVudFJvb3ROb3RTaW5ndWxhcjogICAgICAg
IHJldHVybiBSQVBJREpTT05fRVJST1JfU1RSSU5HKCJUaGUgZG9jdW1lbnQgcm9vdCBtdXN0IG5v
dCBmb2xsb3cgYnkgb3RoZXIgdmFsdWVzLiIpOwotICAgIAotICAgICAgICBjYXNlIGtQYXJzZUVy
cm9yVmFsdWVJbnZhbGlkOiAgICAgICAgICAgICAgICAgICByZXR1cm4gUkFQSURKU09OX0VSUk9S
X1NUUklORygiSW52YWxpZCB2YWx1ZS4iKTsKLSAgICAKLSAgICAgICAgY2FzZSBrUGFyc2VFcnJv
ck9iamVjdE1pc3NOYW1lOiAgICAgICAgICAgICAgICAgcmV0dXJuIFJBUElESlNPTl9FUlJPUl9T
VFJJTkcoIk1pc3NpbmcgYSBuYW1lIGZvciBvYmplY3QgbWVtYmVyLiIpOwotICAgICAgICBjYXNl
IGtQYXJzZUVycm9yT2JqZWN0TWlzc0NvbG9uOiAgICAgICAgICAgICAgICByZXR1cm4gUkFQSURK
U09OX0VSUk9SX1NUUklORygiTWlzc2luZyBhIGNvbG9uIGFmdGVyIGEgbmFtZSBvZiBvYmplY3Qg
bWVtYmVyLiIpOwotICAgICAgICBjYXNlIGtQYXJzZUVycm9yT2JqZWN0TWlzc0NvbW1hT3JDdXJs
eUJyYWNrZXQ6ICByZXR1cm4gUkFQSURKU09OX0VSUk9SX1NUUklORygiTWlzc2luZyBhIGNvbW1h
IG9yICd9JyBhZnRlciBhbiBvYmplY3QgbWVtYmVyLiIpOwotICAgIAotICAgICAgICBjYXNlIGtQ
YXJzZUVycm9yQXJyYXlNaXNzQ29tbWFPclNxdWFyZUJyYWNrZXQ6ICByZXR1cm4gUkFQSURKU09O
X0VSUk9SX1NUUklORygiTWlzc2luZyBhIGNvbW1hIG9yICddJyBhZnRlciBhbiBhcnJheSBlbGVt
ZW50LiIpOwotCi0gICAgICAgIGNhc2Uga1BhcnNlRXJyb3JTdHJpbmdVbmljb2RlRXNjYXBlSW52
YWxpZEhleDogIHJldHVybiBSQVBJREpTT05fRVJST1JfU1RSSU5HKCJJbmNvcnJlY3QgaGV4IGRp
Z2l0IGFmdGVyIFxcdSBlc2NhcGUgaW4gc3RyaW5nLiIpOwotICAgICAgICBjYXNlIGtQYXJzZUVy
cm9yU3RyaW5nVW5pY29kZVN1cnJvZ2F0ZUludmFsaWQ6ICByZXR1cm4gUkFQSURKU09OX0VSUk9S
X1NUUklORygiVGhlIHN1cnJvZ2F0ZSBwYWlyIGluIHN0cmluZyBpcyBpbnZhbGlkLiIpOwotICAg
ICAgICBjYXNlIGtQYXJzZUVycm9yU3RyaW5nRXNjYXBlSW52YWxpZDogICAgICAgICAgICByZXR1
cm4gUkFQSURKU09OX0VSUk9SX1NUUklORygiSW52YWxpZCBlc2NhcGUgY2hhcmFjdGVyIGluIHN0
cmluZy4iKTsKLSAgICAgICAgY2FzZSBrUGFyc2VFcnJvclN0cmluZ01pc3NRdW90YXRpb25NYXJr
OiAgICAgICAgcmV0dXJuIFJBUElESlNPTl9FUlJPUl9TVFJJTkcoIk1pc3NpbmcgYSBjbG9zaW5n
IHF1b3RhdGlvbiBtYXJrIGluIHN0cmluZy4iKTsKLSAgICAgICAgY2FzZSBrUGFyc2VFcnJvclN0
cmluZ0ludmFsaWRFbmNvZGluZzogICAgICAgICAgcmV0dXJuIFJBUElESlNPTl9FUlJPUl9TVFJJ
TkcoIkludmFsaWQgZW5jb2RpbmcgaW4gc3RyaW5nLiIpOwotCi0gICAgICAgIGNhc2Uga1BhcnNl
RXJyb3JOdW1iZXJUb29CaWc6ICAgICAgICAgICAgICAgICAgIHJldHVybiBSQVBJREpTT05fRVJS
T1JfU1RSSU5HKCJOdW1iZXIgdG9vIGJpZyB0byBiZSBzdG9yZWQgaW4gZG91YmxlLiIpOwotICAg
ICAgICBjYXNlIGtQYXJzZUVycm9yTnVtYmVyTWlzc0ZyYWN0aW9uOiAgICAgICAgICAgICByZXR1
cm4gUkFQSURKU09OX0VSUk9SX1NUUklORygiTWlzcyBmcmFjdGlvbiBwYXJ0IGluIG51bWJlci4i
KTsKLSAgICAgICAgY2FzZSBrUGFyc2VFcnJvck51bWJlck1pc3NFeHBvbmVudDogICAgICAgICAg
ICAgcmV0dXJuIFJBUElESlNPTl9FUlJPUl9TVFJJTkcoIk1pc3MgZXhwb25lbnQgaW4gbnVtYmVy
LiIpOwotCi0gICAgICAgIGNhc2Uga1BhcnNlRXJyb3JUZXJtaW5hdGlvbjogICAgICAgICAgICAg
ICAgICAgIHJldHVybiBSQVBJREpTT05fRVJST1JfU1RSSU5HKCJUZXJtaW5hdGUgcGFyc2luZyBk
dWUgdG8gSGFuZGxlciBlcnJvci4iKTsKLSAgICAgICAgY2FzZSBrUGFyc2VFcnJvclVuc3BlY2lm
aWNTeW50YXhFcnJvcjogICAgICAgICAgcmV0dXJuIFJBUElESlNPTl9FUlJPUl9TVFJJTkcoIlVu
c3BlY2lmaWMgc3ludGF4IGVycm9yLiIpOwotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICByZXR1cm4gUkFQSURKU09OX0VSUk9SX1NUUklORygiVW5rbm93biBlcnJvci4iKTsKLSAgICB9
Ci19Ci0KLVJBUElESlNPTl9OQU1FU1BBQ0VfRU5ECi0KLSNlbmRpZiAvLyBSQVBJREpTT05fRVJS
T1JfRU5fSF9fCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
dGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2Vycm9yL2Vycm9yLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2lu
Y2x1ZGUvcmFwaWRqc29uL2Vycm9yL2Vycm9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDE2MWVmODc4NzhlZjM0YTY2MTNjNzYxMDNlN2E1Y2U0NDkyOGQyNWEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9lcnJv
ci9lcnJvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8vIENvcHlyaWdodCAo
QykgMjAxMSBNaWxvIFlpcAotLy8KLS8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy
ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLS8vIG9mIHRoaXMg
c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2Fy
ZSIpLCB0byBkZWFsCi0vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5j
bHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi0vLyB0byB1c2UsIGNvcHksIG1v
ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxs
Ci0vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv
bSB0aGUgU29mdHdhcmUgaXMKLS8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0vLwotLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug
YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLS8vIGFsbCBj
b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotLy8KLS8vIFRI
RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBL
SU5ELCBFWFBSRVNTIE9SCi0vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP
IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLS8vIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RQotLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ
TSwgREFNQUdFUyBPUiBPVEhFUgotLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP
RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLS8vIE9VVCBPRiBP
UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB
TElOR1MgSU4KLS8vIFRIRSBTT0ZUV0FSRS4KLQotI2lmbmRlZiBSQVBJREpTT05fRVJST1JfRVJS
T1JfSF9fCi0jZGVmaW5lIFJBUElESlNPTl9FUlJPUl9FUlJPUl9IX18KLQotLyohIFxmaWxlIGVy
cm9yLmggKi8KLQotLyohIFxkZWZncm91cCBSQVBJREpTT05fRVJST1JTIFJhcGlkSlNPTiBlcnJv
ciBoYW5kbGluZyAqLwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBSQVBJREpTT05fRVJS
T1JfQ0hBUlRZUEUKLQotLy8hIENoYXJhY3RlciB0eXBlIG9mIGVycm9yIG1lc3NhZ2VzLgotLyoh
IFxpbmdyb3VwIFJBUElESlNPTl9FUlJPUlMKLSAgICBUaGUgZGVmYXVsdCBjaGFyYWN0ZXIgdHlw
ZSBpcyBcYyBjaGFyLgotICAgIE9uIFdpbmRvd3MsIHVzZXIgY2FuIGRlZmluZSB0aGlzIG1hY3Jv
IGFzIFxjIFRDSEFSIGZvciBzdXBwb3J0aW5nIGJvdGgKLSAgICB1bmljb2RlL25vbi11bmljb2Rl
IHNldHRpbmdzLgotKi8KLSNpZm5kZWYgUkFQSURKU09OX0VSUk9SX0NIQVJUWVBFCi0jZGVmaW5l
IFJBUElESlNPTl9FUlJPUl9DSEFSVFlQRSBjaGFyCi0jZW5kaWYKLQotLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwotLy8gUkFQSURKU09OX0VSUk9SX1NUUklORwotCi0vLyEgTWFjcm8gZm9yIGNvbnZl
cnRpbmcgc3RyaW5nIGxpdGVyaWFsIHRvIFxyZWYgUkFQSURKU09OX0VSUk9SX0NIQVJUWVBFW10u
Ci0vKiEgXGluZ3JvdXAgUkFQSURKU09OX0VSUk9SUwotICAgIEJ5IGRlZmF1bHQgdGhpcyBjb252
ZXJzaW9uIG1hY3JvIGRvZXMgbm90aGluZy4KLSAgICBPbiBXaW5kb3dzLCB1c2VyIGNhbiBkZWZp
bmUgdGhpcyBtYWNybyBhcyBcYyBfVCh4KSBmb3Igc3VwcG9ydGluZyBib3RoCi0gICAgdW5pY29k
ZS9ub24tdW5pY29kZSBzZXR0aW5ncy4KLSovCi0jaWZuZGVmIFJBUElESlNPTl9FUlJPUl9TVFJJ
TkcKLSNkZWZpbmUgUkFQSURKU09OX0VSUk9SX1NUUklORyh4KSB4Ci0jZW5kaWYKLQotUkFQSURK
U09OX05BTUVTUEFDRV9CRUdJTgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBQYXJzZUVy
cm9yQ29kZQotCi0vLyEgRXJyb3IgY29kZSBvZiBwYXJzaW5nLgotLyohIFxpbmdyb3VwIFJBUElE
SlNPTl9FUlJPUlMKLSAgICBcc2VlIEdlbmVyaWNSZWFkZXI6OlBhcnNlLCBHZW5lcmljUmVhZGVy
OjpHZXRQYXJzZUVycm9yQ29kZQotKi8KLWVudW0gUGFyc2VFcnJvckNvZGUgewotICAgIGtQYXJz
ZUVycm9yTm9uZSA9IDAsICAgICAgICAgICAgICAgICAgICAgICAgLy8hPCBObyBlcnJvci4KLQot
ICAgIGtQYXJzZUVycm9yRG9jdW1lbnRFbXB0eSwgICAgICAgICAgICAgICAgICAgLy8hPCBUaGUg
ZG9jdW1lbnQgaXMgZW1wdHkuCi0gICAga1BhcnNlRXJyb3JEb2N1bWVudFJvb3ROb3RTaW5ndWxh
ciwgICAgICAgICAvLyE8IFRoZSBkb2N1bWVudCByb290IG11c3Qgbm90IGZvbGxvdyBieSBvdGhl
ciB2YWx1ZXMuCi0KLSAgICBrUGFyc2VFcnJvclZhbHVlSW52YWxpZCwgICAgICAgICAgICAgICAg
ICAgIC8vITwgSW52YWxpZCB2YWx1ZS4KLQotICAgIGtQYXJzZUVycm9yT2JqZWN0TWlzc05hbWUs
ICAgICAgICAgICAgICAgICAgLy8hPCBNaXNzaW5nIGEgbmFtZSBmb3Igb2JqZWN0IG1lbWJlci4K
LSAgICBrUGFyc2VFcnJvck9iamVjdE1pc3NDb2xvbiwgICAgICAgICAgICAgICAgIC8vITwgTWlz
c2luZyBhIGNvbG9uIGFmdGVyIGEgbmFtZSBvZiBvYmplY3QgbWVtYmVyLgotICAgIGtQYXJzZUVy
cm9yT2JqZWN0TWlzc0NvbW1hT3JDdXJseUJyYWNrZXQsICAgLy8hPCBNaXNzaW5nIGEgY29tbWEg
b3IgJ30nIGFmdGVyIGFuIG9iamVjdCBtZW1iZXIuCi0KLSAgICBrUGFyc2VFcnJvckFycmF5TWlz
c0NvbW1hT3JTcXVhcmVCcmFja2V0LCAgIC8vITwgTWlzc2luZyBhIGNvbW1hIG9yICddJyBhZnRl
ciBhbiBhcnJheSBlbGVtZW50LgotCi0gICAga1BhcnNlRXJyb3JTdHJpbmdVbmljb2RlRXNjYXBl
SW52YWxpZEhleCwgICAvLyE8IEluY29ycmVjdCBoZXggZGlnaXQgYWZ0ZXIgXFx1IGVzY2FwZSBp
biBzdHJpbmcuCi0gICAga1BhcnNlRXJyb3JTdHJpbmdVbmljb2RlU3Vycm9nYXRlSW52YWxpZCwg
ICAvLyE8IFRoZSBzdXJyb2dhdGUgcGFpciBpbiBzdHJpbmcgaXMgaW52YWxpZC4KLSAgICBrUGFy
c2VFcnJvclN0cmluZ0VzY2FwZUludmFsaWQsICAgICAgICAgICAgIC8vITwgSW52YWxpZCBlc2Nh
cGUgY2hhcmFjdGVyIGluIHN0cmluZy4KLSAgICBrUGFyc2VFcnJvclN0cmluZ01pc3NRdW90YXRp
b25NYXJrLCAgICAgICAgIC8vITwgTWlzc2luZyBhIGNsb3NpbmcgcXVvdGF0aW9uIG1hcmsgaW4g
c3RyaW5nLgotICAgIGtQYXJzZUVycm9yU3RyaW5nSW52YWxpZEVuY29kaW5nLCAgICAgICAgICAg
Ly8hPCBJbnZhbGlkIGVuY29kaW5nIGluIHN0cmluZy4KLQotICAgIGtQYXJzZUVycm9yTnVtYmVy
VG9vQmlnLCAgICAgICAgICAgICAgICAgICAgLy8hPCBOdW1iZXIgdG9vIGJpZyB0byBiZSBzdG9y
ZWQgaW4gZG91YmxlLgotICAgIGtQYXJzZUVycm9yTnVtYmVyTWlzc0ZyYWN0aW9uLCAgICAgICAg
ICAgICAgLy8hPCBNaXNzIGZyYWN0aW9uIHBhcnQgaW4gbnVtYmVyLgotICAgIGtQYXJzZUVycm9y
TnVtYmVyTWlzc0V4cG9uZW50LCAgICAgICAgICAgICAgLy8hPCBNaXNzIGV4cG9uZW50IGluIG51
bWJlci4KLQotICAgIGtQYXJzZUVycm9yVGVybWluYXRpb24sICAgICAgICAgICAgICAgICAgICAg
Ly8hPCBQYXJzaW5nIHdhcyB0ZXJtaW5hdGVkLgotICAgIGtQYXJzZUVycm9yVW5zcGVjaWZpY1N5
bnRheEVycm9yLCAgICAgICAgICAgLy8hPCBVbnNwZWNpZmljIHN5bnRheCBlcnJvci4KLX07Ci0K
LS8vISBSZXN1bHQgb2YgcGFyc2luZyAod3JhcHMgUGFyc2VFcnJvckNvZGUpCi0vKiEKLSAgICBc
aW5ncm91cCBSQVBJREpTT05fRVJST1JTCi0gICAgXGNvZGUKLSAgICAgICAgRG9jdW1lbnQgZG9j
OwotICAgICAgICBQYXJzZVJlc3VsdCBvayA9IGRvYy5QYXJzZSgiWzQyXSIpOwotICAgICAgICBp
ZiAoIW9rKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkpTT04gcGFyc2UgZXJyb3I6
ICVzICgldSkiLAotICAgICAgICAgICAgICAgICAgICBHZXRQYXJzZUVycm9yX0VuKG9rLkNvZGUo
KSksIG9rLk9mZnNldCgpKTsKLSAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKLSAgICAg
ICAgfQotICAgIFxlbmRjb2RlCi0gICAgXHNlZSBHZW5lcmljUmVhZGVyOjpQYXJzZSwgR2VuZXJp
Y0RvY3VtZW50OjpQYXJzZQotKi8KLXN0cnVjdCBQYXJzZVJlc3VsdCB7Ci0KLSAgICAvLyEgRGVm
YXVsdCBjb25zdHJ1Y3Rvciwgbm8gZXJyb3IuCi0gICAgUGFyc2VSZXN1bHQoKSA6IGNvZGVfKGtQ
YXJzZUVycm9yTm9uZSksIG9mZnNldF8oMCkge30KLSAgICAvLyEgQ29uc3RydWN0b3IgdG8gc2V0
IGFuIGVycm9yLgotICAgIFBhcnNlUmVzdWx0KFBhcnNlRXJyb3JDb2RlIGNvZGUsIHNpemVfdCBv
ZmZzZXQpIDogY29kZV8oY29kZSksIG9mZnNldF8ob2Zmc2V0KSB7fQotCi0gICAgLy8hIEdldCB0
aGUgZXJyb3IgY29kZS4KLSAgICBQYXJzZUVycm9yQ29kZSBDb2RlKCkgY29uc3QgeyByZXR1cm4g
Y29kZV87IH0KLSAgICAvLyEgR2V0IHRoZSBlcnJvciBvZmZzZXQsIGlmIFxyZWYgSXNFcnJvcigp
LCAwIG90aGVyd2lzZS4KLSAgICBzaXplX3QgT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gb2Zmc2V0
XzsgfQotCi0gICAgLy8hIENvbnZlcnNpb24gdG8gXGMgYm9vbCwgcmV0dXJucyBcYyB0cnVlLCBp
ZmYgIVxyZWYgSXNFcnJvcigpLgotICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAh
SXNFcnJvcigpOyB9Ci0gICAgLy8hIFdoZXRoZXIgdGhlIHJlc3VsdCBpcyBhbiBlcnJvci4KLSAg
ICBib29sIElzRXJyb3IoKSBjb25zdCB7IHJldHVybiBjb2RlXyAhPSBrUGFyc2VFcnJvck5vbmU7
IH0KLQotICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXJzZVJlc3VsdCYgdGhhdCkgY29uc3Qg
eyByZXR1cm4gY29kZV8gPT0gdGhhdC5jb2RlXzsgfQotICAgIGJvb2wgb3BlcmF0b3I9PShQYXJz
ZUVycm9yQ29kZSBjb2RlKSBjb25zdCB7IHJldHVybiBjb2RlXyA9PSBjb2RlOyB9Ci0gICAgZnJp
ZW5kIGJvb2wgb3BlcmF0b3I9PShQYXJzZUVycm9yQ29kZSBjb2RlLCBjb25zdCBQYXJzZVJlc3Vs
dCAmIGVycikgeyByZXR1cm4gY29kZSA9PSBlcnIuY29kZV87IH0KLQotICAgIC8vISBSZXNldCBl
cnJvciBjb2RlLgotICAgIHZvaWQgQ2xlYXIoKSB7IFNldChrUGFyc2VFcnJvck5vbmUpOyB9Ci0g
ICAgLy8hIFVwZGF0ZSBlcnJvciBjb2RlIGFuZCBvZmZzZXQuCi0gICAgdm9pZCBTZXQoUGFyc2VF
cnJvckNvZGUgY29kZSwgc2l6ZV90IG9mZnNldCA9IDApIHsgY29kZV8gPSBjb2RlOyBvZmZzZXRf
ID0gb2Zmc2V0OyB9Ci0KLXByaXZhdGU6Ci0gICAgUGFyc2VFcnJvckNvZGUgY29kZV87Ci0gICAg
c2l6ZV90IG9mZnNldF87Ci19OwotCi0vLyEgRnVuY3Rpb24gcG9pbnRlciB0eXBlIG9mIEdldFBh
cnNlRXJyb3IoKS4KLS8qISBcaW5ncm91cCBSQVBJREpTT05fRVJST1JTCi0KLSAgICBUaGlzIGlz
IHRoZSBwcm90b3R5cGUgZm9yIFxjIEdldFBhcnNlRXJyb3JfWCgpLCB3aGVyZSBcYyBYIGlzIGEg
bG9jYWxlLgotICAgIFVzZXIgY2FuIGR5bmFtaWNhbGx5IGNoYW5nZSBsb2NhbGUgaW4gcnVudGlt
ZSwgZS5nLjoKLVxjb2RlCi0gICAgR2V0UGFyc2VFcnJvckZ1bmMgR2V0UGFyc2VFcnJvciA9IEdl
dFBhcnNlRXJyb3JfRW47IC8vIG9yIHdoYXRldmVyCi0gICAgY29uc3QgUkFQSURKU09OX0VSUk9S
X0NIQVJUWVBFKiBzID0gR2V0UGFyc2VFcnJvcihkb2N1bWVudC5HZXRQYXJzZUVycm9yQ29kZSgp
KTsKLVxlbmRjb2RlCi0qLwotdHlwZWRlZiBjb25zdCBSQVBJREpTT05fRVJST1JfQ0hBUlRZUEUq
ICgqR2V0UGFyc2VFcnJvckZ1bmMpKFBhcnNlRXJyb3JDb2RlKTsKLQotUkFQSURKU09OX05BTUVT
UEFDRV9FTkQKLQotI2VuZGlmIC8vIFJBUElESlNPTl9FUlJPUl9FUlJPUl9IX18KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpz
b24vaW5jbHVkZS9yYXBpZGpzb24vZmlsZXJlYWRzdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24v
ZmlsZXJlYWRzdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFmOWJlNTc5
ZGI3MGQ4MTdlMTk0ZGE2YWIzOWZjMGJjMWFkMDg0MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
dGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ZpbGVyZWFkc3RyZWFtLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWls
byBZaXAKLS8vCi0vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn
ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0vLyBvZiB0aGlzIHNvZnR3YXJlIGFu
ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVh
bAotLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo
b3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl
LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotLy8gY29waWVz
IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3
YXJlIGlzCi0vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zOgotLy8KLS8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl
cm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0vLyBhbGwgY29waWVzIG9yIHN1
YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLS8vCi0vLyBUSEUgU09GVFdBUkUg
SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT
UyBPUgotLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLS8vIEFVVEhP
UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg
T1IgT1RIRVIKLS8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs
IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi0vLyBPVVQgT0YgT1IgSU4gQ09OTkVD
VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCi0v
LyBUSEUgU09GVFdBUkUuCi0KLSNpZm5kZWYgUkFQSURKU09OX0ZJTEVSRUFEU1RSRUFNX0hfCi0j
ZGVmaW5lIFJBUElESlNPTl9GSUxFUkVBRFNUUkVBTV9IXwotCi0jaW5jbHVkZSAicmFwaWRqc29u
LmgiCi0jaW5jbHVkZSA8Y3N0ZGlvPgotCi1SQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCi0KLS8v
ISBGaWxlIGJ5dGUgc3RyZWFtIGZvciBpbnB1dCB1c2luZyBmcmVhZCgpLgotLyohCi0gICAgXG5v
dGUgaW1wbGVtZW50cyBTdHJlYW0gY29uY2VwdAotKi8KLWNsYXNzIEZpbGVSZWFkU3RyZWFtIHsK
LXB1YmxpYzoKLSAgICB0eXBlZGVmIGNoYXIgQ2g7ICAgIC8vITwgQ2hhcmFjdGVyIHR5cGUgKGJ5
dGUpLgotCi0gICAgLy8hIENvbnN0cnVjdG9yLgotICAgIC8qIQotICAgICAgICBccGFyYW0gZnAg
RmlsZSBwb2ludGVyIG9wZW5lZCBmb3IgcmVhZC4KLSAgICAgICAgXHBhcmFtIGJ1ZmZlciB1c2Vy
LXN1cHBsaWVkIGJ1ZmZlci4KLSAgICAgICAgXHBhcmFtIGJ1ZmZlclNpemUgc2l6ZSBvZiBidWZm
ZXIgaW4gYnl0ZXMuIE11c3QgPj00IGJ5dGVzLgotICAgICovCi0gICAgRmlsZVJlYWRTdHJlYW0o
c3RkOjpGSUxFKiBmcCwgY2hhciogYnVmZmVyLCBzaXplX3QgYnVmZmVyU2l6ZSkgOiBmcF8oZnAp
LCBidWZmZXJfKGJ1ZmZlciksIGJ1ZmZlclNpemVfKGJ1ZmZlclNpemUpLCBidWZmZXJMYXN0Xygw
KSwgY3VycmVudF8oYnVmZmVyXyksIHJlYWRDb3VudF8oMCksIGNvdW50XygwKSwgZW9mXyhmYWxz
ZSkgeyAKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVChmcF8gIT0gMCk7Ci0gICAgICAgIFJBUElE
SlNPTl9BU1NFUlQoYnVmZmVyU2l6ZSA+PSA0KTsKLSAgICAgICAgUmVhZCgpOwotICAgIH0KLQot
ICAgIENoIFBlZWsoKSBjb25zdCB7IHJldHVybiAqY3VycmVudF87IH0KLSAgICBDaCBUYWtlKCkg
eyBDaCBjID0gKmN1cnJlbnRfOyBSZWFkKCk7IHJldHVybiBjOyB9Ci0gICAgc2l6ZV90IFRlbGwo
KSBjb25zdCB7IHJldHVybiBjb3VudF8gKyBzdGF0aWNfY2FzdDxzaXplX3Q+KGN1cnJlbnRfIC0g
YnVmZmVyXyk7IH0KLQotICAgIC8vIE5vdCBpbXBsZW1lbnRlZAotICAgIHZvaWQgUHV0KENoKSB7
IFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyB9Ci0gICAgdm9pZCBGbHVzaCgpIHsgUkFQSURKU09O
X0FTU0VSVChmYWxzZSk7IH0gCi0gICAgQ2gqIFB1dEJlZ2luKCkgeyBSQVBJREpTT05fQVNTRVJU
KGZhbHNlKTsgcmV0dXJuIDA7IH0KLSAgICBzaXplX3QgUHV0RW5kKENoKikgeyBSQVBJREpTT05f
QVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7IH0KLQotICAgIC8vIEZvciBlbmNvZGluZyBkZXRlY3Rp
b24gb25seS4KLSAgICBjb25zdCBDaCogUGVlazQoKSBjb25zdCB7Ci0gICAgICAgIHJldHVybiAo
Y3VycmVudF8gKyA0IDw9IGJ1ZmZlckxhc3RfKSA/IGN1cnJlbnRfIDogMDsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgdm9pZCBSZWFkKCkgewotICAgICAgICBpZiAoY3VycmVudF8gPCBidWZmZXJM
YXN0XykKLSAgICAgICAgICAgICsrY3VycmVudF87Ci0gICAgICAgIGVsc2UgaWYgKCFlb2ZfKSB7
Ci0gICAgICAgICAgICBjb3VudF8gKz0gcmVhZENvdW50XzsKLSAgICAgICAgICAgIHJlYWRDb3Vu
dF8gPSBmcmVhZChidWZmZXJfLCAxLCBidWZmZXJTaXplXywgZnBfKTsKLSAgICAgICAgICAgIGJ1
ZmZlckxhc3RfID0gYnVmZmVyXyArIHJlYWRDb3VudF8gLSAxOwotICAgICAgICAgICAgY3VycmVu
dF8gPSBidWZmZXJfOwotCi0gICAgICAgICAgICBpZiAocmVhZENvdW50XyA8IGJ1ZmZlclNpemVf
KSB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyX1tyZWFkQ291bnRfXSA9ICdcMCc7Ci0gICAgICAg
ICAgICAgICAgKytidWZmZXJMYXN0XzsKLSAgICAgICAgICAgICAgICBlb2ZfID0gdHJ1ZTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0ZDo6RklMRSogZnBfOwotICAg
IENoICpidWZmZXJfOwotICAgIHNpemVfdCBidWZmZXJTaXplXzsKLSAgICBDaCAqYnVmZmVyTGFz
dF87Ci0gICAgQ2ggKmN1cnJlbnRfOwotICAgIHNpemVfdCByZWFkQ291bnRfOwotICAgIHNpemVf
dCBjb3VudF87ICAvLyE8IE51bWJlciBvZiBjaGFyYWN0ZXJzIHJlYWQKLSAgICBib29sIGVvZl87
Ci19OwotCi1SQVBJREpTT05fTkFNRVNQQUNFX0VORAotCi0jZW5kaWYgLy8gUkFQSURKU09OX0ZJ
TEVTVFJFQU1fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZmlsZXN0cmVhbS5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9p
bmNsdWRlL3JhcGlkanNvbi9maWxlc3RyZWFtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGEzNzBjNjA1NzBmNTZiMGFiMmM0NjVkOTEwNmU2ZmMwMzc4MmQyMTUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9maWxl
c3RyZWFtLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMp
IDIwMTEgTWlsbyBZaXAKLS8vCi0vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl
IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0vLyBvZiB0aGlzIHNv
ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi
KSwgdG8gZGVhbAotLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1
ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotLy8gdG8gdXNlLCBjb3B5LCBtb2Rp
ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAot
Ly8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g
dGhlIFNvZnR3YXJlIGlzCi0vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zOgotLy8KLS8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu
ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0vLyBhbGwgY29w
aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLS8vCi0vLyBUSEUg
U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO
RCwgRVhQUkVTUyBPUgotLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU
SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0vLyBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUK
LS8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s
IERBTUFHRVMgT1IgT1RIRVIKLS8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg
Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi0vLyBPVVQgT0YgT1Ig
SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ
TkdTIElOCi0vLyBUSEUgU09GVFdBUkUuCi0KLSNpZm5kZWYgUkFQSURKU09OX0ZJTEVTVFJFQU1f
SF8KLSNkZWZpbmUgUkFQSURKU09OX0ZJTEVTVFJFQU1fSF8KLQotI2luY2x1ZGUgInJhcGlkanNv
bi5oIgotI2luY2x1ZGUgPGNzdGRpbz4KLQotUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgotCi0v
LyEgKERlcHJlY2F0ZWQpIFdyYXBwZXIgb2YgQyBmaWxlIHN0cmVhbSBmb3IgaW5wdXQgb3Igb3V0
cHV0LgotLyohCi0gICAgVGhpcyBzaW1wbGUgd3JhcHBlciBkb2VzIG5vdCBjaGVjayB0aGUgdmFs
aWRpdHkgb2YgdGhlIHN0cmVhbS4KLSAgICBcbm90ZSBpbXBsZW1lbnRzIFN0cmVhbSBjb25jZXB0
Ci0gICAgXG5vdGUgZGVwcmVjYXRlZDogVGhpcyB3YXMgb25seSBmb3IgYmFzaWMgdGVzdGluZyBp
biB2ZXJzaW9uIDAuMSwgaXQgaXMgZm91bmQgdGhhdCB0aGUgcGVyZm9ybWFuY2UgaXMgdmVyeSBs
b3cgYnkgdXNpbmcgZmdldGMoKS4gVXNlIEZpbGVSZWFkU3RyZWFtIGluc3RlYWQuCi0qLwotY2xh
c3MgRmlsZVN0cmVhbSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjaGFyIENoOyAgICAvLyE8IENo
YXJhY3RlciB0eXBlLiBPbmx5IHN1cHBvcnQgY2hhci4KLQotICAgIEZpbGVTdHJlYW0oc3RkOjpG
SUxFKiBmcCkgOiBmcF8oZnApLCBjdXJyZW50XygnXDAnKSwgY291bnRfKDApIHsgUmVhZCgpOyB9
Ci0gICAgY2hhciBQZWVrKCkgY29uc3QgeyByZXR1cm4gY3VycmVudF87IH0KLSAgICBjaGFyIFRh
a2UoKSB7IGNoYXIgYyA9IGN1cnJlbnRfOyBSZWFkKCk7IHJldHVybiBjOyB9Ci0gICAgc2l6ZV90
IFRlbGwoKSBjb25zdCB7IHJldHVybiBjb3VudF87IH0KLSAgICB2b2lkIFB1dChjaGFyIGMpIHsg
ZnB1dGMoYywgZnBfKTsgfQotICAgIHZvaWQgRmx1c2goKSB7IGZmbHVzaChmcF8pOyB9Ci0KLSAg
ICAvLyBOb3QgaW1wbGVtZW50ZWQKLSAgICBjaGFyKiBQdXRCZWdpbigpIHsgcmV0dXJuIDA7IH0K
LSAgICBzaXplX3QgUHV0RW5kKGNoYXIqKSB7IHJldHVybiAwOyB9Ci0KLXByaXZhdGU6Ci0gICAg
Ly8gUHJvaGliaXQgY29weSBjb25zdHJ1Y3RvciAmIGFzc2lnbm1lbnQgb3BlcmF0b3IuCi0gICAg
RmlsZVN0cmVhbShjb25zdCBGaWxlU3RyZWFtJik7Ci0gICAgRmlsZVN0cmVhbSYgb3BlcmF0b3I9
KGNvbnN0IEZpbGVTdHJlYW0mKTsKLQotICAgIHZvaWQgUmVhZCgpIHsKLSAgICAgICAgUkFQSURK
U09OX0FTU0VSVChmcF8gIT0gMCk7Ci0gICAgICAgIGludCBjID0gZmdldGMoZnBfKTsKLSAgICAg
ICAgaWYgKGMgIT0gRU9GKSB7Ci0gICAgICAgICAgICBjdXJyZW50XyA9IChjaGFyKWM7Ci0gICAg
ICAgICAgICBjb3VudF8rKzsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjdXJyZW50XyAh
PSAnXDAnKQotICAgICAgICAgICAgY3VycmVudF8gPSAnXDAnOwotICAgIH0KLQotICAgIHN0ZDo6
RklMRSogZnBfOwotICAgIGNoYXIgY3VycmVudF87Ci0gICAgc2l6ZV90IGNvdW50XzsKLX07Ci0K
LVJBUElESlNPTl9OQU1FU1BBQ0VfRU5ECi0KLSNlbmRpZiAvLyBSQVBJREpTT05fRklMRVNUUkVB
TV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJk
X3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9maWxld3JpdGVzdHJlYW0uaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5j
bHVkZS9yYXBpZGpzb24vZmlsZXdyaXRlc3RyZWFtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQzNTJjOGYxNzJmNDIyMzFjYzJjYTQ4ODlkNmM5YzBiNzBjOTU4M2EuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9m
aWxld3JpdGVzdHJlYW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8vIENvcHly
aWdodCAoQykgMjAxMSBNaWxvIFlpcAotLy8KLS8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50
ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLS8vIG9m
IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT
b2Z0d2FyZSIpLCB0byBkZWFsCi0vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv
biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi0vLyB0byB1c2UsIGNv
cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9v
ciBzZWxsCi0vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg
dG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLS8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0
byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0vLwotLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBu
b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLS8v
IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotLy8K
LS8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G
IEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J
VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLS8vIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRQotLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO
WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD
VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLS8vIE9V
VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI
RVIgREVBTElOR1MgSU4KLS8vIFRIRSBTT0ZUV0FSRS4KLQotI2lmbmRlZiBSQVBJREpTT05fRklM
RVdSSVRFU1RSRUFNX0hfCi0jZGVmaW5lIFJBUElESlNPTl9GSUxFV1JJVEVTVFJFQU1fSF8KLQot
I2luY2x1ZGUgInJhcGlkanNvbi5oIgotI2luY2x1ZGUgPGNzdGRpbz4KLQotUkFQSURKU09OX05B
TUVTUEFDRV9CRUdJTgotCi0vLyEgV3JhcHBlciBvZiBDIGZpbGUgc3RyZWFtIGZvciBpbnB1dCB1
c2luZyBmcmVhZCgpLgotLyohCi0gICAgXG5vdGUgaW1wbGVtZW50cyBTdHJlYW0gY29uY2VwdAot
Ki8KLWNsYXNzIEZpbGVXcml0ZVN0cmVhbSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjaGFyIENo
OyAgICAvLyE8IENoYXJhY3RlciB0eXBlLiBPbmx5IHN1cHBvcnQgY2hhci4KLQotICAgIEZpbGVX
cml0ZVN0cmVhbShzdGQ6OkZJTEUqIGZwLCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXpl
KSA6IGZwXyhmcCksIGJ1ZmZlcl8oYnVmZmVyKSwgYnVmZmVyRW5kXyhidWZmZXIgKyBidWZmZXJT
aXplKSwgY3VycmVudF8oYnVmZmVyXykgeyAKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVChmcF8g
IT0gMCk7Ci0gICAgfQotCi0gICAgdm9pZCBQdXQoY2hhciBjKSB7IAotICAgICAgICBpZiAoY3Vy
cmVudF8gPj0gYnVmZmVyRW5kXykKLSAgICAgICAgICAgIEZsdXNoKCk7Ci0KLSAgICAgICAgKmN1
cnJlbnRfKysgPSBjOwotICAgIH0KLQotICAgIHZvaWQgUHV0TihjaGFyIGMsIHNpemVfdCBuKSB7
Ci0gICAgICAgIHNpemVfdCBhdmFpbCA9IHN0YXRpY19jYXN0PHNpemVfdD4oYnVmZmVyRW5kXyAt
IGN1cnJlbnRfKTsKLSAgICAgICAgd2hpbGUgKG4gPiBhdmFpbCkgewotICAgICAgICAgICAgc3Rk
OjptZW1zZXQoY3VycmVudF8sIGMsIGF2YWlsKTsKLSAgICAgICAgICAgIGN1cnJlbnRfICs9IGF2
YWlsOwotICAgICAgICAgICAgRmx1c2goKTsKLSAgICAgICAgICAgIG4gLT0gYXZhaWw7Ci0gICAg
ICAgICAgICBhdmFpbCA9IHN0YXRpY19jYXN0PHNpemVfdD4oYnVmZmVyRW5kXyAtIGN1cnJlbnRf
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChuID4gMCkgewotICAgICAgICAgICAgc3RkOjpt
ZW1zZXQoY3VycmVudF8sIGMsIG4pOwotICAgICAgICAgICAgY3VycmVudF8gKz0gbjsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIHZvaWQgRmx1c2goKSB7Ci0gICAgICAgIGlmIChjdXJyZW50XyAh
PSBidWZmZXJfKSB7Ci0gICAgICAgICAgICBmd3JpdGUoYnVmZmVyXywgMSwgc3RhdGljX2Nhc3Q8
c2l6ZV90PihjdXJyZW50XyAtIGJ1ZmZlcl8pLCBmcF8pOwotICAgICAgICAgICAgY3VycmVudF8g
PSBidWZmZXJfOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gTm90IGltcGxlbWVudGVkCi0g
ICAgY2hhciBQZWVrKCkgY29uc3QgeyBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7
IH0KLSAgICBjaGFyIFRha2UoKSB7IFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyByZXR1cm4gMDsg
fQotICAgIHNpemVfdCBUZWxsKCkgY29uc3QgeyBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsgcmV0
dXJuIDA7IH0KLSAgICBjaGFyKiBQdXRCZWdpbigpIHsgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7
IHJldHVybiAwOyB9Ci0gICAgc2l6ZV90IFB1dEVuZChjaGFyKikgeyBSQVBJREpTT05fQVNTRVJU
KGZhbHNlKTsgcmV0dXJuIDA7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBQcm9oaWJpdCBjb3B5IGNv
bnN0cnVjdG9yICYgYXNzaWdubWVudCBvcGVyYXRvci4KLSAgICBGaWxlV3JpdGVTdHJlYW0oY29u
c3QgRmlsZVdyaXRlU3RyZWFtJik7Ci0gICAgRmlsZVdyaXRlU3RyZWFtJiBvcGVyYXRvcj0oY29u
c3QgRmlsZVdyaXRlU3RyZWFtJik7Ci0KLSAgICBzdGQ6OkZJTEUqIGZwXzsKLSAgICBjaGFyICpi
dWZmZXJfOwotICAgIGNoYXIgKmJ1ZmZlckVuZF87Ci0gICAgY2hhciAqY3VycmVudF87Ci19Owot
Ci0vLyEgSW1wbGVtZW50IHNwZWNpYWxpemVkIHZlcnNpb24gb2YgUHV0TigpIHdpdGggbWVtc2V0
KCkgZm9yIGJldHRlciBwZXJmb3JtYW5jZS4KLXRlbXBsYXRlPD4KLWlubGluZSB2b2lkIFB1dE4o
RmlsZVdyaXRlU3RyZWFtJiBzdHJlYW0sIGNoYXIgYywgc2l6ZV90IG4pIHsKLSAgICBzdHJlYW0u
UHV0TihjLCBuKTsKLX0KLQotUkFQSURKU09OX05BTUVTUEFDRV9FTkQKLQotI2VuZGlmIC8vIFJB
UElESlNPTl9GSUxFU1RSRUFNX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVy
bmFsL2JpZ2ludGVnZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGly
ZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvYmlnaW50ZWdlci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmFjZmMzODUzMzRjZDYzNzY0NmNjZGE2
YWM5ZjE5NTRiMjU2MjJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBp
ZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvYmlnaW50ZWdlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsMjk0ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAotLy8K
LS8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg
cGVyc29uIG9idGFpbmluZyBhIGNvcHkKLS8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0
ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCi0vLyBpbiB0
aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh
dGlvbiB0aGUgcmlnaHRzCi0vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs
IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi0vLyBjb3BpZXMgb2YgdGhlIFNv
ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLS8v
IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6
Ci0vLwotLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu
b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLS8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg
cG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotLy8KLS8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF
RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0vLyBJ
TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSwKLS8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO
T05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotLy8gQVVUSE9SUyBPUiBDT1BZ
UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgot
Ly8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP
VEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLS8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg
VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KLS8vIFRIRSBTT0ZU
V0FSRS4KLQotI2lmbmRlZiBSQVBJREpTT05fQklHSU5URUdFUl9IXwotI2RlZmluZSBSQVBJREpT
T05fQklHSU5URUdFUl9IXwotCi0jaW5jbHVkZSAiLi4vcmFwaWRqc29uLmgiCi0KLSNpZiBkZWZp
bmVkKF9NU0NfVkVSKSAmJiBkZWZpbmVkKF9NX0FNRDY0KQotI2luY2x1ZGUgPGludHJpbi5oPiAv
LyBmb3IgX3VtdWwxMjgKLSNlbmRpZgotCi1SQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCi1uYW1l
c3BhY2UgaW50ZXJuYWwgewotCi1jbGFzcyBCaWdJbnRlZ2VyIHsKLXB1YmxpYzoKLSAgICB0eXBl
ZGVmIHVpbnQ2NF90IFR5cGU7Ci0KLSAgICBCaWdJbnRlZ2VyKGNvbnN0IEJpZ0ludGVnZXImIHJo
cykgOiBjb3VudF8ocmhzLmNvdW50XykgewotICAgICAgICBzdGQ6Om1lbWNweShkaWdpdHNfLCBy
aHMuZGlnaXRzXywgY291bnRfICogc2l6ZW9mKFR5cGUpKTsKLSAgICB9Ci0KLSAgICBleHBsaWNp
dCBCaWdJbnRlZ2VyKHVpbnQ2NF90IHUpIDogY291bnRfKDEpIHsKLSAgICAgICAgZGlnaXRzX1sw
XSA9IHU7Ci0gICAgfQotCi0gICAgQmlnSW50ZWdlcihjb25zdCBjaGFyKiBkZWNpbWFscywgc2l6
ZV90IGxlbmd0aCkgOiBjb3VudF8oMSkgewotICAgICAgICBSQVBJREpTT05fQVNTRVJUKGxlbmd0
aCA+IDApOwotICAgICAgICBkaWdpdHNfWzBdID0gMDsKLSAgICAgICAgc2l6ZV90IGkgPSAwOwot
ICAgICAgICBjb25zdCBzaXplX3Qga01heERpZ2l0UGVySXRlcmF0aW9uID0gMTk7ICAvLyAyXjY0
ID0gMTg0NDY3NDQwNzM3MDk1NTE2MTYgPiAxMF4xOQotICAgICAgICB3aGlsZSAobGVuZ3RoID49
IGtNYXhEaWdpdFBlckl0ZXJhdGlvbikgewotICAgICAgICAgICAgQXBwZW5kRGVjaW1hbDY0KGRl
Y2ltYWxzICsgaSwgZGVjaW1hbHMgKyBpICsga01heERpZ2l0UGVySXRlcmF0aW9uKTsKLSAgICAg
ICAgICAgIGxlbmd0aCAtPSBrTWF4RGlnaXRQZXJJdGVyYXRpb247Ci0gICAgICAgICAgICBpICs9
IGtNYXhEaWdpdFBlckl0ZXJhdGlvbjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChsZW5ndGgg
PiAwKQotICAgICAgICAgICAgQXBwZW5kRGVjaW1hbDY0KGRlY2ltYWxzICsgaSwgZGVjaW1hbHMg
KyBpICsgbGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBCaWdJbnRlZ2VyJiBvcGVyYXRvcj0odWludDY0
X3QgdSkgewotICAgICAgICBkaWdpdHNfWzBdID0gdTsgICAgICAgICAgICAKLSAgICAgICAgY291
bnRfID0gMTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIEJpZ0ludGVnZXIm
IG9wZXJhdG9yKz0odWludDY0X3QgdSkgewotICAgICAgICBUeXBlIGJhY2t1cCA9IGRpZ2l0c19b
MF07Ci0gICAgICAgIGRpZ2l0c19bMF0gKz0gdTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBjb3VudF8gLSAxOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChkaWdpdHNfW2ldID49IGJh
Y2t1cCkKLSAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7IC8vIG5vIGNhcnJ5Ci0gICAgICAg
ICAgICBiYWNrdXAgPSBkaWdpdHNfW2kgKyAxXTsKLSAgICAgICAgICAgIGRpZ2l0c19baSArIDFd
ICs9IDE7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBMYXN0IGNhcnJ5Ci0gICAgICAgIGlmIChk
aWdpdHNfW2NvdW50XyAtIDFdIDwgYmFja3VwKQotICAgICAgICAgICAgUHVzaEJhY2soMSk7Ci0K
LSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIEJpZ0ludGVnZXImIG9wZXJhdG9y
Kj0odWludDY0X3QgdSkgewotICAgICAgICBpZiAodSA9PSAwKSByZXR1cm4gKnRoaXMgPSAwOwot
ICAgICAgICBpZiAodSA9PSAxKSByZXR1cm4gKnRoaXM7Ci0gICAgICAgIGlmICgqdGhpcyA9PSAx
KSByZXR1cm4gKnRoaXMgPSB1OwotCi0gICAgICAgIHVpbnQ2NF90IGsgPSAwOwotICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50XzsgaSsrKSB7Ci0gICAgICAgICAgICB1aW50NjRf
dCBoaTsKLSAgICAgICAgICAgIGRpZ2l0c19baV0gPSBNdWxBZGQ2NChkaWdpdHNfW2ldLCB1LCBr
LCAmaGkpOwotICAgICAgICAgICAgayA9IGhpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICBpZiAoayA+IDApCi0gICAgICAgICAgICBQdXNoQmFjayhrKTsKLQotICAgICAgICByZXR1cm4g
KnRoaXM7Ci0gICAgfQotCi0gICAgQmlnSW50ZWdlciYgb3BlcmF0b3IqPSh1aW50MzJfdCB1KSB7
Ci0gICAgICAgIGlmICh1ID09IDApIHJldHVybiAqdGhpcyA9IDA7Ci0gICAgICAgIGlmICh1ID09
IDEpIHJldHVybiAqdGhpczsKLSAgICAgICAgaWYgKCp0aGlzID09IDEpIHJldHVybiAqdGhpcyA9
IHU7Ci0KLSAgICAgICAgdWludDMyX3QgayA9IDA7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY291bnRfOyBpKyspIHsKLSAgICAgICAgICAgIGNvbnN0IHVpbnQ2NF90IGMgPSBkaWdp
dHNfW2ldID4+IDMyOwotICAgICAgICAgICAgY29uc3QgdWludDY0X3QgZCA9IGRpZ2l0c19baV0g
JiAweEZGRkZGRkZGOwotICAgICAgICAgICAgY29uc3QgdWludDY0X3QgdWMgPSB1ICogYzsKLSAg
ICAgICAgICAgIGNvbnN0IHVpbnQ2NF90IHVkID0gdSAqIGQ7Ci0gICAgICAgICAgICBjb25zdCB1
aW50NjRfdCBwMCA9IHVkICsgazsKLSAgICAgICAgICAgIGNvbnN0IHVpbnQ2NF90IHAxID0gdWMg
KyAocDAgPj4gMzIpOwotICAgICAgICAgICAgZGlnaXRzX1tpXSA9IChwMCAmIDB4RkZGRkZGRkYp
IHwgKHAxIDw8IDMyKTsKLSAgICAgICAgICAgIGsgPSBwMSA+PiAzMjsKLSAgICAgICAgfQotICAg
ICAgICAKLSAgICAgICAgaWYgKGsgPiAwKQotICAgICAgICAgICAgUHVzaEJhY2soayk7Ci0KLSAg
ICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIEJpZ0ludGVnZXImIG9wZXJhdG9yPDw9
KHNpemVfdCBzaGlmdCkgewotICAgICAgICBpZiAoSXNaZXJvKCkgfHwgc2hpZnQgPT0gMCkgcmV0
dXJuICp0aGlzOwotCi0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBzaGlmdCAvIGtUeXBlQml0Owot
ICAgICAgICBzaXplX3QgaW50ZXJTaGlmdCA9IHNoaWZ0ICUga1R5cGVCaXQ7Ci0gICAgICAgIFJB
UElESlNPTl9BU1NFUlQoY291bnRfICsgb2Zmc2V0IDw9IGtDYXBhY2l0eSk7Ci0KLSAgICAgICAg
aWYgKGludGVyU2hpZnQgPT0gMCkgewotICAgICAgICAgICAgc3RkOjptZW1tb3ZlKCZkaWdpdHNf
W2NvdW50XyAtIDEgKyBvZmZzZXRdLCAmZGlnaXRzX1tjb3VudF8gLSAxXSwgY291bnRfICogc2l6
ZW9mKFR5cGUpKTsKLSAgICAgICAgICAgIGNvdW50XyArPSBvZmZzZXQ7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBkaWdpdHNfW2NvdW50X10gPSAwOwotICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IGNvdW50XzsgaSA+IDA7IGktLSkKLSAgICAgICAgICAgICAgICBk
aWdpdHNfW2kgKyBvZmZzZXRdID0gKGRpZ2l0c19baV0gPDwgaW50ZXJTaGlmdCkgfCAoZGlnaXRz
X1tpIC0gMV0gPj4gKGtUeXBlQml0IC0gaW50ZXJTaGlmdCkpOwotICAgICAgICAgICAgZGlnaXRz
X1tvZmZzZXRdID0gZGlnaXRzX1swXSA8PCBpbnRlclNoaWZ0OwotICAgICAgICAgICAgY291bnRf
ICs9IG9mZnNldDsKLSAgICAgICAgICAgIGlmIChkaWdpdHNfW2NvdW50X10pCi0gICAgICAgICAg
ICAgICAgY291bnRfKys7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6Om1lbXNldChkaWdpdHNf
LCAwLCBvZmZzZXQgKiBzaXplb2YoVHlwZSkpOwotCi0gICAgICAgIHJldHVybiAqdGhpczsKLSAg
ICB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQmlnSW50ZWdlciYgcmhzKSBjb25zdCB7
Ci0gICAgICAgIHJldHVybiBjb3VudF8gPT0gcmhzLmNvdW50XyAmJiBtZW1jbXAoZGlnaXRzXywg
cmhzLmRpZ2l0c18sIGNvdW50XyAqIHNpemVvZihUeXBlKSkgPT0gMDsKLSAgICB9Ci0KLSAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVHlwZSByaHMpIGNvbnN0IHsKLSAgICAgICAgcmV0dXJuIGNv
dW50XyA9PSAxICYmIGRpZ2l0c19bMF0gPT0gcmhzOwotICAgIH0KLQotICAgIEJpZ0ludGVnZXIm
IE11bHRpcGx5UG93NSh1bnNpZ25lZCBleHApIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQz
Ml90IGtQb3c1WzEyXSA9IHsKLSAgICAgICAgICAgIDUsCi0gICAgICAgICAgICA1ICogNSwKLSAg
ICAgICAgICAgIDUgKiA1ICogNSwKLSAgICAgICAgICAgIDUgKiA1ICogNSAqIDUsCi0gICAgICAg
ICAgICA1ICogNSAqIDUgKiA1ICogNSwKLSAgICAgICAgICAgIDUgKiA1ICogNSAqIDUgKiA1ICog
NSwKLSAgICAgICAgICAgIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUsCi0gICAgICAgICAgICA1
ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSwKLSAgICAgICAgICAgIDUgKiA1ICogNSAqIDUg
KiA1ICogNSAqIDUgKiA1ICogNSwKLSAgICAgICAgICAgIDUgKiA1ICogNSAqIDUgKiA1ICogNSAq
IDUgKiA1ICogNSAqIDUsCi0gICAgICAgICAgICA1ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1ICog
NSAqIDUgKiA1ICogNSwKLSAgICAgICAgICAgIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1
ICogNSAqIDUgKiA1ICogNQotICAgICAgICB9OwotICAgICAgICBpZiAoZXhwID09IDApIHJldHVy
biAqdGhpczsKLSAgICAgICAgZm9yICg7IGV4cCA+PSAyNzsgZXhwIC09IDI3KSAqdGhpcyAqPSBS
QVBJREpTT05fVUlOVDY0X0MyKDBYNjc2NUM3OTMsIDBYRkExMDA3OUQpOyAvLyA1XjI3Ci0gICAg
ICAgIGZvciAoOyBleHAgPj0gMTM7IGV4cCAtPSAxMykgKnRoaXMgKj0gMTIyMDcwMzEyNXU7IC8v
IDVeMTMKLSAgICAgICAgaWYgKGV4cCA+IDApICAgICAgICAgICAgICAgICAqdGhpcyAqPSBrUG93
NVtleHAgLSAxXTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIC8vIENvbXB1
dGUgYWJzb2x1dGUgZGlmZmVyZW5jZSBvZiB0aGlzIGFuZCByaHMuCi0gICAgLy8gUmV0dXJuIGZh
bHNlIGlmIHRoaXMgPCByaHMKLSAgICBib29sIERpZmZlcmVuY2UoY29uc3QgQmlnSW50ZWdlciYg
cmhzLCBCaWdJbnRlZ2VyKiBvdXQpIGNvbnN0IHsKLSAgICAgICAgaW50IGNtcCA9IENvbXBhcmUo
cmhzKTsKLSAgICAgICAgaWYgKGNtcCA9PSAwKSB7Ci0gICAgICAgICAgICAqb3V0ID0gQmlnSW50
ZWdlcigwKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBj
b25zdCBCaWdJbnRlZ2VyICphLCAqYjsgIC8vIE1ha2VzIGEgPiBiCi0gICAgICAgIGJvb2wgcmV0
OwotICAgICAgICBpZiAoY21wIDwgMCkgeyBhID0gJnJoczsgYiA9IHRoaXM7IHJldCA9IHRydWU7
IH0KLSAgICAgICAgZWxzZSAgICAgICAgIHsgYSA9IHRoaXM7IGIgPSAmcmhzOyByZXQgPSBmYWxz
ZTsgfQotCi0gICAgICAgIFR5cGUgYm9ycm93ID0gMDsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhLT5jb3VudF87IGkrKykgewotICAgICAgICAgICAgVHlwZSBkID0gYS0+ZGlnaXRz
X1tpXSAtIGJvcnJvdzsKLSAgICAgICAgICAgIGlmIChpIDwgYi0+Y291bnRfKQotICAgICAgICAg
ICAgICAgIGQgLT0gYi0+ZGlnaXRzX1tpXTsKLSAgICAgICAgICAgIGJvcnJvdyA9IChkID4gYS0+
ZGlnaXRzX1tpXSkgPyAxIDogMDsKLSAgICAgICAgICAgIG91dC0+ZGlnaXRzX1tpXSA9IGQ7Ci0g
ICAgICAgICAgICBpZiAoZCAhPSAwKQotICAgICAgICAgICAgICAgIG91dC0+Y291bnRfID0gaSAr
IDE7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcmV0OwotICAgIH0KLQotICAgIGludCBD
b21wYXJlKGNvbnN0IEJpZ0ludGVnZXImIHJocykgY29uc3QgewotICAgICAgICBpZiAoY291bnRf
ICE9IHJocy5jb3VudF8pCi0gICAgICAgICAgICByZXR1cm4gY291bnRfIDwgcmhzLmNvdW50XyA/
IC0xIDogMTsKLQotICAgICAgICBmb3IgKHNpemVfdCBpID0gY291bnRfOyBpLS0gPiAwOykKLSAg
ICAgICAgICAgIGlmIChkaWdpdHNfW2ldICE9IHJocy5kaWdpdHNfW2ldKQotICAgICAgICAgICAg
ICAgIHJldHVybiBkaWdpdHNfW2ldIDwgcmhzLmRpZ2l0c19baV0gPyAtMSA6IDE7Ci0KLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgc2l6ZV90IEdldENvdW50KCkgY29uc3QgeyByZXR1
cm4gY291bnRfOyB9Ci0gICAgVHlwZSBHZXREaWdpdChzaXplX3QgaW5kZXgpIGNvbnN0IHsgUkFQ
SURKU09OX0FTU0VSVChpbmRleCA8IGNvdW50Xyk7IHJldHVybiBkaWdpdHNfW2luZGV4XTsgfQot
ICAgIGJvb2wgSXNaZXJvKCkgY29uc3QgeyByZXR1cm4gY291bnRfID09IDEgJiYgZGlnaXRzX1sw
XSA9PSAwOyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBBcHBlbmREZWNpbWFsNjQoY29uc3QgY2hh
ciogYmVnaW4sIGNvbnN0IGNoYXIqIGVuZCkgewotICAgICAgICB1aW50NjRfdCB1ID0gUGFyc2VV
aW50NjQoYmVnaW4sIGVuZCk7Ci0gICAgICAgIGlmIChJc1plcm8oKSkKLSAgICAgICAgICAgICp0
aGlzID0gdTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICB1bnNpZ25lZCBleHAgPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gYmVnaW4pOwotICAgICAgICAgICAgKE11bHRpcGx5UG93
NShleHApIDw8PSBleHApICs9IHU7ICAgLy8gKnRoaXMgPSAqdGhpcyAqIDEwXmV4cCArIHUKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgUHVzaEJhY2soVHlwZSBkaWdpdCkgewotICAgICAg
ICBSQVBJREpTT05fQVNTRVJUKGNvdW50XyA8IGtDYXBhY2l0eSk7Ci0gICAgICAgIGRpZ2l0c19b
Y291bnRfKytdID0gZGlnaXQ7Ci0gICAgfQotCi0gICAgc3RhdGljIHVpbnQ2NF90IFBhcnNlVWlu
dDY0KGNvbnN0IGNoYXIqIGJlZ2luLCBjb25zdCBjaGFyKiBlbmQpIHsKLSAgICAgICAgdWludDY0
X3QgciA9IDA7Ci0gICAgICAgIGZvciAoY29uc3QgY2hhciogcCA9IGJlZ2luOyBwICE9IGVuZDsg
KytwKSB7Ci0gICAgICAgICAgICBSQVBJREpTT05fQVNTRVJUKCpwID49ICcwJyAmJiAqcCA8PSAn
OScpOwotICAgICAgICAgICAgciA9IHIgKiAxMCArICgqcCAtICcwJyk7Ci0gICAgICAgIH0KLSAg
ICAgICAgcmV0dXJuIHI7Ci0gICAgfQotCi0gICAgLy8gQXNzdW1lIGEgKiBiICsgayA8IDJeMTI4
Ci0gICAgc3RhdGljIHVpbnQ2NF90IE11bEFkZDY0KHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIsIHVp
bnQ2NF90IGssIHVpbnQ2NF90KiBvdXRIaWdoKSB7Ci0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYg
ZGVmaW5lZChfTV9BTUQ2NCkKLSAgICAgICAgdWludDY0X3QgbG93ID0gX3VtdWwxMjgoYSwgYiwg
b3V0SGlnaCkgKyBrOwotICAgICAgICBpZiAobG93IDwgaykKLSAgICAgICAgICAgICgqb3V0SGln
aCkrKzsKLSAgICAgICAgcmV0dXJuIGxvdzsKLSNlbGlmIChfX0dOVUNfXyA+IDQgfHwgKF9fR05V
Q19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gNikpICYmIGRlZmluZWQoX194ODZfNjRfXykK
LSAgICAgICAgdW5zaWduZWQgX19pbnQxMjggcCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIF9faW50
MTI4PihhKSAqIHN0YXRpY19jYXN0PHVuc2lnbmVkIF9faW50MTI4PihiKTsKLSAgICAgICAgcCAr
PSBrOwotICAgICAgICAqb3V0SGlnaCA9IHAgPj4gNjQ7Ci0gICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4ocCk7Ci0jZWxzZQotICAgICAgICBjb25zdCB1aW50NjRfdCBhMCA9IGEg
JiAweEZGRkZGRkZGLCBhMSA9IGEgPj4gMzIsIGIwID0gYiAmIDB4RkZGRkZGRkYsIGIxID0gYiA+
PiAzMjsKLSAgICAgICAgdWludDY0X3QgeDAgPSBhMCAqIGIwLCB4MSA9IGEwICogYjEsIHgyID0g
YTEgKiBiMCwgeDMgPSBhMSAqIGIxOwotICAgICAgICB4MSArPSAoeDAgPj4gMzIpOyAvLyBjYW4n
dCBnaXZlIGNhcnJ5Ci0gICAgICAgIHgxICs9IHgyOwotICAgICAgICBpZiAoeDEgPCB4MikKLSAg
ICAgICAgICAgIHgzICs9IChzdGF0aWNfY2FzdDx1aW50NjRfdD4oMSkgPDwgMzIpOwotICAgICAg
ICB1aW50NjRfdCBsbyA9ICh4MSA8PCAzMikgKyAoeDAgJiAweEZGRkZGRkZGKTsKLSAgICAgICAg
dWludDY0X3QgaGkgPSB4MyArICh4MSA+PiAzMik7Ci0KLSAgICAgICAgbG8gKz0gazsKLSAgICAg
ICAgaWYgKGxvIDwgaykKLSAgICAgICAgICAgIGhpKys7Ci0gICAgICAgICpvdXRIaWdoID0gaGk7
Ci0gICAgICAgIHJldHVybiBsbzsKLSNlbmRpZgotICAgIH0KLQotICAgIHN0YXRpYyBUeXBlIEZ1
bGxBZGQoVHlwZSBhLCBUeXBlIGIsIGJvb2wgaW5DYXJyeSwgYm9vbCogb3V0Q2FycnkpIHsKLSAg
ICAgICAgVHlwZSBjID0gYSArIGIgKyAoaW5DYXJyeSA/IDEgOiAwKTsKLSAgICAgICAgKm91dENh
cnJ5ID0gYyA8IGE7Ci0gICAgICAgIHJldHVybiBjOwotICAgIH0KLQotICAgIHN0YXRpYyBjb25z
dCBzaXplX3Qga0JpdENvdW50ID0gMzMyODsgIC8vIDY0Yml0ICogNTQgPiAxMF4xMDAwCi0gICAg
c3RhdGljIGNvbnN0IHNpemVfdCBrQ2FwYWNpdHkgPSBrQml0Q291bnQgLyBzaXplb2YoVHlwZSk7
Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBrVHlwZUJpdCA9IHNpemVvZihUeXBlKSAqIDg7Ci0K
LSAgICBUeXBlIGRpZ2l0c19ba0NhcGFjaXR5XTsKLSAgICBzaXplX3QgY291bnRfOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLVJBUElESlNPTl9OQU1FU1BBQ0VfRU5ECi0KLSNlbmRp
ZiAvLyBSQVBJREpTT05fQklHSU5URUdFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNv
bi9pbnRlcm5hbC9kaXlmcC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Ro
aXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9kaXlmcC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzRiOWZhY2ZiMGZkMDIxODQ3OWU1OTRhMjg4
YjhlMjg5NDM3MjRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpz
b24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvZGl5ZnAuaAorKysgL2Rldi9udWxsCkBAIC0x
LDI2OCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAKLS8vCi0vLyBQZXJt
aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv
YnRhaW5pbmcgYSBjb3B5Ci0vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt
ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAotLy8gaW4gdGhlIFNvZnR3
YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhl
IHJpZ2h0cwotLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli
dXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg
YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0vLyBmdXJuaXNo
ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotLy8KLS8v
IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo
YWxsIGJlIGluY2x1ZGVkIGluCi0vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z
IG9mIHRoZSBTb2Z0d2FyZS4KLS8vCi0vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT
IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotLy8gSU1QTElFRCwg
SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFksCi0vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO
R0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLS8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP
TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLS8vIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF
LCBBUklTSU5HIEZST00sCi0vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU
V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCi0vLyBUSEUgU09GVFdBUkUuCi0K
LS8vIFRoaXMgaXMgYSBDKysgaGVhZGVyLW9ubHkgaW1wbGVtZW50YXRpb24gb2YgR3Jpc3UyIGFs
Z29yaXRobSBmcm9tIHRoZSBwdWJsaWNhdGlvbjoKLS8vIExvaXRzY2gsIEZsb3JpYW4uICJQcmlu
dGluZyBmbG9hdGluZy1wb2ludCBudW1iZXJzIHF1aWNrbHkgYW5kIGFjY3VyYXRlbHkgd2l0aAot
Ly8gaW50ZWdlcnMuIiBBQ00gU2lncGxhbiBOb3RpY2VzIDQ1LjYgKDIwMTApOiAyMzMtMjQzLgot
Ci0jaWZuZGVmIFJBUElESlNPTl9ESVlGUF9IXwotI2RlZmluZSBSQVBJREpTT05fRElZRlBfSF8K
LQotI2lmIGRlZmluZWQoX01TQ19WRVIpCi0jaW5jbHVkZSA8aW50cmluLmg+Ci0jaWYgZGVmaW5l
ZChfTV9BTUQ2NCkKLSNwcmFnbWEgaW50cmluc2ljKF9CaXRTY2FuUmV2ZXJzZTY0KQotI2VuZGlm
Ci0jZW5kaWYKLQotUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgotbmFtZXNwYWNlIGludGVybmFs
IHsKLQotI2lmZGVmIF9fR05VQ19fCi1SQVBJREpTT05fRElBR19QVVNICi1SQVBJREpTT05fRElB
R19PRkYoZWZmYysrKQotI2VuZGlmCi0KLXN0cnVjdCBEaXlGcCB7Ci0gICAgRGl5RnAoKSB7fQot
Ci0gICAgRGl5RnAodWludDY0X3QgZnAsIGludCBleHApIDogZihmcCksIGUoZXhwKSB7fQotCi0g
ICAgZXhwbGljaXQgRGl5RnAoZG91YmxlIGQpIHsKLSAgICAgICAgdW5pb24gewotICAgICAgICAg
ICAgZG91YmxlIGQ7Ci0gICAgICAgICAgICB1aW50NjRfdCB1NjQ7Ci0gICAgICAgIH0gdSA9IHsg
ZCB9OwotCi0gICAgICAgIGludCBiaWFzZWRfZSA9ICh1LnU2NCAmIGtEcEV4cG9uZW50TWFzaykg
Pj4ga0RwU2lnbmlmaWNhbmRTaXplOwotICAgICAgICB1aW50NjRfdCBzaWduaWZpY2FuZCA9ICh1
LnU2NCAmIGtEcFNpZ25pZmljYW5kTWFzayk7Ci0gICAgICAgIGlmIChiaWFzZWRfZSAhPSAwKSB7
Ci0gICAgICAgICAgICBmID0gc2lnbmlmaWNhbmQgKyBrRHBIaWRkZW5CaXQ7Ci0gICAgICAgICAg
ICBlID0gYmlhc2VkX2UgLSBrRHBFeHBvbmVudEJpYXM7Ci0gICAgICAgIH0gCi0gICAgICAgIGVs
c2UgewotICAgICAgICAgICAgZiA9IHNpZ25pZmljYW5kOwotICAgICAgICAgICAgZSA9IGtEcE1p
bkV4cG9uZW50ICsgMTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIERpeUZwIG9wZXJhdG9yLShj
b25zdCBEaXlGcCYgcmhzKSBjb25zdCB7Ci0gICAgICAgIHJldHVybiBEaXlGcChmIC0gcmhzLmYs
IGUpOwotICAgIH0KLQotICAgIERpeUZwIG9wZXJhdG9yKihjb25zdCBEaXlGcCYgcmhzKSBjb25z
dCB7Ci0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZChfTV9BTUQ2NCkKLSAgICAgICAg
dWludDY0X3QgaDsKLSAgICAgICAgdWludDY0X3QgbCA9IF91bXVsMTI4KGYsIHJocy5mLCAmaCk7
Ci0gICAgICAgIGlmIChsICYgKHVpbnQ2NF90KDEpIDw8IDYzKSkgLy8gcm91bmRpbmcKLSAgICAg
ICAgICAgIGgrKzsKLSAgICAgICAgcmV0dXJuIERpeUZwKGgsIGUgKyByaHMuZSArIDY0KTsKLSNl
bGlmIChfX0dOVUNfXyA+IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0g
NikpICYmIGRlZmluZWQoX194ODZfNjRfXykKLSAgICAgICAgdW5zaWduZWQgX19pbnQxMjggcCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIF9faW50MTI4PihmKSAqIHN0YXRpY19jYXN0PHVuc2lnbmVk
IF9faW50MTI4PihyaHMuZik7Ci0gICAgICAgIHVpbnQ2NF90IGggPSBwID4+IDY0OwotICAgICAg
ICB1aW50NjRfdCBsID0gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHApOwotICAgICAgICBpZiAobCAm
ICh1aW50NjRfdCgxKSA8PCA2MykpIC8vIHJvdW5kaW5nCi0gICAgICAgICAgICBoKys7Ci0gICAg
ICAgIHJldHVybiBEaXlGcChoLCBlICsgcmhzLmUgKyA2NCk7Ci0jZWxzZQotICAgICAgICBjb25z
dCB1aW50NjRfdCBNMzIgPSAweEZGRkZGRkZGOwotICAgICAgICBjb25zdCB1aW50NjRfdCBhID0g
ZiA+PiAzMjsKLSAgICAgICAgY29uc3QgdWludDY0X3QgYiA9IGYgJiBNMzI7Ci0gICAgICAgIGNv
bnN0IHVpbnQ2NF90IGMgPSByaHMuZiA+PiAzMjsKLSAgICAgICAgY29uc3QgdWludDY0X3QgZCA9
IHJocy5mICYgTTMyOwotICAgICAgICBjb25zdCB1aW50NjRfdCBhYyA9IGEgKiBjOwotICAgICAg
ICBjb25zdCB1aW50NjRfdCBiYyA9IGIgKiBjOwotICAgICAgICBjb25zdCB1aW50NjRfdCBhZCA9
IGEgKiBkOwotICAgICAgICBjb25zdCB1aW50NjRfdCBiZCA9IGIgKiBkOwotICAgICAgICB1aW50
NjRfdCB0bXAgPSAoYmQgPj4gMzIpICsgKGFkICYgTTMyKSArIChiYyAmIE0zMik7Ci0gICAgICAg
IHRtcCArPSAxVSA8PCAzMTsgIC8vLyBtdWx0X3JvdW5kCi0gICAgICAgIHJldHVybiBEaXlGcChh
YyArIChhZCA+PiAzMikgKyAoYmMgPj4gMzIpICsgKHRtcCA+PiAzMiksIGUgKyByaHMuZSArIDY0
KTsKLSNlbmRpZgotICAgIH0KLQotICAgIERpeUZwIE5vcm1hbGl6ZSgpIGNvbnN0IHsKLSNpZiBk
ZWZpbmVkKF9NU0NfVkVSKSAmJiBkZWZpbmVkKF9NX0FNRDY0KQotICAgICAgICB1bnNpZ25lZCBs
b25nIGluZGV4OwotICAgICAgICBfQml0U2NhblJldmVyc2U2NCgmaW5kZXgsIGYpOwotICAgICAg
ICByZXR1cm4gRGl5RnAoZiA8PCAoNjMgLSBpbmRleCksIGUgLSAoNjMgLSBpbmRleCkpOwotI2Vs
aWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPj0gNAotICAgICAgICBpbnQgcyA9IF9f
YnVpbHRpbl9jbHpsbChmKTsKLSAgICAgICAgcmV0dXJuIERpeUZwKGYgPDwgcywgZSAtIHMpOwot
I2Vsc2UKLSAgICAgICAgRGl5RnAgcmVzID0gKnRoaXM7Ci0gICAgICAgIHdoaWxlICghKHJlcy5m
ICYgKHN0YXRpY19jYXN0PHVpbnQ2NF90PigxKSA8PCA2MykpKSB7Ci0gICAgICAgICAgICByZXMu
ZiA8PD0gMTsKLSAgICAgICAgICAgIHJlcy5lLS07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IHJlczsKLSNlbmRpZgotICAgIH0KLQotICAgIERpeUZwIE5vcm1hbGl6ZUJvdW5kYXJ5KCkgY29u
c3QgewotICAgICAgICBEaXlGcCByZXMgPSAqdGhpczsKLSAgICAgICAgd2hpbGUgKCEocmVzLmYg
JiAoa0RwSGlkZGVuQml0IDw8IDEpKSkgewotICAgICAgICAgICAgcmVzLmYgPDw9IDE7Ci0gICAg
ICAgICAgICByZXMuZS0tOwotICAgICAgICB9Ci0gICAgICAgIHJlcy5mIDw8PSAoa0RpeVNpZ25p
ZmljYW5kU2l6ZSAtIGtEcFNpZ25pZmljYW5kU2l6ZSAtIDIpOwotICAgICAgICByZXMuZSA9IHJl
cy5lIC0gKGtEaXlTaWduaWZpY2FuZFNpemUgLSBrRHBTaWduaWZpY2FuZFNpemUgLSAyKTsKLSAg
ICAgICAgcmV0dXJuIHJlczsKLSAgICB9Ci0KLSAgICB2b2lkIE5vcm1hbGl6ZWRCb3VuZGFyaWVz
KERpeUZwKiBtaW51cywgRGl5RnAqIHBsdXMpIGNvbnN0IHsKLSAgICAgICAgRGl5RnAgcGwgPSBE
aXlGcCgoZiA8PCAxKSArIDEsIGUgLSAxKS5Ob3JtYWxpemVCb3VuZGFyeSgpOwotICAgICAgICBE
aXlGcCBtaSA9IChmID09IGtEcEhpZGRlbkJpdCkgPyBEaXlGcCgoZiA8PCAyKSAtIDEsIGUgLSAy
KSA6IERpeUZwKChmIDw8IDEpIC0gMSwgZSAtIDEpOwotICAgICAgICBtaS5mIDw8PSBtaS5lIC0g
cGwuZTsKLSAgICAgICAgbWkuZSA9IHBsLmU7Ci0gICAgICAgICpwbHVzID0gcGw7Ci0gICAgICAg
ICptaW51cyA9IG1pOwotICAgIH0KLQotICAgIGRvdWJsZSBUb0RvdWJsZSgpIGNvbnN0IHsKLSAg
ICAgICAgdW5pb24gewotICAgICAgICAgICAgZG91YmxlIGQ7Ci0gICAgICAgICAgICB1aW50NjRf
dCB1NjQ7Ci0gICAgICAgIH11OwotICAgICAgICB1aW50NjRfdCBzaWduaWZpY2FuZCA9IGY7Ci0g
ICAgICAgIGludCBleHBvbmVudCA9IGU7Ci0gICAgICAgIHdoaWxlIChzaWduaWZpY2FuZCA+IGtE
cEhpZGRlbkJpdCArIGtEcFNpZ25pZmljYW5kTWFzaykgewotICAgICAgICAgICAgc2lnbmlmaWNh
bmQgPj49IDE7Ci0gICAgICAgICAgICBleHBvbmVudCsrOwotICAgICAgICB9Ci0gICAgICAgIHdo
aWxlIChleHBvbmVudCA+IGtEcERlbm9ybWFsRXhwb25lbnQgJiYgKHNpZ25pZmljYW5kICYga0Rw
SGlkZGVuQml0KSA9PSAwKSB7Ci0gICAgICAgICAgICBzaWduaWZpY2FuZCA8PD0gMTsKLSAgICAg
ICAgICAgIGV4cG9uZW50LS07Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGV4cG9uZW50ID49IGtE
cE1heEV4cG9uZW50KSB7Ci0gICAgICAgICAgICB1LnU2NCA9IGtEcEV4cG9uZW50TWFzazsgICAg
Ly8gSW5maW5pdHkKLSAgICAgICAgICAgIHJldHVybiB1LmQ7Ci0gICAgICAgIH0KLSAgICAgICAg
ZWxzZSBpZiAoZXhwb25lbnQgPCBrRHBEZW5vcm1hbEV4cG9uZW50KQotICAgICAgICAgICAgcmV0
dXJuIDAuMDsKLSAgICAgICAgY29uc3QgdWludDY0X3QgYmUgPSAoZXhwb25lbnQgPT0ga0RwRGVu
b3JtYWxFeHBvbmVudCAmJiAoc2lnbmlmaWNhbmQgJiBrRHBIaWRkZW5CaXQpID09IDApID8gMCA6
IAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGV4cG9uZW50ICsga0RwRXhwb25l
bnRCaWFzKTsKLSAgICAgICAgdS51NjQgPSAoc2lnbmlmaWNhbmQgJiBrRHBTaWduaWZpY2FuZE1h
c2spIHwgKGJlIDw8IGtEcFNpZ25pZmljYW5kU2l6ZSk7Ci0gICAgICAgIHJldHVybiB1LmQ7Ci0g
ICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGludCBrRGl5U2lnbmlmaWNhbmRTaXplID0gNjQ7Ci0g
ICAgc3RhdGljIGNvbnN0IGludCBrRHBTaWduaWZpY2FuZFNpemUgPSA1MjsKLSAgICBzdGF0aWMg
Y29uc3QgaW50IGtEcEV4cG9uZW50QmlhcyA9IDB4M0ZGICsga0RwU2lnbmlmaWNhbmRTaXplOwot
ICAgIHN0YXRpYyBjb25zdCBpbnQga0RwTWF4RXhwb25lbnQgPSAweDdGRiAtIGtEcEV4cG9uZW50
QmlhczsKLSAgICBzdGF0aWMgY29uc3QgaW50IGtEcE1pbkV4cG9uZW50ID0gLWtEcEV4cG9uZW50
QmlhczsKLSAgICBzdGF0aWMgY29uc3QgaW50IGtEcERlbm9ybWFsRXhwb25lbnQgPSAta0RwRXhw
b25lbnRCaWFzICsgMTsKLSAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qga0RwRXhwb25lbnRNYXNr
ID0gUkFQSURKU09OX1VJTlQ2NF9DMigweDdGRjAwMDAwLCAweDAwMDAwMDAwKTsKLSAgICBzdGF0
aWMgY29uc3QgdWludDY0X3Qga0RwU2lnbmlmaWNhbmRNYXNrID0gUkFQSURKU09OX1VJTlQ2NF9D
MigweDAwMEZGRkZGLCAweEZGRkZGRkZGKTsKLSAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qga0Rw
SGlkZGVuQml0ID0gUkFQSURKU09OX1VJTlQ2NF9DMigweDAwMTAwMDAwLCAweDAwMDAwMDAwKTsK
LQotICAgIHVpbnQ2NF90IGY7Ci0gICAgaW50IGU7Ci19OwotCi1pbmxpbmUgRGl5RnAgR2V0Q2Fj
aGVkUG93ZXJCeUluZGV4KHNpemVfdCBpbmRleCkgewotICAgIC8vIDEwXi0zNDgsIDEwXi0zNDAs
IC4uLiwgMTBeMzQwCi0gICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGtDYWNoZWRQb3dlcnNfRltd
ID0gewotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZmE4ZmQ1YTAsIDB4MDgxYzAyODgp
LCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YmFhZWUxN2YsIDB4YTIzZWJmNzYpLAotICAgICAgICBS
QVBJREpTT05fVUlOVDY0X0MyKDB4OGIxNmZiMjAsIDB4MzA1NWFjNzYpLCBSQVBJREpTT05fVUlO
VDY0X0MyKDB4Y2Y0Mjg5NGEsIDB4NWRjZTM1ZWEpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0
X0MyKDB4OWE2YmIwYWEsIDB4NTU2NTNiMmQpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZTYxYWNm
MDMsIDB4M2QxYTQ1ZGYpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YWI3MGZlMTcs
IDB4Yzc5YWM2Y2EpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZmY3N2IxZmMsIDB4YmViY2RjNGYp
LAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YmU1NjkxZWYsIDB4NDE2YmQ2MGMpLCBS
QVBJREpTT05fVUlOVDY0X0MyKDB4OGRkMDFmYWQsIDB4OTA3ZmZjM2MpLAotICAgICAgICBSQVBJ
REpTT05fVUlOVDY0X0MyKDB4ZDM1MTVjMjgsIDB4MzE1NTlhODMpLCBSQVBJREpTT05fVUlOVDY0
X0MyKDB4OWQ3MWFjOGYsIDB4YWRhNmM5YjUpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0My
KDB4ZWE5YzIyNzcsIDB4MjNlZThiY2IpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YWVjYzQ5OTEs
IDB4NDA3ODUzNmQpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ODIzYzEyNzksIDB4
NWRiNmNlNTcpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YzIxMDk0MzYsIDB4NGRmYjU2MzcpLAot
ICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4OTA5NmVhNmYsIDB4Mzg0ODk4NGYpLCBSQVBJ
REpTT05fVUlOVDY0X0MyKDB4ZDc3NDg1Y2IsIDB4MjU4MjNhYzcpLAotICAgICAgICBSQVBJREpT
T05fVUlOVDY0X0MyKDB4YTA4NmNmY2QsIDB4OTdiZjk3ZjQpLCBSQVBJREpTT05fVUlOVDY0X0My
KDB4ZWYzNDBhOTgsIDB4MTcyYWFjZTUpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4
YjIzODY3ZmIsIDB4MmEzNWIyOGUpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ODRjOGQ0ZGYsIDB4
ZDJjNjNmM2IpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YzVkZDQ0MjcsIDB4MWFk
M2NkYmEpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4OTM2YjlmY2UsIDB4YmIyNWM5OTYpLAotICAg
ICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZGJhYzZjMjQsIDB4N2Q2MmE1ODQpLCBSQVBJREpT
T05fVUlOVDY0X0MyKDB4YTNhYjY2NTgsIDB4MGQ1ZmRhZjYpLAotICAgICAgICBSQVBJREpTT05f
VUlOVDY0X0MyKDB4ZjNlMmY4OTMsIDB4ZGVjM2YxMjYpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4
YjViNWFkYTgsIDB4YWFmZjgwYjgpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ODc2
MjVmMDUsIDB4NmM3YzRhOGIpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YzliY2ZmNjAsIDB4MzRj
MTMwNTMpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4OTY0ZTg1OGMsIDB4OTFiYTI2
NTUpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZGZmOTc3MjQsIDB4NzAyOTdlYmQpLAotICAgICAg
ICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YTZkZmJkOWYsIDB4YjhlNWI4OGYpLCBSQVBJREpTT05f
VUlOVDY0X0MyKDB4ZjhhOTVmY2YsIDB4ODg3NDdkOTQpLAotICAgICAgICBSQVBJREpTT05fVUlO
VDY0X0MyKDB4Yjk0NDcwOTMsIDB4OGZhODliY2YpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4OGEw
OGYwZjgsIDB4YmYwZjE1NmIpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4Y2RiMDI1
NTUsIDB4NjUzMTMxYjYpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4OTkzZmUyYzYsIDB4ZDA3Yjdm
YWMpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZTQ1YzEwYzQsIDB4MmEyYjNiMDYp
LCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YWEyNDI0OTksIDB4Njk3MzkyZDMpLAotICAgICAgICBS
QVBJREpTT05fVUlOVDY0X0MyKDB4ZmQ4N2I1ZjIsIDB4ODMwMGNhMGUpLCBSQVBJREpTT05fVUlO
VDY0X0MyKDB4YmNlNTA4NjQsIDB4OTIxMTFhZWIpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0
X0MyKDB4OGNiY2NjMDksIDB4NmY1MDg4Y2MpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZDFiNzE3
NTgsIDB4ZTIxOTY1MmMpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4OWM0MDAwMDAs
IDB4MDAwMDAwMDApLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZThkNGE1MTAsIDB4MDAwMDAwMDAp
LAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YWQ3OGViYzUsIDB4YWM2MjAwMDApLCBS
QVBJREpTT05fVUlOVDY0X0MyKDB4ODEzZjM5NzgsIDB4Zjg5NDA5ODQpLAotICAgICAgICBSQVBJ
REpTT05fVUlOVDY0X0MyKDB4YzA5N2NlN2IsIDB4YzkwNzE1YjMpLCBSQVBJREpTT05fVUlOVDY0
X0MyKDB4OGY3ZTMyY2UsIDB4N2JlYTVjNzApLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0My
KDB4ZDVkMjM4YTQsIDB4YWJlOTgwNjgpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4OWY0ZjI3MjYs
IDB4MTc5YTIyNDUpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZWQ2M2EyMzEsIDB4
ZDRjNGZiMjcpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YjBkZTY1MzgsIDB4OGNjOGFkYTgpLAot
ICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ODNjNzA4OGUsIDB4MWFhYjY1ZGIpLCBSQVBJ
REpTT05fVUlOVDY0X0MyKDB4YzQ1ZDFkZjksIDB4NDI3MTFkOWEpLAotICAgICAgICBSQVBJREpT
T05fVUlOVDY0X0MyKDB4OTI0ZDY5MmMsIDB4YTYxYmU3NTgpLCBSQVBJREpTT05fVUlOVDY0X0My
KDB4ZGEwMWVlNjQsIDB4MWE3MDhkZWEpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4
YTI2ZGEzOTksIDB4OWFlZjc3NGEpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZjIwOTc4N2IsIDB4
YjQ3ZDZiODUpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YjQ1NGU0YTEsIDB4Nzlk
ZDE4NzcpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ODY1Yjg2OTIsIDB4NWI5YmM1YzIpLAotICAg
ICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YzgzNTUzYzUsIDB4Yzg5NjVkM2QpLCBSQVBJREpT
T05fVUlOVDY0X0MyKDB4OTUyYWI0NWMsIDB4ZmE5N2EwYjMpLAotICAgICAgICBSQVBJREpTT05f
VUlOVDY0X0MyKDB4ZGU0NjlmYmQsIDB4OTlhMDVmZTMpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4
YTU5YmMyMzQsIDB4ZGIzOThjMjUpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZjZj
NjlhNzIsIDB4YTM5ODlmNWMpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YjdkY2JmNTMsIDB4NTRl
OWJlY2UpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ODhmY2YzMTcsIDB4ZjIyMjQx
ZTIpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4Y2MyMGNlOWIsIDB4ZDM1Yzc4YTUpLAotICAgICAg
ICBSQVBJREpTT05fVUlOVDY0X0MyKDB4OTgxNjVhZjMsIDB4N2IyMTUzZGYpLCBSQVBJREpTT05f
VUlOVDY0X0MyKDB4ZTJhMGI1ZGMsIDB4OTcxZjMwM2EpLAotICAgICAgICBSQVBJREpTT05fVUlO
VDY0X0MyKDB4YThkOWQxNTMsIDB4NWNlM2IzOTYpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZmI5
YjdjZDksIDB4YTRhNzQ0M2MpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4YmI3NjRj
NGMsIDB4YTdhNDQ0MTApLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4OGJhYjhlZWYsIDB4YjY0MDlj
MWEpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZDAxZmVmMTAsIDB4YTY1Nzg0MmMp
LCBSQVBJREpTT05fVUlOVDY0X0MyKDB4OWIxMGE0ZTUsIDB4ZTk5MTMxMjkpLAotICAgICAgICBS
QVBJREpTT05fVUlOVDY0X0MyKDB4ZTcxMDliZmIsIDB4YTE5YzBjOWQpLCBSQVBJREpTT05fVUlO
VDY0X0MyKDB4YWMyODIwZDksIDB4NjIzYmY0MjkpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0
X0MyKDB4ODA0NDRiNWUsIDB4N2FhN2NmODUpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4YmYyMWU0
NDAsIDB4MDNhY2RkMmQpLAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4OGU2NzljMmYs
IDB4NWU0NGZmOGYpLCBSQVBJREpTT05fVUlOVDY0X0MyKDB4ZDQzMzE3OWQsIDB4OWM4Y2I4NDEp
LAotICAgICAgICBSQVBJREpTT05fVUlOVDY0X0MyKDB4OWUxOWRiOTIsIDB4YjRlMzFiYTkpLCBS
QVBJREpTT05fVUlOVDY0X0MyKDB4ZWI5NmJmNmUsIDB4YmFkZjc3ZDkpLAotICAgICAgICBSQVBJ
REpTT05fVUlOVDY0X0MyKDB4YWY4NzAyM2IsIDB4OWJmMGVlNmIpCi0gICAgfTsKLSAgICBzdGF0
aWMgY29uc3QgaW50MTZfdCBrQ2FjaGVkUG93ZXJzX0VbXSA9IHsKLSAgICAgICAgLTEyMjAsIC0x
MTkzLCAtMTE2NiwgLTExNDAsIC0xMTEzLCAtMTA4NywgLTEwNjAsIC0xMDM0LCAtMTAwNywgIC05
ODAsCi0gICAgICAgIC05NTQsICAtOTI3LCAgLTkwMSwgIC04NzQsICAtODQ3LCAgLTgyMSwgIC03
OTQsICAtNzY4LCAgLTc0MSwgIC03MTUsCi0gICAgICAgIC02ODgsICAtNjYxLCAgLTYzNSwgIC02
MDgsICAtNTgyLCAgLTU1NSwgIC01MjksICAtNTAyLCAgLTQ3NSwgIC00NDksCi0gICAgICAgIC00
MjIsICAtMzk2LCAgLTM2OSwgIC0zNDMsICAtMzE2LCAgLTI4OSwgIC0yNjMsICAtMjM2LCAgLTIx
MCwgIC0xODMsCi0gICAgICAgIC0xNTcsICAtMTMwLCAgLTEwMywgICAtNzcsICAgLTUwLCAgIC0y
NCwgICAgIDMsICAgIDMwLCAgICA1NiwgICAgODMsCi0gICAgICAgIDEwOSwgICAxMzYsICAgMTYy
LCAgIDE4OSwgICAyMTYsICAgMjQyLCAgIDI2OSwgICAyOTUsICAgMzIyLCAgIDM0OCwKLSAgICAg
ICAgMzc1LCAgIDQwMiwgICA0MjgsICAgNDU1LCAgIDQ4MSwgICA1MDgsICAgNTM0LCAgIDU2MSwg
ICA1ODgsICAgNjE0LAotICAgICAgICA2NDEsICAgNjY3LCAgIDY5NCwgICA3MjAsICAgNzQ3LCAg
IDc3NCwgICA4MDAsICAgODI3LCAgIDg1MywgICA4ODAsCi0gICAgICAgIDkwNywgICA5MzMsICAg
OTYwLCAgIDk4NiwgIDEwMTMsICAxMDM5LCAgMTA2NgotICAgIH07Ci0gICAgcmV0dXJuIERpeUZw
KGtDYWNoZWRQb3dlcnNfRltpbmRleF0sIGtDYWNoZWRQb3dlcnNfRVtpbmRleF0pOwotfQotICAg
IAotaW5saW5lIERpeUZwIEdldENhY2hlZFBvd2VyKGludCBlLCBpbnQqIEspIHsKLQotICAgIC8v
aW50IGsgPSBzdGF0aWNfY2FzdDxpbnQ+KGNlaWwoKC02MSAtIGUpICogMC4zMDEwMjk5OTU2NjM5
ODExNCkpICsgMzc0OwotICAgIGRvdWJsZSBkayA9ICgtNjEgLSBlKSAqIDAuMzAxMDI5OTk1NjYz
OTgxMTQgKyAzNDc7ICAvLyBkayBtdXN0IGJlIHBvc2l0aXZlLCBzbyBjYW4gZG8gY2VpbGluZyBp
biBwb3NpdGl2ZQotICAgIGludCBrID0gc3RhdGljX2Nhc3Q8aW50Pihkayk7Ci0gICAgaWYgKGsg
IT0gZGspCi0gICAgICAgIGsrKzsKLQotICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KChrID4+IDMpICsgMSk7Ci0gICAgKksgPSAtKC0zNDggKyBzdGF0aWNfY2FzdDxp
bnQ+KGluZGV4IDw8IDMpKTsgICAgLy8gZGVjaW1hbCBleHBvbmVudCBubyBuZWVkIGxvb2t1cCB0
YWJsZQotCi0gICAgcmV0dXJuIEdldENhY2hlZFBvd2VyQnlJbmRleChpbmRleCk7Ci19Ci0KLWlu
bGluZSBEaXlGcCBHZXRDYWNoZWRQb3dlcjEwKGludCBleHAsIGludCAqb3V0RXhwKSB7Ci0gICAg
IHVuc2lnbmVkIGluZGV4ID0gKGV4cCArIDM0OCkgLyA4OwotICAgICAqb3V0RXhwID0gLTM0OCAr
IGluZGV4ICogODsKLSAgICAgcmV0dXJuIEdldENhY2hlZFBvd2VyQnlJbmRleChpbmRleCk7Ci0g
fQotCi0jaWZkZWYgX19HTlVDX18KLVJBUElESlNPTl9ESUFHX1BPUAotI2VuZGlmCi0KLX0gLy8g
bmFtZXNwYWNlIGludGVybmFsCi1SQVBJREpTT05fTkFNRVNQQUNFX0VORAotCi0jZW5kaWYgLy8g
UkFQSURKU09OX0RJWUZQX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFs
L2R0b2EuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9y
YXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvZHRvYS5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjMGZhMmI4OTA4NWMwZGU5MTZjMjc1MTVjOTZiYjJkMzgwNTk1NTgx
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9y
YXBpZGpzb24vaW50ZXJuYWwvZHRvYS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjI1ICswLDAgQEAK
LS8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAotLy8KLS8vIFBlcm1pc3Npb24gaXMgaGVy
ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNv
cHkKLS8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl
cyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCi0vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy
ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi0vLyB0
byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu
c2UsIGFuZC9vciBzZWxsCi0vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0
IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLS8vIGZ1cm5pc2hlZCB0byBkbyBzbywg
c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0vLwotLy8gVGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVk
ZWQgaW4KLS8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3
YXJlLgotLy8KLS8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB
UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVU
IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLS8vIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRQotLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC
TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotLy8gTElBQklMSVRZLCBXSEVUSEVS
IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJP
TSwKLS8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV
U0UgT1IgT1RIRVIgREVBTElOR1MgSU4KLS8vIFRIRSBTT0ZUV0FSRS4KLQotLy8gVGhpcyBpcyBh
IEMrKyBoZWFkZXItb25seSBpbXBsZW1lbnRhdGlvbiBvZiBHcmlzdTIgYWxnb3JpdGhtIGZyb20g
dGhlIHB1YmxpY2F0aW9uOgotLy8gTG9pdHNjaCwgRmxvcmlhbi4gIlByaW50aW5nIGZsb2F0aW5n
LXBvaW50IG51bWJlcnMgcXVpY2tseSBhbmQgYWNjdXJhdGVseSB3aXRoCi0vLyBpbnRlZ2Vycy4i
IEFDTSBTaWdwbGFuIE5vdGljZXMgNDUuNiAoMjAxMCk6IDIzMy0yNDMuCi0KLSNpZm5kZWYgUkFQ
SURKU09OX0RUT0FfCi0jZGVmaW5lIFJBUElESlNPTl9EVE9BXwotCi0jaW5jbHVkZSAiaXRvYS5o
IiAvLyBHZXREaWdpdHNMdXQoKQotI2luY2x1ZGUgImRpeWZwLmgiCi0KLVJBUElESlNPTl9OQU1F
U1BBQ0VfQkVHSU4KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLSNpZmRlZiBfX0dOVUNfXwotUkFQ
SURKU09OX0RJQUdfUFVTSAotUkFQSURKU09OX0RJQUdfT0ZGKGVmZmMrKykKLSNlbmRpZgotCi1p
bmxpbmUgdm9pZCBHcmlzdVJvdW5kKGNoYXIqIGJ1ZmZlciwgaW50IGxlbiwgdWludDY0X3QgZGVs
dGEsIHVpbnQ2NF90IHJlc3QsIHVpbnQ2NF90IHRlbl9rYXBwYSwgdWludDY0X3Qgd3Bfdykgewot
ICAgIHdoaWxlIChyZXN0IDwgd3BfdyAmJiBkZWx0YSAtIHJlc3QgPj0gdGVuX2thcHBhICYmCi0g
ICAgICAgICAgIChyZXN0ICsgdGVuX2thcHBhIDwgd3BfdyB8fCAgLy8vIGNsb3NlcgotICAgICAg
ICAgICAgd3BfdyAtIHJlc3QgPiByZXN0ICsgdGVuX2thcHBhIC0gd3BfdykpIHsKLSAgICAgICAg
YnVmZmVyW2xlbiAtIDFdLS07Ci0gICAgICAgIHJlc3QgKz0gdGVuX2thcHBhOwotICAgIH0KLX0K
LQotaW5saW5lIHVuc2lnbmVkIENvdW50RGVjaW1hbERpZ2l0MzIodWludDMyX3QgbikgewotICAg
IC8vIFNpbXBsZSBwdXJlIEMrKyBpbXBsZW1lbnRhdGlvbiB3YXMgZmFzdGVyIHRoYW4gX19idWls
dGluX2NseiB2ZXJzaW9uIGluIHRoaXMgc2l0dWF0aW9uLgotICAgIGlmIChuIDwgMTApIHJldHVy
biAxOwotICAgIGlmIChuIDwgMTAwKSByZXR1cm4gMjsKLSAgICBpZiAobiA8IDEwMDApIHJldHVy
biAzOwotICAgIGlmIChuIDwgMTAwMDApIHJldHVybiA0OwotICAgIGlmIChuIDwgMTAwMDAwKSBy
ZXR1cm4gNTsKLSAgICBpZiAobiA8IDEwMDAwMDApIHJldHVybiA2OwotICAgIGlmIChuIDwgMTAw
MDAwMDApIHJldHVybiA3OwotICAgIGlmIChuIDwgMTAwMDAwMDAwKSByZXR1cm4gODsKLSAgICBp
ZiAobiA8IDEwMDAwMDAwMDApIHJldHVybiA5OwotICAgIHJldHVybiAxMDsKLX0KLQotaW5saW5l
IHZvaWQgRGlnaXRHZW4oY29uc3QgRGl5RnAmIFcsIGNvbnN0IERpeUZwJiBNcCwgdWludDY0X3Qg
ZGVsdGEsIGNoYXIqIGJ1ZmZlciwgaW50KiBsZW4sIGludCogSykgewotICAgIHN0YXRpYyBjb25z
dCB1aW50MzJfdCBrUG93MTBbXSA9IHsgMSwgMTAsIDEwMCwgMTAwMCwgMTAwMDAsIDEwMDAwMCwg
MTAwMDAwMCwgMTAwMDAwMDAsIDEwMDAwMDAwMCwgMTAwMDAwMDAwMCB9OwotICAgIGNvbnN0IERp
eUZwIG9uZSh1aW50NjRfdCgxKSA8PCAtTXAuZSwgTXAuZSk7Ci0gICAgY29uc3QgRGl5RnAgd3Bf
dyA9IE1wIC0gVzsKLSAgICB1aW50MzJfdCBwMSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihNcC5m
ID4+IC1vbmUuZSk7Ci0gICAgdWludDY0X3QgcDIgPSBNcC5mICYgKG9uZS5mIC0gMSk7Ci0gICAg
aW50IGthcHBhID0gQ291bnREZWNpbWFsRGlnaXQzMihwMSk7Ci0gICAgKmxlbiA9IDA7Ci0KLSAg
ICB3aGlsZSAoa2FwcGEgPiAwKSB7Ci0gICAgICAgIHVpbnQzMl90IGQ7Ci0gICAgICAgIHN3aXRj
aCAoa2FwcGEpIHsKLSAgICAgICAgICAgIGNhc2UgMTA6IGQgPSBwMSAvIDEwMDAwMDAwMDA7IHAx
ICU9IDEwMDAwMDAwMDA7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAgOTogZCA9IHAxIC8gIDEw
MDAwMDAwMDsgcDEgJT0gIDEwMDAwMDAwMDsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICA4OiBk
ID0gcDEgLyAgIDEwMDAwMDAwOyBwMSAlPSAgIDEwMDAwMDAwOyBicmVhazsKLSAgICAgICAgICAg
IGNhc2UgIDc6IGQgPSBwMSAvICAgIDEwMDAwMDA7IHAxICU9ICAgIDEwMDAwMDA7IGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSAgNjogZCA9IHAxIC8gICAgIDEwMDAwMDsgcDEgJT0gICAgIDEwMDAw
MDsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICA1OiBkID0gcDEgLyAgICAgIDEwMDAwOyBwMSAl
PSAgICAgIDEwMDAwOyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgIDQ6IGQgPSBwMSAvICAgICAg
IDEwMDA7IHAxICU9ICAgICAgIDEwMDA7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAgMzogZCA9
IHAxIC8gICAgICAgIDEwMDsgcDEgJT0gICAgICAgIDEwMDsgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlICAyOiBkID0gcDEgLyAgICAgICAgIDEwOyBwMSAlPSAgICAgICAgIDEwOyBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgIDE6IGQgPSBwMTsgICAgICAgICAgICAgIHAxID0gICAgICAgICAgIDA7
IGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDogCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikKLSAg
ICAgICAgICAgICAgICBfX2Fzc3VtZSgwKTsKLSNlbGlmIF9fR05VQ19fID4gNCB8fCAoX19HTlVD
X18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA+PSA1KQotICAgICAgICAgICAgICAgIF9fYnVpbHRp
bl91bnJlYWNoYWJsZSgpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBkID0gMDsKLSNlbmRpZgot
ICAgICAgICB9Ci0gICAgICAgIGlmIChkIHx8ICpsZW4pCi0gICAgICAgICAgICBidWZmZXJbKCps
ZW4pKytdID0gc3RhdGljX2Nhc3Q8Y2hhcj4oJzAnICsgc3RhdGljX2Nhc3Q8Y2hhcj4oZCkpOwot
ICAgICAgICBrYXBwYS0tOwotICAgICAgICB1aW50NjRfdCB0bXAgPSAoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHAxKSA8PCAtb25lLmUpICsgcDI7Ci0gICAgICAgIGlmICh0bXAgPD0gZGVsdGEpIHsK
LSAgICAgICAgICAgICpLICs9IGthcHBhOwotICAgICAgICAgICAgR3Jpc3VSb3VuZChidWZmZXIs
ICpsZW4sIGRlbHRhLCB0bXAsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihrUG93MTBba2FwcGFdKSA8
PCAtb25lLmUsIHdwX3cuZik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICAvLyBrYXBwYSA9IDAKLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIHAyICo9IDEwOwot
ICAgICAgICBkZWx0YSAqPSAxMDsKLSAgICAgICAgY2hhciBkID0gc3RhdGljX2Nhc3Q8Y2hhcj4o
cDIgPj4gLW9uZS5lKTsKLSAgICAgICAgaWYgKGQgfHwgKmxlbikKLSAgICAgICAgICAgIGJ1ZmZl
clsoKmxlbikrK10gPSBzdGF0aWNfY2FzdDxjaGFyPignMCcgKyBkKTsKLSAgICAgICAgcDIgJj0g
b25lLmYgLSAxOwotICAgICAgICBrYXBwYS0tOwotICAgICAgICBpZiAocDIgPCBkZWx0YSkgewot
ICAgICAgICAgICAgKksgKz0ga2FwcGE7Ci0gICAgICAgICAgICBHcmlzdVJvdW5kKGJ1ZmZlciwg
KmxlbiwgZGVsdGEsIHAyLCBvbmUuZiwgd3Bfdy5mICoga1BvdzEwWy1rYXBwYV0pOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotfQotCi1pbmxpbmUgdm9pZCBHcmlzdTIo
ZG91YmxlIHZhbHVlLCBjaGFyKiBidWZmZXIsIGludCogbGVuZ3RoLCBpbnQqIEspIHsKLSAgICBj
b25zdCBEaXlGcCB2KHZhbHVlKTsKLSAgICBEaXlGcCB3X20sIHdfcDsKLSAgICB2Lk5vcm1hbGl6
ZWRCb3VuZGFyaWVzKCZ3X20sICZ3X3ApOwotCi0gICAgY29uc3QgRGl5RnAgY19tayA9IEdldENh
Y2hlZFBvd2VyKHdfcC5lLCBLKTsKLSAgICBjb25zdCBEaXlGcCBXID0gdi5Ob3JtYWxpemUoKSAq
IGNfbWs7Ci0gICAgRGl5RnAgV3AgPSB3X3AgKiBjX21rOwotICAgIERpeUZwIFdtID0gd19tICog
Y19tazsKLSAgICBXbS5mKys7Ci0gICAgV3AuZi0tOwotICAgIERpZ2l0R2VuKFcsIFdwLCBXcC5m
IC0gV20uZiwgYnVmZmVyLCBsZW5ndGgsIEspOwotfQotCi1pbmxpbmUgY2hhciogV3JpdGVFeHBv
bmVudChpbnQgSywgY2hhciogYnVmZmVyKSB7Ci0gICAgaWYgKEsgPCAwKSB7Ci0gICAgICAgICpi
dWZmZXIrKyA9ICctJzsKLSAgICAgICAgSyA9IC1LOwotICAgIH0KLQotICAgIGlmIChLID49IDEw
MCkgewotICAgICAgICAqYnVmZmVyKysgPSBzdGF0aWNfY2FzdDxjaGFyPignMCcgKyBzdGF0aWNf
Y2FzdDxjaGFyPihLIC8gMTAwKSk7Ci0gICAgICAgIEsgJT0gMTAwOwotICAgICAgICBjb25zdCBj
aGFyKiBkID0gR2V0RGlnaXRzTHV0KCkgKyBLICogMjsKLSAgICAgICAgKmJ1ZmZlcisrID0gZFsw
XTsKLSAgICAgICAgKmJ1ZmZlcisrID0gZFsxXTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoSyA+PSAx
MCkgewotICAgICAgICBjb25zdCBjaGFyKiBkID0gR2V0RGlnaXRzTHV0KCkgKyBLICogMjsKLSAg
ICAgICAgKmJ1ZmZlcisrID0gZFswXTsKLSAgICAgICAgKmJ1ZmZlcisrID0gZFsxXTsKLSAgICB9
Ci0gICAgZWxzZQotICAgICAgICAqYnVmZmVyKysgPSBzdGF0aWNfY2FzdDxjaGFyPignMCcgKyBz
dGF0aWNfY2FzdDxjaGFyPihLKSk7Ci0KLSAgICByZXR1cm4gYnVmZmVyOwotfQotCi1pbmxpbmUg
Y2hhciogUHJldHRpZnkoY2hhciogYnVmZmVyLCBpbnQgbGVuZ3RoLCBpbnQgaykgewotICAgIGNv
bnN0IGludCBrayA9IGxlbmd0aCArIGs7ICAvLyAxMF4oa2stMSkgPD0gdiA8IDEwXmtrCi0KLSAg
ICBpZiAobGVuZ3RoIDw9IGtrICYmIGtrIDw9IDIxKSB7Ci0gICAgICAgIC8vIDEyMzRlNyAtPiAx
MjM0MDAwMDAwMAotICAgICAgICBmb3IgKGludCBpID0gbGVuZ3RoOyBpIDwga2s7IGkrKykKLSAg
ICAgICAgICAgIGJ1ZmZlcltpXSA9ICcwJzsKLSAgICAgICAgYnVmZmVyW2trXSA9ICcuJzsKLSAg
ICAgICAgYnVmZmVyW2trICsgMV0gPSAnMCc7Ci0gICAgICAgIHJldHVybiAmYnVmZmVyW2trICsg
Ml07Ci0gICAgfQotICAgIGVsc2UgaWYgKDAgPCBrayAmJiBrayA8PSAyMSkgewotICAgICAgICAv
LyAxMjM0ZS0yIC0+IDEyLjM0Ci0gICAgICAgIHN0ZDo6bWVtbW92ZSgmYnVmZmVyW2trICsgMV0s
ICZidWZmZXJba2tdLCBsZW5ndGggLSBrayk7Ci0gICAgICAgIGJ1ZmZlcltra10gPSAnLic7Ci0g
ICAgICAgIHJldHVybiAmYnVmZmVyW2xlbmd0aCArIDFdOwotICAgIH0KLSAgICBlbHNlIGlmICgt
NiA8IGtrICYmIGtrIDw9IDApIHsKLSAgICAgICAgLy8gMTIzNGUtNiAtPiAwLjAwMTIzNAotICAg
ICAgICBjb25zdCBpbnQgb2Zmc2V0ID0gMiAtIGtrOwotICAgICAgICBzdGQ6Om1lbW1vdmUoJmJ1
ZmZlcltvZmZzZXRdLCAmYnVmZmVyWzBdLCBsZW5ndGgpOwotICAgICAgICBidWZmZXJbMF0gPSAn
MCc7Ci0gICAgICAgIGJ1ZmZlclsxXSA9ICcuJzsKLSAgICAgICAgZm9yIChpbnQgaSA9IDI7IGkg
PCBvZmZzZXQ7IGkrKykKLSAgICAgICAgICAgIGJ1ZmZlcltpXSA9ICcwJzsKLSAgICAgICAgcmV0
dXJuICZidWZmZXJbbGVuZ3RoICsgb2Zmc2V0XTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobGVuZ3Ro
ID09IDEpIHsKLSAgICAgICAgLy8gMWUzMAotICAgICAgICBidWZmZXJbMV0gPSAnZSc7Ci0gICAg
ICAgIHJldHVybiBXcml0ZUV4cG9uZW50KGtrIC0gMSwgJmJ1ZmZlclsyXSk7Ci0gICAgfQotICAg
IGVsc2UgewotICAgICAgICAvLyAxMjM0ZTMwIC0+IDEuMjM0ZTMzCi0gICAgICAgIHN0ZDo6bWVt
bW92ZSgmYnVmZmVyWzJdLCAmYnVmZmVyWzFdLCBsZW5ndGggLSAxKTsKLSAgICAgICAgYnVmZmVy
WzFdID0gJy4nOwotICAgICAgICBidWZmZXJbbGVuZ3RoICsgMV0gPSAnZSc7Ci0gICAgICAgIHJl
dHVybiBXcml0ZUV4cG9uZW50KGtrIC0gMSwgJmJ1ZmZlclswICsgbGVuZ3RoICsgMl0pOwotICAg
IH0KLX0KLQotaW5saW5lIGNoYXIqIGR0b2EoZG91YmxlIHZhbHVlLCBjaGFyKiBidWZmZXIpIHsK
LSAgICBpZiAodmFsdWUgPT0gMCkgewotICAgICAgICBidWZmZXJbMF0gPSAnMCc7Ci0gICAgICAg
IGJ1ZmZlclsxXSA9ICcuJzsKLSAgICAgICAgYnVmZmVyWzJdID0gJzAnOwotICAgICAgICByZXR1
cm4gJmJ1ZmZlclszXTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmICh2YWx1ZSA8IDAp
IHsKLSAgICAgICAgICAgICpidWZmZXIrKyA9ICctJzsKLSAgICAgICAgICAgIHZhbHVlID0gLXZh
bHVlOwotICAgICAgICB9Ci0gICAgICAgIGludCBsZW5ndGgsIEs7Ci0gICAgICAgIEdyaXN1Mih2
YWx1ZSwgYnVmZmVyLCAmbGVuZ3RoLCAmSyk7Ci0gICAgICAgIHJldHVybiBQcmV0dGlmeShidWZm
ZXIsIGxlbmd0aCwgSyk7Ci0gICAgfQotfQotCi0jaWZkZWYgX19HTlVDX18KLVJBUElESlNPTl9E
SUFHX1BPUAotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGludGVybmFsCi1SQVBJREpTT05fTkFN
RVNQQUNFX0VORAotCi0jZW5kaWYgLy8gUkFQSURKU09OX0RUT0FfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1
ZGUvcmFwaWRqc29uL2ludGVybmFsL2llZWU3NTQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJu
YWwvaWVlZTc1NC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjY1Y2M5YTgyMDdl
NjhmYWRmYzIwM2M3NTI4YWEyNzM5NTVkMjkxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGly
ZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvaWVlZTc1NC5oCisr
KyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8g
WWlwCi0vLwotLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us
IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQotLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQg
YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwK
LS8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91
dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKLS8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg
cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKLS8vIGNvcGllcyBv
ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy
ZSBpcwotLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9uczoKLS8vCi0vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt
aXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotLy8gYWxsIGNvcGllcyBvciBzdWJz
dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0vLwotLy8gVEhFIFNPRlRXQVJFIElT
IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg
T1IKLS8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0vLyBBVVRIT1JT
IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S
IE9USEVSCi0vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU
T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAotLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJ
T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgotLy8g
VEhFIFNPRlRXQVJFLgotCi0jaWZuZGVmIFJBUElESlNPTl9JRUVFNzU0XwotI2RlZmluZSBSQVBJ
REpTT05fSUVFRTc1NF8KLQotI2luY2x1ZGUgIi4uL3JhcGlkanNvbi5oIgotCi1SQVBJREpTT05f
TkFNRVNQQUNFX0JFR0lOCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi1jbGFzcyBEb3VibGUgewot
cHVibGljOgotICAgIERvdWJsZSgpIHt9Ci0gICAgRG91YmxlKGRvdWJsZSBkKSA6IGQoZCkge30K
LSAgICBEb3VibGUodWludDY0X3QgdSkgOiB1KHUpIHt9Ci0KLSAgICBkb3VibGUgVmFsdWUoKSBj
b25zdCB7IHJldHVybiBkOyB9Ci0gICAgdWludDY0X3QgVWludDY0VmFsdWUoKSBjb25zdCB7IHJl
dHVybiB1OyB9Ci0KLSAgICBkb3VibGUgTmV4dFBvc2l0aXZlRG91YmxlKCkgY29uc3QgewotICAg
ICAgICBSQVBJREpTT05fQVNTRVJUKCFTaWduKCkpOwotICAgICAgICByZXR1cm4gRG91YmxlKHUg
KyAxKS5WYWx1ZSgpOwotICAgIH0KLQotICAgIGRvdWJsZSBQcmV2aW91c1Bvc2l0aXZlRG91Ymxl
KCkgY29uc3QgewotICAgICAgICBSQVBJREpTT05fQVNTRVJUKCFTaWduKCkpOwotICAgICAgICBp
ZiAoZCA9PSAwLjApCi0gICAgICAgICAgICByZXR1cm4gMC4wOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICByZXR1cm4gRG91YmxlKHUgLSAxKS5WYWx1ZSgpOwotICAgIH0KLQotICAgIGJvb2wg
U2lnbigpIGNvbnN0IHsgcmV0dXJuICh1ICYga1NpZ25NYXNrKSAhPSAwOyB9Ci0gICAgdWludDY0
X3QgU2lnbmlmaWNhbmQoKSBjb25zdCB7IHJldHVybiB1ICYga1NpZ25pZmljYW5kTWFzazsgfQot
ICAgIGludCBFeHBvbmVudCgpIGNvbnN0IHsgcmV0dXJuICgodSAmIGtFeHBvbmVudE1hc2spID4+
IGtTaWduaWZpY2FuZFNpemUpIC0ga0V4cG9uZW50QmlhczsgfQotCi0gICAgYm9vbCBJc05hbigp
IGNvbnN0IHsgcmV0dXJuICh1ICYga0V4cG9uZW50TWFzaykgPT0ga0V4cG9uZW50TWFzayAmJiBT
aWduaWZpY2FuZCgpICE9IDA7IH0KLSAgICBib29sIElzSW5mKCkgY29uc3QgeyByZXR1cm4gKHUg
JiBrRXhwb25lbnRNYXNrKSA9PSBrRXhwb25lbnRNYXNrICYmIFNpZ25pZmljYW5kKCkgPT0gMDsg
fQotICAgIGJvb2wgSXNOb3JtYWwoKSBjb25zdCB7IHJldHVybiAodSAmIGtFeHBvbmVudE1hc2sp
ICE9IDAgfHwgU2lnbmlmaWNhbmQoKSA9PSAwOyB9Ci0KLSAgICB1aW50NjRfdCBJbnRlZ2VyU2ln
bmlmaWNhbmQoKSBjb25zdCB7IHJldHVybiBJc05vcm1hbCgpID8gU2lnbmlmaWNhbmQoKSB8IGtI
aWRkZW5CaXQgOiBTaWduaWZpY2FuZCgpOyB9Ci0gICAgaW50IEludGVnZXJFeHBvbmVudCgpIGNv
bnN0IHsgcmV0dXJuIChJc05vcm1hbCgpID8gRXhwb25lbnQoKSA6IGtEZW5vcm1hbEV4cG9uZW50
KSAtIGtTaWduaWZpY2FuZFNpemU7IH0KLSAgICB1aW50NjRfdCBUb0JpYXMoKSBjb25zdCB7IHJl
dHVybiAodSAmIGtTaWduTWFzaykgPyB+dSArIDEgOiB1IHwga1NpZ25NYXNrOyB9Ci0KLSAgICBz
dGF0aWMgdW5zaWduZWQgRWZmZWN0aXZlU2lnbmlmaWNhbmRTaXplKGludCBvcmRlcikgewotICAg
ICAgICBpZiAob3JkZXIgPj0gLTEwMjEpCi0gICAgICAgICAgICByZXR1cm4gNTM7Ci0gICAgICAg
IGVsc2UgaWYgKG9yZGVyIDw9IC0xMDc0KQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHJldHVybiBvcmRlciArIDEwNzQ7Ci0gICAgfQotCi1wcml2YXRl
OgotICAgIHN0YXRpYyBjb25zdCBpbnQga1NpZ25pZmljYW5kU2l6ZSA9IDUyOwotICAgIHN0YXRp
YyBjb25zdCBpbnQga0V4cG9uZW50QmlhcyA9IDB4M0ZGOwotICAgIHN0YXRpYyBjb25zdCBpbnQg
a0Rlbm9ybWFsRXhwb25lbnQgPSAxIC0ga0V4cG9uZW50QmlhczsKLSAgICBzdGF0aWMgY29uc3Qg
dWludDY0X3Qga1NpZ25NYXNrID0gUkFQSURKU09OX1VJTlQ2NF9DMigweDgwMDAwMDAwLCAweDAw
MDAwMDAwKTsKLSAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qga0V4cG9uZW50TWFzayA9IFJBUElE
SlNPTl9VSU5UNjRfQzIoMHg3RkYwMDAwMCwgMHgwMDAwMDAwMCk7Ci0gICAgc3RhdGljIGNvbnN0
IHVpbnQ2NF90IGtTaWduaWZpY2FuZE1hc2sgPSBSQVBJREpTT05fVUlOVDY0X0MyKDB4MDAwRkZG
RkYsIDB4RkZGRkZGRkYpOwotICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBrSGlkZGVuQml0ID0g
UkFQSURKU09OX1VJTlQ2NF9DMigweDAwMTAwMDAwLCAweDAwMDAwMDAwKTsKLQotICAgIHVuaW9u
IHsKLSAgICAgICAgZG91YmxlIGQ7Ci0gICAgICAgIHVpbnQ2NF90IHU7Ci0gICAgfTsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIGludGVybmFsCi1SQVBJREpTT05fTkFNRVNQQUNFX0VORAotCi0jZW5k
aWYgLy8gUkFQSURKU09OX0lFRUU3NTRfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2lu
dGVybmFsL2l0b2EuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9w
YXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvaXRvYS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjg0ZjA3MzYzZjZlYzQ2MzIyOTFmNTlmMWViZmVhNzUw
YmZhYWU1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5j
bHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvaXRvYS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzA2ICsw
LDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAotLy8KLS8vIFBlcm1pc3Npb24g
aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu
ZyBhIGNvcHkKLS8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv
biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCi0vLyBpbiB0aGUgU29mdHdhcmUgd2l0
aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRz
Ci0vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1
YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi0vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g
cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLS8vIGZ1cm5pc2hlZCB0byBk
byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0vLwotLy8gVGhlIGFi
b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUg
aW5jbHVkZWQgaW4KLS8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl
IFNvZnR3YXJlLgotLy8KLS8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI
T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0vLyBJTVBMSUVELCBJTkNMVURJ
TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK
LS8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRQotLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC
RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotLy8gTElBQklMSVRZLCBX
SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ
TkcgRlJPTSwKLS8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9S
IFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KLS8vIFRIRSBTT0ZUV0FSRS4KLQotI2lmbmRl
ZiBSQVBJREpTT05fSVRPQV8KLSNkZWZpbmUgUkFQSURKU09OX0lUT0FfCi0KLVJBUElESlNPTl9O
QU1FU1BBQ0VfQkVHSU4KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLWlubGluZSBjb25zdCBjaGFy
KiBHZXREaWdpdHNMdXQoKSB7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgY0RpZ2l0c0x1dFsyMDBd
ID0gewotICAgICAgICAnMCcsJzAnLCcwJywnMScsJzAnLCcyJywnMCcsJzMnLCcwJywnNCcsJzAn
LCc1JywnMCcsJzYnLCcwJywnNycsJzAnLCc4JywnMCcsJzknLAotICAgICAgICAnMScsJzAnLCcx
JywnMScsJzEnLCcyJywnMScsJzMnLCcxJywnNCcsJzEnLCc1JywnMScsJzYnLCcxJywnNycsJzEn
LCc4JywnMScsJzknLAotICAgICAgICAnMicsJzAnLCcyJywnMScsJzInLCcyJywnMicsJzMnLCcy
JywnNCcsJzInLCc1JywnMicsJzYnLCcyJywnNycsJzInLCc4JywnMicsJzknLAotICAgICAgICAn
MycsJzAnLCczJywnMScsJzMnLCcyJywnMycsJzMnLCczJywnNCcsJzMnLCc1JywnMycsJzYnLCcz
JywnNycsJzMnLCc4JywnMycsJzknLAotICAgICAgICAnNCcsJzAnLCc0JywnMScsJzQnLCcyJywn
NCcsJzMnLCc0JywnNCcsJzQnLCc1JywnNCcsJzYnLCc0JywnNycsJzQnLCc4JywnNCcsJzknLAot
ICAgICAgICAnNScsJzAnLCc1JywnMScsJzUnLCcyJywnNScsJzMnLCc1JywnNCcsJzUnLCc1Jywn
NScsJzYnLCc1JywnNycsJzUnLCc4JywnNScsJzknLAotICAgICAgICAnNicsJzAnLCc2JywnMScs
JzYnLCcyJywnNicsJzMnLCc2JywnNCcsJzYnLCc1JywnNicsJzYnLCc2JywnNycsJzYnLCc4Jywn
NicsJzknLAotICAgICAgICAnNycsJzAnLCc3JywnMScsJzcnLCcyJywnNycsJzMnLCc3JywnNCcs
JzcnLCc1JywnNycsJzYnLCc3JywnNycsJzcnLCc4JywnNycsJzknLAotICAgICAgICAnOCcsJzAn
LCc4JywnMScsJzgnLCcyJywnOCcsJzMnLCc4JywnNCcsJzgnLCc1JywnOCcsJzYnLCc4JywnNycs
JzgnLCc4JywnOCcsJzknLAotICAgICAgICAnOScsJzAnLCc5JywnMScsJzknLCcyJywnOScsJzMn
LCc5JywnNCcsJzknLCc1JywnOScsJzYnLCc5JywnNycsJzknLCc4JywnOScsJzknCi0gICAgfTsK
LSAgICByZXR1cm4gY0RpZ2l0c0x1dDsKLX0KLQotaW5saW5lIGNoYXIqIHUzMnRvYSh1aW50MzJf
dCB2YWx1ZSwgY2hhciogYnVmZmVyKSB7Ci0gICAgY29uc3QgY2hhciogY0RpZ2l0c0x1dCA9IEdl
dERpZ2l0c0x1dCgpOwotCi0gICAgaWYgKHZhbHVlIDwgMTAwMDApIHsKLSAgICAgICAgY29uc3Qg
dWludDMyX3QgZDEgPSAodmFsdWUgLyAxMDApIDw8IDE7Ci0gICAgICAgIGNvbnN0IHVpbnQzMl90
IGQyID0gKHZhbHVlICUgMTAwKSA8PCAxOwotICAgICAgICAKLSAgICAgICAgaWYgKHZhbHVlID49
IDEwMDApCi0gICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QxXTsKLSAgICAgICAg
aWYgKHZhbHVlID49IDEwMCkKLSAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDEg
KyAxXTsKLSAgICAgICAgaWYgKHZhbHVlID49IDEwKQotICAgICAgICAgICAgKmJ1ZmZlcisrID0g
Y0RpZ2l0c0x1dFtkMl07Ci0gICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDIgKyAxXTsK
LSAgICB9Ci0gICAgZWxzZSBpZiAodmFsdWUgPCAxMDAwMDAwMDApIHsKLSAgICAgICAgLy8gdmFs
dWUgPSBiYmJiY2NjYwotICAgICAgICBjb25zdCB1aW50MzJfdCBiID0gdmFsdWUgLyAxMDAwMDsK
LSAgICAgICAgY29uc3QgdWludDMyX3QgYyA9IHZhbHVlICUgMTAwMDA7Ci0gICAgICAgIAotICAg
ICAgICBjb25zdCB1aW50MzJfdCBkMSA9IChiIC8gMTAwKSA8PCAxOwotICAgICAgICBjb25zdCB1
aW50MzJfdCBkMiA9IChiICUgMTAwKSA8PCAxOwotICAgICAgICAKLSAgICAgICAgY29uc3QgdWlu
dDMyX3QgZDMgPSAoYyAvIDEwMCkgPDwgMTsKLSAgICAgICAgY29uc3QgdWludDMyX3QgZDQgPSAo
YyAlIDEwMCkgPDwgMTsKLSAgICAgICAgCi0gICAgICAgIGlmICh2YWx1ZSA+PSAxMDAwMDAwMCkK
LSAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDFdOwotICAgICAgICBpZiAodmFs
dWUgPj0gMTAwMDAwMCkKLSAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDEgKyAx
XTsKLSAgICAgICAgaWYgKHZhbHVlID49IDEwMDAwMCkKLSAgICAgICAgICAgICpidWZmZXIrKyA9
IGNEaWdpdHNMdXRbZDJdOwotICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QyICsgMV07
Ci0gICAgICAgIAotICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QzXTsKLSAgICAgICAg
KmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMyArIDFdOwotICAgICAgICAqYnVmZmVyKysgPSBjRGln
aXRzTHV0W2Q0XTsKLSAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNCArIDFdOwotICAg
IH0KLSAgICBlbHNlIHsKLSAgICAgICAgLy8gdmFsdWUgPSBhYWJiYmJjY2NjIGluIGRlY2ltYWwK
LSAgICAgICAgCi0gICAgICAgIGNvbnN0IHVpbnQzMl90IGEgPSB2YWx1ZSAvIDEwMDAwMDAwMDsg
Ly8gMSB0byA0MgotICAgICAgICB2YWx1ZSAlPSAxMDAwMDAwMDA7Ci0gICAgICAgIAotICAgICAg
ICBpZiAoYSA+PSAxMCkgewotICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgaSA9IGEgPDwgMTsK
LSAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbaV07Ci0gICAgICAgICAgICAqYnVm
ZmVyKysgPSBjRGlnaXRzTHV0W2kgKyAxXTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAqYnVmZmVyKysgPSBzdGF0aWNfY2FzdDxjaGFyPignMCcgKyBzdGF0aWNfY2FzdDxj
aGFyPihhKSk7Ci0KLSAgICAgICAgY29uc3QgdWludDMyX3QgYiA9IHZhbHVlIC8gMTAwMDA7IC8v
IDAgdG8gOTk5OQotICAgICAgICBjb25zdCB1aW50MzJfdCBjID0gdmFsdWUgJSAxMDAwMDsgLy8g
MCB0byA5OTk5Ci0gICAgICAgIAotICAgICAgICBjb25zdCB1aW50MzJfdCBkMSA9IChiIC8gMTAw
KSA8PCAxOwotICAgICAgICBjb25zdCB1aW50MzJfdCBkMiA9IChiICUgMTAwKSA8PCAxOwotICAg
ICAgICAKLSAgICAgICAgY29uc3QgdWludDMyX3QgZDMgPSAoYyAvIDEwMCkgPDwgMTsKLSAgICAg
ICAgY29uc3QgdWludDMyX3QgZDQgPSAoYyAlIDEwMCkgPDwgMTsKLSAgICAgICAgCi0gICAgICAg
ICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDFdOwotICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRz
THV0W2QxICsgMV07Ci0gICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDJdOwotICAgICAg
ICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QyICsgMV07Ci0gICAgICAgICpidWZmZXIrKyA9IGNE
aWdpdHNMdXRbZDNdOwotICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QzICsgMV07Ci0g
ICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDRdOwotICAgICAgICAqYnVmZmVyKysgPSBj
RGlnaXRzTHV0W2Q0ICsgMV07Ci0gICAgfQotICAgIHJldHVybiBidWZmZXI7Ci19Ci0KLWlubGlu
ZSBjaGFyKiBpMzJ0b2EoaW50MzJfdCB2YWx1ZSwgY2hhciogYnVmZmVyKSB7Ci0gICAgaWYgKHZh
bHVlIDwgMCkgewotICAgICAgICAqYnVmZmVyKysgPSAnLSc7Ci0gICAgICAgIHZhbHVlID0gLXZh
bHVlOwotICAgIH0KLQotICAgIHJldHVybiB1MzJ0b2Eoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZh
bHVlKSwgYnVmZmVyKTsKLX0KLQotaW5saW5lIGNoYXIqIHU2NHRvYSh1aW50NjRfdCB2YWx1ZSwg
Y2hhciogYnVmZmVyKSB7Ci0gICAgY29uc3QgY2hhciogY0RpZ2l0c0x1dCA9IEdldERpZ2l0c0x1
dCgpOwotICAgIGNvbnN0IHVpbnQ2NF90ICBrVGVuOCA9IDEwMDAwMDAwMDsKLSAgICBjb25zdCB1
aW50NjRfdCAga1RlbjkgPSBrVGVuOCAqIDEwOwotICAgIGNvbnN0IHVpbnQ2NF90IGtUZW4xMCA9
IGtUZW44ICogMTAwOwotICAgIGNvbnN0IHVpbnQ2NF90IGtUZW4xMSA9IGtUZW44ICogMTAwMDsK
LSAgICBjb25zdCB1aW50NjRfdCBrVGVuMTIgPSBrVGVuOCAqIDEwMDAwOwotICAgIGNvbnN0IHVp
bnQ2NF90IGtUZW4xMyA9IGtUZW44ICogMTAwMDAwOwotICAgIGNvbnN0IHVpbnQ2NF90IGtUZW4x
NCA9IGtUZW44ICogMTAwMDAwMDsKLSAgICBjb25zdCB1aW50NjRfdCBrVGVuMTUgPSBrVGVuOCAq
IDEwMDAwMDAwOwotICAgIGNvbnN0IHVpbnQ2NF90IGtUZW4xNiA9IGtUZW44ICoga1Rlbjg7Ci0g
ICAgCi0gICAgaWYgKHZhbHVlIDwga1RlbjgpIHsKLSAgICAgICAgdWludDMyX3QgdiA9IHN0YXRp
Y19jYXN0PHVpbnQzMl90Pih2YWx1ZSk7Ci0gICAgICAgIGlmICh2IDwgMTAwMDApIHsKLSAgICAg
ICAgICAgIGNvbnN0IHVpbnQzMl90IGQxID0gKHYgLyAxMDApIDw8IDE7Ci0gICAgICAgICAgICBj
b25zdCB1aW50MzJfdCBkMiA9ICh2ICUgMTAwKSA8PCAxOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBpZiAodiA+PSAxMDAwKQotICAgICAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNM
dXRbZDFdOwotICAgICAgICAgICAgaWYgKHYgPj0gMTAwKQotICAgICAgICAgICAgICAgICpidWZm
ZXIrKyA9IGNEaWdpdHNMdXRbZDEgKyAxXTsKLSAgICAgICAgICAgIGlmICh2ID49IDEwKQotICAg
ICAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDJdOwotICAgICAgICAgICAgKmJ1
ZmZlcisrID0gY0RpZ2l0c0x1dFtkMiArIDFdOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgLy8gdmFsdWUgPSBiYmJiY2NjYwotICAgICAgICAgICAgY29uc3QgdWludDMy
X3QgYiA9IHYgLyAxMDAwMDsKLSAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGMgPSB2ICUgMTAw
MDA7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGQxID0gKGIgLyAx
MDApIDw8IDE7Ci0gICAgICAgICAgICBjb25zdCB1aW50MzJfdCBkMiA9IChiICUgMTAwKSA8PCAx
OwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjb25zdCB1aW50MzJfdCBkMyA9IChjIC8gMTAw
KSA8PCAxOwotICAgICAgICAgICAgY29uc3QgdWludDMyX3QgZDQgPSAoYyAlIDEwMCkgPDwgMTsK
LSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHZhbHVlID49IDEwMDAwMDAwKQotICAgICAg
ICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDFdOwotICAgICAgICAgICAgaWYgKHZh
bHVlID49IDEwMDAwMDApCi0gICAgICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtk
MSArIDFdOwotICAgICAgICAgICAgaWYgKHZhbHVlID49IDEwMDAwMCkKLSAgICAgICAgICAgICAg
ICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QyXTsKLSAgICAgICAgICAgICpidWZmZXIrKyA9IGNE
aWdpdHNMdXRbZDIgKyAxXTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgKmJ1ZmZlcisrID0g
Y0RpZ2l0c0x1dFtkM107Ci0gICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QzICsg
MV07Ci0gICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q0XTsKLSAgICAgICAgICAg
ICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDQgKyAxXTsKLSAgICAgICAgfQotICAgIH0KLSAgICBl
bHNlIGlmICh2YWx1ZSA8IGtUZW4xNikgewotICAgICAgICBjb25zdCB1aW50MzJfdCB2MCA9IHN0
YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSAvIGtUZW44KTsKLSAgICAgICAgY29uc3QgdWludDMy
X3QgdjEgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUgJSBrVGVuOCk7Ci0gICAgICAgIAot
ICAgICAgICBjb25zdCB1aW50MzJfdCBiMCA9IHYwIC8gMTAwMDA7Ci0gICAgICAgIGNvbnN0IHVp
bnQzMl90IGMwID0gdjAgJSAxMDAwMDsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IHVpbnQzMl90
IGQxID0gKGIwIC8gMTAwKSA8PCAxOwotICAgICAgICBjb25zdCB1aW50MzJfdCBkMiA9IChiMCAl
IDEwMCkgPDwgMTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IHVpbnQzMl90IGQzID0gKGMwIC8g
MTAwKSA8PCAxOwotICAgICAgICBjb25zdCB1aW50MzJfdCBkNCA9IChjMCAlIDEwMCkgPDwgMTsK
LQotICAgICAgICBjb25zdCB1aW50MzJfdCBiMSA9IHYxIC8gMTAwMDA7Ci0gICAgICAgIGNvbnN0
IHVpbnQzMl90IGMxID0gdjEgJSAxMDAwMDsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IHVpbnQz
Ml90IGQ1ID0gKGIxIC8gMTAwKSA8PCAxOwotICAgICAgICBjb25zdCB1aW50MzJfdCBkNiA9IChi
MSAlIDEwMCkgPDwgMTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IHVpbnQzMl90IGQ3ID0gKGMx
IC8gMTAwKSA8PCAxOwotICAgICAgICBjb25zdCB1aW50MzJfdCBkOCA9IChjMSAlIDEwMCkgPDwg
MTsKLQotICAgICAgICBpZiAodmFsdWUgPj0ga1RlbjE1KQotICAgICAgICAgICAgKmJ1ZmZlcisr
ID0gY0RpZ2l0c0x1dFtkMV07Ci0gICAgICAgIGlmICh2YWx1ZSA+PSBrVGVuMTQpCi0gICAgICAg
ICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QxICsgMV07Ci0gICAgICAgIGlmICh2YWx1ZSA+
PSBrVGVuMTMpCi0gICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QyXTsKLSAgICAg
ICAgaWYgKHZhbHVlID49IGtUZW4xMikKLSAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNM
dXRbZDIgKyAxXTsKLSAgICAgICAgaWYgKHZhbHVlID49IGtUZW4xMSkKLSAgICAgICAgICAgICpi
dWZmZXIrKyA9IGNEaWdpdHNMdXRbZDNdOwotICAgICAgICBpZiAodmFsdWUgPj0ga1RlbjEwKQot
ICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMyArIDFdOwotICAgICAgICBpZiAo
dmFsdWUgPj0ga1RlbjkpCi0gICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q0XTsK
LSAgICAgICAgaWYgKHZhbHVlID49IGtUZW44KQotICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0Rp
Z2l0c0x1dFtkNCArIDFdOwotICAgICAgICAKLSAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1
dFtkNV07Ci0gICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDUgKyAxXTsKLSAgICAgICAg
KmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNl07Ci0gICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNM
dXRbZDYgKyAxXTsKLSAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkN107Ci0gICAgICAg
ICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDcgKyAxXTsKLSAgICAgICAgKmJ1ZmZlcisrID0gY0Rp
Z2l0c0x1dFtkOF07Ci0gICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDggKyAxXTsKLSAg
ICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0IHVpbnQzMl90IGEgPSBzdGF0aWNfY2FzdDx1
aW50MzJfdD4odmFsdWUgLyBrVGVuMTYpOyAvLyAxIHRvIDE4NDQKLSAgICAgICAgdmFsdWUgJT0g
a1RlbjE2OwotICAgICAgICAKLSAgICAgICAgaWYgKGEgPCAxMCkKLSAgICAgICAgICAgICpidWZm
ZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIHN0YXRpY19jYXN0PGNoYXI+KGEpKTsKLSAg
ICAgICAgZWxzZSBpZiAoYSA8IDEwMCkgewotICAgICAgICAgICAgY29uc3QgdWludDMyX3QgaSA9
IGEgPDwgMTsKLSAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbaV07Ci0gICAgICAg
ICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2kgKyAxXTsKLSAgICAgICAgfQotICAgICAgICBl
bHNlIGlmIChhIDwgMTAwMCkgewotICAgICAgICAgICAgKmJ1ZmZlcisrID0gc3RhdGljX2Nhc3Q8
Y2hhcj4oJzAnICsgc3RhdGljX2Nhc3Q8Y2hhcj4oYSAvIDEwMCkpOwotICAgICAgICAgICAgCi0g
ICAgICAgICAgICBjb25zdCB1aW50MzJfdCBpID0gKGEgJSAxMDApIDw8IDE7Ci0gICAgICAgICAg
ICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2ldOwotICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0Rp
Z2l0c0x1dFtpICsgMV07Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBj
b25zdCB1aW50MzJfdCBpID0gKGEgLyAxMDApIDw8IDE7Ci0gICAgICAgICAgICBjb25zdCB1aW50
MzJfdCBqID0gKGEgJSAxMDApIDw8IDE7Ci0gICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRz
THV0W2ldOwotICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtpICsgMV07Ci0gICAg
ICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2pdOwotICAgICAgICAgICAgKmJ1ZmZlcisr
ID0gY0RpZ2l0c0x1dFtqICsgMV07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGNvbnN0
IHVpbnQzMl90IHYwID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVlIC8ga1RlbjgpOwotICAg
ICAgICBjb25zdCB1aW50MzJfdCB2MSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSAlIGtU
ZW44KTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IHVpbnQzMl90IGIwID0gdjAgLyAxMDAwMDsK
LSAgICAgICAgY29uc3QgdWludDMyX3QgYzAgPSB2MCAlIDEwMDAwOwotICAgICAgICAKLSAgICAg
ICAgY29uc3QgdWludDMyX3QgZDEgPSAoYjAgLyAxMDApIDw8IDE7Ci0gICAgICAgIGNvbnN0IHVp
bnQzMl90IGQyID0gKGIwICUgMTAwKSA8PCAxOwotICAgICAgICAKLSAgICAgICAgY29uc3QgdWlu
dDMyX3QgZDMgPSAoYzAgLyAxMDApIDw8IDE7Ci0gICAgICAgIGNvbnN0IHVpbnQzMl90IGQ0ID0g
KGMwICUgMTAwKSA8PCAxOwotICAgICAgICAKLSAgICAgICAgY29uc3QgdWludDMyX3QgYjEgPSB2
MSAvIDEwMDAwOwotICAgICAgICBjb25zdCB1aW50MzJfdCBjMSA9IHYxICUgMTAwMDA7Ci0gICAg
ICAgIAotICAgICAgICBjb25zdCB1aW50MzJfdCBkNSA9IChiMSAvIDEwMCkgPDwgMTsKLSAgICAg
ICAgY29uc3QgdWludDMyX3QgZDYgPSAoYjEgJSAxMDApIDw8IDE7Ci0gICAgICAgIAotICAgICAg
ICBjb25zdCB1aW50MzJfdCBkNyA9IChjMSAvIDEwMCkgPDwgMTsKLSAgICAgICAgY29uc3QgdWlu
dDMyX3QgZDggPSAoYzEgJSAxMDApIDw8IDE7Ci0gICAgICAgIAotICAgICAgICAqYnVmZmVyKysg
PSBjRGlnaXRzTHV0W2QxXTsKLSAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMSArIDFd
OwotICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QyXTsKLSAgICAgICAgKmJ1ZmZlcisr
ID0gY0RpZ2l0c0x1dFtkMiArIDFdOwotICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Qz
XTsKLSAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMyArIDFdOwotICAgICAgICAqYnVm
ZmVyKysgPSBjRGlnaXRzTHV0W2Q0XTsKLSAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtk
NCArIDFdOwotICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q1XTsKLSAgICAgICAgKmJ1
ZmZlcisrID0gY0RpZ2l0c0x1dFtkNSArIDFdOwotICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRz
THV0W2Q2XTsKLSAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNiArIDFdOwotICAgICAg
ICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q3XTsKLSAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0
c0x1dFtkNyArIDFdOwotICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q4XTsKLSAgICAg
ICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkOCArIDFdOwotICAgIH0KLSAgICAKLSAgICByZXR1
cm4gYnVmZmVyOwotfQotCi1pbmxpbmUgY2hhciogaTY0dG9hKGludDY0X3QgdmFsdWUsIGNoYXIq
IGJ1ZmZlcikgewotICAgIGlmICh2YWx1ZSA8IDApIHsKLSAgICAgICAgKmJ1ZmZlcisrID0gJy0n
OwotICAgICAgICB2YWx1ZSA9IC12YWx1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdTY0dG9hKHN0
YXRpY19jYXN0PHVpbnQ2NF90Pih2YWx1ZSksIGJ1ZmZlcik7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IGludGVybmFsCi1SQVBJREpTT05fTkFNRVNQQUNFX0VORAotCi0jZW5kaWYgLy8gUkFQSURKU09O
X0lUT0FfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhp
cmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL21ldGEuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5j
bHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvbWV0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjMzNmNjA3ZDU4NTNmM2Y0YWIzYTVhZjZjMzczOWEwYTFlYTkzNDA1Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50
ZXJuYWwvbWV0YS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLS8vIENvcHlyaWdo
dCAoQykgMjAxMSBNaWxvIFlpcAotLy8KLS8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs
IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLS8vIG9mIHRo
aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0
d2FyZSIpLCB0byBkZWFsCi0vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg
aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi0vLyB0byB1c2UsIGNvcHks
IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBz
ZWxsCi0vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g
d2hvbSB0aGUgU29mdHdhcmUgaXMKLS8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0vLwotLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLS8vIGFs
bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotLy8KLS8v
IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO
WSBLSU5ELCBFWFBSRVNTIE9SCi0vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE
IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLS8vIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRQotLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD
TEFJTSwgREFNQUdFUyBPUiBPVEhFUgotLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP
TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLS8vIE9VVCBP
RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg
REVBTElOR1MgSU4KLS8vIFRIRSBTT0ZUV0FSRS4KLQotI2lmbmRlZiBSQVBJREpTT05fSU5URVJO
QUxfTUVUQV9IXwotI2RlZmluZSBSQVBJREpTT05fSU5URVJOQUxfTUVUQV9IXwotCi0jaWZuZGVm
IFJBUElESlNPTl9SQVBJREpTT05fSF8KLSNlcnJvciA8cmFwaWRqc29uLmg+IG5vdCB5ZXQgaW5j
bHVkZWQuIERvIG5vdCBpbmNsdWRlIHRoaXMgZmlsZSBkaXJlY3RseS4KLSNlbmRpZgotCi0jaWZk
ZWYgX19HTlVDX18KLVJBUElESlNPTl9ESUFHX1BVU0gKLVJBUElESlNPTl9ESUFHX09GRihlZmZj
KyspCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKQotUkFQSURKU09OX0RJQUdfUFVTSAot
UkFQSURKU09OX0RJQUdfT0ZGKDYzMzQpCi0jZW5kaWYKLQotI2lmIFJBUElESlNPTl9IQVNfQ1hY
MTFfVFlQRVRSQUlUUwotI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgotI2VuZGlmCi0KLS8vQGNvbmQg
UkFQSURKU09OX0lOVEVSTkFMCi1SQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCi1uYW1lc3BhY2Ug
aW50ZXJuYWwgewotCi0vLyBIZWxwZXIgdG8gd3JhcC9jb252ZXJ0IGFyYml0cmFyeSB0eXBlcyB0
byB2b2lkLCB1c2VmdWwgZm9yIGFyYml0cmFyeSB0eXBlIG1hdGNoaW5nCi10ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gc3RydWN0IFZvaWQgeyB0eXBlZGVmIHZvaWQgVHlwZTsgfTsKLQotLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwotLy8gQm9vbFR5cGUsIFRydWVUeXBlLCBGYWxzZVR5cGUKLS8vCi10ZW1w
bGF0ZSA8Ym9vbCBDb25kPiBzdHJ1Y3QgQm9vbFR5cGUgewotICAgIHN0YXRpYyBjb25zdCBib29s
IFZhbHVlID0gQ29uZDsKLSAgICB0eXBlZGVmIEJvb2xUeXBlIFR5cGU7Ci19OwotdHlwZWRlZiBC
b29sVHlwZTx0cnVlPiBUcnVlVHlwZTsKLXR5cGVkZWYgQm9vbFR5cGU8ZmFsc2U+IEZhbHNlVHlw
ZTsKLQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBTZWxlY3RJZiwgQm9vbEV4cHIsIE5v
dEV4cHIsIEFuZEV4cHIsIE9yRXhwcgotLy8KLQotdGVtcGxhdGUgPGJvb2wgQz4gc3RydWN0IFNl
bGVjdElmSW1wbCB7IHRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+IHN0cnVjdCBB
cHBseSB7IHR5cGVkZWYgVDEgVHlwZTsgfTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBTZWxlY3RJ
ZkltcGw8ZmFsc2U+IHsgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4gc3RydWN0
IEFwcGx5IHsgdHlwZWRlZiBUMiBUeXBlOyB9OyB9OwotdGVtcGxhdGUgPGJvb2wgQywgdHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyPiBzdHJ1Y3QgU2VsZWN0SWZDb25kIDogU2VsZWN0SWZJbXBsPEM+
Ojp0ZW1wbGF0ZSBBcHBseTxUMSxUMj4ge307Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQywgdHlwZW5h
bWUgVDEsIHR5cGVuYW1lIFQyPiBzdHJ1Y3QgU2VsZWN0SWYgOiBTZWxlY3RJZkNvbmQ8Qzo6VmFs
dWUsIFQxLCBUMj4ge307Ci0KLXRlbXBsYXRlIDxib29sIENvbmQxLCBib29sIENvbmQyPiBzdHJ1
Y3QgQW5kRXhwckNvbmQgOiBGYWxzZVR5cGUge307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgQW5kRXhw
ckNvbmQ8dHJ1ZSwgdHJ1ZT4gOiBUcnVlVHlwZSB7fTsKLXRlbXBsYXRlIDxib29sIENvbmQxLCBi
b29sIENvbmQyPiBzdHJ1Y3QgT3JFeHByQ29uZCA6IFRydWVUeXBlIHt9OwotdGVtcGxhdGUgPD4g
c3RydWN0IE9yRXhwckNvbmQ8ZmFsc2UsIGZhbHNlPiA6IEZhbHNlVHlwZSB7fTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIEM+IHN0cnVjdCBCb29sRXhwciA6IFNlbGVjdElmPEMsVHJ1ZVR5cGUsRmFs
c2VUeXBlPjo6VHlwZSB7fTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBDPiBzdHJ1Y3QgTm90RXhwciAg
OiBTZWxlY3RJZjxDLEZhbHNlVHlwZSxUcnVlVHlwZT46OlR5cGUge307Ci10ZW1wbGF0ZSA8dHlw
ZW5hbWUgQzEsIHR5cGVuYW1lIEMyPiBzdHJ1Y3QgQW5kRXhwciA6IEFuZEV4cHJDb25kPEMxOjpW
YWx1ZSwgQzI6OlZhbHVlPjo6VHlwZSB7fTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBDMSwgdHlwZW5h
bWUgQzI+IHN0cnVjdCBPckV4cHIgIDogT3JFeHByQ29uZDxDMTo6VmFsdWUsIEMyOjpWYWx1ZT46
OlR5cGUge307Ci0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gQWRkQ29uc3QsIE1heWJl
QWRkQ29uc3QsIFJlbW92ZUNvbnN0Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IEFkZENv
bnN0IHsgdHlwZWRlZiBjb25zdCBUIFR5cGU7IH07Ci10ZW1wbGF0ZSA8Ym9vbCBDb25zdGlmeSwg
dHlwZW5hbWUgVD4gc3RydWN0IE1heWJlQWRkQ29uc3QgOiBTZWxlY3RJZkNvbmQ8Q29uc3RpZnks
IGNvbnN0IFQsIFQ+IHt9OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVDb25z
dCB7IHR5cGVkZWYgVCBUeXBlOyB9OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1v
dmVDb25zdDxjb25zdCBUPiB7IHR5cGVkZWYgVCBUeXBlOyB9OwotCi0KLS8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8KLS8vIElzU2FtZSwgSXNDb25zdCwgSXNNb3JlQ29uc3QsIElzUG9pbnRlcgotLy8K
LXRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBzdHJ1Y3QgSXNTYW1lIDogRmFsc2VU
eXBlIHt9OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJc1NhbWU8VCwgVD4gOiBUcnVl
VHlwZSB7fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJc0NvbnN0IDogRmFsc2VU
eXBlIHt9OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJc0NvbnN0PGNvbnN0IFQ+IDog
VHJ1ZVR5cGUge307Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDVCwgdHlwZW5hbWUgVD4KLXN0cnVj
dCBJc01vcmVDb25zdAotICAgIDogQW5kRXhwcjxJc1NhbWU8dHlwZW5hbWUgUmVtb3ZlQ29uc3Q8
Q1Q+OjpUeXBlLCB0eXBlbmFtZSBSZW1vdmVDb25zdDxUPjo6VHlwZT4sCi0gICAgICAgICAgICAg
IEJvb2xUeXBlPElzQ29uc3Q8Q1Q+OjpWYWx1ZSA+PSBJc0NvbnN0PFQ+OjpWYWx1ZT4gPjo6VHlw
ZSB7fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJc1BvaW50ZXIgOiBGYWxzZVR5
cGUge307Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzUG9pbnRlcjxUKj4gOiBUcnVl
VHlwZSB7fTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gSXNCYXNlT2YKLS8vCi0jaWYg
UkFQSURKU09OX0hBU19DWFgxMV9UWVBFVFJBSVRTCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBCLCB0
eXBlbmFtZSBEPiBzdHJ1Y3QgSXNCYXNlT2YKLSAgICA6IEJvb2xUeXBlPCA6OnN0ZDo6aXNfYmFz
ZV9vZjxCLEQ+Ojp2YWx1ZT4ge307Ci0KLSNlbHNlIC8vIHNpbXBsaWZpZWQgdmVyc2lvbiBhZG9w
dGVkIGZyb20gQm9vc3QKLQotdGVtcGxhdGU8dHlwZW5hbWUgQiwgdHlwZW5hbWUgRD4gc3RydWN0
IElzQmFzZU9mSW1wbCB7Ci0gICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKEIpICE9
IDApOwotICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZihEKSAhPSAwKTsKLQotICAg
IHR5cGVkZWYgY2hhciAoJlllcylbMV07Ci0gICAgdHlwZWRlZiBjaGFyICgmTm8pIFsyXTsKLQot
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHN0YXRpYyBZZXMgQ2hlY2soY29uc3QgRCos
IFQpOwotICAgIHN0YXRpYyBObyAgQ2hlY2soY29uc3QgQiosIGludCk7Ci0KLSAgICBzdHJ1Y3Qg
SG9zdCB7Ci0gICAgICAgIG9wZXJhdG9yIGNvbnN0IEIqKCkgY29uc3Q7Ci0gICAgICAgIG9wZXJh
dG9yIGNvbnN0IEQqKCk7Ci0gICAgfTsKLQotICAgIGVudW0geyBWYWx1ZSA9IChzaXplb2YoQ2hl
Y2soSG9zdCgpLCAwKSkgPT0gc2l6ZW9mKFllcykpIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgQiwgdHlwZW5hbWUgRD4gc3RydWN0IElzQmFzZU9mCi0gICAgOiBPckV4cHI8SXNTYW1lPEIs
IEQ+LCBCb29sRXhwcjxJc0Jhc2VPZkltcGw8QiwgRD4gPiA+OjpUeXBlIHt9OwotCi0jZW5kaWYg
Ly8gUkFQSURKU09OX0hBU19DWFgxMV9UWVBFVFJBSVRTCi0KLQotLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
LS8vIEVuYWJsZUlmIC8gRGlzYWJsZUlmCi0vLwotdGVtcGxhdGUgPGJvb2wgQ29uZGl0aW9uLCB0
eXBlbmFtZSBUID0gdm9pZD4gc3RydWN0IEVuYWJsZUlmQ29uZCAgeyB0eXBlZGVmIFQgVHlwZTsg
fTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgRW5hYmxlSWZDb25kPGZhbHNlLCBUPiB7
IC8qIGVtcHR5ICovIH07Ci0KLXRlbXBsYXRlIDxib29sIENvbmRpdGlvbiwgdHlwZW5hbWUgVCA9
IHZvaWQ+IHN0cnVjdCBEaXNhYmxlSWZDb25kIHsgdHlwZWRlZiBUIFR5cGU7IH07Ci10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gc3RydWN0IERpc2FibGVJZkNvbmQ8dHJ1ZSwgVD4geyAvKiBlbXB0eSAq
LyB9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29uZGl0aW9uLCB0eXBlbmFtZSBUID0gdm9pZD4K
LXN0cnVjdCBFbmFibGVJZiA6IEVuYWJsZUlmQ29uZDxDb25kaXRpb246OlZhbHVlLCBUPiB7fTsK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIENvbmRpdGlvbiwgdHlwZW5hbWUgVCA9IHZvaWQ+Ci1zdHJ1
Y3QgRGlzYWJsZUlmIDogRGlzYWJsZUlmQ29uZDxDb25kaXRpb246OlZhbHVlLCBUPiB7fTsKLQot
Ly8gU0ZJTkFFIGhlbHBlcnMKLXN0cnVjdCBTZmluYWVUYWcge307Ci10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RydWN0IFJlbW92ZVNmaW5hZVRhZzsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1
Y3QgUmVtb3ZlU2ZpbmFlVGFnPFNmaW5hZVRhZyYoKikoVCk+IHsgdHlwZWRlZiBUIFR5cGU7IH07
Ci0KLSNkZWZpbmUgUkFQSURKU09OX1JFTU9WRUZQVFJfKHR5cGUpIFwKLSAgICB0eXBlbmFtZSA6
OlJBUElESlNPTl9OQU1FU1BBQ0U6OmludGVybmFsOjpSZW1vdmVTZmluYWVUYWcgXAotICAgICAg
ICA8IDo6UkFQSURKU09OX05BTUVTUEFDRTo6aW50ZXJuYWw6OlNmaW5hZVRhZyYoKikgdHlwZT46
OlR5cGUKLQotI2RlZmluZSBSQVBJREpTT05fRU5BQkxFSUYoY29uZCkgXAotICAgIHR5cGVuYW1l
IDo6UkFQSURKU09OX05BTUVTUEFDRTo6aW50ZXJuYWw6OkVuYWJsZUlmIFwKLSAgICAgICAgPFJB
UElESlNPTl9SRU1PVkVGUFRSXyhjb25kKT46OlR5cGUgKiA9IE5VTEwKLQotI2RlZmluZSBSQVBJ
REpTT05fRElTQUJMRUlGKGNvbmQpIFwKLSAgICB0eXBlbmFtZSA6OlJBUElESlNPTl9OQU1FU1BB
Q0U6OmludGVybmFsOjpEaXNhYmxlSWYgXAotICAgICAgICA8UkFQSURKU09OX1JFTU9WRUZQVFJf
KGNvbmQpPjo6VHlwZSAqID0gTlVMTAotCi0jZGVmaW5lIFJBUElESlNPTl9FTkFCTEVJRl9SRVRV
Uk4oY29uZCxyZXR1cm50eXBlKSBcCi0gICAgdHlwZW5hbWUgOjpSQVBJREpTT05fTkFNRVNQQUNF
OjppbnRlcm5hbDo6RW5hYmxlSWYgXAotICAgICAgICA8UkFQSURKU09OX1JFTU9WRUZQVFJfKGNv
bmQpLCBcCi0gICAgICAgICBSQVBJREpTT05fUkVNT1ZFRlBUUl8ocmV0dXJudHlwZSk+OjpUeXBl
Ci0KLSNkZWZpbmUgUkFQSURKU09OX0RJU0FCTEVJRl9SRVRVUk4oY29uZCxyZXR1cm50eXBlKSBc
Ci0gICAgdHlwZW5hbWUgOjpSQVBJREpTT05fTkFNRVNQQUNFOjppbnRlcm5hbDo6RGlzYWJsZUlm
IFwKLSAgICAgICAgPFJBUElESlNPTl9SRU1PVkVGUFRSXyhjb25kKSwgXAotICAgICAgICAgUkFQ
SURKU09OX1JFTU9WRUZQVFJfKHJldHVybnR5cGUpPjo6VHlwZQotCi19IC8vIG5hbWVzcGFjZSBp
bnRlcm5hbAotUkFQSURKU09OX05BTUVTUEFDRV9FTkQKLS8vQGVuZGNvbmQKLQotI2lmIGRlZmlu
ZWQoX19HTlVDX18pIHx8IGRlZmluZWQoX01TQ19WRVIpCi1SQVBJREpTT05fRElBR19QT1AKLSNl
bmRpZgotCi0jZW5kaWYgLy8gUkFQSURKU09OX0lOVEVSTkFMX01FVEFfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24v
aW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvcG93MTAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50
ZXJuYWwvcG93MTAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFjZjY0NzhiYTJh
YTZiODcwMDQ4ZDk4MTVkYWExNDU4Yjk3ZWNkZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhp
cmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL3BvdzEwLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZ
aXAKLS8vCi0vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg
dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh
c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAot
Ly8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0
IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw
dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotLy8gY29waWVzIG9m
IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJl
IGlzCi0vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zOgotLy8KLS8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p
c3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0vLyBhbGwgY29waWVzIG9yIHN1YnN0
YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLS8vCi0vLyBUSEUgU09GVFdBUkUgSVMg
UFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBP
UgotLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFksCi0vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLS8vIEFVVEhPUlMg
T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig
T1RIRVIKLS8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP
UlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi0vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElP
TiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCi0vLyBU
SEUgU09GVFdBUkUuCi0KLSNpZm5kZWYgUkFQSURKU09OX1BPVzEwXwotI2RlZmluZSBSQVBJREpT
T05fUE9XMTBfCi0KLVJBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KLW5hbWVzcGFjZSBpbnRlcm5h
bCB7Ci0KLS8vISBDb21wdXRlcyBpbnRlZ2VyIHBvd2VycyBvZiAxMCBpbiBkb3VibGUgKDEwLjBe
bikuCi0vKiEgVGhpcyBmdW5jdGlvbiB1c2VzIGxvb2t1cCB0YWJsZSBmb3IgZmFzdCBhbmQgYWNj
dXJhdGUgcmVzdWx0cy4KLSAgICBccGFyYW0gbiBub24tbmVnYXRpdmUgZXhwb25lbnQuIE11c3Qg
PD0gMzA4LgotICAgIFxyZXR1cm4gMTAuMF5uCi0qLwotaW5saW5lIGRvdWJsZSBQb3cxMChpbnQg
bikgewotICAgIHN0YXRpYyBjb25zdCBkb3VibGUgZVtdID0geyAvLyAxZS0wLi4uMWUzMDg6IDMw
OSAqIDggYnl0ZXMgPSAyNDcyIGJ5dGVzCi0gICAgICAgIDFlKzAsICAKLSAgICAgICAgMWUrMSwg
IDFlKzIsICAxZSszLCAgMWUrNCwgIDFlKzUsICAxZSs2LCAgMWUrNywgIDFlKzgsICAxZSs5LCAg
MWUrMTAsIDFlKzExLCAxZSsxMiwgMWUrMTMsIDFlKzE0LCAxZSsxNSwgMWUrMTYsIDFlKzE3LCAx
ZSsxOCwgMWUrMTksIDFlKzIwLCAKLSAgICAgICAgMWUrMjEsIDFlKzIyLCAxZSsyMywgMWUrMjQs
IDFlKzI1LCAxZSsyNiwgMWUrMjcsIDFlKzI4LCAxZSsyOSwgMWUrMzAsIDFlKzMxLCAxZSszMiwg
MWUrMzMsIDFlKzM0LCAxZSszNSwgMWUrMzYsIDFlKzM3LCAxZSszOCwgMWUrMzksIDFlKzQwLAot
ICAgICAgICAxZSs0MSwgMWUrNDIsIDFlKzQzLCAxZSs0NCwgMWUrNDUsIDFlKzQ2LCAxZSs0Nywg
MWUrNDgsIDFlKzQ5LCAxZSs1MCwgMWUrNTEsIDFlKzUyLCAxZSs1MywgMWUrNTQsIDFlKzU1LCAx
ZSs1NiwgMWUrNTcsIDFlKzU4LCAxZSs1OSwgMWUrNjAsCi0gICAgICAgIDFlKzYxLCAxZSs2Miwg
MWUrNjMsIDFlKzY0LCAxZSs2NSwgMWUrNjYsIDFlKzY3LCAxZSs2OCwgMWUrNjksIDFlKzcwLCAx
ZSs3MSwgMWUrNzIsIDFlKzczLCAxZSs3NCwgMWUrNzUsIDFlKzc2LCAxZSs3NywgMWUrNzgsIDFl
Kzc5LCAxZSs4MCwKLSAgICAgICAgMWUrODEsIDFlKzgyLCAxZSs4MywgMWUrODQsIDFlKzg1LCAx
ZSs4NiwgMWUrODcsIDFlKzg4LCAxZSs4OSwgMWUrOTAsIDFlKzkxLCAxZSs5MiwgMWUrOTMsIDFl
Kzk0LCAxZSs5NSwgMWUrOTYsIDFlKzk3LCAxZSs5OCwgMWUrOTksIDFlKzEwMCwKLSAgICAgICAg
MWUrMTAxLDFlKzEwMiwxZSsxMDMsMWUrMTA0LDFlKzEwNSwxZSsxMDYsMWUrMTA3LDFlKzEwOCwx
ZSsxMDksMWUrMTEwLDFlKzExMSwxZSsxMTIsMWUrMTEzLDFlKzExNCwxZSsxMTUsMWUrMTE2LDFl
KzExNywxZSsxMTgsMWUrMTE5LDFlKzEyMCwKLSAgICAgICAgMWUrMTIxLDFlKzEyMiwxZSsxMjMs
MWUrMTI0LDFlKzEyNSwxZSsxMjYsMWUrMTI3LDFlKzEyOCwxZSsxMjksMWUrMTMwLDFlKzEzMSwx
ZSsxMzIsMWUrMTMzLDFlKzEzNCwxZSsxMzUsMWUrMTM2LDFlKzEzNywxZSsxMzgsMWUrMTM5LDFl
KzE0MCwKLSAgICAgICAgMWUrMTQxLDFlKzE0MiwxZSsxNDMsMWUrMTQ0LDFlKzE0NSwxZSsxNDYs
MWUrMTQ3LDFlKzE0OCwxZSsxNDksMWUrMTUwLDFlKzE1MSwxZSsxNTIsMWUrMTUzLDFlKzE1NCwx
ZSsxNTUsMWUrMTU2LDFlKzE1NywxZSsxNTgsMWUrMTU5LDFlKzE2MCwKLSAgICAgICAgMWUrMTYx
LDFlKzE2MiwxZSsxNjMsMWUrMTY0LDFlKzE2NSwxZSsxNjYsMWUrMTY3LDFlKzE2OCwxZSsxNjks
MWUrMTcwLDFlKzE3MSwxZSsxNzIsMWUrMTczLDFlKzE3NCwxZSsxNzUsMWUrMTc2LDFlKzE3Nywx
ZSsxNzgsMWUrMTc5LDFlKzE4MCwKLSAgICAgICAgMWUrMTgxLDFlKzE4MiwxZSsxODMsMWUrMTg0
LDFlKzE4NSwxZSsxODYsMWUrMTg3LDFlKzE4OCwxZSsxODksMWUrMTkwLDFlKzE5MSwxZSsxOTIs
MWUrMTkzLDFlKzE5NCwxZSsxOTUsMWUrMTk2LDFlKzE5NywxZSsxOTgsMWUrMTk5LDFlKzIwMCwK
LSAgICAgICAgMWUrMjAxLDFlKzIwMiwxZSsyMDMsMWUrMjA0LDFlKzIwNSwxZSsyMDYsMWUrMjA3
LDFlKzIwOCwxZSsyMDksMWUrMjEwLDFlKzIxMSwxZSsyMTIsMWUrMjEzLDFlKzIxNCwxZSsyMTUs
MWUrMjE2LDFlKzIxNywxZSsyMTgsMWUrMjE5LDFlKzIyMCwKLSAgICAgICAgMWUrMjIxLDFlKzIy
MiwxZSsyMjMsMWUrMjI0LDFlKzIyNSwxZSsyMjYsMWUrMjI3LDFlKzIyOCwxZSsyMjksMWUrMjMw
LDFlKzIzMSwxZSsyMzIsMWUrMjMzLDFlKzIzNCwxZSsyMzUsMWUrMjM2LDFlKzIzNywxZSsyMzgs
MWUrMjM5LDFlKzI0MCwKLSAgICAgICAgMWUrMjQxLDFlKzI0MiwxZSsyNDMsMWUrMjQ0LDFlKzI0
NSwxZSsyNDYsMWUrMjQ3LDFlKzI0OCwxZSsyNDksMWUrMjUwLDFlKzI1MSwxZSsyNTIsMWUrMjUz
LDFlKzI1NCwxZSsyNTUsMWUrMjU2LDFlKzI1NywxZSsyNTgsMWUrMjU5LDFlKzI2MCwKLSAgICAg
ICAgMWUrMjYxLDFlKzI2MiwxZSsyNjMsMWUrMjY0LDFlKzI2NSwxZSsyNjYsMWUrMjY3LDFlKzI2
OCwxZSsyNjksMWUrMjcwLDFlKzI3MSwxZSsyNzIsMWUrMjczLDFlKzI3NCwxZSsyNzUsMWUrMjc2
LDFlKzI3NywxZSsyNzgsMWUrMjc5LDFlKzI4MCwKLSAgICAgICAgMWUrMjgxLDFlKzI4MiwxZSsy
ODMsMWUrMjg0LDFlKzI4NSwxZSsyODYsMWUrMjg3LDFlKzI4OCwxZSsyODksMWUrMjkwLDFlKzI5
MSwxZSsyOTIsMWUrMjkzLDFlKzI5NCwxZSsyOTUsMWUrMjk2LDFlKzI5NywxZSsyOTgsMWUrMjk5
LDFlKzMwMCwKLSAgICAgICAgMWUrMzAxLDFlKzMwMiwxZSszMDMsMWUrMzA0LDFlKzMwNSwxZSsz
MDYsMWUrMzA3LDFlKzMwOAotICAgIH07Ci0gICAgUkFQSURKU09OX0FTU0VSVChuID49IDAgJiYg
biA8PSAzMDgpOwotICAgIHJldHVybiBlW25dOwotfQotCi19IC8vIG5hbWVzcGFjZSBpbnRlcm5h
bAotUkFQSURKU09OX05BTUVTUEFDRV9FTkQKLQotI2VuZGlmIC8vIFJBUElESlNPTl9QT1cxMF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0
eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvc3RhY2suaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9y
YXBpZGpzb24vaW50ZXJuYWwvc3RhY2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NjJhZTdhYTgwNDQ1YWRmZGYwYzQ1MDZiMTc4ZTk3YmQyYjU2ZDAyZC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFs
L3N0YWNrLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChD
KSAyMDExIE1pbG8gWWlwCi0vLwotLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJl
ZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQotLy8gb2YgdGhpcyBz
b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJl
IiksIHRvIGRlYWwKLS8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNs
dWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKLS8vIHRvIHVzZSwgY29weSwgbW9k
aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwK
LS8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9t
IHRoZSBTb2Z0d2FyZSBpcwotLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9uczoKLS8vCi0vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh
bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotLy8gYWxsIGNv
cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0vLwotLy8gVEhF
IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ
TkQsIEVYUFJFU1MgT1IKLS8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g
VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotLy8gRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
Ci0vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN
LCBEQU1BR0VTIE9SIE9USEVSCi0vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G
IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAotLy8gT1VUIE9GIE9S
IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFM
SU5HUyBJTgotLy8gVEhFIFNPRlRXQVJFLgotCi0jaWZuZGVmIFJBUElESlNPTl9JTlRFUk5BTF9T
VEFDS19IXwotI2RlZmluZSBSQVBJREpTT05fSU5URVJOQUxfU1RBQ0tfSF8KLQotUkFQSURKU09O
X05BTUVTUEFDRV9CRUdJTgotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwotLy8gU3RhY2sKLQotLy8hIEEgdHlwZS11bnNhZmUgc3RhY2sgZm9yIHN0b3Jpbmcg
ZGlmZmVyZW50IHR5cGVzIG9mIGRhdGEuCi0vKiEgXHRwYXJhbSBBbGxvY2F0b3IgQWxsb2NhdG9y
IGZvciBhbGxvY2F0aW5nIHN0YWNrIG1lbW9yeS4KLSovCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQWxs
b2NhdG9yPgotY2xhc3MgU3RhY2sgewotcHVibGljOgotICAgIC8vIE9wdGltaXphdGlvbiBub3Rl
OiBEbyBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBzdGFja18gaW4gY29uc3RydWN0b3IuCi0gICAg
Ly8gRG8gaXQgbGF6aWx5IHdoZW4gZmlyc3QgUHVzaCgpIC0+IEV4cGFuZCgpIC0+IFJlc2l6ZSgp
LgotICAgIFN0YWNrKEFsbG9jYXRvciogYWxsb2NhdG9yLCBzaXplX3Qgc3RhY2tDYXBhY2l0eSkg
OiBhbGxvY2F0b3JfKGFsbG9jYXRvciksIG93bkFsbG9jYXRvcl8oMCksIHN0YWNrXygwKSwgc3Rh
Y2tUb3BfKDApLCBzdGFja0VuZF8oMCksIGluaXRpYWxDYXBhY2l0eV8oc3RhY2tDYXBhY2l0eSkg
ewotICAgICAgICBSQVBJREpTT05fQVNTRVJUKHN0YWNrQ2FwYWNpdHkgPiAwKTsKLSAgICB9Ci0K
LSNpZiBSQVBJREpTT05fSEFTX0NYWDExX1JWQUxVRV9SRUZTCi0gICAgU3RhY2soU3RhY2smJiBy
aHMpCi0gICAgICAgIDogYWxsb2NhdG9yXyhyaHMuYWxsb2NhdG9yXyksCi0gICAgICAgICAgb3du
QWxsb2NhdG9yXyhyaHMub3duQWxsb2NhdG9yXyksCi0gICAgICAgICAgc3RhY2tfKHJocy5zdGFj
a18pLAotICAgICAgICAgIHN0YWNrVG9wXyhyaHMuc3RhY2tUb3BfKSwKLSAgICAgICAgICBzdGFj
a0VuZF8ocmhzLnN0YWNrRW5kXyksCi0gICAgICAgICAgaW5pdGlhbENhcGFjaXR5XyhyaHMuaW5p
dGlhbENhcGFjaXR5XykKLSAgICB7Ci0gICAgICAgIHJocy5hbGxvY2F0b3JfID0gMDsKLSAgICAg
ICAgcmhzLm93bkFsbG9jYXRvcl8gPSAwOwotICAgICAgICByaHMuc3RhY2tfID0gMDsKLSAgICAg
ICAgcmhzLnN0YWNrVG9wXyA9IDA7Ci0gICAgICAgIHJocy5zdGFja0VuZF8gPSAwOwotICAgICAg
ICByaHMuaW5pdGlhbENhcGFjaXR5XyA9IDA7Ci0gICAgfQotI2VuZGlmCi0KLSAgICB+U3RhY2so
KSB7Ci0gICAgICAgIERlc3Ryb3koKTsKLSAgICB9Ci0KLSNpZiBSQVBJREpTT05fSEFTX0NYWDEx
X1JWQUxVRV9SRUZTCi0gICAgU3RhY2smIG9wZXJhdG9yPShTdGFjayYmIHJocykgewotICAgICAg
ICBpZiAoJnJocyAhPSB0aGlzKQotICAgICAgICB7Ci0gICAgICAgICAgICBEZXN0cm95KCk7Ci0K
LSAgICAgICAgICAgIGFsbG9jYXRvcl8gPSByaHMuYWxsb2NhdG9yXzsKLSAgICAgICAgICAgIG93
bkFsbG9jYXRvcl8gPSByaHMub3duQWxsb2NhdG9yXzsKLSAgICAgICAgICAgIHN0YWNrXyA9IHJo
cy5zdGFja187Ci0gICAgICAgICAgICBzdGFja1RvcF8gPSByaHMuc3RhY2tUb3BfOwotICAgICAg
ICAgICAgc3RhY2tFbmRfID0gcmhzLnN0YWNrRW5kXzsKLSAgICAgICAgICAgIGluaXRpYWxDYXBh
Y2l0eV8gPSByaHMuaW5pdGlhbENhcGFjaXR5XzsKLQotICAgICAgICAgICAgcmhzLmFsbG9jYXRv
cl8gPSAwOwotICAgICAgICAgICAgcmhzLm93bkFsbG9jYXRvcl8gPSAwOwotICAgICAgICAgICAg
cmhzLnN0YWNrXyA9IDA7Ci0gICAgICAgICAgICByaHMuc3RhY2tUb3BfID0gMDsKLSAgICAgICAg
ICAgIHJocy5zdGFja0VuZF8gPSAwOwotICAgICAgICAgICAgcmhzLmluaXRpYWxDYXBhY2l0eV8g
PSAwOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0jZW5kaWYKLQot
ICAgIHZvaWQgQ2xlYXIoKSB7IHN0YWNrVG9wXyA9IHN0YWNrXzsgfQotCi0gICAgdm9pZCBTaHJp
bmtUb0ZpdCgpIHsgCi0gICAgICAgIGlmIChFbXB0eSgpKSB7Ci0gICAgICAgICAgICAvLyBJZiB0
aGUgc3RhY2sgaXMgZW1wdHksIGNvbXBsZXRlbHkgZGVhbGxvY2F0ZSB0aGUgbWVtb3J5LgotICAg
ICAgICAgICAgQWxsb2NhdG9yOjpGcmVlKHN0YWNrXyk7Ci0gICAgICAgICAgICBzdGFja18gPSAw
OwotICAgICAgICAgICAgc3RhY2tUb3BfID0gMDsKLSAgICAgICAgICAgIHN0YWNrRW5kXyA9IDA7
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgUmVzaXplKEdldFNpemUoKSk7
Ci0gICAgfQotCi0gICAgLy8gT3B0aW1pemF0aW9uIG5vdGU6IHRyeSB0byBtaW5pbWl6ZSB0aGUg
c2l6ZSBvZiB0aGlzIGZ1bmN0aW9uIGZvciBmb3JjZSBpbmxpbmUuCi0gICAgLy8gRXhwYW5zaW9u
IGlzIHJ1biB2ZXJ5IGluZnJlcXVlbnRseSwgc28gaXQgaXMgbW92ZWQgdG8gYW5vdGhlciAocHJv
YmFibHkgbm9uLWlubGluZSkgZnVuY3Rpb24uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAg
ICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgVCogUHVzaChzaXplX3QgY291bnQgPSAxKSB7Ci0gICAg
ICAgICAvLyBFeHBhbmQgdGhlIHN0YWNrIGlmIG5lZWRlZAotICAgICAgICBpZiAoc3RhY2tUb3Bf
ICsgc2l6ZW9mKFQpICogY291bnQgPj0gc3RhY2tFbmRfKQotICAgICAgICAgICAgRXhwYW5kPFQ+
KGNvdW50KTsKLQotICAgICAgICBUKiByZXQgPSByZWludGVycHJldF9jYXN0PFQqPihzdGFja1Rv
cF8pOwotICAgICAgICBzdGFja1RvcF8gKz0gc2l6ZW9mKFQpICogY291bnQ7Ci0gICAgICAgIHJl
dHVybiByZXQ7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUKiBQb3Ao
c2l6ZV90IGNvdW50KSB7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoR2V0U2l6ZSgpID49IGNv
dW50ICogc2l6ZW9mKFQpKTsKLSAgICAgICAgc3RhY2tUb3BfIC09IGNvdW50ICogc2l6ZW9mKFQp
OwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4oc3RhY2tUb3BfKTsKLSAgICB9
Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQqIFRvcCgpIHsgCi0gICAgICAgIFJB
UElESlNPTl9BU1NFUlQoR2V0U2l6ZSgpID49IHNpemVvZihUKSk7Ci0gICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PFQqPihzdGFja1RvcF8gLSBzaXplb2YoVCkpOwotICAgIH0KLQotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCogQm90dG9tKCkgeyByZXR1cm4gKFQqKXN0YWNr
XzsgfQotCi0gICAgQWxsb2NhdG9yJiBHZXRBbGxvY2F0b3IoKSB7IHJldHVybiAqYWxsb2NhdG9y
XzsgfQotICAgIGJvb2wgRW1wdHkoKSBjb25zdCB7IHJldHVybiBzdGFja1RvcF8gPT0gc3RhY2tf
OyB9Ci0gICAgc2l6ZV90IEdldFNpemUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHN0YWNrVG9wXyAtIHN0YWNrXyk7IH0KLSAgICBzaXplX3QgR2V0Q2FwYWNpdHkoKSBjb25z
dCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0YWNrRW5kXyAtIHN0YWNrXyk7IH0KLQot
cHJpdmF0ZToKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgRXhwYW5kKHNpemVf
dCBjb3VudCkgewotICAgICAgICAvLyBPbmx5IGV4cGFuZCB0aGUgY2FwYWNpdHkgaWYgdGhlIGN1
cnJlbnQgc3RhY2sgZXhpc3RzLiBPdGhlcndpc2UganVzdCBjcmVhdGUgYSBzdGFjayB3aXRoIGlu
aXRpYWwgY2FwYWNpdHkuCi0gICAgICAgIHNpemVfdCBuZXdDYXBhY2l0eTsKLSAgICAgICAgaWYg
KHN0YWNrXyA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAoIWFsbG9jYXRvcl8pCi0gICAgICAgICAg
ICAgICAgb3duQWxsb2NhdG9yXyA9IGFsbG9jYXRvcl8gPSBSQVBJREpTT05fTkVXKEFsbG9jYXRv
cigpKTsKLSAgICAgICAgICAgIG5ld0NhcGFjaXR5ID0gaW5pdGlhbENhcGFjaXR5XzsKLSAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG5ld0NhcGFjaXR5ID0gR2V0Q2FwYWNpdHkoKTsKLSAg
ICAgICAgICAgIG5ld0NhcGFjaXR5ICs9IChuZXdDYXBhY2l0eSArIDEpIC8gMjsKLSAgICAgICAg
fQotICAgICAgICBzaXplX3QgbmV3U2l6ZSA9IEdldFNpemUoKSArIHNpemVvZihUKSAqIGNvdW50
OwotICAgICAgICBpZiAobmV3Q2FwYWNpdHkgPCBuZXdTaXplKQotICAgICAgICAgICAgbmV3Q2Fw
YWNpdHkgPSBuZXdTaXplOwotCi0gICAgICAgIFJlc2l6ZShuZXdDYXBhY2l0eSk7Ci0gICAgfQot
Ci0gICAgdm9pZCBSZXNpemUoc2l6ZV90IG5ld0NhcGFjaXR5KSB7Ci0gICAgICAgIGNvbnN0IHNp
emVfdCBzaXplID0gR2V0U2l6ZSgpOyAgLy8gQmFja3VwIHRoZSBjdXJyZW50IHNpemUKLSAgICAg
ICAgc3RhY2tfID0gKGNoYXIqKWFsbG9jYXRvcl8tPlJlYWxsb2Moc3RhY2tfLCBHZXRDYXBhY2l0
eSgpLCBuZXdDYXBhY2l0eSk7Ci0gICAgICAgIHN0YWNrVG9wXyA9IHN0YWNrXyArIHNpemU7Ci0g
ICAgICAgIHN0YWNrRW5kXyA9IHN0YWNrXyArIG5ld0NhcGFjaXR5OwotICAgIH0KLQotICAgIHZv
aWQgRGVzdHJveSgpIHsKLSAgICAgICAgQWxsb2NhdG9yOjpGcmVlKHN0YWNrXyk7Ci0gICAgICAg
IFJBUElESlNPTl9ERUxFVEUob3duQWxsb2NhdG9yXyk7IC8vIE9ubHkgZGVsZXRlIGlmIGl0IGlz
IG93bmVkIGJ5IHRoZSBzdGFjawotICAgIH0KLQotICAgIC8vIFByb2hpYml0IGNvcHkgY29uc3Ry
dWN0b3IgJiBhc3NpZ25tZW50IG9wZXJhdG9yLgotICAgIFN0YWNrKGNvbnN0IFN0YWNrJik7Ci0g
ICAgU3RhY2smIG9wZXJhdG9yPShjb25zdCBTdGFjayYpOwotCi0gICAgQWxsb2NhdG9yKiBhbGxv
Y2F0b3JfOwotICAgIEFsbG9jYXRvciogb3duQWxsb2NhdG9yXzsKLSAgICBjaGFyICpzdGFja187
Ci0gICAgY2hhciAqc3RhY2tUb3BfOwotICAgIGNoYXIgKnN0YWNrRW5kXzsKLSAgICBzaXplX3Qg
aW5pdGlhbENhcGFjaXR5XzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGludGVybmFsCi1SQVBJREpT
T05fTkFNRVNQQUNFX0VORAotCi0jZW5kaWYgLy8gUkFQSURKU09OX1NUQUNLX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRq
c29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL3N0cmZ1bmMuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpz
b24vaW50ZXJuYWwvc3RyZnVuYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzRh
ZGMzNmRjYjNiNDUwZjA2Njg1NTYyOWE5MDk2M2M5OGE5NTY1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvc3Ry
ZnVuYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAy
MDExIE1pbG8gWWlwCi0vLwotLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv
ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQotLy8gb2YgdGhpcyBzb2Z0
d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks
IHRvIGRlYWwKLS8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp
bmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKLS8vIHRvIHVzZSwgY29weSwgbW9kaWZ5
LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKLS8v
IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo
ZSBTb2Z0d2FyZSBpcwotLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9uczoKLS8vCi0vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg
dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotLy8gYWxsIGNvcGll
cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0vLwotLy8gVEhFIFNP
RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs
IEVYUFJFU1MgT1IKLS8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0v
LyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE
QU1BR0VTIE9SIE9USEVSCi0vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP
TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAotLy8gT1VUIE9GIE9SIElO
IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5H
UyBJTgotLy8gVEhFIFNPRlRXQVJFLgotCi0jaWZuZGVmIFJBUElESlNPTl9JTlRFUk5BTF9TVFJG
VU5DX0hfCi0jZGVmaW5lIFJBUElESlNPTl9JTlRFUk5BTF9TVFJGVU5DX0hfCi0KLVJBUElESlNP
Tl9OQU1FU1BBQ0VfQkVHSU4KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vISBDdXN0b20gc3Ry
bGVuKCkgd2hpY2ggd29ya3Mgb24gZGlmZmVyZW50IGNoYXJhY3RlciB0eXBlcy4KLS8qISBcdHBh
cmFtIENoIENoYXJhY3RlciB0eXBlIChlLmcuIGNoYXIsIHdjaGFyX3QsIHNob3J0KQotICAgIFxw
YXJhbSBzIE51bGwtdGVybWluYXRlZCBpbnB1dCBzdHJpbmcuCi0gICAgXHJldHVybiBOdW1iZXIg
b2YgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nLiAKLSAgICBcbm90ZSBUaGlzIGhhcyB0aGUgc2Ft
ZSBzZW1hbnRpY3MgYXMgc3RybGVuKCksIHRoZSByZXR1cm4gdmFsdWUgaXMgbm90IG51bWJlciBv
ZiBVbmljb2RlIGNvZGVwb2ludHMuCi0qLwotdGVtcGxhdGUgPHR5cGVuYW1lIENoPgotaW5saW5l
IFNpemVUeXBlIFN0ckxlbihjb25zdCBDaCogcykgewotICAgIGNvbnN0IENoKiBwID0gczsKLSAg
ICB3aGlsZSAoKnApICsrcDsKLSAgICByZXR1cm4gU2l6ZVR5cGUocCAtIHMpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBpbnRlcm5hbAotUkFQSURKU09OX05BTUVTUEFDRV9FTkQKLQotI2VuZGlmIC8v
IFJBUElESlNPTl9JTlRFUk5BTF9TVFJGVU5DX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRq
c29uL2ludGVybmFsL3N0cnRvZC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9zdHJ0b2Qu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZjNjA1MGVlYjQ0NzBhNTk2Zjc0ZTlh
ZTRiZjIxMzUxNzQ5Zjg2Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFw
aWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL3N0cnRvZC5oCisrKyAvZGV2L251bGwK
QEAgLTEsMjg1ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAotLy8KLS8v
IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy
c29uIG9idGFpbmluZyBhIGNvcHkKLS8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg
ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCi0vLyBpbiB0aGUg
U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv
biB0aGUgcmlnaHRzCi0vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp
c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi0vLyBjb3BpZXMgb2YgdGhlIFNvZnR3
YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLS8vIGZ1
cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0v
LwotLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp
Y2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLS8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9y
dGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotLy8KLS8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi
QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0vLyBJTVBM
SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSwKLS8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J
TkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotLy8gQVVUSE9SUyBPUiBDT1BZUklH
SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotLy8g
TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF
UldJU0UsIEFSSVNJTkcgRlJPTSwKLS8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF
IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KLS8vIFRIRSBTT0ZUV0FS
RS4KLQotI2lmbmRlZiBSQVBJREpTT05fU1RSVE9EXwotI2RlZmluZSBSQVBJREpTT05fU1RSVE9E
XwotCi0jaW5jbHVkZSAiLi4vcmFwaWRqc29uLmgiCi0jaW5jbHVkZSAiaWVlZTc1NC5oIgotI2lu
Y2x1ZGUgImJpZ2ludGVnZXIuaCIKLSNpbmNsdWRlICJkaXlmcC5oIgotI2luY2x1ZGUgInBvdzEw
LmgiCi0KLVJBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0K
LWlubGluZSBkb3VibGUgRmFzdFBhdGgoZG91YmxlIHNpZ25pZmljYW5kLCBpbnQgZXhwKSB7Ci0g
ICAgaWYgKGV4cCA8IC0zMDgpCi0gICAgICAgIHJldHVybiAwLjA7Ci0gICAgZWxzZSBpZiAoZXhw
ID49IDApCi0gICAgICAgIHJldHVybiBzaWduaWZpY2FuZCAqIGludGVybmFsOjpQb3cxMChleHAp
OwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIHNpZ25pZmljYW5kIC8gaW50ZXJuYWw6OlBvdzEw
KC1leHApOwotfQotCi1pbmxpbmUgZG91YmxlIFN0cnRvZE5vcm1hbFByZWNpc2lvbihkb3VibGUg
ZCwgaW50IHApIHsKLSAgICBpZiAocCA8IC0zMDgpIHsKLSAgICAgICAgLy8gUHJldmVudCBleHBT
dW0gPCAtMzA4LCBtYWtpbmcgUG93MTAocCkgPSAwCi0gICAgICAgIGQgPSBGYXN0UGF0aChkLCAt
MzA4KTsKLSAgICAgICAgZCA9IEZhc3RQYXRoKGQsIHAgKyAzMDgpOwotICAgIH0KLSAgICBlbHNl
Ci0gICAgICAgIGQgPSBGYXN0UGF0aChkLCBwKTsKLSAgICByZXR1cm4gZDsKLX0KLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCBNaW4zKFQgYSwgVCBiLCBUIGMpIHsKLSAgICBUIG0g
PSBhOwotICAgIGlmIChtID4gYikgbSA9IGI7Ci0gICAgaWYgKG0gPiBjKSBtID0gYzsKLSAgICBy
ZXR1cm4gbTsKLX0KLQotaW5saW5lIGludCBDaGVja1dpdGhpbkhhbGZVTFAoZG91YmxlIGIsIGNv
bnN0IEJpZ0ludGVnZXImIGQsIGludCBkRXhwLCBib29sKiBhZGp1c3RUb05lZ2F0aXZlKSB7Ci0g
ICAgY29uc3QgRG91YmxlIGRiKGIpOwotICAgIGNvbnN0IHVpbnQ2NF90IGJJbnQgPSBkYi5JbnRl
Z2VyU2lnbmlmaWNhbmQoKTsKLSAgICBjb25zdCBpbnQgYkV4cCA9IGRiLkludGVnZXJFeHBvbmVu
dCgpOwotICAgIGNvbnN0IGludCBoRXhwID0gYkV4cCAtIDE7Ci0KLSAgICBpbnQgZFNfRXhwMiA9
IDAsIGRTX0V4cDUgPSAwLCBiU19FeHAyID0gMCwgYlNfRXhwNSA9IDAsIGhTX0V4cDIgPSAwLCBo
U19FeHA1ID0gMDsKLQotICAgIC8vIEFkanVzdCBmb3IgZGVjaW1hbCBleHBvbmVudAotICAgIGlm
IChkRXhwID49IDApIHsKLSAgICAgICAgZFNfRXhwMiArPSBkRXhwOwotICAgICAgICBkU19FeHA1
ICs9IGRFeHA7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBiU19FeHAyIC09IGRFeHA7Ci0g
ICAgICAgIGJTX0V4cDUgLT0gZEV4cDsKLSAgICAgICAgaFNfRXhwMiAtPSBkRXhwOwotICAgICAg
ICBoU19FeHA1IC09IGRFeHA7Ci0gICAgfQotCi0gICAgLy8gQWRqdXN0IGZvciBiaW5hcnkgZXhw
b25lbnQKLSAgICBpZiAoYkV4cCA+PSAwKQotICAgICAgICBiU19FeHAyICs9IGJFeHA7Ci0gICAg
ZWxzZSB7Ci0gICAgICAgIGRTX0V4cDIgLT0gYkV4cDsKLSAgICAgICAgaFNfRXhwMiAtPSBiRXhw
OwotICAgIH0KLQotICAgIC8vIEFkanVzdCBmb3IgaGFsZiB1bHAgZXhwb25lbnQKLSAgICBpZiAo
aEV4cCA+PSAwKQotICAgICAgICBoU19FeHAyICs9IGhFeHA7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IGRTX0V4cDIgLT0gaEV4cDsKLSAgICAgICAgYlNfRXhwMiAtPSBoRXhwOwotICAgIH0KLQotICAg
IC8vIFJlbW92ZSBjb21tb24gcG93ZXIgb2YgdHdvIGZhY3RvciBmcm9tIGFsbCB0aHJlZSBzY2Fs
ZWQgdmFsdWVzCi0gICAgaW50IGNvbW1vbl9FeHAyID0gTWluMyhkU19FeHAyLCBiU19FeHAyLCBo
U19FeHAyKTsKLSAgICBkU19FeHAyIC09IGNvbW1vbl9FeHAyOwotICAgIGJTX0V4cDIgLT0gY29t
bW9uX0V4cDI7Ci0gICAgaFNfRXhwMiAtPSBjb21tb25fRXhwMjsKLQotICAgIEJpZ0ludGVnZXIg
ZFMgPSBkOwotICAgIGRTLk11bHRpcGx5UG93NShkU19FeHA1KSA8PD0gZFNfRXhwMjsKLQotICAg
IEJpZ0ludGVnZXIgYlMoYkludCk7Ci0gICAgYlMuTXVsdGlwbHlQb3c1KGJTX0V4cDUpIDw8PSBi
U19FeHAyOwotCi0gICAgQmlnSW50ZWdlciBoUygxKTsKLSAgICBoUy5NdWx0aXBseVBvdzUoaFNf
RXhwNSkgPDw9IGhTX0V4cDI7Ci0KLSAgICBCaWdJbnRlZ2VyIGRlbHRhKDApOwotICAgICphZGp1
c3RUb05lZ2F0aXZlID0gZFMuRGlmZmVyZW5jZShiUywgJmRlbHRhKTsKLQotICAgIGludCBjbXAg
PSBkZWx0YS5Db21wYXJlKGhTKTsKLSAgICAvLyBJZiBkZWx0YSBpcyB3aXRoaW4gMS8yIFVMUCwg
Y2hlY2sgZm9yIHNwZWNpYWwgY2FzZSB3aGVuIHNpZ25pZmljYW5kIGlzIHBvd2VyIG9mIHR3by4K
LSAgICAvLyBJbiB0aGlzIGNhc2UsIG5lZWQgdG8gY29tcGFyZSB3aXRoIDEvMmggaW4gdGhlIGxv
d2VyIGJvdW5kLgotICAgIGlmIChjbXAgPCAwICYmICphZGp1c3RUb05lZ2F0aXZlICYmIC8vIHdp
dGhpbiBhbmQgZFMgPCBiUwotICAgICAgICBkYi5Jc05vcm1hbCgpICYmIChiSW50ICYgKGJJbnQg
LSAxKSkgPT0gMCAmJiAvLyBQb3dlciBvZiAyCi0gICAgICAgIGRiLlVpbnQ2NFZhbHVlKCkgIT0g
UkFQSURKU09OX1VJTlQ2NF9DMigweDAwMTAwMDAwLCAweDAwMDAwMDAwKSkgLy8gbWluaW11bSBu
b3JtYWwgbnVtYmVyIG11c3Qgbm90IGRvIHRoaXMKLSAgICB7Ci0gICAgICAgIGRlbHRhIDw8PSAx
OwotICAgICAgICByZXR1cm4gZGVsdGEuQ29tcGFyZShoUyk7Ci0gICAgfQotICAgIHJldHVybiBj
bXA7Ci19Ci0KLWlubGluZSBib29sIFN0cnRvZEZhc3QoZG91YmxlIGQsIGludCBwLCBkb3VibGUq
IHJlc3VsdCkgewotICAgIC8vIFVzZSBmYXN0IHBhdGggZm9yIHN0cmluZy10by1kb3VibGUgY29u
dmVyc2lvbiBpZiBwb3NzaWJsZQotICAgIC8vIHNlZSBodHRwOi8vd3d3LmV4cGxvcmluZ2JpbmFy
eS5jb20vZmFzdC1wYXRoLWRlY2ltYWwtdG8tZmxvYXRpbmctcG9pbnQtY29udmVyc2lvbi8KLSAg
ICBpZiAocCA+IDIyICAmJiBwIDwgMjIgKyAxNikgewotICAgICAgICAvLyBGYXN0IFBhdGggQ2Fz
ZXMgSW4gRGlzZ3Vpc2UKLSAgICAgICAgZCAqPSBpbnRlcm5hbDo6UG93MTAocCAtIDIyKTsKLSAg
ICAgICAgcCA9IDIyOwotICAgIH0KLQotICAgIGlmIChwID49IC0yMiAmJiBwIDw9IDIyICYmIGQg
PD0gOTAwNzE5OTI1NDc0MDk5MS4wKSB7IC8vIDJeNTMgLSAxCi0gICAgICAgICpyZXN1bHQgPSBG
YXN0UGF0aChkLCBwKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGVsc2UKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotfQotCi0vLyBDb21wdXRlIGFuIGFwcHJveGltYXRpb24gYW5k
IHNlZSBpZiBpdCBpcyB3aXRoaW4gMS8yIFVMUAotaW5saW5lIGJvb2wgU3RydG9kRGl5RnAoY29u
c3QgY2hhciogZGVjaW1hbHMsIHNpemVfdCBsZW5ndGgsIHNpemVfdCBkZWNpbWFsUG9zaXRpb24s
IGludCBleHAsIGRvdWJsZSogcmVzdWx0KSB7Ci0gICAgdWludDY0X3Qgc2lnbmlmaWNhbmQgPSAw
OwotICAgIHNpemVfdCBpID0gMDsgICAvLyAyXjY0IC0gMSA9IDE4NDQ2NzQ0MDczNzA5NTUxNjE1
LCAxODQ0Njc0NDA3MzcwOTU1MTYxID0gMHgxOTk5OTk5OTk5OTk5OTk5ICAgIAotICAgIGZvciAo
OyBpIDwgbGVuZ3RoOyBpKyspIHsKLSAgICAgICAgaWYgKHNpZ25pZmljYW5kICA+ICBSQVBJREpT
T05fVUlOVDY0X0MyKDB4MTk5OTk5OTksIDB4OTk5OTk5OTkpIHx8Ci0gICAgICAgICAgICAoc2ln
bmlmaWNhbmQgPT0gUkFQSURKU09OX1VJTlQ2NF9DMigweDE5OTk5OTk5LCAweDk5OTk5OTk5KSAm
JiBkZWNpbWFsc1tpXSA+ICc1JykpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgc2lnbmlm
aWNhbmQgPSBzaWduaWZpY2FuZCAqIDEwICsgKGRlY2ltYWxzW2ldIC0gJzAnKTsKLSAgICB9Ci0g
ICAgCi0gICAgaWYgKGkgPCBsZW5ndGggJiYgZGVjaW1hbHNbaV0gPj0gJzUnKSAvLyBSb3VuZGlu
ZwotICAgICAgICBzaWduaWZpY2FuZCsrOwotCi0gICAgc2l6ZV90IHJlbWFpbmluZyA9IGxlbmd0
aCAtIGk7Ci0gICAgY29uc3QgdW5zaWduZWQga1VscFNoaWZ0ID0gMzsKLSAgICBjb25zdCB1bnNp
Z25lZCBrVWxwID0gMSA8PCBrVWxwU2hpZnQ7Ci0gICAgaW50IGVycm9yID0gKHJlbWFpbmluZyA9
PSAwKSA/IDAgOiBrVWxwIC8gMjsKLQotICAgIERpeUZwIHYoc2lnbmlmaWNhbmQsIDApOwotICAg
IHYgPSB2Lk5vcm1hbGl6ZSgpOwotICAgIGVycm9yIDw8PSAtdi5lOwotCi0gICAgY29uc3QgaW50
IGRFeHAgPSAoaW50KWRlY2ltYWxQb3NpdGlvbiAtIChpbnQpaSArIGV4cDsKLQotICAgIGludCBh
Y3R1YWxFeHA7Ci0gICAgRGl5RnAgY2FjaGVkUG93ZXIgPSBHZXRDYWNoZWRQb3dlcjEwKGRFeHAs
ICZhY3R1YWxFeHApOwotICAgIGlmIChhY3R1YWxFeHAgIT0gZEV4cCkgewotICAgICAgICBzdGF0
aWMgY29uc3QgRGl5RnAga1BvdzEwW10gPSB7Ci0gICAgICAgICAgICBEaXlGcChSQVBJREpTT05f
VUlOVDY0X0MyKDB4YTAwMDAwMDAsIDAwMDAwMDAwKSwgLTYwKSwgIC8vIDEwXjEKLSAgICAgICAg
ICAgIERpeUZwKFJBUElESlNPTl9VSU5UNjRfQzIoMHhjODAwMDAwMCwgMDAwMDAwMDApLCAtNTcp
LCAgLy8gMTBeMgotICAgICAgICAgICAgRGl5RnAoUkFQSURKU09OX1VJTlQ2NF9DMigweGZhMDAw
MDAwLCAwMDAwMDAwMCksIC01NCksICAvLyAxMF4zCi0gICAgICAgICAgICBEaXlGcChSQVBJREpT
T05fVUlOVDY0X0MyKDB4OWM0MDAwMDAsIDAwMDAwMDAwKSwgLTUwKSwgIC8vIDEwXjQKLSAgICAg
ICAgICAgIERpeUZwKFJBUElESlNPTl9VSU5UNjRfQzIoMHhjMzUwMDAwMCwgMDAwMDAwMDApLCAt
NDcpLCAgLy8gMTBeNQotICAgICAgICAgICAgRGl5RnAoUkFQSURKU09OX1VJTlQ2NF9DMigweGY0
MjQwMDAwLCAwMDAwMDAwMCksIC00NCksICAvLyAxMF42Ci0gICAgICAgICAgICBEaXlGcChSQVBJ
REpTT05fVUlOVDY0X0MyKDB4OTg5NjgwMDAsIDAwMDAwMDAwKSwgLTQwKSAgIC8vIDEwXjcKLSAg
ICAgICAgfTsKLSAgICAgICAgaW50IGFkanVzdG1lbnQgPSBkRXhwIC0gYWN0dWFsRXhwIC0gMTsK
LSAgICAgICAgUkFQSURKU09OX0FTU0VSVChhZGp1c3RtZW50ID49IDAgJiYgYWRqdXN0bWVudCA8
IDcpOwotICAgICAgICB2ID0gdiAqIGtQb3cxMFthZGp1c3RtZW50XTsKLSAgICAgICAgaWYgKGxl
bmd0aCArIGFkanVzdG1lbnQgPiAxOSkgLy8gaGFzIG1vcmUgZGlnaXRzIHRoYW4gZGVjaW1hbCBk
aWdpdHMgaW4gNjQtYml0Ci0gICAgICAgICAgICBlcnJvciArPSBrVWxwIC8gMjsKLSAgICB9Ci0K
LSAgICB2ID0gdiAqIGNhY2hlZFBvd2VyOwotCi0gICAgZXJyb3IgKz0ga1VscCArIChlcnJvciA9
PSAwID8gMCA6IDEpOwotCi0gICAgY29uc3QgaW50IG9sZEV4cCA9IHYuZTsKLSAgICB2ID0gdi5O
b3JtYWxpemUoKTsKLSAgICBlcnJvciA8PD0gb2xkRXhwIC0gdi5lOwotCi0gICAgY29uc3QgdW5z
aWduZWQgZWZmZWN0aXZlU2lnbmlmaWNhbmRTaXplID0gRG91YmxlOjpFZmZlY3RpdmVTaWduaWZp
Y2FuZFNpemUoNjQgKyB2LmUpOwotICAgIHVuc2lnbmVkIHByZWNpc2lvblNpemUgPSA2NCAtIGVm
ZmVjdGl2ZVNpZ25pZmljYW5kU2l6ZTsKLSAgICBpZiAocHJlY2lzaW9uU2l6ZSArIGtVbHBTaGlm
dCA+PSA2NCkgewotICAgICAgICB1bnNpZ25lZCBzY2FsZUV4cCA9IChwcmVjaXNpb25TaXplICsg
a1VscFNoaWZ0KSAtIDYzOwotICAgICAgICB2LmYgPj49IHNjYWxlRXhwOwotICAgICAgICB2LmUg
Kz0gc2NhbGVFeHA7IAotICAgICAgICBlcnJvciA9IChlcnJvciA+PiBzY2FsZUV4cCkgKyAxICsg
a1VscDsKLSAgICAgICAgcHJlY2lzaW9uU2l6ZSAtPSBzY2FsZUV4cDsKLSAgICB9Ci0KLSAgICBE
aXlGcCByb3VuZGVkKHYuZiA+PiBwcmVjaXNpb25TaXplLCB2LmUgKyBwcmVjaXNpb25TaXplKTsK
LSAgICBjb25zdCB1aW50NjRfdCBwcmVjaXNpb25CaXRzID0gKHYuZiAmICgodWludDY0X3QoMSkg
PDwgcHJlY2lzaW9uU2l6ZSkgLSAxKSkgKiBrVWxwOwotICAgIGNvbnN0IHVpbnQ2NF90IGhhbGZX
YXkgPSAodWludDY0X3QoMSkgPDwgKHByZWNpc2lvblNpemUgLSAxKSkgKiBrVWxwOwotICAgIGlm
IChwcmVjaXNpb25CaXRzID49IGhhbGZXYXkgKyBlcnJvcikKLSAgICAgICAgcm91bmRlZC5mKys7
Ci0KLSAgICAqcmVzdWx0ID0gcm91bmRlZC5Ub0RvdWJsZSgpOwotCi0gICAgcmV0dXJuIGhhbGZX
YXkgLSBlcnJvciA+PSBwcmVjaXNpb25CaXRzIHx8IHByZWNpc2lvbkJpdHMgPj0gaGFsZldheSAr
IGVycm9yOwotfQotCi1pbmxpbmUgZG91YmxlIFN0cnRvZEJpZ0ludGVnZXIoZG91YmxlIGFwcHJv
eCwgY29uc3QgY2hhciogZGVjaW1hbHMsIHNpemVfdCBsZW5ndGgsIHNpemVfdCBkZWNpbWFsUG9z
aXRpb24sIGludCBleHApIHsKLSAgICBjb25zdCBCaWdJbnRlZ2VyIGRJbnQoZGVjaW1hbHMsIGxl
bmd0aCk7Ci0gICAgY29uc3QgaW50IGRFeHAgPSAoaW50KWRlY2ltYWxQb3NpdGlvbiAtIChpbnQp
bGVuZ3RoICsgZXhwOwotICAgIERvdWJsZSBhKGFwcHJveCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7
IGkgPCAxMDsgaSsrKSB7Ci0gICAgICAgIGJvb2wgYWRqdXN0VG9OZWdhdGl2ZTsKLSAgICAgICAg
aW50IGNtcCA9IENoZWNrV2l0aGluSGFsZlVMUChhLlZhbHVlKCksIGRJbnQsIGRFeHAsICZhZGp1
c3RUb05lZ2F0aXZlKTsKLSAgICAgICAgaWYgKGNtcCA8IDApCi0gICAgICAgICAgICByZXR1cm4g
YS5WYWx1ZSgpOyAgLy8gd2l0aGluIGhhbGYgVUxQCi0gICAgICAgIGVsc2UgaWYgKGNtcCA9PSAw
KSB7Ci0gICAgICAgICAgICAvLyBSb3VuZCB0b3dhcmRzIGV2ZW4KLSAgICAgICAgICAgIGlmIChh
LlNpZ25pZmljYW5kKCkgJiAxKQotICAgICAgICAgICAgICAgIHJldHVybiBhZGp1c3RUb05lZ2F0
aXZlID8gYS5QcmV2aW91c1Bvc2l0aXZlRG91YmxlKCkgOiBhLk5leHRQb3NpdGl2ZURvdWJsZSgp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBhLlZhbHVlKCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZSAvLyBhZGp1c3RtZW50Ci0gICAgICAgICAgICBhID0gYWRq
dXN0VG9OZWdhdGl2ZSA/IGEuUHJldmlvdXNQb3NpdGl2ZURvdWJsZSgpIDogYS5OZXh0UG9zaXRp
dmVEb3VibGUoKTsKLSAgICB9Ci0KLSAgICAvLyBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQg
aW4gY2FzZSB0aGVyZSBpcyByZWFsbHkgYSBidWcsIGJyZWFrIHRoZSBpbmZpbml0ZS1sb29wCi0g
ICAgcmV0dXJuIGEuVmFsdWUoKTsKLX0KLQotaW5saW5lIGRvdWJsZSBTdHJ0b2RGdWxsUHJlY2lz
aW9uKGRvdWJsZSBkLCBpbnQgcCwgY29uc3QgY2hhciogZGVjaW1hbHMsIHNpemVfdCBsZW5ndGgs
IHNpemVfdCBkZWNpbWFsUG9zaXRpb24sIGludCBleHApIHsKLSAgICBSQVBJREpTT05fQVNTRVJU
KGQgPj0gMC4wKTsKLSAgICBSQVBJREpTT05fQVNTRVJUKGxlbmd0aCA+PSAxKTsKLQotICAgIGRv
dWJsZSByZXN1bHQ7Ci0gICAgaWYgKFN0cnRvZEZhc3QoZCwgcCwgJnJlc3VsdCkpCi0gICAgICAg
IHJldHVybiByZXN1bHQ7Ci0KLSAgICAvLyBUcmltIGxlYWRpbmcgemVyb3MKLSAgICB3aGlsZSAo
KmRlY2ltYWxzID09ICcwJyAmJiBsZW5ndGggPiAxKSB7Ci0gICAgICAgIGxlbmd0aC0tOwotICAg
ICAgICBkZWNpbWFscysrOwotICAgICAgICBkZWNpbWFsUG9zaXRpb24tLTsKLSAgICB9Ci0KLSAg
ICAvLyBUcmltIHRyYWlsaW5nIHplcm9zCi0gICAgd2hpbGUgKGRlY2ltYWxzW2xlbmd0aCAtIDFd
ID09ICcwJyAmJiBsZW5ndGggPiAxKSB7Ci0gICAgICAgIGxlbmd0aC0tOwotICAgICAgICBkZWNp
bWFsUG9zaXRpb24tLTsKLSAgICAgICAgZXhwKys7Ci0gICAgfQotCi0gICAgLy8gVHJpbSByaWdo
dC1tb3N0IGRpZ2l0cwotICAgIGNvbnN0IGludCBrTWF4RGVjaW1hbERpZ2l0ID0gNzgwOwotICAg
IGlmICgoaW50KWxlbmd0aCA+IGtNYXhEZWNpbWFsRGlnaXQpIHsKLSAgICAgICAgZXhwICs9IChp
bnQobGVuZ3RoKSAtIGtNYXhEZWNpbWFsRGlnaXQpOwotICAgICAgICBsZW5ndGggPSBrTWF4RGVj
aW1hbERpZ2l0OwotICAgIH0KLQotICAgIC8vIElmIHRvbyBzbWFsbCwgdW5kZXJmbG93IHRvIHpl
cm8KLSAgICBpZiAoaW50KGxlbmd0aCkgKyBleHAgPCAtMzI0KQotICAgICAgICByZXR1cm4gMC4w
OwotCi0gICAgaWYgKFN0cnRvZERpeUZwKGRlY2ltYWxzLCBsZW5ndGgsIGRlY2ltYWxQb3NpdGlv
biwgZXhwLCAmcmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQotICAgIC8vIFVzZSBh
cHByb3hpbWF0aW9uIGZyb20gU3RydG9kRGl5RnAgYW5kIG1ha2UgYWRqdXN0bWVudCB3aXRoIEJp
Z0ludGVnZXIgY29tcGFyaXNvbgotICAgIHJldHVybiBTdHJ0b2RCaWdJbnRlZ2VyKHJlc3VsdCwg
ZGVjaW1hbHMsIGxlbmd0aCwgZGVjaW1hbFBvc2l0aW9uLCBleHApOwotfQotCi19IC8vIG5hbWVz
cGFjZSBpbnRlcm5hbAotUkFQSURKU09OX05BTUVTUEFDRV9FTkQKLQotI2VuZGlmIC8vIFJBUElE
SlNPTl9TVFJUT0RfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL21lbW9yeWJ1ZmZlci5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNv
bi9pbmNsdWRlL3JhcGlkanNvbi9tZW1vcnlidWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTVjNjhhMzg3MTBlNGQzYWI2YTNlZDI0YjE1ZDk0ZGM3ODdlMWVhNi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29u
L21lbW9yeWJ1ZmZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotLy8gQ29weXJp
Z2h0IChDKSAyMDExIE1pbG8gWWlwCi0vLwotLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRl
ZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQotLy8gb2Yg
dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv
ZnR3YXJlIiksIHRvIGRlYWwKLS8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u
LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKLS8vIHRvIHVzZSwgY29w
eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29y
IHNlbGwKLS8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0
byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRv
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLS8vCi0vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotLy8g
YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0vLwot
Ly8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg
QU5ZIEtJTkQsIEVYUFJFU1MgT1IKLS8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU
RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotLy8gRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFCi0vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z
IENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNU
SU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAotLy8gT1VU
IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF
UiBERUFMSU5HUyBJTgotLy8gVEhFIFNPRlRXQVJFLgotCi0jaWZuZGVmIFJBUElESlNPTl9NRU1P
UllCVUZGRVJfSF8KLSNkZWZpbmUgUkFQSURKU09OX01FTU9SWUJVRkZFUl9IXwotCi0jaW5jbHVk
ZSAicmFwaWRqc29uLmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwvc3RhY2suaCIKLQotUkFQSURKU09O
X05BTUVTUEFDRV9CRUdJTgotCi0vLyEgUmVwcmVzZW50cyBhbiBpbi1tZW1vcnkgb3V0cHV0IGJ5
dGUgc3RyZWFtLgotLyohCi0gICAgVGhpcyBjbGFzcyBpcyBtYWlubHkgZm9yIGJlaW5nIHdyYXBw
ZWQgYnkgRW5jb2RlZE91dHB1dFN0cmVhbSBvciBBdXRvVVRGT3V0cHV0U3RyZWFtLgotCi0gICAg
SXQgaXMgc2ltaWxhciB0byBGaWxlV3JpdGVCdWZmZXIgYnV0IHRoZSBkZXN0aW5hdGlvbiBpcyBh
biBpbi1tZW1vcnkgYnVmZmVyIGluc3RlYWQgb2YgYSBmaWxlLgotCi0gICAgRGlmZmVyZW5jZXMg
YmV0d2VlbiBNZW1vcnlCdWZmZXIgYW5kIFN0cmluZ0J1ZmZlcjoKLSAgICAxLiBTdHJpbmdCdWZm
ZXIgaGFzIEVuY29kaW5nIGJ1dCBNZW1vcnlCdWZmZXIgaXMgb25seSBhIGJ5dGUgYnVmZmVyLiAK
LSAgICAyLiBTdHJpbmdCdWZmZXI6OkdldFN0cmluZygpIHJldHVybnMgYSBudWxsLXRlcm1pbmF0
ZWQgc3RyaW5nLiBNZW1vcnlCdWZmZXI6OkdldEJ1ZmZlcigpIHJldHVybnMgYSBidWZmZXIgd2l0
aG91dCB0ZXJtaW5hdG9yLgotCi0gICAgXHRwYXJhbSBBbGxvY2F0b3IgdHlwZSBmb3IgYWxsb2Nh
dGluZyBtZW1vcnkgYnVmZmVyLgotICAgIFxub3RlIGltcGxlbWVudHMgU3RyZWFtIGNvbmNlcHQK
LSovCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yID0gQ3J0QWxsb2NhdG9yPgotc3RydWN0
IEdlbmVyaWNNZW1vcnlCdWZmZXIgewotICAgIHR5cGVkZWYgY2hhciBDaDsgLy8gYnl0ZQotCi0g
ICAgR2VuZXJpY01lbW9yeUJ1ZmZlcihBbGxvY2F0b3IqIGFsbG9jYXRvciA9IDAsIHNpemVfdCBj
YXBhY2l0eSA9IGtEZWZhdWx0Q2FwYWNpdHkpIDogc3RhY2tfKGFsbG9jYXRvciwgY2FwYWNpdHkp
IHt9Ci0KLSAgICB2b2lkIFB1dChDaCBjKSB7ICpzdGFja18udGVtcGxhdGUgUHVzaDxDaD4oKSA9
IGM7IH0KLSAgICB2b2lkIEZsdXNoKCkge30KLQotICAgIHZvaWQgQ2xlYXIoKSB7IHN0YWNrXy5D
bGVhcigpOyB9Ci0gICAgdm9pZCBTaHJpbmtUb0ZpdCgpIHsgc3RhY2tfLlNocmlua1RvRml0KCk7
IH0KLSAgICBDaCogUHVzaChzaXplX3QgY291bnQpIHsgcmV0dXJuIHN0YWNrXy50ZW1wbGF0ZSBQ
dXNoPENoPihjb3VudCk7IH0KLSAgICB2b2lkIFBvcChzaXplX3QgY291bnQpIHsgc3RhY2tfLnRl
bXBsYXRlIFBvcDxDaD4oY291bnQpOyB9Ci0KLSAgICBjb25zdCBDaCogR2V0QnVmZmVyKCkgY29u
c3QgewotICAgICAgICByZXR1cm4gc3RhY2tfLnRlbXBsYXRlIEJvdHRvbTxDaD4oKTsKLSAgICB9
Ci0KLSAgICBzaXplX3QgR2V0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YWNrXy5HZXRTaXplKCk7
IH0KLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga0RlZmF1bHRDYXBhY2l0eSA9IDI1NjsKLSAg
ICBtdXRhYmxlIGludGVybmFsOjpTdGFjazxBbGxvY2F0b3I+IHN0YWNrXzsKLX07Ci0KLXR5cGVk
ZWYgR2VuZXJpY01lbW9yeUJ1ZmZlcjw+IE1lbW9yeUJ1ZmZlcjsKLQotLy8hIEltcGxlbWVudCBz
cGVjaWFsaXplZCB2ZXJzaW9uIG9mIFB1dE4oKSB3aXRoIG1lbXNldCgpIGZvciBiZXR0ZXIgcGVy
Zm9ybWFuY2UuCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgdm9pZCBQdXROKE1lbW9yeUJ1ZmZlciYgbWVt
b3J5QnVmZmVyLCBjaGFyIGMsIHNpemVfdCBuKSB7Ci0gICAgc3RkOjptZW1zZXQobWVtb3J5QnVm
ZmVyLnN0YWNrXy5QdXNoPGNoYXI+KG4pLCBjLCBuICogc2l6ZW9mKGMpKTsKLX0KLQotUkFQSURK
U09OX05BTUVTUEFDRV9FTkQKLQotI2VuZGlmIC8vIFJBUElESlNPTl9NRU1PUllCVUZGRVJfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0
eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vbWVtb3J5c3RyZWFtLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFw
aWRqc29uL21lbW9yeXN0cmVhbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTk0
YTEyZmM0N2Y1NDRjMzIwNTUwN2MyNTdkNmYwNDdiMTk1NTQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vbWVtb3J5c3RyZWFt
LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTEg
TWlsbyBZaXAKLS8vCi0vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo
YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0vLyBvZiB0aGlzIHNvZnR3YXJl
IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8g
ZGVhbAotLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3
aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l
cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotLy8gY29w
aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNv
ZnR3YXJlIGlzCi0vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zOgotLy8KLS8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz
IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0vLyBhbGwgY29waWVzIG9y
IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLS8vCi0vLyBUSEUgU09GVFdB
UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQ
UkVTUyBPUgotLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLS8vIEFV
VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH
RVMgT1IgT1RIRVIKLS8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB
Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi0vLyBPVVQgT0YgT1IgSU4gQ09O
TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElO
Ci0vLyBUSEUgU09GVFdBUkUuCi0KLSNpZm5kZWYgUkFQSURKU09OX01FTU9SWVNUUkVBTV9IXwot
I2RlZmluZSBSQVBJREpTT05fTUVNT1JZU1RSRUFNX0hfCi0KLSNpbmNsdWRlICJyYXBpZGpzb24u
aCIKLQotUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgotCi0vLyEgUmVwcmVzZW50cyBhbiBpbi1t
ZW1vcnkgaW5wdXQgYnl0ZSBzdHJlYW0uCi0vKiEKLSAgICBUaGlzIGNsYXNzIGlzIG1haW5seSBm
b3IgYmVpbmcgd3JhcHBlZCBieSBFbmNvZGVkSW5wdXRTdHJlYW0gb3IgQXV0b1VURklucHV0U3Ry
ZWFtLgotCi0gICAgSXQgaXMgc2ltaWxhciB0byBGaWxlUmVhZEJ1ZmZlciBidXQgdGhlIHNvdXJj
ZSBpcyBhbiBpbi1tZW1vcnkgYnVmZmVyIGluc3RlYWQgb2YgYSBmaWxlLgotCi0gICAgRGlmZmVy
ZW5jZXMgYmV0d2VlbiBNZW1vcnlTdHJlYW0gYW5kIFN0cmluZ1N0cmVhbToKLSAgICAxLiBTdHJp
bmdTdHJlYW0gaGFzIGVuY29kaW5nIGJ1dCBNZW1vcnlTdHJlYW0gaXMgYSBieXRlIHN0cmVhbS4K
LSAgICAyLiBNZW1vcnlTdHJlYW0gbmVlZHMgc2l6ZSBvZiB0aGUgc291cmNlIGJ1ZmZlciBhbmQg
dGhlIGJ1ZmZlciBkb24ndCBuZWVkIHRvIGJlIG51bGwgdGVybWluYXRlZC4gU3RyaW5nU3RyZWFt
IGFzc3VtZSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIGFzIHNvdXJjZS4KLSAgICAzLiBNZW1vcnlT
dHJlYW0gc3VwcG9ydHMgUGVlazQoKSBmb3IgZW5jb2RpbmcgZGV0ZWN0aW9uLiBTdHJpbmdTdHJl
YW0gaXMgc3BlY2lmaWVkIHdpdGggYW4gZW5jb2Rpbmcgc28gaXQgc2hvdWxkIG5vdCBoYXZlIFBl
ZWs0KCkuCi0gICAgXG5vdGUgaW1wbGVtZW50cyBTdHJlYW0gY29uY2VwdAotKi8KLXN0cnVjdCBN
ZW1vcnlTdHJlYW0gewotICAgIHR5cGVkZWYgY2hhciBDaDsgLy8gYnl0ZQotCi0gICAgTWVtb3J5
U3RyZWFtKGNvbnN0IENoICpzcmMsIHNpemVfdCBzaXplKSA6IHNyY18oc3JjKSwgYmVnaW5fKHNy
YyksIGVuZF8oc3JjICsgc2l6ZSksIHNpemVfKHNpemUpIHt9Ci0KLSAgICBDaCBQZWVrKCkgY29u
c3QgeyByZXR1cm4gKHNyY18gPT0gZW5kXykgPyAnXDAnIDogKnNyY187IH0KLSAgICBDaCBUYWtl
KCkgeyByZXR1cm4gKHNyY18gPT0gZW5kXykgPyAnXDAnIDogKnNyY18rKzsgfQotICAgIHNpemVf
dCBUZWxsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNfIC0gYmVnaW5f
KTsgfQotCi0gICAgQ2gqIFB1dEJlZ2luKCkgeyBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsgcmV0
dXJuIDA7IH0KLSAgICB2b2lkIFB1dChDaCkgeyBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsgfQot
ICAgIHZvaWQgRmx1c2goKSB7IFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyB9Ci0gICAgc2l6ZV90
IFB1dEVuZChDaCopIHsgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7IHJldHVybiAwOyB9Ci0KLSAg
ICAvLyBGb3IgZW5jb2RpbmcgZGV0ZWN0aW9uIG9ubHkuCi0gICAgY29uc3QgQ2gqIFBlZWs0KCkg
Y29uc3QgewotICAgICAgICByZXR1cm4gVGVsbCgpICsgNCA8PSBzaXplXyA/IHNyY18gOiAwOwot
ICAgIH0KLQotICAgIGNvbnN0IENoKiBzcmNfOyAgICAgLy8hPCBDdXJyZW50IHJlYWQgcG9zaXRp
b24uCi0gICAgY29uc3QgQ2gqIGJlZ2luXzsgICAvLyE8IE9yaWdpbmFsIGhlYWQgb2YgdGhlIHN0
cmluZy4KLSAgICBjb25zdCBDaCogZW5kXzsgICAgIC8vITwgRW5kIG9mIHN0cmVhbS4KLSAgICBz
aXplX3Qgc2l6ZV87ICAgICAgIC8vITwgU2l6ZSBvZiB0aGUgc3RyZWFtLgotfTsKLQotUkFQSURK
U09OX05BTUVTUEFDRV9FTkQKLQotI2VuZGlmIC8vIFJBUElESlNPTl9NRU1PUllCVUZGRVJfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0
eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vbXNpbnR0eXBlcy9pbnR0eXBlcy5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNs
dWRlL3JhcGlkanNvbi9tc2ludHR5cGVzL2ludHR5cGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGFmNzEzYzlhZGY1NGUwNjBlNzdlZmUxZGYyMzRkYWMzNTBkZGY0YzAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNv
bi9tc2ludHR5cGVzL2ludHR5cGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMTIgKzAsMCBAQAot
Ly8gSVNPIEM5eCAgY29tcGxpYW50IGludHR5cGVzLmggZm9yIE1pY3Jvc29mdCBWaXN1YWwgU3R1
ZGlvCi0vLyBCYXNlZCBvbiBJU08vSUVDIDk4OTk6VEMyIENvbW1pdHRlZSBkcmFmdCAoTWF5IDYs
IDIwMDUpIFdHMTQvTjExMjQgCi0vLyAKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDYtMjAxMyBBbGV4
YW5kZXIgQ2hlbWVyaXMKLS8vIAotLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0vLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoK
LS8vIAotLy8gICAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCi0vLyAgICAgIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAKLS8vICAgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LS8vICAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotLy8gICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotLy8gCi0vLyAgIDMuIE5l
aXRoZXIgdGhlIG5hbWUgb2YgdGhlIHByb2R1Y3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJp
YnV0b3JzIG1heQotLy8gICAgICBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotLy8gICAgICB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLS8vIAotLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAotLy8g
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YKLS8vIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PCi0vLyBFVkVOVCBTSEFMTCBUSEUgQVVU
SE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0vLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsKLS8vIE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCAKLS8vIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SCi0vLyBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGCi0vLyBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS8vIAotLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwotCi0jaWZuZGVmIF9NU0NfVkVSIC8vIFsKLSNlcnJvciAiVXNlIHRoaXMgaGVhZGVyIG9u
bHkgd2l0aCBNaWNyb3NvZnQgVmlzdWFsIEMrKyBjb21waWxlcnMhIgotI2VuZGlmIC8vIF9NU0Nf
VkVSIF0KLQotI2lmbmRlZiBfTVNDX0lOVFRZUEVTX0hfIC8vIFsKLSNkZWZpbmUgX01TQ19JTlRU
WVBFU19IXwotCi0jaWYgX01TQ19WRVIgPiAxMDAwCi0jcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0j
aW5jbHVkZSAic3RkaW50LmgiCi0KLS8vIG1pbG95aXA6IFZDIHN1cHBvcnRzIGludHR5cGVzLmgg
c2luY2UgVkMyMDEzCi0jaWYgX01TQ19WRVIgPj0gMTgwMAotI2luY2x1ZGUgPGludHR5cGVzLmg+
Ci0jZWxzZQotCi0vLyA3LjggRm9ybWF0IGNvbnZlcnNpb24gb2YgaW50ZWdlciB0eXBlcwotCi10
eXBlZGVmIHN0cnVjdCB7Ci0gICBpbnRtYXhfdCBxdW90OwotICAgaW50bWF4X3QgcmVtOwotfSBp
bWF4ZGl2X3Q7Ci0KLS8vIDcuOC4xIE1hY3JvcyBmb3IgZm9ybWF0IHNwZWNpZmllcnMKLQotI2lm
ICFkZWZpbmVkKF9fY3BsdXNwbHVzKSB8fCBkZWZpbmVkKF9fU1REQ19GT1JNQVRfTUFDUk9TKSAv
LyBbICAgU2VlIGZvb3Rub3RlIDE4NSBhdCBwYWdlIDE5OAotCi0vLyBUaGUgZnByaW50ZiBtYWNy
b3MgZm9yIHNpZ25lZCBpbnRlZ2VycyBhcmU6Ci0jZGVmaW5lIFBSSWQ4ICAgICAgICJkIgotI2Rl
ZmluZSBQUklpOCAgICAgICAiaSIKLSNkZWZpbmUgUFJJZExFQVNUOCAgImQiCi0jZGVmaW5lIFBS
SWlMRUFTVDggICJpIgotI2RlZmluZSBQUklkRkFTVDggICAiZCIKLSNkZWZpbmUgUFJJaUZBU1Q4
ICAgImkiCi0KLSNkZWZpbmUgUFJJZDE2ICAgICAgICJoZCIKLSNkZWZpbmUgUFJJaTE2ICAgICAg
ICJoaSIKLSNkZWZpbmUgUFJJZExFQVNUMTYgICJoZCIKLSNkZWZpbmUgUFJJaUxFQVNUMTYgICJo
aSIKLSNkZWZpbmUgUFJJZEZBU1QxNiAgICJoZCIKLSNkZWZpbmUgUFJJaUZBU1QxNiAgICJoaSIK
LQotI2RlZmluZSBQUklkMzIgICAgICAgIkkzMmQiCi0jZGVmaW5lIFBSSWkzMiAgICAgICAiSTMy
aSIKLSNkZWZpbmUgUFJJZExFQVNUMzIgICJJMzJkIgotI2RlZmluZSBQUklpTEVBU1QzMiAgIkkz
MmkiCi0jZGVmaW5lIFBSSWRGQVNUMzIgICAiSTMyZCIKLSNkZWZpbmUgUFJJaUZBU1QzMiAgICJJ
MzJpIgotCi0jZGVmaW5lIFBSSWQ2NCAgICAgICAiSTY0ZCIKLSNkZWZpbmUgUFJJaTY0ICAgICAg
ICJJNjRpIgotI2RlZmluZSBQUklkTEVBU1Q2NCAgIkk2NGQiCi0jZGVmaW5lIFBSSWlMRUFTVDY0
ICAiSTY0aSIKLSNkZWZpbmUgUFJJZEZBU1Q2NCAgICJJNjRkIgotI2RlZmluZSBQUklpRkFTVDY0
ICAgIkk2NGkiCi0KLSNkZWZpbmUgUFJJZE1BWCAgICAgIkk2NGQiCi0jZGVmaW5lIFBSSWlNQVgg
ICAgICJJNjRpIgotCi0jZGVmaW5lIFBSSWRQVFIgICAgICJJZCIKLSNkZWZpbmUgUFJJaVBUUiAg
ICAgIklpIgotCi0vLyBUaGUgZnByaW50ZiBtYWNyb3MgZm9yIHVuc2lnbmVkIGludGVnZXJzIGFy
ZToKLSNkZWZpbmUgUFJJbzggICAgICAgIm8iCi0jZGVmaW5lIFBSSXU4ICAgICAgICJ1IgotI2Rl
ZmluZSBQUkl4OCAgICAgICAieCIKLSNkZWZpbmUgUFJJWDggICAgICAgIlgiCi0jZGVmaW5lIFBS
SW9MRUFTVDggICJvIgotI2RlZmluZSBQUkl1TEVBU1Q4ICAidSIKLSNkZWZpbmUgUFJJeExFQVNU
OCAgIngiCi0jZGVmaW5lIFBSSVhMRUFTVDggICJYIgotI2RlZmluZSBQUklvRkFTVDggICAibyIK
LSNkZWZpbmUgUFJJdUZBU1Q4ICAgInUiCi0jZGVmaW5lIFBSSXhGQVNUOCAgICJ4IgotI2RlZmlu
ZSBQUklYRkFTVDggICAiWCIKLQotI2RlZmluZSBQUklvMTYgICAgICAgImhvIgotI2RlZmluZSBQ
Ukl1MTYgICAgICAgImh1IgotI2RlZmluZSBQUkl4MTYgICAgICAgImh4IgotI2RlZmluZSBQUklY
MTYgICAgICAgImhYIgotI2RlZmluZSBQUklvTEVBU1QxNiAgImhvIgotI2RlZmluZSBQUkl1TEVB
U1QxNiAgImh1IgotI2RlZmluZSBQUkl4TEVBU1QxNiAgImh4IgotI2RlZmluZSBQUklYTEVBU1Qx
NiAgImhYIgotI2RlZmluZSBQUklvRkFTVDE2ICAgImhvIgotI2RlZmluZSBQUkl1RkFTVDE2ICAg
Imh1IgotI2RlZmluZSBQUkl4RkFTVDE2ICAgImh4IgotI2RlZmluZSBQUklYRkFTVDE2ICAgImhY
IgotCi0jZGVmaW5lIFBSSW8zMiAgICAgICAiSTMybyIKLSNkZWZpbmUgUFJJdTMyICAgICAgICJJ
MzJ1IgotI2RlZmluZSBQUkl4MzIgICAgICAgIkkzMngiCi0jZGVmaW5lIFBSSVgzMiAgICAgICAi
STMyWCIKLSNkZWZpbmUgUFJJb0xFQVNUMzIgICJJMzJvIgotI2RlZmluZSBQUkl1TEVBU1QzMiAg
IkkzMnUiCi0jZGVmaW5lIFBSSXhMRUFTVDMyICAiSTMyeCIKLSNkZWZpbmUgUFJJWExFQVNUMzIg
ICJJMzJYIgotI2RlZmluZSBQUklvRkFTVDMyICAgIkkzMm8iCi0jZGVmaW5lIFBSSXVGQVNUMzIg
ICAiSTMydSIKLSNkZWZpbmUgUFJJeEZBU1QzMiAgICJJMzJ4IgotI2RlZmluZSBQUklYRkFTVDMy
ICAgIkkzMlgiCi0KLSNkZWZpbmUgUFJJbzY0ICAgICAgICJJNjRvIgotI2RlZmluZSBQUkl1NjQg
ICAgICAgIkk2NHUiCi0jZGVmaW5lIFBSSXg2NCAgICAgICAiSTY0eCIKLSNkZWZpbmUgUFJJWDY0
ICAgICAgICJJNjRYIgotI2RlZmluZSBQUklvTEVBU1Q2NCAgIkk2NG8iCi0jZGVmaW5lIFBSSXVM
RUFTVDY0ICAiSTY0dSIKLSNkZWZpbmUgUFJJeExFQVNUNjQgICJJNjR4IgotI2RlZmluZSBQUklY
TEVBU1Q2NCAgIkk2NFgiCi0jZGVmaW5lIFBSSW9GQVNUNjQgICAiSTY0byIKLSNkZWZpbmUgUFJJ
dUZBU1Q2NCAgICJJNjR1IgotI2RlZmluZSBQUkl4RkFTVDY0ICAgIkk2NHgiCi0jZGVmaW5lIFBS
SVhGQVNUNjQgICAiSTY0WCIKLQotI2RlZmluZSBQUklvTUFYICAgICAiSTY0byIKLSNkZWZpbmUg
UFJJdU1BWCAgICAgIkk2NHUiCi0jZGVmaW5lIFBSSXhNQVggICAgICJJNjR4IgotI2RlZmluZSBQ
UklYTUFYICAgICAiSTY0WCIKLQotI2RlZmluZSBQUklvUFRSICAgICAiSW8iCi0jZGVmaW5lIFBS
SXVQVFIgICAgICJJdSIKLSNkZWZpbmUgUFJJeFBUUiAgICAgIkl4IgotI2RlZmluZSBQUklYUFRS
ICAgICAiSVgiCi0KLS8vIFRoZSBmc2NhbmYgbWFjcm9zIGZvciBzaWduZWQgaW50ZWdlcnMgYXJl
OgotI2RlZmluZSBTQ05kOCAgICAgICAiZCIKLSNkZWZpbmUgU0NOaTggICAgICAgImkiCi0jZGVm
aW5lIFNDTmRMRUFTVDggICJkIgotI2RlZmluZSBTQ05pTEVBU1Q4ICAiaSIKLSNkZWZpbmUgU0NO
ZEZBU1Q4ICAgImQiCi0jZGVmaW5lIFNDTmlGQVNUOCAgICJpIgotCi0jZGVmaW5lIFNDTmQxNiAg
ICAgICAiaGQiCi0jZGVmaW5lIFNDTmkxNiAgICAgICAiaGkiCi0jZGVmaW5lIFNDTmRMRUFTVDE2
ICAiaGQiCi0jZGVmaW5lIFNDTmlMRUFTVDE2ICAiaGkiCi0jZGVmaW5lIFNDTmRGQVNUMTYgICAi
aGQiCi0jZGVmaW5lIFNDTmlGQVNUMTYgICAiaGkiCi0KLSNkZWZpbmUgU0NOZDMyICAgICAgICJs
ZCIKLSNkZWZpbmUgU0NOaTMyICAgICAgICJsaSIKLSNkZWZpbmUgU0NOZExFQVNUMzIgICJsZCIK
LSNkZWZpbmUgU0NOaUxFQVNUMzIgICJsaSIKLSNkZWZpbmUgU0NOZEZBU1QzMiAgICJsZCIKLSNk
ZWZpbmUgU0NOaUZBU1QzMiAgICJsaSIKLQotI2RlZmluZSBTQ05kNjQgICAgICAgIkk2NGQiCi0j
ZGVmaW5lIFNDTmk2NCAgICAgICAiSTY0aSIKLSNkZWZpbmUgU0NOZExFQVNUNjQgICJJNjRkIgot
I2RlZmluZSBTQ05pTEVBU1Q2NCAgIkk2NGkiCi0jZGVmaW5lIFNDTmRGQVNUNjQgICAiSTY0ZCIK
LSNkZWZpbmUgU0NOaUZBU1Q2NCAgICJJNjRpIgotCi0jZGVmaW5lIFNDTmRNQVggICAgICJJNjRk
IgotI2RlZmluZSBTQ05pTUFYICAgICAiSTY0aSIKLQotI2lmZGVmIF9XSU42NCAvLyBbCi0jICBk
ZWZpbmUgU0NOZFBUUiAgICAgIkk2NGQiCi0jICBkZWZpbmUgU0NOaVBUUiAgICAgIkk2NGkiCi0j
ZWxzZSAgLy8gX1dJTjY0IF1bCi0jICBkZWZpbmUgU0NOZFBUUiAgICAgImxkIgotIyAgZGVmaW5l
IFNDTmlQVFIgICAgICJsaSIKLSNlbmRpZiAgLy8gX1dJTjY0IF0KLQotLy8gVGhlIGZzY2FuZiBt
YWNyb3MgZm9yIHVuc2lnbmVkIGludGVnZXJzIGFyZToKLSNkZWZpbmUgU0NObzggICAgICAgIm8i
Ci0jZGVmaW5lIFNDTnU4ICAgICAgICJ1IgotI2RlZmluZSBTQ054OCAgICAgICAieCIKLSNkZWZp
bmUgU0NOWDggICAgICAgIlgiCi0jZGVmaW5lIFNDTm9MRUFTVDggICJvIgotI2RlZmluZSBTQ051
TEVBU1Q4ICAidSIKLSNkZWZpbmUgU0NOeExFQVNUOCAgIngiCi0jZGVmaW5lIFNDTlhMRUFTVDgg
ICJYIgotI2RlZmluZSBTQ05vRkFTVDggICAibyIKLSNkZWZpbmUgU0NOdUZBU1Q4ICAgInUiCi0j
ZGVmaW5lIFNDTnhGQVNUOCAgICJ4IgotI2RlZmluZSBTQ05YRkFTVDggICAiWCIKLQotI2RlZmlu
ZSBTQ05vMTYgICAgICAgImhvIgotI2RlZmluZSBTQ051MTYgICAgICAgImh1IgotI2RlZmluZSBT
Q054MTYgICAgICAgImh4IgotI2RlZmluZSBTQ05YMTYgICAgICAgImhYIgotI2RlZmluZSBTQ05v
TEVBU1QxNiAgImhvIgotI2RlZmluZSBTQ051TEVBU1QxNiAgImh1IgotI2RlZmluZSBTQ054TEVB
U1QxNiAgImh4IgotI2RlZmluZSBTQ05YTEVBU1QxNiAgImhYIgotI2RlZmluZSBTQ05vRkFTVDE2
ICAgImhvIgotI2RlZmluZSBTQ051RkFTVDE2ICAgImh1IgotI2RlZmluZSBTQ054RkFTVDE2ICAg
Imh4IgotI2RlZmluZSBTQ05YRkFTVDE2ICAgImhYIgotCi0jZGVmaW5lIFNDTm8zMiAgICAgICAi
bG8iCi0jZGVmaW5lIFNDTnUzMiAgICAgICAibHUiCi0jZGVmaW5lIFNDTngzMiAgICAgICAibHgi
Ci0jZGVmaW5lIFNDTlgzMiAgICAgICAibFgiCi0jZGVmaW5lIFNDTm9MRUFTVDMyICAibG8iCi0j
ZGVmaW5lIFNDTnVMRUFTVDMyICAibHUiCi0jZGVmaW5lIFNDTnhMRUFTVDMyICAibHgiCi0jZGVm
aW5lIFNDTlhMRUFTVDMyICAibFgiCi0jZGVmaW5lIFNDTm9GQVNUMzIgICAibG8iCi0jZGVmaW5l
IFNDTnVGQVNUMzIgICAibHUiCi0jZGVmaW5lIFNDTnhGQVNUMzIgICAibHgiCi0jZGVmaW5lIFND
TlhGQVNUMzIgICAibFgiCi0KLSNkZWZpbmUgU0NObzY0ICAgICAgICJJNjRvIgotI2RlZmluZSBT
Q051NjQgICAgICAgIkk2NHUiCi0jZGVmaW5lIFNDTng2NCAgICAgICAiSTY0eCIKLSNkZWZpbmUg
U0NOWDY0ICAgICAgICJJNjRYIgotI2RlZmluZSBTQ05vTEVBU1Q2NCAgIkk2NG8iCi0jZGVmaW5l
IFNDTnVMRUFTVDY0ICAiSTY0dSIKLSNkZWZpbmUgU0NOeExFQVNUNjQgICJJNjR4IgotI2RlZmlu
ZSBTQ05YTEVBU1Q2NCAgIkk2NFgiCi0jZGVmaW5lIFNDTm9GQVNUNjQgICAiSTY0byIKLSNkZWZp
bmUgU0NOdUZBU1Q2NCAgICJJNjR1IgotI2RlZmluZSBTQ054RkFTVDY0ICAgIkk2NHgiCi0jZGVm
aW5lIFNDTlhGQVNUNjQgICAiSTY0WCIKLQotI2RlZmluZSBTQ05vTUFYICAgICAiSTY0byIKLSNk
ZWZpbmUgU0NOdU1BWCAgICAgIkk2NHUiCi0jZGVmaW5lIFNDTnhNQVggICAgICJJNjR4IgotI2Rl
ZmluZSBTQ05YTUFYICAgICAiSTY0WCIKLQotI2lmZGVmIF9XSU42NCAvLyBbCi0jICBkZWZpbmUg
U0NOb1BUUiAgICAgIkk2NG8iCi0jICBkZWZpbmUgU0NOdVBUUiAgICAgIkk2NHUiCi0jICBkZWZp
bmUgU0NOeFBUUiAgICAgIkk2NHgiCi0jICBkZWZpbmUgU0NOWFBUUiAgICAgIkk2NFgiCi0jZWxz
ZSAgLy8gX1dJTjY0IF1bCi0jICBkZWZpbmUgU0NOb1BUUiAgICAgImxvIgotIyAgZGVmaW5lIFND
TnVQVFIgICAgICJsdSIKLSMgIGRlZmluZSBTQ054UFRSICAgICAibHgiCi0jICBkZWZpbmUgU0NO
WFBUUiAgICAgImxYIgotI2VuZGlmICAvLyBfV0lONjQgXQotCi0jZW5kaWYgLy8gX19TVERDX0ZP
Uk1BVF9NQUNST1MgXQotCi0vLyA3LjguMiBGdW5jdGlvbnMgZm9yIGdyZWF0ZXN0LXdpZHRoIGlu
dGVnZXIgdHlwZXMKLQotLy8gNy44LjIuMSBUaGUgaW1heGFicyBmdW5jdGlvbgotI2RlZmluZSBp
bWF4YWJzIF9hYnM2NAotCi0vLyA3LjguMi4yIFRoZSBpbWF4ZGl2IGZ1bmN0aW9uCi0KLS8vIFRo
aXMgaXMgbW9kaWZpZWQgdmVyc2lvbiBvZiBkaXYoKSBmdW5jdGlvbiBmcm9tIE1pY3Jvc29mdCdz
IGRpdi5jIGZvdW5kCi0vLyBpbiAlTVNWQy5ORVQlXGNydFxzcmNcZGl2LmMKLSNpZmRlZiBTVEFU
SUNfSU1BWERJViAvLyBbCi1zdGF0aWMKLSNlbHNlIC8vIFNUQVRJQ19JTUFYRElWIF1bCi1faW5s
aW5lCi0jZW5kaWYgLy8gU1RBVElDX0lNQVhESVYgXQotaW1heGRpdl90IF9fY2RlY2wgaW1heGRp
dihpbnRtYXhfdCBudW1lciwgaW50bWF4X3QgZGVub20pCi17Ci0gICBpbWF4ZGl2X3QgcmVzdWx0
OwotCi0gICByZXN1bHQucXVvdCA9IG51bWVyIC8gZGVub207Ci0gICByZXN1bHQucmVtID0gbnVt
ZXIgJSBkZW5vbTsKLQotICAgaWYgKG51bWVyIDwgMCAmJiByZXN1bHQucmVtID4gMCkgewotICAg
ICAgLy8gZGlkIGRpdmlzaW9uIHdyb25nOyBtdXN0IGZpeCB1cAotICAgICAgKytyZXN1bHQucXVv
dDsKLSAgICAgIHJlc3VsdC5yZW0gLT0gZGVub207Ci0gICB9Ci0KLSAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLS8vIDcuOC4yLjMgVGhlIHN0cnRvaW1heCBhbmQgc3RydG91bWF4IGZ1bmN0aW9ucwot
I2RlZmluZSBzdHJ0b2ltYXggX3N0cnRvaTY0Ci0jZGVmaW5lIHN0cnRvdW1heCBfc3RydG91aTY0
Ci0KLS8vIDcuOC4yLjQgVGhlIHdjc3RvaW1heCBhbmQgd2NzdG91bWF4IGZ1bmN0aW9ucwotI2Rl
ZmluZSB3Y3N0b2ltYXggX3djc3RvaTY0Ci0jZGVmaW5lIHdjc3RvdW1heCBfd2NzdG91aTY0Ci0K
LSNlbmRpZiAvLyBfTVNDX1ZFUiA+PSAxODAwCi0KLSNlbmRpZiAvLyBfTVNDX0lOVFRZUEVTX0hf
IF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9w
YXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vbXNpbnR0eXBlcy9zdGRpbnQuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5j
bHVkZS9yYXBpZGpzb24vbXNpbnR0eXBlcy9zdGRpbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYmJhZDk1YWYxNTk5ZmViMDk5Y2Y2YThhOGRlZjVjMTZmNzljMzViMS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29u
L21zaW50dHlwZXMvc3RkaW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyOTYgKzAsMCBAQAotLy8g
SVNPIEM5eCAgY29tcGxpYW50IHN0ZGludC5oIGZvciBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbwot
Ly8gQmFzZWQgb24gSVNPL0lFQyA5ODk5OlRDMiBDb21taXR0ZWUgZHJhZnQgKE1heSA2LCAyMDA1
KSBXRzE0L04xMTI0IAotLy8gCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA2LTIwMTMgQWxleGFuZGVy
IENoZW1lcmlzCi0vLyAKLS8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0vLyAK
LS8vICAgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQgbm90aWNlLAotLy8gICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotLy8gCi0vLyAgIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyAg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLS8vICAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLS8vIAotLy8gICAzLiBOZWl0aGVy
IHRoZSBuYW1lIG9mIHRoZSBwcm9kdWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkKLS8vICAgICAgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLS8vICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0vLyAKLS8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKLS8vIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GCi0vLyBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTwotLy8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotLy8gU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7Ci0vLyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
Ci0vLyBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUgotLy8gT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRgotLy8gQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0vLyAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
LQotI2lmbmRlZiBfTVNDX1ZFUiAvLyBbCi0jZXJyb3IgIlVzZSB0aGlzIGhlYWRlciBvbmx5IHdp
dGggTWljcm9zb2Z0IFZpc3VhbCBDKysgY29tcGlsZXJzISIKLSNlbmRpZiAvLyBfTVNDX1ZFUiBd
Ci0KLSNpZm5kZWYgX01TQ19TVERJTlRfSF8gLy8gWwotI2RlZmluZSBfTVNDX1NURElOVF9IXwot
Ci0jaWYgX01TQ19WRVIgPiAxMDAwCi0jcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLyBtaWxveWlw
OiBPcmlnaW5hbGx5IFZpc3VhbCBTdHVkaW8gMjAxMCB1c2VzIGl0cyBvd24gc3RkaW50LmguIEhv
d2V2ZXIgaXQgZ2VuZXJhdGVzIHdhcm5pbmcgd2l0aCBJTlQ2NF9DKCksIHNvIGNoYW5nZSB0byB1
c2UgdGhpcyBmaWxlIGZvciB2czIwMTAuCi0jaWYgX01TQ19WRVIgPj0gMTYwMCAvLyBbCi0jaW5j
bHVkZSA8c3RkaW50Lmg+Ci0KLSNpZiAhZGVmaW5lZChfX2NwbHVzcGx1cykgfHwgZGVmaW5lZChf
X1NURENfQ09OU1RBTlRfTUFDUk9TKSAvLyBbICAgU2VlIGZvb3Rub3RlIDIyNCBhdCBwYWdlIDI2
MAotCi0jdW5kZWYgSU5UOF9DCi0jdW5kZWYgSU5UMTZfQwotI3VuZGVmIElOVDMyX0MKLSN1bmRl
ZiBJTlQ2NF9DCi0jdW5kZWYgVUlOVDhfQwotI3VuZGVmIFVJTlQxNl9DCi0jdW5kZWYgVUlOVDMy
X0MKLSN1bmRlZiBVSU5UNjRfQwotCi0vLyA3LjE4LjQuMSBNYWNyb3MgZm9yIG1pbmltdW0td2lk
dGggaW50ZWdlciBjb25zdGFudHMKLQotI2RlZmluZSBJTlQ4X0ModmFsKSAgdmFsIyNpOAotI2Rl
ZmluZSBJTlQxNl9DKHZhbCkgdmFsIyNpMTYKLSNkZWZpbmUgSU5UMzJfQyh2YWwpIHZhbCMjaTMy
Ci0jZGVmaW5lIElOVDY0X0ModmFsKSB2YWwjI2k2NAotCi0jZGVmaW5lIFVJTlQ4X0ModmFsKSAg
dmFsIyN1aTgKLSNkZWZpbmUgVUlOVDE2X0ModmFsKSB2YWwjI3VpMTYKLSNkZWZpbmUgVUlOVDMy
X0ModmFsKSB2YWwjI3VpMzIKLSNkZWZpbmUgVUlOVDY0X0ModmFsKSB2YWwjI3VpNjQKLQotLy8g
Ny4xOC40LjIgTWFjcm9zIGZvciBncmVhdGVzdC13aWR0aCBpbnRlZ2VyIGNvbnN0YW50cwotLy8g
VGhlc2UgI2lmbmRlZidzIGFyZSBuZWVkZWQgdG8gcHJldmVudCBjb2xsaXNpb25zIHdpdGggPGJv
b3N0L2NzdGRpbnQuaHBwPi4KLS8vIENoZWNrIG91dCBJc3N1ZSA5IGZvciB0aGUgZGV0YWlscy4K
LSNpZm5kZWYgSU5UTUFYX0MgLy8gICBbCi0jICBkZWZpbmUgSU5UTUFYX0MgICBJTlQ2NF9DCi0j
ZW5kaWYgLy8gSU5UTUFYX0MgICAgXQotI2lmbmRlZiBVSU5UTUFYX0MgLy8gIFsKLSMgIGRlZmlu
ZSBVSU5UTUFYX0MgIFVJTlQ2NF9DCi0jZW5kaWYgLy8gVUlOVE1BWF9DICAgXQotCi0jZW5kaWYg
Ly8gX19TVERDX0NPTlNUQU5UX01BQ1JPUyBdCi0KLSNlbHNlIC8vIF0gX01TQ19WRVIgPj0gMTcw
MCBbCi0KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLQotLy8gRm9yIFZpc3VhbCBTdHVkaW8gNiBpbiBD
KysgbW9kZSBhbmQgZm9yIG1hbnkgVmlzdWFsIFN0dWRpbyB2ZXJzaW9ucyB3aGVuCi0vLyBjb21w
aWxpbmcgZm9yIEFSTSB3ZSBzaG91bGQgd3JhcCA8d2NoYXIuaD4gaW5jbHVkZSB3aXRoICdleHRl
cm4gIkMrKyIge30nCi0vLyBvciBjb21waWxlciBnaXZlIG1hbnkgZXJyb3JzIGxpa2UgdGhpczoK
LS8vICAgZXJyb3IgQzI3MzM6IHNlY29uZCBDIGxpbmthZ2Ugb2Ygb3ZlcmxvYWRlZCBmdW5jdGlv
biAnd21lbWNocicgbm90IGFsbG93ZWQKLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7
Ci0jZW5kaWYKLSMgIGluY2x1ZGUgPHdjaGFyLmg+Ci0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNl
bmRpZgotCi0vLyBEZWZpbmUgX1c2NCBtYWNyb3MgdG8gbWFyayB0eXBlcyBjaGFuZ2luZyB0aGVp
ciBzaXplLCBsaWtlIGludHB0cl90LgotI2lmbmRlZiBfVzY0Ci0jICBpZiAhZGVmaW5lZChfX21p
ZGwpICYmIChkZWZpbmVkKF9YODZfKSB8fCBkZWZpbmVkKF9NX0lYODYpKSAmJiBfTVNDX1ZFUiA+
PSAxMzAwCi0jICAgICBkZWZpbmUgX1c2NCBfX3c2NAotIyAgZWxzZQotIyAgICAgZGVmaW5lIF9X
NjQKLSMgIGVuZGlmCi0jZW5kaWYKLQotCi0vLyA3LjE4LjEgSW50ZWdlciB0eXBlcwotCi0vLyA3
LjE4LjEuMSBFeGFjdC13aWR0aCBpbnRlZ2VyIHR5cGVzCi0KLS8vIFZpc3VhbCBTdHVkaW8gNiBh
bmQgRW1iZWRkZWQgVmlzdWFsIEMrKyA0IGRvZXNuJ3QKLS8vIHJlYWxpemUgdGhhdCwgZS5nLiBj
aGFyIGhhcyB0aGUgc2FtZSBzaXplIGFzIF9faW50OAotLy8gc28gd2UgZ2l2ZSB1cCBvbiBfX2lu
dFggZm9yIHRoZW0uCi0jaWYgKF9NU0NfVkVSIDwgMTMwMCkKLSAgIHR5cGVkZWYgc2lnbmVkIGNo
YXIgICAgICAgaW50OF90OwotICAgdHlwZWRlZiBzaWduZWQgc2hvcnQgICAgICBpbnQxNl90Owot
ICAgdHlwZWRlZiBzaWduZWQgaW50ICAgICAgICBpbnQzMl90OwotICAgdHlwZWRlZiB1bnNpZ25l
ZCBjaGFyICAgICB1aW50OF90OwotICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgICB1aW50MTZf
dDsKLSAgIHR5cGVkZWYgdW5zaWduZWQgaW50ICAgICAgdWludDMyX3Q7Ci0jZWxzZQotICAgdHlw
ZWRlZiBzaWduZWQgX19pbnQ4ICAgICBpbnQ4X3Q7Ci0gICB0eXBlZGVmIHNpZ25lZCBfX2ludDE2
ICAgIGludDE2X3Q7Ci0gICB0eXBlZGVmIHNpZ25lZCBfX2ludDMyICAgIGludDMyX3Q7Ci0gICB0
eXBlZGVmIHVuc2lnbmVkIF9faW50OCAgIHVpbnQ4X3Q7Ci0gICB0eXBlZGVmIHVuc2lnbmVkIF9f
aW50MTYgIHVpbnQxNl90OwotICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDMyICB1aW50MzJfdDsK
LSNlbmRpZgotdHlwZWRlZiBzaWduZWQgX19pbnQ2NCAgICAgICBpbnQ2NF90OwotdHlwZWRlZiB1
bnNpZ25lZCBfX2ludDY0ICAgICB1aW50NjRfdDsKLQotCi0vLyA3LjE4LjEuMiBNaW5pbXVtLXdp
ZHRoIGludGVnZXIgdHlwZXMKLXR5cGVkZWYgaW50OF90ICAgIGludF9sZWFzdDhfdDsKLXR5cGVk
ZWYgaW50MTZfdCAgIGludF9sZWFzdDE2X3Q7Ci10eXBlZGVmIGludDMyX3QgICBpbnRfbGVhc3Qz
Ml90OwotdHlwZWRlZiBpbnQ2NF90ICAgaW50X2xlYXN0NjRfdDsKLXR5cGVkZWYgdWludDhfdCAg
IHVpbnRfbGVhc3Q4X3Q7Ci10eXBlZGVmIHVpbnQxNl90ICB1aW50X2xlYXN0MTZfdDsKLXR5cGVk
ZWYgdWludDMyX3QgIHVpbnRfbGVhc3QzMl90OwotdHlwZWRlZiB1aW50NjRfdCAgdWludF9sZWFz
dDY0X3Q7Ci0KLS8vIDcuMTguMS4zIEZhc3Rlc3QgbWluaW11bS13aWR0aCBpbnRlZ2VyIHR5cGVz
Ci10eXBlZGVmIGludDhfdCAgICBpbnRfZmFzdDhfdDsKLXR5cGVkZWYgaW50MTZfdCAgIGludF9m
YXN0MTZfdDsKLXR5cGVkZWYgaW50MzJfdCAgIGludF9mYXN0MzJfdDsKLXR5cGVkZWYgaW50NjRf
dCAgIGludF9mYXN0NjRfdDsKLXR5cGVkZWYgdWludDhfdCAgIHVpbnRfZmFzdDhfdDsKLXR5cGVk
ZWYgdWludDE2X3QgIHVpbnRfZmFzdDE2X3Q7Ci10eXBlZGVmIHVpbnQzMl90ICB1aW50X2Zhc3Qz
Ml90OwotdHlwZWRlZiB1aW50NjRfdCAgdWludF9mYXN0NjRfdDsKLQotLy8gNy4xOC4xLjQgSW50
ZWdlciB0eXBlcyBjYXBhYmxlIG9mIGhvbGRpbmcgb2JqZWN0IHBvaW50ZXJzCi0jaWZkZWYgX1dJ
TjY0IC8vIFsKLSAgIHR5cGVkZWYgc2lnbmVkIF9faW50NjQgICAgaW50cHRyX3Q7Ci0gICB0eXBl
ZGVmIHVuc2lnbmVkIF9faW50NjQgIHVpbnRwdHJfdDsKLSNlbHNlIC8vIF9XSU42NCBdWwotICAg
dHlwZWRlZiBfVzY0IHNpZ25lZCBpbnQgICBpbnRwdHJfdDsKLSAgIHR5cGVkZWYgX1c2NCB1bnNp
Z25lZCBpbnQgdWludHB0cl90OwotI2VuZGlmIC8vIF9XSU42NCBdCi0KLS8vIDcuMTguMS41IEdy
ZWF0ZXN0LXdpZHRoIGludGVnZXIgdHlwZXMKLXR5cGVkZWYgaW50NjRfdCAgIGludG1heF90Owot
dHlwZWRlZiB1aW50NjRfdCAgdWludG1heF90OwotCi0KLS8vIDcuMTguMiBMaW1pdHMgb2Ygc3Bl
Y2lmaWVkLXdpZHRoIGludGVnZXIgdHlwZXMKLQotI2lmICFkZWZpbmVkKF9fY3BsdXNwbHVzKSB8
fCBkZWZpbmVkKF9fU1REQ19MSU1JVF9NQUNST1MpIC8vIFsgICBTZWUgZm9vdG5vdGUgMjIwIGF0
IHBhZ2UgMjU3IGFuZCBmb290bm90ZSAyMjEgYXQgcGFnZSAyNTkKLQotLy8gNy4xOC4yLjEgTGlt
aXRzIG9mIGV4YWN0LXdpZHRoIGludGVnZXIgdHlwZXMKLSNkZWZpbmUgSU5UOF9NSU4gICAgICgo
aW50OF90KV9JOF9NSU4pCi0jZGVmaW5lIElOVDhfTUFYICAgICBfSThfTUFYCi0jZGVmaW5lIElO
VDE2X01JTiAgICAoKGludDE2X3QpX0kxNl9NSU4pCi0jZGVmaW5lIElOVDE2X01BWCAgICBfSTE2
X01BWAotI2RlZmluZSBJTlQzMl9NSU4gICAgKChpbnQzMl90KV9JMzJfTUlOKQotI2RlZmluZSBJ
TlQzMl9NQVggICAgX0kzMl9NQVgKLSNkZWZpbmUgSU5UNjRfTUlOICAgICgoaW50NjRfdClfSTY0
X01JTikKLSNkZWZpbmUgSU5UNjRfTUFYICAgIF9JNjRfTUFYCi0jZGVmaW5lIFVJTlQ4X01BWCAg
ICBfVUk4X01BWAotI2RlZmluZSBVSU5UMTZfTUFYICAgX1VJMTZfTUFYCi0jZGVmaW5lIFVJTlQz
Ml9NQVggICBfVUkzMl9NQVgKLSNkZWZpbmUgVUlOVDY0X01BWCAgIF9VSTY0X01BWAotCi0vLyA3
LjE4LjIuMiBMaW1pdHMgb2YgbWluaW11bS13aWR0aCBpbnRlZ2VyIHR5cGVzCi0jZGVmaW5lIElO
VF9MRUFTVDhfTUlOICAgIElOVDhfTUlOCi0jZGVmaW5lIElOVF9MRUFTVDhfTUFYICAgIElOVDhf
TUFYCi0jZGVmaW5lIElOVF9MRUFTVDE2X01JTiAgIElOVDE2X01JTgotI2RlZmluZSBJTlRfTEVB
U1QxNl9NQVggICBJTlQxNl9NQVgKLSNkZWZpbmUgSU5UX0xFQVNUMzJfTUlOICAgSU5UMzJfTUlO
Ci0jZGVmaW5lIElOVF9MRUFTVDMyX01BWCAgIElOVDMyX01BWAotI2RlZmluZSBJTlRfTEVBU1Q2
NF9NSU4gICBJTlQ2NF9NSU4KLSNkZWZpbmUgSU5UX0xFQVNUNjRfTUFYICAgSU5UNjRfTUFYCi0j
ZGVmaW5lIFVJTlRfTEVBU1Q4X01BWCAgIFVJTlQ4X01BWAotI2RlZmluZSBVSU5UX0xFQVNUMTZf
TUFYICBVSU5UMTZfTUFYCi0jZGVmaW5lIFVJTlRfTEVBU1QzMl9NQVggIFVJTlQzMl9NQVgKLSNk
ZWZpbmUgVUlOVF9MRUFTVDY0X01BWCAgVUlOVDY0X01BWAotCi0vLyA3LjE4LjIuMyBMaW1pdHMg
b2YgZmFzdGVzdCBtaW5pbXVtLXdpZHRoIGludGVnZXIgdHlwZXMKLSNkZWZpbmUgSU5UX0ZBU1Q4
X01JTiAgICBJTlQ4X01JTgotI2RlZmluZSBJTlRfRkFTVDhfTUFYICAgIElOVDhfTUFYCi0jZGVm
aW5lIElOVF9GQVNUMTZfTUlOICAgSU5UMTZfTUlOCi0jZGVmaW5lIElOVF9GQVNUMTZfTUFYICAg
SU5UMTZfTUFYCi0jZGVmaW5lIElOVF9GQVNUMzJfTUlOICAgSU5UMzJfTUlOCi0jZGVmaW5lIElO
VF9GQVNUMzJfTUFYICAgSU5UMzJfTUFYCi0jZGVmaW5lIElOVF9GQVNUNjRfTUlOICAgSU5UNjRf
TUlOCi0jZGVmaW5lIElOVF9GQVNUNjRfTUFYICAgSU5UNjRfTUFYCi0jZGVmaW5lIFVJTlRfRkFT
VDhfTUFYICAgVUlOVDhfTUFYCi0jZGVmaW5lIFVJTlRfRkFTVDE2X01BWCAgVUlOVDE2X01BWAot
I2RlZmluZSBVSU5UX0ZBU1QzMl9NQVggIFVJTlQzMl9NQVgKLSNkZWZpbmUgVUlOVF9GQVNUNjRf
TUFYICBVSU5UNjRfTUFYCi0KLS8vIDcuMTguMi40IExpbWl0cyBvZiBpbnRlZ2VyIHR5cGVzIGNh
cGFibGUgb2YgaG9sZGluZyBvYmplY3QgcG9pbnRlcnMKLSNpZmRlZiBfV0lONjQgLy8gWwotIyAg
ZGVmaW5lIElOVFBUUl9NSU4gICBJTlQ2NF9NSU4KLSMgIGRlZmluZSBJTlRQVFJfTUFYICAgSU5U
NjRfTUFYCi0jICBkZWZpbmUgVUlOVFBUUl9NQVggIFVJTlQ2NF9NQVgKLSNlbHNlIC8vIF9XSU42
NCBdWwotIyAgZGVmaW5lIElOVFBUUl9NSU4gICBJTlQzMl9NSU4KLSMgIGRlZmluZSBJTlRQVFJf
TUFYICAgSU5UMzJfTUFYCi0jICBkZWZpbmUgVUlOVFBUUl9NQVggIFVJTlQzMl9NQVgKLSNlbmRp
ZiAvLyBfV0lONjQgXQotCi0vLyA3LjE4LjIuNSBMaW1pdHMgb2YgZ3JlYXRlc3Qtd2lkdGggaW50
ZWdlciB0eXBlcwotI2RlZmluZSBJTlRNQVhfTUlOICAgSU5UNjRfTUlOCi0jZGVmaW5lIElOVE1B
WF9NQVggICBJTlQ2NF9NQVgKLSNkZWZpbmUgVUlOVE1BWF9NQVggIFVJTlQ2NF9NQVgKLQotLy8g
Ny4xOC4zIExpbWl0cyBvZiBvdGhlciBpbnRlZ2VyIHR5cGVzCi0KLSNpZmRlZiBfV0lONjQgLy8g
WwotIyAgZGVmaW5lIFBUUkRJRkZfTUlOICBfSTY0X01JTgotIyAgZGVmaW5lIFBUUkRJRkZfTUFY
ICBfSTY0X01BWAotI2Vsc2UgIC8vIF9XSU42NCBdWwotIyAgZGVmaW5lIFBUUkRJRkZfTUlOICBf
STMyX01JTgotIyAgZGVmaW5lIFBUUkRJRkZfTUFYICBfSTMyX01BWAotI2VuZGlmICAvLyBfV0lO
NjQgXQotCi0jZGVmaW5lIFNJR19BVE9NSUNfTUlOICBJTlRfTUlOCi0jZGVmaW5lIFNJR19BVE9N
SUNfTUFYICBJTlRfTUFYCi0KLSNpZm5kZWYgU0laRV9NQVggLy8gWwotIyAgaWZkZWYgX1dJTjY0
IC8vIFsKLSMgICAgIGRlZmluZSBTSVpFX01BWCAgX1VJNjRfTUFYCi0jICBlbHNlIC8vIF9XSU42
NCBdWwotIyAgICAgZGVmaW5lIFNJWkVfTUFYICBfVUkzMl9NQVgKLSMgIGVuZGlmIC8vIF9XSU42
NCBdCi0jZW5kaWYgLy8gU0laRV9NQVggXQotCi0vLyBXQ0hBUl9NSU4gYW5kIFdDSEFSX01BWCBh
cmUgYWxzbyBkZWZpbmVkIGluIDx3Y2hhci5oPgotI2lmbmRlZiBXQ0hBUl9NSU4gLy8gWwotIyAg
ZGVmaW5lIFdDSEFSX01JTiAgMAotI2VuZGlmICAvLyBXQ0hBUl9NSU4gXQotI2lmbmRlZiBXQ0hB
Ul9NQVggLy8gWwotIyAgZGVmaW5lIFdDSEFSX01BWCAgX1VJMTZfTUFYCi0jZW5kaWYgIC8vIFdD
SEFSX01BWCBdCi0KLSNkZWZpbmUgV0lOVF9NSU4gIDAKLSNkZWZpbmUgV0lOVF9NQVggIF9VSTE2
X01BWAotCi0jZW5kaWYgLy8gX19TVERDX0xJTUlUX01BQ1JPUyBdCi0KLQotLy8gNy4xOC40IExp
bWl0cyBvZiBvdGhlciBpbnRlZ2VyIHR5cGVzCi0KLSNpZiAhZGVmaW5lZChfX2NwbHVzcGx1cykg
fHwgZGVmaW5lZChfX1NURENfQ09OU1RBTlRfTUFDUk9TKSAvLyBbICAgU2VlIGZvb3Rub3RlIDIy
NCBhdCBwYWdlIDI2MAotCi0vLyA3LjE4LjQuMSBNYWNyb3MgZm9yIG1pbmltdW0td2lkdGggaW50
ZWdlciBjb25zdGFudHMKLQotI2RlZmluZSBJTlQ4X0ModmFsKSAgdmFsIyNpOAotI2RlZmluZSBJ
TlQxNl9DKHZhbCkgdmFsIyNpMTYKLSNkZWZpbmUgSU5UMzJfQyh2YWwpIHZhbCMjaTMyCi0jZGVm
aW5lIElOVDY0X0ModmFsKSB2YWwjI2k2NAotCi0jZGVmaW5lIFVJTlQ4X0ModmFsKSAgdmFsIyN1
aTgKLSNkZWZpbmUgVUlOVDE2X0ModmFsKSB2YWwjI3VpMTYKLSNkZWZpbmUgVUlOVDMyX0ModmFs
KSB2YWwjI3VpMzIKLSNkZWZpbmUgVUlOVDY0X0ModmFsKSB2YWwjI3VpNjQKLQotLy8gNy4xOC40
LjIgTWFjcm9zIGZvciBncmVhdGVzdC13aWR0aCBpbnRlZ2VyIGNvbnN0YW50cwotLy8gVGhlc2Ug
I2lmbmRlZidzIGFyZSBuZWVkZWQgdG8gcHJldmVudCBjb2xsaXNpb25zIHdpdGggPGJvb3N0L2Nz
dGRpbnQuaHBwPi4KLS8vIENoZWNrIG91dCBJc3N1ZSA5IGZvciB0aGUgZGV0YWlscy4KLSNpZm5k
ZWYgSU5UTUFYX0MgLy8gICBbCi0jICBkZWZpbmUgSU5UTUFYX0MgICBJTlQ2NF9DCi0jZW5kaWYg
Ly8gSU5UTUFYX0MgICAgXQotI2lmbmRlZiBVSU5UTUFYX0MgLy8gIFsKLSMgIGRlZmluZSBVSU5U
TUFYX0MgIFVJTlQ2NF9DCi0jZW5kaWYgLy8gVUlOVE1BWF9DICAgXQotCi0jZW5kaWYgLy8gX19T
VERDX0NPTlNUQU5UX01BQ1JPUyBdCi0KLSNlbmRpZiAvLyBfTVNDX1ZFUiA+PSAxNjAwIF0KLQot
I2VuZGlmIC8vIF9NU0NfU1RESU5UX0hfIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24v
cHJldHR5d3JpdGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRf
cGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3ByZXR0eXdyaXRlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDdjNzBmMDJkODQxMTcwZTBkNThiN2I4MzI2ZWM1YWY0
NzllODE2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5j
bHVkZS9yYXBpZGpzb24vcHJldHR5d3JpdGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAs
MCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlwCi0vLwotLy8gUGVybWlzc2lvbiBp
cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n
IGEgY29weQotLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u
IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKLS8vIGluIHRoZSBTb2Z0d2FyZSB3aXRo
b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMK
LS8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi
bGljZW5zZSwgYW5kL29yIHNlbGwKLS8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw
ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotLy8gZnVybmlzaGVkIHRvIGRv
IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLS8vCi0vLyBUaGUgYWJv
dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBp
bmNsdWRlZCBpbgotLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUg
U29mdHdhcmUuCi0vLwotLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhP
VVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLS8vIElNUExJRUQsIElOQ0xVRElO
RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAot
Ly8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJF
IExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0vLyBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lO
RyBGUk9NLAotLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig
VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgotLy8gVEhFIFNPRlRXQVJFLgotCi0jaWZuZGVm
IFJBUElESlNPTl9QUkVUVFlXUklURVJfSF8KLSNkZWZpbmUgUkFQSURKU09OX1BSRVRUWVdSSVRF
Ul9IXwotCi0jaW5jbHVkZSAid3JpdGVyLmgiCi0KLSNpZmRlZiBfX0dOVUNfXwotUkFQSURKU09O
X0RJQUdfUFVTSAotUkFQSURKU09OX0RJQUdfT0ZGKGVmZmMrKykKLSNlbmRpZgotCi1SQVBJREpT
T05fTkFNRVNQQUNFX0JFR0lOCi0KLS8vISBXcml0ZXIgd2l0aCBpbmRlbnRhdGlvbiBhbmQgc3Bh
Y2luZy4KLS8qIQotICAgIFx0cGFyYW0gT3V0cHV0U3RyZWFtIFR5cGUgb2Ygb3VwdHV0IG9zLgot
ICAgIFx0cGFyYW0gU291cmNlRW5jb2RpbmcgRW5jb2Rpbmcgb2Ygc291cmNlIHN0cmluZy4KLSAg
ICBcdHBhcmFtIFRhcmdldEVuY29kaW5nIEVuY29kaW5nIG9mIG91dHB1dCBzdHJlYW0uCi0gICAg
XHRwYXJhbSBTdGFja0FsbG9jYXRvciBUeXBlIG9mIGFsbG9jYXRvciBmb3IgYWxsb2NhdGluZyBt
ZW1vcnkgb2Ygc3RhY2suCi0qLwotdGVtcGxhdGU8dHlwZW5hbWUgT3V0cHV0U3RyZWFtLCB0eXBl
bmFtZSBTb3VyY2VFbmNvZGluZyA9IFVURjg8PiwgdHlwZW5hbWUgVGFyZ2V0RW5jb2RpbmcgPSBV
VEY4PD4sIHR5cGVuYW1lIFN0YWNrQWxsb2NhdG9yID0gQ3J0QWxsb2NhdG9yPgotY2xhc3MgUHJl
dHR5V3JpdGVyIDogcHVibGljIFdyaXRlcjxPdXRwdXRTdHJlYW0sIFNvdXJjZUVuY29kaW5nLCBU
YXJnZXRFbmNvZGluZywgU3RhY2tBbGxvY2F0b3I+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFdy
aXRlcjxPdXRwdXRTdHJlYW0sIFNvdXJjZUVuY29kaW5nLCBUYXJnZXRFbmNvZGluZywgU3RhY2tB
bGxvY2F0b3I+IEJhc2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBCYXNlOjpDaCBDaDsKLQotICAg
IC8vISBDb25zdHJ1Y3RvcgotICAgIC8qISBccGFyYW0gb3MgT3V0cHV0IHN0cmVhbS4KLSAgICAg
ICAgXHBhcmFtIGFsbG9jYXRvciBVc2VyIHN1cHBsaWVkIGFsbG9jYXRvci4gSWYgaXQgaXMgbnVs
bCwgaXQgd2lsbCBjcmVhdGUgYSBwcml2YXRlIG9uZS4KLSAgICAgICAgXHBhcmFtIGxldmVsRGVw
dGggSW5pdGlhbCBjYXBhY2l0eSBvZiBzdGFjay4KLSAgICAqLwotICAgIFByZXR0eVdyaXRlcihP
dXRwdXRTdHJlYW0mIG9zLCBTdGFja0FsbG9jYXRvciogYWxsb2NhdG9yID0gMCwgc2l6ZV90IGxl
dmVsRGVwdGggPSBCYXNlOjprRGVmYXVsdExldmVsRGVwdGgpIDogCi0gICAgICAgIEJhc2Uob3Ms
IGFsbG9jYXRvciwgbGV2ZWxEZXB0aCksIGluZGVudENoYXJfKCcgJyksIGluZGVudENoYXJDb3Vu
dF8oNCkge30KLQotICAgIC8vISBTZXQgY3VzdG9tIGluZGVudGF0aW9uLgotICAgIC8qISBccGFy
YW0gaW5kZW50Q2hhciAgICAgICBDaGFyYWN0ZXIgZm9yIGluZGVudGF0aW9uLiBNdXN0IGJlIHdo
aXRlc3BhY2UgY2hhcmFjdGVyICgnICcsICdcXHQnLCAnXFxuJywgJ1xccicpLgotICAgICAgICBc
cGFyYW0gaW5kZW50Q2hhckNvdW50ICBOdW1iZXIgb2YgaW5kZW50IGNoYXJhY3RlcnMgZm9yIGVh
Y2ggaW5kZW50YXRpb24gbGV2ZWwuCi0gICAgICAgIFxub3RlIFRoZSBkZWZhdWx0IGluZGVudGF0
aW9uIGlzIDQgc3BhY2VzLgotICAgICovCi0gICAgUHJldHR5V3JpdGVyJiBTZXRJbmRlbnQoQ2gg
aW5kZW50Q2hhciwgdW5zaWduZWQgaW5kZW50Q2hhckNvdW50KSB7Ci0gICAgICAgIFJBUElESlNP
Tl9BU1NFUlQoaW5kZW50Q2hhciA9PSAnICcgfHwgaW5kZW50Q2hhciA9PSAnXHQnIHx8IGluZGVu
dENoYXIgPT0gJ1xuJyB8fCBpbmRlbnRDaGFyID09ICdccicpOwotICAgICAgICBpbmRlbnRDaGFy
XyA9IGluZGVudENoYXI7Ci0gICAgICAgIGluZGVudENoYXJDb3VudF8gPSBpbmRlbnRDaGFyQ291
bnQ7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICAvKiEgQG5hbWUgSW1wbGVt
ZW50YXRpb24gb2YgSGFuZGxlcgotICAgICAgICBcc2VlIEhhbmRsZXIKLSAgICAqLwotICAgIC8v
QHsKLQotICAgIGJvb2wgTnVsbCgpICAgICAgICAgICAgICAgICB7IFByZXR0eVByZWZpeChrTnVs
bFR5cGUpOyAgIHJldHVybiBCYXNlOjpXcml0ZU51bGwoKTsgfQotICAgIGJvb2wgQm9vbChib29s
IGIpICAgICAgICAgICB7IFByZXR0eVByZWZpeChiID8ga1RydWVUeXBlIDoga0ZhbHNlVHlwZSk7
IHJldHVybiBCYXNlOjpXcml0ZUJvb2woYik7IH0KLSAgICBib29sIEludChpbnQgaSkgICAgICAg
ICAgICAgeyBQcmV0dHlQcmVmaXgoa051bWJlclR5cGUpOyByZXR1cm4gQmFzZTo6V3JpdGVJbnQo
aSk7IH0KLSAgICBib29sIFVpbnQodW5zaWduZWQgdSkgICAgICAgeyBQcmV0dHlQcmVmaXgoa051
bWJlclR5cGUpOyByZXR1cm4gQmFzZTo6V3JpdGVVaW50KHUpOyB9Ci0gICAgYm9vbCBJbnQ2NChp
bnQ2NF90IGk2NCkgICAgIHsgUHJldHR5UHJlZml4KGtOdW1iZXJUeXBlKTsgcmV0dXJuIEJhc2U6
OldyaXRlSW50NjQoaTY0KTsgfQotICAgIGJvb2wgVWludDY0KHVpbnQ2NF90IHU2NCkgICB7IFBy
ZXR0eVByZWZpeChrTnVtYmVyVHlwZSk7IHJldHVybiBCYXNlOjpXcml0ZVVpbnQ2NCh1NjQpOyAg
fQotICAgIGJvb2wgRG91YmxlKGRvdWJsZSBkKSAgICAgICB7IFByZXR0eVByZWZpeChrTnVtYmVy
VHlwZSk7IHJldHVybiBCYXNlOjpXcml0ZURvdWJsZShkKTsgfQotCi0gICAgYm9vbCBTdHJpbmco
Y29uc3QgQ2gqIHN0ciwgU2l6ZVR5cGUgbGVuZ3RoLCBib29sIGNvcHkgPSBmYWxzZSkgewotICAg
ICAgICAodm9pZCljb3B5OwotICAgICAgICBQcmV0dHlQcmVmaXgoa1N0cmluZ1R5cGUpOwotICAg
ICAgICByZXR1cm4gQmFzZTo6V3JpdGVTdHJpbmcoc3RyLCBsZW5ndGgpOwotICAgIH0KLQotICAg
IGJvb2wgU3RhcnRPYmplY3QoKSB7Ci0gICAgICAgIFByZXR0eVByZWZpeChrT2JqZWN0VHlwZSk7
Ci0gICAgICAgIG5ldyAoQmFzZTo6bGV2ZWxfc3RhY2tfLnRlbXBsYXRlIFB1c2g8dHlwZW5hbWUg
QmFzZTo6TGV2ZWw+KCkpIHR5cGVuYW1lIEJhc2U6OkxldmVsKGZhbHNlKTsKLSAgICAgICAgcmV0
dXJuIEJhc2U6OldyaXRlU3RhcnRPYmplY3QoKTsKLSAgICB9Ci0KLSAgICBib29sIEtleShjb25z
dCBDaCogc3RyLCBTaXplVHlwZSBsZW5ndGgsIGJvb2wgY29weSA9IGZhbHNlKSB7IHJldHVybiBT
dHJpbmcoc3RyLCBsZW5ndGgsIGNvcHkpOyB9Ci0gICAgCi0gICAgYm9vbCBFbmRPYmplY3QoU2l6
ZVR5cGUgbWVtYmVyQ291bnQgPSAwKSB7Ci0gICAgICAgICh2b2lkKW1lbWJlckNvdW50OwotICAg
ICAgICBSQVBJREpTT05fQVNTRVJUKEJhc2U6OmxldmVsX3N0YWNrXy5HZXRTaXplKCkgPj0gc2l6
ZW9mKHR5cGVuYW1lIEJhc2U6OkxldmVsKSk7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoIUJh
c2U6OmxldmVsX3N0YWNrXy50ZW1wbGF0ZSBUb3A8dHlwZW5hbWUgQmFzZTo6TGV2ZWw+KCktPmlu
QXJyYXkpOwotICAgICAgICBib29sIGVtcHR5ID0gQmFzZTo6bGV2ZWxfc3RhY2tfLnRlbXBsYXRl
IFBvcDx0eXBlbmFtZSBCYXNlOjpMZXZlbD4oMSktPnZhbHVlQ291bnQgPT0gMDsKLQotICAgICAg
ICBpZiAoIWVtcHR5KSB7Ci0gICAgICAgICAgICBCYXNlOjpvc18tPlB1dCgnXG4nKTsKLSAgICAg
ICAgICAgIFdyaXRlSW5kZW50KCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFCYXNlOjpXcml0
ZUVuZE9iamVjdCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoQmFz
ZTo6bGV2ZWxfc3RhY2tfLkVtcHR5KCkpIC8vIGVuZCBvZiBqc29uIHRleHQKLSAgICAgICAgICAg
IEJhc2U6Om9zXy0+Rmx1c2goKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAg
Ym9vbCBTdGFydEFycmF5KCkgewotICAgICAgICBQcmV0dHlQcmVmaXgoa0FycmF5VHlwZSk7Ci0g
ICAgICAgIG5ldyAoQmFzZTo6bGV2ZWxfc3RhY2tfLnRlbXBsYXRlIFB1c2g8dHlwZW5hbWUgQmFz
ZTo6TGV2ZWw+KCkpIHR5cGVuYW1lIEJhc2U6OkxldmVsKHRydWUpOwotICAgICAgICByZXR1cm4g
QmFzZTo6V3JpdGVTdGFydEFycmF5KCk7Ci0gICAgfQotCi0gICAgYm9vbCBFbmRBcnJheShTaXpl
VHlwZSBtZW1iZXJDb3VudCA9IDApIHsKLSAgICAgICAgKHZvaWQpbWVtYmVyQ291bnQ7Ci0gICAg
ICAgIFJBUElESlNPTl9BU1NFUlQoQmFzZTo6bGV2ZWxfc3RhY2tfLkdldFNpemUoKSA+PSBzaXpl
b2YodHlwZW5hbWUgQmFzZTo6TGV2ZWwpKTsKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVChCYXNl
OjpsZXZlbF9zdGFja18udGVtcGxhdGUgVG9wPHR5cGVuYW1lIEJhc2U6OkxldmVsPigpLT5pbkFy
cmF5KTsKLSAgICAgICAgYm9vbCBlbXB0eSA9IEJhc2U6OmxldmVsX3N0YWNrXy50ZW1wbGF0ZSBQ
b3A8dHlwZW5hbWUgQmFzZTo6TGV2ZWw+KDEpLT52YWx1ZUNvdW50ID09IDA7Ci0KLSAgICAgICAg
aWYgKCFlbXB0eSkgewotICAgICAgICAgICAgQmFzZTo6b3NfLT5QdXQoJ1xuJyk7Ci0gICAgICAg
ICAgICBXcml0ZUluZGVudCgpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghQmFzZTo6V3JpdGVF
bmRBcnJheSgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoQmFzZTo6
bGV2ZWxfc3RhY2tfLkVtcHR5KCkpIC8vIGVuZCBvZiBqc29uIHRleHQKLSAgICAgICAgICAgIEJh
c2U6Om9zXy0+Rmx1c2goKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLy9A
fQotCi0gICAgLyohIEBuYW1lIENvbnZlbmllbmNlIGV4dGVuc2lvbnMgKi8KLSAgICAvL0B7Ci0K
LSAgICAvLyEgU2ltcGxlciBidXQgc2xvd2VyIG92ZXJsb2FkLgotICAgIGJvb2wgU3RyaW5nKGNv
bnN0IENoKiBzdHIpIHsgcmV0dXJuIFN0cmluZyhzdHIsIGludGVybmFsOjpTdHJMZW4oc3RyKSk7
IH0KLSAgICBib29sIEtleShjb25zdCBDaCogc3RyKSB7IHJldHVybiBLZXkoc3RyLCBpbnRlcm5h
bDo6U3RyTGVuKHN0cikpOyB9Ci0KLSAgICAvL0B9Ci1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBQcmV0
dHlQcmVmaXgoVHlwZSB0eXBlKSB7Ci0gICAgICAgICh2b2lkKXR5cGU7Ci0gICAgICAgIGlmIChC
YXNlOjpsZXZlbF9zdGFja18uR2V0U2l6ZSgpICE9IDApIHsgLy8gdGhpcyB2YWx1ZSBpcyBub3Qg
YXQgcm9vdAotICAgICAgICAgICAgdHlwZW5hbWUgQmFzZTo6TGV2ZWwqIGxldmVsID0gQmFzZTo6
bGV2ZWxfc3RhY2tfLnRlbXBsYXRlIFRvcDx0eXBlbmFtZSBCYXNlOjpMZXZlbD4oKTsKLQotICAg
ICAgICAgICAgaWYgKGxldmVsLT5pbkFycmF5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxldmVs
LT52YWx1ZUNvdW50ID4gMCkgewotICAgICAgICAgICAgICAgICAgICBCYXNlOjpvc18tPlB1dCgn
LCcpOyAvLyBhZGQgY29tbWEgaWYgaXQgaXMgbm90IHRoZSBmaXJzdCBlbGVtZW50IGluIGFycmF5
Ci0gICAgICAgICAgICAgICAgICAgIEJhc2U6Om9zXy0+UHV0KCdcbicpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIEJhc2U6Om9z
Xy0+UHV0KCdcbicpOwotICAgICAgICAgICAgICAgIFdyaXRlSW5kZW50KCk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBlbHNlIHsgIC8vIGluIG9iamVjdAotICAgICAgICAgICAgICAgIGlm
IChsZXZlbC0+dmFsdWVDb3VudCA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGxldmVs
LT52YWx1ZUNvdW50ICUgMiA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBCYXNlOjpv
c18tPlB1dCgnLCcpOwotICAgICAgICAgICAgICAgICAgICAgICAgQmFzZTo6b3NfLT5QdXQoJ1xu
Jyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBCYXNlOjpvc18tPlB1dCgnOicpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgQmFzZTo6b3NfLT5QdXQoJyAnKTsKLSAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIEJhc2U6Om9zXy0+UHV0KCdcbicpOwotCi0gICAgICAgICAgICAgICAgaWYgKGxldmVsLT52
YWx1ZUNvdW50ICUgMiA9PSAwKQotICAgICAgICAgICAgICAgICAgICBXcml0ZUluZGVudCgpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCFsZXZlbC0+aW5BcnJheSAmJiBsZXZlbC0+
dmFsdWVDb3VudCAlIDIgPT0gMCkKLSAgICAgICAgICAgICAgICBSQVBJREpTT05fQVNTRVJUKHR5
cGUgPT0ga1N0cmluZ1R5cGUpOyAgLy8gaWYgaXQncyBpbiBvYmplY3QsIHRoZW4gZXZlbiBudW1i
ZXIgc2hvdWxkIGJlIGEgbmFtZQotICAgICAgICAgICAgbGV2ZWwtPnZhbHVlQ291bnQrKzsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoIUJh
c2U6Omhhc1Jvb3RfKTsgIC8vIFNob3VsZCBvbmx5IGhhcyBvbmUgYW5kIG9ubHkgb25lIHJvb3Qu
Ci0gICAgICAgICAgICBCYXNlOjpoYXNSb290XyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICB2b2lkIFdyaXRlSW5kZW50KCkgIHsKLSAgICAgICAgc2l6ZV90IGNvdW50ID0gKEJhc2U6
OmxldmVsX3N0YWNrXy5HZXRTaXplKCkgLyBzaXplb2YodHlwZW5hbWUgQmFzZTo6TGV2ZWwpKSAq
IGluZGVudENoYXJDb3VudF87Ci0gICAgICAgIFB1dE4oKkJhc2U6Om9zXywgaW5kZW50Q2hhcl8s
IGNvdW50KTsKLSAgICB9Ci0KLSAgICBDaCBpbmRlbnRDaGFyXzsKLSAgICB1bnNpZ25lZCBpbmRl
bnRDaGFyQ291bnRfOwotCi1wcml2YXRlOgotICAgIC8vIFByb2hpYml0IGNvcHkgY29uc3RydWN0
b3IgJiBhc3NpZ25tZW50IG9wZXJhdG9yLgotICAgIFByZXR0eVdyaXRlcihjb25zdCBQcmV0dHlX
cml0ZXImKTsKLSAgICBQcmV0dHlXcml0ZXImIG9wZXJhdG9yPShjb25zdCBQcmV0dHlXcml0ZXIm
KTsKLX07Ci0KLVJBUElESlNPTl9OQU1FU1BBQ0VfRU5ECi0KLSNpZmRlZiBfX0dOVUNfXwotUkFQ
SURKU09OX0RJQUdfUE9QCi0jZW5kaWYKLQotI2VuZGlmIC8vIFJBUElESlNPTl9SQVBJREpTT05f
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9w
YXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vcmFwaWRqc29uLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFw
aWRqc29uL3JhcGlkanNvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWJmZGJh
MjhlMGMzMmMxZThkYWUzNDVhMGExMDc0MTkwOGYzMjkwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vcmFwaWRqc29uLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw2MjggKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8g
WWlwCi0vLwotLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us
IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQotLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQg
YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwK
LS8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91
dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKLS8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg
cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKLS8vIGNvcGllcyBv
ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy
ZSBpcwotLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9uczoKLS8vCi0vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt
aXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotLy8gYWxsIGNvcGllcyBvciBzdWJz
dGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0vLwotLy8gVEhFIFNPRlRXQVJFIElT
IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg
T1IKLS8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0vLyBBVVRIT1JT
IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S
IE9USEVSCi0vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU
T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAotLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJ
T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgotLy8g
VEhFIFNPRlRXQVJFLgotCi0jaWZuZGVmIFJBUElESlNPTl9SQVBJREpTT05fSF8KLSNkZWZpbmUg
UkFQSURKU09OX1JBUElESlNPTl9IXwotCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTEgTWlsbyBZaXAg
KG1pbG95aXBAZ21haWwuY29tKQotLy8gVmVyc2lvbiAwLjEKLQotLyohXGZpbGUgcmFwaWRqc29u
LmgKLSAgICBcYnJpZWYgY29tbW9uIGRlZmluaXRpb25zIGFuZCBjb25maWd1cmF0aW9uCi0KLSAg
ICBcc2VlIFJBUElESlNPTl9DT05GSUcKLSAqLwotCi0vKiEgXGRlZmdyb3VwIFJBUElESlNPTl9D
T05GSUcgUmFwaWRKU09OIGNvbmZpZ3VyYXRpb24KLSAgICBcYnJpZWYgQ29uZmlndXJhdGlvbiBt
YWNyb3MgZm9yIGxpYnJhcnkgZmVhdHVyZXMKLQotICAgIFNvbWUgUmFwaWRKU09OIGZlYXR1cmVz
IGFyZSBjb25maWd1cmFibGUgdG8gYWRhcHQgdGhlIGxpYnJhcnkgdG8gYSB3aWRlCi0gICAgdmFy
aWV0eSBvZiBwbGF0Zm9ybXMsIGVudmlyb25tZW50cyBhbmQgdXNhZ2Ugc2NlbmFyaW9zLiAgTW9z
dCBvZiB0aGUKLSAgICBmZWF0dXJlcyBjYW4gYmUgY29uZmlndXJlZCBpbiB0ZXJtcyBvZiBvdmVy
cmlkZW4gb3IgcHJlZGVmaW5lZAotICAgIHByZXByb2Nlc3NvciBtYWNyb3MgYXQgY29tcGlsZS10
aW1lLgotCi0gICAgU29tZSBhZGRpdGlvbmFsIGN1c3RvbWl6YXRpb24gaXMgYXZhaWxhYmxlIGlu
IHRoZSBccmVmIFJBUElESlNPTl9FUlJPUlMgQVBJcy4KLQotICAgIFxub3RlIFRoZXNlIG1hY3Jv
cyBzaG91bGQgYmUgZ2l2ZW4gb24gdGhlIGNvbXBpbGVyIGNvbW1hbmQtbGluZQotICAgICAgICAg
ICh3aGVyZSBhcHBsaWNhYmxlKSAgdG8gYXZvaWQgaW5jb25zaXN0ZW50IHZhbHVlcyB3aGVuIGNv
bXBpbGluZwotICAgICAgICAgIGRpZmZlcmVudCB0cmFuc2xhdGlvbiB1bml0cyBvZiBhIHNpbmds
ZSBhcHBsaWNhdGlvbi4KLSAqLwotCi0jaW5jbHVkZSA8Y3N0ZGxpYj4gIC8vIG1hbGxvYygpLCBy
ZWFsbG9jKCksIGZyZWUoKSwgc2l6ZV90Ci0jaW5jbHVkZSA8Y3N0cmluZz4gIC8vIG1lbXNldCgp
LCBtZW1jcHkoKSwgbWVtbW92ZSgpLCBtZW1jbXAoKQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ci0vLyBSQVBJREpTT05fTkFNRVNQQUNFXyhCRUdJTnxFTkQpCi0vKiEgXGRlZiBSQVBJREpTT05f
TkFNRVNQQUNFCi0gICAgXGluZ3JvdXAgUkFQSURKU09OX0NPTkZJRwotICAgIFxicmllZiAgIHBy
b3ZpZGUgY3VzdG9tIHJhcGlkanNvbiBuYW1lc3BhY2UKLQotICAgIEluIG9yZGVyIHRvIGF2b2lk
IHN5bWJvbCBjbGFzaGVzIGFuZC9vciAiT25lIERlZmluaXRpb24gUnVsZSIgZXJyb3JzCi0gICAg
YmV0d2VlbiBtdWx0aXBsZSBpbmNsdXNpb25zIG9mIChkaWZmZXJlbnQgdmVyc2lvbnMgb2YpIFJh
cGlkSlNPTiBpbgotICAgIGEgc2luZ2xlIGJpbmFyeSwgdXNlcnMgY2FuIGN1c3RvbWl6ZSB0aGUg
bmFtZSBvZiB0aGUgbWFpbiBSYXBpZEpTT04KLSAgICBuYW1lc3BhY2UuCi0KLSAgICBJbiBjYXNl
IG9mIGEgc2luZ2xlIG5lc3RpbmcgbGV2ZWwsIGRlZmluaW5nIFxjIFJBUElESlNPTl9OQU1FU1BB
Q0UKLSAgICB0byBhIGN1c3RvbSBuYW1lIChlLmcuIFxjIE15UmFwaWRKU09OKSBpcyBzdWZmaWNp
ZW50LiAgSWYgbXVsdGlwbGUKLSAgICBsZXZlbHMgYXJlIG5lZWRlZCwgYm90aCBccmVmIFJBUElE
SlNPTl9OQU1FU1BBQ0VfQkVHSU4gYW5kIFxyZWYKLSAgICBSQVBJREpTT05fTkFNRVNQQUNFX0VO
RCBuZWVkIHRvIGJlIGRlZmluZWQgYXMgd2VsbDoKLQotICAgIFxjb2RlCi0gICAgLy8gaW4gc29t
ZSAuY3BwIGZpbGUKLSAgICAjZGVmaW5lIFJBUElESlNPTl9OQU1FU1BBQ0UgbXk6OnJhcGlkanNv
bgotICAgICNkZWZpbmUgUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTiBuYW1lc3BhY2UgbXkgeyBu
YW1lc3BhY2UgcmFwaWRqc29uIHsKLSAgICAjZGVmaW5lIFJBUElESlNPTl9OQU1FU1BBQ0VfRU5E
ICAgfSB9Ci0gICAgI2luY2x1ZGUgInJhcGlkanNvbi8uLi4iCi0gICAgXGVuZGNvZGUKLQotICAg
IFxzZWUgcmFwaWRqc29uCi0gKi8KLS8qISBcZGVmIFJBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4K
LSAgICBcaW5ncm91cCBSQVBJREpTT05fQ09ORklHCi0gICAgXGJyaWVmICAgcHJvdmlkZSBjdXN0
b20gcmFwaWRqc29uIG5hbWVzcGFjZSAob3BlbmluZyBleHByZXNzaW9uKQotICAgIFxzZWUgUkFQ
SURKU09OX05BTUVTUEFDRQotKi8KLS8qISBcZGVmIFJBUElESlNPTl9OQU1FU1BBQ0VfRU5ECi0g
ICAgXGluZ3JvdXAgUkFQSURKU09OX0NPTkZJRwotICAgIFxicmllZiAgIHByb3ZpZGUgY3VzdG9t
IHJhcGlkanNvbiBuYW1lc3BhY2UgKGNsb3NpbmcgZXhwcmVzc2lvbikKLSAgICBcc2VlIFJBUElE
SlNPTl9OQU1FU1BBQ0UKLSovCi0jaWZuZGVmIFJBUElESlNPTl9OQU1FU1BBQ0UKLSNkZWZpbmUg
UkFQSURKU09OX05BTUVTUEFDRSByYXBpZGpzb24KLSNlbmRpZgotI2lmbmRlZiBSQVBJREpTT05f
TkFNRVNQQUNFX0JFR0lOCi0jZGVmaW5lIFJBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4gbmFtZXNw
YWNlIFJBUElESlNPTl9OQU1FU1BBQ0UgewotI2VuZGlmCi0jaWZuZGVmIFJBUElESlNPTl9OQU1F
U1BBQ0VfRU5ECi0jZGVmaW5lIFJBUElESlNPTl9OQU1FU1BBQ0VfRU5EIH0KLSNlbmRpZgotCi0v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBSQVBJREpTT05fTk9fSU5UNjRERUZJTkUKLQotLyoh
IFxkZWYgUkFQSURKU09OX05PX0lOVDY0REVGSU5FCi0gICAgXGluZ3JvdXAgUkFQSURKU09OX0NP
TkZJRwotICAgIFxicmllZiBVc2UgZXh0ZXJuYWwgNjQtYml0IGludGVnZXIgdHlwZXMuCi0KLSAg
ICBSYXBpZEpTT04gcmVxdWlyZXMgdGhlIDY0LWJpdCBpbnRlZ2VyIHR5cGVzIFxjIGludDY0X3Qg
YW5kICBcYyB1aW50NjRfdCB0eXBlcwotICAgIHRvIGJlIGF2YWlsYWJsZSBhdCBnbG9iYWwgc2Nv
cGUuCi0KLSAgICBJZiB1c2VycyBoYXZlIHRoZWlyIG93biBkZWZpbml0aW9uLCBkZWZpbmUgUkFQ
SURKU09OX05PX0lOVDY0REVGSU5FIHRvCi0gICAgcHJldmVudCBSYXBpZEpTT04gZnJvbSBkZWZp
bmluZyBpdHMgb3duIHR5cGVzLgotKi8KLSNpZm5kZWYgUkFQSURKU09OX05PX0lOVDY0REVGSU5F
Ci0vLyFAY29uZCBSQVBJREpTT05fSElEREVOX0ZST01fRE9YWUdFTgotI2lmZGVmIF9NU0NfVkVS
Ci0jaW5jbHVkZSAibXNpbnR0eXBlcy9zdGRpbnQuaCIKLSNpbmNsdWRlICJtc2ludHR5cGVzL2lu
dHR5cGVzLmgiCi0jZWxzZQotLy8gT3RoZXIgY29tcGlsZXJzIHNob3VsZCBoYXZlIHRoaXMuCi0j
aW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSA8aW50dHlwZXMuaD4KLSNlbmRpZgotLy8hQGVu
ZGNvbmQKLSNpZmRlZiBSQVBJREpTT05fRE9YWUdFTl9SVU5OSU5HCi0jZGVmaW5lIFJBUElESlNP
Tl9OT19JTlQ2NERFRklORQotI2VuZGlmCi0jZW5kaWYgLy8gUkFQSURKU09OX05PX0lOVDY0VFlQ
RURFRgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBSQVBJREpTT05fRk9SQ0VJTkxJTkUK
LQotI2lmbmRlZiBSQVBJREpTT05fRk9SQ0VJTkxJTkUKLS8vIUBjb25kIFJBUElESlNPTl9ISURE
RU5fRlJPTV9ET1hZR0VOCi0jaWZkZWYgX01TQ19WRVIKLSNkZWZpbmUgUkFQSURKU09OX0ZPUkNF
SU5MSU5FIF9fZm9yY2VpbmxpbmUKLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19f
ID49IDQKLSNkZWZpbmUgUkFQSURKU09OX0ZPUkNFSU5MSU5FIF9fYXR0cmlidXRlX18oKGFsd2F5
c19pbmxpbmUpKQotI2Vsc2UKLSNkZWZpbmUgUkFQSURKU09OX0ZPUkNFSU5MSU5FCi0jZW5kaWYK
LS8vIUBlbmRjb25kCi0jZW5kaWYgLy8gUkFQSURKU09OX0ZPUkNFSU5MSU5FCi0KLS8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KLS8vIFJBUElESlNPTl9FTkRJQU4KLSNkZWZpbmUgUkFQSURKU09OX0xJ
VFRMRUVORElBTiAgMCAgIC8vITwgTGl0dGxlIGVuZGlhbiBtYWNoaW5lCi0jZGVmaW5lIFJBUElE
SlNPTl9CSUdFTkRJQU4gICAgIDEgICAvLyE8IEJpZyBlbmRpYW4gbWFjaGluZQotCi0vLyEgRW5k
aWFubmVzcyBvZiB0aGUgbWFjaGluZS4KLS8qIQotICAgIFxkZWYgUkFQSURKU09OX0VORElBTgot
ICAgIFxpbmdyb3VwIFJBUElESlNPTl9DT05GSUcKLQotICAgIEdDQyA0LjYgcHJvdmlkZWQgbWFj
cm8gZm9yIGRldGVjdGluZyBlbmRpYW5uZXNzIG9mIHRoZSB0YXJnZXQgbWFjaGluZS4gQnV0IG90
aGVyCi0gICAgY29tcGlsZXJzIG1heSBub3QgaGF2ZSB0aGlzLiBVc2VyIGNhbiBkZWZpbmUgUkFQ
SURKU09OX0VORElBTiB0byBlaXRoZXIKLSAgICBccmVmIFJBUElESlNPTl9MSVRUTEVFTkRJQU4g
b3IgXHJlZiBSQVBJREpTT05fQklHRU5ESUFOLgotCi0gICAgRGVmYXVsdCBkZXRlY3Rpb24gaW1w
bGVtZW50ZWQgd2l0aCByZWZlcmVuY2UgdG8KLSAgICBcbGkgaHR0cHM6Ly9nY2MuZ251Lm9yZy9v
bmxpbmVkb2NzL2djYy00LjYuMC9jcHAvQ29tbW9uLVByZWRlZmluZWQtTWFjcm9zLmh0bWwKLSAg
ICBcbGkgaHR0cDovL3d3dy5ib29zdC5vcmcvZG9jL2xpYnMvMV80Ml8wL2Jvb3N0L2RldGFpbC9l
bmRpYW4uaHBwCi0qLwotI2lmbmRlZiBSQVBJREpTT05fRU5ESUFOCi0vLyBEZXRlY3Qgd2l0aCBH
Q0MgNC42J3MgbWFjcm8KLSMgIGlmZGVmIF9fQllURV9PUkRFUl9fCi0jICAgIGlmIF9fQllURV9P
UkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fCi0jICAgICAgZGVmaW5lIFJBUElESlNP
Tl9FTkRJQU4gUkFQSURKU09OX0xJVFRMRUVORElBTgotIyAgICBlbGlmIF9fQllURV9PUkRFUl9f
ID09IF9fT1JERVJfQklHX0VORElBTl9fCi0jICAgICAgZGVmaW5lIFJBUElESlNPTl9FTkRJQU4g
UkFQSURKU09OX0JJR0VORElBTgotIyAgICBlbHNlCi0jICAgICAgZXJyb3IgVW5rbm93biBtYWNo
aW5lIGVuZGlhbmVzcyBkZXRlY3RlZC4gVXNlciBuZWVkcyB0byBkZWZpbmUgUkFQSURKU09OX0VO
RElBTi4KLSMgICAgZW5kaWYgLy8gX19CWVRFX09SREVSX18KLS8vIERldGVjdCB3aXRoIEdMSUJD
J3MgZW5kaWFuLmgKLSMgIGVsaWYgZGVmaW5lZChfX0dMSUJDX18pCi0jICAgIGluY2x1ZGUgPGVu
ZGlhbi5oPgotIyAgICBpZiAoX19CWVRFX09SREVSID09IF9fTElUVExFX0VORElBTikKLSMgICAg
ICBkZWZpbmUgUkFQSURKU09OX0VORElBTiBSQVBJREpTT05fTElUVExFRU5ESUFOCi0jICAgIGVs
aWYgKF9fQllURV9PUkRFUiA9PSBfX0JJR19FTkRJQU4pCi0jICAgICAgZGVmaW5lIFJBUElESlNP
Tl9FTkRJQU4gUkFQSURKU09OX0JJR0VORElBTgotIyAgICBlbHNlCi0jICAgICAgZXJyb3IgVW5r
bm93biBtYWNoaW5lIGVuZGlhbmVzcyBkZXRlY3RlZC4gVXNlciBuZWVkcyB0byBkZWZpbmUgUkFQ
SURKU09OX0VORElBTi4KLSMgICBlbmRpZiAvLyBfX0dMSUJDX18KLS8vIERldGVjdCB3aXRoIF9M
SVRUTEVfRU5ESUFOIGFuZCBfQklHX0VORElBTiBtYWNybwotIyAgZWxpZiBkZWZpbmVkKF9MSVRU
TEVfRU5ESUFOKSAmJiAhZGVmaW5lZChfQklHX0VORElBTikKLSMgICAgZGVmaW5lIFJBUElESlNP
Tl9FTkRJQU4gUkFQSURKU09OX0xJVFRMRUVORElBTgotIyAgZWxpZiBkZWZpbmVkKF9CSUdfRU5E
SUFOKSAmJiAhZGVmaW5lZChfTElUVExFX0VORElBTikKLSMgICAgZGVmaW5lIFJBUElESlNPTl9F
TkRJQU4gUkFQSURKU09OX0JJR0VORElBTgotLy8gRGV0ZWN0IHdpdGggYXJjaGl0ZWN0dXJlIG1h
Y3JvcwotIyAgZWxpZiBkZWZpbmVkKF9fc3BhcmMpIHx8IGRlZmluZWQoX19zcGFyY19fKSB8fCBk
ZWZpbmVkKF9QT1dFUikgfHwgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19f
KSB8fCBkZWZpbmVkKF9faHB1eCkgfHwgZGVmaW5lZChfX2hwcGEpIHx8IGRlZmluZWQoX01JUFNF
QikgfHwgZGVmaW5lZChfUE9XRVIpIHx8IGRlZmluZWQoX19zMzkwX18pCi0jICAgIGRlZmluZSBS
QVBJREpTT05fRU5ESUFOIFJBUElESlNPTl9CSUdFTkRJQU4KLSMgIGVsaWYgZGVmaW5lZChfX2kz
ODZfXykgfHwgZGVmaW5lZChfX2FscGhhX18pIHx8IGRlZmluZWQoX19pYTY0KSB8fCBkZWZpbmVk
KF9faWE2NF9fKSB8fCBkZWZpbmVkKF9NX0lYODYpIHx8IGRlZmluZWQoX01fSUE2NCkgfHwgZGVm
aW5lZChfTV9BTFBIQSkgfHwgZGVmaW5lZChfX2FtZDY0KSB8fCBkZWZpbmVkKF9fYW1kNjRfXykg
fHwgZGVmaW5lZChfTV9BTUQ2NCkgfHwgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX3g4
Nl82NF9fKSB8fCBkZWZpbmVkKF9NX1g2NCkgfHwgZGVmaW5lZChfX2JmaW5fXykKLSMgICAgZGVm
aW5lIFJBUElESlNPTl9FTkRJQU4gUkFQSURKU09OX0xJVFRMRUVORElBTgotIyAgZWxpZiBkZWZp
bmVkKFJBUElESlNPTl9ET1hZR0VOX1JVTk5JTkcpCi0jICAgIGRlZmluZSBSQVBJREpTT05fRU5E
SUFOCi0jICBlbHNlCi0jICAgIGVycm9yIFVua25vd24gbWFjaGluZSBlbmRpYW5lc3MgZGV0ZWN0
ZWQuIFVzZXIgbmVlZHMgdG8gZGVmaW5lIFJBUElESlNPTl9FTkRJQU4uICAgCi0jICBlbmRpZgot
I2VuZGlmIC8vIFJBUElESlNPTl9FTkRJQU4KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8g
UkFQSURKU09OXzY0QklUCi0KLS8vISBXaGV0aGVyIHVzaW5nIDY0LWJpdCBhcmNoaXRlY3R1cmUK
LSNpZm5kZWYgUkFQSURKU09OXzY0QklUCi0jaWYgZGVmaW5lZChfX0xQNjRfXykgfHwgZGVmaW5l
ZChfV0lONjQpCi0jZGVmaW5lIFJBUElESlNPTl82NEJJVCAxCi0jZWxzZQotI2RlZmluZSBSQVBJ
REpTT05fNjRCSVQgMAotI2VuZGlmCi0jZW5kaWYgLy8gUkFQSURKU09OXzY0QklUCi0KLS8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KLS8vIFJBUElESlNPTl9BTElHTgotCi0vLyEgRGF0YSBhbGlnbm1l
bnQgb2YgdGhlIG1hY2hpbmUuCi0vKiEgXGluZ3JvdXAgUkFQSURKU09OX0NPTkZJRwotICAgIFxw
YXJhbSB4IHBvaW50ZXIgdG8gYWxpZ24KLQotICAgIFNvbWUgbWFjaGluZXMgcmVxdWlyZSBzdHJp
Y3QgZGF0YSBhbGlnbm1lbnQuIEN1cnJlbnRseSB0aGUgZGVmYXVsdCB1c2VzIDQgYnl0ZXMKLSAg
ICBhbGlnbm1lbnQuIFVzZXIgY2FuIGN1c3RvbWl6ZSBieSBkZWZpbmluZyB0aGUgUkFQSURKU09O
X0FMSUdOIGZ1bmN0aW9uIG1hY3JvLiwKLSovCi0jaWZuZGVmIFJBUElESlNPTl9BTElHTgotI2Rl
ZmluZSBSQVBJREpTT05fQUxJR04oeCkgKCh4ICsgM3UpICYgfjN1KQotI2VuZGlmCi0KLS8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KLS8vIFJBUElESlNPTl9VSU5UNjRfQzIKLQotLy8hIENvbnN0cnVj
dCBhIDY0LWJpdCBsaXRlcmFsIGJ5IGEgcGFpciBvZiAzMi1iaXQgaW50ZWdlci4KLS8qIQotICAg
IDY0LWJpdCBsaXRlcmFsIHdpdGggb3Igd2l0aG91dCBVTEwgc3VmZml4IGlzIHByb25lIHRvIGNv
bXBpbGVyIHdhcm5pbmdzLgotICAgIFVJTlQ2NF9DKCkgaXMgQyBtYWNybyB3aGljaCBjYXVzZSBj
b21waWxhdGlvbiBwcm9ibGVtcy4KLSAgICBVc2UgdGhpcyBtYWNybyB0byBkZWZpbmUgNjQtYml0
IGNvbnN0YW50cyBieSBhIHBhaXIgb2YgMzItYml0IGludGVnZXIuCi0qLwotI2lmbmRlZiBSQVBJ
REpTT05fVUlOVDY0X0MyCi0jZGVmaW5lIFJBUElESlNPTl9VSU5UNjRfQzIoaGlnaDMyLCBsb3cz
MikgKChzdGF0aWNfY2FzdDx1aW50NjRfdD4oaGlnaDMyKSA8PCAzMikgfCBzdGF0aWNfY2FzdDx1
aW50NjRfdD4obG93MzIpKQotI2VuZGlmCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIFJB
UElESlNPTl9TU0UyL1JBUElESlNPTl9TU0U0Mi9SQVBJREpTT05fU0lNRAotCi0vKiEgXGRlZiBS
QVBJREpTT05fU0lNRAotICAgIFxpbmdyb3VwIFJBUElESlNPTl9DT05GSUcKLSAgICBcYnJpZWYg
RW5hYmxlIFNTRTIvU1NFNC4yIG9wdGltaXphdGlvbi4KLQotICAgIFJhcGlkSlNPTiBzdXBwb3J0
cyBvcHRpbWl6ZWQgaW1wbGVtZW50YXRpb25zIGZvciBzb21lIHBhcnNpbmcgb3BlcmF0aW9ucwot
ICAgIGJhc2VkIG9uIHRoZSBTU0UyIG9yIFNTRTQuMiBTSU1EIGV4dGVuc2lvbnMgb24gbW9kZXJu
IEludGVsLWNvbXBhdGlibGUKLSAgICBwcm9jZXNzb3JzLgotCi0gICAgVG8gZW5hYmxlIHRoZXNl
IG9wdGltaXphdGlvbnMsIHR3byBkaWZmZXJlbnQgc3ltYm9scyBjYW4gYmUgZGVmaW5lZDsKLSAg
ICBcY29kZQotICAgIC8vIEVuYWJsZSBTU0UyIG9wdGltaXphdGlvbi4KLSAgICAjZGVmaW5lIFJB
UElESlNPTl9TU0UyCi0KLSAgICAvLyBFbmFibGUgU1NFNC4yIG9wdGltaXphdGlvbi4KLSAgICAj
ZGVmaW5lIFJBUElESlNPTl9TU0U0MgotICAgIFxlbmRjb2RlCi0KLSAgICBcYyBSQVBJREpTT05f
U1NFNDIgdGFrZXMgcHJlY2VkZW5jZSwgaWYgYm90aCBhcmUgZGVmaW5lZC4KLQotICAgIElmIGFu
eSBvZiB0aGVzZSBzeW1ib2xzIGlzIGRlZmluZWQsIFJhcGlkSlNPTiBkZWZpbmVzIHRoZSBtYWNy
bwotICAgIFxjIFJBUElESlNPTl9TSU1EIHRvIGluZGljYXRlIHRoZSBhdmFpbGFiaWxpdHkgb2Yg
dGhlIG9wdGltaXplZCBjb2RlLgotKi8KLSNpZiBkZWZpbmVkKFJBUElESlNPTl9TU0UyKSB8fCBk
ZWZpbmVkKFJBUElESlNPTl9TU0U0MikgXAotICAgIHx8IGRlZmluZWQoUkFQSURKU09OX0RPWFlH
RU5fUlVOTklORykKLSNkZWZpbmUgUkFQSURKU09OX1NJTUQKLSNlbmRpZgotCi0vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCi0vLyBSQVBJREpTT05fTk9fU0laRVRZUEVERUZJTkUKLQotI2lmbmRlZiBS
QVBJREpTT05fTk9fU0laRVRZUEVERUZJTkUKLS8qISBcZGVmIFJBUElESlNPTl9OT19TSVpFVFlQ
RURFRklORQotICAgIFxpbmdyb3VwIFJBUElESlNPTl9DT05GSUcKLSAgICBcYnJpZWYgVXNlci1w
cm92aWRlZCBcYyBTaXplVHlwZSBkZWZpbml0aW9uLgotCi0gICAgSW4gb3JkZXIgdG8gYXZvaWQg
dXNpbmcgMzItYml0IHNpemUgdHlwZXMgZm9yIGluZGV4aW5nIHN0cmluZ3MgYW5kIGFycmF5cywK
LSAgICBkZWZpbmUgdGhpcyBwcmVwcm9jZXNzb3Igc3ltYm9sIGFuZCBwcm92aWRlIHRoZSB0eXBl
IHJhcGlkanNvbjo6U2l6ZVR5cGUKLSAgICBiZWZvcmUgaW5jbHVkaW5nIFJhcGlkSlNPTjoKLSAg
ICBcY29kZQotICAgICNkZWZpbmUgUkFQSURKU09OX05PX1NJWkVUWVBFREVGSU5FCi0gICAgbmFt
ZXNwYWNlIHJhcGlkanNvbiB7IHR5cGVkZWYgOjpzdGQ6OnNpemVfdCBTaXplVHlwZTsgfQotICAg
ICNpbmNsdWRlICJyYXBpZGpzb24vLi4uIgotICAgIFxlbmRjb2RlCi0KLSAgICBcc2VlIHJhcGlk
anNvbjo6U2l6ZVR5cGUKLSovCi0jaWZkZWYgUkFQSURKU09OX0RPWFlHRU5fUlVOTklORwotI2Rl
ZmluZSBSQVBJREpTT05fTk9fU0laRVRZUEVERUZJTkUKLSNlbmRpZgotUkFQSURKU09OX05BTUVT
UEFDRV9CRUdJTgotLy8hIFNpemUgdHlwZSAoZm9yIHN0cmluZyBsZW5ndGhzLCBhcnJheSBzaXpl
cywgZXRjLikKLS8qISBSYXBpZEpTT04gdXNlcyAzMi1iaXQgYXJyYXkvc3RyaW5nIGluZGljZXMg
ZXZlbiBvbiA2NC1iaXQgcGxhdGZvcm1zLAotICAgIGluc3RlYWQgb2YgdXNpbmcgXGMgc2l6ZV90
LiBVc2VycyBtYXkgb3ZlcnJpZGUgdGhlIFNpemVUeXBlIGJ5IGRlZmluaW5nCi0gICAgXHJlZiBS
QVBJREpTT05fTk9fU0laRVRZUEVERUZJTkUuCi0qLwotdHlwZWRlZiB1bnNpZ25lZCBTaXplVHlw
ZTsKLVJBUElESlNPTl9OQU1FU1BBQ0VfRU5ECi0jZW5kaWYKLQotLy8gYWx3YXlzIGltcG9ydCBz
dGQ6OnNpemVfdCB0byByYXBpZGpzb24gbmFtZXNwYWNlCi1SQVBJREpTT05fTkFNRVNQQUNFX0JF
R0lOCi11c2luZyBzdGQ6OnNpemVfdDsKLVJBUElESlNPTl9OQU1FU1BBQ0VfRU5ECi0KLS8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KLS8vIFJBUElESlNPTl9BU1NFUlQKLQotLy8hIEFzc2VydGlvbi4K
LS8qISBcaW5ncm91cCBSQVBJREpTT05fQ09ORklHCi0gICAgQnkgZGVmYXVsdCwgcmFwaWRqc29u
IHVzZXMgQyBcYyBhc3NlcnQoKSBmb3IgaW50ZXJuYWwgYXNzZXJ0aW9ucy4KLSAgICBVc2VyIGNh
biBvdmVycmlkZSBpdCBieSBkZWZpbmluZyBSQVBJREpTT05fQVNTRVJUKHgpIG1hY3JvLgotCi0g
ICAgXG5vdGUgUGFyc2luZyBlcnJvcnMgYXJlIGhhbmRsZWQgYW5kIGNhbiBiZSBjdXN0b21pemVk
IGJ5IHRoZQotICAgICAgICAgIFxyZWYgUkFQSURKU09OX0VSUk9SUyBBUElzLgotKi8KLSNpZm5k
ZWYgUkFQSURKU09OX0FTU0VSVAotI2luY2x1ZGUgPGNhc3NlcnQ+Ci0jZGVmaW5lIFJBUElESlNP
Tl9BU1NFUlQoeCkgYXNzZXJ0KHgpCi0jZW5kaWYgLy8gUkFQSURKU09OX0FTU0VSVAotCi0vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0vLyBSQVBJREpTT05fU1RBVElDX0FTU0VSVAotCi0vLyBBZG9w
dCBmcm9tIGJvb3N0Ci0jaWZuZGVmIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUCi0vLyFAY29uZCBS
QVBJREpTT05fSElEREVOX0ZST01fRE9YWUdFTgotUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgot
dGVtcGxhdGUgPGJvb2wgeD4gc3RydWN0IFNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTsKLXRlbXBs
YXRlIDw+IHN0cnVjdCBTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8dHJ1ZT4geyBlbnVtIHsgdmFs
dWUgPSAxIH07IH07Ci10ZW1wbGF0ZTxpbnQgeD4gc3RydWN0IFN0YXRpY0Fzc2VydFRlc3Qge307
Ci1SQVBJREpTT05fTkFNRVNQQUNFX0VORAotCi0jZGVmaW5lIFJBUElESlNPTl9KT0lOKFgsIFkp
IFJBUElESlNPTl9ET19KT0lOKFgsIFkpCi0jZGVmaW5lIFJBUElESlNPTl9ET19KT0lOKFgsIFkp
IFJBUElESlNPTl9ET19KT0lOMihYLCBZKQotI2RlZmluZSBSQVBJREpTT05fRE9fSk9JTjIoWCwg
WSkgWCMjWQotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykKLSNkZWZpbmUgUkFQSURKU09OX1NUQVRJ
Q19BU1NFUlRfVU5VU0VEX0FUVFJJQlVURSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQotI2Vsc2UK
LSNkZWZpbmUgUkFQSURKU09OX1NUQVRJQ19BU1NFUlRfVU5VU0VEX0FUVFJJQlVURSAKLSNlbmRp
ZgotLy8hQGVuZGNvbmQKLQotLyohIFxkZWYgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQKLSAgICBc
YnJpZWYgKEludGVybmFsKSBtYWNybyB0byBjaGVjayBmb3IgY29uZGl0aW9ucyBhdCBjb21waWxl
LXRpbWUKLSAgICBccGFyYW0geCBjb21waWxlLXRpbWUgY29uZGl0aW9uCi0gICAgXGhpZGVpbml0
aWFsaXplcgotICovCi0jZGVmaW5lIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHgpIFwKLSAgICB0
eXBlZGVmIDo6UkFQSURKU09OX05BTUVTUEFDRTo6U3RhdGljQXNzZXJ0VGVzdDwgXAotICAgICAg
c2l6ZW9mKDo6UkFQSURKU09OX05BTUVTUEFDRTo6U1RBVElDX0FTU0VSVElPTl9GQUlMVVJFPGJv
b2woeCkgPik+IFwKLSAgICBSQVBJREpTT05fSk9JTihTdGF0aWNBc3NlcnRUeXBlZGVmLCBfX0xJ
TkVfXykgUkFQSURKU09OX1NUQVRJQ19BU1NFUlRfVU5VU0VEX0FUVFJJQlVURQotI2VuZGlmCi0K
LS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIEhlbHBlcnMKLQotLy8hQGNvbmQgUkFQSURKU09O
X0hJRERFTl9GUk9NX0RPWFlHRU4KLQotI2RlZmluZSBSQVBJREpTT05fTVVMVElMSU5FTUFDUk9f
QkVHSU4gZG8geyAgCi0jZGVmaW5lIFJBUElESlNPTl9NVUxUSUxJTkVNQUNST19FTkQgXAotfSB3
aGlsZSgodm9pZCkwLCAwKQotCi0vLyBhZG9wdGVkIGZyb20gQm9vc3QKLSNkZWZpbmUgUkFQSURK
U09OX1ZFUlNJT05fQ09ERSh4LHkseikgXAotICAoKCh4KSoxMDAwMDApICsgKCh5KSoxMDApICsg
KHopKQotCi0vLyB0b2tlbiBzdHJpbmdpZmljYXRpb24KLSNkZWZpbmUgUkFQSURKU09OX1NUUklO
R0lGWSh4KSBSQVBJREpTT05fRE9fU1RSSU5HSUZZKHgpCi0jZGVmaW5lIFJBUElESlNPTl9ET19T
VFJJTkdJRlkoeCkgI3gKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gUkFQSURKU09OX0RJ
QUdfUFVTSC9QT1AsIFJBUElESlNPTl9ESUFHX09GRgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykK
LSNkZWZpbmUgUkFQSURKU09OX0dOVUMgXAotICAgIFJBUElESlNPTl9WRVJTSU9OX0NPREUoX19H
TlVDX18sX19HTlVDX01JTk9SX18sX19HTlVDX1BBVENITEVWRUxfXykKLSNlbmRpZgotCi0jaWYg
ZGVmaW5lZChfX2NsYW5nX18pIHx8IChkZWZpbmVkKFJBUElESlNPTl9HTlVDKSAmJiBSQVBJREpT
T05fR05VQyA+PSBSQVBJREpTT05fVkVSU0lPTl9DT0RFKDQsMiwwKSkKLQotI2RlZmluZSBSQVBJ
REpTT05fUFJBR01BKHgpIF9QcmFnbWEoUkFQSURKU09OX1NUUklOR0lGWSh4KSkKLSNkZWZpbmUg
UkFQSURKU09OX0RJQUdfUFJBR01BKHgpIFJBUElESlNPTl9QUkFHTUEoR0NDIGRpYWdub3N0aWMg
eCkKLSNkZWZpbmUgUkFQSURKU09OX0RJQUdfT0ZGKHgpIFwKLSAgICBSQVBJREpTT05fRElBR19Q
UkFHTUEoaWdub3JlZCBSQVBJREpTT05fU1RSSU5HSUZZKFJBUElESlNPTl9KT0lOKC1XLHgpKSkK
LQotLy8gcHVzaC9wb3Agc3VwcG9ydCBpbiBDbGFuZyBhbmQgR0NDPj00LjYKLSNpZiBkZWZpbmVk
KF9fY2xhbmdfXykgfHwgKGRlZmluZWQoUkFQSURKU09OX0dOVUMpICYmIFJBUElESlNPTl9HTlVD
ID49IFJBUElESlNPTl9WRVJTSU9OX0NPREUoNCw2LDApKQotI2RlZmluZSBSQVBJREpTT05fRElB
R19QVVNIIFJBUElESlNPTl9ESUFHX1BSQUdNQShwdXNoKQotI2RlZmluZSBSQVBJREpTT05fRElB
R19QT1AgIFJBUElESlNPTl9ESUFHX1BSQUdNQShwb3ApCi0jZWxzZSAvLyBHQ0MgPj0gNC4yLCA8
IDQuNgotI2RlZmluZSBSQVBJREpTT05fRElBR19QVVNIIC8qIGlnbm9yZWQgKi8KLSNkZWZpbmUg
UkFQSURKU09OX0RJQUdfUE9QIC8qIGlnbm9yZWQgKi8KLSNlbmRpZgotCi0jZWxpZiBkZWZpbmVk
KF9NU0NfVkVSKQotCi0vLyBwcmFnbWEgKE1TVkMgc3BlY2lmaWMpCi0jZGVmaW5lIFJBUElESlNP
Tl9QUkFHTUEoeCkgX19wcmFnbWEoeCkKLSNkZWZpbmUgUkFQSURKU09OX0RJQUdfUFJBR01BKHgp
IFJBUElESlNPTl9QUkFHTUEod2FybmluZyh4KSkKLQotI2RlZmluZSBSQVBJREpTT05fRElBR19P
RkYoeCkgUkFQSURKU09OX0RJQUdfUFJBR01BKGRpc2FibGU6IHgpCi0jZGVmaW5lIFJBUElESlNP
Tl9ESUFHX1BVU0ggUkFQSURKU09OX0RJQUdfUFJBR01BKHB1c2gpCi0jZGVmaW5lIFJBUElESlNP
Tl9ESUFHX1BPUCAgUkFQSURKU09OX0RJQUdfUFJBR01BKHBvcCkKLQotI2Vsc2UKLQotI2RlZmlu
ZSBSQVBJREpTT05fRElBR19PRkYoeCkgLyogaWdub3JlZCAqLwotI2RlZmluZSBSQVBJREpTT05f
RElBR19QVVNIICAgLyogaWdub3JlZCAqLwotI2RlZmluZSBSQVBJREpTT05fRElBR19QT1AgICAg
LyogaWdub3JlZCAqLwotCi0jZW5kaWYgLy8gUkFQSURKU09OX0RJQUdfKgotCi0vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vCi0vLyBDKysxMSBmZWF0dXJlcwotCi0jaWZuZGVmIFJBUElESlNPTl9IQVNf
Q1hYMTFfUlZBTFVFX1JFRlMKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNkZWZpbmUgUkFQSURK
U09OX0hBU19DWFgxMV9SVkFMVUVfUkVGUyBfX2hhc19mZWF0dXJlKGN4eF9ydmFsdWVfcmVmZXJl
bmNlcykKLSNlbGlmIChkZWZpbmVkKFJBUElESlNPTl9HTlVDKSAmJiAoUkFQSURKU09OX0dOVUMg
Pj0gUkFQSURKU09OX1ZFUlNJT05fQ09ERSg0LDMsMCkpICYmIGRlZmluZWQoX19HWFhfRVhQRVJJ
TUVOVEFMX0NYWDBYX18pKSB8fCBcCi0gICAgICAoZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19W
RVIgPj0gMTYwMCkKLQotI2RlZmluZSBSQVBJREpTT05fSEFTX0NYWDExX1JWQUxVRV9SRUZTIDEK
LSNlbHNlCi0jZGVmaW5lIFJBUElESlNPTl9IQVNfQ1hYMTFfUlZBTFVFX1JFRlMgMAotI2VuZGlm
Ci0jZW5kaWYgLy8gUkFQSURKU09OX0hBU19DWFgxMV9SVkFMVUVfUkVGUwotCi0jaWZuZGVmIFJB
UElESlNPTl9IQVNfQ1hYMTFfTk9FWENFUFQKLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykKLSNkZWZp
bmUgUkFQSURKU09OX0hBU19DWFgxMV9OT0VYQ0VQVCBfX2hhc19mZWF0dXJlKGN4eF9ub2V4Y2Vw
dCkKLSNlbGlmIChkZWZpbmVkKFJBUElESlNPTl9HTlVDKSAmJiAoUkFQSURKU09OX0dOVUMgPj0g
UkFQSURKU09OX1ZFUlNJT05fQ09ERSg0LDYsMCkpICYmIGRlZmluZWQoX19HWFhfRVhQRVJJTUVO
VEFMX0NYWDBYX18pKQotLy8gICAgKGRlZmluZWQoX01TQ19WRVIpICYmIF9NU0NfVkVSID49ID8/
Pz8pIC8vIG5vdCB5ZXQgc3VwcG9ydGVkCi0jZGVmaW5lIFJBUElESlNPTl9IQVNfQ1hYMTFfTk9F
WENFUFQgMQotI2Vsc2UKLSNkZWZpbmUgUkFQSURKU09OX0hBU19DWFgxMV9OT0VYQ0VQVCAwCi0j
ZW5kaWYKLSNlbmRpZgotI2lmIFJBUElESlNPTl9IQVNfQ1hYMTFfTk9FWENFUFQKLSNkZWZpbmUg
UkFQSURKU09OX05PRVhDRVBUIG5vZXhjZXB0Ci0jZWxzZQotI2RlZmluZSBSQVBJREpTT05fTk9F
WENFUFQgLyogbm9leGNlcHQgKi8KLSNlbmRpZiAvLyBSQVBJREpTT05fSEFTX0NYWDExX05PRVhD
RVBUCi0KLS8vIG5vIGF1dG9tYXRpYyBkZXRlY3Rpb24sIHlldAotI2lmbmRlZiBSQVBJREpTT05f
SEFTX0NYWDExX1RZUEVUUkFJVFMKLSNkZWZpbmUgUkFQSURKU09OX0hBU19DWFgxMV9UWVBFVFJB
SVRTIDAKLSNlbmRpZgotCi0vLyFAZW5kY29uZAotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0v
LyBuZXcvZGVsZXRlCi0KLSNpZm5kZWYgUkFQSURKU09OX05FVwotLy8vISBjdXN0b21pemF0aW9u
IHBvaW50IGZvciBnbG9iYWwgXGMgbmV3Ci0jZGVmaW5lIFJBUElESlNPTl9ORVcoeCkgbmV3IHgK
LSNlbmRpZgotI2lmbmRlZiBSQVBJREpTT05fREVMRVRFCi0vLy8hIGN1c3RvbWl6YXRpb24gcG9p
bnQgZm9yIGdsb2JhbCBcYyBkZWxldGUKLSNkZWZpbmUgUkFQSURKU09OX0RFTEVURSh4KSBkZWxl
dGUgeAotI2VuZGlmCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIEFsbG9jYXRvcnMgYW5k
IEVuY29kaW5ncwotCi0jaW5jbHVkZSAiYWxsb2NhdG9ycy5oIgotI2luY2x1ZGUgImVuY29kaW5n
cy5oIgotCi0vKiEgXG5hbWVzcGFjZSByYXBpZGpzb24KLSAgICBcYnJpZWYgbWFpbiBSYXBpZEpT
T04gbmFtZXNwYWNlCi0gICAgXHNlZSBSQVBJREpTT05fTkFNRVNQQUNFCi0qLwotUkFQSURKU09O
X05BTUVTUEFDRV9CRUdJTgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyAgU3RyZWFtCi0K
LS8qISBcY2xhc3MgcmFwaWRqc29uOjpTdHJlYW0KLSAgICBcYnJpZWYgQ29uY2VwdCBmb3IgcmVh
ZGluZyBhbmQgd3JpdGluZyBjaGFyYWN0ZXJzLgotCi0gICAgRm9yIHJlYWQtb25seSBzdHJlYW0s
IG5vIG5lZWQgdG8gaW1wbGVtZW50IFB1dEJlZ2luKCksIFB1dCgpLCBGbHVzaCgpIGFuZCBQdXRF
bmQoKS4KLQotICAgIEZvciB3cml0ZS1vbmx5IHN0cmVhbSwgb25seSBuZWVkIHRvIGltcGxlbWVu
dCBQdXQoKSBhbmQgRmx1c2goKS4KLQotXGNvZGUKLWNvbmNlcHQgU3RyZWFtIHsKLSAgICB0eXBl
bmFtZSBDaDsgICAgLy8hPCBDaGFyYWN0ZXIgdHlwZSBvZiB0aGUgc3RyZWFtLgotCi0gICAgLy8h
IFJlYWQgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGZyb20gc3RyZWFtIHdpdGhvdXQgbW92aW5nIHRo
ZSByZWFkIGN1cnNvci4KLSAgICBDaCBQZWVrKCkgY29uc3Q7Ci0KLSAgICAvLyEgUmVhZCB0aGUg
Y3VycmVudCBjaGFyYWN0ZXIgZnJvbSBzdHJlYW0gYW5kIG1vdmluZyB0aGUgcmVhZCBjdXJzb3Ig
dG8gbmV4dCBjaGFyYWN0ZXIuCi0gICAgQ2ggVGFrZSgpOwotCi0gICAgLy8hIEdldCB0aGUgY3Vy
cmVudCByZWFkIGN1cnNvci4KLSAgICAvLyEgXHJldHVybiBOdW1iZXIgb2YgY2hhcmFjdGVycyBy
ZWFkIGZyb20gc3RhcnQuCi0gICAgc2l6ZV90IFRlbGwoKTsKLQotICAgIC8vISBCZWdpbiB3cml0
aW5nIG9wZXJhdGlvbiBhdCB0aGUgY3VycmVudCByZWFkIHBvaW50ZXIuCi0gICAgLy8hIFxyZXR1
cm4gVGhlIGJlZ2luIHdyaXRlciBwb2ludGVyLgotICAgIENoKiBQdXRCZWdpbigpOwotCi0gICAg
Ly8hIFdyaXRlIGEgY2hhcmFjdGVyLgotICAgIHZvaWQgUHV0KENoIGMpOwotCi0gICAgLy8hIEZs
dXNoIHRoZSBidWZmZXIuCi0gICAgdm9pZCBGbHVzaCgpOwotCi0gICAgLy8hIEVuZCB0aGUgd3Jp
dGluZyBvcGVyYXRpb24uCi0gICAgLy8hIFxwYXJhbSBiZWdpbiBUaGUgYmVnaW4gd3JpdGUgcG9p
bnRlciByZXR1cm5lZCBieSBQdXRCZWdpbigpLgotICAgIC8vISBccmV0dXJuIE51bWJlciBvZiBj
aGFyYWN0ZXJzIHdyaXR0ZW4uCi0gICAgc2l6ZV90IFB1dEVuZChDaCogYmVnaW4pOwotfQotXGVu
ZGNvZGUKLSovCi0KLS8vISBQcm92aWRlcyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciBzdHJl
YW0uCi0vKiEKLSAgICBCeSB1c2luZyB0cmFpdHMgcGF0dGVybiwgdGhpcyB0eXBlIHByb3ZpZGVz
IGEgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZvciBzdHJlYW0uCi0gICAgRm9yIGN1c3RvbSBzdHJl
YW0sIHRoaXMgdHlwZSBjYW4gYmUgc3BlY2lhbGl6ZWQgZm9yIG90aGVyIGNvbmZpZ3VyYXRpb24u
Ci0gICAgU2VlIFRFU1QoUmVhZGVyLCBDdXN0b21TdHJpbmdTdHJlYW0pIGluIHJlYWRlcnRlc3Qu
Y3BwIGZvciBleGFtcGxlLgotKi8KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmVhbT4KLXN0cnVjdCBT
dHJlYW1UcmFpdHMgewotICAgIC8vISBXaGV0aGVyIHRvIG1ha2UgbG9jYWwgY29weSBvZiBzdHJl
YW0gZm9yIG9wdGltaXphdGlvbiBkdXJpbmcgcGFyc2luZy4KLSAgICAvKiEKLSAgICAgICAgQnkg
ZGVmYXVsdCwgZm9yIHNhZmV0eSwgc3RyZWFtcyBkbyBub3QgdXNlIGxvY2FsIGNvcHkgb3B0aW1p
emF0aW9uLgotICAgICAgICBTdHJlYW0gdGhhdCBjYW4gYmUgY29waWVkIGZhc3Qgc2hvdWxkIHNw
ZWNpYWxpemUgdGhpcywgbGlrZSBTdHJlYW1UcmFpdHM8U3RyaW5nU3RyZWFtPi4KLSAgICAqLwot
ICAgIGVudW0geyBjb3B5T3B0aW1pemF0aW9uID0gMCB9OwotfTsKLQotLy8hIFB1dCBOIGNvcGll
cyBvZiBhIGNoYXJhY3RlciB0byBhIHN0cmVhbS4KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmVhbSwg
dHlwZW5hbWUgQ2g+Ci1pbmxpbmUgdm9pZCBQdXROKFN0cmVhbSYgc3RyZWFtLCBDaCBjLCBzaXpl
X3QgbikgewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgaSsrKQotICAgICAgICBzdHJl
YW0uUHV0KGMpOwotfQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBTdHJpbmdTdHJlYW0K
LQotLy8hIFJlYWQtb25seSBzdHJpbmcgc3RyZWFtLgotLyohIFxub3RlIGltcGxlbWVudHMgU3Ry
ZWFtIGNvbmNlcHQKLSovCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRW5jb2Rpbmc+Ci1zdHJ1Y3QgR2Vu
ZXJpY1N0cmluZ1N0cmVhbSB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBFbmNvZGluZzo6Q2ggQ2g7
Ci0KLSAgICBHZW5lcmljU3RyaW5nU3RyZWFtKGNvbnN0IENoICpzcmMpIDogc3JjXyhzcmMpLCBo
ZWFkXyhzcmMpIHt9Ci0KLSAgICBDaCBQZWVrKCkgY29uc3QgeyByZXR1cm4gKnNyY187IH0KLSAg
ICBDaCBUYWtlKCkgeyByZXR1cm4gKnNyY18rKzsgfQotICAgIHNpemVfdCBUZWxsKCkgY29uc3Qg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNfIC0gaGVhZF8pOyB9Ci0KLSAgICBDaCog
UHV0QmVnaW4oKSB7IFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyByZXR1cm4gMDsgfQotICAgIHZv
aWQgUHV0KENoKSB7IFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyB9Ci0gICAgdm9pZCBGbHVzaCgp
IHsgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7IH0KLSAgICBzaXplX3QgUHV0RW5kKENoKikgeyBS
QVBJREpTT05fQVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7IH0KLQotICAgIGNvbnN0IENoKiBzcmNf
OyAgICAgLy8hPCBDdXJyZW50IHJlYWQgcG9zaXRpb24uCi0gICAgY29uc3QgQ2gqIGhlYWRfOyAg
ICAvLyE8IE9yaWdpbmFsIGhlYWQgb2YgdGhlIHN0cmluZy4KLX07Ci0KLXRlbXBsYXRlIDx0eXBl
bmFtZSBFbmNvZGluZz4KLXN0cnVjdCBTdHJlYW1UcmFpdHM8R2VuZXJpY1N0cmluZ1N0cmVhbTxF
bmNvZGluZz4gPiB7Ci0gICAgZW51bSB7IGNvcHlPcHRpbWl6YXRpb24gPSAxIH07Ci19OwotCi0v
LyEgU3RyaW5nIHN0cmVhbSB3aXRoIFVURjggZW5jb2RpbmcuCi10eXBlZGVmIEdlbmVyaWNTdHJp
bmdTdHJlYW08VVRGODw+ID4gU3RyaW5nU3RyZWFtOwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ci0vLyBJbnNpdHVTdHJpbmdTdHJlYW0KLQotLy8hIEEgcmVhZC13cml0ZSBzdHJpbmcgc3RyZWFt
LgotLyohIFRoaXMgc3RyaW5nIHN0cmVhbSBpcyBwYXJ0aWN1bGFybHkgZGVzaWduZWQgZm9yIGlu
LXNpdHUgcGFyc2luZy4KLSAgICBcbm90ZSBpbXBsZW1lbnRzIFN0cmVhbSBjb25jZXB0Ci0qLwot
dGVtcGxhdGUgPHR5cGVuYW1lIEVuY29kaW5nPgotc3RydWN0IEdlbmVyaWNJbnNpdHVTdHJpbmdT
dHJlYW0gewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5jb2Rpbmc6OkNoIENoOwotCi0gICAgR2Vu
ZXJpY0luc2l0dVN0cmluZ1N0cmVhbShDaCAqc3JjKSA6IHNyY18oc3JjKSwgZHN0XygwKSwgaGVh
ZF8oc3JjKSB7fQotCi0gICAgLy8gUmVhZAotICAgIENoIFBlZWsoKSB7IHJldHVybiAqc3JjXzsg
fQotICAgIENoIFRha2UoKSB7IHJldHVybiAqc3JjXysrOyB9Ci0gICAgc2l6ZV90IFRlbGwoKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY18gLSBoZWFkXyk7IH0KLQotICAgIC8vIFdy
aXRlCi0gICAgdm9pZCBQdXQoQ2ggYykgeyBSQVBJREpTT05fQVNTRVJUKGRzdF8gIT0gMCk7ICpk
c3RfKysgPSBjOyB9Ci0KLSAgICBDaCogUHV0QmVnaW4oKSB7IHJldHVybiBkc3RfID0gc3JjXzsg
fQotICAgIHNpemVfdCBQdXRFbmQoQ2gqIGJlZ2luKSB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGRzdF8gLSBiZWdpbik7IH0KLSAgICB2b2lkIEZsdXNoKCkge30KLQotICAgIENoKiBQdXNo
KHNpemVfdCBjb3VudCkgeyBDaCogYmVnaW4gPSBkc3RfOyBkc3RfICs9IGNvdW50OyByZXR1cm4g
YmVnaW47IH0KLSAgICB2b2lkIFBvcChzaXplX3QgY291bnQpIHsgZHN0XyAtPSBjb3VudDsgfQot
Ci0gICAgQ2gqIHNyY187Ci0gICAgQ2gqIGRzdF87Ci0gICAgQ2gqIGhlYWRfOwotfTsKLQotdGVt
cGxhdGUgPHR5cGVuYW1lIEVuY29kaW5nPgotc3RydWN0IFN0cmVhbVRyYWl0czxHZW5lcmljSW5z
aXR1U3RyaW5nU3RyZWFtPEVuY29kaW5nPiA+IHsKLSAgICBlbnVtIHsgY29weU9wdGltaXphdGlv
biA9IDEgfTsKLX07Ci0KLS8vISBJbnNpdHUgc3RyaW5nIHN0cmVhbSB3aXRoIFVURjggZW5jb2Rp
bmcuCi10eXBlZGVmIEdlbmVyaWNJbnNpdHVTdHJpbmdTdHJlYW08VVRGODw+ID4gSW5zaXR1U3Ry
aW5nU3RyZWFtOwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBUeXBlCi0KLS8vISBUeXBl
IG9mIEpTT04gdmFsdWUKLWVudW0gVHlwZSB7Ci0gICAga051bGxUeXBlID0gMCwgICAgICAvLyE8
IG51bGwKLSAgICBrRmFsc2VUeXBlID0gMSwgICAgIC8vITwgZmFsc2UKLSAgICBrVHJ1ZVR5cGUg
PSAyLCAgICAgIC8vITwgdHJ1ZQotICAgIGtPYmplY3RUeXBlID0gMywgICAgLy8hPCBvYmplY3QK
LSAgICBrQXJyYXlUeXBlID0gNCwgICAgIC8vITwgYXJyYXkgCi0gICAga1N0cmluZ1R5cGUgPSA1
LCAgICAvLyE8IHN0cmluZwotICAgIGtOdW1iZXJUeXBlID0gNiAgICAgLy8hPCBudW1iZXIKLX07
Ci0KLVJBUElESlNPTl9OQU1FU1BBQ0VfRU5ECi0KLSNlbmRpZiAvLyBSQVBJREpTT05fUkFQSURK
U09OX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhp
cmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3JlYWRlci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3Jh
cGlkanNvbi9yZWFkZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM1Y2RjZjJk
ZjcwZDIwZTAzZGUxYmU0N2Q4ODg4MjcxMTgzZjY4ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
dGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3JlYWRlci5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTQ0NCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAK
LS8vCi0vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g
YW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv
Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAotLy8g
aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp
bWl0YXRpb24gdGhlIHJpZ2h0cwotLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs
aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotLy8gY29waWVzIG9mIHRo
ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlz
Ci0vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zOgotLy8KLS8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np
b24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50
aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLS8vCi0vLyBUSEUgU09GVFdBUkUgSVMgUFJP
VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgot
Ly8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFksCi0vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
TkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLS8vIEFVVEhPUlMgT1Ig
Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RI
RVIKLS8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQg
T1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi0vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX
SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCi0vLyBUSEUg
U09GVFdBUkUuCi0KLSNpZm5kZWYgUkFQSURKU09OX1JFQURFUl9IXwotI2RlZmluZSBSQVBJREpT
T05fUkVBREVSX0hfCi0KLS8qISBcZmlsZSByZWFkZXIuaCAqLwotCi0jaW5jbHVkZSAicmFwaWRq
c29uLmgiCi0jaW5jbHVkZSAiZW5jb2RpbmdzLmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwvbWV0YS5o
IgotI2luY2x1ZGUgImludGVybmFsL3N0YWNrLmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwvc3RydG9k
LmgiCi0KLSNpZiBkZWZpbmVkKFJBUElESlNPTl9TSU1EKSAmJiBkZWZpbmVkKF9NU0NfVkVSKQot
I2luY2x1ZGUgPGludHJpbi5oPgotI3ByYWdtYSBpbnRyaW5zaWMoX0JpdFNjYW5Gb3J3YXJkKQot
I2VuZGlmCi0jaWZkZWYgUkFQSURKU09OX1NTRTQyCi0jaW5jbHVkZSA8bm1taW50cmluLmg+Ci0j
ZWxpZiBkZWZpbmVkKFJBUElESlNPTl9TU0UyKQotI2luY2x1ZGUgPGVtbWludHJpbi5oPgotI2Vu
ZGlmCi0KLSNpZmRlZiBfTVNDX1ZFUgotUkFQSURKU09OX0RJQUdfUFVTSAotUkFQSURKU09OX0RJ
QUdfT0ZGKDQxMjcpICAvLyBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50Ci1SQVBJ
REpTT05fRElBR19PRkYoNDcwMikgIC8vIHVucmVhY2hhYmxlIGNvZGUKLSNlbmRpZgotCi0jaWZk
ZWYgX19HTlVDX18KLVJBUElESlNPTl9ESUFHX1BVU0gKLVJBUElESlNPTl9ESUFHX09GRihlZmZj
KyspCi0jZW5kaWYKLQotLy8hQGNvbmQgUkFQSURKU09OX0hJRERFTl9GUk9NX0RPWFlHRU4KLSNk
ZWZpbmUgUkFQSURKU09OX05PVEhJTkcgLyogZGVsaWJlcmF0ZWx5IGVtcHR5ICovCi0jaWZuZGVm
IFJBUElESlNPTl9QQVJTRV9FUlJPUl9FQVJMWV9SRVRVUk4KLSNkZWZpbmUgUkFQSURKU09OX1BB
UlNFX0VSUk9SX0VBUkxZX1JFVFVSTih2YWx1ZSkgXAotICAgIFJBUElESlNPTl9NVUxUSUxJTkVN
QUNST19CRUdJTiBcCi0gICAgaWYgKEhhc1BhcnNlRXJyb3IoKSkgeyByZXR1cm4gdmFsdWU7IH0g
XAotICAgIFJBUElESlNPTl9NVUxUSUxJTkVNQUNST19FTkQKLSNlbmRpZgotI2RlZmluZSBSQVBJ
REpTT05fUEFSU0VfRVJST1JfRUFSTFlfUkVUVVJOX1ZPSUQgXAotICAgIFJBUElESlNPTl9QQVJT
RV9FUlJPUl9FQVJMWV9SRVRVUk4oUkFQSURKU09OX05PVEhJTkcpCi0vLyFAZW5kY29uZAotCi0v
KiEgXGRlZiBSQVBJREpTT05fUEFSU0VfRVJST1JfTk9SRVRVUk4KLSAgICBcaW5ncm91cCBSQVBJ
REpTT05fRVJST1JTCi0gICAgXGJyaWVmIE1hY3JvIHRvIGluZGljYXRlIGEgcGFyc2UgZXJyb3Iu
Ci0gICAgXHBhcmFtIHBhcnNlRXJyb3JDb2RlIFxyZWYgcmFwaWRqc29uOjpQYXJzZUVycm9yQ29k
ZSBvZiB0aGUgZXJyb3IKLSAgICBccGFyYW0gb2Zmc2V0ICBwb3NpdGlvbiBvZiB0aGUgZXJyb3Ig
aW4gSlNPTiBpbnB1dCAoXGMgc2l6ZV90KQotCi0gICAgVGhpcyBtYWNyb3MgY2FuIGJlIHVzZWQg
YXMgYSBjdXN0b21pemF0aW9uIHBvaW50IGZvciB0aGUgaW50ZXJuYWwKLSAgICBlcnJvciBoYW5k
bGluZyBtZWNoYW5pc20gb2YgUmFwaWRKU09OLgotCi0gICAgQSBjb21tb24gdXNhZ2UgbW9kZWwg
aXMgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIGluc3RlYWQgb2YgcmVxdWlyaW5nIHRoZQotICAgIGNh
bGxlciB0byBleHBsaWNpdGx5IGNoZWNrIHRoZSBccmVmIHJhcGlkanNvbjo6R2VuZXJpY1JlYWRl
cjo6UGFyc2UncwotICAgIHJldHVybiB2YWx1ZToKLQotICAgIFxjb2RlCi0gICAgI2RlZmluZSBS
QVBJREpTT05fUEFSU0VfRVJST1JfTk9SRVRVUk4ocGFyc2VFcnJvckNvZGUsb2Zmc2V0KSBcCi0g
ICAgICAgdGhyb3cgUGFyc2VFeGNlcHRpb24ocGFyc2VFcnJvckNvZGUsICNwYXJzZUVycm9yQ29k
ZSwgb2Zmc2V0KQotCi0gICAgI2luY2x1ZGUgPHN0ZGV4Y2VwdD4gICAgICAgICAgICAgICAvLyBz
dGQ6OnJ1bnRpbWVfZXJyb3IKLSAgICAjaW5jbHVkZSAicmFwaWRqc29uL2Vycm9yL2Vycm9yLmgi
IC8vIHJhcGlkanNvbjo6UGFyc2VSZXN1bHQKLQotICAgIHN0cnVjdCBQYXJzZUV4Y2VwdGlvbiA6
IHN0ZDo6cnVudGltZV9lcnJvciwgcmFwaWRqc29uOjpQYXJzZVJlc3VsdCB7Ci0gICAgICBQYXJz
ZUV4Y2VwdGlvbihyYXBpZGpzb246OlBhcnNlRXJyb3JDb2RlIGNvZGUsIGNvbnN0IGNoYXIqIG1z
Zywgc2l6ZV90IG9mZnNldCkKLSAgICAgICAgOiBzdGQ6OnJ1bnRpbWVfZXJyb3IobXNnKSwgUGFy
c2VSZXN1bHQoY29kZSwgb2Zmc2V0KSB7fQotICAgIH07Ci0KLSAgICAjaW5jbHVkZSAicmFwaWRq
c29uL3JlYWRlci5oIgotICAgIFxlbmRjb2RlCi0KLSAgICBcc2VlIFJBUElESlNPTl9QQVJTRV9F
UlJPUiwgcmFwaWRqc29uOjpHZW5lcmljUmVhZGVyOjpQYXJzZQotICovCi0jaWZuZGVmIFJBUElE
SlNPTl9QQVJTRV9FUlJPUl9OT1JFVFVSTgotI2RlZmluZSBSQVBJREpTT05fUEFSU0VfRVJST1Jf
Tk9SRVRVUk4ocGFyc2VFcnJvckNvZGUsIG9mZnNldCkgXAotICAgIFJBUElESlNPTl9NVUxUSUxJ
TkVNQUNST19CRUdJTiBcCi0gICAgUkFQSURKU09OX0FTU0VSVCghSGFzUGFyc2VFcnJvcigpKTsg
LyogRXJyb3IgY2FuIG9ubHkgYmUgYXNzaWduZWQgb25jZSAqLyBcCi0gICAgU2V0UGFyc2VFcnJv
cihwYXJzZUVycm9yQ29kZSwgb2Zmc2V0KTsgXAotICAgIFJBUElESlNPTl9NVUxUSUxJTkVNQUNS
T19FTkQKLSNlbmRpZgotCi0vKiEgXGRlZiBSQVBJREpTT05fUEFSU0VfRVJST1IKLSAgICBcaW5n
cm91cCBSQVBJREpTT05fRVJST1JTCi0gICAgXGJyaWVmIChJbnRlcm5hbCkgbWFjcm8gdG8gaW5k
aWNhdGUgYW5kIGhhbmRsZSBhIHBhcnNlIGVycm9yLgotICAgIFxwYXJhbSBwYXJzZUVycm9yQ29k
ZSBccmVmIHJhcGlkanNvbjo6UGFyc2VFcnJvckNvZGUgb2YgdGhlIGVycm9yCi0gICAgXHBhcmFt
IG9mZnNldCAgcG9zaXRpb24gb2YgdGhlIGVycm9yIGluIEpTT04gaW5wdXQgKFxjIHNpemVfdCkK
LQotICAgIEludm9rZXMgUkFQSURKU09OX1BBUlNFX0VSUk9SX05PUkVUVVJOIGFuZCBzdG9wcyB0
aGUgcGFyc2luZy4KLQotICAgIFxzZWUgUkFQSURKU09OX1BBUlNFX0VSUk9SX05PUkVUVVJOCi0g
ICAgXGhpZGVpbml0aWFsaXplcgotICovCi0jaWZuZGVmIFJBUElESlNPTl9QQVJTRV9FUlJPUgot
I2RlZmluZSBSQVBJREpTT05fUEFSU0VfRVJST1IocGFyc2VFcnJvckNvZGUsIG9mZnNldCkgXAot
ICAgIFJBUElESlNPTl9NVUxUSUxJTkVNQUNST19CRUdJTiBcCi0gICAgUkFQSURKU09OX1BBUlNF
X0VSUk9SX05PUkVUVVJOKHBhcnNlRXJyb3JDb2RlLCBvZmZzZXQpOyBcCi0gICAgUkFQSURKU09O
X1BBUlNFX0VSUk9SX0VBUkxZX1JFVFVSTl9WT0lEOyBcCi0gICAgUkFQSURKU09OX01VTFRJTElO
RU1BQ1JPX0VORAotI2VuZGlmCi0KLSNpbmNsdWRlICJlcnJvci9lcnJvci5oIiAvLyBQYXJzZUVy
cm9yQ29kZSwgUGFyc2VSZXN1bHQKLQotUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgotCi0vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0vLyBQYXJzZUZsYWcKLQotLyohIFxkZWYgUkFQSURKU09OX1BB
UlNFX0RFRkFVTFRfRkxBR1MgCi0gICAgXGluZ3JvdXAgUkFQSURKU09OX0NPTkZJRwotICAgIFxi
cmllZiBVc2VyLWRlZmluZWQga1BhcnNlRGVmYXVsdEZsYWdzIGRlZmluaXRpb24uCi0KLSAgICBV
c2VyIGNhbiBkZWZpbmUgdGhpcyBhcyBhbnkgXGMgUGFyc2VGbGFnIGNvbWJpbmF0aW9ucy4KLSov
Ci0jaWZuZGVmIFJBUElESlNPTl9QQVJTRV9ERUZBVUxUX0ZMQUdTCi0jZGVmaW5lIFJBUElESlNP
Tl9QQVJTRV9ERUZBVUxUX0ZMQUdTIGtQYXJzZU5vRmxhZ3MKLSNlbmRpZgotCi0vLyEgQ29tYmlu
YXRpb24gb2YgcGFyc2VGbGFncwotLyohIFxzZWUgUmVhZGVyOjpQYXJzZSwgRG9jdW1lbnQ6OlBh
cnNlLCBEb2N1bWVudDo6UGFyc2VJbnNpdHUsIERvY3VtZW50OjpQYXJzZVN0cmVhbQotICovCi1l
bnVtIFBhcnNlRmxhZyB7Ci0gICAga1BhcnNlTm9GbGFncyA9IDAsICAgICAgICAgICAgICAvLyE8
IE5vIGZsYWdzIGFyZSBzZXQuCi0gICAga1BhcnNlSW5zaXR1RmxhZyA9IDEsICAgICAgICAgICAv
LyE8IEluLXNpdHUoZGVzdHJ1Y3RpdmUpIHBhcnNpbmcuCi0gICAga1BhcnNlVmFsaWRhdGVFbmNv
ZGluZ0ZsYWcgPSAyLCAvLyE8IFZhbGlkYXRlIGVuY29kaW5nIG9mIEpTT04gc3RyaW5ncy4KLSAg
ICBrUGFyc2VJdGVyYXRpdmVGbGFnID0gNCwgICAgICAgIC8vITwgSXRlcmF0aXZlKGNvbnN0YW50
IGNvbXBsZXhpdHkgaW4gdGVybXMgb2YgZnVuY3Rpb24gY2FsbCBzdGFjayBzaXplKSBwYXJzaW5n
LgotICAgIGtQYXJzZVN0b3BXaGVuRG9uZUZsYWcgPSA4LCAgICAgLy8hPCBBZnRlciBwYXJzaW5n
IGEgY29tcGxldGUgSlNPTiByb290IGZyb20gc3RyZWFtLCBzdG9wIGZ1cnRoZXIgcHJvY2Vzc2lu
ZyB0aGUgcmVzdCBvZiBzdHJlYW0uIFdoZW4gdGhpcyBmbGFnIGlzIHVzZWQsIHBhcnNlciB3aWxs
IG5vdCBnZW5lcmF0ZSBrUGFyc2VFcnJvckRvY3VtZW50Um9vdE5vdFNpbmd1bGFyIGVycm9yLgot
ICAgIGtQYXJzZUZ1bGxQcmVjaXNpb25GbGFnID0gMTYsICAgLy8hPCBQYXJzZSBudW1iZXIgaW4g
ZnVsbCBwcmVjaXNpb24gKGJ1dCBzbG93ZXIpLgotICAgIGtQYXJzZURlZmF1bHRGbGFncyA9IFJB
UElESlNPTl9QQVJTRV9ERUZBVUxUX0ZMQUdTICAvLyE8IERlZmF1bHQgcGFyc2UgZmxhZ3MuIENh
biBiZSBjdXN0b21pemVkIGJ5IGRlZmluaW5nIFJBUElESlNPTl9QQVJTRV9ERUZBVUxUX0ZMQUdT
Ci19OwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBIYW5kbGVyCi0KLS8qISBcY2xhc3Mg
cmFwaWRqc29uOjpIYW5kbGVyCi0gICAgXGJyaWVmIENvbmNlcHQgZm9yIHJlY2VpdmluZyBldmVu
dHMgZnJvbSBHZW5lcmljUmVhZGVyIHVwb24gcGFyc2luZy4KLSAgICBUaGUgZnVuY3Rpb25zIHJl
dHVybiB0cnVlIGlmIG5vIGVycm9yIG9jY3Vycy4gSWYgdGhleSByZXR1cm4gZmFsc2UsIAotICAg
IHRoZSBldmVudCBwdWJsaXNoZXIgc2hvdWxkIHRlcm1pbmF0ZSB0aGUgcHJvY2Vzcy4KLVxjb2Rl
Ci1jb25jZXB0IEhhbmRsZXIgewotICAgIHR5cGVuYW1lIENoOwotCi0gICAgYm9vbCBOdWxsKCk7
Ci0gICAgYm9vbCBCb29sKGJvb2wgYik7Ci0gICAgYm9vbCBJbnQoaW50IGkpOwotICAgIGJvb2wg
VWludCh1bnNpZ25lZCBpKTsKLSAgICBib29sIEludDY0KGludDY0X3QgaSk7Ci0gICAgYm9vbCBV
aW50NjQodWludDY0X3QgaSk7Ci0gICAgYm9vbCBEb3VibGUoZG91YmxlIGQpOwotICAgIGJvb2wg
U3RyaW5nKGNvbnN0IENoKiBzdHIsIFNpemVUeXBlIGxlbmd0aCwgYm9vbCBjb3B5KTsKLSAgICBi
b29sIFN0YXJ0T2JqZWN0KCk7Ci0gICAgYm9vbCBLZXkoY29uc3QgQ2gqIHN0ciwgU2l6ZVR5cGUg
bGVuZ3RoLCBib29sIGNvcHkpOwotICAgIGJvb2wgRW5kT2JqZWN0KFNpemVUeXBlIG1lbWJlckNv
dW50KTsKLSAgICBib29sIFN0YXJ0QXJyYXkoKTsKLSAgICBib29sIEVuZEFycmF5KFNpemVUeXBl
IGVsZW1lbnRDb3VudCk7Ci19OwotXGVuZGNvZGUKLSovCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ci0vLyBCYXNlUmVhZGVySGFuZGxlcgotCi0vLyEgRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBI
YW5kbGVyLgotLyohIFRoaXMgY2FuIGJlIHVzZWQgYXMgYmFzZSBjbGFzcyBvZiBhbnkgcmVhZGVy
IGhhbmRsZXIuCi0gICAgXG5vdGUgaW1wbGVtZW50cyBIYW5kbGVyIGNvbmNlcHQKLSovCi10ZW1w
bGF0ZTx0eXBlbmFtZSBFbmNvZGluZyA9IFVURjg8PiwgdHlwZW5hbWUgRGVyaXZlZCA9IHZvaWQ+
Ci1zdHJ1Y3QgQmFzZVJlYWRlckhhbmRsZXIgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5jb2Rp
bmc6OkNoIENoOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbnRlcm5hbDo6U2VsZWN0SWY8aW50
ZXJuYWw6OklzU2FtZTxEZXJpdmVkLCB2b2lkPiwgQmFzZVJlYWRlckhhbmRsZXIsIERlcml2ZWQ+
OjpUeXBlIE92ZXJyaWRlOwotCi0gICAgYm9vbCBEZWZhdWx0KCkgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIGJvb2wgTnVsbCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE92ZXJyaWRlJj4oKnRoaXMpLkRl
ZmF1bHQoKTsgfQotICAgIGJvb2wgQm9vbChib29sKSB7IHJldHVybiBzdGF0aWNfY2FzdDxPdmVy
cmlkZSY+KCp0aGlzKS5EZWZhdWx0KCk7IH0KLSAgICBib29sIEludChpbnQpIHsgcmV0dXJuIHN0
YXRpY19jYXN0PE92ZXJyaWRlJj4oKnRoaXMpLkRlZmF1bHQoKTsgfQotICAgIGJvb2wgVWludCh1
bnNpZ25lZCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcnJpZGUmPigqdGhpcykuRGVmYXVsdCgp
OyB9Ci0gICAgYm9vbCBJbnQ2NChpbnQ2NF90KSB7IHJldHVybiBzdGF0aWNfY2FzdDxPdmVycmlk
ZSY+KCp0aGlzKS5EZWZhdWx0KCk7IH0KLSAgICBib29sIFVpbnQ2NCh1aW50NjRfdCkgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8T3ZlcnJpZGUmPigqdGhpcykuRGVmYXVsdCgpOyB9Ci0gICAgYm9vbCBE
b3VibGUoZG91YmxlKSB7IHJldHVybiBzdGF0aWNfY2FzdDxPdmVycmlkZSY+KCp0aGlzKS5EZWZh
dWx0KCk7IH0KLSAgICBib29sIFN0cmluZyhjb25zdCBDaCosIFNpemVUeXBlLCBib29sKSB7IHJl
dHVybiBzdGF0aWNfY2FzdDxPdmVycmlkZSY+KCp0aGlzKS5EZWZhdWx0KCk7IH0KLSAgICBib29s
IFN0YXJ0T2JqZWN0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcnJpZGUmPigqdGhpcykuRGVm
YXVsdCgpOyB9Ci0gICAgYm9vbCBLZXkoY29uc3QgQ2gqIHN0ciwgU2l6ZVR5cGUgbGVuLCBib29s
IGNvcHkpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE92ZXJyaWRlJj4oKnRoaXMpLlN0cmluZyhzdHIs
IGxlbiwgY29weSk7IH0KLSAgICBib29sIEVuZE9iamVjdChTaXplVHlwZSkgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8T3ZlcnJpZGUmPigqdGhpcykuRGVmYXVsdCgpOyB9Ci0gICAgYm9vbCBTdGFydEFy
cmF5KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcnJpZGUmPigqdGhpcykuRGVmYXVsdCgpOyB9
Ci0gICAgYm9vbCBFbmRBcnJheShTaXplVHlwZSkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcnJp
ZGUmPigqdGhpcykuRGVmYXVsdCgpOyB9Ci19OwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0v
LyBTdHJlYW1Mb2NhbENvcHkKLQotbmFtZXNwYWNlIGludGVybmFsIHsKLQotdGVtcGxhdGU8dHlw
ZW5hbWUgU3RyZWFtLCBpbnQgPSBTdHJlYW1UcmFpdHM8U3RyZWFtPjo6Y29weU9wdGltaXphdGlv
bj4KLWNsYXNzIFN0cmVhbUxvY2FsQ29weTsKLQotLy8hIERvIGNvcHkgb3B0aW1pemF0aW9uLgot
dGVtcGxhdGU8dHlwZW5hbWUgU3RyZWFtPgotY2xhc3MgU3RyZWFtTG9jYWxDb3B5PFN0cmVhbSwg
MT4gewotcHVibGljOgotICAgIFN0cmVhbUxvY2FsQ29weShTdHJlYW0mIG9yaWdpbmFsKSA6IHMo
b3JpZ2luYWwpLCBvcmlnaW5hbF8ob3JpZ2luYWwpIHt9Ci0gICAgflN0cmVhbUxvY2FsQ29weSgp
IHsgb3JpZ2luYWxfID0gczsgfQotCi0gICAgU3RyZWFtIHM7Ci0KLXByaXZhdGU6Ci0gICAgU3Ry
ZWFtTG9jYWxDb3B5JiBvcGVyYXRvcj0oY29uc3QgU3RyZWFtTG9jYWxDb3B5JikgLyogPSBkZWxl
dGUgKi87Ci0KLSAgICBTdHJlYW0mIG9yaWdpbmFsXzsKLX07Ci0KLS8vISBLZWVwIHJlZmVyZW5j
ZS4KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmVhbT4KLWNsYXNzIFN0cmVhbUxvY2FsQ29weTxTdHJl
YW0sIDA+IHsKLXB1YmxpYzoKLSAgICBTdHJlYW1Mb2NhbENvcHkoU3RyZWFtJiBvcmlnaW5hbCkg
OiBzKG9yaWdpbmFsKSB7fQotCi0gICAgU3RyZWFtJiBzOwotCi1wcml2YXRlOgotICAgIFN0cmVh
bUxvY2FsQ29weSYgb3BlcmF0b3I9KGNvbnN0IFN0cmVhbUxvY2FsQ29weSYpIC8qID0gZGVsZXRl
ICovOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwotLy8gU2tpcFdoaXRlc3BhY2UKLQotLy8hIFNraXAgdGhlIEpTT04gd2hpdGUgc3BhY2Vz
IGluIGEgc3RyZWFtLgotLyohIFxwYXJhbSBpcyBBIGlucHV0IHN0cmVhbSBmb3Igc2tpcHBpbmcg
d2hpdGUgc3BhY2VzLgotICAgIFxub3RlIFRoaXMgZnVuY3Rpb24gaGFzIFNTRTIvU1NFNC4yIHNw
ZWNpYWxpemF0aW9uLgotKi8KLXRlbXBsYXRlPHR5cGVuYW1lIElucHV0U3RyZWFtPgotdm9pZCBT
a2lwV2hpdGVzcGFjZShJbnB1dFN0cmVhbSYgaXMpIHsKLSAgICBpbnRlcm5hbDo6U3RyZWFtTG9j
YWxDb3B5PElucHV0U3RyZWFtPiBjb3B5KGlzKTsKLSAgICBJbnB1dFN0cmVhbSYgcyhjb3B5LnMp
OwotCi0gICAgd2hpbGUgKHMuUGVlaygpID09ICcgJyB8fCBzLlBlZWsoKSA9PSAnXG4nIHx8IHMu
UGVlaygpID09ICdccicgfHwgcy5QZWVrKCkgPT0gJ1x0JykKLSAgICAgICAgcy5UYWtlKCk7Ci19
Ci0KLSNpZmRlZiBSQVBJREpTT05fU1NFNDIKLS8vISBTa2lwIHdoaXRlc3BhY2Ugd2l0aCBTU0Ug
NC4yIHBjbXBpc3RybSBpbnN0cnVjdGlvbiwgdGVzdGluZyAxNiA4LWJ5dGUgY2hhcmFjdGVycyBh
dCBvbmNlLgotaW5saW5lIGNvbnN0IGNoYXIgKlNraXBXaGl0ZXNwYWNlX1NJTUQoY29uc3QgY2hh
ciogcCkgewotICAgIC8vIEZhc3QgcmV0dXJuIGZvciBzaW5nbGUgbm9uLXdoaXRlc3BhY2UKLSAg
ICBpZiAoKnAgPT0gJyAnIHx8ICpwID09ICdcbicgfHwgKnAgPT0gJ1xyJyB8fCAqcCA9PSAnXHQn
KQotICAgICAgICArK3A7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gcDsKLQotICAgIC8vIDE2
LWJ5dGUgYWxpZ24gdG8gdGhlIG5leHQgYm91bmRhcnkKLSAgICBjb25zdCBjaGFyKiBuZXh0QWxp
Z25lZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KChyZWludGVycHJldF9jYXN0PHNp
emVfdD4ocCkgKyAxNSkgJiB+MTUpOwotICAgIHdoaWxlIChwICE9IG5leHRBbGlnbmVkKQotICAg
ICAgICBpZiAoKnAgPT0gJyAnIHx8ICpwID09ICdcbicgfHwgKnAgPT0gJ1xyJyB8fCAqcCA9PSAn
XHQnKQotICAgICAgICAgICAgKytwOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4g
cDsKLQotICAgIC8vIFRoZSByZXN0IG9mIHN0cmluZyB1c2luZyBTSU1ECi0gICAgc3RhdGljIGNv
bnN0IGNoYXIgd2hpdGVzcGFjZVsxNl0gPSAiIFxuXHJcdCI7Ci0gICAgY29uc3QgX19tMTI4aSB3
ID0gX21tX2xvYWR1X3NpMTI4KChjb25zdCBfX20xMjhpICopJndoaXRlc3BhY2VbMF0pOwotCi0g
ICAgZm9yICg7OyBwICs9IDE2KSB7Ci0gICAgICAgIGNvbnN0IF9fbTEyOGkgcyA9IF9tbV9sb2Fk
X3NpMTI4KChjb25zdCBfX20xMjhpICopcCk7Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHIgPSBf
bW1fY3Z0c2kxMjhfc2kzMihfbW1fY21waXN0cm0odywgcywgX1NJRERfVUJZVEVfT1BTIHwgX1NJ
RERfQ01QX0VRVUFMX0FOWSB8IF9TSUREX0JJVF9NQVNLIHwgX1NJRERfTkVHQVRJVkVfUE9MQVJJ
VFkpKTsKLSAgICAgICAgaWYgKHIgIT0gMCkgeyAgIC8vIHNvbWUgb2YgY2hhcmFjdGVycyBpcyBu
b24td2hpdGVzcGFjZQotI2lmZGVmIF9NU0NfVkVSICAgICAgICAgLy8gRmluZCB0aGUgaW5kZXgg
b2YgZmlyc3Qgbm9uLXdoaXRlc3BhY2UKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgb2Zmc2V0
OwotICAgICAgICAgICAgX0JpdFNjYW5Gb3J3YXJkKCZvZmZzZXQsIHIpOwotICAgICAgICAgICAg
cmV0dXJuIHAgKyBvZmZzZXQ7Ci0jZWxzZQotICAgICAgICAgICAgcmV0dXJuIHAgKyBfX2J1aWx0
aW5fZmZzKHIpIC0gMTsKLSNlbmRpZgotICAgICAgICB9Ci0gICAgfQotfQotCi0jZWxpZiBkZWZp
bmVkKFJBUElESlNPTl9TU0UyKQotCi0vLyEgU2tpcCB3aGl0ZXNwYWNlIHdpdGggU1NFMiBpbnN0
cnVjdGlvbnMsIHRlc3RpbmcgMTYgOC1ieXRlIGNoYXJhY3RlcnMgYXQgb25jZS4KLWlubGluZSBj
b25zdCBjaGFyICpTa2lwV2hpdGVzcGFjZV9TSU1EKGNvbnN0IGNoYXIqIHApIHsKLSAgICAvLyBG
YXN0IHJldHVybiBmb3Igc2luZ2xlIG5vbi13aGl0ZXNwYWNlCi0gICAgaWYgKCpwID09ICcgJyB8
fCAqcCA9PSAnXG4nIHx8ICpwID09ICdccicgfHwgKnAgPT0gJ1x0JykKLSAgICAgICAgKytwOwot
ICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIHA7Ci0KLSAgICAvLyAxNi1ieXRlIGFsaWduIHRvIHRo
ZSBuZXh0IGJvdW5kYXJ5Ci0gICAgY29uc3QgY2hhciogbmV4dEFsaWduZWQgPSByZWludGVycHJl
dF9jYXN0PGNvbnN0IGNoYXIqPigocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KHApICsgMTUpICYg
fjE1KTsKLSAgICB3aGlsZSAocCAhPSBuZXh0QWxpZ25lZCkKLSAgICAgICAgaWYgKCpwID09ICcg
JyB8fCAqcCA9PSAnXG4nIHx8ICpwID09ICdccicgfHwgKnAgPT0gJ1x0JykKLSAgICAgICAgICAg
ICsrcDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIHA7Ci0KLSAgICAvLyBUaGUg
cmVzdCBvZiBzdHJpbmcKLSAgICBzdGF0aWMgY29uc3QgY2hhciB3aGl0ZXNwYWNlc1s0XVsxN10g
PSB7Ci0gICAgICAgICIgICAgICAgICAgICAgICAgIiwKLSAgICAgICAgIlxuXG5cblxuXG5cblxu
XG5cblxuXG5cblxuXG5cblxuIiwKLSAgICAgICAgIlxyXHJcclxyXHJcclxyXHJcclxyXHJcclxy
XHJcclxyIiwKLSAgICAgICAgIlx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0In07Ci0K
LSAgICAgICAgY29uc3QgX19tMTI4aSB3MCA9IF9tbV9sb2FkdV9zaTEyOCgoY29uc3QgX19tMTI4
aSAqKSZ3aGl0ZXNwYWNlc1swXVswXSk7Ci0gICAgICAgIGNvbnN0IF9fbTEyOGkgdzEgPSBfbW1f
bG9hZHVfc2kxMjgoKGNvbnN0IF9fbTEyOGkgKikmd2hpdGVzcGFjZXNbMV1bMF0pOwotICAgICAg
ICBjb25zdCBfX20xMjhpIHcyID0gX21tX2xvYWR1X3NpMTI4KChjb25zdCBfX20xMjhpICopJndo
aXRlc3BhY2VzWzJdWzBdKTsKLSAgICAgICAgY29uc3QgX19tMTI4aSB3MyA9IF9tbV9sb2FkdV9z
aTEyOCgoY29uc3QgX19tMTI4aSAqKSZ3aGl0ZXNwYWNlc1szXVswXSk7Ci0KLSAgICBmb3IgKDs7
IHAgKz0gMTYpIHsKLSAgICAgICAgY29uc3QgX19tMTI4aSBzID0gX21tX2xvYWRfc2kxMjgoKGNv
bnN0IF9fbTEyOGkgKilwKTsKLSAgICAgICAgX19tMTI4aSB4ID0gX21tX2NtcGVxX2VwaTgocywg
dzApOwotICAgICAgICB4ID0gX21tX29yX3NpMTI4KHgsIF9tbV9jbXBlcV9lcGk4KHMsIHcxKSk7
Ci0gICAgICAgIHggPSBfbW1fb3Jfc2kxMjgoeCwgX21tX2NtcGVxX2VwaTgocywgdzIpKTsKLSAg
ICAgICAgeCA9IF9tbV9vcl9zaTEyOCh4LCBfbW1fY21wZXFfZXBpOChzLCB3MykpOwotICAgICAg
ICB1bnNpZ25lZCBzaG9ydCByID0gKHVuc2lnbmVkIHNob3J0KX5fbW1fbW92ZW1hc2tfZXBpOCh4
KTsKLSAgICAgICAgaWYgKHIgIT0gMCkgeyAgIC8vIHNvbWUgb2YgY2hhcmFjdGVycyBtYXkgYmUg
bm9uLXdoaXRlc3BhY2UKLSNpZmRlZiBfTVNDX1ZFUiAgICAgICAgIC8vIEZpbmQgdGhlIGluZGV4
IG9mIGZpcnN0IG5vbi13aGl0ZXNwYWNlCi0gICAgICAgICAgICB1bnNpZ25lZCBsb25nIG9mZnNl
dDsKLSAgICAgICAgICAgIF9CaXRTY2FuRm9yd2FyZCgmb2Zmc2V0LCByKTsKLSAgICAgICAgICAg
IHJldHVybiBwICsgb2Zmc2V0OwotI2Vsc2UKLSAgICAgICAgICAgIHJldHVybiBwICsgX19idWls
dGluX2ZmcyhyKSAtIDE7Ci0jZW5kaWYKLSAgICAgICAgfQotICAgIH0KLX0KLQotI2VuZGlmIC8v
IFJBUElESlNPTl9TU0UyCi0KLSNpZmRlZiBSQVBJREpTT05fU0lNRAotLy8hIFRlbXBsYXRlIGZ1
bmN0aW9uIHNwZWNpYWxpemF0aW9uIGZvciBJbnNpdHVTdHJpbmdTdHJlYW0KLXRlbXBsYXRlPD4g
aW5saW5lIHZvaWQgU2tpcFdoaXRlc3BhY2UoSW5zaXR1U3RyaW5nU3RyZWFtJiBpcykgeyAKLSAg
ICBpcy5zcmNfID0gY29uc3RfY2FzdDxjaGFyKj4oU2tpcFdoaXRlc3BhY2VfU0lNRChpcy5zcmNf
KSk7Ci19Ci0KLS8vISBUZW1wbGF0ZSBmdW5jdGlvbiBzcGVjaWFsaXphdGlvbiBmb3IgU3RyaW5n
U3RyZWFtCi10ZW1wbGF0ZTw+IGlubGluZSB2b2lkIFNraXBXaGl0ZXNwYWNlKFN0cmluZ1N0cmVh
bSYgaXMpIHsKLSAgICBpcy5zcmNfID0gU2tpcFdoaXRlc3BhY2VfU0lNRChpcy5zcmNfKTsKLX0K
LSNlbmRpZiAvLyBSQVBJREpTT05fU0lNRAotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBH
ZW5lcmljUmVhZGVyCi0KLS8vISBTQVgtc3R5bGUgSlNPTiBwYXJzZXIuIFVzZSBccmVmIFJlYWRl
ciBmb3IgVVRGOCBlbmNvZGluZyBhbmQgZGVmYXVsdCBhbGxvY2F0b3IuCi0vKiEgR2VuZXJpY1Jl
YWRlciBwYXJzZXMgSlNPTiB0ZXh0IGZyb20gYSBzdHJlYW0sIGFuZCBzZW5kIGV2ZW50cyBzeW5j
aHJvbm91c2x5IHRvIGFuIAotICAgIG9iamVjdCBpbXBsZW1lbnRpbmcgSGFuZGxlciBjb25jZXB0
LgotCi0gICAgSXQgbmVlZHMgdG8gYWxsb2NhdGUgYSBzdGFjayBmb3Igc3RvcmluZyBhIHNpbmds
ZSBkZWNvZGVkIHN0cmluZyBkdXJpbmcgCi0gICAgbm9uLWRlc3RydWN0aXZlIHBhcnNpbmcuCi0K
LSAgICBGb3IgaW4tc2l0dSBwYXJzaW5nLCB0aGUgZGVjb2RlZCBzdHJpbmcgaXMgZGlyZWN0bHkg
d3JpdHRlbiB0byB0aGUgc291cmNlIAotICAgIHRleHQgc3RyaW5nLCBubyB0ZW1wb3JhcnkgYnVm
ZmVyIGlzIHJlcXVpcmVkLgotCi0gICAgQSBHZW5lcmljUmVhZGVyIG9iamVjdCBjYW4gYmUgcmV1
c2VkIGZvciBwYXJzaW5nIG11bHRpcGxlIEpTT04gdGV4dC4KLSAgICAKLSAgICBcdHBhcmFtIFNv
dXJjZUVuY29kaW5nIEVuY29kaW5nIG9mIHRoZSBpbnB1dCBzdHJlYW0uCi0gICAgXHRwYXJhbSBU
YXJnZXRFbmNvZGluZyBFbmNvZGluZyBvZiB0aGUgcGFyc2Ugb3V0cHV0LgotICAgIFx0cGFyYW0g
U3RhY2tBbGxvY2F0b3IgQWxsb2NhdG9yIHR5cGUgZm9yIHN0YWNrLgotKi8KLXRlbXBsYXRlIDx0
eXBlbmFtZSBTb3VyY2VFbmNvZGluZywgdHlwZW5hbWUgVGFyZ2V0RW5jb2RpbmcsIHR5cGVuYW1l
IFN0YWNrQWxsb2NhdG9yID0gQ3J0QWxsb2NhdG9yPgotY2xhc3MgR2VuZXJpY1JlYWRlciB7Ci1w
dWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBTb3VyY2VFbmNvZGluZzo6Q2ggQ2g7IC8vITwg
U291cmNlRW5jb2RpbmcgY2hhcmFjdGVyIHR5cGUKLQotICAgIC8vISBDb25zdHJ1Y3Rvci4KLSAg
ICAvKiEgXHBhcmFtIGFsbG9jYXRvciBPcHRpb25hbCBhbGxvY2F0b3IgZm9yIGFsbG9jYXRpbmcg
c3RhY2sgbWVtb3J5LiAoT25seSB1c2UgZm9yIG5vbi1kZXN0cnVjdGl2ZSBwYXJzaW5nKQotICAg
ICAgICBccGFyYW0gc3RhY2tDYXBhY2l0eSBzdGFjayBjYXBhY2l0eSBpbiBieXRlcyBmb3Igc3Rv
cmluZyBhIHNpbmdsZSBkZWNvZGVkIHN0cmluZy4gIChPbmx5IHVzZSBmb3Igbm9uLWRlc3RydWN0
aXZlIHBhcnNpbmcpCi0gICAgKi8KLSAgICBHZW5lcmljUmVhZGVyKFN0YWNrQWxsb2NhdG9yKiBz
dGFja0FsbG9jYXRvciA9IDAsIHNpemVfdCBzdGFja0NhcGFjaXR5ID0ga0RlZmF1bHRTdGFja0Nh
cGFjaXR5KSA6IHN0YWNrXyhzdGFja0FsbG9jYXRvciwgc3RhY2tDYXBhY2l0eSksIHBhcnNlUmVz
dWx0XygpIHt9Ci0KLSAgICAvLyEgUGFyc2UgSlNPTiB0ZXh0LgotICAgIC8qISBcdHBhcmFtIHBh
cnNlRmxhZ3MgQ29tYmluYXRpb24gb2YgXHJlZiBQYXJzZUZsYWcuCi0gICAgICAgIFx0cGFyYW0g
SW5wdXRTdHJlYW0gVHlwZSBvZiBpbnB1dCBzdHJlYW0sIGltcGxlbWVudGluZyBTdHJlYW0gY29u
Y2VwdC4KLSAgICAgICAgXHRwYXJhbSBIYW5kbGVyIFR5cGUgb2YgaGFuZGxlciwgaW1wbGVtZW50
aW5nIEhhbmRsZXIgY29uY2VwdC4KLSAgICAgICAgXHBhcmFtIGlzIElucHV0IHN0cmVhbSB0byBi
ZSBwYXJzZWQuCi0gICAgICAgIFxwYXJhbSBoYW5kbGVyIFRoZSBoYW5kbGVyIHRvIHJlY2VpdmUg
ZXZlbnRzLgotICAgICAgICBccmV0dXJuIFdoZXRoZXIgdGhlIHBhcnNpbmcgaXMgc3VjY2Vzc2Z1
bC4KLSAgICAqLwotICAgIHRlbXBsYXRlIDx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBJ
bnB1dFN0cmVhbSwgdHlwZW5hbWUgSGFuZGxlcj4KLSAgICBQYXJzZVJlc3VsdCBQYXJzZShJbnB1
dFN0cmVhbSYgaXMsIEhhbmRsZXImIGhhbmRsZXIpIHsKLSAgICAgICAgaWYgKHBhcnNlRmxhZ3Mg
JiBrUGFyc2VJdGVyYXRpdmVGbGFnKQotICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGl2ZVBhcnNl
PHBhcnNlRmxhZ3M+KGlzLCBoYW5kbGVyKTsKLQotICAgICAgICBwYXJzZVJlc3VsdF8uQ2xlYXIo
KTsKLQotICAgICAgICBDbGVhclN0YWNrT25FeGl0IHNjb3BlKCp0aGlzKTsKLQotICAgICAgICBT
a2lwV2hpdGVzcGFjZShpcyk7Ci0KLSAgICAgICAgaWYgKGlzLlBlZWsoKSA9PSAnXDAnKSB7Ci0g
ICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1JfTk9SRVRVUk4oa1BhcnNlRXJyb3JEb2N1
bWVudEVtcHR5LCBpcy5UZWxsKCkpOwotICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9S
X0VBUkxZX1JFVFVSTihwYXJzZVJlc3VsdF8pOwotICAgICAgICB9Ci0gICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgUGFyc2VWYWx1ZTxwYXJzZUZsYWdzPihpcywgaGFuZGxlcik7Ci0gICAgICAg
ICAgICBSQVBJREpTT05fUEFSU0VfRVJST1JfRUFSTFlfUkVUVVJOKHBhcnNlUmVzdWx0Xyk7Ci0K
LSAgICAgICAgICAgIGlmICghKHBhcnNlRmxhZ3MgJiBrUGFyc2VTdG9wV2hlbkRvbmVGbGFnKSkg
ewotICAgICAgICAgICAgICAgIFNraXBXaGl0ZXNwYWNlKGlzKTsKLQotICAgICAgICAgICAgICAg
IGlmIChpcy5QZWVrKCkgIT0gJ1wwJykgewotICAgICAgICAgICAgICAgICAgICBSQVBJREpTT05f
UEFSU0VfRVJST1JfTk9SRVRVUk4oa1BhcnNlRXJyb3JEb2N1bWVudFJvb3ROb3RTaW5ndWxhciwg
aXMuVGVsbCgpKTsKLSAgICAgICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SX0VB
UkxZX1JFVFVSTihwYXJzZVJlc3VsdF8pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBwYXJzZVJlc3VsdF87Ci0gICAgfQotCi0g
ICAgLy8hIFBhcnNlIEpTT04gdGV4dCAod2l0aCBccmVmIGtQYXJzZURlZmF1bHRGbGFncykKLSAg
ICAvKiEgXHRwYXJhbSBJbnB1dFN0cmVhbSBUeXBlIG9mIGlucHV0IHN0cmVhbSwgaW1wbGVtZW50
aW5nIFN0cmVhbSBjb25jZXB0Ci0gICAgICAgIFx0cGFyYW0gSGFuZGxlciBUeXBlIG9mIGhhbmRs
ZXIsIGltcGxlbWVudGluZyBIYW5kbGVyIGNvbmNlcHQuCi0gICAgICAgIFxwYXJhbSBpcyBJbnB1
dCBzdHJlYW0gdG8gYmUgcGFyc2VkLgotICAgICAgICBccGFyYW0gaGFuZGxlciBUaGUgaGFuZGxl
ciB0byByZWNlaXZlIGV2ZW50cy4KLSAgICAgICAgXHJldHVybiBXaGV0aGVyIHRoZSBwYXJzaW5n
IGlzIHN1Y2Nlc3NmdWwuCi0gICAgKi8KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRTdHJl
YW0sIHR5cGVuYW1lIEhhbmRsZXI+Ci0gICAgUGFyc2VSZXN1bHQgUGFyc2UoSW5wdXRTdHJlYW0m
IGlzLCBIYW5kbGVyJiBoYW5kbGVyKSB7Ci0gICAgICAgIHJldHVybiBQYXJzZTxrUGFyc2VEZWZh
dWx0RmxhZ3M+KGlzLCBoYW5kbGVyKTsKLSAgICB9Ci0KLSAgICAvLyEgV2hldGhlciBhIHBhcnNl
IGVycm9yIGhhcyBvY2N1cmVkIGluIHRoZSBsYXN0IHBhcnNpbmcuCi0gICAgYm9vbCBIYXNQYXJz
ZUVycm9yKCkgY29uc3QgeyByZXR1cm4gcGFyc2VSZXN1bHRfLklzRXJyb3IoKTsgfQotICAgIAot
ICAgIC8vISBHZXQgdGhlIFxyZWYgUGFyc2VFcnJvckNvZGUgb2YgbGFzdCBwYXJzaW5nLgotICAg
IFBhcnNlRXJyb3JDb2RlIEdldFBhcnNlRXJyb3JDb2RlKCkgY29uc3QgeyByZXR1cm4gcGFyc2VS
ZXN1bHRfLkNvZGUoKTsgfQotCi0gICAgLy8hIEdldCB0aGUgcG9zaXRpb24gb2YgbGFzdCBwYXJz
aW5nIGVycm9yIGluIGlucHV0LCAwIG90aGVyd2lzZS4KLSAgICBzaXplX3QgR2V0RXJyb3JPZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBwYXJzZVJlc3VsdF8uT2Zmc2V0KCk7IH0KLQotcHJvdGVjdGVk
OgotICAgIHZvaWQgU2V0UGFyc2VFcnJvcihQYXJzZUVycm9yQ29kZSBjb2RlLCBzaXplX3Qgb2Zm
c2V0KSB7IHBhcnNlUmVzdWx0Xy5TZXQoY29kZSwgb2Zmc2V0KTsgfQotCi1wcml2YXRlOgotICAg
IC8vIFByb2hpYml0IGNvcHkgY29uc3RydWN0b3IgJiBhc3NpZ25tZW50IG9wZXJhdG9yLgotICAg
IEdlbmVyaWNSZWFkZXIoY29uc3QgR2VuZXJpY1JlYWRlciYpOwotICAgIEdlbmVyaWNSZWFkZXIm
IG9wZXJhdG9yPShjb25zdCBHZW5lcmljUmVhZGVyJik7Ci0KLSAgICB2b2lkIENsZWFyU3RhY2so
KSB7IHN0YWNrXy5DbGVhcigpOyB9Ci0KLSAgICAvLyBjbGVhciBzdGFjayBvbiBhbnkgZXhpdCBm
cm9tIFBhcnNlU3RyZWFtLCBlLmcuIGR1ZSB0byBleGNlcHRpb24KLSAgICBzdHJ1Y3QgQ2xlYXJT
dGFja09uRXhpdCB7Ci0gICAgICAgIGV4cGxpY2l0IENsZWFyU3RhY2tPbkV4aXQoR2VuZXJpY1Jl
YWRlciYgcikgOiByXyhyKSB7fQotICAgICAgICB+Q2xlYXJTdGFja09uRXhpdCgpIHsgcl8uQ2xl
YXJTdGFjaygpOyB9Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgR2VuZXJpY1JlYWRlciYgcl87Ci0g
ICAgICAgIENsZWFyU3RhY2tPbkV4aXQoY29uc3QgQ2xlYXJTdGFja09uRXhpdCYpOwotICAgICAg
ICBDbGVhclN0YWNrT25FeGl0JiBvcGVyYXRvcj0oY29uc3QgQ2xlYXJTdGFja09uRXhpdCYpOwot
ICAgIH07Ci0KLSAgICAvLyBQYXJzZSBvYmplY3Q6IHsgc3RyaW5nIDogdmFsdWUsIC4uLiB9Ci0g
ICAgdGVtcGxhdGU8dW5zaWduZWQgcGFyc2VGbGFncywgdHlwZW5hbWUgSW5wdXRTdHJlYW0sIHR5
cGVuYW1lIEhhbmRsZXI+Ci0gICAgdm9pZCBQYXJzZU9iamVjdChJbnB1dFN0cmVhbSYgaXMsIEhh
bmRsZXImIGhhbmRsZXIpIHsKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVChpcy5QZWVrKCkgPT0g
J3snKTsKLSAgICAgICAgaXMuVGFrZSgpOyAgLy8gU2tpcCAneycKLSAgICAgICAgCi0gICAgICAg
IGlmICghaGFuZGxlci5TdGFydE9iamVjdCgpKQotICAgICAgICAgICAgUkFQSURKU09OX1BBUlNF
X0VSUk9SKGtQYXJzZUVycm9yVGVybWluYXRpb24sIGlzLlRlbGwoKSk7Ci0KLSAgICAgICAgU2tp
cFdoaXRlc3BhY2UoaXMpOwotCi0gICAgICAgIGlmIChpcy5QZWVrKCkgPT0gJ30nKSB7Ci0gICAg
ICAgICAgICBpcy5UYWtlKCk7Ci0gICAgICAgICAgICBpZiAoIWhhbmRsZXIuRW5kT2JqZWN0KDAp
KSAgLy8gZW1wdHkgb2JqZWN0Ci0gICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9S
KGtQYXJzZUVycm9yVGVybWluYXRpb24sIGlzLlRlbGwoKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKFNpemVUeXBlIG1lbWJlckNvdW50ID0gMDs7KSB7
Ci0gICAgICAgICAgICBpZiAoaXMuUGVlaygpICE9ICciJykKLSAgICAgICAgICAgICAgICBSQVBJ
REpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JPYmplY3RNaXNzTmFtZSwgaXMuVGVsbCgpKTsK
LQotICAgICAgICAgICAgUGFyc2VTdHJpbmc8cGFyc2VGbGFncz4oaXMsIGhhbmRsZXIsIHRydWUp
OwotICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SX0VBUkxZX1JFVFVSTl9WT0lEOwot
Ci0gICAgICAgICAgICBTa2lwV2hpdGVzcGFjZShpcyk7Ci0KLSAgICAgICAgICAgIGlmIChpcy5U
YWtlKCkgIT0gJzonKQotICAgICAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFy
c2VFcnJvck9iamVjdE1pc3NDb2xvbiwgaXMuVGVsbCgpKTsKLQotICAgICAgICAgICAgU2tpcFdo
aXRlc3BhY2UoaXMpOwotCi0gICAgICAgICAgICBQYXJzZVZhbHVlPHBhcnNlRmxhZ3M+KGlzLCBo
YW5kbGVyKTsKLSAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUl9FQVJMWV9SRVRVUk5f
Vk9JRDsKLQotICAgICAgICAgICAgU2tpcFdoaXRlc3BhY2UoaXMpOwotCi0gICAgICAgICAgICAr
K21lbWJlckNvdW50OwotCi0gICAgICAgICAgICBzd2l0Y2ggKGlzLlRha2UoKSkgewotICAgICAg
ICAgICAgICAgIGNhc2UgJywnOiBTa2lwV2hpdGVzcGFjZShpcyk7IGJyZWFrOwotICAgICAgICAg
ICAgICAgIGNhc2UgJ30nOiAKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFoYW5kbGVyLkVuZE9i
amVjdChtZW1iZXJDb3VudCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFS
U0VfRVJST1Ioa1BhcnNlRXJyb3JUZXJtaW5hdGlvbiwgaXMuVGVsbCgpKTsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICBSQVBJREpTT05fUEFS
U0VfRVJST1Ioa1BhcnNlRXJyb3JPYmplY3RNaXNzQ29tbWFPckN1cmx5QnJhY2tldCwgaXMuVGVs
bCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFBhcnNlIGFy
cmF5OiBbIHZhbHVlLCAuLi4gXQotICAgIHRlbXBsYXRlPHVuc2lnbmVkIHBhcnNlRmxhZ3MsIHR5
cGVuYW1lIElucHV0U3RyZWFtLCB0eXBlbmFtZSBIYW5kbGVyPgotICAgIHZvaWQgUGFyc2VBcnJh
eShJbnB1dFN0cmVhbSYgaXMsIEhhbmRsZXImIGhhbmRsZXIpIHsKLSAgICAgICAgUkFQSURKU09O
X0FTU0VSVChpcy5QZWVrKCkgPT0gJ1snKTsKLSAgICAgICAgaXMuVGFrZSgpOyAgLy8gU2tpcCAn
WycKLSAgICAgICAgCi0gICAgICAgIGlmICghaGFuZGxlci5TdGFydEFycmF5KCkpCi0gICAgICAg
ICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JUZXJtaW5hdGlvbiwgaXMuVGVs
bCgpKTsKLSAgICAgICAgCi0gICAgICAgIFNraXBXaGl0ZXNwYWNlKGlzKTsKLQotICAgICAgICBp
ZiAoaXMuUGVlaygpID09ICddJykgewotICAgICAgICAgICAgaXMuVGFrZSgpOwotICAgICAgICAg
ICAgaWYgKCFoYW5kbGVyLkVuZEFycmF5KDApKSAvLyBlbXB0eSBhcnJheQotICAgICAgICAgICAg
ICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvclRlcm1pbmF0aW9uLCBpcy5UZWxs
KCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChTaXpl
VHlwZSBlbGVtZW50Q291bnQgPSAwOzspIHsKLSAgICAgICAgICAgIFBhcnNlVmFsdWU8cGFyc2VG
bGFncz4oaXMsIGhhbmRsZXIpOwotICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SX0VB
UkxZX1JFVFVSTl9WT0lEOwotCi0gICAgICAgICAgICArK2VsZW1lbnRDb3VudDsKLSAgICAgICAg
ICAgIFNraXBXaGl0ZXNwYWNlKGlzKTsKLQotICAgICAgICAgICAgc3dpdGNoIChpcy5UYWtlKCkp
IHsKLSAgICAgICAgICAgICAgICBjYXNlICcsJzogU2tpcFdoaXRlc3BhY2UoaXMpOyBicmVhazsK
LSAgICAgICAgICAgICAgICBjYXNlICddJzogCi0gICAgICAgICAgICAgICAgICAgIGlmICghaGFu
ZGxlci5FbmRBcnJheShlbGVtZW50Q291bnQpKQotICAgICAgICAgICAgICAgICAgICAgICAgUkFQ
SURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yVGVybWluYXRpb24sIGlzLlRlbGwoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OiAgUkFQ
SURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yQXJyYXlNaXNzQ29tbWFPclNxdWFyZUJyYWNr
ZXQsIGlzLlRlbGwoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0
ZW1wbGF0ZTx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBJbnB1dFN0cmVhbSwgdHlwZW5h
bWUgSGFuZGxlcj4KLSAgICB2b2lkIFBhcnNlTnVsbChJbnB1dFN0cmVhbSYgaXMsIEhhbmRsZXIm
IGhhbmRsZXIpIHsKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVChpcy5QZWVrKCkgPT0gJ24nKTsK
LSAgICAgICAgaXMuVGFrZSgpOwotCi0gICAgICAgIGlmIChpcy5UYWtlKCkgPT0gJ3UnICYmIGlz
LlRha2UoKSA9PSAnbCcgJiYgaXMuVGFrZSgpID09ICdsJykgewotICAgICAgICAgICAgaWYgKCFo
YW5kbGVyLk51bGwoKSkKLSAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1Bh
cnNlRXJyb3JUZXJtaW5hdGlvbiwgaXMuVGVsbCgpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JWYWx1ZUludmFs
aWQsIGlzLlRlbGwoKSAtIDEpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHVuc2lnbmVkIHBhcnNl
RmxhZ3MsIHR5cGVuYW1lIElucHV0U3RyZWFtLCB0eXBlbmFtZSBIYW5kbGVyPgotICAgIHZvaWQg
UGFyc2VUcnVlKElucHV0U3RyZWFtJiBpcywgSGFuZGxlciYgaGFuZGxlcikgewotICAgICAgICBS
QVBJREpTT05fQVNTRVJUKGlzLlBlZWsoKSA9PSAndCcpOwotICAgICAgICBpcy5UYWtlKCk7Ci0K
LSAgICAgICAgaWYgKGlzLlRha2UoKSA9PSAncicgJiYgaXMuVGFrZSgpID09ICd1JyAmJiBpcy5U
YWtlKCkgPT0gJ2UnKSB7Ci0gICAgICAgICAgICBpZiAoIWhhbmRsZXIuQm9vbCh0cnVlKSkKLSAg
ICAgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JUZXJtaW5hdGlv
biwgaXMuVGVsbCgpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBSQVBJ
REpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JWYWx1ZUludmFsaWQsIGlzLlRlbGwoKSAtIDEp
OwotICAgIH0KLQotICAgIHRlbXBsYXRlPHVuc2lnbmVkIHBhcnNlRmxhZ3MsIHR5cGVuYW1lIElu
cHV0U3RyZWFtLCB0eXBlbmFtZSBIYW5kbGVyPgotICAgIHZvaWQgUGFyc2VGYWxzZShJbnB1dFN0
cmVhbSYgaXMsIEhhbmRsZXImIGhhbmRsZXIpIHsKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVChp
cy5QZWVrKCkgPT0gJ2YnKTsKLSAgICAgICAgaXMuVGFrZSgpOwotCi0gICAgICAgIGlmIChpcy5U
YWtlKCkgPT0gJ2EnICYmIGlzLlRha2UoKSA9PSAnbCcgJiYgaXMuVGFrZSgpID09ICdzJyAmJiBp
cy5UYWtlKCkgPT0gJ2UnKSB7Ci0gICAgICAgICAgICBpZiAoIWhhbmRsZXIuQm9vbChmYWxzZSkp
Ci0gICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yVGVybWlu
YXRpb24sIGlzLlRlbGwoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
UkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yVmFsdWVJbnZhbGlkLCBpcy5UZWxsKCkg
LSAxKTsKLSAgICB9Ci0KLSAgICAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gcGFyc2UgZm91ciBoZXhp
ZGVjaW1hbCBkaWdpdHMgaW4gXHVYWFhYIGluIFBhcnNlU3RyaW5nKCkuCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgSW5wdXRTdHJlYW0+Ci0gICAgdW5zaWduZWQgUGFyc2VIZXg0KElucHV0U3RyZWFt
JiBpcykgewotICAgICAgICB1bnNpZ25lZCBjb2RlcG9pbnQgPSAwOwotICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDQ7IGkrKykgewotICAgICAgICAgICAgQ2ggYyA9IGlzLlRha2UoKTsKLSAg
ICAgICAgICAgIGNvZGVwb2ludCA8PD0gNDsKLSAgICAgICAgICAgIGNvZGVwb2ludCArPSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oYyk7Ci0gICAgICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAn
OScpCi0gICAgICAgICAgICAgICAgY29kZXBvaW50IC09ICcwJzsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGMgPj0gJ0EnICYmIGMgPD0gJ0YnKQotICAgICAgICAgICAgICAgIGNvZGVwb2ludCAtPSAn
QScgLSAxMDsKLSAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKQotICAg
ICAgICAgICAgICAgIGNvZGVwb2ludCAtPSAnYScgLSAxMDsKLSAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUl9OT1JFVFVSTihrUGFyc2VFcnJv
clN0cmluZ1VuaWNvZGVFc2NhcGVJbnZhbGlkSGV4LCBpcy5UZWxsKCkgLSAxKTsKLSAgICAgICAg
ICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1JfRUFSTFlfUkVUVVJOKDApOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBjb2RlcG9pbnQ7Ci0gICAgfQotCi0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPgotICAgIGNsYXNzIFN0YWNrU3RyZWFtIHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgQ2hhclR5cGUgQ2g7Ci0KLSAgICAgICAgU3RhY2tT
dHJlYW0oaW50ZXJuYWw6OlN0YWNrPFN0YWNrQWxsb2NhdG9yPiYgc3RhY2spIDogc3RhY2tfKHN0
YWNrKSwgbGVuZ3RoXygwKSB7fQotICAgICAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgdm9pZCBQ
dXQoQ2ggYykgewotICAgICAgICAgICAgKnN0YWNrXy50ZW1wbGF0ZSBQdXNoPENoPigpID0gYzsK
LSAgICAgICAgICAgICsrbGVuZ3RoXzsKLSAgICAgICAgfQotICAgICAgICBzaXplX3QgTGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbGVuZ3RoXzsgfQotICAgICAgICBDaCogUG9wKCkgewotICAgICAg
ICAgICAgcmV0dXJuIHN0YWNrXy50ZW1wbGF0ZSBQb3A8Q2g+KGxlbmd0aF8pOwotICAgICAgICB9
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBTdGFja1N0cmVhbShjb25zdCBTdGFja1N0cmVhbSYp
OwotICAgICAgICBTdGFja1N0cmVhbSYgb3BlcmF0b3I9KGNvbnN0IFN0YWNrU3RyZWFtJik7Ci0K
LSAgICAgICAgaW50ZXJuYWw6OlN0YWNrPFN0YWNrQWxsb2NhdG9yPiYgc3RhY2tfOwotICAgICAg
ICBTaXplVHlwZSBsZW5ndGhfOwotICAgIH07Ci0KLSAgICAvLyBQYXJzZSBzdHJpbmcgYW5kIGdl
bmVyYXRlIFN0cmluZyBldmVudC4gRGlmZmVyZW50IGNvZGUgcGF0aHMgZm9yIGtQYXJzZUluc2l0
dUZsYWcuCi0gICAgdGVtcGxhdGU8dW5zaWduZWQgcGFyc2VGbGFncywgdHlwZW5hbWUgSW5wdXRT
dHJlYW0sIHR5cGVuYW1lIEhhbmRsZXI+Ci0gICAgdm9pZCBQYXJzZVN0cmluZyhJbnB1dFN0cmVh
bSYgaXMsIEhhbmRsZXImIGhhbmRsZXIsIGJvb2wgaXNLZXkgPSBmYWxzZSkgewotICAgICAgICBp
bnRlcm5hbDo6U3RyZWFtTG9jYWxDb3B5PElucHV0U3RyZWFtPiBjb3B5KGlzKTsKLSAgICAgICAg
SW5wdXRTdHJlYW0mIHMoY29weS5zKTsKLQotICAgICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsK
LSAgICAgICAgaWYgKHBhcnNlRmxhZ3MgJiBrUGFyc2VJbnNpdHVGbGFnKSB7Ci0gICAgICAgICAg
ICB0eXBlbmFtZSBJbnB1dFN0cmVhbTo6Q2ggKmhlYWQgPSBzLlB1dEJlZ2luKCk7Ci0gICAgICAg
ICAgICBQYXJzZVN0cmluZ1RvU3RyZWFtPHBhcnNlRmxhZ3MsIFNvdXJjZUVuY29kaW5nLCBTb3Vy
Y2VFbmNvZGluZz4ocywgcyk7Ci0gICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1JfRUFS
TFlfUkVUVVJOX1ZPSUQ7Ci0gICAgICAgICAgICBzaXplX3QgbGVuZ3RoID0gcy5QdXRFbmQoaGVh
ZCkgLSAxOwotICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChsZW5ndGggPD0gMHhGRkZGRkZG
Rik7Ci0gICAgICAgICAgICBjb25zdCB0eXBlbmFtZSBUYXJnZXRFbmNvZGluZzo6Q2gqIGNvbnN0
IHN0ciA9ICh0eXBlbmFtZSBUYXJnZXRFbmNvZGluZzo6Q2gqKWhlYWQ7Ci0gICAgICAgICAgICBz
dWNjZXNzID0gKGlzS2V5ID8gaGFuZGxlci5LZXkoc3RyLCBTaXplVHlwZShsZW5ndGgpLCBmYWxz
ZSkgOiBoYW5kbGVyLlN0cmluZyhzdHIsIFNpemVUeXBlKGxlbmd0aCksIGZhbHNlKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBTdGFja1N0cmVhbTx0eXBlbmFtZSBU
YXJnZXRFbmNvZGluZzo6Q2g+IHN0YWNrU3RyZWFtKHN0YWNrXyk7Ci0gICAgICAgICAgICBQYXJz
ZVN0cmluZ1RvU3RyZWFtPHBhcnNlRmxhZ3MsIFNvdXJjZUVuY29kaW5nLCBUYXJnZXRFbmNvZGlu
Zz4ocywgc3RhY2tTdHJlYW0pOwotICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SX0VB
UkxZX1JFVFVSTl9WT0lEOwotICAgICAgICAgICAgU2l6ZVR5cGUgbGVuZ3RoID0gc3RhdGljX2Nh
c3Q8U2l6ZVR5cGU+KHN0YWNrU3RyZWFtLkxlbmd0aCgpKSAtIDE7Ci0gICAgICAgICAgICBjb25z
dCB0eXBlbmFtZSBUYXJnZXRFbmNvZGluZzo6Q2gqIGNvbnN0IHN0ciA9IHN0YWNrU3RyZWFtLlBv
cCgpOwotICAgICAgICAgICAgc3VjY2VzcyA9IChpc0tleSA/IGhhbmRsZXIuS2V5KHN0ciwgbGVu
Z3RoLCB0cnVlKSA6IGhhbmRsZXIuU3RyaW5nKHN0ciwgbGVuZ3RoLCB0cnVlKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKCFzdWNjZXNzKQotICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VS
Uk9SKGtQYXJzZUVycm9yVGVybWluYXRpb24sIHMuVGVsbCgpKTsKLSAgICB9Ci0KLSAgICAvLyBQ
YXJzZSBzdHJpbmcgdG8gYW4gb3V0cHV0IGlzCi0gICAgLy8gVGhpcyBmdW5jdGlvbiBoYW5kbGVz
IHRoZSBwcmVmaXgvc3VmZml4IGRvdWJsZSBxdW90ZXMsIGVzY2FwaW5nLCBhbmQgb3B0aW9uYWwg
ZW5jb2RpbmcgdmFsaWRhdGlvbi4KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0
eXBlbmFtZSBTRW5jb2RpbmcsIHR5cGVuYW1lIFRFbmNvZGluZywgdHlwZW5hbWUgSW5wdXRTdHJl
YW0sIHR5cGVuYW1lIE91dHB1dFN0cmVhbT4KLSAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgdm9p
ZCBQYXJzZVN0cmluZ1RvU3RyZWFtKElucHV0U3RyZWFtJiBpcywgT3V0cHV0U3RyZWFtJiBvcykg
ewotLy8hQGNvbmQgUkFQSURKU09OX0hJRERFTl9GUk9NX0RPWFlHRU4KLSNkZWZpbmUgWjE2IDAs
MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAKLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIg
ZXNjYXBlWzI1Nl0gPSB7Ci0gICAgICAgICAgICBaMTYsIFoxNiwgMCwgMCwnXCInLCAwLCAwLCAw
LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCcvJywgCi0gICAgICAgICAgICBaMTYsIFoxNiwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwnXFwnLCAwLCAwLCAwLCAKLSAgICAg
ICAgICAgIDAsIDAsJ1xiJywgMCwgMCwgMCwnXGYnLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCdcbics
IDAsIAotICAgICAgICAgICAgMCwgMCwnXHInLCAwLCdcdCcsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIAotICAgICAgICAgICAgWjE2LCBaMTYsIFoxNiwgWjE2LCBaMTYsIFoxNiwg
WjE2LCBaMTYKLSAgICAgICAgfTsKLSN1bmRlZiBaMTYKLS8vIUBlbmRjb25kCi0KLSAgICAgICAg
UkFQSURKU09OX0FTU0VSVChpcy5QZWVrKCkgPT0gJ1wiJyk7Ci0gICAgICAgIGlzLlRha2UoKTsg
IC8vIFNraXAgJ1wiJwotCi0gICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgIENoIGMgPSBp
cy5QZWVrKCk7Ci0gICAgICAgICAgICBpZiAoYyA9PSAnXFwnKSB7ICAgIC8vIEVzY2FwZQotICAg
ICAgICAgICAgICAgIGlzLlRha2UoKTsKLSAgICAgICAgICAgICAgICBDaCBlID0gaXMuVGFrZSgp
OwotICAgICAgICAgICAgICAgIGlmICgoc2l6ZW9mKENoKSA9PSAxIHx8IHVuc2lnbmVkKGUpIDwg
MjU2KSAmJiBlc2NhcGVbKHVuc2lnbmVkIGNoYXIpZV0pIHsKLSAgICAgICAgICAgICAgICAgICAg
b3MuUHV0KGVzY2FwZVsodW5zaWduZWQgY2hhcillXSk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGUgPT0gJ3UnKSB7ICAgIC8vIFVuaWNvZGUKLSAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY29kZXBvaW50ID0gUGFyc2VIZXg0KGlzKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKGNvZGVwb2ludCA+PSAweEQ4MDAgJiYgY29kZXBvaW50IDw9IDB4REJG
RikgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIFVURi0xNiBzdXJyb2dhdGUg
cGFpcgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzLlRha2UoKSAhPSAnXFwnIHx8IGlz
LlRha2UoKSAhPSAndScpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUkFQSURKU09OX1BB
UlNFX0VSUk9SKGtQYXJzZUVycm9yU3RyaW5nVW5pY29kZVN1cnJvZ2F0ZUludmFsaWQsIGlzLlRl
bGwoKSAtIDIpOwotICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29kZXBvaW50MiA9
IFBhcnNlSGV4NChpcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29kZXBvaW50MiA8
IDB4REMwMCB8fCBjb2RlcG9pbnQyID4gMHhERkZGKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvclN0cmluZ1VuaWNvZGVTdXJyb2dh
dGVJbnZhbGlkLCBpcy5UZWxsKCkgLSAyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVw
b2ludCA9ICgoKGNvZGVwb2ludCAtIDB4RDgwMCkgPDwgMTApIHwgKGNvZGVwb2ludDIgLSAweERD
MDApKSArIDB4MTAwMDA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgVEVuY29kaW5nOjpFbmNvZGUob3MsIGNvZGVwb2ludCk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNF
X0VSUk9SKGtQYXJzZUVycm9yU3RyaW5nRXNjYXBlSW52YWxpZCwgaXMuVGVsbCgpIC0gMSk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09ICciJykgeyAgICAvLyBDbG9z
aW5nIGRvdWJsZSBxdW90ZQotICAgICAgICAgICAgICAgIGlzLlRha2UoKTsKLSAgICAgICAgICAg
ICAgICBvcy5QdXQoJ1wwJyk7ICAgLy8gbnVsbC10ZXJtaW5hdGUgdGhlIHN0cmluZwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGMg
PT0gJ1wwJykKLSAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJy
b3JTdHJpbmdNaXNzUXVvdGF0aW9uTWFyaywgaXMuVGVsbCgpIC0gMSk7Ci0gICAgICAgICAgICBl
bHNlIGlmICgodW5zaWduZWQpYyA8IDB4MjApIC8vIFJGQyA0NjI3OiB1bmVzY2FwZWQgPSAleDIw
LTIxIC8gJXgyMy01QiAvICV4NUQtMTBGRkZGCi0gICAgICAgICAgICAgICAgUkFQSURKU09OX1BB
UlNFX0VSUk9SKGtQYXJzZUVycm9yU3RyaW5nRXNjYXBlSW52YWxpZCwgaXMuVGVsbCgpIC0gMSk7
Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAocGFyc2VGbGFncyAmIGtQ
YXJzZVZhbGlkYXRlRW5jb2RpbmdGbGFnID8gCi0gICAgICAgICAgICAgICAgICAgICFUcmFuc2Nv
ZGVyPFNFbmNvZGluZywgVEVuY29kaW5nPjo6VmFsaWRhdGUoaXMsIG9zKSA6IAotICAgICAgICAg
ICAgICAgICAgICAhVHJhbnNjb2RlcjxTRW5jb2RpbmcsIFRFbmNvZGluZz46OlRyYW5zY29kZShp
cywgb3MpKQotICAgICAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNl
RXJyb3JTdHJpbmdJbnZhbGlkRW5jb2RpbmcsIGlzLlRlbGwoKSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dFN0cmVhbSwgYm9v
bCBiYWNrdXA+Ci0gICAgY2xhc3MgTnVtYmVyU3RyZWFtIHt9OwotCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgSW5wdXRTdHJlYW0+Ci0gICAgY2xhc3MgTnVtYmVyU3RyZWFtPElucHV0U3RyZWFtLCBm
YWxzZT4gewotICAgIHB1YmxpYzoKLSAgICAgICAgTnVtYmVyU3RyZWFtKEdlbmVyaWNSZWFkZXIm
IHJlYWRlciwgSW5wdXRTdHJlYW0mIGlzKSA6IGlzKGlzKSB7ICh2b2lkKXJlYWRlcjsgIH0KLSAg
ICAgICAgfk51bWJlclN0cmVhbSgpIHt9Ci0KLSAgICAgICAgUkFQSURKU09OX0ZPUkNFSU5MSU5F
IENoIFBlZWsoKSBjb25zdCB7IHJldHVybiBpcy5QZWVrKCk7IH0KLSAgICAgICAgUkFQSURKU09O
X0ZPUkNFSU5MSU5FIENoIFRha2VQdXNoKCkgeyByZXR1cm4gaXMuVGFrZSgpOyB9Ci0gICAgICAg
IFJBUElESlNPTl9GT1JDRUlOTElORSBDaCBUYWtlKCkgeyByZXR1cm4gaXMuVGFrZSgpOyB9Ci0g
ICAgICAgIHNpemVfdCBUZWxsKCkgeyByZXR1cm4gaXMuVGVsbCgpOyB9Ci0gICAgICAgIHNpemVf
dCBMZW5ndGgoKSB7IHJldHVybiAwOyB9Ci0gICAgICAgIGNvbnN0IGNoYXIqIFBvcCgpIHsgcmV0
dXJuIDA7IH0KLQotICAgIHByb3RlY3RlZDoKLSAgICAgICAgTnVtYmVyU3RyZWFtJiBvcGVyYXRv
cj0oY29uc3QgTnVtYmVyU3RyZWFtJik7Ci0KLSAgICAgICAgSW5wdXRTdHJlYW0mIGlzOwotICAg
IH07Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dFN0cmVhbT4KLSAgICBjbGFzcyBOdW1i
ZXJTdHJlYW08SW5wdXRTdHJlYW0sIHRydWU+IDogcHVibGljIE51bWJlclN0cmVhbTxJbnB1dFN0
cmVhbSwgZmFsc2U+IHsKLSAgICAgICAgdHlwZWRlZiBOdW1iZXJTdHJlYW08SW5wdXRTdHJlYW0s
IGZhbHNlPiBCYXNlOwotICAgIHB1YmxpYzoKLSAgICAgICAgTnVtYmVyU3RyZWFtKEdlbmVyaWNS
ZWFkZXImIHJlYWRlciwgSW5wdXRTdHJlYW0mIGlzKSA6IE51bWJlclN0cmVhbTxJbnB1dFN0cmVh
bSwgZmFsc2U+KHJlYWRlciwgaXMpLCBzdGFja1N0cmVhbShyZWFkZXIuc3RhY2tfKSB7fQotICAg
ICAgICB+TnVtYmVyU3RyZWFtKCkge30KLQotICAgICAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUg
Q2ggVGFrZVB1c2goKSB7Ci0gICAgICAgICAgICBzdGFja1N0cmVhbS5QdXQoKGNoYXIpQmFzZTo6
aXMuUGVlaygpKTsKLSAgICAgICAgICAgIHJldHVybiBCYXNlOjppcy5UYWtlKCk7Ci0gICAgICAg
IH0KLQotICAgICAgICBzaXplX3QgTGVuZ3RoKCkgeyByZXR1cm4gc3RhY2tTdHJlYW0uTGVuZ3Ro
KCk7IH0KLQotICAgICAgICBjb25zdCBjaGFyKiBQb3AoKSB7Ci0gICAgICAgICAgICBzdGFja1N0
cmVhbS5QdXQoJ1wwJyk7Ci0gICAgICAgICAgICByZXR1cm4gc3RhY2tTdHJlYW0uUG9wKCk7Ci0g
ICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFN0YWNrU3RyZWFtPGNoYXI+IHN0YWNr
U3RyZWFtOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBl
bmFtZSBJbnB1dFN0cmVhbSwgdHlwZW5hbWUgSGFuZGxlcj4KLSAgICB2b2lkIFBhcnNlTnVtYmVy
KElucHV0U3RyZWFtJiBpcywgSGFuZGxlciYgaGFuZGxlcikgewotICAgICAgICBpbnRlcm5hbDo6
U3RyZWFtTG9jYWxDb3B5PElucHV0U3RyZWFtPiBjb3B5KGlzKTsKLSAgICAgICAgTnVtYmVyU3Ry
ZWFtPElucHV0U3RyZWFtLCAocGFyc2VGbGFncyAmIGtQYXJzZUZ1bGxQcmVjaXNpb25GbGFnKSAh
PSAwPiBzKCp0aGlzLCBjb3B5LnMpOwotCi0gICAgICAgIC8vIFBhcnNlIG1pbnVzCi0gICAgICAg
IGJvb2wgbWludXMgPSBmYWxzZTsKLSAgICAgICAgaWYgKHMuUGVlaygpID09ICctJykgewotICAg
ICAgICAgICAgbWludXMgPSB0cnVlOwotICAgICAgICAgICAgcy5UYWtlKCk7Ci0gICAgICAgIH0K
LQotICAgICAgICAvLyBQYXJzZSBpbnQ6IHplcm8gLyAoIGRpZ2l0MS05ICpESUdJVCApCi0gICAg
ICAgIHVuc2lnbmVkIGkgPSAwOwotICAgICAgICB1aW50NjRfdCBpNjQgPSAwOwotICAgICAgICBi
b29sIHVzZTY0Yml0ID0gZmFsc2U7Ci0gICAgICAgIGludCBzaWduaWZpY2FuZERpZ2l0ID0gMDsK
LSAgICAgICAgaWYgKHMuUGVlaygpID09ICcwJykgewotICAgICAgICAgICAgaSA9IDA7Ci0gICAg
ICAgICAgICBzLlRha2VQdXNoKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAocy5QZWVr
KCkgPj0gJzEnICYmIHMuUGVlaygpIDw9ICc5JykgewotICAgICAgICAgICAgaSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihzLlRha2VQdXNoKCkgLSAnMCcpOwotCi0gICAgICAgICAgICBpZiAobWlu
dXMpCi0gICAgICAgICAgICAgICAgd2hpbGUgKHMuUGVlaygpID49ICcwJyAmJiBzLlBlZWsoKSA8
PSAnOScpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj0gMjE0NzQ4MzY0KSB7IC8vIDJe
MzEgPSAyMTQ3NDgzNjQ4Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSAhPSAyMTQ3NDgz
NjQgfHwgcy5QZWVrKCkgPiAnOCcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpNjQg
PSBpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZTY0Yml0ID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpID0gaSAqIDEwICsg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHMuVGFrZVB1c2goKSAtICcwJyk7Ci0gICAgICAgICAgICAg
ICAgICAgIHNpZ25pZmljYW5kRGlnaXQrKzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgd2hpbGUgKHMuUGVlaygpID49ICcwJyAmJiBzLlBlZWso
KSA8PSAnOScpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj0gNDI5NDk2NzI5KSB7IC8v
IDJeMzIgLSAxID0gNDI5NDk2NzI5NQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgIT0g
NDI5NDk2NzI5IHx8IHMuUGVlaygpID4gJzUnKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaTY0ID0gaTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2U2NGJpdCA9IHRydWU7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaSA9IGkg
KiAxMCArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLlRha2VQdXNoKCkgLSAnMCcpOwotICAgICAg
ICAgICAgICAgICAgICBzaWduaWZpY2FuZERpZ2l0Kys7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihr
UGFyc2VFcnJvclZhbHVlSW52YWxpZCwgcy5UZWxsKCkpOwotCi0gICAgICAgIC8vIFBhcnNlIDY0
Yml0IGludAotICAgICAgICBib29sIHVzZURvdWJsZSA9IGZhbHNlOwotICAgICAgICBkb3VibGUg
ZCA9IDAuMDsKLSAgICAgICAgaWYgKHVzZTY0Yml0KSB7Ci0gICAgICAgICAgICBpZiAobWludXMp
IAotICAgICAgICAgICAgICAgIHdoaWxlIChzLlBlZWsoKSA+PSAnMCcgJiYgcy5QZWVrKCkgPD0g
JzknKSB7ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgIGlmIChpNjQg
Pj0gUkFQSURKU09OX1VJTlQ2NF9DMigweDBDQ0NDQ0NDLCAweENDQ0NDQ0NDKSkgLy8gMl42MyA9
IDkyMjMzNzIwMzY4NTQ3NzU4MDgKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpNjQgIT0g
UkFQSURKU09OX1VJTlQ2NF9DMigweDBDQ0NDQ0NDLCAweENDQ0NDQ0NDKSB8fCBzLlBlZWsoKSA+
ICc4JykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBpNjQ7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXNlRG91YmxlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgaTY0ID0gaTY0ICogMTAgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy5UYWtlUHVzaCgp
IC0gJzAnKTsKLSAgICAgICAgICAgICAgICAgICAgc2lnbmlmaWNhbmREaWdpdCsrOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB3aGlsZSAocy5Q
ZWVrKCkgPj0gJzAnICYmIHMuUGVlaygpIDw9ICc5JykgeyAgICAgICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgICAgIGlmIChpNjQgPj0gUkFQSURKU09OX1VJTlQ2NF9DMigweDE5OTk5
OTk5LCAweDk5OTk5OTk5KSkgLy8gMl42NCAtIDEgPSAxODQ0Njc0NDA3MzcwOTU1MTYxNQotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGk2NCAhPSBSQVBJREpTT05fVUlOVDY0X0MyKDB4MTk5
OTk5OTksIDB4OTk5OTk5OTkpIHx8IHMuUGVlaygpID4gJzUnKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZCA9IGk2NDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VEb3Vi
bGUgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpNjQgPSBpNjQgKiAxMCArIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzLlRha2VQdXNoKCkgLSAnMCcpOwotICAgICAgICAgICAgICAg
ICAgICBzaWduaWZpY2FuZERpZ2l0Kys7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgLy8gRm9yY2UgZG91YmxlIGZvciBiaWcgaW50ZWdlcgotICAgICAgICBpZiAodXNl
RG91YmxlKSB7Ci0gICAgICAgICAgICB3aGlsZSAocy5QZWVrKCkgPj0gJzAnICYmIHMuUGVlaygp
IDw9ICc5JykgewotICAgICAgICAgICAgICAgIGlmIChkID49IDEuNzk3NjkzMTM0ODYyMzE1N2Uz
MDcpIC8vIERCTF9NQVggLyAxMC4wCi0gICAgICAgICAgICAgICAgICAgIFJBUElESlNPTl9QQVJT
RV9FUlJPUihrUGFyc2VFcnJvck51bWJlclRvb0JpZywgcy5UZWxsKCkpOwotICAgICAgICAgICAg
ICAgIGQgPSBkICogMTAgKyAocy5UYWtlUHVzaCgpIC0gJzAnKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIC8vIFBhcnNlIGZyYWMgPSBkZWNpbWFsLXBvaW50IDEqRElHSVQK
LSAgICAgICAgaW50IGV4cEZyYWMgPSAwOwotICAgICAgICBzaXplX3QgZGVjaW1hbFBvc2l0aW9u
OwotICAgICAgICBpZiAocy5QZWVrKCkgPT0gJy4nKSB7Ci0gICAgICAgICAgICBzLlRha2UoKTsK
LSAgICAgICAgICAgIGRlY2ltYWxQb3NpdGlvbiA9IHMuTGVuZ3RoKCk7Ci0KLSAgICAgICAgICAg
IGlmICghKHMuUGVlaygpID49ICcwJyAmJiBzLlBlZWsoKSA8PSAnOScpKQotICAgICAgICAgICAg
ICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvck51bWJlck1pc3NGcmFjdGlvbiwg
cy5UZWxsKCkpOwotCi0gICAgICAgICAgICBpZiAoIXVzZURvdWJsZSkgewotI2lmIFJBUElESlNP
Tl82NEJJVAotICAgICAgICAgICAgICAgIC8vIFVzZSBpNjQgdG8gc3RvcmUgc2lnbmlmaWNhbmQg
aW4gNjQtYml0IGFyY2hpdGVjdHVyZQotICAgICAgICAgICAgICAgIGlmICghdXNlNjRiaXQpCi0g
ICAgICAgICAgICAgICAgICAgIGk2NCA9IGk7Ci0gICAgICAgIAotICAgICAgICAgICAgICAgIHdo
aWxlIChzLlBlZWsoKSA+PSAnMCcgJiYgcy5QZWVrKCkgPD0gJzknKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChpNjQgPiBSQVBJREpTT05fVUlOVDY0X0MyKDB4MUZGRkZGLCAweEZGRkZGRkZG
KSkgLy8gMl41MyAtIDEgZm9yIGZhc3QgcGF0aAotICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAg
aTY0ID0gaTY0ICogMTAgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy5UYWtlUHVzaCgpIC0gJzAn
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIC0tZXhwRnJhYzsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpNjQgIT0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduaWZp
Y2FuZERpZ2l0Kys7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICBkID0gKGRvdWJsZSlpNjQ7Ci0jZWxzZQotICAgICAgICAgICAgICAg
IC8vIFVzZSBkb3VibGUgdG8gc3RvcmUgc2lnbmlmaWNhbmQgaW4gMzItYml0IGFyY2hpdGVjdHVy
ZQotICAgICAgICAgICAgICAgIGQgPSB1c2U2NGJpdCA/IChkb3VibGUpaTY0IDogKGRvdWJsZSlp
OwotI2VuZGlmCi0gICAgICAgICAgICAgICAgdXNlRG91YmxlID0gdHJ1ZTsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgd2hpbGUgKHMuUGVlaygpID49ICcwJyAmJiBzLlBlZWsoKSA8PSAn
OScpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2lnbmlmaWNhbmREaWdpdCA8IDE3KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGQgPSBkICogMTAuMCArIChzLlRha2VQdXNoKCkgLSAnMCcpOwotICAg
ICAgICAgICAgICAgICAgICAtLWV4cEZyYWM7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkICE9
IDAuMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25pZmljYW5kRGlnaXQrKzsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBz
LlRha2VQdXNoKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgZGVjaW1hbFBvc2l0aW9uID0gcy5MZW5ndGgoKTsgLy8gZGVjaW1hbCBwb3NpdGlv
biBhdCB0aGUgZW5kIG9mIGludGVnZXIuCi0KLSAgICAgICAgLy8gUGFyc2UgZXhwID0gZSBbIG1p
bnVzIC8gcGx1cyBdIDEqRElHSVQKLSAgICAgICAgaW50IGV4cCA9IDA7Ci0gICAgICAgIGlmIChz
LlBlZWsoKSA9PSAnZScgfHwgcy5QZWVrKCkgPT0gJ0UnKSB7Ci0gICAgICAgICAgICBpZiAoIXVz
ZURvdWJsZSkgewotICAgICAgICAgICAgICAgIGQgPSB1c2U2NGJpdCA/IGk2NCA6IGk7Ci0gICAg
ICAgICAgICAgICAgdXNlRG91YmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IHMuVGFrZSgpOwotCi0gICAgICAgICAgICBib29sIGV4cE1pbnVzID0gZmFsc2U7Ci0gICAgICAg
ICAgICBpZiAocy5QZWVrKCkgPT0gJysnKQotICAgICAgICAgICAgICAgIHMuVGFrZSgpOwotICAg
ICAgICAgICAgZWxzZSBpZiAocy5QZWVrKCkgPT0gJy0nKSB7Ci0gICAgICAgICAgICAgICAgcy5U
YWtlKCk7Ci0gICAgICAgICAgICAgICAgZXhwTWludXMgPSB0cnVlOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBpZiAocy5QZWVrKCkgPj0gJzAnICYmIHMuUGVlaygpIDw9ICc5Jykgewot
ICAgICAgICAgICAgICAgIGV4cCA9IHMuVGFrZSgpIC0gJzAnOwotICAgICAgICAgICAgICAgIHdo
aWxlIChzLlBlZWsoKSA+PSAnMCcgJiYgcy5QZWVrKCkgPD0gJzknKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGV4cCA9IGV4cCAqIDEwICsgKHMuVGFrZSgpIC0gJzAnKTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGV4cCA+IDMwOCAmJiAhZXhwTWludXMpIC8vIGV4cCA+IDMwOCBzaG91bGQgYmUg
cmFyZSwgc28gaXQgc2hvdWxkIGJlIGNoZWNrZWQgZmlyc3QuCi0gICAgICAgICAgICAgICAgICAg
ICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JOdW1iZXJUb29CaWcsIHMuVGVs
bCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yTnVtYmVy
TWlzc0V4cG9uZW50LCBzLlRlbGwoKSk7Ci0KLSAgICAgICAgICAgIGlmIChleHBNaW51cykKLSAg
ICAgICAgICAgICAgICBleHAgPSAtZXhwOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRmluaXNo
IHBhcnNpbmcsIGNhbGwgZXZlbnQgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mIG51bWJlci4KLSAg
ICAgICAgYm9vbCBjb250ID0gdHJ1ZTsKLSAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHMuTGVuZ3Ro
KCk7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGRlY2ltYWwgPSBzLlBvcCgpOyAgLy8gUG9wIHN0YWNr
IG5vIG1hdHRlciBpZiBpdCB3aWxsIGJlIHVzZWQgb3Igbm90LgotCi0gICAgICAgIGlmICh1c2VE
b3VibGUpIHsKLSAgICAgICAgICAgIGludCBwID0gZXhwICsgZXhwRnJhYzsKLSAgICAgICAgICAg
IGlmIChwYXJzZUZsYWdzICYga1BhcnNlRnVsbFByZWNpc2lvbkZsYWcpCi0gICAgICAgICAgICAg
ICAgZCA9IGludGVybmFsOjpTdHJ0b2RGdWxsUHJlY2lzaW9uKGQsIHAsIGRlY2ltYWwsIGxlbmd0
aCwgZGVjaW1hbFBvc2l0aW9uLCBleHApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGQgPSBpbnRlcm5hbDo6U3RydG9kTm9ybWFsUHJlY2lzaW9uKGQsIHApOwotCi0gICAgICAg
ICAgICBjb250ID0gaGFuZGxlci5Eb3VibGUobWludXMgPyAtZCA6IGQpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKHVzZTY0Yml0KSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKG1pbnVzKQotICAgICAgICAgICAgICAgICAgICBjb250ID0gaGFuZGxlci5JbnQ2NCgt
KGludDY0X3QpaTY0KTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
IGNvbnQgPSBoYW5kbGVyLlVpbnQ2NChpNjQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1pbnVzKQotICAgICAgICAgICAgICAgICAgICBj
b250ID0gaGFuZGxlci5JbnQoLShpbnQpaSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICBjb250ID0gaGFuZGxlci5VaW50KGkpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIGlmICghY29udCkKLSAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9F
UlJPUihrUGFyc2VFcnJvclRlcm1pbmF0aW9uLCBzLlRlbGwoKSk7Ci0gICAgfQotCi0gICAgLy8g
UGFyc2UgYW55IEpTT04gdmFsdWUKLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0
eXBlbmFtZSBJbnB1dFN0cmVhbSwgdHlwZW5hbWUgSGFuZGxlcj4KLSAgICB2b2lkIFBhcnNlVmFs
dWUoSW5wdXRTdHJlYW0mIGlzLCBIYW5kbGVyJiBoYW5kbGVyKSB7Ci0gICAgICAgIHN3aXRjaCAo
aXMuUGVlaygpKSB7Ci0gICAgICAgICAgICBjYXNlICduJzogUGFyc2VOdWxsICA8cGFyc2VGbGFn
cz4oaXMsIGhhbmRsZXIpOyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3QnOiBQYXJzZVRydWUg
IDxwYXJzZUZsYWdzPihpcywgaGFuZGxlcik7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnZic6
IFBhcnNlRmFsc2UgPHBhcnNlRmxhZ3M+KGlzLCBoYW5kbGVyKTsgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlICciJzogUGFyc2VTdHJpbmc8cGFyc2VGbGFncz4oaXMsIGhhbmRsZXIpOyBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgJ3snOiBQYXJzZU9iamVjdDxwYXJzZUZsYWdzPihpcywgaGFuZGxl
cik7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnWyc6IFBhcnNlQXJyYXkgPHBhcnNlRmxhZ3M+
KGlzLCBoYW5kbGVyKTsgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0IDogUGFyc2VOdW1iZXI8
cGFyc2VGbGFncz4oaXMsIGhhbmRsZXIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gSXRl
cmF0aXZlIFBhcnNpbmcKLQotICAgIC8vIFN0YXRlcwotICAgIGVudW0gSXRlcmF0aXZlUGFyc2lu
Z1N0YXRlIHsKLSAgICAgICAgSXRlcmF0aXZlUGFyc2luZ1N0YXJ0U3RhdGUgPSAwLAotICAgICAg
ICBJdGVyYXRpdmVQYXJzaW5nRmluaXNoU3RhdGUsCi0gICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdF
cnJvclN0YXRlLAotCi0gICAgICAgIC8vIE9iamVjdCBzdGF0ZXMKLSAgICAgICAgSXRlcmF0aXZl
UGFyc2luZ09iamVjdEluaXRpYWxTdGF0ZSwKLSAgICAgICAgSXRlcmF0aXZlUGFyc2luZ01lbWJl
cktleVN0YXRlLAotICAgICAgICBJdGVyYXRpdmVQYXJzaW5nS2V5VmFsdWVEZWxpbWl0ZXJTdGF0
ZSwKLSAgICAgICAgSXRlcmF0aXZlUGFyc2luZ01lbWJlclZhbHVlU3RhdGUsCi0gICAgICAgIEl0
ZXJhdGl2ZVBhcnNpbmdNZW1iZXJEZWxpbWl0ZXJTdGF0ZSwKLSAgICAgICAgSXRlcmF0aXZlUGFy
c2luZ09iamVjdEZpbmlzaFN0YXRlLAotCi0gICAgICAgIC8vIEFycmF5IHN0YXRlcwotICAgICAg
ICBJdGVyYXRpdmVQYXJzaW5nQXJyYXlJbml0aWFsU3RhdGUsCi0gICAgICAgIEl0ZXJhdGl2ZVBh
cnNpbmdFbGVtZW50U3RhdGUsCi0gICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50RGVsaW1p
dGVyU3RhdGUsCi0gICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdBcnJheUZpbmlzaFN0YXRlLAotCi0g
ICAgICAgIC8vIFNpbmdsZSB2YWx1ZSBzdGF0ZQotICAgICAgICBJdGVyYXRpdmVQYXJzaW5nVmFs
dWVTdGF0ZSwKLQotICAgICAgICBjSXRlcmF0aXZlUGFyc2luZ1N0YXRlQ291bnQKLSAgICB9Owot
Ci0gICAgLy8gVG9rZW5zCi0gICAgZW51bSBUb2tlbiB7Ci0gICAgICAgIExlZnRCcmFja2V0VG9r
ZW4gPSAwLAotICAgICAgICBSaWdodEJyYWNrZXRUb2tlbiwKLQotICAgICAgICBMZWZ0Q3VybHlC
cmFja2V0VG9rZW4sCi0gICAgICAgIFJpZ2h0Q3VybHlCcmFja2V0VG9rZW4sCi0KLSAgICAgICAg
Q29tbWFUb2tlbiwKLSAgICAgICAgQ29sb25Ub2tlbiwKLQotICAgICAgICBTdHJpbmdUb2tlbiwK
LSAgICAgICAgRmFsc2VUb2tlbiwKLSAgICAgICAgVHJ1ZVRva2VuLAotICAgICAgICBOdWxsVG9r
ZW4sCi0gICAgICAgIE51bWJlclRva2VuLAotCi0gICAgICAgIGtUb2tlbkNvdW50Ci0gICAgfTsK
LQotICAgIFJBUElESlNPTl9GT1JDRUlOTElORSBUb2tlbiBUb2tlbml6ZShDaCBjKSB7Ci0KLS8v
IUBjb25kIFJBUElESlNPTl9ISURERU5fRlJPTV9ET1hZR0VOCi0jZGVmaW5lIE4gTnVtYmVyVG9r
ZW4KLSNkZWZpbmUgTjE2IE4sTixOLE4sTixOLE4sTixOLE4sTixOLE4sTixOLE4KLSAgICAgICAg
Ly8gTWFwcyBmcm9tIEFTQ0lJIHRvIFRva2VuCi0gICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBjaGFyIHRva2VuTWFwWzI1Nl0gPSB7Ci0gICAgICAgICAgICBOMTYsIC8vIDAwfjBGCi0gICAg
ICAgICAgICBOMTYsIC8vIDEwfjFGCi0gICAgICAgICAgICBOLCBOLCBTdHJpbmdUb2tlbiwgTiwg
TiwgTiwgTiwgTiwgTiwgTiwgTiwgTiwgQ29tbWFUb2tlbiwgTiwgTiwgTiwgLy8gMjB+MkYKLSAg
ICAgICAgICAgIE4sIE4sIE4sIE4sIE4sIE4sIE4sIE4sIE4sIE4sIENvbG9uVG9rZW4sIE4sIE4s
IE4sIE4sIE4sIC8vIDMwfjNGCi0gICAgICAgICAgICBOMTYsIC8vIDQwfjRGCi0gICAgICAgICAg
ICBOLCBOLCBOLCBOLCBOLCBOLCBOLCBOLCBOLCBOLCBOLCBMZWZ0QnJhY2tldFRva2VuLCBOLCBS
aWdodEJyYWNrZXRUb2tlbiwgTiwgTiwgLy8gNTB+NUYKLSAgICAgICAgICAgIE4sIE4sIE4sIE4s
IE4sIE4sIEZhbHNlVG9rZW4sIE4sIE4sIE4sIE4sIE4sIE4sIE4sIE51bGxUb2tlbiwgTiwgLy8g
NjB+NkYKLSAgICAgICAgICAgIE4sIE4sIE4sIE4sIFRydWVUb2tlbiwgTiwgTiwgTiwgTiwgTiwg
TiwgTGVmdEN1cmx5QnJhY2tldFRva2VuLCBOLCBSaWdodEN1cmx5QnJhY2tldFRva2VuLCBOLCBO
LCAvLyA3MH43RgotICAgICAgICAgICAgTjE2LCBOMTYsIE4xNiwgTjE2LCBOMTYsIE4xNiwgTjE2
LCBOMTYgLy8gODB+RkYKLSAgICAgICAgfTsKLSN1bmRlZiBOCi0jdW5kZWYgTjE2Ci0vLyFAZW5k
Y29uZAotICAgICAgICAKLSAgICAgICAgaWYgKHNpemVvZihDaCkgPT0gMSB8fCB1bnNpZ25lZChj
KSA8IDI1NikKLSAgICAgICAgICAgIHJldHVybiAoVG9rZW4pdG9rZW5NYXBbKHVuc2lnbmVkIGNo
YXIpY107Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBOdW1iZXJUb2tlbjsKLSAg
ICB9Ci0KLSAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgSXRlcmF0aXZlUGFyc2luZ1N0YXRlIFBy
ZWRpY3QoSXRlcmF0aXZlUGFyc2luZ1N0YXRlIHN0YXRlLCBUb2tlbiB0b2tlbikgewotICAgICAg
ICAvLyBjdXJyZW50IHN0YXRlIHggb25lIGxvb2thaGVhZCB0b2tlbiAtPiBuZXcgc3RhdGUKLSAg
ICAgICAgc3RhdGljIGNvbnN0IGNoYXIgR1tjSXRlcmF0aXZlUGFyc2luZ1N0YXRlQ291bnRdW2tU
b2tlbkNvdW50XSA9IHsKLSAgICAgICAgICAgIC8vIFN0YXJ0Ci0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0FycmF5SW5pdGlhbFN0YXRlLCAgLy8gTGVmdCBi
cmFja2V0Ci0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAg
ICAgLy8gUmlnaHQgYnJhY2tldAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdPYmpl
Y3RJbml0aWFsU3RhdGUsIC8vIExlZnQgY3VybHkgYnJhY2tldAotICAgICAgICAgICAgICAgIEl0
ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgIC8vIFJpZ2h0IGN1cmx5IGJyYWNrZXQK
LSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBD
b21tYQotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAg
IC8vIENvbG9uCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ1ZhbHVlU3RhdGUsICAg
ICAgICAgLy8gU3RyaW5nCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ1ZhbHVlU3Rh
dGUsICAgICAgICAgLy8gRmFsc2UKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nVmFs
dWVTdGF0ZSwgICAgICAgICAvLyBUcnVlCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2lu
Z1ZhbHVlU3RhdGUsICAgICAgICAgLy8gTnVsbAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBh
cnNpbmdWYWx1ZVN0YXRlICAgICAgICAgIC8vIE51bWJlcgotICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgIC8vIEZpbmlzaChzaW5rIHN0YXRlKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0
ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRl
LCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQ
YXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBh
cnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFy
c2luZ0Vycm9yU3RhdGUsCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3Rh
dGUKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAvLyBFcnJvcihzaW5rIHN0YXRlKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJ
dGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0
ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwKLSAg
ICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2lu
Z0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5n
RXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsCi0gICAgICAgICAgICAgICAg
SXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAv
LyBPYmplY3RJbml0aWFsCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSXRlcmF0aXZl
UGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gTGVmdCBicmFja2V0Ci0gICAgICAgICAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gUmlnaHQgYnJhY2tldAot
ICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgIC8vIExl
ZnQgY3VybHkgYnJhY2tldAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdPYmplY3RG
aW5pc2hTdGF0ZSwgIC8vIFJpZ2h0IGN1cmx5IGJyYWNrZXQKLSAgICAgICAgICAgICAgICBJdGVy
YXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBDb21tYQotICAgICAgICAgICAgICAg
IEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgIC8vIENvbG9uCi0gICAgICAgICAg
ICAgICAgSXRlcmF0aXZlUGFyc2luZ01lbWJlcktleVN0YXRlLCAgICAgLy8gU3RyaW5nCi0gICAg
ICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gRmFsc2UK
LSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBU
cnVlCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAg
Ly8gTnVsbAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlICAgICAg
ICAgIC8vIE51bWJlcgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIC8vIE1lbWJlcktleQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRl
LCAgICAgICAgICAgICAvLyBMZWZ0IGJyYWNrZXQKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQ
YXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gUmlnaHQgYnJhY2tldAotICAgICAgICAg
ICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBMZWZ0IGN1
cmx5IGJyYWNrZXQKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwg
ICAgICAgICAgICAgLy8gUmlnaHQgY3VybHkgYnJhY2tldAotICAgICAgICAgICAgICAgIEl0ZXJh
dGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBDb21tYQotICAgICAgICAgICAg
ICAgIEl0ZXJhdGl2ZVBhcnNpbmdLZXlWYWx1ZURlbGltaXRlclN0YXRlLCAvLyBDb2xvbgotICAg
ICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBT
dHJpbmcKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAg
ICAgICAgLy8gRmFsc2UKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0
ZSwgICAgICAgICAgICAgLy8gVHJ1ZQotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdF
cnJvclN0YXRlLCAgICAgICAgICAgICAvLyBOdWxsCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZl
UGFyc2luZ0Vycm9yU3RhdGUgICAgICAgICAgICAgIC8vIE51bWJlcgotICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgIC8vIEtleVZhbHVlRGVsaW1pdGVyCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0FycmF5SW5pdGlhbFN0YXRlLCAgICAgIC8vIExlZnQg
YnJhY2tldChwdXNoIE1lbWJlclZhbHVlIHN0YXRlKQotICAgICAgICAgICAgICAgIEl0ZXJhdGl2
ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBSaWdodCBicmFja2V0Ci0gICAgICAg
ICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ09iamVjdEluaXRpYWxTdGF0ZSwgICAgIC8vIExlZnQg
Y3VybHkgYnJhY2tldChwdXNoIE1lbWJlclZhbHVlIHN0YXRlKQotICAgICAgICAgICAgICAgIEl0
ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBSaWdodCBjdXJseSBicmFj
a2V0Ci0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAg
ICAgIC8vIENvbW1hCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUs
ICAgICAgICAgICAgIC8vIENvbG9uCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ01l
bWJlclZhbHVlU3RhdGUsICAgICAgIC8vIFN0cmluZwotICAgICAgICAgICAgICAgIEl0ZXJhdGl2
ZVBhcnNpbmdNZW1iZXJWYWx1ZVN0YXRlLCAgICAgICAvLyBGYWxzZQotICAgICAgICAgICAgICAg
IEl0ZXJhdGl2ZVBhcnNpbmdNZW1iZXJWYWx1ZVN0YXRlLCAgICAgICAvLyBUcnVlCi0gICAgICAg
ICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ01lbWJlclZhbHVlU3RhdGUsICAgICAgIC8vIE51bGwK
LSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nTWVtYmVyVmFsdWVTdGF0ZSAgICAgICAg
Ly8gTnVtYmVyCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgLy8gTWVtYmVyVmFsdWUKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwg
ICAgICAgICAgICAgLy8gTGVmdCBicmFja2V0Ci0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFy
c2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIFJpZ2h0IGJyYWNrZXQKLSAgICAgICAgICAg
ICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gTGVmdCBjdXJs
eSBicmFja2V0Ci0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ09iamVjdEZpbmlzaFN0
YXRlLCAgICAgIC8vIFJpZ2h0IGN1cmx5IGJyYWNrZXQKLSAgICAgICAgICAgICAgICBJdGVyYXRp
dmVQYXJzaW5nTWVtYmVyRGVsaW1pdGVyU3RhdGUsICAgLy8gQ29tbWEKLSAgICAgICAgICAgICAg
ICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gQ29sb24KLSAgICAg
ICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gU3Ry
aW5nCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAg
ICAgIC8vIEZhbHNlCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUs
ICAgICAgICAgICAgIC8vIFRydWUKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJy
b3JTdGF0ZSwgICAgICAgICAgICAgLy8gTnVsbAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBh
cnNpbmdFcnJvclN0YXRlICAgICAgICAgICAgICAvLyBOdW1iZXIKLSAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAvLyBNZW1iZXJEZWxpbWl0ZXIKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBMZWZ0IGJyYWNrZXQK
LSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBS
aWdodCBicmFja2V0Ci0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUs
ICAgICAgICAgLy8gTGVmdCBjdXJseSBicmFja2V0Ci0gICAgICAgICAgICAgICAgSXRlcmF0aXZl
UGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gUmlnaHQgY3VybHkgYnJhY2tldAotICAgICAg
ICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgIC8vIENvbW1hCi0g
ICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gQ29s
b24KLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nTWVtYmVyS2V5U3RhdGUsICAgICAv
LyBTdHJpbmcKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAg
ICAgICAvLyBGYWxzZQotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRl
LCAgICAgICAgIC8vIFRydWUKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JT
dGF0ZSwgICAgICAgICAvLyBOdWxsCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vy
cm9yU3RhdGUgICAgICAgICAgLy8gTnVtYmVyCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAg
Ly8gT2JqZWN0RmluaXNoKHNpbmsgc3RhdGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRl
LCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUs
IEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBh
cnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFy
c2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJz
aW5nRXJyb3JTdGF0ZSwKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0
ZQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIC8vIEFycmF5SW5pdGlhbAotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdBcnJheUluaXRpYWxTdGF0ZSwg
ICAgICAvLyBMZWZ0IGJyYWNrZXQocHVzaCBFbGVtZW50IHN0YXRlKQotICAgICAgICAgICAgICAg
IEl0ZXJhdGl2ZVBhcnNpbmdBcnJheUZpbmlzaFN0YXRlLCAgICAgICAvLyBSaWdodCBicmFja2V0
Ci0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ09iamVjdEluaXRpYWxTdGF0ZSwgICAg
IC8vIExlZnQgY3VybHkgYnJhY2tldChwdXNoIEVsZW1lbnQgc3RhdGUpCi0gICAgICAgICAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIFJpZ2h0IGN1cmx5
IGJyYWNrZXQKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAg
ICAgICAgICAgLy8gQ29tbWEKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JT
dGF0ZSwgICAgICAgICAgICAgLy8gQ29sb24KLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJz
aW5nRWxlbWVudFN0YXRlLCAgICAgICAgICAgLy8gU3RyaW5nCi0gICAgICAgICAgICAgICAgSXRl
cmF0aXZlUGFyc2luZ0VsZW1lbnRTdGF0ZSwgICAgICAgICAgIC8vIEZhbHNlCi0gICAgICAgICAg
ICAgICAgSXRlcmF0aXZlUGFyc2luZ0VsZW1lbnRTdGF0ZSwgICAgICAgICAgIC8vIFRydWUKLSAg
ICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRWxlbWVudFN0YXRlLCAgICAgICAgICAgLy8g
TnVsbAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50U3RhdGUgICAgICAg
ICAgICAvLyBOdW1iZXIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAvLyBFbGVtZW50Ci0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUs
ICAgICAgICAgICAgIC8vIExlZnQgYnJhY2tldAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBh
cnNpbmdBcnJheUZpbmlzaFN0YXRlLCAgICAgICAvLyBSaWdodCBicmFja2V0Ci0gICAgICAgICAg
ICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIExlZnQgY3Vy
bHkgYnJhY2tldAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAg
ICAgICAgICAgICAvLyBSaWdodCBjdXJseSBicmFja2V0Ci0gICAgICAgICAgICAgICAgSXRlcmF0
aXZlUGFyc2luZ0VsZW1lbnREZWxpbWl0ZXJTdGF0ZSwgIC8vIENvbW1hCi0gICAgICAgICAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIENvbG9uCi0gICAg
ICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIFN0
cmluZwotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAg
ICAgICAvLyBGYWxzZQotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRl
LCAgICAgICAgICAgICAvLyBUcnVlCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vy
cm9yU3RhdGUsICAgICAgICAgICAgIC8vIE51bGwKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQ
YXJzaW5nRXJyb3JTdGF0ZSAgICAgICAgICAgICAgLy8gTnVtYmVyCi0gICAgICAgICAgICB9LAot
ICAgICAgICAgICAgLy8gRWxlbWVudERlbGltaXRlcgotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdBcnJheUluaXRpYWxTdGF0ZSwgICAgICAvLyBMZWZ0IGJy
YWNrZXQocHVzaCBFbGVtZW50IHN0YXRlKQotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNp
bmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBSaWdodCBicmFja2V0Ci0gICAgICAgICAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ09iamVjdEluaXRpYWxTdGF0ZSwgICAgIC8vIExlZnQgY3VybHkg
YnJhY2tldChwdXNoIEVsZW1lbnQgc3RhdGUpCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFy
c2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIFJpZ2h0IGN1cmx5IGJyYWNrZXQKLSAgICAg
ICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gQ29t
bWEKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAg
ICAgLy8gQ29sb24KLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRWxlbWVudFN0YXRl
LCAgICAgICAgICAgLy8gU3RyaW5nCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vs
ZW1lbnRTdGF0ZSwgICAgICAgICAgIC8vIEZhbHNlCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZl
UGFyc2luZ0VsZW1lbnRTdGF0ZSwgICAgICAgICAgIC8vIFRydWUKLSAgICAgICAgICAgICAgICBJ
dGVyYXRpdmVQYXJzaW5nRWxlbWVudFN0YXRlLCAgICAgICAgICAgLy8gTnVsbAotICAgICAgICAg
ICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50U3RhdGUgICAgICAgICAgICAvLyBOdW1iZXIK
LSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAvLyBBcnJheUZpbmlzaChzaW5rIHN0YXRlKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRl
LCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUs
IEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwK
LSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFy
c2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJz
aW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsCi0gICAgICAgICAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAvLyBTaW5nbGUgVmFsdWUgKHNpbmsgc3RhdGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0
YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3Rh
dGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2
ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZl
UGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQ
YXJzaW5nRXJyb3JTdGF0ZSwKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JT
dGF0ZQotICAgICAgICAgICAgfQotICAgICAgICB9OyAvLyBFbmQgb2YgRwotCi0gICAgICAgIHJl
dHVybiAoSXRlcmF0aXZlUGFyc2luZ1N0YXRlKUdbc3RhdGVdW3Rva2VuXTsKLSAgICB9Ci0KLSAg
ICAvLyBNYWtlIGFuIGFkdmFuY2UgaW4gdGhlIHRva2VuIHN0cmVhbSBhbmQgc3RhdGUgYmFzZWQg
b24gdGhlIGNhbmRpZGF0ZSBkZXN0aW5hdGlvbiBzdGF0ZSB3aGljaCB3YXMgcmV0dXJuZWQgYnkg
VHJhbnNpdCgpLgotICAgIC8vIE1heSByZXR1cm4gYSBuZXcgc3RhdGUgb24gc3RhdGUgcG9wLgot
ICAgIHRlbXBsYXRlIDx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBJbnB1dFN0cmVhbSwg
dHlwZW5hbWUgSGFuZGxlcj4KLSAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgSXRlcmF0aXZlUGFy
c2luZ1N0YXRlIFRyYW5zaXQoSXRlcmF0aXZlUGFyc2luZ1N0YXRlIHNyYywgVG9rZW4gdG9rZW4s
IEl0ZXJhdGl2ZVBhcnNpbmdTdGF0ZSBkc3QsIElucHV0U3RyZWFtJiBpcywgSGFuZGxlciYgaGFu
ZGxlcikgewotICAgICAgICBzd2l0Y2ggKGRzdCkgewotICAgICAgICBjYXNlIEl0ZXJhdGl2ZVBh
cnNpbmdTdGFydFN0YXRlOgotICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7Ci0g
ICAgICAgICAgICByZXR1cm4gSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGU7Ci0KLSAgICAgICAg
Y2FzZSBJdGVyYXRpdmVQYXJzaW5nRmluaXNoU3RhdGU6Ci0gICAgICAgICAgICByZXR1cm4gZHN0
OwotCi0gICAgICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGU6Ci0gICAgICAgICAg
ICByZXR1cm4gZHN0OwotCi0gICAgICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ09iamVjdEluaXRp
YWxTdGF0ZToKLSAgICAgICAgY2FzZSBJdGVyYXRpdmVQYXJzaW5nQXJyYXlJbml0aWFsU3RhdGU6
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIFB1c2ggdGhlIHN0YXRlKEVsZW1lbnQgb3IgTWVt
ZWJlclZhbHVlKSBpZiB3ZSBhcmUgbmVzdGVkIGluIGFub3RoZXIgYXJyYXkgb3IgdmFsdWUgb2Yg
bWVtYmVyLgotICAgICAgICAgICAgLy8gSW4gdGhpcyB3YXkgd2UgY2FuIGdldCB0aGUgY29ycmVj
dCBzdGF0ZSBvbiBPYmplY3RGaW5pc2ggb3IgQXJyYXlGaW5pc2ggYnkgZnJhbWUgcG9wLgotICAg
ICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ1N0YXRlIG4gPSBzcmM7Ci0gICAgICAgICAgICBpZiAo
c3JjID09IEl0ZXJhdGl2ZVBhcnNpbmdBcnJheUluaXRpYWxTdGF0ZSB8fCBzcmMgPT0gSXRlcmF0
aXZlUGFyc2luZ0VsZW1lbnREZWxpbWl0ZXJTdGF0ZSkKLSAgICAgICAgICAgICAgICBuID0gSXRl
cmF0aXZlUGFyc2luZ0VsZW1lbnRTdGF0ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHNyYyA9PSBJ
dGVyYXRpdmVQYXJzaW5nS2V5VmFsdWVEZWxpbWl0ZXJTdGF0ZSkKLSAgICAgICAgICAgICAgICBu
ID0gSXRlcmF0aXZlUGFyc2luZ01lbWJlclZhbHVlU3RhdGU7Ci0gICAgICAgICAgICAvLyBQdXNo
IGN1cnJlbnQgc3RhdGUuCi0gICAgICAgICAgICAqc3RhY2tfLnRlbXBsYXRlIFB1c2g8U2l6ZVR5
cGU+KDEpID0gbjsKLSAgICAgICAgICAgIC8vIEluaXRpYWxpemUgYW5kIHB1c2ggdGhlIG1lbWJl
ci9lbGVtZW50IGNvdW50LgotICAgICAgICAgICAgKnN0YWNrXy50ZW1wbGF0ZSBQdXNoPFNpemVU
eXBlPigxKSA9IDA7Ci0gICAgICAgICAgICAvLyBDYWxsIGhhbmRsZXIKLSAgICAgICAgICAgIGJv
b2wgaHIgPSAoZHN0ID09IEl0ZXJhdGl2ZVBhcnNpbmdPYmplY3RJbml0aWFsU3RhdGUpID8gaGFu
ZGxlci5TdGFydE9iamVjdCgpIDogaGFuZGxlci5TdGFydEFycmF5KCk7Ci0gICAgICAgICAgICAv
LyBPbiBoYW5kbGVyIHNob3J0IGNpcmN1aXRzIHRoZSBwYXJzaW5nLgotICAgICAgICAgICAgaWYg
KCFocikgewotICAgICAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUl9OT1JFVFVSTihr
UGFyc2VFcnJvclRlcm1pbmF0aW9uLCBpcy5UZWxsKCkpOwotICAgICAgICAgICAgICAgIHJldHVy
biBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIGlzLlRha2UoKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gZHN0OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgY2FzZSBJdGVyYXRp
dmVQYXJzaW5nTWVtYmVyS2V5U3RhdGU6Ci0gICAgICAgICAgICBQYXJzZVN0cmluZzxwYXJzZUZs
YWdzPihpcywgaGFuZGxlciwgdHJ1ZSk7Ci0gICAgICAgICAgICBpZiAoSGFzUGFyc2VFcnJvcigp
KQotICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gZHN0OwotCi0gICAgICAgIGNh
c2UgSXRlcmF0aXZlUGFyc2luZ0tleVZhbHVlRGVsaW1pdGVyU3RhdGU6Ci0gICAgICAgICAgICBp
ZiAodG9rZW4gPT0gQ29sb25Ub2tlbikgewotICAgICAgICAgICAgICAgIGlzLlRha2UoKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZHN0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZTsKLQot
ICAgICAgICBjYXNlIEl0ZXJhdGl2ZVBhcnNpbmdNZW1iZXJWYWx1ZVN0YXRlOgotICAgICAgICAg
ICAgLy8gTXVzdCBiZSBub24tY29tcG91bmQgdmFsdWUuIE9yIGl0IHdvdWxkIGJlIE9iamVjdElu
aXRpYWwgb3IgQXJyYXlJbml0aWFsIHN0YXRlLgotICAgICAgICAgICAgUGFyc2VWYWx1ZTxwYXJz
ZUZsYWdzPihpcywgaGFuZGxlcik7Ci0gICAgICAgICAgICBpZiAoSGFzUGFyc2VFcnJvcigpKSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGRzdDsKLQotICAgICAgICBjYXNlIEl0ZXJh
dGl2ZVBhcnNpbmdFbGVtZW50U3RhdGU6Ci0gICAgICAgICAgICAvLyBNdXN0IGJlIG5vbi1jb21w
b3VuZCB2YWx1ZS4gT3IgaXQgd291bGQgYmUgT2JqZWN0SW5pdGlhbCBvciBBcnJheUluaXRpYWwg
c3RhdGUuCi0gICAgICAgICAgICBQYXJzZVZhbHVlPHBhcnNlRmxhZ3M+KGlzLCBoYW5kbGVyKTsK
LSAgICAgICAgICAgIGlmIChIYXNQYXJzZUVycm9yKCkpIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICByZXR1cm4gZHN0OwotCi0gICAgICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ01lbWJlckRlbGlt
aXRlclN0YXRlOgotICAgICAgICBjYXNlIEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50RGVsaW1pdGVy
U3RhdGU6Ci0gICAgICAgICAgICBpcy5UYWtlKCk7Ci0gICAgICAgICAgICAvLyBVcGRhdGUgbWVt
YmVyL2VsZW1lbnQgY291bnQuCi0gICAgICAgICAgICAqc3RhY2tfLnRlbXBsYXRlIFRvcDxTaXpl
VHlwZT4oKSA9ICpzdGFja18udGVtcGxhdGUgVG9wPFNpemVUeXBlPigpICsgMTsKLSAgICAgICAg
ICAgIHJldHVybiBkc3Q7Ci0KLSAgICAgICAgY2FzZSBJdGVyYXRpdmVQYXJzaW5nT2JqZWN0Rmlu
aXNoU3RhdGU6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEdldCBtZW1iZXIgY291bnQuCi0g
ICAgICAgICAgICBTaXplVHlwZSBjID0gKnN0YWNrXy50ZW1wbGF0ZSBQb3A8U2l6ZVR5cGU+KDEp
OwotICAgICAgICAgICAgLy8gSWYgdGhlIG9iamVjdCBpcyBub3QgZW1wdHksIGNvdW50IHRoZSBs
YXN0IG1lbWJlci4KLSAgICAgICAgICAgIGlmIChzcmMgPT0gSXRlcmF0aXZlUGFyc2luZ01lbWJl
clZhbHVlU3RhdGUpCi0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgLy8gUmVzdG9y
ZSB0aGUgc3RhdGUuCi0gICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nU3RhdGUgbiA9IHN0YXRp
Y19jYXN0PEl0ZXJhdGl2ZVBhcnNpbmdTdGF0ZT4oKnN0YWNrXy50ZW1wbGF0ZSBQb3A8U2l6ZVR5
cGU+KDEpKTsKLSAgICAgICAgICAgIC8vIFRyYW5zaXQgdG8gRmluaXNoIHN0YXRlIGlmIHRoaXMg
aXMgdGhlIHRvcG1vc3Qgc2NvcGUuCi0gICAgICAgICAgICBpZiAobiA9PSBJdGVyYXRpdmVQYXJz
aW5nU3RhcnRTdGF0ZSkKLSAgICAgICAgICAgICAgICBuID0gSXRlcmF0aXZlUGFyc2luZ0Zpbmlz
aFN0YXRlOwotICAgICAgICAgICAgLy8gQ2FsbCBoYW5kbGVyCi0gICAgICAgICAgICBib29sIGhy
ID0gaGFuZGxlci5FbmRPYmplY3QoYyk7Ci0gICAgICAgICAgICAvLyBPbiBoYW5kbGVyIHNob3J0
IGNpcmN1aXRzIHRoZSBwYXJzaW5nLgotICAgICAgICAgICAgaWYgKCFocikgewotICAgICAgICAg
ICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUl9OT1JFVFVSTihrUGFyc2VFcnJvclRlcm1pbmF0
aW9uLCBpcy5UZWxsKCkpOwotICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpdmVQYXJzaW5n
RXJyb3JTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgIGlzLlRha2UoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ0FycmF5RmluaXNo
U3RhdGU6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEdldCBlbGVtZW50IGNvdW50LgotICAg
ICAgICAgICAgU2l6ZVR5cGUgYyA9ICpzdGFja18udGVtcGxhdGUgUG9wPFNpemVUeXBlPigxKTsK
LSAgICAgICAgICAgIC8vIElmIHRoZSBhcnJheSBpcyBub3QgZW1wdHksIGNvdW50IHRoZSBsYXN0
IGVsZW1lbnQuCi0gICAgICAgICAgICBpZiAoc3JjID09IEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50
U3RhdGUpCi0gICAgICAgICAgICAgICAgKytjOwotICAgICAgICAgICAgLy8gUmVzdG9yZSB0aGUg
c3RhdGUuCi0gICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nU3RhdGUgbiA9IHN0YXRpY19jYXN0
PEl0ZXJhdGl2ZVBhcnNpbmdTdGF0ZT4oKnN0YWNrXy50ZW1wbGF0ZSBQb3A8U2l6ZVR5cGU+KDEp
KTsKLSAgICAgICAgICAgIC8vIFRyYW5zaXQgdG8gRmluaXNoIHN0YXRlIGlmIHRoaXMgaXMgdGhl
IHRvcG1vc3Qgc2NvcGUuCi0gICAgICAgICAgICBpZiAobiA9PSBJdGVyYXRpdmVQYXJzaW5nU3Rh
cnRTdGF0ZSkKLSAgICAgICAgICAgICAgICBuID0gSXRlcmF0aXZlUGFyc2luZ0ZpbmlzaFN0YXRl
OwotICAgICAgICAgICAgLy8gQ2FsbCBoYW5kbGVyCi0gICAgICAgICAgICBib29sIGhyID0gaGFu
ZGxlci5FbmRBcnJheShjKTsKLSAgICAgICAgICAgIC8vIE9uIGhhbmRsZXIgc2hvcnQgY2lyY3Vp
dHMgdGhlIHBhcnNpbmcuCi0gICAgICAgICAgICBpZiAoIWhyKSB7Ci0gICAgICAgICAgICAgICAg
UkFQSURKU09OX1BBUlNFX0VSUk9SX05PUkVUVVJOKGtQYXJzZUVycm9yVGVybWluYXRpb24sIGlz
LlRlbGwoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0
YXRlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAg
aXMuVGFrZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBuOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgY2FzZSBJdGVyYXRpdmVQYXJzaW5nVmFsdWVTdGF0ZToKLSAgICAg
ICAgICAgIC8vIE11c3QgYmUgbm9uLWNvbXBvdW5kIHZhbHVlLiBPciBpdCB3b3VsZCBiZSBPYmpl
Y3RJbml0aWFsIG9yIEFycmF5SW5pdGlhbCBzdGF0ZS4KLSAgICAgICAgICAgIFBhcnNlVmFsdWU8
cGFyc2VGbGFncz4oaXMsIGhhbmRsZXIpOwotICAgICAgICAgICAgaWYgKEhhc1BhcnNlRXJyb3Io
KSkgewotICAgICAgICAgICAgICAgIHJldHVybiBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBJdGVyYXRpdmVQYXJzaW5nRmluaXNo
U3RhdGU7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQo
ZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0U3RyZWFtPgot
ICAgIHZvaWQgSGFuZGxlRXJyb3IoSXRlcmF0aXZlUGFyc2luZ1N0YXRlIHNyYywgSW5wdXRTdHJl
YW0mIGlzKSB7Ci0gICAgICAgIGlmIChIYXNQYXJzZUVycm9yKCkpIHsKLSAgICAgICAgICAgIC8v
IEVycm9yIGZsYWcgaGFzIGJlZW4gc2V0LgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKHNyYykgewotICAgICAgICBjYXNlIEl0ZXJhdGl2
ZVBhcnNpbmdTdGFydFN0YXRlOiAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFy
c2VFcnJvckRvY3VtZW50RW1wdHksIGlzLlRlbGwoKSk7Ci0gICAgICAgIGNhc2UgSXRlcmF0aXZl
UGFyc2luZ0ZpbmlzaFN0YXRlOiAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJz
ZUVycm9yRG9jdW1lbnRSb290Tm90U2luZ3VsYXIsIGlzLlRlbGwoKSk7Ci0gICAgICAgIGNhc2Ug
SXRlcmF0aXZlUGFyc2luZ09iamVjdEluaXRpYWxTdGF0ZToKLSAgICAgICAgY2FzZSBJdGVyYXRp
dmVQYXJzaW5nTWVtYmVyRGVsaW1pdGVyU3RhdGU6ICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1Bh
cnNlRXJyb3JPYmplY3RNaXNzTmFtZSwgaXMuVGVsbCgpKTsKLSAgICAgICAgY2FzZSBJdGVyYXRp
dmVQYXJzaW5nTWVtYmVyS2V5U3RhdGU6ICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1Bh
cnNlRXJyb3JPYmplY3RNaXNzQ29sb24sIGlzLlRlbGwoKSk7Ci0gICAgICAgIGNhc2UgSXRlcmF0
aXZlUGFyc2luZ01lbWJlclZhbHVlU3RhdGU6ICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQ
YXJzZUVycm9yT2JqZWN0TWlzc0NvbW1hT3JDdXJseUJyYWNrZXQsIGlzLlRlbGwoKSk7Ci0gICAg
ICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ0VsZW1lbnRTdGF0ZTogICAgICAgICAgUkFQSURKU09O
X1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yQXJyYXlNaXNzQ29tbWFPclNxdWFyZUJyYWNrZXQsIGlz
LlRlbGwoKSk7Ci0gICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yVW5zcGVjaWZpY1N5bnRheEVy
cm9yLCBpcy5UZWxsKCkpOwotICAgICAgICB9ICAgICAgIAotICAgIH0KLQotICAgIHRlbXBsYXRl
IDx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBJbnB1dFN0cmVhbSwgdHlwZW5hbWUgSGFu
ZGxlcj4KLSAgICBQYXJzZVJlc3VsdCBJdGVyYXRpdmVQYXJzZShJbnB1dFN0cmVhbSYgaXMsIEhh
bmRsZXImIGhhbmRsZXIpIHsKLSAgICAgICAgcGFyc2VSZXN1bHRfLkNsZWFyKCk7Ci0gICAgICAg
IENsZWFyU3RhY2tPbkV4aXQgc2NvcGUoKnRoaXMpOwotICAgICAgICBJdGVyYXRpdmVQYXJzaW5n
U3RhdGUgc3RhdGUgPSBJdGVyYXRpdmVQYXJzaW5nU3RhcnRTdGF0ZTsKLQotICAgICAgICBTa2lw
V2hpdGVzcGFjZShpcyk7Ci0gICAgICAgIHdoaWxlIChpcy5QZWVrKCkgIT0gJ1wwJykgewotICAg
ICAgICAgICAgVG9rZW4gdCA9IFRva2VuaXplKGlzLlBlZWsoKSk7Ci0gICAgICAgICAgICBJdGVy
YXRpdmVQYXJzaW5nU3RhdGUgbiA9IFByZWRpY3Qoc3RhdGUsIHQpOwotICAgICAgICAgICAgSXRl
cmF0aXZlUGFyc2luZ1N0YXRlIGQgPSBUcmFuc2l0PHBhcnNlRmxhZ3M+KHN0YXRlLCB0LCBuLCBp
cywgaGFuZGxlcik7Ci0KLSAgICAgICAgICAgIGlmIChkID09IEl0ZXJhdGl2ZVBhcnNpbmdFcnJv
clN0YXRlKSB7Ci0gICAgICAgICAgICAgICAgSGFuZGxlRXJyb3Ioc3RhdGUsIGlzKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3RhdGUgPSBk
OwotCi0gICAgICAgICAgICAvLyBEbyBub3QgZnVydGhlciBjb25zdW1lIHN0cmVhbXMgaWYgYSBy
b290IEpTT04gaGFzIGJlZW4gcGFyc2VkLgotICAgICAgICAgICAgaWYgKChwYXJzZUZsYWdzICYg
a1BhcnNlU3RvcFdoZW5Eb25lRmxhZykgJiYgc3RhdGUgPT0gSXRlcmF0aXZlUGFyc2luZ0Zpbmlz
aFN0YXRlKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBTa2lwV2hpdGVz
cGFjZShpcyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBIYW5kbGUgdGhlIGVuZCBvZiBmaWxl
LgotICAgICAgICBpZiAoc3RhdGUgIT0gSXRlcmF0aXZlUGFyc2luZ0ZpbmlzaFN0YXRlKQotICAg
ICAgICAgICAgSGFuZGxlRXJyb3Ioc3RhdGUsIGlzKTsKLQotICAgICAgICByZXR1cm4gcGFyc2VS
ZXN1bHRfOwotICAgIH0KLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga0RlZmF1bHRTdGFja0Nh
cGFjaXR5ID0gMjU2OyAgICAvLyE8IERlZmF1bHQgc3RhY2sgY2FwYWNpdHkgaW4gYnl0ZXMgZm9y
IHN0b3JpbmcgYSBzaW5nbGUgZGVjb2RlZCBzdHJpbmcuCi0gICAgaW50ZXJuYWw6OlN0YWNrPFN0
YWNrQWxsb2NhdG9yPiBzdGFja187ICAvLyE8IEEgc3RhY2sgZm9yIHN0b3JpbmcgZGVjb2RlZCBz
dHJpbmcgdGVtcG9yYXJpbHkgZHVyaW5nIG5vbi1kZXN0cnVjdGl2ZSBwYXJzaW5nLgotICAgIFBh
cnNlUmVzdWx0IHBhcnNlUmVzdWx0XzsKLX07IC8vIGNsYXNzIEdlbmVyaWNSZWFkZXIKLQotLy8h
IFJlYWRlciB3aXRoIFVURjggZW5jb2RpbmcgYW5kIGRlZmF1bHQgYWxsb2NhdG9yLgotdHlwZWRl
ZiBHZW5lcmljUmVhZGVyPFVURjg8PiwgVVRGODw+ID4gUmVhZGVyOwotCi1SQVBJREpTT05fTkFN
RVNQQUNFX0VORAotCi0jaWZkZWYgX19HTlVDX18KLVJBUElESlNPTl9ESUFHX1BPUAotI2VuZGlm
Ci0KLSNpZmRlZiBfTVNDX1ZFUgotUkFQSURKU09OX0RJQUdfUE9QCi0jZW5kaWYKLQotI2VuZGlm
IC8vIFJBUElESlNPTl9SRUFERVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vc3Ry
aW5nYnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFy
dHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3N0cmluZ2J1ZmZlci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDlhNTE4MTMyMGM2OWM5ZDcwOTE2ZTU0MjU1NzZjN2Q4ZGE0
NTQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVk
ZS9yYXBpZGpzb24vc3RyaW5nYnVmZmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBA
Ci0vLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAKLS8vCi0vLyBQZXJtaXNzaW9uIGlzIGhl
cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBj
b3B5Ci0vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls
ZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAotLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg
cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotLy8g
dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl
bnNlLCBhbmQvb3Igc2VsbAotLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p
dCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0vLyBmdXJuaXNoZWQgdG8gZG8gc28s
IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotLy8KLS8vIFRoZSBhYm92ZSBj
b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1
ZGVkIGluCi0vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0
d2FyZS4KLS8vCi0vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX
QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotLy8gSU1QTElFRCwgSU5DTFVESU5HIEJV
VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0vLyBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUKLS8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElB
QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLS8vIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZS
T00sCi0vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUg
VVNFIE9SIE9USEVSIERFQUxJTkdTIElOCi0vLyBUSEUgU09GVFdBUkUuCi0KLSNpZm5kZWYgUkFQ
SURKU09OX1NUUklOR0JVRkZFUl9IXwotI2RlZmluZSBSQVBJREpTT05fU1RSSU5HQlVGRkVSX0hf
Ci0KLSNpbmNsdWRlICJyYXBpZGpzb24uaCIKLQotI2lmIFJBUElESlNPTl9IQVNfQ1hYMTFfUlZB
TFVFX1JFRlMKLSNpbmNsdWRlIDx1dGlsaXR5PiAvLyBzdGQ6Om1vdmUKLSNlbmRpZgotCi0jaW5j
bHVkZSAiaW50ZXJuYWwvc3RhY2suaCIKLQotUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgotCi0v
LyEgUmVwcmVzZW50cyBhbiBpbi1tZW1vcnkgb3V0cHV0IHN0cmVhbS4KLS8qIQotICAgIFx0cGFy
YW0gRW5jb2RpbmcgRW5jb2Rpbmcgb2YgdGhlIHN0cmVhbS4KLSAgICBcdHBhcmFtIEFsbG9jYXRv
ciB0eXBlIGZvciBhbGxvY2F0aW5nIG1lbW9yeSBidWZmZXIuCi0gICAgXG5vdGUgaW1wbGVtZW50
cyBTdHJlYW0gY29uY2VwdAotKi8KLXRlbXBsYXRlIDx0eXBlbmFtZSBFbmNvZGluZywgdHlwZW5h
bWUgQWxsb2NhdG9yID0gQ3J0QWxsb2NhdG9yPgotY2xhc3MgR2VuZXJpY1N0cmluZ0J1ZmZlciB7
Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBFbmNvZGluZzo6Q2ggQ2g7Ci0KLSAgICBH
ZW5lcmljU3RyaW5nQnVmZmVyKEFsbG9jYXRvciogYWxsb2NhdG9yID0gMCwgc2l6ZV90IGNhcGFj
aXR5ID0ga0RlZmF1bHRDYXBhY2l0eSkgOiBzdGFja18oYWxsb2NhdG9yLCBjYXBhY2l0eSkge30K
LQotI2lmIFJBUElESlNPTl9IQVNfQ1hYMTFfUlZBTFVFX1JFRlMKLSAgICBHZW5lcmljU3RyaW5n
QnVmZmVyKEdlbmVyaWNTdHJpbmdCdWZmZXImJiByaHMpIDogc3RhY2tfKHN0ZDo6bW92ZShyaHMu
c3RhY2tfKSkge30KLSAgICBHZW5lcmljU3RyaW5nQnVmZmVyJiBvcGVyYXRvcj0oR2VuZXJpY1N0
cmluZ0J1ZmZlciYmIHJocykgewotICAgICAgICBpZiAoJnJocyAhPSB0aGlzKQotICAgICAgICAg
ICAgc3RhY2tfID0gc3RkOjptb3ZlKHJocy5zdGFja18pOwotICAgICAgICByZXR1cm4gKnRoaXM7
Ci0gICAgfQotI2VuZGlmCi0KLSAgICB2b2lkIFB1dChDaCBjKSB7ICpzdGFja18udGVtcGxhdGUg
UHVzaDxDaD4oKSA9IGM7IH0KLSAgICB2b2lkIEZsdXNoKCkge30KLQotICAgIHZvaWQgQ2xlYXIo
KSB7IHN0YWNrXy5DbGVhcigpOyB9Ci0gICAgdm9pZCBTaHJpbmtUb0ZpdCgpIHsKLSAgICAgICAg
Ly8gUHVzaCBhbmQgcG9wIGEgbnVsbCB0ZXJtaW5hdG9yLiBUaGlzIGlzIHNhZmUuCi0gICAgICAg
ICpzdGFja18udGVtcGxhdGUgUHVzaDxDaD4oKSA9ICdcMCc7Ci0gICAgICAgIHN0YWNrXy5TaHJp
bmtUb0ZpdCgpOwotICAgICAgICBzdGFja18udGVtcGxhdGUgUG9wPENoPigxKTsKLSAgICB9Ci0g
ICAgQ2gqIFB1c2goc2l6ZV90IGNvdW50KSB7IHJldHVybiBzdGFja18udGVtcGxhdGUgUHVzaDxD
aD4oY291bnQpOyB9Ci0gICAgdm9pZCBQb3Aoc2l6ZV90IGNvdW50KSB7IHN0YWNrXy50ZW1wbGF0
ZSBQb3A8Q2g+KGNvdW50KTsgfQotCi0gICAgY29uc3QgQ2gqIEdldFN0cmluZygpIGNvbnN0IHsK
LSAgICAgICAgLy8gUHVzaCBhbmQgcG9wIGEgbnVsbCB0ZXJtaW5hdG9yLiBUaGlzIGlzIHNhZmUu
Ci0gICAgICAgICpzdGFja18udGVtcGxhdGUgUHVzaDxDaD4oKSA9ICdcMCc7Ci0gICAgICAgIHN0
YWNrXy50ZW1wbGF0ZSBQb3A8Q2g+KDEpOwotCi0gICAgICAgIHJldHVybiBzdGFja18udGVtcGxh
dGUgQm90dG9tPENoPigpOwotICAgIH0KLQotICAgIHNpemVfdCBHZXRTaXplKCkgY29uc3QgeyBy
ZXR1cm4gc3RhY2tfLkdldFNpemUoKTsgfQotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBrRGVm
YXVsdENhcGFjaXR5ID0gMjU2OwotICAgIG11dGFibGUgaW50ZXJuYWw6OlN0YWNrPEFsbG9jYXRv
cj4gc3RhY2tfOwotCi1wcml2YXRlOgotICAgIC8vIFByb2hpYml0IGNvcHkgY29uc3RydWN0b3Ig
JiBhc3NpZ25tZW50IG9wZXJhdG9yLgotICAgIEdlbmVyaWNTdHJpbmdCdWZmZXIoY29uc3QgR2Vu
ZXJpY1N0cmluZ0J1ZmZlciYpOwotICAgIEdlbmVyaWNTdHJpbmdCdWZmZXImIG9wZXJhdG9yPShj
b25zdCBHZW5lcmljU3RyaW5nQnVmZmVyJik7Ci19OwotCi0vLyEgU3RyaW5nIGJ1ZmZlciB3aXRo
IFVURjggZW5jb2RpbmcKLXR5cGVkZWYgR2VuZXJpY1N0cmluZ0J1ZmZlcjxVVEY4PD4gPiBTdHJp
bmdCdWZmZXI7Ci0KLS8vISBJbXBsZW1lbnQgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBQdXROKCkg
d2l0aCBtZW1zZXQoKSBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgotdGVtcGxhdGU8PgotaW5saW5l
IHZvaWQgUHV0TihHZW5lcmljU3RyaW5nQnVmZmVyPFVURjg8PiA+JiBzdHJlYW0sIGNoYXIgYywg
c2l6ZV90IG4pIHsKLSAgICBzdGQ6Om1lbXNldChzdHJlYW0uc3RhY2tfLlB1c2g8Y2hhcj4obiks
IGMsIG4gKiBzaXplb2YoYykpOwotfQotCi1SQVBJREpTT05fTkFNRVNQQUNFX0VORAotCi0jZW5k
aWYgLy8gUkFQSURKU09OX1NUUklOR0JVRkZFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlk
anNvbi93cml0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9w
YXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vd3JpdGVyLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDk4OTMxZmUzMWE5NTk3OTllOWMwYjNjODNiYTRhM2ZiNzRlYmViM2Uu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3Jh
cGlkanNvbi93cml0ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDM5MSArMCwwIEBACi0vLyBDb3B5
cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAKLS8vCi0vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu
dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0vLyBv
ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi
U29mdHdhcmUiKSwgdG8gZGVhbAotLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp
b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotLy8gdG8gdXNlLCBj
b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv
b3Igc2VsbAotLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z
IHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg
dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotLy8KLS8vIFRoZSBhYm92ZSBjb3B5cmlnaHQg
bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0v
LyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLS8v
Ci0vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP
RiBBTlkgS0lORCwgRVhQUkVTUyBPUgotLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN
SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0vLyBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUKLS8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB
TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLS8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB
Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi0vLyBP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U
SEVSIERFQUxJTkdTIElOCi0vLyBUSEUgU09GVFdBUkUuCi0KLSNpZm5kZWYgUkFQSURKU09OX1dS
SVRFUl9IXwotI2RlZmluZSBSQVBJREpTT05fV1JJVEVSX0hfCi0KLSNpbmNsdWRlICJyYXBpZGpz
b24uaCIKLSNpbmNsdWRlICJpbnRlcm5hbC9zdGFjay5oIgotI2luY2x1ZGUgImludGVybmFsL3N0
cmZ1bmMuaCIKLSNpbmNsdWRlICJpbnRlcm5hbC9kdG9hLmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwv
aXRvYS5oIgotI2luY2x1ZGUgInN0cmluZ2J1ZmZlci5oIgotI2luY2x1ZGUgPG5ldz4gICAgICAv
LyBwbGFjZW1lbnQgbmV3Ci0KLSNpZmRlZiBfTVNDX1ZFUgotUkFQSURKU09OX0RJQUdfUFVTSAot
UkFQSURKU09OX0RJQUdfT0ZGKDQxMjcpIC8vIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29u
c3RhbnQKLSNlbmRpZgotCi1SQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCi0KLS8vISBKU09OIHdy
aXRlcgotLyohIFdyaXRlciBpbXBsZW1lbnRzIHRoZSBjb25jZXB0IEhhbmRsZXIuCi0gICAgSXQg
Z2VuZXJhdGVzIEpTT04gdGV4dCBieSBldmVudHMgdG8gYW4gb3V0cHV0IG9zLgotCi0gICAgVXNl
ciBtYXkgcHJvZ3JhbW1hdGljYWxseSBjYWxscyB0aGUgZnVuY3Rpb25zIG9mIGEgd3JpdGVyIHRv
IGdlbmVyYXRlIEpTT04gdGV4dC4KLQotICAgIE9uIHRoZSBvdGhlciBzaWRlLCBhIHdyaXRlciBj
YW4gYWxzbyBiZSBwYXNzZWQgdG8gb2JqZWN0cyB0aGF0IGdlbmVyYXRlcyBldmVudHMsIAotCi0g
ICAgZm9yIGV4YW1wbGUgUmVhZGVyOjpQYXJzZSgpIGFuZCBEb2N1bWVudDo6QWNjZXB0KCkuCi0K
LSAgICBcdHBhcmFtIE91dHB1dFN0cmVhbSBUeXBlIG9mIG91dHB1dCBzdHJlYW0uCi0gICAgXHRw
YXJhbSBTb3VyY2VFbmNvZGluZyBFbmNvZGluZyBvZiBzb3VyY2Ugc3RyaW5nLgotICAgIFx0cGFy
YW0gVGFyZ2V0RW5jb2RpbmcgRW5jb2Rpbmcgb2Ygb3V0cHV0IHN0cmVhbS4KLSAgICBcdHBhcmFt
IFN0YWNrQWxsb2NhdG9yIFR5cGUgb2YgYWxsb2NhdG9yIGZvciBhbGxvY2F0aW5nIG1lbW9yeSBv
ZiBzdGFjay4KLSAgICBcbm90ZSBpbXBsZW1lbnRzIEhhbmRsZXIgY29uY2VwdAotKi8KLXRlbXBs
YXRlPHR5cGVuYW1lIE91dHB1dFN0cmVhbSwgdHlwZW5hbWUgU291cmNlRW5jb2RpbmcgPSBVVEY4
PD4sIHR5cGVuYW1lIFRhcmdldEVuY29kaW5nID0gVVRGODw+LCB0eXBlbmFtZSBTdGFja0FsbG9j
YXRvciA9IENydEFsbG9jYXRvcj4KLWNsYXNzIFdyaXRlciB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRl
ZiB0eXBlbmFtZSBTb3VyY2VFbmNvZGluZzo6Q2ggQ2g7Ci0KLSAgICAvLyEgQ29uc3RydWN0b3IK
LSAgICAvKiEgXHBhcmFtIG9zIE91dHB1dCBzdHJlYW0uCi0gICAgICAgIFxwYXJhbSBzdGFja0Fs
bG9jYXRvciBVc2VyIHN1cHBsaWVkIGFsbG9jYXRvci4gSWYgaXQgaXMgbnVsbCwgaXQgd2lsbCBj
cmVhdGUgYSBwcml2YXRlIG9uZS4KLSAgICAgICAgXHBhcmFtIGxldmVsRGVwdGggSW5pdGlhbCBj
YXBhY2l0eSBvZiBzdGFjay4KLSAgICAqLwotICAgIGV4cGxpY2l0Ci0gICAgV3JpdGVyKE91dHB1
dFN0cmVhbSYgb3MsIFN0YWNrQWxsb2NhdG9yKiBzdGFja0FsbG9jYXRvciA9IDAsIHNpemVfdCBs
ZXZlbERlcHRoID0ga0RlZmF1bHRMZXZlbERlcHRoKSA6IAotICAgICAgICBvc18oJm9zKSwgbGV2
ZWxfc3RhY2tfKHN0YWNrQWxsb2NhdG9yLCBsZXZlbERlcHRoICogc2l6ZW9mKExldmVsKSksIGhh
c1Jvb3RfKGZhbHNlKSB7fQotCi0gICAgZXhwbGljaXQKLSAgICBXcml0ZXIoU3RhY2tBbGxvY2F0
b3IqIGFsbG9jYXRvciA9IDAsIHNpemVfdCBsZXZlbERlcHRoID0ga0RlZmF1bHRMZXZlbERlcHRo
KSA6Ci0gICAgICAgIG9zXygwKSwgbGV2ZWxfc3RhY2tfKGFsbG9jYXRvciwgbGV2ZWxEZXB0aCAq
IHNpemVvZihMZXZlbCkpLCBoYXNSb290XyhmYWxzZSkge30KLQotICAgIC8vISBSZXNldCB0aGUg
d3JpdGVyIHdpdGggYSBuZXcgc3RyZWFtLgotICAgIC8qIQotICAgICAgICBUaGlzIGZ1bmN0aW9u
IHJlc2V0IHRoZSB3cml0ZXIgd2l0aCBhIG5ldyBzdHJlYW0gYW5kIGRlZmF1bHQgc2V0dGluZ3Ms
Ci0gICAgICAgIGluIG9yZGVyIHRvIG1ha2UgYSBXcml0ZXIgb2JqZWN0IHJldXNhYmxlIGZvciBv
dXRwdXQgbXVsdGlwbGUgSlNPTnMuCi0KLSAgICAgICAgXHBhcmFtIG9zIE5ldyBvdXRwdXQgc3Ry
ZWFtLgotICAgICAgICBcY29kZQotICAgICAgICBXcml0ZXI8T3V0cHV0U3RyZWFtPiB3cml0ZXIo
b3MxKTsKLSAgICAgICAgd3JpdGVyLlN0YXJ0T2JqZWN0KCk7Ci0gICAgICAgIC8vIC4uLgotICAg
ICAgICB3cml0ZXIuRW5kT2JqZWN0KCk7Ci0KLSAgICAgICAgd3JpdGVyLlJlc2V0KG9zMik7Ci0g
ICAgICAgIHdyaXRlci5TdGFydE9iamVjdCgpOwotICAgICAgICAvLyAuLi4KLSAgICAgICAgd3Jp
dGVyLkVuZE9iamVjdCgpOwotICAgICAgICBcZW5kY29kZQotICAgICovCi0gICAgdm9pZCBSZXNl
dChPdXRwdXRTdHJlYW0mIG9zKSB7Ci0gICAgICAgIG9zXyA9ICZvczsKLSAgICAgICAgaGFzUm9v
dF8gPSBmYWxzZTsKLSAgICAgICAgbGV2ZWxfc3RhY2tfLkNsZWFyKCk7Ci0gICAgfQotCi0gICAg
Ly8hIENoZWNrcyB3aGV0aGVyIHRoZSBvdXRwdXQgaXMgYSBjb21wbGV0ZSBKU09OLgotICAgIC8q
IQotICAgICAgICBBIGNvbXBsZXRlIEpTT04gaGFzIGEgY29tcGxldGUgcm9vdCBvYmplY3Qgb3Ig
YXJyYXkuCi0gICAgKi8KLSAgICBib29sIElzQ29tcGxldGUoKSBjb25zdCB7Ci0gICAgICAgIHJl
dHVybiBoYXNSb290XyAmJiBsZXZlbF9zdGFja18uRW1wdHkoKTsKLSAgICB9Ci0KLSAgICAvKiFA
bmFtZSBJbXBsZW1lbnRhdGlvbiBvZiBIYW5kbGVyCi0gICAgICAgIFxzZWUgSGFuZGxlcgotICAg
ICovCi0gICAgLy9AewotCi0gICAgYm9vbCBOdWxsKCkgICAgICAgICAgICAgICAgIHsgUHJlZml4
KGtOdWxsVHlwZSk7ICAgcmV0dXJuIFdyaXRlTnVsbCgpOyB9Ci0gICAgYm9vbCBCb29sKGJvb2wg
YikgICAgICAgICAgIHsgUHJlZml4KGIgPyBrVHJ1ZVR5cGUgOiBrRmFsc2VUeXBlKTsgcmV0dXJu
IFdyaXRlQm9vbChiKTsgfQotICAgIGJvb2wgSW50KGludCBpKSAgICAgICAgICAgICB7IFByZWZp
eChrTnVtYmVyVHlwZSk7IHJldHVybiBXcml0ZUludChpKTsgfQotICAgIGJvb2wgVWludCh1bnNp
Z25lZCB1KSAgICAgICB7IFByZWZpeChrTnVtYmVyVHlwZSk7IHJldHVybiBXcml0ZVVpbnQodSk7
IH0KLSAgICBib29sIEludDY0KGludDY0X3QgaTY0KSAgICAgeyBQcmVmaXgoa051bWJlclR5cGUp
OyByZXR1cm4gV3JpdGVJbnQ2NChpNjQpOyB9Ci0gICAgYm9vbCBVaW50NjQodWludDY0X3QgdTY0
KSAgIHsgUHJlZml4KGtOdW1iZXJUeXBlKTsgcmV0dXJuIFdyaXRlVWludDY0KHU2NCk7IH0KLQot
ICAgIC8vISBXcml0ZXMgdGhlIGdpdmVuIFxjIGRvdWJsZSB2YWx1ZSB0byB0aGUgc3RyZWFtCi0g
ICAgLyohCi0gICAgICAgIFxwYXJhbSBkIFRoZSB2YWx1ZSB0byBiZSB3cml0dGVuLgotICAgICAg
ICBccmV0dXJuIFdoZXRoZXIgaXQgaXMgc3VjY2VlZC4KLSAgICAqLwotICAgIGJvb2wgRG91Ymxl
KGRvdWJsZSBkKSAgICAgICB7IFByZWZpeChrTnVtYmVyVHlwZSk7IHJldHVybiBXcml0ZURvdWJs
ZShkKTsgfQotCi0gICAgYm9vbCBTdHJpbmcoY29uc3QgQ2gqIHN0ciwgU2l6ZVR5cGUgbGVuZ3Ro
LCBib29sIGNvcHkgPSBmYWxzZSkgewotICAgICAgICAodm9pZCljb3B5OwotICAgICAgICBQcmVm
aXgoa1N0cmluZ1R5cGUpOwotICAgICAgICByZXR1cm4gV3JpdGVTdHJpbmcoc3RyLCBsZW5ndGgp
OwotICAgIH0KLQotICAgIGJvb2wgU3RhcnRPYmplY3QoKSB7Ci0gICAgICAgIFByZWZpeChrT2Jq
ZWN0VHlwZSk7Ci0gICAgICAgIG5ldyAobGV2ZWxfc3RhY2tfLnRlbXBsYXRlIFB1c2g8TGV2ZWw+
KCkpIExldmVsKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIFdyaXRlU3RhcnRPYmplY3QoKTsKLSAg
ICB9Ci0KLSAgICBib29sIEtleShjb25zdCBDaCogc3RyLCBTaXplVHlwZSBsZW5ndGgsIGJvb2wg
Y29weSA9IGZhbHNlKSB7IHJldHVybiBTdHJpbmcoc3RyLCBsZW5ndGgsIGNvcHkpOyB9Ci0gICAg
Ci0gICAgYm9vbCBFbmRPYmplY3QoU2l6ZVR5cGUgbWVtYmVyQ291bnQgPSAwKSB7Ci0gICAgICAg
ICh2b2lkKW1lbWJlckNvdW50OwotICAgICAgICBSQVBJREpTT05fQVNTRVJUKGxldmVsX3N0YWNr
Xy5HZXRTaXplKCkgPj0gc2l6ZW9mKExldmVsKSk7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQo
IWxldmVsX3N0YWNrXy50ZW1wbGF0ZSBUb3A8TGV2ZWw+KCktPmluQXJyYXkpOwotICAgICAgICBs
ZXZlbF9zdGFja18udGVtcGxhdGUgUG9wPExldmVsPigxKTsKLSAgICAgICAgYm9vbCByZXQgPSBX
cml0ZUVuZE9iamVjdCgpOwotICAgICAgICBpZiAobGV2ZWxfc3RhY2tfLkVtcHR5KCkpICAgLy8g
ZW5kIG9mIGpzb24gdGV4dAotICAgICAgICAgICAgb3NfLT5GbHVzaCgpOwotICAgICAgICByZXR1
cm4gcmV0OwotICAgIH0KLQotICAgIGJvb2wgU3RhcnRBcnJheSgpIHsKLSAgICAgICAgUHJlZml4
KGtBcnJheVR5cGUpOwotICAgICAgICBuZXcgKGxldmVsX3N0YWNrXy50ZW1wbGF0ZSBQdXNoPExl
dmVsPigpKSBMZXZlbCh0cnVlKTsKLSAgICAgICAgcmV0dXJuIFdyaXRlU3RhcnRBcnJheSgpOwot
ICAgIH0KLQotICAgIGJvb2wgRW5kQXJyYXkoU2l6ZVR5cGUgZWxlbWVudENvdW50ID0gMCkgewot
ICAgICAgICAodm9pZCllbGVtZW50Q291bnQ7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQobGV2
ZWxfc3RhY2tfLkdldFNpemUoKSA+PSBzaXplb2YoTGV2ZWwpKTsKLSAgICAgICAgUkFQSURKU09O
X0FTU0VSVChsZXZlbF9zdGFja18udGVtcGxhdGUgVG9wPExldmVsPigpLT5pbkFycmF5KTsKLSAg
ICAgICAgbGV2ZWxfc3RhY2tfLnRlbXBsYXRlIFBvcDxMZXZlbD4oMSk7Ci0gICAgICAgIGJvb2wg
cmV0ID0gV3JpdGVFbmRBcnJheSgpOwotICAgICAgICBpZiAobGV2ZWxfc3RhY2tfLkVtcHR5KCkp
ICAgLy8gZW5kIG9mIGpzb24gdGV4dAotICAgICAgICAgICAgb3NfLT5GbHVzaCgpOwotICAgICAg
ICByZXR1cm4gcmV0OwotICAgIH0KLSAgICAvL0B9Ci0KLSAgICAvKiEgQG5hbWUgQ29udmVuaWVu
Y2UgZXh0ZW5zaW9ucyAqLwotICAgIC8vQHsKLQotICAgIC8vISBTaW1wbGVyIGJ1dCBzbG93ZXIg
b3ZlcmxvYWQuCi0gICAgYm9vbCBTdHJpbmcoY29uc3QgQ2gqIHN0cikgeyByZXR1cm4gU3RyaW5n
KHN0ciwgaW50ZXJuYWw6OlN0ckxlbihzdHIpKTsgfQotICAgIGJvb2wgS2V5KGNvbnN0IENoKiBz
dHIpIHsgcmV0dXJuIEtleShzdHIsIGludGVybmFsOjpTdHJMZW4oc3RyKSk7IH0KLQotICAgIC8v
QH0KLQotcHJvdGVjdGVkOgotICAgIC8vISBJbmZvcm1hdGlvbiBmb3IgZWFjaCBuZXN0ZWQgbGV2
ZWwKLSAgICBzdHJ1Y3QgTGV2ZWwgewotICAgICAgICBMZXZlbChib29sIGluQXJyYXlfKSA6IHZh
bHVlQ291bnQoMCksIGluQXJyYXkoaW5BcnJheV8pIHt9Ci0gICAgICAgIHNpemVfdCB2YWx1ZUNv
dW50OyAgLy8hPCBudW1iZXIgb2YgdmFsdWVzIGluIHRoaXMgbGV2ZWwKLSAgICAgICAgYm9vbCBp
bkFycmF5OyAgICAgICAvLyE8IHRydWUgaWYgaW4gYXJyYXksIG90aGVyd2lzZSBpbiBvYmplY3QK
LSAgICB9OwotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBrRGVmYXVsdExldmVsRGVwdGggPSAz
MjsKLQotICAgIGJvb2wgV3JpdGVOdWxsKCkgIHsKLSAgICAgICAgb3NfLT5QdXQoJ24nKTsgb3Nf
LT5QdXQoJ3UnKTsgb3NfLT5QdXQoJ2wnKTsgb3NfLT5QdXQoJ2wnKTsgcmV0dXJuIHRydWU7Ci0g
ICAgfQotCi0gICAgYm9vbCBXcml0ZUJvb2woYm9vbCBiKSAgewotICAgICAgICBpZiAoYikgewot
ICAgICAgICAgICAgb3NfLT5QdXQoJ3QnKTsgb3NfLT5QdXQoJ3InKTsgb3NfLT5QdXQoJ3UnKTsg
b3NfLT5QdXQoJ2UnKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG9z
Xy0+UHV0KCdmJyk7IG9zXy0+UHV0KCdhJyk7IG9zXy0+UHV0KCdsJyk7IG9zXy0+UHV0KCdzJyk7
IG9zXy0+UHV0KCdlJyk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
Ci0gICAgYm9vbCBXcml0ZUludChpbnQgaSkgewotICAgICAgICBjaGFyIGJ1ZmZlclsxMV07Ci0g
ICAgICAgIGNvbnN0IGNoYXIqIGVuZCA9IGludGVybmFsOjppMzJ0b2EoaSwgYnVmZmVyKTsKLSAg
ICAgICAgZm9yIChjb25zdCBjaGFyKiBwID0gYnVmZmVyOyBwICE9IGVuZDsgKytwKQotICAgICAg
ICAgICAgb3NfLT5QdXQoKnApOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBi
b29sIFdyaXRlVWludCh1bnNpZ25lZCB1KSB7Ci0gICAgICAgIGNoYXIgYnVmZmVyWzEwXTsKLSAg
ICAgICAgY29uc3QgY2hhciogZW5kID0gaW50ZXJuYWw6OnUzMnRvYSh1LCBidWZmZXIpOwotICAg
ICAgICBmb3IgKGNvbnN0IGNoYXIqIHAgPSBidWZmZXI7IHAgIT0gZW5kOyArK3ApCi0gICAgICAg
ICAgICBvc18tPlB1dCgqcCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGJv
b2wgV3JpdGVJbnQ2NChpbnQ2NF90IGk2NCkgewotICAgICAgICBjaGFyIGJ1ZmZlclsyMV07Ci0g
ICAgICAgIGNvbnN0IGNoYXIqIGVuZCA9IGludGVybmFsOjppNjR0b2EoaTY0LCBidWZmZXIpOwot
ICAgICAgICBmb3IgKGNvbnN0IGNoYXIqIHAgPSBidWZmZXI7IHAgIT0gZW5kOyArK3ApCi0gICAg
ICAgICAgICBvc18tPlB1dCgqcCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAg
IGJvb2wgV3JpdGVVaW50NjQodWludDY0X3QgdTY0KSB7Ci0gICAgICAgIGNoYXIgYnVmZmVyWzIw
XTsKLSAgICAgICAgY2hhciogZW5kID0gaW50ZXJuYWw6OnU2NHRvYSh1NjQsIGJ1ZmZlcik7Ci0g
ICAgICAgIGZvciAoY2hhciogcCA9IGJ1ZmZlcjsgcCAhPSBlbmQ7ICsrcCkKLSAgICAgICAgICAg
IG9zXy0+UHV0KCpwKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBX
cml0ZURvdWJsZShkb3VibGUgZCkgewotICAgICAgICBjaGFyIGJ1ZmZlclsyNV07Ci0gICAgICAg
IGNoYXIqIGVuZCA9IGludGVybmFsOjpkdG9hKGQsIGJ1ZmZlcik7Ci0gICAgICAgIGZvciAoY2hh
ciogcCA9IGJ1ZmZlcjsgcCAhPSBlbmQ7ICsrcCkKLSAgICAgICAgICAgIG9zXy0+UHV0KCpwKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBXcml0ZVN0cmluZyhjb25z
dCBDaCogc3RyLCBTaXplVHlwZSBsZW5ndGgpICB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFy
IGhleERpZ2l0c1sxNl0gPSB7ICcwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcn
LCAnOCcsICc5JywgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJyB9OwotICAgICAgICBzdGF0
aWMgY29uc3QgY2hhciBlc2NhcGVbMjU2XSA9IHsKLSNkZWZpbmUgWjE2IDAsMCwwLDAsMCwwLDAs
MCwwLDAsMCwwLDAsMCwwLDAKLSAgICAgICAgICAgIC8vMCAgICAxICAgIDIgICAgMyAgICA0ICAg
IDUgICAgNiAgICA3ICAgIDggICAgOSAgICBBICAgIEIgICAgQyAgICBEICAgIEUgICAgRgotICAg
ICAgICAgICAgJ3UnLCAndScsICd1JywgJ3UnLCAndScsICd1JywgJ3UnLCAndScsICdiJywgJ3Qn
LCAnbicsICd1JywgJ2YnLCAncicsICd1JywgJ3UnLCAvLyAwMAotICAgICAgICAgICAgJ3UnLCAn
dScsICd1JywgJ3UnLCAndScsICd1JywgJ3UnLCAndScsICd1JywgJ3UnLCAndScsICd1JywgJ3Un
LCAndScsICd1JywgJ3UnLCAvLyAxMAotICAgICAgICAgICAgICAwLCAgIDAsICciJywgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAvLyAyMAotICAgICAgICAgICAgWjE2LCBaMTYsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzMH40RgotICAg
ICAgICAgICAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwnXFwnLCAgIDAsICAgMCwgICAwLCAvLyA1MAotICAgICAgICAgICAgWjE2LCBa
MTYsIFoxNiwgWjE2LCBaMTYsIFoxNiwgWjE2LCBaMTYsIFoxNiwgWjE2ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyA2MH5GRgotI3VuZGVmIFoxNgotICAgICAgICB9OwotCi0gICAg
ICAgIG9zXy0+UHV0KCdcIicpOwotICAgICAgICBHZW5lcmljU3RyaW5nU3RyZWFtPFNvdXJjZUVu
Y29kaW5nPiBpcyhzdHIpOwotICAgICAgICB3aGlsZSAoaXMuVGVsbCgpIDwgbGVuZ3RoKSB7Ci0g
ICAgICAgICAgICBjb25zdCBDaCBjID0gaXMuUGVlaygpOwotICAgICAgICAgICAgaWYgKCFUYXJn
ZXRFbmNvZGluZzo6c3VwcG9ydFVuaWNvZGUgJiYgKHVuc2lnbmVkKWMgPj0gMHg4MCkgewotICAg
ICAgICAgICAgICAgIC8vIFVuaWNvZGUgZXNjYXBpbmcKLSAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBjb2RlcG9pbnQ7Ci0gICAgICAgICAgICAgICAgaWYgKCFTb3VyY2VFbmNvZGluZzo6RGVjb2Rl
KGlzLCAmY29kZXBvaW50KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgICAgIG9zXy0+UHV0KCdcXCcpOwotICAgICAgICAgICAgICAgIG9zXy0+UHV0KCd1
Jyk7Ci0gICAgICAgICAgICAgICAgaWYgKGNvZGVwb2ludCA8PSAweEQ3RkYgfHwgKGNvZGVwb2lu
dCA+PSAweEUwMDAgJiYgY29kZXBvaW50IDw9IDB4RkZGRikpIHsKLSAgICAgICAgICAgICAgICAg
ICAgb3NfLT5QdXQoaGV4RGlnaXRzWyhjb2RlcG9pbnQgPj4gMTIpICYgMTVdKTsKLSAgICAgICAg
ICAgICAgICAgICAgb3NfLT5QdXQoaGV4RGlnaXRzWyhjb2RlcG9pbnQgPj4gIDgpICYgMTVdKTsK
LSAgICAgICAgICAgICAgICAgICAgb3NfLT5QdXQoaGV4RGlnaXRzWyhjb2RlcG9pbnQgPj4gIDQp
ICYgMTVdKTsKLSAgICAgICAgICAgICAgICAgICAgb3NfLT5QdXQoaGV4RGlnaXRzWyhjb2RlcG9p
bnQgICAgICApICYgMTVdKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxz
ZSBpZiAoY29kZXBvaW50ID49IDB4MDEwMDAwICYmIGNvZGVwb2ludCA8PSAweDEwRkZGRikgICAg
ewotICAgICAgICAgICAgICAgICAgICAvLyBTdXJyb2dhdGUgcGFpcgotICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBzID0gY29kZXBvaW50IC0gMHgwMTAwMDA7Ci0gICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGxlYWQgPSAocyA+PiAxMCkgKyAweEQ4MDA7Ci0gICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIHRyYWlsID0gKHMgJiAweDNGRikgKyAweERDMDA7Ci0gICAgICAgICAgICAg
ICAgICAgIG9zXy0+UHV0KGhleERpZ2l0c1sobGVhZCA+PiAxMikgJiAxNV0pOwotICAgICAgICAg
ICAgICAgICAgICBvc18tPlB1dChoZXhEaWdpdHNbKGxlYWQgPj4gIDgpICYgMTVdKTsKLSAgICAg
ICAgICAgICAgICAgICAgb3NfLT5QdXQoaGV4RGlnaXRzWyhsZWFkID4+ICA0KSAmIDE1XSk7Ci0g
ICAgICAgICAgICAgICAgICAgIG9zXy0+UHV0KGhleERpZ2l0c1sobGVhZCAgICAgICkgJiAxNV0p
OwotICAgICAgICAgICAgICAgICAgICBvc18tPlB1dCgnXFwnKTsKLSAgICAgICAgICAgICAgICAg
ICAgb3NfLT5QdXQoJ3UnKTsKLSAgICAgICAgICAgICAgICAgICAgb3NfLT5QdXQoaGV4RGlnaXRz
Wyh0cmFpbCA+PiAxMikgJiAxNV0pOwotICAgICAgICAgICAgICAgICAgICBvc18tPlB1dChoZXhE
aWdpdHNbKHRyYWlsID4+ICA4KSAmIDE1XSk7Ci0gICAgICAgICAgICAgICAgICAgIG9zXy0+UHV0
KGhleERpZ2l0c1sodHJhaWwgPj4gIDQpICYgMTVdKTsKLSAgICAgICAgICAgICAgICAgICAgb3Nf
LT5QdXQoaGV4RGlnaXRzWyh0cmFpbCAgICAgICkgJiAxNV0pOyAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOyAgIC8vIGludmFsaWQgY29kZSBwb2ludAotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZSBpZiAoKHNpemVvZihDaCkgPT0gMSB8fCAodW5zaWduZWQpYyA8
IDI1NikgJiYgZXNjYXBlWyh1bnNpZ25lZCBjaGFyKWNdKSAgewotICAgICAgICAgICAgICAgIGlz
LlRha2UoKTsKLSAgICAgICAgICAgICAgICBvc18tPlB1dCgnXFwnKTsKLSAgICAgICAgICAgICAg
ICBvc18tPlB1dChlc2NhcGVbKHVuc2lnbmVkIGNoYXIpY10pOwotICAgICAgICAgICAgICAgIGlm
IChlc2NhcGVbKHVuc2lnbmVkIGNoYXIpY10gPT0gJ3UnKSB7Ci0gICAgICAgICAgICAgICAgICAg
IG9zXy0+UHV0KCcwJyk7Ci0gICAgICAgICAgICAgICAgICAgIG9zXy0+UHV0KCcwJyk7Ci0gICAg
ICAgICAgICAgICAgICAgIG9zXy0+UHV0KGhleERpZ2l0c1sodW5zaWduZWQgY2hhciljID4+IDRd
KTsKLSAgICAgICAgICAgICAgICAgICAgb3NfLT5QdXQoaGV4RGlnaXRzWyh1bnNpZ25lZCBjaGFy
KWMgJiAweEZdKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgVHJhbnNjb2RlcjxTb3VyY2VFbmNvZGluZywgVGFyZ2V0
RW5jb2Rpbmc+OjpUcmFuc2NvZGUoaXMsICpvc18pOwotICAgICAgICB9Ci0gICAgICAgIG9zXy0+
UHV0KCdcIicpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBib29sIFdyaXRl
U3RhcnRPYmplY3QoKSB7IG9zXy0+UHV0KCd7Jyk7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBX
cml0ZUVuZE9iamVjdCgpICAgeyBvc18tPlB1dCgnfScpOyByZXR1cm4gdHJ1ZTsgfQotICAgIGJv
b2wgV3JpdGVTdGFydEFycmF5KCkgIHsgb3NfLT5QdXQoJ1snKTsgcmV0dXJuIHRydWU7IH0KLSAg
ICBib29sIFdyaXRlRW5kQXJyYXkoKSAgICB7IG9zXy0+UHV0KCddJyk7IHJldHVybiB0cnVlOyB9
Ci0KLSAgICB2b2lkIFByZWZpeChUeXBlIHR5cGUpIHsKLSAgICAgICAgKHZvaWQpdHlwZTsKLSAg
ICAgICAgaWYgKGxldmVsX3N0YWNrXy5HZXRTaXplKCkgIT0gMCkgeyAvLyB0aGlzIHZhbHVlIGlz
IG5vdCBhdCByb290Ci0gICAgICAgICAgICBMZXZlbCogbGV2ZWwgPSBsZXZlbF9zdGFja18udGVt
cGxhdGUgVG9wPExldmVsPigpOwotICAgICAgICAgICAgaWYgKGxldmVsLT52YWx1ZUNvdW50ID4g
MCkgewotICAgICAgICAgICAgICAgIGlmIChsZXZlbC0+aW5BcnJheSkgCi0gICAgICAgICAgICAg
ICAgICAgIG9zXy0+UHV0KCcsJyk7IC8vIGFkZCBjb21tYSBpZiBpdCBpcyBub3QgdGhlIGZpcnN0
IGVsZW1lbnQgaW4gYXJyYXkKLSAgICAgICAgICAgICAgICBlbHNlICAvLyBpbiBvYmplY3QKLSAg
ICAgICAgICAgICAgICAgICAgb3NfLT5QdXQoKGxldmVsLT52YWx1ZUNvdW50ICUgMiA9PSAwKSA/
ICcsJyA6ICc6Jyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIWxldmVsLT5pbkFy
cmF5ICYmIGxldmVsLT52YWx1ZUNvdW50ICUgMiA9PSAwKQotICAgICAgICAgICAgICAgIFJBUElE
SlNPTl9BU1NFUlQodHlwZSA9PSBrU3RyaW5nVHlwZSk7ICAvLyBpZiBpdCdzIGluIG9iamVjdCwg
dGhlbiBldmVuIG51bWJlciBzaG91bGQgYmUgYSBuYW1lCi0gICAgICAgICAgICBsZXZlbC0+dmFs
dWVDb3VudCsrOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgUkFQSURK
U09OX0FTU0VSVCghaGFzUm9vdF8pOyAgICAvLyBTaG91bGQgb25seSBoYXMgb25lIGFuZCBvbmx5
IG9uZSByb290LgotICAgICAgICAgICAgaGFzUm9vdF8gPSB0cnVlOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgT3V0cHV0U3RyZWFtKiBvc187Ci0gICAgaW50ZXJuYWw6OlN0YWNrPFN0YWNrQWxs
b2NhdG9yPiBsZXZlbF9zdGFja187Ci0gICAgYm9vbCBoYXNSb290XzsKLQotcHJpdmF0ZToKLSAg
ICAvLyBQcm9oaWJpdCBjb3B5IGNvbnN0cnVjdG9yICYgYXNzaWdubWVudCBvcGVyYXRvci4KLSAg
ICBXcml0ZXIoY29uc3QgV3JpdGVyJik7Ci0gICAgV3JpdGVyJiBvcGVyYXRvcj0oY29uc3QgV3Jp
dGVyJik7Ci19OwotCi0vLyBGdWxsIHNwZWNpYWxpemF0aW9uIGZvciBTdHJpbmdTdHJlYW0gdG8g
cHJldmVudCBtZW1vcnkgY29weWluZwotCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCBXcml0ZXI8
U3RyaW5nQnVmZmVyPjo6V3JpdGVJbnQoaW50IGkpIHsKLSAgICBjaGFyICpidWZmZXIgPSBvc18t
PlB1c2goMTEpOwotICAgIGNvbnN0IGNoYXIqIGVuZCA9IGludGVybmFsOjppMzJ0b2EoaSwgYnVm
ZmVyKTsKLSAgICBvc18tPlBvcCgxMSAtIChlbmQgLSBidWZmZXIpKTsKLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotdGVtcGxhdGU8PgotaW5saW5lIGJvb2wgV3JpdGVyPFN0cmluZ0J1ZmZlcj46Oldy
aXRlVWludCh1bnNpZ25lZCB1KSB7Ci0gICAgY2hhciAqYnVmZmVyID0gb3NfLT5QdXNoKDEwKTsK
LSAgICBjb25zdCBjaGFyKiBlbmQgPSBpbnRlcm5hbDo6dTMydG9hKHUsIGJ1ZmZlcik7Ci0gICAg
b3NfLT5Qb3AoMTAgLSAoZW5kIC0gYnVmZmVyKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRl
bXBsYXRlPD4KLWlubGluZSBib29sIFdyaXRlcjxTdHJpbmdCdWZmZXI+OjpXcml0ZUludDY0KGlu
dDY0X3QgaTY0KSB7Ci0gICAgY2hhciAqYnVmZmVyID0gb3NfLT5QdXNoKDIxKTsKLSAgICBjb25z
dCBjaGFyKiBlbmQgPSBpbnRlcm5hbDo6aTY0dG9hKGk2NCwgYnVmZmVyKTsKLSAgICBvc18tPlBv
cCgyMSAtIChlbmQgLSBidWZmZXIpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGU8
PgotaW5saW5lIGJvb2wgV3JpdGVyPFN0cmluZ0J1ZmZlcj46OldyaXRlVWludDY0KHVpbnQ2NF90
IHUpIHsKLSAgICBjaGFyICpidWZmZXIgPSBvc18tPlB1c2goMjApOwotICAgIGNvbnN0IGNoYXIq
IGVuZCA9IGludGVybmFsOjp1NjR0b2EodSwgYnVmZmVyKTsKLSAgICBvc18tPlBvcCgyMCAtIChl
bmQgLSBidWZmZXIpKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGU8PgotaW5saW5l
IGJvb2wgV3JpdGVyPFN0cmluZ0J1ZmZlcj46OldyaXRlRG91YmxlKGRvdWJsZSBkKSB7Ci0gICAg
Y2hhciAqYnVmZmVyID0gb3NfLT5QdXNoKDI1KTsKLSAgICBjaGFyKiBlbmQgPSBpbnRlcm5hbDo6
ZHRvYShkLCBidWZmZXIpOwotICAgIG9zXy0+UG9wKDI1IC0gKGVuZCAtIGJ1ZmZlcikpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi1SQVBJREpTT05fTkFNRVNQQUNFX0VORAotCi0jaWZkZWYgX01T
Q19WRVIKLVJBUElESlNPTl9ESUFHX1BPUAotI2VuZGlmCi0KLSNlbmRpZiAvLyBSQVBJREpTT05f
UkFQSURKU09OX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhp
cmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuY3Bw
CmluZGV4IGZhNmM4YjhkNzliYWRkMGJlOWQwNzgyZGVlMzg5MTFiNzFjNmVhNDguLmFhZGI4NzU1
M2NhNWQ2ZGJhOWIxOGNmNGU3NjEyMTU3Yzc0NmI0ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxl
ci9BcnJheUJvdW5kc0NsYW1wZXIuY3BwCkBAIC0zOCw3ICszOCwxMSBAQCBjb25zdCBjaGFyKiBr
SW50Q2xhbXBCZWdpbiA9ICIvLyBCRUdJTjogR2VuZXJhdGVkIGNvZGUgZm9yIGFycmF5IGJvdW5k
cyBjbGFtcGluZwogY29uc3QgY2hhcioga0ludENsYW1wRW5kID0gIi8vIEVORDogR2VuZXJhdGVk
IGNvZGUgZm9yIGFycmF5IGJvdW5kcyBjbGFtcGluZ1xuXG4iOwogY29uc3QgY2hhcioga0ludENs
YW1wRGVmaW5pdGlvbiA9ICJpbnQgd2ViZ2xfaW50X2NsYW1wKGludCB2YWx1ZSwgaW50IG1pblZh
bHVlLCBpbnQgbWF4VmFsdWUpIHsgcmV0dXJuICgodmFsdWUgPCBtaW5WYWx1ZSkgPyBtaW5WYWx1
ZSA6ICgodmFsdWUgPiBtYXhWYWx1ZSkgPyBtYXhWYWx1ZSA6IHZhbHVlKSk7IH1cblxuIjsKIAot
bmFtZXNwYWNlIHsKK25hbWVzcGFjZSBzaAoreworCituYW1lc3BhY2UKK3sKIAogY2xhc3MgQXJy
YXlCb3VuZHNDbGFtcGVyTWFya2VyIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIgewogcHVibGlj
OgpAQCAtMTA1LDMgKzEwOSw1IEBAIHZvaWQgQXJyYXlCb3VuZHNDbGFtcGVyOjpPdXRwdXRDbGFt
cGluZ0Z1bmN0aW9uRGVmaW5pdGlvbihUSW5mb1NpbmtCYXNlJiBvdXQpIGNvCiAgICAgfQogICAg
IG91dCA8PCBrSW50Q2xhbXBCZWdpbiA8PCBrSW50Q2xhbXBEZWZpbml0aW9uIDw8IGtJbnRDbGFt
cEVuZDsKIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlC
b3VuZHNDbGFtcGVyLmgKaW5kZXggMjc5MTdlNmVlY2M3MmQzNzRlYzYwZDljODBmOTA4OTA0MmNl
YWE3OC4uYTRjNDA3Zjc2MGZjZjAzYTFjZDc3Y2ExMDE1NTZmZDQwNGJmZDZkZSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5
Qm91bmRzQ2xhbXBlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9w
YXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1wZXIuaApAQCAtMjksOCArMjksMTIgQEAKICNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCiAKLWNsYXNzIEFycmF5Qm91bmRzQ2xhbXBlciB7
Ci1wdWJsaWM6CituYW1lc3BhY2Ugc2gKK3sKKworY2xhc3MgQXJyYXlCb3VuZHNDbGFtcGVyCit7
CisgIHB1YmxpYzoKICAgICBBcnJheUJvdW5kc0NsYW1wZXIoKTsKIAogICAgIC8vIE11c3QgYmUg
c2V0IGJlZm9yZSBjb21waWxpbmcgYW55IHNoYWRlcnMgdG8gZW5zdXJlIGNvbnNpc3RlbmN5CkBA
IC01Nyw0ICs2MSw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtQXJyYXlCb3VuZHNDbGFtcERlZmlu
aXRpb25OZWVkZWQ7CiB9OwogCit9ICAvLyBuYW1lc3BhY2Ugc2gKKwogI2VuZGlmIC8vIFRISVJE
X1BBUlRZX0NPTVBJTEVSX0FSUkFZQk9VTkRTQ0xBTVBFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2tocm9ub3MvR0wvd2dsZXh0LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkva2hyb25vcy9HTC93Z2xleHQu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFiYTQxMDkxYzQ0MjIyNjlhZmZiNzU4
M2I4OGYyMjEzOTE0MjY1MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkva2hyb25vcy9H
TC93Z2xleHQuaAorKysgL2Rldi9udWxsCkBAIC0xLDg0MCArMCwwIEBACi0jaWZuZGVmIF9fd2ds
ZXh0X2hfCi0jZGVmaW5lIF9fd2dsZXh0X2hfIDEKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRl
cm4gIkMiIHsKLSNlbmRpZgotCi0vKgotKiogQ29weXJpZ2h0IChjKSAyMDEzLTIwMTQgVGhlIEto
cm9ub3MgR3JvdXAgSW5jLgotKioKLSoqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy
ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCi0qKiBjb3B5IG9mIHRoaXMg
c29mdHdhcmUgYW5kL29yIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCi0qKiAi
TWF0ZXJpYWxzIiksIHRvIGRlYWwgaW4gdGhlIE1hdGVyaWFscyB3aXRob3V0IHJlc3RyaWN0aW9u
LCBpbmNsdWRpbmcKLSoqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29w
eSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKLSoqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFu
ZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgTWF0ZXJpYWxzLCBhbmQgdG8KLSoqIHBlcm1pdCBwZXJz
b25zIHRvIHdob20gdGhlIE1hdGVyaWFscyBhcmUgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0
IHRvCi0qKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0qKgotKiogVGhlIGFib3ZlIGNvcHly
aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQK
LSoqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIE1hdGVyaWFs
cy4KLSoqCi0qKiBUSEUgTUFURVJJQUxTIEFSRSBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB
UlJBTlRZIE9GIEFOWSBLSU5ELAotKiogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVU
IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCi0qKiBNRVJDSEFOVEFCSUxJVFksIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuCi0qKiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC
TEUgRk9SIEFOWQotKiogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVS
IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwKLSoqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H
IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFCi0qKiBNQVRFUklBTFMgT1Ig
VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgTUFURVJJQUxTLgotKi8KLS8qCi0qKiBU
aGlzIGhlYWRlciBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgS2hyb25vcyBPcGVuR0wgLyBPcGVuR0wg
RVMgWE1MCi0qKiBBUEkgUmVnaXN0cnkuIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIFJlZ2lz
dHJ5LCBnZW5lcmF0b3Igc2NyaXB0cwotKiogdXNlZCB0byBtYWtlIHRoZSBoZWFkZXIsIGFuZCB0
aGUgaGVhZGVyIGNhbiBiZSBmb3VuZCBhdAotKiogICBodHRwOi8vd3d3Lm9wZW5nbC5vcmcvcmVn
aXN0cnkvCi0qKgotKiogS2hyb25vcyAkUmV2aXNpb246IDI3Njg0ICQgb24gJERhdGU6IDIwMTQt
MDgtMTEgMDE6MjE6MzUgLTA3MDAgKE1vbiwgMTEgQXVnIDIwMTQpICQKLSovCi0KLSNpZiBkZWZp
bmVkKF9XSU4zMikgJiYgIWRlZmluZWQoQVBJRU5UUlkpICYmICFkZWZpbmVkKF9fQ1lHV0lOX18p
ICYmICFkZWZpbmVkKF9fU0NJVEVDSF9TTkFQX18pCi0jZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01F
QU4gMQotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLSNlbmRpZgotCi0jZGVmaW5lIFdHTF9XR0xFWFRf
VkVSU0lPTiAyMDE0MDgxMAotCi0vKiBHZW5lcmF0ZWQgQyBoZWFkZXIgZm9yOgotICogQVBJOiB3
Z2wKLSAqIFZlcnNpb25zIGNvbnNpZGVyZWQ6IC4qCi0gKiBWZXJzaW9ucyBlbWl0dGVkOiBfbm9t
YXRjaF9eCi0gKiBEZWZhdWx0IGV4dGVuc2lvbnMgaW5jbHVkZWQ6IHdnbAotICogQWRkaXRpb25h
bCBleHRlbnNpb25zIGluY2x1ZGVkOiBfbm9tYXRjaF9eCi0gKiBFeHRlbnNpb25zIHJlbW92ZWQ6
IF9ub21hdGNoX14KLSAqLwotCi0jaWZuZGVmIFdHTF9BUkJfYnVmZmVyX3JlZ2lvbgotI2RlZmlu
ZSBXR0xfQVJCX2J1ZmZlcl9yZWdpb24gMQotI2RlZmluZSBXR0xfRlJPTlRfQ09MT1JfQlVGRkVS
X0JJVF9BUkIgICAgMHgwMDAwMDAwMQotI2RlZmluZSBXR0xfQkFDS19DT0xPUl9CVUZGRVJfQklU
X0FSQiAgICAgMHgwMDAwMDAwMgotI2RlZmluZSBXR0xfREVQVEhfQlVGRkVSX0JJVF9BUkIgICAg
ICAgICAgMHgwMDAwMDAwNAotI2RlZmluZSBXR0xfU1RFTkNJTF9CVUZGRVJfQklUX0FSQiAgICAg
ICAgMHgwMDAwMDAwOAotdHlwZWRlZiBIQU5ETEUgKFdJTkFQSSAqIFBGTldHTENSRUFURUJVRkZF
UlJFR0lPTkFSQlBST0MpIChIREMgaERDLCBpbnQgaUxheWVyUGxhbmUsIFVJTlQgdVR5cGUpOwot
dHlwZWRlZiBWT0lEIChXSU5BUEkgKiBQRk5XR0xERUxFVEVCVUZGRVJSRUdJT05BUkJQUk9DKSAo
SEFORExFIGhSZWdpb24pOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xTQVZFQlVGRkVS
UkVHSU9OQVJCUFJPQykgKEhBTkRMRSBoUmVnaW9uLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwg
aW50IGhlaWdodCk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTFJFU1RPUkVCVUZGRVJS
RUdJT05BUkJQUk9DKSAoSEFORExFIGhSZWdpb24sIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBp
bnQgaGVpZ2h0LCBpbnQgeFNyYywgaW50IHlTcmMpOwotI2lmZGVmIFdHTF9XR0xFWFRfUFJPVE9U
WVBFUwotSEFORExFIFdJTkFQSSB3Z2xDcmVhdGVCdWZmZXJSZWdpb25BUkIgKEhEQyBoREMsIGlu
dCBpTGF5ZXJQbGFuZSwgVUlOVCB1VHlwZSk7Ci1WT0lEIFdJTkFQSSB3Z2xEZWxldGVCdWZmZXJS
ZWdpb25BUkIgKEhBTkRMRSBoUmVnaW9uKTsKLUJPT0wgV0lOQVBJIHdnbFNhdmVCdWZmZXJSZWdp
b25BUkIgKEhBTkRMRSBoUmVnaW9uLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdo
dCk7Ci1CT09MIFdJTkFQSSB3Z2xSZXN0b3JlQnVmZmVyUmVnaW9uQVJCIChIQU5ETEUgaFJlZ2lv
biwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCB4U3JjLCBpbnQgeVNy
Yyk7Ci0jZW5kaWYKLSNlbmRpZiAvKiBXR0xfQVJCX2J1ZmZlcl9yZWdpb24gKi8KLQotI2lmbmRl
ZiBXR0xfQVJCX2NvbnRleHRfZmx1c2hfY29udHJvbAotI2RlZmluZSBXR0xfQVJCX2NvbnRleHRf
Zmx1c2hfY29udHJvbCAxCi0jZGVmaW5lIFdHTF9DT05URVhUX1JFTEVBU0VfQkVIQVZJT1JfQVJC
ICAweDIwOTcKLSNkZWZpbmUgV0dMX0NPTlRFWFRfUkVMRUFTRV9CRUhBVklPUl9OT05FX0FSQiAw
Ci0jZGVmaW5lIFdHTF9DT05URVhUX1JFTEVBU0VfQkVIQVZJT1JfRkxVU0hfQVJCIDB4MjA5OAot
I2VuZGlmIC8qIFdHTF9BUkJfY29udGV4dF9mbHVzaF9jb250cm9sICovCi0KLSNpZm5kZWYgV0dM
X0FSQl9jcmVhdGVfY29udGV4dAotI2RlZmluZSBXR0xfQVJCX2NyZWF0ZV9jb250ZXh0IDEKLSNk
ZWZpbmUgV0dMX0NPTlRFWFRfREVCVUdfQklUX0FSQiAgICAgICAgIDB4MDAwMDAwMDEKLSNkZWZp
bmUgV0dMX0NPTlRFWFRfRk9SV0FSRF9DT01QQVRJQkxFX0JJVF9BUkIgMHgwMDAwMDAwMgotI2Rl
ZmluZSBXR0xfQ09OVEVYVF9NQUpPUl9WRVJTSU9OX0FSQiAgICAgMHgyMDkxCi0jZGVmaW5lIFdH
TF9DT05URVhUX01JTk9SX1ZFUlNJT05fQVJCICAgICAweDIwOTIKLSNkZWZpbmUgV0dMX0NPTlRF
WFRfTEFZRVJfUExBTkVfQVJCICAgICAgIDB4MjA5MwotI2RlZmluZSBXR0xfQ09OVEVYVF9GTEFH
U19BUkIgICAgICAgICAgICAgMHgyMDk0Ci0jZGVmaW5lIEVSUk9SX0lOVkFMSURfVkVSU0lPTl9B
UkIgICAgICAgICAweDIwOTUKLXR5cGVkZWYgSEdMUkMgKFdJTkFQSSAqIFBGTldHTENSRUFURUNP
TlRFWFRBVFRSSUJTQVJCUFJPQykgKEhEQyBoREMsIEhHTFJDIGhTaGFyZUNvbnRleHQsIGNvbnN0
IGludCAqYXR0cmliTGlzdCk7Ci0jaWZkZWYgV0dMX1dHTEVYVF9QUk9UT1RZUEVTCi1IR0xSQyBX
SU5BUEkgd2dsQ3JlYXRlQ29udGV4dEF0dHJpYnNBUkIgKEhEQyBoREMsIEhHTFJDIGhTaGFyZUNv
bnRleHQsIGNvbnN0IGludCAqYXR0cmliTGlzdCk7Ci0jZW5kaWYKLSNlbmRpZiAvKiBXR0xfQVJC
X2NyZWF0ZV9jb250ZXh0ICovCi0KLSNpZm5kZWYgV0dMX0FSQl9jcmVhdGVfY29udGV4dF9wcm9m
aWxlCi0jZGVmaW5lIFdHTF9BUkJfY3JlYXRlX2NvbnRleHRfcHJvZmlsZSAxCi0jZGVmaW5lIFdH
TF9DT05URVhUX1BST0ZJTEVfTUFTS19BUkIgICAgICAweDkxMjYKLSNkZWZpbmUgV0dMX0NPTlRF
WFRfQ09SRV9QUk9GSUxFX0JJVF9BUkIgIDB4MDAwMDAwMDEKLSNkZWZpbmUgV0dMX0NPTlRFWFRf
Q09NUEFUSUJJTElUWV9QUk9GSUxFX0JJVF9BUkIgMHgwMDAwMDAwMgotI2RlZmluZSBFUlJPUl9J
TlZBTElEX1BST0ZJTEVfQVJCICAgICAgICAgMHgyMDk2Ci0jZW5kaWYgLyogV0dMX0FSQl9jcmVh
dGVfY29udGV4dF9wcm9maWxlICovCi0KLSNpZm5kZWYgV0dMX0FSQl9jcmVhdGVfY29udGV4dF9y
b2J1c3RuZXNzCi0jZGVmaW5lIFdHTF9BUkJfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcyAxCi0j
ZGVmaW5lIFdHTF9DT05URVhUX1JPQlVTVF9BQ0NFU1NfQklUX0FSQiAweDAwMDAwMDA0Ci0jZGVm
aW5lIFdHTF9MT1NFX0NPTlRFWFRfT05fUkVTRVRfQVJCICAgICAweDgyNTIKLSNkZWZpbmUgV0dM
X0NPTlRFWFRfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZX0FSQiAweDgyNTYKLSNkZWZpbmUg
V0dMX05PX1JFU0VUX05PVElGSUNBVElPTl9BUkIgICAgIDB4ODI2MQotI2VuZGlmIC8qIFdHTF9B
UkJfY3JlYXRlX2NvbnRleHRfcm9idXN0bmVzcyAqLwotCi0jaWZuZGVmIFdHTF9BUkJfZXh0ZW5z
aW9uc19zdHJpbmcKLSNkZWZpbmUgV0dMX0FSQl9leHRlbnNpb25zX3N0cmluZyAxCi10eXBlZGVm
IGNvbnN0IGNoYXIgKihXSU5BUEkgKiBQRk5XR0xHRVRFWFRFTlNJT05TU1RSSU5HQVJCUFJPQykg
KEhEQyBoZGMpOwotI2lmZGVmIFdHTF9XR0xFWFRfUFJPVE9UWVBFUwotY29uc3QgY2hhciAqV0lO
QVBJIHdnbEdldEV4dGVuc2lvbnNTdHJpbmdBUkIgKEhEQyBoZGMpOwotI2VuZGlmCi0jZW5kaWYg
LyogV0dMX0FSQl9leHRlbnNpb25zX3N0cmluZyAqLwotCi0jaWZuZGVmIFdHTF9BUkJfZnJhbWVi
dWZmZXJfc1JHQgotI2RlZmluZSBXR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IgMQotI2RlZmluZSBX
R0xfRlJBTUVCVUZGRVJfU1JHQl9DQVBBQkxFX0FSQiAgMHgyMEE5Ci0jZW5kaWYgLyogV0dMX0FS
Ql9mcmFtZWJ1ZmZlcl9zUkdCICovCi0KLSNpZm5kZWYgV0dMX0FSQl9tYWtlX2N1cnJlbnRfcmVh
ZAotI2RlZmluZSBXR0xfQVJCX21ha2VfY3VycmVudF9yZWFkIDEKLSNkZWZpbmUgRVJST1JfSU5W
QUxJRF9QSVhFTF9UWVBFX0FSQiAgICAgIDB4MjA0MwotI2RlZmluZSBFUlJPUl9JTkNPTVBBVElC
TEVfREVWSUNFX0NPTlRFWFRTX0FSQiAweDIwNTQKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZO
V0dMTUFLRUNPTlRFWFRDVVJSRU5UQVJCUFJPQykgKEhEQyBoRHJhd0RDLCBIREMgaFJlYWREQywg
SEdMUkMgaGdscmMpOwotdHlwZWRlZiBIREMgKFdJTkFQSSAqIFBGTldHTEdFVENVUlJFTlRSRUFE
RENBUkJQUk9DKSAodm9pZCk7Ci0jaWZkZWYgV0dMX1dHTEVYVF9QUk9UT1RZUEVTCi1CT09MIFdJ
TkFQSSB3Z2xNYWtlQ29udGV4dEN1cnJlbnRBUkIgKEhEQyBoRHJhd0RDLCBIREMgaFJlYWREQywg
SEdMUkMgaGdscmMpOwotSERDIFdJTkFQSSB3Z2xHZXRDdXJyZW50UmVhZERDQVJCICh2b2lkKTsK
LSNlbmRpZgotI2VuZGlmIC8qIFdHTF9BUkJfbWFrZV9jdXJyZW50X3JlYWQgKi8KLQotI2lmbmRl
ZiBXR0xfQVJCX211bHRpc2FtcGxlCi0jZGVmaW5lIFdHTF9BUkJfbXVsdGlzYW1wbGUgMQotI2Rl
ZmluZSBXR0xfU0FNUExFX0JVRkZFUlNfQVJCICAgICAgICAgICAgMHgyMDQxCi0jZGVmaW5lIFdH
TF9TQU1QTEVTX0FSQiAgICAgICAgICAgICAgICAgICAweDIwNDIKLSNlbmRpZiAvKiBXR0xfQVJC
X211bHRpc2FtcGxlICovCi0KLSNpZm5kZWYgV0dMX0FSQl9wYnVmZmVyCi0jZGVmaW5lIFdHTF9B
UkJfcGJ1ZmZlciAxCi1ERUNMQVJFX0hBTkRMRShIUEJVRkZFUkFSQik7Ci0jZGVmaW5lIFdHTF9E
UkFXX1RPX1BCVUZGRVJfQVJCICAgICAgICAgICAweDIwMkQKLSNkZWZpbmUgV0dMX01BWF9QQlVG
RkVSX1BJWEVMU19BUkIgICAgICAgIDB4MjAyRQotI2RlZmluZSBXR0xfTUFYX1BCVUZGRVJfV0lE
VEhfQVJCICAgICAgICAgMHgyMDJGCi0jZGVmaW5lIFdHTF9NQVhfUEJVRkZFUl9IRUlHSFRfQVJC
ICAgICAgICAweDIwMzAKLSNkZWZpbmUgV0dMX1BCVUZGRVJfTEFSR0VTVF9BUkIgICAgICAgICAg
IDB4MjAzMwotI2RlZmluZSBXR0xfUEJVRkZFUl9XSURUSF9BUkIgICAgICAgICAgICAgMHgyMDM0
Ci0jZGVmaW5lIFdHTF9QQlVGRkVSX0hFSUdIVF9BUkIgICAgICAgICAgICAweDIwMzUKLSNkZWZp
bmUgV0dMX1BCVUZGRVJfTE9TVF9BUkIgICAgICAgICAgICAgIDB4MjAzNgotdHlwZWRlZiBIUEJV
RkZFUkFSQiAoV0lOQVBJICogUEZOV0dMQ1JFQVRFUEJVRkZFUkFSQlBST0MpIChIREMgaERDLCBp
bnQgaVBpeGVsRm9ybWF0LCBpbnQgaVdpZHRoLCBpbnQgaUhlaWdodCwgY29uc3QgaW50ICpwaUF0
dHJpYkxpc3QpOwotdHlwZWRlZiBIREMgKFdJTkFQSSAqIFBGTldHTEdFVFBCVUZGRVJEQ0FSQlBS
T0MpIChIUEJVRkZFUkFSQiBoUGJ1ZmZlcik7Ci10eXBlZGVmIGludCAoV0lOQVBJICogUEZOV0dM
UkVMRUFTRVBCVUZGRVJEQ0FSQlBST0MpIChIUEJVRkZFUkFSQiBoUGJ1ZmZlciwgSERDIGhEQyk7
Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTERFU1RST1lQQlVGRkVSQVJCUFJPQykgKEhQ
QlVGRkVSQVJCIGhQYnVmZmVyKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMUVVFUllQ
QlVGRkVSQVJCUFJPQykgKEhQQlVGRkVSQVJCIGhQYnVmZmVyLCBpbnQgaUF0dHJpYnV0ZSwgaW50
ICpwaVZhbHVlKTsKLSNpZmRlZiBXR0xfV0dMRVhUX1BST1RPVFlQRVMKLUhQQlVGRkVSQVJCIFdJ
TkFQSSB3Z2xDcmVhdGVQYnVmZmVyQVJCIChIREMgaERDLCBpbnQgaVBpeGVsRm9ybWF0LCBpbnQg
aVdpZHRoLCBpbnQgaUhlaWdodCwgY29uc3QgaW50ICpwaUF0dHJpYkxpc3QpOwotSERDIFdJTkFQ
SSB3Z2xHZXRQYnVmZmVyRENBUkIgKEhQQlVGRkVSQVJCIGhQYnVmZmVyKTsKLWludCBXSU5BUEkg
d2dsUmVsZWFzZVBidWZmZXJEQ0FSQiAoSFBCVUZGRVJBUkIgaFBidWZmZXIsIEhEQyBoREMpOwot
Qk9PTCBXSU5BUEkgd2dsRGVzdHJveVBidWZmZXJBUkIgKEhQQlVGRkVSQVJCIGhQYnVmZmVyKTsK
LUJPT0wgV0lOQVBJIHdnbFF1ZXJ5UGJ1ZmZlckFSQiAoSFBCVUZGRVJBUkIgaFBidWZmZXIsIGlu
dCBpQXR0cmlidXRlLCBpbnQgKnBpVmFsdWUpOwotI2VuZGlmCi0jZW5kaWYgLyogV0dMX0FSQl9w
YnVmZmVyICovCi0KLSNpZm5kZWYgV0dMX0FSQl9waXhlbF9mb3JtYXQKLSNkZWZpbmUgV0dMX0FS
Ql9waXhlbF9mb3JtYXQgMQotI2RlZmluZSBXR0xfTlVNQkVSX1BJWEVMX0ZPUk1BVFNfQVJCICAg
ICAgMHgyMDAwCi0jZGVmaW5lIFdHTF9EUkFXX1RPX1dJTkRPV19BUkIgICAgICAgICAgICAweDIw
MDEKLSNkZWZpbmUgV0dMX0RSQVdfVE9fQklUTUFQX0FSQiAgICAgICAgICAgIDB4MjAwMgotI2Rl
ZmluZSBXR0xfQUNDRUxFUkFUSU9OX0FSQiAgICAgICAgICAgICAgMHgyMDAzCi0jZGVmaW5lIFdH
TF9ORUVEX1BBTEVUVEVfQVJCICAgICAgICAgICAgICAweDIwMDQKLSNkZWZpbmUgV0dMX05FRURf
U1lTVEVNX1BBTEVUVEVfQVJCICAgICAgIDB4MjAwNQotI2RlZmluZSBXR0xfU1dBUF9MQVlFUl9C
VUZGRVJTX0FSQiAgICAgICAgMHgyMDA2Ci0jZGVmaW5lIFdHTF9TV0FQX01FVEhPRF9BUkIgICAg
ICAgICAgICAgICAweDIwMDcKLSNkZWZpbmUgV0dMX05VTUJFUl9PVkVSTEFZU19BUkIgICAgICAg
ICAgIDB4MjAwOAotI2RlZmluZSBXR0xfTlVNQkVSX1VOREVSTEFZU19BUkIgICAgICAgICAgMHgy
MDA5Ci0jZGVmaW5lIFdHTF9UUkFOU1BBUkVOVF9BUkIgICAgICAgICAgICAgICAweDIwMEEKLSNk
ZWZpbmUgV0dMX1RSQU5TUEFSRU5UX1JFRF9WQUxVRV9BUkIgICAgIDB4MjAzNwotI2RlZmluZSBX
R0xfVFJBTlNQQVJFTlRfR1JFRU5fVkFMVUVfQVJCICAgMHgyMDM4Ci0jZGVmaW5lIFdHTF9UUkFO
U1BBUkVOVF9CTFVFX1ZBTFVFX0FSQiAgICAweDIwMzkKLSNkZWZpbmUgV0dMX1RSQU5TUEFSRU5U
X0FMUEhBX1ZBTFVFX0FSQiAgIDB4MjAzQQotI2RlZmluZSBXR0xfVFJBTlNQQVJFTlRfSU5ERVhf
VkFMVUVfQVJCICAgMHgyMDNCCi0jZGVmaW5lIFdHTF9TSEFSRV9ERVBUSF9BUkIgICAgICAgICAg
ICAgICAweDIwMEMKLSNkZWZpbmUgV0dMX1NIQVJFX1NURU5DSUxfQVJCICAgICAgICAgICAgIDB4
MjAwRAotI2RlZmluZSBXR0xfU0hBUkVfQUNDVU1fQVJCICAgICAgICAgICAgICAgMHgyMDBFCi0j
ZGVmaW5lIFdHTF9TVVBQT1JUX0dESV9BUkIgICAgICAgICAgICAgICAweDIwMEYKLSNkZWZpbmUg
V0dMX1NVUFBPUlRfT1BFTkdMX0FSQiAgICAgICAgICAgIDB4MjAxMAotI2RlZmluZSBXR0xfRE9V
QkxFX0JVRkZFUl9BUkIgICAgICAgICAgICAgMHgyMDExCi0jZGVmaW5lIFdHTF9TVEVSRU9fQVJC
ICAgICAgICAgICAgICAgICAgICAweDIwMTIKLSNkZWZpbmUgV0dMX1BJWEVMX1RZUEVfQVJCICAg
ICAgICAgICAgICAgIDB4MjAxMwotI2RlZmluZSBXR0xfQ09MT1JfQklUU19BUkIgICAgICAgICAg
ICAgICAgMHgyMDE0Ci0jZGVmaW5lIFdHTF9SRURfQklUU19BUkIgICAgICAgICAgICAgICAgICAw
eDIwMTUKLSNkZWZpbmUgV0dMX1JFRF9TSElGVF9BUkIgICAgICAgICAgICAgICAgIDB4MjAxNgot
I2RlZmluZSBXR0xfR1JFRU5fQklUU19BUkIgICAgICAgICAgICAgICAgMHgyMDE3Ci0jZGVmaW5l
IFdHTF9HUkVFTl9TSElGVF9BUkIgICAgICAgICAgICAgICAweDIwMTgKLSNkZWZpbmUgV0dMX0JM
VUVfQklUU19BUkIgICAgICAgICAgICAgICAgIDB4MjAxOQotI2RlZmluZSBXR0xfQkxVRV9TSElG
VF9BUkIgICAgICAgICAgICAgICAgMHgyMDFBCi0jZGVmaW5lIFdHTF9BTFBIQV9CSVRTX0FSQiAg
ICAgICAgICAgICAgICAweDIwMUIKLSNkZWZpbmUgV0dMX0FMUEhBX1NISUZUX0FSQiAgICAgICAg
ICAgICAgIDB4MjAxQwotI2RlZmluZSBXR0xfQUNDVU1fQklUU19BUkIgICAgICAgICAgICAgICAg
MHgyMDFECi0jZGVmaW5lIFdHTF9BQ0NVTV9SRURfQklUU19BUkIgICAgICAgICAgICAweDIwMUUK
LSNkZWZpbmUgV0dMX0FDQ1VNX0dSRUVOX0JJVFNfQVJCICAgICAgICAgIDB4MjAxRgotI2RlZmlu
ZSBXR0xfQUNDVU1fQkxVRV9CSVRTX0FSQiAgICAgICAgICAgMHgyMDIwCi0jZGVmaW5lIFdHTF9B
Q0NVTV9BTFBIQV9CSVRTX0FSQiAgICAgICAgICAweDIwMjEKLSNkZWZpbmUgV0dMX0RFUFRIX0JJ
VFNfQVJCICAgICAgICAgICAgICAgIDB4MjAyMgotI2RlZmluZSBXR0xfU1RFTkNJTF9CSVRTX0FS
QiAgICAgICAgICAgICAgMHgyMDIzCi0jZGVmaW5lIFdHTF9BVVhfQlVGRkVSU19BUkIgICAgICAg
ICAgICAgICAweDIwMjQKLSNkZWZpbmUgV0dMX05PX0FDQ0VMRVJBVElPTl9BUkIgICAgICAgICAg
IDB4MjAyNQotI2RlZmluZSBXR0xfR0VORVJJQ19BQ0NFTEVSQVRJT05fQVJCICAgICAgMHgyMDI2
Ci0jZGVmaW5lIFdHTF9GVUxMX0FDQ0VMRVJBVElPTl9BUkIgICAgICAgICAweDIwMjcKLSNkZWZp
bmUgV0dMX1NXQVBfRVhDSEFOR0VfQVJCICAgICAgICAgICAgIDB4MjAyOAotI2RlZmluZSBXR0xf
U1dBUF9DT1BZX0FSQiAgICAgICAgICAgICAgICAgMHgyMDI5Ci0jZGVmaW5lIFdHTF9TV0FQX1VO
REVGSU5FRF9BUkIgICAgICAgICAgICAweDIwMkEKLSNkZWZpbmUgV0dMX1RZUEVfUkdCQV9BUkIg
ICAgICAgICAgICAgICAgIDB4MjAyQgotI2RlZmluZSBXR0xfVFlQRV9DT0xPUklOREVYX0FSQiAg
ICAgICAgICAgMHgyMDJDCi10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTEdFVFBJWEVMRk9S
TUFUQVRUUklCSVZBUkJQUk9DKSAoSERDIGhkYywgaW50IGlQaXhlbEZvcm1hdCwgaW50IGlMYXll
clBsYW5lLCBVSU5UIG5BdHRyaWJ1dGVzLCBjb25zdCBpbnQgKnBpQXR0cmlidXRlcywgaW50ICpw
aVZhbHVlcyk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTEdFVFBJWEVMRk9STUFUQVRU
UklCRlZBUkJQUk9DKSAoSERDIGhkYywgaW50IGlQaXhlbEZvcm1hdCwgaW50IGlMYXllclBsYW5l
LCBVSU5UIG5BdHRyaWJ1dGVzLCBjb25zdCBpbnQgKnBpQXR0cmlidXRlcywgRkxPQVQgKnBmVmFs
dWVzKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMQ0hPT1NFUElYRUxGT1JNQVRBUkJQ
Uk9DKSAoSERDIGhkYywgY29uc3QgaW50ICpwaUF0dHJpYklMaXN0LCBjb25zdCBGTE9BVCAqcGZB
dHRyaWJGTGlzdCwgVUlOVCBuTWF4Rm9ybWF0cywgaW50ICpwaUZvcm1hdHMsIFVJTlQgKm5OdW1G
b3JtYXRzKTsKLSNpZmRlZiBXR0xfV0dMRVhUX1BST1RPVFlQRVMKLUJPT0wgV0lOQVBJIHdnbEdl
dFBpeGVsRm9ybWF0QXR0cmliaXZBUkIgKEhEQyBoZGMsIGludCBpUGl4ZWxGb3JtYXQsIGludCBp
TGF5ZXJQbGFuZSwgVUlOVCBuQXR0cmlidXRlcywgY29uc3QgaW50ICpwaUF0dHJpYnV0ZXMsIGlu
dCAqcGlWYWx1ZXMpOwotQk9PTCBXSU5BUEkgd2dsR2V0UGl4ZWxGb3JtYXRBdHRyaWJmdkFSQiAo
SERDIGhkYywgaW50IGlQaXhlbEZvcm1hdCwgaW50IGlMYXllclBsYW5lLCBVSU5UIG5BdHRyaWJ1
dGVzLCBjb25zdCBpbnQgKnBpQXR0cmlidXRlcywgRkxPQVQgKnBmVmFsdWVzKTsKLUJPT0wgV0lO
QVBJIHdnbENob29zZVBpeGVsRm9ybWF0QVJCIChIREMgaGRjLCBjb25zdCBpbnQgKnBpQXR0cmli
SUxpc3QsIGNvbnN0IEZMT0FUICpwZkF0dHJpYkZMaXN0LCBVSU5UIG5NYXhGb3JtYXRzLCBpbnQg
KnBpRm9ybWF0cywgVUlOVCAqbk51bUZvcm1hdHMpOwotI2VuZGlmCi0jZW5kaWYgLyogV0dMX0FS
Ql9waXhlbF9mb3JtYXQgKi8KLQotI2lmbmRlZiBXR0xfQVJCX3BpeGVsX2Zvcm1hdF9mbG9hdAot
I2RlZmluZSBXR0xfQVJCX3BpeGVsX2Zvcm1hdF9mbG9hdCAxCi0jZGVmaW5lIFdHTF9UWVBFX1JH
QkFfRkxPQVRfQVJCICAgICAgICAgICAweDIxQTAKLSNlbmRpZiAvKiBXR0xfQVJCX3BpeGVsX2Zv
cm1hdF9mbG9hdCAqLwotCi0jaWZuZGVmIFdHTF9BUkJfcmVuZGVyX3RleHR1cmUKLSNkZWZpbmUg
V0dMX0FSQl9yZW5kZXJfdGV4dHVyZSAxCi0jZGVmaW5lIFdHTF9CSU5EX1RPX1RFWFRVUkVfUkdC
X0FSQiAgICAgICAweDIwNzAKLSNkZWZpbmUgV0dMX0JJTkRfVE9fVEVYVFVSRV9SR0JBX0FSQiAg
ICAgIDB4MjA3MQotI2RlZmluZSBXR0xfVEVYVFVSRV9GT1JNQVRfQVJCICAgICAgICAgICAgMHgy
MDcyCi0jZGVmaW5lIFdHTF9URVhUVVJFX1RBUkdFVF9BUkIgICAgICAgICAgICAweDIwNzMKLSNk
ZWZpbmUgV0dMX01JUE1BUF9URVhUVVJFX0FSQiAgICAgICAgICAgIDB4MjA3NAotI2RlZmluZSBX
R0xfVEVYVFVSRV9SR0JfQVJCICAgICAgICAgICAgICAgMHgyMDc1Ci0jZGVmaW5lIFdHTF9URVhU
VVJFX1JHQkFfQVJCICAgICAgICAgICAgICAweDIwNzYKLSNkZWZpbmUgV0dMX05PX1RFWFRVUkVf
QVJCICAgICAgICAgICAgICAgIDB4MjA3NwotI2RlZmluZSBXR0xfVEVYVFVSRV9DVUJFX01BUF9B
UkIgICAgICAgICAgMHgyMDc4Ci0jZGVmaW5lIFdHTF9URVhUVVJFXzFEX0FSQiAgICAgICAgICAg
ICAgICAweDIwNzkKLSNkZWZpbmUgV0dMX1RFWFRVUkVfMkRfQVJCICAgICAgICAgICAgICAgIDB4
MjA3QQotI2RlZmluZSBXR0xfTUlQTUFQX0xFVkVMX0FSQiAgICAgICAgICAgICAgMHgyMDdCCi0j
ZGVmaW5lIFdHTF9DVUJFX01BUF9GQUNFX0FSQiAgICAgICAgICAgICAweDIwN0MKLSNkZWZpbmUg
V0dMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF9BUkIgMHgyMDdECi0jZGVmaW5lIFdHTF9U
RVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1hfQVJCIDB4MjA3RQotI2RlZmluZSBXR0xfVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9ZX0FSQiAweDIwN0YKLSNkZWZpbmUgV0dMX1RFWFRVUkVfQ1VC
RV9NQVBfTkVHQVRJVkVfWV9BUkIgMHgyMDgwCi0jZGVmaW5lIFdHTF9URVhUVVJFX0NVQkVfTUFQ
X1BPU0lUSVZFX1pfQVJCIDB4MjA4MQotI2RlZmluZSBXR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdB
VElWRV9aX0FSQiAweDIwODIKLSNkZWZpbmUgV0dMX0ZST05UX0xFRlRfQVJCICAgICAgICAgICAg
ICAgIDB4MjA4MwotI2RlZmluZSBXR0xfRlJPTlRfUklHSFRfQVJCICAgICAgICAgICAgICAgMHgy
MDg0Ci0jZGVmaW5lIFdHTF9CQUNLX0xFRlRfQVJCICAgICAgICAgICAgICAgICAweDIwODUKLSNk
ZWZpbmUgV0dMX0JBQ0tfUklHSFRfQVJCICAgICAgICAgICAgICAgIDB4MjA4NgotI2RlZmluZSBX
R0xfQVVYMF9BUkIgICAgICAgICAgICAgICAgICAgICAgMHgyMDg3Ci0jZGVmaW5lIFdHTF9BVVgx
X0FSQiAgICAgICAgICAgICAgICAgICAgICAweDIwODgKLSNkZWZpbmUgV0dMX0FVWDJfQVJCICAg
ICAgICAgICAgICAgICAgICAgIDB4MjA4OQotI2RlZmluZSBXR0xfQVVYM19BUkIgICAgICAgICAg
ICAgICAgICAgICAgMHgyMDhBCi0jZGVmaW5lIFdHTF9BVVg0X0FSQiAgICAgICAgICAgICAgICAg
ICAgICAweDIwOEIKLSNkZWZpbmUgV0dMX0FVWDVfQVJCICAgICAgICAgICAgICAgICAgICAgIDB4
MjA4QwotI2RlZmluZSBXR0xfQVVYNl9BUkIgICAgICAgICAgICAgICAgICAgICAgMHgyMDhECi0j
ZGVmaW5lIFdHTF9BVVg3X0FSQiAgICAgICAgICAgICAgICAgICAgICAweDIwOEUKLSNkZWZpbmUg
V0dMX0FVWDhfQVJCICAgICAgICAgICAgICAgICAgICAgIDB4MjA4RgotI2RlZmluZSBXR0xfQVVY
OV9BUkIgICAgICAgICAgICAgICAgICAgICAgMHgyMDkwCi10eXBlZGVmIEJPT0wgKFdJTkFQSSAq
IFBGTldHTEJJTkRURVhJTUFHRUFSQlBST0MpIChIUEJVRkZFUkFSQiBoUGJ1ZmZlciwgaW50IGlC
dWZmZXIpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xSRUxFQVNFVEVYSU1BR0VBUkJQ
Uk9DKSAoSFBCVUZGRVJBUkIgaFBidWZmZXIsIGludCBpQnVmZmVyKTsKLXR5cGVkZWYgQk9PTCAo
V0lOQVBJICogUEZOV0dMU0VUUEJVRkZFUkFUVFJJQkFSQlBST0MpIChIUEJVRkZFUkFSQiBoUGJ1
ZmZlciwgY29uc3QgaW50ICpwaUF0dHJpYkxpc3QpOwotI2lmZGVmIFdHTF9XR0xFWFRfUFJPVE9U
WVBFUwotQk9PTCBXSU5BUEkgd2dsQmluZFRleEltYWdlQVJCIChIUEJVRkZFUkFSQiBoUGJ1ZmZl
ciwgaW50IGlCdWZmZXIpOwotQk9PTCBXSU5BUEkgd2dsUmVsZWFzZVRleEltYWdlQVJCIChIUEJV
RkZFUkFSQiBoUGJ1ZmZlciwgaW50IGlCdWZmZXIpOwotQk9PTCBXSU5BUEkgd2dsU2V0UGJ1ZmZl
ckF0dHJpYkFSQiAoSFBCVUZGRVJBUkIgaFBidWZmZXIsIGNvbnN0IGludCAqcGlBdHRyaWJMaXN0
KTsKLSNlbmRpZgotI2VuZGlmIC8qIFdHTF9BUkJfcmVuZGVyX3RleHR1cmUgKi8KLQotI2lmbmRl
ZiBXR0xfQVJCX3JvYnVzdG5lc3NfYXBwbGljYXRpb25faXNvbGF0aW9uCi0jZGVmaW5lIFdHTF9B
UkJfcm9idXN0bmVzc19hcHBsaWNhdGlvbl9pc29sYXRpb24gMQotI2RlZmluZSBXR0xfQ09OVEVY
VF9SRVNFVF9JU09MQVRJT05fQklUX0FSQiAweDAwMDAwMDA4Ci0jZW5kaWYgLyogV0dMX0FSQl9y
b2J1c3RuZXNzX2FwcGxpY2F0aW9uX2lzb2xhdGlvbiAqLwotCi0jaWZuZGVmIFdHTF9BUkJfcm9i
dXN0bmVzc19zaGFyZV9ncm91cF9pc29sYXRpb24KLSNkZWZpbmUgV0dMX0FSQl9yb2J1c3RuZXNz
X3NoYXJlX2dyb3VwX2lzb2xhdGlvbiAxCi0jZW5kaWYgLyogV0dMX0FSQl9yb2J1c3RuZXNzX3No
YXJlX2dyb3VwX2lzb2xhdGlvbiAqLwotCi0jaWZuZGVmIFdHTF8zREZYX211bHRpc2FtcGxlCi0j
ZGVmaW5lIFdHTF8zREZYX211bHRpc2FtcGxlIDEKLSNkZWZpbmUgV0dMX1NBTVBMRV9CVUZGRVJT
XzNERlggICAgICAgICAgIDB4MjA2MAotI2RlZmluZSBXR0xfU0FNUExFU18zREZYICAgICAgICAg
ICAgICAgICAgMHgyMDYxCi0jZW5kaWYgLyogV0dMXzNERlhfbXVsdGlzYW1wbGUgKi8KLQotI2lm
bmRlZiBXR0xfM0RMX3N0ZXJlb19jb250cm9sCi0jZGVmaW5lIFdHTF8zRExfc3RlcmVvX2NvbnRy
b2wgMQotI2RlZmluZSBXR0xfU1RFUkVPX0VNSVRURVJfRU5BQkxFXzNETCAgICAgMHgyMDU1Ci0j
ZGVmaW5lIFdHTF9TVEVSRU9fRU1JVFRFUl9ESVNBQkxFXzNETCAgICAweDIwNTYKLSNkZWZpbmUg
V0dMX1NURVJFT19QT0xBUklUWV9OT1JNQUxfM0RMICAgIDB4MjA1NwotI2RlZmluZSBXR0xfU1RF
UkVPX1BPTEFSSVRZX0lOVkVSVF8zREwgICAgMHgyMDU4Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAq
IFBGTldHTFNFVFNURVJFT0VNSVRURVJTVEFURTNETFBST0MpIChIREMgaERDLCBVSU5UIHVTdGF0
ZSk7Ci0jaWZkZWYgV0dMX1dHTEVYVF9QUk9UT1RZUEVTCi1CT09MIFdJTkFQSSB3Z2xTZXRTdGVy
ZW9FbWl0dGVyU3RhdGUzREwgKEhEQyBoREMsIFVJTlQgdVN0YXRlKTsKLSNlbmRpZgotI2VuZGlm
IC8qIFdHTF8zRExfc3RlcmVvX2NvbnRyb2wgKi8KLQotI2lmbmRlZiBXR0xfQU1EX2dwdV9hc3Nv
Y2lhdGlvbgotI2RlZmluZSBXR0xfQU1EX2dwdV9hc3NvY2lhdGlvbiAxCi0jZGVmaW5lIFdHTF9H
UFVfVkVORE9SX0FNRCAgICAgICAgICAgICAgICAweDFGMDAKLSNkZWZpbmUgV0dMX0dQVV9SRU5E
RVJFUl9TVFJJTkdfQU1EICAgICAgIDB4MUYwMQotI2RlZmluZSBXR0xfR1BVX09QRU5HTF9WRVJT
SU9OX1NUUklOR19BTUQgMHgxRjAyCi0jZGVmaW5lIFdHTF9HUFVfRkFTVEVTVF9UQVJHRVRfR1BV
U19BTUQgICAweDIxQTIKLSNkZWZpbmUgV0dMX0dQVV9SQU1fQU1EICAgICAgICAgICAgICAgICAg
IDB4MjFBMwotI2RlZmluZSBXR0xfR1BVX0NMT0NLX0FNRCAgICAgICAgICAgICAgICAgMHgyMUE0
Ci0jZGVmaW5lIFdHTF9HUFVfTlVNX1BJUEVTX0FNRCAgICAgICAgICAgICAweDIxQTUKLSNkZWZp
bmUgV0dMX0dQVV9OVU1fU0lNRF9BTUQgICAgICAgICAgICAgIDB4MjFBNgotI2RlZmluZSBXR0xf
R1BVX05VTV9SQl9BTUQgICAgICAgICAgICAgICAgMHgyMUE3Ci0jZGVmaW5lIFdHTF9HUFVfTlVN
X1NQSV9BTUQgICAgICAgICAgICAgICAweDIxQTgKLXR5cGVkZWYgVUlOVCAoV0lOQVBJICogUEZO
V0dMR0VUR1BVSURTQU1EUFJPQykgKFVJTlQgbWF4Q291bnQsIFVJTlQgKmlkcyk7Ci10eXBlZGVm
IElOVCAoV0lOQVBJICogUEZOV0dMR0VUR1BVSU5GT0FNRFBST0MpIChVSU5UIGlkLCBpbnQgcHJv
cGVydHksIEdMZW51bSBkYXRhVHlwZSwgVUlOVCBzaXplLCB2b2lkICpkYXRhKTsKLXR5cGVkZWYg
VUlOVCAoV0lOQVBJICogUEZOV0dMR0VUQ09OVEVYVEdQVUlEQU1EUFJPQykgKEhHTFJDIGhnbHJj
KTsKLXR5cGVkZWYgSEdMUkMgKFdJTkFQSSAqIFBGTldHTENSRUFURUFTU09DSUFURURDT05URVhU
QU1EUFJPQykgKFVJTlQgaWQpOwotdHlwZWRlZiBIR0xSQyAoV0lOQVBJICogUEZOV0dMQ1JFQVRF
QVNTT0NJQVRFRENPTlRFWFRBVFRSSUJTQU1EUFJPQykgKFVJTlQgaWQsIEhHTFJDIGhTaGFyZUNv
bnRleHQsIGNvbnN0IGludCAqYXR0cmliTGlzdCk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBG
TldHTERFTEVURUFTU09DSUFURURDT05URVhUQU1EUFJPQykgKEhHTFJDIGhnbHJjKTsKLXR5cGVk
ZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMTUFLRUFTU09DSUFURURDT05URVhUQ1VSUkVOVEFNRFBS
T0MpIChIR0xSQyBoZ2xyYyk7Ci10eXBlZGVmIEhHTFJDIChXSU5BUEkgKiBQRk5XR0xHRVRDVVJS
RU5UQVNTT0NJQVRFRENPTlRFWFRBTURQUk9DKSAodm9pZCk7Ci10eXBlZGVmIFZPSUQgKFdJTkFQ
SSAqIFBGTldHTEJMSVRDT05URVhURlJBTUVCVUZGRVJBTURQUk9DKSAoSEdMUkMgZHN0Q3R4LCBH
TGludCBzcmNYMCwgR0xpbnQgc3JjWTAsIEdMaW50IHNyY1gxLCBHTGludCBzcmNZMSwgR0xpbnQg
ZHN0WDAsIEdMaW50IGRzdFkwLCBHTGludCBkc3RYMSwgR0xpbnQgZHN0WTEsIEdMYml0ZmllbGQg
bWFzaywgR0xlbnVtIGZpbHRlcik7Ci0jaWZkZWYgV0dMX1dHTEVYVF9QUk9UT1RZUEVTCi1VSU5U
IFdJTkFQSSB3Z2xHZXRHUFVJRHNBTUQgKFVJTlQgbWF4Q291bnQsIFVJTlQgKmlkcyk7Ci1JTlQg
V0lOQVBJIHdnbEdldEdQVUluZm9BTUQgKFVJTlQgaWQsIGludCBwcm9wZXJ0eSwgR0xlbnVtIGRh
dGFUeXBlLCBVSU5UIHNpemUsIHZvaWQgKmRhdGEpOwotVUlOVCBXSU5BUEkgd2dsR2V0Q29udGV4
dEdQVUlEQU1EIChIR0xSQyBoZ2xyYyk7Ci1IR0xSQyBXSU5BUEkgd2dsQ3JlYXRlQXNzb2NpYXRl
ZENvbnRleHRBTUQgKFVJTlQgaWQpOwotSEdMUkMgV0lOQVBJIHdnbENyZWF0ZUFzc29jaWF0ZWRD
b250ZXh0QXR0cmlic0FNRCAoVUlOVCBpZCwgSEdMUkMgaFNoYXJlQ29udGV4dCwgY29uc3QgaW50
ICphdHRyaWJMaXN0KTsKLUJPT0wgV0lOQVBJIHdnbERlbGV0ZUFzc29jaWF0ZWRDb250ZXh0QU1E
IChIR0xSQyBoZ2xyYyk7Ci1CT09MIFdJTkFQSSB3Z2xNYWtlQXNzb2NpYXRlZENvbnRleHRDdXJy
ZW50QU1EIChIR0xSQyBoZ2xyYyk7Ci1IR0xSQyBXSU5BUEkgd2dsR2V0Q3VycmVudEFzc29jaWF0
ZWRDb250ZXh0QU1EICh2b2lkKTsKLVZPSUQgV0lOQVBJIHdnbEJsaXRDb250ZXh0RnJhbWVidWZm
ZXJBTUQgKEhHTFJDIGRzdEN0eCwgR0xpbnQgc3JjWDAsIEdMaW50IHNyY1kwLCBHTGludCBzcmNY
MSwgR0xpbnQgc3JjWTEsIEdMaW50IGRzdFgwLCBHTGludCBkc3RZMCwgR0xpbnQgZHN0WDEsIEdM
aW50IGRzdFkxLCBHTGJpdGZpZWxkIG1hc2ssIEdMZW51bSBmaWx0ZXIpOwotI2VuZGlmCi0jZW5k
aWYgLyogV0dMX0FNRF9ncHVfYXNzb2NpYXRpb24gKi8KLQotI2lmbmRlZiBXR0xfQVRJX3BpeGVs
X2Zvcm1hdF9mbG9hdAotI2RlZmluZSBXR0xfQVRJX3BpeGVsX2Zvcm1hdF9mbG9hdCAxCi0jZGVm
aW5lIFdHTF9UWVBFX1JHQkFfRkxPQVRfQVRJICAgICAgICAgICAweDIxQTAKLSNlbmRpZiAvKiBX
R0xfQVRJX3BpeGVsX2Zvcm1hdF9mbG9hdCAqLwotCi0jaWZuZGVmIFdHTF9FWFRfY3JlYXRlX2Nv
bnRleHRfZXMyX3Byb2ZpbGUKLSNkZWZpbmUgV0dMX0VYVF9jcmVhdGVfY29udGV4dF9lczJfcHJv
ZmlsZSAxCi0jZGVmaW5lIFdHTF9DT05URVhUX0VTMl9QUk9GSUxFX0JJVF9FWFQgICAweDAwMDAw
MDA0Ci0jZW5kaWYgLyogV0dMX0VYVF9jcmVhdGVfY29udGV4dF9lczJfcHJvZmlsZSAqLwotCi0j
aWZuZGVmIFdHTF9FWFRfY3JlYXRlX2NvbnRleHRfZXNfcHJvZmlsZQotI2RlZmluZSBXR0xfRVhU
X2NyZWF0ZV9jb250ZXh0X2VzX3Byb2ZpbGUgMQotI2RlZmluZSBXR0xfQ09OVEVYVF9FU19QUk9G
SUxFX0JJVF9FWFQgICAgMHgwMDAwMDAwNAotI2VuZGlmIC8qIFdHTF9FWFRfY3JlYXRlX2NvbnRl
eHRfZXNfcHJvZmlsZSAqLwotCi0jaWZuZGVmIFdHTF9FWFRfZGVwdGhfZmxvYXQKLSNkZWZpbmUg
V0dMX0VYVF9kZXB0aF9mbG9hdCAxCi0jZGVmaW5lIFdHTF9ERVBUSF9GTE9BVF9FWFQgICAgICAg
ICAgICAgICAweDIwNDAKLSNlbmRpZiAvKiBXR0xfRVhUX2RlcHRoX2Zsb2F0ICovCi0KLSNpZm5k
ZWYgV0dMX0VYVF9kaXNwbGF5X2NvbG9yX3RhYmxlCi0jZGVmaW5lIFdHTF9FWFRfZGlzcGxheV9j
b2xvcl90YWJsZSAxCi10eXBlZGVmIEdMYm9vbGVhbiAoV0lOQVBJICogUEZOV0dMQ1JFQVRFRElT
UExBWUNPTE9SVEFCTEVFWFRQUk9DKSAoR0x1c2hvcnQgaWQpOwotdHlwZWRlZiBHTGJvb2xlYW4g
KFdJTkFQSSAqIFBGTldHTExPQURESVNQTEFZQ09MT1JUQUJMRUVYVFBST0MpIChjb25zdCBHTHVz
aG9ydCAqdGFibGUsIEdMdWludCBsZW5ndGgpOwotdHlwZWRlZiBHTGJvb2xlYW4gKFdJTkFQSSAq
IFBGTldHTEJJTkRESVNQTEFZQ09MT1JUQUJMRUVYVFBST0MpIChHTHVzaG9ydCBpZCk7Ci10eXBl
ZGVmIFZPSUQgKFdJTkFQSSAqIFBGTldHTERFU1RST1lESVNQTEFZQ09MT1JUQUJMRUVYVFBST0Mp
IChHTHVzaG9ydCBpZCk7Ci0jaWZkZWYgV0dMX1dHTEVYVF9QUk9UT1RZUEVTCi1HTGJvb2xlYW4g
V0lOQVBJIHdnbENyZWF0ZURpc3BsYXlDb2xvclRhYmxlRVhUIChHTHVzaG9ydCBpZCk7Ci1HTGJv
b2xlYW4gV0lOQVBJIHdnbExvYWREaXNwbGF5Q29sb3JUYWJsZUVYVCAoY29uc3QgR0x1c2hvcnQg
KnRhYmxlLCBHTHVpbnQgbGVuZ3RoKTsKLUdMYm9vbGVhbiBXSU5BUEkgd2dsQmluZERpc3BsYXlD
b2xvclRhYmxlRVhUIChHTHVzaG9ydCBpZCk7Ci1WT0lEIFdJTkFQSSB3Z2xEZXN0cm95RGlzcGxh
eUNvbG9yVGFibGVFWFQgKEdMdXNob3J0IGlkKTsKLSNlbmRpZgotI2VuZGlmIC8qIFdHTF9FWFRf
ZGlzcGxheV9jb2xvcl90YWJsZSAqLwotCi0jaWZuZGVmIFdHTF9FWFRfZXh0ZW5zaW9uc19zdHJp
bmcKLSNkZWZpbmUgV0dMX0VYVF9leHRlbnNpb25zX3N0cmluZyAxCi10eXBlZGVmIGNvbnN0IGNo
YXIgKihXSU5BUEkgKiBQRk5XR0xHRVRFWFRFTlNJT05TU1RSSU5HRVhUUFJPQykgKHZvaWQpOwot
I2lmZGVmIFdHTF9XR0xFWFRfUFJPVE9UWVBFUwotY29uc3QgY2hhciAqV0lOQVBJIHdnbEdldEV4
dGVuc2lvbnNTdHJpbmdFWFQgKHZvaWQpOwotI2VuZGlmCi0jZW5kaWYgLyogV0dMX0VYVF9leHRl
bnNpb25zX3N0cmluZyAqLwotCi0jaWZuZGVmIFdHTF9FWFRfZnJhbWVidWZmZXJfc1JHQgotI2Rl
ZmluZSBXR0xfRVhUX2ZyYW1lYnVmZmVyX3NSR0IgMQotI2RlZmluZSBXR0xfRlJBTUVCVUZGRVJf
U1JHQl9DQVBBQkxFX0VYVCAgMHgyMEE5Ci0jZW5kaWYgLyogV0dMX0VYVF9mcmFtZWJ1ZmZlcl9z
UkdCICovCi0KLSNpZm5kZWYgV0dMX0VYVF9tYWtlX2N1cnJlbnRfcmVhZAotI2RlZmluZSBXR0xf
RVhUX21ha2VfY3VycmVudF9yZWFkIDEKLSNkZWZpbmUgRVJST1JfSU5WQUxJRF9QSVhFTF9UWVBF
X0VYVCAgICAgIDB4MjA0MwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xNQUtFQ09OVEVY
VENVUlJFTlRFWFRQUk9DKSAoSERDIGhEcmF3REMsIEhEQyBoUmVhZERDLCBIR0xSQyBoZ2xyYyk7
Ci10eXBlZGVmIEhEQyAoV0lOQVBJICogUEZOV0dMR0VUQ1VSUkVOVFJFQUREQ0VYVFBST0MpICh2
b2lkKTsKLSNpZmRlZiBXR0xfV0dMRVhUX1BST1RPVFlQRVMKLUJPT0wgV0lOQVBJIHdnbE1ha2VD
b250ZXh0Q3VycmVudEVYVCAoSERDIGhEcmF3REMsIEhEQyBoUmVhZERDLCBIR0xSQyBoZ2xyYyk7
Ci1IREMgV0lOQVBJIHdnbEdldEN1cnJlbnRSZWFkRENFWFQgKHZvaWQpOwotI2VuZGlmCi0jZW5k
aWYgLyogV0dMX0VYVF9tYWtlX2N1cnJlbnRfcmVhZCAqLwotCi0jaWZuZGVmIFdHTF9FWFRfbXVs
dGlzYW1wbGUKLSNkZWZpbmUgV0dMX0VYVF9tdWx0aXNhbXBsZSAxCi0jZGVmaW5lIFdHTF9TQU1Q
TEVfQlVGRkVSU19FWFQgICAgICAgICAgICAweDIwNDEKLSNkZWZpbmUgV0dMX1NBTVBMRVNfRVhU
ICAgICAgICAgICAgICAgICAgIDB4MjA0MgotI2VuZGlmIC8qIFdHTF9FWFRfbXVsdGlzYW1wbGUg
Ki8KLQotI2lmbmRlZiBXR0xfRVhUX3BidWZmZXIKLSNkZWZpbmUgV0dMX0VYVF9wYnVmZmVyIDEK
LURFQ0xBUkVfSEFORExFKEhQQlVGRkVSRVhUKTsKLSNkZWZpbmUgV0dMX0RSQVdfVE9fUEJVRkZF
Ul9FWFQgICAgICAgICAgIDB4MjAyRAotI2RlZmluZSBXR0xfTUFYX1BCVUZGRVJfUElYRUxTX0VY
VCAgICAgICAgMHgyMDJFCi0jZGVmaW5lIFdHTF9NQVhfUEJVRkZFUl9XSURUSF9FWFQgICAgICAg
ICAweDIwMkYKLSNkZWZpbmUgV0dMX01BWF9QQlVGRkVSX0hFSUdIVF9FWFQgICAgICAgIDB4MjAz
MAotI2RlZmluZSBXR0xfT1BUSU1BTF9QQlVGRkVSX1dJRFRIX0VYVCAgICAgMHgyMDMxCi0jZGVm
aW5lIFdHTF9PUFRJTUFMX1BCVUZGRVJfSEVJR0hUX0VYVCAgICAweDIwMzIKLSNkZWZpbmUgV0dM
X1BCVUZGRVJfTEFSR0VTVF9FWFQgICAgICAgICAgIDB4MjAzMwotI2RlZmluZSBXR0xfUEJVRkZF
Ul9XSURUSF9FWFQgICAgICAgICAgICAgMHgyMDM0Ci0jZGVmaW5lIFdHTF9QQlVGRkVSX0hFSUdI
VF9FWFQgICAgICAgICAgICAweDIwMzUKLXR5cGVkZWYgSFBCVUZGRVJFWFQgKFdJTkFQSSAqIFBG
TldHTENSRUFURVBCVUZGRVJFWFRQUk9DKSAoSERDIGhEQywgaW50IGlQaXhlbEZvcm1hdCwgaW50
IGlXaWR0aCwgaW50IGlIZWlnaHQsIGNvbnN0IGludCAqcGlBdHRyaWJMaXN0KTsKLXR5cGVkZWYg
SERDIChXSU5BUEkgKiBQRk5XR0xHRVRQQlVGRkVSRENFWFRQUk9DKSAoSFBCVUZGRVJFWFQgaFBi
dWZmZXIpOwotdHlwZWRlZiBpbnQgKFdJTkFQSSAqIFBGTldHTFJFTEVBU0VQQlVGRkVSRENFWFRQ
Uk9DKSAoSFBCVUZGRVJFWFQgaFBidWZmZXIsIEhEQyBoREMpOwotdHlwZWRlZiBCT09MIChXSU5B
UEkgKiBQRk5XR0xERVNUUk9ZUEJVRkZFUkVYVFBST0MpIChIUEJVRkZFUkVYVCBoUGJ1ZmZlcik7
Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTFFVRVJZUEJVRkZFUkVYVFBST0MpIChIUEJV
RkZFUkVYVCBoUGJ1ZmZlciwgaW50IGlBdHRyaWJ1dGUsIGludCAqcGlWYWx1ZSk7Ci0jaWZkZWYg
V0dMX1dHTEVYVF9QUk9UT1RZUEVTCi1IUEJVRkZFUkVYVCBXSU5BUEkgd2dsQ3JlYXRlUGJ1ZmZl
ckVYVCAoSERDIGhEQywgaW50IGlQaXhlbEZvcm1hdCwgaW50IGlXaWR0aCwgaW50IGlIZWlnaHQs
IGNvbnN0IGludCAqcGlBdHRyaWJMaXN0KTsKLUhEQyBXSU5BUEkgd2dsR2V0UGJ1ZmZlckRDRVhU
IChIUEJVRkZFUkVYVCBoUGJ1ZmZlcik7Ci1pbnQgV0lOQVBJIHdnbFJlbGVhc2VQYnVmZmVyRENF
WFQgKEhQQlVGRkVSRVhUIGhQYnVmZmVyLCBIREMgaERDKTsKLUJPT0wgV0lOQVBJIHdnbERlc3Ry
b3lQYnVmZmVyRVhUIChIUEJVRkZFUkVYVCBoUGJ1ZmZlcik7Ci1CT09MIFdJTkFQSSB3Z2xRdWVy
eVBidWZmZXJFWFQgKEhQQlVGRkVSRVhUIGhQYnVmZmVyLCBpbnQgaUF0dHJpYnV0ZSwgaW50ICpw
aVZhbHVlKTsKLSNlbmRpZgotI2VuZGlmIC8qIFdHTF9FWFRfcGJ1ZmZlciAqLwotCi0jaWZuZGVm
IFdHTF9FWFRfcGl4ZWxfZm9ybWF0Ci0jZGVmaW5lIFdHTF9FWFRfcGl4ZWxfZm9ybWF0IDEKLSNk
ZWZpbmUgV0dMX05VTUJFUl9QSVhFTF9GT1JNQVRTX0VYVCAgICAgIDB4MjAwMAotI2RlZmluZSBX
R0xfRFJBV19UT19XSU5ET1dfRVhUICAgICAgICAgICAgMHgyMDAxCi0jZGVmaW5lIFdHTF9EUkFX
X1RPX0JJVE1BUF9FWFQgICAgICAgICAgICAweDIwMDIKLSNkZWZpbmUgV0dMX0FDQ0VMRVJBVElP
Tl9FWFQgICAgICAgICAgICAgIDB4MjAwMwotI2RlZmluZSBXR0xfTkVFRF9QQUxFVFRFX0VYVCAg
ICAgICAgICAgICAgMHgyMDA0Ci0jZGVmaW5lIFdHTF9ORUVEX1NZU1RFTV9QQUxFVFRFX0VYVCAg
ICAgICAweDIwMDUKLSNkZWZpbmUgV0dMX1NXQVBfTEFZRVJfQlVGRkVSU19FWFQgICAgICAgIDB4
MjAwNgotI2RlZmluZSBXR0xfU1dBUF9NRVRIT0RfRVhUICAgICAgICAgICAgICAgMHgyMDA3Ci0j
ZGVmaW5lIFdHTF9OVU1CRVJfT1ZFUkxBWVNfRVhUICAgICAgICAgICAweDIwMDgKLSNkZWZpbmUg
V0dMX05VTUJFUl9VTkRFUkxBWVNfRVhUICAgICAgICAgIDB4MjAwOQotI2RlZmluZSBXR0xfVFJB
TlNQQVJFTlRfRVhUICAgICAgICAgICAgICAgMHgyMDBBCi0jZGVmaW5lIFdHTF9UUkFOU1BBUkVO
VF9WQUxVRV9FWFQgICAgICAgICAweDIwMEIKLSNkZWZpbmUgV0dMX1NIQVJFX0RFUFRIX0VYVCAg
ICAgICAgICAgICAgIDB4MjAwQwotI2RlZmluZSBXR0xfU0hBUkVfU1RFTkNJTF9FWFQgICAgICAg
ICAgICAgMHgyMDBECi0jZGVmaW5lIFdHTF9TSEFSRV9BQ0NVTV9FWFQgICAgICAgICAgICAgICAw
eDIwMEUKLSNkZWZpbmUgV0dMX1NVUFBPUlRfR0RJX0VYVCAgICAgICAgICAgICAgIDB4MjAwRgot
I2RlZmluZSBXR0xfU1VQUE9SVF9PUEVOR0xfRVhUICAgICAgICAgICAgMHgyMDEwCi0jZGVmaW5l
IFdHTF9ET1VCTEVfQlVGRkVSX0VYVCAgICAgICAgICAgICAweDIwMTEKLSNkZWZpbmUgV0dMX1NU
RVJFT19FWFQgICAgICAgICAgICAgICAgICAgIDB4MjAxMgotI2RlZmluZSBXR0xfUElYRUxfVFlQ
RV9FWFQgICAgICAgICAgICAgICAgMHgyMDEzCi0jZGVmaW5lIFdHTF9DT0xPUl9CSVRTX0VYVCAg
ICAgICAgICAgICAgICAweDIwMTQKLSNkZWZpbmUgV0dMX1JFRF9CSVRTX0VYVCAgICAgICAgICAg
ICAgICAgIDB4MjAxNQotI2RlZmluZSBXR0xfUkVEX1NISUZUX0VYVCAgICAgICAgICAgICAgICAg
MHgyMDE2Ci0jZGVmaW5lIFdHTF9HUkVFTl9CSVRTX0VYVCAgICAgICAgICAgICAgICAweDIwMTcK
LSNkZWZpbmUgV0dMX0dSRUVOX1NISUZUX0VYVCAgICAgICAgICAgICAgIDB4MjAxOAotI2RlZmlu
ZSBXR0xfQkxVRV9CSVRTX0VYVCAgICAgICAgICAgICAgICAgMHgyMDE5Ci0jZGVmaW5lIFdHTF9C
TFVFX1NISUZUX0VYVCAgICAgICAgICAgICAgICAweDIwMUEKLSNkZWZpbmUgV0dMX0FMUEhBX0JJ
VFNfRVhUICAgICAgICAgICAgICAgIDB4MjAxQgotI2RlZmluZSBXR0xfQUxQSEFfU0hJRlRfRVhU
ICAgICAgICAgICAgICAgMHgyMDFDCi0jZGVmaW5lIFdHTF9BQ0NVTV9CSVRTX0VYVCAgICAgICAg
ICAgICAgICAweDIwMUQKLSNkZWZpbmUgV0dMX0FDQ1VNX1JFRF9CSVRTX0VYVCAgICAgICAgICAg
IDB4MjAxRQotI2RlZmluZSBXR0xfQUNDVU1fR1JFRU5fQklUU19FWFQgICAgICAgICAgMHgyMDFG
Ci0jZGVmaW5lIFdHTF9BQ0NVTV9CTFVFX0JJVFNfRVhUICAgICAgICAgICAweDIwMjAKLSNkZWZp
bmUgV0dMX0FDQ1VNX0FMUEhBX0JJVFNfRVhUICAgICAgICAgIDB4MjAyMQotI2RlZmluZSBXR0xf
REVQVEhfQklUU19FWFQgICAgICAgICAgICAgICAgMHgyMDIyCi0jZGVmaW5lIFdHTF9TVEVOQ0lM
X0JJVFNfRVhUICAgICAgICAgICAgICAweDIwMjMKLSNkZWZpbmUgV0dMX0FVWF9CVUZGRVJTX0VY
VCAgICAgICAgICAgICAgIDB4MjAyNAotI2RlZmluZSBXR0xfTk9fQUNDRUxFUkFUSU9OX0VYVCAg
ICAgICAgICAgMHgyMDI1Ci0jZGVmaW5lIFdHTF9HRU5FUklDX0FDQ0VMRVJBVElPTl9FWFQgICAg
ICAweDIwMjYKLSNkZWZpbmUgV0dMX0ZVTExfQUNDRUxFUkFUSU9OX0VYVCAgICAgICAgIDB4MjAy
NwotI2RlZmluZSBXR0xfU1dBUF9FWENIQU5HRV9FWFQgICAgICAgICAgICAgMHgyMDI4Ci0jZGVm
aW5lIFdHTF9TV0FQX0NPUFlfRVhUICAgICAgICAgICAgICAgICAweDIwMjkKLSNkZWZpbmUgV0dM
X1NXQVBfVU5ERUZJTkVEX0VYVCAgICAgICAgICAgIDB4MjAyQQotI2RlZmluZSBXR0xfVFlQRV9S
R0JBX0VYVCAgICAgICAgICAgICAgICAgMHgyMDJCCi0jZGVmaW5lIFdHTF9UWVBFX0NPTE9SSU5E
RVhfRVhUICAgICAgICAgICAweDIwMkMKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMR0VU
UElYRUxGT1JNQVRBVFRSSUJJVkVYVFBST0MpIChIREMgaGRjLCBpbnQgaVBpeGVsRm9ybWF0LCBp
bnQgaUxheWVyUGxhbmUsIFVJTlQgbkF0dHJpYnV0ZXMsIGludCAqcGlBdHRyaWJ1dGVzLCBpbnQg
KnBpVmFsdWVzKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMR0VUUElYRUxGT1JNQVRB
VFRSSUJGVkVYVFBST0MpIChIREMgaGRjLCBpbnQgaVBpeGVsRm9ybWF0LCBpbnQgaUxheWVyUGxh
bmUsIFVJTlQgbkF0dHJpYnV0ZXMsIGludCAqcGlBdHRyaWJ1dGVzLCBGTE9BVCAqcGZWYWx1ZXMp
OwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xDSE9PU0VQSVhFTEZPUk1BVEVYVFBST0Mp
IChIREMgaGRjLCBjb25zdCBpbnQgKnBpQXR0cmliSUxpc3QsIGNvbnN0IEZMT0FUICpwZkF0dHJp
YkZMaXN0LCBVSU5UIG5NYXhGb3JtYXRzLCBpbnQgKnBpRm9ybWF0cywgVUlOVCAqbk51bUZvcm1h
dHMpOwotI2lmZGVmIFdHTF9XR0xFWFRfUFJPVE9UWVBFUwotQk9PTCBXSU5BUEkgd2dsR2V0UGl4
ZWxGb3JtYXRBdHRyaWJpdkVYVCAoSERDIGhkYywgaW50IGlQaXhlbEZvcm1hdCwgaW50IGlMYXll
clBsYW5lLCBVSU5UIG5BdHRyaWJ1dGVzLCBpbnQgKnBpQXR0cmlidXRlcywgaW50ICpwaVZhbHVl
cyk7Ci1CT09MIFdJTkFQSSB3Z2xHZXRQaXhlbEZvcm1hdEF0dHJpYmZ2RVhUIChIREMgaGRjLCBp
bnQgaVBpeGVsRm9ybWF0LCBpbnQgaUxheWVyUGxhbmUsIFVJTlQgbkF0dHJpYnV0ZXMsIGludCAq
cGlBdHRyaWJ1dGVzLCBGTE9BVCAqcGZWYWx1ZXMpOwotQk9PTCBXSU5BUEkgd2dsQ2hvb3NlUGl4
ZWxGb3JtYXRFWFQgKEhEQyBoZGMsIGNvbnN0IGludCAqcGlBdHRyaWJJTGlzdCwgY29uc3QgRkxP
QVQgKnBmQXR0cmliRkxpc3QsIFVJTlQgbk1heEZvcm1hdHMsIGludCAqcGlGb3JtYXRzLCBVSU5U
ICpuTnVtRm9ybWF0cyk7Ci0jZW5kaWYKLSNlbmRpZiAvKiBXR0xfRVhUX3BpeGVsX2Zvcm1hdCAq
LwotCi0jaWZuZGVmIFdHTF9FWFRfcGl4ZWxfZm9ybWF0X3BhY2tlZF9mbG9hdAotI2RlZmluZSBX
R0xfRVhUX3BpeGVsX2Zvcm1hdF9wYWNrZWRfZmxvYXQgMQotI2RlZmluZSBXR0xfVFlQRV9SR0JB
X1VOU0lHTkVEX0ZMT0FUX0VYVCAgMHgyMEE4Ci0jZW5kaWYgLyogV0dMX0VYVF9waXhlbF9mb3Jt
YXRfcGFja2VkX2Zsb2F0ICovCi0KLSNpZm5kZWYgV0dMX0VYVF9zd2FwX2NvbnRyb2wKLSNkZWZp
bmUgV0dMX0VYVF9zd2FwX2NvbnRyb2wgMQotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xT
V0FQSU5URVJWQUxFWFRQUk9DKSAoaW50IGludGVydmFsKTsKLXR5cGVkZWYgaW50IChXSU5BUEkg
KiBQRk5XR0xHRVRTV0FQSU5URVJWQUxFWFRQUk9DKSAodm9pZCk7Ci0jaWZkZWYgV0dMX1dHTEVY
VF9QUk9UT1RZUEVTCi1CT09MIFdJTkFQSSB3Z2xTd2FwSW50ZXJ2YWxFWFQgKGludCBpbnRlcnZh
bCk7Ci1pbnQgV0lOQVBJIHdnbEdldFN3YXBJbnRlcnZhbEVYVCAodm9pZCk7Ci0jZW5kaWYKLSNl
bmRpZiAvKiBXR0xfRVhUX3N3YXBfY29udHJvbCAqLwotCi0jaWZuZGVmIFdHTF9FWFRfc3dhcF9j
b250cm9sX3RlYXIKLSNkZWZpbmUgV0dMX0VYVF9zd2FwX2NvbnRyb2xfdGVhciAxCi0jZW5kaWYg
LyogV0dMX0VYVF9zd2FwX2NvbnRyb2xfdGVhciAqLwotCi0jaWZuZGVmIFdHTF9JM0RfZGlnaXRh
bF92aWRlb19jb250cm9sCi0jZGVmaW5lIFdHTF9JM0RfZGlnaXRhbF92aWRlb19jb250cm9sIDEK
LSNkZWZpbmUgV0dMX0RJR0lUQUxfVklERU9fQ1VSU09SX0FMUEhBX0ZSQU1FQlVGRkVSX0kzRCAw
eDIwNTAKLSNkZWZpbmUgV0dMX0RJR0lUQUxfVklERU9fQ1VSU09SX0FMUEhBX1ZBTFVFX0kzRCAw
eDIwNTEKLSNkZWZpbmUgV0dMX0RJR0lUQUxfVklERU9fQ1VSU09SX0lOQ0xVREVEX0kzRCAweDIw
NTIKLSNkZWZpbmUgV0dMX0RJR0lUQUxfVklERU9fR0FNTUFfQ09SUkVDVEVEX0kzRCAweDIwNTMK
LXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMR0VURElHSVRBTFZJREVPUEFSQU1FVEVSU0kz
RFBST0MpIChIREMgaERDLCBpbnQgaUF0dHJpYnV0ZSwgaW50ICpwaVZhbHVlKTsKLXR5cGVkZWYg
Qk9PTCAoV0lOQVBJICogUEZOV0dMU0VURElHSVRBTFZJREVPUEFSQU1FVEVSU0kzRFBST0MpIChI
REMgaERDLCBpbnQgaUF0dHJpYnV0ZSwgY29uc3QgaW50ICpwaVZhbHVlKTsKLSNpZmRlZiBXR0xf
V0dMRVhUX1BST1RPVFlQRVMKLUJPT0wgV0lOQVBJIHdnbEdldERpZ2l0YWxWaWRlb1BhcmFtZXRl
cnNJM0QgKEhEQyBoREMsIGludCBpQXR0cmlidXRlLCBpbnQgKnBpVmFsdWUpOwotQk9PTCBXSU5B
UEkgd2dsU2V0RGlnaXRhbFZpZGVvUGFyYW1ldGVyc0kzRCAoSERDIGhEQywgaW50IGlBdHRyaWJ1
dGUsIGNvbnN0IGludCAqcGlWYWx1ZSk7Ci0jZW5kaWYKLSNlbmRpZiAvKiBXR0xfSTNEX2RpZ2l0
YWxfdmlkZW9fY29udHJvbCAqLwotCi0jaWZuZGVmIFdHTF9JM0RfZ2FtbWEKLSNkZWZpbmUgV0dM
X0kzRF9nYW1tYSAxCi0jZGVmaW5lIFdHTF9HQU1NQV9UQUJMRV9TSVpFX0kzRCAgICAgICAgICAw
eDIwNEUKLSNkZWZpbmUgV0dMX0dBTU1BX0VYQ0xVREVfREVTS1RPUF9JM0QgICAgIDB4MjA0Rgot
dHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xHRVRHQU1NQVRBQkxFUEFSQU1FVEVSU0kzRFBS
T0MpIChIREMgaERDLCBpbnQgaUF0dHJpYnV0ZSwgaW50ICpwaVZhbHVlKTsKLXR5cGVkZWYgQk9P
TCAoV0lOQVBJICogUEZOV0dMU0VUR0FNTUFUQUJMRVBBUkFNRVRFUlNJM0RQUk9DKSAoSERDIGhE
QywgaW50IGlBdHRyaWJ1dGUsIGNvbnN0IGludCAqcGlWYWx1ZSk7Ci10eXBlZGVmIEJPT0wgKFdJ
TkFQSSAqIFBGTldHTEdFVEdBTU1BVEFCTEVJM0RQUk9DKSAoSERDIGhEQywgaW50IGlFbnRyaWVz
LCBVU0hPUlQgKnB1UmVkLCBVU0hPUlQgKnB1R3JlZW4sIFVTSE9SVCAqcHVCbHVlKTsKLXR5cGVk
ZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMU0VUR0FNTUFUQUJMRUkzRFBST0MpIChIREMgaERDLCBp
bnQgaUVudHJpZXMsIGNvbnN0IFVTSE9SVCAqcHVSZWQsIGNvbnN0IFVTSE9SVCAqcHVHcmVlbiwg
Y29uc3QgVVNIT1JUICpwdUJsdWUpOwotI2lmZGVmIFdHTF9XR0xFWFRfUFJPVE9UWVBFUwotQk9P
TCBXSU5BUEkgd2dsR2V0R2FtbWFUYWJsZVBhcmFtZXRlcnNJM0QgKEhEQyBoREMsIGludCBpQXR0
cmlidXRlLCBpbnQgKnBpVmFsdWUpOwotQk9PTCBXSU5BUEkgd2dsU2V0R2FtbWFUYWJsZVBhcmFt
ZXRlcnNJM0QgKEhEQyBoREMsIGludCBpQXR0cmlidXRlLCBjb25zdCBpbnQgKnBpVmFsdWUpOwot
Qk9PTCBXSU5BUEkgd2dsR2V0R2FtbWFUYWJsZUkzRCAoSERDIGhEQywgaW50IGlFbnRyaWVzLCBV
U0hPUlQgKnB1UmVkLCBVU0hPUlQgKnB1R3JlZW4sIFVTSE9SVCAqcHVCbHVlKTsKLUJPT0wgV0lO
QVBJIHdnbFNldEdhbW1hVGFibGVJM0QgKEhEQyBoREMsIGludCBpRW50cmllcywgY29uc3QgVVNI
T1JUICpwdVJlZCwgY29uc3QgVVNIT1JUICpwdUdyZWVuLCBjb25zdCBVU0hPUlQgKnB1Qmx1ZSk7
Ci0jZW5kaWYKLSNlbmRpZiAvKiBXR0xfSTNEX2dhbW1hICovCi0KLSNpZm5kZWYgV0dMX0kzRF9n
ZW5sb2NrCi0jZGVmaW5lIFdHTF9JM0RfZ2VubG9jayAxCi0jZGVmaW5lIFdHTF9HRU5MT0NLX1NP
VVJDRV9NVUxUSVZJRVdfSTNEICAweDIwNDQKLSNkZWZpbmUgV0dMX0dFTkxPQ0tfU09VUkNFX0VY
VEVSTkFMX1NZTkNfSTNEIDB4MjA0NQotI2RlZmluZSBXR0xfR0VOTE9DS19TT1VSQ0VfRVhURVJO
QUxfRklFTERfSTNEIDB4MjA0NgotI2RlZmluZSBXR0xfR0VOTE9DS19TT1VSQ0VfRVhURVJOQUxf
VFRMX0kzRCAweDIwNDcKLSNkZWZpbmUgV0dMX0dFTkxPQ0tfU09VUkNFX0RJR0lUQUxfU1lOQ19J
M0QgMHgyMDQ4Ci0jZGVmaW5lIFdHTF9HRU5MT0NLX1NPVVJDRV9ESUdJVEFMX0ZJRUxEX0kzRCAw
eDIwNDkKLSNkZWZpbmUgV0dMX0dFTkxPQ0tfU09VUkNFX0VER0VfRkFMTElOR19JM0QgMHgyMDRB
Ci0jZGVmaW5lIFdHTF9HRU5MT0NLX1NPVVJDRV9FREdFX1JJU0lOR19JM0QgMHgyMDRCCi0jZGVm
aW5lIFdHTF9HRU5MT0NLX1NPVVJDRV9FREdFX0JPVEhfSTNEICAweDIwNEMKLXR5cGVkZWYgQk9P
TCAoV0lOQVBJICogUEZOV0dMRU5BQkxFR0VOTE9DS0kzRFBST0MpIChIREMgaERDKTsKLXR5cGVk
ZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMRElTQUJMRUdFTkxPQ0tJM0RQUk9DKSAoSERDIGhEQyk7
Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTElTRU5BQkxFREdFTkxPQ0tJM0RQUk9DKSAo
SERDIGhEQywgQk9PTCAqcEZsYWcpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xHRU5M
T0NLU09VUkNFSTNEUFJPQykgKEhEQyBoREMsIFVJTlQgdVNvdXJjZSk7Ci10eXBlZGVmIEJPT0wg
KFdJTkFQSSAqIFBGTldHTEdFVEdFTkxPQ0tTT1VSQ0VJM0RQUk9DKSAoSERDIGhEQywgVUlOVCAq
dVNvdXJjZSk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTEdFTkxPQ0tTT1VSQ0VFREdF
STNEUFJPQykgKEhEQyBoREMsIFVJTlQgdUVkZ2UpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQ
Rk5XR0xHRVRHRU5MT0NLU09VUkNFRURHRUkzRFBST0MpIChIREMgaERDLCBVSU5UICp1RWRnZSk7
Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTEdFTkxPQ0tTQU1QTEVSQVRFSTNEUFJPQykg
KEhEQyBoREMsIFVJTlQgdVJhdGUpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xHRVRH
RU5MT0NLU0FNUExFUkFURUkzRFBST0MpIChIREMgaERDLCBVSU5UICp1UmF0ZSk7Ci10eXBlZGVm
IEJPT0wgKFdJTkFQSSAqIFBGTldHTEdFTkxPQ0tTT1VSQ0VERUxBWUkzRFBST0MpIChIREMgaERD
LCBVSU5UIHVEZWxheSk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTEdFVEdFTkxPQ0tT
T1VSQ0VERUxBWUkzRFBST0MpIChIREMgaERDLCBVSU5UICp1RGVsYXkpOwotdHlwZWRlZiBCT09M
IChXSU5BUEkgKiBQRk5XR0xRVUVSWUdFTkxPQ0tNQVhTT1VSQ0VERUxBWUkzRFBST0MpIChIREMg
aERDLCBVSU5UICp1TWF4TGluZURlbGF5LCBVSU5UICp1TWF4UGl4ZWxEZWxheSk7Ci0jaWZkZWYg
V0dMX1dHTEVYVF9QUk9UT1RZUEVTCi1CT09MIFdJTkFQSSB3Z2xFbmFibGVHZW5sb2NrSTNEIChI
REMgaERDKTsKLUJPT0wgV0lOQVBJIHdnbERpc2FibGVHZW5sb2NrSTNEIChIREMgaERDKTsKLUJP
T0wgV0lOQVBJIHdnbElzRW5hYmxlZEdlbmxvY2tJM0QgKEhEQyBoREMsIEJPT0wgKnBGbGFnKTsK
LUJPT0wgV0lOQVBJIHdnbEdlbmxvY2tTb3VyY2VJM0QgKEhEQyBoREMsIFVJTlQgdVNvdXJjZSk7
Ci1CT09MIFdJTkFQSSB3Z2xHZXRHZW5sb2NrU291cmNlSTNEIChIREMgaERDLCBVSU5UICp1U291
cmNlKTsKLUJPT0wgV0lOQVBJIHdnbEdlbmxvY2tTb3VyY2VFZGdlSTNEIChIREMgaERDLCBVSU5U
IHVFZGdlKTsKLUJPT0wgV0lOQVBJIHdnbEdldEdlbmxvY2tTb3VyY2VFZGdlSTNEIChIREMgaERD
LCBVSU5UICp1RWRnZSk7Ci1CT09MIFdJTkFQSSB3Z2xHZW5sb2NrU2FtcGxlUmF0ZUkzRCAoSERD
IGhEQywgVUlOVCB1UmF0ZSk7Ci1CT09MIFdJTkFQSSB3Z2xHZXRHZW5sb2NrU2FtcGxlUmF0ZUkz
RCAoSERDIGhEQywgVUlOVCAqdVJhdGUpOwotQk9PTCBXSU5BUEkgd2dsR2VubG9ja1NvdXJjZURl
bGF5STNEIChIREMgaERDLCBVSU5UIHVEZWxheSk7Ci1CT09MIFdJTkFQSSB3Z2xHZXRHZW5sb2Nr
U291cmNlRGVsYXlJM0QgKEhEQyBoREMsIFVJTlQgKnVEZWxheSk7Ci1CT09MIFdJTkFQSSB3Z2xR
dWVyeUdlbmxvY2tNYXhTb3VyY2VEZWxheUkzRCAoSERDIGhEQywgVUlOVCAqdU1heExpbmVEZWxh
eSwgVUlOVCAqdU1heFBpeGVsRGVsYXkpOwotI2VuZGlmCi0jZW5kaWYgLyogV0dMX0kzRF9nZW5s
b2NrICovCi0KLSNpZm5kZWYgV0dMX0kzRF9pbWFnZV9idWZmZXIKLSNkZWZpbmUgV0dMX0kzRF9p
bWFnZV9idWZmZXIgMQotI2RlZmluZSBXR0xfSU1BR0VfQlVGRkVSX01JTl9BQ0NFU1NfSTNEICAg
MHgwMDAwMDAwMQotI2RlZmluZSBXR0xfSU1BR0VfQlVGRkVSX0xPQ0tfSTNEICAgICAgICAgMHgw
MDAwMDAwMgotdHlwZWRlZiBMUFZPSUQgKFdJTkFQSSAqIFBGTldHTENSRUFURUlNQUdFQlVGRkVS
STNEUFJPQykgKEhEQyBoREMsIERXT1JEIGR3U2l6ZSwgVUlOVCB1RmxhZ3MpOwotdHlwZWRlZiBC
T09MIChXSU5BUEkgKiBQRk5XR0xERVNUUk9ZSU1BR0VCVUZGRVJJM0RQUk9DKSAoSERDIGhEQywg
TFBWT0lEIHBBZGRyZXNzKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMQVNTT0NJQVRF
SU1BR0VCVUZGRVJFVkVOVFNJM0RQUk9DKSAoSERDIGhEQywgY29uc3QgSEFORExFICpwRXZlbnQs
IGNvbnN0IExQVk9JRCAqcEFkZHJlc3MsIGNvbnN0IERXT1JEICpwU2l6ZSwgVUlOVCBjb3VudCk7
Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTFJFTEVBU0VJTUFHRUJVRkZFUkVWRU5UU0kz
RFBST0MpIChIREMgaERDLCBjb25zdCBMUFZPSUQgKnBBZGRyZXNzLCBVSU5UIGNvdW50KTsKLSNp
ZmRlZiBXR0xfV0dMRVhUX1BST1RPVFlQRVMKLUxQVk9JRCBXSU5BUEkgd2dsQ3JlYXRlSW1hZ2VC
dWZmZXJJM0QgKEhEQyBoREMsIERXT1JEIGR3U2l6ZSwgVUlOVCB1RmxhZ3MpOwotQk9PTCBXSU5B
UEkgd2dsRGVzdHJveUltYWdlQnVmZmVySTNEIChIREMgaERDLCBMUFZPSUQgcEFkZHJlc3MpOwot
Qk9PTCBXSU5BUEkgd2dsQXNzb2NpYXRlSW1hZ2VCdWZmZXJFdmVudHNJM0QgKEhEQyBoREMsIGNv
bnN0IEhBTkRMRSAqcEV2ZW50LCBjb25zdCBMUFZPSUQgKnBBZGRyZXNzLCBjb25zdCBEV09SRCAq
cFNpemUsIFVJTlQgY291bnQpOwotQk9PTCBXSU5BUEkgd2dsUmVsZWFzZUltYWdlQnVmZmVyRXZl
bnRzSTNEIChIREMgaERDLCBjb25zdCBMUFZPSUQgKnBBZGRyZXNzLCBVSU5UIGNvdW50KTsKLSNl
bmRpZgotI2VuZGlmIC8qIFdHTF9JM0RfaW1hZ2VfYnVmZmVyICovCi0KLSNpZm5kZWYgV0dMX0kz
RF9zd2FwX2ZyYW1lX2xvY2sKLSNkZWZpbmUgV0dMX0kzRF9zd2FwX2ZyYW1lX2xvY2sgMQotdHlw
ZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xFTkFCTEVGUkFNRUxPQ0tJM0RQUk9DKSAodm9pZCk7
Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTERJU0FCTEVGUkFNRUxPQ0tJM0RQUk9DKSAo
dm9pZCk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTElTRU5BQkxFREZSQU1FTE9DS0kz
RFBST0MpIChCT09MICpwRmxhZyk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTFFVRVJZ
RlJBTUVMT0NLTUFTVEVSSTNEUFJPQykgKEJPT0wgKnBGbGFnKTsKLSNpZmRlZiBXR0xfV0dMRVhU
X1BST1RPVFlQRVMKLUJPT0wgV0lOQVBJIHdnbEVuYWJsZUZyYW1lTG9ja0kzRCAodm9pZCk7Ci1C
T09MIFdJTkFQSSB3Z2xEaXNhYmxlRnJhbWVMb2NrSTNEICh2b2lkKTsKLUJPT0wgV0lOQVBJIHdn
bElzRW5hYmxlZEZyYW1lTG9ja0kzRCAoQk9PTCAqcEZsYWcpOwotQk9PTCBXSU5BUEkgd2dsUXVl
cnlGcmFtZUxvY2tNYXN0ZXJJM0QgKEJPT0wgKnBGbGFnKTsKLSNlbmRpZgotI2VuZGlmIC8qIFdH
TF9JM0Rfc3dhcF9mcmFtZV9sb2NrICovCi0KLSNpZm5kZWYgV0dMX0kzRF9zd2FwX2ZyYW1lX3Vz
YWdlCi0jZGVmaW5lIFdHTF9JM0Rfc3dhcF9mcmFtZV91c2FnZSAxCi10eXBlZGVmIEJPT0wgKFdJ
TkFQSSAqIFBGTldHTEdFVEZSQU1FVVNBR0VJM0RQUk9DKSAoZmxvYXQgKnBVc2FnZSk7Ci10eXBl
ZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTEJFR0lORlJBTUVUUkFDS0lOR0kzRFBST0MpICh2b2lk
KTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMRU5ERlJBTUVUUkFDS0lOR0kzRFBST0Mp
ICh2b2lkKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMUVVFUllGUkFNRVRSQUNLSU5H
STNEUFJPQykgKERXT1JEICpwRnJhbWVDb3VudCwgRFdPUkQgKnBNaXNzZWRGcmFtZXMsIGZsb2F0
ICpwTGFzdE1pc3NlZFVzYWdlKTsKLSNpZmRlZiBXR0xfV0dMRVhUX1BST1RPVFlQRVMKLUJPT0wg
V0lOQVBJIHdnbEdldEZyYW1lVXNhZ2VJM0QgKGZsb2F0ICpwVXNhZ2UpOwotQk9PTCBXSU5BUEkg
d2dsQmVnaW5GcmFtZVRyYWNraW5nSTNEICh2b2lkKTsKLUJPT0wgV0lOQVBJIHdnbEVuZEZyYW1l
VHJhY2tpbmdJM0QgKHZvaWQpOwotQk9PTCBXSU5BUEkgd2dsUXVlcnlGcmFtZVRyYWNraW5nSTNE
IChEV09SRCAqcEZyYW1lQ291bnQsIERXT1JEICpwTWlzc2VkRnJhbWVzLCBmbG9hdCAqcExhc3RN
aXNzZWRVc2FnZSk7Ci0jZW5kaWYKLSNlbmRpZiAvKiBXR0xfSTNEX3N3YXBfZnJhbWVfdXNhZ2Ug
Ki8KLQotI2lmbmRlZiBXR0xfTlZfRFhfaW50ZXJvcAotI2RlZmluZSBXR0xfTlZfRFhfaW50ZXJv
cCAxCi0jZGVmaW5lIFdHTF9BQ0NFU1NfUkVBRF9PTkxZX05WICAgICAgICAgICAweDAwMDAwMDAw
Ci0jZGVmaW5lIFdHTF9BQ0NFU1NfUkVBRF9XUklURV9OViAgICAgICAgICAweDAwMDAwMDAxCi0j
ZGVmaW5lIFdHTF9BQ0NFU1NfV1JJVEVfRElTQ0FSRF9OViAgICAgICAweDAwMDAwMDAyCi10eXBl
ZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTERYU0VUUkVTT1VSQ0VTSEFSRUhBTkRMRU5WUFJPQykg
KHZvaWQgKmR4T2JqZWN0LCBIQU5ETEUgc2hhcmVIYW5kbGUpOwotdHlwZWRlZiBIQU5ETEUgKFdJ
TkFQSSAqIFBGTldHTERYT1BFTkRFVklDRU5WUFJPQykgKHZvaWQgKmR4RGV2aWNlKTsKLXR5cGVk
ZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMRFhDTE9TRURFVklDRU5WUFJPQykgKEhBTkRMRSBoRGV2
aWNlKTsKLXR5cGVkZWYgSEFORExFIChXSU5BUEkgKiBQRk5XR0xEWFJFR0lTVEVST0JKRUNUTlZQ
Uk9DKSAoSEFORExFIGhEZXZpY2UsIHZvaWQgKmR4T2JqZWN0LCBHTHVpbnQgbmFtZSwgR0xlbnVt
IHR5cGUsIEdMZW51bSBhY2Nlc3MpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xEWFVO
UkVHSVNURVJPQkpFQ1ROVlBST0MpIChIQU5ETEUgaERldmljZSwgSEFORExFIGhPYmplY3QpOwot
dHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xEWE9CSkVDVEFDQ0VTU05WUFJPQykgKEhBTkRM
RSBoT2JqZWN0LCBHTGVudW0gYWNjZXNzKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dM
RFhMT0NLT0JKRUNUU05WUFJPQykgKEhBTkRMRSBoRGV2aWNlLCBHTGludCBjb3VudCwgSEFORExF
ICpoT2JqZWN0cyk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTERYVU5MT0NLT0JKRUNU
U05WUFJPQykgKEhBTkRMRSBoRGV2aWNlLCBHTGludCBjb3VudCwgSEFORExFICpoT2JqZWN0cyk7
Ci0jaWZkZWYgV0dMX1dHTEVYVF9QUk9UT1RZUEVTCi1CT09MIFdJTkFQSSB3Z2xEWFNldFJlc291
cmNlU2hhcmVIYW5kbGVOViAodm9pZCAqZHhPYmplY3QsIEhBTkRMRSBzaGFyZUhhbmRsZSk7Ci1I
QU5ETEUgV0lOQVBJIHdnbERYT3BlbkRldmljZU5WICh2b2lkICpkeERldmljZSk7Ci1CT09MIFdJ
TkFQSSB3Z2xEWENsb3NlRGV2aWNlTlYgKEhBTkRMRSBoRGV2aWNlKTsKLUhBTkRMRSBXSU5BUEkg
d2dsRFhSZWdpc3Rlck9iamVjdE5WIChIQU5ETEUgaERldmljZSwgdm9pZCAqZHhPYmplY3QsIEdM
dWludCBuYW1lLCBHTGVudW0gdHlwZSwgR0xlbnVtIGFjY2Vzcyk7Ci1CT09MIFdJTkFQSSB3Z2xE
WFVucmVnaXN0ZXJPYmplY3ROViAoSEFORExFIGhEZXZpY2UsIEhBTkRMRSBoT2JqZWN0KTsKLUJP
T0wgV0lOQVBJIHdnbERYT2JqZWN0QWNjZXNzTlYgKEhBTkRMRSBoT2JqZWN0LCBHTGVudW0gYWNj
ZXNzKTsKLUJPT0wgV0lOQVBJIHdnbERYTG9ja09iamVjdHNOViAoSEFORExFIGhEZXZpY2UsIEdM
aW50IGNvdW50LCBIQU5ETEUgKmhPYmplY3RzKTsKLUJPT0wgV0lOQVBJIHdnbERYVW5sb2NrT2Jq
ZWN0c05WIChIQU5ETEUgaERldmljZSwgR0xpbnQgY291bnQsIEhBTkRMRSAqaE9iamVjdHMpOwot
I2VuZGlmCi0jZW5kaWYgLyogV0dMX05WX0RYX2ludGVyb3AgKi8KLQotI2lmbmRlZiBXR0xfTlZf
RFhfaW50ZXJvcDIKLSNkZWZpbmUgV0dMX05WX0RYX2ludGVyb3AyIDEKLSNlbmRpZiAvKiBXR0xf
TlZfRFhfaW50ZXJvcDIgKi8KLQotI2lmbmRlZiBXR0xfTlZfY29weV9pbWFnZQotI2RlZmluZSBX
R0xfTlZfY29weV9pbWFnZSAxCi10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTENPUFlJTUFH
RVNVQkRBVEFOVlBST0MpIChIR0xSQyBoU3JjUkMsIEdMdWludCBzcmNOYW1lLCBHTGVudW0gc3Jj
VGFyZ2V0LCBHTGludCBzcmNMZXZlbCwgR0xpbnQgc3JjWCwgR0xpbnQgc3JjWSwgR0xpbnQgc3Jj
WiwgSEdMUkMgaERzdFJDLCBHTHVpbnQgZHN0TmFtZSwgR0xlbnVtIGRzdFRhcmdldCwgR0xpbnQg
ZHN0TGV2ZWwsIEdMaW50IGRzdFgsIEdMaW50IGRzdFksIEdMaW50IGRzdFosIEdMc2l6ZWkgd2lk
dGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoKTsKLSNpZmRlZiBXR0xfV0dMRVhUX1BS
T1RPVFlQRVMKLUJPT0wgV0lOQVBJIHdnbENvcHlJbWFnZVN1YkRhdGFOViAoSEdMUkMgaFNyY1JD
LCBHTHVpbnQgc3JjTmFtZSwgR0xlbnVtIHNyY1RhcmdldCwgR0xpbnQgc3JjTGV2ZWwsIEdMaW50
IHNyY1gsIEdMaW50IHNyY1ksIEdMaW50IHNyY1osIEhHTFJDIGhEc3RSQywgR0x1aW50IGRzdE5h
bWUsIEdMZW51bSBkc3RUYXJnZXQsIEdMaW50IGRzdExldmVsLCBHTGludCBkc3RYLCBHTGludCBk
c3RZLCBHTGludCBkc3RaLCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBk
ZXB0aCk7Ci0jZW5kaWYKLSNlbmRpZiAvKiBXR0xfTlZfY29weV9pbWFnZSAqLwotCi0jaWZuZGVm
IFdHTF9OVl9kZWxheV9iZWZvcmVfc3dhcAotI2RlZmluZSBXR0xfTlZfZGVsYXlfYmVmb3JlX3N3
YXAgMQotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xERUxBWUJFRk9SRVNXQVBOVlBST0Mp
IChIREMgaERDLCBHTGZsb2F0IHNlY29uZHMpOwotI2lmZGVmIFdHTF9XR0xFWFRfUFJPVE9UWVBF
UwotQk9PTCBXSU5BUEkgd2dsRGVsYXlCZWZvcmVTd2FwTlYgKEhEQyBoREMsIEdMZmxvYXQgc2Vj
b25kcyk7Ci0jZW5kaWYKLSNlbmRpZiAvKiBXR0xfTlZfZGVsYXlfYmVmb3JlX3N3YXAgKi8KLQot
I2lmbmRlZiBXR0xfTlZfZmxvYXRfYnVmZmVyCi0jZGVmaW5lIFdHTF9OVl9mbG9hdF9idWZmZXIg
MQotI2RlZmluZSBXR0xfRkxPQVRfQ09NUE9ORU5UU19OViAgICAgICAgICAgMHgyMEIwCi0jZGVm
aW5lIFdHTF9CSU5EX1RPX1RFWFRVUkVfUkVDVEFOR0xFX0ZMT0FUX1JfTlYgMHgyMEIxCi0jZGVm
aW5lIFdHTF9CSU5EX1RPX1RFWFRVUkVfUkVDVEFOR0xFX0ZMT0FUX1JHX05WIDB4MjBCMgotI2Rl
ZmluZSBXR0xfQklORF9UT19URVhUVVJFX1JFQ1RBTkdMRV9GTE9BVF9SR0JfTlYgMHgyMEIzCi0j
ZGVmaW5lIFdHTF9CSU5EX1RPX1RFWFRVUkVfUkVDVEFOR0xFX0ZMT0FUX1JHQkFfTlYgMHgyMEI0
Ci0jZGVmaW5lIFdHTF9URVhUVVJFX0ZMT0FUX1JfTlYgICAgICAgICAgICAweDIwQjUKLSNkZWZp
bmUgV0dMX1RFWFRVUkVfRkxPQVRfUkdfTlYgICAgICAgICAgIDB4MjBCNgotI2RlZmluZSBXR0xf
VEVYVFVSRV9GTE9BVF9SR0JfTlYgICAgICAgICAgMHgyMEI3Ci0jZGVmaW5lIFdHTF9URVhUVVJF
X0ZMT0FUX1JHQkFfTlYgICAgICAgICAweDIwQjgKLSNlbmRpZiAvKiBXR0xfTlZfZmxvYXRfYnVm
ZmVyICovCi0KLSNpZm5kZWYgV0dMX05WX2dwdV9hZmZpbml0eQotI2RlZmluZSBXR0xfTlZfZ3B1
X2FmZmluaXR5IDEKLURFQ0xBUkVfSEFORExFKEhHUFVOVik7Ci1zdHJ1Y3QgX0dQVV9ERVZJQ0Ug
ewotICAgIERXT1JEICBjYjsKLSAgICBDSEFSICAgRGV2aWNlTmFtZVszMl07Ci0gICAgQ0hBUiAg
IERldmljZVN0cmluZ1sxMjhdOwotICAgIERXT1JEICBGbGFnczsKLSAgICBSRUNUICAgcmNWaXJ0
dWFsU2NyZWVuOwotfTsKLXR5cGVkZWYgc3RydWN0IF9HUFVfREVWSUNFICpQR1BVX0RFVklDRTsK
LSNkZWZpbmUgRVJST1JfSU5DT01QQVRJQkxFX0FGRklOSVRZX01BU0tTX05WIDB4MjBEMAotI2Rl
ZmluZSBFUlJPUl9NSVNTSU5HX0FGRklOSVRZX01BU0tfTlYgICAgMHgyMEQxCi10eXBlZGVmIEJP
T0wgKFdJTkFQSSAqIFBGTldHTEVOVU1HUFVTTlZQUk9DKSAoVUlOVCBpR3B1SW5kZXgsIEhHUFVO
ViAqcGhHcHUpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xFTlVNR1BVREVWSUNFU05W
UFJPQykgKEhHUFVOViBoR3B1LCBVSU5UIGlEZXZpY2VJbmRleCwgUEdQVV9ERVZJQ0UgbHBHcHVE
ZXZpY2UpOwotdHlwZWRlZiBIREMgKFdJTkFQSSAqIFBGTldHTENSRUFURUFGRklOSVRZRENOVlBS
T0MpIChjb25zdCBIR1BVTlYgKnBoR3B1TGlzdCk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBG
TldHTEVOVU1HUFVTRlJPTUFGRklOSVRZRENOVlBST0MpIChIREMgaEFmZmluaXR5REMsIFVJTlQg
aUdwdUluZGV4LCBIR1BVTlYgKmhHcHUpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xE
RUxFVEVEQ05WUFJPQykgKEhEQyBoZGMpOwotI2lmZGVmIFdHTF9XR0xFWFRfUFJPVE9UWVBFUwot
Qk9PTCBXSU5BUEkgd2dsRW51bUdwdXNOViAoVUlOVCBpR3B1SW5kZXgsIEhHUFVOViAqcGhHcHUp
OwotQk9PTCBXSU5BUEkgd2dsRW51bUdwdURldmljZXNOViAoSEdQVU5WIGhHcHUsIFVJTlQgaURl
dmljZUluZGV4LCBQR1BVX0RFVklDRSBscEdwdURldmljZSk7Ci1IREMgV0lOQVBJIHdnbENyZWF0
ZUFmZmluaXR5RENOViAoY29uc3QgSEdQVU5WICpwaEdwdUxpc3QpOwotQk9PTCBXSU5BUEkgd2ds
RW51bUdwdXNGcm9tQWZmaW5pdHlEQ05WIChIREMgaEFmZmluaXR5REMsIFVJTlQgaUdwdUluZGV4
LCBIR1BVTlYgKmhHcHUpOwotQk9PTCBXSU5BUEkgd2dsRGVsZXRlRENOViAoSERDIGhkYyk7Ci0j
ZW5kaWYKLSNlbmRpZiAvKiBXR0xfTlZfZ3B1X2FmZmluaXR5ICovCi0KLSNpZm5kZWYgV0dMX05W
X211bHRpc2FtcGxlX2NvdmVyYWdlCi0jZGVmaW5lIFdHTF9OVl9tdWx0aXNhbXBsZV9jb3ZlcmFn
ZSAxCi0jZGVmaW5lIFdHTF9DT1ZFUkFHRV9TQU1QTEVTX05WICAgICAgICAgICAweDIwNDIKLSNk
ZWZpbmUgV0dMX0NPTE9SX1NBTVBMRVNfTlYgICAgICAgICAgICAgIDB4MjBCOQotI2VuZGlmIC8q
IFdHTF9OVl9tdWx0aXNhbXBsZV9jb3ZlcmFnZSAqLwotCi0jaWZuZGVmIFdHTF9OVl9wcmVzZW50
X3ZpZGVvCi0jZGVmaW5lIFdHTF9OVl9wcmVzZW50X3ZpZGVvIDEKLURFQ0xBUkVfSEFORExFKEhW
SURFT09VVFBVVERFVklDRU5WKTsKLSNkZWZpbmUgV0dMX05VTV9WSURFT19TTE9UU19OViAgICAg
ICAgICAgIDB4MjBGMAotdHlwZWRlZiBpbnQgKFdJTkFQSSAqIFBGTldHTEVOVU1FUkFURVZJREVP
REVWSUNFU05WUFJPQykgKEhEQyBoREMsIEhWSURFT09VVFBVVERFVklDRU5WICpwaERldmljZUxp
c3QpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xCSU5EVklERU9ERVZJQ0VOVlBST0Mp
IChIREMgaERDLCB1bnNpZ25lZCBpbnQgdVZpZGVvU2xvdCwgSFZJREVPT1VUUFVUREVWSUNFTlYg
aFZpZGVvRGV2aWNlLCBjb25zdCBpbnQgKnBpQXR0cmliTGlzdCk7Ci10eXBlZGVmIEJPT0wgKFdJ
TkFQSSAqIFBGTldHTFFVRVJZQ1VSUkVOVENPTlRFWFROVlBST0MpIChpbnQgaUF0dHJpYnV0ZSwg
aW50ICpwaVZhbHVlKTsKLSNpZmRlZiBXR0xfV0dMRVhUX1BST1RPVFlQRVMKLWludCBXSU5BUEkg
d2dsRW51bWVyYXRlVmlkZW9EZXZpY2VzTlYgKEhEQyBoREMsIEhWSURFT09VVFBVVERFVklDRU5W
ICpwaERldmljZUxpc3QpOwotQk9PTCBXSU5BUEkgd2dsQmluZFZpZGVvRGV2aWNlTlYgKEhEQyBo
REMsIHVuc2lnbmVkIGludCB1VmlkZW9TbG90LCBIVklERU9PVVRQVVRERVZJQ0VOViBoVmlkZW9E
ZXZpY2UsIGNvbnN0IGludCAqcGlBdHRyaWJMaXN0KTsKLUJPT0wgV0lOQVBJIHdnbFF1ZXJ5Q3Vy
cmVudENvbnRleHROViAoaW50IGlBdHRyaWJ1dGUsIGludCAqcGlWYWx1ZSk7Ci0jZW5kaWYKLSNl
bmRpZiAvKiBXR0xfTlZfcHJlc2VudF92aWRlbyAqLwotCi0jaWZuZGVmIFdHTF9OVl9yZW5kZXJf
ZGVwdGhfdGV4dHVyZQotI2RlZmluZSBXR0xfTlZfcmVuZGVyX2RlcHRoX3RleHR1cmUgMQotI2Rl
ZmluZSBXR0xfQklORF9UT19URVhUVVJFX0RFUFRIX05WICAgICAgMHgyMEEzCi0jZGVmaW5lIFdH
TF9CSU5EX1RPX1RFWFRVUkVfUkVDVEFOR0xFX0RFUFRIX05WIDB4MjBBNAotI2RlZmluZSBXR0xf
REVQVEhfVEVYVFVSRV9GT1JNQVRfTlYgICAgICAgMHgyMEE1Ci0jZGVmaW5lIFdHTF9URVhUVVJF
X0RFUFRIX0NPTVBPTkVOVF9OViAgICAweDIwQTYKLSNkZWZpbmUgV0dMX0RFUFRIX0NPTVBPTkVO
VF9OViAgICAgICAgICAgIDB4MjBBNwotI2VuZGlmIC8qIFdHTF9OVl9yZW5kZXJfZGVwdGhfdGV4
dHVyZSAqLwotCi0jaWZuZGVmIFdHTF9OVl9yZW5kZXJfdGV4dHVyZV9yZWN0YW5nbGUKLSNkZWZp
bmUgV0dMX05WX3JlbmRlcl90ZXh0dXJlX3JlY3RhbmdsZSAxCi0jZGVmaW5lIFdHTF9CSU5EX1RP
X1RFWFRVUkVfUkVDVEFOR0xFX1JHQl9OViAweDIwQTAKLSNkZWZpbmUgV0dMX0JJTkRfVE9fVEVY
VFVSRV9SRUNUQU5HTEVfUkdCQV9OViAweDIwQTEKLSNkZWZpbmUgV0dMX1RFWFRVUkVfUkVDVEFO
R0xFX05WICAgICAgICAgIDB4MjBBMgotI2VuZGlmIC8qIFdHTF9OVl9yZW5kZXJfdGV4dHVyZV9y
ZWN0YW5nbGUgKi8KLQotI2lmbmRlZiBXR0xfTlZfc3dhcF9ncm91cAotI2RlZmluZSBXR0xfTlZf
c3dhcF9ncm91cCAxCi10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTEpPSU5TV0FQR1JPVVBO
VlBST0MpIChIREMgaERDLCBHTHVpbnQgZ3JvdXApOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQ
Rk5XR0xCSU5EU1dBUEJBUlJJRVJOVlBST0MpIChHTHVpbnQgZ3JvdXAsIEdMdWludCBiYXJyaWVy
KTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMUVVFUllTV0FQR1JPVVBOVlBST0MpIChI
REMgaERDLCBHTHVpbnQgKmdyb3VwLCBHTHVpbnQgKmJhcnJpZXIpOwotdHlwZWRlZiBCT09MIChX
SU5BUEkgKiBQRk5XR0xRVUVSWU1BWFNXQVBHUk9VUFNOVlBST0MpIChIREMgaERDLCBHTHVpbnQg
Km1heEdyb3VwcywgR0x1aW50ICptYXhCYXJyaWVycyk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAq
IFBGTldHTFFVRVJZRlJBTUVDT1VOVE5WUFJPQykgKEhEQyBoREMsIEdMdWludCAqY291bnQpOwot
dHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xSRVNFVEZSQU1FQ09VTlROVlBST0MpIChIREMg
aERDKTsKLSNpZmRlZiBXR0xfV0dMRVhUX1BST1RPVFlQRVMKLUJPT0wgV0lOQVBJIHdnbEpvaW5T
d2FwR3JvdXBOViAoSERDIGhEQywgR0x1aW50IGdyb3VwKTsKLUJPT0wgV0lOQVBJIHdnbEJpbmRT
d2FwQmFycmllck5WIChHTHVpbnQgZ3JvdXAsIEdMdWludCBiYXJyaWVyKTsKLUJPT0wgV0lOQVBJ
IHdnbFF1ZXJ5U3dhcEdyb3VwTlYgKEhEQyBoREMsIEdMdWludCAqZ3JvdXAsIEdMdWludCAqYmFy
cmllcik7Ci1CT09MIFdJTkFQSSB3Z2xRdWVyeU1heFN3YXBHcm91cHNOViAoSERDIGhEQywgR0x1
aW50ICptYXhHcm91cHMsIEdMdWludCAqbWF4QmFycmllcnMpOwotQk9PTCBXSU5BUEkgd2dsUXVl
cnlGcmFtZUNvdW50TlYgKEhEQyBoREMsIEdMdWludCAqY291bnQpOwotQk9PTCBXSU5BUEkgd2ds
UmVzZXRGcmFtZUNvdW50TlYgKEhEQyBoREMpOwotI2VuZGlmCi0jZW5kaWYgLyogV0dMX05WX3N3
YXBfZ3JvdXAgKi8KLQotI2lmbmRlZiBXR0xfTlZfdmVydGV4X2FycmF5X3JhbmdlCi0jZGVmaW5l
IFdHTF9OVl92ZXJ0ZXhfYXJyYXlfcmFuZ2UgMQotdHlwZWRlZiB2b2lkICooV0lOQVBJICogUEZO
V0dMQUxMT0NBVEVNRU1PUllOVlBST0MpIChHTHNpemVpIHNpemUsIEdMZmxvYXQgcmVhZGZyZXEs
IEdMZmxvYXQgd3JpdGVmcmVxLCBHTGZsb2F0IHByaW9yaXR5KTsKLXR5cGVkZWYgdm9pZCAoV0lO
QVBJICogUEZOV0dMRlJFRU1FTU9SWU5WUFJPQykgKHZvaWQgKnBvaW50ZXIpOwotI2lmZGVmIFdH
TF9XR0xFWFRfUFJPVE9UWVBFUwotdm9pZCAqV0lOQVBJIHdnbEFsbG9jYXRlTWVtb3J5TlYgKEdM
c2l6ZWkgc2l6ZSwgR0xmbG9hdCByZWFkZnJlcSwgR0xmbG9hdCB3cml0ZWZyZXEsIEdMZmxvYXQg
cHJpb3JpdHkpOwotdm9pZCBXSU5BUEkgd2dsRnJlZU1lbW9yeU5WICh2b2lkICpwb2ludGVyKTsK
LSNlbmRpZgotI2VuZGlmIC8qIFdHTF9OVl92ZXJ0ZXhfYXJyYXlfcmFuZ2UgKi8KLQotI2lmbmRl
ZiBXR0xfTlZfdmlkZW9fY2FwdHVyZQotI2RlZmluZSBXR0xfTlZfdmlkZW9fY2FwdHVyZSAxCi1E
RUNMQVJFX0hBTkRMRShIVklERU9JTlBVVERFVklDRU5WKTsKLSNkZWZpbmUgV0dMX1VOSVFVRV9J
RF9OViAgICAgICAgICAgICAgICAgIDB4MjBDRQotI2RlZmluZSBXR0xfTlVNX1ZJREVPX0NBUFRV
UkVfU0xPVFNfTlYgICAgMHgyMENGCi10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTEJJTkRW
SURFT0NBUFRVUkVERVZJQ0VOVlBST0MpIChVSU5UIHVWaWRlb1Nsb3QsIEhWSURFT0lOUFVUREVW
SUNFTlYgaERldmljZSk7Ci10eXBlZGVmIFVJTlQgKFdJTkFQSSAqIFBGTldHTEVOVU1FUkFURVZJ
REVPQ0FQVFVSRURFVklDRVNOVlBST0MpIChIREMgaERjLCBIVklERU9JTlBVVERFVklDRU5WICpw
aERldmljZUxpc3QpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xMT0NLVklERU9DQVBU
VVJFREVWSUNFTlZQUk9DKSAoSERDIGhEYywgSFZJREVPSU5QVVRERVZJQ0VOViBoRGV2aWNlKTsK
LXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMUVVFUllWSURFT0NBUFRVUkVERVZJQ0VOVlBS
T0MpIChIREMgaERjLCBIVklERU9JTlBVVERFVklDRU5WIGhEZXZpY2UsIGludCBpQXR0cmlidXRl
LCBpbnQgKnBpVmFsdWUpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xSRUxFQVNFVklE
RU9DQVBUVVJFREVWSUNFTlZQUk9DKSAoSERDIGhEYywgSFZJREVPSU5QVVRERVZJQ0VOViBoRGV2
aWNlKTsKLSNpZmRlZiBXR0xfV0dMRVhUX1BST1RPVFlQRVMKLUJPT0wgV0lOQVBJIHdnbEJpbmRW
aWRlb0NhcHR1cmVEZXZpY2VOViAoVUlOVCB1VmlkZW9TbG90LCBIVklERU9JTlBVVERFVklDRU5W
IGhEZXZpY2UpOwotVUlOVCBXSU5BUEkgd2dsRW51bWVyYXRlVmlkZW9DYXB0dXJlRGV2aWNlc05W
IChIREMgaERjLCBIVklERU9JTlBVVERFVklDRU5WICpwaERldmljZUxpc3QpOwotQk9PTCBXSU5B
UEkgd2dsTG9ja1ZpZGVvQ2FwdHVyZURldmljZU5WIChIREMgaERjLCBIVklERU9JTlBVVERFVklD
RU5WIGhEZXZpY2UpOwotQk9PTCBXSU5BUEkgd2dsUXVlcnlWaWRlb0NhcHR1cmVEZXZpY2VOViAo
SERDIGhEYywgSFZJREVPSU5QVVRERVZJQ0VOViBoRGV2aWNlLCBpbnQgaUF0dHJpYnV0ZSwgaW50
ICpwaVZhbHVlKTsKLUJPT0wgV0lOQVBJIHdnbFJlbGVhc2VWaWRlb0NhcHR1cmVEZXZpY2VOViAo
SERDIGhEYywgSFZJREVPSU5QVVRERVZJQ0VOViBoRGV2aWNlKTsKLSNlbmRpZgotI2VuZGlmIC8q
IFdHTF9OVl92aWRlb19jYXB0dXJlICovCi0KLSNpZm5kZWYgV0dMX05WX3ZpZGVvX291dHB1dAot
I2RlZmluZSBXR0xfTlZfdmlkZW9fb3V0cHV0IDEKLURFQ0xBUkVfSEFORExFKEhQVklERU9ERVYp
OwotI2RlZmluZSBXR0xfQklORF9UT19WSURFT19SR0JfTlYgICAgICAgICAgMHgyMEMwCi0jZGVm
aW5lIFdHTF9CSU5EX1RPX1ZJREVPX1JHQkFfTlYgICAgICAgICAweDIwQzEKLSNkZWZpbmUgV0dM
X0JJTkRfVE9fVklERU9fUkdCX0FORF9ERVBUSF9OViAweDIwQzIKLSNkZWZpbmUgV0dMX1ZJREVP
X09VVF9DT0xPUl9OViAgICAgICAgICAgIDB4MjBDMwotI2RlZmluZSBXR0xfVklERU9fT1VUX0FM
UEhBX05WICAgICAgICAgICAgMHgyMEM0Ci0jZGVmaW5lIFdHTF9WSURFT19PVVRfREVQVEhfTlYg
ICAgICAgICAgICAweDIwQzUKLSNkZWZpbmUgV0dMX1ZJREVPX09VVF9DT0xPUl9BTkRfQUxQSEFf
TlYgIDB4MjBDNgotI2RlZmluZSBXR0xfVklERU9fT1VUX0NPTE9SX0FORF9ERVBUSF9OViAgMHgy
MEM3Ci0jZGVmaW5lIFdHTF9WSURFT19PVVRfRlJBTUUgICAgICAgICAgICAgICAweDIwQzgKLSNk
ZWZpbmUgV0dMX1ZJREVPX09VVF9GSUVMRF8xICAgICAgICAgICAgIDB4MjBDOQotI2RlZmluZSBX
R0xfVklERU9fT1VUX0ZJRUxEXzIgICAgICAgICAgICAgMHgyMENBCi0jZGVmaW5lIFdHTF9WSURF
T19PVVRfU1RBQ0tFRF9GSUVMRFNfMV8yICAweDIwQ0IKLSNkZWZpbmUgV0dMX1ZJREVPX09VVF9T
VEFDS0VEX0ZJRUxEU18yXzEgIDB4MjBDQwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xH
RVRWSURFT0RFVklDRU5WUFJPQykgKEhEQyBoREMsIGludCBudW1EZXZpY2VzLCBIUFZJREVPREVW
ICpoVmlkZW9EZXZpY2UpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xSRUxFQVNFVklE
RU9ERVZJQ0VOVlBST0MpIChIUFZJREVPREVWIGhWaWRlb0RldmljZSk7Ci10eXBlZGVmIEJPT0wg
KFdJTkFQSSAqIFBGTldHTEJJTkRWSURFT0lNQUdFTlZQUk9DKSAoSFBWSURFT0RFViBoVmlkZW9E
ZXZpY2UsIEhQQlVGRkVSQVJCIGhQYnVmZmVyLCBpbnQgaVZpZGVvQnVmZmVyKTsKLXR5cGVkZWYg
Qk9PTCAoV0lOQVBJICogUEZOV0dMUkVMRUFTRVZJREVPSU1BR0VOVlBST0MpIChIUEJVRkZFUkFS
QiBoUGJ1ZmZlciwgaW50IGlWaWRlb0J1ZmZlcik7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBG
TldHTFNFTkRQQlVGRkVSVE9WSURFT05WUFJPQykgKEhQQlVGRkVSQVJCIGhQYnVmZmVyLCBpbnQg
aUJ1ZmZlclR5cGUsIHVuc2lnbmVkIGxvbmcgKnB1bENvdW50ZXJQYnVmZmVyLCBCT09MIGJCbG9j
ayk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTEdFVFZJREVPSU5GT05WUFJPQykgKEhQ
VklERU9ERVYgaHBWaWRlb0RldmljZSwgdW5zaWduZWQgbG9uZyAqcHVsQ291bnRlck91dHB1dFBi
dWZmZXIsIHVuc2lnbmVkIGxvbmcgKnB1bENvdW50ZXJPdXRwdXRWaWRlbyk7Ci0jaWZkZWYgV0dM
X1dHTEVYVF9QUk9UT1RZUEVTCi1CT09MIFdJTkFQSSB3Z2xHZXRWaWRlb0RldmljZU5WIChIREMg
aERDLCBpbnQgbnVtRGV2aWNlcywgSFBWSURFT0RFViAqaFZpZGVvRGV2aWNlKTsKLUJPT0wgV0lO
QVBJIHdnbFJlbGVhc2VWaWRlb0RldmljZU5WIChIUFZJREVPREVWIGhWaWRlb0RldmljZSk7Ci1C
T09MIFdJTkFQSSB3Z2xCaW5kVmlkZW9JbWFnZU5WIChIUFZJREVPREVWIGhWaWRlb0RldmljZSwg
SFBCVUZGRVJBUkIgaFBidWZmZXIsIGludCBpVmlkZW9CdWZmZXIpOwotQk9PTCBXSU5BUEkgd2ds
UmVsZWFzZVZpZGVvSW1hZ2VOViAoSFBCVUZGRVJBUkIgaFBidWZmZXIsIGludCBpVmlkZW9CdWZm
ZXIpOwotQk9PTCBXSU5BUEkgd2dsU2VuZFBidWZmZXJUb1ZpZGVvTlYgKEhQQlVGRkVSQVJCIGhQ
YnVmZmVyLCBpbnQgaUJ1ZmZlclR5cGUsIHVuc2lnbmVkIGxvbmcgKnB1bENvdW50ZXJQYnVmZmVy
LCBCT09MIGJCbG9jayk7Ci1CT09MIFdJTkFQSSB3Z2xHZXRWaWRlb0luZm9OViAoSFBWSURFT0RF
ViBocFZpZGVvRGV2aWNlLCB1bnNpZ25lZCBsb25nICpwdWxDb3VudGVyT3V0cHV0UGJ1ZmZlciwg
dW5zaWduZWQgbG9uZyAqcHVsQ291bnRlck91dHB1dFZpZGVvKTsKLSNlbmRpZgotI2VuZGlmIC8q
IFdHTF9OVl92aWRlb19vdXRwdXQgKi8KLQotI2lmbmRlZiBXR0xfT01MX3N5bmNfY29udHJvbAot
I2RlZmluZSBXR0xfT01MX3N5bmNfY29udHJvbCAxCi10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBG
TldHTEdFVFNZTkNWQUxVRVNPTUxQUk9DKSAoSERDIGhkYywgSU5UNjQgKnVzdCwgSU5UNjQgKm1z
YywgSU5UNjQgKnNiYyk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTEdFVE1TQ1JBVEVP
TUxQUk9DKSAoSERDIGhkYywgSU5UMzIgKm51bWVyYXRvciwgSU5UMzIgKmRlbm9taW5hdG9yKTsK
LXR5cGVkZWYgSU5UNjQgKFdJTkFQSSAqIFBGTldHTFNXQVBCVUZGRVJTTVNDT01MUFJPQykgKEhE
QyBoZGMsIElOVDY0IHRhcmdldF9tc2MsIElOVDY0IGRpdmlzb3IsIElOVDY0IHJlbWFpbmRlcik7
Ci10eXBlZGVmIElOVDY0IChXSU5BUEkgKiBQRk5XR0xTV0FQTEFZRVJCVUZGRVJTTVNDT01MUFJP
QykgKEhEQyBoZGMsIGludCBmdVBsYW5lcywgSU5UNjQgdGFyZ2V0X21zYywgSU5UNjQgZGl2aXNv
ciwgSU5UNjQgcmVtYWluZGVyKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMV0FJVEZP
Uk1TQ09NTFBST0MpIChIREMgaGRjLCBJTlQ2NCB0YXJnZXRfbXNjLCBJTlQ2NCBkaXZpc29yLCBJ
TlQ2NCByZW1haW5kZXIsIElOVDY0ICp1c3QsIElOVDY0ICptc2MsIElOVDY0ICpzYmMpOwotdHlw
ZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xXQUlURk9SU0JDT01MUFJPQykgKEhEQyBoZGMsIElO
VDY0IHRhcmdldF9zYmMsIElOVDY0ICp1c3QsIElOVDY0ICptc2MsIElOVDY0ICpzYmMpOwotI2lm
ZGVmIFdHTF9XR0xFWFRfUFJPVE9UWVBFUwotQk9PTCBXSU5BUEkgd2dsR2V0U3luY1ZhbHVlc09N
TCAoSERDIGhkYywgSU5UNjQgKnVzdCwgSU5UNjQgKm1zYywgSU5UNjQgKnNiYyk7Ci1CT09MIFdJ
TkFQSSB3Z2xHZXRNc2NSYXRlT01MIChIREMgaGRjLCBJTlQzMiAqbnVtZXJhdG9yLCBJTlQzMiAq
ZGVub21pbmF0b3IpOwotSU5UNjQgV0lOQVBJIHdnbFN3YXBCdWZmZXJzTXNjT01MIChIREMgaGRj
LCBJTlQ2NCB0YXJnZXRfbXNjLCBJTlQ2NCBkaXZpc29yLCBJTlQ2NCByZW1haW5kZXIpOwotSU5U
NjQgV0lOQVBJIHdnbFN3YXBMYXllckJ1ZmZlcnNNc2NPTUwgKEhEQyBoZGMsIGludCBmdVBsYW5l
cywgSU5UNjQgdGFyZ2V0X21zYywgSU5UNjQgZGl2aXNvciwgSU5UNjQgcmVtYWluZGVyKTsKLUJP
T0wgV0lOQVBJIHdnbFdhaXRGb3JNc2NPTUwgKEhEQyBoZGMsIElOVDY0IHRhcmdldF9tc2MsIElO
VDY0IGRpdmlzb3IsIElOVDY0IHJlbWFpbmRlciwgSU5UNjQgKnVzdCwgSU5UNjQgKm1zYywgSU5U
NjQgKnNiYyk7Ci1CT09MIFdJTkFQSSB3Z2xXYWl0Rm9yU2JjT01MIChIREMgaGRjLCBJTlQ2NCB0
YXJnZXRfc2JjLCBJTlQ2NCAqdXN0LCBJTlQ2NCAqbXNjLCBJTlQ2NCAqc2JjKTsKLSNlbmRpZgot
I2VuZGlmIC8qIFdHTF9PTUxfc3luY19jb250cm9sICovCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwot
fQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvQlVJTEQuZ24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGhpcmRfcGFydHkvbGliWE5WQ3RybC9CVUlMRC5nbgpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYjU4YTU0MjJiZTczYWRlYmNlNDkxOTMwMzM5YzU0Njg0ZGIwYjM5ZS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbGliWE5WQ3RybC9CVUlMRC5nbgorKysgL2Rl
di9udWxsCkBAIC0xLDI4ICswLDAgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSMg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLQotIyBUaGlzIHdhcm5pbmcgZGlzYWJsZSBtdXN0
IGJlIGFwcGVuZGVkIHRvIHRoZSBjb21tYW5kIGxpbmUgYWZ0ZXIgdGhlIGdlbmVyYWwKLSMgd2Fy
bmluZ3Mgc2V0dXAsIHNvIG11c3QgYmUgaW4gYSBjb25maWcuCi1jb25maWcoImxpYlhOVkN0cmxf
Y29uZmlnIikgewotICAjIFRoaXMgd2lsbCBidWlsZCB1bmRlciBtb3N0IGNvbmZpZ3VyYXRpb25z
IHdpdGggdGhpcyB3YXJuaW5nIGVuYWJsZWQsIGJ1dAotICAjIHNvbWUgb2xkZXIgc3lzdGVtIGhl
YWRlcnMgYXJlIG1pc3NpbmcgYSAiY29uc3QiIG9uIHRoZSB0aGlyZCBwYXJhbWV0ZXIgb2YKLSAg
IyBYZXh0QWRkRGlzcGxheSB3aGljaCB3aWxsIGNhdXNlIGEgZmFpbHVyZS4KLSAgY2ZsYWdzID0g
WwotICAgICItV25vLWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzLWRpc2NhcmRzLXF1YWxpZmll
cnMiLAotICBdCi19Ci0KLXNvdXJjZV9zZXQoImxpYlhOVkN0cmwiKSB7Ci0gIHNvdXJjZXMgPSBb
Ci0gICAgIk5WQ3RybC5jIiwKLSAgICAiTlZDdHJsLmgiLAotICAgICJOVkN0cmxMaWIuaCIsCi0g
ICAgIm52X2NvbnRyb2wuaCIsCi0gIF0KLQotICBjb25maWdzICs9IFsKLSAgICAiOmxpYlhOVkN0
cmxfY29uZmlnIiwKLSAgICAiLy9idWlsZC9jb25maWcvbGludXg6eDExIiwKLSAgXQotfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0
cmwvTElDRU5TRSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJY
TlZDdHJsL0xJQ0VOU0UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0MzI0YzBjNmZi
ODYyNjM1ZWYzZjIxZTFjNjFiMDYyYzQ2N2Q2Y2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3Bh
cnR5L2xpYlhOVkN0cmwvTElDRU5TRQorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMDggTlZJRElBLCBDb3Jwb3JhdGlvbgotICoKLSAqIFBlcm1p
c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i
dGFpbmluZyBhIGNvcHkKLSAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l
bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCi0gKiBpbiB0aGUgU29mdHdh
cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUg
cmlnaHRzCi0gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1
dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh
bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLSAqIGZ1cm5pc2hl
ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0gKgotICog
VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGlu
Y2x1ZGluZyB0aGUgbmV4dAotICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwg
Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQotICogU29mdHdhcmUuCi0gKgot
ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg
QU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU
RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotICogRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRQotICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO
WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD
VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLSAqIE9V
VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI
RVIgREVBTElOR1MgSU4gVEhFCi0gKiBTT0ZUV0FSRS4KLSAqLwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9w
YXJ0eS9saWJYTlZDdHJsL05WQ3RybC5jIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Ro
aXJkX3BhcnR5L2xpYlhOVkN0cmwvTlZDdHJsLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGU5ODQzNzM5NDdjNWFjNzNlNWQ2ZTQ2ZDk1OTA2YTY5MGEzNTQ0OGQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvTlZDdHJsLmMKKysrIC9kZXYvbnVsbApAQCAt
MSwxMjQwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDggTlZJRElBLCBDb3Jwb3Jh
dGlvbgotICoKLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl
LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLSAqIG9mIHRoaXMgc29mdHdhcmUgYW5k
IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFs
Ci0gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv
dXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi0gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us
IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi0gKiBjb3BpZXMg
b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdh
cmUgaXMKLSAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnM6Ci0gKgotICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy
bWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAotICogcGFyYWdyYXBoKSBzaGFsbCBi
ZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQot
ICogU29mdHdhcmUuCi0gKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ
VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJRUQsIElOQ0xV
RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
LAotICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO
VC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVS
UyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotICogTElBQklMSVRZ
LCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFS
SVNJTkcgRlJPTSwKLSAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJF
IE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCi0gKiBTT0ZUV0FSRS4KLSAqLwot
Ci0vKgotICogTWFrZSBzdXJlIHRoYXQgWFRIUkVBRFMgaXMgZGVmaW5lZCwgc28gdGhhdCB0aGUK
LSAqIExvY2tEaXNwbGF5L1VubG9ja0Rpc3BsYXkgbWFjcm9zIGFyZSBleHBhbmRlZCBwcm9wZXJs
eSBhbmQgdGhlCi0gKiBsaWJYTlZDdHJsIGxpYnJhcnkgcHJvcGVybHkgcHJvdGVjdHMgdGhlIERp
c3BsYXkgY29ubmVjdGlvbi4KLSAqLwotCi0jaWYgIWRlZmluZWQoWFRIUkVBRFMpCi0jZGVmaW5l
IFhUSFJFQURTCi0jZW5kaWYgLyogWFRIUkVBRFMgKi8KLQotI2RlZmluZSBORUVEX0VWRU5UUwot
I2RlZmluZSBORUVEX1JFUExJRVMKLSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNsdWRlIDxzdGRs
aWIuaD4KLSNpbmNsdWRlIDxYMTEvWGxpYmludC5oPgotI2luY2x1ZGUgPFgxMS9YdXRpbC5oPgot
I2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL1hleHQuaD4KLSNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9u
cy9leHR1dGlsLmg+Ci0jaW5jbHVkZSAiTlZDdHJsTGliLmgiCi0jaW5jbHVkZSAibnZfY29udHJv
bC5oIgotCi0jZGVmaW5lIE5WQ1RSTF9FWFRfRVhJU1RTICAgICAgICAgICAgICAxCi0jZGVmaW5l
IE5WQ1RSTF9FWFRfTkVFRF9UQVJHRVRfU1dBUCAgICAyCi0jZGVmaW5lIE5WQ1RSTF9FWFRfNjRf
QklUX0FUVFJJQlVURVMgICA0Ci0jZGVmaW5lIE5WQ1RSTF9FWFRfTkVFRF9DSEVDSyAgICAgICAg
ICAoMSA8PCAoc2l6ZW9mKFhQb2ludGVyKSAtIDEpKQotCi1zdGF0aWMgWEV4dGVuc2lvbkluZm8g
X252Y3RybF9leHRfaW5mb19kYXRhOwotc3RhdGljIFhFeHRlbnNpb25JbmZvICpudmN0cmxfZXh0
X2luZm8gPSAmX252Y3RybF9leHRfaW5mb19kYXRhOwotc3RhdGljIGNvbnN0IGNoYXIgKm52Y3Ry
bF9leHRlbnNpb25fbmFtZSA9IE5WX0NPTlRST0xfTkFNRTsKLQotI2RlZmluZSBYTlZDVFJMQ2hl
Y2tFeHRlbnNpb24oZHB5LGksdmFsKSBcCi0gIFhleHRDaGVja0V4dGVuc2lvbiAoZHB5LCBpLCBu
dmN0cmxfZXh0ZW5zaW9uX25hbWUsIHZhbCkKLSNkZWZpbmUgWE5WQ1RSTFNpbXBsZUNoZWNrRXh0
ZW5zaW9uKGRweSxpKSBcCi0gIFhleHRTaW1wbGVDaGVja0V4dGVuc2lvbiAoZHB5LCBpLCBudmN0
cmxfZXh0ZW5zaW9uX25hbWUpCi0KLXN0YXRpYyBpbnQgY2xvc2VfZGlzcGxheSgpOwotc3RhdGlj
IHVpbnRwdHJfdCB2ZXJzaW9uX2ZsYWdzKERpc3BsYXkgKmRweSwgWEV4dERpc3BsYXlJbmZvICpp
bmZvKTsKLXN0YXRpYyBCb29sIHdpcmVfdG9fZXZlbnQoKTsKLXN0YXRpYyAvKiBjb25zdCAqLyBY
RXh0ZW5zaW9uSG9va3MgbnZjdHJsX2V4dGVuc2lvbl9ob29rcyA9IHsKLSAgICBOVUxMLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjcmVhdGVfZ2MgKi8KLSAgICBOVUxMLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb3B5X2djICovCi0gICAgTlVMTCwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogZmx1c2hfZ2MgKi8KLSAgICBOVUxMLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBmcmVlX2djICovCi0gICAgTlVMTCwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLyogY3JlYXRlX2ZvbnQgKi8KLSAgICBOVUxMLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBmcmVlX2ZvbnQgKi8KLSAgICBjbG9zZV9kaXNwbGF5
LCAgICAgICAgICAgICAgICAgICAgICAvKiBjbG9zZV9kaXNwbGF5ICovCi0gICAgd2lyZV90b19l
dmVudCwgICAgICAgICAgICAgICAgICAgICAgLyogd2lyZV90b19ldmVudCAqLwotICAgIE5VTEws
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV2ZW50X3RvX3dpcmUgKi8KLSAgICBO
VUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlcnJvciAqLwotICAgIE5VTEws
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVycm9yX3N0cmluZyAqLwotfTsKLQot
c3RhdGljIFhFWFRfR0VORVJBVEVfRklORF9ESVNQTEFZIChmaW5kX2Rpc3BsYXksIG52Y3RybF9l
eHRfaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnZjdHJsX2V4dGVu
c2lvbl9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbnZjdHJsX2V4
dGVuc2lvbl9ob29rcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlZfQ09O
VFJPTF9FVkVOVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChYUG9pbnRl
cilOVkNUUkxfRVhUX05FRURfQ0hFQ0spCi0KLXN0YXRpYyBYRVhUX0dFTkVSQVRFX0NMT1NFX0RJ
U1BMQVkgKGNsb3NlX2Rpc3BsYXksIG52Y3RybF9leHRfaW5mbykKLQotLyoKLSAqIE5WLUNPTlRS
T0wgdmVyc2lvbnMgMS44IGFuZCAxLjkgcGFjayB0aGUgdGFyZ2V0X3R5cGUgYW5kIHRhcmdldF9p
ZAotICogZmllbGRzIGluIHJldmVyc2VkIG9yZGVyLiAgSW4gb3JkZXIgdG8gdGFsayB0byBvbmUg
b2YgdGhlc2Ugc2VydmVycywKLSAqIHdlIG5lZWQgdG8gc3dhcCB0aGVzZSBmaWVsZHMuCi0gKi8K
LQotc3RhdGljIHZvaWQgWE5WQ1RSTENoZWNrVGFyZ2V0RGF0YShEaXNwbGF5ICpkcHksIFhFeHRE
aXNwbGF5SW5mbyAqaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
ICp0YXJnZXRfdHlwZSwgaW50ICp0YXJnZXRfaWQpCi17Ci0gICAgdWludHB0cl90IGZsYWdzID0g
dmVyc2lvbl9mbGFncyhkcHksIGluZm8pOwotCi0gICAgLyogV2UgbmVlZCB0byBzd2FwIHRoZSB0
YXJnZXRfdHlwZSBhbmQgdGFyZ2V0X2lkICovCi0gICAgaWYgKGZsYWdzICYgTlZDVFJMX0VYVF9O
RUVEX1RBUkdFVF9TV0FQKSB7Ci0gICAgICAgIGludCB0bXA7Ci0gICAgICAgIHRtcCA9ICp0YXJn
ZXRfdHlwZTsKLSAgICAgICAgKnRhcmdldF90eXBlID0gKnRhcmdldF9pZDsKLSAgICAgICAgKnRh
cmdldF9pZCA9IHRtcDsKLSAgICB9Ci19Ci0KLQotQm9vbCBYTlZDVFJMUXVlcnlFeHRlbnNpb24g
KAotICAgIERpc3BsYXkgKmRweSwKLSAgICBpbnQgKmV2ZW50X2Jhc2VwLAotICAgIGludCAqZXJy
b3JfYmFzZXAKLSl7Ci0gICAgWEV4dERpc3BsYXlJbmZvICppbmZvID0gZmluZF9kaXNwbGF5IChk
cHkpOwotCi0gICAgaWYgKFhleHRIYXNFeHRlbnNpb24oaW5mbykpIHsKLSAgICAgICAgaWYgKGV2
ZW50X2Jhc2VwKSAqZXZlbnRfYmFzZXAgPSBpbmZvLT5jb2Rlcy0+Zmlyc3RfZXZlbnQ7Ci0gICAg
ICAgIGlmIChlcnJvcl9iYXNlcCkgKmVycm9yX2Jhc2VwID0gaW5mby0+Y29kZXMtPmZpcnN0X2Vy
cm9yOwotICAgICAgICByZXR1cm4gVHJ1ZTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4g
RmFsc2U7Ci0gICAgfQotfQotCi0vKgotICogUmV0cmlldmUgYW55IGNhY2hlZCBmbGFncyB0aGF0
IGRlcGVuZCBvbiB0aGUgdmVyc2lvbiBvZiB0aGUgTlYtQ09OVFJPTAotICogZXh0ZW5zaW9uLgot
ICovCi0KLXN0YXRpYyB1aW50cHRyX3QgdmVyc2lvbl9mbGFncyhEaXNwbGF5ICpkcHksIFhFeHRE
aXNwbGF5SW5mbyAqaW5mbykKLXsKLSAgICB1aW50cHRyX3QgZGF0YSA9ICh1aW50cHRyX3QpaW5m
by0+ZGF0YTsKLQotICAgIC8qIElmIG5lY2Vzc2FyeSwgZGV0ZXJtaW5lIHRoZSBOVi1DT05UUk9M
IHZlcnNpb24gKi8KLSAgICBpZiAoZGF0YSAmIE5WQ1RSTF9FWFRfTkVFRF9DSEVDSykgewotICAg
ICAgICBpbnQgbWFqb3IsIG1pbm9yOwotICAgICAgICBkYXRhID0gMDsKLSAgICAgICAgaWYgKFhO
VkNUUkxRdWVyeVZlcnNpb24oZHB5LCAmbWFqb3IsICZtaW5vcikpIHsKLSAgICAgICAgICAgIGRh
dGEgfD0gTlZDVFJMX0VYVF9FWElTVFM7Ci0gICAgICAgICAgICBpZiAobWFqb3IgPT0gMSAmJiAo
bWlub3IgPT0gOCB8fCBtaW5vciA9PSA5KSkgewotICAgICAgICAgICAgICAgIGRhdGEgfD0gTlZD
VFJMX0VYVF9ORUVEX1RBUkdFVF9TV0FQOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KChtYWpvciA+IDEpIHx8ICgobWFqb3IgPT0gMSkgJiYgKG1pbm9yID4gMjApKSkgewotICAgICAg
ICAgICAgICAgIGRhdGEgfD0gTlZDVFJMX0VYVF82NF9CSVRfQVRUUklCVVRFUzsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGluZm8tPmRhdGEgPSAoWFBvaW50ZXIpZGF0YTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gZGF0YTsKLX0KLQotQm9vbCBYTlZDVFJMUXVlcnlWZXJzaW9u
ICgKLSAgICBEaXNwbGF5ICpkcHksCi0gICAgaW50ICptYWpvciwKLSAgICBpbnQgKm1pbm9yCi0p
ewotICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxheSAoZHB5KTsKLSAgICB4
bnZDdHJsUXVlcnlFeHRlbnNpb25SZXBseSByZXA7Ci0gICAgeG52Q3RybFF1ZXJ5RXh0ZW5zaW9u
UmVxICAgKnJlcTsKLQotICAgIGlmKCFYZXh0SGFzRXh0ZW5zaW9uKGluZm8pKQotICAgICAgICBy
ZXR1cm4gRmFsc2U7Ci0KLSAgICBYTlZDVFJMQ2hlY2tFeHRlbnNpb24gKGRweSwgaW5mbywgRmFs
c2UpOwotCi0gICAgTG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAgR2V0UmVxIChudkN0cmxRdWVyeUV4
dGVuc2lvbiwgcmVxKTsKLSAgICByZXEtPnJlcVR5cGUgPSBpbmZvLT5jb2Rlcy0+bWFqb3Jfb3Bj
b2RlOwotICAgIHJlcS0+bnZSZXFUeXBlID0gWF9udkN0cmxRdWVyeUV4dGVuc2lvbjsKLSAgICBp
ZiAoIV9YUmVwbHkgKGRweSwgKHhSZXBseSAqKSAmcmVwLCAwLCB4VHJ1ZSkpIHsKLSAgICAgICAg
VW5sb2NrRGlzcGxheSAoZHB5KTsKLSAgICAgICAgU3luY0hhbmRsZSAoKTsKLSAgICAgICAgcmV0
dXJuIEZhbHNlOwotICAgIH0KLSAgICBpZiAobWFqb3IpICptYWpvciA9IHJlcC5tYWpvcjsKLSAg
ICBpZiAobWlub3IpICptaW5vciA9IHJlcC5taW5vcjsKLSAgICBVbmxvY2tEaXNwbGF5IChkcHkp
OwotICAgIFN5bmNIYW5kbGUgKCk7Ci0gICAgcmV0dXJuIFRydWU7Ci19Ci0KLQotQm9vbCBYTlZD
VFJMSXNOdlNjcmVlbiAoCi0gICAgRGlzcGxheSAqZHB5LAotICAgIGludCBzY3JlZW4KLSl7Ci0g
ICAgWEV4dERpc3BsYXlJbmZvICppbmZvID0gZmluZF9kaXNwbGF5IChkcHkpOwotICAgIHhudkN0
cmxJc052UmVwbHkgcmVwOwotICAgIHhudkN0cmxJc052UmVxICAgKnJlcTsKLSAgICBCb29sIGlz
bnY7Ci0KLSAgICBpZighWGV4dEhhc0V4dGVuc2lvbihpbmZvKSkKLSAgICAgICAgcmV0dXJuIEZh
bHNlOwotCi0gICAgWE5WQ1RSTENoZWNrRXh0ZW5zaW9uIChkcHksIGluZm8sIEZhbHNlKTsKLQot
ICAgIExvY2tEaXNwbGF5IChkcHkpOwotICAgIEdldFJlcSAobnZDdHJsSXNOdiwgcmVxKTsKLSAg
ICByZXEtPnJlcVR5cGUgPSBpbmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2RlOwotICAgIHJlcS0+bnZS
ZXFUeXBlID0gWF9udkN0cmxJc052OwotICAgIHJlcS0+c2NyZWVuID0gc2NyZWVuOwotICAgIGlm
ICghX1hSZXBseSAoZHB5LCAoeFJlcGx5ICopICZyZXAsIDAsIHhUcnVlKSkgewotICAgICAgICBV
bmxvY2tEaXNwbGF5IChkcHkpOwotICAgICAgICBTeW5jSGFuZGxlICgpOwotICAgICAgICByZXR1
cm4gRmFsc2U7Ci0gICAgfQotICAgIGlzbnYgPSByZXAuaXNudjsKLSAgICBVbmxvY2tEaXNwbGF5
IChkcHkpOwotICAgIFN5bmNIYW5kbGUgKCk7Ci0gICAgcmV0dXJuIGlzbnY7Ci19Ci0KLQotQm9v
bCBYTlZDVFJMUXVlcnlUYXJnZXRDb3VudCAoCi0gICAgRGlzcGxheSAqZHB5LAotICAgIGludCB0
YXJnZXRfdHlwZSwKLSAgICBpbnQgKnZhbHVlCi0pewotICAgIFhFeHREaXNwbGF5SW5mbyAqaW5m
byA9IGZpbmRfZGlzcGxheSAoZHB5KTsKLSAgICB4bnZDdHJsUXVlcnlUYXJnZXRDb3VudFJlcGx5
ICByZXA7Ci0gICAgeG52Q3RybFF1ZXJ5VGFyZ2V0Q291bnRSZXEgICAqcmVxOwotCi0gICAgaWYo
IVhleHRIYXNFeHRlbnNpb24oaW5mbykpCi0gICAgICAgIHJldHVybiBGYWxzZTsKLQotICAgIFhO
VkNUUkxDaGVja0V4dGVuc2lvbiAoZHB5LCBpbmZvLCBGYWxzZSk7Ci0KLSAgICBMb2NrRGlzcGxh
eSAoZHB5KTsKLSAgICBHZXRSZXEgKG52Q3RybFF1ZXJ5VGFyZ2V0Q291bnQsIHJlcSk7Ci0gICAg
cmVxLT5yZXFUeXBlID0gaW5mby0+Y29kZXMtPm1ham9yX29wY29kZTsKLSAgICByZXEtPm52UmVx
VHlwZSA9IFhfbnZDdHJsUXVlcnlUYXJnZXRDb3VudDsKLSAgICByZXEtPnRhcmdldF90eXBlID0g
dGFyZ2V0X3R5cGU7Ci0gICAgaWYgKCFfWFJlcGx5IChkcHksICh4UmVwbHkgKikgJnJlcCwgMCwg
eFRydWUpKSB7Ci0gICAgICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAgICAgIFN5bmNIYW5k
bGUgKCk7Ci0gICAgICAgIHJldHVybiBGYWxzZTsKLSAgICB9Ci0gICAgaWYgKHZhbHVlKSAqdmFs
dWUgPSByZXAuY291bnQ7Ci0gICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKLSAgICBTeW5jSGFuZGxl
ICgpOwotICAgIHJldHVybiBUcnVlOwotfQotCi0KLXZvaWQgWE5WQ1RSTFNldFRhcmdldEF0dHJp
YnV0ZSAoCi0gICAgRGlzcGxheSAqZHB5LAotICAgIGludCB0YXJnZXRfdHlwZSwKLSAgICBpbnQg
dGFyZ2V0X2lkLAotICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCi0gICAgdW5zaWduZWQg
aW50IGF0dHJpYnV0ZSwKLSAgICBpbnQgdmFsdWUKLSl7Ci0gICAgWEV4dERpc3BsYXlJbmZvICpp
bmZvID0gZmluZF9kaXNwbGF5IChkcHkpOwotICAgIHhudkN0cmxTZXRBdHRyaWJ1dGVSZXEgKnJl
cTsKLQotICAgIFhOVkNUUkxTaW1wbGVDaGVja0V4dGVuc2lvbiAoZHB5LCBpbmZvKTsKLSAgICBY
TlZDVFJMQ2hlY2tUYXJnZXREYXRhKGRweSwgaW5mbywgJnRhcmdldF90eXBlLCAmdGFyZ2V0X2lk
KTsKLQotICAgIExvY2tEaXNwbGF5IChkcHkpOwotICAgIEdldFJlcSAobnZDdHJsU2V0QXR0cmli
dXRlLCByZXEpOwotICAgIHJlcS0+cmVxVHlwZSA9IGluZm8tPmNvZGVzLT5tYWpvcl9vcGNvZGU7
Ci0gICAgcmVxLT5udlJlcVR5cGUgPSBYX252Q3RybFNldEF0dHJpYnV0ZTsKLSAgICByZXEtPnRh
cmdldF90eXBlID0gdGFyZ2V0X3R5cGU7Ci0gICAgcmVxLT50YXJnZXRfaWQgPSB0YXJnZXRfaWQ7
Ci0gICAgcmVxLT5kaXNwbGF5X21hc2sgPSBkaXNwbGF5X21hc2s7Ci0gICAgcmVxLT5hdHRyaWJ1
dGUgPSBhdHRyaWJ1dGU7Ci0gICAgcmVxLT52YWx1ZSA9IHZhbHVlOwotICAgIFVubG9ja0Rpc3Bs
YXkgKGRweSk7Ci0gICAgU3luY0hhbmRsZSAoKTsKLX0KLQotdm9pZCBYTlZDVFJMU2V0QXR0cmli
dXRlICgKLSAgICBEaXNwbGF5ICpkcHksCi0gICAgaW50IHNjcmVlbiwKLSAgICB1bnNpZ25lZCBp
bnQgZGlzcGxheV9tYXNrLAotICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0gICAgaW50IHZh
bHVlCi0pewotICAgIFhOVkNUUkxTZXRUYXJnZXRBdHRyaWJ1dGUgKGRweSwgTlZfQ1RSTF9UQVJH
RVRfVFlQRV9YX1NDUkVFTiwgc2NyZWVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpc3BsYXlfbWFzaywgYXR0cmlidXRlLCB2YWx1ZSk7Ci19Ci0KLQotQm9vbCBYTlZDVFJMU2V0
VGFyZ2V0QXR0cmlidXRlQW5kR2V0U3RhdHVzICgKLSAgICBEaXNwbGF5ICpkcHksCi0gICAgaW50
IHRhcmdldF90eXBlLAotICAgIGludCB0YXJnZXRfaWQsCi0gICAgdW5zaWduZWQgaW50IGRpc3Bs
YXlfbWFzaywKLSAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgIGludCB2YWx1ZQotKXsK
LSAgICBYRXh0RGlzcGxheUluZm8gKmluZm8gPSBmaW5kX2Rpc3BsYXkgKGRweSk7Ci0gICAgeG52
Q3RybFNldEF0dHJpYnV0ZUFuZEdldFN0YXR1c1JlcSAqcmVxOwotICAgIHhudkN0cmxTZXRBdHRy
aWJ1dGVBbmRHZXRTdGF0dXNSZXBseSByZXA7Ci0gICAgQm9vbCBzdWNjZXNzOwotCi0gICAgaWYo
IVhleHRIYXNFeHRlbnNpb24oaW5mbykpCi0gICAgICAgIHJldHVybiBGYWxzZTsKLQotICAgIFhO
VkNUUkxDaGVja0V4dGVuc2lvbiAoZHB5LCBpbmZvLCBGYWxzZSk7Ci0KLSAgICBMb2NrRGlzcGxh
eSAoZHB5KTsKLSAgICBHZXRSZXEgKG52Q3RybFNldEF0dHJpYnV0ZUFuZEdldFN0YXR1cywgcmVx
KTsKLSAgICByZXEtPnJlcVR5cGUgPSBpbmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2RlOwotICAgIHJl
cS0+bnZSZXFUeXBlID0gWF9udkN0cmxTZXRBdHRyaWJ1dGVBbmRHZXRTdGF0dXM7Ci0gICAgcmVx
LT50YXJnZXRfdHlwZSA9IHRhcmdldF90eXBlOwotICAgIHJlcS0+dGFyZ2V0X2lkID0gdGFyZ2V0
X2lkOwotICAgIHJlcS0+ZGlzcGxheV9tYXNrID0gZGlzcGxheV9tYXNrOwotICAgIHJlcS0+YXR0
cmlidXRlID0gYXR0cmlidXRlOwotICAgIHJlcS0+dmFsdWUgPSB2YWx1ZTsKLSAgICBpZiAoIV9Y
UmVwbHkgKGRweSwgKHhSZXBseSAqKSAmcmVwLCAwLCBGYWxzZSkpIHsKLSAgICAgICAgVW5sb2Nr
RGlzcGxheSAoZHB5KTsKLSAgICAgICAgU3luY0hhbmRsZSAoKTsKLSAgICAgICAgcmV0dXJuIEZh
bHNlOwotICAgIH0KLSAgICBVbmxvY2tEaXNwbGF5IChkcHkpOwotICAgIFN5bmNIYW5kbGUgKCk7
Ci0gICAgCi0gICAgc3VjY2VzcyA9IHJlcC5mbGFnczsKLSAgICByZXR1cm4gc3VjY2VzczsKLX0K
LQotQm9vbCBYTlZDVFJMU2V0QXR0cmlidXRlQW5kR2V0U3RhdHVzICgKLSAgICBEaXNwbGF5ICpk
cHksCi0gICAgaW50IHNjcmVlbiwKLSAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAotICAg
IHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0gICAgaW50IHZhbHVlCi0pewotICAgIHJldHVybiBY
TlZDVFJMU2V0VGFyZ2V0QXR0cmlidXRlQW5kR2V0U3RhdHVzKGRweSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVl9DVFJMX1RBUkdFVF9UWVBFX1hf
U0NSRUVOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNjcmVlbiwgZGlzcGxheV9tYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSwgdmFsdWUpOwotfQotCi0KLUJvb2wgWE5WQ1RSTFF1
ZXJ5VGFyZ2V0QXR0cmlidXRlICgKLSAgICBEaXNwbGF5ICpkcHksCi0gICAgaW50IHRhcmdldF90
eXBlLAotICAgIGludCB0YXJnZXRfaWQsCi0gICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywK
LSAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgIGludCAqdmFsdWUKLSl7Ci0gICAgWEV4
dERpc3BsYXlJbmZvICppbmZvID0gZmluZF9kaXNwbGF5IChkcHkpOwotICAgIHhudkN0cmxRdWVy
eUF0dHJpYnV0ZVJlcGx5IHJlcDsKLSAgICB4bnZDdHJsUXVlcnlBdHRyaWJ1dGVSZXEgICAqcmVx
OwotICAgIEJvb2wgZXhpc3RzOwotCi0gICAgaWYoIVhleHRIYXNFeHRlbnNpb24oaW5mbykpCi0g
ICAgICAgIHJldHVybiBGYWxzZTsKLQotICAgIFhOVkNUUkxDaGVja0V4dGVuc2lvbiAoZHB5LCBp
bmZvLCBGYWxzZSk7Ci0gICAgWE5WQ1RSTENoZWNrVGFyZ2V0RGF0YShkcHksIGluZm8sICZ0YXJn
ZXRfdHlwZSwgJnRhcmdldF9pZCk7Ci0KLSAgICBMb2NrRGlzcGxheSAoZHB5KTsKLSAgICBHZXRS
ZXEgKG52Q3RybFF1ZXJ5QXR0cmlidXRlLCByZXEpOwotICAgIHJlcS0+cmVxVHlwZSA9IGluZm8t
PmNvZGVzLT5tYWpvcl9vcGNvZGU7Ci0gICAgcmVxLT5udlJlcVR5cGUgPSBYX252Q3RybFF1ZXJ5
QXR0cmlidXRlOwotICAgIHJlcS0+dGFyZ2V0X3R5cGUgPSB0YXJnZXRfdHlwZTsKLSAgICByZXEt
PnRhcmdldF9pZCA9IHRhcmdldF9pZDsKLSAgICByZXEtPmRpc3BsYXlfbWFzayA9IGRpc3BsYXlf
bWFzazsKLSAgICByZXEtPmF0dHJpYnV0ZSA9IGF0dHJpYnV0ZTsKLSAgICBpZiAoIV9YUmVwbHkg
KGRweSwgKHhSZXBseSAqKSAmcmVwLCAwLCB4VHJ1ZSkpIHsKLSAgICAgICAgVW5sb2NrRGlzcGxh
eSAoZHB5KTsKLSAgICAgICAgU3luY0hhbmRsZSAoKTsKLSAgICAgICAgcmV0dXJuIEZhbHNlOwot
ICAgIH0KLSAgICBleGlzdHMgPSByZXAuZmxhZ3M7Ci0gICAgaWYgKGV4aXN0cyAmJiB2YWx1ZSkg
KnZhbHVlID0gcmVwLnZhbHVlOwotICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAgU3luY0hh
bmRsZSAoKTsKLSAgICByZXR1cm4gZXhpc3RzOwotfQotCi1Cb29sIFhOVkNUUkxRdWVyeUF0dHJp
YnV0ZSAoCi0gICAgRGlzcGxheSAqZHB5LAotICAgIGludCBzY3JlZW4sCi0gICAgdW5zaWduZWQg
aW50IGRpc3BsYXlfbWFzaywKLSAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgIGludCAq
dmFsdWUKLSl7Ci0gICAgcmV0dXJuIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZShkcHksIE5W
X0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzY3JlZW4sIGRpc3BsYXlfbWFzaywgYXR0cmlidXRlLCB2YWx1ZSk7Ci19Ci0K
LQotQm9vbCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGU2NCAoCi0gICAgRGlzcGxheSAqZHB5
LAotICAgIGludCB0YXJnZXRfdHlwZSwKLSAgICBpbnQgdGFyZ2V0X2lkLAotICAgIHVuc2lnbmVk
IGludCBkaXNwbGF5X21hc2ssCi0gICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKLSAgICBpbnQ2
NF90ICp2YWx1ZQotKXsKLSAgICBYRXh0RGlzcGxheUluZm8gKmluZm8gPSBmaW5kX2Rpc3BsYXko
ZHB5KTsKLSAgICB4bnZDdHJsUXVlcnlBdHRyaWJ1dGU2NFJlcGx5IHJlcDsKLSAgICB4bnZDdHJs
UXVlcnlBdHRyaWJ1dGVSZXEgKnJlcTsKLSAgICBCb29sIGV4aXN0czsKLQotICAgIGlmICghWGV4
dEhhc0V4dGVuc2lvbihpbmZvKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlOwotCi0gICAgWE5WQ1RS
TENoZWNrRXh0ZW5zaW9uKGRweSwgaW5mbywgRmFsc2UpOwotICAgIFhOVkNUUkxDaGVja1Rhcmdl
dERhdGEoZHB5LCBpbmZvLCAmdGFyZ2V0X3R5cGUsICZ0YXJnZXRfaWQpOwotCi0gICAgTG9ja0Rp
c3BsYXkoZHB5KTsKLSAgICBHZXRSZXEobnZDdHJsUXVlcnlBdHRyaWJ1dGUsIHJlcSk7Ci0gICAg
cmVxLT5yZXFUeXBlID0gaW5mby0+Y29kZXMtPm1ham9yX29wY29kZTsKLSAgICByZXEtPm52UmVx
VHlwZSA9IFhfbnZDdHJsUXVlcnlBdHRyaWJ1dGU2NDsKLSAgICByZXEtPnRhcmdldF90eXBlID0g
dGFyZ2V0X3R5cGU7Ci0gICAgcmVxLT50YXJnZXRfaWQgPSB0YXJnZXRfaWQ7Ci0gICAgcmVxLT5k
aXNwbGF5X21hc2sgPSBkaXNwbGF5X21hc2s7Ci0gICAgcmVxLT5hdHRyaWJ1dGUgPSBhdHRyaWJ1
dGU7Ci0gICAgaWYgKCFfWFJlcGx5KGRweSwgKHhSZXBseSAqKSZyZXAsIDAsIHhUcnVlKSkgewot
ICAgICAgICBVbmxvY2tEaXNwbGF5KGRweSk7Ci0gICAgICAgIFN5bmNIYW5kbGUoKTsKLSAgICAg
ICAgcmV0dXJuIEZhbHNlOwotICAgIH0KLSAgICBleGlzdHMgPSByZXAuZmxhZ3M7Ci0gICAgaWYg
KGV4aXN0cyAmJiB2YWx1ZSkgKnZhbHVlID0gcmVwLnZhbHVlXzY0OwotICAgIFVubG9ja0Rpc3Bs
YXkoZHB5KTsKLSAgICBTeW5jSGFuZGxlKCk7Ci0gICAgcmV0dXJuIGV4aXN0czsKLX0KLQotCi1C
b29sIFhOVkNUUkxRdWVyeVRhcmdldFN0cmluZ0F0dHJpYnV0ZSAoCi0gICAgRGlzcGxheSAqZHB5
LAotICAgIGludCB0YXJnZXRfdHlwZSwKLSAgICBpbnQgdGFyZ2V0X2lkLAotICAgIHVuc2lnbmVk
IGludCBkaXNwbGF5X21hc2ssCi0gICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKLSAgICBjaGFy
ICoqcHRyCi0pewotICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxheSAoZHB5
KTsKLSAgICB4bnZDdHJsUXVlcnlTdHJpbmdBdHRyaWJ1dGVSZXBseSByZXA7Ci0gICAgeG52Q3Ry
bFF1ZXJ5U3RyaW5nQXR0cmlidXRlUmVxICAgKnJlcTsKLSAgICBCb29sIGV4aXN0czsKLSAgICBp
bnQgbGVuZ3RoLCBudW1ieXRlcywgc2xvcDsKLQotICAgIGlmICghcHRyKSByZXR1cm4gRmFsc2U7
Ci0KLSAgICBpZighWGV4dEhhc0V4dGVuc2lvbihpbmZvKSkKLSAgICAgICAgcmV0dXJuIEZhbHNl
OwotCi0gICAgWE5WQ1RSTENoZWNrRXh0ZW5zaW9uIChkcHksIGluZm8sIEZhbHNlKTsKLSAgICBY
TlZDVFJMQ2hlY2tUYXJnZXREYXRhKGRweSwgaW5mbywgJnRhcmdldF90eXBlLCAmdGFyZ2V0X2lk
KTsKLQotICAgIExvY2tEaXNwbGF5IChkcHkpOwotICAgIEdldFJlcSAobnZDdHJsUXVlcnlTdHJp
bmdBdHRyaWJ1dGUsIHJlcSk7Ci0gICAgcmVxLT5yZXFUeXBlID0gaW5mby0+Y29kZXMtPm1ham9y
X29wY29kZTsKLSAgICByZXEtPm52UmVxVHlwZSA9IFhfbnZDdHJsUXVlcnlTdHJpbmdBdHRyaWJ1
dGU7Ci0gICAgcmVxLT50YXJnZXRfdHlwZSA9IHRhcmdldF90eXBlOwotICAgIHJlcS0+dGFyZ2V0
X2lkID0gdGFyZ2V0X2lkOwotICAgIHJlcS0+ZGlzcGxheV9tYXNrID0gZGlzcGxheV9tYXNrOwot
ICAgIHJlcS0+YXR0cmlidXRlID0gYXR0cmlidXRlOwotICAgIGlmICghX1hSZXBseSAoZHB5LCAo
eFJlcGx5ICopICZyZXAsIDAsIEZhbHNlKSkgewotICAgICAgICBVbmxvY2tEaXNwbGF5IChkcHkp
OwotICAgICAgICBTeW5jSGFuZGxlICgpOwotICAgICAgICByZXR1cm4gRmFsc2U7Ci0gICAgfQot
ICAgIGxlbmd0aCA9IHJlcC5sZW5ndGg7Ci0gICAgbnVtYnl0ZXMgPSByZXAubjsKLSAgICBzbG9w
ID0gbnVtYnl0ZXMgJiAzOwotICAgIGV4aXN0cyA9IHJlcC5mbGFnczsKLSAgICBpZiAoZXhpc3Rz
KSB7Ci0gICAgICAgICpwdHIgPSAoY2hhciAqKSBYbWFsbG9jKG51bWJ5dGVzKTsKLSAgICB9Ci0g
ICAgaWYgKCFleGlzdHMgfHwgISpwdHIpIHsKLSAgICAgICAgX1hFYXREYXRhKGRweSwgbGVuZ3Ro
KTsKLSAgICAgICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKLSAgICAgICAgU3luY0hhbmRsZSAoKTsK
LSAgICAgICAgcmV0dXJuIEZhbHNlOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIF9YUmVhZChkcHks
IChjaGFyICopICpwdHIsIG51bWJ5dGVzKTsKLSAgICAgICAgaWYgKHNsb3ApIF9YRWF0RGF0YShk
cHksIDQtc2xvcCk7Ci0gICAgfQotICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAgU3luY0hh
bmRsZSAoKTsKLSAgICByZXR1cm4gZXhpc3RzOwotfQotCi1Cb29sIFhOVkNUUkxRdWVyeVN0cmlu
Z0F0dHJpYnV0ZSAoCi0gICAgRGlzcGxheSAqZHB5LAotICAgIGludCBzY3JlZW4sCi0gICAgdW5z
aWduZWQgaW50IGRpc3BsYXlfbWFzaywKLSAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAg
IGNoYXIgKipwdHIKLSl7Ci0gICAgcmV0dXJuIFhOVkNUUkxRdWVyeVRhcmdldFN0cmluZ0F0dHJp
YnV0ZShkcHksIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW4sIGRpc3BsYXlfbWFzaywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSwgcHRyKTsK
LX0KLQotCi1Cb29sIFhOVkNUUkxTZXRUYXJnZXRTdHJpbmdBdHRyaWJ1dGUgKAotICAgIERpc3Bs
YXkgKmRweSwKLSAgICBpbnQgdGFyZ2V0X3R5cGUsCi0gICAgaW50IHRhcmdldF9pZCwKLSAgICB1
bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAotICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0g
ICAgY2hhciAqcHRyCi0pewotICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxh
eSAoZHB5KTsKLSAgICB4bnZDdHJsU2V0U3RyaW5nQXR0cmlidXRlUmVxICpyZXE7Ci0gICAgeG52
Q3RybFNldFN0cmluZ0F0dHJpYnV0ZVJlcGx5IHJlcDsKLSAgICBpbnQgc2l6ZTsKLSAgICBCb29s
IHN1Y2Nlc3M7Ci0gICAgCi0gICAgaWYoIVhleHRIYXNFeHRlbnNpb24oaW5mbykpCi0gICAgICAg
IHJldHVybiBGYWxzZTsKLQotICAgIFhOVkNUUkxDaGVja0V4dGVuc2lvbiAoZHB5LCBpbmZvLCBG
YWxzZSk7Ci0KLSAgICBzaXplID0gc3RybGVuKHB0cikrMTsKLQotICAgIExvY2tEaXNwbGF5IChk
cHkpOwotICAgIEdldFJlcSAobnZDdHJsU2V0U3RyaW5nQXR0cmlidXRlLCByZXEpOwotICAgIHJl
cS0+cmVxVHlwZSA9IGluZm8tPmNvZGVzLT5tYWpvcl9vcGNvZGU7Ci0gICAgcmVxLT5udlJlcVR5
cGUgPSBYX252Q3RybFNldFN0cmluZ0F0dHJpYnV0ZTsKLSAgICByZXEtPnRhcmdldF90eXBlID0g
dGFyZ2V0X3R5cGU7Ci0gICAgcmVxLT50YXJnZXRfaWQgPSB0YXJnZXRfaWQ7Ci0gICAgcmVxLT5k
aXNwbGF5X21hc2sgPSBkaXNwbGF5X21hc2s7Ci0gICAgcmVxLT5hdHRyaWJ1dGUgPSBhdHRyaWJ1
dGU7Ci0gICAgcmVxLT5sZW5ndGggKz0gKChzaXplICsgMykgJiB+MykgPj4gMjsKLSAgICByZXEt
Pm51bV9ieXRlcyA9IHNpemU7Ci0gICAgRGF0YShkcHksIHB0ciwgc2l6ZSk7Ci0gICAgCi0gICAg
aWYgKCFfWFJlcGx5IChkcHksICh4UmVwbHkgKikgJnJlcCwgMCwgRmFsc2UpKSB7Ci0gICAgICAg
IFVubG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAgICAgIFN5bmNIYW5kbGUgKCk7Ci0gICAgICAgIHJl
dHVybiBGYWxzZTsKLSAgICB9Ci0gICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKLSAgICBTeW5jSGFu
ZGxlICgpOwotICAgIAotICAgIHN1Y2Nlc3MgPSByZXAuZmxhZ3M7Ci0gICAgcmV0dXJuIHN1Y2Nl
c3M7Ci19Ci0KLUJvb2wgWE5WQ1RSTFNldFN0cmluZ0F0dHJpYnV0ZSAoCi0gICAgRGlzcGxheSAq
ZHB5LAotICAgIGludCBzY3JlZW4sCi0gICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKLSAg
ICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgIGNoYXIgKnB0cgotKXsKLSAgICByZXR1cm4g
WE5WQ1RSTFNldFRhcmdldFN0cmluZ0F0dHJpYnV0ZShkcHksIE5WX0NUUkxfVEFSR0VUX1RZUEVf
WF9TQ1JFRU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Ny
ZWVuLCBkaXNwbGF5X21hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXR0cmlidXRlLCBwdHIpOwotfQotCi0KLXN0YXRpYyBCb29sIFhOVkNUUkxRdWVyeVZh
bGlkVGFyZ2V0QXR0cmlidXRlVmFsdWVzMzIgKAotICAgIERpc3BsYXkgKmRweSwKLSAgICBYRXh0
RGlzcGxheUluZm8gKmluZm8sCi0gICAgaW50IHRhcmdldF90eXBlLAotICAgIGludCB0YXJnZXRf
aWQsCi0gICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKLSAgICB1bnNpZ25lZCBpbnQgYXR0
cmlidXRlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIE5WQ1RSTEF0dHJp
YnV0ZVZhbGlkVmFsdWVzUmVjICp2YWx1ZXMKLSl7Ci0gICAgeG52Q3RybFF1ZXJ5VmFsaWRBdHRy
aWJ1dGVWYWx1ZXNSZXBseSByZXA7Ci0gICAgeG52Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1
ZXNSZXEgICAqcmVxOwotICAgIEJvb2wgZXhpc3RzOwotCi0gICAgTG9ja0Rpc3BsYXkgKGRweSk7
Ci0gICAgR2V0UmVxIChudkN0cmxRdWVyeVZhbGlkQXR0cmlidXRlVmFsdWVzLCByZXEpOwotICAg
IHJlcS0+cmVxVHlwZSA9IGluZm8tPmNvZGVzLT5tYWpvcl9vcGNvZGU7Ci0gICAgcmVxLT5udlJl
cVR5cGUgPSBYX252Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXM7Ci0gICAgcmVxLT50YXJn
ZXRfdHlwZSA9IHRhcmdldF90eXBlOwotICAgIHJlcS0+dGFyZ2V0X2lkID0gdGFyZ2V0X2lkOwot
ICAgIHJlcS0+ZGlzcGxheV9tYXNrID0gZGlzcGxheV9tYXNrOwotICAgIHJlcS0+YXR0cmlidXRl
ID0gYXR0cmlidXRlOwotICAgIGlmICghX1hSZXBseSAoZHB5LCAoeFJlcGx5ICopICZyZXAsIDAs
IHhUcnVlKSkgewotICAgICAgICBVbmxvY2tEaXNwbGF5IChkcHkpOwotICAgICAgICBTeW5jSGFu
ZGxlICgpOwotICAgICAgICByZXR1cm4gRmFsc2U7Ci0gICAgfQotICAgIGV4aXN0cyA9IHJlcC5m
bGFnczsKLSAgICBpZiAoZXhpc3RzKSB7Ci0gICAgICAgIHZhbHVlcy0+dHlwZSA9IHJlcC5hdHRy
X3R5cGU7Ci0gICAgICAgIGlmIChyZXAuYXR0cl90eXBlID09IEFUVFJJQlVURV9UWVBFX1JBTkdF
KSB7Ci0gICAgICAgICAgICB2YWx1ZXMtPnUucmFuZ2UubWluID0gcmVwLm1pbjsKLSAgICAgICAg
ICAgIHZhbHVlcy0+dS5yYW5nZS5tYXggPSByZXAubWF4OwotICAgICAgICB9Ci0gICAgICAgIGlm
IChyZXAuYXR0cl90eXBlID09IEFUVFJJQlVURV9UWVBFX0lOVF9CSVRTKSB7Ci0gICAgICAgICAg
ICB2YWx1ZXMtPnUuYml0cy5pbnRzID0gcmVwLmJpdHM7Ci0gICAgICAgIH0KLSAgICAgICAgdmFs
dWVzLT5wZXJtaXNzaW9ucyA9IHJlcC5wZXJtczsKLSAgICB9Ci0gICAgVW5sb2NrRGlzcGxheSAo
ZHB5KTsKLSAgICBTeW5jSGFuZGxlICgpOwotICAgIHJldHVybiBleGlzdHM7Ci19Ci0KLQotQm9v
bCBYTlZDVFJMUXVlcnlWYWxpZFRhcmdldFN0cmluZ0F0dHJpYnV0ZVZhbHVlcyAoCi0gICAgRGlz
cGxheSAqZHB5LAotICAgIGludCB0YXJnZXRfdHlwZSwKLSAgICBpbnQgdGFyZ2V0X2lkLAotICAg
IHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCi0gICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwK
LSAgICBOVkNUUkxBdHRyaWJ1dGVWYWxpZFZhbHVlc1JlYyAqdmFsdWVzCi0pewotICAgIFhFeHRE
aXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxheShkcHkpOwotICAgIEJvb2wgZXhpc3RzOwot
ICAgIHhudkN0cmxRdWVyeVZhbGlkQXR0cmlidXRlVmFsdWVzUmVwbHkgcmVwOwotICAgIHhudkN0
cmxRdWVyeVZhbGlkQXR0cmlidXRlVmFsdWVzUmVxICAgKnJlcTsKLQotICAgIGlmICghdmFsdWVz
KSByZXR1cm4gRmFsc2U7Ci0KLSAgICBpZiAoIVhleHRIYXNFeHRlbnNpb24oaW5mbykpCi0gICAg
ICAgIHJldHVybiBGYWxzZTsKLQotICAgIFhOVkNUUkxDaGVja0V4dGVuc2lvbihkcHksIGluZm8s
IEZhbHNlKTsKLQotICAgIExvY2tEaXNwbGF5KGRweSk7Ci0gICAgR2V0UmVxIChudkN0cmxRdWVy
eVZhbGlkQXR0cmlidXRlVmFsdWVzLCByZXEpOwotICAgIHJlcS0+cmVxVHlwZSA9IGluZm8tPmNv
ZGVzLT5tYWpvcl9vcGNvZGU7Ci0gICAgcmVxLT5udlJlcVR5cGUgPSBYX252Q3RybFF1ZXJ5VmFs
aWRTdHJpbmdBdHRyaWJ1dGVWYWx1ZXM7Ci0gICAgcmVxLT50YXJnZXRfdHlwZSA9IHRhcmdldF90
eXBlOwotICAgIHJlcS0+dGFyZ2V0X2lkID0gdGFyZ2V0X2lkOwotICAgIHJlcS0+ZGlzcGxheV9t
YXNrID0gZGlzcGxheV9tYXNrOwotICAgIHJlcS0+YXR0cmlidXRlID0gYXR0cmlidXRlOwotICAg
IGlmICghX1hSZXBseShkcHksICh4UmVwbHkgKikmcmVwLCAwLCB4VHJ1ZSkpIHsKLSAgICAgICAg
VW5sb2NrRGlzcGxheShkcHkpOwotICAgICAgICBTeW5jSGFuZGxlKCk7Ci0gICAgICAgIHJldHVy
biBGYWxzZTsKLSAgICB9Ci0gICAgZXhpc3RzID0gcmVwLmZsYWdzOwotICAgIGlmIChleGlzdHMp
IHsKLSAgICAgICAgdmFsdWVzLT50eXBlID0gcmVwLmF0dHJfdHlwZTsKLSAgICAgICAgdmFsdWVz
LT5wZXJtaXNzaW9ucyA9IHJlcC5wZXJtczsKLSAgICB9Ci0gICAgVW5sb2NrRGlzcGxheShkcHkp
OwotICAgIFN5bmNIYW5kbGUoKTsKLSAgICByZXR1cm4gZXhpc3RzOwotfQotCi0KLXN0YXRpYyBC
b29sIFhOVkNUUkxRdWVyeVZhbGlkVGFyZ2V0QXR0cmlidXRlVmFsdWVzNjQgKAotICAgIERpc3Bs
YXkgKmRweSwKLSAgICBYRXh0RGlzcGxheUluZm8gKmluZm8sCi0gICAgaW50IHRhcmdldF90eXBl
LAotICAgIGludCB0YXJnZXRfaWQsCi0gICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKLSAg
ICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgIE5WQ1RSTEF0dHJpYnV0ZVZhbGlkVmFsdWVz
UmVjICp2YWx1ZXMKLSl7Ci0gICAgeG52Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXM2NFJl
cGx5IHJlcDsKLSAgICB4bnZDdHJsUXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlc1JlcSAqcmVxOwot
ICAgIEJvb2wgZXhpc3RzOwotCi0gICAgTG9ja0Rpc3BsYXkoZHB5KTsKLSAgICBHZXRSZXEobnZD
dHJsUXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlcywgcmVxKTsKLSAgICByZXEtPnJlcVR5cGUgPSBp
bmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2RlOwotICAgIHJlcS0+bnZSZXFUeXBlID0gWF9udkN0cmxR
dWVyeVZhbGlkQXR0cmlidXRlVmFsdWVzNjQ7Ci0gICAgcmVxLT50YXJnZXRfdHlwZSA9IHRhcmdl
dF90eXBlOwotICAgIHJlcS0+dGFyZ2V0X2lkID0gdGFyZ2V0X2lkOwotICAgIHJlcS0+ZGlzcGxh
eV9tYXNrID0gZGlzcGxheV9tYXNrOwotICAgIHJlcS0+YXR0cmlidXRlID0gYXR0cmlidXRlOwot
ICAgIGlmICghX1hSZXBseShkcHksICh4UmVwbHkgKikmcmVwLAotICAgICAgICAgICAgICAgICBz
el94bnZDdHJsUXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlczY0UmVwbHlfZXh0cmEsCi0gICAgICAg
ICAgICAgICAgIHhUcnVlKSkgewotICAgICAgICBVbmxvY2tEaXNwbGF5KGRweSk7Ci0gICAgICAg
IFN5bmNIYW5kbGUoKTsKLSAgICAgICAgcmV0dXJuIEZhbHNlOwotICAgIH0KLSAgICBleGlzdHMg
PSByZXAuZmxhZ3M7Ci0gICAgaWYgKGV4aXN0cykgewotICAgICAgICB2YWx1ZXMtPnR5cGUgPSBy
ZXAuYXR0cl90eXBlOwotICAgICAgICBpZiAocmVwLmF0dHJfdHlwZSA9PSBBVFRSSUJVVEVfVFlQ
RV9SQU5HRSkgewotICAgICAgICAgICAgdmFsdWVzLT51LnJhbmdlLm1pbiA9IHJlcC5taW5fNjQ7
Ci0gICAgICAgICAgICB2YWx1ZXMtPnUucmFuZ2UubWF4ID0gcmVwLm1heF82NDsKLSAgICAgICAg
fQotICAgICAgICBpZiAocmVwLmF0dHJfdHlwZSA9PSBBVFRSSUJVVEVfVFlQRV9JTlRfQklUUykg
ewotICAgICAgICAgICAgdmFsdWVzLT51LmJpdHMuaW50cyA9IHJlcC5iaXRzXzY0OwotICAgICAg
ICB9Ci0gICAgICAgIHZhbHVlcy0+cGVybWlzc2lvbnMgPSByZXAucGVybXM7Ci0gICAgfQotICAg
IFVubG9ja0Rpc3BsYXkoZHB5KTsKLSAgICBTeW5jSGFuZGxlKCk7Ci0gICAgcmV0dXJuIGV4aXN0
czsKLX0KLQotQm9vbCBYTlZDVFJMUXVlcnlWYWxpZFRhcmdldEF0dHJpYnV0ZVZhbHVlcyAoCi0g
ICAgRGlzcGxheSAqZHB5LAotICAgIGludCB0YXJnZXRfdHlwZSwKLSAgICBpbnQgdGFyZ2V0X2lk
LAotICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCi0gICAgdW5zaWduZWQgaW50IGF0dHJp
YnV0ZSwKLSAgICBOVkNUUkxBdHRyaWJ1dGVWYWxpZFZhbHVlc1JlYyAqdmFsdWVzCi0pewotICAg
IFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxheShkcHkpOwotICAgIEJvb2wgZXhp
c3RzOwotICAgIHVpbnRwdHJfdCBmbGFnczsKLQotICAgIGlmICghdmFsdWVzKSByZXR1cm4gRmFs
c2U7Ci0KLSAgICBpZiAoIVhleHRIYXNFeHRlbnNpb24oaW5mbykpCi0gICAgICAgIHJldHVybiBG
YWxzZTsKLQotICAgIFhOVkNUUkxDaGVja0V4dGVuc2lvbihkcHksIGluZm8sIEZhbHNlKTsKLSAg
ICBYTlZDVFJMQ2hlY2tUYXJnZXREYXRhKGRweSwgaW5mbywgJnRhcmdldF90eXBlLCAmdGFyZ2V0
X2lkKTsKLQotICAgIGZsYWdzID0gdmVyc2lvbl9mbGFncyhkcHksaW5mbyk7Ci0KLSAgICBpZiAo
IShmbGFncyAmIE5WQ1RSTF9FWFRfRVhJU1RTKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlOwotCi0g
ICAgaWYgKGZsYWdzICYgTlZDVFJMX0VYVF82NF9CSVRfQVRUUklCVVRFUykgewotICAgICAgICBl
eGlzdHMgPSBYTlZDVFJMUXVlcnlWYWxpZFRhcmdldEF0dHJpYnV0ZVZhbHVlczY0KGRweSwgaW5m
bywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0YXJnZXRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0YXJnZXRfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9tYXNrLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZXMpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGV4aXN0cyA9IFhOVkNUUkxRdWVy
eVZhbGlkVGFyZ2V0QXR0cmlidXRlVmFsdWVzMzIoZHB5LCBpbmZvLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF90eXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRhcmdldF9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaXNwbGF5X21hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyk7Ci0gICAg
fQotICAgIHJldHVybiBleGlzdHM7Ci19Ci0KLQotQm9vbCBYTlZDVFJMUXVlcnlWYWxpZEF0dHJp
YnV0ZVZhbHVlcyAoCi0gICAgRGlzcGxheSAqZHB5LAotICAgIGludCBzY3JlZW4sCi0gICAgdW5z
aWduZWQgaW50IGRpc3BsYXlfbWFzaywKLSAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAg
IE5WQ1RSTEF0dHJpYnV0ZVZhbGlkVmFsdWVzUmVjICp2YWx1ZXMKLSl7Ci0gICAgcmV0dXJuIFhO
VkNUUkxRdWVyeVZhbGlkVGFyZ2V0QXR0cmlidXRlVmFsdWVzKGRweSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlZfQ1RSTF9UQVJHRVRfVFlQRV9Y
X1NDUkVFTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2NyZWVuLCBkaXNwbGF5X21hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSwgdmFsdWVzKTsKLX0KLQotCi1zdGF0aWMgQm9v
bCBRdWVyeUF0dHJpYnV0ZVBlcm1pc3Npb25zSW50ZXJuYWwgKAotICAgIERpc3BsYXkgKmRweSwK
LSAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgIE5WQ1RSTEF0dHJpYnV0ZVBlcm1pc3Np
b25zUmVjICpwZXJtaXNzaW9ucywKLSAgICB1bnNpZ25lZCBpbnQgcmVxVHlwZQotKXsKLSAgICBY
RXh0RGlzcGxheUluZm8gKmluZm8gPSBmaW5kX2Rpc3BsYXkgKGRweSk7Ci0gICAgeG52Q3RybFF1
ZXJ5QXR0cmlidXRlUGVybWlzc2lvbnNSZXBseSByZXA7Ci0gICAgeG52Q3RybFF1ZXJ5QXR0cmli
dXRlUGVybWlzc2lvbnNSZXEgKnJlcTsKLSAgICBCb29sIGV4aXN0czsKLQotICAgIGlmKCFYZXh0
SGFzRXh0ZW5zaW9uKGluZm8pKQotICAgICAgICByZXR1cm4gRmFsc2U7Ci0KLSAgICBYTlZDVFJM
Q2hlY2tFeHRlbnNpb24gKGRweSwgaW5mbywgRmFsc2UpOwotCi0gICAgTG9ja0Rpc3BsYXkoZHB5
KTsKLSAgICBHZXRSZXEobnZDdHJsUXVlcnlBdHRyaWJ1dGVQZXJtaXNzaW9ucywgcmVxKTsKLSAg
ICByZXEtPnJlcVR5cGUgPSBpbmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2RlOwotICAgIHJlcS0+bnZS
ZXFUeXBlID0gcmVxVHlwZTsKLSAgICByZXEtPmF0dHJpYnV0ZSA9IGF0dHJpYnV0ZTsKLSAgICBp
ZiAoIV9YUmVwbHkgKGRweSwgKHhSZXBseSAqKSAmcmVwLCAwLCB4VHJ1ZSkpIHsKLSAgICAgICAg
VW5sb2NrRGlzcGxheSAoZHB5KTsKLSAgICAgICAgU3luY0hhbmRsZSgpOwotICAgICAgICByZXR1
cm4gRmFsc2U7Ci0gICAgfQotICAgIGV4aXN0cyA9IHJlcC5mbGFnczsKLSAgICBpZiAoZXhpc3Rz
ICYmIHBlcm1pc3Npb25zKSB7Ci0gICAgICAgIHBlcm1pc3Npb25zLT50eXBlID0gcmVwLmF0dHJf
dHlwZTsKLSAgICAgICAgcGVybWlzc2lvbnMtPnBlcm1pc3Npb25zID0gcmVwLnBlcm1zOwotICAg
IH0KLSAgICBVbmxvY2tEaXNwbGF5KGRweSk7Ci0gICAgU3luY0hhbmRsZSgpOwotICAgIHJldHVy
biBleGlzdHM7Ci19Ci0KLQotQm9vbCBYTlZDVFJMUXVlcnlBdHRyaWJ1dGVQZXJtaXNzaW9ucyAo
Ci0gICAgRGlzcGxheSAqZHB5LAotICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0gICAgTlZD
VFJMQXR0cmlidXRlUGVybWlzc2lvbnNSZWMgKnBlcm1pc3Npb25zCi0pewotICAgIHJldHVybiBR
dWVyeUF0dHJpYnV0ZVBlcm1pc3Npb25zSW50ZXJuYWwoZHB5LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYX252Q3RybFF1ZXJ5QXR0cmlidXRlUGVybWlz
c2lvbnMpOwotfQotCi0KLUJvb2wgWE5WQ1RSTFF1ZXJ5U3RyaW5nQXR0cmlidXRlUGVybWlzc2lv
bnMgKAotICAgIERpc3BsYXkgKmRweSwKLSAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAg
IE5WQ1RSTEF0dHJpYnV0ZVBlcm1pc3Npb25zUmVjICpwZXJtaXNzaW9ucwotKXsKLSAgICByZXR1
cm4gUXVlcnlBdHRyaWJ1dGVQZXJtaXNzaW9uc0ludGVybmFsKGRweSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWF9udkN0cmxRdWVyeVN0cmluZ0F0dHJp
YnV0ZVBlcm1pc3Npb25zKTsKLX0KLQotCi1Cb29sIFhOVkNUUkxRdWVyeUJpbmFyeURhdGFBdHRy
aWJ1dGVQZXJtaXNzaW9ucyAoCi0gICAgRGlzcGxheSAqZHB5LAotICAgIHVuc2lnbmVkIGludCBh
dHRyaWJ1dGUsCi0gICAgTlZDVFJMQXR0cmlidXRlUGVybWlzc2lvbnNSZWMgKnBlcm1pc3Npb25z
Ci0pewotICAgIHJldHVybiBRdWVyeUF0dHJpYnV0ZVBlcm1pc3Npb25zSW50ZXJuYWwoZHB5LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbnMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYX252Q3RybFF1
ZXJ5QmluYXJ5RGF0YUF0dHJpYnV0ZVBlcm1pc3Npb25zKTsKLX0KLQotCi1Cb29sIFhOVkNUUkxR
dWVyeVN0cmluZ09wZXJhdGlvbkF0dHJpYnV0ZVBlcm1pc3Npb25zICgKLSAgICBEaXNwbGF5ICpk
cHksCi0gICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKLSAgICBOVkNUUkxBdHRyaWJ1dGVQZXJt
aXNzaW9uc1JlYyAqcGVybWlzc2lvbnMKLSl7Ci0gICAgcmV0dXJuIFF1ZXJ5QXR0cmlidXRlUGVy
bWlzc2lvbnNJbnRlcm5hbChkcHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwZXJtaXNzaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFhfbnZDdHJsUXVlcnlTdHJpbmdPcGVyYXRpb25BdHRyaWJ1dGVQZXJtaXNz
aW9ucyk7Ci19Ci0KLQotdm9pZCBYTlZDVFJMU2V0R3ZvQ29sb3JDb252ZXJzaW9uICgKLSAgICBE
aXNwbGF5ICpkcHksCi0gICAgaW50IHNjcmVlbiwKLSAgICBmbG9hdCBjb2xvck1hdHJpeFszXVsz
XSwKLSAgICBmbG9hdCBjb2xvck9mZnNldFszXSwKLSAgICBmbG9hdCBjb2xvclNjYWxlWzNdCi0p
ewotICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxheSAoZHB5KTsKLSAgICB4
bnZDdHJsU2V0R3ZvQ29sb3JDb252ZXJzaW9uUmVxICpyZXE7Ci0KLSAgICBYTlZDVFJMU2ltcGxl
Q2hlY2tFeHRlbnNpb24gKGRweSwgaW5mbyk7Ci0KLSAgICBMb2NrRGlzcGxheSAoZHB5KTsKLSAg
ICBHZXRSZXEgKG52Q3RybFNldEd2b0NvbG9yQ29udmVyc2lvbiwgcmVxKTsKLSAgICByZXEtPnJl
cVR5cGUgPSBpbmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2RlOwotICAgIHJlcS0+bnZSZXFUeXBlID0g
WF9udkN0cmxTZXRHdm9Db2xvckNvbnZlcnNpb247Ci0gICAgcmVxLT5zY3JlZW4gPSBzY3JlZW47
Ci0KLSAgICByZXEtPmNzY01hdHJpeF95X3IgPSBjb2xvck1hdHJpeFswXVswXTsKLSAgICByZXEt
PmNzY01hdHJpeF95X2cgPSBjb2xvck1hdHJpeFswXVsxXTsKLSAgICByZXEtPmNzY01hdHJpeF95
X2IgPSBjb2xvck1hdHJpeFswXVsyXTsKLQotICAgIHJlcS0+Y3NjTWF0cml4X2NyX3IgPSBjb2xv
ck1hdHJpeFsxXVswXTsKLSAgICByZXEtPmNzY01hdHJpeF9jcl9nID0gY29sb3JNYXRyaXhbMV1b
MV07Ci0gICAgcmVxLT5jc2NNYXRyaXhfY3JfYiA9IGNvbG9yTWF0cml4WzFdWzJdOwotCi0gICAg
cmVxLT5jc2NNYXRyaXhfY2JfciA9IGNvbG9yTWF0cml4WzJdWzBdOwotICAgIHJlcS0+Y3NjTWF0
cml4X2NiX2cgPSBjb2xvck1hdHJpeFsyXVsxXTsKLSAgICByZXEtPmNzY01hdHJpeF9jYl9iID0g
Y29sb3JNYXRyaXhbMl1bMl07Ci0KLSAgICByZXEtPmNzY09mZnNldF95ICA9IGNvbG9yT2Zmc2V0
WzBdOwotICAgIHJlcS0+Y3NjT2Zmc2V0X2NyID0gY29sb3JPZmZzZXRbMV07Ci0gICAgcmVxLT5j
c2NPZmZzZXRfY2IgPSBjb2xvck9mZnNldFsyXTsKLQotICAgIHJlcS0+Y3NjU2NhbGVfeSAgPSBj
b2xvclNjYWxlWzBdOwotICAgIHJlcS0+Y3NjU2NhbGVfY3IgPSBjb2xvclNjYWxlWzFdOwotICAg
IHJlcS0+Y3NjU2NhbGVfY2IgPSBjb2xvclNjYWxlWzJdOwotCi0gICAgVW5sb2NrRGlzcGxheSAo
ZHB5KTsKLSAgICBTeW5jSGFuZGxlICgpOwotfQotCi0KLUJvb2wgWE5WQ1RSTFF1ZXJ5R3ZvQ29s
b3JDb252ZXJzaW9uICgKLSAgICBEaXNwbGF5ICpkcHksCi0gICAgaW50IHNjcmVlbiwKLSAgICBm
bG9hdCBjb2xvck1hdHJpeFszXVszXSwKLSAgICBmbG9hdCBjb2xvck9mZnNldFszXSwKLSAgICBm
bG9hdCBjb2xvclNjYWxlWzNdCi0pewotICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRf
ZGlzcGxheSAoZHB5KTsKLSAgICB4bnZDdHJsUXVlcnlHdm9Db2xvckNvbnZlcnNpb25SZXBseSBy
ZXA7Ci0gICAgeG52Q3RybFF1ZXJ5R3ZvQ29sb3JDb252ZXJzaW9uUmVxICpyZXE7Ci0KLSAgICBp
ZighWGV4dEhhc0V4dGVuc2lvbihpbmZvKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlOwotCi0gICAg
WE5WQ1RSTENoZWNrRXh0ZW5zaW9uIChkcHksIGluZm8sIEZhbHNlKTsKLQotICAgIExvY2tEaXNw
bGF5IChkcHkpOwotCi0gICAgR2V0UmVxIChudkN0cmxRdWVyeUd2b0NvbG9yQ29udmVyc2lvbiwg
cmVxKTsKLSAgICByZXEtPnJlcVR5cGUgPSBpbmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2RlOwotICAg
IHJlcS0+bnZSZXFUeXBlID0gWF9udkN0cmxRdWVyeUd2b0NvbG9yQ29udmVyc2lvbjsKLSAgICBy
ZXEtPnNjcmVlbiA9IHNjcmVlbjsKLQotICAgIGlmICghX1hSZXBseShkcHksICh4UmVwbHkgKikg
JnJlcCwgMCwgeEZhbHNlKSkgewotICAgICAgICBVbmxvY2tEaXNwbGF5IChkcHkpOwotICAgICAg
ICBTeW5jSGFuZGxlICgpOwotICAgICAgICByZXR1cm4gRmFsc2U7Ci0gICAgfQotCi0gICAgX1hS
ZWFkKGRweSwgKGNoYXIgKikoY29sb3JNYXRyaXgpLCAzNik7Ci0gICAgX1hSZWFkKGRweSwgKGNo
YXIgKikoY29sb3JPZmZzZXQpLCAxMik7Ci0gICAgX1hSZWFkKGRweSwgKGNoYXIgKikoY29sb3JT
Y2FsZSksIDEyKTsKLQotICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAgU3luY0hhbmRsZSAo
KTsKLQotICAgIHJldHVybiBUcnVlOwotfQotCi0KLUJvb2wgWE5WQ3RybFNlbGVjdFRhcmdldE5v
dGlmeSAoCi0gICAgRGlzcGxheSAqZHB5LAotICAgIGludCB0YXJnZXRfdHlwZSwKLSAgICBpbnQg
dGFyZ2V0X2lkLAotICAgIGludCBub3RpZnlfdHlwZSwKLSAgICBCb29sIG9ub2ZmCi0pewotICAg
IFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxheSAoZHB5KTsKLSAgICB4bnZDdHJs
U2VsZWN0VGFyZ2V0Tm90aWZ5UmVxICpyZXE7Ci0KLSAgICBpZighWGV4dEhhc0V4dGVuc2lvbiAo
aW5mbykpCi0gICAgICAgIHJldHVybiBGYWxzZTsKLQotICAgIFhOVkNUUkxDaGVja0V4dGVuc2lv
biAoZHB5LCBpbmZvLCBGYWxzZSk7Ci0KLSAgICBMb2NrRGlzcGxheSAoZHB5KTsKLSAgICBHZXRS
ZXEgKG52Q3RybFNlbGVjdFRhcmdldE5vdGlmeSwgcmVxKTsKLSAgICByZXEtPnJlcVR5cGUgPSBp
bmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2RlOwotICAgIHJlcS0+bnZSZXFUeXBlID0gWF9udkN0cmxT
ZWxlY3RUYXJnZXROb3RpZnk7Ci0gICAgcmVxLT50YXJnZXRfdHlwZSA9IHRhcmdldF90eXBlOwot
ICAgIHJlcS0+dGFyZ2V0X2lkID0gdGFyZ2V0X2lkOwotICAgIHJlcS0+bm90aWZ5VHlwZSA9IG5v
dGlmeV90eXBlOwotICAgIHJlcS0+b25vZmYgPSBvbm9mZjsKLSAgICBVbmxvY2tEaXNwbGF5IChk
cHkpOwotICAgIFN5bmNIYW5kbGUgKCk7Ci0KLSAgICByZXR1cm4gVHJ1ZTsKLX0KLQotCi1Cb29s
IFhOVkN0cmxTZWxlY3ROb3RpZnkgKAotICAgIERpc3BsYXkgKmRweSwKLSAgICBpbnQgc2NyZWVu
LAotICAgIGludCB0eXBlLAotICAgIEJvb2wgb25vZmYKLSl7Ci0gICAgWEV4dERpc3BsYXlJbmZv
ICppbmZvID0gZmluZF9kaXNwbGF5IChkcHkpOwotICAgIHhudkN0cmxTZWxlY3ROb3RpZnlSZXEg
KnJlcTsKLQotICAgIGlmKCFYZXh0SGFzRXh0ZW5zaW9uIChpbmZvKSkKLSAgICAgICAgcmV0dXJu
IEZhbHNlOwotCi0gICAgWE5WQ1RSTENoZWNrRXh0ZW5zaW9uIChkcHksIGluZm8sIEZhbHNlKTsK
LQotICAgIExvY2tEaXNwbGF5IChkcHkpOwotICAgIEdldFJlcSAobnZDdHJsU2VsZWN0Tm90aWZ5
LCByZXEpOwotICAgIHJlcS0+cmVxVHlwZSA9IGluZm8tPmNvZGVzLT5tYWpvcl9vcGNvZGU7Ci0g
ICAgcmVxLT5udlJlcVR5cGUgPSBYX252Q3RybFNlbGVjdE5vdGlmeTsKLSAgICByZXEtPnNjcmVl
biA9IHNjcmVlbjsKLSAgICByZXEtPm5vdGlmeVR5cGUgPSB0eXBlOwotICAgIHJlcS0+b25vZmYg
PSBvbm9mZjsKLSAgICBVbmxvY2tEaXNwbGF5IChkcHkpOwotICAgIFN5bmNIYW5kbGUgKCk7Ci0K
LSAgICByZXR1cm4gVHJ1ZTsKLX0KLQotQm9vbCBYTlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRh
ICgKLSAgICBEaXNwbGF5ICpkcHksCi0gICAgaW50IHRhcmdldF90eXBlLAotICAgIGludCB0YXJn
ZXRfaWQsCi0gICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKLSAgICB1bnNpZ25lZCBpbnQg
YXR0cmlidXRlLAotICAgIHVuc2lnbmVkIGNoYXIgKipwdHIsCi0gICAgaW50ICpsZW4KLSl7Ci0g
ICAgWEV4dERpc3BsYXlJbmZvICppbmZvID0gZmluZF9kaXNwbGF5IChkcHkpOwotICAgIHhudkN0
cmxRdWVyeUJpbmFyeURhdGFSZXBseSByZXA7Ci0gICAgeG52Q3RybFF1ZXJ5QmluYXJ5RGF0YVJl
cSAgICpyZXE7Ci0gICAgQm9vbCBleGlzdHM7Ci0gICAgaW50IGxlbmd0aCwgbnVtYnl0ZXMsIHNs
b3A7Ci0KLSAgICBpZiAoIXB0cikgcmV0dXJuIEZhbHNlOwotCi0gICAgaWYoIVhleHRIYXNFeHRl
bnNpb24oaW5mbykpCi0gICAgICAgIHJldHVybiBGYWxzZTsKLQotICAgIFhOVkNUUkxDaGVja0V4
dGVuc2lvbiAoZHB5LCBpbmZvLCBGYWxzZSk7Ci0gICAgWE5WQ1RSTENoZWNrVGFyZ2V0RGF0YShk
cHksIGluZm8sICZ0YXJnZXRfdHlwZSwgJnRhcmdldF9pZCk7Ci0KLSAgICBMb2NrRGlzcGxheSAo
ZHB5KTsKLSAgICBHZXRSZXEgKG52Q3RybFF1ZXJ5QmluYXJ5RGF0YSwgcmVxKTsKLSAgICByZXEt
PnJlcVR5cGUgPSBpbmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2RlOwotICAgIHJlcS0+bnZSZXFUeXBl
ID0gWF9udkN0cmxRdWVyeUJpbmFyeURhdGE7Ci0gICAgcmVxLT50YXJnZXRfdHlwZSA9IHRhcmdl
dF90eXBlOwotICAgIHJlcS0+dGFyZ2V0X2lkID0gdGFyZ2V0X2lkOwotICAgIHJlcS0+ZGlzcGxh
eV9tYXNrID0gZGlzcGxheV9tYXNrOwotICAgIHJlcS0+YXR0cmlidXRlID0gYXR0cmlidXRlOwot
ICAgIGlmICghX1hSZXBseSAoZHB5LCAoeFJlcGx5ICopICZyZXAsIDAsIEZhbHNlKSkgewotICAg
ICAgICBVbmxvY2tEaXNwbGF5IChkcHkpOwotICAgICAgICBTeW5jSGFuZGxlICgpOwotICAgICAg
ICByZXR1cm4gRmFsc2U7Ci0gICAgfQotICAgIGxlbmd0aCA9IHJlcC5sZW5ndGg7Ci0gICAgbnVt
Ynl0ZXMgPSByZXAubjsKLSAgICBzbG9wID0gbnVtYnl0ZXMgJiAzOwotICAgIGV4aXN0cyA9IHJl
cC5mbGFnczsKLSAgICBpZiAoZXhpc3RzKSB7Ci0gICAgICAgICpwdHIgPSAodW5zaWduZWQgY2hh
ciAqKSBYbWFsbG9jKG51bWJ5dGVzKTsKLSAgICB9Ci0gICAgaWYgKCFleGlzdHMgfHwgISpwdHIp
IHsKLSAgICAgICAgX1hFYXREYXRhKGRweSwgbGVuZ3RoKTsKLSAgICAgICAgVW5sb2NrRGlzcGxh
eSAoZHB5KTsKLSAgICAgICAgU3luY0hhbmRsZSAoKTsKLSAgICAgICAgcmV0dXJuIEZhbHNlOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIF9YUmVhZChkcHksIChjaGFyICopICpwdHIsIG51bWJ5dGVz
KTsKLSAgICAgICAgaWYgKHNsb3ApIF9YRWF0RGF0YShkcHksIDQtc2xvcCk7Ci0gICAgfQotICAg
IGlmIChsZW4pICpsZW4gPSBudW1ieXRlczsKLSAgICBVbmxvY2tEaXNwbGF5IChkcHkpOwotICAg
IFN5bmNIYW5kbGUgKCk7Ci0gICAgcmV0dXJuIGV4aXN0czsKLX0KLQotQm9vbCBYTlZDVFJMUXVl
cnlCaW5hcnlEYXRhICgKLSAgICBEaXNwbGF5ICpkcHksCi0gICAgaW50IHNjcmVlbiwKLSAgICB1
bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAotICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0g
ICAgdW5zaWduZWQgY2hhciAqKnB0ciwKLSAgICBpbnQgKmxlbgotKXsKLSAgICByZXR1cm4gWE5W
Q1RSTFF1ZXJ5VGFyZ2V0QmluYXJ5RGF0YShkcHksIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JF
RU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuLCBkaXNw
bGF5X21hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmli
dXRlLCBwdHIsIGxlbik7Ci19Ci0KLUJvb2wgWE5WQ1RSTFN0cmluZ09wZXJhdGlvbiAoCi0gICAg
RGlzcGxheSAqZHB5LAotICAgIGludCB0YXJnZXRfdHlwZSwKLSAgICBpbnQgdGFyZ2V0X2lkLAot
ICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCi0gICAgdW5zaWduZWQgaW50IGF0dHJpYnV0
ZSwKLSAgICBjaGFyICpwSW4sCi0gICAgY2hhciAqKnBwT3V0Ci0pIHsKLSAgICBYRXh0RGlzcGxh
eUluZm8gKmluZm8gPSBmaW5kX2Rpc3BsYXkoZHB5KTsKLSAgICB4bnZDdHJsU3RyaW5nT3BlcmF0
aW9uUmVxICpyZXE7Ci0gICAgeG52Q3RybFN0cmluZ09wZXJhdGlvblJlcGx5IHJlcDsKLSAgICBC
b29sIHJldDsKLSAgICBpbnQgaW5TaXplLCBvdXRTaXplLCBsZW5ndGgsIHNsb3A7Ci0KLSAgICBp
ZiAoIVhleHRIYXNFeHRlbnNpb24oaW5mbykpCi0gICAgICAgIHJldHVybiBGYWxzZTsKLSAgICAK
LSAgICBpZiAoIXBwT3V0KQotICAgICAgICByZXR1cm4gRmFsc2U7Ci0KLSAgICAqcHBPdXQgPSBO
VUxMOwotICAgIAotICAgIFhOVkNUUkxDaGVja0V4dGVuc2lvbihkcHksIGluZm8sIEZhbHNlKTsK
LSAgICBYTlZDVFJMQ2hlY2tUYXJnZXREYXRhKGRweSwgaW5mbywgJnRhcmdldF90eXBlLCAmdGFy
Z2V0X2lkKTsKLSAgICAKLSAgICBpZiAocEluKSB7Ci0gICAgICAgIGluU2l6ZSA9IHN0cmxlbihw
SW4pICsgMTsKLSAgICB9IGVsc2UgewotICAgICAgICBpblNpemUgPSAwOwotICAgIH0KLSAgICAK
LSAgICBMb2NrRGlzcGxheShkcHkpOwotICAgIEdldFJlcShudkN0cmxTdHJpbmdPcGVyYXRpb24s
IHJlcSk7Ci0gICAgCi0gICAgcmVxLT5yZXFUeXBlID0gaW5mby0+Y29kZXMtPm1ham9yX29wY29k
ZTsKLSAgICByZXEtPm52UmVxVHlwZSA9IFhfbnZDdHJsU3RyaW5nT3BlcmF0aW9uOwotICAgIHJl
cS0+dGFyZ2V0X3R5cGUgPSB0YXJnZXRfdHlwZTsKLSAgICByZXEtPnRhcmdldF9pZCA9IHRhcmdl
dF9pZDsKLSAgICByZXEtPmRpc3BsYXlfbWFzayA9IGRpc3BsYXlfbWFzazsKLSAgICByZXEtPmF0
dHJpYnV0ZSA9IGF0dHJpYnV0ZTsKLQotICAgIHJlcS0+bGVuZ3RoICs9ICgoaW5TaXplICsgMykg
JiB+MykgPj4gMjsKLSAgICByZXEtPm51bV9ieXRlcyA9IGluU2l6ZTsKLSAgICAKLSAgICBpZiAo
cEluKSB7Ci0gICAgICAgIERhdGEoZHB5LCBwSW4sIGluU2l6ZSk7Ci0gICAgfQotICAgIAotICAg
IGlmICghX1hSZXBseSAoZHB5LCAoeFJlcGx5ICopICZyZXAsIDAsIEZhbHNlKSkgewotICAgICAg
ICBVbmxvY2tEaXNwbGF5KGRweSk7Ci0gICAgICAgIFN5bmNIYW5kbGUoKTsKLSAgICAgICAgcmV0
dXJuIEZhbHNlOwotICAgIH0KLSAgICAKLSAgICBsZW5ndGggPSByZXAubGVuZ3RoOwotICAgIG91
dFNpemUgPSByZXAubnVtX2J5dGVzOwotICAgIHNsb3AgPSBvdXRTaXplICYgMzsKLQotICAgIGlm
IChvdXRTaXplKSAqcHBPdXQgPSAoY2hhciAqKSBYbWFsbG9jKG91dFNpemUpOwotICAgIAotICAg
IGlmICghKnBwT3V0KSB7Ci0gICAgICAgIF9YRWF0RGF0YShkcHksIGxlbmd0aCk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgX1hSZWFkKGRweSwgKGNoYXIgKikgKnBwT3V0LCBvdXRTaXplKTsKLSAg
ICAgICAgaWYgKHNsb3ApIF9YRWF0RGF0YShkcHksIDQtc2xvcCk7Ci0gICAgfQotICAgIAotICAg
IHJldCA9IHJlcC5yZXQ7Ci0gICAgCi0gICAgVW5sb2NrRGlzcGxheShkcHkpOwotICAgIFN5bmNI
YW5kbGUoKTsKLSAgICAKLSAgICByZXR1cm4gcmV0OwotfQotCi0KLXN0YXRpYyBCb29sIHdpcmVf
dG9fZXZlbnQgKERpc3BsYXkgKmRweSwgWEV2ZW50ICpob3N0LCB4RXZlbnQgKndpcmUpCi17Ci0g
ICAgWEV4dERpc3BsYXlJbmZvICppbmZvID0gZmluZF9kaXNwbGF5IChkcHkpOwotICAgIFhOVkN0
cmxFdmVudCAqcmU7Ci0gICAgeG52Y3RybEV2ZW50ICpldmVudDsKLSAgICBYTlZDdHJsRXZlbnRU
YXJnZXQgKnJlVGFyZ2V0OwotICAgIHhudmN0cmxFdmVudFRhcmdldCAqZXZlbnRUYXJnZXQ7Ci0g
ICAgWE5WQ3RybEV2ZW50VGFyZ2V0QXZhaWxhYmlsaXR5ICpyZVRhcmdldEF2YWlsYWJpbGl0eTsK
LSAgICBYTlZDdHJsU3RyaW5nRXZlbnRUYXJnZXQgKnJlVGFyZ2V0U3RyaW5nOwotICAgIFhOVkN0
cmxCaW5hcnlFdmVudFRhcmdldCAqcmVUYXJnZXRCaW5hcnk7Ci0KLSAgICBYTlZDVFJMQ2hlY2tF
eHRlbnNpb24gKGRweSwgaW5mbywgRmFsc2UpOwotICAgIAotICAgIHN3aXRjaCAoKHdpcmUtPnUu
dS50eXBlICYgMHg3RikgLSBpbmZvLT5jb2Rlcy0+Zmlyc3RfZXZlbnQpIHsKLSAgICBjYXNlIEFU
VFJJQlVURV9DSEFOR0VEX0VWRU5UOgotICAgICAgICByZSA9IChYTlZDdHJsRXZlbnQgKikgaG9z
dDsKLSAgICAgICAgZXZlbnQgPSAoeG52Y3RybEV2ZW50ICopIHdpcmU7Ci0gICAgICAgIHJlLT5h
dHRyaWJ1dGVfY2hhbmdlZC50eXBlID0gZXZlbnQtPnUudS50eXBlICYgMHg3RjsKLSAgICAgICAg
cmUtPmF0dHJpYnV0ZV9jaGFuZ2VkLnNlcmlhbCA9Ci0gICAgICAgICAgICBfWFNldExhc3RSZXF1
ZXN0UmVhZChkcHksICh4R2VuZXJpY1JlcGx5KikgZXZlbnQpOwotICAgICAgICByZS0+YXR0cmli
dXRlX2NoYW5nZWQuc2VuZF9ldmVudCA9ICgoZXZlbnQtPnUudS50eXBlICYgMHg4MCkgIT0gMCk7
Ci0gICAgICAgIHJlLT5hdHRyaWJ1dGVfY2hhbmdlZC5kaXNwbGF5ID0gZHB5OwotICAgICAgICBy
ZS0+YXR0cmlidXRlX2NoYW5nZWQudGltZSA9IGV2ZW50LT51LmF0dHJpYnV0ZV9jaGFuZ2VkLnRp
bWU7Ci0gICAgICAgIHJlLT5hdHRyaWJ1dGVfY2hhbmdlZC5zY3JlZW4gPSBldmVudC0+dS5hdHRy
aWJ1dGVfY2hhbmdlZC5zY3JlZW47Ci0gICAgICAgIHJlLT5hdHRyaWJ1dGVfY2hhbmdlZC5kaXNw
bGF5X21hc2sgPQotICAgICAgICAgICAgZXZlbnQtPnUuYXR0cmlidXRlX2NoYW5nZWQuZGlzcGxh
eV9tYXNrOwotICAgICAgICByZS0+YXR0cmlidXRlX2NoYW5nZWQuYXR0cmlidXRlID0gZXZlbnQt
PnUuYXR0cmlidXRlX2NoYW5nZWQuYXR0cmlidXRlOwotICAgICAgICByZS0+YXR0cmlidXRlX2No
YW5nZWQudmFsdWUgPSBldmVudC0+dS5hdHRyaWJ1dGVfY2hhbmdlZC52YWx1ZTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBUQVJHRVRfQVRUUklCVVRFX0NIQU5HRURfRVZFTlQ6Ci0gICAgICAg
IHJlVGFyZ2V0ID0gKFhOVkN0cmxFdmVudFRhcmdldCAqKSBob3N0OwotICAgICAgICBldmVudFRh
cmdldCA9ICh4bnZjdHJsRXZlbnRUYXJnZXQgKikgd2lyZTsKLSAgICAgICAgcmVUYXJnZXQtPmF0
dHJpYnV0ZV9jaGFuZ2VkLnR5cGUgPSBldmVudFRhcmdldC0+dS51LnR5cGUgJiAweDdGOwotICAg
ICAgICByZVRhcmdldC0+YXR0cmlidXRlX2NoYW5nZWQuc2VyaWFsID0KLSAgICAgICAgICAgIF9Y
U2V0TGFzdFJlcXVlc3RSZWFkKGRweSwgKHhHZW5lcmljUmVwbHkqKSBldmVudFRhcmdldCk7Ci0g
ICAgICAgIHJlVGFyZ2V0LT5hdHRyaWJ1dGVfY2hhbmdlZC5zZW5kX2V2ZW50ID0KLSAgICAgICAg
ICAgICgoZXZlbnRUYXJnZXQtPnUudS50eXBlICYgMHg4MCkgIT0gMCk7Ci0gICAgICAgIHJlVGFy
Z2V0LT5hdHRyaWJ1dGVfY2hhbmdlZC5kaXNwbGF5ID0gZHB5OwotICAgICAgICByZVRhcmdldC0+
YXR0cmlidXRlX2NoYW5nZWQudGltZSA9Ci0gICAgICAgICAgICBldmVudFRhcmdldC0+dS5hdHRy
aWJ1dGVfY2hhbmdlZC50aW1lOwotICAgICAgICByZVRhcmdldC0+YXR0cmlidXRlX2NoYW5nZWQu
dGFyZ2V0X3R5cGUgPQotICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUuYXR0cmlidXRlX2NoYW5n
ZWQudGFyZ2V0X3R5cGU7Ci0gICAgICAgIHJlVGFyZ2V0LT5hdHRyaWJ1dGVfY2hhbmdlZC50YXJn
ZXRfaWQgPQotICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUuYXR0cmlidXRlX2NoYW5nZWQudGFy
Z2V0X2lkOwotICAgICAgICByZVRhcmdldC0+YXR0cmlidXRlX2NoYW5nZWQuZGlzcGxheV9tYXNr
ID0KLSAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LmF0dHJpYnV0ZV9jaGFuZ2VkLmRpc3BsYXlf
bWFzazsKLSAgICAgICAgcmVUYXJnZXQtPmF0dHJpYnV0ZV9jaGFuZ2VkLmF0dHJpYnV0ZSA9Ci0g
ICAgICAgICAgICBldmVudFRhcmdldC0+dS5hdHRyaWJ1dGVfY2hhbmdlZC5hdHRyaWJ1dGU7Ci0g
ICAgICAgIHJlVGFyZ2V0LT5hdHRyaWJ1dGVfY2hhbmdlZC52YWx1ZSA9Ci0gICAgICAgICAgICBl
dmVudFRhcmdldC0+dS5hdHRyaWJ1dGVfY2hhbmdlZC52YWx1ZTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBUQVJHRVRfQVRUUklCVVRFX0FWQUlMQUJJTElUWV9DSEFOR0VEX0VWRU5UOgotICAg
ICAgICByZVRhcmdldEF2YWlsYWJpbGl0eSA9IChYTlZDdHJsRXZlbnRUYXJnZXRBdmFpbGFiaWxp
dHkgKikgaG9zdDsKLSAgICAgICAgZXZlbnRUYXJnZXQgPSAoeG52Y3RybEV2ZW50VGFyZ2V0ICop
IHdpcmU7Ci0gICAgICAgIHJlVGFyZ2V0QXZhaWxhYmlsaXR5LT5hdHRyaWJ1dGVfY2hhbmdlZC50
eXBlID0KLSAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LnUudHlwZSAmIDB4N0Y7Ci0gICAgICAg
IHJlVGFyZ2V0QXZhaWxhYmlsaXR5LT5hdHRyaWJ1dGVfY2hhbmdlZC5zZXJpYWwgPQotICAgICAg
ICAgICAgX1hTZXRMYXN0UmVxdWVzdFJlYWQoZHB5LCAoeEdlbmVyaWNSZXBseSopIGV2ZW50VGFy
Z2V0KTsKLSAgICAgICAgcmVUYXJnZXRBdmFpbGFiaWxpdHktPmF0dHJpYnV0ZV9jaGFuZ2VkLnNl
bmRfZXZlbnQgPQotICAgICAgICAgICAgKChldmVudFRhcmdldC0+dS51LnR5cGUgJiAweDgwKSAh
PSAwKTsKLSAgICAgICAgcmVUYXJnZXRBdmFpbGFiaWxpdHktPmF0dHJpYnV0ZV9jaGFuZ2VkLmRp
c3BsYXkgPSBkcHk7Ci0gICAgICAgIHJlVGFyZ2V0QXZhaWxhYmlsaXR5LT5hdHRyaWJ1dGVfY2hh
bmdlZC50aW1lID0KLSAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LmF2YWlsYWJpbGl0eV9jaGFu
Z2VkLnRpbWU7Ci0gICAgICAgIHJlVGFyZ2V0QXZhaWxhYmlsaXR5LT5hdHRyaWJ1dGVfY2hhbmdl
ZC50YXJnZXRfdHlwZSA9Ci0gICAgICAgICAgICBldmVudFRhcmdldC0+dS5hdmFpbGFiaWxpdHlf
Y2hhbmdlZC50YXJnZXRfdHlwZTsKLSAgICAgICAgcmVUYXJnZXRBdmFpbGFiaWxpdHktPmF0dHJp
YnV0ZV9jaGFuZ2VkLnRhcmdldF9pZCA9Ci0gICAgICAgICAgICBldmVudFRhcmdldC0+dS5hdmFp
bGFiaWxpdHlfY2hhbmdlZC50YXJnZXRfaWQ7Ci0gICAgICAgIHJlVGFyZ2V0QXZhaWxhYmlsaXR5
LT5hdHRyaWJ1dGVfY2hhbmdlZC5kaXNwbGF5X21hc2sgPQotICAgICAgICAgICAgZXZlbnRUYXJn
ZXQtPnUuYXZhaWxhYmlsaXR5X2NoYW5nZWQuZGlzcGxheV9tYXNrOwotICAgICAgICByZVRhcmdl
dEF2YWlsYWJpbGl0eS0+YXR0cmlidXRlX2NoYW5nZWQuYXR0cmlidXRlID0KLSAgICAgICAgICAg
IGV2ZW50VGFyZ2V0LT51LmF2YWlsYWJpbGl0eV9jaGFuZ2VkLmF0dHJpYnV0ZTsKLSAgICAgICAg
cmVUYXJnZXRBdmFpbGFiaWxpdHktPmF0dHJpYnV0ZV9jaGFuZ2VkLmF2YWlsYWJpbGl0eSA9Ci0g
ICAgICAgICAgICBldmVudFRhcmdldC0+dS5hdmFpbGFiaWxpdHlfY2hhbmdlZC5hdmFpbGFiaWxp
dHk7Ci0gICAgICAgIHJlVGFyZ2V0QXZhaWxhYmlsaXR5LT5hdHRyaWJ1dGVfY2hhbmdlZC52YWx1
ZSA9Ci0gICAgICAgICAgICBldmVudFRhcmdldC0+dS5hdmFpbGFiaWxpdHlfY2hhbmdlZC52YWx1
ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUQVJHRVRfU1RSSU5HX0FUVFJJQlVURV9DSEFO
R0VEX0VWRU5UOgotICAgICAgICByZVRhcmdldFN0cmluZyA9IChYTlZDdHJsU3RyaW5nRXZlbnRU
YXJnZXQgKikgaG9zdDsKLSAgICAgICAgZXZlbnRUYXJnZXQgPSAoeG52Y3RybEV2ZW50VGFyZ2V0
ICopIHdpcmU7Ci0gICAgICAgIHJlVGFyZ2V0U3RyaW5nLT5hdHRyaWJ1dGVfY2hhbmdlZC50eXBl
ID0gZXZlbnRUYXJnZXQtPnUudS50eXBlICYgMHg3RjsKLSAgICAgICAgcmVUYXJnZXRTdHJpbmct
PmF0dHJpYnV0ZV9jaGFuZ2VkLnNlcmlhbCA9Ci0gICAgICAgICAgICBfWFNldExhc3RSZXF1ZXN0
UmVhZChkcHksICh4R2VuZXJpY1JlcGx5KikgZXZlbnRUYXJnZXQpOwotICAgICAgICByZVRhcmdl
dFN0cmluZy0+YXR0cmlidXRlX2NoYW5nZWQuc2VuZF9ldmVudCA9Ci0gICAgICAgICAgICAoKGV2
ZW50VGFyZ2V0LT51LnUudHlwZSAmIDB4ODApICE9IDApOwotICAgICAgICByZVRhcmdldFN0cmlu
Zy0+YXR0cmlidXRlX2NoYW5nZWQuZGlzcGxheSA9IGRweTsKLSAgICAgICAgcmVUYXJnZXRTdHJp
bmctPmF0dHJpYnV0ZV9jaGFuZ2VkLnRpbWUgPQotICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUu
YXR0cmlidXRlX2NoYW5nZWQudGltZTsKLSAgICAgICAgcmVUYXJnZXRTdHJpbmctPmF0dHJpYnV0
ZV9jaGFuZ2VkLnRhcmdldF90eXBlID0KLSAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LmF0dHJp
YnV0ZV9jaGFuZ2VkLnRhcmdldF90eXBlOwotICAgICAgICByZVRhcmdldFN0cmluZy0+YXR0cmli
dXRlX2NoYW5nZWQudGFyZ2V0X2lkID0KLSAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LmF0dHJp
YnV0ZV9jaGFuZ2VkLnRhcmdldF9pZDsKLSAgICAgICAgcmVUYXJnZXRTdHJpbmctPmF0dHJpYnV0
ZV9jaGFuZ2VkLmRpc3BsYXlfbWFzayA9Ci0gICAgICAgICAgICBldmVudFRhcmdldC0+dS5hdHRy
aWJ1dGVfY2hhbmdlZC5kaXNwbGF5X21hc2s7Ci0gICAgICAgIHJlVGFyZ2V0U3RyaW5nLT5hdHRy
aWJ1dGVfY2hhbmdlZC5hdHRyaWJ1dGUgPQotICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUuYXR0
cmlidXRlX2NoYW5nZWQuYXR0cmlidXRlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBUkdF
VF9CSU5BUllfQVRUUklCVVRFX0NIQU5HRURfRVZFTlQ6Ci0gICAgICAgIHJlVGFyZ2V0QmluYXJ5
ID0gKFhOVkN0cmxCaW5hcnlFdmVudFRhcmdldCAqKSBob3N0OwotICAgICAgICBldmVudFRhcmdl
dCA9ICh4bnZjdHJsRXZlbnRUYXJnZXQgKikgd2lyZTsKLSAgICAgICAgcmVUYXJnZXRCaW5hcnkt
PmF0dHJpYnV0ZV9jaGFuZ2VkLnR5cGUgPSBldmVudFRhcmdldC0+dS51LnR5cGUgJiAweDdGOwot
ICAgICAgICByZVRhcmdldEJpbmFyeS0+YXR0cmlidXRlX2NoYW5nZWQuc2VyaWFsID0KLSAgICAg
ICAgICAgIF9YU2V0TGFzdFJlcXVlc3RSZWFkKGRweSwgKHhHZW5lcmljUmVwbHkqKSBldmVudFRh
cmdldCk7Ci0gICAgICAgIHJlVGFyZ2V0QmluYXJ5LT5hdHRyaWJ1dGVfY2hhbmdlZC5zZW5kX2V2
ZW50ID0KLSAgICAgICAgICAgICgoZXZlbnRUYXJnZXQtPnUudS50eXBlICYgMHg4MCkgIT0gMCk7
Ci0gICAgICAgIHJlVGFyZ2V0QmluYXJ5LT5hdHRyaWJ1dGVfY2hhbmdlZC5kaXNwbGF5ID0gZHB5
OwotICAgICAgICByZVRhcmdldEJpbmFyeS0+YXR0cmlidXRlX2NoYW5nZWQudGltZSA9Ci0gICAg
ICAgICAgICBldmVudFRhcmdldC0+dS5hdHRyaWJ1dGVfY2hhbmdlZC50aW1lOwotICAgICAgICBy
ZVRhcmdldEJpbmFyeS0+YXR0cmlidXRlX2NoYW5nZWQudGFyZ2V0X3R5cGUgPQotICAgICAgICAg
ICAgZXZlbnRUYXJnZXQtPnUuYXR0cmlidXRlX2NoYW5nZWQudGFyZ2V0X3R5cGU7Ci0gICAgICAg
IHJlVGFyZ2V0QmluYXJ5LT5hdHRyaWJ1dGVfY2hhbmdlZC50YXJnZXRfaWQgPQotICAgICAgICAg
ICAgZXZlbnRUYXJnZXQtPnUuYXR0cmlidXRlX2NoYW5nZWQudGFyZ2V0X2lkOwotICAgICAgICBy
ZVRhcmdldEJpbmFyeS0+YXR0cmlidXRlX2NoYW5nZWQuZGlzcGxheV9tYXNrID0KLSAgICAgICAg
ICAgIGV2ZW50VGFyZ2V0LT51LmF0dHJpYnV0ZV9jaGFuZ2VkLmRpc3BsYXlfbWFzazsKLSAgICAg
ICAgcmVUYXJnZXRCaW5hcnktPmF0dHJpYnV0ZV9jaGFuZ2VkLmF0dHJpYnV0ZSA9Ci0gICAgICAg
ICAgICBldmVudFRhcmdldC0+dS5hdHRyaWJ1dGVfY2hhbmdlZC5hdHRyaWJ1dGU7Ci0gICAgICAg
IGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIEZhbHNlOwotICAgIH0KLQot
ICAgIHJldHVybiBUcnVlOwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGhpcmRfcGFydHkvbGliWE5WQ3RybC9OVkN0cmwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsL05WQ3RybC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3YmQ3YWI3YTMzODFiMDBmYTY0MDY5MGVmODUxNWE5ZmMwMjhlNDMz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsL05WQ3RybC5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNDM2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEwIE5W
SURJQSwgQ29ycG9yYXRpb24KLSAqCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm
cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0gKiBvZiB0aGlz
IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh
cmUiKSwgdG8gZGVhbAotICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGlu
Y2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotICogdG8gdXNlLCBjb3B5LCBt
b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2Vs
bAotICogY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo
b20gdGhlIFNvZnR3YXJlIGlzCi0gKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zOgotICoKLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl
IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKLSAqIHBhcmFn
cmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0
aW9ucyBvZiB0aGUKLSAqIFNvZnR3YXJlLgotICoKLSAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF
RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0gKiBJ
TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSwKLSAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO
T05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLSAqIEFVVEhPUlMgT1IgQ09Q
WVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIK
LSAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig
T1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi0gKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI
IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQotICogU09G
VFdBUkUuCi0gKi8KLQotI2lmbmRlZiBfX05WQ1RSTF9ICi0jZGVmaW5lIF9fTlZDVFJMX0gKLQot
I2luY2x1ZGUgPHN0ZGludC5oPgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qCi0gKiBBdHRy
aWJ1dGUgVGFyZ2V0cwotICoKLSAqIFRhcmdldHMgZGVmaW5lIGF0dHJpYnV0ZSBncm91cHMuICBG
b3IgZXhhbXBsZSwgc29tZSBhdHRyaWJ1dGVzIGFyZSBvbmx5Ci0gKiB2YWxpZCB0byBzZXQgb24g
YSBHUFUsIG90aGVycyBhcmUgb25seSB2YWxpZCB3aGVuIHRhbGtpbmcgYWJvdXQgYW4KLSAqIFgg
U2NyZWVuLiAgVGFyZ2V0IHR5cGVzIGFyZSB0aGVuIHdoYXQgaXMgdXNlZCB0byBpZGVudGlmeSB0
aGUgdGFyZ2V0Ci0gKiBncm91cCBvZiB0aGUgYXR0cmlidXRlIHlvdSB3aXNoIHRvIHNldC9xdWVy
eS4KLSAqCi0gKiBIZXJlIGFyZSB0aGUgc3VwcG9ydGVkIHRhcmdldCB0eXBlczoKLSAqLwotCi0j
ZGVmaW5lIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gMAotI2RlZmluZSBOVl9DVFJMX1RB
UkdFVF9UWVBFX0dQVSAxCi0jZGVmaW5lIE5WX0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NLIDIK
LSNkZWZpbmUgTlZfQ1RSTF9UQVJHRVRfVFlQRV9WQ1NDIDMgLyogVmlzdWFsIENvbXB1dGluZyBT
eXN0ZW0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HVkkgNAotI2RlZmluZSBOVl9D
VFJMX1RBUkdFVF9UWVBFX0NPT0xFUiA1IC8qIGUuZy4sIGZhbiAqLwotI2RlZmluZSBOVl9DVFJM
X1RBUkdFVF9UWVBFX1RIRVJNQUxfU0VOU09SIDYKLSNkZWZpbmUgTlZfQ1RSTF9UQVJHRVRfVFlQ
RV8zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSIDcKLSNkZWZpbmUgTlZfQ1RSTF9UQVJHRVRfVFlQ
RV9ESVNQTEFZIDgKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKgotICogQXR0cmlidXRlcwot
ICoKLSAqIFNvbWUgYXR0cmlidXRlcyBtYXkgb25seSBiZSByZWFkOyBzb21lIG1heSByZXF1aXJl
IGEgZGlzcGxheV9tYXNrCi0gKiBhcmd1bWVudCBhbmQgb3RoZXJzIG1heSBiZSB2YWxpZCBvbmx5
IGZvciBzcGVjaWZpYyB0YXJnZXQgdHlwZXMuCi0gKiBUaGlzIGluZm9ybWF0aW9uIGlzIGVuY29k
ZWQgaW4gdGhlICJwZXJtaXNzaW9uIiBjb21tZW50IGFmdGVyIGVhY2gKLSAqIGF0dHJpYnV0ZSAj
ZGVmaW5lLCBhbmQgY2FuIGJlIHF1ZXJpZWQgYXQgcnVuIHRpbWUgd2l0aAotICogWE5WQ1RSTFF1
ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXMoKSBhbmQvb3IKLSAqIFhOVkNUUkxRdWVyeVZhbGlkVGFy
Z2V0QXR0cmlidXRlVmFsdWVzKCkKLSAqCi0gKiBLZXkgdG8gSW50ZWdlciBBdHRyaWJ1dGUgIlBl
cm1pc3Npb25zIjoKLSAqCi0gKiBSOiBUaGUgYXR0cmlidXRlIGlzIHJlYWRhYmxlIChpbiBnZW5l
cmFsLCBhbGwgYXR0cmlidXRlcyB3aWxsIGJlCi0gKiAgICByZWFkYWJsZSkKLSAqCi0gKiBXOiBU
aGUgYXR0cmlidXRlIGlzIHdyaXRhYmxlIChhdHRyaWJ1dGVzIG1heSBub3QgYmUgd3JpdGFibGUg
Zm9yCi0gKiAgICB2YXJpb3VzIHJlYXNvbnM6IHRoZXkgcmVwcmVzZW50IHN0YXRpYyBzeXN0ZW0g
aW5mb3JtYXRpb24sIHRoZXkKLSAqICAgIGNhbiBvbmx5IGJlIGNoYW5nZWQgYnkgY2hhbmdpbmcg
YW4gWEY4NkNvbmZpZyBvcHRpb24sIGV0YykuCi0gKgotICogRDogVGhlIGF0dHJpYnV0ZSByZXF1
aXJlcyB0aGUgZGlzcGxheSBtYXNrIGFyZ3VtZW50LiAgVGhlCi0gKiAgICBhdHRyaWJ1dGVzIE5W
X0NUUkxfQ09OTkVDVEVEX0RJU1BMQVlTIGFuZCBOVl9DVFJMX0VOQUJMRURfRElTUExBWVMKLSAq
ICAgIHdpbGwgYmUgYSBiaXRtYXNrIG9mIHdoYXQgZGlzcGxheSBkZXZpY2VzIGFyZSBjb25uZWN0
ZWQgYW5kIHdoYXQKLSAqICAgIGRpc3BsYXkgZGV2aWNlcyBhcmUgZW5hYmxlZCBmb3IgdXNlIGlu
IFgsIHJlc3BlY3RpdmVseS4gIEVhY2ggYml0Ci0gKiAgICBpbiB0aGUgYml0bWFzayByZXByZXNl
bnRzIGEgZGlzcGxheSBkZXZpY2U7IGl0IGlzIHRoZXNlIGJpdHMgd2hpY2gKLSAqICAgIHNob3Vs
ZCBiZSB1c2VkIGFzIHRoZSBkaXNwbGF5X21hc2sgd2hlbiBkZWFsaW5nIHdpdGggYXR0cmlidXRl
cwotICogICAgZGVzaWduYXRlZCB3aXRoICJEIiBiZWxvdy4gIEZvciBhdHRyaWJ1dGVzIHRoYXQg
ZG8gbm90IHJlcXVpcmUgdGhlCi0gKiAgICBkaXNwbGF5IG1hc2ssIHRoZSBhcmd1bWVudCBpcyBp
Z25vcmVkLgotICoKLSAqICAgIEFsdGVybmF0aXZlbHksIE5WLUNPTlRST0wgdmVyc2lvbnMgMS4y
NyBhbmQgZ3JlYXRlciBhbGxvdyB0aGVzZQotICogICAgYXR0cmlidXRlcyB0byBiZSBhY2Nlc3Nl
ZCB2aWEgZGlzcGxheSB0YXJnZXQgdHlwZXMsIGluIHdoaWNoIGNhc2UKLSAqICAgIHRoZSBkaXNw
bGF5X21hc2sgaXMgaWdub3JlZC4KLSAqCi0gKiBHOiBUaGUgYXR0cmlidXRlIG1heSBiZSBxdWVy
aWVkIHVzaW5nIGFuIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVCi0gKiAgICB0YXJnZXQgdHlwZSB2
aWEgWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkuCi0gKgotICogRjogVGhlIGF0dHJpYnV0
ZSBtYXkgYmUgcXVlcmllZCB1c2luZyBhbiBOVl9DVFJMX1RBUkdFVF9UWVBFX0ZSQU1FTE9DSwot
ICogICAgdGFyZ2V0IHR5cGUgdmlhIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpLgotICoK
LSAqIFg6IFdoZW4gWGluZXJhbWEgaXMgZW5hYmxlZCwgdGhpcyBhdHRyaWJ1dGUgaXMga2VwdCBj
b25zaXN0ZW50IGFjcm9zcwotICogICAgYWxsIFBoeXNpY2FsIFggU2NyZWVuczsgIGFzc2lnbm1l
bnQgb2YgdGhpcyBhdHRyaWJ1dGUgd2lsbCBiZQotICogICAgYnJvYWRjYXN0IGJ5IHRoZSBOVklE
SUEgWCBEcml2ZXIgdG8gYWxsIFggU2NyZWVucy4KLSAqCi0gKiBWOiBUaGUgYXR0cmlidXRlIG1h
eSBiZSBxdWVyaWVkIHVzaW5nIGFuIE5WX0NUUkxfVEFSR0VUX1RZUEVfVkNTQwotICogICAgdGFy
Z2V0IHR5cGUgdmlhIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpLgotICoKLSAqIEk6IFRo
ZSBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdXNpbmcgYW4gTlZfQ1RSTF9UQVJHRVRfVFlQRV9H
VkkgdGFyZ2V0IHR5cGUKLSAqICAgIHZpYSBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKS4K
LSAqCi0gKiBROiBUaGUgYXR0cmlidXRlIGlzIGEgNjQtYml0IGludGVnZXIgYXR0cmlidXRlOyAg
dXNlIHRoZSA2NC1iaXQgdmVyc2lvbnMKLSAqICAgIG9mIHRoZSBhcHByb3ByaWF0ZSBxdWVyeSBp
bnRlcmZhY2VzLgotICoKLSAqIEM6IFRoZSBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdXNpbmcg
YW4gTlZfQ1RSTF9UQVJHRVRfVFlQRV9DT09MRVIgdGFyZ2V0Ci0gKiAgICB0eXBlIHZpYSBYTlZD
VFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKS4KLSAqCi0gKiBTOiBUaGUgYXR0cmlidXRlIG1heSBi
ZSBxdWVyaWVkIHVzaW5nIGFuIE5WX0NUUkxfVEFSR0VUX1RZUEVfVEhFUk1BTF9TRU5TT1IKLSAq
ICAgIHRhcmdldCB0eXBlIHZpYSBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKS4KLSAqCi0g
KiBUOiBUaGUgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHVzaW5nIGFuCi0gKiAgICBOVl9DVFJM
X1RBUkdFVF9UWVBFXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVIgdGFyZ2V0IHR5cGUKLSAqICAg
IHZpYSBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKS4KLSAqCi0gKiBOT1RFOiBVbmxlc3Mg
bWVudGlvbmVkIG90aGVyd2lzZSwgYWxsIGF0dHJpYnV0ZXMgbWF5IGJlIHF1ZXJpZWQgdXNpbmcK
LSAqICAgICAgIGFuIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0IHR5cGUgdmlh
Ci0gKiAgICAgICBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKS4KLSAqLwotCi0vKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKiovCi0KLS8qCi0gKiBJbnRlZ2VyIGF0dHJpYnV0ZXM6Ci0gKgotICogSW50ZWdl
ciBhdHRyaWJ1dGVzIGNhbiBiZSBxdWVyaWVkIHRocm91Z2ggdGhlIFhOVkNUUkxRdWVyeUF0dHJp
YnV0ZSgpIGFuZAotICogWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkgZnVuY3Rpb24gY2Fs
bHMuCi0gKgotICogSW50ZWdlciBhdHRyaWJ1dGVzIGNhbiBiZSBzZXQgdGhyb3VnaCB0aGUgWE5W
Q1RSTFNldEF0dHJpYnV0ZSgpIGFuZAotICogWE5WQ1RSTFNldFRhcmdldEF0dHJpYnV0ZSgpIGZ1
bmN0aW9uIGNhbGxzLgotICoKLSAqIFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIGFsbCBpbnRlZ2Vy
IGF0dHJpYnV0ZXMgY2FuIGJlIHF1ZXJpZWQvc2V0Ci0gKiB1c2luZyBhbiBOVl9DVFJMX1RBUkdF
VF9UWVBFX1hfU0NSRUVOIHRhcmdldC4gIEF0dHJpYnV0ZXMgdGhhdCBjYW5ub3QKLSAqIHRha2Ug
YW4gTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiBhbHNvIGNhbm5vdCBiZSBxdWVyaWVkL3Nl
dCB0aHJvdWdoCi0gKiBYTlZDVFJMUXVlcnlBdHRyaWJ1dGUoKS9YTlZDVFJMU2V0QXR0cmlidXRl
KCkgKFNpbmNlIHRoZXNlIGFzc3VtZQotICogYW4gWCBTY3JlZW4gdGFyZ2V0KS4KLSAqLwotCi0v
KgotICogTlZfQ1RSTF9GTEFUUEFORUxfU0NBTElORyAtIG5vdCBzdXBwb3J0ZWQKLSAqLwotCi0j
ZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX1NDQUxJTkcgMiAvKiBSV0RHICovCi0jZGVmaW5lIE5W
X0NUUkxfRkxBVFBBTkVMX1NDQUxJTkdfREVGQVVMVCAwCi0jZGVmaW5lIE5WX0NUUkxfRkxBVFBB
TkVMX1NDQUxJTkdfTkFUSVZFIDEKLSNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxfU0NBTElOR19T
Q0FMRUQgMgotI2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9TQ0FMSU5HX0NFTlRFUkVEIDMKLSNk
ZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxfU0NBTElOR19BU1BFQ1RfU0NBTEVEIDQKLQotLyoKLSAq
IE5WX0NUUkxfRkxBVFBBTkVMX0RJVEhFUklORyBpcyBkZXByZWNhdGVkOyBOVl9DVFJMX0RJVEhF
UklORyBzaG91bGQKLSAqIGJlIHVzZWQgaW5zdGVhZC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxf
RkxBVFBBTkVMX0RJVEhFUklORyAzIC8qIFJXREcgKi8KLSNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFO
RUxfRElUSEVSSU5HX0RFRkFVTFQgMAotI2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9ESVRIRVJJ
TkdfRU5BQkxFRCAxCi0jZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX0RJVEhFUklOR19ESVNBQkxF
RCAyCi0KLS8qCi0gKiBOVl9DVFJMX0RJVEhFUklORyAtIHRoZSByZXF1ZXN0ZWQgZGl0aGVyaW5n
IGNvbmZpZ3VyYXRpb247Ci0gKiBwb3NzaWJsZSB2YWx1ZXMgYXJlOgotICoKLSAqIDA6IGF1dG8g
ICAgICh0aGUgZHJpdmVyIHdpbGwgZGVjaWRlIHdoZW4gdG8gZGl0aGVyKQotICogMTogZW5hYmxl
ZCAgKHRoZSBkcml2ZXIgd2lsbCBhbHdheXMgZGl0aGVyIHdoZW4gcG9zc2libGUpCi0gKiAyOiBk
aXNhYmxlZCAodGhlIGRyaXZlciB3aWxsIG5ldmVyIGRpdGhlcikKLSAqLwotCi0jZGVmaW5lIE5W
X0NUUkxfRElUSEVSSU5HIDMgLyogUldERyAqLwotI2RlZmluZSBOVl9DVFJMX0RJVEhFUklOR19B
VVRPIDAKLSNkZWZpbmUgTlZfQ1RSTF9ESVRIRVJJTkdfRU5BQkxFRCAxCi0jZGVmaW5lIE5WX0NU
UkxfRElUSEVSSU5HX0RJU0FCTEVEIDIKLQotLyoKLSAqIE5WX0NUUkxfRElHSVRBTF9WSUJSQU5D
RSAtIHNldHMgdGhlIGRpZ2l0YWwgdmlicmFuY2UgbGV2ZWwgZm9yIHRoZQotICogc3BlY2lmaWVk
IGRpc3BsYXkgZGV2aWNlLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9ESUdJVEFMX1ZJQlJBTkNF
IDQgLyogUldERyAqLwotCi0vKgotICogTlZfQ1RSTF9CVVNfVFlQRSAtIHJldHVybnMgdGhlIGJ1
cyB0eXBlIHRocm91Z2ggd2hpY2ggdGhlIHNwZWNpZmllZCBkZXZpY2UKLSAqIGlzIGNvbm5lY3Rl
ZCB0byB0aGUgY29tcHV0ZXIuCi0gKiBXaGVuIHRoaXMgYXR0cmlidXRlIGlzIHF1ZXJpZWQgb24g
YW4gWCBzY3JlZW4gdGFyZ2V0LCB0aGUgYnVzIHR5cGUgb2YgdGhlCi0gKiBHUFUgZHJpdmluZyB0
aGUgWCBzY3JlZW4gaXMgcmV0dXJuZWQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0JVU19UWVBF
IDUgLyogUi0tR0kgKi8KLSNkZWZpbmUgTlZfQ1RSTF9CVVNfVFlQRV9BR1AgMAotI2RlZmluZSBO
Vl9DVFJMX0JVU19UWVBFX1BDSSAxCi0jZGVmaW5lIE5WX0NUUkxfQlVTX1RZUEVfUENJX0VYUFJF
U1MgMgotI2RlZmluZSBOVl9DVFJMX0JVU19UWVBFX0lOVEVHUkFURUQgMwotCi0vKgotICogTlZf
Q1RSTF9WSURFT19SQU0gLSByZXR1cm5zIHRoZSB0b3RhbCBhbW91bnQgb2YgbWVtb3J5IGF2YWls
YWJsZQotICogdG8gdGhlIHNwZWNpZmllZCBHUFUgKG9yIHRoZSBHUFUgZHJpdmluZyB0aGUgc3Bl
Y2lmaWVkIFgKLSAqIHNjcmVlbikuICBOb3RlOiBpZiB0aGUgR1BVIHN1cHBvcnRzIFR1cmJvQ2Fj
aGUoVE0pLCB0aGUgdmFsdWUKLSAqIHJlcG9ydGVkIG1heSBleGNlZWQgdGhlIGFtb3VudCBvZiB2
aWRlbyBtZW1vcnkgaW5zdGFsbGVkIG9uIHRoZQotICogR1BVLiAgVGhlIHZhbHVlIHJlcG9ydGVk
IGZvciBpbnRlZ3JhdGVkIEdQVXMgbWF5IGxpa2V3aXNlIGV4Y2VlZAotICogdGhlIGFtb3VudCBv
ZiBkZWRpY2F0ZWQgc3lzdGVtIG1lbW9yeSBzZXQgYXNpZGUgYnkgdGhlIHN5c3RlbQotICogQklP
UyBmb3IgdXNlIGJ5IHRoZSBpbnRlZ3JhdGVkIEdQVS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxf
VklERU9fUkFNIDYgLyogUi0tRyAqLwotCi0vKgotICogTlZfQ1RSTF9JUlEgLSByZXR1cm5zIHRo
ZSBpbnRlcnJ1cHQgcmVxdWVzdCBsaW5lIHVzZWQgYnkgdGhlIHNwZWNpZmllZAotICogZGV2aWNl
LgotICogV2hlbiB0aGlzIGF0dHJpYnV0ZSBpcyBxdWVyaWVkIG9uIGFuIFggc2NyZWVuIHRhcmdl
dCwgdGhlIElSUSBvZiB0aGUgR1BVCi0gKiBkcml2aW5nIHRoZSBYIHNjcmVlbiBpcyByZXR1cm5l
ZC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfSVJRIDcgLyogUi0tR0kgKi8KLQotLyoKLSAqIE5W
X0NUUkxfT1BFUkFUSU5HX1NZU1RFTSAtIHJldHVybnMgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24g
d2hpY2gKLSAqIHRoZSBYIHNlcnZlciBpcyBydW5uaW5nLgotICovCi0KLSNkZWZpbmUgTlZfQ1RS
TF9PUEVSQVRJTkdfU1lTVEVNIDggLyogUi0tRyAqLwotI2RlZmluZSBOVl9DVFJMX09QRVJBVElO
R19TWVNURU1fTElOVVggMAotI2RlZmluZSBOVl9DVFJMX09QRVJBVElOR19TWVNURU1fRlJFRUJT
RCAxCi0jZGVmaW5lIE5WX0NUUkxfT1BFUkFUSU5HX1NZU1RFTV9TVU5PUyAyCi0KLS8qCi0gKiBO
Vl9DVFJMX1NZTkNfVE9fVkJMQU5LIC0gZW5hYmxlcyBzeW5jIHRvIHZibGFuayBmb3IgT3BlbkdM
IGNsaWVudHMuCi0gKiBUaGlzIHNldHRpbmcgaXMgb25seSBhcHBsaWVkIHRvIE9wZW5HTCBjbGll
bnRzIHRoYXQgYXJlIHN0YXJ0ZWQKLSAqIGFmdGVyIHRoaXMgc2V0dGluZyBpcyBhcHBsaWVkLgot
ICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9TWU5DX1RPX1ZCTEFOSyA5IC8qIFJXLVggKi8KLSNkZWZp
bmUgTlZfQ1RSTF9TWU5DX1RPX1ZCTEFOS19PRkYgMAotI2RlZmluZSBOVl9DVFJMX1NZTkNfVE9f
VkJMQU5LX09OIDEKLQotLyoKLSAqIE5WX0NUUkxfTE9HX0FOSVNPIC0gZW5hYmxlcyBhbmlzb3Ry
b3BpYyBmaWx0ZXJpbmcgZm9yIE9wZW5HTAotICogY2xpZW50czsgb24gc29tZSBOVklESUEgaGFy
ZHdhcmUsIHRoaXMgY2FuIG9ubHkgYmUgZW5hYmxlZCBvcgotICogZGlzYWJsZWQ7IG9uIG90aGVy
IGhhcmR3YXJlIGRpZmZlcmVudCBsZXZlbHMgb2YgYW5pc290cm9waWMKLSAqIGZpbHRlcmluZyBj
YW4gYmUgc3BlY2lmaWVkLiAgVGhpcyBzZXR0aW5nIGlzIG9ubHkgYXBwbGllZCB0byBPcGVuR0wK
LSAqIGNsaWVudHMgdGhhdCBhcmUgc3RhcnRlZCBhZnRlciB0aGlzIHNldHRpbmcgaXMgYXBwbGll
ZC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfTE9HX0FOSVNPIDEwIC8qIFJXLVggKi8KLQotLyoK
LSAqIE5WX0NUUkxfRlNBQV9NT0RFIC0gdGhlIEZTQUEgc2V0dGluZyBmb3IgT3BlbkdMIGNsaWVu
dHM7IHBvc3NpYmxlCi0gKiBGU0FBIG1vZGVzOgotICoKLSAqIE5WX0NUUkxfRlNBQV9NT0RFXzJ4
ICAgICAiMnggQmlsaW5lYXIgTXVsdGlzYW1wbGluZyIKLSAqIE5WX0NUUkxfRlNBQV9NT0RFXzJ4
XzV0ICAiMnggUXVpbmN1bnggTXVsdGlzYW1wbGluZyIKLSAqIE5WX0NUUkxfRlNBQV9NT0RFXzE1
eDE1ICAiMS41IHggMS41IFN1cGVyc2FtcGxpbmciCi0gKiBOVl9DVFJMX0ZTQUFfTU9ERV8yeDIg
ICAgIjIgeCAyIFN1cGVyc2FtcGxpbmciCi0gKiBOVl9DVFJMX0ZTQUFfTU9ERV80eCAgICAgIjR4
IEJpbGluZWFyIE11bHRpc2FtcGxpbmciCi0gKiBOVl9DVFJMX0ZTQUFfTU9ERV80eF85dCAgIjR4
IEdhdXNzaWFuIE11bHRpc2FtcGxpbmciCi0gKiBOVl9DVFJMX0ZTQUFfTU9ERV84eCAgICAgIjJ4
IEJpbGluZWFyIE11bHRpc2FtcGxpbmcgYnkgNHggU3VwZXJzYW1wbGluZyIKLSAqIE5WX0NUUkxf
RlNBQV9NT0RFXzE2eCAgICAiNHggQmlsaW5lYXIgTXVsdGlzYW1wbGluZyBieSA0eCBTdXBlcnNh
bXBsaW5nIgotICogTlZfQ1RSTF9GU0FBX01PREVfOHhTICAgICI0eCBNdWx0aXNhbXBsaW5nIGJ5
IDJ4IFN1cGVyc2FtcGxpbmciCi0gKgotICogVGhpcyBzZXR0aW5nIGlzIG9ubHkgYXBwbGllZCB0
byBPcGVuR0wgY2xpZW50cyB0aGF0IGFyZSBzdGFydGVkCi0gKiBhZnRlciB0aGlzIHNldHRpbmcg
aXMgYXBwbGllZC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfRlNBQV9NT0RFIDExIC8qIFJXLVgg
Ki8KLSNkZWZpbmUgTlZfQ1RSTF9GU0FBX01PREVfTk9ORSAwCi0jZGVmaW5lIE5WX0NUUkxfRlNB
QV9NT0RFXzJ4IDEKLSNkZWZpbmUgTlZfQ1RSTF9GU0FBX01PREVfMnhfNXQgMgotI2RlZmluZSBO
Vl9DVFJMX0ZTQUFfTU9ERV8xNXgxNSAzCi0jZGVmaW5lIE5WX0NUUkxfRlNBQV9NT0RFXzJ4MiA0
Ci0jZGVmaW5lIE5WX0NUUkxfRlNBQV9NT0RFXzR4IDUKLSNkZWZpbmUgTlZfQ1RSTF9GU0FBX01P
REVfNHhfOXQgNgotI2RlZmluZSBOVl9DVFJMX0ZTQUFfTU9ERV84eCA3Ci0jZGVmaW5lIE5WX0NU
UkxfRlNBQV9NT0RFXzE2eCA4Ci0jZGVmaW5lIE5WX0NUUkxfRlNBQV9NT0RFXzh4UyA5Ci0jZGVm
aW5lIE5WX0NUUkxfRlNBQV9NT0RFXzh4USAxMAotI2RlZmluZSBOVl9DVFJMX0ZTQUFfTU9ERV8x
NnhTIDExCi0jZGVmaW5lIE5WX0NUUkxfRlNBQV9NT0RFXzE2eFEgMTIKLSNkZWZpbmUgTlZfQ1RS
TF9GU0FBX01PREVfMzJ4UyAxMwotI2RlZmluZSBOVl9DVFJMX0ZTQUFfTU9ERV8zMnggMTQKLSNk
ZWZpbmUgTlZfQ1RSTF9GU0FBX01PREVfNjR4UyAxNQotI2RlZmluZSBOVl9DVFJMX0ZTQUFfTU9E
RV9NQVggTlZfQ1RSTF9GU0FBX01PREVfNjR4UwotCi0vKgotICogTlZfQ1RSTF9URVhUVVJFX1NI
QVJQRU4gLSBlbmFibGVzIHRleHR1cmUgc2hhcnBlbmluZyBmb3IgT3BlbkdMCi0gKiBjbGllbnRz
LiAgVGhpcyBzZXR0aW5nIGlzIG9ubHkgYXBwbGllZCB0byBPcGVuR0wgY2xpZW50cyB0aGF0IGFy
ZQotICogc3RhcnRlZCBhZnRlciB0aGlzIHNldHRpbmcgaXMgYXBwbGllZC4KLSAqLwotCi0jZGVm
aW5lIE5WX0NUUkxfVEVYVFVSRV9TSEFSUEVOIDEyIC8qIFJXLVggKi8KLSNkZWZpbmUgTlZfQ1RS
TF9URVhUVVJFX1NIQVJQRU5fT0ZGIDAKLSNkZWZpbmUgTlZfQ1RSTF9URVhUVVJFX1NIQVJQRU5f
T04gMQotCi0vKgotICogTlZfQ1RSTF9VQkIgLSByZXR1cm5zIHdoZXRoZXIgVUJCIGlzIGVuYWJs
ZWQgZm9yIHRoZSBzcGVjaWZpZWQgWAotICogc2NyZWVuLgotICovCi0KLSNkZWZpbmUgTlZfQ1RS
TF9VQkIgMTMgLyogUi0tICovCi0jZGVmaW5lIE5WX0NUUkxfVUJCX09GRiAwCi0jZGVmaW5lIE5W
X0NUUkxfVUJCX09OIDEKLQotLyoKLSAqIE5WX0NUUkxfT1ZFUkxBWSAtIHJldHVybnMgd2hldGhl
ciB0aGUgUkdCIG92ZXJsYXkgaXMgZW5hYmxlZCBmb3IKLSAqIHRoZSBzcGVjaWZpZWQgWCBzY3Jl
ZW4uCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX09WRVJMQVkgMTQgLyogUi0tICovCi0jZGVmaW5l
IE5WX0NUUkxfT1ZFUkxBWV9PRkYgMAotI2RlZmluZSBOVl9DVFJMX09WRVJMQVlfT04gMQotCi0v
KgotICogTlZfQ1RSTF9TVEVSRU8gLSByZXR1cm5zIHdoZXRoZXIgc3RlcmVvIChhbmQgd2hhdCB0
eXBlKSBpcyBlbmFibGVkCi0gKiBmb3IgdGhlIHNwZWNpZmllZCBYIHNjcmVlbi4KLSAqLwotCi0j
ZGVmaW5lIE5WX0NUUkxfU1RFUkVPIDE2IC8qIFItLSAqLwotI2RlZmluZSBOVl9DVFJMX1NURVJF
T19PRkYgMAotI2RlZmluZSBOVl9DVFJMX1NURVJFT19EREMgMQotI2RlZmluZSBOVl9DVFJMX1NU
RVJFT19CTFVFTElORSAyCi0jZGVmaW5lIE5WX0NUUkxfU1RFUkVPX0RJTiAzCi0jZGVmaW5lIE5W
X0NUUkxfU1RFUkVPX1BBU1NJVkVfRVlFX1BFUl9EUFkgNAotI2RlZmluZSBOVl9DVFJMX1NURVJF
T19WRVJUSUNBTF9JTlRFUkxBQ0VEIDUKLSNkZWZpbmUgTlZfQ1RSTF9TVEVSRU9fQ09MT1JfSU5U
RVJMQUNFRCA2Ci0jZGVmaW5lIE5WX0NUUkxfU1RFUkVPX0hPUklaT05UQUxfSU5URVJMQUNFRCA3
Ci0jZGVmaW5lIE5WX0NUUkxfU1RFUkVPX0NIRUNLRVJCT0FSRF9QQVRURVJOIDgKLSNkZWZpbmUg
TlZfQ1RSTF9TVEVSRU9fSU5WRVJTRV9DSEVDS0VSQk9BUkRfUEFUVEVSTiA5Ci0jZGVmaW5lIE5W
X0NUUkxfU1RFUkVPXzNEX1ZJU0lPTiAxMAotI2RlZmluZSBOVl9DVFJMX1NURVJFT18zRF9WSVNJ
T05fUFJPIDExCi0KLS8qCi0gKiBOVl9DVFJMX0VNVUxBVEUgLSBjb250cm9scyBPcGVuR0wgc29m
dHdhcmUgZW11bGF0aW9uIG9mIGZ1dHVyZQotICogTlZJRElBIEdQVXMuCi0gKi8KLQotI2RlZmlu
ZSBOVl9DVFJMX0VNVUxBVEUgMTcgLyogUlctICovCi0jZGVmaW5lIE5WX0NUUkxfRU1VTEFURV9O
T05FIDAKLQotLyoKLSAqIE5WX0NUUkxfVFdJTlZJRVcgLSByZXR1cm5zIHdoZXRoZXIgVHdpblZp
ZXcgaXMgZW5hYmxlZCBmb3IgdGhlCi0gKiBzcGVjaWZpZWQgWCBzY3JlZW4uCi0gKi8KLQotI2Rl
ZmluZSBOVl9DVFJMX1RXSU5WSUVXIDE4IC8qIFItLSAqLwotI2RlZmluZSBOVl9DVFJMX1RXSU5W
SUVXX05PVF9FTkFCTEVEIDAKLSNkZWZpbmUgTlZfQ1RSTF9UV0lOVklFV19FTkFCTEVEIDEKLQot
LyoKLSAqIE5WX0NUUkxfQ09OTkVDVEVEX0RJU1BMQVlTIC0gcmV0dXJucyBhIGRpc3BsYXkgbWFz
ayBpbmRpY2F0aW5nIHRoZSBsYXN0Ci0gKiBjYWNoZWQgc3RhdGUgb2YgdGhlIGRpc3BsYXkgZGV2
aWNlcyBjb25uZWN0ZWQgdG8gdGhlIEdQVSBvciBHUFUgZHJpdmluZwotICogdGhlIHNwZWNpZmll
ZCBYIHNjcmVlbi4KLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdo
IFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VU
X1RZUEVfR1BVIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0LgotICovCi0K
LSNkZWZpbmUgTlZfQ1RSTF9DT05ORUNURURfRElTUExBWVMgMTkgLyogUi0tRyAqLwotCi0vKgot
ICogTlZfQ1RSTF9FTkFCTEVEX0RJU1BMQVlTIC0gcmV0dXJucyBhIGRpc3BsYXkgbWFzayBpbmRp
Y2F0aW5nIHdoYXQKLSAqIGRpc3BsYXkgZGV2aWNlcyBhcmUgZW5hYmxlZCBmb3IgdXNlIG9uIHRo
ZSBzcGVjaWZpZWQgWCBzY3JlZW4gb3IKLSAqIEdQVS4KLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBt
YXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCi0gKiB1
c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9T
Q1JFRU4gdGFyZ2V0LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9FTkFCTEVEX0RJU1BMQVlTIDIw
IC8qIFItLUcgKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoKLSAqIEludGVnZXIgYXR0cmli
dXRlcyBzcGVjaWZpYyB0byBjb25maWd1cmluZyBGcmFtZSBMb2NrIG9uIGJvYXJkcyB0aGF0Ci0g
KiBzdXBwb3J0IGl0LgotICovCi0KLS8qCi0gKiBOVl9DVFJMX0ZSQU1FTE9DSyAtIHJldHVybnMg
d2hldGhlciB0aGUgdW5kZXJseWluZyBHUFUgc3VwcG9ydHMKLSAqIEZyYW1lIExvY2suICBBbGwg
b2YgdGhlIG90aGVyIGZyYW1lIGxvY2sgYXR0cmlidXRlcyBhcmUgb25seQotICogYXBwbGljYWJs
ZSBpZiBOVl9DVFJMX0ZSQU1FTE9DSyBpcyBfU1VQUE9SVEVELgotICoKLSAqIFRoaXMgYXR0cmli
dXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkK
LSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQ
RV9YX1NDUkVFTiB0YXJnZXQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DSyAyMSAv
KiBSLS1HICovCi0jZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX05PVF9TVVBQT1JURUQgMAotI2Rl
ZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19TVVBQT1JURUQgMQotCi0vKgotICogTlZfQ1RSTF9GUkFN
RUxPQ0tfTUFTVEVSIC0gZ2V0L3NldCB3aGljaCBkaXNwbGF5IGRldmljZSB0byB1c2UKLSAqIGFz
IHRoZSBmcmFtZSBsb2NrIG1hc3RlciBmb3IgdGhlIGVudGlyZSBzeW5jIGdyb3VwLiAgTm90ZSB0
aGF0IG9ubHkKLSAqIG9uZSBub2RlIGluIHRoZSBzeW5jIGdyb3VwIHNob3VsZCBiZSBjb25maWd1
cmVkIGFzIHRoZSBtYXN0ZXIuCi0gKgotICogVGhpcyBhdHRyaWJ1dGUgY2FuIG9ubHkgYmUgcXVl
cmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5W
X0NUUkxfVEFSR0VUX1RZUEVfR1BVIHRhcmdldC4gIFRoaXMgYXR0cmlidXRlIGNhbm5vdCBiZQot
ICogcXVlcmllZCB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4uCi0gKi8KLQot
I2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19NQVNURVIgMjIgLyogUlctRyAqLwotCi0vKiBUaGVz
ZSBhcmUgZGVwcmVjYXRlZC4gIE5WX0NUUkxfRlJBTUVMT0NLX01BU1RFUiBub3cgdGFrZXMgYW5k
Ci0gICByZXR1cm5zIGEgZGlzcGxheSBtYXNrIGFzIHZhbHVlLiAqLwotI2RlZmluZSBOVl9DVFJM
X0ZSQU1FTE9DS19NQVNURVJfRkFMU0UgMAotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19NQVNU
RVJfVFJVRSAxCi0KLS8qCi0gKiBOVl9DVFJMX0ZSQU1FTE9DS19QT0xBUklUWSAtIHN5bmMgZWl0
aGVyIHRvIHRoZSByaXNpbmcgZWRnZSBvZiB0aGUKLSAqIGZyYW1lIGxvY2sgcHVsc2UsIHRoZSBm
YWxsaW5nIGVkZ2Ugb2YgdGhlIGZyYW1lIGxvY2sgcHVsc2Ugb3IgYm90aC4KLSAqCi0gKiBUaGlz
IGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJp
YnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NLIG9yIE5WX0NU
UkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4KLSAqIHRhcmdldC4KLSAqLwotCi0jZGVmaW5lIE5WX0NU
UkxfRlJBTUVMT0NLX1BPTEFSSVRZIDIzIC8qIFJXLUYgKi8KLSNkZWZpbmUgTlZfQ1RSTF9GUkFN
RUxPQ0tfUE9MQVJJVFlfUklTSU5HX0VER0UgMHgxCi0jZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NL
X1BPTEFSSVRZX0ZBTExJTkdfRURHRSAweDIKLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfUE9M
QVJJVFlfQk9USF9FREdFUyAweDMKLQotLyoKLSAqIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfREVM
QVkgLSBkZWxheSBiZXR3ZWVuIHRoZSBmcmFtZSBsb2NrIHB1bHNlCi0gKiBhbmQgdGhlIEdQVSBz
eW5jLiAgVGhpcyB2YWx1ZSBtdXN0IGJlIG11bHRpcGxpZWQgYnkKLSAqIE5WX0NUUkxfRlJBTUVM
T0NLX1NZTkNfREVMQVlfUkVTT0xVVElPTiB0byBkZXRlcm1pbmUgdGhlIHN5bmMgZGVsYXkgaW4K
LSAqIG5hbm9zZWNvbmRzLgotICoKLSAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRo
cm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9U
QVJHRVRfVFlQRV9GUkFNRUxPQ0sgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTgotICog
dGFyZ2V0LgotICoKLSAqIFVTQUdFIE5PREU6IE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfREVMQVlf
TUFYIGFuZAotICogICAgICAgICAgICAgTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19ERUxBWV9GQUNU
T1IgYXJlIGRlcHJlY2F0ZWQuCi0gKiAgICAgICAgICAgICBUaGUgU3luYyBEZWxheSBfTUFYIGFu
ZCBfRkFDVE9SIGFyZSBkaWZmZXJlbnQgZm9yIGRpZmZlcmVudAotICogICAgICAgICAgICAgR1N5
bmMgcHJvZHVjdHMgYW5kIHNvLCB0byBiZSBjb3JyZWN0LCB0aGUgdmFsaWQgdmFsdWVzIGZvcgot
ICogICAgICAgICAgICAgTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19ERUxBWSBtdXN0IGJlIHF1ZXJp
ZWQgdG8gZ2V0IHRoZSByYW5nZQotICogICAgICAgICAgICAgb2YgYWNjZXB0YWJsZSBzeW5jIGRl
bGF5IHZhbHVlcywgYW5kCi0gKiAgICAgICAgICAgICBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DX0RF
TEFZX1JFU09MVVRJT04gbXVzdCBiZSBxdWVyaWVkIHRvCi0gKiAgICAgICAgICAgICBvYnRhaW4g
dGhlIGNvcnJlY3QgZmFjdG9yLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfU1lO
Q19ERUxBWSAyNCAgICAgICAgICAgLyogUlctRiAqLwotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9D
S19TWU5DX0RFTEFZX01BWCAyMDQ3ICAgICAvLyBkZXByZWNhdGVkCi0jZGVmaW5lIE5WX0NUUkxf
RlJBTUVMT0NLX1NZTkNfREVMQVlfRkFDVE9SIDcuODEgIC8vIGRlcHJlY2F0ZWQKLQotLyoKLSAq
IE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfSU5URVJWQUwgLSBob3cgbWFueSBob3VzZSBzeW5jIHB1
bHNlcwotICogYmV0d2VlbiB0aGUgZnJhbWUgbG9jayBzeW5jIGdlbmVyYXRpb24gKDAgPT0gc3lu
YyBldmVyeSBob3VzZSBzeW5jKTsKLSAqIHRoaXMgb25seSBhcHBsaWVzIHRvIHRoZSBtYXN0ZXIg
d2hlbiByZWNlaXZpbmcgaG91c2Ugc3luYy4KLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUg
cXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCi0gKiB1c2luZyBh
IE5WX0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NLIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9T
Q1JFRU4KLSAqIHRhcmdldC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNf
SU5URVJWQUwgMjUgLyogUlctRiAqLwotCi0vKgotICogTlZfQ1RSTF9GUkFNRUxPQ0tfUE9SVDBf
U1RBVFVTIC0gc3RhdHVzIG9mIHRoZSByajQ1IHBvcnQwLgotICoKLSAqIFRoaXMgYXR0cmlidXRl
IG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKLSAq
IHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9GUkFNRUxPQ0sgb3IgTlZfQ1RSTF9UQVJHRVRf
VFlQRV9YX1NDUkVFTgotICogdGFyZ2V0LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxP
Q0tfUE9SVDBfU1RBVFVTIDI2IC8qIFItLUYgKi8KLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tf
UE9SVDBfU1RBVFVTX0lOUFVUIDAKLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfUE9SVDBfU1RB
VFVTX09VVFBVVCAxCi0KLS8qCi0gKiBOVl9DVFJMX0ZSQU1FTE9DS19QT1JUMV9TVEFUVVMgLSBz
dGF0dXMgb2YgdGhlIHJqNDUgcG9ydDEuCi0gKgotICogVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1
ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQotICogdXNpbmcgYSBO
Vl9DVFJMX1RBUkdFVF9UWVBFX0ZSQU1FTE9DSyBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NS
RUVOCi0gKiB0YXJnZXQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19QT1JUMV9T
VEFUVVMgMjcgLyogUi0tRiAqLwotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19QT1JUMV9TVEFU
VVNfSU5QVVQgMAotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19QT1JUMV9TVEFUVVNfT1VUUFVU
IDEKLQotLyoKLSAqIE5WX0NUUkxfRlJBTUVMT0NLX0hPVVNFX1NUQVRVUyAtIHJldHVybnMgd2hl
dGhlciBvciBub3QgdGhlIGhvdXNlCi0gKiBzeW5jIHNpZ25hbCB3YXMgZGV0ZWN0ZWQgb24gdGhl
IEJOQyBjb25uZWN0b3Igb2YgdGhlIGZyYW1lIGxvY2sKLSAqIGJvYXJkLgotICoKLSAqIFRoaXMg
YXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmli
dXRlKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9GUkFNRUxPQ0sgb3IgTlZfQ1RS
TF9UQVJHRVRfVFlQRV9YX1NDUkVFTgotICogdGFyZ2V0LgotICovCi0KLSNkZWZpbmUgTlZfQ1RS
TF9GUkFNRUxPQ0tfSE9VU0VfU1RBVFVTIDI4IC8qIFItLUYgKi8KLSNkZWZpbmUgTlZfQ1RSTF9G
UkFNRUxPQ0tfSE9VU0VfU1RBVFVTX05PVF9ERVRFQ1RFRCAwCi0jZGVmaW5lIE5WX0NUUkxfRlJB
TUVMT0NLX0hPVVNFX1NUQVRVU19ERVRFQ1RFRCAxCi0KLS8qCi0gKiBOVl9DVFJMX0ZSQU1FTE9D
S19TWU5DIC0gZW5hYmxlL2Rpc2FibGUgdGhlIHN5bmNpbmcgb2YgZGlzcGxheQotICogZGV2aWNl
cyB0byB0aGUgZnJhbWUgbG9jayBwdWxzZSBhcyBzcGVjaWZpZWQgYnkgcHJldmlvdXMgY2FsbHMg
dG8KLSAqIE5WX0NUUkxfRlJBTUVMT0NLX01BU1RFUiBhbmQgTlZfQ1RSTF9GUkFNRUxPQ0tfU0xB
VkVTLgotICoKLSAqIFRoaXMgYXR0cmlidXRlIGNhbiBvbmx5IGJlIHF1ZXJpZWQgdGhyb3VnaCBY
TlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9U
WVBFX0dQVSB0YXJnZXQuICBUaGlzIGF0dHJpYnV0ZSBjYW5ub3QgYmUKLSAqIHF1ZXJpZWQgdXNp
bmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOLgotICovCi0KLSNkZWZpbmUgTlZfQ1RS
TF9GUkFNRUxPQ0tfU1lOQyAyOSAvKiBSVy1HICovCi0jZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NL
X1NZTkNfRElTQUJMRSAwCi0jZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfRU5BQkxFIDEK
LQotLyoKLSAqIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfUkVBRFkgLSByZXBvcnRzIHdoZXRoZXIg
YSBmcmFtZSBsb2NrCi0gKiBib2FyZCBpcyByZWNlaXZpbmcgc3luYyAocmVnYXJkbGVzcyBvZiB3
aGV0aGVyIG9yIG5vdCBhbnkgZGlzcGxheQotICogZGV2aWNlcyBhcmUgdXNpbmcgdGhlIHN5bmMp
LgotICoKLSAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1
ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9GUkFN
RUxPQ0sgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTgotICogdGFyZ2V0LgotICovCi0K
LSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19SRUFEWSAzMCAvKiBSLS1GICovCi0jZGVm
aW5lIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfUkVBRFlfRkFMU0UgMAotI2RlZmluZSBOVl9DVFJM
X0ZSQU1FTE9DS19TWU5DX1JFQURZX1RSVUUgMQotCi0vKgotICogTlZfQ1RSTF9GUkFNRUxPQ0tf
U1RFUkVPX1NZTkMgLSB0aGlzIGluZGljYXRlcyB0aGF0IHRoZSBHUFUgc3RlcmVvCi0gKiBzaWdu
YWwgaXMgaW4gc3luYyB3aXRoIHRoZSBmcmFtZSBsb2NrIHN0ZXJlbyBzaWduYWwuCi0gKgotICog
VGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRB
dHRyaWJ1dGUoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSBvciBOVl9DVFJM
X1RBUkdFVF9UWVBFX1hfU0NSRUVOCi0gKiB0YXJnZXQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJM
X0ZSQU1FTE9DS19TVEVSRU9fU1lOQyAzMSAvKiBSLS1HICovCi0jZGVmaW5lIE5WX0NUUkxfRlJB
TUVMT0NLX1NURVJFT19TWU5DX0ZBTFNFIDAKLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfU1RF
UkVPX1NZTkNfVFJVRSAxCi0KLS8qCi0gKiBOVl9DVFJMX0ZSQU1FTE9DS19URVNUX1NJR05BTCAt
IHRvIHRlc3QgdGhlIGNvbm5lY3Rpb25zIGluIHRoZSBzeW5jCi0gKiBncm91cCwgdGVsbCB0aGUg
bWFzdGVyIHRvIGVuYWJsZSBhIHRlc3Qgc2lnbmFsLCB0aGVuIHF1ZXJ5IHBvcnRbMDFdCi0gKiBz
dGF0dXMgYW5kIHN5bmNfcmVhZHkgb24gYWxsIHNsYXZlcy4gIFdoZW4gZG9uZSwgdGVsbCB0aGUg
bWFzdGVyIHRvCi0gKiBkaXNhYmxlIHRoZSB0ZXN0IHNpZ25hbC4gIFRlc3Qgc2lnbmFsIHNob3Vs
ZCBvbmx5IGJlIG1hbmlwdWxhdGVkCi0gKiB3aGlsZSBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DIGlz
IGVuYWJsZWQuCi0gKgotICogVGhlIFRFU1RfU0lHTkFMIGlzIGFsc28gdXNlZCB0byByZXNldCB0
aGUgVW5pdmVyc2FsIEZyYW1lIENvdW50IChhcwotICogcmV0dXJuZWQgYnkgdGhlIGdsWFF1ZXJ5
RnJhbWVDb3VudE5WKCkgZnVuY3Rpb24gaW4gdGhlCi0gKiBHTFhfTlZfc3dhcF9ncm91cCBleHRl
bnNpb24pLiAgTm90ZTogZm9yIGJlc3QgYWNjdXJhY3kgb2YgdGhlCi0gKiBVbml2ZXJzYWwgRnJh
bWUgQ291bnQsIGl0IGlzIHJlY29tbWVuZGVkIHRvIHRvZ2dsZSB0aGUgVEVTVF9TSUdOQUwKLSAq
IG9uIGFuZCBvZmYgYWZ0ZXIgZW5hYmxpbmcgZnJhbWUgbG9jay4KLSAqCi0gKiBUaGlzIGF0dHJp
YnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgp
Ci0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIG9yIE5WX0NUUkxfVEFSR0VUX1RZ
UEVfWF9TQ1JFRU4gdGFyZ2V0LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfVEVT
VF9TSUdOQUwgMzIgLyogUlctRyAqLwotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19URVNUX1NJ
R05BTF9ESVNBQkxFIDAKLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfVEVTVF9TSUdOQUxfRU5B
QkxFIDEKLQotLyoKLSAqIE5WX0NUUkxfRlJBTUVMT0NLX0VUSEVSTkVUX0RFVEVDVEVEIC0gVGhl
IGZyYW1lIGxvY2sgYm9hcmRzIGFyZQotICogY2FibGVkIHRvZ2V0aGVyIHVzaW5nIHJlZ3VsYXIg
Y2F0NSBjYWJsZSwgY29ubmVjdGluZyB0byByajQ1IHBvcnRzCi0gKiBvbiB0aGUgYmFja3BsYW5l
IG9mIHRoZSBjYXJkLiAgVGhlcmUgaXMgc29tZSBjb25jZXJuIHRoYXQgdXNlcnMgbWF5Ci0gKiB0
aGluayB0aGVzZSBhcmUgZXRoZXJuZXQgcG9ydHMgYW5kIGNvbm5lY3QgdGhlbSB0byBhCi0gKiBy
b3V0ZXIvaHViL2V0Yy4gIFRoZSBoYXJkd2FyZSBjYW4gZGV0ZWN0IHRoaXMgYW5kIHdpbGwgc2h1
dCBvZmYgdG8KLSAqIHByZXZlbnQgZGFtYWdlIChlaXRoZXIgdG8gaXRzZWxmIG9yIHRvIHRoZSBy
b3V0ZXIpLgotICogTlZfQ1RSTF9GUkFNRUxPQ0tfRVRIRVJORVRfREVURUNURUQgbWF5IGJlIGNh
bGxlZCB0byBmaW5kIG91dCBpZgotICogZXRoZXJuZXQgaXMgY29ubmVjdGVkIHRvIG9uZSBvZiB0
aGUgcmo0NSBwb3J0cy4gIEFuIGFwcHJvcHJpYXRlCi0gKiBlcnJvciBtZXNzYWdlIHNob3VsZCB0
aGVuIGJlIGRpc3BsYXllZC4gIFRoZSBfUE9SVDAgYW5kIF9QT1JUMQotICogdmFsdWVzIG1heSBi
ZSBvcidlZCB0b2dldGhlci4KLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0
aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxf
VEFSR0VUX1RZUEVfRlJBTUVMT0NLIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4KLSAq
IHRhcmdldC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX0VUSEVSTkVUX0RFVEVD
VEVEIDMzIC8qIFItLUYgKi8KLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfRVRIRVJORVRfREVU
RUNURURfTk9ORSAwCi0jZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX0VUSEVSTkVUX0RFVEVDVEVE
X1BPUlQwIDB4MQotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19FVEhFUk5FVF9ERVRFQ1RFRF9Q
T1JUMSAweDIKLQotLyoKLSAqIE5WX0NUUkxfRlJBTUVMT0NLX1ZJREVPX01PREUgLSBnZXQvc2V0
IHdoYXQgdmlkZW8gbW9kZSBpcyB1c2VkCi0gKiB0byBpbnRlcnBlcmF0ZSB0aGUgaG91c2Ugc3lu
YyBzaWduYWwuICBUaGlzIHNob3VsZCBvbmx5IGJlIHNldAotICogb24gdGhlIG1hc3Rlci4KLSAq
Ci0gKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRh
cmdldEF0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NL
IG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4KLSAqIHRhcmdldC4KLSAqLwotCi0jZGVm
aW5lIE5WX0NUUkxfRlJBTUVMT0NLX1ZJREVPX01PREUgMzQgLyogUlctRiAqLwotI2RlZmluZSBO
Vl9DVFJMX0ZSQU1FTE9DS19WSURFT19NT0RFX05PTkUgMAotI2RlZmluZSBOVl9DVFJMX0ZSQU1F
TE9DS19WSURFT19NT0RFX1RUTCAxCi0jZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1ZJREVPX01P
REVfTlRTQ1BBTFNFQ0FNIDIKLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfVklERU9fTU9ERV9I
RFRWIDMKLQotLyoKLSAqIER1cmluZyBGUkFNRUxPQ0sgYnJpbmctdXAsIHRoZSBhYm92ZSB2YWx1
ZXMgd2VyZSByZWRlZmluZWQgdG8KLSAqIHRoZXNlOgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9G
UkFNRUxPQ0tfVklERU9fTU9ERV9DT01QT1NJVEVfQVVUTyAwCi0jZGVmaW5lIE5WX0NUUkxfRlJB
TUVMT0NLX1ZJREVPX01PREVfVFRMIDEKLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfVklERU9f
TU9ERV9DT01QT1NJVEVfQklfTEVWRUwgMgotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19WSURF
T19NT0RFX0NPTVBPU0lURV9UUklfTEVWRUwgMwotCi0vKgotICogTlZfQ1RSTF9GUkFNRUxPQ0tf
U1lOQ19SQVRFIC0gdGhpcyBpcyB0aGUgcmVmcmVzaCByYXRlIHRoYXQgdGhlCi0gKiBmcmFtZSBs
b2NrIGJvYXJkIGlzIHNlbmRpbmcgdG8gdGhlIEdQVSwgaW4gbWlsbGlIei4KLSAqCi0gKiBUaGlz
IGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJp
YnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NLIG9yIE5WX0NU
UkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4KLSAqIHRhcmdldC4KLSAqLwotCi0jZGVmaW5lIE5WX0NU
UkxfRlJBTUVMT0NLX1NZTkNfUkFURSAzNSAvKiBSLS1GICovCi0KLS8qKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
Ki8KLQotLyoKLSAqIE5WX0NUUkxfRk9SQ0VfR0VORVJJQ19DUFUgLSBpbmhpYml0IHRoZSB1c2Ug
b2YgQ1BVIHNwZWNpZmljCi0gKiBmZWF0dXJlcyBzdWNoIGFzIE1NWCwgU1NFLCBvciAzRE5PVyEg
Zm9yIE9wZW5HTCBjbGllbnRzOyB0aGlzCi0gKiBvcHRpb24gbWF5IHJlc3VsdCBpbiBwZXJmb3Jt
YW5jZSBsb3NzLCBidXQgbWF5IGJlIHVzZWZ1bCBpbgotICogY29uanVuY3Rpb24gd2l0aCBzb2Z0
d2FyZSBzdWNoIGFzIHRoZSBWYWxncmluZCBtZW1vcnkgZGVidWdnZXIuCi0gKiBUaGlzIHNldHRp
bmcgaXMgb25seSBhcHBsaWVkIHRvIE9wZW5HTCBjbGllbnRzIHRoYXQgYXJlIHN0YXJ0ZWQKLSAq
IGFmdGVyIHRoaXMgc2V0dGluZyBpcyBhcHBsaWVkLgotICoKLSAqIFVTQUdFIE5PVEU6IFRoaXMg
YXR0cmlidXRlIGlzIGRlcHJlY2F0ZWQuIENQVSBjb21wYXRpYmlsaXR5IGlzIG5vdwotICogICAg
ICAgICAgICAgY2hlY2tlZCBlYWNoIHRpbWUgZHVyaW5nIGluaXRpYWxpemF0aW9uLgotICovCi0K
LSNkZWZpbmUgTlZfQ1RSTF9GT1JDRV9HRU5FUklDX0NQVSAzNyAvKiBSVy1YICovCi0jZGVmaW5l
IE5WX0NUUkxfRk9SQ0VfR0VORVJJQ19DUFVfRElTQUJMRSAwCi0jZGVmaW5lIE5WX0NUUkxfRk9S
Q0VfR0VORVJJQ19DUFVfRU5BQkxFIDEKLQotLyoKLSAqIE5WX0NUUkxfT1BFTkdMX0FBX0xJTkVf
R0FNTUEgLSBmb3IgT3BlbkdMIGNsaWVudHMsIGFsbG93Ci0gKiBHYW1tYS1jb3JyZWN0ZWQgYW50
aWFsaWFzZWQgbGluZXMgdG8gY29uc2lkZXIgdmFyaWFuY2VzIGluIHRoZQotICogY29sb3IgZGlz
cGxheSBjYXBhYmlsaXRpZXMgb2Ygb3V0cHV0IGRldmljZXMgd2hlbiByZW5kZXJpbmcgc21vb3Ro
Ci0gKiBsaW5lcy4gIE9ubHkgYXZhaWxhYmxlIG9uIHJlY2VudCBRdWFkcm8gR1BVcy4gIFRoaXMg
c2V0dGluZyBpcyBvbmx5Ci0gKiBhcHBsaWVkIHRvIE9wZW5HTCBjbGllbnRzIHRoYXQgYXJlIHN0
YXJ0ZWQgYWZ0ZXIgdGhpcyBzZXR0aW5nIGlzCi0gKiBhcHBsaWVkLgotICovCi0KLSNkZWZpbmUg
TlZfQ1RSTF9PUEVOR0xfQUFfTElORV9HQU1NQSAzOCAvKiBSVy1YICovCi0jZGVmaW5lIE5WX0NU
UkxfT1BFTkdMX0FBX0xJTkVfR0FNTUFfRElTQUJMRSAwCi0jZGVmaW5lIE5WX0NUUkxfT1BFTkdM
X0FBX0xJTkVfR0FNTUFfRU5BQkxFIDEKLQotLyoKLSAqIE5WX0NUUkxfRlJBTUVMT0NLX1RJTUlO
RyAtIHRoaXMgaXMgVFJVRSB3aGVuIHRoZSBncHUgaXMgYm90aCByZWNlaXZpbmcKLSAqIGFuZCBs
b2NrZWQgdG8gYW4gaW5wdXQgdGltaW5nIHNpZ25hbC4gVGltaW5nIGluZm9ybWF0aW9uIG1heSBj
b21lIGZyb20KLSAqIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiBBbm90aGVyIGZyYW1lIGxvY2sgZGV2
aWNlIHRoYXQgaXMgc2V0IHRvIG1hc3RlciwKLSAqIHRoZSBob3VzZSBzeW5jIHNpZ25hbCwgb3Ig
dGhlIEdQVSdzIGludGVybmFsIHRpbWluZyBmcm9tIGEgZGlzcGxheQotICogZGV2aWNlLgotICoK
LSAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFy
Z2V0QXR0cmlidXRlKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZf
Q1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJM
X0ZSQU1FTE9DS19USU1JTkcgMzkgLyogUi0tRyAqLwotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9D
S19USU1JTkdfRkFMU0UgMAotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19USU1JTkdfVFJVRSAx
Ci0KLS8qCi0gKiBOVl9DVFJMX0ZMSVBQSU5HX0FMTE9XRUQgLSB3aGVuIFRSVUUsIE9wZW5HTCB3
aWxsIHN3YXAgYnkgZmxpcHBpbmcKLSAqIHdoZW4gcG9zc2libGU7IHdoZW4gRkFMU0UsIE9wZW5H
TCB3aWxsIGFsd2F5IHN3YXAgYnkgYmxpdHRpbmcuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0ZM
SVBQSU5HX0FMTE9XRUQgNDAgLyogUlctWCAqLwotI2RlZmluZSBOVl9DVFJMX0ZMSVBQSU5HX0FM
TE9XRURfRkFMU0UgMAotI2RlZmluZSBOVl9DVFJMX0ZMSVBQSU5HX0FMTE9XRURfVFJVRSAxCi0K
LS8qCi0gKiBOVl9DVFJMX0FSQ0hJVEVDVFVSRSAtIHJldHVybnMgdGhlIGFyY2hpdGVjdHVyZSBv
biB3aGljaCB0aGUgWCBzZXJ2ZXIgaXMKLSAqIHJ1bm5pbmcuCi0gKi8KLQotI2RlZmluZSBOVl9D
VFJMX0FSQ0hJVEVDVFVSRSA0MSAvKiBSLS0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9BUkNISVRFQ1RV
UkVfWDg2IDAKLSNkZWZpbmUgTlZfQ1RSTF9BUkNISVRFQ1RVUkVfWDg2XzY0IDEKLSNkZWZpbmUg
TlZfQ1RSTF9BUkNISVRFQ1RVUkVfSUE2NCAyCi0KLS8qCi0gKiBOVl9DVFJMX1RFWFRVUkVfQ0xB
TVBJTkcgLSB0ZXh0dXJlIGNsYW1waW5nIG1vZGUgaW4gT3BlbkdMLiAgQnkKLSAqIGRlZmF1bHQs
IF9TUEVDIGlzIHVzZWQsIHdoaWNoIGZvcmNlcyBPcGVuR0wgdGV4dHVyZSBjbGFtcGluZyB0bwot
ICogY29uZm9ybSB3aXRoIHRoZSBPcGVuR0wgc3BlY2lmaWNhdGlvbi4gIF9FREdFIGZvcmNlcyBO
VklESUEncwotICogT3BlbkdMIGltcGxlbWVudGF0aW9uIHRvIHJlbWFwIEdMX0NMQU1QIHRvIEdM
X0NMQU1QX1RPX0VER0UsCi0gKiB3aGljaCBpcyBub3Qgc3RyaWN0bHkgY29uZm9ybWFudCwgYnV0
IHNvbWUgYXBwbGljYXRpb25zIHJlbHkgb24KLSAqIHRoZSBub24tY29uZm9ybWFudCBiZWhhdmlv
ci4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfVEVYVFVSRV9DTEFNUElORyA0MiAvKiBSVy1YICov
Ci0jZGVmaW5lIE5WX0NUUkxfVEVYVFVSRV9DTEFNUElOR19FREdFIDAKLSNkZWZpbmUgTlZfQ1RS
TF9URVhUVVJFX0NMQU1QSU5HX1NQRUMgMQotCi0jZGVmaW5lIE5WX0NUUkxfQ1VSU09SX1NIQURP
VyA0MyAvKiBSVy0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9DVVJTT1JfU0hBRE9XX0RJU0FCTEUgMAot
I2RlZmluZSBOVl9DVFJMX0NVUlNPUl9TSEFET1dfRU5BQkxFIDEKLQotI2RlZmluZSBOVl9DVFJM
X0NVUlNPUl9TSEFET1dfQUxQSEEgNDQgLyogUlctICovCi0jZGVmaW5lIE5WX0NUUkxfQ1VSU09S
X1NIQURPV19SRUQgNDUgICAvKiBSVy0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9DVVJTT1JfU0hBRE9X
X0dSRUVOIDQ2IC8qIFJXLSAqLwotI2RlZmluZSBOVl9DVFJMX0NVUlNPUl9TSEFET1dfQkxVRSA0
NyAgLyogUlctICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9DVVJTT1JfU0hBRE9XX1hfT0ZGU0VUIDQ4
IC8qIFJXLSAqLwotI2RlZmluZSBOVl9DVFJMX0NVUlNPUl9TSEFET1dfWV9PRkZTRVQgNDkgLyog
UlctICovCi0KLS8qCi0gKiBXaGVuIEFwcGxpY2F0aW9uIENvbnRyb2wgZm9yIEZTQUEgaXMgZW5h
YmxlZCwgdGhlbiB3aGF0IHRoZQotICogYXBwbGljYXRpb24gcmVxdWVzdHMgaXMgdXNlZCwgYW5k
IE5WX0NUUkxfRlNBQV9NT0RFIGlzIGlnbm9yZWQuICBJZgotICogdGhpcyBpcyBkaXNhYmxlZCwg
dGhlbiBhbnkgYXBwbGljYXRpb24gc2V0dGluZyBpcyBvdmVycmlkZGVuIHdpdGgKLSAqIE5WX0NU
UkxfRlNBQV9NT0RFCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0ZTQUFfQVBQTElDQVRJT05fQ09O
VFJPTExFRCA1MCAvKiBSVy1YICovCi0jZGVmaW5lIE5WX0NUUkxfRlNBQV9BUFBMSUNBVElPTl9D
T05UUk9MTEVEX0VOQUJMRUQgMQotI2RlZmluZSBOVl9DVFJMX0ZTQUFfQVBQTElDQVRJT05fQ09O
VFJPTExFRF9ESVNBQkxFRCAwCi0KLS8qCi0gKiBXaGVuIEFwcGxpY2F0aW9uIENvbnRyb2wgZm9y
IExvZ0FuaXNvIGlzIGVuYWJsZWQsIHRoZW4gd2hhdCB0aGUKLSAqIGFwcGxpY2F0aW9uIHJlcXVl
c3RzIGlzIHVzZWQsIGFuZCBOVl9DVFJMX0xPR19BTklTTyBpcyBpZ25vcmVkLiAgSWYKLSAqIHRo
aXMgaXMgZGlzYWJsZWQsIHRoZW4gYW55IGFwcGxpY2F0aW9uIHNldHRpbmcgaXMgb3ZlcnJpZGRl
biB3aXRoCi0gKiBOVl9DVFJMX0xPR19BTklTTwotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9MT0df
QU5JU09fQVBQTElDQVRJT05fQ09OVFJPTExFRCA1MSAvKiBSVy1YICovCi0jZGVmaW5lIE5WX0NU
UkxfTE9HX0FOSVNPX0FQUExJQ0FUSU9OX0NPTlRST0xMRURfRU5BQkxFRCAxCi0jZGVmaW5lIE5W
X0NUUkxfTE9HX0FOSVNPX0FQUExJQ0FUSU9OX0NPTlRST0xMRURfRElTQUJMRUQgMAotCi0vKgot
ICogSU1BR0VfU0hBUlBFTklORyBhZGp1c3RzIHRoZSBzaGFycG5lc3Mgb2YgdGhlIGRpc3BsYXkn
cyBpbWFnZQotICogcXVhbGl0eSBieSBhbXBsaWZ5aW5nIGhpZ2ggZnJlcXVlbmN5IGNvbnRlbnQu
ICBWYWxpZCB2YWx1ZXMgd2lsbAotICogbm9ybWFsbHkgYmUgaW4gdGhlIHJhbmdlIFswLDMyKS4g
IE9ubHkgYXZhaWxhYmxlIG9uIEdlRm9yY2VGWCBvcgotICogbmV3ZXIuCi0gKi8KLQotI2RlZmlu
ZSBOVl9DVFJMX0lNQUdFX1NIQVJQRU5JTkcgNTIgLyogUldERyAqLwotCi0vKgotICogTlZfQ1RS
TF9UVl9PVkVSU0NBTiBhZGp1c3RzIHRoZSBhbW91bnQgb2Ygb3ZlcnNjYW4gb24gdGhlIHNwZWNp
ZmllZAotICogZGlzcGxheSBkZXZpY2UuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1RWX09WRVJT
Q0FOIDUzIC8qIFJXREcgKi8KLQotLyoKLSAqIE5WX0NUUkxfVFZfRkxJQ0tFUl9GSUxURVIgYWRq
dXN0cyB0aGUgYW1vdW50IG9mIGZsaWNrZXIgZmlsdGVyIG9uCi0gKiB0aGUgc3BlY2lmaWVkIGRp
c3BsYXkgZGV2aWNlLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9UVl9GTElDS0VSX0ZJTFRFUiA1
NCAvKiBSV0RHICovCi0KLS8qCi0gKiBOVl9DVFJMX1RWX0JSSUdIVE5FU1MgYWRqdXN0cyB0aGUg
YW1vdW50IG9mIGJyaWdodG5lc3Mgb24gdGhlCi0gKiBzcGVjaWZpZWQgZGlzcGxheSBkZXZpY2Uu
Ci0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1RWX0JSSUdIVE5FU1MgNTUgLyogUldERyAqLwotCi0v
KgotICogTlZfQ1RSTF9UVl9IVUUgYWRqdXN0cyB0aGUgYW1vdW50IG9mIGh1ZSBvbiB0aGUgc3Bl
Y2lmaWVkIGRpc3BsYXkKLSAqIGRldmljZS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfVFZfSFVF
IDU2IC8qIFJXREcgKi8KLQotLyoKLSAqIE5WX0NUUkxfVFZfQ09OVFJBU1QgYWRqdXN0cyB0aGUg
YW1vdW50IG9mIGNvbnRyYXN0IG9uIHRoZSBzcGVjaWZpZWQKLSAqIGRpc3BsYXkgZGV2aWNlLgot
ICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9UVl9DT05UUkFTVCA1NyAvKiBSV0RHICovCi0KLS8qCi0g
KiBOVl9DVFJMX1RWX1NBVFVSQVRJT04gYWRqdXN0cyB0aGUgYW1vdW50IG9mIHNhdHVyYXRpb24g
b24gdGhlCi0gKiBzcGVjaWZpZWQgZGlzcGxheSBkZXZpY2UuCi0gKi8KLQotI2RlZmluZSBOVl9D
VFJMX1RWX1NBVFVSQVRJT04gNTggLyogUldERyAqLwotCi0vKgotICogTlZfQ1RSTF9UVl9SRVNF
VF9TRVRUSU5HUyAtIHRoaXMgd3JpdGUtb25seSBhdHRyaWJ1dGUgY2FuIGJlIHVzZWQKLSAqIHRv
IHJlcXVlc3QgdGhhdCBhbGwgVFYgU2V0dGluZ3MgYmUgcmVzZXQgdG8gdGhlaXIgZGVmYXVsdCB2
YWx1ZXM7Ci0gKiB0eXBpY2FsIHVzYWdlIHdvdWxkIGJlIHRoYXQgdGhpcyBhdHRyaWJ1dGUgYmUg
c2VudCwgYW5kIHRoZW4gYWxsCi0gKiB0aGUgVFYgYXR0cmlidXRlcyBiZSBxdWVyaWVkIHRvIHJl
dHJpZXZlIHRoZWlyIG5ldyB2YWx1ZXMuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1RWX1JFU0VU
X1NFVFRJTkdTIDU5IC8qIC1XREcgKi8KLQotLyoKLSAqIE5WX0NUUkxfR1BVX0NPUkVfVEVNUEVS
QVRVUkUgcmVwb3J0cyB0aGUgY3VycmVudCBjb3JlIHRlbXBlcmF0dXJlCi0gKiBvZiB0aGUgR1BV
IGRyaXZpbmcgdGhlIFggc2NyZWVuLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfQ09SRV9U
RU1QRVJBVFVSRSA2MCAvKiBSLS1HICovCi0KLS8qCi0gKiBOVl9DVFJMX0dQVV9DT1JFX1RIUkVT
SE9MRCByZXBvcnRzIHRoZSBjdXJyZW50IEdQVSBjb3JlIHNsb3dkb3duCi0gKiB0aHJlc2hvbGQg
dGVtcGVyYXR1cmUsIE5WX0NUUkxfR1BVX0RFRkFVTFRfQ09SRV9USFJFU0hPTEQgYW5kCi0gKiBO
Vl9DVFJMX0dQVV9NQVhfQ09SRV9USFJFU0hPTEQgcmVwb3J0IHRoZSBkZWZhdWx0IGFuZCBNQVgg
Y29yZQotICogc2xvd2Rvd24gdGhyZXNob2xkIHRlbXBlcmF0dXJlcy4KLSAqCi0gKiBOVl9DVFJM
X0dQVV9DT1JFX1RIUkVTSE9MRCByZWZsZWN0cyB0aGUgdGVtcGVyYXR1cmUgYXQgd2hpY2ggdGhl
Ci0gKiBHUFUgaXMgdGhyb3R0bGVkIHRvIHByZXZlbnQgb3ZlcmhlYXRpbmcuCi0gKi8KLQotI2Rl
ZmluZSBOVl9DVFJMX0dQVV9DT1JFX1RIUkVTSE9MRCA2MSAgICAgICAgIC8qIFItLUcgKi8KLSNk
ZWZpbmUgTlZfQ1RSTF9HUFVfREVGQVVMVF9DT1JFX1RIUkVTSE9MRCA2MiAvKiBSLS1HICovCi0j
ZGVmaW5lIE5WX0NUUkxfR1BVX01BWF9DT1JFX1RIUkVTSE9MRCA2MyAgICAgLyogUi0tRyAqLwot
Ci0vKgotICogTlZfQ1RSTF9BTUJJRU5UX1RFTVBFUkFUVVJFIHJlcG9ydHMgdGhlIGN1cnJlbnQg
dGVtcGVyYXR1cmUgaW4gdGhlCi0gKiBpbW1lZGlhdGUgbmVpZ2hib3VyaG9vZCBvZiB0aGUgR1BV
IGRyaXZpbmcgdGhlIFggc2NyZWVuLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9BTUJJRU5UX1RF
TVBFUkFUVVJFIDY0IC8qIFItLUcgKi8KLQotLyoKLSAqIE5WX0NUUkxfUEJVRkZFUl9TQ0FOT1VU
X1NVUFBPUlRFRCAtIHJldHVybnMgd2hldGhlciB0aGlzIFggc2NyZWVuCi0gKiBzdXBwb3J0cyBz
Y2Fub3V0IG9mIEZQIHBidWZmZXJzOwotICoKLSAqIGlmIHRoaXMgc2NyZWVuIGRvZXMgbm90IHN1
cHBvcnQgUEJVRkZFUl9TQ0FOT1VULCB0aGVuIGFsbCBvdGhlcgotICogUEJVRkZFUl9TQ0FOT1VU
IGF0dHJpYnV0ZXMgYXJlIHVuYXZhaWxhYmxlLgotICoKLSAqIFBCVUZGRVJfU0NBTk9VVCBpcyBz
dXBwb3J0ZWQgaWYgYW5kIG9ubHkgaWY6Ci0gKiAtIFR3aW52aWV3IGlzIGNvbmZpZ3VyZWQgd2l0
aCBjbG9uZSBtb2RlLiAgVGhlIHNlY29uZGFyeSBzY3JlZW4gaXMgdXNlZCB0bwotICogICBzY2Fu
b3V0IHRoZSBwYnVmZmVyLgotICogLSBUaGUgZGVza3RvcCBpcyBydW5uaW5nIGluIHdpdGggMTYg
Yml0cyBwZXIgcGl4ZWwuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9QQlVGRkVSX1NDQU5PVVRfU1VQ
UE9SVEVEIDY1IC8qIFItLSAqLwotI2RlZmluZSBOVl9DVFJMX1BCVUZGRVJfU0NBTk9VVF9GQUxT
RSAwCi0jZGVmaW5lIE5WX0NUUkxfUEJVRkZFUl9TQ0FOT1VUX1RSVUUgMQotCi0vKgotICogTlZf
Q1RSTF9QQlVGRkVSX1NDQU5PVVRfWElEIGluZGljYXRlcyB0aGUgWElEIG9mIHRoZSBwYnVmZmVy
IHVzZWQgZm9yCi0gKiBzY2Fub3V0LgotICovCi0jZGVmaW5lIE5WX0NUUkxfUEJVRkZFUl9TQ0FO
T1VUX1hJRCA2NiAvKiBSVy0gKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLyoKLSAqIFRoZSBO
Vl9DVFJMX0dWT18qIGludGVnZXIgYXR0cmlidXRlcyBhcmUgdXNlZCB0byBjb25maWd1cmUgR1ZP
Ci0gKiAoR3JhcGhpY3MgdG8gVmlkZW8gT3V0KS4gIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBhdmFp
bGFibGUsIGZvcgotICogZXhhbXBsZSwgb24gdGhlIFF1YWRybyBGWCA0MDAwIFNESSBncmFwaGlj
cyBib2FyZC4KLSAqCi0gKiBUaGUgZm9sbG93aW5nIGlzIGEgdHlwaWNhbCB1c2FnZSBwYXR0ZXJu
IGZvciB0aGUgR1ZPIGF0dHJpYnV0ZXM6Ci0gKgotICogLSBxdWVyeSBOVl9DVFJMX0dWT19TVVBQ
T1JURUQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBYIHNjcmVlbiBzdXBwb3J0cyBHVjAuCi0gKgotICog
LSBzcGVjaWZ5IE5WX0NUUkxfR1ZPX1NZTkNfTU9ERSAob25lIG9mIEZSRUVfUlVOTklORywgR0VO
TE9DSywgb3IKLSAqIEZSQU1FTE9DSyk7IGlmIHlvdSBzcGVjaWZ5IEdFTkxPQ0sgb3IgRlJBTUVM
T0NLLCB5b3Ugc2hvdWxkIGFsc28KLSAqIHNwZWNpZnkgTlZfQ1RSTF9HVk9fU1lOQ19TT1VSQ0Uu
Ci0gKgotICogLSBVc2UgTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX1NZTkNfSU5QVVRfREVURUNURUQg
YW5kCi0gKiBOVl9DVFJMX0dWT19TRElfU1lOQ19JTlBVVF9ERVRFQ1RFRCB0byBkZXRlY3Qgd2hh
dCBpbnB1dCBzeW5jcyBhcmUKLSAqIHByZXNlbnQuCi0gKgotICogKElmIG5vIGFuYWxvZyBzeW5j
IGlzIGRldGVjdGVkIGJ1dCBpdCBpcyBrbm93biB0aGF0IGEgdmFsaWQKLSAqIGJpLWxldmVsIG9y
IHRyaS1sZXZlbCBzeW5jIGlzIGNvbm5lY3RlZCBzZXQKLSAqIE5WX0NUUkxfR1ZPX0NPTVBPU0lU
RV9TWU5DX0lOUFVUX0RFVEVDVF9NT0RFIGFwcHJvcHJpYXRlbHkgYW5kCi0gKiByZXRlc3Qgd2l0
aCBOVl9DVFJMX0dWT19DT01QT1NJVEVfU1lOQ19JTlBVVF9ERVRFQ1RFRCkuCi0gKgotICogLSBp
ZiBzeW5jaW5nIHRvIGlucHV0IHN5bmMsIHF1ZXJ5IHRoZQotICogTlZfQ1RSTF9HVklPX0RFVEVD
VEVEX1ZJREVPX0ZPUk1BVCBhdHRyaWJ1dGU7IG5vdGUgdGhhdCBJbnB1dCB2aWRlbwotICogZm9y
bWF0IGNhbiBvbmx5IGJlIHF1ZXJpZWQgYWZ0ZXIgU1lOQ19TT1VSQ0UgaXMgc3BlY2lmaWVkLgot
ICoKLSAqIC0gc3BlY2lmeSB0aGUgTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JNQVQK
LSAqCi0gKiAtIHNwZWNpZnkgdGhlIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUCi0gKgotICogLSBz
cGVjaWZ5IGFueSBjdXN0b20gQ29sb3IgU3BhY2UgQ29udmVyc2lvbiAoQ1NDKSBtYXRyaXgsIG9m
ZnNldCwKLSAqIGFuZCBzY2FsZSB3aXRoIFhOVkNUUkxTZXRHdm9Db2xvckNvbnZlcnNpb24oKS4K
LSAqCi0gKiAtIGlmIHVzaW5nIHRoZSBHTFhfTlZfdmlkZW9fb3V0IGV4dGVuc2lvbiB0byBkaXNw
bGF5IG9uZSBvciBtb3JlCi0gKiBwYnVmZmVycywgY2FsbCBnbFhHZXRWaWRlb0RldmljZU5WKCkg
dG8gbG9jayB0aGUgR1ZPIG91dHB1dCBmb3IgdXNlCi0gKiBieSB0aGUgR0xYIGNsaWVudDsgdGhl
biBiaW5kIHRoZSBwYnVmZmVyKHMpIHRvIHRoZSBHVk8gb3V0cHV0IHdpdGgKLSAqIGdsWEJpbmRW
aWRlb0ltYWdlTlYoKSBhbmQgc2VuZCBwYnVmZmVycyB0byB0aGUgR1ZPIG91dHB1dCB3aXRoCi0g
KiBnbFhTZW5kUGJ1ZmZlclRvVmlkZW9OVigpOyBzZWUgdGhlIEdMWF9OVl92aWRlb19vdXQgc3Bl
YyBmb3IgbW9yZQotICogZGV0YWlscy4KLSAqCi0gKiAtIGlmIHVzaW5nIHRoZSBHTFhfTlZfcHJl
c2VudF92aWRlbyBleHRlbnNpb24sIGNhbGwKLSAqIGdsWEJpbmRWaWRlb0RldmljZU5WKCkgdG8g
YmluZCB0aGUgR1ZPIHZpZGVvIGRldmljZSB0byBjdXJyZW50Ci0gKiBPcGVuR0wgY29udGV4dC4K
LSAqCi0gKiBOb3RlIHRoYXQgc2V0dGluZyBtb3N0IEdWTyBhdHRyaWJ1dGVzIG9ubHkgY2F1c2Vz
IHRoZSB2YWx1ZSB0byBiZQotICogY2FjaGVkIGluIHRoZSBYIHNlcnZlci4gIFRoZSB2YWx1ZXMg
d2lsbCBiZSBmbHVzaGVkIHRvIHRoZSBoYXJkd2FyZQotICogZWl0aGVyIHdoZW4gdGhlIG5leHQg
TWV0YU1vZGUgaXMgc2V0IHRoYXQgdXNlcyB0aGUgR1ZPIGRpc3BsYXkKLSAqIGRldmljZSwgb3Ig
d2hlbiBhIEdMWCBwYnVmZmVyIGlzIGJvdW5kIHRvIHRoZSBHVk8gb3V0cHV0ICh3aXRoCi0gKiBn
bFhCaW5kVmlkZW9JbWFnZU5WKCkpLgotICoKLSAqIE5vdGUgdGhhdCBHTFhfTlZfdmlkZW9fb3V0
L0dMWF9OVl9wcmVzZW50X3ZpZGVvIGFuZCBYIHNjcmVlbiB1c2UKLSAqIGFyZSBtdXR1YWxseSBl
eGNsdXNpdmUuICBJZiBhIE1ldGFNb2RlIGlzIGN1cnJlbnRseSB1c2luZyB0aGUgR1ZPCi0gKiBk
ZXZpY2UsIHRoZW4gZ2xYR2V0VmlkZW9EZXZpY2VOViBhbmQgZ2xYQmluZFZpZGVvSW1hZ2VOVigp
IHdpbGwKLSAqIGZhaWwuICBTaW1pbGFybHksIGlmIGEgR0xYIGNsaWVudCBoYXMgbG9ja2VkIHRo
ZSBHVk8gb3V0cHV0ICh2aWEKLSAqIGdsWEdldFZpZGVvRGV2aWNlTlYgb3IgZ2xYQmluZFZpZGVv
SW1hZ2VOViksIHRoZW4gc2V0dGluZyBhCi0gKiBNZXRhTW9kZSB0aGF0IHVzZXMgdGhlIEdWTyBk
ZXZpY2Ugd2lsbCBmYWlsLiAgVGhlCi0gKiBOVl9DVFJMX0dWT19HTFhfTE9DS0VEIGV2ZW50IHdp
bGwgYmUgc2VudCB3aGVuIGEgR0xYIGNsaWVudCBsb2NrcwotICogdGhlIEdWTyBvdXRwdXQuCi0g
KgotICovCi0KLS8qCi0gKiBOVl9DVFJMX0dWT19TVVBQT1JURUQgLSByZXR1cm5zIHdoZXRoZXIg
dGhpcyBYIHNjcmVlbiBzdXBwb3J0cyBHVk87Ci0gKiBpZiB0aGlzIHNjcmVlbiBkb2VzIG5vdCBz
dXBwb3J0IEdWTyBvdXRwdXQsIHRoZW4gYWxsIG90aGVyIEdWTwotICogYXR0cmlidXRlcyBhcmUg
dW5hdmFpbGFibGUuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWT19TVVBQT1JURUQgNjcgLyog
Ui0tICovCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX1NVUFBPUlRFRF9GQUxTRSAwCi0jZGVmaW5lIE5W
X0NUUkxfR1ZPX1NVUFBPUlRFRF9UUlVFIDEKLQotLyoKLSAqIE5WX0NUUkxfR1ZPX1NZTkNfTU9E
RSAtIHNlbGVjdHMgdGhlIEdWTyBzeW5jIG1vZGU7IHBvc3NpYmxlIHZhbHVlcwotICogYXJlOgot
ICoKLSAqIEZSRUVfUlVOTklORyAtIEdWTyBkb2VzIG5vdCBzeW5jIHRvIGFueSBleHRlcm5hbCBz
aWduYWwKLSAqCi0gKiBHRU5MT0NLIC0gdGhlIEdWTyBvdXRwdXQgaXMgZ2VubG9ja2VkIHRvIGFu
IGluY29taW5nIHN5bmMgc2lnbmFsOwotICogZ2VubG9ja2luZyBsb2NrcyBhdCBoc3luYy4gIFRo
aXMgcmVxdWlyZXMgdGhhdCB0aGUgb3V0cHV0IHZpZGVvCi0gKiBmb3JtYXQgZXhhY3RseSBtYXRj
aCB0aGUgaW5jb21pbmcgc3luYyB2aWRlbyBmb3JtYXQuCi0gKgotICogRlJBTUVMT0NLIC0gdGhl
IEdWTyBvdXRwdXQgaXMgZnJhbWUgbG9ja2VkIHRvIGFuIGluY29taW5nIHN5bmMKLSAqIHNpZ25h
bDsgZnJhbWUgbG9ja2luZyBsb2NrcyBhdCB2c3luYy4gIFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUg
b3V0cHV0Ci0gKiB2aWRlbyBmb3JtYXQgaGF2ZSB0aGUgc2FtZSByZWZyZXNoIHJhdGUgYXMgdGhl
IGluY29taW5nIHN5bmMgdmlkZW8KLSAqIGZvcm1hdC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxf
R1ZPX1NZTkNfTU9ERSA2OCAvKiBSVy0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fU1lOQ19NT0RF
X0ZSRUVfUlVOTklORyAwCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX1NZTkNfTU9ERV9HRU5MT0NLIDEK
LSNkZWZpbmUgTlZfQ1RSTF9HVk9fU1lOQ19NT0RFX0ZSQU1FTE9DSyAyCi0KLS8qCi0gKiBOVl9D
VFJMX0dWT19TWU5DX1NPVVJDRSAtIGlmIE5WX0NUUkxfR1ZPX1NZTkNfTU9ERSBpcyBzZXQgdG8g
ZWl0aGVyCi0gKiBHRU5MT0NLIG9yIEZSQU1FTE9DSywgdGhpcyBjb250cm9scyB3aGljaCBzeW5j
IHNvdXJjZSBpcyB1c2VkIGFzCi0gKiB0aGUgaW5jb21pbmcgc3luYyBzaWduYWwgKGVpdGhlciBD
b21wb3NpdGUgb3IgU0RJKS4gIElmCi0gKiBOVl9DVFJMX0dWT19TWU5DX01PREUgaXMgRlJFRV9S
VU5OSU5HLCB0aGlzIGF0dHJpYnV0ZSBoYXMgbm8KLSAqIGVmZmVjdC4KLSAqLwotCi0jZGVmaW5l
IE5WX0NUUkxfR1ZPX1NZTkNfU09VUkNFIDY5IC8qIFJXLSAqLwotI2RlZmluZSBOVl9DVFJMX0dW
T19TWU5DX1NPVVJDRV9DT01QT1NJVEUgMAotI2RlZmluZSBOVl9DVFJMX0dWT19TWU5DX1NPVVJD
RV9TREkgMQotCi0vKgotICogTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JNQVQgLSBz
cGVjaWZpZXMgdGhlIGRlc2lyZWQgb3V0cHV0IHZpZGVvCi0gKiBmb3JtYXQgZm9yIEdWTyBkZXZp
Y2VzIG9yIHRoZSBkZXNpcmVkIGlucHV0IHZpZGVvIGZvcm1hdCBmb3IgR1ZJIGRldmljZXMuCi0g
KgotICogTm90ZSB0aGF0IGZvciBHVk8sIHRoZSB2YWxpZCB2aWRlbyBmb3JtYXRzIG1heSB2YXJ5
IGRlcGVuZGluZyBvbgotICogdGhlIE5WX0NUUkxfR1ZPX1NZTkNfTU9ERSBhbmQgdGhlIGluY29t
aW5nIHN5bmMgdmlkZW8gZm9ybWF0LiAgU2VlCi0gKiB0aGUgZGVmaW5pdGlvbiBvZiBOVl9DVFJM
X0dWT19TWU5DX01PREUuCi0gKgotICogTm90ZSB0aGF0IHdoZW4gcXVlcnlpbmcgdGhlIFZhbGlk
VmFsdWVzIGZvciB0aGlzIGRhdGEgdHlwZSwgdGhlCi0gKiB2YWx1ZXMgYXJlIHJlcG9ydGVkIGFz
IGJpdHMgd2l0aGluIGEgYml0bWFzawotICogKEFUVFJJQlVURV9UWVBFX0lOVF9CSVRTKTsgdW5m
b3J0dW5hdGVseSwgdGhlcmUgYXJlIG1vcmUgdmFsaWQKLSAqIHZhbHVlIGJpdHMgdGhhbiB3aWxs
IGZpdCBpbiBhIHNpbmdsZSAzMi1iaXQgdmFsdWUuICBUbyBzb2x2ZSB0aGlzLAotICogcXVlcnkg
dGhlIFZhbGlkVmFsdWVzIGZvciBOVl9DVFJMX0dWSU9fUkVRVUVTVEVEX1ZJREVPX0ZPUk1BVCB0
bwotICogY2hlY2sgd2hpY2ggb2YgdGhlIGZpcnN0IDMxIFZJREVPX0ZPUk1BVFMgYXJlIHZhbGlk
LCBxdWVyeSB0aGUKLSAqIFZhbGlkVmFsdWVzIGZvciBOVl9DVFJMX0dWSU9fUkVRVUVTVEVEX1ZJ
REVPX0ZPUk1BVDIgdG8gY2hlY2sgd2hpY2gKLSAqIG9mIHRoZSAzMi02MyBWSURFT19GT1JNQVRT
IGFyZSB2YWxpZCwgYW5kIHF1ZXJ5IHRoZSBWYWxpZFZhbHVlcyBvZgotICogTlZfQ1RSTF9HVklP
X1JFUVVFU1RFRF9WSURFT19GT1JNQVQzIHRvIGNoZWNrIHdoaWNoIG9mIHRoZSA2NC05NQotICog
VklERU9fRk9STUFUUyBhcmUgdmFsaWQuCi0gKgotICogTm90ZTogU2V0dGluZyB0aGlzIGF0dHJp
YnV0ZSBvbiBhIEdWSSBkZXZpY2UgbWF5IGFsc28gcmVzdWx0IGluIHRoZQotICogICAgICAgZm9s
bG93aW5nIE5WLUNPTlRST0wgYXR0cmlidXRlcyBiZWluZyByZXNldCBvbiB0aGF0IGRldmljZSAo
dG8KLSAqICAgICAgIGVuc3VyZSB0aGUgY29uZmlndXJhdGlvbiByZW1haW5zIHZhbGlkKToKLSAq
ICAgICAgICAgICBOVl9DVFJMX0dWSV9SRVFVRVNURURfU1RSRUFNX0JJVFNfUEVSX0NPTVBPTkVO
VAotICogICAgICAgICAgIE5WX0NUUkxfR1ZJX1JFUVVFU1RFRF9TVFJFQU1fQ09NUE9ORU5UX1NB
TVBMSU5HCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWSU9fUkVRVUVTVEVEX1ZJREVPX0ZPUk1B
VCA3MCAvKiBSVy0tSSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfTk9O
RSAwCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfNDg3SV81OV85NF9TTVBURTI1
OV9OVFNDIDEKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF81NzZJXzUwXzAwX1NN
UFRFMjU5X1BBTCAyCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfNzIwUF81OV85
NF9TTVBURTI5NiAzCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfNzIwUF82MF8w
MF9TTVBURTI5NiA0Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTAzNUlfNTlf
OTRfU01QVEUyNjAgNQotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwMzVJXzYw
XzAwX1NNUFRFMjYwIDYKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwSV81
MF8wMF9TTVBURTI5NSA3Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MElf
NTBfMDBfU01QVEUyNzQgOAotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBJ
XzU5Xzk0X1NNUFRFMjc0IDkKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgw
SV82MF8wMF9TTVBURTI3NCAxMAotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEw
ODBQXzIzXzk3Nl9TTVBURTI3NCAxMQotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFU
XzEwODBQXzI0XzAwX1NNUFRFMjc0IDEyCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JN
QVRfMTA4MFBfMjVfMDBfU01QVEUyNzQgMTMKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZP
Uk1BVF8xMDgwUF8yOV85N19TTVBURTI3NCAxNAotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9f
Rk9STUFUXzEwODBQXzMwXzAwX1NNUFRFMjc0IDE1Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURF
T19GT1JNQVRfNzIwUF81MF8wMF9TTVBURTI5NiAxNgotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklE
RU9fRk9STUFUXzEwODBJXzQ4XzAwX1NNUFRFMjc0IDE3Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJT19W
SURFT19GT1JNQVRfMTA4MElfNDdfOTZfU01QVEUyNzQgMTgKLSNkZWZpbmUgTlZfQ1RSTF9HVklP
X1ZJREVPX0ZPUk1BVF83MjBQXzMwXzAwX1NNUFRFMjk2IDE5Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJ
T19WSURFT19GT1JNQVRfNzIwUF8yOV85N19TTVBURTI5NiAyMAotI2RlZmluZSBOVl9DVFJMX0dW
SU9fVklERU9fRk9STUFUXzcyMFBfMjVfMDBfU01QVEUyOTYgMjEKLSNkZWZpbmUgTlZfQ1RSTF9H
VklPX1ZJREVPX0ZPUk1BVF83MjBQXzI0XzAwX1NNUFRFMjk2IDIyCi0jZGVmaW5lIE5WX0NUUkxf
R1ZJT19WSURFT19GT1JNQVRfNzIwUF8yM185OF9TTVBURTI5NiAyMwotI2RlZmluZSBOVl9DVFJM
X0dWSU9fVklERU9fRk9STUFUXzEwODBQU0ZfMjVfMDBfU01QVEUyNzQgMjQKLSNkZWZpbmUgTlZf
Q1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwUFNGXzI5Xzk3X1NNUFRFMjc0IDI1Ci0jZGVmaW5l
IE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MFBTRl8zMF8wMF9TTVBURTI3NCAyNgotI2Rl
ZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBQU0ZfMjRfMDBfU01QVEUyNzQgMjcK
LSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwUFNGXzIzXzk4X1NNUFRFMjc0
IDI4Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMjA0OFBfMzBfMDBfU01QVEUz
NzIgMjkKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4UF8yOV85N19TTVBU
RTM3MiAzMAotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzIwNDhJXzYwXzAwX1NN
UFRFMzcyIDMxCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMjA0OElfNTlfOTRf
U01QVEUzNzIgMzIKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4UF8yNV8w
MF9TTVBURTM3MiAzMwotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzIwNDhJXzUw
XzAwX1NNUFRFMzcyIDM0Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMjA0OFBf
MjRfMDBfU01QVEUzNzIgMzUKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4
UF8yM185OF9TTVBURTM3MiAzNgotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzIw
NDhJXzQ4XzAwX1NNUFRFMzcyIDM3Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRf
MjA0OElfNDdfOTZfU01QVEUzNzIgMzgKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1B
VF8xMDgwUF81MF8wMF8zR19MRVZFTF9BX1NNUFRFMjc0IDM5Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJ
T19WSURFT19GT1JNQVRfMTA4MFBfNTlfOTRfM0dfTEVWRUxfQV9TTVBURTI3NCA0MAotI2RlZmlu
ZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBQXzYwXzAwXzNHX0xFVkVMX0FfU01QVEUy
NzQgNDEKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwUF82MF8wMF8zR19M
RVZFTF9CX1NNUFRFMjc0IDQyCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4
MElfNjBfMDBfM0dfTEVWRUxfQl9TTVBURTI3NCA0MwotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklE
RU9fRk9STUFUXzIwNDhJXzYwXzAwXzNHX0xFVkVMX0JfU01QVEUzNzIgNDQKLSNkZWZpbmUgTlZf
Q1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwUF81MF8wMF8zR19MRVZFTF9CX1NNUFRFMjc0IDQ1
Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MElfNTBfMDBfM0dfTEVWRUxf
Ql9TTVBURTI3NCA0NgotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzIwNDhJXzUw
XzAwXzNHX0xFVkVMX0JfU01QVEUzNzIgNDcKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZP
Uk1BVF8xMDgwUF8zMF8wMF8zR19MRVZFTF9CX1NNUFRFMjc0IDQ4Ci0jZGVmaW5lIE5WX0NUUkxf
R1ZJT19WSURFT19GT1JNQVRfMjA0OFBfMzBfMDBfM0dfTEVWRUxfQl9TTVBURTM3MiA0OQotI2Rl
ZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBQXzI1XzAwXzNHX0xFVkVMX0JfU01Q
VEUyNzQgNTAKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4UF8yNV8wMF8z
R19MRVZFTF9CX1NNUFRFMzcyIDUxCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRf
MTA4MFBfMjRfMDBfM0dfTEVWRUxfQl9TTVBURTI3NCA1MgotI2RlZmluZSBOVl9DVFJMX0dWSU9f
VklERU9fRk9STUFUXzIwNDhQXzI0XzAwXzNHX0xFVkVMX0JfU01QVEUzNzIgNTMKLSNkZWZpbmUg
TlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwSV80OF8wMF8zR19MRVZFTF9CX1NNUFRFMjc0
IDU0Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMjA0OElfNDhfMDBfM0dfTEVW
RUxfQl9TTVBURTM3MiA1NQotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBQ
XzU5Xzk0XzNHX0xFVkVMX0JfU01QVEUyNzQgNTYKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVP
X0ZPUk1BVF8xMDgwSV81OV85NF8zR19MRVZFTF9CX1NNUFRFMjc0IDU3Ci0jZGVmaW5lIE5WX0NU
UkxfR1ZJT19WSURFT19GT1JNQVRfMjA0OElfNTlfOTRfM0dfTEVWRUxfQl9TTVBURTM3MiA1OAot
I2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBQXzI5Xzk3XzNHX0xFVkVMX0Jf
U01QVEUyNzQgNTkKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4UF8yOV85
N18zR19MRVZFTF9CX1NNUFRFMzcyIDYwCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JN
QVRfMTA4MFBfMjNfOThfM0dfTEVWRUxfQl9TTVBURTI3NCA2MQotI2RlZmluZSBOVl9DVFJMX0dW
SU9fVklERU9fRk9STUFUXzIwNDhQXzIzXzk4XzNHX0xFVkVMX0JfU01QVEUzNzIgNjIKLSNkZWZp
bmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwSV80N185Nl8zR19MRVZFTF9CX1NNUFRF
Mjc0IDYzCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMjA0OElfNDdfOTZfM0df
TEVWRUxfQl9TTVBURTM3MiA2NAotCi0vKgotICogVGhlIGZvbGxvd2luZyBhcmUgZGVwcmVjYXRl
ZDsgTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JNQVQgYW5kIHRoZQotICogY29ycmVz
cG9uZGluZyBOVl9DVFJMX0dWSU9fKiBmb3JtYXRzIHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCi0g
Ki8KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fT1VUUFVUX1ZJREVPX0ZPUk1BVCA3MCAvKiBSVy0gKi8K
LQotI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfTk9ORSAwCi0jZGVmaW5lIE5WX0NU
UkxfR1ZPX1ZJREVPX0ZPUk1BVF80ODdJXzU5Xzk0X1NNUFRFMjU5X05UU0MgMQotI2RlZmluZSBO
Vl9DVFJMX0dWT19WSURFT19GT1JNQVRfNTc2SV81MF8wMF9TTVBURTI1OV9QQUwgMgotI2RlZmlu
ZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfNzIwUF81OV85NF9TTVBURTI5NiAzCi0jZGVmaW5l
IE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF83MjBQXzYwXzAwX1NNUFRFMjk2IDQKLSNkZWZpbmUg
TlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEwMzVJXzU5Xzk0X1NNUFRFMjYwIDUKLSNkZWZpbmUg
TlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEwMzVJXzYwXzAwX1NNUFRFMjYwIDYKLSNkZWZpbmUg
TlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEwODBJXzUwXzAwX1NNUFRFMjk1IDcKLSNkZWZpbmUg
TlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEwODBJXzUwXzAwX1NNUFRFMjc0IDgKLSNkZWZpbmUg
TlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEwODBJXzU5Xzk0X1NNUFRFMjc0IDkKLSNkZWZpbmUg
TlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEwODBJXzYwXzAwX1NNUFRFMjc0IDEwCi0jZGVmaW5l
IE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8xMDgwUF8yM185NzZfU01QVEUyNzQgMTEKLSNkZWZp
bmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEwODBQXzI0XzAwX1NNUFRFMjc0IDEyCi0jZGVm
aW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8xMDgwUF8yNV8wMF9TTVBURTI3NCAxMwotI2Rl
ZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMTA4MFBfMjlfOTdfU01QVEUyNzQgMTQKLSNk
ZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEwODBQXzMwXzAwX1NNUFRFMjc0IDE1Ci0j
ZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF83MjBQXzUwXzAwX1NNUFRFMjk2IDE2Ci0j
ZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8xMDgwSV80OF8wMF9TTVBURTI3NCAxNwot
I2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMTA4MElfNDdfOTZfU01QVEUyNzQgMTgK
LSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzcyMFBfMzBfMDBfU01QVEUyOTYgMTkK
LSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzcyMFBfMjlfOTdfU01QVEUyOTYgMjAK
LSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzcyMFBfMjVfMDBfU01QVEUyOTYgMjEK
LSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzcyMFBfMjRfMDBfU01QVEUyOTYgMjIK
LSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzcyMFBfMjNfOThfU01QVEUyOTYgMjMK
LSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEwODBQU0ZfMjVfMDBfU01QVEUyNzQg
MjQKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEwODBQU0ZfMjlfOTdfU01QVEUy
NzQgMjUKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEwODBQU0ZfMzBfMDBfU01Q
VEUyNzQgMjYKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEwODBQU0ZfMjRfMDBf
U01QVEUyNzQgMjcKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEwODBQU0ZfMjNf
OThfU01QVEUyNzQgMjgKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzIwNDhQXzMw
XzAwX1NNUFRFMzcyIDI5Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8yMDQ4UF8y
OV85N19TTVBURTM3MiAzMAotI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMjA0OElf
NjBfMDBfU01QVEUzNzIgMzEKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzIwNDhJ
XzU5Xzk0X1NNUFRFMzcyIDMyCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8yMDQ4
UF8yNV8wMF9TTVBURTM3MiAzMwotI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMjA0
OElfNTBfMDBfU01QVEUzNzIgMzQKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzIw
NDhQXzI0XzAwX1NNUFRFMzcyIDM1Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8y
MDQ4UF8yM185OF9TTVBURTM3MiAzNgotI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRf
MjA0OElfNDhfMDBfU01QVEUzNzIgMzcKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFU
XzIwNDhJXzQ3Xzk2X1NNUFRFMzcyIDM4Ci0KLS8qCi0gKiBOVl9DVFJMX0dWSU9fREVURUNURURf
VklERU9fRk9STUFUIC0gaW5kaWNhdGVzIHRoZSBpbnB1dCB2aWRlbyBmb3JtYXQKLSAqIGRldGVj
dGVkIGZvciBHVk8gb3IgR1ZJIGRldmljZXM7IHRoZSBwb3NzaWJsZSB2YWx1ZXMgYXJlIHRoZQot
ICogTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVCBjb25zdGFudHMuCi0gKgotICogRm9yIEdWSSBk
ZXZpY2VzLCB0aGUgamFjayBudW1iZXIgc2hvdWxkIGJlIHNwZWNpZmllZCBpbiB0aGUgbG93ZXIK
LSAqIDE2IGJpdHMgb2YgdGhlICJkaXNwbGF5X21hc2siIHBhcmFtZXRlciwgd2hpbGUgdGhlIGNo
YW5uZWwgbnVtYmVyIHNob3VsZCBiZQotICogc3BlY2lmaWVkIGluIHRoZSB1cHBlciAxNiBiaXRz
LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HVklPX0RFVEVDVEVEX1ZJREVPX0ZPUk1BVCA3MSAv
KiBSLS1JICovCi0KLS8qCi0gKiBUaGUgZm9sbG93aW5nIGlzIGRlcHJlY2F0ZWQuICBVc2UgTlZf
Q1RSTF9HVklPX0RFVEVDVEVEX1ZJREVPX0ZPUk1BVCwKLSAqIGluc3RlYWQuCi0gKi8KLSNkZWZp
bmUgTlZfQ1RSTF9HVk9fSU5QVVRfVklERU9fRk9STUFUIDcxIC8qIFItLSAqLwotCi0vKgotICog
TlZfQ1RSTF9HVk9fREFUQV9GT1JNQVQgLSBUaGlzIGNvbnRyb2xzIGhvdyB0aGUgZGF0YSBpbiB0
aGUgc291cmNlCi0gKiAoZWl0aGVyIHRoZSBYIHNjcmVlbiBvciB0aGUgR0xYIHBidWZmZXIpIGlz
IGludGVycHJldHRlZCBhbmQKLSAqIGRpc3BsYXllZC4KLSAqCi0gKiBOb3RlOiBzb21lIG9mIHRo
ZSBiZWxvdyBEQVRBX0ZPUk1BVFMgaGF2ZSBiZWVuIHJlbmFtZWQuICBGb3IKLSAqIGV4YW1wbGUs
IFI4RzhCOF9UT19SR0I0NDQgaGFzIGJlZW4gcmVuYW1lZCB0byBYOFg4WDhfNDQ0X1BBU1NUSFJV
LgotICogVGhpcyBpcyB0byBtb3JlIGFjY3VyYXRlbHkgcmVmbGVjdCBEQVRBX0ZPUk1BVFMgd2hl
cmUgdGhlCi0gKiBwZXItY2hhbm5lbCBkYXRhIGNvdWxkIGJlIGVpdGhlciBSR0Igb3IgWUNyQ2Ig
LS0gdGhlIHBvaW50IGlzIHRoYXQKLSAqIHRoZSBkcml2ZXIgYW5kIEdWTyBoYXJkd2FyZSBkbyBu
b3QgcGVyZm9ybSBhbnkgaW1wbGljaXQgY29sb3Igc3BhY2UKLSAqIGNvbnZlcnNpb24gb24gdGhl
IGRhdGE7IGl0IGlzIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBTREkgb3V0LgotICovCi0KLSNkZWZp
bmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVQgNzIgLyogUlctICovCi0jZGVmaW5lIE5WX0NUUkxf
R1ZPX0RBVEFfRk9STUFUX1I4RzhCOF9UT19ZQ1JDQjQ0NCAwCi0jZGVmaW5lIE5WX0NUUkxfR1ZP
X0RBVEFfRk9STUFUX1I4RzhCOEE4X1RPX1lDUkNCQTQ0NDQgMQotI2RlZmluZSBOVl9DVFJMX0dW
T19EQVRBX0ZPUk1BVF9SOEc4QjhaMTBfVE9fWUNSQ0JaNDQ0NCAyCi0jZGVmaW5lIE5WX0NUUkxf
R1ZPX0RBVEFfRk9STUFUX1I4RzhCOF9UT19ZQ1JDQjQyMiAzCi0jZGVmaW5lIE5WX0NUUkxfR1ZP
X0RBVEFfRk9STUFUX1I4RzhCOEE4X1RPX1lDUkNCQTQyMjQgNAotI2RlZmluZSBOVl9DVFJMX0dW
T19EQVRBX0ZPUk1BVF9SOEc4QjhaMTBfVE9fWUNSQ0JaNDIyNCA1Ci0jZGVmaW5lIE5WX0NUUkxf
R1ZPX0RBVEFfRk9STUFUX1I4RzhCOF9UT19SR0I0NDQgNiAgLy8gcmVuYW1lZAotI2RlZmluZSBO
Vl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9YOFg4WDhfNDQ0X1BBU1NUSFJVIDYKLSNkZWZpbmUgTlZf
Q1RSTF9HVk9fREFUQV9GT1JNQVRfUjhHOEI4QThfVE9fUkdCQTQ0NDQgNyAgLy8gcmVuYW1lZAot
I2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9YOFg4WDhBOF80NDQ0X1BBU1NUSFJVIDcK
LSNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfUjhHOEI4WjEwX1RPX1JHQlo0NDQ0IDgg
IC8vIHJlbmFtZWQKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfWDhYOFg4WjhfNDQ0
NF9QQVNTVEhSVSA4Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1kxMENSMTBDQjEw
X1RPX1lDUkNCNDQ0IDkgIC8vIHJlbmFtZWQKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JN
QVRfWDEwWDEwWDEwXzQ0NF9QQVNTVEhSVSA5Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9S
TUFUX1kxMENSOENCOF9UT19ZQ1JDQjQ0NCAxMCAgLy8gcmVuYW1lZAotI2RlZmluZSBOVl9DVFJM
X0dWT19EQVRBX0ZPUk1BVF9YMTBYOFg4XzQ0NF9QQVNTVEhSVSAxMAotI2RlZmluZSBOVl9DVFJM
X0dWT19EQVRBX0ZPUk1BVF9ZMTBDUjhDQjhBMTBfVE9fWUNSQ0JBNDQ0NCAxMSAgLy8gcmVuYW1l
ZAotI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9YMTBYOFg4QTEwXzQ0NDRfUEFTU1RI
UlUgMTEKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfWTEwQ1I4Q0I4WjEwX1RPX1lD
UkNCWjQ0NDQgMTIgIC8vIHJlbmFtZWQKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRf
WDEwWDhYOFoxMF80NDQ0X1BBU1NUSFJVIDEyCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9S
TUFUX0RVQUxfUjhHOEI4X1RPX0RVQUxfWUNSQ0I0MjIgMTMKLSNkZWZpbmUgTlZfQ1RSTF9HVk9f
REFUQV9GT1JNQVRfRFVBTF9ZOENSOENCOF9UT19EVUFMX1lDUkNCNDIyIDE0ICAvLyByZW5hbWVk
Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX0RVQUxfWDhYOFg4X1RPX0RVQUxfNDIy
X1BBU1NUSFJVIDE0Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1IxMEcxMEIxMF9U
T19ZQ1JDQjQyMiAxNQotI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9SMTBHMTBCMTBf
VE9fWUNSQ0I0NDQgMTYKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfWTEyQ1IxMkNC
MTJfVE9fWUNSQ0I0NDQgMTcgIC8vIHJlbmFtZWQKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9G
T1JNQVRfWDEyWDEyWDEyXzQ0NF9QQVNTVEhSVSAxNwotI2RlZmluZSBOVl9DVFJMX0dWT19EQVRB
X0ZPUk1BVF9SMTJHMTJCMTJfVE9fWUNSQ0I0NDQgMTgKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fREFU
QV9GT1JNQVRfWDhYOFg4XzQyMl9QQVNTVEhSVSAxOQotI2RlZmluZSBOVl9DVFJMX0dWT19EQVRB
X0ZPUk1BVF9YOFg4WDhBOF80MjI0X1BBU1NUSFJVIDIwCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0RB
VEFfRk9STUFUX1g4WDhYOFo4XzQyMjRfUEFTU1RIUlUgMjEKLSNkZWZpbmUgTlZfQ1RSTF9HVk9f
REFUQV9GT1JNQVRfWDEwWDEwWDEwXzQyMl9QQVNTVEhSVSAyMgotI2RlZmluZSBOVl9DVFJMX0dW
T19EQVRBX0ZPUk1BVF9YMTBYOFg4XzQyMl9QQVNTVEhSVSAyMwotI2RlZmluZSBOVl9DVFJMX0dW
T19EQVRBX0ZPUk1BVF9YMTBYOFg4QTEwXzQyMjRfUEFTU1RIUlUgMjQKLSNkZWZpbmUgTlZfQ1RS
TF9HVk9fREFUQV9GT1JNQVRfWDEwWDhYOFoxMF80MjI0X1BBU1NUSFJVIDI1Ci0jZGVmaW5lIE5W
X0NUUkxfR1ZPX0RBVEFfRk9STUFUX1gxMlgxMlgxMl80MjJfUEFTU1RIUlUgMjYKLSNkZWZpbmUg
TlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfUjEyRzEyQjEyX1RPX1lDUkNCNDIyIDI3Ci0KLS8qCi0g
KiBOVl9DVFJMX0dWT19ESVNQTEFZX1hfU0NSRUVOIC0gbm8gbG9uZ2VyIHN1cHBvcnRlZAotICov
Ci0KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fRElTUExBWV9YX1NDUkVFTiA3MyAvKiBSVy0gKi8KLSNk
ZWZpbmUgTlZfQ1RSTF9HVk9fRElTUExBWV9YX1NDUkVFTl9FTkFCTEUgMQotI2RlZmluZSBOVl9D
VFJMX0dWT19ESVNQTEFZX1hfU0NSRUVOX0RJU0FCTEUgMAotCi0vKgotICogTlZfQ1RSTF9HVk9f
Q09NUE9TSVRFX1NZTkNfSU5QVVRfREVURUNURUQgLSBpbmRpY2F0ZXMgd2hldGhlcgotICogQ29t
cG9zaXRlIFN5bmMgaW5wdXQgaXMgZGV0ZWN0ZWQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dW
T19DT01QT1NJVEVfU1lOQ19JTlBVVF9ERVRFQ1RFRCA3NCAvKiBSLS0gKi8KLSNkZWZpbmUgTlZf
Q1RSTF9HVk9fQ09NUE9TSVRFX1NZTkNfSU5QVVRfREVURUNURURfRkFMU0UgMAotI2RlZmluZSBO
Vl9DVFJMX0dWT19DT01QT1NJVEVfU1lOQ19JTlBVVF9ERVRFQ1RFRF9UUlVFIDEKLQotLyoKLSAq
IE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9TWU5DX0lOUFVUX0RFVEVDVF9NT0RFIC0gZ2V0L3NldCB0
aGUKLSAqIENvbXBvc2l0ZSBTeW5jIGlucHV0IGRldGVjdCBtb2RlLgotICovCi0KLSNkZWZpbmUg
TlZfQ1RSTF9HVk9fQ09NUE9TSVRFX1NZTkNfSU5QVVRfREVURUNUX01PREUgNzUgLyogUlctICov
Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9TWU5DX0lOUFVUX0RFVEVDVF9NT0RFX0FV
VE8gMAotI2RlZmluZSBOVl9DVFJMX0dWT19DT01QT1NJVEVfU1lOQ19JTlBVVF9ERVRFQ1RfTU9E
RV9CSV9MRVZFTCAxCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9TWU5DX0lOUFVUX0RF
VEVDVF9NT0RFX1RSSV9MRVZFTCAyCi0KLS8qCi0gKiBOVl9DVFJMX0dWT19TWU5DX0lOUFVUX0RF
VEVDVEVEIC0gaW5kaWNhdGVzIHdoZXRoZXIgU0RJIFN5bmMgaW5wdXQKLSAqIGlzIGRldGVjdGVk
LCBhbmQgd2hhdCB0eXBlLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fU0RJX1NZTkNfSU5Q
VVRfREVURUNURUQgNzYgLyogUi0tICovCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX1NESV9TWU5DX0lO
UFVUX0RFVEVDVEVEX05PTkUgMAotI2RlZmluZSBOVl9DVFJMX0dWT19TRElfU1lOQ19JTlBVVF9E
RVRFQ1RFRF9IRCAxCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX1NESV9TWU5DX0lOUFVUX0RFVEVDVEVE
X1NEIDIKLQotLyoKLSAqIE5WX0NUUkxfR1ZPX1ZJREVPX09VVFBVVFMgLSBpbmRpY2F0ZXMgd2hp
Y2ggR1ZPIHZpZGVvIG91dHB1dAotICogY29ubmVjdG9ycyBhcmUgY3VycmVudGx5IG91dHB1dGlu
ZyBkYXRhLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fT1VUUFVUUyA3NyAvKiBS
LS0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fT1VUUFVUU19OT05FIDAKLSNkZWZpbmUg
TlZfQ1RSTF9HVk9fVklERU9fT1VUUFVUU19WSURFTzEgMQotI2RlZmluZSBOVl9DVFJMX0dWT19W
SURFT19PVVRQVVRTX1ZJREVPMiAyCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX09VVFBVVFNf
VklERU9fQk9USCAzCi0KLS8qCi0gKiBOVl9DVFJMX0dWT19GUEdBX1ZFUlNJT04gLSBpbmRpY2F0
ZXMgdGhlIHZlcnNpb24gb2YgdGhlIEZpcm13YXJlIG9uCi0gKiB0aGUgR1ZPIGRldmljZS4gIERl
cHJlY2F0ZWQ7IHVzZQotICogTlZfQ1RSTF9TVFJJTkdfR1ZJT19GSVJNV0FSRV9WRVJTSU9OIGlu
c3RlYWQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWT19GSVJNV0FSRV9WRVJTSU9OIDc4IC8q
IFItLSAqLwotCi0vKgotICogTlZfQ1RSTF9HVk9fU1lOQ19ERUxBWV9QSVhFTFMgLSBjb250cm9s
cyB0aGUgZGVsYXkgYmV0d2VlbiB0aGUKLSAqIGlucHV0IHN5bmMgYW5kIHRoZSBvdXRwdXQgc3lu
YyBpbiBudW1iZXJzIG9mIHBpeGVscyBmcm9tIGhzeW5jOwotICogdGhpcyBpcyBhIDEyIGJpdCB2
YWx1ZS4KLSAqCi0gKiBJZiB0aGUgTlZfQ1RSTF9HVk9fQ0FQQUJJTElUSUVTX0FEVkFOQ0VfU1lO
Q19TS0VXIGJpdCBpcyBzZXQsCi0gKiB0aGVuIHNldHRpbmcgdGhpcyB2YWx1ZSB3aWxsIHNldCBh
biBhZHZhbmNlIGluc3RlYWQgb2YgYSBkZWxheS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZP
X1NZTkNfREVMQVlfUElYRUxTIDc5IC8qIFJXLSAqLwotCi0vKgotICogTlZfQ1RSTF9HVk9fU1lO
Q19ERUxBWV9MSU5FUyAtIGNvbnRyb2xzIHRoZSBkZWxheSBiZXR3ZWVuIHRoZSBpbnB1dAotICog
c3luYyBhbmQgdGhlIG91dHB1dCBzeW5jIGluIG51bWJlcnMgb2YgbGluZXMgZnJvbSB2c3luYzsg
dGhpcyBpcyBhCi0gKiAxMiBiaXQgdmFsdWUuCi0gKgotICogSWYgdGhlIE5WX0NUUkxfR1ZPX0NB
UEFCSUxJVElFU19BRFZBTkNFX1NZTkNfU0tFVyBiaXQgaXMgc2V0LAotICogdGhlbiBzZXR0aW5n
IHRoaXMgdmFsdWUgd2lsbCBzZXQgYW4gYWR2YW5jZSBpbnN0ZWFkIG9mIGEgZGVsYXkuCi0gKi8K
LQotI2RlZmluZSBOVl9DVFJMX0dWT19TWU5DX0RFTEFZX0xJTkVTIDgwIC8qIFJXLSAqLwotCi0v
KgotICogTlZfQ1RSTF9HVk9fSU5QVVRfVklERU9fRk9STUFUX1JFQUNRVUlSRSAtIG11c3QgYmUg
c2V0IGZvciBhIHBlcmlvZAotICogb2YgYWJvdXQgMiBzZWNvbmRzIGZvciB0aGUgbmV3IElucHV0
VmlkZW9Gb3JtYXQgdG8gYmUgcHJvcGVybHkKLSAqIGxvY2tlZCB0by4gIEluIG52aWRpYS1zZXR0
aW5ncywgd2UgZG8gYSByZWFjcXVpcmUgd2hlbmV2ZXIgZ2VubG9jawotICogb3IgZnJhbWUgbG9j
ayBtb2RlIGlzIGVudGVyZWQgaW50bywgd2hlbiB0aGUgdXNlciBjbGlja3MgdGhlCi0gKiAiZGV0
ZWN0IiBidXR0b24uICBUaGlzIHZhbHVlIGNhbiBiZSB3cml0dGVuLCBidXQgYWx3YXlzIHJlYWRz
IGJhY2sKLSAqIF9GQUxTRS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0lOUFVUX1ZJREVP
X0ZPUk1BVF9SRUFDUVVJUkUgODEgLyogLVctICovCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0lOUFVU
X1ZJREVPX0ZPUk1BVF9SRUFDUVVJUkVfRkFMU0UgMAotI2RlZmluZSBOVl9DVFJMX0dWT19JTlBV
VF9WSURFT19GT1JNQVRfUkVBQ1FVSVJFX1RSVUUgMQotCi0vKgotICogTlZfQ1RSTF9HVk9fR0xY
X0xPQ0tFRCAtIGluZGljYXRlcyB0aGF0IEdWTyBjb25maWd1cmFiaWxpdHkgaXMKLSAqIGxvY2tl
ZCBieSBHTFg7IHRoaXMgb2NjdXJzIHdoZW4gZWl0aGVyIGdsWEdldFZpZGVvRGV2aWNlTlYgKHBh
cnQgb2YKLSAqIEdMWF9OVl92aWRlb19vdXQpIG9yIGdsWEJpbmRWaWRlb0RldmljZU5WIChwYXJ0
IG9mCi0gKiBHTFhfTlZfcHJlc2VudF92aWRlbykgaXMgY2FsbGVkLiAgQWxsIEdWTyBvdXRwdXQg
cmVzb3VyY2VzIGFyZQotICogbG9ja2VkIHVudGlsIHJlbGVhc2VkIGJ5IHRoZSBHTFhfTlZfdmlk
ZW9fb3V0L0dMWF9OVl9wcmVzZW50X3ZpZGVvCi0gKiBjbGllbnQuCi0gKgotICogV2hlbiBHVk8g
aXMgbG9ja2VkLCBzZXR0aW5nIG9mIHRoZSBmb2xsb3dpbmcgR1ZPIE5WLUNPTlRST0wgYXR0cmli
dXRlcyB3aWxsCi0gKiBub3QgaGFwcGVuIGltbWVkaWF0ZWx5IGFuZCB3aWxsIGluc3RlYWQgYmUg
Y2FjaGVkLiAgVGhlIEdWTyByZXNvdXJjZSB3aWxsCi0gKiBuZWVkIHRvIGJlIGRpc2FibGVkL3Jl
bGVhc2VkIGFuZCByZS1lbmFibGVkL2NsYWltZWQgZm9yIHRoZSB2YWx1ZXMgdG8gYmUKLSAqIGZs
dXNoZWQuIFRoZXNlIGF0dHJpYnV0ZXMgYXJlOgotICogICAgTlZfQ1RSTF9HVklPX1JFUVVFU1RF
RF9WSURFT19GT1JNQVQKLSAqICAgIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUCi0gKiAgICBOVl9D
VFJMX0dWT19GTElQX1FVRVVFX1NJWkUKLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBpcyBkZXByZWNh
dGVkIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiBhIGZ1dHVyZSByZWxlYXNlLiAgSXRzCi0gKiBmdW5j
dGlvbmFsaXR5IGhhcyBiZWVuIHJlcGxhY2VkIGJ5IE5WX0NUUkxfR1ZPX0xPQ0tfT1dORVIuCi0g
Ki8KLQotI2RlZmluZSBOVl9DVFJMX0dWT19HTFhfTE9DS0VEIDgyIC8qIFItLSAqLwotI2RlZmlu
ZSBOVl9DVFJMX0dWT19HTFhfTE9DS0VEX0ZBTFNFIDAKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fR0xY
X0xPQ0tFRF9UUlVFIDEKLQotLyoKLSAqIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfe1dJRFRI
LEhFSUdIVCxSRUZSRVNIX1JBVEV9IC0gcXVlcnkgdGhlCi0gKiB3aWR0aCwgaGVpZ2h0LCBhbmQg
cmVmcmVzaCByYXRlIGZvciB0aGUgc3BlY2lmaWVkCi0gKiBOVl9DVFJMX0dWSU9fVklERU9fRk9S
TUFUXyouICBTbyB0aGF0IHRoaXMgY2FuIGJlIHF1ZXJpZWQgd2l0aAotICogZXhpc3RpbmcgaW50
ZXJmYWNlcywgWE5WQ1RSTFF1ZXJ5QXR0cmlidXRlKCkgc2hvdWxkIGJlIHVzZWQsIGFuZAotICog
dGhlIHZpZGVvIGZvcm1hdCBzcGVjaWZpZWQgaW4gdGhlIGRpc3BsYXlfbWFzayBmaWVsZDsgZWc6
Ci0gKgotICogWE5WQ1RSTFF1ZXJ5QXR0cmlidXRlIChkcHksCi0gKiAgICAgICAgICAgICAgICAg
ICAgICAgIHNjcmVlbiwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgTlZfQ1RSTF9HVklPX1ZJ
REVPX0ZPUk1BVF80ODdJXzU5Xzk0X1NNUFRFMjU5X05UU0MsCi0gKiAgICAgICAgICAgICAgICAg
ICAgICAgIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfV0lEVEgsCi0gKiAgICAgICAgICAgICAg
ICAgICAgICAgICZ2YWx1ZSk7Ci0gKgotICogTm90ZSB0aGF0IFJlZnJlc2ggUmF0ZSBpcyBpbiBt
aWxsaUhlcnR6IHZhbHVlcwotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1B
VF9XSURUSCA4MyAgICAgICAgLyogUi0tSSAqLwotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9f
Rk9STUFUX0hFSUdIVCA4NCAgICAgICAvKiBSLS1JICovCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19W
SURFT19GT1JNQVRfUkVGUkVTSF9SQVRFIDg1IC8qIFItLUkgKi8KLQotLyogVGhlIGZvbGxvd2lu
ZyBhcmUgZGVwcmVjYXRlZDsgdXNlIHRoZSBOVl9DVFJMX0dWSU9fKiB2ZXJzaW9ucywgaW5zdGVh
ZCAqLwotI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfV0lEVEggODMgICAgICAgIC8q
IFItLSAqLwotI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfSEVJR0hUIDg0ICAgICAg
IC8qIFItLSAqLwotI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfUkVGUkVTSF9SQVRF
IDg1IC8qIFItLSAqLwotCi0vKgotICogTlZfQ1RSTF9HVk9fWF9TQ1JFRU5fUEFOX1tYWV0gLSBu
byBsb25nZXIgc3VwcG9ydGVkCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWT19YX1NDUkVFTl9Q
QU5fWCA4NiAvKiBSVy0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fWF9TQ1JFRU5fUEFOX1kgODcg
LyogUlctICovCi0KLS8qCi0gKiBOVl9DVFJMX0dQVV9PVkVSQ0xPQ0tJTkdfU1RBVEUgLSBxdWVy
eSB0aGUgY3VycmVudCBvciBzZXQgYSBuZXcKLSAqIG92ZXJjbG9ja2luZyBzdGF0ZTsgdGhlIHZh
bHVlIG9mIHRoaXMgYXR0cmlidXRlIGNvbnRyb2xzIHRoZQotICogYXZhaWxhYmlsaXR5IG9mIGFk
ZGl0aW9uYWwgb3ZlcmNsb2NraW5nIGF0dHJpYnV0ZXMgKHNlZSBiZWxvdykuCi0gKgotICogTm90
ZTogdGhpcyBhdHRyaWJ1dGUgaXMgdW5hdmFpbGFibGUgdW5sZXNzIG92ZXJjbG9ja2luZyBzdXBw
b3J0Ci0gKiBoYXMgYmVlbiBlbmFibGVkIGluIHRoZSBYIHNlcnZlciAoYnkgdGhlIHVzZXIpLgot
ICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfT1ZFUkNMT0NLSU5HX1NUQVRFIDg4IC8qIFJXLUcg
Ki8KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfT1ZFUkNMT0NLSU5HX1NUQVRFX05PTkUgMAotI2RlZmlu
ZSBOVl9DVFJMX0dQVV9PVkVSQ0xPQ0tJTkdfU1RBVEVfTUFOVUFMIDEKLQotLyoKLSAqIE5WX0NU
UkxfR1BVX3syLDN9RF9DTE9DS19GUkVRUyAtIHF1ZXJ5IG9yIHNldCB0aGUgR1BVIGFuZCBtZW1v
cnkKLSAqIGNsb2NrcyBvZiB0aGUgZGV2aWNlIGRyaXZpbmcgdGhlIFggc2NyZWVuLiAgTmV3IGNs
b2NrIGZyZXF1ZW5jaWVzCi0gKiBhcmUgdGVzdGVkIGJlZm9yZSBiZWluZyBhcHBsaWVkLCBhbmQg
bWF5IGJlIHJlamVjdGVkLgotICoKLSAqIE5vdGU6IGlmIHRoZSB0YXJnZXQgY2xvY2tzIGFyZSB0
b28gYWdncmVzc2l2ZSwgdGhlaXIgdGVzdGluZyBtYXkKLSAqIHJlbmRlciB0aGUgc3lzdGVtIHVu
cmVzcG9uc2l2ZS4KLSAqCi0gKiBOb3RlOiB3aGlsZSB0aGlzIGF0dHJpYnV0ZSBjYW4gYWx3YXlz
IGJlIHF1ZXJpZWQsIGl0IGNhbid0IGJlIHNldAotICogdW5sZXNzIE5WX0NUUkxfR1BVX09WRVJD
TE9DS0lOR19TVEFURSBpcyBzZXQgdG8gX01BTlVBTC4gIFNpbmNlCi0gKiB0aGUgdGFyZ2V0IGNs
b2NrcyBtYXkgYmUgcmVqZWN0ZWQsIHRoZSByZXF1ZXN0ZXIgc2hvdWxkIHJlYWQgdGhpcwotICog
YXR0cmlidXRlIGFmdGVyIHRoZSBzZXQgdG8gZGV0ZXJtaW5lIHN1Y2Nlc3Mgb3IgZmFpbHVyZS4K
LSAqCi0gKiBOVl9DVFJMX0dQVV97MiwzfURfQ0xPQ0tfRlJFUVMgYXJlICJwYWNrZWQiIGludGVn
ZXIgYXR0cmlidXRlczsgdGhlCi0gKiBHUFUgY2xvY2sgaXMgc3RvcmVkIGluIHRoZSB1cHBlciAx
NiBiaXRzIG9mIHRoZSBpbnRlZ2VyLCBhbmQgdGhlCi0gKiBtZW1vcnkgY2xvY2sgaXMgc3RvcmVk
IGluIHRoZSBsb3dlciAxNiBiaXRzIG9mIHRoZSBpbnRlZ2VyLiAgQWxsCi0gKiBjbG9jayB2YWx1
ZXMgYXJlIGluIE1Iei4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1BVXzJEX0NMT0NLX0ZSRVFT
IDg5IC8qIFJXLUcgKi8KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfM0RfQ0xPQ0tfRlJFUVMgOTAgLyog
UlctRyAqLwotCi0vKgotICogTlZfQ1RSTF9HUFVfREVGQVVMVF97MiwzfURfQ0xPQ0tfRlJFUVMg
LSBxdWVyeSB0aGUgZGVmYXVsdCBtZW1vcnkKLSAqIGFuZCBHUFUgY29yZSBjbG9ja3Mgb2YgdGhl
IGRldmljZSBkcml2aW5nIHRoZSBYIHNjcmVlbi4KLSAqCi0gKiBOVl9DVFJMX0dQVV9ERUZBVUxU
X3syLDN9RF9DTE9DS19GUkVRUyBhcmUgInBhY2tlZCIgaW50ZWdlcgotICogYXR0cmlidXRlczsg
dGhlIEdQVSBjbG9jayBpcyBzdG9yZWQgaW4gdGhlIHVwcGVyIDE2IGJpdHMgb2YgdGhlCi0gKiBp
bnRlZ2VyLCBhbmQgdGhlIG1lbW9yeSBjbG9jayBpcyBzdG9yZWQgaW4gdGhlIGxvd2VyIDE2IGJp
dHMgb2YgdGhlCi0gKiBpbnRlZ2VyLiAgQWxsIGNsb2NrIHZhbHVlcyBhcmUgaW4gTUh6LgotICov
Ci0KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfREVGQVVMVF8yRF9DTE9DS19GUkVRUyA5MSAvKiBSLS1H
ICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0RFRkFVTFRfM0RfQ0xPQ0tfRlJFUVMgOTIgLyogUi0t
RyAqLwotCi0vKgotICogTlZfQ1RSTF9HUFVfQ1VSUkVOVF9DTE9DS19GUkVRUyAtIHF1ZXJ5IHRo
ZSBjdXJyZW50IEdQVSBhbmQgbWVtb3J5Ci0gKiBjbG9ja3Mgb2YgdGhlIGdyYXBoaWNzIGRldmlj
ZSBkcml2aW5nIHRoZSBYIHNjcmVlbi4KLSAqCi0gKiBOVl9DVFJMX0dQVV9DVVJSRU5UX0NMT0NL
X0ZSRVFTIGlzIGEgInBhY2tlZCIgaW50ZWdlciBhdHRyaWJ1dGU7Ci0gKiB0aGUgR1BVIGNsb2Nr
IGlzIHN0b3JlZCBpbiB0aGUgdXBwZXIgMTYgYml0cyBvZiB0aGUgaW50ZWdlciwgYW5kCi0gKiB0
aGUgbWVtb3J5IGNsb2NrIGlzIHN0b3JlZCBpbiB0aGUgbG93ZXIgMTYgYml0cyBvZiB0aGUgaW50
ZWdlci4KLSAqIEFsbCBjbG9jayB2YWx1ZXMgYXJlIGluIE1Iei4gIEFsbCBjbG9jayB2YWx1ZXMg
YXJlIGluIE1Iei4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0NVUlJFTlRfQ0xPQ0tfRlJF
UVMgOTMgLyogUi0tRyAqLwotCi0vKgotICogTlZfQ1RSTF9HUFVfT1BUSU1BTF9DTE9DS19GUkVR
UyAtIEhvbGRzIHRoZSBsYXN0IGNhbGN1bGF0ZWQKLSAqIG9wdGltYWwgM0QgY2xvY2sgZnJlcXVl
bmNpZXMgZm91bmQgYnkgdGhlCi0gKiBOVl9DVFJMX0dQVV9PUFRJTUFMX0NMT0NLX0ZSRVFTX0RF
VEVDVElPTiBwcm9jZXNzLiAgUXVlcnlpbmcgdGhpcwotICogYXR0cmlidXRlIGJlZm9yZSBoYXZp
bmcgcHJvYmVkIGZvciB0aGUgb3B0aW1hbCBjbG9ja3Mgd2lsbCByZXR1cm4KLSAqIE5WX0NUUkxf
R1BVX09QVElNQUxfQ0xPQ0tfRlJFUVNfSU5WQUxJRAotICoKLSAqIE5vdGU6IHVubGVzcyBOVl9D
VFJMX0dQVV9PVkVSQ0xPQ0tJTkdfU1RBVEUgaXMgc2V0IHRvIF9NQU5VQUwsIHRoZQotICogb3B0
aW1hbCBjbG9jayBkZXRlY3Rpb24gcHJvY2VzcyBpcyB1bmF2YWlsYWJsZS4KLSAqLwotCi0jZGVm
aW5lIE5WX0NUUkxfR1BVX09QVElNQUxfQ0xPQ0tfRlJFUVMgOTQgLyogUi0tRyAqLwotI2RlZmlu
ZSBOVl9DVFJMX0dQVV9PUFRJTUFMX0NMT0NLX0ZSRVFTX0lOVkFMSUQgMAotCi0vKgotICogTlZf
Q1RSTF9HUFVfT1BUSU1BTF9DTE9DS19GUkVRU19ERVRFQ1RJT04gLSBzZXQgdG8gX1NUQVJUIHRv
Ci0gKiBpbml0aWF0ZSB0ZXN0aW5nIGZvciB0aGUgb3B0aW1hbCAzRCBjbG9jayBmcmVxdWVuY2ll
cy4gIE9uY2UKLSAqIGZvdW5kLCB0aGUgb3B0aW1hbCBjbG9jayBmcmVxdWVuY2llcyB3aWxsIGJl
IHJldHVybmVkIGJ5IHRoZQotICogTlZfQ1RSTF9HUFVfT1BUSU1BTF9DTE9DS19GUkVRUyBhdHRy
aWJ1dGUgYXN5bmNocm9ub3VzbHkKLSAqICh1c2luZyBhbiBYIGV2ZW50LCBzZWUgWE5WQ3RybFNl
bGVjdE5vdGlmeSkuCi0gKgotICogVG8gY2FuY2VsIGFuIG9uZ29pbmcgdGVzdCBmb3IgdGhlIG9w
dGltYWwgY2xvY2tzLCBzZXQgdGhlCi0gKiBOVl9DVFJMX0dQVV9PUFRJTUFMX0NMT0NLX0ZSRVFT
X0RFVEVDVElPTiBhdHRyaWJ1dGUgdG8gX0NBTkNFTAotICoKLSAqIE5vdGU6IHVubGVzcyBOVl9D
VFJMX0dQVV9PVkVSQ0xPQ0tJTkdfU1RBVEUgaXMgc2V0IHRvIF9NQU5VQUwsIHRoZQotICogb3B0
aW1hbCBjbG9jayBkZXRlY3Rpb24gcHJvY2VzcyBpcyB1bmF2YWlsYWJsZS4KLSAqLwotCi0jZGVm
aW5lIE5WX0NUUkxfR1BVX09QVElNQUxfQ0xPQ0tfRlJFUVNfREVURUNUSU9OIDk1IC8qIC1XLUcg
Ki8KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfT1BUSU1BTF9DTE9DS19GUkVRU19ERVRFQ1RJT05fU1RB
UlQgMAotI2RlZmluZSBOVl9DVFJMX0dQVV9PUFRJTUFMX0NMT0NLX0ZSRVFTX0RFVEVDVElPTl9D
QU5DRUwgMQotCi0vKgotICogTlZfQ1RSTF9HUFVfT1BUSU1BTF9DTE9DS19GUkVRU19ERVRFQ1RJ
T05fU1RBVEUgLSBxdWVyeSB0aGlzCi0gKiB2YXJpYWJsZSB0byBrbm93IGlmIGEgdGVzdCBpcyBj
dXJyZW50bHkgYmVpbmcgcnVuIHRvCi0gKiBkZXRlcm1pbmUgdGhlIG9wdGltYWwgM0QgY2xvY2sg
ZnJlcXVlbmNpZXMuICBfQlVTWSBtZWFucyBhCi0gKiB0ZXN0IGlzIGN1cnJlbnRseSBydW5uaW5n
LCBfSURMRSBtZWFucyB0aGUgdGVzdCBpcyBub3QgcnVubmluZy4KLSAqCi0gKiBOb3RlOiB1bmxl
c3MgTlZfQ1RSTF9HUFVfT1ZFUkNMT0NLSU5HX1NUQVRFIGlzIHNldCB0byBfTUFOVUFMLCB0aGUK
LSAqIG9wdGltYWwgY2xvY2sgZGV0ZWN0aW9uIHByb2Nlc3MgaXMgdW5hdmFpbGFibGUuCi0gKi8K
LQotI2RlZmluZSBOVl9DVFJMX0dQVV9PUFRJTUFMX0NMT0NLX0ZSRVFTX0RFVEVDVElPTl9TVEFU
RSA5NiAvKiBSLS1HICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX09QVElNQUxfQ0xPQ0tfRlJFUVNf
REVURUNUSU9OX1NUQVRFX0lETEUgMAotI2RlZmluZSBOVl9DVFJMX0dQVV9PUFRJTUFMX0NMT0NL
X0ZSRVFTX0RFVEVDVElPTl9TVEFURV9CVVNZIDEKLQotLyoKLSAqIE5WX0NUUkxfRkxBVFBBTkVM
X0NISVBfTE9DQVRJT04gLSBmb3IgdGhlIHNwZWNpZmllZCBkaXNwbGF5IGRldmljZSwKLSAqIHJl
cG9ydCB3aGV0aGVyIHRoZSBmbGF0IHBhbmVsIGlzIGRyaXZlbiBieSB0aGUgb24tY2hpcCBjb250
cm9sbGVyLAotICogb3IgYSBzZXBhcmF0ZSBjb250cm9sbGVyIGNoaXAgZWxzZXdoZXJlIG9uIHRo
ZSBncmFwaGljcyBib2FyZC4KLSAqIFRoaXMgYXR0cmlidXRlIGlzIG9ubHkgYXZhaWxhYmxlIGZv
ciBmbGF0IHBhbmVscy4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX0NISVBfTE9D
QVRJT04gMjE1IC8qIFItREcgKi8KLSNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxfQ0hJUF9MT0NB
VElPTl9JTlRFUk5BTCAwCi0jZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX0NISVBfTE9DQVRJT05f
RVhURVJOQUwgMQotCi0vKgotICogTlZfQ1RSTF9GTEFUUEFORUxfTElOSyAtIHJlcG9ydCB0aGUg
bnVtYmVyIG9mIGxpbmtzIGZvciBhIERWSSBjb25uZWN0aW9uLCBvcgotICogdGhlIG1haW4gbGlu
aydzIGFjdGl2ZSBsYW5lIGNvdW50IGZvciBEaXNwbGF5UG9ydC4KLSAqIFRoaXMgYXR0cmlidXRl
IGlzIG9ubHkgYXZhaWxhYmxlIGZvciBmbGF0IHBhbmVscy4KLSAqLwotCi0jZGVmaW5lIE5WX0NU
UkxfRkxBVFBBTkVMX0xJTksgMjE2IC8qIFItREcgKi8KLSNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFO
RUxfTElOS19TSU5HTEUgMAotI2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9MSU5LX0RVQUwgMQot
I2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9MSU5LX1FVQUQgMwotCi0vKgotICogTlZfQ1RSTF9G
TEFUUEFORUxfU0lHTkFMIC0gZm9yIHRoZSBzcGVjaWZpZWQgZGlzcGxheSBkZXZpY2UsIHJlcG9y
dAotICogd2hldGhlciB0aGUgZmxhdCBwYW5lbCBpcyBkcml2ZW4gYnkgYW4gTFZEUywgVE1EUywg
b3IgRGlzcGxheVBvcnQgc2lnbmFsLgotICogVGhpcyBhdHRyaWJ1dGUgaXMgb25seSBhdmFpbGFi
bGUgZm9yIGZsYXQgcGFuZWxzLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxfU0lH
TkFMIDIxNyAvKiBSLURHICovCi0jZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX1NJR05BTF9MVkRT
IDAKLSNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxfU0lHTkFMX1RNRFMgMQotI2RlZmluZSBOVl9D
VFJMX0ZMQVRQQU5FTF9TSUdOQUxfRElTUExBWVBPUlQgMgotCi0vKgotICogTlZfQ1RSTF9VU0Vf
SE9VU0VfU1lOQyAtIHdoZW4gVFJVRSwgdGhlIHNlcnZlciAobWFzdGVyKSBmcmFtZSBsb2NrCi0g
KiBkZXZpY2Ugd2lsbCBwcm9wYWdhdGUgdGhlIGluY29taW5nIGhvdXNlIHN5bmMgc2lnbmFsIGFz
IHRoZSBvdXRnb2luZwotICogZnJhbWUgbG9jayBzeW5jIHNpZ25hbC4gIElmIHRoZSBmcmFtZSBs
b2NrIGRldmljZSBjYW5ub3QgZGV0ZWN0IGEKLSAqIGZyYW1lIGxvY2sgc3luYyBzaWduYWwsIGl0
IHdpbGwgZGVmYXVsdCB0byB1c2luZyB0aGUgaW50ZXJuYWwgdGltaW5ncwotICogZnJvbSB0aGUg
R1BVIGNvbm5lY3RlZCB0byB0aGUgcHJpbWFyeSBjb25uZWN0b3IuCi0gKgotICogVGhpcyBhdHRy
aWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUo
KQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0ZSQU1FTE9DSyBvciBOVl9DVFJMX1RB
UkdFVF9UWVBFX1hfU0NSRUVOCi0gKiB0YXJnZXQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1VT
RV9IT1VTRV9TWU5DIDIxOCAvKiBSVy1GICovCi0jZGVmaW5lIE5WX0NUUkxfVVNFX0hPVVNFX1NZ
TkNfRkFMU0UgMAotI2RlZmluZSBOVl9DVFJMX1VTRV9IT1VTRV9TWU5DX1RSVUUgMQotCi0vKgot
ICogTlZfQ1RSTF9FRElEX0FWQUlMQUJMRSAtIHJlcG9ydCBpZiBhbiBFRElEIGlzIGF2YWlsYWJs
ZSBmb3IgdGhlCi0gKiBzcGVjaWZpZWQgZGlzcGxheSBkZXZpY2UuCi0gKgotICogVGhpcyBhdHRy
aWJ1dGUgbWF5IGFsc28gYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJp
YnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIG9yIE5WX0NUUkxfVEFS
R0VUX1RZUEVfWF9TQ1JFRU4KLSAqIHRhcmdldC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfRURJ
RF9BVkFJTEFCTEUgMjE5IC8qIFItREcgKi8KLSNkZWZpbmUgTlZfQ1RSTF9FRElEX0FWQUlMQUJM
RV9GQUxTRSAwCi0jZGVmaW5lIE5WX0NUUkxfRURJRF9BVkFJTEFCTEVfVFJVRSAxCi0KLS8qCi0g
KiBOVl9DVFJMX0ZPUkNFX1NURVJFTyAtIHdoZW4gVFJVRSwgT3BlbkdMIHdpbGwgZm9yY2Ugc3Rl
cmVvIGZsaXBwaW5nCi0gKiBldmVuIHdoZW4gbm8gc3RlcmVvIGRyYXdhYmxlcyBhcmUgdmlzaWJs
ZSAoaWYgdGhlIGRldmljZSBpcyBjb25maWd1cmVkCi0gKiB0byBzdXBwb3J0IGl0LCBzZWUgdGhl
ICJTdGVyZW8iIFggY29uZmlnIG9wdGlvbikuCi0gKiBXaGVuIGZhbHNlLCBmYWxsIGJhY2sgdG8g
dGhlIGRlZmF1bHQgYmVoYXZpb3Igb2Ygb25seSBmbGlwcGluZyB3aGVuIGEKLSAqIHN0ZXJlbyBk
cmF3YWJsZSBpcyB2aXNpYmxlLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9GT1JDRV9TVEVSRU8g
MjIwIC8qIFJXLSAqLwotI2RlZmluZSBOVl9DVFJMX0ZPUkNFX1NURVJFT19GQUxTRSAwCi0jZGVm
aW5lIE5WX0NUUkxfRk9SQ0VfU1RFUkVPX1RSVUUgMQotCi0vKgotICogTlZfQ1RSTF9JTUFHRV9T
RVRUSU5HUyAtIHRoZSBpbWFnZSBxdWFsaXR5IHNldHRpbmcgZm9yIE9wZW5HTCBjbGllbnRzLgot
ICoKLSAqIFRoaXMgc2V0dGluZyBpcyBvbmx5IGFwcGxpZWQgdG8gT3BlbkdMIGNsaWVudHMgdGhh
dCBhcmUgc3RhcnRlZAotICogYWZ0ZXIgdGhpcyBzZXR0aW5nIGlzIGFwcGxpZWQuCi0gKi8KLQot
I2RlZmluZSBOVl9DVFJMX0lNQUdFX1NFVFRJTkdTIDIyMSAvKiBSVy1YICovCi0jZGVmaW5lIE5W
X0NUUkxfSU1BR0VfU0VUVElOR1NfSElHSF9RVUFMSVRZIDAKLSNkZWZpbmUgTlZfQ1RSTF9JTUFH
RV9TRVRUSU5HU19RVUFMSVRZIDEKLSNkZWZpbmUgTlZfQ1RSTF9JTUFHRV9TRVRUSU5HU19QRVJG
T1JNQU5DRSAyCi0jZGVmaW5lIE5WX0NUUkxfSU1BR0VfU0VUVElOR1NfSElHSF9QRVJGT1JNQU5D
RSAzCi0KLS8qCi0gKiBOVl9DVFJMX1hJTkVSQU1BIC0gcmV0dXJuIHdoZXRoZXIgeGluZXJhbWEg
aXMgZW5hYmxlZAotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9YSU5FUkFNQSAyMjIgLyogUi0tRyAq
LwotI2RlZmluZSBOVl9DVFJMX1hJTkVSQU1BX09GRiAwCi0jZGVmaW5lIE5WX0NUUkxfWElORVJB
TUFfT04gMQotCi0vKgotICogTlZfQ1RSTF9YSU5FUkFNQV9TVEVSRU8gLSB3aGVuIFRSVUUsIE9w
ZW5HTCB3aWxsIGFsbG93IHN0ZXJlbyBmbGlwcGluZwotICogb24gbXVsdGlwbGUgWCBzY3JlZW5z
IGNvbmZpZ3VyZWQgd2l0aCBYaW5lcmFtYS4KLSAqIFdoZW4gRkFMU0UsIGZsaXBwaW5nIGlzIGFs
bG93ZWQgb25seSBvbiBvbmUgWCBzY3JlZW4gYXQgYSB0aW1lLgotICovCi0KLSNkZWZpbmUgTlZf
Q1RSTF9YSU5FUkFNQV9TVEVSRU8gMjIzIC8qIFJXLSAqLwotI2RlZmluZSBOVl9DVFJMX1hJTkVS
QU1BX1NURVJFT19GQUxTRSAwCi0jZGVmaW5lIE5WX0NUUkxfWElORVJBTUFfU1RFUkVPX1RSVUUg
MQotCi0vKgotICogTlZfQ1RSTF9CVVNfUkFURSAtIGlmIHRoZSBidXMgdHlwZSBvZiB0aGUgc3Bl
Y2lmaWVkIGRldmljZSBpcyBBR1AsIHRoZW4KLSAqIE5WX0NUUkxfQlVTX1JBVEUgcmV0dXJucyB0
aGUgY29uZmlndXJlZCBBR1AgdHJhbnNmZXIgcmF0ZS4gIElmIHRoZSBidXMgdHlwZQotICogaXMg
UENJIEV4cHJlc3MsIHRoZW4gdGhpcyBhdHRyaWJ1dGUgcmV0dXJucyB0aGUgbWF4aW11bSBsaW5r
IHdpZHRoLgotICogV2hlbiB0aGlzIGF0dHJpYnV0ZSBpcyBxdWVyaWVkIG9uIGFuIFggc2NyZWVu
IHRhcmdldCwgdGhlIGJ1cyByYXRlIG9mIHRoZQotICogR1BVIGRyaXZpbmcgdGhlIFggc2NyZWVu
IGlzIHJldHVybmVkLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9CVVNfUkFURSAyMjQgLyogUi0t
R0kgKi8KLQotLyoKLSAqIE5WX0NUUkxfR1BVX1BDSUVfTUFYX0xJTktfV0lEVEggLSByZXR1cm5z
IHRoZSBtYXhpbXVtCi0gKiBQQ0llIGxpbmsgd2lkdGgsIGluIG51bWJlciBvZiBsYW5lcy4KLSAq
LwotI2RlZmluZSBOVl9DVFJMX0dQVV9QQ0lFX01BWF9MSU5LX1dJRFRIIE5WX0NUUkxfQlVTX1JB
VEUKLQotLyoKLSAqIE5WX0NUUkxfU0hPV19TTElfSFVEIC0gd2hlbiBUUlVFLCBPcGVuR0wgd2ls
bCBkcmF3IGluZm9ybWF0aW9uIGFib3V0IHRoZQotICogY3VycmVudCBTTEkgbW9kZS4KLSAqIFJl
bmFtZWQgdGhpcyBhdHRyaWJ1dGUgdG8gTlZfQ1RSTF9TSE9XX1NMSV9WSVNVQUxfSU5ESUNBVE9S
Ci0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NIT1dfU0xJX0hVRCBOVl9DVFJMX1NIT1dfU0xJX1ZJ
U1VBTF9JTkRJQ0FUT1IKLSNkZWZpbmUgTlZfQ1RSTF9TSE9XX1NMSV9IVURfRkFMU0UgTlZfQ1RS
TF9TSE9XX1NMSV9WSVNVQUxfSU5ESUNBVE9SX0ZBTFNFCi0jZGVmaW5lIE5WX0NUUkxfU0hPV19T
TElfSFVEX1RSVUUgTlZfQ1RSTF9TSE9XX1NMSV9WSVNVQUxfSU5ESUNBVE9SX1RSVUUKLQotLyoK
LSAqIE5WX0NUUkxfU0hPV19TTElfVklTVUFMX0lORElDQVRPUiAtIHdoZW4gVFJVRSwgT3BlbkdM
IHdpbGwgZHJhdyBpbmZvcm1hdGlvbgotICogYWJvdXQgdGhlIGN1cnJlbnQgU0xJIG1vZGUuCi0g
Ki8KLQotI2RlZmluZSBOVl9DVFJMX1NIT1dfU0xJX1ZJU1VBTF9JTkRJQ0FUT1IgMjI1IC8qIFJX
LVggKi8KLSNkZWZpbmUgTlZfQ1RSTF9TSE9XX1NMSV9WSVNVQUxfSU5ESUNBVE9SX0ZBTFNFIDAK
LSNkZWZpbmUgTlZfQ1RSTF9TSE9XX1NMSV9WSVNVQUxfSU5ESUNBVE9SX1RSVUUgMQotCi0vKgot
ICogTlZfQ1RSTF9YVl9TWU5DX1RPX0RJU1BMQVkgLSB0aGlzIGNvbnRyb2wgaXMgdmFsaWQgd2hl
biBUd2luVmlldyBhbmQKLSAqIFhWaWRlbyBTeW5jIFRvIFZCbGFuayBhcmUgZW5hYmxlZC4KLSAq
IEl0IGNvbnRyb2xzIHdoaWNoIGRpc3BsYXkgZGV2aWNlIHdpbGwgYmUgc3luY2hlZCB0by4KLSAq
LwotCi0jZGVmaW5lIE5WX0NUUkxfWFZfU1lOQ19UT19ESVNQTEFZIDIyNiAvKiBSVy0gKi8KLQot
LyoKLSAqIE5WX0NUUkxfR1ZJT19SRVFVRVNURURfVklERU9fRk9STUFUMiAtIHRoaXMgYXR0cmli
dXRlIGlzIG9ubHkKLSAqIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gcXVlcnkgdGhlIFZhbGlkVmFs
dWVzIGZvcgotICogTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JNQVQgZm9yIFZJREVP
X0ZPUk1BVCB2YWx1ZXMgYmV0d2VlbgotICogMzEgYW5kIDYzLiAgU2VlIE5WX0NUUkxfR1ZJT19S
RVFVRVNURURfVklERU9fRk9STUFUIGZvciBkZXRhaWxzLgotICovCi0KLSNkZWZpbmUgTlZfQ1RS
TF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JNQVQyIDIyNyAvKiAtLS1HSSAqLwotCi0vKgotICog
VGhlIGZvbGxvd2luZyBpcyBkZXByZWNhdGVkOyB1c2UgTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9W
SURFT19GT1JNQVQyLAotICogaW5zdGVhZAotICovCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX09VVFBV
VF9WSURFT19GT1JNQVQyIDIyNyAvKiAtLS0gKi8KLQotLyoKLSAqIE5WX0NUUkxfR1ZPX09WRVJS
SURFX0hXX0NTQyAtIE92ZXJyaWRlIHRoZSBTREkgaGFyZHdhcmUncyBDb2xvciBTcGFjZQotICog
Q29udmVyc2lvbiB3aXRoIHRoZSB2YWx1ZXMgY29udHJvbGxlZCB0aHJvdWdoCi0gKiBYTlZDVFJM
U2V0R3ZvQ29sb3JDb252ZXJzaW9uKCkgYW5kIFhOVkNUUkxHZXRHdm9Db2xvckNvbnZlcnNpb24o
KS4gIElmCi0gKiB0aGlzIGF0dHJpYnV0ZSBpcyBGQUxTRSwgdGhlbiB0aGUgdmFsdWVzIHNwZWNp
ZmllZCB0aHJvdWdoCi0gKiBYTlZDVFJMU2V0R3ZvQ29sb3JDb252ZXJzaW9uKCkgYXJlIGlnbm9y
ZWQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWT19PVkVSUklERV9IV19DU0MgMjI4IC8qIFJX
LSAqLwotI2RlZmluZSBOVl9DVFJMX0dWT19PVkVSUklERV9IV19DU0NfRkFMU0UgMAotI2RlZmlu
ZSBOVl9DVFJMX0dWT19PVkVSUklERV9IV19DU0NfVFJVRSAxCi0KLS8qCi0gKiBOVl9DVFJMX0dW
T19DQVBBQklMSVRJRVMgLSB0aGlzIHJlYWQtb25seSBhdHRyaWJ1dGUgZGVzY3JpYmVzIEdWTwot
ICogY2FwYWJpbGl0aWVzIHRoYXQgZGlmZmVyIGJldHdlZW4gTlZJRElBIFNESSBwcm9kdWN0cy4g
IFRoaXMgdmFsdWUKLSAqIGlzIGEgYml0bWFzayB3aGVyZSBlYWNoIGJpdCBpbmRpY2F0ZXMgd2hl
dGhlciB0aGF0IGNhcGFiaWxpdHkgaXMKLSAqIGF2YWlsYWJsZS4KLSAqCi0gKiBBUFBMWV9DU0Nf
SU1NRURJQVRFTFkgLSB3aGV0aGVyIHRoZSBDU0MgbWF0cml4LCBvZmZzZXQsIGFuZCBzY2FsZQot
ICogc3BlY2lmaWVkIHRocm91Z2ggWE5WQ1RSTFNldEd2b0NvbG9yQ29udmVyc2lvbigpIHdpbGwg
dGFrZSBhZmZlY3QKLSAqIGltbWVkaWF0ZWx5LCBvciBvbmx5IGFmdGVyIFNESSBvdXRwdXQgaXMg
ZGlzYWJsZWQgYW5kIGVuYWJsZWQKLSAqIGFnYWluLgotICoKLSAqIEFQUExZX0NTQ19UT19YX1ND
UkVFTiAtIHdoZXRoZXIgdGhlIENTQyBtYXRyaXgsIG9mZnNldCwgYW5kIHNjYWxlCi0gKiBzcGVj
aWZpZWQgdGhyb3VnaCBYTlZDVFJMU2V0R3ZvQ29sb3JDb252ZXJzaW9uKCkgd2lsbCBhbHNvIGFw
cGx5Ci0gKiB0byBHVk8gb3V0cHV0IG9mIGFuIFggc2NyZWVuLCBvciBvbmx5IHRvIE9wZW5HTCBH
Vk8gb3V0cHV0LCBhcwotICogZW5hYmxlZCB0aHJvdWdoIHRoZSBHTFhfTlZfdmlkZW9fb3V0IGV4
dGVuc2lvbi4KLSAqCi0gKiBDT01QT1NJVEVfVEVSTUlOQVRJT04gLSB3aGV0aGVyIHRoZSA3NSBv
aG0gdGVybWluYXRpb24gb2YgdGhlCi0gKiBTREkgY29tcG9zaXRlIGlucHV0IHNpZ25hbCBjYW4g
YmUgcHJvZ3JhbW1lZCB0aHJvdWdoIHRoZQotICogTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX1RFUk1J
TkFUSU9OIGF0dHJpYnV0ZS4KLSAqCi0gKiBTSEFSRURfU1lOQ19CTkMgLSB3aGV0aGVyIHRoZSBT
REkgZGV2aWNlIGhhcyBhIHNpbmdsZSBCTkMKLSAqIGNvbm5lY3RvciB1c2VkIGZvciBib3RoIChT
REkgJiBDb21wb3NpdGUpIGluY29taW5nIHNpZ25hbHMuCi0gKgotICogTVVMVElSQVRFX1NZTkMg
LSB3aGV0aGVyIHRoZSBTREkgZGV2aWNlIHN1cHBvcnRzIHN5bmNocm9uaXphdGlvbgotICogb2Yg
aW5wdXQgYW5kIG91dHB1dCB2aWRlbyBtb2RlcyB0aGF0IG1hdGNoIGluIGJlaW5nIG9kZCBvciBl
dmVuCi0gKiBtb2RlcyAoaWUsIEFBLjAwIEh6IG1vZGVzIGNhbiBiZSBzeW5jaGVkIHRvIG90aGVy
IEJCLjAwIEh6IG1vZGVzIGFuZAotICogQUEuWFggSHogY2FuIG1hdGNoIHRvIEJCLllZIEh6IHdo
ZXJlIC5YWCBhbmQgLllZIGFyZSBub3QgLjAwKQotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HVk9f
Q0FQQUJJTElUSUVTIDIyOSAvKiBSLS0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fQ0FQQUJJTElU
SUVTX0FQUExZX0NTQ19JTU1FRElBVEVMWSAweDAwMDAwMDAxCi0jZGVmaW5lIE5WX0NUUkxfR1ZP
X0NBUEFCSUxJVElFU19BUFBMWV9DU0NfVE9fWF9TQ1JFRU4gMHgwMDAwMDAwMgotI2RlZmluZSBO
Vl9DVFJMX0dWT19DQVBBQklMSVRJRVNfQ09NUE9TSVRFX1RFUk1JTkFUSU9OIDB4MDAwMDAwMDQK
LSNkZWZpbmUgTlZfQ1RSTF9HVk9fQ0FQQUJJTElUSUVTX1NIQVJFRF9TWU5DX0JOQyAweDAwMDAw
MDA4Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX0NBUEFCSUxJVElFU19NVUxUSVJBVEVfU1lOQyAweDAw
MDAwMDEwCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0NBUEFCSUxJVElFU19BRFZBTkNFX1NZTkNfU0tF
VyAweDAwMDAwMDIwCi0KLS8qCi0gKiBOVl9DVFJMX0dWT19DT01QT1NJVEVfVEVSTUlOQVRJT04g
LSBlbmFibGUgb3IgZGlzYWJsZSA3NSBvaG0KLSAqIHRlcm1pbmF0aW9uIG9mIHRoZSBTREkgY29t
cG9zaXRlIGlucHV0IHNpZ25hbC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lU
RV9URVJNSU5BVElPTiAyMzAgLyogUlctICovCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lU
RV9URVJNSU5BVElPTl9FTkFCTEUgMQotI2RlZmluZSBOVl9DVFJMX0dWT19DT01QT1NJVEVfVEVS
TUlOQVRJT05fRElTQUJMRSAwCi0KLS8qCi0gKiBOVl9DVFJMX0FTU09DSUFURURfRElTUExBWV9E
RVZJQ0VTIC0gZGlzcGxheSBkZXZpY2UgbWFzayBpbmRpY2F0aW5nCi0gKiB3aGljaCBkaXNwbGF5
IGRldmljZXMgYXJlICJhc3NvY2lhdGVkIiB3aXRoIHRoZSBzcGVjaWZpZWQgWCBzY3JlZW4KLSAq
IChpZTogYXJlIGF2YWlsYWJsZSB0byB0aGUgWCBzY3JlZW4gZm9yIGRpc3BsYXlpbmcgdGhlIFgg
c2NyZWVuKS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfQVNTT0NJQVRFRF9ESVNQTEFZX0RFVklD
RVMgMjMxIC8qIFJXLSAqLwotCi0vKgotICogTlZfQ1RSTF9GUkFNRUxPQ0tfU0xBVkVTIC0gZ2V0
L3NldCB3aGV0aGVyIHRoZSBkaXNwbGF5IGRldmljZShzKQotICogZ2l2ZW4gc2hvdWxkIGxpc3Rl
biBvciBpZ25vcmUgdGhlIG1hc3RlcidzIHN5bmMgc2lnbmFsLgotICoKLSAqIFRoaXMgYXR0cmli
dXRlIGNhbiBvbmx5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1
dGUoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSB0YXJnZXQuICBUaGlzIGF0
dHJpYnV0ZSBjYW5ub3QgYmUKLSAqIHF1ZXJpZWQgdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBF
X1hfU0NSRUVOLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfU0xBVkVTIDIzMiAv
KiBSVy1HICovCi0KLS8qCi0gKiBOVl9DVFJMX0ZSQU1FTE9DS19NQVNURVJBQkxFIC0gQ2FuIGFu
eSBvZiB0aGUgZ2l2ZW4gZGlzcGxheSBkZXZpY2VzCi0gKiBiZSBzZXQgYXMgbWFzdGVyIG9mIHRo
ZSBmcmFtZSBsb2NrIGdyb3VwLiAgUmV0dXJucyBhIGJpdG1hc2sgb2YgdGhlCi0gKiBjb3JyZXNw
b25kaW5nIGRpc3BsYXkgZGV2aWNlcyB0aGF0IGNhbiBiZSBzZXQgYXMgbWFzdGVyLgotICoKLSAq
IFRoaXMgYXR0cmlidXRlIGNhbiBvbmx5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlU
YXJnZXRBdHRyaWJ1dGUoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSB0YXJn
ZXQuICBUaGlzIGF0dHJpYnV0ZSBjYW5ub3QgYmUKLSAqIHF1ZXJpZWQgdXNpbmcgYSBOVl9DVFJM
X1RBUkdFVF9UWVBFX1hfU0NSRUVOLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tf
TUFTVEVSQUJMRSAyMzMgLyogUi1ERyAqLwotCi0vKgotICogTlZfQ1RSTF9QUk9CRV9ESVNQTEFZ
UyAtIHJlLXByb2JlcyB0aGUgaGFyZHdhcmUgdG8gZGV0ZWN0IHdoYXQKLSAqIGRpc3BsYXkgZGV2
aWNlcyBhcmUgY29ubmVjdGVkIHRvIHRoZSBHUFUgb3IgR1BVIGRyaXZpbmcgdGhlCi0gKiBzcGVj
aWZpZWQgWCBzY3JlZW4uICBSZXR1cm5zIGEgZGlzcGxheSBtYXNrLgotICoKLSAqIFRoaXMgYXR0
cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRl
KCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRf
VFlQRV9YX1NDUkVFTiB0YXJnZXQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1BST0JFX0RJU1BM
QVlTIDIzNCAvKiBSLS1HICovCi0KLS8qCi0gKiBOVl9DVFJMX1JFRlJFU0hfUkFURSAtIFJldHVy
bnMgdGhlIHJlZnJlc2ggcmF0ZSBvZiB0aGUgc3BlY2lmaWVkCi0gKiBkaXNwbGF5IGRldmljZSBp
biAxMDAgKiBIeiAoaWUuIHRvIGdldCB0aGUgcmVmcmVzaCByYXRlIGluIEh6LCBkaXZpZGUKLSAq
IHRoZSByZXR1cm5lZCB2YWx1ZSBieSAxMDAuKQotICoKLSAqIFRoaXMgYXR0cmlidXRlIG1heSBi
ZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKLSAqIHVzaW5n
IGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVF
TiB0YXJnZXQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1JFRlJFU0hfUkFURSAyMzUgLyogUi1E
RyAqLwotCi0vKgotICogTlZfQ1RSTF9HVk9fRkxJUF9RVUVVRV9TSVpFIC0gVGhlIEdyYXBoaWNz
IHRvIFZpZGVvIE91dCBpbnRlcmZhY2UKLSAqIGV4cG9zZWQgdGhyb3VnaCBOVi1DT05UUk9MIGFu
ZCB0aGUgR0xYX05WX3ZpZGVvX291dCBleHRlbnNpb24gdXNlcwotICogYW4gaW50ZXJuYWwgZmxp
cCBxdWV1ZSB3aGVuIHBidWZmZXJzIGFyZSBzZW50IHRvIHRoZSB2aWRlbyBkZXZpY2UKLSAqICh2
aWEgZ2xYU2VuZFBidWZmZXJUb1ZpZGVvTlYoKSkuICBUaGUgTlZfQ1RSTF9HVk9fRkxJUF9RVUVV
RV9TSVpFCi0gKiBjYW4gYmUgdXNlZCB0byBxdWVyeSBhbmQgYXNzaWduIHRoZSBmbGlwIHF1ZXVl
IHNpemUuICBUaGlzCi0gKiBhdHRyaWJ1dGUgaXMgYXBwbGllZCB0byBHTFggd2hlbiBnbFhHZXRW
aWRlb0RldmljZU5WKCkgaXMgY2FsbGVkIGJ5Ci0gKiB0aGUgYXBwbGljYXRpb24uCi0gKi8KLQot
I2RlZmluZSBOVl9DVFJMX0dWT19GTElQX1FVRVVFX1NJWkUgMjM2IC8qIFJXLSAqLwotCi0vKgot
ICogTlZfQ1RSTF9DVVJSRU5UX1NDQU5MSU5FIC0gcXVlcnkgdGhlIGN1cnJlbnQgc2NhbmxpbmUg
Zm9yIHRoZQotICogc3BlY2lmaWVkIGRpc3BsYXkgZGV2aWNlLgotICovCi0KLSNkZWZpbmUgTlZf
Q1RSTF9DVVJSRU5UX1NDQU5MSU5FIDIzNyAvKiBSLURHICovCi0KLS8qCi0gKiBOVl9DVFJMX0lO
SVRJQUxfUElYTUFQX1BMQUNFTUVOVCAtIENvbnRyb2xzIHdoZXJlIFggcGl4bWFwcyBhcmUgaW5p
dGlhbGx5Ci0gKiBjcmVhdGVkLgotICoKLSAqIE5WX0NUUkxfSU5JVElBTF9QSVhNQVBfUExBQ0VN
RU5UX0ZPUkNFX1NZU01FTSBjYXVzZXMgcGl4bWFwcyB0byBzdGF5IGluCi0gKiBzeXN0ZW0gbWVt
b3J5LiBUaGVzZSBwaXhtYXBzIGNhbid0IGJlIGFjY2VsZXJhdGVkIGJ5IHRoZSBOVklESUEgZHJp
dmVyOyB0aGlzCi0gKiB3aWxsIGNhdXNlIGJsYW5rIHdpbmRvd3MgaWYgdXNlZCB3aXRoIGFuIE9w
ZW5HTCBjb21wb3NpdGluZyBtYW5hZ2VyLgotICogTlZfQ1RSTF9JTklUSUFMX1BJWE1BUF9QTEFD
RU1FTlRfU1lTTUVNIGNyZWF0ZXMgcGl4bWFwcyBpbiBzeXN0ZW0gbWVtb3J5Ci0gKiBpbml0aWFs
bHksIGJ1dCBhbGxvd3MgdGhlbSB0byBtaWdyYXRlIHRvIHZpZGVvIG1lbW9yeS4KLSAqIE5WX0NU
UkxfSU5JVElBTF9QSVhNQVBfUExBQ0VNRU5UX1ZJRE1FTSBjcmVhdGVzIHBpeG1hcHMgaW4gdmlk
ZW8gbWVtb3J5Ci0gKiB3aGVuIGVub3VnaCByZXNvdXJjZXMgYXJlIGF2YWlsYWJsZS4KLSAqIE5W
X0NUUkxfSU5JVElBTF9QSVhNQVBfUExBQ0VNRU5UX1JFU0VSVkVEIGlzIGN1cnJlbnRseSByZXNl
cnZlZCBmb3IgZnV0dXJlCi0gKiB1c2UuICBCZWhhdmlvciBpcyB1bmRlZmluZWQuCi0gKiBOVl9D
VFJMX0lOSVRJQUxfUElYTUFQX1BMQUNFTUVOVF9HUFVfU1lTTUVNIGNyZWF0ZXMgcGl4bWFwcyBp
biBHUFUgYWNjZXNzaWJsZQotICogc3lzdGVtIG1lbW9yeSB3aGVuIGVub3VnaCByZXNvdXJjZXMg
YXJlIGF2YWlsYWJsZS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfSU5JVElBTF9QSVhNQVBfUExB
Q0VNRU5UIDIzOCAvKiBSVy0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9JTklUSUFMX1BJWE1BUF9QTEFD
RU1FTlRfRk9SQ0VfU1lTTUVNIDAKLSNkZWZpbmUgTlZfQ1RSTF9JTklUSUFMX1BJWE1BUF9QTEFD
RU1FTlRfU1lTTUVNIDEKLSNkZWZpbmUgTlZfQ1RSTF9JTklUSUFMX1BJWE1BUF9QTEFDRU1FTlRf
VklETUVNIDIKLSNkZWZpbmUgTlZfQ1RSTF9JTklUSUFMX1BJWE1BUF9QTEFDRU1FTlRfUkVTRVJW
RUQgMwotI2RlZmluZSBOVl9DVFJMX0lOSVRJQUxfUElYTUFQX1BMQUNFTUVOVF9HUFVfU1lTTUVN
IDQKLQotLyoKLSAqIE5WX0NUUkxfUENJX0JVUyAtIFJldHVybnMgdGhlIFBDSSBidXMgbnVtYmVy
IHRoZSBzcGVjaWZpZWQgZGV2aWNlIGlzIHVzaW5nLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9Q
Q0lfQlVTIDIzOSAvKiBSLS1HSSAqLwotCi0vKgotICogTlZfQ1RSTF9QQ0lfREVWSUNFIC0gUmV0
dXJucyB0aGUgUENJIGRldmljZSBudW1iZXIgdGhlIHNwZWNpZmllZCBkZXZpY2UgaXMKLSAqIHVz
aW5nLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9QQ0lfREVWSUNFIDI0MCAvKiBSLS1HSSAqLwot
Ci0vKgotICogTlZfQ1RSTF9QQ0lfRlVOQ1RJT04gLSBSZXR1cm5zIHRoZSBQQ0kgZnVuY3Rpb24g
bnVtYmVyIHRoZSBzcGVjaWZpZWQgZGV2aWNlCi0gKiBpcyB1c2luZy4KLSAqLwotCi0jZGVmaW5l
IE5WX0NUUkxfUENJX0ZVTkNUSU9OIDI0MSAvKiBSLS1HSSAqLwotCi0vKgotICogTlZfQ1RSTF9G
UkFNRUxPQ0tfRlBHQV9SRVZJU0lPTiAtIFF1ZXJ5cyB0aGUgRlBHQSByZXZpc2lvbiBvZiB0aGUK
LSAqIEZyYW1lIExvY2sgZGV2aWNlLgotICoKLSAqIFRoaXMgYXR0cmlidXRlIG11c3QgYmUgcXVl
cmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5W
X0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NLIHRhcmdldC4KLSAqLwotCi0jZGVmaW5lIE5WX0NU
UkxfRlJBTUVMT0NLX0ZQR0FfUkVWSVNJT04gMjQyIC8qIFItLUYgKi8KLQotLyoKLSAqIE5WX0NU
UkxfTUFYX1NDUkVFTl97V0lEVEgsSEVJR0hUfSAtIHRoZSBtYXhpbXVtIGFsbG93YWJsZSBzaXpl
LCBpbgotICogcGl4ZWxzLCBvZiBlaXRoZXIgdGhlIHNwZWNpZmllZCBYIHNjcmVlbiAoaWYgdGhl
IHRhcmdldF90eXBlIG9mIHRoZQotICogcXVlcnkgaXMgYW4gWCBzY3JlZW4pLCBvciBhbnkgWCBz
Y3JlZW4gb24gdGhlIHNwZWNpZmllZCBHUFUgKGlmIHRoZQotICogdGFyZ2V0X3R5cGUgb2YgdGhl
IHF1ZXJ5IGlzIGEgR1BVKS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfTUFYX1NDUkVFTl9XSURU
SCAyNDMgIC8qIFItLUcgKi8KLSNkZWZpbmUgTlZfQ1RSTF9NQVhfU0NSRUVOX0hFSUdIVCAyNDQg
LyogUi0tRyAqLwotCi0vKgotICogTlZfQ1RSTF9NQVhfRElTUExBWVMgLSB0aGUgbWF4aW11bSBu
dW1iZXIgb2YgZGlzcGxheSBkZXZpY2VzIHRoYXQKLSAqIGNhbiBiZSBkcml2ZW4gc2ltdWx0YW5l
b3VzbHkgb24gYSBHUFUgKGUuZy4sIHRoYXQgY2FuIGJlIHVzZWQgaW4gYQotICogTWV0YU1vZGUg
YXQgb25jZSkuICBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBpbmRpY2F0ZSB0aGUgbWF4aW11bQot
ICogbnVtYmVyIG9mIGJpdHMgdGhhdCBjYW4gYmUgc2V0IGluIE5WX0NUUkxfQ09OTkVDVEVEX0RJ
U1BMQVlTLAotICogYmVjYXVzZSBtb3JlIGRpc3BsYXkgZGV2aWNlcyBjYW4gYmUgY29ubmVjdGVk
IHRoYW4gYXJlIGFjdGl2ZWx5IGluCi0gKiB1c2UuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX01B
WF9ESVNQTEFZUyAyNDUgLyogUi0tRyAqLwotCi0vKgotICogTlZfQ1RSTF9EWU5BTUlDX1RXSU5W
SUVXIC0gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc2NyZWVuCi0gKiBzdXBwb3J0cyBkeW5h
bWljIHR3aW52aWV3LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9EWU5BTUlDX1RXSU5WSUVXIDI0
NiAvKiBSLS0gKi8KLQotLyoKLSAqIE5WX0NUUkxfTVVMVElHUFVfRElTUExBWV9PV05FUiAtIFJl
dHVybnMgdGhlIChOVi1DT05UUk9MKSBHUFUgSUQgb2YKLSAqIHRoZSBHUFUgdGhhdCBoYXMgdGhl
IGRpc3BsYXkgZGV2aWNlKHMpIHVzZWQgZm9yIHNob3dpbmcgdGhlIFggU2NyZWVuLgotICovCi0K
LSNkZWZpbmUgTlZfQ1RSTF9NVUxUSUdQVV9ESVNQTEFZX09XTkVSIDI0NyAvKiBSLS0gKi8KLQot
LyoKLSAqIE5WX0NUUkxfR1BVX1NDQUxJTkcgLSBub3Qgc3VwcG9ydGVkCi0gKi8KLQotI2RlZmlu
ZSBOVl9DVFJMX0dQVV9TQ0FMSU5HIDI0OCAvKiBSV0RHICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9H
UFVfU0NBTElOR19UQVJHRVRfSU5WQUxJRCAwCi0jZGVmaW5lIE5WX0NUUkxfR1BVX1NDQUxJTkdf
VEFSR0VUX0ZMQVRQQU5FTF9CRVNUX0ZJVCAxCi0jZGVmaW5lIE5WX0NUUkxfR1BVX1NDQUxJTkdf
VEFSR0VUX0ZMQVRQQU5FTF9OQVRJVkUgMgotCi0jZGVmaW5lIE5WX0NUUkxfR1BVX1NDQUxJTkdf
TUVUSE9EX0lOVkFMSUQgMAotI2RlZmluZSBOVl9DVFJMX0dQVV9TQ0FMSU5HX01FVEhPRF9TVFJF
VENIRUQgMQotI2RlZmluZSBOVl9DVFJMX0dQVV9TQ0FMSU5HX01FVEhPRF9DRU5URVJFRCAyCi0j
ZGVmaW5lIE5WX0NUUkxfR1BVX1NDQUxJTkdfTUVUSE9EX0FTUEVDVF9TQ0FMRUQgMwotCi0vKgot
ICogTlZfQ1RSTF9GUk9OVEVORF9SRVNPTFVUSU9OIC0gbm90IHN1cHBvcnRlZAotICovCi0KLSNk
ZWZpbmUgTlZfQ1RSTF9GUk9OVEVORF9SRVNPTFVUSU9OIDI0OSAvKiBSLURHICovCi0KLS8qCi0g
KiBOVl9DVFJMX0JBQ0tFTkRfUkVTT0xVVElPTiAtIG5vdCBzdXBwb3J0ZWQKLSAqLwotCi0jZGVm
aW5lIE5WX0NUUkxfQkFDS0VORF9SRVNPTFVUSU9OIDI1MCAvKiBSLURHICovCi0KLS8qCi0gKiBO
Vl9DVFJMX0ZMQVRQQU5FTF9OQVRJVkVfUkVTT0xVVElPTiAtIFJldHVybnMgdGhlIGRpbWVuc2lv
bnMgb2YgdGhlCi0gKiBuYXRpdmUgcmVzb2x1dGlvbiBvZiB0aGUgZmxhdCBwYW5lbCBhcyBkZXRl
cm1pbmVkIGJ5IHRoZQotICogTlZJRElBIFggRHJpdmVyLgotICoKLSAqIFRoZSBuYXRpdmUgcmVz
b2x1dGlvbiBpcyB0aGUgcmVzb2x1dGlvbiBhdCB3aGljaCBhIGZsYXQgcGFuZWwKLSAqIG11c3Qg
ZGlzcGxheSBhbnkgaW1hZ2UuICBBbGwgb3RoZXIgcmVzb2x1dGlvbnMgbXVzdCBiZSBzY2FsZWQg
dG8gdGhpcwotICogcmVzb2x1dGlvbiB0aHJvdWdoIEdQVSBzY2FsaW5nIG9yIHRoZSBERlAncyBu
YXRpdmUgc2NhbGluZyBjYXBhYmlsaXRpZXMKLSAqIGluIG9yZGVyIHRvIGJlIGRpc3BsYXllZC4K
LSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBpcyBvbmx5IHZhbGlkIGZvciBmbGF0IHBhbmVsIChERlAp
IGRpc3BsYXkgZGV2aWNlcy4KLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBpcyBhIHBhY2tlZCBpbnRl
Z2VyOyB0aGUgd2lkdGggaXMgcGFja2VkIGluIHRoZSB1cHBlcgotICogMTYtYml0cyBhbmQgdGhl
IGhlaWdodCBpcyBwYWNrZWQgaW4gdGhlIGxvd2VyIDE2LWJpdHMuCi0gKi8KLQotI2RlZmluZSBO
Vl9DVFJMX0ZMQVRQQU5FTF9OQVRJVkVfUkVTT0xVVElPTiAyNTEgLyogUi1ERyAqLwotCi0vKgot
ICogTlZfQ1RSTF9GTEFUUEFORUxfQkVTVF9GSVRfUkVTT0xVVElPTiAtIG5vdCBzdXBwb3J0ZWQK
LSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX0JFU1RfRklUX1JFU09MVVRJT04gMjUy
IC8qIFItREcgKi8KLQotLyoKLSAqIE5WX0NUUkxfR1BVX1NDQUxJTkdfQUNUSVZFIC0gbm90IHN1
cHBvcnRlZAotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfU0NBTElOR19BQ1RJVkUgMjUzIC8q
IFItREcgKi8KLQotLyoKLSAqIE5WX0NUUkxfREZQX1NDQUxJTkdfQUNUSVZFIC0gbm90IHN1cHBv
cnRlZAotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9ERlBfU0NBTElOR19BQ1RJVkUgMjU0IC8qIFIt
REcgKi8KLQotLyoKLSAqIE5WX0NUUkxfRlNBQV9BUFBMSUNBVElPTl9FTkhBTkNFRCAtIENvbnRy
b2xzIGhvdyB0aGUgTlZfQ1RSTF9GU0FBX01PREUKLSAqIGlzIGFwcGxpZWQgd2hlbiBOVl9DVFJM
X0ZTQUFfQVBQTElDQVRJT05fQ09OVFJPTExFRCBpcyBzZXQgdG8KLSAqIE5WX0NUUkxfQVBQTElD
QVRJT05fQ09OVFJPTExFRF9ESVNBQkxFRC4gIFdoZW4KLSAqIE5WX0NUUkxfRlNBQV9BUFBMSUNB
VElPTl9FTkhBTkNFRCBpcyBfRElTQUJMRUQsIE9wZW5HTCBhcHBsaWNhdGlvbnMgd2lsbAotICog
YmUgZm9yY2VkIHRvIHVzZSB0aGUgRlNBQSBtb2RlIHNwZWNpZmllZCBieSBOVl9DVFJMX0ZTQUFf
TU9ERS4gIHdoZW4gc2V0Ci0gKiB0byBfRU5BQkxFRCwgb25seSB0aG9zZSBhcHBsaWNhdGlvbnMg
dGhhdCBoYXZlIHNlbGVjdGVkIGEgbXVsdGlzYW1wbGUKLSAqIEZCQ29uZmlnIHdpbGwgYmUgbWFk
ZSB0byB1c2UgdGhlIE5WX0NUUkxfRlNBQV9NT0RFIHNwZWNpZmllZC4KLSAqCi0gKiBUaGlzIGF0
dHJpYnV0ZSBpcyBpZ25vcmVkIHdoZW4gTlZfQ1RSTF9GU0FBX0FQUExJQ0FUSU9OX0NPTlRST0xM
RUQgaXMKLSAqIHNldCB0byBOVl9DVFJMX0ZTQUFfQVBQTElDQVRJT05fQ09OVFJPTExFRF9FTkFC
TEVELgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9GU0FBX0FQUExJQ0FUSU9OX0VOSEFOQ0VEIDI1
NSAvKiBSVy1YICovCi0jZGVmaW5lIE5WX0NUUkxfRlNBQV9BUFBMSUNBVElPTl9FTkhBTkNFRF9F
TkFCTEVEIDEKLSNkZWZpbmUgTlZfQ1RSTF9GU0FBX0FQUExJQ0FUSU9OX0VOSEFOQ0VEX0RJU0FC
TEVEIDAKLQotLyoKLSAqIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfUkFURV80IC0gVGhpcyBpcyB0
aGUgcmVmcmVzaCByYXRlIHRoYXQgdGhlCi0gKiBmcmFtZSBsb2NrIGJvYXJkIGlzIHNlbmRpbmcg
dG8gdGhlIEdQVSB3aXRoIDQgZGlnaXRzIG9mIHByZWNpc2lvbi4KLSAqCi0gKiBUaGlzIGF0dHJp
YnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgp
Ci0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NLLgotICovCi0KLSNkZWZp
bmUgTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19SQVRFXzQgMjU2IC8qIFItLUYgKi8KLQotLyoKLSAq
IE5WX0NUUkxfR1ZPX0xPQ0tfT1dORVIgLSBpbmRpY2F0ZXMgdGhhdCB0aGUgR1ZPIGRldmljZSBp
cyBhdmFpbGFibGUKLSAqIG9yIGluIHVzZSAoYnkgR0xYIG9yIGFuIFggc2NyZWVuKS4KLSAqCi0g
KiBUaGUgR1ZPIGRldmljZSBpcyBsb2NrZWQgYnkgR0xYIHdoZW4gZWl0aGVyIGdsWEdldFZpZGVv
RGV2aWNlTlYKLSAqIChwYXJ0IG9mIEdMWF9OVl92aWRlb19vdXQpIG9yIGdsWEJpbmRWaWRlb0Rl
dmljZU5WIChwYXJ0IG9mCi0gKiBHTFhfTlZfcHJlc2VudF92aWRlbykgaXMgY2FsbGVkLiAgQWxs
IEdWTyBvdXRwdXQgcmVzb3VyY2VzIGFyZQotICogbG9ja2VkIHVudGlsIHJlbGVhc2VkIGJ5IHRo
ZSBHTFhfTlZfdmlkZW9fb3V0L0dMWF9OVl9wcmVzZW50X3ZpZGVvCi0gKiBjbGllbnQuCi0gKgot
ICogVGhlIEdWTyBkZXZpY2UgaXMgbG9ja2VkL3VubG9ja2VkIGJ5IGFuIFggc2NyZWVuLCB3aGVu
IHRoZSBHVk8gZGV2aWNlIGlzCi0gKiB1c2VkIGluIGEgTWV0YU1vZGUgb24gYW4gWCBzY3JlZW4u
Ci0gKgotICogV2hlbiB0aGUgR1ZPIGRldmljZSBpcyBsb2NrZWQsIHNldHRpbmcgb2YgdGhlIGZv
bGxvd2luZyBHVk8gTlYtQ09OVFJPTAotICogYXR0cmlidXRlcyB3aWxsIG5vdCBoYXBwZW4gaW1t
ZWRpYXRlbHkgYW5kIHdpbGwgaW5zdGVhZCBiZSBjYWNoZWQuICBUaGUKLSAqIEdWTyByZXNvdXJj
ZSB3aWxsIG5lZWQgdG8gYmUgZGlzYWJsZWQvcmVsZWFzZWQgYW5kIHJlLWVuYWJsZWQvY2xhaW1l
ZCBmb3IKLSAqIHRoZSB2YWx1ZXMgdG8gYmUgZmx1c2hlZC4gVGhlc2UgYXR0cmlidXRlcyBhcmU6
Ci0gKgotICogICAgTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JNQVQKLSAqICAgIE5W
X0NUUkxfR1ZPX0RBVEFfRk9STUFUCi0gKiAgICBOVl9DVFJMX0dWT19GTElQX1FVRVVFX1NJWkUK
LSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0xPQ0tfT1dORVIgMjU3IC8qIFItLSAqLwotI2Rl
ZmluZSBOVl9DVFJMX0dWT19MT0NLX09XTkVSX05PTkUgMAotI2RlZmluZSBOVl9DVFJMX0dWT19M
T0NLX09XTkVSX0dMWCAxCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0xPQ0tfT1dORVJfQ0xPTkUgLyog
bm8gbG9uZ2VyIHN1cHBvcnRlZCAqLyAyCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0xPQ0tfT1dORVJf
WF9TQ1JFRU4gMwotCi0vKgotICogTlZfQ1RSTF9IV09WRVJMQVkgLSB3aGVuIGEgd29ya3N0YXRp
b24gb3ZlcmxheSBpcyBpbiB1c2UsIHJlcG9ydHMKLSAqIHdoZXRoZXIgdGhlIGhhcmR3YXJlIG92
ZXJsYXkgaXMgdXNlZCwgb3IgaWYgdGhlIG92ZXJsYXkgaXMgZW11bGF0ZWQuCi0gKi8KLQotI2Rl
ZmluZSBOVl9DVFJMX0hXT1ZFUkxBWSAyNTggLyogUi0tICovCi0jZGVmaW5lIE5WX0NUUkxfSFdP
VkVSTEFZX0ZBTFNFIDAKLSNkZWZpbmUgTlZfQ1RSTF9IV09WRVJMQVlfVFJVRSAxCi0KLS8qCi0g
KiBOVl9DVFJMX05VTV9HUFVfRVJST1JTX1JFQ09WRVJFRCAtIFJldHVybnMgdGhlIG51bWJlciBv
ZiBHUFUgZXJyb3JzCi0gKiBvY2N1cmVkLiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0
aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxf
VEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9OVU1f
R1BVX0VSUk9SU19SRUNPVkVSRUQgMjU5IC8qIFItLS0gKi8KLQotLyoKLSAqIE5WX0NUUkxfUkVG
UkVTSF9SQVRFXzMgLSBSZXR1cm5zIHRoZSByZWZyZXNoIHJhdGUgb2YgdGhlIHNwZWNpZmllZAot
ICogZGlzcGxheSBkZXZpY2UgaW4gMTAwMCAqIEh6IChpZS4gdG8gZ2V0IHRoZSByZWZyZXNoIHJh
dGUgaW4gSHosIGRpdmlkZQotICogdGhlIHJldHVybmVkIHZhbHVlIGJ5IDEwMDAuKQotICoKLSAq
IFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0
QXR0cmlidXRlKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZfQ1RS
TF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1JF
RlJFU0hfUkFURV8zIDI2MCAvKiBSLURHICovCi0KLS8qCi0gKiBOVl9DVFJMX09OREVNQU5EX1ZC
TEFOS19JTlRFUlJVUFRTIC0gaWYgdGhlIE9uRGVtYW5kVkJsYW5rSW50ZXJydXB0cwotICogWCBk
cml2ZXIgb3B0aW9uIGlzIHNldCB0byB0cnVlLCB0aGlzIGF0dHJpYnV0ZSBjYW4gYmUgdXNlZCB0
bwotICogZGV0ZXJtaW5lIGlmIG9uLWRlbWFuZCBWQmxhbmsgaW50ZXJydXB0IGNvbnRyb2wgaXMg
ZW5hYmxlZCBvbiB0aGUKLSAqIHNwZWNpZmllZCBHUFUsIGFzIHdlbGwgYXMgdG8gZW5hYmxlIG9y
IGRpc2FibGUgdGhpcyBmZWF0dXJlLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9PTkRFTUFORF9W
QkxBTktfSU5URVJSVVBUUyAyNjEgLyogUlctRyAqLwotI2RlZmluZSBOVl9DVFJMX09OREVNQU5E
X1ZCTEFOS19JTlRFUlJVUFRTX09GRiAwCi0jZGVmaW5lIE5WX0NUUkxfT05ERU1BTkRfVkJMQU5L
X0lOVEVSUlVQVFNfT04gMQotCi0vKgotICogTlZfQ1RSTF9HUFVfUE9XRVJfU09VUkNFIHJlcG9y
dHMgdGhlIHR5cGUgb2YgcG93ZXIgc291cmNlCi0gKiBvZiB0aGUgR1BVIGRyaXZpbmcgdGhlIFgg
c2NyZWVuLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfUE9XRVJfU09VUkNFIDI2MiAvKiBS
LS1HICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX1BPV0VSX1NPVVJDRV9BQyAwCi0jZGVmaW5lIE5W
X0NUUkxfR1BVX1BPV0VSX1NPVVJDRV9CQVRURVJZIDEKLQotLyoKLSAqIE5WX0NUUkxfR1BVX0NV
UlJFTlRfUEVSRk9STUFOQ0VfTU9ERSBpcyBkZXByZWNhdGVkCi0gKi8KLQotI2RlZmluZSBOVl9D
VFJMX0dQVV9DVVJSRU5UX1BFUkZPUk1BTkNFX01PREUgMjYzIC8qIFItLUcgKi8KLSNkZWZpbmUg
TlZfQ1RSTF9HUFVfQ1VSUkVOVF9QRVJGT1JNQU5DRV9NT0RFX0RFU0tUT1AgMAotI2RlZmluZSBO
Vl9DVFJMX0dQVV9DVVJSRU5UX1BFUkZPUk1BTkNFX01PREVfTUFYUEVSRiAxCi0KLS8qIE5WX0NU
UkxfR0xZUEhfQ0FDSEUgLSBFbmFibGVzIFJFTkRFUiBHbHlwaCBDYWNoaW5nIHRvIFZSQU0gKi8K
LQotI2RlZmluZSBOVl9DVFJMX0dMWVBIX0NBQ0hFIDI2NCAvKiBSVy0gKi8KLSNkZWZpbmUgTlZf
Q1RSTF9HTFlQSF9DQUNIRV9ESVNBQkxFRCAwCi0jZGVmaW5lIE5WX0NUUkxfR0xZUEhfQ0FDSEVf
RU5BQkxFRCAxCi0KLS8qCi0gKiBOVl9DVFJMX0dQVV9DVVJSRU5UX1BFUkZPUk1BTkNFX0xFVkVM
IHJlcG9ydHMgdGhlIGN1cnJlbnQKLSAqIFBlcmZvcm1hbmNlIGxldmVsIG9mIHRoZSBHUFUgZHJp
dmluZyB0aGUgWCBzY3JlZW4uICBFYWNoCi0gKiBQZXJmb3JtYW5jZSBsZXZlbCBoYXMgYXNzb2Np
YXRlZCBOVkNsb2NrIGFuZCBNZW0gQ2xvY2sgdmFsdWVzLgotICovCi0KLSNkZWZpbmUgTlZfQ1RS
TF9HUFVfQ1VSUkVOVF9QRVJGT1JNQU5DRV9MRVZFTCAyNjUgLyogUi0tRyAqLwotCi0vKgotICog
TlZfQ1RSTF9HUFVfQURBUFRJVkVfQ0xPQ0tfU1RBVEUgcmVwb3J0cyBpZiBBZGFwdGl2ZSBDbG9j
a2luZwotICogaXMgRW5hYmxlZCBvbiB0aGUgR1BVIGRyaXZpbmcgdGhlIFggc2NyZWVuLgotICov
Ci0KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfQURBUFRJVkVfQ0xPQ0tfU1RBVEUgMjY2IC8qIFItLUcg
Ki8KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfQURBUFRJVkVfQ0xPQ0tfU1RBVEVfRElTQUJMRUQgMAot
I2RlZmluZSBOVl9DVFJMX0dQVV9BREFQVElWRV9DTE9DS19TVEFURV9FTkFCTEVEIDEKLQotLyoK
LSAqIE5WX0NUUkxfR1ZPX09VVFBVVF9WSURFT19MT0NLRUQgLSBSZXR1cm5zIHdoZXRoZXIgb3Ig
bm90IHRoZSBHVk8gb3V0cHV0Ci0gKiB2aWRlbyBpcyBsb2NrZWQgdG8gdGhlIEdQVS4KLSAqLwot
Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX09VVFBVVF9WSURFT19MT0NLRUQgMjY3IC8qIFItLS0gKi8K
LSNkZWZpbmUgTlZfQ1RSTF9HVk9fT1VUUFVUX1ZJREVPX0xPQ0tFRF9GQUxTRSAwCi0jZGVmaW5l
IE5WX0NUUkxfR1ZPX09VVFBVVF9WSURFT19MT0NLRURfVFJVRSAxCi0KLS8qCi0gKiBOVl9DVFJM
X0dWT19TWU5DX0xPQ0tfU1RBVFVTIC0gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgR1ZPIGRl
dmljZQotICogaXMgbG9ja2VkIHRvIHRoZSBpbnB1dCByZWYgc2lnbmFsLiAgSWYgdGhlIHN5bmMg
bW9kZSBpcyBzZXQgdG8KLSAqIE5WX0NUUkxfR1ZPX1NZTkNfTU9ERV9HRU5MT0NLLCB0aGVuIHRo
aXMgcmV0dXJucyB0aGUgZ2VubG9jawotICogc3luYyBzdGF0dXMsIGFuZCBpZiB0aGUgc3luYyBt
b2RlIGlzIHNldCB0byBOVl9DVFJMX0dWT19TWU5DX01PREVfRlJBTUVMT0NLLAotICogdGhlbiB0
aGlzIHJlcG9ydHMgdGhlIGZyYW1lIGxvY2sgc3RhdHVzLgotICovCi0KLSNkZWZpbmUgTlZfQ1RS
TF9HVk9fU1lOQ19MT0NLX1NUQVRVUyAyNjggLyogUi0tLSAqLwotI2RlZmluZSBOVl9DVFJMX0dW
T19TWU5DX0xPQ0tfU1RBVFVTX1VOTE9DS0VEIDAKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fU1lOQ19M
T0NLX1NUQVRVU19MT0NLRUQgMQotCi0vKgotICogTlZfQ1RSTF9HVk9fQU5DX1RJTUVfQ09ERV9H
RU5FUkFUSU9OIC0gQWxsb3dzIFNESSBkZXZpY2UgdG8gZ2VuZXJhdGUKLSAqIHRpbWUgY29kZXMg
aW4gdGhlIEFOQyByZWdpb24gb2YgdGhlIFNESSB2aWRlbyBvdXRwdXQgc3RyZWFtLgotICovCi0K
LSNkZWZpbmUgTlZfQ1RSTF9HVk9fQU5DX1RJTUVfQ09ERV9HRU5FUkFUSU9OIDI2OSAvKiBSVy0t
ICovCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0FOQ19USU1FX0NPREVfR0VORVJBVElPTl9ESVNBQkxF
IDAKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fQU5DX1RJTUVfQ09ERV9HRU5FUkFUSU9OX0VOQUJMRSAx
Ci0KLS8qCi0gKiBOVl9DVFJMX0dWT19DT01QT1NJVEUgLSBFbmFibGVzL0Rpc2FibGVzIFNESSBj
b21wb3NpdGluZy4gIFRoaXMgYXR0cmlidXRlCi0gKiBpcyBvbmx5IGF2YWlsYWJsZSB3aGVuIGFu
IFNESSBpbnB1dCBzb3VyY2UgaXMgZGV0ZWN0ZWQgYW5kIGlzIGluIGdlbmxvY2sKLSAqIG1vZGUu
Ci0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWT19DT01QT1NJVEUgMjcwIC8qIFJXLS0gKi8KLSNk
ZWZpbmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX0RJU0FCTEUgMAotI2RlZmluZSBOVl9DVFJMX0dW
T19DT01QT1NJVEVfRU5BQkxFIDEKLQotLyoKLSAqIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9BTFBI
QV9LRVkgLSBXaGVuIGNvbXBvc2l0aW5nIGlzIGVuYWJsZWQsIHRoaXMKLSAqIGVuYWJsZXMvZGlz
YWJsZXMgYWxwaGEgYmxlbmRpbmcuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWT19DT01QT1NJ
VEVfQUxQSEFfS0VZIDI3MSAvKiBSVy0tICovCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lU
RV9BTFBIQV9LRVlfRElTQUJMRSAwCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9BTFBI
QV9LRVlfRU5BQkxFIDEKLQotLyoKLSAqIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9MVU1BX0tFWV9S
QU5HRSAtIFNldCB0aGUgdmFsdWVzIG9mIGEgbHVtYQotICogY2hhbm5lbCByYW5nZS4gIFRoaXMg
aXMgYSBwYWNrZWQgaW50IHRoYXQgaGFzIHRoZSBmb2xsb3dpbmcgZm9ybWF0Ci0gKiAoaW4gb3Jk
ZXIgb2YgaGlnaC1iaXRzIHRvIGxvdyBiaXRzKToKLSAqCi0gKiBSYW5nZSAjICgxMSBiaXRzKSwg
KEVuYWJsZWQgMSBiaXQpLCBtaW4gdmFsdWUgKDEwIGJpdHMpLCBtYXggdmFsdWUgKDEwIGJpdHMp
Ci0gKgotICogVG8gcXVlcnkgdGhlIGN1cnJlbnQgdmFsdWVzLCBwYXNzIHRoZSByYW5nZSAjIHRo
cm91Z2h0IHRoZSBkaXNwbGF5X21hc2sKLSAqIHZhcmlhYmxlLgotICovCi0KLSNkZWZpbmUgTlZf
Q1RSTF9HVk9fQ09NUE9TSVRFX0xVTUFfS0VZX1JBTkdFIDI3MiAvKiBSVy0tICovCi0KLSNkZWZp
bmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX01BS0VfUkFOR0UocmFuZ2UsIGVuYWJsZSwgbWluLCBt
YXgpICAgICAgICAgICAgXAotICAgICgoKChtaW4pJjB4M0ZGKSA8PCAwKSB8ICgoKG1heCkmMHgz
RkYpIDw8IDEwKSB8ICgoKGVuYWJsZSkmMHgxKSA8PCAyMCkgfCBcCi0gICAgICgoKHJhbmdlKSYw
eDdGRikgPDwgMjEpKQotCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9HRVRfUkFOR0Uo
dmFsLCByYW5nZSwgZW5hYmxlLCBtaW4sIG1heCkgXAotICAgIChtaW4pID0gKCh2YWwpID4+IDAp
ICYgMHgzRkY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAobWF4
KSA9ICgodmFsKSA+PiAxMCkgJiAweDNGRjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCi0gICAgKGVuYWJsZSkgPSAoKHZhbCkgPj4gMjApICYgMHgxOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIChyYW5nZSkgPSAoKHZhbCkgPj4gMjEpICYgMHg3
RkY7Ci0KLS8qCi0gKiBOVl9DVFJMX0dWT19DT01QT1NJVEVfQ1JfS0VZX1JBTkdFIC0gU2V0IHRo
ZSB2YWx1ZXMgb2YgYSBDUgotICogY2hhbm5lbCByYW5nZS4gIFRoaXMgaXMgYSBwYWNrZWQgaW50
IHRoYXQgaGFzIHRoZSBmb2xsb3dpbmcgZm9ybWF0Ci0gKiAoaW4gb3JkZXIgb2YgaGlnaC1iaXRz
IHRvIGxvdyBiaXRzKToKLSAqCi0gKiBSYW5nZSAjICgxMSBiaXRzKSwgKEVuYWJsZWQgMSBiaXQp
LCBtaW4gdmFsdWUgKDEwIGJpdHMpLCBtYXggdmFsdWUgKDEwIGJpdHMpCi0gKgotICogVG8gcXVl
cnkgdGhlIGN1cnJlbnQgdmFsdWVzLCBwYXNzIHRoZSByYW5nZSAjIHRocm91Z2h0IGhlIGRpc3Bs
YXlfbWFzawotICogdmFyaWFibGUuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWT19DT01QT1NJ
VEVfQ1JfS0VZX1JBTkdFIDI3MyAvKiBSVy0tICovCi0KLS8qCi0gKiBOVl9DVFJMX0dWT19DT01Q
T1NJVEVfQ0JfS0VZX1JBTkdFIC0gU2V0IHRoZSB2YWx1ZXMgb2YgYSBDQgotICogY2hhbm5lbCBy
YW5nZS4gIFRoaXMgaXMgYSBwYWNrZWQgaW50IHRoYXQgaGFzIHRoZSBmb2xsb3dpbmcgZm9ybWF0
Ci0gKiAoaW4gb3JkZXIgb2YgaGlnaC1iaXRzIHRvIGxvdyBiaXRzKToKLSAqCi0gKiBSYW5nZSAj
ICgxMSBiaXRzKSwgKEVuYWJsZWQgMSBiaXQpLCBtaW4gdmFsdWUgKDEwIGJpdHMpLCBtYXggdmFs
dWUgKDEwIGJpdHMpCi0gKgotICogVG8gcXVlcnkgdGhlIGN1cnJlbnQgdmFsdWVzLCBwYXNzIHRo
ZSByYW5nZSAjIHRocm91Z2h0IGhlIGRpc3BsYXlfbWFzawotICogdmFyaWFibGUuCi0gKi8KLQot
I2RlZmluZSBOVl9DVFJMX0dWT19DT01QT1NJVEVfQ0JfS0VZX1JBTkdFIDI3NCAvKiBSVy0tICov
Ci0KLS8qCi0gKiBOVl9DVFJMX0dWT19DT01QT1NJVEVfTlVNX0tFWV9SQU5HRVMgLSBSZXR1cm5z
IHRoZSBudW1iZXIgb2YgcmFuZ2VzCi0gKiBhdmFpbGFibGUgZm9yIGVhY2ggY2hhbm5lbCAoWS9M
dW1hLCBDciwgYW5kIENiLikKLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9O
VU1fS0VZX1JBTkdFUyAyNzUgLyogUi0tLSAqLwotCi0vKgotICogTlZfQ1RSTF9TV0lUQ0hfVE9f
RElTUExBWVMgLSBDYW4gYmUgdXNlZCB0byBzZWxlY3Qgd2hpY2ggZGlzcGxheXMKLSAqIHRvIHN3
aXRjaCB0byAoYXMgYSBob3RrZXkgZXZlbnQpLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9TV0lU
Q0hfVE9fRElTUExBWVMgMjc2IC8qIC1XLSAqLwotCi0vKgotICogTlZfQ1RSTF9OT1RFQk9PS19E
SVNQTEFZX0NIQU5HRV9MSURfRVZFTlQgLSBFdmVudCB0aGF0IG5vdGlmaWVzCi0gKiB3aGVuIGEg
bm90ZWJvb2sgbGlkIGNoYW5nZSBvY2N1cnMgKGkuZS4gd2hlbiB0aGUgbGlkIGlzIG9wZW5lZCBv
cgotICogY2xvc2VkLikgIFRoaXMgYXR0cmlidXRlIGNhbiBiZSBxdWVyaWVkIHRvIHJldHJpZXZl
IHRoZSBjdXJyZW50Ci0gKiBub3RlYm9vayBsaWQgc3RhdHVzIChvcGVuZWQvY2xvc2VkLikKLSAq
LwotCi0jZGVmaW5lIE5WX0NUUkxfTk9URUJPT0tfRElTUExBWV9DSEFOR0VfTElEX0VWRU5UIDI3
NyAvKiBSVy0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9OT1RFQk9PS19ESVNQTEFZX0NIQU5HRV9MSURf
RVZFTlRfQ0xPU0UgMAotI2RlZmluZSBOVl9DVFJMX05PVEVCT09LX0RJU1BMQVlfQ0hBTkdFX0xJ
RF9FVkVOVF9PUEVOIDEKLQotLyoKLSAqIE5WX0NUUkxfTk9URUJPT0tfSU5URVJOQUxfTENEIC0g
UmV0dXJucyB0aGUgZGlzcGxheSBkZXZpY2UgbWFzayBvZgotICogdGhlIGludGVuYWwgTENEIG9m
IGEgbm90ZWJvb2suCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX05PVEVCT09LX0lOVEVSTkFMX0xD
RCAyNzggLyogUi0tICovCi0KLS8qCi0gKiBOVl9DVFJMX0RFUFRIXzMwX0FMTE9XRUQgLSByZXR1
cm5zIHdoZXRoZXIgdGhlIE5WSURJQSBYIGRyaXZlciBzdXBwb3J0cwotICogZGVwdGggMzAgb24g
dGhlIHNwZWNpZmllZCBYIHNjcmVlbiBvciBHUFUuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0RF
UFRIXzMwX0FMTE9XRUQgMjc5IC8qIFItLUcgKi8KLQotLyoKLSAqIE5WX0NUUkxfTU9ERV9TRVRf
RVZFTlQgVGhpcyBhdHRyaWJ1dGUgaXMgc2VudCBhcyBhbiBldmVudAotICogd2hlbiBob3RrZXks
IGN0cmwtYWx0LSsvLSBvciByYW5kciBldmVudCBvY2N1cnMuICBOb3RlIHRoYXQKLSAqIFRoaXMg
YXR0cmlidXRlIGNhbm5vdCBiZSBzZXQgb3IgcXVlcmllZCBhbmQgaXMgbWVhbnQgdG8KLSAqIGJl
IHJlY2VpdmVkIGJ5IGNsaWVudHMgdGhhdCB3aXNoIHRvIGJlIG5vdGlmaWVkIG9mIHdoZW4KLSAq
IG1vZGUgc2V0IGV2ZW50cyBvY2N1ci4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfTU9ERV9TRVRf
RVZFTlQgMjgwIC8qIC0tLSAqLwotCi0vKgotICogTlZfQ1RSTF9PUEVOR0xfQUFfTElORV9HQU1N
QV9WQUxVRSAtIHRoZSBnYW1tYSB2YWx1ZSB1c2VkIGJ5Ci0gKiBPcGVuR0wgd2hlbiBOVl9DVFJM
X09QRU5HTF9BQV9MSU5FX0dBTU1BIGlzIGVuYWJsZWQKLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxf
T1BFTkdMX0FBX0xJTkVfR0FNTUFfVkFMVUUgMjgxIC8qIFJXLVggKi8KLQotLyoKLSAqIE5WX0NU
UkxfVkNTQ19ISUdIX1BFUkZfTU9ERSAtIElzIHVzZWQgdG8gYm90aCBxdWVyeSBIaWdoIFBlcmZv
cm1hbmNlIE1vZGUKLSAqIHN0YXR1cyBvbiB0aGUgVmlzdWFsIENvbXB1dGluZyBTeXN0ZW0sIGFu
ZCBhbHNvIHRvIGVuYWJsZSBvciBkaXNhYmxlIEhpZ2gKLSAqIFBlcmZvcm1hbmNlIE1vZGUuCi0g
Ki8KLQotI2RlZmluZSBOVl9DVFJMX1ZDU0NfSElHSF9QRVJGX01PREUgMjgyIC8qIFJXLVYgKi8K
LSNkZWZpbmUgTlZfQ1RSTF9WQ1NDX0hJR0hfUEVSRl9NT0RFX0RJU0FCTEUgMAotI2RlZmluZSBO
Vl9DVFJMX1ZDU0NfSElHSF9QRVJGX01PREVfRU5BQkxFIDEKLQotLyoKLSAqIE5WX0NUUkxfRElT
UExBWVBPUlRfTElOS19SQVRFIC0gcmV0dXJucyB0aGUgbmVnb3RpYXRlZCBsYW5lIGJhbmR3aWR0
aCBvZiB0aGUKLSAqIERpc3BsYXlQb3J0IG1haW4gbGluay4KLSAqIFRoaXMgYXR0cmlidXRlIGlz
IG9ubHkgYXZhaWxhYmxlIGZvciBEaXNwbGF5UG9ydCBmbGF0IHBhbmVscy4KLSAqLwotCi0jZGVm
aW5lIE5WX0NUUkxfRElTUExBWVBPUlRfTElOS19SQVRFIDI5MSAvKiBSLURHICovCi0jZGVmaW5l
IE5WX0NUUkxfRElTUExBWVBPUlRfTElOS19SQVRFX0RJU0FCTEVEIDB4MAotI2RlZmluZSBOVl9D
VFJMX0RJU1BMQVlQT1JUX0xJTktfUkFURV8xXzYyR0JQUyAweDYKLSNkZWZpbmUgTlZfQ1RSTF9E
SVNQTEFZUE9SVF9MSU5LX1JBVEVfMl83MEdCUFMgMHhBCi0KLS8qCi0gKiBOVl9DVFJMX1NURVJF
T19FWUVTX0VYQ0hBTkdFIC0gQ29udHJvbHMgd2hldGhlciBvciBub3QgdGhlIGxlZnQgYW5kIHJp
Z2h0Ci0gKiBleWVzIG9mIGEgc3RlcmVvIGltYWdlIGFyZSBmbGlwcGVkLgotICovCi0KLSNkZWZp
bmUgTlZfQ1RSTF9TVEVSRU9fRVlFU19FWENIQU5HRSAyOTIgLyogUlctWCAqLwotI2RlZmluZSBO
Vl9DVFJMX1NURVJFT19FWUVTX0VYQ0hBTkdFX09GRiAwCi0jZGVmaW5lIE5WX0NUUkxfU1RFUkVP
X0VZRVNfRVhDSEFOR0VfT04gMQotCi0vKgotICogTlZfQ1RSTF9OT19TQ0FOT1VUIC0gcmV0dXJu
cyB3aGV0aGVyIHRoZSBzcGVjaWFsICJOb1NjYW5vdXQiIG1vZGUgaXMKLSAqIGVuYWJsZWQgb24g
dGhlIHNwZWNpZmllZCBYIHNjcmVlbiBvciBHUFU7IGZvciBkZXRhaWxzIG9uIHRoaXMgbW9kZSwK
LSAqIHNlZSB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJub25lIiB2YWx1ZSBmb3IgdGhlICJVc2VE
aXNwbGF5RGV2aWNlIgotICogWCBjb25maWd1cmF0aW9uIG9wdGlvbiBpbiB0aGUgTlZJRElBIGRy
aXZlciBSRUFETUUuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX05PX1NDQU5PVVQgMjkzIC8qIFIt
LUcgKi8KLSNkZWZpbmUgTlZfQ1RSTF9OT19TQ0FOT1VUX0RJU0FCTEVEIDAKLSNkZWZpbmUgTlZf
Q1RSTF9OT19TQ0FOT1VUX0VOQUJMRUQgMQotCi0vKgotICogTlZfQ1RSTF9HVk9fQ1NDX0NIQU5H
RURfRVZFTlQgVGhpcyBhdHRyaWJ1dGUgaXMgc2VudCBhcyBhbiBldmVudAotICogd2hlbiB0aGUg
Y29sb3Igc3BhY2UgY29udmVyc2lvbiBtYXRyaXggaGFzIGJlZW4gYWx0ZXJlZCBieSBhbm90aGVy
Ci0gKiBjbGllbnQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWT19DU0NfQ0hBTkdFRF9FVkVO
VCAyOTQgLyogLS0tICovCi0KLS8qCi0gKiBOVl9DVFJMX0ZSQU1FTE9DS19TTEFWRUFCTEUgLSBS
ZXR1cm5zIGEgYml0bWFzayBvZiB0aGUgZGlzcGxheSBkZXZpY2VzCi0gKiB0aGF0IGFyZSAoY3Vy
cmVudGx5KSBhbGxvd2VkIHRvIGJlIHNlbGVjdGVkIGFzIHNsYXZlIGRldmljZXMgZm9yIHRoZQot
ICogZ2l2ZW4gR1BVCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19TTEFWRUFCTEUg
Mjk1IC8qIFItREcgKi8KLQotLyoKLSAqIE5WX0NUUkxfR1ZPX1NZTkNfVE9fRElTUExBWSBUaGlz
IGF0dHJpYnV0ZSBjb250cm9scyB3aGV0aGVyIG9yIG5vdAotICogdGhlIG5vbi1TREkgZGlzcGxh
eSBkZXZpY2Ugd2lsbCBiZSBzeW5jJ2VkIHRvIHRoZSBTREkgZGlzcGxheSBkZXZpY2UKLSAqICh3
aGVuIGNvbmZpZ3VyZWQgaW4gVHdpblZpZXcsIENsb25lIE1vZGUgb3Igd2hlbiB1c2luZyB0aGUg
U0RJIGRldmljZQotICogd2l0aCBPcGVuR0wpLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HVk9f
U1lOQ19UT19ESVNQTEFZIDI5NiAvKiAtLS0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fU1lOQ19U
T19ESVNQTEFZX0RJU0FCTEUgMAotI2RlZmluZSBOVl9DVFJMX0dWT19TWU5DX1RPX0RJU1BMQVlf
RU5BQkxFIDEKLQotLyoKLSAqIE5WX0NUUkxfWF9TRVJWRVJfVU5JUVVFX0lEIC0gcmV0dXJucyBh
IHBzZXVkby11bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcwotICogWCBzZXJ2ZXIuIEludGVuZGVk
IGZvciB1c2UgaW4gY2FzZXMgd2hlcmUgYW4gTlYtQ09OVFJPTCBjbGllbnQgY29tbXVuaWNhdGVz
Ci0gKiB3aXRoIG11bHRpcGxlIFggc2VydmVycywgYW5kIHdhbnRzIHNvbWUgbGV2ZWwgb2YgY29u
ZmlkZW5jZSB0aGF0IHR3bwotICogWCBEaXNwbGF5IGNvbm5lY3Rpb25zIGNvcnJlc3BvbmQgdG8g
dGhlIHNhbWUgb3IgZGlmZmVyZW50IFggc2VydmVycy4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxf
WF9TRVJWRVJfVU5JUVVFX0lEIDI5NyAvKiBSLS0tICovCi0KLS8qCi0gKiBOVl9DVFJMX1BJWE1B
UF9DQUNIRSAtIFRoaXMgYXR0cmlidXRlIGNvbnRyb2xzIHdoZXRoZXIgdGhlIGRyaXZlciBhdHRl
bXB0cyB0bwotICogc3RvcmUgdmlkZW8gbWVtb3J5IHBpeG1hcHMgaW4gYSBjYWNoZS4gIFRoZSBj
YWNoZSBzcGVlZHMgdXAgYWxsb2NhdGlvbiBhbmQKLSAqIGRlYWxsb2NhdGlvbiBvZiBwaXhtYXBz
LCBidXQgY291bGQgdXNlIG1vcmUgbWVtb3J5IHRoYW4gd2hlbiB0aGUgY2FjaGUgaXMKLSAqIGRp
c2FibGVkLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9QSVhNQVBfQ0FDSEUgMjk4IC8qIFJXLVgg
Ki8KLSNkZWZpbmUgTlZfQ1RSTF9QSVhNQVBfQ0FDSEVfRElTQUJMRSAwCi0jZGVmaW5lIE5WX0NU
UkxfUElYTUFQX0NBQ0hFX0VOQUJMRSAxCi0KLS8qCi0gKiBOVl9DVFJMX1BJWE1BUF9DQUNIRV9S
T1VORElOR19TSVpFX0tCIC0gV2hlbiB0aGUgcGl4bWFwIGNhY2hlIGlzIGVuYWJsZWQgYW5kCi0g
KiB0aGVyZSBpcyBub3QgZW5vdWdoIGZyZWUgc3BhY2UgaW4gdGhlIGNhY2hlIHRvIGZpdCBhIG5l
dyBwaXhtYXAsIHRoZSBkcml2ZXIKLSAqIHdpbGwgcm91bmQgdXAgdG8gdGhlIG5leHQgbXVsdGlw
bGUgb2YgdGhpcyBudW1iZXIgb2Yga2lsb2J5dGVzIHdoZW4KLSAqIGFsbG9jYXRpbmcgbW9yZSBt
ZW1vcnkgZm9yIHRoZSBjYWNoZS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfUElYTUFQX0NBQ0hF
X1JPVU5ESU5HX1NJWkVfS0IgMjk5IC8qIFJXLVggKi8KLQotLyoKLSAqIE5WX0NUUkxfSVNfR1ZP
X0RJU1BMQVkgLSByZXR1cm5zIHdoZXRoZXIgb3Igbm90IGEgZ2l2ZW4gZGlzcGxheSBpcyBhbgot
ICogU0RJIGRldmljZS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfSVNfR1ZPX0RJU1BMQVkgMzAw
IC8qIFItRCAqLwotI2RlZmluZSBOVl9DVFJMX0lTX0dWT19ESVNQTEFZX0ZBTFNFIDAKLSNkZWZp
bmUgTlZfQ1RSTF9JU19HVk9fRElTUExBWV9UUlVFIDEKLQotLyoKLSAqIE5WX0NUUkxfUENJX0lE
IC0gUmV0dXJucyB0aGUgUENJIHZlbmRvciBhbmQgZGV2aWNlIElEIG9mIHRoZSBzcGVjaWZpZWQK
LSAqIGRldmljZS4KLSAqCi0gKiBOVl9DVFJMX1BDSV9JRCBpcyBhICJwYWNrZWQiIGludGVnZXIg
YXR0cmlidXRlOyB0aGUgUENJIHZlbmRvciBJRCBpcyBzdG9yZWQKLSAqIGluIHRoZSB1cHBlciAx
NiBiaXRzIG9mIHRoZSBpbnRlZ2VyLCBhbmQgdGhlIFBDSSBkZXZpY2UgSUQgaXMgc3RvcmVkIGlu
IHRoZQotICogbG93ZXIgMTYgYml0cyBvZiB0aGUgaW50ZWdlci4KLSAqLwotCi0jZGVmaW5lIE5W
X0NUUkxfUENJX0lEIDMwMSAvKiBSLS1HSSAqLwotCi0vKgotICogTlZfQ1RSTF9HVk9fRlVMTF9S
QU5HRV9DT0xPUiAtIEFsbG93IGZ1bGwgcmFuZ2UgY29sb3IgZGF0YSBbNC0xMDE5XQotICogd2l0
aG91dCBjbGFtcGluZyB0byBbNjQtOTQwXS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0ZV
TExfUkFOR0VfQ09MT1IgMzAyIC8qIFJXLSAqLwotI2RlZmluZSBOVl9DVFJMX0dWT19GVUxMX1JB
TkdFX0NPTE9SX0RJU0FCTEVEIDAKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fRlVMTF9SQU5HRV9DT0xP
Ul9FTkFCTEVEIDEKLQotLyoKLSAqIE5WX0NUUkxfU0xJX01PU0FJQ19NT0RFX0FWQUlMQUJMRSAt
IFJldHVybnMgd2hldGhlciBvciBub3QKLSAqIFNMSSBNb3NhaWMgTW9kZSBzdXBwb3J0ZWQuCi0g
Ki8KLQotI2RlZmluZSBOVl9DVFJMX1NMSV9NT1NBSUNfTU9ERV9BVkFJTEFCTEUgMzAzIC8qIFIt
LSAqLwotI2RlZmluZSBOVl9DVFJMX1NMSV9NT1NBSUNfTU9ERV9BVkFJTEFCTEVfRkFMU0UgMAot
I2RlZmluZSBOVl9DVFJMX1NMSV9NT1NBSUNfTU9ERV9BVkFJTEFCTEVfVFJVRSAxCi0KLS8qCi0g
KiBOVl9DVFJMX0dWT19FTkFCTEVfUkdCX0RBVEEgLSBBbGxvd3MgY2xpZW50cyB0byBzcGVjaWZ5
IHdoZW4KLSAqIHRoZSBHVk8gYm9hcmQgc2hvdWxkIHByb2Nlc3MgY29sb3JzIGFzIFJHQiB3aGVu
IHRoZSBvdXRwdXQgZGF0YQotICogZm9ybWF0IGlzIG9uZSBvZiB0aGUgTlZfQ1RSTF9HVk9fREFU
QV9GT1JNQVRfPz8/X1BBU1NUUkhVIG1vZGVzLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HVk9f
RU5BQkxFX1JHQl9EQVRBIDMwNCAvKiBSVy0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fRU5BQkxF
X1JHQl9EQVRBX0RJU0FCTEUgMAotI2RlZmluZSBOVl9DVFJMX0dWT19FTkFCTEVfUkdCX0RBVEFf
RU5BQkxFIDEKLQotLyoKLSAqIE5WX0NUUkxfSU1BR0VfU0hBUlBFTklOR19ERUZBVUxUIC0gUmV0
dXJucyBkZWZhdWx0IHZhbHVlIG9mCi0gKiBJbWFnZSBTaGFycGVuaW5nLgotICovCi0KLSNkZWZp
bmUgTlZfQ1RSTF9JTUFHRV9TSEFSUEVOSU5HX0RFRkFVTFQgMzA1IC8qIFItLSAqLwotCi0vKgot
ICogTlZfQ1RSTF9QQ0lfRE9NQUlOIC0gUmV0dXJucyB0aGUgUENJIGRvbWFpbiBudW1iZXIgdGhl
IHNwZWNpZmllZCBkZXZpY2UgaXMKLSAqIHVzaW5nLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9Q
Q0lfRE9NQUlOIDMwNiAvKiBSLS1HSSAqLwotCi0vKgotICogTlZfQ1RSTF9HVklfTlVNX0pBQ0tT
IC0gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGlucHV0IEJOQyBqYWNrcyBhdmFpbGFibGUKLSAqIG9u
IGEgR1ZJIGRldmljZS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZJX05VTV9KQUNLUyAzMDcg
LyogUi0tSSAqLwotCi0vKgotICogTlZfQ1RSTF9HVklfTUFYX0xJTktTX1BFUl9TVFJFQU0gLSBS
ZXR1cm5zIHRoZSBtYXhpbXVtIHN1cHBvcnRlZCBudW1iZXIgb2YKLSAqIGxpbmtzIHRoYXQgY2Fu
IGJlIHRpZWQgdG8gb25lIHN0cmVhbS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZJX01BWF9M
SU5LU19QRVJfU1RSRUFNIDMwOCAvKiBSLS1JICovCi0KLS8qCi0gKiBOVl9DVFJMX0dWSV9ERVRF
Q1RFRF9DSEFOTkVMX0JJVFNfUEVSX0NPTVBPTkVOVCAtIFJldHVybnMgdGhlIGRldGVjdGVkCi0g
KiBudW1iZXIgb2YgYml0cyBwZXIgY29tcG9uZW50IChCUEMpIG9mIGRhdGEgb24gdGhlIGdpdmVu
IGlucHV0IGphY2srCi0gKiBjaGFubmVsLgotICoKLSAqIFRoZSBqYWNrIG51bWJlciBzaG91bGQg
YmUgc3BlY2lmaWVkIGluIHRoZSBsb3dlciAxNiBiaXRzIG9mIHRoZQotICogImRpc3BsYXlfbWFz
ayIgcGFyYW1ldGVyLCB3aGlsZSB0aGUgY2hhbm5lbCBudW1iZXIgc2hvdWxkIGJlIHNwZWNpZmll
ZCBpbgotICogdGhlIHVwcGVyIDE2IGJpdHMuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWSV9E
RVRFQ1RFRF9DSEFOTkVMX0JJVFNfUEVSX0NPTVBPTkVOVCAzMDkgLyogUi0tSSAqLwotI2RlZmlu
ZSBOVl9DVFJMX0dWSV9CSVRTX1BFUl9DT01QT05FTlRfVU5LTk9XTiAwCi0jZGVmaW5lIE5WX0NU
UkxfR1ZJX0JJVFNfUEVSX0NPTVBPTkVOVF84IDEKLSNkZWZpbmUgTlZfQ1RSTF9HVklfQklUU19Q
RVJfQ09NUE9ORU5UXzEwIDIKLSNkZWZpbmUgTlZfQ1RSTF9HVklfQklUU19QRVJfQ09NUE9ORU5U
XzEyIDMKLQotLyoKLSAqIE5WX0NUUkxfR1ZJX1JFUVVFU1RFRF9TVFJFQU1fQklUU19QRVJfQ09N
UE9ORU5UIC0gU3BlY2lmeSB0aGUgbnVtYmVyIG9mCi0gKiBiaXRzIHBlciBjb21wb25lbnQgKEJQ
Qykgb2YgZGF0YSBmb3IgdGhlIGNhcHR1cmVkIHN0cmVhbS4KLSAqIFRoZSBzdHJlYW0gbnVtYmVy
IHNob3VsZCBiZSBzcGVjaWZpZWQgaW4gdGhlICJkaXNwbGF5X21hc2siIHBhcmFtZXRlci4KLSAq
Ci0gKiBOb3RlOiBTZXR0aW5nIHRoaXMgYXR0cmlidXRlIG1heSBhbHNvIHJlc3VsdCBpbiB0aGUg
Zm9sbG93aW5nCi0gKiAgICAgICBOVi1DT05UUk9MIGF0dHJpYnV0ZXMgYmVpbmcgcmVzZXQgb24g
dGhlIEdWSSBkZXZpY2UgKHRvIGVuc3VyZQotICogICAgICAgdGhlIGNvbmZpZ3VyYXRpb24gcmVt
YWlucyB2YWxpZCk6Ci0gKiAgICAgICAgICAgTlZfQ1RSTF9HVklfUkVRVUVTVEVEX1NUUkVBTV9D
T01QT05FTlRfU0FNUExJTkcKLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZJX1JFUVVFU1RFRF9T
VFJFQU1fQklUU19QRVJfQ09NUE9ORU5UIDMxMCAvKiBSVy1JICovCi0KLS8qCi0gKiBOVl9DVFJM
X0dWSV9ERVRFQ1RFRF9DSEFOTkVMX0NPTVBPTkVOVF9TQU1QTElORyAtIFJldHVybnMgdGhlIGRl
dGVjdGVkCi0gKiBzYW1wbGluZyBmb3JtYXQgZm9yIHRoZSBpbnB1dCBqYWNrK2NoYW5uZWwuCi0g
KgotICogVGhlIGphY2sgbnVtYmVyIHNob3VsZCBiZSBzcGVjaWZpZWQgaW4gdGhlIGxvd2VyIDE2
IGJpdHMgb2YgdGhlCi0gKiAiZGlzcGxheV9tYXNrIiBwYXJhbWV0ZXIsIHdoaWxlIHRoZSBjaGFu
bmVsIG51bWJlciBzaG91bGQgYmUgc3BlY2lmaWVkIGluCi0gKiB0aGUgdXBwZXIgMTYgYml0cy4K
LSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZJX0RFVEVDVEVEX0NIQU5ORUxfQ09NUE9ORU5UX1NB
TVBMSU5HIDMxMSAvKiBSLS1JICovCi0jZGVmaW5lIE5WX0NUUkxfR1ZJX0NPTVBPTkVOVF9TQU1Q
TElOR19VTktOT1dOIDAKLSNkZWZpbmUgTlZfQ1RSTF9HVklfQ09NUE9ORU5UX1NBTVBMSU5HXzQ0
NDQgMQotI2RlZmluZSBOVl9DVFJMX0dWSV9DT01QT05FTlRfU0FNUExJTkdfNDIyNCAyCi0jZGVm
aW5lIE5WX0NUUkxfR1ZJX0NPTVBPTkVOVF9TQU1QTElOR180NDQgMwotI2RlZmluZSBOVl9DVFJM
X0dWSV9DT01QT05FTlRfU0FNUExJTkdfNDIyIDQKLSNkZWZpbmUgTlZfQ1RSTF9HVklfQ09NUE9O
RU5UX1NBTVBMSU5HXzQyMCA1Ci0KLS8qCi0gKiBOVl9DVFJMX0dWSV9SRVFVRVNURURfQ09NUE9O
RU5UX1NBTVBMSU5HIC0gU3BlY2lmeSB0aGUgc2FtcGxpbmcgZm9ybWF0IGZvcgotICogdGhlIGNh
cHR1cmVkIHN0cmVhbS4KLSAqIFRoZSBwb3NzaWJsZSB2YWx1ZXMgYXJlIHRoZSBOVl9DVFJMX0dW
SV9ERVRFQ1RFRF9DT01QT05FTlRfU0FNUExJTkcKLSAqIGNvbnN0YW50cy4KLSAqIFRoZSBzdHJl
YW0gbnVtYmVyIHNob3VsZCBiZSBzcGVjaWZpZWQgaW4gdGhlICJkaXNwbGF5X21hc2siIHBhcmFt
ZXRlci4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZJX1JFUVVFU1RFRF9TVFJFQU1fQ09NUE9O
RU5UX1NBTVBMSU5HIDMxMiAvKiBSVy1JICovCi0KLS8qCi0gKiBOVl9DVFJMX0dWSV9DSFJPTUFf
RVhQQU5EIC0gRW5hYmxlIG9yIGRpc2FibGUgNDoyOjIgLT4gNDo0OjQgY2hyb21hCi0gKiBleHBh
bnNpb24gZm9yIHRoZSBjYXB0dXJlZCBzdHJlYW0uICBUaGlzIHZhbHVlIGlzIGlnbm9yZWQgd2hl
biBhCi0gKiBDT01QT05FTlRfU0FNUExJTkcgZm9ybWF0IGlzIHNlbGVjdGVkIHRoYXQgZG9lcyBu
b3QgdXNlIGNocm9tYSBzdWJzYW1wbGluZywKLSAqIG9yIGlmIGEgQklUU19QRVJfQ09NUE9ORU5U
IHZhbHVlIGlzIHNlbGVjdGVkIHRoYXQgaXMgbm90IHN1cHBvcnRlZC4KLSAqIFRoZSBzdHJlYW0g
bnVtYmVyIHNob3VsZCBiZSBzcGVjaWZpZWQgaW4gdGhlICJkaXNwbGF5X21hc2siIHBhcmFtZXRl
ci4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZJX1JFUVVFU1RFRF9TVFJFQU1fQ0hST01BX0VY
UEFORCAzMTMgLyogUlctSSAqLwotI2RlZmluZSBOVl9DVFJMX0dWSV9DSFJPTUFfRVhQQU5EX0ZB
TFNFIDAKLSNkZWZpbmUgTlZfQ1RSTF9HVklfQ0hST01BX0VYUEFORF9UUlVFIDEKLQotLyoKLSAq
IE5WX0NUUkxfR1ZJX0RFVEVDVEVEX0NIQU5ORUxfQ09MT1JfU1BBQ0UgLSBSZXR1cm5zIHRoZSBk
ZXRlY3RlZCBjb2xvciBzcGFjZQotICogb2YgdGhlIGlucHV0IGphY2srY2hhbm5lbC4KLSAqCi0g
KiBUaGUgamFjayBudW1iZXIgc2hvdWxkIGJlIHNwZWNpZmllZCBpbiB0aGUgbG93ZXIgMTYgYml0
cyBvZiB0aGUKLSAqICJkaXNwbGF5X21hc2siIHBhcmFtZXRlciwgd2hpbGUgdGhlIGNoYW5uZWwg
bnVtYmVyIHNob3VsZCBiZSBzcGVjaWZpZWQgaW4KLSAqIHRoZSB1cHBlciAxNiBiaXRzLgotICov
Ci0KLSNkZWZpbmUgTlZfQ1RSTF9HVklfREVURUNURURfQ0hBTk5FTF9DT0xPUl9TUEFDRSAzMTQg
LyogUi0tSSAqLwotI2RlZmluZSBOVl9DVFJMX0dWSV9DT0xPUl9TUEFDRV9VTktOT1dOIDAKLSNk
ZWZpbmUgTlZfQ1RSTF9HVklfQ09MT1JfU1BBQ0VfR0JSIDEKLSNkZWZpbmUgTlZfQ1RSTF9HVklf
Q09MT1JfU1BBQ0VfR0JSQSAyCi0jZGVmaW5lIE5WX0NUUkxfR1ZJX0NPTE9SX1NQQUNFX0dCUkQg
MwotI2RlZmluZSBOVl9DVFJMX0dWSV9DT0xPUl9TUEFDRV9ZQ0JDUiA0Ci0jZGVmaW5lIE5WX0NU
UkxfR1ZJX0NPTE9SX1NQQUNFX1lDQkNSQSA1Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJX0NPTE9SX1NQ
QUNFX1lDQkNSRCA2Ci0KLS8qCi0gKiBOVl9DVFJMX0dWSV9ERVRFQ1RFRF9DSEFOTkVMX0xJTktf
SUQgLSBSZXR1cm5zIHRoZSBkZXRlY3RlZCBsaW5rIGlkZW50aWZpZXIKLSAqIGZvciB0aGUgZ2l2
ZW4gaW5wdXQgamFjaytjaGFubmVsLgotICoKLSAqIFRoZSBqYWNrIG51bWJlciBzaG91bGQgYmUg
c3BlY2lmaWVkIGluIHRoZSBsb3dlciAxNiBiaXRzIG9mIHRoZQotICogImRpc3BsYXlfbWFzayIg
cGFyYW1ldGVyLCB3aGlsZSB0aGUgY2hhbm5lbCBudW1iZXIgc2hvdWxkIGJlIHNwZWNpZmllZCBp
bgotICogdGhlIHVwcGVyIDE2IGJpdHMuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWSV9ERVRF
Q1RFRF9DSEFOTkVMX0xJTktfSUQgMzE1IC8qIFItLUkgKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVklf
TElOS19JRF9VTktOT1dOIDB4RkZGRgotCi0vKgotICogTlZfQ1RSTF9HVklfREVURUNURURfQ0hB
Tk5FTF9TTVBURTM1Ml9JREVOVElGSUVSIC0gUmV0dXJucyB0aGUgNC1ieXRlCi0gKiBTTVBURSAz
NTIgaWRlbnRpZmllciBmcm9tIHRoZSBnaXZlbiBpbnB1dCBqYWNrK2NoYW5uZWwuCi0gKgotICog
VGhlIGphY2sgbnVtYmVyIHNob3VsZCBiZSBzcGVjaWZpZWQgaW4gdGhlIGxvd2VyIDE2IGJpdHMg
b2YgdGhlCi0gKiAiZGlzcGxheV9tYXNrIiBwYXJhbWV0ZXIsIHdoaWxlIHRoZSBjaGFubmVsIG51
bWJlciBzaG91bGQgYmUgc3BlY2lmaWVkIGluCi0gKiB0aGUgdXBwZXIgMTYgYml0cy4KLSAqLwot
Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJX0RFVEVDVEVEX0NIQU5ORUxfU01QVEUzNTJfSURFTlRJRklF
UiAzMTYgLyogUi0tSSAqLwotCi0vKgotICogTlZfQ1RSTF9HVklfR0xPQkFMX0lERU5USUZJRVIg
LSBSZXR1cm5zIGEgZ2xvYmFsIGlkZW50aWZpZXIgZm9yIHRoZQotICogR1ZJIGRldmljZS4gIFRo
aXMgaWRlbnRpZmllciBjYW4gYmUgdXNlZCB0byByZWxhdGUgR1ZJIGRldmljZXMgbmFtZWQKLSAq
IGluIE5WLUNPTlRST0wgd2l0aCB0aG9zZSBlbnVtZXJhdGVkIGluIE9wZW5HTC4KLSAqLwotCi0j
ZGVmaW5lIE5WX0NUUkxfR1ZJX0dMT0JBTF9JREVOVElGSUVSIDMxNyAvKiBSLS1JICovCi0KLS8q
Ci0gKiBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DX0RFTEFZX1JFU09MVVRJT04gLSBSZXR1cm5zIHRo
ZSBudW1iZXIgb2YgbmFub3NlY29uZHMKLSAqIHRoYXQgb25lIHVuaXQgb2YgTlZfQ1RSTF9GUkFN
RUxPQ0tfU1lOQ19ERUxBWSBjb3JyZXNwb25kcyB0by4KLSAqLwotI2RlZmluZSBOVl9DVFJMX0ZS
QU1FTE9DS19TWU5DX0RFTEFZX1JFU09MVVRJT04gMzE4IC8qIFItLSAqLwotCi0vKgotICogTlZf
Q1RSTF9HUFVfQ09PTEVSX01BTlVBTF9DT05UUk9MIC0gUXVlcnkgdGhlIGN1cnJlbnQgb3Igc2V0
IGEgbmV3Ci0gKiBjb29sZXIgY29udHJvbCBzdGF0ZTsgdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmli
dXRlIGNvbnRyb2xzIHRoZQotICogYXZhaWxhYmlsaXR5IG9mIGFkZGl0aW9uYWwgY29vbGVyIGNv
bnRyb2wgYXR0cmlidXRlcyAoc2VlIGJlbG93KS4KLSAqCi0gKiBOb3RlOiB0aGlzIGF0dHJpYnV0
ZSBpcyB1bmF2YWlsYWJsZSB1bmxlc3MgY29vbGVyIGNvbnRyb2wgc3VwcG9ydAotICogaGFzIGJl
ZW4gZW5hYmxlZCBpbiB0aGUgWCBzZXJ2ZXIgKGJ5IHRoZSB1c2VyKS4KLSAqLwotCi0jZGVmaW5l
IE5WX0NUUkxfR1BVX0NPT0xFUl9NQU5VQUxfQ09OVFJPTCAzMTkgLyogUlctRyAqLwotI2RlZmlu
ZSBOVl9DVFJMX0dQVV9DT09MRVJfTUFOVUFMX0NPTlRST0xfRkFMU0UgMAotI2RlZmluZSBOVl9D
VFJMX0dQVV9DT09MRVJfTUFOVUFMX0NPTlRST0xfVFJVRSAxCi0KLS8qCi0gKiBOVl9DVFJMX1RI
RVJNQUxfQ09PTEVSX0xFVkVMIC0gUmV0dXJucyBjb29sZXIncyBjdXJyZW50IG9wZXJhdGluZwot
ICogbGV2ZWwuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfQ09PTEVSX0xFVkVMIDMy
MCAvKiBSVy1DICovCi0KLS8qIE5WX0NUUkxfVEhFUk1BTF9DT09MRVJfTEVWRUxfU0VUX0RFRkFV
TFQgLSBTZXRzIGRlZmF1bHQgdmFsdWVzIG9mCi0gKiBjb29sZXIuCi0gKi8KLQotI2RlZmluZSBO
Vl9DVFJMX1RIRVJNQUxfQ09PTEVSX0xFVkVMX1NFVF9ERUZBVUxUIDMyMSAvKiAtVy1DICovCi0K
LS8qCi0gKiBOVl9DVFJMX1RIRVJNQUxfQ09PTEVSX0NPTlRST0xfVFlQRSAtCi0gKiBSZXR1cm5z
IGEgY29vbGVyJ3MgY29udHJvbCBzaWduYWwgY2hhcmFjdGVyaXN0aWNzLgotICogVGhlIHBvc3Np
YmxlIHR5cGVzIGFyZSByZXN0cmljdGVkLCBWYXJpYWJsZSBhbmQgVG9nZ2xlLgotICovCi0KLSNk
ZWZpbmUgTlZfQ1RSTF9USEVSTUFMX0NPT0xFUl9DT05UUk9MX1RZUEUgMzIyIC8qIFItLUMgKi8K
LSNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX0NPT0xFUl9DT05UUk9MX1RZUEVfTk9ORSAwCi0jZGVm
aW5lIE5WX0NUUkxfVEhFUk1BTF9DT09MRVJfQ09OVFJPTF9UWVBFX1RPR0dMRSAxCi0jZGVmaW5l
IE5WX0NUUkxfVEhFUk1BTF9DT09MRVJfQ09OVFJPTF9UWVBFX1ZBUklBQkxFIDIKLQotLyoKLSAq
IE5WX0NUUkxfVEhFUk1BTF9DT09MRVJfVEFSR0VUIC0gUmV0dXJucyBvYmplY3RzIHRoYXQgY29v
bGVyIGNvb2xzLgotICogVGFyZ2V0cyBtYXkgYmUgR1BVLCBNZW1vcnksIFBvd2VyIFN1cHBseSBv
ciBBbGwgb2YgdGhlc2UuCi0gKiBHUFVfUkVMQVRFRCA9IEdQVSB8IE1FTU9SWSB8IFBPV0VSX1NV
UFBMWQotICoKLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9DT09MRVJfVEFSR0VUIDMy
MyAvKiBSLS1DICovCi0jZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9DT09MRVJfVEFSR0VUX05PTkUg
MAotI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfQ09PTEVSX1RBUkdFVF9HUFUgMQotI2RlZmluZSBO
Vl9DVFJMX1RIRVJNQUxfQ09PTEVSX1RBUkdFVF9NRU1PUlkgMgotI2RlZmluZSBOVl9DVFJMX1RI
RVJNQUxfQ09PTEVSX1RBUkdFVF9QT1dFUl9TVVBQTFkgNAotI2RlZmluZSBOVl9DVFJMX1RIRVJN
QUxfQ09PTEVSX1RBUkdFVF9HUFVfUkVMQVRFRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgKE5WX0NUUkxfVEhFUk1BTF9DT09MRVJfVEFSR0VUX0dQVSB8IE5WX0NUUkxfVEhF
Uk1BTF9DT09MRVJfVEFSR0VUX01FTU9SWSB8IFwKLSAgICAgTlZfQ1RSTF9USEVSTUFMX0NPT0xF
Ul9UQVJHRVRfUE9XRVJfU1VQUExZKQotCi0vKgotICogTlZfQ1RSTF9HUFVfRUNDX1NVUFBPUlRF
RCAtIFJlcG9ydHMgd2hldGhlciBFQ0MgaXMgc3VwcG9ydGVkIGJ5IHRoZQotICogdGFyZ2V0ZWQg
R1BVLgotICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19TVVBQT1JURUQgMzI0IC8qIFItLUcg
Ki8KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfRUNDX1NVUFBPUlRFRF9GQUxTRSAwCi0jZGVmaW5lIE5W
X0NUUkxfR1BVX0VDQ19TVVBQT1JURURfVFJVRSAxCi0KLS8qCi0gKiBOVl9DVFJMX0dQVV9FQ0Nf
U1RBVFVTIC0gUmV0dXJucyB0aGUgY3VycmVudCBoYXJkd2FyZSBFQ0Mgc2V0dGluZwotICogZm9y
IHRoZSB0YXJnZXRlZCBHUFUuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfRUNDX1NUQVRVUyAz
MjUgLyogUi0tRyAqLwotI2RlZmluZSBOVl9DVFJMX0dQVV9FQ0NfU1RBVFVTX0RJU0FCTEVEIDAK
LSNkZWZpbmUgTlZfQ1RSTF9HUFVfRUNDX1NUQVRVU19FTkFCTEVEIDEKLQotLyoKLSAqIE5WX0NU
UkxfR1BVX0VDQ19DT05GSUdVUkFUSU9OIC0gUmVwb3J0cyB3aGV0aGVyIEVDQyBjYW4gYmUgY29u
ZmlndXJlZAotICogZHluYW1pY2FsbHkgZm9yIHRoZSBHUFUgaW4gcXVlc3Rpb24uCi0gKi8KLSNk
ZWZpbmUgTlZfQ1RSTF9HUFVfRUNDX0NPTkZJR1VSQVRJT05fU1VQUE9SVEVEIDMyNiAvKiBSLS1H
ICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19DT05GSUdVUkFUSU9OX1NVUFBPUlRFRF9GQUxT
RSAwCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19DT05GSUdVUkFUSU9OX1NVUFBPUlRFRF9UUlVF
IDEKLQotLyoKLSAqIE5WX0NUUkxfR1BVX0VDQ19DT05GSUdVUkFUSU9OX1NFVFRJTkcgLSBSZXR1
cm5zIHRoZSBjdXJyZW50IEVDQwotICogY29uZmlndXJhdGlvbiBzZXR0aW5nIG9yIHNwZWNpZmll
cyBuZXcgc2V0dGluZ3MuICBOZXcgc2V0dGluZ3MgZG8gbm90Ci0gKiB0YWtlIGVmZmVjdCB1bnRp
bCB0aGUgbmV4dCBQT1NULgotICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19DT05GSUdVUkFU
SU9OIDMyNyAvKiBSVy1HICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19DT05GSUdVUkFUSU9O
X0RJU0FCTEVEIDAKLSNkZWZpbmUgTlZfQ1RSTF9HUFVfRUNDX0NPTkZJR1VSQVRJT05fRU5BQkxF
RCAxCi0KLS8qCi0gKiBOVl9DVFJMX0dQVV9FQ0NfREVGQVVMVF9DT05GSUdVUkFUSU9OX1NFVFRJ
TkcgLSBSZXR1cm5zIHRoZSBkZWZhdWx0Ci0gKiBFQ0MgY29uZmlndXJhdGlvbiBzZXR0aW5nLgot
ICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19ERUZBVUxUX0NPTkZJR1VSQVRJT04gMzI4IC8q
IFItLUcgKi8KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfRUNDX0RFRkFVTFRfQ09ORklHVVJBVElPTl9E
SVNBQkxFRCAwCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19ERUZBVUxUX0NPTkZJR1VSQVRJT05f
RU5BQkxFRCAxCi0KLS8qCi0gKiBOVl9DVFJMX0dQVV9FQ0NfU0lOR0xFX0JJVF9FUlJPUlMgLSBS
ZXR1cm5zIHRoZSBudW1iZXIgb2Ygc2luZ2xlLWJpdAotICogRUNDIGVycm9ycyBkZXRlY3RlZCBi
eSB0aGUgdGFyZ2V0ZWQgR1BVIHNpbmNlIHRoZSBsYXN0IFBPU1QuCi0gKiBOb3RlOiB0aGlzIGF0
dHJpYnV0ZSBpcyBhIDY0LWJpdCBpbnRlZ2VyIGF0dHJpYnV0ZS4KLSAqLwotI2RlZmluZSBOVl9D
VFJMX0dQVV9FQ0NfU0lOR0xFX0JJVF9FUlJPUlMgMzI5IC8qIFItLUdRICovCi0KLS8qCi0gKiBO
Vl9DVFJMX0dQVV9FQ0NfRE9VQkxFX0JJVF9FUlJPUlMgLSBSZXR1cm5zIHRoZSBudW1iZXIgb2Yg
ZG91YmxlLWJpdAotICogRUNDIGVycm9ycyBkZXRlY3RlZCBieSB0aGUgdGFyZ2V0ZWQgR1BVIHNp
bmNlIHRoZSBsYXN0IFBPU1QuCi0gKiBOb3RlOiB0aGlzIGF0dHJpYnV0ZSBpcyBhIDY0LWJpdCBp
bnRlZ2VyIGF0dHJpYnV0ZS4KLSAqLwotI2RlZmluZSBOVl9DVFJMX0dQVV9FQ0NfRE9VQkxFX0JJ
VF9FUlJPUlMgMzMwIC8qIFItLUdRICovCi0KLS8qCi0gKiBOVl9DVFJMX0dQVV9FQ0NfQUdHUkVH
QVRFX1NJTkdMRV9CSVRfRVJST1JTIC0gUmV0dXJucyB0aGUgbnVtYmVyIG9mCi0gKiBzaW5nbGUt
Yml0IEVDQyBlcnJvcnMgZGV0ZWN0ZWQgYnkgdGhlIHRhcmdldGVkIEdQVSBzaW5jZSB0aGUKLSAq
IGxhc3QgY291bnRlciByZXNldC4KLSAqIE5vdGU6IHRoaXMgYXR0cmlidXRlIGlzIGEgNjQtYml0
IGludGVnZXIgYXR0cmlidXRlLgotICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19BR0dSRUdB
VEVfU0lOR0xFX0JJVF9FUlJPUlMgMzMxIC8qIFItLUdRICovCi0KLS8qCi0gKiBOVl9DVFJMX0dQ
VV9FQ0NfQUdHUkVHQVRFX0RPVUJMRV9CSVRfRVJST1JTIC0gUmV0dXJucyB0aGUgbnVtYmVyIG9m
Ci0gKiBkb3VibGUtYml0IEVDQyBlcnJvcnMgZGV0ZWN0ZWQgYnkgdGhlIHRhcmdldGVkIEdQVSBz
aW5jZSB0aGUKLSAqIGxhc3QgY291bnRlciByZXNldC4KLSAqIE5vdGU6IHRoaXMgYXR0cmlidXRl
IGlzIGEgNjQtYml0IGludGVnZXIgYXR0cmlidXRlLgotICovCi0jZGVmaW5lIE5WX0NUUkxfR1BV
X0VDQ19BR0dSRUdBVEVfRE9VQkxFX0JJVF9FUlJPUlMgMzMyIC8qIFItLUdRICovCi0KLS8qCi0g
KiBOVl9DVFJMX0dQVV9FQ0NfUkVTRVRfRVJST1JfU1RBVFVTIC0gUmVzZXRzIHRoZSB2b2xhdGls
ZS9hZ2dyZWdhdGUKLSAqIHNpbmdsZS1iaXQgYW5kIGRvdWJsZS1iaXQgZXJyb3IgY291bnRlcnMu
ICBUaGlzIGF0dHJpYnV0ZSBpcyBhCi0gKiBiaXRtYXNrIGF0dHJpYnV0ZS4KLSAqLwotI2RlZmlu
ZSBOVl9DVFJMX0dQVV9FQ0NfUkVTRVRfRVJST1JfU1RBVFVTIDMzMyAvKiAtVy1HICovCi0jZGVm
aW5lIE5WX0NUUkxfR1BVX0VDQ19SRVNFVF9FUlJPUl9TVEFUVVNfVk9MQVRJTEUgMHgwMDAwMDAw
MQotI2RlZmluZSBOVl9DVFJMX0dQVV9FQ0NfUkVTRVRfRVJST1JfU1RBVFVTX0FHR1JFR0FURSAw
eDAwMDAwMDAyCi0KLS8qCi0gKiBOVl9DVFJMX0dQVV9QT1dFUl9NSVpFUl9NT0RFIC0gUHJvdmlk
ZXMgYSBoaW50IHRvIHRoZSBkcml2ZXIKLSAqIGFzIHRvIGhvdyB0byBtYW5hZ2UgdGhlIHBlcmZv
cm1hbmNlIG9mIHRoZSBHUFUuCi0gKgotICogQURBUFRJVkUgICAgICAgICAgICAgICAgICAgICAt
IGFkanVzdCBHUFUgY2xvY2tzIGJhc2VkIG9uIEdQVQotICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHV0aWxpemF0aW9uCi0gKiBQUkVGRVJfTUFYSU1VTV9QRVJGT1JNQU5DRSAgIC0g
cmFpc2UgR1BVIGNsb2NrcyB0byBmYXZvcgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1heGltdW0gcGVyZm9ybWFuY2UsIHRvIHRoZSBleHRlbnQKLSAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGF0IHRoZXJtYWwgYW5kIG90aGVyIGNvbnN0cmFpbnRzCi0gKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3cKLSAqLwotI2RlZmluZSBOVl9DVFJM
X0dQVV9QT1dFUl9NSVpFUl9NT0RFIDMzNCAvKiBSVy1HICovCi0jZGVmaW5lIE5WX0NUUkxfR1BV
X1BPV0VSX01JWkVSX01PREVfQURBUFRJVkUgMAotI2RlZmluZSBOVl9DVFJMX0dQVV9QT1dFUl9N
SVpFUl9NT0RFX1BSRUZFUl9NQVhJTVVNX1BFUkZPUk1BTkNFIDEKLQotLyoKLSAqIE5WX0NUUkxf
R1ZJX1NZTkNfT1VUUFVUX0ZPUk1BVCAtIFJldHVybnMgdGhlIG91dHB1dCBzeW5jIHNpZ25hbAot
ICogZnJvbSB0aGUgR1ZJIGRldmljZS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZJX1NZTkNf
T1VUUFVUX0ZPUk1BVCAzMzUgLyogUi0tSSAqLwotCi0vKgotICogTlZfQ1RSTF9HVklfTUFYX0NI
QU5ORUxTX1BFUl9KQUNLICAtIFJldHVybnMgdGhlIG1heGltdW0KLSAqIHN1cHBvcnRlZCBudW1i
ZXIgb2YgKGxvZ2ljYWwpIGNoYW5uZWxzIHdpdGhpbiBhIHNpbmdsZSBwaHlzaWNhbCBqYWNrIG9m
Ci0gKiBhIEdWSSBkZXZpY2UuICBGb3IgbW9zdCBTREkgdmlkZW8gZm9ybWF0cywgdGhlcmUgaXMg
b25seSBvbmUgY2hhbm5lbAotICogKGNoYW5uZWwgMCkuICBCdXQgZm9yIDNHIHZpZGVvIGZvcm1h
dHMgKGFzIHNwZWNpZmllZCBpbiBTTVBURSA0MjUpLAotICogYXMgYW4gZXhhbXBsZSwgdGhlcmUg
YXJlIHR3byBjaGFubmVscyAoY2hhbm5lbCAwIGFuZCBjaGFubmVsIDEpIHBlcgotICogcGh5c2lj
YWwgamFjay4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZJX01BWF9DSEFOTkVMU19QRVJfSkFD
SyAzMzYgLyogUi0tSSAqLwotCi0vKgotICogTlZfQ1RSTF9HVklfTUFYX1NUUkVBTVMgIC0gUmV0
dXJucyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc3RyZWFtcwotICogdGhhdCBjYW4gYmUgY29uZmln
dXJlZCBvbiB0aGUgR1ZJIGRldmljZS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZJX01BWF9T
VFJFQU1TIDMzNyAvKiBSLS1JICovCi0KLS8qCi0gKiBOVl9DVFJMX0dWSV9OVU1fQ0FQVFVSRV9T
VVJGQUNFUyAtIFRoZSBHVkkgaW50ZXJmYWNlIGV4cG9zZWQgdGhyb3VnaAotICogTlYtQ09OVFJP
TCBhbmQgdGhlIEdMWF9OVl92aWRlb19pbnB1dCBleHRlbnNpb24gdXNlcyBpbnRlcm5hbCBjYXB0
dXJlCi0gKiBzdXJmYWNlcyB3aGVuIGZyYW1lcyBhcmUgcmVhZCBmcm9tIHRoZSBHVkkgZGV2aWNl
LiAgVGhlCi0gKiBOVl9DVFJMX0dWSV9OVU1fQ0FQVFVSRV9TVVJGQUNFUyBjYW4gYmUgdXNlZCB0
byBxdWVyeSBhbmQgYXNzaWduIHRoZQotICogbnVtYmVyIG9mIGNhcHR1cmUgc3VyZmFjZXMuICBU
aGlzIGF0dHJpYnV0ZSBpcyBhcHBsaWVkIHdoZW4KLSAqIGdsWEJpbmRWaWRlb0NhcHR1cmVEZXZp
Y2VOVigpIGlzIGNhbGxlZCBieSB0aGUgYXBwbGljYXRpb24uCi0gKgotICogQSBsb3dlciBudW1i
ZXIgb2YgY2FwdHVyZSBzdXJmYWNlcyB3aWxsIG1lYW4gbGVzcyB2aWRlbyBtZW1vcnkgaXMgdXNl
ZCwKLSAqIGJ1dCBjYW4gcmVzdWx0IGluIGZyYW1lcyBiZWluZyBkcm9wcGVkIGlmIHRoZSBhcHBs
aWNhdGlvbiBjYW5ub3Qga2VlcCB1cAotICogd2l0aCB0aGUgY2FwdHVyZSBkZXZpY2UuICBBIGhp
Z2hlciBudW1iZXIgd2lsbCBwcmV2ZW50IGZyYW1lcyBmcm9tIGJlaW5nCi0gKiBkcm9wcGVkLCBt
YWtpbmcgY2FwdHVyZSBtb3JlIHJlbGlhYmxlIGJ1dCB3aWxsIGNvbnN1bWUgbW92ZSB2aWRlbyBt
ZW1vcnkuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVklfTlVNX0NBUFRVUkVfU1VSRkFDRVMgMzM4
IC8qIFJXLUkgKi8KLQotLyoKLSAqIE5WX0NUUkxfT1ZFUlNDQU5fQ09NUEVOU0FUSU9OIC0gbm90
IHN1cHBvcnRlZAotICovCi0jZGVmaW5lIE5WX0NUUkxfT1ZFUlNDQU5fQ09NUEVOU0FUSU9OIDMz
OSAvKiBSV0RHICovCi0KLS8qCi0gKiBOVl9DVFJMX0dQVV9QQ0lFX0dFTkVSQVRJT04gLSBSZXBv
cnRzIHRoZSBjdXJyZW50IFBDSWUgZ2VuZXJhdGlvbi4KLSAqLwotI2RlZmluZSBOVl9DVFJMX0dQ
VV9QQ0lFX0dFTkVSQVRJT04gMzQxIC8qIFItLUdJICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX1BD
SUVfR0VORVJBVElPTjEgMHgwMDAwMDAwMQotI2RlZmluZSBOVl9DVFJMX0dQVV9QQ0lFX0dFTkVS
QVRJT04yIDB4MDAwMDAwMDIKLSNkZWZpbmUgTlZfQ1RSTF9HUFVfUENJRV9HRU5FUkFUSU9OMyAw
eDAwMDAwMDAzCi0KLS8qCi0gKiBOVl9DVFJMX0dWSV9CT1VORF9HUFUgLSBSZXR1cm5zIHRoZSBO
Vl9DVFJMX1RBUkdFVF9UWVBFX0dQVSB0YXJnZXRfaWQgb2YKLSAqIHRoZSBHUFUgY3VycmVudGx5
IGJvdW5kIHRvIHRoZSBHVkkgZGV2aWNlLiAgUmV0dXJucyAtMSBpZiBubyBHUFUgaXMKLSAqIGN1
cnJlbnRseSBib3VuZCB0byB0aGUgR1ZJIGRldmljZS4KLSAqLwotI2RlZmluZSBOVl9DVFJMX0dW
SV9CT1VORF9HUFUgMzQyIC8qIFItLUkgKi8KLQotLyoKLSAqIE5WX0NUUkxfR1ZJT19SRVFVRVNU
RURfVklERU9fRk9STUFUMyAtIHRoaXMgYXR0cmlidXRlIGlzIG9ubHkKLSAqIGludGVuZGVkIHRv
IGJlIHVzZWQgdG8gcXVlcnkgdGhlIFZhbGlkVmFsdWVzIGZvcgotICogTlZfQ1RSTF9HVklPX1JF
UVVFU1RFRF9WSURFT19GT1JNQVQgZm9yIFZJREVPX0ZPUk1BVCB2YWx1ZXMgYmV0d2VlbgotICog
NjQgYW5kIDk1LiAgU2VlIE5WX0NUUkxfR1ZJT19SRVFVRVNURURfVklERU9fRk9STUFUIGZvciBk
ZXRhaWxzLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JN
QVQzIDM0MyAvKiAtLS1HSSAqLwotCi0vKgotICogTlZfQ1RSTF9BQ0NFTEVSQVRFX1RSQVBFWk9J
RFMgLSBUb2dnbGVzIFJFTkRFUiBUcmFwZXpvaWQgYWNjZWxlcmF0aW9uCi0gKi8KLQotI2RlZmlu
ZSBOVl9DVFJMX0FDQ0VMRVJBVEVfVFJBUEVaT0lEUyAzNDQgLyogUlctICovCi0jZGVmaW5lIE5W
X0NUUkxfQUNDRUxFUkFURV9UUkFQRVpPSURTX0RJU0FCTEUgMAotI2RlZmluZSBOVl9DVFJMX0FD
Q0VMRVJBVEVfVFJBUEVaT0lEU19FTkFCTEUgMQotCi0vKgotICogTlZfQ1RSTF9HUFVfQ09SRVMg
LSBSZXR1cm5zIG51bWJlciBvZiBHUFUgY29yZXMgc3VwcG9ydGVkIGJ5IHRoZSBncmFwaGljcwot
ICogcGlwZWxpbmUuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dQVV9DT1JFUyAzNDUgLyogUi0t
RyAqLwotCi0vKgotICogTlZfQ1RSTF9HUFVfTUVNT1JZX0JVU19XSURUSCAtIFJldHVybnMgbWVt
b3J5IGJ1cyBiYW5kd2lkdGggb24gdGhlIGFzc29jaWF0ZWQKLSAqIHN1YmRldmljZS4KLSAqLwot
Ci0jZGVmaW5lIE5WX0NUUkxfR1BVX01FTU9SWV9CVVNfV0lEVEggMzQ2IC8qIFItLUcgKi8KLQot
LyoKLSAqIE5WX0NUUkxfR1ZJX1RFU1RfTU9ERSAtIFRoaXMgYXR0cmlidXRlIGNvbnRyb2xzIHRo
ZSBHVkkgdGVzdCBtb2RlLiAgV2hlbgotICogZW5hYmxlZCwgdGhlIEdWSSBkZXZpY2Ugd2lsbCBn
ZW5lcmF0ZSBmYWtlIGRhdGEgYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4gIEFsbAotICogR1ZJIHNl
dHRpbmdzIGFyZSBzdGlsbCB2YWxpZCB3aGVuIHRoaXMgaXMgZW5hYmxlZCAoZS5nLiwgdGhlIHJl
cXVlc3RlZCB2aWRlbwotICogZm9ybWF0IGlzIGhvbm9yZWQgYW5kIHNldHMgdGhlIHZpZGVvIHNp
emUpLgotICogVGhpcyBtYXkgYmUgdXNlZCB0byB0ZXN0IHRoZSBwaXBlbGluZS4KLSAqLwotCi0j
ZGVmaW5lIE5WX0NUUkxfR1ZJX1RFU1RfTU9ERSAzNDcgLyogUi0tSSAqLwotI2RlZmluZSBOVl9D
VFJMX0dWSV9URVNUX01PREVfRElTQUJMRSAwCi0jZGVmaW5lIE5WX0NUUkxfR1ZJX1RFU1RfTU9E
RV9FTkFCTEUgMQotCi0vKgotICogTlZfQ1RSTF9DT0xPUl9TUEFDRSAtIFRoaXMgb3B0aW9uIHNl
dHMgY29sb3Igc3BhY2Ugb2YgdGhlIHZpZGVvCi0gKiBzaWduYWwuCi0gKi8KLSNkZWZpbmUgTlZf
Q1RSTF9DT0xPUl9TUEFDRSAzNDggLyogUldERyAqLwotI2RlZmluZSBOVl9DVFJMX0NPTE9SX1NQ
QUNFX1JHQiAwCi0jZGVmaW5lIE5WX0NUUkxfQ09MT1JfU1BBQ0VfWUNiQ3I0MjIgMQotI2RlZmlu
ZSBOVl9DVFJMX0NPTE9SX1NQQUNFX1lDYkNyNDQ0IDIKLQotLyoKLSAqIE5WX0NUUkxfQ09MT1Jf
UkFOR0UgLSBUaGlzIG9wdGlvbiBzZXRzIGNvbG9yIHJhbmdlIG9mIHRoZSB2aWRlbwotICogc2ln
bmFsLgotICovCi0jZGVmaW5lIE5WX0NUUkxfQ09MT1JfUkFOR0UgMzQ5IC8qIFJXREcgKi8KLSNk
ZWZpbmUgTlZfQ1RSTF9DT0xPUl9SQU5HRV9GVUxMIDAKLSNkZWZpbmUgTlZfQ1RSTF9DT0xPUl9S
QU5HRV9MSU1JVEVEIDEKLQotLyoKLSAqIE5WX0NUUkxfR1BVX1NDQUxJTkdfREVGQVVMVF9UQVJH
RVQgLSBub3Qgc3VwcG9ydGVkCi0gKgotICogTlZfQ1RSTF9HUFVfU0NBTElOR19ERUZBVUxUX01F
VEhPRCAtIG5vdCBzdXBwb3J0ZWQKLSAqLwotI2RlZmluZSBOVl9DVFJMX0dQVV9TQ0FMSU5HX0RF
RkFVTFRfVEFSR0VUIDM1MCAvKiBSLURHICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX1NDQUxJTkdf
REVGQVVMVF9NRVRIT0QgMzUxIC8qIFItREcgKi8KLQotLyoKLSAqIE5WX0NUUkxfRElUSEVSSU5H
X01PREUgLSBDb250cm9scyB0aGUgZGl0aGVyaW5nIG1vZGUsIHdoZW4KLSAqIE5WX0NUUkxfQ1VS
UkVOVF9ESVRIRVJJTkcgaXMgRW5hYmxlZC4KLSAqCi0gKiBBVVRPOiBhbGxvdyB0aGUgZHJpdmVy
IHRvIGNob29zZSB0aGUgZGl0aGVyaW5nIG1vZGUgYXV0b21hdGljYWxseS4KLSAqCi0gKiBEWU5B
TUlDXzJYMjogdXNlIGEgMngyIG1hdHJpeCB0byBkaXRoZXIgZnJvbSB0aGUgR1BVJ3MgcGl4ZWwK
LSAqIHBpcGVsaW5lIHRvIHRoZSBiaXQgZGVwdGggb2YgdGhlIGZsYXQgcGFuZWwuICBUaGUgbWF0
cml4IHZhbHVlcwotICogYXJlIGNoYW5nZWQgZnJvbSBmcmFtZSB0byBmcmFtZS4KLSAqCi0gKiBT
VEFUSUNfMlgyOiB1c2UgYSAyeDIgbWF0cml4IHRvIGRpdGhlciBmcm9tIHRoZSBHUFUncyBwaXhl
bAotICogcGlwZWxpbmUgdG8gdGhlIGJpdCBkZXB0aCBvZiB0aGUgZmxhdCBwYW5lbC4gIFRoZSBt
YXRyaXggdmFsdWVzCi0gKiBkbyBub3QgY2hhbmdlIGZyb20gZnJhbWUgdG8gZnJhbWUuCi0gKgot
ICogVEVNUE9SQUw6IHVzZSBhIHBzZXVkb3JhbmRvbSB2YWx1ZSBmcm9tIGEgdW5pZm9ybSBkaXN0
cmlidXRpb24gY2FsY3VsYXRlZCBhdAotICogZXZlcnkgcGl4ZWwgdG8gYWNoaWV2ZSBzdG9jaGFz
dGljIGRpdGhlcmluZy4gIFRoaXMgbWV0aG9kIHByb2R1Y2VzIGEgYmV0dGVyCi0gKiB2aXN1YWwg
cmVzdWx0IHRoYW4gMngyIG1hdHJpeCBhcHByb2FjaGVzLgotICovCi0jZGVmaW5lIE5WX0NUUkxf
RElUSEVSSU5HX01PREUgMzUyIC8qIFJXREcgKi8KLSNkZWZpbmUgTlZfQ1RSTF9ESVRIRVJJTkdf
TU9ERV9BVVRPIDAKLSNkZWZpbmUgTlZfQ1RSTF9ESVRIRVJJTkdfTU9ERV9EWU5BTUlDXzJYMiAx
Ci0jZGVmaW5lIE5WX0NUUkxfRElUSEVSSU5HX01PREVfU1RBVElDXzJYMiAyCi0jZGVmaW5lIE5W
X0NUUkxfRElUSEVSSU5HX01PREVfVEVNUE9SQUwgMwotCi0vKgotICogTlZfQ1RSTF9DVVJSRU5U
X0RJVEhFUklORyAtIFJldHVybnMgdGhlIGN1cnJlbnQgZGl0aGVyaW5nIHN0YXRlLgotICovCi0j
ZGVmaW5lIE5WX0NUUkxfQ1VSUkVOVF9ESVRIRVJJTkcgMzUzIC8qIFItREcgKi8KLSNkZWZpbmUg
TlZfQ1RSTF9DVVJSRU5UX0RJVEhFUklOR19ESVNBQkxFRCAwCi0jZGVmaW5lIE5WX0NUUkxfQ1VS
UkVOVF9ESVRIRVJJTkdfRU5BQkxFRCAxCi0KLS8qCi0gKiBOVl9DVFJMX0NVUlJFTlRfRElUSEVS
SU5HX01PREUgLSBSZXR1cm5zIHRoZSBjdXJyZW50IGRpdGhlcmluZwotICogbW9kZS4KLSAqLwot
I2RlZmluZSBOVl9DVFJMX0NVUlJFTlRfRElUSEVSSU5HX01PREUgMzU0IC8qIFItREcgKi8KLSNk
ZWZpbmUgTlZfQ1RSTF9DVVJSRU5UX0RJVEhFUklOR19NT0RFX05PTkUgMAotI2RlZmluZSBOVl9D
VFJMX0NVUlJFTlRfRElUSEVSSU5HX01PREVfRFlOQU1JQ18yWDIgMQotI2RlZmluZSBOVl9DVFJM
X0NVUlJFTlRfRElUSEVSSU5HX01PREVfU1RBVElDXzJYMiAyCi0jZGVmaW5lIE5WX0NUUkxfQ1VS
UkVOVF9ESVRIRVJJTkdfTU9ERV9URU1QT1JBTCAzCi0KLS8qCi0gKiBOVl9DVFJMX1RIRVJNQUxf
U0VOU09SX1JFQURJTkcgLSBSZXR1cm5zIHRoZSB0aGVybWFsIHNlbnNvcidzIGN1cnJlbnQKLSAq
IHJlYWRpbmcuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9SRUFESU5HIDM1
NSAvKiBSLS1TICovCi0KLS8qCi0gKiBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1BST1ZJREVSIC0g
UmV0dXJucyB0aGUgaGFyZHdhcmUgZGV2aWNlIHRoYXQKLSAqIHByb3ZpZGVzIHRoZSB0aGVybWFs
IHNlbnNvci4KLSAqLwotI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1BST1ZJREVSIDM1
NiAvKiBSLS1TICovCi0jZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfUFJPVklERVJfTk9O
RSAwCi0jZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfUFJPVklERVJfR1BVX0lOVEVSTkFM
IDEKLSNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9QUk9WSURFUl9BRE0xMDMyIDIKLSNk
ZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9QUk9WSURFUl9BRFQ3NDYxIDMKLSNkZWZpbmUg
TlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9QUk9WSURFUl9NQVg2NjQ5IDQKLSNkZWZpbmUgTlZfQ1RS
TF9USEVSTUFMX1NFTlNPUl9QUk9WSURFUl9NQVgxNjE3IDUKLSNkZWZpbmUgTlZfQ1RSTF9USEVS
TUFMX1NFTlNPUl9QUk9WSURFUl9MTTk5IDYKLSNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NFTlNP
Ul9QUk9WSURFUl9MTTg5IDcKLSNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9QUk9WSURF
Ul9MTTY0IDgKLSNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9QUk9WSURFUl9HNzgxIDkK
LSNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9QUk9WSURFUl9BRFQ3NDczIDEwCi0jZGVm
aW5lIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfUFJPVklERVJfU0JNQVg2NjQ5IDExCi0jZGVmaW5l
IE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfUFJPVklERVJfVkJJT1NFVlQgMTIKLSNkZWZpbmUgTlZf
Q1RSTF9USEVSTUFMX1NFTlNPUl9QUk9WSURFUl9PUyAxMwotI2RlZmluZSBOVl9DVFJMX1RIRVJN
QUxfU0VOU09SX1BST1ZJREVSX1VOS05PV04gMHhGRkZGRkZGRgotCi0vKgotICogTlZfQ1RSTF9U
SEVSTUFMX1NFTlNPUl9UQVJHRVQgLSBSZXR1cm5zIHdoYXQgaGFyZHdhcmUgY29tcG9uZW50Ci0g
KiB0aGUgdGhlcm1hbCBzZW5zb3IgaXMgbWVhc3VyaW5nLgotICovCi0jZGVmaW5lIE5WX0NUUkxf
VEhFUk1BTF9TRU5TT1JfVEFSR0VUIDM1NyAvKiBSLS1TICovCi0jZGVmaW5lIE5WX0NUUkxfVEhF
Uk1BTF9TRU5TT1JfVEFSR0VUX05PTkUgMAotI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09S
X1RBUkdFVF9HUFUgMQotI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1RBUkdFVF9NRU1P
UlkgMgotI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1RBUkdFVF9QT1dFUl9TVVBQTFkg
NAotI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1RBUkdFVF9CT0FSRCA4Ci0jZGVmaW5l
IE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfVEFSR0VUX1VOS05PV04gMHhGRkZGRkZGRgotCi0vKgot
ICogTlZfQ1RSTF9TSE9XX01VTFRJR1BVX1ZJU1VBTF9JTkRJQ0FUT1IgLSB3aGVuIFRSVUUsIE9w
ZW5HTCB3aWxsCi0gKiBkcmF3IGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IE1VTFRJR1BV
IG1vZGUuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9TSE9XX01VTFRJR1BVX1ZJU1VBTF9JTkRJQ0FU
T1IgMzU4IC8qIFJXLVggKi8KLSNkZWZpbmUgTlZfQ1RSTF9TSE9XX01VTFRJR1BVX1ZJU1VBTF9J
TkRJQ0FUT1JfRkFMU0UgMAotI2RlZmluZSBOVl9DVFJMX1NIT1dfTVVMVElHUFVfVklTVUFMX0lO
RElDQVRPUl9UUlVFIDEKLQotLyoKLSAqIE5WX0NUUkxfR1BVX0NVUlJFTlRfUFJPQ0VTU09SX0NM
T0NLX0ZSRVFTIC0gUmV0dXJucyBHUFUncyBwcm9jZXNzb3IKLSAqIGNsb2NrIGZyZXFzLgotICov
Ci0jZGVmaW5lIE5WX0NUUkxfR1BVX0NVUlJFTlRfUFJPQ0VTU09SX0NMT0NLX0ZSRVFTIDM1OSAv
KiBSVy1HICovCi0KLS8qCi0gKiBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX0ZMQUdTIC0gcXVl
cnkgdGhlIGZsYWdzICh2YXJpb3VzIGluZm9ybWF0aW9uCi0gKiBmb3IgdGhlIHNwZWNpZmllZCBO
Vl9DVFJMX0dWSU9fVklERU9fRk9STUFUXyouICBTbyB0aGF0IHRoaXMgY2FuIGJlCi0gKiBxdWVy
aWVkIHdpdGggZXhpc3RpbmcgaW50ZXJmYWNlcywgdGhlIHZpZGVvIGZvcm1hdCBzaG91bGQgYmUg
c3BlY2lmaWVkCi0gKiBpbiB0aGUgZGlzcGxheV9tYXNrIGZpZWxkOyBlZzoKLSAqCi0gKiBYTlZD
VFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoZHB5LAotICogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1ZJLAotICogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGd2aSwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVl9DVFJMX0dWSU9fVklE
RU9fRk9STUFUXzcyMFBfNjBfMDBfU01QVEUyOTYsCi0gKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF9GTEFHUywKLSAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmZmxhZ3MpOwotICoKLSAqIE5vdGU6IFRoZSBOVl9DVFJMX0dWSU9fVklE
RU9fRk9STUFUX0ZMQUdTXzNHXzEwODBQX05PXzEyQlBDIGZsYWcgaXMgc2V0Ci0gKiAgICAgICBm
b3IgdGhvc2UgMTA4MFAgM0cgbW9kZXMgKGxldmVsIEEgYW5kIEIpIHRoYXQgZG8gbm90IHN1cHBv
cnQKLSAqICAgICAgIDEyIGJpdHMgcGVyIGNvbXBvbmVudCAod2hlbiBjb25maWd1cmluZyBhIEdW
SSBzdHJlYW0uKQotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF9GTEFH
UyAzNjAgLyogUi0tSSAqLwotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX0ZMQUdT
X05PTkUgMHgwMDAwMDAwMAotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX0ZMQUdT
X0lOVEVSTEFDRUQgMHgwMDAwMDAwMQotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFU
X0ZMQUdTX1BST0dSRVNTSVZFIDB4MDAwMDAwMDIKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVP
X0ZPUk1BVF9GTEFHU19QU0YgMHgwMDAwMDAwNAotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9f
Rk9STUFUX0ZMQUdTXzNHX0xFVkVMX0EgMHgwMDAwMDAwOAotI2RlZmluZSBOVl9DVFJMX0dWSU9f
VklERU9fRk9STUFUX0ZMQUdTXzNHX0xFVkVMX0IgMHgwMDAwMDAxMAotI2RlZmluZSBOVl9DVFJM
X0dWSU9fVklERU9fRk9STUFUX0ZMQUdTXzNHIFwKLSAgICAoKE5WX0NUUkxfR1ZJT19WSURFT19G
T1JNQVRfRkxBR1NfM0dfTEVWRUxfQSkgfCAoTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF9GTEFH
U18zR19MRVZFTF9CKSkKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF9GTEFHU18z
R18xMDgwUF9OT18xMkJQQyAweDAwMDAwMDIwCi0KLS8qCi0gKiBOVl9DVFJMX0dQVV9QQ0lFX01B
WF9MSU5LX1NQRUVEIC0gcmV0dXJucyBtYXhpbXVtIFBDSWUgbGluayBzcGVlZCwKLSAqIGluIGdp
Z2F0cmFuc2ZlcnMgcGVyIHNlY29uZCAoR1QvcykuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dQ
VV9QQ0lFX01BWF9MSU5LX1NQRUVEIDM2MSAvKiBSLS1HSSAqLwotCi0vKgotICogTlZfQ1RSTF8z
RF9WSVNJT05fUFJPX1JFU0VUX1RSQU5TQ0VJVkVSX1RPX0ZBQ1RPUllfU0VUVElOR1MgLSBSZXNl
dHMgdGhlCi0gKiAzRCBWaXNpb24gUHJvIHRyYW5zY2VpdmVyIHRvIGl0cyBmYWN0b3J5IHNldHRp
bmdzLgotICovCi0jZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9OX1BST19SRVNFVF9UUkFOU0NFSVZF
Ul9UT19GQUNUT1JZX1NFVFRJTkdTIDM2MyAvKiAtVy1UICovCi0KLS8qCi0gKiBOVl9DVFJMXzNE
X1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJfQ0hBTk5FTCAtIENvbnRyb2xzIHRoZSBjaGFubmVsIHRo
YXQgaXMKLSAqIGN1cnJlbnRseSB1c2VkIGJ5IHRoZSAzRCBWaXNpb24gUHJvIHRyYW5zY2VpdmVy
LgotICovCi0jZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9DSEFOTkVM
IDM2NCAvKiBSVy1UICovCi0KLS8qCi0gKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlW
RVJfTU9ERSAtIENvbnRyb2xzIHRoZSBtb2RlIGluIHdoaWNoIHRoZQotICogM0QgVmlzaW9uIFBy
byB0cmFuc2NlaXZlciBvcGVyYXRlcy4KLSAqIE5WX0NUUkxfM0RfVklTSU9OX1BST19UTV9MT1df
UkFOR0UgaXMgYmlkaXJlY3Rpb25hbAotICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1RNX01FRElV
TV9SQU5HRSBpcyBiaWRpcmVjdGlvbmFsCi0gKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fVE1fSElH
SF9SQU5HRSBtYXkgYmUgYmlkaXJlY3Rpb25hbCBqdXN0IHVwIHRvIGEKLSAqICAgICBnaXZlbiBy
YW5nZSwgYW5kIHVuaWRpcmVjdGlvbmFsIGJleW9uZCBpdAotICogTlZfQ1RSTF8zRF9WSVNJT05f
UFJPX1RNX0NPVU5UIGlzIHRoZSB0b3RhbCBudW1iZXIgb2YKLSAqICAgICAzRCBWaXNpb24gUHJv
IHRyYW5zY2VpdmVyIG1vZGVzCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1RS
QU5TQ0VJVkVSX01PREUgMzY1IC8qIFJXLVQgKi8KLSNkZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05f
UFJPX1RSQU5TQ0VJVkVSX01PREVfSU5WQUxJRCAwCi0jZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9O
X1BST19UUkFOU0NFSVZFUl9NT0RFX0xPV19SQU5HRSAxCi0jZGVmaW5lIE5WX0NUUkxfM0RfVklT
SU9OX1BST19UUkFOU0NFSVZFUl9NT0RFX01FRElVTV9SQU5HRSAyCi0jZGVmaW5lIE5WX0NUUkxf
M0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9NT0RFX0hJR0hfUkFOR0UgMwotI2RlZmluZSBOVl9D
VFJMXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJfTU9ERV9DT1VOVCA0Ci0KLS8qCi0gKiBOVl9D
VFJMX1NZTkNIUk9OT1VTX1BBTEVUVEVfVVBEQVRFUyAtIGNvbnRyb2xzIHdoZXRoZXIgdXBkYXRl
cyB0byB0aGUgY29sb3IKLSAqIGxvb2t1cCB0YWJsZSAoTFVUKSBhcmUgc3luY2hyb25vdXMgd2l0
aCByZXNwZWN0IHRvIFggcmVuZGVyaW5nLiAgRm9yIGV4YW1wbGUsCi0gKiBpZiBhbiBYIGNsaWVu
dCBzZW5kcyBYU3RvcmVDb2xvcnMgZm9sbG93ZWQgYnkgWEZpbGxSZWN0YW5nbGUsIHRoZSBkcml2
ZXIgd2lsbAotICogZ3VhcmFudGVlIHRoYXQgdGhlIEZpbGxSZWN0YW5nbGUgcmVxdWVzdCBpcyBu
b3QgcHJvY2Vzc2VkIHVudGlsIGFmdGVyIHRoZQotICogdXBkYXRlZCBMVVQgY29sb3JzIGFyZSBh
Y3R1YWxseSB2aXNpYmxlIG9uIHRoZSBzY3JlZW4gaWYKLSAqIE5WX0NUUkxfU1lOQ0hST05PVVNf
UEFMRVRURV9VUERBVEVTIGlzIGVuYWJsZWQuICBPdGhlcndpc2UsIHRoZSByZW5kZXJpbmcgbWF5
Ci0gKiBvY2N1ciBmaXJzdC4KLSAqCi0gKiBUaGlzIG1ha2VzIGEgZGlmZmVyZW5jZSBmb3IgYXBw
bGljYXRpb25zIHRoYXQgdXNlIHRoZSBMVVQgdG8gYW5pbWF0ZSwgc3VjaCBhcwotICogWFBpbG90
LiAgSWYgeW91IGV4cGVyaWVuY2UgZmxpY2tlcmluZyBpbiBhcHBsaWNhdGlvbnMgdGhhdCB1c2Ug
TFVUCi0gKiBhbmltYXRpb25zLCB0cnkgZW5hYmxpbmcgdGhpcyBhdHRyaWJ1dGUuCi0gKgotICog
V2hlbiBzeW5jaHJvbm91cyB1cGRhdGVzIGFyZSBlbmFibGVkLCBYU3RvcmVDb2xvcnMgcmVxdWVz
dHMgd2lsbCBiZSBwcm9jZXNzZWQKLSAqIGF0IHlvdXIgc2NyZWVuJ3MgcmVmcmVzaCByYXRlLgot
ICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9TWU5DSFJPTk9VU19QQUxFVFRFX1VQREFURVMgMzY3IC8q
IFJXREcgKi8KLSNkZWZpbmUgTlZfQ1RSTF9TWU5DSFJPTk9VU19QQUxFVFRFX1VQREFURVNfRElT
QUJMRSAwCi0jZGVmaW5lIE5WX0NUUkxfU1lOQ0hST05PVVNfUEFMRVRURV9VUERBVEVTX0VOQUJM
RSAxCi0KLS8qCi0gKiBOVl9DVFJMX0RJVEhFUklOR19ERVBUSCAtIENvbnRyb2xzIHRoZSBkaXRo
ZXJpbmcgZGVwdGggd2hlbgotICogTlZfQ1RSTF9DVVJSRU5UX0RJVEhFUklORyBpcyBFTkFCTEVE
LiAgU29tZSBkaXNwbGF5cyBjb25uZWN0ZWQKLSAqIHRvIHRoZSBHUFUgdmlhIHRoZSBEVkkgb3Ig
TFZEUyBpbnRlcmZhY2VzIGNhbm5vdCBkaXNwbGF5IHRoZQotICogZnVsbCBjb2xvciByYW5nZSBv
ZiB0ZW4gYml0cyBwZXIgY2hhbm5lbCwgc28gdGhlIEdQVSB3aWxsCi0gKiBkaXRoZXIgdG8gZWl0
aGVyIDYgb3IgOCBiaXRzIHBlciBjaGFubmVsLgotICovCi0jZGVmaW5lIE5WX0NUUkxfRElUSEVS
SU5HX0RFUFRIIDM2OCAvKiBSV0RHICovCi0jZGVmaW5lIE5WX0NUUkxfRElUSEVSSU5HX0RFUFRI
X0FVVE8gMAotI2RlZmluZSBOVl9DVFJMX0RJVEhFUklOR19ERVBUSF82X0JJVFMgMQotI2RlZmlu
ZSBOVl9DVFJMX0RJVEhFUklOR19ERVBUSF84X0JJVFMgMgotCi0vKgotICogTlZfQ1RSTF9DVVJS
RU5UX0RJVEhFUklOR19ERVBUSCAtIFJldHVybnMgdGhlIGN1cnJlbnQgZGl0aGVyaW5nCi0gKiBk
ZXB0aCB2YWx1ZS4KLSAqLwotI2RlZmluZSBOVl9DVFJMX0NVUlJFTlRfRElUSEVSSU5HX0RFUFRI
IDM2OSAvKiBSLURHICovCi0jZGVmaW5lIE5WX0NUUkxfQ1VSUkVOVF9ESVRIRVJJTkdfREVQVEhf
Tk9ORSAwCi0jZGVmaW5lIE5WX0NUUkxfQ1VSUkVOVF9ESVRIRVJJTkdfREVQVEhfNl9CSVRTIDEK
LSNkZWZpbmUgTlZfQ1RSTF9DVVJSRU5UX0RJVEhFUklOR19ERVBUSF84X0JJVFMgMgotCi0vKgot
ICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX0NIQU5ORUxfRlJFUVVFTkNZIC0g
UmV0dXJucyB0aGUKLSAqIGZyZXF1ZW5jeSBvZiB0aGUgY2hhbm5lbChpbiBrSHopIG9mIHRoZSAz
RCBWaXNpb24gUHJvIHRyYW5zY2VpdmVyLgotICogVXNlIHRoZSBkaXNwbGF5X21hc2sgcGFyYW1l
dGVyIHRvIHNwZWNpZnkgdGhlIGNoYW5uZWwgbnVtYmVyLgotICovCi0jZGVmaW5lIE5WX0NUUkxf
M0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9DSEFOTkVMX0ZSRVFVRU5DWSAzNzAgLyogUi0tVCAq
LwotCi0vKgotICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX0NIQU5ORUxfUVVB
TElUWSAtIFJldHVybnMgdGhlCi0gKiBxdWFsaXR5IG9mIHRoZSBjaGFubmVsKGluIHBlcmNlbnRh
Z2UpIG9mIHRoZSAzRCBWaXNpb24gUHJvIHRyYW5zY2VpdmVyLgotICogVXNlIHRoZSBkaXNwbGF5
X21hc2sgcGFyYW1ldGVyIHRvIHNwZWNpZnkgdGhlIGNoYW5uZWwgbnVtYmVyLgotICovCi0jZGVm
aW5lIE5WX0NUUkxfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9DSEFOTkVMX1FVQUxJVFkgMzcx
IC8qIFItLVQgKi8KLQotLyoKLSAqIE5WX0NUUkxfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9D
SEFOTkVMX0NPVU5UIC0gUmV0dXJucyB0aGUgbnVtYmVyIG9mCi0gKiBjaGFubmVscyBvbiB0aGUg
M0QgVmlzaW9uIFBybyB0cmFuc2NlaXZlci4KLSAqLwotI2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lP
Tl9QUk9fVFJBTlNDRUlWRVJfQ0hBTk5FTF9DT1VOVCAzNzIgLyogUi0tVCAqLwotCi0vKgotICog
TlZfQ1RSTF8zRF9WSVNJT05fUFJPX1BBSVJfR0xBU1NFUyAtIFB1dHMgdGhlIDNEIFZpc2lvbiBQ
cm8KLSAqIHRyYW5zY2VpdmVyIGludG8gcGFpcmluZyBtb2RlIHRvIGdhdGhlciBhZGRpdGlvbmFs
IGdsYXNzZXMuCi0gKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fUEFJUl9HTEFTU0VTX1NUT1AgLSBz
dG9wcyBhbnkgcGFpcmluZwotICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1BBSVJfR0xBU1NFU19C
RUFDT04gLSBzdGFydHMgY29udGludW91cwotICogICAgIHBhaXJpbmcgdmlhIGJlYWNvbiBtb2Rl
Ci0gKiBBbnkgb3RoZXIgdmFsdWUsIE4gLSBQdXRzIHRoZSAzRCBWaXNpb24gUHJvIHRyYW5zY2Vp
dmVyIGludG8KLSAqICAgICBhdXRoZW50aWNhdGVkIHBhaXJpbmcgbW9kZSBmb3IgTiBzZWNvbmRz
LgotICovCi0jZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9OX1BST19QQUlSX0dMQVNTRVMgMzczIC8q
IC1XLVQgKi8KLSNkZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1BBSVJfR0xBU1NFU19TVE9Q
IDAKLSNkZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1BBSVJfR0xBU1NFU19CRUFDT04gMHhG
RkZGRkZGRgotCi0vKgotICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1VOUEFJUl9HTEFTU0VTIC0g
VGVsbHMgYSBzcGVjaWZpYyBwYWlyCi0gKiBvZiBnbGFzc2VzIHRvIHVucGFpci4gVGhlIGdsYXNz
ZXMgd2lsbCAiZm9yZ2V0IiB0aGUgYWRkcmVzcwotICogb2YgdGhlIDNEIFZpc2lvbiBQcm8gdHJh
bnNjZWl2ZXIgdG8gd2hpY2ggdGhleSBoYXZlIGJlZW4gcGFpcmVkLgotICogVG8gdW5wYWlyIGFs
bCB0aGUgY3VycmVudGx5IHBhaXJlZCBnbGFzc2VzLCBzcGVjaWZ5Ci0gKiB0aGUgZ2xhc3NlcyBp
ZCBhcyAwLgotICovCi0jZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9OX1BST19VTlBBSVJfR0xBU1NF
UyAzNzQgLyogLVctVCAqLwotCi0vKgotICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX0RJU0NPVkVS
X0dMQVNTRVMgLSBUZWxscyB0aGUgM0QgVmlzaW9uIFBybwotICogdHJhbnNjZWl2ZXIgYWJvdXQg
dGhlIGdsYXNzZXMgdGhhdCBoYXZlIGJlZW4gcGFpcmVkIHVzaW5nCi0gKiBOVl9DVFJMXzNEX1ZJ
U0lPTl9QUk9fUEFJUl9HTEFTU0VTX0JFQUNPTi4gVW5sZXNzIHRoaXMgaXMgZG9uZSwKLSAqIHRo
ZSAzRCBWaXNpb24gUHJvIHRyYW5zY2VpdmVyIHdpbGwgbm90IGtub3cgYWJvdXQgZ2xhc3NlcyBw
YWlyZWQgaW4KLSAqIGJlYWNvbiBtb2RlLgotICovCi0jZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9O
X1BST19ESVNDT1ZFUl9HTEFTU0VTIDM3NSAvKiAtVy1UICovCi0KLS8qCi0gKiBOVl9DVFJMXzNE
X1ZJU0lPTl9QUk9fSURFTlRJRllfR0xBU1NFUyAtIENhdXNlcyBnbGFzc2VzIExFRHMgdG8KLSAq
IGZsYXNoIGZvciBhIHNob3J0IHBlcmlvZCBvZiB0aW1lLgotICovCi0jZGVmaW5lIE5WX0NUUkxf
M0RfVklTSU9OX1BST19JREVOVElGWV9HTEFTU0VTIDM3NiAvKiAtVy1UICovCi0KLS8qCi0gKiBO
Vl9DVFJMXzNEX1ZJU0lPTl9QUk9fR0xBU1NFU19TWU5DX0NZQ0xFIC0gQ29udHJvbHMgdGhlCi0g
KiBzeW5jIGN5Y2xlIGR1cmF0aW9uKGluIG1pbGxpc2Vjb25kcykgb2YgdGhlIGdsYXNzZXMuCi0g
KiBVc2UgdGhlIGRpc3BsYXlfbWFzayBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB0aGUgZ2xhc3NlcyBp
ZC4KLSAqLwotI2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fR0xBU1NFU19TWU5DX0NZQ0xF
IDM3OCAvKiBSVy1UICovCi0KLS8qCi0gKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fR0xBU1NFU19N
SVNTRURfU1lOQ19DWUNMRVMgLSBSZXR1cm5zIHRoZQotICogbnVtYmVyIG9mIHN0YXRlIHN5bmMg
Y3ljbGVzIHJlY2VudGx5IG1pc3NlZCBieSB0aGUgZ2xhc3Nlcy4KLSAqIFVzZSB0aGUgZGlzcGxh
eV9tYXNrIHBhcmFtZXRlciB0byBzcGVjaWZ5IHRoZSBnbGFzc2VzIGlkLgotICovCi0jZGVmaW5l
IE5WX0NUUkxfM0RfVklTSU9OX1BST19HTEFTU0VTX01JU1NFRF9TWU5DX0NZQ0xFUyAzNzkgLyog
Ui0tVCAqLwotCi0vKgotICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX0dMQVNTRVNfQkFUVEVSWV9M
RVZFTCAtIFJldHVybnMgdGhlCi0gKiBiYXR0ZXJ5IGxldmVsKGluIHBlcmNlbnRhZ2UpIG9mIHRo
ZSBnbGFzc2VzLgotICogVXNlIHRoZSBkaXNwbGF5X21hc2sgcGFyYW1ldGVyIHRvIHNwZWNpZnkg
dGhlIGdsYXNzZXMgaWQuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05fUFJPX0dMQVNT
RVNfQkFUVEVSWV9MRVZFTCAzODAgLyogUi0tVCAqLwotCi0vKgotICogTlZfQ1RSTF9HVk9fQU5D
X1BBUklUWV9DT01QVVRBVElPTiAtIENvbnRyb2xzIHRoZSBTREkgZGV2aWNlJ3MgY29tcHV0YXRp
b24KLSAqIG9mIHRoZSBwYXJpdHkgYml0IChiaXQgOCkgZm9yIEFOQyBkYXRhIHdvcmRzLgotICov
Ci0KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fQU5DX1BBUklUWV9DT01QVVRBVElPTiAzODEgLyogUlct
LS0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fQU5DX1BBUklUWV9DT01QVVRBVElPTl9BVVRPIDAK
LSNkZWZpbmUgTlZfQ1RSTF9HVk9fQU5DX1BBUklUWV9DT01QVVRBVElPTl9PTiAxCi0jZGVmaW5l
IE5WX0NUUkxfR1ZPX0FOQ19QQVJJVFlfQ09NUFVUQVRJT05fT0ZGIDIKLQotLyoKLSAqIE5WX0NU
UkxfM0RfVklTSU9OX1BST19HTEFTU0VTX1BBSVJfRVZFTlQgLSBUaGlzIGF0dHJpYnV0ZSBpcyBz
ZW50Ci0gKiBhcyBhbiBldmVudCB3aGVuIGdsYXNzZXMgZ2V0IHBhaXJlZCBpbiByZXNwb25zZSB0
byBwYWlyIGNvbW1hbmQKLSAqIGZyb20gYW55IG9mIHRoZSBjbGllbnRzLgotICovCi0jZGVmaW5l
IE5WX0NUUkxfM0RfVklTSU9OX1BST19HTEFTU0VTX1BBSVJfRVZFTlQgMzgyIC8qIC0tLVQgKi8K
LQotLyoKLSAqIE5WX0NUUkxfM0RfVklTSU9OX1BST19HTEFTU0VTX1VOUEFJUl9FVkVOVCAtIFRo
aXMgYXR0cmlidXRlIGlzIHNlbnQKLSAqIGFzIGFuIGV2ZW50IHdoZW4gZ2xhc3NlcyBnZXQgdW5w
YWlyZWQgaW4gcmVzcG9uc2UgdG8gdW5wYWlyIGNvbW1hbmQKLSAqIGZyb20gYW55IG9mIHRoZSBj
bGllbnRzLgotICovCi0jZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9OX1BST19HTEFTU0VTX1VOUEFJ
Ul9FVkVOVCAzODMgLyogLS0tVCAqLwotCi0vKgotICogTlZfQ1RSTF9HUFVfUENJRV9DVVJSRU5U
X0xJTktfV0lEVEggLSByZXR1cm5zIHRoZSBjdXJyZW50Ci0gKiBQQ0llIGxpbmsgd2lkdGgsIGlu
IG51bWJlciBvZiBsYW5lcy4KLSAqLwotI2RlZmluZSBOVl9DVFJMX0dQVV9QQ0lFX0NVUlJFTlRf
TElOS19XSURUSCAzODQgLyogUi0tR0kgKi8KLQotLyoKLSAqIE5WX0NUUkxfR1BVX1BDSUVfQ1VS
UkVOVF9MSU5LX1NQRUVEIC0gcmV0dXJucyB0aGUgY3VycmVudAotICogUENJZSBsaW5rIHNwZWVk
LCBpbiBtZWdhdHJhbnNmZXJzIHBlciBzZWNvbmQgKEdUL3MpLgotICovCi0jZGVmaW5lIE5WX0NU
UkxfR1BVX1BDSUVfQ1VSUkVOVF9MSU5LX1NQRUVEIDM4NSAvKiBSLS1HSSAqLwotCi0vKgotICog
TlZfQ1RSTF9HVk9fQVVESU9fQkxBTktJTkcgLSBzcGVjaWZpZXMgd2hldGhlciB0aGUgR1ZPIGRl
dmljZSBzaG91bGQgZGVsZXRlCi0gKiBhdWRpbyBhbmNpbGxhcnkgZGF0YSBwYWNrZXRzIHdoZW4g
ZnJhbWVzIGFyZSByZXBlYXRlZC4KLSAqCi0gKiBXaGVuIGEgbmV3IGZyYW1lIGlzIG5vdCByZWFk
eSBpbiB0aW1lLCB0aGUgY3VycmVudCBmcmFtZSwgaW5jbHVkaW5nIGFsbAotICogYW5jaWxsYXJ5
IGRhdGEgcGFja2V0cywgaXMgcmVwZWF0ZWQuICBXaGVuIHRoaXMgZGF0YSBpbmNsdWRlcyBhdWRp
byBwYWNrZXRzLAotICogdGhpcyBjYW4gcmVzdWx0IGluIHN0dXR0ZXJzIG9yIGNsaWNrcy4gIFdo
ZW4gdGhpcyBvcHRpb24gaXMgZW5hYmxlZCwgdGhlIEdWTwotICogZGV2aWNlIHdpbGwgZGV0ZWN0
IHdoZW4gZnJhbWVzIGFyZSByZXBlYXRlZCwgaWRlbnRpZnkgYXVkaW8gYW5jaWxsYXJ5IGRhdGEK
LSAqIHBhY2tldHMsIGFuZCBtYXJrIHRoZW0gZm9yIGRlbGV0aW9uLgotICoKLSAqIFRoaXMgb3B0
aW9uIGlzIGFwcGxpZWQgd2hlbiB0aGUgR1ZPIGRldmljZSBpcyBib3VuZC4KLSAqLwotI2RlZmlu
ZSBOVl9DVFJMX0dWT19BVURJT19CTEFOS0lORyAzODYgLyogUlctICovCi0jZGVmaW5lIE5WX0NU
UkxfR1ZPX0FVRElPX0JMQU5LSU5HX0RJU0FCTEUgMAotI2RlZmluZSBOVl9DVFJMX0dWT19BVURJ
T19CTEFOS0lOR19FTkFCTEUgMQotCi0vKgotICogTlZfQ1RSTF9DVVJSRU5UX01FVEFNT0RFX0lE
IC0gc3dpdGNoIG1vZGVzIHRvIHRoZSBNZXRhTW9kZSB3aXRoCi0gKiB0aGUgc3BlY2lmaWVkIElE
LgotICovCi0jZGVmaW5lIE5WX0NUUkxfQ1VSUkVOVF9NRVRBTU9ERV9JRCAzODcgLyogUlctICov
Ci0KLS8qCi0gKiBOVl9DVFJMX0RJU1BMQVlfRU5BQkxFRCAtIFJldHVybnMgd2hldGhlciBvciBu
b3QgdGhlIGRpc3BsYXkgZGV2aWNlCi0gKiBpcyBjdXJyZW50bHkgZW5hYmxlZC4KLSAqLwotI2Rl
ZmluZSBOVl9DVFJMX0RJU1BMQVlfRU5BQkxFRCAzODggLyogUi1EICovCi0jZGVmaW5lIE5WX0NU
UkxfRElTUExBWV9FTkFCTEVEX1RSVUUgMQotI2RlZmluZSBOVl9DVFJMX0RJU1BMQVlfRU5BQkxF
RF9GQUxTRSAwCi0KLSNkZWZpbmUgTlZfQ1RSTF9MQVNUX0FUVFJJQlVURSBOVl9DVFJMX0RJU1BM
QVlfRU5BQkxFRAotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qCi0gKiBTdHJpbmcgQXR0cmli
dXRlczoKLSAqCi0gKiBTdHJpbmcgYXR0cmlidXRlcyBjYW4gYmUgcXVlcnlpZWQgdGhyb3VnaCB0
aGUgWE5WQ1RSTFF1ZXJ5U3RyaW5nQXR0cmlidXRlKCkKLSAqIGFuZCBYTlZDVFJMUXVlcnlUYXJn
ZXRTdHJpbmdBdHRyaWJ1dGUoKSBmdW5jdGlvbiBjYWxscy4KLSAqCi0gKiBTdHJpbmcgYXR0cmli
dXRlcyBjYW4gYmUgc2V0IHRocm91Z2ggdGhlIFhOVkNUUkxTZXRTdHJpbmdBdHRyaWJ1dGUoKQot
ICogZnVuY3Rpb24gY2FsbC4gIChUaGVyZSBhcmUgY3VycmVudGx5IG5vIHN0cmluZyBhdHRyaWJ1
dGVzIHRoYXQgY2FuIGJlCi0gKiBzZXQgb24gbm9uLVggU2NyZWVuIHRhcmdldHMuKQotICoKLSAq
IFVubGVzcyBvdGhlcndpc2Ugbm90ZWQsIGFsbCBzdHJpbmcgYXR0cmlidXRlcyBjYW4gYmUgcXVl
cmllZC9zZXQgdXNpbmcgYW4KLSAqIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0
LiAgQXR0cmlidXRlcyB0aGF0IGNhbm5vdCB0YWtlIGFuCi0gKiBOVl9DVFJMX1RBUkdFVF9UWVBF
X1hfU0NSRUVOIHRhcmdldCBhbHNvIGNhbm5vdCBiZSBxdWVyaWVkL3NldCB0aHJvdWdoCi0gKiBY
TlZDVFJMUXVlcnlTdHJpbmdBdHRyaWJ1dGUoKS9YTlZDVFJMU2V0U3RyaW5nQXR0cmlidXRlKCkg
KFNpbmNlCi0gKiB0aGVzZSBhc3N1bWUgYW4gWCBTY3JlZW4gdGFyZ2V0KS4KLSAqLwotCi0vKgot
ICogTlZfQ1RSTF9TVFJJTkdfUFJPRFVDVF9OQU1FIC0gdGhlIEdQVSBwcm9kdWN0IG5hbWUgb24g
d2hpY2ggdGhlCi0gKiBzcGVjaWZpZWQgWCBzY3JlZW4gaXMgcnVubmluZy4KLSAqCi0gKiBUaGlz
IGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldFN0cmlu
Z0F0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIG9yIE5WX0NU
UkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9T
VFJJTkdfUFJPRFVDVF9OQU1FIDAgLyogUi0tRyAqLwotCi0vKgotICogTlZfQ1RSTF9TVFJJTkdf
VkJJT1NfVkVSU0lPTiAtIHRoZSB2aWRlbyBiaW9zIHZlcnNpb24gb24gdGhlIEdQVSBvbgotICog
d2hpY2ggdGhlIHNwZWNpZmllZCBYIHNjcmVlbiBpcyBydW5uaW5nLgotICovCi0KLSNkZWZpbmUg
TlZfQ1RSTF9TVFJJTkdfVkJJT1NfVkVSU0lPTiAxIC8qIFItLUcgKi8KLQotLyoKLSAqIE5WX0NU
UkxfU1RSSU5HX05WSURJQV9EUklWRVJfVkVSU0lPTiAtIHN0cmluZyByZXByZXNlbnRhdGlvbiBv
ZiB0aGUKLSAqIE5WSURJQSBkcml2ZXIgdmVyc2lvbiBudW1iZXIgZm9yIHRoZSBOVklESUEgWCBk
cml2ZXIgaW4gdXNlLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfTlZJRElBX0RSSVZF
Ul9WRVJTSU9OIDMgLyogUi0tRyAqLwotCi0vKgotICogTlZfQ1RSTF9TVFJJTkdfRElTUExBWV9E
RVZJQ0VfTkFNRSAtIG5hbWUgb2YgdGhlIGRpc3BsYXkgZGV2aWNlCi0gKiBzcGVjaWZpZWQgaW4g
dGhlIGRpc3BsYXlfbWFzayBhcmd1bWVudC4KLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUg
cXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldFN0cmluZ0F0dHJpYnV0ZSgpCi0gKiB1
c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9T
Q1JFRU4gdGFyZ2V0LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfRElTUExBWV9ERVZJ
Q0VfTkFNRSA0IC8qIFItREcgKi8KLQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HX1RWX0VOQ09ERVJf
TkFNRSAtIG5hbWUgb2YgdGhlIFRWIGVuY29kZXIgdXNlZCBieSB0aGUKLSAqIHNwZWNpZmllZCBk
aXNwbGF5IGRldmljZTsgb25seSB2YWxpZCBpZiB0aGUgZGlzcGxheSBkZXZpY2UgaXMgYSBUVi4K
LSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1RWX0VOQ09ERVJfTkFNRSA1IC8qIFItREcg
Ki8KLQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HX0dWSU9fRklSTVdBUkVfVkVSU0lPTiAtIGluZGlj
YXRlcyB0aGUgdmVyc2lvbiBvZiB0aGUKLSAqIEZpcm13YXJlIG9uIHRoZSBHVklPIGRldmljZS4K
LSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HX0dWSU9fRklSTVdBUkVfVkVSU0lPTiA4IC8q
IFItLUkgKi8KLQotLyoKLSAqIFRoZSBmb2xsb3dpbmcgaXMgZGVwcmVjYXRlZDsgdXNlIE5WX0NU
UkxfU1RSSU5HX0dWSU9fRklSTVdBUkVfVkVSU0lPTiwKLSAqIGluc3RlYWQKLSAqLwotI2RlZmlu
ZSBOVl9DVFJMX1NUUklOR19HVk9fRklSTVdBUkVfVkVSU0lPTiA4IC8qIFItLSAqLwotCi0vKgot
ICogTlZfQ1RSTF9TVFJJTkdfQ1VSUkVOVF9NT0RFTElORSAtIFJldHVybiB0aGUgTW9kZUxpbmUg
Y3VycmVudGx5Ci0gKiBiZWluZyB1c2VkIGJ5IHRoZSBzcGVjaWZpZWQgZGlzcGxheSBkZXZpY2Uu
Ci0gKgotICogVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVl
cnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUoKQotICogdXNpbmcgYW4gTlZfQ1RSTF9UQVJHRVRfVFlQ
RV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQuCi0gKgotICogVGhl
IE1vZGVMaW5lIHN0cmluZyBtYXkgYmUgcHJlcGVuZGVkIHdpdGggYSBjb21tYS1zZXBhcmF0ZWQg
bGlzdCBvZgotICogInRva2VuPXZhbHVlIiBwYWlycywgc2VwYXJhdGVkIGZyb20gdGhlIE1vZGVM
aW5lIHN0cmluZyBieSAiOjoiLgotICogVGhpcyAidG9rZW49dmFsdWUiIHN5bnRheCBpcyB0aGUg
c2FtZSBhcyB0aGF0IHVzZWQgaW4KLSAqIE5WX0NUUkxfQklOQVJZX0RBVEFfTU9ERUxJTkVTCi0g
Ki8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19DVVJSRU5UX01PREVMSU5FIDkgLyogUi1ERyAq
LwotCi0vKgotICogTlZfQ1RSTF9TVFJJTkdfQUREX01PREVMSU5FIC0gQWRkcyBhIE1vZGVMaW5l
IHRvIHRoZSBzcGVjaWZpZWQKLSAqIGRpc3BsYXkgZGV2aWNlLiAgVGhlIE1vZGVMaW5lIGlzIG5v
dCBhZGRlZCBpZiB2YWxpZGF0aW9uIGZhaWxzLgotICoKLSAqIFRoZSBNb2RlTGluZSBzdHJpbmcg
c2hvdWxkIGhhdmUgdGhlIHNhbWUgc3ludGF4IGFzIGEgTW9kZUxpbmUgaW4KLSAqIHRoZSBYIGNv
bmZpZ3VyYXRpb24gZmlsZTsgZS5nLiwKLSAqCi0gKiAiMTYwMHgxMjAwIiAgMjI5LjUgIDE2MDAg
MTY2NCAxODU2IDIxNjAgIDEyMDAgMTIwMSAxMjA0IDEyNTAgICtIU3luYyArVlN5bmMKLSAqLwot
Ci0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HX0FERF9NT0RFTElORSAxMCAvKiAtV0RHICovCi0KLS8q
Ci0gKiBOVl9DVFJMX1NUUklOR19ERUxFVEVfTU9ERUxJTkUgLSBEZWxldGVzIGFuIGV4aXN0aW5n
IE1vZGVMaW5lCi0gKiBmcm9tIHRoZSBzcGVjaWZpZWQgZGlzcGxheSBkZXZpY2UuICBUaGUgY3Vy
cmVudGx5IHNlbGVjdGVkCi0gKiBNb2RlTGluZSBjYW5ub3QgYmUgZGVsZXRlZC4gIChUaGlzIGFs
c28gbWVhbnMgeW91IGNhbm5vdCBkZWxldGUKLSAqIHRoZSBsYXN0IE1vZGVMaW5lLikKLSAqCi0g
KiBUaGUgTW9kZUxpbmUgc3RyaW5nIHNob3VsZCBoYXZlIHRoZSBzYW1lIHN5bnRheCBhcyBhIE1v
ZGVMaW5lIGluCi0gKiB0aGUgWCBjb25maWd1cmF0aW9uIGZpbGU7IGUuZy4sCi0gKgotICogIjE2
MDB4MTIwMCIgIDIyOS41ICAxNjAwIDE2NjQgMTg1NiAyMTYwICAxMjAwIDEyMDEgMTIwNCAxMjUw
ICArSFN5bmMgK1ZTeW5jCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19ERUxFVEVfTU9E
RUxJTkUgMTEgLyogLVdERyAqLwotCi0vKgotICogTlZfQ1RSTF9TVFJJTkdfQ1VSUkVOVF9NRVRB
TU9ERSAtIFJldHVybnMgdGhlIG1ldGFtb2RlIGN1cnJlbnRseQotICogYmVpbmcgdXNlZCBieSB0
aGUgc3BlY2lmaWVkIFggc2NyZWVuLiAgVGhlIE1ldGFNb2RlIHN0cmluZyBoYXMgdGhlCi0gKiBz
YW1lIHN5bnRheCBhcyB0aGUgTWV0YU1vZGUgWCBjb25maWd1cmF0aW9uIG9wdGlvbiwgYXMgZG9j
dW1lbnRlZAotICogaW4gdGhlIE5WSURJQSBkcml2ZXIgUkVBRE1FLgotICoKLSAqIFRoZSByZXR1
cm5lZCBzdHJpbmcgbWF5IGJlIHByZXBlbmRlZCB3aXRoIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qg
b2YKLSAqICJ0b2tlbj12YWx1ZSIgcGFpcnMsIHNlcGFyYXRlZCBmcm9tIHRoZSBNZXRhTW9kZSBz
dHJpbmcgYnkgIjo6Ii4KLSAqIFRoaXMgInRva2VuPXZhbHVlIiBzeW50YXggaXMgdGhlIHNhbWUg
YXMgdGhhdCB1c2VkIGluCi0gKiBOVl9DVFJMX0JJTkFSWV9EQVRBX01FVEFNT0RFUy4KLSAqLwot
Ci0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HX0NVUlJFTlRfTUVUQU1PREUgMTIgLyogUlctLSAqLwot
I2RlZmluZSBOVl9DVFJMX1NUUklOR19DVVJSRU5UX01FVEFNT0RFX1ZFUlNJT05fMSBOVl9DVFJM
X1NUUklOR19DVVJSRU5UX01FVEFNT0RFCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19BRERfTUVU
QU1PREUgLSBBZGRzIGEgTWV0YU1vZGUgdG8gdGhlIHNwZWNpZmllZAotICogWCBTY3JlZW4uCi0g
KgotICogSXQgaXMgcmVjb21tZW5kZWQgdG8gbm90IHVzZSB0aGlzIGF0dHJpYnV0ZSwgYnV0IGlu
c3RlYWQgdXNlCi0gKiBOVl9DVFJMX1NUUklOR19PUEVSQVRJT05fQUREX01FVEFNT0RFLgotICov
Ci0KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfQUREX01FVEFNT0RFIDEzIC8qIC1XLS0gKi8KLQot
LyoKLSAqIE5WX0NUUkxfU1RSSU5HX0RFTEVURV9NRVRBTU9ERSAtIERlbGV0ZXMgYW4gZXhpc3Rp
bmcgTWV0YU1vZGUgZnJvbQotICogdGhlIHNwZWNpZmllZCBYIFNjcmVlbi4gIFRoZSBjdXJyZW50
bHkgc2VsZWN0ZWQgTWV0YU1vZGUgY2Fubm90IGJlCi0gKiBkZWxldGVkLiAgKFRoaXMgYWxzbyBt
ZWFucyB5b3UgY2Fubm90IGRlbGV0ZSB0aGUgbGFzdCBNZXRhTW9kZSkuCi0gKiBUaGUgTWV0YU1v
ZGUgc3RyaW5nIHNob3VsZCBoYXZlIHRoZSBzYW1lIHN5bnRheCBhcyB0aGUgTWV0YU1vZGUgWAot
ICogY29uZmlndXJhdGlvbiBvcHRpb24sIGFzIGRvY3VtZW50ZWQgaW4gdGhlIE5WSURJQSBkcml2
ZXIgUkVBRE1FLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfREVMRVRFX01FVEFNT0RF
IDE0IC8qIC1XRC0tICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19WQ1NDX1BST0RVQ1RfTkFN
RSAtIFF1ZXJ5cyB0aGUgcHJvZHVjdCBuYW1lIG9mIHRoZQotICogVkNTQyBkZXZpY2UuCi0gKgot
ICogVGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFy
Z2V0U3RyaW5nQXR0cmlidXRlKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9WQ1ND
IHRhcmdldC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1ZDU0NfUFJPRFVDVF9OQU1F
IDE1IC8qIFItLS1WICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19WQ1NDX1BST0RVQ1RfSUQg
LSBRdWVyeXMgdGhlIHByb2R1Y3QgSUQgb2YgdGhlIFZDU0MgZGV2aWNlLgotICoKLSAqIFRoaXMg
YXR0cmlidXRlIG11c3QgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldFN0cmlu
Z0F0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfVkNTQyB0YXJnZXQu
Ci0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19WQ1NDX1BST0RVQ1RfSUQgMTYgLyogUi0t
LVYgKi8KLQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HX1ZDU0NfU0VSSUFMX05VTUJFUiAtIFF1ZXJ5
cyB0aGUgdW5pcXVlIHNlcmlhbCBudW1iZXIKLSAqIG9mIHRoZSBWQ1MgZGV2aWNlLgotICoKLSAq
IFRoaXMgYXR0cmlidXRlIG11c3QgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdl
dFN0cmluZ0F0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfVkNTQyB0
YXJnZXQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19WQ1NDX1NFUklBTF9OVU1CRVIg
MTcgLyogUi0tLVYgKi8KLQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HX1ZDU0NfQlVJTERfREFURSAt
IFF1ZXJ5cyB0aGUgZGF0ZSBvZiB0aGUgVkNTIGRldmljZS4KLSAqIHRoZSByZXR1cm5lZCBzdHJp
bmcgaXMgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6ICJXZWVrLlllYXIiCi0gKgotICogVGhpcyBh
dHRyaWJ1dGUgbXVzdCBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5n
QXR0cmlidXRlKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9WQ1NDIHRhcmdldC4K
LSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1ZDU0NfQlVJTERfREFURSAxOCAvKiBSLS0t
ViAqLwotCi0vKgotICogTlZfQ1RSTF9TVFJJTkdfVkNTQ19GSVJNV0FSRV9WRVJTSU9OIC0gUXVl
cnlzIHRoZSBmaXJtd2FyZSB2ZXJzaW9uCi0gKiBvZiB0aGUgVkNTIGRldmljZS4KLSAqCi0gKiBU
aGlzIGF0dHJpYnV0ZSBtdXN0IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRT
dHJpbmdBdHRyaWJ1dGUoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX1ZDU0MgdGFy
Z2V0LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfVkNTQ19GSVJNV0FSRV9WRVJTSU9O
IDE5IC8qIFItLS1WICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19WQ1NDX0ZJUk1XQVJFX1JF
VklTSU9OIC0gUXVlcnlzIHRoZSBmaXJtd2FyZSByZXZpc2lvbgotICogb2YgdGhlIFZDUyBkZXZp
Y2UuCi0gKgotICogVGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RS
TFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRlKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRf
VFlQRV9WQ1MgdGFyZ2V0LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfVkNTQ19GSVJN
V0FSRV9SRVZJU0lPTiAyMCAvKiBSLS0tViAqLwotCi0vKgotICogTlZfQ1RSTF9TVFJJTkdfVkNT
Q19IQVJEV0FSRV9WRVJTSU9OIC0gUXVlcnlzIHRoZSBoYXJkd2FyZSB2ZXJzaW9uCi0gKiBvZiB0
aGUgVkNTIGRldmljZS4KLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBtdXN0IGJlIHF1ZXJpZWQgdGhy
b3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUoKQotICogdXNpbmcgYSBOVl9D
VFJMX1RBUkdFVF9UWVBFX1ZDU0MgdGFyZ2V0LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJ
TkdfVkNTQ19IQVJEV0FSRV9WRVJTSU9OIDIxIC8qIFItLS1WICovCi0KLS8qCi0gKiBOVl9DVFJM
X1NUUklOR19WQ1NDX0hBUkRXQVJFX1JFVklTSU9OIC0gUXVlcnlzIHRoZSBoYXJkd2FyZSByZXZp
c2lvbgotICogb2YgdGhlIFZDUyBkZXZpY2UuCi0gKgotICogVGhpcyBhdHRyaWJ1dGUgbXVzdCBi
ZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRlKCkKLSAq
IHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9WQ1NDIHRhcmdldC4KLSAqLwotCi0jZGVmaW5l
IE5WX0NUUkxfU1RSSU5HX1ZDU0NfSEFSRFdBUkVfUkVWSVNJT04gMjIgLyogUi0tLVYgKi8KLQot
LyoKLSAqIE5WX0NUUkxfU1RSSU5HX01PVkVfTUVUQU1PREUgLSBNb3ZlcyBhIE1ldGFNb2RlIHRv
IHRoZSBzcGVjaWZpZWQKLSAqIGluZGV4IGxvY2F0aW9uLiAgVGhlIE1ldGFNb2RlIG11c3QgYWxy
ZWFkeSBleGlzdCBpbiB0aGUgWCBTY3JlZW4ncwotICogbGlzdCBvZiBNZXRhTW9kZXMgKGFzIHJl
dHVybmVkIGJ5IHRoZSBOVl9DVFJMX0JJTkFSWV9EQVRBX01FVEFNT0RFUwotICogYXR0cmlidXRl
KS4gIElmIHRoZSBpbmRleCBpcyBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIE1ldGFNb2RlcyBp
bgotICogdGhlIGxpc3QsIHRoZSBNZXRhTW9kZSBpcyBtb3ZlZCB0byB0aGUgZW5kIG9mIHRoZSBs
aXN0LiAgVGhlCi0gKiBNZXRhTW9kZSBzdHJpbmcgc2hvdWxkIGhhdmUgdGhlIHNhbWUgc3ludGF4
IGFzIHRoZSBNZXRhTW9kZSBYCi0gKiBjb25maWd1cmF0aW9uIG9wdGlvbiwgYXMgZG9jdW1lbnRl
ZCBpbiB0aGUgTlZJRElBIGRyaXZlciBSRUFETUUuCi0KLSAqIFRoZSBNZXRhTW9kZSBzdHJpbmcg
bXVzdCBiZSBwcmVwZW5kZWQgd2l0aCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0Ci0gKiBvZiAidG9r
ZW49dmFsdWUiIHBhaXJzLCBzZXBhcmF0ZWQgZnJvbSB0aGUgTWV0YU1vZGUgc3RyaW5nIGJ5ICI6
OiIuCi0gKiBDdXJyZW50bHksIHRoZSBvbmx5IHZhbGlkIHRva2VuIGlzICJpbmRleCIsIHdoaWNo
IGluZGljYXRlcyB3aGVyZQotICogaW4gdGhlIE1ldGFNb2RlIGxpc3QgdGhlIE1ldGFNb2RlIHNo
b3VsZCBiZSBtb3ZlZCB0by4KLSAqCi0gKiBPdGhlciB0b2tlbnMgbWF5IGJlIGFkZGVkIGluIHRo
ZSBmdXR1cmUuCi0gKgotICogRS5nLiwKLSAqICAiaW5kZXg9NSA6OiBDUlQtMDogMTAyNHg3Njgg
QDEwMjR4NzY4ICswKzAiCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19NT1ZFX01FVEFN
T0RFIDIzIC8qIC1XLS0gKi8KLQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HX1ZBTElEX0hPUklaX1NZ
TkNfUkFOR0VTIC0gcmV0dXJucyB0aGUgdmFsaWQKLSAqIGhvcml6b250YWwgc3luYyByYW5nZXMg
dXNlZCB0byBwZXJmb3JtIG1vZGUgdmFsaWRhdGlvbiBmb3IgdGhlCi0gKiBzcGVjaWZpZWQgZGlz
cGxheSBkZXZpY2UuICBUaGUgcmFuZ2VzIGFyZSBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlCi0g
KiAiSG9yaXpTeW5jIiBYIGNvbmZpZyBvcHRpb246Ci0gKgotICogICAiaG9yaXpzeW5jLXJhbmdl
IG1heSBiZSBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGVpdGhlciBkaXNjcmV0ZQotICogICB2
YWx1ZXMgb3IgcmFuZ2VzIG9mIHZhbHVlcy4gIEEgcmFuZ2Ugb2YgdmFsdWVzIGlzIHR3byB2YWx1
ZXMKLSAqICAgc2VwYXJhdGVkIGJ5IGEgZGFzaC4iCi0gKgotICogVGhlIHZhbHVlcyBhcmUgaW4g
a0h6LgotICoKLSAqIEFkZGl0aW9uYWxseSwgdGhlIHN0cmluZyBtYXkgYmUgcHJlcGVuZGVkIHdp
dGggYSBjb21tYS1zZXBhcmF0ZWQKLSAqIGxpc3Qgb2YgInRva2VuPXZhbHVlIiBwYWlycywgc2Vw
YXJhdGVkIGZyb20gdGhlIEhvcml6U3luYyBzdHJpbmcgYnkKLSAqICI6OiIuICBWYWxpZCB0b2tl
bnM6Ci0gKgotICogICAgVG9rZW4gICAgIFZhbHVlCi0gKiAgICJzb3VyY2UiICAiZWRpZCIgICAg
IC0gSG9yaXpTeW5jIGlzIGZyb20gdGhlIGRpc3BsYXkgZGV2aWNlJ3MgRURJRAotICogICAgICAg
ICAgICAgInhjb25maWciICAtIEhvcml6U3luYyBpcyBmcm9tIHRoZSAiSG9yaXpTeW5jIiBlbnRy
eSBpbgotICogICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBNb25pdG9yIHNlY3Rpb24gb2Yg
dGhlIFggY29uZmlnIGZpbGUKLSAqICAgICAgICAgICAgICJvcHRpb24iICAgLSBIb3JpelN5bmMg
aXMgZnJvbSB0aGUgIkhvcml6U3luYyIgTlZJRElBIFgKLSAqICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25maWcgb3B0aW9uCi0gKiAgICAgICAgICAgICAidHdpbnZpZXciIC0gSG9yaXpTeW5j
IGlzIGZyb20gdGhlICJTZWNvbmRNb25pdG9ySG9yaXpTeW5jIgotICogICAgICAgICAgICAgICAg
ICAgICAgICAgIE5WSURJQSBYIGNvbmZpZyBvcHRpb24KLSAqICAgICAgICAgICAgICJidWlsdGlu
IiAgLSBIb3JpelN5bmMgaXMgZnJvbSBOVklESUEgWCBkcml2ZXIgYnVpbHRpbgotICogICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgdmFsdWVzCi0gKgotICogQWRkaXRpb25hbCB0b2tl
bnMgYW5kL29yIHZhbHVlcyBtYXkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4KLSAqCi0gKiBFeGFt
cGxlOiAic291cmNlPWVkaWQgOjogMzAuMDAwLTYyLjAwMCIKLSAqLwotCi0jZGVmaW5lIE5WX0NU
UkxfU1RSSU5HX1ZBTElEX0hPUklaX1NZTkNfUkFOR0VTIDI0IC8qIFItREcgKi8KLQotLyoKLSAq
IE5WX0NUUkxfU1RSSU5HX1ZBTElEX1ZFUlRfUkVGUkVTSF9SQU5HRVMgLSByZXR1cm5zIHRoZSB2
YWxpZAotICogdmVydGljYWwgcmVmcmVzaCByYW5nZXMgdXNlZCB0byBwZXJmb3JtIG1vZGUgdmFs
aWRhdGlvbiBmb3IgdGhlCi0gKiBzcGVjaWZpZWQgZGlzcGxheSBkZXZpY2UuICBUaGUgcmFuZ2Vz
IGFyZSBpbiB0aGUgc2FtZSBmb3JtYXQgYXMgdGhlCi0gKiAiVmVydFJlZnJlc2giIFggY29uZmln
IG9wdGlvbjoKLSAqCi0gKiAgICJ2ZXJ0cmVmcmVzaC1yYW5nZSBtYXkgYmUgYSBjb21tYSBzZXBh
cmF0ZWQgbGlzdCBvZiBlaXRoZXIgZGlzY3JldGUKLSAqICAgIHZhbHVlcyBvciByYW5nZXMgb2Yg
dmFsdWVzLiAgQSByYW5nZSBvZiB2YWx1ZXMgaXMgdHdvIHZhbHVlcwotICogICAgc2VwYXJhdGVk
IGJ5IGEgZGFzaC4iCi0gKgotICogVGhlIHZhbHVlcyBhcmUgaW4gSHouCi0gKgotICogQWRkaXRp
b25hbGx5LCB0aGUgc3RyaW5nIG1heSBiZSBwcmVwZW5kZWQgd2l0aCBhIGNvbW1hLXNlcGFyYXRl
ZAotICogbGlzdCBvZiAidG9rZW49dmFsdWUiIHBhaXJzLCBzZXBhcmF0ZWQgZnJvbSB0aGUgVmVy
dFJlZnJlc2ggc3RyaW5nIGJ5Ci0gKiAiOjoiLiAgVmFsaWQgdG9rZW5zOgotICoKLSAqICAgIFRv
a2VuICAgICBWYWx1ZQotICogICAic291cmNlIiAgImVkaWQiICAgICAtIFZlcnRSZWZyZXNoIGlz
IGZyb20gdGhlIGRpc3BsYXkgZGV2aWNlJ3MgRURJRAotICogICAgICAgICAgICAgInhjb25maWci
ICAtIFZlcnRSZWZyZXNoIGlzIGZyb20gdGhlICJWZXJ0UmVmcmVzaCIgZW50cnkgaW4KLSAqICAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGUgTW9uaXRvciBzZWN0aW9uIG9mIHRoZSBYIGNvbmZp
ZyBmaWxlCi0gKiAgICAgICAgICAgICAib3B0aW9uIiAgIC0gVmVydFJlZnJlc2ggaXMgZnJvbSB0
aGUgIlZlcnRSZWZyZXNoIiBOVklESUEgWAotICogICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bmZpZyBvcHRpb24KLSAqICAgICAgICAgICAgICJ0d2ludmlldyIgLSBWZXJ0UmVmcmVzaCBpcyBm
cm9tIHRoZSAiU2Vjb25kTW9uaXRvclZlcnRSZWZyZXNoIgotICogICAgICAgICAgICAgICAgICAg
ICAgICAgIE5WSURJQSBYIGNvbmZpZyBvcHRpb24KLSAqICAgICAgICAgICAgICJidWlsdGluIiAg
LSBWZXJ0UmVmcmVzaCBpcyBmcm9tIE5WSURJQSBYIGRyaXZlciBidWlsdGluCi0gKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdCB2YWx1ZXMKLSAqCi0gKiBBZGRpdGlvbmFsIHRva2Vu
cyBhbmQvb3IgdmFsdWVzIG1heSBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLgotICoKLSAqIEV4YW1w
bGU6ICJzb3VyY2U9ZWRpZCA6OiA1MC4wMDAtNzUuMDAwIgotICovCi0KLSNkZWZpbmUgTlZfQ1RS
TF9TVFJJTkdfVkFMSURfVkVSVF9SRUZSRVNIX1JBTkdFUyAyNSAvKiBSLURHICovCi0KLS8qCi0g
KiBOVl9DVFJMX1NUUklOR19YSU5FUkFNQV9TQ1JFRU5fSU5GTyAtIHJldHVybnMgdGhlIHBoeXNp
Y2FsIFggU2NyZWVuJ3MKLSAqIGluaXRpYWwgcG9zaXRpb24gYW5kIHNpemUgKGluIGFic29sdXRl
IGNvb3JkaW5hdGVzKSB3aXRoaW4gdGhlIFhpbmVyYW1hCi0gKiBkZXNrdG9wIGFzIHRoZSAidG9r
ZW49dmFsdWUiIHN0cmluZzogICJ4PSMsIHk9Iywgd2lkdGg9IywgaGVpZ2h0PSMiCi0gKgotICog
UXVlcnlpbmcgdGhpcyBhdHRyaWJ1dGUgcmV0dXJucyBGQUxTRSBpZiBOVl9DVFJMX1hJTkVSQU1B
IGlzIG5vdAotICogTlZfQ1RSTF9YSU5FUkFNQV9PTi4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxf
U1RSSU5HX1hJTkVSQU1BX1NDUkVFTl9JTkZPIDI2IC8qIFItLS0gKi8KLQotLyoKLSAqIE5WX0NU
UkxfU1RSSU5HX1RXSU5WSUVXX1hJTkVSQU1BX0lORk9fT1JERVIgLSB1c2VkIHRvIHNwZWNpZnkg
dGhlCi0gKiBvcmRlciB0aGF0IGRpc3BsYXkgZGV2aWNlcyB3aWxsIGJlIHJldHVybmVkIHZpYSBY
aW5lcmFtYSB3aGVuCi0gKiBudmlkaWFYaW5lcmFtYUluZm8gaXMgZW5hYmxlZC4gIEZvbGxvd3Mg
dGhlIHNhbWUgc3ludGF4IGFzIHRoZQotICogbnZpZGlhWGluZXJhbWFJbmZvT3JkZXIgWCBjb25m
aWcgb3B0aW9uLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfTlZJRElBX1hJTkVSQU1B
X0lORk9fT1JERVIgMjcgLyogUlctLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1RXSU5W
SUVXX1hJTkVSQU1BX0lORk9fT1JERVIgXAotICAgIE5WX0NUUkxfU1RSSU5HX05WSURJQV9YSU5F
UkFNQV9JTkZPX09SREVSIC8qIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eTogKi8KLQotLyoK
LSAqIE5WX0NUUkxfU1RSSU5HX1NMSV9NT0RFIC0gcmV0dXJucyBhIHN0cmluZyBkZXNjcmliaW5n
IHRoZSBjdXJyZW50Ci0gKiBTTEkgbW9kZSwgaWYgYW55LCBvciBGQUxTRSBpZiBTTEkgaXMgbm90
IGN1cnJlbnRseSBlbmFibGVkLgotICoKLSAqIFRoaXMgc3RyaW5nIHNob3VsZCBiZSB1c2VkIGZv
ciBpbmZvcm1hdGlvbmFsIHB1cnBvc2VzIG9ubHksIGFuZAotICogc2hvdWxkIG5vdCBiZSB1c2Vk
IHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gU0xJIG1vZGVzLCBvdGhlciB0aGFuIHRvCi0gKiByZWNv
Z25pemUgd2hlbiBTTEkgaXMgZGlzYWJsZWQgKEZBTFNFIGlzIHJldHVybmVkKSBvcgotICogZW5h
YmxlZCAodGhlIHJldHVybmVkIHN0cmluZyBpcyBub24tTlVMTCBhbmQgZGVzY3JpYmVzIHRoZSBj
dXJyZW50Ci0gKiBTTEkgY29uZmlndXJhdGlvbikuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NU
UklOR19TTElfTU9ERSAyOCAvKiBSLS0tKi8KLQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HX1BFUkZP
Uk1BTkNFX01PREVTIC0gcmV0dXJucyBhIHN0cmluZyB3aXRoIGFsbCB0aGUKLSAqIHBlcmZvcm1h
bmNlIG1vZGVzIGRlZmluZWQgZm9yIHRoaXMgR1BVIGFsb25nIHdpdGggdGhlaXIgYXNzb2NpYXRl
ZAotICogTlYgQ2xvY2sgYW5kIE1lbW9yeSBDbG9jayB2YWx1ZXMuCi0gKgotICogRWFjaCBwZXJm
b3JtYW5jZSBtb2RlcyBhcmUgcmV0dXJuZWQgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZgot
ICogInRva2VuPXZhbHVlIiBwYWlycy4gIEVhY2ggc2V0IG9mIHBlcmZvcm1hbmNlIG1vZGUgdG9r
ZW5zIGFyZSBzZXBhcmF0ZWQKLSAqIGJ5IGEgIjsiLiAgVmFsaWQgdG9rZW5zOgotICoKLSAqICAg
IFRva2VuICAgICAgVmFsdWUKLSAqICAgInBlcmYiICAgICAgaW50ZWdlciAgIC0gdGhlIFBlcmZv
cm1hbmNlIGxldmVsCi0gKiAgICJudmNsb2NrIiAgIGludGVnZXIgICAtIHRoZSBHUFUgY2xvY2tz
IChpbiBNSHopIGZvciB0aGUgcGVyZiBsZXZlbAotICogICAibWVtY2xvY2siICBpbnRlZ2VyICAg
LSB0aGUgbWVtb3J5IGNsb2NrcyAoaW4gTUh6KSBmb3IgdGhlIHBlcmYgbGV2ZWwKLSAqCi0gKgot
ICogRXhhbXBsZToKLSAqCi0gKiAgIHBlcmY9MCwgbnZjbG9jaz01MDAsIG1lbWNsb2NrPTUwNSA7
IHBlcmY9MSwgbnZjbG9jaz02NTAsIG1lbWNsb2NrPTUwNQotICoKLSAqIFRoaXMgYXR0cmlidXRl
IG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRl
KCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRf
VFlQRV9YX1NDUkVFTiB0YXJnZXQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19QRVJG
T1JNQU5DRV9NT0RFUyAyOSAvKiBSLS1HICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19WQ1ND
X0ZBTl9TVEFUVVMgLSByZXR1cm5zIGEgc3RyaW5nIHdpdGggc3RhdHVzIG9mIGFsbCB0aGUKLSAq
IGZhbnMgaW4gdGhlIFZpc3VhbCBDb21wdXRpbmcgU3lzdGVtLCBpZiBzdWNoIGEgcXVlcnkgaXMg
c3VwcG9ydGVkLiAgRmFuCi0gKiBpbmZvcm1hdGlvbiBpcyByZXBvcnRlZCBhbG9uZyB3aXRoIGl0
cyB0YWNob21ldGVyIHJlYWRpbmcgKGluIFJQTSkgYW5kIGEKLSAqIGZsYWcgaW5kaWNhdGluZyB3
aGV0aGVyIHRoZSBmYW4gaGFzIGZhaWxlZCBvciBub3QuCi0gKgotICogVmFsaWQgdG9rZW5zOgot
ICoKLSAqICAgIFRva2VuICAgICAgVmFsdWUKLSAqICAgImZhbiIgICAgICAgaW50ZWdlciAgIC0g
dGhlIEZhbiBpbmRleAotICogICAic3BlZWQiICAgICBpbnRlZ2VyICAgLSB0aGUgdGFjaG9tZXRl
ciByZWFkaW5nIG9mIHRoZSBmYW4gaW4gcnBtCi0gKiAgICJmYWlsIiAgICAgIGludGVnZXIgICAt
IGZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgZmFuIGhhcyBmYWlsZWQKLSAqCi0gKiBFeGFt
cGxlOgotICoKLSAqICAgZmFuPTAsIHNwZWVkPTY5NCwgZmFpbD0wIDsgZmFuPTEsIHNwZWVkPTY5
MywgZmFpbD0wCi0gKgotICogVGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBxdWVyaWVkIHRocm91Z2gg
WE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRlKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9U
QVJHRVRfVFlQRV9WQ1NDIHRhcmdldC4KLSAqCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklO
R19WQ1NDX0ZBTl9TVEFUVVMgMzAgLyogUi0tLVYgKi8KLQotLyoKLSAqIE5WX0NUUkxfU1RSSU5H
X1ZDU0NfVEVNUEVSQVRVUkVTIC0gcmV0dXJucyBhIHN0cmluZyB3aXRoIGFsbCBUZW1wZXJhdHVy
ZQotICogcmVhZGluZ3MgaW4gdGhlIFZpc3VhbCBDb21wdXRpbmcgU3lzdGVtLCBpZiBzdWNoIGEg
cXVlcnkgaXMgc3VwcG9ydGVkLgotICogSW50YWtlLCBFeGhhdXN0IGFuZCBCb2FyZCBUZW1wZXJh
dHVyZSB2YWx1ZXMgYXJlIHJlcG9ydGVkIGluIENlbGNpdXMuCi0gKgotICogVmFsaWQgdG9rZW5z
OgotICoKLSAqICAgIFRva2VuICAgICAgVmFsdWUKLSAqICAgImludGFrZSIgICAgaW50ZWdlciAg
IC0gdGhlIGludGFrZSB0ZW1wZXJhdHVyZSBmb3IgdGhlIFZDUwotICogICAiZXhoYXVzdCIgICBp
bnRlZ2VyICAgLSB0aGUgZXhoYXVzdCB0ZW1wZXJhdHVyZSBmb3IgdGhlIFZDUwotICogICAiYm9h
cmQiICAgICBpbnRlZ2VyICAgLSB0aGUgYm9hcmQgdGVtcGVyYXR1cmUgb2YgdGhlIFZDUwotICoK
LSAqIEV4YW1wbGU6Ci0gKgotICogICBpbnRha2U9MjksIGV4aGF1c3Q9NDYsIGJvYXJkPTQxCi0g
KgotICogVGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5
VGFyZ2V0U3RyaW5nQXR0cmlidXRlKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9W
Q1NDIHRhcmdldC4KLSAqCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19WQ1NDX1RFTVBF
UkFUVVJFUyAzMSAvKiBSLS0tViAqLwotCi0vKgotICogTlZfQ1RSTF9TVFJJTkdfVkNTQ19QU1Vf
SU5GTyAtIHJldHVybnMgYSBzdHJpbmcgd2l0aCBhbGwgUG93ZXIgU3VwcGx5IFVuaXQKLSAqIHJl
bGF0ZWQgcmVhZGluZ3MgaW4gdGhlIFZpc3VhbCBDb21wdXRpbmcgU3lzdGVtLCBpZiBzdWNoIGEg
cXVlcnkgaXMKLSAqIHN1cHBvcnRlZC4gIEN1cnJlbnQgaW4gYW1wZXJlcywgUG93ZXIgaW4gd2F0
dHMsIFZvbHRhZ2UgaW4gdm9sdHMgYW5kIFBTVQotICogc3RhdGUgbWF5IGJlIHJlcG9ydGVkLiAg
Tm90IGFsbCBQU1UgdHlwZXMgc3VwcG9ydCBhbGwgb2YgdGhlc2UgdmFsdWVzLCBhbmQKLSAqIHRo
ZXJlZm9yZSBzb21lIHJlYWRpbmdzIG1heSBiZSB1bmtub3duLgotICoKLSAqIFZhbGlkIHRva2Vu
czoKLSAqCi0gKiAgICBUb2tlbiAgICAgIFZhbHVlCi0gKiAgICJjdXJyZW50IiAgIGludGVnZXIg
ICAtIHRoZSBjdXJyZW50IGRyYXduIGluIGFtcGVyZXMgYnkgdGhlIFZDUwotICogICAicG93ZXIi
ICAgICBpbnRlZ2VyICAgLSB0aGUgcG93ZXIgZHJhd24gaW4gd2F0dHMgYnkgdGhlIFZDUwotICog
ICAidm9sdGFnZSIgICBpbnRlZ2VyICAgLSB0aGUgdm9sdGFnZSByZWFkaW5nIG9mIHRoZSBWQ1MK
LSAqICAgInN0YXRlIiAgICAgaW50ZWdlciAgIC0gZmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIFBT
VSBpcyBvcGVyYXRpbmcgbm9ybWFsbHkKLSAqCi0gKiBFeGFtcGxlOgotICoKLSAqICAgY3VycmVu
dD0xMCwgcG93ZXI9MTUsIHZvbHRhZ2U9dW5rbm93biwgc3RhdGU9bm9ybWFsCi0gKgotICogVGhp
cyBhdHRyaWJ1dGUgbXVzdCBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3Ry
aW5nQXR0cmlidXRlKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9WQ1NDIHRhcmdl
dC4KLSAqCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19WQ1NDX1BTVV9JTkZPIDMyIC8q
IFItLS1WICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19HVklPX1ZJREVPX0ZPUk1BVF9OQU1F
IC0gcXVlcnkgdGhlIG5hbWUgZm9yIHRoZSBzcGVjaWZpZWQKLSAqIE5WX0NUUkxfR1ZJT19WSURF
T19GT1JNQVRfKi4gIFNvIHRoYXQgdGhpcyBjYW4gYmUgcXVlcmllZCB3aXRoIGV4aXN0aW5nCi0g
KiBpbnRlcmZhY2VzLCBYTlZDVFJMUXVlcnlTdHJpbmdBdHRyaWJ1dGUoKSBzaG91bGQgYmUgdXNl
ZCwgYW5kIHRoZSB2aWRlbwotICogZm9ybWF0IHNwZWNpZmllZCBpbiB0aGUgZGlzcGxheV9tYXNr
IGZpZWxkOyBlZzoKLSAqCi0gKiBYTlZDVFJMUXVlcnlTdHJpbmdBdHRyaWJ1dGUoZHB5LAotICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlbiwKLSAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzcyMFBfNjBfMDBfU01QVEUyOTYs
Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1B
VF9OQU1FLAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lKTsKLSAqLwotCi0j
ZGVmaW5lIE5WX0NUUkxfU1RSSU5HX0dWSU9fVklERU9fRk9STUFUX05BTUUgMzMgLyogUi0tR0kg
Ki8KLQotLyoKLSAqIFRoZSBmb2xsb3dpbmcgaXMgZGVwcmVjYXRlZDsgdXNlIE5WX0NUUkxfU1RS
SU5HX0dWSU9fVklERU9fRk9STUFUX05BTUUsCi0gKiBpbnN0ZWFkCi0gKi8KLSNkZWZpbmUgTlZf
Q1RSTF9TVFJJTkdfR1ZPX1ZJREVPX0ZPUk1BVF9OQU1FIDMzIC8qIFItLS0gKi8KLQotLyoKLSAq
IE5WX0NUUkxfU1RSSU5HX0dQVV9DVVJSRU5UX0NMT0NLX0ZSRVFTIC0gcmV0dXJucyBhIHN0cmlu
ZyB3aXRoIHRoZQotICogYXNzb2NpYXRlZCBOViBDbG9jaywgTWVtb3J5IENsb2NrIGFuZCBQcm9j
ZXNzb3IgQ2xvY2sgdmFsdWVzLgotICoKLSAqIEN1cnJlbnQgdmFsaWQgdG9rZW5zIGFyZSAibnZj
bG9jayIsICJtZW1jbG9jayIsIGFuZCAicHJvY2Vzc29yY2xvY2siLgotICogTm90IGFsbCB0b2tl
bnMgd2lsbCBiZSByZXBvcnRlZCBvbiBhbGwgR1BVcywgYW5kIGFkZGl0aW9uYWwgdG9rZW5zCi0g
KiBtYXkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4KLSAqCi0gKiBDbG9jayB2YWx1ZXMgYXJlIHJl
dHVybmVkIGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YKLSAqICJ0b2tlbj12YWx1ZSIgcGFp
cnMuCi0gKiBWYWxpZCB0b2tlbnM6Ci0gKgotICogICAgVG9rZW4gICAgICAgICAgIFZhbHVlCi0g
KiAgICJudmNsb2NrIiAgICAgICAgaW50ZWdlciAtIHRoZSBHUFUgY2xvY2tzIChpbiBNSHopIGZv
ciB0aGUgY3VycmVudAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmIGxldmVs
Ci0gKiAgICJtZW1jbG9jayIgICAgICAgaW50ZWdlciAtIHRoZSBtZW1vcnkgY2xvY2tzIChpbiBN
SHopIGZvciB0aGUgY3VycmVudAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJm
IGxldmVsCi0gKiAgICJwcm9jZXNzb3JjbG9jayIgaW50ZWdlciAtIHRoZSBwcm9jZXNzb3IgY2xv
Y2tzIChpbiBNSHopIGZvciB0aGUgcGVyZiBsZXZlbAotICoKLSAqCi0gKiBFeGFtcGxlOgotICoK
LSAqICAgIG52Y2xvY2s9NDU5LCBtZW1jbG9jaz00MDAsIHByb2Nlc3NvcmNsb2NrPTkxOAotICoK
LSAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFy
Z2V0U3RyaW5nQXR0cmlidXRlKCkKLSAqIHVzaW5nIGFuIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BV
IG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0LgotICovCi0KLSNkZWZpbmUg
TlZfQ1RSTF9TVFJJTkdfR1BVX0NVUlJFTlRfQ0xPQ0tfRlJFUVMgMzQgLyogUlctRyAqLwotCi0v
KgotICogTlZfQ1RSTF9TVFJJTkdfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9IQVJEV0FSRV9S
RVZJU0lPTiAtIFJldHVybnMgdGhlCi0gKiBoYXJkd2FyZSByZXZpc2lvbiBvZiB0aGUgM0QgVmlz
aW9uIFBybyB0cmFuc2NlaXZlci4KLSAqLwotI2RlZmluZSBOVl9DVFJMX1NUUklOR18zRF9WSVNJ
T05fUFJPX1RSQU5TQ0VJVkVSX0hBUkRXQVJFX1JFVklTSU9OIDM1IC8qIFItLVQgKi8KLQotLyoK
LSAqIE5WX0NUUkxfU1RSSU5HXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJfRklSTVdBUkVfVkVS
U0lPTl9BIC0gUmV0dXJucyB0aGUKLSAqIGZpcm13YXJlIHZlcnNpb24gb2YgY2hpcCBBIG9mIHRo
ZSAzRCBWaXNpb24gUHJvIHRyYW5zY2VpdmVyLgotICovCi0jZGVmaW5lIE5WX0NUUkxfU1RSSU5H
XzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJfRklSTVdBUkVfVkVSU0lPTl9BIDM2IC8qIFItLVQg
Ki8KLQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJfRklS
TVdBUkVfREFURV9BIC0gUmV0dXJucyB0aGUKLSAqIGRhdGUgb2YgdGhlIGZpcm13YXJlIG9mIGNo
aXAgQSBvZiB0aGUgM0QgVmlzaW9uIFBybyB0cmFuc2NlaXZlci4KLSAqLwotI2RlZmluZSBOVl9D
VFJMX1NUUklOR18zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX0ZJUk1XQVJFX0RBVEVfQSAzNyAv
KiBSLS1UICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05fUFJPX1RSQU5TQ0VJ
VkVSX0ZJUk1XQVJFX1ZFUlNJT05fQiAtIFJldHVybnMgdGhlCi0gKiBmaXJtd2FyZSB2ZXJzaW9u
IG9mIGNoaXAgQiBvZiB0aGUgM0QgVmlzaW9uIFBybyB0cmFuc2NlaXZlci4KLSAqLwotI2RlZmlu
ZSBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX0ZJUk1XQVJFX1ZFUlNJ
T05fQiAzOCAvKiBSLS1UICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05fUFJP
X1RSQU5TQ0VJVkVSX0ZJUk1XQVJFX0RBVEVfQiAtIFJldHVybnMgdGhlCi0gKiBkYXRlIG9mIHRo
ZSBmaXJtd2FyZSBvZiBjaGlwIEIgb2YgdGhlIDNEIFZpc2lvbiBQcm8gdHJhbnNjZWl2ZXIuCi0g
Ki8KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9GSVJN
V0FSRV9EQVRFX0IgMzkgLyogUi0tVCAqLwotCi0vKgotICogTlZfQ1RSTF9TVFJJTkdfM0RfVklT
SU9OX1BST19UUkFOU0NFSVZFUl9BRERSRVNTIC0gUmV0dXJucyB0aGUgUkYgYWRkcmVzcwotICog
b2YgdGhlIDNEIFZpc2lvbiBQcm8gdHJhbnNjZWl2ZXIuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9T
VFJJTkdfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9BRERSRVNTIDQwIC8qIFItLVQgKi8KLQot
LyoKLSAqIE5WX0NUUkxfU1RSSU5HXzNEX1ZJU0lPTl9QUk9fR0xBU1NFU19GSVJNV0FSRV9WRVJT
SU9OX0EgLSBSZXR1cm5zIHRoZQotICogZmlybXdhcmUgdmVyc2lvbiBvZiBjaGlwIEEgb2YgdGhl
IGdsYXNzZXMuCi0gKiBVc2UgdGhlIGRpc3BsYXlfbWFzayBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB0
aGUgZ2xhc3NlcyBpZC4KLSAqLwotI2RlZmluZSBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05fUFJP
X0dMQVNTRVNfRklSTVdBUkVfVkVSU0lPTl9BIDQxIC8qIFItLVQgKi8KLQotLyoKLSAqIE5WX0NU
UkxfU1RSSU5HXzNEX1ZJU0lPTl9QUk9fR0xBU1NFU19GSVJNV0FSRV9EQVRFX0EgLSBSZXR1cm5z
IHRoZQotICogZGF0ZSBvZiB0aGUgZmlybXdhcmUgb2YgY2hpcCBBIG9mIHRoZSBnbGFzc2VzLgot
ICogVXNlIHRoZSBkaXNwbGF5X21hc2sgcGFyYW1ldGVyIHRvIHNwZWNpZnkgdGhlIGdsYXNzZXMg
aWQuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfM0RfVklTSU9OX1BST19HTEFTU0VTX0ZJ
Uk1XQVJFX0RBVEVfQSA0MiAvKiBSLS1UICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR18zRF9W
SVNJT05fUFJPX0dMQVNTRVNfQUREUkVTUyAtIFJldHVybnMgdGhlIFJGIGFkZHJlc3MKLSAqIG9m
IHRoZSBnbGFzc2VzLgotICogVXNlIHRoZSBkaXNwbGF5X21hc2sgcGFyYW1ldGVyIHRvIHNwZWNp
ZnkgdGhlIGdsYXNzZXMgaWQuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfM0RfVklTSU9O
X1BST19HTEFTU0VTX0FERFJFU1MgNDMgLyogUi0tVCAqLwotCi0vKgotICogTlZfQ1RSTF9TVFJJ
TkdfM0RfVklTSU9OX1BST19HTEFTU0VTX05BTUUgLSBDb250cm9scyB0aGUgbmFtZSB0aGUKLSAq
IGdsYXNzZXMgc2hvdWxkIHVzZS4KLSAqIFVzZSB0aGUgZGlzcGxheV9tYXNrIHBhcmFtZXRlciB0
byBzcGVjaWZ5IHRoZSBnbGFzc2VzIGlkLgotICogR2xhc3NlcycgbmFtZSBzaG91bGQgc3RhcnQg
YW5kIGVuZCB3aXRoIGFuIGFscGhhLW51bWVyaWMgY2hhcmFjdGVyLgotICovCi0jZGVmaW5lIE5W
X0NUUkxfU1RSSU5HXzNEX1ZJU0lPTl9QUk9fR0xBU1NFU19OQU1FIDQ0IC8qIFJXLVQgKi8KLQot
LyoKLSAqIE5WX0NUUkxfU1RSSU5HX0NVUlJFTlRfTUVUQU1PREVfVkVSU0lPTl8yIC0gUmV0dXJu
cyB0aGUgbWV0YW1vZGUgY3VycmVudGx5Ci0gKiBiZWluZyB1c2VkIGJ5IHRoZSBzcGVjaWZpZWQg
WCBzY3JlZW4uICBUaGUgTWV0YU1vZGUgc3RyaW5nIGhhcyB0aGUgc2FtZQotICogc3ludGF4IGFz
IHRoZSBNZXRhTW9kZSBYIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBhcyBkb2N1bWVudGVkIGluIHRo
ZSBOVklESUEKLSAqIGRyaXZlciBSRUFETUUuICBBbHNvLCBzZWUgTlZfQ1RSTF9CSU5BUllfREFU
QV9NRVRBTU9ERVNfVkVSU0lPTl8yIGZvciBtb3JlCi0gKiBkZXRhaWxzIG9uIHRoZSBiYXNlIHN5
bnRheC4KLSAqCi0gKiBUaGUgcmV0dXJuZWQgc3RyaW5nIG1heSBhbHNvIGJlIHByZXBlbmRlZCB3
aXRoIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YKLSAqICJ0b2tlbj12YWx1ZSIgcGFpcnMsIHNl
cGFyYXRlZCBmcm9tIHRoZSBNZXRhTW9kZSBzdHJpbmcgYnkgIjo6Ii4KLSAqLwotI2RlZmluZSBO
Vl9DVFJMX1NUUklOR19DVVJSRU5UX01FVEFNT0RFX1ZFUlNJT05fMiA0NSAvKiBSVy0tICovCi0K
LS8qCi0gKiBOVl9DVFJMX1NUUklOR19ESVNQTEFZX05BTUVfVFlQRV9CQVNFTkFNRSAtIFJldHVy
bnMgYSB0eXBlIG5hbWUgZm9yIHRoZQotICogZGlzcGxheSBkZXZpY2UgKCJDUlQiLCAiREZQIiwg
b3IgIlRWIikuICBIb3dldmVyLCBub3RlIHRoYXQgdGhlIGRldGVybWluYXRpb24KLSAqIG9mIHRo
ZSBuYW1lIGlzIGJhc2VkIG9uIHRoZSBwcm90b2NvbCB0aHJvdWdoIHdoaWNoIHRoZSBYIGRyaXZl
ciBjb21tdW5pY2F0ZXMKLSAqIHRvIHRoZSBkaXNwbGF5IGRldmljZS4gIEUuZy4sIGlmIHRoZSBk
cml2ZXIgY29tbXVuaWNhdGVzIHVzaW5nIFZHQSAsdGhlbiB0aGUKLSAqIGJhc2VuYW1lIGlzICJD
UlQiOyBpZiB0aGUgZHJpdmVyIGNvbW11bmljYXRlcyB1c2luZyBUTURTLCBMVkRTLCBvciBEUCwg
dGhlbgotICogdGhlIG5hbWUgaXMgIkRGUCIuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdf
RElTUExBWV9OQU1FX1RZUEVfQkFTRU5BTUUgNDYgLyogUi1ELSAqLwotCi0vKgotICogTlZfQ1RS
TF9TVFJJTkdfRElTUExBWV9OQU1FX1RZUEVfSUQgLSBSZXR1cm5zIHRoZSB0eXBlLWJhc2VkIG5h
bWUgKyBJRCBmb3IKLSAqIHRoZSBkaXNwbGF5IGRldmljZSwgZS5nLiAiQ1JULTAiLCAiREZQLTEi
LCAiVFYtMiIuICBJZiB0aGlzIGRldmljZSBpcyBhCi0gKiBEaXNwbGF5UG9ydCAxLjIgZGV2aWNl
LCB0aGVuIHRoaXMgbmFtZSB3aWxsIGFsc28gYmUgcHJlcGVuZGVkIHdpdGggdGhlCi0gKiBkZXZp
Y2UncyBwb3J0IGFkZHJlc3MgbGlrZSBzbzogIkRGUC0xLjAuMS4yLjMiLiAgU2VlCi0gKiBOVl9D
VFJMX1NUUklOR19ESVNQTEFZX05BTUVfVFlQRV9CQVNFTkFNRSBmb3IgbW9yZSBpbmZvcm1hdGlv
biBhYm91dCB0aGUKLSAqIGNvbnN0cnVjdGlvbiBvZiB0eXBlLWJhc2VkIG5hbWVzLgotICovCi0j
ZGVmaW5lIE5WX0NUUkxfU1RSSU5HX0RJU1BMQVlfTkFNRV9UWVBFX0lEIDQ3IC8qIFItRC0gKi8K
LQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HX0RJU1BMQVlfTkFNRV9EUF9HVUlEIC0gUmV0dXJucyB0
aGUgR1VJRCBvZiB0aGUgRGlzcGxheVBvcnQKLSAqIGRpc3BsYXkgZGV2aWNlLiAgZS5nLiAiRFAt
R1VJRC1mMTZhNWJkZS03OWYzLTExZTEtYjJhZS04YjVhODk2OWJhOWMiCi0gKgotICogVGhlIGRp
c3BsYXkgZGV2aWNlIG11c3QgYmUgYSBEaXNwbGF5UG9ydCAxLjIgZGV2aWNlLgotICovCi0jZGVm
aW5lIE5WX0NUUkxfU1RSSU5HX0RJU1BMQVlfTkFNRV9EUF9HVUlEIDQ4IC8qIFItRC0gKi8KLQot
LyoKLSAqIE5WX0NUUkxfU1RSSU5HX0RJU1BMQVlfTkFNRV9FRElEX0hBU0ggLSBSZXR1cm5zIHRo
ZSBTSEEtMSBoYXNoIG9mIHRoZQotICogZGlzcGxheSBkZXZpY2UncyBFRElEIGluIDgtNC00LTQt
MTIgVUlEIGZvcm1hdC4gZS5nLgotICogIkRQWS1FRElELWYxNmE1YmRlLTc5ZjMtMTFlMS1iMmFl
LThiNWE4OTY5YmE5YyIKLSAqCi0gKiBUaGUgZGlzcGxheSBkZXZpY2UgbXVzdCBoYXZlIGEgdmFs
aWQgRURJRC4KLSAqLwotI2RlZmluZSBOVl9DVFJMX1NUUklOR19ESVNQTEFZX05BTUVfRURJRF9I
QVNIIDQ5IC8qIFItRC0gKi8KLQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HX0RJU1BMQVlfTkFNRV9U
QVJHRVRfSU5ERVggLSBSZXR1cm5zIHRoZSBjdXJyZW50IE5WLUNPTlRST0wKLSAqIHRhcmdldCBJ
RCAobmFtZSkgb2YgdGhlIGRpc3BsYXkgZGV2aWNlLiAgZS5nLiAiRFBZLTEiLCAiRFBZLTQiCi0g
KgotICogVGhpcyBuYW1lIGZvciB0aGUgZGlzcGxheSBkZXZpY2UgaXMgbm90IGd1YXJlbnRlZWQg
dG8gYmUgdGhlIHNhbWUgYmV0d2VlbgotICogZGlmZmVyZW50IHJ1bnMgb2YgdGhlIFggc2VydmVy
LgotICovCi0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HX0RJU1BMQVlfTkFNRV9UQVJHRVRfSU5ERVgg
NTAgLyogUi1ELSAqLwotCi0vKgotICogTlZfQ1RSTF9TVFJJTkdfRElTUExBWV9OQU1FX1JBTkRS
IC0gUmV0dXJucyB0aGUgUmFuZFIgb3V0cHV0IG5hbWUgZm9yIHRoZQotICogZGlzcGxheSBkZXZp
Y2UuICBlLmcuICAiVkdBLTEiLCAiRFZJLUktMCIsICJEVkktRC0zIiwgIkxWRFMtMSIsICJEUC0y
IiwKLSAqICJIRE1JLTMiLCAiZURQLTYiLiAgVGhpcyBuYW1lIHNob3VsZCBtYXRjaCAgSWYgdGhp
cyBkZXZpY2UgaXMgYSBEaXNwbGF5UG9ydAotICogMS4yIGRldmljZSwgdGhlbiB0aGlzIG5hbWUg
d2lsbCBhbHNvIGJlIHByZXBlbmRlZCB3aXRoIHRoZSBkZXZpY2UncyBwb3J0Ci0gKiBhZGRyZXNz
IGxpa2Ugc286ICJEVkktSS0zLjAuMS4yLjMiCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdf
RElTUExBWV9OQU1FX1JBTkRSIDUxIC8qIFItRC0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklO
R19MQVNUX0FUVFJJQlVURSBOVl9DVFJMX1NUUklOR19ESVNQTEFZX05BTUVfUkFORFIKLQotLyoq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqLwotCi0vKgotICogQmluYXJ5IERhdGEgQXR0cmlidXRlczoKLSAqCi0g
KiBCaW5hcnkgZGF0YSBhdHRyaWJ1dGVzIGNhbiBiZSBxdWVyeWllZCB0aHJvdWdoIHRoZSBYTlZD
VFJMUXVlcnlCaW5hcnlEYXRhKCkKLSAqIGFuZCBYTlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRh
KCkgZnVuY3Rpb24gY2FsbHMuCi0gKgotICogVGhlcmUgYXJlIGN1cnJlbnRseSBubyBiaW5hcnkg
ZGF0YSBhdHRyaWJ1dGVzIHRoYXQgY2FuIGJlIHNldC4KLSAqCi0gKiBVbmxlc3Mgb3RoZXJ3aXNl
IG5vdGVkLCBhbGwgQmluYXJ5IGRhdGEgYXR0cmlidXRlcyBjYW4gYmUgcXVlcmllZAotICogdXNp
bmcgYW4gTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQuICBBdHRyaWJ1dGVzIHRo
YXQgY2Fubm90IHRha2UKLSAqIGFuIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0
IGFsc28gY2Fubm90IGJlIHF1ZXJpZWQgdGhyb3VnaAotICogWE5WQ1RSTFF1ZXJ5QmluYXJ5RGF0
YSgpIChTaW5jZSBhbiBYIFNjcmVlbiB0YXJnZXQgaXMgYXNzdW1lZCkuCi0gKi8KLQotLyoKLSAq
IE5WX0NUUkxfQklOQVJZX0RBVEFfRURJRCAtIFJldHVybnMgYSBkaXNwbGF5IGRldmljZSdzIEVE
SUQgaW5mb3JtYXRpb24KLSAqIGRhdGEuCi0gKgotICogVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1
ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRhKCkKLSAqIHVzaW5nIGEg
TlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0
YXJnZXQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX0VESUQgMCAvKiBSLURH
ICovCi0KLS8qCi0gKiBOVl9DVFJMX0JJTkFSWV9EQVRBX01PREVMSU5FUyAtIFJldHVybnMgYSBk
aXNwbGF5IGRldmljZSdzIHN1cHBvcnRlZAotICogTW9kZUxpbmVzLiAgTW9kZUxpbmVzIGFyZSBy
ZXR1cm5lZCBpbiBhIGJ1ZmZlciwgc2VwYXJhdGVkIGJ5IGEgc2luZ2xlCi0gKiAnXDAnIGFuZCB0
ZXJtaW5hdGVkIGJ5IHR3byBjb25zZWN1dGl2ZSAnXDAnIHMgbGlrZSBzbzoKLSAqCi0gKiAgIk1v
ZGVMaW5lIDFcME1vZGVMaW5lIDJcME1vZGVMaW5lIDNcMExhc3QgTW9kZUxpbmVcMFwwIgotICoK
LSAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFy
Z2V0QmluYXJ5RGF0YSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIG9yIE5W
X0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0LgotICoKLSAqIEVhY2ggTW9kZUxpbmUg
c3RyaW5nIG1heSBiZSBwcmVwZW5kZWQgd2l0aCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0Ci0gKiBv
ZiAidG9rZW49dmFsdWUiIHBhaXJzLCBzZXBhcmF0ZWQgZnJvbSB0aGUgTW9kZUxpbmUgc3RyaW5n
IHdpdGggYQotICogIjo6Ii4gIFZhbGlkIHRva2VuczoKLSAqCi0gKiAgICBUb2tlbiAgICBWYWx1
ZQotICogICAic291cmNlIiAieHNlcnZlciIgICAgLSB0aGUgTW9kZUxpbmUgaXMgZnJvbSB0aGUg
Y29yZSBYIHNlcnZlcgotICogICAgICAgICAgICAieGNvbmZpZyIgICAgLSB0aGUgTW9kZUxpbmUg
d2FzIHNwZWNpZmllZCBpbiB0aGUgWCBjb25maWcgZmlsZQotICogICAgICAgICAgICAiYnVpbHRp
biIgICAgLSB0aGUgTlZJRElBIGRyaXZlciBwcm92aWRlZCB0aGlzIGJ1aWx0aW4gTW9kZUxpbmUK
LSAqICAgICAgICAgICAgInZlc2EiICAgICAgIC0gdGhpcyBpcyBhIFZFU0Egc3RhbmRhcmQgTW9k
ZUxpbmUKLSAqICAgICAgICAgICAgImVkaWQiICAgICAgIC0gdGhlIE1vZGVMaW5lIHdhcyBpbiB0
aGUgZGlzcGxheSBkZXZpY2UncyBFRElECi0gKiAgICAgICAgICAgICJudi1jb250cm9sIiAtIHRo
ZSBNb2RlTGluZSB3YXMgc3BlY2lmaWVkIHZpYSBOVi1DT05UUk9MCi0gKgotICogICAieGNvbmZp
Zy1uYW1lIiAgICAgICAgLSBmb3IgTW9kZUxpbmVzIHRoYXQgd2VyZSBzcGVjaWZpZWQgaW4gdGhl
IFggY29uZmlnCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUsIHRoaXMgaXMgdGhl
IG5hbWUgdGhlIFggY29uZmlnIGZpbGUKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2F2
ZSBmb3IgdGhlIE1vZGVMaW5lLgotICoKLSAqIE5vdGUgdGhhdCBhIE1vZGVMaW5lIGNhbiBoYXZl
IHNldmVyYWwgc291cmNlczsgdGhlICJzb3VyY2UiIHRva2VuCi0gKiBjYW4gYXBwZWFyIG11bHRp
cGxlIHRpbWVzIGluIHRoZSAidG9rZW49dmFsdWUiIHBhaXJzIGxpc3QuCi0gKiBBZGRpdGlvbmFs
IHNvdXJjZSB2YWx1ZXMgbWF5IGJlIHNwZWNpZmllZCBpbiB0aGUgZnV0dXJlLgotICoKLSAqIEFk
ZGl0aW9uYWwgdG9rZW5zIG1heSBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLCBzbyBpdCBpcyByZWNv
bW1lbmRlZAotICogdGhhdCBhbnkgdG9rZW4gcGFyc2VyIHByb2Nlc3NpbmcgdGhlIHJldHVybmVk
IHN0cmluZyBmcm9tCi0gKiBOVl9DVFJMX0JJTkFSWV9EQVRBX01PREVMSU5FUyBiZSBpbXBsZW1l
bnRlZCB0byBncmFjZWZ1bGx5IGlnbm9yZQotICogdW5yZWNvZ25pemVkIHRva2Vucy4KLSAqCi0g
KiBFLmcuLAotICoKLSAqICJzb3VyY2U9eHNlcnZlciwgc291cmNlPXZlc2EsIHNvdXJjZT1lZGlk
IDo6ICIxMDI0eDc2OF83MCIgIDc1LjAgIDEwMjQgMTA0OCAxMTg0IDEzMjggIDc2OCA3NzEKLSAq
IDc3NyA4MDYgIC1IU3luYyAtVlN5bmMiCi0gKiAic291cmNlPXhjb25maWcsIHhjb25maWctbmFt
ZT0xNjAweDEyMDBfNjAuMDAgOjogIjE2MDB4MTIwMF82MF8wIiAgMTYxLjAgIDE2MDAgMTcwNCAx
ODgwIDIxNjAKLSAqIDEyMDAgMTIwMSAxMjA0IDEyNDIgIC1IU3luYyArVlN5bmMiCi0gKi8KLQot
I2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX01PREVMSU5FUyAxIC8qIFItREcgKi8KLQotLyoK
LSAqIE5WX0NUUkxfQklOQVJZX0RBVEFfTUVUQU1PREVTIC0gUmV0dXJucyBhbiBYIFNjcmVlbidz
IHN1cHBvcnRlZAotICogTWV0YU1vZGVzLiAgTWV0YU1vZGVzIGFyZSByZXR1cm5lZCBpbiBhIGJ1
ZmZlciBzZXBhcmF0ZWQgYnkgYQotICogc2luZ2xlICdcMCcgYW5kIHRlcm1pbmF0ZWQgYnkgdHdv
IGNvbnNlY3V0aXZlICdcMCcgcyBsaWtlIHNvOgotICoKLSAqICAiTWV0YU1vZGUgMVwwTWV0YU1v
ZGUgMlwwTWV0YU1vZGUgM1wwTGFzdCBNZXRhTW9kZVwwXDAiCi0gKgotICogVGhlIE1ldGFNb2Rl
IHN0cmluZyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBzeW50YXggYXMgdGhlIE1ldGFNb2RlIFgKLSAq
IGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBhcyBkb2N1bWVudGVkIGluIHRoZSBOVklESUEgZHJpdmVy
IFJFQURNRS4KLQotICogRWFjaCBNZXRhTW9kZSBzdHJpbmcgbWF5IGJlIHByZXBlbmRlZCB3aXRo
IGEgY29tbWEtc2VwYXJhdGVkIGxpc3QKLSAqIG9mICJ0b2tlbj12YWx1ZSIgcGFpcnMsIHNlcGFy
YXRlZCBmcm9tIHRoZSBNZXRhTW9kZSBzdHJpbmcgd2l0aAotICogIjo6Ii4gIEN1cnJlbnRseSwg
dmFsaWQgdG9rZW5zIGFyZToKLSAqCi0gKiAgICBUb2tlbiAgICAgICAgVmFsdWUKLSAqICAgImlk
IiAgICAgICAgIDxudW1iZXI+ICAgICAtIHRoZSBpZCBvZiB0aGlzIE1ldGFNb2RlOyB0aGlzIGlz
IHN0b3JlZCBpbgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIFZlcnRpY2Fs
IFJlZnJlc2ggZmllbGQsIGFzIHZpZXdlZAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnkgdGhlIFhSYW5kUiBhbmQgWEY4NlZpZE1vZGUgWCAqCi0gKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleHRlbnNpb25zLgotICoKLSAqICAgInN3aXRjaGFibGUiICJ5ZXMiLyJu
byIgICAtIHdoZXRoZXIgdGhpcyBNZXRhTW9kZSBtYXkgYmUgc3dpdGNoZWQgdG8gdmlhCi0gKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHJsLWFsdC0rLy07IEltcGxpY2l0IE1ldGFN
b2RlcyAoc2VlCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgIkluY2x1ZGVJ
bXBsaWNpdE1ldGFNb2RlcyIgWAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
ZmlnIG9wdGlvbiksIGZvciBleGFtcGxlLCBhcmUgbm90Ci0gKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub3JtYWxseSBtYWRlIGF2YWlsYWJsZSB0aHJvdWdoCi0gKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjdHJsLWFsdC0rLy0uCi0gKgotICogICAic291cmNlIiAgICAg
Inhjb25maWciICAgIC0gdGhlIE1ldGFNb2RlIHdhcyBzcGVjaWZpZWQgaW4gdGhlIFgKLSAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZyBmaWxlLgotICogICAgICAgICAgICAg
ICAgImltcGxpY2l0IiAgIC0gdGhlIE1ldGFNb2RlIHdhcyBpbXBsaWNpdGx5IGFkZGVkOyBzZWUg
dGhlCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5jbHVkZUltcGxpY2l0TWV0
YU1vZGVzIiBYIGNvbmZpZyBvcHRpb24KLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvciBkZXRhaWxzLgotICogICAgICAgICAgICAgICAgIm52LWNvbnRyb2wiIC0gdGhlIE1ldGFN
b2RlIHdhcyBhZGRlZCB2aWEgdGhlIE5WLUNPTlRST0wgWAotICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXh0ZW5zaW9uIHRvIHRoZSBjdXJyZW50bHkgcnVubmluZyBYIHNlcnZlci4K
LSAqICAgICAgICAgICAgICAgICJSYW5kUiIgICAgICAtIHRoZSBNZXRhTW9kZSB3YXMgbW9kaWZp
ZWQgaW4gcmVzcG9uc2UgdG8gYW4KLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJh
bmRSIFJSU2V0Q3J0Y0NvbmZpZyByZXF1ZXN0LgotICoKLSAqIEFkZGl0aW9uYWwgdG9rZW5zIG1h
eSBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLCBzbyBpdCBpcyByZWNvbW1lbmRlZAotICogdGhhdCBh
bnkgdG9rZW4gcGFyc2VyIHByb2Nlc3NpbmcgdGhlIHJldHVybmVkIHN0cmluZyBmcm9tCi0gKiBO
Vl9DVFJMX0JJTkFSWV9EQVRBX01FVEFNT0RFUyBiZSBpbXBsZW1lbnRlZCB0byBncmFjZWZ1bGx5
IGlnbm9yZQotICogdW5yZWNvZ25pemVkIHRva2Vucy4KLSAqCi0gKiBFLmcuLAotICoKLSAqICAg
ImlkPTUwLCBzd2l0Y2hhYmxlPXllcywgc291cmNlPXhjb25maWcgOjogQ1JULTA6IDEwMjR4NzY4
IEAxMDI0eDc2OCArMCswIgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9CSU5BUllfREFUQV9NRVRB
TU9ERVMgMiAvKiBSLUQtICovCi0jZGVmaW5lIE5WX0NUUkxfQklOQVJZX0RBVEFfTUVUQU1PREVT
X1ZFUlNJT05fMSBOVl9DVFJMX0JJTkFSWV9EQVRBX01FVEFNT0RFUwotCi0vKgotICogTlZfQ1RS
TF9CSU5BUllfREFUQV9YU0NSRUVOU19VU0lOR19HUFUgLSBSZXR1cm5zIHRoZSBsaXN0IG9mIFgK
LSAqIHNjcmVlbnMgY3VycmVudGx5IGRyaXZlbiBieSB0aGUgZ2l2ZW4gR1BVLgotICoKLSAqIFRo
ZSBmb3JtYXQgb2YgdGhlIHJldHVybmVkIGRhdGEgaXM6Ci0gKgotICogICAgIDQgICAgICAgQ0FS
RDMyIG51bWJlciBvZiBzY3JlZW5zCi0gKiAgICAgNCAqIG4gICBDQVJEMzIgc2NyZWVuIGluZGlj
ZXMKLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBjYW4gb25seSBiZSBxdWVyaWVkIHRocm91Z2ggWE5W
Q1RSTFF1ZXJ5VGFyZ2V0QmluYXJ5RGF0YSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZ
UEVfR1BVIHRhcmdldC4gIFRoaXMgYXR0cmlidXRlIGNhbm5vdCBiZQotICogcXVlcmllZCB1c2lu
ZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4uCi0gKi8KLQotI2RlZmluZSBOVl9DVFJM
X0JJTkFSWV9EQVRBX1hTQ1JFRU5TX1VTSU5HX0dQVSAzIC8qIFItREcgKi8KLQotLyoKLSAqIE5W
X0NUUkxfQklOQVJZX0RBVEFfR1BVU19VU0VEX0JZX1hTQ1JFRU4gLSBSZXR1cm5zIHRoZSBsaXN0
IG9mIEdQVXMKLSAqIGN1cnJlbnRseSBpbiB1c2UgYnkgdGhlIGdpdmVuIFggc2NyZWVuLgotICoK
LSAqIFRoZSBmb3JtYXQgb2YgdGhlIHJldHVybmVkIGRhdGEgaXM6Ci0gKgotICogICAgIDQgICAg
ICAgQ0FSRDMyIG51bWJlciBvZiBHUFVzCi0gKiAgICAgNCAqIG4gICBDQVJEMzIgR1BVIGluZGlj
ZXMKLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfQklOQVJZX0RBVEFfR1BVU19VU0VEX0JZX1hTQ1JF
RU4gNCAvKiBSLS0tICovCi0KLS8qCi0gKiBOVl9DVFJMX0JJTkFSWV9EQVRBX0dQVVNfVVNJTkdf
RlJBTUVMT0NLIC0gUmV0dXJucyB0aGUgbGlzdCBvZgotICogR1BVcyBjdXJyZW50bHkgY29ubmVj
dGVkIHRvIHRoZSBnaXZlbiBmcmFtZSBsb2NrIGJvYXJkLgotICoKLSAqIFRoZSBmb3JtYXQgb2Yg
dGhlIHJldHVybmVkIGRhdGEgaXM6Ci0gKgotICogICAgIDQgICAgICAgQ0FSRDMyIG51bWJlciBv
ZiBHUFVzCi0gKiAgICAgNCAqIG4gICBDQVJEMzIgR1BVIGluZGljZXMKLSAqCi0gKiBUaGlzIGF0
dHJpYnV0ZSBjYW4gb25seSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0Qmlu
YXJ5RGF0YSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NLIHRhcmdl
dC4gIFRoaXMgYXR0cmlidXRlIGNhbm5vdCBiZQotICogcXVlcmllZCB1c2luZyBhIE5WX0NUUkxf
VEFSR0VUX1RZUEVfWF9TQ1JFRU4uCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRB
X0dQVVNfVVNJTkdfRlJBTUVMT0NLIDUgLyogUi1ERiAqLwotCi0vKgotICogTlZfQ1RSTF9CSU5B
UllfREFUQV9ESVNQTEFZX1ZJRVdQT1JUIC0gUmV0dXJucyB0aGUgRGlzcGxheSBEZXZpY2Uncwot
ICogdmlld3BvcnQgYm94IGludG8gdGhlIGdpdmVuIFggU2NyZWVuIChpbiBYIFNjcmVlbiBjb29y
ZGluYXRlcy4pCi0gKgotICogVGhlIGZvcm1hdCBvZiB0aGUgcmV0dXJuZWQgZGF0YSBpczoKLSAq
Ci0gKiAgICAgNCAgICAgICBDQVJEMzIgT2Zmc2V0IFgKLSAqICAgICA0ICAgICAgIENBUkQzMiBP
ZmZzZXQgWQotICogICAgIDQgICAgICAgQ0FSRDMyIFdpZHRoCi0gKiAgICAgNCAgICAgICBDQVJE
MzIgSGVpZ2h0Ci0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX0RJU1BMQVlfVklF
V1BPUlQgNiAvKiBSLURHICovCi0KLS8qCi0gKiBOVl9DVFJMX0JJTkFSWV9EQVRBX0ZSQU1FTE9D
S1NfVVNFRF9CWV9HUFUgLSBSZXR1cm5zIHRoZSBsaXN0IG9mCi0gKiBGcmFtZWxvY2sgZGV2aWNl
cyBjdXJyZW50bHkgY29ubmVjdGVkIHRvIHRoZSBnaXZlbiBHUFUuCi0gKgotICogVGhlIGZvcm1h
dCBvZiB0aGUgcmV0dXJuZWQgZGF0YSBpczoKLSAqCi0gKiAgICAgNCAgICAgICBDQVJEMzIgbnVt
YmVyIG9mIEZyYW1lbG9ja3MKLSAqICAgICA0ICogbiAgIENBUkQzMiBGcmFtZWxvY2sgaW5kaWNl
cwotICoKLSAqIFRoaXMgYXR0cmlidXRlIGNhbiBvbmx5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZD
VFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRhKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQ
RV9HUFUgdGFyZ2V0LiAgVGhpcyBhdHRyaWJ1dGUgY2Fubm90IGJlCi0gKiBxdWVyaWVkIHVzaW5n
IGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTi4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxf
QklOQVJZX0RBVEFfRlJBTUVMT0NLU19VU0VEX0JZX0dQVSA3IC8qIFItREcgKi8KLQotLyoKLSAq
IE5WX0NUUkxfQklOQVJZX0RBVEFfR1BVU19VU0lOR19WQ1NDIC0gUmV0dXJucyB0aGUgbGlzdCBv
ZgotICogR1BVIGRldmljZXMgY29ubmVjdGVkIHRvIHRoZSBnaXZlbiBWQ1MuCi0gKgotICogVGhl
IGZvcm1hdCBvZiB0aGUgcmV0dXJuZWQgZGF0YSBpczoKLSAqCi0gKiAgICAgNCAgICAgICBDQVJE
MzIgbnVtYmVyIG9mIEdQVXMKLSAqICAgICA0ICogbiAgIENBUkQzMiBHUFUgaW5kaWNlcwotICoK
LSAqIFRoaXMgYXR0cmlidXRlIGNhbiBvbmx5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVl
cnlUYXJnZXRCaW5hcnlEYXRhKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9WQ1ND
IHRhcmdldC4gIFRoaXMgYXR0cmlidXRlIGNhbm5vdCBiZQotICogcXVlcmllZCB1c2luZyBhIE5W
X0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gYW5kIGNhbm5vdCBiZSBxdWVyaWVkIHVzaW5nCi0g
KiBhICBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfR1BVCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0JJ
TkFSWV9EQVRBX0dQVVNfVVNJTkdfVkNTQyA4IC8qIFItRFYgKi8KLQotLyoKLSAqIE5WX0NUUkxf
QklOQVJZX0RBVEFfVkNTQ1NfVVNFRF9CWV9HUFUgLSBSZXR1cm5zIHRoZSBWQ1NDIGRldmljZQot
ICogdGhhdCBpcyBjb250cm9sbGluZyB0aGUgZ2l2ZW4gR1BVLgotICoKLSAqIFRoZSBmb3JtYXQg
b2YgdGhlIHJldHVybmVkIGRhdGEgaXM6Ci0gKgotICogICAgIDQgICAgICAgQ0FSRDMyIG51bWJl
ciBvZiBWQ1MgKGFsd2F5cyAxKQotICogICAgIDQgKiBuICAgQ0FSRDMyIFZDUyBpbmRpY2VzCi0g
KgotICogVGhpcyBhdHRyaWJ1dGUgY2FuIG9ubHkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxR
dWVyeVRhcmdldEJpbmFyeURhdGEoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQ
VSB0YXJnZXQuICBUaGlzIGF0dHJpYnV0ZSBjYW5ub3QgYmUKLSAqIHF1ZXJpZWQgdXNpbmcgYSBO
Vl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0JJTkFS
WV9EQVRBX1ZDU0NTX1VTRURfQllfR1BVIDkgLyogUi1ERyAqLwotCi0vKgotICogTlZfQ1RSTF9C
SU5BUllfREFUQV9DT09MRVJTX1VTRURfQllfR1BVIC0gUmV0dXJucyB0aGUgY29vbGVycyB0aGF0
Ci0gKiBhcmUgY29vbGluZyB0aGUgZ2l2ZW4gR1BVLgotICoKLSAqIFRoZSBmb3JtYXQgb2YgdGhl
IHJldHVybmVkIGRhdGEgaXM6Ci0gKgotICogICAgIDQgICAgICAgQ0FSRDMyIG51bWJlciBvZiBD
T09MRVIKLSAqICAgICA0ICogbiAgIENBUkQzMiBDT09MRVIgaW5kaWNlcwotICoKLSAqIFRoaXMg
YXR0cmlidXRlIGNhbiBvbmx5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRC
aW5hcnlEYXRhKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgdGFyZ2V0LiAg
VGhpcyBhdHRyaWJ1dGUgY2Fubm90IGJlCi0gKiBxdWVyaWVkIHVzaW5nIGEgTlZfQ1RSTF9UQVJH
RVRfVFlQRV9YX1NDUkVFTgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9CSU5BUllfREFUQV9DT09M
RVJTX1VTRURfQllfR1BVIDEwIC8qIFItREcgKi8KLQotLyoKLSAqIE5WX0NUUkxfQklOQVJZX0RB
VEFfR1BVU19VU0VEX0JZX0xPR0lDQUxfWFNDUkVFTiAtIFJldHVybnMgdGhlIGxpc3Qgb2YKLSAq
IEdQVXMgY3VycmVudGx5IGRyaXZpbmcgdGhlIGdpdmVuIFggc2NyZWVuLiAgSWYgWGluZXJhbWEg
aXMgZW5hYmxlZCwgdGhpcwotICogd2lsbCByZXR1cm4gYWxsIEdQVXMgdGhhdCBhcmUgZHJpdmlu
ZyBhbnkgWCBzY3JlZW4uCi0gKgotICogVGhlIGZvcm1hdCBvZiB0aGUgcmV0dXJuZWQgZGF0YSBp
czoKLSAqCi0gKiAgICAgNCAgICAgICBDQVJEMzIgbnVtYmVyIG9mIEdQVXMKLSAqICAgICA0ICog
biAgIENBUkQzMiBHUFUgaW5kaWNlcwotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9CSU5BUllfREFU
QV9HUFVTX1VTRURfQllfTE9HSUNBTF9YU0NSRUVOIDExIC8qIFItLS0gKi8KLQotLyoKLSAqIE5W
X0NUUkxfQklOQVJZX0RBVEFfVEhFUk1BTF9TRU5TT1JTX1VTRURfQllfR1BVIC0gUmV0dXJucyB0
aGUgc2Vuc29ycyB0aGF0Ci0gKiBhcmUgYXR0YWNoZWQgdG8gdGhlIGdpdmVuIEdQVS4KLSAqCi0g
KiBUaGUgZm9ybWF0IG9mIHRoZSByZXR1cm5lZCBkYXRhIGlzOgotICoKLSAqICAgICA0ICAgICAg
IENBUkQzMiBudW1iZXIgb2YgU0VOU09SCi0gKiAgICAgNCAqIG4gICBDQVJEMzIgU0VOU09SIGlu
ZGljZXMKLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBjYW4gb25seSBiZSBxdWVyaWVkIHRocm91Z2gg
WE5WQ1RSTFF1ZXJ5VGFyZ2V0QmluYXJ5RGF0YSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VU
X1RZUEVfR1BVIHRhcmdldC4gIFRoaXMgYXR0cmlidXRlIGNhbm5vdCBiZQotICogcXVlcmllZCB1
c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4KLSAqLwotCi0jZGVmaW5lIE5WX0NU
UkxfQklOQVJZX0RBVEFfVEhFUk1BTF9TRU5TT1JTX1VTRURfQllfR1BVIDEyIC8qIFItLUcgKi8K
LQotLyoKLSAqIE5WX0NUUkxfQklOQVJZX0RBVEFfR0xBU1NFU19QQUlSRURfVE9fM0RfVklTSU9O
X1BST19UUkFOU0NFSVZFUiAtIFJldHVybnMKLSAqIHRoZSBpZCBvZiB0aGUgZ2xhc3NlcyB0aGF0
IGFyZSBjdXJyZW50bHkgcGFpcmVkIHRvIHRoZSBnaXZlbgotICogM0QgVmlzaW9uIFBybyB0cmFu
c2NlaXZlci4KLSAqCi0gKiBUaGUgZm9ybWF0IG9mIHRoZSByZXR1cm5lZCBkYXRhIGlzOgotICoK
LSAqICAgICA0ICAgICAgIENBUkQzMiBudW1iZXIgb2YgZ2xhc3NlcwotICogICAgIDQgKiBuICAg
Q0FSRDMyIGlkIG9mIGdsYXNzZXMKLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBjYW4gb25seSBiZSBx
dWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QmluYXJ5RGF0YSgpCi0gKiB1c2luZyBh
IE5WX0NUUkxfVEFSR0VUX1RZUEVfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUiB0YXJnZXQuCi0g
Ki8KLSNkZWZpbmUgTlZfQ1RSTF9CSU5BUllfREFUQV9HTEFTU0VTX1BBSVJFRF9UT18zRF9WSVNJ
T05fUFJPX1RSQU5TQ0VJVkVSIDEzIC8qIFItLVQgKi8KLQotLyoKLSAqIE5WX0NUUkxfQklOQVJZ
X0RBVEFfRElTUExBWV9UQVJHRVRTIC0gUmV0dXJucyBhbGwgdGhlIGRpc3BsYXkgZGV2aWNlcwot
ICogY3VycmVudGx5IGNvbm5lY3RlZCB0byBhbnkgR1BVIG9uIHRoZSBYIHNlcnZlci4KLSAqCi0g
KiBUaGUgZm9ybWF0IG9mIHRoZSByZXR1cm5lZCBkYXRhIGlzOgotICoKLSAqICAgICA0ICAgICAg
IENBUkQzMiBudW1iZXIgb2YgZGlzcGxheSBkZXZpY2VzCi0gKiAgICAgNCAqIG4gICBDQVJEMzIg
ZGlzcGxheSBkZXZpY2UgaW5kaWNlcwotICoKLSAqIFRoaXMgYXR0cmlidXRlIGNhbiBvbmx5IGJl
IHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRhKCkuCi0gKi8KLQot
I2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX0RJU1BMQVlfVEFSR0VUUyAxNCAvKiBSLS0tICov
Ci0KLS8qCi0gKiBOVl9DVFJMX0JJTkFSWV9EQVRBX0RJU1BMQVlTX0NPTk5FQ1RFRF9UT19HUFUg
LSBSZXR1cm5zIHRoZSBsaXN0IG9mCi0gKiBkaXNwbGF5IGRldmljZXMgdGhhdCBhcmUgY29ubmVj
dGVkIHRvIHRoZSBHUFUgdGFyZ2V0LgotICoKLSAqIFRoZSBmb3JtYXQgb2YgdGhlIHJldHVybmVk
IGRhdGEgaXM6Ci0gKgotICogICAgIDQgICAgICAgQ0FSRDMyIG51bWJlciBvZiBkaXNwbGF5IGRl
dmljZXMKLSAqICAgICA0ICogbiAgIENBUkQzMiBkaXNwbGF5IGRldmljZSBpbmRpY2VzCi0gKgot
ICogVGhpcyBhdHRyaWJ1dGUgY2FuIG9ubHkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVy
eVRhcmdldEJpbmFyeURhdGEoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSB0
YXJnZXQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX0RJU1BMQVlTX0NPTk5F
Q1RFRF9UT19HUFUgMTUgLyogUi0tRyAqLwotCi0vKgotICogTlZfQ1RSTF9CSU5BUllfREFUQV9N
RVRBTU9ERVNfVkVSU0lPTl8yICAtIFJldHVybnMgdmFsdWVzIHNpbWlsYXIgdG8KLSAqIE5WX0NU
UkxfQklOQVJZX0RBVEFfTUVUQU1PREVTKF9WRVJTSU9OXzEpIGJ1dCBhbHNvIHJldHVybnMgZXh0
ZW5kZWQgc3ludGF4Ci0gKiBpbmZvcm1hdGlvbiB0byBpbmRpY2F0ZSBhIHNwZWNpZmljIGRpc3Bs
YXkgZGV2aWNlLCBhcyB3ZWxsIGFzIG90aGVyIHBlci0KLSAqIGRpc3BsYXkgZGV2aWNlZmxhZ3Mg
YXMgInRva2VuPXZhbHVlIiBwYWlycy4gIEZvciBleGFtcGxlOgotICoKLSAqICAgIkRQWS0xOiAx
MjgweDEwMjQge1N0ZXJlbz1QYXNzaXZlTGVmdH0sCi0gKiAgICBEUFktMjogMTI4MHgxMDI0IHtT
dGVyZW89UGFzc2l2ZVJpZ2h0fSwiCi0gKgotICogVGhlIGRpc3BsYXkgZGV2aWNlIG5hbWVzIGhh
dmUgdGhlIGZvcm0gIkRQWS0lZCIsIHdoZXJlIHRoZSBpbnRlZ2VyCi0gKiBwYXJ0IG9mIHRoZSBu
YW1lIGlzIHRoZSBOVi1DT05UUk9MIHRhcmdldCBJRCBmb3IgdGhhdCBkaXNwbGF5IGRldmljZQot
ICogZm9yIHRoaXMgaW5zdGFuY2Ugb2YgdGhlIFggc2VydmVyLiAgTm90ZSB0aGF0IGRpc3BsYXkg
ZGV2aWNlIE5WLUNPTlRST0wKLSAqIHRhcmdldCBJRHMgYXJlIG5vdCBndWFyYW50ZWVkIHRvIGJl
IHRoZSBzYW1lIGZyb20gb25lIHJ1biBvZiB0aGUgWAotICogc2VydmVyIHRvIHRoZSBuZXh0Lgot
ICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9CSU5BUllfREFUQV9NRVRBTU9ERVNfVkVSU0lPTl8yIDE2
IC8qIFItRC0gKi8KLQotLyoKLSAqIE5WX0NUUkxfQklOQVJZX0RBVEFfRElTUExBWVNfRU5BQkxF
RF9PTl9YU0NSRUVOIC0gUmV0dXJucyB0aGUgbGlzdCBvZgotICogZGlzcGxheSBkZXZpY2VzIHRo
YXQgYXJlIGN1cnJlbnRseSBzY2FubmluZyBvdXQgdGhlIFggc2NyZWVuIHRhcmdldC4KLSAqCi0g
KiBUaGUgZm9ybWF0IG9mIHRoZSByZXR1cm5lZCBkYXRhIGlzOgotICoKLSAqICAgICA0ICAgICAg
IENBUkQzMiBudW1iZXIgb2YgZGlzcGxheSBkZXZpY2VzCi0gKiAgICAgNCAqIG4gICBDQVJEMzIg
ZGlzcGxheSBkZXZpY2UgaW5kaWNlcwotICoKLSAqIFRoaXMgYXR0cmlidXRlIGNhbiBvbmx5IGJl
IHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRhKCkKLSAqIHVzaW5n
IGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQuCi0gKi8KLQotI2RlZmluZSBO
Vl9DVFJMX0JJTkFSWV9EQVRBX0RJU1BMQVlTX0VOQUJMRURfT05fWFNDUkVFTiAxNyAvKiBSLS0t
ICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9CSU5BUllfREFUQV9MQVNUX0FUVFJJQlVURSBOVl9DVFJM
X0JJTkFSWV9EQVRBX0RJU1BMQVlTX0VOQUJMRURfT05fWFNDUkVFTgotCi0vKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKiovCi0KLS8qCi0gKiBTdHJpbmcgT3BlcmF0aW9uIEF0dHJpYnV0ZXM6Ci0gKgotICogVGhl
c2UgYXR0cmlidXRlcyBhcmUgdXNlZCB3aXRoIHRoZSBYTlZDVFJMU3RyaW5nT3BlcmF0aW9uKCkK
LSAqIGZ1bmN0aW9uOyBhIHN0cmluZyBpcyBzcGVjaWZpZWQgYXMgaW5wdXQsIGFuZCBhIHN0cmlu
ZyBpcyByZXR1cm5lZAotICogYXMgb3V0cHV0LgotICoKLSAqIFVubGVzcyBvdGhlcndpc2Ugbm90
ZWQsIGFsbCBhdHRyaWJ1dGVzIGNhbiBiZSBvcGVyYXRlZCB1cG9uIHVzaW5nCi0gKiBhbiBOVl9D
VFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIHRhcmdldC4KLSAqLwotCi0vKgotICogTlZfQ1RSTF9T
VFJJTkdfT1BFUkFUSU9OX0FERF9NRVRBTU9ERSAtIHByb3ZpZGUgYSBNZXRhTW9kZSBzdHJpbmcK
LSAqIGFzIGlucHV0LCBhbmQgcmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIGNvbW1hLXNlcGFy
YXRlZCBsaXN0IG9mCi0gKiAidG9rZW49dmFsdWUiIHBhaXJzIGFzIG91dHB1dC4gIEN1cnJlbnRs
eSwgdGhlIG9ubHkgb3V0cHV0IHRva2VuIGlzCi0gKiAiaWQiLCB3aGljaCBpbmRpY2F0ZXMgdGhl
IGlkIHRoYXQgd2FzIGFzc2lnbmVkIHRvIHRoZSBNZXRhTW9kZS4KLSAqCi0gKiBBbGwgTW9kZUxp
bmVzIHJlZmVyZW5jZWQgaW4gdGhlIE1ldGFNb2RlIG11c3QgYWxyZWFkeSBleGlzdCBmb3IKLSAq
IGVhY2ggZGlzcGxheSBkZXZpY2UgKGFzIHJldHVybmVkIGJ5IHRoZQotICogTlZfQ1RSTF9CSU5B
UllfREFUQV9NT0RFTElORVMgYXR0cmlidXRlKS4KLSAqCi0gKiBUaGUgTWV0YU1vZGUgc3RyaW5n
IHNob3VsZCBoYXZlIHRoZSBzYW1lIHN5bnRheCBhcyB0aGUgTWV0YU1vZGUgWAotICogY29uZmln
dXJhdGlvbiBvcHRpb24sIGFzIGRvY3VtZW50ZWQgaW4gdGhlIE5WSURJQSBkcml2ZXIgUkVBRE1F
LgotICoKLSAqIFRoZSBpbnB1dCBzdHJpbmcgY2FuIG9wdGlvbmFsbHkgYmUgcHJlcGVuZGVkIHdp
dGggYSBzdHJpbmcgb2YKLSAqIGNvbW1hLXNlcGFyYXRlZCAidG9rZW49dmFsdWUiIHBhaXJzLCBz
ZXBhcmF0ZWQgZnJvbSB0aGUgTWV0YU1vZGUKLSAqIHN0cmluZyBieSAiOjoiLiAgQ3VycmVudGx5
LCB0aGUgb25seSB2YWxpZCB0b2tlbiBpcyAiaW5kZXgiIHdoaWNoCi0gKiBpbmRpY2F0ZXMgdGhl
IGluc2VydGlvbiBpbmRleCBmb3IgdGhlIE1ldGFNb2RlLgotICoKLSAqIEUuZy4sCi0gKgotICog
SW5wdXQ6ICJpbmRleD01IDo6IDE2MDB4MTIwMCswKzAsIDE2MDB4MTIwMCsxNjAwKzAiCi0gKiBP
dXRwdXQ6ICJpZD01OCIKLSAqCi0gKiB3aGljaCBjYXVzZXMgdGhlIE1ldGFNb2RlIHRvIGJlIGlu
c2VydGVkIGF0IHBvc2l0aW9uIDUgaW4gdGhlCi0gKiBNZXRhTW9kZSBsaXN0IChhbGwgZW50cmll
cyBhZnRlciA1IHdpbGwgYmUgc2hpZnRlZCBkb3duIG9uZSBzbG90IGluCi0gKiB0aGUgbGlzdCks
IGFuZCB0aGUgWCBzZXJ2ZXIncyBjb250YWluaW5nIG1vZGUgc3RvcmVzIDU4IGFzIHRoZQotICog
VlJlZnJlc2gsIHNvIHRoYXQgdGhlIE1ldGFNb2RlIGNhbiBiZSB1bmlxdWVseSBpZGVudGlmZWQg
dGhyb3VnaAotICogWFJhbmRSIGFuZCBYRjg2VmlkTW9kZS4KLSAqLwotCi0jZGVmaW5lIE5WX0NU
UkxfU1RSSU5HX09QRVJBVElPTl9BRERfTUVUQU1PREUgMAotCi0vKgotICogTlZfQ1RSTF9TVFJJ
TkdfT1BFUkFUSU9OX0dURl9NT0RFTElORSAtIHByb3ZpZGUgYXMgaW5wdXQgYSBzdHJpbmcKLSAq
IG9mIGNvbW1hLXNlcGFyYXRlZCAidG9rZW49dmFsdWUiIHBhaXJzLCBhbmQgcmV0dXJucyBhIE1v
ZGVMaW5lCi0gKiBzdHJpbmcsIGNvbXB1dGVkIHVzaW5nIHRoZSBHVEYgZm9ybXVsYSB1c2luZyB0
aGUgcGFyYW1ldGVycyBmcm9tCi0gKiB0aGUgaW5wdXQgc3RyaW5nLiAgVmFsaWQgdG9rZW5zIGZv
ciB0aGUgaW5wdXQgc3RyaW5nIGFyZSAid2lkdGgiLAotICogImhlaWdodCIsIGFuZCAicmVmcmVz
aHJhdGUiLgotICoKLSAqIEUuZy4sCi0gKgotICogSW5wdXQ6ICJ3aWR0aD0xNjAwLCBoZWlnaHQ9
MTIwMCwgcmVmcmVzaHJhdGU9NjAiCi0gKiBPdXRwdXQ6ICIxNjAuOTYgIDE2MDAgMTcwNCAxODgw
IDIxNjAgIDEyMDAgMTIwMSAxMjA0IDEyNDIgIC1IU3luYyArVlN5bmMiCi0gKgotICogVGhpcyBv
cGVyYXRpb24gZG9lcyBub3QgaGF2ZSBhbnkgaW1wYWN0IG9uIGFueSBkaXNwbGF5IGRldmljZSdz
Ci0gKiBtb2RlUG9vbCwgYW5kIHRoZSBNb2RlTGluZSBpcyBub3QgdmFsaWRhdGVkOyBpdCBpcyBz
aW1wbHkgaW50ZW5kZWQKLSAqIGZvciBnZW5lcmF0aW5nIE1vZGVMaW5lcy4KLSAqLwotCi0jZGVm
aW5lIE5WX0NUUkxfU1RSSU5HX09QRVJBVElPTl9HVEZfTU9ERUxJTkUgMQotCi0vKgotICogTlZf
Q1RSTF9TVFJJTkdfT1BFUkFUSU9OX0NWVF9NT0RFTElORSAtIHByb3ZpZGUgYXMgaW5wdXQgYSBz
dHJpbmcKLSAqIG9mIGNvbW1hLXNlcGFyYXRlZCAidG9rZW49dmFsdWUiIHBhaXJzLCBhbmQgcmV0
dXJucyBhIE1vZGVMaW5lCi0gKiBzdHJpbmcsIGNvbXB1dGVkIHVzaW5nIHRoZSBDVlQgZm9ybXVs
YSB1c2luZyB0aGUgcGFyYW1ldGVycyBmcm9tCi0gKiB0aGUgaW5wdXQgc3RyaW5nLiAgVmFsaWQg
dG9rZW5zIGZvciB0aGUgaW5wdXQgc3RyaW5nIGFyZSAid2lkdGgiLAotICogImhlaWdodCIsICJy
ZWZyZXNocmF0ZSIsIGFuZCAicmVkdWNlZC1ibGFua2luZyIuICBUaGUKLSAqICJyZWR1Y2VkLWJs
YW5raW5nIiBhcmd1bWVudCBjYW4gYmUgIjAiIG9yICIxIiwgdG8gZW5hYmxlIG9yIGRpc2FibGUK
LSAqIHVzZSBvZiByZWR1Y2VkIGJsYW5raW5nIGZvciB0aGUgQ1ZUIGZvcm11bGEuCi0gKgotICog
RS5nLiwKLSAqCi0gKiBJbnB1dDogIndpZHRoPTE2MDAsIGhlaWdodD0xMjAwLCByZWZyZXNocmF0
ZT02MCwgcmVkdWNlZC1ibGFua2luZz0xIgotICogT3V0cHV0OiAiMTMwLjI1ICAxNjAwIDE2NDgg
MTY4MCAxNzYwICAxMjAwIDEyMDMgMTIwNyAxMjM1ICArSFN5bmMgLVZTeW5jIgotICoKLSAqIFRo
aXMgb3BlcmF0aW9uIGRvZXMgbm90IGhhdmUgYW55IGltcGFjdCBvbiBhbnkgZGlzcGxheSBkZXZp
Y2UncwotICogbW9kZVBvb2wsIGFuZCB0aGUgTW9kZUxpbmUgaXMgbm90IHZhbGlkYXRlZDsgaXQg
aXMgc2ltcGx5IGludGVuZGVkCi0gKiBmb3IgZ2VuZXJhdGluZyBNb2RlTGluZXMuCi0gKi8KLQot
I2RlZmluZSBOVl9DVFJMX1NUUklOR19PUEVSQVRJT05fQ1ZUX01PREVMSU5FIDIKLQotLyoKLSAq
IE5WX0NUUkxfU1RSSU5HX09QRVJBVElPTl9CVUlMRF9NT0RFUE9PTCAtIGJ1aWxkIGEgTW9kZVBv
b2wgZm9yIHRoZQotICogc3BlY2lmaWVkIGRpc3BsYXkgZGV2aWNlIG9uIHRoZSBzcGVjaWZpZWQg
dGFyZ2V0IChlaXRoZXIgYW4gWAotICogc2NyZWVuIG9yIGEgR1BVKS4gIFRoaXMgaXMgdHlwaWNh
bGx5IHVzZWQgdG8gZ2VuZXJhdGUgYSBNb2RlUG9vbAotICogZm9yIGEgZGlzcGxheSBkZXZpY2Ug
b24gYSBHUFUgb24gd2hpY2ggbm8gWCBzY3JlZW5zIGFyZSBwcmVzZW50LgotICoKLSAqIEN1cnJl
bnRseSwgYSBkaXNwbGF5IGRldmljZSdzIE1vZGVQb29sIGlzIHN0YXRpYyBmb3IgdGhlIGxpZmUg
b2YKLSAqIHRoZSBYIHNlcnZlciwgc28gWE5WQ1RSTFN0cmluZ09wZXJhdGlvbiB3aWxsIHJldHVy
biBGQUxTRSBpZgotICogcmVxdWVzdGVkIHRvIGJ1aWxkIGEgTW9kZVBvb2wgb24gYSBkaXNwbGF5
IGRldmljZSB0aGF0IGFscmVhZHkgaGFzCi0gKiBhIE1vZGVQb29sLgotICoKLSAqIFRoZSBzdHJp
bmcgaW5wdXQgdG8gQlVJTERfTU9ERVBPT0wgbWF5IGJlIE5VTEwuICBJZiBpdCBpcyBub3QgTlVM
TCwKLSAqIHRoZW4gaXQgaXMgaW50ZXJwcmV0ZWQgYXMgYSBkb3VibGUtY29sb24gKCI6OiIpIHNl
cGFyYXRlZCBsaXN0Ci0gKiBvZiAib3B0aW9uPXZhbHVlIiBwYWlycywgd2hlcmUgdGhlIG9wdGlv
bnMgYW5kIHRoZSBzeW50YXggb2YgdGhlaXIKLSAqIHZhbHVlcyBhcmUgdGhlIFggY29uZmlndXJh
dGlvbiBvcHRpb25zIHRoYXQgaW1wYWN0IHRoZSBiZWhhdmlvciBvZgotICogbW9kZVBvb2wgY29u
c3RydWN0aW9uOyBuYW1lbHk6Ci0gKgotICogICAgIk1vZGVWYWxpZGF0aW9uIgotICogICAgIkhv
cml6U3luYyIKLSAqICAgICJWZXJ0UmVmcmVzaCIKLSAqICAgICJGbGF0UGFuZWxQcm9wZXJ0aWVz
IgotICogICAgIlRWU3RhbmRhcmQiCi0gKiAgICAiRXhhY3RNb2RlVGltaW5nc0RWSSIKLSAqICAg
ICJVc2VFZGlkRnJlcXMiCi0gKgotICogQW4gZXhhbXBsZSBpbnB1dCBzdHJpbmcgbWlnaHQgbG9v
ayBsaWtlOgotICoKLSAqICAgIk1vZGVWYWxpZGF0aW9uPU5vVmVzYU1vZGVzIDo6IEhvcml6U3lu
Yz01MC0xMTAgOjogVmVydFJlZnJlc2g9NTAtMTUwIgotICoKLSAqIFRoaXMgcmVxdWVzdCBjdXJy
ZW50bHkgZG9lcyBub3QgcmV0dXJuIGEgc3RyaW5nLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9T
VFJJTkdfT1BFUkFUSU9OX0JVSUxEX01PREVQT09MIDMgLyogREcgKi8KLQotLyoKLSAqIE5WX0NU
UkxfU1RSSU5HX09QRVJBVElPTl9HVklfQ09ORklHVVJFX1NUUkVBTVMgLSBDb25maWd1cmUgdGhl
IHN0cmVhbXMtCi0gKiB0by1qYWNrK2NoYW5uZWwgdG9wb2xvZ3kgZm9yIGEgR1ZJIChHcmFwaGlj
cyBjYXB0dXJlIGJvYXJkKS4KLSAqCi0gKiBUaGUgc3RyaW5nIGlucHV0IHRvIEdWSV9DT05GSUdV
UkVfU1RSRUFNUyBtYXkgYmUgTlVMTC4gIElmIHRoaXMgaXMgdGhlCi0gKiBjYXNlLCB0aGVuIHRo
ZSBjdXJyZW50IHRvcG9sb2d5IGlzIHJldHVybmVkLgotICoKLSAqIElmIHRoZSBpbnB1dCBzdHJp
bmcgdG8gR1ZJX0NPTkZJR1VSRV9TVFJFQU1TIGlzIG5vdCBOVUxMLCB0aGUgc3RyaW5nCi0gKiBp
cyBpbnRlcnByZXRlZCBhcyBhIHNlbWljb2xvbiAoIjsiKSBzZXBhcmF0ZWQgbGlzdCBvZiBjb21t
YS1zZXBhcmF0ZWQKLSAqIGxpc3RzIG9mICJvcHRpb249dmFsdWUiIHBhaXJzIHRoYXQgZGVmaW5l
IGEgc3RyZWFtJ3MgY29tcG9zaXRpb24uICBUaGUKLSAqIGF2YWlsYWJsZSBvcHRpb25zIGFuZCB0
aGVpciB2YWx1ZXMgYXJlOgotICoKLSAqICAgInN0cmVhbSI6IERlZmluZXMgd2hpY2ggc3RyZWFt
IHRoaXMgY29tbWEtc2VwYXJhdGVkIGxpc3QgZGVzY3JpYmVzLgotICogICAgICAgICAgICAgVmFs
aWQgdmFsdWVzIGFyZSB0aGUgaW50ZWdlcnMgYmV0d2VlbiAwIGFuZAotICogICAgICAgICAgICAg
TlZfQ1RSTF9HVklfTlVNX1NUUkVBTVMtMSAoaW5jbHVzaXZlKS4KLSAqCi0gKiAgICJsaW5rTiI6
ICBEZWZpbmVzIGEgamFjaytjaGFubmVsIHBhaXIgdG8gdXNlIGZvciB0aGUgZ2l2ZW4gbGluayBO
LgotICogICAgICAgICAgICAgVmFsaWQgb3B0aW9ucyBhcmUgdGhlIHN0cmluZyAibGlua04iLCB3
aGVyZSBOIGlzIGFuIGludGVnZXIKLSAqICAgICAgICAgICAgIGJldHdlZW4gMCBhbmQgTlZfQ1RS
TF9HVklfTUFYX0xJTktTX1BFUl9TVFJFQU0tMSAoaW5jbHVzaXZlKS4KLSAqICAgICAgICAgICAg
IFZhbGlkIHZhbHVlcyBmb3IgdGhlc2Ugb3B0aW9ucyBhcmUgc3RyaW5ncyBvZiB0aGUgZm9ybQot
ICogICAgICAgICAgICAgImphY2tYIiBhbmQvb3IgImphY2tYLlkiLCB3aGVyZSBYIGlzIGFuIGlu
dGVnZXIgYmV0d2VlbiAwIGFuZAotICogICAgICAgICAgICAgTlZfQ1RSTF9HVklfTlVNX0pBQ0tT
LTEgKGluY2x1c2l2ZSksIGFuZCBZIChvcHRpb25hbCkgaXMgYW4KLSAqICAgICAgICAgICAgIGlu
dGVnZXIgYmV0d2VlbiAwIGFuZCBOVl9DVFJMX0dWSV9NQVhfQ0hBTk5FTFNfUEVSX0pBQ0stMQot
ICogICAgICAgICAgICAgKGluY2x1c2l2ZSkuCi0gKgotICogQW4gZXhhbXBsZSBpbnB1dCBzdHJp
bmcgbWlnaHQgbG9vayBsaWtlOgotICoKLSAqICAgInN0cmVhbT0wLCBsaW5rMD1qYWNrMCwgbGlu
azE9amFjazE7IHN0cmVhbT0xLCBsaW5rMD1qYWNrMi4xIgotICoKLSAqICAgVGhpcyBleGFtcGxl
IHNwZWNpZmllcyB0d28gc3RyZWFtcywgc3RyZWFtIDAgYW5kIHN0cmVhbSAxLiAgU3RyZWFtIDAK
LSAqICAgaXMgZGVmaW5lZCB0byBjYXB0dXJlIGxpbmswIGRhdGEgZnJvbSB0aGUgZmlyc3QgY2hh
bm5lbCAoY2hhbm5lbCAwKSBvZgotICogICBCTkMgamFjayAwIGFuZCBsaW5rMSBkYXRhIGZyb20g
dGhlIGZpcnN0IGNoYW5uZWwgb2YgQk5DIGphY2sgMS4gIFRoZQotICogICBzZWNvbmQgc3RyZWFt
IChTdHJlYW0gMSkgaXMgZGVmaW5lZCB0byBjYXB0dXJlIGxpbmswIGRhdGEgZnJvbSBjaGFubmVs
IDEKLSAqICAgKHNlY29uZCBjaGFubmVsKSBvZiBCTkMgamFjayAyLgotICoKLSAqIFRoaXMgZXhh
bXBsZSBzaG93cyBhIHBvc3NpYmxlIGNvbmZpZ3VyYXRpb24gZm9yIGNhcHR1cmluZyAzRyBpbnB1
dDoKLSAqCi0gKiAgICJzdHJlYW09MCwgbGluazA9amFjazAuMCwgbGluazE9amFjazAuMSIKLSAq
Ci0gKiBBcHBsaWNhdGlvbnMgc2hvdWxkIHF1ZXJ5IHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyB0
byBkZXRlcm1pbmUKLSAqIHBvc3NpYmxlIGNvbWJpbmF0aW9uczoKLSAqCi0gKiAgIE5WX0NUUkxf
R1ZJX01BWF9TVFJFQU1TCi0gKiAgIE5WX0NUUkxfR1ZJX01BWF9MSU5LU19QRVJfU1RSRUFNCi0g
KiAgIE5WX0NUUkxfR1ZJX05VTV9KQUNLUwotICogICBOVl9DVFJMX0dWSV9NQVhfQ0hBTk5FTFNf
UEVSX0pBQ0sKLSAqCi0gKiBOb3RlOiBBIGphY2srY2hhbm5lbCBwYWlyIGNhbiBvbmx5IGJlIHRp
ZWQgdG8gb25lIGxpbmsvc3RyZWFtLgotICoKLSAqIFVwb24gc3VjY2Vzc2Z1bCBjb25maWd1cmF0
aW9uIG9yIHF1ZXJ5aW5nIG9mIHRoaXMgYXR0cmlidXRlLCBhIHN0cmluZwotICogcmVwcmVzZW50
aW5nIHRoZSBjdXJyZW50IHRvcG9sb2d5IGZvciBhbGwga25vd24gc3RyZWFtcyBvbiB0aGUgZGV2
aWNlCi0gKiB3aWxsIGJlIHJldHVybmVkLiAgT24gZmFpbHVyZSwgTlVMTCBpcyByZXR1cm5lZC4K
LSAqCi0gKiBOb3RlOiBTZXR0aW5nIHRoaXMgYXR0cmlidXRlIG1heSBhbHNvIHJlc3VsdCBpbiB0
aGUgZm9sbG93aW5nCi0gKiAgICAgICBOVi1DT05UUk9MIGF0dHJpYnV0ZXMgYmVpbmcgcmVzZXQg
b24gdGhlIEdWSSBkZXZpY2UgKHRvIGVuc3VyZQotICogICAgICAgdGhlIGNvbmZpZ3VyYXRpb24g
cmVtYWlucyB2YWxpZCk6Ci0gKiAgICAgICAgICAgTlZfQ1RSTF9HVklPX1JFUVVFU1RFRF9WSURF
T19GT1JNQVQKLSAqICAgICAgICAgICBOVl9DVFJMX0dWSV9SRVFVRVNURURfU1RSRUFNX0JJVFNf
UEVSX0NPTVBPTkVOVAotICogICAgICAgICAgIE5WX0NUUkxfR1ZJX1JFUVVFU1RFRF9TVFJFQU1f
Q09NUE9ORU5UX1NBTVBMSU5HCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19PUEVSQVRJ
T05fR1ZJX0NPTkZJR1VSRV9TVFJFQU1TIDQgLyogUlctSSAqLwotCi0jZGVmaW5lIE5WX0NUUkxf
U1RSSU5HX09QRVJBVElPTl9MQVNUX0FUVFJJQlVURSBOVl9DVFJMX1NUUklOR19PUEVSQVRJT05f
R1ZJX0NPTkZJR1VSRV9TVFJFQU1TCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyoKLSAqIENU
UkxBdHRyaWJ1dGVWYWxpZFZhbHVlc1JlYyAtCi0gKgotICogc3RydWN0dXJlIGFuZCByZWxhdGVk
IGRlZmluZXMgdXNlZCBieQotICogWE5WQ1RSTFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXMoKSB0
byBkZXNjcmliZSB0aGUgdmFsaWQgdmFsdWVzIG9mCi0gKiBhIHBhcnRpY3VsYXIgYXR0cmlidXRl
LiAgVGhlIHR5cGUgZmllbGQgd2lsbCBiZSBvbmUgb2Y6Ci0gKgotICogQVRUUklCVVRFX1RZUEVf
SU5URUdFUiA6IHRoZSBhdHRyaWJ1dGUgaXMgYW4gaW50ZWdlciB2YWx1ZTsgdGhlcmUKLSAqIGlz
IG5vIGZpeGVkIHJhbmdlIG9mIHZhbGlkIHZhbHVlcy4KLSAqCi0gKiBBVFRSSUJVVEVfVFlQRV9C
SVRNQVNLIDogdGhlIGF0dHJpYnV0ZSBpcyBhbiBpbnRlZ2VyIHZhbHVlLAotICogaW50ZXJwcmV0
dGVkIGFzIGEgYml0bWFzay4KLSAqCi0gKiBBVFRSSUJVVEVfVFlQRV9CT09MIDogdGhlIGF0dHJp
YnV0ZSBpcyBhIGJvb2xlYW4sIHZhbGlkIHZhbHVlcyBhcmUKLSAqIGVpdGhlciAxIChvbi90cnVl
KSBvciAwIChvZmYvZmFsc2UpLgotICoKLSAqIEFUVFJJQlVURV9UWVBFX1JBTkdFIDogdGhlIGF0
dHJpYnV0ZSBjYW4gaGF2ZSBhbnkgaW50ZWdlciB2YWx1ZQotICogYmV0d2VlbiBOVkNUUkxBdHRy
aWJ1dGVWYWxpZFZhbHVlcy51LnJhbmdlLm1pbiBhbmQKLSAqIE5WQ1RSTEF0dHJpYnV0ZVZhbGlk
VmFsdWVzLnUucmFuZ2UubWF4IChpbmNsdXNpdmUpLgotICoKLSAqIEFUVFJJQlVURV9UWVBFX0lO
VF9CSVRTIDogdGhlIGF0dHJpYnV0ZSBjYW4gb25seSBoYXZlIGNlcnRhaW4KLSAqIGludGVnZXIg
dmFsdWVzLCBpbmRpY2F0ZWQgYnkgd2hpY2ggYml0cyBpbgotICogTlZDVFJMQXR0cmlidXRlVmFs
aWRWYWx1ZXMudS5iaXRzLmludHMgYXJlIG9uIChmb3IgZXhhbXBsZTogaWYgYml0Ci0gKiAwIGlz
IG9uLCB0aGVuIDAgaXMgYSB2YWxpZCB2YWx1ZTsgaWYgYml0IDUgaXMgb24sIHRoZW4gNSBpcyBh
IHZhbGlkCi0gKiB2YWx1ZSwgZXRjKS4gIFRoaXMgaXMgdXNlZnVsIGZvciBhdHRyaWJ1dGVzIGxp
a2UgTlZfQ1RSTF9GU0FBX01PREUsCi0gKiB3aGljaCBjYW4gb25seSBoYXZlIGNlcnRhaW4gdmFs
dWVzLCBkZXBlbmRpbmcgb24gR1BVLgotICoKLSAqIEFUVFJJQlVURV9UWVBFXzY0QklUX0lOVEVH
RVIgOiB0aGUgYXR0cmlidXRlIGlzIGEgNjQgYml0IGludGVnZXIgdmFsdWU7Ci0gKiB0aGVyZSBp
cyBubyBmaXhlZCByYW5nZSBvZiB2YWxpZCB2YWx1ZXMuCi0gKgotICogQVRUUklCVVRFX1RZUEVf
U1RSSU5HIDogdGhlIGF0dHJpYnV0ZSBpcyBhIHN0cmluZyB2YWx1ZTsgdGhlcmUgaXMgbm8gZml4
ZWQKLSAqIHJhbmdlIG9mIHZhbGlkIHZhbHVlcy4KLSAqCi0gKiBBVFRSSUJVVEVfVFlQRV9CSU5B
UllfREFUQSA6IHRoZSBhdHRyaWJ1dGUgaXMgYmluYXJ5IGRhdGE7IHRoZXJlIGlzCi0gKiBubyBm
aXhlZCByYW5nZSBvZiB2YWxpZCB2YWx1ZXMuCi0gKgotICogQVRUUklCVVRFX1RZUEVfU1RSSU5H
X09QRVJBVElPTiA6IHRoZSBhdHRyaWJ1dGUgaXMgYSBzdHJpbmc7IHRoZXJlIGlzCi0gKiBubyBm
aXhlZCByYW5nZSBvZiB2YWxpZCB2YWx1ZXMuCi0gKgotICoKLSAqIFRoZSBwZXJtaXNzaW9ucyBm
aWVsZCBvZiBOVkNUUkxBdHRyaWJ1dGVWYWxpZFZhbHVlc1JlYyBpcyBhIGJpdG1hc2sKLSAqIHRo
YXQgbWF5IGNvbnRhaW46Ci0gKgotICogQVRUUklCVVRFX1RZUEVfUkVBRCAgICAgIC0gQXR0cmli
dXRlIG1heSBiZSByZWFkIChxdWVyaWVkLikKLSAqIEFUVFJJQlVURV9UWVBFX1dSSVRFICAgICAt
IEF0dHJpYnV0ZSBtYXkgYmUgd3JpdHRlbiB0byAoc2V0LikKLSAqIEFUVFJJQlVURV9UWVBFX0RJ
U1BMQVkgICAtIEF0dHJpYnV0ZSBpcyB2YWxpZCBmb3IgZGlzcGxheSB0YXJnZXQgdHlwZXMKLSAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1aXJlcyBhIGRpc3BsYXlfbWFzayBpZiBx
dWVyaWVkIHZpYQotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBHUFUgb3IgWCBzY3Jl
ZW4uKQotICogQVRUUklCVVRFX1RZUEVfR1BVICAgICAgIC0gQXR0cmlidXRlIGlzIHZhbGlkIGZv
ciBHUFUgdGFyZ2V0IHR5cGVzLgotICogQVRUUklCVVRFX1RZUEVfRlJBTUVMT0NLIC0gQXR0cmli
dXRlIGlzIHZhbGlkIGZvciBGcmFtZSBMb2NrIHRhcmdldCB0eXBlcy4KLSAqIEFUVFJJQlVURV9U
WVBFX1hfU0NSRUVOICAtIEF0dHJpYnV0ZSBpcyB2YWxpZCBmb3IgWCBTY3JlZW4gdGFyZ2V0IHR5
cGVzLgotICogQVRUUklCVVRFX1RZUEVfWElORVJBTUEgIC0gQXR0cmlidXRlIHdpbGwgYmUgbWFk
ZSBjb25zaXN0ZW50IGZvciBhbGwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIFggU2Ny
ZWVucyB3aGVuIHRoZSBYaW5lcmFtYSBleHRlbnNpb24gaXMgZW5hYmxlZC4KLSAqIEFUVFJJQlVU
RV9UWVBFX1ZDU0MgICAgICAtIEF0dHJpYnV0ZSBpcyB2YWxpZCBmb3IgVmlzdWFsIENvbXB1dGlu
ZyBTeXN0ZW0KLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCB0eXBlcy4KLSAq
IEFUVFJJQlVURV9UWVBFX0dWSSAgICAgICAtIEF0dHJpYnV0ZSBpcyB2YWxpZCBmb3IgR3JhcGhp
Y3MgVmlkZW8gSW4gdGFyZ2V0Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy4K
LSAqIEFUVFJJQlVURV9UWVBFX0NPT0xFUiAgICAtIEF0dHJpYnV0ZSBpcyB2YWxpZCBmb3IgQ29v
bGVyIHRhcmdldCB0eXBlcy4KLSAqIEFUVFJJQlVURV9UWVBFXzNEX1ZJU0lPTl9QUk9fVFJBTlND
RUlWRVIgLSBBdHRyaWJ1dGUgaXMgdmFsaWQgZm9yIDNEIFZpc2lvbgotICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBybyBUcmFuc2NlaXZlciB0YXJnZXQgdHlw
ZXMuCi0gKgotICogU2VlICdLZXkgdG8gSW50ZWdlciBBdHRyaWJ1dGUgIlBlcm1pc3Npb25zIicg
YXQgdGhlIHRvcCBvZiB0aGlzCi0gKiBmaWxlIGZvciBhIGRlc2NyaXB0aW9uIG9mIHdoYXQgdGhl
c2UgcGVybWlzc2lvbiBiaXRzIG1lYW4uCi0gKi8KLQotI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9V
TktOT1dOIDAKLSNkZWZpbmUgQVRUUklCVVRFX1RZUEVfSU5URUdFUiAxCi0jZGVmaW5lIEFUVFJJ
QlVURV9UWVBFX0JJVE1BU0sgMgotI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9CT09MIDMKLSNkZWZp
bmUgQVRUUklCVVRFX1RZUEVfUkFOR0UgNAotI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9JTlRfQklU
UyA1Ci0jZGVmaW5lIEFUVFJJQlVURV9UWVBFXzY0QklUX0lOVEVHRVIgNgotI2RlZmluZSBBVFRS
SUJVVEVfVFlQRV9TVFJJTkcgNwotI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9CSU5BUllfREFUQSA4
Ci0jZGVmaW5lIEFUVFJJQlVURV9UWVBFX1NUUklOR19PUEVSQVRJT04gOQotCi0jZGVmaW5lIEFU
VFJJQlVURV9UWVBFX1JFQUQgMHgwMDEKLSNkZWZpbmUgQVRUUklCVVRFX1RZUEVfV1JJVEUgMHgw
MDIKLSNkZWZpbmUgQVRUUklCVVRFX1RZUEVfRElTUExBWSAweDAwNAotI2RlZmluZSBBVFRSSUJV
VEVfVFlQRV9HUFUgMHgwMDgKLSNkZWZpbmUgQVRUUklCVVRFX1RZUEVfRlJBTUVMT0NLIDB4MDEw
Ci0jZGVmaW5lIEFUVFJJQlVURV9UWVBFX1hfU0NSRUVOIDB4MDIwCi0jZGVmaW5lIEFUVFJJQlVU
RV9UWVBFX1hJTkVSQU1BIDB4MDQwCi0jZGVmaW5lIEFUVFJJQlVURV9UWVBFX1ZDU0MgMHgwODAK
LSNkZWZpbmUgQVRUUklCVVRFX1RZUEVfR1ZJIDB4MTAwCi0jZGVmaW5lIEFUVFJJQlVURV9UWVBF
X0NPT0xFUiAweDIwMAotI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9USEVSTUFMX1NFTlNPUiAweDQw
MAotI2RlZmluZSBBVFRSSUJVVEVfVFlQRV8zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSIDB4ODAw
Ci0KLSNkZWZpbmUgQVRUUklCVVRFX1RZUEVfQUxMX1RBUkdFVFMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoKEFUVFJJQlVURV9UWVBFX0RJ
U1BMQVkpIHwgKEFUVFJJQlVURV9UWVBFX0dQVSkgfCAoQVRUUklCVVRFX1RZUEVfRlJBTUVMT0NL
KSB8IFwKLSAgICAgKEFUVFJJQlVURV9UWVBFX1hfU0NSRUVOKSB8IChBVFRSSUJVVEVfVFlQRV9W
Q1NDKSB8IChBVFRSSUJVVEVfVFlQRV9HVkkpIHwgICAgIFwKLSAgICAgKEFUVFJJQlVURV9UWVBF
X0NPT0xFUikgfCAoQVRUUklCVVRFX1RZUEVfVEhFUk1BTF9TRU5TT1IpIHwgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgKEFUVFJJQlVURV9UWVBFXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVIp
KQotCi10eXBlZGVmIHN0cnVjdCBfTlZDVFJMQXR0cmlidXRlVmFsaWRWYWx1ZXMKLXsKLSAgICBp
bnQgdHlwZTsKLSAgICB1bmlvbgotICAgIHsKLSAgICAgICAgc3RydWN0Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIGludDY0X3QgbWluOwotICAgICAgICAgICAgaW50NjRfdCBtYXg7Ci0gICAgICAg
IH0gcmFuZ2U7Ci0gICAgICAgIHN0cnVjdAotICAgICAgICB7Ci0gICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgaW50czsKLSAgICAgICAgfSBiaXRzOwotICAgIH0gdTsKLSAgICB1bnNpZ25lZCBpbnQg
cGVybWlzc2lvbnM7Ci19IE5WQ1RSTEF0dHJpYnV0ZVZhbGlkVmFsdWVzUmVjOwotCi10eXBlZGVm
IHN0cnVjdCBfTlZDVFJMQXR0cmlidXRlUGVybWlzc2lvbnMKLXsKLSAgICBpbnQgdHlwZTsKLSAg
ICB1bnNpZ25lZCBpbnQgcGVybWlzc2lvbnM7Ci19IE5WQ1RSTEF0dHJpYnV0ZVBlcm1pc3Npb25z
UmVjOwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qCi0gKiBOVi1DT05UUk9MIFggZXZlbnQg
bm90aWZpY2F0aW9uLgotICoKLSAqIFRvIHJlY2VpdmUgWCBldmVudCBub3RpZmljYXRpb25zIGRl
YWxpbmcgd2l0aCBOVi1DT05UUk9MLCB5b3Ugc2hvdWxkCi0gKiBjYWxsIFhOVkN0cmxTZWxlY3RO
b3RpZnkoKSB3aXRoIG9uZSBvZiB0aGUgZm9sbG93aW5nIHNldCBhcyB0aGUgdHlwZQotICogb2Yg
ZXZlbnQgdG8gcmVjZWl2ZSAoc2VlIE5WQ3RybExpYi5oIGZvciBtb3JlIGluZm9ybWF0aW9uKToK
LSAqLwotCi0jZGVmaW5lIEFUVFJJQlVURV9DSEFOR0VEX0VWRU5UIDAKLSNkZWZpbmUgVEFSR0VU
X0FUVFJJQlVURV9DSEFOR0VEX0VWRU5UIDEKLSNkZWZpbmUgVEFSR0VUX0FUVFJJQlVURV9BVkFJ
TEFCSUxJVFlfQ0hBTkdFRF9FVkVOVCAyCi0jZGVmaW5lIFRBUkdFVF9TVFJJTkdfQVRUUklCVVRF
X0NIQU5HRURfRVZFTlQgMwotI2RlZmluZSBUQVJHRVRfQklOQVJZX0FUVFJJQlVURV9DSEFOR0VE
X0VWRU5UIDQKLQotI2VuZGlmIC8qIF9fTlZDVFJMX0ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsL05WQ3RybExpYi5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvTlZDdHJs
TGliLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhNWQ1ZGVjZmEzYmVhNGM0YjUw
NDYxNGVlMWFkNzM5ZWE4MTE2YWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhO
VkN0cmwvTlZDdHJsTGliLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MDcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoYykgMjAwOCBOVklESUEsIENvcnBvcmF0aW9uCi0gKgotICogUGVybWlzc2lv
biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu
aW5nIGEgY29weQotICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0
aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKLSAqIGluIHRoZSBTb2Z0d2FyZSB3
aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdo
dHMKLSAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg
c3VibGljZW5zZSwgYW5kL29yIHNlbGwKLSAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0
byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotICogZnVybmlzaGVkIHRv
IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAqCi0gKiBUaGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVk
aW5nIHRoZSBuZXh0Ci0gKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3Bp
ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCi0gKiBTb2Z0d2FyZS4KLSAqCi0gKiBU
SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg
S0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU
TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFCi0gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM
QUlNLCBEQU1BR0VTIE9SIE9USEVSCi0gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O
IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAotICogT1VUIE9G
IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBE
RUFMSU5HUyBJTiBUSEUKLSAqIFNPRlRXQVJFLgotICovCi0KLSNpZm5kZWYgX19OVkNUUkxMSUJf
SAotI2RlZmluZSBfX05WQ1RSTExJQl9ICi0KLSNpbmNsdWRlICJOVkN0cmwuaCIKLQotI2lmIGRl
ZmluZWQgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qCi0gKiAgWE5WQ1RS
TFF1ZXJ5RXh0ZW5zaW9uIC0KLSAqCi0gKiAgUmV0dXJucyBUcnVlIGlmIHRoZSBleHRlbnNpb24g
ZXhpc3RzLCByZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4KLSAqICBldmVudF9iYXNlcCBhbmQgZXJy
b3JfYmFzZXAgYXJlIHRoZSBleHRlbnNpb24gZXZlbnQgYW5kIGVycm9yCi0gKiAgYmFzZXMuICBD
dXJyZW50bHksIG5vIGV4dGVuc2lvbiBzcGVjaWZpYyBlcnJvcnMgb3IgZXZlbnRzIGFyZQotICog
IGRlZmluZWQuCi0gKi8KLQotQm9vbCBYTlZDVFJMUXVlcnlFeHRlbnNpb24oRGlzcGxheSAqZHB5
LCBpbnQgKmV2ZW50X2Jhc2VwLCBpbnQgKmVycm9yX2Jhc2VwKTsKLQotLyoKLSAqICBYTlZDVFJM
UXVlcnlWZXJzaW9uIC0KLSAqCi0gKiAgUmV0dXJucyBUcnVlIGlmIHRoZSBleHRlbnNpb24gZXhp
c3RzLCByZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4KLSAqICBtYWpvciBhbmQgbWlub3IgYXJlIHRo
ZSBleHRlbnNpb24ncyBtYWpvciBhbmQgbWlub3IgdmVyc2lvbgotICogIG51bWJlcnMuCi0gKi8K
LQotQm9vbCBYTlZDVFJMUXVlcnlWZXJzaW9uKERpc3BsYXkgKmRweSwgaW50ICptYWpvciwgaW50
ICptaW5vcik7Ci0KLS8qCi0gKiAgWE5WQ1RSTElzTnZTY3JlZW4KLSAqCi0gKiAgUmV0dXJucyBU
cnVlIGlzIHRoZSBzcGVjaWZpZWQgc2NyZWVuIGlzIGNvbnRyb2xsZWQgYnkgdGhlIE5WSURJQQot
ICogIGRyaXZlci4gIFJldHVybnMgRmFsc2Ugb3RoZXJ3aXNlLgotICovCi0KLUJvb2wgWE5WQ1RS
TElzTnZTY3JlZW4oRGlzcGxheSAqZHB5LCBpbnQgc2NyZWVuKTsKLQotLyoKLSAqICBYTlZDVFJM
UXVlcnlUYXJnZXRDb3VudCAtCi0gKgotICogIFJldHVybnMgVHJ1ZSBpZiB0aGUgdGFyZ2V0IHR5
cGUgZXhpc3RzLiAgUmV0dXJucyBGYWxzZSBvdGhlcndpc2UuCi0gKiAgSWYgWE5WQ1RSTFF1ZXJ5
VGFyZ2V0Q291bnQgcmV0dXJucyBUcnVlLCB2YWx1ZSB3aWxsIGNvbnRhaW4gdGhlCi0gKiAgY291
bnQgb2YgZXhpc3RpbmcgdGFyZ2V0cyBvbiB0aGUgc2VydmVyIG9mIHRoZSBzcGVjaWZpZWQgdGFy
Z2V0Ci0gKiAgdHlwZS4KLSAqCi0gKiAgUGxlYXNlIHNlZSAiQXR0cmlidXRlIFRhcmdldHMiIGlu
IE5WQ3RybC5oIGZvciB0aGUgbGlzdCBvZiB2YWxpZAotICogIHRhcmdldCB0eXBlcy4KLSAqCi0g
KiAgUG9zc2libGUgZXJyb3JzOgotICogICAgIEJhZFZhbHVlIC0gVGhlIHRhcmdldCBkb2Vzbid0
IGV4aXN0LgotICovCi0KLUJvb2wgWE5WQ1RSTFF1ZXJ5VGFyZ2V0Q291bnQoRGlzcGxheSAqZHB5
LCBpbnQgdGFyZ2V0X3R5cGUsIGludCAqdmFsdWUpOwotCi0vKgotICogIFhOVkNUUkxTZXRBdHRy
aWJ1dGUgLQotICoKLSAqICBTZXRzIHRoZSBhdHRyaWJ1dGUgdG8gdGhlIGdpdmVuIHZhbHVlLiAg
VGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyCi0gKiAgcG9zc2libGUgdmFsdWVzIGFyZSBsaXN0ZWQg
aW4gTlZDdHJsLmguCi0gKgotICogIE5vdCBhbGwgYXR0cmlidXRlcyByZXF1aXJlIHRoZSBkaXNw
bGF5X21hc2sgcGFyYW1ldGVyOyBzZWUKLSAqICBOVkN0cmwuaCBmb3IgZGV0YWlscy4KLSAqCi0g
KiAgQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyBYTlZDVFJM
U2V0VGFyZ2V0QXR0cmlidXRlKCkKLSAqICB3aXRoIHRoZSB0YXJnZXRfdHlwZSBzZXQgdG8gTlZf
Q1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiBhbmQKLSAqICB0YXJnZXRfaWQgc2V0IHRvICdzY3Jl
ZW4nLgotICoKLSAqICBQb3NzaWJsZSBlcnJvcnM6Ci0gKiAgICAgQmFkVmFsdWUgLSBUaGUgc2Ny
ZWVuIG9yIGF0dHJpYnV0ZSBkb2Vzbid0IGV4aXN0LgotICogICAgIEJhZE1hdGNoIC0gVGhlIE5W
SURJQSBkcml2ZXIgaXMgbm90IHByZXNlbnQgb24gdGhhdCBzY3JlZW4uCi0gKi8KLQotdm9pZCBY
TlZDVFJMU2V0QXR0cmlidXRlKERpc3BsYXkgKmRweSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgc2NyZWVuLAotICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkaXNw
bGF5X21hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUpOwotCi0vKgotICogIFhOVkNU
UkxTZXRUYXJnZXRBdHRyaWJ1dGUgLQotICoKLSAqICBTZXRzIHRoZSBhdHRyaWJ1dGUgdG8gdGhl
IGdpdmVuIHZhbHVlLiAgVGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyCi0gKiAgcG9zc2libGUgdmFs
dWVzIGFyZSBsaXN0ZWQgaW4gTlZDdHJsLmguCi0gKgotICogIE5vdCBhbGwgYXR0cmlidXRlcyBy
ZXF1aXJlIHRoZSBkaXNwbGF5X21hc2sgcGFyYW1ldGVyOyBzZWUKLSAqICBOVkN0cmwuaCBmb3Ig
ZGV0YWlscy4KLSAqCi0gKiAgUG9zc2libGUgZXJyb3JzOgotICogICAgIEJhZFZhbHVlIC0gVGhl
IHRhcmdldCBvciBhdHRyaWJ1dGUgZG9lc24ndCBleGlzdC4KLSAqICAgICBCYWRNYXRjaCAtIFRo
ZSBOVklESUEgZHJpdmVyIGlzIG5vdCBwcmVzZW50IG9uIHRoYXQgdGFyZ2V0LgotICovCi0KLXZv
aWQgWE5WQ1RSTFNldFRhcmdldEF0dHJpYnV0ZShEaXNwbGF5ICpkcHksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHRhcmdldF90eXBlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCB0YXJnZXRfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCB2YWx1ZSk7Ci0KLS8qCi0gKiAgWE5WQ1RSTFNldEF0dHJpYnV0ZUFuZEdldFN0YXR1cyAt
Ci0gKgotICogU2FtZSBhcyBYTlZDVFJMU2V0QXR0cmlidXRlKCkuCi0gKiBJbiBhZGRpdGlvbiwg
WE5WQ1RSTFNldEF0dHJpYnV0ZUFuZEdldFN0YXR1cygpIHJldHVybnMKLSAqIFRydWUgaWYgdGhl
IG9wZXJhdGlvbiBzdWNjZWVkcywgRmFsc2Ugb3RoZXJ3aXNlLgotICoKLSAqLwotCi1Cb29sIFhO
VkNUUkxTZXRBdHRyaWJ1dGVBbmRHZXRTdGF0dXMoRGlzcGxheSAqZHB5LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzY3JlZW4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSk7Ci0KLS8qCi0gKiAgWE5W
Q1RSTFNldFRhcmdldEF0dHJpYnV0ZUFuZEdldFN0YXR1cyAtCi0gKgotICogU2FtZSBhcyBYTlZD
VFJMU2V0VGFyZ2V0QXR0cmlidXRlKCkuCi0gKiBJbiBhZGRpdGlvbiwgWE5WQ1RSTFNldFRhcmdl
dEF0dHJpYnV0ZUFuZEdldFN0YXR1cygpIHJldHVybnMKLSAqIFRydWUgaWYgdGhlIG9wZXJhdGlv
biBzdWNjZWVkcywgRmFsc2Ugb3RoZXJ3aXNlLgotICoKLSAqLwotCi1Cb29sIFhOVkNUUkxTZXRU
YXJnZXRBdHRyaWJ1dGVBbmRHZXRTdGF0dXMoRGlzcGxheSAqZHB5LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRfdHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X2lkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21h
c2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IGF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgdmFsdWUpOwotCi0vKgotICogIFhOVkNUUkxRdWVyeUF0dHJpYnV0ZSAtCi0gKgotICog
IFJldHVybnMgVHJ1ZSBpZiB0aGUgYXR0cmlidXRlIGV4aXN0cy4gIFJldHVybnMgRmFsc2Ugb3Ro
ZXJ3aXNlLgotICogIElmIFhOVkNUUkxRdWVyeUF0dHJpYnV0ZSByZXR1cm5zIFRydWUsIHZhbHVl
IHdpbGwgY29udGFpbiB0aGUKLSAqICB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIGF0dHJpYnV0ZS4K
LSAqCi0gKiAgTm90IGFsbCBhdHRyaWJ1dGVzIHJlcXVpcmUgdGhlIGRpc3BsYXlfbWFzayBwYXJh
bWV0ZXI7IHNlZQotICogIE5WQ3RybC5oIGZvciBkZXRhaWxzLgotICoKLSAqICBDYWxsaW5nIHRo
aXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nCi0gKiAgWE5WQ1RSTFF1ZXJ5VGFy
Z2V0QXR0cmlidXRlKCkgd2l0aCB0aGUgdGFyZ2V0X3R5cGUgc2V0IHRvCi0gKiAgTlZfQ1RSTF9U
QVJHRVRfVFlQRV9YX1NDUkVFTiBhbmQgdGFyZ2V0X2lkIHNldCB0byAnc2NyZWVuJy4KLSAqCi0g
KiAgUG9zc2libGUgZXJyb3JzOgotICogICAgIEJhZFZhbHVlIC0gVGhlIHNjcmVlbiBkb2Vzbid0
IGV4aXN0LgotICogICAgIEJhZE1hdGNoIC0gVGhlIE5WSURJQSBkcml2ZXIgaXMgbm90IHByZXNl
bnQgb24gdGhhdCBzY3JlZW4uCi0gKi8KLQotQm9vbCBYTlZDVFJMUXVlcnlBdHRyaWJ1dGUoRGlz
cGxheSAqZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNjcmVlbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50ICp2YWx1ZSk7Ci0KLS8qCi0gKiBYTlZDVFJMUXVlcnlUYXJnZXRB
dHRyaWJ1dGUgLQotICoKLSAqICBSZXR1cm5zIFRydWUgaWYgdGhlIGF0dHJpYnV0ZSBleGlzdHMu
ICBSZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4KLSAqICBJZiBYTlZDVFJMUXVlcnlUYXJnZXRBdHRy
aWJ1dGUgcmV0dXJucyBUcnVlLCB2YWx1ZSB3aWxsIGNvbnRhaW4gdGhlCi0gKiAgdmFsdWUgb2Yg
dGhlIHNwZWNpZmllZCBhdHRyaWJ1dGUuCi0gKgotICogIE5vdCBhbGwgYXR0cmlidXRlcyByZXF1
aXJlIHRoZSBkaXNwbGF5X21hc2sgcGFyYW1ldGVyOyBzZWUKLSAqICBOVkN0cmwuaCBmb3IgZGV0
YWlscy4KLSAqCi0gKiAgUG9zc2libGUgZXJyb3JzOgotICogICAgIEJhZFZhbHVlIC0gVGhlIHRh
cmdldCBkb2Vzbid0IGV4aXN0LgotICogICAgIEJhZE1hdGNoIC0gVGhlIE5WSURJQSBkcml2ZXIg
ZG9lcyBub3QgY29udHJvbCB0aGUgdGFyZ2V0LgotICovCi0KLUJvb2wgWE5WQ1RSTFF1ZXJ5VGFy
Z2V0QXR0cmlidXRlKERpc3BsYXkgKmRweSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCB0YXJnZXRfVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCB0YXJnZXRfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgZGlzcGxheV9tYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IGF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAq
dmFsdWUpOwotCi0vKgotICogWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlNjQgLQotICoKLSAq
ICBSZXR1cm5zIFRydWUgaWYgdGhlIGF0dHJpYnV0ZSBleGlzdHMuICBSZXR1cm5zIEZhbHNlIG90
aGVyd2lzZS4KLSAqICBJZiBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUgcmV0dXJucyBUcnVl
LCB2YWx1ZSB3aWxsIGNvbnRhaW4gdGhlCi0gKiAgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBhdHRy
aWJ1dGUuCi0gKgotICogIE5vdCBhbGwgYXR0cmlidXRlcyByZXF1aXJlIHRoZSBkaXNwbGF5X21h
c2sgcGFyYW1ldGVyOyBzZWUKLSAqICBOVkN0cmwuaCBmb3IgZGV0YWlscy4KLSAqCi0gKiAgTm90
ZTogdGhpcyBmdW5jdGlvbiBiZWhhdmVzIGxpa2UgWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRl
KCksCi0gKiAgYnV0IHN1cHBvcnRzIDY0LWJpdCBpbnRlZ2VyIGF0dHJpYnV0ZXMuCi0gKgotICog
IFBvc3NpYmxlIGVycm9yczoKLSAqICAgICBCYWRWYWx1ZSAtIFRoZSB0YXJnZXQgZG9lc24ndCBl
eGlzdC4KLSAqICAgICBCYWRNYXRjaCAtIFRoZSBOVklESUEgZHJpdmVyIGRvZXMgbm90IGNvbnRy
b2wgdGhlIHRhcmdldC4KLSAqLwotCi1Cb29sIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZTY0
KERpc3BsYXkgKmRweSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRh
cmdldF9UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0
X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGlz
cGxheV9tYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQ2NF90
ICp2YWx1ZSk7Ci0KLS8qCi0gKiAgWE5WQ1RSTFF1ZXJ5U3RyaW5nQXR0cmlidXRlIC0KLSAqCi0g
KiAgUmV0dXJucyBUcnVlIGlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzLiAgUmV0dXJucyBGYWxzZSBv
dGhlcndpc2UuCi0gKiAgSWYgWE5WQ1RSTFF1ZXJ5U3RyaW5nQXR0cmlidXRlIHJldHVybnMgVHJ1
ZSwgKnB0ciB3aWxsIHBvaW50IHRvIGFuCi0gKiAgYWxsb2NhdGVkIHN0cmluZyBjb250YWluaW5n
IHRoZSBzdHJpbmcgYXR0cmlidXRlIHJlcXVlc3RlZC4gIEl0IGlzCi0gKiAgdGhlIGNhbGxlcidz
IHJlc3BvbnNpYmlsaXR5IHRvIGZyZWUgdGhlIHN0cmluZyB3aGVuIGRvbmUuCi0gKgotICogIENh
bGxpbmcgdGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcKLSAqICBYTlZDVFJM
UXVlcnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUoKSB3aXRoIHRoZSB0YXJnZXRfdHlwZSBzZXQgdG8K
LSAqICBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIGFuZCB0YXJnZXRfaWQgc2V0IHRvICdz
Y3JlZW4nLgotICoKLSAqICBQb3NzaWJsZSBlcnJvcnM6Ci0gKiAgICAgQmFkVmFsdWUgLSBUaGUg
c2NyZWVuIGRvZXNuJ3QgZXhpc3QuCi0gKiAgICAgQmFkTWF0Y2ggLSBUaGUgTlZJRElBIGRyaXZl
ciBpcyBub3QgcHJlc2VudCBvbiB0aGF0IHNjcmVlbi4KLSAqICAgICBCYWRBbGxvYyAtIEluc3Vm
ZmljaWVudCByZXNvdXJjZXMgdG8gZnVsZmlsbCB0aGUgcmVxdWVzdC4KLSAqLwotCi1Cb29sIFhO
VkNUUkxRdWVyeVN0cmluZ0F0dHJpYnV0ZShEaXNwbGF5ICpkcHksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgc2NyZWVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyICoqcHRyKTsKLQotLyoKLSAqICBYTlZDVFJMUXVlcnlUYXJnZXRTdHJp
bmdBdHRyaWJ1dGUgLQotICoKLSAqICBSZXR1cm5zIFRydWUgaWYgdGhlIGF0dHJpYnV0ZSBleGlz
dHMuICBSZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4KLSAqICBJZiBYTlZDVFJMUXVlcnlUYXJnZXRT
dHJpbmdBdHRyaWJ1dGUgcmV0dXJucyBUcnVlLCAqcHRyIHdpbGwgcG9pbnQKLSAqICB0byBhbiBh
bGxvY2F0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHN0cmluZyBhdHRyaWJ1dGUgcmVxdWVzdGVk
LgotICogIEl0IGlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eSB0byBmcmVlIHRoZSBzdHJp
bmcgd2hlbiBkb25lLgotICoKLSAqICBQb3NzaWJsZSBlcnJvcnM6Ci0gKiAgICAgQmFkVmFsdWUg
LSBUaGUgdGFyZ2V0IGRvZXNuJ3QgZXhpc3QuCi0gKiAgICAgQmFkTWF0Y2ggLSBUaGUgTlZJRElB
IGRyaXZlciBkb2VzIG5vdCBjb250cm9sIHRoZSB0YXJnZXQuCi0gKiAgICAgQmFkQWxsb2MgLSBJ
bnN1ZmZpY2llbnQgcmVzb3VyY2VzIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3QuCi0gKi8KLQotQm9v
bCBYTlZDVFJMUXVlcnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUoRGlzcGxheSAqZHB5LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldF90eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldF9pZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ss
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXR0
cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKnB0
cik7Ci0KLS8qCi0gKiAgWE5WQ1RSTFNldFN0cmluZ0F0dHJpYnV0ZSAtCi0gKgotICogIFJldHVy
bnMgVHJ1ZSBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZGVkLiAgUmV0dXJucyBGYWxzZSBvdGhlcndp
c2UuCi0gKgotICogIFBvc3NpYmxlIFggZXJyb3JzOgotICogICAgIEJhZFZhbHVlIC0gVGhlIHNj
cmVlbiBkb2Vzbid0IGV4aXN0LgotICogICAgIEJhZE1hdGNoIC0gVGhlIE5WSURJQSBkcml2ZXIg
aXMgbm90IHByZXNlbnQgb24gdGhhdCBzY3JlZW4uCi0gKiAgICAgQmFkQWxsb2MgLSBJbnN1ZmZp
Y2llbnQgcmVzb3VyY2VzIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3QuCi0gKi8KLQotQm9vbCBYTlZD
VFJMU2V0U3RyaW5nQXR0cmlidXRlKERpc3BsYXkgKmRweSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgc2NyZWVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBkaXNwbGF5X21hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
aGFyICpwdHIpOwotCi0vKgotICogIFhOVkNUUkxTZXRUYXJnZXRTdHJpbmdBdHRyaWJ1dGUgLQot
ICoKLSAqICBSZXR1cm5zIFRydWUgaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWRlZC4gIFJldHVybnMg
RmFsc2Ugb3RoZXJ3aXNlLgotICoKLSAqICBQb3NzaWJsZSBYIGVycm9yczoKLSAqICAgICBCYWRW
YWx1ZSAtIFRoZSBzY3JlZW4gZG9lc24ndCBleGlzdC4KLSAqICAgICBCYWRNYXRjaCAtIFRoZSBO
VklESUEgZHJpdmVyIGlzIG5vdCBwcmVzZW50IG9uIHRoYXQgc2NyZWVuLgotICogICAgIEJhZEFs
bG9jIC0gSW5zdWZmaWNpZW50IHJlc291cmNlcyB0byBmdWxmaWxsIHRoZSByZXF1ZXN0LgotICov
Ci0KLUJvb2wgWE5WQ1RSTFNldFRhcmdldFN0cmluZ0F0dHJpYnV0ZShEaXNwbGF5ICpkcHksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldF90eXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRfaWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cmli
dXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnB0cik7Ci0K
LS8qCi0gKiBYTlZDVFJMUXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlcyAtCi0gKgotICogUmV0dXJu
cyBUcnVlIGlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzLiAgUmV0dXJucyBGYWxzZSBvdGhlcndpc2Uu
ICBJZgotICogWE5WQ1RSTFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXMgcmV0dXJucyBUcnVlLCB2
YWx1ZXMgd2lsbCBpbmRpY2F0ZQotICogdGhlIHZhbGlkIHZhbHVlcyBmb3IgdGhlIHNwZWNpZmll
ZCBhdHRyaWJ1dGU7IHNlZSB0aGUgZGVzY3JpcHRpb24KLSAqIG9mIE5WQ1RSTEF0dHJpYnV0ZVZh
bGlkVmFsdWVzIGluIE5WQ3RybC5oLgotICoKLSAqICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gaXMg
ZXF1aXZhbGVudCB0byBjYWxsaW5nCi0gKiAgWE5WQ1RSTFF1ZXJ5VmFsaWRUYXJnZXRBdHRyaWJ1
dGVWYWx1ZXMoKSB3aXRoIHRoZSB0YXJnZXRfdHlwZSBzZXQgdG8KLSAqICBOVl9DVFJMX1RBUkdF
VF9UWVBFX1hfU0NSRUVOIGFuZCB0YXJnZXRfaWQgc2V0IHRvICdzY3JlZW4nLgotICovCi0KLUJv
b2wgWE5WQ1RSTFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXMoRGlzcGxheSAqZHB5LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NyZWVuLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVkNUUkxBdHRyaWJ1dGVW
YWxpZFZhbHVlc1JlYyAqdmFsdWVzKTsKLQotLyoKLSAqIFhOVkNUUkxRdWVyeVZhbGlkVGFyZ2V0
QXR0cmlidXRlVmFsdWVzIC0KLSAqCi0gKiBSZXR1cm5zIFRydWUgaWYgdGhlIGF0dHJpYnV0ZSBl
eGlzdHMuICBSZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4gIElmCi0gKiBYTlZDVFJMUXVlcnlWYWxp
ZFRhcmdldEF0dHJpYnV0ZVZhbHVlcyByZXR1cm5zIFRydWUsIHZhbHVlcyB3aWxsIGluZGljYXRl
Ci0gKiB0aGUgdmFsaWQgdmFsdWVzIGZvciB0aGUgc3BlY2lmaWVkIGF0dHJpYnV0ZS4KLSAqLwot
Ci1Cb29sIFhOVkNUUkxRdWVyeVZhbGlkVGFyZ2V0QXR0cmlidXRlVmFsdWVzKERpc3BsYXkgKmRw
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdl
dF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
dGFyZ2V0X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOVkNUUkxBdHRyaWJ1dGVWYWxpZFZhbHVlc1JlYyAq
dmFsdWVzKTsKLQotLyoKLSAqIFhOVkNUUkxRdWVyeVZhbGlkVGFyZ2V0U3RyaW5nQXR0cmlidXRl
VmFsdWVzIC0KLSAqCi0gKiBSZXR1cm5zIFRydWUgaWYgdGhlIGF0dHJpYnV0ZSBleGlzdHMuICBS
ZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4gIElmCi0gKiBYTlZDVFJMUXVlcnlWYWxpZFRhcmdldFN0
cmluZ0F0dHJpYnV0ZVZhbHVlcyByZXR1cm5zIFRydWUsIHZhbHVlcyB3aWxsCi0gKiBpbmRpY2F0
ZSB0aGUgdmFsaWQgdmFsdWVzIGZvciB0aGUgc3BlY2lmaWVkIGF0dHJpYnV0ZS4KLSAqLwotCi1C
b29sIFhOVkNUUkxRdWVyeVZhbGlkVGFyZ2V0U3RyaW5nQXR0cmlidXRlVmFsdWVzKERpc3BsYXkg
KmRweSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHRhcmdldF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgdGFyZ2V0X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXR0
cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOVkNUUkxBdHRyaWJ1dGVWYWxpZFZhbHVlc1JlYyAqdmFsdWVzKTsKLQotLyoKLSAqIFhOVkNU
UkxRdWVyeUF0dHJpYnV0ZVBlcm1pc3Npb25zIC0KLSAqCi0gKiBSZXR1cm5zIFRydWUgaWYgdGhl
IGF0dHJpYnV0ZSBleGlzdHMuICBSZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4gIElmCi0gKiBYTlZD
VFJMUXVlcnlBdHRyaWJ1dGVQZXJtaXNzaW9ucyByZXR1cm5zIFRydWUsIHBlcm1pc3Npb25zIHdp
bGwKLSAqIGluZGljYXRlIHRoZSBwZXJtaXNzaW9uIGZsYWdzIGZvciB0aGUgYXR0cmlidXRlLgot
ICovCi0KLUJvb2wgWE5WQ1RSTFF1ZXJ5QXR0cmlidXRlUGVybWlzc2lvbnMoRGlzcGxheSAqZHB5
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXR0
cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVkNUUkxBdHRy
aWJ1dGVQZXJtaXNzaW9uc1JlYyAqcGVybWlzc2lvbnMpOwotCi0vKgotICogWE5WQ1RSTFF1ZXJ5
U3RyaW5nQXR0cmlidXRlUGVybWlzc2lvbnMgLQotICoKLSAqIFJldHVybnMgVHJ1ZSBpZiB0aGUg
YXR0cmlidXRlIGV4aXN0cy4gIFJldHVybnMgRmFsc2Ugb3RoZXJ3aXNlLiAgSWYKLSAqIFhOVkNU
UkxRdWVyeVN0cmluZ0F0dHJpYnV0ZVBlcm1pc3Npb25zIHJldHVybnMgVHJ1ZSwgcGVybWlzc2lv
bnMgd2lsbAotICogaW5kaWNhdGUgdGhlIHBlcm1pc3Npb24gZmxhZ3MgZm9yIHRoZSBhdHRyaWJ1
dGUuCi0gKi8KLQotQm9vbCBYTlZDVFJMUXVlcnlTdHJpbmdBdHRyaWJ1dGVQZXJtaXNzaW9ucyhE
aXNwbGF5ICpkcHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5WQ1RSTEF0dHJpYnV0ZVBlcm1pc3Npb25zUmVjICpwZXJtaXNzaW9ucyk7
Ci0KLS8qCi0gKiBYTlZDVFJMUXVlcnlCaW5hcnlEYXRhQXR0cmlidXRlUGVybWlzc2lvbnMgLQot
ICoKLSAqIFJldHVybnMgVHJ1ZSBpZiB0aGUgYXR0cmlidXRlIGV4aXN0cy4gIFJldHVybnMgRmFs
c2Ugb3RoZXJ3aXNlLiAgSWYKLSAqIFhOVkNUUkxRdWVyeUJpbmFyeURhdGFBdHRyaWJ1dGVQZXJt
aXNzaW9ucyByZXR1cm5zIFRydWUsIHBlcm1pc3Npb25zCi0gKiB3aWxsIGluZGljYXRlIHRoZSBw
ZXJtaXNzaW9uIGZsYWdzIGZvciB0aGUgYXR0cmlidXRlLgotICovCi0KLUJvb2wgWE5WQ1RSTFF1
ZXJ5QmluYXJ5RGF0YUF0dHJpYnV0ZVBlcm1pc3Npb25zKERpc3BsYXkgKmRweSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhdHRy
aWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
VkNUUkxBdHRyaWJ1dGVQZXJtaXNzaW9uc1JlYyAqcGVybWlzc2lvbnMpOwotCi0vKgotICogWE5W
Q1RSTFF1ZXJ5U3RyaW5nT3BlcmF0aW9uQXR0cmlidXRlUGVybWlzc2lvbnMgLQotICoKLSAqIFJl
dHVybnMgVHJ1ZSBpZiB0aGUgYXR0cmlidXRlIGV4aXN0cy4gIFJldHVybnMgRmFsc2Ugb3RoZXJ3
aXNlLiAgSWYKLSAqIFhOVkNUUkxRdWVyeVN0cmluZ09wZXJhdGlvbkF0dHJpYnV0ZVBlcm1pc3Np
b25zIHJldHVybnMgVHJ1ZSwKLSAqIHBlcm1pc3Npb25zIHdpbGwgaW5kaWNhdGUgdGhlIHBlcm1p
c3Npb24gZmxhZ3MgZm9yIHRoZSBhdHRyaWJ1dGUuCi0gKi8KLQotQm9vbCBYTlZDVFJMUXVlcnlT
dHJpbmdPcGVyYXRpb25BdHRyaWJ1dGVQZXJtaXNzaW9ucyhEaXNwbGF5ICpkcHksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGlu
dCBhdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5WQ1RSTEF0dHJpYnV0ZVBlcm1pc3Npb25zUmVjICpwZXJtaXNzaW9ucyk7Ci0K
LS8qCi0gKiAgWE5WQ1RSTFNldEd2b0NvbG9yQ29udmVyc2lvbiAtCi0gKgotICogIFNldHMgdGhl
IGNvbG9yIGNvbnZlcnNpb24gbWF0cml4LCBvZmZzZXQsIGFuZCBzY2FsZSB0aGF0IHNob3VsZCBi
ZQotICogIHVzZWQgZm9yIEdWTyAoR3JhcGhpYyB0byBWaWRlbyBPdXQpLgotICoKLSAqICBUaGUg
Q29sb3IgU3BhY2UgQ29udmVyc2lvbiBkYXRhIGlzIG9yZGVyZWQgbGlrZSB0aGlzOgotICoKLSAq
ICAgY29sb3JNYXRyaXhbMF1bMF0gLy8gci5ZCi0gKiAgIGNvbG9yTWF0cml4WzBdWzFdIC8vIGcu
WQotICogICBjb2xvck1hdHJpeFswXVsyXSAvLyBiLlkKLSAqCi0gKiAgIGNvbG9yTWF0cml4WzFd
WzBdIC8vIHIuQ3IKLSAqICAgY29sb3JNYXRyaXhbMV1bMV0gLy8gZy5DcgotICogICBjb2xvck1h
dHJpeFsxXVsyXSAvLyBiLkNyCi0gKgotICogICBjb2xvck1hdHJpeFsyXVswXSAvLyByLkNiCi0g
KiAgIGNvbG9yTWF0cml4WzJdWzFdIC8vIGcuQ2IKLSAqICAgY29sb3JNYXRyaXhbMl1bMl0gLy8g
Yi5DYgotICoKLSAqICAgY29sb3JPZmZzZXRbMF0gICAgLy8gWQotICogICBjb2xvck9mZnNldFsx
XSAgICAvLyBDcgotICogICBjb2xvck9mZnNldFsyXSAgICAvLyBDYgotICoKLSAqICAgY29sb3JT
Y2FsZVswXSAgICAgLy8gWQotICogICBjb2xvclNjYWxlWzFdICAgICAvLyBDcgotICogICBjb2xv
clNjYWxlWzJdICAgICAvLyBDYgotICoKLSAqICB3aGVyZSB0aGUgZGF0YSBpcyB1c2VkIGFjY29y
ZGluZyB0byB0aGUgZm9sbG93aW5nIGZvcm11bGFlOgotICoKLSAqICAgWSAgPSAgY29sb3JPZmZz
ZXRbMF0gKyBjb2xvclNjYWxlWzBdICoKLSAqICAgICAgICAgICAoUiAqIGNvbG9yTWF0cml4WzBd
WzBdICsKLSAqICAgICAgICAgICAgRyAqIGNvbG9yTWF0cml4WzBdWzFdICsKLSAqICAgICAgICAg
ICAgQiAqIGNvbG9yTWF0cml4WzBdWzJdKTsKLSAqCi0gKiAgIENyID0gIGNvbG9yT2Zmc2V0WzFd
ICsgY29sb3JTY2FsZVsxXSAqCi0gKiAgICAgICAgICAgKFIgKiBjb2xvck1hdHJpeFsxXVswXSAr
Ci0gKiAgICAgICAgICAgIEcgKiBjb2xvck1hdHJpeFsxXVsxXSArCi0gKiAgICAgICAgICAgIEIg
KiBjb2xvck1hdHJpeFsxXVsyXSk7Ci0gKgotICogICBDYiA9ICBjb2xvck9mZnNldFsyXSArIGNv
bG9yU2NhbGVbMl0gKgotICogICAgICAgICAgIChSICogY29sb3JNYXRyaXhbMl1bMF0gKwotICog
ICAgICAgICAgICBHICogY29sb3JNYXRyaXhbMl1bMV0gKwotICogICAgICAgICAgICBCICogY29s
b3JNYXRyaXhbMl1bMl0pOwotICoKLSAqICBQb3NzaWJsZSBlcnJvcnM6Ci0gKiAgICAgQmFkTWF0
Y2ggLSBUaGUgTlZJRElBIGRyaXZlciBpcyBub3QgcHJlc2VudCBvbiB0aGF0IHNjcmVlbi4KLSAq
ICAgICBCYWRJbXBsZW1lbnRhdGlvbiAtIEdWTyBpcyBub3QgYXZhaWxhYmxlIG9uIHRoYXQgc2Ny
ZWVuLgotICovCi0KLXZvaWQgWE5WQ1RSTFNldEd2b0NvbG9yQ29udmVyc2lvbihEaXNwbGF5ICpk
cHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNjcmVlbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBjb2xvck1hdHJpeFszXVszXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBjb2xvck9mZnNldFszXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBjb2xvclNjYWxlWzNdKTsKLQot
LyoKLSAqICBYTlZDVFJMUXVlcnlHdm9Db2xvckNvbnZlcnNpb24gLQotICoKLSAqICBSZXRyaWV2
ZXMgdGhlIGNvbG9yIGNvbnZlcnNpb24gbWF0cml4IGFuZCBjb2xvciBvZmZzZXQKLSAqICB0aGF0
IGFyZSBjdXJyZW50bHkgYmVpbmcgdXNlZCBmb3IgR1ZPIChHcmFwaGljIHRvIFZpZGVvIE91dCku
Ci0gKgotICogIFRoZSB2YWx1ZXMgYXJlIG9yZGVyZWQgd2l0aGluIHRoZSBhcnJheXMgYWNjb3Jk
aW5nIHRvIHRoZSBjb21tZW50cwotICogIGZvciBYTlZDVFJMU2V0R3ZvQ29sb3JDb252ZXJzaW9u
KCkuCi0gKgotICogIFBvc3NpYmxlIGVycm9yczoKLSAqICAgICBCYWRNYXRjaCAtIFRoZSBOVklE
SUEgZHJpdmVyIGlzIG5vdCBwcmVzZW50IG9uIHRoYXQgc2NyZWVuLgotICogICAgIEJhZEltcGxl
bWVudGF0aW9uIC0gR1ZPIGlzIG5vdCBhdmFpbGFibGUgb24gdGhhdCBzY3JlZW4uCi0gKi8KLQot
Qm9vbCBYTlZDVFJMUXVlcnlHdm9Db2xvckNvbnZlcnNpb24oRGlzcGxheSAqZHB5LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNjcmVlbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGNvbG9yTWF0cml4WzNdWzNdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgY29sb3JPZmZzZXRbM10sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBjb2xvclNjYWxlWzNdKTsKLQotLyoK
LSAqICBYTlZDVFJMUXVlcnlCaW5hcnlEYXRhIC0KLSAqCi0gKiAgUmV0dXJucyBUcnVlIGlmIHRo
ZSBhdHRyaWJ1dGUgZXhpc3RzLiAgUmV0dXJucyBGYWxzZSBvdGhlcndpc2UuCi0gKiAgSWYgWE5W
Q1RSTFF1ZXJ5QmluYXJ5RGF0YSByZXR1cm5zIFRydWUsICpwdHIgd2lsbCBwb2ludCB0byBhbgot
ICogIGFsbG9jYXRlZCBibG9jayBvZiBtZW1vcnkgY29udGFpbmluZyB0aGUgYmluYXJ5IGRhdGEg
YXR0cmlidXRlCi0gKiAgcmVxdWVzdGVkLiAgSXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmls
aXR5IHRvIGZyZWUgdGhlIGRhdGEKLSAqICB3aGVuIGRvbmUuICBsZW4gd2lsbCBsaXN0IHRoZSBs
ZW5ndGggb2YgdGhlIGJpbmFyeSBkYXRhLgotICoKLSAqICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24g
aXMgZXF1aXZhbGVudCB0byBjYWxsaW5nCi0gKiAgWE5WQ1RSTFF1ZXJ5VGFyZ2V0QmluYXJ5RGF0
YSgpIHdpdGggdGhlIHRhcmdldF90eXBlIHNldCB0bwotICogIE5WX0NUUkxfVEFSR0VUX1RZUEVf
WF9TQ1JFRU4gYW5kIHRhcmdldF9pZCBzZXQgdG8gJ3NjcmVlbicuCi0gKgotICogIFBvc3NpYmxl
IGVycm9yczoKLSAqICAgICBCYWRWYWx1ZSAtIFRoZSBzY3JlZW4gZG9lc24ndCBleGlzdC4KLSAq
ICAgICBCYWRNYXRjaCAtIFRoZSBOVklESUEgZHJpdmVyIGlzIG5vdCBwcmVzZW50IG9uIHRoYXQg
c2NyZWVuLgotICogICAgIEJhZEFsbG9jIC0gSW5zdWZmaWNpZW50IHJlc291cmNlcyB0byBmdWxm
aWxsIHRoZSByZXF1ZXN0LgotICovCi0KLUJvb2wgWE5WQ1RSTFF1ZXJ5QmluYXJ5RGF0YShEaXNw
bGF5ICpkcHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNjcmVlbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKnB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgKmxlbik7Ci0KLS8qCi0gKiBYTlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlE
YXRhIC0KLSAqCi0gKiAgUmV0dXJucyBUcnVlIGlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzLiAgUmV0
dXJucyBGYWxzZSBvdGhlcndpc2UuCi0gKiAgSWYgWE5WQ1RSTFF1ZXJ5VGFyZ2V0QmluYXJ5RGF0
YSByZXR1cm5zIFRydWUsICpwdHIgd2lsbCBwb2ludCB0byBhbgotICogIGFsbG9jYXRlZCBibG9j
ayBvZiBtZW1vcnkgY29udGFpbmluZyB0aGUgYmluYXJ5IGRhdGEgYXR0cmlidXRlCi0gKiAgcmVx
dWVzdGVkLiAgSXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGZyZWUgdGhlIGRh
dGEKLSAqICB3aGVuIGRvbmUuICBsZW4gd2lsbCBsaXN0IHRoZSBsZW5ndGggb2YgdGhlIGJpbmFy
eSBkYXRhLgotICoKLSAqICBQb3NzaWJsZSBlcnJvcnM6Ci0gKiAgICAgQmFkVmFsdWUgLSBUaGUg
dGFyZ2V0IGRvZXNuJ3QgZXhpc3QuCi0gKiAgICAgQmFkTWF0Y2ggLSBUaGUgTlZJRElBIGRyaXZl
ciBkb2VzIG5vdCBjb250cm9sIHRoZSB0YXJnZXQuCi0gKiAgICAgQmFkQWxsb2MgLSBJbnN1ZmZp
Y2llbnQgcmVzb3VyY2VzIHRvIGZ1bGZpbGwgdGhlIHJlcXVlc3QuCi0gKi8KLQotQm9vbCBYTlZD
VFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRhKERpc3BsYXkgKmRweSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHRhcmdldF9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKnB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgKmxlbik7Ci0KLS8qCi0gKiBYTlZDVFJMU3RyaW5nT3BlcmF0aW9uIC0K
LSAqCi0gKiBUYWtlcyBhIHN0cmluZyBhcyBpbnB1dCBhbmQgcmV0dXJucyBhIFhtYWxsb2MnZWQg
c3RyaW5nIGFzIG91dHB1dC4KLSAqIFJldHVybnMgVHJ1ZSBvbiBzdWNjZXNzIGFuZCBGYWxzZSBv
biBmYWlsdXJlLgotICovCi0KLUJvb2wgWE5WQ1RSTFN0cmluZ09wZXJhdGlvbihEaXNwbGF5ICpk
cHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldF90eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRfaWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNoYXIgKnBJbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqcHBPdXQp
OwotCi0vKgotICogWE5WQ3RybFNlbGVjdE5vdGlmeSAtCi0gKgotICogVGhpcyBlbmFibGVzL2Rp
c2FibGVzIHJlY2VpdmluZyBvZiBOVi1DT05UUk9MIGV2ZW50cy4gIFRoZSB0eXBlCi0gKiBzcGVj
aWZpZXMgdGhlIHR5cGUgb2YgZXZlbnQgdG8gZW5hYmxlIChjdXJyZW50bHksIHRoZSBvbmx5Ci0g
KiB0eXBlIHRoYXQgY2FuIGJlIHJlcXVlc3RlZCBwZXItc2NyZWVuIHdpdGggWE5WQ3RybFNlbGVj
dE5vdGlmeSgpCi0gKiBpcyBBVFRSSUJVVEVfQ0hBTkdFRF9FVkVOVCk7IG9ub2ZmIGNvbnRyb2xz
IHdoZXRoZXIgcmVjZWl2aW5nIHRoaXMKLSAqIHR5cGUgb2YgZXZlbnQgc2hvdWxkIGJlIGVuYWJs
ZWQgKFRydWUpIG9yIGRpc2FibGVkIChGYWxzZSkuCi0gKgotICogUmV0dXJucyBUcnVlIGlmIHN1
Y2Nlc3NmdWwsIG9yIEZhbHNlIGlmIHRoZSBzY3JlZW4gaXMgbm90Ci0gKiBjb250cm9sbGVkIGJ5
IHRoZSBOVklESUEgZHJpdmVyLgotICovCi0KLUJvb2wgWE5WQ3RybFNlbGVjdE5vdGlmeShEaXNw
bGF5ICpkcHksIGludCBzY3JlZW4sIGludCB0eXBlLCBCb29sIG9ub2ZmKTsKLQotLyoKLSAqIFhO
VkN0cmxTZWxlY3RUYXJnZXROb3RpZnkgLQotICoKLSAqIFRoaXMgZW5hYmxlcy9kaXNhYmxlcyBy
ZWNlaXZpbmcgb2YgTlYtQ09OVFJPTCBldmVudHMgdGhhdCBoYXBwZW4gb24KLSAqIHRoZSBzcGVj
aWZpZWQgdGFyZ2V0LiAgVGhlIG5vdGlmeV90eXBlIHNwZWNpZmllcyB0aGUgdHlwZSBvZiBldmVu
dCB0bwotICogZW5hYmxlIChjdXJyZW50bHksIHRoZSBvbmx5IHR5cGUgdGhhdCBjYW4gYmUgcmVx
dWVzdGVkIHBlci10YXJnZXQgd2l0aAotICogWE5WQ3RybFNlbGVjdFRhcmdldE5vdGlmeSgpIGlz
IFRBUkdFVF9BVFRSSUJVVEVfQ0hBTkdFRF9FVkVOVCk7IG9ub2ZmCi0gKiBjb250cm9scyB3aGV0
aGVyIHJlY2VpdmluZyB0aGlzIHR5cGUgb2YgZXZlbnQgc2hvdWxkIGJlIGVuYWJsZWQgKFRydWUp
Ci0gKiBvciBkaXNhYmxlZCAoRmFsc2UpLgotICoKLSAqIFJldHVybnMgVHJ1ZSBpZiBzdWNjZXNz
ZnVsLCBvciBGYWxzZSBpZiB0aGUgdGFyZ2V0IGlzIG5vdAotICogY29udHJvbGxlZCBieSB0aGUg
TlZJRElBIGRyaXZlci4KLSAqLwotCi1Cb29sIFhOVkN0cmxTZWxlY3RUYXJnZXROb3RpZnkoRGlz
cGxheSAqZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRfdHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X2lkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBub3RpZnlfdHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCb29sIG9ub2ZmKTsKLQotLyoKLSAqIFhOVkN0cmxFdmVudCBzdHJ1
Y3R1cmUKLSAqLwotCi10eXBlZGVmIHN0cnVjdAotewotICAgIGludCB0eXBlOwotICAgIHVuc2ln
bmVkIGxvbmcgc2VyaWFsOwotICAgIEJvb2wgc2VuZF9ldmVudDsgLyogYWx3YXlzIEZBTFNFLCB3
ZSBkb24ndCBhbGxvdyBzZW5kX2V2ZW50cyAqLwotICAgIERpc3BsYXkgKmRpc3BsYXk7Ci0gICAg
VGltZSB0aW1lOwotICAgIGludCBzY3JlZW47Ci0gICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFz
azsKLSAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlOwotICAgIGludCB2YWx1ZTsKLX0gWE5WQ3Ry
bEF0dHJpYnV0ZUNoYW5nZWRFdmVudDsKLQotdHlwZWRlZiB1bmlvbgotewotICAgIGludCB0eXBl
OwotICAgIFhOVkN0cmxBdHRyaWJ1dGVDaGFuZ2VkRXZlbnQgYXR0cmlidXRlX2NoYW5nZWQ7Ci0g
ICAgbG9uZyBwYWRbMjRdOwotfSBYTlZDdHJsRXZlbnQ7Ci0KLS8qCi0gKiBYTlZDdHJsRXZlbnRU
YXJnZXQgc3RydWN0dXJlCi0gKi8KLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgICBpbnQgdHlwZTsK
LSAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKLSAgICBCb29sIHNlbmRfZXZlbnQ7IC8qIGFsd2F5
cyBGQUxTRSwgd2UgZG9uJ3QgYWxsb3cgc2VuZF9ldmVudHMgKi8KLSAgICBEaXNwbGF5ICpkaXNw
bGF5OwotICAgIFRpbWUgdGltZTsKLSAgICBpbnQgdGFyZ2V0X3R5cGU7Ci0gICAgaW50IHRhcmdl
dF9pZDsKLSAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrOwotICAgIHVuc2lnbmVkIGludCBh
dHRyaWJ1dGU7Ci0gICAgaW50IHZhbHVlOwotfSBYTlZDdHJsQXR0cmlidXRlQ2hhbmdlZEV2ZW50
VGFyZ2V0OwotCi10eXBlZGVmIHVuaW9uCi17Ci0gICAgaW50IHR5cGU7Ci0gICAgWE5WQ3RybEF0
dHJpYnV0ZUNoYW5nZWRFdmVudFRhcmdldCBhdHRyaWJ1dGVfY2hhbmdlZDsKLSAgICBsb25nIHBh
ZFsyNF07Ci19IFhOVkN0cmxFdmVudFRhcmdldDsKLQotLyoKLSAqIFhOVkN0cmxFdmVudFRhcmdl
dEF2YWlsYWJpbGl0eSBzdHJ1Y3R1cmUKLSAqLwotCi10eXBlZGVmIHN0cnVjdAotewotICAgIGlu
dCB0eXBlOwotICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwotICAgIEJvb2wgc2VuZF9ldmVudDsg
LyogYWx3YXlzIEZBTFNFLCB3ZSBkb24ndCBhbGxvdyBzZW5kX2V2ZW50cyAqLwotICAgIERpc3Bs
YXkgKmRpc3BsYXk7Ci0gICAgVGltZSB0aW1lOwotICAgIGludCB0YXJnZXRfdHlwZTsKLSAgICBp
bnQgdGFyZ2V0X2lkOwotICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2s7Ci0gICAgdW5zaWdu
ZWQgaW50IGF0dHJpYnV0ZTsKLSAgICBpbnQgdmFsdWU7Ci0gICAgQm9vbCBhdmFpbGFiaWxpdHk7
Ci19IFhOVkN0cmxBdHRyaWJ1dGVDaGFuZ2VkRXZlbnRUYXJnZXRBdmFpbGFiaWxpdHk7Ci0KLXR5
cGVkZWYgdW5pb24KLXsKLSAgICBpbnQgdHlwZTsKLSAgICBYTlZDdHJsQXR0cmlidXRlQ2hhbmdl
ZEV2ZW50VGFyZ2V0QXZhaWxhYmlsaXR5IGF0dHJpYnV0ZV9jaGFuZ2VkOwotICAgIGxvbmcgcGFk
WzI0XTsKLX0gWE5WQ3RybEV2ZW50VGFyZ2V0QXZhaWxhYmlsaXR5OwotCi0vKgotICogWE5WQ3Ry
bFN0cmluZ0V2ZW50VGFyZ2V0IHN0cnVjdHVyZQotICovCi0KLXR5cGVkZWYgc3RydWN0Ci17Ci0g
ICAgaW50IHR5cGU7Ci0gICAgdW5zaWduZWQgbG9uZyBzZXJpYWw7Ci0gICAgQm9vbCBzZW5kX2V2
ZW50OyAvKiBhbHdheXMgRkFMU0UsIHdlIGRvbid0IGFsbG93IHNlbmRfZXZlbnRzICovCi0gICAg
RGlzcGxheSAqZGlzcGxheTsKLSAgICBUaW1lIHRpbWU7Ci0gICAgaW50IHRhcmdldF90eXBlOwot
ICAgIGludCB0YXJnZXRfaWQ7Ci0gICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzazsKLSAgICB1
bnNpZ25lZCBpbnQgYXR0cmlidXRlOwotfSBYTlZDdHJsU3RyaW5nQXR0cmlidXRlQ2hhbmdlZEV2
ZW50VGFyZ2V0OwotCi10eXBlZGVmIHVuaW9uCi17Ci0gICAgaW50IHR5cGU7Ci0gICAgWE5WQ3Ry
bFN0cmluZ0F0dHJpYnV0ZUNoYW5nZWRFdmVudFRhcmdldCBhdHRyaWJ1dGVfY2hhbmdlZDsKLSAg
ICBsb25nIHBhZFsyNF07Ci19IFhOVkN0cmxTdHJpbmdFdmVudFRhcmdldDsKLQotLyoKLSAqIFhO
VkN0cmxCaW5hcnlFdmVudFRhcmdldCBzdHJ1Y3R1cmUKLSAqLwotCi10eXBlZGVmIHN0cnVjdAot
ewotICAgIGludCB0eXBlOwotICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwotICAgIEJvb2wgc2Vu
ZF9ldmVudDsgLyogYWx3YXlzIEZBTFNFLCB3ZSBkb24ndCBhbGxvdyBzZW5kX2V2ZW50cyAqLwot
ICAgIERpc3BsYXkgKmRpc3BsYXk7Ci0gICAgVGltZSB0aW1lOwotICAgIGludCB0YXJnZXRfdHlw
ZTsKLSAgICBpbnQgdGFyZ2V0X2lkOwotICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2s7Ci0g
ICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZTsKLX0gWE5WQ3RybEJpbmFyeUF0dHJpYnV0ZUNoYW5n
ZWRFdmVudFRhcmdldDsKLQotdHlwZWRlZiB1bmlvbgotewotICAgIGludCB0eXBlOwotICAgIFhO
VkN0cmxCaW5hcnlBdHRyaWJ1dGVDaGFuZ2VkRXZlbnRUYXJnZXQgYXR0cmlidXRlX2NoYW5nZWQ7
Ci0gICAgbG9uZyBwYWRbMjRdOwotfSBYTlZDdHJsQmluYXJ5RXZlbnRUYXJnZXQ7Ci0KLSNpZiBk
ZWZpbmVkIF9fY3BsdXNwbHVzCi19IC8qIGV4dGVybiAiQyIgKi8KLSNlbmRpZgotCi0jZW5kaWYg
LyogX19OVkNUUkxMSUJfSCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvUkVBRE1FLmFuZ2xlIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvUkVBRE1FLmFuZ2xlCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmI5YmQwYWFjZGM4ZWM4NzBmNTVlMzFiMjgzOTdkMjhm
MWE1ZWU5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsL1JFQURNRS5h
bmdsZQorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLU5hbWU6IE5WaWRpYSBDb250cm9s
IFggRXh0ZW5zaW9uIExpYnJhcnkKLVNob3J0IE5hbWU6IGxpYlhOVkN0cmwKLVVSTDogaHR0cDov
L2NnaXQuZnJlZWRlc2t0b3Aub3JnL35hcGxhdHRuZXIvbnZpZGlhLXNldHRpbmdzLwotVmVyc2lv
bjogdW5rbm93bgotRGF0ZTogMjAwOAotTGljZW5zZTogTUlUCi1TZWN1cml0eSBDcml0aWNhbDog
bm8KLQotRGVzY3JpcHRpb246Ci1UaGlzIHBhY2thZ2UgcHJvdmlkZXMgYWNjZXNzIHRvIE5WaWRp
YSBDb250cm9sIFggRXh0ZW5zaW9uLiBJdCBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgdmVyc2lv
biBvZiB0aGUgTlZJRElBIGRyaXZlciBpbiB1c2UuCi0KLVRoZSBjdXJyZW50IHZlcnNpb24gaXMg
cHVsbGVkIGZyb20gbnZpZGlhLXNldHRpbmdzLTMwMi4xNy4KLQotTG9jYWwgTW9kaWZpY2F0aW9u
czoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9s
aWJYTlZDdHJsL2xpYlhOVkN0cmwuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Ro
aXJkX3BhcnR5L2xpYlhOVkN0cmwvbGliWE5WQ3RybC5neXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDZmMGVlMmY5N2UzNzZjZmY1YjY2YmNhYmU0YTQ5NTdiZDZmN2JkMjUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvbGliWE5WQ3RybC5neXAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0jIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0j
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLXsKLSAgICAndGFyZ2V0cyc6Ci0gICAgW3sK
LSAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2xpYlhOVkN0cmwnLAotICAgICAgICAndHlwZSc6ICdz
dGF0aWNfbGlicmFyeScsCi0gICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAg
ICAgJ05WQ3RybC5jJywKLSAgICAgICAgICAgICdOVkN0cmwuaCcsCi0gICAgICAgICAgICAnTlZD
dHJsTGliLmgnLAotICAgICAgICAgICAgJ252X2NvbnRyb2wuaCcsCi0gICAgICAgIF0sCi0gICAg
fV0sCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFy
dHkvbGliWE5WQ3RybC9udl9jb250cm9sLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGhpcmRfcGFydHkvbGliWE5WQ3RybC9udl9jb250cm9sLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDUwMjNjOWI1OGNkNmI2NGQwODEwZmMyNDczNzczOTEzNDQ5ZjllZmEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvbnZfY29udHJvbC5oCisrKyAvZGV2
L251bGwKQEAgLTEsNjUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDggTlZJRElB
LCBDb3Jwb3JhdGlvbgotICoKLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg
b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLSAqIG9mIHRoaXMgc29m
dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp
LCB0byBkZWFsCi0gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk
aW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi0gKiB0byB1c2UsIGNvcHksIG1vZGlm
eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi0g
KiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0
aGUgU29mdHdhcmUgaXMKLSAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnM6Ci0gKgotICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k
IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAotICogcGFyYWdyYXBo
KSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z
IG9mIHRoZQotICogU29mdHdhcmUuCi0gKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJB
UyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJ
RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZLAotICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklO
RlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotICogQVVUSE9SUyBPUiBDT1BZUklH
SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotICog
TElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhF
UldJU0UsIEFSSVNJTkcgRlJPTSwKLSAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhF
IFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCi0gKiBTT0ZUV0FS
RS4KLSAqCi0gKgotICogTlYtQ09OVFJPTCBQcm90b2NvbCBWZXJzaW9uIEhpc3RvcnkKLSAqCi0g
KiAxLjAgLSAxLjUgICBOVklESUEgSW50ZXJuYWwgZGV2ZWxvcG1lbnQgdmVyc2lvbnMKLSAqIDEu
NiAgICAgICAgIEluaXRpYWwgcHVibGljIHZlcnNpb24KLSAqIDEuNyAgICAgICAgIEFkZGVkIFF1
ZXJ5QmluYXJ5RGF0YSByZXF1ZXN0Ci0gKiAxLjggICAgICAgICBBZGRlZCBUYXJnZXRUeXBlcwot
ICogMS45ICAgICAgICAgQWRkZWQgUXVlcnlUYXJnZXRDb3VudCByZXF1ZXN0Ci0gKiAxLjEwICAg
ICAgICBGaXhlZCB0YXJnZXQgdHlwZS9pZCBieXRlIG9yZGVyaW5nIGZvciBjb21wYXRpYmlsaXR5
IHdpdGgKLSAqICAgICAgICAgICAgIHByZS0xLjggTlYtQ09OVFJPTCBjbGllbnRzCi0gKiAxLjEx
ICAgICAgICBOVklESUEgSW50ZXJuYWwgZGV2ZWxvcG1lbnQgdmVyc2lvbgotICogMS4xMiAgICAg
ICAgQWRkZWQgU3RyaW5nT3BlcmF0aW9uIHJlcXVlc3QKLSAqIDEuMTMgICAgICAgIE5WSURJQSBJ
bnRlcm5hbCBkZXZlbG9wbWVudCB2ZXJzaW9uCi0gKiAxLjE0ICAgICAgICBGaXhlZCBhbiBOVl9D
VFJMX0JJTkFSWV9EQVRBX01PREVMSU5FUyBkb3VibGUgc2NhbiBtb2RlbGluZQotICogICAgICAg
ICAgICAgcmVwb3J0aW5nIGJ1ZyAodnN5bmNzdGFydCwgdnN5bmNlbmQsIGFuZCB2dG90YWwgd2Vy
ZSBpbmNvcnJlY3RseQotICogICAgICAgICAgICAgZG91YmxlZCkKLSAqIDEuMTUgICAgICAgIEFk
ZGVkIEFWQUlMQUJJTElUWV9UQVJHRVRfQVRUUklCVVRFX0NIQU5HRURfRVZFTlQKLSAqIDEuMTYg
ICAgICAgIEFkZGVkIFRBUkdFVF9TVFJJTkdfQVRUUklCVVRFX0NIQU5HRURfRVZFTlQKLSAqIDEu
MTcgICAgICAgIEFkZGVkIFRBUkdFVF9CSU5BUllfQVRUUklCVVRFX0NIQU5HRURfRVZFTlQKLSAq
IDEuMTggICAgICAgIFVwZGF0ZWQgUXVlcnlUYXJnZXRDb3VudCB0byByZXR1cm4gYSBjb3VudCBv
ZiAwLCByYXRoZXIgdGhhbgotICogICAgICAgICAgICAgQmFkTWF0Y2gsIGlmIGFuIHVua25vd24g
VGFyZ2V0VHlwZSBpcyBzcGVjaWZpZWQKLSAqIDEuMTkgICAgICAgIEFkZGVkIFRhcmdldFR5cGUg
c3VwcG9ydCBmb3IgU2V0QXR0cmlidXRlQW5kR2V0U3RhdHVzIGFuZAotICogICAgICAgICAgICAg
U2V0U3RyaW5nQXR0cmlidXRlIHJlcXVlc3RzCi0gKiAxLjIwICAgICAgICBBZGRlZCBDT09MRVIg
VGFyZ2V0VHlwZQotICogMS4yMSAgICAgICAgQWRkZWQgaW5pdGlhbCA2NC1iaXQgaW50ZWdlciBh
dHRyaWJ1dGUgc3VwcG9ydCAocmVhZC1vbmx5KQotICogMS4yMiAgICAgICAgQWRkZWQgWF9udkN0
cmxRdWVyeVZhbGlkU3RyaW5nQXR0cmlidXRlVmFsdWVzIHRvIGNoZWNrCi0gKiAgICAgICAgICAg
ICBzdHJpbmcgYXR0cmlidXRlIHBlcm1pc3Npb25zLgotICogMS4yMyAgICAgICAgQWRkZWQgU0VO
U09SIFRhcmdldFR5cGUKLSAqIDEuMjQgICAgICAgIEZpeGVkIGEgYnVnIHdoZXJlIFNMSV9NT1NB
SUNfTU9ERV9BVkFJTEFCTEUgYXR0cmlidXRlIHdvdWxkCi0gKiAgICAgICAgICAgICByZXBvcnQg
ZmFsc2UgcG9zaXRpdmVzIHZpYSB0aGUgR1BVIGFuZCBYIHNjcmVlbiB0YXJnZXQgdHlwZXMKLSAq
IDEuMjUgICAgICAgIEFkZGVkIDNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVIgVGFyZ2V0VHlwZQot
ICogMS4yNiAgICAgICAgQWRkZWQgWE5WQ1RSTFF1ZXJ5WFhYQXR0cmlidXRlUGVybWlzc2lvbnMu
Ci0gKiAxLjI3ICAgICAgICBBZGRlZCBESVNQTEFZIFRhcmdldFR5cGUKLSAqIDEuMjggICAgICAg
IEFkZGVkIE5WX0NUUkxfQ1VSUkVOVF9NRVRBTU9ERV9JRDogY2xpZW50cyBzaG91bGQgdXNlIHRo
aXMKLSAqICAgICAgICAgICAgIGF0dHJpYnV0ZSB0byBzd2l0Y2ggTWV0YU1vZGVzLCByYXRoZXIg
dGhhbiBwYXNzIHRoZSBNZXRhTW9kZSBJRAotICogICAgICAgICAgICAgdGhyb3VnaCB0aGUgUlJT
ZXRTY3JlZW5Db25maWcgcHJvdG9jb2wgcmVxdWVzdC4KLSAqLwotCi0jaWZuZGVmIF9fTlZDT05U
Uk9MX0gKLSNkZWZpbmUgX19OVkNPTlRST0xfSAotCi0jZGVmaW5lIE5WX0NPTlRST0xfRVJST1JT
IDAKLSNkZWZpbmUgTlZfQ09OVFJPTF9FVkVOVFMgNQotI2RlZmluZSBOVl9DT05UUk9MX05BTUUg
Ik5WLUNPTlRST0wiCi0KLSNkZWZpbmUgTlZfQ09OVFJPTF9NQUpPUiAxCi0jZGVmaW5lIE5WX0NP
TlRST0xfTUlOT1IgMjgKLQotI2RlZmluZSBYX252Q3RybFF1ZXJ5RXh0ZW5zaW9uIDAKLSNkZWZp
bmUgWF9udkN0cmxJc052IDEKLSNkZWZpbmUgWF9udkN0cmxRdWVyeUF0dHJpYnV0ZSAyCi0jZGVm
aW5lIFhfbnZDdHJsU2V0QXR0cmlidXRlIDMKLSNkZWZpbmUgWF9udkN0cmxRdWVyeVN0cmluZ0F0
dHJpYnV0ZSA0Ci0jZGVmaW5lIFhfbnZDdHJsUXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlcyA1Ci0j
ZGVmaW5lIFhfbnZDdHJsU2VsZWN0Tm90aWZ5IDYKLSNkZWZpbmUgWF9udkN0cmxTZXRHdm9Db2xv
ckNvbnZlcnNpb25EZXByZWNhdGVkIDcKLSNkZWZpbmUgWF9udkN0cmxRdWVyeUd2b0NvbG9yQ29u
dmVyc2lvbkRlcHJlY2F0ZWQgOAotI2RlZmluZSBYX252Q3RybFNldFN0cmluZ0F0dHJpYnV0ZSA5
Ci0vKiBTVFVCIFhfbnZDdHJsUXVlcnlERENDSUx1dFNpemUgICAgICAgICAgICAgICAgICAgMTAg
Ki8KLS8qIFNUVUIgWF9udkN0cmxRdWVyeUREQ0NJU2luZ2xlUG9pbnRMdXRPcGVyYXRpb24gICAx
MSAqLwotLyogU1RVQiBYX252Q3RybFNldEREQ0NJU2luZ2xlUG9pbnRMdXRPcGVyYXRpb24gICAg
IDEyICovCi0vKiBTVFVCIFhfbnZDdHJsUXVlcnlERENDSUJsb2NrTHV0T3BlcmF0aW9uICAgICAg
ICAgMTMgKi8KLS8qIFNUVUIgWF9udkN0cmxTZXRERENDSUJsb2NrTHV0T3BlcmF0aW9uICAgICAg
ICAgICAxNCAqLwotLyogU1RVQiBYX252Q3RybFNldEREQ0NJUmVtb3RlUHJvY2VkdXJlQ2FsbCAg
ICAgICAgIDE1ICovCi0vKiBTVFVCIFhfbnZDdHJsUXVlcnlERENDSURpc3BsYXlDb250cm9sbGVy
VHlwZSAgICAgMTYgKi8KLS8qIFNUVUIgWF9udkN0cmxRdWVyeUREQ0NJQ2FwYWJpbGl0aWVzICAg
ICAgICAgICAgICAxNyAqLwotLyogU1RVQiBYX252Q3RybFF1ZXJ5RERDQ0lUaW1pbmdSZXBvcnQg
ICAgICAgICAgICAgIDE4ICovCi0jZGVmaW5lIFhfbnZDdHJsU2V0QXR0cmlidXRlQW5kR2V0U3Rh
dHVzIDE5Ci0jZGVmaW5lIFhfbnZDdHJsUXVlcnlCaW5hcnlEYXRhIDIwCi0jZGVmaW5lIFhfbnZD
dHJsU2V0R3ZvQ29sb3JDb252ZXJzaW9uIDIxCi0jZGVmaW5lIFhfbnZDdHJsUXVlcnlHdm9Db2xv
ckNvbnZlcnNpb24gMjIKLSNkZWZpbmUgWF9udkN0cmxTZWxlY3RUYXJnZXROb3RpZnkgMjMKLSNk
ZWZpbmUgWF9udkN0cmxRdWVyeVRhcmdldENvdW50IDI0Ci0jZGVmaW5lIFhfbnZDdHJsU3RyaW5n
T3BlcmF0aW9uIDI1Ci0jZGVmaW5lIFhfbnZDdHJsUXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlczY0
IDI2Ci0jZGVmaW5lIFhfbnZDdHJsUXVlcnlBdHRyaWJ1dGU2NCAyNwotI2RlZmluZSBYX252Q3Ry
bFF1ZXJ5VmFsaWRTdHJpbmdBdHRyaWJ1dGVWYWx1ZXMgMjgKLSNkZWZpbmUgWF9udkN0cmxRdWVy
eUF0dHJpYnV0ZVBlcm1pc3Npb25zIDI5Ci0jZGVmaW5lIFhfbnZDdHJsUXVlcnlTdHJpbmdBdHRy
aWJ1dGVQZXJtaXNzaW9ucyAzMAotI2RlZmluZSBYX252Q3RybFF1ZXJ5QmluYXJ5RGF0YUF0dHJp
YnV0ZVBlcm1pc3Npb25zIDMxCi0jZGVmaW5lIFhfbnZDdHJsUXVlcnlTdHJpbmdPcGVyYXRpb25B
dHRyaWJ1dGVQZXJtaXNzaW9ucyAzMgotCi0jZGVmaW5lIFhfbnZDdHJsTGFzdFJlcXVlc3QgKFhf
bnZDdHJsUXVlcnlTdHJpbmdPcGVyYXRpb25BdHRyaWJ1dGVQZXJtaXNzaW9ucyArIDEpCi0KLS8q
IERlZmluZSAzMiBiaXQgZmxvYXRzICovCi10eXBlZGVmIGZsb2F0IEZMT0FUMzI7Ci0jaWZuZGVm
IEYzMgotI2RlZmluZSBGMzIKLSNlbmRpZgotCi10eXBlZGVmIHN0cnVjdAotewotICAgIENBUkQ4
IHJlcVR5cGU7Ci0gICAgQ0FSRDggbnZSZXFUeXBlOwotICAgIENBUkQxNiBsZW5ndGggQjE2Owot
fSB4bnZDdHJsUXVlcnlFeHRlbnNpb25SZXE7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVyeUV4dGVu
c2lvblJlcSA0Ci0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgQllURSB0eXBlOyAvKiBYX1JlcGx5
ICovCi0gICAgQ0FSRDggcGFkYjE7Ci0gICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyIEIxNjsKLSAg
ICBDQVJEMzIgbGVuZ3RoIEIzMjsKLSAgICBDQVJEMTYgbWFqb3IgQjE2OwotICAgIENBUkQxNiBt
aW5vciBCMTY7Ci0gICAgQ0FSRDMyIHBhZGw0IEIzMjsKLSAgICBDQVJEMzIgcGFkbDUgQjMyOwot
ICAgIENBUkQzMiBwYWRsNiBCMzI7Ci0gICAgQ0FSRDMyIHBhZGw3IEIzMjsKLSAgICBDQVJEMzIg
cGFkbDggQjMyOwotfSB4bnZDdHJsUXVlcnlFeHRlbnNpb25SZXBseTsKLSNkZWZpbmUgc3pfeG52
Q3RybFF1ZXJ5RXh0ZW5zaW9uUmVwbHkgMzIKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgICBDQVJE
OCByZXFUeXBlOwotICAgIENBUkQ4IG52UmVxVHlwZTsKLSAgICBDQVJEMTYgbGVuZ3RoIEIxNjsK
LSAgICBDQVJEMzIgc2NyZWVuIEIzMjsKLX0geG52Q3RybElzTnZSZXE7Ci0jZGVmaW5lIHN6X3hu
dkN0cmxJc052UmVxIDgKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgICBCWVRFIHR5cGU7IC8qIFhf
UmVwbHkgKi8KLSAgICBDQVJEOCBwYWRiMTsKLSAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgQjE2
OwotICAgIENBUkQzMiBsZW5ndGggQjMyOwotICAgIENBUkQzMiBpc252IEIzMjsKLSAgICBDQVJE
MzIgcGFkbDQgQjMyOwotICAgIENBUkQzMiBwYWRsNSBCMzI7Ci0gICAgQ0FSRDMyIHBhZGw2IEIz
MjsKLSAgICBDQVJEMzIgcGFkbDcgQjMyOwotICAgIENBUkQzMiBwYWRsOCBCMzI7Ci19IHhudkN0
cmxJc052UmVwbHk7Ci0jZGVmaW5lIHN6X3hudkN0cmxJc052UmVwbHkgMzIKLQotdHlwZWRlZiBz
dHJ1Y3QKLXsKLSAgICBDQVJEOCByZXFUeXBlOwotICAgIENBUkQ4IG52UmVxVHlwZTsKLSAgICBD
QVJEMTYgbGVuZ3RoIEIxNjsKLSAgICBDQVJEMzIgdGFyZ2V0X3R5cGUgQjMyOwotfSB4bnZDdHJs
UXVlcnlUYXJnZXRDb3VudFJlcTsKLSNkZWZpbmUgc3pfeG52Q3RybFF1ZXJ5VGFyZ2V0Q291bnRS
ZXEgOAotCi10eXBlZGVmIHN0cnVjdAotewotICAgIEJZVEUgdHlwZTsgLyogWF9SZXBseSAqLwot
ICAgIENBUkQ4IHBhZGIxOwotICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciBCMTY7Ci0gICAgQ0FS
RDMyIGxlbmd0aCBCMzI7Ci0gICAgQ0FSRDMyIGNvdW50IEIzMjsKLSAgICBDQVJEMzIgcGFkbDQg
QjMyOwotICAgIENBUkQzMiBwYWRsNSBCMzI7Ci0gICAgQ0FSRDMyIHBhZGw2IEIzMjsKLSAgICBD
QVJEMzIgcGFkbDcgQjMyOwotICAgIENBUkQzMiBwYWRsOCBCMzI7Ci19IHhudkN0cmxRdWVyeVRh
cmdldENvdW50UmVwbHk7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVyeVRhcmdldENvdW50UmVwbHkg
MzIKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgICBDQVJEOCByZXFUeXBlOwotICAgIENBUkQ4IG52
UmVxVHlwZTsKLSAgICBDQVJEMTYgbGVuZ3RoIEIxNjsKLSAgICBDQVJEMTYgdGFyZ2V0X2lkIEIx
NjsgICAvKiBYIHNjcmVlbiBudW1iZXIgb3IgR1BVIG51bWJlciAqLwotICAgIENBUkQxNiB0YXJn
ZXRfdHlwZSBCMTY7IC8qIFggc2NyZWVuIG9yIEdQVSAqLwotICAgIENBUkQzMiBkaXNwbGF5X21h
c2sgQjMyOwotICAgIENBUkQzMiBhdHRyaWJ1dGUgQjMyOwotfSB4bnZDdHJsUXVlcnlBdHRyaWJ1
dGVSZXE7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVyeUF0dHJpYnV0ZVJlcSAxNgotCi10eXBlZGVm
IHN0cnVjdAotewotICAgIEJZVEUgdHlwZTsKLSAgICBCWVRFIHBhZDA7Ci0gICAgQ0FSRDE2IHNl
cXVlbmNlTnVtYmVyIEIxNjsKLSAgICBDQVJEMzIgbGVuZ3RoIEIzMjsKLSAgICBDQVJEMzIgZmxh
Z3MgQjMyOwotICAgIElOVDMyIHZhbHVlIEIzMjsKLSAgICBDQVJEMzIgcGFkNCBCMzI7Ci0gICAg
Q0FSRDMyIHBhZDUgQjMyOwotICAgIENBUkQzMiBwYWQ2IEIzMjsKLSAgICBDQVJEMzIgcGFkNyBC
MzI7Ci19IHhudkN0cmxRdWVyeUF0dHJpYnV0ZVJlcGx5OwotI2RlZmluZSBzel94bnZDdHJsUXVl
cnlBdHRyaWJ1dGVSZXBseSAzMgotCi10eXBlZGVmIHN0cnVjdAotewotICAgIEJZVEUgdHlwZTsK
LSAgICBCWVRFIHBhZDA7Ci0gICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyIEIxNjsKLSAgICBDQVJE
MzIgbGVuZ3RoIEIzMjsKLSAgICBDQVJEMzIgZmxhZ3MgQjMyOwotICAgIENBUkQzMiBwYWQzIEIz
MjsKLSAgICBpbnQ2NF90IHZhbHVlXzY0OwotICAgIENBUkQzMiBwYWQ2IEIzMjsKLSAgICBDQVJE
MzIgcGFkNyBCMzI7Ci19IHhudkN0cmxRdWVyeUF0dHJpYnV0ZTY0UmVwbHk7Ci0jZGVmaW5lIHN6
X3hudkN0cmxRdWVyeUF0dHJpYnV0ZTY0UmVwbHkgMzIKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAg
ICBDQVJEOCByZXFUeXBlOwotICAgIENBUkQ4IG52UmVxVHlwZTsKLSAgICBDQVJEMTYgbGVuZ3Ro
IEIxNjsKLSAgICBDQVJEMTYgdGFyZ2V0X2lkIEIxNjsKLSAgICBDQVJEMTYgdGFyZ2V0X3R5cGUg
QjE2OwotICAgIENBUkQzMiBkaXNwbGF5X21hc2sgQjMyOwotICAgIENBUkQzMiBhdHRyaWJ1dGUg
QjMyOwotICAgIElOVDMyIHZhbHVlIEIzMjsKLX0geG52Q3RybFNldEF0dHJpYnV0ZVJlcTsKLSNk
ZWZpbmUgc3pfeG52Q3RybFNldEF0dHJpYnV0ZVJlcSAyMAotCi10eXBlZGVmIHN0cnVjdAotewot
ICAgIENBUkQ4IHJlcVR5cGU7Ci0gICAgQ0FSRDggbnZSZXFUeXBlOwotICAgIENBUkQxNiBsZW5n
dGggQjE2OwotICAgIENBUkQxNiB0YXJnZXRfaWQgQjE2OwotICAgIENBUkQxNiB0YXJnZXRfdHlw
ZSBCMTY7Ci0gICAgQ0FSRDMyIGRpc3BsYXlfbWFzayBCMzI7Ci0gICAgQ0FSRDMyIGF0dHJpYnV0
ZSBCMzI7Ci0gICAgSU5UMzIgdmFsdWUgQjMyOwotfSB4bnZDdHJsU2V0QXR0cmlidXRlQW5kR2V0
U3RhdHVzUmVxOwotI2RlZmluZSBzel94bnZDdHJsU2V0QXR0cmlidXRlQW5kR2V0U3RhdHVzUmVx
IDIwCi0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgQllURSB0eXBlOwotICAgIEJZVEUgcGFkMDsK
LSAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgQjE2OwotICAgIENBUkQzMiBsZW5ndGggQjMyOwot
ICAgIENBUkQzMiBmbGFncyBCMzI7Ci0gICAgQ0FSRDMyIHBhZDMgQjMyOwotICAgIENBUkQzMiBw
YWQ0IEIzMjsKLSAgICBDQVJEMzIgcGFkNSBCMzI7Ci0gICAgQ0FSRDMyIHBhZDYgQjMyOwotICAg
IENBUkQzMiBwYWQ3IEIzMjsKLX0geG52Q3RybFNldEF0dHJpYnV0ZUFuZEdldFN0YXR1c1JlcGx5
OwotI2RlZmluZSBzel94bnZDdHJsU2V0QXR0cmlidXRlQW5kR2V0U3RhdHVzUmVwbHkgMzIKLQot
dHlwZWRlZiBzdHJ1Y3QKLXsKLSAgICBDQVJEOCByZXFUeXBlOwotICAgIENBUkQ4IG52UmVxVHlw
ZTsKLSAgICBDQVJEMTYgbGVuZ3RoIEIxNjsKLSAgICBDQVJEMTYgdGFyZ2V0X2lkIEIxNjsgICAv
KiBYIHNjcmVlbiBudW1iZXIgb3IgR1BVIG51bWJlciAqLwotICAgIENBUkQxNiB0YXJnZXRfdHlw
ZSBCMTY7IC8qIFggc2NyZWVuIG9yIEdQVSAqLwotICAgIENBUkQzMiBkaXNwbGF5X21hc2sgQjMy
OwotICAgIENBUkQzMiBhdHRyaWJ1dGUgQjMyOwotfSB4bnZDdHJsUXVlcnlTdHJpbmdBdHRyaWJ1
dGVSZXE7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVyeVN0cmluZ0F0dHJpYnV0ZVJlcSAxNgotCi10
eXBlZGVmIHN0cnVjdAotewotICAgIEJZVEUgdHlwZTsKLSAgICBCWVRFIHBhZDA7Ci0gICAgQ0FS
RDE2IHNlcXVlbmNlTnVtYmVyIEIxNjsKLSAgICBDQVJEMzIgbGVuZ3RoIEIzMjsKLSAgICBDQVJE
MzIgZmxhZ3MgQjMyOwotICAgIENBUkQzMiBuIEIzMjsgLyogTGVuZ3RoIG9mIHN0cmluZyAqLwot
ICAgIENBUkQzMiBwYWQ0IEIzMjsKLSAgICBDQVJEMzIgcGFkNSBCMzI7Ci0gICAgQ0FSRDMyIHBh
ZDYgQjMyOwotICAgIENBUkQzMiBwYWQ3IEIzMjsKLX0geG52Q3RybFF1ZXJ5U3RyaW5nQXR0cmli
dXRlUmVwbHk7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVyeVN0cmluZ0F0dHJpYnV0ZVJlcGx5IDMy
Ci0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgQ0FSRDggcmVxVHlwZTsKLSAgICBDQVJEOCBudlJl
cVR5cGU7Ci0gICAgQ0FSRDE2IGxlbmd0aCBCMTY7Ci0gICAgQ0FSRDE2IHRhcmdldF9pZCBCMTY7
Ci0gICAgQ0FSRDE2IHRhcmdldF90eXBlIEIxNjsKLSAgICBDQVJEMzIgZGlzcGxheV9tYXNrIEIz
MjsKLSAgICBDQVJEMzIgYXR0cmlidXRlIEIzMjsKLSAgICBDQVJEMzIgbnVtX2J5dGVzIEIzMjsK
LX0geG52Q3RybFNldFN0cmluZ0F0dHJpYnV0ZVJlcTsKLSNkZWZpbmUgc3pfeG52Q3RybFNldFN0
cmluZ0F0dHJpYnV0ZVJlcSAyMAotCi10eXBlZGVmIHN0cnVjdAotewotICAgIEJZVEUgdHlwZTsK
LSAgICBCWVRFIHBhZDA7Ci0gICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyIEIxNjsKLSAgICBDQVJE
MzIgbGVuZ3RoIEIzMjsKLSAgICBDQVJEMzIgZmxhZ3MgQjMyOwotICAgIENBUkQzMiBwYWQzIEIz
MjsKLSAgICBDQVJEMzIgcGFkNCBCMzI7Ci0gICAgQ0FSRDMyIHBhZDUgQjMyOwotICAgIENBUkQz
MiBwYWQ2IEIzMjsKLSAgICBDQVJEMzIgcGFkNyBCMzI7Ci19IHhudkN0cmxTZXRTdHJpbmdBdHRy
aWJ1dGVSZXBseTsKLSNkZWZpbmUgc3pfeG52Q3RybFNldFN0cmluZ0F0dHJpYnV0ZVJlcGx5IDMy
Ci0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgQ0FSRDggcmVxVHlwZTsKLSAgICBDQVJEOCBudlJl
cVR5cGU7Ci0gICAgQ0FSRDE2IGxlbmd0aCBCMTY7Ci0gICAgQ0FSRDE2IHRhcmdldF9pZCBCMTY7
ICAgLyogWCBzY3JlZW4gbnVtYmVyIG9yIEdQVSBudW1iZXIgKi8KLSAgICBDQVJEMTYgdGFyZ2V0
X3R5cGUgQjE2OyAvKiBYIHNjcmVlbiBvciBHUFUgKi8KLSAgICBDQVJEMzIgZGlzcGxheV9tYXNr
IEIzMjsKLSAgICBDQVJEMzIgYXR0cmlidXRlIEIzMjsKLX0geG52Q3RybFF1ZXJ5VmFsaWRBdHRy
aWJ1dGVWYWx1ZXNSZXE7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVyeVZhbGlkQXR0cmlidXRlVmFs
dWVzUmVxIDE2Ci0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgQllURSB0eXBlOwotICAgIEJZVEUg
cGFkMDsKLSAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgQjE2OwotICAgIENBUkQzMiBsZW5ndGgg
QjMyOwotICAgIENBUkQzMiBmbGFncyBCMzI7Ci0gICAgSU5UMzIgYXR0cl90eXBlIEIzMjsKLSAg
ICBJTlQzMiBtaW4gQjMyOwotICAgIElOVDMyIG1heCBCMzI7Ci0gICAgQ0FSRDMyIGJpdHMgQjMy
OwotICAgIENBUkQzMiBwZXJtcyBCMzI7Ci19IHhudkN0cmxRdWVyeVZhbGlkQXR0cmlidXRlVmFs
dWVzUmVwbHk7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVyeVZhbGlkQXR0cmlidXRlVmFsdWVzUmVw
bHkgMzIKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgICBCWVRFIHR5cGU7Ci0gICAgQllURSBwYWQw
OwotICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciBCMTY7Ci0gICAgQ0FSRDMyIGxlbmd0aCBCMzI7
Ci0gICAgQ0FSRDMyIGZsYWdzIEIzMjsKLSAgICBJTlQzMiBhdHRyX3R5cGUgQjMyOwotICAgIGlu
dDY0X3QgbWluXzY0OwotICAgIGludDY0X3QgbWF4XzY0OwotICAgIENBUkQ2NCBiaXRzXzY0Owot
ICAgIENBUkQzMiBwZXJtcyBCMzI7Ci0gICAgQ0FSRDMyIHBhZDEgQjMyOwotfSB4bnZDdHJsUXVl
cnlWYWxpZEF0dHJpYnV0ZVZhbHVlczY0UmVwbHk7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVyeVZh
bGlkQXR0cmlidXRlVmFsdWVzNjRSZXBseSA0OAotI2RlZmluZSBzel94bnZDdHJsUXVlcnlWYWxp
ZEF0dHJpYnV0ZVZhbHVlczY0UmVwbHlfZXh0cmEgKCg0OCAtIDMyKSA+PiAyKQotCi10eXBlZGVm
IHN0cnVjdAotewotICAgIENBUkQ4IHJlcVR5cGU7Ci0gICAgQ0FSRDggbnZSZXFUeXBlOwotICAg
IENBUkQxNiBsZW5ndGggQjE2OwotICAgIENBUkQzMiBhdHRyaWJ1dGUgQjMyOwotfSB4bnZDdHJs
UXVlcnlBdHRyaWJ1dGVQZXJtaXNzaW9uc1JlcTsKLSNkZWZpbmUgc3pfeG52Q3RybFF1ZXJ5QXR0
cmlidXRlUGVybWlzc2lvbnNSZXEgOAotCi10eXBlZGVmIHN0cnVjdAotewotICAgIEJZVEUgdHlw
ZTsKLSAgICBCWVRFIHBhZDA7Ci0gICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyIEIxNjsKLSAgICBD
QVJEMzIgbGVuZ3RoIEIzMjsKLSAgICBDQVJEMzIgZmxhZ3MgQjMyOwotICAgIElOVDMyIGF0dHJf
dHlwZSBCMzI7Ci0gICAgQ0FSRDMyIHBlcm1zIEIzMjsKLSAgICBDQVJEMzIgcGFkNSBCMzI7Ci0g
ICAgQ0FSRDMyIHBhZDYgQjMyOwotICAgIENBUkQzMiBwYWQ3IEIzMjsKLSAgICBDQVJEMzIgcGFk
OCBCMzI7Ci19IHhudkN0cmxRdWVyeUF0dHJpYnV0ZVBlcm1pc3Npb25zUmVwbHk7Ci0jZGVmaW5l
IHN6X3hudkN0cmxRdWVyeUF0dHJpYnV0ZVBlcm1pc3Npb25zUmVwbHkgMzIKLQotLyogU2V0IEdW
TyBDb2xvciBDb252ZXJzaW9uIHJlcXVlc3QgKGRlcHJlY2F0ZWQpICovCi10eXBlZGVmIHN0cnVj
dAotewotICAgIENBUkQ4IHJlcVR5cGU7Ci0gICAgQ0FSRDggbnZSZXFUeXBlOwotICAgIENBUkQx
NiBsZW5ndGggQjE2OwotICAgIENBUkQzMiBzY3JlZW4gQjMyOwotICAgIEZMT0FUMzIgcm93MV9j
b2wxIEYzMjsKLSAgICBGTE9BVDMyIHJvdzFfY29sMiBGMzI7Ci0gICAgRkxPQVQzMiByb3cxX2Nv
bDMgRjMyOwotICAgIEZMT0FUMzIgcm93MV9jb2w0IEYzMjsKLSAgICBGTE9BVDMyIHJvdzJfY29s
MSBGMzI7Ci0gICAgRkxPQVQzMiByb3cyX2NvbDIgRjMyOwotICAgIEZMT0FUMzIgcm93Ml9jb2wz
IEYzMjsKLSAgICBGTE9BVDMyIHJvdzJfY29sNCBGMzI7Ci0gICAgRkxPQVQzMiByb3czX2NvbDEg
RjMyOwotICAgIEZMT0FUMzIgcm93M19jb2wyIEYzMjsKLSAgICBGTE9BVDMyIHJvdzNfY29sMyBG
MzI7Ci0gICAgRkxPQVQzMiByb3czX2NvbDQgRjMyOwotfSB4bnZDdHJsU2V0R3ZvQ29sb3JDb252
ZXJzaW9uRGVwcmVjYXRlZFJlcTsKLSNkZWZpbmUgc3pfeG52Q3RybFNldEd2b0NvbG9yQ29udmVy
c2lvbkRlcHJlY2F0ZWRSZXEgNTYKLQotLyogUXVlcnkgR1ZPIENvbG9yIENvbnZlcnNpb24gcmVx
dWVzdCAoZGVwcmVjYXRlZCkgKi8KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgQ0FSRDggcmVxVHlw
ZTsKLSAgICBDQVJEOCBudlJlcVR5cGU7Ci0gICAgQ0FSRDE2IGxlbmd0aCBCMTY7Ci0gICAgQ0FS
RDMyIHNjcmVlbiBCMzI7Ci19IHhudkN0cmxRdWVyeUd2b0NvbG9yQ29udmVyc2lvbkRlcHJlY2F0
ZWRSZXE7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVyeUd2b0NvbG9yQ29udmVyc2lvbkRlcHJlY2F0
ZWRSZXEgOAotCi0vKiBRdWVyeSBHVk8gQ29sb3IgQ29udmVyc2lvbiByZXBseSAoZGVwcmVjYXRl
ZCkgKi8KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgQllURSB0eXBlOyAvKiBYX1JlcGx5ICovCi0g
ICAgQllURSBwYWQwOwotICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciBCMTY7Ci0gICAgQ0FSRDMy
IGxlbmd0aCBCMzI7Ci0gICAgQ0FSRDMyIHBhZDMgQjMyOwotICAgIENBUkQzMiBwYWQ0IEIzMjsK
LSAgICBDQVJEMzIgcGFkNSBCMzI7Ci0gICAgQ0FSRDMyIHBhZDYgQjMyOwotICAgIENBUkQzMiBw
YWQ3IEIzMjsKLSAgICBDQVJEMzIgcGFkOCBCMzI7Ci19IHhudkN0cmxRdWVyeUd2b0NvbG9yQ29u
dmVyc2lvbkRlcHJlY2F0ZWRSZXBseTsKLSNkZWZpbmUgc3pfeG52Q3RybFF1ZXJ5R3ZvQ29sb3JD
b252ZXJzaW9uRGVwcmVjYXRlZFJlcGx5IDMyCi0KLS8qIFNldCBHVk8gQ29sb3IgQ29udmVyc2lv
biByZXF1ZXN0ICovCi10eXBlZGVmIHN0cnVjdAotewotICAgIENBUkQ4IHJlcVR5cGU7Ci0gICAg
Q0FSRDggbnZSZXFUeXBlOwotICAgIENBUkQxNiBsZW5ndGggQjE2OwotICAgIENBUkQzMiBzY3Jl
ZW4gQjMyOwotCi0gICAgRkxPQVQzMiBjc2NNYXRyaXhfeV9yIEYzMjsKLSAgICBGTE9BVDMyIGNz
Y01hdHJpeF95X2cgRjMyOwotICAgIEZMT0FUMzIgY3NjTWF0cml4X3lfYiBGMzI7Ci0KLSAgICBG
TE9BVDMyIGNzY01hdHJpeF9jcl9yIEYzMjsKLSAgICBGTE9BVDMyIGNzY01hdHJpeF9jcl9nIEYz
MjsKLSAgICBGTE9BVDMyIGNzY01hdHJpeF9jcl9iIEYzMjsKLQotICAgIEZMT0FUMzIgY3NjTWF0
cml4X2NiX3IgRjMyOwotICAgIEZMT0FUMzIgY3NjTWF0cml4X2NiX2cgRjMyOwotICAgIEZMT0FU
MzIgY3NjTWF0cml4X2NiX2IgRjMyOwotCi0gICAgRkxPQVQzMiBjc2NPZmZzZXRfeSBGMzI7Ci0g
ICAgRkxPQVQzMiBjc2NPZmZzZXRfY3IgRjMyOwotICAgIEZMT0FUMzIgY3NjT2Zmc2V0X2NiIEYz
MjsKLQotICAgIEZMT0FUMzIgY3NjU2NhbGVfeSBGMzI7Ci0gICAgRkxPQVQzMiBjc2NTY2FsZV9j
ciBGMzI7Ci0gICAgRkxPQVQzMiBjc2NTY2FsZV9jYiBGMzI7Ci0KLX0geG52Q3RybFNldEd2b0Nv
bG9yQ29udmVyc2lvblJlcTsKLSNkZWZpbmUgc3pfeG52Q3RybFNldEd2b0NvbG9yQ29udmVyc2lv
blJlcSA2OAotCi0vKiBRdWVyeSBHVk8gQ29sb3IgQ29udmVyc2lvbiByZXF1ZXN0ICovCi10eXBl
ZGVmIHN0cnVjdAotewotICAgIENBUkQ4IHJlcVR5cGU7Ci0gICAgQ0FSRDggbnZSZXFUeXBlOwot
ICAgIENBUkQxNiBsZW5ndGggQjE2OwotICAgIENBUkQzMiBzY3JlZW4gQjMyOwotfSB4bnZDdHJs
UXVlcnlHdm9Db2xvckNvbnZlcnNpb25SZXE7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVyeUd2b0Nv
bG9yQ29udmVyc2lvblJlcSA4Ci0KLS8qIFF1ZXJ5IEdWTyBDb2xvciBDb252ZXJzaW9uIHJlcGx5
ICovCi10eXBlZGVmIHN0cnVjdAotewotICAgIEJZVEUgdHlwZTsgLyogWF9SZXBseSAqLwotICAg
IEJZVEUgcGFkMDsKLSAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgQjE2OwotICAgIENBUkQzMiBs
ZW5ndGggQjMyOwotICAgIENBUkQzMiBwYWQzIEIzMjsKLSAgICBDQVJEMzIgcGFkNCBCMzI7Ci0g
ICAgQ0FSRDMyIHBhZDUgQjMyOwotICAgIENBUkQzMiBwYWQ2IEIzMjsKLSAgICBDQVJEMzIgcGFk
NyBCMzI7Ci0gICAgQ0FSRDMyIHBhZDggQjMyOwotfSB4bnZDdHJsUXVlcnlHdm9Db2xvckNvbnZl
cnNpb25SZXBseTsKLSNkZWZpbmUgc3pfeG52Q3RybFF1ZXJ5R3ZvQ29sb3JDb252ZXJzaW9uUmVw
bHkgMzIKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgICBDQVJEOCByZXFUeXBlOwotICAgIENBUkQ4
IG52UmVxVHlwZTsKLSAgICBDQVJEMTYgbGVuZ3RoIEIxNjsKLSAgICBDQVJEMTYgdGFyZ2V0X2lk
IEIxNjsgICAvKiBYIHNjcmVlbiBudW1iZXIgb3IgR1BVIG51bWJlciAqLwotICAgIENBUkQxNiB0
YXJnZXRfdHlwZSBCMTY7IC8qIFggc2NyZWVuIG9yIEdQVSAqLwotICAgIENBUkQzMiBkaXNwbGF5
X21hc2sgQjMyOwotICAgIENBUkQzMiBhdHRyaWJ1dGUgQjMyOwotfSB4bnZDdHJsUXVlcnlCaW5h
cnlEYXRhUmVxOwotI2RlZmluZSBzel94bnZDdHJsUXVlcnlCaW5hcnlEYXRhUmVxIDE2Ci0KLXR5
cGVkZWYgc3RydWN0Ci17Ci0gICAgQllURSB0eXBlOwotICAgIEJZVEUgcGFkMDsKLSAgICBDQVJE
MTYgc2VxdWVuY2VOdW1iZXIgQjE2OwotICAgIENBUkQzMiBsZW5ndGggQjMyOwotICAgIENBUkQz
MiBmbGFncyBCMzI7Ci0gICAgQ0FSRDMyIG4gQjMyOwotICAgIENBUkQzMiBwYWQ0IEIzMjsKLSAg
ICBDQVJEMzIgcGFkNSBCMzI7Ci0gICAgQ0FSRDMyIHBhZDYgQjMyOwotICAgIENBUkQzMiBwYWQ3
IEIzMjsKLX0geG52Q3RybFF1ZXJ5QmluYXJ5RGF0YVJlcGx5OwotI2RlZmluZSBzel94bnZDdHJs
UXVlcnlCaW5hcnlEYXRhUmVwbHkgMzIKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgICBDQVJEOCBy
ZXFUeXBlOwotICAgIENBUkQ4IG52UmVxVHlwZTsKLSAgICBDQVJEMTYgbGVuZ3RoIEIxNjsKLSAg
ICBDQVJEMzIgc2NyZWVuIEIzMjsKLSAgICBDQVJEMTYgbm90aWZ5VHlwZSBCMTY7Ci0gICAgQ0FS
RDE2IG9ub2ZmIEIxNjsKLX0geG52Q3RybFNlbGVjdE5vdGlmeVJlcTsKLSNkZWZpbmUgc3pfeG52
Q3RybFNlbGVjdE5vdGlmeVJlcSAxMgotCi10eXBlZGVmIHN0cnVjdAotewotICAgIENBUkQ4IHJl
cVR5cGU7Ci0gICAgQ0FSRDggbnZSZXFUeXBlOwotICAgIENBUkQxNiBsZW5ndGggQjE2OwotICAg
IENBUkQxNiB0YXJnZXRfaWQgQjE2OyAgIC8qIFggc2NyZWVuIG51bWJlciBvciBHUFUgbnVtYmVy
ICovCi0gICAgQ0FSRDE2IHRhcmdldF90eXBlIEIxNjsgLyogWCBzY3JlZW4gb3IgR1BVICovCi0g
ICAgQ0FSRDMyIGRpc3BsYXlfbWFzayBCMzI7Ci0gICAgQ0FSRDMyIGF0dHJpYnV0ZSBCMzI7Ci0g
ICAgQ0FSRDMyIG51bV9ieXRlcyBCMzI7IC8qIExlbmd0aCBvZiBzdHJpbmcgKi8KLX0geG52Q3Ry
bFN0cmluZ09wZXJhdGlvblJlcTsKLSNkZWZpbmUgc3pfeG52Q3RybFN0cmluZ09wZXJhdGlvblJl
cSAyMAotCi10eXBlZGVmIHN0cnVjdAotewotICAgIEJZVEUgdHlwZTsgLyogWF9SZXBseSAqLwot
ICAgIENBUkQ4IHBhZGIxOwotICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciBCMTY7Ci0gICAgQ0FS
RDMyIGxlbmd0aCBCMzI7Ci0gICAgQ0FSRDMyIHJldCBCMzI7Ci0gICAgQ0FSRDMyIG51bV9ieXRl
cyBCMzI7IC8qIExlbmd0aCBvZiBzdHJpbmcgKi8KLSAgICBDQVJEMzIgcGFkbDQgQjMyOwotICAg
IENBUkQzMiBwYWRsNSBCMzI7Ci0gICAgQ0FSRDMyIHBhZGw2IEIzMjsKLSAgICBDQVJEMzIgcGFk
bDcgQjMyOwotfSB4bnZDdHJsU3RyaW5nT3BlcmF0aW9uUmVwbHk7Ci0jZGVmaW5lIHN6X3hudkN0
cmxTdHJpbmdPcGVyYXRpb25SZXBseSAzMgotCi10eXBlZGVmIHN0cnVjdAotewotICAgIHVuaW9u
Ci0gICAgewotICAgICAgICBzdHJ1Y3QKLSAgICAgICAgewotICAgICAgICAgICAgQllURSB0eXBl
OwotICAgICAgICAgICAgQllURSBkZXRhaWw7Ci0gICAgICAgICAgICBDQVJEMTYgc2VxdWVuY2VO
dW1iZXIgQjE2OwotICAgICAgICB9IHU7Ci0gICAgICAgIHN0cnVjdAotICAgICAgICB7Ci0gICAg
ICAgICAgICBCWVRFIHR5cGU7Ci0gICAgICAgICAgICBCWVRFIGRldGFpbDsKLSAgICAgICAgICAg
IENBUkQxNiBzZXF1ZW5jZU51bWJlciBCMTY7Ci0gICAgICAgICAgICBDQVJEMzIgdGltZSBCMzI7
Ci0gICAgICAgICAgICBDQVJEMzIgc2NyZWVuIEIzMjsKLSAgICAgICAgICAgIENBUkQzMiBkaXNw
bGF5X21hc2sgQjMyOwotICAgICAgICAgICAgQ0FSRDMyIGF0dHJpYnV0ZSBCMzI7Ci0gICAgICAg
ICAgICBDQVJEMzIgdmFsdWUgQjMyOwotICAgICAgICAgICAgQ0FSRDMyIHBhZDAgQjMyOwotICAg
ICAgICAgICAgQ0FSRDMyIHBhZDEgQjMyOwotICAgICAgICB9IGF0dHJpYnV0ZV9jaGFuZ2VkOwot
ICAgIH0gdTsKLX0geG52Y3RybEV2ZW50OwotCi0vKgotICogTGVhdmUgdGFyZ2V0X3R5cGUgYmVm
b3JlIHRhcmdldF9pZCBmb3IgdGhlCi0gKiB4bnZDdHJsU2VsZWN0VGFyZ2V0Tm90aWZ5UmVxIGFu
ZCB4bnZjdHJsRXZlbnRUYXJnZXQKLSAqIHN0cnVjdHVyZXMsIGV2ZW4gdGhvdWdoIG90aGVyIHJl
cXVlc3QgcHJvdG9jb2wgc3RydWN0dXJlcwotICogc3RvcmUgdGFyZ2V0X2lkIGluIHRoZSBib3R0
b20gMTYtYml0cyBvZiB0aGUgc2Vjb25kIERXT1JEIG9mIHRoZQotICogc3RydWN0dXJlcy4gIFRo
ZSBldmVudC1yZWxhdGVkIHN0cnVjdHVyZXMgd2VyZSBhZGRlZCBpbiB2ZXJzaW9uCi0gKiAxLjgs
IGFuZCBzbyB0aGVyZSBpcyBubyBwcmlvciB2ZXJzaW9uIHdpdGggd2hpY2ggdG8gbWFpbnRhaW4K
LSAqIGNvbXBhdGliaWxpdHkuCi0gKi8KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgQ0FSRDggcmVx
VHlwZTsKLSAgICBDQVJEOCBudlJlcVR5cGU7Ci0gICAgQ0FSRDE2IGxlbmd0aCBCMTY7Ci0gICAg
Q0FSRDE2IHRhcmdldF90eXBlIEIxNjsgLyogRG9uJ3Qgc3dhcCB0aGVzZSAqLwotICAgIENBUkQx
NiB0YXJnZXRfaWQgQjE2OwotICAgIENBUkQxNiBub3RpZnlUeXBlIEIxNjsKLSAgICBDQVJEMTYg
b25vZmYgQjE2OwotfSB4bnZDdHJsU2VsZWN0VGFyZ2V0Tm90aWZ5UmVxOwotI2RlZmluZSBzel94
bnZDdHJsU2VsZWN0VGFyZ2V0Tm90aWZ5UmVxIDEyCi0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAg
dW5pb24KLSAgICB7Ci0gICAgICAgIHN0cnVjdAotICAgICAgICB7Ci0gICAgICAgICAgICBCWVRF
IHR5cGU7Ci0gICAgICAgICAgICBCWVRFIGRldGFpbDsKLSAgICAgICAgICAgIENBUkQxNiBzZXF1
ZW5jZU51bWJlciBCMTY7Ci0gICAgICAgIH0gdTsKLSAgICAgICAgc3RydWN0Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIEJZVEUgdHlwZTsKLSAgICAgICAgICAgIEJZVEUgZGV0YWlsOwotICAgICAg
ICAgICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyIEIxNjsKLSAgICAgICAgICAgIENBUkQzMiB0aW1l
IEIzMjsKLSAgICAgICAgICAgIENBUkQxNiB0YXJnZXRfdHlwZSBCMTY7IC8qIERvbid0IHN3YXAg
dGhlc2UgKi8KLSAgICAgICAgICAgIENBUkQxNiB0YXJnZXRfaWQgQjE2OwotICAgICAgICAgICAg
Q0FSRDMyIGRpc3BsYXlfbWFzayBCMzI7Ci0gICAgICAgICAgICBDQVJEMzIgYXR0cmlidXRlIEIz
MjsKLSAgICAgICAgICAgIENBUkQzMiB2YWx1ZSBCMzI7Ci0gICAgICAgICAgICBDQVJEMzIgcGFk
MCBCMzI7Ci0gICAgICAgICAgICBDQVJEMzIgcGFkMSBCMzI7Ci0gICAgICAgIH0gYXR0cmlidXRl
X2NoYW5nZWQ7Ci0gICAgICAgIHN0cnVjdAotICAgICAgICB7Ci0gICAgICAgICAgICBCWVRFIHR5
cGU7Ci0gICAgICAgICAgICBCWVRFIGRldGFpbDsKLSAgICAgICAgICAgIENBUkQxNiBzZXF1ZW5j
ZU51bWJlciBCMTY7Ci0gICAgICAgICAgICBDQVJEMzIgdGltZSBCMzI7Ci0gICAgICAgICAgICBD
QVJEMTYgdGFyZ2V0X3R5cGUgQjE2OyAvKiBEb24ndCBzd2FwIHRoZXNlICovCi0gICAgICAgICAg
ICBDQVJEMTYgdGFyZ2V0X2lkIEIxNjsKLSAgICAgICAgICAgIENBUkQzMiBkaXNwbGF5X21hc2sg
QjMyOwotICAgICAgICAgICAgQ0FSRDMyIGF0dHJpYnV0ZSBCMzI7Ci0gICAgICAgICAgICBDQVJE
MzIgdmFsdWUgQjMyOwotICAgICAgICAgICAgQ0FSRDggYXZhaWxhYmlsaXR5OwotICAgICAgICAg
ICAgQ0FSRDggcGFkMDsKLSAgICAgICAgICAgIENBUkQxNiBwYWQxIEIxNjsKLSAgICAgICAgICAg
IENBUkQzMiBwYWQyIEIzMjsKLSAgICAgICAgfSBhdmFpbGFiaWxpdHlfY2hhbmdlZDsKLSAgICB9
IHU7Ci19IHhudmN0cmxFdmVudFRhcmdldDsKLQotI2VuZGlmIC8qIF9fTlZDT05UUk9MX0ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9tdXJt
dXJoYXNoL0xJQ0VOU0UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkv
bXVybXVyaGFzaC9MSUNFTlNFCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YTM4NWYw
ZjA3OGM5NjA0Yzc4OTJhMDM5MWIwYWM2YTMxNjEwYjYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGly
ZF9wYXJ0eS9tdXJtdXJoYXNoL0xJQ0VOU0UKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAK
LS8vIE11cm11ckhhc2gzIHdhcyB3cml0dGVuIGJ5IEF1c3RpbiBBcHBsZWJ5LCBhbmQgaXMgcGxh
Y2VkIGluIHRoZSBwdWJsaWMKLS8vIGRvbWFpbi4gVGhlIGF1dGhvciBoZXJlYnkgZGlzY2xhaW1z
IGNvcHlyaWdodCB0byB0aGlzIHNvdXJjZSBjb2RlLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9t
dXJtdXJoYXNoL011cm11ckhhc2gzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYWE3OTgyZDNlZWYyZDg5MTA5OGQ0NmFmYjE5MWJlODdmMzFhNWEyOS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwzMzUgKzAsMCBAQAotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8g
TXVybXVySGFzaDMgd2FzIHdyaXR0ZW4gYnkgQXVzdGluIEFwcGxlYnksIGFuZCBpcyBwbGFjZWQg
aW4gdGhlIHB1YmxpYwotLy8gZG9tYWluLiBUaGUgYXV0aG9yIGhlcmVieSBkaXNjbGFpbXMgY29w
eXJpZ2h0IHRvIHRoaXMgc291cmNlIGNvZGUuCi0KLS8vIE5vdGUgLSBUaGUgeDg2IGFuZCB4NjQg
dmVyc2lvbnMgZG8gX25vdF8gcHJvZHVjZSB0aGUgc2FtZSByZXN1bHRzLCBhcyB0aGUKLS8vIGFs
Z29yaXRobXMgYXJlIG9wdGltaXplZCBmb3IgdGhlaXIgcmVzcGVjdGl2ZSBwbGF0Zm9ybXMuIFlv
dSBjYW4gc3RpbGwKLS8vIGNvbXBpbGUgYW5kIHJ1biBhbnkgb2YgdGhlbSBvbiBhbnkgcGxhdGZv
cm0sIGJ1dCB5b3VyIHBlcmZvcm1hbmNlIHdpdGggdGhlCi0vLyBub24tbmF0aXZlIHZlcnNpb24g
d2lsbCBiZSBsZXNzIHRoYW4gb3B0aW1hbC4KLQotI2luY2x1ZGUgIk11cm11ckhhc2gzLmgiCi0K
LS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9ucyBh
bmQgbWFjcm9zCi0KLS8vIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvCi0KLSNpZiBkZWZpbmVkKF9N
U0NfVkVSKQotCi0jZGVmaW5lIEZPUkNFX0lOTElORQlfX2ZvcmNlaW5saW5lCi0KLSNpbmNsdWRl
IDxzdGRsaWIuaD4KLQotI2RlZmluZSBST1RMMzIoeCx5KQlfcm90bCh4LHkpCi0jZGVmaW5lIFJP
VEw2NCh4LHkpCV9yb3RsNjQoeCx5KQotCi0jZGVmaW5lIEJJR19DT05TVEFOVCh4KSAoeCkKLQot
Ly8gT3RoZXIgY29tcGlsZXJzCi0KLSNlbHNlCS8vIGRlZmluZWQoX01TQ19WRVIpCi0KLSNkZWZp
bmUJRk9SQ0VfSU5MSU5FIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKLQot
aW5saW5lIHVpbnQzMl90IHJvdGwzMiAoIHVpbnQzMl90IHgsIGludDhfdCByICkKLXsKLSAgcmV0
dXJuICh4IDw8IHIpIHwgKHggPj4gKDMyIC0gcikpOwotfQotCi1pbmxpbmUgdWludDY0X3Qgcm90
bDY0ICggdWludDY0X3QgeCwgaW50OF90IHIgKQotewotICByZXR1cm4gKHggPDwgcikgfCAoeCA+
PiAoNjQgLSByKSk7Ci19Ci0KLSNkZWZpbmUJUk9UTDMyKHgseSkJcm90bDMyKHgseSkKLSNkZWZp
bmUgUk9UTDY0KHgseSkJcm90bDY0KHgseSkKLQotI2RlZmluZSBCSUdfQ09OU1RBTlQoeCkgKHgj
I0xMVSkKLQotI2VuZGlmIC8vICFkZWZpbmVkKF9NU0NfVkVSKQotCi0vLy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0vLyBCbG9jayByZWFkIC0gaWYgeW91ciBwbGF0Zm9ybSBuZWVkcyB0byBkbyBlbmRp
YW4tc3dhcHBpbmcgb3IgY2FuIG9ubHkKLS8vIGhhbmRsZSBhbGlnbmVkIHJlYWRzLCBkbyB0aGUg
Y29udmVyc2lvbiBoZXJlCi0KLUZPUkNFX0lOTElORSB1aW50MzJfdCBnZXRibG9jazMyICggY29u
c3QgdWludDMyX3QgKiBwLCBpbnQgaSApCi17Ci0gIHJldHVybiBwW2ldOwotfQotCi1GT1JDRV9J
TkxJTkUgdWludDY0X3QgZ2V0YmxvY2s2NCAoIGNvbnN0IHVpbnQ2NF90ICogcCwgaW50IGkgKQot
ewotICByZXR1cm4gcFtpXTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gRmluYWxp
emF0aW9uIG1peCAtIGZvcmNlIGFsbCBiaXRzIG9mIGEgaGFzaCBibG9jayB0byBhdmFsYW5jaGUK
LQotRk9SQ0VfSU5MSU5FIHVpbnQzMl90IGZtaXgzMiAoIHVpbnQzMl90IGggKQotewotICBoIF49
IGggPj4gMTY7Ci0gIGggKj0gMHg4NWViY2E2YjsKLSAgaCBePSBoID4+IDEzOwotICBoICo9IDB4
YzJiMmFlMzU7Ci0gIGggXj0gaCA+PiAxNjsKLQotICByZXR1cm4gaDsKLX0KLQotLy8tLS0tLS0t
LS0tCi0KLUZPUkNFX0lOTElORSB1aW50NjRfdCBmbWl4NjQgKCB1aW50NjRfdCBrICkKLXsKLSAg
ayBePSBrID4+IDMzOwotICBrICo9IEJJR19DT05TVEFOVCgweGZmNTFhZmQ3ZWQ1NThjY2QpOwot
ICBrIF49IGsgPj4gMzM7Ci0gIGsgKj0gQklHX0NPTlNUQU5UKDB4YzRjZWI5ZmUxYTg1ZWM1Myk7
Ci0gIGsgXj0gayA+PiAzMzsKLQotICByZXR1cm4gazsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotCi12b2lkIE11cm11ckhhc2gzX3g4Nl8zMiAoIGNvbnN0IHZvaWQgKiBrZXksIGludCBs
ZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBvdXQg
KQotewotICBjb25zdCB1aW50OF90ICogZGF0YSA9IChjb25zdCB1aW50OF90KilrZXk7Ci0gIGNv
bnN0IGludCBuYmxvY2tzID0gbGVuIC8gNDsKLQotICB1aW50MzJfdCBoMSA9IHNlZWQ7Ci0KLSAg
Y29uc3QgdWludDMyX3QgYzEgPSAweGNjOWUyZDUxOwotICBjb25zdCB1aW50MzJfdCBjMiA9IDB4
MWI4NzM1OTM7Ci0KLSAgLy8tLS0tLS0tLS0tCi0gIC8vIGJvZHkKLQotICBjb25zdCB1aW50MzJf
dCAqIGJsb2NrcyA9IChjb25zdCB1aW50MzJfdCAqKShkYXRhICsgbmJsb2Nrcyo0KTsKLQotICBm
b3IoaW50IGkgPSAtbmJsb2NrczsgaTsgaSsrKQotICB7Ci0gICAgdWludDMyX3QgazEgPSBnZXRi
bG9jazMyKGJsb2NrcyxpKTsKLQotICAgIGsxICo9IGMxOwotICAgIGsxID0gUk9UTDMyKGsxLDE1
KTsKLSAgICBrMSAqPSBjMjsKLSAgICAKLSAgICBoMSBePSBrMTsKLSAgICBoMSA9IFJPVEwzMiho
MSwxMyk7IAotICAgIGgxID0gaDEqNSsweGU2NTQ2YjY0OwotICB9Ci0KLSAgLy8tLS0tLS0tLS0t
Ci0gIC8vIHRhaWwKLQotICBjb25zdCB1aW50OF90ICogdGFpbCA9IChjb25zdCB1aW50OF90Kiko
ZGF0YSArIG5ibG9ja3MqNCk7Ci0KLSAgdWludDMyX3QgazEgPSAwOwotCi0gIHN3aXRjaChsZW4g
JiAzKQotICB7Ci0gIGNhc2UgMzogazEgXj0gdGFpbFsyXSA8PCAxNjsKLSAgY2FzZSAyOiBrMSBe
PSB0YWlsWzFdIDw8IDg7Ci0gIGNhc2UgMTogazEgXj0gdGFpbFswXTsKLSAgICAgICAgICBrMSAq
PSBjMTsgazEgPSBST1RMMzIoazEsMTUpOyBrMSAqPSBjMjsgaDEgXj0gazE7Ci0gIH07Ci0KLSAg
Ly8tLS0tLS0tLS0tCi0gIC8vIGZpbmFsaXphdGlvbgotCi0gIGgxIF49IGxlbjsKLQotICBoMSA9
IGZtaXgzMihoMSk7Ci0KLSAgKih1aW50MzJfdCopb3V0ID0gaDE7Ci19IAotCi0vLy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLXZvaWQgTXVybXVySGFzaDNfeDg2XzEyOCAoIGNvbnN0IHZvaWQgKiBr
ZXksIGNvbnN0IGludCBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBz
ZWVkLCB2b2lkICogb3V0ICkKLXsKLSAgY29uc3QgdWludDhfdCAqIGRhdGEgPSAoY29uc3QgdWlu
dDhfdCopa2V5OwotICBjb25zdCBpbnQgbmJsb2NrcyA9IGxlbiAvIDE2OwotCi0gIHVpbnQzMl90
IGgxID0gc2VlZDsKLSAgdWludDMyX3QgaDIgPSBzZWVkOwotICB1aW50MzJfdCBoMyA9IHNlZWQ7
Ci0gIHVpbnQzMl90IGg0ID0gc2VlZDsKLQotICBjb25zdCB1aW50MzJfdCBjMSA9IDB4MjM5Yjk2
MWI7IAotICBjb25zdCB1aW50MzJfdCBjMiA9IDB4YWIwZTk3ODk7Ci0gIGNvbnN0IHVpbnQzMl90
IGMzID0gMHgzOGIzNGFlNTsgCi0gIGNvbnN0IHVpbnQzMl90IGM0ID0gMHhhMWUzOGI5MzsKLQot
ICAvLy0tLS0tLS0tLS0KLSAgLy8gYm9keQotCi0gIGNvbnN0IHVpbnQzMl90ICogYmxvY2tzID0g
KGNvbnN0IHVpbnQzMl90ICopKGRhdGEgKyBuYmxvY2tzKjE2KTsKLQotICBmb3IoaW50IGkgPSAt
bmJsb2NrczsgaTsgaSsrKQotICB7Ci0gICAgdWludDMyX3QgazEgPSBnZXRibG9jazMyKGJsb2Nr
cyxpKjQrMCk7Ci0gICAgdWludDMyX3QgazIgPSBnZXRibG9jazMyKGJsb2NrcyxpKjQrMSk7Ci0g
ICAgdWludDMyX3QgazMgPSBnZXRibG9jazMyKGJsb2NrcyxpKjQrMik7Ci0gICAgdWludDMyX3Qg
azQgPSBnZXRibG9jazMyKGJsb2NrcyxpKjQrMyk7Ci0KLSAgICBrMSAqPSBjMTsgazEgID0gUk9U
TDMyKGsxLDE1KTsgazEgKj0gYzI7IGgxIF49IGsxOwotCi0gICAgaDEgPSBST1RMMzIoaDEsMTkp
OyBoMSArPSBoMjsgaDEgPSBoMSo1KzB4NTYxY2NkMWI7Ci0KLSAgICBrMiAqPSBjMjsgazIgID0g
Uk9UTDMyKGsyLDE2KTsgazIgKj0gYzM7IGgyIF49IGsyOwotCi0gICAgaDIgPSBST1RMMzIoaDIs
MTcpOyBoMiArPSBoMzsgaDIgPSBoMio1KzB4MGJjYWE3NDc7Ci0KLSAgICBrMyAqPSBjMzsgazMg
ID0gUk9UTDMyKGszLDE3KTsgazMgKj0gYzQ7IGgzIF49IGszOwotCi0gICAgaDMgPSBST1RMMzIo
aDMsMTUpOyBoMyArPSBoNDsgaDMgPSBoMyo1KzB4OTZjZDFjMzU7Ci0KLSAgICBrNCAqPSBjNDsg
azQgID0gUk9UTDMyKGs0LDE4KTsgazQgKj0gYzE7IGg0IF49IGs0OwotCi0gICAgaDQgPSBST1RM
MzIoaDQsMTMpOyBoNCArPSBoMTsgaDQgPSBoNCo1KzB4MzJhYzNiMTc7Ci0gIH0KLQotICAvLy0t
LS0tLS0tLS0KLSAgLy8gdGFpbAotCi0gIGNvbnN0IHVpbnQ4X3QgKiB0YWlsID0gKGNvbnN0IHVp
bnQ4X3QqKShkYXRhICsgbmJsb2NrcyoxNik7Ci0KLSAgdWludDMyX3QgazEgPSAwOwotICB1aW50
MzJfdCBrMiA9IDA7Ci0gIHVpbnQzMl90IGszID0gMDsKLSAgdWludDMyX3QgazQgPSAwOwotCi0g
IHN3aXRjaChsZW4gJiAxNSkKLSAgewotICBjYXNlIDE1OiBrNCBePSB0YWlsWzE0XSA8PCAxNjsK
LSAgY2FzZSAxNDogazQgXj0gdGFpbFsxM10gPDwgODsKLSAgY2FzZSAxMzogazQgXj0gdGFpbFsx
Ml0gPDwgMDsKLSAgICAgICAgICAgazQgKj0gYzQ7IGs0ICA9IFJPVEwzMihrNCwxOCk7IGs0ICo9
IGMxOyBoNCBePSBrNDsKLQotICBjYXNlIDEyOiBrMyBePSB0YWlsWzExXSA8PCAyNDsKLSAgY2Fz
ZSAxMTogazMgXj0gdGFpbFsxMF0gPDwgMTY7Ci0gIGNhc2UgMTA6IGszIF49IHRhaWxbIDldIDw8
IDg7Ci0gIGNhc2UgIDk6IGszIF49IHRhaWxbIDhdIDw8IDA7Ci0gICAgICAgICAgIGszICo9IGMz
OyBrMyAgPSBST1RMMzIoazMsMTcpOyBrMyAqPSBjNDsgaDMgXj0gazM7Ci0KLSAgY2FzZSAgODog
azIgXj0gdGFpbFsgN10gPDwgMjQ7Ci0gIGNhc2UgIDc6IGsyIF49IHRhaWxbIDZdIDw8IDE2Owot
ICBjYXNlICA2OiBrMiBePSB0YWlsWyA1XSA8PCA4OwotICBjYXNlICA1OiBrMiBePSB0YWlsWyA0
XSA8PCAwOwotICAgICAgICAgICBrMiAqPSBjMjsgazIgID0gUk9UTDMyKGsyLDE2KTsgazIgKj0g
YzM7IGgyIF49IGsyOwotCi0gIGNhc2UgIDQ6IGsxIF49IHRhaWxbIDNdIDw8IDI0OwotICBjYXNl
ICAzOiBrMSBePSB0YWlsWyAyXSA8PCAxNjsKLSAgY2FzZSAgMjogazEgXj0gdGFpbFsgMV0gPDwg
ODsKLSAgY2FzZSAgMTogazEgXj0gdGFpbFsgMF0gPDwgMDsKLSAgICAgICAgICAgazEgKj0gYzE7
IGsxICA9IFJPVEwzMihrMSwxNSk7IGsxICo9IGMyOyBoMSBePSBrMTsKLSAgfTsKLQotICAvLy0t
LS0tLS0tLS0KLSAgLy8gZmluYWxpemF0aW9uCi0KLSAgaDEgXj0gbGVuOyBoMiBePSBsZW47IGgz
IF49IGxlbjsgaDQgXj0gbGVuOwotCi0gIGgxICs9IGgyOyBoMSArPSBoMzsgaDEgKz0gaDQ7Ci0g
IGgyICs9IGgxOyBoMyArPSBoMTsgaDQgKz0gaDE7Ci0KLSAgaDEgPSBmbWl4MzIoaDEpOwotICBo
MiA9IGZtaXgzMihoMik7Ci0gIGgzID0gZm1peDMyKGgzKTsKLSAgaDQgPSBmbWl4MzIoaDQpOwot
Ci0gIGgxICs9IGgyOyBoMSArPSBoMzsgaDEgKz0gaDQ7Ci0gIGgyICs9IGgxOyBoMyArPSBoMTsg
aDQgKz0gaDE7Ci0KLSAgKCh1aW50MzJfdCopb3V0KVswXSA9IGgxOwotICAoKHVpbnQzMl90Kilv
dXQpWzFdID0gaDI7Ci0gICgodWludDMyX3QqKW91dClbMl0gPSBoMzsKLSAgKCh1aW50MzJfdCop
b3V0KVszXSA9IGg0OwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXZvaWQgTXVybXVy
SGFzaDNfeDY0XzEyOCAoIGNvbnN0IHZvaWQgKiBrZXksIGNvbnN0IGludCBsZW4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCBzZWVkLCB2b2lkICogb3V0ICkKLXsK
LSAgY29uc3QgdWludDhfdCAqIGRhdGEgPSAoY29uc3QgdWludDhfdCopa2V5OwotICBjb25zdCBp
bnQgbmJsb2NrcyA9IGxlbiAvIDE2OwotCi0gIHVpbnQ2NF90IGgxID0gc2VlZDsKLSAgdWludDY0
X3QgaDIgPSBzZWVkOwotCi0gIGNvbnN0IHVpbnQ2NF90IGMxID0gQklHX0NPTlNUQU5UKDB4ODdj
MzdiOTExMTQyNTNkNSk7Ci0gIGNvbnN0IHVpbnQ2NF90IGMyID0gQklHX0NPTlNUQU5UKDB4NGNm
NWFkNDMyNzQ1OTM3Zik7Ci0KLSAgLy8tLS0tLS0tLS0tCi0gIC8vIGJvZHkKLQotICBjb25zdCB1
aW50NjRfdCAqIGJsb2NrcyA9IChjb25zdCB1aW50NjRfdCAqKShkYXRhKTsKLQotICBmb3IoaW50
IGkgPSAwOyBpIDwgbmJsb2NrczsgaSsrKQotICB7Ci0gICAgdWludDY0X3QgazEgPSBnZXRibG9j
azY0KGJsb2NrcyxpKjIrMCk7Ci0gICAgdWludDY0X3QgazIgPSBnZXRibG9jazY0KGJsb2Nrcyxp
KjIrMSk7Ci0KLSAgICBrMSAqPSBjMTsgazEgID0gUk9UTDY0KGsxLDMxKTsgazEgKj0gYzI7IGgx
IF49IGsxOwotCi0gICAgaDEgPSBST1RMNjQoaDEsMjcpOyBoMSArPSBoMjsgaDEgPSBoMSo1KzB4
NTJkY2U3Mjk7Ci0KLSAgICBrMiAqPSBjMjsgazIgID0gUk9UTDY0KGsyLDMzKTsgazIgKj0gYzE7
IGgyIF49IGsyOwotCi0gICAgaDIgPSBST1RMNjQoaDIsMzEpOyBoMiArPSBoMTsgaDIgPSBoMio1
KzB4Mzg0OTVhYjU7Ci0gIH0KLQotICAvLy0tLS0tLS0tLS0KLSAgLy8gdGFpbAotCi0gIGNvbnN0
IHVpbnQ4X3QgKiB0YWlsID0gKGNvbnN0IHVpbnQ4X3QqKShkYXRhICsgbmJsb2NrcyoxNik7Ci0K
LSAgdWludDY0X3QgazEgPSAwOwotICB1aW50NjRfdCBrMiA9IDA7Ci0KLSAgc3dpdGNoKGxlbiAm
IDE1KQotICB7Ci0gIGNhc2UgMTU6IGsyIF49ICgodWludDY0X3QpdGFpbFsxNF0pIDw8IDQ4Owot
ICBjYXNlIDE0OiBrMiBePSAoKHVpbnQ2NF90KXRhaWxbMTNdKSA8PCA0MDsKLSAgY2FzZSAxMzog
azIgXj0gKCh1aW50NjRfdCl0YWlsWzEyXSkgPDwgMzI7Ci0gIGNhc2UgMTI6IGsyIF49ICgodWlu
dDY0X3QpdGFpbFsxMV0pIDw8IDI0OwotICBjYXNlIDExOiBrMiBePSAoKHVpbnQ2NF90KXRhaWxb
MTBdKSA8PCAxNjsKLSAgY2FzZSAxMDogazIgXj0gKCh1aW50NjRfdCl0YWlsWyA5XSkgPDwgODsK
LSAgY2FzZSAgOTogazIgXj0gKCh1aW50NjRfdCl0YWlsWyA4XSkgPDwgMDsKLSAgICAgICAgICAg
azIgKj0gYzI7IGsyICA9IFJPVEw2NChrMiwzMyk7IGsyICo9IGMxOyBoMiBePSBrMjsKLQotICBj
YXNlICA4OiBrMSBePSAoKHVpbnQ2NF90KXRhaWxbIDddKSA8PCA1NjsKLSAgY2FzZSAgNzogazEg
Xj0gKCh1aW50NjRfdCl0YWlsWyA2XSkgPDwgNDg7Ci0gIGNhc2UgIDY6IGsxIF49ICgodWludDY0
X3QpdGFpbFsgNV0pIDw8IDQwOwotICBjYXNlICA1OiBrMSBePSAoKHVpbnQ2NF90KXRhaWxbIDRd
KSA8PCAzMjsKLSAgY2FzZSAgNDogazEgXj0gKCh1aW50NjRfdCl0YWlsWyAzXSkgPDwgMjQ7Ci0g
IGNhc2UgIDM6IGsxIF49ICgodWludDY0X3QpdGFpbFsgMl0pIDw8IDE2OwotICBjYXNlICAyOiBr
MSBePSAoKHVpbnQ2NF90KXRhaWxbIDFdKSA8PCA4OwotICBjYXNlICAxOiBrMSBePSAoKHVpbnQ2
NF90KXRhaWxbIDBdKSA8PCAwOwotICAgICAgICAgICBrMSAqPSBjMTsgazEgID0gUk9UTDY0KGsx
LDMxKTsgazEgKj0gYzI7IGgxIF49IGsxOwotICB9OwotCi0gIC8vLS0tLS0tLS0tLQotICAvLyBm
aW5hbGl6YXRpb24KLQotICBoMSBePSBsZW47IGgyIF49IGxlbjsKLQotICBoMSArPSBoMjsKLSAg
aDIgKz0gaDE7Ci0KLSAgaDEgPSBmbWl4NjQoaDEpOwotICBoMiA9IGZtaXg2NChoMik7Ci0KLSAg
aDEgKz0gaDI7Ci0gIGgyICs9IGgxOwotCi0gICgodWludDY0X3QqKW91dClbMF0gPSBoMTsKLSAg
KCh1aW50NjRfdCopb3V0KVsxXSA9IGgyOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9tdXJt
dXJoYXNoL011cm11ckhhc2gzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRf
cGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlZDRlZTBlODRjNjEzNDdlZWQ1MmYyYjMyM2U2MjMxZGM2YTdlMWMxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmgKKysrIC9kZXYvbnVs
bApAQCAtMSwzNyArMCwwIEBACi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBNdXJtdXJIYXNo
MyB3YXMgd3JpdHRlbiBieSBBdXN0aW4gQXBwbGVieSwgYW5kIGlzIHBsYWNlZCBpbiB0aGUgcHVi
bGljCi0vLyBkb21haW4uIFRoZSBhdXRob3IgaGVyZWJ5IGRpc2NsYWltcyBjb3B5cmlnaHQgdG8g
dGhpcyBzb3VyY2UgY29kZS4KLQotI2lmbmRlZiBfTVVSTVVSSEFTSDNfSF8KLSNkZWZpbmUgX01V
Uk1VUkhBU0gzX0hfCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFBsYXRmb3JtLXNwZWNp
ZmljIGZ1bmN0aW9ucyBhbmQgbWFjcm9zCi0KLS8vIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvCi0K
LSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPCAxNjAwKQotCi10eXBlZGVmIHVu
c2lnbmVkIGNoYXIgdWludDhfdDsKLXR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90OwotdHlw
ZWRlZiB1bnNpZ25lZCBfX2ludDY0IHVpbnQ2NF90OwotCi0vLyBPdGhlciBjb21waWxlcnMKLQot
I2Vsc2UgLy8gZGVmaW5lZChfTVNDX1ZFUikKLQotI2luY2x1ZGUgPHN0ZGludC5oPgotCi0jZW5k
aWYgLy8gIWRlZmluZWQoX01TQ19WRVIpCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdm9p
ZCBNdXJtdXJIYXNoM194ODZfMzIgICggY29uc3Qgdm9pZCAqIGtleSwgaW50IGxlbiwgdWludDMy
X3Qgc2VlZCwgdm9pZCAqIG91dCApOwotCi12b2lkIE11cm11ckhhc2gzX3g4Nl8xMjggKCBjb25z
dCB2b2lkICoga2V5LCBpbnQgbGVuLCB1aW50MzJfdCBzZWVkLCB2b2lkICogb3V0ICk7Ci0KLXZv
aWQgTXVybXVySGFzaDNfeDY0XzEyOCAoIGNvbnN0IHZvaWQgKiBrZXksIGludCBsZW4sIHVpbnQz
Ml90IHNlZWQsIHZvaWQgKiBvdXQgKTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jZW5k
aWYgLy8gX01VUk1VUkhBU0gzX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGhpcmRfcGFydHkvc3lzdGVtaW5mby9TeXN0ZW1JbmZvLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9zeXN0ZW1pbmZvL1N5c3RlbUluZm8uY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2RmY2FhYzUxMzU2ODVjMzdhZmY2YzNiNzBj
ZGYzOGQ0YzQzNDIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9zeXN0ZW1pbmZvL1N5
c3RlbUluZm8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0j
aW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCi0KLSNpZiBfV0lOMzJfV0lOTlRfV0lOQkxVRQot
I2luY2x1ZGUgPHZlcnNpb25oZWxwZXJzLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIHJ4IHsKLQot
I2lmbmRlZiBfV0lOMzJfV0lOTlRfV0lOQkxVRQotc3RhdGljIGJvb2wgSXNXaW5kb3dzVmlzdGFP
ckdyZWF0ZXIoKQotewotICAgIE9TVkVSU0lPTklORk9FWFcgb3N2aSA9IHsgfTsKLSAgICBvc3Zp
LmR3T1NWZXJzaW9uSW5mb1NpemUgPSBzaXplb2Yob3N2aSk7Ci0gICAgb3N2aS5kd01ham9yVmVy
c2lvbiA9IEhJQllURShfV0lOMzJfV0lOTlRfVklTVEEpOwotICAgIG9zdmkuZHdNaW5vclZlcnNp
b24gPSBMT0JZVEUoX1dJTjMyX1dJTk5UX1ZJU1RBKTsKLSAgICBEV09SRExPTkcgY29uZGl0aW9u
ID0gMDsKLSAgICBWRVJfU0VUX0NPTkRJVElPTihjb25kaXRpb24sIFZFUl9NQUpPUlZFUlNJT04s
IFZFUl9HUkVBVEVSX0VRVUFMKTsKLSAgICBWRVJfU0VUX0NPTkRJVElPTihjb25kaXRpb24sIFZF
Ul9NSU5PUlZFUlNJT04sIFZFUl9HUkVBVEVSX0VRVUFMKTsKLSAgICByZXR1cm4gISE6OlZlcmlm
eVZlcnNpb25JbmZvVygmb3N2aSwgVkVSX01BSk9SVkVSU0lPTiB8IFZFUl9NSU5PUlZFUlNJT04s
IGNvbmRpdGlvbik7Ci19Ci0jZW5kaWYKLQotYm9vbCBpc1dpbmRvd3NWaXN0YU9yR3JlYXRlcigp
Ci17Ci0gICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBmYWxzZTsKLSAgICBzdGF0aWMgYm9v
bCBjYWNoZWRJc1dpbmRvd3NWaXN0YU9yR3JlYXRlcjsKLQotICAgIGlmICghaW5pdGlhbGl6ZWQp
IHsKLSAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxF
X1dJTkRPV1NfU1RPUkUpCi0gICAgICAgIGNhY2hlZElzV2luZG93c1Zpc3RhT3JHcmVhdGVyID0g
dHJ1ZTsKLSNlbHNlCi0gICAgICAgIGNhY2hlZElzV2luZG93c1Zpc3RhT3JHcmVhdGVyID0gSXNX
aW5kb3dzVmlzdGFPckdyZWF0ZXIoKTsKLSNlbmRpZgotICAgIH0KLSAgICByZXR1cm4gY2FjaGVk
SXNXaW5kb3dzVmlzdGFPckdyZWF0ZXI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvc3lzdGVtaW5mby9T
eXN0ZW1JbmZvLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvc3lz
dGVtaW5mby9TeXN0ZW1JbmZvLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNjA4
NWZiZDNkNDJiYjEzMzRlNDY5NjJmMTkxYjk1MzE3MmNjMmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Ro
aXJkX3BhcnR5L3N5c3RlbWluZm8vU3lzdGVtSW5mby5oCisrKyAvZGV2L251bGwKQEAgLTEsMzUg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgVEhJUkRfUEFSVFlfU1lTVEVNSU5GT19TWVNURU1JTkZPX0hfCi0jZGVmaW5lIFRISVJE
X1BBUlRZX1NZU1RFTUlORk9fU1lTVEVNSU5GT19IXwotCi1uYW1lc3BhY2UgcnggewotCi1ib29s
IGlzV2luZG93c1Zpc3RhT3JHcmVhdGVyKCk7Ci0KLX0gLy8gbmFtZXNwYWNlIHJ4Ci0KLSNlbmRp
ZiAvLyBUSElSRF9QQVJUWV9TWVNURU1JTkZPX1NZU1RFTUlORk9fSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS90cmFjZV9ldmVudC90cmFjZV9l
dmVudC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L3RyYWNlX2V2
ZW50L3RyYWNlX2V2ZW50LmgKaW5kZXggM2M4NWQyMmVmYWU4MmZlYTEwOWM3NTZiYzE3YzQ0NDQ5
MWU2YzY1MC4uYmRiODgwNDQyOGE1NTlhZTMxY2NjNWJiMDViZTYwODRmN2YxOTBkNSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L3RyYWNlX2V2ZW50
L3RyYWNlX2V2ZW50LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3Bh
cnR5L3RyYWNlX2V2ZW50L3RyYWNlX2V2ZW50LmgKQEAgLTY5MCwyNyArNjkwLDI3IEBAIHN0YXRp
YyBpbmxpbmUgdm9pZCBzZXRUcmFjZVZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5nJiBhcmcsCiAvLyBz
dG9yZSBwb2ludGVycyB0byB0aGUgaW50ZXJuYWwgY19zdHIgYW5kIHBhc3MgdGhyb3VnaCB0byB0
aGUgdHJhY2luZyBBUEksIHRoZQogLy8gYXJnIHZhbHVlcyBtdXN0IGxpdmUgdGhyb3VnaG91dCB0
aGVzZSBwcm9jZWR1cmVzLgogCi1zdGF0aWMgaW5saW5lIGFuZ2xlOjpQbGF0Zm9ybTo6VHJhY2VF
dmVudEhhbmRsZSBhZGRUcmFjZUV2ZW50KAotICAgIGNoYXIgcGhhc2UsCi0gICAgY29uc3QgdW5z
aWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkLAotICAgIGNvbnN0IGNoYXIqIG5hbWUsCi0gICAg
dW5zaWduZWQgbG9uZyBsb25nIGlkLAotICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MpIHsKK3N0YXRp
YyBpbmxpbmUgYW5nbGU6OlRyYWNlRXZlbnRIYW5kbGUgYWRkVHJhY2VFdmVudChjaGFyIHBoYXNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVuc2lnbmVkIGNoYXIgKmNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxv
bmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzKQorewogICAgIHJldHVybiBUUkFDRV9FVkVOVF9B
UElfQUREX1RSQUNFX0VWRU5UKAogICAgICAgICBwaGFzZSwgY2F0ZWdvcnlFbmFibGVkLCBuYW1l
LCBpZCwKICAgICAgICAgemVyb051bUFyZ3MsIDAsIDAsIDAsCiAgICAgICAgIGZsYWdzKTsKIH0K
IAotdGVtcGxhdGU8Y2xhc3MgQVJHMV9UWVBFPgotc3RhdGljIGlubGluZSBhbmdsZTo6UGxhdGZv
cm06OlRyYWNlRXZlbnRIYW5kbGUgYWRkVHJhY2VFdmVudCgKLSAgICBjaGFyIHBoYXNlLAotICAg
IGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZCwKLSAgICBjb25zdCBjaGFyKiBu
YW1lLAotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKLSAgICB1bnNpZ25lZCBjaGFyIGZsYWdz
LAotICAgIGNvbnN0IGNoYXIqIGFyZzFOYW1lLAotICAgIGNvbnN0IEFSRzFfVFlQRSYgYXJnMVZh
bCkgewordGVtcGxhdGUgPGNsYXNzIEFSRzFfVFlQRT4KK3N0YXRpYyBpbmxpbmUgYW5nbGU6OlRy
YWNlRXZlbnRIYW5kbGUgYWRkVHJhY2VFdmVudChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg
KmNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIgKmFyZzFOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFSRzFfVFlQRSAmYXJnMVZhbCkKK3sKICAg
ICBjb25zdCBpbnQgbnVtQXJncyA9IDE7CiAgICAgdW5zaWduZWQgY2hhciBhcmdUeXBlc1sxXTsK
ICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYXJnVmFsdWVzWzFdOwpAQCAtNzIxLDE3ICs3MjEsMTcg
QEAgc3RhdGljIGlubGluZSBhbmdsZTo6UGxhdGZvcm06OlRyYWNlRXZlbnRIYW5kbGUgYWRkVHJh
Y2VFdmVudCgKICAgICAgICAgZmxhZ3MpOwogfQogCi10ZW1wbGF0ZTxjbGFzcyBBUkcxX1RZUEUs
IGNsYXNzIEFSRzJfVFlQRT4KLXN0YXRpYyBpbmxpbmUgYW5nbGU6OlBsYXRmb3JtOjpUcmFjZUV2
ZW50SGFuZGxlIGFkZFRyYWNlRXZlbnQoCi0gICAgY2hhciBwaGFzZSwKLSAgICBjb25zdCB1bnNp
Z25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCi0gICAgY29uc3QgY2hhciogbmFtZSwKLSAgICB1
bnNpZ25lZCBsb25nIGxvbmcgaWQsCi0gICAgdW5zaWduZWQgY2hhciBmbGFncywKLSAgICBjb25z
dCBjaGFyKiBhcmcxTmFtZSwKLSAgICBjb25zdCBBUkcxX1RZUEUmIGFyZzFWYWwsCi0gICAgY29u
c3QgY2hhciogYXJnMk5hbWUsCi0gICAgY29uc3QgQVJHMl9UWVBFJiBhcmcyVmFsKSB7Cit0ZW1w
bGF0ZSA8Y2xhc3MgQVJHMV9UWVBFLCBjbGFzcyBBUkcyX1RZUEU+CitzdGF0aWMgaW5saW5lIGFu
Z2xlOjpUcmFjZUV2ZW50SGFuZGxlIGFkZFRyYWNlRXZlbnQoY2hhciBwaGFzZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25l
ZCBjaGFyICpjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICphcmcxTmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBUkcxX1RZUEUgJmFyZzFWYWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqYXJnMk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgQVJHMl9UWVBFICZhcmcyVmFsKQorewogICAgIGNvbnN0IGlu
dCBudW1BcmdzID0gMjsKICAgICBjb25zdCBjaGFyKiBhcmdOYW1lc1syXSA9IHsgYXJnMU5hbWUs
IGFyZzJOYW1lIH07CiAgICAgdW5zaWduZWQgY2hhciBhcmdUeXBlc1syXTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3RoaXJkX3BhcnR5L2RlcXAvUkVBRE1FLmFuZ2xlIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvdGhpcmRfcGFydHkvZGVxcC9SRUFETUUuYW5nbGUKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwYmMwNjY3NzM2ZDYyM2MxMzk5MmJmMWZjMTUz
NTdiNTczMjljMjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdGhpcmRfcGFydHkvZGVxcC9SRUFETUUuYW5nbGUK
KysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1OYW1lOiBkcmF3RWxlbWVudHMgUXVhbGl0
eSBQcm9ncmFtCi1TaG9ydCBOYW1lOiBkRVFQCi1WZXJzaW9uOiAxLjAKLVVSTDogaHR0cHM6Ly9z
b3VyY2UuYW5kcm9pZC5jb20vZGV2aWNlcy9ncmFwaGljcy90ZXN0aW5nLmh0bWwKLVNPVVJDRSBD
T0RFOiBnaXQgY2xvbmUgLWIgZGVxcC1kZXYgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5j
b20vcGxhdGZvcm0vZXh0ZXJuYWwvZGVxcC8KLURhdGU6IDIwLzA2LzIwMTYKLVJldmlzaW9uOiBm
NGYzZDgwNzllN2EzN2Q3Njc1YWI5MzU4M2U2NDM4ZDBiY2EwZTU4Ci1TZWN1cml0eSBDcml0aWNh
bDogbm8KLUxpY2Vuc2U6IEFwYWNoZSAyLjAKLUxpY2Vuc2UgRmlsZTogTElDRU5TRQotCi1EZXNj
cmlwdGlvbjoKLWRFUVAgaXMgYSBzZXQgb2YgdGVzdHMgYW5kIHRlc3RpbmcgdG9vbHMgZm9yIEdQ
VXMgYW5kIHRoZWlyIGRyaXZlcnMuIEl0IGN1cnJlbnRseSBzdXBwb3J0cyBPcGVuR0wgRVMgMi4w
IC0gMy4xICYgQUVQIGFuZCBFR0wuIFRoZSBkRVFQIGhhcyBiZWVuIHBhcnQgb2YgdGhlIEFuZHJv
aWQgQ1RTIHNpbmNlIHRoZSBMIHJlbGVhc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS91dGlsL3V0aWwuZ3lwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC91dGls
Lmd5cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhiYmRjNDVjOTY2NWQyNzMyNGQx
ZGVkYTBmNTgxMTU1NDNjYzc4NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS91dGlsL3V0aWwuZ3lwCisrKyAvZGV2
L251bGwKQEAgLTEsMjE2ICswLDAgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSMg
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLQotewotICAgICMgRXZlcnl0aGluZyBiZWxvdyAg
dGhpcyBpcyBkdXBsaWNhdGVkIGluIHRoZSBHTiBidWlsZCwgZXhjZXB0IE1hYyBzdXBwb3J0Lgot
ICAgICMgSWYgeW91IGNoYW5nZSBhbnl0aGluZyBhbHNvIGNoYW5nZSBhbmdsZS9CVUlMRC5nbgot
ICAgICd2YXJpYWJsZXMnOgotICAgIHsKLSAgICAgICAgJ3V0aWxfc291cmNlcyc6Ci0gICAgICAg
IFsKLSAgICAgICAgICAgICdjb21fdXRpbHMuaCcsCi0gICAgICAgICAgICAna2V5Ym9hcmQuaCcs
Ci0gICAgICAgICAgICAnZ2VvbWV0cnlfdXRpbHMuY3BwJywKLSAgICAgICAgICAgICdnZW9tZXRy
eV91dGlscy5oJywKLSAgICAgICAgICAgICdtb3VzZS5oJywKLSAgICAgICAgICAgICdyYW5kb21f
dXRpbHMuY3BwJywKLSAgICAgICAgICAgICdyYW5kb21fdXRpbHMuaCcsCi0gICAgICAgICAgICAn
c2hhZGVyX3V0aWxzLmNwcCcsCi0gICAgICAgICAgICAnc2hhZGVyX3V0aWxzLmgnLAotICAgICAg
ICAgICAgJ3N5c3RlbV91dGlscy5oJywKLSAgICAgICAgICAgICdFdmVudC5oJywKLSAgICAgICAg
ICAgICdFR0xXaW5kb3cuY3BwJywKLSAgICAgICAgICAgICdFR0xXaW5kb3cuaCcsCi0gICAgICAg
ICAgICAnTWF0cml4LmNwcCcsCi0gICAgICAgICAgICAnTWF0cml4LmgnLAotICAgICAgICAgICAg
J09TUGl4bWFwLmgnLAotICAgICAgICAgICAgJ09TV2luZG93LmNwcCcsCi0gICAgICAgICAgICAn
T1NXaW5kb3cuaCcsCi0gICAgICAgICAgICAnVGltZXIuaCcsCi0gICAgICAgICAgICAnVmVjdG9y
LmNwcCcsCi0gICAgICAgICAgICAnVmVjdG9yLmgnLAotICAgICAgICBdLAotICAgICAgICAndXRp
bF93aW4zMl9zb3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJ3dpbmRvd3Mvd2luMzIv
V2luMzJfc3lzdGVtX3V0aWxzLmNwcCcsCi0gICAgICAgICAgICAnd2luZG93cy93aW4zMi9XaW4z
MlBpeG1hcC5jcHAnLAotICAgICAgICAgICAgJ3dpbmRvd3Mvd2luMzIvV2luMzJQaXhtYXAuaCcs
Ci0gICAgICAgICAgICAnd2luZG93cy93aW4zMi9XaW4zMldpbmRvdy5jcHAnLAotICAgICAgICAg
ICAgJ3dpbmRvd3Mvd2luMzIvV2luMzJXaW5kb3cuaCcsCi0gICAgICAgICAgICAnd2luZG93cy9X
aW5kb3dzX3N5c3RlbV91dGlscy5jcHAnLAotICAgICAgICAgICAgJ3dpbmRvd3MvV2luZG93c1Rp
bWVyLmNwcCcsCi0gICAgICAgICAgICAnd2luZG93cy9XaW5kb3dzVGltZXIuaCcsCi0gICAgICAg
IF0sCi0gICAgICAgICd1dGlsX3dpbnJ0X3NvdXJjZXMnOgotICAgICAgICBbCi0gICAgICAgICAg
ICAnd2luZG93cy93aW5ydC9XaW5SVF9zeXN0ZW1fdXRpbHMuY3BwJywKLSAgICAgICAgICAgICd3
aW5kb3dzL3dpbnJ0L1dpblJUUGl4bWFwLmNwcCcsCi0gICAgICAgICAgICAnd2luZG93cy93aW5y
dC9XaW5SVFdpbmRvdy5jcHAnLAotICAgICAgICAgICAgJ3dpbmRvd3Mvd2lucnQvV2luUlRXaW5k
b3cuaCcsCi0gICAgICAgICAgICAnd2luZG93cy9XaW5kb3dzX3N5c3RlbV91dGlscy5jcHAnLAot
ICAgICAgICAgICAgJ3dpbmRvd3MvV2luZG93c1RpbWVyLmNwcCcsCi0gICAgICAgICAgICAnd2lu
ZG93cy9XaW5kb3dzVGltZXIuaCcsCi0gICAgICAgIF0sCi0gICAgICAgICd1dGlsX2xpbnV4X3Nv
dXJjZXMnOgotICAgICAgICBbCi0gICAgICAgICAgICAnbGludXgvTGludXhfc3lzdGVtX3V0aWxz
LmNwcCcsCi0gICAgICAgICAgICAnbGludXgvTGludXhUaW1lci5jcHAnLAotICAgICAgICAgICAg
J2xpbnV4L0xpbnV4VGltZXIuaCcsCi0gICAgICAgICAgICAncG9zaXgvUG9zaXhfc3lzdGVtX3V0
aWxzLmNwcCcsCi0gICAgICAgIF0sCi0gICAgICAgICd1dGlsX3gxMV9zb3VyY2VzJzoKLSAgICAg
ICAgWwotICAgICAgICAgICAgJ3gxMS9YMTFQaXhtYXAuY3BwJywKLSAgICAgICAgICAgICd4MTEv
WDExUGl4bWFwLmgnLAotICAgICAgICAgICAgJ3gxMS9YMTFXaW5kb3cuY3BwJywKLSAgICAgICAg
ICAgICd4MTEvWDExV2luZG93LmgnLAotICAgICAgICBdLAotICAgICAgICAndXRpbF9vem9uZV9z
b3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJ296b25lL096b25lUGl4bWFwLmNwcCcs
Ci0gICAgICAgICAgICAnb3pvbmUvT3pvbmVXaW5kb3cuY3BwJywKLSAgICAgICAgICAgICdvem9u
ZS9Pem9uZVdpbmRvdy5oJywKLSAgICAgICAgXSwKLSAgICAgICAgJ3V0aWxfb3N4X3NvdXJjZXMn
OgotICAgICAgICBbCi0gICAgICAgICAgICAnb3N4L09TWF9zeXN0ZW1fdXRpbHMuY3BwJywKLSAg
ICAgICAgICAgICdvc3gvT1NYVGltZXIuY3BwJywKLSAgICAgICAgICAgICdvc3gvT1NYVGltZXIu
aCcsCi0gICAgICAgICAgICAnb3N4L09TWFBpeG1hcC5tbScsCi0gICAgICAgICAgICAnb3N4L09T
WFBpeG1hcC5oJywKLSAgICAgICAgICAgICdvc3gvT1NYV2luZG93Lm1tJywKLSAgICAgICAgICAg
ICdvc3gvT1NYV2luZG93LmgnLAotICAgICAgICAgICAgJ3Bvc2l4L1Bvc2l4X3N5c3RlbV91dGls
cy5jcHAnLAotICAgICAgICBdLAotICAgICAgICAndXRpbF9hbmRyb2lkX3NvdXJjZXMnOgotICAg
ICAgICBbCi0gICAgICAgICAgICAnYW5kcm9pZC9BbmRyb2lkUGl4bWFwLmNwcCcsCi0gICAgICAg
ICAgICAnYW5kcm9pZC9BbmRyb2lkV2luZG93LmNwcCcsCi0gICAgICAgICAgICAnYW5kcm9pZC9B
bmRyb2lkV2luZG93LmgnLAotICAgICAgICAgICAgJ2FuZHJvaWQvdGhpcmRfcGFydHkvYW5kcm9p
ZF9uYXRpdmVfYXBwX2dsdWUuYycsCi0gICAgICAgICAgICAnYW5kcm9pZC90aGlyZF9wYXJ0eS9h
bmRyb2lkX25hdGl2ZV9hcHBfZ2x1ZS5oJywKLSAgICAgICAgXSwKLSAgICB9LAotICAgICd0YXJn
ZXRzJzoKLSAgICBbCi0gICAgICAgIHsKLSAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmds
ZV91dGlsJywKLSAgICAgICAgICAgICd0eXBlJzogJ3NoYXJlZF9saWJyYXJ5JywKLSAgICAgICAg
ICAgICdpbmNsdWRlcyc6IFsgJy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLCBdLAotICAg
ICAgICAgICAgJ2RlcGVuZGVuY2llcyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvc3JjL2FuZ2xlLmd5cDphbmdsZV9jb21tb24nLAotICAgICAgICAgICAg
ICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9hbmdsZS5neXA6bGliRUdMJywKLSAgICAgICAgICAgICAg
ICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmxpYkdMRVN2MicsCi0gICAgICAgICAgICBd
LAotICAgICAgICAgICAgJ2V4cG9ydF9kZXBlbmRlbnRfc2V0dGluZ3MnOgotICAgICAgICAgICAg
WwotICAgICAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9hbmdsZS5neXA6YW5nbGVfY29t
bW9uJywKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzoKLSAgICAg
ICAgICAgIFsKLSAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9pbmNsdWRlJywKLSAgICAg
ICAgICAgICAgICAnPChhbmdsZV9wYXRoKS91dGlsJywKLSAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgJzxAKHV0aWxf
c291cmNlcyknLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAg
ICAgICAgIFsKLSAgICAgICAgICAgICAgICAnR0xfR0xFWFRfUFJPVE9UWVBFUycsCi0gICAgICAg
ICAgICAgICAgJ0VHTF9FR0xFWFRfUFJPVE9UWVBFUycsCi0gICAgICAgICAgICAgICAgJ0xJQkFO
R0xFX1VUSUxfSU1QTEVNRU5UQVRJT04nLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdk
aXJlY3RfZGVwZW5kZW50X3NldHRpbmdzJzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAnaW5jbHVkZV9kaXJzJzoKLSAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAg
ICc8KGFuZ2xlX3BhdGgpL2luY2x1ZGUnLAotICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9w
YXRoKS91dGlsJywKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICdkZWZpbmVz
JzoKLSAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICdHTF9HTEVYVF9QUk9U
T1RZUEVTJywKLSAgICAgICAgICAgICAgICAgICAgJ0VHTF9FR0xFWFRfUFJPVE9UWVBFUycsCi0g
ICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnY29uZGl0aW9u
cyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgWydPUz09IndpbiIgYW5kIGFuZ2xl
X2J1aWxkX3dpbnJ0PT0wJywKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICdzb3VyY2VzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAg
ICAgJzxAKHV0aWxfd2luMzJfc291cmNlcyknLAotICAgICAgICAgICAgICAgICAgICBdLAotICAg
ICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgIFsnT1M9PSJ3aW4iIGFuZCBhbmdsZV9i
dWlsZF93aW5ydD09MScsCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAn
c291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICc8QCh1dGlsX3dpbnJ0X3NvdXJjZXMpJywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAg
ICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICBbJ09TPT0ibGludXgiJywKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAgICAgICAg
ICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJzxAKHV0aWxfbGludXhfc291cmNlcykn
LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAnbGlua19zZXR0
aW5ncyc6Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICds
aWJyYXJpZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICctbGRsJywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgWyd1c2Vf
eDExPT0xJywKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdzb3VyY2Vz
JzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJzxAKHV0
aWxfeDExX3NvdXJjZXMpJywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAg
ICAgICAgJ2xpbmtfc2V0dGluZ3MnOgotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAnbGRmbGFncyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJzwhQCg8KHBrZy1jb25maWcpIC0tbGlicy1vbmx5LUwg
LS1saWJzLW9ubHktb3RoZXIgeDExIHhpKScsCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAot
ICAgICAgICAgICAgICAgICAgICAgICAgJ2xpYnJhcmllcyc6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwhQCg8KHBrZy1jb25maWcpIC0t
bGlicy1vbmx5LWwgeDExIHhpKScsCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgIFsn
dXNlX296b25lPT0xJywKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdz
b3VyY2VzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAg
JzxAKHV0aWxfb3pvbmVfc291cmNlcyknLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAg
ICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgIFsnT1M9PSJtYWMiJywKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAgICAgICAgICAg
ICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJzxAKHV0aWxfb3N4X3NvdXJjZXMpJywKLSAg
ICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ3hjb2RlX3NldHRpbmdz
JzoKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ0RZTElC
X0lOU1RBTExfTkFNRV9CQVNFJzogJ0BycGF0aCcsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgICdsaW5rX3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgJ2xpYnJhcmllcyc6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJyQoU0RLUk9PVCkvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnJChTREtST09UKS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNv
cmUuZnJhbWV3b3JrJywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICBdLAotICAgICAgICB9
LAotICAgIF0sCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9BTkdMRVdlYktpdEJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKaW5kZXggM2MwZDM2NzQwZmMwMGYzNTU3NTMzYjRlMTZk
MDNjZTI4YzIxOWRhNS4uODM5YzhkMDdhMGU3Mjc4MTA2YTA5YjcxYTAzY2MyMjNkNWY3NjU2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVXZWJLaXRC
cmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2Vi
S2l0QnJpZGdlLmNwcApAQCAtOTQsNyArOTQsNyBAQCBzdGF0aWMgYm9vbCBnZXRTeW1ib2xJbmZv
KFNoSGFuZGxlIGNvbXBpbGVyLCBBTkdMRVNoYWRlclN5bWJvbFR5cGUgc3ltYm9sVHlwZSwgVgog
ewogICAgIHN3aXRjaCAoc3ltYm9sVHlwZSkgewogICAgIGNhc2UgU0hBREVSX1NZTUJPTF9UWVBF
X1VOSUZPUk06IHsKLSAgICAgICAgYXV0byB1bmlmb3JtcyA9IFNoR2V0VW5pZm9ybXMoY29tcGls
ZXIpOworICAgICAgICBhdXRvIHVuaWZvcm1zID0gc2g6OkdldFVuaWZvcm1zKGNvbXBpbGVyKTsK
ICAgICAgICAgaWYgKCF1bmlmb3JtcykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgZm9yIChjb25zdCBhdXRvJiB1bmlmb3JtIDogKnVuaWZvcm1zKQpAQCAtMTAyLDcgKzEwMiw3
IEBAIHN0YXRpYyBib29sIGdldFN5bWJvbEluZm8oU2hIYW5kbGUgY29tcGlsZXIsIEFOR0xFU2hh
ZGVyU3ltYm9sVHlwZSBzeW1ib2xUeXBlLCBWCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBj
YXNlIFNIQURFUl9TWU1CT0xfVFlQRV9WQVJZSU5HOiB7Ci0gICAgICAgIGF1dG8gdmFyeWluZ3Mg
PSBTaEdldFZhcnlpbmdzKGNvbXBpbGVyKTsKKyAgICAgICAgYXV0byB2YXJ5aW5ncyA9IHNoOjpH
ZXRWYXJ5aW5ncyhjb21waWxlcik7CiAgICAgICAgIGlmICghdmFyeWluZ3MpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgdmFyeWluZyA6ICp2YXJ5
aW5ncykKQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgYm9vbCBnZXRTeW1ib2xJbmZvKFNoSGFu
ZGxlIGNvbXBpbGVyLCBBTkdMRVNoYWRlclN5bWJvbFR5cGUgc3ltYm9sVHlwZSwgVgogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBTSEFERVJfU1lNQk9MX1RZUEVfQVRUUklCVVRFOiB7
Ci0gICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IFNoR2V0QXR0cmlidXRlcyhjb21waWxlcik7Cisg
ICAgICAgIGF1dG8gYXR0cmlidXRlcyA9IHNoOjpHZXRBdHRyaWJ1dGVzKGNvbXBpbGVyKTsKICAg
ICAgICAgaWYgKCFhdHRyaWJ1dGVzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBmb3IgKGNvbnN0IGF1dG8mIGF0dHJpYnV0ZSA6ICphdHRyaWJ1dGVzKQpAQCAtMTMyLDcgKzEz
Miw3IEBAIEFOR0xFV2ViS2l0QnJpZGdlOjpBTkdMRVdlYktpdEJyaWRnZShTaFNoYWRlck91dHB1
dCBzaGFkZXJPdXRwdXQsIFNoU2hhZGVyU3BlYyBzCiAgICAgLCBtX3NoYWRlclNwZWMoc2hhZGVy
U3BlYykKIHsKICAgICAvLyBUaGlzIGlzIGEgbm8tb3AgaWYgaXQncyBhbHJlYWR5IGluaXRpYWxp
emVkLgotICAgIFNoSW5pdGlhbGl6ZSgpOworICAgIHNoOjpJbml0aWFsaXplKCk7CiB9CiAKIEFO
R0xFV2ViS2l0QnJpZGdlOjp+QU5HTEVXZWJLaXRCcmlkZ2UoKQpAQCAtMTQzLDEwICsxNDMsMTAg
QEAgQU5HTEVXZWJLaXRCcmlkZ2U6On5BTkdMRVdlYktpdEJyaWRnZSgpCiB2b2lkIEFOR0xFV2Vi
S2l0QnJpZGdlOjpjbGVhbnVwQ29tcGlsZXJzKCkKIHsKICAgICBpZiAobV9mcmFnbWVudENvbXBp
bGVyKQotICAgICAgICBTaERlc3RydWN0KG1fZnJhZ21lbnRDb21waWxlcik7CisgICAgICAgIHNo
OjpEZXN0cnVjdChtX2ZyYWdtZW50Q29tcGlsZXIpOwogICAgIG1fZnJhZ21lbnRDb21waWxlciA9
IG51bGxwdHI7CiAgICAgaWYgKG1fdmVydGV4Q29tcGlsZXIpCi0gICAgICAgIFNoRGVzdHJ1Y3Qo
bV92ZXJ0ZXhDb21waWxlcik7CisgICAgICAgIHNoOjpEZXN0cnVjdChtX3ZlcnRleENvbXBpbGVy
KTsKICAgICBtX3ZlcnRleENvbXBpbGVyID0gbnVsbHB0cjsKIAogICAgIGJ1aWx0Q29tcGlsZXJz
ID0gZmFsc2U7CkBAIC0xNjMsOCArMTYzLDggQEAgdm9pZCBBTkdMRVdlYktpdEJyaWRnZTo6c2V0
UmVzb3VyY2VzKGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKQogYm9vbCBBTkdM
RVdlYktpdEJyaWRnZTo6Y29tcGlsZVNoYWRlclNvdXJjZShjb25zdCBjaGFyKiBzaGFkZXJTb3Vy
Y2UsIEFOR0xFU2hhZGVyVHlwZSBzaGFkZXJUeXBlLCBTdHJpbmcmIHRyYW5zbGF0ZWRTaGFkZXJT
b3VyY2UsIFN0cmluZyYgc2hhZGVyVmFsaWRhdGlvbkxvZywgVmVjdG9yPHN0ZDo6cGFpcjxBTkdM
RVNoYWRlclN5bWJvbFR5cGUsIHNoOjpTaGFkZXJWYXJpYWJsZT4+JiBzeW1ib2xzLCBpbnQgZXh0
cmFDb21waWxlT3B0aW9ucykKIHsKICAgICBpZiAoIWJ1aWx0Q29tcGlsZXJzKSB7Ci0gICAgICAg
IG1fZnJhZ21lbnRDb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoR0xfRlJBR01FTlRfU0hB
REVSLCBtX3NoYWRlclNwZWMsIG1fc2hhZGVyT3V0cHV0LCAmbV9yZXNvdXJjZXMpOwotICAgICAg
ICBtX3ZlcnRleENvbXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihHTF9WRVJURVhfU0hBREVS
LCBtX3NoYWRlclNwZWMsIG1fc2hhZGVyT3V0cHV0LCAmbV9yZXNvdXJjZXMpOworICAgICAgICBt
X2ZyYWdtZW50Q29tcGlsZXIgPSBzaDo6Q29uc3RydWN0Q29tcGlsZXIoR0xfRlJBR01FTlRfU0hB
REVSLCBtX3NoYWRlclNwZWMsIG1fc2hhZGVyT3V0cHV0LCAmbV9yZXNvdXJjZXMpOworICAgICAg
ICBtX3ZlcnRleENvbXBpbGVyID0gc2g6OkNvbnN0cnVjdENvbXBpbGVyKEdMX1ZFUlRFWF9TSEFE
RVIsIG1fc2hhZGVyU3BlYywgbV9zaGFkZXJPdXRwdXQsICZtX3Jlc291cmNlcyk7CiAgICAgICAg
IGlmICghbV9mcmFnbWVudENvbXBpbGVyIHx8ICFtX3ZlcnRleENvbXBpbGVyKSB7CiAgICAgICAg
ICAgICBjbGVhbnVwQ29tcGlsZXJzKCk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0x
ODIsMTUgKzE4MiwxNSBAQCBib29sIEFOR0xFV2ViS2l0QnJpZGdlOjpjb21waWxlU2hhZGVyU291
cmNlKGNvbnN0IGNoYXIqIHNoYWRlclNvdXJjZSwgQU5HTEVTaGFkZQogCiAgICAgY29uc3QgY2hh
ciogY29uc3Qgc2hhZGVyU291cmNlU3RyaW5nc1tdID0geyBzaGFkZXJTb3VyY2UgfTsKIAotICAg
IGJvb2wgdmFsaWRhdGVTdWNjZXNzID0gU2hDb21waWxlKGNvbXBpbGVyLCBzaGFkZXJTb3VyY2VT
dHJpbmdzLCAxLCBTSF9PQkpFQ1RfQ09ERSB8IFNIX1ZBUklBQkxFUyB8IGV4dHJhQ29tcGlsZU9w
dGlvbnMpOworICAgIGJvb2wgdmFsaWRhdGVTdWNjZXNzID0gc2g6OkNvbXBpbGUoY29tcGlsZXIs
IHNoYWRlclNvdXJjZVN0cmluZ3MsIDEsIFNIX09CSkVDVF9DT0RFIHwgU0hfVkFSSUFCTEVTIHwg
ZXh0cmFDb21waWxlT3B0aW9ucyk7CiAgICAgaWYgKCF2YWxpZGF0ZVN1Y2Nlc3MpIHsKLSAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIGxvZyA9IFNoR2V0SW5mb0xvZyhjb21waWxlcik7CisgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBsb2cgPSBzaDo6R2V0SW5mb0xvZyhjb21waWxlcik7CiAg
ICAgICAgIGlmIChsb2cubGVuZ3RoKCkpCiAgICAgICAgICAgICBzaGFkZXJWYWxpZGF0aW9uTG9n
ID0gbG9nLmNfc3RyKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBjb25z
dCBzdGQ6OnN0cmluZyYgb2JqZWN0Q29kZSA9IFNoR2V0T2JqZWN0Q29kZShjb21waWxlcik7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENvZGUgPSBzaDo6R2V0T2JqZWN0Q29kZShjb21w
aWxlcik7CiAgICAgaWYgKG9iamVjdENvZGUubGVuZ3RoKCkpCiAgICAgICAgIHRyYW5zbGF0ZWRT
aGFkZXJTb3VyY2UgPSBvYmplY3RDb2RlLmNfc3RyKCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RNYWMubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhpY3NDb250ZXh0M0RN
YWMubW0KaW5kZXggMWM0ZTQzNTkzNWExY2E0NjIxNGQzNDgwMDU0MDUzYzU5ZjhlZjA5Mi4uNTBl
ZTU2YmI4NGVjZThjYmUyMTVkODI3NzIwYzJlZGI2Yjk1OTU1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQz
RE1hYy5tbQpAQCAtNTM2LDcgKzUzNiw3IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0Nv
bnRleHQzRChHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RXaW5kCiAgICAg
Ly8gQU5HTEUgaW5pdGlhbGl6YXRpb24uCiAKICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgQU5HTEVS
ZXNvdXJjZXM7Ci0gICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmQU5HTEVSZXNvdXJjZXMpOwor
ICAgIHNoOjpJbml0QnVpbHRJblJlc291cmNlcygmQU5HTEVSZXNvdXJjZXMpOwogCiAgICAgZ2V0
SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9WRVJURVhfQVRUUklCUywgJkFOR0xFUmVz
b3VyY2VzLk1heFZlcnRleEF0dHJpYnMpOwogICAgIGdldEludGVnZXJ2KEdyYXBoaWNzQ29udGV4
dDNEOjpNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRl
eFVuaWZvcm1WZWN0b3JzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xD
b21tb24uY3BwCmluZGV4IGQ2OWQ2MmQyMjAzYzhkNWRkOGEyZTIwZDA1ZjUzOThkMGVlOTYzMzIu
LmM3YTBlYzdmMjUyM2E2Y2IwZWE3MDFkOTI1N2M4OTY0OGRiNTVmYTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtNDA1LDcgKzQwNSw3IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrVmFyeWluZ3NQYWNraW5nKFBsYXRmb3JtM0RP
YmplY3QgdmVydGV4U2hhZGVyLCBQbGF0CiAjZWxzZQogICAgIDo6Z2xHZXRJbnRlZ2VydihNQVhf
VkFSWUlOR19WRUNUT1JTLCAmbWF4VmFyeWluZ1ZlY3RvcnMpOwogI2VuZGlmCi0gICAgcmV0dXJu
IFNoQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKG1heFZhcnlpbmdWZWN0b3JzLCB2
YXJpYWJsZXMpOworICAgIHJldHVybiBzaDo6Q2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGlt
aXRzKG1heFZhcnlpbmdWZWN0b3JzLCB2YXJpYWJsZXMpOwogfQogCiBib29sIEdyYXBoaWNzQ29u
dGV4dDNEOjpwcmVjaXNpb25zTWF0Y2goUGxhdGZvcm0zRE9iamVjdCB2ZXJ0ZXhTaGFkZXIsIFBs
YXRmb3JtM0RPYmplY3QgZnJhZ21lbnRTaGFkZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTAxYmRkODY4NzQz
MjUwZTk0MGE4ODJiMzVmZjBhMzgwYWZjMjYxNC4uNDQ1YjZlZTQyNGFlZmUxMzZjZWIzNDJmOGEz
Mzc4ZTMxYjliZjBmYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE3LTA0LTE4ICBEZWFuIEph
Y2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgQU5HTEUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDk0MQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vMzE2MzM5OTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFnbWVudC1zaGFkZXItYXNz
ZXJ0aW9uLWV4cGVjdGVkLnR4dDoKKwogMjAxNy0wNC0xNyAgUnlhbiBIYWRkYWQgIDxyeWFuaGFk
ZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBTa2lwIHdlYnJ0Yy9tdWx0aS12aWRlby5odG1sLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhZ21lbnQtc2hhZGVy
LWFzc2VydGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9m
cmFnbWVudC1zaGFkZXItYXNzZXJ0aW9uLWV4cGVjdGVkLnR4dAppbmRleCAwYzM4MGU0Y2IwODk5
OWYzYWIzYzVkNWFhOTMzODMzOGRkNzIxNmFlLi43YmUyNzZlMjMxMjI0ZjYyZWI0MzQxNTdiODIw
OWZkZGM3MGM4Yzk1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9m
cmFnbWVudC1zaGFkZXItYXNzZXJ0aW9uLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9mcmFnbWVudC1zaGFkZXItYXNzZXJ0aW9uLWV4cGVjdGVkLnR4dApA
QCAtMSw0ICsxLDQgQEAKIFBBU1M6IFRoaXMgdGVzdCBkaWQgbm90IGFzc2VydCBiZWNhdXNlIG9m
IHRoaXMgZXhwZWN0ZWQgc3ludGF4IGVycm9yOgotRVJST1I6IDA6MTogJywnIDogSWxsZWdhbCBj
aGFyYWN0ZXIgYXQgZmllbGRuYW1lIHN0YXJ0IAotRVJST1I6IDA6MTogJywnIDogc3ludGF4IGVy
cm9yIAorRVJST1I6IDA6MTogJywnIDogSWxsZWdhbCBjaGFyYWN0ZXIgYXQgZmllbGRuYW1lIHN0
YXJ0CitFUlJPUjogMDoxOiAnLCcgOiBzeW50YXggZXJyb3IKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307372</attachid>
            <date>2017-04-18 04:46:07 -0700</date>
            <delta_ts>2017-04-18 09:29:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>angle.patch</filename>
            <type>text/plain</type>
            <size>9875532</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5MDFiZGQ4Njg3NC4uNDQ1YjZlZTQyNGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxNy0wNC0xOCAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisKKyAgICAgICAgVXBk
YXRlIEFOR0xFCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzA5NDEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxNjMzOTk5PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9jYW52YXMvd2ViZ2wv
ZnJhZ21lbnQtc2hhZGVyLWFzc2VydGlvbi1leHBlY3RlZC50eHQ6CisKIDIwMTctMDQtMTcgIFJ5
YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgU2tpcCB3ZWJydGMv
bXVsdGktdmlkZW8uaHRtbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dl
YmdsL2ZyYWdtZW50LXNoYWRlci1hc3NlcnRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9jYW52YXMvd2ViZ2wvZnJhZ21lbnQtc2hhZGVyLWFzc2VydGlvbi1leHBlY3RlZC50eHQK
aW5kZXggMGMzODBlNGNiMDguLjdiZTI3NmUyMzEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9mcmFnbWVudC1zaGFkZXItYXNzZXJ0aW9uLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9mcmFnbWVudC1zaGFkZXItYXNzZXJ0
aW9uLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKIFBBU1M6IFRoaXMgdGVzdCBkaWQgbm90
IGFzc2VydCBiZWNhdXNlIG9mIHRoaXMgZXhwZWN0ZWQgc3ludGF4IGVycm9yOgotRVJST1I6IDA6
MTogJywnIDogSWxsZWdhbCBjaGFyYWN0ZXIgYXQgZmllbGRuYW1lIHN0YXJ0IAotRVJST1I6IDA6
MTogJywnIDogc3ludGF4IGVycm9yIAorRVJST1I6IDA6MTogJywnIDogSWxsZWdhbCBjaGFyYWN0
ZXIgYXQgZmllbGRuYW1lIHN0YXJ0CitFUlJPUjogMDoxOiAnLCcgOiBzeW50YXggZXJyb3IKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUucGxpc3QgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS5wbGlzdAppbmRleCA1MTVjOGI5YmUyNS4uN2MwOTI3MGVh
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnBsaXN0CisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnBsaXN0CkBAIC02LDExICs2LDExIEBACiAg
ICAgICAgIDxrZXk+T3BlblNvdXJjZVByb2plY3Q8L2tleT4KICAgICAgICAgPHN0cmluZz5BTkdM
RTwvc3RyaW5nPgogICAgICAgICA8a2V5Pk9wZW5Tb3VyY2VWZXJzaW9uPC9rZXk+Ci0gICAgICAg
IDxzdHJpbmc+ZTdhNDUzYTViZDc2NzA1Y2NiMTUxMTE3ZmE4NDQ4NDZkNGFhOTBhZjwvc3RyaW5n
PgorICAgICAgICA8c3RyaW5nPmQxYmVkMTc1ZjEwNzE0M2E3YzUyNDg1YTlkMTk3YjQ4NmNkNTQz
M2U8L3N0cmluZz4KICAgICAgICAgPGtleT5PcGVuU291cmNlV2Vic2l0ZVVSTDwva2V5PgogICAg
ICAgICA8c3RyaW5nPmh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmdsZXByb2plY3QvPC9zdHJp
bmc+CiAgICAgICAgIDxrZXk+T3BlblNvdXJjZVNDTTwva2V5PgotICAgICAgICA8c3RyaW5nPmdp
dCBjbG9uZSBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vYW5nbGUvYW5nbGUgJmFt
cDsmYW1wOyBjZCBhbmdsZSAmYW1wOyZhbXA7IGdpdCBjaGVja291dCBmMDE3MzE1MzBlN2Y3NTRl
NWViYWYzMmQwMGYzZTIzYjYyMzc2NDI0PC9zdHJpbmc+CisgICAgICAgIDxzdHJpbmc+Z2l0IGNs
b25lIGh0dHBzOi8vY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9hbmdsZS9hbmdsZSAmYW1wOyZh
bXA7IGNkIGFuZ2xlICZhbXA7JmFtcDsgZ2l0IGNoZWNrb3V0IGQxYmVkMTc1ZjEwNzE0M2E3YzUy
NDg1YTlkMTk3YjQ4NmNkNTQzM2U8L3N0cmluZz4KICAgICAgICAgPGtleT5PcGVuU291cmNlSW1w
b3J0RGF0ZTwva2V5PgogICAgICAgICA8c3RyaW5nPjIwMTQtMDQtMjk8L3N0cmluZz4KICAgICAg
ICAgPGtleT5PcGVuU291cmNlTGljZW5zZTwva2V5PgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2YyZWNk
ZGVjNzEuLmEwNzE3NGQ2YzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9B
TkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE5LDggKzE5LDYgQEAKIAkJ
MzEwMTJFMjgxOEI5N0I5QjAwMzkwNjJGIC8qIERpcmVjdGl2ZUhhbmRsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJEQjcxOEI5N0I5QjAw
MzkwNjJGIC8qIERpcmVjdGl2ZUhhbmRsZXIuY3BwICovOyB9OwogCQkzMTAxMkUyOTE4Qjk3QjlC
MDAzOTA2MkYgLyogRGlyZWN0aXZlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJEQjgxOEI5N0I5QjAwMzkwNjJGIC8qIERpcmVjdGl2
ZUhhbmRsZXIuaCAqLzsgfTsKIAkJMzEwMTJFMkExOEI5N0I5QjAwMzkwNjJGIC8qIEV4dGVuc2lv
bkJlaGF2aW9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTAxMkRCOTE4Qjk3QjlCMDAzOTA2MkYgLyogRXh0ZW5zaW9uQmVoYXZpb3IuaCAqLzsgfTsK
LQkJMzEwMTJFMkIxOEI5N0I5QjAwMzkwNjJGIC8qIEZvckxvb3BVbnJvbGwuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJEQkExOEI5N0I5QjAw
MzkwNjJGIC8qIEZvckxvb3BVbnJvbGwuY3BwICovOyB9OwotCQkzMTAxMkUyQzE4Qjk3QjlCMDAz
OTA2MkYgLyogRm9yTG9vcFVucm9sbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzEwMTJEQkIxOEI5N0I5QjAwMzkwNjJGIC8qIEZvckxvb3BVbnJvbGwu
aCAqLzsgfTsKIAkJMzEwMTJFMkQxOEI5N0I5QjAwMzkwNjJGIC8qIGdsc2xhbmcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREJEMThCOTdCOUIw
MDM5MDYyRiAvKiBnbHNsYW5nLmggKi87IH07CiAJCTMxMDEyRTMwMThCOTdCOUIwMDM5MDYyRiAv
KiBnbHNsYW5nX2xleC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTAxMkRDMDE4Qjk3QjlCMDAzOTA2MkYgLyogZ2xzbGFuZ19sZXguY3BwICovOyB9
OwogCQkzMTAxMkUzMTE4Qjk3QjlCMDAzOTA2MkYgLyogZ2xzbGFuZ190YWIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJEQzExOEI5N0I5QjAw
MzkwNjJGIC8qIGdsc2xhbmdfdGFiLmNwcCAqLzsgfTsKQEAgLTMzLDE0ICszMSwxMSBAQAogCQkz
MTAxMkUzODE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZURsbC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRDODE4Qjk3QjlCMDAzOTA2
MkYgLyogSW5pdGlhbGl6ZURsbC5jcHAgKi87IH07CiAJCTMxMDEyRTM5MThCOTdCOUIwMDM5MDYy
RiAvKiBJbml0aWFsaXplRGxsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTAxMkRDOTE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZURsbC5oICov
OyB9OwogCQkzMTAxMkUzQTE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZUdsb2JhbHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyRENBMThC
OTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplR2xvYmFscy5oICovOyB9OwotCQkzMTAxMkUzQjE4
Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRDQjE4Qjk3QjlCMDAzOTA2
MkYgLyogSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAgKi87IH07Ci0JCTMxMDEyRTNDMThCOTdC
OUIwMDM5MDYyRiAvKiBJbml0aWFsaXplUGFyc2VDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRDQzE4Qjk3QjlCMDAzOTA2MkYgLyog
SW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oICovOyB9OwogCQkzMTAxMkUzRDE4Qjk3QjlCMDAzOTA2
MkYgLyogSW5pdGlhbGl6ZVZhcmlhYmxlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRDRDE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6
ZVZhcmlhYmxlcy5jcHAgKi87IH07CiAJCTMxMDEyRTNFMThCOTdCOUIwMDM5MDYyRiAvKiBJbml0
aWFsaXplVmFyaWFibGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTAxMkRDRTE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZVZhcmlhYmxlcy5o
ICovOyB9OwogCQkzMTAxMkUzRjE4Qjk3QjlCMDAzOTA2MkYgLyogSW50ZXJtZWRpYXRlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyRENGMThC
OTdCOUIwMDM5MDYyRiAvKiBJbnRlcm1lZGlhdGUuY3BwICovOyB9OwogCQkzMTAxMkU0MTE4Qjk3
QjlCMDAzOTA2MkYgLyogaW50ZXJtT3V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREQxMThCOTdCOUIwMDM5MDYyRiAvKiBpbnRlcm1PdXQu
Y3BwICovOyB9OwogCQkzMTAxMkU0MjE4Qjk3QjlCMDAzOTA2MkYgLyogSW50ZXJtVHJhdmVyc2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwMTJE
RDIxOEI5N0I5QjAwMzkwNjJGIC8qIEludGVybVRyYXZlcnNlLmNwcCAqLzsgfTsKLQkJMzEwMTJF
NDYxOEI5N0I5QjAwMzkwNjJGIC8qIE1NYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDEyREQ2MThCOTdCOUIwMDM5MDYyRiAvKiBNTWFwLmggKi87
IH07CiAJCTMxMDEyRTQ3MThCOTdCOUIwMDM5MDYyRiAvKiBOb2RlU2VhcmNoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkRENzE4Qjk3QjlCMDAz
OTA2MkYgLyogTm9kZVNlYXJjaC5oICovOyB9OwogCQkzMTAxMkU0QjE4Qjk3QjlCMDAzOTA2MkYg
LyogT3V0cHV0RVNTTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMTAxMkREQjE4Qjk3QjlCMDAzOTA2MkYgLyogT3V0cHV0RVNTTC5jcHAgKi87IH07
CiAJCTMxMDEyRTRDMThCOTdCOUIwMDM5MDYyRiAvKiBPdXRwdXRFU1NMLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkREQzE4Qjk3QjlCMDAzOTA2
MkYgLyogT3V0cHV0RVNTTC5oICovOyB9OwpAQCAtODMsNiArNzgsMjIgQEAKIAkJMzEwMTJFODAx
OEI5N0I5QjAwMzkwNjJGIC8qIFZlcnNpb25HTFNMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTAxMkUxMTE4Qjk3QjlCMDAzOTA2MkYgLyogVmVyc2lv
bkdMU0wuaCAqLzsgfTsKIAkJMzEyQkRCMEMxNUZFQ0FDOTAwOTdFQkM3IC8qIEFOR0xFLnBsaXN0
IGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJCREIw
OTE1RkVDOTFFMDA5N0VCQzcgLyogQU5HTEUucGxpc3QgKi87IH07CiAJCTMxMkJEQjBFMTVGRUNB
RTUwMDk3RUJDNyAvKiBBTkdMRS50eHQgaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDMxMkJEQjBBMTVGRUNBM0EwMDk3RUJDNyAvKiBBTkdMRS50eHQgKi87
IH07CisJCTMxQTMzMUMyMUVBNUVEMjUwMEZEMjIwMyAvKiBiaXRzZXRfdXRpbHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTMzMUMwMUVBNUVEMjUw
MEZEMjIwMyAvKiBiaXRzZXRfdXRpbHMuaCAqLzsgfTsKKwkJMzFBMzMxQzYxRUE1RUQ1RjAwRkQy
MjAzIC8qIHN5c3RlbV91dGlsc19tYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzFBMzMxQzMxRUE1RUQ1RjAwRkQyMjAzIC8qIHN5c3RlbV91dGls
c19tYWMuY3BwICovOyB9OworCQkzMUEzMzFDNzFFQTVFRDVGMDBGRDIyMDMgLyogc3lzdGVtX3V0
aWxzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEz
MzFDNDFFQTVFRDVGMDBGRDIyMDMgLyogc3lzdGVtX3V0aWxzLmggKi87IH07CisJCTMxQTMzMUM4
MUVBNUVENUYwMEZEMjIwMyAvKiB2ZWN0b3JfdXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTMzMUM1MUVBNUVENUYwMEZEMjIwMyAvKiB2ZWN0
b3JfdXRpbHMuaCAqLzsgfTsKKwkJMzFBMzMxRDQxRUE1RUREQTAwRkQyMjAzIC8qIEZpbmRTeW1i
b2xOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxQTMzMUM5MUVBNUVEREEwMEZEMjIwMyAvKiBGaW5kU3ltYm9sTm9kZS5jcHAgKi87IH07CisJ
CTMxQTMzMUQ1MUVBNUVEREEwMEZEMjIwMyAvKiBGaW5kU3ltYm9sTm9kZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMzMxQ0ExRUE1RUREQTAwRkQy
MjAzIC8qIEZpbmRTeW1ib2xOb2RlLmggKi87IH07CisJCTMxQTMzMUQ2MUVBNUVEREEwMEZEMjIw
MyAvKiBQcnVuZVB1cmVMaXRlcmFsU3RhdGVtZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEzMzFDQjFFQTVFRERBMDBGRDIyMDMgLyogUHJ1
bmVQdXJlTGl0ZXJhbFN0YXRlbWVudHMuY3BwICovOyB9OworCQkzMUEzMzFENzFFQTVFRERBMDBG
RDIyMDMgLyogUHJ1bmVQdXJlTGl0ZXJhbFN0YXRlbWVudHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTMzMUNDMUVBNUVEREEwMEZEMjIwMyAvKiBQ
cnVuZVB1cmVMaXRlcmFsU3RhdGVtZW50cy5oICovOyB9OworCQkzMUEzMzFEODFFQTVFRERBMDBG
RDIyMDMgLyogUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMzMxQ0QxRUE1RUREQTAwRkQyMjAzIC8q
IFJlbW92ZUludmFyaWFudERlY2xhcmF0aW9uLmNwcCAqLzsgfTsKKwkJMzFBMzMxRDkxRUE1RURE
QTAwRkQyMjAzIC8qIFJlbW92ZUludmFyaWFudERlY2xhcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEzMzFDRTFFQTVFRERBMDBGRDIyMDMg
LyogUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24uaCAqLzsgfTsKKwkJMzFBMzMxREExRUE1RURE
QTAwRkQyMjAzIC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUEzMzFDRjFFQTVFRERBMDBG
RDIyMDMgLyogUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckZsb2F0LmNwcCAqLzsgfTsKKwkJMzFB
MzMxREIxRUE1RUREQTAwRkQyMjAzIC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFBMzMxRDAx
RUE1RUREQTAwRkQyMjAzIC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5oICovOyB9
OworCQkzMUEzMzFEQzFFQTVFRERBMDBGRDIyMDMgLyogU2V2ZXJpdHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTMzMUQxMUVBNUVEREEwMEZEMjIw
MyAvKiBTZXZlcml0eS5oICovOyB9OworCQkzMUEzMzFERDFFQTVFRERBMDBGRDIyMDMgLyogVmFs
aWRhdGVNdWx0aXZpZXdXZWJHTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAzMUEzMzFEMjFFQTVFRERBMDBGRDIyMDMgLyogVmFsaWRhdGVNdWx0aXZp
ZXdXZWJHTC5jcHAgKi87IH07CisJCTMxQTMzMURFMUVBNUVEREEwMEZEMjIwMyAvKiBWYWxpZGF0
ZU11bHRpdmlld1dlYkdMLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAzMUEzMzFEMzFFQTVFRERBMDBGRDIyMDMgLyogVmFsaWRhdGVNdWx0aXZpZXdXZWJH
TC5oICovOyB9OworCQkzMUEzMzFFMjFFQTVFRkI4MDBGRDIyMDMgLyogdHJhY2VfZXZlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQTMzMUUxMUVB
NUVGQjgwMEZEMjIwMyAvKiB0cmFjZV9ldmVudC5oICovOyB9OwogCQk1QzFCQUE5QTFERkI2MEZG
MDAyOTA2QkIgLyogZ2wzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QzFCQUE5NjFERkI2MEZGMDAyOTA2QkIgLyogZ2wzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk1QzFCQUE5QjFERkI2MEZGMDAyOTA2
QkIgLyogZ2wzcGxhdGZvcm0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDVDMUJBQTk3MURGQjYwRkYwMDI5MDZCQiAvKiBnbDNwbGF0Zm9ybS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNUMxQkFBOUMxREZC
NjBGRjAwMjkwNkJCIC8qIGdsMzEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDMUJBQTk4MURGQjYwRkYwMDI5MDZCQiAvKiBnbDMxLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwpAQCAtMzIwLDggKzMzMSw2IEBA
CiAJCTVDQjMwNEUzMURFNDE2NDgwMEQyQzQwNSAvKiBFR0xJbXBsRmFjdG9yeS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMzA0QjMxREU0MTY0ODAw
RDJDNDA1IC8qIEVHTEltcGxGYWN0b3J5LmggKi87IH07CiAJCTVDQjMwNEU0MURFNDE2NDgwMEQy
QzQwNSAvKiBGZW5jZU5WSW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUNCMzA0QjQxREU0MTY0ODAwRDJDNDA1IC8qIEZlbmNlTlZJbXBsLmggKi87
IH07CiAJCTVDQjMwNEU1MURFNDE2NDgwMEQyQzQwNSAvKiBGZW5jZVN5bmNJbXBsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzMDRCNTFERTQxNjQ4
MDBEMkM0MDUgLyogRmVuY2VTeW5jSW1wbC5oICovOyB9OwotCQk1Q0IzMDRFNjFERTQxNjQ4MDBE
MkM0MDUgLyogRm9ybWF0X2F1dG9nZW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUNCMzA0QjYxREU0MTY0ODAwRDJDNDA1IC8qIEZvcm1hdF9hdXRv
Z2VuLmNwcCAqLzsgfTsKLQkJNUNCMzA0RTcxREU0MTY0ODAwRDJDNDA1IC8qIEZvcm1hdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzMDRCODFE
RTQxNjQ4MDBEMkM0MDUgLyogRm9ybWF0LmNwcCAqLzsgfTsKIAkJNUNCMzA0RTgxREU0MTY0ODAw
RDJDNDA1IC8qIEZvcm1hdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNCMzA0QjkxREU0MTY0ODAwRDJDNDA1IC8qIEZvcm1hdC5oICovOyB9OwogCQk1
Q0IzMDRFOTFERTQxNjQ4MDBEMkM0MDUgLyogRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0SW1w
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMzA0
QkExREU0MTY0ODAwRDJDNDA1IC8qIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdEltcGwuaCAq
LzsgfTsKIAkJNUNCMzA0RUExREU0MTY0ODAwRDJDNDA1IC8qIEZyYW1lYnVmZmVySW1wbF9tb2Nr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IzMDRC
QjFERTQxNjQ4MDBEMkM0MDUgLyogRnJhbWVidWZmZXJJbXBsX21vY2suaCAqLzsgfTsKQEAgLTM1
MSw4ICszNjAsNiBAQAogCQk1Q0IzMDUwMjFERTQxNjQ4MDBEMkM0MDUgLyogVHJhbnNmb3JtRmVl
ZGJhY2tJbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Q0IzMDREODFERTQxNjQ4MDBEMkM0MDUgLyogVHJhbnNmb3JtRmVlZGJhY2tJbXBsLmggKi87
IH07CiAJCTVDQjMwNTAzMURFNDE2NDgwMEQyQzQwNSAvKiBWZXJ0ZXhBcnJheUltcGwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjMwNEQ5MURFNDE2
NDgwMEQyQzQwNSAvKiBWZXJ0ZXhBcnJheUltcGwuaCAqLzsgfTsKIAkJNUNCNUUxQTcxREZCOEFG
NjAwRjkwRkM5IC8qIGxpYkVHTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0IzMDBCNTFERTM5RTYzMDBEMkM0MDUgLyogbGliRUdMLmNwcCAqLzsg
fTsKLQkJNUNDN0Q0NTIxOTEwMjRFNDAwMEI4QzFGIC8qIExvb3BJbmZvLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzdENDRCMTkxMDI0RTMwMDBC
OEMxRiAvKiBMb29wSW5mby5jcHAgKi87IH07Ci0JCTVDQzdENDUzMTkxMDI0RTQwMDBCOEMxRiAv
KiBMb29wSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUNDN0Q0NEMxOTEwMjRFNDAwMEI4QzFGIC8qIExvb3BJbmZvLmggKi87IH07CiAJCTVDQzdE
NDU3MTkxMDI0RTQwMDBCOEMxRiAvKiBWYWxpZGF0ZU91dHB1dHMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDN0Q0NTAxOTEwMjRFNDAwMEI4QzFG
IC8qIFZhbGlkYXRlT3V0cHV0cy5jcHAgKi87IH07CiAJCTVDQzdENDU4MTkxMDI0RTQwMDBCOEMx
RiAvKiBWYWxpZGF0ZU91dHB1dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDQzdENDUxMTkxMDI0RTQwMDBCOEMxRiAvKiBWYWxpZGF0ZU91dHB1dHMu
aCAqLzsgfTsKIAkJNUNDN0Q0NkIxOTEwMjYyMDAwMEI4QzFGIC8qIGFuZ2xldXRpbHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQzdENDVBMTkxMDI2
MjAwMDBCOEMxRiAvKiBhbmdsZXV0aWxzLmggKi87IH07CkBAIC0zNzksNyArMzg2LDYgQEAKIAkJ
NUNDRDgxN0IxREJGRTk5OTAwNjA2NkI4IC8qIFBhdGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTYzMURCRkU5OTkwMDYwNjZCOCAvKiBQYXRo
LmggKi87IH07CiAJCTVDQ0Q4MTdDMURCRkU5OTkwMDYwNjZCOCAvKiBxdWVyeXV0aWxzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTY0MURC
RkU5OTkwMDYwNjZCOCAvKiBxdWVyeXV0aWxzLmNwcCAqLzsgfTsKIAkJNUNDRDgxN0QxREJGRTk5
OTAwNjA2NkI4IC8qIHF1ZXJ5dXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTY1MURCRkU5OTkwMDYwNjZCOCAvKiBxdWVyeXV0aWxzLmgg
Ki87IH07Ci0JCTVDQ0Q4MTdFMURCRkU5OTkwMDYwNjZCOCAvKiBzaWduYWxfdXRpbHMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgxNjYxREJG
RTk5OTAwNjA2NkI4IC8qIHNpZ25hbF91dGlscy5jcHAgKi87IH07CiAJCTVDQ0Q4MTdGMURCRkU5
OTkwMDYwNjZCOCAvKiBzaWduYWxfdXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTY3MURCRkU5OTkwMDYwNjZCOCAvKiBzaWduYWxfdXRp
bHMuaCAqLzsgfTsKIAkJNUNDRDgxODAxREJGRTk5OTAwNjA2NkI4IC8qIFN0cmVhbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE2ODFEQkZF
OTk5MDA2MDY2QjggLyogU3RyZWFtLmNwcCAqLzsgfTsKIAkJNUNDRDgxODExREJGRTk5OTAwNjA2
NkI4IC8qIFN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUNDRDgxNjkxREJGRTk5OTAwNjA2NkI4IC8qIFN0cmVhbS5oICovOyB9OwpAQCAtMzg3
LDcgKzM5Myw2IEBACiAJCTVDQ0Q4MTgzMURCRkU5OTkwMDYwNjZCOCAvKiB2YWxpZGF0aW9uRVMz
MS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRDgx
NkIxREJGRTk5OTAwNjA2NkI4IC8qIHZhbGlkYXRpb25FUzMxLmggKi87IH07CiAJCTVDQ0Q4MTg0
MURCRkU5OTkwMDYwNjZCOCAvKiBWZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NEODE2QzFEQkZFOTk5MDA2MDY2QjggLyogVmVyc2lvbi5o
ICovOyB9OwogCQk1Q0NEODE4NTFEQkZFOTk5MDA2MDY2QjggLyogV29ya2Fyb3VuZHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTZGMURCRkU5
OTkwMDYwNjZCOCAvKiBXb3JrYXJvdW5kcy5oICovOyB9OwotCQk1Q0NEODE4RDFEQkZFQTEwMDA2
MDY2QjggLyogQml0U2V0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTg2MURCRkVBMTAwMDYwNjZCOCAvKiBCaXRTZXRJdGVyYXRv
ci5oICovOyB9OwogCQk1Q0NEODE4RTFEQkZFQTEwMDA2MDY2QjggLyogQ29sb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MTg3MURCRkVBMTAw
MDYwNjZCOCAvKiBDb2xvci5oICovOyB9OwogCQk1Q0NEODE4RjFEQkZFQTEwMDA2MDY2QjggLyog
RmxvYXQxNlRvRmxvYXQzMi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1Q0NEODE4OTFEQkZFQTEwMDA2MDY2QjggLyogRmxvYXQxNlRvRmxvYXQzMi5j
cHAgKi87IH07CiAJCTVDQ0Q4MTkwMURCRkVBMTAwMDYwNjZCOCAvKiBtYXRyaXhfdXRpbHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0Q4MThBMURC
RkVBMTAwMDYwNjZCOCAvKiBtYXRyaXhfdXRpbHMuaCAqLzsgfTsKQEAgLTQ4NCw4ICs0ODksNiBA
QAogCQkzMTAxMkRCNzE4Qjk3QjlCMDAzOTA2MkYgLyogRGlyZWN0aXZlSGFuZGxlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXJlY3RpdmVIYW5kbGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJEQjgxOEI5N0I5QjAwMzkwNjJGIC8q
IERpcmVjdGl2ZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGly
ZWN0aXZlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTAxMkRCOTE4
Qjk3QjlCMDAzOTA2MkYgLyogRXh0ZW5zaW9uQmVoYXZpb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRXh0ZW5zaW9uQmVoYXZpb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMzEwMTJEQkExOEI5N0I5QjAwMzkwNjJGIC8qIEZvckxvb3BVbnJvbGwuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9yTG9vcFVucm9sbC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMDEyREJCMThCOTdCOUIwMDM5MDYyRiAvKiBG
b3JMb29wVW5yb2xsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvckxvb3BV
bnJvbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJEQkQxOEI5N0I5QjAw
MzkwNjJGIC8qIGdsc2xhbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZ2xz
bGFuZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTAxMkRDMDE4Qjk3QjlCMDAz
OTA2MkYgLyogZ2xzbGFuZ19sZXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gZ2xzbGFuZ19sZXguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTAx
MkRDMTE4Qjk3QjlCMDAzOTA2MkYgLyogZ2xzbGFuZ190YWIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gZ2xzbGFuZ190YWIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtNDk4LDE0ICs1MDEsMTEgQEAKIAkJMzEwMTJEQzgxOEI5N0I5QjAwMzkwNjJG
IC8qIEluaXRpYWxpemVEbGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW5pdGlhbGl6ZURsbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDEy
REM5MThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplRGxsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluaXRpYWxpemVEbGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMzEwMTJEQ0ExOEI5N0I5QjAwMzkwNjJGIC8qIEluaXRpYWxpemVHbG9iYWxzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluaXRpYWxpemVHbG9iYWxzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTMxMDEyRENCMThCOTdCOUIwMDM5MDYyRiAvKiBJbml0
aWFsaXplUGFyc2VDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluaXRpYWxpemVQYXJzZUNvbnRleHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkzMTAxMkRDQzE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbml0aWFsaXplUGFyc2VDb250ZXh0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDEyRENEMThCOTdCOUIwMDM5MDYy
RiAvKiBJbml0aWFsaXplVmFyaWFibGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluaXRpYWxpemVWYXJpYWJsZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkzMTAxMkRDRTE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZVZhcmlhYmxlcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbml0aWFsaXplVmFyaWFibGVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDEyRENGMThCOTdCOUIwMDM5MDYyRiAv
KiBJbnRlcm1lZGlhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW50ZXJtZWRpYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJERDEx
OEI5N0I5QjAwMzkwNjJGIC8qIGludGVybU91dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBpbnRlcm1PdXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzMTAxMkREMjE4Qjk3QjlCMDAzOTA2MkYgLyogSW50ZXJtVHJhdmVyc2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZXJtVHJhdmVyc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkzMTAxMkRENjE4Qjk3QjlCMDAzOTA2MkYgLyogTU1hcC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNTWFwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTMxMDEyREQ3MThCOTdCOUIwMDM5MDYyRiAvKiBOb2RlU2VhcmNoLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vZGVTZWFyY2guaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzEwMTJEREIxOEI5N0I5QjAwMzkwNjJGIC8qIE91dHB1dEVT
U0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3V0cHV0RVNTTC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMDEyRERDMThCOTdCOUIwMDM5MDYy
RiAvKiBPdXRwdXRFU1NMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE91dHB1
dEVTU0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0OCw2ICs1NDgsMjIgQEAK
IAkJMzEwMTJFMTExOEI5N0I5QjAwMzkwNjJGIC8qIFZlcnNpb25HTFNMLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlcnNpb25HTFNMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTMxMkJEQjA5MTVGRUM5MUUwMDk3RUJDNyAvKiBBTkdMRS5wbGlzdCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQucGxpc3QueG1sOyBwYXRoID0gQU5HTEUucGxpc3Q7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTMxMkJEQjBBMTVGRUNBM0EwMDk3RUJDNyAvKiBBTkdMRS50eHQgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gQU5HTEUudHh0OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMUEzMzFDMDFFQTVFRDI1MDBGRDIyMDMgLyogYml0c2V0X3V0aWxzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGJpdHNldF91dGlscy5oOyBwYXRoID0gc3JjL2NvbW1vbi9i
aXRzZXRfdXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMzMxQzMxRUE1
RUQ1RjAwRkQyMjAzIC8qIHN5c3RlbV91dGlsc19tYWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gc3lzdGVtX3V0aWxzX21hYy5jcHA7IHBhdGggPSBzcmMvY29tbW9u
L3N5c3RlbV91dGlsc19tYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEz
MzFDNDFFQTVFRDVGMDBGRDIyMDMgLyogc3lzdGVtX3V0aWxzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IHN5c3RlbV91dGlscy5oOyBwYXRoID0gc3JjL2NvbW1vbi9zeXN0ZW1f
dXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMzMxQzUxRUE1RUQ1RjAw
RkQyMjAzIC8qIHZlY3Rvcl91dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSB2ZWN0b3JfdXRpbHMuaDsgcGF0aCA9IHNyYy9jb21tb24vdmVjdG9yX3V0aWxzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTMzMUM5MUVBNUVEREEwMEZEMjIwMyAvKiBGaW5k
U3ltYm9sTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaW5k
U3ltYm9sTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTMzMUNBMUVB
NUVEREEwMEZEMjIwMyAvKiBGaW5kU3ltYm9sTm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGaW5kU3ltYm9sTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkzMUEzMzFDQjFFQTVFRERBMDBGRDIyMDMgLyogUHJ1bmVQdXJlTGl0ZXJhbFN0YXRlbWVudHMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUHJ1bmVQdXJlTGl0ZXJh
bFN0YXRlbWVudHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMUEzMzFDQzFF
QTVFRERBMDBGRDIyMDMgLyogUHJ1bmVQdXJlTGl0ZXJhbFN0YXRlbWVudHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJ1bmVQdXJlTGl0ZXJhbFN0YXRlbWVudHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMzMxQ0QxRUE1RUREQTAwRkQyMjAzIC8qIFJl
bW92ZUludmFyaWFudERlY2xhcmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW92ZUludmFyaWFudERlY2xhcmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzFBMzMxQ0UxRUE1RUREQTAwRkQyMjAzIC8qIFJlbW92ZUludmFyaWFu
dERlY2xhcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW92ZUlu
dmFyaWFudERlY2xhcmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTMz
MUNGMUVBNUVEREEwMEZEMjIwMyAvKiBSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9yRmxvYXQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmV3cml0ZVVuYXJ5TWludXNP
cGVyYXRvckZsb2F0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMzMxRDAx
RUE1RUREQTAwRkQyMjAzIC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9yRmxv
YXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzFBMzMxRDExRUE1RUREQTAwRkQy
MjAzIC8qIFNldmVyaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNldmVy
aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTMzMUQyMUVBNUVEREEwMEZE
MjIwMyAvKiBWYWxpZGF0ZU11bHRpdmlld1dlYkdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFZhbGlkYXRlTXVsdGl2aWV3V2ViR0wuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMUEzMzFEMzFFQTVFRERBMDBGRDIyMDMgLyogVmFsaWRhdGVNdWx0
aXZpZXdXZWJHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWxpZGF0ZU11
bHRpdmlld1dlYkdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQTMzMUUxMUVB
NUVGQjgwMEZEMjIwMyAvKiB0cmFjZV9ldmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSB0cmFjZV9ldmVudC5oOyBwYXRoID0gc3JjL3RoaXJkX3BhcnR5L3RyYWNlX2V2ZW50
L3RyYWNlX2V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMUJBQTk2MURG
QjYwRkYwMDI5MDZCQiAvKiBnbDMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
Z2wzLmg7IHBhdGggPSBpbmNsdWRlL0dMRVMzL2dsMy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QzFCQUE5NzFERkI2MEZGMDAyOTA2QkIgLyogZ2wzcGxhdGZvcm0uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gZ2wzcGxhdGZvcm0uaDsgcGF0aCA9IGluY2x1ZGUv
R0xFUzMvZ2wzcGxhdGZvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMxQkFB
OTgxREZCNjBGRjAwMjkwNkJCIC8qIGdsMzEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gZ2wzMS5oOyBwYXRoID0gaW5jbHVkZS9HTEVTMy9nbDMxLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03OTIsOCArODA4LDYgQEAKIAkJNUNCMzA0QjMxREU0MTY0ODAwRDJD
NDA1IC8qIEVHTEltcGxGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEVHTEltcGxGYWN0b3J5Lmg7IHBhdGggPSBzcmMvbGliQU5HTEUvcmVuZGVyZXIvRUdMSW1wbEZh
Y3RvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMzA0QjQxREU0MTY0ODAw
RDJDNDA1IC8qIEZlbmNlTlZJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IEZlbmNlTlZJbXBsLmg7IHBhdGggPSBzcmMvbGliQU5HTEUvcmVuZGVyZXIvRmVuY2VOVkltcGwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMzA0QjUxREU0MTY0ODAwRDJDNDA1
IC8qIEZlbmNlU3luY0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRmVu
Y2VTeW5jSW1wbC5oOyBwYXRoID0gc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0ZlbmNlU3luY0ltcGwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNCMzA0QjYxREU0MTY0ODAwRDJDNDA1
IC8qIEZvcm1hdF9hdXRvZ2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEZvcm1hdF9hdXRvZ2VuLmNwcDsgcGF0aCA9IHNyYy9saWJBTkdMRS9yZW5kZXJlci9Gb3Jt
YXRfYXV0b2dlbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDQjMwNEI4MURF
NDE2NDgwMEQyQzQwNSAvKiBGb3JtYXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gRm9ybWF0LmNwcDsgcGF0aCA9IHNyYy9saWJBTkdMRS9yZW5kZXJlci9Gb3JtYXQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0IzMDRCOTFERTQxNjQ4MDBEMkM0
MDUgLyogRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEZvcm1hdC5o
OyBwYXRoID0gc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1Q0IzMDRCQTFERTQxNjQ4MDBEMkM0MDUgLyogRnJhbWVidWZmZXJBdHRh
Y2htZW50T2JqZWN0SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBsLmg7IHBhdGggPSBzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1Q0IzMDRCQjFERTQxNjQ4MDBEMkM0MDUgLyogRnJhbWVidWZmZXJJbXBsX21v
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRnJhbWVidWZmZXJJbXBsX21v
Y2suaDsgcGF0aCA9IHNyYy9saWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZlckltcGxfbW9jay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODIyLDggKzgzNiw2IEBACiAJCTVDQjMw
NEQ3MURFNDE2NDgwMEQyQzQwNSAvKiBUcmFuc2Zvcm1GZWVkYmFja0ltcGxfbW9jay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBUcmFuc2Zvcm1GZWVkYmFja0ltcGxfbW9jay5o
OyBwYXRoID0gc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1RyYW5zZm9ybUZlZWRiYWNrSW1wbF9tb2Nr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQjMwNEQ4MURFNDE2NDgwMEQyQzQw
NSAvKiBUcmFuc2Zvcm1GZWVkYmFja0ltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gVHJhbnNmb3JtRmVlZGJhY2tJbXBsLmg7IHBhdGggPSBzcmMvbGliQU5HTEUvcmVuZGVy
ZXIvVHJhbnNmb3JtRmVlZGJhY2tJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTVDQjMwNEQ5MURFNDE2NDgwMEQyQzQwNSAvKiBWZXJ0ZXhBcnJheUltcGwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gVmVydGV4QXJyYXlJbXBsLmg7IHBhdGggPSBzcmMvbGli
QU5HTEUvcmVuZGVyZXIvVmVydGV4QXJyYXlJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTVDQzdENDRCMTkxMDI0RTMwMDBCOEMxRiAvKiBMb29wSW5mby5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb29wSW5mby5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTVDQzdENDRDMTkxMDI0RTQwMDBCOEMxRiAvKiBMb29wSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb29wSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1Q0M3RDQ1MDE5MTAyNEU0MDAwQjhDMUYgLyogVmFsaWRhdGVPdXRw
dXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZhbGlkYXRlT3V0
cHV0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQzdENDUxMTkxMDI0RTQw
MDBCOEMxRiAvKiBWYWxpZGF0ZU91dHB1dHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVmFsaWRhdGVPdXRwdXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
QzdENDVBMTkxMDI2MjAwMDBCOEMxRiAvKiBhbmdsZXV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IGFuZ2xldXRpbHMuaDsgcGF0aCA9IHNyYy9jb21tb24vYW5nbGV1dGls
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODUxLDcgKzg2Myw2IEBACiAJCTVD
Q0Q4MTYzMURCRkU5OTkwMDYwNjZCOCAvKiBQYXRoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFBhdGguaDsgcGF0aCA9IHNyYy9saWJBTkdMRS9QYXRoLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDQ0Q4MTY0MURCRkU5OTkwMDYwNjZCOCAvKiBxdWVyeXV0aWxz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IHF1ZXJ5dXRpbHMuY3Bw
OyBwYXRoID0gc3JjL2xpYkFOR0xFL3F1ZXJ5dXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1Q0NEODE2NTFEQkZFOTk5MDA2MDY2QjggLyogcXVlcnl1dGlscy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBxdWVyeXV0aWxzLmg7IHBhdGggPSBzcmMvbGli
QU5HTEUvcXVlcnl1dGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1Q0NEODE2
NjFEQkZFOTk5MDA2MDY2QjggLyogc2lnbmFsX3V0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IHNpZ25hbF91dGlscy5jcHA7IHBhdGggPSBzcmMvbGliQU5HTEUv
c2lnbmFsX3V0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDgxNjcx
REJGRTk5OTAwNjA2NkI4IC8qIHNpZ25hbF91dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBzaWduYWxfdXRpbHMuaDsgcGF0aCA9IHNyYy9saWJBTkdMRS9zaWduYWxfdXRp
bHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDgxNjgxREJGRTk5OTAwNjA2
NkI4IC8qIFN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBT
dHJlYW0uY3BwOyBwYXRoID0gc3JjL2xpYkFOR0xFL1N0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDQ0Q4MTY5MURCRkU5OTkwMDYwNjZCOCAvKiBTdHJlYW0uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gU3RyZWFtLmg7IHBhdGggPSBzcmMvbGliQU5H
TEUvU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NjEsNyArODcyLDYg
QEAKIAkJNUNDRDgxNkQxREJGRTk5OTAwNjA2NkI4IC8qIFZlcnNpb24uaW5sICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgbmFtZSA9IFZlcnNpb24uaW5sOyBwYXRoID0gc3JjL2xpYkFOR0xFL1ZlcnNpb24uaW5s
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0NEODE2RTFEQkZFOTk5MDA2MDY2Qjgg
LyogVmVydGV4QXR0cmlidXRlLmlubCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBWZXJ0ZXhBdHRy
aWJ1dGUuaW5sOyBwYXRoID0gc3JjL2xpYkFOR0xFL1ZlcnRleEF0dHJpYnV0ZS5pbmw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQ0Q4MTZGMURCRkU5OTkwMDYwNjZCOCAvKiBXb3Jr
YXJvdW5kcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXb3JrYXJvdW5kcy5o
OyBwYXRoID0gc3JjL2xpYkFOR0xFL1dvcmthcm91bmRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTVDQ0Q4MTg2MURCRkVBMTAwMDYwNjZCOCAvKiBCaXRTZXRJdGVyYXRvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBCaXRTZXRJdGVyYXRvci5oOyBwYXRoID0g
c3JjL2NvbW1vbi9CaXRTZXRJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1Q0NEODE4NzFEQkZFQTEwMDA2MDY2QjggLyogQ29sb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQ29sb3IuaDsgcGF0aCA9IHNyYy9jb21tb24vQ29sb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDgxODgxREJGRUExMDAwNjA2NkI4IC8qIENvbG9y
LmlubCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBDb2xvci5pbmw7IHBhdGggPSBzcmMvY29tbW9u
L0NvbG9yLmlubDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNDRDgxODkxREJGRUEx
MDAwNjA2NkI4IC8qIEZsb2F0MTZUb0Zsb2F0MzIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gRmxvYXQxNlRvRmxvYXQzMi5jcHA7IHBhdGggPSBzcmMvY29tbW9uL0Zs
b2F0MTZUb0Zsb2F0MzIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQ0LDYg
Kzk1NCwxNyBAQAogCQkzMTAxMkQ5RjE4Qjk3QjlCMDAzOTA2MkYgLyogdHJhbnNsYXRvciAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMzFBMzMxQzkxRUE1
RUREQTAwRkQyMjAzIC8qIEZpbmRTeW1ib2xOb2RlLmNwcCAqLywKKwkJCQkzMUEzMzFDQTFFQTVF
RERBMDBGRDIyMDMgLyogRmluZFN5bWJvbE5vZGUuaCAqLywKKwkJCQkzMUEzMzFDQjFFQTVFRERB
MDBGRDIyMDMgLyogUHJ1bmVQdXJlTGl0ZXJhbFN0YXRlbWVudHMuY3BwICovLAorCQkJCTMxQTMz
MUNDMUVBNUVEREEwMEZEMjIwMyAvKiBQcnVuZVB1cmVMaXRlcmFsU3RhdGVtZW50cy5oICovLAor
CQkJCTMxQTMzMUNEMUVBNUVEREEwMEZEMjIwMyAvKiBSZW1vdmVJbnZhcmlhbnREZWNsYXJhdGlv
bi5jcHAgKi8sCisJCQkJMzFBMzMxQ0UxRUE1RUREQTAwRkQyMjAzIC8qIFJlbW92ZUludmFyaWFu
dERlY2xhcmF0aW9uLmggKi8sCisJCQkJMzFBMzMxQ0YxRUE1RUREQTAwRkQyMjAzIC8qIFJld3Jp
dGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5jcHAgKi8sCisJCQkJMzFBMzMxRDAxRUE1RUREQTAw
RkQyMjAzIC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5oICovLAorCQkJCTMxQTMz
MUQxMUVBNUVEREEwMEZEMjIwMyAvKiBTZXZlcml0eS5oICovLAorCQkJCTMxQTMzMUQyMUVBNUVE
REEwMEZEMjIwMyAvKiBWYWxpZGF0ZU11bHRpdmlld1dlYkdMLmNwcCAqLywKKwkJCQkzMUEzMzFE
MzFFQTVFRERBMDBGRDIyMDMgLyogVmFsaWRhdGVNdWx0aXZpZXdXZWJHTC5oICovLAogCQkJCTVD
Q0Q4MTkzMURCRkVBNUMwMDYwNjZCOCAvKiBBZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uLmNwcCAq
LywKIAkJCQk1Q0NEODE5NDFEQkZFQTVDMDA2MDY2QjggLyogQWRkQW5kVHJ1ZVRvTG9vcENvbmRp
dGlvbi5oICovLAogCQkJCTVDQ0Q4MTk1MURCRkVBNUMwMDYwNjZCOCAvKiBBZGREZWZhdWx0UmV0
dXJuU3RhdGVtZW50cy5jcHAgKi8sCkBAIC05OTAsOCArMTAxMSw2IEBACiAJCQkJNUMzMTVDRUQx
Q0M1QjZEQTAwNzc2Njk3IC8qIEV4dGVuc2lvbkdMU0wuaCAqLywKIAkJCQk1QzlGRkY0QzE5MTAy
QTAwMDAyNUI4RkEgLyogRmxhZ1N0ZDE0MFN0cnVjdHMuY3BwICovLAogCQkJCTVDOUZGRjREMTkx
MDJBMDAwMDI1QjhGQSAvKiBGbGFnU3RkMTQwU3RydWN0cy5oICovLAotCQkJCTMxMDEyREJBMThC
OTdCOUIwMDM5MDYyRiAvKiBGb3JMb29wVW5yb2xsLmNwcCAqLywKLQkJCQkzMTAxMkRCQjE4Qjk3
QjlCMDAzOTA2MkYgLyogRm9yTG9vcFVucm9sbC5oICovLAogCQkJCTMxMDEyREJEMThCOTdCOUIw
MDM5MDYyRiAvKiBnbHNsYW5nLmggKi8sCiAJCQkJMzEwMTJEQzAxOEI5N0I5QjAwMzkwNjJGIC8q
IGdsc2xhbmdfbGV4LmNwcCAqLywKIAkJCQkzMTAxMkRDMTE4Qjk3QjlCMDAzOTA2MkYgLyogZ2xz
bGFuZ190YWIuY3BwICovLApAQCAtMTAwNCw4ICsxMDIzLDYgQEAKIAkJCQkzMTAxMkRDODE4Qjk3
QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZURsbC5jcHAgKi8sCiAJCQkJMzEwMTJEQzkxOEI5N0I5
QjAwMzkwNjJGIC8qIEluaXRpYWxpemVEbGwuaCAqLywKIAkJCQkzMTAxMkRDQTE4Qjk3QjlCMDAz
OTA2MkYgLyogSW5pdGlhbGl6ZUdsb2JhbHMuaCAqLywKLQkJCQkzMTAxMkRDQjE4Qjk3QjlCMDAz
OTA2MkYgLyogSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAgKi8sCi0JCQkJMzEwMTJEQ0MxOEI5
N0I5QjAwMzkwNjJGIC8qIEluaXRpYWxpemVQYXJzZUNvbnRleHQuaCAqLywKIAkJCQkzMTAxMkRD
RDE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZVZhcmlhYmxlcy5jcHAgKi8sCiAJCQkJMzEw
MTJEQ0UxOEI5N0I5QjAwMzkwNjJGIC8qIEluaXRpYWxpemVWYXJpYWJsZXMuaCAqLywKIAkJCQkz
MTAxMkRDRjE4Qjk3QjlCMDAzOTA2MkYgLyogSW50ZXJtZWRpYXRlLmNwcCAqLywKQEAgLTEwMTcs
OSArMTAzNCw2IEBACiAJCQkJMzEwMTJERDExOEI5N0I5QjAwMzkwNjJGIC8qIGludGVybU91dC5j
cHAgKi8sCiAJCQkJMzEwMTJERDIxOEI5N0I5QjAwMzkwNjJGIC8qIEludGVybVRyYXZlcnNlLmNw
cCAqLywKIAkJCQk1QzFEQkMwQjFCMDQzNzVGMDAyMzU1NTIgLyogbGVuZ3RoX2xpbWl0cy5oICov
LAotCQkJCTVDQzdENDRCMTkxMDI0RTMwMDBCOEMxRiAvKiBMb29wSW5mby5jcHAgKi8sCi0JCQkJ
NUNDN0Q0NEMxOTEwMjRFNDAwMEI4QzFGIC8qIExvb3BJbmZvLmggKi8sCi0JCQkJMzEwMTJERDYx
OEI5N0I5QjAwMzkwNjJGIC8qIE1NYXAuaCAqLywKIAkJCQkzMTAxMkRENzE4Qjk3QjlCMDAzOTA2
MkYgLyogTm9kZVNlYXJjaC5oICovLAogCQkJCTVDMURCQzBDMUIwNDM3NUYwMDIzNTU1MiAvKiBP
cGVyYXRvci5jcHAgKi8sCiAJCQkJNUMxREJDMEQxQjA0Mzc1RjAwMjM1NTUyIC8qIE9wZXJhdG9y
LmggKi8sCkBAIC0xMTIxLDYgKzExMzUsMTQgQEAKIAkJCW5hbWUgPSBtaXNjOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJMzFBMzMxRTAxRUE1RUZBNTAwRkQyMjAzIC8qIHRy
YWNlX2V2ZW50ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQkzMUEzMzFFMTFFQTVFRkI4MDBGRDIyMDMgLyogdHJhY2VfZXZlbnQuaCAqLywKKwkJCSk7CisJ
CQluYW1lID0gdHJhY2VfZXZlbnQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owog
CQk1QzFCQUE5MzFERkI2MEUyMDAyOTA2QkIgLyogRUdMICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTEyMjUsNyArMTI0Nyw2IEBACiAJCQkJNUMxREJEQjgx
QjA0MzhEMjAwMjM1NTUyIC8qIFNhbXBsZXIuaCAqLywKIAkJCQk1QzFEQkRCOTFCMDQzOEQyMDAy
MzU1NTIgLyogU2hhZGVyLmNwcCAqLywKIAkJCQk1QzFEQkRCQTFCMDQzOEQyMDAyMzU1NTIgLyog
U2hhZGVyLmggKi8sCi0JCQkJNUNDRDgxNjYxREJGRTk5OTAwNjA2NkI4IC8qIHNpZ25hbF91dGls
cy5jcHAgKi8sCiAJCQkJNUNDRDgxNjcxREJGRTk5OTAwNjA2NkI4IC8qIHNpZ25hbF91dGlscy5o
ICovLAogCQkJCTVDMURCREJCMUIwNDM4RDMwMDIzNTU1MiAvKiBTdGF0ZS5jcHAgKi8sCiAJCQkJ
NUMxREJEQkMxQjA0MzhEMzAwMjM1NTUyIC8qIFN0YXRlLmggKi8sCkBAIC0xMzA4LDkgKzEzMjks
NyBAQAogCQkJCTVDQjMwNEIzMURFNDE2NDgwMEQyQzQwNSAvKiBFR0xJbXBsRmFjdG9yeS5oICov
LAogCQkJCTVDQjMwNEI0MURFNDE2NDgwMEQyQzQwNSAvKiBGZW5jZU5WSW1wbC5oICovLAogCQkJ
CTVDQjMwNEI1MURFNDE2NDgwMEQyQzQwNSAvKiBGZW5jZVN5bmNJbXBsLmggKi8sCi0JCQkJNUNC
MzA0QjgxREU0MTY0ODAwRDJDNDA1IC8qIEZvcm1hdC5jcHAgKi8sCiAJCQkJNUNCMzA0QjkxREU0
MTY0ODAwRDJDNDA1IC8qIEZvcm1hdC5oICovLAotCQkJCTVDQjMwNEI2MURFNDE2NDgwMEQyQzQw
NSAvKiBGb3JtYXRfYXV0b2dlbi5jcHAgKi8sCiAJCQkJNUNCMzA0QkExREU0MTY0ODAwRDJDNDA1
IC8qIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdEltcGwuaCAqLywKIAkJCQk1Q0IzMDRCQzFE
RTQxNjQ4MDBEMkM0MDUgLyogRnJhbWVidWZmZXJJbXBsLmggKi8sCiAJCQkJNUNCMzA0QkIxREU0
MTY0ODAwRDJDNDA1IC8qIEZyYW1lYnVmZmVySW1wbF9tb2NrLmggKi8sCkBAIC0xNDI2LDkgKzE0
NDUsMTIgQEAKIAkJNUNDN0Q0NTkxOTEwMjYwODAwMEI4QzFGIC8qIGNvbW1vbiAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMzFBMzMxQzMxRUE1RUQ1RjAw
RkQyMjAzIC8qIHN5c3RlbV91dGlsc19tYWMuY3BwICovLAorCQkJCTMxQTMzMUM0MUVBNUVENUYw
MEZEMjIwMyAvKiBzeXN0ZW1fdXRpbHMuaCAqLywKKwkJCQkzMUEzMzFDNTFFQTVFRDVGMDBGRDIy
MDMgLyogdmVjdG9yX3V0aWxzLmggKi8sCisJCQkJMzFBMzMxQzAxRUE1RUQyNTAwRkQyMjAzIC8q
IGJpdHNldF91dGlscy5oICovLAogCQkJCTVDMURCQkU3MUIwNDM2RUMwMDIzNTU1MiAvKiBhbmds
ZXV0aWxzLmNwcCAqLywKIAkJCQk1Q0M3RDQ1QTE5MTAyNjIwMDAwQjhDMUYgLyogYW5nbGV1dGls
cy5oICovLAotCQkJCTVDQ0Q4MTg2MURCRkVBMTAwMDYwNjZCOCAvKiBCaXRTZXRJdGVyYXRvci5o
ICovLAogCQkJCTVDQ0Q4MTg3MURCRkVBMTAwMDYwNjZCOCAvKiBDb2xvci5oICovLAogCQkJCTVD
Q0Q4MTg4MURCRkVBMTAwMDYwNjZCOCAvKiBDb2xvci5pbmwgKi8sCiAJCQkJNUNDN0Q0NUQxOTEw
MjYyMDAwMEI4QzFGIC8qIGRlYnVnLmNwcCAqLywKQEAgLTE0NjcsNiArMTQ4OSw3IEBACiAJCUEw
OEMzQ0Q4MTZENkNCMzUwMDNGMEI4MyAvKiB0aGlyZF9wYXJ0eSAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMzFBMzMxRTAxRUE1RUZBNTAwRkQyMjAzIC8q
IHRyYWNlX2V2ZW50ICovLAogCQkJCUEwOEMzQ0Q5MTZENkNCNDMwMDNGMEI4MyAvKiBjb21waWxl
ciAqLywKIAkJCSk7CiAJCQluYW1lID0gdGhpcmRfcGFydHk7CkBAIC0xNjAzLDggKzE2MjYsOCBA
QAogCQkJCTVDMURCQzIzMUIwNDM3NUYwMDIzNTU1MiAvKiBBU1RNZXRhZGF0YUhMU0wuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDMURCREQ2MUIwNDM4RDMwMDIzNTU1MiAvKiBBdHRyaWJ1dGVNYXAu
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTEyMThCOTdCOUIwMDM5MDYyRiAvKiBCYXNlVHlw
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTMzMUM3MUVBNUVENUYwMEZEMjIwMyAvKiBzeXN0
ZW1fdXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCREQ3MUIwNDM4RDMwMDIzNTU1MiAv
KiBCaW5hcnlTdHJlYW0uaCBpbiBIZWFkZXJzICovLAotCQkJCTVDQ0Q4MThEMURCRkVBMTAwMDYw
NjZCOCAvKiBCaXRTZXRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNCMzAxMTcxREUz
OUYxQTAwRDJDNDA1IC8qIEJsaXRHTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJDMjUxQjA0
Mzc1RjAwMjM1NTUyIC8qIGJsb2NrbGF5b3V0LmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkMy
NzFCMDQzNzVGMDAyMzU1NTIgLyogYmxvY2tsYXlvdXRITFNMLmggaW4gSGVhZGVycyAqLywKQEAg
LTE2NDksOCArMTY3MiwxMSBAQAogCQkJCTVDQjMwNEUzMURFNDE2NDgwMEQyQzQwNSAvKiBFR0xJ
bXBsRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxQkFBQUMxREZCNjEyNDAwMjkwNkJC
IC8qIGVnbHBsYXRmb3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0NEODFDNDFEQkZFQUQ5MDA2
MDY2QjggLyogRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQkzMUEzMzFFMjFFQTVFRkI4MDBGRDIyMDMgLyogdHJhY2VfZXZlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDMURCQzJFMUIwNDM3NUYwMDIzNTU1MiAvKiBFbXVsYXRlUHJlY2lzaW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0IzMDQ5ODFERTQxNTdCMDBEMkM0MDUgLyogZW50cnlfcG9pbnRz
X2VnbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzFBMzMxREUxRUE1RUREQTAwRkQyMjAzIC8qIFZh
bGlkYXRlTXVsdGl2aWV3V2ViR0wuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTMzMUQ1MUVBNUVE
REEwMEZEMjIwMyAvKiBGaW5kU3ltYm9sTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNCMzA0
OTYxREU0MTU3QjAwRDJDNDA1IC8qIGVudHJ5X3BvaW50c19lZ2xfZXh0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1Q0IzMDQ5QzFERTQxNTdCMDBEMkM0MDUgLyogZW50cnlfcG9pbnRzX2dsZXNfMl8w
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDQ5QTFERTQxNTdCMDBEMkM0MDUgLyogZW50cnlf
cG9pbnRzX2dsZXNfMl8wX2V4dC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNjcwLDcgKzE2OTYsNiBA
QAogCQkJCTVDQjMwMTI0MURFMzlGMUEwMEQyQzQwNSAvKiBGZW5jZVN5bmNHTC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNUNCMzA0RTUxREU0MTY0ODAwRDJDNDA1IC8qIEZlbmNlU3luY0ltcGwuaCBp
biBIZWFkZXJzICovLAogCQkJCTVDOUZGRjRGMTkxMDJBMDAwMDI1QjhGQSAvKiBGbGFnU3RkMTQw
U3RydWN0cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEwMTJFMkMxOEI5N0I5QjAwMzkwNjJGIC8q
IEZvckxvb3BVbnJvbGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMwNEU4MURFNDE2NDgwMEQy
QzQwNSAvKiBGb3JtYXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCREYyMUIwNDM4RDMwMDIz
NTU1MiAvKiBmb3JtYXR1dGlscy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNCMzAxMjYxREUzOUYx
QTAwRDJDNDA1IC8qIGZvcm1hdHV0aWxzZ2wuaCBpbiBIZWFkZXJzICovLApAQCAtMTcwNyw3ICsx
NzMyLDYgQEAKIAkJCQkzMTAxMkUzNzE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMzEwMTJFMzkxOEI5N0I5QjAwMzkwNjJGIC8qIEluaXRpYWxpemVE
bGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTNBMThCOTdCOUIwMDM5MDYyRiAvKiBJbml0
aWFsaXplR2xvYmFscy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMzEwMTJFM0MxOEI5N0I5QjAwMzkw
NjJGIC8qIEluaXRpYWxpemVQYXJzZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEy
RTNFMThCOTdCOUIwMDM5MDYyRiAvKiBJbml0aWFsaXplVmFyaWFibGVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMjY0RjhCNTE2OTc0REVEMDA2RkFBNUEgLyogSW5wdXQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDMURCQzJGMUIwNDM3NUYwMDIzNTU1MiAvKiBJbnRlcm1lZGlhdGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTcxNywxMyArMTc0MSwxMiBAQAogCQkJCTVDMURCQzMyMUIwNDM3NUYwMDIz
NTU1MiAvKiBsZW5ndGhfbGltaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhCNzE2OTc0
REVEMDA2RkFBNUEgLyogTGV4ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMwNEYwMURFNDE2
NDgwMEQyQzQwNSAvKiBsb2FkX2Z1bmN0aW9uc190YWJsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJ
NUNDN0Q0NTMxOTEwMjRFNDAwMEI4QzFGIC8qIExvb3BJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBMjY0RjhCOTE2OTc0REVEMDA2RkFBNUEgLyogTWFjcm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CUEyNjRGOEJCMTY5NzRERUQwMDZGQUE1QSAvKiBNYWNyb0V4cGFuZGVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1Q0M3RDQ3MzE5MTAyNjIxMDAwQjhDMUYgLyogbWF0aHV0aWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDQ0Q4MTkwMURCRkVBMTAwMDYwNjZCOCAvKiBtYXRyaXhfdXRpbHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDMURCQkYyMUIwNDM2RUMwMDIzNTU1MiAvKiBNZW1vcnlCdWZmZXIu
aCBpbiBIZWFkZXJzICovLAotCQkJCTMxMDEyRTQ2MThCOTdCOUIwMDM5MDYyRiAvKiBNTWFwLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkzMUEzMzFEQzFFQTVFRERBMDBGRDIyMDMgLyogU2V2ZXJpdHku
aCBpbiBIZWFkZXJzICovLAogCQkJCTMxMDEyRTQ3MThCOTdCOUIwMDM5MDYyRiAvKiBOb2RlU2Vh
cmNoLmggaW4gSGVhZGVycyAqLywKIAkJCQlBMjY0RjhCQzE2OTc0REVEMDA2RkFBNUEgLyogbnVt
ZXJpY19sZXguaCBpbiBIZWFkZXJzICovLAogCQkJCTVDMURCQzM0MUIwNDM3NUYwMDIzNTU1MiAv
KiBPcGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNzM1LDYgKzE3NTgsNyBAQAogCQkJCTMx
MDEyRTU1MThCOTdCOUIwMDM5MDYyRiAvKiBQYXJzZUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDQ0Q4MTdCMURCRkU5OTkwMDYwNjZCOCAvKiBQYXRoLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1Q0IzMDEyRTFERTM5RjFBMDBEMkM0MDUgLyogUGF0aEdMLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkzMUEzMzFEOTFFQTVFRERBMDBGRDIyMDMgLyogUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDQjMwNEYxMURFNDE2NDgwMEQyQzQwNSAvKiBQYXRoSW1w
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNCMzAxNTExREUzOUY0NzAwRDJDNDA1IC8qIFBidWZm
ZXJTdXJmYWNlQ0dMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzFEQkJGNTFCMDQzNkVDMDAyMzU1
NTIgLyogcGxhdGZvcm0uaCBpbiBIZWFkZXJzICovLApAQCAtMTc4NCw2ICsxODA4LDcgQEAKIAkJ
CQk1Q0IzMDEzQzFERTM5RjFBMDBEMkM0MDUgLyogU2hhZGVyR0wuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDQjMwNEZBMURFNDE2NDgwMEQyQzQwNSAvKiBTaGFkZXJJbXBsLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGQjM5RDc2RTEyMDExMEZDMDAwODhFNjkgLyogU2hhZGVyTGFuZy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMzFBMzMxREIxRUE1RUREQTAwRkQyMjAzIC8qIFJld3JpdGVVbmFyeU1pbnVz
T3BlcmF0b3JGbG9hdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJCRTYxQjA0MDc1QjAwMjM1
NTUyIC8qIFNoYWRlclZhcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQ0Q4MTdGMURCRkU5OTkw
MDYwNjZCOCAvKiBzaWduYWxfdXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQ0Q4MUJDMURC
RkVBNUMwMDYwNjZCOCAvKiBTaW1wbGlmeUxvb3BDb25kaXRpb25zLmggaW4gSGVhZGVycyAqLywK
QEAgLTE3OTEsNiArMTgxNiw3IEBACiAJCQkJNUNDRDgxQkUxREJGRUE1QzAwNjA2NkI4IC8qIFNw
bGl0U2VxdWVuY2VPcGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJGMkMxQjA0MzhE
MzAwMjM1NTUyIC8qIFN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDEzRTFERTM5RjFB
MDBEMkM0MDUgLyogU3RhdGVNYW5hZ2VyR0wuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTMzMUM4
MUVBNUVENUYwMEZEMjIwMyAvKiB2ZWN0b3JfdXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
Q0Q4MTgxMURCRkU5OTkwMDYwNjZCOCAvKiBTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
QjMwNEZCMURFNDE2NDgwMEQyQzQwNSAvKiBTdHJlYW1Qcm9kdWNlckltcGwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTVDQ0Q4MTkyMURCRkVBMTAwMDYwNjZCOCAvKiBzdHJpbmdfdXRpbHMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTgwMSwxMCArMTgyNywxMiBAQAogCQkJCTVDMURCRjMxMUIwNDM4RDMw
MDIzNTU1MiAvKiBUZXh0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDE0MjFERTM5RjFB
MDBEMkM0MDUgLyogVGV4dHVyZUdMLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDUwMDFERTQx
NjQ4MDBEMkM0MDUgLyogVGV4dHVyZUltcGwuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxQTMzMUMy
MUVBNUVEMjUwMEZEMjIwMyAvKiBiaXRzZXRfdXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVD
QjMwNEZFMURFNDE2NDgwMEQyQzQwNSAvKiBUZXh0dXJlSW1wbF9tb2NrLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1QzFEQkJGNzFCMDQzNkVDMDAyMzU1NTIgLyogdGxzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBMjY0RjhDMjE2OTc0REVEMDA2RkFBNUEgLyogVG9rZW4uaCBpbiBIZWFkZXJzICovLAog
CQkJCUEyNjRGOEM0MTY5NzRERUQwMDZGQUE1QSAvKiBUb2tlbml6ZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTMxQTMzMUQ3MUVBNUVEREEwMEZEMjIwMyAvKiBQcnVuZVB1cmVMaXRlcmFsU3RhdGVt
ZW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUMxREJGMzQxQjA0MzhEMzAwMjM1NTUyIC8qIFRy
YW5zZm9ybUZlZWRiYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0IzMDE0NDFERTM5RjFBMDBE
MkM0MDUgLyogVHJhbnNmb3JtRmVlZGJhY2tHTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNCMzA1
MDIxREU0MTY0ODAwRDJDNDA1IC8qIFRyYW5zZm9ybUZlZWRiYWNrSW1wbC5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xOTExLDYgKzE5MzksNyBAQAogCQkJCTVDMURCQzI0MUIwNDM3NUYwMDIzNTU1MiAv
KiBibG9ja2xheW91dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzFEQkMyNjFCMDQzNzVGMDAy
MzU1NTIgLyogYmxvY2tsYXlvdXRITFNMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQ0Q4MUFF
MURCRkVBNUMwMDYwNjZCOCAvKiBCcmVha1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMzMxRDYxRUE1RUREQTAwRkQyMjAzIC8qIFBydW5lUHVy
ZUxpdGVyYWxTdGF0ZW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCREQ4MUIwNDM4
RDMwMDIzNTU1MiAvKiBCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNCMzAxMTgxREUz
OUYxQTAwRDJDNDA1IC8qIEJ1ZmZlckdMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMDEyRTEz
MThCOTdCOUIwMDM5MDYyRiAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTE5NTQsMTQgKzE5ODMsMTIgQEAKIAkJCQk1Q0NEODFCMTFEQkZFQTVDMDA2MDY2
QjggLyogRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTcyMzA5QTU4MTgzQzI3RjMwMDM3MEI5MyAvKiBFeHByZXNzaW9uUGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTVDMzE1RDAyMUNDNUI2REEwMDc3NjY5NyAvKiBFeHRlbnNpb25HTFNMLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTMxQTMzMUREMUVBNUVEREEwMEZEMjIwMyAvKiBWYWxpZGF0
ZU11bHRpdmlld1dlYkdMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCREVFMUIwNDM4RDMw
MDIzNTU1MiAvKiBGZW5jZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0IzMDEyMTFERTM5RjFB
MDBEMkM0MDUgLyogRmVuY2VOVkdMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQjMwMTIzMURF
MzlGMUEwMEQyQzQwNSAvKiBGZW5jZVN5bmNHTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzlG
RkY0RTE5MTAyQTAwMDAyNUI4RkEgLyogRmxhZ1N0ZDE0MFN0cnVjdHMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUNDRDgxOEYxREJGRUExMDAwNjA2NkI4IC8qIEZsb2F0MTZUb0Zsb2F0MzIuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJMzEwMTJFMkIxOEI5N0I5QjAwMzkwNjJGIC8qIEZvckxvb3BV
bnJvbGwuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNUNCMzA0RTcxREU0MTY0ODAwRDJDNDA1IC8q
IEZvcm1hdC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQk1Q0IzMDRFNjFERTQxNjQ4MDBEMkM0MDUg
LyogRm9ybWF0X2F1dG9nZW4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNCMzA0QTgxREU0MTVG
QTAwRDJDNDA1IC8qIGZvcm1hdF9tYXBfYXV0b2dlbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
QzFEQkRGMTFCMDQzOEQzMDAyMzU1NTIgLyogZm9ybWF0dXRpbHMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNUNCMzAxMjUxREUzOUYxQTAwRDJDNDA1IC8qIGZvcm1hdHV0aWxzZ2wuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0xOTc2LDExICsyMDAzLDExIEBACiAJCQkJNUNDRDgxNzQxREJGRTk5OTAw
NjA2NkI4IC8qIEhhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVD
Q0Q4MTc2MURCRkU5OTkwMDYwNjZCOCAvKiBJbWFnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
QzFEQkRGQjFCMDQzOEQzMDAyMzU1NTIgLyogSW1hZ2VJbmRleC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkzMUEzMzFDNjFFQTVFRDVGMDBGRDIyMDMgLyogc3lzdGVtX3V0aWxzX21hYy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0NEODE3ODFEQkZFOTk5MDA2MDY2QjggLyogSW5kZXhSYW5nZUNh
Y2hlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMDEyRTM0MThCOTdCOUIwMDM5MDYyRiAvKiBJ
bmZvU2luay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkUzNjE4Qjk3QjlCMDAzOTA2MkYg
LyogSW5pdGlhbGl6ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMTAxMkUzODE4Qjk3QjlCMDAz
OTA2MkYgLyogSW5pdGlhbGl6ZURsbC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkzMTAxMkUzQjE4
Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkzMTAxMkUzRDE4Qjk3QjlCMDAzOTA2MkYgLyogSW5pdGlhbGl6ZVZhcmlhYmxlcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBMjY0RjhCNDE2OTc0REVEMDA2RkFBNUEgLyogSW5wdXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwMTJFM0YxOEI5N0I5QjAwMzkwNjJGIC8qIEludGVy
bWVkaWF0ZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE5OTEsOCArMjAxOCw4IEBACiAJCQkJQTI2
NEY4QjYxNjk3NERFRDAwNkZBQTVBIC8qIExleGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVD
QjVFMUE3MURGQjhBRjYwMEY5MEZDOSAvKiBsaWJFR0wuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NUNCMzA0RUYxREU0MTY0ODAwRDJDNDA1IC8qIGxvYWRfZnVuY3Rpb25zX3RhYmxlX2F1dG9nZW4u
Y3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNUNDN0Q0NTIxOTEwMjRFNDAwMEI4QzFGIC8qIExvb3BJ
bmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEyNjRGOEI4MTY5NzRERUQwMDZGQUE1QSAvKiBN
YWNyby5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMUEzMzFEQTFFQTVFRERBMDBGRDIyMDMgLyog
UmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckZsb2F0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEy
NjRGOEJBMTY5NzRERUQwMDZGQUE1QSAvKiBNYWNyb0V4cGFuZGVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTVDQzdENDcyMTkxMDI2MjEwMDBCOEMxRiAvKiBtYXRodXRpbC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1QzFEQkJGMTFCMDQzNkVDMDAyMzU1NTIgLyogTWVtb3J5QnVmZmVyLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMjAzOSw5ICsyMDY2LDEwIEBACiAJCQkJNUMzMTVEMEMxQ0M1QjZE
QTAwNzc2Njk3IC8qIFNlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJheXMuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUMxREJGMjkxQjA0MzhEMzAwMjM1NTUyIC8qIFNoYWRlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1Q0IzMDEzQjFERTM5RjFBMDBEMkM0MDUgLyogU2hhZGVyR0wuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMzFBMzMxRDgxRUE1RUREQTAwRkQyMjAzIC8qIFJlbW92ZUlu
dmFyaWFudERlY2xhcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxMDEyRTYyMThCOTdC
OUIwMDM5MDYyRiAvKiBTaGFkZXJMYW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDMURCQzQx
MUIwNDM3NUYwMDIzNTU1MiAvKiBTaGFkZXJWYXJzLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTVD
Q0Q4MTdFMURCRkU5OTkwMDYwNjZCOCAvKiBzaWduYWxfdXRpbHMuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMzFBMzMxRDQxRUE1RUREQTAwRkQyMjAzIC8qIEZpbmRTeW1ib2xOb2RlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTVDQ0Q4MUJCMURCRkVBNUMwMDYwNjZCOCAvKiBTaW1wbGlmeUxvb3BD
b25kaXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDQ0Q4MUJEMURCRkVBNUMwMDYwNjZC
OCAvKiBTcGxpdFNlcXVlbmNlT3BlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMxREJG
MkIxQjA0MzhEMzAwMjM1NTUyIC8qIFN0YXRlLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9DTWFrZUxpc3RzLnR4dAppbmRleCAwMTNhYTViNzQwNS4uN2RjOTk1MzUzMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NNYWtlTGlzdHMudHh0CkBAIC00Miw2ICs0Miw5IEBA
IHNldChBTkdMRV9TT1VSQ0VTCiAgICAgc3JjL2NvbW1vbi9tYXRodXRpbC5jcHAKICAgICBzcmMv
Y29tbW9uL01lbW9yeUJ1ZmZlci5jcHAKICAgICBzcmMvY29tbW9uL3N0cmluZ191dGlscy5jcHAK
KyAgICBzcmMvY29tbW9uL3N5c3RlbV91dGlsc19saW51eC5jcHAKKyAgICBzcmMvY29tbW9uL3N5
c3RlbV91dGlsc19tYWMuY3BwCisgICAgc3JjL2NvbW1vbi9zeXN0ZW1fdXRpbHNfd2luLmNwcAog
ICAgIHNyYy9jb21tb24vdGxzLmNwcAogICAgIHNyYy9jb21tb24vdXRpbGl0aWVzLmNwcAogICAg
IHNyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmNwcApAQCAtNzQsMzYg
Kzc3LDM4IEBAIHNldChBTkdMRV9TT1VSQ0VTCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
RW11bGF0ZVByZWNpc2lvbi5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FeHBhbmRJ
bnRlZ2VyUG93RXhwcmVzc2lvbnMuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRXh0
ZW5zaW9uR0xTTC5jcHAKKyAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9GaW5kU3ltYm9sTm9k
ZS5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9GbGFnU3RkMTQwU3RydWN0cy5jcHAK
LSAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Gb3JMb29wVW5yb2xsLmNwcAogICAgIHNyYy9j
b21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdfbGV4LmNwcAogICAgIHNyYy9jb21waWxlci90cmFu
c2xhdG9yL2dsc2xhbmdfdGFiLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0luZm9T
aW5rLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemUuY3BwCiAgICAg
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZURsbC5jcHAKLSAgICBzcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmNwcAogICAgIHNyYy9jb21waWxl
ci90cmFuc2xhdG9yL0luaXRpYWxpemVWYXJpYWJsZXMuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvSW50ZXJtZWRpYXRlLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL0lu
dGVybU5vZGUuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZVBhdHRl
cm5NYXRjaGVyLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL2ludGVybU91dC5jcHAK
ICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1UcmF2ZXJzZS5jcHAKLSAgICBzcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9Mb29wSW5mby5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9PcGVyYXRvci5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRFU1NM
LmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0wuY3BwCiAgICAgc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0R0xTTEJhc2UuY3BwCisgICAgc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvT3V0cHV0VnVsa2FuR0xTTC5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9QYXJzZUNvbnRleHQuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUG9vbEFs
bG9jLmNwcAogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1BydW5lRW1wdHlEZWNsYXJhdGlv
bnMuY3BwCisgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUHJ1bmVQdXJlTGl0ZXJhbFN0YXRl
bWVudHMuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUXVhbGlmaWVyVHlwZXMuY3Bw
CiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24uY3Bw
CiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVnZW5lcmF0ZVN0cnVjdE5hbWVzLmNwcAog
ICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1JlbW92ZUR5bmFtaWNJbmRleGluZy5jcHAKKyAg
ICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVJbnZhcmlhbnREZWNsYXJhdGlvbi5jcHAK
ICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVQb3cuY3BwCiAgICAgc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvUmVtb3ZlU3dpdGNoRmFsbFRocm91Z2guY3BwCiAgICAgc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvUmV3cml0ZURvV2hpbGUuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvUmV3cml0ZUVsc2VCbG9ja3MuY3BwCisgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
UmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckZsb2F0LmNwcAogICAgIHNyYy9jb21waWxlci90cmFu
c2xhdG9yL1Jld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmNwcAogICAgIHNyYy9jb21waWxlci90cmFu
c2xhdG9yL1Jld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQuY3BwCiAgICAgc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvU2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzLmNwcApAQCAtMTE5
LDYgKzEyNCw3IEBAIHNldChBTkdMRV9TT1VSQ0VTCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvU3ltYm9sVGFibGUuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRv
ckVTU0wuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckdMU0wuY3Bw
CisgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvclZ1bGthbi5jcHAKICAgICBz
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9UeXBlcy5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvVW5mb2xkU2hvcnRDaXJjdWl0VG9JZi5jcHAKQEAgLTEyNyw2ICsxMzMsNyBAQCBzZXQoQU5H
TEVfU09VUkNFUwogICAgIHNyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlR2xvYmFsSW5p
dGlhbGl6ZXIuY3BwCiAgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVMaW1pdGF0
aW9ucy5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU1heFBhcmFtZXRl
cnMuY3BwCisgICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVNdWx0aXZpZXdXZWJH
TC5jcHAKICAgICBzcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU91dHB1dHMuY3BwCiAg
ICAgc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVTd2l0Y2guY3BwCiAgICAgc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVJbmZvLmNwcApAQCAtMTY5LDggKzE3Niw2IEBAIHNl
dChBTkdMRV9TT1VSQ0VTCiAgICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0NvbnRleHRJbXBsLmNw
cAogICAgIHNyYy9saWJBTkdMRS9yZW5kZXJlci9EZXZpY2VJbXBsLmNwcAogICAgIHNyYy9saWJB
TkdMRS9yZW5kZXJlci9EaXNwbGF5SW1wbC5jcHAKLSAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIv
Rm9ybWF0X2F1dG9nZW4uY3BwCi0gICAgc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5jcHAK
ICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvbG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5j
cHAKICAgICBzcmMvbGliQU5HTEUvcmVuZGVyZXIvcmVuZGVyZXJfdXRpbHMuY3BwCiAgICAgc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL1N1cmZhY2VJbXBsLmNwcApAQCAtMTc4LDcgKzE4Myw2IEBAIHNl
dChBTkdMRV9TT1VSQ0VTCiAgICAgc3JjL2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5jcHAKICAg
ICBzcmMvbGliQU5HTEUvU2FtcGxlci5jcHAKICAgICBzcmMvbGliQU5HTEUvU2hhZGVyLmNwcAot
ICAgIHNyYy9saWJBTkdMRS9zaWduYWxfdXRpbHMuY3BwCiAgICAgc3JjL2xpYkFOR0xFL1N0YXRl
LmNwcAogICAgIHNyYy9saWJBTkdMRS9TdHJlYW0uY3BwCiAgICAgc3JjL2xpYkFOR0xFL1N1cmZh
Y2UuY3BwCkBAIC0xOTMsNyArMTk3LDYgQEAgc2V0KEFOR0xFX1NPVVJDRVMKICAgICBzcmMvbGli
QU5HTEUvVmVydGV4QXJyYXkuY3BwCiAgICAgc3JjL2xpYkFOR0xFL1ZlcnRleEF0dHJpYnV0ZS5j
cHAKICAgICBzcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmNwcAot
ICAgIHNyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gzLmNwcAogKQogCiBzZXQo
QU5HTEVfQ09NUElMRV9ERUZJTklUSU9OUwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQ2hhbmdlTG9nCmluZGV4
IGNhNDA1MzkwNzA2Li42MWFmMjc2ZTExNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDE3LTA0LTE4ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNv
bT4KKworICAgICAgICBVcGRhdGUgQU5HTEUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MDk0MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzE2MzM5
OTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSHVn
ZSBsaXN0IG9mIGNoYW5nZWQgZmlsZXMgb21pdHRlZC4KKwogMjAxNy0wNC0xMiAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIEZ1dHVyZS1wcm9vZiAueGNj
b25maWcgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NvbmZpZ3Vy
YXRpb25zL0Jhc2UueGNjb25maWcgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9Db25maWd1cmF0
aW9ucy9CYXNlLnhjY29uZmlnCmluZGV4IGFiOTNiZDg0Njc3Li40NTQ5NmZhMjkxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZp
ZworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29u
ZmlnCkBAIC00Miw3ICs0Miw3IEBAIEdDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUzsKIEdD
Q19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKIFBSRUJJTkRJTkcgPSBOTzsKIFNUUklQX0lO
U1RBTExFRF9QUk9EVUNUID0gTk87Ci1XQVJOSU5HX0NGTEFHUyA9IC1XZXhpdC10aW1lLWRlc3Ry
dWN0b3JzIC1XZ2xvYmFsLWNvbnN0cnVjdG9yczsKK1dBUk5JTkdfQ0ZMQUdTID0gLVdnbG9iYWwt
Y29uc3RydWN0b3JzIC1Xbm8tbmV3bGluZS1lb2YgLVduby1pbmNvbnNpc3RlbnQtbWlzc2luZy1v
dmVycmlkZTsKIAogU1VQUE9SVEVEX1BMQVRGT1JNUyA9IGlwaG9uZW9zIGlwaG9uZXNpbXVsYXRv
ciBtYWNvc3ggYXBwbGV0dm9zIGFwcGxldHZzaW11bGF0b3Igd2F0Y2hvcyB3YXRjaHNpbXVsYXRv
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWds
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2wuaAppbmRleCBiNzY0
MzcyY2Y0YS4uMjlmMzBkOTRkZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L2luY2x1ZGUvRUdML2VnbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUv
RUdML2VnbC5oCkBAIC02LDcgKzYsNyBAQCBleHRlcm4gIkMiIHsKICNlbmRpZgogCiAvKgotKiog
Q29weXJpZ2h0IChjKSAyMDEzLTIwMTUgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorKiogQ29weXJp
Z2h0IChjKSAyMDEzLTIwMTcgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgogKioKICoqIFBlcm1pc3Np
b24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFp
bmluZyBhCiAqKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kL29yIGFzc29jaWF0ZWQgZG9jdW1l
bnRhdGlvbiBmaWxlcyAodGhlCkBAIC0zMSwyMCArMzEsMTQgQEAgZXh0ZXJuICJDIiB7CiAqKiBU
aGlzIGhlYWRlciBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgS2hyb25vcyBPcGVuR0wgLyBPcGVuR0wg
RVMgWE1MCiAqKiBBUEkgUmVnaXN0cnkuIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIFJlZ2lz
dHJ5LCBnZW5lcmF0b3Igc2NyaXB0cwogKiogdXNlZCB0byBtYWtlIHRoZSBoZWFkZXIsIGFuZCB0
aGUgaGVhZGVyIGNhbiBiZSBmb3VuZCBhdAotKiogICBodHRwOi8vd3d3Lm9wZW5nbC5vcmcvcmVn
aXN0cnkvCisqKiAgIGh0dHA6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9lZ2wKICoqCi0qKiBL
aHJvbm9zICRSZXZpc2lvbjogMzE1NjYgJCBvbiAkRGF0ZTogMjAxNS0wNi0yMyAwODo0ODo0OCAt
MDcwMCAoVHVlLCAyMyBKdW4gMjAxNSkgJAorKiogS2hyb25vcyAkUmV2aXNpb24kIG9uICREYXRl
JAogKi8KIAogI2luY2x1ZGUgPEVHTC9lZ2xwbGF0Zm9ybS5oPgogCi0jaWYgZGVmaW5lZChfTVND
X1ZFUikgJiYgIWRlZmluZWQoQU5HTEVfV0VCS0lUX1dJTikKLSNkZWZpbmUgRUdMX1NPRlRfTElO
S0lORyAxCi0jZWxzZQotI2RlZmluZSBFR0xfU09GVF9MSU5LSU5HIDAKLSNlbmRpZgotCi0vKiBH
ZW5lcmF0ZWQgb24gZGF0ZSAyMDE1MDYyMyAqLworLyogR2VuZXJhdGVkIG9uIGRhdGUgMjAxNjEy
MzAgKi8KIAogLyogR2VuZXJhdGVkIEMgaGVhZGVyIGZvcjoKICAqIEFQSTogZWdsCkBAIC01OSw4
ICs1Myw4IEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBFR0xfVkVSU0lPTl8xXzAgMQogdHlwZWRl
ZiB1bnNpZ25lZCBpbnQgRUdMQm9vbGVhbjsKIHR5cGVkZWYgdm9pZCAqRUdMRGlzcGxheTsKLSNp
bmNsdWRlIDxBTkdMRS9raHJwbGF0Zm9ybS5oPgotI2luY2x1ZGUgPEFOR0xFL2VnbHBsYXRmb3Jt
Lmg+CisjaW5jbHVkZSA8S0hSL2tocnBsYXRmb3JtLmg+CisjaW5jbHVkZSA8RUdML2VnbHBsYXRm
b3JtLmg+CiB0eXBlZGVmIHZvaWQgKkVHTENvbmZpZzsKIHR5cGVkZWYgdm9pZCAqRUdMU3VyZmFj
ZTsKIHR5cGVkZWYgdm9pZCAqRUdMQ29udGV4dDsKQEAgLTg0LDcgKzc4LDcgQEAgdHlwZWRlZiB2
b2lkICgqX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSkodm9pZCk7CiAj
ZGVmaW5lIEVHTF9DT05GSUdfSUQgICAgICAgICAgICAgICAgICAgICAweDMwMjgKICNkZWZpbmUg
RUdMX0NPUkVfTkFUSVZFX0VOR0lORSAgICAgICAgICAgIDB4MzA1QgogI2RlZmluZSBFR0xfREVQ
VEhfU0laRSAgICAgICAgICAgICAgICAgICAgMHgzMDI1Ci0jZGVmaW5lIEVHTF9ET05UX0NBUkUg
ICAgICAgICAgICAgICAgICAgICAoKEVHTGludCktMSkKKyNkZWZpbmUgRUdMX0RPTlRfQ0FSRSAg
ICAgICAgICAgICAgICAgICAgIEVHTF9DQVNUKEVHTGludCwtMSkKICNkZWZpbmUgRUdMX0RSQVcg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzA1OQogI2RlZmluZSBFR0xfRVhURU5TSU9OUyAg
ICAgICAgICAgICAgICAgICAgMHgzMDU1CiAjZGVmaW5lIEVHTF9GQUxTRSAgICAgICAgICAgICAg
ICAgICAgICAgICAwCkBAIC0xMDEsOSArOTUsOSBAQCB0eXBlZGVmIHZvaWQgKCpfX2VnbE11c3RD
YXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKSh2b2lkKTsKICNkZWZpbmUgRUdMX05PTkUg
ICAgICAgICAgICAgICAgICAgICAgICAgIDB4MzAzOAogI2RlZmluZSBFR0xfTk9OX0NPTkZPUk1B
TlRfQ09ORklHICAgICAgICAgMHgzMDUxCiAjZGVmaW5lIEVHTF9OT1RfSU5JVElBTElaRUQgICAg
ICAgICAgICAgICAweDMwMDEKLSNkZWZpbmUgRUdMX05PX0NPTlRFWFQgICAgICAgICAgICAgICAg
ICAgICgoRUdMQ29udGV4dCkwKQotI2RlZmluZSBFR0xfTk9fRElTUExBWSAgICAgICAgICAgICAg
ICAgICAgKChFR0xEaXNwbGF5KTApCi0jZGVmaW5lIEVHTF9OT19TVVJGQUNFICAgICAgICAgICAg
ICAgICAgICAoKEVHTFN1cmZhY2UpMCkKKyNkZWZpbmUgRUdMX05PX0NPTlRFWFQgICAgICAgICAg
ICAgICAgICAgIEVHTF9DQVNUKEVHTENvbnRleHQsMCkKKyNkZWZpbmUgRUdMX05PX0RJU1BMQVkg
ICAgICAgICAgICAgICAgICAgIEVHTF9DQVNUKEVHTERpc3BsYXksMCkKKyNkZWZpbmUgRUdMX05P
X1NVUkZBQ0UgICAgICAgICAgICAgICAgICAgIEVHTF9DQVNUKEVHTFN1cmZhY2UsMCkKICNkZWZp
bmUgRUdMX1BCVUZGRVJfQklUICAgICAgICAgICAgICAgICAgIDB4MDAwMQogI2RlZmluZSBFR0xf
UElYTUFQX0JJVCAgICAgICAgICAgICAgICAgICAgMHgwMDAyCiAjZGVmaW5lIEVHTF9SRUFEICAg
ICAgICAgICAgICAgICAgICAgICAgICAweDMwNUEKQEAgLTEyNCw3ICsxMTgsNiBAQCB0eXBlZGVm
IHZvaWQgKCpfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKSh2b2lkKTsK
ICNkZWZpbmUgRUdMX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgICAgIDB4MzA1NAogI2RlZmlu
ZSBFR0xfV0lEVEggICAgICAgICAgICAgICAgICAgICAgICAgMHgzMDU3CiAjZGVmaW5lIEVHTF9X
SU5ET1dfQklUICAgICAgICAgICAgICAgICAgICAweDAwMDQKLSNpZiAhRUdMX1NPRlRfTElOS0lO
RwogRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsQ2hvb3NlQ29uZmlnIChFR0xEaXNw
bGF5IGRweSwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCwgRUdMQ29uZmlnICpjb25maWdzLCBF
R0xpbnQgY29uZmlnX3NpemUsIEVHTGludCAqbnVtX2NvbmZpZyk7CiBFR0xBUEkgRUdMQm9vbGVh
biBFR0xBUElFTlRSWSBlZ2xDb3B5QnVmZmVycyAoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ug
c3VyZmFjZSwgRUdMTmF0aXZlUGl4bWFwVHlwZSB0YXJnZXQpOwogRUdMQVBJIEVHTENvbnRleHQg
RUdMQVBJRU5UUlkgZWdsQ3JlYXRlQ29udGV4dCAoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBj
b25maWcsIEVHTENvbnRleHQgc2hhcmVfY29udGV4dCwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlz
dCk7CkBAIC0xNDksNyArMTQyLDYgQEAgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWds
U3dhcEJ1ZmZlcnMgKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UKIEVHTEFQSSBF
R0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFRlcm1pbmF0ZSAoRUdMRGlzcGxheSBkcHkpOwogRUdM
QVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsV2FpdEdMICh2b2lkKTsKIEVHTEFQSSBFR0xC
b29sZWFuIEVHTEFQSUVOVFJZIGVnbFdhaXROYXRpdmUgKEVHTGludCBlbmdpbmUpOwotI2VuZGlm
CiAjZW5kaWYgLyogRUdMX1ZFUlNJT05fMV8wICovCiAKICNpZm5kZWYgRUdMX1ZFUlNJT05fMV8x
CkBAIC0xNjgsMTIgKzE2MCwxMCBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xX
YWl0TmF0aXZlIChFR0xpbnQgZW5naW5lKTsKICNkZWZpbmUgRUdMX1RFWFRVUkVfUkdCICAgICAg
ICAgICAgICAgICAgIDB4MzA1RAogI2RlZmluZSBFR0xfVEVYVFVSRV9SR0JBICAgICAgICAgICAg
ICAgICAgMHgzMDVFCiAjZGVmaW5lIEVHTF9URVhUVVJFX1RBUkdFVCAgICAgICAgICAgICAgICAw
eDMwODEKLSNpZiAhRUdMX1NPRlRfTElOS0lORwogRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5U
UlkgZWdsQmluZFRleEltYWdlIChFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBF
R0xpbnQgYnVmZmVyKTsKIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFJlbGVhc2VU
ZXhJbWFnZSAoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1ZmZl
cik7CiBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTdXJmYWNlQXR0cmliIChFR0xE
aXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQg
dmFsdWUpOwogRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU3dhcEludGVydmFsIChF
R0xEaXNwbGF5IGRweSwgRUdMaW50IGludGVydmFsKTsKLSNlbmRpZgogI2VuZGlmIC8qIEVHTF9W
RVJTSU9OXzFfMSAqLwogCiAjaWZuZGVmIEVHTF9WRVJTSU9OXzFfMgpAQCAtMjA3LDE1ICsxOTcs
MTMgQEAgdHlwZWRlZiB2b2lkICpFR0xDbGllbnRCdWZmZXI7CiAjZGVmaW5lIEVHTF9SR0JfQlVG
RkVSICAgICAgICAgICAgICAgICAgICAweDMwOEUKICNkZWZpbmUgRUdMX1NJTkdMRV9CVUZGRVIg
ICAgICAgICAgICAgICAgIDB4MzA4NQogI2RlZmluZSBFR0xfU1dBUF9CRUhBVklPUiAgICAgICAg
ICAgICAgICAgMHgzMDkzCi0jZGVmaW5lIEVHTF9VTktOT1dOICAgICAgICAgICAgICAgICAgICAg
ICAoKEVHTGludCktMSkKKyNkZWZpbmUgRUdMX1VOS05PV04gICAgICAgICAgICAgICAgICAgICAg
IEVHTF9DQVNUKEVHTGludCwtMSkKICNkZWZpbmUgRUdMX1ZFUlRJQ0FMX1JFU09MVVRJT04gICAg
ICAgICAgIDB4MzA5MQotI2lmICFFR0xfU09GVF9MSU5LSU5HCiBFR0xBUEkgRUdMQm9vbGVhbiBF
R0xBUElFTlRSWSBlZ2xCaW5kQVBJIChFR0xlbnVtIGFwaSk7CiBFR0xBUEkgRUdMZW51bSBFR0xB
UElFTlRSWSBlZ2xRdWVyeUFQSSAodm9pZCk7CiBFR0xBUEkgRUdMU3VyZmFjZSBFR0xBUElFTlRS
WSBlZ2xDcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlciAoRUdMRGlzcGxheSBkcHksIEVHTGVu
dW0gYnVmdHlwZSwgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwgRUdMQ29uZmlnIGNvbmZpZywgY29u
c3QgRUdMaW50ICphdHRyaWJfbGlzdCk7CiBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBl
Z2xSZWxlYXNlVGhyZWFkICh2b2lkKTsKIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVn
bFdhaXRDbGllbnQgKHZvaWQpOwotI2VuZGlmCiAjZW5kaWYgLyogRUdMX1ZFUlNJT05fMV8yICov
CiAKICNpZm5kZWYgRUdMX1ZFUlNJT05fMV8zCkBAIC0yMzYsNyArMjI0LDcgQEAgRUdMQVBJIEVH
TEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsV2FpdENsaWVudCAodm9pZCk7CiAKICNpZm5kZWYgRUdM
X1ZFUlNJT05fMV80CiAjZGVmaW5lIEVHTF9WRVJTSU9OXzFfNCAxCi0jZGVmaW5lIEVHTF9ERUZB
VUxUX0RJU1BMQVkgICAgICAgICAgICAgICAoKEVHTE5hdGl2ZURpc3BsYXlUeXBlKTApCisjZGVm
aW5lIEVHTF9ERUZBVUxUX0RJU1BMQVkgICAgICAgICAgICAgICBFR0xfQ0FTVChFR0xOYXRpdmVE
aXNwbGF5VHlwZSwwKQogI2RlZmluZSBFR0xfTVVMVElTQU1QTEVfUkVTT0xWRV9CT1hfQklUICAg
MHgwMjAwCiAjZGVmaW5lIEVHTF9NVUxUSVNBTVBMRV9SRVNPTFZFICAgICAgICAgICAweDMwOTkK
ICNkZWZpbmUgRUdMX01VTFRJU0FNUExFX1JFU09MVkVfREVGQVVMVCAgIDB4MzA5QQpAQCAtMjQ0
LDkgKzIzMiw3IEBAIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFdhaXRDbGllbnQg
KHZvaWQpOwogI2RlZmluZSBFR0xfT1BFTkdMX0FQSSAgICAgICAgICAgICAgICAgICAgMHgzMEEy
CiAjZGVmaW5lIEVHTF9PUEVOR0xfQklUICAgICAgICAgICAgICAgICAgICAweDAwMDgKICNkZWZp
bmUgRUdMX1NXQVBfQkVIQVZJT1JfUFJFU0VSVkVEX0JJVCAgIDB4MDQwMAotI2lmICFFR0xfU09G
VF9MSU5LSU5HCiBFR0xBUEkgRUdMQ29udGV4dCBFR0xBUElFTlRSWSBlZ2xHZXRDdXJyZW50Q29u
dGV4dCAodm9pZCk7Ci0jZW5kaWYKICNlbmRpZiAvKiBFR0xfVkVSU0lPTl8xXzQgKi8KIAogI2lm
bmRlZiBFR0xfVkVSU0lPTl8xXzUKQEAgLTI4MCw3ICsyNjYsNyBAQCB0eXBlZGVmIHZvaWQgKkVH
TEltYWdlOwogI2RlZmluZSBFR0xfRk9SRVZFUiAgICAgICAgICAgICAgICAgICAgICAgMHhGRkZG
RkZGRkZGRkZGRkZGdWxsCiAjZGVmaW5lIEVHTF9USU1FT1VUX0VYUElSRUQgICAgICAgICAgICAg
ICAweDMwRjUKICNkZWZpbmUgRUdMX0NPTkRJVElPTl9TQVRJU0ZJRUQgICAgICAgICAgIDB4MzBG
NgotI2RlZmluZSBFR0xfTk9fU1lOQyAgICAgICAgICAgICAgICAgICAgICAgKChFR0xTeW5jKTAp
CisjZGVmaW5lIEVHTF9OT19TWU5DICAgICAgICAgICAgICAgICAgICAgICBFR0xfQ0FTVChFR0xT
eW5jLDApCiAjZGVmaW5lIEVHTF9TWU5DX0ZFTkNFICAgICAgICAgICAgICAgICAgICAweDMwRjkK
ICNkZWZpbmUgRUdMX0dMX0NPTE9SU1BBQ0UgICAgICAgICAgICAgICAgIDB4MzA5RAogI2RlZmlu
ZSBFR0xfR0xfQ09MT1JTUEFDRV9TUkdCICAgICAgICAgICAgMHgzMDg5CkBAIC0yOTcsOCArMjgz
LDcgQEAgdHlwZWRlZiB2b2lkICpFR0xJbWFnZTsKICNkZWZpbmUgRUdMX0dMX1RFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWiAweDMwQjcKICNkZWZpbmUgRUdMX0dMX1RFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWiAweDMwQjgKICNkZWZpbmUgRUdMX0lNQUdFX1BSRVNFUlZFRCAgICAgICAgICAg
ICAgIDB4MzBEMgotI2RlZmluZSBFR0xfTk9fSU1BR0UgICAgICAgICAgICAgICAgICAgICAgKChF
R0xJbWFnZSkwKQotI2lmICFFR0xfU09GVF9MSU5LSU5HCisjZGVmaW5lIEVHTF9OT19JTUFHRSAg
ICAgICAgICAgICAgICAgICAgICBFR0xfQ0FTVChFR0xJbWFnZSwwKQogRUdMQVBJIEVHTFN5bmMg
RUdMQVBJRU5UUlkgZWdsQ3JlYXRlU3luYyAoRUdMRGlzcGxheSBkcHksIEVHTGVudW0gdHlwZSwg
Y29uc3QgRUdMQXR0cmliICphdHRyaWJfbGlzdCk7CiBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElF
TlRSWSBlZ2xEZXN0cm95U3luYyAoRUdMRGlzcGxheSBkcHksIEVHTFN5bmMgc3luYyk7CiBFR0xB
UEkgRUdMaW50IEVHTEFQSUVOVFJZIGVnbENsaWVudFdhaXRTeW5jIChFR0xEaXNwbGF5IGRweSwg
RUdMU3luYyBzeW5jLCBFR0xpbnQgZmxhZ3MsIEVHTFRpbWUgdGltZW91dCk7CkBAIC0zMDksMTMg
KzI5NCw4IEBAIEVHTEFQSSBFR0xEaXNwbGF5IEVHTEFQSUVOVFJZIGVnbEdldFBsYXRmb3JtRGlz
cGxheSAoRUdMZW51bSBwbGF0Zm9ybSwgdm9pZCAqbmF0CiBFR0xBUEkgRUdMU3VyZmFjZSBFR0xB
UElFTlRSWSBlZ2xDcmVhdGVQbGF0Zm9ybVdpbmRvd1N1cmZhY2UgKEVHTERpc3BsYXkgZHB5LCBF
R0xDb25maWcgY29uZmlnLCB2b2lkICpuYXRpdmVfd2luZG93LCBjb25zdCBFR0xBdHRyaWIgKmF0
dHJpYl9saXN0KTsKIEVHTEFQSSBFR0xTdXJmYWNlIEVHTEFQSUVOVFJZIGVnbENyZWF0ZVBsYXRm
b3JtUGl4bWFwU3VyZmFjZSAoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIHZvaWQg
Km5hdGl2ZV9waXhtYXAsIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpOwogRUdMQVBJIEVH
TEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsV2FpdFN5bmMgKEVHTERpc3BsYXkgZHB5LCBFR0xTeW5j
IHN5bmMsIEVHTGludCBmbGFncyk7Ci0jZW5kaWYKICNlbmRpZiAvKiBFR0xfVkVSU0lPTl8xXzUg
Ki8KIAotI2lmIEVHTF9TT0ZUX0xJTktJTkcKLSNpbmNsdWRlIDxFR0wvZWdsc29mdGxpbmtpbmcu
aD4KLSNlbmRpZgotCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsZXh0LmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2xleHQuaAppbmRleCAwNjZiZjU4NzQxMi4uYmZk
NDIxMzczNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdM
L2VnbGV4dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbGV4
dC5oCkBAIC02LDcgKzYsNyBAQCBleHRlcm4gIkMiIHsKICNlbmRpZgogCiAvKgotKiogQ29weXJp
Z2h0IChjKSAyMDEzLTIwMTYgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgorKiogQ29weXJpZ2h0IChj
KSAyMDEzLTIwMTcgVGhlIEtocm9ub3MgR3JvdXAgSW5jLgogKioKICoqIFBlcm1pc3Npb24gaXMg
aGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBh
CiAqKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kL29yIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv
biBmaWxlcyAodGhlCkBAIC0zMSwxNCArMzEsMTQgQEAgZXh0ZXJuICJDIiB7CiAqKiBUaGlzIGhl
YWRlciBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgS2hyb25vcyBPcGVuR0wgLyBPcGVuR0wgRVMgWE1M
CiAqKiBBUEkgUmVnaXN0cnkuIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhlIFJlZ2lzdHJ5LCBn
ZW5lcmF0b3Igc2NyaXB0cwogKiogdXNlZCB0byBtYWtlIHRoZSBoZWFkZXIsIGFuZCB0aGUgaGVh
ZGVyIGNhbiBiZSBmb3VuZCBhdAotKiogICBodHRwOi8vd3d3Lm9wZW5nbC5vcmcvcmVnaXN0cnkv
CisqKiAgIGh0dHA6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9lZ2wKICoqCi0qKiBLaHJvbm9z
ICRSZXZpc2lvbjogMzI0MzIgJCBvbiAkRGF0ZTogMjAxNi0wMi0wOSAyMzowMTowNyAtMDgwMCAo
VHVlLCAwOSBGZWIgMjAxNikgJAorKiogS2hyb25vcyAkUmV2aXNpb24kIG9uICREYXRlJAogKi8K
IAogI2luY2x1ZGUgPEVHTC9lZ2xwbGF0Zm9ybS5oPgogCi0jZGVmaW5lIEVHTF9FR0xFWFRfVkVS
U0lPTiAyMDE2MDIwOQorI2RlZmluZSBFR0xfRUdMRVhUX1ZFUlNJT04gMjAxNjEyMzAKIAogLyog
R2VuZXJhdGVkIEMgaGVhZGVyIGZvcjoKICAqIEFQSTogZWdsCkBAIC03Nyw2ICs3NywxMyBAQCBF
R0xBUEkgRUdMU3luY0tIUiBFR0xBUElFTlRSWSBlZ2xDcmVhdGVTeW5jNjRLSFIgKEVHTERpc3Bs
YXkgZHB5LCBFR0xlbnVtIHR5cGUsCiAjZGVmaW5lIEVHTF9WR19BTFBIQV9GT1JNQVRfUFJFX0JJ
VF9LSFIgICAweDAwNDAKICNlbmRpZiAvKiBFR0xfS0hSX2NvbmZpZ19hdHRyaWJzICovCiAKKyNp
Zm5kZWYgRUdMX0tIUl9jb250ZXh0X2ZsdXNoX2NvbnRyb2wKKyNkZWZpbmUgRUdMX0tIUl9jb250
ZXh0X2ZsdXNoX2NvbnRyb2wgMQorI2RlZmluZSBFR0xfQ09OVEVYVF9SRUxFQVNFX0JFSEFWSU9S
X05PTkVfS0hSIDAKKyNkZWZpbmUgRUdMX0NPTlRFWFRfUkVMRUFTRV9CRUhBVklPUl9LSFIgIDB4
MjA5NworI2RlZmluZSBFR0xfQ09OVEVYVF9SRUxFQVNFX0JFSEFWSU9SX0ZMVVNIX0tIUiAweDIw
OTgKKyNlbmRpZiAvKiBFR0xfS0hSX2NvbnRleHRfZmx1c2hfY29udHJvbCAqLworCiAjaWZuZGVm
IEVHTF9LSFJfY3JlYXRlX2NvbnRleHQKICNkZWZpbmUgRUdMX0tIUl9jcmVhdGVfY29udGV4dCAx
CiAjZGVmaW5lIEVHTF9DT05URVhUX01BSk9SX1ZFUlNJT05fS0hSICAgICAweDMwOTgKQEAgLTE4
OCw3ICsxOTUsNyBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xHZXRTeW5jQXR0
cmliS0hSIChFR0xEaXNwbGF5IGRweSwgRUdMU3luY0tIUiBzeQogI2RlZmluZSBFR0xfS0hSX2lt
YWdlIDEKIHR5cGVkZWYgdm9pZCAqRUdMSW1hZ2VLSFI7CiAjZGVmaW5lIEVHTF9OQVRJVkVfUElY
TUFQX0tIUiAgICAgICAgICAgICAweDMwQjAKLSNkZWZpbmUgRUdMX05PX0lNQUdFX0tIUiAgICAg
ICAgICAgICAgICAgICgoRUdMSW1hZ2VLSFIpMCkKKyNkZWZpbmUgRUdMX05PX0lNQUdFX0tIUiAg
ICAgICAgICAgICAgICAgIEVHTF9DQVNUKEVHTEltYWdlS0hSLDApCiB0eXBlZGVmIEVHTEltYWdl
S0hSIChFR0xBUElFTlRSWVAgUEZORUdMQ1JFQVRFSU1BR0VLSFJQUk9DKSAoRUdMRGlzcGxheSBk
cHksIEVHTENvbnRleHQgY3R4LCBFR0xlbnVtIHRhcmdldCwgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZl
ciwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCk7CiB0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQ
SUVOVFJZUCBQRk5FR0xERVNUUk9ZSU1BR0VLSFJQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTElt
YWdlS0hSIGltYWdlKTsKICNpZmRlZiBFR0xfRUdMRVhUX1BST1RPVFlQRVMKQEAgLTI1MCw2ICsy
NTcsMTYgQEAgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsUXVlcnlTdXJmYWNlNjRL
SFIgKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHMKICNlbmRpZgogI2VuZGlmIC8qIEVHTF9L
SFJfbG9ja19zdXJmYWNlMyAqLwogCisjaWZuZGVmIEVHTF9LSFJfbXV0YWJsZV9yZW5kZXJfYnVm
ZmVyCisjZGVmaW5lIEVHTF9LSFJfbXV0YWJsZV9yZW5kZXJfYnVmZmVyIDEKKyNkZWZpbmUgRUdM
X01VVEFCTEVfUkVOREVSX0JVRkZFUl9CSVRfS0hSIDB4MTAwMAorI2VuZGlmIC8qIEVHTF9LSFJf
bXV0YWJsZV9yZW5kZXJfYnVmZmVyICovCisKKyNpZm5kZWYgRUdMX0tIUl9ub19jb25maWdfY29u
dGV4dAorI2RlZmluZSBFR0xfS0hSX25vX2NvbmZpZ19jb250ZXh0IDEKKyNkZWZpbmUgRUdMX05P
X0NPTkZJR19LSFIgICAgICAgICAgICAgICAgIEVHTF9DQVNUKEVHTENvbmZpZywwKQorI2VuZGlm
IC8qIEVHTF9LSFJfbm9fY29uZmlnX2NvbnRleHQgKi8KKwogI2lmbmRlZiBFR0xfS0hSX3BhcnRp
YWxfdXBkYXRlCiAjZGVmaW5lIEVHTF9LSFJfcGFydGlhbF91cGRhdGUgMQogI2RlZmluZSBFR0xf
QlVGRkVSX0FHRV9LSFIgICAgICAgICAgICAgICAgMHgzMTNECkBAIC0yOTIsNyArMzA5LDcgQEAg
RUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU2V0RGFtYWdlUmVnaW9uS0hSIChFR0xE
aXNwbGF5IGRweSwgRUdMU3VyZmFjZQogI2RlZmluZSBFR0xfU1lOQ19SRVVTQUJMRV9LSFIgICAg
ICAgICAgICAgMHgzMEZBCiAjZGVmaW5lIEVHTF9TWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVF9LSFIg
ICAweDAwMDEKICNkZWZpbmUgRUdMX0ZPUkVWRVJfS0hSICAgICAgICAgICAgICAgICAgIDB4RkZG
RkZGRkZGRkZGRkZGRnVsbAotI2RlZmluZSBFR0xfTk9fU1lOQ19LSFIgICAgICAgICAgICAgICAg
ICAgKChFR0xTeW5jS0hSKTApCisjZGVmaW5lIEVHTF9OT19TWU5DX0tIUiAgICAgICAgICAgICAg
ICAgICBFR0xfQ0FTVChFR0xTeW5jS0hSLDApCiB0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVO
VFJZUCBQRk5FR0xTSUdOQUxTWU5DS0hSUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0xTeW5jS0hS
IHN5bmMsIEVHTGVudW0gbW9kZSk7CiAjaWZkZWYgRUdMX0VHTEVYVF9QUk9UT1RZUEVTCiBFR0xB
UEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTaWduYWxTeW5jS0hSIChFR0xEaXNwbGF5IGRw
eSwgRUdMU3luY0tIUiBzeW5jLCBFR0xlbnVtIG1vZGUpOwpAQCAtMzA1LDcgKzMyMiw3IEBAIEVH
TEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFNpZ25hbFN5bmNLSFIgKEVHTERpc3BsYXkg
ZHB5LCBFR0xTeW5jS0hSIHN5bmMsCiB0eXBlZGVmIHZvaWQgKkVHTFN0cmVhbUtIUjsKIHR5cGVk
ZWYga2hyb25vc191aW50NjRfdCBFR0x1aW50NjRLSFI7CiAjaWZkZWYgS0hST05PU19TVVBQT1JU
X0lOVDY0Ci0jZGVmaW5lIEVHTF9OT19TVFJFQU1fS0hSICAgICAgICAgICAgICAgICAoKEVHTFN0
cmVhbUtIUikwKQorI2RlZmluZSBFR0xfTk9fU1RSRUFNX0tIUiAgICAgICAgICAgICAgICAgRUdM
X0NBU1QoRUdMU3RyZWFtS0hSLDApCiAjZGVmaW5lIEVHTF9DT05TVU1FUl9MQVRFTkNZX1VTRUNf
S0hSICAgICAweDMyMTAKICNkZWZpbmUgRUdMX1BST0RVQ0VSX0ZSQU1FX0tIUiAgICAgICAgICAg
IDB4MzIxMgogI2RlZmluZSBFR0xfQ09OU1VNRVJfRlJBTUVfS0hSICAgICAgICAgICAgMHgzMjEz
CkBAIC0zMzMsNiArMzUwLDI0IEBAIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFF1
ZXJ5U3RyZWFtdTY0S0hSIChFR0xEaXNwbGF5IGRweSwgRUdMU3RyZWFtS0hSCiAjZW5kaWYgLyog
S0hST05PU19TVVBQT1JUX0lOVDY0ICovCiAjZW5kaWYgLyogRUdMX0tIUl9zdHJlYW0gKi8KIAor
I2lmbmRlZiBFR0xfS0hSX3N0cmVhbV9hdHRyaWIKKyNkZWZpbmUgRUdMX0tIUl9zdHJlYW1fYXR0
cmliIDEKKyNpZmRlZiBLSFJPTk9TX1NVUFBPUlRfSU5UNjQKK3R5cGVkZWYgRUdMU3RyZWFtS0hS
IChFR0xBUElFTlRSWVAgUEZORUdMQ1JFQVRFU1RSRUFNQVRUUklCS0hSUFJPQykgKEVHTERpc3Bs
YXkgZHB5LCBjb25zdCBFR0xBdHRyaWIgKmF0dHJpYl9saXN0KTsKK3R5cGVkZWYgRUdMQm9vbGVh
biAoRUdMQVBJRU5UUllQIFBGTkVHTFNFVFNUUkVBTUFUVFJJQktIUlBST0MpIChFR0xEaXNwbGF5
IGRweSwgRUdMU3RyZWFtS0hSIHN0cmVhbSwgRUdMZW51bSBhdHRyaWJ1dGUsIEVHTEF0dHJpYiB2
YWx1ZSk7Cit0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xRVUVSWVNUUkVB
TUFUVFJJQktIUlBST0MpIChFR0xEaXNwbGF5IGRweSwgRUdMU3RyZWFtS0hSIHN0cmVhbSwgRUdM
ZW51bSBhdHRyaWJ1dGUsIEVHTEF0dHJpYiAqdmFsdWUpOwordHlwZWRlZiBFR0xCb29sZWFuIChF
R0xBUElFTlRSWVAgUEZORUdMU1RSRUFNQ09OU1VNRVJBQ1FVSVJFQVRUUklCS0hSUFJPQykgKEVH
TERpc3BsYXkgZHB5LCBFR0xTdHJlYW1LSFIgc3RyZWFtLCBjb25zdCBFR0xBdHRyaWIgKmF0dHJp
Yl9saXN0KTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTFNUUkVBTUNP
TlNVTUVSUkVMRUFTRUFUVFJJQktIUlBST0MpIChFR0xEaXNwbGF5IGRweSwgRUdMU3RyZWFtS0hS
IHN0cmVhbSwgY29uc3QgRUdMQXR0cmliICphdHRyaWJfbGlzdCk7CisjaWZkZWYgRUdMX0VHTEVY
VF9QUk9UT1RZUEVTCitFR0xBUEkgRUdMU3RyZWFtS0hSIEVHTEFQSUVOVFJZIGVnbENyZWF0ZVN0
cmVhbUF0dHJpYktIUiAoRUdMRGlzcGxheSBkcHksIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xp
c3QpOworRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU2V0U3RyZWFtQXR0cmliS0hS
IChFR0xEaXNwbGF5IGRweSwgRUdMU3RyZWFtS0hSIHN0cmVhbSwgRUdMZW51bSBhdHRyaWJ1dGUs
IEVHTEF0dHJpYiB2YWx1ZSk7CitFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xRdWVy
eVN0cmVhbUF0dHJpYktIUiAoRUdMRGlzcGxheSBkcHksIEVHTFN0cmVhbUtIUiBzdHJlYW0sIEVH
TGVudW0gYXR0cmlidXRlLCBFR0xBdHRyaWIgKnZhbHVlKTsKK0VHTEFQSSBFR0xCb29sZWFuIEVH
TEFQSUVOVFJZIGVnbFN0cmVhbUNvbnN1bWVyQWNxdWlyZUF0dHJpYktIUiAoRUdMRGlzcGxheSBk
cHksIEVHTFN0cmVhbUtIUiBzdHJlYW0sIGNvbnN0IEVHTEF0dHJpYiAqYXR0cmliX2xpc3QpOwor
RUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsU3RyZWFtQ29uc3VtZXJSZWxlYXNlQXR0
cmliS0hSIChFR0xEaXNwbGF5IGRweSwgRUdMU3RyZWFtS0hSIHN0cmVhbSwgY29uc3QgRUdMQXR0
cmliICphdHRyaWJfbGlzdCk7CisjZW5kaWYKKyNlbmRpZiAvKiBLSFJPTk9TX1NVUFBPUlRfSU5U
NjQgKi8KKyNlbmRpZiAvKiBFR0xfS0hSX3N0cmVhbV9hdHRyaWIgKi8KKwogI2lmbmRlZiBFR0xf
S0hSX3N0cmVhbV9jb25zdW1lcl9nbHRleHR1cmUKICNkZWZpbmUgRUdMX0tIUl9zdHJlYW1fY29u
c3VtZXJfZ2x0ZXh0dXJlIDEKICNpZmRlZiBFR0xfS0hSX3N0cmVhbQpAQCAtMzUyLDcgKzM4Nyw3
IEBAIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFN0cmVhbUNvbnN1bWVyUmVsZWFz
ZUtIUiAoRUdMRGlzcGxheSBkcHksIEVHTFN0CiAjZGVmaW5lIEVHTF9LSFJfc3RyZWFtX2Nyb3Nz
X3Byb2Nlc3NfZmQgMQogdHlwZWRlZiBpbnQgRUdMTmF0aXZlRmlsZURlc2NyaXB0b3JLSFI7CiAj
aWZkZWYgRUdMX0tIUl9zdHJlYW0KLSNkZWZpbmUgRUdMX05PX0ZJTEVfREVTQ1JJUFRPUl9LSFIg
ICAgICAgICgoRUdMTmF0aXZlRmlsZURlc2NyaXB0b3JLSFIpKC0xKSkKKyNkZWZpbmUgRUdMX05P
X0ZJTEVfREVTQ1JJUFRPUl9LSFIgICAgICAgIEVHTF9DQVNUKEVHTE5hdGl2ZUZpbGVEZXNjcmlw
dG9yS0hSLC0xKQogdHlwZWRlZiBFR0xOYXRpdmVGaWxlRGVzY3JpcHRvcktIUiAoRUdMQVBJRU5U
UllQIFBGTkVHTEdFVFNUUkVBTUZJTEVERVNDUklQVE9SS0hSUFJPQykgKEVHTERpc3BsYXkgZHB5
LCBFR0xTdHJlYW1LSFIgc3RyZWFtKTsKIHR5cGVkZWYgRUdMU3RyZWFtS0hSIChFR0xBUElFTlRS
WVAgUEZORUdMQ1JFQVRFU1RSRUFNRlJPTUZJTEVERVNDUklQVE9SS0hSUFJPQykgKEVHTERpc3Bs
YXkgZHB5LCBFR0xOYXRpdmVGaWxlRGVzY3JpcHRvcktIUiBmaWxlX2Rlc2NyaXB0b3IpOwogI2lm
ZGVmIEVHTF9FR0xFWFRfUFJPVE9UWVBFUwpAQCAtNDI5LDExICs0NjQsMjggQEAgRUdMQVBJIHZv
aWQgRUdMQVBJRU5UUlkgZWdsU2V0QmxvYkNhY2hlRnVuY3NBTkRST0lEIChFR0xEaXNwbGF5IGRw
eSwgRUdMU2V0QmxvYkYKICNlbmRpZgogI2VuZGlmIC8qIEVHTF9BTkRST0lEX2Jsb2JfY2FjaGUg
Ki8KIAorI2lmbmRlZiBFR0xfQU5EUk9JRF9jcmVhdGVfbmF0aXZlX2NsaWVudF9idWZmZXIKKyNk
ZWZpbmUgRUdMX0FORFJPSURfY3JlYXRlX25hdGl2ZV9jbGllbnRfYnVmZmVyIDEKKyNkZWZpbmUg
RUdMX05BVElWRV9CVUZGRVJfVVNBR0VfQU5EUk9JRCAgIDB4MzE0MworI2RlZmluZSBFR0xfTkFU
SVZFX0JVRkZFUl9VU0FHRV9QUk9URUNURURfQklUX0FORFJPSUQgMHgwMDAwMDAwMQorI2RlZmlu
ZSBFR0xfTkFUSVZFX0JVRkZFUl9VU0FHRV9SRU5ERVJCVUZGRVJfQklUX0FORFJPSUQgMHgwMDAw
MDAwMgorI2RlZmluZSBFR0xfTkFUSVZFX0JVRkZFUl9VU0FHRV9URVhUVVJFX0JJVF9BTkRST0lE
IDB4MDAwMDAwMDQKK3R5cGVkZWYgRUdMQ2xpZW50QnVmZmVyIChFR0xBUElFTlRSWVAgUEZORUdM
Q1JFQVRFTkFUSVZFQ0xJRU5UQlVGRkVSQU5EUk9JRFBST0MpIChjb25zdCBFR0xpbnQgKmF0dHJp
Yl9saXN0KTsKKyNpZmRlZiBFR0xfRUdMRVhUX1BST1RPVFlQRVMKK0VHTEFQSSBFR0xDbGllbnRC
dWZmZXIgRUdMQVBJRU5UUlkgZWdsQ3JlYXRlTmF0aXZlQ2xpZW50QnVmZmVyQU5EUk9JRCAoY29u
c3QgRUdMaW50ICphdHRyaWJfbGlzdCk7CisjZW5kaWYKKyNlbmRpZiAvKiBFR0xfQU5EUk9JRF9j
cmVhdGVfbmF0aXZlX2NsaWVudF9idWZmZXIgKi8KKwogI2lmbmRlZiBFR0xfQU5EUk9JRF9mcmFt
ZWJ1ZmZlcl90YXJnZXQKICNkZWZpbmUgRUdMX0FORFJPSURfZnJhbWVidWZmZXJfdGFyZ2V0IDEK
ICNkZWZpbmUgRUdMX0ZSQU1FQlVGRkVSX1RBUkdFVF9BTkRST0lEICAgIDB4MzE0NwogI2VuZGlm
IC8qIEVHTF9BTkRST0lEX2ZyYW1lYnVmZmVyX3RhcmdldCAqLwogCisjaWZuZGVmIEVHTF9BTkRS
T0lEX2Zyb250X2J1ZmZlcl9hdXRvX3JlZnJlc2gKKyNkZWZpbmUgRUdMX0FORFJPSURfZnJvbnRf
YnVmZmVyX2F1dG9fcmVmcmVzaCAxCisjZGVmaW5lIEVHTF9GUk9OVF9CVUZGRVJfQVVUT19SRUZS
RVNIX0FORFJPSUQgMHgzMTRDCisjZW5kaWYgLyogRUdMX0FORFJPSURfZnJvbnRfYnVmZmVyX2F1
dG9fcmVmcmVzaCAqLworCiAjaWZuZGVmIEVHTF9BTkRST0lEX2ltYWdlX25hdGl2ZV9idWZmZXIK
ICNkZWZpbmUgRUdMX0FORFJPSURfaW1hZ2VfbmF0aXZlX2J1ZmZlciAxCiAjZGVmaW5lIEVHTF9O
QVRJVkVfQlVGRkVSX0FORFJPSUQgICAgICAgICAweDMxNDAKQEAgLTQ1MSwxMSArNTAzLDI1IEBA
IEVHTEFQSSBFR0xpbnQgRUdMQVBJRU5UUlkgZWdsRHVwTmF0aXZlRmVuY2VGREFORFJPSUQgKEVH
TERpc3BsYXkgZHB5LCBFR0xTeW5jS0hSCiAjZW5kaWYKICNlbmRpZiAvKiBFR0xfQU5EUk9JRF9u
YXRpdmVfZmVuY2Vfc3luYyAqLwogCisjaWZuZGVmIEVHTF9BTkRST0lEX3ByZXNlbnRhdGlvbl90
aW1lCisjZGVmaW5lIEVHTF9BTkRST0lEX3ByZXNlbnRhdGlvbl90aW1lIDEKK3R5cGVkZWYga2hy
b25vc19zdGltZV9uYW5vc2Vjb25kc190IEVHTG5zZWNzQU5EUk9JRDsKK3R5cGVkZWYgRUdMQm9v
bGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTFBSRVNFTlRBVElPTlRJTUVBTkRST0lEUFJPQykgKEVH
TERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTG5zZWNzQU5EUk9JRCB0aW1lKTsK
KyNpZmRlZiBFR0xfRUdMRVhUX1BST1RPVFlQRVMKK0VHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVO
VFJZIGVnbFByZXNlbnRhdGlvblRpbWVBTkRST0lEIChFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFj
ZSBzdXJmYWNlLCBFR0xuc2Vjc0FORFJPSUQgdGltZSk7CisjZW5kaWYKKyNlbmRpZiAvKiBFR0xf
QU5EUk9JRF9wcmVzZW50YXRpb25fdGltZSAqLworCiAjaWZuZGVmIEVHTF9BTkRST0lEX3JlY29y
ZGFibGUKICNkZWZpbmUgRUdMX0FORFJPSURfcmVjb3JkYWJsZSAxCiAjZGVmaW5lIEVHTF9SRUNP
UkRBQkxFX0FORFJPSUQgICAgICAgICAgICAweDMxNDIKICNlbmRpZiAvKiBFR0xfQU5EUk9JRF9y
ZWNvcmRhYmxlICovCiAKKyNpZm5kZWYgRUdMX0FOR0xFX2NyZWF0ZV9jb250ZXh0X3JvYnVzdF9y
ZXNvdXJjZV9pbml0aWFsaXphdGlvbgorI2RlZmluZSBFR0xfQU5HTEVfY3JlYXRlX2NvbnRleHRf
cm9idXN0X3Jlc291cmNlX2luaXRpYWxpemF0aW9uIDEKKyNkZWZpbmUgRUdMX0NPTlRFWFRfUk9C
VVNUX1JFU09VUkNFX0lOSVRJQUxJWkFUSU9OX0FOR0xFIDB4MzIwRgorI2VuZGlmIC8qIEVHTF9B
TkdMRV9jcmVhdGVfY29udGV4dF9yb2J1c3RfcmVzb3VyY2VfaW5pdGlhbGl6YXRpb24gKi8KKwog
I2lmbmRlZiBFR0xfQU5HTEVfZDNkX3NoYXJlX2hhbmRsZV9jbGllbnRfYnVmZmVyCiAjZGVmaW5l
IEVHTF9BTkdMRV9kM2Rfc2hhcmVfaGFuZGxlX2NsaWVudF9idWZmZXIgMQogI2RlZmluZSBFR0xf
RDNEX1RFWFRVUkVfMkRfU0hBUkVfSEFORExFX0FOR0xFIDB4MzIwMApAQCAtNDcyLDYgKzUzOCwx
MSBAQCBFR0xBUEkgRUdMaW50IEVHTEFQSUVOVFJZIGVnbER1cE5hdGl2ZUZlbmNlRkRBTkRST0lE
IChFR0xEaXNwbGF5IGRweSwgRUdMU3luY0tIUgogI2RlZmluZSBFR0xfRFhHSV9LRVlFRF9NVVRF
WF9BTkdMRSAgICAgICAgMHgzM0EyCiAjZW5kaWYgLyogRUdMX0FOR0xFX2tleWVkX211dGV4ICov
CiAKKyNpZm5kZWYgRUdMX0FOR0xFX2QzZF90ZXh0dXJlX2NsaWVudF9idWZmZXIKKyNkZWZpbmUg
RUdMX0FOR0xFX2QzZF90ZXh0dXJlX2NsaWVudF9idWZmZXIgMQorI2RlZmluZSBFR0xfRDNEX1RF
WFRVUkVfQU5HTEUgICAgICAgICAgICAgMHgzM0EzCisjZW5kaWYgLyogRUdMX0FOR0xFX2QzZF90
ZXh0dXJlX2NsaWVudF9idWZmZXIgKi8KKwogI2lmbmRlZiBFR0xfQU5HTEVfcXVlcnlfc3VyZmFj
ZV9wb2ludGVyCiAjZGVmaW5lIEVHTF9BTkdMRV9xdWVyeV9zdXJmYWNlX3BvaW50ZXIgMQogdHlw
ZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMUVVFUllTVVJGQUNFUE9JTlRFUkFO
R0xFUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBhdHRy
aWJ1dGUsIHZvaWQgKip2YWx1ZSk7CkBAIC01MzEsNiArNjAyLDEyIEBAIEVHTEFQSSBFR0xCb29s
ZWFuIEVHTEFQSUVOVFJZIGVnbFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRSAoRUdMRGlzcGxheSBk
cHksIEVHTFN1CiAjZGVmaW5lIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX05VTExfQU5HTEUgMHgz
M0FFCiAjZW5kaWYgLyogRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX251bGwgKi8KIAorI2lmbmRl
ZiBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfdnVsa2FuCisjZGVmaW5lIEVHTF9BTkdMRV9wbGF0
Zm9ybV9hbmdsZV92dWxrYW4gMQorI2RlZmluZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9WVUxL
QU5fQU5HTEUgMHgzNDUwCisjZGVmaW5lIEVHTF9QTEFURk9STV9BTkdMRV9FTkFCTEVfVkFMSURB
VElPTl9MQVlFUl9BTkdMRSAweDM0NTEKKyNlbmRpZiAvKiBFR0xfQU5HTEVfcGxhdGZvcm1fYW5n
bGVfdnVsa2FuICovCisKICNpZm5kZWYgRUdMX0FOR0xFX3dpbmRvd19maXhlZF9zaXplCiAjZGVm
aW5lIEVHTF9BTkdMRV93aW5kb3dfZml4ZWRfc2l6ZSAxCiAjZGVmaW5lIEVHTF9GSVhFRF9TSVpF
X0FOR0xFICAgICAgICAgICAgICAweDMyMDEKQEAgLTU2Myw3ICs2NDAsNyBAQCBFR0xBUEkgRUdM
Qm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xRdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUgKEVHTERpc3Bs
YXkgZHB5LCBFR0xTdQogCiAjaWZuZGVmIEVHTF9BTkdMRV9zdHJlYW1fcHJvZHVjZXJfZDNkX3Rl
eHR1cmVfbnYxMgogI2RlZmluZSBFR0xfQU5HTEVfc3RyZWFtX3Byb2R1Y2VyX2QzZF90ZXh0dXJl
X252MTIKLSNkZWZpbmUgRUdMX0QzRF9URVhUVVJFX1NVQlJFU09VUkNFX0lEX0FOR0xFIDB4M0FB
QgorI2RlZmluZSBFR0xfRDNEX1RFWFRVUkVfU1VCUkVTT1VSQ0VfSURfQU5HTEUgMHgzM0FCCiB0
eXBlZGVmIEVHTEJvb2xlYW4oRUdMQVBJRU5UUllQIFBGTkVHTENSRUFURVNUUkVBTVBST0RVQ0VS
RDNEVEVYVFVSRU5WMTJBTkdMRVBST0MpKEVHTERpc3BsYXkgZHB5LCBFR0xTdHJlYW1LSFIgc3Ry
ZWFtLCBjb25zdCBFR0xBdHRyaWIgKmF0dHJpYl9saXN0KTsKIHR5cGVkZWYgRUdMQm9vbGVhbihF
R0xBUElFTlRSWVAgUEZORUdMU1RSRUFNUE9TVEQzRFRFWFRVUkVOVjEyQU5HTEVQUk9DKShFR0xE
aXNwbGF5IGRweSwgRUdMU3RyZWFtS0hSIHN0cmVhbSwgdm9pZCAqdGV4dHVyZSwgY29uc3QgRUdM
QXR0cmliICphdHRyaWJfbGlzdCk7CiAjaWZkZWYgRUdMX0VHTEVYVF9QUk9UT1RZUEVTCkBAIC01
NzcsMTEgKzY1NCwyNiBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xTdHJlYW1Q
b3N0RDNEVGV4dHVyZU5WMTJBTkdMRShFR0xEaXNwbGF5IGRweSwgRQogI2RlZmluZSBFR0xfQ09O
VEVYVF9XRUJHTF9DT01QQVRJQklMSVRZX0FOR0xFIDB4M0FBQwogI2VuZGlmIC8qIEVHTF9BTkdM
RV9jcmVhdGVfY29udGV4dF93ZWJnbF9jb21wYXRpYmlsaXR5ICovCiAKKyNpZm5kZWYgRUdMX0FO
R0xFX2Rpc3BsYXlfdGV4dHVyZV9zaGFyZV9ncm91cAorI2RlZmluZSBFR0xfQU5HTEVfZGlzcGxh
eV90ZXh0dXJlX3NoYXJlX2dyb3VwIDEKKyNkZWZpbmUgRUdMX0RJU1BMQVlfVEVYVFVSRV9TSEFS
RV9HUk9VUF9BTkdMRSAweDNBQUYKKyNlbmRpZiAvKiBFR0xfQU5HTEVfZGlzcGxheV90ZXh0dXJl
X3NoYXJlX2dyb3VwICovCisKICNpZm5kZWYgRUdMX0NIUk9NSVVNX2NyZWF0ZV9jb250ZXh0X2Jp
bmRfZ2VuZXJhdGVzX3Jlc291cmNlCiAjZGVmaW5lIEVHTF9DSFJPTUlVTV9jcmVhdGVfY29udGV4
dF9iaW5kX2dlbmVyYXRlc19yZXNvdXJjZSAxCiAjZGVmaW5lIEVHTF9DT05URVhUX0JJTkRfR0VO
RVJBVEVTX1JFU09VUkNFX0NIUk9NSVVNIDB4M0FBRAogI2VuZGlmIC8qIEVHTF9DSFJPTUlVTV9j
cmVhdGVfY29udGV4dF9iaW5kX2dlbmVyYXRlc19yZXNvdXJjZSAqLwogCisjaWZuZGVmIEVHTF9B
TkdMRV9jcmVhdGVfY29udGV4dF9jbGllbnRfYXJyYXlzCisjZGVmaW5lIEVHTF9BTkdMRV9jcmVh
dGVfY29udGV4dF9jbGllbnRfYXJyYXlzIDEKKyNkZWZpbmUgRUdMX0NPTlRFWFRfQ0xJRU5UX0FS
UkFZU19FTkFCTEVEX0FOR0xFIDB4MzQ1MgorI2VuZGlmIC8qIEVHTF9BTkdMRV9jcmVhdGVfY29u
dGV4dF9jbGllbnRfYXJyYXlzICovCisKKyNpZm5kZWYgRUdMX0FSTV9pbXBsaWNpdF9leHRlcm5h
bF9zeW5jCisjZGVmaW5lIEVHTF9BUk1faW1wbGljaXRfZXh0ZXJuYWxfc3luYyAxCisjZGVmaW5l
IEVHTF9TWU5DX1BSSU9SX0NPTU1BTkRTX0lNUExJQ0lUX0VYVEVSTkFMX0FSTSAweDMyOEEKKyNl
bmRpZiAvKiBFR0xfQVJNX2ltcGxpY2l0X2V4dGVybmFsX3N5bmMgKi8KKwogI2lmbmRlZiBFR0xf
QVJNX3BpeG1hcF9tdWx0aXNhbXBsZV9kaXNjYXJkCiAjZGVmaW5lIEVHTF9BUk1fcGl4bWFwX211
bHRpc2FtcGxlX2Rpc2NhcmQgMQogI2RlZmluZSBFR0xfRElTQ0FSRF9TQU1QTEVTX0FSTSAgICAg
ICAgICAgMHgzMjg2CkBAIC02MDcsNyArNjk5LDcgQEAgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJ
RU5UUlkgZWdsU3RyZWFtUG9zdEQzRFRleHR1cmVOVjEyQU5HTEUoRUdMRGlzcGxheSBkcHksIEUK
ICNpZm5kZWYgRUdMX0VYVF9kZXZpY2VfYmFzZQogI2RlZmluZSBFR0xfRVhUX2RldmljZV9iYXNl
IDEKIHR5cGVkZWYgdm9pZCAqRUdMRGV2aWNlRVhUOwotI2RlZmluZSBFR0xfTk9fREVWSUNFX0VY
VCAgICAgICAgICAgICAgICAgKChFR0xEZXZpY2VFWFQpKDApKQorI2RlZmluZSBFR0xfTk9fREVW
SUNFX0VYVCAgICAgICAgICAgICAgICAgRUdMX0NBU1QoRUdMRGV2aWNlRVhULDApCiAjZGVmaW5l
IEVHTF9CQURfREVWSUNFX0VYVCAgICAgICAgICAgICAgICAweDMyMkIKICNkZWZpbmUgRUdMX0RF
VklDRV9FWFQgICAgICAgICAgICAgICAgICAgIDB4MzIyQwogdHlwZWRlZiBFR0xCb29sZWFuIChF
R0xBUElFTlRSWVAgUEZORUdMUVVFUllERVZJQ0VBVFRSSUJFWFRQUk9DKSAoRUdMRGV2aWNlRVhU
IGRldmljZSwgRUdMaW50IGF0dHJpYnV0ZSwgRUdMQXR0cmliICp2YWx1ZSk7CkBAIC02MjQsMTEg
KzcxNiwxMSBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xRdWVyeURpc3BsYXlB
dHRyaWJFWFQgKEVHTERpc3BsYXkgZHB5LCBFR0xpbnQgYQogCiAjaWZuZGVmIEVHTF9BTkdMRV9k
ZXZpY2VfY3JlYXRpb24KICNkZWZpbmUgRUdMX0FOR0xFX2RldmljZV9jcmVhdGlvbiAxCi10eXBl
ZGVmIEVHTERldmljZUVYVCAoRUdMQVBJRU5UUllQIFBGTkVHTENSRUFURURFVklDRUFOR0xFUFJP
QykgKEVHTGludCBkZXZpY2VfdHlwZSwgdm9pZCAqbmF0aXZlX2RldmljZSwgY29uc3QgRUdMQXR0
cmliICphdHRyaWJfbGlzdCk7Ci10eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5F
R0xSRUxFQVNFREVWSUNFQU5HTEVQUk9DKSAoRUdMRGV2aWNlRVhUIGRldmljZSk7Cit0eXBlZGVm
IEVHTERldmljZUVYVChFR0xBUElFTlRSWVAgUEZORUdMQ1JFQVRFREVWSUNFQU5HTEVQUk9DKSAo
RUdMaW50IGRldmljZV90eXBlLCB2b2lkICpuYXRpdmVfZGV2aWNlLCBjb25zdCBFR0xBdHRyaWIg
KmF0dHJpYl9saXN0KTsKK3R5cGVkZWYgRUdMQm9vbGVhbihFR0xBUElFTlRSWVAgUEZORUdMUkVM
RUFTRURFVklDRUFOR0xFUFJPQykgKEVHTERldmljZUVYVCBkZXZpY2UpOwogI2lmZGVmIEVHTF9F
R0xFWFRfUFJPVE9UWVBFUwotRUdMQVBJIEVHTERldmljZUVYVCBFR0xBUElFTlRSWSBlZ2xDcmVh
dGVEZXZpY2VBTkdMRSAoRUdMaW50IGRldmljZV90eXBlLCB2b2lkICpuYXRpdmVfZGV2aWNlLCBj
b25zdCBFR0xBdHRyaWIgKmF0dHJpYl9saXN0KTsKLUVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVO
VFJZIGVnbFJlbGVhc2VEZXZpY2VBTkdMRSAoRUdMRGV2aWNlRVhUIGRldmljZSk7CitFR0xBUEkg
RUdMRGV2aWNlRVhUIEVHTEFQSUVOVFJZIGVnbENyZWF0ZURldmljZUFOR0xFKEVHTGludCBkZXZp
Y2VfdHlwZSwgdm9pZCAqbmF0aXZlX2RldmljZSwgY29uc3QgRUdMQXR0cmliICphdHRyaWJfbGlz
dCk7CitFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xSZWxlYXNlRGV2aWNlQU5HTEUo
RUdMRGV2aWNlRVhUIGRldmljZSk7CiAjZW5kaWYKICNlbmRpZiAvKiBFR0xfQU5HTEVfZGV2aWNl
X2NyZWF0aW9uICovCiAKQEAgLTY1MCw2ICs3NDIsMjEgQEAgRUdMQVBJIEVHTEJvb2xlYW4gRUdM
QVBJRU5UUlkgZWdsUmVsZWFzZURldmljZUFOR0xFIChFR0xEZXZpY2VFWFQgZGV2aWNlKTsKICNk
ZWZpbmUgRUdMX0VYVF9kZXZpY2VfcXVlcnkgMQogI2VuZGlmIC8qIEVHTF9FWFRfZGV2aWNlX3F1
ZXJ5ICovCiAKKyNpZm5kZWYgRUdMX0VYVF9nbF9jb2xvcnNwYWNlX2J0MjAyMF9saW5lYXIKKyNk
ZWZpbmUgRUdMX0VYVF9nbF9jb2xvcnNwYWNlX2J0MjAyMF9saW5lYXIgMQorI2RlZmluZSBFR0xf
R0xfQ09MT1JTUEFDRV9CVDIwMjBfTElORUFSX0VYVCAweDMzM0YKKyNlbmRpZiAvKiBFR0xfRVhU
X2dsX2NvbG9yc3BhY2VfYnQyMDIwX2xpbmVhciAqLworCisjaWZuZGVmIEVHTF9FWFRfZ2xfY29s
b3JzcGFjZV9idDIwMjBfcHEKKyNkZWZpbmUgRUdMX0VYVF9nbF9jb2xvcnNwYWNlX2J0MjAyMF9w
cSAxCisjZGVmaW5lIEVHTF9HTF9DT0xPUlNQQUNFX0JUMjAyMF9QUV9FWFQgICAweDMzNDAKKyNl
bmRpZiAvKiBFR0xfRVhUX2dsX2NvbG9yc3BhY2VfYnQyMDIwX3BxICovCisKKyNpZm5kZWYgRUdM
X0VYVF9nbF9jb2xvcnNwYWNlX3NjcmdiX2xpbmVhcgorI2RlZmluZSBFR0xfRVhUX2dsX2NvbG9y
c3BhY2Vfc2NyZ2JfbGluZWFyIDEKKyNkZWZpbmUgRUdMX0dMX0NPTE9SU1BBQ0VfU0NSR0JfTElO
RUFSX0VYVCAweDMzNTAKKyNlbmRpZiAvKiBFR0xfRVhUX2dsX2NvbG9yc3BhY2Vfc2NyZ2JfbGlu
ZWFyICovCisKICNpZm5kZWYgRUdMX0VYVF9pbWFnZV9kbWFfYnVmX2ltcG9ydAogI2RlZmluZSBF
R0xfRVhUX2ltYWdlX2RtYV9idWZfaW1wb3J0IDEKICNkZWZpbmUgRUdMX0xJTlVYX0RNQV9CVUZf
RVhUICAgICAgICAgICAgIDB4MzI3MApAQCAtNjc2LDYgKzc4MywyNyBAQCBFR0xBUEkgRUdMQm9v
bGVhbiBFR0xBUElFTlRSWSBlZ2xSZWxlYXNlRGV2aWNlQU5HTEUgKEVHTERldmljZUVYVCBkZXZp
Y2UpOwogI2RlZmluZSBFR0xfWVVWX0NIUk9NQV9TSVRJTkdfMF81X0VYVCAgICAgMHgzMjg1CiAj
ZW5kaWYgLyogRUdMX0VYVF9pbWFnZV9kbWFfYnVmX2ltcG9ydCAqLwogCisjaWZuZGVmIEVHTF9F
WFRfaW1hZ2VfZG1hX2J1Zl9pbXBvcnRfbW9kaWZpZXJzCisjZGVmaW5lIEVHTF9FWFRfaW1hZ2Vf
ZG1hX2J1Zl9pbXBvcnRfbW9kaWZpZXJzIDEKKyNkZWZpbmUgRUdMX0RNQV9CVUZfUExBTkUzX0ZE
X0VYVCAgICAgICAgIDB4MzQ0MAorI2RlZmluZSBFR0xfRE1BX0JVRl9QTEFORTNfT0ZGU0VUX0VY
VCAgICAgMHgzNDQxCisjZGVmaW5lIEVHTF9ETUFfQlVGX1BMQU5FM19QSVRDSF9FWFQgICAgICAw
eDM0NDIKKyNkZWZpbmUgRUdMX0RNQV9CVUZfUExBTkUwX01PRElGSUVSX0xPX0VYVCAweDM0NDMK
KyNkZWZpbmUgRUdMX0RNQV9CVUZfUExBTkUwX01PRElGSUVSX0hJX0VYVCAweDM0NDQKKyNkZWZp
bmUgRUdMX0RNQV9CVUZfUExBTkUxX01PRElGSUVSX0xPX0VYVCAweDM0NDUKKyNkZWZpbmUgRUdM
X0RNQV9CVUZfUExBTkUxX01PRElGSUVSX0hJX0VYVCAweDM0NDYKKyNkZWZpbmUgRUdMX0RNQV9C
VUZfUExBTkUyX01PRElGSUVSX0xPX0VYVCAweDM0NDcKKyNkZWZpbmUgRUdMX0RNQV9CVUZfUExB
TkUyX01PRElGSUVSX0hJX0VYVCAweDM0NDgKKyNkZWZpbmUgRUdMX0RNQV9CVUZfUExBTkUzX01P
RElGSUVSX0xPX0VYVCAweDM0NDkKKyNkZWZpbmUgRUdMX0RNQV9CVUZfUExBTkUzX01PRElGSUVS
X0hJX0VYVCAweDM0NEEKK3R5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTFFV
RVJZRE1BQlVGRk9STUFUU0VYVFBST0MpIChFR0xEaXNwbGF5IGRweSwgRUdMaW50IG1heF9mb3Jt
YXRzLCBFR0xpbnQgKmZvcm1hdHMsIEVHTGludCAqbnVtX2Zvcm1hdHMpOwordHlwZWRlZiBFR0xC
b29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMUVVFUllETUFCVUZNT0RJRklFUlNFWFRQUk9DKSAo
RUdMRGlzcGxheSBkcHksIEVHTGludCBmb3JtYXQsIEVHTGludCBtYXhfbW9kaWZpZXJzLCBFR0x1
aW50NjRLSFIgKm1vZGlmaWVycywgRUdMQm9vbGVhbiAqZXh0ZXJuYWxfb25seSwgRUdMaW50ICpu
dW1fbW9kaWZpZXJzKTsKKyNpZmRlZiBFR0xfRUdMRVhUX1BST1RPVFlQRVMKK0VHTEFQSSBFR0xC
b29sZWFuIEVHTEFQSUVOVFJZIGVnbFF1ZXJ5RG1hQnVmRm9ybWF0c0VYVCAoRUdMRGlzcGxheSBk
cHksIEVHTGludCBtYXhfZm9ybWF0cywgRUdMaW50ICpmb3JtYXRzLCBFR0xpbnQgKm51bV9mb3Jt
YXRzKTsKK0VHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFF1ZXJ5RG1hQnVmTW9kaWZp
ZXJzRVhUIChFR0xEaXNwbGF5IGRweSwgRUdMaW50IGZvcm1hdCwgRUdMaW50IG1heF9tb2RpZmll
cnMsIEVHTHVpbnQ2NEtIUiAqbW9kaWZpZXJzLCBFR0xCb29sZWFuICpleHRlcm5hbF9vbmx5LCBF
R0xpbnQgKm51bV9tb2RpZmllcnMpOworI2VuZGlmCisjZW5kaWYgLyogRUdMX0VYVF9pbWFnZV9k
bWFfYnVmX2ltcG9ydF9tb2RpZmllcnMgKi8KKwogI2lmbmRlZiBFR0xfRVhUX211bHRpdmlld193
aW5kb3cKICNkZWZpbmUgRUdMX0VYVF9tdWx0aXZpZXdfd2luZG93IDEKICNkZWZpbmUgRUdMX01V
TFRJVklFV19WSUVXX0NPVU5UX0VYVCAgICAgIDB4MzEzNApAQCAtNjg1LDggKzgxMyw4IEBAIEVH
TEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFJlbGVhc2VEZXZpY2VBTkdMRSAoRUdMRGV2
aWNlRVhUIGRldmljZSk7CiAjZGVmaW5lIEVHTF9FWFRfb3V0cHV0X2Jhc2UgMQogdHlwZWRlZiB2
b2lkICpFR0xPdXRwdXRMYXllckVYVDsKIHR5cGVkZWYgdm9pZCAqRUdMT3V0cHV0UG9ydEVYVDsK
LSNkZWZpbmUgRUdMX05PX09VVFBVVF9MQVlFUl9FWFQgICAgICAgICAgICgoRUdMT3V0cHV0TGF5
ZXJFWFQpMCkKLSNkZWZpbmUgRUdMX05PX09VVFBVVF9QT1JUX0VYVCAgICAgICAgICAgICgoRUdM
T3V0cHV0UG9ydEVYVCkwKQorI2RlZmluZSBFR0xfTk9fT1VUUFVUX0xBWUVSX0VYVCAgICAgICAg
ICAgRUdMX0NBU1QoRUdMT3V0cHV0TGF5ZXJFWFQsMCkKKyNkZWZpbmUgRUdMX05PX09VVFBVVF9Q
T1JUX0VYVCAgICAgICAgICAgIEVHTF9DQVNUKEVHTE91dHB1dFBvcnRFWFQsMCkKICNkZWZpbmUg
RUdMX0JBRF9PVVRQVVRfTEFZRVJfRVhUICAgICAgICAgIDB4MzIyRAogI2RlZmluZSBFR0xfQkFE
X09VVFBVVF9QT1JUX0VYVCAgICAgICAgICAgMHgzMjJFCiAjZGVmaW5lIEVHTF9TV0FQX0lOVEVS
VkFMX0VYVCAgICAgICAgICAgICAweDMyMkYKQEAgLTcyMyw2ICs4NTEsMTMgQEAgRUdMQVBJIGNv
bnN0IGNoYXIgKkVHTEFQSUVOVFJZIGVnbFF1ZXJ5T3V0cHV0UG9ydFN0cmluZ0VYVCAoRUdMRGlz
cGxheSBkcHksIEVHTE8KICNkZWZpbmUgRUdMX09QRU5XRl9QT1JUX0lEX0VYVCAgICAgICAgICAg
IDB4MzIzOQogI2VuZGlmIC8qIEVHTF9FWFRfb3V0cHV0X29wZW53ZiAqLwogCisjaWZuZGVmIEVH
TF9FWFRfcGl4ZWxfZm9ybWF0X2Zsb2F0CisjZGVmaW5lIEVHTF9FWFRfcGl4ZWxfZm9ybWF0X2Zs
b2F0IDEKKyNkZWZpbmUgRUdMX0NPTE9SX0NPTVBPTkVOVF9UWVBFX0VYVCAgICAgIDB4MzMzOQor
I2RlZmluZSBFR0xfQ09MT1JfQ09NUE9ORU5UX1RZUEVfRklYRURfRVhUIDB4MzMzQQorI2RlZmlu
ZSBFR0xfQ09MT1JfQ09NUE9ORU5UX1RZUEVfRkxPQVRfRVhUIDB4MzMzQgorI2VuZGlmIC8qIEVH
TF9FWFRfcGl4ZWxfZm9ybWF0X2Zsb2F0ICovCisKICNpZm5kZWYgRUdMX0VYVF9wbGF0Zm9ybV9i
YXNlCiAjZGVmaW5lIEVHTF9FWFRfcGxhdGZvcm1fYmFzZSAxCiB0eXBlZGVmIEVHTERpc3BsYXkg
KEVHTEFQSUVOVFJZUCBQRk5FR0xHRVRQTEFURk9STURJU1BMQVlFWFRQUk9DKSAoRUdMZW51bSBw
bGF0Zm9ybSwgdm9pZCAqbmF0aXZlX2Rpc3BsYXksIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3Qp
OwpAQCAtNzUxLDkgKzg4NiwxMyBAQCBFR0xBUEkgRUdMU3VyZmFjZSBFR0xBUElFTlRSWSBlZ2xD
cmVhdGVQbGF0Zm9ybVBpeG1hcFN1cmZhY2VFWFQgKEVHTERpc3BsYXkgZHB5LAogI2RlZmluZSBF
R0xfUExBVEZPUk1fWDExX1NDUkVFTl9FWFQgICAgICAgMHgzMUQ2CiAjZW5kaWYgLyogRUdMX0VY
VF9wbGF0Zm9ybV94MTEgKi8KIAorI2lmbmRlZiBFR0xfRVhUX3Byb3RlY3RlZF9jb250ZW50Cisj
ZGVmaW5lIEVHTF9FWFRfcHJvdGVjdGVkX2NvbnRlbnQgMQorI2RlZmluZSBFR0xfUFJPVEVDVEVE
X0NPTlRFTlRfRVhUICAgICAgICAgMHgzMkMwCisjZW5kaWYgLyogRUdMX0VYVF9wcm90ZWN0ZWRf
Y29udGVudCAqLworCiAjaWZuZGVmIEVHTF9FWFRfcHJvdGVjdGVkX3N1cmZhY2UKICNkZWZpbmUg
RUdMX0VYVF9wcm90ZWN0ZWRfc3VyZmFjZSAxCi0jZGVmaW5lIEVHTF9QUk9URUNURURfQ09OVEVO
VF9FWFQgICAgICAgICAweDMyQzAKICNlbmRpZiAvKiBFR0xfRVhUX3Byb3RlY3RlZF9zdXJmYWNl
ICovCiAKICNpZm5kZWYgRUdMX0VYVF9zdHJlYW1fY29uc3VtZXJfZWdsb3V0cHV0CkBAIC03NjQs
NiArOTAzLDIwIEBAIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFN0cmVhbUNvbnN1
bWVyT3V0cHV0RVhUIChFR0xEaXNwbGF5IGRweSwgRUdMU3RyCiAjZW5kaWYKICNlbmRpZiAvKiBF
R0xfRVhUX3N0cmVhbV9jb25zdW1lcl9lZ2xvdXRwdXQgKi8KIAorI2lmbmRlZiBFR0xfRVhUX3N1
cmZhY2VfU01QVEUyMDg2X21ldGFkYXRhCisjZGVmaW5lIEVHTF9FWFRfc3VyZmFjZV9TTVBURTIw
ODZfbWV0YWRhdGEgMQorI2RlZmluZSBFR0xfU01QVEUyMDg2X0RJU1BMQVlfUFJJTUFSWV9SWF9F
WFQgMHgzMzQxCisjZGVmaW5lIEVHTF9TTVBURTIwODZfRElTUExBWV9QUklNQVJZX1JZX0VYVCAw
eDMzNDIKKyNkZWZpbmUgRUdMX1NNUFRFMjA4Nl9ESVNQTEFZX1BSSU1BUllfR1hfRVhUIDB4MzM0
MworI2RlZmluZSBFR0xfU01QVEUyMDg2X0RJU1BMQVlfUFJJTUFSWV9HWV9FWFQgMHgzMzQ0Cisj
ZGVmaW5lIEVHTF9TTVBURTIwODZfRElTUExBWV9QUklNQVJZX0JYX0VYVCAweDMzNDUKKyNkZWZp
bmUgRUdMX1NNUFRFMjA4Nl9ESVNQTEFZX1BSSU1BUllfQllfRVhUIDB4MzM0NgorI2RlZmluZSBF
R0xfU01QVEUyMDg2X1dISVRFX1BPSU5UX1hfRVhUICAgMHgzMzQ3CisjZGVmaW5lIEVHTF9TTVBU
RTIwODZfV0hJVEVfUE9JTlRfWV9FWFQgICAweDMzNDgKKyNkZWZpbmUgRUdMX1NNUFRFMjA4Nl9N
QVhfTFVNSU5BTkNFX0VYVCAgIDB4MzM0OQorI2RlZmluZSBFR0xfU01QVEUyMDg2X01JTl9MVU1J
TkFOQ0VfRVhUICAgMHgzMzRBCisjZW5kaWYgLyogRUdMX0VYVF9zdXJmYWNlX1NNUFRFMjA4Nl9t
ZXRhZGF0YSAqLworCiAjaWZuZGVmIEVHTF9FWFRfc3dhcF9idWZmZXJzX3dpdGhfZGFtYWdlCiAj
ZGVmaW5lIEVHTF9FWFRfc3dhcF9idWZmZXJzX3dpdGhfZGFtYWdlIDEKIHR5cGVkZWYgRUdMQm9v
bGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTFNXQVBCVUZGRVJTV0lUSERBTUFHRUVYVFBST0MpIChF
R0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgKnJlY3RzLCBFR0xpbnQg
bl9yZWN0cyk7CkBAIC04NzAsNiArMTAyMywxMSBAQCBFR0xBUEkgRUdMQm9vbGVhbiBFR0xBUElF
TlRSWSBlZ2xFeHBvcnRETUFCVUZJbWFnZU1FU0EgKEVHTERpc3BsYXkgZHB5LCBFR0xJbWFnZQog
I2RlZmluZSBFR0xfUExBVEZPUk1fR0JNX01FU0EgICAgICAgICAgICAgMHgzMUQ3CiAjZW5kaWYg
LyogRUdMX01FU0FfcGxhdGZvcm1fZ2JtICovCiAKKyNpZm5kZWYgRUdMX01FU0FfcGxhdGZvcm1f
c3VyZmFjZWxlc3MKKyNkZWZpbmUgRUdMX01FU0FfcGxhdGZvcm1fc3VyZmFjZWxlc3MgMQorI2Rl
ZmluZSBFR0xfUExBVEZPUk1fU1VSRkFDRUxFU1NfTUVTQSAgICAgMHgzMURECisjZW5kaWYgLyog
RUdMX01FU0FfcGxhdGZvcm1fc3VyZmFjZWxlc3MgKi8KKwogI2lmbmRlZiBFR0xfTk9LX3N3YXBf
cmVnaW9uCiAjZGVmaW5lIEVHTF9OT0tfc3dhcF9yZWdpb24gMQogdHlwZWRlZiBFR0xCb29sZWFu
IChFR0xBUElFTlRSWVAgUEZORUdMU1dBUEJVRkZFUlNSRUdJT05OT0tQUk9DKSAoRUdMRGlzcGxh
eSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IG51bVJlY3RzLCBjb25zdCBFR0xpbnQg
KnJlY3RzKTsKQEAgLTk1Myw2ICsxMTExLDExIEBAIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVO
VFJZIGVnbFBvc3RTdWJCdWZmZXJOViAoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyCiAj
ZW5kaWYKICNlbmRpZiAvKiBFR0xfTlZfcG9zdF9zdWJfYnVmZmVyICovCiAKKyNpZm5kZWYgRUdM
X05WX3JvYnVzdG5lc3NfdmlkZW9fbWVtb3J5X3B1cmdlCisjZGVmaW5lIEVHTF9OVl9yb2J1c3Ru
ZXNzX3ZpZGVvX21lbW9yeV9wdXJnZSAxCisjZGVmaW5lIEVHTF9HRU5FUkFURV9SRVNFVF9PTl9W
SURFT19NRU1PUllfUFVSR0VfTlYgMHgzMzRDCisjZW5kaWYgLyogRUdMX05WX3JvYnVzdG5lc3Nf
dmlkZW9fbWVtb3J5X3B1cmdlICovCisKICNpZm5kZWYgRUdMX05WX3N0cmVhbV9jb25zdW1lcl9n
bHRleHR1cmVfeXV2CiAjZGVmaW5lIEVHTF9OVl9zdHJlYW1fY29uc3VtZXJfZ2x0ZXh0dXJlX3l1
diAxCiAjZGVmaW5lIEVHTF9ZVVZfUExBTkUwX1RFWFRVUkVfVU5JVF9OViAgICAweDMzMkMKQEAg
LTk2NCw2ICsxMTI3LDQ4IEBAIEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFN0cmVh
bUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWxBdHRyaWJzTlYgKEVHTERpCiAjZW5kaWYKICNlbmRp
ZiAvKiBFR0xfTlZfc3RyZWFtX2NvbnN1bWVyX2dsdGV4dHVyZV95dXYgKi8KIAorI2lmbmRlZiBF
R0xfTlZfc3RyZWFtX2Nyb3NzX2Rpc3BsYXkKKyNkZWZpbmUgRUdMX05WX3N0cmVhbV9jcm9zc19k
aXNwbGF5IDEKKyNkZWZpbmUgRUdMX1NUUkVBTV9DUk9TU19ESVNQTEFZX05WICAgICAgIDB4MzM0
RQorI2VuZGlmIC8qIEVHTF9OVl9zdHJlYW1fY3Jvc3NfZGlzcGxheSAqLworCisjaWZuZGVmIEVH
TF9OVl9zdHJlYW1fY3Jvc3Nfb2JqZWN0CisjZGVmaW5lIEVHTF9OVl9zdHJlYW1fY3Jvc3Nfb2Jq
ZWN0IDEKKyNkZWZpbmUgRUdMX1NUUkVBTV9DUk9TU19PQkpFQ1RfTlYgICAgICAgIDB4MzM0RAor
I2VuZGlmIC8qIEVHTF9OVl9zdHJlYW1fY3Jvc3Nfb2JqZWN0ICovCisKKyNpZm5kZWYgRUdMX05W
X3N0cmVhbV9jcm9zc19wYXJ0aXRpb24KKyNkZWZpbmUgRUdMX05WX3N0cmVhbV9jcm9zc19wYXJ0
aXRpb24gMQorI2RlZmluZSBFR0xfU1RSRUFNX0NST1NTX1BBUlRJVElPTl9OViAgICAgMHgzMjNG
CisjZW5kaWYgLyogRUdMX05WX3N0cmVhbV9jcm9zc19wYXJ0aXRpb24gKi8KKworI2lmbmRlZiBF
R0xfTlZfc3RyZWFtX2Nyb3NzX3Byb2Nlc3MKKyNkZWZpbmUgRUdMX05WX3N0cmVhbV9jcm9zc19w
cm9jZXNzIDEKKyNkZWZpbmUgRUdMX1NUUkVBTV9DUk9TU19QUk9DRVNTX05WICAgICAgIDB4MzI0
NQorI2VuZGlmIC8qIEVHTF9OVl9zdHJlYW1fY3Jvc3NfcHJvY2VzcyAqLworCisjaWZuZGVmIEVH
TF9OVl9zdHJlYW1fY3Jvc3Nfc3lzdGVtCisjZGVmaW5lIEVHTF9OVl9zdHJlYW1fY3Jvc3Nfc3lz
dGVtIDEKKyNkZWZpbmUgRUdMX1NUUkVBTV9DUk9TU19TWVNURU1fTlYgICAgICAgIDB4MzM0Rgor
I2VuZGlmIC8qIEVHTF9OVl9zdHJlYW1fY3Jvc3Nfc3lzdGVtICovCisKKyNpZm5kZWYgRUdMX05W
X3N0cmVhbV9maWZvX25leHQKKyNkZWZpbmUgRUdMX05WX3N0cmVhbV9maWZvX25leHQgMQorI2Rl
ZmluZSBFR0xfUEVORElOR19GUkFNRV9OViAgICAgICAgICAgICAgMHgzMzI5CisjZGVmaW5lIEVH
TF9TVFJFQU1fVElNRV9QRU5ESU5HX05WICAgICAgICAweDMzMkEKKyNlbmRpZiAvKiBFR0xfTlZf
c3RyZWFtX2ZpZm9fbmV4dCAqLworCisjaWZuZGVmIEVHTF9OVl9zdHJlYW1fZmlmb19zeW5jaHJv
bm91cworI2RlZmluZSBFR0xfTlZfc3RyZWFtX2ZpZm9fc3luY2hyb25vdXMgMQorI2RlZmluZSBF
R0xfU1RSRUFNX0ZJRk9fU1lOQ0hST05PVVNfTlYgICAgMHgzMzM2CisjZW5kaWYgLyogRUdMX05W
X3N0cmVhbV9maWZvX3N5bmNocm9ub3VzICovCisKKyNpZm5kZWYgRUdMX05WX3N0cmVhbV9mcmFt
ZV9saW1pdHMKKyNkZWZpbmUgRUdMX05WX3N0cmVhbV9mcmFtZV9saW1pdHMgMQorI2RlZmluZSBF
R0xfUFJPRFVDRVJfTUFYX0ZSQU1FX0hJTlRfTlYgICAgMHgzMzM3CisjZGVmaW5lIEVHTF9DT05T
VU1FUl9NQVhfRlJBTUVfSElOVF9OViAgICAweDMzMzgKKyNlbmRpZiAvKiBFR0xfTlZfc3RyZWFt
X2ZyYW1lX2xpbWl0cyAqLworCiAjaWZuZGVmIEVHTF9OVl9zdHJlYW1fbWV0YWRhdGEKICNkZWZp
bmUgRUdMX05WX3N0cmVhbV9tZXRhZGF0YSAxCiAjZGVmaW5lIEVHTF9NQVhfU1RSRUFNX01FVEFE
QVRBX0JMT0NLU19OViAweDMyNTAKQEAgLTk5MCw2ICsxMTk1LDQ1IEBAIEVHTEFQSSBFR0xCb29s
ZWFuIEVHTEFQSUVOVFJZIGVnbFF1ZXJ5U3RyZWFtTWV0YWRhdGFOViAoRUdMRGlzcGxheSBkcHks
IEVHTFN0cmVhCiAjZW5kaWYKICNlbmRpZiAvKiBFR0xfTlZfc3RyZWFtX21ldGFkYXRhICovCiAK
KyNpZm5kZWYgRUdMX05WX3N0cmVhbV9yZW1vdGUKKyNkZWZpbmUgRUdMX05WX3N0cmVhbV9yZW1v
dGUgMQorI2RlZmluZSBFR0xfU1RSRUFNX1NUQVRFX0lOSVRJQUxJWklOR19OViAgMHgzMjQwCisj
ZGVmaW5lIEVHTF9TVFJFQU1fVFlQRV9OViAgICAgICAgICAgICAgICAweDMyNDEKKyNkZWZpbmUg
RUdMX1NUUkVBTV9QUk9UT0NPTF9OViAgICAgICAgICAgIDB4MzI0MgorI2RlZmluZSBFR0xfU1RS
RUFNX0VORFBPSU5UX05WICAgICAgICAgICAgMHgzMjQzCisjZGVmaW5lIEVHTF9TVFJFQU1fTE9D
QUxfTlYgICAgICAgICAgICAgICAweDMyNDQKKyNkZWZpbmUgRUdMX1NUUkVBTV9QUk9EVUNFUl9O
ViAgICAgICAgICAgIDB4MzI0NworI2RlZmluZSBFR0xfU1RSRUFNX0NPTlNVTUVSX05WICAgICAg
ICAgICAgMHgzMjQ4CisjZGVmaW5lIEVHTF9TVFJFQU1fUFJPVE9DT0xfRkRfTlYgICAgICAgICAw
eDMyNDYKKyNlbmRpZiAvKiBFR0xfTlZfc3RyZWFtX3JlbW90ZSAqLworCisjaWZuZGVmIEVHTF9O
Vl9zdHJlYW1fcmVzZXQKKyNkZWZpbmUgRUdMX05WX3N0cmVhbV9yZXNldCAxCisjZGVmaW5lIEVH
TF9TVVBQT1JUX1JFU0VUX05WICAgICAgICAgICAgICAweDMzMzQKKyNkZWZpbmUgRUdMX1NVUFBP
UlRfUkVVU0VfTlYgICAgICAgICAgICAgIDB4MzMzNQordHlwZWRlZiBFR0xCb29sZWFuIChFR0xB
UElFTlRSWVAgUEZORUdMUkVTRVRTVFJFQU1OVlBST0MpIChFR0xEaXNwbGF5IGRweSwgRUdMU3Ry
ZWFtS0hSIHN0cmVhbSk7CisjaWZkZWYgRUdMX0VHTEVYVF9QUk9UT1RZUEVTCitFR0xBUEkgRUdM
Qm9vbGVhbiBFR0xBUElFTlRSWSBlZ2xSZXNldFN0cmVhbU5WIChFR0xEaXNwbGF5IGRweSwgRUdM
U3RyZWFtS0hSIHN0cmVhbSk7CisjZW5kaWYKKyNlbmRpZiAvKiBFR0xfTlZfc3RyZWFtX3Jlc2V0
ICovCisKKyNpZm5kZWYgRUdMX05WX3N0cmVhbV9zb2NrZXQKKyNkZWZpbmUgRUdMX05WX3N0cmVh
bV9zb2NrZXQgMQorI2RlZmluZSBFR0xfU1RSRUFNX1BST1RPQ09MX1NPQ0tFVF9OViAgICAgMHgz
MjRCCisjZGVmaW5lIEVHTF9TT0NLRVRfSEFORExFX05WICAgICAgICAgICAgICAweDMyNEMKKyNk
ZWZpbmUgRUdMX1NPQ0tFVF9UWVBFX05WICAgICAgICAgICAgICAgIDB4MzI0RAorI2VuZGlmIC8q
IEVHTF9OVl9zdHJlYW1fc29ja2V0ICovCisKKyNpZm5kZWYgRUdMX05WX3N0cmVhbV9zb2NrZXRf
aW5ldAorI2RlZmluZSBFR0xfTlZfc3RyZWFtX3NvY2tldF9pbmV0IDEKKyNkZWZpbmUgRUdMX1NP
Q0tFVF9UWVBFX0lORVRfTlYgICAgICAgICAgIDB4MzI0RgorI2VuZGlmIC8qIEVHTF9OVl9zdHJl
YW1fc29ja2V0X2luZXQgKi8KKworI2lmbmRlZiBFR0xfTlZfc3RyZWFtX3NvY2tldF91bml4Cisj
ZGVmaW5lIEVHTF9OVl9zdHJlYW1fc29ja2V0X3VuaXggMQorI2RlZmluZSBFR0xfU09DS0VUX1RZ
UEVfVU5JWF9OViAgICAgICAgICAgMHgzMjRFCisjZW5kaWYgLyogRUdMX05WX3N0cmVhbV9zb2Nr
ZXRfdW5peCAqLworCiAjaWZuZGVmIEVHTF9OVl9zdHJlYW1fc3luYwogI2RlZmluZSBFR0xfTlZf
c3RyZWFtX3N5bmMgMQogI2RlZmluZSBFR0xfU1lOQ19ORVdfRlJBTUVfTlYgICAgICAgICAgICAg
MHgzMjFGCkBAIC0xMDE2LDcgKzEyNjAsNyBAQCB0eXBlZGVmIGtocm9ub3NfdXRpbWVfbmFub3Nl
Y29uZHNfdCBFR0xUaW1lTlY7CiAjZGVmaW5lIEVHTF9TWU5DX1RZUEVfTlYgICAgICAgICAgICAg
ICAgICAweDMwRUQKICNkZWZpbmUgRUdMX1NZTkNfQ09ORElUSU9OX05WICAgICAgICAgICAgIDB4
MzBFRQogI2RlZmluZSBFR0xfU1lOQ19GRU5DRV9OViAgICAgICAgICAgICAgICAgMHgzMEVGCi0j
ZGVmaW5lIEVHTF9OT19TWU5DX05WICAgICAgICAgICAgICAgICAgICAoKEVHTFN5bmNOVikwKQor
I2RlZmluZSBFR0xfTk9fU1lOQ19OViAgICAgICAgICAgICAgICAgICAgRUdMX0NBU1QoRUdMU3lu
Y05WLDApCiB0eXBlZGVmIEVHTFN5bmNOViAoRUdMQVBJRU5UUllQIFBGTkVHTENSRUFURUZFTkNF
U1lOQ05WUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0xlbnVtIGNvbmRpdGlvbiwgY29uc3QgRUdM
aW50ICphdHRyaWJfbGlzdCk7CiB0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5F
R0xERVNUUk9ZU1lOQ05WUFJPQykgKEVHTFN5bmNOViBzeW5jKTsKIHR5cGVkZWYgRUdMQm9vbGVh
biAoRUdMQVBJRU5UUllQIFBGTkVHTEZFTkNFTlZQUk9DKSAoRUdMU3luY05WIHN5bmMpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdscGxhdGZvcm0u
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbHBsYXRmb3JtLmgKaW5k
ZXggYjBhNmVjOTYyM2EuLjk5OWY2ZTI4YjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9pbmNsdWRlL0VHTC9lZ2xwbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL2luY2x1ZGUvRUdML2VnbHBsYXRmb3JtLmgKQEAgLTIsNyArMiw3IEBACiAjZGVmaW5l
IF9fZWdscGxhdGZvcm1faF8KIAogLyoKLSoqIENvcHlyaWdodCAoYykgMjAwNy0yMDEzIFRoZSBL
aHJvbm9zIEdyb3VwIEluYy4KKyoqIENvcHlyaWdodCAoYykgMjAwNy0yMDE2IFRoZSBLaHJvbm9z
IEdyb3VwIEluYy4KICoqCiAqKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m
IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogKiogY29weSBvZiB0aGlzIHNvZnR3
YXJlIGFuZC9vciBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQpAQCAtMzQsNyAr
MzQsNyBAQAogICogYnkgZmlsaW5nIGEgYnVnIGFnYWluc3QgcHJvZHVjdCAiRUdMIiBjb21wb25l
bnQgIlJlZ2lzdHJ5Ii4KICAqLwogCi0jaW5jbHVkZSA8QU5HTEUva2hycGxhdGZvcm0uaD4KKyNp
bmNsdWRlIDxLSFIva2hycGxhdGZvcm0uaD4KIAogLyogTWFjcm9zIHVzZWQgaW4gRUdMIGZ1bmN0
aW9uIHByb3RvdHlwZSBkZWNsYXJhdGlvbnMuCiAgKgpAQCAtODMsNyArODMsNyBAQCB0eXBlZGVm
IEhXTkQgICAgRUdMTmF0aXZlV2luZG93VHlwZTsKIHR5cGVkZWYgSUluc3BlY3RhYmxlKiBFR0xO
YXRpdmVXaW5kb3dUeXBlOwogI2VuZGlmCiAKLSNlbGlmIGRlZmluZWQoX19XSU5TQ1dfXykgfHwg
ZGVmaW5lZChfX1NZTUJJQU4zMl9fKSAgLyogU3ltYmlhbiAqLworI2VsaWYgZGVmaW5lZChfX0FQ
UExFX18pIHx8IGRlZmluZWQoX19XSU5TQ1dfXykgfHwgZGVmaW5lZChfX1NZTUJJQU4zMl9fKSAg
LyogU3ltYmlhbiAqLwogCiB0eXBlZGVmIGludCAgIEVHTE5hdGl2ZURpc3BsYXlUeXBlOwogdHlw
ZWRlZiB2b2lkICpFR0xOYXRpdmVXaW5kb3dUeXBlOwpAQCAtMTE1LDE4ICsxMTUsNiBAQCB0eXBl
ZGVmIERpc3BsYXkgKkVHTE5hdGl2ZURpc3BsYXlUeXBlOwogdHlwZWRlZiBQaXhtYXAgICBFR0xO
YXRpdmVQaXhtYXBUeXBlOwogdHlwZWRlZiBXaW5kb3cgICBFR0xOYXRpdmVXaW5kb3dUeXBlOwog
Ci0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoIGRlZmluZWQoX19BUFBMRV9DUFBfXykgfHwg
ZGVmaW5lZChfX0FQUExFX0NDX18pIHx8IGRlZmluZWQoX19NQUNPU19DTEFTU0lDX18pICkKLQot
I2lmIGRlZmluZWQoX19PQkpDX18pCi1AY2xhc3MgQ0FMYXllcjsKLSNlbHNlCi1jbGFzcyBDQUxh
eWVyOwotI2VuZGlmCi0KLXR5cGVkZWYgdm9pZCAqRUdMTmF0aXZlRGlzcGxheVR5cGU7Ci10eXBl
ZGVmIHZvaWQgKkVHTE5hdGl2ZVBpeG1hcFR5cGU7Ci10eXBlZGVmIENBTGF5ZXIgKkVHTE5hdGl2
ZVdpbmRvd1R5cGU7Ci0KICNlbHNlCiAjZXJyb3IgIlBsYXRmb3JtIG5vdCByZWNvZ25pemVkIgog
I2VuZGlmCkBAIC0xNDYsNCArMTM0LDEyIEBAIHR5cGVkZWYgRUdMTmF0aXZlV2luZG93VHlwZSAg
TmF0aXZlV2luZG93VHlwZTsKICAqLwogdHlwZWRlZiBraHJvbm9zX2ludDMyX3QgRUdMaW50Owog
CisKKy8qIEMrKyAvIEMgdHlwZWNhc3QgbWFjcm9zIGZvciBzcGVjaWFsIEVHTCBoYW5kbGUgdmFs
dWVzICovCisjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKKyNkZWZpbmUgRUdMX0NBU1QodHlwZSwg
dmFsdWUpIChzdGF0aWNfY2FzdDx0eXBlPih2YWx1ZSkpCisjZWxzZQorI2RlZmluZSBFR0xfQ0FT
VCh0eXBlLCB2YWx1ZSkgKCh0eXBlKSAodmFsdWUpKQorI2VuZGlmCisKICNlbmRpZiAvKiBfX2Vn
bHBsYXRmb3JtX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1
ZGUvRUdML2VnbHNvZnRsaW5raW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRl
L0VHTC9lZ2xzb2Z0bGlua2luZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmEx
NGY0NzA5My4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVk
ZS9FR0wvZWdsc29mdGxpbmtpbmcuaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8q
IAotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIAotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwot
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgIlNvZnRMaW5raW5nLmgiCi0KLVNPRlRfTElOS19MSUJS
QVJZKGxpYkVHTCkKLQotU09GVF9MSU5LKGxpYkVHTCwgZWdsR2V0RXJyb3IsIEVHTGludCwgRUdM
QVBJRU5UUlksICh2b2lkKSwgKCkpOwotU09GVF9MSU5LX09QVElPTkFMKGxpYkVHTCwgZWdsR2V0
RGlzcGxheSwgRUdMRGlzcGxheSwgRUdMQVBJRU5UUlksIChFR0xOYXRpdmVEaXNwbGF5VHlwZSBk
aXNwbGF5X2lkKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xJbml0aWFsaXplLCBFR0xCb29sZWFu
LCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xpbnQgKm1ham9yLCBFR0xpbnQgKm1p
bm9yKSwgKGRweSwgbWFqb3IsIG1pbm9yKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xUZXJtaW5h
dGUsIEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHkpLCAoZHB5KSk7Ci1T
T0ZUX0xJTksobGliRUdMLCBlZ2xRdWVyeVN0cmluZywgY29uc3QgY2hhciAqLCBFR0xBUElFTlRS
WSwgKEVHTERpc3BsYXkgZHB5LCBFR0xpbnQgbmFtZSksIChkcHksIG5hbWUpKTsKLVNPRlRfTElO
SyhsaWJFR0wsIGVnbEdldENvbmZpZ3MsIEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlz
cGxheSBkcHksIEVHTENvbmZpZyAqY29uZmlncywgRUdMaW50IGNvbmZpZ19zaXplLCBFR0xpbnQg
Km51bV9jb25maWcpLCAoZHB5LCBjb25maWdzLCBjb25maWdfc2l6ZSwgbnVtX2NvbmZpZykpOwot
U09GVF9MSU5LKGxpYkVHTCwgZWdsQ2hvb3NlQ29uZmlnLCBFR0xCb29sZWFuLCBFR0xBUElFTlRS
WSwgKEVHTERpc3BsYXkgZHB5LCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0LCBFR0xDb25maWcg
KmNvbmZpZ3MsIEVHTGludCBjb25maWdfc2l6ZSwgRUdMaW50ICpudW1fY29uZmlnKSwgKGRweSwg
YXR0cmliX2xpc3QsIGNvbmZpZ3MsIGNvbmZpZ19zaXplLCBudW1fY29uZmlnKSk7Ci1TT0ZUX0xJ
TksobGliRUdMLCBlZ2xHZXRDb25maWdBdHRyaWIsIEVHTGludCwgRUdMQVBJRU5UUlksIChFR0xE
aXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50ICp2
YWx1ZSksIChkcHksIGNvbmZpZywgYXR0cmlidXRlLCB2YWx1ZSkpOwotU09GVF9MSU5LKGxpYkVH
TCwgZWdsQ3JlYXRlV2luZG93U3VyZmFjZSwgRUdMU3VyZmFjZSwgRUdMQVBJRU5UUlksIChFR0xE
aXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgRUdMTmF0aXZlV2luZG93VHlwZSB3aW4sIGNv
bnN0IEVHTGludCAqYXR0cmliX2xpc3QpLCAoZHB5LCBjb25maWcsIHdpbiwgYXR0cmliX2xpc3Qp
KTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbENyZWF0ZVBidWZmZXJTdXJmYWNlLCBFR0xTdXJmYWNl
LCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBjb25zdCBF
R0xpbnQgKmF0dHJpYl9saXN0KSwgKGRweSwgY29uZmlnLCBhdHRyaWJfbGlzdCkpOwotU09GVF9M
SU5LKGxpYkVHTCwgZWdsQ3JlYXRlUGl4bWFwU3VyZmFjZSwgRUdMU3VyZmFjZSwgRUdMQVBJRU5U
UlksIChFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgRUdMTmF0aXZlUGl4bWFwVHlw
ZSBwaXhtYXAsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpLCAoZHB5LCBjb25maWcsIHBpeG1h
cCwgYXR0cmliX2xpc3QpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbERlc3Ryb3lTdXJmYWNlLCBF
R0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZh
Y2UpLCAoZHB5LCBzdXJmYWNlKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xRdWVyeVN1cmZhY2Us
IEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3Vy
ZmFjZSwgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50ICp2YWx1ZSksIChkcHksIHN1cmZhY2UsIGF0
dHJpYnV0ZSwgdmFsdWUpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbEJpbmRBUEksIEVHTEJvb2xl
YW4sIEVHTEFQSUVOVFJZLCAoRUdMZW51bSBhcGkpLCAoYXBpKSk7Ci1TT0ZUX0xJTksobGliRUdM
LCBlZ2xRdWVyeUFQSSwgRUdMZW51bSwgRUdMQVBJRU5UUlksICh2b2lkKSwgKCkpOwotU09GVF9M
SU5LKGxpYkVHTCwgZWdsV2FpdENsaWVudCwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksICh2b2lk
KSwgKCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsUmVsZWFzZVRocmVhZCwgRUdMQm9vbGVhbiwg
RUdMQVBJRU5UUlksICh2b2lkKSwgKCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsQ3JlYXRlUGJ1
ZmZlckZyb21DbGllbnRCdWZmZXIsIEVHTFN1cmZhY2UsIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxh
eSBkcHksIEVHTGVudW0gYnVmdHlwZSwgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwgRUdMQ29uZmln
IGNvbmZpZywgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCksIChkcHksIGJ1ZnR5cGUsIGJ1ZmZl
ciwgY29uZmlnLCBhdHRyaWJfbGlzdCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsU3VyZmFjZUF0
dHJpYiwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFj
ZSBzdXJmYWNlLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgdmFsdWUpLCAoZHB5LCBzdXJmYWNl
LCBhdHRyaWJ1dGUsIHZhbHVlKSk7Ci1TT0ZUX0xJTksobGliRUdMLCBlZ2xCaW5kVGV4SW1hZ2Us
IEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3Vy
ZmFjZSwgRUdMaW50IGJ1ZmZlciksIChkcHksIHN1cmZhY2UsIGJ1ZmZlcikpOwotU09GVF9MSU5L
KGxpYkVHTCwgZWdsUmVsZWFzZVRleEltYWdlLCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKEVH
TERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBidWZmZXIpLCAoZHB5LCBz
dXJmYWNlLCBidWZmZXIpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbFN3YXBJbnRlcnZhbCwgRUdM
Qm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xEaXNwbGF5IGRweSwgRUdMaW50IGludGVydmFsKSwg
KGRweSwgaW50ZXJ2YWwpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbENyZWF0ZUNvbnRleHQsIEVH
TENvbnRleHQsIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcs
IEVHTENvbnRleHQgc2hhcmVfY29udGV4dCwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCksIChk
cHksIGNvbmZpZywgc2hhcmVfY29udGV4dCwgYXR0cmliX2xpc3QpKTsKLVNPRlRfTElOSyhsaWJF
R0wsIGVnbERlc3Ryb3lDb250ZXh0LCBFR0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKEVHTERpc3Bs
YXkgZHB5LCBFR0xDb250ZXh0IGN0eCksIChkcHksIGN0eCkpOwotU09GVF9MSU5LKGxpYkVHTCwg
ZWdsTWFrZUN1cnJlbnQsIEVHTEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHks
IEVHTFN1cmZhY2UgZHJhdywgRUdMU3VyZmFjZSByZWFkLCBFR0xDb250ZXh0IGN0eCksIChkcHks
IGRyYXcsIHJlYWQsIGN0eCkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsR2V0Q3VycmVudENvbnRl
eHQsIEVHTENvbnRleHQsIEVHTEFQSUVOVFJZLCAodm9pZCksICgpKTsKLVNPRlRfTElOSyhsaWJF
R0wsIGVnbEdldEN1cnJlbnRTdXJmYWNlLCBFR0xTdXJmYWNlLCBFR0xBUElFTlRSWSwgKEVHTGlu
dCByZWFkZHJhdyksIChyZWFkZHJhdykpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsR2V0Q3VycmVu
dERpc3BsYXksIEVHTERpc3BsYXksIEVHTEFQSUVOVFJZLCAodm9pZCksICgpKTsKLVNPRlRfTElO
SyhsaWJFR0wsIGVnbFF1ZXJ5Q29udGV4dCwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xE
aXNwbGF5IGRweSwgRUdMQ29udGV4dCBjdHgsIEVHTGludCBhdHRyaWJ1dGUsIEVHTGludCAqdmFs
dWUpLCAoZHB5LCBjdHgsIGF0dHJpYnV0ZSwgdmFsdWUpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVn
bFdhaXRHTCwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksICh2b2lkKSwgKCkpOwotU09GVF9MSU5L
KGxpYkVHTCwgZWdsV2FpdE5hdGl2ZSwgRUdMQm9vbGVhbiwgRUdMQVBJRU5UUlksIChFR0xpbnQg
ZW5naW5lKSwgKGVuZ2luZSkpOwotU09GVF9MSU5LKGxpYkVHTCwgZWdsU3dhcEJ1ZmZlcnMsIEVH
TEJvb2xlYW4sIEVHTEFQSUVOVFJZLCAoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFj
ZSksIChkcHksIHN1cmZhY2UpKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbENvcHlCdWZmZXJzLCBF
R0xCb29sZWFuLCBFR0xBUElFTlRSWSwgKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZh
Y2UsIEVHTE5hdGl2ZVBpeG1hcFR5cGUgdGFyZ2V0KSwgKGRweSwgc3VyZmFjZSwgdGFyZ2V0KSk7
Ci10eXBlZGVmIHZvaWQgKCpfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBl
KSh2b2lkKTsKLVNPRlRfTElOSyhsaWJFR0wsIGVnbEdldFByb2NBZGRyZXNzLCBfX2VnbE11c3RD
YXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlLCBFR0xBUElFTlRSWSwgKGNvbnN0IGNoYXIg
KnByb2NuYW1lKSwgKHByb2NuYW1lKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9pbmNsdWRlL0dMRVMyL2dsMi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVk
ZS9HTEVTMi9nbDIuaAppbmRleCA0NTE5NzY1M2RmNC4uMDI3ZTFmNzEzNjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDIuaApAQCAtNTYsNyArNTYsNyBAQCBl
eHRlcm4gIkMiIHsKIAogI2lmbmRlZiBHTF9FU19WRVJTSU9OXzJfMAogI2RlZmluZSBHTF9FU19W
RVJTSU9OXzJfMCAxCi0jaW5jbHVkZSA8QU5HTEUva2hycGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxL
SFIva2hycGxhdGZvcm0uaD4KIHR5cGVkZWYga2hyb25vc19pbnQ4X3QgR0xieXRlOwogdHlwZWRl
ZiBraHJvbm9zX2Zsb2F0X3QgR0xjbGFtcGY7CiB0eXBlZGVmIGtocm9ub3NfaW50MzJfdCBHTGZp
eGVkOwpAQCAtNTIwLDExICs1MjAsNiBAQCB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TFZFUlRFWEFUVFJJQjRGUFJPQykgKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTAogdHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWRVJURVhBVFRSSUI0RlZQUk9DKSAoR0x1aW50IGlu
ZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
VkVSVEVYQVRUUklCUE9JTlRFUlBST0MpIChHTHVpbnQgaW5kZXgsIEdMaW50IHNpemUsIEdMZW51
bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQg
KnBvaW50ZXIpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWSUVXUE9SVFBST0Mp
IChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Ci0KLSNp
ZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChBTkdMRV9XRUJLSVRfV0lOKQotI2luY2x1
ZGUgPEdMRVMyL2dsMnNvZnRsaW5raW5nLmg+Ci0jZWxzZQotCiAjaWZkZWYgR0xfR0xFWFRfUFJP
VE9UWVBFUwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQWN0aXZlVGV4dHVyZSAoR0xl
bnVtIHRleHR1cmUpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQXR0YWNoU2hhZGVy
IChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRlcik7CkBAIC02NjksNyArNjY0LDYgQEAgR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVmVydGV4QXR0cmliNGZ2IChHTHVpbnQgaW5kZXgs
IGNvbnN0IEdMZmxvYXQgKnYpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVmVydGV4
QXR0cmliUG9pbnRlciAoR0x1aW50IGluZGV4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xi
b29sZWFuIG5vcm1hbGl6ZWQsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCB2b2lkICpwb2ludGVyKTsK
IEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFZpZXdwb3J0IChHTGludCB4LCBHTGludCB5
LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CiAjZW5kaWYKLSNlbmRpZgogI2VuZGlm
IC8qIEdMX0VTX1ZFUlNJT05fMl8wICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJleHQuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgKaW5kZXggZWJhNmRjYzc3
ZTYuLmYzM2VjMTlhZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNs
dWRlL0dMRVMyL2dsMmV4dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUv
R0xFUzIvZ2wyZXh0LmgKQEAgLTYsNyArNiw3IEBAIGV4dGVybiAiQyIgewogI2VuZGlmCiAKIC8q
Ci0qKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNSBUaGUgS2hyb25vcyBHcm91cCBJbmMuCisqKiBD
b3B5cmlnaHQgKGMpIDIwMTMtMjAxNiBUaGUgS2hyb25vcyBHcm91cCBJbmMuCiAqKgogKiogUGVy
bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g
b2J0YWluaW5nIGEKICoqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQvb3IgYXNzb2NpYXRlZCBk
b2N1bWVudGF0aW9uIGZpbGVzICh0aGUKQEAgLTMzLDE0ICszMywxNCBAQCBleHRlcm4gIkMiIHsK
ICoqIHVzZWQgdG8gbWFrZSB0aGUgaGVhZGVyLCBhbmQgdGhlIGhlYWRlciBjYW4gYmUgZm91bmQg
YXQKICoqICAgaHR0cDovL3d3dy5vcGVuZ2wub3JnL3JlZ2lzdHJ5LwogKioKLSoqIEtocm9ub3Mg
JFJldmlzaW9uOiAzMTkwMiAkIG9uICREYXRlOiAyMDE1LTA5LTAzIDE1OjQ0OjUzIC0wNzAwIChU
aHUsIDAzIFNlcCAyMDE1KSAkCisqKiBLaHJvbm9zICRSZXZpc2lvbjogMzMyNjAgJCBvbiAkRGF0
ZTogMjAxNi0xMC0yNyAwMzozODo0NCAtMDcwMCAoVGh1LCAyNyBPY3QgMjAxNikgJAogKi8KIAog
I2lmbmRlZiBHTF9BUElFTlRSWVAKICNkZWZpbmUgR0xfQVBJRU5UUllQIEdMX0FQSUVOVFJZKgog
I2VuZGlmCiAKLS8qIEdlbmVyYXRlZCBvbiBkYXRlIDIwMTUwOTAzICovCisvKiBHZW5lcmF0ZWQg
b24gZGF0ZSAyMDE2MTAyNyAqLwogCiAvKiBHZW5lcmF0ZWQgQyBoZWFkZXIgZm9yOgogICogQVBJ
OiBnbGVzMgpAQCAtNTIsNiArNTIsMTAgQEAgZXh0ZXJuICJDIiB7CiAgKiBFeHRlbnNpb25zIHJl
bW92ZWQ6IF9ub21hdGNoX14KICAqLwogCisjaWZuZGVmIEdMX0FSQl9zcGFyc2VfdGV4dHVyZTIK
KyNkZWZpbmUgR0xfQVJCX3NwYXJzZV90ZXh0dXJlMiAxCisjZW5kaWYgLyogR0xfQVJCX3NwYXJz
ZV90ZXh0dXJlMiAqLworCiAjaWZuZGVmIEdMX0tIUl9ibGVuZF9lcXVhdGlvbl9hZHZhbmNlZAog
I2RlZmluZSBHTF9LSFJfYmxlbmRfZXF1YXRpb25fYWR2YW5jZWQgMQogI2RlZmluZSBHTF9NVUxU
SVBMWV9LSFIgICAgICAgICAgICAgICAgICAgMHg5Mjk0CkBAIC0yMjUsNiArMjI5LDEwIEBAIEdM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldG5Vbmlmb3JtdWl2S0hSIChHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sCiAjZGVmaW5lIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9u
X2FzdGNfbGRyIDEKICNlbmRpZiAvKiBHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xk
ciAqLwogCisjaWZuZGVmIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfc2xpY2VkXzNk
CisjZGVmaW5lIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfc2xpY2VkXzNkIDEKKyNl
bmRpZiAvKiBHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX3NsaWNlZF8zZCAqLworCiAj
aWZuZGVmIEdMX09FU19FR0xfaW1hZ2UKICNkZWZpbmUgR0xfT0VTX0VHTF9pbWFnZSAxCiB0eXBl
ZGVmIHZvaWQgKkdMZWdsSW1hZ2VPRVM7CkBAIC03NDgsNiArNzU2LDM0IEBAIEdMX0FQSUNBTEwg
R0xib29sZWFuIEdMX0FQSUVOVFJZIGdsSXNWZXJ0ZXhBcnJheU9FUyAoR0x1aW50IGFycmF5KTsK
ICNkZWZpbmUgR0xfSU5UXzEwXzEwXzEwXzJfT0VTICAgICAgICAgICAgIDB4OERGNwogI2VuZGlm
IC8qIEdMX09FU192ZXJ0ZXhfdHlwZV8xMF8xMF8xMF8yICovCiAKKyNpZm5kZWYgR0xfT0VTX3Zp
ZXdwb3J0X2FycmF5CisjZGVmaW5lIEdMX09FU192aWV3cG9ydF9hcnJheSAxCisjZGVmaW5lIEdM
X01BWF9WSUVXUE9SVFNfT0VTICAgICAgICAgICAgICAweDgyNUIKKyNkZWZpbmUgR0xfVklFV1BP
UlRfU1VCUElYRUxfQklUU19PRVMgICAgIDB4ODI1QworI2RlZmluZSBHTF9WSUVXUE9SVF9CT1VO
RFNfUkFOR0VfT0VTICAgICAgMHg4MjVECisjZGVmaW5lIEdMX1ZJRVdQT1JUX0lOREVYX1BST1ZP
S0lOR19WRVJURVhfT0VTIDB4ODI1RgordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xW
SUVXUE9SVEFSUkFZVk9FU1BST0MpIChHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMZmxvYXQgKnYpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xWSUVXUE9SVElO
REVYRURGT0VTUFJPQykgKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxv
YXQgdywgR0xmbG9hdCBoKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVklFV1BP
UlRJTkRFWEVERlZPRVNQUk9DKSAoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU0NJU1NPUkFSUkFZVk9FU1BST0MpIChHTHVp
bnQgZmlyc3QsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KTsKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMU0NJU1NPUklOREVYRURPRVNQUk9DKSAoR0x1aW50IGluZGV4LCBH
TGludCBsZWZ0LCBHTGludCBib3R0b20sIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMU0NJU1NPUklOREVYRURWT0VTUFJPQykg
KEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQgKnYpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xERVBUSFJBTkdFQVJSQVlGVk9FU1BST0MpIChHTHVpbnQgZmlyc3QsIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMZmxvYXQgKnYpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZO
R0xERVBUSFJBTkdFSU5ERVhFREZPRVNQUk9DKSAoR0x1aW50IGluZGV4LCBHTGZsb2F0IG4sIEdM
ZmxvYXQgZik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEZMT0FUSV9WT0VT
UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xmbG9hdCAqZGF0YSk7CisjaWZk
ZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVmll
d3BvcnRBcnJheXZPRVMgKEdMdWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9h
dCAqdik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWaWV3cG9ydEluZGV4ZWRmT0VT
IChHTHVpbnQgaW5kZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHcsIEdMZmxvYXQg
aCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWaWV3cG9ydEluZGV4ZWRmdk9FUyAo
R0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbFNjaXNzb3JBcnJheXZPRVMgKEdMdWludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xpbnQgKnYpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU2Npc3NvckluZGV4
ZWRPRVMgKEdMdWludCBpbmRleCwgR0xpbnQgbGVmdCwgR0xpbnQgYm90dG9tLCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xTY2lz
c29ySW5kZXhlZHZPRVMgKEdMdWludCBpbmRleCwgY29uc3QgR0xpbnQgKnYpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVwdGhSYW5nZUFycmF5ZnZPRVMgKEdMdWludCBmaXJzdCwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xEZXB0aFJhbmdlSW5kZXhlZGZPRVMgKEdMdWludCBpbmRleCwgR0xmbG9hdCBuLCBH
TGZsb2F0IGYpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0RmxvYXRpX3ZPRVMg
KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xmbG9hdCAqZGF0YSk7CisjZW5kaWYKKyNl
bmRpZiAvKiBHTF9PRVNfdmlld3BvcnRfYXJyYXkgKi8KKwogI2lmbmRlZiBHTF9BTURfY29tcHJl
c3NlZF8zRENfdGV4dHVyZQogI2RlZmluZSBHTF9BTURfY29tcHJlc3NlZF8zRENfdGV4dHVyZSAx
CiAjZGVmaW5lIEdMXzNEQ19YX0FNRCAgICAgICAgICAgICAgICAgICAgICAweDg3RjkKQEAgLTgw
NSw2ICs4NDEsMTEgQEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGVyZk1vbml0
b3JDb3VudGVyRGF0YUFNRCAoR0x1aW50IG1vbml0b3IsIEdMZW4KICNkZWZpbmUgR0xfQU5EUk9J
RF9leHRlbnNpb25fcGFja19lczMxYSAxCiAjZW5kaWYgLyogR0xfQU5EUk9JRF9leHRlbnNpb25f
cGFja19lczMxYSAqLwogCisjaWZuZGVmIEdMX0FOR0xFX2NsaWVudF9hcnJheXMKKyNkZWZpbmUg
R0xfQU5HTEVfY2xpZW50X2FycmF5cyAxCisjZGVmaW5lIEdMX0NMSUVOVF9BUlJBWVNfQU5HTEUg
MHg5M0FBCisjZW5kaWYgLyogR0xfQU5HTEVfY2xpZW50X2FycmF5cyAqLworCiAjaWZuZGVmIEdM
X0FOR0xFX2RlcHRoX3RleHR1cmUKICNkZWZpbmUgR0xfQU5HTEVfZGVwdGhfdGV4dHVyZSAxCiAj
ZW5kaWYgLyogR0xfQU5HTEVfZGVwdGhfdGV4dHVyZSAqLwpAQCAtODIxLDE0ICs4NjIsMjEgQEAg
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUgKEdMaW50
IHNyY1gwLCBHTGludCBzcmNZMCwgR0wKICNlbmRpZgogI2VuZGlmIC8qIEdMX0FOR0xFX2ZyYW1l
YnVmZmVyX2JsaXQgKi8KIAotI2lmbmRlZiBHTF9BTkdMRV93ZWJnbF9jb21wYXRpYmlsaXR5Ci0j
ZGVmaW5lIEdMX0FOR0xFX3dlYmdsX2NvbXBhdGliaWxpdHkgMQotdHlwZWRlZiBHTGJvb2xlYW4o
R0xfQVBJRU5UUllQIFBGTkdMRU5BQkxFRVhURU5TSU9OQU5HTEVQUk9DKSAoY29uc3QgR0xjaGFy
ICpuYW1lKTsKKyNpZm5kZWYgR0xfQU5HTEVfcmVxdWVzdF9leHRlbnNpb24KKyNkZWZpbmUgR0xf
QU5HTEVfcmVxdWVzdF9leHRlbnNpb24gMQorI2RlZmluZSBHTF9SRVFVRVNUQUJMRV9FWFRFTlNJ
T05TX0FOR0xFICAgMHg5M0E4CisjZGVmaW5lIEdMX05VTV9SRVFVRVNUQUJMRV9FWFRFTlNJT05T
X0FOR0xFIDB4OTNBOAordHlwZWRlZiBHTGJvb2xlYW4oR0xfQVBJRU5UUllQIFBGTkdMUkVRVUVT
VEVYVEVOU0lPTkFOR0xFUFJPQykgKGNvbnN0IEdMY2hhciAqbmFtZSk7CiAjaWZkZWYgR0xfR0xF
WFRfUFJPVE9UWVBFUwotR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xFbmFibGVF
eHRlbnNpb25BTkdMRSAoY29uc3QgR0xjaGFyICpuYW1lKTsKK0dMX0FQSUNBTEwgR0xib29sZWFu
IEdMX0FQSUVOVFJZIGdsUmVxdWVzdEV4dGVuc2lvbkFOR0xFIChjb25zdCBHTGNoYXIgKm5hbWUp
OwogI2VuZGlmCiAjZW5kaWYgLyogR0xfQU5HTEVfd2ViZ2xfY29tcGF0aWJpbGl0eSAqLwogCisj
aWZuZGVmIEdMX0FOR0xFX3JvYnVzdF9yZXNvdXJjZV9pbml0aWFsaXphdGlvbgorI2RlZmluZSBH
TF9BTkdMRV9yb2J1c3RfcmVzb3VyY2VfaW5pdGlhbGl6YXRpb24gMQorI2RlZmluZSBHTF9DT05U
RVhUX1JPQlVTVF9SRVNPVVJDRV9JTklUSUFMSVpBVElPTl9BTkdMRSAweDkzQTcKKyNlbmRpZiAv
KiBHTF9BTkdMRV9yb2J1c3RfcmVzb3VyY2VfaW5pdGlhbGl6YXRpb24gKi8KKwogI2lmbmRlZiBH
TF9DSFJPTUlVTV9mcmFtZWJ1ZmZlcl9taXhlZF9zYW1wbGVzCiAjZGVmaW5lIEdMX0NIUk9NSVVN
X2ZyYW1idWZmZXJfbWl4ZWRfc2FtcGxlcyAxCiAjZGVmaW5lIEdMX0NPVkVSQUdFX01PRFVMQVRJ
T05fQ0hST01JVU0gMHg5MzMyCkBAIC0xMjc3LDE0ICsxMzI1LDIwIEBAIEdMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbEdldFN5bmNpdkFQUExFIChHTHN5bmMgc3luYywgR0xlbnVtIHBuYW1l
LCBHTHNpemVpCiAjaWZuZGVmIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVyZQogI2RlZmluZSBHTF9D
SFJPTUlVTV9jb3B5X3RleHR1cmUgMQogdHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTENP
UFlURVhUVVJFQ0hST01JVU1QUk9DKShHTHVpbnQgc291cmNlSWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNvdXJjZUxldmVs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZGVzdFRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZGVzdExldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrRmxpcFks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrVW5tdWx0
aXBseUFscGhhKTsKIHR5cGVkZWYgdm9pZChHTF9BUElFTlRSWVAgUEZOR0xDT1BZU1VCVEVYVFVS
RUNIUk9NSVVNUFJPQykoR0x1aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzb3VyY2VMZXZlbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGRlc3RUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBkZXN0SWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRlc3RMZXZlbCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeG9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKQEAgLTEyOTYs
MTQgKzEzNTAsMjAgQEAgdHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTENPUFlTVUJURVhU
VVJFQ0hST01JVU1QUk9DKShHTHVpbnQgc291cmNlSWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tVbm11
bHRpcGx5QWxwaGEpOwogI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKIEdMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbENvcHlUZXh0dXJlQ0hST01JVU0oR0x1aW50IHNvdXJjZUlkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzb3Vy
Y2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGRlc3RUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBkZXN0SWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRlc3RMZXZlbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBkZXN0VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xib29sZWFuIHVucGFja0ZsaXBZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHVucGFja1VubXVsdGlwbHlBbHBoYSk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKEdMdWludCBzb3VyY2VJZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc291cmNlTGV2ZWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBkZXN0VGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgZGVzdElkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkZXN0TGV2ZWwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHlvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHgsCkBAIC0xNDAyLDYgKzE0NjIsMzEgQEAgR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsQnVmZmVyU3RvcmFnZUVYVCAoR0xlbnVtIHRhcmdldCwgR0xzaXplaXB0ciBz
aXplLAogI2VuZGlmCiAjZW5kaWYgLyogR0xfRVhUX2J1ZmZlcl9zdG9yYWdlICovCiAKKyNpZm5k
ZWYgR0xfRVhUX2NsZWFyX3RleHR1cmUKKyNkZWZpbmUgR0xfRVhUX2NsZWFyX3RleHR1cmUgMQor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDTEVBUlRFWElNQUdFRVhUUFJPQykgKEdM
dWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNv
bnN0IHZvaWQgKmRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDTEVBUlRF
WFNVQklNQUdFRVhUUFJPQykgKEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xpbnQgeG9m
ZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXpl
aSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25z
dCB2b2lkICpkYXRhKTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xDbGVhclRleEltYWdlRVhUIChHTHVpbnQgdGV4dHVyZSwgR0xpbnQg
bGV2ZWwsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpkYXRhKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENsZWFyVGV4U3ViSW1hZ2VFWFQgKEdMdWludCB0
ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQg
em9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdM
ZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpkYXRhKTsKKyNlbmRpZgorI2Vu
ZGlmIC8qIEdMX0VYVF9jbGVhcl90ZXh0dXJlICovCisKKyNpZm5kZWYgR0xfRVhUX2NsaXBfY3Vs
bF9kaXN0YW5jZQorI2RlZmluZSBHTF9FWFRfY2xpcF9jdWxsX2Rpc3RhbmNlIDEKKyNkZWZpbmUg
R0xfTUFYX0NMSVBfRElTVEFOQ0VTX0VYVCAgICAgICAgIDB4MEQzMgorI2RlZmluZSBHTF9NQVhf
Q1VMTF9ESVNUQU5DRVNfRVhUICAgICAgICAgMHg4MkY5CisjZGVmaW5lIEdMX01BWF9DT01CSU5F
RF9DTElQX0FORF9DVUxMX0RJU1RBTkNFU19FWFQgMHg4MkZBCisjZGVmaW5lIEdMX0NMSVBfRElT
VEFOQ0UwX0VYVCAgICAgICAgICAgICAweDMwMDAKKyNkZWZpbmUgR0xfQ0xJUF9ESVNUQU5DRTFf
RVhUICAgICAgICAgICAgIDB4MzAwMQorI2RlZmluZSBHTF9DTElQX0RJU1RBTkNFMl9FWFQgICAg
ICAgICAgICAgMHgzMDAyCisjZGVmaW5lIEdMX0NMSVBfRElTVEFOQ0UzX0VYVCAgICAgICAgICAg
ICAweDMwMDMKKyNkZWZpbmUgR0xfQ0xJUF9ESVNUQU5DRTRfRVhUICAgICAgICAgICAgIDB4MzAw
NAorI2RlZmluZSBHTF9DTElQX0RJU1RBTkNFNV9FWFQgICAgICAgICAgICAgMHgzMDA1CisjZGVm
aW5lIEdMX0NMSVBfRElTVEFOQ0U2X0VYVCAgICAgICAgICAgICAweDMwMDYKKyNkZWZpbmUgR0xf
Q0xJUF9ESVNUQU5DRTdfRVhUICAgICAgICAgICAgIDB4MzAwNworI2VuZGlmIC8qIEdMX0VYVF9j
bGlwX2N1bGxfZGlzdGFuY2UgKi8KKwogI2lmbmRlZiBHTF9FWFRfY29sb3JfYnVmZmVyX2Zsb2F0
CiAjZGVmaW5lIEdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQgMQogI2VuZGlmIC8qIEdMX0VYVF9j
b2xvcl9idWZmZXJfZmxvYXQgKi8KQEAgLTE0MTYsNiArMTUwMSwxMCBAQCBHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xCdWZmZXJTdG9yYWdlRVhUIChHTGVudW0gdGFyZ2V0LCBHTHNpemVp
cHRyIHNpemUsCiAjZGVmaW5lIEdMX1VOU0lHTkVEX05PUk1BTElaRURfRVhUICAgICAgICAweDhD
MTcKICNlbmRpZiAvKiBHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQgKi8KIAorI2lmbmRl
ZiBHTF9FWFRfY29uc2VydmF0aXZlX2RlcHRoCisjZGVmaW5lIEdMX0VYVF9jb25zZXJ2YXRpdmVf
ZGVwdGggMQorI2VuZGlmIC8qIEdMX0VYVF9jb25zZXJ2YXRpdmVfZGVwdGggKi8KKwogI2lmbmRl
ZiBHTF9FWFRfY29weV9pbWFnZQogI2RlZmluZSBHTF9FWFRfY29weV9pbWFnZSAxCiB0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPUFlJTUFHRVNVQkRBVEFFWFRQUk9DKSAoR0x1aW50
IHNyY05hbWUsIEdMZW51bSBzcmNUYXJnZXQsIEdMaW50IHNyY0xldmVsLCBHTGludCBzcmNYLCBH
TGludCBzcmNZLCBHTGludCBzcmNaLCBHTHVpbnQgZHN0TmFtZSwgR0xlbnVtIGRzdFRhcmdldCwg
R0xpbnQgZHN0TGV2ZWwsIEdMaW50IGRzdFgsIEdMaW50IGRzdFksIEdMaW50IGRzdFosIEdMc2l6
ZWkgc3JjV2lkdGgsIEdMc2l6ZWkgc3JjSGVpZ2h0LCBHTHNpemVpIHNyY0RlcHRoKTsKQEAgLTE1
ODcsNiArMTY3NiwxNiBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3RWxlbWVu
dHNJbnN0YW5jZWRFWFQgKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdQogI2VuZGlmCiAjZW5kaWYg
LyogR0xfRVhUX2RyYXdfaW5zdGFuY2VkICovCiAKKyNpZm5kZWYgR0xfRVhUX2RyYXdfdHJhbnNm
b3JtX2ZlZWRiYWNrCisjZGVmaW5lIEdMX0VYVF9kcmF3X3RyYW5zZm9ybV9mZWVkYmFjayAxCit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERSQVdUUkFOU0ZPUk1GRUVEQkFDS0VYVFBS
T0MpIChHTGVudW0gbW9kZSwgR0x1aW50IGlkKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMRFJBV1RSQU5TRk9STUZFRURCQUNLSU5TVEFOQ0VERVhUUFJPQykgKEdMZW51bSBtb2Rl
LCBHTHVpbnQgaWQsIEdMc2l6ZWkgaW5zdGFuY2Vjb3VudCk7CisjaWZkZWYgR0xfR0xFWFRfUFJP
VE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRHJhd1RyYW5zZm9ybUZlZWRi
YWNrRVhUIChHTGVudW0gbW9kZSwgR0x1aW50IGlkKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElF
TlRSWSBnbERyYXdUcmFuc2Zvcm1GZWVkYmFja0luc3RhbmNlZEVYVCAoR0xlbnVtIG1vZGUsIEdM
dWludCBpZCwgR0xzaXplaSBpbnN0YW5jZWNvdW50KTsKKyNlbmRpZgorI2VuZGlmIC8qIEdMX0VY
VF9kcmF3X3RyYW5zZm9ybV9mZWVkYmFjayAqLworCiAjaWZuZGVmIEdMX0VYVF9mbG9hdF9ibGVu
ZAogI2RlZmluZSBHTF9FWFRfZmxvYXRfYmxlbmQgMQogI2VuZGlmIC8qIEdMX0VYVF9mbG9hdF9i
bGVuZCAqLwpAQCAtMTcyOCw2ICsxODI3LDE1IEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbEdldEludGVnZXJpX3ZFWFQgKEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpCiAj
ZGVmaW5lIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhUIDB4OEQ2QQogI2Vu
ZGlmIC8qIEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiAqLwogCisjaWZuZGVmIEdMX0VY
VF9wb2x5Z29uX29mZnNldF9jbGFtcAorI2RlZmluZSBHTF9FWFRfcG9seWdvbl9vZmZzZXRfY2xh
bXAgMQorI2RlZmluZSBHTF9QT0xZR09OX09GRlNFVF9DTEFNUF9FWFQgICAgICAgMHg4RTFCCit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBPTFlHT05PRkZTRVRDTEFNUEVYVFBST0Mp
IChHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cywgR0xmbG9hdCBjbGFtcCk7CisjaWZkZWYg
R0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUG9seWdv
bk9mZnNldENsYW1wRVhUIChHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1bml0cywgR0xmbG9hdCBj
bGFtcCk7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9FWFRfcG9seWdvbl9vZmZzZXRfY2xhbXAgKi8K
KwogI2lmbmRlZiBHTF9FWFRfcG9zdF9kZXB0aF9jb3ZlcmFnZQogI2RlZmluZSBHTF9FWFRfcG9z
dF9kZXB0aF9jb3ZlcmFnZSAxCiAjZW5kaWYgLyogR0xfRVhUX3Bvc3RfZGVwdGhfY292ZXJhZ2Ug
Ki8KQEAgLTE3NDEsNiArMTg0OSwxMiBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQ
cmltaXRpdmVCb3VuZGluZ0JveEVYVCAoR0xmbG9hdCBtaW5YLCBHTGZsb2F0IG1pbgogI2VuZGlm
CiAjZW5kaWYgLyogR0xfRVhUX3ByaW1pdGl2ZV9ib3VuZGluZ19ib3ggKi8KIAorI2lmbmRlZiBH
TF9FWFRfcHJvdGVjdGVkX3RleHR1cmVzCisjZGVmaW5lIEdMX0VYVF9wcm90ZWN0ZWRfdGV4dHVy
ZXMgMQorI2RlZmluZSBHTF9DT05URVhUX0ZMQUdfUFJPVEVDVEVEX0NPTlRFTlRfQklUX0VYVCAw
eDAwMDAwMDEwCisjZGVmaW5lIEdMX1RFWFRVUkVfUFJPVEVDVEVEX0VYVCAgICAgICAgICAweDhC
RkEKKyNlbmRpZiAvKiBHTF9FWFRfcHJvdGVjdGVkX3RleHR1cmVzICovCisKICNpZm5kZWYgR0xf
RVhUX3B2cnRjX3NSR0IKICNkZWZpbmUgR0xfRVhUX3B2cnRjX3NSR0IgMQogI2RlZmluZSBHTF9D
T01QUkVTU0VEX1NSR0JfUFZSVENfMkJQUFYxX0VYVCAweDhBNTQKQEAgLTE5MjAsNiArMjAzNCwx
MCBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4
M2Z2RVhUIChHTHVpbnQgcHJvZ3JhbSwgR0xpbgogI2RlZmluZSBHTF9GUkFHTUVOVF9TSEFERVJf
RElTQ0FSRFNfU0FNUExFU19FWFQgMHg4QTUyCiAjZW5kaWYgLyogR0xfRVhUX3NoYWRlcl9mcmFt
ZWJ1ZmZlcl9mZXRjaCAqLwogCisjaWZuZGVmIEdMX0VYVF9zaGFkZXJfZ3JvdXBfdm90ZQorI2Rl
ZmluZSBHTF9FWFRfc2hhZGVyX2dyb3VwX3ZvdGUgMQorI2VuZGlmIC8qIEdMX0VYVF9zaGFkZXJf
Z3JvdXBfdm90ZSAqLworCiAjaWZuZGVmIEdMX0VYVF9zaGFkZXJfaW1wbGljaXRfY29udmVyc2lv
bnMKICNkZWZpbmUgR0xfRVhUX3NoYWRlcl9pbXBsaWNpdF9jb252ZXJzaW9ucyAxCiAjZW5kaWYg
LyogR0xfRVhUX3NoYWRlcl9pbXBsaWNpdF9jb252ZXJzaW9ucyAqLwpAQCAtMTkzMiw2ICsyMDUw
LDEwIEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtTWF0cml4
NHgzZnZFWFQgKEdMdWludCBwcm9ncmFtLCBHTGluCiAjZGVmaW5lIEdMX0VYVF9zaGFkZXJfaW9f
YmxvY2tzIDEKICNlbmRpZiAvKiBHTF9FWFRfc2hhZGVyX2lvX2Jsb2NrcyAqLwogCisjaWZuZGVm
IEdMX0VYVF9zaGFkZXJfbm9uX2NvbnN0YW50X2dsb2JhbF9pbml0aWFsaXplcnMKKyNkZWZpbmUg
R0xfRVhUX3NoYWRlcl9ub25fY29uc3RhbnRfZ2xvYmFsX2luaXRpYWxpemVycyAxCisjZW5kaWYg
LyogR0xfRVhUX3NoYWRlcl9ub25fY29uc3RhbnRfZ2xvYmFsX2luaXRpYWxpemVycyAqLworCiAj
aWZuZGVmIEdMX0VYVF9zaGFkZXJfcGl4ZWxfbG9jYWxfc3RvcmFnZQogI2RlZmluZSBHTF9FWFRf
c2hhZGVyX3BpeGVsX2xvY2FsX3N0b3JhZ2UgMQogI2RlZmluZSBHTF9NQVhfU0hBREVSX1BJWEVM
X0xPQ0FMX1NUT1JBR0VfRkFTVF9TSVpFX0VYVCAweDhGNjMKQEAgLTE5MzksNiArMjA2MSwyMSBA
QCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDR4M2Z2
RVhUIChHTHVpbnQgcHJvZ3JhbSwgR0xpbgogI2RlZmluZSBHTF9TSEFERVJfUElYRUxfTE9DQUxf
U1RPUkFHRV9FWFQgMHg4RjY0CiAjZW5kaWYgLyogR0xfRVhUX3NoYWRlcl9waXhlbF9sb2NhbF9z
dG9yYWdlICovCiAKKyNpZm5kZWYgR0xfRVhUX3NoYWRlcl9waXhlbF9sb2NhbF9zdG9yYWdlMgor
I2RlZmluZSBHTF9FWFRfc2hhZGVyX3BpeGVsX2xvY2FsX3N0b3JhZ2UyIDEKKyNkZWZpbmUgR0xf
TUFYX1NIQURFUl9DT01CSU5FRF9MT0NBTF9TVE9SQUdFX0ZBU1RfU0laRV9FWFQgMHg5NjUwCisj
ZGVmaW5lIEdMX01BWF9TSEFERVJfQ09NQklORURfTE9DQUxfU1RPUkFHRV9TSVpFX0VYVCAweDk2
NTEKKyNkZWZpbmUgR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9JTlNVRkZJQ0lFTlRfU0hBREVS
X0NPTUJJTkVEX0xPQ0FMX1NUT1JBR0VfRVhUIDB4OTY1MgordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xGUkFNRUJVRkZFUlBJWEVMTE9DQUxTVE9SQUdFU0laRUVYVFBST0MpIChHTHVp
bnQgdGFyZ2V0LCBHTHNpemVpIHNpemUpOwordHlwZWRlZiBHTHNpemVpIChHTF9BUElFTlRSWVAg
UEZOR0xHRVRGUkFNRUJVRkZFUlBJWEVMTE9DQUxTVE9SQUdFU0laRUVYVFBST0MpIChHTHVpbnQg
dGFyZ2V0KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ0xFQVJQSVhFTExPQ0FM
U1RPUkFHRVVJRVhUUFJPQykgKEdMc2l6ZWkgb2Zmc2V0LCBHTHNpemVpIG4sIGNvbnN0IEdMdWlu
dCAqdmFsdWVzKTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclBpeGVsTG9jYWxTdG9yYWdlU2l6ZUVYVCAoR0x1aW50
IHRhcmdldCwgR0xzaXplaSBzaXplKTsKK0dMX0FQSUNBTEwgR0xzaXplaSBHTF9BUElFTlRSWSBn
bEdldEZyYW1lYnVmZmVyUGl4ZWxMb2NhbFN0b3JhZ2VTaXplRVhUIChHTHVpbnQgdGFyZ2V0KTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENsZWFyUGl4ZWxMb2NhbFN0b3JhZ2V1aUVY
VCAoR0xzaXplaSBvZmZzZXQsIEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICp2YWx1ZXMpOworI2Vu
ZGlmCisjZW5kaWYgLyogR0xfRVhUX3NoYWRlcl9waXhlbF9sb2NhbF9zdG9yYWdlMiAqLworCiAj
aWZuZGVmIEdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QKICNkZWZpbmUgR0xfRVhUX3NoYWRlcl90
ZXh0dXJlX2xvZCAxCiAjZW5kaWYgLyogR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCAqLwpAQCAt
MjA4Nyw2ICsyMjI0LDE0IEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleEJ1ZmZl
clJhbmdlRVhUIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmCiAjZGVmaW5lIEdMX0NP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhUICAweDgzRjMKICNlbmRpZiAvKiBHTF9FWFRfdGV4
dHVyZV9jb21wcmVzc2lvbl9zM3RjICovCiAKKyNpZm5kZWYgR0xfRVhUX3RleHR1cmVfY29tcHJl
c3Npb25fczN0Y19zcmdiCisjZGVmaW5lIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGNf
c3JnYiAxCisjZGVmaW5lIEdMX0NPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUICAweDhDNEMK
KyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQgMHg4QzRECisj
ZGVmaW5lIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUIDB4OEM0RQorI2Rl
ZmluZSBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVCAweDhDNEYKKyNlbmRp
ZiAvKiBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IgKi8KKwogI2lmbmRlZiBH
TF9FWFRfdGV4dHVyZV9jdWJlX21hcF9hcnJheQogI2RlZmluZSBHTF9FWFRfdGV4dHVyZV9jdWJl
X21hcF9hcnJheSAxCiAjZGVmaW5lIEdMX1RFWFRVUkVfQ1VCRV9NQVBfQVJSQVlfRVhUICAgICAw
eDkwMDkKQEAgLTIyMDQsMTEgKzIzNDksNTcgQEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsVGV4dHVyZVZpZXdFWFQgKEdMdWludCB0ZXh0dXJlLCBHTGVudW0gdGFyZ2V0LCBHTHUKICNk
ZWZpbmUgR0xfVU5QQUNLX1NLSVBfUElYRUxTX0VYVCAgICAgICAgIDB4MENGNAogI2VuZGlmIC8q
IEdMX0VYVF91bnBhY2tfc3ViaW1hZ2UgKi8KIAorI2lmbmRlZiBHTF9FWFRfd2luZG93X3JlY3Rh
bmdsZXMKKyNkZWZpbmUgR0xfRVhUX3dpbmRvd19yZWN0YW5nbGVzIDEKKyNkZWZpbmUgR0xfSU5D
TFVTSVZFX0VYVCAgICAgICAgICAgICAgICAgIDB4OEYxMAorI2RlZmluZSBHTF9FWENMVVNJVkVf
RVhUICAgICAgICAgICAgICAgICAgMHg4RjExCisjZGVmaW5lIEdMX1dJTkRPV19SRUNUQU5HTEVf
RVhUICAgICAgICAgICAweDhGMTIKKyNkZWZpbmUgR0xfV0lORE9XX1JFQ1RBTkdMRV9NT0RFX0VY
VCAgICAgIDB4OEYxMworI2RlZmluZSBHTF9NQVhfV0lORE9XX1JFQ1RBTkdMRVNfRVhUICAgICAg
MHg4RjE0CisjZGVmaW5lIEdMX05VTV9XSU5ET1dfUkVDVEFOR0xFU19FWFQgICAgICAweDhGMTUK
K3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMV0lORE9XUkVDVEFOR0xFU0VYVFBST0Mp
IChHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKmJveCk7CisjaWZkZWYg
R0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsV2luZG93
UmVjdGFuZ2xlc0VYVCAoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICpi
b3gpOworI2VuZGlmCisjZW5kaWYgLyogR0xfRVhUX3dpbmRvd19yZWN0YW5nbGVzICovCisKICNp
Zm5kZWYgR0xfRkpfc2hhZGVyX2JpbmFyeV9HQ0NTTwogI2RlZmluZSBHTF9GSl9zaGFkZXJfYmlu
YXJ5X0dDQ1NPIDEKICNkZWZpbmUgR0xfR0NDU09fU0hBREVSX0JJTkFSWV9GSiAgICAgICAgIDB4
OTI2MAogI2VuZGlmIC8qIEdMX0ZKX3NoYWRlcl9iaW5hcnlfR0NDU08gKi8KIAorI2lmbmRlZiBH
TF9JTUdfYmluZGxlc3NfdGV4dHVyZQorI2RlZmluZSBHTF9JTUdfYmluZGxlc3NfdGV4dHVyZSAx
Cit0eXBlZGVmIEdMdWludDY0IChHTF9BUElFTlRSWVAgUEZOR0xHRVRURVhUVVJFSEFORExFSU1H
UFJPQykgKEdMdWludCB0ZXh0dXJlKTsKK3R5cGVkZWYgR0x1aW50NjQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTEdFVFRFWFRVUkVTQU1QTEVSSEFORExFSU1HUFJPQykgKEdMdWludCB0ZXh0dXJlLCBHTHVp
bnQgc2FtcGxlcik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk1IQU5E
TEVVSTY0SU1HUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQ2NCB2YWx1ZSk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk1IQU5ETEVVSTY0VklNR1BST0MpIChHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50NjQgKnZhbHVlKTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk1IQU5ETEVVSTY0SU1HUFJP
QykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50NjQgdmFsdWUpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STUhBTkRMRVVJNjRWSU1H
UFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0x1aW50NjQgKnZhbHVlcyk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJ
Q0FMTCBHTHVpbnQ2NCBHTF9BUElFTlRSWSBnbEdldFRleHR1cmVIYW5kbGVJTUcgKEdMdWludCB0
ZXh0dXJlKTsKK0dMX0FQSUNBTEwgR0x1aW50NjQgR0xfQVBJRU5UUlkgZ2xHZXRUZXh0dXJlU2Ft
cGxlckhhbmRsZUlNRyAoR0x1aW50IHRleHR1cmUsIEdMdWludCBzYW1wbGVyKTsKK0dMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm1IYW5kbGV1aTY0SU1HIChHTGludCBsb2NhdGlv
biwgR0x1aW50NjQgdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9y
bUhhbmRsZXVpNjR2SU1HIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1
aW50NjQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlm
b3JtSGFuZGxldWk2NElNRyAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQ2
NCB2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybUhh
bmRsZXVpNjR2SU1HIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIGNvbnN0IEdMdWludDY0ICp2YWx1ZXMpOworI2VuZGlmCisjZW5kaWYgLyogR0xfSU1HX2Jp
bmRsZXNzX3RleHR1cmUgKi8KKworI2lmbmRlZiBHTF9JTUdfZnJhbWVidWZmZXJfZG93bnNhbXBs
ZQorI2RlZmluZSBHTF9JTUdfZnJhbWVidWZmZXJfZG93bnNhbXBsZSAxCisjZGVmaW5lIEdMX0ZS
QU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfQU5EX0RPV05TQU1QTEVfSU1HIDB4OTEz
QworI2RlZmluZSBHTF9OVU1fRE9XTlNBTVBMRV9TQ0FMRVNfSU1HICAgICAgMHg5MTNECisjZGVm
aW5lIEdMX0RPV05TQU1QTEVfU0NBTEVTX0lNRyAgICAgICAgICAweDkxM0UKKyNkZWZpbmUgR0xf
RlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX1NDQUxFX0lNRyAweDkxM0YKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRlJBTUVCVUZGRVJURVhUVVJFMkRET1dOU0FNUExFSU1H
UFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0
LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwsIEdMaW50IHhzY2FsZSwgR0xpbnQgeXNjYWxl
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRlJBTUVCVUZGRVJURVhUVVJFTEFZ
RVJET1dOU0FNUExFSU1HUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBH
THVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwsIEdMaW50IGxheWVyLCBHTGludCB4c2NhbGUsIEdM
aW50IHlzY2FsZSk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsRnJhbWVidWZmZXJUZXh0dXJlMkREb3duc2FtcGxlSU1HIChHTGVudW0g
dGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHRleHRhcmdldCwgR0x1aW50IHRleHR1
cmUsIEdMaW50IGxldmVsLCBHTGludCB4c2NhbGUsIEdMaW50IHlzY2FsZSk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllckRvd25zYW1wbGVJTUcg
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQg
bGV2ZWwsIEdMaW50IGxheWVyLCBHTGludCB4c2NhbGUsIEdMaW50IHlzY2FsZSk7CisjZW5kaWYK
KyNlbmRpZiAvKiBHTF9JTUdfZnJhbWVidWZmZXJfZG93bnNhbXBsZSAqLworCiAjaWZuZGVmIEdM
X0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUKICNkZWZpbmUgR0xfSU1HX211bHRp
c2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSAxCiAjZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9TQU1Q
TEVTX0lNRyAgICAgICAweDkxMzMKQEAgLTIyNTMsNiArMjQ0NCwxOCBAQCBHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlSU1HIChHTGVu
dW0gdGFyZ2V0LAogI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfUFZSVENfNEJQUFYyX0lNRyAw
eDkxMzgKICNlbmRpZiAvKiBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YzIgKi8KIAor
I2lmbmRlZiBHTF9JTUdfdGV4dHVyZV9maWx0ZXJfY3ViaWMKKyNkZWZpbmUgR0xfSU1HX3RleHR1
cmVfZmlsdGVyX2N1YmljIDEKKyNkZWZpbmUgR0xfQ1VCSUNfSU1HICAgICAgICAgICAgICAgICAg
ICAgIDB4OTEzOQorI2RlZmluZSBHTF9DVUJJQ19NSVBNQVBfTkVBUkVTVF9JTUcgICAgICAgMHg5
MTNBCisjZGVmaW5lIEdMX0NVQklDX01JUE1BUF9MSU5FQVJfSU1HICAgICAgICAweDkxM0IKKyNl
bmRpZiAvKiBHTF9JTUdfdGV4dHVyZV9maWx0ZXJfY3ViaWMgKi8KKworI2lmbmRlZiBHTF9JTlRF
TF9jb25zZXJ2YXRpdmVfcmFzdGVyaXphdGlvbgorI2RlZmluZSBHTF9JTlRFTF9jb25zZXJ2YXRp
dmVfcmFzdGVyaXphdGlvbiAxCisjZGVmaW5lIEdMX0NPTlNFUlZBVElWRV9SQVNURVJJWkFUSU9O
X0lOVEVMIDB4ODNGRQorI2VuZGlmIC8qIEdMX0lOVEVMX2NvbnNlcnZhdGl2ZV9yYXN0ZXJpemF0
aW9uICovCisKICNpZm5kZWYgR0xfSU5URUxfZnJhbWVidWZmZXJfQ01BQQogI2RlZmluZSBHTF9J
TlRFTF9mcmFtZWJ1ZmZlcl9DTUFBIDEKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
QVBQTFlGUkFNRUJVRkZFUkFUVEFDSE1FTlRDTUFBSU5URUxQUk9DKSAodm9pZCk7CkBAIC0yNDI5
LDYgKzI2MzIsMTcgQEAgR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3VicGl4ZWxQcmVj
aXNpb25CaWFzTlYgKEdMdWludCB4Yml0cywgR0x1aW50IHliaXQKICNlbmRpZgogI2VuZGlmIC8q
IEdMX05WX2NvbnNlcnZhdGl2ZV9yYXN0ZXIgKi8KIAorI2lmbmRlZiBHTF9OVl9jb25zZXJ2YXRp
dmVfcmFzdGVyX3ByZV9zbmFwX3RyaWFuZ2xlcworI2RlZmluZSBHTF9OVl9jb25zZXJ2YXRpdmVf
cmFzdGVyX3ByZV9zbmFwX3RyaWFuZ2xlcyAxCisjZGVmaW5lIEdMX0NPTlNFUlZBVElWRV9SQVNU
RVJfTU9ERV9OViAgICAweDk1NEQKKyNkZWZpbmUgR0xfQ09OU0VSVkFUSVZFX1JBU1RFUl9NT0RF
X1BPU1RfU05BUF9OViAweDk1NEUKKyNkZWZpbmUgR0xfQ09OU0VSVkFUSVZFX1JBU1RFUl9NT0RF
X1BSRV9TTkFQX1RSSUFOR0xFU19OViAweDk1NEYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQ
IFBGTkdMQ09OU0VSVkFUSVZFUkFTVEVSUEFSQU1FVEVSSU5WUFJPQykgKEdMZW51bSBwbmFtZSwg
R0xpbnQgcGFyYW0pOworI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbENvbnNlcnZhdGl2ZVJhc3RlclBhcmFtZXRlcmlOViAoR0xlbnVtIHBu
YW1lLCBHTGludCBwYXJhbSk7CisjZW5kaWYKKyNlbmRpZiAvKiBHTF9OVl9jb25zZXJ2YXRpdmVf
cmFzdGVyX3ByZV9zbmFwX3RyaWFuZ2xlcyAqLworCiAjaWZuZGVmIEdMX05WX2NvcHlfYnVmZmVy
CiAjZGVmaW5lIEdMX05WX2NvcHlfYnVmZmVyIDEKICNkZWZpbmUgR0xfQ09QWV9SRUFEX0JVRkZF
Ul9OViAgICAgICAgICAgIDB4OEYzNgpAQCAtMjYxNiw2ICsyODMwLDEwOSBAQCBHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVOViAoR0xl
bnVtIHRhcmdldCwgRwogI2RlZmluZSBHTF9OVl9nZW9tZXRyeV9zaGFkZXJfcGFzc3Rocm91Z2gg
MQogI2VuZGlmIC8qIEdMX05WX2dlb21ldHJ5X3NoYWRlcl9wYXNzdGhyb3VnaCAqLwogCisjaWZu
ZGVmIEdMX05WX2dwdV9zaGFkZXI1CisjZGVmaW5lIEdMX05WX2dwdV9zaGFkZXI1IDEKK3R5cGVk
ZWYga2hyb25vc19pbnQ2NF90IEdMaW50NjRFWFQ7Cit0eXBlZGVmIGtocm9ub3NfdWludDY0X3Qg
R0x1aW50NjRFWFQ7CisjZGVmaW5lIEdMX0lOVDY0X05WICAgICAgICAgICAgICAgICAgICAgICAw
eDE0MEUKKyNkZWZpbmUgR0xfVU5TSUdORURfSU5UNjRfTlYgICAgICAgICAgICAgIDB4MTQwRgor
I2RlZmluZSBHTF9JTlQ4X05WICAgICAgICAgICAgICAgICAgICAgICAgMHg4RkUwCisjZGVmaW5l
IEdMX0lOVDhfVkVDMl9OViAgICAgICAgICAgICAgICAgICAweDhGRTEKKyNkZWZpbmUgR0xfSU5U
OF9WRUMzX05WICAgICAgICAgICAgICAgICAgIDB4OEZFMgorI2RlZmluZSBHTF9JTlQ4X1ZFQzRf
TlYgICAgICAgICAgICAgICAgICAgMHg4RkUzCisjZGVmaW5lIEdMX0lOVDE2X05WICAgICAgICAg
ICAgICAgICAgICAgICAweDhGRTQKKyNkZWZpbmUgR0xfSU5UMTZfVkVDMl9OViAgICAgICAgICAg
ICAgICAgIDB4OEZFNQorI2RlZmluZSBHTF9JTlQxNl9WRUMzX05WICAgICAgICAgICAgICAgICAg
MHg4RkU2CisjZGVmaW5lIEdMX0lOVDE2X1ZFQzRfTlYgICAgICAgICAgICAgICAgICAweDhGRTcK
KyNkZWZpbmUgR0xfSU5UNjRfVkVDMl9OViAgICAgICAgICAgICAgICAgIDB4OEZFOQorI2RlZmlu
ZSBHTF9JTlQ2NF9WRUMzX05WICAgICAgICAgICAgICAgICAgMHg4RkVBCisjZGVmaW5lIEdMX0lO
VDY0X1ZFQzRfTlYgICAgICAgICAgICAgICAgICAweDhGRUIKKyNkZWZpbmUgR0xfVU5TSUdORURf
SU5UOF9OViAgICAgICAgICAgICAgIDB4OEZFQworI2RlZmluZSBHTF9VTlNJR05FRF9JTlQ4X1ZF
QzJfTlYgICAgICAgICAgMHg4RkVECisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVDhfVkVDM19OViAg
ICAgICAgICAweDhGRUUKKyNkZWZpbmUgR0xfVU5TSUdORURfSU5UOF9WRUM0X05WICAgICAgICAg
IDB4OEZFRgorI2RlZmluZSBHTF9VTlNJR05FRF9JTlQxNl9OViAgICAgICAgICAgICAgMHg4RkYw
CisjZGVmaW5lIEdMX1VOU0lHTkVEX0lOVDE2X1ZFQzJfTlYgICAgICAgICAweDhGRjEKKyNkZWZp
bmUgR0xfVU5TSUdORURfSU5UMTZfVkVDM19OViAgICAgICAgIDB4OEZGMgorI2RlZmluZSBHTF9V
TlNJR05FRF9JTlQxNl9WRUM0X05WICAgICAgICAgMHg4RkYzCisjZGVmaW5lIEdMX1VOU0lHTkVE
X0lOVDY0X1ZFQzJfTlYgICAgICAgICAweDhGRjUKKyNkZWZpbmUgR0xfVU5TSUdORURfSU5UNjRf
VkVDM19OViAgICAgICAgIDB4OEZGNgorI2RlZmluZSBHTF9VTlNJR05FRF9JTlQ2NF9WRUM0X05W
ICAgICAgICAgMHg4RkY3CisjZGVmaW5lIEdMX0ZMT0FUMTZfTlYgICAgICAgICAgICAgICAgICAg
ICAweDhGRjgKKyNkZWZpbmUgR0xfRkxPQVQxNl9WRUMyX05WICAgICAgICAgICAgICAgIDB4OEZG
OQorI2RlZmluZSBHTF9GTE9BVDE2X1ZFQzNfTlYgICAgICAgICAgICAgICAgMHg4RkZBCisjZGVm
aW5lIEdMX0ZMT0FUMTZfVkVDNF9OViAgICAgICAgICAgICAgICAweDhGRkIKKyNkZWZpbmUgR0xf
UEFUQ0hFUyAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwRQordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xVTklGT1JNMUk2NE5WUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTGludDY0
RVhUIHgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNMkk2NE5WUFJP
QykgKEdMaW50IGxvY2F0aW9uLCBHTGludDY0RVhUIHgsIEdMaW50NjRFWFQgeSk7Cit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZPUk0zSTY0TlZQUk9DKSAoR0xpbnQgbG9jYXRp
b24sIEdMaW50NjRFWFQgeCwgR0xpbnQ2NEVYVCB5LCBHTGludDY0RVhUIHopOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNNEk2NE5WUFJPQykgKEdMaW50IGxvY2F0aW9u
LCBHTGludDY0RVhUIHgsIEdMaW50NjRFWFQgeSwgR0xpbnQ2NEVYVCB6LCBHTGludDY0RVhUIHcp
OwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNMUk2NFZOVlBST0MpIChH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQ2NEVYVCAqdmFsdWUpOwor
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNMkk2NFZOVlBST0MpIChHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQ2NEVYVCAqdmFsdWUpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNM0k2NFZOVlBST0MpIChHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQ2NEVYVCAqdmFsdWUpOwordHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNNEk2NFZOVlBST0MpIChHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQ2NEVYVCAqdmFsdWUpOwordHlwZWRlZiB2
b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNMVVJNjROVlBST0MpIChHTGludCBsb2NhdGlv
biwgR0x1aW50NjRFWFQgeCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVOSUZP
Uk0yVUk2NE5WUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHVpbnQ2NEVYVCB4LCBHTHVpbnQ2NEVY
VCB5KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVU5JRk9STTNVSTY0TlZQUk9D
KSAoR0xpbnQgbG9jYXRpb24sIEdMdWludDY0RVhUIHgsIEdMdWludDY0RVhUIHksIEdMdWludDY0
RVhUIHopOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xVTklGT1JNNFVJNjROVlBS
T0MpIChHTGludCBsb2NhdGlvbiwgR0x1aW50NjRFWFQgeCwgR0x1aW50NjRFWFQgeSwgR0x1aW50
NjRFWFQgeiwgR0x1aW50NjRFWFQgdyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TFVOSUZPUk0xVUk2NFZOVlBST0MpIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0x1aW50NjRFWFQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdM
VU5JRk9STTJVSTY0Vk5WUFJPQykgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTHVpbnQ2NEVYVCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xV
TklGT1JNM1VJNjRWTlZQUk9DKSAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMdWludDY0RVhUICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFVO
SUZPUk00VUk2NFZOVlBST0MpIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0x1aW50NjRFWFQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VU
VU5JRk9STUk2NFZOVlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50
NjRFWFQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1V
TklGT1JNMUk2NE5WUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQ2
NEVYVCB4KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk0y
STY0TlZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludDY0RVhUIHgs
IEdMaW50NjRFWFQgeSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1V
TklGT1JNM0k2NE5WUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQ2
NEVYVCB4LCBHTGludDY0RVhUIHksIEdMaW50NjRFWFQgeik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNNEk2NE5WUFJPQykgKEdMdWludCBwcm9ncmFtLCBH
TGludCBsb2NhdGlvbiwgR0xpbnQ2NEVYVCB4LCBHTGludDY0RVhUIHksIEdMaW50NjRFWFQgeiwg
R0xpbnQ2NEVYVCB3KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVO
SUZPUk0xSTY0Vk5WUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xpbnQ2NEVYVCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTJJNjRWTlZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludDY0RVhUICp2YWx1ZSk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNM0k2NFZOVlBST0Mp
IChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
aW50NjRFWFQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JB
TVVOSUZPUk00STY0Vk5WUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0xpbnQ2NEVYVCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTFVSTY0TlZQUk9DKSAoR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBHTHVpbnQ2NEVYVCB4KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMUFJPR1JBTVVOSUZPUk0yVUk2NE5WUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGlu
dCBsb2NhdGlvbiwgR0x1aW50NjRFWFQgeCwgR0x1aW50NjRFWFQgeSk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNM1VJNjROVlBST0MpIChHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludDY0RVhUIHgsIEdMdWludDY0RVhUIHksIEdMdWlu
dDY0RVhUIHopOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9S
TTRVSTY0TlZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVpbnQ2NEVY
VCB4LCBHTHVpbnQ2NEVYVCB5LCBHTHVpbnQ2NEVYVCB6LCBHTHVpbnQ2NEVYVCB3KTsKK3R5cGVk
ZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk0xVUk2NFZOVlBST0MpIChH
THVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWlu
dDY0RVhUICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1V
TklGT1JNMlVJNjRWTlZQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTHVpbnQ2NEVYVCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChHTF9B
UElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTNVSTY0Vk5WUFJPQykgKEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50NjRFWFQgKnZhbHVl
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk00VUk2NFZO
VlBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMdWludDY0RVhUICp2YWx1ZSk7CisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTFpNjROViAoR0xpbnQgbG9jYXRpb24s
IEdMaW50NjRFWFQgeCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtMmk2
NE5WIChHTGludCBsb2NhdGlvbiwgR0xpbnQ2NEVYVCB4LCBHTGludDY0RVhUIHkpOworR0xfQVBJ
Q0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTNpNjROViAoR0xpbnQgbG9jYXRpb24sIEdM
aW50NjRFWFQgeCwgR0xpbnQ2NEVYVCB5LCBHTGludDY0RVhUIHopOworR0xfQVBJQ0FMTCB2b2lk
IEdMX0FQSUVOVFJZIGdsVW5pZm9ybTRpNjROViAoR0xpbnQgbG9jYXRpb24sIEdMaW50NjRFWFQg
eCwgR0xpbnQ2NEVYVCB5LCBHTGludDY0RVhUIHosIEdMaW50NjRFWFQgdyk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtMWk2NHZOViAoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMaW50NjRFWFQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFVuaWZvcm0yaTY0dk5WIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
Y29uc3QgR0xpbnQ2NEVYVCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
VW5pZm9ybTNpNjR2TlYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGlu
dDY0RVhUICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtNGk2
NHZOViAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50NjRFWFQgKnZh
bHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm0xdWk2NE5WIChHTGlu
dCBsb2NhdGlvbiwgR0x1aW50NjRFWFQgeCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkg
Z2xVbmlmb3JtMnVpNjROViAoR0xpbnQgbG9jYXRpb24sIEdMdWludDY0RVhUIHgsIEdMdWludDY0
RVhUIHkpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTN1aTY0TlYgKEdM
aW50IGxvY2F0aW9uLCBHTHVpbnQ2NEVYVCB4LCBHTHVpbnQ2NEVYVCB5LCBHTHVpbnQ2NEVYVCB6
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm00dWk2NE5WIChHTGludCBs
b2NhdGlvbiwgR0x1aW50NjRFWFQgeCwgR0x1aW50NjRFWFQgeSwgR0x1aW50NjRFWFQgeiwgR0x1
aW50NjRFWFQgdyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtMXVpNjR2
TlYgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQ2NEVYVCAqdmFs
dWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTJ1aTY0dk5WIChHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50NjRFWFQgKnZhbHVlKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFVuaWZvcm0zdWk2NHZOViAoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludDY0RVhUICp2YWx1ZSk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtNHVpNjR2TlYgKEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTHVpbnQ2NEVYVCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsR2V0VW5pZm9ybWk2NHZOViAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0
aW9uLCBHTGludDY0RVhUICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
UHJvZ3JhbVVuaWZvcm0xaTY0TlYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xp
bnQ2NEVYVCB4KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3Jt
Mmk2NE5WIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50NjRFWFQgeCwgR0xp
bnQ2NEVYVCB5KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3Jt
M2k2NE5WIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50NjRFWFQgeCwgR0xp
bnQ2NEVYVCB5LCBHTGludDY0RVhUIHopOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
UHJvZ3JhbVVuaWZvcm00aTY0TlYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xp
bnQ2NEVYVCB4LCBHTGludDY0RVhUIHksIEdMaW50NjRFWFQgeiwgR0xpbnQ2NEVYVCB3KTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMWk2NHZOViAoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludDY0RVhU
ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTJp
NjR2TlYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xpbnQ2NEVYVCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJv
Z3JhbVVuaWZvcm0zaTY0dk5WIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMaW50NjRFWFQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtNGk2NHZOViAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludDY0RVhUICp2YWx1ZSk7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTF1aTY0TlYgKEdMdWludCBwcm9n
cmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50NjRFWFQgeCk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTJ1aTY0TlYgKEdMdWludCBwcm9ncmFtLCBHTGludCBs
b2NhdGlvbiwgR0x1aW50NjRFWFQgeCwgR0x1aW50NjRFWFQgeSk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTN1aTY0TlYgKEdMdWludCBwcm9ncmFtLCBHTGlu
dCBsb2NhdGlvbiwgR0x1aW50NjRFWFQgeCwgR0x1aW50NjRFWFQgeSwgR0x1aW50NjRFWFQgeik7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTR1aTY0TlYgKEdM
dWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0x1aW50NjRFWFQgeCwgR0x1aW50NjRFWFQg
eSwgR0x1aW50NjRFWFQgeiwgR0x1aW50NjRFWFQgdyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJ
RU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTF1aTY0dk5WIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludDY0RVhUICp2YWx1ZSk7CitHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTJ1aTY0dk5WIChHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludDY0RVhUICp2
YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTN1aTY0
dk5WIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMdWludDY0RVhUICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9n
cmFtVW5pZm9ybTR1aTY0dk5WIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMdWludDY0RVhUICp2YWx1ZSk7CisjZW5kaWYKKyNlbmRpZiAvKiBH
TF9OVl9ncHVfc2hhZGVyNSAqLworCiAjaWZuZGVmIEdMX05WX2ltYWdlX2Zvcm1hdHMKICNkZWZp
bmUgR0xfTlZfaW1hZ2VfZm9ybWF0cyAxCiAjZW5kaWYgLyogR0xfTlZfaW1hZ2VfZm9ybWF0cyAq
LwpAQCAtMzAyMiw2ICszMzM5LDEwIEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJl
c29sdmVEZXB0aFZhbHVlc05WICh2b2lkKTsKICNkZWZpbmUgR0xfTlZfc2FtcGxlX21hc2tfb3Zl
cnJpZGVfY292ZXJhZ2UgMQogI2VuZGlmIC8qIEdMX05WX3NhbXBsZV9tYXNrX292ZXJyaWRlX2Nv
dmVyYWdlICovCiAKKyNpZm5kZWYgR0xfTlZfc2hhZGVyX2F0b21pY19mcDE2X3ZlY3RvcgorI2Rl
ZmluZSBHTF9OVl9zaGFkZXJfYXRvbWljX2ZwMTZfdmVjdG9yIDEKKyNlbmRpZiAvKiBHTF9OVl9z
aGFkZXJfYXRvbWljX2ZwMTZfdmVjdG9yICovCisKICNpZm5kZWYgR0xfTlZfc2hhZGVyX25vcGVy
c3BlY3RpdmVfaW50ZXJwb2xhdGlvbgogI2RlZmluZSBHTF9OVl9zaGFkZXJfbm9wZXJzcGVjdGl2
ZV9pbnRlcnBvbGF0aW9uIDEKICNlbmRpZiAvKiBHTF9OVl9zaGFkZXJfbm9wZXJzcGVjdGl2ZV9p
bnRlcnBvbGF0aW9uICovCkBAIC0zMDg4LDExICszNDA5LDMyIEBAIEdMX0FQSUNBTEwgR0xib29s
ZWFuIEdMX0FQSUVOVFJZIGdsSXNFbmFibGVkaU5WIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5k
ZXgpOwogI2RlZmluZSBHTF9OVl92aWV3cG9ydF9hcnJheTIgMQogI2VuZGlmIC8qIEdMX05WX3Zp
ZXdwb3J0X2FycmF5MiAqLwogCisjaWZuZGVmIEdMX05WX3ZpZXdwb3J0X3N3aXp6bGUKKyNkZWZp
bmUgR0xfTlZfdmlld3BvcnRfc3dpenpsZSAxCisjZGVmaW5lIEdMX1ZJRVdQT1JUX1NXSVpaTEVf
UE9TSVRJVkVfWF9OViAweDkzNTAKKyNkZWZpbmUgR0xfVklFV1BPUlRfU1dJWlpMRV9ORUdBVElW
RV9YX05WIDB4OTM1MQorI2RlZmluZSBHTF9WSUVXUE9SVF9TV0laWkxFX1BPU0lUSVZFX1lfTlYg
MHg5MzUyCisjZGVmaW5lIEdMX1ZJRVdQT1JUX1NXSVpaTEVfTkVHQVRJVkVfWV9OViAweDkzNTMK
KyNkZWZpbmUgR0xfVklFV1BPUlRfU1dJWlpMRV9QT1NJVElWRV9aX05WIDB4OTM1NAorI2RlZmlu
ZSBHTF9WSUVXUE9SVF9TV0laWkxFX05FR0FUSVZFX1pfTlYgMHg5MzU1CisjZGVmaW5lIEdMX1ZJ
RVdQT1JUX1NXSVpaTEVfUE9TSVRJVkVfV19OViAweDkzNTYKKyNkZWZpbmUgR0xfVklFV1BPUlRf
U1dJWlpMRV9ORUdBVElWRV9XX05WIDB4OTM1NworI2RlZmluZSBHTF9WSUVXUE9SVF9TV0laWkxF
X1hfTlYgICAgICAgICAgMHg5MzU4CisjZGVmaW5lIEdMX1ZJRVdQT1JUX1NXSVpaTEVfWV9OViAg
ICAgICAgICAweDkzNTkKKyNkZWZpbmUgR0xfVklFV1BPUlRfU1dJWlpMRV9aX05WICAgICAgICAg
IDB4OTM1QQorI2RlZmluZSBHTF9WSUVXUE9SVF9TV0laWkxFX1dfTlYgICAgICAgICAgMHg5MzVC
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFZJRVdQT1JUU1dJWlpMRU5WUFJPQykg
KEdMdWludCBpbmRleCwgR0xlbnVtIHN3aXp6bGV4LCBHTGVudW0gc3dpenpsZXksIEdMZW51bSBz
d2l6emxleiwgR0xlbnVtIHN3aXp6bGV3KTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitH
TF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWaWV3cG9ydFN3aXp6bGVOViAoR0x1aW50IGlu
ZGV4LCBHTGVudW0gc3dpenpsZXgsIEdMZW51bSBzd2l6emxleSwgR0xlbnVtIHN3aXp6bGV6LCBH
TGVudW0gc3dpenpsZXcpOworI2VuZGlmCisjZW5kaWYgLyogR0xfTlZfdmlld3BvcnRfc3dpenps
ZSAqLworCiAjaWZuZGVmIEdMX09WUl9tdWx0aXZpZXcKICNkZWZpbmUgR0xfT1ZSX211bHRpdmll
dyAxCiAjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9OVU1fVklFV1Nf
T1ZSIDB4OTYzMAogI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQkFT
RV9WSUVXX0lOREVYX09WUiAweDk2MzIKICNkZWZpbmUgR0xfTUFYX1ZJRVdTX09WUiAgICAgICAg
ICAgICAgICAgIDB4OTYzMQorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX1ZJRVdf
VEFSR0VUU19PVlIgMHg5NjMzCiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEZSQU1F
QlVGRkVSVEVYVFVSRU1VTFRJVklFV09WUlBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0
YWNobWVudCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTGludCBiYXNlVmlld0luZGV4
LCBHTHNpemVpIG51bVZpZXdzKTsKICNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCiBHTF9BUElD
QUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXZpZXdPVlIgKEdM
ZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2
ZWwsIEdMaW50IGJhc2VWaWV3SW5kZXgsIEdMc2l6ZWkgbnVtVmlld3MpOwpAQCAtMzEwMyw2ICsz
NDQ1LDE0IEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZyYW1lYnVmZmVyVGV4dHVy
ZU11bHRpdmlld09WUiAoR0xlbnVtIHRhcmdldCwgR0xlCiAjZGVmaW5lIEdMX09WUl9tdWx0aXZp
ZXcyIDEKICNlbmRpZiAvKiBHTF9PVlJfbXVsdGl2aWV3MiAqLwogCisjaWZuZGVmIEdMX09WUl9t
dWx0aXZpZXdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCisjZGVmaW5lIEdMX09WUl9t
dWx0aXZpZXdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlIDEKK3R5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMRlJBTUVCVUZGRVJURVhUVVJFTVVMVElTQU1QTEVNVUxUSVZJRVdP
VlJQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMdWludCB0ZXh0dXJl
LCBHTGludCBsZXZlbCwgR0xzaXplaSBzYW1wbGVzLCBHTGludCBiYXNlVmlld0luZGV4LCBHTHNp
emVpIG51bVZpZXdzKTsKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclRleHR1cmVNdWx0aXNhbXBsZU11bHRpdmlld09W
UiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMdWludCB0ZXh0dXJlLCBHTGlu
dCBsZXZlbCwgR0xzaXplaSBzYW1wbGVzLCBHTGludCBiYXNlVmlld0luZGV4LCBHTHNpemVpIG51
bVZpZXdzKTsKKyNlbmRpZgorI2VuZGlmIC8qIEdMX09WUl9tdWx0aXZpZXdfbXVsdGlzYW1wbGVk
X3JlbmRlcl90b190ZXh0dXJlICovCisKICNpZm5kZWYgR0xfUUNPTV9hbHBoYV90ZXN0CiAjZGVm
aW5lIEdMX1FDT01fYWxwaGFfdGVzdCAxCiAjZGVmaW5lIEdMX0FMUEhBX1RFU1RfUUNPTSAgICAg
ICAgICAgICAgICAweDBCQzAKQEAgLTMyNzIsNyArMzYyMiw3IEBAIHR5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMR0VUVU5JRk9STUlWUk9CVVNUQU5HTEUpIChHTHVpbnQgcHJvZ3JhbSwg
R0xpbnQKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUVkVSVEVYQVRUUklCRlZS
T0JVU1RBTkdMRSkgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUs
IEdMc2l6ZWkgKmxlbmd0aCwgR0xmbG9hdCAqcGFyYW1zKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJ
RU5UUllQIFBGTkdMR0VUVkVSVEVYQVRUUklCSVZST0JVU1RBTkdMRSkgKEdMdWludCBpbmRleCwg
R0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBh
cmFtcyk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFZFUlRFWEFUVFJJQlBP
SU5URVJWUk9CVVNUQU5HTEUpIChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBi
dWZTaXplLCBHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKTsKLXR5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMUkVBRFBJWEVMU1JPQlVTVEFOR0xFKSAoR0xpbnQgeCwgR0xpbnQg
eSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0
eXBlLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqcGl4ZWxzKTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUkVBRFBJWEVMU1JPQlVTVEFOR0xFKSAoR0xp
bnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3Jt
YXQsIEdMZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xzaXpl
aSAqY29sdW1ucywgR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKTsKIHR5cGVkZWYgdm9pZCAo
R0xfQVBJRU5UUllQIFBGTkdMVEVYSU1BR0UyRFJPQlVTVEFOR0xFKSAoR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xzaXpl
aSBidWZTaXplLCBjb25zdCB2b2lkICpwaXhlbHMpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRS
WVAgUEZOR0xURVhQQVJBTUVURVJGVlJPQlVTVEFOR0xFKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CiB0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFBBUkFNRVRFUklWUk9CVVNUQU5HTEUpIChHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0xpbnQgKnBh
cmFtcyk7CkBAIC0zMzAyLDcgKzM2NTIsNyBAQCB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTEdFVE1VTFRJU0FNUExFRlZST0JVU1RBTkdMRSkgKEdMZW51bSBwbmFtZSwgR0x1aQogdHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRURVhMRVZFTFBBUkFNRVRFUklWUk9CVVNU
QU5HTEUpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lLCBHTHNpemVp
IGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnBhcmFtcyk7CiB0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTEdFVFRFWExFVkVMUEFSQU1FVEVSRlZST0JVU1RBTkdMRSkgKEdM
ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwg
R0xzaXplaSAqbGVuZ3RoLCBHTGZsb2F0ICpwYXJhbXMpOwogdHlwZWRlZiB2b2lkIChHTF9BUElF
TlRSWVAgUEZOR0xHRVRQT0lOVEVSVlJPQlVTVEFOR0xFUk9CVVNUQU5HTEUpIChHTGVudW0gcG5h
bWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCB2b2lkICoqcGFyYW1zKTsKLXR5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUkVBRE5QSVhFTFNST0JVU1RBTkdMRSkgKEdM
aW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9y
bWF0LCBHTGVudW0gdHlwZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIHZvaWQg
KmRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xSRUFETlBJWEVMU1JPQlVT
VEFOR0xFKSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQs
IEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxl
bmd0aCwgR0xzaXplaSAqY29sdW1ucywgR0xzaXplaSAqcm93cywgdm9pZCAqZGF0YSk7CiB0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVE5VTklGT1JNRlZST0JVU1RBTkdMRSkgKEdM
dWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICps
ZW5ndGgsIEdMZmxvYXQgKnBhcmFtcyk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TEdFVE5VTklGT1JNSVZST0JVU1RBTkdMRSkgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlv
biwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpwYXJhbXMpOwogdHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVROVU5JRk9STVVJVlJPQlVTVEFOR0xFKSAo
R0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgR0x1aW50ICpwYXJhbXMpOwpAQCAtMzMzMyw3ICszNjgzLDcgQEAgR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VW5pZm9ybWl2Um9idXN0QU5HTEUgKEdMdWludCBwcm9n
cmFtLCBHTGludCBsb2MKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFZlcnRleEF0
dHJpYmZ2Um9idXN0QU5HTEUgKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1
ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xmbG9hdCAqcGFyYW1zKTsKIEdMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbEdldFZlcnRleEF0dHJpYml2Um9idXN0QU5HTEUgKEdMdWludCBpbmRl
eCwgR0xlbnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQg
KnBhcmFtcyk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRWZXJ0ZXhBdHRyaWJQ
b2ludGVydlJvYnVzdEFOR0xFIChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBi
dWZTaXplLCBHTHNpemVpICpsZW5ndGgsIHZvaWQgKipwb2ludGVyKTsKLUdMX0FQSUNBTEwgdm9p
ZCBHTF9BUElFTlRSWSBnbFJlYWRQaXhlbHNSb2J1c3RBTkdMRSAoR0xpbnQgeCwgR0xpbnQgeSwg
R0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBl
LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqcGl4ZWxzKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlYWRQaXhlbHNSb2J1c3RBTkdMRSAoR0xpbnQgeCwg
R0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdM
ZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xzaXplaSAqY29s
dW1ucywgR0xzaXplaSAqcm93cywgdm9pZCAqcGl4ZWxzKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFRleEltYWdlMkRSb2J1c3RBTkdMRSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2
ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwg
R0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xzaXplaSBidWZTaXpl
LCBjb25zdCB2b2lkICpwaXhlbHMpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHNp
emVpIGJ1ZlNpemUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CiBHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFIChHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7CkBAIC0zMzYz
LDcgKzM3MTMsNyBAQCBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRNdWx0aXNhbXBs
ZWZ2Um9idXN0QU5HTEUgKEdMZW51bSBwbmFtZSwgR0x1aW50CiBHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0QU5HTEUgKEdMZW51bSB0YXJn
ZXQsIEdMaW50IGxldmVsLCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAq
bGVuZ3RoLCBHTGludCAqcGFyYW1zKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdl
dFRleExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2
ZWwsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMZmxv
YXQgKnBhcmFtcyk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQb2ludGVydlJv
YnVzdEFOR0xFUm9idXN0QU5HTEUgKEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsIHZvaWQgKipwYXJhbXMpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsUmVhZG5QaXhlbHNSb2J1c3RBTkdMRSAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0
aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHNpemVpIGJ1
ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgdm9pZCAqZGF0YSk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xSZWFkblBpeGVsc1JvYnVzdEFOR0xFIChHTGludCB4LCBHTGludCB5LCBHTHNp
emVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdM
c2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTHNpemVpICpjb2x1bW5zLCBHTHNpemVp
ICpyb3dzLCB2b2lkICpkYXRhKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldG5V
bmlmb3JtZnZSb2J1c3RBTkdMRSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xmbG9hdCAqcGFyYW1zKTsKIEdMX0FQSUNB
TEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldG5Vbmlmb3JtaXZSb2J1c3RBTkdMRSAoR0x1aW50IHBy
b2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwg
R0xpbnQgKnBhcmFtcyk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRuVW5pZm9y
bXVpdlJvYnVzdEFOR0xFIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTHVpbnQgKnBhcmFtcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2dsMnBsYXRmb3JtLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2dsMnBsYXRmb3JtLmgKaW5kZXggNjY2
M2NkNGU3MmEuLjg5ZDRkNDRkYzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9pbmNsdWRlL0dMRVMyL2dsMnBsYXRmb3JtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvaW5jbHVkZS9HTEVTMi9nbDJwbGF0Zm9ybS5oCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBieSBm
aWxpbmcgYSBidWcgYWdhaW5zdCBwcm9kdWN0ICJPcGVuR0wtRVMiIGNvbXBvbmVudCAiUmVnaXN0
cnkiLgogICovCiAKLSNpbmNsdWRlIDxBTkdMRS9raHJwbGF0Zm9ybS5oPgorI2luY2x1ZGUgPEtI
Ui9raHJwbGF0Zm9ybS5oPgogCiAjaWZuZGVmIEdMX0FQSUNBTEwKICNkZWZpbmUgR0xfQVBJQ0FM
TCAgS0hST05PU19BUElDQUxMCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9p
bmNsdWRlL0dMRVMyL2dsMnNvZnRsaW5raW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9p
bmNsdWRlL0dMRVMyL2dsMnNvZnRsaW5raW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDE3YjExNWM0MDhmLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9pbmNsdWRlL0dMRVMyL2dsMnNvZnRsaW5raW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAg
KzAsMCBAQAotLyogCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKLQotU09G
VF9MSU5LX0xJQlJBUlkobGliR0xFU3YyKQotCi1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEFjdGl2
ZVRleHR1cmUsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRleHR1cmUpLCAodGV4dHVyZSkp
OwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xBdHRhY2hTaGFkZXIsIHZvaWQsIEdMX0FQSUVOVFJZ
LCAoR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIpLCAocHJvZ3JhbSwgc2hhZGVyKSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbEJpbmRBdHRyaWJMb2NhdGlvbiwgdm9pZCwgR0xfQVBJRU5U
UlksIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBjb25zdCBHTGNoYXIqIG5hbWUpLCAo
cHJvZ3JhbSwgaW5kZXgsIG5hbWUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQmluZEJ1ZmZl
ciwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgYnVmZmVyKSwgKHRh
cmdldCwgYnVmZmVyKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEJpbmRGcmFtZWJ1ZmZlciwg
dm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgZnJhbWVidWZmZXIpLCAo
dGFyZ2V0LCBmcmFtZWJ1ZmZlcikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xCaW5kUmVuZGVy
YnVmZmVyLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMdWludCByZW5kZXJi
dWZmZXIpLCAodGFyZ2V0LCByZW5kZXJidWZmZXIpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGds
QmluZFRleHR1cmUsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0x1aW50IHRl
eHR1cmUpLCAodGFyZ2V0LCB0ZXh0dXJlKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEJsZW5k
Q29sb3IsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwg
R0xjbGFtcGYgYmx1ZSwgR0xjbGFtcGYgYWxwaGEpLCAocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEp
KTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQmxlbmRFcXVhdGlvbiwgdm9pZCwgR0xfQVBJRU5U
UlksIChHTGVudW0gbW9kZSksIChtb2RlKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEJsZW5k
RXF1YXRpb25TZXBhcmF0ZSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gbW9kZVJHQiwgR0xl
bnVtIG1vZGVBbHBoYSksIChtb2RlUkdCLCBtb2RlQWxwaGEpKTsKLVNPRlRfTElOSyhsaWJHTEVT
djIsIGdsQmxlbmRGdW5jLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSBzZmFjdG9yLCBHTGVu
dW0gZGZhY3RvciksIChzZmFjdG9yLCBkZmFjdG9yKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBn
bEJsZW5kRnVuY1NlcGFyYXRlLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSBzcmNSR0IsIEdM
ZW51bSBkc3RSR0IsIEdMZW51bSBzcmNBbHBoYSwgR0xlbnVtIGRzdEFscGhhKSwgKHNyY1JHQiwg
ZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxwaGEpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQnVm
ZmVyRGF0YSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpcHRyIHNp
emUsIGNvbnN0IEdMdm9pZCogZGF0YSwgR0xlbnVtIHVzYWdlKSwgKHRhcmdldCwgc2l6ZSwgZGF0
YSwgdXNhZ2UpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQnVmZmVyU3ViRGF0YSwgdm9pZCwg
R0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIg
c2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKSwgKHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMsIEdMZW51bSwg
R0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0KSwgKHRhcmdldCkpOwotU09GVF9MSU5LKGxpYkdM
RVN2MiwgZ2xDbGVhciwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGJpdGZpZWxkIG1hc2spLCAobWFz
aykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xDbGVhckNvbG9yLCB2b2lkLCBHTF9BUElFTlRS
WSwgKEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBm
IGFscGhhKSwgKHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbENsZWFyRGVwdGhmLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMY2xhbXBmIGRlcHRoKSwgKGRl
cHRoKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbENsZWFyU3RlbmNpbCwgdm9pZCwgR0xfQVBJ
RU5UUlksIChHTGludCBzKSwgKHMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQ29sb3JNYXNr
LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMYm9vbGVhbiByZWQsIEdMYm9vbGVhbiBncmVlbiwgR0xi
b29sZWFuIGJsdWUsIEdMYm9vbGVhbiBhbHBoYSksIChyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkp
OwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xDb21waWxlU2hhZGVyLCB2b2lkLCBHTF9BUElFTlRS
WSwgKEdMdWludCBzaGFkZXIpLCAoc2hhZGVyKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbENv
bXByZXNzZWRUZXhJbWFnZTJELCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdM
aW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQqIGRh
dGEpLCAodGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRl
ciwgaW1hZ2VTaXplLCBkYXRhKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbENvbXByZXNzZWRU
ZXhTdWJJbWFnZTJELCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxl
dmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVp
IGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCog
ZGF0YSksICh0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIGltYWdlU2l6ZSwgZGF0YSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xDb3B5VGV4
SW1hZ2UyRCwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwg
R0xlbnVtIGludGVybmFsZm9ybWF0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBH
THNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyKSwgKHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9y
bWF0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsQ29weVRleFN1YkltYWdlMkQsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50
IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KSwgKHRhcmdldCwgbGV2ZWwsIHhvZmZz
ZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsQ3JlYXRlUHJvZ3JhbSwgR0x1aW50LCBHTF9BUElFTlRSWSwgKHZvaWQpLCAoKSk7Ci1TT0ZU
X0xJTksobGliR0xFU3YyLCBnbENyZWF0ZVNoYWRlciwgR0x1aW50LCBHTF9BUElFTlRSWSwgKEdM
ZW51bSB0eXBlKSwgKHR5cGUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsQ3VsbEZhY2UsIHZv
aWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIG1vZGUpLCAobW9kZSkpOwotU09GVF9MSU5LKGxpYkdM
RVN2MiwgZ2xEZWxldGVCdWZmZXJzLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMc2l6ZWkgbiwgY29u
c3QgR0x1aW50KiBidWZmZXJzKSwgKG4sIGJ1ZmZlcnMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsRGVsZXRlRnJhbWVidWZmZXJzLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMc2l6ZWkgbiwgY29u
c3QgR0x1aW50KiBmcmFtZWJ1ZmZlcnMpLCAobiwgZnJhbWVidWZmZXJzKSk7Ci1TT0ZUX0xJTkso
bGliR0xFU3YyLCBnbERlbGV0ZVByb2dyYW0sIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHBy
b2dyYW0pLCAocHJvZ3JhbSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xEZWxldGVSZW5kZXJi
dWZmZXJzLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiByZW5k
ZXJidWZmZXJzKSwgKG4sIHJlbmRlcmJ1ZmZlcnMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGds
RGVsZXRlU2hhZGVyLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBzaGFkZXIpLCAoc2hhZGVy
KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbERlbGV0ZVRleHR1cmVzLCB2b2lkLCBHTF9BUElF
TlRSWSwgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiB0ZXh0dXJlcyksIChuLCB0ZXh0dXJlcykp
OwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xEZXB0aEZ1bmMsIHZvaWQsIEdMX0FQSUVOVFJZLCAo
R0xlbnVtIGZ1bmMpLCAoZnVuYykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xEZXB0aE1hc2ss
IHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xib29sZWFuIGZsYWcpLCAoZmxhZykpOwotU09GVF9MSU5L
KGxpYkdMRVN2MiwgZ2xEZXB0aFJhbmdlZiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGNsYW1wZiB6
TmVhciwgR0xjbGFtcGYgekZhciksICh6TmVhciwgekZhcikpOwotU09GVF9MSU5LKGxpYkdMRVN2
MiwgZ2xEZXRhY2hTaGFkZXIsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0sIEdM
dWludCBzaGFkZXIpLCAocHJvZ3JhbSwgc2hhZGVyKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBn
bERpc2FibGUsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIGNhcCksIChjYXApKTsKLVNPRlRf
TElOSyhsaWJHTEVTdjIsIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5LCB2b2lkLCBHTF9BUElF
TlRSWSwgKEdMdWludCBpbmRleCksIChpbmRleCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xE
cmF3QXJyYXlzLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwg
R0xzaXplaSBjb3VudCksIChtb2RlLCBmaXJzdCwgY291bnQpKTsKLVNPRlRfTElOSyhsaWJHTEVT
djIsIGdsRHJhd0VsZW1lbnRzLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSBtb2RlLCBHTHNp
emVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBpbmRpY2VzKSwgKG1vZGUsIGNv
dW50LCB0eXBlLCBpbmRpY2VzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEVuYWJsZSwgdm9p
ZCwgR0xfQVBJRU5UUlksIChHTGVudW0gY2FwKSwgKGNhcCkpOwotU09GVF9MSU5LKGxpYkdMRVN2
MiwgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQg
aW5kZXgpLCAoaW5kZXgpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRmluaXNoLCB2b2lkLCBH
TF9BUElFTlRSWSwgKHZvaWQpLCAoKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEZsdXNoLCB2
b2lkLCBHTF9BUElFTlRSWSwgKHZvaWQpLCAoKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQs
IEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBHTHVpbnQgcmVu
ZGVyYnVmZmVyKSwgKHRhcmdldCwgYXR0YWNobWVudCwgcmVuZGVyYnVmZmVydGFyZ2V0LCByZW5k
ZXJidWZmZXIpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQs
IHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdM
ZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCksICh0YXJnZXQsIGF0
dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwpKTsKLVNPRlRfTElOSyhsaWJHTEVT
djIsIGdsRnJvbnRGYWNlLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSBtb2RlKSwgKG1vZGUp
KTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2VuQnVmZmVycywgdm9pZCwgR0xfQVBJRU5UUlks
IChHTHNpemVpIG4sIEdMdWludCogYnVmZmVycyksIChuLCBidWZmZXJzKSk7Ci1TT0ZUX0xJTkso
bGliR0xFU3YyLCBnbEdlbmVyYXRlTWlwbWFwLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0
YXJnZXQpLCAodGFyZ2V0KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdlbkZyYW1lYnVmZmVy
cywgdm9pZCwgR0xfQVBJRU5UUlksIChHTHNpemVpIG4sIEdMdWludCogZnJhbWVidWZmZXJzKSwg
KG4sIGZyYW1lYnVmZmVycykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZW5SZW5kZXJidWZm
ZXJzLCBpbnQsIEdMX0FQSUVOVFJZLCAoR0xzaXplaSBuLCBHTHVpbnQqIHJlbmRlcmJ1ZmZlcnMp
LCAobiwgcmVuZGVyYnVmZmVycykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZW5UZXh0dXJl
cywgdm9pZCwgR0xfQVBJRU5UUlksIChHTHNpemVpIG4sIEdMdWludCogdGV4dHVyZXMpLCAobiwg
dGV4dHVyZXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0QWN0aXZlQXR0cmliLCB2b2lk
LCBHTF9BUElFTlRSWSwgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVm
c2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGludCogc2l6ZSwgR0xlbnVtKiB0eXBlLCBHTGNoYXIq
IG5hbWUpLCAocHJvZ3JhbSwgaW5kZXgsIGJ1ZnNpemUsIGxlbmd0aCwgc2l6ZSwgdHlwZSwgbmFt
ZSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRBY3RpdmVVbmlmb3JtLCBHTGVudW0sIEdM
X0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXpl
LCBHTHNpemVpKiBsZW5ndGgsIEdMaW50KiBzaXplLCBHTGVudW0qIHR5cGUsIEdMY2hhciogbmFt
ZSksIChwcm9ncmFtLCBpbmRleCwgYnVmc2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lKSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldEF0dGFjaGVkU2hhZGVycywgdm9pZCwgR0xfQVBJ
RU5UUlksIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBtYXhjb3VudCwgR0xzaXplaSogY291bnQs
IEdMdWludCogc2hhZGVycyksIChwcm9ncmFtLCBtYXhjb3VudCwgY291bnQsIHNoYWRlcnMpKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0QXR0cmliTG9jYXRpb24sIGludCwgR0xfQVBJRU5U
UlksIChHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyKiBuYW1lKSwgKHByb2dyYW0sIG5hbWUp
KTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0Qm9vbGVhbnYsIHZvaWQsIEdMX0FQSUVOVFJZ
LCAoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4qIHBhcmFtcyksIChwbmFtZSwgcGFyYW1zKSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbEdldEJ1ZmZlclBhcmFtZXRlcml2LCB2b2lkLCBHTF9BUElF
TlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcyksICh0YXJn
ZXQsIHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0RXJyb3IsIEdM
ZW51bSwgR0xfQVBJRU5UUlksICh2b2lkKSwgKCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xH
ZXRGbG9hdHYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHBuYW1lLCBHTGZsb2F0KiBwYXJh
bXMpLCAocG5hbWUsIHBhcmFtcykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFy
Z2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKSwgKHRh
cmdldCwgYXR0YWNobWVudCwgcG5hbWUsIHBhcmFtcykpOwotU09GVF9MSU5LKGxpYkdMRVN2Miwg
Z2xHZXRJbnRlZ2Vydiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gcG5hbWUsIEdMaW50KiBw
YXJhbXMpLCAocG5hbWUsIHBhcmFtcykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xHZXRQcm9n
cmFtaXYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwg
R0xpbnQqIHBhcmFtcyksIChwcm9ncmFtLCBwbmFtZSwgcGFyYW1zKSk7Ci1TT0ZUX0xJTksobGli
R0xFU3YyLCBnbEdldFByb2dyYW1JbmZvTG9nLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBw
cm9ncmFtLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiBpbmZvbG9n
KSwgKHByb2dyYW0sIGJ1ZnNpemUsIGxlbmd0aCwgaW5mb2xvZykpOwotU09GVF9MSU5LKGxpYkdM
RVN2MiwgZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiwgdm9pZCwgR0xfQVBJRU5UUlksIChH
TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpLCAodGFyZ2V0LCBwbmFt
ZSwgcGFyYW1zKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldFNoYWRlcml2LCB2b2lkLCBH
TF9BUElFTlRSWSwgKEdMdWludCBzaGFkZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcyks
IChzaGFkZXIsIHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0U2hh
ZGVySW5mb0xvZywgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1
ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiBpbmZvbG9nKSwgKHNoYWRlciwgYnVmc2l6
ZSwgbGVuZ3RoLCBpbmZvbG9nKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldFNoYWRlclBy
ZWNpc2lvbkZvcm1hdCwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gc2hhZGVydHlwZSwgR0xl
bnVtIHByZWNpc2lvbnR5cGUsIEdMaW50KiByYW5nZSwgR0xpbnQqIHByZWNpc2lvbiksIChzaGFk
ZXJ0eXBlLCBwcmVjaXNpb250eXBlLCByYW5nZSwgcHJlY2lzaW9uKSk7Ci1TT0ZUX0xJTksobGli
R0xFU3YyLCBnbEdldFNoYWRlclNvdXJjZSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgc2hh
ZGVyLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiBzb3VyY2UpLCAo
c2hhZGVyLCBidWZzaXplLCBsZW5ndGgsIHNvdXJjZSkpOwotU09GVF9MSU5LKGxpYkdMRVN2Miwg
Z2xHZXRTdHJpbmcsIGNvbnN0IEdMdWJ5dGUqLCBHTF9BUElFTlRSWSwgKEdMZW51bSBuYW1lKSwg
KG5hbWUpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0VGV4UGFyYW1ldGVyZnYsIHZvaWQs
IEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0KiBwYXJh
bXMpLCAodGFyZ2V0LCBwbmFtZSwgcGFyYW1zKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdl
dFRleFBhcmFtZXRlcml2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMZW51
bSBwbmFtZSwgR0xpbnQqIHBhcmFtcyksICh0YXJnZXQsIHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRf
TElOSyhsaWJHTEVTdjIsIGdsR2V0VW5pZm9ybWZ2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWlu
dCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCogcGFyYW1zKSwgKHByb2dyYW0sIGxv
Y2F0aW9uLCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0VW5pZm9ybWl2LCB2
b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQq
IHBhcmFtcyksIChwcm9ncmFtLCBsb2NhdGlvbiwgcGFyYW1zKSk7Ci1TT0ZUX0xJTksobGliR0xF
U3YyLCBnbEdldFVuaWZvcm1Mb2NhdGlvbiwgaW50LCBHTF9BUElFTlRSWSwgKEdMdWludCBwcm9n
cmFtLCBjb25zdCBHTGNoYXIqIG5hbWUpLCAocHJvZ3JhbSwgbmFtZSkpOwotU09GVF9MSU5LKGxp
YkdMRVN2MiwgZ2xHZXRWZXJ0ZXhBdHRyaWJmdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQg
aW5kZXgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKSwgKGluZGV4LCBwbmFtZSwgcGFy
YW1zKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbEdldFZlcnRleEF0dHJpYml2LCB2b2lkLCBH
TF9BUElFTlRSWSwgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcyks
ICh0YXJnZXQsIHBuYW1lLCBwYXJhbXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsR2V0VmVy
dGV4QXR0cmliUG9pbnRlcnYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IGluZGV4LCBHTGVu
dW0gcG5hbWUsIEdMdm9pZCoqIHBvaW50ZXIpLCAoaW5kZXgsIHBuYW1lLCBwb2ludGVyKSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbEhpbnQsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRh
cmdldCwgR0xlbnVtIG1vZGUpLCAodGFyZ2V0LCBtb2RlKSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbElzQnVmZmVyLCBHTGJvb2xlYW4sIEdMX0FQSUVOVFJZLCAoR0x1aW50IGJ1ZmZlciksIChi
dWZmZXIpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsSXNFbmFibGVkLCBHTGJvb2xlYW4sIEdM
X0FQSUVOVFJZLCAoR0xlbnVtIGNhcCksIChjYXApKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGds
SXNGcmFtZWJ1ZmZlciwgR0xib29sZWFuLCBHTF9BUElFTlRSWSwgKEdMdWludCBmcmFtZWJ1ZmZl
ciksIChmcmFtZWJ1ZmZlcikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xJc1Byb2dyYW0sIEdM
Ym9vbGVhbiwgR0xfQVBJRU5UUlksIChHTHVpbnQgcHJvZ3JhbSksIChwcm9ncmFtKSk7Ci1TT0ZU
X0xJTksobGliR0xFU3YyLCBnbElzUmVuZGVyYnVmZmVyLCBHTGJvb2xlYW4sIEdMX0FQSUVOVFJZ
LCAoR0x1aW50IHJlbmRlcmJ1ZmZlciksIChyZW5kZXJidWZmZXIpKTsKLVNPRlRfTElOSyhsaWJH
TEVTdjIsIGdsSXNTaGFkZXIsIEdMYm9vbGVhbiwgR0xfQVBJRU5UUlksIChHTHVpbnQgc2hhZGVy
KSwgKHNoYWRlcikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xJc1RleHR1cmUsIEdMYm9vbGVh
biwgR0xfQVBJRU5UUlksIChHTHVpbnQgdGV4dHVyZSksICh0ZXh0dXJlKSk7Ci1TT0ZUX0xJTkso
bGliR0xFU3YyLCBnbExpbmVXaWR0aCwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGZsb2F0IHdpZHRo
KSwgKHdpZHRoKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbExpbmtQcm9ncmFtLCB2b2lkLCBH
TF9BUElFTlRSWSwgKEdMdWludCBwcm9ncmFtKSwgKHByb2dyYW0pKTsKLVNPRlRfTElOSyhsaWJH
TEVTdjIsIGdsUGl4ZWxTdG9yZWksIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHBuYW1lLCBH
TGludCBwYXJhbSksIChwbmFtZSwgcGFyYW0pKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsUG9s
eWdvbk9mZnNldCwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGZsb2F0IGZhY3RvciwgR0xmbG9hdCB1
bml0cyksIChmYWN0b3IsIHVuaXRzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFJlYWRQaXhl
bHMsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwg
R0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQqIHBpeGVs
cyksICh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscykpOwotU09GVF9M
SU5LKGxpYkdMRVN2MiwgZ2xSZWxlYXNlU2hhZGVyQ29tcGlsZXIsIHZvaWQsIEdMX0FQSUVOVFJZ
LCAodm9pZCksICgpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsUmVuZGVyYnVmZmVyU3RvcmFn
ZSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KSwgKHRhcmdldCwgaW50ZXJuYWxmb3Jt
YXQsIHdpZHRoLCBoZWlnaHQpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsU2FtcGxlQ292ZXJh
Z2UsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xjbGFtcGYgdmFsdWUsIEdMYm9vbGVhbiBpbnZlcnQp
LCAodmFsdWUsIGludmVydCkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xTY2lzc29yLCB2b2lk
LCBHTF9BUElFTlRSWSwgKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0KSwgKHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGds
U2hhZGVyQmluYXJ5LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50
KiBzaGFkZXJzLCBHTGVudW0gYmluYXJ5Zm9ybWF0LCBjb25zdCBHTHZvaWQqIGJpbmFyeSwgR0xz
aXplaSBsZW5ndGgpLCAobiwgc2hhZGVycywgYmluYXJ5Zm9ybWF0LCBiaW5hcnksIGxlbmd0aCkp
OwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xTaGFkZXJTb3VyY2UsIHZvaWQsIEdMX0FQSUVOVFJZ
LCAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xjaGFyKiogc3RyaW5nLCBj
b25zdCBHTGludCogbGVuZ3RoKSwgKHNoYWRlciwgY291bnQsIHN0cmluZywgbGVuZ3RoKSk7Ci1T
T0ZUX0xJTksobGliR0xFU3YyLCBnbFN0ZW5jaWxGdW5jLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdM
ZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKSwgKGZ1bmMsIHJlZiwgbWFzaykpOwot
U09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlLCB2b2lkLCBHTF9BUElF
TlRSWSwgKEdMZW51bSBmYWNlLCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzayks
IChmYWNlLCBmdW5jLCByZWYsIG1hc2spKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsU3RlbmNp
bE1hc2ssIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1aW50IG1hc2spLCAobWFzaykpOwotU09GVF9M
SU5LKGxpYkdMRVN2MiwgZ2xTdGVuY2lsTWFza1NlcGFyYXRlLCB2b2lkLCBHTF9BUElFTlRSWSwg
KEdMZW51bSBmYWNlLCBHTHVpbnQgbWFzayksIChmYWNlLCBtYXNrKSk7Ci1TT0ZUX0xJTksobGli
R0xFU3YyLCBnbFN0ZW5jaWxPcCwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gZmFpbCwgR0xl
bnVtIHpmYWlsLCBHTGVudW0genBhc3MpLCAoZmFpbCwgemZhaWwsIHpwYXNzKSk7Ci1TT0ZUX0xJ
TksobGliR0xFU3YyLCBnbFN0ZW5jaWxPcFNlcGFyYXRlLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdM
ZW51bSBmYWNlLCBHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWlsLCBHTGVudW0genBhc3MpLCAoZmFj
ZSwgZmFpbCwgemZhaWwsIHpwYXNzKSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFRleEltYWdl
MkQsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50
IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9y
ZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpLCAo
dGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgZm9y
bWF0LCB0eXBlLCBwaXhlbHMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVGV4UGFyYW1ldGVy
Ziwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxv
YXQgcGFyYW0pLCAodGFyZ2V0LCBwbmFtZSwgcGFyYW0pKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsVGV4UGFyYW1ldGVyZnYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0KiBwYXJhbXMpLCAodGFyZ2V0LCBwbmFtZSwgcGFyYW1z
KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFRleFBhcmFtZXRlcmksIHZvaWQsIEdMX0FQSUVO
VFJZLCAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSksICh0YXJnZXQs
IHBuYW1lLCBwYXJhbSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xUZXhQYXJhbWV0ZXJpdiwg
dm9pZCwgR0xfQVBJRU5UUlksIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdM
aW50KiBwYXJhbXMpLCAodGFyZ2V0LCBwbmFtZSwgcGFyYW1zKSk7Ci1TT0ZUX0xJTksobGliR0xF
U3YyLCBnbFRleFN1YkltYWdlMkQsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lk
KiBwaXhlbHMpLCAodGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdo
dCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVW5pZm9y
bTFmLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgpLCAobG9j
YXRpb24sIHgpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVW5pZm9ybTFmdiwgdm9pZCwgR0xf
QVBJRU5UUlksIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCog
diksIChsb2NhdGlvbiwgY291bnQsIHYpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVW5pZm9y
bTFpLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBHTGludCB4KSwgKGxvY2F0
aW9uLCB4KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm0xaXYsIHZvaWQsIEdMX0FQ
SUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50KiB2KSwg
KGxvY2F0aW9uLCBjb3VudCwgdikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtMmYs
IHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgeCwgR0xmbG9hdCB5
KSwgKGxvY2F0aW9uLCB4LCB5KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm0yZnYs
IHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMZmxvYXQqIHYpLCAobG9jYXRpb24sIGNvdW50LCB2KSk7Ci1TT0ZUX0xJTksobGliR0xFU3Yy
LCBnbFVuaWZvcm0yaSwgdm9pZCwgR0xfQVBJRU5UUlksIChHTGludCBsb2NhdGlvbiwgR0xpbnQg
eCwgR0xpbnQgeSksIChsb2NhdGlvbiwgeCwgeSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xV
bmlmb3JtMml2LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGludCogdiksIChsb2NhdGlvbiwgY291bnQsIHYpKTsKLVNPRlRfTElOSyhs
aWJHTEVTdjIsIGdsVW5pZm9ybTNmLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9u
LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KSwgKGxvY2F0aW9uLCB4LCB5LCB6KSk7
Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm0zZnYsIHZvaWQsIEdMX0FQSUVOVFJZLCAo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQqIHYpLCAobG9jYXRp
b24sIGNvdW50LCB2KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm0zaSwgdm9pZCwg
R0xfQVBJRU5UUlksIChHTGludCBsb2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiks
IChsb2NhdGlvbiwgeCwgeSwgeikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtM2l2
LCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGludCogdiksIChsb2NhdGlvbiwgY291bnQsIHYpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsVW5pZm9ybTRmLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0
IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpLCAobG9jYXRpb24sIHgsIHksIHos
IHcpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVW5pZm9ybTRmdiwgdm9pZCwgR0xfQVBJRU5U
UlksIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCogdiksIChs
b2NhdGlvbiwgY291bnQsIHYpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVW5pZm9ybTRpLCB2
b2lkLCBHTF9BUElFTlRSWSwgKEdMaW50IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGlu
dCB6LCBHTGludCB3KSwgKGxvY2F0aW9uLCB4LCB5LCB6LCB3KSk7Ci1TT0ZUX0xJTksobGliR0xF
U3YyLCBnbFVuaWZvcm00aXYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMaW50KiB2KSwgKGxvY2F0aW9uLCBjb3VudCwgdikpOwotU09G
VF9MSU5LKGxpYkdMRVN2MiwgZ2xVbmlmb3JtTWF0cml4MmZ2LCB2b2lkLCBHTF9BUElFTlRSWSwg
KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25z
dCBHTGZsb2F0KiB2YWx1ZSksIChsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKTsK
LVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVW5pZm9ybU1hdHJpeDNmdiwgdm9pZCwgR0xfQVBJRU5U
UlksIChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwg
Y29uc3QgR0xmbG9hdCogdmFsdWUpLCAobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFVuaWZvcm1NYXRyaXg0ZnYsIHZvaWQsIEdMX0FQ
SUVOVFJZLCAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bv
c2UsIGNvbnN0IEdMZmxvYXQqIHZhbHVlKSwgKGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2
YWx1ZSkpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xVc2VQcm9ncmFtLCB2b2lkLCBHTF9BUElF
TlRSWSwgKEdMdWludCBwcm9ncmFtKSwgKHByb2dyYW0pKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIs
IGdsVmFsaWRhdGVQcm9ncmFtLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBwcm9ncmFtKSwg
KHByb2dyYW0pKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVmVydGV4QXR0cmliMWYsIHZvaWQs
IEdMX0FQSUVOVFJZLCAoR0x1aW50IGluZHgsIEdMZmxvYXQgeCksIChpbmR4LCB4KSk7Ci1TT0ZU
X0xJTksobGliR0xFU3YyLCBnbFZlcnRleEF0dHJpYjFmdiwgdm9pZCwgR0xfQVBJRU5UUlksIChH
THVpbnQgaW5keCwgY29uc3QgR0xmbG9hdCogdmFsdWVzKSwgKGluZHgsIHZhbHVlcykpOwotU09G
VF9MSU5LKGxpYkdMRVN2MiwgZ2xWZXJ0ZXhBdHRyaWIyZiwgdm9pZCwgR0xfQVBJRU5UUlksIChH
THVpbnQgaW5keCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpLCAoaW5keCwgeCwgeSkpOwotU09GVF9M
SU5LKGxpYkdMRVN2MiwgZ2xWZXJ0ZXhBdHRyaWIyZnYsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1
aW50IGluZHgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcyksIChpbmR4LCB2YWx1ZXMpKTsKLVNPRlRf
TElOSyhsaWJHTEVTdjIsIGdsVmVydGV4QXR0cmliM2YsIHZvaWQsIEdMX0FQSUVOVFJZLCAoR0x1
aW50IGluZHgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopLCAoaW5keCwgeCwgeSwg
eikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xWZXJ0ZXhBdHRyaWIzZnYsIHZvaWQsIEdMX0FQ
SUVOVFJZLCAoR0x1aW50IGluZHgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcyksIChpbmR4LCB2YWx1
ZXMpKTsKLVNPRlRfTElOSyhsaWJHTEVTdjIsIGdsVmVydGV4QXR0cmliNGYsIHZvaWQsIEdMX0FQ
SUVOVFJZLCAoR0x1aW50IGluZHgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdM
ZmxvYXQgdyksIChpbmR4LCB4LCB5LCB6LCB3KSk7Ci1TT0ZUX0xJTksobGliR0xFU3YyLCBnbFZl
cnRleEF0dHJpYjRmdiwgdm9pZCwgR0xfQVBJRU5UUlksIChHTHVpbnQgaW5keCwgY29uc3QgR0xm
bG9hdCogdmFsdWVzKSwgKGluZHgsIHZhbHVlcykpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xW
ZXJ0ZXhBdHRyaWJQb2ludGVyLCB2b2lkLCBHTF9BUElFTlRSWSwgKEdMdWludCBpbmR4LCBHTGlu
dCBzaXplLCBHTGVudW0gdHlwZSwgR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdMc2l6ZWkgc3RyaWRl
LCBjb25zdCBHTHZvaWQqIHB0ciksIChpbmR4LCBzaXplLCB0eXBlLCBub3JtYWxpemVkLCBzdHJp
ZGUsIHB0cikpOwotU09GVF9MSU5LKGxpYkdMRVN2MiwgZ2xWaWV3cG9ydCwgdm9pZCwgR0xfQVBJ
RU5UUlksIChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCks
ICh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9pbmNsdWRlL0dMRVMzL2dsMy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVk
ZS9HTEVTMy9nbDMuaAppbmRleCA2YjA3MDRhZDZmZS4uNTNjNTliODVmZWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xFUzMvZ2wzLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMy9nbDMuaApAQCAtMzYsNyArMzYsNyBAQCBl
eHRlcm4gIkMiIHsKICoqIEtocm9ub3MgJFJldmlzaW9uOiAzMTgxMSAkIG9uICREYXRlOiAyMDE1
LTA4LTEwIDAwOjAxOjExIC0wNzAwIChNb24sIDEwIEF1ZyAyMDE1KSAkCiAqLwogCi0jaW5jbHVk
ZSA8QU5HTEUvZ2wzcGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxHTEVTMy9nbDNwbGF0Zm9ybS5oPgog
CiAjaWZuZGVmIEdMX0FQSUVOVFJZUAogI2RlZmluZSBHTF9BUElFTlRSWVAgR0xfQVBJRU5UUlkq
CkBAIC01Niw3ICs1Niw3IEBAIGV4dGVybiAiQyIgewogCiAjaWZuZGVmIEdMX0VTX1ZFUlNJT05f
Ml8wCiAjZGVmaW5lIEdMX0VTX1ZFUlNJT05fMl8wIDEKLSNpbmNsdWRlIDxBTkdMRS9raHJwbGF0
Zm9ybS5oPgorI2luY2x1ZGUgPEtIUi9raHJwbGF0Zm9ybS5oPgogdHlwZWRlZiBraHJvbm9zX2lu
dDhfdCBHTGJ5dGU7CiB0eXBlZGVmIGtocm9ub3NfZmxvYXRfdCBHTGNsYW1wZjsKIHR5cGVkZWYg
a2hyb25vc19pbnQzMl90IEdMZml4ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9pbmNsdWRlL0dMRVMzL2dsMzEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1
ZGUvR0xFUzMvZ2wzMS5oCmluZGV4IGY1NDEwMmE5MjNjLi4yNmY4NjliNzgxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMy9nbDMxLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMy9nbDMxLmgKQEAgLTM2LDcgKzM2LDcg
QEAgZXh0ZXJuICJDIiB7CiAqKiBLaHJvbm9zICRSZXZpc2lvbiQgb24gJERhdGUkCiAqLwogCi0j
aW5jbHVkZSA8QU5HTEUvZ2wzcGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxHTEVTMy9nbDNwbGF0Zm9y
bS5oPgogCiAjaWZuZGVmIEdMX0FQSUVOVFJZUAogI2RlZmluZSBHTF9BUElFTlRSWVAgR0xfQVBJ
RU5UUlkqCkBAIC01Niw3ICs1Niw3IEBAIGV4dGVybiAiQyIgewogCiAjaWZuZGVmIEdMX0VTX1ZF
UlNJT05fMl8wCiAjZGVmaW5lIEdMX0VTX1ZFUlNJT05fMl8wIDEKLSNpbmNsdWRlIDxBTkdMRS9r
aHJwbGF0Zm9ybS5oPgorI2luY2x1ZGUgPEtIUi9raHJwbGF0Zm9ybS5oPgogdHlwZWRlZiBraHJv
bm9zX2ludDhfdCBHTGJ5dGU7CiB0eXBlZGVmIGtocm9ub3NfZmxvYXRfdCBHTGNsYW1wZjsKIHR5
cGVkZWYga2hyb25vc19pbnQzMl90IEdMZml4ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMzL2dsMzIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L2luY2x1ZGUvR0xFUzMvZ2wzMi5oCmluZGV4IGM0MGMwNjE3MGFlLi4yOTc1YTZmNGU3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMy9nbDMyLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMy9nbDMyLmgKQEAgLTM2LDcg
KzM2LDcgQEAgZXh0ZXJuICJDIiB7CiAqKiBLaHJvbm9zICRSZXZpc2lvbiQgb24gJERhdGUkCiAq
LwogCi0jaW5jbHVkZSA8QU5HTEUvZ2wzcGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxHTEVTMy9nbDNw
bGF0Zm9ybS5oPgogCiAjaWZuZGVmIEdMX0FQSUVOVFJZUAogI2RlZmluZSBHTF9BUElFTlRSWVAg
R0xfQVBJRU5UUlkqCkBAIC01Niw3ICs1Niw3IEBAIGV4dGVybiAiQyIgewogCiAjaWZuZGVmIEdM
X0VTX1ZFUlNJT05fMl8wCiAjZGVmaW5lIEdMX0VTX1ZFUlNJT05fMl8wIDEKLSNpbmNsdWRlIDxB
TkdMRS9raHJwbGF0Zm9ybS5oPgorI2luY2x1ZGUgPEtIUi9raHJwbGF0Zm9ybS5oPgogdHlwZWRl
ZiBraHJvbm9zX2ludDhfdCBHTGJ5dGU7CiB0eXBlZGVmIGtocm9ub3NfZmxvYXRfdCBHTGNsYW1w
ZjsKIHR5cGVkZWYga2hyb25vc19pbnQzMl90IEdMZml4ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMzL2dsM3BsYXRmb3JtLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMzL2dsM3BsYXRmb3JtLmgKaW5kZXggOGJhNWQzODBh
YjEuLmIxZTg2OWRkMTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNs
dWRlL0dMRVMzL2dsM3BsYXRmb3JtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5j
bHVkZS9HTEVTMy9nbDNwbGF0Zm9ybS5oCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBieSBmaWxpbmcg
YSBidWcgYWdhaW5zdCBwcm9kdWN0ICJPcGVuR0wtRVMiIGNvbXBvbmVudCAiUmVnaXN0cnkiLgog
ICovCiAKLSNpbmNsdWRlIDxBTkdMRS9raHJwbGF0Zm9ybS5oPgorI2luY2x1ZGUgPEtIUi9raHJw
bGF0Zm9ybS5oPgogCiAjaWZuZGVmIEdMX0FQSUNBTEwKICNkZWZpbmUgR0xfQVBJQ0FMTCAgS0hS
T05PU19BUElDQUxMCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRl
L0dMU0xBTkcvU2hhZGVyTGFuZy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9H
TFNMQU5HL1NoYWRlckxhbmcuaAppbmRleCBmN2IwZWY3MDJlZC4uYmQ3ODJiM2QwYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5n
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxh
bmcuaApAQCAtNiwyMyArNiw2IEBACiAjaWZuZGVmIEdMU0xBTkdfU0hBREVSTEFOR19IXwogI2Rl
ZmluZSBHTFNMQU5HX1NIQURFUkxBTkdfSF8KIAotI2lmIGRlZmluZWQoQ09NUE9ORU5UX0JVSUxE
KSAmJiAhZGVmaW5lZChBTkdMRV9UUkFOU0xBVE9SX1NUQVRJQykKLSNpZiBkZWZpbmVkKF9XSU4z
MikgfHwgZGVmaW5lZChfV0lONjQpCi0KLSNpZiBkZWZpbmVkKEFOR0xFX1RSQU5TTEFUT1JfSU1Q
TEVNRU5UQVRJT04pCi0jZGVmaW5lIENPTVBJTEVSX0VYUE9SVCBfX2RlY2xzcGVjKGRsbGV4cG9y
dCkKLSNlbHNlCi0jZGVmaW5lIENPTVBJTEVSX0VYUE9SVCBfX2RlY2xzcGVjKGRsbGltcG9ydCkK
LSNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9UUkFOU0xBVE9SX0lNUExFTUVOVEFUSU9OKQotCi0j
ZWxzZSAgLy8gZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX1dJTjY0KQotI2RlZmluZSBDT01Q
SUxFUl9FWFBPUlQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkKLSNlbmRp
ZgotCi0jZWxzZSAgLy8gZGVmaW5lZChDT01QT05FTlRfQlVJTEQpICYmICFkZWZpbmVkKEFOR0xF
X1RSQU5TTEFUT1JfU1RBVElDKQotI2RlZmluZSBDT01QSUxFUl9FWFBPUlQKLSNlbmRpZgotCiAj
aW5jbHVkZSA8c3RkZGVmLmg+CiAKICNpbmNsdWRlICJraHJwbGF0Zm9ybS5oIgpAQCAtMzcsMjEg
KzIwLDE1IEBACiAvLyBhbmQgdGhlIHNoYWRpbmcgbGFuZ3VhZ2UgY29tcGlsZXIuCiAvLwogCi1u
YW1lc3BhY2Ugc2gKLXsKLS8vIEdMZW51bSBhbGlhcwotdHlwZWRlZiB1bnNpZ25lZCBpbnQgR0xl
bnVtOwotfQotCi0vLyBNdXN0IGJlIGluY2x1ZGVkIGFmdGVyIEdMZW51bSBwcm94eSB0eXBlZGVm
CiAvLyBOb3RlOiBtYWtlIHN1cmUgdG8gaW5jcmVtZW50IEFOR0xFX1NIX1ZFUlNJT04gd2hlbiBj
aGFuZ2luZyBTaGFkZXJWYXJzLmgKICNpbmNsdWRlICJTaGFkZXJWYXJzLmgiCiAKIC8vIFZlcnNp
b24gbnVtYmVyIGZvciBzaGFkZXIgdHJhbnNsYXRpb24gQVBJLgogLy8gSXQgaXMgaW5jcmVtZW50
ZWQgZXZlcnkgdGltZSB0aGUgQVBJIGNoYW5nZXMuCi0jZGVmaW5lIEFOR0xFX1NIX1ZFUlNJT04g
MTYzCisjZGVmaW5lIEFOR0xFX1NIX1ZFUlNJT04gMTc0CiAKLXR5cGVkZWYgZW51bSB7CitlbnVt
IFNoU2hhZGVyU3BlYworewogICAgIFNIX0dMRVMyX1NQRUMsCiAgICAgU0hfV0VCR0xfU1BFQywK
IApAQCAtNjAsMTAgKzM3LDkgQEAgdHlwZWRlZiBlbnVtIHsKIAogICAgIFNIX0dMRVMzXzFfU1BF
QywKICAgICBTSF9XRUJHTDNfU1BFQywKK307CiAKLX0gU2hTaGFkZXJTcGVjOwotCi10eXBlZGVm
IGVudW0KK2VudW0gU2hTaGFkZXJPdXRwdXQKIHsKICAgICAvLyBFU1NMIG91dHB1dCBvbmx5IHN1
cHBvcnRlZCBpbiBzb21lIGNvbmZpZ3VyYXRpb25zLgogICAgIFNIX0VTU0xfT1VUUFVUID0gMHg4
QjQ1LApAQCAtODIsMjEgKzU4LDE4IEBAIHR5cGVkZWYgZW51bQogICAgIFNIX0dMU0xfNDQwX0NP
UkVfT1VUUFVUID0gMHg4Qjg3LAogICAgIFNIX0dMU0xfNDUwX0NPUkVfT1VUUFVUID0gMHg4Qjg4
LAogCi0gICAgLy8gSExTTCBvdXRwdXQgb25seSBzdXBwb3J0ZWQgaW4gc29tZSBjb25maWd1cmF0
aW9ucy4KLSAgICAvLyBEZXByZWNhdGVkOgotICAgIFNIX0hMU0xfT1VUUFVUICAgPSAweDhCNDgs
Ci0gICAgU0hfSExTTDlfT1VUUFVUICA9IDB4OEI0OCwKLSAgICBTSF9ITFNMMTFfT1VUUFVUID0g
MHg4QjQ5LAotCiAgICAgLy8gUHJlZmVyIHVzaW5nIHRoZXNlIHRvIHNwZWNpZnkgSExTTCBvdXRw
dXQgdHlwZToKICAgICBTSF9ITFNMXzNfMF9PVVRQVVQgICAgICAgPSAweDhCNDgsICAvLyBEM0Qg
OQogICAgIFNIX0hMU0xfNF8xX09VVFBVVCAgICAgICA9IDB4OEI0OSwgIC8vIEQzRCAxMQotICAg
IFNIX0hMU0xfNF8wX0ZMOV8zX09VVFBVVCA9IDB4OEI0QSAgIC8vIEQzRCAxMSBmZWF0dXJlIGxl
dmVsIDlfMwotfSBTaFNoYWRlck91dHB1dDsKKyAgICBTSF9ITFNMXzRfMF9GTDlfM19PVVRQVVQg
PSAweDhCNEEsICAvLyBEM0QgMTEgZmVhdHVyZSBsZXZlbCA5XzMKIAotLy8gQ29tcGlsZSBvcHRp
b25zLgorICAgIC8vIE91dHB1dCBzcGVjaWFsaXplZCBHTFNMIHRvIGJlIGZlZCB0byBnbHNsYW5n
IGZvciBWdWxrYW4gU1BJUi4KKyAgICBTSF9HTFNMX1ZVTEtBTl9PVVRQVVQgPSAweDhCNEIsCit9
OwogCi10eXBlZGVmIHVpbnQ2NF90IFNoQ29tcGlsZU9wdGlvbnM7CisvLyBDb21waWxlIG9wdGlv
bnMuCisvLyBUaGUgQ29tcGlsZSBvcHRpb25zIHR5cGUgaXMgZGVmaW5lZCBpbiBTaGFkZXJWYXJz
LmgsIHRvIGFsbG93IEFOR0xFIHRvIGltcG9ydCB0aGUgU2hhZGVyVmFycworLy8gaGVhZGVyIHdp
dGhvdXQgbmVlZGluZyB0aGUgU2hhZGVyTGFuZyBoZWFkZXIuIFRoaXMgYXZvaWRzIHNvbWUgY29u
ZmxpY3RzIHdpdGggZ2xzbGFuZy4KIAogY29uc3QgU2hDb21waWxlT3B0aW9ucyBTSF9WQUxJREFU
RSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKIGNvbnN0IFNoQ29tcGlsZU9wdGlvbnMg
U0hfVkFMSURBVEVfTE9PUF9JTkRFWElORyAgICAgICAgICAgICA9IFVJTlQ2NF9DKDEpIDw8IDA7
CkBAIC0xMDUsMTIgKzc4LDI5IEBAIGNvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfT0JKRUNUX0NP
REUgICAgICAgICAgICAgICAgICAgICAgICA9IFVJTlQ2NF9DKDEpIDw8IDI7CiBjb25zdCBTaENv
bXBpbGVPcHRpb25zIFNIX1ZBUklBQkxFUyAgICAgICAgICAgICAgICAgICAgICAgICAgPSBVSU5U
NjRfQygxKSA8PCAzOwogY29uc3QgU2hDb21waWxlT3B0aW9ucyBTSF9MSU5FX0RJUkVDVElWRVMg
ICAgICAgICAgICAgICAgICAgID0gVUlOVDY0X0MoMSkgPDwgNDsKIGNvbnN0IFNoQ29tcGlsZU9w
dGlvbnMgU0hfU09VUkNFX1BBVEggICAgICAgICAgICAgICAgICAgICAgICA9IFVJTlQ2NF9DKDEp
IDw8IDU7Ci1jb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX1VOUk9MTF9GT1JfTE9PUF9XSVRIX0lO
VEVHRVJfSU5ERVggPSBVSU5UNjRfQygxKSA8PCA2OwotLy8gSWYgYSBzYW1wbGVyIGFycmF5IGlu
ZGV4IGhhcHBlbnMgdG8gYmUgYSBsb29wIGluZGV4LAotLy8gICAxKSBpZiBpdHMgdHlwZSBpcyBp
bnRlZ2VyLCB1bnJvbGwgdGhlIGxvb3AuCi0vLyAgIDIpIGlmIGl0cyB0eXBlIGlzIGZsb2F0LCBm
YWlsIHRoZSBzaGFkZXIgY29tcGlsZS4KLS8vIFRoaXMgaXMgdG8gd29yayBhcm91bmQgYSBtYWMg
ZHJpdmVyIGJ1Zy4KLWNvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfVU5ST0xMX0ZPUl9MT09QX1dJ
VEhfU0FNUExFUl9BUlJBWV9JTkRFWCA9IFVJTlQ2NF9DKDEpIDw8IDc7CisKKy8vIFRoaXMgZmxh
ZyB3aWxsIGtlZXAgaW52YXJpYW50IGRlY2xhcmF0aW9uIGZvciBpbnB1dCBpbiBmcmFnbWVudCBz
aGFkZXIgZm9yIEdMU0wgPj00LjIwIG9uIEFNRC4KKy8vIEZyb20gR0xTTCA+PSA0LjIwLCBpdCdz
IG9wdGlvbmFsIHRvIGFkZCBpbnZhcmlhbnQgZm9yIGZyYWdtZW50IGlucHV0LCBidXQgR1BVIHZl
bmRvcnMgaGF2ZQorLy8gZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBhYm91dCB0aGlzLiBTb21l
IGRyaXZlcnMgZm9yYmlkIGludmFyaWFudCBpbiBmcmFnbWVudCBmb3IgR0xTTD49IDQuMjAsCisv
LyBlLmcuIExpbnV4IE1lc2EsIHNvbWUgZHJpdmVycyB0cmVhdCB0aGF0IGFzIG9wdGlvbmFsLCBl
LmcuIE5WSURJQSwgc29tZSBkcml2ZXJzIHJlcXVpcmUgaW52YXJpYW50CisvLyBtdXN0IG1hdGNo
IGJldHdlZW4gdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXIsIGUuZy4gQU1ELiBUaGUgYmVoYXZp
b3Igb24gQU1EIGlzIG9idmlvdXNseSB3cm9uZy4KKy8vIFJlbW92ZSBpbnZhcmlhbnQgZm9yIGlu
cHV0IGluIGZyYWdtZW50IHNoYWRlciB0byB3b3JrYXJvdW5kIHRoZSByZXN0cmljdGlvbiBvbiBJ
bnRlbCBNZXNhLgorLy8gQnV0IGRvbid0IHJlbW92ZSBvbiBBTUQgTGludXggdG8gYXZvaWQgdHJp
Z2dlcmluZyB0aGUgYnVnIG9uIEFNRC4KK2NvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfRE9OVF9S
RU1PVkVfSU5WQVJJQU5UX0ZPUl9GUkFHTUVOVF9JTlBVVCA9IFVJTlQ2NF9DKDEpIDw8IDY7CisK
Ky8vIER1ZSB0byBzcGVjIGRpZmZlcmVuY2UgYmV0d2VlbiBHTFNMIDQuMSBvciBsb3dlciBhbmQg
RVNTTDMsIHNvbWUgcGxhdGZvcm1zIChmb3IgZXhhbXBsZSwgTWFjIE9TWAorLy8gY29yZSBwcm9m
aWxlKSByZXF1aXJlIGEgdmFyaWFibGUncyAiaW52YXJpYW50Ii8iY2VudHJvaWQiIHF1YWxpZmll
cnMgdG8gbWF0Y2ggYmV0d2VlbiB2ZXJ0ZXggYW5kCisvLyBmcmFnbWVudCBzaGFkZXIuIEEgc2lt
cGxlIHNvbHV0aW9uIHRvIGFsbG93IHN1Y2ggc2hhZGVycyB0byBsaW5rIGlzIHRvIG9taXQgdGhl
IHR3byBxdWFsaWZpZXJzLgorLy8gQU1EIGRyaXZlciBpbiBMaW51eCByZXF1aXJlcyBpbnZhcmlh
bnQgcXVhbGlmaWVyIHRvIG1hdGNoIGJldHdlZW4gdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXJz
LAorLy8gd2hpbGUgRVNTTDMgZGlzYWxsb3dzIGludmFyaWFudCBxdWFsaWZpZXIgaW4gZnJhZ21l
bnQgc2hhZGVyIGFuZCBHTFNMID49IDQuMiBkb2Vzbid0IHJlcXVpcmUKKy8vIGludmFyaWFudCBx
dWFsaWZpZXIgdG8gbWF0Y2ggYmV0d2VlbiBzaGFkZXJzLiBSZW1vdmUgaW52YXJpYW50IHF1YWxp
ZmllciBmcm9tIHZlcnRleCBzaGFkZXIgdG8KKy8vIHdvcmthcm91bmQgQU1EIGRyaXZlciBidWcu
CisvLyBOb3RlIHRoYXQgdGhlIHR3byBmbGFncyB0YWtlIGVmZmVjdCBvbiBFU1NMMyBpbnB1dCBz
aGFkZXJzIHRyYW5zbGF0ZWQgdG8gR0xTTCA0LjEgb3IgbG93ZXIgYW5kIHRvCisvLyBHTFNMIDQu
MiBvciBuZXdlciBvbiBMaW51eCBBTUQuCisvLyBUT0RPKHptbyk6IFRoaXMgaXMgbm90IGEgZ29v
ZCBsb25nLXRlcm0gc29sdXRpb24uIFNpbXBseSBkcm9wcGluZyB0aGVzZSBxdWFsaWZpZXJzIG1h
eSBicmVhayBzb21lCisvLyBkZXZlbG9wZXJzJyBjb250ZW50LiBBIG1vcmUgY29tcGxleCB3b3Jr
YXJvdW5kIG9mIGR5bmFtaWNhbGx5IGdlbmVyYXRpbmcsIGNvbXBpbGluZywgYW5kCisvLyByZS1s
aW5raW5nIHNoYWRlcnMgdGhhdCB1c2UgdGhlc2UgcXVhbGlmaWVycyBzaG91bGQgYmUgaW1wbGVt
ZW50ZWQuCitjb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX1JFTU9WRV9JTlZBUklBTlRfQU5EX0NF
TlRST0lEX0ZPUl9FU1NMMyA9IFVJTlQ2NF9DKDEpIDw8IDc7CiAKIC8vIFRoaXMgZmxhZyB3b3Jr
cyBhcm91bmQgYnVnIGluIEludGVsIE1hYyBkcml2ZXJzIHJlbGF0ZWQgdG8gYWJzKGkpIHdoZXJl
CiAvLyBpIGlzIGFuIGludGVnZXIuCkBAIC0yMTYsMzYgKzIwNiwzNyBAQCBjb25zdCBTaENvbXBp
bGVPcHRpb25zIFNIX0VNVUxBVEVfSVNOQU5fRkxPQVRfRlVOQ1RJT04gPSBVSU5UNjRfQygxKSA8
PCAyNzsKIC8vIGxheW91dCBxdWFsaWZpZXIgdG8gYmUgY29uc2lkZXJlZCBhY3RpdmUuIFRoZSB1
bmlmb3JtIGJsb2NrIGl0c2VsZiBpcyBhbHNvIGNvbnNpZGVyZWQgYWN0aXZlLgogY29uc3QgU2hD
b21waWxlT3B0aW9ucyBTSF9VU0VfVU5VU0VEX1NUQU5EQVJEX1NIQVJFRF9CTE9DS1MgPSBVSU5U
NjRfQygxKSA8PCAyODsKIAotLy8gRGVmaW5lcyBhbHRlcm5hdGUgc3RyYXRlZ2llcyBmb3IgaW1w
bGVtZW50aW5nIGFycmF5IGluZGV4IGNsYW1waW5nLgotdHlwZWRlZiBlbnVtIHsKLSAgLy8gVXNl
IHRoZSBjbGFtcCBpbnRyaW5zaWMgZm9yIGFycmF5IGluZGV4IGNsYW1waW5nLgotICBTSF9DTEFN
UF9XSVRIX0NMQU1QX0lOVFJJTlNJQyA9IDEsCisvLyBUaGlzIGZsYWcgd29ya3MgYXJvdW5kIGEg
YnVnIGluIHVuYXJ5IG1pbnVzIG9wZXJhdG9yIG9uIGZsb2F0IG51bWJlcnMgb24gSW50ZWwKKy8v
IE1hYyBPU1ggMTAuMTEgZHJpdmVycy4gSXQgd29ya3MgYnkgdHJhbnNsYXRpbmcgLWZsb2F0IGlu
dG8gMC4wIC0gZmxvYXQuCitjb25zdCBTaENvbXBpbGVPcHRpb25zIFNIX1JFV1JJVEVfRkxPQVRf
VU5BUllfTUlOVVNfT1BFUkFUT1IgPSBVSU5UNjRfQygxKSA8PCAyOTsKIAotICAvLyBVc2UgYSB1
c2VyLWRlZmluZWQgZnVuY3Rpb24gZm9yIGFycmF5IGluZGV4IGNsYW1waW5nLgotICBTSF9DTEFN
UF9XSVRIX1VTRVJfREVGSU5FRF9JTlRfQ0xBTVBfRlVOQ1RJT04KLX0gU2hBcnJheUluZGV4Q2xh
bXBpbmdTdHJhdGVneTsKKy8vIFRoaXMgZmxhZyB3b3JrcyBhcm91bmQgYSBidWcgaW4gZXZhbHVh
dGluZyBhdGFuKHksIHgpIG9uIHNvbWUgTlZJRElBIE9wZW5HTCBkcml2ZXJzLgorLy8gSXQgd29y
a3MgYnkgdXNpbmcgYW4gZXhwcmVzc2lvbiB0byBlbXVsYXRlIHRoaXMgZnVuY3Rpb24uCitjb25z
dCBTaENvbXBpbGVPcHRpb25zIFNIX0VNVUxBVEVfQVRBTjJfRkxPQVRfRlVOQ1RJT04gPSBVSU5U
NjRfQygxKSA8PCAzMDsKIAotLy8KLS8vIERyaXZlciBtdXN0IGNhbGwgdGhpcyBmaXJzdCwgb25j
ZSwgYmVmb3JlIGRvaW5nIGFueSBvdGhlcgotLy8gY29tcGlsZXIgb3BlcmF0aW9ucy4KLS8vIElm
IHRoZSBmdW5jdGlvbiBzdWNjZWVkcywgdGhlIHJldHVybiB2YWx1ZSBpcyB0cnVlLCBlbHNlIGZh
bHNlLgotLy8KLUNPTVBJTEVSX0VYUE9SVCBib29sIFNoSW5pdGlhbGl6ZSgpOwotLy8KLS8vIERy
aXZlciBzaG91bGQgY2FsbCB0aGlzIGF0IHNodXRkb3duLgotLy8gSWYgdGhlIGZ1bmN0aW9uIHN1
Y2NlZWRzLCB0aGUgcmV0dXJuIHZhbHVlIGlzIHRydWUsIGVsc2UgZmFsc2UuCi0vLwotQ09NUElM
RVJfRVhQT1JUIGJvb2wgU2hGaW5hbGl6ZSgpOworLy8gU2V0IHRvIDEgdG8gdHJhbnNsYXRlIGds
X1ZpZXdJRF9PVlIgdG8gYW4gdW5pZm9ybSBzbyB0aGF0IHRoZSBleHRlbnNpb24gY2FuIGJlIGVt
dWxhdGVkLgorLy8gInVuaWZvcm0gaGlnaHAgdWludCB3ZWJnbF9hbmdsZV9WaWV3SURfT1ZSIi4K
K2NvbnN0IFNoQ29tcGlsZU9wdGlvbnMgU0hfVFJBTlNMQVRFX1ZJRVdJRF9PVlJfVE9fVU5JRk9S
TSA9IFVJTlQ2NF9DKDEpIDw8IDMxOworCisvLyBEZWZpbmVzIGFsdGVybmF0ZSBzdHJhdGVnaWVz
IGZvciBpbXBsZW1lbnRpbmcgYXJyYXkgaW5kZXggY2xhbXBpbmcuCitlbnVtIFNoQXJyYXlJbmRl
eENsYW1waW5nU3RyYXRlZ3kKK3sKKyAgICAvLyBVc2UgdGhlIGNsYW1wIGludHJpbnNpYyBmb3Ig
YXJyYXkgaW5kZXggY2xhbXBpbmcuCisgICAgU0hfQ0xBTVBfV0lUSF9DTEFNUF9JTlRSSU5TSUMg
PSAxLAorCisgICAgLy8gVXNlIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGZvciBhcnJheSBpbmRl
eCBjbGFtcGluZy4KKyAgICBTSF9DTEFNUF9XSVRIX1VTRVJfREVGSU5FRF9JTlRfQ0xBTVBfRlVO
Q1RJT04KK307CiAKIC8vIFRoZSA2NCBiaXRzIGhhc2ggZnVuY3Rpb24uIFRoZSBmaXJzdCBwYXJh
bWV0ZXIgaXMgdGhlIGlucHV0IHN0cmluZzsgdGhlCiAvLyBzZWNvbmQgcGFyYW1ldGVyIGlzIHRo
ZSBzdHJpbmcgbGVuZ3RoLgotdHlwZWRlZiBraHJvbm9zX3VpbnQ2NF90ICgqU2hIYXNoRnVuY3Rp
b242NCkoY29uc3QgY2hhciosIHNpemVfdCk7Cit1c2luZyBTaEhhc2hGdW5jdGlvbjY0ID0ga2hy
b25vc191aW50NjRfdCAoKikoY29uc3QgY2hhciAqLCBzaXplX3QpOwogCiAvLwogLy8gSW1wbGVt
ZW50YXRpb24gZGVwZW5kZW50IGJ1aWx0LWluIHJlc291cmNlcyAoY29uc3RhbnRzIGFuZCBleHRl
bnNpb25zKS4KIC8vIFRoZSBuYW1lcyBmb3IgdGhlc2UgcmVzb3VyY2VzIGhhcyBiZWVuIG9idGFp
bmVkIGJ5IHN0cmlwcGluZyBnbF8vR0xfLgogLy8KLXR5cGVkZWYgc3RydWN0CitzdHJ1Y3QgU2hC
dWlsdEluUmVzb3VyY2VzCiB7CiAgICAgLy8gQ29uc3RhbnRzLgogICAgIGludCBNYXhWZXJ0ZXhB
dHRyaWJzOwpAQCAtMjcyLDYgKzI2Myw4IEBAIHR5cGVkZWYgc3RydWN0CiAgICAgaW50IEVYVF9z
aGFkZXJfZnJhbWVidWZmZXJfZmV0Y2g7CiAgICAgaW50IE5WX3NoYWRlcl9mcmFtZWJ1ZmZlcl9m
ZXRjaDsKICAgICBpbnQgQVJNX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaDsKKyAgICBpbnQgT1ZS
X211bHRpdmlldzsKKyAgICBpbnQgRVhUX1lVVl90YXJnZXQ7CiAKICAgICAvLyBTZXQgdG8gMSB0
byBlbmFibGUgcmVwbGFjaW5nIEdMX0VYVF9kcmF3X2J1ZmZlcnMgI2V4dGVuc2lvbiBkaXJlY3Rp
dmVzCiAgICAgLy8gd2l0aCBHTF9OVl9kcmF3X2J1ZmZlcnMgaW4gRVNTTCBvdXRwdXQuIFRoaXMg
ZmxhZyBjYW4gYmUgdXNlZCB0byBlbXVsYXRlCkBAIC0yOTgsNiArMjkxLDkgQEAgdHlwZWRlZiBz
dHJ1Y3QKICAgICAvLyBHTEVTIFNMIHZlcnNpb24gMTAwIGdsX01heER1YWxTb3VyY2VEcmF3QnVm
ZmVyc0VYVCB2YWx1ZSBmb3IgRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQuCiAgICAgaW50IE1heER1
YWxTb3VyY2VEcmF3QnVmZmVyczsKIAorICAgIC8vIFZhbHVlIG9mIEdMX01BWF9WSUVXU19PVlIu
CisgICAgaW50IE1heFZpZXdzT1ZSOworCiAgICAgLy8gTmFtZSBIYXNoaW5nLgogICAgIC8vIFNl
dCBhIDY0IGJpdCBoYXNoIGZ1bmN0aW9uIHRvIGVuYWJsZSB1c2VyLWRlZmluZWQgbmFtZSBoYXNo
aW5nLgogICAgIC8vIERlZmF1bHQgaXMgTlVMTC4KQEAgLTMzNCw2ICszMzAsOSBAQCB0eXBlZGVm
IHN0cnVjdAogICAgIC8vIG1heGltdW0gdG90YWwgbnVtYmVyIG9mIGltYWdlIHVuaWZvcm1zIGlu
IGEgcHJvZ3JhbQogICAgIGludCBNYXhDb21iaW5lZEltYWdlVW5pZm9ybXM7CiAKKyAgICAvLyBt
YXhpbXVtIG51bWJlciBvZiB1bmlmb3JtIGxvY2F0aW9ucworICAgIGludCBNYXhVbmlmb3JtTG9j
YXRpb25zOworCiAgICAgLy8gbWF4aW11bSBudW1iZXIgb2Ygc3Nib3MgYW5kIGltYWdlcyBpbiBh
IHNoYWRlcgogICAgIGludCBNYXhDb21iaW5lZFNoYWRlck91dHB1dFJlc291cmNlczsKIApAQCAt
Mzc3LDE1ICszNzYsNyBAQCB0eXBlZGVmIHN0cnVjdAogCiAgICAgLy8gbWF4aW11bSBudW1iZXIg
b2YgYnVmZmVyIG9iamVjdCBzdG9yYWdlIGluIG1hY2hpbmUgdW5pdHMKICAgICBpbnQgTWF4QXRv
bWljQ291bnRlckJ1ZmZlclNpemU7Ci0KLX0gU2hCdWlsdEluUmVzb3VyY2VzOwotCi0vLwotLy8g
SW5pdGlhbGl6ZSBidWlsdC1pbiByZXNvdXJjZXMgd2l0aCBtaW5pbXVtIGV4cGVjdGVkIHZhbHVl
cy4KLS8vIFBhcmFtZXRlcnM6Ci0vLyByZXNvdXJjZXM6IFRoZSBvYmplY3QgdG8gaW5pdGlhbGl6
ZS4gV2lsbCBiZSBjb21wYXJhYmxlIHdpdGggbWVtY21wLgotLy8KLUNPTVBJTEVSX0VYUE9SVCB2
b2lkIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoU2hCdWlsdEluUmVzb3VyY2VzICpyZXNvdXJjZXMp
OworfTsKIAogLy8KIC8vIFNoSGFuZGxlIGhlbGQgYnkgYnV0IG9wYXF1ZSB0byB0aGUgZHJpdmVy
LiAgSXQgaXMgYWxsb2NhdGVkLApAQCAtMzk0LDQzICszODUsNjAgQEAgQ09NUElMRVJfRVhQT1JU
IHZvaWQgU2hJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0SW5SZXNvdXJjZXMgKnJlc291cmNl
cyk7CiAvLwogLy8gSWYgaGFuZGxlIGNyZWF0aW9uIGZhaWxzLCAwIHdpbGwgYmUgcmV0dXJuZWQu
CiAvLwotdHlwZWRlZiB2b2lkICpTaEhhbmRsZTsKK3VzaW5nIFNoSGFuZGxlID0gdm9pZCAqOwor
CituYW1lc3BhY2Ugc2gKK3sKKworLy8KKy8vIERyaXZlciBtdXN0IGNhbGwgdGhpcyBmaXJzdCwg
b25jZSwgYmVmb3JlIGRvaW5nIGFueSBvdGhlciBjb21waWxlciBvcGVyYXRpb25zLgorLy8gSWYg
dGhlIGZ1bmN0aW9uIHN1Y2NlZWRzLCB0aGUgcmV0dXJuIHZhbHVlIGlzIHRydWUsIGVsc2UgZmFs
c2UuCisvLworYm9vbCBJbml0aWFsaXplKCk7CisvLworLy8gRHJpdmVyIHNob3VsZCBjYWxsIHRo
aXMgYXQgc2h1dGRvd24uCisvLyBJZiB0aGUgZnVuY3Rpb24gc3VjY2VlZHMsIHRoZSByZXR1cm4g
dmFsdWUgaXMgdHJ1ZSwgZWxzZSBmYWxzZS4KKy8vCitib29sIEZpbmFsaXplKCk7CisKKy8vCisv
LyBJbml0aWFsaXplIGJ1aWx0LWluIHJlc291cmNlcyB3aXRoIG1pbmltdW0gZXhwZWN0ZWQgdmFs
dWVzLgorLy8gUGFyYW1ldGVyczoKKy8vIHJlc291cmNlczogVGhlIG9iamVjdCB0byBpbml0aWFs
aXplLiBXaWxsIGJlIGNvbXBhcmFibGUgd2l0aCBtZW1jbXAuCisvLwordm9pZCBJbml0QnVpbHRJ
blJlc291cmNlcyhTaEJ1aWx0SW5SZXNvdXJjZXMgKnJlc291cmNlcyk7CiAKIC8vCi0vLyBSZXR1
cm5zIHRoZSBhIGNvbmNhdGVuYXRlZCBsaXN0IG9mIHRoZSBpdGVtcyBpbiBTaEJ1aWx0SW5SZXNv
dXJjZXMgYXMgYQotLy8gbnVsbC10ZXJtaW5hdGVkIHN0cmluZy4KKy8vIFJldHVybnMgdGhlIGEg
Y29uY2F0ZW5hdGVkIGxpc3Qgb2YgdGhlIGl0ZW1zIGluIFNoQnVpbHRJblJlc291cmNlcyBhcyBh
IG51bGwtdGVybWluYXRlZCBzdHJpbmcuCiAvLyBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgdXBkYXRl
ZCB3aGVuZXZlciBTaEJ1aWx0SW5SZXNvdXJjZXMgaXMgY2hhbmdlZC4KIC8vIFBhcmFtZXRlcnM6
CiAvLyBoYW5kbGU6IFNwZWNpZmllcyB0aGUgaGFuZGxlIG9mIHRoZSBjb21waWxlciB0byBiZSB1
c2VkLgotQ09NUElMRVJfRVhQT1JUIGNvbnN0IHN0ZDo6c3RyaW5nICZTaEdldEJ1aWx0SW5SZXNv
dXJjZXNTdHJpbmcoY29uc3QgU2hIYW5kbGUgaGFuZGxlKTsKK2NvbnN0IHN0ZDo6c3RyaW5nICZH
ZXRCdWlsdEluUmVzb3VyY2VzU3RyaW5nKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7CiAKIC8vCiAv
LyBEcml2ZXIgY2FsbHMgdGhlc2UgdG8gY3JlYXRlIGFuZCBkZXN0cm95IGNvbXBpbGVyIG9iamVj
dHMuCiAvLwotLy8gUmV0dXJucyB0aGUgaGFuZGxlIG9mIGNvbnN0cnVjdGVkIGNvbXBpbGVyLCBu
dWxsIGlmIHRoZSByZXF1ZXN0ZWQgY29tcGlsZXIgaXMKLS8vIG5vdCBzdXBwb3J0ZWQuCisvLyBS
ZXR1cm5zIHRoZSBoYW5kbGUgb2YgY29uc3RydWN0ZWQgY29tcGlsZXIsIG51bGwgaWYgdGhlIHJl
cXVlc3RlZCBjb21waWxlciBpcyBub3Qgc3VwcG9ydGVkLgogLy8gUGFyYW1ldGVyczoKIC8vIHR5
cGU6IFNwZWNpZmllcyB0aGUgdHlwZSBvZiBzaGFkZXIgLSBHTF9GUkFHTUVOVF9TSEFERVIgb3Ig
R0xfVkVSVEVYX1NIQURFUi4KLS8vIHNwZWM6IFNwZWNpZmllcyB0aGUgbGFuZ3VhZ2Ugc3BlYyB0
aGUgY29tcGlsZXIgbXVzdCBjb25mb3JtIHRvIC0KLS8vICAgICAgIFNIX0dMRVMyX1NQRUMgb3Ig
U0hfV0VCR0xfU1BFQy4KKy8vIHNwZWM6IFNwZWNpZmllcyB0aGUgbGFuZ3VhZ2Ugc3BlYyB0aGUg
Y29tcGlsZXIgbXVzdCBjb25mb3JtIHRvIC0gU0hfR0xFUzJfU1BFQyBvciBTSF9XRUJHTF9TUEVD
LgogLy8gb3V0cHV0OiBTcGVjaWZpZXMgdGhlIG91dHB1dCBjb2RlIHR5cGUgLSBmb3IgZXhhbXBs
ZSBTSF9FU1NMX09VVFBVVCwgU0hfR0xTTF9PVVRQVVQsCiAvLyAgICAgICAgIFNIX0hMU0xfM18w
X09VVFBVVCBvciBTSF9ITFNMXzRfMV9PVVRQVVQuIE5vdGU6IEVhY2ggb3V0cHV0IHR5cGUgbWF5
IG9ubHkKIC8vICAgICAgICAgYmUgc3VwcG9ydGVkIGluIHNvbWUgY29uZmlndXJhdGlvbnMuCiAv
LyByZXNvdXJjZXM6IFNwZWNpZmllcyB0aGUgYnVpbHQtaW4gcmVzb3VyY2VzLgotQ09NUElMRVJf
RVhQT1JUIFNoSGFuZGxlIFNoQ29uc3RydWN0Q29tcGlsZXIoCi0gICAgc2g6OkdMZW51bSB0eXBl
LAotICAgIFNoU2hhZGVyU3BlYyBzcGVjLAotICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCwKLSAg
ICBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMgKnJlc291cmNlcyk7Ci1DT01QSUxFUl9FWFBPUlQg
dm9pZCBTaERlc3RydWN0KFNoSGFuZGxlIGhhbmRsZSk7CitTaEhhbmRsZSBDb25zdHJ1Y3RDb21w
aWxlcihzaDo6R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTaFNoYWRl
clNwZWMgc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91
dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNl
cyAqcmVzb3VyY2VzKTsKK3ZvaWQgRGVzdHJ1Y3QoU2hIYW5kbGUgaGFuZGxlKTsKIAogLy8KIC8v
IENvbXBpbGVzIHRoZSBnaXZlbiBzaGFkZXIgc291cmNlLgogLy8gSWYgdGhlIGZ1bmN0aW9uIHN1
Y2NlZWRzLCB0aGUgcmV0dXJuIHZhbHVlIGlzIHRydWUsIGVsc2UgZmFsc2UuCiAvLyBQYXJhbWV0
ZXJzOgogLy8gaGFuZGxlOiBTcGVjaWZpZXMgdGhlIGhhbmRsZSBvZiBjb21waWxlciB0byBiZSB1
c2VkLgotLy8gc2hhZGVyU3RyaW5nczogU3BlY2lmaWVzIGFuIGFycmF5IG9mIHBvaW50ZXJzIHRv
IG51bGwtdGVybWluYXRlZCBzdHJpbmdzCi0vLyAgICAgICAgICAgICAgICBjb250YWluaW5nIHRo
ZSBzaGFkZXIgc291cmNlIGNvZGUuCisvLyBzaGFkZXJTdHJpbmdzOiBTcGVjaWZpZXMgYW4gYXJy
YXkgb2YgcG9pbnRlcnMgdG8gbnVsbC10ZXJtaW5hdGVkIHN0cmluZ3MgY29udGFpbmluZyB0aGUg
c2hhZGVyCisvLyBzb3VyY2UgY29kZS4KIC8vIG51bVN0cmluZ3M6IFNwZWNpZmllcyB0aGUgbnVt
YmVyIG9mIGVsZW1lbnRzIGluIHNoYWRlclN0cmluZ3MgYXJyYXkuCiAvLyBjb21waWxlT3B0aW9u
czogQSBtYXNrIGNvbnRhaW5pbmcgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOgogLy8gU0hfVkFM
SURBVEU6IFZhbGlkYXRlcyBzaGFkZXIgdG8gZW5zdXJlIHRoYXQgaXQgY29uZm9ybXMgdG8gdGhl
IHNwZWMKQEAgLTQ0Miw0NCArNDUwLDQxIEBAIENPTVBJTEVSX0VYUE9SVCB2b2lkIFNoRGVzdHJ1
Y3QoU2hIYW5kbGUgaGFuZGxlKTsKIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXJl
IGlzIG5vIG5lZWQgdG8gc3BlY2lmeSB0aGlzIHBhcmFtZXRlciB3aGVuCiAvLyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb21waWxpbmcgZm9yIFdlYkdMIC0gaXQgaXMgaW1wbGllZC4KIC8v
IFNIX0lOVEVSTUVESUFURV9UUkVFOiBXcml0ZXMgaW50ZXJtZWRpYXRlIHRyZWUgdG8gaW5mbyBs
b2cuCi0vLyAgICAgICAgICAgICAgICAgICAgICAgQ2FuIGJlIHF1ZXJpZWQgYnkgY2FsbGluZyBT
aEdldEluZm9Mb2coKS4KKy8vICAgICAgICAgICAgICAgICAgICAgICBDYW4gYmUgcXVlcmllZCBi
eSBjYWxsaW5nIHNoOjpHZXRJbmZvTG9nKCkuCiAvLyBTSF9PQkpFQ1RfQ09ERTogVHJhbnNsYXRl
cyBpbnRlcm1lZGlhdGUgdHJlZSB0byBnbHNsIG9yIGhsc2wgc2hhZGVyLgotLy8gICAgICAgICAg
ICAgICAgIENhbiBiZSBxdWVyaWVkIGJ5IGNhbGxpbmcgU2hHZXRPYmplY3RDb2RlKCkuCisvLyAg
ICAgICAgICAgICAgICAgQ2FuIGJlIHF1ZXJpZWQgYnkgY2FsbGluZyBzaDo6R2V0T2JqZWN0Q29k
ZSgpLgogLy8gU0hfVkFSSUFCTEVTOiBFeHRyYWN0cyBhdHRyaWJ1dGVzLCB1bmlmb3JtcywgYW5k
IHZhcnlpbmdzLgogLy8gICAgICAgICAgICAgICBDYW4gYmUgcXVlcmllZCBieSBjYWxsaW5nIFNo
R2V0VmFyaWFibGVJbmZvKCkuCiAvLwotQ09NUElMRVJfRVhQT1JUIGJvb2wgU2hDb21waWxlKGNv
bnN0IFNoSGFuZGxlIGhhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICpjb25zdCBzaGFkZXJTdHJpbmdzW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG51bVN0cmluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucyk7Citib29sIENvbXBpbGUoY29uc3QgU2hI
YW5kbGUgaGFuZGxlLAorICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0IHNoYWRlclN0cmlu
Z3NbXSwKKyAgICAgICAgICAgICBzaXplX3QgbnVtU3RyaW5ncywKKyAgICAgICAgICAgICBTaENv
bXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zKTsKIAogLy8gQ2xlYXJzIHRoZSByZXN1bHRzIGZy
b20gdGhlIHByZXZpb3VzIGNvbXBpbGF0aW9uLgotQ09NUElMRVJfRVhQT1JUIHZvaWQgU2hDbGVh
clJlc3VsdHMoY29uc3QgU2hIYW5kbGUgaGFuZGxlKTsKK3ZvaWQgQ2xlYXJSZXN1bHRzKGNvbnN0
IFNoSGFuZGxlIGhhbmRsZSk7CiAKIC8vIFJldHVybiB0aGUgdmVyc2lvbiBvZiB0aGUgc2hhZGVy
IGxhbmd1YWdlLgotQ09NUElMRVJfRVhQT1JUIGludCBTaEdldFNoYWRlclZlcnNpb24oY29uc3Qg
U2hIYW5kbGUgaGFuZGxlKTsKK2ludCBHZXRTaGFkZXJWZXJzaW9uKGNvbnN0IFNoSGFuZGxlIGhh
bmRsZSk7CiAKIC8vIFJldHVybiB0aGUgY3VycmVudGx5IHNldCBsYW5ndWFnZSBvdXRwdXQgdHlw
ZS4KLUNPTVBJTEVSX0VYUE9SVCBTaFNoYWRlck91dHB1dCBTaEdldFNoYWRlck91dHB1dFR5cGUo
Ci0gICAgY29uc3QgU2hIYW5kbGUgaGFuZGxlKTsKK1NoU2hhZGVyT3V0cHV0IEdldFNoYWRlck91
dHB1dFR5cGUoY29uc3QgU2hIYW5kbGUgaGFuZGxlKTsKIAogLy8gUmV0dXJucyBudWxsLXRlcm1p
bmF0ZWQgaW5mb3JtYXRpb24gbG9nIGZvciBhIGNvbXBpbGVkIHNoYWRlci4KIC8vIFBhcmFtZXRl
cnM6CiAvLyBoYW5kbGU6IFNwZWNpZmllcyB0aGUgY29tcGlsZXIKLUNPTVBJTEVSX0VYUE9SVCBj
b25zdCBzdGQ6OnN0cmluZyAmU2hHZXRJbmZvTG9nKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7Citj
b25zdCBzdGQ6OnN0cmluZyAmR2V0SW5mb0xvZyhjb25zdCBTaEhhbmRsZSBoYW5kbGUpOwogCiAv
LyBSZXR1cm5zIG51bGwtdGVybWluYXRlZCBvYmplY3QgY29kZSBmb3IgYSBjb21waWxlZCBzaGFk
ZXIuCiAvLyBQYXJhbWV0ZXJzOgogLy8gaGFuZGxlOiBTcGVjaWZpZXMgdGhlIGNvbXBpbGVyCi1D
T01QSUxFUl9FWFBPUlQgY29uc3Qgc3RkOjpzdHJpbmcgJlNoR2V0T2JqZWN0Q29kZShjb25zdCBT
aEhhbmRsZSBoYW5kbGUpOworY29uc3Qgc3RkOjpzdHJpbmcgJkdldE9iamVjdENvZGUoY29uc3Qg
U2hIYW5kbGUgaGFuZGxlKTsKIAotLy8gUmV0dXJucyBhIChvcmlnaW5hbF9uYW1lLCBoYXNoKSBt
YXAgY29udGFpbmluZyBhbGwgdGhlIHVzZXIgZGVmaW5lZAotLy8gbmFtZXMgaW4gdGhlIHNoYWRl
ciwgaW5jbHVkaW5nIHZhcmlhYmxlIG5hbWVzLCBmdW5jdGlvbiBuYW1lcywgc3RydWN0Ci0vLyBu
YW1lcywgYW5kIHN0cnVjdCBmaWVsZCBuYW1lcy4KKy8vIFJldHVybnMgYSAob3JpZ2luYWxfbmFt
ZSwgaGFzaCkgbWFwIGNvbnRhaW5pbmcgYWxsIHRoZSB1c2VyIGRlZmluZWQgbmFtZXMgaW4gdGhl
IHNoYWRlciwKKy8vIGluY2x1ZGluZyB2YXJpYWJsZSBuYW1lcywgZnVuY3Rpb24gbmFtZXMsIHN0
cnVjdCBuYW1lcywgYW5kIHN0cnVjdCBmaWVsZCBuYW1lcy4KIC8vIFBhcmFtZXRlcnM6CiAvLyBo
YW5kbGU6IFNwZWNpZmllcyB0aGUgY29tcGlsZXIKLUNPTVBJTEVSX0VYUE9SVCBjb25zdCBzdGQ6
Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+ICpTaEdldE5hbWVIYXNoaW5nTWFwKAotICAg
IGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7Citjb25zdCBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3Rk
OjpzdHJpbmc+ICpHZXROYW1lSGFzaGluZ01hcChjb25zdCBTaEhhbmRsZSBoYW5kbGUpOwogCiAv
LyBTaGFkZXIgdmFyaWFibGUgaW5zcGVjdGlvbi4KIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIGEg
bGlzdCBvZiB2YXJpYWJsZXMgb2YgdGhlIGRlc2lnbmF0ZWQgdHlwZS4KQEAgLTQ4NywyOSArNDky
LDIzIEBAIENPTVBJTEVSX0VYUE9SVCBjb25zdCBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpz
dHJpbmc+ICpTaEdldE5hbWVIYXNoaW5nTWFwKAogLy8gUmV0dXJucyBOVUxMIG9uIGZhaWx1cmUu
CiAvLyBQYXJhbWV0ZXJzOgogLy8gaGFuZGxlOiBTcGVjaWZpZXMgdGhlIGNvbXBpbGVyCi1DT01Q
SUxFUl9FWFBPUlQgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlVuaWZvcm0+ICpTaEdldFVuaWZvcm1z
KGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7Ci1DT01QSUxFUl9FWFBPUlQgY29uc3Qgc3RkOjp2ZWN0
b3I8c2g6OlZhcnlpbmc+ICpTaEdldFZhcnlpbmdzKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7Ci1D
T01QSUxFUl9FWFBPUlQgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gKlNoR2V0QXR0
cmlidXRlcyhjb25zdCBTaEhhbmRsZSBoYW5kbGUpOwotQ09NUElMRVJfRVhQT1JUIGNvbnN0IHN0
ZDo6dmVjdG9yPHNoOjpPdXRwdXRWYXJpYWJsZT4gKlNoR2V0T3V0cHV0VmFyaWFibGVzKGNvbnN0
IFNoSGFuZGxlIGhhbmRsZSk7Ci1DT01QSUxFUl9FWFBPUlQgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6
OkludGVyZmFjZUJsb2NrPiAqU2hHZXRJbnRlcmZhY2VCbG9ja3MoY29uc3QgU2hIYW5kbGUgaGFu
ZGxlKTsKLUNPTVBJTEVSX0VYUE9SVCBzaDo6V29ya0dyb3VwU2l6ZSBTaEdldENvbXB1dGVTaGFk
ZXJMb2NhbEdyb3VwU2l6ZShjb25zdCBTaEhhbmRsZSBoYW5kbGUpOwotCi10eXBlZGVmIHN0cnVj
dAotewotICAgIHNoOjpHTGVudW0gdHlwZTsKLSAgICBpbnQgc2l6ZTsKLX0gU2hWYXJpYWJsZUlu
Zm87Ci0KLS8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFzc2VkIGluIHZhcmlhYmxlcyBwYWNrIGlu
IG1heFZlY3RvcnMgZm9sbG93aW5nCi0vLyB0aGUgcGFja2luZyBydWxlcyBmcm9tIHRoZSBHTFNM
IDEuMDE3IHNwZWMsIEFwcGVuZGl4IEEsIHNlY3Rpb24gNy4KK2NvbnN0IHN0ZDo6dmVjdG9yPHNo
OjpVbmlmb3JtPiAqR2V0VW5pZm9ybXMoY29uc3QgU2hIYW5kbGUgaGFuZGxlKTsKK2NvbnN0IHN0
ZDo6dmVjdG9yPHNoOjpWYXJ5aW5nPiAqR2V0VmFyeWluZ3MoY29uc3QgU2hIYW5kbGUgaGFuZGxl
KTsKK2NvbnN0IHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGU+ICpHZXRBdHRyaWJ1dGVzKGNvbnN0
IFNoSGFuZGxlIGhhbmRsZSk7Citjb25zdCBzdGQ6OnZlY3RvcjxzaDo6T3V0cHV0VmFyaWFibGU+
ICpHZXRPdXRwdXRWYXJpYWJsZXMoY29uc3QgU2hIYW5kbGUgaGFuZGxlKTsKK2NvbnN0IHN0ZDo6
dmVjdG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4gKkdldEludGVyZmFjZUJsb2Nrcyhjb25zdCBTaEhh
bmRsZSBoYW5kbGUpOworc2g6OldvcmtHcm91cFNpemUgR2V0Q29tcHV0ZVNoYWRlckxvY2FsR3Jv
dXBTaXplKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7CitpbnQgR2V0VmVydGV4U2hhZGVyTnVtVmll
d3MoY29uc3QgU2hIYW5kbGUgaGFuZGxlKTsKKworLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBwYXNz
ZWQgaW4gdmFyaWFibGVzIHBhY2sgaW4gbWF4VmVjdG9ycyBmb2xsb3dpbmd0aGUgcGFja2luZyBy
dWxlcyBmcm9tIHRoZQorLy8gR0xTTCAxLjAxNyBzcGVjLCBBcHBlbmRpeCBBLCBzZWN0aW9uIDcu
CiAvLyBSZXR1cm5zIGZhbHNlIG90aGVyd2lzZS4gQWxzbyBsb29rIGF0IHRoZSBTSF9FTkZPUkNF
X1BBQ0tJTkdfUkVTVFJJQ1RJT05TCiAvLyBmbGFnIGFib3ZlLgogLy8gUGFyYW1ldGVyczoKIC8v
IG1heFZlY3RvcnM6IHRoZSBhdmFpbGFibGUgcm93cyBvZiByZWdpc3RlcnMuCiAvLyB2YXJpYWJs
ZXM6IGFuIGFycmF5IG9mIHZhcmlhYmxlcy4KLUNPTVBJTEVSX0VYUE9SVCBib29sIFNoQ2hlY2tW
YXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKAotICAgIGludCBtYXhWZWN0b3JzLAotICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4gJnZhcmlhYmxlcyk7Citib29sIENo
ZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyhpbnQgbWF4VmVjdG9ycywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpTaGFk
ZXJWYXJpYWJsZT4gJnZhcmlhYmxlcyk7CiAKIC8vIEdpdmVzIHRoZSBjb21waWxlci1hc3NpZ25l
ZCByZWdpc3RlciBmb3IgYW4gaW50ZXJmYWNlIGJsb2NrLgogLy8gVGhlIG1ldGhvZCB3cml0ZXMg
dGhlIHZhbHVlIHRvIHRoZSBvdXRwdXQgdmFyaWFibGUgImluZGV4T3V0Ii4KQEAgLTUxOCwxNCAr
NTE3LDE0IEBAIENPTVBJTEVSX0VYUE9SVCBib29sIFNoQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNr
aW5nTGltaXRzKAogLy8gaGFuZGxlOiBTcGVjaWZpZXMgdGhlIGNvbXBpbGVyCiAvLyBpbnRlcmZh
Y2VCbG9ja05hbWU6IFNwZWNpZmllcyB0aGUgaW50ZXJmYWNlIGJsb2NrCiAvLyBpbmRleE91dDog
b3V0cHV0IHZhcmlhYmxlIHRoYXQgc3RvcmVzIHRoZSBhc3NpZ25lZCByZWdpc3RlcgotQ09NUElM
RVJfRVhQT1JUIGJvb2wgU2hHZXRJbnRlcmZhY2VCbG9ja1JlZ2lzdGVyKGNvbnN0IFNoSGFuZGxl
IGhhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmaW50ZXJmYWNlQmxvY2tOYW1lLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqaW5kZXhPdXQp
OwotCi0vLyBHaXZlcyBhIG1hcCBmcm9tIHVuaWZvcm0gbmFtZXMgdG8gY29tcGlsZXItYXNzaWdu
ZWQgcmVnaXN0ZXJzIGluIHRoZSBkZWZhdWx0Ci0vLyBpbnRlcmZhY2UgYmxvY2suIE5vdGUgdGhh
dCB0aGUgbWFwIGNvbnRhaW5zIGFsc28gcmVnaXN0ZXJzIG9mIHNhbXBsZXJzIHRoYXQKLS8vIGhh
dmUgYmVlbiBleHRyYWN0ZWQgZnJvbSBzdHJ1Y3RzLgotQ09NUElMRVJfRVhQT1JUIGNvbnN0IHN0
ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1bnNpZ25lZCBpbnQ+ICpTaEdldFVuaWZvcm1SZWdpc3Rlck1h
cCgKLSAgICBjb25zdCBTaEhhbmRsZSBoYW5kbGUpOworYm9vbCBHZXRJbnRlcmZhY2VCbG9ja1Jl
Z2lzdGVyKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyAmaW50ZXJmYWNlQmxvY2tOYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqaW5kZXhPdXQpOworCisvLyBHaXZlcyBh
IG1hcCBmcm9tIHVuaWZvcm0gbmFtZXMgdG8gY29tcGlsZXItYXNzaWduZWQgcmVnaXN0ZXJzIGlu
IHRoZSBkZWZhdWx0IGludGVyZmFjZSBibG9jay4KKy8vIE5vdGUgdGhhdCB0aGUgbWFwIGNvbnRh
aW5zIGFsc28gcmVnaXN0ZXJzIG9mIHNhbXBsZXJzIHRoYXQgaGF2ZSBiZWVuIGV4dHJhY3RlZCBm
cm9tIHN0cnVjdHMuCitjb25zdCBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgdW5zaWduZWQgaW50PiAq
R2V0VW5pZm9ybVJlZ2lzdGVyTWFwKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSk7CisKK30gIC8vIG5h
bWVzcGFjZSBzaAogCiAjZW5kaWYgLy8gR0xTTEFOR19TSEFERVJMQU5HX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyVmFycy5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlclZhcnMuaAppbmRl
eCBlMWMxNDBmOTI2MC4uZjcyYjhjNmZhYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJWYXJzLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlclZhcnMuaApAQCAtMTQsMTEgKzE0LDEzIEBA
CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIAotLy8gQXNzdW1lIFNoYWRl
ckxhbmcuaCBpcyBpbmNsdWRlZCBiZWZvcmUgU2hhZGVyVmFycy5oLCBmb3Igc2g6OkdMZW51bQot
Ly8gTm90ZTogbWFrZSBzdXJlIHRvIGluY3JlbWVudCBBTkdMRV9TSF9WRVJTSU9OIHdoZW4gY2hh
bmdpbmcgU2hhZGVyVmFycy5oCisvLyBUaGlzIHR5cGUgaXMgZGVmaW5lZCBoZXJlIHRvIHNpbXBs
aWZ5IEFOR0xFJ3MgaW50ZWdyYXRpb24gd2l0aCBnbHNsYW5nIGZvciBTUElSdi4KK3VzaW5nIFNo
Q29tcGlsZU9wdGlvbnMgPSB1aW50NjRfdDsKIAogbmFtZXNwYWNlIHNoCiB7CisvLyBHTGVudW0g
YWxpYXMKK3R5cGVkZWYgdW5zaWduZWQgaW50IEdMZW51bTsKIAogLy8gVmFyeWluZyBpbnRlcnBv
bGF0aW9uIHF1YWxpZmllciwgc2VlIHNlY3Rpb24gNC4zLjkgb2YgdGhlIEVTU0wgMy4wMC40IHNw
ZWMKIGVudW0gSW50ZXJwb2xhdGlvblR5cGUKQEAgLTI5LDcgKzMxLDcgQEAgZW51bSBJbnRlcnBv
bGF0aW9uVHlwZQogfTsKIAogLy8gVmFsaWRhdGUgbGluayAmIFNTTyBjb25zaXN0ZW5jeSBvZiBp
bnRlcnBvbGF0aW9uIHF1YWxpZmllcnMKLUNPTVBJTEVSX0VYUE9SVCBib29sIEludGVycG9sYXRp
b25UeXBlc01hdGNoKEludGVycG9sYXRpb25UeXBlIGEsIEludGVycG9sYXRpb25UeXBlIGIpOwor
Ym9vbCBJbnRlcnBvbGF0aW9uVHlwZXNNYXRjaChJbnRlcnBvbGF0aW9uVHlwZSBhLCBJbnRlcnBv
bGF0aW9uVHlwZSBiKTsKIAogLy8gVW5pZm9ybSBibG9jayBsYXlvdXQgcXVhbGlmaWVyLCBzZWUg
c2VjdGlvbiA0LjMuOC4zIG9mIHRoZSBFU1NMIDMuMDAuNCBzcGVjCiBlbnVtIEJsb2NrTGF5b3V0
VHlwZQpAQCAtNDMsNyArNDUsNyBAQCBlbnVtIEJsb2NrTGF5b3V0VHlwZQogLy8gTm90ZTogd2Ug
bXVzdCBvdmVycmlkZSB0aGUgY29weSBjb25zdHJ1Y3RvciBhbmQgYXNzaWdubWVudCBvcGVyYXRv
ciBzbyB3ZSBjYW4KIC8vIHdvcmsgYXJvdW5kIGV4Y2Vzc2l2ZSBHQ0MgYmluYXJ5IGJsb2F0aW5n
OgogLy8gU2VlIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0L2lzc3Vlcy9k
ZXRhaWw/aWQ9Njk3Ci1zdHJ1Y3QgQ09NUElMRVJfRVhQT1JUIFNoYWRlclZhcmlhYmxlCitzdHJ1
Y3QgU2hhZGVyVmFyaWFibGUKIHsKICAgICBTaGFkZXJWYXJpYWJsZSgpOwogICAgIFNoYWRlclZh
cmlhYmxlKEdMZW51bSB0eXBlSW4sIHVuc2lnbmVkIGludCBhcnJheVNpemVJbik7CkBAIC05Miw3
ICs5NCwyMSBAQCBzdHJ1Y3QgQ09NUElMRVJfRVhQT1JUIFNoYWRlclZhcmlhYmxlCiAgICAgfQog
fTsKIAotc3RydWN0IENPTVBJTEVSX0VYUE9SVCBVbmlmb3JtIDogcHVibGljIFNoYWRlclZhcmlh
YmxlCisvLyBBIHZhcmlhYmxlIHdpdGggYW4gaW50ZWdlciBsb2NhdGlvbiB0byBwYXNzIGJhY2sg
dG8gdGhlIEdMIEFQSTogZWl0aGVyIHVuaWZvcm0gKGNhbiBoYXZlIGxvY2F0aW9uCisvLyBpbiBH
TEVTMy4xKyksIHZlcnRleCBzaGFkZXIgaW5wdXQgb3IgZnJhZ21lbnQgc2hhZGVyIG91dHB1dC4K
K3N0cnVjdCBWYXJpYWJsZVdpdGhMb2NhdGlvbiA6IHB1YmxpYyBTaGFkZXJWYXJpYWJsZQorewor
ICAgIFZhcmlhYmxlV2l0aExvY2F0aW9uKCk7CisgICAgflZhcmlhYmxlV2l0aExvY2F0aW9uKCk7
CisgICAgVmFyaWFibGVXaXRoTG9jYXRpb24oY29uc3QgVmFyaWFibGVXaXRoTG9jYXRpb24gJm90
aGVyKTsKKyAgICBWYXJpYWJsZVdpdGhMb2NhdGlvbiAmb3BlcmF0b3I9KGNvbnN0IFZhcmlhYmxl
V2l0aExvY2F0aW9uICZvdGhlcik7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZhcmlhYmxl
V2l0aExvY2F0aW9uICZvdGhlcikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZh
cmlhYmxlV2l0aExvY2F0aW9uICZvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3Ro
ZXIpOyB9CisKKyAgICBpbnQgbG9jYXRpb247Cit9OworCitzdHJ1Y3QgVW5pZm9ybSA6IHB1Ymxp
YyBWYXJpYWJsZVdpdGhMb2NhdGlvbgogewogICAgIFVuaWZvcm0oKTsKICAgICB+VW5pZm9ybSgp
OwpAQCAtMTA0LDI4ICsxMjAsMTYgQEAgc3RydWN0IENPTVBJTEVSX0VYUE9SVCBVbmlmb3JtIDog
cHVibGljIFNoYWRlclZhcmlhYmxlCiAgICAgICAgIHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7
CiAgICAgfQogCisgICAgaW50IGJpbmRpbmc7CisKICAgICAvLyBEZWNpZGUgd2hldGhlciB0d28g
dW5pZm9ybXMgYXJlIHRoZSBzYW1lIGF0IHNoYWRlciBsaW5rIHRpbWUsCiAgICAgLy8gYXNzdW1p
bmcgb25lIGZyb20gdmVydGV4IHNoYWRlciBhbmQgdGhlIG90aGVyIGZyb20gZnJhZ21lbnQgc2hh
ZGVyLgotICAgIC8vIFNlZSBHTFNMIEVTIFNwZWMgMy4wMC4zLCBzZWMgNC4zLjUuCisgICAgLy8g
R0xTTCBFUyBTcGVjIDMuMDAuMywgc2VjdGlvbiA0LjMuNS4KKyAgICAvLyBHTFNMIEVTIFNwZWMg
My4xMC40LCBzZWN0aW9uIDQuNC41CiAgICAgYm9vbCBpc1NhbWVVbmlmb3JtQXRMaW5rVGltZShj
b25zdCBVbmlmb3JtICZvdGhlcikgY29uc3Q7CiB9OwogCi0vLyBBbiBpbnRlcmZhY2UgdmFyaWFi
bGUgaXMgYSB2YXJpYWJsZSB3aGljaCBwYXNzZXMgZGF0YSBiZXR3ZWVuIHRoZSBHTCBkYXRhIHN0
cnVjdHVyZXMgYW5kIHRoZQotLy8gc2hhZGVyIGV4ZWN1dGlvbjogZWl0aGVyIHZlcnRleCBzaGFk
ZXIgaW5wdXRzIG9yIGZyYWdtZW50IHNoYWRlciBvdXRwdXRzLiBUaGVzZSB2YXJpYWJsZXMgY2Fu
Ci0vLyBoYXZlIGludGVnZXIgbG9jYXRpb25zIHRvIHBhc3MgYmFjayB0byB0aGUgR0wgQVBJLgot
c3RydWN0IENPTVBJTEVSX0VYUE9SVCBJbnRlcmZhY2VWYXJpYWJsZSA6IHB1YmxpYyBTaGFkZXJW
YXJpYWJsZQotewotICAgIEludGVyZmFjZVZhcmlhYmxlKCk7Ci0gICAgfkludGVyZmFjZVZhcmlh
YmxlKCk7Ci0gICAgSW50ZXJmYWNlVmFyaWFibGUoY29uc3QgSW50ZXJmYWNlVmFyaWFibGUgJm90
aGVyKTsKLSAgICBJbnRlcmZhY2VWYXJpYWJsZSAmb3BlcmF0b3I9KGNvbnN0IEludGVyZmFjZVZh
cmlhYmxlICZvdGhlcik7Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEludGVyZmFjZVZhcmlh
YmxlICZvdGhlcikgY29uc3Q7Ci0gICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEludGVyZmFjZVZh
cmlhYmxlICZvdGhlcikgY29uc3QgeyByZXR1cm4gIW9wZXJhdG9yPT0ob3RoZXIpOyB9Ci0KLSAg
ICBpbnQgbG9jYXRpb247Ci19OwotCi1zdHJ1Y3QgQ09NUElMRVJfRVhQT1JUIEF0dHJpYnV0ZSA6
IHB1YmxpYyBJbnRlcmZhY2VWYXJpYWJsZQorc3RydWN0IEF0dHJpYnV0ZSA6IHB1YmxpYyBWYXJp
YWJsZVdpdGhMb2NhdGlvbgogewogICAgIEF0dHJpYnV0ZSgpOwogICAgIH5BdHRyaWJ1dGUoKTsK
QEAgLTEzNSw3ICsxMzksNyBAQCBzdHJ1Y3QgQ09NUElMRVJfRVhQT1JUIEF0dHJpYnV0ZSA6IHB1
YmxpYyBJbnRlcmZhY2VWYXJpYWJsZQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBBdHRyaWJ1
dGUgJm90aGVyKSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShvdGhlcik7IH0KIH07CiAKLXN0
cnVjdCBDT01QSUxFUl9FWFBPUlQgT3V0cHV0VmFyaWFibGUgOiBwdWJsaWMgSW50ZXJmYWNlVmFy
aWFibGUKK3N0cnVjdCBPdXRwdXRWYXJpYWJsZSA6IHB1YmxpYyBWYXJpYWJsZVdpdGhMb2NhdGlv
bgogewogICAgIE91dHB1dFZhcmlhYmxlKCk7CiAgICAgfk91dHB1dFZhcmlhYmxlKCk7CkBAIC0x
NDUsNyArMTQ5LDcgQEAgc3RydWN0IENPTVBJTEVSX0VYUE9SVCBPdXRwdXRWYXJpYWJsZSA6IHB1
YmxpYyBJbnRlcmZhY2VWYXJpYWJsZQogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBPdXRwdXRW
YXJpYWJsZSAmb3RoZXIpIGNvbnN0IHsgcmV0dXJuICFvcGVyYXRvcj09KG90aGVyKTsgfQogfTsK
IAotc3RydWN0IENPTVBJTEVSX0VYUE9SVCBJbnRlcmZhY2VCbG9ja0ZpZWxkIDogcHVibGljIFNo
YWRlclZhcmlhYmxlCitzdHJ1Y3QgSW50ZXJmYWNlQmxvY2tGaWVsZCA6IHB1YmxpYyBTaGFkZXJW
YXJpYWJsZQogewogICAgIEludGVyZmFjZUJsb2NrRmllbGQoKTsKICAgICB+SW50ZXJmYWNlQmxv
Y2tGaWVsZCgpOwpAQCAtMTY3LDcgKzE3MSw3IEBAIHN0cnVjdCBDT01QSUxFUl9FWFBPUlQgSW50
ZXJmYWNlQmxvY2tGaWVsZCA6IHB1YmxpYyBTaGFkZXJWYXJpYWJsZQogICAgIGJvb2wgaXNSb3dN
YWpvckxheW91dDsKIH07CiAKLXN0cnVjdCBDT01QSUxFUl9FWFBPUlQgVmFyeWluZyA6IHB1Ymxp
YyBTaGFkZXJWYXJpYWJsZQorc3RydWN0IFZhcnlpbmcgOiBwdWJsaWMgU2hhZGVyVmFyaWFibGUK
IHsKICAgICBWYXJ5aW5nKCk7CiAgICAgflZhcnlpbmcoKTsKQEAgLTE5Myw3ICsxOTcsNyBAQCBz
dHJ1Y3QgQ09NUElMRVJfRVhQT1JUIFZhcnlpbmcgOiBwdWJsaWMgU2hhZGVyVmFyaWFibGUKICAg
ICBib29sIGlzSW52YXJpYW50OwogfTsKIAotc3RydWN0IENPTVBJTEVSX0VYUE9SVCBJbnRlcmZh
Y2VCbG9jaworc3RydWN0IEludGVyZmFjZUJsb2NrCiB7CiAgICAgSW50ZXJmYWNlQmxvY2soKTsK
ICAgICB+SW50ZXJmYWNlQmxvY2soKTsKQEAgLTIxNiw3ICsyMjAsNyBAQCBzdHJ1Y3QgQ09NUElM
RVJfRVhQT1JUIEludGVyZmFjZUJsb2NrCiAgICAgc3RkOjp2ZWN0b3I8SW50ZXJmYWNlQmxvY2tG
aWVsZD4gZmllbGRzOwogfTsKIAotc3RydWN0IENPTVBJTEVSX0VYUE9SVCBXb3JrR3JvdXBTaXpl
CitzdHJ1Y3QgV29ya0dyb3VwU2l6ZQogewogICAgIHZvaWQgZmlsbChpbnQgZmlsbFZhbHVlKTsK
ICAgICB2b2lkIHNldExvY2FsU2l6ZShpbnQgbG9jYWxTaXplWCwgaW50IGxvY2FsU2l6ZVksIGlu
dCBsb2NhbFNpemVaKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1
ZGUvS0hSL2tocnBsYXRmb3JtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0tI
Ui9raHJwbGF0Zm9ybS5oCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggYzll
NmYxN2QzNDMuLjA3YjYxYjliZDYwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1
ZGUvS0hSL2tocnBsYXRmb3JtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVk
ZS9LSFIva2hycGxhdGZvcm0uaApAQCAtMjYsNyArMjYsNyBAQAogCiAvKiBLaHJvbm9zIHBsYXRm
b3JtLXNwZWNpZmljIHR5cGVzIGFuZCBkZWZpbml0aW9ucy4KICAqCi0gKiAkUmV2aXNpb246IDIz
Mjk4ICQgb24gJERhdGU6IDIwMTMtMDktMzAgMTc6MDc6MTMgLTA3MDAgKE1vbiwgMzAgU2VwIDIw
MTMpICQKKyAqICRSZXZpc2lvbjogMzI1MTcgJCBvbiAkRGF0ZTogMjAxNi0wMy0xMSAwMjo0MTox
OSAtMDgwMCAoRnJpLCAxMSBNYXIgMjAxNikgJAogICoKICAqIEFkb3B0ZXJzIG1heSBtb2RpZnkg
dGhpcyBmaWxlIHRvIHN1aXQgdGhlaXIgcGxhdGZvcm0uIEFkb3B0ZXJzIGFyZQogICogZW5jb3Vy
YWdlZCB0byBzdWJtaXQgcGxhdGZvcm0gc3BlY2lmaWMgbW9kaWZpY2F0aW9ucyB0byB0aGUgS2hy
b25vcwpAQCAtMTAxLDYgKzEwMSw5IEBACiAjICAgZGVmaW5lIEtIUk9OT1NfQVBJQ0FMTCBfX2Rl
Y2xzcGVjKGRsbGltcG9ydCkKICNlbGlmIGRlZmluZWQgKF9fU1lNQklBTjMyX18pCiAjICAgZGVm
aW5lIEtIUk9OT1NfQVBJQ0FMTCBJTVBPUlRfQworI2VsaWYgZGVmaW5lZChfX0FORFJPSURfXykK
KyMgICBpbmNsdWRlIDxzeXMvY2RlZnMuaD4KKyMgICBkZWZpbmUgS0hST05PU19BUElDQUxMIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpIF9fTkRLX0ZQQUJJX18KICNlbHNl
CiAjICAgZGVmaW5lIEtIUk9OT1NfQVBJQ0FMTAogI2VuZGlmCkBAIC0yMjMsNyArMjI2LDcgQEAg
dHlwZWRlZiBzaWduZWQgICBzaG9ydCBpbnQgICAgIGtocm9ub3NfaW50MTZfdDsKIHR5cGVkZWYg
dW5zaWduZWQgc2hvcnQgaW50ICAgICBraHJvbm9zX3VpbnQxNl90OwogCiAvKgotICogVHlwZXMg
dGhhdCBkaWZmZXIgYmV0d2VlbiBMTFA2NCBhbmQgTFA2NCBhcmNoaXRlY3R1cmVzIC0gaW4gTExQ
NjQsIAorICogVHlwZXMgdGhhdCBkaWZmZXIgYmV0d2VlbiBMTFA2NCBhbmQgTFA2NCBhcmNoaXRl
Y3R1cmVzIC0gaW4gTExQNjQsCiAgKiBwb2ludGVycyBhcmUgNjQgYml0cywgYnV0ICdsb25nJyBp
cyBzdGlsbCAzMiBiaXRzLiBXaW42NCBhcHBlYXJzCiAgKiB0byBiZSB0aGUgb25seSBMTFA2NCBh
cmNoaXRlY3R1cmUgaW4gY3VycmVudCB1c2UuCiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL2luY2x1ZGUvZXhwb3J0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9p
bmNsdWRlL2V4cG9ydC5oCmluZGV4IDgwOTI2NWMxYTEwLi5jZjE0NGY5MmE1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9leHBvcnQuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL2V4cG9ydC5oCkBAIC05LDYgKzksNyBAQAogI2lmbmRl
ZiBMSUJHTEVTVjJfRVhQT1JUX0hfCiAjZGVmaW5lIExJQkdMRVNWMl9FWFBPUlRfSF8KIAorI2lm
ICFkZWZpbmVkKEFOR0xFX0VYUE9SVCkKICNpZiBkZWZpbmVkKF9XSU4zMikKICNpZiBkZWZpbmVk
KExJQkdMRVNWMl9JTVBMRU1FTlRBVElPTikgfHwgZGVmaW5lZChMSUJBTkdMRV9JTVBMRU1FTlRB
VElPTikgfHwgXAogICAgIGRlZmluZWQoTElCQU5HTEVfVVRJTF9JTVBMRU1FTlRBVElPTikKQEAg
LTI2LDUgKzI3LDYgQEAKICNlbHNlCiAjICAgZGVmaW5lIEFOR0xFX0VYUE9SVAogI2VuZGlmCisj
ZW5kaWYgIC8vICFkZWZpbmVkKEFOR0xFX0VYUE9SVCkKIAogI2VuZGlmIC8vIExJQkdMRVNWMl9F
WFBPUlRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvcGxh
dGZvcm0vUGxhdGZvcm0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvcGxhdGZv
cm0vUGxhdGZvcm0uaAppbmRleCAwZThjZGY0NzdmZi4uM2RjYjk1YWFiYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvcGxhdGZvcm0vUGxhdGZvcm0uaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL3BsYXRmb3JtL1BsYXRmb3JtLmgKQEAg
LTMyLDEzNyArMzIsMjQzIEBACiAKIG5hbWVzcGFjZSBhbmdsZQogeworc3RydWN0IFdvcmthcm91
bmRzRDNEOwordXNpbmcgVHJhY2VFdmVudEhhbmRsZSA9IHVpbnQ2NF90OwordXNpbmcgRUdMRGlz
cGxheVR5cGUgICA9IHZvaWQgKjsKK3N0cnVjdCBQbGF0Zm9ybU1ldGhvZHM7CiAKLWNsYXNzIFBs
YXRmb3JtCi17Ci0gIHB1YmxpYzoKLQotICAgIC8vIFN5c3RlbSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgLy8gV2Fs
bCBjbG9jayB0aW1lIGluIHNlY29uZHMgc2luY2UgdGhlIGVwb2NoLgotICAgIC8vIFRPRE8oam1h
ZGlsbCk6IGludmVzdGlnYXRlIHVzaW5nIGFuIEFOR0xFIGludGVybmFsIHRpbWUgbGlicmFyeQot
ICAgIHZpcnR1YWwgZG91YmxlIGN1cnJlbnRUaW1lKCkgeyByZXR1cm4gMDsgfQotCi0gICAgLy8g
TW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIHRpbWUgaW4gc2Vjb25kcyBmcm9tIGFuIGFyYml0cmFy
eSBmaXhlZCBwb2ludCBpbiB0aGUgcGFzdC4KLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGV4cGVj
dGVkIHRvIHJldHVybiBhdCBsZWFzdCBtaWxsaXNlY29uZC1wcmVjaXNpb24gdmFsdWVzLiBGb3Ig
dGhpcyByZWFzb24sCi0gICAgLy8gaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB0aGUgZml4ZWQgcG9p
bnQgYmUgbm8gZnVydGhlciBpbiB0aGUgcGFzdCB0aGFuIHRoZSBlcG9jaC4KLSAgICB2aXJ0dWFs
IGRvdWJsZSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSB7IHJldHVybiAwOyB9Ci0KLSAg
ICAvLyBMb2dnaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotCi0gICAgLy8gTG9nIGFuIGVycm9yIG1lc3NhZ2Ugd2l0aGluIHRo
ZSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0dWFsIHZvaWQgbG9nRXJyb3IoY29u
c3QgY2hhciAqZXJyb3JNZXNzYWdlKSB7fQotCi0gICAgLy8gTG9nIGEgd2FybmluZyBtZXNzYWdl
IHdpdGhpbiB0aGUgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24uCi0gICAgdmlydHVhbCB2b2lkIGxv
Z1dhcm5pbmcoY29uc3QgY2hhciAqd2FybmluZ01lc3NhZ2UpIHt9Ci0KLSAgICAvLyBMb2cgYW4g
aW5mbyBtZXNzYWdlIHdpdGhpbiB0aGUgcGxhdGZvcm0gaW1wbGVtZW50YXRpb24uCi0gICAgdmly
dHVhbCB2b2lkIGxvZ0luZm8oY29uc3QgY2hhciAqaW5mb01lc3NhZ2UpIHt9Ci0KLSAgICAvLyBU
cmFjaW5nIC0tLS0tLS0tCi0KLSAgICAvLyBHZXQgYSBwb2ludGVyIHRvIHRoZSBlbmFibGVkIHN0
YXRlIG9mIHRoZSBnaXZlbiB0cmFjZSBjYXRlZ29yeS4gVGhlCi0gICAgLy8gZW1iZWRkZXIgY2Fu
IGR5bmFtaWNhbGx5IGNoYW5nZSB0aGUgZW5hYmxlZCBzdGF0ZSBhcyB0cmFjZSBldmVudAotICAg
IC8vIHJlY29yZGluZyBpcyBzdGFydGVkIGFuZCBzdG9wcGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4g
T25seSBsb25nLWxpdmVkCi0gICAgLy8gbGl0ZXJhbCBzdHJpbmdzIHNob3VsZCBiZSBnaXZlbiBh
cyB0aGUgY2F0ZWdvcnkgbmFtZS4gVGhlIGltcGxlbWVudGF0aW9uCi0gICAgLy8gZXhwZWN0cyB0
aGUgcmV0dXJuZWQgcG9pbnRlciB0byBiZSBoZWxkIHBlcm1hbmVudGx5IGluIGEgbG9jYWwgc3Rh
dGljLiBJZgotICAgIC8vIHRoZSB1bnNpZ25lZCBjaGFyIGlzIG5vbi16ZXJvLCB0cmFjaW5nIGlz
IGVuYWJsZWQuIElmIHRyYWNpbmcgaXMgZW5hYmxlZCwKLSAgICAvLyBhZGRUcmFjZUV2ZW50IGlz
IGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBieSB0aGUgdHJhY2UgZXZlbnQgbWFjcm9zLgotICAgIHZp
cnR1YWwgY29uc3QgdW5zaWduZWQgY2hhciAqZ2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKGNv
bnN0IGNoYXIgKmNhdGVnb3J5TmFtZSkgeyByZXR1cm4gMDsgfQotCi0gICAgdHlwZWRlZiB1aW50
NjRfdCBUcmFjZUV2ZW50SGFuZGxlOwotCi0gICAgLy8gQWRkIGEgdHJhY2UgZXZlbnQgdG8gdGhl
IHBsYXRmb3JtIHRyYWNpbmcgc3lzdGVtLiBEZXBlbmRpbmcgb24gdGhlIGFjdHVhbAotICAgIC8v
IGVuYWJsZWQgc3RhdGUsIHRoaXMgZXZlbnQgbWF5IGJlIHJlY29yZGVkIG9yIGRyb3BwZWQuCi0g
ICAgLy8gLSBwaGFzZSBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgZXZlbnQ6Ci0gICAgLy8gICAtIEJF
R0lOICgnQicpOiBNYXJrcyB0aGUgYmVnaW5uaW5nIG9mIGEgc2NvcGVkIGV2ZW50LgotICAgIC8v
ICAgLSBFTkQgKCdFJyk6IE1hcmtzIHRoZSBlbmQgb2YgYSBzY29wZWQgZXZlbnQuCi0gICAgLy8g
ICAtIENPTVBMRVRFICgnWCcpOiBNYXJrcyB0aGUgYmVnaW5uaW5nIG9mIGEgc2NvcGVkIGV2ZW50
LCBidXQgZG9lc24ndAotICAgIC8vICAgICBuZWVkIGEgbWF0Y2hpbmcgRU5EIGV2ZW50LiBJbnN0
ZWFkLCBhdCB0aGUgZW5kIG9mIHRoZSBzY29wZSwKLSAgICAvLyAgICAgdXBkYXRlVHJhY2VFdmVu
dER1cmF0aW9uKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgVHJhY2VFdmVudEhhbmRsZQotICAg
IC8vICAgICByZXR1cm5lZCBmcm9tIGFkZFRyYWNlRXZlbnQoKS4KLSAgICAvLyAgIC0gSU5TVEFO
VCAoJ0knKTogU3RhbmRhbG9uZSwgaW5zdGFudGFuZW91cyBldmVudC4KLSAgICAvLyAgIC0gU1RB
UlQgKCdTJyk6IE1hcmtzIHRoZSBiZWdpbm5pbmcgb2YgYW4gYXN5bmNocm9ub3VzIGV2ZW50ICh0
aGUgZW5kCi0gICAgLy8gICAgIGV2ZW50IGNhbiBvY2N1ciBpbiBhIGRpZmZlcmVudCBzY29wZSBv
ciB0aHJlYWQpLiBUaGUgaWQgcGFyYW1ldGVyIGlzCi0gICAgLy8gICAgIHVzZWQgdG8gbWF0Y2gg
U1RBUlQvRklOSVNIIHBhaXJzLgotICAgIC8vICAgLSBGSU5JU0ggKCdGJyk6IE1hcmtzIHRoZSBl
bmQgb2YgYW4gYXN5bmNocm9ub3VzIGV2ZW50LgotICAgIC8vICAgLSBDT1VOVEVSICgnQycpOiBV
c2VkIHRvIHRyYWNlIGludGVnZXIgcXVhbnRpdGllcyB0aGF0IGNoYW5nZSBvdmVyCi0gICAgLy8g
ICAgIHRpbWUuIFRoZSBhcmd1bWVudCB2YWx1ZXMgYXJlIGV4cGVjdGVkIHRvIGJlIG9mIHR5cGUg
aW50LgotICAgIC8vICAgLSBNRVRBREFUQSAoJ00nKTogUmVzZXJ2ZWQgZm9yIGludGVybmFsIHVz
ZS4KLSAgICAvLyAtIGNhdGVnb3J5RW5hYmxlZCBpcyB0aGUgcG9pbnRlciByZXR1cm5lZCBieSBn
ZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWcuCi0gICAgLy8gLSBuYW1lIGlzIHRoZSBuYW1lIG9m
IHRoZSBldmVudC4gQWxzbyB1c2VkIHRvIG1hdGNoIEJFR0lOL0VORCBhbmQKLSAgICAvLyAgIFNU
QVJUL0ZJTklTSCBwYWlycy4KLSAgICAvLyAtIGlkIG9wdGlvbmFsbHkgYWxsb3dzIGV2ZW50cyBv
ZiB0aGUgc2FtZSBuYW1lIHRvIGJlIGRpc3Rpbmd1aXNoZWQgZnJvbQotICAgIC8vICAgZWFjaCBv
dGhlci4gRm9yIGV4YW1wbGUsIHRvIHRyYWNlIHRoZSBjb25zdXRydWN0aW9uIGFuZCBkZXN0cnVj
dGlvbiBvZgotICAgIC8vICAgb2JqZWN0cywgc3BlY2lmeSB0aGUgcG9pbnRlciBhcyB0aGUgaWQg
cGFyYW1ldGVyLgotICAgIC8vIC0gdGltZXN0YW1wIHNob3VsZCBiZSBhIHRpbWUgdmFsdWUgcmV0
dXJuZWQgZnJvbSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUuCi0gICAgLy8gLSBudW1Bcmdz
IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGFyZ05hbWVzLCBhcmdUeXBlcywg
YW5kCi0gICAgLy8gICBhcmdWYWx1ZXMuCi0gICAgLy8gLSBhcmdOYW1lcyBpcyB0aGUgYXJyYXkg
b2YgYXJndW1lbnQgbmFtZXMuIFVzZSBsb25nLWxpdmVkIGxpdGVyYWwgc3RyaW5ncwotICAgIC8v
ICAgb3Igc3BlY2lmeSB0aGUgQ09QWSBmbGFnLgotICAgIC8vIC0gYXJnVHlwZXMgaXMgdGhlIGFy
cmF5IG9mIGFyZ3VtZW50IHR5cGVzOgotICAgIC8vICAgLSBCT09MICgxKTogYm9vbAotICAgIC8v
ICAgLSBVSU5UICgyKTogdW5zaWduZWQgbG9uZyBsb25nCi0gICAgLy8gICAtIElOVCAoMyk6IGxv
bmcgbG9uZwotICAgIC8vICAgLSBET1VCTEUgKDQpOiBkb3VibGUKLSAgICAvLyAgIC0gUE9JTlRF
UiAoNSk6IHZvaWQqCi0gICAgLy8gICAtIFNUUklORyAoNik6IGNoYXIqIChsb25nLWxpdmVkIG51
bGwtdGVybWluYXRlZCBjaGFyKiBzdHJpbmcpCi0gICAgLy8gICAtIENPUFlfU1RSSU5HICg3KTog
Y2hhciogKHRlbXBvcmFyeSBudWxsLXRlcm1pbmF0ZWQgY2hhciogc3RyaW5nKQotICAgIC8vICAg
LSBDT05WRVJUQUJMRSAoOCk6IFdlYkNvbnZlcnRhYmxlVG9UcmFjZUZvcm1hdAotICAgIC8vIC0g
YXJnVmFsdWVzIGlzIHRoZSBhcnJheSBvZiBhcmd1bWVudCB2YWx1ZXMuIEVhY2ggdmFsdWUgaXMg
dGhlIHVuc2lnbmVkCi0gICAgLy8gICBsb25nIGxvbmcgbWVtYmVyIG9mIGEgdW5pb24gb2YgYWxs
IHN1cHBvcnRlZCB0eXBlcy4KLSAgICAvLyAtIGZsYWdzIGNhbiBiZSAwIG9yIG9uZSBvciBtb3Jl
IG9mIHRoZSBmb2xsb3dpbmcsIE9SZWQgdG9nZXRoZXI6Ci0gICAgLy8gICAtIENPUFkgKDB4MSk6
IHRyZWF0IGFsbCBzdHJpbmdzIChuYW1lLCBhcmdOYW1lcyBhbmQgYXJnVmFsdWVzIG9mIHR5cGUK
LSAgICAvLyAgICAgc3RyaW5nKSBhcyB0ZW1wb3Jhcnkgc28gdGhhdCB0aGV5IHdpbGwgYmUgY29w
aWVkIGJ5IGFkZFRyYWNlRXZlbnQuCi0gICAgLy8gICAtIEhBU19JRCAoMHgyKTogdXNlIHRoZSBp
ZCBhcmd1bWVudCB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUgZXZlbnQgZm9yCi0gICAgLy8gICAg
IG1hdGNoaW5nIHdpdGggb3RoZXIgZXZlbnRzIG9mIHRoZSBzYW1lIG5hbWUuCi0gICAgLy8gICAt
IE1BTkdMRV9JRCAoMHg0KTogc3BlY2lmeSB0aGlzIGZsYWcgaWYgdGhlIGlkIHBhcmFtZXRlciBp
cyB0aGUgdmFsdWUKLSAgICAvLyAgICAgb2YgYSBwb2ludGVyLgotICAgIHZpcnR1YWwgVHJhY2VF
dmVudEhhbmRsZSBhZGRUcmFjZUV2ZW50KGNoYXIgcGhhc2UsCisvLyBVc2UgYSBDLWxpa2UgQVBJ
IHRvIG5vdCB0cmlnZ2VyIHVuZGVmaW5lZCBjYWxsaW5nIGJlaGF2aW91ci4KKworLy8gU3lzdGVt
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCisKKy8vIFdhbGwgY2xvY2sgdGltZSBpbiBzZWNvbmRzIHNpbmNlIHRoZSBlcG9jaC4K
Ky8vIFRPRE8oam1hZGlsbCk6IGludmVzdGlnYXRlIHVzaW5nIGFuIEFOR0xFIGludGVybmFsIHRp
bWUgbGlicmFyeQoraW5saW5lIGRvdWJsZSBBTkdMRV9jdXJyZW50VGltZShQbGF0Zm9ybU1ldGhv
ZHMgKnBsYXRmb3JtKQoreworICAgIHJldHVybiAwLjA7Cit9CisKKy8vIE1vbm90b25pY2FsbHkg
aW5jcmVhc2luZyB0aW1lIGluIHNlY29uZHMgZnJvbSBhbiBhcmJpdHJhcnkgZml4ZWQgcG9pbnQg
aW4gdGhlIHBhc3QuCisvLyBUaGlzIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIHJldHVybiBhdCBs
ZWFzdCBtaWxsaXNlY29uZC1wcmVjaXNpb24gdmFsdWVzLiBGb3IgdGhpcyByZWFzb24sCisvLyBp
dCBpcyByZWNvbW1lbmRlZCB0aGF0IHRoZSBmaXhlZCBwb2ludCBiZSBubyBmdXJ0aGVyIGluIHRo
ZSBwYXN0IHRoYW4gdGhlIGVwb2NoLgoraW5saW5lIGRvdWJsZSBBTkdMRV9tb25vdG9uaWNhbGx5
SW5jcmVhc2luZ1RpbWUoUGxhdGZvcm1NZXRob2RzICpwbGF0Zm9ybSkKK3sKKyAgICByZXR1cm4g
MC4wOworfQorCisvLyBMb2dnaW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBMb2cgYW4gZXJyb3IgbWVzc2FnZSB3aXRo
aW4gdGhlIHBsYXRmb3JtIGltcGxlbWVudGF0aW9uLgoraW5saW5lIHZvaWQgQU5HTEVfbG9nRXJy
b3IoUGxhdGZvcm1NZXRob2RzICpwbGF0Zm9ybSwgY29uc3QgY2hhciAqZXJyb3JNZXNzYWdlKQor
eworfQorCisvLyBMb2cgYSB3YXJuaW5nIG1lc3NhZ2Ugd2l0aGluIHRoZSBwbGF0Zm9ybSBpbXBs
ZW1lbnRhdGlvbi4KK2lubGluZSB2b2lkIEFOR0xFX2xvZ1dhcm5pbmcoUGxhdGZvcm1NZXRob2Rz
ICpwbGF0Zm9ybSwgY29uc3QgY2hhciAqd2FybmluZ01lc3NhZ2UpCit7Cit9CisKKy8vIExvZyBh
biBpbmZvIG1lc3NhZ2Ugd2l0aGluIHRoZSBwbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi4KK2lubGlu
ZSB2b2lkIEFOR0xFX2xvZ0luZm8oUGxhdGZvcm1NZXRob2RzICpwbGF0Zm9ybSwgY29uc3QgY2hh
ciAqaW5mb01lc3NhZ2UpCit7Cit9CisKKy8vIFRyYWNpbmcgLS0tLS0tLS0KKworLy8gR2V0IGEg
cG9pbnRlciB0byB0aGUgZW5hYmxlZCBzdGF0ZSBvZiB0aGUgZ2l2ZW4gdHJhY2UgY2F0ZWdvcnku
IFRoZQorLy8gZW1iZWRkZXIgY2FuIGR5bmFtaWNhbGx5IGNoYW5nZSB0aGUgZW5hYmxlZCBzdGF0
ZSBhcyB0cmFjZSBldmVudAorLy8gcmVjb3JkaW5nIGlzIHN0YXJ0ZWQgYW5kIHN0b3BwZWQgYnkg
dGhlIGFwcGxpY2F0aW9uLiBPbmx5IGxvbmctbGl2ZWQKKy8vIGxpdGVyYWwgc3RyaW5ncyBzaG91
bGQgYmUgZ2l2ZW4gYXMgdGhlIGNhdGVnb3J5IG5hbWUuIFRoZSBpbXBsZW1lbnRhdGlvbgorLy8g
ZXhwZWN0cyB0aGUgcmV0dXJuZWQgcG9pbnRlciB0byBiZSBoZWxkIHBlcm1hbmVudGx5IGluIGEg
bG9jYWwgc3RhdGljLiBJZgorLy8gdGhlIHVuc2lnbmVkIGNoYXIgaXMgbm9uLXplcm8sIHRyYWNp
bmcgaXMgZW5hYmxlZC4gSWYgdHJhY2luZyBpcyBlbmFibGVkLAorLy8gYWRkVHJhY2VFdmVudCBp
cyBleHBlY3RlZCB0byBiZSBjYWxsZWQgYnkgdGhlIHRyYWNlIGV2ZW50IG1hY3Jvcy4KK2lubGlu
ZSBjb25zdCB1bnNpZ25lZCBjaGFyICpBTkdMRV9nZXRUcmFjZUNhdGVnb3J5RW5hYmxlZEZsYWco
UGxhdGZvcm1NZXRob2RzICpwbGF0Zm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY2F0ZWdvcnlOYW1l
KQoreworICAgIHJldHVybiBudWxscHRyOworfQorCisvLworLy8gQWRkIGEgdHJhY2UgZXZlbnQg
dG8gdGhlIHBsYXRmb3JtIHRyYWNpbmcgc3lzdGVtLiBEZXBlbmRpbmcgb24gdGhlIGFjdHVhbAor
Ly8gZW5hYmxlZCBzdGF0ZSwgdGhpcyBldmVudCBtYXkgYmUgcmVjb3JkZWQgb3IgZHJvcHBlZC4K
Ky8vIC0gcGhhc2Ugc3BlY2lmaWVzIHRoZSB0eXBlIG9mIGV2ZW50OgorLy8gICAtIEJFR0lOICgn
QicpOiBNYXJrcyB0aGUgYmVnaW5uaW5nIG9mIGEgc2NvcGVkIGV2ZW50LgorLy8gICAtIEVORCAo
J0UnKTogTWFya3MgdGhlIGVuZCBvZiBhIHNjb3BlZCBldmVudC4KKy8vICAgLSBDT01QTEVURSAo
J1gnKTogTWFya3MgdGhlIGJlZ2lubmluZyBvZiBhIHNjb3BlZCBldmVudCwgYnV0IGRvZXNuJ3QK
Ky8vICAgICBuZWVkIGEgbWF0Y2hpbmcgRU5EIGV2ZW50LiBJbnN0ZWFkLCBhdCB0aGUgZW5kIG9m
IHRoZSBzY29wZSwKKy8vICAgICB1cGRhdGVUcmFjZUV2ZW50RHVyYXRpb24oKSBtdXN0IGJlIGNh
bGxlZCB3aXRoIHRoZSBUcmFjZUV2ZW50SGFuZGxlCisvLyAgICAgcmV0dXJuZWQgZnJvbSBhZGRU
cmFjZUV2ZW50KCkuCisvLyAgIC0gSU5TVEFOVCAoJ0knKTogU3RhbmRhbG9uZSwgaW5zdGFudGFu
ZW91cyBldmVudC4KKy8vICAgLSBTVEFSVCAoJ1MnKTogTWFya3MgdGhlIGJlZ2lubmluZyBvZiBh
biBhc3luY2hyb25vdXMgZXZlbnQgKHRoZSBlbmQKKy8vICAgICBldmVudCBjYW4gb2NjdXIgaW4g
YSBkaWZmZXJlbnQgc2NvcGUgb3IgdGhyZWFkKS4gVGhlIGlkIHBhcmFtZXRlciBpcworLy8gICAg
IHVzZWQgdG8gbWF0Y2ggU1RBUlQvRklOSVNIIHBhaXJzLgorLy8gICAtIEZJTklTSCAoJ0YnKTog
TWFya3MgdGhlIGVuZCBvZiBhbiBhc3luY2hyb25vdXMgZXZlbnQuCisvLyAgIC0gQ09VTlRFUiAo
J0MnKTogVXNlZCB0byB0cmFjZSBpbnRlZ2VyIHF1YW50aXRpZXMgdGhhdCBjaGFuZ2Ugb3Zlcgor
Ly8gICAgIHRpbWUuIFRoZSBhcmd1bWVudCB2YWx1ZXMgYXJlIGV4cGVjdGVkIHRvIGJlIG9mIHR5
cGUgaW50LgorLy8gICAtIE1FVEFEQVRBICgnTScpOiBSZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNl
LgorLy8gLSBjYXRlZ29yeUVuYWJsZWQgaXMgdGhlIHBvaW50ZXIgcmV0dXJuZWQgYnkgZ2V0VHJh
Y2VDYXRlZ29yeUVuYWJsZWRGbGFnLgorLy8gLSBuYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBldmVu
dC4gQWxzbyB1c2VkIHRvIG1hdGNoIEJFR0lOL0VORCBhbmQKKy8vICAgU1RBUlQvRklOSVNIIHBh
aXJzLgorLy8gLSBpZCBvcHRpb25hbGx5IGFsbG93cyBldmVudHMgb2YgdGhlIHNhbWUgbmFtZSB0
byBiZSBkaXN0aW5ndWlzaGVkIGZyb20KKy8vICAgZWFjaCBvdGhlci4gRm9yIGV4YW1wbGUsIHRv
IHRyYWNlIHRoZSBjb25zdXRydWN0aW9uIGFuZCBkZXN0cnVjdGlvbiBvZgorLy8gICBvYmplY3Rz
LCBzcGVjaWZ5IHRoZSBwb2ludGVyIGFzIHRoZSBpZCBwYXJhbWV0ZXIuCisvLyAtIHRpbWVzdGFt
cCBzaG91bGQgYmUgYSB0aW1lIHZhbHVlIHJldHVybmVkIGZyb20gbW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lLgorLy8gLSBudW1BcmdzIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRz
IGluIGFyZ05hbWVzLCBhcmdUeXBlcywgYW5kCisvLyAgIGFyZ1ZhbHVlcy4KKy8vIC0gYXJnTmFt
ZXMgaXMgdGhlIGFycmF5IG9mIGFyZ3VtZW50IG5hbWVzLiBVc2UgbG9uZy1saXZlZCBsaXRlcmFs
IHN0cmluZ3MKKy8vICAgb3Igc3BlY2lmeSB0aGUgQ09QWSBmbGFnLgorLy8gLSBhcmdUeXBlcyBp
cyB0aGUgYXJyYXkgb2YgYXJndW1lbnQgdHlwZXM6CisvLyAgIC0gQk9PTCAoMSk6IGJvb2wKKy8v
ICAgLSBVSU5UICgyKTogdW5zaWduZWQgbG9uZyBsb25nCisvLyAgIC0gSU5UICgzKTogbG9uZyBs
b25nCisvLyAgIC0gRE9VQkxFICg0KTogZG91YmxlCisvLyAgIC0gUE9JTlRFUiAoNSk6IHZvaWQq
CisvLyAgIC0gU1RSSU5HICg2KTogY2hhciogKGxvbmctbGl2ZWQgbnVsbC10ZXJtaW5hdGVkIGNo
YXIqIHN0cmluZykKKy8vICAgLSBDT1BZX1NUUklORyAoNyk6IGNoYXIqICh0ZW1wb3JhcnkgbnVs
bC10ZXJtaW5hdGVkIGNoYXIqIHN0cmluZykKKy8vICAgLSBDT05WRVJUQUJMRSAoOCk6IFdlYkNv
bnZlcnRhYmxlVG9UcmFjZUZvcm1hdAorLy8gLSBhcmdWYWx1ZXMgaXMgdGhlIGFycmF5IG9mIGFy
Z3VtZW50IHZhbHVlcy4gRWFjaCB2YWx1ZSBpcyB0aGUgdW5zaWduZWQKKy8vICAgbG9uZyBsb25n
IG1lbWJlciBvZiBhIHVuaW9uIG9mIGFsbCBzdXBwb3J0ZWQgdHlwZXMuCisvLyAtIGZsYWdzIGNh
biBiZSAwIG9yIG9uZSBvciBtb3JlIG9mIHRoZSBmb2xsb3dpbmcsIE9SZWQgdG9nZXRoZXI6Cisv
LyAgIC0gQ09QWSAoMHgxKTogdHJlYXQgYWxsIHN0cmluZ3MgKG5hbWUsIGFyZ05hbWVzIGFuZCBh
cmdWYWx1ZXMgb2YgdHlwZQorLy8gICAgIHN0cmluZykgYXMgdGVtcG9yYXJ5IHNvIHRoYXQgdGhl
eSB3aWxsIGJlIGNvcGllZCBieSBhZGRUcmFjZUV2ZW50LgorLy8gICAtIEhBU19JRCAoMHgyKTog
dXNlIHRoZSBpZCBhcmd1bWVudCB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUgZXZlbnQgZm9yCisv
LyAgICAgbWF0Y2hpbmcgd2l0aCBvdGhlciBldmVudHMgb2YgdGhlIHNhbWUgbmFtZS4KKy8vICAg
LSBNQU5HTEVfSUQgKDB4NCk6IHNwZWNpZnkgdGhpcyBmbGFnIGlmIHRoZSBpZCBwYXJhbWV0ZXIg
aXMgdGhlIHZhbHVlCisvLyAgICAgb2YgYSBwb2ludGVyLgoraW5saW5lIGFuZ2xlOjpUcmFjZUV2
ZW50SGFuZGxlIEFOR0xFX2FkZFRyYWNlRXZlbnQoUGxhdGZvcm1NZXRob2RzICpwbGF0Zm9ybSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIg
cGhhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1bnNpZ25lZCBjaGFyICpjYXRlZ29yeUVuYWJsZWRGbGFnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRvdWJsZSB0aW1lc3RhbXAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtQXJncywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiphcmdOYW1lcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVuc2lnbmVkIGNoYXIgKmFyZ1R5cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nICphcmdWYWx1ZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBjaGFyIGZsYWdzKQoreworICAgIHJldHVybiAwOworfQorCisvLyBTZXQgdGhlIGR1cmF0
aW9uIGZpZWxkIG9mIGEgQ09NUExFVEUgdHJhY2UgZXZlbnQuCitpbmxpbmUgdm9pZCBBTkdMRV91
cGRhdGVUcmFjZUV2ZW50RHVyYXRpb24oUGxhdGZvcm1NZXRob2RzICpwbGF0Zm9ybSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFy
ICpjYXRlZ29yeUVuYWJsZWRGbGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB0aW1lc3RhbXAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFyZ3MsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmFyZ05hbWVzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNo
YXIgKmFyZ1R5cGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyAqYXJnVmFsdWVzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MpCi0gICAgewotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBTZXQgdGhlIGR1cmF0aW9uIGZpZWxkIG9m
IGEgQ09NUExFVEUgdHJhY2UgZXZlbnQuCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRyYWNlRXZl
bnREdXJhdGlvbihjb25zdCB1bnNpZ25lZCBjaGFyICpjYXRlZ29yeUVuYWJsZWRGbGFnLCBjb25z
dCBjaGFyICpuYW1lLCBUcmFjZUV2ZW50SGFuZGxlIGV2ZW50SGFuZGxlKSB7IH0KLQotICAgIC8v
IENhbGxiYWNrcyBmb3IgcmVwb3J0aW5nIGhpc3RvZ3JhbSBkYXRhLgotICAgIC8vIEN1c3RvbUNv
dW50cyBoaXN0b2dyYW0gaGFzIGV4cG9uZW50aWFsIGJ1Y2tldCBzaXplcywgc28gdGhhdCBtaW49
MSwgbWF4PTEwMDAwMDAsIGJ1Y2tldENvdW50PTUwIHdvdWxkIGRvLgotICAgIHZpcnR1YWwgdm9p
ZCBoaXN0b2dyYW1DdXN0b21Db3VudHMoY29uc3QgY2hhciAqbmFtZSwgaW50IHNhbXBsZSwgaW50
IG1pbiwgaW50IG1heCwgaW50IGJ1Y2tldENvdW50KSB7IH0KLSAgICAvLyBFbnVtZXJhdGlvbiBo
aXN0b2dyYW0gYnVja2V0cyBhcmUgbGluZWFyLCBib3VuZGFyeVZhbHVlIHNob3VsZCBiZSBsYXJn
ZXIgdGhhbiBhbnkgcG9zc2libGUgc2FtcGxlIHZhbHVlLgotICAgIHZpcnR1YWwgdm9pZCBoaXN0
b2dyYW1FbnVtZXJhdGlvbihjb25zdCBjaGFyICpuYW1lLCBpbnQgc2FtcGxlLCBpbnQgYm91bmRh
cnlWYWx1ZSkgeyB9Ci0gICAgLy8gVW5saWtlIGVudW1lcmF0aW9uIGhpc3RvZ3JhbXMsIHNwYXJz
ZSBoaXN0b2dyYW1zIG9ubHkgYWxsb2NhdGUgbWVtb3J5IGZvciBub24tZW1wdHkgYnVja2V0cy4K
LSAgICB2aXJ0dWFsIHZvaWQgaGlzdG9ncmFtU3BhcnNlKGNvbnN0IGNoYXIgKm5hbWUsIGludCBz
YW1wbGUpIHsgfQotICAgIC8vIEJvb2xlYW4gaGlzdG9ncmFtcyB0cmFjayB0d28tc3RhdGUgdmFy
aWFibGVzLgotICAgIHZpcnR1YWwgdm9pZCBoaXN0b2dyYW1Cb29sZWFuKGNvbnN0IGNoYXIgKm5h
bWUsIGJvb2wgc2FtcGxlKSB7IH0KLQotICBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+UGxhdGZv
cm0oKSB7IH0KLX07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OlRyYWNlRXZlbnRIYW5kbGUgZXZlbnRIYW5kbGUpCit7Cit9CiAKKy8vIENhbGxiYWNr
cyBmb3IgcmVwb3J0aW5nIGhpc3RvZ3JhbSBkYXRhLgorLy8gQ3VzdG9tQ291bnRzIGhpc3RvZ3Jh
bSBoYXMgZXhwb25lbnRpYWwgYnVja2V0IHNpemVzLCBzbyB0aGF0IG1pbj0xLCBtYXg9MTAwMDAw
MCwgYnVja2V0Q291bnQ9NTAKKy8vIHdvdWxkIGRvLgoraW5saW5lIHZvaWQgQU5HTEVfaGlzdG9n
cmFtQ3VzdG9tQ291bnRzKFBsYXRmb3JtTWV0aG9kcyAqcGxhdGZvcm0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2FtcGxlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IG1heCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgYnVja2V0Q291bnQpCit7Cit9CisvLyBFbnVtZXJhdGlvbiBoaXN0b2dy
YW0gYnVja2V0cyBhcmUgbGluZWFyLCBib3VuZGFyeVZhbHVlIHNob3VsZCBiZSBsYXJnZXIgdGhh
biBhbnkgcG9zc2libGUgc2FtcGxlCisvLyB2YWx1ZS4KK2lubGluZSB2b2lkIEFOR0xFX2hpc3Rv
Z3JhbUVudW1lcmF0aW9uKFBsYXRmb3JtTWV0aG9kcyAqcGxhdGZvcm0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNhbXBsZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBib3VuZGFyeVZhbHVlKQoreworfQorLy8gVW5saWtl
IGVudW1lcmF0aW9uIGhpc3RvZ3JhbXMsIHNwYXJzZSBoaXN0b2dyYW1zIG9ubHkgYWxsb2NhdGUg
bWVtb3J5IGZvciBub24tZW1wdHkgYnVja2V0cy4KK2lubGluZSB2b2lkIEFOR0xFX2hpc3RvZ3Jh
bVNwYXJzZShQbGF0Zm9ybU1ldGhvZHMgKnBsYXRmb3JtLCBjb25zdCBjaGFyICpuYW1lLCBpbnQg
c2FtcGxlKQoreworfQorLy8gQm9vbGVhbiBoaXN0b2dyYW1zIHRyYWNrIHR3by1zdGF0ZSB2YXJp
YWJsZXMuCitpbmxpbmUgdm9pZCBBTkdMRV9oaXN0b2dyYW1Cb29sZWFuKFBsYXRmb3JtTWV0aG9k
cyAqcGxhdGZvcm0sIGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgc2FtcGxlKQorewogfQogCi1leHRl
cm4gIkMiCisvLyBBbGxvd3MgdXMgdG8gcHJvZ3JhbWF0aWNhbGx5IG92ZXJyaWRlIEFOR0xFJ3Mg
ZGVmYXVsdCB3b3JrYXJvdW5kcyBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KK2lubGluZSB2b2lkIEFO
R0xFX292ZXJyaWRlV29ya2Fyb3VuZHNEM0QoUGxhdGZvcm1NZXRob2RzICpwbGF0Zm9ybSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6Oldvcmthcm91bmRz
RDNEICp3b3JrYXJvdW5kc0QzRCkKIHsKK30KIAotdHlwZWRlZiB2b2lkIChBTkdMRV9BUElFTlRS
WSAqQU5HTEVQbGF0Zm9ybUluaXRpYWxpemVGdW5jKShhbmdsZTo6UGxhdGZvcm0qKTsKLUFOR0xF
X1BMQVRGT1JNX0VYUE9SVCB2b2lkIEFOR0xFX0FQSUVOVFJZIEFOR0xFUGxhdGZvcm1Jbml0aWFs
aXplKGFuZ2xlOjpQbGF0Zm9ybSopOworLy8gUGxhdGZvcm0gbWV0aG9kcyBhcmUgZW51bWVyYXRl
ZCBoZXJlIG9uY2UuCisjZGVmaW5lIEFOR0xFX1BMQVRGT1JNX09QKE9QKSAgICAgICBcCisgICAg
T1AoY3VycmVudFRpbWUpICAgICAgICAgICAgICAgICBcCisgICAgT1AobW9ub3RvbmljYWxseUlu
Y3JlYXNpbmdUaW1lKSBcCisgICAgT1AobG9nRXJyb3IpICAgICAgICAgICAgICAgICAgICBcCisg
ICAgT1AobG9nV2FybmluZykgICAgICAgICAgICAgICAgICBcCisgICAgT1AobG9nSW5mbykgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgT1AoZ2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKSBc
CisgICAgT1AoYWRkVHJhY2VFdmVudCkgICAgICAgICAgICAgICBcCisgICAgT1AodXBkYXRlVHJh
Y2VFdmVudER1cmF0aW9uKSAgICBcCisgICAgT1AoaGlzdG9ncmFtQ3VzdG9tQ291bnRzKSAgICAg
ICBcCisgICAgT1AoaGlzdG9ncmFtRW51bWVyYXRpb24pICAgICAgICBcCisgICAgT1AoaGlzdG9n
cmFtU3BhcnNlKSAgICAgICAgICAgICBcCisgICAgT1AoaGlzdG9ncmFtQm9vbGVhbikgICAgICAg
ICAgICBcCisgICAgT1Aob3ZlcnJpZGVXb3JrYXJvdW5kc0QzRCkKIAotdHlwZWRlZiB2b2lkIChB
TkdMRV9BUElFTlRSWSAqQU5HTEVQbGF0Zm9ybVNodXRkb3duRnVuYykoKTsKLUFOR0xFX1BMQVRG
T1JNX0VYUE9SVCB2b2lkIEFOR0xFX0FQSUVOVFJZIEFOR0xFUGxhdGZvcm1TaHV0ZG93bigpOwor
I2RlZmluZSBBTkdMRV9QTEFURk9STV9NRVRIT0RfREVGKE5hbWUpIGRlY2x0eXBlKCZBTkdMRV8j
I05hbWUpIE5hbWUgPSBBTkdMRV8jI05hbWU7CiAKLXR5cGVkZWYgYW5nbGU6OlBsYXRmb3JtICoo
QU5HTEVfQVBJRU5UUlkgKkFOR0xFUGxhdGZvcm1DdXJyZW50RnVuYykoKTsKLUFOR0xFX1BMQVRG
T1JNX0VYUE9SVCBhbmdsZTo6UGxhdGZvcm0gKkFOR0xFX0FQSUVOVFJZIEFOR0xFUGxhdGZvcm1D
dXJyZW50KCk7CitzdHJ1Y3QgUGxhdGZvcm1NZXRob2RzCit7CisgICAgQU5HTEVfUExBVEZPUk1f
T1AoQU5HTEVfUExBVEZPUk1fTUVUSE9EX0RFRik7CiAKLX0KKyAgICAvLyBVc2VyIGRhdGEgcG9p
bnRlciBmb3IgYW55IGltcGxlbWVudGF0aW9uIHNwZWNpZmljIG1lbWJlcnMuCisgICAgdm9pZCAq
Y29udGV4dCA9IDA7Cit9OworCisjdW5kZWYgQU5HTEVfUExBVEZPUk1fTUVUSE9EX0RFRgorCisv
LyBTdWJ0cmFjdCBvbmUgdG8gYWNjb3VudCBmb3IgdGhlIGNvbnRleHQgcG9pbnRlci4KK2NvbnN0
ZXhwciB1bnNpZ25lZCBpbnQgZ19OdW1QbGF0Zm9ybU1ldGhvZHMgPSAoc2l6ZW9mKFBsYXRmb3Jt
TWV0aG9kcykgLyBzaXplb2YodWludHB0cl90KSkgLSAxOworCisjZGVmaW5lIEFOR0xFX1BMQVRG
T1JNX01FVEhPRF9TVFJJTkcoTmFtZSkgI05hbWUKKyNkZWZpbmUgQU5HTEVfUExBVEZPUk1fTUVU
SE9EX1NUUklORzIoTmFtZSkgQU5HTEVfUExBVEZPUk1fTUVUSE9EX1NUUklORyhOYW1lKSwKKwor
Y29uc3RleHByIGNvbnN0IGNoYXIgKmNvbnN0IGdfUGxhdGZvcm1NZXRob2ROYW1lc1tnX051bVBs
YXRmb3JtTWV0aG9kc10gPSB7CisgICAgQU5HTEVfUExBVEZPUk1fT1AoQU5HTEVfUExBVEZPUk1f
TUVUSE9EX1NUUklORzIpfTsKKworI3VuZGVmIEFOR0xFX1BMQVRGT1JNX01FVEhPRF9TVFJJTkcy
CisjdW5kZWYgQU5HTEVfUExBVEZPUk1fTUVUSE9EX1NUUklORworCit9ICAvLyBuYW1lc3BhY2Ug
YW5nbGUKKworZXh0ZXJuICJDIiB7CisKKy8vIEdldHMgdGhlIHBsYXRmb3JtIG1ldGhvZHMgb24g
dGhlIHBhc3NlZC1pbiBFR0wgZGlzcGxheS4gSWYgdGhlIG1ldGhvZCBuYW1lIHNpZ25hdHVyZSBk
b2VzIG5vdAorLy8gbWF0Y2ggdGhlIGNvbXBpbGVkIHNpZ25hdHVyZSBmb3IgdGhpcyBBTkdMRSwg
ZmFsc2UgaXMgcmV0dXJuZWQuIE9uIHN1Y2Nlc3MgdHJ1ZSBpcyByZXR1cm5lZC4KKy8vIFRoZSBh
cHBsaWNhdGlvbiBzaG91bGQgc2V0IGFueSBwbGF0Zm9ybSBtZXRob2RzIGl0IGNhcmVzIGFib3V0
IG9uIHRoZSByZXR1cm5lZCBwb2ludGVyLgorLy8gSWYgZGlzcGxheSBpcyBub3QgdmFsaWQsIGJl
aGF2aW91ciBpcyB1bmRlZmluZWQuCisvLworLy8gVXNlIGEgdm9pZCAqIGhlcmUgdG8gc2lsZW5j
ZSBhIHNhbml0aXplciBsaW1pdGF0aW9uIHdpdGggZGVjbHR5cGUuCisvLyBUT0RPKGptYWRpbGwp
OiBVc2UgYW5nbGU6OlBsYXRmb3JtTWV0aG9kcyAqKiBpZiBVQlNBTiBpcyBmaXhlZCB0byBoYW5k
bGUgZGVjbHR5cGUuCisKK0FOR0xFX1BMQVRGT1JNX0VYUE9SVCBib29sIEFOR0xFX0FQSUVOVFJZ
IEFOR0xFR2V0RGlzcGxheVBsYXRmb3JtKGFuZ2xlOjpFR0xEaXNwbGF5VHlwZSBkaXNwbGF5LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqY29uc3QgbWV0aG9kTmFtZXNbXSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBtZXRob2ROYW1lQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdm9pZCAqcGxhdGZvcm1NZXRob2RzT3V0KTsKKworLy8gU2V0cyB0aGUgcGxhdGZvcm0gbWV0
aG9kcyBiYWNrIHRvIHRoZWlyIGRlZmF1bHRzLgorLy8gSWYgZGlzcGxheSBpcyBub3QgdmFsaWQs
IGJlaGF2aW91ciBpcyB1bmRlZmluZWQuCitBTkdMRV9QTEFURk9STV9FWFBPUlQgdm9pZCBBTkdM
RV9BUElFTlRSWSBBTkdMRVJlc2V0RGlzcGxheVBsYXRmb3JtKGFuZ2xlOjpFR0xEaXNwbGF5VHlw
ZSBkaXNwbGF5KTsKKworfSAgLy8gZXh0ZXJuICJDIgorCituYW1lc3BhY2UgYW5nbGUKK3sKKy8v
IFVzZSB0eXBlZGVmcyBoZXJlIGluc3RlYWQgb2YgZGVjbHR5cGUgdG8gd29yayBhcm91bmQgc2Fu
aXRpemVyIGxpbWl0YXRpb25zLgorLy8gVE9ETyhqbWFkaWxsKTogVXNlIGRlY2x0eXBlIGhlcmUg
aWYgVUJTQU4gaXMgZml4ZWQuCit0eXBlZGVmIGJvb2woQU5HTEVfQVBJRU5UUlkgKkdldERpc3Bs
YXlQbGF0Zm9ybUZ1bmMpKGFuZ2xlOjpFR0xEaXNwbGF5VHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29uc3QgKiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2b2lkICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZvaWQgKik7Cit0eXBlZGVmIHZvaWQoQU5HTEVfQVBJRU5UUlkgKlJlc2V0
RGlzcGxheVBsYXRmb3JtRnVuYykoYW5nbGU6OkVHTERpc3BsYXlUeXBlKTsKK30gIC8vIG5hbWVz
cGFjZSBhbmdsZQorCisvLyBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBleHBvcnRlZAorYW5nbGU6OlBs
YXRmb3JtTWV0aG9kcyAqQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKTsKIAogI2VuZGlmIC8vIEFOR0xF
X1BMQVRGT1JNX0gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvV29ya2Fyb3VuZHNEM0QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL2luY2x1ZGUvcGxhdGZvcm0vV29ya2Fyb3VuZHNEM0QuaApzaW1pbGFyaXR5IGluZGV4IDgy
JQpyZW5hbWUgZnJvbSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1dvcmthcm91bmRzRDNELmgKcmVuYW1lIHRvIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L2luY2x1ZGUvcGxhdGZvcm0vV29ya2Fyb3VuZHNEM0QuaAppbmRleCA4ZGNjZmYzMDQzYy4uNTYy
OWYzMjJhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvV29ya2Fyb3VuZHNEM0QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9pbmNsdWRlL3BsYXRmb3JtL1dvcmthcm91bmRzRDNELmgKQEAgLTYsMTYgKzYsMTYgQEAK
IAogLy8gV29ya2Fyb3VuZHNEM0QuaDogV29ya2Fyb3VuZHMgZm9yIEQzRCBkcml2ZXIgYnVncyBh
bmQgb3RoZXIgaXNzdWVzLgogCi0jaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9XT1JLQVJP
VU5EU0QzRF9IXwotI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfV09SS0FST1VORFNEM0Rf
SF8KKyNpZm5kZWYgQU5HTEVfUExBVEZPUk1fV09SS0FST1VORFNEM0RfSF8KKyNkZWZpbmUgQU5H
TEVfUExBVEZPUk1fV09SS0FST1VORFNEM0RfSF8KIAogLy8gVE9ETyhqbWFkaWxsLHptbyxnZW9m
ZmxhbmcpOiBtYWtlIGEgd29ya2Fyb3VuZHMgbGlicmFyeSB0aGF0IGNhbiBvcGVyYXRlCiAvLyBp
bmRlcGVuZGVudCBvZiBBTkdMRSdzIHJlbmRlcmVyLiBXb3JrYXJvdW5kcyBzaG91bGQgYWxzbyBi
ZSBhY2Nlc3NpYmxlCiAvLyBvdXRzaWRlIG9mIHRoZSBSZW5kZXJlci4KIAotbmFtZXNwYWNlIHJ4
CituYW1lc3BhY2UgYW5nbGUKIHsKLXN0cnVjdCBEM0RDb21waWxlcldvcmthcm91bmRzCitzdHJ1
Y3QgQ29tcGlsZXJXb3JrYXJvdW5kc0QzRAogewogICAgIGJvb2wgc2tpcE9wdGltaXphdGlvbiAg
ID0gZmFsc2U7CiAgICAgYm9vbCB1c2VNYXhPcHRpbWl6YXRpb24gPSBmYWxzZTsKQEAgLTgzLDcg
KzgzLDcgQEAgc3RydWN0IFdvcmthcm91bmRzRDNECiAKICAgICAvLyBJbiBJbnRlbCBkcml2ZXIs
IHRoZSBkYXRhIHdpdGggZm9ybWF0IERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSB3aWxsIGJlIHBh
cnNlZCBpbmNvcnJlY3RseS4KICAgICAvLyBUaGlzIHdvcmthcm91ZCB3aWxsIGRpc2FibGUgQjVH
NlI1IHN1cHBvcnQgd2hlbiBpdCdzIEludGVsIGRyaXZlci4gQnkgZGVmYXVsdCwgaXQgd2lsbCB1
c2UKLSAgICAvLyBSOEc4QjhBOCBmb3JtYXQuCisgICAgLy8gUjhHOEI4QTggZm9ybWF0LiBUaGlz
IGJ1ZyBpcyBmaXhlZCBpbiB2ZXJzaW9uIDQ1Mzkgb24gSW50ZWwgZHJpdmVycy4KICAgICBib29s
IGRpc2FibGVCNUc2UjVTdXBwb3J0ID0gZmFsc2U7CiAKICAgICAvLyBPbiBzb21lIEludGVsIGRy
aXZlcnMsIGV2YWx1YXRpbmcgdW5hcnkgbWludXMgb3BlcmF0b3Igb24gaW50ZWdlciBtYXkgZ2V0
IHdyb25nIGFuc3dlciBpbgpAQCAtOTEsMTEgKzkxLDIzIEBAIHN0cnVjdCBXb3JrYXJvdW5kc0Qz
RAogICAgIGJvb2wgcmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvciA9IGZhbHNlOwogCiAgICAgLy8g
T24gc29tZSBJbnRlbCBkcml2ZXJzLCB1c2luZyBpc25hbigpIG9uIGhpZ2hwIGZsb2F0IHdpbGwg
Z2V0IHdyb25nIGFuc3dlci4gVG8gd29yayBhcm91bmQKLSAgICAvLyB0aGlzIGJ1Zywgd2UgdXNl
IGFuIGV4cHJlc3Npb24gdG8gZW11bGF0ZSBmdW5jdGlvbiBpc25hbigpLiBUcmFja2luZyBidWc6
Ci0gICAgLy8gaHR0cHM6Ly9jcmJ1Zy5jb20vNjUwNTQ3CisgICAgLy8gdGhpcyBidWcsIHdlIHVz
ZSBhbiBleHByZXNzaW9uIHRvIGVtdWxhdGUgZnVuY3Rpb24gaXNuYW4oKS4KKyAgICAvLyBUcmFj
a2luZyBidWc6IGh0dHBzOi8vY3JidWcuY29tLzY1MDU0NworICAgIC8vIFRoaXMgZHJpdmVyIGJ1
ZyBpcyBmaXhlZCBpbiAyMS4yMC4xNi40NTQyLgogICAgIGJvb2wgZW11bGF0ZUlzbmFuRmxvYXQg
PSBmYWxzZTsKKworICAgIC8vIE9uIHNvbWUgSW50ZWwgZHJpdmVycywgdXNpbmcgY2xlYXIoKSBt
YXkgbm90IHRha2UgZWZmZWN0LiBPbmUgb2Ygc3VjaCBzaXR1YXRpb24gaXMgdG8gY2xlYXIKKyAg
ICAvLyBhIHRhcmdldCB3aXRoIHdpZHRoIG9yIGhlaWdodCA8IDE2LiBUbyB3b3JrIGFyb3VuZCB0
aGlzIGJ1Zywgd2UgY2FsbCBjbGVhcigpIHR3aWNlIG9uIHRoZXNlCisgICAgLy8gcGxhdGZvcm1z
LiBUcmFja2luZyBidWc6IGh0dHBzOi8vY3JidWcuY29tLzY1NTUzNAorICAgIGJvb2wgY2FsbENs
ZWFyVHdpY2VPblNtYWxsVGFyZ2V0ID0gZmFsc2U7CisKKyAgICAvLyBPbiBzb21lIEludGVsIGRy
aXZlcnMsIGNvcHlpbmcgZnJvbSBzdGFnaW5nIHN0b3JhZ2UgdG8gY29uc3RhbnQgYnVmZmVyIHN0
b3JhZ2UgZG9lcyBub3QKKyAgICAvLyBzZWVtIHRvIHdvcmsuIFdvcmsgYXJvdW5kIHRoaXMgYnkg
a2VlcGluZyBzeXN0ZW0gbWVtb3J5IHN0b3JhZ2UgYXMgYSBjYW5vbmljYWwgcmVmZXJlbmNlCisg
ICAgLy8gZm9yIGJ1ZmZlciBkYXRhLgorICAgIC8vIEQzRDExLW9ubHkgd29ya2Fyb3VuZC4gU2Vl
IGh0dHA6Ly9jcmJ1Zy5jb20vNTkzMDI0LgorICAgIGJvb2wgdXNlU3lzdGVtTWVtb3J5Rm9yQ29u
c3RhbnRCdWZmZXJzID0gZmFsc2U7CiB9OwogCi19ICAvLyBuYW1lc3BhY2UgcngKK30gIC8vIG5h
bWVzcGFjZSBhbmdsZQogCi0jZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9XT1JLQVJP
VU5EU0QzRF9IXworI2VuZGlmICAvLyBBTkdMRV9QTEFURk9STV9XT1JLQVJPVU5EU0QzRF9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2FuZ2xlLmd5cCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmdsZS5neXAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDU3OGYwZjM1MjZmLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvYW5nbGUuZ3lwCisrKyAvZGV2L251bGwKQEAgLTEsMzEwICswLDAgQEAKLSMgQ29w
eXJpZ2h0IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLQot
ewotICAgICd2YXJpYWJsZXMnOgotICAgIHsKLSAgICAgICAgJ2FuZ2xlX2NvZGUnOiAxLAotICAg
ICAgICAnYW5nbGVfZ2VuX3BhdGgnOiAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvYW5nbGUn
LAotICAgICAgICAnYW5nbGVfaWRfc2NyaXB0X2Jhc2UnOiAnY29tbWl0X2lkLnB5JywKLSAgICAg
ICAgJ2FuZ2xlX2lkX3NjcmlwdCc6ICc8KGFuZ2xlX2dlbl9wYXRoKS88KGFuZ2xlX2lkX3Njcmlw
dF9iYXNlKScsCi0gICAgICAgICdhbmdsZV9pZF9oZWFkZXJfYmFzZSc6ICdjb21taXQuaCcsCi0g
ICAgICAgICdhbmdsZV9pZF9oZWFkZXInOiAnPChhbmdsZV9nZW5fcGF0aCkvaWQvPChhbmdsZV9p
ZF9oZWFkZXJfYmFzZSknLAotICAgICAgICAnYW5nbGVfdXNlX2NvbW1pdF9pZCUnOiAnPCEocHl0
aG9uIDwoYW5nbGVfaWRfc2NyaXB0X2Jhc2UpIGNoZWNrIC4uKScsCi0gICAgICAgICdhbmdsZV9l
bmFibGVfZDNkOSUnOiAwLAotICAgICAgICAnYW5nbGVfZW5hYmxlX2QzZDExJSc6IDAsCi0gICAg
ICAgICdhbmdsZV9lbmFibGVfZ2wlJzogMCwKLSAgICAgICAgJ2FuZ2xlX2VuYWJsZV92dWxrYW4l
JzogMCwKLSAgICAgICAgJ2FuZ2xlX2VuYWJsZV9lc3NsJSc6IDEsICMgRW5hYmxlIHRoaXMgZm9y
IGFsbCBjb25maWdzIGJ5IGRlZmF1bHQKLSAgICAgICAgJ2FuZ2xlX2VuYWJsZV9nbHNsJSc6IDEs
ICMgRW5hYmxlIHRoaXMgZm9yIGFsbCBjb25maWdzIGJ5IGRlZmF1bHQKLSAgICAgICAgJ2FuZ2xl
X2VuYWJsZV9obHNsJSc6IDAsCi0gICAgICAgICdhbmdsZV9saW5rX2dseCUnOiAwLAotICAgICAg
ICAnYW5nbGVfZ2xfbGlicmFyeV90eXBlJSc6ICdzaGFyZWRfbGlicmFyeScsCi0gICAgICAgICdk
Y2hlY2tfYWx3YXlzX29uJSc6IDAsCi0gICAgICAgICdjb25kaXRpb25zJzoKLSAgICAgICAgWwot
ICAgICAgICAgICAgWydPUz09IndpbiInLAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICdhbmdsZV9lbmFibGVfZ2wlJzogMSwKLSAgICAgICAgICAgICAgICAnYW5nbGVfZW5hYmxlX2Qz
ZDklJzogMSwKLSAgICAgICAgICAgICAgICAnYW5nbGVfZW5hYmxlX2QzZDExJSc6IDEsCi0gICAg
ICAgICAgICAgICAgJ2FuZ2xlX2VuYWJsZV9obHNsJSc6IDEsCi0gICAgICAgICAgICAgICAgJ2Fu
Z2xlX2VuYWJsZV92dWxrYW4lJzogMSwKLSAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgWydP
Uz09ImxpbnV4IiBhbmQgdXNlX3gxMT09MSBhbmQgY2hyb21lb3M9PTAnLAotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICdhbmdsZV9lbmFibGVfZ2wlJzogMSwKLSAgICAgICAgICAgIH1d
LAotICAgICAgICAgICAgWydPUz09Im1hYyInLAotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICdhbmdsZV9lbmFibGVfZ2wlJzogMSwKLSAgICAgICAgICAgIH1dLAotICAgICAgICAgICAg
Wyd1c2Vfb3pvbmU9PTEnLAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdhbmdsZV9l
bmFibGVfZ2wlJzogMSwKLSAgICAgICAgICAgIH1dLAotICAgICAgICBdLAotICAgICAgICAnYW5n
bGVfZW5hYmxlX251bGwlJzogMSwgIyBBdmFpbGFibGUgb24gYWxsIHBsYXRmb3JtcwotICAgIH0s
Ci0gICAgJ2luY2x1ZGVzJzoKLSAgICBbCi0gICAgICAgICdjb21waWxlci5neXBpJywKLSAgICAg
ICAgJ2xpYkdMRVN2Mi5neXBpJywKLSAgICAgICAgJ2xpYkVHTC5neXBpJwotICAgIF0sCi0KLSAg
ICAndGFyZ2V0cyc6Ci0gICAgWwotICAgICAgICB7Ci0gICAgICAgICAgICAndGFyZ2V0X25hbWUn
OiAnYW5nbGVfY29tbW9uJywKLSAgICAgICAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywK
LSAgICAgICAgICAgICdpbmNsdWRlcyc6IFsgJy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGkn
LCBdLAotICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAg
ICAgICc8QChsaWJhbmdsZV9jb21tb25fc291cmNlcyknLAotICAgICAgICAgICAgXSwKLSAgICAg
ICAgICAgICdpbmNsdWRlX2RpcnMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICcu
JywKLSAgICAgICAgICAgICAgICAnLi4vaW5jbHVkZScsCi0gICAgICAgICAgICAgICAgJ2NvbW1v
bi90aGlyZF9wYXJ0eS9udW1lcmljcycsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2Rl
cGVuZGVuY2llcyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgJ2NvbW1pdF9pZCcs
Ci0gICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3Mn
OgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOgotICAgICAg
ICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvaW5jbHVkZScs
Ci0gICAgICAgICAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYycsCi0gICAgICAgICAgICAg
ICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9jb21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3MnLAot
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgotICAgICAg
ICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgWydkY2hlY2tfYWx3YXlzX29uPT0xJywK
LSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmZpZ3Vy
YXRpb25zJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnUmVsZWFzZV9CYXNlJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J0FOR0xFX0VOQUJMRV9SRUxFQVNFX0FTU0VSVFMnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAg
ICAgWydPUz09IndpbiInLAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAnY29uZmlndXJhdGlvbnMnOgotICAgICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdEZWJ1Z19CYXNlJzoKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0FOR0xFX0VOQUJMRV9ERUJVR19BTk5PVEFUSU9OUycKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgfV0sCi0g
ICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAnY29uZGl0aW9u
cyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgWydkY2hlY2tfYWx3YXlzX29uPT0x
JywKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdjb25maWd1cmF0aW9u
cyc6Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdSZWxl
YXNlX0Jhc2UnOgotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9FTkFCTEVfUkVMRUFTRV9BU1NFUlRT
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9XSwKLSAgICAg
ICAgICAgICAgICBbJ09TPT0id2luIicsCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAnY29uZmlndXJhdGlvbnMnOgotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAnRGVidWdfQmFzZSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FOR0xFX0VO
QUJMRV9ERUJVR19BTk5PVEFUSU9OUycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAot
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICB9XSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0KLSAgICAgICAgewot
ICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2FuZ2xlX2ltYWdlX3V0aWwnLAotICAgICAgICAg
ICAgJ3R5cGUnOiAnc3RhdGljX2xpYnJhcnknLAotICAgICAgICAgICAgJ2luY2x1ZGVzJzogWyAn
Li4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScsIF0sCi0gICAgICAgICAgICAnc291cmNlcyc6
Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgJzxAKGxpYmFuZ2xlX2ltYWdlX3V0aWxf
c291cmNlcyknLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOgot
ICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICcuJywKLSAgICAgICAgICAgICAgICAnLi4v
aW5jbHVkZScsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6Ci0g
ICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgJ2FuZ2xlX2NvbW1vbicsCi0gICAgICAgICAg
ICBdLAotICAgICAgICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnOgotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOgotICAgICAgICAgICAgICAgIFsK
LSAgICAgICAgICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvaW5jbHVkZScsCi0gICAgICAgICAg
ICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYycsCi0gICAgICAgICAgICAgICAgXSwKLSAgICAg
ICAgICAgIH0sCi0gICAgICAgIH0sCi0KLSAgICAgICAgewotICAgICAgICAgICAgJ3RhcmdldF9u
YW1lJzogJ2NvcHlfc2NyaXB0cycsCi0gICAgICAgICAgICAndHlwZSc6ICdub25lJywKLSAgICAg
ICAgICAgICdpbmNsdWRlcyc6IFsgJy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLCBdLAot
ICAgICAgICAgICAgJ2hhcmRfZGVwZW5kZW5jeSc6IDEsCi0gICAgICAgICAgICAnY29waWVzJzoK
LSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdk
ZXN0aW5hdGlvbic6ICc8KGFuZ2xlX2dlbl9wYXRoKScsCi0gICAgICAgICAgICAgICAgICAgICdm
aWxlcyc6IFsgJ2NvcHlfY29tcGlsZXJfZGxsLmJhdCcsICc8KGFuZ2xlX2lkX3NjcmlwdF9iYXNl
KScgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdj
b25kaXRpb25zJzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICBbJ2FuZ2xlX2J1aWxk
X3dpbnJ0PT0xJywKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICd0eXBl
JyA6ICdzaGFyZWRfbGlicmFyeScsCi0gICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICBd
LAotICAgICAgICB9LAotICAgIF0sCi0gICAgJ2NvbmRpdGlvbnMnOgotICAgIFsKLSAgICAgICAg
WydhbmdsZV91c2VfY29tbWl0X2lkIT0wJywKLSAgICAgICAgewotICAgICAgICAgICAgJ3Rhcmdl
dHMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgJ3RhcmdldF9uYW1lJzogJ2NvbW1pdF9pZCcsCi0gICAgICAgICAgICAgICAgICAgICd0eXBl
JzogJ25vbmUnLAotICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZXMnOiBbICcuLi9idWlsZC9j
b21tb25fZGVmaW5lcy5neXBpJywgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2ll
cyc6IFsgJ2NvcHlfc2NyaXB0cycsIF0sCi0gICAgICAgICAgICAgICAgICAgICdoYXJkX2RlcGVu
ZGVuY3knOiAxLAotICAgICAgICAgICAgICAgICAgICAnYWN0aW9ucyc6Ci0gICAgICAgICAgICAg
ICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnYWN0aW9uX25hbWUnOiAnR2VuZXJhdGUgQU5HTEUgQ29tbWl0IElEIEhlYWRlcics
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiAnR2VuZXJhdGluZyBBTkdM
RSBDb21taXQgSUQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVmZXJlbmNlIHRo
ZSBnaXQgaW5kZXggYXMgYW4gaW5wdXQsIHNvIHdlIHJlYnVpbGQgb24gY2hhbmdlcyB0byB0aGUg
aW5kZXgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5wdXRzJzogWyAnPChhbmdsZV9p
ZF9zY3JpcHQpJywgJzwoYW5nbGVfcGF0aCkvLmdpdC9pbmRleCcgXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnb3V0cHV0cyc6IFsgJzwoYW5nbGVfaWRfaGVhZGVyKScgXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnbXN2c19jeWd3aW5fc2hlbGwnOiAwLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdhY3Rpb24nOgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5dGhvbicsICc8KGFuZ2xlX2lk
X3NjcmlwdCknLCAnZ2VuJywgJzwoYW5nbGVfcGF0aCknLCAnPChhbmdsZV9pZF9oZWFkZXIpJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAnYWxsX2RlcGVu
ZGVudF9zZXR0aW5ncyc6Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICdpbmNsdWRlX2RpcnMnOgotICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICc8KGFuZ2xlX2dlbl9wYXRoKScsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAg
ICAnY29uZGl0aW9ucyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIFsnYW5nbGVfYnVpbGRfd2lucnQ9PTEnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJyA6ICdzaGFyZWRfbGlicmFyeScs
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBdCi0gICAgICAgIH0sCi0gICAgICAgIHsgIyBh
bmdsZV91c2VfY29tbWl0X2lkPT0wCi0gICAgICAgICAgICAndGFyZ2V0cyc6Ci0gICAgICAgICAg
ICBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUn
OiAnY29tbWl0X2lkJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnbm9uZScsCi0gICAg
ICAgICAgICAgICAgICAgICdoYXJkX2RlcGVuZGVuY3knOiAxLAotICAgICAgICAgICAgICAgICAg
ICAnaW5jbHVkZXMnOiBbICcuLi9idWlsZC9jb21tb25fZGVmaW5lcy5neXBpJywgXSwKLSAgICAg
ICAgICAgICAgICAgICAgJ2NvcGllcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVzdGluYXRp
b24nOiAnPChhbmdsZV9nZW5fcGF0aCkvaWQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdmaWxlcyc6IFsgJzwoYW5nbGVfaWRfaGVhZGVyX2Jhc2UpJyBdCi0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdh
bGxfZGVwZW5kZW50X3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBb
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwoYW5nbGVfZ2VuX3BhdGgpJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgICAgICdjb25kaXRpb25zJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAg
ICAgICAgICAgICAgICAgWydhbmdsZV9idWlsZF93aW5ydD09MScsCi0gICAgICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnIDogJ3NoYXJlZF9s
aWJyYXJ5JywKLSAgICAgICAgICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgICAg
ICBdLAotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIF0KLSAgICAgICAgfV0sCi0gICAg
ICAgIFsnT1M9PSJ3aW4iJywKLSAgICAgICAgewotICAgICAgICAgICAgJ3RhcmdldHMnOgotICAg
ICAgICAgICAgWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Rhcmdl
dF9uYW1lJzogJ2NvcHlfY29tcGlsZXJfZGxsJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUn
OiAnbm9uZScsCi0gICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbICdjb3B5X3Nj
cmlwdHMnLCBdLAotICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZXMnOiBbICcuLi9idWlsZC9j
b21tb25fZGVmaW5lcy5neXBpJywgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMn
OgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICBbJ2FuZ2xl
X2J1aWxkX3dpbnJ0PT0wJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnYWN0aW9ucyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
WwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnYWN0aW9uX25hbWUnOiAnY29weV9kbGwnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiAnQ29weWluZyBEM0QgQ29tcGlsZXIg
RExMLi4uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtc3ZzX2N5Z3dp
bl9zaGVsbCc6IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5wdXRz
JzogWyAnY29weV9jb21waWxlcl9kbGwuYmF0JyBdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ291dHB1dHMnOiBbICc8KFBST0RVQ1RfRElSKS9kM2Rjb21waWxlcl80Ny5k
bGwnIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJzoKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiPChhbmdsZV9nZW5fcGF0aCkvY29weV9jb21waWxlcl9kbGwu
YmF0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJChQbGF0Zm9y
bU5hbWUpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPCh3aW5k
b3dzX3Nka19wYXRoKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IjwoUFJPRFVDVF9ESVIpIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdLCAjYWN0aW9ucwotICAgICAgICAgICAgICAgICAgICAgICAgfV0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0xJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHlwZScgOiAnc2hhcmVk
X2xpYnJhcnknLAotICAgICAgICAgICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAg
ICAgIF0KLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwgIyB0YXJnZXRzCi0gICAg
ICAgIH1dLAotICAgIF0gIyBjb25kaXRpb25zCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvYW5nbGUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9hbmdsZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40ZmQ5M2RkN2VmMQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9hbmdsZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMzg2OCBAQAorLy8gISQqVVRGOCokIQoreworCWFyY2hp
dmVWZXJzaW9uID0gMTsKKwljbGFzc2VzID0geworCX07CisJb2JqZWN0VmVyc2lvbiA9IDQ2Owor
CW9iamVjdHMgPSB7CisKKy8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCisJ
CTA1MUQ5MDMyNjQyRjdFMkM3NDEwQzQzQiAvKiBBbGwgKi8gPSB7CisJCQlpc2EgPSBQQlhBZ2dy
ZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gRDFEODM4NTcxNDAzMDVE
OEYxM0UyRDg5IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFy
Z2V0ICJBbGwiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVz
ID0gKAorCQkJCTRENzc4M0M5NkY5OTE3RkNFNDk3OTNDRSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCUJFQjY0RjU0QzM5RjFFNjdBNTQ5RTQyQiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCTM3QjI4RENENzEwRTBGMEJCMjE5RDlEMCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCTUzNDEzRDBDMTk0MTNEMkM1Nzg1NjYxNCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCUJBRUQ4QzIyQUJFOTE4OTlEQThBRTFERiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCUQyMjhBNzNCNEEwNzU2MkJEMjJGMUU5MSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCUIzNzY5RjkyMkMyMDZBQTM4QjVDNDAxNCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCTEwMUEzMDM1QTMyMjUwODREQjgyN0U0QiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCUJENTJGMTJBRERCMEFGNTFEQUQyQTk5NiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCUE2MTNGOEFDRDdENzE0RDU0NUNEOTIxOSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCTVGRjc4NzhBNzI4MEJBOUFFOUU1MTY1NCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCTM5QjkzQzBFNkE4QkVGMjZDNjhGODg4MSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCTUwQTJFQTM2OUQ0NjZBN0NGNTAxNjc2MyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJCTY3NUY5Nzc1REQ5MDc2OEE5MzdBN0U2NiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJKTsKKwkJCW5hbWUgPSBBbGw7CisJCQlwcm9kdWN0TmFtZSA9IEFsbDsKKwkJfTsK
KwkJNTVFNzAxRDQ4RDZGNzVGREUwRkI1Qjg5IC8qIGNvcHlfc2NyaXB0cyAqLyA9IHsKKwkJCWlz
YSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSBFRTEy
NzEzRjA0OTJGNDIxMTBEQjBBNTQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhB
Z2dyZWdhdGVUYXJnZXQgImNvcHlfc2NyaXB0cyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJ
CQk1QkUwREZBQkY4QTFEOEI1MUY1NjRGMjEgLyogQ29weSB0byAkKFNIQVJFRF9JTlRFUk1FRElB
VEVfRElSKS9hbmdsZSAqLywKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJ
bmFtZSA9IGNvcHlfc2NyaXB0czsKKwkJCXByb2R1Y3ROYW1lID0gY29weV9zY3JpcHRzOworCQl9
OworCQk1RDRDOUJGMTFBMjJEQjBDRTFBNDQxMjEgLyogbGliQU5HTEVfZDNkMTFfY29uZmlnICov
ID0geworCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9u
TGlzdCA9IEZFQjJFMzJGMUIwREYyNjFENDlGMEQ4NCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAibGliQU5HTEVfZDNkMTFfY29uZmlnIiAqLzsKKwkJ
CWJ1aWxkUGhhc2VzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQlu
YW1lID0gbGliQU5HTEVfZDNkMTFfY29uZmlnOworCQkJcHJvZHVjdE5hbWUgPSBsaWJBTkdMRV9k
M2QxMV9jb25maWc7CisJCX07CisJCTgwNTUxQ0Q3RUIyNDBGMDlGNzU1REFDMCAvKiBjb21taXRf
aWQgKi8gPSB7CisJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3Vy
YXRpb25MaXN0ID0gNTAwMEJDQUY4Nzc1NkI1MzIxMEM3RDE3IC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJjb21taXRfaWQiICovOworCQkJYnVpbGRQ
aGFzZXMgPSAoCisJCQkJMDk2RkY0OTAxNTlFNEE4NDIzNTM4REVCIC8qIEFjdGlvbiAiR2VuZXJh
dGUgQU5HTEUgQ29tbWl0IElEIEhlYWRlciIgKi8sCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0g
KAorCQkJCTQ3QjU5NTAyQzAwNEFGMDk3RDIyODQzMSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICov
LAorCQkJKTsKKwkJCW5hbWUgPSBjb21taXRfaWQ7CisJCQlwcm9kdWN0TmFtZSA9IGNvbW1pdF9p
ZDsKKwkJfTsKKwkJODA5NUZGNjU0MzBGMzY2NkQ2NTg3RjdGIC8qIGxpYkFOR0xFX3JlbmRlcmVy
X2NvbmZpZyAqLyA9IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29u
ZmlndXJhdGlvbkxpc3QgPSA3MjAxNzA1OTAxM0NERTRFRTBBMTNCNEYgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgImxpYkFOR0xFX3JlbmRlcmVyX2Nv
bmZpZyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAo
CisJCQkpOworCQkJbmFtZSA9IGxpYkFOR0xFX3JlbmRlcmVyX2NvbmZpZzsKKwkJCXByb2R1Y3RO
YW1lID0gbGliQU5HTEVfcmVuZGVyZXJfY29uZmlnOworCQl9OworLyogRW5kIFBCWEFnZ3JlZ2F0
ZVRhcmdldCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJ
CTAwRDA1MTBCRUZGMzVFRDk0NzNCQTVBMyAvKiBNZW1vcnlCdWZmZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzBFNDI5QTQzNUNGRURFMTk1NzAy
RkU3IC8qIE1lbW9yeUJ1ZmZlci5jcHAgKi87IH07CisJCTAxQTMxRjc5NTYyMDNDNUEzOTA4QUMz
OSAvKiBsaWJHTEVTdjIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTY2NTA3ODg2MDUxMEZGRTc5NTlCNEFEIC8qIGxpYkdMRVN2Mi5jcHAgKi87IH07
CisJCTAxRkI4ODM3RTM5QjUzMUIzOUE4RjQyQyAvKiBEaXNwbGF5R0wuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzhGRTYyRjY5NkQzRjJFNUQ0Qzgz
MTlCIC8qIERpc3BsYXlHTC5jcHAgKi87IH07CisJCTAyRDkxNEQ2RjlDQTQ4MjJDQjIyQTVDRiAv
KiBGcmFtZWJ1ZmZlck5VTEwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjlFQUNCQjg3RURFNUQ2QzAzOEE3RjFBIC8qIEZyYW1lYnVmZmVyTlVMTC5j
cHAgKi87IH07CisJCTAzQkFDMDc1NDk2OUNDRTJEMENDMUYxMyAvKiBEZXZpY2VOVUxMLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyQjZEN0I1Qjc0
NzlFMDQzMUU5QTNEQSAvKiBEZXZpY2VOVUxMLmNwcCAqLzsgfTsKKwkJMDRCNDNGQTJBQjI3NkIy
QkIzRTkyNDQ3IC8qIFZlcnRleEFycmF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDAwNTk0RjU4MDIwRDgyQzg4MUVCOUJCNiAvKiBWZXJ0ZXhBcnJh
eS5jcHAgKi87IH07CisJCTA2RTAyNzU4NjdBQUZBMDVFQzJDOUNDMCAvKiBUcmFuc2Zvcm1GZWVk
YmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QjJCMkM4ODlGNzNFRkMxMkZDNDY4OTQgLyogVHJhbnNmb3JtRmVlZGJhY2suY3BwICovOyB9Owor
CQkwNzQzNzUyODQ2NkU5NEJGRjJEQTEzQ0IgLyogRnJhbWVidWZmZXJBdHRhY2htZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RTIzNDZFQjBG
RUZFNkM2N0JBQzdFNyAvKiBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQuY3BwICovOyB9OworCQkwN0ZC
OTEyQ0I0RkYyRTJGN0IzQjNFMzcgLyogVHJhbnNmb3JtRmVlZGJhY2tHTC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RDJENjRDODA1RjEzQTA0OTJG
NjI3REYgLyogVHJhbnNmb3JtRmVlZGJhY2tHTC5jcHAgKi87IH07CisJCTA5QjA5NkFDQzk3QzQ5
QTFBRTU4QUM2RCAvKiBlbnRyeV9wb2ludHNfZ2xlc18zXzAuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjRCNjkyRjM2NUEwQkRDODUxNUVFRTYzIC8q
IGVudHJ5X3BvaW50c19nbGVzXzNfMC5jcHAgKi87IH07CisJCTBDMTQ2NUJDNkUyNkM0MzI3Q0Q0
RUQyRCAvKiBlbnRyeV9wb2ludHNfZ2xlc18zXzEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVCNkE1RkU4REIwOUU0OEZBMjYwNEUwIC8qIGVudHJ5
X3BvaW50c19nbGVzXzNfMS5jcHAgKi87IH07CisJCTBEODMyRjdDQjk1QkUwNTU5NzZDQzAwQSAv
KiBJbml0aWFsaXplLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI3OTFGMDY1NjI0MTkzRTg3NkFDMUQyRCAvKiBJbml0aWFsaXplLmNwcCAqLzsgfTsK
KwkJMEU1OTFEMjFGQTcyQ0RBOTg4MDlFOTIwIC8qIFZlcnRleEFycmF5TlVMTC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMUNCNTc4MjVGREYyOUND
NTkwNTJBRDEgLyogVmVydGV4QXJyYXlOVUxMLmNwcCAqLzsgfTsKKwkJMEYzRTA0MTUxRkEwMjY4
MTE1Q0IwOUIxIC8qIGVzM19jb3B5X2NvbnZlcnNpb25fdGFibGVfYXV0b2dlbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQkNCOUIzODk1OTQ0RUIy
ODQzMjQ0MDMgLyogZXMzX2NvcHlfY29udmVyc2lvbl90YWJsZV9hdXRvZ2VuLmNwcCAqLzsgfTsK
KwkJMTQ1NTI4MEExMDEyODUyQjIyODU4RUNFIC8qIEltYWdlTlVMTC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjA5QUE2RjQ2RjNDMkNGNjg2NDg1
NDkgLyogSW1hZ2VOVUxMLmNwcCAqLzsgfTsKKwkJMTU1REMwMzVBREQyM0E1QUIyRDMwNEU3IC8q
IFBhdGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjFCQjc3QzdDQ0NGOUEwNjVGQjNDQUEzIC8qIFBhdGguY3BwICovOyB9OworCQkxNUI4MDBERTM3
MTkzOEIyMEI3QzlDMkQgLyogUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTk5MjNDQ0RGODQ5OUJGQ0E0OUQ4
ODA4IC8qIFJlY29yZENvbnN0YW50UHJlY2lzaW9uLmNwcCAqLzsgfTsKKwkJMTdFRDFERDlDMEVE
QzJBRjU4OTEyMjFGIC8qIFVuaWZvcm1MaW5rZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0IxQzM5NEI1NEI3REMxQTJDMDRGNzdCIC8qIFVuaWZv
cm1MaW5rZXIuY3BwICovOyB9OworCQkxQTIzMEE1ODI3QjU5RTYyQUVDN0Y4RkYgLyogRXhwcmVz
c2lvblBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1N0NBNERDMzI0ODUwMUYzNTQxNjkyREMgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgKi87
IH07CisJCTFCNTdBN0E5MzdERjFCMzkxNjA3OTVDNyAvKiBTdXJmYWNlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMwNDc2QzVCQjMwRTU2REY1REJC
RjZBQiAvKiBTdXJmYWNlLmNwcCAqLzsgfTsKKwkJMUJERTI5REVBNTNGQ0UyNkIwOEU1ODEwIC8q
IFRleHR1cmVHTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxODBGQUQ4OENCQkZCMjc5NDU3RTA0NzIgLyogVGV4dHVyZUdMLmNwcCAqLzsgfTsKKwkJ
MUQ3RUExOTFDQzBDNEJBRjIyNzVDOUZFIC8qIE91dHB1dEdMU0xCYXNlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBNzVBMEVCQkQyMzE0OEU2M0VE
QzUzQSAvKiBPdXRwdXRHTFNMQmFzZS5jcHAgKi87IH07CisJCTFFMTI2NEJERTlBOUM0RkUxRjIw
NTZDRiAvKiBWYXJ5aW5nUGFja2luZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxNzNCNkQ3Qzg4QzQxREZDNDg5MUUxNkQgLyogVmFyeWluZ1BhY2tp
bmcuY3BwICovOyB9OworCQkyMEIxNDUzMjEzMTk3MjFENjJCOTE3REEgLyogYmxvY2tsYXlvdXQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTlEQ0Ez
NDYwNzFCOEJGNDg4REVCM0Q2IC8qIGJsb2NrbGF5b3V0LmNwcCAqLzsgfTsKKwkJMjBENThDNEYw
NkM5QUZCMjc1QURERDk0IC8qIFRyYW5zZm9ybUZlZWRiYWNrTlVMTC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OENEREE4REJDNUM1NTYyNjY4RDhE
M0IgLyogVHJhbnNmb3JtRmVlZGJhY2tOVUxMLmNwcCAqLzsgfTsKKwkJMjE3OTQyMzFCODVFODBG
OEE2QjU2RUMwIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDRTExMjU0MjFCQTg4MzdERDJDMjJGNiAv
KiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAgKi87IH07CisJCTIyOEIwMTIxOEZBMTZDMUZD
OTJBNjE4MCAvKiBlbnRyeV9wb2ludHNfZWdsX2V4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyNzQwRkMwOUIwRjFDQTk5Qjk1MkIwMzIgLyogZW50
cnlfcG9pbnRzX2VnbF9leHQuY3BwICovOyB9OworCQkyMzE4QTRBOURFQ0QxNDY4MzI0MEJDMjYg
LyogU3RhdGVNYW5hZ2VyR0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjAwRDcyN0FGQTgxNEM2QzhGNTFGMERDIC8qIFN0YXRlTWFuYWdlckdMLmNw
cCAqLzsgfTsKKwkJMjUyREZGRkI1ODk3RTRDMTk5MTQzOEUwIC8qIENhbGxEQUcuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTgzQUM2RThGRjQ2MjQ1
QzlGMTA1QUFCIC8qIENhbGxEQUcuY3BwICovOyB9OworCQkyNjM5RDE3RUNGNUNCMTcxQUNCRkU0
QUEgLyogSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMTZCMzhCMkY3N0JDMkVBMTRFQjlGNzkzIC8qIEltYWdlLmNwcCAqLzsgfTsKKwkJMjZE
M0FDRjI1RDk5ODZBOTlGRTBCRjUxIC8qIERpc3BsYXlOVUxMLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI0QTc3OTE5MEFCQjlDMTIwRUI2NDUxMCAv
KiBEaXNwbGF5TlVMTC5jcHAgKi87IH07CisJCTI3NkQ0NEI4OTI4RTVGMTA2MUIyNkRCRiAvKiBJ
bmRleFJhbmdlQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTc1MDJEQTc1NTZEQjZGQTQyNTU1RDg1IC8qIEluZGV4UmFuZ2VDYWNoZS5jcHAg
Ki87IH07CisJCTI4NEE4MDc4NDlDREE4QkZFRTRGQjY0RCAvKiBIYW5kbGVSYW5nZUFsbG9jYXRv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMTBG
Q0Q3OTc2RTc5QjAyOUJEM0U1NkUgLyogSGFuZGxlUmFuZ2VBbGxvY2F0b3IuY3BwICovOyB9Owor
CQkyODgzNDUwNzZCMUMwMkRDMkExRDMzNTAgLyogUXVlcnlOVUxMLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVEQjM2NDcwQjAzMTMyMUQzRjExQjJF
NyAvKiBRdWVyeU5VTEwuY3BwICovOyB9OworCQkyOTc4QTg1NDJDMjRGOEU2MzZDNUZFODkgLyog
RGlzcGxheUltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0FBM0FGNzc5QTM5REVGODM0MUJCMkFDIC8qIERpc3BsYXlJbXBsLmNwcCAqLzsgfTsK
KwkJMjlCNUIyQTQ3QTc5MDNBOTI5QTAwNTNDIC8qIGxpYmFuZ2xlX2NvbW1vbi5hIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEQwQjU4NjhENzM2Nzgx
QjQxMkY2NUFEIC8qIGxpYmFuZ2xlX2NvbW1vbi5hICovOyB9OworCQkyRDA5QUE2NjRGMzhFQTE5
NzY1MjRGQUMgLyogUGxhdGZvcm0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzAzMDczNjkyMkJBMUM5NUQ4M0VCNjJDIC8qIFBsYXRmb3JtLmNwcCAq
LzsgfTsKKwkJMkQ4NEI4MkQ5NjlCMjcyRUY5MDU4QzlGIC8qIFJld3JpdGVVbmFyeU1pbnVzT3Bl
cmF0b3JJbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUU2RDZFNDM1MTg5RUY4MTQyMEVCRDQ4IC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJ
bnQuY3BwICovOyB9OworCQkzMUIwRDhGODAzNUUxMDY2MkZFREZBODIgLyogVW5mb2xkU2hvcnRD
aXJjdWl0QVNULmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU4MjIyOUY4NkVERUUwMjE2OTM4RDNBOSAvKiBVbmZvbGRTaG9ydENpcmN1aXRBU1QuY3Bw
ICovOyB9OworCQkzMUI1MDI3Q0UwODk4MTc1NTE0NzJCNjEgLyogc3RyaW5nX3V0aWxzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhGQ0VGRTQ3REI5
OTc3QzlEQUU2OUI2QSAvKiBzdHJpbmdfdXRpbHMuY3BwICovOyB9OworCQkzMkI2RkMzQjA0NTZG
QkM2QzQ0NDA3RjEgLyogU3lzdGVtSW5mb19tYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNDk3RUY2MkUwQzQwNEZDQUVFNUVCOEEgLyogU3lzdGVt
SW5mb19tYWMubW0gKi87IH07CisJCTMzMzVCQjZGMjE2RDgxNTM1NTIyNTE0MCAvKiBXaW5kb3dT
dXJmYWNlQ0dMLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOUY4RkNERDc4RTkxNjgxRTEzQjE3QkVGIC8qIFdpbmRvd1N1cmZhY2VDR0wubW0gKi87IH07
CisJCTMzM0Q0RTU4ODEzNjJDODJFRjA1QjQ3QiAvKiBPcGVuR0wuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUY5RTYwOTBENzU3RUY5
NDlBRjA0MjYzIC8qIE9wZW5HTC5mcmFtZXdvcmsgKi87IH07CisJCTM1OEM3MTgwRUY0N0VGMjA4
QzgwREUxQyAvKiBWYWxpZGF0ZU91dHB1dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzBCNzE1RDY4QjFFNTE1QTU2NUM1MUJGIC8qIFZhbGlkYXRl
T3V0cHV0cy5jcHAgKi87IH07CisJCTM1RjU1Q0Q0MEJBNzIxNTIzOTQ1QUEzNCAvKiBJbnB1dC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Rjk1Qzc4
NTQ1QUQ1MEE1QzQ2RDc2MTYgLyogSW5wdXQuY3BwICovOyB9OworCQkzNzlCRTM0QjQ2MjJGNTdC
QjRBMkJGNjkgLyogdmFsaWRhdGlvbkVTMzEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEI1QTBENkUxQzY2ODJFMzhCNzg4MjhDIC8qIHZhbGlkYXRp
b25FUzMxLmNwcCAqLzsgfTsKKwkJMzlCQTExOTVFMjlCNjZCNjNBNkFCMTc4IC8qIERpcmVjdGl2
ZUhhbmRsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzFDQTE1QkJFMDQ4RUM3QjA1ODExNkRBIC8qIERpcmVjdGl2ZUhhbmRsZXIuY3BwICovOyB9
OworCQkzQTgwNDdBNUNCMzM5MEE4MTNBMzY4MDQgLyogUmVnZW5lcmF0ZVN0cnVjdE5hbWVzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY2QzgyQkY0
RURFNkQ4M0Y2QkVBREZCMCAvKiBSZWdlbmVyYXRlU3RydWN0TmFtZXMuY3BwICovOyB9OworCQkz
QjZFRjMyRTFBRjU2OUJEQ0MyQTkyQUUgLyogUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEExQzE1MkE4RDU1
RjdDMkJCQjk5RDVGIC8qIFJld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmNwcCAqLzsgfTsKKwkJM0Mx
RTc4OEI3QzREMEE5RDY3NzY0NkM1IC8qIEVtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjYxMkRFMkUz
RDkxMzFDOTAzQzgzNjEgLyogRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmNwcCAqLzsgfTsK
KwkJM0NENjkyNTNFMDE0QTgyNzM1NzE4RUVDIC8qIGdsb2JhbF9zdGF0ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQzkzMUM1RjRGQUFBRDNGMkJB
OTU3N0YgLyogZ2xvYmFsX3N0YXRlLmNwcCAqLzsgfTsKKwkJM0Q0REVDNjgwMEU4NDQ1MzZDQjg4
NkU2IC8qIGxpYkdMRVN2Mi5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE2QkY5NUZDRENBNDUzMTFEMTE4NDQ4MSAvKiBsaWJHTEVTdjIuZHls
aWIgKi87IH07CisJCTNENzlEOTNEQzEyRjNCRUFGN0FFNTIzOSAvKiB1dGlsaXRpZXMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTAwMUZFQUIzNzdG
MzY1MTZGOTM4NDc1IC8qIHV0aWxpdGllcy5jcHAgKi87IH07CisJCTNFMzkzMjg4NDYyNjU1MUU3
QThBNTI4MiAvKiBnbHNsYW5nX2xleC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyMDk1QzFDQ0VCMEVEQ0Y4NzIyM0FDNjggLyogZ2xzbGFuZ19sZXgu
Y3BwICovOyB9OworCQkzRUZCMTU3NTc4NzQ0ODA4RTUyQUIyNzkgLyogbG9hZF9mdW5jdGlvbnNf
dGFibGVfYXV0b2dlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGQjlFNzZGMDkxOUIyQkVBNEFDOENBQkIgLyogbG9hZF9mdW5jdGlvbnNfdGFibGVf
YXV0b2dlbi5jcHAgKi87IH07CisJCTQwMzc1RTFDRDk5OUQ0QUJGRDQ1MUI3QyAvKiBsb2FkaW1h
Z2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzA2
MEVDMDhBQkJBMTk2NEM3ODZBNDRDIC8qIGxvYWRpbWFnZS5jcHAgKi87IH07CisJCTQwRjlFQTMy
NzVCN0E5NTI3QzRGOEJEMiAvKiBDb25maWcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDE4M0E1NjM2MEJGOEFEODVGNDk1MDA1IC8qIENvbmZpZy5j
cHAgKi87IH07CisJCTQyMUEwMUEyNTQzMkQ1MjVFODRBRjdGMiAvKiBSZW5kZXJidWZmZXJHTC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkYyNjBF
OEYxOTMwN0Q4M0NBRUJDRkEgLyogUmVuZGVyYnVmZmVyR0wuY3BwICovOyB9OworCQk0MkExODIz
M0YwNUVEMjNEQkQ4NUNDOTIgLyogZXZlbnRfdHJhY2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQwNjI1QTI0QUVFRkYzNkFEMzUyNENEMCAvKiBl
dmVudF90cmFjZXIuY3BwICovOyB9OworCQk0NUQ3NjFGRUZBN0FEQTMxMzFDMEZDQjMgLyogRW11
bGF0ZVByZWNpc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBEOERFNENBMDhEMjhDQTE1NzM5MzY1ODMgLyogRW11bGF0ZVByZWNpc2lvbi5jcHAg
Ki87IH07CisJCTQ2MzRBNzE1NDRBNDk1Mjk4QjAwMjI4QSAvKiB2YWxpZGF0aW9uRVMyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxMDI2NEU5QTBD
NzYxQTlCOEY2MzRGRSAvKiB2YWxpZGF0aW9uRVMyLmNwcCAqLzsgfTsKKwkJNDZFRjREN0Q5QTlD
NUI0NEMzMUY0QjhBIC8qIElPS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDAyQUU1OEE0NDVDRjU4RDUzNDcxODRBRCAvKiBJT0tp
dC5mcmFtZXdvcmsgKi87IH07CisJCTQ3Qjg4M0U5MEQ0QUI4MjQ0NjVDMDk0MiAvKiBUZXh0dXJl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENDOEI5
QTg0OEVDMzEwRjZFNTdFQTVEOCAvKiBUZXh0dXJlLmNwcCAqLzsgfTsKKwkJNDkxNEY4MUUxMThG
MENEMjlENUYxQTY2IC8qIFdvcmtlclRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBQzM2RjlBRDNCMDk2RTE5N0M2ODk0OUUgLyogV29ya2Vy
VGhyZWFkLmNwcCAqLzsgfTsKKwkJNERDOTc1OTBBRUNEQThDOTNENTdBREVBIC8qIERpcmVjdGl2
ZUhhbmRsZXJCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUzMzhCMzdENUMyNEE3RjU1ODIzRTA3OSAvKiBEaXJlY3RpdmVIYW5kbGVyQmFzZS5j
cHAgKi87IH07CisJCTRFRjVDMjE0MDYyQjMxNUUwRUZEMjlDRiAvKiBDYXBzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJCRTUxRTVFMzdEQzkwRDIy
RjIzRUNCRiAvKiBDYXBzLmNwcCAqLzsgfTsKKwkJNTJEQ0U0NzNCREFERERBMkJEQjNDNDAyIC8q
IFBhdGhHTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxMkIwNURGOEJGRjBCQUU0MDYxMzBBNjUgLyogUGF0aEdMLmNwcCAqLzsgfTsKKwkJNTM0NTRC
NUE2MTVBQ0JFMDI2OTNGNUI4IC8qIFF1ZXJ5R0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkxMDBEQjNEM0Y4OUQwQ0U0NEM0QkFDIC8qIFF1ZXJ5
R0wuY3BwICovOyB9OworCQk1NDI3OTIxQUYyNkU3Q0Y4NzVFNEE5MUQgLyogUHJvZ3JhbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwMUJEQTFFOURD
NjE3RUZGNjA2NkFDODAgLyogUHJvZ3JhbS5jcHAgKi87IH07CisJCTU3MjU3NDIzQzAxOUZEQjhF
MTM0MkJEOSAvKiBTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODkwNUJGNzRBQzRCNjVGRkI4ODM1RTlDIC8qIFN0cmVhbS5jcHAgKi87IH07
CisJCTU3M0Q3MkYwNjJFNjNCRDc0RDMxODU0MyAvKiBTeW1ib2xUYWJsZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTA4OEYwODVGQzg0NzdCQ0VC
OEM3NTEgLyogU3ltYm9sVGFibGUuY3BwICovOyB9OworCQk1Nzc3RTcyQTcyQzEzNUI5N0M3RDMy
QUQgLyogZW50cnlfcG9pbnRzX2dsZXNfM18xLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1QjZBNUZFOERCMDlFNDhGQTI2MDRFMCAvKiBlbnRyeV9w
b2ludHNfZ2xlc18zXzEuY3BwICovOyB9OworCQk1N0E0NzQ2RENGNUE4QkFBM0ZDOUZDQ0YgLyog
RGV2aWNlSW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyMjhCMkE5QjBDMUU5RjkwRjY3RjAxRTIgLyogRGV2aWNlSW1wbC5jcHAgKi87IH07CisJ
CTU4RDM0MDY5MDE1RUI3QzU1NDQzMkVENCAvKiBBdHRyaWJ1dGVNYXAuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTYzOTYyQjlENTRFREU2RDI3NTY5
QTE5IC8qIEF0dHJpYnV0ZU1hcC5jcHAgKi87IH07CisJCTU5Qjk4NzMyM0NCMzgwMzU1MEE4RDgz
NyAvKiBFcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1REFGNTM3Mjg0NTg1MzRDRDAwODU5MjggLyogRXJyb3IuY3BwICovOyB9OworCQk1QTYw
NDQwMUI3Q0JGNTBERDYyNEU2ODUgLyogQ29tcGlsZXJHTC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNTE2MTdCMzEzNTYxQzY1QkM5QTBEMjEgLyog
Q29tcGlsZXJHTC5jcHAgKi87IH07CisJCTVBNkM0OUNCRkJGMTk2NTYxQjg2MUMzNSAvKiBSZXNv
dXJjZU1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODlFNjlCOTI5MEU5ODhGRjVBM0NBOTcyIC8qIFJlc291cmNlTWFuYWdlci5jcHAgKi87
IH07CisJCTVBRjlEOEI4NTUxMjA4MzZFOTFCMEVDNiAvKiBhbmdsZXR5cGVzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxRTJCRDAyQzY3MTY2NDVC
NkRCMjRDMiAvKiBhbmdsZXR5cGVzLmNwcCAqLzsgfTsKKwkJNUJENDBBMDhEQUFCNzE4QkQwOUJG
QjlBIC8qIEZpbmRTeW1ib2xOb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU0NkQ2Q0M2Q0U2QjFCMkExNzcyRkVCRSAvKiBGaW5kU3ltYm9sTm9k
ZS5jcHAgKi87IH07CisJCTVCRjQ3NDgxNUM1QjFDMzZCNEY1RUM3QSAvKiBmb3JtYXR1dGlscy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzRDhCODND
Q0ExMkRFODY3QUJFODI2QzUgLyogZm9ybWF0dXRpbHMuY3BwICovOyB9OworCQk1Q0RFMzM1QjdC
OTIyNzVCNDY5RjUzOUIgLyogSGFuZGxlQWxsb2NhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMjUyREY0MDRBOEY0MjgxRjUyNkUwRiAvKiBI
YW5kbGVBbGxvY2F0b3IuY3BwICovOyB9OworCQk1RDc4NkM1MUZDMTQ5NjJDNTUyRDQ4NTMgLyog
U2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQjQ3MDVFOEI0NjI5Mjg5RjRGOTdDNCAvKiBT
Y2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3MuY3BwICovOyB9OworCQk1RkE5NTg0QThD
REI3NUQzQ0MwRTRFODIgLyogdXRpbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzNkJEMzFDNDg4NzVFM0Y4OTQ0M0FBMkYgLyogdXRpbC5jcHAgKi87
IH07CisJCTVGREVCREMwMENBNjQyQkIwODY5Rjg5NiAvKiBUb2tlbml6ZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMERDQ0JERjREMUEzODk1NzBF
M0JFQ0EzIC8qIFRva2VuaXplci5jcHAgKi87IH07CisJCTYxOTZGRkVENThEOTI1Mzg3N0U0MjI5
MSAvKiBUZXh0dXJlSW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzN0FFRDNDOTEyQzhFRTg3MjJGMUYxNjcgLyogVGV4dHVyZUltcGwuY3BwICov
OyB9OworCQk2MjVDOTBBQTU1Qjc3RkRGNjA0RTFBOEEgLyogbGlidHJhbnNsYXRvci5hIGluIEZy
YW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjg2MzFFRjBGNzkw
NDBEQjYzRTg0NjQ3IC8qIGxpYnRyYW5zbGF0b3IuYSAqLzsgfTsKKwkJNjMxN0I3MDI1Rjk1NEQ3
MDU3MDYwNENBIC8qIFN5c3RlbUluZm8uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTdCNzVCMTI4MTgyQTMxQzdFRkU3RDcxIC8qIFN5c3RlbUluZm8u
Y3BwICovOyB9OworCQk2M0NENEE2NzFENDkwMkUxM0Y4MzkzMTggLyogZHJpdmVyX3V0aWxzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1RTNCRDY5
RkFERDU3Qzk3MzdDOTkxNiAvKiBkcml2ZXJfdXRpbHMuY3BwICovOyB9OworCQk2NjlENDg4MDFB
RDA0QzE2M0U5QjgzNzUgLyogQ29tcGlsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzMxNjRFNDJCOEQ4OEM1QjkxNDg5MkYxIC8qIENvbXBpbGVy
LmNwcCAqLzsgfTsKKwkJNjc0NkJBQ0E1MTE3QzRDRjgxOTYzOUU1IC8qIFNhbXBsZXJOVUxMLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDNFMDdDMjMz
RjUyMUUxMzE0RDYyQjk1QiAvKiBTYW1wbGVyTlVMTC5jcHAgKi87IH07CisJCTY5NzUxMjg1MDJF
MkRDMDVEQTVFNjVBQyAvKiBPcGVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2N0E2QjM5NDc0NzFEOTk4MjBCMjU2NTUgLyogT3BlcmF0b3Iu
Y3BwICovOyB9OworCQk2QkNFQjEzMEFBRURGNzYyNTNEMjM1QzcgLyogUmVuZGVyYnVmZmVyTlVM
TC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNjFE
OTgyQ0NCQkIzOTcwNjQ0MUE3RjggLyogUmVuZGVyYnVmZmVyTlVMTC5jcHAgKi87IH07CisJCTZE
NDE5Q0Y5OEI2RTYxRkM4OTBDOEQ5MSAvKiBGZW5jZVN5bmNHTC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMkU4RUFBQUQzQzFERTcyMTIzNTJBMUQg
LyogRmVuY2VTeW5jR0wuY3BwICovOyB9OworCQk2RTI2ODk3RjI1NUY0MUQyNjY3Q0I3NjUgLyog
U2hhZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcyNEYzOTIyREI0QzMwMjU2NDQ1MkE4OSAvKiBTaGFkZXIuY3BwICovOyB9OworCQk3MEM2RUQ5
NDhGQUEyQTZDN0U3N0IyMTEgLyogYW5nbGV1dGlscy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMEI5NTA1NjU2REI4M0M4RTBCQUNDNDkgLyogYW5n
bGV1dGlscy5jcHAgKi87IH07CisJCTcwRjRBRTEwN0U1REMxODQwQTExQkM2MyAvKiBTaGFkZXJO
VUxMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlE
NTkwREIxMzA0NDMwOTJCQUZBMDFFNSAvKiBTaGFkZXJOVUxMLmNwcCAqLzsgfTsKKwkJNzE1ODA0
QkJBMjk1RTI2MjIyMzAyQ0Y2IC8qIG1hdGh1dGlsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwOTU1ODE4QkVDQ0I2NzRGQUM0QjMxNyAvKiBtYXRo
dXRpbC5jcHAgKi87IH07CisJCTcyMjQ2NkVCRDBERTIwOUE5RkE2MkY3MyAvKiBlbnRyeV9wb2lu
dHNfZ2xlc18yXzBfZXh0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2MzA4NkZGN0E3MTEzNDk0OTg2QjJCRiAvKiBlbnRyeV9wb2ludHNfZ2xlc18y
XzBfZXh0LmNwcCAqLzsgfTsKKwkJNzM2NjM4RTAxRDM4OURCQjBEQUIzNjA4IC8qIFVzZUludGVy
ZmFjZUJsb2NrRmllbGRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBCQTU1QkUwNDhEODhEQTg5Njg3ODk4OCAvKiBVc2VJbnRlcmZhY2VCbG9ja0Zp
ZWxkcy5jcHAgKi87IH07CisJCTc0NDk0MEE5QTA0QkYxQUNBMDRFMUU5RiAvKiBDYWNoZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDMwNzc5MjlD
RDYzMTk0OTk2RTMxQ0UgLyogQ2FjaGUuY3BwICovOyB9OworCQk3NDY4NERFN0MyNTREMDI2N0Ew
QzNEQTcgLyogUHJ1bmVQdXJlTGl0ZXJhbFN0YXRlbWVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTM1NzlCNzIwNDVFRUFBMzk2RjU4MzY1IC8q
IFBydW5lUHVyZUxpdGVyYWxTdGF0ZW1lbnRzLmNwcCAqLzsgfTsKKwkJNzYzNkU1NkFFOERGMjZE
QTgzQUVDNUIzIC8qIE11cm11ckhhc2gzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBBRTQ5NzU4NkU0NDYwNjIwRDE2MjYyQyAvKiBNdXJtdXJIYXNo
My5jcHAgKi87IH07CisJCTc2OERCNUVCQTk5NEU5NDBGMEY2QjM4QSAvKiByZW5kZXJlcl91dGls
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3ODMw
OTVCOEI0MERGNzgzRUVCQjNBQTQgLyogcmVuZGVyZXJfdXRpbHMuY3BwICovOyB9OworCQk3Njk5
N0RDMTU5NDQ2OUY0NkEwMDRBQTQgLyogVmVydGV4QXJyYXlHTC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEN0JEQjQzMDVBQUJBMTEzQTk2MTE3QTcg
LyogVmVydGV4QXJyYXlHTC5jcHAgKi87IH07CisJCTc2Q0M2RjZGQkVGQkZCQ0FGNDUzODM5RSAv
KiBSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9yRmxvYXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhFRTY4NURDODcwMjAwNkYwQzc1RUM5IC8qIFJl
d3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5jcHAgKi87IH07CisJCTc3ODM2OTRBNjA5RDlE
RTE2RUY1QjRGRiAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvckdMU0wuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTBGQzNCMjBGNjM4MDFFN0NCRkZF
QTc1IC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yR0xTTC5jcHAgKi87IH07CisJCTc4QzI2RjAz
NDVFNEEyREJBRDkzODc4OCAvKiBDb250ZXh0R0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTFDRDY5NTZFNEFCQzA3ODVGNjlENzFBIC8qIENvbnRl
eHRHTC5jcHAgKi87IH07CisJCTc5NDk5QzExMjNBMTE0QjVENEI0RTJGRSAvKiBxdWVyeXV0aWxz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYyMDcw
QUNBNjk5MDY5ODM4MzFERjQ0QyAvKiBxdWVyeXV0aWxzLmNwcCAqLzsgfTsKKwkJNzlCOTYzRUFE
QkM3NTdGQjVDNTU0QzIwIC8qIFN1cmZhY2VHTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzg0OTQyOTU4OEYxQjEyRTc1NjFFMjYgLyogU3VyZmFj
ZUdMLmNwcCAqLzsgfTsKKwkJN0FCOTQ2OTg4N0Y0MTU1MkMzMTcxNjcxIC8qIEJsaXRHTC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEQzBGOTM5NjMz
MTU0NjhEQzZDNzUwNDMgLyogQmxpdEdMLmNwcCAqLzsgfTsKKwkJN0FCQTVGMUI1QkExQjQ0NTA0
OUE0RjRBIC8qIHF1ZXJ5Y29udmVyc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gM0NBMEZCRjA3NzBERDg5MDRGNzQ5QTY3IC8qIHF1ZXJ5Y29u
dmVyc2lvbnMuY3BwICovOyB9OworCQk3Q0VCOEZERjk0OTI1QTkwMjg5QzI3NDQgLyogU2hhZGVy
TGFuZy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2
OTVERTc4RUUyRDVCMzBGMjYyODBGODMgLyogU2hhZGVyTGFuZy5jcHAgKi87IH07CisJCTdENTBE
RTRBNjlBMzJDRUJCMDZCQTQ0OCAvKiBQYnVmZmVyU3VyZmFjZUNHTC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI3MUQ5MDIxNDBBNkEzMTAyN0VEOTg3
RiAvKiBQYnVmZmVyU3VyZmFjZUNHTC5tbSAqLzsgfTsKKwkJN0U1MUZFNDNBRThDRjVFRTY3RDk3
ODNGIC8qIFZlcnNpb25HTFNMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEFCMDQ3NEY3Q0M2MEUzNDdDRkNEQTdBMSAvKiBWZXJzaW9uR0xTTC5jcHAg
Ki87IH07CisJCTdFODQ4M0U1NDc3RkQxNjE3M0NGMDM5RiAvKiBWYWxpZGF0ZU11bHRpdmlld1dl
YkdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2
NDYzNUE1NkY3RjFERDJGODA5RDdCNSAvKiBWYWxpZGF0ZU11bHRpdmlld1dlYkdMLmNwcCAqLzsg
fTsKKwkJN0VFQzk5MEQ4RDU1QUM5MTA5N0EzRUQxIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjIzNjM3ODBG
MDRBM0ZEOTM0RkEzQzBFIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovOyB9OworCQk4MEY4MUU4
MDdEQjMwQjIwMDVGMTlBNjQgLyogQ29tcGlsZXJOVUxMLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE1MkIzRTBBQjUyNzU3MTAxODM3OTU3MCAvKiBD
b21waWxlck5VTEwuY3BwICovOyB9OworCQk4Mzk2NkRGMTY3REY3MUZGMDUzQTAzRjYgLyogU2Ft
cGxlckdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRDNzA1QzZBMDAwRTYxNTIyNkY1QzJDNiAvKiBTYW1wbGVyR0wuY3BwICovOyB9OworCQk4NDk3
RDJGODJFQURERDZGMzBGODMwMzQgLyogcmVuZGVyZXJnbF91dGlscy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxMjg5MTcwRjgzMDYxOEIxMkY1ODcz
QTkgLyogcmVuZGVyZXJnbF91dGlscy5jcHAgKi87IH07CisJCTg1NzBDQkVGRjNDNTJCRjRCRjEw
MEUxQSAvKiBsaWJBTkdMRS5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMTE3MTkyQ0ZFRURDOThFQzVGRERDOEE0IC8qIGxpYkFOR0xFLmEgKi87IH07
CisJCTg2MTU4NEYxRjM1REQ0NjI1RjVFMzJBRiAvKiBjb3B5X2NvbXBpbGVyX2RsbC5iYXQgaW4g
Q29weSB0byAkKFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS9hbmdsZSAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5QjlCRDgyMUQ3Qzg4MTA3RjA5REIyNzIgLyogY29weV9jb21w
aWxlcl9kbGwuYmF0ICovOyB9OworCQk4N0NGNDRCNUI3OTg1RUU0MTdBRTUzRTIgLyogQnVmZmVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNUNF
NUUwQTBEMDg1QThEQzE2NUIwQyAvKiBCdWZmZXIuY3BwICovOyB9OworCQk4OEU2NzhGMTZFRjQ2
RjZEQTg5RDU4RjggLyogbGliYW5nbGVfZ3B1X2luZm9fdXRpbC5hIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREJENzVBOUI3RDhFNUYzQUE4NkZERURE
IC8qIGxpYmFuZ2xlX2dwdV9pbmZvX3V0aWwuYSAqLzsgfTsKKwkJODlDN0Q0NkM3N0ZEMkRCMzBG
Nzk2NzY4IC8qIEluZm9TaW5rLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVCMkJDNzcyODEzM0I5Q0FDMjNEMDQ3RSAvKiBJbmZvU2luay5jcHAgKi87
IH07CisJCTg5Q0Y5RjQ1NjYzMjA3OTZGRUYzM0VBRSAvKiBJbnRlcm1Ob2RlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGOThFRDU5OTk0RDVBQzQ3
ODFEREUyNCAvKiBJbnRlcm1Ob2RlLmNwcCAqLzsgfTsKKwkJODlGQ0UyRjkzQ0E4NzYyMDRENzc3
NTU2IC8qIEFycmF5Qm91bmRzQ2xhbXBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNjEyMkYwNUNENDZDODIxRDI2M0VGRDcgLyogQXJyYXlCb3Vu
ZHNDbGFtcGVyLmNwcCAqLzsgfTsKKwkJOEE1QkU5NjQ0QTlBOENGMkYxQjUzMjc2IC8qIEluaXRp
YWxpemVEbGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRUFFOEM3MjQ1Q0RCNTA4ODM1OEUyRkU1IC8qIEluaXRpYWxpemVEbGwuY3BwICovOyB9Owor
CQk4QjVDQjcxMUEyQ0EyNDFEMjA5NzAzRTkgLyogSW5pdGlhbGl6ZVZhcmlhYmxlcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QTZGMEUxNTVEM0RE
RTQ1MTVDQUQ1NzggLyogSW5pdGlhbGl6ZVZhcmlhYmxlcy5jcHAgKi87IH07CisJCThDMUQ0NDIx
Nzg3NTZFN0M1ODJFN0Y1MiAvKiBTdXJmYWNlSW1wbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Qzk2Q0RBNThDQzg1OTZEQzUyMDdFQzggLyogU3Vy
ZmFjZUltcGwuY3BwICovOyB9OworCQk4QzQ0OTU1ODZENUVEQUVERTc2RUNCRkYgLyogbGliR0xF
U3YyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE2
NjUwNzg4NjA1MTBGRkU3OTU5QjRBRCAvKiBsaWJHTEVTdjIuY3BwICovOyB9OworCQk4RUZDQURB
REZGQTU1N0MxNEQwMjI4NDQgLyogVHJhbnNsYXRvckVTU0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzM3MEExREI0RTEyRkM3MEZDQkU3MEI2IC8q
IFRyYW5zbGF0b3JFU1NMLmNwcCAqLzsgfTsKKwkJOTIyMTlFRDA5NDAyMzc1NjU0RTU5QTM5IC8q
IGVudHJ5X3BvaW50c19nbGVzXzJfMC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwODM0MjBGNTQ4QUUzNzIwMUY1QTk0MUIgLyogZW50cnlfcG9pbnRz
X2dsZXNfMl8wLmNwcCAqLzsgfTsKKwkJOTI5QjAxRDI5OTZEMjBDRDQxRDBCNzQ2IC8qIE91dHB1
dEdMU0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RThGRjAzQUVFQjRBQkZDMEUyQ0QxNDc3IC8qIE91dHB1dEdMU0wuY3BwICovOyB9OworCQk5MkY4
M0YxMEM0MEJFMUYwODMzRTBBRjggLyogdmFsaWRhdGlvbkVTMy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjRFMTlFMTI2RjM1NzQ5MDNDMThDMjMg
LyogdmFsaWRhdGlvbkVTMy5jcHAgKi87IH07CisJCTk2MkI2MTdEM0YwRTUwQTlBRDY1RDhGOSAv
KiBDb250ZXh0U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNEM0RTIxRTkzOTgyREVDQjUwRDlBMjkwIC8qIENvbnRleHRTdGF0ZS5jcHAgKi87
IH07CisJCTk2MkYyNjI5NjQ3QTUyNzIwMjhGRkE0RSAvKiBpbWFnZWZvcm1hdHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlBMzA1OTA3OTRGNzk1
ODUyOUJCN0RGIC8qIGltYWdlZm9ybWF0cy5jcHAgKi87IH07CisJCTk3OTU2RkM3NDJCOEQxQjI3
OUQ4REM0QSAvKiBCcmVha1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxNTg4QTE3QjYzN0ZFQzlB
Njk1OUIwIC8qIEJyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5jcHAgKi87IH07CisJ
CTk4MEYwOTBDNTc5RTYxOTJDODdBQzM4OSAvKiBlbnRyeV9wb2ludHNfZWdsLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVFNTRCRjUxMUUyQTVCRUQ5
RDc4OTMxOSAvKiBlbnRyeV9wb2ludHNfZWdsLmNwcCAqLzsgfTsKKwkJOThBNzBFRUY1MTRDQ0I4
MTM1QkIzNzMwIC8qIEZvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERENDk4QzNCQzUzRDhEQzYyQkM5NEU3QyAvKiBG
b3JtYXRfdGFibGVfYXV0b2dlbi5jcHAgKi87IH07CisJCTk5MzI2NjlGMDZFNTg2MzU2QjZGNTk3
NyAvKiBEaXNwbGF5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ4QTZGNDg2OURGMUQxNjcxRkJFMzZGMyAvKiBEaXNwbGF5LmNwcCAqLzsgfTsKKwkJ
OUE3RjIwNEI5NjYzNUUxQkQxNDlEQUUyIC8qIEV4dGVuc2lvbkdMU0wuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDVEREI5QUU3N0Q3M0E0MjUxOEVE
NzA1IC8qIEV4dGVuc2lvbkdMU0wuY3BwICovOyB9OworCQk5QjBDNjExMUNCMjk5RDM1RTU4RDdE
NTggLyogVG9rZW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gREQ0QjA1OUNGQzY3OURCQUQyQ0Q2NDgxIC8qIFRva2VuLmNwcCAqLzsgfTsKKwkJOUJC
RTEyQjFGMzlDRkYyQzQ1QTU3RDhGIC8qIGVudHJ5X3BvaW50c19nbGVzXzJfMC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODM0MjBGNTQ4QUUzNzIw
MUY1QTk0MUIgLyogZW50cnlfcG9pbnRzX2dsZXNfMl8wLmNwcCAqLzsgfTsKKwkJQTEyNkE3NjI1
QURFQzkxNThDMDg4QzI3IC8qIEZsYWdTdGQxNDBTdHJ1Y3RzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgwOURBOUY4QkM5MTA2RDUwNzNCMjQyNyAv
KiBGbGFnU3RkMTQwU3RydWN0cy5jcHAgKi87IH07CisJCUEyMTEzRUNGNUIxRTVGNTE4OUJEMEU0
MCAvKiBGcmFtZWJ1ZmZlckdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IERGNkI4NzUzNkMzODBERjE5MUZCMkYzOCAvKiBGcmFtZWJ1ZmZlckdMLmNw
cCAqLzsgfTsKKwkJQTI1NzlCRjM2Q0NCQzc5NUFFNEYzQzYzIC8qIFBvb2xBbGxvYy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFODQ3OTIwMzdGNEE2
MTVENjYyM0NDM0IgLyogUG9vbEFsbG9jLmNwcCAqLzsgfTsKKwkJQTVDRjYyODFBMTAyMEI1RTIz
MEY3MkQ3IC8qIFRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1NUVGRjlFNkVDNzYwMzJDNjRDRkQwMEMgLyogVGhyZWFkLmNwcCAqLzsgfTsK
KwkJQTZERURGNzY4NzYwNkUwODcyQkRBMTczIC8qIFVuaWZvcm0uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDA1OTFDMzM2ODFEQTVBQkE0RjFGQkVD
IC8qIFVuaWZvcm0uY3BwICovOyB9OworCQlBOEFFOTM4Qjk1MEVERENCRTE0NTM2MEMgLyogU2Ft
cGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
RDBFOTU2NEVGRDAwNTRFRTEzRTQxNEMgLyogU2FtcGxlci5jcHAgKi87IH07CisJCUFCRDYzQkYx
MkQxNDUzQ0NBQjYxNEI2QyAvKiBFeHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUE0NTA0OEVGNzE3MTE1
QTZDQjZFNTBDIC8qIEV4cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucy5jcHAgKi87IH07CisJCUFF
MDkwMjY0ODZBRjY4RTgxRTRGOEM2MCAvKiBnbHNsYW5nX3RhYi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RThENjNBNjY5NjA0RjRBNjc1NkM2OTkg
LyogZ2xzbGFuZ190YWIuY3BwICovOyB9OworCQlBRTEzNjI1OTU5RTQzMDI3MjI1NTQwMjAgLyog
RGlhZ25vc3RpY3NCYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg5QUQ5NUVCNkI3MTc5MjVENjQxQzRBRSAvKiBEaWFnbm9zdGljc0Jhc2UuY3Bw
ICovOyB9OworCQlBRTM1RkQzQUMyNzExMzA1RDJGQzk2NzQgLyogZm9ybWF0dXRpbHNnbC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2QTVCQ0NDMUVG
QTFDOUEzMUE2QzQwMTYgLyogZm9ybWF0dXRpbHNnbC5jcHAgKi87IH07CisJCUIxNkYzQkVGQzBG
RDAyNDEzOTQ4MjBFMiAvKiBpbnRlcm1PdXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDY0NTE3QUZDOTQyQzU0QkIwMzhBOUI1IC8qIGludGVybU91
dC5jcHAgKi87IH07CisJCUIxODFDNDQyQTMyNzYxNEQxQzg0NEYxQiAvKiBlbnRyeV9wb2ludHNf
ZWdsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVF
NTRCRjUxMUUyQTVCRUQ5RDc4OTMxOSAvKiBlbnRyeV9wb2ludHNfZWdsLmNwcCAqLzsgfTsKKwkJ
QjFBRTkzQzU1QjMxNDk2NTlCN0RFOThCIC8qIGxpYnByZXByb2Nlc3Nvci5hIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EzNTE2Qzg4REE2RjE4QThE
NzM3RTBCIC8qIGxpYnByZXByb2Nlc3Nvci5hICovOyB9OworCQlCMzMyOUExRkNDRDE1OUQ4NDdG
Q0ZBNzcgLyogSU9TdXJmYWNlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MUIyREUwMDMyQTI5RTQ3MzMzRDAxMCAvKiBJT1N1cmZh
Y2UuZnJhbWV3b3JrICovOyB9OworCQlCM0Q5NTc4OTBCQzU2RUNDRUEyNjhCQUMgLyogVHlwZXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjMwNTFE
RTAwQTM0MUQzMjRGQTE3MTQ0IC8qIFR5cGVzLmNwcCAqLzsgfTsKKwkJQjYwOUU0MDFENEE4MjAy
ODdBNkU4QkYxIC8qIERpc3BsYXlDR0wubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBFNkRFRjAxQThCNTFCRDYwQkFBNjY2NTggLyogRGlzcGxheUNHTC5t
bSAqLzsgfTsKKwkJQjdCMkQzMTY1MUQyMkUzQTM5QTUyQzBGIC8qIFJlbW92ZUludmFyaWFudERl
Y2xhcmF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDIyM0RCNUMwQTJDQ0Q0QjYyRUUyNjg5RCAvKiBSZW1vdmVJbnZhcmlhbnREZWNsYXJhdGlv
bi5jcHAgKi87IH07CisJCUI5RjBCRDU4MUZEQUFEMjRDRjlBQzdDQiAvKiBmb3JtYXRfbWFwX2F1
dG9nZW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Mzg5NEZCOEEyMjA4NUU5RjA0QzZGMTEyIC8qIGZvcm1hdF9tYXBfYXV0b2dlbi5jcHAgKi87IH07
CisJCUJBMDU2MENBRkQ4OEE4MjY0RkE4REMwOCAvKiBSZW1vdmVQb3cuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUI2RTEzMzgzMDQ2NDc0MjE4QkQx
ODk0IC8qIFJlbW92ZVBvdy5jcHAgKi87IH07CisJCUJBMTgyRDMzQTc3M0UzMTA5MDBCQTU1MCAv
KiBGZW5jZU5WTlVMTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNDA1QTlBRTE5MEFGNjQwRERCRUU1RjQgLyogRmVuY2VOVk5VTEwuY3BwICovOyB9
OworCQlCQTc1NUVBODU1MDZCQjMxNjAzM0ZBQUYgLyogRmVuY2UuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUNCREVDRTc0QzNDNDhDMDJCNjZEQjY4
IC8qIEZlbmNlLmNwcCAqLzsgfTsKKwkJQkFDMDQ4OTkzODc1RDU3MUM3NkVFMkU2IC8qIFNoYWRl
ckdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFE
MkZCMTJEQjYxNDQzRjY1NDg4QTAwMSAvKiBTaGFkZXJHTC5jcHAgKi87IH07CisJCUJCOEY4QkY5
OEI4RTc3Qzk0NUQwQjA0RCAvKiBWYWxpZGF0ZUxpbWl0YXRpb25zLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVDNTZDMTE3NjlDOTUwMzZFNEVENDcz
QiAvKiBWYWxpZGF0ZUxpbWl0YXRpb25zLmNwcCAqLzsgfTsKKwkJQkJGNDkxNUI0NTVDRkNCN0JF
QjI4MkMxIC8qIEJ1ZmZlckdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDOUIwMkQ5MEJFMTA5OUY3MzdDNDcwQSAvKiBCdWZmZXJHTC5jcHAgKi87
IH07CisJCUJDNEExRDk0QTkzMDg1N0QwQTU3ODU2MyAvKiBDb2RlR2VuLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCMTRGNkY1RDlDQjVBQkE0NjM4
OTMzQSAvKiBDb2RlR2VuLmNwcCAqLzsgfTsKKwkJQkNGMTREN0U2ODkwM0RBMEIzNTdDM0FBIC8q
IGNvbW1pdF9pZC5weSBpbiBDb3B5IHRvICQoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL2FuZ2xl
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0RjdCMzBFQzFCRkFBQzYzREM0
MzhBRCAvKiBjb21taXRfaWQucHkgKi87IH07CisJCUJEOENCQ0FDREY4RjRBMTlCMDIxMDU5QiAv
KiBJbWFnZUluZGV4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZGMDg3NDEwOTlCMkU1NUJFNEM5QkRCRSAvKiBJbWFnZUluZGV4LmNwcCAqLzsgfTsK
KwkJQzE5NDQyMTI5NTA3QjBGOURBM0UzREQ1IC8qIEJ1ZmZlck5VTEwuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODgzMDdDQjJGREM1QkQ2NjhBQTFG
MzhEIC8qIEJ1ZmZlck5VTEwuY3BwICovOyB9OworCQlDMkZDNEIwQjMxMTI3QkJBQTdFMTVERkUg
LyogVmFyaWFibGVJbmZvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkxMTIzOTI3MzMxOEMzNkE2QkRDQUFDMiAvKiBWYXJpYWJsZUluZm8uY3BwICov
OyB9OworCQlDNDEzRUQxQzdCQ0E5NTU3ODI0NTI3NDMgLyogSW50ZXJtZWRpYXRlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIzODE1NzdGNzlEQzgz
Nzc5NzFCQzM5MCAvKiBJbnRlcm1lZGlhdGUuY3BwICovOyB9OworCQlDNEM5NUFGNjZFNzEzMzEy
RTlENkRGOUYgLyogVHJhbnNsYXRvckdMU0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTgyMzlGQTBFQUVEMTc5NkYzRjRGRkZFIC8qIFRyYW5zbGF0
b3JHTFNMLmNwcCAqLzsgfTsKKwkJQzY5ODc0RkQzNTZENjVCMkQ1OEI4QjUyIC8qIEZsb2F0MTZU
b0Zsb2F0MzIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODk2NjQyRTRGNzNEQzVDNkNEMTdBOTQ2IC8qIEZsb2F0MTZUb0Zsb2F0MzIuY3BwICovOyB9
OworCQlDNzA4MTI5NDI4MDgzREI5MTZERDdDMzEgLyogUHJvZ3JhbU5VTEwuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjc5MDlGNkU5MUM2M0FFMDEy
OEU5MDcyIC8qIFByb2dyYW1OVUxMLmNwcCAqLzsgfTsKKwkJQzdFQTY4OEI2MjYxN0Q0OTY2NERE
NDc4IC8qIGxpYmFuZ2xlX2ltYWdlX3V0aWwuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMzFGOTk3MUNFQzc3QkFDNjMzREY2OCAvKiBsaWJhbmds
ZV9pbWFnZV91dGlsLmEgKi87IH07CisJCUM4MjIwNzE2MTNGMDg4RTEwNkNFRUMwRCAvKiBQcmVw
cm9jZXNzb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMjM1MEQ0MkU3MjU2OEY4NkE0NjFFNDlCIC8qIFByZXByb2Nlc3Nvci5jcHAgKi87IH07CisJ
CUM5NjU5QjFFM0Y4NkUyOEM1ODJFQjQwNyAvKiBSZXdyaXRlRG9XaGlsZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMDg0NUNERTY0NDUyRDVCN0I3
MjE5NzcgLyogUmV3cml0ZURvV2hpbGUuY3BwICovOyB9OworCQlDOTdBQTFEMDc4QUZEOUMwRTE3
NDgzMkYgLyogdGxzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDZDRDg0OTlDN0NBRUNENzE3NzM4QkEwQyAvKiB0bHMuY3BwICovOyB9OworCQlDQUEz
OTkzMTUyQzNBQzg0ODdGMjk3OTUgLyogbGliRUdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZEMzEyNkZGOTNBNDIwNEYzRUFGQTk5NSAvKiBsaWJF
R0wuY3BwICovOyB9OworCQlDQUU4ODAzMkQwRDgzNTNCRDk1RkIxMjcgLyogQ29yZUZvdW5kYXRp
b24uZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDMzMjRDQjVBNEM5OUVGMUM4MzBCNTFFIC8qIENvcmVGb3VuZGF0aW9uLmZyYW1ld29y
ayAqLzsgfTsKKwkJQ0MyM0Q4RjM4Q0E1NzVDMzkwMkZBNkNBIC8qIExleGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU4NzNFQThCRUE4QzNCNDY0
QUY4QjRDMSAvKiBMZXhlci5jcHAgKi87IH07CisJCUNFM0YyNTlGRDQ3N0Y0QTQ4MzIxNkI0RSAv
KiBEZWZlckdsb2JhbEluaXRpYWxpemVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxRkUxMzU2REExNkNCM0M1OTg1RkM4QTMgLyogRGVmZXJHbG9i
YWxJbml0aWFsaXplcnMuY3BwICovOyB9OworCQlDRTg0M0QyMDlBMjJEMzU3ODU5QjQ3NzUgLyog
ZW50cnlfcG9pbnRzX2dsZXNfMl8wX2V4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjMwODZGRjdBNzExMzQ5NDk4NkIyQkYgLyogZW50cnlfcG9p
bnRzX2dsZXNfMl8wX2V4dC5jcHAgKi87IH07CisJCUQwOTc4MUU2N0FFRUJGNjIwNjZDNzU4NiAv
KiBWYWxpZGF0ZVN3aXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzREUzMTA1OTlGRTBENTk0QzI3NEQyRTEgLyogVmFsaWRhdGVTd2l0Y2guY3Bw
ICovOyB9OworCQlEMTFERUZFQjQ2RkUzMDUwMzgyRDM4MDUgLyogZW50cnlfcG9pbnRzX2VnbF9l
eHQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjc0
MEZDMDlCMEYxQ0E5OUI5NTJCMDMyIC8qIGVudHJ5X3BvaW50c19lZ2xfZXh0LmNwcCAqLzsgfTsK
KwkJRDE2OTNBMTc1NEFEODZBMDVCNzZGQTVFIC8qIFBydW5lRW1wdHlEZWNsYXJhdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkNCMUFCMzUy
NERBOEJCOENGMjcxRTY4IC8qIFBydW5lRW1wdHlEZWNsYXJhdGlvbnMuY3BwICovOyB9OworCQlE
MThFRTkzRjlDOTc1RkVBMDdCQjkwNUYgLyogTG9nZ2luZ0Fubm90YXRvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUY0MzdCODE3ODM3RjFBRUEy
MjRFMDAgLyogTG9nZ2luZ0Fubm90YXRvci5jcHAgKi87IH07CisJCUQxQThEMzkyNjhBQzQxNTND
MzA0RjY4RCAvKiBDb25zdGFudFVuaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDZFQjI2NTQzMTgyQzUwM0EzNkNFNzBENyAvKiBDb25zdGFudFVu
aW9uLmNwcCAqLzsgfTsKKwkJRDFDRkRCMkI4QzYwODAzRUE1QjVDQUI4IC8qIENvbnRleHQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjZFRDY2Q0Mw
Mzc0QzkzRDI1QTdBOUM2IC8qIENvbnRleHQuY3BwICovOyB9OworCQlEMUUwOEY3RkFEOURCRDdF
QTJFQjZBQzAgLyogUHJvZ3JhbUdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDI0QzIwNTJCOUMwRUQyMkNBMTY1OTUyMCAvKiBQcm9ncmFtR0wuY3Bw
ICovOyB9OworCQlEM0YzRDE2MDJCMEVDMDBCMDQ4QTcwNjUgLyogU2VhcmNoU3ltYm9sLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRFNzQ0QzM1MTI3
QjgxREE1MTZFQ0M1OSAvKiBTZWFyY2hTeW1ib2wuY3BwICovOyB9OworCQlENEFBOTMwOTUxMUFB
QzMxRUQwM0U1OTcgLyogQ29jb2EuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1N0YzN0JGRkY4NzhBQUZDQTNBODMyIC8qIENvY29h
LmZyYW1ld29yayAqLzsgfTsKKwkJRDUxMTEyMkY0QjJCNDIzMDU2OTI2NjVEIC8qIFZhbGlkYXRl
R2xvYmFsSW5pdGlhbGl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRDU1REYyQjYxQTNCODYxNDc2QTQ2NURFIC8qIFZhbGlkYXRlR2xvYmFsSW5p
dGlhbGl6ZXIuY3BwICovOyB9OworCQlENzkwRDgzMERGQUJFMEM4QkVBRTMxMkEgLyogUGF0aE5V
TEwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjgw
OUI2N0EwQTg0QzQ3RDYwNzU3RjlFIC8qIFBhdGhOVUxMLmNwcCAqLzsgfTsKKwkJRDc5RUM0MjI4
RjlFODA4MTI3QzhGMTI0IC8qIFF1YWxpZmllclR5cGVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxM0E5RjhGQjFEQTkxMDdFQkMzRTIwNiAvKiBR
dWFsaWZpZXJUeXBlcy5jcHAgKi87IH07CisJCUQ5QURCNDZBN0MzOUFDMDkzNDkwMDg5QSAvKiBU
ZXh0dXJlTlVMTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1M0FBNzc3MkUwREE3MDlDMjY1Njg5QUQgLyogVGV4dHVyZU5VTEwuY3BwICovOyB9Owor
CQlEOUY5NzJCQUJBODM4RjFBODJEN0Y1OUUgLyogTWFjcm9FeHBhbmRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyN0YxNTA1QThENjJFN0Q0ODg4
MjNERjcgLyogTWFjcm9FeHBhbmRlci5jcHAgKi87IH07CisJCURBQjcwOUUxQUJGRjU1RjdFMjQ3
NjlCNCAvKiBTaGFkZXJWYXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEYzRjY5QjA5MzQzODZDQUFFMzIwODFEOCAvKiBTaGFkZXJWYXJzLmNwcCAq
LzsgfTsKKwkJRENFN0Y3NDNBMDQ1RTI5RUM0QjhFQjVCIC8qIERlYnVnLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRCMUFFNkQ0QkY0MEY0RTE0OUU5
QzE1OCAvKiBEZWJ1Zy5jcHAgKi87IH07CisJCURGRjM3NEM3RUI2NzNDMkZENTE5NDQzOSAvKiBn
bG9iYWxfc3RhdGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkM5MzFDNUY0RkFBQUQzRjJCQTk1NzdGIC8qIGdsb2JhbF9zdGF0ZS5jcHAgKi87IH07
CisJCUUwOUM0Q0VBRjRFQkQxOEM3QjI5MzAwNiAvKiBlbnRyeV9wb2ludHNfZ2xlc18zXzAuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjRCNjkyRjM2
NUEwQkRDODUxNUVFRTYzIC8qIGVudHJ5X3BvaW50c19nbGVzXzNfMC5jcHAgKi87IH07CisJCUUy
MzEyODM0MjI0Q0E1ODhGRkM2M0MwRiAvKiBEZXZpY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjJFQ0RDMDA5NDI5Q0M5Q0U3RkZBRjJGIC8qIERl
dmljZS5jcHAgKi87IH07CisJCUUzQUYxNzAwMTE3NDZDNUJFMDhGQ0I1MSAvKiBDb250ZXh0TlVM
TC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1ODBD
REM5RjE2QUVBQkI2M0U4NjIxMDAgLyogQ29udGV4dE5VTEwuY3BwICovOyB9OworCQlFNDk1RTJB
QjE4MTk0RkM1MzA4ODM1MzIgLyogc3lzdGVtX3V0aWxzX21hYy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNjMzNkJEQzlBMDVGQzZBMDI3MTcxQjUg
Lyogc3lzdGVtX3V0aWxzX21hYy5jcHAgKi87IH07CisJCUU1MDZBRDBGQkQ0QzUxMkIwRUU4QzAz
QyAvKiBGdW5jdGlvbnNHTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RjkwOEUxNDIwQjYxRjNGMjBCQjYzMzcgLyogRnVuY3Rpb25zR0wuY3BwICov
OyB9OworCQlFNTMzNDlDMTZFRTBBRTg0MEMzOEM2QkMgLyogTWFjcm8uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTgzQkE1RDE4NjQ0MEI3RDQ5MUE4
RTU4IC8qIE1hY3JvLmNwcCAqLzsgfTsKKwkJRTYxODRFOEM4OENDNzA3RUY0QTVDMTEwIC8qIGxv
YWRpbWFnZV9ldGMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDU3OEM4QkM1ODdBNjFEQzVFNTNCQzM1IC8qIGxvYWRpbWFnZV9ldGMuY3BwICovOyB9
OworCQlFNkNFN0E5MDk0RDlBRjlDOTc1RTYwQjcgLyogdmFsaWRhdGlvbkVTLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkwMzg4QTc2QkQ0MkUxNTVC
MTRDMjIyMiAvKiB2YWxpZGF0aW9uRVMuY3BwICovOyB9OworCQlFNkUwMDg3Qzg5QjdEMzA2NDQ3
RDcyQTggLyogRGlhZ25vc3RpY3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRUJERDdFRDZEQUVEN0I3MkQzRjk3MzE4IC8qIERpYWdub3N0aWNzLmNw
cCAqLzsgfTsKKwkJRTgzQjc1MDY2RDMyNEYzQjlGMUZBOEZFIC8qIEFkZEFuZFRydWVUb0xvb3BD
b25kaXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQ0RDNjlBRjNGOUM1ODI2NzIzQ0U4MkY3IC8qIEFkZEFuZFRydWVUb0xvb3BDb25kaXRpb24u
Y3BwICovOyB9OworCQlFQ0REQzA2MTkzNDEzMDQ5QjA0MDNCMjEgLyogUmVuZGVyZXJHTC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjdCQzM4N0E0
ODBDRkU3OTdBRUY2NUEgLyogUmVuZGVyZXJHTC5jcHAgKi87IH07CisJCUVENzI5Nzc2MkY5QTQz
MUNFRjIxRTU2OCAvKiBPdXRwdXRFU1NMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3NTA1ODhDRDM4NkUzMzVEQUVDMkU3MyAvKiBPdXRwdXRFU1NM
LmNwcCAqLzsgfTsKKwkJRUUwNEUzMDAzNEQyMjA2RTI3QkVDNDU0IC8qIFJlbmRlcmJ1ZmZlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNkVFNUNE
NUExRjIzMEI3MUE3RTFBNTEgLyogUmVuZGVyYnVmZmVyLmNwcCAqLzsgfTsKKwkJRUVGODNBREZC
MzRCNTI5MUVCRUVGOEJBIC8qIFN0YXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEOTYzNUNDN0RDQzU2OTlCQjE4ODRGRCAvKiBTdGF0ZS5jcHAg
Ki87IH07CisJCUYwNEZEMTA2QkE3RkNFNTc1M0E2QkQ2MiAvKiBDb21waWxlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTk2NUY1MkIxNEExNDkz
OTQ0RUY0QzMgLyogQ29tcGlsZXIuY3BwICovOyB9OworCQlGMUZCNkUyOTlEMTMxNkJBMkMyMjBG
NDEgLyogRmVuY2VTeW5jTlVMTC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMzJCODgyRTcwREJBRDI1MkMwMkVGMjYgLyogRmVuY2VTeW5jTlVMTC5j
cHAgKi87IH07CisJCUYzNzY2REI5NTBFRDUyNUE5QTMyNThCNyAvKiBjb3B5aW1hZ2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUJCMEUxQzFFQURD
RTFGOTQzODM1OEEzIC8qIGNvcHlpbWFnZS5jcHAgKi87IH07CisJCUY0MEQyOTRFRUEzRUFDNzc0
MEIxMUY0MyAvKiBGZW5jZU5WR0wuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUQwQTc4OTQ3NkI5QzZCNzQwMzgwNEExIC8qIEZlbmNlTlZHTC5jcHAg
Ki87IH07CisJCUY1MDYwQjZGRUE4OTE3MDAwQ0I5RjUwRCAvKiBTdXJmYWNlTlVMTC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MDAwNzY0NzIzMUQw
QkU4NThDMzhDODAgLyogU3VyZmFjZU5VTEwuY3BwICovOyB9OworCQlGNTE0MEM1RUU5NUYzQUIy
OEEzNTVGMUIgLyogUXVlcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTU1MUYwRTM4MUVERDQ2NDg0OTk0OUJGIC8qIFF1ZXJ5LmNwcCAqLzsgfTsK
KwkJRjU3Njk4NTc3RjQzOTZGMDBFQTVDMEExIC8qIHZhbGlkYXRpb25FR0wuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gM0Y0NDA1NTg0RjY2OUJBQTJF
MkIxODE5IC8qIHZhbGlkYXRpb25FR0wuY3BwICovOyB9OworCQlGNUExRDI2RDJEQjRCREY3NjJF
MjBENjcgLyogRGlyZWN0aXZlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDAyM0VGNUU0QjEwQzM4NjBEOTU1NkE3OCAvKiBEaXJlY3RpdmVQ
YXJzZXIuY3BwICovOyB9OworCQlGNjU0NTVBMEQ0OTBFQkJGMDk4QzAyQzUgLyogSW50ZXJtVHJh
dmVyc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OUI3MjA2OUJGNUEzMTA4Mzc5OTBGNTU2IC8qIEludGVybVRyYXZlcnNlLmNwcCAqLzsgfTsKKwkJ
RjZDOTJENzRGMTVBRThGMDAwODNEQkZDIC8qIFZhbGlkYXRlTWF4UGFyYW1ldGVycy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNjZGOUZFQjA0NDFF
REYzMzE2NEYwMDggLyogVmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmNwcCAqLzsgfTsKKwkJRjdBOTE3
NTQ3MDU5MEExNTA5RUMxNzJFIC8qIEZyYW1lYnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJGRjQzQzI2N0Y0MkU0REZFMjcyODdENCAvKiBG
cmFtZWJ1ZmZlci5jcHAgKi87IH07CisJCUY3QjZGRUM2NjgwNzZCN0ZCQkY4REUyOCAvKiBWZXJ0
ZXhBdHRyaWJ1dGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDExRDE0OTMzNTg4ODc0NjI2MzQyREVEIC8qIFZlcnRleEF0dHJpYnV0ZS5jcHAgKi87
IH07CisJCUY3RUEyODEzODg1RkY4OEFDQTk5Mjg1RiAvKiBWYXJpYWJsZVBhY2tlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MkUwRTcwOTc3RkM3
NDUwMEI3MjZEMDUgLyogVmFyaWFibGVQYWNrZXIuY3BwICovOyB9OworCQlGOTY5REQ3NTZBNkZE
RkU0ODQ0NjQzMkIgLyogZGVidWcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkM2RTcwNEYzMkQ0ODhENUExOTU5RTJFIC8qIGRlYnVnLmNwcCAqLzsg
fTsKKwkJRkI2MjU4Q0Q2QjNFOTg0MTk5RTJCNTAyIC8qIFBhcnNlQ29udGV4dC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MEFGNEY3NUFGNzZCODA0
M0EyOUU0MkYgLyogUGFyc2VDb250ZXh0LmNwcCAqLzsgfTsKKwkJRkU3NjY4MTA3MjhCQzU4NzI5
NkRGQzQzIC8qIENvbnRleHRJbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDA5MzJCNzg4QkVDNTFERjZDQTZFM0JENSAvKiBDb250ZXh0SW1wbC5j
cHAgKi87IH07CisJCUZGOEY2M0Q5QUY3MzFBNjY2RDI4RkZEMSAvKiBsaWJFR0wuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkQzMTI2RkY5M0E0MjA0
RjNFQUZBOTk1IC8qIGxpYkVHTC5jcHAgKi87IH07CisvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rp
b24gKi8KKworLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KKwkJMEND
MTA1QzM0QTUyRDQ1NjAwNDU4RUZBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJ
CWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDk2ODYw
MDhBQjBCQTI4RkMyMzk1RDlGMCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9
IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDgwNTUxQ0Q3RUIyNDBGMDlGNzU1REFDMDsK
KwkJCXJlbW90ZUluZm8gPSBjb21taXRfaWQ7CisJCX07CisJCTBFMTA2NDlDMjkwRkVBN0RGQjQ3
QzcyOCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWlu
ZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSA5Njg2MDA4QUIwQkEyOEZDMjM5NUQ5
RjAgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xv
YmFsSURTdHJpbmcgPSAyN0I0MzZDN0NFRjkzNzg4OTQ2NDExREU7CisJCQlyZW1vdGVJbmZvID0g
bGliRUdMX3N0YXRpYzsKKwkJfTsKKwkJMEVEQkQ5MkVDNkE2QTFEM0QxODlCNDU2IC8qIFBCWENv
bnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsK
KwkJCWNvbnRhaW5lclBvcnRhbCA9IDk2ODYwMDhBQjBCQTI4RkMyMzk1RDlGMCAvKiBQcm9qZWN0
IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9
IDZEN0U2MzMyOEY4NzM4NEZGMzkzQUEwQjsKKwkJCXJlbW90ZUluZm8gPSBsaWJBTkdMRTsKKwkJ
fTsKKwkJMTE3RUJBM0NFNDkzRDdDNzdDN0YyMjdBIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRh
bCA9IDk2ODYwMDhBQjBCQTI4RkMyMzk1RDlGMCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXBy
b3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDgwOTVGRjY1NDMwRjM2NjZE
NjU4N0Y3RjsKKwkJCXJlbW90ZUluZm8gPSBsaWJBTkdMRV9yZW5kZXJlcl9jb25maWc7CisJCX07
CisJCTI2ODg2Q0NENDVCRDMyRUI2MDQzMjZBQSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8g
PSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwg
PSA5Njg2MDA4QUIwQkEyOEZDMjM5NUQ5RjAgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94
eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAxN0Y4M0U5NjQ5OEI1MDBCNzdE
MzcxMTg7CisJCQlyZW1vdGVJbmZvID0gYW5nbGVfaW1hZ2VfdXRpbDsKKwkJfTsKKwkJM0I3NTQ0
RUNDNTlBNzg1MTNDQzRGNDM5IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlz
YSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDk2ODYwMDhB
QjBCQTI4RkMyMzk1RDlGMCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7
CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDc5MkFCRjQ4ODRBOEZEQUU4MTY5MERERTsKKwkJ
CXJlbW90ZUluZm8gPSBhbmdsZV9jb21tb247CisJCX07CisJCTQ3RTFFRjNFRENFMERERTM0OTk1
MTg3QiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWlu
ZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSA5Njg2MDA4QUIwQkEyOEZDMjM5NUQ5
RjAgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xv
YmFsSURTdHJpbmcgPSA4MDU1MUNEN0VCMjQwRjA5Rjc1NURBQzA7CisJCQlyZW1vdGVJbmZvID0g
Y29tbWl0X2lkOworCQl9OworCQk2OTJGNTIyOTU3RTRGMDIyNDE2RjAyNkIgLyogUEJYQ29udGFp
bmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJ
Y29udGFpbmVyUG9ydGFsID0gOTY4NjAwOEFCMEJBMjhGQzIzOTVEOUYwIC8qIFByb2plY3Qgb2Jq
ZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNTVF
NzAxRDQ4RDZGNzVGREUwRkI1Qjg5OworCQkJcmVtb3RlSW5mbyA9IGNvcHlfc2NyaXB0czsKKwkJ
fTsKKwkJNzUxQzlDRUY4NDA2RkZEMjY5REQyNTVCIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRh
bCA9IDk2ODYwMDhBQjBCQTI4RkMyMzk1RDlGMCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXBy
b3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDgwNTUxQ0Q3RUIyNDBGMDlG
NzU1REFDMDsKKwkJCXJlbW90ZUluZm8gPSBjb21taXRfaWQ7CisJCX07CisJCTc1NUEyOUYxQjIx
M0RBQTExMzc3Mzc5NyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQ
QlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSA5Njg2MDA4QUIwQkEy
OEZDMjM5NUQ5RjAgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJ
cmVtb3RlR2xvYmFsSURTdHJpbmcgPSAxRjg4Q0RFQjQ0RTdDNzFDMjgyRkE5NzU7CisJCQlyZW1v
dGVJbmZvID0gdHJhbnNsYXRvcjsKKwkJfTsKKwkJN0EzMUM4MDE0RUIxOEUxOTJBRUUwMUEwIC8q
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Q
cm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDk2ODYwMDhBQjBCQTI4RkMyMzk1RDlGMCAvKiBQ
cm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0
cmluZyA9IDU1RTcwMUQ0OEQ2Rjc1RkRFMEZCNUI4OTsKKwkJCXJlbW90ZUluZm8gPSBjb3B5X3Nj
cmlwdHM7CisJCX07CisJCTdBNEFCODgxMjdEOEMxRjkwQkVBREY2RSAvKiBQQlhDb250YWluZXJJ
dGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250
YWluZXJQb3J0YWwgPSA5Njg2MDA4QUIwQkEyOEZDMjM5NUQ5RjAgLyogUHJvamVjdCBvYmplY3Qg
Ki87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA4MDk1RkY2
NTQzMEYzNjY2RDY1ODdGN0Y7CisJCQlyZW1vdGVJbmZvID0gbGliQU5HTEVfcmVuZGVyZXJfY29u
ZmlnOworCQl9OworCQk4NDM3QkE3ODhDMEU5MjI4NzY1NTZDQzIgLyogUEJYQ29udGFpbmVySXRl
bVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFp
bmVyUG9ydGFsID0gOTY4NjAwOEFCMEJBMjhGQzIzOTVEOUYwIC8qIFByb2plY3Qgb2JqZWN0ICov
OworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gQzcwMTI4NDVD
NUZFMzlBQjA4NEEzMkQ4OworCQkJcmVtb3RlSW5mbyA9IGFuZ2xlX2dwdV9pbmZvX3V0aWw7CisJ
CX07CisJCThGMUVBOEVGOTMwRjk0QjBEOUIxOEQ4QiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0
YWwgPSA5Njg2MDA4QUIwQkEyOEZDMjM5NUQ5RjAgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlw
cm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA3NDk4MTk0NEUxRkI2REQ3
NjJBMDdEM0Y7CisJCQlyZW1vdGVJbmZvID0gbGliRUdMOworCQl9OworCQk5MkJDNTJEMUExREQ0
NDk2OERGQzY4MEUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJY
Q29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gOTY4NjAwOEFCMEJBMjhG
QzIzOTVEOUYwIC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJl
bW90ZUdsb2JhbElEU3RyaW5nID0gNUQ0QzlCRjExQTIyREIwQ0UxQTQ0MTIxOworCQkJcmVtb3Rl
SW5mbyA9IGxpYkFOR0xFX2QzZDExX2NvbmZpZzsKKwkJfTsKKwkJOTREMkVGODI0MDI5OTEyMUY2
OEE5QzU4IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRh
aW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDk2ODYwMDhBQjBCQTI4RkMyMzk1
RDlGMCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVH
bG9iYWxJRFN0cmluZyA9IEI4QzdDMTQyNzUxRjFFMTQ5OEE2NTJENDsKKwkJCXJlbW90ZUluZm8g
PSBsaWJHTEVTdjJfc3RhdGljOworCQl9OworCQlBQzkyNzlDNjg4OTYwREU1RkQ4NUI5RDcgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVBy
b3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gOTY4NjAwOEFCMEJBMjhGQzIzOTVEOUYwIC8qIFBy
b2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3Ry
aW5nID0gODA5NUZGNjU0MzBGMzY2NkQ2NTg3RjdGOworCQkJcmVtb3RlSW5mbyA9IGxpYkFOR0xF
X3JlbmRlcmVyX2NvbmZpZzsKKwkJfTsKKwkJQjM1MEVGMkE5RTY2MDcyNTk0RjVEMkFFIC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94
eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDk2ODYwMDhBQjBCQTI4RkMyMzk1RDlGMCAvKiBQcm9q
ZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmlu
ZyA9IDZEN0U2MzMyOEY4NzM4NEZGMzkzQUEwQjsKKwkJCXJlbW90ZUluZm8gPSBsaWJBTkdMRTsK
KwkJfTsKKwkJQjU5RjE2QjcwRjIyOERBNUVCRkJEOEI2IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBv
cnRhbCA9IDk2ODYwMDhBQjBCQTI4RkMyMzk1RDlGMCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJ
CXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDk1OTQ1N0I1N0FFQjQw
OTU4NEU0ODg3MDsKKwkJCXJlbW90ZUluZm8gPSBsaWJHTEVTdjI7CisJCX07CisJCUI1RjYxM0E4
RUYxOUYyMkQ5RDNBQ0I5RCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2Eg
PSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSA5Njg2MDA4QUIw
QkEyOEZDMjM5NUQ5RjAgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOwor
CQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSA1NUU3MDFENDhENkY3NUZERTBGQjVCODk7CisJCQly
ZW1vdGVJbmZvID0gY29weV9zY3JpcHRzOworCQl9OworCQlCRkQwQURGNENBMzBFMUI4NEU4MjU1
NjQgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVy
SXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gOTY4NjAwOEFCMEJBMjhGQzIzOTVEOUYw
IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2Jh
bElEU3RyaW5nID0gODA1NTFDRDdFQjI0MEYwOUY3NTVEQUMwOworCQkJcmVtb3RlSW5mbyA9IGNv
bW1pdF9pZDsKKwkJfTsKKwkJQzRCN0UzNTA2RDQ1NDY1MDI1NjFGNjZDIC8qIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNv
bnRhaW5lclBvcnRhbCA9IDk2ODYwMDhBQjBCQTI4RkMyMzk1RDlGMCAvKiBQcm9qZWN0IG9iamVj
dCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDVENEM5
QkYxMUEyMkRCMENFMUE0NDEyMTsKKwkJCXJlbW90ZUluZm8gPSBsaWJBTkdMRV9kM2QxMV9jb25m
aWc7CisJCX07CisJCUNEMjQ4NkY4MEU1RjkwMjE3RUQ3M0NBRiAvKiBQQlhDb250YWluZXJJdGVt
UHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWlu
ZXJQb3J0YWwgPSA5Njg2MDA4QUIwQkEyOEZDMjM5NUQ5RjAgLyogUHJvamVjdCBvYmplY3QgKi87
CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSBDNjk4OTZCNERE
MkMwNkNGMTYxNkJEQzY7CisJCQlyZW1vdGVJbmZvID0gcHJlcHJvY2Vzc29yOworCQl9OworCQlD
RkMwOUQ4QjUyOUI1RkE2NDRFOTBGQTQgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewor
CQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gOTY4
NjAwOEFCMEJBMjhGQzIzOTVEOUYwIC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBl
ID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gNUQ0QzlCRjExQTIyREIwQ0UxQTQ0MTIx
OworCQkJcmVtb3RlSW5mbyA9IGxpYkFOR0xFX2QzZDExX2NvbmZpZzsKKwkJfTsKKwkJRDhGOUM2
QUEyQTJERUQ1QzZBMTkzQjVEIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlz
YSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDk2ODYwMDhB
QjBCQTI4RkMyMzk1RDlGMCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7
CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDFGODhDREVCNDRFN0M3MUMyODJGQTk3NTsKKwkJ
CXJlbW90ZUluZm8gPSB0cmFuc2xhdG9yOworCQl9OworCQlEQjkwM0QxN0RFRTlGRDNBNjI4Mzg0
NDYgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVy
SXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gOTY4NjAwOEFCMEJBMjhGQzIzOTVEOUYw
IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2Jh
bElEU3RyaW5nID0gMTdGODNFOTY0OThCNTAwQjc3RDM3MTE4OworCQkJcmVtb3RlSW5mbyA9IGFu
Z2xlX2ltYWdlX3V0aWw7CisJCX07CisJCURFNUI1OUYzNDFFQjMxRTA2Mjg3QkYxQyAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7
CisJCQljb250YWluZXJQb3J0YWwgPSA5Njg2MDA4QUIwQkEyOEZDMjM5NUQ5RjAgLyogUHJvamVj
dCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcg
PSBDNjk4OTZCNEREMkMwNkNGMTYxNkJEQzY7CisJCQlyZW1vdGVJbmZvID0gcHJlcHJvY2Vzc29y
OworCQl9OworCQlFOTJCODFENzE4QkVBRjFBOTI2N0IzN0MgLyogUEJYQ29udGFpbmVySXRlbVBy
b3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVy
UG9ydGFsID0gOTY4NjAwOEFCMEJBMjhGQzIzOTVEOUYwIC8qIFByb2plY3Qgb2JqZWN0ICovOwor
CQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gOTU5NDU3QjU3QUVC
NDA5NTg0RTQ4ODcwOworCQkJcmVtb3RlSW5mbyA9IGxpYkdMRVN2MjsKKwkJfTsKKwkJRUJERUM0
Qjk5QjJBMjE1MjQxNTVCRjE4IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlz
YSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDk2ODYwMDhB
QjBCQTI4RkMyMzk1RDlGMCAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7
CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDc5MkFCRjQ4ODRBOEZEQUU4MTY5MERERTsKKwkJ
CXJlbW90ZUluZm8gPSBhbmdsZV9jb21tb247CisJCX07CisJCUYyQzU3ODkyM0IzQ0E1OTkxQkFC
ODRFMSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWlu
ZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSA5Njg2MDA4QUIwQkEyOEZDMjM5NUQ5
RjAgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xv
YmFsSURTdHJpbmcgPSBDNzAxMjg0NUM1RkUzOUFCMDg0QTMyRDg7CisJCQlyZW1vdGVJbmZvID0g
YW5nbGVfZ3B1X2luZm9fdXRpbDsKKwkJfTsKKy8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkg
c2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8K
KwkJNUJFMERGQUJGOEExRDhCNTFGNTY0RjIxIC8qIENvcHkgdG8gJChTSEFSRURfSU5URVJNRURJ
QVRFX0RJUikvYW5nbGUgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOwor
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAiJChTSEFSRURf
SU5URVJNRURJQVRFX0RJUikvYW5nbGUiOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlm
aWxlcyA9ICgKKwkJCQk4NjE1ODRGMUYzNURENDYyNUY1RTMyQUYgLyogY29weV9jb21waWxlcl9k
bGwuYmF0IGluIENvcHkgdG8gJChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvYW5nbGUgKi8sCisJ
CQkJQkNGMTREN0U2ODkwM0RBMEIzNTdDM0FBIC8qIGNvbW1pdF9pZC5weSBpbiBDb3B5IHRvICQo
U0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL2FuZ2xlICovLAorCQkJKTsKKwkJCW5hbWUgPSAiQ29w
eSB0byAkKFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS9hbmdsZSI7CisJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhDb3B5RmlsZXNCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICov
CisJCTAwNTk0RjU4MDIwRDgyQzg4MUVCOUJCNiAvKiBWZXJ0ZXhBcnJheS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBWZXJ0ZXhBcnJheS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTAxMUQxNDkzMzU4ODg3NDYyNjM0MkRFRCAvKiBWZXJ0ZXhBdHRyaWJ1dGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVmVydGV4QXR0cmlidXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMDE3MzEzRjM2NDgzNUQyNzcxMkUxQ0U1IC8qIFN5c3RlbUluZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU3lzdGVtSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwMTgzQTU2
MzYwQkY4QUQ4NUY0OTUwMDUgLyogQ29uZmlnLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbmZp
Zy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTAxQkRBMUU5REM2MTdFRkY2MDY2
QUM4MCAvKiBQcm9ncmFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2dyYW0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwMjNFRjVFNEIxMEMzODYwRDk1NTZBNzggLyogRGly
ZWN0aXZlUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpcmVjdGl2ZVBhcnNlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTAyOEE0NDNDRDZEQzI1QkIyNTNEMTg5MyAv
KiBTY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nh
bGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTAyQUU1OEE0NDVDRjU4RDUzNDcxODRBRCAvKiBJT0tpdC5mcmFtZXdvcmsgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1l
d29yazsgbmFtZSA9IElPS2l0LmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvSU9LaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKKwkJMDJDN0NC
NjREOTEyOTgwMjYxMTYyRTYxIC8qIEluZm9TaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluZm9TaW5r
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTAzMDYyNTNCNkM4QkZCN0YzRUMzOTIw
RCAvKiBNdXJtdXJIYXNoMy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNdXJtdXJIYXNoMy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwMzJCMDMyQTc2QzRCNTExNDU0MDc3MjIgLyogY29tbWl0
X2lkLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5zY3JpcHQucHl0aG9uOyBwYXRoID0gY29tbWl0X2lkLnB5OyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwMzMyNDY0NzRFMEZDNUMxNERDQjcwQzAgLyogbG9hZGltYWdlLmlubCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBsb2FkaW1hZ2UuaW5sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwMzM4RUUw
QTBEQTQzNzJCNzZCM0M5QjQgLyogYmxvY2tsYXlvdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gYmxvY2ts
YXlvdXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDQ2NkNCQzAwREQ2QkRERUYw
NzA1Q0M5IC8qIE5vZGVTZWFyY2guaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9kZVNlYXJjaC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNTE2MTdCMzEzNTYxQzY1QkM5QTBEMjEgLyogQ29t
cGlsZXJHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb21waWxlckdMLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDU2QzVDNUFFNzY3OUFFQURDNUY2MzNBIC8qIHZhbGlkYXRp
b25FUzMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gdmFsaWRhdGlvbkVTMy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNjMzNkJEQzlBMDVGQzZBMDI3MTcxQjUgLyogc3lzdGVtX3V0aWxzX21h
Yy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBzeXN0ZW1fdXRpbHNfbWFjLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDY2RDY4RDBDMTY0QUQ2MUExNUE0Mjg1IC8qIFNhbXBsZXJO
VUxMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbXBsZXJOVUxMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTA2QTg2RjUwN0IyRkQ5NTU1NzY0RjZENSAvKiBDYXBzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENhcHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDcxNzJEMTY2ODU2OEQ3
NDE5RUZEOUE2IC8qIGFuZ2xldXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gYW5nbGV1dGlscy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzUwMDdBNjc0NTBGOEI1N0Q0RjQwQ0MgLyog
Y29tbWl0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNvbW1pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwN0Q3NkQ4NTJEQjE0MzQwMDU5QTNGMzEgLyogT3B0aW9uYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gT3B0aW9uYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDgzNDIwRjU0
OEFFMzcyMDFGNUE5NDFCIC8qIGVudHJ5X3BvaW50c19nbGVzXzJfMC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBlbnRyeV9wb2ludHNfZ2xlc18yXzAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwOEVFNjg1REM4NzAyMDA2RjBDNzVFQzkgLyogUmV3cml0ZVVuYXJ5TWludXNPcGVy
YXRvckZsb2F0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0
b3JGbG9hdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA5MzJCNzg4QkVDNTFE
RjZDQTZFM0JENSAvKiBDb250ZXh0SW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZXh0
SW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA5RjNCNzZDQzA5QTU5MEE1
NUIzQjBGRCAvKiBRdWVyeUdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1ZXJ5R0wuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEEwNUQxMzEwRDk3RTc4OTgxRTM2RTFGIC8qIGxpYkVHTC5y
YyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBsaWJFR0wucmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBBMUMxNTJB
OEQ1NUY3QzJCQkI5OUQ1RiAvKiBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBBMUNGRjg3MEQ4MEVBQTkzREFCMDA5QSAvKiBTeW1ib2xUYWJsZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTeW1ib2xUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwQUU0OTc1ODZFNDQ2MDYyMEQxNjI2MkMgLyogTXVybXVySGFzaDMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTXVybXVySGFzaDMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
Qjc5ODJDNzBFQTA3QjU2MzYyNkQwNzQgLyogUHJvZ3JhbUdMLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBy
b2dyYW1HTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwQkE1NUJFMDQ4RDg4REE4
OTY4Nzg5ODggLyogVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRENDQkRGNEQxQTM4OTU3MEUzQkVDQTMgLyogVG9rZW5pemVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFRva2VuaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBE
RjRBOTVDQzQxNTU4MDk1OUMwRTRFNiAvKiBGbGFnU3RkMTQwU3RydWN0cy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBGbGFnU3RkMTQwU3RydWN0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RTZDRDA1ODVBQjI0NUM5N0U4QTlEMzMgLyogR0xJbXBsRmFjdG9yeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHTEltcGxGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNEUxOUUx
MjZGMzU3NDkwM0MxOEMyMyAvKiB2YWxpZGF0aW9uRVMzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IHZhbGlkYXRpb25FUzMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMEZDM0Iy
MEY2MzgwMUU3Q0JGRkVBNzUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yR0xTTC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTExNzE5MkNGRUVEQzk4RUM1RkREQzhBNCAvKiBsaWJBTkdM
RS5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNo
aXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsaWJBTkdMRS5hOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkxMUQzQzc0NkNBMzI1QjMzQjcxRTMyQjIgLyog
Q29uc3RhbnRVbmlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb25zdGFudFVuaW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTEyODkxNzBGODMwNjE4QjEyRjU4NzNBOSAvKiByZW5kZXJl
cmdsX3V0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHJlbmRlcmVyZ2xfdXRpbHMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxMkIwNURGOEJGRjBCQUU0MDYxMzBBNjUgLyog
UGF0aEdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhdGhHTC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTEzMzU4QjREODA1QzRCQTEzNkI2NjU1MiAvKiBUaHJlYWQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTEzNTc5
QjcyMDQ1RUVBQTM5NkY1ODM2NSAvKiBQcnVuZVB1cmVMaXRlcmFsU3RhdGVtZW50cy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQcnVuZVB1cmVMaXRlcmFsU3RhdGVtZW50cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTEzQkE0MDNDNDM0Q0Q1QjcyODg4RTA1OCAvKiBCdWZmZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE0MzAyMEQ1MUZGRkYyQTE4MzQzNTVCQiAvKiBJbWFnZUluZGV4LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEltYWdlSW5kZXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTQ2QjE0MzlCMzBC
QkUzRTkyRENEQkQ3IC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTE0QkRENERCRjdCQUJDMjk3Q0I1Q0VCRCAvKiBQb29sQWxsb2MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UG9vbEFsbG9jLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE1MkIzRTBBQjUyNzU3
MTAxODM3OTU3MCAvKiBDb21waWxlck5VTEwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29tcGls
ZXJOVUxMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTVBNThGMkRFODg5MUVG
NzcyQTc3QTExIC8qIFRyYW5zbGF0b3JHTFNMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zbGF0b3JH
TFNMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE2MTIyRjA1Q0Q0NkM4MjFEMjYz
RUZENyAvKiBBcnJheUJvdW5kc0NsYW1wZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlC
b3VuZHNDbGFtcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTYxRDk4MkND
QkJCMzk3MDY0NDFBN0Y4IC8qIFJlbmRlcmJ1ZmZlck5VTEwuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVuZGVyYnVmZmVyTlVMTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTE2
NjUwNzg4NjA1MTBGRkU3OTU5QjRBRCAvKiBsaWJHTEVTdjIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gbGliR0xFU3YyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTY2RjlGRUIw
NDQxRURGMzMxNjRGMDA4IC8qIFZhbGlkYXRlTWF4UGFyYW1ldGVycy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBWYWxpZGF0ZU1heFBhcmFtZXRlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkxNjhFQ0FGNzhDMDQyOUFEQkUxRTYyRDYgLyogU3RyZWFtLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFN0cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxNjk2MTYyNTg4RDVC
QzczMTdFNDk0NEEgLyogQ29sb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sb3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTZCMzhCMkY3N0JDMkVBMTRFQjlGNzkzIC8qIEltYWdlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMTczQjZEN0M4OEM0MURGQzQ4OTFFMTZEIC8qIFZhcnlpbmdQYWNraW5nLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFZhcnlpbmdQYWNraW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMTgwRkFEODhDQkJGQjI3OTQ1N0UwNDcyIC8qIFRleHR1cmVHTC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBUZXh0dXJlR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkxODNBQzZFOEZGNDYyNDVDOUYxMDVBQUIgLyogQ2FsbERBRy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDYWxsREFHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMTg1Q0IyQ0RD
QzJFNUVFRUVFMzNCQzE4IC8qIERpc3BsYXlDR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUNH
TC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxODZCODE0MzQyMTkyNUY4OEQ2Njk1
NDQgLyogRGlhZ25vc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlhZ25vc3RpY3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUI3NTY2N0VGNEI3M0Q4NjM1Q0YzNTZGIC8qIFJlbmRl
cmVyR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyZXJHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQkIwRTFDMUVBRENFMUY5NDM4MzU4QTMgLyogY29weWltYWdlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IGNvcHlpbWFnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFCQ0I5QjM4OTU5NDRFQjI4NDMyNDQwMyAvKiBlczNfY29weV9jb252ZXJzaW9uX3RhYmxl
X2F1dG9nZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZXMzX2NvcHlfY29udmVyc2lvbl90YWJs
ZV9hdXRvZ2VuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUQwRkQ1MDcxQkFF
OUVCMDJFQ0Y5ODIxIC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9yRmxvYXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMURFODM2OEY5NUFBOEU4ODA5M0YwRjhEIC8qIENvbmZpZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMURGNjg4
Q0U0NUEyRDc4RDdEQjFDODZGIC8qIExvZ2dpbmdBbm5vdGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TG9nZ2luZ0Fubm90YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRTZENkU0
MzUxODlFRjgxNDIwRUJENDggLyogUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUVFREEwRUIzRDBDMDlFNkQzQTI2MDgzIC8qIHZhbGlk
YXRpb25FUzMxLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHZhbGlkYXRpb25FUzMxLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFGMjAzMjU1RDQ4MTE1QTc1NTBCMDMyNyAvKiBGaW5kU3ltYm9s
Tm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGaW5kU3ltYm9sTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkxRjUzRUUyODVDQjE1NzJFQjQwMzlBMDcgLyogc2FmZV9jb252ZXJzaW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBzYWZlX2NvbnZlcnNpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTFGNjEyREUyRTNEOTEzMUM5MDNDODM2MSAvKiBFbXVsYXRlR0xGcmFnQ29s
b3JCcm9hZGNhc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRW11bGF0ZUdMRnJhZ0NvbG9yQnJv
YWRjYXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUZEMjkyNUVBOUI0QzQ5
MkI3OURDRDk3IC8qIGdsMzIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZ2wzMi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxRkUxMzU2REExNkNCM0M1OTg1RkM4QTMgLyogRGVmZXJHbG9iYWxJ
bml0aWFsaXplcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVmZXJHbG9iYWxJbml0aWFsaXpl
cnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyMDBENzI3QUZBODE0QzZDOEY1
MUYwREMgLyogU3RhdGVNYW5hZ2VyR0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RhdGVNYW5h
Z2VyR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyMDY4NTU5NTg2ODQzQkMy
MkQ4RkI3NEMgLyogV2luZG93U3VyZmFjZUNHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kb3dTdXJm
YWNlQ0dMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTIwOTVDMUNDRUIwRURDRjg3
MjIzQUM2OCAvKiBnbHNsYW5nX2xleC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBnbHNsYW5nX2xl
eC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTIxNzcyMjBDMzZFNUY3RjY2N0I5
MjM1OSAvKiBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZhbGlk
YXRlR2xvYmFsSW5pdGlhbGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjFC
Qjc3QzdDQ0NGOUEwNjVGQjNDQUEzIC8qIFBhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGF0
aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTIxQ0I1NzgyNUZERjI5Q0M1OTA1
MkFEMSAvKiBWZXJ0ZXhBcnJheU5VTEwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmVydGV4QXJy
YXlOVUxMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjIwNUYxRjdBMTQ0RjZB
QjA0RUI0MEM3IC8qIEFycmF5Qm91bmRzQ2xhbXBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJv
dW5kc0NsYW1wZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjIzNjM3ODBGMDRB
M0ZEOTM0RkEzQzBFIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBR
dWFydHpDb3JlLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvUXVh
cnR6Q29yZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworCQkyMjNEQjVDMEEy
Q0NENEI2MkVFMjY4OUQgLyogUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyMjhCMkE5QjBDMUU5RjkwRjY3RjAxRTIgLyogRGV2aWNlSW1wbC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXZpY2VJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMjMxQjQ5QTZCOTdCRkIzMDdDRjMyMDIxIC8qIGFuZ2xldHlwZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gYW5nbGV0eXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
MzMzOUQ5MDFGMkY3NDdCNjhDN0VENUEgLyogVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMjM1MEQ0MkU3MjU2OEY4NkE0NjFFNDlCIC8qIFByZXByb2Nlc3Nvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQcmVwcm9jZXNzb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkyNDM4QUI4NkQ2RDRGRTA5NUNEQjUyNDEgLyogaW1hZ2Vmb3JtYXRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IGltYWdlZm9ybWF0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkyNDNFNTY4QTY2NUNBQTc4Q0M5RUJDOUIgLyogVmFyeWluZ1BhY2tpbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVmFyeWluZ1BhY2tpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjQ4
QTM3NTk3NEFENEVGRDAxNkQxREMzIC8qIHF1ZXJ5dXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcXVl
cnl1dGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNEE3NzkxOTBBQkI5QzEy
MEVCNjQ1MTAgLyogRGlzcGxheU5VTEwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlzcGxheU5V
TEwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNEI2OTJGMzY1QTBCREM4NTE1
RUVFNjMgLyogZW50cnlfcG9pbnRzX2dsZXNfM18wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGVu
dHJ5X3BvaW50c19nbGVzXzNfMC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI0
QzIwNTJCOUMwRUQyMkNBMTY1OTUyMCAvKiBQcm9ncmFtR0wuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUHJvZ3JhbUdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjVBQUQ1Qjky
NjAyQzlFMjdDRjc2QUYzIC8qIEJ1ZmZlck5VTEwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVmZmVyTlVM
TC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNjQ2MzVBNTZGN0YxREQyRjgwOUQ3
QjUgLyogVmFsaWRhdGVNdWx0aXZpZXdXZWJHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYWxp
ZGF0ZU11bHRpdmlld1dlYkdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjZB
OTQ2MzU2NjY2NDJENjZDNjRENjc5IC8qIGNvbXBpbGVyLmd5cGkgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGU7IHBhdGggPSBjb21waWxl
ci5neXBpOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNzQwRkMwOUIwRjFDQTk5Qjk1
MkIwMzIgLyogZW50cnlfcG9pbnRzX2VnbF9leHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZW50
cnlfcG9pbnRzX2VnbF9leHQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyNzkx
RjA2NTYyNDE5M0U4NzZBQzFEMkQgLyogSW5pdGlhbGl6ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbml0aWFsaXplLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjdGMTUwNUE4
RDYyRTdENDg4ODIzREY3IC8qIE1hY3JvRXhwYW5kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWFjcm9FeHBhbmRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI4MDlCNjdB
MEE4NEM0N0Q2MDc1N0Y5RSAvKiBQYXRoTlVMTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXRo
TlVMTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTI4N0ZFNjdCRTM5MzhGNEJB
N0RGQTVERSAvKiBWZXJ0ZXhBcnJheUdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlcnRleEFycmF5R0wu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMjk5NjVGNTJCMTRBMTQ5Mzk0NEVGNEMz
IC8qIENvbXBpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBpbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkFCM0Q0NDQ0RDNBN0JBNDk0MDg3MkIwIC8qIFJlc291
cmNlTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZU1hbmFnZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkJFNTFFNUUzN0RDOTBEMjJGMjNFQ0JGIC8qIENhcHMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ2Fwcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTJDNzdBMjM5Qjc0RDgzMjlGQTlDQTc3QyAvKiBTb3VyY2VMb2NhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTb3VyY2VMb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQky
Q0IxQUIzNTI0REE4QkI4Q0YyNzFFNjggLyogUHJ1bmVFbXB0eURlY2xhcmF0aW9ucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBQcnVuZUVtcHR5RGVjbGFyYXRpb25zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMkQxNDQzQ0I3OTRCOTMyQjc0NzVBMEI4IC8qIFByYWdtYS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQcmFnbWEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQx
NUI0OTlEQjEwRjUwMzA1MDA2MUIxIC8qIGFuZ2xlLmd5cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZTsgcGF0aCA9IGFuZ2xlLmd5cDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ2RjI1MjUwRTJFQzVGMTk5QUZBMTU4IC8q
IE91dHB1dEVTU0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gT3V0cHV0RVNTTC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkyRDhFNzdGQTBFQTY0N0FERDdGNTIzMDggLyogU2V2ZXJpdHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2V2ZXJpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkRBRTgyREIwMzUzNUE0ODdFODk1Qzc0IC8qIHZlY3Rvcl91dGlscy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSB2ZWN0b3JfdXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkRFQzBBOEJF
QTgwQ0U0QkMyQzZBNzA4IC8qIHNpZ25hbF91dGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBzaWduYWxf
dXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkVEQTIwOTAzRTMxRDY3N0FB
N0E2MTFGIC8qIEZyYW1lYnVmZmVySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZWJ1ZmZlcklt
cGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkZCRUJCOTA0MDc4RENBRjI0QjM4
MjYxIC8qIEVycm9yLmlubCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBFcnJvci5pbmw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTJGRjk0MzY2Mjc5MzIxNTRDNjU2NkFCOCAvKiBTYW1wbGVyR0wuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2FtcGxlckdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMwMzA3MzY5
MjJCQTFDOTVEODNFQjYyQyAvKiBQbGF0Zm9ybS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbGF0
Zm9ybS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMwNDc2QzVCQjMwRTU2REY1
REJCRjZBQiAvKiBTdXJmYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN1cmZhY2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMDg2MTcxMkI2QzlCNjY3ODU5QTUzMzggLyog
dmFsaWRhdGlvbkVHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSB2YWxpZGF0aW9uRUdMLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTMwQjk1MDU2NTZEQjgzQzhFMEJBQ0M0OSAvKiBhbmdsZXV0
aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGFuZ2xldXRpbHMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMEU0MjlBNDM1Q0ZFREUxOTU3MDJGRTcgLyogTWVtb3J5QnVmZmVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lbW9yeUJ1ZmZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxNUNFNUUwQTBEMDg1QThEQzE2NUIwQyAvKiBCdWZmZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMzFCQUM4QTA2N0Q1OUZCNDJDMDg2QzY1IC8qIGdsMnBsYXRmb3JtLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IGdsMnBsYXRmb3JtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxQ0ExNUJC
RTA0OEVDN0IwNTgxMTZEQSAvKiBEaXJlY3RpdmVIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERpcmVjdGl2ZUhhbmRsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkz
MjM0MTAwQTlGNUVEMjhEODM0MDI2MzEgLyogZ2xzbGFuZy55ICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS55YWNjOyBwYXRoID0gZ2xz
bGFuZy55OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzBGMDQ3RDgyRDdGNTUyRjMw
Qjg0NDEgLyogbWF0cml4X3V0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IG1hdHJpeF91dGlscy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzkyMTZBQjVFRDRGOUU5RERFRjJCNjAgLyog
T3V0cHV0R0xTTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBPdXRwdXRHTFNMLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMzOUZGRjM3RkVGMzZCMDlCMUEyNkUwQyAvKiBSZW1vdmVQb3cuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUmVtb3ZlUG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTMzRTg5REI2OTgyMjZBOTI0NDQzQkIyMiAvKiBEZXZpY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2
aWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTM0OTdFRjYyRTBDNDA0RkNBRUU1
RUI4QSAvKiBTeXN0ZW1JbmZvX21hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN5c3RlbUlu
Zm9fbWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNTI0RTQwMDY4MjgwRTFB
OUFCNDc0OUQgLyogSGFzaE5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhc2hOYW1lcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzNkJEMzFDNDg4NzVFM0Y4OTQ0M0FBMkYgLyogdXRp
bC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB1dGlsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzZFMUQ0QjJGNEZFMUUzQzdDMTUxMDM0IC8qIEhhbmRsZVJhbmdlQWxsb2NhdG9y
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRsZVJhbmdlQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTM3QUVEM0M5MTJDOEVFODcyMkYxRjE2NyAvKiBUZXh0dXJlSW1wbC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUZXh0dXJlSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTM4OTRGQjhBMjIwODVFOUYwNEM2RjExMiAvKiBmb3JtYXRfbWFwX2F1dG9n
ZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZm9ybWF0X21hcF9hdXRvZ2VuLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzk1QjA3QUE0RTEzRUEwN0M3OUU5NDRBIC8qIEVHTElt
cGxGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVHTEltcGxGYWN0b3J5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTNBNDkyQjNDRDA0MTA4QzczRjQ2MjBEQyAvKiB1dGlsaXRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gdXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTNBRUMzNzJEODA3MzMyRkMyODZCRUQ5NSAvKiBWZXJzaW9uR0xTTC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWZXJzaW9uR0xTTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzQjU4REMz
ODNGMDgxMjg1QjM3OUY0QjggLyogVmVydGV4QXJyYXlOVUxMLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZl
cnRleEFycmF5TlVMTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzQkY0REQxRUEz
NTlGNDhFRkFDNThDOEUgLyogbGliRUdMLmRlZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBsaWJFR0wuZGVmOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzQzc2RDE3QjQzREY1ODlBRUIyNUM1MEIgLyogRmVuY2VOVk5V
TEwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRmVuY2VOVk5VTEwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJM0M5QzgxMDREREU5NEQwNkM2OUZCRTY4IC8qIGdlbmVyYXRlbWlwLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IGdlbmVyYXRlbWlwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTND
QTBGQkYwNzcwREQ4OTA0Rjc0OUE2NyAvKiBxdWVyeWNvbnZlcnNpb25zLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IHF1ZXJ5Y29udmVyc2lvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzQ0MzM0JFQ0JBQUU4MzRGNkNGQkJGRUIgLyogdmVyc2lvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSB2ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNEOEI4M0NDQTEyREU4
NjdBQkU4MjZDNSAvKiBmb3JtYXR1dGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBmb3JtYXR1
dGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNERTMxMDU5OUZFMEQ1OTRD
Mjc0RDJFMSAvKiBWYWxpZGF0ZVN3aXRjaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYWxpZGF0
ZVN3aXRjaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNFMDdDMjMzRjUyMUUx
MzE0RDYyQjk1QiAvKiBTYW1wbGVyTlVMTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGVy
TlVMTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTNGNDQwNTU4NEY2NjlCQUEy
RTJCMTgxOSAvKiB2YWxpZGF0aW9uRUdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHZhbGlkYXRp
b25FR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzRjc1Q0YzOUM2OURCNzUz
OEJFNTRENkIgLyogbGliRUdMX3N0YXRpYy5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSBsaWJFR0xfc3RhdGljLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJ
CTQwNTkxQzMzNjgxREE1QUJBNEYxRkJFQyAvKiBVbmlmb3JtLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFVuaWZvcm0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MDYyNUEyNEFF
RUZGMzZBRDM1MjRDRDAgLyogZXZlbnRfdHJhY2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGV2
ZW50X3RyYWNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQwRTlCM0U2ODRB
ODM3NjdBQUIwMENENiAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvckdMU0wuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQxOUYxMzhBM0IyNTc3QTBDNDk3RDk0MyAvKiBGZW5jZVN5bmNHTC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBGZW5jZVN5bmNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
MUUyQkQwMkM2NzE2NjQ1QjZEQjI0QzIgLyogYW5nbGV0eXBlcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBhbmdsZXR5cGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDMzMjRD
QjVBNEM5OUVGMUM4MzBCNTFFIC8qIENvcmVGb3VuZGF0aW9uLmZyYW1ld29yayAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3Jr
OyBuYW1lID0gQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3Jrcy9Db3JlRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09U
OyB9OworCQk0M0I3NjA0QzY5REQ5QzUyRTcyODMzMzYgLyogZW50cnlfcG9pbnRzX2dsZXNfMl8w
X2V4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBlbnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ0QTA3OTU2QjVCQzE2QTdDNjcwQjlBOCAvKiBDb21w
aWxlckdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBpbGVyR0wuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNDU3OEM4QkM1ODdBNjFEQzVFNTNCQzM1IC8qIGxvYWRpbWFnZV9ldGMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gbG9hZGltYWdlX2V0Yy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTQ1RERCOUFFNzdENzNBNDI1MThFRDcwNSAvKiBFeHRlbnNpb25HTFNMLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4dGVuc2lvbkdMU0wuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk0NUZDNzZGOTdFQTE4RkQ4Q0I4OTVCRTQgLyogU2FtcGxlckltcGwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2FtcGxlckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDYzMDg2RkY3QTcxMTM0OTQ5ODZCMkJGIC8qIGVudHJ5X3BvaW50c19nbGVzXzJfMF9leHQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZW50cnlfcG9pbnRzX2dsZXNfMl8wX2V4dC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2NDUxN0FGQzk0MkM1NEJCMDM4QTlCNSAvKiBp
bnRlcm1PdXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gaW50ZXJtT3V0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY3QkMzODdBNDgwQ0ZFNzk3QUVGNjVBIC8qIFJlbmRlcmVy
R0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyZXJHTC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ4QTZGNDg2OURGMUQxNjcxRkJFMzZGMyAvKiBEaXNwbGF5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0OENEREE4REJDNUM1NTYyNjY4RDhEM0IgLyogVHJhbnNmb3JtRmVlZGJhY2tOVUxMLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zZm9ybUZlZWRiYWNrTlVMTC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ4RjcwMkMyQzM2MDhFMzQwNDZFQjlDNyAvKiBUb2tlbml6
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVG9rZW5pemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTQ5QTMwNTkwNzk0Rjc5NTg1MjlCQjdERiAvKiBpbWFnZWZvcm1hdHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gaW1hZ2Vmb3JtYXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNEE2QURDQzUzQ0E5REYyNThFN0RDRUU1IC8qIFZlcnRleEFycmF5SW1wbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWZXJ0ZXhBcnJheUltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNEIxQUU2RDRCRjQwRjRFMTQ5RTlDMTU4IC8qIERlYnVnLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERlYnVnLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEIzNzM3RTA2OTRD
ODg5RTQ3NzYwNUE5IC8qIEluZGV4UmFuZ2VDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmRleFJh
bmdlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEIzQ0NEMUJEQjAzNjlC
MzU1NUExMzA1IC8qIEluaXRpYWxpemVEbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5pdGlhbGl6ZURs
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QjVBMEQ2RTFDNjY4MkUzOEI3ODgy
OEMgLyogdmFsaWRhdGlvbkVTMzEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gdmFsaWRhdGlvbkVT
MzEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0QkYyNEM0NjIxMDAzNzVGOTg3
QkE0RUQgLyogUmVuZGVyYnVmZmVyTlVMTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJidWZmZXJO
VUxMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRDNEUyMUU5Mzk4MkRFQ0I1MEQ5
QTI5MCAvKiBDb250ZXh0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGV4dFN0YXRl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEM3MDVDNkEwMDBFNjE1MjI2RjVD
MkM2IC8qIFNhbXBsZXJHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTYW1wbGVyR0wuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0RDBBQzE2OURCNkNBMjU4REI3MjMzQzMgLyog
RnJhbWVidWZmZXJHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGcmFtZWJ1ZmZlckdMLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTREMEI1ODY4RDczNjc4MUI0MTJGNjVBRCAvKiBsaWJhbmds
ZV9jb21tb24uYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBl
ID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGliYW5nbGVfY29tbW9u
LmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTREMEU5NTY0RUZEMDA1
NEVFMTNFNDE0QyAvKiBTYW1wbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNhbXBsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0RDJENEE1NEM1MUIyNzQ0RjIwRTQ3MDMg
LyogSGFuZGxlQWxsb2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRsZUFsbG9jYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0RDQ1MEUzNUUwMDA2RTkwRTlBNzRCM0EgLyog
RGV2aWNlTlVMTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VOVUxMLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTREOUY3NEQ1RjhFODgwMUM2REE3MUQyRiAvKiBnbDNwbGF0Zm9ybS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBnbDNwbGF0Zm9ybS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0RTc0MDQ4OEFFMjJFQTgyN0RCM0NBNUEgLyogZ2xvYmFsX3N0YXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IGdsb2JhbF9zdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0RTc0
NEMzNTEyN0I4MURBNTE2RUNDNTkgLyogU2VhcmNoU3ltYm9sLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNlYXJjaFN5bWJvbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTRGMTU4
OEExN0I2MzdGRUM5QTY5NTlCMCAvKiBCcmVha1ZhcmlhYmxlQWxpYXNpbmdJbklubmVyTG9vcHMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnJlYWtWYXJpYWJsZUFsaWFzaW5nSW5Jbm5lckxvb3Bz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEY0MDhFNTc3MzRCMTYwOURGNUE3
M0ZCIC8qIE1lbW9yeUJ1ZmZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlCdWZmZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEY5OEVENTk5OTRENUFDNDc4MURERTI0IC8qIElu
dGVybU5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZXJtTm9kZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTRGREIxNzZGM0JBNjQ4RkM4QkMxNzhDQiAvKiBFeHRlbnNp
b25CZWhhdmlvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHRlbnNpb25CZWhhdmlvci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MDM3MzgyOTczNTFBMEI4MTc0QTgxODAgLyogbGliR0xF
U3YyLmRlZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBsaWJHTEVTdjIuZGVmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MTU3RjM3QkZGRjg3OEFBRkNBM0E4MzIgLyogQ29jb2EuZnJhbWV3b3JrICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7
IG5hbWUgPSBDb2NvYS5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0NvY29hLmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CisJCTUxODU3NTIyRTQ4
NjdBMjA5MDU1MjFCMyAvKiBJbnRlcm1Ob2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEludGVybU5vZGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTIzNEE5MzhBODAyNUU2RkE1MjEyMTVD
IC8qIERldmljZUltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV2aWNlSW1wbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MkYyNjBFOEYxOTMwN0Q4M0NBRUJDRkEgLyogUmVuZGVyYnVm
ZmVyR0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyYnVmZmVyR0wuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1M0FBNzc3MkUwREE3MDlDMjY1Njg5QUQgLyogVGV4dHVy
ZU5VTEwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dHVyZU5VTEwuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1M0NBQkQ3NTA4RTc1NDQ3NkE1OEMyQTAgLyogU2hhZGVySW1w
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkZXJJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTU0NkQ2Q0M2Q0U2QjFCMkExNzcyRkVCRSAvKiBGaW5kU3ltYm9sTm9kZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGaW5kU3ltYm9sTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTU0NzVENzk1MzhDNzc4QTI2OUE0Qzc2NSAvKiBQYnVmZmVyU3VyZmFjZUNHTC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQYnVmZmVyU3VyZmFjZUNHTC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1NEUyMjNERTQ4MkEwODMxRjgwRTIwMUEgLyogVmFsaWRhdGVNdWx0aXZpZXdX
ZWJHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBWYWxpZGF0ZU11bHRpdmlld1dlYkdMLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTU1NTFGMEUzODFFREQ0NjQ4NDk5NDlCRiAvKiBRdWVyeS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBRdWVyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTU1RDRFODkxNkNDN0RFQTYyNjNGOUY2MCAvKiBnbDMxLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IGdsMzEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTVFRkY5RTZFQzc2MDMyQzY0
Q0ZEMDBDIC8qIFRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NjM5NjJCOUQ1NEVERTZEMjc1NjlBMTkgLyogQXR0
cmlidXRlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEF0dHJpYnV0ZU1hcC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU2NTYzOUVEMEU4ODMxMzI5QjU2ODNFRCAvKiBVbmlm
b3JtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaWZvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTZFRUU5RTJDQTJGOUZBODg2MDNDNjY0IC8qIFN5c3RlbUluZm9faW50ZXJuYWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3lzdGVtSW5mb19pbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk1NzUwNTg4Q0QzODZFMzM1REFFQzJFNzMgLyogT3V0cHV0RVNTTC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBPdXRwdXRFU1NMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTc1RENGOTlFRDlFOTcxRjMxRjNCRURDIC8qIEZvcm1hdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBGb3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTdDQTREQzMyNDg1MDFG
MzU0MTY5MkRDIC8qIEV4cHJlc3Npb25QYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXhw
cmVzc2lvblBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3RTIzNDZF
QjBGRUZFNkM2N0JBQzdFNyAvKiBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRnJhbWVidWZmZXJBdHRhY2htZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNTgwQ0RDOUYxNkFFQUJCNjNFODYyMTAwIC8qIENvbnRleHROVUxMLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENvbnRleHROVUxMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNTgzQkE1RDE4NjQ0MEI3RDQ5MUE4RTU4IC8qIE1hY3JvLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1hY3JvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTg0REFENDU1
RjA3N0FBQzJEQTQ5OENEIC8qIFJld3JpdGVEb1doaWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJld3Jp
dGVEb1doaWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU4NTk2OTFGODEzN0E3
M0MwQ0I0QUI1OSAvKiBDb25zdGFudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RhbnRzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU4NkVFMEQyRkJGQ0QzREM2NzhBREYwRCAvKiBo
aXN0b2dyYW1fbWFjcm9zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGhpc3RvZ3JhbV9tYWNyb3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTg3M0VBOEJFQThDM0I0NjRBRjhCNEMxIC8qIExl
eGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExleGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTg3N0MyNDYwMjBCNzdFNkRBNjFBNDUwIC8qIHJlc291cmNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IHJlc291cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCMkJD
NzcyODEzM0I5Q0FDMjNEMDQ3RSAvKiBJbmZvU2luay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bmZvU2luay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVCQzY5QTY3NUQ2RTM5
QkU3RUEwNDY1NyAvKiBnbHNsYW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdsc2xhbmcuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUJFMEFEODhDOTgyRTg3MjI4QjMwNDQxIC8qIE91dHB1
dEdMU0xCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE91dHB1dEdMU0xCYXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDOTZDREE1OENDODU5NkRDNTIwN0VDOCAvKiBTdXJmYWNlSW1w
bC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdXJmYWNlSW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDOUIwMkQ5MEJFMTA5OUY3MzdDNDcwQSAvKiBCdWZmZXJHTC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBCdWZmZXJHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVEQUY1MzcyODQ1ODUzNENEMDA4NTkyOCAvKiBFcnJvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVEQjM2NDcw
QjAzMTMyMUQzRjExQjJFNyAvKiBRdWVyeU5VTEwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVl
cnlOVUxMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUUxQzEwOEU3RUY3Q0Qy
NzhCMDgyQTlBIC8qIFZlcnRleEF0dHJpYnV0ZS5pbmwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmVydGV4QXR0cmlidXRlLmlu
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUU1NEJGNTExRTJBNUJFRDlENzg5MzE5
IC8qIGVudHJ5X3BvaW50c19lZ2wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZW50cnlfcG9pbnRz
X2VnbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVFNzhEQzUzQjc1QTJCRTkz
NjlFNTg0OCAvKiBCdWZmZXJHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWZmZXJHTC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1RThENTE2QTcwNkQ5N0E1QTBBNjdDNjAgLyogRGlyZWN0
aXZlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXJlY3RpdmVIYW5kbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVGNkExMDdFNDQyOUY4MDFFRENCQTdFOCAvKiBzYWZlX21h
dGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gc2FmZV9tYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVGOTVDNzg1NDVBRDUwQTVDNDZENzYxNiAvKiBJbnB1dC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJbnB1dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVGOUU2MDkw
RDc1N0VGOTQ5QUYwNDI2MyAvKiBPcGVuR0wuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBP
cGVuR0wuZnJhbWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9PcGVuR0wu
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKKwkJNUZFNTFFMjQ3M0Y1N0IyODFF
QzVCRkI3IC8qIFdvcmthcm91bmRzR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2Fyb3VuZHNHTC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MDAwNzY0NzIzMUQwQkU4NThDMzhDODAg
LyogU3VyZmFjZU5VTEwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3VyZmFjZU5VTEwuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MEFGNEY3NUFGNzZCODA0M0EyOUU0MkYgLyog
UGFyc2VDb250ZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhcnNlQ29udGV4dC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYwRENBMTYzNUI1MDQ4NEQxQ0I2MUJGQyAvKiBs
aWJFR0wuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBs
aWJFR0wuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTYxMEU3
RDREQkM3N0UxNzJBQzkxMjdENiAvKiBnZW5lcmF0ZW1pcC5pbmwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gZ2VuZXJhdGVtaXAu
aW5sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MUM4ODI1NTJGRTIwNzc4RUExMkZF
RjQgLyogcXVlcnljb252ZXJzaW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBxdWVyeWNvbnZlcnNpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYyMDcwQUNBNjk5MDY5ODM4MzFERjQ0
QyAvKiBxdWVyeXV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHF1ZXJ5dXRpbHMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MkUwRTcwOTc3RkM3NDUwMEI3MjZEMDUgLyog
VmFyaWFibGVQYWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmFyaWFibGVQYWNrZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2Mzc0MzU3NzY4RTZBQjFBNDhCRTQwOTIg
LyogRnJhbWVidWZmZXJBdHRhY2htZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZyYW1lYnVmZmVyQXR0
YWNobWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NDRBQjlGQjc3NDIyRkNB
MDMwNzBDMTIgLyogQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNjQ4RjY2QUE3OEFCRTRBRjM1MjZDQTExIC8qIEluaXRpYWxpemUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5pdGlhbGl6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk2NEU2QkEwQUEyNjA1NTgwQzJBODM2RjYgLyogbnVtZXJpY19sZXguaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gbnVtZXJpY19sZXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVEN0E4
NTdFRkU1NjA0QjM5Qjk0NEE2IC8qIFN0YXRlTWFuYWdlckdMLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
YXRlTWFuYWdlckdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY2QzgyQkY0RURF
NkQ4M0Y2QkVBREZCMCAvKiBSZWdlbmVyYXRlU3RydWN0TmFtZXMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVnZW5lcmF0ZVN0cnVjdE5hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNjZFRDY2Q0MwMzc0QzkzRDI1QTdBOUM2IC8qIENvbnRleHQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29udGV4dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY2RjhE
NjUyREYzRDM0REY4NjVBRDYxNCAvKiBCaW5hcnlTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmlu
YXJ5U3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTY3MzJDNkJDMzNBODBG
QTJBNkNGODUxRSAvKiBRdWFsaWZpZXJUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZXJU
eXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2NzY3M0JCQzY2Q0UwQUFCRTQ0
ODM2QzggLyogbG9hZGltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGxvYWRpbWFnZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk2N0E2QjM5NDc0NzFEOTk4MjBCMjU2NTUgLyogT3BlcmF0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3BlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk2OTVERTc4RUUyRDVCMzBGMjYyODBGODMgLyogU2hhZGVyTGFuZy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTaGFkZXJMYW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNkE1QkNDQzFFRkExQzlBMzFBNkM0MDE2IC8qIGZvcm1hdHV0aWxzZ2wuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gZm9ybWF0dXRpbHNnbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTZBNkYwRTE1NUQzRERFNDUxNUNBRDU3OCAvKiBJbml0aWFsaXplVmFyaWFibGVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluaXRpYWxpemVWYXJpYWJsZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk2QUI1QjgxRDdFQzI5RURENUIzRUQwODkgLyogUmVuZGVy
YnVmZmVyR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyYnVmZmVyR0wuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNkNEODQ5OUM3Q0FFQ0Q3MTc3MzhCQTBDIC8qIHRscy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSB0bHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2
Q0RBNjRDRUQ3Q0I2RkZGOTZFOUU3QzAgLyogRm9ybWF0X0lEX2F1dG9nZW4uaW5sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZv
cm1hdF9JRF9hdXRvZ2VuLmlubDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkVCMjY1
NDMxODJDNTAzQTM2Q0U3MEQ3IC8qIENvbnN0YW50VW5pb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29uc3RhbnRVbmlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTZGNjJC
MzQzOTI2MzZEN0JDOEJCMTM4QiAvKiBCdWZmZXJJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1ZmZl
ckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNkZGQzBFQTRFRTc5QTgwQ0Y2
RDczQTA0IC8qIFZlcnRleEFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlcnRleEFycmF5Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwNkU2MTkwQzk1MENCRThEM0Y5NDI5OSAvKiBJ
bml0aWFsaXplR2xvYmFscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbml0aWFsaXplR2xvYmFscy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEQyQzYyRDMxRjMyQjAwRDUyODBGRDAgLyog
U3RyZWFtUHJvZHVjZXJJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmVhbVByb2R1Y2VySW1wbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MTVGOUVBOERBMDkwMEYyOEIxOEM0NjEg
LyogZnVuY3Rpb25zZ2xfdHlwZWRlZnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZnVuY3Rpb25zZ2xfdHlw
ZWRlZnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI0RjM5MjJEQjRDMzAyNTY0
NDUyQTg5IC8qIFNoYWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFkZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MjVEMDZDRTU4QTg3MTc4RUIzMkEzQTYgLyogUHJ1
bmVQdXJlTGl0ZXJhbFN0YXRlbWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJ1bmVQdXJlTGl0ZXJh
bFN0YXRlbWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzJBODc0MThDNkIz
Q0M3NzA2MTQ5NTMyIC8qIGVudHJ5X3BvaW50c19nbGVzXzNfMS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBl
bnRyeV9wb2ludHNfZ2xlc18zXzEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzMx
NjRFNDJCOEQ4OEM1QjkxNDg5MkYxIC8qIENvbXBpbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbXBpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzQzRDA1RkNDODgw
MDJBQjMzODZDMEVBIC8qIGxpYkdMRVN2Mi5yYyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBsaWJHTEVTdjIucmM7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTc0NkU2RjhGQkE2RDlDM0E3MTA0NThBQSAvKiBJbWFnZUlt
cGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VJbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTc0RTY1RDc1ODA2RkMzOUFENDA5NjAwMCAvKiBWYXJpYWJsZUluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVmFyaWFibGVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1
MDg4RjA4NUZDODQ3N0JDRUI4Qzc1MSAvKiBTeW1ib2xUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTeW1ib2xUYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc1QTIy
NzY4NjRDNThGMjRBMjQzNzk0QyAvKiBSZW5kZXJidWZmZXJJbXBsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlcmJ1ZmZlckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzdBRjg1
NjM3RTNFNTAzOERFMzhEMEVFIC8qIGxpYkdMRVN2Mi5neXBpICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlOyBwYXRoID0gbGliR0xFU3Yy
Lmd5cGk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc4MDQ3Mjk4ODFEMTY1QTEwOTI5
NDgwQiAvKiBlbnRyeV9wb2ludHNfZ2xlc18zXzAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZW50cnlfcG9p
bnRzX2dsZXNfM18wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc4MzA5NUI4QjQw
REY3ODNFRUJCM0FBNCAvKiByZW5kZXJlcl91dGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBy
ZW5kZXJlcl91dGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBMzUxNkM4
OERBNkYxOEE4RDczN0UwQiAvKiBsaWJwcmVwcm9jZXNzb3IuYSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXgg
PSAwOyBwYXRoID0gbGlicHJlcHJvY2Vzc29yLmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CisJCTdBOEJBQ0M0ODc2QUU5MEM4NDRFQzRGNCAvKiBQcnVuZUVtcHR5RGVjbGFy
YXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBydW5lRW1wdHlEZWNsYXJhdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0FBM0FGNzc5QTM5REVGODM0MUJCMkFDIC8qIERpc3Bs
YXlJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3BsYXlJbXBsLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0IwOUM5NThFQjE4RDY0MDU3QTg1REQ0IC8qIFNoYWRlckdM
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRlckdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdDRTExMjU0MjFCQTg4MzdERDJDMjJGNiAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdEMzA4RDBBODRBMzhDQ0U4MzAxRENGOCAvKiByZW5k
ZXJlcmdsX3V0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHJlbmRlcmVyZ2xfdXRpbHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0RDMzRBOTgyNEU2MkRFQTY5OTQ4NDMyIC8qIHN0YW5k
YWxvbmUuZ3lwaSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBl
ID0gc291cmNlY29kZTsgbmFtZSA9IHN0YW5kYWxvbmUuZ3lwaTsgcGF0aCA9IC4uL2d5cC9zdGFu
ZGFsb25lLmd5cGk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdEREM3NTAwNUM0QzFF
MUYxRTJEQTc0OCAvKiBmdW5jdGlvbnNnbF9lbnVtcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmdW5jdGlv
bnNnbF9lbnVtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RThENjNBNjY5NjA0
RjRBNjc1NkM2OTkgLyogZ2xzbGFuZ190YWIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZ2xzbGFu
Z190YWIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3RUY5NEU5MTkwMkY0RUIy
MkNGRkUyMDAgLyogUGF0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXRoLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTdGMjhCODgyMTdCNkMyODQ1RThDMjdBOSAvKiBWZXJ0ZXhBdHRyaWJ1
dGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVmVydGV4QXR0cmlidXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdGNzQzQjQ0RkRGRTNDRjc5RkM2OEVGRiAvKiBTdXJmYWNlTlVMTC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdXJmYWNlTlVMTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3RjkwOEUxNDIwQjYxRjNGMjBCQjYzMzcgLyogRnVuY3Rpb25zR0wuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRnVuY3Rpb25zR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4
MDAzNjA4QkY4MjY2NDBEOTk4QTZFMjEgLyogRnJhbWVidWZmZXJOVUxMLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZyYW1lYnVmZmVyTlVMTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4MDA2
OTRCNUREMzExOUNBMkQxQkUxQjYgLyogbWF0aHV0aWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbWF0aHV0
aWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODA5NTU4MThCRUNDQjY3NEZBQzRC
MzE3IC8qIG1hdGh1dGlsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IG1hdGh1dGlsLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODA5REE5RjhCQzkxMDZENTA3M0IyNDI3IC8qIEZs
YWdTdGQxNDBTdHJ1Y3RzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZsYWdTdGQxNDBTdHJ1Y3Rz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODEwNjdDQ0I3OUE4RTFCQjJDRjJG
Mjg1IC8qIEV4dGVuc2lvbkdMU0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXh0ZW5zaW9uR0xTTC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4NDE4RDI0Rjk2OUU0RjFERjU2MENDOUQgLyog
RnVuY3Rpb25zR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVuY3Rpb25zR0wuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJODRDOEEzNzQwRUQ3MzU3M0IzNDExRDcwIC8qIEVtdWxhdGVQcmVj
aXNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRW11bGF0ZVByZWNpc2lvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk4NUI4ODRFQ0M4N0ZCNEIwNjFGOTQyNjggLyogVGV4dHVyZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUZXh0dXJlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTg3
OUQ5MTQ5RDg0M0YyODBBQ0Y1QTlFMyAvKiBGZW5jZVN5bmNOVUxMLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEZlbmNlU3luY05VTEwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODgwMjhDQjkx
MDUyQ0Y0NUY0MzhGMDY4IC8qIGNvcHlpbWFnZS5pbmwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gY29weWltYWdlLmlubDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODgzMDdDQjJGREM1QkQ2NjhBQTFGMzhEIC8qIEJ1
ZmZlck5VTEwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVmZmVyTlVMTC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTg5MDVCRjc0QUM0QjY1RkZCODgzNUU5QyAvKiBTdHJlYW0u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3RyZWFtLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJODk2NjQyRTRGNzNEQzVDNkNEMTdBOTQ2IC8qIEZsb2F0MTZUb0Zsb2F0MzIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXQxNlRvRmxvYXQzMi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTg5QUQ5NUVCNkI3MTc5MjVENjQxQzRBRSAvKiBEaWFnbm9zdGljc0Jh
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlhZ25vc3RpY3NCYXNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODlFNjlCOTI5MEU5ODhGRjVBM0NBOTcyIC8qIFJlc291cmNl
TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZXNvdXJjZU1hbmFnZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4QjVCQUI2NDlGN0MyNUExRTYwOTJDNkUgLyogU3Vy
ZmFjZUltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3VyZmFjZUltcGwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOENBRTdDRDBBMDA3RkI3OEY5MTE1QTk1IC8qIGdsMy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBnbDMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOENFRUJERjJBRUM4
OUM5NTA0QTBDNjhEIC8qIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CThEOEJEQTFFNEMzNkYwRUEwNjc1QkY4QiAvKiBUZXh0dXJlSW1wbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZXh0dXJlSW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4RTYzMzFENTc3
OUIxOUM0RkI5QTRFMzAgLyogQmxpdEdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJsaXRHTC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4RTY5ODA0NUJDMjJBODNDRTA1NEY0QkUgLyogUmVt
b3ZlSW52YXJpYW50RGVjbGFyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3ZlSW52YXJpYW50
RGVjbGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOEZDRUZFNDdEQjk5
NzdDOURBRTY5QjZBIC8qIHN0cmluZ191dGlscy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBzdHJp
bmdfdXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MDM4OEE3NkJENDJF
MTU1QjE0QzIyMjIgLyogdmFsaWRhdGlvbkVTLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHZhbGlk
YXRpb25FUy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkwQ0IzMjJGQzg5MUVF
REZDMTZBMjZDQSAvKiBsaWJHTEVTdjJfc3RhdGljLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsg
cGF0aCA9IGxpYkdMRVN2Ml9zdGF0aWMuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKKwkJOTExMjM5MjczMzE4QzM2QTZCRENBQUMyIC8qIFZhcmlhYmxlSW5mby5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBWYXJpYWJsZUluZm8uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5MTM0NEVDNjU1ODk4RDEzMDgzNTQwQ0QgLyogVHJhbnNmb3JtRmVlZGJhY2tOVUxM
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zZm9ybUZlZWRiYWNrTlVMTC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5MUNENjk1NkU0QUJDMDc4NUY2OUQ3MUEgLyogQ29udGV4dEdMLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRleHRHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkyQTIyNEJCQTQ0RDE2N0FBM0I3MzJDMyAvKiBWYXJpYWJsZVBhY2tlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBWYXJpYWJsZVBhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5M0VBOUI1QkY0N0FEMTNCQjNBNDE5NjcgLyogZW50cnlfcG9pbnRzX2VnbF9leHQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gZW50cnlfcG9pbnRzX2VnbF9leHQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTRGNUZDMjQxM0RDMDYzODY0RTE3MEU3IC8qIE9wZXJhdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE9wZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0RjdC
MzBFQzFCRkFBQzYzREM0MzhBRCAvKiBjb21taXRfaWQucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IHBhdGggPSBj
b21taXRfaWQucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1OEVFNDEzNEU0QzU3
MEQ1M0U4MjcwRSAvKiBVbmlmb3JtTGlua2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuaWZvcm1MaW5r
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTVCNkE1RkU4REIwOUU0OEZBMjYw
NEUwIC8qIGVudHJ5X3BvaW50c19nbGVzXzNfMS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBlbnRy
eV9wb2ludHNfZ2xlc18zXzEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Njcz
MjVFQUQyOTUyRURCNTAwMzFCOEMgLyoga2hycGxhdGZvcm0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0ga2hy
cGxhdGZvcm0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTZBMjVCQjY5MDhERUM5
MUQ1QkU1OUNBIC8qIFByZXByb2Nlc3Nvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmVwcm9jZXNzb3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTdCNzVCMTI4MTgyQTMxQzdFRkU3RDcx
IC8qIFN5c3RlbUluZm8uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3lzdGVtSW5mby5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk4QjlDOTEzMzNCQjYzMjUyNkVCNUUxMiAvKiBQ
bGF0Zm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5OEU1NUQ4N0EyNkNGREIwMDQwQzAxMUQgLyogZW50cnlfcG9pbnRzX2VnbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBlbnRyeV9wb2ludHNfZWdsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk5MTAwREIzRDNGODlEMENFNDRDNEJBQyAvKiBRdWVyeUdMLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFF1ZXJ5R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
QTkwNzYyMkI4MTcyMUE2QUFFMDAwMDMgLyogVmVyc2lvbi5pbmwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmVyc2lvbi5pbmw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCMjA5RUNCRDJGNUJEMTEzQzA2MUEwMCAv
KiBlZ2xwbGF0Zm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBlZ2xwbGF0Zm9ybS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5QjcyMDY5QkY1QTMxMDgzNzk5MEY1NTYgLyogSW50ZXJtVHJh
dmVyc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZXJtVHJhdmVyc2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5QjlCRDgyMUQ3Qzg4MTA3RjA5REIyNzIgLyogY29weV9j
b21waWxlcl9kbGwuYmF0ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IGNvcHlfY29tcGlsZXJfZGxsLmJhdDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOUM4QjNGQkJDMzFDRDJFMDQxQzMzN0RBIC8qIFRva2VuaXplci5s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFRva2VuaXplci5sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QzkwNUEz
NzE0OTgzQjVEODVDODkwMjIgLyogdmFsaWRhdGlvbkVTLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHZhbGlk
YXRpb25FUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5Q0YxN0UyNDJGMUE5ODFG
NTU2MTUxQjcgLyogU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJOUQwQTc4OTQ3NkI5QzZCNzQwMzgwNEExIC8qIEZlbmNlTlZHTC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGZW5jZU5WR0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5RDJENjRDODA1RjEzQTA0OTJGNjI3REYgLyogVHJhbnNmb3JtRmVlZGJhY2tH
TC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUcmFuc2Zvcm1GZWVkYmFja0dMLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUQ0Mzg3OEI0Qzk4OEI1NkE4QjIzNzY4IC8qIEZyYW1l
YnVmZmVyQXR0YWNobWVudE9iamVjdEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVidWZmZXJB
dHRhY2htZW50T2JqZWN0SW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5RDU5
MERCMTMwNDQzMDkyQkFGQTAxRTUgLyogU2hhZGVyTlVMTC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTaGFkZXJOVUxMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUU1MzUwNzU1
OEUwMjVFQTAzOUVEOTAyIC8qIENvbXBpbGVySW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21waWxl
ckltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUU2MDE1QzdEQUM0MDhFQjU0
Q0ExQjMxIC8qIGVudHJ5X3BvaW50c19nbGVzXzJfMC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBlbnRyeV9w
b2ludHNfZ2xlc18yXzAuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUU4MDcyODE0
RTc5QzE5NUY2ODA3Qzg2IC8qIERpc3BsYXlJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlJ
bXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlGOEZDREQ3OEU5MTY4MUUxM0Ix
N0JFRiAvKiBXaW5kb3dTdXJmYWNlQ0dMLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2luZG93
U3VyZmFjZUNHTC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTA1MUUxRDQ2RjMx
RkIwM0JDMTI3MjA0IC8qIFF1ZXJ5SW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWVyeUltcGwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFDQjRDNTA4OTAyM0Q2ODA4MjY1N0JBIC8q
IFBhcnNlQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZUNvbnRleHQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFDRjg5REJGMTJERUZCRkI4MjBBNjI0IC8qIEVtdWxhdGVH
TEZyYWdDb2xvckJyb2FkY2FzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFbXVsYXRlR0xGcmFnQ29sb3JC
cm9hZGNhc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTFFMjhBNzY4MTUwNDIy
OTlEN0IyRTRFIC8qIFRyYW5zZm9ybUZlZWRiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zZm9y
bUZlZWRiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEyMjk5N0UxMDgxRUNE
QTUwNzcwMzA4MyAvKiBWYWxpZGF0ZVN3aXRjaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWxpZGF0ZVN3
aXRjaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMzJCODgyRTcwREJBRDI1MkMw
MkVGMjYgLyogRmVuY2VTeW5jTlVMTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGZW5jZVN5bmNO
VUxMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTQwNUE5QUUxOTBBRjY0MERE
QkVFNUY0IC8qIEZlbmNlTlZOVUxMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZlbmNlTlZOVUxM
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU2QjE3RDVCODE3NkFBM0MwRkU0
QkFBIC8qIEZlbmNlTlZJbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZlbmNlTlZJbXBsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE2QkY5NUZDRENBNDUzMTFEMTE4NDQ4MSAvKiBsaWJH
TEVTdjIuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBs
aWJHTEVTdjIuZHlsaWI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUE2
QzJGMTUyRTY3REQxMjJDN0M2RTkxNSAvKiBmb3JtYXR1dGlscy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBm
b3JtYXR1dGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNkQ5NjQ5OUI3MDk5
REVFNDc0QjY2NjEgLyogZXhwb3J0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGV4cG9ydC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBNzUwMkRBNzU1NkRCNkZBNDI1NTVEODUgLyogSW5kZXhS
YW5nZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluZGV4UmFuZ2VDYWNoZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3NTdDRjI2MjU5N0YwRTY2OUJDM0NFOSAvKiBl
Z2wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gZWdsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUE3QTFDRDU5RDRFQTc0QTZBOEIyQ0ZENiAvKiBGZW5jZU5WR0wuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RmVuY2VOVkdMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4NURCNTM1MDBBRkUz
QjQyQ0EyQjA5RCAvKiBjb3B5aW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY29weWltYWdlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4OTIwM0IyMDk3REZCNUNCMjg3MDAzMyAvKiBT
YW1wbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhbXBsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTk0NkE0RDE5NEYwQkI2NzM1QUM5OTJBIC8qIHRscy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSB0bHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTk5MjNDQ0RGODQ5OUJGQ0E0
OUQ4ODA4IC8qIFJlY29yZENvbnN0YW50UHJlY2lzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFJlY29yZENvbnN0YW50UHJlY2lzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTlBQTA5OEMxOTAzNUYzQzQ5OTlDMUJDIC8qIGFuZ2xlX2dsLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IGFuZ2xlX2dsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFBNDUwNDhFRjcxNzEx
NUE2Q0I2RTUwQyAvKiBFeHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQUE3NUEwRUJCRDIzMTQ4RTYzRURDNTNBIC8qIE91dHB1dEdMU0xCYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE91dHB1dEdMU0xCYXNlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQUIwNDc0RjdDQzYwRTM0N0NGQ0RBN0ExIC8qIFZlcnNpb25HTFNM
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZlcnNpb25HTFNMLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQUJBQ0Y3RkQxNjlBREJBOUU5QUY3NDcwIC8qIERpc3BsYXlOVUxMLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERpc3BsYXlOVUxMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUFDMzZGOUFEM0IwOTZFMTk3QzY4OTQ5RSAvKiBXb3JrZXJUaHJlYWQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gV29ya2VyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQUQyRkIxMkRCNjE0NDNGNjU0ODhBMDAxIC8qIFNoYWRlckdMLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNoYWRlckdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUZBRUQ3
MTkwQzkzNUVFQTg3NzY3RDU2IC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCMDY5NTU1OTc4RTRDRjAyMDUzOERCRjggLyogUHJvZ3JhbS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQcm9ncmFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIw
ODQ1Q0RFNjQ0NTJENUI3QjcyMTk3NyAvKiBSZXdyaXRlRG9XaGlsZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBSZXdyaXRlRG9XaGlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUIwOTA5MUY3MTZFRDZGNkMxREZBNUI5MyAvKiBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCMTAyNjRFOUEwQzc2MUE5QjhGNjM0RkUgLyogdmFsaWRhdGlvbkVTMi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB2YWxpZGF0aW9uRVMyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQjEwRkNENzk3NkU3OUIwMjlCRDNFNTZFIC8qIEhhbmRsZVJhbmdlQWxs
b2NhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjJCNkQ3QjVCNzQ3OUUwNDMxRTlBM0RBIC8q
IERldmljZU5VTEwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGV2aWNlTlVMTC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyQkMyRjgwMzVBQzlEOTY4QkNDNTU4MSAvKiBJbml0
aWFsaXplVmFyaWFibGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluaXRpYWxpemVWYXJpYWJsZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjJFOEVBQUFEM0MxREU3MjEyMzUyQTFEIC8q
IEZlbmNlU3luY0dMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZlbmNlU3luY0dMLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjJFQ0RDMDA5NDI5Q0M5Q0U3RkZBRjJGIC8qIERl
dmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlCMzgxNTc3Rjc5REM4Mzc3OTcxQkMzOTAgLyogSW50ZXJtZWRpYXRlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGVybWVkaWF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUI1RTNCRDY5RkFERDU3Qzk3MzdDOTkxNiAvKiBkcml2ZXJfdXRpbHMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gZHJpdmVyX3V0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQjZCODAwQ0M3MDQ2QjdENjAxREU0N0NGIC8qIEV4cGFuZEludGVnZXJQb3dF
eHByZXNzaW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjZFRTVDRDVBMUYyMzBCNzFBN0UxQTUx
IC8qIFJlbmRlcmJ1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJidWZmZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNzFEOTAyMTQwQTZBMzEwMjdFRDk4N0Yg
LyogUGJ1ZmZlclN1cmZhY2VDR0wubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYnVmZmVyU3Vy
ZmFjZUNHTC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjc5MDlGNkU5MUM2M0FF
MDEyOEU5MDcyIC8qIFByb2dyYW1OVUxMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFByb2dyYW1O
VUxMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjg2MzFFRjBGNzkwNDBEQjYz
RTg0NjQ3IC8qIGxpYnRyYW5zbGF0b3IuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBl
eHBsaWNpdEZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0g
bGlidHJhbnNsYXRvci5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQlC
ODY0ODQ3NThCRjVEMjUxNEMyMjdDODkgLyogV29ya2VyVGhyZWFkLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdvcmtlclRocmVhZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCODgyOTlGQThG
Q0M4RDdDMzJDNURBMjcgLyogVW5mb2xkU2hvcnRDaXJjdWl0QVNULmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFVuZm9sZFNob3J0Q2lyY3VpdEFTVC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
OEI2REU5QzFFREFDNEI5QTNBQzY2REYgLyogQWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUI5RTdBNzAyRDAzMkZCOThCRDU4NzdGMCAvKiByZW5kZXJlcl91dGls
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSByZW5kZXJlcl91dGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlCOUVBQ0JCODdFREU1RDZDMDM4QTdGMUEgLyogRnJhbWVidWZmZXJOVUxMLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lYnVmZmVyTlVMTC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJBRTJFNzg0QzAyNzJBMjhGMTQyRTQ4MSAvKiBGZW5jZVN5bmNJbXBs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEZlbmNlU3luY0ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkIyQjJDODg5RjczRUZDMTJGQzQ2ODk0IC8qIFRyYW5zZm9ybUZlZWRiYWNrLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zZm9ybUZlZWRiYWNrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQkI1OEM3MzlCMkI1Q0EyMTBFN0ZDNDMwIC8qIEltYWdlTlVMTC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbWFnZU5VTEwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQkMyNTJERjQwNEE4RjQyODFGNTI2RTBGIC8qIEhhbmRsZUFsbG9jYXRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBIYW5kbGVBbGxvY2F0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCQzI1NTA4RDk1NUI0OThFOTdBOTcwNjggLyogVmFsaWRhdGVMaW1pdGF0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWYWxpZGF0ZUxpbWl0YXRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUJDMzFGOTk3MUNFQzc3QkFDNjMzREY2OCAvKiBsaWJhbmdsZV9pbWFnZV91
dGlsLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFy
Y2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxpYmFuZ2xlX2ltYWdlX3V0aWwu
YTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJQkM0MkUwMkExNEYwMkIz
M0QzMTY4MTkzIC8qIHRyYWNlX2V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHRyYWNlX2V2ZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDRTUzMzNBMEE2NUZDMEE3RjY4QUU4MSAv
KiBnbHNsYW5nX3RhYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBnbHNsYW5nX3RhYi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCRDJGODlDNkQxRDMwQzY5NENCMDk1RkEgLyogY29tbW9uLmd5
cGkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJj
ZWNvZGU7IG5hbWUgPSBjb21tb24uZ3lwaTsgcGF0aCA9IC4uL2d5cC9jb21tb24uZ3lwaTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkRBODIyMzNDQjQyMjlBMkNDREExNEEzIC8qIFBh
dGhHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQYXRoR0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQkRBRkNEOTRFN0JGODMxRTIwODc0REMzIC8qIGRyaXZlcl91dGlscy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBkcml2ZXJfdXRpbHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkUz
NEJCN0VENzZFRkQxOTQ4MzU4MDJFIC8qIERlYnVnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlYnVnLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJFNjlBMEFFMkNEQTIxODNBOUZBQzEyRSAv
KiBTdXJmYWNlR0wuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3VyZmFjZUdMLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJFRTg1NkQ2NjBDNTA3NzE4QTVFNkFCMSAvKiBsaWJFR0wuZ3lwaSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29k
ZTsgcGF0aCA9IGxpYkVHTC5neXBpOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCRjQz
OEYxOTUzNDIwMEUwMjA4RDQwMzMgLyogUXVlcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUXVlcnkuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkZCOTc2QTRBOERBOEEwRjk1RDQ5NTEzIC8q
IFZhbGlkYXRlT3V0cHV0cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWxpZGF0ZU91dHB1dHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkZGNDNDMjY3RjQyRTRERkUyNzI4N0Q0IC8qIEZy
YW1lYnVmZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZyYW1lYnVmZmVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzA2MEVDMDhBQkJBMTk2NEM3ODZBNDRDIC8qIGxvYWRp
bWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBsb2FkaW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMDc0MzlERDRDN0EzMkI4RUE2REExMzkgLyogRXJyb3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzBCNzE1
RDY4QjFFNTE1QTU2NUM1MUJGIC8qIFZhbGlkYXRlT3V0cHV0cy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBWYWxpZGF0ZU91dHB1dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
MTNBOUY4RkIxREE5MTA3RUJDM0UyMDYgLyogUXVhbGlmaWVyVHlwZXMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUXVhbGlmaWVyVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMzMyQzM5N0NEMUZDOTRFNUY1NUFCNDkgLyogQnJlYWtWYXJpYWJsZUFsaWFzaW5nSW5Jbm5l
ckxvb3BzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29w
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMzcwQTFEQjRFMTJGQzcwRkNCRTcw
QjYgLyogVHJhbnNsYXRvckVTU0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVHJhbnNsYXRvckVT
U0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDM0RGQUQ1OUU5QTQ4Q0UzQjky
NjM2NDYgLyogU2VhcmNoU3ltYm9sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlYXJjaFN5bWJvbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNUU4QjNFRjc5N0Y1RUY0MDBGQzZGODIgLyog
TGV4ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGV4ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzY0Qzg4RDAwMDQyM0MzQ0E0OURBODBCIC8qIERpcmVjdGl2ZUhhbmRsZXJCYXNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERpcmVjdGl2ZUhhbmRsZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUM4RDY0NDkzQ0Q5ODZDRDNDRDFBRERCRCAvKiBUb2tlbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUb2tlbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDOEZFNjJGNjk2
RDNGMkU1RDRDODMxOUIgLyogRGlzcGxheUdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpc3Bs
YXlHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM5NUJGRTY2Q0JENzVEMDIy
NTRENkM2NSAvKiBQYXRoTlVMTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXRoTlVMTC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDOTlBREU3QTNGNTQzQjhFQjNGRkMzMEYgLyogZGVidWcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gZGVidWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzlCQUZBM0M0QUVFRjQwMUNDRjQ2NTRGIC8qIE1hY3JvRXhwYW5kZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTWFjcm9FeHBhbmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDQjFDMzk0
QjU0QjdEQzFBMkMwNEY3N0IgLyogVW5pZm9ybUxpbmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBVbmlmb3JtTGlua2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0MxNEJC
QkM0RkM2RDA2RkM4REU5NUI0IC8qIGdsMi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBnbDIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0M1NTVCMDJDRDYwRDM1MjFGOEJFQ0ZEIC8qIHNhZmVf
Y29udmVyc2lvbnNfaW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBzYWZlX2NvbnZlcnNpb25zX2ltcGwu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0M4QjlBODQ4RUMzMTBGNkU1N0VBNUQ4
IC8qIFRleHR1cmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dHVyZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENzY4MkMxRkQxNDQ5NDREM0U3QzcyNSAvKiBJbWFnZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbWFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
RDk2MzVDQzdEQ0M1Njk5QkIxODg0RkQgLyogU3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREI0NzA1RThCNDYyOTI4
OUY0Rjk3QzQgLyogU2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQzY5QUYzRjlDNTgyNjcyM0NFODJGNyAvKiBBZGRB
bmRUcnVlVG9Mb29wQ29uZGl0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFkZEFuZFRydWVU
b0xvb3BDb25kaXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTE4MUM1
NDgzM0QyRjZGQjFBN0Y4QkQgLyogQmFzZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VUeXBl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRUY2OEFEQ0U4REM2RTJENTk3QkU4
MkIgLyogVHJhbnNmb3JtRmVlZGJhY2tHTC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFuc2Zvcm1GZWVk
YmFja0dMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNGOTlGQURGNTNBMzE0NTRE
MEE3REM1RSAvKiBFeHByZXNzaW9uUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25Q
YXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDAzMTVGMkYyRTRGMDM0RDdC
RDNBMTg5IC8qIFNoYWRlclZhcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhZGVyVmFycy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEMUUwOUQ1OUVBNzE2QjIxQTlGQUE2NTIgLyogZXZl
bnRfdHJhY2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGV2ZW50X3RyYWNlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlEMjQzM0JCMEY1MDI4MDk3MEMwNTdFNTkgLyogQ29udGV4dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQz
MTZDMERGMjUzQTcwMTkyRThBQTZEQiAvKiB2dWxrYW4uZ3lwaSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZTsgbmFtZSA9IHZ1bGthbi5n
eXBpOyBwYXRoID0gdnVsa2FuX3N1cHBvcnQvdnVsa2FuLmd5cGk7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUQzOUZERkQyOUVBN0FCMDJERjcwOTlGMyAvKiB2YWxpZGF0aW9uRVMyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IHZhbGlkYXRpb25FUzIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRDNENDkzNDcyMjdFM0NCMzhGRjU1RThDIC8qIGNvbW1vbl9kZWZpbmVzLmd5cGkgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGU7
IG5hbWUgPSBjb21tb25fZGVmaW5lcy5neXBpOyBwYXRoID0gLi4vZ3lwL2NvbW1vbl9kZWZpbmVz
Lmd5cGk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQ0MDQ0MjcyQ0IwRDA5QTFGODM2
RjlBOSAvKiBsZW5ndGhfbGltaXRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGxlbmd0aF9saW1pdHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRDU1REYyQjYxQTNCODYxNDc2QTQ2NURFIC8q
IFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVmFsaWRh
dGVHbG9iYWxJbml0aWFsaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQ2
ODVCRTIzNEUwOTBCRDE3OEQ4OTE0RSAvKiBlZ2xleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gZWdsZXh0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQ2OUQ2NDhDQjQzM0UxQTZCNjIxOThB
MyAvKiBDb21waWxlck5VTEwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGlsZXJOVUxMLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQ2QkVGMjg2QzM0RDNDMTNGN0IxQzlBNCAvKiB1dGls
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IHV0aWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RDZEQzBEM0M0MTA1MTJGNzREOUM0MkFEIC8qIFNoYWRlck5VTEwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2hhZGVyTlVMTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlENzMzRDI5M0ZDOTMz
MUYwMjUxOEI5QTUgLyogZ2wyZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGdsMmV4dC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlENzU1MDZDNTRBREU1QTY5MzJBQTFCRjMgLyogRmVuY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRmVuY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RDdCMzg5QkUzMkFCQjU1QTgwMkRFREVCIC8qIFRleHR1cmVOVUxMLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRleHR1cmVOVUxMLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQ3QkRCNDMwNUFB
QkExMTNBOTYxMTdBNyAvKiBWZXJ0ZXhBcnJheUdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFZl
cnRleEFycmF5R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEODk2ODJBRUM1
MjU3RkY5Qjg0MjAwNTIgLyogU2hhZGVyTGFuZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkZXJMYW5n
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUQ4REU0Q0EwOEQyOENBMTU3MzkzNjU4
MyAvKiBFbXVsYXRlUHJlY2lzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVtdWxhdGVQcmVj
aXNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQTQ1RDYxRUU5QTFBMDA0
RDM1MDBCODAgLyogQ29udGV4dEdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRleHRHTC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQThBNkJDMzAxOTlBQjc0MzBBQTcxQzIgLyogbG9h
ZF9mdW5jdGlvbnNfdGFibGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbG9hZF9mdW5jdGlvbnNfdGFibGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREE5MTRDQkZGNTQ3NDk5MEU5MEVBNzhB
IC8qIGluZGV4ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IGluZGV4OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQjc0
QjhGQkZDRTFENjMxNzFGMjg5OTMgLyogQ29udGV4dEltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29u
dGV4dEltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREJBRjFBMjhGM0IwRDVG
NzBEM0E5MDU5IC8qIFJlZkNvdW50T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZkNvdW50T2Jq
ZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURCRDc1QTlCN0Q4RTVGM0FBODZG
REVERCAvKiBsaWJhbmdsZV9ncHVfaW5mb191dGlsLmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IGFyY2hpdmUuYXI7IGluY2x1ZGVJbkluZGV4ID0gMDsg
cGF0aCA9IGxpYmFuZ2xlX2dwdV9pbmZvX3V0aWwuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKKwkJREMwRjkzOTYzMzE1NDY4REM2Qzc1MDQzIC8qIEJsaXRHTC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBCbGl0R0wuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlEQzg0OTQyOTU4OEYxQjEyRTc1NjFFMjYgLyogU3VyZmFjZUdMLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN1cmZhY2VHTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUREMUU2
N0U5RDVCNzJDRkJENkJBN0IxQSAvKiBEaXJlY3RpdmVQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RGlyZWN0aXZlUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURENDk4QzNC
QzUzRDhEQzYyQkM5NEU3QyAvKiBGb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBGb3JtYXRfdGFibGVfYXV0b2dlbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCURENEIwNTlDRkM2NzlEQkFEMkNENjQ4MSAvKiBUb2tlbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBUb2tlbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCURFMTNGNDBC
RjI5REZFRDM0NEJFRDhDRCAvKiBUcmFuc2xhdG9yRVNTTC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUcmFu
c2xhdG9yRVNTTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlERjZCODc1MzZDMzgw
REYxOTFGQjJGMzggLyogRnJhbWVidWZmZXJHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGcmFt
ZWJ1ZmZlckdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJREY4QjJFOTUyMDYw
MEM3NDNCMEQ3QTMwIC8qIFRyYW5zZm9ybUZlZWRiYWNrSW1wbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
cmFuc2Zvcm1GZWVkYmFja0ltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTAw
MUZFQUIzNzdGMzY1MTZGOTM4NDc1IC8qIHV0aWxpdGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSB1dGlsaXRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTRBQzJDQkMy
QjBGNzQzNjZFODMzREYgLyogQ2FsbERBRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsREFHLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxNEIyQUYwOTc4Q0ZGNjQ2MjhCOEQ4MiAvKiBB
dHRyaWJ1dGVNYXAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXR0cmlidXRlTWFwLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUUxRUQwQjEzQjg5NTc1QTU4QTA1REU2NCAvKiBzYWZlX21hdGhf
aW1wbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBzYWZlX21hdGhfaW1wbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlFMUY0MzdCODE3ODM3RjFBRUEyMjRFMDAgLyogTG9nZ2luZ0Fubm90YXRv
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBMb2dnaW5nQW5ub3RhdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTMzOEIzN0Q1QzI0QTdGNTU4MjNFMDc5IC8qIERpcmVjdGl2
ZUhhbmRsZXJCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERpcmVjdGl2ZUhhbmRsZXJCYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM2NzhBMTdENTY1Nzk0NEFCOURF
ODU3IC8qIEludGVybWVkaWF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRlcm1lZGlhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM3REVFMDVFNUFBREQ3MTgyQTM3NUFBIC8qIGxv
Z2dpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gbG9nZ2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFNDE4QTdCRUVEMTlDRjVEQjVBNEZGNkEgLyogQ29tbW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNDMwNzc5MjlDRDYz
MTk0OTk2RTMxQ0UgLyogQ2FjaGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFNkFCQjdCODkwMDhGQkUwNzU5QTQ3NTUgLyog
Zm9ybWF0dXRpbHNnbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBmb3JtYXR1dGlsc2dsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUU2REVGMDFBOEI1MUJENjBCQUE2NjY1OCAvKiBEaXNwbGF5
Q0dMLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRGlzcGxheUNHTC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTczQ0E2OTg3NzNGQzA1Q0UxMERCMTk4IC8qIFByb2dyYW1JbXBs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFByb2dyYW1JbXBsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUU3OUM2MDY3QTZEM0Q1Qjk2MDVCQzcwMyAvKiBnbHNsYW5nLmwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gZ2xzbGFu
Zy5sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFODIyMjlGODZFREVFMDIxNjkzOEQz
QTkgLyogVW5mb2xkU2hvcnRDaXJjdWl0QVNULmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuZm9s
ZFNob3J0Q2lyY3VpdEFTVC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU4MjM5
RkEwRUFFRDE3OTZGM0Y0RkZGRSAvKiBUcmFuc2xhdG9yR0xTTC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBUcmFuc2xhdG9yR0xTTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU4
NDc5MjAzN0Y0QTYxNUQ2NjIzQ0MzQiAvKiBQb29sQWxsb2MuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUG9vbEFsbG9jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRThGRjAzQUVF
QjRBQkZDMEUyQ0QxNDc3IC8qIE91dHB1dEdMU0wuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gT3V0
cHV0R0xTTC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUU5OTYwOEI5NjkwM0RD
NzRFN0YxMTQzNSAvKiBWZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZlcnNpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTlEQ0EzNDYwNzFCOEJGNDg4REVCM0Q2IC8qIGJsb2Nr
bGF5b3V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGJsb2NrbGF5b3V0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUE5QUVFQTRCQ0E4Mzk0NEJFODMyREU0IC8qIGZlYXR1cmVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IGZlYXR1cmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUVBRThDNzI0NUNEQjUwODgzNThFMkZFNSAvKiBJbml0aWFsaXplRGxsLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEluaXRpYWxpemVEbGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFQUZDMjhGRTRGQTg2NkNGM0E4MTI1OTAgLyogV29ya2Fyb3VuZHNEM0QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV29ya2Fyb3VuZHNEM0QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RUIwOUFBNkY0NkYzQzJDRjY4NjQ4NTQ5IC8qIEltYWdlTlVMTC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbWFnZU5VTEwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQjEzM0I0
ODRGMjcwQzIzQUNFQURFMDMgLyogYW5nbGV0eXBlcy5pbmwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gYW5nbGV0eXBlcy5pbmw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVCMTRGNkY1RDlDQjVBQkE0NjM4OTMzQSAv
KiBDb2RlR2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvZGVHZW4uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFQjZFMTMzODMwNDY0NzQyMThCRDE4OTQgLyogUmVtb3ZlUG93
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW92ZVBvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUVCQzI3MThGQjcwN0JFMkVERjlBNTcyMCAvKiBSZWNvcmRDb25zdGFudFBy
ZWNpc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWNvcmRDb25zdGFudFByZWNpc2lvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQkREN0VENkRBRUQ3QjcyRDNGOTczMTggLyogRGlh
Z25vc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGlhZ25vc3RpY3MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFQzU2QzExNzY5Qzk1MDM2RTRFRDQ3M0IgLyogVmFsaWRh
dGVMaW1pdGF0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBWYWxpZGF0ZUxpbWl0YXRpb25z
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUNBMkNCMTIwMEY2MDFEMDhEMDI5
MTdGIC8qIElucHV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElucHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUVDQkRFQ0U3NEMzQzQ4QzAyQjY2REI2OCAvKiBGZW5jZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBGZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVE
NThFQUQ4QzM4NzhFQTU0N0EwREJBRSAvKiBSZW5kZXJidWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVuZGVyYnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUVFNzUwNTM5NkNG
RTYxMDY2MEI3ODFBNyAvKiBUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUeXBlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlFRURBNEZGQ0RDMDg4REMyQjk3MERERkEgLyogQ29tcGls
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGlsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRUVGN0NDNEU3RTAwMjg0NEI5RTUwN0Q2IC8qIERpc3BsYXlHTC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEaXNwbGF5R0wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUY4Q0JCQ0Mz
MDQ5RDRGQTUyMEVCRThEIC8qIERpc3BsYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGMEU4REZEMDdBMjAyRjE5MDQ5NTczNkMgLyog
VGV4dHVyZUdMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHR1cmVHTC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGMjZERDZFM0QwN0QzNkQyNTM5Q0JFOUUgLyogQ29udGV4dFN0YXRlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbnRleHRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGMjlDRkIwRjVBOUZDMUU4Q0JGNEY5MUQgLyogQ29sb3IuaW5sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IENvbG9yLmlu
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjMwNTFERTAwQTM0MUQzMjRGQTE3MTQ0
IC8qIFR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFR5cGVzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRjM3MEU2QkRFQTFGMDNCNkJFQkRCM0ZFIC8qIFN1cmZhY2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU3VyZmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
M0NBQUExMjMxRDEwRDRCRERCQzQ3NUMgLyogc3RyaW5nX3V0aWxzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IHN0cmluZ191dGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGM0Y2OUIwOTM0
Mzg2Q0FBRTMyMDgxRDggLyogU2hhZGVyVmFycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFk
ZXJWYXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQxQjJERTAwMzJBMjlF
NDczMzNEMDEwIC8qIElPU3VyZmFjZS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IElPU3Vy
ZmFjZS5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0lPU3VyZmFj
ZS5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworCQlGNDI5MTQ5RENCQzIyRTU4
Q0I5MTRGNEIgLyogUXVlcnlOVUxMLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1ZXJ5TlVMTC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDhFRjlCN0QzMDlDRDE1OEJCNDVEQkMgLyogRGlh
Z25vc3RpY3NCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpYWdub3N0aWNzQmFzZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNTk2QzU1M0IzODNEOTAwMDk1NjlBMEQgLyogUmVnZW5l
cmF0ZVN0cnVjdE5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZ2VuZXJhdGVTdHJ1Y3ROYW1lcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNjM4OEE3NTQ1RTlDQkE0ODBGQzhENjYg
LyogQ29udGV4dE5VTEwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGV4dE5VTEwuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjZGRjg3RkE0QzJFQzBDOTMxQjE2OEQwIC8qIEV4cHJlc3Np
b25QYXJzZXIueSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUueWFjYzsgcGF0aCA9IEV4cHJlc3Npb25QYXJzZXIueTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjgyMkZCQzVGODVFRkM0MkVGOTlBNDk1IC8qIE1hY3JvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1hY3JvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY4
MkE2QTM1Qjg3NTU4QjA5REI1Q0MyOSAvKiBwbGF0Zm9ybS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBwbGF0
Zm9ybS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGOEQ2QUE4NjZCOUU3RTkwOUI3
RUJBNDUgLyogcmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gcmVzb3VyY2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkExMERGQTBFODY0M0Q0MDcyNjQ0MEVDIC8qIENvbXBpbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbXBpbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZBNTM4NEQ0MzEyNUY2NDJEOUVDRjE1OSAvKiBQcm9ncmFtTlVMTC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQcm9ncmFtTlVMTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQUY2QzAx
OTMwQzQxQjg0QjJFMjU2RTIgLyogU2hhZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQjlFNzZGMDkxOUIyQkVBNEFDOENBQkIgLyog
bG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBsb2Fk
X2Z1bmN0aW9uc190YWJsZV9hdXRvZ2VuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkJDQ0RDM0RDMTg4M0RBM0Q3MzcwQUY3IC8qIEZyYW1lYnVmZmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZyYW1lYnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZDNjk2QjBC
QzBEQzgwMjlBMTgzQzNGRSAvKiBiaXRzZXRfdXRpbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gYml0c2V0
X3V0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZDNkU3MDRGMzJENDg4RDVB
MTk1OUUyRSAvKiBkZWJ1Zy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBkZWJ1Zy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZDOTMxQzVGNEZBQUFEM0YyQkE5NTc3RiAvKiBnbG9i
YWxfc3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gZ2xvYmFsX3N0YXRlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkNDQzRFMjYxODVDMzdGN0NGREJFODZFIC8qIFZhbGlk
YXRlTWF4UGFyYW1ldGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWxpZGF0ZU1heFBhcmFtZXRlcnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkQzMTI2RkY5M0E0MjA0RjNFQUZBOTk1
IC8qIGxpYkVHTC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBsaWJFR0wuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRjA4NzQxMDk5QjJFNTVCRTRDOUJEQkUgLyogSW1hZ2VJbmRl
eC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUluZGV4LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKy8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKworLyogQmVn
aW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwN0MyQkY5RThGQUIwNEYw
Q0U3MzI0QzcgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWls
ZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAor
CQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9Owor
CQkxMDJDQ0Q1RTYxMDUyRkFBODE1RDlFNTQgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9
IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWZpbGVzID0gKAorCQkJCTNENERFQzY4MDBFODQ0NTM2Q0I4ODZFNiAvKiBsaWJHTEVT
djIuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJNDM0QThGMjE5MUE5RkI3REE2Q0E3RDg5IC8q
IEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJNjM1NjdCNjNF
RTBDNkVFM0YwNDBCNjc3IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxl
cyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
KwkJfTsKKwkJNkJDMzAxMzVGREJGNUY5M0Y0Q0Y4RkI5IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJ
CQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJQjExMzMxRTJGQkM5QUM1MjRGOTk1ODlBIC8qIEZy
YW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJQjI2NzJGQzMyOUUw
OTA1MTJBN0YwMDM2IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtz
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCQk4NTcwQ0JFRkYzQzUyQkY0QkYxMDBFMUEgLyogbGliQU5HTEUuYSBpbiBGcmFtZXdv
cmtzICovLAorCQkJCTI5QjVCMkE0N0E3OTAzQTkyOUEwMDUzQyAvKiBsaWJhbmdsZV9jb21tb24u
YSBpbiBGcmFtZXdvcmtzICovLAorCQkJCTYyNUM5MEFBNTVCNzdGREY2MDRFMUE4QSAvKiBsaWJ0
cmFuc2xhdG9yLmEgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlCMUFFOTNDNTVCMzE0OTY1OUI3REU5
OEIgLyogbGlicHJlcHJvY2Vzc29yLmEgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlDN0VBNjg4QjYy
NjE3RDQ5NjY0REQ0NzggLyogbGliYW5nbGVfaW1hZ2VfdXRpbC5hIGluIEZyYW1ld29ya3MgKi8s
CisJCQkJODhFNjc4RjE2RUY0NkY2REE4OUQ1OEY4IC8qIGxpYmFuZ2xlX2dwdV9pbmZvX3V0aWwu
YSBpbiBGcmFtZXdvcmtzICovLAorCQkJCUQ0QUE5MzA5NTExQUFDMzFFRDAzRTU5NyAvKiBDb2Nv
YS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlCMzMyOUExRkNDRDE1OUQ4NDdGQ0ZB
NzcgLyogSU9TdXJmYWNlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCTMzM0Q0RTU4
ODEzNjJDODJFRjA1QjQ3QiAvKiBPcGVuR0wuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJ
CQkJN0VFQzk5MEQ4RDU1QUM5MTA5N0EzRUQxIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZy
YW1ld29ya3MgKi8sCisJCQkJNDZFRjREN0Q5QTlDNUI0NEMzMUY0QjhBIC8qIElPS2l0LmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJCUNBRTg4MDMyRDBEODM1M0JEOTVGQjEyNyAvKiBD
b3JlRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJQ0JCQUY2MTlERjc4
M0RBMkZGOTU4NzhCIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtz
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJ
fTsKKwkJRDhDMUZCNkQ2QzA0OUFDQjFFNDY0MUNEIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlp
c2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJREJDRURFNDg3N0RBMUY0NkFCNEM2RkI5IC8qIEZyYW1l
d29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8K
KwkJMDhDMzBBRTZENDQxNkZBNDU4QUY3NzkyIC8qIHRyYW5zbGF0b3IgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUNEQzY5QUYzRjlDNTgyNjcyM0NFODJG
NyAvKiBBZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uLmNwcCAqLywKKwkJCQlCOEI2REU5QzFFREFD
NEI5QTNBQzY2REYgLyogQWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvbi5oICovLAorCQkJCUNFMTgx
QzU0ODMzRDJGNkZCMUE3RjhCRCAvKiBCYXNlVHlwZXMuaCAqLywKKwkJCQk0RjE1ODhBMTdCNjM3
RkVDOUE2OTU5QjAgLyogQnJlYWtWYXJpYWJsZUFsaWFzaW5nSW5Jbm5lckxvb3BzLmNwcCAqLywK
KwkJCQlDMzMyQzM5N0NEMUZDOTRFNUY1NUFCNDkgLyogQnJlYWtWYXJpYWJsZUFsaWFzaW5nSW5J
bm5lckxvb3BzLmggKi8sCisJCQkJN0NFMTEyNTQyMUJBODgzN0REMkMyMkY2IC8qIEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yLmNwcCAqLywKKwkJCQkxNDZCMTQzOUIzMEJCRTNFOTJEQ0RCRDcgLyog
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuaCAqLywKKwkJCQkxMEZDM0IyMEY2MzgwMUU3Q0JGRkVB
NzUgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmNwcCAqLywKKwkJCQk0MEU5QjNFNjg0
QTgzNzY3QUFCMDBDRDYgLyogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmggKi8sCisJCQkJ
RTQzMDc3OTI5Q0Q2MzE5NDk5NkUzMUNFIC8qIENhY2hlLmNwcCAqLywKKwkJCQk2NDRBQjlGQjc3
NDIyRkNBMDMwNzBDMTIgLyogQ2FjaGUuaCAqLywKKwkJCQkxODNBQzZFOEZGNDYyNDVDOUYxMDVB
QUIgLyogQ2FsbERBRy5jcHAgKi8sCisJCQkJRTE0QUMyQ0JDMkIwRjc0MzY2RTgzM0RGIC8qIENh
bGxEQUcuaCAqLywKKwkJCQlFQjE0RjZGNUQ5Q0I1QUJBNDYzODkzM0EgLyogQ29kZUdlbi5jcHAg
Ki8sCisJCQkJRTQxOEE3QkVFRDE5Q0Y1REI1QTRGRjZBIC8qIENvbW1vbi5oICovLAorCQkJCTI5
OTY1RjUyQjE0QTE0OTM5NDRFRjRDMyAvKiBDb21waWxlci5jcHAgKi8sCisJCQkJRUVEQTRGRkNE
QzA4OERDMkI5NzBEREZBIC8qIENvbXBpbGVyLmggKi8sCisJCQkJNkVCMjY1NDMxODJDNTAzQTM2
Q0U3MEQ3IC8qIENvbnN0YW50VW5pb24uY3BwICovLAorCQkJCTExRDNDNzQ2Q0EzMjVCMzNCNzFF
MzJCMiAvKiBDb25zdGFudFVuaW9uLmggKi8sCisJCQkJMUZFMTM1NkRBMTZDQjNDNTk4NUZDOEEz
IC8qIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmNwcCAqLywKKwkJCQk4Q0VFQkRGMkFFQzg5Qzk1
MDRBMEM2OEQgLyogRGVmZXJHbG9iYWxJbml0aWFsaXplcnMuaCAqLywKKwkJCQlFQkREN0VENkRB
RUQ3QjcyRDNGOTczMTggLyogRGlhZ25vc3RpY3MuY3BwICovLAorCQkJCTE4NkI4MTQzNDIxOTI1
Rjg4RDY2OTU0NCAvKiBEaWFnbm9zdGljcy5oICovLAorCQkJCTMxQ0ExNUJCRTA0OEVDN0IwNTgx
MTZEQSAvKiBEaXJlY3RpdmVIYW5kbGVyLmNwcCAqLywKKwkJCQk1RThENTE2QTcwNkQ5N0E1QTBB
NjdDNjAgLyogRGlyZWN0aXZlSGFuZGxlci5oICovLAorCQkJCTFGNjEyREUyRTNEOTEzMUM5MDND
ODM2MSAvKiBFbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3QuY3BwICovLAorCQkJCUExQ0Y4OURC
RjEyREVGQkZCODIwQTYyNCAvKiBFbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3QuaCAqLywKKwkJ
CQlEOERFNENBMDhEMjhDQTE1NzM5MzY1ODMgLyogRW11bGF0ZVByZWNpc2lvbi5jcHAgKi8sCisJ
CQkJODRDOEEzNzQwRUQ3MzU3M0IzNDExRDcwIC8qIEVtdWxhdGVQcmVjaXNpb24uaCAqLywKKwkJ
CQlBQTQ1MDQ4RUY3MTcxMTVBNkNCNkU1MEMgLyogRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25z
LmNwcCAqLywKKwkJCQlCNkI4MDBDQzcwNDZCN0Q2MDFERTQ3Q0YgLyogRXhwYW5kSW50ZWdlclBv
d0V4cHJlc3Npb25zLmggKi8sCisJCQkJNEZEQjE3NkYzQkE2NDhGQzhCQzE3OENCIC8qIEV4dGVu
c2lvbkJlaGF2aW9yLmggKi8sCisJCQkJNDVEREI5QUU3N0Q3M0E0MjUxOEVENzA1IC8qIEV4dGVu
c2lvbkdMU0wuY3BwICovLAorCQkJCTgxMDY3Q0NCNzlBOEUxQkIyQ0YyRjI4NSAvKiBFeHRlbnNp
b25HTFNMLmggKi8sCisJCQkJNTQ2RDZDQzZDRTZCMUIyQTE3NzJGRUJFIC8qIEZpbmRTeW1ib2xO
b2RlLmNwcCAqLywKKwkJCQkxRjIwMzI1NUQ0ODExNUE3NTUwQjAzMjcgLyogRmluZFN5bWJvbE5v
ZGUuaCAqLywKKwkJCQk4MDlEQTlGOEJDOTEwNkQ1MDczQjI0MjcgLyogRmxhZ1N0ZDE0MFN0cnVj
dHMuY3BwICovLAorCQkJCTBERjRBOTVDQzQxNTU4MDk1OUMwRTRFNiAvKiBGbGFnU3RkMTQwU3Ry
dWN0cy5oICovLAorCQkJCTM1MjRFNDAwNjgyODBFMUE5QUI0NzQ5RCAvKiBIYXNoTmFtZXMuaCAq
LywKKwkJCQk1QjJCQzc3MjgxMzNCOUNBQzIzRDA0N0UgLyogSW5mb1NpbmsuY3BwICovLAorCQkJ
CTAyQzdDQjY0RDkxMjk4MDI2MTE2MkU2MSAvKiBJbmZvU2luay5oICovLAorCQkJCTI3OTFGMDY1
NjI0MTkzRTg3NkFDMUQyRCAvKiBJbml0aWFsaXplLmNwcCAqLywKKwkJCQk2NDhGNjZBQTc4QUJF
NEFGMzUyNkNBMTEgLyogSW5pdGlhbGl6ZS5oICovLAorCQkJCUVBRThDNzI0NUNEQjUwODgzNThF
MkZFNSAvKiBJbml0aWFsaXplRGxsLmNwcCAqLywKKwkJCQk0QjNDQ0QxQkRCMDM2OUIzNTU1QTEz
MDUgLyogSW5pdGlhbGl6ZURsbC5oICovLAorCQkJCTcwNkU2MTkwQzk1MENCRThEM0Y5NDI5OSAv
KiBJbml0aWFsaXplR2xvYmFscy5oICovLAorCQkJCTZBNkYwRTE1NUQzRERFNDUxNUNBRDU3OCAv
KiBJbml0aWFsaXplVmFyaWFibGVzLmNwcCAqLywKKwkJCQlCMkJDMkY4MDM1QUM5RDk2OEJDQzU1
ODEgLyogSW5pdGlhbGl6ZVZhcmlhYmxlcy5oICovLAorCQkJCTRGOThFRDU5OTk0RDVBQzQ3ODFE
REUyNCAvKiBJbnRlcm1Ob2RlLmNwcCAqLywKKwkJCQk1MTg1NzUyMkU0ODY3QTIwOTA1NTIxQjMg
LyogSW50ZXJtTm9kZS5oICovLAorCQkJCTlCNzIwNjlCRjVBMzEwODM3OTkwRjU1NiAvKiBJbnRl
cm1UcmF2ZXJzZS5jcHAgKi8sCisJCQkJQjM4MTU3N0Y3OURDODM3Nzk3MUJDMzkwIC8qIEludGVy
bWVkaWF0ZS5jcHAgKi8sCisJCQkJRTM2NzhBMTdENTY1Nzk0NEFCOURFODU3IC8qIEludGVybWVk
aWF0ZS5oICovLAorCQkJCTA0NjZDQkMwMERENkJEREVGMDcwNUNDOSAvKiBOb2RlU2VhcmNoLmgg
Ki8sCisJCQkJNjdBNkIzOTQ3NDcxRDk5ODIwQjI1NjU1IC8qIE9wZXJhdG9yLmNwcCAqLywKKwkJ
CQk5NEY1RkMyNDEzREMwNjM4NjRFMTcwRTcgLyogT3BlcmF0b3IuaCAqLywKKwkJCQk1NzUwNTg4
Q0QzODZFMzM1REFFQzJFNzMgLyogT3V0cHV0RVNTTC5jcHAgKi8sCisJCQkJMkQ2RjI1MjUwRTJF
QzVGMTk5QUZBMTU4IC8qIE91dHB1dEVTU0wuaCAqLywKKwkJCQlFOEZGMDNBRUVCNEFCRkMwRTJD
RDE0NzcgLyogT3V0cHV0R0xTTC5jcHAgKi8sCisJCQkJMzM5MjE2QUI1RUQ0RjlFOURERUYyQjYw
IC8qIE91dHB1dEdMU0wuaCAqLywKKwkJCQlBQTc1QTBFQkJEMjMxNDhFNjNFREM1M0EgLyogT3V0
cHV0R0xTTEJhc2UuY3BwICovLAorCQkJCTVCRTBBRDg4Qzk4MkU4NzIyOEIzMDQ0MSAvKiBPdXRw
dXRHTFNMQmFzZS5oICovLAorCQkJCTYwQUY0Rjc1QUY3NkI4MDQzQTI5RTQyRiAvKiBQYXJzZUNv
bnRleHQuY3BwICovLAorCQkJCUExQ0I0QzUwODkwMjNENjgwODI2NTdCQSAvKiBQYXJzZUNvbnRl
eHQuaCAqLywKKwkJCQlFODQ3OTIwMzdGNEE2MTVENjYyM0NDM0IgLyogUG9vbEFsbG9jLmNwcCAq
LywKKwkJCQkxNEJERDREQkY3QkFCQzI5N0NCNUNFQkQgLyogUG9vbEFsbG9jLmggKi8sCisJCQkJ
MkQxNDQzQ0I3OTRCOTMyQjc0NzVBMEI4IC8qIFByYWdtYS5oICovLAorCQkJCTJDQjFBQjM1MjRE
QThCQjhDRjI3MUU2OCAvKiBQcnVuZUVtcHR5RGVjbGFyYXRpb25zLmNwcCAqLywKKwkJCQk3QThC
QUNDNDg3NkFFOTBDODQ0RUM0RjQgLyogUHJ1bmVFbXB0eURlY2xhcmF0aW9ucy5oICovLAorCQkJ
CTEzNTc5QjcyMDQ1RUVBQTM5NkY1ODM2NSAvKiBQcnVuZVB1cmVMaXRlcmFsU3RhdGVtZW50cy5j
cHAgKi8sCisJCQkJNzI1RDA2Q0U1OEE4NzE3OEVCMzJBM0E2IC8qIFBydW5lUHVyZUxpdGVyYWxT
dGF0ZW1lbnRzLmggKi8sCisJCQkJQzEzQTlGOEZCMURBOTEwN0VCQzNFMjA2IC8qIFF1YWxpZmll
clR5cGVzLmNwcCAqLywKKwkJCQk2NzMyQzZCQzMzQTgwRkEyQTZDRjg1MUUgLyogUXVhbGlmaWVy
VHlwZXMuaCAqLywKKwkJCQlBOTkyM0NDREY4NDk5QkZDQTQ5RDg4MDggLyogUmVjb3JkQ29uc3Rh
bnRQcmVjaXNpb24uY3BwICovLAorCQkJCUVCQzI3MThGQjcwN0JFMkVERjlBNTcyMCAvKiBSZWNv
cmRDb25zdGFudFByZWNpc2lvbi5oICovLAorCQkJCTY2QzgyQkY0RURFNkQ4M0Y2QkVBREZCMCAv
KiBSZWdlbmVyYXRlU3RydWN0TmFtZXMuY3BwICovLAorCQkJCUY1OTZDNTUzQjM4M0Q5MDAwOTU2
OUEwRCAvKiBSZWdlbmVyYXRlU3RydWN0TmFtZXMuaCAqLywKKwkJCQkyMjNEQjVDMEEyQ0NENEI2
MkVFMjY4OUQgLyogUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24uY3BwICovLAorCQkJCThFNjk4
MDQ1QkMyMkE4M0NFMDU0RjRCRSAvKiBSZW1vdmVJbnZhcmlhbnREZWNsYXJhdGlvbi5oICovLAor
CQkJCUVCNkUxMzM4MzA0NjQ3NDIxOEJEMTg5NCAvKiBSZW1vdmVQb3cuY3BwICovLAorCQkJCTMz
OUZGRjM3RkVGMzZCMDlCMUEyNkUwQyAvKiBSZW1vdmVQb3cuaCAqLywKKwkJCQlCMDg0NUNERTY0
NDUyRDVCN0I3MjE5NzcgLyogUmV3cml0ZURvV2hpbGUuY3BwICovLAorCQkJCTU4NERBRDQ1NUYw
NzdBQUMyREE0OThDRCAvKiBSZXdyaXRlRG9XaGlsZS5oICovLAorCQkJCTBBMUMxNTJBOEQ1NUY3
QzJCQkI5OUQ1RiAvKiBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5jcHAgKi8sCisJCQkJQjA5MDkx
RjcxNkVENkY2QzFERkE1QjkzIC8qIFJld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmggKi8sCisJCQkJ
MDhFRTY4NURDODcwMjAwNkYwQzc1RUM5IC8qIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9h
dC5jcHAgKi8sCisJCQkJMUQwRkQ1MDcxQkFFOUVCMDJFQ0Y5ODIxIC8qIFJld3JpdGVVbmFyeU1p
bnVzT3BlcmF0b3JGbG9hdC5oICovLAorCQkJCTFFNkQ2RTQzNTE4OUVGODE0MjBFQkQ0OCAvKiBS
ZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmNwcCAqLywKKwkJCQlBRkFFRDcxOTBDOTM1RUVB
ODc3NjdENTYgLyogUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5oICovLAorCQkJCUNEQjQ3
MDVFOEI0NjI5Mjg5RjRGOTdDNCAvKiBTY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3Mu
Y3BwICovLAorCQkJCTAyOEE0NDNDRDZEQzI1QkIyNTNEMTg5MyAvKiBTY2FsYXJpemVWZWNBbmRN
YXRDb25zdHJ1Y3RvckFyZ3MuaCAqLywKKwkJCQk0RTc0NEMzNTEyN0I4MURBNTE2RUNDNTkgLyog
U2VhcmNoU3ltYm9sLmNwcCAqLywKKwkJCQlDM0RGQUQ1OUU5QTQ4Q0UzQjkyNjM2NDYgLyogU2Vh
cmNoU3ltYm9sLmggKi8sCisJCQkJMkQ4RTc3RkEwRUE2NDdBREQ3RjUyMzA4IC8qIFNldmVyaXR5
LmggKi8sCisJCQkJNjk1REU3OEVFMkQ1QjMwRjI2MjgwRjgzIC8qIFNoYWRlckxhbmcuY3BwICov
LAorCQkJCUYzRjY5QjA5MzQzODZDQUFFMzIwODFEOCAvKiBTaGFkZXJWYXJzLmNwcCAqLywKKwkJ
CQk3NTA4OEYwODVGQzg0NzdCQ0VCOEM3NTEgLyogU3ltYm9sVGFibGUuY3BwICovLAorCQkJCTBB
MUNGRjg3MEQ4MEVBQTkzREFCMDA5QSAvKiBTeW1ib2xUYWJsZS5oICovLAorCQkJCUMzNzBBMURC
NEUxMkZDNzBGQ0JFNzBCNiAvKiBUcmFuc2xhdG9yRVNTTC5jcHAgKi8sCisJCQkJREUxM0Y0MEJG
MjlERkVEMzQ0QkVEOENEIC8qIFRyYW5zbGF0b3JFU1NMLmggKi8sCisJCQkJRTgyMzlGQTBFQUVE
MTc5NkYzRjRGRkZFIC8qIFRyYW5zbGF0b3JHTFNMLmNwcCAqLywKKwkJCQkxNUE1OEYyREU4ODkx
RUY3NzJBNzdBMTEgLyogVHJhbnNsYXRvckdMU0wuaCAqLywKKwkJCQlGMzA1MURFMDBBMzQxRDMy
NEZBMTcxNDQgLyogVHlwZXMuY3BwICovLAorCQkJCUVFNzUwNTM5NkNGRTYxMDY2MEI3ODFBNyAv
KiBUeXBlcy5oICovLAorCQkJCUU4MjIyOUY4NkVERUUwMjE2OTM4RDNBOSAvKiBVbmZvbGRTaG9y
dENpcmN1aXRBU1QuY3BwICovLAorCQkJCUI4ODI5OUZBOEZDQzhEN0MzMkM1REEyNyAvKiBVbmZv
bGRTaG9ydENpcmN1aXRBU1QuaCAqLywKKwkJCQkwQkE1NUJFMDQ4RDg4REE4OTY4Nzg5ODggLyog
VXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMuY3BwICovLAorCQkJCTIzMzM5RDkwMUYyRjc0N0I2OEM3
RUQ1QSAvKiBVc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcy5oICovLAorCQkJCUQ1NURGMkI2MUEzQjg2
MTQ3NkE0NjVERSAvKiBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmNwcCAqLywKKwkJCQkyMTc3
MjIwQzM2RTVGN0Y2NjdCOTIzNTkgLyogVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplci5oICovLAor
CQkJCUVDNTZDMTE3NjlDOTUwMzZFNEVENDczQiAvKiBWYWxpZGF0ZUxpbWl0YXRpb25zLmNwcCAq
LywKKwkJCQlCQzI1NTA4RDk1NUI0OThFOTdBOTcwNjggLyogVmFsaWRhdGVMaW1pdGF0aW9ucy5o
ICovLAorCQkJCTE2NkY5RkVCMDQ0MUVERjMzMTY0RjAwOCAvKiBWYWxpZGF0ZU1heFBhcmFtZXRl
cnMuY3BwICovLAorCQkJCUZDQ0M0RTI2MTg1QzM3RjdDRkRCRTg2RSAvKiBWYWxpZGF0ZU1heFBh
cmFtZXRlcnMuaCAqLywKKwkJCQkyNjQ2MzVBNTZGN0YxREQyRjgwOUQ3QjUgLyogVmFsaWRhdGVN
dWx0aXZpZXdXZWJHTC5jcHAgKi8sCisJCQkJNTRFMjIzREU0ODJBMDgzMUY4MEUyMDFBIC8qIFZh
bGlkYXRlTXVsdGl2aWV3V2ViR0wuaCAqLywKKwkJCQlDMEI3MTVENjhCMUU1MTVBNTY1QzUxQkYg
LyogVmFsaWRhdGVPdXRwdXRzLmNwcCAqLywKKwkJCQlCRkI5NzZBNEE4REE4QTBGOTVENDk1MTMg
LyogVmFsaWRhdGVPdXRwdXRzLmggKi8sCisJCQkJM0RFMzEwNTk5RkUwRDU5NEMyNzREMkUxIC8q
IFZhbGlkYXRlU3dpdGNoLmNwcCAqLywKKwkJCQlBMjI5OTdFMTA4MUVDREE1MDc3MDMwODMgLyog
VmFsaWRhdGVTd2l0Y2guaCAqLywKKwkJCQk5MTEyMzkyNzMzMThDMzZBNkJEQ0FBQzIgLyogVmFy
aWFibGVJbmZvLmNwcCAqLywKKwkJCQk3NEU2NUQ3NTgwNkZDMzlBRDQwOTYwMDAgLyogVmFyaWFi
bGVJbmZvLmggKi8sCisJCQkJNjJFMEU3MDk3N0ZDNzQ1MDBCNzI2RDA1IC8qIFZhcmlhYmxlUGFj
a2VyLmNwcCAqLywKKwkJCQk5MkEyMjRCQkE0NEQxNjdBQTNCNzMyQzMgLyogVmFyaWFibGVQYWNr
ZXIuaCAqLywKKwkJCQlBQjA0NzRGN0NDNjBFMzQ3Q0ZDREE3QTEgLyogVmVyc2lvbkdMU0wuY3Bw
ICovLAorCQkJCTNBRUMzNzJEODA3MzMyRkMyODZCRUQ5NSAvKiBWZXJzaW9uR0xTTC5oICovLAor
CQkJCUU5RENBMzQ2MDcxQjhCRjQ4OERFQjNENiAvKiBibG9ja2xheW91dC5jcHAgKi8sCisJCQkJ
MDMzOEVFMEEwREE0MzcyQjc2QjNDOUI0IC8qIGJsb2NrbGF5b3V0LmggKi8sCisJCQkJNUJDNjlB
Njc1RDZFMzlCRTdFQTA0NjU3IC8qIGdsc2xhbmcuaCAqLywKKwkJCQlFNzlDNjA2N0E2RDNENUI5
NjA1QkM3MDMgLyogZ2xzbGFuZy5sICovLAorCQkJCTMyMzQxMDBBOUY1RUQyOEQ4MzQwMjYzMSAv
KiBnbHNsYW5nLnkgKi8sCisJCQkJMjA5NUMxQ0NFQjBFRENGODcyMjNBQzY4IC8qIGdsc2xhbmdf
bGV4LmNwcCAqLywKKwkJCQk3RThENjNBNjY5NjA0RjRBNjc1NkM2OTkgLyogZ2xzbGFuZ190YWIu
Y3BwICovLAorCQkJCUJDRTUzMzNBMEE2NUZDMEE3RjY4QUU4MSAvKiBnbHNsYW5nX3RhYi5oICov
LAorCQkJCTQ2NDUxN0FGQzk0MkM1NEJCMDM4QTlCNSAvKiBpbnRlcm1PdXQuY3BwICovLAorCQkJ
CUQ0MDQ0MjcyQ0IwRDA5QTFGODM2RjlBOSAvKiBsZW5ndGhfbGltaXRzLmggKi8sCisJCQkJMzZC
RDMxQzQ4ODc1RTNGODk0NDNBQTJGIC8qIHV0aWwuY3BwICovLAorCQkJCUQ2QkVGMjg2QzM0RDND
MTNGN0IxQzlBNCAvKiB1dGlsLmggKi8sCisJCQkpOworCQkJcGF0aCA9IHRyYW5zbGF0b3I7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkwQUU0RDdBM0MxREMwNDVCNjhCRkM5
MzggLyogR0xFUzMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCThDQUU3Q0QwQTAwN0ZCNzhGOTExNUE5NSAvKiBnbDMuaCAqLywKKwkJCQk1NUQ0RTg5MTZD
QzdERUE2MjYzRjlGNjAgLyogZ2wzMS5oICovLAorCQkJCTFGRDI5MjVFQTlCNEM0OTJCNzlEQ0Q5
NyAvKiBnbDMyLmggKi8sCisJCQkJNEQ5Rjc0RDVGOEU4ODAxQzZEQTcxRDJGIC8qIGdsM3BsYXRm
b3JtLmggKi8sCisJCQkpOworCQkJcGF0aCA9IEdMRVMzOworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKKwkJMEQ1MkZCNzk3RDhDRUExMDNGREIzRjRDIC8qIHRyYWNlX2V2ZW50ICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlCQzQyRTAyQTE0
RjAyQjMzRDMxNjgxOTMgLyogdHJhY2VfZXZlbnQuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gdHJh
Y2VfZXZlbnQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkwREUzNDk2QzUx
OUI3MUZBQkMwOTREMTAgLyogY2dsICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQkxODVDQjJDRENDMkU1RUVFRUUzM0JDMTggLyogRGlzcGxheUNHTC5oICov
LAorCQkJCUU2REVGMDFBOEI1MUJENjBCQUE2NjY1OCAvKiBEaXNwbGF5Q0dMLm1tICovLAorCQkJ
CTU0NzVENzk1MzhDNzc4QTI2OUE0Qzc2NSAvKiBQYnVmZmVyU3VyZmFjZUNHTC5oICovLAorCQkJ
CUI3MUQ5MDIxNDBBNkEzMTAyN0VEOTg3RiAvKiBQYnVmZmVyU3VyZmFjZUNHTC5tbSAqLywKKwkJ
CQkyMDY4NTU5NTg2ODQzQkMyMkQ4RkI3NEMgLyogV2luZG93U3VyZmFjZUNHTC5oICovLAorCQkJ
CTlGOEZDREQ3OEU5MTY4MUUxM0IxN0JFRiAvKiBXaW5kb3dTdXJmYWNlQ0dMLm1tICovLAorCQkJ
KTsKKwkJCXBhdGggPSBjZ2w7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkx
QUY0RTRFNzgxRTU1MDMxOUJBNDZCRkMgLyogdGhpcmRfcGFydHkvbnVtZXJpY3MvYmFzZSAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNkVDOUM2QTIyM0Iz
OTEzRkM4QkM2MzlGIC8qIG51bWVyaWNzICovLAorCQkJCUUzN0RFRTA1RTVBQURENzE4MkEzNzVB
QSAvKiBsb2dnaW5nLmggKi8sCisJCQkpOworCQkJcGF0aCA9IHRoaXJkX3BhcnR5L251bWVyaWNz
L2Jhc2U7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkyRUQ1MUIyNEY0QkQ2
RTJBNEU1MTcxNkEgLyogcmVuZGVyZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCUVGNzNCMDQ3MUMzNzFCQUJCMjM3REIwMCAvKiBnbCAqLywKKwkJCQk0
MDU0NzAyQTAzMEMxQ0U3NEFERjEyODIgLyogbnVsbCAqLywKKwkJCQk2RjYyQjM0MzkyNjM2RDdC
QzhCQjEzOEIgLyogQnVmZmVySW1wbC5oICovLAorCQkJCTlFNTM1MDc1NThFMDI1RUEwMzlFRDkw
MiAvKiBDb21waWxlckltcGwuaCAqLywKKwkJCQkwOTMyQjc4OEJFQzUxREY2Q0E2RTNCRDUgLyog
Q29udGV4dEltcGwuY3BwICovLAorCQkJCURCNzRCOEZCRkNFMUQ2MzE3MUYyODk5MyAvKiBDb250
ZXh0SW1wbC5oICovLAorCQkJCTIyOEIyQTlCMEMxRTlGOTBGNjdGMDFFMiAvKiBEZXZpY2VJbXBs
LmNwcCAqLywKKwkJCQk1MjM0QTkzOEE4MDI1RTZGQTUyMTIxNUMgLyogRGV2aWNlSW1wbC5oICov
LAorCQkJCTdBQTNBRjc3OUEzOURFRjgzNDFCQjJBQyAvKiBEaXNwbGF5SW1wbC5jcHAgKi8sCisJ
CQkJOUU4MDcyODE0RTc5QzE5NUY2ODA3Qzg2IC8qIERpc3BsYXlJbXBsLmggKi8sCisJCQkJMzk1
QjA3QUE0RTEzRUEwN0M3OUU5NDRBIC8qIEVHTEltcGxGYWN0b3J5LmggKi8sCisJCQkJQTU2QjE3
RDVCODE3NkFBM0MwRkU0QkFBIC8qIEZlbmNlTlZJbXBsLmggKi8sCisJCQkJQkFFMkU3ODRDMDI3
MkEyOEYxNDJFNDgxIC8qIEZlbmNlU3luY0ltcGwuaCAqLywKKwkJCQk1NzVEQ0Y5OUVEOUU5NzFG
MzFGM0JFREMgLyogRm9ybWF0LmggKi8sCisJCQkJNkNEQTY0Q0VEN0NCNkZGRjk2RTlFN0MwIC8q
IEZvcm1hdF9JRF9hdXRvZ2VuLmlubCAqLywKKwkJCQlERDQ5OEMzQkM1M0Q4REM2MkJDOTRFN0Mg
LyogRm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwICovLAorCQkJCTlENDM4NzhCNEM5ODhCNTZBOEIy
Mzc2OCAvKiBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBsLmggKi8sCisJCQkJMkVEQTIw
OTAzRTMxRDY3N0FBN0E2MTFGIC8qIEZyYW1lYnVmZmVySW1wbC5oICovLAorCQkJCTBFNkNEMDU4
NUFCMjQ1Qzk3RThBOUQzMyAvKiBHTEltcGxGYWN0b3J5LmggKi8sCisJCQkJNzQ2RTZGOEZCQTZE
OUMzQTcxMDQ1OEFBIC8qIEltYWdlSW1wbC5oICovLAorCQkJCUU3M0NBNjk4NzczRkMwNUNFMTBE
QjE5OCAvKiBQcm9ncmFtSW1wbC5oICovLAorCQkJCUEwNTFFMUQ0NkYzMUZCMDNCQzEyNzIwNCAv
KiBRdWVyeUltcGwuaCAqLywKKwkJCQk3NUEyMjc2ODY0QzU4RjI0QTI0Mzc5NEMgLyogUmVuZGVy
YnVmZmVySW1wbC5oICovLAorCQkJCTQ1RkM3NkY5N0VBMThGRDhDQjg5NUJFNCAvKiBTYW1wbGVy
SW1wbC5oICovLAorCQkJCTUzQ0FCRDc1MDhFNzU0NDc2QTU4QzJBMCAvKiBTaGFkZXJJbXBsLmgg
Ki8sCisJCQkJNzBEMkM2MkQzMUYzMkIwMEQ1MjgwRkQwIC8qIFN0cmVhbVByb2R1Y2VySW1wbC5o
ICovLAorCQkJCTVDOTZDREE1OENDODU5NkRDNTIwN0VDOCAvKiBTdXJmYWNlSW1wbC5jcHAgKi8s
CisJCQkJOEI1QkFCNjQ5RjdDMjVBMUU2MDkyQzZFIC8qIFN1cmZhY2VJbXBsLmggKi8sCisJCQkJ
MzdBRUQzQzkxMkM4RUU4NzIyRjFGMTY3IC8qIFRleHR1cmVJbXBsLmNwcCAqLywKKwkJCQk4RDhC
REExRTRDMzZGMEVBMDY3NUJGOEIgLyogVGV4dHVyZUltcGwuaCAqLywKKwkJCQlERjhCMkU5NTIw
NjAwQzc0M0IwRDdBMzAgLyogVHJhbnNmb3JtRmVlZGJhY2tJbXBsLmggKi8sCisJCQkJNEE2QURD
QzUzQ0E5REYyNThFN0RDRUU1IC8qIFZlcnRleEFycmF5SW1wbC5oICovLAorCQkJCUI1RTNCRDY5
RkFERDU3Qzk3MzdDOTkxNiAvKiBkcml2ZXJfdXRpbHMuY3BwICovLAorCQkJCUJEQUZDRDk0RTdC
RjgzMUUyMDg3NERDMyAvKiBkcml2ZXJfdXRpbHMuaCAqLywKKwkJCQlEQThBNkJDMzAxOTlBQjc0
MzBBQTcxQzIgLyogbG9hZF9mdW5jdGlvbnNfdGFibGUuaCAqLywKKwkJCQlGQjlFNzZGMDkxOUIy
QkVBNEFDOENBQkIgLyogbG9hZF9mdW5jdGlvbnNfdGFibGVfYXV0b2dlbi5jcHAgKi8sCisJCQkJ
NzgzMDk1QjhCNDBERjc4M0VFQkIzQUE0IC8qIHJlbmRlcmVyX3V0aWxzLmNwcCAqLywKKwkJCQlC
OUU3QTcwMkQwMzJGQjk4QkQ1ODc3RjAgLyogcmVuZGVyZXJfdXRpbHMuaCAqLywKKwkJCSk7CisJ
CQlwYXRoID0gcmVuZGVyZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQkz
NTA2QkRGOTQ1MEYxRUY5MzA4RkY3NzkgLyogZ3B1X2luZm9fdXRpbCAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJOTdCNzVCMTI4MTgyQTMxQzdFRkU3RDcx
IC8qIFN5c3RlbUluZm8uY3BwICovLAorCQkJCTAxNzMxM0YzNjQ4MzVEMjc3MTJFMUNFNSAvKiBT
eXN0ZW1JbmZvLmggKi8sCisJCQkJNTZFRUU5RTJDQTJGOUZBODg2MDNDNjY0IC8qIFN5c3RlbUlu
Zm9faW50ZXJuYWwuaCAqLywKKwkJCQkzNDk3RUY2MkUwQzQwNEZDQUVFNUVCOEEgLyogU3lzdGVt
SW5mb19tYWMubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IGdwdV9pbmZvX3V0aWw7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk0MDU0NzAyQTAzMEMxQ0U3NEFERjEyODIgLyog
bnVsbCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJODgz
MDdDQjJGREM1QkQ2NjhBQTFGMzhEIC8qIEJ1ZmZlck5VTEwuY3BwICovLAorCQkJCTI1QUFENUI5
MjYwMkM5RTI3Q0Y3NkFGMyAvKiBCdWZmZXJOVUxMLmggKi8sCisJCQkJMTUyQjNFMEFCNTI3NTcx
MDE4Mzc5NTcwIC8qIENvbXBpbGVyTlVMTC5jcHAgKi8sCisJCQkJRDY5RDY0OENCNDMzRTFBNkI2
MjE5OEEzIC8qIENvbXBpbGVyTlVMTC5oICovLAorCQkJCTU4MENEQzlGMTZBRUFCQjYzRTg2MjEw
MCAvKiBDb250ZXh0TlVMTC5jcHAgKi8sCisJCQkJRjYzODhBNzU0NUU5Q0JBNDgwRkM4RDY2IC8q
IENvbnRleHROVUxMLmggKi8sCisJCQkJQjJCNkQ3QjVCNzQ3OUUwNDMxRTlBM0RBIC8qIERldmlj
ZU5VTEwuY3BwICovLAorCQkJCTRENDUwRTM1RTAwMDZFOTBFOUE3NEIzQSAvKiBEZXZpY2VOVUxM
LmggKi8sCisJCQkJMjRBNzc5MTkwQUJCOUMxMjBFQjY0NTEwIC8qIERpc3BsYXlOVUxMLmNwcCAq
LywKKwkJCQlBQkFDRjdGRDE2OUFEQkE5RTlBRjc0NzAgLyogRGlzcGxheU5VTEwuaCAqLywKKwkJ
CQlBNDA1QTlBRTE5MEFGNjQwRERCRUU1RjQgLyogRmVuY2VOVk5VTEwuY3BwICovLAorCQkJCTND
NzZEMTdCNDNERjU4OUFFQjI1QzUwQiAvKiBGZW5jZU5WTlVMTC5oICovLAorCQkJCUEzMkI4ODJF
NzBEQkFEMjUyQzAyRUYyNiAvKiBGZW5jZVN5bmNOVUxMLmNwcCAqLywKKwkJCQk4NzlEOTE0OUQ4
NDNGMjgwQUNGNUE5RTMgLyogRmVuY2VTeW5jTlVMTC5oICovLAorCQkJCUI5RUFDQkI4N0VERTVE
NkMwMzhBN0YxQSAvKiBGcmFtZWJ1ZmZlck5VTEwuY3BwICovLAorCQkJCTgwMDM2MDhCRjgyNjY0
MEQ5OThBNkUyMSAvKiBGcmFtZWJ1ZmZlck5VTEwuaCAqLywKKwkJCQlFQjA5QUE2RjQ2RjNDMkNG
Njg2NDg1NDkgLyogSW1hZ2VOVUxMLmNwcCAqLywKKwkJCQlCQjU4QzczOUIyQjVDQTIxMEU3RkM0
MzAgLyogSW1hZ2VOVUxMLmggKi8sCisJCQkJMjgwOUI2N0EwQTg0QzQ3RDYwNzU3RjlFIC8qIFBh
dGhOVUxMLmNwcCAqLywKKwkJCQlDOTVCRkU2NkNCRDc1RDAyMjU0RDZDNjUgLyogUGF0aE5VTEwu
aCAqLywKKwkJCQlCNzkwOUY2RTkxQzYzQUUwMTI4RTkwNzIgLyogUHJvZ3JhbU5VTEwuY3BwICov
LAorCQkJCUZBNTM4NEQ0MzEyNUY2NDJEOUVDRjE1OSAvKiBQcm9ncmFtTlVMTC5oICovLAorCQkJ
CTVEQjM2NDcwQjAzMTMyMUQzRjExQjJFNyAvKiBRdWVyeU5VTEwuY3BwICovLAorCQkJCUY0Mjkx
NDlEQ0JDMjJFNThDQjkxNEY0QiAvKiBRdWVyeU5VTEwuaCAqLywKKwkJCQkxNjFEOTgyQ0NCQkIz
OTcwNjQ0MUE3RjggLyogUmVuZGVyYnVmZmVyTlVMTC5jcHAgKi8sCisJCQkJNEJGMjRDNDYyMTAw
Mzc1Rjk4N0JBNEVEIC8qIFJlbmRlcmJ1ZmZlck5VTEwuaCAqLywKKwkJCQkzRTA3QzIzM0Y1MjFF
MTMxNEQ2MkI5NUIgLyogU2FtcGxlck5VTEwuY3BwICovLAorCQkJCTA2NkQ2OEQwQzE2NEFENjFB
MTVBNDI4NSAvKiBTYW1wbGVyTlVMTC5oICovLAorCQkJCTlENTkwREIxMzA0NDMwOTJCQUZBMDFF
NSAvKiBTaGFkZXJOVUxMLmNwcCAqLywKKwkJCQlENkRDMEQzQzQxMDUxMkY3NEQ5QzQyQUQgLyog
U2hhZGVyTlVMTC5oICovLAorCQkJCTYwMDA3NjQ3MjMxRDBCRTg1OEMzOEM4MCAvKiBTdXJmYWNl
TlVMTC5jcHAgKi8sCisJCQkJN0Y3NDNCNDRGREZFM0NGNzlGQzY4RUZGIC8qIFN1cmZhY2VOVUxM
LmggKi8sCisJCQkJNTNBQTc3NzJFMERBNzA5QzI2NTY4OUFEIC8qIFRleHR1cmVOVUxMLmNwcCAq
LywKKwkJCQlEN0IzODlCRTMyQUJCNTVBODAyREVERUIgLyogVGV4dHVyZU5VTEwuaCAqLywKKwkJ
CQk0OENEREE4REJDNUM1NTYyNjY4RDhEM0IgLyogVHJhbnNmb3JtRmVlZGJhY2tOVUxMLmNwcCAq
LywKKwkJCQk5MTM0NEVDNjU1ODk4RDEzMDgzNTQwQ0QgLyogVHJhbnNmb3JtRmVlZGJhY2tOVUxM
LmggKi8sCisJCQkJMjFDQjU3ODI1RkRGMjlDQzU5MDUyQUQxIC8qIFZlcnRleEFycmF5TlVMTC5j
cHAgKi8sCisJCQkJM0I1OERDMzgzRjA4MTI4NUIzNzlGNEI4IC8qIFZlcnRleEFycmF5TlVMTC5o
ICovLAorCQkJKTsKKwkJCXBhdGggPSBudWxsOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKKwkJNDhDNjk3Q0RFNDBDNjc0MkFFMUIxQzAyIC8qIFNvdXJjZSAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNENBNzkyRDkwRDI2MDdDM0UxMUU2
RTJEIC8qIC4uICovLAorCQkJCTcwODk5OEI1OEQ2MUE3QUUwNjNFNUE2MyAvKiBjb21tb24gKi8s
CisJCQkJQ0ZDNDlCMzA0RjNGRDU3NUFGMjNDNjdEIC8qIGNvbXBpbGVyICovLAorCQkJCTM1MDZC
REY5NDUwRjFFRjkzMDhGRjc3OSAvKiBncHVfaW5mb191dGlsICovLAorCQkJCUJERUJCM0Y5QUNB
MDJCQ0RGRDFGNkZEMSAvKiBpbWFnZV91dGlsICovLAorCQkJCTcxNjNDRDI5NTAyOEUxMEVDODQ1
QjI0QiAvKiBsaWJBTkdMRSAqLywKKwkJCQk2RjAzMURBMDU3MjA5NDYyQzQxM0I2NjIgLyogbGli
RUdMICovLAorCQkJCUUzRDJBODAxQkU4MDQ0MDdFREE1OEI2QSAvKiBsaWJHTEVTdjIgKi8sCisJ
CQkJNkM4MkIxOUY2NTY4MDAzNERFMkE1MzdCIC8qIHRoaXJkX3BhcnR5ICovLAorCQkJCTk0RjdC
MzBFQzFCRkFBQzYzREM0MzhBRCAvKiBjb21taXRfaWQucHkgKi8sCisJCQkJOUI5QkQ4MjFEN0M4
ODEwN0YwOURCMjcyIC8qIGNvcHlfY29tcGlsZXJfZGxsLmJhdCAqLywKKwkJCSk7CisJCQluYW1l
ID0gU291cmNlOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJNENBNzkyRDkw
RDI2MDdDM0UxMUU2RTJEIC8qIC4uICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQlDRDFENEY2RDYwQzcyREU4OEZENTkzNUIgLyogLmdpdCAqLywKKwkJCQk5
OUEyQjdCQTQ2M0NDMjQ4QjE4Nzk3RDkgLyogaW5jbHVkZSAqLywKKwkJCSk7CisJCQlwYXRoID0g
Li47CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk1RDUwOUMyREI0NzFFOTlE
NTAwRDI3MjYgPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTQ4
QzY5N0NERTQwQzY3NDJBRTFCMUMwMiAvKiBTb3VyY2UgKi8sCisJCQkJN0U2NjdCMTU4RTZFNDYw
RjI5NUYzRTA3IC8qIEludGVybWVkaWF0ZXMgKi8sCisJCQkJOEYwRENDOENGMzk2QkZBNUY5MUJE
MjIzIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJQUQ1NTVDOEU5M0UxNjAwOEZFOTY1MDMwIC8qIFBy
b2R1Y3RzICovLAorCQkJCTk0QjE2M0M5NEY5MzU5N0ZDMDcwQjFENSAvKiBCdWlsZCAqLywKKwkJ
CSk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk1RUIyRjAwNTI4MUIwMzdG
NUY2OEJDNzIgLyogaWQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTA3NTAwN0E2NzQ1MEY4QjU3RDRGNDBDQyAvKiBjb21taXQuaCAqLywKKwkJCSk7CisJ
CQlwYXRoID0gaWQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2NzQ3NTYx
RDdEMzIyNDA3MzFFOUQ3NUEgLyogcGxhdGZvcm0gKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTk4QjlDOTEzMzNCQjYzMjUyNkVCNUUxMiAvKiBQbGF0Zm9y
bS5oICovLAorCQkJCUVBRkMyOEZFNEZBODY2Q0YzQTgxMjU5MCAvKiBXb3JrYXJvdW5kc0QzRC5o
ICovLAorCQkJKTsKKwkJCXBhdGggPSBwbGF0Zm9ybTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CisJCTZDODJCMTlGNjU2ODAwMzRERTJBNTM3QiAvKiB0aGlyZF9wYXJ0eSAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRjk4Njk4OTREMzk1
QUFFODdDOUI4MjBCIC8qIGNvbXBpbGVyICovLAorCQkJCUE2Qjg0QTdEOTUyMTVBRDEyMzUwNzdG
OSAvKiBtdXJtdXJoYXNoICovLAorCQkJCTBENTJGQjc5N0Q4Q0VBMTAzRkRCM0Y0QyAvKiB0cmFj
ZV9ldmVudCAqLywKKwkJCSk7CisJCQlwYXRoID0gdGhpcmRfcGFydHk7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OworCQk2RUM5QzZBMjIzQjM5MTNGQzhCQzYzOUYgLyogbnVtZXJp
Y3MgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTFGNTNF
RTI4NUNCMTU3MkVCNDAzOUEwNyAvKiBzYWZlX2NvbnZlcnNpb25zLmggKi8sCisJCQkJQ0M1NTVC
MDJDRDYwRDM1MjFGOEJFQ0ZEIC8qIHNhZmVfY29udmVyc2lvbnNfaW1wbC5oICovLAorCQkJCTVG
NkExMDdFNDQyOUY4MDFFRENCQTdFOCAvKiBzYWZlX21hdGguaCAqLywKKwkJCQlFMUVEMEIxM0I4
OTU3NUE1OEEwNURFNjQgLyogc2FmZV9tYXRoX2ltcGwuaCAqLywKKwkJCSk7CisJCQlwYXRoID0g
bnVtZXJpY3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk2RjAzMURBMDU3
MjA5NDYyQzQxM0I2NjIgLyogbGliRUdMICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQlj
aGlsZHJlbiA9ICgKKwkJCQlGRDMxMjZGRjkzQTQyMDRGM0VBRkE5OTUgLyogbGliRUdMLmNwcCAq
LywKKwkJCQkzQkY0REQxRUEzNTlGNDhFRkFDNThDOEUgLyogbGliRUdMLmRlZiAqLywKKwkJCQkw
QTA1RDEzMTBEOTdFNzg5ODFFMzZFMUYgLyogbGliRUdMLnJjICovLAorCQkJCTU4NzdDMjQ2MDIw
Qjc3RTZEQTYxQTQ1MCAvKiByZXNvdXJjZS5oICovLAorCQkJKTsKKwkJCXBhdGggPSBsaWJFR0w7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk3MDg5OThCNThENjFBN0FFMDYz
RTVBNjMgLyogY29tbW9uICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQkxQUY0RTRFNzgxRTU1MDMxOUJBNDZCRkMgLyogdGhpcmRfcGFydHkvbnVtZXJpY3Mv
YmFzZSAqLywKKwkJCQkxNjk2MTYyNTg4RDVCQzczMTdFNDk0NEEgLyogQ29sb3IuaCAqLywKKwkJ
CQlGMjlDRkIwRjVBOUZDMUU4Q0JGNEY5MUQgLyogQ29sb3IuaW5sICovLAorCQkJCTg5NjY0MkU0
RjczREM1QzZDRDE3QTk0NiAvKiBGbG9hdDE2VG9GbG9hdDMyLmNwcCAqLywKKwkJCQkzMEU0MjlB
NDM1Q0ZFREUxOTU3MDJGRTcgLyogTWVtb3J5QnVmZmVyLmNwcCAqLywKKwkJCQk0RjQwOEU1Nzcz
NEIxNjA5REY1QTczRkIgLyogTWVtb3J5QnVmZmVyLmggKi8sCisJCQkJMDdENzZEODUyREIxNDM0
MDA1OUEzRjMxIC8qIE9wdGlvbmFsLmggKi8sCisJCQkJMzBCOTUwNTY1NkRCODNDOEUwQkFDQzQ5
IC8qIGFuZ2xldXRpbHMuY3BwICovLAorCQkJCTA3MTcyRDE2Njg1NjhENzQxOUVGRDlBNiAvKiBh
bmdsZXV0aWxzLmggKi8sCisJCQkJRkM2OTZCMEJDMERDODAyOUExODNDM0ZFIC8qIGJpdHNldF91
dGlscy5oICovLAorCQkJCUZDNkU3MDRGMzJENDg4RDVBMTk1OUUyRSAvKiBkZWJ1Zy5jcHAgKi8s
CisJCQkJQzk5QURFN0EzRjU0M0I4RUIzRkZDMzBGIC8qIGRlYnVnLmggKi8sCisJCQkJNDA2MjVB
MjRBRUVGRjM2QUQzNTI0Q0QwIC8qIGV2ZW50X3RyYWNlci5jcHAgKi8sCisJCQkJRDFFMDlENTlF
QTcxNkIyMUE5RkFBNjUyIC8qIGV2ZW50X3RyYWNlci5oICovLAorCQkJCTgwOTU1ODE4QkVDQ0I2
NzRGQUM0QjMxNyAvKiBtYXRodXRpbC5jcHAgKi8sCisJCQkJODAwNjk0QjVERDMxMTlDQTJEMUJF
MUI2IC8qIG1hdGh1dGlsLmggKi8sCisJCQkJMzMwRjA0N0Q4MkQ3RjU1MkYzMEI4NDQxIC8qIG1h
dHJpeF91dGlscy5oICovLAorCQkJCUY4MkE2QTM1Qjg3NTU4QjA5REI1Q0MyOSAvKiBwbGF0Zm9y
bS5oICovLAorCQkJCThGQ0VGRTQ3REI5OTc3QzlEQUU2OUI2QSAvKiBzdHJpbmdfdXRpbHMuY3Bw
ICovLAorCQkJCUYzQ0FBQTEyMzFEMTBENEJEREJDNDc1QyAvKiBzdHJpbmdfdXRpbHMuaCAqLywK
KwkJCQkwNjMzNkJEQzlBMDVGQzZBMDI3MTcxQjUgLyogc3lzdGVtX3V0aWxzX21hYy5jcHAgKi8s
CisJCQkJNkNEODQ5OUM3Q0FFQ0Q3MTc3MzhCQTBDIC8qIHRscy5jcHAgKi8sCisJCQkJQTk0NkE0
RDE5NEYwQkI2NzM1QUM5OTJBIC8qIHRscy5oICovLAorCQkJCUUwMDFGRUFCMzc3RjM2NTE2Rjkz
ODQ3NSAvKiB1dGlsaXRpZXMuY3BwICovLAorCQkJCTNBNDkyQjNDRDA0MTA4QzczRjQ2MjBEQyAv
KiB1dGlsaXRpZXMuaCAqLywKKwkJCQkyREFFODJEQjAzNTM1QTQ4N0U4OTVDNzQgLyogdmVjdG9y
X3V0aWxzLmggKi8sCisJCQkJM0NDMzNCRUNCQUFFODM0RjZDRkJCRkVCIC8qIHZlcnNpb24uaCAq
LywKKwkJCSk7CisJCQlwYXRoID0gY29tbW9uOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKKwkJNzE2M0NEMjk1MDI4RTEwRUM4NDVCMjRCIC8qIGxpYkFOR0xFICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkyRUQ1MUIyNEY0QkQ2RTJBNEU1
MTcxNkEgLyogcmVuZGVyZXIgKi8sCisJCQkJNTYzOTYyQjlENTRFREU2RDI3NTY5QTE5IC8qIEF0
dHJpYnV0ZU1hcC5jcHAgKi8sCisJCQkJRTE0QjJBRjA5NzhDRkY2NDYyOEI4RDgyIC8qIEF0dHJp
YnV0ZU1hcC5oICovLAorCQkJCTY2RjhENjUyREYzRDM0REY4NjVBRDYxNCAvKiBCaW5hcnlTdHJl
YW0uaCAqLywKKwkJCQkzMTVDRTVFMEEwRDA4NUE4REMxNjVCMEMgLyogQnVmZmVyLmNwcCAqLywK
KwkJCQkxM0JBNDAzQzQzNENENUI3Mjg4OEUwNTggLyogQnVmZmVyLmggKi8sCisJCQkJMkJFNTFF
NUUzN0RDOTBEMjJGMjNFQ0JGIC8qIENhcHMuY3BwICovLAorCQkJCTA2QTg2RjUwN0IyRkQ5NTU1
NzY0RjZENSAvKiBDYXBzLmggKi8sCisJCQkJNzMxNjRFNDJCOEQ4OEM1QjkxNDg5MkYxIC8qIENv
bXBpbGVyLmNwcCAqLywKKwkJCQlGQTEwREZBMEU4NjQzRDQwNzI2NDQwRUMgLyogQ29tcGlsZXIu
aCAqLywKKwkJCQkwMTgzQTU2MzYwQkY4QUQ4NUY0OTUwMDUgLyogQ29uZmlnLmNwcCAqLywKKwkJ
CQkxREU4MzY4Rjk1QUE4RTg4MDkzRjBGOEQgLyogQ29uZmlnLmggKi8sCisJCQkJNTg1OTY5MUY4
MTM3QTczQzBDQjRBQjU5IC8qIENvbnN0YW50cy5oICovLAorCQkJCTY2RUQ2NkNDMDM3NEM5M0Qy
NUE3QTlDNiAvKiBDb250ZXh0LmNwcCAqLywKKwkJCQlEMjQzM0JCMEY1MDI4MDk3MEMwNTdFNTkg
LyogQ29udGV4dC5oICovLAorCQkJCTRDNEUyMUU5Mzk4MkRFQ0I1MEQ5QTI5MCAvKiBDb250ZXh0
U3RhdGUuY3BwICovLAorCQkJCUYyNkRENkUzRDA3RDM2RDI1MzlDQkU5RSAvKiBDb250ZXh0U3Rh
dGUuaCAqLywKKwkJCQk0QjFBRTZENEJGNDBGNEUxNDlFOUMxNTggLyogRGVidWcuY3BwICovLAor
CQkJCUJFMzRCQjdFRDc2RUZEMTk0ODM1ODAyRSAvKiBEZWJ1Zy5oICovLAorCQkJCUIyRUNEQzAw
OTQyOUNDOUNFN0ZGQUYyRiAvKiBEZXZpY2UuY3BwICovLAorCQkJCTMzRTg5REI2OTgyMjZBOTI0
NDQzQkIyMiAvKiBEZXZpY2UuaCAqLywKKwkJCQk0OEE2RjQ4NjlERjFEMTY3MUZCRTM2RjMgLyog
RGlzcGxheS5jcHAgKi8sCisJCQkJRUY4Q0JCQ0MzMDQ5RDRGQTUyMEVCRThEIC8qIERpc3BsYXku
aCAqLywKKwkJCQk1REFGNTM3Mjg0NTg1MzRDRDAwODU5MjggLyogRXJyb3IuY3BwICovLAorCQkJ
CUMwNzQzOURENEM3QTMyQjhFQTZEQTEzOSAvKiBFcnJvci5oICovLAorCQkJCTJGQkVCQjkwNDA3
OERDQUYyNEIzODI2MSAvKiBFcnJvci5pbmwgKi8sCisJCQkJRUNCREVDRTc0QzNDNDhDMDJCNjZE
QjY4IC8qIEZlbmNlLmNwcCAqLywKKwkJCQlENzU1MDZDNTRBREU1QTY5MzJBQTFCRjMgLyogRmVu
Y2UuaCAqLywKKwkJCQlCRkY0M0MyNjdGNDJFNERGRTI3Mjg3RDQgLyogRnJhbWVidWZmZXIuY3Bw
ICovLAorCQkJCUZCQ0NEQzNEQzE4ODNEQTNENzM3MEFGNyAvKiBGcmFtZWJ1ZmZlci5oICovLAor
CQkJCTU3RTIzNDZFQjBGRUZFNkM2N0JBQzdFNyAvKiBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQuY3Bw
ICovLAorCQkJCTYzNzQzNTc3NjhFNkFCMUE0OEJFNDA5MiAvKiBGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQuaCAqLywKKwkJCQlCQzI1MkRGNDA0QThGNDI4MUY1MjZFMEYgLyogSGFuZGxlQWxsb2NhdG9y
LmNwcCAqLywKKwkJCQk0RDJENEE1NEM1MUIyNzQ0RjIwRTQ3MDMgLyogSGFuZGxlQWxsb2NhdG9y
LmggKi8sCisJCQkJQjEwRkNENzk3NkU3OUIwMjlCRDNFNTZFIC8qIEhhbmRsZVJhbmdlQWxsb2Nh
dG9yLmNwcCAqLywKKwkJCQkzNkUxRDRCMkY0RkUxRTNDN0MxNTEwMzQgLyogSGFuZGxlUmFuZ2VB
bGxvY2F0b3IuaCAqLywKKwkJCQkxNkIzOEIyRjc3QkMyRUExNEVCOUY3OTMgLyogSW1hZ2UuY3Bw
ICovLAorCQkJCUNENzY4MkMxRkQxNDQ5NDREM0U3QzcyNSAvKiBJbWFnZS5oICovLAorCQkJCUZG
MDg3NDEwOTlCMkU1NUJFNEM5QkRCRSAvKiBJbWFnZUluZGV4LmNwcCAqLywKKwkJCQkxNDMwMjBE
NTFGRkZGMkExODM0MzU1QkIgLyogSW1hZ2VJbmRleC5oICovLAorCQkJCUE3NTAyREE3NTU2REI2
RkE0MjU1NUQ4NSAvKiBJbmRleFJhbmdlQ2FjaGUuY3BwICovLAorCQkJCTRCMzczN0UwNjk0Qzg4
OUU0Nzc2MDVBOSAvKiBJbmRleFJhbmdlQ2FjaGUuaCAqLywKKwkJCQlFMUY0MzdCODE3ODM3RjFB
RUEyMjRFMDAgLyogTG9nZ2luZ0Fubm90YXRvci5jcHAgKi8sCisJCQkJMURGNjg4Q0U0NUEyRDc4
RDdEQjFDODZGIC8qIExvZ2dpbmdBbm5vdGF0b3IuaCAqLywKKwkJCQkyMUJCNzdDN0NDQ0Y5QTA2
NUZCM0NBQTMgLyogUGF0aC5jcHAgKi8sCisJCQkJN0VGOTRFOTE5MDJGNEVCMjJDRkZFMjAwIC8q
IFBhdGguaCAqLywKKwkJCQkzMDMwNzM2OTIyQkExQzk1RDgzRUI2MkMgLyogUGxhdGZvcm0uY3Bw
ICovLAorCQkJCTAxQkRBMUU5REM2MTdFRkY2MDY2QUM4MCAvKiBQcm9ncmFtLmNwcCAqLywKKwkJ
CQlCMDY5NTU1OTc4RTRDRjAyMDUzOERCRjggLyogUHJvZ3JhbS5oICovLAorCQkJCTU1NTFGMEUz
ODFFREQ0NjQ4NDk5NDlCRiAvKiBRdWVyeS5jcHAgKi8sCisJCQkJQkY0MzhGMTk1MzQyMDBFMDIw
OEQ0MDMzIC8qIFF1ZXJ5LmggKi8sCisJCQkJREJBRjFBMjhGM0IwRDVGNzBEM0E5MDU5IC8qIFJl
ZkNvdW50T2JqZWN0LmggKi8sCisJCQkJQjZFRTVDRDVBMUYyMzBCNzFBN0UxQTUxIC8qIFJlbmRl
cmJ1ZmZlci5jcHAgKi8sCisJCQkJRUQ1OEVBRDhDMzg3OEVBNTQ3QTBEQkFFIC8qIFJlbmRlcmJ1
ZmZlci5oICovLAorCQkJCTg5RTY5QjkyOTBFOTg4RkY1QTNDQTk3MiAvKiBSZXNvdXJjZU1hbmFn
ZXIuY3BwICovLAorCQkJCTJBQjNENDQ0NEQzQTdCQTQ5NDA4NzJCMCAvKiBSZXNvdXJjZU1hbmFn
ZXIuaCAqLywKKwkJCQk0RDBFOTU2NEVGRDAwNTRFRTEzRTQxNEMgLyogU2FtcGxlci5jcHAgKi8s
CisJCQkJQTg5MjAzQjIwOTdERkI1Q0IyODcwMDMzIC8qIFNhbXBsZXIuaCAqLywKKwkJCQk3MjRG
MzkyMkRCNEMzMDI1NjQ0NTJBODkgLyogU2hhZGVyLmNwcCAqLywKKwkJCQlGQUY2QzAxOTMwQzQx
Qjg0QjJFMjU2RTIgLyogU2hhZGVyLmggKi8sCisJCQkJQ0Q5NjM1Q0M3RENDNTY5OUJCMTg4NEZE
IC8qIFN0YXRlLmNwcCAqLywKKwkJCQk5Q0YxN0UyNDJGMUE5ODFGNTU2MTUxQjcgLyogU3RhdGUu
aCAqLywKKwkJCQk4OTA1QkY3NEFDNEI2NUZGQjg4MzVFOUMgLyogU3RyZWFtLmNwcCAqLywKKwkJ
CQkxNjhFQ0FGNzhDMDQyOUFEQkUxRTYyRDYgLyogU3RyZWFtLmggKi8sCisJCQkJMzA0NzZDNUJC
MzBFNTZERjVEQkJGNkFCIC8qIFN1cmZhY2UuY3BwICovLAorCQkJCUYzNzBFNkJERUExRjAzQjZC
RUJEQjNGRSAvKiBTdXJmYWNlLmggKi8sCisJCQkJQ0M4QjlBODQ4RUMzMTBGNkU1N0VBNUQ4IC8q
IFRleHR1cmUuY3BwICovLAorCQkJCTg1Qjg4NEVDQzg3RkI0QjA2MUY5NDI2OCAvKiBUZXh0dXJl
LmggKi8sCisJCQkJNTVFRkY5RTZFQzc2MDMyQzY0Q0ZEMDBDIC8qIFRocmVhZC5jcHAgKi8sCisJ
CQkJMTMzNThCNEQ4MDVDNEJBMTM2QjY2NTUyIC8qIFRocmVhZC5oICovLAorCQkJCUJCMkIyQzg4
OUY3M0VGQzEyRkM0Njg5NCAvKiBUcmFuc2Zvcm1GZWVkYmFjay5jcHAgKi8sCisJCQkJQTFFMjhB
NzY4MTUwNDIyOTlEN0IyRTRFIC8qIFRyYW5zZm9ybUZlZWRiYWNrLmggKi8sCisJCQkJNDA1OTFD
MzM2ODFEQTVBQkE0RjFGQkVDIC8qIFVuaWZvcm0uY3BwICovLAorCQkJCTU2NTYzOUVEMEU4ODMx
MzI5QjU2ODNFRCAvKiBVbmlmb3JtLmggKi8sCisJCQkJQ0IxQzM5NEI1NEI3REMxQTJDMDRGNzdC
IC8qIFVuaWZvcm1MaW5rZXIuY3BwICovLAorCQkJCTk1OEVFNDEzNEU0QzU3MEQ1M0U4MjcwRSAv
KiBVbmlmb3JtTGlua2VyLmggKi8sCisJCQkJMTczQjZEN0M4OEM0MURGQzQ4OTFFMTZEIC8qIFZh
cnlpbmdQYWNraW5nLmNwcCAqLywKKwkJCQkyNDNFNTY4QTY2NUNBQTc4Q0M5RUJDOUIgLyogVmFy
eWluZ1BhY2tpbmcuaCAqLywKKwkJCQlFOTk2MDhCOTY5MDNEQzc0RTdGMTE0MzUgLyogVmVyc2lv
bi5oICovLAorCQkJCTlBOTA3NjIyQjgxNzIxQTZBQUUwMDAwMyAvKiBWZXJzaW9uLmlubCAqLywK
KwkJCQkwMDU5NEY1ODAyMEQ4MkM4ODFFQjlCQjYgLyogVmVydGV4QXJyYXkuY3BwICovLAorCQkJ
CTZGRkMwRUE0RUU3OUE4MENGNkQ3M0EwNCAvKiBWZXJ0ZXhBcnJheS5oICovLAorCQkJCTAxMUQx
NDkzMzU4ODg3NDYyNjM0MkRFRCAvKiBWZXJ0ZXhBdHRyaWJ1dGUuY3BwICovLAorCQkJCTdGMjhC
ODgyMTdCNkMyODQ1RThDMjdBOSAvKiBWZXJ0ZXhBdHRyaWJ1dGUuaCAqLywKKwkJCQk1RTFDMTA4
RTdFRjdDRDI3OEIwODJBOUEgLyogVmVydGV4QXR0cmlidXRlLmlubCAqLywKKwkJCQlBQzM2RjlB
RDNCMDk2RTE5N0M2ODk0OUUgLyogV29ya2VyVGhyZWFkLmNwcCAqLywKKwkJCQlCODY0ODQ3NThC
RjVEMjUxNEMyMjdDODkgLyogV29ya2VyVGhyZWFkLmggKi8sCisJCQkJNDFFMkJEMDJDNjcxNjY0
NUI2REIyNEMyIC8qIGFuZ2xldHlwZXMuY3BwICovLAorCQkJCTIzMUI0OUE2Qjk3QkZCMzA3Q0Yz
MjAyMSAvKiBhbmdsZXR5cGVzLmggKi8sCisJCQkJRUIxMzNCNDg0RjI3MEMyM0FDRUFERTAzIC8q
IGFuZ2xldHlwZXMuaW5sICovLAorCQkJCTFCQ0I5QjM4OTU5NDRFQjI4NDMyNDQwMyAvKiBlczNf
Y29weV9jb252ZXJzaW9uX3RhYmxlX2F1dG9nZW4uY3BwICovLAorCQkJCUVBOUFFRUE0QkNBODM5
NDRCRTgzMkRFNCAvKiBmZWF0dXJlcy5oICovLAorCQkJCTM4OTRGQjhBMjIwODVFOUYwNEM2RjEx
MiAvKiBmb3JtYXRfbWFwX2F1dG9nZW4uY3BwICovLAorCQkJCTNEOEI4M0NDQTEyREU4NjdBQkU4
MjZDNSAvKiBmb3JtYXR1dGlscy5jcHAgKi8sCisJCQkJQTZDMkYxNTJFNjdERDEyMkM3QzZFOTE1
IC8qIGZvcm1hdHV0aWxzLmggKi8sCisJCQkJNTg2RUUwRDJGQkZDRDNEQzY3OEFERjBEIC8qIGhp
c3RvZ3JhbV9tYWNyb3MuaCAqLywKKwkJCQkzQ0EwRkJGMDc3MEREODkwNEY3NDlBNjcgLyogcXVl
cnljb252ZXJzaW9ucy5jcHAgKi8sCisJCQkJNjFDODgyNTUyRkUyMDc3OEVBMTJGRUY0IC8qIHF1
ZXJ5Y29udmVyc2lvbnMuaCAqLywKKwkJCQk2MjA3MEFDQTY5OTA2OTgzODMxREY0NEMgLyogcXVl
cnl1dGlscy5jcHAgKi8sCisJCQkJMjQ4QTM3NTk3NEFENEVGRDAxNkQxREMzIC8qIHF1ZXJ5dXRp
bHMuaCAqLywKKwkJCQkyREVDMEE4QkVBODBDRTRCQzJDNkE3MDggLyogc2lnbmFsX3V0aWxzLmgg
Ki8sCisJCQkJM0Y0NDA1NTg0RjY2OUJBQTJFMkIxODE5IC8qIHZhbGlkYXRpb25FR0wuY3BwICov
LAorCQkJCTMwODYxNzEyQjZDOUI2Njc4NTlBNTMzOCAvKiB2YWxpZGF0aW9uRUdMLmggKi8sCisJ
CQkJOTAzODhBNzZCRDQyRTE1NUIxNEMyMjIyIC8qIHZhbGlkYXRpb25FUy5jcHAgKi8sCisJCQkJ
OUM5MDVBMzcxNDk4M0I1RDg1Qzg5MDIyIC8qIHZhbGlkYXRpb25FUy5oICovLAorCQkJCUIxMDI2
NEU5QTBDNzYxQTlCOEY2MzRGRSAvKiB2YWxpZGF0aW9uRVMyLmNwcCAqLywKKwkJCQlEMzlGREZE
MjlFQTdBQjAyREY3MDk5RjMgLyogdmFsaWRhdGlvbkVTMi5oICovLAorCQkJCTBGNEUxOUUxMjZG
MzU3NDkwM0MxOEMyMyAvKiB2YWxpZGF0aW9uRVMzLmNwcCAqLywKKwkJCQkwNTZDNUM1QUU3Njc5
QUVBREM1RjYzM0EgLyogdmFsaWRhdGlvbkVTMy5oICovLAorCQkJCTRCNUEwRDZFMUM2NjgyRTM4
Qjc4ODI4QyAvKiB2YWxpZGF0aW9uRVMzMS5jcHAgKi8sCisJCQkJMUVFREEwRUIzRDBDMDlFNkQz
QTI2MDgzIC8qIHZhbGlkYXRpb25FUzMxLmggKi8sCisJCQkpOworCQkJcGF0aCA9IGxpYkFOR0xF
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJN0U2NjdCMTU4RTZFNDYwRjI5
NUYzRTA3IC8qIEludGVybWVkaWF0ZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCTVFQjJGMDA1MjgxQjAzN0Y1RjY4QkM3MiAvKiBpZCAqLywKKwkJCQkw
MzJCMDMyQTc2QzRCNTExNDU0MDc3MjIgLyogY29tbWl0X2lkLnB5ICovLAorCQkJKTsKKwkJCW5h
bWUgPSBJbnRlcm1lZGlhdGVzOworCQkJcGF0aCA9IGFuZ2xlOworCQkJc291cmNlVHJlZSA9IFNI
QVJFRF9JTlRFUk1FRElBVEVfRElSOworCQl9OworCQk4RjBEQ0M4Q0YzOTZCRkE1RjkxQkQyMjMg
LyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJNTE1N0YzN0JGRkY4NzhBQUZDQTNBODMyIC8qIENvY29hLmZyYW1ld29yayAqLywKKwkJ
CQk0MzMyNENCNUE0Qzk5RUYxQzgzMEI1MUUgLyogQ29yZUZvdW5kYXRpb24uZnJhbWV3b3JrICov
LAorCQkJCTAyQUU1OEE0NDVDRjU4RDUzNDcxODRBRCAvKiBJT0tpdC5mcmFtZXdvcmsgKi8sCisJ
CQkJRjQxQjJERTAwMzJBMjlFNDczMzNEMDEwIC8qIElPU3VyZmFjZS5mcmFtZXdvcmsgKi8sCisJ
CQkJNUY5RTYwOTBENzU3RUY5NDlBRjA0MjYzIC8qIE9wZW5HTC5mcmFtZXdvcmsgKi8sCisJCQkJ
MjIzNjM3ODBGMDRBM0ZEOTM0RkEzQzBFIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovLAorCQkJ
KTsKKwkJCW5hbWUgPSBGcmFtZXdvcmtzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKKwkJOTRCMTYzQzk0RjkzNTk3RkMwNzBCMUQ1IC8qIEJ1aWxkICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkyRDE1QjQ5OURCMTBGNTAzMDUwMDYxQjEg
LyogYW5nbGUuZ3lwICovLAorCQkJCUJEMkY4OUM2RDFEMzBDNjk0Q0IwOTVGQSAvKiBjb21tb24u
Z3lwaSAqLywKKwkJCQlEM0Q0OTM0NzIyN0UzQ0IzOEZGNTVFOEMgLyogY29tbW9uX2RlZmluZXMu
Z3lwaSAqLywKKwkJCQkyNkE5NDYzNTY2NjY0MkQ2NkM2NEQ2NzkgLyogY29tcGlsZXIuZ3lwaSAq
LywKKwkJCQlCRUU4NTZENjYwQzUwNzcxOEE1RTZBQjEgLyogbGliRUdMLmd5cGkgKi8sCisJCQkJ
NzdBRjg1NjM3RTNFNTAzOERFMzhEMEVFIC8qIGxpYkdMRVN2Mi5neXBpICovLAorCQkJCTdEQzM0
QTk4MjRFNjJERUE2OTk0ODQzMiAvKiBzdGFuZGFsb25lLmd5cGkgKi8sCisJCQkJRDMxNkMwREYy
NTNBNzAxOTJFOEFBNkRCIC8qIHZ1bGthbi5neXBpICovLAorCQkJKTsKKwkJCW5hbWUgPSBCdWls
ZDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTk5OEEwN0M3QzE0MTNFMTZB
ODhDNkQ2OSAvKiBHTFNMQU5HICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQlEODk2ODJBRUM1MjU3RkY5Qjg0MjAwNTIgLyogU2hhZGVyTGFuZy5oICovLAor
CQkJCUQwMzE1RjJGMkU0RjAzNEQ3QkQzQTE4OSAvKiBTaGFkZXJWYXJzLmggKi8sCisJCQkpOwor
CQkJcGF0aCA9IEdMU0xBTkc7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk5
OUEyQjdCQTQ2M0NDMjQ4QjE4Nzk3RDkgLyogaW5jbHVkZSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJRUM3ODhBNTNBMUM5OUE5QTQzRjQzRkMxIC8qIEVH
TCAqLywKKwkJCQlBNTk0QjQzMTM2QjlFMjJERjZFMkY5NjEgLyogR0xFUzIgKi8sCisJCQkJMEFF
NEQ3QTNDMURDMDQ1QjY4QkZDOTM4IC8qIEdMRVMzICovLAorCQkJCTk5OEEwN0M3QzE0MTNFMTZB
ODhDNkQ2OSAvKiBHTFNMQU5HICovLAorCQkJCUQ2RUQzNTJBREE2QzREMjAyQTQ0QjAwMCAvKiBL
SFIgKi8sCisJCQkJNjc0NzU2MUQ3RDMyMjQwNzMxRTlENzVBIC8qIHBsYXRmb3JtICovLAorCQkJ
CUE5QUEwOThDMTkwMzVGM0M0OTk5QzFCQyAvKiBhbmdsZV9nbC5oICovLAorCQkJCUE2RDk2NDk5
QjcwOTlERUU0NzRCNjY2MSAvKiBleHBvcnQuaCAqLywKKwkJCSk7CisJCQlwYXRoID0gaW5jbHVk
ZTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUE1OTRCNDMxMzZCOUUyMkRG
NkUyRjk2MSAvKiBHTEVTMiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJQ0MxNEJCQkM0RkM2RDA2RkM4REU5NUI0IC8qIGdsMi5oICovLAorCQkJCUQ3MzNE
MjkzRkM5MzMxRjAyNTE4QjlBNSAvKiBnbDJleHQuaCAqLywKKwkJCQkzMUJBQzhBMDY3RDU5RkI0
MkMwODZDNjUgLyogZ2wycGxhdGZvcm0uaCAqLywKKwkJCSk7CisJCQlwYXRoID0gR0xFUzI7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlBNkI4NEE3RDk1MjE1QUQxMjM1MDc3
RjkgLyogbXVybXVyaGFzaCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkJMEFFNDk3NTg2RTQ0NjA2MjBEMTYyNjJDIC8qIE11cm11ckhhc2gzLmNwcCAqLywK
KwkJCQkwMzA2MjUzQjZDOEJGQjdGM0VDMzkyMEQgLyogTXVybXVySGFzaDMuaCAqLywKKwkJCSk7
CisJCQlwYXRoID0gbXVybXVyaGFzaDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CisJCUFENTU1QzhFOTNFMTYwMDhGRTk2NTAzMCAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJNEQwQjU4NjhENzM2NzgxQjQxMkY2NUFE
IC8qIGxpYmFuZ2xlX2NvbW1vbi5hICovLAorCQkJCUJDMzFGOTk3MUNFQzc3QkFDNjMzREY2OCAv
KiBsaWJhbmdsZV9pbWFnZV91dGlsLmEgKi8sCisJCQkJREJENzVBOUI3RDhFNUYzQUE4NkZERURE
IC8qIGxpYmFuZ2xlX2dwdV9pbmZvX3V0aWwuYSAqLywKKwkJCQk3QTM1MTZDODhEQTZGMThBOEQ3
MzdFMEIgLyogbGlicHJlcHJvY2Vzc29yLmEgKi8sCisJCQkJQjg2MzFFRjBGNzkwNDBEQjYzRTg0
NjQ3IC8qIGxpYnRyYW5zbGF0b3IuYSAqLywKKwkJCQkxMTcxOTJDRkVFREM5OEVDNUZEREM4QTQg
LyogbGliQU5HTEUuYSAqLywKKwkJCQlBNkJGOTVGQ0RDQTQ1MzExRDExODQ0ODEgLyogbGliR0xF
U3YyLmR5bGliICovLAorCQkJCTkwQ0IzMjJGQzg5MUVFREZDMTZBMjZDQSAvKiBsaWJHTEVTdjJf
c3RhdGljLmEgKi8sCisJCQkJNjBEQ0ExNjM1QjUwNDg0RDFDQjYxQkZDIC8qIGxpYkVHTC5keWxp
YiAqLywKKwkJCQkzRjc1Q0YzOUM2OURCNzUzOEJFNTRENkIgLyogbGliRUdMX3N0YXRpYy5hICov
LAorCQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CisJCUFENjFGMUUzMjQzQjI1NEQ3NUNBRUJENCAvKiBwcmVwcm9jZXNzb3IgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTg5QUQ5NUVCNkI3MTc5
MjVENjQxQzRBRSAvKiBEaWFnbm9zdGljc0Jhc2UuY3BwICovLAorCQkJCUY0OEVGOUI3RDMwOUNE
MTU4QkI0NURCQyAvKiBEaWFnbm9zdGljc0Jhc2UuaCAqLywKKwkJCQlFMzM4QjM3RDVDMjRBN0Y1
NTgyM0UwNzkgLyogRGlyZWN0aXZlSGFuZGxlckJhc2UuY3BwICovLAorCQkJCUM2NEM4OEQwMDA0
MjNDM0NBNDlEQTgwQiAvKiBEaXJlY3RpdmVIYW5kbGVyQmFzZS5oICovLAorCQkJCTAyM0VGNUU0
QjEwQzM4NjBEOTU1NkE3OCAvKiBEaXJlY3RpdmVQYXJzZXIuY3BwICovLAorCQkJCUREMUU2N0U5
RDVCNzJDRkJENkJBN0IxQSAvKiBEaXJlY3RpdmVQYXJzZXIuaCAqLywKKwkJCQk1N0NBNERDMzI0
ODUwMUYzNTQxNjkyREMgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgKi8sCisJCQkJQ0Y5OUZBREY1
M0EzMTQ1NEQwQTdEQzVFIC8qIEV4cHJlc3Npb25QYXJzZXIuaCAqLywKKwkJCQlGNkZGODdGQTRD
MkVDMEM5MzFCMTY4RDAgLyogRXhwcmVzc2lvblBhcnNlci55ICovLAorCQkJCTVGOTVDNzg1NDVB
RDUwQTVDNDZENzYxNiAvKiBJbnB1dC5jcHAgKi8sCisJCQkJRUNBMkNCMTIwMEY2MDFEMDhEMDI5
MTdGIC8qIElucHV0LmggKi8sCisJCQkJNTg3M0VBOEJFQThDM0I0NjRBRjhCNEMxIC8qIExleGVy
LmNwcCAqLywKKwkJCQlDNUU4QjNFRjc5N0Y1RUY0MDBGQzZGODIgLyogTGV4ZXIuaCAqLywKKwkJ
CQk1ODNCQTVEMTg2NDQwQjdENDkxQThFNTggLyogTWFjcm8uY3BwICovLAorCQkJCUY4MjJGQkM1
Rjg1RUZDNDJFRjk5QTQ5NSAvKiBNYWNyby5oICovLAorCQkJCTI3RjE1MDVBOEQ2MkU3RDQ4ODgy
M0RGNyAvKiBNYWNyb0V4cGFuZGVyLmNwcCAqLywKKwkJCQlDOUJBRkEzQzRBRUVGNDAxQ0NGNDY1
NEYgLyogTWFjcm9FeHBhbmRlci5oICovLAorCQkJCTIzNTBENDJFNzI1NjhGODZBNDYxRTQ5QiAv
KiBQcmVwcm9jZXNzb3IuY3BwICovLAorCQkJCTk2QTI1QkI2OTA4REVDOTFENUJFNTlDQSAvKiBQ
cmVwcm9jZXNzb3IuaCAqLywKKwkJCQkyQzc3QTIzOUI3NEQ4MzI5RkE5Q0E3N0MgLyogU291cmNl
TG9jYXRpb24uaCAqLywKKwkJCQlERDRCMDU5Q0ZDNjc5REJBRDJDRDY0ODEgLyogVG9rZW4uY3Bw
ICovLAorCQkJCUM4RDY0NDkzQ0Q5ODZDRDNDRDFBRERCRCAvKiBUb2tlbi5oICovLAorCQkJCTBE
Q0NCREY0RDFBMzg5NTcwRTNCRUNBMyAvKiBUb2tlbml6ZXIuY3BwICovLAorCQkJCTQ4RjcwMkMy
QzM2MDhFMzQwNDZFQjlDNyAvKiBUb2tlbml6ZXIuaCAqLywKKwkJCQk5QzhCM0ZCQkMzMUNEMkUw
NDFDMzM3REEgLyogVG9rZW5pemVyLmwgKi8sCisJCQkJNjRFNkJBMEFBMjYwNTU4MEMyQTgzNkY2
IC8qIG51bWVyaWNfbGV4LmggKi8sCisJCQkpOworCQkJcGF0aCA9IHByZXByb2Nlc3NvcjsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUJERUJCM0Y5QUNBMDJCQ0RGRDFGNkZE
MSAvKiBpbWFnZV91dGlsICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQkxQkIwRTFDMUVBRENFMUY5NDM4MzU4QTMgLyogY29weWltYWdlLmNwcCAqLywKKwkJ
CQlBODVEQjUzNTAwQUZFM0I0MkNBMkIwOUQgLyogY29weWltYWdlLmggKi8sCisJCQkJODgwMjhD
QjkxMDUyQ0Y0NUY0MzhGMDY4IC8qIGNvcHlpbWFnZS5pbmwgKi8sCisJCQkJM0M5QzgxMDREREU5
NEQwNkM2OUZCRTY4IC8qIGdlbmVyYXRlbWlwLmggKi8sCisJCQkJNjEwRTdENERCQzc3RTE3MkFD
OTEyN0Q2IC8qIGdlbmVyYXRlbWlwLmlubCAqLywKKwkJCQk0OUEzMDU5MDc5NEY3OTU4NTI5QkI3
REYgLyogaW1hZ2Vmb3JtYXRzLmNwcCAqLywKKwkJCQkyNDM4QUI4NkQ2RDRGRTA5NUNEQjUyNDEg
LyogaW1hZ2Vmb3JtYXRzLmggKi8sCisJCQkJQzA2MEVDMDhBQkJBMTk2NEM3ODZBNDRDIC8qIGxv
YWRpbWFnZS5jcHAgKi8sCisJCQkJNjc2NzNCQkM2NkNFMEFBQkU0NDgzNkM4IC8qIGxvYWRpbWFn
ZS5oICovLAorCQkJCTAzMzI0NjQ3NEUwRkM1QzE0RENCNzBDMCAvKiBsb2FkaW1hZ2UuaW5sICov
LAorCQkJCTQ1NzhDOEJDNTg3QTYxREM1RTUzQkMzNSAvKiBsb2FkaW1hZ2VfZXRjLmNwcCAqLywK
KwkJCSk7CisJCQlwYXRoID0gaW1hZ2VfdXRpbDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CisJCUNEMUQ0RjZENjBDNzJERTg4RkQ1OTM1QiAvKiAuZ2l0ICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlEQTkxNENCRkY1NDc0OTkwRTkwRUE3
OEEgLyogaW5kZXggKi8sCisJCQkpOworCQkJcGF0aCA9IC5naXQ7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OworCQlDRkM0OUIzMDRGM0ZENTc1QUYyM0M2N0QgLyogY29tcGlsZXIg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUFENjFGMUUz
MjQzQjI1NEQ3NUNBRUJENCAvKiBwcmVwcm9jZXNzb3IgKi8sCisJCQkJMDhDMzBBRTZENDQxNkZB
NDU4QUY3NzkyIC8qIHRyYW5zbGF0b3IgKi8sCisJCQkpOworCQkJcGF0aCA9IGNvbXBpbGVyOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJRDZFRDM1MkFEQTZDNEQyMDJBNDRC
MDAwIC8qIEtIUiAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJOTY3MzI1RUFEMjk1MkVEQjUwMDMxQjhDIC8qIGtocnBsYXRmb3JtLmggKi8sCisJCQkpOwor
CQkJcGF0aCA9IEtIUjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUUzRDJB
ODAxQkU4MDQ0MDdFREE1OEI2QSAvKiBsaWJHTEVTdjIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91
cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTVFNTRCRjUxMUUyQTVCRUQ5RDc4OTMxOSAvKiBlbnRy
eV9wb2ludHNfZWdsLmNwcCAqLywKKwkJCQk5OEU1NUQ4N0EyNkNGREIwMDQwQzAxMUQgLyogZW50
cnlfcG9pbnRzX2VnbC5oICovLAorCQkJCTI3NDBGQzA5QjBGMUNBOTlCOTUyQjAzMiAvKiBlbnRy
eV9wb2ludHNfZWdsX2V4dC5jcHAgKi8sCisJCQkJOTNFQTlCNUJGNDdBRDEzQkIzQTQxOTY3IC8q
IGVudHJ5X3BvaW50c19lZ2xfZXh0LmggKi8sCisJCQkJMDgzNDIwRjU0OEFFMzcyMDFGNUE5NDFC
IC8qIGVudHJ5X3BvaW50c19nbGVzXzJfMC5jcHAgKi8sCisJCQkJOUU2MDE1QzdEQUM0MDhFQjU0
Q0ExQjMxIC8qIGVudHJ5X3BvaW50c19nbGVzXzJfMC5oICovLAorCQkJCTQ2MzA4NkZGN0E3MTEz
NDk0OTg2QjJCRiAvKiBlbnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0LmNwcCAqLywKKwkJCQk0M0I3
NjA0QzY5REQ5QzUyRTcyODMzMzYgLyogZW50cnlfcG9pbnRzX2dsZXNfMl8wX2V4dC5oICovLAor
CQkJCTI0QjY5MkYzNjVBMEJEQzg1MTVFRUU2MyAvKiBlbnRyeV9wb2ludHNfZ2xlc18zXzAuY3Bw
ICovLAorCQkJCTc4MDQ3Mjk4ODFEMTY1QTEwOTI5NDgwQiAvKiBlbnRyeV9wb2ludHNfZ2xlc18z
XzAuaCAqLywKKwkJCQk5NUI2QTVGRThEQjA5RTQ4RkEyNjA0RTAgLyogZW50cnlfcG9pbnRzX2ds
ZXNfM18xLmNwcCAqLywKKwkJCQk3MkE4NzQxOEM2QjNDQzc3MDYxNDk1MzIgLyogZW50cnlfcG9p
bnRzX2dsZXNfM18xLmggKi8sCisJCQkJRkM5MzFDNUY0RkFBQUQzRjJCQTk1NzdGIC8qIGdsb2Jh
bF9zdGF0ZS5jcHAgKi8sCisJCQkJNEU3NDA0ODhBRTIyRUE4MjdEQjNDQTVBIC8qIGdsb2JhbF9z
dGF0ZS5oICovLAorCQkJCTE2NjUwNzg4NjA1MTBGRkU3OTU5QjRBRCAvKiBsaWJHTEVTdjIuY3Bw
ICovLAorCQkJCTUwMzczODI5NzM1MUEwQjgxNzRBODE4MCAvKiBsaWJHTEVTdjIuZGVmICovLAor
CQkJCTc0M0QwNUZDQzg4MDAyQUIzMzg2QzBFQSAvKiBsaWJHTEVTdjIucmMgKi8sCisJCQkJRjhE
NkFBODY2QjlFN0U5MDlCN0VCQTQ1IC8qIHJlc291cmNlLmggKi8sCisJCQkpOworCQkJcGF0aCA9
IGxpYkdMRVN2MjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUVDNzg4QTUz
QTFDOTlBOUE0M0Y0M0ZDMSAvKiBFR0wgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCUE3NTdDRjI2MjU5N0YwRTY2OUJDM0NFOSAvKiBlZ2wuaCAqLywKKwkJ
CQlENjg1QkUyMzRFMDkwQkQxNzhEODkxNEUgLyogZWdsZXh0LmggKi8sCisJCQkJOUIyMDlFQ0JE
MkY1QkQxMTNDMDYxQTAwIC8qIGVnbHBsYXRmb3JtLmggKi8sCisJCQkpOworCQkJcGF0aCA9IEVH
TDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUVGNzNCMDQ3MUMzNzFCQUJC
MjM3REIwMCAvKiBnbCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJMERFMzQ5NkM1MTlCNzFGQUJDMDk0RDEwIC8qIGNnbCAqLywKKwkJCQlEQzBGOTM5NjMz
MTU0NjhEQzZDNzUwNDMgLyogQmxpdEdMLmNwcCAqLywKKwkJCQk4RTYzMzFENTc3OUIxOUM0RkI5
QTRFMzAgLyogQmxpdEdMLmggKi8sCisJCQkJNUM5QjAyRDkwQkUxMDk5RjczN0M0NzBBIC8qIEJ1
ZmZlckdMLmNwcCAqLywKKwkJCQk1RTc4REM1M0I3NUEyQkU5MzY5RTU4NDggLyogQnVmZmVyR0wu
aCAqLywKKwkJCQkwNTE2MTdCMzEzNTYxQzY1QkM5QTBEMjEgLyogQ29tcGlsZXJHTC5jcHAgKi8s
CisJCQkJNDRBMDc5NTZCNUJDMTZBN0M2NzBCOUE4IC8qIENvbXBpbGVyR0wuaCAqLywKKwkJCQk5
MUNENjk1NkU0QUJDMDc4NUY2OUQ3MUEgLyogQ29udGV4dEdMLmNwcCAqLywKKwkJCQlEQTQ1RDYx
RUU5QTFBMDA0RDM1MDBCODAgLyogQ29udGV4dEdMLmggKi8sCisJCQkJQzhGRTYyRjY5NkQzRjJF
NUQ0QzgzMTlCIC8qIERpc3BsYXlHTC5jcHAgKi8sCisJCQkJRUVGN0NDNEU3RTAwMjg0NEI5RTUw
N0Q2IC8qIERpc3BsYXlHTC5oICovLAorCQkJCTlEMEE3ODk0NzZCOUM2Qjc0MDM4MDRBMSAvKiBG
ZW5jZU5WR0wuY3BwICovLAorCQkJCUE3QTFDRDU5RDRFQTc0QTZBOEIyQ0ZENiAvKiBGZW5jZU5W
R0wuaCAqLywKKwkJCQlCMkU4RUFBQUQzQzFERTcyMTIzNTJBMUQgLyogRmVuY2VTeW5jR0wuY3Bw
ICovLAorCQkJCTQxOUYxMzhBM0IyNTc3QTBDNDk3RDk0MyAvKiBGZW5jZVN5bmNHTC5oICovLAor
CQkJCURGNkI4NzUzNkMzODBERjE5MUZCMkYzOCAvKiBGcmFtZWJ1ZmZlckdMLmNwcCAqLywKKwkJ
CQk0RDBBQzE2OURCNkNBMjU4REI3MjMzQzMgLyogRnJhbWVidWZmZXJHTC5oICovLAorCQkJCTdG
OTA4RTE0MjBCNjFGM0YyMEJCNjMzNyAvKiBGdW5jdGlvbnNHTC5jcHAgKi8sCisJCQkJODQxOEQy
NEY5NjlFNEYxREY1NjBDQzlEIC8qIEZ1bmN0aW9uc0dMLmggKi8sCisJCQkJMTJCMDVERjhCRkYw
QkFFNDA2MTMwQTY1IC8qIFBhdGhHTC5jcHAgKi8sCisJCQkJQkRBODIyMzNDQjQyMjlBMkNDREEx
NEEzIC8qIFBhdGhHTC5oICovLAorCQkJCTI0QzIwNTJCOUMwRUQyMkNBMTY1OTUyMCAvKiBQcm9n
cmFtR0wuY3BwICovLAorCQkJCTBCNzk4MkM3MEVBMDdCNTYzNjI2RDA3NCAvKiBQcm9ncmFtR0wu
aCAqLywKKwkJCQk5OTEwMERCM0QzRjg5RDBDRTQ0QzRCQUMgLyogUXVlcnlHTC5jcHAgKi8sCisJ
CQkJMDlGM0I3NkNDMDlBNTkwQTU1QjNCMEZEIC8qIFF1ZXJ5R0wuaCAqLywKKwkJCQk1MkYyNjBF
OEYxOTMwN0Q4M0NBRUJDRkEgLyogUmVuZGVyYnVmZmVyR0wuY3BwICovLAorCQkJCTZBQjVCODFE
N0VDMjlFREQ1QjNFRDA4OSAvKiBSZW5kZXJidWZmZXJHTC5oICovLAorCQkJCTQ2N0JDMzg3QTQ4
MENGRTc5N0FFRjY1QSAvKiBSZW5kZXJlckdMLmNwcCAqLywKKwkJCQkxQjc1NjY3RUY0QjczRDg2
MzVDRjM1NkYgLyogUmVuZGVyZXJHTC5oICovLAorCQkJCTRDNzA1QzZBMDAwRTYxNTIyNkY1QzJD
NiAvKiBTYW1wbGVyR0wuY3BwICovLAorCQkJCTJGRjk0MzY2Mjc5MzIxNTRDNjU2NkFCOCAvKiBT
YW1wbGVyR0wuaCAqLywKKwkJCQlBRDJGQjEyREI2MTQ0M0Y2NTQ4OEEwMDEgLyogU2hhZGVyR0wu
Y3BwICovLAorCQkJCTdCMDlDOTU4RUIxOEQ2NDA1N0E4NURENCAvKiBTaGFkZXJHTC5oICovLAor
CQkJCTIwMEQ3MjdBRkE4MTRDNkM4RjUxRjBEQyAvKiBTdGF0ZU1hbmFnZXJHTC5jcHAgKi8sCisJ
CQkJNjVEN0E4NTdFRkU1NjA0QjM5Qjk0NEE2IC8qIFN0YXRlTWFuYWdlckdMLmggKi8sCisJCQkJ
REM4NDk0Mjk1ODhGMUIxMkU3NTYxRTI2IC8qIFN1cmZhY2VHTC5jcHAgKi8sCisJCQkJQkU2OUEw
QUUyQ0RBMjE4M0E5RkFDMTJFIC8qIFN1cmZhY2VHTC5oICovLAorCQkJCTE4MEZBRDg4Q0JCRkIy
Nzk0NTdFMDQ3MiAvKiBUZXh0dXJlR0wuY3BwICovLAorCQkJCUYwRThERkQwN0EyMDJGMTkwNDk1
NzM2QyAvKiBUZXh0dXJlR0wuaCAqLywKKwkJCQk5RDJENjRDODA1RjEzQTA0OTJGNjI3REYgLyog
VHJhbnNmb3JtRmVlZGJhY2tHTC5jcHAgKi8sCisJCQkJQ0VGNjhBRENFOERDNkUyRDU5N0JFODJC
IC8qIFRyYW5zZm9ybUZlZWRiYWNrR0wuaCAqLywKKwkJCQlEN0JEQjQzMDVBQUJBMTEzQTk2MTE3
QTcgLyogVmVydGV4QXJyYXlHTC5jcHAgKi8sCisJCQkJMjg3RkU2N0JFMzkzOEY0QkE3REZBNURF
IC8qIFZlcnRleEFycmF5R0wuaCAqLywKKwkJCQk1RkU1MUUyNDczRjU3QjI4MUVDNUJGQjcgLyog
V29ya2Fyb3VuZHNHTC5oICovLAorCQkJCTZBNUJDQ0MxRUZBMUM5QTMxQTZDNDAxNiAvKiBmb3Jt
YXR1dGlsc2dsLmNwcCAqLywKKwkJCQlFNkFCQjdCODkwMDhGQkUwNzU5QTQ3NTUgLyogZm9ybWF0
dXRpbHNnbC5oICovLAorCQkJCTdEREM3NTAwNUM0QzFFMUYxRTJEQTc0OCAvKiBmdW5jdGlvbnNn
bF9lbnVtcy5oICovLAorCQkJCTcxNUY5RUE4REEwOTAwRjI4QjE4QzQ2MSAvKiBmdW5jdGlvbnNn
bF90eXBlZGVmcy5oICovLAorCQkJCTEyODkxNzBGODMwNjE4QjEyRjU4NzNBOSAvKiByZW5kZXJl
cmdsX3V0aWxzLmNwcCAqLywKKwkJCQk3RDMwOEQwQTg0QTM4Q0NFODMwMURDRjggLyogcmVuZGVy
ZXJnbF91dGlscy5oICovLAorCQkJKTsKKwkJCXBhdGggPSBnbDsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CisJCUY5ODY5ODk0RDM5NUFBRTg3QzlCODIwQiAvKiBjb21waWxlciAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMTYxMjJGMDVD
RDQ2QzgyMUQyNjNFRkQ3IC8qIEFycmF5Qm91bmRzQ2xhbXBlci5jcHAgKi8sCisJCQkJMjIwNUYx
RjdBMTQ0RjZBQjA0RUI0MEM3IC8qIEFycmF5Qm91bmRzQ2xhbXBlci5oICovLAorCQkJKTsKKwkJ
CXBhdGggPSBjb21waWxlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisvKiBF
bmQgUEJYR3JvdXAgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlv
biAqLworCQkxN0Y4M0U5NjQ5OEI1MDBCNzdEMzcxMTggLyogYW5nbGVfaW1hZ2VfdXRpbCAqLyA9
IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3Qg
PSA2MDg0M0VERkVBQzBERTc2RTQwMTA5MEEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgImFuZ2xlX2ltYWdlX3V0aWwiICovOworCQkJYnVpbGRQaGFzZXMg
PSAoCisJCQkJNDlCODQ4RTlEQTcyQjBFNzVDNEUyOEFGIC8qIFNvdXJjZXMgKi8sCisJCQkJQ0JC
QUY2MTlERjc4M0RBMkZGOTU4NzhCIC8qIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJYnVpbGRS
dWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IGFu
Z2xlX2ltYWdlX3V0aWw7CisJCQlwcm9kdWN0TmFtZSA9IGFuZ2xlX2ltYWdlX3V0aWw7CisJCQlw
cm9kdWN0UmVmZXJlbmNlID0gQkMzMUY5OTcxQ0VDNzdCQUM2MzNERjY4IC8qIGxpYmFuZ2xlX2lt
YWdlX3V0aWwuYSAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUu
bGlicmFyeS5zdGF0aWMiOworCQl9OworCQkxRjg4Q0RFQjQ0RTdDNzFDMjgyRkE5NzUgLyogdHJh
bnNsYXRvciAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmln
dXJhdGlvbkxpc3QgPSBGOUNFNjlFNDU1NUQzQkY1M0ZDQ0U1QzQgLyogQnVpbGQgY29uZmlndXJh
dGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgInRyYW5zbGF0b3IiICovOworCQkJYnVpbGRQ
aGFzZXMgPSAoCisJCQkJQzM4RUYxRkFCMzNERDE5Mzk4RTFEQUFCIC8qIFNvdXJjZXMgKi8sCisJ
CQkJNkJDMzAxMzVGREJGNUY5M0Y0Q0Y4RkI5IC8qIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJ
YnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFt
ZSA9IHRyYW5zbGF0b3I7CisJCQlwcm9kdWN0TmFtZSA9IHRyYW5zbGF0b3I7CisJCQlwcm9kdWN0
UmVmZXJlbmNlID0gQjg2MzFFRjBGNzkwNDBEQjYzRTg0NjQ3IC8qIGxpYnRyYW5zbGF0b3IuYSAq
LzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0
aWMiOworCQl9OworCQkyN0I0MzZDN0NFRjkzNzg4OTQ2NDExREUgLyogbGliRUdMX3N0YXRpYyAq
LyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxp
c3QgPSA3QTI1QzA2MDVCMzgyMjRGNjhCNjhGMEEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhOYXRpdmVUYXJnZXQgImxpYkVHTF9zdGF0aWMiICovOworCQkJYnVpbGRQaGFzZXMg
PSAoCisJCQkJMDFBNjZEQjUzODgwRUMyODdCQzk2QjA0IC8qIFNvdXJjZXMgKi8sCisJCQkJNDM0
QThGMjE5MUE5RkI3REE2Q0E3RDg5IC8qIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJYnVpbGRS
dWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IGxp
YkVHTF9zdGF0aWM7CisJCQlwcm9kdWN0TmFtZSA9IEVHTF9zdGF0aWM7CisJCQlwcm9kdWN0UmVm
ZXJlbmNlID0gM0Y3NUNGMzlDNjlEQjc1MzhCRTU0RDZCIC8qIGxpYkVHTF9zdGF0aWMuYSAqLzsK
KwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMi
OworCQl9OworCQk2RDdFNjMzMjhGODczODRGRjM5M0FBMEIgLyogbGliQU5HTEUgKi8gPSB7CisJ
CQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gOTYy
Q0MzRDNEQkE3Nzc1QzY0N0JBRTkyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
TmF0aXZlVGFyZ2V0ICJsaWJBTkdMRSIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkxQjk1
M0FCQjdCRTQxRjVBMjUzMzA5NzkgLyogU291cmNlcyAqLywKKwkJCQlCMTEzMzFFMkZCQzlBQzUy
NEY5OTU4OUEgLyogRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJ
KTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQk1Qzk1RjZFOEFEQzdENzcxMzRBRTBFNTAgLyog
UEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCQk0NTAwRjU3RTRGNTU2MjlCMzQzRThDMjQgLyog
UEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCQlGQjcwNEM5NUU4MEZERDIyNTU3MTRFREIgLyog
UEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CisJCQluYW1lID0gbGliQU5HTEU7CisJCQlw
cm9kdWN0TmFtZSA9IEFOR0xFOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDExNzE5MkNGRUVEQzk4
RUM1RkREQzhBNCAvKiBsaWJBTkdMRS5hICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxl
LnByb2R1Y3QtdHlwZS5saWJyYXJ5LnN0YXRpYyI7CisJCX07CisJCTc0OTgxOTQ0RTFGQjZERDc2
MkEwN0QzRiAvKiBsaWJFR0wgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQli
dWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNzNEMTVCMUI5MDk2M0U2MzEzQTMwQjMxIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsaWJFR0wiICovOworCQkJ
YnVpbGRQaGFzZXMgPSAoCisJCQkJMkFDRTZEQkQ2NUY1MThFMjYzQUI3ODY1IC8qIFNvdXJjZXMg
Ki8sCisJCQkJMTAyQ0NENUU2MTA1MkZBQTgxNUQ5RTU0IC8qIEZyYW1ld29ya3MgKi8sCisJCQkp
OworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJNUJB
NTI4N0ZGRTlFMzhDMzE4ODNCNTM2IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOwor
CQkJbmFtZSA9IGxpYkVHTDsKKwkJCXByb2R1Y3ROYW1lID0gRUdMOworCQkJcHJvZHVjdFJlZmVy
ZW5jZSA9IDYwRENBMTYzNUI1MDQ4NEQxQ0I2MUJGQyAvKiBsaWJFR0wuZHlsaWIgKi87CisJCQlw
cm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuZHluYW1pYyI7CisJ
CX07CisJCTc5MkFCRjQ4ODRBOEZEQUU4MTY5MERERSAvKiBhbmdsZV9jb21tb24gKi8gPSB7CisJ
CQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gREIz
Q0U2ODI2NTVGNENEQjkwNzYyQzhDIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
TmF0aXZlVGFyZ2V0ICJhbmdsZV9jb21tb24iICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJ
RUNDMkI2ODIxNTA4REJGNzA4MTk5MjgxIC8qIFNvdXJjZXMgKi8sCisJCQkJMDdDMkJGOUU4RkFC
MDRGMENFNzMyNEM3IC8qIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgK
KwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJNUM5MzgxOUE5RDg0OUE3QTI0N0E2MzQ3
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9IGFuZ2xlX2NvbW1v
bjsKKwkJCXByb2R1Y3ROYW1lID0gYW5nbGVfY29tbW9uOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9
IDREMEI1ODY4RDczNjc4MUI0MTJGNjVBRCAvKiBsaWJhbmdsZV9jb21tb24uYSAqLzsKKwkJCXBy
b2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMiOworCQl9
OworCQk5NTk0NTdCNTdBRUI0MDk1ODRFNDg4NzAgLyogbGliR0xFU3YyICovID0geworCQkJaXNh
ID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE3MjIwREUx
RDk5QjRDODYyNkUwQzM2RCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2
ZVRhcmdldCAibGliR0xFU3YyIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCUVENjk2MzMy
OTE4QTA1NzBFNDg1RENCMSAvKiBTb3VyY2VzICovLAorCQkJCUIyNjcyRkMzMjlFMDkwNTEyQTdG
MDAzNiAvKiBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOwor
CQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCUY2N0E3NkQ4MDIwNDdFQjNFRjk3QzMyOSAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTJBODc5RTZCNUEzRkFBODVDREFCMUQzMiAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovLAorCQkJCThEOUVEOTNFQUEwOEJBOTJGNDQ2NTQ1NCAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTBFQ0RERjI2MzNCNDAxNzg3MjdGM0I4NSAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTlEQzZGOTZBQUFCNkNBRjkxOUIzNEE0NSAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTNGQkQ2QkQyOEQwODVBQzBDODMwRTUwOSAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovLAorCQkJCUFEOTZCNzEwMkVFNEFGNDRFNkMwREUxMSAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTYxOUM1QzgxQTU0Mjk3RkZEOTc3Q0Q5MyAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTY5NTE4RjQxQkQyRkEwQzQ5MzMyMEE0QSAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovLAorCQkJCTI1RjRDOTU1NjZFQTE3QkU5OUUwMUM5MiAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBsaWJHTEVTdjI7CisJCQlwcm9k
dWN0TmFtZSA9IEdMRVN2MjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSBBNkJGOTVGQ0RDQTQ1MzEx
RDExODQ0ODEgLyogbGliR0xFU3YyLmR5bGliICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFw
cGxlLnByb2R1Y3QtdHlwZS5saWJyYXJ5LmR5bmFtaWMiOworCQl9OworCQlCOEM3QzE0Mjc1MUYx
RTE0OThBNjUyRDQgLyogbGliR0xFU3YyX3N0YXRpYyAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2
ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAyNUQxQ0JBOTdCMjdENTdFNzY0
REZDQUEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImxp
YkdMRVN2Ml9zdGF0aWMiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJREI1MzM4QjAxNDc4
RkRFMzZBRDRCRDc3IC8qIFNvdXJjZXMgKi8sCisJCQkJRDhDMUZCNkQ2QzA0OUFDQjFFNDY0MUNE
IC8qIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlk
ZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IGxpYkdMRVN2Ml9zdGF0aWM7CisJCQlw
cm9kdWN0TmFtZSA9IEdMRVN2Ml9zdGF0aWM7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gOTBDQjMy
MkZDODkxRUVERkMxNkEyNkNBIC8qIGxpYkdMRVN2Ml9zdGF0aWMuYSAqLzsKKwkJCXByb2R1Y3RU
eXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUubGlicmFyeS5zdGF0aWMiOworCQl9OworCQlD
Njk4OTZCNEREMkMwNkNGMTYxNkJEQzYgLyogcHJlcHJvY2Vzc29yICovID0geworCQkJaXNhID0g
UEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IEVEMTIyNUM5OTVE
OTgyN0MzRjA1QjM2OSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRh
cmdldCAicHJlcHJvY2Vzc29yIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCUNGQzg5MUNE
N0E2QUM3NDQ0MTZBOUJBRSAvKiBTb3VyY2VzICovLAorCQkJCURCQ0VERTQ4NzdEQTFGNDZBQjRD
NkZCOSAvKiBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOwor
CQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBwcmVwcm9jZXNzb3I7CisJCQlw
cm9kdWN0TmFtZSA9IHByZXByb2Nlc3NvcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSA3QTM1MTZD
ODhEQTZGMThBOEQ3MzdFMEIgLyogbGlicHJlcHJvY2Vzc29yLmEgKi87CisJCQlwcm9kdWN0VHlw
ZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLmxpYnJhcnkuc3RhdGljIjsKKwkJfTsKKwkJQzcw
MTI4NDVDNUZFMzlBQjA4NEEzMkQ4IC8qIGFuZ2xlX2dwdV9pbmZvX3V0aWwgKi8gPSB7CisJCQlp
c2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gQTFEODFG
NDFDNTMwRjY3RDY3OUY0MzYyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0
aXZlVGFyZ2V0ICJhbmdsZV9ncHVfaW5mb191dGlsIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAor
CQkJCTY3Nzc2OEIzRTk0NEVBODU1NzUzMEY0QSAvKiBTb3VyY2VzICovLAorCQkJCTYzNTY3QjYz
RUUwQzZFRTNGMDQwQjY3NyAvKiBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMg
PSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBhbmdsZV9n
cHVfaW5mb191dGlsOworCQkJcHJvZHVjdE5hbWUgPSBhbmdsZV9ncHVfaW5mb191dGlsOworCQkJ
cHJvZHVjdFJlZmVyZW5jZSA9IERCRDc1QTlCN0Q4RTVGM0FBODZGREVERCAvKiBsaWJhbmdsZV9n
cHVfaW5mb191dGlsLmEgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10
eXBlLmxpYnJhcnkuc3RhdGljIjsKKwkJfTsKKy8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlv
biAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKwkJOTY4NjAwOEFCMEJBMjhG
QzIzOTVEOUYwIC8qIFByb2plY3Qgb2JqZWN0ICovID0geworCQkJaXNhID0gUEJYUHJvamVjdDsK
KwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJQnVpbGRJbmRlcGVuZGVudFRhcmdldHNJblBhcmFsbGVs
ID0gWUVTOworCQkJfTsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA1Qjg3NzM3OTEyRDA1
OTcyMDhFNkNGRkIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJh
bmdsZSIgKi87CisJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAzLjIiOworCQkJaGFz
U2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CisJCQltYWluR3JvdXAgPSA1RDUwOUMyREI0NzFFOTlE
NTAwRDI3MjY7CisJCQlwcm9qZWN0RGlyUGF0aCA9ICIiOworCQkJcHJvamVjdFJvb3QgPSAiIjsK
KwkJCXRhcmdldHMgPSAoCisJCQkJMDUxRDkwMzI2NDJGN0UyQzc0MTBDNDNCIC8qIEFsbCAqLywK
KwkJCQk3OTJBQkY0ODg0QThGREFFODE2OTBEREUgLyogYW5nbGVfY29tbW9uICovLAorCQkJCTE3
RjgzRTk2NDk4QjUwMEI3N0QzNzExOCAvKiBhbmdsZV9pbWFnZV91dGlsICovLAorCQkJCUM3MDEy
ODQ1QzVGRTM5QUIwODRBMzJEOCAvKiBhbmdsZV9ncHVfaW5mb191dGlsICovLAorCQkJCTU1RTcw
MUQ0OEQ2Rjc1RkRFMEZCNUI4OSAvKiBjb3B5X3NjcmlwdHMgKi8sCisJCQkJQzY5ODk2QjRERDJD
MDZDRjE2MTZCREM2IC8qIHByZXByb2Nlc3NvciAqLywKKwkJCQkxRjg4Q0RFQjQ0RTdDNzFDMjgy
RkE5NzUgLyogdHJhbnNsYXRvciAqLywKKwkJCQk1RDRDOUJGMTFBMjJEQjBDRTFBNDQxMjEgLyog
bGliQU5HTEVfZDNkMTFfY29uZmlnICovLAorCQkJCTgwOTVGRjY1NDMwRjM2NjZENjU4N0Y3RiAv
KiBsaWJBTkdMRV9yZW5kZXJlcl9jb25maWcgKi8sCisJCQkJNkQ3RTYzMzI4Rjg3Mzg0RkYzOTNB
QTBCIC8qIGxpYkFOR0xFICovLAorCQkJCTk1OTQ1N0I1N0FFQjQwOTU4NEU0ODg3MCAvKiBsaWJH
TEVTdjIgKi8sCisJCQkJQjhDN0MxNDI3NTFGMUUxNDk4QTY1MkQ0IC8qIGxpYkdMRVN2Ml9zdGF0
aWMgKi8sCisJCQkJNzQ5ODE5NDRFMUZCNkRENzYyQTA3RDNGIC8qIGxpYkVHTCAqLywKKwkJCQky
N0I0MzZDN0NFRjkzNzg4OTQ2NDExREUgLyogbGliRUdMX3N0YXRpYyAqLywKKwkJCQk4MDU1MUNE
N0VCMjQwRjA5Rjc1NURBQzAgLyogY29tbWl0X2lkICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQ
QlhQcm9qZWN0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KKwkJMDk2RkY0OTAxNTlFNEE4NDIzNTM4REVCIC8qIEFjdGlvbiAiR2VuZXJh
dGUgQU5HTEUgQ29tbWl0IElEIEhlYWRlciIgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlw
dEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMg
PSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChTSEFSRURfSU5URVJNRURJQVRF
X0RJUikvYW5nbGUvY29tbWl0X2lkLnB5IiwKKwkJCQkuLi8uZ2l0L2luZGV4LAorCQkJKTsKKwkJ
CW5hbWUgPSAiQWN0aW9uIFwiR2VuZXJhdGUgQU5HTEUgQ29tbWl0IElEIEhlYWRlclwiIjsKKwkJ
CW91dHB1dFBhdGhzID0gKAorCQkJCSIkKFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS9hbmdsZS9p
ZC9jb21taXQuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAiZWNobyBu
b3RlOiBcIkdlbmVyYXRpbmcgQU5HTEUgQ29tbWl0IElEXCJcbmV4ZWMgcHl0aG9uIFwiJHtTSEFS
RURfSU5URVJNRURJQVRFX0RJUn0vYW5nbGUvY29tbWl0X2lkLnB5XCIgZ2VuIC4uIFwiJHtTSEFS
RURfSU5URVJNRURJQVRFX0RJUn0vYW5nbGUvaWQvY29tbWl0LmhcIlxuZXhpdCAxXG4iOworCQkJ
c2hvd0VudlZhcnNJbkxvZyA9IDA7CisJCX07CisvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LworCQkwMUE2NkRCNTM4ODBFQzI4N0JDOTZCMDQgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9
IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
KwkJCWZpbGVzID0gKAorCQkJCUZGOEY2M0Q5QUY3MzFBNjY2RDI4RkZEMSAvKiBsaWJFR0wuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CisJCX07CisJCTFCOTUzQUJCN0JFNDFGNUEyNTMzMDk3OSAvKiBTb3VyY2VzICov
ID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJNDJBMTgyMzNGMDVFRDIzREJEODVDQzky
IC8qIGV2ZW50X3RyYWNlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1OEQzNDA2OTAxNUVCN0M1
NTQ0MzJFRDQgLyogQXR0cmlidXRlTWFwLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTg3Q0Y0NEI1
Qjc5ODVFRTQxN0FFNTNFMiAvKiBCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNEVGNUMy
MTQwNjJCMzE1RTBFRkQyOUNGIC8qIENhcHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjY5RDQ4
ODAxQUQwNEMxNjNFOUI4Mzc1IC8qIENvbXBpbGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQw
RjlFQTMyNzVCN0E5NTI3QzRGOEJEMiAvKiBDb25maWcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RDFDRkRCMkI4QzYwODAzRUE1QjVDQUI4IC8qIENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJOTYyQjYxN0QzRjBFNTBBOUFENjVEOEY5IC8qIENvbnRleHRTdGF0ZS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlEQ0U3Rjc0M0EwNDVFMjlFQzRCOEVCNUIgLyogRGVidWcuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRTIzMTI4MzQyMjRDQTU4OEZGQzYzQzBGIC8qIERldmljZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk5OTMyNjY5RjA2RTU4NjM1NkI2RjU5NzcgLyogRGlzcGxheS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk1OUI5ODczMjNDQjM4MDM1NTBBOEQ4MzcgLyogRXJyb3IuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQkE3NTVFQTg1NTA2QkIzMTYwMzNGQUFGIC8qIEZlbmNlLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUY3QTkxNzU0NzA1OTBBMTUwOUVDMTcyRSAvKiBGcmFtZWJ1ZmZl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNzQzNzUyODQ2NkU5NEJGRjJEQTEzQ0IgLyogRnJh
bWVidWZmZXJBdHRhY2htZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDREUzMzVCN0I5MjI3
NUI0NjlGNTM5QiAvKiBIYW5kbGVBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjg0
QTgwNzg0OUNEQThCRkVFNEZCNjREIC8qIEhhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTI2MzlEMTdFQ0Y1Q0IxNzFBQ0JGRTRBQSAvKiBJbWFnZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlCRDhDQkNBQ0RGOEY0QTE5QjAyMTA1OUIgLyogSW1hZ2VJbmRleC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkyNzZENDRCODkyOEU1RjEwNjFCMjZEQkYgLyogSW5kZXhSYW5n
ZUNhY2hlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUQxOEVFOTNGOUM5NzVGRUEwN0JCOTA1RiAv
KiBMb2dnaW5nQW5ub3RhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE1NURDMDM1QUREMjNB
NUFCMkQzMDRFNyAvKiBQYXRoLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJEMDlBQTY2NEYzOEVB
MTk3NjUyNEZBQyAvKiBQbGF0Zm9ybS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1NDI3OTIxQUYy
NkU3Q0Y4NzVFNEE5MUQgLyogUHJvZ3JhbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNTE0MEM1
RUU5NUYzQUIyOEEzNTVGMUIgLyogUXVlcnkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRUUwNEUz
MDAzNEQyMjA2RTI3QkVDNDU0IC8qIFJlbmRlcmJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1QTZDNDlDQkZCRjE5NjU2MUI4NjFDMzUgLyogUmVzb3VyY2VNYW5hZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUE4QUU5MzhCOTUwRUREQ0JFMTQ1MzYwQyAvKiBTYW1wbGVyLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTZFMjY4OTdGMjU1RjQxRDI2NjdDQjc2NSAvKiBTaGFkZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJRUVGODNBREZCMzRCNTI5MUVCRUVGOEJBIC8qIFN0YXRlLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTU3MjU3NDIzQzAxOUZEQjhFMTM0MkJEOSAvKiBTdHJlYW0uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMUI1N0E3QTkzN0RGMUIzOTE2MDc5NUM3IC8qIFN1cmZhY2Uu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDdCODgzRTkwRDRBQjgyNDQ2NUMwOTQyIC8qIFRleHR1
cmUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTVDRjYyODFBMTAyMEI1RTIzMEY3MkQ3IC8qIFRo
cmVhZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwNkUwMjc1ODY3QUFGQTA1RUMyQzlDQzAgLyog
VHJhbnNmb3JtRmVlZGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTZERURGNzY4NzYwNkUw
ODcyQkRBMTczIC8qIFVuaWZvcm0uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMTdFRDFERDlDMEVE
QzJBRjU4OTEyMjFGIC8qIFVuaWZvcm1MaW5rZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMUUx
MjY0QkRFOUE5QzRGRTFGMjA1NkNGIC8qIFZhcnlpbmdQYWNraW5nLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTA0QjQzRkEyQUIyNzZCMkJCM0U5MjQ0NyAvKiBWZXJ0ZXhBcnJheS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGN0I2RkVDNjY4MDc2QjdGQkJGOERFMjggLyogVmVydGV4QXR0cmlidXRl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQ5MTRGODFFMTE4RjBDRDI5RDVGMUE2NiAvKiBXb3Jr
ZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUFGOUQ4Qjg1NTEyMDgzNkU5MUIwRUM2
IC8qIGFuZ2xldHlwZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYzRTA0MTUxRkEwMjY4MTE1
Q0IwOUIxIC8qIGVzM19jb3B5X2NvbnZlcnNpb25fdGFibGVfYXV0b2dlbi5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlCOUYwQkQ1ODFGREFBRDI0Q0Y5QUM3Q0IgLyogZm9ybWF0X21hcF9hdXRvZ2Vu
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVCRjQ3NDgxNUM1QjFDMzZCNEY1RUM3QSAvKiBmb3Jt
YXR1dGlscy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QUJBNUYxQjVCQTFCNDQ1MDQ5QTRGNEEg
LyogcXVlcnljb252ZXJzaW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3OTQ5OUMxMTIzQTEx
NEI1RDRCNEUyRkUgLyogcXVlcnl1dGlscy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTc2Njgx
MDcyOEJDNTg3Mjk2REZDNDMgLyogQ29udGV4dEltcGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NjNDRDRBNjcxRDQ5MDJFMTNGODM5MzE4IC8qIGRyaXZlcl91dGlscy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk1N0E0NzQ2RENGNUE4QkFBM0ZDOUZDQ0YgLyogRGV2aWNlSW1wbC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkyOTc4QTg1NDJDMjRGOEU2MzZDNUZFODkgLyogRGlzcGxheUltcGwuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJOThBNzBFRUY1MTRDQ0I4MTM1QkIzNzMwIC8qIEZvcm1hdF90
YWJsZV9hdXRvZ2VuLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCThDMUQ0NDIxNzg3NTZFN0M1ODJF
N0Y1MiAvKiBTdXJmYWNlSW1wbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2MTk2RkZFRDU4RDky
NTM4NzdFNDIyOTEgLyogVGV4dHVyZUltcGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJM0VGQjE1
NzU3ODc0NDgwOEU1MkFCMjc5IC8qIGxvYWRfZnVuY3Rpb25zX3RhYmxlX2F1dG9nZW4uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNzY4REI1RUJBOTk0RTk0MEYwRjZCMzhBIC8qIHJlbmRlcmVyX3V0
aWxzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY1NzY5ODU3N0Y0Mzk2RjAwRUE1QzBBMSAvKiB2
YWxpZGF0aW9uRUdMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUU2Q0U3QTkwOTREOUFGOUM5NzVF
NjBCNyAvKiB2YWxpZGF0aW9uRVMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDYzNEE3MTU0NEE0
OTUyOThCMDAyMjhBIC8qIHZhbGlkYXRpb25FUzIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTJG
ODNGMTBDNDBCRTFGMDgzM0UwQUY4IC8qIHZhbGlkYXRpb25FUzMuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMzc5QkUzNEI0NjIyRjU3QkI0QTJCRjY5IC8qIHZhbGlkYXRpb25FUzMxLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTc2MzZFNTZBRThERjI2REE4M0FFQzVCMyAvKiBNdXJtdXJIYXNoMy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk3QUI5NDY5ODg3RjQxNTUyQzMxNzE2NzEgLyogQmxpdEdM
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJCRjQ5MTVCNDU1Q0ZDQjdCRUIyODJDMSAvKiBCdWZm
ZXJHTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QTYwNDQwMUI3Q0JGNTBERDYyNEU2ODUgLyog
Q29tcGlsZXJHTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3OEMyNkYwMzQ1RTRBMkRCQUQ5Mzg3
ODggLyogQ29udGV4dEdMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTAxRkI4ODM3RTM5QjUzMUIz
OUE4RjQyQyAvKiBEaXNwbGF5R0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjQwRDI5NEVFQTNF
QUM3NzQwQjExRjQzIC8qIEZlbmNlTlZHTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk2RDQxOUNG
OThCNkU2MUZDODkwQzhEOTEgLyogRmVuY2VTeW5jR0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QTIxMTNFQ0Y1QjFFNUY1MTg5QkQwRTQwIC8qIEZyYW1lYnVmZmVyR0wuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJRTUwNkFEMEZCRDRDNTEyQjBFRThDMDNDIC8qIEZ1bmN0aW9uc0dMLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTUyRENFNDczQkRBREREQTJCREIzQzQwMiAvKiBQYXRoR0wuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJRDFFMDhGN0ZBRDlEQkQ3RUEyRUI2QUMwIC8qIFByb2dyYW1HTC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk1MzQ1NEI1QTYxNUFDQkUwMjY5M0Y1QjggLyogUXVlcnlH
TC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MjFBMDFBMjU0MzJENTI1RTg0QUY3RjIgLyogUmVu
ZGVyYnVmZmVyR0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRUNEREMwNjE5MzQxMzA0OUIwNDAz
QjIxIC8qIFJlbmRlcmVyR0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODM5NjZERjE2N0RGNzFG
RjA1M0EwM0Y2IC8qIFNhbXBsZXJHTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQUMwNDg5OTM4
NzVENTcxQzc2RUUyRTYgLyogU2hhZGVyR0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjMxOEE0
QTlERUNEMTQ2ODMyNDBCQzI2IC8qIFN0YXRlTWFuYWdlckdMLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTc5Qjk2M0VBREJDNzU3RkI1QzU1NEMyMCAvKiBTdXJmYWNlR0wuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMUJERTI5REVBNTNGQ0UyNkIwOEU1ODEwIC8qIFRleHR1cmVHTC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwN0ZCOTEyQ0I0RkYyRTJGN0IzQjNFMzcgLyogVHJhbnNmb3JtRmVlZGJh
Y2tHTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3Njk5N0RDMTU5NDQ2OUY0NkEwMDRBQTQgLyog
VmVydGV4QXJyYXlHTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBRTM1RkQzQUMyNzExMzA1RDJG
Qzk2NzQgLyogZm9ybWF0dXRpbHNnbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4NDk3RDJGODJF
QURERDZGMzBGODMwMzQgLyogcmVuZGVyZXJnbF91dGlscy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlCNjA5RTQwMUQ0QTgyMDI4N0E2RThCRjEgLyogRGlzcGxheUNHTC5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTdENTBERTRBNjlBMzJDRUJCMDZCQTQ0OCAvKiBQYnVmZmVyU3VyZmFjZUNHTC5tbSBp
biBTb3VyY2VzICovLAorCQkJCTMzMzVCQjZGMjE2RDgxNTM1NTIyNTE0MCAvKiBXaW5kb3dTdXJm
YWNlQ0dMLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQzE5NDQyMTI5NTA3QjBGOURBM0UzREQ1IC8q
IEJ1ZmZlck5VTEwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJODBGODFFODA3REIzMEIyMDA1RjE5
QTY0IC8qIENvbXBpbGVyTlVMTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFM0FGMTcwMDExNzQ2
QzVCRTA4RkNCNTEgLyogQ29udGV4dE5VTEwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDNCQUMw
NzU0OTY5Q0NFMkQwQ0MxRjEzIC8qIERldmljZU5VTEwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MjZEM0FDRjI1RDk5ODZBOTlGRTBCRjUxIC8qIERpc3BsYXlOVUxMLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUJBMTgyRDMzQTc3M0UzMTA5MDBCQTU1MCAvKiBGZW5jZU5WTlVMTC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGMUZCNkUyOTlEMTMxNkJBMkMyMjBGNDEgLyogRmVuY2VTeW5jTlVMTC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwMkQ5MTRENkY5Q0E0ODIyQ0IyMkE1Q0YgLyogRnJhbWVi
dWZmZXJOVUxMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE0NTUyODBBMTAxMjg1MkIyMjg1OEVD
RSAvKiBJbWFnZU5VTEwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRDc5MEQ4MzBERkFCRTBDOEJF
QUUzMTJBIC8qIFBhdGhOVUxMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM3MDgxMjk0MjgwODNE
QjkxNkREN0MzMSAvKiBQcm9ncmFtTlVMTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyODgzNDUw
NzZCMUMwMkRDMkExRDMzNTAgLyogUXVlcnlOVUxMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTZC
Q0VCMTMwQUFFREY3NjI1M0QyMzVDNyAvKiBSZW5kZXJidWZmZXJOVUxMLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTY3NDZCQUNBNTExN0M0Q0Y4MTk2MzlFNSAvKiBTYW1wbGVyTlVMTC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3MEY0QUUxMDdFNURDMTg0MEExMUJDNjMgLyogU2hhZGVyTlVMTC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlGNTA2MEI2RkVBODkxNzAwMENCOUY1MEQgLyogU3VyZmFj
ZU5VTEwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRDlBREI0NkE3QzM5QUMwOTM0OTAwODlBIC8q
IFRleHR1cmVOVUxMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTIwRDU4QzRGMDZDOUFGQjI3NUFE
REQ5NCAvKiBUcmFuc2Zvcm1GZWVkYmFja05VTEwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEU1
OTFEMjFGQTcyQ0RBOTg4MDlFOTIwIC8qIFZlcnRleEFycmF5TlVMTC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJ
fTsKKwkJMkFDRTZEQkQ2NUY1MThFMjYzQUI3ODY1IC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CisJCQlmaWxlcyA9ICgKKwkJCQlDQUEzOTkzMTUyQzNBQzg0ODdGMjk3OTUgLyogbGliRUdMLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOworCQl9OworCQk0OUI4NDhFOURBNzJCMEU3NUM0RTI4QUYgLyogU291cmNlcyAq
LyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCUYzNzY2REI5NTBFRDUyNUE5QTMyNThC
NyAvKiBjb3B5aW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTYyRjI2Mjk2NDdBNTI3MjAy
OEZGQTRFIC8qIGltYWdlZm9ybWF0cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MDM3NUUxQ0Q5
OTlENEFCRkQ0NTFCN0MgLyogbG9hZGltYWdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUU2MTg0
RThDODhDQzcwN0VGNEE1QzExMCAvKiBsb2FkaW1hZ2VfZXRjLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9Owor
CQk2Nzc3NjhCM0U5NDRFQTg1NTc1MzBGNEEgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBC
WFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJ
CWZpbGVzID0gKAorCQkJCTYzMTdCNzAyNUY5NTRENzA1NzA2MDRDQSAvKiBTeXN0ZW1JbmZvLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTMyQjZGQzNCMDQ1NkZCQzZDNDQ0MDdGMSAvKiBTeXN0ZW1J
bmZvX21hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworCQlDMzhFRjFGQUIzM0REMTkzOThFMURBQUIgLyog
U291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCUU4M0I3NTA2NkQzMjRG
M0I5RjFGQThGRSAvKiBBZGRBbmRUcnVlVG9Mb29wQ29uZGl0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTIxNzk0MjMxQjg1RTgwRjhBNkI1NkVDMCAvKiBCdWlsdEluRnVuY3Rpb25FbXVsYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5Nzk1NkZDNzQyQjhEMUIyNzlEOERDNEEgLyogQnJl
YWtWYXJpYWJsZUFsaWFzaW5nSW5Jbm5lckxvb3BzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTc0
NDk0MEE5QTA0QkYxQUNBMDRFMUU5RiAvKiBDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQky
NTJERkZGQjU4OTdFNEMxOTkxNDM4RTAgLyogQ2FsbERBRy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlCQzRBMUQ5NEE5MzA4NTdEMEE1Nzg1NjMgLyogQ29kZUdlbi5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlGMDRGRDEwNkJBN0ZDRTU3NTNBNkJENjIgLyogQ29tcGlsZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJRDFBOEQzOTI2OEFDNDE1M0MzMDRGNjhEIC8qIENvbnN0YW50VW5pb24uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQ0UzRjI1OUZENDc3RjRBNDgzMjE2QjRFIC8qIERlZmVyR2xvYmFs
SW5pdGlhbGl6ZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUU2RTAwODdDODlCN0QzMDY0NDdE
NzJBOCAvKiBEaWFnbm9zdGljcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzOUJBMTE5NUUyOUI2
NkI2M0E2QUIxNzggLyogRGlyZWN0aXZlSGFuZGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkz
QzFFNzg4QjdDNEQwQTlENjc3NjQ2QzUgLyogRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTQ1RDc2MUZFRkE3QURBMzEzMUMwRkNCMyAvKiBFbXVsYXRl
UHJlY2lzaW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUFCRDYzQkYxMkQxNDUzQ0NBQjYxNEI2
QyAvKiBFeHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NUJENDBBMDhEQUFCNzE4QkQwOUJGQjlBIC8qIEZpbmRTeW1ib2xOb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUExMjZBNzYyNUFERUM5MTU4QzA4OEMyNyAvKiBGbGFnU3RkMTQwU3RydWN0cy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk4OUM3RDQ2Qzc3RkQyREIzMEY3OTY3NjggLyogSW5mb1Np
bmsuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEQ4MzJGN0NCOTVCRTA1NTk3NkNDMDBBIC8qIElu
aXRpYWxpemUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOEE1QkU5NjQ0QTlBOENGMkYxQjUzMjc2
IC8qIEluaXRpYWxpemVEbGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOEI1Q0I3MTFBMkNBMjQx
RDIwOTcwM0U5IC8qIEluaXRpYWxpemVWYXJpYWJsZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
ODlDRjlGNDU2NjMyMDc5NkZFRjMzRUFFIC8qIEludGVybU5vZGUuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJRjY1NDU1QTBENDkwRUJCRjA5OEMwMkM1IC8qIEludGVybVRyYXZlcnNlLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUM0MTNFRDFDN0JDQTk1NTc4MjQ1Mjc0MyAvKiBJbnRlcm1lZGlhdGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjk3NTEyODUwMkUyREMwNURBNUU2NUFDIC8qIE9wZXJh
dG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZCNjI1OENENkIzRTk4NDE5OUUyQjUwMiAvKiBQ
YXJzZUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTI1NzlCRjM2Q0NCQzc5NUFFNEYz
QzYzIC8qIFBvb2xBbGxvYy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlEMTY5M0ExNzU0QUQ4NkEw
NUI3NkZBNUUgLyogUHJ1bmVFbXB0eURlY2xhcmF0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk3NDY4NERFN0MyNTREMDI2N0EwQzNEQTcgLyogUHJ1bmVQdXJlTGl0ZXJhbFN0YXRlbWVudHMu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRDc5RUM0MjI4RjlFODA4MTI3QzhGMTI0IC8qIFF1YWxp
ZmllclR5cGVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTE1QjgwMERFMzcxOTM4QjIwQjdDOUMy
RCAvKiBSZWNvcmRDb25zdGFudFByZWNpc2lvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzQTgw
NDdBNUNCMzM5MEE4MTNBMzY4MDQgLyogUmVnZW5lcmF0ZVN0cnVjdE5hbWVzLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUI3QjJEMzE2NTFEMjJFM0EzOUE1MkMwRiAvKiBSZW1vdmVJbnZhcmlhbnRE
ZWNsYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQTA1NjBDQUZEODhBODI2NEZBOERD
MDggLyogUmVtb3ZlUG93LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUM5NjU5QjFFM0Y4NkUyOEM1
ODJFQjQwNyAvKiBSZXdyaXRlRG9XaGlsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzQjZFRjMy
RTFBRjU2OUJEQ0MyQTkyQUUgLyogUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJNzZDQzZGNkZCRUZCRkJDQUY0NTM4MzlFIC8qIFJld3JpdGVVbmFyeU1pbnVz
T3BlcmF0b3JGbG9hdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyRDg0QjgyRDk2OUIyNzJFRjkw
NThDOUYgLyogUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk1RDc4NkM1MUZDMTQ5NjJDNTUyRDQ4NTMgLyogU2NhbGFyaXplVmVjQW5kTWF0Q29uc3Ry
dWN0b3JBcmdzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUQzRjNEMTYwMkIwRUMwMEIwNDhBNzA2
NSAvKiBTZWFyY2hTeW1ib2wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0NFQjhGREY5NDkyNUE5
MDI4OUMyNzQ0IC8qIFNoYWRlckxhbmcuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJREFCNzA5RTFB
QkZGNTVGN0UyNDc2OUI0IC8qIFNoYWRlclZhcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTcz
RDcyRjA2MkU2M0JENzREMzE4NTQzIC8qIFN5bWJvbFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUIzRDk1Nzg5MEJDNTZFQ0NFQTI2OEJBQyAvKiBUeXBlcy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkzMUIwRDhGODAzNUUxMDY2MkZFREZBODIgLyogVW5mb2xkU2hvcnRDaXJjdWl0QVNULmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTczNjYzOEUwMUQzODlEQkIwREFCMzYwOCAvKiBVc2VJbnRl
cmZhY2VCbG9ja0ZpZWxkcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlENTExMTIyRjRCMkI0MjMw
NTY5MjY2NUQgLyogVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlCQjhGOEJGOThCOEU3N0M5NDVEMEIwNEQgLyogVmFsaWRhdGVMaW1pdGF0aW9ucy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlGNkM5MkQ3NEYxNUFFOEYwMDA4M0RCRkMgLyogVmFsaWRhdGVN
YXhQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdFODQ4M0U1NDc3RkQxNjE3M0NG
MDM5RiAvKiBWYWxpZGF0ZU11bHRpdmlld1dlYkdMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM1
OEM3MTgwRUY0N0VGMjA4QzgwREUxQyAvKiBWYWxpZGF0ZU91dHB1dHMuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJRDA5NzgxRTY3QUVFQkY2MjA2NkM3NTg2IC8qIFZhbGlkYXRlU3dpdGNoLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUMyRkM0QjBCMzExMjdCQkFBN0UxNURGRSAvKiBWYXJpYWJsZUlu
Zm8uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRjdFQTI4MTM4ODVGRjg4QUNBOTkyODVGIC8qIFZh
cmlhYmxlUGFja2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTIwQjE0NTMyMTMxOTcyMUQ2MkI5
MTdEQSAvKiBibG9ja2xheW91dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzRTM5MzI4ODQ2MjY1
NTFFN0E4QTUyODIgLyogZ2xzbGFuZ19sZXguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQUUwOTAy
NjQ4NkFGNjhFODFFNEY4QzYwIC8qIGdsc2xhbmdfdGFiLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUIxNkYzQkVGQzBGRDAyNDEzOTQ4MjBFMiAvKiBpbnRlcm1PdXQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNUZBOTU4NEE4Q0RCNzVEM0NDMEU0RTgyIC8qIHV0aWwuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJODlGQ0UyRjkzQ0E4NzYyMDRENzc3NTU2IC8qIEFycmF5Qm91bmRzQ2xhbXBlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlFRDcyOTc3NjJGOUE0MzFDRUYyMUU1NjggLyogT3V0cHV0RVNT
TC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4RUZDQURBREZGQTU1N0MxNEQwMjI4NDQgLyogVHJh
bnNsYXRvckVTU0wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzc4MzY5NEE2MDlEOURFMTZFRjVC
NEZGIC8qIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yR0xTTC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk5QTdGMjA0Qjk2NjM1RTFCRDE0OURBRTIgLyogRXh0ZW5zaW9uR0xTTC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk5MjlCMDFEMjk5NkQyMENENDFEMEI3NDYgLyogT3V0cHV0R0xTTC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkxRDdFQTE5MUNDMEM0QkFGMjI3NUM5RkUgLyogT3V0cHV0R0xTTEJh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzRDOTVBRjY2RTcxMzMxMkU5RDZERjlGIC8qIFRy
YW5zbGF0b3JHTFNMLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdFNTFGRTQzQUU4Q0Y1RUU2N0Q5
NzgzRiAvKiBWZXJzaW9uR0xTTC5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJQ0ZDODkxQ0Q3QTZBQzc0
NDQxNkE5QkFFIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlB
RTEzNjI1OTU5RTQzMDI3MjI1NTQwMjAgLyogRGlhZ25vc3RpY3NCYXNlLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTREQzk3NTkwQUVDREE4QzkzRDU3QURFQSAvKiBEaXJlY3RpdmVIYW5kbGVyQmFz
ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNUExRDI2RDJEQjRCREY3NjJFMjBENjcgLyogRGly
ZWN0aXZlUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTFBMjMwQTU4MjdCNTlFNjJBRUM3
RjhGRiAvKiBFeHByZXNzaW9uUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTM1RjU1Q0Q0
MEJBNzIxNTIzOTQ1QUEzNCAvKiBJbnB1dC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDQzIzRDhG
MzhDQTU3NUMzOTAyRkE2Q0EgLyogTGV4ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTUzMzQ5
QzE2RUUwQUU4NDBDMzhDNkJDIC8qIE1hY3JvLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUQ5Rjk3
MkJBQkE4MzhGMUE4MkQ3RjU5RSAvKiBNYWNyb0V4cGFuZGVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUM4MjIwNzE2MTNGMDg4RTEwNkNFRUMwRCAvKiBQcmVwcm9jZXNzb3IuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJOUIwQzYxMTFDQjI5OUQzNUU1OEQ3RDU4IC8qIFRva2VuLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTVGREVCREMwMENBNjQyQkIwODY5Rjg5NiAvKiBUb2tlbml6ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CisJCX07CisJCURCNTMzOEIwMTQ3OEZERTM2QUQ0QkQ3NyAvKiBTb3VyY2VzICovID0g
eworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJQjE4MUM0NDJBMzI3NjE0RDFDODQ0RjFCIC8q
IGVudHJ5X3BvaW50c19lZ2wuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMjI4QjAxMjE4RkExNkMx
RkM5MkE2MTgwIC8qIGVudHJ5X3BvaW50c19lZ2xfZXh0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTlCQkUxMkIxRjM5Q0ZGMkM0NUE1N0Q4RiAvKiBlbnRyeV9wb2ludHNfZ2xlc18yXzAuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNzIyNDY2RUJEMERFMjA5QTlGQTYyRjczIC8qIGVudHJ5X3BvaW50
c19nbGVzXzJfMF9leHQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDlCMDk2QUNDOTdDNDlBMUFF
NThBQzZEIC8qIGVudHJ5X3BvaW50c19nbGVzXzNfMC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
QzE0NjVCQzZFMjZDNDMyN0NENEVEMkQgLyogZW50cnlfcG9pbnRzX2dsZXNfM18xLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCURGRjM3NEM3RUI2NzNDMkZENTE5NDQzOSAvKiBnbG9iYWxfc3RhdGUu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOEM0NDk1NTg2RDVFREFFREU3NkVDQkZGIC8qIGxpYkdM
RVN2Mi5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKwkJRUNDMkI2ODIxNTA4REJGNzA4MTk5MjgxIC8qIFNv
dXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlDNjk4NzRGRDM1NkQ2NUIy
RDU4QjhCNTIgLyogRmxvYXQxNlRvRmxvYXQzMi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwMEQw
NTEwQkVGRjM1RUQ5NDczQkE1QTMgLyogTWVtb3J5QnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTcwQzZFRDk0OEZBQTJBNkM3RTc3QjIxMSAvKiBhbmdsZXV0aWxzLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUY5NjlERDc1NkE2RkRGRTQ4NDQ2NDMyQiAvKiBkZWJ1Zy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQk3MTU4MDRCQkEyOTVFMjYyMjIzMDJDRjYgLyogbWF0aHV0aWwuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMzFCNTAyN0NFMDg5ODE3NTUxNDcyQjYxIC8qIHN0cmluZ191dGlscy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlDOTdBQTFEMDc4QUZEOUMwRTE3NDgzMkYgLyogdGxzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTNENzlEOTNEQzEyRjNCRUFGN0FFNTIzOSAvKiB1dGlsaXRp
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTQ5NUUyQUIxODE5NEZDNTMwODgzNTMyIC8qIHN5
c3RlbV91dGlsc19tYWMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisJCUVENjk2MzMyOTE4QTA1NzBFNDg1
RENCMSAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJOTgwRjA5
MEM1NzlFNjE5MkM4N0FDMzg5IC8qIGVudHJ5X3BvaW50c19lZ2wuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJRDExREVGRUI0NkZFMzA1MDM4MkQzODA1IC8qIGVudHJ5X3BvaW50c19lZ2xfZXh0LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTkyMjE5RUQwOTQwMjM3NTY1NEU1OUEzOSAvKiBlbnRyeV9w
b2ludHNfZ2xlc18yXzAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0U4NDNEMjA5QTIyRDM1Nzg1
OUI0Nzc1IC8qIGVudHJ5X3BvaW50c19nbGVzXzJfMF9leHQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRTA5QzRDRUFGNEVCRDE4QzdCMjkzMDA2IC8qIGVudHJ5X3BvaW50c19nbGVzXzNfMC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk1Nzc3RTcyQTcyQzEzNUI5N0M3RDMyQUQgLyogZW50cnlfcG9p
bnRzX2dsZXNfM18xLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTNDRDY5MjUzRTAxNEE4MjczNTcx
OEVFQyAvKiBnbG9iYWxfc3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMDFBMzFGNzk1NjIw
M0M1QTM5MDhBQzM5IC8qIGxpYkdMRVN2Mi5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhT
b3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVu
Y3kgc2VjdGlvbiAqLworCQkwRUNEREYyNjMzQjQwMTc4NzI3RjNCODUgLyogUEJYVGFyZ2V0RGVw
ZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQg
PSBDNjk4OTZCNEREMkMwNkNGMTYxNkJEQzYgLyogcHJlcHJvY2Vzc29yICovOworCQkJdGFyZ2V0
UHJveHkgPSBERTVCNTlGMzQxRUIzMUUwNjI4N0JGMUMgLyogUEJYQ29udGFpbmVySXRlbVByb3h5
ICovOworCQl9OworCQkxMDFBMzAzNUEzMjI1MDg0REI4MjdFNEIgLyogUEJYVGFyZ2V0RGVwZW5k
ZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSA4
MDk1RkY2NTQzMEYzNjY2RDY1ODdGN0YgLyogbGliQU5HTEVfcmVuZGVyZXJfY29uZmlnICovOwor
CQkJdGFyZ2V0UHJveHkgPSAxMTdFQkEzQ0U0OTNEN0M3N0M3RjIyN0EgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovOworCQl9OworCQkyNUY0Qzk1NTY2RUExN0JFOTlFMDFDOTIgLyogUEJYVGFy
Z2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0
YXJnZXQgPSA4MDk1RkY2NTQzMEYzNjY2RDY1ODdGN0YgLyogbGliQU5HTEVfcmVuZGVyZXJfY29u
ZmlnICovOworCQkJdGFyZ2V0UHJveHkgPSBBQzkyNzlDNjg4OTYwREU1RkQ4NUI5RDcgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkyQTg3OUU2QjVBM0ZBQTg1Q0RBQjFEMzIg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSA3OTJBQkY0ODg0QThGREFFODE2OTBEREUgLyogYW5nbGVfY29tbW9u
ICovOworCQkJdGFyZ2V0UHJveHkgPSBFQkRFQzRCOTlCMkEyMTUyNDE1NUJGMTggLyogUEJYQ29u
dGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkzN0IyOERDRDcxMEUwRjBCQjIxOUQ5RDAgLyog
UEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7
CisJCQl0YXJnZXQgPSBDNzAxMjg0NUM1RkUzOUFCMDg0QTMyRDggLyogYW5nbGVfZ3B1X2luZm9f
dXRpbCAqLzsKKwkJCXRhcmdldFByb3h5ID0gRjJDNTc4OTIzQjNDQTU5OTFCQUI4NEUxIC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJMzlCOTNDMEU2QThCRUYyNkM2OEY4ODgx
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRl
bmN5OworCQkJdGFyZ2V0ID0gNzQ5ODE5NDRFMUZCNkRENzYyQTA3RDNGIC8qIGxpYkVHTCAqLzsK
KwkJCXRhcmdldFByb3h5ID0gOEYxRUE4RUY5MzBGOTRCMEQ5QjE4RDhCIC8qIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJM0ZCRDZCRDI4RDA4NUFDMEM4MzBFNTA5IC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJ
dGFyZ2V0ID0gNTVFNzAxRDQ4RDZGNzVGREUwRkI1Qjg5IC8qIGNvcHlfc2NyaXB0cyAqLzsKKwkJ
CXRhcmdldFByb3h5ID0gNjkyRjUyMjk1N0U0RjAyMjQxNkYwMjZCIC8qIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSAqLzsKKwkJfTsKKwkJNDUwMEY1N0U0RjU1NjI5QjM0M0U4QzI0IC8qIFBCWFRhcmdl
dERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFy
Z2V0ID0gNUQ0QzlCRjExQTIyREIwQ0UxQTQ0MTIxIC8qIGxpYkFOR0xFX2QzZDExX2NvbmZpZyAq
LzsKKwkJCXRhcmdldFByb3h5ID0gQzRCN0UzNTA2RDQ1NDY1MDI1NjFGNjZDIC8qIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJNDdCNTk1MDJDMDA0QUYwOTdEMjI4NDMxIC8qIFBC
WFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5Owor
CQkJdGFyZ2V0ID0gNTVFNzAxRDQ4RDZGNzVGREUwRkI1Qjg5IC8qIGNvcHlfc2NyaXB0cyAqLzsK
KwkJCXRhcmdldFByb3h5ID0gN0EzMUM4MDE0RUIxOEUxOTJBRUUwMUEwIC8qIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJNEQ3NzgzQzk2Rjk5MTdGQ0U0OTc5M0NFIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJ
dGFyZ2V0ID0gNzkyQUJGNDg4NEE4RkRBRTgxNjkwRERFIC8qIGFuZ2xlX2NvbW1vbiAqLzsKKwkJ
CXRhcmdldFByb3h5ID0gM0I3NTQ0RUNDNTlBNzg1MTNDQzRGNDM5IC8qIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSAqLzsKKwkJfTsKKwkJNTBBMkVBMzY5RDQ2NkE3Q0Y1MDE2NzYzIC8qIFBCWFRhcmdl
dERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFy
Z2V0ID0gMjdCNDM2QzdDRUY5Mzc4ODk0NjQxMURFIC8qIGxpYkVHTF9zdGF0aWMgKi87CisJCQl0
YXJnZXRQcm94eSA9IDBFMTA2NDlDMjkwRkVBN0RGQjQ3QzcyOCAvKiBQQlhDb250YWluZXJJdGVt
UHJveHkgKi87CisJCX07CisJCTUzNDEzRDBDMTk0MTNEMkM1Nzg1NjYxNCAvKiBQQlhUYXJnZXRE
ZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdl
dCA9IDU1RTcwMUQ0OEQ2Rjc1RkRFMEZCNUI4OSAvKiBjb3B5X3NjcmlwdHMgKi87CisJCQl0YXJn
ZXRQcm94eSA9IEI1RjYxM0E4RUYxOUYyMkQ5RDNBQ0I5RCAvKiBQQlhDb250YWluZXJJdGVtUHJv
eHkgKi87CisJCX07CisJCTVCQTUyODdGRkU5RTM4QzMxODgzQjUzNiAvKiBQQlhUYXJnZXREZXBl
bmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9
IDk1OTQ1N0I1N0FFQjQwOTU4NEU0ODg3MCAvKiBsaWJHTEVTdjIgKi87CisJCQl0YXJnZXRQcm94
eSA9IEI1OUYxNkI3MEYyMjhEQTVFQkZCRDhCNiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87
CisJCX07CisJCTVDOTM4MTlBOUQ4NDlBN0EyNDdBNjM0NyAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDgwNTUx
Q0Q3RUIyNDBGMDlGNzU1REFDMCAvKiBjb21taXRfaWQgKi87CisJCQl0YXJnZXRQcm94eSA9IEJG
RDBBREY0Q0EzMEUxQjg0RTgyNTU2NCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07
CisJCTVDOTVGNkU4QURDN0Q3NzEzNEFFMEU1MCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0g
eworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDgwNTUxQ0Q3RUIy
NDBGMDlGNzU1REFDMCAvKiBjb21taXRfaWQgKi87CisJCQl0YXJnZXRQcm94eSA9IDc1MUM5Q0VG
ODQwNkZGRDI2OUREMjU1QiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTVG
Rjc4NzhBNzI4MEJBOUFFOUU1MTY1NCAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJ
aXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IEI4QzdDMTQyNzUxRjFFMTQ5
OEE2NTJENCAvKiBsaWJHTEVTdjJfc3RhdGljICovOworCQkJdGFyZ2V0UHJveHkgPSA5NEQyRUY4
MjQwMjk5MTIxRjY4QTlDNTggLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQk2
MTlDNUM4MUE1NDI5N0ZGRDk3N0NEOTMgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJ
CWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSBDNzAxMjg0NUM1RkUzOUFC
MDg0QTMyRDggLyogYW5nbGVfZ3B1X2luZm9fdXRpbCAqLzsKKwkJCXRhcmdldFByb3h5ID0gODQz
N0JBNzg4QzBFOTIyODc2NTU2Q0MyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsK
KwkJNjc1Rjk3NzVERDkwNzY4QTkzN0E3RTY2IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7
CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gODA1NTFDRDdFQjI0
MEYwOUY3NTVEQUMwIC8qIGNvbW1pdF9pZCAqLzsKKwkJCXRhcmdldFByb3h5ID0gNDdFMUVGM0VE
Q0UwRERFMzQ5OTUxODdCIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJNjk1
MThGNDFCRDJGQTBDNDkzMzIwQTRBIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlp
c2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gNUQ0QzlCRjExQTIyREIwQ0Ux
QTQ0MTIxIC8qIGxpYkFOR0xFX2QzZDExX2NvbmZpZyAqLzsKKwkJCXRhcmdldFByb3h5ID0gOTJC
QzUyRDFBMURENDQ5NjhERkM2ODBFIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsK
KwkJOEQ5RUQ5M0VBQTA4QkE5MkY0NDY1NDU0IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7
CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMUY4OENERUI0NEU3
QzcxQzI4MkZBOTc1IC8qIHRyYW5zbGF0b3IgKi87CisJCQl0YXJnZXRQcm94eSA9IDc1NUEyOUYx
QjIxM0RBQTExMzc3Mzc5NyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTlE
QzZGOTZBQUFCNkNBRjkxOUIzNEE0NSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJ
aXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDgwNTUxQ0Q3RUIyNDBGMDlG
NzU1REFDMCAvKiBjb21taXRfaWQgKi87CisJCQl0YXJnZXRQcm94eSA9IDBDQzEwNUMzNEE1MkQ0
NTYwMDQ1OEVGQSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCUE2MTNGOEFD
RDdENzE0RDU0NUNEOTIxOSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0g
UEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDk1OTQ1N0I1N0FFQjQwOTU4NEU0ODg3
MCAvKiBsaWJHTEVTdjIgKi87CisJCQl0YXJnZXRQcm94eSA9IEU5MkI4MUQ3MThCRUFGMUE5MjY3
QjM3QyAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCUFEOTZCNzEwMkVFNEFG
NDRFNkMwREUxMSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFy
Z2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDE3RjgzRTk2NDk4QjUwMEI3N0QzNzExOCAvKiBh
bmdsZV9pbWFnZV91dGlsICovOworCQkJdGFyZ2V0UHJveHkgPSBEQjkwM0QxN0RFRTlGRDNBNjI4
Mzg0NDYgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQlCMzc2OUY5MjJDMjA2
QUEzOEI1QzQwMTQgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRh
cmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSA1RDRDOUJGMTFBMjJEQjBDRTFBNDQxMjEgLyog
bGliQU5HTEVfZDNkMTFfY29uZmlnICovOworCQkJdGFyZ2V0UHJveHkgPSBDRkMwOUQ4QjUyOUI1
RkE2NDRFOTBGQTQgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQlCQUVEOEMy
MkFCRTkxODk5REE4QUUxREYgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9
IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSBDNjk4OTZCNEREMkMwNkNGMTYxNkJE
QzYgLyogcHJlcHJvY2Vzc29yICovOworCQkJdGFyZ2V0UHJveHkgPSBDRDI0ODZGODBFNUY5MDIx
N0VENzNDQUYgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQlCRDUyRjEyQURE
QjBBRjUxREFEMkE5OTYgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBC
WFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSA2RDdFNjMzMjhGODczODRGRjM5M0FBMEIg
LyogbGliQU5HTEUgKi87CisJCQl0YXJnZXRQcm94eSA9IDBFREJEOTJFQzZBNkExRDNEMTg5QjQ1
NiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCUJFQjY0RjU0QzM5RjFFNjdB
NTQ5RTQyQiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0
RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDE3RjgzRTk2NDk4QjUwMEI3N0QzNzExOCAvKiBhbmds
ZV9pbWFnZV91dGlsICovOworCQkJdGFyZ2V0UHJveHkgPSAyNjg4NkNDRDQ1QkQzMkVCNjA0MzI2
QUEgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQlEMjI4QTczQjRBMDc1NjJC
RDIyRjFFOTEgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAxRjg4Q0RFQjQ0RTdDNzFDMjgyRkE5NzUgLyogdHJh
bnNsYXRvciAqLzsKKwkJCXRhcmdldFByb3h5ID0gRDhGOUM2QUEyQTJERUQ1QzZBMTkzQjVEIC8q
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJRjY3QTc2RDgwMjA0N0VCM0VGOTdD
MzI5IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBl
bmRlbmN5OworCQkJdGFyZ2V0ID0gNkQ3RTYzMzI4Rjg3Mzg0RkYzOTNBQTBCIC8qIGxpYkFOR0xF
ICovOworCQkJdGFyZ2V0UHJveHkgPSBCMzUwRUYyQTlFNjYwNzI1OTRGNUQyQUUgLyogUEJYQ29u
dGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQlGQjcwNEM5NUU4MEZERDIyNTU3MTRFREIgLyog
UEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7
CisJCQl0YXJnZXQgPSA4MDk1RkY2NTQzMEYzNjY2RDY1ODdGN0YgLyogbGliQU5HTEVfcmVuZGVy
ZXJfY29uZmlnICovOworCQkJdGFyZ2V0UHJveHkgPSA3QTRBQjg4MTI3RDhDMUY5MEJFQURGNkUg
LyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworLyogRW5kIFBCWFRhcmdldERlcGVu
ZGVuY3kgc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9u
ICovCisJCTA4Q0IyQUUwMkJFQUZEQzgxNTk1OTZCRCAvKiBSZWxlYXNlICovID0geworCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNMQU5H
X0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJjKysxMSI7CisJCQkJRVhFQ1VUQUJMRV9QUkVGSVgg
PSBsaWI7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJTElCQU5H
TEVfSU1QTEVNRU5UQVRJT04sCisJCQkJCUFOR0xFX1NUQU5EQUxPTkVfQlVJTEQsCisJCQkJCUFO
R0xFX0VOQUJMRV9FU1NMLAorCQkJCQlBTkdMRV9FTkFCTEVfR0xTTCwKKwkJCQkJQU5HTEVfRU5B
QkxFX09QRU5HTCwKKwkJCQkJQU5HTEVfRU5BQkxFX05VTEwsCisJCQkJCU5ERUJVRywKKwkJCQkp
OworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCS4sCisJCQkJCS4uL2luY2x1ZGUs
CisJCQkJCXRoaXJkX3BhcnR5L2tocm9ub3MsCisJCQkJCSIkKFNIQVJFRF9JTlRFUk1FRElBVEVf
RElSKS9hbmdsZSIsCisJCQkJCS4uL3NyYywKKwkJCQkJLi4vc3JjL2NvbW1vbi90aGlyZF9wYXJ0
eS9udW1lcmljcywKKwkJCQkpOworCQkJCVBST0RVQ1RfTkFNRSA9IEFOR0xFOworCQkJCVdBUk5J
TkdfQ0ZMQUdTID0gKAorCQkJCQkiLVdhbGwiLAorCQkJCQkiLVdjaGFyLXN1YnNjcmlwdHMiLAor
CQkJCQkiLVdlcnJvciIsCisJCQkJCSItV2V4dHJhIiwKKwkJCQkJIi1XZm9ybWF0PTIiLAorCQkJ
CQkiLVdpbml0LXNlbGYiLAorCQkJCQkiLVdub24tdmlydHVhbC1kdG9yIiwKKwkJCQkJIi1Xbm8t
Zm9ybWF0LW5vbmxpdGVyYWwiLAorCQkJCQkiLVduby11bmtub3duLXByYWdtYXMiLAorCQkJCQki
LVduby11bnVzZWQtZnVuY3Rpb24iLAorCQkJCQkiLVduby11bnVzZWQtcGFyYW1ldGVyIiwKKwkJ
CQkJIi1XcGFja2VkIiwKKwkJCQkJIi1XcG9pbnRlci1hcml0aCIsCisJCQkJCSItV3VuZGVmIiwK
KwkJCQkJIi1Xd3JpdGUtc3RyaW5ncyIsCisJCQkJKTsKKwkJCX07CisJCQluYW1lID0gUmVsZWFz
ZTsKKwkJfTsKKwkJMUE5M0Y5MDQxMjQ3MzJDQ0REMzUwMEI4IC8qIERlYnVnICovID0geworCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNM
QU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJjKysxMSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJ
UCA9IE5POworCQkJCUVYRUNVVEFCTEVfUFJFRklYID0gbGliOworCQkJCUdDQ19PUFRJTUlaQVRJ
T05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJ
CUFOR0xFX1NUQU5EQUxPTkVfQlVJTEQsCisJCQkJCV9ERUJVRywKKwkJCQkpOworCQkJCUhFQURF
Ul9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS9hbmds
ZSIsCisJCQkJCS4uL2luY2x1ZGUsCisJCQkJCS4uL3NyYywKKwkJCQkJLi4vc3JjL2NvbW1vbi90
aGlyZF9wYXJ0eS9udW1lcmljcywKKwkJCQkpOworCQkJCVBST0RVQ1RfTkFNRSA9IHByZXByb2Nl
c3NvcjsKKwkJCQlXQVJOSU5HX0NGTEFHUyA9ICgKKwkJCQkJIi1XYWxsIiwKKwkJCQkJIi1XY2hh
ci1zdWJzY3JpcHRzIiwKKwkJCQkJIi1XZXJyb3IiLAorCQkJCQkiLVdleHRyYSIsCisJCQkJCSIt
V2Zvcm1hdD0yIiwKKwkJCQkJIi1XaW5pdC1zZWxmIiwKKwkJCQkJIi1Xbm9uLXZpcnR1YWwtZHRv
ciIsCisJCQkJCSItV25vLWZvcm1hdC1ub25saXRlcmFsIiwKKwkJCQkJIi1Xbm8tdW5rbm93bi1w
cmFnbWFzIiwKKwkJCQkJIi1Xbm8tdW51c2VkLWZ1bmN0aW9uIiwKKwkJCQkJIi1Xbm8tdW51c2Vk
LXBhcmFtZXRlciIsCisJCQkJCSItV3BhY2tlZCIsCisJCQkJCSItV3BvaW50ZXItYXJpdGgiLAor
CQkJCQkiLVd1bmRlZiIsCisJCQkJCSItV3dyaXRlLXN0cmluZ3MiLAorCQkJCSk7CisJCQl9Owor
CQkJbmFtZSA9IERlYnVnOworCQl9OworCQkyMkQ5NEI4NDU4NDE2RTMyOTM5MjYzMTUgLyogRGVi
dWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImMrKzExIjsKKwkJCQlD
T1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJ
CQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJQU5HTEVfU1RBTkRBTE9O
RV9CVUlMRCwKKwkJCQkJX0RFQlVHLAorCQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0gY29weV9z
Y3JpcHRzOworCQkJCVdBUk5JTkdfQ0ZMQUdTID0gKAorCQkJCQkiLVdhbGwiLAorCQkJCQkiLVdj
aGFyLXN1YnNjcmlwdHMiLAorCQkJCQkiLVdlcnJvciIsCisJCQkJCSItV2V4dHJhIiwKKwkJCQkJ
Ii1XZm9ybWF0PTIiLAorCQkJCQkiLVdpbml0LXNlbGYiLAorCQkJCQkiLVdub24tdmlydHVhbC1k
dG9yIiwKKwkJCQkJIi1Xbm8tZm9ybWF0LW5vbmxpdGVyYWwiLAorCQkJCQkiLVduby11bmtub3du
LXByYWdtYXMiLAorCQkJCQkiLVduby11bnVzZWQtZnVuY3Rpb24iLAorCQkJCQkiLVduby11bnVz
ZWQtcGFyYW1ldGVyIiwKKwkJCQkJIi1XcGFja2VkIiwKKwkJCQkJIi1XcG9pbnRlci1hcml0aCIs
CisJCQkJCSItV3VuZGVmIiwKKwkJCQkJIi1Xd3JpdGUtc3RyaW5ncyIsCisJCQkJKTsKKwkJCX07
CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTJCNDE0OURGNUUxMzBBODBCNDg2NTYzNiAvKiBS
ZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJjKysxMSI7CisJ
CQkJRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklU
SU9OUyA9ICgKKwkJCQkJQU5HTEVfU1RBTkRBTE9ORV9CVUlMRCwKKwkJCQkJTkRFQlVHLAorCQkJ
CSk7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJIiQoU0hBUkVEX0lOVEVSTUVE
SUFURV9ESVIpL2FuZ2xlIiwKKwkJCQkJLi4vaW5jbHVkZSwKKwkJCQkJLi4vc3JjLAorCQkJCQku
Li9zcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzLAorCQkJCSk7CisJCQkJUFJPRFVDVF9O
QU1FID0gcHJlcHJvY2Vzc29yOworCQkJCVdBUk5JTkdfQ0ZMQUdTID0gKAorCQkJCQkiLVdhbGwi
LAorCQkJCQkiLVdjaGFyLXN1YnNjcmlwdHMiLAorCQkJCQkiLVdlcnJvciIsCisJCQkJCSItV2V4
dHJhIiwKKwkJCQkJIi1XZm9ybWF0PTIiLAorCQkJCQkiLVdpbml0LXNlbGYiLAorCQkJCQkiLVdu
b24tdmlydHVhbC1kdG9yIiwKKwkJCQkJIi1Xbm8tZm9ybWF0LW5vbmxpdGVyYWwiLAorCQkJCQki
LVduby11bmtub3duLXByYWdtYXMiLAorCQkJCQkiLVduby11bnVzZWQtZnVuY3Rpb24iLAorCQkJ
CQkiLVduby11bnVzZWQtcGFyYW1ldGVyIiwKKwkJCQkJIi1XcGFja2VkIiwKKwkJCQkJIi1XcG9p
bnRlci1hcml0aCIsCisJCQkJCSItV3VuZGVmIiwKKwkJCQkJIi1Xd3JpdGUtc3RyaW5ncyIsCisJ
CQkJKTsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMkI2NUUwOUFGNTcxMzdG
MzUzOEI2NTJEIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJE
ID0gImMrKzExIjsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gTkRFQlVHOwor
CQkJCVBST0RVQ1RfTkFNRSA9IGxpYkFOR0xFX3JlbmRlcmVyX2NvbmZpZzsKKwkJCQlXQVJOSU5H
X0NGTEFHUyA9ICgKKwkJCQkJIi1XYWxsIiwKKwkJCQkJIi1XY2hhci1zdWJzY3JpcHRzIiwKKwkJ
CQkJIi1XZXJyb3IiLAorCQkJCQkiLVdleHRyYSIsCisJCQkJCSItV2Zvcm1hdD0yIiwKKwkJCQkJ
Ii1XaW5pdC1zZWxmIiwKKwkJCQkJIi1Xbm9uLXZpcnR1YWwtZHRvciIsCisJCQkJCSItV25vLWZv
cm1hdC1ub25saXRlcmFsIiwKKwkJCQkJIi1Xbm8tdW5rbm93bi1wcmFnbWFzIiwKKwkJCQkJIi1X
bm8tdW51c2VkLWZ1bmN0aW9uIiwKKwkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCisJCQkJ
CSItV3BhY2tlZCIsCisJCQkJCSItV3BvaW50ZXItYXJpdGgiLAorCQkJCQkiLVd1bmRlZiIsCisJ
CQkJCSItV3dyaXRlLXN0cmluZ3MiLAorCQkJCSk7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7
CisJCX07CisJCTJDRjM1M0UyRkQwMkRGMTM5NTFCQ0EwNyAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFO
R19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiYysrMTEiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAg
PSBOTzsKKwkJCQlFWEVDVVRBQkxFX1BSRUZJWCA9IGxpYjsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9O
X0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQlB
TkdMRV9TVEFOREFMT05FX0JVSUxELAorCQkJCQlHUFVfSU5GT19VU0VfRFhHSSwKKwkJCQkJX0RF
QlVHLAorCQkJCSk7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJLiwKKwkJCQkJ
Li4vaW5jbHVkZSwKKwkJCQkJIiQoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL2FuZ2xlIiwKKwkJ
CQkJLi4vc3JjLAorCQkJCQkuLi9zcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzLAorCQkJ
CSk7CisJCQkJUFJPRFVDVF9OQU1FID0gYW5nbGVfZ3B1X2luZm9fdXRpbDsKKwkJCQlXQVJOSU5H
X0NGTEFHUyA9ICgKKwkJCQkJIi1XYWxsIiwKKwkJCQkJIi1XY2hhci1zdWJzY3JpcHRzIiwKKwkJ
CQkJIi1XZXJyb3IiLAorCQkJCQkiLVdleHRyYSIsCisJCQkJCSItV2Zvcm1hdD0yIiwKKwkJCQkJ
Ii1XaW5pdC1zZWxmIiwKKwkJCQkJIi1Xbm9uLXZpcnR1YWwtZHRvciIsCisJCQkJCSItV25vLWZv
cm1hdC1ub25saXRlcmFsIiwKKwkJCQkJIi1Xbm8tdW5rbm93bi1wcmFnbWFzIiwKKwkJCQkJIi1X
bm8tdW51c2VkLWZ1bmN0aW9uIiwKKwkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCisJCQkJ
CSItV3BhY2tlZCIsCisJCQkJCSItV3BvaW50ZXItYXJpdGgiLAorCQkJCQkiLVd1bmRlZiIsCisJ
CQkJCSItV3dyaXRlLXN0cmluZ3MiLAorCQkJCSk7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOwor
CQl9OworCQkzNjc1RERGMTBCQ0ZCQkNBMzdEOENDRDAgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFO
R19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiYysrMTEiOworCQkJCURZTElCX0lOU1RBTExfTkFN
RV9CQVNFID0gIkBycGF0aCI7CisJCQkJRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CisJCQkJR0ND
X1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJQU5HTEVfU1RBTkRBTE9ORV9CVUlM
RCwKKwkJCQkJTElCQU5HTEVfSU1QTEVNRU5UQVRJT04sCisJCQkJCUdMX0dMRVhUX1BST1RPVFlQ
RVMsCisJCQkJCSJBTkdMRV9QUkVMT0FERURfRDNEQ09NUElMRVJfTU9EVUxFX05BTUVTPXtcXCBc
XFwiZDNkY29tcGlsZXJfNDcuZGxsXFxcIixcXCBcXFwiZDNkY29tcGlsZXJfNDYuZGxsXFxcIixc
XCBcXFwiZDNkY29tcGlsZXJfNDMuZGxsXFxcIlxcIH0iLAorCQkJCQkiR0xfQVBJQ0FMTD1fX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KFxcXCJkZWZhdWx0XFxcIikpKSIsCisJCQkJCUFOR0xFX0VO
QUJMRV9PUEVOR0wsCisJCQkJCUFOR0xFX0VOQUJMRV9OVUxMLAorCQkJCQlOREVCVUcsCisJCQkJ
KTsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkiJChTSEFSRURfSU5URVJNRURJ
QVRFX0RJUikvYW5nbGUiLAorCQkJCQkuLi9zcmMsCisJCQkJCS4uL2luY2x1ZGUsCisJCQkJCS4u
L3NyYy9jb21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3MsCisJCQkJKTsKKwkJCQlMRF9SVU5QQVRI
X1NFQVJDSF9QQVRIUyA9ICJAZXhlY3V0YWJsZV9wYXRoLy4iOworCQkJCVBST0RVQ1RfTkFNRSA9
IEdMRVN2Ml9zdGF0aWM7CisJCQkJV0FSTklOR19DRkxBR1MgPSAoCisJCQkJCSItV2FsbCIsCisJ
CQkJCSItV2NoYXItc3Vic2NyaXB0cyIsCisJCQkJCSItV2Vycm9yIiwKKwkJCQkJIi1XZXh0cmEi
LAorCQkJCQkiLVdmb3JtYXQ9MiIsCisJCQkJCSItV2luaXQtc2VsZiIsCisJCQkJCSItV25vbi12
aXJ0dWFsLWR0b3IiLAorCQkJCQkiLVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCisJCQkJCSItV25v
LXVua25vd24tcHJhZ21hcyIsCisJCQkJCSItV25vLXVudXNlZC1mdW5jdGlvbiIsCisJCQkJCSIt
V25vLXVudXNlZC1wYXJhbWV0ZXIiLAorCQkJCQkiLVdwYWNrZWQiLAorCQkJCQkiLVdwb2ludGVy
LWFyaXRoIiwKKwkJCQkJIi1XdW5kZWYiLAorCQkJCQkiLVd3cml0ZS1zdHJpbmdzIiwKKwkJCQkp
OworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkzREI1QkZDNTgwMkU5RDM2NTBE
MzVGNEQgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJSU5URVJNRURJQVRFX0RJUiA9ICIkKFBST0pFQ1RfREVS
SVZFRF9GSUxFX0RJUikvJChDT05GSUdVUkFUSU9OKSI7CisJCQkJU0hBUkVEX0lOVEVSTUVESUFU
RV9ESVIgPSAiJChTWU1ST09UKS9EZXJpdmVkU291cmNlcy8kKENPTkZJR1VSQVRJT04pIjsKKwkJ
CX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTQ1QzdBQjQwRTkyQjJENkU5RURBOEY4RSAv
KiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSBBbGw7CisJCQl9OworCQkJbmFtZSA9IERl
YnVnOworCQl9OworCQk0RTRBOTIyQjVDQUQzMzkyNTMyMjQxOTggLyogUmVsZWFzZSAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiYysrMTEiOworCQkJCUdDQ19QUkVQUk9D
RVNTT1JfREVGSU5JVElPTlMgPSBOREVCVUc7CisJCQkJUFJPRFVDVF9OQU1FID0gbGliQU5HTEVf
ZDNkMTFfY29uZmlnOworCQkJCVdBUk5JTkdfQ0ZMQUdTID0gKAorCQkJCQkiLVdhbGwiLAorCQkJ
CQkiLVdjaGFyLXN1YnNjcmlwdHMiLAorCQkJCQkiLVdlcnJvciIsCisJCQkJCSItV2V4dHJhIiwK
KwkJCQkJIi1XZm9ybWF0PTIiLAorCQkJCQkiLVdpbml0LXNlbGYiLAorCQkJCQkiLVdub24tdmly
dHVhbC1kdG9yIiwKKwkJCQkJIi1Xbm8tZm9ybWF0LW5vbmxpdGVyYWwiLAorCQkJCQkiLVduby11
bmtub3duLXByYWdtYXMiLAorCQkJCQkiLVduby11bnVzZWQtZnVuY3Rpb24iLAorCQkJCQkiLVdu
by11bnVzZWQtcGFyYW1ldGVyIiwKKwkJCQkJIi1XcGFja2VkIiwKKwkJCQkJIi1XcG9pbnRlci1h
cml0aCIsCisJCQkJCSItV3VuZGVmIiwKKwkJCQkJIi1Xd3JpdGUtc3RyaW5ncyIsCisJCQkJKTsK
KwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJNTRCMTQwQzEzNTA3RjlEODQ5NEYx
NEYwIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJjKysx
MSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCURZTElCX0lOU1RBTExfTkFNRV9C
QVNFID0gIkBycGF0aCI7CisJCQkJRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CisJCQkJR0NDX09Q
VElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9
ICgKKwkJCQkJTElCR0xFU1YyX0lNUExFTUVOVEFUSU9OLAorCQkJCQlBTkdMRV9TVEFOREFMT05F
X0JVSUxELAorCQkJCQlMSUJBTkdMRV9JTVBMRU1FTlRBVElPTiwKKwkJCQkJR0xfR0xFWFRfUFJP
VE9UWVBFUywKKwkJCQkJIkFOR0xFX1BSRUxPQURFRF9EM0RDT01QSUxFUl9NT0RVTEVfTkFNRVM9
e1xcIFxcXCJkM2Rjb21waWxlcl80Ny5kbGxcXFwiLFxcIFxcXCJkM2Rjb21waWxlcl80Ni5kbGxc
XFwiLFxcIFxcXCJkM2Rjb21waWxlcl80My5kbGxcXFwiXFwgfSIsCisJCQkJCSJHTF9BUElDQUxM
PV9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoXFxcImRlZmF1bHRcXFwiKSkpIiwKKwkJCQkJQU5H
TEVfRU5BQkxFX09QRU5HTCwKKwkJCQkJQU5HTEVfRU5BQkxFX05VTEwsCisJCQkJCV9ERUJVRywK
KwkJCQkpOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKFNIQVJFRF9JTlRF
Uk1FRElBVEVfRElSKS9hbmdsZSIsCisJCQkJCS4uL3NyYywKKwkJCQkJLi4vaW5jbHVkZSwKKwkJ
CQkJLi4vc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcywKKwkJCQkpOworCQkJCUxEX1JV
TlBBVEhfU0VBUkNIX1BBVEhTID0gIkBleGVjdXRhYmxlX3BhdGgvLiI7CisJCQkJTElCUkFSWV9T
RUFSQ0hfUEFUSFMgPSAiJChTREtST09UKS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzIjsKKwkJ
CQlQUk9EVUNUX05BTUUgPSBHTEVTdjI7CisJCQkJV0FSTklOR19DRkxBR1MgPSAoCisJCQkJCSIt
V2FsbCIsCisJCQkJCSItV2NoYXItc3Vic2NyaXB0cyIsCisJCQkJCSItV2Vycm9yIiwKKwkJCQkJ
Ii1XZXh0cmEiLAorCQkJCQkiLVdmb3JtYXQ9MiIsCisJCQkJCSItV2luaXQtc2VsZiIsCisJCQkJ
CSItV25vbi12aXJ0dWFsLWR0b3IiLAorCQkJCQkiLVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCisJ
CQkJCSItV25vLXVua25vd24tcHJhZ21hcyIsCisJCQkJCSItV25vLXVudXNlZC1mdW5jdGlvbiIs
CisJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAorCQkJCQkiLVdwYWNrZWQiLAorCQkJCQki
LVdwb2ludGVyLWFyaXRoIiwKKwkJCQkJIi1XdW5kZWYiLAorCQkJCQkiLVd3cml0ZS1zdHJpbmdz
IiwKKwkJCQkpOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJNjEwNTQxQTNDNEIw
RDRENUNBN0ZEQ0RDIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5E
QVJEID0gImMrKzExIjsKKwkJCQlEWUxJQl9JTlNUQUxMX05BTUVfQkFTRSA9ICJAcnBhdGgiOwor
CQkJCUVYRUNVVEFCTEVfUFJFRklYID0gbGliOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5J
VElPTlMgPSAoCisJCQkJCUFOR0xFX1NUQU5EQUxPTkVfQlVJTEQsCisJCQkJCSJFR0xBUEk9X19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eShcXFwiZGVmYXVsdFxcXCIpKSkiLAorCQkJCQlOREVCVUcs
CisJCQkJKTsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLAorCQkJCQkuLi9p
bmNsdWRlLAorCQkJCQkiJChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvYW5nbGUiLAorCQkJCSk7
CisJCQkJTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFMgPSAiQGV4ZWN1dGFibGVfcGF0aC8uIjsKKwkJ
CQlQUk9EVUNUX05BTUUgPSBFR0w7CisJCQkJV0FSTklOR19DRkxBR1MgPSAoCisJCQkJCSItV2Fs
bCIsCisJCQkJCSItV2NoYXItc3Vic2NyaXB0cyIsCisJCQkJCSItV2Vycm9yIiwKKwkJCQkJIi1X
ZXh0cmEiLAorCQkJCQkiLVdmb3JtYXQ9MiIsCisJCQkJCSItV2luaXQtc2VsZiIsCisJCQkJCSIt
V25vbi12aXJ0dWFsLWR0b3IiLAorCQkJCQkiLVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCisJCQkJ
CSItV25vLXVua25vd24tcHJhZ21hcyIsCisJCQkJCSItV25vLXVudXNlZC1mdW5jdGlvbiIsCisJ
CQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAorCQkJCQkiLVdwYWNrZWQiLAorCQkJCQkiLVdw
b2ludGVyLWFyaXRoIiwKKwkJCQkJIi1XdW5kZWYiLAorCQkJCQkiLVd3cml0ZS1zdHJpbmdzIiwK
KwkJCQkpOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQk2MjEzQUJFQjc4RTQ1
MEQ2OTEzNjZCOEYgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlJTlRFUk1FRElBVEVfRElSID0gIiQoUFJP
SkVDVF9ERVJJVkVEX0ZJTEVfRElSKS8kKENPTkZJR1VSQVRJT04pIjsKKwkJCQlTSEFSRURfSU5U
RVJNRURJQVRFX0RJUiA9ICIkKFNZTVJPT1QpL0Rlcml2ZWRTb3VyY2VzLyQoQ09ORklHVVJBVElP
TikiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQk2QjkwNTIwMDE5MUU3RkM3
MkJDQzlBQjggLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0g
ImMrKzExIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0NDX09QVElNSVpBVElP
Tl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9IF9ERUJVRzsK
KwkJCQlQUk9EVUNUX05BTUUgPSBsaWJBTkdMRV9yZW5kZXJlcl9jb25maWc7CisJCQkJV0FSTklO
R19DRkxBR1MgPSAoCisJCQkJCSItV2FsbCIsCisJCQkJCSItV2NoYXItc3Vic2NyaXB0cyIsCisJ
CQkJCSItV2Vycm9yIiwKKwkJCQkJIi1XZXh0cmEiLAorCQkJCQkiLVdmb3JtYXQ9MiIsCisJCQkJ
CSItV2luaXQtc2VsZiIsCisJCQkJCSItV25vbi12aXJ0dWFsLWR0b3IiLAorCQkJCQkiLVduby1m
b3JtYXQtbm9ubGl0ZXJhbCIsCisJCQkJCSItV25vLXVua25vd24tcHJhZ21hcyIsCisJCQkJCSIt
V25vLXVudXNlZC1mdW5jdGlvbiIsCisJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAorCQkJ
CQkiLVdwYWNrZWQiLAorCQkJCQkiLVdwb2ludGVyLWFyaXRoIiwKKwkJCQkJIi1XdW5kZWYiLAor
CQkJCQkiLVd3cml0ZS1zdHJpbmdzIiwKKwkJCQkpOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsK
KwkJfTsKKwkJNzZGMzJDRjAwNEY1NEE5MUI5MEZCNkFDIC8qIERlYnVnICovID0geworCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNMQU5H
X0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJjKysxMSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9
IE5POworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNT
T1JfREVGSU5JVElPTlMgPSBfREVCVUc7CisJCQkJUFJPRFVDVF9OQU1FID0gbGliQU5HTEVfZDNk
MTFfY29uZmlnOworCQkJCVdBUk5JTkdfQ0ZMQUdTID0gKAorCQkJCQkiLVdhbGwiLAorCQkJCQki
LVdjaGFyLXN1YnNjcmlwdHMiLAorCQkJCQkiLVdlcnJvciIsCisJCQkJCSItV2V4dHJhIiwKKwkJ
CQkJIi1XZm9ybWF0PTIiLAorCQkJCQkiLVdpbml0LXNlbGYiLAorCQkJCQkiLVdub24tdmlydHVh
bC1kdG9yIiwKKwkJCQkJIi1Xbm8tZm9ybWF0LW5vbmxpdGVyYWwiLAorCQkJCQkiLVduby11bmtu
b3duLXByYWdtYXMiLAorCQkJCQkiLVduby11bnVzZWQtZnVuY3Rpb24iLAorCQkJCQkiLVduby11
bnVzZWQtcGFyYW1ldGVyIiwKKwkJCQkJIi1XcGFja2VkIiwKKwkJCQkJIi1XcG9pbnRlci1hcml0
aCIsCisJCQkJCSItV3VuZGVmIiwKKwkJCQkJIi1Xd3JpdGUtc3RyaW5ncyIsCisJCQkJKTsKKwkJ
CX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTg0NjQyMThDN0ZDRTc4MkZBQzUzOEYyMiAv
KiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiYysrMTEiOwor
CQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0g
MDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQlBTkdMRV9TVEFO
REFMT05FX0JVSUxELAorCQkJCQlfREVCVUcsCisJCQkJKTsKKwkJCQlQUk9EVUNUX05BTUUgPSBj
b21taXRfaWQ7CisJCQkJV0FSTklOR19DRkxBR1MgPSAoCisJCQkJCSItV2FsbCIsCisJCQkJCSIt
V2NoYXItc3Vic2NyaXB0cyIsCisJCQkJCSItV2Vycm9yIiwKKwkJCQkJIi1XZXh0cmEiLAorCQkJ
CQkiLVdmb3JtYXQ9MiIsCisJCQkJCSItV2luaXQtc2VsZiIsCisJCQkJCSItV25vbi12aXJ0dWFs
LWR0b3IiLAorCQkJCQkiLVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCisJCQkJCSItV25vLXVua25v
d24tcHJhZ21hcyIsCisJCQkJCSItV25vLXVudXNlZC1mdW5jdGlvbiIsCisJCQkJCSItV25vLXVu
dXNlZC1wYXJhbWV0ZXIiLAorCQkJCQkiLVdwYWNrZWQiLAorCQkJCQkiLVdwb2ludGVyLWFyaXRo
IiwKKwkJCQkJIi1XdW5kZWYiLAorCQkJCQkiLVd3cml0ZS1zdHJpbmdzIiwKKwkJCQkpOworCQkJ
fTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJODYxRkFEQkRBQzcxMTdDRkExNzkyNUJEIC8q
IERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJjKysxMSI7CisJ
CQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCURZTElCX0lOU1RBTExfTkFNRV9CQVNFID0g
IkBycGF0aCI7CisJCQkJRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CisJCQkJR0NDX09QVElNSVpB
VElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJ
CQkJQU5HTEVfU1RBTkRBTE9ORV9CVUlMRCwKKwkJCQkJTElCQU5HTEVfSU1QTEVNRU5UQVRJT04s
CisJCQkJCUdMX0dMRVhUX1BST1RPVFlQRVMsCisJCQkJCSJBTkdMRV9QUkVMT0FERURfRDNEQ09N
UElMRVJfTU9EVUxFX05BTUVTPXtcXCBcXFwiZDNkY29tcGlsZXJfNDcuZGxsXFxcIixcXCBcXFwi
ZDNkY29tcGlsZXJfNDYuZGxsXFxcIixcXCBcXFwiZDNkY29tcGlsZXJfNDMuZGxsXFxcIlxcIH0i
LAorCQkJCQkiR0xfQVBJQ0FMTD1fX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KFxcXCJkZWZhdWx0
XFxcIikpKSIsCisJCQkJCUFOR0xFX0VOQUJMRV9PUEVOR0wsCisJCQkJCUFOR0xFX0VOQUJMRV9O
VUxMLAorCQkJCQlfREVCVUcsCisJCQkJKTsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gKAor
CQkJCQkiJChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvYW5nbGUiLAorCQkJCQkuLi9zcmMsCisJ
CQkJCS4uL2luY2x1ZGUsCisJCQkJCS4uL3NyYy9jb21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3Ms
CisJCQkJKTsKKwkJCQlMRF9SVU5QQVRIX1NFQVJDSF9QQVRIUyA9ICJAZXhlY3V0YWJsZV9wYXRo
Ly4iOworCQkJCVBST0RVQ1RfTkFNRSA9IEdMRVN2Ml9zdGF0aWM7CisJCQkJV0FSTklOR19DRkxB
R1MgPSAoCisJCQkJCSItV2FsbCIsCisJCQkJCSItV2NoYXItc3Vic2NyaXB0cyIsCisJCQkJCSIt
V2Vycm9yIiwKKwkJCQkJIi1XZXh0cmEiLAorCQkJCQkiLVdmb3JtYXQ9MiIsCisJCQkJCSItV2lu
aXQtc2VsZiIsCisJCQkJCSItV25vbi12aXJ0dWFsLWR0b3IiLAorCQkJCQkiLVduby1mb3JtYXQt
bm9ubGl0ZXJhbCIsCisJCQkJCSItV25vLXVua25vd24tcHJhZ21hcyIsCisJCQkJCSItV25vLXVu
dXNlZC1mdW5jdGlvbiIsCisJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAorCQkJCQkiLVdw
YWNrZWQiLAorCQkJCQkiLVdwb2ludGVyLWFyaXRoIiwKKwkJCQkJIi1XdW5kZWYiLAorCQkJCQki
LVd3cml0ZS1zdHJpbmdzIiwKKwkJCQkpOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsK
KwkJOUE2REJFQkY5ODYwMDkyQUVBNjc3NUIyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hY
X0xBTkdVQUdFX1NUQU5EQVJEID0gImMrKzExIjsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklO
SVRJT05TID0gKAorCQkJCQlBTkdMRV9TVEFOREFMT05FX0JVSUxELAorCQkJCQlOREVCVUcsCisJ
CQkJKTsKKwkJCQlQUk9EVUNUX05BTUUgPSBjb21taXRfaWQ7CisJCQkJV0FSTklOR19DRkxBR1Mg
PSAoCisJCQkJCSItV2FsbCIsCisJCQkJCSItV2NoYXItc3Vic2NyaXB0cyIsCisJCQkJCSItV2Vy
cm9yIiwKKwkJCQkJIi1XZXh0cmEiLAorCQkJCQkiLVdmb3JtYXQ9MiIsCisJCQkJCSItV2luaXQt
c2VsZiIsCisJCQkJCSItV25vbi12aXJ0dWFsLWR0b3IiLAorCQkJCQkiLVduby1mb3JtYXQtbm9u
bGl0ZXJhbCIsCisJCQkJCSItV25vLXVua25vd24tcHJhZ21hcyIsCisJCQkJCSItV25vLXVudXNl
ZC1mdW5jdGlvbiIsCisJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAorCQkJCQkiLVdwYWNr
ZWQiLAorCQkJCQkiLVdwb2ludGVyLWFyaXRoIiwKKwkJCQkJIi1XdW5kZWYiLAorCQkJCQkiLVd3
cml0ZS1zdHJpbmdzIiwKKwkJCQkpOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9Owor
CQk5Q0QxMjA4M0Q2QzI4NDAzQzExNkRENzQgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhf
TEFOR1VBR0VfU1RBTkRBUkQgPSAiYysrMTEiOworCQkJCUVYRUNVVEFCTEVfUFJFRklYID0gbGli
OworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCUFOR0xFX1NUQU5E
QUxPTkVfQlVJTEQsCisJCQkJCU5ERUJVRywKKwkJCQkpOworCQkJCUhFQURFUl9TRUFSQ0hfUEFU
SFMgPSAoCisJCQkJCS4sCisJCQkJCS4uL2luY2x1ZGUsCisJCQkJCWNvbW1vbi90aGlyZF9wYXJ0
eS9udW1lcmljcywKKwkJCQkJIiQoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL2FuZ2xlIiwKKwkJ
CQkpOworCQkJCVBST0RVQ1RfTkFNRSA9IGFuZ2xlX2NvbW1vbjsKKwkJCQlXQVJOSU5HX0NGTEFH
UyA9ICgKKwkJCQkJIi1XYWxsIiwKKwkJCQkJIi1XY2hhci1zdWJzY3JpcHRzIiwKKwkJCQkJIi1X
ZXJyb3IiLAorCQkJCQkiLVdleHRyYSIsCisJCQkJCSItV2Zvcm1hdD0yIiwKKwkJCQkJIi1XaW5p
dC1zZWxmIiwKKwkJCQkJIi1Xbm9uLXZpcnR1YWwtZHRvciIsCisJCQkJCSItV25vLWZvcm1hdC1u
b25saXRlcmFsIiwKKwkJCQkJIi1Xbm8tdW5rbm93bi1wcmFnbWFzIiwKKwkJCQkJIi1Xbm8tdW51
c2VkLWZ1bmN0aW9uIiwKKwkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCisJCQkJCSItV3Bh
Y2tlZCIsCisJCQkJCSItV3BvaW50ZXItYXJpdGgiLAorCQkJCQkiLVd1bmRlZiIsCisJCQkJCSIt
V3dyaXRlLXN0cmluZ3MiLAorCQkJCSk7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07
CisJCUIzMjQ3RTRBODM5RDlBNkI1OTlDMzUwNiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNMQU5HX0NY
WF9MQU5HVUFHRV9TVEFOREFSRCA9ICJjKysxMSI7CisJCQkJRVhFQ1VUQUJMRV9QUkVGSVggPSBs
aWI7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJQU5HTEVfU1RB
TkRBTE9ORV9CVUlMRCwKKwkJCQkJTkRFQlVHLAorCQkJCSk7CisJCQkJSEVBREVSX1NFQVJDSF9Q
QVRIUyA9ICgKKwkJCQkJLiwKKwkJCQkJLi4vaW5jbHVkZSwKKwkJCQkJIiQoU0hBUkVEX0lOVEVS
TUVESUFURV9ESVIpL2FuZ2xlIiwKKwkJCQkJLi4vc3JjLAorCQkJCQkuLi9zcmMvY29tbW9uL3Ro
aXJkX3BhcnR5L251bWVyaWNzLAorCQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0gYW5nbGVfaW1h
Z2VfdXRpbDsKKwkJCQlXQVJOSU5HX0NGTEFHUyA9ICgKKwkJCQkJIi1XYWxsIiwKKwkJCQkJIi1X
Y2hhci1zdWJzY3JpcHRzIiwKKwkJCQkJIi1XZXJyb3IiLAorCQkJCQkiLVdleHRyYSIsCisJCQkJ
CSItV2Zvcm1hdD0yIiwKKwkJCQkJIi1XaW5pdC1zZWxmIiwKKwkJCQkJIi1Xbm9uLXZpcnR1YWwt
ZHRvciIsCisJCQkJCSItV25vLWZvcm1hdC1ub25saXRlcmFsIiwKKwkJCQkJIi1Xbm8tdW5rbm93
bi1wcmFnbWFzIiwKKwkJCQkJIi1Xbm8tdW51c2VkLWZ1bmN0aW9uIiwKKwkJCQkJIi1Xbm8tdW51
c2VkLXBhcmFtZXRlciIsCisJCQkJCSItV3BhY2tlZCIsCisJCQkJCSItV3BvaW50ZXItYXJpdGgi
LAorCQkJCQkiLVd1bmRlZiIsCisJCQkJCSItV3dyaXRlLXN0cmluZ3MiLAorCQkJCSk7CisJCQl9
OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCUJGM0FBOUJEQkEyQkE0NTdBOEQ0MTQ2NSAv
KiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJjKysxMSI7
CisJCQkJRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJ
TklUSU9OUyA9ICgKKwkJCQkJQU5HTEVfU1RBTkRBTE9ORV9CVUlMRCwKKwkJCQkJR1BVX0lORk9f
VVNFX0RYR0ksCisJCQkJCU5ERUJVRywKKwkJCQkpOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMg
PSAoCisJCQkJCS4sCisJCQkJCS4uL2luY2x1ZGUsCisJCQkJCSIkKFNIQVJFRF9JTlRFUk1FRElB
VEVfRElSKS9hbmdsZSIsCisJCQkJCS4uL3NyYywKKwkJCQkJLi4vc3JjL2NvbW1vbi90aGlyZF9w
YXJ0eS9udW1lcmljcywKKwkJCQkpOworCQkJCVBST0RVQ1RfTkFNRSA9IGFuZ2xlX2dwdV9pbmZv
X3V0aWw7CisJCQkJV0FSTklOR19DRkxBR1MgPSAoCisJCQkJCSItV2FsbCIsCisJCQkJCSItV2No
YXItc3Vic2NyaXB0cyIsCisJCQkJCSItV2Vycm9yIiwKKwkJCQkJIi1XZXh0cmEiLAorCQkJCQki
LVdmb3JtYXQ9MiIsCisJCQkJCSItV2luaXQtc2VsZiIsCisJCQkJCSItV25vbi12aXJ0dWFsLWR0
b3IiLAorCQkJCQkiLVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCisJCQkJCSItV25vLXVua25vd24t
cHJhZ21hcyIsCisJCQkJCSItV25vLXVudXNlZC1mdW5jdGlvbiIsCisJCQkJCSItV25vLXVudXNl
ZC1wYXJhbWV0ZXIiLAorCQkJCQkiLVdwYWNrZWQiLAorCQkJCQkiLVdwb2ludGVyLWFyaXRoIiwK
KwkJCQkJIi1XdW5kZWYiLAorCQkJCQkiLVd3cml0ZS1zdHJpbmdzIiwKKwkJCQkpOworCQkJfTsK
KwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQlDRDkyNDYzMTYyNDAyNDI1RTI2QkI3QTUgLyog
UmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiYysrMTEiOwor
CQkJCURZTElCX0lOU1RBTExfTkFNRV9CQVNFID0gIkBycGF0aCI7CisJCQkJRVhFQ1VUQUJMRV9Q
UkVGSVggPSBsaWI7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJ
IkVHTEFQST0iLAorCQkJCQlBTkdMRV9TVEFOREFMT05FX0JVSUxELAorCQkJCQlMSUJBTkdMRV9J
TVBMRU1FTlRBVElPTiwKKwkJCQkJR0xfR0xFWFRfUFJPVE9UWVBFUywKKwkJCQkJIkFOR0xFX1BS
RUxPQURFRF9EM0RDT01QSUxFUl9NT0RVTEVfTkFNRVM9e1xcIFxcXCJkM2Rjb21waWxlcl80Ny5k
bGxcXFwiLFxcIFxcXCJkM2Rjb21waWxlcl80Ni5kbGxcXFwiLFxcIFxcXCJkM2Rjb21waWxlcl80
My5kbGxcXFwiXFwgfSIsCisJCQkJCSJHTF9BUElDQUxMPV9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkoXFxcImRlZmF1bHRcXFwiKSkpIiwKKwkJCQkJQU5HTEVfRU5BQkxFX09QRU5HTCwKKwkJCQkJ
QU5HTEVfRU5BQkxFX05VTEwsCisJCQkJCU5ERUJVRywKKwkJCQkpOworCQkJCUhFQURFUl9TRUFS
Q0hfUEFUSFMgPSAoCisJCQkJCS4sCisJCQkJCS4uL2luY2x1ZGUsCisJCQkJCSIkKFNIQVJFRF9J
TlRFUk1FRElBVEVfRElSKS9hbmdsZSIsCisJCQkJCS4uL3NyYywKKwkJCQkJLi4vc3JjL2NvbW1v
bi90aGlyZF9wYXJ0eS9udW1lcmljcywKKwkJCQkpOworCQkJCUxEX1JVTlBBVEhfU0VBUkNIX1BB
VEhTID0gIkBleGVjdXRhYmxlX3BhdGgvLiI7CisJCQkJUFJPRFVDVF9OQU1FID0gRUdMX3N0YXRp
YzsKKwkJCQlXQVJOSU5HX0NGTEFHUyA9ICgKKwkJCQkJIi1XYWxsIiwKKwkJCQkJIi1XY2hhci1z
dWJzY3JpcHRzIiwKKwkJCQkJIi1XZXJyb3IiLAorCQkJCQkiLVdleHRyYSIsCisJCQkJCSItV2Zv
cm1hdD0yIiwKKwkJCQkJIi1XaW5pdC1zZWxmIiwKKwkJCQkJIi1Xbm9uLXZpcnR1YWwtZHRvciIs
CisJCQkJCSItV25vLWZvcm1hdC1ub25saXRlcmFsIiwKKwkJCQkJIi1Xbm8tdW5rbm93bi1wcmFn
bWFzIiwKKwkJCQkJIi1Xbm8tdW51c2VkLWZ1bmN0aW9uIiwKKwkJCQkJIi1Xbm8tdW51c2VkLXBh
cmFtZXRlciIsCisJCQkJCSItV3BhY2tlZCIsCisJCQkJCSItV3BvaW50ZXItYXJpdGgiLAorCQkJ
CQkiLVd1bmRlZiIsCisJCQkJCSItV3dyaXRlLXN0cmluZ3MiLAorCQkJCSk7CisJCQl9OworCQkJ
bmFtZSA9IFJlbGVhc2U7CisJCX07CisJCUNGM0UzNzAxRDc4OTY3MTc0MzJGRjk1MiAvKiBSZWxl
YXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9IEFsbDsKKwkJCX07CisJCQluYW1lID0gUmVsZWFz
ZTsKKwkJfTsKKwkJRDAyRjgxNUZCQjcwODM2N0RBNkM1NkVGIC8qIERlYnVnICovID0geworCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUNM
QU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJjKysxMSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJ
UCA9IE5POworCQkJCUVYRUNVVEFCTEVfUFJFRklYID0gbGliOworCQkJCUdDQ19PUFRJTUlaQVRJ
T05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJ
CUFOR0xFX1NUQU5EQUxPTkVfQlVJTEQsCisJCQkJCV9ERUJVRywKKwkJCQkpOworCQkJCUhFQURF
Ul9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCS4sCisJCQkJCS4uL2luY2x1ZGUsCisJCQkJCWNvbW1v
bi90aGlyZF9wYXJ0eS9udW1lcmljcywKKwkJCQkJIiQoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIp
L2FuZ2xlIiwKKwkJCQkpOworCQkJCVBST0RVQ1RfTkFNRSA9IGFuZ2xlX2NvbW1vbjsKKwkJCQlX
QVJOSU5HX0NGTEFHUyA9ICgKKwkJCQkJIi1XYWxsIiwKKwkJCQkJIi1XY2hhci1zdWJzY3JpcHRz
IiwKKwkJCQkJIi1XZXJyb3IiLAorCQkJCQkiLVdleHRyYSIsCisJCQkJCSItV2Zvcm1hdD0yIiwK
KwkJCQkJIi1XaW5pdC1zZWxmIiwKKwkJCQkJIi1Xbm9uLXZpcnR1YWwtZHRvciIsCisJCQkJCSIt
V25vLWZvcm1hdC1ub25saXRlcmFsIiwKKwkJCQkJIi1Xbm8tdW5rbm93bi1wcmFnbWFzIiwKKwkJ
CQkJIi1Xbm8tdW51c2VkLWZ1bmN0aW9uIiwKKwkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIs
CisJCQkJCSItV3BhY2tlZCIsCisJCQkJCSItV3BvaW50ZXItYXJpdGgiLAorCQkJCQkiLVd1bmRl
ZiIsCisJCQkJCSItV3dyaXRlLXN0cmluZ3MiLAorCQkJCSk7CisJCQl9OworCQkJbmFtZSA9IERl
YnVnOworCQl9OworCQlFMDA1MTYxRjI5NURBNjI5MEZDNjAxMEEgLyogRGVidWcgKi8gPSB7CisJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
Q0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImMrKzExIjsKKwkJCQlDT1BZX1BIQVNFX1NU
UklQID0gTk87CisJCQkJRFlMSUJfSU5TVEFMTF9OQU1FX0JBU0UgPSAiQHJwYXRoIjsKKwkJCQlF
WEVDVVRBQkxFX1BSRUZJWCA9IGxpYjsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsK
KwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQlBTkdMRV9TVEFOREFM
T05FX0JVSUxELAorCQkJCQkiRUdMQVBJPV9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoXFxcImRl
ZmF1bHRcXFwiKSkpIiwKKwkJCQkJX0RFQlVHLAorCQkJCSk7CisJCQkJSEVBREVSX1NFQVJDSF9Q
QVRIUyA9ICgKKwkJCQkJLiwKKwkJCQkJLi4vaW5jbHVkZSwKKwkJCQkJIiQoU0hBUkVEX0lOVEVS
TUVESUFURV9ESVIpL2FuZ2xlIiwKKwkJCQkpOworCQkJCUxEX1JVTlBBVEhfU0VBUkNIX1BBVEhT
ID0gIkBleGVjdXRhYmxlX3BhdGgvLiI7CisJCQkJUFJPRFVDVF9OQU1FID0gRUdMOworCQkJCVdB
Uk5JTkdfQ0ZMQUdTID0gKAorCQkJCQkiLVdhbGwiLAorCQkJCQkiLVdjaGFyLXN1YnNjcmlwdHMi
LAorCQkJCQkiLVdlcnJvciIsCisJCQkJCSItV2V4dHJhIiwKKwkJCQkJIi1XZm9ybWF0PTIiLAor
CQkJCQkiLVdpbml0LXNlbGYiLAorCQkJCQkiLVdub24tdmlydHVhbC1kdG9yIiwKKwkJCQkJIi1X
bm8tZm9ybWF0LW5vbmxpdGVyYWwiLAorCQkJCQkiLVduby11bmtub3duLXByYWdtYXMiLAorCQkJ
CQkiLVduby11bnVzZWQtZnVuY3Rpb24iLAorCQkJCQkiLVduby11bnVzZWQtcGFyYW1ldGVyIiwK
KwkJCQkJIi1XcGFja2VkIiwKKwkJCQkJIi1XcG9pbnRlci1hcml0aCIsCisJCQkJCSItV3VuZGVm
IiwKKwkJCQkJIi1Xd3JpdGUtc3RyaW5ncyIsCisJCQkJKTsKKwkJCX07CisJCQluYW1lID0gRGVi
dWc7CisJCX07CisJCUUwOEM3Q0NERENCRDM5QkQ0Njk0OTVCNCAvKiBEZWJ1ZyAqLyA9IHsKKwkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlD
TEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiYysrMTEiOworCQkJCUNPUFlfUEhBU0VfU1RS
SVAgPSBOTzsKKwkJCQlFWEVDVVRBQkxFX1BSRUZJWCA9IGxpYjsKKwkJCQlHQ0NfT1BUSU1JWkFU
SU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJ
CQlMSUJBTkdMRV9JTVBMRU1FTlRBVElPTiwKKwkJCQkJQU5HTEVfU1RBTkRBTE9ORV9CVUlMRCwK
KwkJCQkJQU5HTEVfRU5BQkxFX0VTU0wsCisJCQkJCUFOR0xFX0VOQUJMRV9HTFNMLAorCQkJCQlB
TkdMRV9FTkFCTEVfT1BFTkdMLAorCQkJCQlBTkdMRV9FTkFCTEVfTlVMTCwKKwkJCQkJX0RFQlVH
LAorCQkJCSk7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJLiwKKwkJCQkJLi4v
aW5jbHVkZSwKKwkJCQkJdGhpcmRfcGFydHkva2hyb25vcywKKwkJCQkJIiQoU0hBUkVEX0lOVEVS
TUVESUFURV9ESVIpL2FuZ2xlIiwKKwkJCQkJLi4vc3JjLAorCQkJCQkuLi9zcmMvY29tbW9uL3Ro
aXJkX3BhcnR5L251bWVyaWNzLAorCQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0gQU5HTEU7CisJ
CQkJV0FSTklOR19DRkxBR1MgPSAoCisJCQkJCSItV2FsbCIsCisJCQkJCSItV2NoYXItc3Vic2Ny
aXB0cyIsCisJCQkJCSItV2Vycm9yIiwKKwkJCQkJIi1XZXh0cmEiLAorCQkJCQkiLVdmb3JtYXQ9
MiIsCisJCQkJCSItV2luaXQtc2VsZiIsCisJCQkJCSItV25vbi12aXJ0dWFsLWR0b3IiLAorCQkJ
CQkiLVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCisJCQkJCSItV25vLXVua25vd24tcHJhZ21hcyIs
CisJCQkJCSItV25vLXVudXNlZC1mdW5jdGlvbiIsCisJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0
ZXIiLAorCQkJCQkiLVdwYWNrZWQiLAorCQkJCQkiLVdwb2ludGVyLWFyaXRoIiwKKwkJCQkJIi1X
dW5kZWYiLAorCQkJCQkiLVd3cml0ZS1zdHJpbmdzIiwKKwkJCQkpOworCQkJfTsKKwkJCW5hbWUg
PSBEZWJ1ZzsKKwkJfTsKKwkJRTNDNzdENUI1RTAxMkE4NUZEREM5QTE1IC8qIFJlbGVhc2UgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gImMrKzExIjsKKwkJCQlHQ0NfUFJF
UFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQlBTkdMRV9TVEFOREFMT05FX0JVSUxELAor
CQkJCQlOREVCVUcsCisJCQkJKTsKKwkJCQlQUk9EVUNUX05BTUUgPSBjb3B5X3NjcmlwdHM7CisJ
CQkJV0FSTklOR19DRkxBR1MgPSAoCisJCQkJCSItV2FsbCIsCisJCQkJCSItV2NoYXItc3Vic2Ny
aXB0cyIsCisJCQkJCSItV2Vycm9yIiwKKwkJCQkJIi1XZXh0cmEiLAorCQkJCQkiLVdmb3JtYXQ9
MiIsCisJCQkJCSItV2luaXQtc2VsZiIsCisJCQkJCSItV25vbi12aXJ0dWFsLWR0b3IiLAorCQkJ
CQkiLVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCisJCQkJCSItV25vLXVua25vd24tcHJhZ21hcyIs
CisJCQkJCSItV25vLXVudXNlZC1mdW5jdGlvbiIsCisJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0
ZXIiLAorCQkJCQkiLVdwYWNrZWQiLAorCQkJCQkiLVdwb2ludGVyLWFyaXRoIiwKKwkJCQkJIi1X
dW5kZWYiLAorCQkJCQkiLVd3cml0ZS1zdHJpbmdzIiwKKwkJCQkpOworCQkJfTsKKwkJCW5hbWUg
PSBSZWxlYXNlOworCQl9OworCQlFOEU4REZEODU4NDI1MkUzRjVGMDkzQ0UgLyogUmVsZWFzZSAq
LyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiYysrMTEiOworCQkJCUVYRUNV
VEFCTEVfUFJFRklYID0gbGliOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAo
CisJCQkJCUFOR0xFX1NUQU5EQUxPTkVfQlVJTEQsCisJCQkJCUFOR0xFX0VOQUJMRV9FU1NMLAor
CQkJCQlBTkdMRV9FTkFCTEVfR0xTTCwKKwkJCQkJTkRFQlVHLAorCQkJCSk7CisJCQkJSEVBREVS
X1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJLiwKKwkJCQkJLi4vaW5jbHVkZSwKKwkJCQkJIiQoU0hB
UkVEX0lOVEVSTUVESUFURV9ESVIpL2FuZ2xlIiwKKwkJCQkJLi4vc3JjLAorCQkJCQkuLi9zcmMv
Y29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzLAorCQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0g
dHJhbnNsYXRvcjsKKwkJCQlXQVJOSU5HX0NGTEFHUyA9ICgKKwkJCQkJIi1XYWxsIiwKKwkJCQkJ
Ii1XY2hhci1zdWJzY3JpcHRzIiwKKwkJCQkJIi1XZXJyb3IiLAorCQkJCQkiLVdleHRyYSIsCisJ
CQkJCSItV2Zvcm1hdD0yIiwKKwkJCQkJIi1XaW5pdC1zZWxmIiwKKwkJCQkJIi1Xbm9uLXZpcnR1
YWwtZHRvciIsCisJCQkJCSItV25vLWZvcm1hdC1ub25saXRlcmFsIiwKKwkJCQkJIi1Xbm8tdW5r
bm93bi1wcmFnbWFzIiwKKwkJCQkJIi1Xbm8tdW51c2VkLWZ1bmN0aW9uIiwKKwkJCQkJIi1Xbm8t
dW51c2VkLXBhcmFtZXRlciIsCisJCQkJCSItV3BhY2tlZCIsCisJCQkJCSItV3BvaW50ZXItYXJp
dGgiLAorCQkJCQkiLVd1bmRlZiIsCisJCQkJCSItV3dyaXRlLXN0cmluZ3MiLAorCQkJCSk7CisJ
CQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCUYxQkM4OEQ0MkE2MzUxRjQ4N0QzQjJG
NCAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSAiYysrMTEi
OworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlEWUxJQl9JTlNUQUxMX05BTUVfQkFT
RSA9ICJAcnBhdGgiOworCQkJCUVYRUNVVEFCTEVfUFJFRklYID0gbGliOworCQkJCUdDQ19PUFRJ
TUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAo
CisJCQkJCSJFR0xBUEk9IiwKKwkJCQkJQU5HTEVfU1RBTkRBTE9ORV9CVUlMRCwKKwkJCQkJTElC
QU5HTEVfSU1QTEVNRU5UQVRJT04sCisJCQkJCUdMX0dMRVhUX1BST1RPVFlQRVMsCisJCQkJCSJB
TkdMRV9QUkVMT0FERURfRDNEQ09NUElMRVJfTU9EVUxFX05BTUVTPXtcXCBcXFwiZDNkY29tcGls
ZXJfNDcuZGxsXFxcIixcXCBcXFwiZDNkY29tcGlsZXJfNDYuZGxsXFxcIixcXCBcXFwiZDNkY29t
cGlsZXJfNDMuZGxsXFxcIlxcIH0iLAorCQkJCQkiR0xfQVBJQ0FMTD1fX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5KFxcXCJkZWZhdWx0XFxcIikpKSIsCisJCQkJCUFOR0xFX0VOQUJMRV9PUEVOR0ws
CisJCQkJCUFOR0xFX0VOQUJMRV9OVUxMLAorCQkJCQlfREVCVUcsCisJCQkJKTsKKwkJCQlIRUFE
RVJfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLAorCQkJCQkuLi9pbmNsdWRlLAorCQkJCQkiJChT
SEFSRURfSU5URVJNRURJQVRFX0RJUikvYW5nbGUiLAorCQkJCQkuLi9zcmMsCisJCQkJCS4uL3Ny
Yy9jb21tb24vdGhpcmRfcGFydHkvbnVtZXJpY3MsCisJCQkJKTsKKwkJCQlMRF9SVU5QQVRIX1NF
QVJDSF9QQVRIUyA9ICJAZXhlY3V0YWJsZV9wYXRoLy4iOworCQkJCVBST0RVQ1RfTkFNRSA9IEVH
TF9zdGF0aWM7CisJCQkJV0FSTklOR19DRkxBR1MgPSAoCisJCQkJCSItV2FsbCIsCisJCQkJCSIt
V2NoYXItc3Vic2NyaXB0cyIsCisJCQkJCSItV2Vycm9yIiwKKwkJCQkJIi1XZXh0cmEiLAorCQkJ
CQkiLVdmb3JtYXQ9MiIsCisJCQkJCSItV2luaXQtc2VsZiIsCisJCQkJCSItV25vbi12aXJ0dWFs
LWR0b3IiLAorCQkJCQkiLVduby1mb3JtYXQtbm9ubGl0ZXJhbCIsCisJCQkJCSItV25vLXVua25v
d24tcHJhZ21hcyIsCisJCQkJCSItV25vLXVudXNlZC1mdW5jdGlvbiIsCisJCQkJCSItV25vLXVu
dXNlZC1wYXJhbWV0ZXIiLAorCQkJCQkiLVdwYWNrZWQiLAorCQkJCQkiLVdwb2ludGVyLWFyaXRo
IiwKKwkJCQkJIi1XdW5kZWYiLAorCQkJCQkiLVd3cml0ZS1zdHJpbmdzIiwKKwkJCQkpOworCQkJ
fTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJRjZDRTQ2MjcyRTNEQkQxQTUxRjc5MTRGIC8q
IERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUNMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9ICJjKysxMSI7CisJ
CQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCUVYRUNVVEFCTEVfUFJFRklYID0gbGliOwor
CQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVG
SU5JVElPTlMgPSAoCisJCQkJCUFOR0xFX1NUQU5EQUxPTkVfQlVJTEQsCisJCQkJCUFOR0xFX0VO
QUJMRV9FU1NMLAorCQkJCQlBTkdMRV9FTkFCTEVfR0xTTCwKKwkJCQkJX0RFQlVHLAorCQkJCSk7
CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJLiwKKwkJCQkJLi4vaW5jbHVkZSwK
KwkJCQkJIiQoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL2FuZ2xlIiwKKwkJCQkJLi4vc3JjLAor
CQkJCQkuLi9zcmMvY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzLAorCQkJCSk7CisJCQkJUFJP
RFVDVF9OQU1FID0gdHJhbnNsYXRvcjsKKwkJCQlXQVJOSU5HX0NGTEFHUyA9ICgKKwkJCQkJIi1X
YWxsIiwKKwkJCQkJIi1XY2hhci1zdWJzY3JpcHRzIiwKKwkJCQkJIi1XZXJyb3IiLAorCQkJCQki
LVdleHRyYSIsCisJCQkJCSItV2Zvcm1hdD0yIiwKKwkJCQkJIi1XaW5pdC1zZWxmIiwKKwkJCQkJ
Ii1Xbm9uLXZpcnR1YWwtZHRvciIsCisJCQkJCSItV25vLWZvcm1hdC1ub25saXRlcmFsIiwKKwkJ
CQkJIi1Xbm8tdW5rbm93bi1wcmFnbWFzIiwKKwkJCQkJIi1Xbm8tdW51c2VkLWZ1bmN0aW9uIiwK
KwkJCQkJIi1Xbm8tdW51c2VkLXBhcmFtZXRlciIsCisJCQkJCSItV3BhY2tlZCIsCisJCQkJCSIt
V3BvaW50ZXItYXJpdGgiLAorCQkJCQkiLVd1bmRlZiIsCisJCQkJCSItV3dyaXRlLXN0cmluZ3Mi
LAorCQkJCSk7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQlGOTM2RkUzREJEMjNG
M0EyMjg4NENGRjUgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRB
UkQgPSAiYysrMTEiOworCQkJCURZTElCX0lOU1RBTExfTkFNRV9CQVNFID0gIkBycGF0aCI7CisJ
CQkJRVhFQ1VUQUJMRV9QUkVGSVggPSBsaWI7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklU
SU9OUyA9ICgKKwkJCQkJTElCR0xFU1YyX0lNUExFTUVOVEFUSU9OLAorCQkJCQlBTkdMRV9TVEFO
REFMT05FX0JVSUxELAorCQkJCQlMSUJBTkdMRV9JTVBMRU1FTlRBVElPTiwKKwkJCQkJR0xfR0xF
WFRfUFJPVE9UWVBFUywKKwkJCQkJIkFOR0xFX1BSRUxPQURFRF9EM0RDT01QSUxFUl9NT0RVTEVf
TkFNRVM9e1xcIFxcXCJkM2Rjb21waWxlcl80Ny5kbGxcXFwiLFxcIFxcXCJkM2Rjb21waWxlcl80
Ni5kbGxcXFwiLFxcIFxcXCJkM2Rjb21waWxlcl80My5kbGxcXFwiXFwgfSIsCisJCQkJCSJHTF9B
UElDQUxMPV9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoXFxcImRlZmF1bHRcXFwiKSkpIiwKKwkJ
CQkJQU5HTEVfRU5BQkxFX09QRU5HTCwKKwkJCQkJQU5HTEVfRU5BQkxFX05VTEwsCisJCQkJCU5E
RUJVRywKKwkJCQkpOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCSIkKFNIQVJF
RF9JTlRFUk1FRElBVEVfRElSKS9hbmdsZSIsCisJCQkJCS4uL3NyYywKKwkJCQkJLi4vaW5jbHVk
ZSwKKwkJCQkJLi4vc3JjL2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcywKKwkJCQkpOworCQkJ
CUxEX1JVTlBBVEhfU0VBUkNIX1BBVEhTID0gIkBleGVjdXRhYmxlX3BhdGgvLiI7CisJCQkJTElC
UkFSWV9TRUFSQ0hfUEFUSFMgPSAiJChTREtST09UKS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
IjsKKwkJCQlQUk9EVUNUX05BTUUgPSBHTEVTdjI7CisJCQkJV0FSTklOR19DRkxBR1MgPSAoCisJ
CQkJCSItV2FsbCIsCisJCQkJCSItV2NoYXItc3Vic2NyaXB0cyIsCisJCQkJCSItV2Vycm9yIiwK
KwkJCQkJIi1XZXh0cmEiLAorCQkJCQkiLVdmb3JtYXQ9MiIsCisJCQkJCSItV2luaXQtc2VsZiIs
CisJCQkJCSItV25vbi12aXJ0dWFsLWR0b3IiLAorCQkJCQkiLVduby1mb3JtYXQtbm9ubGl0ZXJh
bCIsCisJCQkJCSItV25vLXVua25vd24tcHJhZ21hcyIsCisJCQkJCSItV25vLXVudXNlZC1mdW5j
dGlvbiIsCisJCQkJCSItV25vLXVudXNlZC1wYXJhbWV0ZXIiLAorCQkJCQkiLVdwYWNrZWQiLAor
CQkJCQkiLVdwb2ludGVyLWFyaXRoIiwKKwkJCQkJIi1XdW5kZWYiLAorCQkJCQkiLVd3cml0ZS1z
dHJpbmdzIiwKKwkJCQkpOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQlGRkYx
QjE2RDU3RTA4RjU3MEIwQjc5QUIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQ0xBTkdfQ1hYX0xBTkdVQUdF
X1NUQU5EQVJEID0gImMrKzExIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJRVhF
Q1VUQUJMRV9QUkVGSVggPSBsaWI7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJ
CQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJQU5HTEVfU1RBTkRBTE9O
RV9CVUlMRCwKKwkJCQkJX0RFQlVHLAorCQkJCSk7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9
ICgKKwkJCQkJLiwKKwkJCQkJLi4vaW5jbHVkZSwKKwkJCQkJIiQoU0hBUkVEX0lOVEVSTUVESUFU
RV9ESVIpL2FuZ2xlIiwKKwkJCQkJLi4vc3JjLAorCQkJCQkuLi9zcmMvY29tbW9uL3RoaXJkX3Bh
cnR5L251bWVyaWNzLAorCQkJCSk7CisJCQkJUFJPRFVDVF9OQU1FID0gYW5nbGVfaW1hZ2VfdXRp
bDsKKwkJCQlXQVJOSU5HX0NGTEFHUyA9ICgKKwkJCQkJIi1XYWxsIiwKKwkJCQkJIi1XY2hhci1z
dWJzY3JpcHRzIiwKKwkJCQkJIi1XZXJyb3IiLAorCQkJCQkiLVdleHRyYSIsCisJCQkJCSItV2Zv
cm1hdD0yIiwKKwkJCQkJIi1XaW5pdC1zZWxmIiwKKwkJCQkJIi1Xbm9uLXZpcnR1YWwtZHRvciIs
CisJCQkJCSItV25vLWZvcm1hdC1ub25saXRlcmFsIiwKKwkJCQkJIi1Xbm8tdW5rbm93bi1wcmFn
bWFzIiwKKwkJCQkJIi1Xbm8tdW51c2VkLWZ1bmN0aW9uIiwKKwkJCQkJIi1Xbm8tdW51c2VkLXBh
cmFtZXRlciIsCisJCQkJCSItV3BhY2tlZCIsCisJCQkJCSItV3BvaW50ZXItYXJpdGgiLAorCQkJ
CQkiLVd1bmRlZiIsCisJCQkJCSItV3dyaXRlLXN0cmluZ3MiLAorCQkJCSk7CisJCQl9OworCQkJ
bmFtZSA9IERlYnVnOworCQl9OworLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24g
Ki8KKworLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTE3MjIwREUx
RDk5QjRDODYyNkUwQzM2RCAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2
ZVRhcmdldCAibGliR0xFU3YyIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7
CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTU0QjE0MEMxMzUwN0Y5RDg0OTRGMTRG
MCAvKiBEZWJ1ZyAqLywKKwkJCQlGOTM2RkUzREJEMjNGM0EyMjg4NENGRjUgLyogUmVsZWFzZSAq
LywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDE7CisJCQlkZWZh
dWx0Q29uZmlndXJhdGlvbk5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMjVEMUNCQTk3QjI3RDU3RTc2
NERGQ0FBIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJs
aWJHTEVTdjJfc3RhdGljIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJ
CQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTg2MUZBREJEQUM3MTE3Q0ZBMTc5MjVCRCAv
KiBEZWJ1ZyAqLywKKwkJCQkzNjc1RERGMTBCQ0ZCQkNBMzdEOENDRDAgLyogUmVsZWFzZSAqLywK
KwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDE7CisJCQlkZWZhdWx0
Q29uZmlndXJhdGlvbk5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJNTAwMEJDQUY4Nzc1NkI1MzIxMEM3
RDE3IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJj
b21taXRfaWQiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxk
Q29uZmlndXJhdGlvbnMgPSAoCisJCQkJODQ2NDIxOEM3RkNFNzgyRkFDNTM4RjIyIC8qIERlYnVn
ICovLAorCQkJCTlBNkRCRUJGOTg2MDA5MkFFQTY3NzVCMiAvKiBSZWxlYXNlICovLAorCQkJKTsK
KwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMTsKKwkJCWRlZmF1bHRDb25maWd1
cmF0aW9uTmFtZSA9IERlYnVnOworCQl9OworCQk1Qjg3NzM3OTEyRDA1OTcyMDhFNkNGRkIgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJhbmdsZSIgKi8gPSB7CisJ
CQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgK
KwkJCQkzREI1QkZDNTgwMkU5RDM2NTBEMzVGNEQgLyogRGVidWcgKi8sCisJCQkJNjIxM0FCRUI3
OEU0NTBENjkxMzY2QjhGIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25Jc1Zpc2libGUgPSAxOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gRGVidWc7
CisJCX07CisJCTYwODQzRURGRUFDMERFNzZFNDAxMDkwQSAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiYW5nbGVfaW1hZ2VfdXRpbCIgKi8gPSB7CisJCQlp
c2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJ
CQlGRkYxQjE2RDU3RTA4RjU3MEIwQjc5QUIgLyogRGVidWcgKi8sCisJCQkJQjMyNDdFNEE4MzlE
OUE2QjU5OUMzNTA2IC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25Jc1Zpc2libGUgPSAxOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gRGVidWc7CisJ
CX07CisJCTcyMDE3MDU5MDEzQ0RFNEVFMEExM0I0RiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAibGliQU5HTEVfcmVuZGVyZXJfY29uZmlnIiAqLyA9
IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25z
ID0gKAorCQkJCTZCOTA1MjAwMTkxRTdGQzcyQkNDOUFCOCAvKiBEZWJ1ZyAqLywKKwkJCQkyQjY1
RTA5QUY1NzEzN0YzNTM4QjY1MkQgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbklzVmlzaWJsZSA9IDE7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBE
ZWJ1ZzsKKwkJfTsKKwkJNzNEMTVCMUI5MDk2M0U2MzEzQTMwQjMxIC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsaWJFR0wiICovID0geworCQkJaXNhID0g
WENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJRTAw
NTE2MUYyOTVEQTYyOTBGQzYwMTBBIC8qIERlYnVnICovLAorCQkJCTYxMDU0MUEzQzRCMEQ0RDVD
QTdGRENEQyAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNW
aXNpYmxlID0gMTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IERlYnVnOworCQl9Owor
CQk3QTI1QzA2MDVCMzgyMjRGNjhCNjhGMEEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgImxpYkVHTF9zdGF0aWMiICovID0geworCQkJaXNhID0gWENDb25m
aWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJRjFCQzg4RDQy
QTYzNTFGNDg3RDNCMkY0IC8qIERlYnVnICovLAorCQkJCUNEOTI0NjMxNjI0MDI0MjVFMjZCQjdB
NSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxl
ID0gMTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IERlYnVnOworCQl9OworCQk5NjJD
QzNEM0RCQTc3NzVDNjQ3QkFFOTIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhO
YXRpdmVUYXJnZXQgImxpYkFOR0xFIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxp
c3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCUUwOEM3Q0NERENCRDM5QkQ0Njk0
OTVCNCAvKiBEZWJ1ZyAqLywKKwkJCQkwOENCMkFFMDJCRUFGREM4MTU5NTk2QkQgLyogUmVsZWFz
ZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDE7CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJQTFEODFGNDFDNTMwRjY3
RDY3OUY0MzYyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0
ICJhbmdsZV9ncHVfaW5mb191dGlsIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxp
c3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTJDRjM1M0UyRkQwMkRGMTM5NTFC
Q0EwNyAvKiBEZWJ1ZyAqLywKKwkJCQlCRjNBQTlCREJBMkJBNDU3QThENDE0NjUgLyogUmVsZWFz
ZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDE7CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJRDFEODM4NTcxNDAzMDVE
OEYxM0UyRDg5IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFy
Z2V0ICJBbGwiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxk
Q29uZmlndXJhdGlvbnMgPSAoCisJCQkJNDVDN0FCNDBFOTJCMkQ2RTlFREE4RjhFIC8qIERlYnVn
ICovLAorCQkJCUNGM0UzNzAxRDc4OTY3MTc0MzJGRjk1MiAvKiBSZWxlYXNlICovLAorCQkJKTsK
KwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMTsKKwkJCWRlZmF1bHRDb25maWd1
cmF0aW9uTmFtZSA9IERlYnVnOworCQl9OworCQlEQjNDRTY4MjY1NUY0Q0RCOTA3NjJDOEMgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImFuZ2xlX2NvbW1v
biIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKKwkJCQlEMDJGODE1RkJCNzA4MzY3REE2QzU2RUYgLyogRGVidWcgKi8sCisJ
CQkJOUNEMTIwODNENkMyODQwM0MxMTZERDc0IC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAxOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25O
YW1lID0gRGVidWc7CisJCX07CisJCUVEMTIyNUM5OTVEOTgyN0MzRjA1QjM2OSAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAicHJlcHJvY2Vzc29yIiAqLyA9
IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25z
ID0gKAorCQkJCTFBOTNGOTA0MTI0NzMyQ0NERDM1MDBCOCAvKiBEZWJ1ZyAqLywKKwkJCQkyQjQx
NDlERjVFMTMwQTgwQjQ4NjU2MzYgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbklzVmlzaWJsZSA9IDE7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBE
ZWJ1ZzsKKwkJfTsKKwkJRUUxMjcxM0YwNDkyRjQyMTEwREIwQTU0IC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJjb3B5X3NjcmlwdHMiICovID0gewor
CQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAo
CisJCQkJMjJEOTRCODQ1ODQxNkUzMjkzOTI2MzE1IC8qIERlYnVnICovLAorCQkJCUUzQzc3RDVC
NUUwMTJBODVGRERDOUExNSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1
cmF0aW9uSXNWaXNpYmxlID0gMTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IERlYnVn
OworCQl9OworCQlGOUNFNjlFNDU1NUQzQkY1M0ZDQ0U1QzQgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgInRyYW5zbGF0b3IiICovID0geworCQkJaXNhID0g
WENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJRjZD
RTQ2MjcyRTNEQkQxQTUxRjc5MTRGIC8qIERlYnVnICovLAorCQkJCUU4RThERkQ4NTg0MjUyRTNG
NUYwOTNDRSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNW
aXNpYmxlID0gMTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IERlYnVnOworCQl9Owor
CQlGRUIyRTMyRjFCMERGMjYxRDQ5RjBEODQgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhBZ2dyZWdhdGVUYXJnZXQgImxpYkFOR0xFX2QzZDExX2NvbmZpZyIgKi8gPSB7CisJCQlp
c2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJ
CQk3NkYzMkNGMDA0RjU0QTkxQjkwRkI2QUMgLyogRGVidWcgKi8sCisJCQkJNEU0QTkyMkI1Q0FE
MzM5MjUzMjI0MTk4IC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25Jc1Zpc2libGUgPSAxOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gRGVidWc7CisJ
CX07CisvKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJfTsKKwlyb290T2Jq
ZWN0ID0gOTY4NjAwOEFCMEJBMjhGQzIzOTVEOUYwIC8qIFByb2plY3Qgb2JqZWN0ICovOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9NZW1vcnlCdWZm
ZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9NZW1vcnlCdWZmZXIu
Y3BwCmluZGV4IGU3YTNmYjRhMmI3Li5lNzIwZWRjYWJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9NZW1vcnlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vTWVtb3J5QnVmZmVyLmNwcApAQCAtMTEsMTkgKzEx
LDE4IEBACiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKIAotbmFtZXNwYWNlIHJ4CituYW1l
c3BhY2UgYW5nbGUKIHsKIAotTWVtb3J5QnVmZmVyOjpNZW1vcnlCdWZmZXIoKQotICAgIDogbVNp
emUoMCksCi0gICAgICBtRGF0YShOVUxMKQorLy8gTWVtb3J5QnVmZmVyIGltcGxlbWVudGF0aW9u
LgorTWVtb3J5QnVmZmVyOjpNZW1vcnlCdWZmZXIoKSA6IG1TaXplKDApLCBtRGF0YShudWxscHRy
KQogewogfQogCiBNZW1vcnlCdWZmZXI6On5NZW1vcnlCdWZmZXIoKQogewogICAgIGZyZWUobURh
dGEpOwotICAgIG1EYXRhID0gTlVMTDsKKyAgICBtRGF0YSA9IG51bGxwdHI7CiB9CiAKIGJvb2wg
TWVtb3J5QnVmZmVyOjpyZXNpemUoc2l6ZV90IHNpemUpCkBAIC0zMSw3ICszMCw3IEBAIGJvb2wg
TWVtb3J5QnVmZmVyOjpyZXNpemUoc2l6ZV90IHNpemUpCiAgICAgaWYgKHNpemUgPT0gMCkKICAg
ICB7CiAgICAgICAgIGZyZWUobURhdGEpOwotICAgICAgICBtRGF0YSA9IE5VTEw7CisgICAgICAg
IG1EYXRhID0gbnVsbHB0cjsKICAgICAgICAgbVNpemUgPSAwOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICB9CkBAIC00Myw3ICs0Miw3IEBAIGJvb2wgTWVtb3J5QnVmZmVyOjpyZXNpemUoc2l6
ZV90IHNpemUpCiAKICAgICAvLyBPbmx5IHJlYWxsb2NhdGUgaWYgdGhlIHNpemUgaGFzIGNoYW5n
ZWQuCiAgICAgdWludDhfdCAqbmV3TWVtb3J5ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4o
bWFsbG9jKHNpemVvZih1aW50OF90KSAqIHNpemUpKTsKLSAgICBpZiAobmV3TWVtb3J5ID09IE5V
TEwpCisgICAgaWYgKG5ld01lbW9yeSA9PSBudWxscHRyKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KQEAgLTc3LDQgKzc2LDU4IEBAIHVpbnQ4X3QgKk1lbW9yeUJ1ZmZlcjo6
ZGF0YSgpCiAgICAgcmV0dXJuIG1EYXRhOwogfQogCisvLyBTY3JhdGNoQnVmZmVyIGltcGxlbWVu
dGF0aW9uLgorCitTY3JhdGNoQnVmZmVyOjpTY3JhdGNoQnVmZmVyKHVpbnQzMl90IGxpZmV0aW1l
KSA6IG1MaWZldGltZShsaWZldGltZSksIG1SZXNldENvdW50ZXIobGlmZXRpbWUpCit7Cit9CisK
K1NjcmF0Y2hCdWZmZXI6On5TY3JhdGNoQnVmZmVyKCkKK3sKIH0KKworYm9vbCBTY3JhdGNoQnVm
ZmVyOjpnZXQoc2l6ZV90IHJlcXVlc3RlZFNpemUsIE1lbW9yeUJ1ZmZlciAqKm1lbW9yeUJ1ZmZl
ck91dCkKK3sKKyAgICBpZiAobVNjcmF0Y2hNZW1vcnkuc2l6ZSgpID09IHJlcXVlc3RlZFNpemUp
CisgICAgeworICAgICAgICBtUmVzZXRDb3VudGVyICAgID0gbUxpZmV0aW1lOworICAgICAgICAq
bWVtb3J5QnVmZmVyT3V0ID0gJm1TY3JhdGNoTWVtb3J5OworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBpZiAobVNjcmF0Y2hNZW1vcnkuc2l6ZSgpID4gcmVxdWVzdGVkU2l6ZSkK
KyAgICB7CisgICAgICAgIHRpY2soKTsKKyAgICB9CisKKyAgICBpZiAobVJlc2V0Q291bnRlciA9
PSAwIHx8IG1TY3JhdGNoTWVtb3J5LnNpemUoKSA8IHJlcXVlc3RlZFNpemUpCisgICAgeworICAg
ICAgICBtU2NyYXRjaE1lbW9yeS5yZXNpemUoMCk7CisgICAgICAgIGlmICghbVNjcmF0Y2hNZW1v
cnkucmVzaXplKHJlcXVlc3RlZFNpemUpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgbVJlc2V0Q291bnRlciA9IG1MaWZldGltZTsKKyAg
ICB9CisKKyAgICBBU1NFUlQobVNjcmF0Y2hNZW1vcnkuc2l6ZSgpID49IHJlcXVlc3RlZFNpemUp
OworCisgICAgKm1lbW9yeUJ1ZmZlck91dCA9ICZtU2NyYXRjaE1lbW9yeTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwordm9pZCBTY3JhdGNoQnVmZmVyOjp0aWNrKCkKK3sKKyAgICBpZiAobVJlc2V0
Q291bnRlciA+IDApCisgICAgeworICAgICAgICAtLW1SZXNldENvdW50ZXI7CisgICAgfQorfQor
Cit2b2lkIFNjcmF0Y2hCdWZmZXI6OmNsZWFyKCkKK3sKKyAgICBtUmVzZXRDb3VudGVyID0gbUxp
ZmV0aW1lOworICAgIG1TY3JhdGNoTWVtb3J5LnJlc2l6ZSgwKTsKK30KKworfSAgLy8gbmFtZXNw
YWNlIGFuZ2xlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9u
L01lbW9yeUJ1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9NZW1v
cnlCdWZmZXIuaAppbmRleCBlYzYyMWNiY2E3ZS4uYjMwZjczN2IxMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vTWVtb3J5QnVmZmVyLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9NZW1vcnlCdWZmZXIuaApAQCAtMTIsMTAg
KzEyLDEwIEBACiAjaW5jbHVkZSA8Y3N0ZGRlZj4KICNpbmNsdWRlIDxzdGRpbnQuaD4KIAotbmFt
ZXNwYWNlIHJ4CituYW1lc3BhY2UgYW5nbGUKIHsKIAotY2xhc3MgTWVtb3J5QnVmZmVyIDogYW5n
bGU6Ok5vbkNvcHlhYmxlCitjbGFzcyBNZW1vcnlCdWZmZXIgZmluYWwgOiBOb25Db3B5YWJsZQog
ewogICBwdWJsaWM6CiAgICAgTWVtb3J5QnVmZmVyKCk7CkBAIC0zMyw2ICszMywyOSBAQCBjbGFz
cyBNZW1vcnlCdWZmZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICB1aW50OF90ICptRGF0YTsK
IH07CiAKLX0KK2NsYXNzIFNjcmF0Y2hCdWZmZXIgZmluYWwgOiBOb25Db3B5YWJsZQoreworICBw
dWJsaWM6CisgICAgLy8gSWYgd2UgcmVxdWVzdCBhIHNjcmF0Y2ggYnVmZmVyIHJlcXVlc3Rpbmcg
YSBzbWFsbGVyIHNpemUgdGhpcyBtYW55IHRpbWVzLCByZWxlYXNlIGFuZAorICAgIC8vIHJlY3Jl
YXRlIHRoZSBzY3JhdGNoIGJ1ZmZlci4gVGhpcyBlbnN1cmVzIHdlIGRvbid0IGhhdmUgYSBkZWdl
bmVyYXRlIGNhc2Ugd2hlcmUgd2UgYXJlIHN0dWNrCisgICAgLy8gaG9nZ2luZyBtZW1vcnkuCisg
ICAgU2NyYXRjaEJ1ZmZlcih1aW50MzJfdCBsaWZldGltZSk7CisgICAgflNjcmF0Y2hCdWZmZXIo
KTsKKworICAgIC8vIFJldHVybnMgdHJ1ZSB3aXRoIGEgbWVtb3J5IGJ1ZmZlciBvZiB0aGUgcmVx
dWVzdGVkIHNpemUsIG9yIGZhbHNlIG9uIGZhaWx1cmUuCisgICAgYm9vbCBnZXQoc2l6ZV90IHJl
cXVlc3RlZFNpemUsIE1lbW9yeUJ1ZmZlciAqKm1lbW9yeUJ1ZmZlck91dCk7CisKKyAgICAvLyBU
aWNrcyB0aGUgcmVsZWFzZSBjb3VudGVyIGZvciB0aGUgc2NyYXRjaCBidWZmZXIuIEFsc28gZG9u
ZSBpbXBsaWNpdGx5IGluIGdldCgpLgorICAgIHZvaWQgdGljaygpOworCisgICAgdm9pZCBjbGVh
cigpOworCisgIHByaXZhdGU6CisgICAgY29uc3QgdWludDMyX3QgbUxpZmV0aW1lOworICAgIHVp
bnQzMl90IG1SZXNldENvdW50ZXI7CisgICAgTWVtb3J5QnVmZmVyIG1TY3JhdGNoTWVtb3J5Owor
fTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCiAKICNlbmRpZiAvLyBDT01NT05fTUVNT1JZQlVG
RkVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2Fu
Z2xldXRpbHMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9hbmdsZXV0
aWxzLmNwcAppbmRleCAwMDY3ODU4NThiZi4uMDUzNDhhNDkxNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vYW5nbGV1dGlscy5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9hbmdsZXV0aWxzLmNwcApAQCAtMTksOCArMTks
MTUgQEAgY29uc3QgdWludHB0cl90IERpcnR5UG9pbnRlciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludHB0cl90Pjo6bWF4KCk7CiAKIHNpemVfdCBGb3JtYXRTdHJpbmdJbnRvVmVjdG9yKGNvbnN0
IGNoYXIgKmZtdCwgdmFfbGlzdCB2YXJhcmcsIHN0ZDo6dmVjdG9yPGNoYXI+JiBvdXRCdWZmZXIp
CiB7CisgICAgLy8gVGhlIHN0YXRlIG9mIHRoZSB2YV9saXN0IHBhc3NlZCB0byB2c25wcmludGYg
aXMgdW5kZWZpbmVkIGFmdGVyIHRoZSBjYWxsLCBkbyBhIGNvcHkgaW4gY2FzZQorICAgIC8vIHdl
IG5lZWQgdG8gZ3JvdyB0aGUgYnVmZmVyLgorICAgIHZhX2xpc3QgdmFyYXJnQ29weTsKKyAgICB2
YV9jb3B5KHZhcmFyZ0NvcHksIHZhcmFyZyk7CisKICAgICAvLyBBdHRlbXB0IHRvIGp1c3QgcHJp
bnQgdG8gdGhlIGN1cnJlbnQgYnVmZmVyCi0gICAgaW50IGxlbiA9IHZzbnByaW50ZigmKG91dEJ1
ZmZlci5mcm9udCgpKSwgb3V0QnVmZmVyLnNpemUoKSwgZm10LCB2YXJhcmcpOworICAgIGludCBs
ZW4gPSB2c25wcmludGYoJihvdXRCdWZmZXIuZnJvbnQoKSksIG91dEJ1ZmZlci5zaXplKCksIGZt
dCwgdmFyYXJnQ29weSk7CisgICAgdmFfZW5kKHZhcmFyZ0NvcHkpOworCiAgICAgaWYgKGxlbiA8
IDAgfHwgc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW4pID49IG91dEJ1ZmZlci5zaXplKCkpCiAgICAg
ewogICAgICAgICAvLyBCdWZmZXIgd2FzIG5vdCBsYXJnZSBlbm91Z2gsIGNhbGN1bGF0ZSB0aGUg
cmVxdWlyZWQgc2l6ZSBhbmQgcmVzaXplIHRoZSBidWZmZXIKQEAgLTI4LDcgKzM1LDkgQEAgc2l6
ZV90IEZvcm1hdFN0cmluZ0ludG9WZWN0b3IoY29uc3QgY2hhciAqZm10LCB2YV9saXN0IHZhcmFy
Zywgc3RkOjp2ZWN0b3I8Y2hhcj4KICAgICAgICAgb3V0QnVmZmVyLnJlc2l6ZShsZW4gKyAxKTsK
IAogICAgICAgICAvLyBQcmludCBhZ2FpbgotICAgICAgICBsZW4gPSB2c25wcmludGYoJihvdXRC
dWZmZXIuZnJvbnQoKSksIG91dEJ1ZmZlci5zaXplKCksIGZtdCwgdmFyYXJnKTsKKyAgICAgICAg
dmFfY29weSh2YXJhcmdDb3B5LCB2YXJhcmcpOworICAgICAgICBsZW4gPSB2c25wcmludGYoJihv
dXRCdWZmZXIuZnJvbnQoKSksIG91dEJ1ZmZlci5zaXplKCksIGZtdCwgdmFyYXJnQ29weSk7Cisg
ICAgICAgIHZhX2VuZCh2YXJhcmdDb3B5KTsKICAgICB9CiAgICAgQVNTRVJUKGxlbiA+PSAwKTsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW4pOwpAQCAtMzYsMTAgKzQ1LDcgQEAg
c2l6ZV90IEZvcm1hdFN0cmluZ0ludG9WZWN0b3IoY29uc3QgY2hhciAqZm10LCB2YV9saXN0IHZh
cmFyZywgc3RkOjp2ZWN0b3I8Y2hhcj4KIAogc3RkOjpzdHJpbmcgRm9ybWF0U3RyaW5nKGNvbnN0
IGNoYXIgKmZtdCwgdmFfbGlzdCB2YXJhcmcpCiB7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZXhpdC10aW1lLWRlc3Ry
dWN0b3JzIgogICAgIHN0YXRpYyBzdGQ6OnZlY3RvcjxjaGFyPiBidWZmZXIoNTEyKTsKLSNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKIAogICAgIHNpemVfdCBsZW4gPSBGb3JtYXRTdHJpbmdJ
bnRvVmVjdG9yKGZtdCwgdmFyYXJnLCBidWZmZXIpOwogICAgIHJldHVybiBzdGQ6OnN0cmluZygm
YnVmZmVyWzBdLCBsZW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi9hbmdsZXV0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9u
L2FuZ2xldXRpbHMuaAppbmRleCBlYWI4Yzc5M2I3MC4uNzg0OWQ5YWZkNzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vYW5nbGV1dGlscy5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vYW5nbGV1dGlscy5oCkBAIC0yMyw2ICsy
MywxMCBAQAogbmFtZXNwYWNlIGFuZ2xlCiB7CiAKKyNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9E
M0Q5KSB8fCBkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0QxMSkKK3VzaW5nIE1pY3Jvc29mdDo6V1JM
OjpDb21QdHI7CisjZW5kaWYgIC8vIGRlZmluZWQoQU5HTEVfRU5BQkxFX0QzRDkpIHx8IGRlZmlu
ZWQoQU5HTEVfRU5BQkxFX0QzRDExKQorCiBjbGFzcyBOb25Db3B5YWJsZQogewogICBwdWJsaWM6
CkBAIC0xMTYsMTAgKzEyMCw4IEBAIGlubGluZSBib29sIElzTWFza0ZsYWdTZXQoVCBtYXNrLCBU
IGZsYWcpCiAKIGlubGluZSBjb25zdCBjaGFyKiBNYWtlU3RhdGljU3RyaW5nKGNvbnN0IHN0ZDo6
c3RyaW5nICZzdHIpCiB7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgogICAgIHN0
YXRpYyBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gc3RyaW5nczsKLSNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwb3AKKwogICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPjo6aXRlcmF0b3IgaXQgPSBzdHJp
bmdzLmZpbmQoc3RyKTsKICAgICBpZiAoaXQgIT0gc3RyaW5ncy5lbmQoKSkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL0JpdFNldEl0ZXJhdG9y
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2JpdHNldF91dGlscy5oCnNp
bWlsYXJpdHkgaW5kZXggNzklCnJlbmFtZSBmcm9tIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21tb24vQml0U2V0SXRlcmF0b3IuaApyZW5hbWUgdG8gU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbW1vbi9iaXRzZXRfdXRpbHMuaAppbmRleCAzMjQ4Y2U0NGM5Zi4uNmJkZGVkZDU1
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vQml0U2V0
SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2JpdHNl
dF91dGlscy5oCkBAIC0zLDggKzMsOCBAQAogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KIC8vCi0vLyBCaXRTZXRJdGVyYXRvcjoKLS8vICAgQSBoZWxwZXIg
Y2xhc3MgdG8gcXVpY2tseSBiaXRzY2FuIGJpdHNldHMgZm9yIHNldCBiaXRzLgorLy8gYml0c2V0
X3V0aWxzOgorLy8gICBCaXRzZXQtcmVsYXRlZCBoZWxwZXIgY2xhc3Nlcywgc3VjaCBhcyBhIGZh
c3QgaXRlcmF0b3IgdG8gc2NhbiBmb3Igc2V0IGJpdHMuCiAvLwogCiAjaWZuZGVmIENPTU1PTl9C
SVRTRVRJVEVSQVRPUl9IXwpAQCAtNTYsMTQgKzU2LDEyIEBAIGNsYXNzIEJpdFNldEl0ZXJhdG9y
IGZpbmFsCiB9OwogCiB0ZW1wbGF0ZSA8c2l6ZV90IE4+Ci1CaXRTZXRJdGVyYXRvcjxOPjo6Qml0
U2V0SXRlcmF0b3IoY29uc3Qgc3RkOjpiaXRzZXQ8Tj4gJmJpdHNldCkKLSAgICA6IG1CaXRzKGJp
dHNldCkKK0JpdFNldEl0ZXJhdG9yPE4+OjpCaXRTZXRJdGVyYXRvcihjb25zdCBzdGQ6OmJpdHNl
dDxOPiAmYml0c2V0KSA6IG1CaXRzKGJpdHNldCkKIHsKIH0KIAogdGVtcGxhdGUgPHNpemVfdCBO
PgotQml0U2V0SXRlcmF0b3I8Tj46OkJpdFNldEl0ZXJhdG9yKGNvbnN0IEJpdFNldEl0ZXJhdG9y
ICZvdGhlcikKLSAgICA6IG1CaXRzKG90aGVyLm1CaXRzKQorQml0U2V0SXRlcmF0b3I8Tj46OkJp
dFNldEl0ZXJhdG9yKGNvbnN0IEJpdFNldEl0ZXJhdG9yICZvdGhlcikgOiBtQml0cyhvdGhlci5t
Qml0cykKIHsKIH0KIApAQCAtOTcsMjIgKzk1LDYgQEAgdHlwZW5hbWUgQml0U2V0SXRlcmF0b3I8
Tj46Okl0ZXJhdG9yICZCaXRTZXRJdGVyYXRvcjxOPjo6SXRlcmF0b3I6Om9wZXJhdG9yKysoKQog
ICAgIHJldHVybiAqdGhpczsKIH0KIAotaW5saW5lIHVuc2lnbmVkIGxvbmcgU2NhbkZvcndhcmQo
dW5zaWduZWQgbG9uZyBiaXRzKQotewotICAgIEFTU0VSVChiaXRzICE9IDApOwotI2lmIGRlZmlu
ZWQoQU5HTEVfUExBVEZPUk1fV0lORE9XUykKLSAgICB1bnNpZ25lZCBsb25nIGZpcnN0Qml0SW5k
ZXggPSAwdWw7Ci0gICAgdW5zaWduZWQgY2hhciByZXQgPSBfQml0U2NhbkZvcndhcmQoJmZpcnN0
Qml0SW5kZXgsIGJpdHMpOwotICAgIEFTU0VSVChyZXQgIT0gMCk7Ci0gICAgVU5VU0VEX0FTU0VS
VElPTl9WQVJJQUJMRShyZXQpOwotICAgIHJldHVybiBmaXJzdEJpdEluZGV4OwotI2VsaWYgZGVm
aW5lZChBTkdMRV9QTEFURk9STV9QT1NJWCkKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZz4oX19idWlsdGluX2N0emwoYml0cykpOwotI2Vsc2UKLSNlcnJvciBQbGVhc2UgaW1w
bGVtZW50IGJpdC1zY2FuLWZvcndhcmQgZm9yIHlvdXIgcGxhdGZvcm0hCi0jZW5kaWYKLX0KLQog
dGVtcGxhdGUgPHNpemVfdCBOPgogYm9vbCBCaXRTZXRJdGVyYXRvcjxOPjo6SXRlcmF0b3I6Om9w
ZXJhdG9yPT0oY29uc3QgSXRlcmF0b3IgJm90aGVyKSBjb25zdAogewpAQCAtMTM1LDcgKzExNyw3
IEBAIHVuc2lnbmVkIGxvbmcgQml0U2V0SXRlcmF0b3I8Tj46Okl0ZXJhdG9yOjpnZXROZXh0Qml0
KCkKICAgICAgICAgdW5zaWduZWQgbG9uZyB3b3JkQml0cyA9IChtQml0cyAmIHdvcmRNYXNrKS50
b191bG9uZygpOwogICAgICAgICBpZiAod29yZEJpdHMgIT0gMHVsKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gU2NhbkZvcndhcmQod29yZEJpdHMpICsgbU9mZnNldDsKKyAgICAgICAg
ICAgIHJldHVybiBnbDo6U2NhbkZvcndhcmQod29yZEJpdHMpICsgbU9mZnNldDsKICAgICAgICAg
fQogCiAgICAgICAgIG1CaXRzID4+PSBCaXRzUGVyV29yZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vQml0U2V0SXRlcmF0b3JfdW5pdHRlc3QuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9iaXRzZXRfdXRpbHNfdW5pdHRlc3Qu
Y3BwCnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIFNvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21tb24vQml0U2V0SXRlcmF0b3JfdW5pdHRlc3QuY3BwCnJlbmFtZSB0byBTb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2JpdHNldF91dGlsc191bml0dGVzdC5jcHAK
aW5kZXggZTk2NWYyYzU2N2UuLjYxZWZmNTZiMzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tbW9uL0JpdFNldEl0ZXJhdG9yX3VuaXR0ZXN0LmNwcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2JpdHNldF91dGlsc191bml0dGVzdC5j
cHAKQEAgLTMsMTMgKzMsMTMgQEAKIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCiAvLwotLy8gQml0U2V0SXRlcmF0b3JUZXN0OgotLy8gICBUZXN0IHRoZSBJ
dGVyYWJsZUJpdFNldCBjbGFzcy4KKy8vIGJpdHNldF91dGlsc191bml0dGVzdDoKKy8vICAgVGVz
dHMgYml0c2V0IGhlbHBlcnMgYW5kIGN1c3RvbSBjbGFzc2VzLgogLy8KIAogI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CiAKLSNpbmNsdWRlICJjb21tb24vQml0U2V0SXRlcmF0b3IuaCIKKyNpbmNs
dWRlICJjb21tb24vYml0c2V0X3V0aWxzLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9kZWJ1Zy5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcAppbmRleCBkYzQ5
ZDI0YzU4Yi4uOTFlMTUyNGY2YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21tb24vZGVidWcuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21tb24vZGVidWcuY3BwCkBAIC0xMCwxMyArMTAsMTMgQEAKIAogI2luY2x1ZGUgPHN0ZGFyZy5o
PgogCisjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8Y3N0ZGlvPgogI2luY2x1ZGUgPGZzdHJl
YW0+CiAjaW5jbHVkZSA8aW9zdHJlYW0+CiAjaW5jbHVkZSA8dmVjdG9yPgogCiAjaW5jbHVkZSAi
Y29tbW9uL2FuZ2xldXRpbHMuaCIKLSNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0uaCIKICNpbmNs
dWRlICJjb21tb24vT3B0aW9uYWwuaCIKIAogbmFtZXNwYWNlIGdsCkBAIC0yNSwxMDMgKzI1LDQz
IEBAIG5hbWVzcGFjZSBnbAogbmFtZXNwYWNlCiB7CiAKLWNsYXNzIEZvcm1hdHRlZFN0cmluZyBm
aW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQotewotICBwdWJsaWM6Ci0gICAgRm9ybWF0dGVkU3Ry
aW5nKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJhcmcpIDogbUZvcm1hdChmb3JtYXQp
Ci0gICAgewotICAgICAgICB2YV9jb3B5KG1WYXJBcmcsIHZhcmFyZyk7Ci0gICAgfQotCi0gICAg
Y29uc3QgY2hhciAqY19zdHIoKSB7IHJldHVybiBzdHIoKS5jX3N0cigpOyB9Ci0KLSAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc3RyKCkKLSAgICB7Ci0gICAgICAgIGlmICghbU1lc3NhZ2UudmFsaWQo
KSkKLSAgICAgICAgewotICAgICAgICAgICAgbU1lc3NhZ2UgPSBGb3JtYXRTdHJpbmcobUZvcm1h
dCwgbVZhckFyZyk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1NZXNzYWdlLnZhbHVlKCk7
Ci0gICAgfQorRGVidWdBbm5vdGF0b3IgKmdfZGVidWdBbm5vdGF0b3IgPSBudWxscHRyOwogCi0g
ICAgc2l6ZV90IGxlbmd0aCgpCi0gICAgewotICAgICAgICBjX3N0cigpOwotICAgICAgICByZXR1
cm4gbU1lc3NhZ2UudmFsdWUoKS5sZW5ndGgoKTsKLSAgICB9Citjb25zdGV4cHIgc3RkOjphcnJh
eTxjb25zdCBjaGFyICosIExPR19OVU1fU0VWRVJJVElFUz4gZ19sb2dTZXZlcml0eU5hbWVzID0g
eworICAgIHsiRVZFTlQiLCAiV0FSTiIsICJFUlIifX07CiAKLSAgcHJpdmF0ZToKLSAgICBjb25z
dCBjaGFyICptRm9ybWF0OwotICAgIHZhX2xpc3QgbVZhckFyZzsKLSAgICBPcHRpb25hbDxzdGQ6
OnN0cmluZz4gbU1lc3NhZ2U7Ci19OwotZW51bSBEZWJ1Z1RyYWNlT3V0cHV0VHlwZQorY29uc3Rl
eHByIGNvbnN0IGNoYXIgKkxvZ1NldmVyaXR5TmFtZShpbnQgc2V2ZXJpdHkpCiB7Ci0gICBEZWJ1
Z1RyYWNlT3V0cHV0VHlwZU5vbmUsCi0gICBEZWJ1Z1RyYWNlT3V0cHV0VHlwZVNldE1hcmtlciwK
LSAgIERlYnVnVHJhY2VPdXRwdXRUeXBlQmVnaW5FdmVudAotfTsKLQotRGVidWdBbm5vdGF0b3Ig
KmdfZGVidWdBbm5vdGF0b3IgPSBudWxscHRyOworICAgIHJldHVybiAoc2V2ZXJpdHkgPj0gMCAm
JiBzZXZlcml0eSA8IExPR19OVU1fU0VWRVJJVElFUykgPyBnX2xvZ1NldmVyaXR5TmFtZXNbc2V2
ZXJpdHldCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6ICJVTktOT1dOIjsKK30KIAotdm9pZCBvdXRwdXQoYm9vbCB0cmFjZUluRGVi
dWdPbmx5LCBNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgRGVidWdUcmFjZU91dHB1dFR5cGUgb3V0
cHV0VHlwZSwKLSAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YXJhcmcp
Citib29sIFNob3VsZENyZWF0ZUxvZ01lc3NhZ2UoTG9nU2V2ZXJpdHkgc2V2ZXJpdHkpCiB7Ci0g
ICAgaWYgKERlYnVnQW5ub3RhdGlvbnNBY3RpdmUoKSkKLSAgICB7Ci0jcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZXhpdC10
aW1lLWRlc3RydWN0b3JzIgotICAgICAgICBzdGF0aWMgc3RkOjp2ZWN0b3I8Y2hhcj4gYnVmZmVy
KDUxMik7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0gICAgICAgIHNpemVfdCBsZW4g
PSBGb3JtYXRTdHJpbmdJbnRvVmVjdG9yKGZvcm1hdCwgdmFyYXJnLCBidWZmZXIpOwotICAgICAg
ICBzdGQ6OndzdHJpbmcgZm9ybWF0dGVkV2lkZU1lc3NhZ2UoYnVmZmVyLmJlZ2luKCksIGJ1ZmZl
ci5iZWdpbigpICsgbGVuKTsKLQotICAgICAgICBBU1NFUlQoZ19kZWJ1Z0Fubm90YXRvciAhPSBu
dWxscHRyKTsKLSAgICAgICAgc3dpdGNoIChvdXRwdXRUeXBlKQotICAgICAgICB7Ci0gICAgICAg
ICAgY2FzZSBEZWJ1Z1RyYWNlT3V0cHV0VHlwZU5vbmU6Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICBjYXNlIERlYnVnVHJhY2VPdXRwdXRUeXBlQmVnaW5FdmVudDoKLSAgICAgICAgICAg
IGdfZGVidWdBbm5vdGF0b3ItPmJlZ2luRXZlbnQoZm9ybWF0dGVkV2lkZU1lc3NhZ2UuY19zdHIo
KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIERlYnVnVHJhY2VPdXRwdXRU
eXBlU2V0TWFya2VyOgotICAgICAgICAgICAgZ19kZWJ1Z0Fubm90YXRvci0+c2V0TWFya2VyKGZv
cm1hdHRlZFdpZGVNZXNzYWdlLmNfc3RyKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBGb3JtYXR0ZWRTdHJpbmcgZm9ybWF0dGVkTWVzc2FnZShmb3JtYXQs
IHZhcmFyZyk7Ci0KLSAgICBpZiAobWVzc2FnZVR5cGUgPT0gTUVTU0FHRV9FUlIpCi0gICAgewot
ICAgICAgICBzdGQ6OmNlcnIgPDwgZm9ybWF0dGVkTWVzc2FnZS5jX3N0cigpOwotI2lmICFkZWZp
bmVkKE5ERUJVRykgJiYgZGVmaW5lZChfTVNDX1ZFUikKLSAgICAgICAgT3V0cHV0RGVidWdTdHJp
bmdBKGZvcm1hdHRlZE1lc3NhZ2UuY19zdHIoKSk7Ci0jZW5kaWYgIC8vICFkZWZpbmVkKE5ERUJV
RykgJiYgZGVmaW5lZChfTVNDX1ZFUikKLSAgICB9CisjaWYgZGVmaW5lZChBTkdMRV9UUkFDRV9F
TkFCTEVEKQorICAgIHJldHVybiB0cnVlOworI2VsaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfQVNT
RVJUUykKKyAgICByZXR1cm4gc2V2ZXJpdHkgPT0gTE9HX0VSUjsKKyNlbHNlCisgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCit9CiAKLSNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9ERUJVR19UUkFD
RSkKLSNpZiBkZWZpbmVkKE5ERUJVRykKLSAgICBpZiAodHJhY2VJbkRlYnVnT25seSkKLSAgICB7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYgIC8vIE5ERUJVRwotICAgIHN0YXRpYyBz
dGQ6Om9mc3RyZWFtIGZpbGUoVFJBQ0VfT1VUUFVUX0ZJTEUsIHN0ZDo6b2ZzdHJlYW06OmFwcCk7
Ci0gICAgaWYgKGZpbGUpCi0gICAgewotICAgICAgICBmaWxlLndyaXRlKGZvcm1hdHRlZE1lc3Nh
Z2UuY19zdHIoKSwgZm9ybWF0dGVkTWVzc2FnZS5sZW5ndGgoKSk7Ci0gICAgICAgIGZpbGUuZmx1
c2goKTsKLSAgICB9Cit9ICAvLyBuYW1lc3BhY2UKIAotI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxF
X0RFQlVHX1RSQUNFX1RPX0RFQlVHR0VSKQotICAgIE91dHB1dERlYnVnU3RyaW5nQShmb3JtYXR0
ZWRNZXNzYWdlLmNfc3RyKCkpOwotI2VuZGlmICAvLyBBTkdMRV9FTkFCTEVfREVCVUdfVFJBQ0Vf
VE9fREVCVUdHRVIKK25hbWVzcGFjZSBwcml2Cit7CiAKLSNlbmRpZiAgLy8gQU5HTEVfRU5BQkxF
X0RFQlVHX1RSQUNFCitib29sIFNob3VsZENyZWF0ZVBsYXRmb3JtTG9nTWVzc2FnZShMb2dTZXZl
cml0eSBzZXZlcml0eSkKK3sKKyNpZiBkZWZpbmVkKEFOR0xFX1RSQUNFX0VOQUJMRUQpCisgICAg
cmV0dXJuIHRydWU7CisjZWxzZQorICAgIHJldHVybiBzZXZlcml0eSAhPSBMT0dfRVZFTlQ7Cisj
ZW5kaWYKIH0KIAotfSAvLyBuYW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZSBwcml2CiAKIGJvb2wg
RGVidWdBbm5vdGF0aW9uc0FjdGl2ZSgpCiB7CkBAIC0xMzIsNiArNzIsMTEgQEAgYm9vbCBEZWJ1
Z0Fubm90YXRpb25zQWN0aXZlKCkKICNlbmRpZgogfQogCitib29sIERlYnVnQW5ub3RhdGlvbnNJ
bml0aWFsaXplZCgpCit7CisgICAgcmV0dXJuIGdfZGVidWdBbm5vdGF0b3IgIT0gbnVsbHB0cjsK
K30KKwogdm9pZCBJbml0aWFsaXplRGVidWdBbm5vdGF0aW9ucyhEZWJ1Z0Fubm90YXRvciAqZGVi
dWdBbm5vdGF0b3IpCiB7CiAgICAgVW5pbml0aWFsaXplRGVidWdBbm5vdGF0aW9ucygpOwpAQCAt
MTQ0LDI1ICs4OSwyMCBAQCB2b2lkIFVuaW5pdGlhbGl6ZURlYnVnQW5ub3RhdGlvbnMoKQogICAg
IGdfZGVidWdBbm5vdGF0b3IgPSBudWxscHRyOwogfQogCi12b2lkIHRyYWNlKGJvb2wgdHJhY2VJ
bkRlYnVnT25seSwgTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwg
Li4uKQotewotICAgIHZhX2xpc3QgdmFyYXJnOwotICAgIHZhX3N0YXJ0KHZhcmFyZywgZm9ybWF0
KTsKLSAgICBvdXRwdXQodHJhY2VJbkRlYnVnT25seSwgbWVzc2FnZVR5cGUsIERlYnVnVHJhY2VP
dXRwdXRUeXBlU2V0TWFya2VyLCBmb3JtYXQsIHZhcmFyZyk7Ci0gICAgdmFfZW5kKHZhcmFyZyk7
Ci19Ci0KLVNjb3BlZFBlcmZFdmVudEhlbHBlcjo6U2NvcGVkUGVyZkV2ZW50SGVscGVyKGNvbnN0
IGNoYXIqIGZvcm1hdCwgLi4uKQorU2NvcGVkUGVyZkV2ZW50SGVscGVyOjpTY29wZWRQZXJmRXZl
bnRIZWxwZXIoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAjaWYgIWRlZmluZWQoQU5HTEVf
RU5BQkxFX0RFQlVHX1RSQUNFKQogICAgIGlmICghRGVidWdBbm5vdGF0aW9uc0FjdGl2ZSgpKQog
ICAgIHsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNlbmRpZiAvLyAhQU5HTEVfRU5BQkxFX0RF
QlVHX1RSQUNFCisjZW5kaWYgIC8vICFBTkdMRV9FTkFCTEVfREVCVUdfVFJBQ0UKKwogICAgIHZh
X2xpc3QgdmFyYXJnOwogICAgIHZhX3N0YXJ0KHZhcmFyZywgZm9ybWF0KTsKLSAgICBvdXRwdXQo
dHJ1ZSwgTUVTU0FHRV9FVkVOVCwgRGVidWdUcmFjZU91dHB1dFR5cGVCZWdpbkV2ZW50LCBmb3Jt
YXQsIHZhcmFyZyk7CisgICAgc3RkOjp2ZWN0b3I8Y2hhcj4gYnVmZmVyKDUxMik7CisgICAgc2l6
ZV90IGxlbiA9IEZvcm1hdFN0cmluZ0ludG9WZWN0b3IoZm9ybWF0LCB2YXJhcmcsIGJ1ZmZlcik7
CisgICAgQU5HTEVfTE9HKEVWRU5UKSA8PCBzdGQ6OnN0cmluZygmYnVmZmVyWzBdLCBsZW4pOwog
ICAgIHZhX2VuZCh2YXJhcmcpOwogfQogCkBAIC0xNzQsNCArMTE0LDk5IEBAIFNjb3BlZFBlcmZF
dmVudEhlbHBlcjo6flNjb3BlZFBlcmZFdmVudEhlbHBlcigpCiAgICAgfQogfQogCitMb2dNZXNz
YWdlOjpMb2dNZXNzYWdlKGNvbnN0IGNoYXIgKmZ1bmN0aW9uLCBpbnQgbGluZSwgTG9nU2V2ZXJp
dHkgc2V2ZXJpdHkpCisgICAgOiBtRnVuY3Rpb24oZnVuY3Rpb24pLCBtTGluZShsaW5lKSwgbVNl
dmVyaXR5KHNldmVyaXR5KQoreworICAgIC8vIEVWRU5UKCkgZG9lcyBub3QgcmVxdWlyZSBhZGRp
dGlvbmFsIGZ1bmN0aW9uKGxpbmUpIGluZm8uCisgICAgaWYgKG1TZXZlcml0eSAhPSBMT0dfRVZF
TlQpCisgICAgeworICAgICAgICBtU3RyZWFtIDw8IG1GdW5jdGlvbiA8PCAiKCIgPDwgbUxpbmUg
PDwgIik6ICI7CisgICAgfQorfQorCitMb2dNZXNzYWdlOjp+TG9nTWVzc2FnZSgpCit7CisgICAg
aWYgKERlYnVnQW5ub3RhdGlvbnNJbml0aWFsaXplZCgpICYmIChtU2V2ZXJpdHkgPT0gTE9HX0VS
UiB8fCBtU2V2ZXJpdHkgPT0gTE9HX1dBUk4pKQorICAgIHsKKyAgICAgICAgZ19kZWJ1Z0Fubm90
YXRvci0+bG9nTWVzc2FnZSgqdGhpcyk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAg
IFRyYWNlKGdldFNldmVyaXR5KCksIGdldE1lc3NhZ2UoKS5jX3N0cigpKTsKKyAgICB9Cit9CisK
K3ZvaWQgVHJhY2UoTG9nU2V2ZXJpdHkgc2V2ZXJpdHksIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCit7
CisgICAgaWYgKCFTaG91bGRDcmVhdGVMb2dNZXNzYWdlKHNldmVyaXR5KSkKKyAgICB7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdGQ6OnN0cmluZyBzdHIobWVzc2FnZSk7CisKKyAg
ICBpZiAoRGVidWdBbm5vdGF0aW9uc0FjdGl2ZSgpKQorICAgIHsKKyAgICAgICAgc3RkOjp3c3Ry
aW5nIGZvcm1hdHRlZFdpZGVNZXNzYWdlKHN0ci5iZWdpbigpLCBzdHIuZW5kKCkpOworCisgICAg
ICAgIHN3aXRjaCAoc2V2ZXJpdHkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgTE9HX0VW
RU5UOgorICAgICAgICAgICAgICAgIGdfZGVidWdBbm5vdGF0b3ItPmJlZ2luRXZlbnQoZm9ybWF0
dGVkV2lkZU1lc3NhZ2UuY19zdHIoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGdfZGVidWdBbm5vdGF0b3ItPnNldE1hcmtl
cihmb3JtYXR0ZWRXaWRlTWVzc2FnZS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChzZXZlcml0eSA9PSBMT0dfRVJSKQorICAgIHsK
KyAgICAgICAgc3RkOjpjZXJyIDw8IExvZ1NldmVyaXR5TmFtZShzZXZlcml0eSkgPDwgIjogIiA8
PCBzdHIgPDwgc3RkOjplbmRsOworICAgIH0KKworI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1f
V0lORE9XUykgJiYgXAorICAgIChkZWZpbmVkKEFOR0xFX0VOQUJMRV9ERUJVR19UUkFDRV9UT19E
RUJVR0dFUikgfHwgIWRlZmluZWQoTkRFQlVHKSkKKyNpZiAhZGVmaW5lZChBTkdMRV9FTkFCTEVf
REVCVUdfVFJBQ0VfVE9fREVCVUdHRVIpCisgICAgaWYgKHNldmVyaXR5ID09IExPR19FUlIpCisj
ZW5kaWYgIC8vICFkZWZpbmVkKEFOR0xFX0VOQUJMRV9ERUJVR19UUkFDRV9UT19ERUJVR0dFUikK
KyAgICB7CisgICAgICAgIE91dHB1dERlYnVnU3RyaW5nQShzdHIuY19zdHIoKSk7CisgICAgfQor
I2VuZGlmCisKKyNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9ERUJVR19UUkFDRSkKKyNpZiBkZWZp
bmVkKE5ERUJVRykKKyAgICBpZiAoc2V2ZXJpdHkgPT0gTE9HX0VWRU5UIHx8IHNldmVyaXR5ID09
IExPR19XQVJOKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZiAgLy8gZGVm
aW5lZChOREVCVUcpCisgICAgc3RhdGljIHN0ZDo6b2ZzdHJlYW0gZmlsZShUUkFDRV9PVVRQVVRf
RklMRSwgc3RkOjpvZnN0cmVhbTo6YXBwKTsKKyAgICBpZiAoZmlsZSkKKyAgICB7CisgICAgICAg
IGZpbGUgPDwgTG9nU2V2ZXJpdHlOYW1lKHNldmVyaXR5KSA8PCAiOiAiIDw8IHN0ciA8PCBzdGQ6
OmVuZGw7CisgICAgICAgIGZpbGUuZmx1c2goKTsKKyAgICB9CisjZW5kaWYgIC8vIGRlZmluZWQo
QU5HTEVfRU5BQkxFX0RFQlVHX1RSQUNFKQogfQorCitMb2dTZXZlcml0eSBMb2dNZXNzYWdlOjpn
ZXRTZXZlcml0eSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TZXZlcml0eTsKK30KKworc3RkOjpz
dHJpbmcgTG9nTWVzc2FnZTo6Z2V0TWVzc2FnZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdHJl
YW0uc3RyKCk7Cit9CisKKyNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1dJTkRPV1MpCitzdGQ6
Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgY29uc3QgRm10SFIgJmZtdCkK
K3sKKyAgICBvcyA8PCAiSFJFU1VMVDogIjsKKyAgICByZXR1cm4gRm10SGV4SW50KG9zLCBmbXQu
bUhSKTsKK30KKyNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9QTEFURk9STV9XSU5ET1dTKQorCit9
ICAvLyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21tb24vZGVidWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVi
dWcuaAppbmRleCAzMjljNzVjNTU0ZC4uMDEwOGZmNjU1ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVidWcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmgKQEAgLTExLDYgKzExLDEwIEBACiAKICNpbmNsdWRl
IDxhc3NlcnQuaD4KICNpbmNsdWRlIDxzdGRpby5oPgorCisjaW5jbHVkZSA8aW9zPgorI2luY2x1
ZGUgPGlvbWFuaXA+CisjaW5jbHVkZSA8c3N0cmVhbT4KICNpbmNsdWRlIDxzdHJpbmc+CiAKICNp
bmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgpAQCAtMjIsMTcgKzI2LDYgQEAKIG5hbWVzcGFj
ZSBnbAogewogCi1lbnVtIE1lc3NhZ2VUeXBlCi17Ci0gICAgTUVTU0FHRV9UUkFDRSwKLSAgICBN
RVNTQUdFX0ZJWE1FLAotICAgIE1FU1NBR0VfRVJSLAotICAgIE1FU1NBR0VfRVZFTlQsCi19Owot
Ci0vLyBPdXRwdXRzIHRleHQgdG8gdGhlIGRlYnVnZ2luZyBsb2csIG9yIHRoZSBkZWJ1Z2dpbmcg
d2luZG93Ci12b2lkIHRyYWNlKGJvb2wgdHJhY2VJbkRlYnVnT25seSwgTWVzc2FnZVR5cGUgbWVz
c2FnZVR5cGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKLQogLy8gUGFpcnMgYSBEM0QgYmVn
aW4gZXZlbnQgd2l0aCBhbiBlbmQgZXZlbnQuCiBjbGFzcyBTY29wZWRQZXJmRXZlbnRIZWxwZXIg
OiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKQEAgLTQxLDIxICszNCwxNTMgQEAgY2xhc3MgU2NvcGVk
UGVyZkV2ZW50SGVscGVyIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgflNjb3BlZFBlcmZFdmVu
dEhlbHBlcigpOwogfTsKIAordXNpbmcgTG9nU2V2ZXJpdHkgPSBpbnQ7CisvLyBOb3RlOiB0aGUg
bG9nIHNldmVyaXRpZXMgYXJlIHVzZWQgdG8gaW5kZXggaW50byB0aGUgYXJyYXkgb2YgbmFtZXMs
CisvLyBzZWUgZ19sb2dTZXZlcml0eU5hbWVzLgorY29uc3RleHByIExvZ1NldmVyaXR5IExPR19F
VkVOVCAgICAgICAgICA9IDA7Citjb25zdGV4cHIgTG9nU2V2ZXJpdHkgTE9HX1dBUk4gICAgICAg
ICAgID0gMTsKK2NvbnN0ZXhwciBMb2dTZXZlcml0eSBMT0dfRVJSICAgICAgICAgICAgPSAyOwor
Y29uc3RleHByIExvZ1NldmVyaXR5IExPR19OVU1fU0VWRVJJVElFUyA9IDM7CisKK3ZvaWQgVHJh
Y2UoTG9nU2V2ZXJpdHkgc2V2ZXJpdHksIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworCisvLyBUaGlz
IGNsYXNzIG1vcmUgb3IgbGVzcyByZXByZXNlbnRzIGEgcGFydGljdWxhciBsb2cgbWVzc2FnZS4g
IFlvdQorLy8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIExvZ01lc3NhZ2UgYW5kIHRoZW4gc3RyZWFt
IHN0dWZmIHRvIGl0LgorLy8gV2hlbiB5b3UgZmluaXNoIHN0cmVhbWluZyB0byBpdCwgfkxvZ01l
c3NhZ2UgaXMgY2FsbGVkIGFuZCB0aGUKKy8vIGZ1bGwgbWVzc2FnZSBnZXRzIHN0cmVhbWVkIHRv
IHRoZSBhcHByb3ByaWF0ZSBkZXN0aW5hdGlvbi4KKy8vCisvLyBZb3Ugc2hvdWxkbid0IGFjdHVh
bGx5IHVzZSBMb2dNZXNzYWdlJ3MgY29uc3RydWN0b3IgdG8gbG9nIHRoaW5ncywKKy8vIHRob3Vn
aC4gIFlvdSBzaG91bGQgdXNlIHRoZSBFUlIoKSBhbmQgV0FSTigpIG1hY3Jvcy4KK2NsYXNzIExv
Z01lc3NhZ2UgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAgIC8vIFVzZWQg
Zm9yIEFOR0xFX0xPRyhzZXZlcml0eSkuCisgICAgTG9nTWVzc2FnZShjb25zdCBjaGFyICpmdW5j
dGlvbiwgaW50IGxpbmUsIExvZ1NldmVyaXR5IHNldmVyaXR5KTsKKyAgICB+TG9nTWVzc2FnZSgp
OworICAgIHN0ZDo6b3N0cmVhbSAmc3RyZWFtKCkgeyByZXR1cm4gbVN0cmVhbTsgfQorCisgICAg
TG9nU2V2ZXJpdHkgZ2V0U2V2ZXJpdHkoKSBjb25zdDsKKyAgICBzdGQ6OnN0cmluZyBnZXRNZXNz
YWdlKCkgY29uc3Q7CisKKyAgcHJpdmF0ZToKKyAgICBjb25zdCBjaGFyICptRnVuY3Rpb247Cisg
ICAgY29uc3QgaW50IG1MaW5lOworICAgIGNvbnN0IExvZ1NldmVyaXR5IG1TZXZlcml0eTsKKwor
ICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSBtU3RyZWFtOworfTsKKwogLy8gV3JhcHMgdGhlIEQzRDkv
RDNEMTEgZGVidWcgYW5ub3RhdGlvbiBmdW5jdGlvbnMuCisvLyBBbHNvIGhhbmRsZXMgcmVkaXJl
Y3RpbmcgbG9nZ2luZyBkZXN0aW5hdGlvbi4KIGNsYXNzIERlYnVnQW5ub3RhdG9yIDogYW5nbGU6
Ok5vbkNvcHlhYmxlCiB7CiAgIHB1YmxpYzoKLSAgICBEZWJ1Z0Fubm90YXRvcigpIHsgfTsKKyAg
ICBEZWJ1Z0Fubm90YXRvcigpe307CiAgICAgdmlydHVhbCB+RGVidWdBbm5vdGF0b3IoKSB7IH07
CiAgICAgdmlydHVhbCB2b2lkIGJlZ2luRXZlbnQoY29uc3Qgd2NoYXJfdCAqZXZlbnROYW1lKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGVuZEV2ZW50KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRNYXJrZXIoY29uc3Qgd2NoYXJfdCAqbWFya2VyTmFtZSkgPSAwOwogICAgIHZpcnR1YWwgYm9v
bCBnZXRTdGF0dXMoKSA9IDA7CisgICAgLy8gTG9nIE1lc3NhZ2UgSGFuZGxlciB0aGF0IGdldHMg
cGFzc2VkIGV2ZXJ5IGxvZyBtZXNzYWdlLAorICAgIC8vIHdoZW4gZGVidWcgYW5ub3RhdGlvbnMg
YXJlIGluaXRpYWxpemVkLAorICAgIC8vIHJlcGxhY2luZyBkZWZhdWx0IGhhbmRsaW5nIGJ5IExv
Z01lc3NhZ2UuCisgICAgdmlydHVhbCB2b2lkIGxvZ01lc3NhZ2UoY29uc3QgTG9nTWVzc2FnZSAm
bXNnKSBjb25zdCA9IDA7CiB9OwogCiB2b2lkIEluaXRpYWxpemVEZWJ1Z0Fubm90YXRpb25zKERl
YnVnQW5ub3RhdG9yICpkZWJ1Z0Fubm90YXRvcik7CiB2b2lkIFVuaW5pdGlhbGl6ZURlYnVnQW5u
b3RhdGlvbnMoKTsKIGJvb2wgRGVidWdBbm5vdGF0aW9uc0FjdGl2ZSgpOworYm9vbCBEZWJ1Z0Fu
bm90YXRpb25zSW5pdGlhbGl6ZWQoKTsKKworbmFtZXNwYWNlIHByaXYKK3sKKy8vIFRoaXMgY2xh
c3MgaXMgdXNlZCB0byBleHBsaWNpdGx5IGlnbm9yZSB2YWx1ZXMgaW4gdGhlIGNvbmRpdGlvbmFs
IGxvZ2dpbmcgbWFjcm9zLiBUaGlzIGF2b2lkcworLy8gY29tcGlsZXIgd2FybmluZ3MgbGlrZSAi
dmFsdWUgY29tcHV0ZWQgaXMgbm90IHVzZWQiIGFuZCAic3RhdGVtZW50IGhhcyBubyBlZmZlY3Qi
LgorY2xhc3MgTG9nTWVzc2FnZVZvaWRpZnkKK3sKKyAgcHVibGljOgorICAgIExvZ01lc3NhZ2VW
b2lkaWZ5KCkge30KKyAgICAvLyBUaGlzIGhhcyB0byBiZSBhbiBvcGVyYXRvciB3aXRoIGEgcHJl
Y2VkZW5jZSBsb3dlciB0aGFuIDw8IGJ1dCBoaWdoZXIgdGhhbiA/OgorICAgIHZvaWQgb3BlcmF0
b3ImKHN0ZDo6b3N0cmVhbSAmKSB7fQorfTsKKworLy8gVXNlZCBieSBBTkdMRV9MT0dfSVNfT04g
dG8gbGF6eS1ldmFsdWF0ZSBzdHJlYW0gYXJndW1lbnRzLgorYm9vbCBTaG91bGRDcmVhdGVQbGF0
Zm9ybUxvZ01lc3NhZ2UoTG9nU2V2ZXJpdHkgc2V2ZXJpdHkpOworCit0ZW1wbGF0ZSA8aW50IE4s
IHR5cGVuYW1lIFQ+CitzdGQ6Om9zdHJlYW0gJkZtdEhleChzdGQ6Om9zdHJlYW0gJm9zLCBUIHZh
bHVlKQoreworICAgIG9zIDw8ICIweCI7CisKKyAgICBzdGQ6Omlvc19iYXNlOjpmbXRmbGFncyBv
bGRGbGFncyA9IG9zLmZsYWdzKCk7CisgICAgc3RkOjpzdHJlYW1zaXplIG9sZFdpZHRoICAgICAg
ICAgPSBvcy53aWR0aCgpOworICAgIHN0ZDo6b3N0cmVhbTo6Y2hhcl90eXBlIG9sZEZpbGwgID0g
b3MuZmlsbCgpOworCisgICAgb3MgPDwgc3RkOjpoZXggPDwgc3RkOjp1cHBlcmNhc2UgPDwgc3Rk
OjpzZXR3KE4pIDw8IHN0ZDo6c2V0ZmlsbCgnMCcpIDw8IHZhbHVlOworCisgICAgb3MuZmxhZ3Mo
b2xkRmxhZ3MpOworICAgIG9zLndpZHRoKG9sZFdpZHRoKTsKKyAgICBvcy5maWxsKG9sZEZpbGwp
OworCisgICAgcmV0dXJuIG9zOworfQorfSAgLy8gbmFtZXNwYWNlIHByaXYKKworI2lmIGRlZmlu
ZWQoQU5HTEVfUExBVEZPUk1fV0lORE9XUykKK2NsYXNzIEZtdEhSCit7CisgIHB1YmxpYzoKKyAg
ICBleHBsaWNpdCBGbXRIUihIUkVTVUxUIGhyZXN1bHQpIDogbUhSKGhyZXN1bHQpIHt9CisgIHBy
aXZhdGU6CisgICAgSFJFU1VMVCBtSFI7CisgICAgZnJpZW5kIHN0ZDo6b3N0cmVhbSAmb3BlcmF0
b3I8PChzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBGbXRIUiAmZm10KTsKK307CisjZW5kaWYgIC8v
IGRlZmluZWQoQU5HTEVfUExBVEZPUk1fV0lORE9XUykKKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CitzdGQ6Om9zdHJlYW0gJkZtdEhleFNob3J0KHN0ZDo6b3N0cmVhbSAmb3MsIFQgdmFsdWUpCit7
CisgICAgcmV0dXJuIHByaXY6OkZtdEhleDw0PihvcywgdmFsdWUpOworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KK3N0ZDo6b3N0cmVhbSAmRm10SGV4SW50KHN0ZDo6b3N0cmVhbSAmb3MsIFQg
dmFsdWUpCit7CisgICAgcmV0dXJuIHByaXY6OkZtdEhleDw4PihvcywgdmFsdWUpOworfQorCisv
LyBBIGZldyBkZWZpbml0aW9ucyBvZiBtYWNyb3MgdGhhdCBkb24ndCBnZW5lcmF0ZSBtdWNoIGNv
ZGUuIFRoZXNlIGFyZSB1c2VkCisvLyBieSBBTkdMRV9MT0coKS4gU2luY2UgdGhlc2UgYXJlIHVz
ZWQgYWxsIG92ZXIgb3VyIGNvZGUsIGl0J3MKKy8vIGJldHRlciB0byBoYXZlIGNvbXBhY3QgY29k
ZSBmb3IgdGhlc2Ugb3BlcmF0aW9ucy4KKyNkZWZpbmUgQ09NUEFDVF9BTkdMRV9MT0dfRVhfRVZF
TlQoQ2xhc3NOYW1lLCAuLi4pIFwKKyAgICA6OmdsOjpDbGFzc05hbWUoX19GVU5DVElPTl9fLCBf
X0xJTkVfXywgOjpnbDo6TE9HX0VWRU5ULCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBDT01QQUNU
X0FOR0xFX0xPR19FWF9XQVJOKENsYXNzTmFtZSwgLi4uKSBcCisgICAgOjpnbDo6Q2xhc3NOYW1l
KF9fRlVOQ1RJT05fXywgX19MSU5FX18sIDo6Z2w6OkxPR19XQVJOLCAjI19fVkFfQVJHU19fKQor
I2RlZmluZSBDT01QQUNUX0FOR0xFX0xPR19FWF9FUlIoQ2xhc3NOYW1lLCAuLi4pIFwKKyAgICA6
OmdsOjpDbGFzc05hbWUoX19GVU5DVElPTl9fLCBfX0xJTkVfXywgOjpnbDo6TE9HX0VSUiwgIyNf
X1ZBX0FSR1NfXykKKworI2RlZmluZSBDT01QQUNUX0FOR0xFX0xPR19FVkVOVCBDT01QQUNUX0FO
R0xFX0xPR19FWF9FVkVOVChMb2dNZXNzYWdlKQorI2RlZmluZSBDT01QQUNUX0FOR0xFX0xPR19X
QVJOIENPTVBBQ1RfQU5HTEVfTE9HX0VYX1dBUk4oTG9nTWVzc2FnZSkKKyNkZWZpbmUgQ09NUEFD
VF9BTkdMRV9MT0dfRVJSIENPTVBBQ1RfQU5HTEVfTE9HX0VYX0VSUihMb2dNZXNzYWdlKQorCisj
ZGVmaW5lIEFOR0xFX0xPR19JU19PTihzZXZlcml0eSkgKDo6Z2w6OnByaXY6OlNob3VsZENyZWF0
ZVBsYXRmb3JtTG9nTWVzc2FnZSg6OmdsOjpMT0dfIyNzZXZlcml0eSkpCisKKy8vIEhlbHBlciBt
YWNybyB3aGljaCBhdm9pZHMgZXZhbHVhdGluZyB0aGUgYXJndW1lbnRzIHRvIGEgc3RyZWFtIGlm
IHRoZSBjb25kaXRpb24gZG9lc24ndCBob2xkLgorLy8gQ29uZGl0aW9uIGlzIGV2YWx1YXRlZCBv
bmNlIGFuZCBvbmx5IG9uY2UuCisjZGVmaW5lIEFOR0xFX0xBWllfU1RSRUFNKHN0cmVhbSwgY29u
ZGl0aW9uKSBcCisgICAgIShjb25kaXRpb24pID8gc3RhdGljX2Nhc3Q8dm9pZD4oMCkgOiA6Omds
Ojpwcml2OjpMb2dNZXNzYWdlVm9pZGlmeSgpICYgKHN0cmVhbSkKKworLy8gV2UgdXNlIHRoZSBw
cmVwcm9jZXNzb3IncyBtZXJnaW5nIG9wZXJhdG9yLCAiIyMiLCBzbyB0aGF0LCBlLmcuLAorLy8g
QU5HTEVfTE9HKEVWRU5UKSBiZWNvbWVzIHRoZSB0b2tlbiBDT01QQUNUX0FOR0xFX0xPR19FVkVO
VC4gIFRoZXJlJ3Mgc29tZSBmdW5ueQorLy8gc3VidGxlIGRpZmZlcmVuY2UgYmV0d2VlbiBvc3Ry
ZWFtIG1lbWJlciBzdHJlYW1pbmcgZnVuY3Rpb25zIChlLmcuLAorLy8gb3N0cmVhbTo6b3BlcmF0
b3I8PChpbnQpIGFuZCBvc3RyZWFtIG5vbi1tZW1iZXIgc3RyZWFtaW5nIGZ1bmN0aW9ucworLy8g
KGUuZy4sIDo6b3BlcmF0b3I8PChvc3RyZWFtJiwgc3RyaW5nJik6IGl0IHR1cm5zIG91dCB0aGF0
IGl0J3MKKy8vIGltcG9zc2libGUgdG8gc3RyZWFtIHNvbWV0aGluZyBsaWtlIGEgc3RyaW5nIGRp
cmVjdGx5IHRvIGFuIHVubmFtZWQKKy8vIG9zdHJlYW0uIFdlIGVtcGxveSBhIG5lYXQgaGFjayBi
eSBjYWxsaW5nIHRoZSBzdHJlYW0oKSBtZW1iZXIKKy8vIGZ1bmN0aW9uIG9mIExvZ01lc3NhZ2Ug
d2hpY2ggc2VlbXMgdG8gYXZvaWQgdGhlIHByb2JsZW0uCisjZGVmaW5lIEFOR0xFX0xPR19TVFJF
QU0oc2V2ZXJpdHkpIENPTVBBQ1RfQU5HTEVfTE9HXyMjc2V2ZXJpdHkuc3RyZWFtKCkKKworI2Rl
ZmluZSBBTkdMRV9MT0coc2V2ZXJpdHkpIEFOR0xFX0xBWllfU1RSRUFNKEFOR0xFX0xPR19TVFJF
QU0oc2V2ZXJpdHkpLCBBTkdMRV9MT0dfSVNfT04oc2V2ZXJpdHkpKQogCiB9ICAvLyBuYW1lc3Bh
Y2UgZ2wKIApAQCAtNjgsMjYgKzE5Myw4IEBAIGJvb2wgRGVidWdBbm5vdGF0aW9uc0FjdGl2ZSgp
OwogI2RlZmluZSBBTkdMRV9FTkFCTEVfQVNTRVJUUwogI2VuZGlmCiAKLS8vIEEgbWFjcm8gdG8g
b3V0cHV0IGEgdHJhY2Ugb2YgYSBmdW5jdGlvbiBjYWxsIGFuZCBpdHMgYXJndW1lbnRzIHRvIHRo
ZSBkZWJ1Z2dpbmcgbG9nCi0jaWYgZGVmaW5lZChBTkdMRV9UUkFDRV9FTkFCTEVEKQotI2RlZmlu
ZSBUUkFDRShtZXNzYWdlLCAuLi4pIGdsOjp0cmFjZSh0cnVlLCBnbDo6TUVTU0FHRV9UUkFDRSwg
InRyYWNlOiAlcyglZCk6ICIgbWVzc2FnZSAiXG4iLCBfX0ZVTkNUSU9OX18sIF9fTElORV9fLCAj
I19fVkFfQVJHU19fKQotI2Vsc2UKLSNkZWZpbmUgVFJBQ0UobWVzc2FnZSwgLi4uKSAodm9pZCgw
KSkKLSNlbmRpZgotCi0vLyBBIG1hY3JvIHRvIG91dHB1dCBhIGZ1bmN0aW9uIGNhbGwgYW5kIGl0
cyBhcmd1bWVudHMgdG8gdGhlIGRlYnVnZ2luZyBsb2csIHRvIGRlbm90ZSBhbiBpdGVtIGluIG5l
ZWQgb2YgZml4aW5nLgotI2lmIGRlZmluZWQoQU5HTEVfVFJBQ0VfRU5BQkxFRCkKLSNkZWZpbmUg
RklYTUUobWVzc2FnZSwgLi4uKSBnbDo6dHJhY2UoZmFsc2UsIGdsOjpNRVNTQUdFX0ZJWE1FLCAi
Zml4bWU6ICVzKCVkKTogIiBtZXNzYWdlICJcbiIsIF9fRlVOQ1RJT05fXywgX19MSU5FX18sICMj
X19WQV9BUkdTX18pCi0jZWxzZQotI2RlZmluZSBGSVhNRShtZXNzYWdlLCAuLi4pICh2b2lkKDAp
KQotI2VuZGlmCi0KLS8vIEEgbWFjcm8gdG8gb3V0cHV0IGEgZnVuY3Rpb24gY2FsbCBhbmQgaXRz
IGFyZ3VtZW50cyB0byB0aGUgZGVidWdnaW5nIGxvZywgaW4gY2FzZSBvZiBlcnJvci4KLSNpZiBk
ZWZpbmVkKEFOR0xFX1RSQUNFX0VOQUJMRUQpIHx8IGRlZmluZWQoQU5HTEVfRU5BQkxFX0FTU0VS
VFMpCi0jZGVmaW5lIEVSUihtZXNzYWdlLCAuLi4pIGdsOjp0cmFjZShmYWxzZSwgZ2w6Ok1FU1NB
R0VfRVJSLCAiZXJyOiAlcyglZCk6ICIgbWVzc2FnZSAiXG4iLCBfX0ZVTkNUSU9OX18sIF9fTElO
RV9fLCAjI19fVkFfQVJHU19fKQotI2Vsc2UKLSNkZWZpbmUgRVJSKG1lc3NhZ2UsIC4uLikgKHZv
aWQoMCkpCi0jZW5kaWYKKyNkZWZpbmUgV0FSTigpIEFOR0xFX0xPRyhXQVJOKQorI2RlZmluZSBF
UlIoKSBBTkdMRV9MT0coRVJSKQogCiAvLyBBIG1hY3JvIHRvIGxvZyBhIHBlcmZvcm1hbmNlIGV2
ZW50IGFyb3VuZCBhIHNjb3BlLgogI2lmIGRlZmluZWQoQU5HTEVfVFJBQ0VfRU5BQkxFRCkKQEAg
LTEwMCwxMCArMjA3LDYgQEAgYm9vbCBEZWJ1Z0Fubm90YXRpb25zQWN0aXZlKCk7CiAjZGVmaW5l
IEVWRU5UKG1lc3NhZ2UsIC4uLikgKHZvaWQoMCkpCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoQU5H
TEVfVFJBQ0VfRU5BQkxFRCkKLSN1bmRlZiBBTkdMRV9UUkFDRV9FTkFCTEVECi0jZW5kaWYKLQog
I2lmIGRlZmluZWQoQ09NUElMRVJfR0NDKSB8fCBkZWZpbmVkKF9fY2xhbmdfXykKICNkZWZpbmUg
QU5HTEVfQ1JBU0goKSBfX2J1aWx0aW5fdHJhcCgpCiAjZWxzZQpAQCAtMTE5LDM4ICsyMjIsNTMg
QEAgYm9vbCBEZWJ1Z0Fubm90YXRpb25zQWN0aXZlKCk7CiAKIC8vIEEgbWFjcm8gYXNzZXJ0aW5n
IGEgY29uZGl0aW9uIGFuZCBvdXRwdXR0aW5nIGZhaWx1cmVzIHRvIHRoZSBkZWJ1ZyBsb2cKICNp
ZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9BU1NFUlRTKQotI2RlZmluZSBBU1NFUlQoZXhwcmVzc2lv
bikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgKGV4cHJlc3Npb24gPyBzdGF0aWNfY2FzdDx2b2lkPigw
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgICAgICAgICA6IChFUlIoIlx0ISBBc3NlcnQgZmFpbGVkIGluICVzKCVk
KTogJXNcbiIsIF9fRlVOQ1RJT05fXywgX19MSU5FX18sICNleHByZXNzaW9uKSwgXAotICAgICAg
ICAgICAgICAgICAgIEFOR0xFX0FTU0VSVF9JTVBMKGV4cHJlc3Npb24pKSkKLSNkZWZpbmUgVU5V
U0VEX0FTU0VSVElPTl9WQVJJQUJMRSh2YXJpYWJsZSkKKyNkZWZpbmUgQVNTRVJUKGV4cHJlc3Np
b24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAoZXhwcmVzc2lvbiA/IHN0YXRpY19jYXN0PHZvaWQ+
KDApIDogKChFUlIoKSA8PCAiXHQhIEFzc2VydCBmYWlsZWQgaW4gIiA8PCBfX0ZVTkNUSU9OX18g
PDwgIigiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA8PCBfX0xJTkVfXyA8PCAiKTogIiA8PCAjZXhwcmVzc2lvbiksICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFOR0xFX0FTU0VSVF9JTVBM
KGV4cHJlc3Npb24pKSkKICNlbHNlCi0jZGVmaW5lIEFTU0VSVChleHByZXNzaW9uKSAodm9pZCgw
KSkKLSNkZWZpbmUgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRSh2YXJpYWJsZSkgKCh2b2lkKXZh
cmlhYmxlKQotI2VuZGlmCisvLyBUaGVzZSBhcmUganVzdCBkdW1teSB2YWx1ZXMuCisjZGVmaW5l
IENPTVBBQ1RfQU5HTEVfTE9HX0VYX0FTU0VSVChDbGFzc05hbWUsIC4uLikgXAorICAgIENPTVBB
Q1RfQU5HTEVfTE9HX0VYX0VWRU5UKENsYXNzTmFtZSwgIyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUg
Q09NUEFDVF9BTkdMRV9MT0dfQVNTRVJUIENPTVBBQ1RfQU5HTEVfTE9HX0VWRU5UCituYW1lc3Bh
Y2UgZ2wKK3sKK2NvbnN0ZXhwciBMb2dTZXZlcml0eSBMT0dfQVNTRVJUID0gTE9HX0VWRU5UOwor
fSAgLy8gbmFtZXNwYWNlIGdsCisKKyNkZWZpbmUgQVNTRVJUKGNvbmRpdGlvbikgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBBTkdMRV9M
QVpZX1NUUkVBTShBTkdMRV9MT0dfU1RSRUFNKEFTU0VSVCksIGZhbHNlID8gIShjb25kaXRpb24p
IDogZmFsc2UpIFwKKyAgICAgICAgPDwgIkNoZWNrIGZhaWxlZDogIiAjY29uZGl0aW9uICIuICIK
KyNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9FTkFCTEVfQVNTRVJUUykKIAogI2RlZmluZSBVTlVT
RURfVkFSSUFCTEUodmFyaWFibGUpICgodm9pZCl2YXJpYWJsZSkKIAogLy8gQSBtYWNybyB0byBp
bmRpY2F0ZSB1bmltcGxlbWVudGVkIGZ1bmN0aW9uYWxpdHkKLQotI2lmIGRlZmluZWQgKEFOR0xF
X1RFU1RfQ09ORklHKQorI2lmbmRlZiBOT0FTU0VSVF9VTklNUExFTUVOVEVECiAjZGVmaW5lIE5P
QVNTRVJUX1VOSU1QTEVNRU5URUQgMQogI2VuZGlmCiAKLS8vIFRoaXMgd2lsbCBhbGxvdyB1cyB0
byB0ZXN0IHdpdGggc29tZSBhdXRvbWF0ZWQgdGVzdCBzdWl0ZXMgKGVnIGRFUVApIHdpdGhvdXQg
Y3Jhc2hpbmcKLSNpZm5kZWYgTk9BU1NFUlRfVU5JTVBMRU1FTlRFRAotI2RlZmluZSBOT0FTU0VS
VF9VTklNUExFTUVOVEVEIDAKLSNlbmRpZgorI2lmIGRlZmluZWQoQU5HTEVfVFJBQ0VfRU5BQkxF
RCkgfHwgZGVmaW5lZChBTkdMRV9FTkFCTEVfQVNTRVJUUykKKyNkZWZpbmUgVU5JTVBMRU1FTlRF
RCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFUlIoKSA8PCAiXHQh
IFVuaW1wbGVtZW50ZWQ6ICIgPDwgX19GVU5DVElPTl9fIDw8ICIoIiA8PCBfX0xJTkVfXyA8PCAi
KSI7IFwKKyAgICAgICAgQVNTRVJUKE5PQVNTRVJUX1VOSU1QTEVNRU5URUQpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIEFOR0xFX0VNUFRZX1NUQVRFTUVOVAogCi0jZGVmaW5lIFVOSU1QTEVNRU5URUQo
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgRklYTUUoIlx0ISBVbmltcGxlbWVudGVkOiAlcyglZClcbiIsIF9f
RlVOQ1RJT05fXywgX19MSU5FX18pOyBcCi0gICAgICAgIEFTU0VSVChOT0FTU0VSVF9VTklNUExF
TUVOVEVEKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
Ky8vIEEgbWFjcm8gZm9yIGNvZGUgd2hpY2ggaXMgbm90IGV4cGVjdGVkIHRvIGJlIHJlYWNoZWQg
dW5kZXIgdmFsaWQgYXNzdW1wdGlvbnMKKyNkZWZpbmUgVU5SRUFDSEFCTEUoKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAoKEVSUigpIDw8ICJcdCEgVW5yZWFjaGFibGUgcmVhY2hlZDogIiA8PCBfX0ZVTkNUSU9O
X18gPDwgIigiIDw8IF9fTElORV9fIDw8ICIpIiksIFwKKyAgICAgQVNTRVJUKGZhbHNlKSkKKyNl
bHNlCisjZGVmaW5lIFVOSU1QTEVNRU5URUQoKSAgICAgICAgICAgICAgICAgXAorICAgIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgQVNTRVJUKE5PQVNTRVJU
X1VOSU1QTEVNRU5URUQpOyBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAogICAgIEFOR0xFX0VNUFRZX1NUQVRFTUVOVAogCiAvLyBBIG1hY3JvIGZvciBjb2RlIHdo
aWNoIGlzIG5vdCBleHBlY3RlZCB0byBiZSByZWFjaGVkIHVuZGVyIHZhbGlkIGFzc3VtcHRpb25z
Ci0jZGVmaW5lIFVOUkVBQ0hBQkxFKCkgXAotICAgIChFUlIoIlx0ISBVbnJlYWNoYWJsZSByZWFj
aGVkOiAlcyglZClcbiIsIF9fRlVOQ1RJT05fXywgX19MSU5FX18pLCBBU1NFUlQoZmFsc2UpKQor
I2RlZmluZSBVTlJFQUNIQUJMRSgpIEFTU0VSVChmYWxzZSkKKyNlbmRpZiAgLy8gZGVmaW5lZChB
TkdMRV9UUkFDRV9FTkFCTEVEKSB8fCBkZWZpbmVkKEFOR0xFX0VOQUJMRV9BU1NFUlRTKQogCiAj
ZW5kaWYgICAvLyBDT01NT05fREVCVUdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21tb24vZXZlbnRfdHJhY2VyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21tb24vZXZlbnRfdHJhY2VyLmNwcAppbmRleCBjOWViNWUzMDczNy4uNmRjODQ1
OGFjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZXZl
bnRfdHJhY2VyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2V2
ZW50X3RyYWNlci5jcHAKQEAgLTExLDEwICsxMSwxMSBAQCBuYW1lc3BhY2UgYW5nbGUKIAogY29u
c3QgdW5zaWduZWQgY2hhciAqR2V0VHJhY2VDYXRlZ29yeUVuYWJsZWRGbGFnKGNvbnN0IGNoYXIg
Km5hbWUpCiB7Ci0gICAgYW5nbGU6OlBsYXRmb3JtICpwbGF0Zm9ybSA9IEFOR0xFUGxhdGZvcm1D
dXJyZW50KCk7CisgICAgYXV0byAqcGxhdGZvcm0gPSBBTkdMRVBsYXRmb3JtQ3VycmVudCgpOwog
ICAgIEFTU0VSVChwbGF0Zm9ybSk7CiAKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjYXRlZ29y
eUVuYWJsZWRGbGFnID0gcGxhdGZvcm0tPmdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyhuYW1l
KTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjYXRlZ29yeUVuYWJsZWRGbGFnID0KKyAgICAg
ICAgcGxhdGZvcm0tPmdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyhwbGF0Zm9ybSwgbmFtZSk7
CiAgICAgaWYgKGNhdGVnb3J5RW5hYmxlZEZsYWcgIT0gbnVsbHB0cikKICAgICB7CiAgICAgICAg
IHJldHVybiBjYXRlZ29yeUVuYWJsZWRGbGFnOwpAQCAtMjQsMzMgKzI1LDMxIEBAIGNvbnN0IHVu
c2lnbmVkIGNoYXIgKkdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyhjb25zdCBjaGFyICpuYW1l
KQogICAgIHJldHVybiAmZGlzYWJsZWQ7CiB9CiAKLVBsYXRmb3JtOjpUcmFjZUV2ZW50SGFuZGxl
IEFkZFRyYWNlRXZlbnQoY2hhciBwaGFzZSwgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlH
cm91cEVuYWJsZWQsIGNvbnN0IGNoYXIqIG5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bUFyZ3MsIGNvbnN0
IGNoYXIqKiBhcmdOYW1lcywgY29uc3QgdW5zaWduZWQgY2hhciogYXJnVHlwZXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9u
ZyogYXJnVmFsdWVzLCB1bnNpZ25lZCBjaGFyIGZsYWdzKQorYW5nbGU6OlRyYWNlRXZlbnRIYW5k
bGUgQWRkVHJhY2VFdmVudChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjYXRlZ29yeUdyb3VwRW5hYmxlZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbnVtQXJncywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmFyZ05hbWVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBj
aGFyICphcmdUeXBlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdW5zaWduZWQgbG9uZyBsb25nICphcmdWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3MpCiB7Ci0gICAgYW5nbGU6OlBsYXRm
b3JtICpwbGF0Zm9ybSA9IEFOR0xFUGxhdGZvcm1DdXJyZW50KCk7CisgICAgYXV0byAqcGxhdGZv
cm0gPSBBTkdMRVBsYXRmb3JtQ3VycmVudCgpOwogICAgIEFTU0VSVChwbGF0Zm9ybSk7CiAKLSAg
ICBkb3VibGUgdGltZXN0YW1wID0gcGxhdGZvcm0tPm1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpOworICAgIGRvdWJsZSB0aW1lc3RhbXAgPSBwbGF0Zm9ybS0+bW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKHBsYXRmb3JtKTsKIAogICAgIGlmICh0aW1lc3RhbXAgIT0gMCkKICAgICB7Ci0g
ICAgICAgIGFuZ2xlOjpQbGF0Zm9ybTo6VHJhY2VFdmVudEhhbmRsZSBoYW5kbGUgPQotICAgICAg
ICAgICAgcGxhdGZvcm0tPmFkZFRyYWNlRXZlbnQocGhhc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjYXRlZ29yeUdyb3VwRW5hYmxlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bUFyZ3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdOYW1lcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFyZ1R5cGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJnVmFsdWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxh
Z3MpOworICAgICAgICBhbmdsZTo6VHJhY2VFdmVudEhhbmRsZSBoYW5kbGUgPQorICAgICAgICAg
ICAgcGxhdGZvcm0tPmFkZFRyYWNlRXZlbnQocGxhdGZvcm0sIHBoYXNlLCBjYXRlZ29yeUdyb3Vw
RW5hYmxlZCwgbmFtZSwgaWQsIHRpbWVzdGFtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bUFyZ3MsIGFyZ05hbWVzLCBhcmdUeXBlcywgYXJnVmFsdWVzLCBmbGFncyk7
CiAgICAgICAgIEFTU0VSVChoYW5kbGUgIT0gMCk7CiAgICAgICAgIHJldHVybiBoYW5kbGU7CiAg
ICAgfQogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFBsYXRmb3JtOjpUcmFjZUV2ZW50SGFuZGxl
PigwKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8YW5nbGU6OlRyYWNlRXZlbnRIYW5kbGU+KDAp
OwogfQogCiB9ICAvLyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vZXZlbnRfdHJhY2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tbW9uL2V2ZW50X3RyYWNlci5oCmluZGV4IGVkNzBmMjQ5ZDI5Li45YjMwYzc1
MGMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9ldmVu
dF90cmFjZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2V2ZW50
X3RyYWNlci5oCkBAIC0xMiwxMSArMTIsMTUgQEAgbmFtZXNwYWNlIGFuZ2xlCiB7CiAKIGNvbnN0
IHVuc2lnbmVkIGNoYXIgKkdldFRyYWNlQ2F0ZWdvcnlFbmFibGVkRmxhZyhjb25zdCBjaGFyKiBu
YW1lKTsKLVBsYXRmb3JtOjpUcmFjZUV2ZW50SGFuZGxlIEFkZFRyYWNlRXZlbnQoY2hhciBwaGFz
ZSwgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlHcm91cEVuYWJsZWQsIGNvbnN0IGNoYXIq
IG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBpZCwgaW50IG51bUFyZ3MsIGNvbnN0IGNoYXIqKiBhcmdOYW1lcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciog
YXJnVHlwZXMsIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyogYXJnVmFsdWVzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzKTsKLQor
YW5nbGU6OlRyYWNlRXZlbnRIYW5kbGUgQWRkVHJhY2VFdmVudChjaGFyIHBoYXNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjYXRl
Z29yeUdyb3VwRW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgbG9uZyBsb25nIGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgbnVtQXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciAqKmFyZ05hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICphcmdUeXBlcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nICphcmdWYWx1ZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZmxhZ3Mp
OwogfQogCiAjZW5kaWYgIC8vIENPTU1PTl9FVkVOVF9UUkFDRVJfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vbWF0aHV0aWwuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRodXRpbC5jcHAKaW5kZXggMzI4NzlkNDI5ZDcu
LjVkYjk5N2M2NjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
bW9uL21hdGh1dGlsLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9u
L21hdGh1dGlsLmNwcApAQCAtMTQsNiArMTQsOSBAQAogbmFtZXNwYWNlIGdsCiB7CiAKK25hbWVz
cGFjZQoreworCiBzdHJ1Y3QgUkdCOUU1RGF0YQogewogICAgIHVuc2lnbmVkIGludCBSIDogOTsK
QEAgLTIzLDIwICsyNiwyMCBAQCBzdHJ1Y3QgUkdCOUU1RGF0YQogfTsKIAogLy8gQiBpcyB0aGUg
ZXhwb25lbnQgYmlhcyAoMTUpCi1zdGF0aWMgY29uc3QgaW50IGdfc2hhcmVkZXhwX2JpYXMgPSAx
NTsKK2NvbnN0ZXhwciBpbnQgZ19zaGFyZWRleHBfYmlhcyA9IDE1OwogCiAvLyBOIGlzIHRoZSBu
dW1iZXIgb2YgbWFudGlzc2EgYml0cyBwZXIgY29tcG9uZW50ICg5KQotc3RhdGljIGNvbnN0IGlu
dCBnX3NoYXJlZGV4cF9tYW50aXNzYWJpdHMgPSA5OworY29uc3RleHByIGludCBnX3NoYXJlZGV4
cF9tYW50aXNzYWJpdHMgPSA5OwogCiAvLyBFbWF4IGlzIHRoZSBtYXhpbXVtIGFsbG93ZWQgYmlh
c2VkIGV4cG9uZW50IHZhbHVlICgzMSkKLXN0YXRpYyBjb25zdCBpbnQgZ19zaGFyZWRleHBfbWF4
ZXhwb25lbnQgPSAzMTsKLQotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2dsb2JhbC1jb25zdHJ1Y3RvcnMiCi1zdGF0aWMg
Y29uc3QgZmxvYXQgZ19zaGFyZWRleHBfbWF4ID0gKChwb3coMi4wZiwgZ19zaGFyZWRleHBfbWFu
dGlzc2FiaXRzKSAtIDEpIC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBvdygyLjBmLCBnX3NoYXJlZGV4cF9tYW50aXNzYWJpdHMpKSAqCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcG93KDIuMGYsIGdfc2hhcmVkZXhwX21heGV4cG9uZW50IC0g
Z19zaGFyZWRleHBfYmlhcyk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCitjb25zdGV4
cHIgaW50IGdfc2hhcmVkZXhwX21heGV4cG9uZW50ID0gMzE7CisKK2NvbnN0ZXhwciBmbG9hdCBn
X3NoYXJlZGV4cF9tYXggPQorICAgICgoc3RhdGljX2Nhc3Q8ZmxvYXQ+KDEgPDwgZ19zaGFyZWRl
eHBfbWFudGlzc2FiaXRzKSAtIDEpIC8KKyAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KDEgPDwgZ19z
aGFyZWRleHBfbWFudGlzc2FiaXRzKSkgKgorICAgIHN0YXRpY19jYXN0PGZsb2F0PigxIDw8IChn
X3NoYXJlZGV4cF9tYXhleHBvbmVudCAtIGdfc2hhcmVkZXhwX2JpYXMpKTsKKworfSAgLy8gYW5v
bnltb3VzIG5hbWVzcGFjZQogCiB1bnNpZ25lZCBpbnQgY29udmVydFJHQkZsb2F0c1RvOTk5RTUo
ZmxvYXQgcmVkLCBmbG9hdCBncmVlbiwgZmxvYXQgYmx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vbWF0aHV0aWwuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vbWF0aHV0aWwuaAppbmRleCA2MzBiNmMwODg3OC4uMGU0MGUz
MzAzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vbWF0
aHV0aWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL21hdGh1dGls
LmgKQEAgLTMzLDI4ICszMywxMCBAQCBuYW1lc3BhY2UgZ2wKIGNvbnN0IHVuc2lnbmVkIGludCBG
bG9hdDMyT25lID0gMHgzRjgwMDAwMDsKIGNvbnN0IHVuc2lnbmVkIHNob3J0IEZsb2F0MTZPbmUg
PSAweDNDMDA7CiAKLXN0cnVjdCBWZWN0b3I0Ci17Ci0gICAgVmVjdG9yNCgpIHt9Ci0gICAgVmVj
dG9yNChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCB3KSA6IHgoeCksIHkoeSksIHoo
eiksIHcodykge30KLQotICAgIGZsb2F0IHg7Ci0gICAgZmxvYXQgeTsKLSAgICBmbG9hdCB6Owot
ICAgIGZsb2F0IHc7Ci19OwotCi1zdHJ1Y3QgVmVjdG9yMgotewotICAgIFZlY3RvcjIoKSB7fQot
ICAgIFZlY3RvcjIoZmxvYXQgeCwgZmxvYXQgeSkgOiB4KHgpLCB5KHkpIHt9Ci0KLSAgICBmbG9h
dCB4OwotICAgIGZsb2F0IHk7Ci19OwotCi1pbmxpbmUgYm9vbCBpc1BvdzIoaW50IHgpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIGJvb2wgaXNQb3cyKFQgeCkKIHsKKyAgICBzdGF0aWNf
YXNzZXJ0KHN0ZDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLCAiaXNQb3cyIG11c3QgYmUgY2FsbGVk
IG9uIGFuIGludGVnZXIgdHlwZS4iKTsKICAgICByZXR1cm4gKHggJiAoeCAtIDEpKSA9PSAwICYm
ICh4ICE9IDApOwogfQogCkBAIC02MzIsNiArNjE0LDIyIEBAIHN0cnVjdCBJbmRleFJhbmdlCiAg
ICAgc2l6ZV90IHZlcnRleEluZGV4Q291bnQ7CiB9OwogCisvLyBDb21iaW5lIGEgZmxvYXRpbmct
cG9pbnQgdmFsdWUgcmVwcmVzZW50aW5nIGEgbWFudGlzc2EgKHgpIGFuZCBhbiBpbnRlZ2VyIGV4
cG9uZW50IChleHApIGludG8gYQorLy8gZmxvYXRpbmctcG9pbnQgdmFsdWUuIEFzIGluIEdMU0wg
bGRleHAoKSBidWlsdC1pbi4KK2lubGluZSBmbG9hdCBMZGV4cChmbG9hdCB4LCBpbnQgZXhwKQor
eworICAgIGlmIChleHAgPiAxMjgpCisgICAgeworICAgICAgICByZXR1cm4gc3RkOjpudW1lcmlj
X2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7CisgICAgfQorICAgIGlmIChleHAgPCAtMTI2KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIDAuMGY7CisgICAgfQorICAgIGRvdWJsZSByZXN1bHQgPSBz
dGF0aWNfY2FzdDxkb3VibGU+KHgpICogc3RkOjpwb3coMi4wLCBzdGF0aWNfY2FzdDxkb3VibGU+
KGV4cCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4ocmVzdWx0KTsKK30KKwogLy8g
Rmlyc3QsIGJvdGggbm9ybWFsaXplZCBmbG9hdGluZy1wb2ludCB2YWx1ZXMgYXJlIGNvbnZlcnRl
ZCBpbnRvIDE2LWJpdCBpbnRlZ2VyIHZhbHVlcy4KIC8vIFRoZW4sIHRoZSByZXN1bHRzIGFyZSBw
YWNrZWQgaW50byB0aGUgcmV0dXJuZWQgMzItYml0IHVuc2lnbmVkIGludGVnZXIuCiAvLyBUaGUg
Zmlyc3QgZmxvYXQgdmFsdWUgd2lsbCBiZSB3cml0dGVuIHRvIHRoZSBsZWFzdCBzaWduaWZpY2Fu
dCBiaXRzIG9mIHRoZSBvdXRwdXQ7CkBAIC02ODcsNiArNjg1LDg2IEBAIGlubGluZSB2b2lkIHVu
cGFja1Vub3JtMngxNih1aW50MzJfdCB1LCBmbG9hdCAqZjEsIGZsb2F0ICpmMikKICAgICAqZjIg
PSBzdGF0aWNfY2FzdDxmbG9hdD4obW9zdFNpZ25pZmljYW50Qml0cykgLyA2NTUzNS4wZjsKIH0K
IAorLy8gSGVscGVyIGZ1bmN0aW9ucyBpbnRlbmRlZCB0byBiZSB1c2VkIG9ubHkgaGVyZS4KK25h
bWVzcGFjZSBwcml2Cit7CisKK2lubGluZSB1aW50OF90IFRvUGFja2VkVW5vcm04KGZsb2F0IGYp
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHJvdW5kZihjbGFtcChmLCAwLjBm
LCAxLjBmKSAqIDI1NS4wZikpOworfQorCitpbmxpbmUgaW50OF90IFRvUGFja2VkU25vcm04KGZs
b2F0IGYpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDhfdD4ocm91bmRmKGNsYW1wKGYs
IC0xLjBmLCAxLjBmKSAqIDEyNy4wZikpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcHJpdgorCisv
LyBQYWNrcyA0IG5vcm1hbGl6ZWQgdW5zaWduZWQgZmxvYXRpbmctcG9pbnQgdmFsdWVzIHRvIGEg
c2luZ2xlIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyLiBXb3JrcworLy8gc2ltaWxhcmx5IHRvIHBh
Y2tVbm9ybTJ4MTYuIFRoZSBmbG9hdHMgYXJlIGNsYW1wZWQgdG8gdGhlIHJhbmdlIDAuMCB0byAx
LjAsIGFuZCB3cml0dGVuIHRvIHRoZQorLy8gdW5zaWduZWQgaW50ZWdlciBzdGFydGluZyBmcm9t
IHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXRzLgoraW5saW5lIHVpbnQzMl90IFBhY2tVbm9ybTR4
OChmbG9hdCBmMSwgZmxvYXQgZjIsIGZsb2F0IGYzLCBmbG9hdCBmNCkKK3sKKyAgICB1aW50OF90
IGJpdHNbNF07CisgICAgYml0c1swXSAgICAgICAgID0gcHJpdjo6VG9QYWNrZWRVbm9ybTgoZjEp
OworICAgIGJpdHNbMV0gICAgICAgICA9IHByaXY6OlRvUGFja2VkVW5vcm04KGYyKTsKKyAgICBi
aXRzWzJdICAgICAgICAgPSBwcml2OjpUb1BhY2tlZFVub3JtOChmMyk7CisgICAgYml0c1szXSAg
ICAgICAgID0gcHJpdjo6VG9QYWNrZWRVbm9ybTgoZjQpOworICAgIHVpbnQzMl90IHJlc3VsdCA9
IDB1OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgKytpKQorICAgIHsKKyAgICAgICAgaW50
IHNoaWZ0ID0gaSAqIDg7CisgICAgICAgIHJlc3VsdCB8PSAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGJpdHNbaV0pIDw8IHNoaWZ0KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8g
VW5wYWNrcyA0IG5vcm1hbGl6ZWQgdW5zaWduZWQgZmxvYXRpbmctcG9pbnQgdmFsdWVzIGZyb20g
YSBzaW5nbGUgMzItYml0IHVuc2lnbmVkIGludGVnZXIgaW50byBmLgorLy8gV29ya3Mgc2ltaWxh
cmx5IHRvIHVucGFja1Vub3JtMngxNi4gVGhlIGZsb2F0cyBhcmUgdW5wYWNrZWQgc3RhcnRpbmcg
ZnJvbSB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQKKy8vIGJpdHMuCitpbmxpbmUgdm9pZCBVbnBhY2tV
bm9ybTR4OCh1aW50MzJfdCB1LCBmbG9hdCAqZikKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IDQ7ICsraSkKKyAgICB7CisgICAgICAgIGludCBzaGlmdCAgICA9IGkgKiA4OworICAgICAgICB1
aW50OF90IGJpdHMgPSBzdGF0aWNfY2FzdDx1aW50OF90PigodSA+PiBzaGlmdCkgJiAweEZGKTsK
KyAgICAgICAgZltpXSAgICAgICAgID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJpdHMpIC8gMjU1LjBm
OworICAgIH0KK30KKworLy8gUGFja3MgNCBub3JtYWxpemVkIHNpZ25lZCBmbG9hdGluZy1wb2lu
dCB2YWx1ZXMgdG8gYSBzaW5nbGUgMzItYml0IHVuc2lnbmVkIGludGVnZXIuIFRoZSBmbG9hdHMK
Ky8vIGFyZSBjbGFtcGVkIHRvIHRoZSByYW5nZSAtMS4wIHRvIDEuMCwgYW5kIHdyaXR0ZW4gdG8g
dGhlIHVuc2lnbmVkIGludGVnZXIgc3RhcnRpbmcgZnJvbSB0aGUgbGVhc3QKKy8vIHNpZ25pZmlj
YW50IGJpdHMuCitpbmxpbmUgdWludDMyX3QgUGFja1Nub3JtNHg4KGZsb2F0IGYxLCBmbG9hdCBm
MiwgZmxvYXQgZjMsIGZsb2F0IGY0KQoreworICAgIGludDhfdCBiaXRzWzRdOworICAgIGJpdHNb
MF0gICAgICAgICA9IHByaXY6OlRvUGFja2VkU25vcm04KGYxKTsKKyAgICBiaXRzWzFdICAgICAg
ICAgPSBwcml2OjpUb1BhY2tlZFNub3JtOChmMik7CisgICAgYml0c1syXSAgICAgICAgID0gcHJp
djo6VG9QYWNrZWRTbm9ybTgoZjMpOworICAgIGJpdHNbM10gICAgICAgICA9IHByaXY6OlRvUGFj
a2VkU25vcm04KGY0KTsKKyAgICB1aW50MzJfdCByZXN1bHQgPSAwdTsKKyAgICBmb3IgKGludCBp
ID0gMDsgaSA8IDQ7ICsraSkKKyAgICB7CisgICAgICAgIGludCBzaGlmdCA9IGkgKiA4OworICAg
ICAgICByZXN1bHQgfD0gKChzdGF0aWNfY2FzdDx1aW50MzJfdD4oYml0c1tpXSkgJiAweEZGKSA8
PCBzaGlmdCk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIFVucGFja3MgNCBu
b3JtYWxpemVkIHNpZ25lZCBmbG9hdGluZy1wb2ludCB2YWx1ZXMgZnJvbSBhIHNpbmdsZSAzMi1i
aXQgdW5zaWduZWQgaW50ZWdlciBpbnRvIGYuCisvLyBXb3JrcyBzaW1pbGFybHkgdG8gdW5wYWNr
U25vcm0yeDE2LiBUaGUgZmxvYXRzIGFyZSB1bnBhY2tlZCBzdGFydGluZyBmcm9tIHRoZSBsZWFz
dCBzaWduaWZpY2FudAorLy8gYml0cywgYW5kIGNsYW1wZWQgdG8gdGhlIHJhbmdlIC0xLjAgdG8g
MS4wLgoraW5saW5lIHZvaWQgVW5wYWNrU25vcm00eDgodWludDMyX3QgdSwgZmxvYXQgKmYpCit7
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyArK2kpCisgICAgeworICAgICAgICBpbnQgc2hp
ZnQgICA9IGkgKiA4OworICAgICAgICBpbnQ4X3QgYml0cyA9IHN0YXRpY19jYXN0PGludDhfdD4o
KHUgPj4gc2hpZnQpICYgMHhGRik7CisgICAgICAgIGZbaV0gICAgICAgID0gY2xhbXAoc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGJpdHMpIC8gMTI3LjBmLCAtMS4wZiwgMS4wZik7CisgICAgfQorfQorCiAv
LyBSZXR1cm5zIGFuIHVuc2lnbmVkIGludGVnZXIgb2J0YWluZWQgYnkgY29udmVydGluZyB0aGUg
dHdvIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB0byB0aGUgMTYtYml0CiAvLyBmbG9hdGluZy1wb2lu
dCByZXByZXNlbnRhdGlvbiBmb3VuZCBpbiB0aGUgT3BlbkdMIEVTIFNwZWNpZmljYXRpb24sIGFu
ZCB0aGVuIHBhY2tpbmcgdGhlc2UKIC8vIHR3byAxNi1iaXQgaW50ZWdlcnMgaW50byBhIDMyLWJp
dCB1bnNpZ25lZCBpbnRlZ2VyLgpAQCAtNzEzLDYgKzc5MSw5MSBAQCBpbmxpbmUgdm9pZCB1bnBh
Y2tIYWxmMngxNih1aW50MzJfdCB1LCBmbG9hdCAqZjEsIGZsb2F0ICpmMikKICAgICAqZjIgPSBm
bG9hdDE2VG9GbG9hdDMyKG1vc3RTaWduaWZpY2FudEJpdHMpOwogfQogCisvLyBSZXZlcnNlIHRo
ZSBvcmRlciBvZiB0aGUgYml0cy4KK2lubGluZSB1aW50MzJfdCBCaXRmaWVsZFJldmVyc2UodWlu
dDMyX3QgdmFsdWUpCit7CisgICAgLy8gVE9ETyhvZXR1YWhvQG52aWRpYS5jb20pOiBPcHRpbWl6
ZSB0aGlzIGlmIG5lZWRlZC4gVGhlcmUgZG9uJ3Qgc2VlbSB0byBiZSBjb21waWxlciBpbnRyaW5z
aWNzCisgICAgLy8gZm9yIHRoaXMsIGFuZCByaWdodCBub3cgaXQncyBub3QgdXNlZCBpbiBwZXJm
b3JtYW5jZS1jcml0aWNhbCBwYXRocy4KKyAgICB1aW50MzJfdCByZXN1bHQgPSAwdTsKKyAgICBm
b3IgKHNpemVfdCBqID0gMHU7IGogPCAzMnU7ICsraikKKyAgICB7CisgICAgICAgIHJlc3VsdCB8
PSAoKCh2YWx1ZSA+PiBqKSAmIDF1KSA8PCAoMzF1IC0gaikpOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0OworfQorCisvLyBDb3VudCB0aGUgMSBiaXRzLgoraW5saW5lIGludCBCaXRDb3VudCh1
bnNpZ25lZCBpbnQgYml0cykKK3sKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KF9fcG9wY250KGJpdHMpKTsKKyNlbGlmIGRlZmluZWQoX19HTlVDX18p
CisgICAgcmV0dXJuIF9fYnVpbHRpbl9wb3Bjb3VudChiaXRzKTsKKyNlbHNlCisjZXJyb3IgUGxl
YXNlIGltcGxlbWVudCBiaXQgY291bnQgZm9yIHlvdXIgcGxhdGZvcm0hCisjZW5kaWYKK30KKwor
Ly8gUmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IHNldC4gSW5k
ZXhpbmcgaXMgc3VjaCB0aGF0IGJpdCAwIGlzIHRoZSBsZWFzdAorLy8gc2lnbmlmaWNhbnQgYml0
LgoraW5saW5lIHVuc2lnbmVkIGxvbmcgU2NhbkZvcndhcmQodW5zaWduZWQgbG9uZyBiaXRzKQor
eworICAgIEFTU0VSVChiaXRzICE9IDB1KTsKKyNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1dJ
TkRPV1MpCisgICAgdW5zaWduZWQgbG9uZyBmaXJzdEJpdEluZGV4ID0gMHVsOworICAgIHVuc2ln
bmVkIGNoYXIgcmV0ICAgICAgICAgICA9IF9CaXRTY2FuRm9yd2FyZCgmZmlyc3RCaXRJbmRleCwg
Yml0cyk7CisgICAgQVNTRVJUKHJldCAhPSAwdSk7CisgICAgcmV0dXJuIGZpcnN0Qml0SW5kZXg7
CisjZWxpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1BPU0lYKQorICAgIHJldHVybiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBsb25nPihfX2J1aWx0aW5fY3R6bChiaXRzKSk7CisjZWxzZQorI2Vycm9y
IFBsZWFzZSBpbXBsZW1lbnQgYml0LXNjYW4tZm9yd2FyZCBmb3IgeW91ciBwbGF0Zm9ybSEKKyNl
bmRpZgorfQorCisvLyBSZXR1cm4gdGhlIGluZGV4IG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IGJp
dCBzZXQuIEluZGV4aW5nIGlzIHN1Y2ggdGhhdCBiaXQgMCBpcyB0aGUgbGVhc3QKKy8vIHNpZ25p
ZmljYW50IGJpdC4KK2lubGluZSB1bnNpZ25lZCBsb25nIFNjYW5SZXZlcnNlKHVuc2lnbmVkIGxv
bmcgYml0cykKK3sKKyAgICBBU1NFUlQoYml0cyAhPSAwdSk7CisjaWYgZGVmaW5lZChBTkdMRV9Q
TEFURk9STV9XSU5ET1dTKQorICAgIHVuc2lnbmVkIGxvbmcgbGFzdEJpdEluZGV4ID0gMHVsOwor
ICAgIHVuc2lnbmVkIGNoYXIgcmV0ICAgICAgICAgID0gX0JpdFNjYW5SZXZlcnNlKCZsYXN0Qml0
SW5kZXgsIGJpdHMpOworICAgIEFTU0VSVChyZXQgIT0gMHUpOworICAgIHJldHVybiBsYXN0Qml0
SW5kZXg7CisjZWxpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1BPU0lYKQorICAgIHJldHVybiBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihzaXplb2YodW5zaWduZWQgbG9uZykgKiBDSEFSX0JJ
VCAtIDEgLSBfX2J1aWx0aW5fY2x6bChiaXRzKSk7CisjZWxzZQorI2Vycm9yIFBsZWFzZSBpbXBs
ZW1lbnQgYml0LXNjYW4tcmV2ZXJzZSBmb3IgeW91ciBwbGF0Zm9ybSEKKyNlbmRpZgorfQorCisv
LyBSZXR1cm5zIC0xIG9uIDAsIG90aGVyd2lzZSB0aGUgaW5kZXggb2YgdGhlIGxlYXN0IHNpZ25p
ZmljYW50IDEgYml0IGFzIGluIEdMU0wuCitpbmxpbmUgaW50IEZpbmRMU0IodWludDMyX3QgYml0
cykKK3sKKyAgICBpZiAoYml0cyA9PSAwdSkKKyAgICB7CisgICAgICAgIHJldHVybiAtMTsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oU2Nh
bkZvcndhcmQoYml0cykpOworICAgIH0KK30KKworLy8gUmV0dXJucyAtMSBvbiAwLCBvdGhlcndp
c2UgdGhlIGluZGV4IG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IDEgYml0IGFzIGluIEdMU0wuCitp
bmxpbmUgaW50IEZpbmRNU0IodWludDMyX3QgYml0cykKK3sKKyAgICBpZiAoYml0cyA9PSAwdSkK
KyAgICB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oU2NhblJldmVyc2UoYml0cykpOworICAgIH0KK30K
KwogLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBhcmd1bWVudCBpcyBOb3QgYSBOdW1iZXIuCiAvLyBJ
RUVFIDc1NCBzaW5nbGUgcHJlY2lzaW9uIE5hTiByZXByZXNlbnRhdGlvbjogRXhwb25lbnQoOCBi
aXRzKSAtIDI1NSwgTWFudGlzc2EoMjMgYml0cykgLSBub24temVyby4KIGlubGluZSBib29sIGlz
TmFOKGZsb2F0IGYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
bW9uL21hdGh1dGlsX3VuaXR0ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21tb24vbWF0aHV0aWxfdW5pdHRlc3QuY3BwCmluZGV4IGJmNDQzYjcyYjVmLi5lZDg2OGE5MTQ5
MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9tYXRodXRp
bF91bml0dGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9t
YXRodXRpbF91bml0dGVzdC5jcHAKQEAgLTE0Miw2ICsxNDIsNTYgQEAgVEVTVChNYXRoVXRpbFRl
c3QsIHBhY2tBbmRVbnBhY2tIYWxmMngxNikKICAgICB9CiB9CiAKKy8vIFRlc3QgdGhlIGNvcnJl
Y3RuZXNzIG9mIHBhY2tVbm9ybTR4OCBhbmQgdW5wYWNrVW5vcm00eDggZnVuY3Rpb25zLgorLy8g
Rm9yIGZsb2F0cyBmMSB0byBmNCwgdW5wYWNrVW5vcm00eDgocGFja1Vub3JtNHg4KGYxLCBmMiwg
ZjMsIGY0KSkgc2hvdWxkIGJlIHNhbWUgYXMgZjEgdG8gZjQuCitURVNUKE1hdGhVdGlsVGVzdCwg
cGFja0FuZFVucGFja1Vub3JtNHg4KQoreworICAgIGNvbnN0IGZsb2F0IGlucHV0WzVdWzRdID0g
e3swLjBmLCAwLjBmLCAwLjBmLCAwLjBmfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7MS4wZiwgMS4wZiwgMS4wZiwgMS4wZn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgey0xLjBmLCAxLjBmLCAtMS4wZiwgMS4wZn0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgey0xLjBmLCAtMS4wZiwgLTEuMGYsIC0xLjBmfSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7NjQuMGYgLyAyNTUuMGYsIDEyOC4wZiAvIDI1NS4wZiwgMzIuMGYgLyAyNTUu
MGYsIDE2LjBmIC8gMjU1LjBmfX07CisKKyAgICBjb25zdCBmbG9hdCBmbG9hdEZhdWx0VG9sZXJh
bmNlID0gMC4wMDVmOworICAgIGZsb2F0IG91dHB1dFZhbHNbNF07CisKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IDU7IGkrKykKKyAgICB7CisgICAgICAgIFVucGFja1Vub3JtNHg4KFBhY2tV
bm9ybTR4OChpbnB1dFtpXVswXSwgaW5wdXRbaV1bMV0sIGlucHV0W2ldWzJdLCBpbnB1dFtpXVsz
XSksCisgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFZhbHMpOworICAgICAgICBmb3IgKHNp
emVfdCBqID0gMDsgaiA8IDQ7IGorKykKKyAgICAgICAgeworICAgICAgICAgICAgZmxvYXQgZXhw
ZWN0ZWQgPSBpbnB1dFtpXVtqXSA8IDAuMGYgPyAwLjBmIDogaW5wdXRbaV1bal07CisgICAgICAg
ICAgICBFWFBFQ1RfTkVBUihleHBlY3RlZCwgb3V0cHV0VmFsc1tqXSwgZmxvYXRGYXVsdFRvbGVy
YW5jZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIFRlc3QgdGhlIGNvcnJlY3RuZXNzIG9m
IHBhY2tTbm9ybTR4OCBhbmQgdW5wYWNrU25vcm00eDggZnVuY3Rpb25zLgorLy8gRm9yIGZsb2F0
cyBmMSB0byBmNCwgdW5wYWNrU25vcm00eDgocGFja1Nub3JtNHg4KGYxLCBmMiwgZjMsIGY0KSkg
c2hvdWxkIGJlIHNhbWUgYXMgZjEgdG8gZjQuCitURVNUKE1hdGhVdGlsVGVzdCwgcGFja0FuZFVu
cGFja1Nub3JtNHg4KQoreworICAgIGNvbnN0IGZsb2F0IGlucHV0WzVdWzRdID0ge3swLjBmLCAw
LjBmLCAwLjBmLCAwLjBmfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MS4wZiwg
MS4wZiwgMS4wZiwgMS4wZn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey0xLjBm
LCAxLjBmLCAtMS4wZiwgMS4wZn0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey0x
LjBmLCAtMS4wZiwgLTEuMGYsIC0xLjBmfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7NjQuMGYgLyAxMjcuMGYsIC04LjBmIC8gMTI3LjBmLCAzMi4wZiAvIDEyNy4wZiwgMTYuMGYg
LyAxMjcuMGZ9fTsKKworICAgIGNvbnN0IGZsb2F0IGZsb2F0RmF1bHRUb2xlcmFuY2UgPSAwLjAx
ZjsKKyAgICBmbG9hdCBvdXRwdXRWYWxzWzRdOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCA1OyBpKyspCisgICAgeworICAgICAgICBVbnBhY2tTbm9ybTR4OChQYWNrU25vcm00eDgoaW5w
dXRbaV1bMF0sIGlucHV0W2ldWzFdLCBpbnB1dFtpXVsyXSwgaW5wdXRbaV1bM10pLAorICAgICAg
ICAgICAgICAgICAgICAgICBvdXRwdXRWYWxzKTsKKyAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7
IGogPCA0OyBqKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGZsb2F0IGV4cGVjdGVkID0gaW5w
dXRbaV1bal07CisgICAgICAgICAgICBFWFBFQ1RfTkVBUihleHBlY3RlZCwgb3V0cHV0VmFsc1tq
XSwgZmxvYXRGYXVsdFRvbGVyYW5jZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIC8vIFRlc3Qg
dGhlIGNvcnJlY3RuZXNzIG9mIGdsOjppc05hTiBmdW5jdGlvbi4KIFRFU1QoTWF0aFV0aWxUZXN0
LCBpc05hTikKIHsKQEAgLTIwNyw0ICsyNTcsNjYgQEAgVEVTVChNYXRoVXRpbFRlc3QsIENoZWNr
ZWRSb3VuZFVwSW52YWxpZCkKICAgICBBU1NFUlRfRkFMU0UoY2hlY2tlZExpbWl0LklzVmFsaWQo
KSk7CiB9CiAKKy8vIFRlc3QgQml0ZmllbGRSZXZlcnNlIHdoaWNoIHJldmVyc2VzIHRoZSBvcmRl
ciBvZiB0aGUgYml0cyBpbiBhbiBpbnRlZ2VyLgorVEVTVChNYXRoVXRpbFRlc3QsIEJpdGZpZWxk
UmV2ZXJzZSkKK3sKKyAgICBFWFBFQ1RfRVEoMHUsIGdsOjpCaXRmaWVsZFJldmVyc2UoMHUpKTsK
KyAgICBFWFBFQ1RfRVEoMHg4MDAwMDAwMHUsIGdsOjpCaXRmaWVsZFJldmVyc2UoMXUpKTsKKyAg
ICBFWFBFQ1RfRVEoMHgxdSwgZ2w6OkJpdGZpZWxkUmV2ZXJzZSgweDgwMDAwMDAwdSkpOworICAg
IHVpbnQzMl90IGJpdHMgICAgID0gKDF1IDw8IDR1KSB8ICgxdSA8PCA3dSk7CisgICAgdWludDMy
X3QgcmV2ZXJzZWQgPSAoMXUgPDwgKDMxdSAtIDR1KSkgfCAoMXUgPDwgKDMxdSAtIDd1KSk7Cisg
ICAgRVhQRUNUX0VRKHJldmVyc2VkLCBnbDo6Qml0ZmllbGRSZXZlcnNlKGJpdHMpKTsKK30KKwor
Ly8gVGVzdCBCaXRDb3VudCwgd2hpY2ggY291bnRzIDEgYml0cyBpbiBhbiBpbnRlZ2VyLgorVEVT
VChNYXRoVXRpbFRlc3QsIEJpdENvdW50KQoreworICAgIEVYUEVDVF9FUSgwLCBnbDo6Qml0Q291
bnQoMHUpKTsKKyAgICBFWFBFQ1RfRVEoMzIsIGdsOjpCaXRDb3VudCgweEZGRkZGRkZGdSkpOwor
ICAgIEVYUEVDVF9FUSgxMCwgZ2w6OkJpdENvdW50KDB4MTcxMDMxMjF1KSk7Cit9CisKKy8vIFRl
c3QgU2NhbkZvcndhcmQsIHdoaWNoIHNjYW5zIGZvciB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgMSBi
aXQgZnJvbSBhIG5vbi16ZXJvIGludGVnZXIuCitURVNUKE1hdGhVdGlsVGVzdCwgU2NhbkZvcndh
cmQpCit7CisgICAgRVhQRUNUX0VRKDB1bCwgZ2w6OlNjYW5Gb3J3YXJkKDF1bCkpOworICAgIEVY
UEVDVF9FUSgxNnVsLCBnbDo6U2NhbkZvcndhcmQoMHg4MDAxMDAwMHVsKSk7CisgICAgRVhQRUNU
X0VRKDMxdWwsIGdsOjpTY2FuRm9yd2FyZCgweDgwMDAwMDAwdWwpKTsKK30KKworLy8gVGVzdCBT
Y2FuUmV2ZXJzZSwgd2hpY2ggc2NhbnMgZm9yIHRoZSBtb3N0IHNpZ25pZmljYW50IDEgYml0IGZy
b20gYSBub24temVybyBpbnRlZ2VyLgorVEVTVChNYXRoVXRpbFRlc3QsIFNjYW5SZXZlcnNlKQor
eworICAgIEVYUEVDVF9FUSgwdWwsIGdsOjpTY2FuUmV2ZXJzZSgxdWwpKTsKKyAgICBFWFBFQ1Rf
RVEoMTZ1bCwgZ2w6OlNjYW5SZXZlcnNlKDB4MDAwMTAwMzB1bCkpOworICAgIEVYUEVDVF9FUSgz
MXVsLCBnbDo6U2NhblJldmVyc2UoMHg4MDAwMDAwMHVsKSk7Cit9CisKKy8vIFRlc3QgRmluZExT
Qiwgd2hpY2ggZmluZHMgdGhlIGxlYXN0IHNpZ25pZmljYW50IDEgYml0LgorVEVTVChNYXRoVXRp
bFRlc3QsIEZpbmRMU0IpCit7CisgICAgRVhQRUNUX0VRKC0xLCBnbDo6RmluZExTQigwdSkpOwor
ICAgIEVYUEVDVF9FUSgwLCBnbDo6RmluZExTQigxdSkpOworICAgIEVYUEVDVF9FUSgxNiwgZ2w6
OkZpbmRMU0IoMHg4MDAxMDAwMHUpKTsKKyAgICBFWFBFQ1RfRVEoMzEsIGdsOjpGaW5kTFNCKDB4
ODAwMDAwMDB1KSk7Cit9CisKKy8vIFRlc3QgRmluZE1TQiwgd2hpY2ggZmluZHMgdGhlIG1vc3Qg
c2lnbmlmaWNhbnQgMSBiaXQuCitURVNUKE1hdGhVdGlsVGVzdCwgRmluZE1TQikKK3sKKyAgICBF
WFBFQ1RfRVEoLTEsIGdsOjpGaW5kTVNCKDB1KSk7CisgICAgRVhQRUNUX0VRKDAsIGdsOjpGaW5k
TVNCKDF1KSk7CisgICAgRVhQRUNUX0VRKDE2LCBnbDo6RmluZE1TQigweDAwMDEwMDMwdSkpOwor
ICAgIEVYUEVDVF9FUSgzMSwgZ2w6OkZpbmRNU0IoMHg4MDAwMDAwMHUpKTsKK30KKworLy8gVGVz
dCBMZGV4cCwgd2hpY2ggY29tYmluZXMgbWFudGlzc2EgYW5kIGV4cG9uZW50IGludG8gYSBmbG9h
dGluZy1wb2ludCBudW1iZXIuCitURVNUKE1hdGhVdGlsVGVzdCwgTGRleHApCit7CisgICAgRVhQ
RUNUX0VRKDIuNWYsIExkZXhwKDAuNjI1ZiwgMikpOworICAgIEVYUEVDVF9FUSgtNS4wZiwgTGRl
eHAoLTAuNjI1ZiwgMykpOworICAgIEVYUEVDVF9FUShzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6aW5maW5pdHkoKSwgTGRleHAoMC42MjVmLCAxMjkpKTsKKyAgICBFWFBFQ1RfRVEoMC4wZiwg
TGRleHAoMS4wZiwgLTEyOSkpOworfQorCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3BsYXRmb3JtLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3BsYXRmb3JtLmgKaW5kZXggMTVkYWM0
NTZjMDEuLjJmZTU1ZTg4MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tbW9uL3BsYXRmb3JtLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bW1vbi9wbGF0Zm9ybS5oCkBAIC02NSw2ICs2NSwxMCBAQAogIyAgICAgICBpbmNsdWRlIDxkM2Rj
b21waWxlci5oPgogIyAgIGVuZGlmCiAKKyNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0Q5KSB8
fCBkZWZpbmVkKEFOR0xFX0VOQUJMRV9EM0QxMSkKKyNpbmNsdWRlIDx3cmwuaD4KKyNlbmRpZgor
CiAjICAgaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfV0lORE9XU19TVE9SRSkKICMgICAgICAgaW5j
bHVkZSA8ZHhnaTFfMy5oPgogIyAgICAgICBpZiBkZWZpbmVkKF9ERUJVRykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtX3V0aWxzLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3N5c3RlbV91dGlscy5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jYWMyNGY3MDgxMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtX3V0aWxzLmgKQEAg
LTAsMCArMSwyNiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIHN5c3RlbV91dGlscy5oOiBkZWNsYXJh
dGlvbiBvZiBPUy1zcGVjaWZpYyB1dGlsaXR5IGZ1bmN0aW9ucworCisjaWZuZGVmIENPTU1PTl9T
WVNURU1fVVRJTFNfSF8KKyNkZWZpbmUgQ09NTU9OX1NZU1RFTV9VVElMU19IXworCisjaW5jbHVk
ZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJjb21tb24vT3B0aW9uYWwuaCIKKwor
bmFtZXNwYWNlIGFuZ2xlCit7CisKK2NvbnN0IGNoYXIgKkdldEV4ZWN1dGFibGVQYXRoKCk7Citj
b25zdCBjaGFyICpHZXRFeGVjdXRhYmxlRGlyZWN0b3J5KCk7Citjb25zdCBjaGFyICpHZXRTaGFy
ZWRMaWJyYXJ5RXh0ZW5zaW9uKCk7CitPcHRpb25hbDxzdGQ6OnN0cmluZz4gR2V0Q1dEKCk7Citi
b29sIFNldENXRChjb25zdCBjaGFyICpkaXJOYW1lKTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xl
CisKKyNlbmRpZiAgLy8gQ09NTU9OX1NZU1RFTV9VVElMU19IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zeXN0ZW1fdXRpbHNfbGludXguY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zeXN0ZW1fdXRpbHNfbGludXguY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44NTA0YzZhNGMyOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtX3V0
aWxzX2xpbnV4LmNwcApAQCAtMCwwICsxLDg0IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gc3lzdGVt
X3V0aWxzX2xpbnV4LmNwcDogSW1wbGVtZW50YXRpb24gb2YgT1Mtc3BlY2lmaWMgZnVuY3Rpb25z
IGZvciBMaW51eAorCisjaW5jbHVkZSAic3lzdGVtX3V0aWxzLmgiCisKKyNpbmNsdWRlIDxzeXMv
c3RhdC5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Cisj
aW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlIDxhcnJheT4KKworbmFtZXNwYWNlIGFuZ2xl
Cit7CisKK25hbWVzcGFjZQoreworCitzdGQ6OnN0cmluZyBHZXRFeGVjdXRhYmxlUGF0aEltcGwo
KQoreworICAgIC8vIFdlIGNhbm5vdCB1c2UgbHN0YXQgdG8gZ2V0IHRoZSBzaXplIG9mIC9wcm9j
L3NlbGYvZXhlIGFzIGl0IGFsd2F5cyByZXR1cm5zIDAKKyAgICAvLyBzbyB3ZSBqdXN0IHVzZSBh
IGJpZyBidWZmZXIgYW5kIGhvcGUgdGhlIHBhdGggZml0cyBpbiBpdC4KKyAgICBjaGFyIHBhdGhb
NDA5Nl07CisKKyAgICBzc2l6ZV90IHJlc3VsdCA9IHJlYWRsaW5rKCIvcHJvYy9zZWxmL2V4ZSIs
IHBhdGgsIHNpemVvZihwYXRoKSAtIDEpOworICAgIGlmIChyZXN1bHQgPCAwIHx8IHN0YXRpY19j
YXN0PHNpemVfdD4ocmVzdWx0KSA+PSBzaXplb2YocGF0aCkgLSAxKQorICAgIHsKKyAgICAgICAg
cmV0dXJuICIiOworICAgIH0KKworICAgIHBhdGhbcmVzdWx0XSA9ICdcMCc7CisgICAgcmV0dXJu
IHBhdGg7Cit9CisKK3N0ZDo6c3RyaW5nIEdldEV4ZWN1dGFibGVEaXJlY3RvcnlJbXBsKCkKK3sK
KyAgICBzdGQ6OnN0cmluZyBleGVjdXRhYmxlUGF0aCA9IEdldEV4ZWN1dGFibGVQYXRoKCk7Cisg
ICAgc2l6ZV90IGxhc3RQYXRoU2VwTG9jICAgICAgPSBleGVjdXRhYmxlUGF0aC5maW5kX2xhc3Rf
b2YoIi8iKTsKKyAgICByZXR1cm4gKGxhc3RQYXRoU2VwTG9jICE9IHN0ZDo6c3RyaW5nOjpucG9z
KSA/IGV4ZWN1dGFibGVQYXRoLnN1YnN0cigwLCBsYXN0UGF0aFNlcExvYykgOiAiIjsKK30KKwor
fSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitjb25zdCBjaGFyICpHZXRFeGVjdXRhYmxlUGF0
aCgpCit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogTWFrZSBnbG9iYWwgc3RhdGljIHN0cmluZyB0
aHJlYWQtc2FmZS4KKyAgICBjb25zdCBzdGF0aWMgc3RkOjpzdHJpbmcgJmV4ZVBhdGggPSBHZXRF
eGVjdXRhYmxlUGF0aEltcGwoKTsKKyAgICByZXR1cm4gZXhlUGF0aC5jX3N0cigpOworfQorCitj
b25zdCBjaGFyICpHZXRFeGVjdXRhYmxlRGlyZWN0b3J5KCkKK3sKKyAgICAvLyBUT0RPKGptYWRp
bGwpOiBNYWtlIGdsb2JhbCBzdGF0aWMgc3RyaW5nIHRocmVhZC1zYWZlLgorICAgIGNvbnN0IHN0
YXRpYyBzdGQ6OnN0cmluZyAmZXhlRGlyID0gR2V0RXhlY3V0YWJsZURpcmVjdG9yeUltcGwoKTsK
KyAgICByZXR1cm4gZXhlRGlyLmNfc3RyKCk7Cit9CisKK2NvbnN0IGNoYXIgKkdldFNoYXJlZExp
YnJhcnlFeHRlbnNpb24oKQoreworICAgIHJldHVybiAic28iOworfQorCitPcHRpb25hbDxzdGQ6
OnN0cmluZz4gR2V0Q1dEKCkKK3sKKyAgICBzdGQ6OmFycmF5PGNoYXIsIDQwOTY+IHBhdGhCdWY7
CisgICAgY2hhciAqcmVzdWx0ID0gZ2V0Y3dkKHBhdGhCdWYuZGF0YSgpLCBwYXRoQnVmLnNpemUo
KSk7CisgICAgaWYgKHJlc3VsdCA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIE9w
dGlvbmFsPHN0ZDo6c3RyaW5nPjo6SW52YWxpZCgpOworICAgIH0KKyAgICByZXR1cm4gc3RkOjpz
dHJpbmcocGF0aEJ1Zi5kYXRhKCkpOworfQorCitib29sIFNldENXRChjb25zdCBjaGFyICpkaXJO
YW1lKQoreworICAgIHJldHVybiAoY2hkaXIoZGlyTmFtZSkgPT0gMCk7Cit9CisKK30gIC8vIG5h
bWVzcGFjZSBhbmdsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bW1vbi9zeXN0ZW1fdXRpbHNfbWFjLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21tb24vc3lzdGVtX3V0aWxzX21hYy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmE3M2YxYWEyNTkxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbW1vbi9zeXN0ZW1fdXRpbHNfbWFjLmNwcApAQCAtMCwwICsxLDg5IEBA
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworLy8gc3lzdGVtX3V0aWxzX29zeC5jcHA6IEltcGxlbWVudGF0aW9u
IG9mIE9TLXNwZWNpZmljIGZ1bmN0aW9ucyBmb3IgT1NYCisKKyNpbmNsdWRlICJzeXN0ZW1fdXRp
bHMuaCIKKworI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaW5jbHVkZSA8Y3N0ZGxpYj4KKyNpbmNs
dWRlIDxtYWNoLW8vZHlsZC5oPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgPGFycmF5
PgorCituYW1lc3BhY2UgYW5nbGUKK3sKKworbmFtZXNwYWNlCit7CisKK3N0ZDo6c3RyaW5nIEdl
dEV4ZWN1dGFibGVQYXRoSW1wbCgpCit7CisgICAgc3RkOjpzdHJpbmcgcmVzdWx0OworCisgICAg
dWludDMyX3Qgc2l6ZSA9IDA7CisgICAgX05TR2V0RXhlY3V0YWJsZVBhdGgobnVsbHB0ciwgJnNp
emUpOworCisgICAgc3RkOjp2ZWN0b3I8Y2hhcj4gYnVmZmVyOworICAgIGJ1ZmZlci5yZXNpemUo
c2l6ZSArIDEpOworCisgICAgX05TR2V0RXhlY3V0YWJsZVBhdGgoYnVmZmVyLmRhdGEoKSwgJnNp
emUpOworICAgIGJ1ZmZlcltzaXplXSA9ICdcMCc7CisKKyAgICBpZiAoIXN0cnJjaHIoYnVmZmVy
LmRhdGEoKSwgJy8nKSkKKyAgICB7CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisgICAgcmV0
dXJuIGJ1ZmZlci5kYXRhKCk7Cit9CisKK3N0ZDo6c3RyaW5nIEdldEV4ZWN1dGFibGVEaXJlY3Rv
cnlJbXBsKCkKK3sKKyAgICBzdGQ6OnN0cmluZyBleGVjdXRhYmxlUGF0aCA9IEdldEV4ZWN1dGFi
bGVQYXRoKCk7CisgICAgc2l6ZV90IGxhc3RQYXRoU2VwTG9jICAgICAgPSBleGVjdXRhYmxlUGF0
aC5maW5kX2xhc3Rfb2YoIi8iKTsKKyAgICByZXR1cm4gKGxhc3RQYXRoU2VwTG9jICE9IHN0ZDo6
c3RyaW5nOjpucG9zKSA/IGV4ZWN1dGFibGVQYXRoLnN1YnN0cigwLCBsYXN0UGF0aFNlcExvYykg
OiAiIjsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitjb25zdCBjaGFyICpHZXRF
eGVjdXRhYmxlUGF0aCgpCit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogTWFrZSBnbG9iYWwgc3Rh
dGljIHN0cmluZyB0aHJlYWQtc2FmZS4KKyAgICBjb25zdCBzdGF0aWMgc3RkOjpzdHJpbmcgJmV4
ZVBhdGggPSBHZXRFeGVjdXRhYmxlUGF0aEltcGwoKTsKKyAgICByZXR1cm4gZXhlUGF0aC5jX3N0
cigpOworfQorCitjb25zdCBjaGFyICpHZXRFeGVjdXRhYmxlRGlyZWN0b3J5KCkKK3sKKyAgICAv
LyBUT0RPKGptYWRpbGwpOiBNYWtlIGdsb2JhbCBzdGF0aWMgc3RyaW5nIHRocmVhZC1zYWZlLgor
ICAgIGNvbnN0IHN0YXRpYyBzdGQ6OnN0cmluZyAmZXhlRGlyID0gR2V0RXhlY3V0YWJsZURpcmVj
dG9yeUltcGwoKTsKKyAgICByZXR1cm4gZXhlRGlyLmNfc3RyKCk7Cit9CisKK2NvbnN0IGNoYXIg
KkdldFNoYXJlZExpYnJhcnlFeHRlbnNpb24oKQoreworICAgIHJldHVybiAiZHlsaWIiOworfQor
CitPcHRpb25hbDxzdGQ6OnN0cmluZz4gR2V0Q1dEKCkKK3sKKyAgICBzdGQ6OmFycmF5PGNoYXIs
IDQwOTY+IHBhdGhCdWY7CisgICAgY2hhciAqcmVzdWx0ID0gZ2V0Y3dkKHBhdGhCdWYuZGF0YSgp
LCBwYXRoQnVmLnNpemUoKSk7CisgICAgaWYgKHJlc3VsdCA9PSBudWxscHRyKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIE9wdGlvbmFsPHN0ZDo6c3RyaW5nPjo6SW52YWxpZCgpOworICAgIH0KKyAg
ICByZXR1cm4gc3RkOjpzdHJpbmcocGF0aEJ1Zi5kYXRhKCkpOworfQorCitib29sIFNldENXRChj
b25zdCBjaGFyICpkaXJOYW1lKQoreworICAgIHJldHVybiAoY2hkaXIoZGlyTmFtZSkgPT0gMCk7
Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbW1vbi9zeXN0ZW1fdXRpbHNfd2luLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21tb24vc3lzdGVtX3V0aWxzX3dpbi5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjA4MjlhMWM5Zjg3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9zeXN0ZW1fdXRpbHNfd2luLmNwcApA
QCAtMCwwICsxLDc0IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gc3lzdGVtX3V0aWxzX3dpbi5jcHA6
IEltcGxlbWVudGF0aW9uIG9mIE9TLXNwZWNpZmljIGZ1bmN0aW9ucyBmb3IgV2luZG93cworCisj
aW5jbHVkZSAic3lzdGVtX3V0aWxzLmgiCisKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRl
IDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8dmVjdG9yPgorCituYW1l
c3BhY2UgYW5nbGUKK3sKKworbmFtZXNwYWNlCit7CisKK3N0ZDo6c3RyaW5nIEdldEV4ZWN1dGFi
bGVQYXRoSW1wbCgpCit7CisgICAgc3RkOjphcnJheTxjaGFyLCBNQVhfUEFUSD4gZXhlY3V0YWJs
ZUZpbGVCdWY7CisgICAgRFdPUkQgZXhlY3V0YWJsZVBhdGhMZW4gPSBHZXRNb2R1bGVGaWxlTmFt
ZUEoTlVMTCwgZXhlY3V0YWJsZUZpbGVCdWYuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PERXT1JEPihleGVjdXRhYmxl
RmlsZUJ1Zi5zaXplKCkpKTsKKyAgICByZXR1cm4gKGV4ZWN1dGFibGVQYXRoTGVuID4gMCA/IHN0
ZDo6c3RyaW5nKGV4ZWN1dGFibGVGaWxlQnVmLmRhdGEoKSkgOiAiIik7Cit9CisKK3N0ZDo6c3Ry
aW5nIEdldEV4ZWN1dGFibGVEaXJlY3RvcnlJbXBsKCkKK3sKKyAgICBzdGQ6OnN0cmluZyBleGVj
dXRhYmxlUGF0aCA9IEdldEV4ZWN1dGFibGVQYXRoKCk7CisgICAgc2l6ZV90IGxhc3RQYXRoU2Vw
TG9jICAgICAgPSBleGVjdXRhYmxlUGF0aC5maW5kX2xhc3Rfb2YoIlxcLyIpOworICAgIHJldHVy
biAobGFzdFBhdGhTZXBMb2MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpID8gZXhlY3V0YWJsZVBhdGgu
c3Vic3RyKDAsIGxhc3RQYXRoU2VwTG9jKSA6ICIiOworfQorCit9ICAvLyBhbm9ueW1vdXMgbmFt
ZXNwYWNlCisKK2NvbnN0IGNoYXIgKkdldEV4ZWN1dGFibGVQYXRoKCkKK3sKKyAgICAvLyBUT0RP
KGptYWRpbGwpOiBNYWtlIGdsb2JhbCBzdGF0aWMgc3RyaW5nIHRocmVhZC1zYWZlLgorICAgIGNv
bnN0IHN0YXRpYyBzdGQ6OnN0cmluZyAmZXhlUGF0aCA9IEdldEV4ZWN1dGFibGVQYXRoSW1wbCgp
OworICAgIHJldHVybiBleGVQYXRoLmNfc3RyKCk7Cit9CisKK2NvbnN0IGNoYXIgKkdldEV4ZWN1
dGFibGVEaXJlY3RvcnkoKQoreworICAgIC8vIFRPRE8oam1hZGlsbCk6IE1ha2UgZ2xvYmFsIHN0
YXRpYyBzdHJpbmcgdGhyZWFkLXNhZmUuCisgICAgY29uc3Qgc3RhdGljIHN0ZDo6c3RyaW5nICZl
eGVEaXIgPSBHZXRFeGVjdXRhYmxlRGlyZWN0b3J5SW1wbCgpOworICAgIHJldHVybiBleGVEaXIu
Y19zdHIoKTsKK30KKworY29uc3QgY2hhciAqR2V0U2hhcmVkTGlicmFyeUV4dGVuc2lvbigpCit7
CisgICAgcmV0dXJuICJkbGwiOworfQorCitPcHRpb25hbDxzdGQ6OnN0cmluZz4gR2V0Q1dEKCkK
K3sKKyAgICBzdGQ6OmFycmF5PGNoYXIsIE1BWF9QQVRIPiBwYXRoQnVmOworICAgIERXT1JEIHJl
c3VsdCA9IEdldEN1cnJlbnREaXJlY3RvcnlBKHN0YXRpY19jYXN0PERXT1JEPihwYXRoQnVmLnNp
emUoKSksIHBhdGhCdWYuZGF0YSgpKTsKKyAgICBpZiAocmVzdWx0ID09IDApCisgICAgeworICAg
ICAgICByZXR1cm4gT3B0aW9uYWw8c3RkOjpzdHJpbmc+OjpJbnZhbGlkKCk7CisgICAgfQorICAg
IHJldHVybiBzdGQ6OnN0cmluZyhwYXRoQnVmLmRhdGEoKSk7Cit9CisKK2Jvb2wgU2V0Q1dEKGNv
bnN0IGNoYXIgKmRpck5hbWUpCit7CisgICAgcmV0dXJuIChTZXRDdXJyZW50RGlyZWN0b3J5QShk
aXJOYW1lKSA9PSBUUlVFKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGllcy5jcHAKaW5kZXggYWYyMGY0
Yjc4MmIuLmIwM2FhZGE0OTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tbW9uL3V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbW1vbi91dGlsaXRpZXMuY3BwCkBAIC0xMjgsMjEgKzEyOCwzNiBAQCBHTGVudW0gVmFyaWFi
bGVDb21wb25lbnRUeXBlKEdMZW51bSB0eXBlKQogICAgICAgY2FzZSBHTF9TQU1QTEVSX0NVQkU6
CiAgICAgICBjYXNlIEdMX1NBTVBMRVJfMkRfQVJSQVk6CiAgICAgICBjYXNlIEdMX1NBTVBMRVJf
RVhURVJOQUxfT0VTOgorICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEX01VTFRJU0FNUExFOgogICAg
ICAgY2FzZSBHTF9JTlRfU0FNUExFUl8yRDoKICAgICAgIGNhc2UgR0xfSU5UX1NBTVBMRVJfM0Q6
CiAgICAgICBjYXNlIEdMX0lOVF9TQU1QTEVSX0NVQkU6CiAgICAgICBjYXNlIEdMX0lOVF9TQU1Q
TEVSXzJEX0FSUkFZOgorICAgICAgY2FzZSBHTF9JTlRfU0FNUExFUl8yRF9NVUxUSVNBTVBMRToK
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfMkQ6CiAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX0lOVF9TQU1QTEVSXzNEOgogICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfU0FNUExF
Ul9DVUJFOgogICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8yRF9BUlJBWToKKyAg
ICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfMkRfTVVMVElTQU1QTEU6CiAgICAgICBj
YXNlIEdMX1NBTVBMRVJfMkRfU0hBRE9XOgogICAgICAgY2FzZSBHTF9TQU1QTEVSX0NVQkVfU0hB
RE9XOgogICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEX0FSUkFZX1NIQURPVzoKICAgICAgIGNhc2Ug
R0xfSU5UX1ZFQzI6CiAgICAgICBjYXNlIEdMX0lOVF9WRUMzOgogICAgICAgY2FzZSBHTF9JTlRf
VkVDNDoKLSAgICAgICAgcmV0dXJuIEdMX0lOVDsKKyAgICAgIGNhc2UgR0xfSU1BR0VfMkQ6Cisg
ICAgICBjYXNlIEdMX0lOVF9JTUFHRV8yRDoKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX0lN
QUdFXzJEOgorICAgICAgY2FzZSBHTF9JTUFHRV8zRDoKKyAgICAgIGNhc2UgR0xfSU5UX0lNQUdF
XzNEOgorICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfSU1BR0VfM0Q6CisgICAgICBjYXNlIEdM
X0lNQUdFXzJEX0FSUkFZOgorICAgICAgY2FzZSBHTF9JTlRfSU1BR0VfMkRfQVJSQVk6CisgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9JTUFHRV8yRF9BUlJBWToKKyAgICAgIGNhc2UgR0xfSU1B
R0VfQ1VCRToKKyAgICAgIGNhc2UgR0xfSU5UX0lNQUdFX0NVQkU6CisgICAgICBjYXNlIEdMX1VO
U0lHTkVEX0lOVF9JTUFHRV9DVUJFOgorICAgICAgICAgIHJldHVybiBHTF9JTlQ7CiAgICAgICBj
YXNlIEdMX1VOU0lHTkVEX0lOVDoKICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX1ZFQzI6CiAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9WRUMzOgpAQCAtMjM2LDE4ICsyNTEsMzMgQEAgaW50
IFZhcmlhYmxlUm93Q291bnQoR0xlbnVtIHR5cGUpCiAgICAgICBjYXNlIEdMX1NBTVBMRVJfMkRf
QVJSQVk6CiAgICAgICBjYXNlIEdMX1NBTVBMRVJfRVhURVJOQUxfT0VTOgogICAgICAgY2FzZSBH
TF9TQU1QTEVSXzJEX1JFQ1RfQVJCOgorICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEX01VTFRJU0FN
UExFOgogICAgICAgY2FzZSBHTF9JTlRfU0FNUExFUl8yRDoKICAgICAgIGNhc2UgR0xfSU5UX1NB
TVBMRVJfM0Q6CiAgICAgICBjYXNlIEdMX0lOVF9TQU1QTEVSX0NVQkU6CiAgICAgICBjYXNlIEdM
X0lOVF9TQU1QTEVSXzJEX0FSUkFZOgorICAgICAgY2FzZSBHTF9JTlRfU0FNUExFUl8yRF9NVUxU
SVNBTVBMRToKICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfMkQ6CiAgICAgICBj
YXNlIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzNEOgogICAgICAgY2FzZSBHTF9VTlNJR05FRF9J
TlRfU0FNUExFUl9DVUJFOgogICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8yRF9B
UlJBWToKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfMkRfTVVMVElTQU1QTEU6
CiAgICAgICBjYXNlIEdMX1NBTVBMRVJfMkRfU0hBRE9XOgogICAgICAgY2FzZSBHTF9TQU1QTEVS
X0NVQkVfU0hBRE9XOgogICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEX0FSUkFZX1NIQURPVzoKLSAg
ICAgICAgcmV0dXJuIDE7CisgICAgICBjYXNlIEdMX0lNQUdFXzJEOgorICAgICAgY2FzZSBHTF9J
TlRfSU1BR0VfMkQ6CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9JTUFHRV8yRDoKKyAgICAg
IGNhc2UgR0xfSU1BR0VfMkRfQVJSQVk6CisgICAgICBjYXNlIEdMX0lOVF9JTUFHRV8yRF9BUlJB
WToKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX0lNQUdFXzJEX0FSUkFZOgorICAgICAgY2Fz
ZSBHTF9JTUFHRV8zRDoKKyAgICAgIGNhc2UgR0xfSU5UX0lNQUdFXzNEOgorICAgICAgY2FzZSBH
TF9VTlNJR05FRF9JTlRfSU1BR0VfM0Q6CisgICAgICBjYXNlIEdMX0lNQUdFX0NVQkU6CisgICAg
ICBjYXNlIEdMX0lOVF9JTUFHRV9DVUJFOgorICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfSU1B
R0VfQ1VCRToKKyAgICAgICAgICByZXR1cm4gMTsKICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjoK
ICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUM3gyOgogICAgICAgY2FzZSBHTF9GTE9BVF9NQVQ0eDI6
CkBAIC0yODIsMjAgKzMxMiwzNSBAQCBpbnQgVmFyaWFibGVDb2x1bW5Db3VudChHTGVudW0gdHlw
ZSkKICAgICAgIGNhc2UgR0xfU0FNUExFUl8zRDoKICAgICAgIGNhc2UgR0xfU0FNUExFUl9DVUJF
OgogICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEX0FSUkFZOgorICAgICAgY2FzZSBHTF9TQU1QTEVS
XzJEX01VTFRJU0FNUExFOgogICAgICAgY2FzZSBHTF9JTlRfU0FNUExFUl8yRDoKICAgICAgIGNh
c2UgR0xfSU5UX1NBTVBMRVJfM0Q6CiAgICAgICBjYXNlIEdMX0lOVF9TQU1QTEVSX0NVQkU6CiAg
ICAgICBjYXNlIEdMX0lOVF9TQU1QTEVSXzJEX0FSUkFZOgorICAgICAgY2FzZSBHTF9JTlRfU0FN
UExFUl8yRF9NVUxUSVNBTVBMRToKICAgICAgIGNhc2UgR0xfU0FNUExFUl9FWFRFUk5BTF9PRVM6
CiAgICAgICBjYXNlIEdMX1NBTVBMRVJfMkRfUkVDVF9BUkI6CiAgICAgICBjYXNlIEdMX1VOU0lH
TkVEX0lOVF9TQU1QTEVSXzJEOgogICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8z
RDoKICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfQ1VCRToKICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfSU5UX1NBTVBMRVJfMkRfQVJSQVk6CisgICAgICBjYXNlIEdMX1VOU0lHTkVE
X0lOVF9TQU1QTEVSXzJEX01VTFRJU0FNUExFOgogICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEX1NI
QURPVzoKICAgICAgIGNhc2UgR0xfU0FNUExFUl9DVUJFX1NIQURPVzoKICAgICAgIGNhc2UgR0xf
U0FNUExFUl8yRF9BUlJBWV9TSEFET1c6Ci0gICAgICAgIHJldHVybiAxOworICAgICAgY2FzZSBH
TF9JTUFHRV8yRDoKKyAgICAgIGNhc2UgR0xfSU5UX0lNQUdFXzJEOgorICAgICAgY2FzZSBHTF9V
TlNJR05FRF9JTlRfSU1BR0VfMkQ6CisgICAgICBjYXNlIEdMX0lNQUdFXzNEOgorICAgICAgY2Fz
ZSBHTF9JTlRfSU1BR0VfM0Q6CisgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9JTUFHRV8zRDoK
KyAgICAgIGNhc2UgR0xfSU1BR0VfMkRfQVJSQVk6CisgICAgICBjYXNlIEdMX0lOVF9JTUFHRV8y
RF9BUlJBWToKKyAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX0lNQUdFXzJEX0FSUkFZOgorICAg
ICAgY2FzZSBHTF9JTUFHRV9DVUJFOgorICAgICAgY2FzZSBHTF9JTlRfSU1BR0VfQ1VCRToKKyAg
ICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX0lNQUdFX0NVQkU6CisgICAgICAgICAgcmV0dXJuIDE7
CiAgICAgICBjYXNlIEdMX0JPT0xfVkVDMjoKICAgICAgIGNhc2UgR0xfRkxPQVRfVkVDMjoKICAg
ICAgIGNhc2UgR0xfSU5UX1ZFQzI6CkBAIC0zMzYsMTQgKzM4MSwxNyBAQCBib29sIElzU2FtcGxl
clR5cGUoR0xlbnVtIHR5cGUpCiAgICAgICBjYXNlIEdMX1NBTVBMRVJfQ1VCRToKICAgICAgIGNh
c2UgR0xfU0FNUExFUl8yRF9BUlJBWToKICAgICAgIGNhc2UgR0xfU0FNUExFUl9FWFRFUk5BTF9P
RVM6CisgICAgICBjYXNlIEdMX1NBTVBMRVJfMkRfTVVMVElTQU1QTEU6CiAgICAgICBjYXNlIEdM
X0lOVF9TQU1QTEVSXzJEOgogICAgICAgY2FzZSBHTF9JTlRfU0FNUExFUl8zRDoKICAgICAgIGNh
c2UgR0xfSU5UX1NBTVBMRVJfQ1VCRToKICAgICAgIGNhc2UgR0xfSU5UX1NBTVBMRVJfMkRfQVJS
QVk6CisgICAgICBjYXNlIEdMX0lOVF9TQU1QTEVSXzJEX01VTFRJU0FNUExFOgogICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8yRDoKICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5U
X1NBTVBMRVJfM0Q6CiAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkU6CiAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzJEX0FSUkFZOgorICAgICAgY2FzZSBH
TF9VTlNJR05FRF9JTlRfU0FNUExFUl8yRF9NVUxUSVNBTVBMRToKICAgICAgIGNhc2UgR0xfU0FN
UExFUl8yRF9TSEFET1c6CiAgICAgICBjYXNlIEdMX1NBTVBMRVJfQ1VCRV9TSEFET1c6CiAgICAg
ICBjYXNlIEdMX1NBTVBMRVJfMkRfQVJSQVlfU0hBRE9XOgpAQCAtMzUzLDYgKzQwMSwzNCBAQCBi
b29sIElzU2FtcGxlclR5cGUoR0xlbnVtIHR5cGUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiti
b29sIElzSW1hZ2VUeXBlKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7
CisgICAgICAgIGNhc2UgR0xfSU1BR0VfMkQ6CisgICAgICAgIGNhc2UgR0xfSU5UX0lNQUdFXzJE
OgorICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9JTUFHRV8yRDoKKyAgICAgICAgY2FzZSBH
TF9JTUFHRV8zRDoKKyAgICAgICAgY2FzZSBHTF9JTlRfSU1BR0VfM0Q6CisgICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfSU5UX0lNQUdFXzNEOgorICAgICAgICBjYXNlIEdMX0lNQUdFXzJEX0FSUkFZ
OgorICAgICAgICBjYXNlIEdMX0lOVF9JTUFHRV8yRF9BUlJBWToKKyAgICAgICAgY2FzZSBHTF9V
TlNJR05FRF9JTlRfSU1BR0VfMkRfQVJSQVk6CisgICAgICAgIGNhc2UgR0xfSU1BR0VfQ1VCRToK
KyAgICAgICAgY2FzZSBHTF9JTlRfSU1BR0VfQ1VCRToKKyAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9JTlRfSU1BR0VfQ1VCRToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSXNPcGFxdWVUeXBlKEdMZW51bSB0eXBlKQoreworICAg
IC8vIEVTU0wgMy4xMCBzZWN0aW9uIDQuMS43IGRlZmluZXMgb3BhcXVlIHR5cGVzIGFzOiBzYW1w
bGVycywgaW1hZ2VzIGFuZCBhdG9taWMgY291bnRlcnMuCisgICAgLy8gVE9ETyhvZXR1YWhvKTog
YWRkIGF0b21pYyB0eXBlcworICAgIHJldHVybiBJc0ltYWdlVHlwZSh0eXBlKSB8fCBJc1NhbXBs
ZXJUeXBlKHR5cGUpOworfQorCiBHTGVudW0gU2FtcGxlclR5cGVUb1RleHR1cmVUeXBlKEdMZW51
bSBzYW1wbGVyVHlwZSkKIHsKICAgICBzd2l0Y2ggKHNhbXBsZXJUeXBlKQpAQCAtMzgzLDYgKzQ1
OSwxMSBAQCBHTGVudW0gU2FtcGxlclR5cGVUb1RleHR1cmVUeXBlKEdMZW51bSBzYW1wbGVyVHlw
ZSkKICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfM0Q6CiAgICAgICAgIHJldHVy
biBHTF9URVhUVVJFXzNEOwogCisgICAgICBjYXNlIEdMX1NBTVBMRVJfMkRfTVVMVElTQU1QTEU6
CisgICAgICBjYXNlIEdMX0lOVF9TQU1QTEVSXzJEX01VTFRJU0FNUExFOgorICAgICAgY2FzZSBH
TF9VTlNJR05FRF9JTlRfU0FNUExFUl8yRF9NVUxUSVNBTVBMRToKKyAgICAgICAgICByZXR1cm4g
R0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRTsKKwogICAgICAgZGVmYXVsdDoKICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC01OTMsMTUgKzY3NCwxOCBAQCBpbnQg
VmFyaWFibGVTb3J0T3JkZXIoR0xlbnVtIHR5cGUpCiAgICAgICBjYXNlIEdMX1NBTVBMRVJfRVhU
RVJOQUxfT0VTOgogICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEX1JFQ1RfQVJCOgogICAgICAgY2Fz
ZSBHTF9TQU1QTEVSXzJEX0FSUkFZOgorICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEX01VTFRJU0FN
UExFOgogICAgICAgY2FzZSBHTF9TQU1QTEVSXzNEOgogICAgICAgY2FzZSBHTF9JTlRfU0FNUExF
Ul8yRDoKICAgICAgIGNhc2UgR0xfSU5UX1NBTVBMRVJfM0Q6CiAgICAgICBjYXNlIEdMX0lOVF9T
QU1QTEVSX0NVQkU6CiAgICAgICBjYXNlIEdMX0lOVF9TQU1QTEVSXzJEX0FSUkFZOgorICAgICAg
Y2FzZSBHTF9JTlRfU0FNUExFUl8yRF9NVUxUSVNBTVBMRToKICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfSU5UX1NBTVBMRVJfMkQ6CiAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzNE
OgogICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl9DVUJFOgogICAgICAgY2FzZSBH
TF9VTlNJR05FRF9JTlRfU0FNUExFUl8yRF9BUlJBWToKKyAgICAgIGNhc2UgR0xfVU5TSUdORURf
SU5UX1NBTVBMRVJfMkRfTVVMVElTQU1QTEU6CiAgICAgICBjYXNlIEdMX1NBTVBMRVJfMkRfU0hB
RE9XOgogICAgICAgY2FzZSBHTF9TQU1QTEVSXzJEX0FSUkFZX1NIQURPVzoKICAgICAgIGNhc2Ug
R0xfU0FNUExFUl9DVUJFX1NIQURPVzoKQEAgLTYxMyw3ICs2OTcsNyBAQCBpbnQgVmFyaWFibGVT
b3J0T3JkZXIoR0xlbnVtIHR5cGUpCiAgICAgfQogfQogCi1zdGQ6OnN0cmluZyBQYXJzZVVuaWZv
cm1OYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCBzaXplX3QgKm91dFN1YnNjcmlwdCkKK3N0
ZDo6c3RyaW5nIFBhcnNlUmVzb3VyY2VOYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLCBzaXpl
X3QgKm91dFN1YnNjcmlwdCkKIHsKICAgICAvLyBTdHJpcCBhbnkgdHJhaWxpbmcgYXJyYXkgb3Bl
cmF0b3IgYW5kIHJldHJpZXZlIHRoZSBzdWJzY3JpcHQKICAgICBzaXplX3Qgb3BlbiA9IG5hbWUu
ZmluZF9sYXN0X29mKCdbJyk7CkBAIC03NzgsNiArODYyLDI1IEBAIEdMdWludCBFR0xDbGllbnRC
dWZmZXJUb0dMT2JqZWN0SGFuZGxlKEVHTENsaWVudEJ1ZmZlciBidWZmZXIpCiB9CiB9ICAvLyBu
YW1lc3BhY2UgZWdsX2dsCiAKK25hbWVzcGFjZSBnbF9lZ2wKK3sKK0VHTGVudW0gR0xDb21wb25l
bnRUeXBlVG9FR0xDb2xvckNvbXBvbmVudFR5cGUoR0xlbnVtIGdsQ29tcG9uZW50VHlwZSkKK3sK
KyAgICBzd2l0Y2ggKGdsQ29tcG9uZW50VHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRkxP
QVQ6CisgICAgICAgICAgICByZXR1cm4gRUdMX0NPTE9SX0NPTVBPTkVOVF9UWVBFX0ZMT0FUX0VY
VDsKKworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX05PUk1BTElaRUQ6CisgICAgICAgICAgICBy
ZXR1cm4gRUdMX0NPTE9SX0NPTVBPTkVOVF9UWVBFX0ZJWEVEX0VYVDsKKworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBFR0xf
Tk9ORTsKKyAgICB9Cit9Cit9ICAvLyBuYW1lc3BhY2UgZ2xfZWdsCisKICNpZiAhZGVmaW5lZChB
TkdMRV9FTkFCTEVfV0lORE9XU19TVE9SRSkKIHN0ZDo6c3RyaW5nIGdldFRlbXBQYXRoKCkKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdXRpbGl0aWVz
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGllcy5oCmluZGV4
IDE2ZDY1NjBhN2NlLi42OGNjOWVjZTE2NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbW1vbi91dGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tbW9uL3V0aWxpdGllcy5oCkBAIC0zMCw2ICszMCw4IEBAIEdMZW51bSBWYXJpYWJs
ZUJvb2xWZWN0b3JUeXBlKEdMZW51bSB0eXBlKTsKIGludCBWYXJpYWJsZVJvd0NvdW50KEdMZW51
bSB0eXBlKTsKIGludCBWYXJpYWJsZUNvbHVtbkNvdW50KEdMZW51bSB0eXBlKTsKIGJvb2wgSXNT
YW1wbGVyVHlwZShHTGVudW0gdHlwZSk7Citib29sIElzSW1hZ2VUeXBlKEdMZW51bSB0eXBlKTsK
K2Jvb2wgSXNPcGFxdWVUeXBlKEdMZW51bSB0eXBlKTsKIEdMZW51bSBTYW1wbGVyVHlwZVRvVGV4
dHVyZVR5cGUoR0xlbnVtIHNhbXBsZXJUeXBlKTsKIGJvb2wgSXNNYXRyaXhUeXBlKEdMZW51bSB0
eXBlKTsKIEdMZW51bSBUcmFuc3Bvc2VNYXRyaXhUeXBlKEdMZW51bSB0eXBlKTsKQEAgLTQ2LDkg
KzQ4LDEwIEBAIGJvb2wgSXNDdWJlTWFwVGV4dHVyZVRhcmdldChHTGVudW0gdGFyZ2V0KTsKIHNp
emVfdCBDdWJlTWFwVGV4dHVyZVRhcmdldFRvTGF5ZXJJbmRleChHTGVudW0gdGFyZ2V0KTsKIEdM
ZW51bSBMYXllckluZGV4VG9DdWJlTWFwVGV4dHVyZVRhcmdldChzaXplX3QgaW5kZXgpOwogCi0v
LyBQYXJzZSB0aGUgYmFzZSB1bmlmb3JtIG5hbWUgYW5kIGFycmF5IGluZGV4LiAgUmV0dXJucyB0
aGUgYmFzZSBuYW1lIG9mIHRoZSB1bmlmb3JtLiBvdXRTdWJzY3JpcHQgaXMKLS8vIHNldCB0byBH
TF9JTlZBTElEX0lOREVYIGlmIHRoZSBwcm92aWRlZCBuYW1lIGlzIG5vdCBhbiBhcnJheSBvciB0
aGUgYXJyYXkgaW5kZXggaXMgaW52YWxpZC4KLXN0ZDo6c3RyaW5nIFBhcnNlVW5pZm9ybU5hbWUo
Y29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHNpemVfdCAqb3V0U3Vic2NyaXB0KTsKKy8vIFBhcnNl
IHRoZSBiYXNlIHJlc291cmNlIG5hbWUgYW5kIGFycmF5IGluZGV4LiAgUmV0dXJucyB0aGUgYmFz
ZSBuYW1lIG9mIHRoZSByZXNvdXJjZS4KKy8vIG91dFN1YnNjcmlwdCBpcyBzZXQgdG8gR0xfSU5W
QUxJRF9JTkRFWCBpZiB0aGUgcHJvdmlkZWQgbmFtZSBpcyBub3QgYW4gYXJyYXkgb3IgdGhlIGFy
cmF5IGluZGV4CisvLyBpcyBpbnZhbGlkLgorc3RkOjpzdHJpbmcgUGFyc2VSZXNvdXJjZU5hbWUo
Y29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHNpemVfdCAqb3V0U3Vic2NyaXB0KTsKIAogLy8gRmlu
ZCB0aGUgcmFuZ2Ugb2YgaW5kZXggdmFsdWVzIGluIHRoZSBwcm92aWRlZCBpbmRpY2VzIHBvaW50
ZXIuICBQcmltaXRpdmUgcmVzdGFydCBpbmRpY2VzIGFyZQogLy8gb25seSBjb3VudGVkIGluIHRo
ZSByYW5nZSBpZiBwcmltaXRpdmUgcmVzdGFydCBpcyBkaXNhYmxlZC4KQEAgLTE2MCw2ICsxNjMs
MTEgQEAgR0xlbnVtIEVHTEltYWdlVGFyZ2V0VG9HTFRleHR1cmVUYXJnZXQoRUdMZW51bSBlZ2xU
YXJnZXQpOwogR0x1aW50IEVHTENsaWVudEJ1ZmZlclRvR0xPYmplY3RIYW5kbGUoRUdMQ2xpZW50
QnVmZmVyIGJ1ZmZlcik7CiB9CiAKK25hbWVzcGFjZSBnbF9lZ2wKK3sKK0VHTGVudW0gR0xDb21w
b25lbnRUeXBlVG9FR0xDb2xvckNvbXBvbmVudFR5cGUoR0xlbnVtIGdsQ29tcG9uZW50VHlwZSk7
Cit9ICAvLyBuYW1lc3BhY2UgZ2xfZWdsCisKICNpZiAhZGVmaW5lZChBTkdMRV9FTkFCTEVfV0lO
RE9XU19TVE9SRSkKIHN0ZDo6c3RyaW5nIGdldFRlbXBQYXRoKCk7CiB2b2lkIHdyaXRlRmlsZShj
b25zdCBjaGFyKiBwYXRoLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3Qgc2l6ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGllc191bml0dGVz
dC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGllc191bml0
dGVzdC5jcHAKaW5kZXggNDQ3YmZjNmViYWUuLjkyYjhkMmQzNjNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3V0aWxpdGllc191bml0dGVzdC5jcHAKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi91dGlsaXRpZXNfdW5pdHRlc3Qu
Y3BwCkBAIC0xMyw0MiArMTMsNDIgQEAKIG5hbWVzcGFjZQogewogCi1URVNUKFBhcnNlVW5pZm9y
bU5hbWUsIEFycmF5SW5kZXgpCitURVNUKFBhcnNlUmVzb3VyY2VOYW1lLCBBcnJheUluZGV4KQog
ewogICAgIHNpemVfdCBpbmRleDsKLSAgICBFWFBFQ1RfRVEoImZvbyIsIGdsOjpQYXJzZVVuaWZv
cm1OYW1lKCJmb29bMTIzXSIsICZpbmRleCkpOworICAgIEVYUEVDVF9FUSgiZm9vIiwgZ2w6OlBh
cnNlUmVzb3VyY2VOYW1lKCJmb29bMTIzXSIsICZpbmRleCkpOwogICAgIEVYUEVDVF9FUSgxMjN1
LCBpbmRleCk7CiAKLSAgICBFWFBFQ1RfRVEoImJhciIsIGdsOjpQYXJzZVVuaWZvcm1OYW1lKCJi
YXJbMF0iLCAmaW5kZXgpKTsKKyAgICBFWFBFQ1RfRVEoImJhciIsIGdsOjpQYXJzZVJlc291cmNl
TmFtZSgiYmFyWzBdIiwgJmluZGV4KSk7CiAgICAgRVhQRUNUX0VRKDB1LCBpbmRleCk7CiB9CiAK
LVRFU1QoUGFyc2VVbmlmb3JtTmFtZSwgTmVnYXRpdmVBcnJheUluZGV4KQorVEVTVChQYXJzZVJl
c291cmNlTmFtZSwgTmVnYXRpdmVBcnJheUluZGV4KQogewogICAgIHNpemVfdCBpbmRleDsKLSAg
ICBFWFBFQ1RfRVEoImZvbyIsIGdsOjpQYXJzZVVuaWZvcm1OYW1lKCJmb29bLTFdIiwgJmluZGV4
KSk7CisgICAgRVhQRUNUX0VRKCJmb28iLCBnbDo6UGFyc2VSZXNvdXJjZU5hbWUoImZvb1stMV0i
LCAmaW5kZXgpKTsKICAgICBFWFBFQ1RfRVEoR0xfSU5WQUxJRF9JTkRFWCwgaW5kZXgpOwogfQog
Ci1URVNUKFBhcnNlVW5pZm9ybU5hbWUsIE5vQXJyYXlJbmRleCkKK1RFU1QoUGFyc2VSZXNvdXJj
ZU5hbWUsIE5vQXJyYXlJbmRleCkKIHsKICAgICBzaXplX3QgaW5kZXg7Ci0gICAgRVhQRUNUX0VR
KCJmb28iLCBnbDo6UGFyc2VVbmlmb3JtTmFtZSgiZm9vIiwgJmluZGV4KSk7CisgICAgRVhQRUNU
X0VRKCJmb28iLCBnbDo6UGFyc2VSZXNvdXJjZU5hbWUoImZvbyIsICZpbmRleCkpOwogICAgIEVY
UEVDVF9FUShHTF9JTlZBTElEX0lOREVYLCBpbmRleCk7CiB9CiAKLVRFU1QoUGFyc2VVbmlmb3Jt
TmFtZSwgTlVMTEFycmF5SW5kZXgpCitURVNUKFBhcnNlUmVzb3VyY2VOYW1lLCBOVUxMQXJyYXlJ
bmRleCkKIHsKLSAgICBFWFBFQ1RfRVEoImZvbyIsIGdsOjpQYXJzZVVuaWZvcm1OYW1lKCJmb29b
MTBdIiwgbnVsbHB0cikpOworICAgIEVYUEVDVF9FUSgiZm9vIiwgZ2w6OlBhcnNlUmVzb3VyY2VO
YW1lKCJmb29bMTBdIiwgbnVsbHB0cikpOwogfQogCi1URVNUKFBhcnNlVW5pZm9ybU5hbWUsIFRy
YWlsaW5nV2hpdGVzcGFjZSkKK1RFU1QoUGFyc2VSZXNvdXJjZU5hbWUsIFRyYWlsaW5nV2hpdGVz
cGFjZSkKIHsKICAgICBzaXplX3QgaW5kZXg7Ci0gICAgRVhQRUNUX0VRKCJmb28gIiwgZ2w6OlBh
cnNlVW5pZm9ybU5hbWUoImZvbyAiLCAmaW5kZXgpKTsKKyAgICBFWFBFQ1RfRVEoImZvbyAiLCBn
bDo6UGFyc2VSZXNvdXJjZU5hbWUoImZvbyAiLCAmaW5kZXgpKTsKICAgICBFWFBFQ1RfRVEoR0xf
SU5WQUxJRF9JTkRFWCwgaW5kZXgpOwogCi0gICAgRVhQRUNUX0VRKCJmb29bMTBdICIsIGdsOjpQ
YXJzZVVuaWZvcm1OYW1lKCJmb29bMTBdICIsICZpbmRleCkpOworICAgIEVYUEVDVF9FUSgiZm9v
WzEwXSAiLCBnbDo6UGFyc2VSZXNvdXJjZU5hbWUoImZvb1sxMF0gIiwgJmluZGV4KSk7CiAgICAg
RVhQRUNUX0VRKEdMX0lOVkFMSURfSU5ERVgsIGluZGV4KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZWN0b3JfdXRpbHMuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdmVjdG9yX3V0aWxzLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNlYjcxMjBjNTgzCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi92ZWN0b3JfdXRpbHMuaApAQCAtMCww
ICsxLDQ3NiBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIHZlY3Rvcl91dGlscy5oOiBVdGlsaXR5IGNsYXNzZXMg
aW1wbGVtZW50aW5nIHZhcmlvdXMgdmVjdG9yIG9wZXJhdGlvbnMKKworI2lmbmRlZiBDT01NT05f
VkVDVE9SX1VUSUxTX0hfCisjZGVmaW5lIENPTU1PTl9WRUNUT1JfVVRJTFNfSF8KKworI2luY2x1
ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8Y21hdGg+CisjaW5jbHVkZSA8dHlwZV90cmFpdHM+CisK
K25hbWVzcGFjZSBhbmdsZQoreworCit0ZW1wbGF0ZSA8c2l6ZV90IERpbWVuc2lvbiwgdHlwZW5h
bWUgVHlwZT4KK2NsYXNzIFZlY3RvcjsKKwordXNpbmcgVmVjdG9yMiA9IFZlY3RvcjwyLCBmbG9h
dD47Cit1c2luZyBWZWN0b3IzID0gVmVjdG9yPDMsIGZsb2F0PjsKK3VzaW5nIFZlY3RvcjQgPSBW
ZWN0b3I8NCwgZmxvYXQ+OworCit1c2luZyBWZWN0b3IySSA9IFZlY3RvcjwyLCBpbnQ+OwordXNp
bmcgVmVjdG9yM0kgPSBWZWN0b3I8MywgaW50PjsKK3VzaW5nIFZlY3RvcjRJID0gVmVjdG9yPDQs
IGludD47CisKK3VzaW5nIFZlY3RvcjJVID0gVmVjdG9yPDIsIHVuc2lnbmVkIGludD47Cit1c2lu
ZyBWZWN0b3IzVSA9IFZlY3RvcjwzLCB1bnNpZ25lZCBpbnQ+OwordXNpbmcgVmVjdG9yNFUgPSBW
ZWN0b3I8NCwgdW5zaWduZWQgaW50PjsKKwordGVtcGxhdGUgPHNpemVfdCBEaW1lbnNpb24sIHR5
cGVuYW1lIFR5cGU+CitjbGFzcyBWZWN0b3JCYXNlCit7CisgIHB1YmxpYzoKKyAgICB1c2luZyBW
ZWN0b3JOID0gVmVjdG9yPERpbWVuc2lvbiwgVHlwZT47CisKKyAgICAvLyBDb25zdHJ1Y3RvcnMK
KyAgICBWZWN0b3JCYXNlKCkgPSBkZWZhdWx0OworICAgIGV4cGxpY2l0IFZlY3RvckJhc2UoVHlw
ZSBlbGVtZW50KTsKKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlMj4KKyAgICBWZWN0b3JC
YXNlKGNvbnN0IFZlY3RvckJhc2U8RGltZW5zaW9uLCBUeXBlMj4gJm90aGVyKTsKKworICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcyLCB0eXBlbmFtZS4uLiBBcmdzPgor
ICAgIFZlY3RvckJhc2UoY29uc3QgQXJnMSAmYXJnMSwgY29uc3QgQXJnMiAmYXJnMiwgY29uc3Qg
QXJncyAmLi4uIGFyZ3MpOworCisgICAgLy8gQWNjZXNzIHRoZSB2ZWN0b3IgYmFja2luZyBzdG9y
YWdlIGRpcmVjdGx5CisgICAgY29uc3QgVHlwZSAqZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1EYXRh
OyB9CisgICAgVHlwZSAqZGF0YSgpIHsgcmV0dXJuIG1EYXRhOyB9CisgICAgY29uc3RleHByIHNp
emVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gRGltZW5zaW9uOyB9CisKKyAgICAvLyBMb2FkIG9y
IHN0b3JlIHRoZSBwb2ludGVyIGZyb20gLyB0byByYXcgZGF0YQorICAgIHN0YXRpYyBWZWN0b3JO
IExvYWQoY29uc3QgVHlwZSAqc291cmNlKTsKKyAgICBzdGF0aWMgdm9pZCBTdG9yZShjb25zdCBW
ZWN0b3JOICZzb3VyY2UsIFR5cGUgKmRlc3RpbmF0aW9uKTsKKworICAgIC8vIEluZGV4IHRoZSB2
ZWN0b3IKKyAgICBUeXBlICZvcGVyYXRvcltdKHNpemVfdCBpKSB7IHJldHVybiBtRGF0YVtpXTsg
fQorICAgIGNvbnN0IFR5cGUgJm9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIG1E
YXRhW2ldOyB9CisKKyAgICAvLyBCYXNpYyBhcml0aG1ldGljIG9wZXJhdGlvbnMKKyAgICBWZWN0
b3JOIG9wZXJhdG9yKygpIGNvbnN0OworICAgIFZlY3Rvck4gb3BlcmF0b3ItKCkgY29uc3Q7Cisg
ICAgVmVjdG9yTiBvcGVyYXRvcisoY29uc3QgVmVjdG9yTiAmb3RoZXIpIGNvbnN0OworICAgIFZl
Y3Rvck4gb3BlcmF0b3ItKGNvbnN0IFZlY3Rvck4gJm90aGVyKSBjb25zdDsKKyAgICBWZWN0b3JO
IG9wZXJhdG9yKihjb25zdCBWZWN0b3JOICZvdGhlcikgY29uc3Q7CisgICAgVmVjdG9yTiBvcGVy
YXRvci8oY29uc3QgVmVjdG9yTiAmb3RoZXIpIGNvbnN0OworICAgIFZlY3Rvck4gb3BlcmF0b3Iq
KFR5cGUgb3RoZXIpIGNvbnN0OworICAgIFZlY3Rvck4gb3BlcmF0b3IvKFR5cGUgb3RoZXIpIGNv
bnN0OworICAgIGZyaWVuZCBWZWN0b3JOIG9wZXJhdG9yKihUeXBlIGEsIGNvbnN0IFZlY3Rvck4g
JmIpIHsgcmV0dXJuIGIgKiBhOyB9CisKKyAgICAvLyBDb21wb3VuZCBhcml0aG1ldGljIG9wZXJh
dGlvbnMKKyAgICBWZWN0b3JOICZvcGVyYXRvcis9KGNvbnN0IFZlY3Rvck4gJm90aGVyKTsKKyAg
ICBWZWN0b3JOICZvcGVyYXRvci09KGNvbnN0IFZlY3Rvck4gJm90aGVyKTsKKyAgICBWZWN0b3JO
ICZvcGVyYXRvcio9KGNvbnN0IFZlY3Rvck4gJm90aGVyKTsKKyAgICBWZWN0b3JOICZvcGVyYXRv
ci89KGNvbnN0IFZlY3Rvck4gJm90aGVyKTsKKyAgICBWZWN0b3JOICZvcGVyYXRvcio9KFR5cGUg
b3RoZXIpOworICAgIFZlY3Rvck4gJm9wZXJhdG9yLz0oVHlwZSBvdGhlcik7CisKKyAgICAvLyBD
b21wYXJpc29uIG9wZXJhdG9ycworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWZWN0b3JOICZv
dGhlcikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZlY3Rvck4gJm90aGVyKSBj
b25zdDsKKworICAgIC8vIE90aGVyIGFyaXRobWV0aWMgb3BlcmF0aW9ucworICAgIFR5cGUgbGVu
Z3RoKCkgY29uc3Q7CisgICAgVHlwZSBsZW5ndGhTcXVhcmVkKCkgY29uc3Q7CisgICAgVHlwZSBk
b3QoY29uc3QgVmVjdG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+ICZvdGhlcikgY29uc3Q7CisgICAg
VmVjdG9yTiBub3JtYWxpemVkKCkgY29uc3Q7CisKKyAgcHJvdGVjdGVkOgorICAgIHRlbXBsYXRl
IDxzaXplX3QgQ3VycmVudEluZGV4LCBzaXplX3QgT3RoZXJEaW1lbnNpb24sIHR5cGVuYW1lIE90
aGVyVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KKyAgICB2b2lkIGluaXRXaXRoTGlzdChjb25zdCBW
ZWN0b3I8T3RoZXJEaW1lbnNpb24sIE90aGVyVHlwZT4gJmFyZzEsIGNvbnN0IEFyZ3MgJi4uLiBh
cmdzKTsKKworICAgIC8vIFNvbWUgb2xkIGNvbXBpbGVycyBjb25zaWRlciB0aGlzIGZ1bmN0aW9u
IGFuIGFsdGVybmF0aXZlIGZvciBpbml0V2l0aExpc3QoVmVjdG9yKQorICAgIC8vIHdoZW4gdGhl
IHZhcmlhbnQgYWJvdmUgaXMgbW9yZSBwcmVjaXNlLiBVc2UgU0ZJTkFFIG9uIHRoZSByZXR1cm4g
dmFsdWUgdG8gaGlkZQorICAgIC8vIHRoaXMgdmFyaWFudCBmb3Igbm9uLWFyaXRobWV0aWMgdHlw
ZXMuIFRoZSByZXR1cm4gdmFsdWUgaXMgc3RpbGwgdm9pZC4KKyAgICB0ZW1wbGF0ZSA8c2l6ZV90
IEN1cnJlbnRJbmRleCwgdHlwZW5hbWUgT3RoZXJUeXBlLCB0eXBlbmFtZS4uLiBBcmdzPgorICAg
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfYXJpdGhtZXRpYzxPdGhlclR5cGU+Ojp2
YWx1ZT46OnR5cGUgaW5pdFdpdGhMaXN0KAorICAgICAgICBPdGhlclR5cGUgYXJnMSwKKyAgICAg
ICAgY29uc3QgQXJncyAmLi4uIGFyZ3MpOworCisgICAgdGVtcGxhdGUgPHNpemVfdCBDdXJyZW50
SW5kZXg+CisgICAgdm9pZCBpbml0V2l0aExpc3QoKSBjb25zdDsKKworICAgIHRlbXBsYXRlIDxz
aXplX3QgRGltZW5zaW9uMiwgdHlwZW5hbWUgVHlwZTI+CisgICAgZnJpZW5kIGNsYXNzIFZlY3Rv
ckJhc2U7CisKKyAgICBUeXBlIG1EYXRhW0RpbWVuc2lvbl07Cit9OworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVHlwZT4KK2NsYXNzIFZlY3RvcjwyLCBUeXBlPiA6IHB1YmxpYyBWZWN0b3JCYXNlPDIs
IFR5cGU+Cit7CisgIHB1YmxpYzoKKyAgICAvLyBJbXBvcnQgdGhlIGNvbnN0cnVjdG9ycyBkZWZp
bmVkIGluIFZlY3RvckJhc2UKKyAgICB1c2luZyBWZWN0b3JCYXNlPDIsIFR5cGU+OjpWZWN0b3JC
YXNlOworCisgICAgLy8gRWxlbWVudCBzaG9ydGhhbmRzCisgICAgVHlwZSAmeCgpIHsgcmV0dXJu
IHRoaXMtPm1EYXRhWzBdOyB9CisgICAgVHlwZSAmeSgpIHsgcmV0dXJuIHRoaXMtPm1EYXRhWzFd
OyB9CisKKyAgICBjb25zdCBUeXBlICZ4KCkgY29uc3QgeyByZXR1cm4gdGhpcy0+bURhdGFbMF07
IH0KKyAgICBjb25zdCBUeXBlICZ5KCkgY29uc3QgeyByZXR1cm4gdGhpcy0+bURhdGFbMV07IH0K
K307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUeXBlPgorY2xhc3MgVmVjdG9yPDMsIFR5cGU+IDog
cHVibGljIFZlY3RvckJhc2U8MywgVHlwZT4KK3sKKyAgcHVibGljOgorICAgIC8vIEltcG9ydCB0
aGUgY29uc3RydWN0b3JzIGRlZmluZWQgaW4gVmVjdG9yQmFzZQorICAgIHVzaW5nIFZlY3RvckJh
c2U8MywgVHlwZT46OlZlY3RvckJhc2U7CisKKyAgICAvLyBBZGRpdGlvbmFsIG9wZXJhdGlvbnMK
KyAgICBWZWN0b3I8MywgVHlwZT4gY3Jvc3MoY29uc3QgVmVjdG9yPDMsIFR5cGU+ICZvdGhlcikg
Y29uc3Q7CisKKyAgICAvLyBFbGVtZW50IHNob3J0aGFuZHMKKyAgICBUeXBlICZ4KCkgeyByZXR1
cm4gdGhpcy0+bURhdGFbMF07IH0KKyAgICBUeXBlICZ5KCkgeyByZXR1cm4gdGhpcy0+bURhdGFb
MV07IH0KKyAgICBUeXBlICZ6KCkgeyByZXR1cm4gdGhpcy0+bURhdGFbMl07IH0KKworICAgIGNv
bnN0IFR5cGUgJngoKSBjb25zdCB7IHJldHVybiB0aGlzLT5tRGF0YVswXTsgfQorICAgIGNvbnN0
IFR5cGUgJnkoKSBjb25zdCB7IHJldHVybiB0aGlzLT5tRGF0YVsxXTsgfQorICAgIGNvbnN0IFR5
cGUgJnooKSBjb25zdCB7IHJldHVybiB0aGlzLT5tRGF0YVsyXTsgfQorfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFR5cGU+CitjbGFzcyBWZWN0b3I8NCwgVHlwZT4gOiBwdWJsaWMgVmVjdG9yQmFz
ZTw0LCBUeXBlPgoreworICBwdWJsaWM6CisgICAgLy8gSW1wb3J0IHRoZSBjb25zdHJ1Y3RvcnMg
ZGVmaW5lZCBpbiBWZWN0b3JCYXNlCisgICAgdXNpbmcgVmVjdG9yQmFzZTw0LCBUeXBlPjo6VmVj
dG9yQmFzZTsKKworICAgIC8vIEVsZW1lbnQgc2hvcnRoYW5kcworICAgIFR5cGUgJngoKSB7IHJl
dHVybiB0aGlzLT5tRGF0YVswXTsgfQorICAgIFR5cGUgJnkoKSB7IHJldHVybiB0aGlzLT5tRGF0
YVsxXTsgfQorICAgIFR5cGUgJnooKSB7IHJldHVybiB0aGlzLT5tRGF0YVsyXTsgfQorICAgIFR5
cGUgJncoKSB7IHJldHVybiB0aGlzLT5tRGF0YVszXTsgfQorCisgICAgY29uc3QgVHlwZSAmeCgp
IGNvbnN0IHsgcmV0dXJuIHRoaXMtPm1EYXRhWzBdOyB9CisgICAgY29uc3QgVHlwZSAmeSgpIGNv
bnN0IHsgcmV0dXJuIHRoaXMtPm1EYXRhWzFdOyB9CisgICAgY29uc3QgVHlwZSAmeigpIGNvbnN0
IHsgcmV0dXJuIHRoaXMtPm1EYXRhWzJdOyB9CisgICAgY29uc3QgVHlwZSAmdygpIGNvbnN0IHsg
cmV0dXJuIHRoaXMtPm1EYXRhWzNdOyB9Cit9OworCisvLyBJbXBsZW1lbnRhdGlvbiBvZiBjb25z
dHJ1Y3RvcnMgYW5kIG1pc2Mgb3BlcmF0aW9ucworCit0ZW1wbGF0ZSA8c2l6ZV90IERpbWVuc2lv
biwgdHlwZW5hbWUgVHlwZT4KK1ZlY3RvckJhc2U8RGltZW5zaW9uLCBUeXBlPjo6VmVjdG9yQmFz
ZShUeXBlIGVsZW1lbnQpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBEaW1lbnNpb247
ICsraSkKKyAgICB7CisgICAgICAgIG1EYXRhW2ldID0gZWxlbWVudDsKKyAgICB9Cit9CisKK3Rl
bXBsYXRlIDxzaXplX3QgRGltZW5zaW9uLCB0eXBlbmFtZSBUeXBlPgordGVtcGxhdGUgPHR5cGVu
YW1lIFR5cGUyPgorVmVjdG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+OjpWZWN0b3JCYXNlKGNvbnN0
IFZlY3RvckJhc2U8RGltZW5zaW9uLCBUeXBlMj4gJm90aGVyKQoreworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgRGltZW5zaW9uOyArK2kpCisgICAgeworICAgICAgICBtRGF0YVtpXSA9IHN0
YXRpY19jYXN0PFR5cGU+KG90aGVyLm1EYXRhW2ldKTsKKyAgICB9Cit9CisKKy8vIElkZWFsbHkg
d2Ugd291bGQgbGlrZSB0byBoYXZlIG9ubHkgdHdvIGNvbnN0cnVjdG9yczoKKy8vICAtIGEgc2Nh
bGFyIGNvbnN0cnVjdG9yIHRoYXQgdGFrZXMgVHlwZSBhcyBhIHBhcmFtZXRlcgorLy8gIC0gYSBj
b21wb3VuZCBjb25zdHJ1Y3RvcgorLy8gSG93ZXZlciBpZiB3ZSBkZWZpbmUgdGhlIGNvbXBvdW5k
IGNvbnN0cnVjdG9yIGZvciB3aGVuIGl0IGhhcyBhIHNpbmdsZSBhcmd1bWVudHMsIHRoZW4gY2Fs
bGluZworLy8gVmVjdG9yMigwLjApIHdpbGwgYmUgYW1iaWd1b3VzLiBUbyBzb2x2ZSB0aGlzIHdl
IHRha2UgYWR2YW50YWdlIG9mIHRoZXJlIGJlaW5nIGEgc2luZ2xlIGNvbXBvdW5kCisvLyBjb25z
dHJ1Y3RvciB3aXRoIGEgc2luZ2xlIGFyZ3VtZW50LCB3aGljaCBpcyB0aGUgY29weSBjb25zdHJ1
Y3Rvci4gV2UgZW5kIHVwIHdpdGggdGhyZWUKKy8vIGNvbnN0cnVjdG9yczoKKy8vICAtIHRoZSBz
Y2FsYXIgY29uc3RydWN0b3IKKy8vICAtIHRoZSBjb3B5IGNvbnN0cnVjdG9yCisvLyAgLSB0aGUg
Y29tcG91bmQgY29uc3RydWN0b3IgZm9yIHR3byBvciBtb3JlIGFyZ3VtZW50cywgaGVuY2UgdGhl
IGFyZzEsIGFuZCBhcmcyIGhlcmUuCit0ZW1wbGF0ZSA8c2l6ZV90IERpbWVuc2lvbiwgdHlwZW5h
bWUgVHlwZT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBBcmcxLCB0eXBlbmFtZSBBcmcyLCB0eXBlbmFt
ZS4uLiBBcmdzPgorVmVjdG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+OjpWZWN0b3JCYXNlKGNvbnN0
IEFyZzEgJmFyZzEsIGNvbnN0IEFyZzIgJmFyZzIsIGNvbnN0IEFyZ3MgJi4uLiBhcmdzKQorewor
ICAgIGluaXRXaXRoTGlzdDwwPihhcmcxLCBhcmcyLCBhcmdzLi4uKTsKK30KKwordGVtcGxhdGUg
PHNpemVfdCBEaW1lbnNpb24sIHR5cGVuYW1lIFR5cGU+Cit0ZW1wbGF0ZSA8c2l6ZV90IEN1cnJl
bnRJbmRleCwgc2l6ZV90IE90aGVyRGltZW5zaW9uLCB0eXBlbmFtZSBPdGhlclR5cGUsIHR5cGVu
YW1lLi4uIEFyZ3M+Cit2b2lkIFZlY3RvckJhc2U8RGltZW5zaW9uLCBUeXBlPjo6aW5pdFdpdGhM
aXN0KGNvbnN0IFZlY3RvcjxPdGhlckRpbWVuc2lvbiwgT3RoZXJUeXBlPiAmYXJnMSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXJncyAmLi4u
IGFyZ3MpCit7CisgICAgc3RhdGljX2Fzc2VydChDdXJyZW50SW5kZXggKyBPdGhlckRpbWVuc2lv
biA8PSBEaW1lbnNpb24sCisgICAgICAgICAgICAgICAgICAiVG9vIG11Y2ggZGF0YSBpbiB0aGUg
dmVjdG9yIGNvbnN0cnVjdG9yLiIpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgT3RoZXJE
aW1lbnNpb247ICsraSkKKyAgICB7CisgICAgICAgIG1EYXRhW0N1cnJlbnRJbmRleCArIGldID0g
c3RhdGljX2Nhc3Q8VHlwZT4oYXJnMS5tRGF0YVtpXSk7CisgICAgfQorICAgIGluaXRXaXRoTGlz
dDxDdXJyZW50SW5kZXggKyBPdGhlckRpbWVuc2lvbj4oYXJncy4uLik7Cit9CisKK3RlbXBsYXRl
IDxzaXplX3QgRGltZW5zaW9uLCB0eXBlbmFtZSBUeXBlPgordGVtcGxhdGUgPHNpemVfdCBDdXJy
ZW50SW5kZXgsIHR5cGVuYW1lIE90aGVyVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KK3R5cGVuYW1l
IHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfYXJpdGhtZXRpYzxPdGhlclR5cGU+Ojp2YWx1ZT46OnR5
cGUKK1ZlY3RvckJhc2U8RGltZW5zaW9uLCBUeXBlPjo6aW5pdFdpdGhMaXN0KE90aGVyVHlwZSBh
cmcxLCBjb25zdCBBcmdzICYuLi4gYXJncykKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KEN1cnJlbnRJ
bmRleCArIDEgPD0gRGltZW5zaW9uLCAiVG9vIG11Y2ggZGF0YSBpbiB0aGUgdmVjdG9yIGNvbnN0
cnVjdG9yLiIpOworICAgIG1EYXRhW0N1cnJlbnRJbmRleF0gPSBzdGF0aWNfY2FzdDxUeXBlPihh
cmcxKTsKKyAgICBpbml0V2l0aExpc3Q8Q3VycmVudEluZGV4ICsgMT4oYXJncy4uLik7Cit9CisK
K3RlbXBsYXRlIDxzaXplX3QgRGltZW5zaW9uLCB0eXBlbmFtZSBUeXBlPgordGVtcGxhdGUgPHNp
emVfdCBDdXJyZW50SW5kZXg+Cit2b2lkIFZlY3RvckJhc2U8RGltZW5zaW9uLCBUeXBlPjo6aW5p
dFdpdGhMaXN0KCkgY29uc3QKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KEN1cnJlbnRJbmRleCA9PSBE
aW1lbnNpb24sICJOb3QgZW5vdWdoIGRhdGEgaW4gdGhlIHZlY3RvciBjb25zdHJ1Y3Rvci4iKTsK
K30KKwordGVtcGxhdGUgPHNpemVfdCBEaW1lbnNpb24sIHR5cGVuYW1lIFR5cGU+CitWZWN0b3I8
RGltZW5zaW9uLCBUeXBlPiBWZWN0b3JCYXNlPERpbWVuc2lvbiwgVHlwZT46OkxvYWQoY29uc3Qg
VHlwZSAqc291cmNlKQoreworICAgIFZlY3RvcjxEaW1lbnNpb24sIFR5cGU+IHJlc3VsdDsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IERpbWVuc2lvbjsgKytpKQorICAgIHsKKyAgICAgICAg
cmVzdWx0Lm1EYXRhW2ldID0gc291cmNlW2ldOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCit0ZW1wbGF0ZSA8c2l6ZV90IERpbWVuc2lvbiwgdHlwZW5hbWUgVHlwZT4KK3ZvaWQgVmVj
dG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+OjpTdG9yZShjb25zdCBWZWN0b3I8RGltZW5zaW9uLCBU
eXBlPiAmc291cmNlLCBUeXBlICpkZXN0aW5hdGlvbikKK3sKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IERpbWVuc2lvbjsgKytpKQorICAgIHsKKyAgICAgICAgZGVzdGluYXRpb25baV0gPSBz
b3VyY2UubURhdGFbaV07CisgICAgfQorfQorCisvLyBJbXBsZW1lbnRhdGlvbiBvZiBiYXNpYyBh
cml0aG1ldGljIG9wZXJhdGlvbnMKK3RlbXBsYXRlIDxzaXplX3QgRGltZW5zaW9uLCB0eXBlbmFt
ZSBUeXBlPgorVmVjdG9yPERpbWVuc2lvbiwgVHlwZT4gVmVjdG9yQmFzZTxEaW1lbnNpb24sIFR5
cGU+OjpvcGVyYXRvcisoKSBjb25zdAoreworICAgIFZlY3RvcjxEaW1lbnNpb24sIFR5cGU+IHJl
c3VsdDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IERpbWVuc2lvbjsgKytpKQorICAgIHsK
KyAgICAgICAgcmVzdWx0Lm1EYXRhW2ldID0gK21EYXRhW2ldOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0OworfQorCit0ZW1wbGF0ZSA8c2l6ZV90IERpbWVuc2lvbiwgdHlwZW5hbWUgVHlwZT4K
K1ZlY3RvcjxEaW1lbnNpb24sIFR5cGU+IFZlY3RvckJhc2U8RGltZW5zaW9uLCBUeXBlPjo6b3Bl
cmF0b3ItKCkgY29uc3QKK3sKKyAgICBWZWN0b3I8RGltZW5zaW9uLCBUeXBlPiByZXN1bHQ7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBEaW1lbnNpb247ICsraSkKKyAgICB7CisgICAgICAg
IHJlc3VsdC5tRGF0YVtpXSA9IC1tRGF0YVtpXTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwordGVtcGxhdGUgPHNpemVfdCBEaW1lbnNpb24sIHR5cGVuYW1lIFR5cGU+CitWZWN0b3I8
RGltZW5zaW9uLCBUeXBlPiBWZWN0b3JCYXNlPERpbWVuc2lvbiwgVHlwZT46Om9wZXJhdG9yKygK
KyAgICBjb25zdCBWZWN0b3I8RGltZW5zaW9uLCBUeXBlPiAmb3RoZXIpIGNvbnN0Cit7CisgICAg
VmVjdG9yPERpbWVuc2lvbiwgVHlwZT4gcmVzdWx0OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgRGltZW5zaW9uOyArK2kpCisgICAgeworICAgICAgICByZXN1bHQubURhdGFbaV0gPSBtRGF0
YVtpXSArIG90aGVyLm1EYXRhW2ldOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0
ZW1wbGF0ZSA8c2l6ZV90IERpbWVuc2lvbiwgdHlwZW5hbWUgVHlwZT4KK1ZlY3RvcjxEaW1lbnNp
b24sIFR5cGU+IFZlY3RvckJhc2U8RGltZW5zaW9uLCBUeXBlPjo6b3BlcmF0b3ItKAorICAgIGNv
bnN0IFZlY3RvcjxEaW1lbnNpb24sIFR5cGU+ICZvdGhlcikgY29uc3QKK3sKKyAgICBWZWN0b3I8
RGltZW5zaW9uLCBUeXBlPiByZXN1bHQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBEaW1l
bnNpb247ICsraSkKKyAgICB7CisgICAgICAgIHJlc3VsdC5tRGF0YVtpXSA9IG1EYXRhW2ldIC0g
b3RoZXIubURhdGFbaV07CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3RlbXBsYXRl
IDxzaXplX3QgRGltZW5zaW9uLCB0eXBlbmFtZSBUeXBlPgorVmVjdG9yPERpbWVuc2lvbiwgVHlw
ZT4gVmVjdG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+OjpvcGVyYXRvciooCisgICAgY29uc3QgVmVj
dG9yPERpbWVuc2lvbiwgVHlwZT4gJm90aGVyKSBjb25zdAoreworICAgIFZlY3RvcjxEaW1lbnNp
b24sIFR5cGU+IHJlc3VsdDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IERpbWVuc2lvbjsg
KytpKQorICAgIHsKKyAgICAgICAgcmVzdWx0Lm1EYXRhW2ldID0gbURhdGFbaV0gKiBvdGhlci5t
RGF0YVtpXTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVtcGxhdGUgPHNpemVf
dCBEaW1lbnNpb24sIHR5cGVuYW1lIFR5cGU+CitWZWN0b3I8RGltZW5zaW9uLCBUeXBlPiBWZWN0
b3JCYXNlPERpbWVuc2lvbiwgVHlwZT46Om9wZXJhdG9yLygKKyAgICBjb25zdCBWZWN0b3I8RGlt
ZW5zaW9uLCBUeXBlPiAmb3RoZXIpIGNvbnN0Cit7CisgICAgVmVjdG9yPERpbWVuc2lvbiwgVHlw
ZT4gcmVzdWx0OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgRGltZW5zaW9uOyArK2kpCisg
ICAgeworICAgICAgICByZXN1bHQubURhdGFbaV0gPSBtRGF0YVtpXSAvIG90aGVyLm1EYXRhW2ld
OworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZSA8c2l6ZV90IERpbWVu
c2lvbiwgdHlwZW5hbWUgVHlwZT4KK1ZlY3RvcjxEaW1lbnNpb24sIFR5cGU+IFZlY3RvckJhc2U8
RGltZW5zaW9uLCBUeXBlPjo6b3BlcmF0b3IqKFR5cGUgb3RoZXIpIGNvbnN0Cit7CisgICAgVmVj
dG9yPERpbWVuc2lvbiwgVHlwZT4gcmVzdWx0OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
RGltZW5zaW9uOyArK2kpCisgICAgeworICAgICAgICByZXN1bHQubURhdGFbaV0gPSBtRGF0YVtp
XSAqIG90aGVyOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit0ZW1wbGF0ZSA8c2l6
ZV90IERpbWVuc2lvbiwgdHlwZW5hbWUgVHlwZT4KK1ZlY3RvcjxEaW1lbnNpb24sIFR5cGU+IFZl
Y3RvckJhc2U8RGltZW5zaW9uLCBUeXBlPjo6b3BlcmF0b3IvKFR5cGUgb3RoZXIpIGNvbnN0Cit7
CisgICAgVmVjdG9yPERpbWVuc2lvbiwgVHlwZT4gcmVzdWx0OworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgRGltZW5zaW9uOyArK2kpCisgICAgeworICAgICAgICByZXN1bHQubURhdGFbaV0g
PSBtRGF0YVtpXSAvIG90aGVyOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvLyBJ
bXBsZW1lbnRhdGlvbiBvZiBjb21wb3VuZCBhcml0aG1ldGljIG9wZXJhdGlvbnMKK3RlbXBsYXRl
IDxzaXplX3QgRGltZW5zaW9uLCB0eXBlbmFtZSBUeXBlPgorVmVjdG9yPERpbWVuc2lvbiwgVHlw
ZT4gJlZlY3RvckJhc2U8RGltZW5zaW9uLCBUeXBlPjo6b3BlcmF0b3IrPSgKKyAgICBjb25zdCBW
ZWN0b3I8RGltZW5zaW9uLCBUeXBlPiAmb3RoZXIpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBEaW1lbnNpb247ICsraSkKKyAgICB7CisgICAgICAgIG1EYXRhW2ldICs9IG90aGVyLm1E
YXRhW2ldOworICAgIH0KKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8VmVjdG9yPERpbWVu
c2lvbiwgVHlwZT4gKj4odGhpcyk7Cit9CisKK3RlbXBsYXRlIDxzaXplX3QgRGltZW5zaW9uLCB0
eXBlbmFtZSBUeXBlPgorVmVjdG9yPERpbWVuc2lvbiwgVHlwZT4gJlZlY3RvckJhc2U8RGltZW5z
aW9uLCBUeXBlPjo6b3BlcmF0b3ItPSgKKyAgICBjb25zdCBWZWN0b3I8RGltZW5zaW9uLCBUeXBl
PiAmb3RoZXIpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBEaW1lbnNpb247ICsraSkK
KyAgICB7CisgICAgICAgIG1EYXRhW2ldIC09IG90aGVyLm1EYXRhW2ldOworICAgIH0KKyAgICBy
ZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8VmVjdG9yPERpbWVuc2lvbiwgVHlwZT4gKj4odGhpcyk7
Cit9CisKK3RlbXBsYXRlIDxzaXplX3QgRGltZW5zaW9uLCB0eXBlbmFtZSBUeXBlPgorVmVjdG9y
PERpbWVuc2lvbiwgVHlwZT4gJlZlY3RvckJhc2U8RGltZW5zaW9uLCBUeXBlPjo6b3BlcmF0b3Iq
PSgKKyAgICBjb25zdCBWZWN0b3I8RGltZW5zaW9uLCBUeXBlPiAmb3RoZXIpCit7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBEaW1lbnNpb247ICsraSkKKyAgICB7CisgICAgICAgIG1EYXRh
W2ldICo9IG90aGVyLm1EYXRhW2ldOworICAgIH0KKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nh
c3Q8VmVjdG9yPERpbWVuc2lvbiwgVHlwZT4gKj4odGhpcyk7Cit9CisKK3RlbXBsYXRlIDxzaXpl
X3QgRGltZW5zaW9uLCB0eXBlbmFtZSBUeXBlPgorVmVjdG9yPERpbWVuc2lvbiwgVHlwZT4gJlZl
Y3RvckJhc2U8RGltZW5zaW9uLCBUeXBlPjo6b3BlcmF0b3IvPSgKKyAgICBjb25zdCBWZWN0b3I8
RGltZW5zaW9uLCBUeXBlPiAmb3RoZXIpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBE
aW1lbnNpb247ICsraSkKKyAgICB7CisgICAgICAgIG1EYXRhW2ldIC89IG90aGVyLm1EYXRhW2ld
OworICAgIH0KKyAgICByZXR1cm4gKnJlaW50ZXJwcmV0X2Nhc3Q8VmVjdG9yPERpbWVuc2lvbiwg
VHlwZT4gKj4odGhpcyk7Cit9CisKK3RlbXBsYXRlIDxzaXplX3QgRGltZW5zaW9uLCB0eXBlbmFt
ZSBUeXBlPgorVmVjdG9yPERpbWVuc2lvbiwgVHlwZT4gJlZlY3RvckJhc2U8RGltZW5zaW9uLCBU
eXBlPjo6b3BlcmF0b3IqPShUeXBlIG90aGVyKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgRGltZW5zaW9uOyArK2kpCisgICAgeworICAgICAgICBtRGF0YVtpXSAqPSBvdGhlcjsKKyAg
ICB9CisgICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PFZlY3RvcjxEaW1lbnNpb24sIFR5cGU+
ICo+KHRoaXMpOworfQorCit0ZW1wbGF0ZSA8c2l6ZV90IERpbWVuc2lvbiwgdHlwZW5hbWUgVHlw
ZT4KK1ZlY3RvcjxEaW1lbnNpb24sIFR5cGU+ICZWZWN0b3JCYXNlPERpbWVuc2lvbiwgVHlwZT46
Om9wZXJhdG9yLz0oVHlwZSBvdGhlcikKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IERp
bWVuc2lvbjsgKytpKQorICAgIHsKKyAgICAgICAgbURhdGFbaV0gLz0gb3RoZXI7CisgICAgfQor
ICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxWZWN0b3I8RGltZW5zaW9uLCBUeXBlPiAqPih0
aGlzKTsKK30KKworLy8gSW1wbGVtZW50YXRpb24gb2YgY29tcGFyaXNvbiBvcGVyYXRvcnMKK3Rl
bXBsYXRlIDxzaXplX3QgRGltZW5zaW9uLCB0eXBlbmFtZSBUeXBlPgorYm9vbCBWZWN0b3JCYXNl
PERpbWVuc2lvbiwgVHlwZT46Om9wZXJhdG9yPT0oY29uc3QgVmVjdG9yPERpbWVuc2lvbiwgVHlw
ZT4gJm90aGVyKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgRGltZW5zaW9u
OyArK2kpCisgICAgeworICAgICAgICBpZiAobURhdGFbaV0gIT0gb3RoZXIubURhdGFbaV0pCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGUgPHNpemVfdCBEaW1lbnNpb24sIHR5cGVuYW1l
IFR5cGU+Citib29sIFZlY3RvckJhc2U8RGltZW5zaW9uLCBUeXBlPjo6b3BlcmF0b3IhPShjb25z
dCBWZWN0b3I8RGltZW5zaW9uLCBUeXBlPiAmb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuICEo
KnRoaXMgPT0gb3RoZXIpOworfQorCisvLyBJbXBsZW1lbnRhdGlvbiBvZiBvdGhlciBhcml0aG1l
dGljIG9wZXJhdGlvbnMKK3RlbXBsYXRlIDxzaXplX3QgRGltZW5zaW9uLCB0eXBlbmFtZSBUeXBl
PgorVHlwZSBWZWN0b3JCYXNlPERpbWVuc2lvbiwgVHlwZT46Omxlbmd0aCgpIGNvbnN0Cit7Cisg
ICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFR5cGU+Ojp2YWx1ZSwKKyAg
ICAgICAgICAgICAgICAgICJWZWN0b3JOOjpsZW5ndGggaXMgb25seSBkZWZpbmVkIGZvciBmbG9h
dGluZyBwb2ludCB2ZWN0b3JzIik7CisgICAgcmV0dXJuIHN0ZDo6c3FydChsZW5ndGhTcXVhcmVk
KCkpOworfQorCit0ZW1wbGF0ZSA8c2l6ZV90IERpbWVuc2lvbiwgdHlwZW5hbWUgVHlwZT4KK1R5
cGUgVmVjdG9yQmFzZTxEaW1lbnNpb24sIFR5cGU+OjpsZW5ndGhTcXVhcmVkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gZG90KCp0aGlzKTsKK30KKwordGVtcGxhdGUgPHNpemVfdCBEaW1lbnNpb24s
IHR5cGVuYW1lIFR5cGU+CitUeXBlIFZlY3RvckJhc2U8RGltZW5zaW9uLCBUeXBlPjo6ZG90KGNv
bnN0IFZlY3RvckJhc2U8RGltZW5zaW9uLCBUeXBlPiAmb3RoZXIpIGNvbnN0Cit7CisgICAgVHlw
ZSBzdW0gPSBUeXBlKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBEaW1lbnNpb247ICsr
aSkKKyAgICB7CisgICAgICAgIHN1bSArPSBtRGF0YVtpXSAqIG90aGVyLm1EYXRhW2ldOworICAg
IH0KKyAgICByZXR1cm4gc3VtOworfQorCit0ZW1wbGF0ZSA8c2l6ZV90IERpbWVuc2lvbiwgdHlw
ZW5hbWUgVHlwZT4KK1ZlY3RvcjxEaW1lbnNpb24sIFR5cGU+IFZlY3RvckJhc2U8RGltZW5zaW9u
LCBUeXBlPjo6bm9ybWFsaXplZCgpIGNvbnN0Cit7CisgICAgc3RhdGljX2Fzc2VydChzdGQ6Omlz
X2Zsb2F0aW5nX3BvaW50PFR5cGU+Ojp2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICJWZWN0b3JO
Ojpub3JtYWxpemVkIGlzIG9ubHkgZGVmaW5lZCBmb3IgZmxvYXRpbmcgcG9pbnQgdmVjdG9ycyIp
OworICAgIHJldHVybiAqdGhpcyAvIGxlbmd0aCgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VHlwZT4KK1ZlY3RvcjwzLCBUeXBlPiBWZWN0b3I8MywgVHlwZT46OmNyb3NzKGNvbnN0IFZlY3Rv
cjwzLCBUeXBlPiAmb3RoZXIpIGNvbnN0Cit7CisgICAgcmV0dXJuIFZlY3RvcjwzLCBUeXBlPih5
KCkgKiBvdGhlci56KCkgLSB6KCkgKiBvdGhlci55KCksIHooKSAqIG90aGVyLngoKSAtIHgoKSAq
IG90aGVyLnooKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHgoKSAqIG90aGVyLnkoKSAt
IHkoKSAqIG90aGVyLngoKSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQorCisjZW5kaWYg
IC8vIENPTU1PTl9WRUNUT1JfVVRJTFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21tb24vdmVjdG9yX3V0aWxzX3VuaXR0ZXN0LmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdmVjdG9yX3V0aWxzX3VuaXR0ZXN0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWMxMTg0ZGFmNDkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3ZlY3Rvcl91dGlsc191
bml0dGVzdC5jcHAKQEAgLTAsMCArMSwyMjUgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyB2ZWN0b3JfdXRpbHNf
dW5pdHRlc3RzLmNwcDogVW5pdCB0ZXN0cyBmb3IgdGhlIHZlY3RvciB1dGlscy4KKy8vCisKKyNp
bmNsdWRlICJ2ZWN0b3JfdXRpbHMuaCIKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKKy8vIEZpcnN0IHRlc3QgdGhh
dCBjb21wYXJpbmcgdmVjdG9ycyB3b3JrCitURVNUKFZlY3RvclV0aWxzVGVzdCwgQ29tcGFyaXNv
bikKK3sKKyAgICAvLyBEb24ndCB1c2UgQVNTRVJUX0VRIGF0IGZpcnN0IGJlY2F1c2UgdGhlID09
IGlzIG1vcmUgaGlkZGVuCisgICAgQVNTRVJUX1RSVUUoVmVjdG9yMigyLjAsIDMuMCkgPT0gVmVj
dG9yMigyLjAsIDMuMCkpOworICAgIEFTU0VSVF9UUlVFKFZlY3RvcjIoMi4wLCAzLjApICE9IFZl
Y3RvcjIoMi4wLCA0LjApKTsKKworICAgIC8vIENoZWNrIEFTU0VSVF9FUSBhbmQgQVNTRVJUX05F
IHdvcmsgY29ycmVjdGx5CisgICAgQVNTRVJUX0VRKFZlY3RvcjIoMi4wLCAzLjApLCBWZWN0b3Iy
KDIuMCwgMy4wKSk7CisgICAgQVNTRVJUX05FKFZlY3RvcjIoMi4wLCAzLjApLCBWZWN0b3IyKDIu
MCwgNC4wKSk7CisKKyAgICAvLyBDaGVjayBjb21wYXJpc29uIHdvcmtzIG9uIGFsbCBlbGVtZW50
cworICAgIEFTU0VSVF9FUShWZWN0b3I0KDAuMCksIFZlY3RvcjQoMC4wKSk7CisgICAgQVNTRVJU
X05FKFZlY3RvcjQoMS4wLCAwLjAsIDAuMCwgMC4wKSwgVmVjdG9yNCgwLjApKTsKKyAgICBBU1NF
UlRfTkUoVmVjdG9yNCgwLjAsIDEuMCwgMC4wLCAwLjApLCBWZWN0b3I0KDAuMCkpOworICAgIEFT
U0VSVF9ORShWZWN0b3I0KDAuMCwgMC4wLCAxLjAsIDAuMCksIFZlY3RvcjQoMC4wKSk7CisgICAg
QVNTRVJUX05FKFZlY3RvcjQoMC4wLCAwLjAsIDAuMCwgMS4wKSwgVmVjdG9yNCgwLjApKTsKK30K
KworLy8gVGVzdCBpbmRleGluZworVEVTVChWZWN0b3JVdGlsc1Rlc3QsIEluZGV4aW5nKQorewor
ICAgIFZlY3RvcjIgdmVjKDEuMCwgMi4wKTsKKyAgICBBU1NFUlRfRVEoMS4wLCB2ZWNbMF0pOwor
ICAgIEFTU0VSVF9FUSgyLjAsIHZlY1sxXSk7CisKKyAgICB2ZWNbMF0gPSAzLjA7CisgICAgdmVj
WzFdID0gNC4wOworICAgIEFTU0VSVF9FUShWZWN0b3IyKDMuMCwgNC4wKSwgdmVjKTsKK30KKwor
Ly8gVGVzdCBmb3IgdGhlIHZhcmlvdXMgY29uc3RydWN0b3JzCitURVNUKFZlY3RvclV0aWxzVGVz
dCwgQ29uc3RydWN0b3JzKQoreworICAgIC8vIENvbnN0cnVjdG9yIGluaXRpYWxpemluZyBhbGwg
dG8gYSBzaW5nbGUgZWxlbWVudAorICAgIHsKKyAgICAgICAgVmVjdG9yMiB2ZWMoMy4wKTsKKyAg
ICAgICAgQVNTRVJUX0VRKDMuMCwgdmVjWzBdKTsKKyAgICAgICAgQVNTRVJUX0VRKDMuMCwgdmVj
WzFdKTsKKyAgICB9CisKKyAgICAvLyBDb25zdHJ1Y3RvciBpbml0aWFsaXppbmcgZnJvbSBhbm90
aGVyIFZlY3RvcgorICAgIHsKKyAgICAgICAgVmVjdG9yMiB2ZWMoVmVjdG9yMigxLjAsIDIuMCkp
OworICAgICAgICBBU1NFUlRfRVEoMS4wLCB2ZWNbMF0pOworICAgICAgICBBU1NFUlRfRVEoMi4w
LCB2ZWNbMV0pOworICAgIH0KKworICAgIC8vIE1peGVkIGNvbnN0cnVjdG9yCisgICAgeworICAg
ICAgICBWZWN0b3I0IHZlYygxLjAsIFZlY3RvcjIoMi4wLCAzLjApLCA0LjApOworICAgICAgICBB
U1NFUlRfRVEoMS4wLCB2ZWNbMF0pOworICAgICAgICBBU1NFUlRfRVEoMi4wLCB2ZWNbMV0pOwor
ICAgICAgICBBU1NFUlRfRVEoMy4wLCB2ZWNbMl0pOworICAgICAgICBBU1NFUlRfRVEoNC4wLCB2
ZWNbM10pOworICAgIH0KK30KKworLy8gVGVzdCBhY2Nlc3NpbmcgdGhlIGRhdGEgZGlyZWN0bHkK
K1RFU1QoVmVjdG9yVXRpbHNUZXN0LCBEYXRhQWNjZXNzKQoreworICAgIFZlY3RvcjIgdmVjKDEu
MCwgMi4wKTsKKyAgICBBU1NFUlRfRVEoMnUsIHZlYy5zaXplKCkpOworCisgICAgQVNTRVJUX0VR
KDEuMCwgdmVjLmRhdGEoKVswXSk7CisgICAgQVNTRVJUX0VRKDIuMCwgdmVjLmRhdGEoKVsxXSk7
CisKKyAgICB2ZWMuZGF0YSgpWzBdID0gMy4wOworICAgIHZlYy5kYXRhKClbMV0gPSA0LjA7CisK
KyAgICBBU1NFUlRfRVEoVmVjdG9yMigzLjAsIDQuMCksIHZlYyk7Cit9CisKKy8vIFRlc3QgYWNj
ZXNzaW5nIHRoZSBkYXRhIGRpcmVjdGx5CitURVNUKFZlY3RvclV0aWxzVGVzdCwgTG9hZFN0b3Jl
KQoreworICAgIGZsb2F0IGRhdGFbXSA9IHsxLjAsIDIuMH07CisKKyAgICBWZWN0b3IyIHZlYyA9
IFZlY3RvcjI6OkxvYWQoZGF0YSk7CisKKyAgICBBU1NFUlRfRVEoMS4wLCB2ZWMuZGF0YSgpWzBd
KTsKKyAgICBBU1NFUlRfRVEoMi4wLCB2ZWMuZGF0YSgpWzFdKTsKKworICAgIHZlYyA9IFZlY3Rv
cjIoMy4wLCA0LjApOworICAgIFZlY3RvcjI6OlN0b3JlKHZlYywgZGF0YSk7CisKKyAgICBBU1NF
UlRfRVEoMy4wLCBkYXRhWzBdKTsKKyAgICBBU1NFUlRfRVEoNC4wLCBkYXRhWzFdKTsKK30KKwor
Ly8gVGVzdCBiYXNpYyBhcml0aG1ldGljIG9wZXJhdGlvbnMKK1RFU1QoVmVjdG9yVXRpbHNUZXN0
LCBCYXNpY0FyaXRobWV0aWMpCit7CisgICAgQVNTRVJUX0VRKFZlY3RvcjIoMi4wLCAzLjApLCAr
VmVjdG9yMigyLjAsIDMuMCkpOworICAgIEFTU0VSVF9FUShWZWN0b3IyKC0yLjAsIC0zLjApLCAt
VmVjdG9yMigyLjAsIDMuMCkpOworICAgIEFTU0VSVF9FUShWZWN0b3IyKDQuMCwgNi4wKSwgVmVj
dG9yMigxLjAsIDIuMCkgKyBWZWN0b3IyKDMuMCwgNC4wKSk7CisgICAgQVNTRVJUX0VRKFZlY3Rv
cjIoLTIuMCwgLTIuMCksIFZlY3RvcjIoMS4wLCAyLjApIC0gVmVjdG9yMigzLjAsIDQuMCkpOwor
ICAgIEFTU0VSVF9FUShWZWN0b3IyKDMuMCwgOC4wKSwgVmVjdG9yMigxLjAsIDIuMCkgKiBWZWN0
b3IyKDMuMCwgNC4wKSk7CisgICAgQVNTRVJUX0VRKFZlY3RvcjIoMy4wLCAyLjApLCBWZWN0b3Iy
KDMuMCwgNC4wKSAvIFZlY3RvcjIoMS4wLCAyLjApKTsKKworICAgIEFTU0VSVF9FUShWZWN0b3Iy
KDIuMCwgNC4wKSwgVmVjdG9yMigxLjAsIDIuMCkgKiAyKTsKKyAgICBBU1NFUlRfRVEoVmVjdG9y
MigyLjAsIDQuMCksIDIgKiBWZWN0b3IyKDEuMCwgMi4wKSk7CisgICAgQVNTRVJUX0VRKFZlY3Rv
cjIoMC41LCAxLjApLCBWZWN0b3IyKDEuMCwgMi4wKSAvIDIpOworfQorCisvLyBUZXN0IGNvbXBv
dW5kIGFyaXRobWV0aWMgb3BlcmF0aW9ucworVEVTVChWZWN0b3JVdGlsc1Rlc3QsIENvbXBvdW5k
QXJpdGhtZXRpYykKK3sKKyAgICB7CisgICAgICAgIFZlY3RvcjIgdmVjKDEuMCwgMi4wKTsKKyAg
ICAgICAgdmVjICs9IFZlY3RvcjIoMy4wLCA0LjApOworICAgICAgICBBU1NFUlRfRVEoVmVjdG9y
Mig0LjAsIDYuMCksIHZlYyk7CisgICAgfQorICAgIHsKKyAgICAgICAgVmVjdG9yMiB2ZWMoMS4w
LCAyLjApOworICAgICAgICB2ZWMgLT0gVmVjdG9yMigzLjAsIDQuMCk7CisgICAgICAgIEFTU0VS
VF9FUShWZWN0b3IyKC0yLjAsIC0yLjApLCB2ZWMpOworICAgIH0KKyAgICB7CisgICAgICAgIFZl
Y3RvcjIgdmVjKDEuMCwgMi4wKTsKKyAgICAgICAgdmVjICo9IFZlY3RvcjIoMy4wLCA0LjApOwor
ICAgICAgICBBU1NFUlRfRVEoVmVjdG9yMigzLjAsIDguMCksIHZlYyk7CisgICAgfQorICAgIHsK
KyAgICAgICAgVmVjdG9yMiB2ZWMoMy4wLCA0LjApOworICAgICAgICB2ZWMgLz0gVmVjdG9yMigx
LjAsIDIuMCk7CisgICAgICAgIEFTU0VSVF9FUShWZWN0b3IyKDMuMCwgMi4wKSwgdmVjKTsKKyAg
ICB9CisgICAgeworICAgICAgICBWZWN0b3IyIHZlYygxLjAsIDIuMCk7CisgICAgICAgIHZlYyAq
PSAyLjA7CisgICAgICAgIEFTU0VSVF9FUShWZWN0b3IyKDIuMCwgNC4wKSwgdmVjKTsKKyAgICB9
CisgICAgeworICAgICAgICBWZWN0b3IyIHZlYygxLjAsIDIuMCk7CisgICAgICAgIHZlYyAvPSAy
LjA7CisgICAgICAgIEFTU0VSVF9FUShWZWN0b3IyKDAuNSwgMS4wKSwgdmVjKTsKKyAgICB9Cit9
CisKKy8vIFRlc3Qgb3RoZXIgYXJpdGhtZXRpYyBvcGVyYXRpb25zCitURVNUKFZlY3RvclV0aWxz
VGVzdCwgT3RoZXJBcml0aG1ldGljT3BlcmF0aW9ucykKK3sKKyAgICBWZWN0b3IyIHZlYygzLjAs
IDQuMCk7CisKKyAgICBBU1NFUlRfRVEoMjUuMCwgdmVjLmxlbmd0aFNxdWFyZWQoKSk7CisgICAg
QVNTRVJUX0VRKDUuMCwgdmVjLmxlbmd0aCgpKTsKKyAgICBBU1NFUlRfRVEoVmVjdG9yMigwLjYs
IDAuOCksIHZlYy5ub3JtYWxpemVkKCkpOworCisgICAgQVNTRVJUX0VRKDExLjAsIHZlYy5kb3Qo
VmVjdG9yMigxLjAsIDIuMCkpKTsKK30KKworLy8gVGVzdCBlbGVtZW50IHNob3J0Y3V0cworVEVT
VChWZWN0b3JVdGlsc1Rlc3QsIEVsZW1lbnRTaG9ydGN1dHMpCit7CisgICAgVmVjdG9yMiB2ZWMy
KDEuMCwgMi4wKTsKKyAgICBWZWN0b3IzIHZlYzMoMS4wLCAyLjAsIDMuMCk7CisgICAgVmVjdG9y
NCB2ZWM0KDEuMCwgMi4wLCAzLjAsIDQuMCk7CisKKyAgICBBU1NFUlRfRVEoMS4wLCB2ZWMyLngo
KSk7CisgICAgQVNTRVJUX0VRKDEuMCwgdmVjMy54KCkpOworICAgIEFTU0VSVF9FUSgxLjAsIHZl
YzQueCgpKTsKKworICAgIEFTU0VSVF9FUSgyLjAsIHZlYzIueSgpKTsKKyAgICBBU1NFUlRfRVEo
Mi4wLCB2ZWMzLnkoKSk7CisgICAgQVNTRVJUX0VRKDIuMCwgdmVjNC55KCkpOworCisgICAgQVNT
RVJUX0VRKDMuMCwgdmVjMy56KCkpOworICAgIEFTU0VSVF9FUSgzLjAsIHZlYzQueigpKTsKKwor
ICAgIEFTU0VSVF9FUSg0LjAsIHZlYzQudygpKTsKKworICAgIHZlYzIueCgpID0gMC4wOworICAg
IEFTU0VSVF9FUShWZWN0b3IyKDAuMCwgMi4wKSwgdmVjMik7Cit9CisKKy8vIFRlc3QgdGhlIGNy
b3NzIHByb2R1Y3QKK1RFU1QoVmVjdG9yVXRpbHNUZXN0LCBDcm9zc1Byb2R1Y3QpCit7CisgICAg
QVNTRVJUX0VRKFZlY3RvcjMoMC4wLCAwLjAsIDEuMCksIFZlY3RvcjMoMS4wLCAwLjAsIDAuMCku
Y3Jvc3MoVmVjdG9yMygwLjAsIDEuMCwgMC4wKSkpOworICAgIEFTU0VSVF9FUShWZWN0b3IzKC0z
LjAsIDYuMCwgLTMuMCksIFZlY3RvcjMoMS4wLCAyLjAsIDMuMCkuY3Jvc3MoVmVjdG9yMyg0LjAs
IDUuMCwgNi4wKSkpOworfQorCisvLyBUZXN0IGJhc2ljIGZ1bmN0aW9uYWxpdHkgb2YgaW50IHZl
Y3RvcnMKK1RFU1QoVmVjdG9yVXRpbHNUZXN0LCBJbnRWZWN0b3IpCit7CisgICAgVmVjdG9yMkkg
dmVjKDApOworCisgICAgaW50ICpkYXRhID0gdmVjLmRhdGEoKTsKKyAgICBkYXRhWzFdICAgPSAx
OworCisgICAgQVNTRVJUX0VRKDAsIHZlY1swXSk7CisgICAgQVNTRVJUX0VRKDEsIHZlY1sxXSk7
Cit9CisKKy8vIFRlc3QgYmFzaWMgZnVuY3Rpb25hbGl0eSBvZiBpbnQgdmVjdG9ycworVEVTVChW
ZWN0b3JVdGlsc1Rlc3QsIFVJbnRWZWN0b3IpCit7CisgICAgVmVjdG9yMlUgdmVjKDApOworCisg
ICAgdW5zaWduZWQgaW50ICpkYXRhID0gdmVjLmRhdGEoKTsKKyAgICBkYXRhWzFdICAgICAgICAg
ICAgPSAxOworCisgICAgQVNTRVJUX0VRKDB1LCB2ZWNbMF0pOworICAgIEFTU0VSVF9FUSgxdSwg
dmVjWzFdKTsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyLmd5cGkgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIuZ3lwaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MTc1ZWU3YmVlOWIuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci5neXBpCisrKyAvZGV2L251bGwKQEAgLTEsMzg3ICswLDAgQEAKLSMgQ29weXJp
Z2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLQotewot
ICAgICd2YXJpYWJsZXMnOgotICAgIHsKLSAgICAgICAgIyBUaGVzZSBmaWxlIGxpc3RzIGFyZSBz
aGFyZWQgd2l0aCB0aGUgR04gYnVpbGQuCi0gICAgICAgICdhbmdsZV90cmFuc2xhdG9yX2xpYl9z
b3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJy4uL2luY2x1ZGUvRUdML2VnbC5oJywK
LSAgICAgICAgICAgICcuLi9pbmNsdWRlL0VHTC9lZ2xleHQuaCcsCi0gICAgICAgICAgICAnLi4v
aW5jbHVkZS9FR0wvZWdscGxhdGZvcm0uaCcsCi0gICAgICAgICAgICAnLi4vaW5jbHVkZS9HTEVT
Mi9nbDIuaCcsCi0gICAgICAgICAgICAnLi4vaW5jbHVkZS9HTEVTMi9nbDJleHQuaCcsCi0gICAg
ICAgICAgICAnLi4vaW5jbHVkZS9HTEVTMi9nbDJwbGF0Zm9ybS5oJywKLSAgICAgICAgICAgICcu
Li9pbmNsdWRlL0dMRVMzL2dsMy5oJywKLSAgICAgICAgICAgICcuLi9pbmNsdWRlL0dMRVMzL2ds
M3BsYXRmb3JtLmgnLAotICAgICAgICAgICAgJy4uL2luY2x1ZGUvR0xFUzMvZ2wzMS5oJywKLSAg
ICAgICAgICAgICcuLi9pbmNsdWRlL0dMRVMzL2dsMzIuaCcsCi0gICAgICAgICAgICAnLi4vaW5j
bHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaCcsCi0gICAgICAgICAgICAnLi4vaW5jbHVkZS9HTFNM
QU5HL1NoYWRlclZhcnMuaCcsCi0gICAgICAgICAgICAnLi4vaW5jbHVkZS9LSFIva2hycGxhdGZv
cm0uaCcsCi0gICAgICAgICAgICAnLi4vaW5jbHVkZS9hbmdsZV9nbC5oJywKLSAgICAgICAgICAg
ICdjb21waWxlci90cmFuc2xhdG9yL0FkZEFuZFRydWVUb0xvb3BDb25kaXRpb24uY3BwJywKLSAg
ICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0FkZEFuZFRydWVUb0xvb3BDb25kaXRpb24u
aCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9CYXNlVHlwZXMuaCcsCi0gICAg
ICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAn
LAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3IuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9CcmVha1ZhcmlhYmxlQWxp
YXNpbmdJbklubmVyTG9vcHMuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9y
L0JyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5oJywKLSAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL0NhY2hlLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNs
YXRvci9DYWNoZS5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0NhbGxEQUcu
Y3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0NhbGxEQUcuaCcsCi0gICAg
ICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9Db2RlR2VuLmNwcCcsCi0gICAgICAgICAgICAn
Y29tcGlsZXIvdHJhbnNsYXRvci9Db21tb24uaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJh
bnNsYXRvci9Db21waWxlci5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3Iv
Q29tcGlsZXIuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9Db25zdGFudFVu
aW9uLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9Db25zdGFudFVuaW9u
LmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvRGVmZXJHbG9iYWxJbml0aWFs
aXplcnMuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0RlZmVyR2xvYmFs
SW5pdGlhbGl6ZXJzLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlhZ25v
c3RpY3MuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0aWNz
LmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlyZWN0aXZlSGFuZGxlci5j
cHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlyZWN0aXZlSGFuZGxlci5o
JywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVHTEZyYWdDb2xvckJy
b2FkY2FzdC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0ZUdM
RnJhZ0NvbG9yQnJvYWRjYXN0LmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3Iv
RW11bGF0ZVByZWNpc2lvbi5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3Iv
RW11bGF0ZVByZWNpc2lvbi5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0V4
cGFuZEludGVnZXJQb3dFeHByZXNzaW9ucy5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3Ry
YW5zbGF0b3IvRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmgnLAotICAgICAgICAgICAgJ2Nv
bXBpbGVyL3RyYW5zbGF0b3IvRXh0ZW5zaW9uQmVoYXZpb3IuaCcsCi0gICAgICAgICAgICAnY29t
cGlsZXIvdHJhbnNsYXRvci9GbGFnU3RkMTQwU3RydWN0cy5jcHAnLAotICAgICAgICAgICAgJ2Nv
bXBpbGVyL3RyYW5zbGF0b3IvRmxhZ1N0ZDE0MFN0cnVjdHMuaCcsCi0gICAgICAgICAgICAnY29t
cGlsZXIvdHJhbnNsYXRvci9Gb3JMb29wVW5yb2xsLmNwcCcsCi0gICAgICAgICAgICAnY29tcGls
ZXIvdHJhbnNsYXRvci9Gb3JMb29wVW5yb2xsLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3Ry
YW5zbGF0b3IvSGFzaE5hbWVzLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3Iv
SW5mb1NpbmsuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5r
LmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZS5jcHAnLAot
ICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZS5oJywKLSAgICAgICAg
ICAgICdjb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVEbGwuY3BwJywKLSAgICAgICAgICAg
ICdjb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVEbGwuaCcsCi0gICAgICAgICAgICAnY29t
cGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplR2xvYmFscy5oJywKLSAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVQYXJzZUNvbnRleHQuY3BwJywKLSAgICAgICAgICAg
ICdjb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVQYXJzZUNvbnRleHQuaCcsCi0gICAgICAg
ICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplVmFyaWFibGVzLmNwcCcsCi0gICAg
ICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplVmFyaWFibGVzLmgnLAotICAg
ICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oJywKLSAgICAgICAgICAg
ICdjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuY3BwJywKLSAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL0ludGVybVRyYXZlcnNlLmNwcCcsCi0gICAgICAgICAgICAnY29tcGls
ZXIvdHJhbnNsYXRvci9JbnRlcm1lZGlhdGUuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJh
bnNsYXRvci9JbnRlcm1lZGlhdGUuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xh
dG9yL0xvb3BJbmZvLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9Mb29w
SW5mby5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL01NYXAuaCcsCi0gICAg
ICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9Ob2RlU2VhcmNoLmgnLAotICAgICAgICAgICAg
J2NvbXBpbGVyL3RyYW5zbGF0b3IvT3BlcmF0b3IuY3BwJywKLSAgICAgICAgICAgICdjb21waWxl
ci90cmFuc2xhdG9yL09wZXJhdG9yLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0
b3IvUGFyc2VDb250ZXh0LmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9Q
YXJzZUNvbnRleHQuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9Qb29sQWxs
b2MuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1Bvb2xBbGxvYy5oJywK
LSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1ByYWdtYS5oJywKLSAgICAgICAgICAg
ICdjb21waWxlci90cmFuc2xhdG9yL1BydW5lRW1wdHlEZWNsYXJhdGlvbnMuY3BwJywKLSAgICAg
ICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1BydW5lRW1wdHlEZWNsYXJhdGlvbnMuaCcsCi0g
ICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9RdWFsaWZpZXJUeXBlcy5oJywKLSAgICAg
ICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1F1YWxpZmllclR5cGVzLmNwcCcsCi0gICAgICAg
ICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9SZWNvcmRDb25zdGFudFByZWNpc2lvbi5jcHAnLAot
ICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24u
aCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9SZWdlbmVyYXRlU3RydWN0TmFt
ZXMuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1JlZ2VuZXJhdGVTdHJ1
Y3ROYW1lcy5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1JlbW92ZVBvdy5j
cHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlUG93LmgnLAotICAg
ICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZURvV2hpbGUuY3BwJywKLSAgICAg
ICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVEb1doaWxlLmgnLAotICAgICAgICAg
ICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuY3BwJywKLSAg
ICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVUZXhlbEZldGNoT2Zmc2V0Lmgn
LAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5TWludXNPcGVy
YXRvckludC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVu
YXJ5TWludXNPcGVyYXRvckludC5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9y
L1NjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5jcHAnLAotICAgICAgICAgICAgJ2Nv
bXBpbGVyL3RyYW5zbGF0b3IvU2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzLmgnLAot
ICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VhcmNoU3ltYm9sLmNwcCcsCi0gICAg
ICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9TZWFyY2hTeW1ib2wuaCcsCi0gICAgICAgICAg
ICAnY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5jcHAnLAotICAgICAgICAgICAgJ2Nv
bXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFibGUuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIv
dHJhbnNsYXRvci9UeXBlcy5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VHlwZXMuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENp
cmN1aXRBU1QuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNo
b3J0Q2lyY3VpdEFTVC5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1VzZUlu
dGVyZmFjZUJsb2NrRmllbGRzLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRv
ci9Vc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcy5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFu
c2xhdG9yL1ZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIuY3BwJywKLSAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIuaCcsCi0gICAgICAgICAg
ICAnY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUxpbWl0YXRpb25zLmNwcCcsCi0gICAgICAg
ICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUxpbWl0YXRpb25zLmgnLAotICAgICAg
ICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmgnLAotICAg
ICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmNwcCcs
Ci0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU91dHB1dHMuY3BwJywK
LSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlT3V0cHV0cy5oJywKLSAg
ICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlU3dpdGNoLmNwcCcsCi0gICAg
ICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZVN3aXRjaC5oJywKLSAgICAgICAg
ICAgICdjb21waWxlci90cmFuc2xhdG9yL1ZhcmlhYmxlSW5mby5jcHAnLAotICAgICAgICAgICAg
J2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVJbmZvLmgnLAotICAgICAgICAgICAgJ2NvbXBp
bGVyL3RyYW5zbGF0b3IvVmFyaWFibGVQYWNrZXIuY3BwJywKLSAgICAgICAgICAgICdjb21waWxl
ci90cmFuc2xhdG9yL1ZhcmlhYmxlUGFja2VyLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3Ry
YW5zbGF0b3IvYmxvY2tsYXlvdXQuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xh
dG9yL2Jsb2NrbGF5b3V0LmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xz
bGFuZy5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmcubCcsCi0g
ICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nLnknLAotICAgICAgICAgICAg
J2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ19sZXguY3BwJywKLSAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL2dsc2xhbmdfdGFiLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIv
dHJhbnNsYXRvci9nbHNsYW5nX3RhYi5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xh
dG9yL2ludGVybU91dC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvbGVu
Z3RoX2xpbWl0cy5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL3V0aWwuY3Bw
JywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL3V0aWwuaCcsCi0gICAgICAgICAg
ICAndGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmNwcCcsCi0gICAgICAg
ICAgICAndGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmgnLAotICAgICAg
ICBdLAotICAgICAgICAnYW5nbGVfdHJhbnNsYXRvcl9saWJfZXNzbF9zb3VyY2VzJzoKLSAgICAg
ICAgWwotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0RVNTTC5jcHAnLAot
ICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0RVNTTC5oJywKLSAgICAgICAg
ICAgICdjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NMLmNwcCcsCi0gICAgICAgICAg
ICAnY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5oJywKLSAgICAgICAgXSwKLSAg
ICAgICAgJ2FuZ2xlX3RyYW5zbGF0b3JfbGliX2dsc2xfc291cmNlcyc6Ci0gICAgICAgIFsKLSAg
ICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yR0xT
TC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9u
RW11bGF0b3JHTFNMLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvRXh0ZW5z
aW9uR0xTTC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvRXh0ZW5zaW9u
R0xTTC5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0wuY3Bw
JywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0wuaCcsCi0gICAg
ICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMQmFzZS5jcHAnLAotICAgICAg
ICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0R0xTTEJhc2UuaCcsCi0gICAgICAgICAg
ICAnY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yR0xTTC5jcHAnLAotICAgICAgICAgICAg
J2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckdMU0wuaCcsCi0gICAgICAgICAgICAnY29t
cGlsZXIvdHJhbnNsYXRvci9WZXJzaW9uR0xTTC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVy
L3RyYW5zbGF0b3IvVmVyc2lvbkdMU0wuaCcsCi0gICAgICAgIF0sCi0gICAgICAgICdhbmdsZV90
cmFuc2xhdG9yX2xpYl9obHNsX3NvdXJjZXMnOgotICAgICAgICBbCi0gICAgICAgICAgICAnY29t
cGlsZXIvdHJhbnNsYXRvci9BZGREZWZhdWx0UmV0dXJuU3RhdGVtZW50cy5jcHAnLAotICAgICAg
ICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvQWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMuaCcs
Ci0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9BcnJheVJldHVyblZhbHVlVG9PdXRQ
YXJhbWV0ZXIuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL0FycmF5UmV0
dXJuVmFsdWVUb091dFBhcmFtZXRlci5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xh
dG9yL0FTVE1ldGFkYXRhSExTTC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0
b3IvQVNUTWV0YWRhdGFITFNMLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3Iv
YmxvY2tsYXlvdXRITFNMLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9i
bG9ja2xheW91dEhMU0wuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9CdWls
dEluRnVuY3Rpb25FbXVsYXRvckhMU0wuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFu
c2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9ySExTTC5oJywKLSAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL0ludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5jcHAnLAotICAgICAgICAg
ICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyLmgnLAotICAg
ICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5jcHAnLAotICAgICAgICAg
ICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5oJywKLSAgICAgICAgICAgICdjb21w
aWxlci90cmFuc2xhdG9yL1JlbW92ZUR5bmFtaWNJbmRleGluZy5jcHAnLAotICAgICAgICAgICAg
J2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlRHluYW1pY0luZGV4aW5nLmgnLAotICAgICAgICAg
ICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlU3dpdGNoRmFsbFRocm91Z2guY3BwJywKLSAg
ICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1JlbW92ZVN3aXRjaEZhbGxUaHJvdWdoLmgn
LAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZUVsc2VCbG9ja3MuY3Bw
JywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVFbHNlQmxvY2tzLmgn
LAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVBcnJheUluaXRpYWxp
emF0aW9uLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZUFy
cmF5SW5pdGlhbGl6YXRpb24uaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9T
ZXBhcmF0ZURlY2xhcmF0aW9ucy5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0
b3IvU2VwYXJhdGVEZWNsYXJhdGlvbnMuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNs
YXRvci9TZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzLmNwcCcsCi0gICAgICAgICAg
ICAnY29tcGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlz
LmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvU2ltcGxpZnlMb29wQ29uZGl0
aW9ucy5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvU2ltcGxpZnlMb29w
Q29uZGl0aW9ucy5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1NwbGl0U2Vx
dWVuY2VPcGVyYXRvci5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvU3Bs
aXRTZXF1ZW5jZU9wZXJhdG9yLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3Iv
U3RydWN0dXJlSExTTC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvU3Ry
dWN0dXJlSExTTC5oJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1RleHR1cmVG
dW5jdGlvbkhMU0wuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1RleHR1
cmVGdW5jdGlvbkhMU0wuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9UcmFu
c2xhdG9ySExTTC5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNs
YXRvckhMU0wuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9y
dENpcmN1aXRUb0lmLmNwcCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9VbmZv
bGRTaG9ydENpcmN1aXRUb0lmLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VW5pZm9ybUhMU0wuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci90cmFuc2xhdG9yL1VuaWZv
cm1ITFNMLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5zbGF0b3IvVXRpbHNITFNMLmNw
cCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvdHJhbnNsYXRvci9VdGlsc0hMU0wuaCcsCi0gICAg
ICAgIF0sCi0gICAgICAgICdhbmdsZV9wcmVwcm9jZXNzb3Jfc291cmNlcyc6Ci0gICAgICAgIFsK
LSAgICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmNwcCcs
Ci0gICAgICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpYWdub3N0aWNzQmFzZS5oJywK
LSAgICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlSGFuZGxlckJhc2Uu
Y3BwJywKLSAgICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlSGFuZGxl
ckJhc2UuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZVBh
cnNlci5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVQ
YXJzZXIuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25Q
YXJzZXIuY3BwJywKLSAgICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lv
blBhcnNlci5oJywKLSAgICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lv
blBhcnNlci55JywKLSAgICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuY3Bw
JywKLSAgICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuaCcsCi0gICAgICAg
ICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29yL0xleGVyLmNwcCcsCi0gICAgICAgICAgICAnY29t
cGlsZXIvcHJlcHJvY2Vzc29yL0xleGVyLmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9NYWNyby5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9N
YWNyby5oJywKLSAgICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm9FeHBhbmRl
ci5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVy
LmgnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuY3Bw
JywKLSAgICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmgnLAot
ICAgICAgICAgICAgJ2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Tb3VyY2VMb2NhdGlvbi5oJywKLSAg
ICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uY3BwJywKLSAgICAgICAgICAg
ICdjb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIv
cHJlcHJvY2Vzc29yL1Rva2VuaXplci5jcHAnLAotICAgICAgICAgICAgJ2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9Ub2tlbml6ZXIuaCcsCi0gICAgICAgICAgICAnY29tcGlsZXIvcHJlcHJvY2Vzc29y
L1Rva2VuaXplci5sJywKLSAgICAgICAgICAgICdjb21waWxlci9wcmVwcm9jZXNzb3IvbnVtZXJp
Y19sZXguaCcsCi0gICAgICAgIF0sCi0gICAgfSwKLSAgICAjIEV2ZXJ5dGhpbmcgYmVsb3cgdGhp
cyBpcyBkdXBsaWNhdGVkIGluIHRoZSBHTiBidWlsZC4gSWYgeW91IGNoYW5nZQotICAgICMgYW55
dGhpbmcgYWxzbyBjaGFuZ2UgYW5nbGUvQlVJTEQuZ24KLSAgICAndGFyZ2V0cyc6Ci0gICAgWwot
ICAgICAgICB7Ci0gICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAncHJlcHJvY2Vzc29yJywKLSAg
ICAgICAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKLSAgICAgICAgICAgICdkZXBlbmRl
bmNpZXMnOiBbICdhbmdsZV9jb21tb24nIF0sCi0gICAgICAgICAgICAnaW5jbHVkZXMnOiBbICcu
Li9idWlsZC9jb21tb25fZGVmaW5lcy5neXBpJywgXSwKLSAgICAgICAgICAgICdzb3VyY2VzJzog
WyAnPEAoYW5nbGVfcHJlcHJvY2Vzc29yX3NvdXJjZXMpJywgXSwKLSAgICAgICAgfSwKLSAgICAg
ICAgewotICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ3RyYW5zbGF0b3JfbGliJywKLSAgICAg
ICAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKLSAgICAgICAgICAgICdkZXBlbmRlbmNp
ZXMnOiBbICdwcmVwcm9jZXNzb3InLCAnYW5nbGVfY29tbW9uJyBdLAotICAgICAgICAgICAgJ2lu
Y2x1ZGVzJzogWyAnLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScsIF0sCi0gICAgICAgICAg
ICAnaW5jbHVkZV9kaXJzJzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAnLicsCi0g
ICAgICAgICAgICAgICAgJy4uL2luY2x1ZGUnLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAg
ICdkZWZpbmVzJzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAjIGRlZmluZSB0aGUg
c3RhdGljIHRyYW5zbGF0b3IgdG8gaW5kaWNhdGUgZXhwb3J0ZWQKLSAgICAgICAgICAgICAgICAj
IGNsYXNzZXMgYXJlIChpbiBmYWN0KSBsb2NhbGx5IGRlZmluZWQKLSAgICAgICAgICAgICAgICAn
QU5HTEVfVFJBTlNMQVRPUl9TVEFUSUMnLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdz
b3VyY2VzJzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAnPEAoYW5nbGVfdHJhbnNs
YXRvcl9saWJfc291cmNlcyknLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdtc3ZzX3Nl
dHRpbmdzJzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgJ1ZDTGlicmFyaWFuVG9vbCc6
Ci0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnQWRkaXRpb25hbE9wdGlvbnMnOiBb
Jy9pZ25vcmU6NDIyMSddCi0gICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9LAotICAgICAg
ICAgICAgJ2NvbmRpdGlvbnMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgIFsnYW5n
bGVfZW5hYmxlX2Vzc2w9PTEnLAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgJ2RlZmluZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAg
ICAgICAnQU5HTEVfRU5BQkxFX0VTU0wnLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAg
ICAgICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6Ci0gICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVfRU5BQkxF
X0VTU0wnLAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAgICAgICAgICAgICAgICBb
Ci0gICAgICAgICAgICAgICAgICAgICAgICAnPEAoYW5nbGVfdHJhbnNsYXRvcl9saWJfZXNzbF9z
b3VyY2VzKScsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfV0sCi0g
ICAgICAgICAgICAgICAgWydhbmdsZV9lbmFibGVfZ2xzbD09MScsCi0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsK
LSAgICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9FTkFCTEVfR0xTTCcsCi0gICAgICAgICAg
ICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdkaXJlY3RfZGVwZW5kZW50X3NldHRp
bmdzJzoKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2Rl
ZmluZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdBTkdMRV9FTkFCTEVfR0xTTCcsCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAot
ICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6Ci0g
ICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8QChhbmdsZV90
cmFuc2xhdG9yX2xpYl9nbHNsX3NvdXJjZXMpJywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICBbJ2FuZ2xlX2VuYWJsZV9obHNsPT0x
JywKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKLSAg
ICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJ0FOR0xFX0VOQUJM
RV9ITFNMJywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2Rp
cmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnOgotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBbCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FOR0xFX0VOQUJMRV9ITFNMJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAg
ICAgICAgICAgJzxAKGFuZ2xlX3RyYW5zbGF0b3JfbGliX2hsc2xfc291cmNlcyknLAotICAgICAg
ICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgXSwKLSAg
ICAgICAgfSwKLQotICAgICAgICB7Ci0gICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAndHJhbnNs
YXRvcicsCi0gICAgICAgICAgICAndHlwZSc6ICc8KGNvbXBvbmVudCknLAotICAgICAgICAgICAg
J2RlcGVuZGVuY2llcyc6IFsgJ3RyYW5zbGF0b3JfbGliJywgJ2FuZ2xlX2NvbW1vbicgXSwKLSAg
ICAgICAgICAgICdpbmNsdWRlcyc6IFsgJy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLCBd
LAotICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAg
ICAgICAgJy4nLAotICAgICAgICAgICAgICAgICcuLi9pbmNsdWRlJywKLSAgICAgICAgICAgIF0s
Ci0gICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAg
J0FOR0xFX1RSQU5TTEFUT1JfSU1QTEVNRU5UQVRJT04nLAotICAgICAgICAgICAgXSwKLSAgICAg
ICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAnY29tcGls
ZXIvdHJhbnNsYXRvci9TaGFkZXJMYW5nLmNwcCcsCi0gICAgICAgICAgICAgICAgJ2NvbXBpbGVy
L3RyYW5zbGF0b3IvU2hhZGVyVmFycy5jcHAnCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAot
Ci0gICAgICAgIHsKLSAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICd0cmFuc2xhdG9yX3N0YXRp
YycsCi0gICAgICAgICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCi0gICAgICAgICAgICAn
ZGVwZW5kZW5jaWVzJzogWyAndHJhbnNsYXRvcl9saWInIF0sCi0gICAgICAgICAgICAnaW5jbHVk
ZXMnOiBbICcuLi9idWlsZC9jb21tb25fZGVmaW5lcy5neXBpJywgXSwKLSAgICAgICAgICAgICdp
bmNsdWRlX2RpcnMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICcuJywKLSAgICAg
ICAgICAgICAgICAnLi4vaW5jbHVkZScsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2Rl
ZmluZXMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICdBTkdMRV9UUkFOU0xBVE9S
X1NUQVRJQycsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRf
c2V0dGluZ3MnOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKLSAg
ICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICdBTkdMRV9UUkFOU0xBVE9SX1NU
QVRJQycsCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAn
c291cmNlcyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgJ2NvbXBpbGVyL3RyYW5z
bGF0b3IvU2hhZGVyTGFuZy5jcHAnLAotICAgICAgICAgICAgICAgICdjb21waWxlci90cmFuc2xh
dG9yL1NoYWRlclZhcnMuY3BwJwotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICBdLAot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2Z1enov
dHJhbnNsYXRvcl9mdXp6ZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL2Z1enovdHJhbnNsYXRvcl9mdXp6ZXIuY3BwCmluZGV4IDUxODU1MjI1NTBlLi5kY2MwNTYy
MzVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2Z1
enovdHJhbnNsYXRvcl9mdXp6ZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9mdXp6L3RyYW5zbGF0b3JfZnV6emVyLmNwcApAQCAtNiwxMyArNiwxNiBAQAog
CiAvLyB0cmFuc2xhdG9yX2Z1enplci5jcHA6IEEgbGliZnV6emVyIGZ1enplciBmb3IgdGhlIHNo
YWRlciB0cmFuc2xhdG9yLgogCi0jaW5jbHVkZSA8c3RkZGVmLmg+Ci0jaW5jbHVkZSA8c3RkaW50
Lmg+Ci0jaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KKyNpbmNsdWRlIDxjc3RkZGVmPgorI2luY2x1
ZGUgPGNzdGRpbnQ+CiAjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8bWVtb3J5PgorI2lu
Y2x1ZGUgPHVub3JkZXJlZF9tYXA+CiAKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0Nv
bXBpbGVyLmgiCiAjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL0NvbXBpbGVyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzaDsKIAogc3RydWN0IFRyYW5z
bGF0b3JDYWNoZUtleQogewpAQCAtNDAsNyArNDMsMTQgQEAgc3RydWN0IGhhc2g8VHJhbnNsYXRv
ckNhY2hlS2V5PgogfTsKIH0gIC8vIG5hbWVzcGFjZSBzdGQKIAotc3RhdGljIHN0ZDo6dW5vcmRl
cmVkX21hcDxUcmFuc2xhdG9yQ2FjaGVLZXksIFRDb21waWxlciAqPiB0cmFuc2xhdG9yczsKK3N0
cnVjdCBUQ29tcGlsZXJEZWxldGVyCit7CisgICAgdm9pZCBvcGVyYXRvcigpKFRDb21waWxlciAq
Y29tcGlsZXIpIGNvbnN0IHsgRGVsZXRlQ29tcGlsZXIoY29tcGlsZXIpOyB9Cit9OworCit1c2lu
ZyBVbmlxdWVUQ29tcGlsZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VENvbXBpbGVyLCBUQ29tcGlsZXJE
ZWxldGVyPjsKKworc3RhdGljIHN0ZDo6dW5vcmRlcmVkX21hcDxUcmFuc2xhdG9yQ2FjaGVLZXks
IFVuaXF1ZVRDb21waWxlcj4gdHJhbnNsYXRvcnM7CiAKIGV4dGVybiAiQyIgaW50IExMVk1GdXp6
ZXJUZXN0T25lSW5wdXQoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpCiB7CkBAIC04
Nyw5ICs5Nyw2IEBAIGV4dGVybiAiQyIgaW50IExMVk1GdXp6ZXJUZXN0T25lSW5wdXQoY29uc3Qg
dWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgdmFsaWRPdXRwdXRzLnB1c2hfYmFjayhT
SF9HTFNMXzQzMF9DT1JFX09VVFBVVCk7CiAgICAgdmFsaWRPdXRwdXRzLnB1c2hfYmFjayhTSF9H
TFNMXzQ0MF9DT1JFX09VVFBVVCk7CiAgICAgdmFsaWRPdXRwdXRzLnB1c2hfYmFjayhTSF9HTFNM
XzQ1MF9DT1JFX09VVFBVVCk7Ci0gICAgdmFsaWRPdXRwdXRzLnB1c2hfYmFjayhTSF9ITFNMX09V
VFBVVCk7Ci0gICAgdmFsaWRPdXRwdXRzLnB1c2hfYmFjayhTSF9ITFNMOV9PVVRQVVQpOwotICAg
IHZhbGlkT3V0cHV0cy5wdXNoX2JhY2soU0hfSExTTDExX09VVFBVVCk7CiAgICAgdmFsaWRPdXRw
dXRzLnB1c2hfYmFjayhTSF9ITFNMXzNfMF9PVVRQVVQpOwogICAgIHZhbGlkT3V0cHV0cy5wdXNo
X2JhY2soU0hfSExTTF80XzFfT1VUUFVUKTsKICAgICB2YWxpZE91dHB1dHMucHVzaF9iYWNrKFNI
X0hMU0xfNF8wX0ZMOV8zX09VVFBVVCk7CkBAIC0xMDYsNyArMTEzLDcgQEAgZXh0ZXJuICJDIiBp
bnQgTExWTUZ1enplclRlc3RPbmVJbnB1dChjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6
ZSkKICAgICBzaXplIC09IGtIZWFkZXJTaXplOwogICAgIGRhdGEgKz0ga0hlYWRlclNpemU7CiAK
LSAgICBpZiAoIVNoSW5pdGlhbGl6ZSgpKQorICAgIGlmICghc2g6OkluaXRpYWxpemUoKSkKICAg
ICB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTExOCwxNiArMTI1LDE2IEBAIGV4dGVy
biAiQyIgaW50IExMVk1GdXp6ZXJUZXN0T25lSW5wdXQoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6
ZV90IHNpemUpCiAKICAgICBpZiAodHJhbnNsYXRvcnMuZmluZChrZXkpID09IHRyYW5zbGF0b3Jz
LmVuZCgpKQogICAgIHsKLSAgICAgICAgVENvbXBpbGVyICp0cmFuc2xhdG9yID0gQ29uc3RydWN0
Q29tcGlsZXIodHlwZSwgc3RhdGljX2Nhc3Q8U2hTaGFkZXJTcGVjPihzcGVjKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8U2hT
aGFkZXJPdXRwdXQ+KG91dHB1dCkpOworICAgICAgICBVbmlxdWVUQ29tcGlsZXIgdHJhbnNsYXRv
cihDb25zdHJ1Y3RDb21waWxlcih0eXBlLCBzdGF0aWNfY2FzdDxTaFNoYWRlclNwZWM+KHNwZWMp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxTaFNoYWRlck91dHB1dD4ob3V0cHV0KSkpOwogCi0gICAgICAgIGlmICghdHJh
bnNsYXRvcikKKyAgICAgICAgaWYgKHRyYW5zbGF0b3IgPT0gbnVsbHB0cikKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIAogICAgICAgICBTaEJ1aWx0SW5SZXNv
dXJjZXMgcmVzb3VyY2VzOwotICAgICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZyZXNvdXJj
ZXMpOworICAgICAgICBzaDo6SW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7CiAKICAg
ICAgICAgLy8gRW5hYmxlIGFsbCB0aGUgZXh0ZW5zaW9ucyB0byBoYXZlIG1vcmUgY292ZXJhZ2UK
ICAgICAgICAgcmVzb3VyY2VzLk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyAgICAgICAgPSAxOwpA
QCAtMTQzLDE3ICsxNTAsMTggQEAgZXh0ZXJuICJDIiBpbnQgTExWTUZ1enplclRlc3RPbmVJbnB1
dChjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSkKICAgICAgICAgcmVzb3VyY2VzLkVY
VF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2ggICAgPSAxOwogICAgICAgICByZXNvdXJjZXMuTlZf
c2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoICAgICA9IDE7CiAgICAgICAgIHJlc291cmNlcy5BUk1f
c2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoICAgID0gMTsKKyAgICAgICAgcmVzb3VyY2VzLkVYVF9Z
VVZfdGFyZ2V0ICAgICAgICAgICAgICAgICAgPSAxOworICAgICAgICByZXNvdXJjZXMuTWF4RHVh
bFNvdXJjZURyYXdCdWZmZXJzICAgICAgICA9IDE7CiAKICAgICAgICAgaWYgKCF0cmFuc2xhdG9y
LT5Jbml0KHJlc291cmNlcykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIERlbGV0ZUNvbXBpbGVy
KHRyYW5zbGF0b3IpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KIAotICAgICAg
ICB0cmFuc2xhdG9yc1trZXldID0gdHJhbnNsYXRvcjsKKyAgICAgICAgdHJhbnNsYXRvcnNba2V5
XSA9IHN0ZDo6bW92ZSh0cmFuc2xhdG9yKTsKICAgICB9CiAKLSAgICBUQ29tcGlsZXIgKnRyYW5z
bGF0b3IgPSB0cmFuc2xhdG9yc1trZXldOworICAgIGF1dG8gJnRyYW5zbGF0b3IgPSB0cmFuc2xh
dG9yc1trZXldOwogCiAgICAgY29uc3QgY2hhciAqc2hhZGVyU3RyaW5nc1tdID0ge3JlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihkYXRhKX07CiAgICAgdHJhbnNsYXRvci0+Y29tcGlsZShz
aGFkZXJTdHJpbmdzLCAxLCBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3Rp
Y3NCYXNlLmNwcAppbmRleCBmY2IyNGU0ZThkOC4uMWI5NTc1YmIzNmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3Rp
Y3NCYXNlLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJl
cHJvY2Vzc29yL0RpYWdub3N0aWNzQmFzZS5jcHAKQEAgLTE1LDEyNiArMTUsMTI2IEBAIERpYWdu
b3N0aWNzOjp+RGlhZ25vc3RpY3MoKQogewogfQogCi12b2lkIERpYWdub3N0aWNzOjpyZXBvcnQo
SUQgaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU291cmNlTG9jYXRpb24gJmxv
YywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdGV4dCkKK3Zv
aWQgRGlhZ25vc3RpY3M6OnJlcG9ydChJRCBpZCwgY29uc3QgU291cmNlTG9jYXRpb24gJmxvYywg
Y29uc3Qgc3RkOjpzdHJpbmcgJnRleHQpCiB7Ci0gICAgLy8gVE9ETyhhbG9rcCk6IEtlZXAgYSBj
b3VudCBvZiBlcnJvcnMgYW5kIHdhcm5pbmdzLgogICAgIHByaW50KGlkLCBsb2MsIHRleHQpOwog
fQogCi1EaWFnbm9zdGljczo6U2V2ZXJpdHkgRGlhZ25vc3RpY3M6OnNldmVyaXR5KElEIGlkKQor
Ym9vbCBEaWFnbm9zdGljczo6aXNFcnJvcihJRCBpZCkKIHsKICAgICBpZiAoKGlkID4gUFBfRVJS
T1JfQkVHSU4pICYmIChpZCA8IFBQX0VSUk9SX0VORCkpCi0gICAgICAgIHJldHVybiBQUF9FUlJP
UjsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoKGlkID4gUFBfV0FSTklOR19CRUdJ
TikgJiYgKGlkIDwgUFBfV0FSTklOR19FTkQpKQotICAgICAgICByZXR1cm4gUFBfV0FSTklORzsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICByZXR1cm4g
UFBfRVJST1I7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0ZDo6c3RyaW5nIERpYWdub3N0aWNz
OjptZXNzYWdlKElEIGlkKQorY29uc3QgY2hhciAqRGlhZ25vc3RpY3M6Om1lc3NhZ2UoSUQgaWQp
CiB7CiAgICAgc3dpdGNoIChpZCkKICAgICB7Ci0gICAgICAvLyBFcnJvcnMgYmVnaW4uCi0gICAg
ICBjYXNlIFBQX0lOVEVSTkFMX0VSUk9SOgotICAgICAgICByZXR1cm4gImludGVybmFsIGVycm9y
IjsKLSAgICAgIGNhc2UgUFBfT1VUX09GX01FTU9SWToKLSAgICAgICAgcmV0dXJuICJvdXQgb2Yg
bWVtb3J5IjsKLSAgICAgIGNhc2UgUFBfSU5WQUxJRF9DSEFSQUNURVI6Ci0gICAgICAgIHJldHVy
biAiaW52YWxpZCBjaGFyYWN0ZXIiOwotICAgICAgY2FzZSBQUF9JTlZBTElEX05VTUJFUjoKLSAg
ICAgICAgcmV0dXJuICJpbnZhbGlkIG51bWJlciI7Ci0gICAgICBjYXNlIFBQX0lOVEVHRVJfT1ZF
UkZMT1c6Ci0gICAgICAgIHJldHVybiAiaW50ZWdlciBvdmVyZmxvdyI7Ci0gICAgICBjYXNlIFBQ
X0ZMT0FUX09WRVJGTE9XOgotICAgICAgICByZXR1cm4gImZsb2F0IG92ZXJmbG93IjsKLSAgICAg
IGNhc2UgUFBfVE9LRU5fVE9PX0xPTkc6Ci0gICAgICAgIHJldHVybiAidG9rZW4gdG9vIGxvbmci
OwotICAgICAgY2FzZSBQUF9JTlZBTElEX0VYUFJFU1NJT046Ci0gICAgICAgIHJldHVybiAiaW52
YWxpZCBleHByZXNzaW9uIjsKLSAgICAgIGNhc2UgUFBfRElWSVNJT05fQllfWkVSTzoKLSAgICAg
ICAgcmV0dXJuICJkaXZpc2lvbiBieSB6ZXJvIjsKLSAgICAgIGNhc2UgUFBfRU9GX0lOX0NPTU1F
TlQ6Ci0gICAgICAgIHJldHVybiAidW5leHBlY3RlZCBlbmQgb2YgZmlsZSBmb3VuZCBpbiBjb21t
ZW50IjsKLSAgICAgIGNhc2UgUFBfVU5FWFBFQ1RFRF9UT0tFTjoKLSAgICAgICAgcmV0dXJuICJ1
bmV4cGVjdGVkIHRva2VuIjsKLSAgICAgIGNhc2UgUFBfRElSRUNUSVZFX0lOVkFMSURfTkFNRToK
LSAgICAgICAgcmV0dXJuICJpbnZhbGlkIGRpcmVjdGl2ZSBuYW1lIjsKLSAgICAgIGNhc2UgUFBf
TUFDUk9fTkFNRV9SRVNFUlZFRDoKLSAgICAgICAgcmV0dXJuICJtYWNybyBuYW1lIGlzIHJlc2Vy
dmVkIjsKLSAgICAgIGNhc2UgUFBfTUFDUk9fUkVERUZJTkVEOgotICAgICAgICByZXR1cm4gIm1h
Y3JvIHJlZGVmaW5lZCI7Ci0gICAgICBjYXNlIFBQX01BQ1JPX1BSRURFRklORURfUkVERUZJTkVE
OgotICAgICAgICByZXR1cm4gInByZWRlZmluZWQgbWFjcm8gcmVkZWZpbmVkIjsKLSAgICAgIGNh
c2UgUFBfTUFDUk9fUFJFREVGSU5FRF9VTkRFRklORUQ6Ci0gICAgICAgIHJldHVybiAicHJlZGVm
aW5lZCBtYWNybyB1bmRlZmluZWQiOwotICAgICAgY2FzZSBQUF9NQUNST19VTlRFUk1JTkFURURf
SU5WT0NBVElPTjoKLSAgICAgICAgcmV0dXJuICJ1bnRlcm1pbmF0ZWQgbWFjcm8gaW52b2NhdGlv
biI7Ci0gICAgICBjYXNlIFBQX01BQ1JPX1VOREVGSU5FRF9XSElMRV9JTlZPS0VEOgotICAgICAg
ICAgIHJldHVybiAibWFjcm8gdW5kZWZpbmVkIHdoaWxlIGJlaW5nIGludm9rZWQiOwotICAgICAg
Y2FzZSBQUF9NQUNST19UT09fRkVXX0FSR1M6Ci0gICAgICAgIHJldHVybiAiTm90IGVub3VnaCBh
cmd1bWVudHMgZm9yIG1hY3JvIjsKLSAgICAgIGNhc2UgUFBfTUFDUk9fVE9PX01BTllfQVJHUzoK
LSAgICAgICAgcmV0dXJuICJUb28gbWFueSBhcmd1bWVudHMgZm9yIG1hY3JvIjsKLSAgICAgIGNh
c2UgUFBfTUFDUk9fRFVQTElDQVRFX1BBUkFNRVRFUl9OQU1FUzoKLSAgICAgICAgcmV0dXJuICJk
dXBsaWNhdGUgbWFjcm8gcGFyYW1ldGVyIG5hbWUiOwotICAgICAgY2FzZSBQUF9DT05ESVRJT05B
TF9FTkRJRl9XSVRIT1VUX0lGOgotICAgICAgICByZXR1cm4gInVuZXhwZWN0ZWQgI2VuZGlmIGZv
dW5kIHdpdGhvdXQgYSBtYXRjaGluZyAjaWYiOwotICAgICAgY2FzZSBQUF9DT05ESVRJT05BTF9F
TFNFX1dJVEhPVVRfSUY6Ci0gICAgICAgIHJldHVybiAidW5leHBlY3RlZCAjZWxzZSBmb3VuZCB3
aXRob3V0IGEgbWF0Y2hpbmcgI2lmIjsKLSAgICAgIGNhc2UgUFBfQ09ORElUSU9OQUxfRUxTRV9B
RlRFUl9FTFNFOgotICAgICAgICByZXR1cm4gInVuZXhwZWN0ZWQgI2Vsc2UgZm91bmQgYWZ0ZXIg
YW5vdGhlciAjZWxzZSI7Ci0gICAgICBjYXNlIFBQX0NPTkRJVElPTkFMX0VMSUZfV0lUSE9VVF9J
RjoKLSAgICAgICAgcmV0dXJuICJ1bmV4cGVjdGVkICNlbGlmIGZvdW5kIHdpdGhvdXQgYSBtYXRj
aGluZyAjaWYiOwotICAgICAgY2FzZSBQUF9DT05ESVRJT05BTF9FTElGX0FGVEVSX0VMU0U6Ci0g
ICAgICAgIHJldHVybiAidW5leHBlY3RlZCAjZWxpZiBmb3VuZCBhZnRlciAjZWxzZSI7Ci0gICAg
ICBjYXNlIFBQX0NPTkRJVElPTkFMX1VOVEVSTUlOQVRFRDoKLSAgICAgICAgcmV0dXJuICJ1bmV4
cGVjdGVkIGVuZCBvZiBmaWxlIGZvdW5kIGluIGNvbmRpdGlvbmFsIGJsb2NrIjsKLSAgICAgIGNh
c2UgUFBfSU5WQUxJRF9FWFRFTlNJT05fTkFNRToKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIGV4
dGVuc2lvbiBuYW1lIjsKLSAgICAgIGNhc2UgUFBfSU5WQUxJRF9FWFRFTlNJT05fQkVIQVZJT1I6
Ci0gICAgICAgIHJldHVybiAiaW52YWxpZCBleHRlbnNpb24gYmVoYXZpb3IiOwotICAgICAgY2Fz
ZSBQUF9JTlZBTElEX0VYVEVOU0lPTl9ESVJFQ1RJVkU6Ci0gICAgICAgIHJldHVybiAiaW52YWxp
ZCBleHRlbnNpb24gZGlyZWN0aXZlIjsKLSAgICAgIGNhc2UgUFBfSU5WQUxJRF9WRVJTSU9OX05V
TUJFUjoKLSAgICAgICAgcmV0dXJuICJpbnZhbGlkIHZlcnNpb24gbnVtYmVyIjsKLSAgICAgIGNh
c2UgUFBfSU5WQUxJRF9WRVJTSU9OX0RJUkVDVElWRToKLSAgICAgICAgcmV0dXJuICJpbnZhbGlk
IHZlcnNpb24gZGlyZWN0aXZlIjsKLSAgICAgIGNhc2UgUFBfVkVSU0lPTl9OT1RfRklSU1RfU1RB
VEVNRU5UOgotICAgICAgICByZXR1cm4gIiN2ZXJzaW9uIGRpcmVjdGl2ZSBtdXN0IG9jY3VyIGJl
Zm9yZSBhbnl0aGluZyBlbHNlLCAiCi0gICAgICAgICAgICAgICAiZXhjZXB0IGZvciBjb21tZW50
cyBhbmQgd2hpdGUgc3BhY2UiOwotICAgICAgY2FzZSBQUF9WRVJTSU9OX05PVF9GSVJTVF9MSU5F
X0VTU0wzOgotICAgICAgICByZXR1cm4gIiN2ZXJzaW9uIGRpcmVjdGl2ZSBtdXN0IG9jY3VyIG9u
IHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBzaGFkZXIiOwotICAgICAgY2FzZSBQUF9JTlZBTElEX0xJ
TkVfTlVNQkVSOgotICAgICAgICByZXR1cm4gImludmFsaWQgbGluZSBudW1iZXIiOwotICAgICAg
Y2FzZSBQUF9JTlZBTElEX0ZJTEVfTlVNQkVSOgotICAgICAgICByZXR1cm4gImludmFsaWQgZmls
ZSBudW1iZXIiOwotICAgICAgY2FzZSBQUF9JTlZBTElEX0xJTkVfRElSRUNUSVZFOgotICAgICAg
ICByZXR1cm4gImludmFsaWQgbGluZSBkaXJlY3RpdmUiOwotICAgICAgY2FzZSBQUF9OT05fUFBf
VE9LRU5fQkVGT1JFX0VYVEVOU0lPTl9FU1NMMzoKLSAgICAgICAgcmV0dXJuICJleHRlbnNpb24g
ZGlyZWN0aXZlIG11c3Qgb2NjdXIgYmVmb3JlIGFueSBub24tcHJlcHJvY2Vzc29yIHRva2VucyBp
biBFU1NMMyI7Ci0gICAgICBjYXNlIFBQX1VOREVGSU5FRF9TSElGVDoKLSAgICAgICAgICByZXR1
cm4gInNoaWZ0IGV4cG9uZW50IGlzIG5lZ2F0aXZlIG9yIHVuZGVmaW5lZCI7Ci0gICAgICAvLyBF
cnJvcnMgZW5kLgotICAgICAgLy8gV2FybmluZ3MgYmVnaW4uCi0gICAgICBjYXNlIFBQX0VPRl9J
Tl9ESVJFQ1RJVkU6Ci0gICAgICAgIHJldHVybiAidW5leHBlY3RlZCBlbmQgb2YgZmlsZSBmb3Vu
ZCBpbiBkaXJlY3RpdmUiOwotICAgICAgY2FzZSBQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RP
S0VOOgotICAgICAgICByZXR1cm4gInVuZXhwZWN0ZWQgdG9rZW4gYWZ0ZXIgY29uZGl0aW9uYWwg
ZXhwcmVzc2lvbiI7Ci0gICAgICBjYXNlIFBQX1VOUkVDT0dOSVpFRF9QUkFHTUE6Ci0gICAgICAg
IHJldHVybiAidW5yZWNvZ25pemVkIHByYWdtYSI7Ci0gICAgICBjYXNlIFBQX05PTl9QUF9UT0tF
Tl9CRUZPUkVfRVhURU5TSU9OX0VTU0wxOgotICAgICAgICByZXR1cm4gImV4dGVuc2lvbiBkaXJl
Y3RpdmUgc2hvdWxkIG9jY3VyIGJlZm9yZSBhbnkgbm9uLXByZXByb2Nlc3NvciB0b2tlbnMiOwot
ICAgICAgY2FzZSBQUF9XQVJOSU5HX01BQ1JPX05BTUVfUkVTRVJWRUQ6Ci0gICAgICAgIHJldHVy
biAibWFjcm8gbmFtZSB3aXRoIGEgZG91YmxlIHVuZGVyc2NvcmUgaXMgcmVzZXJ2ZWQgLSB1bmlu
dGVudGVkIGJlaGF2aW9yIGlzIHBvc3NpYmxlIjsKLSAgICAgIC8vIFdhcm5pbmdzIGVuZC4KLSAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICByZXR1cm4g
IiI7CisgICAgICAgIC8vIEVycm9ycyBiZWdpbi4KKyAgICAgICAgY2FzZSBQUF9JTlRFUk5BTF9F
UlJPUjoKKyAgICAgICAgICAgIHJldHVybiAiaW50ZXJuYWwgZXJyb3IiOworICAgICAgICBjYXNl
IFBQX09VVF9PRl9NRU1PUlk6CisgICAgICAgICAgICByZXR1cm4gIm91dCBvZiBtZW1vcnkiOwor
ICAgICAgICBjYXNlIFBQX0lOVkFMSURfQ0hBUkFDVEVSOgorICAgICAgICAgICAgcmV0dXJuICJp
bnZhbGlkIGNoYXJhY3RlciI7CisgICAgICAgIGNhc2UgUFBfSU5WQUxJRF9OVU1CRVI6CisgICAg
ICAgICAgICByZXR1cm4gImludmFsaWQgbnVtYmVyIjsKKyAgICAgICAgY2FzZSBQUF9JTlRFR0VS
X09WRVJGTE9XOgorICAgICAgICAgICAgcmV0dXJuICJpbnRlZ2VyIG92ZXJmbG93IjsKKyAgICAg
ICAgY2FzZSBQUF9GTE9BVF9PVkVSRkxPVzoKKyAgICAgICAgICAgIHJldHVybiAiZmxvYXQgb3Zl
cmZsb3ciOworICAgICAgICBjYXNlIFBQX1RPS0VOX1RPT19MT05HOgorICAgICAgICAgICAgcmV0
dXJuICJ0b2tlbiB0b28gbG9uZyI7CisgICAgICAgIGNhc2UgUFBfSU5WQUxJRF9FWFBSRVNTSU9O
OgorICAgICAgICAgICAgcmV0dXJuICJpbnZhbGlkIGV4cHJlc3Npb24iOworICAgICAgICBjYXNl
IFBQX0RJVklTSU9OX0JZX1pFUk86CisgICAgICAgICAgICByZXR1cm4gImRpdmlzaW9uIGJ5IHpl
cm8iOworICAgICAgICBjYXNlIFBQX0VPRl9JTl9DT01NRU5UOgorICAgICAgICAgICAgcmV0dXJu
ICJ1bmV4cGVjdGVkIGVuZCBvZiBmaWxlIGZvdW5kIGluIGNvbW1lbnQiOworICAgICAgICBjYXNl
IFBQX1VORVhQRUNURURfVE9LRU46CisgICAgICAgICAgICByZXR1cm4gInVuZXhwZWN0ZWQgdG9r
ZW4iOworICAgICAgICBjYXNlIFBQX0RJUkVDVElWRV9JTlZBTElEX05BTUU6CisgICAgICAgICAg
ICByZXR1cm4gImludmFsaWQgZGlyZWN0aXZlIG5hbWUiOworICAgICAgICBjYXNlIFBQX01BQ1JP
X05BTUVfUkVTRVJWRUQ6CisgICAgICAgICAgICByZXR1cm4gIm1hY3JvIG5hbWUgaXMgcmVzZXJ2
ZWQiOworICAgICAgICBjYXNlIFBQX01BQ1JPX1JFREVGSU5FRDoKKyAgICAgICAgICAgIHJldHVy
biAibWFjcm8gcmVkZWZpbmVkIjsKKyAgICAgICAgY2FzZSBQUF9NQUNST19QUkVERUZJTkVEX1JF
REVGSU5FRDoKKyAgICAgICAgICAgIHJldHVybiAicHJlZGVmaW5lZCBtYWNybyByZWRlZmluZWQi
OworICAgICAgICBjYXNlIFBQX01BQ1JPX1BSRURFRklORURfVU5ERUZJTkVEOgorICAgICAgICAg
ICAgcmV0dXJuICJwcmVkZWZpbmVkIG1hY3JvIHVuZGVmaW5lZCI7CisgICAgICAgIGNhc2UgUFBf
TUFDUk9fVU5URVJNSU5BVEVEX0lOVk9DQVRJT046CisgICAgICAgICAgICByZXR1cm4gInVudGVy
bWluYXRlZCBtYWNybyBpbnZvY2F0aW9uIjsKKyAgICAgICAgY2FzZSBQUF9NQUNST19VTkRFRklO
RURfV0hJTEVfSU5WT0tFRDoKKyAgICAgICAgICAgIHJldHVybiAibWFjcm8gdW5kZWZpbmVkIHdo
aWxlIGJlaW5nIGludm9rZWQiOworICAgICAgICBjYXNlIFBQX01BQ1JPX1RPT19GRVdfQVJHUzoK
KyAgICAgICAgICAgIHJldHVybiAiTm90IGVub3VnaCBhcmd1bWVudHMgZm9yIG1hY3JvIjsKKyAg
ICAgICAgY2FzZSBQUF9NQUNST19UT09fTUFOWV9BUkdTOgorICAgICAgICAgICAgcmV0dXJuICJU
b28gbWFueSBhcmd1bWVudHMgZm9yIG1hY3JvIjsKKyAgICAgICAgY2FzZSBQUF9NQUNST19EVVBM
SUNBVEVfUEFSQU1FVEVSX05BTUVTOgorICAgICAgICAgICAgcmV0dXJuICJkdXBsaWNhdGUgbWFj
cm8gcGFyYW1ldGVyIG5hbWUiOworICAgICAgICBjYXNlIFBQX01BQ1JPX0lOVk9DQVRJT05fQ0hB
SU5fVE9PX0RFRVA6CisgICAgICAgICAgICByZXR1cm4gIm1hY3JvIGludm9jYXRpb24gY2hhaW4g
dG9vIGRlZXAiOworICAgICAgICBjYXNlIFBQX0NPTkRJVElPTkFMX0VORElGX1dJVEhPVVRfSUY6
CisgICAgICAgICAgICByZXR1cm4gInVuZXhwZWN0ZWQgI2VuZGlmIGZvdW5kIHdpdGhvdXQgYSBt
YXRjaGluZyAjaWYiOworICAgICAgICBjYXNlIFBQX0NPTkRJVElPTkFMX0VMU0VfV0lUSE9VVF9J
RjoKKyAgICAgICAgICAgIHJldHVybiAidW5leHBlY3RlZCAjZWxzZSBmb3VuZCB3aXRob3V0IGEg
bWF0Y2hpbmcgI2lmIjsKKyAgICAgICAgY2FzZSBQUF9DT05ESVRJT05BTF9FTFNFX0FGVEVSX0VM
U0U6CisgICAgICAgICAgICByZXR1cm4gInVuZXhwZWN0ZWQgI2Vsc2UgZm91bmQgYWZ0ZXIgYW5v
dGhlciAjZWxzZSI7CisgICAgICAgIGNhc2UgUFBfQ09ORElUSU9OQUxfRUxJRl9XSVRIT1VUX0lG
OgorICAgICAgICAgICAgcmV0dXJuICJ1bmV4cGVjdGVkICNlbGlmIGZvdW5kIHdpdGhvdXQgYSBt
YXRjaGluZyAjaWYiOworICAgICAgICBjYXNlIFBQX0NPTkRJVElPTkFMX0VMSUZfQUZURVJfRUxT
RToKKyAgICAgICAgICAgIHJldHVybiAidW5leHBlY3RlZCAjZWxpZiBmb3VuZCBhZnRlciAjZWxz
ZSI7CisgICAgICAgIGNhc2UgUFBfQ09ORElUSU9OQUxfVU5URVJNSU5BVEVEOgorICAgICAgICAg
ICAgcmV0dXJuICJ1bmV4cGVjdGVkIGVuZCBvZiBmaWxlIGZvdW5kIGluIGNvbmRpdGlvbmFsIGJs
b2NrIjsKKyAgICAgICAgY2FzZSBQUF9JTlZBTElEX0VYVEVOU0lPTl9OQU1FOgorICAgICAgICAg
ICAgcmV0dXJuICJpbnZhbGlkIGV4dGVuc2lvbiBuYW1lIjsKKyAgICAgICAgY2FzZSBQUF9JTlZB
TElEX0VYVEVOU0lPTl9CRUhBVklPUjoKKyAgICAgICAgICAgIHJldHVybiAiaW52YWxpZCBleHRl
bnNpb24gYmVoYXZpb3IiOworICAgICAgICBjYXNlIFBQX0lOVkFMSURfRVhURU5TSU9OX0RJUkVD
VElWRToKKyAgICAgICAgICAgIHJldHVybiAiaW52YWxpZCBleHRlbnNpb24gZGlyZWN0aXZlIjsK
KyAgICAgICAgY2FzZSBQUF9JTlZBTElEX1ZFUlNJT05fTlVNQkVSOgorICAgICAgICAgICAgcmV0
dXJuICJpbnZhbGlkIHZlcnNpb24gbnVtYmVyIjsKKyAgICAgICAgY2FzZSBQUF9JTlZBTElEX1ZF
UlNJT05fRElSRUNUSVZFOgorICAgICAgICAgICAgcmV0dXJuICJpbnZhbGlkIHZlcnNpb24gZGly
ZWN0aXZlIjsKKyAgICAgICAgY2FzZSBQUF9WRVJTSU9OX05PVF9GSVJTVF9TVEFURU1FTlQ6Cisg
ICAgICAgICAgICByZXR1cm4gIiN2ZXJzaW9uIGRpcmVjdGl2ZSBtdXN0IG9jY3VyIGJlZm9yZSBh
bnl0aGluZyBlbHNlLCAiCisgICAgICAgICAgICAgICAgICAgImV4Y2VwdCBmb3IgY29tbWVudHMg
YW5kIHdoaXRlIHNwYWNlIjsKKyAgICAgICAgY2FzZSBQUF9WRVJTSU9OX05PVF9GSVJTVF9MSU5F
X0VTU0wzOgorICAgICAgICAgICAgcmV0dXJuICIjdmVyc2lvbiBkaXJlY3RpdmUgbXVzdCBvY2N1
ciBvbiB0aGUgZmlyc3QgbGluZSBvZiB0aGUgc2hhZGVyIjsKKyAgICAgICAgY2FzZSBQUF9JTlZB
TElEX0xJTkVfTlVNQkVSOgorICAgICAgICAgICAgcmV0dXJuICJpbnZhbGlkIGxpbmUgbnVtYmVy
IjsKKyAgICAgICAgY2FzZSBQUF9JTlZBTElEX0ZJTEVfTlVNQkVSOgorICAgICAgICAgICAgcmV0
dXJuICJpbnZhbGlkIGZpbGUgbnVtYmVyIjsKKyAgICAgICAgY2FzZSBQUF9JTlZBTElEX0xJTkVf
RElSRUNUSVZFOgorICAgICAgICAgICAgcmV0dXJuICJpbnZhbGlkIGxpbmUgZGlyZWN0aXZlIjsK
KyAgICAgICAgY2FzZSBQUF9OT05fUFBfVE9LRU5fQkVGT1JFX0VYVEVOU0lPTl9FU1NMMzoKKyAg
ICAgICAgICAgIHJldHVybiAiZXh0ZW5zaW9uIGRpcmVjdGl2ZSBtdXN0IG9jY3VyIGJlZm9yZSBh
bnkgbm9uLXByZXByb2Nlc3NvciB0b2tlbnMgaW4gRVNTTDMiOworICAgICAgICBjYXNlIFBQX1VO
REVGSU5FRF9TSElGVDoKKyAgICAgICAgICAgIHJldHVybiAic2hpZnQgZXhwb25lbnQgaXMgbmVn
YXRpdmUgb3IgdW5kZWZpbmVkIjsKKyAgICAgICAgLy8gRXJyb3JzIGVuZC4KKyAgICAgICAgLy8g
V2FybmluZ3MgYmVnaW4uCisgICAgICAgIGNhc2UgUFBfRU9GX0lOX0RJUkVDVElWRToKKyAgICAg
ICAgICAgIHJldHVybiAidW5leHBlY3RlZCBlbmQgb2YgZmlsZSBmb3VuZCBpbiBkaXJlY3RpdmUi
OworICAgICAgICBjYXNlIFBQX0NPTkRJVElPTkFMX1VORVhQRUNURURfVE9LRU46CisgICAgICAg
ICAgICByZXR1cm4gInVuZXhwZWN0ZWQgdG9rZW4gYWZ0ZXIgY29uZGl0aW9uYWwgZXhwcmVzc2lv
biI7CisgICAgICAgIGNhc2UgUFBfVU5SRUNPR05JWkVEX1BSQUdNQToKKyAgICAgICAgICAgIHJl
dHVybiAidW5yZWNvZ25pemVkIHByYWdtYSI7CisgICAgICAgIGNhc2UgUFBfTk9OX1BQX1RPS0VO
X0JFRk9SRV9FWFRFTlNJT05fRVNTTDE6CisgICAgICAgICAgICByZXR1cm4gImV4dGVuc2lvbiBk
aXJlY3RpdmUgc2hvdWxkIG9jY3VyIGJlZm9yZSBhbnkgbm9uLXByZXByb2Nlc3NvciB0b2tlbnMi
OworICAgICAgICBjYXNlIFBQX1dBUk5JTkdfTUFDUk9fTkFNRV9SRVNFUlZFRDoKKyAgICAgICAg
ICAgIHJldHVybiAibWFjcm8gbmFtZSB3aXRoIGEgZG91YmxlIHVuZGVyc2NvcmUgaXMgcmVzZXJ2
ZWQgLSB1bmludGVudGVkIGJlaGF2aW9yIGlzICIKKyAgICAgICAgICAgICAgICAgICAicG9zc2li
bGUiOworICAgICAgICAvLyBXYXJuaW5ncyBlbmQuCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuICIiOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9EaWFnbm9zdGljc0Jhc2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmgKaW5kZXggNmMzZmU5ZWU5MmYuLjBj
MmRhMWI5ZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvcHJlcHJvY2Vzc29yL0RpYWdub3N0aWNzQmFzZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25vc3RpY3NCYXNlLmgKQEAgLTE5
LDExICsxOSw2IEBAIHN0cnVjdCBTb3VyY2VMb2NhdGlvbjsKIGNsYXNzIERpYWdub3N0aWNzCiB7
CiAgIHB1YmxpYzoKLSAgICBlbnVtIFNldmVyaXR5Ci0gICAgewotICAgICAgICBQUF9FUlJPUiwK
LSAgICAgICAgUFBfV0FSTklORwotICAgIH07CiAgICAgZW51bSBJRAogICAgIHsKICAgICAgICAg
UFBfRVJST1JfQkVHSU4sCkBAIC00OCw2ICs0Myw3IEBAIGNsYXNzIERpYWdub3N0aWNzCiAgICAg
ICAgIFBQX01BQ1JPX1RPT19GRVdfQVJHUywKICAgICAgICAgUFBfTUFDUk9fVE9PX01BTllfQVJH
UywKICAgICAgICAgUFBfTUFDUk9fRFVQTElDQVRFX1BBUkFNRVRFUl9OQU1FUywKKyAgICAgICAg
UFBfTUFDUk9fSU5WT0NBVElPTl9DSEFJTl9UT09fREVFUCwKICAgICAgICAgUFBfQ09ORElUSU9O
QUxfRU5ESUZfV0lUSE9VVF9JRiwKICAgICAgICAgUFBfQ09ORElUSU9OQUxfRUxTRV9XSVRIT1VU
X0lGLAogICAgICAgICBQUF9DT05ESVRJT05BTF9FTFNFX0FGVEVSX0VMU0UsCkBAIC04MiwxMiAr
NzgsMTAgQEAgY2xhc3MgRGlhZ25vc3RpY3MKICAgICB2b2lkIHJlcG9ydChJRCBpZCwgY29uc3Qg
U291cmNlTG9jYXRpb24gJmxvYywgY29uc3Qgc3RkOjpzdHJpbmcgJnRleHQpOwogCiAgIHByb3Rl
Y3RlZDoKLSAgICBTZXZlcml0eSBzZXZlcml0eShJRCBpZCk7Ci0gICAgc3RkOjpzdHJpbmcgbWVz
c2FnZShJRCBpZCk7CisgICAgYm9vbCBpc0Vycm9yKElEIGlkKTsKKyAgICBjb25zdCBjaGFyICpt
ZXNzYWdlKElEIGlkKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwcmludChJRCBpZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU291cmNlTG9jYXRpb24gJmxvYywKLSAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnRleHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cHJpbnQoSUQgaWQsIGNvbnN0IFNvdXJjZUxvY2F0aW9uICZsb2MsIGNvbnN0IHN0ZDo6c3RyaW5n
ICZ0ZXh0KSA9IDA7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlSGFu
ZGxlckJhc2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9j
ZXNzb3IvRGlyZWN0aXZlSGFuZGxlckJhc2UuaAppbmRleCBjZjY3ODk1NzY0Ni4uNmM4MWQwMTVm
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvRGlyZWN0aXZlSGFuZGxlckJhc2UuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpcmVjdGl2ZUhhbmRsZXJCYXNlLmgKQEAg
LTIzLDggKzIzLDcgQEAgY2xhc3MgRGlyZWN0aXZlSGFuZGxlcgogICBwdWJsaWM6CiAgICAgdmly
dHVhbCB+RGlyZWN0aXZlSGFuZGxlcigpOwogCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUVycm9y
KGNvbnN0IFNvdXJjZUxvY2F0aW9uICZsb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZtc2cpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXJy
b3IoY29uc3QgU291cmNlTG9jYXRpb24gJmxvYywgY29uc3Qgc3RkOjpzdHJpbmcgJm1zZykgPSAw
OwogCiAgICAgLy8gSGFuZGxlIHByYWdtYSBvZiBmb3JtOiAjcHJhZ21hIG5hbWVbKHZhbHVlKV0K
ICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUHJhZ21hKGNvbnN0IFNvdXJjZUxvY2F0aW9uICZsb2Ms
CkBAIC0zNiw4ICszNSw3IEBAIGNsYXNzIERpcmVjdGl2ZUhhbmRsZXIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmJlaGF2aW9yKSA9IDA7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlVmVyc2lvbihjb25zdCBTb3VyY2VMb2NhdGlvbiAmbG9j
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2ZXJzaW9uKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGhhbmRsZVZlcnNpb24oY29uc3QgU291cmNlTG9jYXRpb24gJmxvYywgaW50
IHZlcnNpb24pID0gMDsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVQ
YXJzZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9EaXJlY3RpdmVQYXJzZXIuY3BwCmluZGV4IDY0M2Y3M2JkOTdhLi45Y2RhNzIwMjc5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9EaXJlY3RpdmVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlUGFyc2VyLmNwcApAQCAtMTgsNyArMTgs
OCBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgogI2luY2x1ZGUg
ImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIuaCIKIAotbmFtZXNwYWNlIHsKK25hbWVz
cGFjZQorewogZW51bSBEaXJlY3RpdmVUeXBlCiB7CiAgICAgRElSRUNUSVZFX05PTkUsCkBAIC0z
OSwxOSArNDAsMTkgQEAgZW51bSBEaXJlY3RpdmVUeXBlCiAKIERpcmVjdGl2ZVR5cGUgZ2V0RGly
ZWN0aXZlKGNvbnN0IHBwOjpUb2tlbiAqdG9rZW4pCiB7Ci0gICAgY29uc3QgY2hhciBrRGlyZWN0
aXZlRGVmaW5lW10gPSAiZGVmaW5lIjsKLSAgICBjb25zdCBjaGFyIGtEaXJlY3RpdmVVbmRlZltd
ID0gInVuZGVmIjsKLSAgICBjb25zdCBjaGFyIGtEaXJlY3RpdmVJZltdID0gImlmIjsKLSAgICBj
b25zdCBjaGFyIGtEaXJlY3RpdmVJZmRlZltdID0gImlmZGVmIjsKLSAgICBjb25zdCBjaGFyIGtE
aXJlY3RpdmVJZm5kZWZbXSA9ICJpZm5kZWYiOwotICAgIGNvbnN0IGNoYXIga0RpcmVjdGl2ZUVs
c2VbXSA9ICJlbHNlIjsKLSAgICBjb25zdCBjaGFyIGtEaXJlY3RpdmVFbGlmW10gPSAiZWxpZiI7
Ci0gICAgY29uc3QgY2hhciBrRGlyZWN0aXZlRW5kaWZbXSA9ICJlbmRpZiI7Ci0gICAgY29uc3Qg
Y2hhciBrRGlyZWN0aXZlRXJyb3JbXSA9ICJlcnJvciI7Ci0gICAgY29uc3QgY2hhciBrRGlyZWN0
aXZlUHJhZ21hW10gPSAicHJhZ21hIjsKKyAgICBjb25zdCBjaGFyIGtEaXJlY3RpdmVEZWZpbmVb
XSAgICA9ICJkZWZpbmUiOworICAgIGNvbnN0IGNoYXIga0RpcmVjdGl2ZVVuZGVmW10gICAgID0g
InVuZGVmIjsKKyAgICBjb25zdCBjaGFyIGtEaXJlY3RpdmVJZltdICAgICAgICA9ICJpZiI7Cisg
ICAgY29uc3QgY2hhciBrRGlyZWN0aXZlSWZkZWZbXSAgICAgPSAiaWZkZWYiOworICAgIGNvbnN0
IGNoYXIga0RpcmVjdGl2ZUlmbmRlZltdICAgID0gImlmbmRlZiI7CisgICAgY29uc3QgY2hhciBr
RGlyZWN0aXZlRWxzZVtdICAgICAgPSAiZWxzZSI7CisgICAgY29uc3QgY2hhciBrRGlyZWN0aXZl
RWxpZltdICAgICAgPSAiZWxpZiI7CisgICAgY29uc3QgY2hhciBrRGlyZWN0aXZlRW5kaWZbXSAg
ICAgPSAiZW5kaWYiOworICAgIGNvbnN0IGNoYXIga0RpcmVjdGl2ZUVycm9yW10gICAgID0gImVy
cm9yIjsKKyAgICBjb25zdCBjaGFyIGtEaXJlY3RpdmVQcmFnbWFbXSAgICA9ICJwcmFnbWEiOwog
ICAgIGNvbnN0IGNoYXIga0RpcmVjdGl2ZUV4dGVuc2lvbltdID0gImV4dGVuc2lvbiI7Ci0gICAg
Y29uc3QgY2hhciBrRGlyZWN0aXZlVmVyc2lvbltdID0gInZlcnNpb24iOwotICAgIGNvbnN0IGNo
YXIga0RpcmVjdGl2ZUxpbmVbXSA9ICJsaW5lIjsKKyAgICBjb25zdCBjaGFyIGtEaXJlY3RpdmVW
ZXJzaW9uW10gICA9ICJ2ZXJzaW9uIjsKKyAgICBjb25zdCBjaGFyIGtEaXJlY3RpdmVMaW5lW10g
ICAgICA9ICJsaW5lIjsKIAogICAgIGlmICh0b2tlbi0+dHlwZSAhPSBwcDo6VG9rZW46OklERU5U
SUZJRVIpCiAgICAgICAgIHJldHVybiBESVJFQ1RJVkVfTk9ORTsKQEAgLTkwLDE1ICs5MSwxNSBA
QCBib29sIGlzQ29uZGl0aW9uYWxEaXJlY3RpdmUoRGlyZWN0aXZlVHlwZSBkaXJlY3RpdmUpCiB7
CiAgICAgc3dpdGNoIChkaXJlY3RpdmUpCiAgICAgewotICAgICAgY2FzZSBESVJFQ1RJVkVfSUY6
Ci0gICAgICBjYXNlIERJUkVDVElWRV9JRkRFRjoKLSAgICAgIGNhc2UgRElSRUNUSVZFX0lGTkRF
RjoKLSAgICAgIGNhc2UgRElSRUNUSVZFX0VMU0U6Ci0gICAgICBjYXNlIERJUkVDVElWRV9FTElG
OgotICAgICAgY2FzZSBESVJFQ1RJVkVfRU5ESUY6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjYXNlIERJUkVDVElW
RV9JRjoKKyAgICAgICAgY2FzZSBESVJFQ1RJVkVfSUZERUY6CisgICAgICAgIGNhc2UgRElSRUNU
SVZFX0lGTkRFRjoKKyAgICAgICAgY2FzZSBESVJFQ1RJVkVfRUxTRToKKyAgICAgICAgY2FzZSBE
SVJFQ1RJVkVfRUxJRjoKKyAgICAgICAgY2FzZSBESVJFQ1RJVkVfRU5ESUY6CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiB9CiAKQEAgLTExMCw3ICsxMTEsNyBAQCBib29sIGlzRU9EKGNvbnN0IHBwOjpU
b2tlbiAqdG9rZW4pCiAKIHZvaWQgc2tpcFVudGlsRU9EKHBwOjpMZXhlciAqbGV4ZXIsIHBwOjpU
b2tlbiAqdG9rZW4pCiB7Ci0gICAgd2hpbGUoIWlzRU9EKHRva2VuKSkKKyAgICB3aGlsZSAoIWlz
RU9EKHRva2VuKSkKICAgICB7CiAgICAgICAgIGxleGVyLT5sZXgodG9rZW4pOwogICAgIH0KQEAg
LTEyNywxMSArMTI4LDEwIEBAIGJvb2wgaGFzRG91YmxlVW5kZXJzY29yZXMoY29uc3Qgc3RkOjpz
dHJpbmcgJm5hbWUpCiAgICAgcmV0dXJuIChuYW1lLmZpbmQoIl9fIikgIT0gc3RkOjpzdHJpbmc6
Om5wb3MpOwogfQogCi1ib29sIGlzTWFjcm9QcmVkZWZpbmVkKGNvbnN0IHN0ZDo6c3RyaW5nICZu
YW1lLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcDo6TWFjcm9TZXQgJm1hY3JvU2V0
KQorYm9vbCBpc01hY3JvUHJlZGVmaW5lZChjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwgY29uc3Qg
cHA6Ok1hY3JvU2V0ICZtYWNyb1NldCkKIHsKICAgICBwcDo6TWFjcm9TZXQ6OmNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPSBtYWNyb1NldC5maW5kKG5hbWUpOwotICAgIHJldHVybiBpdGVyICE9IG1hY3Jv
U2V0LmVuZCgpID8gaXRlci0+c2Vjb25kLnByZWRlZmluZWQgOiBmYWxzZTsKKyAgICByZXR1cm4g
aXRlciAhPSBtYWNyb1NldC5lbmQoKSA/IGl0ZXItPnNlY29uZC0+cHJlZGVmaW5lZCA6IGZhbHNl
OwogfQogCiB9ICAvLyBuYW1lc3BhY2UgYW5vbnltb3VzCkBAIC0yMDIsMTQgKzIwMiwxNiBAQCBj
bGFzcyBEZWZpbmVkUGFyc2VyIDogcHVibGljIExleGVyCiBEaXJlY3RpdmVQYXJzZXI6OkRpcmVj
dGl2ZVBhcnNlcihUb2tlbml6ZXIgKnRva2VuaXplciwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE1hY3JvU2V0ICptYWNyb1NldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERpYWdub3N0aWNzICpkaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERpcmVjdGl2ZUhhbmRsZXIgKmRpcmVjdGl2ZUhhbmRsZXIpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3RpdmVIYW5kbGVyICpkaXJlY3RpdmVIYW5kbGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heE1hY3JvRXhwYW5zaW9u
RGVwdGgpCiAgICAgOiBtUGFzdEZpcnN0U3RhdGVtZW50KGZhbHNlKSwKICAgICAgIG1TZWVuTm9u
UHJlcHJvY2Vzc29yVG9rZW4oZmFsc2UpLAogICAgICAgbVRva2VuaXplcih0b2tlbml6ZXIpLAog
ICAgICAgbU1hY3JvU2V0KG1hY3JvU2V0KSwKICAgICAgIG1EaWFnbm9zdGljcyhkaWFnbm9zdGlj
cyksCiAgICAgICBtRGlyZWN0aXZlSGFuZGxlcihkaXJlY3RpdmVIYW5kbGVyKSwKLSAgICAgIG1T
aGFkZXJWZXJzaW9uKDEwMCkKKyAgICAgIG1TaGFkZXJWZXJzaW9uKDEwMCksCisgICAgICBtTWF4
TWFjcm9FeHBhbnNpb25EZXB0aChtYXhNYWNyb0V4cGFuc2lvbkRlcHRoKQogewogfQogCkBAIC0y
MzQsMTQgKzIzNiwxMyBAQCB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6bGV4KFRva2VuICp0b2tlbikK
ICAgICAgICAgICAgIGlmICghbUNvbmRpdGlvbmFsU3RhY2suZW1wdHkoKSkKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICBjb25zdCBDb25kaXRpb25hbEJsb2NrICZibG9jayA9IG1Db25k
aXRpb25hbFN0YWNrLmJhY2soKTsKLSAgICAgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9y
dChEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfVU5URVJNSU5BVEVELAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmxvY2F0aW9uLCBibG9jay50eXBlKTsKKyAg
ICAgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfQ09ORElU
SU9OQUxfVU5URVJNSU5BVEVELCBibG9jay5sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBibG9jay50eXBlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKLSAgICB9Ci0gICAgd2hpbGUgKHNraXBwaW5nKCkgfHwgKHRv
a2VuLT50eXBlID09ICdcbicpKTsKKyAgICB9IHdoaWxlIChza2lwcGluZygpIHx8ICh0b2tlbi0+
dHlwZSA9PSAnXG4nKSk7CiAKICAgICBtUGFzdEZpcnN0U3RhdGVtZW50ID0gdHJ1ZTsKIH0KQEAg
LTI2Nyw2MiArMjY4LDYxIEBAIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZURpcmVjdGl2ZShU
b2tlbiAqdG9rZW4pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzd2l0Y2goZGlyZWN0
aXZlKQorICAgIHN3aXRjaCAoZGlyZWN0aXZlKQogICAgIHsKLSAgICAgIGNhc2UgRElSRUNUSVZF
X05PTkU6Ci0gICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9ESVJF
Q1RJVkVfSU5WQUxJRF9OQU1FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+
bG9jYXRpb24sIHRva2VuLT50ZXh0KTsKLSAgICAgICAgc2tpcFVudGlsRU9EKG1Ub2tlbml6ZXIs
IHRva2VuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIERJUkVDVElWRV9ERUZJTkU6Ci0g
ICAgICAgIHBhcnNlRGVmaW5lKHRva2VuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIERJ
UkVDVElWRV9VTkRFRjoKLSAgICAgICAgcGFyc2VVbmRlZih0b2tlbik7Ci0gICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBESVJFQ1RJVkVfSUY6Ci0gICAgICAgIHBhcnNlSWYodG9rZW4pOwotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRElSRUNUSVZFX0lGREVGOgotICAgICAgICBwYXJzZUlm
ZGVmKHRva2VuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIERJUkVDVElWRV9JRk5ERUY6
Ci0gICAgICAgIHBhcnNlSWZuZGVmKHRva2VuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IERJUkVDVElWRV9FTFNFOgotICAgICAgICBwYXJzZUVsc2UodG9rZW4pOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRElSRUNUSVZFX0VMSUY6Ci0gICAgICAgIHBhcnNlRWxpZih0b2tlbik7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBESVJFQ1RJVkVfRU5ESUY6Ci0gICAgICAgIHBh
cnNlRW5kaWYodG9rZW4pOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRElSRUNUSVZFX0VS
Uk9SOgotICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIERJUkVDVElWRV9QUkFHTUE6Ci0gICAgICAgIHBhcnNlUHJhZ21hKHRva2VuKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIERJUkVDVElWRV9FWFRFTlNJT046Ci0gICAgICAgIHBhcnNl
RXh0ZW5zaW9uKHRva2VuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIERJUkVDVElWRV9W
RVJTSU9OOgotICAgICAgICBwYXJzZVZlcnNpb24odG9rZW4pOwotICAgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgRElSRUNUSVZFX0xJTkU6Ci0gICAgICAgIHBhcnNlTGluZSh0b2tlbik7Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERJUkVDVElWRV9OT05FOgorICAgICAgICAgICAg
bURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX0RJUkVDVElWRV9JTlZBTElEX05B
TUUsIHRva2VuLT5sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRv
a2VuLT50ZXh0KTsKKyAgICAgICAgICAgIHNraXBVbnRpbEVPRChtVG9rZW5pemVyLCB0b2tlbik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBESVJFQ1RJVkVfREVGSU5FOgorICAg
ICAgICAgICAgcGFyc2VEZWZpbmUodG9rZW4pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRElSRUNUSVZFX1VOREVGOgorICAgICAgICAgICAgcGFyc2VVbmRlZih0b2tlbik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBESVJFQ1RJVkVfSUY6CisgICAgICAgICAg
ICBwYXJzZUlmKHRva2VuKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERJUkVD
VElWRV9JRkRFRjoKKyAgICAgICAgICAgIHBhcnNlSWZkZWYodG9rZW4pOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRElSRUNUSVZFX0lGTkRFRjoKKyAgICAgICAgICAgIHBhcnNl
SWZuZGVmKHRva2VuKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERJUkVDVElW
RV9FTFNFOgorICAgICAgICAgICAgcGFyc2VFbHNlKHRva2VuKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIERJUkVDVElWRV9FTElGOgorICAgICAgICAgICAgcGFyc2VFbGlmKHRv
a2VuKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERJUkVDVElWRV9FTkRJRjoK
KyAgICAgICAgICAgIHBhcnNlRW5kaWYodG9rZW4pOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRElSRUNUSVZFX0VSUk9SOgorICAgICAgICAgICAgcGFyc2VFcnJvcih0b2tlbik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBESVJFQ1RJVkVfUFJBR01BOgorICAg
ICAgICAgICAgcGFyc2VQcmFnbWEodG9rZW4pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRElSRUNUSVZFX0VYVEVOU0lPTjoKKyAgICAgICAgICAgIHBhcnNlRXh0ZW5zaW9uKHRv
a2VuKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERJUkVDVElWRV9WRVJTSU9O
OgorICAgICAgICAgICAgcGFyc2VWZXJzaW9uKHRva2VuKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIERJUkVDVElWRV9MSU5FOgorICAgICAgICAgICAgcGFyc2VMaW5lKHRva2Vu
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIHNraXBVbnRpbEVP
RChtVG9rZW5pemVyLCB0b2tlbik7CiAgICAgaWYgKHRva2VuLT50eXBlID09IFRva2VuOjpMQVNU
KQogICAgIHsKLSAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX0VP
Rl9JTl9ESVJFQ1RJVkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2Nh
dGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9z
dGljczo6UFBfRU9GX0lOX0RJUkVDVElWRSwgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7
CiAgICAgfQogfQogCkBAIC0zMzMsMjAgKzMzMywxOCBAQCB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6
cGFyc2VEZWZpbmUoVG9rZW4gKnRva2VuKQogICAgIG1Ub2tlbml6ZXItPmxleCh0b2tlbik7CiAg
ICAgaWYgKHRva2VuLT50eXBlICE9IFRva2VuOjpJREVOVElGSUVSKQogICAgIHsKLSAgICAgICAg
bURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU4sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQp
OworICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfVU5FWFBFQ1RF
RF9UT0tFTiwgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgaWYgKGlzTWFjcm9QcmVkZWZpbmVkKHRva2VuLT50ZXh0LCAqbU1hY3JvU2V0
KSkKICAgICB7Ci0gICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9N
QUNST19QUkVERUZJTkVEX1JFREVGSU5FRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7CisgICAgICAgIG1EaWFnbm9zdGljcy0+cmVw
b3J0KERpYWdub3N0aWNzOjpQUF9NQUNST19QUkVERUZJTkVEX1JFREVGSU5FRCwgdG9rZW4tPmxv
Y2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+dGV4dCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGlzTWFjcm9OYW1lUmVzZXJ2ZWQodG9rZW4tPnRl
eHQpKQogICAgIHsKLSAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQ
X01BQ1JPX05BTUVfUkVTRVJWRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vu
LT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChE
aWFnbm9zdGljczo6UFBfTUFDUk9fTkFNRV9SRVNFUlZFRCwgdG9rZW4tPmxvY2F0aW9uLCB0b2tl
bi0+dGV4dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gVXNpbmcgZG91YmxlIHVu
ZGVyc2NvcmVzIGlzIGFsbG93ZWQsIGJ1dCBtYXkgcmVzdWx0IGluIHVuaW50ZW5kZWQKQEAgLTM2
MCwzOSArMzU4LDM3IEBAIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZURlZmluZShUb2tlbiAq
dG9rZW4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0KTsKICAgICB9
CiAKLSAgICBNYWNybyBtYWNybzsKLSAgICBtYWNyby50eXBlID0gTWFjcm86OmtUeXBlT2JqOwot
ICAgIG1hY3JvLm5hbWUgPSB0b2tlbi0+dGV4dDsKKyAgICBzdGQ6OnNoYXJlZF9wdHI8TWFjcm8+
IG1hY3JvID0gc3RkOjptYWtlX3NoYXJlZDxNYWNybz4oKTsKKyAgICBtYWNyby0+dHlwZSAgICAg
ICAgICAgICAgICAgID0gTWFjcm86OmtUeXBlT2JqOworICAgIG1hY3JvLT5uYW1lICAgICAgICAg
ICAgICAgICAgPSB0b2tlbi0+dGV4dDsKIAogICAgIG1Ub2tlbml6ZXItPmxleCh0b2tlbik7CiAg
ICAgaWYgKHRva2VuLT50eXBlID09ICcoJyAmJiAhdG9rZW4tPmhhc0xlYWRpbmdTcGFjZSgpKQog
ICAgIHsKICAgICAgICAgLy8gRnVuY3Rpb24tbGlrZSBtYWNyby4gQ29sbGVjdCBhcmd1bWVudHMu
Ci0gICAgICAgIG1hY3JvLnR5cGUgPSBNYWNybzo6a1R5cGVGdW5jOworICAgICAgICBtYWNyby0+
dHlwZSA9IE1hY3JvOjprVHlwZUZ1bmM7CiAgICAgICAgIGRvCiAgICAgICAgIHsKICAgICAgICAg
ICAgIG1Ub2tlbml6ZXItPmxleCh0b2tlbik7CiAgICAgICAgICAgICBpZiAodG9rZW4tPnR5cGUg
IT0gVG9rZW46OklERU5USUZJRVIpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAg
ICAgIGlmIChzdGQ6OmZpbmQobWFjcm8ucGFyYW1ldGVycy5iZWdpbigpLCBtYWNyby5wYXJhbWV0
ZXJzLmVuZCgpLCB0b2tlbi0+dGV4dCkgIT0gbWFjcm8ucGFyYW1ldGVycy5lbmQoKSkKKyAgICAg
ICAgICAgIGlmIChzdGQ6OmZpbmQobWFjcm8tPnBhcmFtZXRlcnMuYmVnaW4oKSwgbWFjcm8tPnBh
cmFtZXRlcnMuZW5kKCksIHRva2VuLT50ZXh0KSAhPQorICAgICAgICAgICAgICAgIG1hY3JvLT5w
YXJhbWV0ZXJzLmVuZCgpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG1EaWFnbm9z
dGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9NQUNST19EVVBMSUNBVEVfUEFSQU1FVEVSX05B
TUVTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlv
biwgdG9rZW4tPnRleHQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgbWFjcm8ucGFyYW1ldGVycy5wdXNoX2JhY2sodG9rZW4tPnRleHQpOwor
ICAgICAgICAgICAgbWFjcm8tPnBhcmFtZXRlcnMucHVzaF9iYWNrKHRva2VuLT50ZXh0KTsKIAog
ICAgICAgICAgICAgbVRva2VuaXplci0+bGV4KHRva2VuKTsgIC8vIEdldCAnLCcuCi0gICAgICAg
IH0KLSAgICAgICAgd2hpbGUgKHRva2VuLT50eXBlID09ICcsJyk7CisgICAgICAgIH0gd2hpbGUg
KHRva2VuLT50eXBlID09ICcsJyk7CiAKICAgICAgICAgaWYgKHRva2VuLT50eXBlICE9ICcpJykK
ICAgICAgICAgewotICAgICAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6
OlBQX1VORVhQRUNURURfVE9LRU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
b2tlbi0+bG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+
dGV4dCk7CisgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBf
VU5FWFBFQ1RFRF9UT0tFTiwgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbVRva2VuaXplci0+bGV4KHRva2VuKTsg
IC8vIEdldCAnKScuCkBAIC00MDQsMjYgKzQwMCwyNCBAQCB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6
cGFyc2VEZWZpbmUoVG9rZW4gKnRva2VuKQogICAgICAgICAvLyBsaXN0LiBSZXNldHRpbmcgaXQg
YWxzbyBhbGxvd3MgdXMgdG8gcmV1c2UgVG9rZW46OmVxdWFscygpIHRvCiAgICAgICAgIC8vIGNv
bXBhcmUgbWFjcm9zLgogICAgICAgICB0b2tlbi0+bG9jYXRpb24gPSBTb3VyY2VMb2NhdGlvbigp
OwotICAgICAgICBtYWNyby5yZXBsYWNlbWVudHMucHVzaF9iYWNrKCp0b2tlbik7CisgICAgICAg
IG1hY3JvLT5yZXBsYWNlbWVudHMucHVzaF9iYWNrKCp0b2tlbik7CiAgICAgICAgIG1Ub2tlbml6
ZXItPmxleCh0b2tlbik7CiAgICAgfQotICAgIGlmICghbWFjcm8ucmVwbGFjZW1lbnRzLmVtcHR5
KCkpCisgICAgaWYgKCFtYWNyby0+cmVwbGFjZW1lbnRzLmVtcHR5KCkpCiAgICAgewogICAgICAg
ICAvLyBXaGl0ZXNwYWNlIHByZWNlZGluZyB0aGUgcmVwbGFjZW1lbnQgbGlzdCBpcyBub3QgY29u
c2lkZXJlZCBwYXJ0IG9mCiAgICAgICAgIC8vIHRoZSByZXBsYWNlbWVudCBsaXN0IGZvciBlaXRo
ZXIgZm9ybSBvZiBtYWNyby4KLSAgICAgICAgbWFjcm8ucmVwbGFjZW1lbnRzLmZyb250KCkuc2V0
SGFzTGVhZGluZ1NwYWNlKGZhbHNlKTsKKyAgICAgICAgbWFjcm8tPnJlcGxhY2VtZW50cy5mcm9u
dCgpLnNldEhhc0xlYWRpbmdTcGFjZShmYWxzZSk7CiAgICAgfQogCiAgICAgLy8gQ2hlY2sgZm9y
IG1hY3JvIHJlZGVmaW5pdGlvbi4KLSAgICBNYWNyb1NldDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9
IG1NYWNyb1NldC0+ZmluZChtYWNyby5uYW1lKTsKLSAgICBpZiAoaXRlciAhPSBtTWFjcm9TZXQt
PmVuZCgpICYmICFtYWNyby5lcXVhbHMoaXRlci0+c2Vjb25kKSkKKyAgICBNYWNyb1NldDo6Y29u
c3RfaXRlcmF0b3IgaXRlciA9IG1NYWNyb1NldC0+ZmluZChtYWNyby0+bmFtZSk7CisgICAgaWYg
KGl0ZXIgIT0gbU1hY3JvU2V0LT5lbmQoKSAmJiAhbWFjcm8tPmVxdWFscygqaXRlci0+c2Vjb25k
KSkKICAgICB7Ci0gICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9N
QUNST19SRURFRklORUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2Nh
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjcm8ubmFtZSk7CisgICAgICAg
IG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9NQUNST19SRURFRklORUQsIHRv
a2VuLT5sb2NhdGlvbiwgbWFjcm8tPm5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IG1NYWNyb1NldC0+aW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKG1hY3JvLm5hbWUsIG1hY3JvKSk7Cisg
ICAgbU1hY3JvU2V0LT5pbnNlcnQoc3RkOjptYWtlX3BhaXIobWFjcm8tPm5hbWUsIG1hY3JvKSk7
CiB9CiAKIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZVVuZGVmKFRva2VuICp0b2tlbikKQEAg
LTQzMywyMSArNDI3LDIwIEBAIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZVVuZGVmKFRva2Vu
ICp0b2tlbikKICAgICBtVG9rZW5pemVyLT5sZXgodG9rZW4pOwogICAgIGlmICh0b2tlbi0+dHlw
ZSAhPSBUb2tlbjo6SURFTlRJRklFUikKICAgICB7Ci0gICAgICAgIG1EaWFnbm9zdGljcy0+cmVw
b3J0KERpYWdub3N0aWNzOjpQUF9VTkVYUEVDVEVEX1RPS0VOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0b2tlbi0+bG9jYXRpb24sIHRva2VuLT50ZXh0KTsKKyAgICAgICAgbURpYWdu
b3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU4sIHRva2VuLT5s
b2NhdGlvbiwgdG9rZW4tPnRleHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgTWFj
cm9TZXQ6Oml0ZXJhdG9yIGl0ZXIgPSBtTWFjcm9TZXQtPmZpbmQodG9rZW4tPnRleHQpOwogICAg
IGlmIChpdGVyICE9IG1NYWNyb1NldC0+ZW5kKCkpCiAgICAgewotICAgICAgICBpZiAoaXRlci0+
c2Vjb25kLnByZWRlZmluZWQpCisgICAgICAgIGlmIChpdGVyLT5zZWNvbmQtPnByZWRlZmluZWQp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNz
OjpQUF9NQUNST19QUkVERUZJTkVEX1VOREVGSU5FRCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICAgICAgbURp
YWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX01BQ1JPX1BSRURFRklORURfVU5ERUZJ
TkVELCB0b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
b2tlbi0+dGV4dCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgZWxz
ZSBpZiAoaXRlci0+c2Vjb25kLmV4cGFuc2lvbkNvdW50ID4gMCkKKyAgICAgICAgZWxzZSBpZiAo
aXRlci0+c2Vjb25kLT5leHBhbnNpb25Db3VudCA+IDApCiAgICAgICAgIHsKICAgICAgICAgICAg
IG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9NQUNST19VTkRFRklORURfV0hJ
TEVfSU5WT0tFRCwgdG9rZW4tPmxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdG9rZW4tPnRleHQpOwpAQCAtNDYyLDggKzQ1NSw3IEBAIHZvaWQgRGlyZWN0aXZlUGFy
c2VyOjpwYXJzZVVuZGVmKFRva2VuICp0b2tlbikKICAgICBtVG9rZW5pemVyLT5sZXgodG9rZW4p
OwogICAgIGlmICghaXNFT0QodG9rZW4pKQogICAgIHsKLSAgICAgICAgbURpYWdub3N0aWNzLT5y
ZXBvcnQoRGlhZ25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICBtRGlh
Z25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfVU5FWFBFQ1RFRF9UT0tFTiwgdG9rZW4t
PmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7CiAgICAgICAgIHNraXBVbnRpbEVPRChtVG9rZW5pemVy
LCB0b2tlbik7CiAgICAgfQogfQpAQCAtNDkyLDggKzQ4NCw4IEBAIHZvaWQgRGlyZWN0aXZlUGFy
c2VyOjpwYXJzZUVsc2UoVG9rZW4gKnRva2VuKQogCiAgICAgaWYgKG1Db25kaXRpb25hbFN0YWNr
LmVtcHR5KCkpCiAgICAgewotICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGlj
czo6UFBfQ09ORElUSU9OQUxfRUxTRV9XSVRIT1VUX0lGLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0b2tlbi0+bG9jYXRpb24sIHRva2VuLT50ZXh0KTsKKyAgICAgICAgbURpYWdub3N0
aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFMX0VMU0VfV0lUSE9VVF9JRiwg
dG9rZW4tPmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+dGV4
dCk7CiAgICAgICAgIHNraXBVbnRpbEVPRChtVG9rZW5pemVyLCB0b2tlbik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC01MDcsMjIgKzQ5OSwyMiBAQCB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6
cGFyc2VFbHNlKFRva2VuICp0b2tlbikKICAgICB9CiAgICAgaWYgKGJsb2NrLmZvdW5kRWxzZUdy
b3VwKQogICAgIHsKLSAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQ
X0NPTkRJVElPTkFMX0VMU0VfQUZURVJfRUxTRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7CisgICAgICAgIG1EaWFnbm9zdGljcy0+
cmVwb3J0KERpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9FTFNFX0FGVEVSX0VMU0UsIHRva2Vu
LT5sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4tPnRleHQpOwog
ICAgICAgICBza2lwVW50aWxFT0QobVRva2VuaXplciwgdG9rZW4pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYmxvY2suZm91bmRFbHNlR3JvdXAgPSB0cnVlOwotICAgIGJsb2NrLnNr
aXBHcm91cCA9IGJsb2NrLmZvdW5kVmFsaWRHcm91cDsKKyAgICBibG9jay5mb3VuZEVsc2VHcm91
cCAgPSB0cnVlOworICAgIGJsb2NrLnNraXBHcm91cCAgICAgICA9IGJsb2NrLmZvdW5kVmFsaWRH
cm91cDsKICAgICBibG9jay5mb3VuZFZhbGlkR3JvdXAgPSB0cnVlOwogCiAgICAgLy8gQ2hlY2sg
aWYgdGhlcmUgYXJlIGV4dHJhIHRva2VucyBhZnRlciAjZWxzZS4KICAgICBtVG9rZW5pemVyLT5s
ZXgodG9rZW4pOwogICAgIGlmICghaXNFT0QodG9rZW4pKQogICAgIHsKLSAgICAgICAgbURpYWdu
b3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFMX1VORVhQRUNURURfVE9L
RU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4t
PnRleHQpOworICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfQ09O
RElUSU9OQUxfVU5FWFBFQ1RFRF9UT0tFTiwgdG9rZW4tPmxvY2F0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0b2tlbi0+dGV4dCk7CiAgICAgICAgIHNraXBVbnRpbEVPRChtVG9r
ZW5pemVyLCB0b2tlbik7CiAgICAgfQogfQpAQCAtNTMzLDggKzUyNSw4IEBAIHZvaWQgRGlyZWN0
aXZlUGFyc2VyOjpwYXJzZUVsaWYoVG9rZW4gKnRva2VuKQogCiAgICAgaWYgKG1Db25kaXRpb25h
bFN0YWNrLmVtcHR5KCkpCiAgICAgewotICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFn
bm9zdGljczo6UFBfQ09ORElUSU9OQUxfRUxJRl9XSVRIT1VUX0lGLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0b2tlbi0+bG9jYXRpb24sIHRva2VuLT50ZXh0KTsKKyAgICAgICAgbURp
YWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFMX0VMSUZfV0lUSE9V
VF9JRiwgdG9rZW4tPmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tl
bi0+dGV4dCk7CiAgICAgICAgIHNraXBVbnRpbEVPRChtVG9rZW5pemVyLCB0b2tlbik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC01NDgsOCArNTQwLDggQEAgdm9pZCBEaXJlY3RpdmVQYXJz
ZXI6OnBhcnNlRWxpZihUb2tlbiAqdG9rZW4pCiAgICAgfQogICAgIGlmIChibG9jay5mb3VuZEVs
c2VHcm91cCkKICAgICB7Ci0gICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNz
OjpQUF9DT05ESVRJT05BTF9FTElGX0FGVEVSX0VMU0UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICBtRGlhZ25vc3Rp
Y3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfRUxJRl9BRlRFUl9FTFNFLCB0
b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0
KTsKICAgICAgICAgc2tpcFVudGlsRU9EKG1Ub2tlbml6ZXIsIHRva2VuKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTU2Miw4ICs1NTQsOCBAQCB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6cGFy
c2VFbGlmKFRva2VuICp0b2tlbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGludCBl
eHByZXNzaW9uID0gcGFyc2VFeHByZXNzaW9uSWYodG9rZW4pOwotICAgIGJsb2NrLnNraXBHcm91
cCA9IGV4cHJlc3Npb24gPT0gMDsKKyAgICBpbnQgZXhwcmVzc2lvbiAgICAgICAgPSBwYXJzZUV4
cHJlc3Npb25JZih0b2tlbik7CisgICAgYmxvY2suc2tpcEdyb3VwICAgICAgID0gZXhwcmVzc2lv
biA9PSAwOwogICAgIGJsb2NrLmZvdW5kVmFsaWRHcm91cCA9IGV4cHJlc3Npb24gIT0gMDsKIH0K
IApAQCAtNTczLDggKzU2NSw4IEBAIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZUVuZGlmKFRv
a2VuICp0b2tlbikKIAogICAgIGlmIChtQ29uZGl0aW9uYWxTdGFjay5lbXB0eSgpKQogICAgIHsK
LSAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFM
X0VORElGX1dJVEhPVVRfSUYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5s
b2NhdGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFn
bm9zdGljczo6UFBfQ09ORElUSU9OQUxfRU5ESUZfV0lUSE9VVF9JRiwgdG9rZW4tPmxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+dGV4dCk7CiAgICAgICAgIHNr
aXBVbnRpbEVPRChtVG9rZW5pemVyLCB0b2tlbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC01ODUsOCArNTc3LDggQEAgdm9pZCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlRW5kaWYoVG9rZW4g
KnRva2VuKQogICAgIG1Ub2tlbml6ZXItPmxleCh0b2tlbik7CiAgICAgaWYgKCFpc0VPRCh0b2tl
bikpCiAgICAgewotICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBf
Q09ORElUSU9OQUxfVU5FWFBFQ1RFRF9UT0tFTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7CisgICAgICAgIG1EaWFnbm9zdGljcy0+
cmVwb3J0KERpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RPS0VOLCB0b2tl
bi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0KTsK
ICAgICAgICAgc2tpcFVudGlsRU9EKG1Ub2tlbml6ZXIsIHRva2VuKTsKICAgICB9CiB9CkBAIC02
MzAsMjUgKzYyMiwyNSBAQCB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VQcmFnbWEoVG9rZW4g
KnRva2VuKQogICAgIH0KICAgICB3aGlsZSAoKHRva2VuLT50eXBlICE9ICdcbicpICYmICh0b2tl
bi0+dHlwZSAhPSBUb2tlbjo6TEFTVCkpCiAgICAgewotICAgICAgICBzd2l0Y2goc3RhdGUrKykK
KyAgICAgICAgc3dpdGNoIChzdGF0ZSsrKQogICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBQUkFH
TUFfTkFNRToKLSAgICAgICAgICAgIG5hbWUgPSB0b2tlbi0+dGV4dDsKLSAgICAgICAgICAgIHZh
bGlkID0gdmFsaWQgJiYgKHRva2VuLT50eXBlID09IFRva2VuOjpJREVOVElGSUVSKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgTEVGVF9QQVJFTjoKLSAgICAgICAgICAgIHZh
bGlkID0gdmFsaWQgJiYgKHRva2VuLT50eXBlID09ICcoJyk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICBjYXNlIFBSQUdNQV9WQUxVRToKLSAgICAgICAgICAgIHZhbHVlID0gdG9rZW4t
PnRleHQ7Ci0gICAgICAgICAgICB2YWxpZCA9IHZhbGlkICYmICh0b2tlbi0+dHlwZSA9PSBUb2tl
bjo6SURFTlRJRklFUik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIFJJR0hU
X1BBUkVOOgotICAgICAgICAgICAgdmFsaWQgPSB2YWxpZCAmJiAodG9rZW4tPnR5cGUgPT0gJykn
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICB2
YWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFBSQUdN
QV9OQU1FOgorICAgICAgICAgICAgICAgIG5hbWUgID0gdG9rZW4tPnRleHQ7CisgICAgICAgICAg
ICAgICAgdmFsaWQgPSB2YWxpZCAmJiAodG9rZW4tPnR5cGUgPT0gVG9rZW46OklERU5USUZJRVIp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBMRUZUX1BBUkVOOgor
ICAgICAgICAgICAgICAgIHZhbGlkID0gdmFsaWQgJiYgKHRva2VuLT50eXBlID09ICcoJyk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFBSQUdNQV9WQUxVRToKKyAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHRva2VuLT50ZXh0OworICAgICAgICAgICAgICAgIHZhbGlk
ID0gdmFsaWQgJiYgKHRva2VuLT50eXBlID09IFRva2VuOjpJREVOVElGSUVSKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUklHSFRfUEFSRU46CisgICAgICAgICAg
ICAgICAgdmFsaWQgPSB2YWxpZCAmJiAodG9rZW4tPnR5cGUgPT0gJyknKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdmFsaWQg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBtVG9r
ZW5pemVyLT5sZXgodG9rZW4pOwogICAgIH0KQEAgLTY1OCw4ICs2NTAsNyBAQCB2b2lkIERpcmVj
dGl2ZVBhcnNlcjo6cGFyc2VQcmFnbWEoVG9rZW4gKnRva2VuKQogICAgICAgICAgICAgICAgICAg
ICAgIChzdGF0ZSA9PSBSSUdIVF9QQVJFTiArIDEpKTsgIC8vIFdpdGggdmFsdWUuCiAgICAgaWYg
KCF2YWxpZCkKICAgICB7Ci0gICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNz
OjpQUF9VTlJFQ09HTklaRURfUFJBR01BLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
b2tlbi0+bG9jYXRpb24sIG5hbWUpOworICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFn
bm9zdGljczo6UFBfVU5SRUNPR05JWkVEX1BSQUdNQSwgdG9rZW4tPmxvY2F0aW9uLCBuYW1lKTsK
ICAgICB9CiAgICAgZWxzZSBpZiAoc3RhdGUgPiBQUkFHTUFfTkFNRSkgIC8vIERvIG5vdCBub3Rp
ZnkgZm9yIGVtcHR5IHByYWdtYS4KICAgICB7CkBAIC02ODcsNDcgKzY3OCw0OSBAQCB2b2lkIERp
cmVjdGl2ZVBhcnNlcjo6cGFyc2VFeHRlbnNpb24oVG9rZW4gKnRva2VuKQogICAgIHsKICAgICAg
ICAgc3dpdGNoIChzdGF0ZSsrKQogICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBFWFRfTkFNRToK
LSAgICAgICAgICAgIGlmICh2YWxpZCAmJiAodG9rZW4tPnR5cGUgIT0gVG9rZW46OklERU5USUZJ
RVIpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0
KERpYWdub3N0aWNzOjpQUF9JTlZBTElEX0VYVEVOU0lPTl9OQU1FLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOwotICAg
ICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAodmFsaWQpIG5hbWUgPSB0b2tlbi0+dGV4dDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgIGNhc2UgQ09MT046Ci0gICAgICAgICAgICBpZiAodmFsaWQgJiYgKHRva2VuLT50eXBlICE9
ICc6JykpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbURpYWdub3N0aWNzLT5yZXBv
cnQoRGlhZ25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7Ci0gICAgICAg
ICAgICAgICAgdmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgIGNhc2UgRVhUX0JFSEFWSU9SOgotICAgICAgICAgICAgaWYgKHZhbGlkICYm
ICh0b2tlbi0+dHlwZSAhPSBUb2tlbjo6SURFTlRJRklFUikpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX0lOVkFMSURf
RVhURU5TSU9OX0JFSEFWSU9SLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOwotICAgICAgICAgICAgICAgIHZhbGlkID0g
ZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmFsaWQpIGJlaGF2aW9yID0g
dG9rZW4tPnRleHQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgaWYgKHZhbGlkKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1EaWFn
bm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9VTkVYUEVDVEVEX1RPS0VOLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRl
eHQpOwotICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRVhUX05BTUU6CisgICAgICAgICAgICAg
ICAgaWYgKHZhbGlkICYmICh0b2tlbi0+dHlwZSAhPSBUb2tlbjo6SURFTlRJRklFUikpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChE
aWFnbm9zdGljczo6UFBfSU5WQUxJRF9FWFRFTlNJT05fTkFNRSwgdG9rZW4tPmxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+dGV4dCk7Cisg
ICAgICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIGlmICh2YWxpZCkKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHRva2Vu
LT50ZXh0OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xPTjoK
KyAgICAgICAgICAgICAgICBpZiAodmFsaWQgJiYgKHRva2VuLT50eXBlICE9ICc6JykpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChE
aWFnbm9zdGljczo6UFBfVU5FWFBFQ1RFRF9UT0tFTiwgdG9rZW4tPmxvY2F0aW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+dGV4dCk7CisgICAgICAg
ICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFWFRfQkVIQVZJT1I6CisgICAgICAgICAg
ICAgICAgaWYgKHZhbGlkICYmICh0b2tlbi0+dHlwZSAhPSBUb2tlbjo6SURFTlRJRklFUikpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9y
dChEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9FWFRFTlNJT05fQkVIQVZJT1IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRl
eHQpOworICAgICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBpZiAodmFsaWQpCisgICAgICAgICAgICAgICAgICAgIGJlaGF2
aW9yID0gdG9rZW4tPnRleHQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIGlmICh2YWxpZCkKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9V
TkVYUEVDVEVEX1RPS0VOLCB0b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgdmFs
aWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgbVRva2VuaXplci0+bGV4KHRva2VuKTsKICAgICB9CiAgICAgaWYg
KHZhbGlkICYmIChzdGF0ZSAhPSBFWFRfQkVIQVZJT1IgKyAxKSkKICAgICB7Ci0gICAgICAgIG1E
aWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9JTlZBTElEX0VYVEVOU0lPTl9ESVJF
Q1RJVkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9r
ZW4tPnRleHQpOworICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBf
SU5WQUxJRF9FWFRFTlNJT05fRElSRUNUSVZFLCB0b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0KTsKICAgICAgICAgdmFsaWQgPSBmYWxzZTsK
ICAgICB9CiAgICAgaWYgKHZhbGlkICYmIG1TZWVuTm9uUHJlcHJvY2Vzc29yVG9rZW4pCkBAIC03
NTQsOCArNzQ3LDggQEAgdm9pZCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlVmVyc2lvbihUb2tlbiAq
dG9rZW4pCiAKICAgICBpZiAobVBhc3RGaXJzdFN0YXRlbWVudCkKICAgICB7Ci0gICAgICAgIG1E
aWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9WRVJTSU9OX05PVF9GSVJTVF9TVEFU
RU1FTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9r
ZW4tPnRleHQpOworICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBf
VkVSU0lPTl9OT1RfRklSU1RfU1RBVEVNRU5ULCB0b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0KTsKICAgICAgICAgc2tpcFVudGlsRU9EKG1U
b2tlbml6ZXIsIHRva2VuKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc2Nyw0NyArNzYw
LDQ3IEBAIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZVZlcnNpb24oVG9rZW4gKnRva2VuKQog
ICAgICAgICBWRVJTSU9OX0VORExJTkUKICAgICB9OwogCi0gICAgYm9vbCB2YWxpZCA9IHRydWU7
CisgICAgYm9vbCB2YWxpZCAgPSB0cnVlOwogICAgIGludCB2ZXJzaW9uID0gMDsKLSAgICBpbnQg
c3RhdGUgPSBWRVJTSU9OX05VTUJFUjsKKyAgICBpbnQgc3RhdGUgICA9IFZFUlNJT05fTlVNQkVS
OwogCiAgICAgbVRva2VuaXplci0+bGV4KHRva2VuKTsKICAgICB3aGlsZSAodmFsaWQgJiYgKHRv
a2VuLT50eXBlICE9ICdcbicpICYmICh0b2tlbi0+dHlwZSAhPSBUb2tlbjo6TEFTVCkpCiAgICAg
ewogICAgICAgICBzd2l0Y2ggKHN0YXRlKQogICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBWRVJT
SU9OX05VTUJFUjoKLSAgICAgICAgICAgIGlmICh0b2tlbi0+dHlwZSAhPSBUb2tlbjo6Q09OU1Rf
SU5UKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0
KERpYWdub3N0aWNzOjpQUF9JTlZBTElEX1ZFUlNJT05fTlVNQkVSLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOwotICAg
ICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBp
ZiAodmFsaWQgJiYgIXRva2VuLT5pVmFsdWUoJnZlcnNpb24pKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9JTlRFR0VS
X09WRVJGTE9XLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT5s
b2NhdGlvbiwgdG9rZW4tPnRleHQpOwotICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmFsaWQpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgc3RhdGUgPSAodmVyc2lvbiA8IDMwMCkgPyBWRVJTSU9OX0VORExJTkUgOiBW
RVJTSU9OX1BST0ZJTEU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICBjYXNlIFZFUlNJT05fUFJPRklMRToKLSAgICAgICAgICAgIGlmICh0b2tlbi0+dHlwZSAh
PSBUb2tlbjo6SURFTlRJRklFUiB8fCB0b2tlbi0+dGV4dCAhPSAiZXMiKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9J
TlZBTElEX1ZFUlNJT05fRElSRUNUSVZFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRva2VuLT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICAgICAgY2FzZSBW
RVJTSU9OX05VTUJFUjoKKyAgICAgICAgICAgICAgICBpZiAodG9rZW4tPnR5cGUgIT0gVG9rZW46
OkNPTlNUX0lOVCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1EaWFn
bm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9JTlZBTElEX1ZFUlNJT05fTlVNQkVSLCB0
b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRva2VuLT50ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHZhbGlkICYmICF0b2tlbi0+aVZhbHVl
KCZ2ZXJzaW9uKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1EaWFn
bm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9JTlRFR0VSX09WRVJGTE9XLCB0b2tlbi0+
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vu
LT50ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHZhbGlkKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgc3RhdGUgPSAodmVyc2lvbiA8IDMwMCkgPyBWRVJTSU9OX0VORExJ
TkUgOiBWRVJTSU9OX1BST0ZJTEU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBWRVJTSU9OX1BST0ZJTEU6CisgICAgICAgICAgICAg
ICAgaWYgKHRva2VuLT50eXBlICE9IFRva2VuOjpJREVOVElGSUVSIHx8IHRva2VuLT50ZXh0ICE9
ICJlcyIpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBtRGlhZ25vc3Rp
Y3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9WRVJTSU9OX0RJUkVDVElWRSwgdG9r
ZW4tPmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
b2tlbi0+dGV4dCk7CisgICAgICAgICAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXRlID0gVkVSU0lPTl9FTkRMSU5FOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfVU5FWFBFQ1RFRF9UT0tFTiwg
dG9rZW4tPmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRv
a2VuLT50ZXh0KTsKICAgICAgICAgICAgICAgICB2YWxpZCA9IGZhbHNlOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgc3RhdGUgPSBWRVJTSU9OX0VORExJTkU7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQo
RGlhZ25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0b2tlbi0+bG9jYXRpb24sIHRva2VuLT50ZXh0KTsKLSAgICAgICAgICAgIHZh
bGlkID0gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCiAgICAgICAgIG1Ub2tlbml6ZXItPmxleCh0b2tlbik7CkBAIC04MTUsMTUg
KzgwOCwxNSBAQCB2b2lkIERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VWZXJzaW9uKFRva2VuICp0b2tl
bikKIAogICAgIGlmICh2YWxpZCAmJiAoc3RhdGUgIT0gVkVSU0lPTl9FTkRMSU5FKSkKICAgICB7
Ci0gICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9JTlZBTElEX1ZF
UlNJT05fRElSRUNUSVZFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+bG9j
YXRpb24sIHRva2VuLT50ZXh0KTsKKyAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25v
c3RpY3M6OlBQX0lOVkFMSURfVkVSU0lPTl9ESVJFQ1RJVkUsIHRva2VuLT5sb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4tPnRleHQpOwogICAgICAgICB2YWxpZCA9
IGZhbHNlOwogICAgIH0KIAogICAgIGlmICh2YWxpZCAmJiB2ZXJzaW9uID49IDMwMCAmJiB0b2tl
bi0+bG9jYXRpb24ubGluZSA+IDEpCiAgICAgewotICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9y
dChEaWFnbm9zdGljczo6UFBfVkVSU0lPTl9OT1RfRklSU1RfTElORV9FU1NMMywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7CisgICAg
ICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9WRVJTSU9OX05PVF9GSVJT
VF9MSU5FX0VTU0wzLCB0b2tlbi0+bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRva2VuLT50ZXh0KTsKICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICB9CiAKQEAgLTgz
OSwxMSArODMyLDExIEBAIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZUxpbmUoVG9rZW4gKnRv
a2VuKQogewogICAgIEFTU0VSVChnZXREaXJlY3RpdmUodG9rZW4pID09IERJUkVDVElWRV9MSU5F
KTsKIAotICAgIGJvb2wgdmFsaWQgPSB0cnVlOworICAgIGJvb2wgdmFsaWQgICAgICAgICAgICA9
IHRydWU7CiAgICAgYm9vbCBwYXJzZWRGaWxlTnVtYmVyID0gZmFsc2U7CiAgICAgaW50IGxpbmUg
PSAwLCBmaWxlID0gMDsKIAotICAgIE1hY3JvRXhwYW5kZXIgbWFjcm9FeHBhbmRlcihtVG9rZW5p
emVyLCBtTWFjcm9TZXQsIG1EaWFnbm9zdGljcyk7CisgICAgTWFjcm9FeHBhbmRlciBtYWNyb0V4
cGFuZGVyKG1Ub2tlbml6ZXIsIG1NYWNyb1NldCwgbURpYWdub3N0aWNzLCBtTWF4TWFjcm9FeHBh
bnNpb25EZXB0aCk7CiAKICAgICAvLyBMZXggdGhlIGZpcnN0IHRva2VuIGFmdGVyICIjbGluZSIg
c28gd2UgY2FuIGNoZWNrIGl0IGZvciBFT0QuCiAgICAgbWFjcm9FeHBhbmRlci5sZXgodG9rZW4p
OwpAQCAtODgxLDggKzg3NCw4IEBAIHZvaWQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZUxpbmUoVG9r
ZW4gKnRva2VuKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAodmFsaWQpCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQ
X1VORVhQRUNURURfVE9LRU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7CisgICAgICAgICAgICAgICAgbURpYWdub3N0
aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU4sIHRva2VuLT5sb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+dGV4dCk7
CiAgICAgICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHNraXBVbnRpbEVPRChtVG9rZW5pemVyLCB0b2tlbik7CkBAIC05MDIsMTQgKzg5NSwxNCBA
QCBib29sIERpcmVjdGl2ZVBhcnNlcjo6c2tpcHBpbmcoKSBjb25zdAogICAgIGlmIChtQ29uZGl0
aW9uYWxTdGFjay5lbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBjb25zdCBD
b25kaXRpb25hbEJsb2NrJiBibG9jayA9IG1Db25kaXRpb25hbFN0YWNrLmJhY2soKTsKKyAgICBj
b25zdCBDb25kaXRpb25hbEJsb2NrICZibG9jayA9IG1Db25kaXRpb25hbFN0YWNrLmJhY2soKTsK
ICAgICByZXR1cm4gYmxvY2suc2tpcEJsb2NrIHx8IGJsb2NrLnNraXBHcm91cDsKIH0KIAogdm9p
ZCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlQ29uZGl0aW9uYWxJZihUb2tlbiAqdG9rZW4pCiB7CiAg
ICAgQ29uZGl0aW9uYWxCbG9jayBibG9jazsKLSAgICBibG9jay50eXBlID0gdG9rZW4tPnRleHQ7
CisgICAgYmxvY2sudHlwZSAgICAgPSB0b2tlbi0+dGV4dDsKICAgICBibG9jay5sb2NhdGlvbiA9
IHRva2VuLT5sb2NhdGlvbjsKIAogICAgIGlmIChza2lwcGluZygpKQpAQCAtOTI4LDIwICs5MjEs
MjAgQEAgdm9pZCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlQ29uZGl0aW9uYWxJZihUb2tlbiAqdG9r
ZW4pCiAgICAgICAgIGludCBleHByZXNzaW9uID0gMDsKICAgICAgICAgc3dpdGNoIChkaXJlY3Rp
dmUpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIERJUkVDVElWRV9JRjoKLSAgICAgICAgICAg
IGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb25JZih0b2tlbik7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICBjYXNlIERJUkVDVElWRV9JRkRFRjoKLSAgICAgICAgICAgIGV4cHJlc3Np
b24gPSBwYXJzZUV4cHJlc3Npb25JZmRlZih0b2tlbik7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICBjYXNlIERJUkVDVElWRV9JRk5ERUY6Ci0gICAgICAgICAgICBleHByZXNzaW9uID0g
cGFyc2VFeHByZXNzaW9uSWZkZWYodG9rZW4pID09IDAgPyAxIDogMDsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0g
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBESVJFQ1RJVkVfSUY6CisgICAg
ICAgICAgICAgICAgZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbklmKHRva2VuKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRElSRUNUSVZFX0lGREVGOgorICAg
ICAgICAgICAgICAgIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb25JZmRlZih0b2tlbik7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIERJUkVDVElWRV9JRk5ERUY6
CisgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbklmZGVmKHRva2Vu
KSA9PSAwID8gMSA6IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICAgICAgYmxvY2suc2tpcEdyb3VwID0gZXhwcmVzc2lvbiA9PSAw
OworICAgICAgICBibG9jay5za2lwR3JvdXAgICAgICAgPSBleHByZXNzaW9uID09IDA7CiAgICAg
ICAgIGJsb2NrLmZvdW5kVmFsaWRHcm91cCA9IGV4cHJlc3Npb24gIT0gMDsKICAgICB9CiAgICAg
bUNvbmRpdGlvbmFsU3RhY2sucHVzaF9iYWNrKGJsb2NrKTsKQEAgLTk1MiwxMyArOTQ1LDEzIEBA
IGludCBEaXJlY3RpdmVQYXJzZXI6OnBhcnNlRXhwcmVzc2lvbklmKFRva2VuICp0b2tlbikKICAg
ICBBU1NFUlQoKGdldERpcmVjdGl2ZSh0b2tlbikgPT0gRElSRUNUSVZFX0lGKSB8fCAoZ2V0RGly
ZWN0aXZlKHRva2VuKSA9PSBESVJFQ1RJVkVfRUxJRikpOwogCiAgICAgRGVmaW5lZFBhcnNlciBk
ZWZpbmVkUGFyc2VyKG1Ub2tlbml6ZXIsIG1NYWNyb1NldCwgbURpYWdub3N0aWNzKTsKLSAgICBN
YWNyb0V4cGFuZGVyIG1hY3JvRXhwYW5kZXIoJmRlZmluZWRQYXJzZXIsIG1NYWNyb1NldCwgbURp
YWdub3N0aWNzKTsKKyAgICBNYWNyb0V4cGFuZGVyIG1hY3JvRXhwYW5kZXIoJmRlZmluZWRQYXJz
ZXIsIG1NYWNyb1NldCwgbURpYWdub3N0aWNzLCBtTWF4TWFjcm9FeHBhbnNpb25EZXB0aCk7CiAg
ICAgRXhwcmVzc2lvblBhcnNlciBleHByZXNzaW9uUGFyc2VyKCZtYWNyb0V4cGFuZGVyLCBtRGlh
Z25vc3RpY3MpOwogCiAgICAgaW50IGV4cHJlc3Npb24gPSAwOwogICAgIEV4cHJlc3Npb25QYXJz
ZXI6OkVycm9yU2V0dGluZ3MgZXJyb3JTZXR0aW5nczsKICAgICBlcnJvclNldHRpbmdzLmludGVn
ZXJMaXRlcmFsc011c3RGaXQzMkJpdFNpZ25lZFJhbmdlID0gZmFsc2U7Ci0gICAgZXJyb3JTZXR0
aW5ncy51bmV4cGVjdGVkSWRlbnRpZmllciAgICAgICAgICAgICAgICAgICA9IERpYWdub3N0aWNz
OjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RPS0VOOworICAgIGVycm9yU2V0dGluZ3MudW5l
eHBlY3RlZElkZW50aWZpZXIgPSBEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfVU5FWFBFQ1RF
RF9UT0tFTjsKIAogICAgIGJvb2wgdmFsaWQgPSB0cnVlOwogICAgIGV4cHJlc3Npb25QYXJzZXIu
cGFyc2UodG9rZW4sICZleHByZXNzaW9uLCBmYWxzZSwgZXJyb3JTZXR0aW5ncywgJnZhbGlkKTsK
QEAgLTk2Niw4ICs5NTksOCBAQCBpbnQgRGlyZWN0aXZlUGFyc2VyOjpwYXJzZUV4cHJlc3Npb25J
ZihUb2tlbiAqdG9rZW4pCiAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIHRva2VucyBhZnRlciAj
aWYgZXhwcmVzc2lvbi4KICAgICBpZiAoIWlzRU9EKHRva2VuKSkKICAgICB7Ci0gICAgICAgIG1E
aWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVE
X1RPS0VOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+bG9jYXRpb24sIHRv
a2VuLT50ZXh0KTsKKyAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQ
X0NPTkRJVElPTkFMX1VORVhQRUNURURfVE9LRU4sIHRva2VuLT5sb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdG9rZW4tPnRleHQpOwogICAgICAgICBza2lwVW50aWxFT0Qo
bVRva2VuaXplciwgdG9rZW4pOwogICAgIH0KIApAQCAtOTgxLDIxICs5NzQsMjAgQEAgaW50IERp
cmVjdGl2ZVBhcnNlcjo6cGFyc2VFeHByZXNzaW9uSWZkZWYoVG9rZW4gKnRva2VuKQogICAgIG1U
b2tlbml6ZXItPmxleCh0b2tlbik7CiAgICAgaWYgKHRva2VuLT50eXBlICE9IFRva2VuOjpJREVO
VElGSUVSKQogICAgIHsKLSAgICAgICAgbURpYWdub3N0aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6
OlBQX1VORVhQRUNURURfVE9LRU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vu
LT5sb2NhdGlvbiwgdG9rZW4tPnRleHQpOworICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChE
aWFnbm9zdGljczo6UFBfVU5FWFBFQ1RFRF9UT0tFTiwgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+
dGV4dCk7CiAgICAgICAgIHNraXBVbnRpbEVPRChtVG9rZW5pemVyLCB0b2tlbik7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAogICAgIE1hY3JvU2V0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0g
bU1hY3JvU2V0LT5maW5kKHRva2VuLT50ZXh0KTsKLSAgICBpbnQgZXhwcmVzc2lvbiA9IGl0ZXIg
IT0gbU1hY3JvU2V0LT5lbmQoKSA/IDEgOiAwOworICAgIGludCBleHByZXNzaW9uICAgICAgICAg
ICAgICAgID0gaXRlciAhPSBtTWFjcm9TZXQtPmVuZCgpID8gMSA6IDA7CiAKICAgICAvLyBDaGVj
ayBpZiB0aGVyZSBhcmUgdG9rZW5zIGFmdGVyICNpZmRlZiBleHByZXNzaW9uLgogICAgIG1Ub2tl
bml6ZXItPmxleCh0b2tlbik7CiAgICAgaWYgKCFpc0VPRCh0b2tlbikpCiAgICAgewotICAgICAg
ICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfVU5FWFBF
Q1RFRF9UT0tFTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4tPmxvY2F0aW9u
LCB0b2tlbi0+dGV4dCk7CisgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNz
OjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RPS0VOLCB0b2tlbi0+bG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLT50ZXh0KTsKICAgICAgICAgc2tpcFVudGls
RU9EKG1Ub2tlbml6ZXIsIHRva2VuKTsKICAgICB9CiAgICAgcmV0dXJuIGV4cHJlc3Npb247CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vz
c29yL0RpcmVjdGl2ZVBhcnNlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVQYXJzZXIuaAppbmRleCBmMGU4ODljOGEwOC4uNDIy
OWNiYTVhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvRGlyZWN0aXZlUGFyc2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVQYXJzZXIuaApAQCAtMjQs
MTIgKzI0LDEyIEBAIGNsYXNzIERpcmVjdGl2ZVBhcnNlciA6IHB1YmxpYyBMZXhlcgogICAgIERp
cmVjdGl2ZVBhcnNlcihUb2tlbml6ZXIgKnRva2VuaXplciwKICAgICAgICAgICAgICAgICAgICAg
TWFjcm9TZXQgKm1hY3JvU2V0LAogICAgICAgICAgICAgICAgICAgICBEaWFnbm9zdGljcyAqZGlh
Z25vc3RpY3MsCi0gICAgICAgICAgICAgICAgICAgIERpcmVjdGl2ZUhhbmRsZXIgKmRpcmVjdGl2
ZUhhbmRsZXIpOworICAgICAgICAgICAgICAgICAgICBEaXJlY3RpdmVIYW5kbGVyICpkaXJlY3Rp
dmVIYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICBpbnQgbWF4TWFjcm9FeHBhbnNpb25EZXB0
aCk7CiAKICAgICB2b2lkIGxleChUb2tlbiAqdG9rZW4pIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6
Ci0KICAgICB2b2lkIHBhcnNlRGlyZWN0aXZlKFRva2VuICp0b2tlbik7CiAgICAgdm9pZCBwYXJz
ZURlZmluZShUb2tlbiAqdG9rZW4pOwogICAgIHZvaWQgcGFyc2VVbmRlZihUb2tlbiAqdG9rZW4p
OwpAQCAtNjAsMjIgKzYwLDIxIEBAIGNsYXNzIERpcmVjdGl2ZVBhcnNlciA6IHB1YmxpYyBMZXhl
cgogICAgICAgICBib29sIGZvdW5kRWxzZUdyb3VwOwogCiAgICAgICAgIENvbmRpdGlvbmFsQmxv
Y2soKQotICAgICAgICAgICAgOiBza2lwQmxvY2soZmFsc2UpLAotICAgICAgICAgICAgICBza2lw
R3JvdXAoZmFsc2UpLAotICAgICAgICAgICAgICBmb3VuZFZhbGlkR3JvdXAoZmFsc2UpLAotICAg
ICAgICAgICAgICBmb3VuZEVsc2VHcm91cChmYWxzZSkKKyAgICAgICAgICAgIDogc2tpcEJsb2Nr
KGZhbHNlKSwgc2tpcEdyb3VwKGZhbHNlKSwgZm91bmRWYWxpZEdyb3VwKGZhbHNlKSwgZm91bmRF
bHNlR3JvdXAoZmFsc2UpCiAgICAgICAgIHsKICAgICAgICAgfQogICAgIH07CiAgICAgYm9vbCBt
UGFzdEZpcnN0U3RhdGVtZW50OwotICAgIGJvb2wgbVNlZW5Ob25QcmVwcm9jZXNzb3JUb2tlbjsg
Ly8gVHJhY2tzIGlmIGEgbm9uLXByZXByb2Nlc3NvciB0b2tlbiBoYXMgYmVlbiBzZWVuIHlldC4g
IFNvbWUgbWFjcm9zLCBzdWNoIGFzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyAjZXh0ZW5zaW9uIG11c3QgYmUgZGVjbGFyZWQgYmVmb3JlIGFsbCBzaGFkZXIgY29kZS4K
KyAgICBib29sIG1TZWVuTm9uUHJlcHJvY2Vzc29yVG9rZW47ICAvLyBUcmFja3MgaWYgYSBub24t
cHJlcHJvY2Vzc29yIHRva2VuIGhhcyBiZWVuIHNlZW4geWV0LiAgU29tZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hY3Jvcywgc3VjaCBhcworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vICNleHRlbnNpb24gbXVzdCBiZSBkZWNsYXJlZCBi
ZWZvcmUgYWxsIHNoYWRlciBjb2RlLgogICAgIHN0ZDo6dmVjdG9yPENvbmRpdGlvbmFsQmxvY2s+
IG1Db25kaXRpb25hbFN0YWNrOwogICAgIFRva2VuaXplciAqbVRva2VuaXplcjsKICAgICBNYWNy
b1NldCAqbU1hY3JvU2V0OwogICAgIERpYWdub3N0aWNzICptRGlhZ25vc3RpY3M7CiAgICAgRGly
ZWN0aXZlSGFuZGxlciAqbURpcmVjdGl2ZUhhbmRsZXI7CiAgICAgaW50IG1TaGFkZXJWZXJzaW9u
OworICAgIGludCBtTWF4TWFjcm9FeHBhbnNpb25EZXB0aDsKIH07CiAKIH0gIC8vIG5hbWVzcGFj
ZSBwcApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lvblBhcnNlci5jcHAKaW5kZXggYThk
ZjIzNTFlYTguLjY5NzcwNDkwZTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lv
blBhcnNlci5jcHAKQEAgLTUwMiw3ICs1MDIsNyBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQx
NiB5eXJsaW5lW10gPQogewogICAgICAgIDAsICAgMTA4LCAgIDEwOCwgICAxMTUsICAgMTE2LCAg
IDEyNywgICAxMjcsICAgMTQ4LCAgIDE0OCwgICAxNjksCiAgICAgIDE3MiwgICAxNzUsICAgMTc4
LCAgIDE4MSwgICAxODQsICAgMTg3LCAgIDE5MCwgICAxOTMsICAgMTk2LCAgIDIyMSwKLSAgICAg
MjQ2LCAgIDI0OSwgICAyNTIsICAgMjcyLCAgIDI5OSwgICAzMDIsICAgMzA1LCAgIDMwOCwgICAz
MjAsICAgMzIzCisgICAgIDI0NiwgICAyNDksICAgMjUyLCAgIDI3OCwgICAzMDUsICAgMzA4LCAg
IDMxMSwgICAzMTQsICAgMzI2LCAgIDMyOQogfTsKICNlbmRpZgogCkBAIC0xNTg1LDYgKzE1ODUs
MTIgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAoeXl2YWwpID0gc3Rh
dGljX2Nhc3Q8WVlTVFlQRT4oMCk7CiAgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoKCh5eXZz
cFstMl0pID09IHN0ZDo6bnVtZXJpY19saW1pdHM8WVlTVFlQRT46Om1pbigpKSAmJiAoKHl5dnNw
WzBdKSA9PSAtMSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIENoZWNrIGZvciB0aGUgc3Bl
Y2lhbCBjYXNlIHdoZXJlIHRoZSBtaW5pbXVtIHJlcHJlc2VudGFibGUgbnVtYmVyIGlzCisgICAg
ICAgICAgICAvLyBkaXZpZGVkIGJ5IC0xLiBJZiBsZWZ0IGFsb25lIHRoaXMgaGFzIHVuZGVmaW5l
ZCByZXN1bHRzLgorICAgICAgICAgICAgKHl5dmFsKSA9IDA7CisgICAgICAgIH0KICAgICAgICAg
ZWxzZQogICAgICAgICB7CiAgICAgICAgICAgICAoeXl2YWwpID0gKHl5dnNwWy0yXSkgJSAoeXl2
c3BbMF0pOwpAQCAtMTYxMCw3ICsxNjE2LDcgQEAgeXlyZWR1Y2U6CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAoeXl2YWwpID0gc3RhdGljX2Nhc3Q8WVlTVFlQRT4oMCk7CiAgICAgICAgIH0K
LSAgICAgICAgZWxzZSBpZiAoKHl5dnNwWy0yXSkgPT0gc3RkOjpudW1lcmljX2xpbWl0czxZWVNU
WVBFPjo6bWluKCkgJiYgKHl5dnNwWzBdKSA9PSAtMSkKKyAgICAgICAgZWxzZSBpZiAoKCh5eXZz
cFstMl0pID09IHN0ZDo6bnVtZXJpY19saW1pdHM8WVlTVFlQRT46Om1pbigpKSAmJiAoKHl5dnNw
WzBdKSA9PSAtMSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIENoZWNrIGZvciB0aGUgc3Bl
Y2lhbCBjYXNlIHdoZXJlIHRoZSBtaW5pbXVtIHJlcHJlc2VudGFibGUgbnVtYmVyIGlzCiAgICAg
ICAgICAgICAvLyBkaXZpZGVkIGJ5IC0xLiBJZiBsZWZ0IGFsb25lIHRoaXMgbGVhZHMgdG8gaW50
ZWdlciBvdmVyZmxvdyBpbiBDKyssIHdoaWNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0V4cHJlc3Npb25QYXJzZXIueSBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvRXhwcmVzc2lv
blBhcnNlci55CmluZGV4IGE5ODYzOGE4ZGY4Li40ZGJjOWU4MjgzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9FeHByZXNzaW9u
UGFyc2VyLnkKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9FeHByZXNzaW9uUGFyc2VyLnkKQEAgLTI2NCw2ICsyNjQsMTIgQEAgZXhwcmVzc2lv
bgogICAgICAgICAgICAgfQogICAgICAgICAgICAgJCQgPSBzdGF0aWNfY2FzdDxZWVNUWVBFPigw
KTsKICAgICAgICAgfQorICAgICAgICBlbHNlIGlmICgoJDEgPT0gc3RkOjpudW1lcmljX2xpbWl0
czxZWVNUWVBFPjo6bWluKCkpICYmICgkMyA9PSAtMSkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IC8vIENoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSBtaW5pbXVtIHJlcHJlc2Vu
dGFibGUgbnVtYmVyIGlzCisgICAgICAgICAgICAvLyBkaXZpZGVkIGJ5IC0xLiBJZiBsZWZ0IGFs
b25lIHRoaXMgaGFzIHVuZGVmaW5lZCByZXN1bHRzLgorICAgICAgICAgICAgJCQgPSAwOworICAg
ICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAgJCQgPSAkMSAlICQz
OwpAQCAtMjg0LDcgKzI5MCw3IEBAIGV4cHJlc3Npb24KICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICQkID0gc3RhdGljX2Nhc3Q8WVlTVFlQRT4oMCk7CiAgICAgICAgIH0KLSAgICAgICAgZWxz
ZSBpZiAoJDEgPT0gc3RkOjpudW1lcmljX2xpbWl0czxZWVNUWVBFPjo6bWluKCkgJiYgJDMgPT0g
LTEpCisgICAgICAgIGVsc2UgaWYgKCgkMSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFlZU1RZUEU+
OjptaW4oKSkgJiYgKCQzID09IC0xKSkKICAgICAgICAgewogICAgICAgICAgICAgLy8gQ2hlY2sg
Zm9yIHRoZSBzcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIG1pbmltdW0gcmVwcmVzZW50YWJsZSBudW1i
ZXIgaXMKICAgICAgICAgICAgIC8vIGRpdmlkZWQgYnkgLTEuIElmIGxlZnQgYWxvbmUgdGhpcyBs
ZWFkcyB0byBpbnRlZ2VyIG92ZXJmbG93IGluIEMrKywgd2hpY2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5j
cHAKaW5kZXggOGJjZTU2ZmYyOWEuLmU1YmNkOGU0ZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0lucHV0LmNwcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL0lucHV0LmNw
cApAQCAtMTgsOSArMTgsOCBAQCBJbnB1dDo6SW5wdXQoKSA6IG1Db3VudCgwKSwgbVN0cmluZygw
KQogewogfQogCi1JbnB1dDo6SW5wdXQoc2l6ZV90IGNvdW50LCBjb25zdCBjaGFyICpjb25zdCBz
dHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdKSA6Ci0gICAgbUNvdW50KGNvdW50KSwKLSAgICBt
U3RyaW5nKHN0cmluZykKK0lucHV0OjpJbnB1dChzaXplX3QgY291bnQsIGNvbnN0IGNoYXIgKmNv
bnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10pCisgICAgOiBtQ291bnQoY291bnQpLCBt
U3RyaW5nKHN0cmluZykKIHsKICAgICBtTGVuZ3RoLnJlc2VydmUobUNvdW50KTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1Db3VudDsgKytpKQpAQCAtODcsNyArODYsNyBAQCBzaXplX3Qg
SW5wdXQ6OnJlYWQoY2hhciAqYnVmLCBzaXplX3QgbWF4U2l6ZSwgaW50ICpsaW5lTm8pCiAgICAg
d2hpbGUgKChuUmVhZCA8IG1heFJlYWQpICYmIChtUmVhZExvYy5zSW5kZXggPCBtQ291bnQpKQog
ICAgIHsKICAgICAgICAgc2l6ZV90IHNpemUgPSBtTGVuZ3RoW21SZWFkTG9jLnNJbmRleF0gLSBt
UmVhZExvYy5jSW5kZXg7Ci0gICAgICAgIHNpemUgPSBzdGQ6Om1pbihzaXplLCBtYXhTaXplKTsK
KyAgICAgICAgc2l6ZSAgICAgICAgPSBzdGQ6Om1pbihzaXplLCBtYXhTaXplKTsKICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIHsKICAgICAgICAgICAg
IC8vIFN0b3AgaWYgYSBwb3NzaWJsZSBsaW5lIGNvbnRpbnVhdGlvbiBpcyBlbmNvdW50ZXJlZC4K
QEAgLTk1LDcgKzk0LDcgQEAgc2l6ZV90IElucHV0OjpyZWFkKGNoYXIgKmJ1Ziwgc2l6ZV90IG1h
eFNpemUsIGludCAqbGluZU5vKQogICAgICAgICAgICAgLy8gYW5kIGluY3JlbWVudHMgbGluZSBu
dW1iZXIgaWYgbmVjZXNzYXJ5LgogICAgICAgICAgICAgaWYgKCoobVN0cmluZ1ttUmVhZExvYy5z
SW5kZXhdICsgbVJlYWRMb2MuY0luZGV4ICsgaSkgPT0gJ1xcJykKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBzaXplID0gaTsKKyAgICAgICAgICAgICAgICBzaXplICAgID0gaTsKICAg
ICAgICAgICAgICAgICBtYXhSZWFkID0gblJlYWQgKyBzaXplOyAgLy8gU3RvcCByZWFkaW5nIHJp
Z2h0IGJlZm9yZSB0aGUgYmFja3NsYXNoLgogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0x
MTQsNCArMTEzLDMgQEAgc2l6ZV90IElucHV0OjpyZWFkKGNoYXIgKmJ1Ziwgc2l6ZV90IG1heFNp
emUsIGludCAqbGluZU5vKQogfQogCiB9ICAvLyBuYW1lc3BhY2UgcHAKLQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1
dC5oCmluZGV4IGVjYmIwNDk2MmRmLi5kNWYzODU4MzJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvSW5wdXQuaApA
QCAtMjAsMTggKzIwLDkgQEAgY2xhc3MgSW5wdXQKICAgICBJbnB1dCgpOwogICAgIElucHV0KHNp
emVfdCBjb3VudCwgY29uc3QgY2hhciAqY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhb
XSk7CiAKLSAgICBzaXplX3QgY291bnQoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1D
b3VudDsKLSAgICB9Ci0gICAgY29uc3QgY2hhciAqc3RyaW5nKHNpemVfdCBpbmRleCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtU3RyaW5nW2luZGV4XTsKLSAgICB9Ci0gICAgc2l6ZV90
IGxlbmd0aChzaXplX3QgaW5kZXgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbUxlbmd0
aFtpbmRleF07Ci0gICAgfQorICAgIHNpemVfdCBjb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1Db3Vu
dDsgfQorICAgIGNvbnN0IGNoYXIgKnN0cmluZyhzaXplX3QgaW5kZXgpIGNvbnN0IHsgcmV0dXJu
IG1TdHJpbmdbaW5kZXhdOyB9CisgICAgc2l6ZV90IGxlbmd0aChzaXplX3QgaW5kZXgpIGNvbnN0
IHsgcmV0dXJuIG1MZW5ndGhbaW5kZXhdOyB9CiAKICAgICBzaXplX3QgcmVhZChjaGFyICpidWYs
IHNpemVfdCBtYXhTaXplLCBpbnQgKmxpbmVObyk7CiAKQEAgLTQwLDExICszMSw3IEBAIGNsYXNz
IElucHV0CiAgICAgICAgIHNpemVfdCBzSW5kZXg7ICAvLyBTdHJpbmcgaW5kZXg7CiAgICAgICAg
IHNpemVfdCBjSW5kZXg7ICAvLyBDaGFyIGluZGV4LgogCi0gICAgICAgIExvY2F0aW9uKCkKLSAg
ICAgICAgICAgIDogc0luZGV4KDApLAotICAgICAgICAgICAgICBjSW5kZXgoMCkKLSAgICAgICAg
ewotICAgICAgICB9CisgICAgICAgIExvY2F0aW9uKCkgOiBzSW5kZXgoMCksIGNJbmRleCgwKSB7
fQogICAgIH07CiAgICAgY29uc3QgTG9jYXRpb24gJnJlYWRMb2MoKSBjb25zdCB7IHJldHVybiBt
UmVhZExvYzsgfQogCkBAIC01NSw3ICs0Miw3IEBAIGNsYXNzIElucHV0CiAKICAgICAvLyBJbnB1
dC4KICAgICBzaXplX3QgbUNvdW50OwotICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqbVN0cmluZzsK
KyAgICBjb25zdCBjaGFyICpjb25zdCAqbVN0cmluZzsKICAgICBzdGQ6OnZlY3RvcjxzaXplX3Q+
IG1MZW5ndGg7CiAKICAgICBMb2NhdGlvbiBtUmVhZExvYzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm8uY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyby5jcHAK
aW5kZXggZjVjOTQzOTlkYjcuLjYxNjI3NjdkYWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvLmNwcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvLmNwcApA
QCAtMTQsOSArMTQsNyBAQCBuYW1lc3BhY2UgcHAKIAogYm9vbCBNYWNybzo6ZXF1YWxzKGNvbnN0
IE1hY3JvICZvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gKHR5cGUgPT0gb3RoZXIudHlwZSkg
JiYKLSAgICAgICAgICAgKG5hbWUgPT0gb3RoZXIubmFtZSkgJiYKLSAgICAgICAgICAgKHBhcmFt
ZXRlcnMgPT0gb3RoZXIucGFyYW1ldGVycykgJiYKKyAgICByZXR1cm4gKHR5cGUgPT0gb3RoZXIu
dHlwZSkgJiYgKG5hbWUgPT0gb3RoZXIubmFtZSkgJiYgKHBhcmFtZXRlcnMgPT0gb3RoZXIucGFy
YW1ldGVycykgJiYKICAgICAgICAgICAgKHJlcGxhY2VtZW50cyA9PSBvdGhlci5yZXBsYWNlbWVu
dHMpOwogfQogCkBAIC0yNiwxNCArMjQsMTMgQEAgdm9pZCBQcmVkZWZpbmVNYWNybyhNYWNyb1Nl
dCAqbWFjcm9TZXQsIGNvbnN0IGNoYXIgKm5hbWUsIGludCB2YWx1ZSkKICAgICB0b2tlbi50eXBl
ID0gVG9rZW46OkNPTlNUX0lOVDsKICAgICB0b2tlbi50ZXh0ID0gVG9TdHJpbmcodmFsdWUpOwog
Ci0gICAgTWFjcm8gbWFjcm87Ci0gICAgbWFjcm8ucHJlZGVmaW5lZCA9IHRydWU7Ci0gICAgbWFj
cm8udHlwZSAgICAgICA9IE1hY3JvOjprVHlwZU9iajsKLSAgICBtYWNyby5uYW1lID0gbmFtZTsK
LSAgICBtYWNyby5yZXBsYWNlbWVudHMucHVzaF9iYWNrKHRva2VuKTsKKyAgICBzdGQ6OnNoYXJl
ZF9wdHI8TWFjcm8+IG1hY3JvID0gc3RkOjptYWtlX3NoYXJlZDxNYWNybz4oKTsKKyAgICBtYWNy
by0+cHJlZGVmaW5lZCAgICAgICAgICAgID0gdHJ1ZTsKKyAgICBtYWNyby0+dHlwZSAgICAgICAg
ICAgICAgICAgID0gTWFjcm86OmtUeXBlT2JqOworICAgIG1hY3JvLT5uYW1lICAgICAgICAgICAg
ICAgICAgPSBuYW1lOworICAgIG1hY3JvLT5yZXBsYWNlbWVudHMucHVzaF9iYWNrKHRva2VuKTsK
IAogICAgICgqbWFjcm9TZXQpW25hbWVdID0gbWFjcm87CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBw
cAotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJl
cHJvY2Vzc29yL01hY3JvLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL01hY3JvLmgKaW5kZXggNTU3ZGYxNjNjMjAuLmY4MzVjNDJlNjJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29y
L01hY3JvLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9NYWNyby5oCkBAIC04LDYgKzgsNyBAQAogI2RlZmluZSBDT01QSUxFUl9QUkVQUk9D
RVNTT1JfTUFDUk9fSF8KIAogI2luY2x1ZGUgPG1hcD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5j
bHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4KIApAQCAtMzksNyArNDAsNyBAQCBzdHJ1
Y3QgTWFjcm8KICAgICBSZXBsYWNlbWVudHMgcmVwbGFjZW1lbnRzOwogfTsKIAotdHlwZWRlZiBz
dGQ6Om1hcDxzdGQ6OnN0cmluZywgTWFjcm8+IE1hY3JvU2V0OwordHlwZWRlZiBzdGQ6Om1hcDxz
dGQ6OnN0cmluZywgc3RkOjpzaGFyZWRfcHRyPE1hY3JvPj4gTWFjcm9TZXQ7CiAKIHZvaWQgUHJl
ZGVmaW5lTWFjcm8oTWFjcm9TZXQgKm1hY3JvU2V0LCBjb25zdCBjaGFyICpuYW1lLCBpbnQgdmFs
dWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL01hY3JvRXhwYW5kZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVyLmNwcAppbmRleCBmMzhiMzk2
MzUxNS4uY2MxMTVmOTExM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9wcmVwcm9jZXNzb3IvTWFjcm9FeHBhbmRlci5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVyLmNw
cApAQCAtMjIsNyArMjIsNyBAQCBjb25zdCBzaXplX3Qga01heENvbnRleHRUb2tlbnMgPSAxMDAw
MDsKIAogY2xhc3MgVG9rZW5MZXhlciA6IHB1YmxpYyBMZXhlcgogewotIHB1YmxpYzoKKyAgcHVi
bGljOgogICAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8VG9rZW4+IFRva2VuVmVjdG9yOwogCiAgICAg
VG9rZW5MZXhlcihUb2tlblZlY3RvciAqdG9rZW5zKQpAQCAtNDQsMjAgKzQ0LDU4IEBAIGNsYXNz
IFRva2VuTGV4ZXIgOiBwdWJsaWMgTGV4ZXIKICAgICAgICAgfQogICAgIH0KIAotIHByaXZhdGU6
CisgIHByaXZhdGU6CiAgICAgVG9rZW5WZWN0b3IgbVRva2VuczsKICAgICBUb2tlblZlY3Rvcjo6
Y29uc3RfaXRlcmF0b3IgbUl0ZXI7CiB9OwogCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAK
LU1hY3JvRXhwYW5kZXI6Ok1hY3JvRXhwYW5kZXIoTGV4ZXIgKmxleGVyLCBNYWNyb1NldCAqbWFj
cm9TZXQsIERpYWdub3N0aWNzICpkaWFnbm9zdGljcykKLSAgICA6IG1MZXhlcihsZXhlciksIG1N
YWNyb1NldChtYWNyb1NldCksIG1EaWFnbm9zdGljcyhkaWFnbm9zdGljcyksIG1Ub3RhbFRva2Vu
c0luQ29udGV4dHMoMCkKK2NsYXNzIE1hY3JvRXhwYW5kZXI6OlNjb3BlZE1hY3JvUmVlbmFibGVy
IGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBTY29wZWRNYWNy
b1JlZW5hYmxlcihNYWNyb0V4cGFuZGVyICpleHBhbmRlcik7CisgICAgflNjb3BlZE1hY3JvUmVl
bmFibGVyKCk7CisKKyAgcHJpdmF0ZToKKyAgICBNYWNyb0V4cGFuZGVyICptRXhwYW5kZXI7Cit9
OworCitNYWNyb0V4cGFuZGVyOjpTY29wZWRNYWNyb1JlZW5hYmxlcjo6U2NvcGVkTWFjcm9SZWVu
YWJsZXIoTWFjcm9FeHBhbmRlciAqZXhwYW5kZXIpCisgICAgOiBtRXhwYW5kZXIoZXhwYW5kZXIp
Cit7CisgICAgbUV4cGFuZGVyLT5tRGVmZXJSZWVuYWJsaW5nTWFjcm9zID0gdHJ1ZTsKK30KKwor
TWFjcm9FeHBhbmRlcjo6U2NvcGVkTWFjcm9SZWVuYWJsZXI6On5TY29wZWRNYWNyb1JlZW5hYmxl
cigpCit7CisgICAgbUV4cGFuZGVyLT5tRGVmZXJSZWVuYWJsaW5nTWFjcm9zID0gZmFsc2U7Cisg
ICAgZm9yIChhdXRvIG1hY3JvIDogbUV4cGFuZGVyLT5tTWFjcm9zVG9SZWVuYWJsZSkKKyAgICB7
CisgICAgICAgIC8vIENvcHlpbmcgdGhlIHN0cmluZyBoZXJlIGJ5IHVzaW5nIHN1YnN0ciBpcyBh
IGNoZWNrIGZvciB1c2UtYWZ0ZXItZnJlZS4gSXQgZGV0ZWN0cworICAgICAgICAvLyB1c2UtYWZ0
ZXItZnJlZSBtb3JlIHJlbGlhYmx5IHRoYW4ganVzdCB0b2dnbGluZyB0aGUgZGlzYWJsZWQgZmxh
Zy4KKyAgICAgICAgQVNTRVJUKG1hY3JvLT5uYW1lLnN1YnN0cigpICE9ICIiKTsKKyAgICAgICAg
bWFjcm8tPmRpc2FibGVkID0gZmFsc2U7CisgICAgfQorICAgIG1FeHBhbmRlci0+bU1hY3Jvc1Rv
UmVlbmFibGUuY2xlYXIoKTsKK30KKworTWFjcm9FeHBhbmRlcjo6TWFjcm9FeHBhbmRlcihMZXhl
ciAqbGV4ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hY3JvU2V0ICptYWNyb1Nl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlhZ25vc3RpY3MgKmRpYWdub3N0aWNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxsb3dlZE1hY3JvRXhwYW5zaW9u
RGVwdGgpCisgICAgOiBtTGV4ZXIobGV4ZXIpLAorICAgICAgbU1hY3JvU2V0KG1hY3JvU2V0KSwK
KyAgICAgIG1EaWFnbm9zdGljcyhkaWFnbm9zdGljcyksCisgICAgICBtVG90YWxUb2tlbnNJbkNv
bnRleHRzKDApLAorICAgICAgbUFsbG93ZWRNYWNyb0V4cGFuc2lvbkRlcHRoKGFsbG93ZWRNYWNy
b0V4cGFuc2lvbkRlcHRoKSwKKyAgICAgIG1EZWZlclJlZW5hYmxpbmdNYWNyb3MoZmFsc2UpCiB7
CiB9CiAKIE1hY3JvRXhwYW5kZXI6On5NYWNyb0V4cGFuZGVyKCkKIHsKKyAgICBBU1NFUlQobU1h
Y3Jvc1RvUmVlbmFibGUuZW1wdHkoKSk7CiAgICAgZm9yIChNYWNyb0NvbnRleHQgKmNvbnRleHQg
OiBtQ29udGV4dFN0YWNrKQogICAgIHsKICAgICAgICAgZGVsZXRlIGNvbnRleHQ7CkBAIC04MCwx
NyArMTE4LDIyIEBAIHZvaWQgTWFjcm9FeHBhbmRlcjo6bGV4KFRva2VuICp0b2tlbikKICAgICAg
ICAgaWYgKGl0ZXIgPT0gbU1hY3JvU2V0LT5lbmQoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0g
ICAgICAgIGNvbnN0IE1hY3JvJiBtYWNybyA9IGl0ZXItPnNlY29uZDsKLSAgICAgICAgaWYgKG1h
Y3JvLmRpc2FibGVkKQorICAgICAgICBzdGQ6OnNoYXJlZF9wdHI8TWFjcm8+IG1hY3JvID0gaXRl
ci0+c2Vjb25kOworICAgICAgICBpZiAobWFjcm8tPmRpc2FibGVkKQogICAgICAgICB7CiAgICAg
ICAgICAgICAvLyBJZiBhIHBhcnRpY3VsYXIgdG9rZW4gaXMgbm90IGV4cGFuZGVkLCBpdCBpcyBu
ZXZlciBleHBhbmRlZC4KICAgICAgICAgICAgIHRva2VuLT5zZXRFeHBhbnNpb25EaXNhYmxlZCh0
cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmICgobWFjcm8u
dHlwZSA9PSBNYWNybzo6a1R5cGVGdW5jKSAmJiAhaXNOZXh0VG9rZW5MZWZ0UGFyZW4oKSkKKwor
ICAgICAgICAvLyBCdW1wIHRoZSBleHBhbnNpb24gY291bnQgYmVmb3JlIHBlZWtpbmcgaWYgdGhl
IG5leHQgdG9rZW4gaXMgYSAnKCcKKyAgICAgICAgLy8gb3RoZXJ3aXNlIHRoZXJlIGNvdWxkIGJl
IGEgI3VuZGVmIG9mIHRoZSBtYWNybyBiZWZvcmUgdGhlIG5leHQgdG9rZW4uCisgICAgICAgIG1h
Y3JvLT5leHBhbnNpb25Db3VudCsrOworICAgICAgICBpZiAoKG1hY3JvLT50eXBlID09IE1hY3Jv
OjprVHlwZUZ1bmMpICYmICFpc05leHRUb2tlbkxlZnRQYXJlbigpKQogICAgICAgICB7CiAgICAg
ICAgICAgICAvLyBJZiB0aGUgdG9rZW4gaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIG1hY3JvIG5hbWUg
aXMgbm90IGEgJygnLAogICAgICAgICAgICAgLy8gdGhpcyBtYWNybyBzaG91bGQgbm90IGJlIGV4
cGFuZGVkLgorICAgICAgICAgICAgbWFjcm8tPmV4cGFuc2lvbkNvdW50LS07CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCkBAIC0xNTAsMjQgKzE5MywyMiBAQCBib29sIE1hY3JvRXhw
YW5kZXI6OmlzTmV4dFRva2VuTGVmdFBhcmVuKCkKICAgICByZXR1cm4gbHBhcmVuOwogfQogCi1i
b29sIE1hY3JvRXhwYW5kZXI6OnB1c2hNYWNybyhjb25zdCBNYWNybyAmbWFjcm8sIGNvbnN0IFRv
a2VuICZpZGVudGlmaWVyKQorYm9vbCBNYWNyb0V4cGFuZGVyOjpwdXNoTWFjcm8oc3RkOjpzaGFy
ZWRfcHRyPE1hY3JvPiBtYWNybywgY29uc3QgVG9rZW4gJmlkZW50aWZpZXIpCiB7Ci0gICAgQVNT
RVJUKCFtYWNyby5kaXNhYmxlZCk7CisgICAgQVNTRVJUKCFtYWNyby0+ZGlzYWJsZWQpOwogICAg
IEFTU0VSVCghaWRlbnRpZmllci5leHBhbnNpb25EaXNhYmxlZCgpKTsKICAgICBBU1NFUlQoaWRl
bnRpZmllci50eXBlID09IFRva2VuOjpJREVOVElGSUVSKTsKLSAgICBBU1NFUlQoaWRlbnRpZmll
ci50ZXh0ID09IG1hY3JvLm5hbWUpOwotCi0gICAgbWFjcm8uZXhwYW5zaW9uQ291bnQrKzsKKyAg
ICBBU1NFUlQoaWRlbnRpZmllci50ZXh0ID09IG1hY3JvLT5uYW1lKTsKIAogICAgIHN0ZDo6dmVj
dG9yPFRva2VuPiByZXBsYWNlbWVudHM7Ci0gICAgaWYgKCFleHBhbmRNYWNybyhtYWNybywgaWRl
bnRpZmllciwgJnJlcGxhY2VtZW50cykpCisgICAgaWYgKCFleHBhbmRNYWNybygqbWFjcm8sIGlk
ZW50aWZpZXIsICZyZXBsYWNlbWVudHMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAv
LyBNYWNybyBpcyBkaXNhYmxlZCBmb3IgZXhwYW5zaW9uIHVudGlsIGl0IGlzIHBvcHBlZCBvZmYg
dGhlIHN0YWNrLgotICAgIG1hY3JvLmRpc2FibGVkID0gdHJ1ZTsKKyAgICBtYWNyby0+ZGlzYWJs
ZWQgPSB0cnVlOwogCiAgICAgTWFjcm9Db250ZXh0ICpjb250ZXh0ID0gbmV3IE1hY3JvQ29udGV4
dDsKLSAgICBjb250ZXh0LT5tYWNybyA9ICZtYWNybzsKKyAgICBjb250ZXh0LT5tYWNybyAgICAg
ICAgPSBtYWNybzsKICAgICBjb250ZXh0LT5yZXBsYWNlbWVudHMuc3dhcChyZXBsYWNlbWVudHMp
OwogICAgIG1Db250ZXh0U3RhY2sucHVzaF9iYWNrKGNvbnRleHQpOwogICAgIG1Ub3RhbFRva2Vu
c0luQ29udGV4dHMgKz0gY29udGV4dC0+cmVwbGFjZW1lbnRzLnNpemUoKTsKQEAgLTE4NCw3ICsy
MjUsMTQgQEAgdm9pZCBNYWNyb0V4cGFuZGVyOjpwb3BNYWNybygpCiAgICAgQVNTRVJUKGNvbnRl
eHQtPmVtcHR5KCkpOwogICAgIEFTU0VSVChjb250ZXh0LT5tYWNyby0+ZGlzYWJsZWQpOwogICAg
IEFTU0VSVChjb250ZXh0LT5tYWNyby0+ZXhwYW5zaW9uQ291bnQgPiAwKTsKLSAgICBjb250ZXh0
LT5tYWNyby0+ZGlzYWJsZWQgPSBmYWxzZTsKKyAgICBpZiAobURlZmVyUmVlbmFibGluZ01hY3Jv
cykKKyAgICB7CisgICAgICAgIG1NYWNyb3NUb1JlZW5hYmxlLnB1c2hfYmFjayhjb250ZXh0LT5t
YWNybyk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGNvbnRleHQtPm1hY3JvLT5k
aXNhYmxlZCA9IGZhbHNlOworICAgIH0KICAgICBjb250ZXh0LT5tYWNyby0+ZXhwYW5zaW9uQ291
bnQtLTsKICAgICBtVG90YWxUb2tlbnNJbkNvbnRleHRzIC09IGNvbnRleHQtPnJlcGxhY2VtZW50
cy5zaXplKCk7CiAgICAgZGVsZXRlIGNvbnRleHQ7CkBAIC0yMDMsOCArMjUxLDcgQEAgYm9vbCBN
YWNyb0V4cGFuZGVyOjpleHBhbmRNYWNybyhjb25zdCBNYWNybyAmbWFjcm8sCiAgICAgU291cmNl
TG9jYXRpb24gcmVwbGFjZW1lbnRMb2NhdGlvbiA9IGlkZW50aWZpZXIubG9jYXRpb247CiAgICAg
aWYgKG1hY3JvLnR5cGUgPT0gTWFjcm86OmtUeXBlT2JqKQogICAgIHsKLSAgICAgICAgcmVwbGFj
ZW1lbnRzLT5hc3NpZ24obWFjcm8ucmVwbGFjZW1lbnRzLmJlZ2luKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1hY3JvLnJlcGxhY2VtZW50cy5lbmQoKSk7CisgICAgICAgIHJlcGxh
Y2VtZW50cy0+YXNzaWduKG1hY3JvLnJlcGxhY2VtZW50cy5iZWdpbigpLCBtYWNyby5yZXBsYWNl
bWVudHMuZW5kKCkpOwogCiAgICAgICAgIGlmIChtYWNyby5wcmVkZWZpbmVkKQogICAgICAgICB7
CkBAIC0yMTIsNyArMjU5LDcgQEAgYm9vbCBNYWNyb0V4cGFuZGVyOjpleHBhbmRNYWNybyhjb25z
dCBNYWNybyAmbWFjcm8sCiAgICAgICAgICAgICBjb25zdCBjaGFyIGtGaWxlW10gPSAiX19GSUxF
X18iOwogCiAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnRzLT5zaXplKCkgPT0gMSk7Ci0g
ICAgICAgICAgICBUb2tlbiYgcmVwbCA9IHJlcGxhY2VtZW50cy0+ZnJvbnQoKTsKKyAgICAgICAg
ICAgIFRva2VuICZyZXBsID0gcmVwbGFjZW1lbnRzLT5mcm9udCgpOwogICAgICAgICAgICAgaWYg
KG1hY3JvLm5hbWUgPT0ga0xpbmUpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmVw
bC50ZXh0ID0gVG9TdHJpbmcoaWRlbnRpZmllci5sb2NhdGlvbi5saW5lKTsKQEAgLTIzNiw3ICsy
ODMsNyBAQCBib29sIE1hY3JvRXhwYW5kZXI6OmV4cGFuZE1hY3JvKGNvbnN0IE1hY3JvICZtYWNy
bywKIAogICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCByZXBsYWNlbWVudHMtPnNpemUo
KTsgKytpKQogICAgIHsKLSAgICAgICAgVG9rZW4mIHJlcGwgPSByZXBsYWNlbWVudHMtPmF0KGkp
OworICAgICAgICBUb2tlbiAmcmVwbCA9IHJlcGxhY2VtZW50cy0+YXQoaSk7CiAgICAgICAgIGlm
IChpID09IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFRoZSBmaXJzdCB0b2tlbiBpbiB0
aGUgcmVwbGFjZW1lbnQgbGlzdCBpbmhlcml0cyB0aGUgcGFkZGluZwpAQCAtMjYwLDYgKzMwNywx
MSBAQCBib29sIE1hY3JvRXhwYW5kZXI6OmNvbGxlY3RNYWNyb0FyZ3MoY29uc3QgTWFjcm8gJm1h
Y3JvLAogCiAgICAgYXJncy0+cHVzaF9iYWNrKE1hY3JvQXJnKCkpOwogCisgICAgLy8gRGVmZXIg
cmVlbmFibGluZyBtYWNyb3MgdW50aWwgYXJncyBjb2xsZWN0aW9uIGlzIGZpbmlzaGVkIHRvIGF2
b2lkIHRoZSBwb3NzaWJpbGl0eSBvZgorICAgIC8vIGluZmluaXRlIHJlY3Vyc2lvbi4gT3RoZXJ3
aXNlIGluZmluaXRlIHJlY3Vyc2lvbiBtaWdodCBoYXBwZW4gd2hlbiBleHBhbmRpbmcgdGhlIGFy
Z3MgYWZ0ZXIKKyAgICAvLyBtYWNyb3MgaGF2ZSBiZWVuIHBvcHBlZCBmcm9tIHRoZSBjb250ZXh0
IHN0YWNrIHdoZW4gcGFyc2luZyB0aGUgYXJncy4KKyAgICBTY29wZWRNYWNyb1JlZW5hYmxlciBk
ZWZlclJlZW5hYmxpbmdNYWNyb3ModGhpcyk7CisKICAgICBpbnQgb3BlblBhcmVucyA9IDE7CiAg
ICAgd2hpbGUgKG9wZW5QYXJlbnMgIT0gMCkKICAgICB7CkBAIC0yNjcsMzYgKzMxOSwzNiBAQCBi
b29sIE1hY3JvRXhwYW5kZXI6OmNvbGxlY3RNYWNyb0FyZ3MoY29uc3QgTWFjcm8gJm1hY3JvLAog
CiAgICAgICAgIGlmICh0b2tlbi50eXBlID09IFRva2VuOjpMQVNUKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfTUFDUk9fVU5URVJN
SU5BVEVEX0lOVk9DQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVu
dGlmaWVyLmxvY2F0aW9uLCBpZGVudGlmaWVyLnRleHQpOworICAgICAgICAgICAgbURpYWdub3N0
aWNzLT5yZXBvcnQoRGlhZ25vc3RpY3M6OlBQX01BQ1JPX1VOVEVSTUlOQVRFRF9JTlZPQ0FUSU9O
LCBpZGVudGlmaWVyLmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWRlbnRpZmllci50ZXh0KTsKICAgICAgICAgICAgIC8vIERvIG5vdCBsb3NlIEVPRiB0b2tlbi4K
ICAgICAgICAgICAgIHVuZ2V0VG9rZW4odG9rZW4pOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBpc0FyZyA9IGZhbHNlOyAvLyBUcnVlIGlmIHRv
a2VuIGlzIHBhcnQgb2YgdGhlIGN1cnJlbnQgYXJndW1lbnQuCisgICAgICAgIGJvb2wgaXNBcmcg
PSBmYWxzZTsgIC8vIFRydWUgaWYgdG9rZW4gaXMgcGFydCBvZiB0aGUgY3VycmVudCBhcmd1bWVu
dC4KICAgICAgICAgc3dpdGNoICh0b2tlbi50eXBlKQogICAgICAgICB7Ci0gICAgICAgICAgY2Fz
ZSAnKCc6Ci0gICAgICAgICAgICArK29wZW5QYXJlbnM7Ci0gICAgICAgICAgICBpc0FyZyA9IHRy
dWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlICcpJzoKLSAgICAgICAgICAg
IC0tb3BlblBhcmVuczsKLSAgICAgICAgICAgIGlzQXJnID0gb3BlblBhcmVucyAhPSAwOwotICAg
ICAgICAgICAgKmNsb3NpbmdQYXJlbnRoZXNpc0xvY2F0aW9uID0gdG9rZW4ubG9jYXRpb247Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlICcsJzoKLSAgICAgICAgICAgIC8vIFRo
ZSBpbmRpdmlkdWFsIGFyZ3VtZW50cyBhcmUgc2VwYXJhdGVkIGJ5IGNvbW1hIHRva2VucywgYnV0
Ci0gICAgICAgICAgICAvLyB0aGUgY29tbWEgdG9rZW5zIGJldHdlZW4gbWF0Y2hpbmcgaW5uZXIg
cGFyZW50aGVzZXMgZG8gbm90Ci0gICAgICAgICAgICAvLyBzZXBlcmF0ZSBhcmd1bWVudHMuCi0g
ICAgICAgICAgICBpZiAob3BlblBhcmVucyA9PSAxKQotICAgICAgICAgICAgICAgIGFyZ3MtPnB1
c2hfYmFjayhNYWNyb0FyZygpKTsKLSAgICAgICAgICAgIGlzQXJnID0gb3BlblBhcmVucyAhPSAx
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlz
QXJnID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnKCc6Cisg
ICAgICAgICAgICAgICAgKytvcGVuUGFyZW5zOworICAgICAgICAgICAgICAgIGlzQXJnID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJyknOgorICAgICAg
ICAgICAgICAgIC0tb3BlblBhcmVuczsKKyAgICAgICAgICAgICAgICBpc0FyZyAgICAgICAgICAg
ICAgICAgICAgICAgPSBvcGVuUGFyZW5zICE9IDA7CisgICAgICAgICAgICAgICAgKmNsb3NpbmdQ
YXJlbnRoZXNpc0xvY2F0aW9uID0gdG9rZW4ubG9jYXRpb247CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlICcsJzoKKyAgICAgICAgICAgICAgICAvLyBUaGUgaW5kaXZp
ZHVhbCBhcmd1bWVudHMgYXJlIHNlcGFyYXRlZCBieSBjb21tYSB0b2tlbnMsIGJ1dAorICAgICAg
ICAgICAgICAgIC8vIHRoZSBjb21tYSB0b2tlbnMgYmV0d2VlbiBtYXRjaGluZyBpbm5lciBwYXJl
bnRoZXNlcyBkbyBub3QKKyAgICAgICAgICAgICAgICAvLyBzZXBlcmF0ZSBhcmd1bWVudHMuCisg
ICAgICAgICAgICAgICAgaWYgKG9wZW5QYXJlbnMgPT0gMSkKKyAgICAgICAgICAgICAgICAgICAg
YXJncy0+cHVzaF9iYWNrKE1hY3JvQXJnKCkpOworICAgICAgICAgICAgICAgIGlzQXJnID0gb3Bl
blBhcmVucyAhPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBpc0FyZyA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgaWYgKGlzQXJnKQogICAgICAgICB7CkBAIC0zMTcsOSArMzY5
LDkgQEAgYm9vbCBNYWNyb0V4cGFuZGVyOjpjb2xsZWN0TWFjcm9BcmdzKGNvbnN0IE1hY3JvICZt
YWNybywKICAgICAvLyBWYWxpZGF0ZSB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cy4KICAgICBpZiAo
YXJncy0+c2l6ZSgpICE9IHBhcmFtcy5zaXplKCkpCiAgICAgewotICAgICAgICBEaWFnbm9zdGlj
czo6SUQgaWQgPSBhcmdzLT5zaXplKCkgPCBtYWNyby5wYXJhbWV0ZXJzLnNpemUoKSA/Ci0gICAg
ICAgICAgICBEaWFnbm9zdGljczo6UFBfTUFDUk9fVE9PX0ZFV19BUkdTIDoKLSAgICAgICAgICAg
IERpYWdub3N0aWNzOjpQUF9NQUNST19UT09fTUFOWV9BUkdTOworICAgICAgICBEaWFnbm9zdGlj
czo6SUQgaWQgPSBhcmdzLT5zaXplKCkgPCBtYWNyby5wYXJhbWV0ZXJzLnNpemUoKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBEaWFnbm9zdGljczo6UFBfTUFDUk9fVE9PX0ZF
V19BUkdTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IERpYWdub3N0aWNzOjpQ
UF9NQUNST19UT09fTUFOWV9BUkdTOwogICAgICAgICBtRGlhZ25vc3RpY3MtPnJlcG9ydChpZCwg
aWRlbnRpZmllci5sb2NhdGlvbiwgaWRlbnRpZmllci50ZXh0KTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KQEAgLTMzMSw3ICszODMsMTMgQEAgYm9vbCBNYWNyb0V4cGFuZGVyOjpjb2xs
ZWN0TWFjcm9BcmdzKGNvbnN0IE1hY3JvICZtYWNybywKICAgICBmb3IgKGF1dG8gJmFyZyA6ICph
cmdzKQogICAgIHsKICAgICAgICAgVG9rZW5MZXhlciBsZXhlcigmYXJnKTsKLSAgICAgICAgTWFj
cm9FeHBhbmRlciBleHBhbmRlcigmbGV4ZXIsIG1NYWNyb1NldCwgbURpYWdub3N0aWNzKTsKKyAg
ICAgICAgaWYgKG1BbGxvd2VkTWFjcm9FeHBhbnNpb25EZXB0aCA8IDEpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1EaWFnbm9zdGljcy0+cmVwb3J0KERpYWdub3N0aWNzOjpQUF9NQUNST19JTlZP
Q0FUSU9OX0NIQUlOX1RPT19ERUVQLCB0b2tlbi5sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRva2VuLnRleHQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisgICAgICAgIE1hY3JvRXhwYW5kZXIgZXhwYW5kZXIoJmxleGVyLCBtTWFjcm9T
ZXQsIG1EaWFnbm9zdGljcywgbUFsbG93ZWRNYWNyb0V4cGFuc2lvbkRlcHRoIC0gMSk7CiAKICAg
ICAgICAgYXJnLmNsZWFyKCk7CiAgICAgICAgIGV4cGFuZGVyLmxleCgmdG9rZW4pOwpAQCAtMzc0
LDE1ICs0MzIsMTUgQEAgdm9pZCBNYWNyb0V4cGFuZGVyOjpyZXBsYWNlTWFjcm9QYXJhbXMoY29u
c3QgTWFjcm8gJm1hY3JvLAogICAgICAgICAvLyBUT0RPKGFsb2twKTogT3B0aW1pemUgdGhpcy4K
ICAgICAgICAgLy8gVGhlcmUgaXMgbm8gbmVlZCB0byBzZWFyY2ggZm9yIG1hY3JvIHBhcmFtcyBl
dmVyeSB0aW1lLgogICAgICAgICAvLyBUaGUgcGFyYW0gaW5kZXggY2FuIGJlIGNhY2hlZCB3aXRo
IHRoZSByZXBsYWNlbWVudCB0b2tlbi4KLSAgICAgICAgTWFjcm86OlBhcmFtZXRlcnM6OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBzdGQ6OmZpbmQoCi0gICAgICAgICAgICBtYWNyby5wYXJhbWV0ZXJz
LmJlZ2luKCksIG1hY3JvLnBhcmFtZXRlcnMuZW5kKCksIHJlcGwudGV4dCk7CisgICAgICAgIE1h
Y3JvOjpQYXJhbWV0ZXJzOjpjb25zdF9pdGVyYXRvciBpdGVyID0KKyAgICAgICAgICAgIHN0ZDo6
ZmluZChtYWNyby5wYXJhbWV0ZXJzLmJlZ2luKCksIG1hY3JvLnBhcmFtZXRlcnMuZW5kKCksIHJl
cGwudGV4dCk7CiAgICAgICAgIGlmIChpdGVyID09IG1hY3JvLnBhcmFtZXRlcnMuZW5kKCkpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJlcGxhY2VtZW50cy0+cHVzaF9iYWNrKHJlcGwpOwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBzdGQ6OnNpemVfdCBpQXJn
ID0gc3RkOjpkaXN0YW5jZShtYWNyby5wYXJhbWV0ZXJzLmJlZ2luKCksIGl0ZXIpOworICAgICAg
ICBzdGQ6OnNpemVfdCBpQXJnICAgID0gc3RkOjpkaXN0YW5jZShtYWNyby5wYXJhbWV0ZXJzLmJl
Z2luKCksIGl0ZXIpOwogICAgICAgICBjb25zdCBNYWNyb0FyZyAmYXJnID0gYXJnc1tpQXJnXTsK
ICAgICAgICAgaWYgKGFyZy5lbXB0eSgpKQogICAgICAgICB7CkBAIC00MTcsNCArNDc1LDMgQEAg
dm9pZCBNYWNyb0V4cGFuZGVyOjpNYWNyb0NvbnRleHQ6OnVuZ2V0KCkKIH0KIAogfSAgLy8gbmFt
ZXNwYWNlIHBwCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3IvTWFjcm9FeHBhbmRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9NYWNyb0V4cGFuZGVyLmgKaW5kZXggNzdjNzY3
YzM0YTAuLjdhNGY1YTljMjhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvRXhwYW5kZXIuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL01hY3JvRXhwYW5kZXIuaApA
QCAtMjIsNyArMjIsMTAgQEAgc3RydWN0IFNvdXJjZUxvY2F0aW9uOwogY2xhc3MgTWFjcm9FeHBh
bmRlciA6IHB1YmxpYyBMZXhlcgogewogICBwdWJsaWM6Ci0gICAgTWFjcm9FeHBhbmRlcihMZXhl
ciAqbGV4ZXIsIE1hY3JvU2V0ICptYWNyb1NldCwgRGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKTsK
KyAgICBNYWNyb0V4cGFuZGVyKExleGVyICpsZXhlciwKKyAgICAgICAgICAgICAgICAgIE1hY3Jv
U2V0ICptYWNyb1NldCwKKyAgICAgICAgICAgICAgICAgIERpYWdub3N0aWNzICpkaWFnbm9zdGlj
cywKKyAgICAgICAgICAgICAgICAgIGludCBhbGxvd2VkTWFjcm9FeHBhbnNpb25EZXB0aCk7CiAg
ICAgfk1hY3JvRXhwYW5kZXIoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgbGV4KFRva2VuICp0b2tl
bikgb3ZlcnJpZGU7CkBAIC0zMiwxMiArMzUsMTAgQEAgY2xhc3MgTWFjcm9FeHBhbmRlciA6IHB1
YmxpYyBMZXhlcgogICAgIHZvaWQgdW5nZXRUb2tlbihjb25zdCBUb2tlbiAmdG9rZW4pOwogICAg
IGJvb2wgaXNOZXh0VG9rZW5MZWZ0UGFyZW4oKTsKIAotICAgIGJvb2wgcHVzaE1hY3JvKGNvbnN0
IE1hY3JvICZtYWNybywgY29uc3QgVG9rZW4gJmlkZW50aWZpZXIpOworICAgIGJvb2wgcHVzaE1h
Y3JvKHN0ZDo6c2hhcmVkX3B0cjxNYWNybz4gbWFjcm8sIGNvbnN0IFRva2VuICZpZGVudGlmaWVy
KTsKICAgICB2b2lkIHBvcE1hY3JvKCk7CiAKLSAgICBib29sIGV4cGFuZE1hY3JvKGNvbnN0IE1h
Y3JvICZtYWNybywKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRva2VuICZpZGVudGlmaWVy
LAotICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8VG9rZW4+ICpyZXBsYWNlbWVudHMp
OworICAgIGJvb2wgZXhwYW5kTWFjcm8oY29uc3QgTWFjcm8gJm1hY3JvLCBjb25zdCBUb2tlbiAm
aWRlbnRpZmllciwgc3RkOjp2ZWN0b3I8VG9rZW4+ICpyZXBsYWNlbWVudHMpOwogCiAgICAgdHlw
ZWRlZiBzdGQ6OnZlY3RvcjxUb2tlbj4gTWFjcm9Bcmc7CiAgICAgYm9vbCBjb2xsZWN0TWFjcm9B
cmdzKGNvbnN0IE1hY3JvICZtYWNybywKQEAgLTU1LDcgKzU2LDcgQEAgY2xhc3MgTWFjcm9FeHBh
bmRlciA6IHB1YmxpYyBMZXhlcgogICAgICAgICBjb25zdCBUb2tlbiAmZ2V0KCk7CiAgICAgICAg
IHZvaWQgdW5nZXQoKTsKIAotICAgICAgICBjb25zdCBNYWNybyAqbWFjcm87CisgICAgICAgIHN0
ZDo6c2hhcmVkX3B0cjxNYWNybz4gbWFjcm87CiAgICAgICAgIHN0ZDo6c2l6ZV90IGluZGV4Owog
ICAgICAgICBzdGQ6OnZlY3RvcjxUb2tlbj4gcmVwbGFjZW1lbnRzOwogICAgIH07CkBAIC02Nyw2
ICs2OCwxMyBAQCBjbGFzcyBNYWNyb0V4cGFuZGVyIDogcHVibGljIExleGVyCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFRva2VuPiBtUmVzZXJ2ZVRva2VuOwogICAgIHN0ZDo6dmVjdG9yPE1hY3JvQ29u
dGV4dCAqPiBtQ29udGV4dFN0YWNrOwogICAgIHNpemVfdCBtVG90YWxUb2tlbnNJbkNvbnRleHRz
OworCisgICAgaW50IG1BbGxvd2VkTWFjcm9FeHBhbnNpb25EZXB0aDsKKworICAgIGJvb2wgbURl
ZmVyUmVlbmFibGluZ01hY3JvczsKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnNoYXJlZF9wdHI8TWFj
cm8+PiBtTWFjcm9zVG9SZWVuYWJsZTsKKworICAgIGNsYXNzIFNjb3BlZE1hY3JvUmVlbmFibGVy
OwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHBwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nv
ci5jcHAKaW5kZXggMTcwOWQ2NjczZDcuLjM0OWM3YjA2YzcxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9QcmVwcm9jZXNzb3IuY3BwCkBAIC0yNSwxOSArMjUsMjYgQEAgc3RydWN0IFByZXByb2Nlc3Nv
ckltcGwKICAgICBEaXJlY3RpdmVQYXJzZXIgZGlyZWN0aXZlUGFyc2VyOwogICAgIE1hY3JvRXhw
YW5kZXIgbWFjcm9FeHBhbmRlcjsKIAotICAgIFByZXByb2Nlc3NvckltcGwoRGlhZ25vc3RpY3Mg
KmRpYWcsIERpcmVjdGl2ZUhhbmRsZXIgKmRpcmVjdGl2ZUhhbmRsZXIpCisgICAgUHJlcHJvY2Vz
c29ySW1wbChEaWFnbm9zdGljcyAqZGlhZywKKyAgICAgICAgICAgICAgICAgICAgIERpcmVjdGl2
ZUhhbmRsZXIgKmRpcmVjdGl2ZUhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBQ
cmVwcm9jZXNzb3JTZXR0aW5ncyAmc2V0dGluZ3MpCiAgICAgICAgIDogZGlhZ25vc3RpY3MoZGlh
ZyksCiAgICAgICAgICAgdG9rZW5pemVyKGRpYWcpLAotICAgICAgICAgIGRpcmVjdGl2ZVBhcnNl
cigmdG9rZW5pemVyLCAmbWFjcm9TZXQsIGRpYWcsIGRpcmVjdGl2ZUhhbmRsZXIpLAotICAgICAg
ICAgIG1hY3JvRXhwYW5kZXIoJmRpcmVjdGl2ZVBhcnNlciwgJm1hY3JvU2V0LCBkaWFnKQorICAg
ICAgICAgIGRpcmVjdGl2ZVBhcnNlcigmdG9rZW5pemVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAmbWFjcm9TZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZUhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNldHRpbmdzLm1heE1hY3JvRXhwYW5zaW9uRGVwdGgpLAorICAgICAgICAgIG1hY3Jv
RXhwYW5kZXIoJmRpcmVjdGl2ZVBhcnNlciwgJm1hY3JvU2V0LCBkaWFnLCBzZXR0aW5ncy5tYXhN
YWNyb0V4cGFuc2lvbkRlcHRoKQogICAgIHsKICAgICB9CiB9OwogCiBQcmVwcm9jZXNzb3I6OlBy
ZXByb2Nlc3NvcihEaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBEaXJlY3RpdmVIYW5kbGVyICpkaXJlY3RpdmVIYW5kbGVyKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRGlyZWN0aXZlSGFuZGxlciAqZGlyZWN0aXZlSGFuZGxlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFByZXByb2Nlc3NvclNldHRpbmdzICZzZXR0aW5n
cykKIHsKLSAgICBtSW1wbCA9IG5ldyBQcmVwcm9jZXNzb3JJbXBsKGRpYWdub3N0aWNzLCBkaXJl
Y3RpdmVIYW5kbGVyKTsKKyAgICBtSW1wbCA9IG5ldyBQcmVwcm9jZXNzb3JJbXBsKGRpYWdub3N0
aWNzLCBkaXJlY3RpdmVIYW5kbGVyLCBzZXR0aW5ncyk7CiB9CiAKIFByZXByb2Nlc3Nvcjo6flBy
ZXByb2Nlc3NvcigpCkBAIC00NSw5ICs1Miw3IEBAIFByZXByb2Nlc3Nvcjo6flByZXByb2Nlc3Nv
cigpCiAgICAgZGVsZXRlIG1JbXBsOwogfQogCi1ib29sIFByZXByb2Nlc3Nvcjo6aW5pdChzaXpl
X3QgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogY29uc3Qgc3Ry
aW5nW10sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgbGVuZ3RoW10pCitib29s
IFByZXByb2Nlc3Nvcjo6aW5pdChzaXplX3QgY291bnQsIGNvbnN0IGNoYXIgKmNvbnN0IHN0cmlu
Z1tdLCBjb25zdCBpbnQgbGVuZ3RoW10pCiB7CiAgICAgc3RhdGljIGNvbnN0IGludCBrRGVmYXVs
dEdMU0xWZXJzaW9uID0gMTAwOwogCkBAIC03MywyMyArNzgsMjMgQEAgdm9pZCBQcmVwcm9jZXNz
b3I6OmxleChUb2tlbiAqdG9rZW4pCiAgICAgICAgIG1JbXBsLT5tYWNyb0V4cGFuZGVyLmxleCh0
b2tlbik7CiAgICAgICAgIHN3aXRjaCAodG9rZW4tPnR5cGUpCiAgICAgICAgIHsKLSAgICAgICAg
ICAvLyBXZSBzaG91bGQgbm90IGJlIHJldHVybmluZyBpbnRlcm5hbCBwcmVwcm9jZXNzaW5nIHRv
a2Vucy4KLSAgICAgICAgICAvLyBDb252ZXJ0IHByZXByb2Nlc3NpbmcgdG9rZW5zIHRvIGNvbXBp
bGVyIHRva2VucyBvciByZXBvcnQKLSAgICAgICAgICAvLyBkaWFnbm9zdGljcy4KLSAgICAgICAg
ICBjYXNlIFRva2VuOjpQUF9IQVNIOgotICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIFRva2VuOjpQUF9OVU1CRVI6Ci0gICAg
ICAgICAgICBtSW1wbC0+ZGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfSU5WQUxJ
RF9OVU1CRVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi0+
bG9jYXRpb24sIHRva2VuLT50ZXh0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNh
c2UgVG9rZW46OlBQX09USEVSOgotICAgICAgICAgICAgbUltcGwtPmRpYWdub3N0aWNzLT5yZXBv
cnQoRGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfQ0hBUkFDVEVSLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdG9rZW4tPmxvY2F0aW9uLCB0b2tlbi0+dGV4dCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgdmFsaWRUb2tl
biA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBu
b3QgYmUgcmV0dXJuaW5nIGludGVybmFsIHByZXByb2Nlc3NpbmcgdG9rZW5zLgorICAgICAgICAg
ICAgLy8gQ29udmVydCBwcmVwcm9jZXNzaW5nIHRva2VucyB0byBjb21waWxlciB0b2tlbnMgb3Ig
cmVwb3J0CisgICAgICAgICAgICAvLyBkaWFnbm9zdGljcy4KKyAgICAgICAgICAgIGNhc2UgVG9r
ZW46OlBQX0hBU0g6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVG9rZW46OlBQX05VTUJFUjoKKyAgICAgICAg
ICAgICAgICBtSW1wbC0+ZGlhZ25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfSU5WQUxJ
RF9OVU1CRVIsIHRva2VuLT5sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0b2tlbi0+dGV4dCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIFRva2VuOjpQUF9PVEhFUjoKKyAgICAgICAgICAgICAgICBtSW1wbC0+ZGlh
Z25vc3RpY3MtPnJlcG9ydChEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9DSEFSQUNURVIsIHRva2Vu
LT5sb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
b2tlbi0+dGV4dCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIHZhbGlkVG9rZW4gPSB0cnVlOworICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJvY2Vzc29yLmgK
aW5kZXggY2Q2OTk3ODZmY2UuLjZhYjQ0ZmY0OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvUHJlcHJv
Y2Vzc29yLmgKQEAgLTE5LDEwICsxOSwxOCBAQCBjbGFzcyBEaXJlY3RpdmVIYW5kbGVyOwogc3Ry
dWN0IFByZXByb2Nlc3NvckltcGw7CiBzdHJ1Y3QgVG9rZW47CiAKK3N0cnVjdCBQcmVwcm9jZXNz
b3JTZXR0aW5ncyA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICAgIFByZXByb2Nlc3NvclNldHRp
bmdzKCkgOiBtYXhNYWNyb0V4cGFuc2lvbkRlcHRoKDEwMDApIHt9CisgICAgaW50IG1heE1hY3Jv
RXhwYW5zaW9uRGVwdGg7Cit9OworCiBjbGFzcyBQcmVwcm9jZXNzb3IgOiBhbmdsZTo6Tm9uQ29w
eWFibGUKIHsKICAgcHVibGljOgotICAgIFByZXByb2Nlc3NvcihEaWFnbm9zdGljcyAqZGlhZ25v
c3RpY3MsIERpcmVjdGl2ZUhhbmRsZXIgKmRpcmVjdGl2ZUhhbmRsZXIpOworICAgIFByZXByb2Nl
c3NvcihEaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgIERpcmVjdGl2
ZUhhbmRsZXIgKmRpcmVjdGl2ZUhhbmRsZXIsCisgICAgICAgICAgICAgICAgIGNvbnN0IFByZXBy
b2Nlc3NvclNldHRpbmdzICZzZXR0aW5ncyk7CiAgICAgflByZXByb2Nlc3NvcigpOwogCiAgICAg
Ly8gY291bnQ6IHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBzdHJpbmcg
YW5kIGxlbmd0aCBhcnJheXMuCkBAIC0zNCw3ICs0Miw3IEBAIGNsYXNzIFByZXByb2Nlc3NvciA6
IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIC8vIEVhY2ggZWxlbWVudCBpbiB0aGUgbGVuZ3RoIGFy
cmF5IG1heSBjb250YWluIHRoZSBsZW5ndGggb2YgdGhlCiAgICAgLy8gY29ycmVzcG9uZGluZyBz
dHJpbmcgb3IgYSB2YWx1ZSBsZXNzIHRoYW4gMCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBzdHJpbmcK
ICAgICAvLyBpcyBudWxsIHRlcm1pbmF0ZWQuCi0gICAgYm9vbCBpbml0KHNpemVfdCBjb3VudCwg
Y29uc3QgY2hhciAqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10pOworICAgIGJv
b2wgaW5pdChzaXplX3QgY291bnQsIGNvbnN0IGNoYXIgKmNvbnN0IHN0cmluZ1tdLCBjb25zdCBp
bnQgbGVuZ3RoW10pOwogICAgIC8vIEFkZHMgYSBwcmUtZGVmaW5lZCBtYWNyby4KICAgICB2b2lk
IHByZWRlZmluZU1hY3JvKGNvbnN0IGNoYXIgKm5hbWUsIGludCB2YWx1ZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvU291
cmNlTG9jYXRpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvU291cmNlTG9jYXRpb24uaAppbmRleCBhZjhhOGQ1ZDE5Yy4uNTE5MDhhM2I0YmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9j
ZXNzb3IvU291cmNlTG9jYXRpb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL1NvdXJjZUxvY2F0aW9uLmgKQEAgLTEyLDE2ICsxMiw4IEBA
IG5hbWVzcGFjZSBwcAogCiBzdHJ1Y3QgU291cmNlTG9jYXRpb24KIHsKLSAgICBTb3VyY2VMb2Nh
dGlvbigpCi0gICAgICAgIDogZmlsZSgwKSwKLSAgICAgICAgICBsaW5lKDApCi0gICAgewotICAg
IH0KLSAgICBTb3VyY2VMb2NhdGlvbihpbnQgZiwgaW50IGwpCi0gICAgICAgIDogZmlsZShmKSwK
LSAgICAgICAgICBsaW5lKGwpCi0gICAgewotICAgIH0KKyAgICBTb3VyY2VMb2NhdGlvbigpIDog
ZmlsZSgwKSwgbGluZSgwKSB7fQorICAgIFNvdXJjZUxvY2F0aW9uKGludCBmLCBpbnQgbCkgOiBm
aWxlKGYpLCBsaW5lKGwpIHt9CiAKICAgICBib29sIGVxdWFscyhjb25zdCBTb3VyY2VMb2NhdGlv
biAmb3RoZXIpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmNwcAppbmRleCA0MTYxMGE0
MDIzZi4uY2UwY2U5NGY0OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9rZW4uY3BwCkBAIC0xNCwxNyArMTQs
MTUgQEAgbmFtZXNwYWNlIHBwCiAKIHZvaWQgVG9rZW46OnJlc2V0KCkKIHsKLSAgICB0eXBlID0g
MDsKLSAgICBmbGFncyA9IDA7CisgICAgdHlwZSAgICAgPSAwOworICAgIGZsYWdzICAgID0gMDsK
ICAgICBsb2NhdGlvbiA9IFNvdXJjZUxvY2F0aW9uKCk7CiAgICAgdGV4dC5jbGVhcigpOwogfQog
CiBib29sIFRva2VuOjplcXVhbHMoY29uc3QgVG9rZW4gJm90aGVyKSBjb25zdAogewotICAgIHJl
dHVybiAodHlwZSA9PSBvdGhlci50eXBlKSAmJgotICAgICAgICAgICAoZmxhZ3MgPT0gb3RoZXIu
ZmxhZ3MpICYmCi0gICAgICAgICAgIChsb2NhdGlvbiA9PSBvdGhlci5sb2NhdGlvbikgJiYKKyAg
ICByZXR1cm4gKHR5cGUgPT0gb3RoZXIudHlwZSkgJiYgKGZsYWdzID09IG90aGVyLmZsYWdzKSAm
JiAobG9jYXRpb24gPT0gb3RoZXIubG9jYXRpb24pICYmCiAgICAgICAgICAgICh0ZXh0ID09IG90
aGVyLnRleHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgKaW5kZXggNzE2NTAzYjMyOTcuLjVlOTcy
Y2E4MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL1Rva2VuLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oCkBAIC02MiwzMyArNjIsMjAgQEAgc3RydWN0IFRv
a2VuCiAgICAgICAgIEVYUEFOU0lPTl9ESVNBQkxFRCA9IDEgPDwgMgogICAgIH07CiAKLSAgICBU
b2tlbigpCi0gICAgICAgIDogdHlwZSgwKSwKLSAgICAgICAgICBmbGFncygwKQotICAgIHsKLSAg
ICB9CisgICAgVG9rZW4oKSA6IHR5cGUoMCksIGZsYWdzKDApIHt9CiAKICAgICB2b2lkIHJlc2V0
KCk7CiAgICAgYm9vbCBlcXVhbHMoY29uc3QgVG9rZW4gJm90aGVyKSBjb25zdDsKIAogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGlzIGlzIHRoZSBmaXJzdCB0b2tlbiBvbiBsaW5lLgogICAgIC8v
IEl0IGRpc3JlZ2FyZHMgYW55IGxlYWRpbmcgd2hpdGVzcGFjZS4KLSAgICBib29sIGF0U3RhcnRP
ZkxpbmUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIChmbGFncyAmIEFUX1NUQVJUX09G
X0xJTkUpICE9IDA7Ci0gICAgfQorICAgIGJvb2wgYXRTdGFydE9mTGluZSgpIGNvbnN0IHsgcmV0
dXJuIChmbGFncyAmIEFUX1NUQVJUX09GX0xJTkUpICE9IDA7IH0KICAgICB2b2lkIHNldEF0U3Rh
cnRPZkxpbmUoYm9vbCBzdGFydCk7CiAKLSAgICBib29sIGhhc0xlYWRpbmdTcGFjZSgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gKGZsYWdzICYgSEFTX0xFQURJTkdfU1BBQ0UpICE9IDA7
Ci0gICAgfQorICAgIGJvb2wgaGFzTGVhZGluZ1NwYWNlKCkgY29uc3QgeyByZXR1cm4gKGZsYWdz
ICYgSEFTX0xFQURJTkdfU1BBQ0UpICE9IDA7IH0KICAgICB2b2lkIHNldEhhc0xlYWRpbmdTcGFj
ZShib29sIHNwYWNlKTsKIAotICAgIGJvb2wgZXhwYW5zaW9uRGlzYWJsZWQoKSBjb25zdAotICAg
IHsKLSAgICAgICAgcmV0dXJuIChmbGFncyAmIEVYUEFOU0lPTl9ESVNBQkxFRCkgIT0gMDsKLSAg
ICB9CisgICAgYm9vbCBleHBhbnNpb25EaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIChmbGFncyAm
IEVYUEFOU0lPTl9ESVNBQkxFRCkgIT0gMDsgfQogICAgIHZvaWQgc2V0RXhwYW5zaW9uRGlzYWJs
ZWQoYm9vbCBkaXNhYmxlKTsKIAogICAgIC8vIENvbnZlcnRzIHRleHQgaW50byBudW1lcmljIHZh
bHVlIGZvciBDT05TVF9JTlQgYW5kIENPTlNUX0ZMT0FUIHRva2VuLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbml6ZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvVG9r
ZW5pemVyLmgKaW5kZXggNmRmYjE5YzY2OTIuLmNlMDMwYTE1YzI0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuaXplci5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Iv
VG9rZW5pemVyLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgVG9rZW5pemVyIDogcHVibGljIExl
eGVyCiAgICAgVG9rZW5pemVyKERpYWdub3N0aWNzICpkaWFnbm9zdGljcyk7CiAgICAgflRva2Vu
aXplcigpOwogCi0gICAgYm9vbCBpbml0KHNpemVfdCBjb3VudCwgY29uc3QgY2hhciAqIGNvbnN0
IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10pOworICAgIGJvb2wgaW5pdChzaXplX3QgY291
bnQsIGNvbnN0IGNoYXIgKmNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10pOwogCiAg
ICAgdm9pZCBzZXRGaWxlTnVtYmVyKGludCBmaWxlKTsKICAgICB2b2lkIHNldExpbmVOdW1iZXIo
aW50IGxpbmUpOwpAQCAtNDgsOSArNDgsOSBAQCBjbGFzcyBUb2tlbml6ZXIgOiBwdWJsaWMgTGV4
ZXIKICAgICBib29sIGluaXRTY2FubmVyKCk7CiAgICAgdm9pZCBkZXN0cm95U2Nhbm5lcigpOwog
Ci0gICAgdm9pZCAqbUhhbmRsZTsgIC8vIFNjYW5uZXIgaGFuZGxlLgotICAgIENvbnRleHQgbUNv
bnRleHQ7ICAvLyBTY2FubmVyIGV4dHJhLgotICAgIHNpemVfdCBtTWF4VG9rZW5TaXplOyAvLyBN
YXhpbXVtIHRva2VuIHNpemUKKyAgICB2b2lkICptSGFuZGxlOyAgICAgICAgIC8vIFNjYW5uZXIg
aGFuZGxlLgorICAgIENvbnRleHQgbUNvbnRleHQ7ICAgICAgLy8gU2Nhbm5lciBleHRyYS4KKyAg
ICBzaXplX3QgbU1heFRva2VuU2l6ZTsgIC8vIE1heGltdW0gdG9rZW4gc2l6ZQogfTsKIAogfSAg
Ly8gbmFtZXNwYWNlIHBwCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL251bWVyaWNfbGV4LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL251bWVyaWNfbGV4LmgKaW5kZXggYjMyZTQy
MjUzZjIuLjZlYTc3OWFiOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL251bWVyaWNfbGV4LmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9udW1lcmljX2xleC5oCkBAIC05
LDE1ICs5LDE1IEBACiAjaWZuZGVmIENPTVBJTEVSX1BSRVBST0NFU1NPUl9OVU1FUklDTEVYX0hf
CiAjZGVmaW5lIENPTVBJTEVSX1BSRVBST0NFU1NPUl9OVU1FUklDTEVYX0hfCiAKKyNpbmNsdWRl
IDxjbWF0aD4KICNpbmNsdWRlIDxzc3RyZWFtPgogCi1uYW1lc3BhY2UgcHAgeworbmFtZXNwYWNl
IHBwCit7CiAKIGlubGluZSBzdGQ6Omlvczo6Zm10ZmxhZ3MgbnVtZXJpY19iYXNlX2ludChjb25z
dCBzdGQ6OnN0cmluZyAmc3RyKQogewotICAgIGlmICgoc3RyLnNpemUoKSA+PSAyKSAmJgotICAg
ICAgICAoc3RyWzBdID09ICcwJykgJiYKLSAgICAgICAgKHN0clsxXSA9PSAneCcgfHwgc3RyWzFd
ID09ICdYJykpCisgICAgaWYgKChzdHIuc2l6ZSgpID49IDIpICYmIChzdHJbMF0gPT0gJzAnKSAm
JiAoc3RyWzFdID09ICd4JyB8fCBzdHJbMV0gPT0gJ1gnKSkKICAgICB7CiAgICAgICAgIHJldHVy
biBzdGQ6Omlvczo6aGV4OwogICAgIH0KQEAgLTMzLDcgKzMzLDcgQEAgaW5saW5lIHN0ZDo6aW9z
OjpmbXRmbGFncyBudW1lcmljX2Jhc2VfaW50KGNvbnN0IHN0ZDo6c3RyaW5nICZzdHIpCiAvLyBv
ZiB0aGUgY29ycmVjdCBmb3JtLiBUaGV5IGNhbiBvbmx5IGZhaWwgaWYgdGhlIHBhcnNlZCB2YWx1
ZSBpcyB0b28gYmlnLAogLy8gaW4gd2hpY2ggY2FzZSBmYWxzZSBpcyByZXR1cm5lZC4KIAotdGVt
cGxhdGU8dHlwZW5hbWUgSW50VHlwZT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBJbnRUeXBlPgogYm9v
bCBudW1lcmljX2xleF9pbnQoY29uc3Qgc3RkOjpzdHJpbmcgJnN0ciwgSW50VHlwZSAqdmFsdWUp
CiB7CiAgICAgc3RkOjppc3RyaW5nc3RyZWFtIHN0cmVhbShzdHIpOwpAQCAtNDUsNyArNDUsNyBA
QCBib29sIG51bWVyaWNfbGV4X2ludChjb25zdCBzdGQ6OnN0cmluZyAmc3RyLCBJbnRUeXBlICp2
YWx1ZSkKICAgICByZXR1cm4gIXN0cmVhbS5mYWlsKCk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1l
IEZsb2F0VHlwZT4KK3RlbXBsYXRlIDx0eXBlbmFtZSBGbG9hdFR5cGU+CiBib29sIG51bWVyaWNf
bGV4X2Zsb2F0KGNvbnN0IHN0ZDo6c3RyaW5nICZzdHIsIEZsb2F0VHlwZSAqdmFsdWUpCiB7CiAv
LyBPbiA2NC1iaXQgSW50ZWwgQW5kcm9pZCwgaXN0cmluZ3N0cmVhbSBpcyBicm9rZW4uICBVbnRp
bCB0aGlzIGlzIGZpeGVkIGluCkBAIC02MywxMCArNjMsMTAgQEAgYm9vbCBudW1lcmljX2xleF9m
bG9hdChjb25zdCBzdGQ6OnN0cmluZyAmc3RyLCBGbG9hdFR5cGUgKnZhbHVlKQogICAgIHN0cmVh
bS5pbWJ1ZShzdGQ6OmxvY2FsZTo6Y2xhc3NpYygpKTsKIAogICAgIHN0cmVhbSA+PiAoKnZhbHVl
KTsKLSAgICByZXR1cm4gIXN0cmVhbS5mYWlsKCk7CisgICAgcmV0dXJuICFzdHJlYW0uZmFpbCgp
ICYmIHN0ZDo6aXNmaW5pdGUoKnZhbHVlKTsKICNlbmRpZgogfQogCi19IC8vIG5hbWVzcGFjZSBw
cC4KK30gIC8vIG5hbWVzcGFjZSBwcC4KIAotI2VuZGlmIC8vIENPTVBJTEVSX1BSRVBST0NFU1NP
Ul9OVU1FUklDTEVYX0hfCisjZW5kaWYgIC8vIENPTVBJTEVSX1BSRVBST0NFU1NPUl9OVU1FUklD
TEVYX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci82NGJpdC1sZXhlci1zYWZldHkucGF0Y2ggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci82NGJpdC1sZXhlci1zYWZldHkucGF0Y2gKaW5k
ZXggZGIzYjJmYWI1NjAuLmU3ZTQwMzc3MWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci82NGJpdC1sZXhlci1zYWZldHkucGF0Y2gK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvNjRi
aXQtbGV4ZXItc2FmZXR5LnBhdGNoCkBAIC0xLDYgKzEsMTMgQEAKLS0tLSBhL3NyYy9jb21waWxl
ci9nbHNsYW5nX2xleC5jcHAKLSsrKyBiL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAKLUBA
IC02OCw2ICs2OCw3IEBAIHR5cGVkZWYgaW50MTZfdCBmbGV4X2ludDE2X3Q7CitkaWZmIC0tZ2l0
IGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ19sZXguY3BwIGIvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvZ2xzbGFuZ19sZXguY3BwCitpbmRleCAxYmE2M2RmLi4yYTIwNmFiIDEwMDY0
NAorLS0tIGEvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ19sZXguY3BwCisrKysgYi9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX2xleC5jcHAKK0BAIC0xLDQgKzEsMyBAQAor
LSNsaW5lIDE3ICIuL2dsc2xhbmcubCIKKyAvLworIC8vIENvcHlyaWdodCAoYykgMjAxMi0yMDEz
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorQEAgLTE0OSw2ICsxNDgsNyBAQCB0eXBlZGVmIGludDE2X3QgZmxleF9pbnQx
Nl90OwogIHR5cGVkZWYgdWludDE2X3QgZmxleF91aW50MTZfdDsKICB0eXBlZGVmIGludDMyX3Qg
ZmxleF9pbnQzMl90OwogIHR5cGVkZWYgdWludDMyX3QgZmxleF91aW50MzJfdDsKQEAgLTgsMTAg
KzE1LDEwIEBACiAgI2Vsc2UKICB0eXBlZGVmIHNpZ25lZCBjaGFyIGZsZXhfaW50OF90OwogIHR5
cGVkZWYgc2hvcnQgaW50IGZsZXhfaW50MTZfdDsKLUBAIC0xOTEsNiArMTkyLDExIEBAIHR5cGVk
ZWYgdm9pZCogeXlzY2FuX3Q7Ci0gdHlwZWRlZiBzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlICpZWV9C
VUZGRVJfU1RBVEU7Ci0gI2VuZGlmCi0KK0BAIC0zMzUsNiArMzM1LDExIEBAIHR5cGVkZWYgc2l6
ZV90IHl5X3NpemVfdDsKKyAKKyAKKyAKICsjaWZuZGVmIFlZX1RZUEVERUZfWVlfU0laRV9UCiAr
I2RlZmluZSBZWV9UWVBFREVGX1lZX1NJWkVfVAogK3R5cGVkZWYgc2l6ZV90IHl5X3NpemVfdDsK
QEAgLTIwLDIxICsyNyw5NiBAQAogICNkZWZpbmUgRU9CX0FDVF9DT05USU5VRV9TQ0FOIDAKICAj
ZGVmaW5lIEVPQl9BQ1RfRU5EX09GX0ZJTEUgMQogICNkZWZpbmUgRU9CX0FDVF9MQVNUX01BVENI
IDIKLUBAIC0yMDQsNyArMjEwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlICpZ
WV9CVUZGRVJfU1RBVEU7CitAQCAtMzUxLDggKzM1Niw4IEBAIHR5cGVkZWYgc2l6ZV90IHl5X3Np
emVfdDsKICAgICAgICovCiAgICAgICNkZWZpbmUgIFlZX0xFU1NfTElORU5PKG4pIFwKICAgICAg
ICAgICAgICBkbyB7IFwKIC0gICAgICAgICAgICAgICAgaW50IHl5bDtcCistICAgICAgICAgICAg
ICAgIGZvciAoIHl5bCA9IG47IHl5bCA8IHl5bGVuZzsgKyt5eWwgKVwKICsgICAgICAgICAgICAg
ICAgeXlfc2l6ZV90IHl5bDtcCi0gICAgICAgICAgICAgICAgIGZvciAoIHl5bCA9IG47IHl5bCA8
IHl5bGVuZzsgKyt5eWwgKVwKKysgICAgICAgICAgICAgICAgZm9yICggeXlsID0gbjsgeXlsIDwg
c3RhdGljX2Nhc3Q8eXlfc2l0ZV90Pih5eWxlbmcpOyArK3l5bCApXAogICAgICAgICAgICAgICAg
ICAgICAgaWYgKCB5eXRleHRbeXlsXSA9PSAnXG4nIClcCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgLS15eWxpbmVubztcCi1AQCAtMzc4LDcgKzM3OSw3IEBAIHN0YXRpYyB2b2lkIHl5X2ZhdGFs
X2Vycm9yICh5eWNvbnN0IGNoYXIgbXNnW10gLHl5c2Nhbl90IHl5c2Nhbm5lciApOwotICAqLwot
ICNkZWZpbmUgWVlfRE9fQkVGT1JFX0FDVElPTiBcCi0gCXl5Zy0+eXl0ZXh0X3B0ciA9IHl5X2Jw
OyBcCi0tCXl5bGVuZyA9IChzaXplX3QpICh5eV9jcCAtIHl5X2JwKTsgXAotKwl5eWxlbmcgPSAo
eXlfc2l6ZV90KSAoeXlfY3AgLSB5eV9icCk7IFwKLSAJeXlnLT55eV9ob2xkX2NoYXIgPSAqeXlf
Y3A7IFwKLSAJKnl5X2NwID0gJ1wwJzsgXAotIAl5eWctPnl5X2NfYnVmX3AgPSB5eV9jcDsKKyAg
ICAgICAgICAgICB9d2hpbGUoMCkKK0BAIC0xNjkyLDcgKzE2OTcsNyBAQCB5eV9maW5kX2FjdGlv
bjoKKyAJCWlmICggeXlfYWN0ICE9IFlZX0VORF9PRl9CVUZGRVIgJiYgeXlfcnVsZV9jYW5fbWF0
Y2hfZW9sW3l5X2FjdF0gKQorIAkJCXsKKyAJCQl5eV9zaXplX3QgeXlsOworLQkJCWZvciAoIHl5
bCA9IDA7IHl5bCA8IHl5bGVuZzsgKyt5eWwgKQorKwkJCWZvciAoIHl5bCA9IDA7IHl5bCA8IHN0
YXRpY19jYXN0PHl5X3NpemVfdD4oeXlsZW5nKTsgKyt5eWwgKQorIAkJCQlpZiAoIHl5dGV4dFt5
eWxdID09ICdcbicgKQorIAkJCQkJICAgCisgICAgIGRveyB5eWxpbmVubysrOworQEAgLTI2NTUs
NyArMjY2MCw3IEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNj
YW5uZXIpCisgCWVsc2UKKyAJCXsKKyAJCQlpbnQgbnVtX3RvX3JlYWQgPQorLQkJCVlZX0NVUlJF
TlRfQlVGRkVSX0xWQUxVRS0+eXlfYnVmX3NpemUgLSBudW1iZXJfdG9fbW92ZSAtIDE7CisrCQkJ
WVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtIHN0YXRpY19jYXN0PGludD4o
bnVtYmVyX3RvX21vdmUpIC0gMTsKKyAKKyAJCXdoaWxlICggbnVtX3RvX3JlYWQgPD0gMCApCisg
CQkJeyAvKiBOb3QgZW5vdWdoIHJvb20gaW4gdGhlIGJ1ZmZlciAtIGdyb3cgaXQuICovCitAQCAt
MjY5MCw3ICsyNjk1LDcgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90
IHl5c2Nhbm5lcikKKyAJCQl5eWctPnl5X2NfYnVmX3AgPSAmYi0+eXlfY2hfYnVmW3l5X2NfYnVm
X3Bfb2Zmc2V0XTsKKyAKKyAJCQludW1fdG9fcmVhZCA9IFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxV
RS0+eXlfYnVmX3NpemUgLQorLQkJCQkJCW51bWJlcl90b19tb3ZlIC0gMTsKKysJCQkJCQlzdGF0
aWNfY2FzdDxpbnQ+KG51bWJlcl90b19tb3ZlKSAtIDE7CisgCisgCQkJfQorIAorQEAgLTI2OTgs
OCArMjcwMywxMCBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlz
Y2FubmVyKQorIAkJCW51bV90b19yZWFkID0gWVlfUkVBRF9CVUZfU0laRTsKKyAKKyAJCS8qIFJl
YWQgaW4gbW9yZSBkYXRhLiAqLworKyAgICAgICAgc2l6ZV90IHJlc3VsdCA9IDA7CisgCQlZWV9J
TlBVVCggKCZZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1ZltudW1iZXJfdG9fbW92
ZV0pLAorLQkJCXl5Zy0+eXlfbl9jaGFycywgbnVtX3RvX3JlYWQgKTsKKysgICAgICAgICAgICBy
ZXN1bHQsIG51bV90b19yZWFkICk7CisrICAgICAgICB5eWctPnl5X25fY2hhcnMgPSBzdGF0aWNf
Y2FzdDxpbnQ+KHJlc3VsdCk7CisgCisgCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X25f
Y2hhcnMgPSB5eWctPnl5X25fY2hhcnM7CisgCQl9CitAQCAtMjcyNSwxMyArMjczMiwxMyBAQCBz
dGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2FubmVyKQorIAorIAlp
ZiAoKGludCkgKHl5Zy0+eXlfbl9jaGFycyArIG51bWJlcl90b19tb3ZlKSA+IFlZX0NVUlJFTlRf
QlVGRkVSX0xWQUxVRS0+eXlfYnVmX3NpemUpIHsKKyAJCS8qIEV4dGVuZCB0aGUgYXJyYXkgYnkg
NTAlLCBwbHVzIHRoZSBudW1iZXIgd2UgcmVhbGx5IG5lZWQuICovCistCQlpbnQgbmV3X3NpemUg
PSB5eWctPnl5X25fY2hhcnMgKyBudW1iZXJfdG9fbW92ZSArICh5eWctPnl5X25fY2hhcnMgPj4g
MSk7CisrCQlpbnQgbmV3X3NpemUgPSB5eWctPnl5X25fY2hhcnMgKyBzdGF0aWNfY2FzdDxpbnQ+
KG51bWJlcl90b19tb3ZlKSArICh5eWctPnl5X25fY2hhcnMgPj4gMSk7CisgCQlZWV9DVVJSRU5U
X0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1ZiA9IChjaGFyICopIHl5cmVhbGxvYygodm9pZCAqKSBZ
WV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1ZixuZXdfc2l6ZSAseXlzY2FubmVyICk7
CisgCQlpZiAoICEgWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9jaF9idWYgKQorIAkJCVlZ
X0ZBVEFMX0VSUk9SKCAib3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIHl5X2dldF9uZXh0X2J1ZmZl
cigpIiApOworIAl9CisgCistCXl5Zy0+eXlfbl9jaGFycyArPSBudW1iZXJfdG9fbW92ZTsKKysJ
eXlnLT55eV9uX2NoYXJzICs9IHN0YXRpY19jYXN0PGludD4obnVtYmVyX3RvX21vdmUpOworIAlZ
WV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1Zlt5eWctPnl5X25fY2hhcnNdID0gWVlf
RU5EX09GX0JVRkZFUl9DSEFSOworIAlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1
Zlt5eWctPnl5X25fY2hhcnMgKyAxXSA9IFlZX0VORF9PRl9CVUZGRVJfQ0hBUjsKKyAKK0BAIC0z
MTU4LDcgKzMxNjUsNyBAQCBzdGF0aWMgdm9pZCB5eWVuc3VyZV9idWZmZXJfc3RhY2sgKHl5c2Nh
bl90IHl5c2Nhbm5lcikKKyAJCS8qIEluY3JlYXNlIHRoZSBidWZmZXIgdG8gcHJlcGFyZSBmb3Ig
YSBwb3NzaWJsZSBwdXNoLiAqLworIAkJeXlfc2l6ZV90IGdyb3dfc2l6ZSA9IDggLyogYXJiaXRy
YXJ5IGdyb3cgc2l6ZSAqLzsKKyAKKy0JCW51bV90b19hbGxvYyA9IHl5Zy0+eXlfYnVmZmVyX3N0
YWNrX21heCArIGdyb3dfc2l6ZTsKKysJCW51bV90b19hbGxvYyA9IHN0YXRpY19jYXN0PGludD4o
eXlnLT55eV9idWZmZXJfc3RhY2tfbWF4ICsgZ3Jvd19zaXplKTsKKyAJCXl5Zy0+eXlfYnVmZmVy
X3N0YWNrID0gKHN0cnVjdCB5eV9idWZmZXJfc3RhdGUqKil5eXJlYWxsb2MKKyAJCQkJCQkJCSh5
eWctPnl5X2J1ZmZlcl9zdGFjaywKKyAJCQkJCQkJCW51bV90b19hbGxvYyAqIHNpemVvZihzdHJ1
Y3QgeXlfYnVmZmVyX3N0YXRlKikKK0BAIC0zMTk2LDcgKzMyMDMsNyBAQCBZWV9CVUZGRVJfU1RB
VEUgeXlfc2Nhbl9idWZmZXIgIChjaGFyICogYmFzZSwgeXlfc2l6ZV90ICBzaXplICwgeXlzY2Fu
X3QgeXlzY2FubgorIAlpZiAoICEgYiApCisgCQlZWV9GQVRBTF9FUlJPUiggIm91dCBvZiBkeW5h
bWljIG1lbW9yeSBpbiB5eV9zY2FuX2J1ZmZlcigpIiApOworIAorLQliLT55eV9idWZfc2l6ZSA9
IHNpemUgLSAyOwkvKiAiLSAyIiB0byB0YWtlIGNhcmUgb2YgRU9CJ3MgKi8KKysJYi0+eXlfYnVm
X3NpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KHNpemUpIC0gMjsJLyogIi0gMiIgdG8gdGFrZSBjYXJl
IG9mIEVPQidzICovCisgCWItPnl5X2J1Zl9wb3MgPSBiLT55eV9jaF9idWYgPSBiYXNlOworIAli
LT55eV9pc19vdXJfYnVmZmVyID0gMDsKKyAJYi0+eXlfaW5wdXRfZmlsZSA9IE5VTEw7CitAQCAt
MzI1MSw3ICszMjU4LDcgQEAgWVlfQlVGRkVSX1NUQVRFIHl5X3NjYW5fYnl0ZXMgICh5eWNvbnN0
IGNoYXIgKiB5eWJ5dGVzLCBpbnQgIF95eWJ5dGVzX2xlbiAsIHl5c2MKKyAJaWYgKCAhIGJ1ZiAp
CisgCQlZWV9GQVRBTF9FUlJPUiggIm91dCBvZiBkeW5hbWljIG1lbW9yeSBpbiB5eV9zY2FuX2J5
dGVzKCkiICk7CisgCistCWZvciAoIGkgPSAwOyBpIDwgX3l5Ynl0ZXNfbGVuOyArK2kgKQorKwlm
b3IgKCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PHl5X3NpemVfdD4oX3l5Ynl0ZXNfbGVuKTsgKytp
ICkKKyAJCWJ1ZltpXSA9IHl5Ynl0ZXNbaV07CisgCisgCWJ1ZltfeXlieXRlc19sZW5dID0gYnVm
W195eWJ5dGVzX2xlbisxXSA9IFlZX0VORF9PRl9CVUZGRVJfQ0hBUjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0FTVE1ldGFkYXRh
SExTTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9BU1RNZXRhZGF0YUhMU0wuY3BwCmluZGV4IGNiZWFmZjVhZWQ3Li44MGE4YWI2MTJhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
QVNUTWV0YWRhdGFITFNMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9BU1RNZXRhZGF0YUhMU0wuY3BwCkBAIC0xMSw2ICsxMSw5IEBACiAj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9DYWxsREFHLmgiCiAjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogbmFtZXNw
YWNlCiB7CiAKQEAgLTI5LDYgKzMyLDE5IEBAIGNsYXNzIFB1bGxHcmFkaWVudCA6IHB1YmxpYyBU
SW50ZXJtVHJhdmVyc2VyCiAgICAgICAgICAgbURhZyhkYWcpCiAgICAgewogICAgICAgICBBU1NF
UlQoaW5kZXggPCBtZXRhZGF0YUxpc3QtPnNpemUoKSk7CisKKyAgICAgICAgLy8gRVNTTCAxMDAg
YnVpbHRpbiBncmFkaWVudCBmdW5jdGlvbnMKKyAgICAgICAgbUdyYWRpZW50QnVpbHRpbkZ1bmN0
aW9ucy5pbnNlcnQoInRleHR1cmUyRCIpOworICAgICAgICBtR3JhZGllbnRCdWlsdGluRnVuY3Rp
b25zLmluc2VydCgidGV4dHVyZTJEUHJvaiIpOworICAgICAgICBtR3JhZGllbnRCdWlsdGluRnVu
Y3Rpb25zLmluc2VydCgidGV4dHVyZUN1YmUiKTsKKworICAgICAgICAvLyBFU1NMIDMwMCBidWls
dGluIGdyYWRpZW50IGZ1bmN0aW9ucworICAgICAgICBtR3JhZGllbnRCdWlsdGluRnVuY3Rpb25z
Lmluc2VydCgidGV4dHVyZSIpOworICAgICAgICBtR3JhZGllbnRCdWlsdGluRnVuY3Rpb25zLmlu
c2VydCgidGV4dHVyZVByb2oiKTsKKyAgICAgICAgbUdyYWRpZW50QnVpbHRpbkZ1bmN0aW9ucy5p
bnNlcnQoInRleHR1cmVPZmZzZXQiKTsKKyAgICAgICAgbUdyYWRpZW50QnVpbHRpbkZ1bmN0aW9u
cy5pbnNlcnQoInRleHR1cmVQcm9qT2Zmc2V0Iik7CisKKyAgICAgICAgLy8gRVNTTCAzMTAgZG9l
c24ndCBhZGQgYnVpbHRpbiBncmFkaWVudCBmdW5jdGlvbnMKICAgICB9CiAKICAgICB2b2lkIHRy
YXZlcnNlKFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUpCkBAIC01OSw3ICs3NSw3IEBA
IGNsYXNzIFB1bGxHcmFkaWVudCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgICAgICAg
ICBBU1NFUlQobVBhcmVudHMuYmFjaygpID09IG5vZGUpOwogICAgICAgICAgICAgbVBhcmVudHMu
cG9wX2JhY2soKTsKICAgICAgICAgICAgIC8vIEEgY29udHJvbCBmbG93J3MgdXNpbmcgYSBncmFk
aWVudCBtZWFucyBpdHMgcGFyZW50cyBhcmUgdG9vLgotICAgICAgICAgICAgaWYgKG1NZXRhZGF0
YS0+bUNvbnRyb2xGbG93c0NvbnRhaW5pbmdHcmFkaWVudC5jb3VudChub2RlKT4gMCAmJiAhbVBh
cmVudHMuZW1wdHkoKSkKKyAgICAgICAgICAgIGlmIChtTWV0YWRhdGEtPm1Db250cm9sRmxvd3ND
b250YWluaW5nR3JhZGllbnQuY291bnQobm9kZSkgPiAwICYmICFtUGFyZW50cy5lbXB0eSgpKQog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG1NZXRhZGF0YS0+bUNvbnRyb2xGbG93c0Nv
bnRhaW5pbmdHcmFkaWVudC5pbnNlcnQobVBhcmVudHMuYmFjaygpKTsKICAgICAgICAgICAgIH0K
QEAgLTg0LDExICsxMDAsMTIgQEAgY2xhc3MgUHVsbEdyYWRpZW50IDogcHVibGljIFRJbnRlcm1U
cmF2ZXJzZXIKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQog
ICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEVPcERGZHg6Ci0gICAgICAgICAgICAg
IGNhc2UgRU9wREZkeToKLSAgICAgICAgICAgICAgICBvbkdyYWRpZW50KCk7Ci0gICAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBFT3BERmR4OgorICAgICAgICAgICAgICAgIGNhc2UgRU9wREZkeToKKyAgICAgICAgICAgICAg
ICBjYXNlIEVPcEZ3aWR0aDoKKyAgICAgICAgICAgICAgICAgICAgb25HcmFkaWVudCgpOworICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKQEAgLTk5LDI5ICsxMTYsMjIgQEAgY2xhc3MgUHVsbEdyYWRp
ZW50IDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICB7CiAgICAgICAgIGlmICh2aXNpdCA9
PSBQcmVWaXNpdCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGUtPmdldE9wKCkgPT0g
RU9wRnVuY3Rpb25DYWxsKQorICAgICAgICAgICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wQ2Fs
bEZ1bmN0aW9uSW5BU1QpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUt
PmlzVXNlckRlZmluZWQoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IHNpemVfdCBjYWxsZWVJbmRleCA9IG1EYWcuZmluZEluZGV4KG5vZGUtPmdldEZ1bmN0aW9uU3lt
Ym9sSW5mbygpKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNhbGxlZUluZGV4ICE9IENh
bGxEQUc6OkludmFsaWRJbmRleCAmJiBjYWxsZWVJbmRleCA8IG1JbmRleCk7Ci0gICAgICAgICAg
ICAgICAgICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUobUluZGV4KTsKKyAgICAgICAgICAg
ICAgICBzaXplX3QgY2FsbGVlSW5kZXggPSBtRGFnLmZpbmRJbmRleChub2RlLT5nZXRGdW5jdGlv
blN5bWJvbEluZm8oKSk7CisgICAgICAgICAgICAgICAgQVNTRVJUKGNhbGxlZUluZGV4ICE9IENh
bGxEQUc6OkludmFsaWRJbmRleCAmJiBjYWxsZWVJbmRleCA8IG1JbmRleCk7CiAKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCgqbU1ldGFkYXRhTGlzdClbY2FsbGVlSW5kZXhdLm1Vc2VzR3JhZGll
bnQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9uR3JhZGllbnQoKTsKLSAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICgoKm1NZXRhZGF0YUxpc3QpW2NhbGxlZUlu
ZGV4XS5tVXNlc0dyYWRpZW50KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgb25HcmFkaWVudCgpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChub2RlLT5nZXRPcCgpID09IEVP
cENhbGxCdWlsdEluRnVuY3Rpb24pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYg
KG1HcmFkaWVudEJ1aWx0aW5GdW5jdGlvbnMuZmluZChub2RlLT5nZXRGdW5jdGlvblN5bWJvbElu
Zm8oKS0+Z2V0TmFtZSgpKSAhPQorICAgICAgICAgICAgICAgICAgICBtR3JhZGllbnRCdWlsdGlu
RnVuY3Rpb25zLmVuZCgpKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
VFN0cmluZyBuYW1lID0KLSAgICAgICAgICAgICAgICAgICAgICAgIFRGdW5jdGlvbjo6dW5tYW5n
bGVOYW1lKG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lKCkpOwotCi0gICAg
ICAgICAgICAgICAgICAgIGlmIChuYW1lID09ICJ0ZXh0dXJlMkQiIHx8Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBuYW1lID09ICJ0ZXh0dXJlMkRQcm9qIiB8fAotICAgICAgICAgICAgICAgICAg
ICAgICAgbmFtZSA9PSAidGV4dHVyZUN1YmUiKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBvbkdyYWRpZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgb25HcmFkaWVudCgpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTM3LDcgKzE0NywxMCBAQCBjbGFzcyBQdWxsR3Jh
ZGllbnQgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogCiAgICAgLy8gQ29udGFpbnMgYSBzdGFj
ayBvZiB0aGUgY29udHJvbCBmbG93IG5vZGVzIHRoYXQgYXJlIHBhcmVudHMgb2YgdGhlIG5vZGUg
YmVpbmcKICAgICAvLyBjdXJyZW50bHkgdmlzaXRlZC4gSXQgaXMgdXNlZCB0byBtYXJrIGNvbnRy
b2wgZmxvd3MgdXNpbmcgYSBncmFkaWVudC4KLSAgICBzdGQ6OnZlY3RvcjxUSW50ZXJtTm9kZSo+
IG1QYXJlbnRzOworICAgIHN0ZDo6dmVjdG9yPFRJbnRlcm1Ob2RlICo+IG1QYXJlbnRzOworCisg
ICAgLy8gQSBsaXN0IG9mIGJ1aWx0aW4gZnVuY3Rpb25zIHRoYXQgdXNlIGdyYWRpZW50cworICAg
IHN0ZDo6c2V0PFRTdHJpbmc+IG1HcmFkaWVudEJ1aWx0aW5GdW5jdGlvbnM7CiB9OwogCiAvLyBU
cmF2ZXJzZXMgdGhlIEFTVCBvZiBhIGZ1bmN0aW9uIGRlZmluaXRpb24gdG8gY29tcHV0ZSB0aGUg
dGhlIGRpc2NvbnRpbnVvdXMgbG9vcHMKQEAgLTIyMyw3ICsyMzYsNyBAQCBjbGFzcyBQdWxsQ29t
cHV0ZURpc2NvbnRpbnVvdXNBbmRHcmFkaWVudExvb3BzIDogcHVibGljIFRJbnRlcm1UcmF2ZXJz
ZXIKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRGbG93T3AoKSkKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBFT3BCcmVhazoKKyAgICAgICAgICAgICAg
ICBjYXNlIEVPcEJyZWFrOgogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKCFtTG9vcHNBbmRTd2l0Y2hlcy5lbXB0eSgpKTsKICAgICAgICAgICAgICAgICAgICAg
VEludGVybUxvb3AgKmxvb3AgPSBtTG9vcHNBbmRTd2l0Y2hlcy5iYWNrKCktPmdldEFzTG9vcE5v
ZGUoKTsKQEAgLTIzMywxMSArMjQ2LDExIEBAIGNsYXNzIFB1bGxDb21wdXRlRGlzY29udGludW91
c0FuZEdyYWRpZW50TG9vcHMgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICBjYXNlIEVPcENvbnRpbnVlOgorICAgICAgICAgICAgICAgIGNhc2UgRU9wQ29u
dGludWU6CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1M
b29wc0FuZFN3aXRjaGVzLmVtcHR5KCkpOwogICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTG9v
cCAqbG9vcCA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgICAgIHNpemVfdCBpID0gbUxvb3Bz
QW5kU3dpdGNoZXMuc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICBzaXplX3QgaSAgICAgICAg
ICA9IG1Mb29wc0FuZFN3aXRjaGVzLnNpemUoKTsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUg
KGxvb3AgPT0gbnVsbHB0ciAmJiBpID4gMCkKICAgICAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICAgICAgLS1pOwpAQCAtMjQ3LDIzICsyNjAsMjMgQEAgY2xhc3MgUHVsbENv
bXB1dGVEaXNjb250aW51b3VzQW5kR3JhZGllbnRMb29wcyA6IHB1YmxpYyBUSW50ZXJtVHJhdmVy
c2VyCiAgICAgICAgICAgICAgICAgICAgIG1NZXRhZGF0YS0+bURpc2NvbnRpbnVvdXNMb29wcy5p
bnNlcnQobG9vcCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICBjYXNlIEVPcEtpbGw6Ci0gICAgICAgICAgICAgIGNhc2UgRU9wUmV0dXJu
OgotICAgICAgICAgICAgICAgIC8vIEEgcmV0dXJuIG9yIGRpc2NhcmQganVtcHMgb3V0IG9mIGFs
bCB0aGUgZW5jbG9zaW5nIGxvb3BzCi0gICAgICAgICAgICAgICAgaWYgKCFtTG9vcHNBbmRTd2l0
Y2hlcy5lbXB0eSgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZm9y
IChUSW50ZXJtTm9kZSAqaW50ZXJtTm9kZSA6IG1Mb29wc0FuZFN3aXRjaGVzKQorICAgICAgICAg
ICAgICAgIGNhc2UgRU9wS2lsbDoKKyAgICAgICAgICAgICAgICBjYXNlIEVPcFJldHVybjoKKyAg
ICAgICAgICAgICAgICAgICAgLy8gQSByZXR1cm4gb3IgZGlzY2FyZCBqdW1wcyBvdXQgb2YgYWxs
IHRoZSBlbmNsb3NpbmcgbG9vcHMKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtTG9vcHNBbmRT
d2l0Y2hlcy5lbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBUSW50ZXJtTG9vcCAqbG9vcCA9IGludGVybU5vZGUtPmdldEFzTG9vcE5vZGUoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb29wKQorICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIChUSW50ZXJtTm9kZSAqaW50ZXJtTm9kZSA6IG1Mb29wc0FuZFN3aXRjaGVzKQogICAg
ICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1NZXRh
ZGF0YS0+bURpc2NvbnRpbnVvdXNMb29wcy5pbnNlcnQobG9vcCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVEludGVybUxvb3AgKmxvb3AgPSBpbnRlcm1Ob2RlLT5nZXRBc0xvb3BOb2Rl
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvb3ApCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTWV0YWRh
dGEtPm1EaXNjb250aW51b3VzTG9vcHMuaW5zZXJ0KGxvb3ApOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTI3
MiwxOCArMjg1LDE0IEBAIGNsYXNzIFB1bGxDb21wdXRlRGlzY29udGludW91c0FuZEdyYWRpZW50
TG9vcHMgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogCiAgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0
ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGUKICAgICB7Ci0g
ICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCAmJiBub2RlLT5nZXRPcCgpID09IEVPcEZ1bmN0
aW9uQ2FsbCkKKyAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0ICYmIG5vZGUtPmdldE9wKCkg
PT0gRU9wQ2FsbEZ1bmN0aW9uSW5BU1QpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2Rl
LT5pc1VzZXJEZWZpbmVkKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc2l6ZV90
IGNhbGxlZUluZGV4ID0gbURhZy5maW5kSW5kZXgobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZv
KCkpOwotICAgICAgICAgICAgICAgIEFTU0VSVChjYWxsZWVJbmRleCAhPSBDYWxsREFHOjpJbnZh
bGlkSW5kZXggJiYgY2FsbGVlSW5kZXggPCBtSW5kZXgpOwotICAgICAgICAgICAgICAgIFVOVVNF
RF9BU1NFUlRJT05fVkFSSUFCTEUobUluZGV4KTsKKyAgICAgICAgICAgIHNpemVfdCBjYWxsZWVJ
bmRleCA9IG1EYWcuZmluZEluZGV4KG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpKTsKKyAg
ICAgICAgICAgIEFTU0VSVChjYWxsZWVJbmRleCAhPSBDYWxsREFHOjpJbnZhbGlkSW5kZXggJiYg
Y2FsbGVlSW5kZXggPCBtSW5kZXgpOwogCi0gICAgICAgICAgICAgICAgaWYgKCgqbU1ldGFkYXRh
TGlzdClbY2FsbGVlSW5kZXhdLm1IYXNHcmFkaWVudExvb3BJbkNhbGxHcmFwaCkKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG9uR3JhZGllbnRMb29wKCk7Ci0gICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCgqbU1ldGFkYXRhTGlzdClbY2FsbGVlSW5kZXhd
Lm1IYXNHcmFkaWVudExvb3BJbkNhbGxHcmFwaCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBvbkdyYWRpZW50TG9vcCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTMx
MCw3ICszMTksNyBAQCBjbGFzcyBQdWxsQ29tcHV0ZURpc2NvbnRpbnVvdXNBbmRHcmFkaWVudExv
b3BzIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICBzaXplX3QgbUluZGV4OwogICAgIGNv
bnN0IENhbGxEQUcgJm1EYWc7CiAKLSAgICBzdGQ6OnZlY3RvcjxUSW50ZXJtTm9kZSo+IG1Mb29w
c0FuZFN3aXRjaGVzOworICAgIHN0ZDo6dmVjdG9yPFRJbnRlcm1Ob2RlICo+IG1Mb29wc0FuZFN3
aXRjaGVzOwogICAgIHN0ZDo6dmVjdG9yPFRJbnRlcm1JZkVsc2UgKj4gbUlmczsKIH07CiAKQEAg
LTM1NCwxOCArMzYzLDE3IEBAIGNsYXNzIFB1c2hEaXNjb250aW51b3VzTG9vcHMgOiBwdWJsaWMg
VEludGVybVRyYXZlcnNlcgogICAgIHsKICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQog
ICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBFT3BGdW5jdGlvbkNhbGw6Ci0gICAgICAgICAgICBp
ZiAodmlzaXQgPT0gUHJlVmlzaXQgJiYgbm9kZS0+aXNVc2VyRGVmaW5lZCgpICYmIG1OZXN0ZWRE
aXNjb250ID4gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGVl
SW5kZXggPSBtRGFnLmZpbmRJbmRleChub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKSk7Ci0g
ICAgICAgICAgICAgICAgQVNTRVJUKGNhbGxlZUluZGV4ICE9IENhbGxEQUc6OkludmFsaWRJbmRl
eCAmJiBjYWxsZWVJbmRleCA8IG1JbmRleCk7Ci0gICAgICAgICAgICAgICAgVU5VU0VEX0FTU0VS
VElPTl9WQVJJQUJMRShtSW5kZXgpOworICAgICAgICAgICAgY2FzZSBFT3BDYWxsRnVuY3Rpb25J
bkFTVDoKKyAgICAgICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQgJiYgbU5lc3RlZERp
c2NvbnQgPiAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGNhbGxlZUluZGV4ID0gbURhZy5maW5kSW5kZXgobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZv
KCkpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2FsbGVlSW5kZXggIT0gQ2FsbERBRzo6
SW52YWxpZEluZGV4ICYmIGNhbGxlZUluZGV4IDwgbUluZGV4KTsKIAotICAgICAgICAgICAgICAg
ICgqbU1ldGFkYXRhTGlzdClbY2FsbGVlSW5kZXhdLm1DYWxsZWRJbkRpc2NvbnRpbnVvdXNMb29w
ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgKCptTWV0YWRh
dGFMaXN0KVtjYWxsZWVJbmRleF0ubUNhbGxlZEluRGlzY29udGludW91c0xvb3AgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQpAQCAtMzc4LDcgKzM4Niw2IEBAIGNsYXNzIFB1c2hEaXNjb250aW51b3Vz
TG9vcHMgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogCiAgICAgaW50IG1OZXN0ZWREaXNjb250
OwogfTsKLQogfQogCiBib29sIEFTVE1ldGFkYXRhSExTTDo6aGFzR3JhZGllbnRJbkNhbGxHcmFw
aChUSW50ZXJtTG9vcCAqbm9kZSkKQEAgLTQ1MCwzICs0NTcsNSBAQCBNZXRhZGF0YUxpc3QgQ3Jl
YXRlQVNUTWV0YWRhdGFITFNMKFRJbnRlcm1Ob2RlICpyb290LCBjb25zdCBDYWxsREFHICZjYWxs
RGFnKQogCiAgICAgcmV0dXJuIG1ldGFkYXRhTGlzdDsKIH0KKworfSAgLy8gbmFtZXNwYWNlIHNo
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9BU1RNZXRhZGF0YUhMU0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL0FTVE1ldGFkYXRhSExTTC5oCmluZGV4IDQ3OTViYzM4Nzc5Li41NTBh
NTIyYjg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvQVNUTWV0YWRhdGFITFNMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQVNUTWV0YWRhdGFITFNMLmgKQEAgLTEyLDYgKzEy
LDkgQEAKICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8dmVjdG9yPgogCituYW1lc3BhY2Ugc2gK
K3sKKwogY2xhc3MgQ2FsbERBRzsKIGNsYXNzIFRJbnRlcm1Ob2RlOwogY2xhc3MgVEludGVybUlm
RWxzZTsKQEAgLTM3LDEzICs0MCwxMyBAQCBzdHJ1Y3QgQVNUTWV0YWRhdGFITFNMCiAKICAgICAv
LyBFdmVuIGlmIHVzZXNHcmFkaWVudCBpcyB0cnVlLCBzb21lIGNvbnRyb2wgZmxvdyBtaWdodCBu
b3QgdXNlIGEgZ3JhZGllbnQKICAgICAvLyBzbyB3ZSBzdG9yZSB0aGUgc2V0IG9mIGFsbCBncmFk
aWVudC11c2luZyBjb250cm9sIGZsb3dzLgotICAgIHN0ZDo6c2V0PFRJbnRlcm1Ob2RlKj4gbUNv
bnRyb2xGbG93c0NvbnRhaW5pbmdHcmFkaWVudDsKKyAgICBzdGQ6OnNldDxUSW50ZXJtTm9kZSAq
PiBtQ29udHJvbEZsb3dzQ29udGFpbmluZ0dyYWRpZW50OwogCiAgICAgLy8gUmVtZW1iZXIgaW5m
b3JtYXRpb24gYWJvdXQgdGhlIGRpc2NvbnRpbnVvdXMgbG9vcHMgYW5kIHdoaWNoIGZ1bmN0aW9u
cwogICAgIC8vIGFyZSBjYWxsZWQgaW4gc3VjaCBsb29wcy4KICAgICBib29sIG1DYWxsZWRJbkRp
c2NvbnRpbnVvdXNMb29wOwogICAgIGJvb2wgbUhhc0dyYWRpZW50TG9vcEluQ2FsbEdyYXBoOwot
ICAgIHN0ZDo6c2V0PFRJbnRlcm1Mb29wKj4gbURpc2NvbnRpbnVvdXNMb29wczsKKyAgICBzdGQ6
OnNldDxUSW50ZXJtTG9vcCAqPiBtRGlzY29udGludW91c0xvb3BzOwogICAgIHN0ZDo6c2V0PFRJ
bnRlcm1JZkVsc2UgKj4gbUlmc0NvbnRhaW5pbmdHcmFkaWVudExvb3A7CiAKICAgICAvLyBXaWxs
IHdlIG5lZWQgdG8gZ2VuZXJhdGUgYSBMb2QwIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uLgpAQCAt
NTUsNCArNTgsNiBAQCB0eXBlZGVmIHN0ZDo6dmVjdG9yPEFTVE1ldGFkYXRhSExTTD4gTWV0YWRh
dGFMaXN0OwogLy8gUmV0dXJuIHRoZSBBU1QgYW5hbHlzaXMgcmVzdWx0LCBpbiB0aGUgb3JkZXIg
ZGVmaW5lZCBieSB0aGUgY2FsbCBEQUcKIE1ldGFkYXRhTGlzdCBDcmVhdGVBU1RNZXRhZGF0YUhM
U0woVEludGVybU5vZGUgKnJvb3QsIGNvbnN0IENhbGxEQUcgJmNhbGxEYWcpOwogCi0jZW5kaWYg
Ly8gQ09NUElMRVJfVFJBTlNMQVRPUl9BU1RNRVRBREFUQUhMU0xfSF8KK30gIC8vIG5hbWVzcGFj
ZSBzaAorCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfQVNUTUVUQURBVEFITFNMX0hf
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9BZGREZWZhdWx0UmV0dXJuU3RhdGVtZW50cy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BZGREZWZhdWx0UmV0dXJuU3RhdGVtZW50cy5j
cHAKaW5kZXggNTc2N2FlYTJiZGMuLmI0OTQ0MTQ4MWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BZGREZWZhdWx0UmV0dXJuU3Rh
dGVtZW50cy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvQWRkRGVmYXVsdFJldHVyblN0YXRlbWVudHMuY3BwCkBAIC0zMyw4ICszMyw4IEBA
IGNsYXNzIEFkZERlZmF1bHRSZXR1cm5TdGF0ZW1lbnRzVHJhdmVyc2VyIDogcHJpdmF0ZSBUSW50
ZXJtVHJhdmVyc2VyCiAKICAgICBzdGF0aWMgYm9vbCBJc0Z1bmN0aW9uV2l0aG91dFJldHVyblN0
YXRlbWVudChUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2RlLCBUVHlwZSAqcmV0dXJuVHlw
ZSkKICAgICB7Ci0gICAgICAgICpyZXR1cm5UeXBlID0gbm9kZS0+Z2V0VHlwZSgpOwotICAgICAg
ICBpZiAobm9kZS0+Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpID09IEVidFZvaWQpCisgICAgICAg
ICpyZXR1cm5UeXBlID0gbm9kZS0+Z2V0RnVuY3Rpb25Qcm90b3R5cGUoKS0+Z2V0VHlwZSgpOwor
ICAgICAgICBpZiAocmV0dXJuVHlwZS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0Vm9pZCkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BcnJheVJldHVy
blZhbHVlVG9PdXRQYXJhbWV0ZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyLmNwcAppbmRl
eCBmMjg5MWNmY2EyZi4uNTUyYWJjNTY0YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0FycmF5UmV0dXJuVmFsdWVUb091dFBhcmFt
ZXRlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyLmNwcApAQCAtMywxNyArMywyMSBA
QAogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCi0v
LyBUaGUgQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyIGZ1bmN0aW9uIGNoYW5nZXMgcmV0
dXJuIHZhbHVlcyBvZiBhbiBhcnJheSB0eXBlIHRvIG91dCBwYXJhbWV0ZXJzIGluCisvLyBUaGUg
QXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyIGZ1bmN0aW9uIGNoYW5nZXMgcmV0dXJuIHZh
bHVlcyBvZiBhbiBhcnJheSB0eXBlIHRvIG91dAorLy8gcGFyYW1ldGVycyBpbgogLy8gZnVuY3Rp
b24gZGVmaW5pdGlvbnMsIHByb3RvdHlwZXMsIGFuZCBjYWxsIHNpdGVzLgogCiAjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9BcnJheVJldHVyblZhbHVlVG9PdXRQYXJhbWV0ZXIuaCIKIAog
I2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgogCituYW1lc3BhY2Ug
c2gKK3sKKwogbmFtZXNwYWNlCiB7CiAKLXZvaWQgQ29weUFnZ3JlZ2F0ZUNoaWxkcmVuKFRJbnRl
cm1BZ2dyZWdhdGUgKmZyb20sIFRJbnRlcm1BZ2dyZWdhdGUgKnRvKQordm9pZCBDb3B5QWdncmVn
YXRlQ2hpbGRyZW4oVEludGVybUFnZ3JlZ2F0ZUJhc2UgKmZyb20sIFRJbnRlcm1BZ2dyZWdhdGVC
YXNlICp0bykKIHsKICAgICBjb25zdCBUSW50ZXJtU2VxdWVuY2UgKmZyb21TZXF1ZW5jZSA9IGZy
b20tPmdldFNlcXVlbmNlKCk7CiAgICAgZm9yIChzaXplX3QgaWkgPSAwOyBpaSA8IGZyb21TZXF1
ZW5jZS0+c2l6ZSgpOyArK2lpKQpAQCAtMzYsMjAgKzQwLDIwIEBAIFRJbnRlcm1TeW1ib2wgKkNy
ZWF0ZVJldHVyblZhbHVlT3V0U3ltYm9sKGNvbnN0IFRUeXBlICZ0eXBlKQogICAgIHJldHVybiBD
cmVhdGVSZXR1cm5WYWx1ZVN5bWJvbChvdXRUeXBlKTsKIH0KIAotVEludGVybUFnZ3JlZ2F0ZSAq
Q3JlYXRlUmVwbGFjZW1lbnRDYWxsKFRJbnRlcm1BZ2dyZWdhdGUgKm9yaWdpbmFsQ2FsbCwgVElu
dGVybVR5cGVkICpyZXR1cm5WYWx1ZVRhcmdldCkKK1RJbnRlcm1BZ2dyZWdhdGUgKkNyZWF0ZVJl
cGxhY2VtZW50Q2FsbChUSW50ZXJtQWdncmVnYXRlICpvcmlnaW5hbENhbGwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpyZXR1cm5WYWx1ZVRh
cmdldCkKIHsKLSAgICBUSW50ZXJtQWdncmVnYXRlICpyZXBsYWNlbWVudENhbGwgPSBuZXcgVElu
dGVybUFnZ3JlZ2F0ZShFT3BGdW5jdGlvbkNhbGwpOwotICAgIHJlcGxhY2VtZW50Q2FsbC0+c2V0
VHlwZShUVHlwZShFYnRWb2lkKSk7Ci0gICAgcmVwbGFjZW1lbnRDYWxsLT5zZXRVc2VyRGVmaW5l
ZCgpOwotICAgICpyZXBsYWNlbWVudENhbGwtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpID0gKm9y
aWdpbmFsQ2FsbC0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCk7Ci0gICAgcmVwbGFjZW1lbnRDYWxs
LT5zZXRMaW5lKG9yaWdpbmFsQ2FsbC0+Z2V0TGluZSgpKTsKLSAgICBUSW50ZXJtU2VxdWVuY2Ug
KnJlcGxhY2VtZW50UGFyYW1ldGVycyA9IHJlcGxhY2VtZW50Q2FsbC0+Z2V0U2VxdWVuY2UoKTsK
LSAgICBUSW50ZXJtU2VxdWVuY2UgKm9yaWdpbmFsUGFyYW1ldGVycyA9IG9yaWdpbmFsQ2FsbC0+
Z2V0U2VxdWVuY2UoKTsKLSAgICBmb3IgKGF1dG8gJnBhcmFtIDogKm9yaWdpbmFsUGFyYW1ldGVy
cykKKyAgICBUSW50ZXJtU2VxdWVuY2UgKnJlcGxhY2VtZW50QXJndW1lbnRzID0gbmV3IFRJbnRl
cm1TZXF1ZW5jZSgpOworICAgIFRJbnRlcm1TZXF1ZW5jZSAqb3JpZ2luYWxBcmd1bWVudHMgICAg
PSBvcmlnaW5hbENhbGwtPmdldFNlcXVlbmNlKCk7CisgICAgZm9yIChhdXRvICZhcmcgOiAqb3Jp
Z2luYWxBcmd1bWVudHMpCiAgICAgewotICAgICAgICByZXBsYWNlbWVudFBhcmFtZXRlcnMtPnB1
c2hfYmFjayhwYXJhbSk7CisgICAgICAgIHJlcGxhY2VtZW50QXJndW1lbnRzLT5wdXNoX2JhY2so
YXJnKTsKICAgICB9Ci0gICAgcmVwbGFjZW1lbnRQYXJhbWV0ZXJzLT5wdXNoX2JhY2socmV0dXJu
VmFsdWVUYXJnZXQpOworICAgIHJlcGxhY2VtZW50QXJndW1lbnRzLT5wdXNoX2JhY2socmV0dXJu
VmFsdWVUYXJnZXQpOworICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnJlcGxhY2VtZW50Q2FsbCA9IFRJ
bnRlcm1BZ2dyZWdhdGU6OkNyZWF0ZUZ1bmN0aW9uQ2FsbCgKKyAgICAgICAgVFR5cGUoRWJ0Vm9p
ZCksIG9yaWdpbmFsQ2FsbC0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldElkKCksCisgICAg
ICAgIG9yaWdpbmFsQ2FsbC0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWVPYmooKSwg
cmVwbGFjZW1lbnRBcmd1bWVudHMpOworICAgIHJlcGxhY2VtZW50Q2FsbC0+c2V0TGluZShvcmln
aW5hbENhbGwtPmdldExpbmUoKSk7CiAgICAgcmV0dXJuIHJlcGxhY2VtZW50Q2FsbDsKIH0KIApA
QCAtNTcsOSArNjEsMTEgQEAgY2xhc3MgQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyVHJh
dmVyc2VyIDogcHJpdmF0ZSBUSW50ZXJtVHJhdmVyc2VyCiB7CiAgIHB1YmxpYzoKICAgICBzdGF0
aWMgdm9pZCBhcHBseShUSW50ZXJtTm9kZSAqcm9vdCwgdW5zaWduZWQgaW50ICp0ZW1wb3JhcnlJ
bmRleCk7CisKICAgcHJpdmF0ZToKICAgICBBcnJheVJldHVyblZhbHVlVG9PdXRQYXJhbWV0ZXJU
cmF2ZXJzZXIoKTsKIAorICAgIGJvb2wgdmlzaXRGdW5jdGlvblByb3RvdHlwZShWaXNpdCB2aXNp
dCwgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlICpub2RlKSBvdmVycmlkZTsKICAgICBib29sIHZp
c2l0RnVuY3Rpb25EZWZpbml0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25EZWZpbml0
aW9uICpub2RlKSBvdmVycmlkZTsKICAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0
LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKSBvdmVycmlkZTsKICAgICBib29sIHZpc2l0QnJhbmNo
KFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoICpub2RlKSBvdmVycmlkZTsKQEAgLTc3LDggKzgz
LDcgQEAgdm9pZCBBcnJheVJldHVyblZhbHVlVG9PdXRQYXJhbWV0ZXJUcmF2ZXJzZXI6OmFwcGx5
KFRJbnRlcm1Ob2RlICpyb290LCB1bnNpZ25lZAogfQogCiBBcnJheVJldHVyblZhbHVlVG9PdXRQ
YXJhbWV0ZXJUcmF2ZXJzZXI6OkFycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlclRyYXZlcnNl
cigpCi0gICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCB0cnVlKSwKLSAgICAgIG1J
bkZ1bmN0aW9uV2l0aEFycmF5UmV0dXJuVmFsdWUoZmFsc2UpCisgICAgOiBUSW50ZXJtVHJhdmVy
c2VyKHRydWUsIGZhbHNlLCB0cnVlKSwgbUluRnVuY3Rpb25XaXRoQXJyYXlSZXR1cm5WYWx1ZShm
YWxzZSkKIHsKIH0KIApAQCAtODYsODEgKzkxLDYzIEBAIGJvb2wgQXJyYXlSZXR1cm5WYWx1ZVRv
T3V0UGFyYW1ldGVyVHJhdmVyc2VyOjp2aXNpdEZ1bmN0aW9uRGVmaW5pdGlvbigKICAgICBWaXNp
dCB2aXNpdCwKICAgICBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2RlKQogewotICAgIGlm
IChub2RlLT5pc0FycmF5KCkgJiYgdmlzaXQgPT0gUHJlVmlzaXQpCisgICAgaWYgKG5vZGUtPmdl
dEZ1bmN0aW9uUHJvdG90eXBlKCktPmlzQXJyYXkoKSAmJiB2aXNpdCA9PSBQcmVWaXNpdCkKICAg
ICB7Ci0gICAgICAgIC8vIFJlcGxhY2UgdGhlIHBhcmFtZXRlcnMgY2hpbGQgbm9kZSBvZiB0aGUg
ZnVuY3Rpb24gZGVmaW5pdGlvbiB3aXRoIGFub3RoZXIgbm9kZQotICAgICAgICAvLyB0aGF0IGhh
cyB0aGUgb3V0IHBhcmFtZXRlciBhZGRlZC4KLSAgICAgICAgLy8gQWxzbyBzZXQgdGhlIGZ1bmN0
aW9uIHRvIHJldHVybiB2b2lkLgotCi0gICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcmFtcyA9
IG5vZGUtPmdldEZ1bmN0aW9uUGFyYW1ldGVycygpOwotICAgICAgICBBU1NFUlQocGFyYW1zICE9
IG51bGxwdHIgJiYgcGFyYW1zLT5nZXRPcCgpID09IEVPcFBhcmFtZXRlcnMpOwotCi0gICAgICAg
IFRJbnRlcm1BZ2dyZWdhdGUgKnJlcGxhY2VtZW50UGFyYW1zID0gbmV3IFRJbnRlcm1BZ2dyZWdh
dGU7Ci0gICAgICAgIHJlcGxhY2VtZW50UGFyYW1zLT5zZXRPcChFT3BQYXJhbWV0ZXJzKTsKLSAg
ICAgICAgQ29weUFnZ3JlZ2F0ZUNoaWxkcmVuKHBhcmFtcywgcmVwbGFjZW1lbnRQYXJhbXMpOwot
ICAgICAgICByZXBsYWNlbWVudFBhcmFtcy0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKENyZWF0
ZVJldHVyblZhbHVlT3V0U3ltYm9sKG5vZGUtPmdldFR5cGUoKSkpOwotICAgICAgICByZXBsYWNl
bWVudFBhcmFtcy0+c2V0TGluZShwYXJhbXMtPmdldExpbmUoKSk7Ci0KLSAgICAgICAgcXVldWVS
ZXBsYWNlbWVudFdpdGhQYXJlbnQobm9kZSwgcGFyYW1zLCByZXBsYWNlbWVudFBhcmFtcywgT3Jp
Z2luYWxOb2RlOjpJU19EUk9QUEVEKTsKLQotICAgICAgICBub2RlLT5zZXRUeXBlKFRUeXBlKEVi
dFZvaWQpKTsKLQorICAgICAgICAvLyBSZXBsYWNpbmcgdGhlIGZ1bmN0aW9uIGhlYWRlciBpcyBk
b25lIG9uIHZpc2l0RnVuY3Rpb25Qcm90b3R5cGUoKS4KICAgICAgICAgbUluRnVuY3Rpb25XaXRo
QXJyYXlSZXR1cm5WYWx1ZSA9IHRydWU7CiAgICAgfQogICAgIGlmICh2aXNpdCA9PSBQb3N0Vmlz
aXQpCiAgICAgewotICAgICAgICAvLyBUaGlzIGlzbid0IGNvbmRpdGlvbmFsIG9uIG5vZGUtPmlz
QXJyYXkoKSBzaW5jZSB0aGUgdHlwZSBoYXMgYWxyZWFkeSBiZWVuIGNoYW5nZWQgb24KLSAgICAg
ICAgLy8gUHJlVmlzaXQuCiAgICAgICAgIG1JbkZ1bmN0aW9uV2l0aEFycmF5UmV0dXJuVmFsdWUg
PSBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgQXJyYXlSZXR1cm5W
YWx1ZVRvT3V0UGFyYW1ldGVyVHJhdmVyc2VyOjp2aXNpdEZ1bmN0aW9uUHJvdG90eXBlKFZpc2l0
IHZpc2l0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlICpub2RlKQorewor
ICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCAmJiBub2RlLT5pc0FycmF5KCkpCisgICAgeworICAg
ICAgICAvLyBSZXBsYWNlIHRoZSB3aG9sZSBwcm90b3R5cGUgbm9kZSB3aXRoIGFub3RoZXIgbm9k
ZSB0aGF0IGhhcyB0aGUgb3V0IHBhcmFtZXRlcgorICAgICAgICAvLyBhZGRlZC4gQWxzbyBzZXQg
dGhlIGZ1bmN0aW9uIHRvIHJldHVybiB2b2lkLgorICAgICAgICBUSW50ZXJtRnVuY3Rpb25Qcm90
b3R5cGUgKnJlcGxhY2VtZW50ID0KKyAgICAgICAgICAgIG5ldyBUSW50ZXJtRnVuY3Rpb25Qcm90
b3R5cGUoVFR5cGUoRWJ0Vm9pZCksIG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXRJ
ZCgpKTsKKyAgICAgICAgQ29weUFnZ3JlZ2F0ZUNoaWxkcmVuKG5vZGUsIHJlcGxhY2VtZW50KTsK
KyAgICAgICAgcmVwbGFjZW1lbnQtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhDcmVhdGVSZXR1
cm5WYWx1ZU91dFN5bWJvbChub2RlLT5nZXRUeXBlKCkpKTsKKyAgICAgICAgKnJlcGxhY2VtZW50
LT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKSA9ICpub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8o
KTsKKyAgICAgICAgcmVwbGFjZW1lbnQtPnNldExpbmUobm9kZS0+Z2V0TGluZSgpKTsKKworICAg
ICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIHJlcGxhY2VtZW50LCBPcmlnaW5hbE5vZGU6OklT
X0RST1BQRUQpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgQXJyYXlSZXR1
cm5WYWx1ZVRvT3V0UGFyYW1ldGVyVHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNp
dCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKIHsKLSAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQp
CisgICAgQVNTRVJUKCFub2RlLT5pc0FycmF5KCkgfHwgbm9kZS0+Z2V0T3AoKSAhPSBFT3BDYWxs
SW50ZXJuYWxSYXdGdW5jdGlvbik7CisgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0ICYmIG5vZGUt
PmlzQXJyYXkoKSAmJiBub2RlLT5nZXRPcCgpID09IEVPcENhbGxGdW5jdGlvbkluQVNUKQogICAg
IHsKLSAgICAgICAgaWYgKG5vZGUtPmlzQXJyYXkoKSkKKyAgICAgICAgLy8gSGFuZGxlIGNhbGwg
c2l0ZXMgd2hlcmUgdGhlIHJldHVybmVkIGFycmF5IGlzIG5vdCBhc3NpZ25lZC4KKyAgICAgICAg
Ly8gRXhhbXBsZXMgd2hlcmUgZigpIGlzIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGFuIGFycmF5Ogor
ICAgICAgICAvLyAxLiBmKCk7CisgICAgICAgIC8vIDIuIGFub3RoZXJfYXJyYXkgPT0gZigpOwor
ICAgICAgICAvLyAzLiBhbm90aGVyX2Z1bmN0aW9uKGYoKSk7CisgICAgICAgIC8vIDQuIHJldHVy
biBmKCk7CisgICAgICAgIC8vIENhc2VzIDIgdG8gNCBhcmUgYWxyZWFkeSBjb252ZXJ0ZWQgdG8g
c2ltcGxlciBjYXNlcyBieQorICAgICAgICAvLyBTZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5n
QXJyYXlzLCBzbyB3ZSBvbmx5IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIGNhc2Ugd2hlcmUgYQor
ICAgICAgICAvLyBmdW5jdGlvbiBjYWxsIHJldHVybmluZyBhbiBhcnJheSBmb3JtcyBhbiBleHBy
ZXNzaW9uIGJ5IGl0c2VsZi4KKyAgICAgICAgVEludGVybUJsb2NrICpwYXJlbnRCbG9jayA9IGdl
dFBhcmVudE5vZGUoKS0+Z2V0QXNCbG9jaygpOworICAgICAgICBpZiAocGFyZW50QmxvY2spCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcFByb3RvdHlwZSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSB3aG9sZSBwcm90
b3R5cGUgbm9kZSB3aXRoIGFub3RoZXIgbm9kZSB0aGF0IGhhcyB0aGUgb3V0IHBhcmFtZXRlciBh
ZGRlZC4KLSAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpyZXBsYWNlbWVudCA9IG5l
dyBUSW50ZXJtQWdncmVnYXRlOwotICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50LT5zZXRPcChF
T3BQcm90b3R5cGUpOwotICAgICAgICAgICAgICAgIENvcHlBZ2dyZWdhdGVDaGlsZHJlbihub2Rl
LCByZXBsYWNlbWVudCk7Ci0gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQtPmdldFNlcXVlbmNl
KCktPnB1c2hfYmFjayhDcmVhdGVSZXR1cm5WYWx1ZU91dFN5bWJvbChub2RlLT5nZXRUeXBlKCkp
KTsKLSAgICAgICAgICAgICAgICByZXBsYWNlbWVudC0+c2V0VXNlckRlZmluZWQoKTsKLSAgICAg
ICAgICAgICAgICAqcmVwbGFjZW1lbnQtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpID0gKm5vZGUt
PmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpOwotICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50LT5z
ZXRMaW5lKG5vZGUtPmdldExpbmUoKSk7Ci0gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQtPnNl
dFR5cGUoVFR5cGUoRWJ0Vm9pZCkpOwotCi0gICAgICAgICAgICAgICAgcXVldWVSZXBsYWNlbWVu
dChub2RlLCByZXBsYWNlbWVudCwgT3JpZ2luYWxOb2RlOjpJU19EUk9QUEVEKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wRnVuY3Rpb25D
YWxsKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBjYWxsIHNpdGVz
IHdoZXJlIHRoZSByZXR1cm5lZCBhcnJheSBpcyBub3QgYXNzaWduZWQuCi0gICAgICAgICAgICAg
ICAgLy8gRXhhbXBsZXMgd2hlcmUgZigpIGlzIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGFuIGFycmF5
OgotICAgICAgICAgICAgICAgIC8vIDEuIGYoKTsKLSAgICAgICAgICAgICAgICAvLyAyLiBhbm90
aGVyX2FycmF5ID09IGYoKTsKLSAgICAgICAgICAgICAgICAvLyAzLiBhbm90aGVyX2Z1bmN0aW9u
KGYoKSk7Ci0gICAgICAgICAgICAgICAgLy8gNC4gcmV0dXJuIGYoKTsKLSAgICAgICAgICAgICAg
ICAvLyBDYXNlcyAyIHRvIDQgYXJlIGFscmVhZHkgY29udmVydGVkIHRvIHNpbXBsZXIgY2FzZXMg
YnkgU2VwYXJhdGVFeHByZXNzaW9uc1JldHVybmluZ0FycmF5cywgc28gd2UKLSAgICAgICAgICAg
ICAgICAvLyBvbmx5IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlIGNhc2Ugd2hlcmUgYSBmdW5jdGlv
biBjYWxsIHJldHVybmluZyBhbiBhcnJheSBmb3JtcyBhbiBleHByZXNzaW9uIGJ5Ci0gICAgICAg
ICAgICAgICAgLy8gaXRzZWxmLgotICAgICAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqcGFyZW50
QmxvY2sgPSBnZXRQYXJlbnROb2RlKCktPmdldEFzQmxvY2soKTsKLSAgICAgICAgICAgICAgICBp
ZiAocGFyZW50QmxvY2spCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBu
ZXh0VGVtcG9yYXJ5SW5kZXgoKTsKLSAgICAgICAgICAgICAgICAgICAgVEludGVybVNlcXVlbmNl
IHJlcGxhY2VtZW50czsKLSAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLnB1c2hfYmFj
ayhjcmVhdGVUZW1wRGVjbGFyYXRpb24obm9kZS0+Z2V0VHlwZSgpKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIFRJbnRlcm1TeW1ib2wgKnJldHVyblN5bWJvbCA9IGNyZWF0ZVRlbXBTeW1ib2wobm9k
ZS0+Z2V0VHlwZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzLnB1c2hfYmFj
ayhDcmVhdGVSZXBsYWNlbWVudENhbGwobm9kZSwgcmV0dXJuU3ltYm9sKSk7Ci0gICAgICAgICAg
ICAgICAgICAgIG1NdWx0aVJlcGxhY2VtZW50cy5wdXNoX2JhY2soCi0gICAgICAgICAgICAgICAg
ICAgICAgICBOb2RlUmVwbGFjZVdpdGhNdWx0aXBsZUVudHJ5KHBhcmVudEJsb2NrLCBub2RlLCBy
ZXBsYWNlbWVudHMpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgbmV4dFRlbXBvcmFyeUluZGV4KCk7
CisgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgcmVwbGFjZW1lbnRzOworICAgICAgICAgICAg
cmVwbGFjZW1lbnRzLnB1c2hfYmFjayhjcmVhdGVUZW1wRGVjbGFyYXRpb24obm9kZS0+Z2V0VHlw
ZSgpKSk7CisgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpyZXR1cm5TeW1ib2wgPSBjcmVhdGVU
ZW1wU3ltYm9sKG5vZGUtPmdldFR5cGUoKSk7CisgICAgICAgICAgICByZXBsYWNlbWVudHMucHVz
aF9iYWNrKENyZWF0ZVJlcGxhY2VtZW50Q2FsbChub2RlLCByZXR1cm5TeW1ib2wpKTsKKyAgICAg
ICAgICAgIG1NdWx0aVJlcGxhY2VtZW50cy5wdXNoX2JhY2soCisgICAgICAgICAgICAgICAgTm9k
ZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRyeShwYXJlbnRCbG9jaywgbm9kZSwgcmVwbGFjZW1lbnRz
KSk7CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KQEAgLTE5NSw3ICsxODIsOCBAQCBib29sIEFycmF5UmV0dXJuVmFsdWVUb091dFBh
cmFtZXRlclRyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaQogICAg
IGlmIChub2RlLT5nZXRPcCgpID09IEVPcEFzc2lnbiAmJiBub2RlLT5nZXRMZWZ0KCktPmlzQXJy
YXkoKSkKICAgICB7CiAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnJpZ2h0QWdnID0gbm9kZS0+
Z2V0UmlnaHQoKS0+Z2V0QXNBZ2dyZWdhdGUoKTsKLSAgICAgICAgaWYgKHJpZ2h0QWdnICE9IG51
bGxwdHIgJiYgcmlnaHRBZ2ctPmdldE9wKCkgPT0gRU9wRnVuY3Rpb25DYWxsICYmIHJpZ2h0QWdn
LT5pc1VzZXJEZWZpbmVkKCkpCisgICAgICAgIEFTU0VSVChyaWdodEFnZyA9PSBudWxscHRyIHx8
IHJpZ2h0QWdnLT5nZXRPcCgpICE9IEVPcENhbGxJbnRlcm5hbFJhd0Z1bmN0aW9uKTsKKyAgICAg
ICAgaWYgKHJpZ2h0QWdnICE9IG51bGxwdHIgJiYgcmlnaHRBZ2ctPmdldE9wKCkgPT0gRU9wQ2Fs
bEZ1bmN0aW9uSW5BU1QpCiAgICAgICAgIHsKICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUg
KnJlcGxhY2VtZW50Q2FsbCA9IENyZWF0ZVJlcGxhY2VtZW50Q2FsbChyaWdodEFnZywgbm9kZS0+
Z2V0TGVmdCgpKTsKICAgICAgICAgICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgcmVwbGFjZW1l
bnRDYWxsLCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOwpAQCAtMjA0LDkgKzE5MiwxMSBAQCBi
b29sIEFycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlclRyYXZlcnNlcjo6dmlzaXRCaW5hcnko
VmlzaXQgdmlzaXQsIFRJbnRlcm1CaQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotfSAvLyBuYW1l
c3BhY2UKK30gIC8vIG5hbWVzcGFjZQogCiB2b2lkIEFycmF5UmV0dXJuVmFsdWVUb091dFBhcmFt
ZXRlcihUSW50ZXJtTm9kZSAqcm9vdCwgdW5zaWduZWQgaW50ICp0ZW1wb3JhcnlJbmRleCkKIHsK
ICAgICBBcnJheVJldHVyblZhbHVlVG9PdXRQYXJhbWV0ZXJUcmF2ZXJzZXI6OmFwcGx5KHJvb3Qs
IHRlbXBvcmFyeUluZGV4KTsKIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9BcnJheVJldHVy
blZhbHVlVG9PdXRQYXJhbWV0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL0FycmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlci5oCmluZGV4IDk4
M2UyMDNlNjI4Li4xOGY1MjY1ZGVjYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVy
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
QXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyLmgKQEAgLTMsMTQgKzMsMTggQEAKIC8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwotLy8gVGhlIEFy
cmF5UmV0dXJuVmFsdWVUb091dFBhcmFtZXRlciBmdW5jdGlvbiBjaGFuZ2VzIHJldHVybiB2YWx1
ZXMgb2YgYW4gYXJyYXkgdHlwZSB0byBvdXQgcGFyYW1ldGVycyBpbgorLy8gVGhlIEFycmF5UmV0
dXJuVmFsdWVUb091dFBhcmFtZXRlciBmdW5jdGlvbiBjaGFuZ2VzIHJldHVybiB2YWx1ZXMgb2Yg
YW4gYXJyYXkgdHlwZSB0byBvdXQKKy8vIHBhcmFtZXRlcnMgaW4KIC8vIGZ1bmN0aW9uIGRlZmlu
aXRpb25zLCBwcm90b3R5cGVzIGFuZCBjYWxsIHNpdGVzLgogCiAjaWZuZGVmIENPTVBJTEVSX1RS
QU5TTEFUT1JfQVJSQVlSRVRVUk5WQUxVRVRPT1VUUEFSQU1FVEVSX0hfCiAjZGVmaW5lIENPTVBJ
TEVSX1RSQU5TTEFUT1JfQVJSQVlSRVRVUk5WQUxVRVRPT1VUUEFSQU1FVEVSX0hfCiAKK25hbWVz
cGFjZSBzaAorewogY2xhc3MgVEludGVybU5vZGU7CiAKIHZvaWQgQXJyYXlSZXR1cm5WYWx1ZVRv
T3V0UGFyYW1ldGVyKFRJbnRlcm1Ob2RlICpyb290LCB1bnNpZ25lZCBpbnQgKnRlbXBvcmFyeUlu
ZGV4KTsKK30gIC8vIG5hbWVzcGFjZSBzaAogCiAjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFU
T1JfQVJSQVlSRVRVUk5WQUxVRVRPT1VUUEFSQU1FVEVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CYXNlVHlwZXMuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0Jhc2VUeXBlcy5o
CmluZGV4IGEzZDlhNjA4MzBkLi45MDViNTlmMDJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQmFzZVR5cGVzLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQmFzZVR5cGVzLmgK
QEAgLTEzLDYgKzEzLDkgQEAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKICNpbmNsdWRlICJH
TFNMQU5HL1NoYWRlckxhbmcuaCIKIAorbmFtZXNwYWNlIHNoCit7CisKIC8vCiAvLyBQcmVjaXNp
b24gcXVhbGlmaWVycwogLy8KQEAgLTI4LDE0ICszMSwxOCBAQCBlbnVtIFRQcmVjaXNpb24KICAg
ICBFYnBMYXN0CiB9OwogCi1pbmxpbmUgY29uc3QgY2hhciogZ2V0UHJlY2lzaW9uU3RyaW5nKFRQ
cmVjaXNpb24gcCkKK2lubGluZSBjb25zdCBjaGFyICpnZXRQcmVjaXNpb25TdHJpbmcoVFByZWNp
c2lvbiBwKQogewotICAgIHN3aXRjaChwKQorICAgIHN3aXRjaCAocCkKICAgICB7Ci0gICAgICAg
IGNhc2UgRWJwSGlnaDogICByZXR1cm4gImhpZ2hwIjsKLSAgICAgICAgY2FzZSBFYnBNZWRpdW06
IHJldHVybiAibWVkaXVtcCI7Ci0gICAgICAgIGNhc2UgRWJwTG93OiAgICByZXR1cm4gImxvd3Ai
OwotICAgICAgICBkZWZhdWx0OiAgICAgICAgcmV0dXJuICJtZWRpdW1wIjsgIC8vIFNhZmVzdCBm
YWxsYmFjaworICAgICAgICBjYXNlIEVicEhpZ2g6CisgICAgICAgICAgICByZXR1cm4gImhpZ2hw
IjsKKyAgICAgICAgY2FzZSBFYnBNZWRpdW06CisgICAgICAgICAgICByZXR1cm4gIm1lZGl1bXAi
OworICAgICAgICBjYXNlIEVicExvdzoKKyAgICAgICAgICAgIHJldHVybiAibG93cCI7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gIm1lZGl1bXAiOyAgLy8gU2FmZXN0IGZh
bGxiYWNrCiAgICAgfQogfQogCkBAIC01OCw2OSArNjUsMjM3IEBAIGVudW0gVEJhc2ljVHlwZQog
ICAgIEVidElWZWMsICAgICAgICAgICAgICAgLy8gbm9uIHR5cGU6IHJlcHJlc2VudHMgaXZlYzIs
IGl2ZWMzLCBhbmQgaXZlYzQKICAgICBFYnRVVmVjLCAgICAgICAgICAgICAgIC8vIG5vbiB0eXBl
OiByZXByZXNlbnRzIHV2ZWMyLCB1dmVjMywgYW5kIHV2ZWM0CiAgICAgRWJ0QlZlYywgICAgICAg
ICAgICAgICAvLyBub24gdHlwZTogcmVwcmVzZW50cyBidmVjMiwgYnZlYzMsIGFuZCBidmVjNAor
ICAgIEVidFl1dkNzY1N0YW5kYXJkRVhULCAgLy8gT25seSB2YWxpZCBpZiBFWFRfWVVWX3Rhcmdl
dCBleGlzdHMuCiAgICAgRWJ0R3VhcmRTYW1wbGVyQmVnaW4sICAvLyBub24gdHlwZTogc2VlIGlt
cGxlbWVudGF0aW9uIG9mIElzU2FtcGxlcigpCiAgICAgRWJ0U2FtcGxlcjJELAogICAgIEVidFNh
bXBsZXIzRCwKICAgICBFYnRTYW1wbGVyQ3ViZSwKICAgICBFYnRTYW1wbGVyMkRBcnJheSwKLSAg
ICBFYnRTYW1wbGVyRXh0ZXJuYWxPRVMsICAvLyBPbmx5IHZhbGlkIGlmIE9FU19FR0xfaW1hZ2Vf
ZXh0ZXJuYWwgZXhpc3RzLgotICAgIEVidFNhbXBsZXIyRFJlY3QsICAgICAgIC8vIE9ubHkgdmFs
aWQgaWYgR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIGV4aXN0cy4KKyAgICBFYnRTYW1wbGVyRXh0
ZXJuYWxPRVMsICAgICAgIC8vIE9ubHkgdmFsaWQgaWYgT0VTX0VHTF9pbWFnZV9leHRlcm5hbCBl
eGlzdHMuCisgICAgRWJ0U2FtcGxlckV4dGVybmFsMkRZMllFWFQsICAvLyBPbmx5IHZhbGlkIGlm
IEdMX0VYVF9ZVVZfdGFyZ2V0IGV4aXN0cy4KKyAgICBFYnRTYW1wbGVyMkRSZWN0LCAgICAgICAg
ICAgIC8vIE9ubHkgdmFsaWQgaWYgR0xfQVJCX3RleHR1cmVfcmVjdGFuZ2xlIGV4aXN0cy4KKyAg
ICBFYnRTYW1wbGVyMkRNUywKICAgICBFYnRJU2FtcGxlcjJELAogICAgIEVidElTYW1wbGVyM0Qs
CiAgICAgRWJ0SVNhbXBsZXJDdWJlLAogICAgIEVidElTYW1wbGVyMkRBcnJheSwKKyAgICBFYnRJ
U2FtcGxlcjJETVMsCiAgICAgRWJ0VVNhbXBsZXIyRCwKICAgICBFYnRVU2FtcGxlcjNELAogICAg
IEVidFVTYW1wbGVyQ3ViZSwKICAgICBFYnRVU2FtcGxlcjJEQXJyYXksCisgICAgRWJ0VVNhbXBs
ZXIyRE1TLAogICAgIEVidFNhbXBsZXIyRFNoYWRvdywKICAgICBFYnRTYW1wbGVyQ3ViZVNoYWRv
dywKICAgICBFYnRTYW1wbGVyMkRBcnJheVNoYWRvdywKLSAgICBFYnRHdWFyZFNhbXBsZXJFbmQs
ICAgIC8vIG5vbiB0eXBlOiBzZWUgaW1wbGVtZW50YXRpb24gb2YgSXNTYW1wbGVyKCkKLSAgICBF
YnRHU2FtcGxlcjJELCAgICAgICAgIC8vIG5vbiB0eXBlOiByZXByZXNlbnRzIHNhbXBsZXIyRCwg
aXNhbXBsZXIyRCwgYW5kIHVzYW1wbGVyMkQKLSAgICBFYnRHU2FtcGxlcjNELCAgICAgICAgIC8v
IG5vbiB0eXBlOiByZXByZXNlbnRzIHNhbXBsZXIzRCwgaXNhbXBsZXIzRCwgYW5kIHVzYW1wbGVy
M0QKLSAgICBFYnRHU2FtcGxlckN1YmUsICAgICAgIC8vIG5vbiB0eXBlOiByZXByZXNlbnRzIHNh
bXBsZXJDdWJlLCBpc2FtcGxlckN1YmUsIGFuZCB1c2FtcGxlckN1YmUKLSAgICBFYnRHU2FtcGxl
cjJEQXJyYXksICAgIC8vIG5vbiB0eXBlOiByZXByZXNlbnRzIHNhbXBsZXIyREFycmF5LCBpc2Ft
cGxlcjJEQXJyYXksIGFuZCB1c2FtcGxlcjJEQXJyYXkKKyAgICBFYnRHdWFyZFNhbXBsZXJFbmQs
ICAvLyBub24gdHlwZTogc2VlIGltcGxlbWVudGF0aW9uIG9mIElzU2FtcGxlcigpCisgICAgRWJ0
R1NhbXBsZXIyRCwgICAgICAgLy8gbm9uIHR5cGU6IHJlcHJlc2VudHMgc2FtcGxlcjJELCBpc2Ft
cGxlcjJELCBhbmQgdXNhbXBsZXIyRAorICAgIEVidEdTYW1wbGVyM0QsICAgICAgIC8vIG5vbiB0
eXBlOiByZXByZXNlbnRzIHNhbXBsZXIzRCwgaXNhbXBsZXIzRCwgYW5kIHVzYW1wbGVyM0QKKyAg
ICBFYnRHU2FtcGxlckN1YmUsICAgICAvLyBub24gdHlwZTogcmVwcmVzZW50cyBzYW1wbGVyQ3Vi
ZSwgaXNhbXBsZXJDdWJlLCBhbmQgdXNhbXBsZXJDdWJlCisgICAgRWJ0R1NhbXBsZXIyREFycmF5
LCAgLy8gbm9uIHR5cGU6IHJlcHJlc2VudHMgc2FtcGxlcjJEQXJyYXksIGlzYW1wbGVyMkRBcnJh
eSwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNhbXBsZXIyREFycmF5CisgICAg
RWJ0R1NhbXBsZXIyRE1TLCAgICAgLy8gbm9uIHR5cGU6IHJlcHJlc2VudHMgc2FtcGxlcjJETVMs
IGlzYW1wbGVyMkRNUywgYW5kIHVzYW1wbGVyMkRNUworCisgICAgLy8gaW1hZ2VzCisgICAgRWJ0
R3VhcmRJbWFnZUJlZ2luLAorICAgIEVidEltYWdlMkQsCisgICAgRWJ0SUltYWdlMkQsCisgICAg
RWJ0VUltYWdlMkQsCisgICAgRWJ0SW1hZ2UzRCwKKyAgICBFYnRJSW1hZ2UzRCwKKyAgICBFYnRV
SW1hZ2UzRCwKKyAgICBFYnRJbWFnZTJEQXJyYXksCisgICAgRWJ0SUltYWdlMkRBcnJheSwKKyAg
ICBFYnRVSW1hZ2UyREFycmF5LAorICAgIEVidEltYWdlQ3ViZSwKKyAgICBFYnRJSW1hZ2VDdWJl
LAorICAgIEVidFVJbWFnZUN1YmUsCisgICAgRWJ0R3VhcmRJbWFnZUVuZCwKKworICAgIEVidEd1
YXJkR0ltYWdlQmVnaW4sCisgICAgRWJ0R0ltYWdlMkQsICAgICAgIC8vIG5vbiB0eXBlOiByZXBy
ZXNlbnRzIGltYWdlMkQsIHVpbWFnZTJELCBpaW1hZ2UyRAorICAgIEVidEdJbWFnZTNELCAgICAg
ICAvLyBub24gdHlwZTogcmVwcmVzZW50cyBpbWFnZTNELCB1aW1hZ2UzRCwgaWltYWdlM0QKKyAg
ICBFYnRHSW1hZ2UyREFycmF5LCAgLy8gbm9uIHR5cGU6IHJlcHJlc2VudHMgaW1hZ2UyREFycmF5
LCB1aW1hZ2UyREFycmF5LCBpaW1hZ2UyREFycmF5CisgICAgRWJ0R0ltYWdlQ3ViZSwgICAgIC8v
IG5vbiB0eXBlOiByZXByZXNlbnRzIGltYWdlQ3ViZSwgdWltYWdlQ3ViZSwgaWltYWdlQ3ViZQor
ICAgIEVidEd1YXJkR0ltYWdlRW5kLAorCiAgICAgRWJ0U3RydWN0LAogICAgIEVidEludGVyZmFj
ZUJsb2NrLAotICAgIEVidEFkZHJlc3MsICAgICAgICAgICAgLy8gc2hvdWxkIGJlIGRlcHJlY2F0
ZWQ/PworICAgIEVidEFkZHJlc3MsICAvLyBzaG91bGQgYmUgZGVwcmVjYXRlZD8/CiAKICAgICAv
LyBlbmQgb2YgbGlzdAogICAgIEVidExhc3QKIH07CiAKLWNvbnN0IGNoYXIqIGdldEJhc2ljU3Ry
aW5nKFRCYXNpY1R5cGUgdCk7CitpbmxpbmUgVEJhc2ljVHlwZSBjb252ZXJ0R0ltYWdlVG9GbG9h
dEltYWdlKFRCYXNpY1R5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAg
ICAgICBjYXNlIEVidEdJbWFnZTJEOgorICAgICAgICAgICAgcmV0dXJuIEVidEltYWdlMkQ7Cisg
ICAgICAgIGNhc2UgRWJ0R0ltYWdlM0Q6CisgICAgICAgICAgICByZXR1cm4gRWJ0SW1hZ2UzRDsK
KyAgICAgICAgY2FzZSBFYnRHSW1hZ2UyREFycmF5OgorICAgICAgICAgICAgcmV0dXJuIEVidElt
YWdlMkRBcnJheTsKKyAgICAgICAgY2FzZSBFYnRHSW1hZ2VDdWJlOgorICAgICAgICAgICAgcmV0
dXJuIEVidEltYWdlQ3ViZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgfQorICAgIHJldHVybiBFYnRMYXN0OworfQorCitpbmxpbmUgVEJhc2ljVHlw
ZSBjb252ZXJ0R0ltYWdlVG9JbnRJbWFnZShUQmFzaWNUeXBlIHR5cGUpCit7CisgICAgc3dpdGNo
ICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBFYnRHSW1hZ2UyRDoKKyAgICAgICAgICAgIHJl
dHVybiBFYnRJSW1hZ2UyRDsKKyAgICAgICAgY2FzZSBFYnRHSW1hZ2UzRDoKKyAgICAgICAgICAg
IHJldHVybiBFYnRJSW1hZ2UzRDsKKyAgICAgICAgY2FzZSBFYnRHSW1hZ2UyREFycmF5OgorICAg
ICAgICAgICAgcmV0dXJuIEVidElJbWFnZTJEQXJyYXk7CisgICAgICAgIGNhc2UgRWJ0R0ltYWdl
Q3ViZToKKyAgICAgICAgICAgIHJldHVybiBFYnRJSW1hZ2VDdWJlOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisgICAgcmV0dXJuIEVidExhc3Q7
Cit9CisKK2lubGluZSBUQmFzaWNUeXBlIGNvbnZlcnRHSW1hZ2VUb1Vuc2lnbmVkSW1hZ2UoVEJh
c2ljVHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2Ug
RWJ0R0ltYWdlMkQ6CisgICAgICAgICAgICByZXR1cm4gRWJ0VUltYWdlMkQ7CisgICAgICAgIGNh
c2UgRWJ0R0ltYWdlM0Q6CisgICAgICAgICAgICByZXR1cm4gRWJ0VUltYWdlM0Q7CisgICAgICAg
IGNhc2UgRWJ0R0ltYWdlMkRBcnJheToKKyAgICAgICAgICAgIHJldHVybiBFYnRVSW1hZ2UyREFy
cmF5OworICAgICAgICBjYXNlIEVidEdJbWFnZUN1YmU6CisgICAgICAgICAgICByZXR1cm4gRWJ0
VUltYWdlQ3ViZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7
CisgICAgfQorICAgIHJldHVybiBFYnRMYXN0OworfQorCitjb25zdCBjaGFyICpnZXRCYXNpY1N0
cmluZyhUQmFzaWNUeXBlIHQpOwogCiBpbmxpbmUgYm9vbCBJc1NhbXBsZXIoVEJhc2ljVHlwZSB0
eXBlKQogewogICAgIHJldHVybiB0eXBlID4gRWJ0R3VhcmRTYW1wbGVyQmVnaW4gJiYgdHlwZSA8
IEVidEd1YXJkU2FtcGxlckVuZDsKIH0KIAoraW5saW5lIGJvb2wgSXNJbWFnZShUQmFzaWNUeXBl
IHR5cGUpCit7CisgICAgcmV0dXJuIHR5cGUgPiBFYnRHdWFyZEltYWdlQmVnaW4gJiYgdHlwZSA8
IEVidEd1YXJkSW1hZ2VFbmQ7Cit9CisKK2lubGluZSBib29sIElzR0ltYWdlKFRCYXNpY1R5cGUg
dHlwZSkKK3sKKyAgICByZXR1cm4gdHlwZSA+IEVidEd1YXJkR0ltYWdlQmVnaW4gJiYgdHlwZSA8
IEVidEd1YXJkR0ltYWdlRW5kOworfQorCitpbmxpbmUgYm9vbCBJc09wYXF1ZVR5cGUoVEJhc2lj
VHlwZSB0eXBlKQoreworICAgIC8vIFRPRE8gKG1yYWRldik6IGFkZCBhdG9taWMgdHlwZXMgYXMg
b3BhcXVlLgorICAgIHJldHVybiBJc1NhbXBsZXIodHlwZSkgfHwgSXNJbWFnZSh0eXBlKTsKK30K
KwogaW5saW5lIGJvb2wgSXNJbnRlZ2VyU2FtcGxlcihUQmFzaWNUeXBlIHR5cGUpCiB7CiAgICAg
c3dpdGNoICh0eXBlKQogICAgIHsKLSAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyRDoKLSAgICAgIGNh
c2UgRWJ0SVNhbXBsZXIzRDoKLSAgICAgIGNhc2UgRWJ0SVNhbXBsZXJDdWJlOgotICAgICAgY2Fz
ZSBFYnRJU2FtcGxlcjJEQXJyYXk6Ci0gICAgICBjYXNlIEVidFVTYW1wbGVyMkQ6Ci0gICAgICBj
YXNlIEVidFVTYW1wbGVyM0Q6Ci0gICAgICBjYXNlIEVidFVTYW1wbGVyQ3ViZToKLSAgICAgIGNh
c2UgRWJ0VVNhbXBsZXIyREFycmF5OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGNhc2Ug
RWJ0U2FtcGxlcjJEOgotICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6Ci0gICAgICBjYXNlIEVidFNh
bXBsZXJDdWJlOgotICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6Ci0gICAgICBjYXNl
IEVidFNhbXBsZXIyRFJlY3Q6Ci0gICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5OgotICAgICAg
Y2FzZSBFYnRTYW1wbGVyMkRTaGFkb3c6Ci0gICAgICBjYXNlIEVidFNhbXBsZXJDdWJlU2hhZG93
OgotICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheVNoYWRvdzoKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgYXNzZXJ0KCFJc1NhbXBsZXIodHlwZSkpOwor
ICAgICAgICBjYXNlIEVidElTYW1wbGVyMkQ6CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIzRDoK
KyAgICAgICAgY2FzZSBFYnRJU2FtcGxlckN1YmU6CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIy
REFycmF5OgorICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRNUzoKKyAgICAgICAgY2FzZSBFYnRV
U2FtcGxlcjJEOgorICAgICAgICBjYXNlIEVidFVTYW1wbGVyM0Q6CisgICAgICAgIGNhc2UgRWJ0
VVNhbXBsZXJDdWJlOgorICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkRBcnJheToKKyAgICAgICAg
Y2FzZSBFYnRVU2FtcGxlcjJETVM6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
Y2FzZSBFYnRTYW1wbGVyMkQ6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjNEOgorICAgICAgICBj
YXNlIEVidFNhbXBsZXJDdWJlOgorICAgICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbE9FUzoK
KyAgICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWwyRFkyWUVYVDoKKyAgICAgICAgY2FzZSBF
YnRTYW1wbGVyMkRSZWN0OgorICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5OgorICAgICAg
ICBjYXNlIEVidFNhbXBsZXIyRFNoYWRvdzoKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNo
YWRvdzoKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheVNoYWRvdzoKKyAgICAgICAgY2Fz
ZSBFYnRTYW1wbGVyMkRNUzoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIGFzc2VydCghSXNTYW1wbGVyKHR5cGUpKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2lubGluZSBib29sIElzU2FtcGxlcjJETVMoVEJhc2ljVHlw
ZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgRWJ0U2Ft
cGxlcjJETVM6CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyRE1TOgorICAgICAgICBjYXNlIEVi
dFVTYW1wbGVyMkRNUzoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworaW5saW5lIGJvb2wgSXNG
bG9hdEltYWdlKFRCYXNpY1R5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgewor
ICAgICAgICBjYXNlIEVidEltYWdlMkQ6CisgICAgICAgIGNhc2UgRWJ0SW1hZ2UzRDoKKyAgICAg
ICAgY2FzZSBFYnRJbWFnZTJEQXJyYXk6CisgICAgICAgIGNhc2UgRWJ0SW1hZ2VDdWJlOgorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVh
azsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2lubGluZSBib29sIElzSW50ZWdl
ckltYWdlKFRCYXNpY1R5cGUgdHlwZSkKK3sKKworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7Cisg
ICAgICAgIGNhc2UgRWJ0SUltYWdlMkQ6CisgICAgICAgIGNhc2UgRWJ0SUltYWdlM0Q6CisgICAg
ICAgIGNhc2UgRWJ0SUltYWdlMkRBcnJheToKKyAgICAgICAgY2FzZSBFYnRJSW1hZ2VDdWJlOgor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBi
cmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2lubGluZSBib29sIElzVW5z
aWduZWRJbWFnZShUQmFzaWNUeXBlIHR5cGUpCit7CisKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAg
eworICAgICAgICBjYXNlIEVidFVJbWFnZTJEOgorICAgICAgICBjYXNlIEVidFVJbWFnZTNEOgor
ICAgICAgICBjYXNlIEVidFVJbWFnZTJEQXJyYXk6CisgICAgICAgIGNhc2UgRWJ0VUltYWdlQ3Vi
ZToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMwLDI3ICszMDUsMzEg
QEAgaW5saW5lIGJvb2wgSXNTYW1wbGVyMkQoVEJhc2ljVHlwZSB0eXBlKQogewogICAgIHN3aXRj
aCAodHlwZSkKICAgICB7Ci0gICAgICBjYXNlIEVidFNhbXBsZXIyRDoKLSAgICAgIGNhc2UgRWJ0
SVNhbXBsZXIyRDoKLSAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyRDoKLSAgICAgIGNhc2UgRWJ0U2Ft
cGxlcjJEQXJyYXk6Ci0gICAgICBjYXNlIEVidElTYW1wbGVyMkRBcnJheToKLSAgICAgIGNhc2Ug
RWJ0VVNhbXBsZXIyREFycmF5OgotICAgICAgY2FzZSBFYnRTYW1wbGVyMkRSZWN0OgotICAgICAg
Y2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6Ci0gICAgICBjYXNlIEVidFNhbXBsZXIyRFNoYWRv
dzoKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXlTaGFkb3c6Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6Ci0gICAgICBjYXNlIEVidElTYW1wbGVyM0Q6
Ci0gICAgICBjYXNlIEVidFVTYW1wbGVyM0Q6Ci0gICAgICBjYXNlIEVidElTYW1wbGVyQ3ViZToK
LSAgICAgIGNhc2UgRWJ0VVNhbXBsZXJDdWJlOgotICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZToK
LSAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmVTaGFkb3c6Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGFzc2VydCghSXNTYW1wbGVyKHR5cGUpKTsKKyAgICAg
ICAgY2FzZSBFYnRTYW1wbGVyMkQ6CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyRDoKKyAgICAg
ICAgY2FzZSBFYnRVU2FtcGxlcjJEOgorICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5Ogor
ICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRBcnJheToKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxl
cjJEQXJyYXk6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEUmVjdDoKKyAgICAgICAgY2FzZSBF
YnRTYW1wbGVyRXh0ZXJuYWxPRVM6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlckV4dGVybmFsMkRZ
MllFWFQ6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEU2hhZG93OgorICAgICAgICBjYXNlIEVi
dFNhbXBsZXIyREFycmF5U2hhZG93OgorICAgICAgICBjYXNlIEVidFNhbXBsZXIyRE1TOgorICAg
ICAgICBjYXNlIEVidElTYW1wbGVyMkRNUzoKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJETVM6
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6Cisg
ICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIzRDoKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjNEOgor
ICAgICAgICBjYXNlIEVidElTYW1wbGVyQ3ViZToKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxlckN1
YmU6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxl
ckN1YmVTaGFkb3c6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBhc3NlcnQoIUlzU2FtcGxlcih0eXBlKSk7CiAgICAgfQogCiAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTYwLDI3ICszMzksMzEgQEAgaW5saW5lIGJvb2wgSXNTYW1wbGVyQ3Vi
ZShUQmFzaWNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKQogICAgIHsKLSAgICAgIGNh
c2UgRWJ0U2FtcGxlckN1YmU6Ci0gICAgICBjYXNlIEVidElTYW1wbGVyQ3ViZToKLSAgICAgIGNh
c2UgRWJ0VVNhbXBsZXJDdWJlOgotICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzoKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBjYXNlIEVidFNhbXBsZXIyRDoKLSAgICAgIGNhc2Ug
RWJ0U2FtcGxlcjNEOgotICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6Ci0gICAgICBj
YXNlIEVidFNhbXBsZXIyRFJlY3Q6Ci0gICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5OgotICAg
ICAgY2FzZSBFYnRJU2FtcGxlcjJEOgotICAgICAgY2FzZSBFYnRJU2FtcGxlcjNEOgotICAgICAg
Y2FzZSBFYnRJU2FtcGxlcjJEQXJyYXk6Ci0gICAgICBjYXNlIEVidFVTYW1wbGVyMkQ6Ci0gICAg
ICBjYXNlIEVidFVTYW1wbGVyM0Q6Ci0gICAgICBjYXNlIEVidFVTYW1wbGVyMkRBcnJheToKLSAg
ICAgIGNhc2UgRWJ0U2FtcGxlcjJEU2hhZG93OgotICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJh
eVNoYWRvdzoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAg
YXNzZXJ0KCFJc1NhbXBsZXIodHlwZSkpOworICAgICAgICBjYXNlIEVidFNhbXBsZXJDdWJlOgor
ICAgICAgICBjYXNlIEVidElTYW1wbGVyQ3ViZToKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxlckN1
YmU6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmVTaGFkb3c6CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6CisgICAgICAgIGNhc2UgRWJ0U2Ft
cGxlcjNEOgorICAgICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbE9FUzoKKyAgICAgICAgY2Fz
ZSBFYnRTYW1wbGVyRXh0ZXJuYWwyRFkyWUVYVDoKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRS
ZWN0OgorICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5OgorICAgICAgICBjYXNlIEVidFNh
bXBsZXIyRE1TOgorICAgICAgICBjYXNlIEVidElTYW1wbGVyMkQ6CisgICAgICAgIGNhc2UgRWJ0
SVNhbXBsZXIzRDoKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEQXJyYXk6CisgICAgICAgIGNh
c2UgRWJ0SVNhbXBsZXIyRE1TOgorICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkQ6CisgICAgICAg
IGNhc2UgRWJ0VVNhbXBsZXIzRDoKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEQXJyYXk6Cisg
ICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyRE1TOgorICAgICAgICBjYXNlIEVidFNhbXBsZXIyRFNo
YWRvdzoKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheVNoYWRvdzoKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydCghSXNT
YW1wbGVyKHR5cGUpKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTAsMjcgKzM3
MywzMSBAQCBpbmxpbmUgYm9vbCBJc1NhbXBsZXIzRChUQmFzaWNUeXBlIHR5cGUpCiB7CiAgICAg
c3dpdGNoICh0eXBlKQogICAgIHsKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjNEOgotICAgICAgY2Fz
ZSBFYnRJU2FtcGxlcjNEOgotICAgICAgY2FzZSBFYnRVU2FtcGxlcjNEOgotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEOgotICAgICAgY2FzZSBFYnRTYW1wbGVy
Q3ViZToKLSAgICAgIGNhc2UgRWJ0U2FtcGxlckV4dGVybmFsT0VTOgotICAgICAgY2FzZSBFYnRT
YW1wbGVyMkRSZWN0OgotICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheToKLSAgICAgIGNhc2Ug
RWJ0SVNhbXBsZXIyRDoKLSAgICAgIGNhc2UgRWJ0SVNhbXBsZXJDdWJlOgotICAgICAgY2FzZSBF
YnRJU2FtcGxlcjJEQXJyYXk6Ci0gICAgICBjYXNlIEVidFVTYW1wbGVyMkQ6Ci0gICAgICBjYXNl
IEVidFVTYW1wbGVyQ3ViZToKLSAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyREFycmF5OgotICAgICAg
Y2FzZSBFYnRTYW1wbGVyMkRTaGFkb3c6Ci0gICAgICBjYXNlIEVidFNhbXBsZXJDdWJlU2hhZG93
OgotICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheVNoYWRvdzoKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgYXNzZXJ0KCFJc1NhbXBsZXIodHlwZSkpOwor
ICAgICAgICBjYXNlIEVidFNhbXBsZXIzRDoKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjNEOgor
ICAgICAgICBjYXNlIEVidFVTYW1wbGVyM0Q6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6Cisg
ICAgICAgIGNhc2UgRWJ0U2FtcGxlckV4dGVybmFsT0VTOgorICAgICAgICBjYXNlIEVidFNhbXBs
ZXJFeHRlcm5hbDJEWTJZRVhUOgorICAgICAgICBjYXNlIEVidFNhbXBsZXIyRFJlY3Q6CisgICAg
ICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJETVM6
CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyRDoKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlckN1
YmU6CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyREFycmF5OgorICAgICAgICBjYXNlIEVidElT
YW1wbGVyMkRNUzoKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEOgorICAgICAgICBjYXNlIEVi
dFVTYW1wbGVyQ3ViZToKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEQXJyYXk6CisgICAgICAg
IGNhc2UgRWJ0VVNhbXBsZXIyRE1TOgorICAgICAgICBjYXNlIEVidFNhbXBsZXIyRFNoYWRvdzoK
KyAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzoKKyAgICAgICAgY2FzZSBFYnRTYW1w
bGVyMkRBcnJheVNoYWRvdzoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIGFzc2VydCghSXNTYW1wbGVyKHR5cGUpKTsKICAgICB9CiAKICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0yMjAsMjcgKzQwNywzMSBAQCBpbmxpbmUgYm9vbCBJc1NhbXBs
ZXJBcnJheShUQmFzaWNUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKQogICAgIHsKLSAg
ICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6Ci0gICAgICBjYXNlIEVidElTYW1wbGVyMkRBcnJh
eToKLSAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyREFycmF5OgotICAgICAgY2FzZSBFYnRTYW1wbGVy
MkRBcnJheVNoYWRvdzoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBjYXNlIEVidFNhbXBs
ZXIyRDoKLSAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyRDoKLSAgICAgIGNhc2UgRWJ0VVNhbXBsZXIy
RDoKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEUmVjdDoKLSAgICAgIGNhc2UgRWJ0U2FtcGxlckV4
dGVybmFsT0VTOgotICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6Ci0gICAgICBjYXNlIEVidElTYW1w
bGVyM0Q6Ci0gICAgICBjYXNlIEVidFVTYW1wbGVyM0Q6Ci0gICAgICBjYXNlIEVidElTYW1wbGVy
Q3ViZToKLSAgICAgIGNhc2UgRWJ0VVNhbXBsZXJDdWJlOgotICAgICAgY2FzZSBFYnRTYW1wbGVy
Q3ViZToKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEU2hhZG93OgotICAgICAgY2FzZSBFYnRTYW1w
bGVyQ3ViZVNoYWRvdzoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgYXNzZXJ0KCFJc1NhbXBsZXIodHlwZSkpOworICAgICAgICBjYXNlIEVidFNhbXBsZXIy
REFycmF5OgorICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRBcnJheToKKyAgICAgICAgY2FzZSBF
YnRVU2FtcGxlcjJEQXJyYXk6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXlTaGFkb3c6
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6Cisg
ICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyRDoKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEOgor
ICAgICAgICBjYXNlIEVidFNhbXBsZXIyRFJlY3Q6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlckV4
dGVybmFsT0VTOgorICAgICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbDJEWTJZRVhUOgorICAg
ICAgICBjYXNlIEVidFNhbXBsZXIzRDoKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjNEOgorICAg
ICAgICBjYXNlIEVidFVTYW1wbGVyM0Q6CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXJDdWJlOgor
ICAgICAgICBjYXNlIEVidFVTYW1wbGVyQ3ViZToKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyQ3Vi
ZToKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRTaGFkb3c6CisgICAgICAgIGNhc2UgRWJ0U2Ft
cGxlckN1YmVTaGFkb3c6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJETVM6CisgICAgICAgIGNh
c2UgRWJ0SVNhbXBsZXIyRE1TOgorICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkRNUzoKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2Vy
dCghSXNTYW1wbGVyKHR5cGUpKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNTAs
MjcgKzQ0MSwzMSBAQCBpbmxpbmUgYm9vbCBJc1NoYWRvd1NhbXBsZXIoVEJhc2ljVHlwZSB0eXBl
KQogewogICAgIHN3aXRjaCAodHlwZSkKICAgICB7Ci0gICAgICBjYXNlIEVidFNhbXBsZXIyRFNo
YWRvdzoKLSAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmVTaGFkb3c6Ci0gICAgICBjYXNlIEVidFNh
bXBsZXIyREFycmF5U2hhZG93OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGNhc2UgRWJ0
SVNhbXBsZXIyRDoKLSAgICAgIGNhc2UgRWJ0SVNhbXBsZXIzRDoKLSAgICAgIGNhc2UgRWJ0SVNh
bXBsZXJDdWJlOgotICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEQXJyYXk6Ci0gICAgICBjYXNlIEVi
dFVTYW1wbGVyMkQ6Ci0gICAgICBjYXNlIEVidFVTYW1wbGVyM0Q6Ci0gICAgICBjYXNlIEVidFVT
YW1wbGVyQ3ViZToKLSAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyREFycmF5OgotICAgICAgY2FzZSBF
YnRTYW1wbGVyMkQ6Ci0gICAgICBjYXNlIEVidFNhbXBsZXIzRDoKLSAgICAgIGNhc2UgRWJ0U2Ft
cGxlckN1YmU6Ci0gICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbE9FUzoKLSAgICAgIGNhc2Ug
RWJ0U2FtcGxlcjJEUmVjdDoKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGFzc2VydCghSXNTYW1wbGVy
KHR5cGUpKTsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRTaGFkb3c6CisgICAgICAgIGNhc2Ug
RWJ0U2FtcGxlckN1YmVTaGFkb3c6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXlTaGFk
b3c6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJE
OgorICAgICAgICBjYXNlIEVidElTYW1wbGVyM0Q6CisgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXJD
dWJlOgorICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRBcnJheToKKyAgICAgICAgY2FzZSBFYnRJ
U2FtcGxlcjJETVM6CisgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyRDoKKyAgICAgICAgY2FzZSBF
YnRVU2FtcGxlcjNEOgorICAgICAgICBjYXNlIEVidFVTYW1wbGVyQ3ViZToKKyAgICAgICAgY2Fz
ZSBFYnRVU2FtcGxlcjJEQXJyYXk6CisgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyRE1TOgorICAg
ICAgICBjYXNlIEVidFNhbXBsZXIyRDoKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6CisgICAg
ICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlckV4dGVybmFs
T0VTOgorICAgICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbDJEWTJZRVhUOgorICAgICAgICBj
YXNlIEVidFNhbXBsZXIyRFJlY3Q6CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6Cisg
ICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJETVM6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQoIUlzU2FtcGxlcih0eXBlKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjgzLDcgKzQ3OCw3IEBAIGlubGluZSBib29s
IElzSW50ZWdlcihUQmFzaWNUeXBlIHR5cGUpCiAKIGlubGluZSBib29sIFN1cHBvcnRzUHJlY2lz
aW9uKFRCYXNpY1R5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gdHlwZSA9PSBFYnRGbG9hdCB8fCB0
eXBlID09IEVidEludCB8fCB0eXBlID09IEVidFVJbnQgfHwgSXNTYW1wbGVyKHR5cGUpOworICAg
IHJldHVybiB0eXBlID09IEVidEZsb2F0IHx8IHR5cGUgPT0gRWJ0SW50IHx8IHR5cGUgPT0gRWJ0
VUludCB8fCBJc09wYXF1ZVR5cGUodHlwZSk7CiB9CiAKIC8vCkBAIC0zMzYsNiArNTMxLDggQEAg
ZW51bSBUUXVhbGlmaWVyCiAgICAgRXZxU2Vjb25kYXJ5RnJhZ0NvbG9yRVhULCAgLy8gRVhUX2Js
ZW5kX2Z1bmNfZXh0ZW5kZWQKICAgICBFdnFTZWNvbmRhcnlGcmFnRGF0YUVYVCwgICAvLyBFWFRf
YmxlbmRfZnVuY19leHRlbmRlZAogCisgICAgRXZxVmlld0lET1ZSLCAgLy8gT1ZSX211bHRpdmll
dworCiAgICAgLy8gYnVpbHQtaW5zIHdyaXR0ZW4gYnkgdGhlIHNoYWRlcl9mcmFtZWJ1ZmZlcl9m
ZXRjaCBleHRlbnNpb24ocykKICAgICBFdnFMYXN0RnJhZ0NvbG9yLAogICAgIEV2cUxhc3RGcmFn
RGF0YSwKQEAgLTM1Miw2ICs1NDksNyBAQCBlbnVtIFRRdWFsaWZpZXIKICAgICBFdnFDZW50cm9p
ZEluLCAgLy8gSW1wbGllcyBzbW9vdGgKIAogICAgIC8vIEdMU0wgRVMgMy4xIGNvbXB1dGUgc2hh
ZGVyIHNwZWNpYWwgdmFyaWFibGVzCisgICAgRXZxU2hhcmVkLAogICAgIEV2cUNvbXB1dGVJbiwK
ICAgICBFdnFOdW1Xb3JrR3JvdXBzLAogICAgIEV2cVdvcmtHcm91cFNpemUsCkBAIC0zNjAsNiAr
NTU4LDEzIEBAIGVudW0gVFF1YWxpZmllcgogICAgIEV2cUdsb2JhbEludm9jYXRpb25JRCwKICAg
ICBFdnFMb2NhbEludm9jYXRpb25JbmRleCwKIAorICAgIC8vIEdMU0wgRVMgMy4xIG1lbW9yeSBx
dWFsaWZpZXJzCisgICAgRXZxUmVhZE9ubHksCisgICAgRXZxV3JpdGVPbmx5LAorICAgIEV2cUNv
aGVyZW50LAorICAgIEV2cVJlc3RyaWN0LAorICAgIEV2cVZvbGF0aWxlLAorCiAgICAgLy8gZW5k
IG9mIGxpc3QKICAgICBFdnFMYXN0CiB9OwpAQCAtMzY5LDYgKzU3NCwyNCBAQCBpbmxpbmUgYm9v
bCBJc1F1YWxpZmllclVuc3BlY2lmaWVkKFRRdWFsaWZpZXIgcXVhbGlmaWVyKQogICAgIHJldHVy
biAocXVhbGlmaWVyID09IEV2cVRlbXBvcmFyeSB8fCBxdWFsaWZpZXIgPT0gRXZxR2xvYmFsKTsK
IH0KIAorZW51bSBUTGF5b3V0SW1hZ2VJbnRlcm5hbEZvcm1hdAoreworICAgIEVpaWZVbnNwZWNp
ZmllZCwKKyAgICBFaWlmUkdCQTMyRiwKKyAgICBFaWlmUkdCQTE2RiwKKyAgICBFaWlmUjMyRiwK
KyAgICBFaWlmUkdCQTMyVUksCisgICAgRWlpZlJHQkExNlVJLAorICAgIEVpaWZSR0JBOFVJLAor
ICAgIEVpaWZSMzJVSSwKKyAgICBFaWlmUkdCQTMySSwKKyAgICBFaWlmUkdCQTE2SSwKKyAgICBF
aWlmUkdCQThJLAorICAgIEVpaWZSMzJJLAorICAgIEVpaWZSR0JBOCwKKyAgICBFaWlmUkdCQThf
U05PUk0KK307CisKIGVudW0gVExheW91dE1hdHJpeFBhY2tpbmcKIHsKICAgICBFbXBVbnNwZWNp
ZmllZCwKQEAgLTM4NCw2ICs2MDcsMTQgQEAgZW51bSBUTGF5b3V0QmxvY2tTdG9yYWdlCiAgICAg
RWJzU3RkMTQwCiB9OwogCitlbnVtIFRZdXZDc2NTdGFuZGFyZEVYVAoreworICAgIEV5Y3NVbmRl
ZmluZWQsCisgICAgRXljc0l0dTYwMSwKKyAgICBFeWNzSXR1NjAxRnVsbFJhbmdlLAorICAgIEV5
Y3NJdHU3MDkKK307CisKIHN0cnVjdCBUTGF5b3V0UXVhbGlmaWVyCiB7CiAgICAgaW50IGxvY2F0
aW9uOwpAQCAtMzk0LDM0ICs2MjUsNTUgQEAgc3RydWN0IFRMYXlvdXRRdWFsaWZpZXIKICAgICAv
LyBDb21wdXRlIHNoYWRlciBsYXlvdXQgcXVhbGlmaWVycy4KICAgICBzaDo6V29ya0dyb3VwU2l6
ZSBsb2NhbFNpemU7CiAKKyAgICBpbnQgYmluZGluZzsKKworICAgIC8vIEltYWdlIGZvcm1hdCBs
YXlvdXQgcXVhbGlmaWVyCisgICAgVExheW91dEltYWdlSW50ZXJuYWxGb3JtYXQgaW1hZ2VJbnRl
cm5hbEZvcm1hdDsKKworICAgIC8vIE9WUl9tdWx0aXZpZXcgbnVtX3ZpZXdzLgorICAgIGludCBu
dW1WaWV3czsKKworICAgIC8vIEVYVF9ZVVZfdGFyZ2V0IHl1diBsYXlvdXQgcXVhbGlmaWVyLgor
ICAgIGJvb2wgeXV2OworCiAgICAgc3RhdGljIFRMYXlvdXRRdWFsaWZpZXIgY3JlYXRlKCkKICAg
ICB7CiAgICAgICAgIFRMYXlvdXRRdWFsaWZpZXIgbGF5b3V0UXVhbGlmaWVyOwogCi0gICAgICAg
IGxheW91dFF1YWxpZmllci5sb2NhdGlvbiA9IC0xOworICAgICAgICBsYXlvdXRRdWFsaWZpZXIu
bG9jYXRpb24gICAgICAgICAgID0gLTE7CiAgICAgICAgIGxheW91dFF1YWxpZmllci5sb2NhdGlv
bnNTcGVjaWZpZWQgPSAwOwotICAgICAgICBsYXlvdXRRdWFsaWZpZXIubWF0cml4UGFja2luZyA9
IEVtcFVuc3BlY2lmaWVkOwotICAgICAgICBsYXlvdXRRdWFsaWZpZXIuYmxvY2tTdG9yYWdlID0g
RWJzVW5zcGVjaWZpZWQ7CisgICAgICAgIGxheW91dFF1YWxpZmllci5tYXRyaXhQYWNraW5nICAg
ICAgPSBFbXBVbnNwZWNpZmllZDsKKyAgICAgICAgbGF5b3V0UXVhbGlmaWVyLmJsb2NrU3RvcmFn
ZSAgICAgICA9IEVic1Vuc3BlY2lmaWVkOwogCiAgICAgICAgIGxheW91dFF1YWxpZmllci5sb2Nh
bFNpemUuZmlsbCgtMSk7CisgICAgICAgIGxheW91dFF1YWxpZmllci5iaW5kaW5nICA9IC0xOwor
ICAgICAgICBsYXlvdXRRdWFsaWZpZXIubnVtVmlld3MgPSAtMTsKKyAgICAgICAgbGF5b3V0UXVh
bGlmaWVyLnl1diAgICAgID0gZmFsc2U7CiAKKyAgICAgICAgbGF5b3V0UXVhbGlmaWVyLmltYWdl
SW50ZXJuYWxGb3JtYXQgPSBFaWlmVW5zcGVjaWZpZWQ7CiAgICAgICAgIHJldHVybiBsYXlvdXRR
dWFsaWZpZXI7CiAgICAgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiBsb2NhdGlvbiA9PSAtMSAmJiBtYXRyaXhQYWNraW5nID09IEVtcFVuc3BlY2lm
aWVkICYmCi0gICAgICAgICAgICAgICBibG9ja1N0b3JhZ2UgPT0gRWJzVW5zcGVjaWZpZWQgJiYg
IWxvY2FsU2l6ZS5pc0FueVZhbHVlU2V0KCk7CisgICAgICAgIHJldHVybiBsb2NhdGlvbiA9PSAt
MSAmJiBiaW5kaW5nID09IC0xICYmIG51bVZpZXdzID09IC0xICYmIHl1diA9PSBmYWxzZSAmJgor
ICAgICAgICAgICAgICAgbWF0cml4UGFja2luZyA9PSBFbXBVbnNwZWNpZmllZCAmJiBibG9ja1N0
b3JhZ2UgPT0gRWJzVW5zcGVjaWZpZWQgJiYKKyAgICAgICAgICAgICAgICFsb2NhbFNpemUuaXNB
bnlWYWx1ZVNldCgpICYmIGltYWdlSW50ZXJuYWxGb3JtYXQgPT0gRWlpZlVuc3BlY2lmaWVkOwog
ICAgIH0KIAogICAgIGJvb2wgaXNDb21iaW5hdGlvblZhbGlkKCkgY29uc3QKICAgICB7CiAgICAg
ICAgIGJvb2wgd29ya1NpemVTcGVjaWZpZWQgPSBsb2NhbFNpemUuaXNBbnlWYWx1ZVNldCgpOwor
ICAgICAgICBib29sIG51bVZpZXdzU2V0ICAgICAgID0gKG51bVZpZXdzICE9IC0xKTsKICAgICAg
ICAgYm9vbCBvdGhlckxheW91dFF1YWxpZmllcnNTcGVjaWZpZWQgPQotICAgICAgICAgICAgKGxv
Y2F0aW9uICE9IC0xIHx8IG1hdHJpeFBhY2tpbmcgIT0gRW1wVW5zcGVjaWZpZWQgfHwgYmxvY2tT
dG9yYWdlICE9IEVic1Vuc3BlY2lmaWVkKTsKLQotICAgICAgICAvLyB3ZSBjYW4gaGF2ZSBlaXRo
ZXIgdGhlIHdvcmsgZ3JvdXAgc2l6ZSBzcGVjaWZpZWQsIG9yIHRoZSBvdGhlciBsYXlvdXQgcXVh
bGlmaWVycwotICAgICAgICByZXR1cm4gISh3b3JrU2l6ZVNwZWNpZmllZCAmJiBvdGhlckxheW91
dFF1YWxpZmllcnNTcGVjaWZpZWQpOworICAgICAgICAgICAgKGxvY2F0aW9uICE9IC0xIHx8IGJp
bmRpbmcgIT0gLTEgfHwgbWF0cml4UGFja2luZyAhPSBFbXBVbnNwZWNpZmllZCB8fAorICAgICAg
ICAgICAgIGJsb2NrU3RvcmFnZSAhPSBFYnNVbnNwZWNpZmllZCB8fCBpbWFnZUludGVybmFsRm9y
bWF0ICE9IEVpaWZVbnNwZWNpZmllZCk7CisKKyAgICAgICAgLy8gd2UgY2FuIGhhdmUgZWl0aGVy
IHRoZSB3b3JrIGdyb3VwIHNpemUgc3BlY2lmaWVkLCBvciBudW1iZXIgb2Ygdmlld3MsCisgICAg
ICAgIC8vIG9yIHl1diBsYXlvdXQgcXVhbGlmaWVyLCBvciB0aGUgb3RoZXIgbGF5b3V0IHF1YWxp
ZmllcnMuCisgICAgICAgIHJldHVybiAod29ya1NpemVTcGVjaWZpZWQgPyAxIDogMCkgKyAobnVt
Vmlld3NTZXQgPyAxIDogMCkgKyAoeXV2ID8gMSA6IDApICsKKyAgICAgICAgICAgICAgICAgICAo
b3RoZXJMYXlvdXRRdWFsaWZpZXJzU3BlY2lmaWVkID8gMSA6IDApIDw9CisgICAgICAgICAgICAg
ICAxOwogICAgIH0KIAogICAgIGJvb2wgaXNMb2NhbFNpemVFcXVhbChjb25zdCBzaDo6V29ya0dy
b3VwU2l6ZSAmbG9jYWxTaXplSW4pIGNvbnN0CkBAIC00MzAsNiArNjgyLDM3IEBAIHN0cnVjdCBU
TGF5b3V0UXVhbGlmaWVyCiAgICAgfQogfTsKIAorc3RydWN0IFRNZW1vcnlRdWFsaWZpZXIKK3sK
KyAgICAvLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNC45IE1lbW9yeSBBY2Nlc3MgUXVhbGlm
aWVycworICAgIC8vIEFuIGltYWdlIGNhbiBiZSBxdWFsaWZpZWQgYXMgYm90aCByZWFkb25seSBh
bmQgd3JpdGVvbmx5LiBJdCBzdGlsbCBjYW4gYmUgY2FuIGJlIHVzZWQgd2l0aAorICAgIC8vIGlt
YWdlU2l6ZSgpLgorICAgIGJvb2wgcmVhZG9ubHk7CisgICAgYm9vbCB3cml0ZW9ubHk7CisgICAg
Ym9vbCBjb2hlcmVudDsKKworICAgIC8vIHJlc3RyaWN0IGFuZCB2b2xhdGlsZSBhcmUgcmVzZXJ2
ZWQga2V5d29yZHMgaW4gQy9DKysKKyAgICBib29sIHJlc3RyaWN0UXVhbGlmaWVyOworICAgIGJv
b2wgdm9sYXRpbGVRdWFsaWZpZXI7CisgICAgc3RhdGljIFRNZW1vcnlRdWFsaWZpZXIgY3JlYXRl
KCkKKyAgICB7CisgICAgICAgIFRNZW1vcnlRdWFsaWZpZXIgbWVtb3J5UXVhbGlmaWVyOworCisg
ICAgICAgIG1lbW9yeVF1YWxpZmllci5yZWFkb25seSAgICAgICAgICA9IGZhbHNlOworICAgICAg
ICBtZW1vcnlRdWFsaWZpZXIud3JpdGVvbmx5ICAgICAgICAgPSBmYWxzZTsKKyAgICAgICAgbWVt
b3J5UXVhbGlmaWVyLmNvaGVyZW50ICAgICAgICAgID0gZmFsc2U7CisgICAgICAgIG1lbW9yeVF1
YWxpZmllci5yZXN0cmljdFF1YWxpZmllciA9IGZhbHNlOworICAgICAgICBtZW1vcnlRdWFsaWZp
ZXIudm9sYXRpbGVRdWFsaWZpZXIgPSBmYWxzZTsKKworICAgICAgICByZXR1cm4gbWVtb3J5UXVh
bGlmaWVyOworICAgIH0KKworICAgIGJvb2wgaXNFbXB0eSgpCisgICAgeworICAgICAgICByZXR1
cm4gIXJlYWRvbmx5ICYmICF3cml0ZW9ubHkgJiYgIWNvaGVyZW50ICYmICFyZXN0cmljdFF1YWxp
ZmllciAmJiAhdm9sYXRpbGVRdWFsaWZpZXI7CisgICAgfQorfTsKKwogaW5saW5lIGNvbnN0IGNo
YXIgKmdldFdvcmtHcm91cFNpemVTdHJpbmcoc2l6ZV90IGRpbWVuc2lvbikKIHsKICAgICBzd2l0
Y2ggKGRpbWVuc2lvbikKQEAgLTQ0OSw3ICs3MzIsNyBAQCBpbmxpbmUgY29uc3QgY2hhciAqZ2V0
V29ya0dyb3VwU2l6ZVN0cmluZyhzaXplX3QgZGltZW5zaW9uKQogLy8KIC8vIFRoaXMgaXMganVz
dCBmb3IgZGVidWcgcHJpbnQgb3V0LCBjYXJyaWVkIGFsb25nIHdpdGggdGhlIGRlZmluaXRpb25z
IGFib3ZlLgogLy8KLWlubGluZSBjb25zdCBjaGFyKiBnZXRRdWFsaWZpZXJTdHJpbmcoVFF1YWxp
ZmllciBxKQoraW5saW5lIGNvbnN0IGNoYXIgKmdldFF1YWxpZmllclN0cmluZyhUUXVhbGlmaWVy
IHEpCiB7CiAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgogICAgIHN3aXRjaChxKQpAQCAtNDgyLDYg
Kzc2NSw3IEBAIGlubGluZSBjb25zdCBjaGFyKiBnZXRRdWFsaWZpZXJTdHJpbmcoVFF1YWxpZmll
ciBxKQogICAgIGNhc2UgRXZxRnJhZ0RlcHRoOiAgICAgICAgICAgICAgcmV0dXJuICJGcmFnRGVw
dGgiOwogICAgIGNhc2UgRXZxU2Vjb25kYXJ5RnJhZ0NvbG9yRVhUOiAgcmV0dXJuICJTZWNvbmRh
cnlGcmFnQ29sb3JFWFQiOwogICAgIGNhc2UgRXZxU2Vjb25kYXJ5RnJhZ0RhdGFFWFQ6ICAgcmV0
dXJuICJTZWNvbmRhcnlGcmFnRGF0YUVYVCI7CisgICAgY2FzZSBFdnFWaWV3SURPVlI6ICAgICAg
ICAgICAgICByZXR1cm4gIlZpZXdJRE9WUiI7CiAgICAgY2FzZSBFdnFMYXN0RnJhZ0NvbG9yOiAg
ICAgICAgICByZXR1cm4gIkxhc3RGcmFnQ29sb3IiOwogICAgIGNhc2UgRXZxTGFzdEZyYWdEYXRh
OiAgICAgICAgICAgcmV0dXJuICJMYXN0RnJhZ0RhdGEiOwogICAgIGNhc2UgRXZxU21vb3RoT3V0
OiAgICAgICAgICAgICAgcmV0dXJuICJzbW9vdGggb3V0IjsKQEAgLTQ5Myw2ICs3NzcsNyBAQCBp
bmxpbmUgY29uc3QgY2hhciogZ2V0UXVhbGlmaWVyU3RyaW5nKFRRdWFsaWZpZXIgcSkKICAgICBj
YXNlIEV2cUNlbnRyb2lkOiAgICAgICAgICAgICAgIHJldHVybiAiY2VudHJvaWQiOwogICAgIGNh
c2UgRXZxRmxhdDogICAgICAgICAgICAgICAgICAgcmV0dXJuICJmbGF0IjsKICAgICBjYXNlIEV2
cVNtb290aDogICAgICAgICAgICAgICAgIHJldHVybiAic21vb3RoIjsKKyAgICBjYXNlIEV2cVNo
YXJlZDogICAgICAgICAgICAgICAgIHJldHVybiAic2hhcmVkIjsKICAgICBjYXNlIEV2cUNvbXB1
dGVJbjogICAgICAgICAgICAgIHJldHVybiAiaW4iOwogICAgIGNhc2UgRXZxTnVtV29ya0dyb3Vw
czogICAgICAgICAgcmV0dXJuICJOdW1Xb3JrR3JvdXBzIjsKICAgICBjYXNlIEV2cVdvcmtHcm91
cFNpemU6ICAgICAgICAgIHJldHVybiAiV29ya0dyb3VwU2l6ZSI7CkBAIC01MDAsMzIgKzc4NSwx
MTAgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGdldFF1YWxpZmllclN0cmluZyhUUXVhbGlmaWVyIHEp
CiAgICAgY2FzZSBFdnFMb2NhbEludm9jYXRpb25JRDogICAgICByZXR1cm4gIkxvY2FsSW52b2Nh
dGlvbklEIjsKICAgICBjYXNlIEV2cUdsb2JhbEludm9jYXRpb25JRDogICAgIHJldHVybiAiR2xv
YmFsSW52b2NhdGlvbklEIjsKICAgICBjYXNlIEV2cUxvY2FsSW52b2NhdGlvbkluZGV4OiAgIHJl
dHVybiAiTG9jYWxJbnZvY2F0aW9uSW5kZXgiOworICAgIGNhc2UgRXZxUmVhZE9ubHk6ICAgICAg
ICAgICAgICAgcmV0dXJuICJyZWFkb25seSI7CisgICAgY2FzZSBFdnFXcml0ZU9ubHk6ICAgICAg
ICAgICAgICByZXR1cm4gIndyaXRlb25seSI7CiAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsg
ICAgICAgICByZXR1cm4gInVua25vd24gcXVhbGlmaWVyIjsKICAgICB9CiAgICAgLy8gY2xhbmct
Zm9ybWF0IG9uCiB9CiAKLWlubGluZSBjb25zdCBjaGFyKiBnZXRNYXRyaXhQYWNraW5nU3RyaW5n
KFRMYXlvdXRNYXRyaXhQYWNraW5nIG1wcSkKK2lubGluZSBjb25zdCBjaGFyICpnZXRNYXRyaXhQ
YWNraW5nU3RyaW5nKFRMYXlvdXRNYXRyaXhQYWNraW5nIG1wcSkKIHsKICAgICBzd2l0Y2ggKG1w
cSkKICAgICB7Ci0gICAgY2FzZSBFbXBVbnNwZWNpZmllZDogICAgcmV0dXJuICJtcF91bnNwZWNp
ZmllZCI7Ci0gICAgY2FzZSBFbXBSb3dNYWpvcjogICAgICAgcmV0dXJuICJyb3dfbWFqb3IiOwot
ICAgIGNhc2UgRW1wQ29sdW1uTWFqb3I6ICAgIHJldHVybiAiY29sdW1uX21ham9yIjsKLSAgICBk
ZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyByZXR1cm4gInVua25vd24gbWF0cml4IHBhY2tpbmciOwor
ICAgICAgICBjYXNlIEVtcFVuc3BlY2lmaWVkOgorICAgICAgICAgICAgcmV0dXJuICJtcF91bnNw
ZWNpZmllZCI7CisgICAgICAgIGNhc2UgRW1wUm93TWFqb3I6CisgICAgICAgICAgICByZXR1cm4g
InJvd19tYWpvciI7CisgICAgICAgIGNhc2UgRW1wQ29sdW1uTWFqb3I6CisgICAgICAgICAgICBy
ZXR1cm4gImNvbHVtbl9tYWpvciI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuICJ1bmtub3duIG1hdHJpeCBwYWNraW5nIjsK
ICAgICB9CiB9CiAKLWlubGluZSBjb25zdCBjaGFyKiBnZXRCbG9ja1N0b3JhZ2VTdHJpbmcoVExh
eW91dEJsb2NrU3RvcmFnZSBic3EpCitpbmxpbmUgY29uc3QgY2hhciAqZ2V0QmxvY2tTdG9yYWdl
U3RyaW5nKFRMYXlvdXRCbG9ja1N0b3JhZ2UgYnNxKQogewogICAgIHN3aXRjaCAoYnNxKQogICAg
IHsKLSAgICBjYXNlIEVic1Vuc3BlY2lmaWVkOiAgICByZXR1cm4gImJzX3Vuc3BlY2lmaWVkIjsK
LSAgICBjYXNlIEVic1NoYXJlZDogICAgICAgICByZXR1cm4gInNoYXJlZCI7Ci0gICAgY2FzZSBF
YnNQYWNrZWQ6ICAgICAgICAgcmV0dXJuICJwYWNrZWQiOwotICAgIGNhc2UgRWJzU3RkMTQwOiAg
ICAgICAgIHJldHVybiAic3RkMTQwIjsKLSAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyByZXR1
cm4gInVua25vd24gYmxvY2sgc3RvcmFnZSI7CisgICAgICAgIGNhc2UgRWJzVW5zcGVjaWZpZWQ6
CisgICAgICAgICAgICByZXR1cm4gImJzX3Vuc3BlY2lmaWVkIjsKKyAgICAgICAgY2FzZSBFYnNT
aGFyZWQ6CisgICAgICAgICAgICByZXR1cm4gInNoYXJlZCI7CisgICAgICAgIGNhc2UgRWJzUGFj
a2VkOgorICAgICAgICAgICAgcmV0dXJuICJwYWNrZWQiOworICAgICAgICBjYXNlIEVic1N0ZDE0
MDoKKyAgICAgICAgICAgIHJldHVybiAic3RkMTQwIjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gInVua25vd24gYmxvY2sg
c3RvcmFnZSI7CiAgICAgfQogfQogCi0jZW5kaWYgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9CQVNF
VFlQRVNfSF8KK2lubGluZSBjb25zdCBjaGFyICpnZXRJbWFnZUludGVybmFsRm9ybWF0U3RyaW5n
KFRMYXlvdXRJbWFnZUludGVybmFsRm9ybWF0IGlpZnEpCit7CisgICAgc3dpdGNoIChpaWZxKQor
ICAgIHsKKyAgICAgICAgY2FzZSBFaWlmUkdCQTMyRjoKKyAgICAgICAgICAgIHJldHVybiAicmdi
YTMyZiI7CisgICAgICAgIGNhc2UgRWlpZlJHQkExNkY6CisgICAgICAgICAgICByZXR1cm4gInJn
YmExNmYiOworICAgICAgICBjYXNlIEVpaWZSMzJGOgorICAgICAgICAgICAgcmV0dXJuICJyMzJm
IjsKKyAgICAgICAgY2FzZSBFaWlmUkdCQTMyVUk6CisgICAgICAgICAgICByZXR1cm4gInJnYmEz
MnVpIjsKKyAgICAgICAgY2FzZSBFaWlmUkdCQTE2VUk6CisgICAgICAgICAgICByZXR1cm4gInJn
YmExNnVpIjsKKyAgICAgICAgY2FzZSBFaWlmUkdCQThVSToKKyAgICAgICAgICAgIHJldHVybiAi
cmdiYTh1aSI7CisgICAgICAgIGNhc2UgRWlpZlIzMlVJOgorICAgICAgICAgICAgcmV0dXJuICJy
MzJ1aSI7CisgICAgICAgIGNhc2UgRWlpZlJHQkEzMkk6CisgICAgICAgICAgICByZXR1cm4gInJn
YmEzMmkiOworICAgICAgICBjYXNlIEVpaWZSR0JBMTZJOgorICAgICAgICAgICAgcmV0dXJuICJy
Z2JhMTZpIjsKKyAgICAgICAgY2FzZSBFaWlmUkdCQThJOgorICAgICAgICAgICAgcmV0dXJuICJy
Z2JhOGkiOworICAgICAgICBjYXNlIEVpaWZSMzJJOgorICAgICAgICAgICAgcmV0dXJuICJyMzJp
IjsKKyAgICAgICAgY2FzZSBFaWlmUkdCQTg6CisgICAgICAgICAgICByZXR1cm4gInJnYmE4IjsK
KyAgICAgICAgY2FzZSBFaWlmUkdCQThfU05PUk06CisgICAgICAgICAgICByZXR1cm4gInJnYmE4
X3Nub3JtIjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgICAgICByZXR1cm4gInVua25vd24gaW50ZXJuYWwgaW1hZ2UgZm9ybWF0IjsKKyAgICB9
Cit9CisKK2lubGluZSBUWXV2Q3NjU3RhbmRhcmRFWFQgZ2V0WXV2Q3NjU3RhbmRhcmRFWFQoY29u
c3Qgc3RkOjpzdHJpbmcgJnN0cikKK3sKKyAgICBpZiAoc3RyID09ICJpdHVfNjAxIikKKyAgICAg
ICAgcmV0dXJuIEV5Y3NJdHU2MDE7CisgICAgZWxzZSBpZiAoc3RyID09ICJpdHVfNjAxX2Z1bGxf
cmFuZ2UiKQorICAgICAgICByZXR1cm4gRXljc0l0dTYwMUZ1bGxSYW5nZTsKKyAgICBlbHNlIGlm
IChzdHIgPT0gIml0dV83MDkiKQorICAgICAgICByZXR1cm4gRXljc0l0dTcwOTsKKyAgICByZXR1
cm4gRXljc1VuZGVmaW5lZDsKK30KKworaW5saW5lIGNvbnN0IGNoYXIgKmdldFl1dkNzY1N0YW5k
YXJkRVhUU3RyaW5nKFRZdXZDc2NTdGFuZGFyZEVYVCB5Y3NxKQoreworICAgIHN3aXRjaCAoeWNz
cSkKKyAgICB7CisgICAgICAgIGNhc2UgRXljc0l0dTYwMToKKyAgICAgICAgICAgIHJldHVybiAi
aXR1XzYwMSI7CisgICAgICAgIGNhc2UgRXljc0l0dTYwMUZ1bGxSYW5nZToKKyAgICAgICAgICAg
IHJldHVybiAiaXR1XzYwMV9mdWxsX3JhbmdlIjsKKyAgICAgICAgY2FzZSBFeWNzSXR1NzA5Ogor
ICAgICAgICAgICAgcmV0dXJuICJpdHVfNzA5IjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gInVua25vd24gY29sb3Igc3Bh
Y2UgY29udmVyc2lvbiBzdGFuZGFyZCI7CisgICAgfQorfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gK
KworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0JBU0VUWVBFU19IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnJlYWtW
YXJpYWJsZUFsaWFzaW5nSW5Jbm5lckxvb3BzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL0JyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29w
cy5jcHAKaW5kZXggYWFkYTBmYWM3ZGYuLjAxOGU3MmNkMWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CcmVha1ZhcmlhYmxlQWxp
YXNpbmdJbklubmVyTG9vcHMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0JyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJMb29wcy5jcHAK
QEAgLTI1LDYgKzI1LDkgQEAKIC8vIHRoZSBidWcgb25seSBzaG93cyB1cCB3aXRoIHN3aXp6bGVz
LCBhbmQgdGVybmFyeSBhc3NpZ25tZW50LCB3aG9sZSBhcnJheSBvciB3aG9sZSBzdHJ1Y3R1cmUK
IC8vIGFzc2lnbm1lbnQgZG9uJ3QgbmVlZCBhIHdvcmthcm91bmQuCiAKK25hbWVzcGFjZSBzaAor
eworCiBuYW1lc3BhY2UKIHsKIApAQCAtOTQsOSArOTcsNiBAQCBjbGFzcyBBbGlhc2luZ0JyZWFr
ZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNl
CiAKLW5hbWVzcGFjZSBzaAotewotCiB2b2lkIEJyZWFrVmFyaWFibGVBbGlhc2luZ0luSW5uZXJM
b29wcyhUSW50ZXJtTm9kZSAqcm9vdCkKIHsKICAgICBBbGlhc2luZ0JyZWFrZXIgYnJlYWtlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNwcAppbmRl
eCA0ODNmYjQ0Njc1Zi4uOGI3ZDlmOGRkNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9C
dWlsdEluRnVuY3Rpb25FbXVsYXRvci5jcHAKQEAgLTksMTIgKzksMTQgQEAKICNpbmNsdWRlICJj
b21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJh
bnNsYXRvci9DYWNoZS5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogY2xhc3MgQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3I6OkJ1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbk1hcmtlciA6IHB1YmxpYyBUSW50
ZXJtVHJhdmVyc2VyCiB7CiAgIHB1YmxpYzoKICAgICBCdWlsdEluRnVuY3Rpb25FbXVsYXRpb25N
YXJrZXIoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgJmVtdWxhdG9yKQotICAgICAgICA6IFRJbnRl
cm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwKLSAgICAgICAgICBtRW11bGF0b3IoZW11
bGF0b3IpCisgICAgICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLCBt
RW11bGF0b3IoZW11bGF0b3IpCiAgICAgewogICAgIH0KIApAQCAtMjIsNyArMjQsOCBAQCBjbGFz
cyBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6QnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uTWFya2Vy
IDogcHVibGljIFRJbnRlcm1UcgogICAgIHsKICAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0
KQogICAgICAgICB7Ci0gICAgICAgICAgICBib29sIG5lZWRUb0VtdWxhdGUgPSBtRW11bGF0b3Iu
U2V0RnVuY3Rpb25DYWxsZWQobm9kZS0+Z2V0T3AoKSwgbm9kZS0+Z2V0T3BlcmFuZCgpLT5nZXRU
eXBlKCkpOworICAgICAgICAgICAgYm9vbCBuZWVkVG9FbXVsYXRlID0KKyAgICAgICAgICAgICAg
ICBtRW11bGF0b3Iuc2V0RnVuY3Rpb25DYWxsZWQobm9kZS0+Z2V0T3AoKSwgbm9kZS0+Z2V0T3Bl
cmFuZCgpLT5nZXRUeXBlKCkpOwogICAgICAgICAgICAgaWYgKG5lZWRUb0VtdWxhdGUpCiAgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpOwogICAgICAgICB9CkBA
IC0zMywzOSArMzYsMTQgQEAgY2xhc3MgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkJ1aWx0SW5G
dW5jdGlvbkVtdWxhdGlvbk1hcmtlciA6IHB1YmxpYyBUSW50ZXJtVHIKICAgICB7CiAgICAgICAg
IGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKICAgICAgICAgewotICAgICAgICAgICAgLy8gSGVyZSB3
ZSBoYW5kbGUgYWxsIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgaW5zdGVhZCBvZiB0aGUgb25lcyB3
ZQorICAgICAgICAgICAgLy8gSGVyZSB3ZSBoYW5kbGUgYWxsIHRoZSBidWlsdC1pbiBmdW5jdGlv
bnMgbWFwcGVkIHRvIG9wcywgbm90IGp1c3QgdGhlIG9uZXMgdGhhdCBhcmUKICAgICAgICAgICAg
IC8vIGN1cnJlbnRseSBpZGVudGlmaWVkIGFzIHByb2JsZW1hdGljLgotICAgICAgICAgICAgc3dp
dGNoIChub2RlLT5nZXRPcCgpKQorICAgICAgICAgICAgaWYgKG5vZGUtPmlzQ29uc3RydWN0b3Io
KSB8fCBub2RlLT5pc0Z1bmN0aW9uQ2FsbCgpKQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGNhc2UgRU9wTGVzc1RoYW46Ci0gICAgICAgICAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhh
bjoKLSAgICAgICAgICAgICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6Ci0gICAgICAgICAgICAg
ICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFsOgotICAgICAgICAgICAgICAgIGNhc2UgRU9wVmVj
dG9yRXF1YWw6Ci0gICAgICAgICAgICAgICAgY2FzZSBFT3BWZWN0b3JOb3RFcXVhbDoKLSAgICAg
ICAgICAgICAgICBjYXNlIEVPcE1vZDoKLSAgICAgICAgICAgICAgICBjYXNlIEVPcFBvdzoKLSAg
ICAgICAgICAgICAgICBjYXNlIEVPcEF0YW46Ci0gICAgICAgICAgICAgICAgY2FzZSBFT3BNaW46
Ci0gICAgICAgICAgICAgICAgY2FzZSBFT3BNYXg6Ci0gICAgICAgICAgICAgICAgY2FzZSBFT3BD
bGFtcDoKLSAgICAgICAgICAgICAgICBjYXNlIEVPcE1peDoKLSAgICAgICAgICAgICAgICBjYXNl
IEVPcFN0ZXA6Ci0gICAgICAgICAgICAgICAgY2FzZSBFT3BTbW9vdGhTdGVwOgotICAgICAgICAg
ICAgICAgIGNhc2UgRU9wRGlzdGFuY2U6Ci0gICAgICAgICAgICAgICAgY2FzZSBFT3BEb3Q6Ci0g
ICAgICAgICAgICAgICAgY2FzZSBFT3BDcm9zczoKLSAgICAgICAgICAgICAgICBjYXNlIEVPcEZh
Y2VGb3J3YXJkOgotICAgICAgICAgICAgICAgIGNhc2UgRU9wUmVmbGVjdDoKLSAgICAgICAgICAg
ICAgICBjYXNlIEVPcFJlZnJhY3Q6Ci0gICAgICAgICAgICAgICAgY2FzZSBFT3BPdXRlclByb2R1
Y3Q6Ci0gICAgICAgICAgICAgICAgY2FzZSBFT3BNdWw6Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgY29uc3QgVEludGVybVNlcXVlbmNlICZzZXF1ZW5jZSA9ICoobm9kZS0+Z2V0U2Vx
dWVuY2UoKSk7Ci0gICAgICAgICAgICBib29sIG5lZWRUb0VtdWxhdGUgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGJvb2wgbmVlZFRvRW11bGF0ZSAgICAgICAgICAgICAgPSBmYWxzZTsKICAgICAgICAg
ICAgIC8vIFJpZ2h0IG5vdyB3ZSBvbmx5IGhhbmRsZSBidWlsdC1pbiBmdW5jdGlvbnMgd2l0aCB0
d28gb3IgdGhyZWUgcGFyYW1ldGVycy4KICAgICAgICAgICAgIGlmIChzZXF1ZW5jZS5zaXplKCkg
PT0gMikKICAgICAgICAgICAgIHsKQEAgLTczLDggKzUxLDggQEAgY2xhc3MgQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3I6OkJ1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbk1hcmtlciA6IHB1YmxpYyBUSW50
ZXJtVHIKICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnBhcmFtMiA9IHNlcXVlbmNlWzFd
LT5nZXRBc1R5cGVkKCk7CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJhbTEgfHwgIXBhcmFtMikK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgbmVlZFRv
RW11bGF0ZSA9IG1FbXVsYXRvci5TZXRGdW5jdGlvbkNhbGxlZCgKLSAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+Z2V0T3AoKSwgcGFyYW0xLT5nZXRUeXBlKCksIHBhcmFtMi0+Z2V0VHlwZSgpKTsK
KyAgICAgICAgICAgICAgICBuZWVkVG9FbXVsYXRlID0gbUVtdWxhdG9yLnNldEZ1bmN0aW9uQ2Fs
bGVkKG5vZGUtPmdldE9wKCksIHBhcmFtMS0+Z2V0VHlwZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW0yLT5nZXRUeXBl
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoc2VxdWVuY2Uuc2l6ZSgp
ID09IDMpCiAgICAgICAgICAgICB7CkBAIC04Myw4ICs2MSwyMCBAQCBjbGFzcyBCdWlsdEluRnVu
Y3Rpb25FbXVsYXRvcjo6QnVpbHRJbkZ1bmN0aW9uRW11bGF0aW9uTWFya2VyIDogcHVibGljIFRJ
bnRlcm1UcgogICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqcGFyYW0zID0gc2VxdWVuY2Vb
Ml0tPmdldEFzVHlwZWQoKTsKICAgICAgICAgICAgICAgICBpZiAoIXBhcmFtMSB8fCAhcGFyYW0y
IHx8ICFwYXJhbTMpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg
ICAgICAgIG5lZWRUb0VtdWxhdGUgPSBtRW11bGF0b3IuU2V0RnVuY3Rpb25DYWxsZWQoCi0gICAg
ICAgICAgICAgICAgICAgIG5vZGUtPmdldE9wKCksIHBhcmFtMS0+Z2V0VHlwZSgpLCBwYXJhbTIt
PmdldFR5cGUoKSwgcGFyYW0zLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgICAgIG5lZWRUb0Vt
dWxhdGUgPSBtRW11bGF0b3Iuc2V0RnVuY3Rpb25DYWxsZWQobm9kZS0+Z2V0T3AoKSwgcGFyYW0x
LT5nZXRUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbTItPmdldFR5cGUoKSwgcGFyYW0zLT5nZXRUeXBlKCkpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoc2VxdWVuY2Uuc2l6ZSgpID09IDQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpwYXJhbTEgPSBz
ZXF1ZW5jZVswXS0+Z2V0QXNUeXBlZCgpOworICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAq
cGFyYW0yID0gc2VxdWVuY2VbMV0tPmdldEFzVHlwZWQoKTsKKyAgICAgICAgICAgICAgICBUSW50
ZXJtVHlwZWQgKnBhcmFtMyA9IHNlcXVlbmNlWzJdLT5nZXRBc1R5cGVkKCk7CisgICAgICAgICAg
ICAgICAgVEludGVybVR5cGVkICpwYXJhbTQgPSBzZXF1ZW5jZVszXS0+Z2V0QXNUeXBlZCgpOwor
ICAgICAgICAgICAgICAgIGlmICghcGFyYW0xIHx8ICFwYXJhbTIgfHwgIXBhcmFtMyB8fCAhcGFy
YW00KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBu
ZWVkVG9FbXVsYXRlID0KKyAgICAgICAgICAgICAgICAgICAgbUVtdWxhdG9yLnNldEZ1bmN0aW9u
Q2FsbGVkKG5vZGUtPmdldE9wKCksIHBhcmFtMS0+Z2V0VHlwZSgpLCBwYXJhbTItPmdldFR5cGUo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFt
My0+Z2V0VHlwZSgpLCBwYXJhbTQtPmdldFR5cGUoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICB7CkBAIC0xMDIsMzIgKzkyLDg5IEBAIGNsYXNzIEJ1aWx0
SW5GdW5jdGlvbkVtdWxhdG9yOjpCdWlsdEluRnVuY3Rpb25FbXVsYXRpb25NYXJrZXIgOiBwdWJs
aWMgVEludGVybVRyCiB9OwogCiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6QnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3IoKQote30KK3sKK30KKworQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkZ1bmN0
aW9uSWQgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OmFkZEVtdWxhdGVkRnVuY3Rpb24oCisgICAg
VE9wZXJhdG9yIG9wLAorICAgIGNvbnN0IFRUeXBlICpwYXJhbSwKKyAgICBjb25zdCBjaGFyICpl
bXVsYXRlZEZ1bmN0aW9uRGVmaW5pdGlvbikKK3sKKyAgICBGdW5jdGlvbklkIGlkKG9wLCBwYXJh
bSk7CisgICAgbUVtdWxhdGVkRnVuY3Rpb25zW2lkXSA9IHN0ZDo6c3RyaW5nKGVtdWxhdGVkRnVu
Y3Rpb25EZWZpbml0aW9uKTsKKyAgICByZXR1cm4gaWQ7Cit9CiAKLXZvaWQgQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3I6OmFkZEVtdWxhdGVkRnVuY3Rpb24oVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlw
ZSAqcGFyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIgKmVtdWxhdGVkRnVuY3Rpb25EZWZpbml0aW9uKQorQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3I6OkZ1bmN0aW9uSWQgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OmFkZEVtdWxh
dGVkRnVuY3Rpb24oCisgICAgVE9wZXJhdG9yIG9wLAorICAgIGNvbnN0IFRUeXBlICpwYXJhbTEs
CisgICAgY29uc3QgVFR5cGUgKnBhcmFtMiwKKyAgICBjb25zdCBjaGFyICplbXVsYXRlZEZ1bmN0
aW9uRGVmaW5pdGlvbikKIHsKLSAgICBtRW11bGF0ZWRGdW5jdGlvbnNbRnVuY3Rpb25JZChvcCwg
cGFyYW0pXSA9IHN0ZDo6c3RyaW5nKGVtdWxhdGVkRnVuY3Rpb25EZWZpbml0aW9uKTsKKyAgICBG
dW5jdGlvbklkIGlkKG9wLCBwYXJhbTEsIHBhcmFtMik7CisgICAgbUVtdWxhdGVkRnVuY3Rpb25z
W2lkXSA9IHN0ZDo6c3RyaW5nKGVtdWxhdGVkRnVuY3Rpb25EZWZpbml0aW9uKTsKKyAgICByZXR1
cm4gaWQ7CiB9CiAKLXZvaWQgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OmFkZEVtdWxhdGVkRnVu
Y3Rpb24oVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSAqcGFyYW0xLCBjb25zdCBUVHlwZSAqcGFy
YW0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICplbXVsYXRlZEZ1bmN0aW9uRGVmaW5pdGlvbikKK0J1aWx0SW5GdW5jdGlvbkVt
dWxhdG9yOjpGdW5jdGlvbklkIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjphZGRFbXVsYXRlZEZ1
bmN0aW9uV2l0aERlcGVuZGVuY3koCisgICAgRnVuY3Rpb25JZCBkZXBlbmRlbmN5LAorICAgIFRP
cGVyYXRvciBvcCwKKyAgICBjb25zdCBUVHlwZSAqcGFyYW0xLAorICAgIGNvbnN0IFRUeXBlICpw
YXJhbTIsCisgICAgY29uc3QgY2hhciAqZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRpb24pCiB7Ci0g
ICAgbUVtdWxhdGVkRnVuY3Rpb25zW0Z1bmN0aW9uSWQob3AsIHBhcmFtMSwgcGFyYW0yKV0gPSBz
dGQ6OnN0cmluZyhlbXVsYXRlZEZ1bmN0aW9uRGVmaW5pdGlvbik7CisgICAgRnVuY3Rpb25JZCBp
ZChvcCwgcGFyYW0xLCBwYXJhbTIpOworICAgIG1FbXVsYXRlZEZ1bmN0aW9uc1tpZF0gICAgPSBz
dGQ6OnN0cmluZyhlbXVsYXRlZEZ1bmN0aW9uRGVmaW5pdGlvbik7CisgICAgbUZ1bmN0aW9uRGVw
ZW5kZW5jaWVzW2lkXSA9IGRlcGVuZGVuY3k7CisgICAgcmV0dXJuIGlkOwogfQogCi12b2lkIEJ1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjphZGRFbXVsYXRlZEZ1bmN0aW9uKFRPcGVyYXRvciBvcCwg
Y29uc3QgVFR5cGUgKnBhcmFtMSwgY29uc3QgVFR5cGUgKnBhcmFtMiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnBhcmFtMywg
Y29uc3QgY2hhciAqZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRpb24pCitCdWlsdEluRnVuY3Rpb25F
bXVsYXRvcjo6RnVuY3Rpb25JZCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6YWRkRW11bGF0ZWRG
dW5jdGlvbigKKyAgICBUT3BlcmF0b3Igb3AsCisgICAgY29uc3QgVFR5cGUgKnBhcmFtMSwKKyAg
ICBjb25zdCBUVHlwZSAqcGFyYW0yLAorICAgIGNvbnN0IFRUeXBlICpwYXJhbTMsCisgICAgY29u
c3QgY2hhciAqZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRpb24pCiB7Ci0gICAgbUVtdWxhdGVkRnVu
Y3Rpb25zW0Z1bmN0aW9uSWQob3AsIHBhcmFtMSwgcGFyYW0yLCBwYXJhbTMpXSA9IHN0ZDo6c3Ry
aW5nKGVtdWxhdGVkRnVuY3Rpb25EZWZpbml0aW9uKTsKKyAgICBGdW5jdGlvbklkIGlkKG9wLCBw
YXJhbTEsIHBhcmFtMiwgcGFyYW0zKTsKKyAgICBtRW11bGF0ZWRGdW5jdGlvbnNbaWRdID0gc3Rk
OjpzdHJpbmcoZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRpb24pOworICAgIHJldHVybiBpZDsKIH0K
IAotYm9vbCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6SXNPdXRwdXRFbXB0eSgpIGNvbnN0CitC
dWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6RnVuY3Rpb25JZCBCdWlsdEluRnVuY3Rpb25FbXVsYXRv
cjo6YWRkRW11bGF0ZWRGdW5jdGlvbigKKyAgICBUT3BlcmF0b3Igb3AsCisgICAgY29uc3QgVFR5
cGUgKnBhcmFtMSwKKyAgICBjb25zdCBUVHlwZSAqcGFyYW0yLAorICAgIGNvbnN0IFRUeXBlICpw
YXJhbTMsCisgICAgY29uc3QgVFR5cGUgKnBhcmFtNCwKKyAgICBjb25zdCBjaGFyICplbXVsYXRl
ZEZ1bmN0aW9uRGVmaW5pdGlvbikKK3sKKyAgICBGdW5jdGlvbklkIGlkKG9wLCBwYXJhbTEsIHBh
cmFtMiwgcGFyYW0zLCBwYXJhbTQpOworICAgIG1FbXVsYXRlZEZ1bmN0aW9uc1tpZF0gPSBzdGQ6
OnN0cmluZyhlbXVsYXRlZEZ1bmN0aW9uRGVmaW5pdGlvbik7CisgICAgcmV0dXJuIGlkOworfQor
CitCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6RnVuY3Rpb25JZCBCdWlsdEluRnVuY3Rpb25FbXVs
YXRvcjo6YWRkRW11bGF0ZWRGdW5jdGlvbldpdGhEZXBlbmRlbmN5KAorICAgIEZ1bmN0aW9uSWQg
ZGVwZW5kZW5jeSwKKyAgICBUT3BlcmF0b3Igb3AsCisgICAgY29uc3QgVFR5cGUgKnBhcmFtMSwK
KyAgICBjb25zdCBUVHlwZSAqcGFyYW0yLAorICAgIGNvbnN0IFRUeXBlICpwYXJhbTMsCisgICAg
Y29uc3QgVFR5cGUgKnBhcmFtNCwKKyAgICBjb25zdCBjaGFyICplbXVsYXRlZEZ1bmN0aW9uRGVm
aW5pdGlvbikKK3sKKyAgICBGdW5jdGlvbklkIGlkKG9wLCBwYXJhbTEsIHBhcmFtMiwgcGFyYW0z
LCBwYXJhbTQpOworICAgIG1FbXVsYXRlZEZ1bmN0aW9uc1tpZF0gICAgPSBzdGQ6OnN0cmluZyhl
bXVsYXRlZEZ1bmN0aW9uRGVmaW5pdGlvbik7CisgICAgbUZ1bmN0aW9uRGVwZW5kZW5jaWVzW2lk
XSA9IGRlcGVuZGVuY3k7CisgICAgcmV0dXJuIGlkOworfQorCitib29sIEJ1aWx0SW5GdW5jdGlv
bkVtdWxhdG9yOjppc091dHB1dEVtcHR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gKG1GdW5jdGlv
bnMuc2l6ZSgpID09IDApOwogfQogCi12b2lkIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpPdXRw
dXRFbXVsYXRlZEZ1bmN0aW9ucyhUSW5mb1NpbmtCYXNlICZvdXQpIGNvbnN0Cit2b2lkIEJ1aWx0
SW5GdW5jdGlvbkVtdWxhdG9yOjpvdXRwdXRFbXVsYXRlZEZ1bmN0aW9ucyhUSW5mb1NpbmtCYXNl
ICZvdXQpIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRnVuY3Rpb25zLnNp
emUoKTsgKytpKQogICAgIHsKQEAgLTEzNSwyMyArMTgyLDM2IEBAIHZvaWQgQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3I6Ok91dHB1dEVtdWxhdGVkRnVuY3Rpb25zKFRJbmZvU2lua0Jhc2UgJm91dCkg
Y29uc3QKICAgICB9CiB9CiAKLWJvb2wgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OlNldEZ1bmN0
aW9uQ2FsbGVkKFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUgJnBhcmFtKQorYm9vbCBCdWlsdElu
RnVuY3Rpb25FbXVsYXRvcjo6c2V0RnVuY3Rpb25DYWxsZWQoVE9wZXJhdG9yIG9wLCBjb25zdCBU
VHlwZSAmcGFyYW0pCiB7Ci0gICAgcmV0dXJuIFNldEZ1bmN0aW9uQ2FsbGVkKEZ1bmN0aW9uSWQo
b3AsICZwYXJhbSkpOworICAgIHJldHVybiBzZXRGdW5jdGlvbkNhbGxlZChGdW5jdGlvbklkKG9w
LCAmcGFyYW0pKTsKIH0KIAotYm9vbCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6U2V0RnVuY3Rp
b25DYWxsZWQoVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSAmcGFyYW0xLCBjb25zdCBUVHlwZSAm
cGFyYW0yKQorYm9vbCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6c2V0RnVuY3Rpb25DYWxsZWQo
VE9wZXJhdG9yIG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFR5cGUgJnBhcmFtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZwYXJhbTIpCiB7Ci0gICAgcmV0dXJuIFNl
dEZ1bmN0aW9uQ2FsbGVkKEZ1bmN0aW9uSWQob3AsICZwYXJhbTEsICZwYXJhbTIpKTsKKyAgICBy
ZXR1cm4gc2V0RnVuY3Rpb25DYWxsZWQoRnVuY3Rpb25JZChvcCwgJnBhcmFtMSwgJnBhcmFtMikp
OwogfQogCi1ib29sIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpTZXRGdW5jdGlvbkNhbGxlZChU
T3BlcmF0b3Igb3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUVHlwZSAmcGFyYW0xLCBjb25zdCBUVHlwZSAmcGFyYW0yLCBjb25zdCBUVHlw
ZSAmcGFyYW0zKQorYm9vbCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6c2V0RnVuY3Rpb25DYWxs
ZWQoVE9wZXJhdG9yIG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFR5cGUgJnBhcmFtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZwYXJhbTIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmcGFyYW0zKQog
ewotICAgIHJldHVybiBTZXRGdW5jdGlvbkNhbGxlZChGdW5jdGlvbklkKG9wLCAmcGFyYW0xLCAm
cGFyYW0yLCAmcGFyYW0zKSk7CisgICAgcmV0dXJuIHNldEZ1bmN0aW9uQ2FsbGVkKEZ1bmN0aW9u
SWQob3AsICZwYXJhbTEsICZwYXJhbTIsICZwYXJhbTMpKTsKIH0KIAotYm9vbCBCdWlsdEluRnVu
Y3Rpb25FbXVsYXRvcjo6U2V0RnVuY3Rpb25DYWxsZWQoY29uc3QgRnVuY3Rpb25JZCAmZnVuY3Rp
b25JZCkKK2Jvb2wgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OnNldEZ1bmN0aW9uQ2FsbGVkKFRP
cGVyYXRvciBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRUeXBlICZwYXJhbTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmcGFyYW0yLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJnBhcmFtMywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZw
YXJhbTQpCit7CisgICAgcmV0dXJuIHNldEZ1bmN0aW9uQ2FsbGVkKEZ1bmN0aW9uSWQob3AsICZw
YXJhbTEsICZwYXJhbTIsICZwYXJhbTMsICZwYXJhbTQpKTsKK30KKworYm9vbCBCdWlsdEluRnVu
Y3Rpb25FbXVsYXRvcjo6c2V0RnVuY3Rpb25DYWxsZWQoY29uc3QgRnVuY3Rpb25JZCAmZnVuY3Rp
b25JZCkKIHsKICAgICBpZiAobUVtdWxhdGVkRnVuY3Rpb25zLmZpbmQoZnVuY3Rpb25JZCkgIT0g
bUVtdWxhdGVkRnVuY3Rpb25zLmVuZCgpKQogICAgIHsKQEAgLTE2MCw2ICsyMjAsMTIgQEAgYm9v
bCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6U2V0RnVuY3Rpb25DYWxsZWQoY29uc3QgRnVuY3Rp
b25JZCAmZnVuY3Rpb25JZCkKICAgICAgICAgICAgIGlmIChtRnVuY3Rpb25zW2ldID09IGZ1bmN0
aW9uSWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KKyAgICAgICAg
Ly8gSWYgdGhlIGZ1bmN0aW9uIGRlcGVuZHMgb24gYW5vdGhlciwgbWFyayB0aGUgZGVwZW5kZW5j
eSBhcyBjYWxsZWQuCisgICAgICAgIGF1dG8gZGVwZW5kZW5jeSA9IG1GdW5jdGlvbkRlcGVuZGVu
Y2llcy5maW5kKGZ1bmN0aW9uSWQpOworICAgICAgICBpZiAoZGVwZW5kZW5jeSAhPSBtRnVuY3Rp
b25EZXBlbmRlbmNpZXMuZW5kKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNldEZ1bmN0aW9u
Q2FsbGVkKCgqZGVwZW5kZW5jeSkuc2Vjb25kKTsKKyAgICAgICAgfQogICAgICAgICAvLyBDb3B5
IHRoZSBmdW5jdGlvbklkIGlmIGl0IG5lZWRzIHRvIGJlIHN0b3JlZCwgdG8gbWFrZSBzdXJlIHRo
YXQgdGhlIFRUeXBlIHBvaW50ZXJzIGluc2lkZQogICAgICAgICAvLyByZW1haW4gdmFsaWQgYW5k
IGNvbnN0YW50LgogICAgICAgICBtRnVuY3Rpb25zLnB1c2hfYmFjayhmdW5jdGlvbklkLmdldENv
cHkoKSk7CkBAIC0xNjgsNyArMjM0LDcgQEAgYm9vbCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6
U2V0RnVuY3Rpb25DYWxsZWQoY29uc3QgRnVuY3Rpb25JZCAmZnVuY3Rpb25JZCkKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6Ok1hcmtCdWlsdElu
RnVuY3Rpb25zRm9yRW11bGF0aW9uKFRJbnRlcm1Ob2RlICpyb290KQordm9pZCBCdWlsdEluRnVu
Y3Rpb25FbXVsYXRvcjo6bWFya0J1aWx0SW5GdW5jdGlvbnNGb3JFbXVsYXRpb24oVEludGVybU5v
ZGUgKnJvb3QpCiB7CiAgICAgQVNTRVJUKHJvb3QpOwogCkBAIC0xNzksNTMgKzI0NSw3NCBAQCB2
b2lkIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpNYXJrQnVpbHRJbkZ1bmN0aW9uc0ZvckVtdWxh
dGlvbihUSW50ZXJtTm9kZSAqcm9vdAogICAgIHJvb3QtPnRyYXZlcnNlKCZtYXJrZXIpOwogfQog
Ci12b2lkIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpDbGVhbnVwKCkKK3ZvaWQgQnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3I6OmNsZWFudXAoKQogewogICAgIG1GdW5jdGlvbnMuY2xlYXIoKTsKKyAg
ICBtRnVuY3Rpb25EZXBlbmRlbmNpZXMuY2xlYXIoKTsKIH0KIAotLy9zdGF0aWMKLVRTdHJpbmcg
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkdldEVtdWxhdGVkRnVuY3Rpb25OYW1lKAotICAgIGNv
bnN0IFRTdHJpbmcgJm5hbWUpCisvLyBzdGF0aWMKK3ZvaWQgQnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3I6OldyaXRlRW11bGF0ZWRGdW5jdGlvbk5hbWUoVEluZm9TaW5rQmFzZSAmb3V0LCBjb25zdCBj
aGFyICpuYW1lKQoreworICAgIEFTU0VSVChuYW1lW3N0cmxlbihuYW1lKSAtIDFdICE9ICcoJyk7
CisgICAgb3V0IDw8ICJ3ZWJnbF8iIDw8IG5hbWUgPDwgIl9lbXUiOworfQorCitCdWlsdEluRnVu
Y3Rpb25FbXVsYXRvcjo6RnVuY3Rpb25JZDo6RnVuY3Rpb25JZCgpCisgICAgOiBtT3AoRU9wTnVs
bCksCisgICAgICBtUGFyYW0xKFRDYWNoZTo6Z2V0VHlwZShFYnRWb2lkKSksCisgICAgICBtUGFy
YW0yKFRDYWNoZTo6Z2V0VHlwZShFYnRWb2lkKSksCisgICAgICBtUGFyYW0zKFRDYWNoZTo6Z2V0
VHlwZShFYnRWb2lkKSksCisgICAgICBtUGFyYW00KFRDYWNoZTo6Z2V0VHlwZShFYnRWb2lkKSkK
IHsKLSAgICBBU1NFUlQobmFtZVtuYW1lLmxlbmd0aCgpIC0gMV0gPT0gJygnKTsKLSAgICByZXR1
cm4gIndlYmdsXyIgKyBuYW1lLnN1YnN0cigwLCBuYW1lLmxlbmd0aCgpIC0gMSkgKyAiX2VtdSgi
OwogfQogCiBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6RnVuY3Rpb25JZDo6RnVuY3Rpb25JZChU
T3BlcmF0b3Igb3AsIGNvbnN0IFRUeXBlICpwYXJhbSkKICAgICA6IG1PcChvcCksCiAgICAgICBt
UGFyYW0xKHBhcmFtKSwKICAgICAgIG1QYXJhbTIoVENhY2hlOjpnZXRUeXBlKEVidFZvaWQpKSwK
LSAgICAgIG1QYXJhbTMoVENhY2hlOjpnZXRUeXBlKEVidFZvaWQpKQorICAgICAgbVBhcmFtMyhU
Q2FjaGU6OmdldFR5cGUoRWJ0Vm9pZCkpLAorICAgICAgbVBhcmFtNChUQ2FjaGU6OmdldFR5cGUo
RWJ0Vm9pZCkpCiB7CiB9CiAKLUJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpGdW5jdGlvbklkOjpG
dW5jdGlvbklkKFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUgKnBhcmFtMSwgY29uc3QgVFR5cGUg
KnBhcmFtMikKK0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpGdW5jdGlvbklkOjpGdW5jdGlvbklk
KFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRUeXBlICpwYXJhbTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcGFyYW0yKQogICAgIDogbU9wKG9wKSwK
ICAgICAgIG1QYXJhbTEocGFyYW0xKSwKICAgICAgIG1QYXJhbTIocGFyYW0yKSwKLSAgICAgIG1Q
YXJhbTMoVENhY2hlOjpnZXRUeXBlKEVidFZvaWQpKQorICAgICAgbVBhcmFtMyhUQ2FjaGU6Omdl
dFR5cGUoRWJ0Vm9pZCkpLAorICAgICAgbVBhcmFtNChUQ2FjaGU6OmdldFR5cGUoRWJ0Vm9pZCkp
CiB7CiB9CiAKIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpGdW5jdGlvbklkOjpGdW5jdGlvbklk
KFRPcGVyYXRvciBvcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRUeXBlICpwYXJhbTEsIGNvbnN0IFRUeXBlICpwYXJhbTIsIGNvbnN0IFRU
eXBlICpwYXJhbTMpCi0gICAgOiBtT3Aob3ApLAotICAgICAgbVBhcmFtMShwYXJhbTEpLAotICAg
ICAgbVBhcmFtMihwYXJhbTIpLAotICAgICAgbVBhcmFtMyhwYXJhbTMpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcGFyYW0xLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5
cGUgKnBhcmFtMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRUeXBlICpwYXJhbTMpCisgICAgOiBtT3Aob3ApLCBtUGFyYW0xKHBhcmFtMSks
IG1QYXJhbTIocGFyYW0yKSwgbVBhcmFtMyhwYXJhbTMpLCBtUGFyYW00KFRDYWNoZTo6Z2V0VHlw
ZShFYnRWb2lkKSkKIHsKIH0KIAotYm9vbCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6RnVuY3Rp
b25JZDo6b3BlcmF0b3I9PShjb25zdCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6RnVuY3Rpb25J
ZCAmb3RoZXIpIGNvbnN0CitCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6RnVuY3Rpb25JZDo6RnVu
Y3Rpb25JZChUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcGFyYW0xLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnBhcmFtMiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwYXJh
bTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUVHlwZSAqcGFyYW00KQorICAgIDogbU9wKG9wKSwgbVBhcmFtMShwYXJhbTEpLCBtUGFyYW0y
KHBhcmFtMiksIG1QYXJhbTMocGFyYW0zKSwgbVBhcmFtNChwYXJhbTQpCiB7Ci0gICAgcmV0dXJu
IChtT3AgPT0gb3RoZXIubU9wICYmCi0gICAgICAgICAgICAqbVBhcmFtMSA9PSAqb3RoZXIubVBh
cmFtMSAmJgotICAgICAgICAgICAgKm1QYXJhbTIgPT0gKm90aGVyLm1QYXJhbTIgJiYKLSAgICAg
ICAgICAgICptUGFyYW0zID09ICpvdGhlci5tUGFyYW0zKTsKIH0KIAotYm9vbCBCdWlsdEluRnVu
Y3Rpb25FbXVsYXRvcjo6RnVuY3Rpb25JZDo6b3BlcmF0b3I8KGNvbnN0IEJ1aWx0SW5GdW5jdGlv
bkVtdWxhdG9yOjpGdW5jdGlvbklkICZvdGhlcikgY29uc3QKK2Jvb2wgQnVpbHRJbkZ1bmN0aW9u
RW11bGF0b3I6OkZ1bmN0aW9uSWQ6Om9wZXJhdG9yPT0oCisgICAgY29uc3QgQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3I6OkZ1bmN0aW9uSWQgJm90aGVyKSBjb25zdAoreworICAgIHJldHVybiAobU9w
ID09IG90aGVyLm1PcCAmJiAqbVBhcmFtMSA9PSAqb3RoZXIubVBhcmFtMSAmJiAqbVBhcmFtMiA9
PSAqb3RoZXIubVBhcmFtMiAmJgorICAgICAgICAgICAgKm1QYXJhbTMgPT0gKm90aGVyLm1QYXJh
bTMgJiYgKm1QYXJhbTQgPT0gKm90aGVyLm1QYXJhbTQpOworfQorCitib29sIEJ1aWx0SW5GdW5j
dGlvbkVtdWxhdG9yOjpGdW5jdGlvbklkOjpvcGVyYXRvcjwoCisgICAgY29uc3QgQnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3I6OkZ1bmN0aW9uSWQgJm90aGVyKSBjb25zdAogewogICAgIGlmIChtT3Ag
IT0gb3RoZXIubU9wKQogICAgICAgICByZXR1cm4gbU9wIDwgb3RoZXIubU9wOwpAQCAtMjM0LDEx
ICszMjEsMTYgQEAgYm9vbCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcjo6RnVuY3Rpb25JZDo6b3Bl
cmF0b3I8KGNvbnN0IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG8KICAgICBpZiAoKm1QYXJhbTIgIT0g
Km90aGVyLm1QYXJhbTIpCiAgICAgICAgIHJldHVybiAqbVBhcmFtMiA8ICpvdGhlci5tUGFyYW0y
OwogICAgIGlmICgqbVBhcmFtMyAhPSAqb3RoZXIubVBhcmFtMykKLSAgICAgICByZXR1cm4gKm1Q
YXJhbTMgPCAqb3RoZXIubVBhcmFtMzsKLSAgICByZXR1cm4gZmFsc2U7IC8vIGFsbCBmaWVsZHMg
YXJlIGVxdWFsCisgICAgICAgIHJldHVybiAqbVBhcmFtMyA8ICpvdGhlci5tUGFyYW0zOworICAg
IGlmICgqbVBhcmFtNCAhPSAqb3RoZXIubVBhcmFtNCkKKyAgICAgICAgcmV0dXJuICptUGFyYW00
IDwgKm90aGVyLm1QYXJhbTQ7CisgICAgcmV0dXJuIGZhbHNlOyAgLy8gYWxsIGZpZWxkcyBhcmUg
ZXF1YWwKIH0KIAogQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkZ1bmN0aW9uSWQgQnVpbHRJbkZ1
bmN0aW9uRW11bGF0b3I6OkZ1bmN0aW9uSWQ6OmdldENvcHkoKSBjb25zdAogewotICAgIHJldHVy
biBGdW5jdGlvbklkKG1PcCwgbmV3IFRUeXBlKCptUGFyYW0xKSwgbmV3IFRUeXBlKCptUGFyYW0y
KSwgbmV3IFRUeXBlKCptUGFyYW0zKSk7CisgICAgcmV0dXJuIEZ1bmN0aW9uSWQobU9wLCBuZXcg
VFR5cGUoKm1QYXJhbTEpLCBuZXcgVFR5cGUoKm1QYXJhbTIpLCBuZXcgVFR5cGUoKm1QYXJhbTMp
LAorICAgICAgICAgICAgICAgICAgICAgIG5ldyBUVHlwZSgqbVBhcmFtNCkpOwogfQorCit9ICAv
LyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVs
YXRvci5oCmluZGV4IDY5NzZlZGZkNTcwLi5jYmIxYjI1ZWFkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9u
RW11bGF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oCkBAIC0xMCw3NiArMTAsMTI4IEBACiAj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbmZvU2luay5oIgogI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogLy8KLS8v
IFRoaXMgY2xhc3MgZGVjaWRlcyB3aGljaCBidWlsdC1pbiBmdW5jdGlvbnMgbmVlZCB0byBiZSBy
ZXBsYWNlZCB3aXRoIHRoZQotLy8gZW11bGF0ZWQgb25lcy4KLS8vIEl0IGNhbiBiZSB1c2VkIHRv
IHdvcmsgYXJvdW5kIGRyaXZlciBidWdzIG9yIGltcGxlbWVudCBmdW5jdGlvbnMgdGhhdCBhcmUK
LS8vIG5vdCBuYXRpdmVseSBpbXBsZW1lbnRlZCBvbiBhIHNwZWNpZmljIHBsYXRmb3JtLgorLy8g
VGhpcyBjbGFzcyBkZWNpZGVzIHdoaWNoIGJ1aWx0LWluIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIHJl
cGxhY2VkIHdpdGggdGhlIGVtdWxhdGVkIG9uZXMuIEl0IGNhbiBiZQorLy8gdXNlZCB0byB3b3Jr
IGFyb3VuZCBkcml2ZXIgYnVncyBvciBpbXBsZW1lbnQgZnVuY3Rpb25zIHRoYXQgYXJlIG5vdCBu
YXRpdmVseSBpbXBsZW1lbnRlZCBvbiBhCisvLyBzcGVjaWZpYyBwbGF0Zm9ybS4KIC8vCiBjbGFz
cyBCdWlsdEluRnVuY3Rpb25FbXVsYXRvcgogewogICBwdWJsaWM6CiAgICAgQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3IoKTsKIAotICAgIHZvaWQgTWFya0J1aWx0SW5GdW5jdGlvbnNGb3JFbXVsYXRp
b24oVEludGVybU5vZGUgKnJvb3QpOworICAgIHZvaWQgbWFya0J1aWx0SW5GdW5jdGlvbnNGb3JF
bXVsYXRpb24oVEludGVybU5vZGUgKnJvb3QpOwogCi0gICAgdm9pZCBDbGVhbnVwKCk7CisgICAg
dm9pZCBjbGVhbnVwKCk7CiAKLSAgICAvLyAibmFtZSgiIGJlY29tZXMgIndlYmdsX25hbWVfZW11
KCIuCi0gICAgc3RhdGljIFRTdHJpbmcgR2V0RW11bGF0ZWRGdW5jdGlvbk5hbWUoY29uc3QgVFN0
cmluZyAmbmFtZSk7CisgICAgLy8gIm5hbWUiIGdldHMgd3JpdHRlbiBhcyAid2ViZ2xfbmFtZV9l
bXUiLgorICAgIHN0YXRpYyB2b2lkIFdyaXRlRW11bGF0ZWRGdW5jdGlvbk5hbWUoVEluZm9TaW5r
QmFzZSAmb3V0LCBjb25zdCBjaGFyICpuYW1lKTsKIAotICAgIGJvb2wgSXNPdXRwdXRFbXB0eSgp
IGNvbnN0OworICAgIGJvb2wgaXNPdXRwdXRFbXB0eSgpIGNvbnN0OwogCi0gICAgLy8gT3V0cHV0
IGZ1bmN0aW9uIGVtdWxhdGlvbiBkZWZpbml0aW9uLiBUaGlzIHNob3VsZCBiZSBiZWZvcmUgYW55
IG90aGVyCi0gICAgLy8gc2hhZGVyIHNvdXJjZS4KLSAgICB2b2lkIE91dHB1dEVtdWxhdGVkRnVu
Y3Rpb25zKFRJbmZvU2lua0Jhc2UgJm91dCkgY29uc3Q7CisgICAgLy8gT3V0cHV0IGZ1bmN0aW9u
IGVtdWxhdGlvbiBkZWZpbml0aW9uLiBUaGlzIHNob3VsZCBiZSBiZWZvcmUgYW55IG90aGVyIHNo
YWRlciBzb3VyY2UuCisgICAgdm9pZCBvdXRwdXRFbXVsYXRlZEZ1bmN0aW9ucyhUSW5mb1NpbmtC
YXNlICZvdXQpIGNvbnN0OwogCi0gICAgLy8gQWRkIGZ1bmN0aW9ucyB0aGF0IG5lZWQgdG8gYmUg
ZW11bGF0ZWQuCi0gICAgdm9pZCBhZGRFbXVsYXRlZEZ1bmN0aW9uKFRPcGVyYXRvciBvcCwgY29u
c3QgVFR5cGUgKnBhcmFtLCBjb25zdCBjaGFyICplbXVsYXRlZEZ1bmN0aW9uRGVmaW5pdGlvbik7
Ci0gICAgdm9pZCBhZGRFbXVsYXRlZEZ1bmN0aW9uKFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUg
KnBhcmFtMSwgY29uc3QgVFR5cGUgKnBhcmFtMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAqZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRpb24pOwotICAgIHZvaWQgYWRk
RW11bGF0ZWRGdW5jdGlvbihUT3BlcmF0b3Igb3AsIGNvbnN0IFRUeXBlICpwYXJhbTEsIGNvbnN0
IFRUeXBlICpwYXJhbTIsIGNvbnN0IFRUeXBlICpwYXJhbTMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKmVtdWxhdGVkRnVuY3Rpb25EZWZpbml0aW9uKTsKLQotICBw
cml2YXRlOgotICAgIGNsYXNzIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdGlvbk1hcmtlcjsKLQotICAg
IC8vIFJlY29yZHMgdGhhdCBhIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgc2hhZGVyIGFuZCBt
aWdodCBuZWVkIHRvIGJlCi0gICAgLy8gZW11bGF0ZWQuIElmIHRoZSBmdW5jdGlvbiBpcyBub3Qg
aW4gbUVtdWxhdGVkRnVuY3Rpb25zLCB0aGlzIGJlY29tZXMgYQotICAgIC8vIG5vLW9wLiBSZXR1
cm5zIHRydWUgaWYgdGhlIGZ1bmN0aW9uIGNhbGwgbmVlZHMgdG8gYmUgcmVwbGFjZWQgd2l0aCBh
bgotICAgIC8vIGVtdWxhdGVkIG9uZS4KLSAgICBib29sIFNldEZ1bmN0aW9uQ2FsbGVkKFRPcGVy
YXRvciBvcCwgY29uc3QgVFR5cGUgJnBhcmFtKTsKLSAgICBib29sIFNldEZ1bmN0aW9uQ2FsbGVk
KFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUgJnBhcmFtMSwgY29uc3QgVFR5cGUgJnBhcmFtMik7
Ci0gICAgYm9vbCBTZXRGdW5jdGlvbkNhbGxlZChUT3BlcmF0b3Igb3AsIGNvbnN0IFRUeXBlICZw
YXJhbTEsIGNvbnN0IFRUeXBlICZwYXJhbTIsIGNvbnN0IFRUeXBlICZwYXJhbTMpOwotCi0gICAg
Y2xhc3MgRnVuY3Rpb25JZCB7CisgICAgY2xhc3MgRnVuY3Rpb25JZAorICAgIHsKICAgICAgIHB1
YmxpYzoKKyAgICAgICAgRnVuY3Rpb25JZCgpOwogICAgICAgICBGdW5jdGlvbklkKFRPcGVyYXRv
ciBvcCwgY29uc3QgVFR5cGUgKnBhcmFtKTsKICAgICAgICAgRnVuY3Rpb25JZChUT3BlcmF0b3Ig
b3AsIGNvbnN0IFRUeXBlICpwYXJhbTEsIGNvbnN0IFRUeXBlICpwYXJhbTIpOwogICAgICAgICBG
dW5jdGlvbklkKFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUgKnBhcmFtMSwgY29uc3QgVFR5cGUg
KnBhcmFtMiwgY29uc3QgVFR5cGUgKnBhcmFtMyk7CisgICAgICAgIEZ1bmN0aW9uSWQoVE9wZXJh
dG9yIG9wLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwYXJhbTEsCisgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFR5cGUgKnBhcmFtMiwKKyAgICAgICAgICAgICAgICAgICBjb25z
dCBUVHlwZSAqcGFyYW0zLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwYXJhbTQp
OworCisgICAgICAgIEZ1bmN0aW9uSWQoY29uc3QgRnVuY3Rpb25JZCAmKSA9IGRlZmF1bHQ7Cisg
ICAgICAgIEZ1bmN0aW9uSWQgJm9wZXJhdG9yPShjb25zdCBGdW5jdGlvbklkICYpID0gZGVmYXVs
dDsKIAogICAgICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRnVuY3Rpb25JZCAmb3RoZXIpIGNv
bnN0OwogICAgICAgICBib29sIG9wZXJhdG9yPChjb25zdCBGdW5jdGlvbklkICZvdGhlcikgY29u
c3Q7CiAKICAgICAgICAgRnVuY3Rpb25JZCBnZXRDb3B5KCkgY29uc3Q7CisKICAgICAgIHByaXZh
dGU6CiAgICAgICAgIFRPcGVyYXRvciBtT3A7CiAKLSAgICAgICAgLy8gVGhlIG1lbW9yeSB0aGF0
IHRoZXNlIFRUeXBlIG9iamVjdHMgdXNlIGlzIGZyZWVkIGJ5IFBvb2xBbGxvY2F0b3IuIFRoZSBC
dWlsdEluRnVuY3Rpb25FbXVsYXRvcidzIGxpZmV0aW1lCi0gICAgICAgIC8vIGNhbiBleHRlbmQg
dW50aWwgYWZ0ZXIgdGhlIG1lbW9yeSBwb29sIGlzIGZyZWVkLCBidXQgdGhhdCdzIG5vdCBhbiBp
c3N1ZSBzaW5jZSB0aGlzIGNsYXNzIG5ldmVyIGRlc3RydWN0cwotICAgICAgICAvLyB0aGVzZSBv
YmplY3RzLgorICAgICAgICAvLyBUaGUgbWVtb3J5IHRoYXQgdGhlc2UgVFR5cGUgb2JqZWN0cyB1
c2UgaXMgZnJlZWQgYnkgUG9vbEFsbG9jYXRvci4gVGhlCisgICAgICAgIC8vIEJ1aWx0SW5GdW5j
dGlvbkVtdWxhdG9yJ3MgbGlmZXRpbWUgY2FuIGV4dGVuZCB1bnRpbCBhZnRlciB0aGUgbWVtb3J5
IHBvb2wgaXMgZnJlZWQsIGJ1dAorICAgICAgICAvLyB0aGF0J3Mgbm90IGFuIGlzc3VlIHNpbmNl
IHRoaXMgY2xhc3MgbmV2ZXIgZGVzdHJ1Y3RzIHRoZXNlIG9iamVjdHMuCiAgICAgICAgIGNvbnN0
IFRUeXBlICptUGFyYW0xOwogICAgICAgICBjb25zdCBUVHlwZSAqbVBhcmFtMjsKICAgICAgICAg
Y29uc3QgVFR5cGUgKm1QYXJhbTM7CisgICAgICAgIGNvbnN0IFRUeXBlICptUGFyYW00OwogICAg
IH07CiAKLSAgICBib29sIFNldEZ1bmN0aW9uQ2FsbGVkKGNvbnN0IEZ1bmN0aW9uSWQgJmZ1bmN0
aW9uSWQpOworICAgIC8vIEFkZCBmdW5jdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGVtdWxhdGVkLgor
ICAgIEZ1bmN0aW9uSWQgYWRkRW11bGF0ZWRGdW5jdGlvbihUT3BlcmF0b3Igb3AsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwYXJhbSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW11bGF0ZWRGdW5jdGlvbkRl
ZmluaXRpb24pOworICAgIEZ1bmN0aW9uSWQgYWRkRW11bGF0ZWRGdW5jdGlvbihUT3BlcmF0b3Ig
b3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwYXJh
bTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwYXJh
bTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVtdWxh
dGVkRnVuY3Rpb25EZWZpbml0aW9uKTsKKyAgICBGdW5jdGlvbklkIGFkZEVtdWxhdGVkRnVuY3Rp
b24oVE9wZXJhdG9yIG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUVHlwZSAqcGFyYW0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUVHlwZSAqcGFyYW0yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUVHlwZSAqcGFyYW0zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICplbXVsYXRlZEZ1bmN0aW9uRGVmaW5pdGlvbik7CisgICAgRnVuY3Rpb25JZCBhZGRF
bXVsYXRlZEZ1bmN0aW9uKFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFR5cGUgKnBhcmFtMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFR5cGUgKnBhcmFtMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFR5cGUgKnBhcmFtMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFR5cGUgKnBhcmFtNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqZW11bGF0ZWRGdW5jdGlvbkRlZmluaXRpb24pOworCisgICAg
RnVuY3Rpb25JZCBhZGRFbXVsYXRlZEZ1bmN0aW9uV2l0aERlcGVuZGVuY3koRnVuY3Rpb25JZCBk
ZXBlbmRlbmN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUVHlwZSAqcGFyYW0xLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwYXJhbTIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW11bGF0
ZWRGdW5jdGlvbkRlZmluaXRpb24pOworICAgIEZ1bmN0aW9uSWQgYWRkRW11bGF0ZWRGdW5jdGlv
bldpdGhEZXBlbmRlbmN5KEZ1bmN0aW9uSWQgZGVwZW5kZW5jeSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUT3BlcmF0b3Igb3AsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnBhcmFt
MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUVHlwZSAqcGFyYW0yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRUeXBlICpwYXJhbTMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnBhcmFtNCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbXVsYXRl
ZEZ1bmN0aW9uRGVmaW5pdGlvbik7CisKKyAgcHJpdmF0ZToKKyAgICBjbGFzcyBCdWlsdEluRnVu
Y3Rpb25FbXVsYXRpb25NYXJrZXI7CisKKyAgICAvLyBSZWNvcmRzIHRoYXQgYSBmdW5jdGlvbiBp
cyBjYWxsZWQgYnkgdGhlIHNoYWRlciBhbmQgbWlnaHQgbmVlZCB0byBiZSBlbXVsYXRlZC4gSWYg
dGhlCisgICAgLy8gZnVuY3Rpb24gaXMgbm90IGluIG1FbXVsYXRlZEZ1bmN0aW9ucywgdGhpcyBi
ZWNvbWVzIGEgbm8tb3AuIFJldHVybnMgdHJ1ZSBpZiB0aGUgZnVuY3Rpb24KKyAgICAvLyBjYWxs
IG5lZWRzIHRvIGJlIHJlcGxhY2VkIHdpdGggYW4gZW11bGF0ZWQgb25lLgorICAgIGJvb2wgc2V0
RnVuY3Rpb25DYWxsZWQoVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSAmcGFyYW0pOworICAgIGJv
b2wgc2V0RnVuY3Rpb25DYWxsZWQoVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSAmcGFyYW0xLCBj
b25zdCBUVHlwZSAmcGFyYW0yKTsKKyAgICBib29sIHNldEZ1bmN0aW9uQ2FsbGVkKFRPcGVyYXRv
ciBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZwYXJhbTEsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmcGFyYW0yLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgJnBhcmFtMyk7CisgICAgYm9vbCBzZXRGdW5j
dGlvbkNhbGxlZChUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUVHlwZSAmcGFyYW0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUg
JnBhcmFtMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZwYXJhbTMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmcGFyYW00KTsKKworICAg
IGJvb2wgc2V0RnVuY3Rpb25DYWxsZWQoY29uc3QgRnVuY3Rpb25JZCAmZnVuY3Rpb25JZCk7CiAK
ICAgICAvLyBNYXAgZnJvbSBmdW5jdGlvbiBpZCB0byBlbXVsYXRlZCBmdW5jdGlvbiBkZWZpbml0
aW9uCiAgICAgc3RkOjptYXA8RnVuY3Rpb25JZCwgc3RkOjpzdHJpbmc+IG1FbXVsYXRlZEZ1bmN0
aW9uczsKIAorICAgIC8vIE1hcCBmcm9tIGRlcGVuZGVudCBmdW5jdGlvbnMgdG8gdGhlaXIgZGVw
ZW5kZW5jaWVzLiBUaGlzIHN0cnVjdHVyZSBhbGxvd3MgZWFjaCBmdW5jdGlvbiB0bworICAgIC8v
IGhhdmUgYXQgbW9zdCBvbmUgZGVwZW5kZW5jeS4KKyAgICBzdGQ6Om1hcDxGdW5jdGlvbklkLCBG
dW5jdGlvbklkPiBtRnVuY3Rpb25EZXBlbmRlbmNpZXM7CisKICAgICAvLyBDYWxsZWQgZnVuY3Rp
b24gaWRzCiAgICAgc3RkOjp2ZWN0b3I8RnVuY3Rpb25JZD4gbUZ1bmN0aW9uczsKIH07CiAKK30g
IC8vIG5hbWVzcGFjZSBzaAorCiAjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfQlVJTFRJ
TkZVTkNUSU9ORU1VTEFUT1JfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yR0xTTC5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdElu
RnVuY3Rpb25FbXVsYXRvckdMU0wuY3BwCmluZGV4IDBjOGUyZDljZmMxLi5kYWRhNTNiOTE1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckdM
U0wuY3BwCkBAIC0xMSw2ICsxMSw5IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9T
eW1ib2xUYWJsZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVmVyc2lvbkdMU0wu
aCIKIAorbmFtZXNwYWNlIHNoCit7CisKIHZvaWQgSW5pdEJ1aWx0SW5BYnNGdW5jdGlvbkVtdWxh
dG9yRm9yR0xTTFdvcmthcm91bmRzKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaDo6R0xl
bnVtIHNoYWRlclR5cGUpCiB7CkBAIC03Miw4ICs3NSw0NiBAQCB2b2lkIEluaXRCdWlsdEluSXNu
YW5GdW5jdGlvbkVtdWxhdG9yRm9yR0xTTFdvcmthcm91bmRzKEJ1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yCiAgICAgICAgICJ9XG4iKTsKIH0KIAordm9pZCBJbml0QnVpbHRJbkF0YW5GdW5jdGlvbkVt
dWxhdG9yRm9yR0xTTFdvcmthcm91bmRzKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUpCit7
CisgICAgY29uc3QgVFR5cGUgKmZsb2F0MSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCk7Cisg
ICAgYXV0byBmbG9hdEZ1bmNJZCAgICA9IGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbigKKyAgICAg
ICAgRU9wQXRhbiwgZmxvYXQxLCBmbG9hdDEsCisgICAgICAgICJ3ZWJnbF9lbXVfcHJlY2lzaW9u
IGZsb2F0IHdlYmdsX2F0YW5fZW11KHdlYmdsX2VtdV9wcmVjaXNpb24gZmxvYXQgeSwgd2ViZ2xf
ZW11X3ByZWNpc2lvbiAiCisgICAgICAgICJmbG9hdCB4KVxuIgorICAgICAgICAie1xuIgorICAg
ICAgICAiICAgIGlmICh4ID4gMC4wKSByZXR1cm4gYXRhbih5IC8geCk7XG4iCisgICAgICAgICIg
ICAgZWxzZSBpZiAoeCA8IDAuMCAmJiB5ID49IDAuMCkgcmV0dXJuIGF0YW4oeSAvIHgpICsgMy4x
NDE1OTI2NTtcbiIKKyAgICAgICAgIiAgICBlbHNlIGlmICh4IDwgMC4wICYmIHkgPCAwLjApIHJl
dHVybiBhdGFuKHkgLyB4KSAtIDMuMTQxNTkyNjU7XG4iCisgICAgICAgICIgICAgZWxzZSByZXR1
cm4gMS41NzA3OTYzMiAqIHNpZ24oeSk7XG4iCisgICAgICAgICJ9XG4iKTsKKyAgICBmb3IgKGlu
dCBkaW0gPSAyOyBkaW0gPD0gNDsgKytkaW0pCisgICAgeworICAgICAgICBjb25zdCBUVHlwZSAq
ZmxvYXRWZWMgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXI+KGRpbSkpOworICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKKyAgICAgICAgc3Mg
PDwgIndlYmdsX2VtdV9wcmVjaXNpb24gdmVjIiA8PCBkaW0gPDwgIiB3ZWJnbF9hdGFuX2VtdSh3
ZWJnbF9lbXVfcHJlY2lzaW9uIHZlYyIgPDwgZGltCisgICAgICAgICAgIDw8ICIgeSwgd2ViZ2xf
ZW11X3ByZWNpc2lvbiB2ZWMiIDw8IGRpbSA8PCAiIHgpXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gdmVjIgor
ICAgICAgICAgICA8PCBkaW0gPDwgIigiOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRp
bTsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBzcyA8PCAid2ViZ2xfYXRhbl9lbXUoeVsi
IDw8IGkgPDwgIl0sIHhbIiA8PCBpIDw8ICJdKSI7CisgICAgICAgICAgICBpZiAoaSA8IGRpbSAt
IDEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3MgPDwgIiwgIjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBzcyA8PCAiKTtcbiIKKyAgICAgICAgICAgICAgIn1c
biI7CisgICAgICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbldpdGhEZXBlbmRlbmN5KGZsb2F0
RnVuY0lkLCBFT3BBdGFuLCBmbG9hdFZlYywgZmxvYXRWZWMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzLnN0cigpLmNfc3RyKCkpOworICAgIH0KK30K
KwogLy8gRW11bGF0ZSBidWlsdC1pbiBmdW5jdGlvbnMgbWlzc2luZyBmcm9tIEdMU0wgMS4zMCBh
bmQgaGlnaGVyCi12b2lkIEluaXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvckZvckdMU0xNaXNzaW5n
RnVuY3Rpb25zKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUsIHNoOjpHTGVudW0gc2hhZGVy
VHlwZSwKK3ZvaWQgSW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yRm9yR0xTTE1pc3NpbmdGdW5j
dGlvbnMoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkdMZW51bSBzaGFkZXJUeXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgdGFyZ2V0R0xTTFZlcnNpb24pCiB7CiAgICAgLy8gRW11bGF0ZSBwYWNrVW5vcm0yeDE2
IGFuZCB1bnBhY2tVbm9ybTJ4MTYgKEdMU0wgNC4xMCkKQEAgLTEwNiw3ICsxNDcsNyBAQCB2b2lk
IEluaXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvckZvckdMU0xNaXNzaW5nRnVuY3Rpb25zKEJ1aWx0
SW5GdW5jdGlvbkVtdWxhdG9yCiAgICAgaWYgKHRhcmdldEdMU0xWZXJzaW9uID49IEdMU0xfVkVS
U0lPTl8zMzAgJiYgdGFyZ2V0R0xTTFZlcnNpb24gPCBHTFNMX1ZFUlNJT05fNDIwKQogICAgIHsK
ICAgICAgICAgY29uc3QgVFR5cGUgKmZsb2F0MiA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwg
Mik7Ci0gICAgICAgIGNvbnN0IFRUeXBlICp1aW50MSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRVSW50
KTsKKyAgICAgICAgY29uc3QgVFR5cGUgKnVpbnQxICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRVSW50
KTsKIAogICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCiAgICAgICAgIGVtdS0+YWRkRW11bGF0
ZWRGdW5jdGlvbihFT3BQYWNrU25vcm0yeDE2LCBmbG9hdDIsCkBAIC0yNDgsMyArMjg5LDUgQEAg
dm9pZCBJbml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JGb3JHTFNMTWlzc2luZ0Z1bmN0aW9ucyhC
dWlsdEluRnVuY3Rpb25FbXVsYXRvcgogICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KICAgICB9
CiB9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JHTFNM
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWls
dEluRnVuY3Rpb25FbXVsYXRvckdMU0wuaAppbmRleCAyYmM1ZjJjODgwMS4uZTFiNDc3OWJkNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yR0xTTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlvbkVtdWxhdG9yR0xT
TC5oCkBAIC05LDYgKzksOCBAQAogCiAjaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCiAK
K25hbWVzcGFjZSBzaAorewogY2xhc3MgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I7CiAKIC8vCkBA
IC0yMiwxMSArMjQsMTcgQEAgdm9pZCBJbml0QnVpbHRJbkFic0Z1bmN0aW9uRW11bGF0b3JGb3JH
TFNMV29ya2Fyb3VuZHMoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmUKIC8vCiB2b2lkIEluaXRC
dWlsdEluSXNuYW5GdW5jdGlvbkVtdWxhdG9yRm9yR0xTTFdvcmthcm91bmRzKEJ1aWx0SW5GdW5j
dGlvbkVtdWxhdG9yICplbXUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRHTFNMVmVyc2lvbik7CisvLworLy8gVGhpcyB3
b3JrcyBhcm91bmQgYXRhbih5LCB4KSBidWcgaW4gTlZJRElBIGRyaXZlcnMuCisvLwordm9pZCBJ
bml0QnVpbHRJbkF0YW5GdW5jdGlvbkVtdWxhdG9yRm9yR0xTTFdvcmthcm91bmRzKEJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yICplbXUpOwogCiAvLwogLy8gVGhpcyBmdW5jdGlvbiBpcyBlbXVsYXRp
bmcgYnVpbHQtaW4gZnVuY3Rpb25zIG1pc3NpbmcgZnJvbSBHTFNMIDEuMzAgYW5kIGhpZ2hlci4K
IC8vCi12b2lkIEluaXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvckZvckdMU0xNaXNzaW5nRnVuY3Rp
b25zKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUsIHNoOjpHTGVudW0gc2hhZGVyVHlwZSwK
K3ZvaWQgSW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yRm9yR0xTTE1pc3NpbmdGdW5jdGlvbnMo
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkdMZW51bSBzaGFkZXJUeXBlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
dGFyZ2V0R0xTTFZlcnNpb24pOworfSAgLy8gbmFtZXNwYWNlIHNoCiAKICNlbmRpZiAgLy8gQ09N
UElMRVJfVFJBTlNMQVRPUl9CVUlMVElORlVOQ1RJT05FTVVMQVRPUkdMU0xfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0J1aWx0
SW5GdW5jdGlvbkVtdWxhdG9ySExTTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckhMU0wuY3BwCmluZGV4
IDk4OGYxZTJiZjVlLi42ZDRhY2UzZGQ2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JITFNM
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckhMU0wuY3BwCkBAIC0xMCw2ICsxMCw5IEBACiAjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgogI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvVmVyc2lvbkdMU0wuaCIKIAorbmFtZXNwYWNlIHNoCit7CisKIHZvaWQg
SW5pdEJ1aWx0SW5Jc25hbkZ1bmN0aW9uRW11bGF0b3JGb3JITFNMV29ya2Fyb3VuZHMoQnVpbHRJ
bkZ1bmN0aW9uRW11bGF0b3IgKmVtdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldEdMU0xWZXJzaW9uKQogewpAQCAtMjIs
MTMgKzI1LDE0IEBAIHZvaWQgSW5pdEJ1aWx0SW5Jc25hbkZ1bmN0aW9uRW11bGF0b3JGb3JITFNM
V29ya2Fyb3VuZHMoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IKICAgICBUVHlwZSAqZmxvYXQ0ID0g
bmV3IFRUeXBlKEVidEZsb2F0LCA0KTsKIAogICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihF
T3BJc05hbiwgZmxvYXQxLAotICAgICAgICAiYm9vbCB3ZWJnbF9pc25hbl9lbXUoZmxvYXQgeClc
biIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICByZXR1cm4gKHggPiAwLjAgfHwgeCA8IDAu
MCkgPyBmYWxzZSA6IHggIT0gMC4wO1xuIgotICAgICAgICAifVxuIgotICAgICAgICAiXG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvb2wgd2ViZ2xfaXNuYW5fZW11KGZsb2F0
IHgpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICAgcmV0dXJuICh4ID4gMC4wIHx8IHggPCAwLjApID8gZmFsc2Ug
OiB4ICE9IDAuMDtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIik7CiAKLSAgICBlbXUtPmFkZEVtdWxhdGVkRnVu
Y3Rpb24oRU9wSXNOYW4sIGZsb2F0MiwKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oCisg
ICAgICAgIEVPcElzTmFuLCBmbG9hdDIsCiAgICAgICAgICJib29sMiB3ZWJnbF9pc25hbl9lbXUo
ZmxvYXQyIHgpXG4iCiAgICAgICAgICJ7XG4iCiAgICAgICAgICIgICAgYm9vbDIgaXNuYW47XG4i
CkBAIC0zOSw3ICs0Myw4IEBAIHZvaWQgSW5pdEJ1aWx0SW5Jc25hbkZ1bmN0aW9uRW11bGF0b3JG
b3JITFNMV29ya2Fyb3VuZHMoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IKICAgICAgICAgIiAgICBy
ZXR1cm4gaXNuYW47XG4iCiAgICAgICAgICJ9XG4iKTsKIAotICAgIGVtdS0+YWRkRW11bGF0ZWRG
dW5jdGlvbihFT3BJc05hbiwgZmxvYXQzLAorICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbigK
KyAgICAgICAgRU9wSXNOYW4sIGZsb2F0MywKICAgICAgICAgImJvb2wzIHdlYmdsX2lzbmFuX2Vt
dShmbG9hdDMgeClcbiIKICAgICAgICAgIntcbiIKICAgICAgICAgIiAgICBib29sMyBpc25hbjtc
biIKQEAgLTUwLDcgKzU1LDggQEAgdm9pZCBJbml0QnVpbHRJbklzbmFuRnVuY3Rpb25FbXVsYXRv
ckZvckhMU0xXb3JrYXJvdW5kcyhCdWlsdEluRnVuY3Rpb25FbXVsYXRvcgogICAgICAgICAiICAg
IHJldHVybiBpc25hbjtcbiIKICAgICAgICAgIn1cbiIpOwogCi0gICAgZW11LT5hZGRFbXVsYXRl
ZEZ1bmN0aW9uKEVPcElzTmFuLCBmbG9hdDQsCisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9u
KAorICAgICAgICBFT3BJc05hbiwgZmxvYXQ0LAogICAgICAgICAiYm9vbDQgd2ViZ2xfaXNuYW5f
ZW11KGZsb2F0NCB4KVxuIgogICAgICAgICAie1xuIgogICAgICAgICAiICAgIGJvb2w0IGlzbmFu
O1xuIgpAQCAtNjgsMTE3ICs3NCwxODggQEAgdm9pZCBJbml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3JGb3JITFNMKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUpCiAgICAgVFR5cGUgKmZsb2F0
MiA9IG5ldyBUVHlwZShFYnRGbG9hdCwgMik7CiAgICAgVFR5cGUgKmZsb2F0MyA9IG5ldyBUVHlw
ZShFYnRGbG9hdCwgMyk7CiAgICAgVFR5cGUgKmZsb2F0NCA9IG5ldyBUVHlwZShFYnRGbG9hdCwg
NCk7CisgICAgVFR5cGUgKmludDEgICA9IG5ldyBUVHlwZShFYnRJbnQpOworICAgIFRUeXBlICpp
bnQyICAgPSBuZXcgVFR5cGUoRWJ0SW50LCAyKTsKKyAgICBUVHlwZSAqaW50MyAgID0gbmV3IFRU
eXBlKEVidEludCwgMyk7CisgICAgVFR5cGUgKmludDQgICA9IG5ldyBUVHlwZShFYnRJbnQsIDQp
OworICAgIFRUeXBlICp1aW50MSAgPSBuZXcgVFR5cGUoRWJ0VUludCk7CisgICAgVFR5cGUgKnVp
bnQyICA9IG5ldyBUVHlwZShFYnRVSW50LCAyKTsKKyAgICBUVHlwZSAqdWludDMgID0gbmV3IFRU
eXBlKEVidFVJbnQsIDMpOworICAgIFRUeXBlICp1aW50NCAgPSBuZXcgVFR5cGUoRWJ0VUludCwg
NCk7CiAKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wTW9kLCBmbG9hdDEsIGZsb2F0
MSwKLSAgICAgICAgImZsb2F0IHdlYmdsX21vZF9lbXUoZmxvYXQgeCwgZmxvYXQgeSlcbiIKLSAg
ICAgICAgIntcbiIKLSAgICAgICAgIiAgICByZXR1cm4geCAtIHkgKiBmbG9vcih4IC8geSk7XG4i
Ci0gICAgICAgICJ9XG4iCi0gICAgICAgICJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZmxvYXQgd2ViZ2xfbW9kX2VtdShmbG9hdCB4LCBmbG9hdCB5KVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ICAgIHJldHVybiB4IC0geSAqIGZsb29yKHggLyB5KTtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIik7CiAgICAg
ZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcE1vZCwgZmxvYXQyLCBmbG9hdDIsCi0gICAgICAg
ICJmbG9hdDIgd2ViZ2xfbW9kX2VtdShmbG9hdDIgeCwgZmxvYXQyIHkpXG4iCi0gICAgICAgICJ7
XG4iCi0gICAgICAgICIgICAgcmV0dXJuIHggLSB5ICogZmxvb3IoeCAvIHkpO1xuIgotICAgICAg
ICAifVxuIgotICAgICAgICAiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZs
b2F0MiB3ZWJnbF9tb2RfZW11KGZsb2F0MiB4LCBmbG9hdDIgeSlcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBy
ZXR1cm4geCAtIHkgKiBmbG9vcih4IC8geSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIpOwogICAgIGVtdS0+
YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BNb2QsIGZsb2F0MiwgZmxvYXQxLAotICAgICAgICAiZmxv
YXQyIHdlYmdsX21vZF9lbXUoZmxvYXQyIHgsIGZsb2F0IHkpXG4iCi0gICAgICAgICJ7XG4iCi0g
ICAgICAgICIgICAgcmV0dXJuIHggLSB5ICogZmxvb3IoeCAvIHkpO1xuIgotICAgICAgICAifVxu
IgotICAgICAgICAiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0MiB3
ZWJnbF9tb2RfZW11KGZsb2F0MiB4LCBmbG9hdCB5KVxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB4
IC0geSAqIGZsb29yKHggLyB5KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1c
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIik7CiAgICAgZW11LT5hZGRFbXVs
YXRlZEZ1bmN0aW9uKEVPcE1vZCwgZmxvYXQzLCBmbG9hdDMsCi0gICAgICAgICJmbG9hdDMgd2Vi
Z2xfbW9kX2VtdShmbG9hdDMgeCwgZmxvYXQzIHkpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAg
ICIgICAgcmV0dXJuIHggLSB5ICogZmxvb3IoeCAvIHkpO1xuIgotICAgICAgICAifVxuIgotICAg
ICAgICAiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0MyB3ZWJnbF9t
b2RfZW11KGZsb2F0MyB4LCBmbG9hdDMgeSlcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4geCAtIHkg
KiBmbG9vcih4IC8geSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIpOwogICAgIGVtdS0+YWRkRW11bGF0ZWRG
dW5jdGlvbihFT3BNb2QsIGZsb2F0MywgZmxvYXQxLAotICAgICAgICAiZmxvYXQzIHdlYmdsX21v
ZF9lbXUoZmxvYXQzIHgsIGZsb2F0IHkpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAg
cmV0dXJuIHggLSB5ICogZmxvb3IoeCAvIHkpO1xuIgotICAgICAgICAifVxuIgotICAgICAgICAi
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0MyB3ZWJnbF9tb2RfZW11
KGZsb2F0MyB4LCBmbG9hdCB5KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB4IC0geSAqIGZsb29y
KHggLyB5KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIik7CiAgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9u
KEVPcE1vZCwgZmxvYXQ0LCBmbG9hdDQsCi0gICAgICAgICJmbG9hdDQgd2ViZ2xfbW9kX2VtdShm
bG9hdDQgeCwgZmxvYXQ0IHkpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgcmV0dXJu
IHggLSB5ICogZmxvb3IoeCAvIHkpO1xuIgotICAgICAgICAifVxuIgotICAgICAgICAiXG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0NCB3ZWJnbF9tb2RfZW11KGZsb2F0
NCB4LCBmbG9hdDQgeSlcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4geCAtIHkgKiBmbG9vcih4IC8g
eSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJcbiIpOwogICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BN
b2QsIGZsb2F0NCwgZmxvYXQxLAotICAgICAgICAiZmxvYXQ0IHdlYmdsX21vZF9lbXUoZmxvYXQ0
IHgsIGZsb2F0IHkpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgcmV0dXJuIHggLSB5
ICogZmxvb3IoeCAvIHkpO1xuIgotICAgICAgICAifVxuIgotICAgICAgICAiXG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0NCB3ZWJnbF9tb2RfZW11KGZsb2F0NCB4LCBm
bG9hdCB5KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB4IC0geSAqIGZsb29yKHggLyB5KTtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlxuIik7CisKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wRnJleHAs
IGZsb2F0MSwgaW50MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0IHdlYmds
X2ZyZXhwX2VtdShmbG9hdCB4LCBvdXQgaW50IGV4cClcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdCBm
ZXhwO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGZsb2F0IG1hbnRpc3Nh
ID0gZnJleHAoYWJzKHgpLCBmZXhwKSAqIHNpZ24oeCk7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgICAgZXhwID0gaW50KGZleHApO1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICAgIHJldHVybiBtYW50aXNzYTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIik7CisgICAgZW11
LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcEZyZXhwLCBmbG9hdDIsIGludDIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJmbG9hdDIgd2ViZ2xfZnJleHBfZW11KGZsb2F0MiB4LCBvdXQg
aW50MiBleHApXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIgICAgZmxvYXQyIGZleHA7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICAgZmxvYXQyIG1hbnRpc3NhID0gZnJleHAoYWJzKHgpLCBmZXhw
KSAqIHNpZ24oeCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZXhwID0g
aW50MihmZXhwKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4g
bWFudGlzc2E7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJcbiIpOworICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlv
bihFT3BGcmV4cCwgZmxvYXQzLCBpbnQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZmxvYXQzIHdlYmdsX2ZyZXhwX2VtdShmbG9hdDMgeCwgb3V0IGludDMgZXhwKVxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgIGZsb2F0MyBmZXhwO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAg
IGZsb2F0MyBtYW50aXNzYSA9IGZyZXhwKGFicyh4KSwgZmV4cCkgKiBzaWduKHgpO1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGV4cCA9IGludDMoZmV4cCk7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIG1hbnRpc3NhO1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiXG4iKTsKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wRnJleHAsIGZsb2F0NCwg
aW50NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0NCB3ZWJnbF9mcmV4cF9l
bXUoZmxvYXQ0IHgsIG91dCBpbnQ0IGV4cClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDQgZmV4cDtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDQgbWFudGlzc2EgPSBm
cmV4cChhYnMoeCksIGZleHApICogc2lnbih4KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICBleHAgPSBpbnQ0KGZleHApO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIHJldHVybiBtYW50aXNzYTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIik7CisKKyAgICBlbXUt
PmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wTGRleHAsIGZsb2F0MSwgaW50MSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImZsb2F0IHdlYmdsX2xkZXhwX2VtdShmbG9hdCB4LCBpbnQgZXhw
KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiICAgIHJldHVybiBsZGV4cCh4LCBmbG9hdChleHApKTtcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIik7CisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcExkZXhwLCBmbG9hdDIs
IGludDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDIgd2ViZ2xfbGRleHBf
ZW11KGZsb2F0MiB4LCBpbnQyIGV4cClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gbGRleHAoeCwg
ZmxvYXQyKGV4cCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iKTsKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVu
Y3Rpb24oRU9wTGRleHAsIGZsb2F0MywgaW50MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImZsb2F0MyB3ZWJnbF9sZGV4cF9lbXUoZmxvYXQzIHgsIGludDMgZXhwKVxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgIHJldHVybiBsZGV4cCh4LCBmbG9hdDMoZXhwKSk7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIpOwor
ICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BMZGV4cCwgZmxvYXQ0LCBpbnQ0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IHdlYmdsX2xkZXhwX2VtdShmbG9hdDQg
eCwgaW50NCBleHApXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIGxkZXhwKHgsIGZsb2F0NChleHAp
KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlxuIik7CiAKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9w
RmFjZUZvcndhcmQsIGZsb2F0MSwgZmxvYXQxLCBmbG9hdDEsCi0gICAgICAgICJmbG9hdCB3ZWJn
bF9mYWNlZm9yd2FyZF9lbXUoZmxvYXQgTiwgZmxvYXQgSSwgZmxvYXQgTnJlZilcbiIKLSAgICAg
ICAgIntcbiIKLSAgICAgICAgIiAgICBpZihkb3QoTnJlZiwgSSkgPj0gMClcbiIKLSAgICAgICAg
IiAgICB7XG4iCi0gICAgICAgICIgICAgICAgIHJldHVybiAtTjtcbiIKLSAgICAgICAgIiAgICB9
XG4iCi0gICAgICAgICIgICAgZWxzZVxuIgotICAgICAgICAiICAgIHtcbiIKLSAgICAgICAgIiAg
ICAgICAgcmV0dXJuIE47XG4iCi0gICAgICAgICIgICAgfVxuIgotICAgICAgICAifVxuIgotICAg
ICAgICAiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0IHdlYmdsX2Zh
Y2Vmb3J3YXJkX2VtdShmbG9hdCBOLCBmbG9hdCBJLCBmbG9hdCBOcmVmKVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ICAgIGlmKGRvdChOcmVmLCBJKSA+PSAwKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgcmV0dXJu
IC1OO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIH1cbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICBlbHNlXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIgICAge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICBy
ZXR1cm4gTjtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB9XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJcbiIpOwogICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BGYWNlRm9yd2FyZCwg
ZmxvYXQyLCBmbG9hdDIsIGZsb2F0MiwKLSAgICAgICAgImZsb2F0MiB3ZWJnbF9mYWNlZm9yd2Fy
ZF9lbXUoZmxvYXQyIE4sIGZsb2F0MiBJLCBmbG9hdDIgTnJlZilcbiIKLSAgICAgICAgIntcbiIK
LSAgICAgICAgIiAgICBpZihkb3QoTnJlZiwgSSkgPj0gMClcbiIKLSAgICAgICAgIiAgICB7XG4i
Ci0gICAgICAgICIgICAgICAgIHJldHVybiAtTjtcbiIKLSAgICAgICAgIiAgICB9XG4iCi0gICAg
ICAgICIgICAgZWxzZVxuIgotICAgICAgICAiICAgIHtcbiIKLSAgICAgICAgIiAgICAgICAgcmV0
dXJuIE47XG4iCi0gICAgICAgICIgICAgfVxuIgotICAgICAgICAifVxuIgotICAgICAgICAiXG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0MiB3ZWJnbF9mYWNlZm9yd2Fy
ZF9lbXUoZmxvYXQyIE4sIGZsb2F0MiBJLCBmbG9hdDIgTnJlZilcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBp
Zihkb3QoTnJlZiwgSSkgPj0gMClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIHJldHVybiAtTjtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB9XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICAgZWxzZVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgcmV0dXJu
IE47XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgfVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iKTsKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wRmFjZUZvcndhcmQsIGZsb2F0
MywgZmxvYXQzLCBmbG9hdDMsCi0gICAgICAgICJmbG9hdDMgd2ViZ2xfZmFjZWZvcndhcmRfZW11
KGZsb2F0MyBOLCBmbG9hdDMgSSwgZmxvYXQzIE5yZWYpXG4iCi0gICAgICAgICJ7XG4iCi0gICAg
ICAgICIgICAgaWYoZG90KE5yZWYsIEkpID49IDApXG4iCi0gICAgICAgICIgICAge1xuIgotICAg
ICAgICAiICAgICAgICByZXR1cm4gLU47XG4iCi0gICAgICAgICIgICAgfVxuIgotICAgICAgICAi
ICAgIGVsc2VcbiIKLSAgICAgICAgIiAgICB7XG4iCi0gICAgICAgICIgICAgICAgIHJldHVybiBO
O1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgIlxuIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDMgd2ViZ2xfZmFjZWZvcndhcmRfZW11
KGZsb2F0MyBOLCBmbG9hdDMgSSwgZmxvYXQzIE5yZWYpXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgaWYoZG90
KE5yZWYsIEkpID49IDApXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAge1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICByZXR1cm4gLU47XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgfVxuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIGVsc2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAg
ICB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgIHJldHVybiBOO1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIik7
CiAgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcEZhY2VGb3J3YXJkLCBmbG9hdDQsIGZs
b2F0NCwgZmxvYXQ0LAotICAgICAgICAiZmxvYXQ0IHdlYmdsX2ZhY2Vmb3J3YXJkX2VtdShmbG9h
dDQgTiwgZmxvYXQ0IEksIGZsb2F0NCBOcmVmKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAi
ICAgIGlmKGRvdChOcmVmLCBJKSA+PSAwKVxuIgotICAgICAgICAiICAgIHtcbiIKLSAgICAgICAg
IiAgICAgICAgcmV0dXJuIC1OO1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgIiAgICBl
bHNlXG4iCi0gICAgICAgICIgICAge1xuIgotICAgICAgICAiICAgICAgICByZXR1cm4gTjtcbiIK
LSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJcbiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IHdlYmdsX2ZhY2Vmb3J3YXJkX2VtdShmbG9h
dDQgTiwgZmxvYXQ0IEksIGZsb2F0NCBOcmVmKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGlmKGRvdChOcmVm
LCBJKSA+PSAwKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHtcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgcmV0dXJuIC1OO1xuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICBlbHNlXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAge1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgICByZXR1cm4gTjtcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB9XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIpOwogCiAg
ICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcEF0YW4sIGZsb2F0MSwgZmxvYXQxLAotICAg
ICAgICAiZmxvYXQgd2ViZ2xfYXRhbl9lbXUoZmxvYXQgeSwgZmxvYXQgeClcbiIKLSAgICAgICAg
IntcbiIKLSAgICAgICAgIiAgICBpZih4ID09IDAgJiYgeSA9PSAwKSB4ID0gMTtcbiIgICAvLyBB
dm9pZCBwcm9kdWNpbmcgYSBOYU4KLSAgICAgICAgIiAgICByZXR1cm4gYXRhbjIoeSwgeCk7XG4i
Ci0gICAgICAgICJ9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0IHdl
YmdsX2F0YW5fZW11KGZsb2F0IHksIGZsb2F0IHgpXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgaWYoeCA9PSAw
ICYmIHkgPT0gMCkgeCA9IDE7XG4iICAvLyBBdm9pZCBwcm9kdWNpbmcgYSBOYU4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gYXRhbjIoeSwgeCk7XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rp
b24oRU9wQXRhbiwgZmxvYXQyLCBmbG9hdDIsCi0gICAgICAgICJmbG9hdDIgd2ViZ2xfYXRhbl9l
bXUoZmxvYXQyIHksIGZsb2F0MiB4KVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIGlm
KHhbMF0gPT0gMCAmJiB5WzBdID09IDApIHhbMF0gPSAxO1xuIgotICAgICAgICAiICAgIGlmKHhb
MV0gPT0gMCAmJiB5WzFdID09IDApIHhbMV0gPSAxO1xuIgotICAgICAgICAiICAgIHJldHVybiBm
bG9hdDIoYXRhbjIoeVswXSwgeFswXSksIGF0YW4yKHlbMV0sIHhbMV0pKTtcbiIKLSAgICAgICAg
In1cbiIpOwotICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BBdGFuLCBmbG9hdDMsIGZs
b2F0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0MiB3ZWJnbF9hdGFuX2Vt
dShmbG9hdDIgeSwgZmxvYXQyIHgpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgaWYoeFswXSA9PSAwICYmIHlb
MF0gPT0gMCkgeFswXSA9IDE7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAg
aWYoeFsxXSA9PSAwICYmIHlbMV0gPT0gMCkgeFsxXSA9IDE7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIgICAgcmV0dXJuIGZsb2F0MihhdGFuMih5WzBdLCB4WzBdKSwgYXRhbjIo
eVsxXSwgeFsxXSkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIik7Cisg
ICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKAorICAgICAgICBFT3BBdGFuLCBmbG9hdDMsIGZs
b2F0MywKICAgICAgICAgImZsb2F0MyB3ZWJnbF9hdGFuX2VtdShmbG9hdDMgeSwgZmxvYXQzIHgp
XG4iCiAgICAgICAgICJ7XG4iCiAgICAgICAgICIgICAgaWYoeFswXSA9PSAwICYmIHlbMF0gPT0g
MCkgeFswXSA9IDE7XG4iCkBAIC0xODcsNzggKzI2NCw4MiBAQCB2b2lkIEluaXRCdWlsdEluRnVu
Y3Rpb25FbXVsYXRvckZvckhMU0woQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSkKICAgICAg
ICAgIiAgICByZXR1cm4gZmxvYXQzKGF0YW4yKHlbMF0sIHhbMF0pLCBhdGFuMih5WzFdLCB4WzFd
KSwgYXRhbjIoeVsyXSwgeFsyXSkpO1xuIgogICAgICAgICAifVxuIik7CiAgICAgZW11LT5hZGRF
bXVsYXRlZEZ1bmN0aW9uKEVPcEF0YW4sIGZsb2F0NCwgZmxvYXQ0LAotICAgICAgICAiZmxvYXQ0
IHdlYmdsX2F0YW5fZW11KGZsb2F0NCB5LCBmbG9hdDQgeClcbiIKLSAgICAgICAgIntcbiIKLSAg
ICAgICAgIiAgICBpZih4WzBdID09IDAgJiYgeVswXSA9PSAwKSB4WzBdID0gMTtcbiIKLSAgICAg
ICAgIiAgICBpZih4WzFdID09IDAgJiYgeVsxXSA9PSAwKSB4WzFdID0gMTtcbiIKLSAgICAgICAg
IiAgICBpZih4WzJdID09IDAgJiYgeVsyXSA9PSAwKSB4WzJdID0gMTtcbiIKLSAgICAgICAgIiAg
ICBpZih4WzNdID09IDAgJiYgeVszXSA9PSAwKSB4WzNdID0gMTtcbiIKLSAgICAgICAgIiAgICBy
ZXR1cm4gZmxvYXQ0KGF0YW4yKHlbMF0sIHhbMF0pLCBhdGFuMih5WzFdLCB4WzFdKSwgYXRhbjIo
eVsyXSwgeFsyXSksIGF0YW4yKHlbM10sIHhbM10pKTtcbiIKLSAgICAgICAgIn1cbiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IHdlYmdsX2F0YW5fZW11KGZsb2F0NCB5
LCBmbG9hdDQgeClcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBpZih4WzBdID09IDAgJiYgeVswXSA9PSAwKSB4
WzBdID0gMTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBpZih4WzFdID09
IDAgJiYgeVsxXSA9PSAwKSB4WzFdID0gMTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiAgICBpZih4WzJdID09IDAgJiYgeVsyXSA9PSAwKSB4WzJdID0gMTtcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICBpZih4WzNdID09IDAgJiYgeVszXSA9PSAwKSB4WzNd
ID0gMTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gZmxvYXQ0
KGF0YW4yKHlbMF0sIHhbMF0pLCBhdGFuMih5WzFdLCB4WzFdKSwgYXRhbjIoeVsyXSwgIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAieFsyXSksIGF0YW4yKHlbM10sIHhbM10pKTtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIpOwogCiAgICAgZW11LT5hZGRFbXVs
YXRlZEZ1bmN0aW9uKEVPcEFzaW5oLCBmbG9hdDEsCi0gICAgICAgICJmbG9hdCB3ZWJnbF9hc2lu
aF9lbXUoaW4gZmxvYXQgeCkge1xuIgotICAgICAgICAiICAgIHJldHVybiBsb2coeCArIHNxcnQo
cG93KHgsIDIuMCkgKyAxLjApKTtcbiIKLSAgICAgICAgIn1cbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZmxvYXQgd2ViZ2xfYXNpbmhfZW11KGluIGZsb2F0IHgpIHtcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gbG9nKHggKyBzcXJ0KHBvdyh4
LCAyLjApICsgMS4wKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsK
ICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wQXNpbmgsIGZsb2F0MiwKLSAgICAgICAg
ImZsb2F0MiB3ZWJnbF9hc2luaF9lbXUoaW4gZmxvYXQyIHgpIHtcbiIKLSAgICAgICAgIiAgICBy
ZXR1cm4gbG9nKHggKyBzcXJ0KHBvdyh4LCAyLjApICsgMS4wKSk7XG4iCi0gICAgICAgICJ9XG4i
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0MiB3ZWJnbF9hc2luaF9lbXUo
aW4gZmxvYXQyIHgpIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1
cm4gbG9nKHggKyBzcXJ0KHBvdyh4LCAyLjApICsgMS4wKSk7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ9XG4iKTsKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wQXNp
bmgsIGZsb2F0MywKLSAgICAgICAgImZsb2F0MyB3ZWJnbF9hc2luaF9lbXUoaW4gZmxvYXQzIHgp
IHtcbiIKLSAgICAgICAgIiAgICByZXR1cm4gbG9nKHggKyBzcXJ0KHBvdyh4LCAyLjApICsgMS4w
KSk7XG4iCi0gICAgICAgICJ9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZs
b2F0MyB3ZWJnbF9hc2luaF9lbXUoaW4gZmxvYXQzIHgpIHtcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiAgICByZXR1cm4gbG9nKHggKyBzcXJ0KHBvdyh4LCAyLjApICsgMS4wKSk7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKICAgICBlbXUtPmFkZEVt
dWxhdGVkRnVuY3Rpb24oRU9wQXNpbmgsIGZsb2F0NCwKLSAgICAgICAgImZsb2F0NCB3ZWJnbF9h
c2luaF9lbXUoaW4gZmxvYXQ0IHgpIHtcbiIKLSAgICAgICAgIiAgICByZXR1cm4gbG9nKHggKyBz
cXJ0KHBvdyh4LCAyLjApICsgMS4wKSk7XG4iCi0gICAgICAgICJ9XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImZsb2F0NCB3ZWJnbF9hc2luaF9lbXUoaW4gZmxvYXQ0IHgpIHtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gbG9nKHggKyBzcXJ0
KHBvdyh4LCAyLjApICsgMS4wKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9
XG4iKTsKIAogICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BBY29zaCwgZmxvYXQxLAot
ICAgICAgICAiZmxvYXQgd2ViZ2xfYWNvc2hfZW11KGluIGZsb2F0IHgpIHtcbiIKLSAgICAgICAg
IiAgICByZXR1cm4gbG9nKHggKyBzcXJ0KHggKyAxLjApICogc3FydCh4IC0gMS4wKSk7XG4iCi0g
ICAgICAgICJ9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0IHdlYmds
X2Fjb3NoX2VtdShpbiBmbG9hdCB4KSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIgICAgcmV0dXJuIGxvZyh4ICsgc3FydCh4ICsgMS4wKSAqIHNxcnQoeCAtIDEuMCkpO1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIik7CiAgICAgZW11LT5hZGRFbXVsYXRl
ZEZ1bmN0aW9uKEVPcEFjb3NoLCBmbG9hdDIsCi0gICAgICAgICJmbG9hdDIgd2ViZ2xfYWNvc2hf
ZW11KGluIGZsb2F0MiB4KSB7XG4iCi0gICAgICAgICIgICAgcmV0dXJuIGxvZyh4ICsgc3FydCh4
ICsgMS4wKSAqIHNxcnQoeCAtIDEuMCkpO1xuIgotICAgICAgICAifVxuIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJmbG9hdDIgd2ViZ2xfYWNvc2hfZW11KGluIGZsb2F0MiB4KSB7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIGxvZyh4ICsgc3Fy
dCh4ICsgMS4wKSAqIHNxcnQoeCAtIDEuMCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAifVxuIik7CiAgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcEFjb3NoLCBmbG9h
dDMsCi0gICAgICAgICJmbG9hdDMgd2ViZ2xfYWNvc2hfZW11KGluIGZsb2F0MyB4KSB7XG4iCi0g
ICAgICAgICIgICAgcmV0dXJuIGxvZyh4ICsgc3FydCh4ICsgMS4wKSAqIHNxcnQoeCAtIDEuMCkp
O1xuIgotICAgICAgICAifVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9h
dDMgd2ViZ2xfYWNvc2hfZW11KGluIGZsb2F0MyB4KSB7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgICAgcmV0dXJuIGxvZyh4ICsgc3FydCh4ICsgMS4wKSAqIHNxcnQoeCAtIDEu
MCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIik7CiAgICAgZW11LT5h
ZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcEFjb3NoLCBmbG9hdDQsCi0gICAgICAgICJmbG9hdDQgd2Vi
Z2xfYWNvc2hfZW11KGluIGZsb2F0NCB4KSB7XG4iCi0gICAgICAgICIgICAgcmV0dXJuIGxvZyh4
ICsgc3FydCh4ICsgMS4wKSAqIHNxcnQoeCAtIDEuMCkpO1xuIgotICAgICAgICAifVxuIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDQgd2ViZ2xfYWNvc2hfZW11KGluIGZs
b2F0NCB4KSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIGxv
Zyh4ICsgc3FydCh4ICsgMS4wKSAqIHNxcnQoeCAtIDEuMCkpO1xuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAifVxuIik7CiAKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9w
QXRhbmgsIGZsb2F0MSwKLSAgICAgICAgImZsb2F0IHdlYmdsX2F0YW5oX2VtdShpbiBmbG9hdCB4
KSB7XG4iCi0gICAgICAgICIgICAgcmV0dXJuIDAuNSAqIGxvZygoMS4wICsgeCkgLyAoMS4wIC0g
eCkpO1xuIgotICAgICAgICAifVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJm
bG9hdCB3ZWJnbF9hdGFuaF9lbXUoaW4gZmxvYXQgeCkge1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIHJldHVybiAwLjUgKiBsb2coKDEuMCArIHgpIC8gKDEuMCAtIHgpKTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIpOwogICAgIGVtdS0+YWRkRW11
bGF0ZWRGdW5jdGlvbihFT3BBdGFuaCwgZmxvYXQyLAotICAgICAgICAiZmxvYXQyIHdlYmdsX2F0
YW5oX2VtdShpbiBmbG9hdDIgeCkge1xuIgotICAgICAgICAiICAgIHJldHVybiAwLjUgKiBsb2co
KDEuMCArIHgpIC8gKDEuMCAtIHgpKTtcbiIKLSAgICAgICAgIn1cbiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZmxvYXQyIHdlYmdsX2F0YW5oX2VtdShpbiBmbG9hdDIgeCkge1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiAwLjUgKiBsb2coKDEu
MCArIHgpIC8gKDEuMCAtIHgpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1c
biIpOwogICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BBdGFuaCwgZmxvYXQzLAotICAg
ICAgICAiZmxvYXQzIHdlYmdsX2F0YW5oX2VtdShpbiBmbG9hdDMgeCkge1xuIgotICAgICAgICAi
ICAgIHJldHVybiAwLjUgKiBsb2coKDEuMCArIHgpIC8gKDEuMCAtIHgpKTtcbiIKLSAgICAgICAg
In1cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQzIHdlYmdsX2F0YW5o
X2VtdShpbiBmbG9hdDMgeCkge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAg
IHJldHVybiAwLjUgKiBsb2coKDEuMCArIHgpIC8gKDEuMCAtIHgpKTtcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIn1cbiIpOwogICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihF
T3BBdGFuaCwgZmxvYXQ0LAotICAgICAgICAiZmxvYXQ0IHdlYmdsX2F0YW5oX2VtdShpbiBmbG9h
dDQgeCkge1xuIgotICAgICAgICAiICAgIHJldHVybiAwLjUgKiBsb2coKDEuMCArIHgpIC8gKDEu
MCAtIHgpKTtcbiIKLSAgICAgICAgIn1cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZmxvYXQ0IHdlYmdsX2F0YW5oX2VtdShpbiBmbG9hdDQgeCkge1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIHJldHVybiAwLjUgKiBsb2coKDEuMCArIHgpIC8gKDEuMCAt
IHgpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIpOwogCi0gICAgZW11
LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcFJvdW5kRXZlbiwgZmxvYXQxLAorICAgIGVtdS0+YWRk
RW11bGF0ZWRGdW5jdGlvbigKKyAgICAgICAgRU9wUm91bmRFdmVuLCBmbG9hdDEsCiAgICAgICAg
ICJmbG9hdCB3ZWJnbF9yb3VuZEV2ZW5fZW11KGluIGZsb2F0IHgpIHtcbiIKICAgICAgICAgIiAg
ICByZXR1cm4gKGZyYWMoeCkgPT0gMC41ICYmIHRydW5jKHgpICUgMi4wID09IDAuMCkgPyB0cnVu
Yyh4KSA6IHJvdW5kKHgpO1xuIgogICAgICAgICAifVxuIik7Ci0gICAgZW11LT5hZGRFbXVsYXRl
ZEZ1bmN0aW9uKEVPcFJvdW5kRXZlbiwgZmxvYXQyLAorICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5j
dGlvbigKKyAgICAgICAgRU9wUm91bmRFdmVuLCBmbG9hdDIsCiAgICAgICAgICJmbG9hdDIgd2Vi
Z2xfcm91bmRFdmVuX2VtdShpbiBmbG9hdDIgeCkge1xuIgogICAgICAgICAiICAgIGZsb2F0MiB2
O1xuIgogICAgICAgICAiICAgIHZbMF0gPSAoZnJhYyh4WzBdKSA9PSAwLjUgJiYgdHJ1bmMoeFsw
XSkgJSAyLjAgPT0gMC4wKSA/IHRydW5jKHhbMF0pIDogcm91bmQoeFswXSk7XG4iCiAgICAgICAg
ICIgICAgdlsxXSA9IChmcmFjKHhbMV0pID09IDAuNSAmJiB0cnVuYyh4WzFdKSAlIDIuMCA9PSAw
LjApID8gdHJ1bmMoeFsxXSkgOiByb3VuZCh4WzFdKTtcbiIKICAgICAgICAgIiAgICByZXR1cm4g
djtcbiIKICAgICAgICAgIn1cbiIpOwotICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BS
b3VuZEV2ZW4sIGZsb2F0MywKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oCisgICAgICAg
IEVPcFJvdW5kRXZlbiwgZmxvYXQzLAogICAgICAgICAiZmxvYXQzIHdlYmdsX3JvdW5kRXZlbl9l
bXUoaW4gZmxvYXQzIHgpIHtcbiIKICAgICAgICAgIiAgICBmbG9hdDMgdjtcbiIKICAgICAgICAg
IiAgICB2WzBdID0gKGZyYWMoeFswXSkgPT0gMC41ICYmIHRydW5jKHhbMF0pICUgMi4wID09IDAu
MCkgPyB0cnVuYyh4WzBdKSA6IHJvdW5kKHhbMF0pO1xuIgpAQCAtMjY2LDcgKzM0Nyw4IEBAIHZv
aWQgSW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yRm9ySExTTChCdWlsdEluRnVuY3Rpb25FbXVs
YXRvciAqZW11KQogICAgICAgICAiICAgIHZbMl0gPSAoZnJhYyh4WzJdKSA9PSAwLjUgJiYgdHJ1
bmMoeFsyXSkgJSAyLjAgPT0gMC4wKSA/IHRydW5jKHhbMl0pIDogcm91bmQoeFsyXSk7XG4iCiAg
ICAgICAgICIgICAgcmV0dXJuIHY7XG4iCiAgICAgICAgICJ9XG4iKTsKLSAgICBlbXUtPmFkZEVt
dWxhdGVkRnVuY3Rpb24oRU9wUm91bmRFdmVuLCBmbG9hdDQsCisgICAgZW11LT5hZGRFbXVsYXRl
ZEZ1bmN0aW9uKAorICAgICAgICBFT3BSb3VuZEV2ZW4sIGZsb2F0NCwKICAgICAgICAgImZsb2F0
NCB3ZWJnbF9yb3VuZEV2ZW5fZW11KGluIGZsb2F0NCB4KSB7XG4iCiAgICAgICAgICIgICAgZmxv
YXQ0IHY7XG4iCiAgICAgICAgICIgICAgdlswXSA9IChmcmFjKHhbMF0pID09IDAuNSAmJiB0cnVu
Yyh4WzBdKSAlIDIuMCA9PSAwLjApID8gdHJ1bmMoeFswXSkgOiByb3VuZCh4WzBdKTtcbiIKQEAg
LTI3Nyw2MSArMzU5LDExMyBAQCB2b2lkIEluaXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvckZvckhM
U0woQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSkKICAgICAgICAgIn1cbiIpOwogCiAgICAg
ZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcFBhY2tTbm9ybTJ4MTYsIGZsb2F0MiwKLSAgICAg
ICAgImludCB3ZWJnbF90b1Nub3JtKGluIGZsb2F0IHgpIHtcbiIKLSAgICAgICAgIiAgICByZXR1
cm4gaW50KHJvdW5kKGNsYW1wKHgsIC0xLjAsIDEuMCkgKiAzMjc2Ny4wKSk7XG4iCi0gICAgICAg
ICJ9XG4iCi0gICAgICAgICJcbiIKLSAgICAgICAgInVpbnQgd2ViZ2xfcGFja1Nub3JtMngxNl9l
bXUoaW4gZmxvYXQyIHYpIHtcbiIKLSAgICAgICAgIiAgICBpbnQgeCA9IHdlYmdsX3RvU25vcm0o
di54KTtcbiIKLSAgICAgICAgIiAgICBpbnQgeSA9IHdlYmdsX3RvU25vcm0odi55KTtcbiIKLSAg
ICAgICAgIiAgICByZXR1cm4gKGFzdWludCh5KSA8PCAxNikgfCAoYXN1aW50KHgpICYgMHhmZmZm
dSk7XG4iCi0gICAgICAgICJ9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlu
dCB3ZWJnbF90b1Nub3JtMTYoaW4gZmxvYXQgeCkge1xuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiICAgIHJldHVybiBpbnQocm91bmQoY2xhbXAoeCwgLTEuMCwgMS4wKSAqIDMyNzY3
LjApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidWlu
dCB3ZWJnbF9wYWNrU25vcm0yeDE2X2VtdShpbiBmbG9hdDIgdikge1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIGludCB4ID0gd2ViZ2xfdG9Tbm9ybTE2KHYueCk7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgaW50IHkgPSB3ZWJnbF90b1Nub3JtMTYo
di55KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gKGFzdWlu
dCh5KSA8PCAxNikgfCAoYXN1aW50KHgpICYgMHhmZmZmdSk7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ9XG4iKTsKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wUGFj
a1Vub3JtMngxNiwgZmxvYXQyLAotICAgICAgICAidWludCB3ZWJnbF90b1Vub3JtKGluIGZsb2F0
IHgpIHtcbiIKLSAgICAgICAgIiAgICByZXR1cm4gdWludChyb3VuZChjbGFtcCh4LCAwLjAsIDEu
MCkgKiA2NTUzNS4wKSk7XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJcbiIKLSAgICAgICAg
InVpbnQgd2ViZ2xfcGFja1Vub3JtMngxNl9lbXUoaW4gZmxvYXQyIHYpIHtcbiIKLSAgICAgICAg
IiAgICB1aW50IHggPSB3ZWJnbF90b1Vub3JtKHYueCk7XG4iCi0gICAgICAgICIgICAgdWludCB5
ID0gd2ViZ2xfdG9Vbm9ybSh2LnkpO1xuIgotICAgICAgICAiICAgIHJldHVybiAoeSA8PCAxNikg
fCB4O1xuIgotICAgICAgICAifVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1
aW50IHdlYmdsX3RvVW5vcm0xNihpbiBmbG9hdCB4KSB7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgICAgcmV0dXJuIHVpbnQocm91bmQoY2xhbXAoeCwgMC4wLCAxLjApICogNjU1
MzUuMCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1
aW50IHdlYmdsX3BhY2tVbm9ybTJ4MTZfZW11KGluIGZsb2F0MiB2KSB7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIgICAgdWludCB4ID0gd2ViZ2xfdG9Vbm9ybTE2KHYueCk7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgdWludCB5ID0gd2ViZ2xfdG9Vbm9y
bTE2KHYueSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuICh5
IDw8IDE2KSB8IHg7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKICAg
ICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wUGFja0hhbGYyeDE2LCBmbG9hdDIsCi0gICAg
ICAgICJ1aW50IHdlYmdsX3BhY2tIYWxmMngxNl9lbXUoaW4gZmxvYXQyIHYpIHtcbiIKLSAgICAg
ICAgIiAgICB1aW50IHggPSBmMzJ0b2YxNih2LngpO1xuIgotICAgICAgICAiICAgIHVpbnQgeSA9
IGYzMnRvZjE2KHYueSk7XG4iCi0gICAgICAgICIgICAgcmV0dXJuICh5IDw8IDE2KSB8IHg7XG4i
Ci0gICAgICAgICJ9XG4iKTsKLQotICAgIFRUeXBlICp1aW50MSA9IG5ldyBUVHlwZShFYnRVSW50
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVpbnQgd2ViZ2xfcGFja0hhbGYyeDE2
X2VtdShpbiBmbG9hdDIgdikge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAg
IHVpbnQgeCA9IGYzMnRvZjE2KHYueCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIgICAgdWludCB5ID0gZjMydG9mMTYodi55KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICByZXR1cm4gKHkgPDwgMTYpIHwgeDtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIn1cbiIpOwogCiAgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcFVucGFj
a1Nub3JtMngxNiwgdWludDEsCi0gICAgICAgICJmbG9hdCB3ZWJnbF9mcm9tU25vcm0oaW4gdWlu
dCB4KSB7XG4iCi0gICAgICAgICIgICAgaW50IHhpID0gYXNpbnQoeCAmIDB4N2ZmZnUpIC0gYXNp
bnQoeCAmIDB4ODAwMHUpO1xuIgotICAgICAgICAiICAgIHJldHVybiBjbGFtcChmbG9hdCh4aSkg
LyAzMjc2Ny4wLCAtMS4wLCAxLjApO1xuIgotICAgICAgICAifVxuIgotICAgICAgICAiXG4iCi0g
ICAgICAgICJmbG9hdDIgd2ViZ2xfdW5wYWNrU25vcm0yeDE2X2VtdShpbiB1aW50IHUpIHtcbiIK
LSAgICAgICAgIiAgICB1aW50IHkgPSAodSA+PiAxNik7XG4iCi0gICAgICAgICIgICAgdWludCB4
ID0gdTtcbiIKLSAgICAgICAgIiAgICByZXR1cm4gZmxvYXQyKHdlYmdsX2Zyb21Tbm9ybSh4KSwg
d2ViZ2xfZnJvbVNub3JtKHkpKTtcbiIKLSAgICAgICAgIn1cbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZmxvYXQgd2ViZ2xfZnJvbVNub3JtMTYoaW4gdWludCB4KSB7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgaW50IHhpID0gYXNpbnQoeCAmIDB4N2Zm
ZnUpIC0gYXNpbnQoeCAmIDB4ODAwMHUpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgIHJldHVybiBjbGFtcChmbG9hdCh4aSkgLyAzMjc2Ny4wLCAtMS4wLCAxLjApO1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDIgd2ViZ2xf
dW5wYWNrU25vcm0yeDE2X2VtdShpbiB1aW50IHUpIHtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICB1aW50IHkgPSAodSA+PiAxNik7XG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIgICAgdWludCB4ID0gdTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiAgICByZXR1cm4gZmxvYXQyKHdlYmdsX2Zyb21Tbm9ybTE2KHgpLCB3ZWJnbF9mcm9tU25v
cm0xNih5KSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKICAgICBl
bXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wVW5wYWNrVW5vcm0yeDE2LCB1aW50MSwKLSAgICAg
ICAgImZsb2F0IHdlYmdsX2Zyb21Vbm9ybShpbiB1aW50IHgpIHtcbiIKLSAgICAgICAgIiAgICBy
ZXR1cm4gZmxvYXQoeCkgLyA2NTUzNS4wO1xuIgotICAgICAgICAifVxuIgotICAgICAgICAiXG4i
Ci0gICAgICAgICJmbG9hdDIgd2ViZ2xfdW5wYWNrVW5vcm0yeDE2X2VtdShpbiB1aW50IHUpIHtc
biIKLSAgICAgICAgIiAgICB1aW50IHkgPSAodSA+PiAxNik7XG4iCi0gICAgICAgICIgICAgdWlu
dCB4ID0gdSAmIDB4ZmZmZnU7XG4iCi0gICAgICAgICIgICAgcmV0dXJuIGZsb2F0Mih3ZWJnbF9m
cm9tVW5vcm0oeCksIHdlYmdsX2Zyb21Vbm9ybSh5KSk7XG4iCi0gICAgICAgICJ9XG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0IHdlYmdsX2Zyb21Vbm9ybTE2KGluIHVp
bnQgeCkge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiBmbG9h
dCh4KSAvIDY1NTM1LjA7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImZsb2F0MiB3ZWJnbF91bnBhY2tVbm9ybTJ4MTZfZW11KGluIHVpbnQgdSkge1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHVpbnQgeSA9ICh1ID4+IDE2KTtcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB1aW50IHggPSB1ICYgMHhmZmZmdTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gZmxvYXQyKHdlYmds
X2Zyb21Vbm9ybTE2KHgpLCB3ZWJnbF9mcm9tVW5vcm0xNih5KSk7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ9XG4iKTsKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9w
VW5wYWNrSGFsZjJ4MTYsIHVpbnQxLAotICAgICAgICAiZmxvYXQyIHdlYmdsX3VucGFja0hhbGYy
eDE2X2VtdShpbiB1aW50IHUpIHtcbiIKLSAgICAgICAgIiAgICB1aW50IHkgPSAodSA+PiAxNik7
XG4iCi0gICAgICAgICIgICAgdWludCB4ID0gdSAmIDB4ZmZmZnU7XG4iCi0gICAgICAgICIgICAg
cmV0dXJuIGZsb2F0MihmMTZ0b2YzMih4KSwgZjE2dG9mMzIoeSkpO1xuIgotICAgICAgICAifVxu
Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDIgd2ViZ2xfdW5wYWNrSGFs
ZjJ4MTZfZW11KGluIHVpbnQgdSkge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ICAgIHVpbnQgeSA9ICh1ID4+IDE2KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiAgICB1aW50IHggPSB1ICYgMHhmZmZmdTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIiAgICByZXR1cm4gZmxvYXQyKGYxNnRvZjMyKHgpLCBmMTZ0b2YzMih5KSk7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKKworICAgIGVtdS0+YWRkRW11bGF0ZWRG
dW5jdGlvbihFT3BQYWNrU25vcm00eDgsIGZsb2F0NCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImludCB3ZWJnbF90b1Nub3JtOChpbiBmbG9hdCB4KSB7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIGludChyb3VuZChjbGFtcCh4LCAtMS4wLCAxLjAp
ICogMTI3LjApKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAidWludCB3ZWJnbF9wYWNrU25vcm00eDhfZW11KGluIGZsb2F0NCB2KSB7XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIgICAgaW50IHggPSB3ZWJnbF90b1Nub3JtOCh2LngpO1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGludCB5ID0gd2ViZ2xfdG9Tbm9y
bTgodi55KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBpbnQgeiA9IHdl
YmdsX3RvU25vcm04KHYueik7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAg
aW50IHcgPSB3ZWJnbF90b1Nub3JtOCh2LncpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIHJldHVybiAoKGFzdWludCh3KSAmIDB4ZmZ1KSA8PCAyNCkgfCAoKGFzdWludCh6
KSAmIDB4ZmZ1KSA8PCAxNikgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifCAoKGFz
dWludCh5KSAmIDB4ZmZ1KSA8PCA4KSB8IChhc3VpbnQoeCkgJiAweGZmdSk7XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rp
b24oRU9wUGFja1Vub3JtNHg4LCBmbG9hdDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ1aW50IHdlYmdsX3RvVW5vcm04KGluIGZsb2F0IHgpIHtcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIiAgICByZXR1cm4gdWludChyb3VuZChjbGFtcCh4LCAwLjAsIDEuMCkgKiAy
NTUuMCkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1
aW50IHdlYmdsX3BhY2tVbm9ybTR4OF9lbXUoaW4gZmxvYXQ0IHYpIHtcbiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiAgICB1aW50IHggPSB3ZWJnbF90b1Vub3JtOCh2LngpO1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHVpbnQgeSA9IHdlYmdsX3RvVW5vcm04
KHYueSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgdWludCB6ID0gd2Vi
Z2xfdG9Vbm9ybTgodi56KTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB1
aW50IHcgPSB3ZWJnbF90b1Vub3JtOCh2LncpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiICAgIHJldHVybiAodyA8PCAyNCkgfCAoeiA8PCAxNikgfCAoeSA8PCA4KSB8IHg7XG4i
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKKworICAgIGVtdS0+YWRkRW11
bGF0ZWRGdW5jdGlvbihFT3BVbnBhY2tTbm9ybTR4OCwgdWludDEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJmbG9hdCB3ZWJnbF9mcm9tU25vcm04KGluIHVpbnQgeCkge1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGludCB4aSA9IGFzaW50KHggJiAweDdmdSkg
LSBhc2ludCh4ICYgMHg4MHUpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAg
IHJldHVybiBjbGFtcChmbG9hdCh4aSkgLyAxMjcuMCwgLTEuMCwgMS4wKTtcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQ0IHdlYmdsX3VucGFja1Nu
b3JtNHg4X2VtdShpbiB1aW50IHUpIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IiAgICB1aW50IHcgPSAodSA+PiAyNCk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIgICAgdWludCB6ID0gKHUgPj4gMTYpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgIHVpbnQgeSA9ICh1ID4+IDgpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgIHVpbnQgeCA9IHU7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAg
cmV0dXJuIGZsb2F0NCh3ZWJnbF9mcm9tU25vcm04KHgpLCB3ZWJnbF9mcm9tU25vcm04KHkpLCAi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3ZWJnbF9mcm9tU25vcm04KHopLCB3ZWJn
bF9mcm9tU25vcm04KHcpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIp
OworICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BVbnBhY2tVbm9ybTR4OCwgdWludDEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdCB3ZWJnbF9mcm9tVW5vcm04KGlu
IHVpbnQgeCkge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiBm
bG9hdCh4KSAvIDI1NS4wO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJmbG9hdDQgd2ViZ2xfdW5wYWNrVW5vcm00eDhfZW11KGluIHVpbnQgdSkge1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHVpbnQgdyA9ICh1ID4+IDI0KSAmIDB4
ZmZ1O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHVpbnQgeiA9ICh1ID4+
IDE2KSAmIDB4ZmZ1O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHVpbnQg
eSA9ICh1ID4+IDgpICYgMHhmZnU7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
ICAgdWludCB4ID0gdSAmIDB4ZmZ1O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ICAgIHJldHVybiBmbG9hdDQod2ViZ2xfZnJvbVVub3JtOCh4KSwgd2ViZ2xfZnJvbVVub3JtOCh5
KSwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2ViZ2xfZnJvbVVub3JtOCh6KSwg
d2ViZ2xfZnJvbVVub3JtOCh3KSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9
XG4iKTsKIAogICAgIC8vIFRoZSBtYXRyaXggcmVzdWx0aW5nIGZyb20gb3V0ZXIgcHJvZHVjdCBu
ZWVkcyB0byBiZSB0cmFuc3Bvc2VkCiAgICAgLy8gKG1hdHJpY2VzIGFyZSBzdG9yZWQgYXMgdHJh
bnNwb3NlZCB0byBzaW1wbGlmeSBlbGVtZW50IGFjY2VzcyBpbiBITFNMKS4KQEAgLTM0Myw0MiAr
NDc3LDQyIEBAIHZvaWQgSW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yRm9ySExTTChCdWlsdElu
RnVuY3Rpb25FbXVsYXRvciAqZW11KQogICAgIC8vIHRyYW5zcG9zZSBvZiByLCB3ZSBzaW1wbHkg
Y2FuIGJ1aWxkIGEgY29sdW1uIG1hdHJpeCBvdXQgb2YgdGhlIG9yaWdpbmFsCiAgICAgLy8gdmVj
dG9yIGluc3RlYWQgb2YgYSByb3cgbWF0cml4LgogICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlv
bihFT3BPdXRlclByb2R1Y3QsIGZsb2F0MiwgZmxvYXQyLAotICAgICAgICAiZmxvYXQyeDIgd2Vi
Z2xfb3V0ZXJQcm9kdWN0X2VtdShpbiBmbG9hdDIgYywgaW4gZmxvYXQyIHIpIHtcbiIKLSAgICAg
ICAgIiAgICByZXR1cm4gbXVsKGZsb2F0MngxKHIpLCBmbG9hdDF4MihjKSk7XG4iCi0gICAgICAg
ICJ9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0MngyIHdlYmdsX291
dGVyUHJvZHVjdF9lbXUoaW4gZmxvYXQyIGMsIGluIGZsb2F0MiByKSB7XG4iCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIG11bChmbG9hdDJ4MShyKSwgZmxvYXQxeDIo
YykpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIik7CiAgICAgZW11LT5h
ZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcE91dGVyUHJvZHVjdCwgZmxvYXQzLCBmbG9hdDMsCi0gICAg
ICAgICJmbG9hdDN4MyB3ZWJnbF9vdXRlclByb2R1Y3RfZW11KGluIGZsb2F0MyBjLCBpbiBmbG9h
dDMgcikge1xuIgotICAgICAgICAiICAgIHJldHVybiBtdWwoZmxvYXQzeDEociksIGZsb2F0MXgz
KGMpKTtcbiIKLSAgICAgICAgIn1cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZmxvYXQzeDMgd2ViZ2xfb3V0ZXJQcm9kdWN0X2VtdShpbiBmbG9hdDMgYywgaW4gZmxvYXQzIHIp
IHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gbXVsKGZsb2F0
M3gxKHIpLCBmbG9hdDF4MyhjKSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9
XG4iKTsKICAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wT3V0ZXJQcm9kdWN0LCBmbG9h
dDQsIGZsb2F0NCwKLSAgICAgICAgImZsb2F0NHg0IHdlYmdsX291dGVyUHJvZHVjdF9lbXUoaW4g
ZmxvYXQ0IGMsIGluIGZsb2F0NCByKSB7XG4iCi0gICAgICAgICIgICAgcmV0dXJuIG11bChmbG9h
dDR4MShyKSwgZmxvYXQxeDQoYykpO1xuIgotICAgICAgICAifVxuIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJmbG9hdDR4NCB3ZWJnbF9vdXRlclByb2R1Y3RfZW11KGluIGZsb2F0
NCBjLCBpbiBmbG9hdDQgcikge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAg
IHJldHVybiBtdWwoZmxvYXQ0eDEociksIGZsb2F0MXg0KGMpKTtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIn1cbiIpOwogCiAgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVP
cE91dGVyUHJvZHVjdCwgZmxvYXQzLCBmbG9hdDIsCi0gICAgICAgICJmbG9hdDJ4MyB3ZWJnbF9v
dXRlclByb2R1Y3RfZW11KGluIGZsb2F0MyBjLCBpbiBmbG9hdDIgcikge1xuIgotICAgICAgICAi
ICAgIHJldHVybiBtdWwoZmxvYXQyeDEociksIGZsb2F0MXgzKGMpKTtcbiIKLSAgICAgICAgIn1c
biIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQyeDMgd2ViZ2xfb3V0ZXJQ
cm9kdWN0X2VtdShpbiBmbG9hdDMgYywgaW4gZmxvYXQyIHIpIHtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIiAgICByZXR1cm4gbXVsKGZsb2F0MngxKHIpLCBmbG9hdDF4MyhjKSk7
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKICAgICBlbXUtPmFkZEVt
dWxhdGVkRnVuY3Rpb24oRU9wT3V0ZXJQcm9kdWN0LCBmbG9hdDIsIGZsb2F0MywKLSAgICAgICAg
ImZsb2F0M3gyIHdlYmdsX291dGVyUHJvZHVjdF9lbXUoaW4gZmxvYXQyIGMsIGluIGZsb2F0MyBy
KSB7XG4iCi0gICAgICAgICIgICAgcmV0dXJuIG11bChmbG9hdDN4MShyKSwgZmxvYXQxeDIoYykp
O1xuIgotICAgICAgICAifVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9h
dDN4MiB3ZWJnbF9vdXRlclByb2R1Y3RfZW11KGluIGZsb2F0MiBjLCBpbiBmbG9hdDMgcikge1xu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiBtdWwoZmxvYXQzeDEo
ciksIGZsb2F0MXgyKGMpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIp
OwogICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BPdXRlclByb2R1Y3QsIGZsb2F0NCwg
ZmxvYXQyLAotICAgICAgICAiZmxvYXQyeDQgd2ViZ2xfb3V0ZXJQcm9kdWN0X2VtdShpbiBmbG9h
dDQgYywgaW4gZmxvYXQyIHIpIHtcbiIKLSAgICAgICAgIiAgICByZXR1cm4gbXVsKGZsb2F0Mngx
KHIpLCBmbG9hdDF4NChjKSk7XG4iCi0gICAgICAgICJ9XG4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImZsb2F0Mng0IHdlYmdsX291dGVyUHJvZHVjdF9lbXUoaW4gZmxvYXQ0IGMs
IGluIGZsb2F0MiByKSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0
dXJuIG11bChmbG9hdDJ4MShyKSwgZmxvYXQxeDQoYykpO1xuIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAifVxuIik7CiAgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcE91dGVy
UHJvZHVjdCwgZmxvYXQyLCBmbG9hdDQsCi0gICAgICAgICJmbG9hdDR4MiB3ZWJnbF9vdXRlclBy
b2R1Y3RfZW11KGluIGZsb2F0MiBjLCBpbiBmbG9hdDQgcikge1xuIgotICAgICAgICAiICAgIHJl
dHVybiBtdWwoZmxvYXQ0eDEociksIGZsb2F0MXgyKGMpKTtcbiIKLSAgICAgICAgIn1cbiIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmxvYXQ0eDIgd2ViZ2xfb3V0ZXJQcm9kdWN0
X2VtdShpbiBmbG9hdDIgYywgaW4gZmxvYXQ0IHIpIHtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICByZXR1cm4gbXVsKGZsb2F0NHgxKHIpLCBmbG9hdDF4MihjKSk7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKICAgICBlbXUtPmFkZEVtdWxhdGVk
RnVuY3Rpb24oRU9wT3V0ZXJQcm9kdWN0LCBmbG9hdDQsIGZsb2F0MywKLSAgICAgICAgImZsb2F0
M3g0IHdlYmdsX291dGVyUHJvZHVjdF9lbXUoaW4gZmxvYXQ0IGMsIGluIGZsb2F0MyByKSB7XG4i
Ci0gICAgICAgICIgICAgcmV0dXJuIG11bChmbG9hdDN4MShyKSwgZmxvYXQxeDQoYykpO1xuIgot
ICAgICAgICAifVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdDN4NCB3
ZWJnbF9vdXRlclByb2R1Y3RfZW11KGluIGZsb2F0NCBjLCBpbiBmbG9hdDMgcikge1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiBtdWwoZmxvYXQzeDEociksIGZs
b2F0MXg0KGMpKTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIpOwogICAg
IGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BPdXRlclByb2R1Y3QsIGZsb2F0MywgZmxvYXQ0
LAotICAgICAgICAiZmxvYXQ0eDMgd2ViZ2xfb3V0ZXJQcm9kdWN0X2VtdShpbiBmbG9hdDMgYywg
aW4gZmxvYXQ0IHIpIHtcbiIKLSAgICAgICAgIiAgICByZXR1cm4gbXVsKGZsb2F0NHgxKHIpLCBm
bG9hdDF4MyhjKSk7XG4iCi0gICAgICAgICJ9XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImZsb2F0NHgzIHdlYmdsX291dGVyUHJvZHVjdF9lbXUoaW4gZmxvYXQzIGMsIGluIGZs
b2F0NCByKSB7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIG11
bChmbG9hdDR4MShyKSwgZmxvYXQxeDMoYykpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAifVxuIik7CiAKICAgICBUVHlwZSAqbWF0MiA9IG5ldyBUVHlwZShFYnRGbG9hdCwgMiwg
Mik7CiAgICAgVFR5cGUgKm1hdDMgPSBuZXcgVFR5cGUoRWJ0RmxvYXQsIDMsIDMpOwpAQCAtNDAw
LDE0ICs1MzQsMTUgQEAgdm9pZCBJbml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JGb3JITFNMKEJ1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUpCiAgICAgLy8gZm9yIHNpbmd1bGFyIG9yIHBvb3Js
eS1jb25kaXRpb25lZCBtYXRyaWNlcy4KIAogICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihF
T3BJbnZlcnNlLCBtYXQyLAotICAgICAgICAiZmxvYXQyeDIgd2ViZ2xfaW52ZXJzZV9lbXUoaW4g
ZmxvYXQyeDIgbSkge1xuIgotICAgICAgICAiICAgIGZsb2F0MngyIGNvZiA9IHsgbVsxXVsxXSwg
LW1bMF1bMV0sIC1tWzFdWzBdLCBtWzBdWzBdIH07XG4iCi0gICAgICAgICIgICAgcmV0dXJuIGNv
ZiAvIGRldGVybWluYW50KHRyYW5zcG9zZShtKSk7XG4iCi0gICAgICAgICJ9XG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImZsb2F0MngyIHdlYmdsX2ludmVyc2VfZW11KGluIGZs
b2F0MngyIG0pIHtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBmbG9hdDJ4
MiBjb2YgPSB7IG1bMV1bMV0sIC1tWzBdWzFdLCAtbVsxXVswXSwgbVswXVswXSB9O1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiBjb2YgLyBkZXRlcm1pbmFudCh0
cmFuc3Bvc2UobSkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIik7CiAK
ICAgICAvLyBjb2ZBQiBpcyB0aGUgY29mYWN0b3IgZm9yIGNvbHVtbiBBIGFuZCByb3cgQi4KIAot
ICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BJbnZlcnNlLCBtYXQzLAorICAgIGVtdS0+
YWRkRW11bGF0ZWRGdW5jdGlvbigKKyAgICAgICAgRU9wSW52ZXJzZSwgbWF0MywKICAgICAgICAg
ImZsb2F0M3gzIHdlYmdsX2ludmVyc2VfZW11KGluIGZsb2F0M3gzIG0pIHtcbiIKICAgICAgICAg
IiAgICBmbG9hdCBjb2YwMCA9IG1bMV1bMV0gKiBtWzJdWzJdIC0gbVsyXVsxXSAqIG1bMV1bMl07
XG4iCiAgICAgICAgICIgICAgZmxvYXQgY29mMDEgPSAtKG1bMV1bMF0gKiBtWzJdWzJdIC0gbVsy
XVswXSAqIG1bMV1bMl0pO1xuIgpAQCAtNDIyLDQyICs1NTcsNzUgQEAgdm9pZCBJbml0QnVpbHRJ
bkZ1bmN0aW9uRW11bGF0b3JGb3JITFNMKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUpCiAg
ICAgICAgICIgICAgcmV0dXJuIGNvZiAvIGRldGVybWluYW50KHRyYW5zcG9zZShtKSk7XG4iCiAg
ICAgICAgICJ9XG4iKTsKIAotICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BJbnZlcnNl
LCBtYXQ0LAorICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbigKKyAgICAgICAgRU9wSW52ZXJz
ZSwgbWF0NCwKICAgICAgICAgImZsb2F0NHg0IHdlYmdsX2ludmVyc2VfZW11KGluIGZsb2F0NHg0
IG0pIHtcbiIKLSAgICAgICAgIiAgICBmbG9hdCBjb2YwMCA9IG1bMV1bMV0gKiBtWzJdWzJdICog
bVszXVszXSArIG1bMl1bMV0gKiBtWzNdWzJdICogbVsxXVszXSArIG1bM11bMV0gKiBtWzFdWzJd
ICogbVsyXVszXSIKLSAgICAgICAgICAgICAgICAgICAgICAgIiAtIG1bMV1bMV0gKiBtWzNdWzJd
ICogbVsyXVszXSAtIG1bMl1bMV0gKiBtWzFdWzJdICogbVszXVszXSAtIG1bM11bMV0gKiBtWzJd
WzJdICogbVsxXVszXTtcbiIKLSAgICAgICAgIiAgICBmbG9hdCBjb2YwMSA9IC0obVsxXVswXSAq
IG1bMl1bMl0gKiBtWzNdWzNdICsgbVsyXVswXSAqIG1bM11bMl0gKiBtWzFdWzNdICsgbVszXVsw
XSAqIG1bMV1bMl0gKiBtWzJdWzNdIgotICAgICAgICAgICAgICAgICAgICAgICAiIC0gbVsxXVsw
XSAqIG1bM11bMl0gKiBtWzJdWzNdIC0gbVsyXVswXSAqIG1bMV1bMl0gKiBtWzNdWzNdIC0gbVsz
XVswXSAqIG1bMl1bMl0gKiBtWzFdWzNdKTtcbiIKLSAgICAgICAgIiAgICBmbG9hdCBjb2YwMiA9
IG1bMV1bMF0gKiBtWzJdWzFdICogbVszXVszXSArIG1bMl1bMF0gKiBtWzNdWzFdICogbVsxXVsz
XSArIG1bM11bMF0gKiBtWzFdWzFdICogbVsyXVszXSIKLSAgICAgICAgICAgICAgICAgICAgICAg
IiAtIG1bMV1bMF0gKiBtWzNdWzFdICogbVsyXVszXSAtIG1bMl1bMF0gKiBtWzFdWzFdICogbVsz
XVszXSAtIG1bM11bMF0gKiBtWzJdWzFdICogbVsxXVszXTtcbiIKLSAgICAgICAgIiAgICBmbG9h
dCBjb2YwMyA9IC0obVsxXVswXSAqIG1bMl1bMV0gKiBtWzNdWzJdICsgbVsyXVswXSAqIG1bM11b
MV0gKiBtWzFdWzJdICsgbVszXVswXSAqIG1bMV1bMV0gKiBtWzJdWzJdIgotICAgICAgICAgICAg
ICAgICAgICAgICAiIC0gbVsxXVswXSAqIG1bM11bMV0gKiBtWzJdWzJdIC0gbVsyXVswXSAqIG1b
MV1bMV0gKiBtWzNdWzJdIC0gbVszXVswXSAqIG1bMl1bMV0gKiBtWzFdWzJdKTtcbiIKLSAgICAg
ICAgIiAgICBmbG9hdCBjb2YxMCA9IC0obVswXVsxXSAqIG1bMl1bMl0gKiBtWzNdWzNdICsgbVsy
XVsxXSAqIG1bM11bMl0gKiBtWzBdWzNdICsgbVszXVsxXSAqIG1bMF1bMl0gKiBtWzJdWzNdIgot
ICAgICAgICAgICAgICAgICAgICAgICAiIC0gbVswXVsxXSAqIG1bM11bMl0gKiBtWzJdWzNdIC0g
bVsyXVsxXSAqIG1bMF1bMl0gKiBtWzNdWzNdIC0gbVszXVsxXSAqIG1bMl1bMl0gKiBtWzBdWzNd
KTtcbiIKLSAgICAgICAgIiAgICBmbG9hdCBjb2YxMSA9IG1bMF1bMF0gKiBtWzJdWzJdICogbVsz
XVszXSArIG1bMl1bMF0gKiBtWzNdWzJdICogbVswXVszXSArIG1bM11bMF0gKiBtWzBdWzJdICog
bVsyXVszXSIKLSAgICAgICAgICAgICAgICAgICAgICAgIiAtIG1bMF1bMF0gKiBtWzNdWzJdICog
bVsyXVszXSAtIG1bMl1bMF0gKiBtWzBdWzJdICogbVszXVszXSAtIG1bM11bMF0gKiBtWzJdWzJd
ICogbVswXVszXTtcbiIKLSAgICAgICAgIiAgICBmbG9hdCBjb2YxMiA9IC0obVswXVswXSAqIG1b
Ml1bMV0gKiBtWzNdWzNdICsgbVsyXVswXSAqIG1bM11bMV0gKiBtWzBdWzNdICsgbVszXVswXSAq
IG1bMF1bMV0gKiBtWzJdWzNdIgotICAgICAgICAgICAgICAgICAgICAgICAiIC0gbVswXVswXSAq
IG1bM11bMV0gKiBtWzJdWzNdIC0gbVsyXVswXSAqIG1bMF1bMV0gKiBtWzNdWzNdIC0gbVszXVsw
XSAqIG1bMl1bMV0gKiBtWzBdWzNdKTtcbiIKLSAgICAgICAgIiAgICBmbG9hdCBjb2YxMyA9IG1b
MF1bMF0gKiBtWzJdWzFdICogbVszXVsyXSArIG1bMl1bMF0gKiBtWzNdWzFdICogbVswXVsyXSAr
IG1bM11bMF0gKiBtWzBdWzFdICogbVsyXVsyXSIKLSAgICAgICAgICAgICAgICAgICAgICAgIiAt
IG1bMF1bMF0gKiBtWzNdWzFdICogbVsyXVsyXSAtIG1bMl1bMF0gKiBtWzBdWzFdICogbVszXVsy
XSAtIG1bM11bMF0gKiBtWzJdWzFdICogbVswXVsyXTtcbiIKLSAgICAgICAgIiAgICBmbG9hdCBj
b2YyMCA9IG1bMF1bMV0gKiBtWzFdWzJdICogbVszXVszXSArIG1bMV1bMV0gKiBtWzNdWzJdICog
bVswXVszXSArIG1bM11bMV0gKiBtWzBdWzJdICogbVsxXVszXSIKLSAgICAgICAgICAgICAgICAg
ICAgICAgIiAtIG1bMF1bMV0gKiBtWzNdWzJdICogbVsxXVszXSAtIG1bMV1bMV0gKiBtWzBdWzJd
ICogbVszXVszXSAtIG1bM11bMV0gKiBtWzFdWzJdICogbVswXVszXTtcbiIKLSAgICAgICAgIiAg
ICBmbG9hdCBjb2YyMSA9IC0obVswXVswXSAqIG1bMV1bMl0gKiBtWzNdWzNdICsgbVsxXVswXSAq
IG1bM11bMl0gKiBtWzBdWzNdICsgbVszXVswXSAqIG1bMF1bMl0gKiBtWzFdWzNdIgotICAgICAg
ICAgICAgICAgICAgICAgICAiIC0gbVswXVswXSAqIG1bM11bMl0gKiBtWzFdWzNdIC0gbVsxXVsw
XSAqIG1bMF1bMl0gKiBtWzNdWzNdIC0gbVszXVswXSAqIG1bMV1bMl0gKiBtWzBdWzNdKTtcbiIK
LSAgICAgICAgIiAgICBmbG9hdCBjb2YyMiA9IG1bMF1bMF0gKiBtWzFdWzFdICogbVszXVszXSAr
IG1bMV1bMF0gKiBtWzNdWzFdICogbVswXVszXSArIG1bM11bMF0gKiBtWzBdWzFdICogbVsxXVsz
XSIKLSAgICAgICAgICAgICAgICAgICAgICAgIiAtIG1bMF1bMF0gKiBtWzNdWzFdICogbVsxXVsz
XSAtIG1bMV1bMF0gKiBtWzBdWzFdICogbVszXVszXSAtIG1bM11bMF0gKiBtWzFdWzFdICogbVsw
XVszXTtcbiIKLSAgICAgICAgIiAgICBmbG9hdCBjb2YyMyA9IC0obVswXVswXSAqIG1bMV1bMV0g
KiBtWzNdWzJdICsgbVsxXVswXSAqIG1bM11bMV0gKiBtWzBdWzJdICsgbVszXVswXSAqIG1bMF1b
MV0gKiBtWzFdWzJdIgotICAgICAgICAgICAgICAgICAgICAgICAiIC0gbVswXVswXSAqIG1bM11b
MV0gKiBtWzFdWzJdIC0gbVsxXVswXSAqIG1bMF1bMV0gKiBtWzNdWzJdIC0gbVszXVswXSAqIG1b
MV1bMV0gKiBtWzBdWzJdKTtcbiIKLSAgICAgICAgIiAgICBmbG9hdCBjb2YzMCA9IC0obVswXVsx
XSAqIG1bMV1bMl0gKiBtWzJdWzNdICsgbVsxXVsxXSAqIG1bMl1bMl0gKiBtWzBdWzNdICsgbVsy
XVsxXSAqIG1bMF1bMl0gKiBtWzFdWzNdIgotICAgICAgICAgICAgICAgICAgICAgICAiIC0gbVsw
XVsxXSAqIG1bMl1bMl0gKiBtWzFdWzNdIC0gbVsxXVsxXSAqIG1bMF1bMl0gKiBtWzJdWzNdIC0g
bVsyXVsxXSAqIG1bMV1bMl0gKiBtWzBdWzNdKTtcbiIKLSAgICAgICAgIiAgICBmbG9hdCBjb2Yz
MSA9IG1bMF1bMF0gKiBtWzFdWzJdICogbVsyXVszXSArIG1bMV1bMF0gKiBtWzJdWzJdICogbVsw
XVszXSArIG1bMl1bMF0gKiBtWzBdWzJdICogbVsxXVszXSIKLSAgICAgICAgICAgICAgICAgICAg
ICAgIiAtIG1bMF1bMF0gKiBtWzJdWzJdICogbVsxXVszXSAtIG1bMV1bMF0gKiBtWzBdWzJdICog
bVsyXVszXSAtIG1bMl1bMF0gKiBtWzFdWzJdICogbVswXVszXTtcbiIKLSAgICAgICAgIiAgICBm
bG9hdCBjb2YzMiA9IC0obVswXVswXSAqIG1bMV1bMV0gKiBtWzJdWzNdICsgbVsxXVswXSAqIG1b
Ml1bMV0gKiBtWzBdWzNdICsgbVsyXVswXSAqIG1bMF1bMV0gKiBtWzFdWzNdIgotICAgICAgICAg
ICAgICAgICAgICAgICAiIC0gbVswXVswXSAqIG1bMl1bMV0gKiBtWzFdWzNdIC0gbVsxXVswXSAq
IG1bMF1bMV0gKiBtWzJdWzNdIC0gbVsyXVswXSAqIG1bMV1bMV0gKiBtWzBdWzNdKTtcbiIKLSAg
ICAgICAgIiAgICBmbG9hdCBjb2YzMyA9IG1bMF1bMF0gKiBtWzFdWzFdICogbVsyXVsyXSArIG1b
MV1bMF0gKiBtWzJdWzFdICogbVswXVsyXSArIG1bMl1bMF0gKiBtWzBdWzFdICogbVsxXVsyXSIK
LSAgICAgICAgICAgICAgICAgICAgICAgIiAtIG1bMF1bMF0gKiBtWzJdWzFdICogbVsxXVsyXSAt
IG1bMV1bMF0gKiBtWzBdWzFdICogbVsyXVsyXSAtIG1bMl1bMF0gKiBtWzFdWzFdICogbVswXVsy
XTtcbiIKKyAgICAgICAgIiAgICBmbG9hdCBjb2YwMCA9IG1bMV1bMV0gKiBtWzJdWzJdICogbVsz
XVszXSArIG1bMl1bMV0gKiBtWzNdWzJdICogbVsxXVszXSArIG1bM11bMV0gKiAiCisgICAgICAg
ICJtWzFdWzJdICogbVsyXVszXSIKKyAgICAgICAgIiAtIG1bMV1bMV0gKiBtWzNdWzJdICogbVsy
XVszXSAtIG1bMl1bMV0gKiBtWzFdWzJdICogbVszXVszXSAtIG1bM11bMV0gKiBtWzJdWzJdICog
IgorICAgICAgICAibVsxXVszXTtcbiIKKyAgICAgICAgIiAgICBmbG9hdCBjb2YwMSA9IC0obVsx
XVswXSAqIG1bMl1bMl0gKiBtWzNdWzNdICsgbVsyXVswXSAqIG1bM11bMl0gKiBtWzFdWzNdICsg
bVszXVswXSAqICIKKyAgICAgICAgIm1bMV1bMl0gKiBtWzJdWzNdIgorICAgICAgICAiIC0gbVsx
XVswXSAqIG1bM11bMl0gKiBtWzJdWzNdIC0gbVsyXVswXSAqIG1bMV1bMl0gKiBtWzNdWzNdIC0g
bVszXVswXSAqIG1bMl1bMl0gKiAiCisgICAgICAgICJtWzFdWzNdKTtcbiIKKyAgICAgICAgIiAg
ICBmbG9hdCBjb2YwMiA9IG1bMV1bMF0gKiBtWzJdWzFdICogbVszXVszXSArIG1bMl1bMF0gKiBt
WzNdWzFdICogbVsxXVszXSArIG1bM11bMF0gKiAiCisgICAgICAgICJtWzFdWzFdICogbVsyXVsz
XSIKKyAgICAgICAgIiAtIG1bMV1bMF0gKiBtWzNdWzFdICogbVsyXVszXSAtIG1bMl1bMF0gKiBt
WzFdWzFdICogbVszXVszXSAtIG1bM11bMF0gKiBtWzJdWzFdICogIgorICAgICAgICAibVsxXVsz
XTtcbiIKKyAgICAgICAgIiAgICBmbG9hdCBjb2YwMyA9IC0obVsxXVswXSAqIG1bMl1bMV0gKiBt
WzNdWzJdICsgbVsyXVswXSAqIG1bM11bMV0gKiBtWzFdWzJdICsgbVszXVswXSAqICIKKyAgICAg
ICAgIm1bMV1bMV0gKiBtWzJdWzJdIgorICAgICAgICAiIC0gbVsxXVswXSAqIG1bM11bMV0gKiBt
WzJdWzJdIC0gbVsyXVswXSAqIG1bMV1bMV0gKiBtWzNdWzJdIC0gbVszXVswXSAqIG1bMl1bMV0g
KiAiCisgICAgICAgICJtWzFdWzJdKTtcbiIKKyAgICAgICAgIiAgICBmbG9hdCBjb2YxMCA9IC0o
bVswXVsxXSAqIG1bMl1bMl0gKiBtWzNdWzNdICsgbVsyXVsxXSAqIG1bM11bMl0gKiBtWzBdWzNd
ICsgbVszXVsxXSAqICIKKyAgICAgICAgIm1bMF1bMl0gKiBtWzJdWzNdIgorICAgICAgICAiIC0g
bVswXVsxXSAqIG1bM11bMl0gKiBtWzJdWzNdIC0gbVsyXVsxXSAqIG1bMF1bMl0gKiBtWzNdWzNd
IC0gbVszXVsxXSAqIG1bMl1bMl0gKiAiCisgICAgICAgICJtWzBdWzNdKTtcbiIKKyAgICAgICAg
IiAgICBmbG9hdCBjb2YxMSA9IG1bMF1bMF0gKiBtWzJdWzJdICogbVszXVszXSArIG1bMl1bMF0g
KiBtWzNdWzJdICogbVswXVszXSArIG1bM11bMF0gKiAiCisgICAgICAgICJtWzBdWzJdICogbVsy
XVszXSIKKyAgICAgICAgIiAtIG1bMF1bMF0gKiBtWzNdWzJdICogbVsyXVszXSAtIG1bMl1bMF0g
KiBtWzBdWzJdICogbVszXVszXSAtIG1bM11bMF0gKiBtWzJdWzJdICogIgorICAgICAgICAibVsw
XVszXTtcbiIKKyAgICAgICAgIiAgICBmbG9hdCBjb2YxMiA9IC0obVswXVswXSAqIG1bMl1bMV0g
KiBtWzNdWzNdICsgbVsyXVswXSAqIG1bM11bMV0gKiBtWzBdWzNdICsgbVszXVswXSAqICIKKyAg
ICAgICAgIm1bMF1bMV0gKiBtWzJdWzNdIgorICAgICAgICAiIC0gbVswXVswXSAqIG1bM11bMV0g
KiBtWzJdWzNdIC0gbVsyXVswXSAqIG1bMF1bMV0gKiBtWzNdWzNdIC0gbVszXVswXSAqIG1bMl1b
MV0gKiAiCisgICAgICAgICJtWzBdWzNdKTtcbiIKKyAgICAgICAgIiAgICBmbG9hdCBjb2YxMyA9
IG1bMF1bMF0gKiBtWzJdWzFdICogbVszXVsyXSArIG1bMl1bMF0gKiBtWzNdWzFdICogbVswXVsy
XSArIG1bM11bMF0gKiAiCisgICAgICAgICJtWzBdWzFdICogbVsyXVsyXSIKKyAgICAgICAgIiAt
IG1bMF1bMF0gKiBtWzNdWzFdICogbVsyXVsyXSAtIG1bMl1bMF0gKiBtWzBdWzFdICogbVszXVsy
XSAtIG1bM11bMF0gKiBtWzJdWzFdICogIgorICAgICAgICAibVswXVsyXTtcbiIKKyAgICAgICAg
IiAgICBmbG9hdCBjb2YyMCA9IG1bMF1bMV0gKiBtWzFdWzJdICogbVszXVszXSArIG1bMV1bMV0g
KiBtWzNdWzJdICogbVswXVszXSArIG1bM11bMV0gKiAiCisgICAgICAgICJtWzBdWzJdICogbVsx
XVszXSIKKyAgICAgICAgIiAtIG1bMF1bMV0gKiBtWzNdWzJdICogbVsxXVszXSAtIG1bMV1bMV0g
KiBtWzBdWzJdICogbVszXVszXSAtIG1bM11bMV0gKiBtWzFdWzJdICogIgorICAgICAgICAibVsw
XVszXTtcbiIKKyAgICAgICAgIiAgICBmbG9hdCBjb2YyMSA9IC0obVswXVswXSAqIG1bMV1bMl0g
KiBtWzNdWzNdICsgbVsxXVswXSAqIG1bM11bMl0gKiBtWzBdWzNdICsgbVszXVswXSAqICIKKyAg
ICAgICAgIm1bMF1bMl0gKiBtWzFdWzNdIgorICAgICAgICAiIC0gbVswXVswXSAqIG1bM11bMl0g
KiBtWzFdWzNdIC0gbVsxXVswXSAqIG1bMF1bMl0gKiBtWzNdWzNdIC0gbVszXVswXSAqIG1bMV1b
Ml0gKiAiCisgICAgICAgICJtWzBdWzNdKTtcbiIKKyAgICAgICAgIiAgICBmbG9hdCBjb2YyMiA9
IG1bMF1bMF0gKiBtWzFdWzFdICogbVszXVszXSArIG1bMV1bMF0gKiBtWzNdWzFdICogbVswXVsz
XSArIG1bM11bMF0gKiAiCisgICAgICAgICJtWzBdWzFdICogbVsxXVszXSIKKyAgICAgICAgIiAt
IG1bMF1bMF0gKiBtWzNdWzFdICogbVsxXVszXSAtIG1bMV1bMF0gKiBtWzBdWzFdICogbVszXVsz
XSAtIG1bM11bMF0gKiBtWzFdWzFdICogIgorICAgICAgICAibVswXVszXTtcbiIKKyAgICAgICAg
IiAgICBmbG9hdCBjb2YyMyA9IC0obVswXVswXSAqIG1bMV1bMV0gKiBtWzNdWzJdICsgbVsxXVsw
XSAqIG1bM11bMV0gKiBtWzBdWzJdICsgbVszXVswXSAqICIKKyAgICAgICAgIm1bMF1bMV0gKiBt
WzFdWzJdIgorICAgICAgICAiIC0gbVswXVswXSAqIG1bM11bMV0gKiBtWzFdWzJdIC0gbVsxXVsw
XSAqIG1bMF1bMV0gKiBtWzNdWzJdIC0gbVszXVswXSAqIG1bMV1bMV0gKiAiCisgICAgICAgICJt
WzBdWzJdKTtcbiIKKyAgICAgICAgIiAgICBmbG9hdCBjb2YzMCA9IC0obVswXVsxXSAqIG1bMV1b
Ml0gKiBtWzJdWzNdICsgbVsxXVsxXSAqIG1bMl1bMl0gKiBtWzBdWzNdICsgbVsyXVsxXSAqICIK
KyAgICAgICAgIm1bMF1bMl0gKiBtWzFdWzNdIgorICAgICAgICAiIC0gbVswXVsxXSAqIG1bMl1b
Ml0gKiBtWzFdWzNdIC0gbVsxXVsxXSAqIG1bMF1bMl0gKiBtWzJdWzNdIC0gbVsyXVsxXSAqIG1b
MV1bMl0gKiAiCisgICAgICAgICJtWzBdWzNdKTtcbiIKKyAgICAgICAgIiAgICBmbG9hdCBjb2Yz
MSA9IG1bMF1bMF0gKiBtWzFdWzJdICogbVsyXVszXSArIG1bMV1bMF0gKiBtWzJdWzJdICogbVsw
XVszXSArIG1bMl1bMF0gKiAiCisgICAgICAgICJtWzBdWzJdICogbVsxXVszXSIKKyAgICAgICAg
IiAtIG1bMF1bMF0gKiBtWzJdWzJdICogbVsxXVszXSAtIG1bMV1bMF0gKiBtWzBdWzJdICogbVsy
XVszXSAtIG1bMl1bMF0gKiBtWzFdWzJdICogIgorICAgICAgICAibVswXVszXTtcbiIKKyAgICAg
ICAgIiAgICBmbG9hdCBjb2YzMiA9IC0obVswXVswXSAqIG1bMV1bMV0gKiBtWzJdWzNdICsgbVsx
XVswXSAqIG1bMl1bMV0gKiBtWzBdWzNdICsgbVsyXVswXSAqICIKKyAgICAgICAgIm1bMF1bMV0g
KiBtWzFdWzNdIgorICAgICAgICAiIC0gbVswXVswXSAqIG1bMl1bMV0gKiBtWzFdWzNdIC0gbVsx
XVswXSAqIG1bMF1bMV0gKiBtWzJdWzNdIC0gbVsyXVswXSAqIG1bMV1bMV0gKiAiCisgICAgICAg
ICJtWzBdWzNdKTtcbiIKKyAgICAgICAgIiAgICBmbG9hdCBjb2YzMyA9IG1bMF1bMF0gKiBtWzFd
WzFdICogbVsyXVsyXSArIG1bMV1bMF0gKiBtWzJdWzFdICogbVswXVsyXSArIG1bMl1bMF0gKiAi
CisgICAgICAgICJtWzBdWzFdICogbVsxXVsyXSIKKyAgICAgICAgIiAtIG1bMF1bMF0gKiBtWzJd
WzFdICogbVsxXVsyXSAtIG1bMV1bMF0gKiBtWzBdWzFdICogbVsyXVsyXSAtIG1bMl1bMF0gKiBt
WzFdWzFdICogIgorICAgICAgICAibVswXVsyXTtcbiIKICAgICAgICAgIiAgICBmbG9hdDR4NCBj
b2YgPSB7IGNvZjAwLCBjb2YxMCwgY29mMjAsIGNvZjMwLCBjb2YwMSwgY29mMTEsIGNvZjIxLCBj
b2YzMSwiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBjb2YwMiwgY29mMTIsIGNvZjIy
LCBjb2YzMiwgY29mMDMsIGNvZjEzLCBjb2YyMywgY29mMzMgfTtcbiIKKyAgICAgICAgIiBjb2Yw
MiwgY29mMTIsIGNvZjIyLCBjb2YzMiwgY29mMDMsIGNvZjEzLCBjb2YyMywgY29mMzMgfTtcbiIK
ICAgICAgICAgIiAgICByZXR1cm4gY29mIC8gZGV0ZXJtaW5hbnQodHJhbnNwb3NlKG0pKTtcbiIK
ICAgICAgICAgIn1cbiIpOwogCkBAIC00NjcsMjggKzYzNSw0MTMgQEAgdm9pZCBJbml0QnVpbHRJ
bkZ1bmN0aW9uRW11bGF0b3JGb3JITFNMKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUpCiAg
ICAgVFR5cGUgKmJvb2w0ID0gbmV3IFRUeXBlKEVidEJvb2wsIDQpOwogCiAgICAgLy8gRW11bGF0
ZSBFU1NMMyB2YXJpYW50IG9mIG1peCB0aGF0IHRha2VzIGxhc3QgYXJndW1lbnQgYXMgYm9vbGVh
biB2ZWN0b3IuCi0gICAgLy8gZ2VuVHlwZSBtaXggKGdlblR5cGUgeCwgZ2VuVHlwZSB5LCBnZW5C
VHlwZSBhKTogU2VsZWN0cyB3aGljaCB2ZWN0b3IgZWFjaCByZXR1cm5lZCBjb21wb25lbnQgY29t
ZXMgZnJvbS4KLSAgICAvLyBGb3IgYSBjb21wb25lbnQgb2YgJ2EnIHRoYXQgaXMgZmFsc2UsIHRo
ZSBjb3JyZXNwb25kaW5nIGNvbXBvbmVudCBvZiAneCcgaXMgcmV0dXJuZWQuRm9yIGEgY29tcG9u
ZW50IG9mICdhJyB0aGF0IGlzIHRydWUsCisgICAgLy8gZ2VuVHlwZSBtaXggKGdlblR5cGUgeCwg
Z2VuVHlwZSB5LCBnZW5CVHlwZSBhKTogU2VsZWN0cyB3aGljaCB2ZWN0b3IgZWFjaCByZXR1cm5l
ZCBjb21wb25lbnQKKyAgICAvLyBjb21lcyBmcm9tLgorICAgIC8vIEZvciBhIGNvbXBvbmVudCBv
ZiAnYScgdGhhdCBpcyBmYWxzZSwgdGhlIGNvcnJlc3BvbmRpbmcgY29tcG9uZW50IG9mICd4JyBp
cyByZXR1cm5lZC5Gb3IgYQorICAgIC8vIGNvbXBvbmVudCBvZiAnYScgdGhhdCBpcyB0cnVlLAog
ICAgIC8vIHRoZSBjb3JyZXNwb25kaW5nIGNvbXBvbmVudCBvZiAneScgaXMgcmV0dXJuZWQuCiAg
ICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcE1peCwgZmxvYXQxLCBmbG9hdDEsIGJvb2wx
LAotICAgICAgICAiZmxvYXQgd2ViZ2xfbWl4X2VtdShmbG9hdCB4LCBmbG9hdCB5LCBib29sIGEp
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdCB3ZWJnbF9taXhfZW11KGZs
b2F0IHgsIGZsb2F0IHksIGJvb2wgYSlcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4gYSA/IHkgOiB4
O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxuIik7CisgICAgZW11LT5hZGRF
bXVsYXRlZEZ1bmN0aW9uKEVPcE1peCwgZmxvYXQyLCBmbG9hdDIsIGJvb2wyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZmxvYXQyIHdlYmdsX21peF9lbXUoZmxvYXQyIHgsIGZsb2F0
MiB5LCBib29sMiBhKVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiBhID8geSA6IHg7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVu
Y3Rpb24oRU9wTWl4LCBmbG9hdDMsIGZsb2F0MywgYm9vbDMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJmbG9hdDMgd2ViZ2xfbWl4X2VtdShmbG9hdDMgeCwgZmxvYXQzIHksIGJvb2wz
IGEpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIGEgPyB5IDogeDtcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIn1cbiIpOworICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BN
aXgsIGZsb2F0NCwgZmxvYXQ0LCBib29sNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImZsb2F0NCB3ZWJnbF9taXhfZW11KGZsb2F0NCB4LCBmbG9hdDQgeSwgYm9vbDQgYSlcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICByZXR1cm4gYSA/IHkgOiB4O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAifVxuIik7CisKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oCisgICAgICAgIEVP
cEJpdGZpZWxkRXh0cmFjdCwgdWludDEsIGludDEsIGludDEsCisgICAgICAgICJ1aW50IHdlYmds
X2JpdGZpZWxkRXh0cmFjdF9lbXUodWludCB2YWx1ZSwgaW50IG9mZnNldCwgaW50IGJpdHMpXG4i
CiAgICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgcmV0dXJuIGEgPyB5IDogeDtcbiIKKyAgICAg
ICAgIiAgICBpZiAob2Zmc2V0IDwgMCB8fCBiaXRzIDw9IDAgfHwgb2Zmc2V0ID49IDMyIHx8IGJp
dHMgPiAzMiB8fCBvZmZzZXQgKyBiaXRzID4gMzIpXG4iCisgICAgICAgICIgICAge1xuIgorICAg
ICAgICAiICAgICAgICByZXR1cm4gMHU7XG4iCisgICAgICAgICIgICAgfVxuIgorICAgICAgICAi
ICAgIHVpbnQgbWFza01zYiA9ICgxdSA8PCAoYml0cyAtIDEpKTtcbiIKKyAgICAgICAgIiAgICB1
aW50IG1hc2sgPSAoKG1hc2tNc2IgLSAxdSkgfCBtYXNrTXNiKSA8PCBvZmZzZXQ7XG4iCisgICAg
ICAgICIgICAgcmV0dXJuICh2YWx1ZSAmIG1hc2spID4+IG9mZnNldDtcbiIKICAgICAgICAgIn1c
biIpOwotICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BNaXgsIGZsb2F0MiwgZmxvYXQy
LCBib29sMiwKLSAgICAgICAgImZsb2F0MiB3ZWJnbF9taXhfZW11KGZsb2F0MiB4LCBmbG9hdDIg
eSwgYm9vbDIgYSlcbiIKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oCisgICAgICAgIEVP
cEJpdGZpZWxkRXh0cmFjdCwgdWludDIsIGludDEsIGludDEsCisgICAgICAgICJ1aW50MiB3ZWJn
bF9iaXRmaWVsZEV4dHJhY3RfZW11KHVpbnQyIHZhbHVlLCBpbnQgb2Zmc2V0LCBpbnQgYml0cylc
biIKICAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICByZXR1cm4gYSA/IHkgOiB4O1xuIgorICAg
ICAgICAiICAgIGlmIChvZmZzZXQgPCAwIHx8IGJpdHMgPD0gMCB8fCBvZmZzZXQgPj0gMzIgfHwg
Yml0cyA+IDMyIHx8IG9mZnNldCArIGJpdHMgPiAzMilcbiIKKyAgICAgICAgIiAgICB7XG4iCisg
ICAgICAgICIgICAgICAgIHJldHVybiB1aW50MigwdSwgMHUpO1xuIgorICAgICAgICAiICAgIH1c
biIKKyAgICAgICAgIiAgICB1aW50IG1hc2tNc2IgPSAoMXUgPDwgKGJpdHMgLSAxKSk7XG4iCisg
ICAgICAgICIgICAgdWludCBtYXNrID0gKChtYXNrTXNiIC0gMXUpIHwgbWFza01zYikgPDwgb2Zm
c2V0O1xuIgorICAgICAgICAiICAgIHJldHVybiAodmFsdWUgJiBtYXNrKSA+PiBvZmZzZXQ7XG4i
CiAgICAgICAgICJ9XG4iKTsKLSAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wTWl4LCBm
bG9hdDMsIGZsb2F0MywgYm9vbDMsCi0gICAgICAgICJmbG9hdDMgd2ViZ2xfbWl4X2VtdShmbG9h
dDMgeCwgZmxvYXQzIHksIGJvb2wzIGEpXG4iCisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9u
KAorICAgICAgICBFT3BCaXRmaWVsZEV4dHJhY3QsIHVpbnQzLCBpbnQxLCBpbnQxLAorICAgICAg
ICAidWludDMgd2ViZ2xfYml0ZmllbGRFeHRyYWN0X2VtdSh1aW50MyB2YWx1ZSwgaW50IG9mZnNl
dCwgaW50IGJpdHMpXG4iCiAgICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgcmV0dXJuIGEgPyB5
IDogeDtcbiIKKyAgICAgICAgIiAgICBpZiAob2Zmc2V0IDwgMCB8fCBiaXRzIDw9IDAgfHwgb2Zm
c2V0ID49IDMyIHx8IGJpdHMgPiAzMiB8fCBvZmZzZXQgKyBiaXRzID4gMzIpXG4iCisgICAgICAg
ICIgICAge1xuIgorICAgICAgICAiICAgICAgICByZXR1cm4gdWludDMoMHUsIDB1LCAwdSk7XG4i
CisgICAgICAgICIgICAgfVxuIgorICAgICAgICAiICAgIHVpbnQgbWFza01zYiA9ICgxdSA8PCAo
Yml0cyAtIDEpKTtcbiIKKyAgICAgICAgIiAgICB1aW50IG1hc2sgPSAoKG1hc2tNc2IgLSAxdSkg
fCBtYXNrTXNiKSA8PCBvZmZzZXQ7XG4iCisgICAgICAgICIgICAgcmV0dXJuICh2YWx1ZSAmIG1h
c2spID4+IG9mZnNldDtcbiIKICAgICAgICAgIn1cbiIpOwotICAgIGVtdS0+YWRkRW11bGF0ZWRG
dW5jdGlvbihFT3BNaXgsIGZsb2F0NCwgZmxvYXQ0LCBib29sNCwKLSAgICAgICAgImZsb2F0NCB3
ZWJnbF9taXhfZW11KGZsb2F0NCB4LCBmbG9hdDQgeSwgYm9vbDQgYSlcbiIKKyAgICBlbXUtPmFk
ZEVtdWxhdGVkRnVuY3Rpb24oCisgICAgICAgIEVPcEJpdGZpZWxkRXh0cmFjdCwgdWludDQsIGlu
dDEsIGludDEsCisgICAgICAgICJ1aW50NCB3ZWJnbF9iaXRmaWVsZEV4dHJhY3RfZW11KHVpbnQ0
IHZhbHVlLCBpbnQgb2Zmc2V0LCBpbnQgYml0cylcbiIKICAgICAgICAgIntcbiIKLSAgICAgICAg
IiAgICByZXR1cm4gYSA/IHkgOiB4O1xuIgorICAgICAgICAiICAgIGlmIChvZmZzZXQgPCAwIHx8
IGJpdHMgPD0gMCB8fCBvZmZzZXQgPj0gMzIgfHwgYml0cyA+IDMyIHx8IG9mZnNldCArIGJpdHMg
PiAzMilcbiIKKyAgICAgICAgIiAgICB7XG4iCisgICAgICAgICIgICAgICAgIHJldHVybiB1aW50
NCgwdSwgMHUsIDB1LCAwdSk7XG4iCisgICAgICAgICIgICAgfVxuIgorICAgICAgICAiICAgIHVp
bnQgbWFza01zYiA9ICgxdSA8PCAoYml0cyAtIDEpKTtcbiIKKyAgICAgICAgIiAgICB1aW50IG1h
c2sgPSAoKG1hc2tNc2IgLSAxdSkgfCBtYXNrTXNiKSA8PCBvZmZzZXQ7XG4iCisgICAgICAgICIg
ICAgcmV0dXJuICh2YWx1ZSAmIG1hc2spID4+IG9mZnNldDtcbiIKICAgICAgICAgIn1cbiIpOwog
CisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKAorICAgICAgICBFT3BCaXRmaWVsZEV4dHJh
Y3QsIGludDEsIGludDEsIGludDEsCisgICAgICAgICJpbnQgd2ViZ2xfYml0ZmllbGRFeHRyYWN0
X2VtdShpbnQgdmFsdWUsIGludCBvZmZzZXQsIGludCBiaXRzKVxuIgorICAgICAgICAie1xuIgor
ICAgICAgICAiICAgIGlmIChvZmZzZXQgPCAwIHx8IGJpdHMgPD0gMCB8fCBvZmZzZXQgPj0gMzIg
fHwgYml0cyA+IDMyIHx8IG9mZnNldCArIGJpdHMgPiAzMilcbiIKKyAgICAgICAgIiAgICB7XG4i
CisgICAgICAgICIgICAgICAgIHJldHVybiAwO1xuIgorICAgICAgICAiICAgIH1cbiIKKyAgICAg
ICAgIiAgICB1aW50IG1hc2tNc2IgPSAoMXUgPDwgKGJpdHMgLSAxKSk7XG4iCisgICAgICAgICIg
ICAgdWludCBtYXNrID0gKChtYXNrTXNiIC0gMXUpIHwgbWFza01zYikgPDwgb2Zmc2V0O1xuIgor
ICAgICAgICAiICAgIHVpbnQgcmVzdWx0VW5zaWduZWQgPSAoYXN1aW50KHZhbHVlKSAmIG1hc2sp
ID4+IG9mZnNldDtcbiIKKyAgICAgICAgIiAgICBpZiAoYml0cyAhPSAzMiAmJiAocmVzdWx0VW5z
aWduZWQgJiBtYXNrTXNiKSAhPSAwKVxuIgorICAgICAgICAiICAgIHtcbiIKKyAgICAgICAgIiAg
ICAgICAgdWludCBoaWdoZXJCaXRzTWFzayA9ICgoMXUgPDwgKDMyIC0gYml0cykpIC0gMXUpIDw8
IGJpdHM7XG4iCisgICAgICAgICIgICAgICAgIHJlc3VsdFVuc2lnbmVkIHw9IGhpZ2hlckJpdHNN
YXNrO1xuIgorICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIiAgICByZXR1cm4gYXNpbnQocmVz
dWx0VW5zaWduZWQpO1xuIgorICAgICAgICAifVxuIik7CisgICAgZW11LT5hZGRFbXVsYXRlZEZ1
bmN0aW9uKAorICAgICAgICBFT3BCaXRmaWVsZEV4dHJhY3QsIGludDIsIGludDEsIGludDEsCisg
ICAgICAgICJpbnQyIHdlYmdsX2JpdGZpZWxkRXh0cmFjdF9lbXUoaW50MiB2YWx1ZSwgaW50IG9m
ZnNldCwgaW50IGJpdHMpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgaWYgKG9mZnNl
dCA8IDAgfHwgYml0cyA8PSAwIHx8IG9mZnNldCA+PSAzMiB8fCBiaXRzID4gMzIgfHwgb2Zmc2V0
ICsgYml0cyA+IDMyKVxuIgorICAgICAgICAiICAgIHtcbiIKKyAgICAgICAgIiAgICAgICAgcmV0
dXJuIGludDIoMCwgMCk7XG4iCisgICAgICAgICIgICAgfVxuIgorICAgICAgICAiICAgIHVpbnQg
bWFza01zYiA9ICgxdSA8PCAoYml0cyAtIDEpKTtcbiIKKyAgICAgICAgIiAgICB1aW50IG1hc2sg
PSAoKG1hc2tNc2IgLSAxdSkgfCBtYXNrTXNiKSA8PCBvZmZzZXQ7XG4iCisgICAgICAgICIgICAg
dWludDIgcmVzdWx0VW5zaWduZWQgPSAoYXN1aW50KHZhbHVlKSAmIG1hc2spID4+IG9mZnNldDtc
biIKKyAgICAgICAgIiAgICBpZiAoYml0cyAhPSAzMilcbiIKKyAgICAgICAgIiAgICB7XG4iCisg
ICAgICAgICIgICAgICAgIHVpbnQgaGlnaGVyQml0c01hc2sgPSAoKDF1IDw8ICgzMiAtIGJpdHMp
KSAtIDF1KSA8PCBiaXRzO1xuIgorICAgICAgICAiICAgICAgICByZXN1bHRVbnNpZ25lZCB8PSAo
KHJlc3VsdFVuc2lnbmVkICYgbWFza01zYikgPj4gKGJpdHMgLSAxKSkgKiBoaWdoZXJCaXRzTWFz
aztcbiIKKyAgICAgICAgIiAgICB9XG4iCisgICAgICAgICIgICAgcmV0dXJuIGFzaW50KHJlc3Vs
dFVuc2lnbmVkKTtcbiIKKyAgICAgICAgIn1cbiIpOworICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5j
dGlvbigKKyAgICAgICAgRU9wQml0ZmllbGRFeHRyYWN0LCBpbnQzLCBpbnQxLCBpbnQxLAorICAg
ICAgICAiaW50MyB3ZWJnbF9iaXRmaWVsZEV4dHJhY3RfZW11KGludDMgdmFsdWUsIGludCBvZmZz
ZXQsIGludCBiaXRzKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGlmIChvZmZzZXQg
PCAwIHx8IGJpdHMgPD0gMCB8fCBvZmZzZXQgPj0gMzIgfHwgYml0cyA+IDMyIHx8IG9mZnNldCAr
IGJpdHMgPiAzMilcbiIKKyAgICAgICAgIiAgICB7XG4iCisgICAgICAgICIgICAgICAgIHJldHVy
biBpbnQzKDAsIDAsIDApO1xuIgorICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIiAgICB1aW50
IG1hc2tNc2IgPSAoMXUgPDwgKGJpdHMgLSAxKSk7XG4iCisgICAgICAgICIgICAgdWludCBtYXNr
ID0gKChtYXNrTXNiIC0gMXUpIHwgbWFza01zYikgPDwgb2Zmc2V0O1xuIgorICAgICAgICAiICAg
IHVpbnQzIHJlc3VsdFVuc2lnbmVkID0gKGFzdWludCh2YWx1ZSkgJiBtYXNrKSA+PiBvZmZzZXQ7
XG4iCisgICAgICAgICIgICAgaWYgKGJpdHMgIT0gMzIpXG4iCisgICAgICAgICIgICAge1xuIgor
ICAgICAgICAiICAgICAgICB1aW50IGhpZ2hlckJpdHNNYXNrID0gKCgxdSA8PCAoMzIgLSBiaXRz
KSkgLSAxdSkgPDwgYml0cztcbiIKKyAgICAgICAgIiAgICAgICAgcmVzdWx0VW5zaWduZWQgfD0g
KChyZXN1bHRVbnNpZ25lZCAmIG1hc2tNc2IpID4+IChiaXRzIC0gMSkpICogaGlnaGVyQml0c01h
c2s7XG4iCisgICAgICAgICIgICAgfVxuIgorICAgICAgICAiICAgIHJldHVybiBhc2ludChyZXN1
bHRVbnNpZ25lZCk7XG4iCisgICAgICAgICJ9XG4iKTsKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVu
Y3Rpb24oCisgICAgICAgIEVPcEJpdGZpZWxkRXh0cmFjdCwgaW50NCwgaW50MSwgaW50MSwKKyAg
ICAgICAgImludDQgd2ViZ2xfYml0ZmllbGRFeHRyYWN0X2VtdShpbnQ0IHZhbHVlLCBpbnQgb2Zm
c2V0LCBpbnQgYml0cylcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBpZiAob2Zmc2V0
IDwgMCB8fCBiaXRzIDw9IDAgfHwgb2Zmc2V0ID49IDMyIHx8IGJpdHMgPiAzMiB8fCBvZmZzZXQg
KyBiaXRzID4gMzIpXG4iCisgICAgICAgICIgICAge1xuIgorICAgICAgICAiICAgICAgICByZXR1
cm4gaW50NCgwLCAwLCAwLCAwKTtcbiIKKyAgICAgICAgIiAgICB9XG4iCisgICAgICAgICIgICAg
dWludCBtYXNrTXNiID0gKDF1IDw8IChiaXRzIC0gMSkpO1xuIgorICAgICAgICAiICAgIHVpbnQg
bWFzayA9ICgobWFza01zYiAtIDF1KSB8IG1hc2tNc2IpIDw8IG9mZnNldDtcbiIKKyAgICAgICAg
IiAgICB1aW50NCByZXN1bHRVbnNpZ25lZCA9IChhc3VpbnQodmFsdWUpICYgbWFzaykgPj4gb2Zm
c2V0O1xuIgorICAgICAgICAiICAgIGlmIChiaXRzICE9IDMyKVxuIgorICAgICAgICAiICAgIHtc
biIKKyAgICAgICAgIiAgICAgICAgdWludCBoaWdoZXJCaXRzTWFzayA9ICgoMXUgPDwgKDMyIC0g
Yml0cykpIC0gMXUpIDw8IGJpdHM7XG4iCisgICAgICAgICIgICAgICAgIHJlc3VsdFVuc2lnbmVk
IHw9ICgocmVzdWx0VW5zaWduZWQgJiBtYXNrTXNiKSA+PiAoYml0cyAtIDEpKSAqIGhpZ2hlckJp
dHNNYXNrO1xuIgorICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIiAgICByZXR1cm4gYXNpbnQo
cmVzdWx0VW5zaWduZWQpO1xuIgorICAgICAgICAifVxuIik7CisKKyAgICBlbXUtPmFkZEVtdWxh
dGVkRnVuY3Rpb24oCisgICAgICAgIEVPcEJpdGZpZWxkSW5zZXJ0LCB1aW50MSwgdWludDEsIGlu
dDEsIGludDEsCisgICAgICAgICJ1aW50IHdlYmdsX2JpdGZpZWxkSW5zZXJ0X2VtdSh1aW50IGJh
c2UsIHVpbnQgaW5zZXJ0LCBpbnQgb2Zmc2V0LCBpbnQgYml0cylcbiIKKyAgICAgICAgIntcbiIK
KyAgICAgICAgIiAgICBpZiAob2Zmc2V0IDwgMCB8fCBiaXRzIDw9IDAgfHwgb2Zmc2V0ID49IDMy
IHx8IGJpdHMgPiAzMiB8fCBvZmZzZXQgKyBiaXRzID4gMzIpXG4iCisgICAgICAgICIgICAge1xu
IgorICAgICAgICAiICAgICAgICByZXR1cm4gYmFzZTtcbiIKKyAgICAgICAgIiAgICB9XG4iCisg
ICAgICAgICIgICAgdWludCBtYXNrTXNiID0gKDF1IDw8IChiaXRzIC0gMSkpO1xuIgorICAgICAg
ICAiICAgIHVpbnQgaW5zZXJ0TWFzayA9ICgobWFza01zYiAtIDF1KSB8IG1hc2tNc2IpIDw8IG9m
ZnNldDtcbiIKKyAgICAgICAgIiAgICB1aW50IGJhc2VNYXNrID0gfmluc2VydE1hc2s7XG4iCisg
ICAgICAgICIgICAgcmV0dXJuIChiYXNlICYgYmFzZU1hc2spIHwgKChpbnNlcnQgPDwgb2Zmc2V0
KSAmIGluc2VydE1hc2spO1xuIgorICAgICAgICAifVxuIik7CisgICAgZW11LT5hZGRFbXVsYXRl
ZEZ1bmN0aW9uKAorICAgICAgICBFT3BCaXRmaWVsZEluc2VydCwgdWludDIsIHVpbnQyLCBpbnQx
LCBpbnQxLAorICAgICAgICAidWludDIgd2ViZ2xfYml0ZmllbGRJbnNlcnRfZW11KHVpbnQyIGJh
c2UsIHVpbnQyIGluc2VydCwgaW50IG9mZnNldCwgaW50IGJpdHMpXG4iCisgICAgICAgICJ7XG4i
CisgICAgICAgICIgICAgaWYgKG9mZnNldCA8IDAgfHwgYml0cyA8PSAwIHx8IG9mZnNldCA+PSAz
MiB8fCBiaXRzID4gMzIgfHwgb2Zmc2V0ICsgYml0cyA+IDMyKVxuIgorICAgICAgICAiICAgIHtc
biIKKyAgICAgICAgIiAgICAgICAgcmV0dXJuIGJhc2U7XG4iCisgICAgICAgICIgICAgfVxuIgor
ICAgICAgICAiICAgIHVpbnQgbWFza01zYiA9ICgxdSA8PCAoYml0cyAtIDEpKTtcbiIKKyAgICAg
ICAgIiAgICB1aW50IGluc2VydE1hc2sgPSAoKG1hc2tNc2IgLSAxdSkgfCBtYXNrTXNiKSA8PCBv
ZmZzZXQ7XG4iCisgICAgICAgICIgICAgdWludCBiYXNlTWFzayA9IH5pbnNlcnRNYXNrO1xuIgor
ICAgICAgICAiICAgIHJldHVybiAoYmFzZSAmIGJhc2VNYXNrKSB8ICgoaW5zZXJ0IDw8IG9mZnNl
dCkgJiBpbnNlcnRNYXNrKTtcbiIKKyAgICAgICAgIn1cbiIpOworICAgIGVtdS0+YWRkRW11bGF0
ZWRGdW5jdGlvbigKKyAgICAgICAgRU9wQml0ZmllbGRJbnNlcnQsIHVpbnQzLCB1aW50MywgaW50
MSwgaW50MSwKKyAgICAgICAgInVpbnQzIHdlYmdsX2JpdGZpZWxkSW5zZXJ0X2VtdSh1aW50MyBi
YXNlLCB1aW50MyBpbnNlcnQsIGludCBvZmZzZXQsIGludCBiaXRzKVxuIgorICAgICAgICAie1xu
IgorICAgICAgICAiICAgIGlmIChvZmZzZXQgPCAwIHx8IGJpdHMgPD0gMCB8fCBvZmZzZXQgPj0g
MzIgfHwgYml0cyA+IDMyIHx8IG9mZnNldCArIGJpdHMgPiAzMilcbiIKKyAgICAgICAgIiAgICB7
XG4iCisgICAgICAgICIgICAgICAgIHJldHVybiBiYXNlO1xuIgorICAgICAgICAiICAgIH1cbiIK
KyAgICAgICAgIiAgICB1aW50IG1hc2tNc2IgPSAoMXUgPDwgKGJpdHMgLSAxKSk7XG4iCisgICAg
ICAgICIgICAgdWludCBpbnNlcnRNYXNrID0gKChtYXNrTXNiIC0gMXUpIHwgbWFza01zYikgPDwg
b2Zmc2V0O1xuIgorICAgICAgICAiICAgIHVpbnQgYmFzZU1hc2sgPSB+aW5zZXJ0TWFzaztcbiIK
KyAgICAgICAgIiAgICByZXR1cm4gKGJhc2UgJiBiYXNlTWFzaykgfCAoKGluc2VydCA8PCBvZmZz
ZXQpICYgaW5zZXJ0TWFzayk7XG4iCisgICAgICAgICJ9XG4iKTsKKyAgICBlbXUtPmFkZEVtdWxh
dGVkRnVuY3Rpb24oCisgICAgICAgIEVPcEJpdGZpZWxkSW5zZXJ0LCB1aW50NCwgdWludDQsIGlu
dDEsIGludDEsCisgICAgICAgICJ1aW50NCB3ZWJnbF9iaXRmaWVsZEluc2VydF9lbXUodWludDQg
YmFzZSwgdWludDQgaW5zZXJ0LCBpbnQgb2Zmc2V0LCBpbnQgYml0cylcbiIKKyAgICAgICAgIntc
biIKKyAgICAgICAgIiAgICBpZiAob2Zmc2V0IDwgMCB8fCBiaXRzIDw9IDAgfHwgb2Zmc2V0ID49
IDMyIHx8IGJpdHMgPiAzMiB8fCBvZmZzZXQgKyBiaXRzID4gMzIpXG4iCisgICAgICAgICIgICAg
e1xuIgorICAgICAgICAiICAgICAgICByZXR1cm4gYmFzZTtcbiIKKyAgICAgICAgIiAgICB9XG4i
CisgICAgICAgICIgICAgdWludCBtYXNrTXNiID0gKDF1IDw8IChiaXRzIC0gMSkpO1xuIgorICAg
ICAgICAiICAgIHVpbnQgaW5zZXJ0TWFzayA9ICgobWFza01zYiAtIDF1KSB8IG1hc2tNc2IpIDw8
IG9mZnNldDtcbiIKKyAgICAgICAgIiAgICB1aW50IGJhc2VNYXNrID0gfmluc2VydE1hc2s7XG4i
CisgICAgICAgICIgICAgcmV0dXJuIChiYXNlICYgYmFzZU1hc2spIHwgKChpbnNlcnQgPDwgb2Zm
c2V0KSAmIGluc2VydE1hc2spO1xuIgorICAgICAgICAifVxuIik7CisKKyAgICBlbXUtPmFkZEVt
dWxhdGVkRnVuY3Rpb24oCisgICAgICAgIEVPcEJpdGZpZWxkSW5zZXJ0LCBpbnQxLCBpbnQxLCBp
bnQxLCBpbnQxLAorICAgICAgICAiaW50IHdlYmdsX2JpdGZpZWxkSW5zZXJ0X2VtdShpbnQgYmFz
ZSwgaW50IGluc2VydCwgaW50IG9mZnNldCwgaW50IGJpdHMpXG4iCisgICAgICAgICJ7XG4iCisg
ICAgICAgICIgICAgaWYgKG9mZnNldCA8IDAgfHwgYml0cyA8PSAwIHx8IG9mZnNldCA+PSAzMiB8
fCBiaXRzID4gMzIgfHwgb2Zmc2V0ICsgYml0cyA+IDMyKVxuIgorICAgICAgICAiICAgIHtcbiIK
KyAgICAgICAgIiAgICAgICAgcmV0dXJuIGJhc2U7XG4iCisgICAgICAgICIgICAgfVxuIgorICAg
ICAgICAiICAgIHVpbnQgbWFza01zYiA9ICgxdSA8PCAoYml0cyAtIDEpKTtcbiIKKyAgICAgICAg
IiAgICB1aW50IGluc2VydE1hc2sgPSAoKG1hc2tNc2IgLSAxdSkgfCBtYXNrTXNiKSA8PCBvZmZz
ZXQ7XG4iCisgICAgICAgICIgICAgdWludCBiYXNlTWFzayA9IH5pbnNlcnRNYXNrO1xuIgorICAg
ICAgICAiICAgIHVpbnQgcmVzdWx0VW5zaWduZWQgPSAoYXN1aW50KGJhc2UpICYgYmFzZU1hc2sp
IHwgKChhc3VpbnQoaW5zZXJ0KSA8PCBvZmZzZXQpICYgIgorICAgICAgICAiaW5zZXJ0TWFzayk7
XG4iCisgICAgICAgICIgICAgcmV0dXJuIGFzaW50KHJlc3VsdFVuc2lnbmVkKTtcbiIKKyAgICAg
ICAgIn1cbiIpOworICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbigKKyAgICAgICAgRU9wQml0
ZmllbGRJbnNlcnQsIGludDIsIGludDIsIGludDEsIGludDEsCisgICAgICAgICJpbnQyIHdlYmds
X2JpdGZpZWxkSW5zZXJ0X2VtdShpbnQyIGJhc2UsIGludDIgaW5zZXJ0LCBpbnQgb2Zmc2V0LCBp
bnQgYml0cylcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBpZiAob2Zmc2V0IDwgMCB8
fCBiaXRzIDw9IDAgfHwgb2Zmc2V0ID49IDMyIHx8IGJpdHMgPiAzMiB8fCBvZmZzZXQgKyBiaXRz
ID4gMzIpXG4iCisgICAgICAgICIgICAge1xuIgorICAgICAgICAiICAgICAgICByZXR1cm4gYmFz
ZTtcbiIKKyAgICAgICAgIiAgICB9XG4iCisgICAgICAgICIgICAgdWludCBtYXNrTXNiID0gKDF1
IDw8IChiaXRzIC0gMSkpO1xuIgorICAgICAgICAiICAgIHVpbnQgaW5zZXJ0TWFzayA9ICgobWFz
a01zYiAtIDF1KSB8IG1hc2tNc2IpIDw8IG9mZnNldDtcbiIKKyAgICAgICAgIiAgICB1aW50IGJh
c2VNYXNrID0gfmluc2VydE1hc2s7XG4iCisgICAgICAgICIgICAgdWludDIgcmVzdWx0VW5zaWdu
ZWQgPSAoYXN1aW50KGJhc2UpICYgYmFzZU1hc2spIHwgKChhc3VpbnQoaW5zZXJ0KSA8PCBvZmZz
ZXQpICYgIgorICAgICAgICAiaW5zZXJ0TWFzayk7XG4iCisgICAgICAgICIgICAgcmV0dXJuIGFz
aW50KHJlc3VsdFVuc2lnbmVkKTtcbiIKKyAgICAgICAgIn1cbiIpOworICAgIGVtdS0+YWRkRW11
bGF0ZWRGdW5jdGlvbigKKyAgICAgICAgRU9wQml0ZmllbGRJbnNlcnQsIGludDMsIGludDMsIGlu
dDEsIGludDEsCisgICAgICAgICJpbnQzIHdlYmdsX2JpdGZpZWxkSW5zZXJ0X2VtdShpbnQzIGJh
c2UsIGludDMgaW5zZXJ0LCBpbnQgb2Zmc2V0LCBpbnQgYml0cylcbiIKKyAgICAgICAgIntcbiIK
KyAgICAgICAgIiAgICBpZiAob2Zmc2V0IDwgMCB8fCBiaXRzIDw9IDAgfHwgb2Zmc2V0ID49IDMy
IHx8IGJpdHMgPiAzMiB8fCBvZmZzZXQgKyBiaXRzID4gMzIpXG4iCisgICAgICAgICIgICAge1xu
IgorICAgICAgICAiICAgICAgICByZXR1cm4gYmFzZTtcbiIKKyAgICAgICAgIiAgICB9XG4iCisg
ICAgICAgICIgICAgdWludCBtYXNrTXNiID0gKDF1IDw8IChiaXRzIC0gMSkpO1xuIgorICAgICAg
ICAiICAgIHVpbnQgaW5zZXJ0TWFzayA9ICgobWFza01zYiAtIDF1KSB8IG1hc2tNc2IpIDw8IG9m
ZnNldDtcbiIKKyAgICAgICAgIiAgICB1aW50IGJhc2VNYXNrID0gfmluc2VydE1hc2s7XG4iCisg
ICAgICAgICIgICAgdWludDMgcmVzdWx0VW5zaWduZWQgPSAoYXN1aW50KGJhc2UpICYgYmFzZU1h
c2spIHwgKChhc3VpbnQoaW5zZXJ0KSA8PCBvZmZzZXQpICYgIgorICAgICAgICAiaW5zZXJ0TWFz
ayk7XG4iCisgICAgICAgICIgICAgcmV0dXJuIGFzaW50KHJlc3VsdFVuc2lnbmVkKTtcbiIKKyAg
ICAgICAgIn1cbiIpOworICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbigKKyAgICAgICAgRU9w
Qml0ZmllbGRJbnNlcnQsIGludDQsIGludDQsIGludDEsIGludDEsCisgICAgICAgICJpbnQ0IHdl
YmdsX2JpdGZpZWxkSW5zZXJ0X2VtdShpbnQ0IGJhc2UsIGludDQgaW5zZXJ0LCBpbnQgb2Zmc2V0
LCBpbnQgYml0cylcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAgIiAgICBpZiAob2Zmc2V0IDwg
MCB8fCBiaXRzIDw9IDAgfHwgb2Zmc2V0ID49IDMyIHx8IGJpdHMgPiAzMiB8fCBvZmZzZXQgKyBi
aXRzID4gMzIpXG4iCisgICAgICAgICIgICAge1xuIgorICAgICAgICAiICAgICAgICByZXR1cm4g
YmFzZTtcbiIKKyAgICAgICAgIiAgICB9XG4iCisgICAgICAgICIgICAgdWludCBtYXNrTXNiID0g
KDF1IDw8IChiaXRzIC0gMSkpO1xuIgorICAgICAgICAiICAgIHVpbnQgaW5zZXJ0TWFzayA9ICgo
bWFza01zYiAtIDF1KSB8IG1hc2tNc2IpIDw8IG9mZnNldDtcbiIKKyAgICAgICAgIiAgICB1aW50
IGJhc2VNYXNrID0gfmluc2VydE1hc2s7XG4iCisgICAgICAgICIgICAgdWludDQgcmVzdWx0VW5z
aWduZWQgPSAoYXN1aW50KGJhc2UpICYgYmFzZU1hc2spIHwgKChhc3VpbnQoaW5zZXJ0KSA8PCBv
ZmZzZXQpICYgIgorICAgICAgICAiaW5zZXJ0TWFzayk7XG4iCisgICAgICAgICIgICAgcmV0dXJu
IGFzaW50KHJlc3VsdFVuc2lnbmVkKTtcbiIKKyAgICAgICAgIn1cbiIpOworCisgICAgZW11LT5h
ZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcFVhZGRDYXJyeSwgdWludDEsIHVpbnQxLCB1aW50MSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInVpbnQgd2ViZ2xfdWFkZENhcnJ5X2VtdSh1aW50
IHgsIHVpbnQgeSwgb3V0IHVpbnQgY2FycnkpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgY2FycnkgPSB1aW50
KHggPiAoMHhmZmZmZmZmZnUgLSB5KSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIgICAgcmV0dXJuIHggKyB5O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAifVxu
Iik7CisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uKEVPcFVhZGRDYXJyeSwgdWludDIsIHVp
bnQyLCB1aW50MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVpbnQyIHdlYmdsX3Vh
ZGRDYXJyeV9lbXUodWludDIgeCwgdWludDIgeSwgb3V0IHVpbnQyIGNhcnJ5KVxuIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiICAgIGNhcnJ5ID0gdWludDIoeCA+ICgweGZmZmZmZmZmdSAtIHkpKTtcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4geCArIHk7XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ9XG4iKTsKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9w
VWFkZENhcnJ5LCB1aW50MywgdWludDMsIHVpbnQzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAidWludDMgd2ViZ2xfdWFkZENhcnJ5X2VtdSh1aW50MyB4LCB1aW50MyB5LCBvdXQgdWlu
dDMgY2FycnkpXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIgICAgY2FycnkgPSB1aW50Myh4ID4gKDB4ZmZmZmZmZmZ1
IC0geSkpO1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB4ICsg
eTtcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIn1cbiIpOworICAgIGVtdS0+YWRk
RW11bGF0ZWRGdW5jdGlvbihFT3BVYWRkQ2FycnksIHVpbnQ0LCB1aW50NCwgdWludDQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJ1aW50NCB3ZWJnbF91YWRkQ2FycnlfZW11KHVpbnQ0
IHgsIHVpbnQ0IHksIG91dCB1aW50NCBjYXJyeSlcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBjYXJyeSA9IHVp
bnQ0KHggPiAoMHhmZmZmZmZmZnUgLSB5KSk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIgICAgcmV0dXJuIHggKyB5O1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
fVxuIik7CisKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wVXN1YkJvcnJvdywgdWlu
dDEsIHVpbnQxLCB1aW50MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVpbnQgd2Vi
Z2xfdXN1YkJvcnJvd19lbXUodWludCB4LCB1aW50IHksIG91dCB1aW50IGJvcnJvdylcbiIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIiAgICBib3Jyb3cgPSB1aW50KHggPCB5KTtcbiIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiAgICByZXR1cm4geCAtIHk7XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ9XG4iKTsKKyAgICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oRU9wVXN1YkJvcnJvdywg
dWludDIsIHVpbnQyLCB1aW50MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVpbnQy
IHdlYmdsX3VzdWJCb3Jyb3dfZW11KHVpbnQyIHgsIHVpbnQyIHksIG91dCB1aW50MiBib3Jyb3cp
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7XG4iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIgICAgYm9ycm93ID0gdWludDIoeCA8IHkpO1xuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiICAgIHJldHVybiB4IC0geTtcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIn1cbiIpOworICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbihFT3BVc3Vi
Qm9ycm93LCB1aW50MywgdWludDMsIHVpbnQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAidWludDMgd2ViZ2xfdXN1YkJvcnJvd19lbXUodWludDMgeCwgdWludDMgeSwgb3V0IHVpbnQz
IGJvcnJvdylcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICBib3Jyb3cgPSB1aW50Myh4IDwgeSk7XG4iCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHggLSB5O1xuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAifVxuIik7CisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9u
KEVPcFVzdWJCb3Jyb3csIHVpbnQ0LCB1aW50NCwgdWludDQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJ1aW50NCB3ZWJnbF91c3ViQm9ycm93X2VtdSh1aW50NCB4LCB1aW50NCB5LCBv
dXQgdWludDQgYm9ycm93KVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAie1xuIgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGJvcnJvdyA9IHVpbnQ0KHggPCB5KTtc
biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICByZXR1cm4geCAtIHk7XG4iCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iKTsKKworICAgIC8vIChhICsgYjJeMTYp
ICogKGMgKyBkMl4xNikgPSBhYyArIChhZCArIGJjKSAqIDJeMTYgKyBiZCAqIDJeMzIKKyAgICAv
LyBBbHNvIG5vdGUgdGhhdCBiZWxvdywgYSAqIGQgKyAoKGEgKiBjKSA+PiAxNikgaXMgZ3VhcmFu
dGVlZCBub3QgdG8gb3ZlcmZsb3csIGJlY2F1c2U6CisgICAgLy8gYSA8PSAweGZmZmYsIGQgPD0g
MHhmZmZmLCAoKGEgKiBjKSA+PiAxNikgPD0gMHhmZmZmIGFuZCAweGZmZmYgKiAweGZmZmYgKyAw
eGZmZmYgPSAweGZmZmYwMDAwCisgICAgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkZ1bmN0aW9u
SWQgdW11bEV4dGVuZGVkVWludDEgPSBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb24oCisgICAgICAg
IEVPcFVtdWxFeHRlbmRlZCwgdWludDEsIHVpbnQxLCB1aW50MSwgdWludDEsCisgICAgICAgICJ2
b2lkIHdlYmdsX3VtdWxFeHRlbmRlZF9lbXUodWludCB4LCB1aW50IHksIG91dCB1aW50IG1zYiwg
b3V0IHVpbnQgbHNiKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIGxzYiA9IHggKiB5
O1xuIgorICAgICAgICAiICAgIHVpbnQgYSA9ICh4ICYgMHhmZmZmdSk7XG4iCisgICAgICAgICIg
ICAgdWludCBiID0gKHggPj4gMTYpO1xuIgorICAgICAgICAiICAgIHVpbnQgYyA9ICh5ICYgMHhm
ZmZmdSk7XG4iCisgICAgICAgICIgICAgdWludCBkID0gKHkgPj4gMTYpO1xuIgorICAgICAgICAi
ICAgIHVpbnQgYWQgPSBhICogZCArICgoYSAqIGMpID4+IDE2KTtcbiIKKyAgICAgICAgIiAgICB1
aW50IGJjID0gYiAqIGM7XG4iCisgICAgICAgICIgICAgdWludCBjYXJyeSA9IHVpbnQoYWQgPiAo
MHhmZmZmZmZmZnUgLSBiYykpO1xuIgorICAgICAgICAiICAgIG1zYiA9ICgoYWQgKyBiYykgPj4g
MTYpICsgKGNhcnJ5IDw8IDE2KSArIGIgKiBkO1xuIgorICAgICAgICAifVxuIik7CisgICAgZW11
LT5hZGRFbXVsYXRlZEZ1bmN0aW9uV2l0aERlcGVuZGVuY3koCisgICAgICAgIHVtdWxFeHRlbmRl
ZFVpbnQxLCBFT3BVbXVsRXh0ZW5kZWQsIHVpbnQyLCB1aW50MiwgdWludDIsIHVpbnQyLAorICAg
ICAgICAidm9pZCB3ZWJnbF91bXVsRXh0ZW5kZWRfZW11KHVpbnQyIHgsIHVpbnQyIHksIG91dCB1
aW50MiBtc2IsIG91dCB1aW50MiBsc2IpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAg
d2ViZ2xfdW11bEV4dGVuZGVkX2VtdSh4LngsIHkueCwgbXNiLngsIGxzYi54KTtcbiIKKyAgICAg
ICAgIiAgICB3ZWJnbF91bXVsRXh0ZW5kZWRfZW11KHgueSwgeS55LCBtc2IueSwgbHNiLnkpO1xu
IgorICAgICAgICAifVxuIik7CisgICAgZW11LT5hZGRFbXVsYXRlZEZ1bmN0aW9uV2l0aERlcGVu
ZGVuY3koCisgICAgICAgIHVtdWxFeHRlbmRlZFVpbnQxLCBFT3BVbXVsRXh0ZW5kZWQsIHVpbnQz
LCB1aW50MywgdWludDMsIHVpbnQzLAorICAgICAgICAidm9pZCB3ZWJnbF91bXVsRXh0ZW5kZWRf
ZW11KHVpbnQzIHgsIHVpbnQzIHksIG91dCB1aW50MyBtc2IsIG91dCB1aW50MyBsc2IpXG4iCisg
ICAgICAgICJ7XG4iCisgICAgICAgICIgICAgd2ViZ2xfdW11bEV4dGVuZGVkX2VtdSh4LngsIHku
eCwgbXNiLngsIGxzYi54KTtcbiIKKyAgICAgICAgIiAgICB3ZWJnbF91bXVsRXh0ZW5kZWRfZW11
KHgueSwgeS55LCBtc2IueSwgbHNiLnkpO1xuIgorICAgICAgICAiICAgIHdlYmdsX3VtdWxFeHRl
bmRlZF9lbXUoeC56LCB5LnosIG1zYi56LCBsc2Iueik7XG4iCisgICAgICAgICJ9XG4iKTsKKyAg
ICBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rpb25XaXRoRGVwZW5kZW5jeSgKKyAgICAgICAgdW11bEV4
dGVuZGVkVWludDEsIEVPcFVtdWxFeHRlbmRlZCwgdWludDQsIHVpbnQ0LCB1aW50NCwgdWludDQs
CisgICAgICAgICJ2b2lkIHdlYmdsX3VtdWxFeHRlbmRlZF9lbXUodWludDQgeCwgdWludDQgeSwg
b3V0IHVpbnQ0IG1zYiwgb3V0IHVpbnQ0IGxzYilcbiIKKyAgICAgICAgIntcbiIKKyAgICAgICAg
IiAgICB3ZWJnbF91bXVsRXh0ZW5kZWRfZW11KHgueCwgeS54LCBtc2IueCwgbHNiLngpO1xuIgor
ICAgICAgICAiICAgIHdlYmdsX3VtdWxFeHRlbmRlZF9lbXUoeC55LCB5LnksIG1zYi55LCBsc2Iu
eSk7XG4iCisgICAgICAgICIgICAgd2ViZ2xfdW11bEV4dGVuZGVkX2VtdSh4LnosIHkueiwgbXNi
LnosIGxzYi56KTtcbiIKKyAgICAgICAgIiAgICB3ZWJnbF91bXVsRXh0ZW5kZWRfZW11KHgudywg
eS53LCBtc2IudywgbHNiLncpO1xuIgorICAgICAgICAifVxuIik7CisKKyAgICAvLyBUaGUgaW11
bCBlbXVsYXRpb24gZG9lcyB0d28ncyBjb21wbGVtZW50IG5lZ2F0aW9uIG9uIHRoZSBsc2IgYW5k
IG1zYiBtYW51YWxseSBpbiBjYXNlIHRoZQorICAgIC8vIHJlc3VsdCBuZWVkcyB0byBiZSBuZWdh
dGl2ZS4KKyAgICAvLyBUT0RPKG9ldHVhaG8pOiBOb3RlIHRoYXQgdGhpcyBjb2RlIGRvZXNuJ3Qg
dGFrZSBvbmUgZWRnZSBjYXNlIGludG8gYWNjb3VudCwgd2hlcmUgeCBvciB5IGlzCisgICAgLy8g
LTJeMzEuIGFicygtMl4zMSkgaXMgdW5kZWZpbmVkLgorICAgIEJ1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yOjpGdW5jdGlvbklkIGltdWxFeHRlbmRlZEludDEgPSBlbXUtPmFkZEVtdWxhdGVkRnVuY3Rp
b25XaXRoRGVwZW5kZW5jeSgKKyAgICAgICAgdW11bEV4dGVuZGVkVWludDEsIEVPcEltdWxFeHRl
bmRlZCwgaW50MSwgaW50MSwgaW50MSwgaW50MSwKKyAgICAgICAgInZvaWQgd2ViZ2xfaW11bEV4
dGVuZGVkX2VtdShpbnQgeCwgaW50IHksIG91dCBpbnQgbXNiLCBvdXQgaW50IGxzYilcbiIKKyAg
ICAgICAgIntcbiIKKyAgICAgICAgIiAgICB1aW50IHVuc2lnbmVkTXNiO1xuIgorICAgICAgICAi
ICAgIHVpbnQgdW5zaWduZWRMc2I7XG4iCisgICAgICAgICIgICAgYm9vbCBuZWdhdGl2ZSA9ICh4
IDwgMCkgIT0gKHkgPCAwKTtcbiIKKyAgICAgICAgIiAgICB3ZWJnbF91bXVsRXh0ZW5kZWRfZW11
KHVpbnQoYWJzKHgpKSwgdWludChhYnMoeSkpLCB1bnNpZ25lZE1zYiwgdW5zaWduZWRMc2IpO1xu
IgorICAgICAgICAiICAgIGxzYiA9IGFzaW50KHVuc2lnbmVkTHNiKTtcbiIKKyAgICAgICAgIiAg
ICBtc2IgPSBhc2ludCh1bnNpZ25lZE1zYik7XG4iCisgICAgICAgICIgICAgaWYgKG5lZ2F0aXZl
KVxuIgorICAgICAgICAiICAgIHtcbiIKKyAgICAgICAgIiAgICAgICAgbHNiID0gfmxzYjtcbiIK
KyAgICAgICAgIiAgICAgICAgbXNiID0gfm1zYjtcbiIKKyAgICAgICAgIiAgICAgICAgaWYgKGxz
YiA9PSAweGZmZmZmZmZmKVxuIgorICAgICAgICAiICAgICAgICB7XG4iCisgICAgICAgICIgICAg
ICAgICAgICBsc2IgPSAwO1xuIgorICAgICAgICAiICAgICAgICAgICAgbXNiICs9IDE7XG4iCisg
ICAgICAgICIgICAgICAgIH1cbiIKKyAgICAgICAgIiAgICAgICAgZWxzZVxuIgorICAgICAgICAi
ICAgICAgICB7XG4iCisgICAgICAgICIgICAgICAgICAgICBsc2IgKz0gMTtcbiIKKyAgICAgICAg
IiAgICAgICAgfVxuIgorICAgICAgICAiICAgIH1cbiIKKyAgICAgICAgIn1cbiIpOworICAgIGVt
dS0+YWRkRW11bGF0ZWRGdW5jdGlvbldpdGhEZXBlbmRlbmN5KAorICAgICAgICBpbXVsRXh0ZW5k
ZWRJbnQxLCBFT3BJbXVsRXh0ZW5kZWQsIGludDIsIGludDIsIGludDIsIGludDIsCisgICAgICAg
ICJ2b2lkIHdlYmdsX2ltdWxFeHRlbmRlZF9lbXUoaW50MiB4LCBpbnQyIHksIG91dCBpbnQyIG1z
Yiwgb3V0IGludDIgbHNiKVxuIgorICAgICAgICAie1xuIgorICAgICAgICAiICAgIHdlYmdsX2lt
dWxFeHRlbmRlZF9lbXUoeC54LCB5LngsIG1zYi54LCBsc2IueCk7XG4iCisgICAgICAgICIgICAg
d2ViZ2xfaW11bEV4dGVuZGVkX2VtdSh4LnksIHkueSwgbXNiLnksIGxzYi55KTtcbiIKKyAgICAg
ICAgIn1cbiIpOworICAgIGVtdS0+YWRkRW11bGF0ZWRGdW5jdGlvbldpdGhEZXBlbmRlbmN5KAor
ICAgICAgICBpbXVsRXh0ZW5kZWRJbnQxLCBFT3BJbXVsRXh0ZW5kZWQsIGludDMsIGludDMsIGlu
dDMsIGludDMsCisgICAgICAgICJ2b2lkIHdlYmdsX2ltdWxFeHRlbmRlZF9lbXUoaW50MyB4LCBp
bnQzIHksIG91dCBpbnQzIG1zYiwgb3V0IGludDMgbHNiKVxuIgorICAgICAgICAie1xuIgorICAg
ICAgICAiICAgIHdlYmdsX2ltdWxFeHRlbmRlZF9lbXUoeC54LCB5LngsIG1zYi54LCBsc2IueCk7
XG4iCisgICAgICAgICIgICAgd2ViZ2xfaW11bEV4dGVuZGVkX2VtdSh4LnksIHkueSwgbXNiLnks
IGxzYi55KTtcbiIKKyAgICAgICAgIiAgICB3ZWJnbF9pbXVsRXh0ZW5kZWRfZW11KHgueiwgeS56
LCBtc2IueiwgbHNiLnopO1xuIgorICAgICAgICAifVxuIik7CisgICAgZW11LT5hZGRFbXVsYXRl
ZEZ1bmN0aW9uV2l0aERlcGVuZGVuY3koCisgICAgICAgIGltdWxFeHRlbmRlZEludDEsIEVPcElt
dWxFeHRlbmRlZCwgaW50NCwgaW50NCwgaW50NCwgaW50NCwKKyAgICAgICAgInZvaWQgd2ViZ2xf
aW11bEV4dGVuZGVkX2VtdShpbnQ0IHgsIGludDQgeSwgb3V0IGludDQgbXNiLCBvdXQgaW50NCBs
c2IpXG4iCisgICAgICAgICJ7XG4iCisgICAgICAgICIgICAgd2ViZ2xfaW11bEV4dGVuZGVkX2Vt
dSh4LngsIHkueCwgbXNiLngsIGxzYi54KTtcbiIKKyAgICAgICAgIiAgICB3ZWJnbF9pbXVsRXh0
ZW5kZWRfZW11KHgueSwgeS55LCBtc2IueSwgbHNiLnkpO1xuIgorICAgICAgICAiICAgIHdlYmds
X2ltdWxFeHRlbmRlZF9lbXUoeC56LCB5LnosIG1zYi56LCBsc2Iueik7XG4iCisgICAgICAgICIg
ICAgd2ViZ2xfaW11bEV4dGVuZGVkX2VtdSh4LncsIHkudywgbXNiLncsIGxzYi53KTtcbiIKKyAg
ICAgICAgIn1cbiIpOwogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0J1aWx0SW5GdW5jdGlv
bkVtdWxhdG9ySExTTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3JITFNMLmgKaW5kZXggZjQ3NDQ5ZGZiMjYu
LjQ4ZGE3M2Y1OGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvckhMU0wuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rp
b25FbXVsYXRvckhMU0wuaApAQCAtOSw2ICs5LDkgQEAKIAogI2luY2x1ZGUgIkdMU0xBTkcvU2hh
ZGVyTGFuZy5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogY2xhc3MgQnVpbHRJbkZ1bmN0aW9uRW11
bGF0b3I7CiAKIHZvaWQgSW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yRm9ySExTTChCdWlsdElu
RnVuY3Rpb25FbXVsYXRvciAqZW11KTsKQEAgLTE5LDQgKzIyLDYgQEAgdm9pZCBJbml0QnVpbHRJ
bkZ1bmN0aW9uRW11bGF0b3JGb3JITFNMKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUpOwog
dm9pZCBJbml0QnVpbHRJbklzbmFuRnVuY3Rpb25FbXVsYXRvckZvckhMU0xXb3JrYXJvdW5kcyhC
dWlsdEluRnVuY3Rpb25FbXVsYXRvciAqZW11LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0R0xTTFZlcnNpb24pOwogCit9
ICAvLyBuYW1lc3BhY2Ugc2gKKwogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0JVSUxU
SU5GVU5DVElPTkVNVUxBVE9SSExTTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ2FjaGUuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ2FjaGUuY3BwCmluZGV4IDU3YTQzNzAw
Y2FjLi4wN2NjNWIyNDRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NhY2hlLmNwcApAQCAtMTIsMjEgKzEyLDIwIEBA
CiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9DYWNoZS5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogbmFtZXNwYWNlCiB7CiAKIGNsYXNzIFRT
Y29wZWRBbGxvY2F0b3IgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgotICAgIFRT
Y29wZWRBbGxvY2F0b3IoVFBvb2xBbGxvY2F0b3IgKmFsbG9jYXRvcikKLSAgICAgICAgOiBtUHJl
dmlvdXNBbGxvY2F0b3IoR2V0R2xvYmFsUG9vbEFsbG9jYXRvcigpKQorICAgIFRTY29wZWRBbGxv
Y2F0b3IoVFBvb2xBbGxvY2F0b3IgKmFsbG9jYXRvcikgOiBtUHJldmlvdXNBbGxvY2F0b3IoR2V0
R2xvYmFsUG9vbEFsbG9jYXRvcigpKQogICAgIHsKICAgICAgICAgU2V0R2xvYmFsUG9vbEFsbG9j
YXRvcihhbGxvY2F0b3IpOwogICAgIH0KLSAgICB+VFNjb3BlZEFsbG9jYXRvcigpCi0gICAgewot
ICAgICAgICBTZXRHbG9iYWxQb29sQWxsb2NhdG9yKG1QcmV2aW91c0FsbG9jYXRvcik7Ci0gICAg
fQorICAgIH5UU2NvcGVkQWxsb2NhdG9yKCkgeyBTZXRHbG9iYWxQb29sQWxsb2NhdG9yKG1QcmV2
aW91c0FsbG9jYXRvcik7IH0KIAogICBwcml2YXRlOgogICAgIFRQb29sQWxsb2NhdG9yICptUHJl
dmlvdXNBbGxvY2F0b3I7CkBAIC00MCwyMyArMzksMTkgQEAgVENhY2hlOjpUeXBlS2V5OjpUeXBl
S2V5KFRCYXNpY1R5cGUgYmFzaWNUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgcHJpbWFyeVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
Y2hhciBzZWNvbmRhcnlTaXplKQogewotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKGNvbXBvbmVu
dHMpIDw9IHNpemVvZih2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAiVHlwZUtleTo6dmFsdWUg
aXMgdG9vIHNtYWxsIik7CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoY29tcG9uZW50cykgPD0g
c2l6ZW9mKHZhbHVlKSwgIlR5cGVLZXk6OnZhbHVlIGlzIHRvbyBzbWFsbCIpOwogCiAgICAgY29u
c3Qgc2l6ZV90IE1heEVudW1WYWx1ZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8RW51bUNvbXBvbmVu
dFR5cGU+OjptYXgoKTsKLSAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKE1heEVudW1WYWx1
ZSk7CiAKICAgICAvLyBUT0RPOiBjaGFuZ2UgdG8gc3RhdGljX2Fzc2VydCgpIG9uY2Ugd2UgZGVw
cmVjYXRlIE1TVkMgMjAxMyBzdXBwb3J0Ci0gICAgQVNTRVJUKE1heEVudW1WYWx1ZSA+PSBFYnRM
YXN0ICYmCi0gICAgICAgICAgIE1heEVudW1WYWx1ZSA+PSBFYnBMYXN0ICYmCi0gICAgICAgICAg
IE1heEVudW1WYWx1ZSA+PSBFdnFMYXN0ICYmCisgICAgQVNTRVJUKE1heEVudW1WYWx1ZSA+PSBF
YnRMYXN0ICYmIE1heEVudW1WYWx1ZSA+PSBFYnBMYXN0ICYmIE1heEVudW1WYWx1ZSA+PSBFdnFM
YXN0ICYmCiAgICAgICAgICAgICJUeXBlS2V5OjpFbnVtQ29tcG9uZW50VHlwZSBpcyB0b28gc21h
bGwiKTsKIAotICAgIHZhbHVlID0gMDsKLSAgICBjb21wb25lbnRzLmJhc2ljVHlwZSA9IHN0YXRp
Y19jYXN0PEVudW1Db21wb25lbnRUeXBlPihiYXNpY1R5cGUpOwotICAgIGNvbXBvbmVudHMucHJl
Y2lzaW9uID0gc3RhdGljX2Nhc3Q8RW51bUNvbXBvbmVudFR5cGU+KHByZWNpc2lvbik7Ci0gICAg
Y29tcG9uZW50cy5xdWFsaWZpZXIgPSBzdGF0aWNfY2FzdDxFbnVtQ29tcG9uZW50VHlwZT4ocXVh
bGlmaWVyKTsKLSAgICBjb21wb25lbnRzLnByaW1hcnlTaXplID0gcHJpbWFyeVNpemU7CisgICAg
dmFsdWUgICAgICAgICAgICAgICAgICAgID0gMDsKKyAgICBjb21wb25lbnRzLmJhc2ljVHlwZSAg
ICAgPSBzdGF0aWNfY2FzdDxFbnVtQ29tcG9uZW50VHlwZT4oYmFzaWNUeXBlKTsKKyAgICBjb21w
b25lbnRzLnByZWNpc2lvbiAgICAgPSBzdGF0aWNfY2FzdDxFbnVtQ29tcG9uZW50VHlwZT4ocHJl
Y2lzaW9uKTsKKyAgICBjb21wb25lbnRzLnF1YWxpZmllciAgICAgPSBzdGF0aWNfY2FzdDxFbnVt
Q29tcG9uZW50VHlwZT4ocXVhbGlmaWVyKTsKKyAgICBjb21wb25lbnRzLnByaW1hcnlTaXplICAg
PSBwcmltYXJ5U2l6ZTsKICAgICBjb21wb25lbnRzLnNlY29uZGFyeVNpemUgPSBzZWNvbmRhcnlT
aXplOwogfQogCkBAIC04MSw4ICs3Niw3IEBAIGNvbnN0IFRUeXBlICpUQ2FjaGU6OmdldFR5cGUo
VEJhc2ljVHlwZSBiYXNpY1R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgcHJpbWFyeVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGNoYXIgc2Vjb25kYXJ5U2l6ZSkKIHsKLSAgICBUeXBlS2V5IGtleShiYXNpY1R5cGUsIHBy
ZWNpc2lvbiwgcXVhbGlmaWVyLAotICAgICAgICAgICAgICAgIHByaW1hcnlTaXplLCBzZWNvbmRh
cnlTaXplKTsKKyAgICBUeXBlS2V5IGtleShiYXNpY1R5cGUsIHByZWNpc2lvbiwgcXVhbGlmaWVy
LCBwcmltYXJ5U2l6ZSwgc2Vjb25kYXJ5U2l6ZSk7CiAgICAgYXV0byBpdCA9IHNDYWNoZS0+bVR5
cGVzLmZpbmQoa2V5KTsKICAgICBpZiAoaXQgIT0gc0NhY2hlLT5tVHlwZXMuZW5kKCkpCiAgICAg
ewpAQCAtOTEsMTAgKzg1LDExIEBAIGNvbnN0IFRUeXBlICpUQ2FjaGU6OmdldFR5cGUoVEJhc2lj
VHlwZSBiYXNpY1R5cGUsCiAKICAgICBUU2NvcGVkQWxsb2NhdG9yIHNjb3BlZEFsbG9jYXRvcigm
c0NhY2hlLT5tQWxsb2NhdG9yKTsKIAotICAgIFRUeXBlICp0eXBlID0gbmV3IFRUeXBlKGJhc2lj
VHlwZSwgcHJlY2lzaW9uLCBxdWFsaWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJpbWFyeVNpemUsIHNlY29uZGFyeVNpemUpOworICAgIFRUeXBlICp0eXBlID0gbmV3IFRUeXBl
KGJhc2ljVHlwZSwgcHJlY2lzaW9uLCBxdWFsaWZpZXIsIHByaW1hcnlTaXplLCBzZWNvbmRhcnlT
aXplKTsKICAgICB0eXBlLT5yZWFsaXplKCk7CiAgICAgc0NhY2hlLT5tVHlwZXMuaW5zZXJ0KHN0
ZDo6bWFrZV9wYWlyKGtleSwgdHlwZSkpOwogCiAgICAgcmV0dXJuIHR5cGU7CiB9CisKK30gIC8v
IG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvQ2FjaGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0NhY2hlLmgKaW5kZXggMWQyYWJiNzdlMWMuLmE0NWFkYTQ4Nzhk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9DYWNoZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0NhY2hlLmgKQEAgLTE2LDMzICsxNiwzMSBAQAogI2luY2x1ZGUgImNvbXBpbGVy
L3RyYW5zbGF0b3IvVHlwZXMuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Bvb2xB
bGxvYy5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogY2xhc3MgVENhY2hlCiB7CiAgIHB1YmxpYzoK
LQogICAgIHN0YXRpYyB2b2lkIGluaXRpYWxpemUoKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KCk7CiAKLSAgICBzdGF0aWMgY29uc3QgVFR5cGUgKmdldFR5cGUoVEJhc2ljVHlwZSBiYXNpY1R5
cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQcmVjaXNpb24gcHJlY2lzaW9u
KQorICAgIHN0YXRpYyBjb25zdCBUVHlwZSAqZ2V0VHlwZShUQmFzaWNUeXBlIGJhc2ljVHlwZSwg
VFByZWNpc2lvbiBwcmVjaXNpb24pCiAgICAgewotICAgICAgICByZXR1cm4gZ2V0VHlwZShiYXNp
Y1R5cGUsIHByZWNpc2lvbiwgRXZxVGVtcG9yYXJ5LAotICAgICAgICAgICAgICAgICAgICAgICAx
LCAxKTsKKyAgICAgICAgcmV0dXJuIGdldFR5cGUoYmFzaWNUeXBlLCBwcmVjaXNpb24sIEV2cVRl
bXBvcmFyeSwgMSwgMSk7CiAgICAgfQogICAgIHN0YXRpYyBjb25zdCBUVHlwZSAqZ2V0VHlwZShU
QmFzaWNUeXBlIGJhc2ljVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgY2hhciBwcmltYXJ5U2l6ZSA9IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgcHJpbWFyeVNpemUgICA9IDEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgc2Vjb25kYXJ5U2l6ZSA9IDEpCiAgICAgewotICAg
ICAgICByZXR1cm4gZ2V0VHlwZShiYXNpY1R5cGUsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFsLAot
ICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5U2l6ZSwgc2Vjb25kYXJ5U2l6ZSk7CisgICAg
ICAgIHJldHVybiBnZXRUeXBlKGJhc2ljVHlwZSwgRWJwVW5kZWZpbmVkLCBFdnFHbG9iYWwsIHBy
aW1hcnlTaXplLCBzZWNvbmRhcnlTaXplKTsKICAgICB9CiAgICAgc3RhdGljIGNvbnN0IFRUeXBl
ICpnZXRUeXBlKFRCYXNpY1R5cGUgYmFzaWNUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgY2hhciBwcmltYXJ5U2l6ZSA9IDEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcHJpbWFyeVNpemUgICA9IDEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgc2Vjb25kYXJ5U2l6ZSA9IDEpCiAg
ICAgewotICAgICAgICByZXR1cm4gZ2V0VHlwZShiYXNpY1R5cGUsIEVicFVuZGVmaW5lZCwgcXVh
bGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5U2l6ZSwgc2Vjb25kYXJ5U2l6
ZSk7CisgICAgICAgIHJldHVybiBnZXRUeXBlKGJhc2ljVHlwZSwgRWJwVW5kZWZpbmVkLCBxdWFs
aWZpZXIsIHByaW1hcnlTaXplLCBzZWNvbmRhcnlTaXplKTsKICAgICB9CiAgICAgc3RhdGljIGNv
bnN0IFRUeXBlICpnZXRUeXBlKFRCYXNpY1R5cGUgYmFzaWNUeXBlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUUHJlY2lzaW9uIHByZWNpc2lvbiwKQEAgLTUxLDEyICs0OSw5IEBA
IGNsYXNzIFRDYWNoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBj
aGFyIHNlY29uZGFyeVNpemUpOwogCiAgIHByaXZhdGU6Ci0gICAgVENhY2hlKCkKLSAgICB7Ci0g
ICAgfQorICAgIFRDYWNoZSgpIHt9CiAKLSAgICB1bmlvbiBUeXBlS2V5Ci0gICAgeworICAgIHVu
aW9uIFR5cGVLZXkgewogICAgICAgICBUeXBlS2V5KFRCYXNpY1R5cGUgYmFzaWNUeXBlLAogICAg
ICAgICAgICAgICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uLAogICAgICAgICAgICAgICAgIFRRdWFs
aWZpZXIgcXVhbGlmaWVyLApAQCAtNzQsMTIgKzY5LDkgQEAgY2xhc3MgVENhY2hlCiAgICAgICAg
IH0gY29tcG9uZW50czsKICAgICAgICAgdWludDY0X3QgdmFsdWU7CiAKLSAgICAgICAgYm9vbCBv
cGVyYXRvciA8IChjb25zdCBUeXBlS2V5ICZvdGhlcikgY29uc3QKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlIDwgb3RoZXIudmFsdWU7Ci0gICAgICAgIH0KKyAgICAgICAgYm9v
bCBvcGVyYXRvcjwoY29uc3QgVHlwZUtleSAmb3RoZXIpIGNvbnN0IHsgcmV0dXJuIHZhbHVlIDwg
b3RoZXIudmFsdWU7IH0KICAgICB9OwotICAgIHR5cGVkZWYgc3RkOjptYXA8VHlwZUtleSwgY29u
c3QgVFR5cGUqPiBUeXBlTWFwOworICAgIHR5cGVkZWYgc3RkOjptYXA8VHlwZUtleSwgY29uc3Qg
VFR5cGUgKj4gVHlwZU1hcDsKIAogICAgIFR5cGVNYXAgbVR5cGVzOwogICAgIFRQb29sQWxsb2Nh
dG9yIG1BbGxvY2F0b3I7CkBAIC04Nyw0ICs3OSw2IEBAIGNsYXNzIFRDYWNoZQogICAgIHN0YXRp
YyBUQ2FjaGUgKnNDYWNoZTsKIH07CiAKK30gIC8vIG5hbWVzcGFjZSBzaAorCiAjZW5kaWYgIC8v
IENPTVBJTEVSX1RSQU5TTEFUT1JfQ0FDSEVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NhbGxEQUcuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ2FsbERBRy5jcHAKaW5kZXgg
OTgxMGZhOTM1YjguLjg1NTdmZGY2YzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9DYWxsREFHLmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9DYWxsREFHLmNwcApAQCAtOSwx
NiArOSwyMSBAQAogLy8gb3JkZXIuCiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0Nh
bGxEQUcuaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmgiCisKKyNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0aWNzLmgiCisjaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgorCituYW1lc3BhY2Ugc2gKK3sKIAogLy8g
VGhlIENhbGxEQUdDcmVhdG9yIGRvZXMgYWxsIHRoZSBwcm9jZXNzaW5nIHJlcXVpcmVkIHRvIGNy
ZWF0ZSB0aGUgQ2FsbERBRwogLy8gc3RydWN0dXJlIHNvIHRoYXQgdGhlIGxhdHRlciBjb250YWlu
cyBvbmx5IHRoZSBuZWNlc3NhcnkgdmFyaWFibGVzLgogY2xhc3MgQ2FsbERBRzo6Q2FsbERBR0Ny
ZWF0b3IgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogewogICBwdWJsaWM6Ci0gICAgQ2FsbERB
R0NyZWF0b3IoVEluZm9TaW5rQmFzZSAqaW5mbykKKyAgICBDYWxsREFHQ3JlYXRvcihURGlhZ25v
c3RpY3MgKmRpYWdub3N0aWNzKQogICAgICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFs
c2UsIHRydWUpLAotICAgICAgICAgIG1DcmVhdGlvbkluZm8oaW5mbyksCisgICAgICAgICAgbURp
YWdub3N0aWNzKGRpYWdub3N0aWNzKSwKICAgICAgICAgICBtQ3VycmVudEZ1bmN0aW9uKG51bGxw
dHIpLAogICAgICAgICAgIG1DdXJyZW50SW5kZXgoMCkKICAgICB7CkBAIC0zNSw3ICs0MCw2IEBA
IGNsYXNzIENhbGxEQUc6OkNhbGxEQUdDcmVhdG9yIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIK
ICAgICAgICAgICAgICAgICBJbml0UmVzdWx0IHJlc3VsdCA9IGFzc2lnbkluZGljZXNJbnRlcm5h
bCgmaXQuc2Vjb25kKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IElOSVREQUdfU1VD
Q0VTUykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICptQ3JlYXRpb25J
bmZvIDw8ICJcbiI7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNzYsMjQgKzgwLDE3IEBAIGNsYXNzIENhbGxE
QUc6OkNhbGxEQUdDcmVhdG9yIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICAgICAgICAg
ICAgICByZWNvcmQuY2FsbGVlcy5wdXNoX2JhY2soc3RhdGljX2Nhc3Q8aW50PihjYWxsZWUtPmlu
ZGV4KSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICgqaWRUb0luZGV4KVtkYXRhLm5v
ZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXRJZCgpXSA9CisgICAgICAgICAgICAoKmlk
VG9JbmRleClbZGF0YS5ub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0SWQoKS5nZXQo
KV0gPQogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4oZGF0YS5pbmRleCk7CiAgICAg
ICAgIH0KICAgICB9CiAKICAgcHJpdmF0ZToKLQogICAgIHN0cnVjdCBDcmVhdG9yRnVuY3Rpb25E
YXRhCiAgICAgewotICAgICAgICBDcmVhdG9yRnVuY3Rpb25EYXRhKCkKLSAgICAgICAgICAgIDog
bm9kZShudWxscHRyKSwKLSAgICAgICAgICAgICAgaW5kZXgoMCksCi0gICAgICAgICAgICAgIGlu
ZGV4QXNzaWduZWQoZmFsc2UpLAotICAgICAgICAgICAgICB2aXNpdGluZyhmYWxzZSkKLSAgICAg
ICAgewotICAgICAgICB9CisgICAgICAgIENyZWF0b3JGdW5jdGlvbkRhdGEoKSA6IG5vZGUobnVs
bHB0ciksIGluZGV4KDApLCBpbmRleEFzc2lnbmVkKGZhbHNlKSwgdmlzaXRpbmcoZmFsc2UpIHt9
CiAKLSAgICAgICAgc3RkOjpzZXQ8Q3JlYXRvckZ1bmN0aW9uRGF0YSo+IGNhbGxlZXM7CisgICAg
ICAgIHN0ZDo6c2V0PENyZWF0b3JGdW5jdGlvbkRhdGEgKj4gY2FsbGVlczsKICAgICAgICAgVElu
dGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kZTsKICAgICAgICAgVFN0cmluZyBuYW1lOwogICAg
ICAgICBzaXplX3QgaW5kZXg7CkBAIC0xMDYsMTkgKzEwMywyMCBAQCBjbGFzcyBDYWxsREFHOjpD
YWxsREFHQ3JlYXRvciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgICAgIC8vIENyZWF0
ZSB0aGUgcmVjb3JkIGlmIG5lZWQgYmUgYW5kIHJlbWVtYmVyIHRoZSBub2RlLgogICAgICAgICBp
ZiAodmlzaXQgPT0gUHJlVmlzaXQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gaXQgPSBt
RnVuY3Rpb25zLmZpbmQobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWUoKSk7
CisgICAgICAgICAgICBhdXRvIGl0ID0gbUZ1bmN0aW9ucy5maW5kKG5vZGUtPmdldEZ1bmN0aW9u
U3ltYm9sSW5mbygpLT5nZXRJZCgpLmdldCgpKTsKIAogICAgICAgICAgICAgaWYgKGl0ID09IG1G
dW5jdGlvbnMuZW5kKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbUN1cnJlbnRG
dW5jdGlvbiA9ICZtRnVuY3Rpb25zW25vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXRO
YW1lKCldOworICAgICAgICAgICAgICAgIG1DdXJyZW50RnVuY3Rpb24gICAgICAgPSAmbUZ1bmN0
aW9uc1tub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0SWQoKS5nZXQoKV07CisgICAg
ICAgICAgICAgICAgbUN1cnJlbnRGdW5jdGlvbi0+bmFtZSA9IG5vZGUtPmdldEZ1bmN0aW9uU3lt
Ym9sSW5mbygpLT5nZXROYW1lKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbUN1cnJlbnRGdW5jdGlvbiA9ICZpdC0+c2Vj
b25kOworICAgICAgICAgICAgICAgIEFTU0VSVChtQ3VycmVudEZ1bmN0aW9uLT5uYW1lID09IG5v
ZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lKCkpOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBtQ3VycmVudEZ1bmN0aW9uLT5ub2RlID0gbm9kZTsKLSAgICAgICAgICAg
IG1DdXJyZW50RnVuY3Rpb24tPm5hbWUgPSBub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+
Z2V0TmFtZSgpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHZpc2l0ID09IFBvc3RWaXNp
dCkKICAgICAgICAgewpAQCAtMTI3LDQxICsxMjUsMzggQEAgY2xhc3MgQ2FsbERBRzo6Q2FsbERB
R0NyZWF0b3IgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKKyAgICBib29sIHZpc2l0RnVuY3Rpb25Qcm90b3R5cGUoVmlzaXQgdmlzaXQsIFRJ
bnRlcm1GdW5jdGlvblByb3RvdHlwZSAqbm9kZSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEFT
U0VSVCh2aXNpdCA9PSBQcmVWaXNpdCk7CisgICAgICAgIGlmIChtQ3VycmVudEZ1bmN0aW9uICE9
IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIEZ1bmN0aW9uIGRlY2xhcmF0aW9uLCBjcmVhdGUgYW4gZW1wdHkgcmVj
b3JkLgorICAgICAgICBhdXRvICZyZWNvcmQgPSBtRnVuY3Rpb25zW25vZGUtPmdldEZ1bmN0aW9u
U3ltYm9sSW5mbygpLT5nZXRJZCgpLmdldCgpXTsKKyAgICAgICAgcmVjb3JkLm5hbWUgID0gbm9k
ZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWUoKTsKKworICAgICAgICAvLyBObyBu
ZWVkIHRvIHRyYXZlcnNlIHRoZSBwYXJhbWV0ZXJzLgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCiAgICAgLy8gQWdncmVnYXRlcyB0aGUgQVNUIG5vZGUgZm9yIGVhY2ggZnVuY3Rpb24g
YXMgd2VsbCBhcyB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb25zIGNhbGxlZCBieSBpdAogICAgIGJv
b2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92
ZXJyaWRlCiAgICAgewotICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCisgICAgICAgIGlm
ICh2aXNpdCA9PSBQcmVWaXNpdCAmJiBub2RlLT5nZXRPcCgpID09IEVPcENhbGxGdW5jdGlvbklu
QVNUKQogICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBFT3BQcm90b3R5cGU6Ci0gICAgICAgICAg
ICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCisgICAgICAgICAgICAvLyBGdW5jdGlvbiBjYWxsLCBh
ZGQgdGhlIGNhbGxlZXMKKyAgICAgICAgICAgIGF1dG8gaXQgPSBtRnVuY3Rpb25zLmZpbmQobm9k
ZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldElkKCkuZ2V0KCkpOworICAgICAgICAgICAg
QVNTRVJUKGl0ICE9IG1GdW5jdGlvbnMuZW5kKCkpOworCisgICAgICAgICAgICAvLyBXZSBtaWdo
dCBiZSB0cmF2ZXJzaW5nIHRoZSBpbml0aWFsaXplciBvZiBhIGdsb2JhbCB2YXJpYWJsZS4gRXZl
biB0aG91Z2ggZnVuY3Rpb24KKyAgICAgICAgICAgIC8vIGNhbGxzIGluIGdsb2JhbCBzY29wZSBh
cmUgZm9yYmlkZGVuIGJ5IHRoZSBwYXJzZXIsIHNvbWUgc3Vic2VxdWVudCBBU1QKKyAgICAgICAg
ICAgIC8vIHRyYW5zZm9ybWF0aW9ucyBjYW4gYWRkIHRoZW0gdG8gZW11bGF0ZSBwYXJ0aWN1bGFy
IGZlYXR1cmVzLgorICAgICAgICAgICAgaWYgKG1DdXJyZW50RnVuY3Rpb24pCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgLy8gRnVuY3Rpb24gZGVjbGFyYXRpb24sIGNyZWF0ZSBhbiBl
bXB0eSByZWNvcmQuCi0gICAgICAgICAgICAgICAgYXV0byAmcmVjb3JkID0gbUZ1bmN0aW9uc1tu
b2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZSgpXTsKLSAgICAgICAgICAgICAg
ICByZWNvcmQubmFtZSAgPSBub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZSgp
OworICAgICAgICAgICAgICAgIG1DdXJyZW50RnVuY3Rpb24tPmNhbGxlZXMuaW5zZXJ0KCZpdC0+
c2Vjb25kKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNh
c2UgRU9wRnVuY3Rpb25DYWxsOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIEZ1
bmN0aW9uIGNhbGwsIGFkZCB0aGUgY2FsbGVlcwotICAgICAgICAgICAgICAgIGlmICh2aXNpdCA9
PSBQcmVWaXNpdCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIERv
IG5vdCBoYW5kbGUgY2FsbHMgdG8gYnVpbHRpbiBmdW5jdGlvbnMKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPmlzVXNlckRlZmluZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgYXV0byBpdCA9IG1GdW5jdGlvbnMuZmluZChub2RlLT5nZXRG
dW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChpdCAhPSBtRnVuY3Rpb25zLmVuZCgpKTsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gV2UgbWlnaHQgYmUgaW4gYSB0b3AtbGV2ZWwgZnVuY3Rpb24gY2FsbCB0byBzZXQgYSBn
bG9iYWwgdmFyaWFibGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtQ3VycmVudEZ1bmN0
aW9uKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1DdXJyZW50RnVuY3Rpb24tPmNhbGxlZXMuaW5zZXJ0KCZpdC0+c2Vjb25kKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQpAQCAtMTk0LDYgKzE4OSw4IEBAIGNsYXNzIENhbGxEQUc6OkNhbGxEQUdDcmVh
dG9yIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKIAogICAgICAgICBJbml0UmVzdWx0IHJlc3Vs
dCA9IElOSVREQUdfU1VDQ0VTUzsKIAorICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBlcnJvclN0
cmVhbTsKKwogICAgICAgICB3aGlsZSAoIWZ1bmN0aW9uc1RvUHJvY2Vzcy5lbXB0eSgpKQogICAg
ICAgICB7CiAgICAgICAgICAgICBDcmVhdG9yRnVuY3Rpb25EYXRhICpmdW5jdGlvbiA9IGZ1bmN0
aW9uc1RvUHJvY2Vzcy5iYWNrKCk7CkBAIC0yMTAsOCArMjA3LDggQEAgY2xhc3MgQ2FsbERBRzo6
Q2FsbERBR0NyZWF0b3IgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogCiAgICAgICAgICAgICBp
ZiAoIWZ1bmN0aW9uLT5ub2RlKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICptQ3Jl
YXRpb25JbmZvIDw8ICJVbmRlZmluZWQgZnVuY3Rpb24gJyIgPDwgZnVuY3Rpb24tPm5hbWUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiKScgdXNlZCBpbiB0aGUgZm9sbG93aW5n
IGNhbGwgY2hhaW46IjsKKyAgICAgICAgICAgICAgICBlcnJvclN0cmVhbSA8PCAiVW5kZWZpbmVk
IGZ1bmN0aW9uICciIDw8IGZ1bmN0aW9uLT5uYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgPDwgIiknIHVzZWQgaW4gdGhlIGZvbGxvd2luZyBjYWxsIGNoYWluOiI7CiAgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gSU5JVERBR19VTkRFRklORUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CkBAIC0yMzIsNyArMjI5LDcgQEAgY2xhc3MgQ2FsbERBRzo6Q2FsbERB
R0NyZWF0b3IgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgICAgICAgICAgICAgIC8vIGlu
IHRoZSBjaGFpbiBwcmludGVkIGluIHRoZSBpbmZvIGxvZy4KICAgICAgICAgICAgICAgICBpZiAo
Y2FsbGVlLT52aXNpdGluZykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICptQ3JlYXRpb25JbmZvIDw8ICJSZWN1cnNpdmUgZnVuY3Rpb24gY2FsbCBpbiB0aGUgZm9sbG93
aW5nIGNhbGwgY2hhaW46IjsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JTdHJlYW0gPDwgIlJl
Y3Vyc2l2ZSBmdW5jdGlvbiBjYWxsIGluIHRoZSBmb2xsb3dpbmcgY2FsbCBjaGFpbjoiOwogICAg
ICAgICAgICAgICAgICAgICByZXN1bHQgPSBJTklUREFHX1JFQ1VSU0lPTjsKICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjU0LDIwICsyNTEsMjUgQEAg
Y2xhc3MgQ2FsbERBRzo6Q2FsbERBR0NyZWF0b3IgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgog
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdCkKICAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgKm1DcmVhdGlvbkluZm8g
PDwgIiAtPiAiOworICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JTdHJlYW0gPDwgIiAtPiAi
OwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICptQ3JlYXRpb25J
bmZvIDw8IGZ1bmN0aW9uLT5uYW1lIDw8ICIpIjsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JT
dHJlYW0gPDwgZnVuY3Rpb24tPm5hbWUgPDwgIikiOwogICAgICAgICAgICAgICAgICAgICBmaXJz
dCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChtRGlhZ25vc3RpY3MpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3RkOjpz
dHJpbmcgZXJyb3JTdHIgPSBlcnJvclN0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgICAgICBtRGlh
Z25vc3RpY3MtPmdsb2JhbEVycm9yKGVycm9yU3RyLmNfc3RyKCkpOworICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBUSW5mb1Np
bmtCYXNlICptQ3JlYXRpb25JbmZvOworICAgIFREaWFnbm9zdGljcyAqbURpYWdub3N0aWNzOwog
Ci0gICAgc3RkOjptYXA8VFN0cmluZywgQ3JlYXRvckZ1bmN0aW9uRGF0YT4gbUZ1bmN0aW9uczsK
KyAgICBzdGQ6Om1hcDxpbnQsIENyZWF0b3JGdW5jdGlvbkRhdGE+IG1GdW5jdGlvbnM7CiAgICAg
Q3JlYXRvckZ1bmN0aW9uRGF0YSAqbUN1cnJlbnRGdW5jdGlvbjsKICAgICBzaXplX3QgbUN1cnJl
bnRJbmRleDsKIH07CkBAIC0yODYsNyArMjg4LDcgQEAgY29uc3Qgc2l6ZV90IENhbGxEQUc6Oklu
dmFsaWRJbmRleCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCk7CiAKIHNpemVf
dCBDYWxsREFHOjpmaW5kSW5kZXgoY29uc3QgVEZ1bmN0aW9uU3ltYm9sSW5mbyAqZnVuY3Rpb25J
bmZvKSBjb25zdAogewotICAgIGF1dG8gaXQgPSBtRnVuY3Rpb25JZFRvSW5kZXguZmluZChmdW5j
dGlvbkluZm8tPmdldElkKCkpOworICAgIGF1dG8gaXQgPSBtRnVuY3Rpb25JZFRvSW5kZXguZmlu
ZChmdW5jdGlvbkluZm8tPmdldElkKCkuZ2V0KCkpOwogCiAgICAgaWYgKGl0ID09IG1GdW5jdGlv
bklkVG9JbmRleC5lbmQoKSkKICAgICB7CkBAIC0zMjIsMTEgKzMyNCw5IEBAIHZvaWQgQ2FsbERB
Rzo6Y2xlYXIoKQogICAgIG1GdW5jdGlvbklkVG9JbmRleC5jbGVhcigpOwogfQogCi1DYWxsREFH
OjpJbml0UmVzdWx0IENhbGxEQUc6OmluaXQoVEludGVybU5vZGUgKnJvb3QsIFRJbmZvU2lua0Jh
c2UgKmluZm8pCitDYWxsREFHOjpJbml0UmVzdWx0IENhbGxEQUc6OmluaXQoVEludGVybU5vZGUg
KnJvb3QsIFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpCiB7Ci0gICAgQVNTRVJUKGluZm8pOwot
Ci0gICAgQ2FsbERBR0NyZWF0b3IgY3JlYXRvcihpbmZvKTsKKyAgICBDYWxsREFHQ3JlYXRvciBj
cmVhdG9yKGRpYWdub3N0aWNzKTsKIAogICAgIC8vIENyZWF0ZXMgdGhlIG1hcHBpbmcgb2YgZnVu
Y3Rpb25zIHRvIGNhbGxlZXMKICAgICByb290LT50cmF2ZXJzZSgmY3JlYXRvcik7CkBAIC0zNDEs
MyArMzQxLDUgQEAgQ2FsbERBRzo6SW5pdFJlc3VsdCBDYWxsREFHOjppbml0KFRJbnRlcm1Ob2Rl
ICpyb290LCBUSW5mb1NpbmtCYXNlICppbmZvKQogICAgIGNyZWF0b3IuZmlsbERhdGFTdHJ1Y3R1
cmVzKCZtUmVjb3JkcywgJm1GdW5jdGlvbklkVG9JbmRleCk7CiAgICAgcmV0dXJuIElOSVREQUdf
U1VDQ0VTUzsKIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9DYWxsREFHLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9DYWxsREFHLmgKaW5kZXgg
OWJjZGEwNzBjMmYuLmQyOWY5MzI2ZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9DYWxsREFHLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ2FsbERBRy5oCkBAIC0xNiw2ICsx
Niw4IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCiAjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9WYXJpYWJsZUluZm8uaCIKIAorbmFtZXNwYWNlIHNo
Cit7CiAKIC8vIFRoZSB0cmFuc2xhdG9yIG5lZWRzIHRvIGFuYWx5emUgdGhlIHRoZSBncmFwaCBv
ZiB0aGUgZnVuY3Rpb24gY2FsbHMKIC8vIHRvIHJ1biBjaGVja3MgYW5kIGFuYWx5c2VzOyBzaW5j
ZSBpbiBHTFNMIHJlY3Vyc2lvbiBpcyBub3QgYWxsb3dlZApAQCAtMjQsNyArMjYsNyBAQAogLy8g
Y2FuIGJlIHJldXNlZCBieSBtdWx0aXBsZSBhbmFseXNlcy4KIC8vCiAvLyBJdCBzdG9yZXMgYSB2
ZWN0b3Igb2YgZnVuY3Rpb24gcmVjb3Jkcywgd2l0aCBvbmUgcmVjb3JkIHBlciBmdW5jdGlvbi4K
LS8vIFJlY29yZHMgYXJlIGFjY2Vzc2VkIGJ5IGluZGV4IGJ1dCBhIG1hbmdsZWQgZnVuY3Rpb24g
bmFtZSBjYW4gYmUgY29udmVydGVkCisvLyBSZWNvcmRzIGFyZSBhY2Nlc3NlZCBieSBpbmRleCBi
dXQgYSBmdW5jdGlvbiBzeW1ib2wgaWQgY2FuIGJlIGNvbnZlcnRlZAogLy8gdG8gdGhlIGluZGV4
IG9mIHRoZSBjb3JyZXNwb25kaW5nIHJlY29yZC4gVGhlIHJlY29yZHMgbW9zdGx5IGNvbnRhaW4g
dGhlCiAvLyBBU1Qgbm9kZSBvZiB0aGUgZnVuY3Rpb24gYW5kIHRoZSBpbmRpY2VzIG9mIHRoZSBm
dW5jdGlvbidzIGNhbGxlZXMuCiAvLwpAQCAtNTMsOCArNTUsOCBAQCBjbGFzcyBDYWxsREFHIDog
YW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgfTsKIAogICAgIC8vIFJldHVybnMgSU5JVERBR19TVUND
RVNTIGlmIGl0IHdhcyBhYmxlIHRvIGNyZWF0ZSB0aGUgREFHLCBvdGhlcndpc2UgcHJpbnRzCi0g
ICAgLy8gdGhlIGluaXRpYWxpemF0aW9uIGVycm9yIGluIGluZm8sIGlmIHByZXNlbnQuCi0gICAg
SW5pdFJlc3VsdCBpbml0KFRJbnRlcm1Ob2RlICpyb290LCBUSW5mb1NpbmtCYXNlICppbmZvKTsK
KyAgICAvLyB0aGUgaW5pdGlhbGl6YXRpb24gZXJyb3IgaW4gZGlhZ25vc3RpY3MsIGlmIHByZXNl
bnQuCisgICAgSW5pdFJlc3VsdCBpbml0KFRJbnRlcm1Ob2RlICpyb290LCBURGlhZ25vc3RpY3Mg
KmRpYWdub3N0aWNzKTsKIAogICAgIC8vIFJldHVybnMgSW52YWxpZEluZGV4IGlmIHRoZSBmdW5j
dGlvbiB3YXNuJ3QgZm91bmQKICAgICBzaXplX3QgZmluZEluZGV4KGNvbnN0IFRGdW5jdGlvblN5
bWJvbEluZm8gKmZ1bmN0aW9uSW5mbykgY29uc3Q7CkBAIC02NSw2ICs2Nyw3IEBAIGNsYXNzIENh
bGxEQUcgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICB2b2lkIGNsZWFyKCk7CiAKICAgICBjb25z
dCBzdGF0aWMgc2l6ZV90IEludmFsaWRJbmRleDsKKwogICBwcml2YXRlOgogICAgIHN0ZDo6dmVj
dG9yPFJlY29yZD4gbVJlY29yZHM7CiAgICAgc3RkOjptYXA8aW50LCBpbnQ+IG1GdW5jdGlvbklk
VG9JbmRleDsKQEAgLTcyLDQgKzc1LDYgQEAgY2xhc3MgQ2FsbERBRyA6IGFuZ2xlOjpOb25Db3B5
YWJsZQogICAgIGNsYXNzIENhbGxEQUdDcmVhdG9yOwogfTsKIAorfSAgLy8gbmFtZXNwYWNlIHNo
CisKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9DQUxMREFHX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db2RlR2Vu
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0Nv
ZGVHZW4uY3BwCmluZGV4IGYwOTliY2NmMTVkLi43NWYwZDM2MjQwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29kZUdlbi5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29k
ZUdlbi5jcHAKQEAgLTYsNzEgKzYsOTIgQEAKIAogI2lmZGVmIEFOR0xFX0VOQUJMRV9FU1NMCiAj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5oIgotI2VuZGlmCisj
ZW5kaWYgIC8vIEFOR0xFX0VOQUJMRV9FU1NMCiAKICNpZmRlZiBBTkdMRV9FTkFCTEVfR0xTTAog
I2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckdMU0wuaCIKLSNlbmRpZgor
I2VuZGlmICAvLyBBTkdMRV9FTkFCTEVfR0xTTAogCiAjaWZkZWYgQU5HTEVfRU5BQkxFX0hMU0wK
ICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmgiCi0jZW5kaWYg
Ly8gQU5HTEVfRU5BQkxFX0hMU0wKKyNlbmRpZiAgLy8gQU5HTEVfRU5BQkxFX0hMU0wKKworI2lm
ZGVmIEFOR0xFX0VOQUJMRV9WVUxLQU4KKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Ry
YW5zbGF0b3JWdWxrYW4uaCIKKyNlbmRpZiAgLy8gQU5HTEVfRU5BQkxFX1ZVTEtBTgorCituYW1l
c3BhY2Ugc2gKK3sKIAogLy8KIC8vIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBwcm92aWRlZCB0byBj
cmVhdGUgdGhlIGFjdHVhbAogLy8gY29tcGlsZSBvYmplY3QgdXNlZCBieSBoaWdoZXIgbGV2ZWwg
Y29kZS4gIEl0IHJldHVybnMKIC8vIGEgc3ViY2xhc3Mgb2YgVENvbXBpbGVyLgogLy8KLVRDb21w
aWxlciogQ29uc3RydWN0Q29tcGlsZXIoCi0gICAgc2g6OkdMZW51bSB0eXBlLCBTaFNoYWRlclNw
ZWMgc3BlYywgU2hTaGFkZXJPdXRwdXQgb3V0cHV0KQorVENvbXBpbGVyICpDb25zdHJ1Y3RDb21w
aWxlcihzaDo6R0xlbnVtIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBTaFNoYWRlck91dHB1dCBv
dXRwdXQpCiB7Ci0gICAgc3dpdGNoIChvdXRwdXQpIHsKLSAgICAgIGNhc2UgU0hfRVNTTF9PVVRQ
VVQ6CisgICAgc3dpdGNoIChvdXRwdXQpCisgICAgeworICAgICAgICBjYXNlIFNIX0VTU0xfT1VU
UFVUOgogI2lmZGVmIEFOR0xFX0VOQUJMRV9FU1NMCi0gICAgICAgIHJldHVybiBuZXcgVHJhbnNs
YXRvckVTU0wodHlwZSwgc3BlYyk7CisgICAgICAgICAgICByZXR1cm4gbmV3IFRyYW5zbGF0b3JF
U1NMKHR5cGUsIHNwZWMpOwogI2Vsc2UKLSAgICAgICAgLy8gVGhpcyBjb21waWxlciBpcyBub3Qg
c3VwcG9ydGVkIGluIHRoaXMKLSAgICAgICAgLy8gY29uZmlndXJhdGlvbi4gUmV0dXJuIE5VTEwg
cGVyIHRoZSBTaENvbnN0cnVjdENvbXBpbGVyIEFQSS4KLSAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0jZW5kaWYgLy8gQU5HTEVfRU5BQkxFX0VTU0wKLSAgICAgIGNhc2UgU0hfR0xTTF8xMzBfT1VU
UFVUOgotICAgICAgY2FzZSBTSF9HTFNMXzE0MF9PVVRQVVQ6Ci0gICAgICBjYXNlIFNIX0dMU0xf
MTUwX0NPUkVfT1VUUFVUOgotICAgICAgY2FzZSBTSF9HTFNMXzMzMF9DT1JFX09VVFBVVDoKLSAg
ICAgIGNhc2UgU0hfR0xTTF80MDBfQ09SRV9PVVRQVVQ6Ci0gICAgICBjYXNlIFNIX0dMU0xfNDEw
X0NPUkVfT1VUUFVUOgotICAgICAgY2FzZSBTSF9HTFNMXzQyMF9DT1JFX09VVFBVVDoKLSAgICAg
IGNhc2UgU0hfR0xTTF80MzBfQ09SRV9PVVRQVVQ6Ci0gICAgICBjYXNlIFNIX0dMU0xfNDQwX0NP
UkVfT1VUUFVUOgotICAgICAgY2FzZSBTSF9HTFNMXzQ1MF9DT1JFX09VVFBVVDoKLSAgICAgIGNh
c2UgU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVDoKKyAgICAgICAgICAgIC8vIFRoaXMgY29t
cGlsZXIgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGNvbmZpZ3VyYXRpb24uIFJldHVybiBOVUxM
IHBlciB0aGUKKyAgICAgICAgICAgIC8vIHNoOjpDb25zdHJ1Y3RDb21waWxlciBBUEkuCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZiAgLy8gQU5HTEVfRU5BQkxFX0VTU0wKKwor
ICAgICAgICBjYXNlIFNIX0dMU0xfMTMwX09VVFBVVDoKKyAgICAgICAgY2FzZSBTSF9HTFNMXzE0
MF9PVVRQVVQ6CisgICAgICAgIGNhc2UgU0hfR0xTTF8xNTBfQ09SRV9PVVRQVVQ6CisgICAgICAg
IGNhc2UgU0hfR0xTTF8zMzBfQ09SRV9PVVRQVVQ6CisgICAgICAgIGNhc2UgU0hfR0xTTF80MDBf
Q09SRV9PVVRQVVQ6CisgICAgICAgIGNhc2UgU0hfR0xTTF80MTBfQ09SRV9PVVRQVVQ6CisgICAg
ICAgIGNhc2UgU0hfR0xTTF80MjBfQ09SRV9PVVRQVVQ6CisgICAgICAgIGNhc2UgU0hfR0xTTF80
MzBfQ09SRV9PVVRQVVQ6CisgICAgICAgIGNhc2UgU0hfR0xTTF80NDBfQ09SRV9PVVRQVVQ6Cisg
ICAgICAgIGNhc2UgU0hfR0xTTF80NTBfQ09SRV9PVVRQVVQ6CisgICAgICAgIGNhc2UgU0hfR0xT
TF9DT01QQVRJQklMSVRZX09VVFBVVDoKICNpZmRlZiBBTkdMRV9FTkFCTEVfR0xTTAotICAgICAg
ICByZXR1cm4gbmV3IFRyYW5zbGF0b3JHTFNMKHR5cGUsIHNwZWMsIG91dHB1dCk7CisgICAgICAg
ICAgICByZXR1cm4gbmV3IFRyYW5zbGF0b3JHTFNMKHR5cGUsIHNwZWMsIG91dHB1dCk7CiAjZWxz
ZQotICAgICAgICAvLyBUaGlzIGNvbXBpbGVyIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcwotICAg
ICAgICAvLyBjb25maWd1cmF0aW9uLiBSZXR1cm4gTlVMTCBwZXIgdGhlIFNoQ29uc3RydWN0Q29t
cGlsZXIgQVBJLgotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSNlbmRpZiAvLyBBTkdMRV9FTkFC
TEVfR0xTTAotICAgICAgY2FzZSBTSF9ITFNMXzNfMF9PVVRQVVQ6Ci0gICAgICBjYXNlIFNIX0hM
U0xfNF8xX09VVFBVVDoKLSAgICAgIGNhc2UgU0hfSExTTF80XzBfRkw5XzNfT1VUUFVUOgorICAg
ICAgICAgICAgLy8gVGhpcyBjb21waWxlciBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgY29uZmln
dXJhdGlvbi4gUmV0dXJuIE5VTEwgcGVyIHRoZQorICAgICAgICAgICAgLy8gc2g6OkNvbnN0cnVj
dENvbXBpbGVyIEFQSS4KKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworI2VuZGlmICAvLyBB
TkdMRV9FTkFCTEVfR0xTTAorCisgICAgICAgIGNhc2UgU0hfSExTTF8zXzBfT1VUUFVUOgorICAg
ICAgICBjYXNlIFNIX0hMU0xfNF8xX09VVFBVVDoKKyAgICAgICAgY2FzZSBTSF9ITFNMXzRfMF9G
TDlfM19PVVRQVVQ6CiAjaWZkZWYgQU5HTEVfRU5BQkxFX0hMU0wKLSAgICAgICAgcmV0dXJuIG5l
dyBUcmFuc2xhdG9ySExTTCh0eXBlLCBzcGVjLCBvdXRwdXQpOworICAgICAgICAgICAgcmV0dXJu
IG5ldyBUcmFuc2xhdG9ySExTTCh0eXBlLCBzcGVjLCBvdXRwdXQpOwogI2Vsc2UKLSAgICAgICAg
Ly8gVGhpcyBjb21waWxlciBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMKLSAgICAgICAgLy8gY29u
ZmlndXJhdGlvbi4gUmV0dXJuIE5VTEwgcGVyIHRoZSBTaENvbnN0cnVjdENvbXBpbGVyIEFQSS4K
LSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0jZW5kaWYgLy8gQU5HTEVfRU5BQkxFX0hMU0wKLSAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIC8vIFVua25vd24gZm9ybWF0LiBSZXR1cm4gTlVMTCBwZXIg
dGhlIFNoQ29uc3RydWN0Q29tcGlsZXIgQVBJLgotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgICAgIC8vIFRoaXMgY29tcGlsZXIgaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGNvbmZp
Z3VyYXRpb24uIFJldHVybiBOVUxMIHBlciB0aGUKKyAgICAgICAgICAgIC8vIHNoOjpDb25zdHJ1
Y3RDb21waWxlciBBUEkuCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZiAgLy8g
QU5HTEVfRU5BQkxFX0hMU0wKKworICAgICAgICBjYXNlIFNIX0dMU0xfVlVMS0FOX09VVFBVVDoK
KyNpZmRlZiBBTkdMRV9FTkFCTEVfVlVMS0FOCisgICAgICAgICAgICByZXR1cm4gbmV3IFRyYW5z
bGF0b3JWdWxrYW4odHlwZSwgc3BlYyk7CisjZWxzZQorICAgICAgICAgICAgLy8gVGhpcyBjb21w
aWxlciBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgY29uZmlndXJhdGlvbi4gUmV0dXJuIE5VTEwg
cGVyIHRoZQorICAgICAgICAgICAgLy8gU2hDb25zdHJ1Y3RDb21waWxlciBBUEkuCisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZiAgLy8gQU5HTEVfRU5BQkxFX1ZVTEtBTgorCisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvLyBVbmtub3duIGZvcm1hdC4gUmV0dXJuIE5V
TEwgcGVyIHRoZSBzaDo6Q29uc3RydWN0Q29tcGlsZXIgQVBJLgorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogfQogCiAvLwogLy8gRGVsZXRlIHRoZSBjb21waWxlciBtYWRlIGJ5
IENvbnN0cnVjdENvbXBpbGVyCiAvLwotdm9pZCBEZWxldGVDb21waWxlcihUQ29tcGlsZXIqIGNv
bXBpbGVyKQordm9pZCBEZWxldGVDb21waWxlcihUQ29tcGlsZXIgKmNvbXBpbGVyKQogewotICAg
IGRlbGV0ZSBjb21waWxlcjsKKyAgICBTYWZlRGVsZXRlKGNvbXBpbGVyKTsKIH0KKworfSAgLy8g
bmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9Db21tb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0NvbW1vbi5oCmluZGV4IDYwMjIzMjMyYWZjLi4zZTEyZDJhZGQx
MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvQ29tbW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvQ29tbW9uLmgKQEAgLTE4LDcgKzE4LDExIEBACiAjaW5jbHVkZSAiY29tbW9u
L2RlYnVnLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Qb29sQWxsb2MuaCIKIAot
c3RydWN0IFRTb3VyY2VMb2MgeworbmFtZXNwYWNlIHNoCit7CisKK3N0cnVjdCBUU291cmNlTG9j
Cit7CiAgICAgaW50IGZpcnN0X2ZpbGU7CiAgICAgaW50IGZpcnN0X2xpbmU7CiAgICAgaW50IGxh
c3RfZmlsZTsKQEAgLTI5LDI1ICszMywyNSBAQCBzdHJ1Y3QgVFNvdXJjZUxvYyB7CiAvLyBQdXQg
UE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURSBpbiBiYXNlIGNsYXNzZXMgdG8gbWFrZSB0aGVtIHVz
ZSB0aGlzIHNjaGVtZS4KIC8vCiAjZGVmaW5lIFBPT0xfQUxMT0NBVE9SX05FV19ERUxFVEUoKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZv
aWQqIG9wZXJhdG9yIG5ldyhzaXplX3QgcykgeyByZXR1cm4gR2V0R2xvYmFsUG9vbEFsbG9jYXRv
cigpLT5hbGxvY2F0ZShzKTsgfSAgIFwKLSAgICB2b2lkKiBvcGVyYXRvciBuZXcoc2l6ZV90LCB2
b2lkICpfV2hlcmUpIHsgcmV0dXJuIChfV2hlcmUpOyB9ICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgdm9pZCBvcGVyYXRvciBkZWxldGUodm9pZCopIHsgfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZv
aWQgKiwgdm9pZCAqKSB7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICB2b2lkKiBvcGVyYXRvciBuZXdbXShzaXplX3QgcykgeyByZXR1cm4gR2V0R2xvYmFs
UG9vbEFsbG9jYXRvcigpLT5hbGxvY2F0ZShzKTsgfSBcCi0gICAgdm9pZCogb3BlcmF0b3IgbmV3
W10oc2l6ZV90LCB2b2lkICpfV2hlcmUpIHsgcmV0dXJuIChfV2hlcmUpOyB9ICAgICAgICAgICAg
ICAgICAgXAotICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCopIHsgfSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIG9wZXJhdG9y
IGRlbGV0ZVtdKHZvaWQgKiwgdm9pZCAqKSB7IH0KKyAgICB2b2lkICpvcGVyYXRvciBuZXcoc2l6
ZV90IHMpIHsgcmV0dXJuIEdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKS0+YWxsb2NhdGUocyk7IH0g
ICBcCisgICAgdm9pZCAqb3BlcmF0b3IgbmV3KHNpemVfdCwgdm9pZCAqX1doZXJlKSB7IHJldHVy
biAoX1doZXJlKTsgfSAgICAgICAgICAgICAgICAgICAgXAorICAgIHZvaWQgb3BlcmF0b3IgZGVs
ZXRlKHZvaWQgKikge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSh2b2lkICosIHZvaWQgKikge30gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCAqb3BlcmF0
b3IgbmV3W10oc2l6ZV90IHMpIHsgcmV0dXJuIEdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKS0+YWxs
b2NhdGUocyk7IH0gXAorICAgIHZvaWQgKm9wZXJhdG9yIG5ld1tdKHNpemVfdCwgdm9pZCAqX1do
ZXJlKSB7IHJldHVybiAoX1doZXJlKTsgfSAgICAgICAgICAgICAgICAgIFwKKyAgICB2b2lkIG9w
ZXJhdG9yIGRlbGV0ZVtdKHZvaWQgKikge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2b2lkICosIHZv
aWQgKikge30KIAogLy8KIC8vIFBvb2wgdmVyc2lvbiBvZiBzdHJpbmcuCiAvLwogdHlwZWRlZiBw
b29sX2FsbG9jYXRvcjxjaGFyPiBUU3RyaW5nQWxsb2NhdG9yOwotdHlwZWRlZiBzdGQ6OmJhc2lj
X3N0cmluZyA8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiwgVFN0cmluZ0FsbG9jYXRvcj4g
VFN0cmluZzsKK3R5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0
czxjaGFyPiwgVFN0cmluZ0FsbG9jYXRvcj4gVFN0cmluZzsKIHR5cGVkZWYgc3RkOjpiYXNpY19v
c3RyaW5nc3RyZWFtPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4sIFRTdHJpbmdBbGxvY2F0
b3I+IFRTdHJpbmdTdHJlYW07Ci1pbmxpbmUgVFN0cmluZyogTmV3UG9vbFRTdHJpbmcoY29uc3Qg
Y2hhciogcykKK2lubGluZSBUU3RyaW5nICpOZXdQb29sVFN0cmluZyhjb25zdCBjaGFyICpzKQog
ewotCXZvaWQqIG1lbW9yeSA9IEdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKS0+YWxsb2NhdGUoc2l6
ZW9mKFRTdHJpbmcpKTsKLQlyZXR1cm4gbmV3KG1lbW9yeSkgVFN0cmluZyhzKTsKKyAgICB2b2lk
ICptZW1vcnkgPSBHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCktPmFsbG9jYXRlKHNpemVvZihUU3Ry
aW5nKSk7CisgICAgcmV0dXJuIG5ldyAobWVtb3J5KSBUU3RyaW5nKHMpOwogfQogCiAvLwpAQCAt
NjQsNiArNjgsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVD4KIGNsYXNzIFRWZWN0b3IgOiBwdWJsaWMg
c3RkOjp2ZWN0b3I8VCwgcG9vbF9hbGxvY2F0b3I8VD4+CiB7CiAgIHB1YmxpYzoKKyAgICBQT09M
X0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7CisKICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6dmVj
dG9yPFQsIHBvb2xfYWxsb2NhdG9yPFQ+Pjo6c2l6ZV90eXBlIHNpemVfdHlwZTsKICAgICBUVmVj
dG9yKCkgOiBzdGQ6OnZlY3RvcjxULCBwb29sX2FsbG9jYXRvcjxUPj4oKSB7fQogICAgIFRWZWN0
b3IoY29uc3QgcG9vbF9hbGxvY2F0b3I8VD4gJmEpIDogc3RkOjp2ZWN0b3I8VCwgcG9vbF9hbGxv
Y2F0b3I8VD4+KGEpIHt9CkBAIC03NCwxMSArODAsMTUgQEAgdGVtcGxhdGUgPGNsYXNzIEssIGNs
YXNzIEQsIGNsYXNzIENNUCA9IHN0ZDo6bGVzczxLPj4KIGNsYXNzIFRNYXAgOiBwdWJsaWMgc3Rk
OjptYXA8SywgRCwgQ01QLCBwb29sX2FsbG9jYXRvcjxzdGQ6OnBhaXI8Y29uc3QgSywgRD4+Pgog
ewogICBwdWJsaWM6CisgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURSgpOwogICAgIHR5cGVk
ZWYgcG9vbF9hbGxvY2F0b3I8c3RkOjpwYWlyPGNvbnN0IEssIEQ+PiB0QWxsb2NhdG9yOwogCiAg
ICAgVE1hcCgpIDogc3RkOjptYXA8SywgRCwgQ01QLCB0QWxsb2NhdG9yPigpIHt9CiAgICAgLy8g
dXNlIGNvcnJlY3QgdHdvLXN0YWdlIG5hbWUgbG9va3VwIHN1cHBvcnRlZCBpbiBnY2MgMy40IGFu
ZCBhYm92ZQotICAgIFRNYXAoY29uc3QgdEFsbG9jYXRvciYgYSkgOiBzdGQ6Om1hcDxLLCBELCBD
TVAsIHRBbGxvY2F0b3I+KHN0ZDo6bWFwPEssIEQsIENNUCwgdEFsbG9jYXRvcj46OmtleV9jb21w
YXJlKCksIGEpIHt9CisgICAgVE1hcChjb25zdCB0QWxsb2NhdG9yICZhKQorICAgICAgICA6IHN0
ZDo6bWFwPEssIEQsIENNUCwgdEFsbG9jYXRvcj4oc3RkOjptYXA8SywgRCwgQ01QLCB0QWxsb2Nh
dG9yPjo6a2V5X2NvbXBhcmUoKSwgYSkKKyAgICB7CisgICAgfQogfTsKIAogLy8gSW50ZWdlciB0
byBUU3RyaW5nIGNvbnZlcnNpb24KQEAgLTkyLDQgKzEwMiw2IEBAIGlubGluZSBUU3RyaW5nIHN0
cihUIGkpCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAotI2VuZGlmIC8vIENPTVBJTEVSX1RSQU5T
TEFUT1JfQ09NTU9OX0hfCit9ICAvLyBuYW1lc3BhY2Ugc2gKKworI2VuZGlmICAvLyBDT01QSUxF
Ul9UUkFOU0xBVE9SX0NPTU1PTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuY3BwCmluZGV4IGViNWRk
NTg1YzFjLi5hMDljNTA1OGZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NvbXBpbGVyLmNwcApAQCAtMTYsMTMg
KzE2LDEyIEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9EZWZlckdsb2JhbEluaXRp
YWxpemVycy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0ZUdMRnJhZ0Nv
bG9yQnJvYWRjYXN0LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlUHJl
Y2lzaW9uLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Gb3JMb29wVW5yb2xsLmgi
CiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplLmgiCi0jaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplUGFyc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplVmFyaWFibGVzLmgiCiAjaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL1BydW5lRW1wdHlEZWNsYXJhdGlvbnMuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL1JlZ2VuZXJhdGVTdHJ1Y3ROYW1lcy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL1JlbW92ZVBvdy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUmV3
cml0ZURvV2hpbGUuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1NjYWxhcml6ZVZl
Y0FuZE1hdENvbnN0cnVjdG9yQXJncy5oIgpAQCAtMzAsMTAgKzI5LDE0IEBACiAjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9Vc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcy5oIgogI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVMaW1pdGF0aW9ucy5oIgogI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU11bHRpdmlld1dlYkdMLmgiCiAjaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU91dHB1dHMuaCIKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL1ZhcmlhYmxlUGFja2VyLmgiCiAjaW5jbHVkZSAidGhpcmRfcGFydHkvY29tcGls
ZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBuYW1lc3BhY2UK
IHsKIApAQCAtNzksMzcgKzgyLDYyIEBAIGJvb2wgSXNXZWJHTEJhc2VkU3BlYyhTaFNoYWRlclNw
ZWMgc3BlYykKIAogYm9vbCBJc0dMU0wxMzBPck5ld2VyKFNoU2hhZGVyT3V0cHV0IG91dHB1dCkK
IHsKLSAgICByZXR1cm4gKG91dHB1dCA9PSBTSF9HTFNMXzEzMF9PVVRQVVQgfHwKLSAgICAgICAg
ICAgIG91dHB1dCA9PSBTSF9HTFNMXzE0MF9PVVRQVVQgfHwKLSAgICAgICAgICAgIG91dHB1dCA9
PSBTSF9HTFNMXzE1MF9DT1JFX09VVFBVVCB8fAotICAgICAgICAgICAgb3V0cHV0ID09IFNIX0dM
U0xfMzMwX0NPUkVfT1VUUFVUIHx8Ci0gICAgICAgICAgICBvdXRwdXQgPT0gU0hfR0xTTF80MDBf
Q09SRV9PVVRQVVQgfHwKLSAgICAgICAgICAgIG91dHB1dCA9PSBTSF9HTFNMXzQxMF9DT1JFX09V
VFBVVCB8fAotICAgICAgICAgICAgb3V0cHV0ID09IFNIX0dMU0xfNDIwX0NPUkVfT1VUUFVUIHx8
Ci0gICAgICAgICAgICBvdXRwdXQgPT0gU0hfR0xTTF80MzBfQ09SRV9PVVRQVVQgfHwKLSAgICAg
ICAgICAgIG91dHB1dCA9PSBTSF9HTFNMXzQ0MF9DT1JFX09VVFBVVCB8fAotICAgICAgICAgICAg
b3V0cHV0ID09IFNIX0dMU0xfNDUwX0NPUkVfT1VUUFVUKTsKKyAgICByZXR1cm4gKG91dHB1dCA9
PSBTSF9HTFNMXzEzMF9PVVRQVVQgfHwgb3V0cHV0ID09IFNIX0dMU0xfMTQwX09VVFBVVCB8fAor
ICAgICAgICAgICAgb3V0cHV0ID09IFNIX0dMU0xfMTUwX0NPUkVfT1VUUFVUIHx8IG91dHB1dCA9
PSBTSF9HTFNMXzMzMF9DT1JFX09VVFBVVCB8fAorICAgICAgICAgICAgb3V0cHV0ID09IFNIX0dM
U0xfNDAwX0NPUkVfT1VUUFVUIHx8IG91dHB1dCA9PSBTSF9HTFNMXzQxMF9DT1JFX09VVFBVVCB8
fAorICAgICAgICAgICAgb3V0cHV0ID09IFNIX0dMU0xfNDIwX0NPUkVfT1VUUFVUIHx8IG91dHB1
dCA9PSBTSF9HTFNMXzQzMF9DT1JFX09VVFBVVCB8fAorICAgICAgICAgICAgb3V0cHV0ID09IFNI
X0dMU0xfNDQwX0NPUkVfT1VUUFVUIHx8IG91dHB1dCA9PSBTSF9HTFNMXzQ1MF9DT1JFX09VVFBV
VCk7Cit9CisKK2Jvb2wgSXNHTFNMNDIwT3JOZXdlcihTaFNoYWRlck91dHB1dCBvdXRwdXQpCit7
CisgICAgcmV0dXJuIChvdXRwdXQgPT0gU0hfR0xTTF80MjBfQ09SRV9PVVRQVVQgfHwgb3V0cHV0
ID09IFNIX0dMU0xfNDMwX0NPUkVfT1VUUFVUIHx8CisgICAgICAgICAgICBvdXRwdXQgPT0gU0hf
R0xTTF80NDBfQ09SRV9PVVRQVVQgfHwgb3V0cHV0ID09IFNIX0dMU0xfNDUwX0NPUkVfT1VUUFVU
KTsKK30KKworYm9vbCBJc0dMU0w0MTBPck9sZGVyKFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKK3sK
KyAgICByZXR1cm4gKG91dHB1dCA9PSBTSF9HTFNMXzEzMF9PVVRQVVQgfHwgb3V0cHV0ID09IFNI
X0dMU0xfMTQwX09VVFBVVCB8fAorICAgICAgICAgICAgb3V0cHV0ID09IFNIX0dMU0xfMTUwX0NP
UkVfT1VUUFVUIHx8IG91dHB1dCA9PSBTSF9HTFNMXzMzMF9DT1JFX09VVFBVVCB8fAorICAgICAg
ICAgICAgb3V0cHV0ID09IFNIX0dMU0xfNDAwX0NPUkVfT1VUUFVUIHx8IG91dHB1dCA9PSBTSF9H
TFNMXzQxMF9DT1JFX09VVFBVVCk7Cit9CisKK2Jvb2wgUmVtb3ZlSW52YXJpYW50KHNoOjpHTGVu
dW0gc2hhZGVyVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpCit7CisgICAgaWYg
KChjb21waWxlT3B0aW9ucyAmIFNIX0RPTlRfUkVNT1ZFX0lOVkFSSUFOVF9GT1JfRlJBR01FTlRf
SU5QVVQpID09IDAgJiYKKyAgICAgICAgc2hhZGVyVHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIg
JiYgSXNHTFNMNDIwT3JOZXdlcihvdXRwdXRUeXBlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICBpZiAoKGNvbXBpbGVPcHRpb25zICYgU0hfUkVNT1ZFX0lOVkFSSUFOVF9BTkRfQ0VOVFJP
SURfRk9SX0VTU0wzKSAhPSAwICYmCisgICAgICAgIHNoYWRlclZlcnNpb24gPj0gMzAwICYmIHNo
YWRlclR5cGUgPT0gR0xfVkVSVEVYX1NIQURFUikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIHNpemVfdCBHZXRHbG9iYWxNYXhUb2tlblNpemUoU2hTaGFk
ZXJTcGVjIHNwZWMpCiB7Ci0gICAgLy8gV2ViR0wgZGVmaW5lcyBhIG1heCB0b2tlbiBsZWdudGgg
b2YgMjU2LCB3aGlsZSBFUzIgbGVhdmVzIG1heCB0b2tlbgorICAgIC8vIFdlYkdMIGRlZmluZXMg
YSBtYXggdG9rZW4gbGVuZ3RoIG9mIDI1Niwgd2hpbGUgRVMyIGxlYXZlcyBtYXggdG9rZW4KICAg
ICAvLyBzaXplIHVuZGVmaW5lZC4gRVMzIGRlZmluZXMgYSBtYXggc2l6ZSBvZiAxMDI0IGNoYXJh
Y3RlcnMuCiAgICAgc3dpdGNoIChzcGVjKQogICAgIHsKLSAgICAgIGNhc2UgU0hfV0VCR0xfU1BF
QzoKLSAgICAgICAgcmV0dXJuIDI1NjsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAx
MDI0OworICAgICAgICBjYXNlIFNIX1dFQkdMX1NQRUM6CisgICAgICAgICAgICByZXR1cm4gMjU2
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIDEwMjQ7CiAgICAgfQogfQog
Ci1uYW1lc3BhY2UgeworbmFtZXNwYWNlCit7CiAKIGNsYXNzIFRTY29wZWRQb29sQWxsb2NhdG9y
CiB7CiAgIHB1YmxpYzoKLSAgICBUU2NvcGVkUG9vbEFsbG9jYXRvcihUUG9vbEFsbG9jYXRvciog
YWxsb2NhdG9yKSA6IG1BbGxvY2F0b3IoYWxsb2NhdG9yKQorICAgIFRTY29wZWRQb29sQWxsb2Nh
dG9yKFRQb29sQWxsb2NhdG9yICphbGxvY2F0b3IpIDogbUFsbG9jYXRvcihhbGxvY2F0b3IpCiAg
ICAgewogICAgICAgICBtQWxsb2NhdG9yLT5wdXNoKCk7CiAgICAgICAgIFNldEdsb2JhbFBvb2xB
bGxvY2F0b3IobUFsbG9jYXRvcik7CkBAIC0xMjEsMTMgKzE0OSwxMyBAQCBjbGFzcyBUU2NvcGVk
UG9vbEFsbG9jYXRvcgogICAgIH0KIAogICBwcml2YXRlOgotICAgIFRQb29sQWxsb2NhdG9yKiBt
QWxsb2NhdG9yOworICAgIFRQb29sQWxsb2NhdG9yICptQWxsb2NhdG9yOwogfTsKIAogY2xhc3Mg
VFNjb3BlZFN5bWJvbFRhYmxlTGV2ZWwKIHsKICAgcHVibGljOgotICAgIFRTY29wZWRTeW1ib2xU
YWJsZUxldmVsKFRTeW1ib2xUYWJsZSogdGFibGUpIDogbVRhYmxlKHRhYmxlKQorICAgIFRTY29w
ZWRTeW1ib2xUYWJsZUxldmVsKFRTeW1ib2xUYWJsZSAqdGFibGUpIDogbVRhYmxlKHRhYmxlKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1UYWJsZS0+YXRCdWlsdEluTGV2ZWwoKSk7CiAgICAgICAg
IG1UYWJsZS0+cHVzaCgpOwpAQCAtMTM5LDI1ICsxNjcsMjUgQEAgY2xhc3MgVFNjb3BlZFN5bWJv
bFRhYmxlTGV2ZWwKICAgICB9CiAKICAgcHJpdmF0ZToKLSAgICBUU3ltYm9sVGFibGUqIG1UYWJs
ZTsKKyAgICBUU3ltYm9sVGFibGUgKm1UYWJsZTsKIH07CiAKIGludCBNYXBTcGVjVG9TaGFkZXJW
ZXJzaW9uKFNoU2hhZGVyU3BlYyBzcGVjKQogewogICAgIHN3aXRjaCAoc3BlYykKICAgICB7Ci0g
ICAgICBjYXNlIFNIX0dMRVMyX1NQRUM6Ci0gICAgICBjYXNlIFNIX1dFQkdMX1NQRUM6Ci0gICAg
ICAgIHJldHVybiAxMDA7Ci0gICAgICBjYXNlIFNIX0dMRVMzX1NQRUM6Ci0gICAgICBjYXNlIFNI
X1dFQkdMMl9TUEVDOgotICAgICAgICByZXR1cm4gMzAwOwotICAgICAgY2FzZSBTSF9HTEVTM18x
X1NQRUM6Ci0gICAgICBjYXNlIFNIX1dFQkdMM19TUEVDOgotICAgICAgICAgIHJldHVybiAzMTA7
Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgY2FzZSBTSF9HTEVTMl9TUEVDOgorICAgICAgICBjYXNlIFNIX1dFQkdMX1NQ
RUM6CisgICAgICAgICAgICByZXR1cm4gMTAwOworICAgICAgICBjYXNlIFNIX0dMRVMzX1NQRUM6
CisgICAgICAgIGNhc2UgU0hfV0VCR0wyX1NQRUM6CisgICAgICAgICAgICByZXR1cm4gMzAwOwor
ICAgICAgICBjYXNlIFNIX0dMRVMzXzFfU1BFQzoKKyAgICAgICAgY2FzZSBTSF9XRUJHTDNfU1BF
QzoKKyAgICAgICAgICAgIHJldHVybiAzMTA7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQogCkBAIC0x
ODcsNiArMjE1LDcgQEAgVENvbXBpbGVyOjpUQ29tcGlsZXIoc2g6OkdMZW51bSB0eXBlLCBTaFNo
YWRlclNwZWMgc3BlYywgU2hTaGFkZXJPdXRwdXQgb3V0cHV0KQogICAgICAgZnJhZ21lbnRQcmVj
aXNpb25IaWdoKGZhbHNlKSwKICAgICAgIGNsYW1waW5nU3RyYXRlZ3koU0hfQ0xBTVBfV0lUSF9D
TEFNUF9JTlRSSU5TSUMpLAogICAgICAgYnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IoKSwKKyAgICAg
IG1EaWFnbm9zdGljcyhpbmZvU2luay5pbmZvKSwKICAgICAgIG1Tb3VyY2VQYXRoKE5VTEwpLAog
ICAgICAgbUNvbXB1dGVTaGFkZXJMb2NhbFNpemVEZWNsYXJlZChmYWxzZSksCiAgICAgICBtVGVt
cG9yYXJ5SW5kZXgoMCkKQEAgLTIwNywxMiArMjM2LDExIEBAIGJvb2wgVENvbXBpbGVyOjpzaG91
bGRSdW5Mb29wQW5kSW5kZXhpbmdWYWxpZGF0aW9uKFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9w
dGlvCiAgICAgICAgICAgIChjb21waWxlT3B0aW9ucyAmIFNIX1ZBTElEQVRFX0xPT1BfSU5ERVhJ
TkcpOwogfQogCi1ib29sIFRDb21waWxlcjo6SW5pdChjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMm
IHJlc291cmNlcykKK2Jvb2wgVENvbXBpbGVyOjpJbml0KGNvbnN0IFNoQnVpbHRJblJlc291cmNl
cyAmcmVzb3VyY2VzKQogewotICAgIHNoYWRlclZlcnNpb24gPSAxMDA7Ci0gICAgbWF4VW5pZm9y
bVZlY3RvcnMgPSAoc2hhZGVyVHlwZSA9PSBHTF9WRVJURVhfU0hBREVSKSA/Ci0gICAgICAgIHJl
c291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyA6Ci0gICAgICAgIHJlc291cmNlcy5NYXhG
cmFnbWVudFVuaWZvcm1WZWN0b3JzOworICAgIHNoYWRlclZlcnNpb24gICAgID0gMTAwOworICAg
IG1heFVuaWZvcm1WZWN0b3JzID0gKHNoYWRlclR5cGUgPT0gR0xfVkVSVEVYX1NIQURFUikgPyBy
ZXNvdXJjZXMuTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVzb3VyY2VzLk1heEZyYWdtZW50
VW5pZm9ybVZlY3RvcnM7CiAgICAgbWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkgPSByZXNvdXJjZXMu
TWF4RXhwcmVzc2lvbkNvbXBsZXhpdHk7CiAgICAgbWF4Q2FsbFN0YWNrRGVwdGggICAgICAgPSBy
ZXNvdXJjZXMuTWF4Q2FsbFN0YWNrRGVwdGg7CiAgICAgbWF4RnVuY3Rpb25QYXJhbWV0ZXJzICAg
PSByZXNvdXJjZXMuTWF4RnVuY3Rpb25QYXJhbWV0ZXJzOwpAQCAtMjYxLDI1ICsyODksMjMgQEAg
VEludGVybUJsb2NrICpUQ29tcGlsZXI6OmNvbXBpbGVUcmVlSW1wbChjb25zdCBjaGFyICpjb25z
dCBzaGFkZXJTdHJpbmdzW10sCiAgICAgfQogCiAgICAgVFBhcnNlQ29udGV4dCBwYXJzZUNvbnRl
eHQoc3ltYm9sVGFibGUsIGV4dGVuc2lvbkJlaGF2aW9yLCBzaGFkZXJUeXBlLCBzaGFkZXJTcGVj
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVPcHRpb25zLCB0cnVlLCBp
bmZvU2luaywgZ2V0UmVzb3VyY2VzKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbXBpbGVPcHRpb25zLCB0cnVlLCAmbURpYWdub3N0aWNzLCBnZXRSZXNvdXJjZXMoKSk7CiAK
ICAgICBwYXJzZUNvbnRleHQuc2V0RnJhZ21lbnRQcmVjaXNpb25IaWdoT25FU1NMMShmcmFnbWVu
dFByZWNpc2lvbkhpZ2gpOwotICAgIFNldEdsb2JhbFBhcnNlQ29udGV4dCgmcGFyc2VDb250ZXh0
KTsKIAogICAgIC8vIFdlIHByZXNlcnZlIHN5bWJvbHMgYXQgdGhlIGJ1aWx0LWluIGxldmVsIGZy
b20gY29tcGlsZS10by1jb21waWxlLgogICAgIC8vIFN0YXJ0IHB1c2hpbmcgdGhlIHVzZXItZGVm
aW5lZCBzeW1ib2xzIGF0IGdsb2JhbCBsZXZlbC4KICAgICBUU2NvcGVkU3ltYm9sVGFibGVMZXZl
bCBzY29wZWRTeW1ib2xMZXZlbCgmc3ltYm9sVGFibGUpOwogCiAgICAgLy8gUGFyc2Ugc2hhZGVy
LgotICAgIGJvb2wgc3VjY2VzcyA9Ci0gICAgICAgIChQYVBhcnNlU3RyaW5ncyhudW1TdHJpbmdz
IC0gZmlyc3RTb3VyY2UsICZzaGFkZXJTdHJpbmdzW2ZpcnN0U291cmNlXSwgbnVsbHB0ciwgJnBh
cnNlQ29udGV4dCkgPT0gMCkgJiYKLSAgICAgICAgKHBhcnNlQ29udGV4dC5nZXRUcmVlUm9vdCgp
ICE9IG51bGxwdHIpOworICAgIGJvb2wgc3VjY2VzcyA9IChQYVBhcnNlU3RyaW5ncyhudW1TdHJp
bmdzIC0gZmlyc3RTb3VyY2UsICZzaGFkZXJTdHJpbmdzW2ZpcnN0U291cmNlXSwgbnVsbHB0ciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhcnNlQ29udGV4dCkgPT0gMCkg
JiYKKyAgICAgICAgICAgICAgICAgICAocGFyc2VDb250ZXh0LmdldFRyZWVSb290KCkgIT0gbnVs
bHB0cik7CiAKICAgICBzaGFkZXJWZXJzaW9uID0gcGFyc2VDb250ZXh0LmdldFNoYWRlclZlcnNp
b24oKTsKICAgICBpZiAoc3VjY2VzcyAmJiBNYXBTcGVjVG9TaGFkZXJWZXJzaW9uKHNoYWRlclNw
ZWMpIDwgc2hhZGVyVmVyc2lvbikKICAgICB7Ci0gICAgICAgIGluZm9TaW5rLmluZm8ucHJlZml4
KEVQcmVmaXhFcnJvcik7Ci0gICAgICAgIGluZm9TaW5rLmluZm8gPDwgInVuc3VwcG9ydGVkIHNo
YWRlciB2ZXJzaW9uIjsKKyAgICAgICAgbURpYWdub3N0aWNzLmdsb2JhbEVycm9yKCJ1bnN1cHBv
cnRlZCBzaGFkZXIgdmVyc2lvbiIpOwogICAgICAgICBzdWNjZXNzID0gZmFsc2U7CiAgICAgfQog
CkBAIC0yOTMsMTEgKzMxOSwyMiBAQCBUSW50ZXJtQmxvY2sgKlRDb21waWxlcjo6Y29tcGlsZVRy
ZWVJbXBsKGNvbnN0IGNoYXIgKmNvbnN0IHNoYWRlclN0cmluZ3NbXSwKICAgICAgICAgbUNvbXB1
dGVTaGFkZXJMb2NhbFNpemVEZWNsYXJlZCA9IHBhcnNlQ29udGV4dC5pc0NvbXB1dGVTaGFkZXJM
b2NhbFNpemVEZWNsYXJlZCgpOwogICAgICAgICBtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZSAgICAg
ICAgID0gcGFyc2VDb250ZXh0LmdldENvbXB1dGVTaGFkZXJMb2NhbFNpemUoKTsKIAorICAgICAg
ICBtTnVtVmlld3MgPSBwYXJzZUNvbnRleHQuZ2V0TnVtVmlld3MoKTsKKwogICAgICAgICByb290
ID0gcGFyc2VDb250ZXh0LmdldFRyZWVSb290KCk7CiAKICAgICAgICAgLy8gSGlnaHAgbWlnaHQg
aGF2ZSBiZWVuIGF1dG8tZW5hYmxlZCBiYXNlZCBvbiBzaGFkZXIgdmVyc2lvbgogICAgICAgICBm
cmFnbWVudFByZWNpc2lvbkhpZ2ggPSBwYXJzZUNvbnRleHQuZ2V0RnJhZ21lbnRQcmVjaXNpb25I
aWdoKCk7CiAKKyAgICAgICAgaWYgKHN1Y2Nlc3MgJiYgKElzV2ViR0xCYXNlZFNwZWMoc2hhZGVy
U3BlYykgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIElzRXh0ZW5zaW9uRW5hYmxlZChleHRl
bnNpb25CZWhhdmlvciwgIkdMX09WUl9tdWx0aXZpZXciKSAmJgorICAgICAgICAgICAgICAgICAg
ICAgICAgSXNFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbkJlaGF2aW9yLCAiR0xfT1ZSX211bHRp
dmlldzIiKSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIENhbid0IGVuYWJsZSBib3RoIGV4
dGVuc2lvbnMgYXQgdGhlIHNhbWUgdGltZS4KKyAgICAgICAgICAgIG1EaWFnbm9zdGljcy5nbG9i
YWxFcnJvcigiQ2FuJ3QgZW5hYmxlIGJvdGggT1ZSX211bHRpdmlldyBhbmQgT1ZSX211bHRpdmll
dzIiKTsKKyAgICAgICAgICAgIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICAgICAgfQorCiAgICAgICAg
IC8vIERpc2FsbG93IGV4cHJlc3Npb25zIGRlZW1lZCB0b28gY29tcGxleC4KICAgICAgICAgaWYg
KHN1Y2Nlc3MgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfTElNSVRfRVhQUkVTU0lPTl9DT01QTEVY
SVRZKSkKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBsaW1pdEV4cHJlc3Npb25Db21wbGV4aXR5KHJv
b3QpOwpAQCAtMzIwLDcgKzM1Nyw4IEBAIFRJbnRlcm1CbG9jayAqVENvbXBpbGVyOjpjb21waWxl
VHJlZUltcGwoY29uc3QgY2hhciAqY29uc3Qgc2hhZGVyU3RyaW5nc1tdLAogICAgICAgICBpZiAo
c3VjY2VzcyAmJiAhKGNvbXBpbGVPcHRpb25zICYgU0hfRE9OVF9QUlVORV9VTlVTRURfRlVOQ1RJ
T05TKSkKICAgICAgICAgICAgIHN1Y2Nlc3MgPSBwcnVuZVVudXNlZEZ1bmN0aW9ucyhyb290KTsK
IAotICAgICAgICAvLyBQcnVuZSBlbXB0eSBkZWNsYXJhdGlvbnMgdG8gd29yayBhcm91bmQgZHJp
dmVyIGJ1Z3MgYW5kIHRvIGtlZXAgZGVjbGFyYXRpb24gb3V0cHV0IHNpbXBsZS4KKyAgICAgICAg
Ly8gUHJ1bmUgZW1wdHkgZGVjbGFyYXRpb25zIHRvIHdvcmsgYXJvdW5kIGRyaXZlciBidWdzIGFu
ZCB0byBrZWVwIGRlY2xhcmF0aW9uIG91dHB1dAorICAgICAgICAvLyBzaW1wbGUuCiAgICAgICAg
IGlmIChzdWNjZXNzKQogICAgICAgICAgICAgUHJ1bmVFbXB0eURlY2xhcmF0aW9ucyhyb290KTsK
IApAQCAtMzI4LDcgKzM2NiwxNCBAQCBUSW50ZXJtQmxvY2sgKlRDb21waWxlcjo6Y29tcGlsZVRy
ZWVJbXBsKGNvbnN0IGNoYXIgKmNvbnN0IHNoYWRlclN0cmluZ3NbXSwKICAgICAgICAgICAgIHN1
Y2Nlc3MgPSB2YWxpZGF0ZU91dHB1dHMocm9vdCk7CiAKICAgICAgICAgaWYgKHN1Y2Nlc3MgJiYg
c2hvdWxkUnVuTG9vcEFuZEluZGV4aW5nVmFsaWRhdGlvbihjb21waWxlT3B0aW9ucykpCi0gICAg
ICAgICAgICBzdWNjZXNzID0gdmFsaWRhdGVMaW1pdGF0aW9ucyhyb290KTsKKyAgICAgICAgICAg
IHN1Y2Nlc3MgPQorICAgICAgICAgICAgICAgIFZhbGlkYXRlTGltaXRhdGlvbnMocm9vdCwgc2hh
ZGVyVHlwZSwgc3ltYm9sVGFibGUsIHNoYWRlclZlcnNpb24sICZtRGlhZ25vc3RpY3MpOworCisg
ICAgICAgIGJvb2wgbXVsdGl2aWV3MiA9IElzRXh0ZW5zaW9uRW5hYmxlZChleHRlbnNpb25CZWhh
dmlvciwgIkdMX09WUl9tdWx0aXZpZXcyIik7CisgICAgICAgIGlmIChzdWNjZXNzICYmIGNvbXBp
bGVSZXNvdXJjZXMuT1ZSX211bHRpdmlldyAmJiBJc1dlYkdMQmFzZWRTcGVjKHNoYWRlclNwZWMp
ICYmCisgICAgICAgICAgICAoSXNFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbkJlaGF2aW9yLCAi
R0xfT1ZSX211bHRpdmlldyIpIHx8IG11bHRpdmlldzIpKQorICAgICAgICAgICAgc3VjY2VzcyA9
IFZhbGlkYXRlTXVsdGl2aWV3V2ViR0wocm9vdCwgc2hhZGVyVHlwZSwgc3ltYm9sVGFibGUsIHNo
YWRlclZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtdWx0aXZpZXcyLCAmbURpYWdub3N0aWNzKTsKIAogICAgICAgICAvLyBGYWlsIGNvbXBpbGF0
aW9uIGlmIHByZWNpc2lvbiBlbXVsYXRpb24gbm90IHN1cHBvcnRlZC4KICAgICAgICAgaWYgKHN1
Y2Nlc3MgJiYgZ2V0UmVzb3VyY2VzKCkuV0VCR0xfZGVidWdfc2hhZGVyX3ByZWNpc2lvbiAmJgpA
QCAtMzM2LDI4ICszODEsNyBAQCBUSW50ZXJtQmxvY2sgKlRDb21waWxlcjo6Y29tcGlsZVRyZWVJ
bXBsKGNvbnN0IGNoYXIgKmNvbnN0IHNoYWRlclN0cmluZ3NbXSwKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCFFbXVsYXRlUHJlY2lzaW9uOjpTdXBwb3J0ZWRJbkxhbmd1YWdlKG91dHB1dFR5
cGUpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGluZm9TaW5rLmluZm8ucHJlZml4
KEVQcmVmaXhFcnJvcik7Ci0gICAgICAgICAgICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiUHJlY2lz
aW9uIGVtdWxhdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIG91dHB1dCB0eXBlLiI7Ci0gICAg
ICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgLy8gVW5yb2xsIGZvci1sb29wIG1hcmt1cCBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIg
dmFsaWRhdGVMaW1pdGF0aW9ucyBwYXNzLgotICAgICAgICBpZiAoc3VjY2VzcyAmJiAoY29tcGls
ZU9wdGlvbnMgJiBTSF9VTlJPTExfRk9SX0xPT1BfV0lUSF9JTlRFR0VSX0lOREVYKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgRm9yTG9vcFVucm9sbE1hcmtlciBtYXJrZXIoRm9yTG9vcFVucm9s
bE1hcmtlcjo6a0ludGVnZXJJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNob3VsZFJ1bkxvb3BBbmRJbmRleGluZ1ZhbGlkYXRpb24oY29tcGlsZU9wdGlvbnMp
KTsKLSAgICAgICAgICAgIHJvb3QtPnRyYXZlcnNlKCZtYXJrZXIpOwotICAgICAgICB9Ci0gICAg
ICAgIGlmIChzdWNjZXNzICYmIChjb21waWxlT3B0aW9ucyAmIFNIX1VOUk9MTF9GT1JfTE9PUF9X
SVRIX1NBTVBMRVJfQVJSQVlfSU5ERVgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBGb3JMb29w
VW5yb2xsTWFya2VyIG1hcmtlcihGb3JMb29wVW5yb2xsTWFya2VyOjprU2FtcGxlckFycmF5SW5k
ZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRSdW5Mb29w
QW5kSW5kZXhpbmdWYWxpZGF0aW9uKGNvbXBpbGVPcHRpb25zKSk7Ci0gICAgICAgICAgICByb290
LT50cmF2ZXJzZSgmbWFya2VyKTsKLSAgICAgICAgICAgIGlmIChtYXJrZXIuc2FtcGxlckFycmF5
SW5kZXhJc0Zsb2F0TG9vcEluZGV4KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
aW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEVycm9yKTsKLSAgICAgICAgICAgICAgICBpbmZv
U2luay5pbmZvIDw8ICJzYW1wbGVyIGFycmF5IGluZGV4IGlzIGZsb2F0IGxvb3AgaW5kZXgiOwor
ICAgICAgICAgICAgICAgIG1EaWFnbm9zdGljcy5nbG9iYWxFcnJvcigiUHJlY2lzaW9uIGVtdWxh
dGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0aGlzIG91dHB1dCB0eXBlLiIpOwogICAgICAgICAgICAg
ICAgIHN1Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzY5LDcg
KzM5Myw3IEBAIFRJbnRlcm1CbG9jayAqVENvbXBpbGVyOjpjb21waWxlVHJlZUltcGwoY29uc3Qg
Y2hhciAqY29uc3Qgc2hhZGVyU3RyaW5nc1tdLAogICAgICAgICAgICAgR2V0R2xvYmFsUG9vbEFs
bG9jYXRvcigpLT5sb2NrKCk7CiAgICAgICAgICAgICBpbml0QnVpbHRJbkZ1bmN0aW9uRW11bGF0
b3IoJmJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLCBjb21waWxlT3B0aW9ucyk7CiAgICAgICAgICAg
ICBHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCktPnVubG9jaygpOwotICAgICAgICAgICAgYnVpbHRJ
bkZ1bmN0aW9uRW11bGF0b3IuTWFya0J1aWx0SW5GdW5jdGlvbnNGb3JFbXVsYXRpb24ocm9vdCk7
CisgICAgICAgICAgICBidWlsdEluRnVuY3Rpb25FbXVsYXRvci5tYXJrQnVpbHRJbkZ1bmN0aW9u
c0ZvckVtdWxhdGlvbihyb290KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIENsYW1waW5nIHVu
aWZvcm0gYXJyYXkgYm91bmRzIG5lZWRzIHRvIGhhcHBlbiBhZnRlciB2YWxpZGF0ZUxpbWl0YXRp
b25zIHBhc3MuCkBAIC00MTMsOCArNDM3LDcgQEAgVEludGVybUJsb2NrICpUQ29tcGlsZXI6OmNv
bXBpbGVUcmVlSW1wbChjb25zdCBjaGFyICpjb25zdCBzaGFkZXJTdHJpbmdzW10sCiAgICAgICAg
ICAgICAgICAgc3VjY2VzcyA9IGVuZm9yY2VQYWNraW5nUmVzdHJpY3Rpb25zKCk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEVycm9yKTsKLSAgICAgICAgICAgICAg
ICAgICAgaW5mb1NpbmsuaW5mbyA8PCAidG9vIG1hbnkgdW5pZm9ybXMiOworICAgICAgICAgICAg
ICAgICAgICBtRGlhZ25vc3RpY3MuZ2xvYmFsRXJyb3IoInRvbyBtYW55IHVuaWZvcm1zIik7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHN1Y2Nlc3Mg
JiYgKGNvbXBpbGVPcHRpb25zICYgU0hfSU5JVF9PVVRQVVRfVkFSSUFCTEVTKSkKQEAgLTQyMywx
MSArNDQ2LDE1IEBAIFRJbnRlcm1CbG9jayAqVENvbXBpbGVyOjpjb21waWxlVHJlZUltcGwoY29u
c3QgY2hhciAqY29uc3Qgc2hhZGVyU3RyaW5nc1tdLAogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKKyAgICAgICAgLy8gUmVtb3ZpbmcgaW52YXJpYW50IGRlY2xhcmF0aW9ucyBtdXN0IGJlIGRv
bmUgYWZ0ZXIgY29sbGVjdGluZyB2YXJpYWJsZXMuCisgICAgICAgIC8vIE90aGVyd2lzZSwgYnVp
bHQtaW4gaW52YXJpYW50IGRlY2xhcmF0aW9ucyBkb24ndCBhcHBseS4KKyAgICAgICAgaWYgKHN1
Y2Nlc3MgJiYgUmVtb3ZlSW52YXJpYW50KHNoYWRlclR5cGUsIHNoYWRlclZlcnNpb24sIG91dHB1
dFR5cGUsIGNvbXBpbGVPcHRpb25zKSkKKyAgICAgICAgICAgIHNoOjpSZW1vdmVJbnZhcmlhbnRE
ZWNsYXJhdGlvbihyb290KTsKKwogICAgICAgICBpZiAoc3VjY2VzcyAmJiAoY29tcGlsZU9wdGlv
bnMgJiBTSF9TQ0FMQVJJWkVfVkVDX0FORF9NQVRfQ09OU1RSVUNUT1JfQVJHUykpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIFNjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncyBzY2FsYXJp
emVyKAotICAgICAgICAgICAgICAgIHNoYWRlclR5cGUsIGZyYWdtZW50UHJlY2lzaW9uSGlnaCk7
Ci0gICAgICAgICAgICByb290LT50cmF2ZXJzZSgmc2NhbGFyaXplcik7CisgICAgICAgICAgICBT
Y2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3Mocm9vdCwgc2hhZGVyVHlwZSwgZnJhZ21l
bnRQcmVjaXNpb25IaWdoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZtVGVtcG9yYXJ5SW5kZXgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHN1Y2Nl
c3MgJiYgKGNvbXBpbGVPcHRpb25zICYgU0hfUkVHRU5FUkFURV9TVFJVQ1RfTkFNRVMpKQpAQCAt
NDQ5LDcgKzQ3Niw2IEBAIFRJbnRlcm1CbG9jayAqVENvbXBpbGVyOjpjb21waWxlVHJlZUltcGwo
Y29uc3QgY2hhciAqY29uc3Qgc2hhZGVyU3RyaW5nc1tdLAogICAgICAgICB9CiAgICAgfQogCi0g
ICAgU2V0R2xvYmFsUGFyc2VDb250ZXh0KE5VTEwpOwogICAgIGlmIChzdWNjZXNzKQogICAgICAg
ICByZXR1cm4gcm9vdDsKIApAQCAtNDc2LDE3ICs1MDIsNiBAQCBib29sIFRDb21waWxlcjo6Y29t
cGlsZShjb25zdCBjaGFyICpjb25zdCBzaGFkZXJTdHJpbmdzW10sCiAgICAgICAgIGNvbXBpbGVP
cHRpb25zIHw9IFNIX0ZMQVRURU5fUFJBR01BX1NUREdMX0lOVkFSSUFOVF9BTEw7CiAgICAgfQog
Ci0gICAgU2hDb21waWxlT3B0aW9ucyB1bnJvbGxGbGFncyA9Ci0gICAgICAgIFNIX1VOUk9MTF9G
T1JfTE9PUF9XSVRIX0lOVEVHRVJfSU5ERVggfCBTSF9VTlJPTExfRk9SX0xPT1BfV0lUSF9TQU1Q
TEVSX0FSUkFZX0lOREVYOwotICAgIGlmICgoY29tcGlsZU9wdGlvbnMgJiBTSF9BRERfQU5EX1RS
VUVfVE9fTE9PUF9DT05ESVRJT04pICE9IDAgJiYKLSAgICAgICAgKGNvbXBpbGVPcHRpb25zICYg
dW5yb2xsRmxhZ3MpICE9IDApCi0gICAgewotICAgICAgICBpbmZvU2luay5pbmZvLnByZWZpeChF
UHJlZml4RXJyb3IpOwotICAgICAgICBpbmZvU2luay5pbmZvCi0gICAgICAgICAgICA8PCAiVW5z
dXBwb3J0ZWQgY29tcGlsZSBmbGFnIGNvbWJpbmF0aW9uOiB1bnJvbGwgJiBBRERfVFJVRV9UT19M
T09QX0NPTkRJVElPTiI7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KICAgICBUU2Nv
cGVkUG9vbEFsbG9jYXRvciBzY29wZWRBbGxvYygmYWxsb2NhdG9yKTsKICAgICBUSW50ZXJtQmxv
Y2sgKnJvb3QgPSBjb21waWxlVHJlZUltcGwoc2hhZGVyU3RyaW5ncywgbnVtU3RyaW5ncywgY29t
cGlsZU9wdGlvbnMpOwogCkBAIC01MDcsNDAgKzUyMiw0NSBAQCBib29sIFRDb21waWxlcjo6Y29t
cGlsZShjb25zdCBjaGFyICpjb25zdCBzaGFkZXJTdHJpbmdzW10sCiAKIGJvb2wgVENvbXBpbGVy
OjpJbml0QnVpbHRJblN5bWJvbFRhYmxlKGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVzb3Vy
Y2VzKQogeworICAgIGlmIChyZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgPCAxKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAocmVzb3VyY2VzLkVYVF9ibGVuZF9m
dW5jX2V4dGVuZGVkICYmIHJlc291cmNlcy5NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnMgPCAxKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIGNvbXBpbGVSZXNvdXJj
ZXMgPSByZXNvdXJjZXM7CiAgICAgc2V0UmVzb3VyY2VTdHJpbmcoKTsKIAogICAgIGFzc2VydChz
eW1ib2xUYWJsZS5pc0VtcHR5KCkpOwotICAgIHN5bWJvbFRhYmxlLnB1c2goKTsgICAvLyBDT01N
T05fQlVJTFRJTlMKLSAgICBzeW1ib2xUYWJsZS5wdXNoKCk7ICAgLy8gRVNTTDFfQlVJTFRJTlMK
LSAgICBzeW1ib2xUYWJsZS5wdXNoKCk7ICAgLy8gRVNTTDNfQlVJTFRJTlMKLSAgICBzeW1ib2xU
YWJsZS5wdXNoKCk7ICAgLy8gRVNTTDNfMV9CVUlMVElOUworICAgIHN5bWJvbFRhYmxlLnB1c2go
KTsgIC8vIENPTU1PTl9CVUlMVElOUworICAgIHN5bWJvbFRhYmxlLnB1c2goKTsgIC8vIEVTU0wx
X0JVSUxUSU5TCisgICAgc3ltYm9sVGFibGUucHVzaCgpOyAgLy8gRVNTTDNfQlVJTFRJTlMKKyAg
ICBzeW1ib2xUYWJsZS5wdXNoKCk7ICAvLyBFU1NMM18xX0JVSUxUSU5TCiAKICAgICBUUHVibGlj
VHlwZSBpbnRlZ2VyOwotICAgIGludGVnZXIuc2V0QmFzaWNUeXBlKEVidEludCk7Ci0gICAgaW50
ZWdlci5pbml0aWFsaXplU2l6ZUZvclNjYWxhclR5cGVzKCk7Ci0gICAgaW50ZWdlci5hcnJheSA9
IGZhbHNlOworICAgIGludGVnZXIuaW5pdGlhbGl6ZUJhc2ljVHlwZShFYnRJbnQpOwogCiAgICAg
VFB1YmxpY1R5cGUgZmxvYXRpbmdQb2ludDsKLSAgICBmbG9hdGluZ1BvaW50LnNldEJhc2ljVHlw
ZShFYnRGbG9hdCk7Ci0gICAgZmxvYXRpbmdQb2ludC5pbml0aWFsaXplU2l6ZUZvclNjYWxhclR5
cGVzKCk7Ci0gICAgZmxvYXRpbmdQb2ludC5hcnJheSA9IGZhbHNlOworICAgIGZsb2F0aW5nUG9p
bnQuaW5pdGlhbGl6ZUJhc2ljVHlwZShFYnRGbG9hdCk7CiAKLSAgICBzd2l0Y2goc2hhZGVyVHlw
ZSkKKyAgICBzd2l0Y2ggKHNoYWRlclR5cGUpCiAgICAgewotICAgICAgY2FzZSBHTF9GUkFHTUVO
VF9TSEFERVI6Ci0gICAgICAgIHN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oaW50ZWdl
ciwgRWJwTWVkaXVtKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1ZFUlRFWF9TSEFE
RVI6Ci0gICAgICAgIHN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oaW50ZWdlciwgRWJw
SGlnaCk7Ci0gICAgICAgIHN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oZmxvYXRpbmdQ
b2ludCwgRWJwSGlnaCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9DT01QVVRFX1NI
QURFUjoKLSAgICAgICAgICBzeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKGludGVnZXIs
IEVicEhpZ2gpOwotICAgICAgICAgIHN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oZmxv
YXRpbmdQb2ludCwgRWJwSGlnaCk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0Ogot
ICAgICAgICBhc3NlcnQoZmFsc2UgJiYgIkxhbmd1YWdlIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICAg
ICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVI6CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5zZXRE
ZWZhdWx0UHJlY2lzaW9uKGludGVnZXIsIEVicE1lZGl1bSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBHTF9WRVJURVhfU0hBREVSOgorICAgICAgICAgICAgc3ltYm9sVGFibGUu
c2V0RGVmYXVsdFByZWNpc2lvbihpbnRlZ2VyLCBFYnBIaWdoKTsKKyAgICAgICAgICAgIHN5bWJv
bFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oZmxvYXRpbmdQb2ludCwgRWJwSGlnaCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9DT01QVVRFX1NIQURFUjoKKyAgICAgICAg
ICAgIHN5bWJvbFRhYmxlLnNldERlZmF1bHRQcmVjaXNpb24oaW50ZWdlciwgRWJwSGlnaCk7Cisg
ICAgICAgICAgICBzeW1ib2xUYWJsZS5zZXREZWZhdWx0UHJlY2lzaW9uKGZsb2F0aW5nUG9pbnQs
IEVicEhpZ2gpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBhc3NlcnQoZmFsc2UgJiYgIkxhbmd1YWdlIG5vdCBzdXBwb3J0ZWQiKTsKICAgICB9CiAg
ICAgLy8gU2V0IGRlZmF1bHRzIGZvciBzYW1wbGVyIHR5cGVzIHRoYXQgaGF2ZSBkZWZhdWx0IHBy
ZWNpc2lvbiwgZXZlbiB0aG9zZSB0aGF0IGFyZQogICAgIC8vIG9ubHkgYXZhaWxhYmxlIGlmIGFu
IGV4dGVuc2lvbiBleGlzdHMuCkBAIC01NDksNiArNTY5LDggQEAgYm9vbCBUQ29tcGlsZXI6Oklu
aXRCdWlsdEluU3ltYm9sVGFibGUoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzICZyZXNvdXJjZXMp
CiAgICAgaW5pdFNhbXBsZXJEZWZhdWx0UHJlY2lzaW9uKEVidFNhbXBsZXJDdWJlKTsKICAgICAv
LyBTYW1wbGVyRXh0ZXJuYWxPRVMgaXMgc3BlY2lmaWVkIGluIHRoZSBleHRlbnNpb24gdG8gaGF2
ZSBkZWZhdWx0IHByZWNpc2lvbi4KICAgICBpbml0U2FtcGxlckRlZmF1bHRQcmVjaXNpb24oRWJ0
U2FtcGxlckV4dGVybmFsT0VTKTsKKyAgICAvLyBTYW1wbGVyRXh0ZXJuYWwyRFkyWUVYVCBpcyBz
cGVjaWZpZWQgaW4gdGhlIGV4dGVuc2lvbiB0byBoYXZlIGRlZmF1bHQgcHJlY2lzaW9uLgorICAg
IGluaXRTYW1wbGVyRGVmYXVsdFByZWNpc2lvbihFYnRTYW1wbGVyRXh0ZXJuYWwyRFkyWUVYVCk7
CiAgICAgLy8gSXQgaXNuJ3Qgc3BlY2lmaWVkIHdoZXRoZXIgU2FtcGxlcjJEUmVjdCBoYXMgZGVm
YXVsdCBwcmVjaXNpb24uCiAgICAgaW5pdFNhbXBsZXJEZWZhdWx0UHJlY2lzaW9uKEVidFNhbXBs
ZXIyRFJlY3QpOwogCkBAIC01NjMsOSArNTg1LDcgQEAgdm9pZCBUQ29tcGlsZXI6OmluaXRTYW1w
bGVyRGVmYXVsdFByZWNpc2lvbihUQmFzaWNUeXBlIHNhbXBsZXJUeXBlKQogewogICAgIEFTU0VS
VChzYW1wbGVyVHlwZSA+IEVidEd1YXJkU2FtcGxlckJlZ2luICYmIHNhbXBsZXJUeXBlIDwgRWJ0
R3VhcmRTYW1wbGVyRW5kKTsKICAgICBUUHVibGljVHlwZSBzYW1wbGVyOwotICAgIHNhbXBsZXIu
aW5pdGlhbGl6ZVNpemVGb3JTY2FsYXJUeXBlcygpOwotICAgIHNhbXBsZXIuc2V0QmFzaWNUeXBl
KHNhbXBsZXJUeXBlKTsKLSAgICBzYW1wbGVyLmFycmF5ICAgICAgICAgPSBmYWxzZTsKKyAgICBz
YW1wbGVyLmluaXRpYWxpemVCYXNpY1R5cGUoc2FtcGxlclR5cGUpOwogICAgIHN5bWJvbFRhYmxl
LnNldERlZmF1bHRQcmVjaXNpb24oc2FtcGxlciwgRWJwTG93KTsKIH0KIApAQCAtNTc1LDYwICs1
OTUsNjEgQEAgdm9pZCBUQ29tcGlsZXI6OnNldFJlc291cmNlU3RyaW5nKCkKIAogICAgIC8vIGNs
YW5nLWZvcm1hdCBvZmYKICAgICBzdHJzdHJlYW0gPDwgIjpNYXhWZXJ0ZXhBdHRyaWJzOiIgPDwg
Y29tcGlsZVJlc291cmNlcy5NYXhWZXJ0ZXhBdHRyaWJzCi0gICAgICAgICAgICAgIDw8ICI6TWF4
VmVydGV4VW5pZm9ybVZlY3RvcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heFZlcnRleFVuaWZv
cm1WZWN0b3JzCi0gICAgICAgICAgICAgIDw8ICI6TWF4VmFyeWluZ1ZlY3RvcnM6IiA8PCBjb21w
aWxlUmVzb3VyY2VzLk1heFZhcnlpbmdWZWN0b3JzCi0gICAgICAgICAgICAgIDw8ICI6TWF4VmVy
dGV4VGV4dHVyZUltYWdlVW5pdHM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heFZlcnRleFRleHR1
cmVJbWFnZVVuaXRzCi0gICAgICAgICAgICAgIDw8ICI6TWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VV
bml0czoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cwot
ICAgICAgICAgICAgICA8PCAiOk1heFRleHR1cmVJbWFnZVVuaXRzOiIgPDwgY29tcGlsZVJlc291
cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cwotICAgICAgICAgICAgICA8PCAiOk1heEZyYWdtZW50
VW5pZm9ybVZlY3RvcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZl
Y3RvcnMKLSAgICAgICAgICAgICAgPDwgIjpNYXhEcmF3QnVmZmVyczoiIDw8IGNvbXBpbGVSZXNv
dXJjZXMuTWF4RHJhd0J1ZmZlcnMKLSAgICAgICAgICAgICAgPDwgIjpPRVNfc3RhbmRhcmRfZGVy
aXZhdGl2ZXM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcwot
ICAgICAgICAgICAgICA8PCAiOk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWw6IiA8PCBjb21waWxlUmVz
b3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwKLSAgICAgICAgICAgICAgPDwgIjpPRVNfRUdM
X2ltYWdlX2V4dGVybmFsX2Vzc2wzOiIgPDwgY29tcGlsZVJlc291cmNlcy5PRVNfRUdMX2ltYWdl
X2V4dGVybmFsX2Vzc2wzCi0gICAgICAgICAgICAgIDw8ICI6TlZfRUdMX3N0cmVhbV9jb25zdW1l
cl9leHRlcm5hbDoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTlZfRUdMX3N0cmVhbV9jb25zdW1lcl9l
eHRlcm5hbAotICAgICAgICAgICAgICA8PCAiOkFSQl90ZXh0dXJlX3JlY3RhbmdsZToiIDw8IGNv
bXBpbGVSZXNvdXJjZXMuQVJCX3RleHR1cmVfcmVjdGFuZ2xlCi0gICAgICAgICAgICAgIDw8ICI6
RVhUX2RyYXdfYnVmZmVyczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycwot
ICAgICAgICAgICAgICA8PCAiOkZyYWdtZW50UHJlY2lzaW9uSGlnaDoiIDw8IGNvbXBpbGVSZXNv
dXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoCi0gICAgICAgICAgICAgIDw8ICI6TWF4RXhwcmVz
c2lvbkNvbXBsZXhpdHk6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heEV4cHJlc3Npb25Db21wbGV4
aXR5Ci0gICAgICAgICAgICAgIDw8ICI6TWF4Q2FsbFN0YWNrRGVwdGg6IiA8PCBjb21waWxlUmVz
b3VyY2VzLk1heENhbGxTdGFja0RlcHRoCi0gICAgICAgICAgICAgIDw8ICI6TWF4RnVuY3Rpb25Q
YXJhbWV0ZXJzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhGdW5jdGlvblBhcmFtZXRlcnMKLSAg
ICAgICAgICAgICAgPDwgIjpFWFRfYmxlbmRfZnVuY19leHRlbmRlZDoiIDw8IGNvbXBpbGVSZXNv
dXJjZXMuRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQKLSAgICAgICAgICAgICAgPDwgIjpFWFRfZnJh
Z19kZXB0aDoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGgKLSAgICAgICAgICAg
ICAgPDwgIjpFWFRfc2hhZGVyX3RleHR1cmVfbG9kOiIgPDwgY29tcGlsZVJlc291cmNlcy5FWFRf
c2hhZGVyX3RleHR1cmVfbG9kCi0gICAgICAgICAgICAgIDw8ICI6RVhUX3NoYWRlcl9mcmFtZWJ1
ZmZlcl9mZXRjaDoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9m
ZXRjaAotICAgICAgICAgICAgICA8PCAiOk5WX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaDoiIDw8
IGNvbXBpbGVSZXNvdXJjZXMuTlZfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoCi0gICAgICAgICAg
ICAgIDw8ICI6QVJNX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaDoiIDw8IGNvbXBpbGVSZXNvdXJj
ZXMuQVJNX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaAotICAgICAgICAgICAgICA8PCAiOk1heFZl
cnRleE91dHB1dFZlY3RvcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heFZlcnRleE91dHB1dFZl
Y3RvcnMKLSAgICAgICAgICAgICAgPDwgIjpNYXhGcmFnbWVudElucHV0VmVjdG9yczoiIDw8IGNv
bXBpbGVSZXNvdXJjZXMuTWF4RnJhZ21lbnRJbnB1dFZlY3RvcnMKLSAgICAgICAgICAgICAgPDwg
IjpNaW5Qcm9ncmFtVGV4ZWxPZmZzZXQ6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1pblByb2dyYW1U
ZXhlbE9mZnNldAotICAgICAgICAgICAgICA8PCAiOk1heFByb2dyYW1UZXhlbE9mZnNldDoiIDw8
IGNvbXBpbGVSZXNvdXJjZXMuTWF4UHJvZ3JhbVRleGVsT2Zmc2V0Ci0gICAgICAgICAgICAgIDw8
ICI6TWF4RHVhbFNvdXJjZURyYXdCdWZmZXJzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhEdWFs
U291cmNlRHJhd0J1ZmZlcnMKLSAgICAgICAgICAgICAgPDwgIjpOVl9kcmF3X2J1ZmZlcnM6IiA8
PCBjb21waWxlUmVzb3VyY2VzLk5WX2RyYXdfYnVmZmVycwotICAgICAgICAgICAgICA8PCAiOldF
QkdMX2RlYnVnX3NoYWRlcl9wcmVjaXNpb246IiA8PCBjb21waWxlUmVzb3VyY2VzLldFQkdMX2Rl
YnVnX3NoYWRlcl9wcmVjaXNpb24KLSAgICAgICAgICAgICAgPDwgIjpNYXhJbWFnZVVuaXRzOiIg
PDwgY29tcGlsZVJlc291cmNlcy5NYXhJbWFnZVVuaXRzCi0gICAgICAgICAgICAgIDw8ICI6TWF4
VmVydGV4SW1hZ2VVbmlmb3JtczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4VmVydGV4SW1hZ2VV
bmlmb3JtcwotICAgICAgICAgICAgICA8PCAiOk1heEZyYWdtZW50SW1hZ2VVbmlmb3JtczoiIDw8
IGNvbXBpbGVSZXNvdXJjZXMuTWF4RnJhZ21lbnRJbWFnZVVuaWZvcm1zCi0gICAgICAgICAgICAg
IDw8ICI6TWF4Q29tcHV0ZUltYWdlVW5pZm9ybXM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heENv
bXB1dGVJbWFnZVVuaWZvcm1zCi0gICAgICAgICAgICAgIDw8ICI6TWF4Q29tYmluZWRJbWFnZVVu
aWZvcm1zOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21iaW5lZEltYWdlVW5pZm9ybXMKLSAg
ICAgICAgICAgICAgPDwgIjpNYXhDb21iaW5lZFNoYWRlck91dHB1dFJlc291cmNlczoiIDw8IGNv
bXBpbGVSZXNvdXJjZXMuTWF4Q29tYmluZWRTaGFkZXJPdXRwdXRSZXNvdXJjZXMKLSAgICAgICAg
ICAgICAgPDwgIjpNYXhDb21wdXRlV29ya0dyb3VwQ291bnRYOiIgPDwgY29tcGlsZVJlc291cmNl
cy5NYXhDb21wdXRlV29ya0dyb3VwQ291bnRbMF0KLSAgICAgICAgICAgICAgPDwgIjpNYXhDb21w
dXRlV29ya0dyb3VwQ291bnRZOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21wdXRlV29ya0dy
b3VwQ291bnRbMV0KLSAgICAgICAgICAgICAgPDwgIjpNYXhDb21wdXRlV29ya0dyb3VwQ291bnRa
OiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21wdXRlV29ya0dyb3VwQ291bnRbMl0KLSAgICAg
ICAgICAgICAgPDwgIjpNYXhDb21wdXRlV29ya0dyb3VwU2l6ZVg6IiA8PCBjb21waWxlUmVzb3Vy
Y2VzLk1heENvbXB1dGVXb3JrR3JvdXBTaXplWzBdCi0gICAgICAgICAgICAgIDw8ICI6TWF4Q29t
cHV0ZVdvcmtHcm91cFNpemVZOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21wdXRlV29ya0dy
b3VwU2l6ZVsxXQotICAgICAgICAgICAgICA8PCAiOk1heENvbXB1dGVXb3JrR3JvdXBTaXplWjoi
IDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0ZVdvcmtHcm91cFNpemVbMl0KLSAgICAgICAg
ICAgICAgPDwgIjpNYXhDb21wdXRlVW5pZm9ybUNvbXBvbmVudHM6IiA8PCBjb21waWxlUmVzb3Vy
Y2VzLk1heENvbXB1dGVVbmlmb3JtQ29tcG9uZW50cwotICAgICAgICAgICAgICA8PCAiOk1heENv
bXB1dGVUZXh0dXJlSW1hZ2VVbml0czoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0ZVRl
eHR1cmVJbWFnZVVuaXRzCi0gICAgICAgICAgICAgIDw8ICI6TWF4Q29tcHV0ZUF0b21pY0NvdW50
ZXJzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21wdXRlQXRvbWljQ291bnRlcnMKLSAgICAg
ICAgICAgICAgPDwgIjpNYXhDb21wdXRlQXRvbWljQ291bnRlckJ1ZmZlcnM6IiA8PCBjb21waWxl
UmVzb3VyY2VzLk1heENvbXB1dGVBdG9taWNDb3VudGVyQnVmZmVycwotICAgICAgICAgICAgICA8
PCAiOk1heFZlcnRleEF0b21pY0NvdW50ZXJzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhWZXJ0
ZXhBdG9taWNDb3VudGVycwotICAgICAgICAgICAgICA8PCAiOk1heEZyYWdtZW50QXRvbWljQ291
bnRlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heEZyYWdtZW50QXRvbWljQ291bnRlcnMKLSAg
ICAgICAgICAgICAgPDwgIjpNYXhDb21iaW5lZEF0b21pY0NvdW50ZXJzOiIgPDwgY29tcGlsZVJl
c291cmNlcy5NYXhDb21iaW5lZEF0b21pY0NvdW50ZXJzCi0gICAgICAgICAgICAgIDw8ICI6TWF4
QXRvbWljQ291bnRlckJpbmRpbmdzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhBdG9taWNDb3Vu
dGVyQmluZGluZ3MKLSAgICAgICAgICAgICAgPDwgIjpNYXhWZXJ0ZXhBdG9taWNDb3VudGVyQnVm
ZmVyczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4VmVydGV4QXRvbWljQ291bnRlckJ1ZmZlcnMK
LSAgICAgICAgICAgICAgPDwgIjpNYXhGcmFnbWVudEF0b21pY0NvdW50ZXJCdWZmZXJzOiIgPDwg
Y29tcGlsZVJlc291cmNlcy5NYXhGcmFnbWVudEF0b21pY0NvdW50ZXJCdWZmZXJzCi0gICAgICAg
ICAgICAgIDw8ICI6TWF4Q29tYmluZWRBdG9taWNDb3VudGVyQnVmZmVyczoiIDw8IGNvbXBpbGVS
ZXNvdXJjZXMuTWF4Q29tYmluZWRBdG9taWNDb3VudGVyQnVmZmVycwotICAgICAgICAgICAgICA8
PCAiOk1heEF0b21pY0NvdW50ZXJCdWZmZXJTaXplOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhB
dG9taWNDb3VudGVyQnVmZmVyU2l6ZTsKKyAgICAgICAgPDwgIjpNYXhWZXJ0ZXhVbmlmb3JtVmVj
dG9yczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4VmVydGV4VW5pZm9ybVZlY3RvcnMKKyAgICAg
ICAgPDwgIjpNYXhWYXJ5aW5nVmVjdG9yczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4VmFyeWlu
Z1ZlY3RvcnMKKyAgICAgICAgPDwgIjpNYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0czoiIDw8IGNv
bXBpbGVSZXNvdXJjZXMuTWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMKKyAgICAgICAgPDwgIjpN
YXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21i
aW5lZFRleHR1cmVJbWFnZVVuaXRzCisgICAgICAgIDw8ICI6TWF4VGV4dHVyZUltYWdlVW5pdHM6
IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heFRleHR1cmVJbWFnZVVuaXRzCisgICAgICAgIDw8ICI6
TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9yczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4RnJhZ21l
bnRVbmlmb3JtVmVjdG9ycworICAgICAgICA8PCAiOk1heERyYXdCdWZmZXJzOiIgPDwgY29tcGls
ZVJlc291cmNlcy5NYXhEcmF3QnVmZmVycworICAgICAgICA8PCAiOk9FU19zdGFuZGFyZF9kZXJp
dmF0aXZlczoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzCisg
ICAgICAgIDw8ICI6T0VTX0VHTF9pbWFnZV9leHRlcm5hbDoiIDw8IGNvbXBpbGVSZXNvdXJjZXMu
T0VTX0VHTF9pbWFnZV9leHRlcm5hbAorICAgICAgICA8PCAiOk9FU19FR0xfaW1hZ2VfZXh0ZXJu
YWxfZXNzbDM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNz
bDMKKyAgICAgICAgPDwgIjpOVl9FR0xfc3RyZWFtX2NvbnN1bWVyX2V4dGVybmFsOiIgPDwgY29t
cGlsZVJlc291cmNlcy5OVl9FR0xfc3RyZWFtX2NvbnN1bWVyX2V4dGVybmFsCisgICAgICAgIDw8
ICI6QVJCX3RleHR1cmVfcmVjdGFuZ2xlOiIgPDwgY29tcGlsZVJlc291cmNlcy5BUkJfdGV4dHVy
ZV9yZWN0YW5nbGUKKyAgICAgICAgPDwgIjpFWFRfZHJhd19idWZmZXJzOiIgPDwgY29tcGlsZVJl
c291cmNlcy5FWFRfZHJhd19idWZmZXJzCisgICAgICAgIDw8ICI6RnJhZ21lbnRQcmVjaXNpb25I
aWdoOiIgPDwgY29tcGlsZVJlc291cmNlcy5GcmFnbWVudFByZWNpc2lvbkhpZ2gKKyAgICAgICAg
PDwgIjpNYXhFeHByZXNzaW9uQ29tcGxleGl0eToiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4RXhw
cmVzc2lvbkNvbXBsZXhpdHkKKyAgICAgICAgPDwgIjpNYXhDYWxsU3RhY2tEZXB0aDoiIDw8IGNv
bXBpbGVSZXNvdXJjZXMuTWF4Q2FsbFN0YWNrRGVwdGgKKyAgICAgICAgPDwgIjpNYXhGdW5jdGlv
blBhcmFtZXRlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heEZ1bmN0aW9uUGFyYW1ldGVycwor
ICAgICAgICA8PCAiOkVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkOiIgPDwgY29tcGlsZVJlc291cmNl
cy5FWFRfYmxlbmRfZnVuY19leHRlbmRlZAorICAgICAgICA8PCAiOkVYVF9mcmFnX2RlcHRoOiIg
PDwgY29tcGlsZVJlc291cmNlcy5FWFRfZnJhZ19kZXB0aAorICAgICAgICA8PCAiOkVYVF9zaGFk
ZXJfdGV4dHVyZV9sb2Q6IiA8PCBjb21waWxlUmVzb3VyY2VzLkVYVF9zaGFkZXJfdGV4dHVyZV9s
b2QKKyAgICAgICAgPDwgIjpFWFRfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoOiIgPDwgY29tcGls
ZVJlc291cmNlcy5FWFRfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoCisgICAgICAgIDw8ICI6TlZf
c2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoOiIgPDwgY29tcGlsZVJlc291cmNlcy5OVl9zaGFkZXJf
ZnJhbWVidWZmZXJfZmV0Y2gKKyAgICAgICAgPDwgIjpBUk1fc2hhZGVyX2ZyYW1lYnVmZmVyX2Zl
dGNoOiIgPDwgY29tcGlsZVJlc291cmNlcy5BUk1fc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoCisg
ICAgICAgIDw8ICI6RVhUX1lVVl90YXJnZXQ6IiA8PCBjb21waWxlUmVzb3VyY2VzLkVYVF9ZVVZf
dGFyZ2V0CisgICAgICAgIDw8ICI6TWF4VmVydGV4T3V0cHV0VmVjdG9yczoiIDw8IGNvbXBpbGVS
ZXNvdXJjZXMuTWF4VmVydGV4T3V0cHV0VmVjdG9ycworICAgICAgICA8PCAiOk1heEZyYWdtZW50
SW5wdXRWZWN0b3JzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhGcmFnbWVudElucHV0VmVjdG9y
cworICAgICAgICA8PCAiOk1pblByb2dyYW1UZXhlbE9mZnNldDoiIDw8IGNvbXBpbGVSZXNvdXJj
ZXMuTWluUHJvZ3JhbVRleGVsT2Zmc2V0CisgICAgICAgIDw8ICI6TWF4UHJvZ3JhbVRleGVsT2Zm
c2V0OiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhQcm9ncmFtVGV4ZWxPZmZzZXQKKyAgICAgICAg
PDwgIjpNYXhEdWFsU291cmNlRHJhd0J1ZmZlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heER1
YWxTb3VyY2VEcmF3QnVmZmVycworICAgICAgICA8PCAiOk5WX2RyYXdfYnVmZmVyczoiIDw8IGNv
bXBpbGVSZXNvdXJjZXMuTlZfZHJhd19idWZmZXJzCisgICAgICAgIDw8ICI6V0VCR0xfZGVidWdf
c2hhZGVyX3ByZWNpc2lvbjoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuV0VCR0xfZGVidWdfc2hhZGVy
X3ByZWNpc2lvbgorICAgICAgICA8PCAiOk1heEltYWdlVW5pdHM6IiA8PCBjb21waWxlUmVzb3Vy
Y2VzLk1heEltYWdlVW5pdHMKKyAgICAgICAgPDwgIjpNYXhWZXJ0ZXhJbWFnZVVuaWZvcm1zOiIg
PDwgY29tcGlsZVJlc291cmNlcy5NYXhWZXJ0ZXhJbWFnZVVuaWZvcm1zCisgICAgICAgIDw8ICI6
TWF4RnJhZ21lbnRJbWFnZVVuaWZvcm1zOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhGcmFnbWVu
dEltYWdlVW5pZm9ybXMKKyAgICAgICAgPDwgIjpNYXhDb21wdXRlSW1hZ2VVbmlmb3JtczoiIDw8
IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0ZUltYWdlVW5pZm9ybXMKKyAgICAgICAgPDwgIjpN
YXhDb21iaW5lZEltYWdlVW5pZm9ybXM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heENvbWJpbmVk
SW1hZ2VVbmlmb3JtcworICAgICAgICA8PCAiOk1heENvbWJpbmVkU2hhZGVyT3V0cHV0UmVzb3Vy
Y2VzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21iaW5lZFNoYWRlck91dHB1dFJlc291cmNl
cworICAgICAgICA8PCAiOk1heENvbXB1dGVXb3JrR3JvdXBDb3VudFg6IiA8PCBjb21waWxlUmVz
b3VyY2VzLk1heENvbXB1dGVXb3JrR3JvdXBDb3VudFswXQorICAgICAgICA8PCAiOk1heENvbXB1
dGVXb3JrR3JvdXBDb3VudFk6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heENvbXB1dGVXb3JrR3Jv
dXBDb3VudFsxXQorICAgICAgICA8PCAiOk1heENvbXB1dGVXb3JrR3JvdXBDb3VudFo6IiA8PCBj
b21waWxlUmVzb3VyY2VzLk1heENvbXB1dGVXb3JrR3JvdXBDb3VudFsyXQorICAgICAgICA8PCAi
Ok1heENvbXB1dGVXb3JrR3JvdXBTaXplWDoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0
ZVdvcmtHcm91cFNpemVbMF0KKyAgICAgICAgPDwgIjpNYXhDb21wdXRlV29ya0dyb3VwU2l6ZVk6
IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heENvbXB1dGVXb3JrR3JvdXBTaXplWzFdCisgICAgICAg
IDw8ICI6TWF4Q29tcHV0ZVdvcmtHcm91cFNpemVaOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhD
b21wdXRlV29ya0dyb3VwU2l6ZVsyXQorICAgICAgICA8PCAiOk1heENvbXB1dGVVbmlmb3JtQ29t
cG9uZW50czoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0ZVVuaWZvcm1Db21wb25lbnRz
CisgICAgICAgIDw8ICI6TWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzOiIgPDwgY29tcGlsZVJl
c291cmNlcy5NYXhDb21wdXRlVGV4dHVyZUltYWdlVW5pdHMKKyAgICAgICAgPDwgIjpNYXhDb21w
dXRlQXRvbWljQ291bnRlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heENvbXB1dGVBdG9taWND
b3VudGVycworICAgICAgICA8PCAiOk1heENvbXB1dGVBdG9taWNDb3VudGVyQnVmZmVyczoiIDw8
IGNvbXBpbGVSZXNvdXJjZXMuTWF4Q29tcHV0ZUF0b21pY0NvdW50ZXJCdWZmZXJzCisgICAgICAg
IDw8ICI6TWF4VmVydGV4QXRvbWljQ291bnRlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heFZl
cnRleEF0b21pY0NvdW50ZXJzCisgICAgICAgIDw8ICI6TWF4RnJhZ21lbnRBdG9taWNDb3VudGVy
czoiIDw8IGNvbXBpbGVSZXNvdXJjZXMuTWF4RnJhZ21lbnRBdG9taWNDb3VudGVycworICAgICAg
ICA8PCAiOk1heENvbWJpbmVkQXRvbWljQ291bnRlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1h
eENvbWJpbmVkQXRvbWljQ291bnRlcnMKKyAgICAgICAgPDwgIjpNYXhBdG9taWNDb3VudGVyQmlu
ZGluZ3M6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heEF0b21pY0NvdW50ZXJCaW5kaW5ncworICAg
ICAgICA8PCAiOk1heFZlcnRleEF0b21pY0NvdW50ZXJCdWZmZXJzOiIgPDwgY29tcGlsZVJlc291
cmNlcy5NYXhWZXJ0ZXhBdG9taWNDb3VudGVyQnVmZmVycworICAgICAgICA8PCAiOk1heEZyYWdt
ZW50QXRvbWljQ291bnRlckJ1ZmZlcnM6IiA8PCBjb21waWxlUmVzb3VyY2VzLk1heEZyYWdtZW50
QXRvbWljQ291bnRlckJ1ZmZlcnMKKyAgICAgICAgPDwgIjpNYXhDb21iaW5lZEF0b21pY0NvdW50
ZXJCdWZmZXJzOiIgPDwgY29tcGlsZVJlc291cmNlcy5NYXhDb21iaW5lZEF0b21pY0NvdW50ZXJC
dWZmZXJzCisgICAgICAgIDw8ICI6TWF4QXRvbWljQ291bnRlckJ1ZmZlclNpemU6IiA8PCBjb21w
aWxlUmVzb3VyY2VzLk1heEF0b21pY0NvdW50ZXJCdWZmZXJTaXplOwogICAgIC8vIGNsYW5nLWZv
cm1hdCBvbgogCiAgICAgYnVpbHRJblJlc291cmNlc1N0cmluZyA9IHN0cnN0cmVhbS5zdHIoKTsK
QEAgLTY0MCw2ICs2NjEsNyBAQCB2b2lkIFRDb21waWxlcjo6Y2xlYXJSZXN1bHRzKCkKICAgICBp
bmZvU2luay5pbmZvLmVyYXNlKCk7CiAgICAgaW5mb1Npbmsub2JqLmVyYXNlKCk7CiAgICAgaW5m
b1NpbmsuZGVidWcuZXJhc2UoKTsKKyAgICBtRGlhZ25vc3RpY3MucmVzZXRFcnJvckNvdW50KCk7
CiAKICAgICBhdHRyaWJ1dGVzLmNsZWFyKCk7CiAgICAgb3V0cHV0VmFyaWFibGVzLmNsZWFyKCk7
CkBAIC02NDksMTEgKzY3MSwxMyBAQCB2b2lkIFRDb21waWxlcjo6Y2xlYXJSZXN1bHRzKCkKICAg
ICBpbnRlcmZhY2VCbG9ja3MuY2xlYXIoKTsKICAgICB2YXJpYWJsZXNDb2xsZWN0ZWQgPSBmYWxz
ZTsKIAotICAgIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLkNsZWFudXAoKTsKKyAgICBtTnVtVmll
d3MgPSAtMTsKKworICAgIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmNsZWFudXAoKTsKIAogICAg
IG5hbWVNYXAuY2xlYXIoKTsKIAotICAgIG1Tb3VyY2VQYXRoID0gTlVMTDsKKyAgICBtU291cmNl
UGF0aCAgICAgPSBOVUxMOwogICAgIG1UZW1wb3JhcnlJbmRleCA9IDA7CiB9CiAKQEAgLTY2MSwx
OCArNjg1LDE1IEBAIGJvb2wgVENvbXBpbGVyOjppbml0Q2FsbERhZyhUSW50ZXJtTm9kZSAqcm9v
dCkKIHsKICAgICBtQ2FsbERhZy5jbGVhcigpOwogCi0gICAgc3dpdGNoIChtQ2FsbERhZy5pbml0
KHJvb3QsICZpbmZvU2luay5pbmZvKSkKKyAgICBzd2l0Y2ggKG1DYWxsRGFnLmluaXQocm9vdCwg
Jm1EaWFnbm9zdGljcykpCiAgICAgewotICAgICAgY2FzZSBDYWxsREFHOjpJTklUREFHX1NVQ0NF
U1M6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgY2FzZSBDYWxsREFHOjpJTklUREFHX1JF
Q1VSU0lPTjoKLSAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEVycm9yKTsKLSAg
ICAgICAgaW5mb1NpbmsuaW5mbyA8PCAiRnVuY3Rpb24gcmVjdXJzaW9uIGRldGVjdGVkIjsKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgY2FzZSBDYWxsREFHOjpJTklUREFHX1VOREVGSU5F
RDoKLSAgICAgICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEVycm9yKTsKLSAgICAgICAg
aW5mb1NpbmsuaW5mbyA8PCAiVW5pbXBsZW1lbnRlZCBmdW5jdGlvbiBkZXRlY3RlZCI7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBDYWxsREFHOjpJTklUREFHX1NVQ0NFU1M6
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBDYWxsREFHOjpJTklUREFH
X1JFQ1VSU0lPTjoKKyAgICAgICAgY2FzZSBDYWxsREFHOjpJTklUREFHX1VOREVGSU5FRDoKKyAg
ICAgICAgICAgIC8vIEVycm9yIG1lc3NhZ2UgaGFzIGFscmVhZHkgYmVlbiB3cml0dGVuIG91dC4K
KyAgICAgICAgICAgIEFTU0VSVChtRGlhZ25vc3RpY3MubnVtRXJyb3JzKCkgPiAwKTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBVTlJFQUNIQUJMRSgpOwpAQCAtNjg1
LDcgKzcwNiw3IEBAIGJvb2wgVENvbXBpbGVyOjpjaGVja0NhbGxEZXB0aCgpCiAKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1DYWxsRGFnLnNpemUoKTsgaSsrKQogICAgIHsKLSAgICAgICAg
aW50IGRlcHRoID0gMDsKKyAgICAgICAgaW50IGRlcHRoICAgID0gMDsKICAgICAgICAgYXV0byAm
cmVjb3JkID0gbUNhbGxEYWcuZ2V0UmVjb3JkRnJvbUluZGV4KGkpOwogCiAgICAgICAgIGZvciAo
YXV0byAmY2FsbGVlSW5kZXggOiByZWNvcmQuY2FsbGVlcykKQEAgLTY5OCwxOSArNzE5LDE5IEBA
IGJvb2wgVENvbXBpbGVyOjpjaGVja0NhbGxEZXB0aCgpCiAgICAgICAgIGlmIChkZXB0aCA+PSBt
YXhDYWxsU3RhY2tEZXB0aCkKICAgICAgICAgewogICAgICAgICAgICAgLy8gVHJhY2UgYmFjayB0
aGUgZnVuY3Rpb24gY2hhaW4gdG8gaGF2ZSBhIG1lYW5pbmdmdWwgaW5mbyBsb2cuCi0gICAgICAg
ICAgICBpbmZvU2luay5pbmZvLnByZWZpeChFUHJlZml4RXJyb3IpOwotICAgICAgICAgICAgaW5m
b1NpbmsuaW5mbyA8PCAiQ2FsbCBzdGFjayB0b28gZGVlcCAobGFyZ2VyIHRoYW4gIiA8PCBtYXhD
YWxsU3RhY2tEZXB0aAotICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiKSB3aXRoIHRoZSBm
b2xsb3dpbmcgY2FsbCBjaGFpbjogIiA8PCByZWNvcmQubmFtZTsKKyAgICAgICAgICAgIHN0ZDo6
c3RyaW5nc3RyZWFtIGVycm9yU3RyZWFtOworICAgICAgICAgICAgZXJyb3JTdHJlYW0gPDwgIkNh
bGwgc3RhY2sgdG9vIGRlZXAgKGxhcmdlciB0aGFuICIgPDwgbWF4Q2FsbFN0YWNrRGVwdGgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIDw8ICIpIHdpdGggdGhlIGZvbGxvd2luZyBjYWxsIGNoYWlu
OiAiIDw8IHJlY29yZC5uYW1lOwogCiAgICAgICAgICAgICBpbnQgY3VycmVudEZ1bmN0aW9uID0g
c3RhdGljX2Nhc3Q8aW50PihpKTsKLSAgICAgICAgICAgIGludCBjdXJyZW50RGVwdGggPSBkZXB0
aDsKKyAgICAgICAgICAgIGludCBjdXJyZW50RGVwdGggICAgPSBkZXB0aDsKIAogICAgICAgICAg
ICAgd2hpbGUgKGN1cnJlbnRGdW5jdGlvbiAhPSAtMSkKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBpbmZvU2luay5pbmZvIDw8ICIgLT4gIiA8PCBtQ2FsbERhZy5nZXRSZWNvcmRGcm9t
SW5kZXgoY3VycmVudEZ1bmN0aW9uKS5uYW1lOworICAgICAgICAgICAgICAgIGVycm9yU3RyZWFt
IDw8ICIgLT4gIiA8PCBtQ2FsbERhZy5nZXRSZWNvcmRGcm9tSW5kZXgoY3VycmVudEZ1bmN0aW9u
KS5uYW1lOwogCiAgICAgICAgICAgICAgICAgaW50IG5leHRGdW5jdGlvbiA9IC0xOwotICAgICAg
ICAgICAgICAgIGZvciAoYXV0byYgY2FsbGVlSW5kZXggOiBtQ2FsbERhZy5nZXRSZWNvcmRGcm9t
SW5kZXgoY3VycmVudEZ1bmN0aW9uKS5jYWxsZWVzKQorICAgICAgICAgICAgICAgIGZvciAoYXV0
byAmY2FsbGVlSW5kZXggOiBtQ2FsbERhZy5nZXRSZWNvcmRGcm9tSW5kZXgoY3VycmVudEZ1bmN0
aW9uKS5jYWxsZWVzKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGRlcHRoc1tjYWxsZWVJbmRleF0gPT0gY3VycmVudERlcHRoIC0gMSkKICAgICAgICAgICAgICAg
ICAgICAgewpAQCAtNzIyLDYgKzc0Myw5IEBAIGJvb2wgVENvbXBpbGVyOjpjaGVja0NhbGxEZXB0
aCgpCiAgICAgICAgICAgICAgICAgY3VycmVudEZ1bmN0aW9uID0gbmV4dEZ1bmN0aW9uOwogICAg
ICAgICAgICAgfQogCisgICAgICAgICAgICBzdGQ6OnN0cmluZyBlcnJvclN0ciA9IGVycm9yU3Ry
ZWFtLnN0cigpOworICAgICAgICAgICAgbURpYWdub3N0aWNzLmdsb2JhbEVycm9yKGVycm9yU3Ry
LmNfc3RyKCkpOworCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9
CkBAIC03MzQsMTUgKzc1OCwxNCBAQCBib29sIFRDb21waWxlcjo6dGFnVXNlZEZ1bmN0aW9ucygp
CiAgICAgLy8gU2VhcmNoIGZyb20gbWFpbiwgc3RhcnRpbmcgZnJvbSB0aGUgZW5kIG9mIHRoZSBE
QUcgYXMgaXQgdXN1YWxseSBpcyB0aGUgcm9vdC4KICAgICBmb3IgKHNpemVfdCBpID0gbUNhbGxE
YWcuc2l6ZSgpOyBpLS0gPiAwOykKICAgICB7Ci0gICAgICAgIGlmIChtQ2FsbERhZy5nZXRSZWNv
cmRGcm9tSW5kZXgoaSkubmFtZSA9PSAibWFpbigiKQorICAgICAgICBpZiAobUNhbGxEYWcuZ2V0
UmVjb3JkRnJvbUluZGV4KGkpLm5hbWUgPT0gIm1haW4iKQogICAgICAgICB7CiAgICAgICAgICAg
ICBpbnRlcm5hbFRhZ1VzZWRGdW5jdGlvbihpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgaW5mb1NpbmsuaW5mby5wcmVmaXgoRVByZWZpeEVycm9y
KTsKLSAgICBpbmZvU2luay5pbmZvIDw8ICJNaXNzaW5nIG1haW4oKVxuIjsKKyAgICBtRGlhZ25v
c3RpY3MuZ2xvYmFsRXJyb3IoIk1pc3NpbmcgbWFpbigpIik7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCkBAIC03NjYsMjggKzc4OSwyNCBAQCBjbGFzcyBUQ29tcGlsZXI6OlVudXNlZFByZWRpY2F0
ZQogewogICBwdWJsaWM6CiAgICAgVW51c2VkUHJlZGljYXRlKGNvbnN0IENhbGxEQUcgKmNhbGxE
YWcsIGNvbnN0IHN0ZDo6dmVjdG9yPEZ1bmN0aW9uTWV0YWRhdGE+ICptZXRhZGF0YXMpCi0gICAg
ICAgIDogbUNhbGxEYWcoY2FsbERhZyksCi0gICAgICAgICAgbU1ldGFkYXRhcyhtZXRhZGF0YXMp
CisgICAgICAgIDogbUNhbGxEYWcoY2FsbERhZyksIG1NZXRhZGF0YXMobWV0YWRhdGFzKQogICAg
IHsKICAgICB9CiAKLSAgICBib29sIG9wZXJhdG9yICgpKFRJbnRlcm1Ob2RlICpub2RlKQorICAg
IGJvb2wgb3BlcmF0b3IoKShUSW50ZXJtTm9kZSAqbm9kZSkKICAgICB7Ci0gICAgICAgIGNvbnN0
IFRJbnRlcm1BZ2dyZWdhdGUgKmFzQWdncmVnYXRlID0gbm9kZS0+Z2V0QXNBZ2dyZWdhdGUoKTsK
LSAgICAgICAgY29uc3QgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqYXNGdW5jdGlvbiA9IG5v
ZGUtPmdldEFzRnVuY3Rpb25EZWZpbml0aW9uKCk7CisgICAgICAgIGNvbnN0IFRJbnRlcm1GdW5j
dGlvblByb3RvdHlwZSAqYXNGdW5jdGlvblByb3RvdHlwZSAgID0gbm9kZS0+Z2V0QXNGdW5jdGlv
blByb3RvdHlwZU5vZGUoKTsKKyAgICAgICAgY29uc3QgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlv
biAqYXNGdW5jdGlvbkRlZmluaXRpb24gPSBub2RlLT5nZXRBc0Z1bmN0aW9uRGVmaW5pdGlvbigp
OwogCiAgICAgICAgIGNvbnN0IFRGdW5jdGlvblN5bWJvbEluZm8gKmZ1bmN0aW9uSW5mbyA9IG51
bGxwdHI7CiAKLSAgICAgICAgaWYgKGFzRnVuY3Rpb24pCisgICAgICAgIGlmIChhc0Z1bmN0aW9u
RGVmaW5pdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgZnVuY3Rpb25JbmZvID0gYXNGdW5j
dGlvbi0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCk7CisgICAgICAgICAgICBmdW5jdGlvbkluZm8g
PSBhc0Z1bmN0aW9uRGVmaW5pdGlvbi0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCk7CiAgICAgICAg
IH0KLSAgICAgICAgZWxzZSBpZiAoYXNBZ2dyZWdhdGUpCisgICAgICAgIGVsc2UgaWYgKGFzRnVu
Y3Rpb25Qcm90b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChhc0FnZ3JlZ2F0ZS0+
Z2V0T3AoKSA9PSBFT3BQcm90b3R5cGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ZnVuY3Rpb25JbmZvID0gYXNBZ2dyZWdhdGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpOwotICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZnVuY3Rpb25JbmZvID0gYXNGdW5jdGlvblByb3RvdHlw
ZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGZ1bmN0
aW9uSW5mbyA9PSBudWxscHRyKQogICAgICAgICB7CkBAIC03OTgsNyArODE3LDcgQEAgY2xhc3Mg
VENvbXBpbGVyOjpVbnVzZWRQcmVkaWNhdGUKICAgICAgICAgaWYgKGNhbGxEYWdJbmRleCA9PSBD
YWxsREFHOjpJbnZhbGlkSW5kZXgpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFRoaXMgaGFw
cGVucyBvbmx5IGZvciB1bmltcGxlbWVudGVkIHByb3RvdHlwZXMgd2hpY2ggYXJlIHRodXMgdW51
c2VkCi0gICAgICAgICAgICBBU1NFUlQoYXNBZ2dyZWdhdGUgJiYgYXNBZ2dyZWdhdGUtPmdldE9w
KCkgPT0gRU9wUHJvdG90eXBlKTsKKyAgICAgICAgICAgIEFTU0VSVChhc0Z1bmN0aW9uUHJvdG90
eXBlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKQEAgLTgxOCw1MiAr
ODM3LDQ4IEBAIGJvb2wgVENvbXBpbGVyOjpwcnVuZVVudXNlZEZ1bmN0aW9ucyhUSW50ZXJtQmxv
Y2sgKnJvb3QpCiAKICAgICBpZiAoIXNlcXVlbmNlLT5lbXB0eSgpKQogICAgIHsKLSAgICAgICAg
c2VxdWVuY2UtPmVyYXNlKHN0ZDo6cmVtb3ZlX2lmKHNlcXVlbmNlLT5iZWdpbigpLCBzZXF1ZW5j
ZS0+ZW5kKCksIGlzVW51c2VkKSwgc2VxdWVuY2UtPmVuZCgpKTsKKyAgICAgICAgc2VxdWVuY2Ut
PmVyYXNlKHN0ZDo6cmVtb3ZlX2lmKHNlcXVlbmNlLT5iZWdpbigpLCBzZXF1ZW5jZS0+ZW5kKCks
IGlzVW51c2VkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlLT5lbmQoKSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVENvbXBpbGVyOjp2YWxpZGF0ZU91
dHB1dHMoVEludGVybU5vZGUqIHJvb3QpCitib29sIFRDb21waWxlcjo6dmFsaWRhdGVPdXRwdXRz
KFRJbnRlcm1Ob2RlICpyb290KQogewogICAgIFZhbGlkYXRlT3V0cHV0cyB2YWxpZGF0ZU91dHB1
dHMoZ2V0RXh0ZW5zaW9uQmVoYXZpb3IoKSwgY29tcGlsZVJlc291cmNlcy5NYXhEcmF3QnVmZmVy
cyk7CiAgICAgcm9vdC0+dHJhdmVyc2UoJnZhbGlkYXRlT3V0cHV0cyk7Ci0gICAgcmV0dXJuICh2
YWxpZGF0ZU91dHB1dHMudmFsaWRhdGVBbmRDb3VudEVycm9ycyhpbmZvU2luay5pbmZvKSA9PSAw
KTsKLX0KLQotYm9vbCBUQ29tcGlsZXI6OnZhbGlkYXRlTGltaXRhdGlvbnMoVEludGVybU5vZGUq
IHJvb3QpCi17Ci0gICAgVmFsaWRhdGVMaW1pdGF0aW9ucyB2YWxpZGF0ZShzaGFkZXJUeXBlLCAm
aW5mb1NpbmsuaW5mbyk7Ci0gICAgcm9vdC0+dHJhdmVyc2UoJnZhbGlkYXRlKTsKLSAgICByZXR1
cm4gdmFsaWRhdGUubnVtRXJyb3JzKCkgPT0gMDsKKyAgICB2YWxpZGF0ZU91dHB1dHMudmFsaWRh
dGUoJm1EaWFnbm9zdGljcyk7CisgICAgcmV0dXJuIChtRGlhZ25vc3RpY3MubnVtRXJyb3JzKCkg
PT0gMCk7CiB9CiAKLWJvb2wgVENvbXBpbGVyOjpsaW1pdEV4cHJlc3Npb25Db21wbGV4aXR5KFRJ
bnRlcm1Ob2RlKiByb290KQorYm9vbCBUQ29tcGlsZXI6OmxpbWl0RXhwcmVzc2lvbkNvbXBsZXhp
dHkoVEludGVybU5vZGUgKnJvb3QpCiB7Ci0gICAgVE1heERlcHRoVHJhdmVyc2VyIHRyYXZlcnNl
cihtYXhFeHByZXNzaW9uQ29tcGxleGl0eSsxKTsKKyAgICBUTWF4RGVwdGhUcmF2ZXJzZXIgdHJh
dmVyc2VyKG1heEV4cHJlc3Npb25Db21wbGV4aXR5ICsgMSk7CiAgICAgcm9vdC0+dHJhdmVyc2Uo
JnRyYXZlcnNlcik7CiAKICAgICBpZiAodHJhdmVyc2VyLmdldE1heERlcHRoKCkgPiBtYXhFeHBy
ZXNzaW9uQ29tcGxleGl0eSkKICAgICB7Ci0gICAgICAgIGluZm9TaW5rLmluZm8gPDwgIkV4cHJl
c3Npb24gdG9vIGNvbXBsZXguIjsKKyAgICAgICAgbURpYWdub3N0aWNzLmdsb2JhbEVycm9yKCJF
eHByZXNzaW9uIHRvbyBjb21wbGV4LiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
CiAgICAgaWYgKCFWYWxpZGF0ZU1heFBhcmFtZXRlcnM6OnZhbGlkYXRlKHJvb3QsIG1heEZ1bmN0
aW9uUGFyYW1ldGVycykpCiAgICAgewotICAgICAgICBpbmZvU2luay5pbmZvIDw8ICJGdW5jdGlv
biBoYXMgdG9vIG1hbnkgcGFyYW1ldGVycy4iOworICAgICAgICBtRGlhZ25vc3RpY3MuZ2xvYmFs
RXJyb3IoIkZ1bmN0aW9uIGhhcyB0b28gbWFueSBwYXJhbWV0ZXJzLiIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgVENvbXBpbGVy
Ojpjb2xsZWN0VmFyaWFibGVzKFRJbnRlcm1Ob2RlKiByb290KQordm9pZCBUQ29tcGlsZXI6OmNv
bGxlY3RWYXJpYWJsZXMoVEludGVybU5vZGUgKnJvb3QpCiB7CiAgICAgaWYgKCF2YXJpYWJsZXND
b2xsZWN0ZWQpCiAgICAgewogICAgICAgICBzaDo6Q29sbGVjdFZhcmlhYmxlcyBjb2xsZWN0KCZh
dHRyaWJ1dGVzLCAmb3V0cHV0VmFyaWFibGVzLCAmdW5pZm9ybXMsICZ2YXJ5aW5ncywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW50ZXJmYWNlQmxvY2tzLCBoYXNoRnVu
Y3Rpb24sIHN5bWJvbFRhYmxlLCBleHRlbnNpb25CZWhhdmlvcik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJmludGVyZmFjZUJsb2NrcywgaGFzaEZ1bmN0aW9uLCBzeW1i
b2xUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25C
ZWhhdmlvcik7CiAgICAgICAgIHJvb3QtPnRyYXZlcnNlKCZjb2xsZWN0KTsKIAogICAgICAgICAv
LyBUaGlzIGlzIGZvciBlbmZvcmNlUGFja2luZ1Jlc3RyaWN0aW9uKCkuCkBAIC04NzIsMTkgKzg4
NywyOSBAQCB2b2lkIFRDb21waWxlcjo6Y29sbGVjdFZhcmlhYmxlcyhUSW50ZXJtTm9kZSogcm9v
dCkKICAgICB9CiB9CiAKK2Jvb2wgVENvbXBpbGVyOjpzaG91bGRDb2xsZWN0VmFyaWFibGVzKFNo
Q29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpCit7CisgICAgcmV0dXJuIChjb21waWxlT3B0
aW9ucyAmIFNIX1ZBUklBQkxFUykgIT0gMDsKK30KKworYm9vbCBUQ29tcGlsZXI6OndlcmVWYXJp
YWJsZXNDb2xsZWN0ZWQoKSBjb25zdAoreworICAgIHJldHVybiB2YXJpYWJsZXNDb2xsZWN0ZWQ7
Cit9CisKIGJvb2wgVENvbXBpbGVyOjplbmZvcmNlUGFja2luZ1Jlc3RyaWN0aW9ucygpCiB7CiAg
ICAgVmFyaWFibGVQYWNrZXIgcGFja2VyOwogICAgIHJldHVybiBwYWNrZXIuQ2hlY2tWYXJpYWJs
ZXNXaXRoaW5QYWNraW5nTGltaXRzKG1heFVuaWZvcm1WZWN0b3JzLCBleHBhbmRlZFVuaWZvcm1z
KTsKIH0KIAotdm9pZCBUQ29tcGlsZXI6OmluaXRpYWxpemVHTFBvc2l0aW9uKFRJbnRlcm1Ob2Rl
KiByb290KQordm9pZCBUQ29tcGlsZXI6OmluaXRpYWxpemVHTFBvc2l0aW9uKFRJbnRlcm1Ob2Rl
ICpyb290KQogewogICAgIEluaXRWYXJpYWJsZUxpc3QgbGlzdDsKICAgICBzaDo6U2hhZGVyVmFy
aWFibGUgdmFyKEdMX0ZMT0FUX1ZFQzQsIDApOwogICAgIHZhci5uYW1lID0gImdsX1Bvc2l0aW9u
IjsKICAgICBsaXN0LnB1c2hfYmFjayh2YXIpOwotICAgIEluaXRpYWxpemVWYXJpYWJsZXMocm9v
dCwgbGlzdCk7CisgICAgSW5pdGlhbGl6ZVZhcmlhYmxlcyhyb290LCBsaXN0LCBzeW1ib2xUYWJs
ZSk7CiB9CiAKIHZvaWQgVENvbXBpbGVyOjp1c2VBbGxNZW1iZXJzSW5VbnVzZWRTdGFuZGFyZEFu
ZFNoYXJlZEJsb2NrcyhUSW50ZXJtTm9kZSAqcm9vdCkKQEAgLTkwMCw3ICs5MjUsNyBAQCB2b2lk
IFRDb21waWxlcjo6dXNlQWxsTWVtYmVyc0luVW51c2VkU3RhbmRhcmRBbmRTaGFyZWRCbG9ja3Mo
VEludGVybU5vZGUgKnJvb3QpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzaDo6VXNlSW50ZXJm
YWNlQmxvY2tGaWVsZHMocm9vdCwgbGlzdCk7CisgICAgc2g6OlVzZUludGVyZmFjZUJsb2NrRmll
bGRzKHJvb3QsIGxpc3QsIHN5bWJvbFRhYmxlKTsKIH0KIAogdm9pZCBUQ29tcGlsZXI6OmluaXRp
YWxpemVPdXRwdXRWYXJpYWJsZXMoVEludGVybU5vZGUgKnJvb3QpCkBAIC05MjEsMTAgKzk0Niwx
MCBAQCB2b2lkIFRDb21waWxlcjo6aW5pdGlhbGl6ZU91dHB1dFZhcmlhYmxlcyhUSW50ZXJtTm9k
ZSAqcm9vdCkKICAgICAgICAgICAgIGxpc3QucHVzaF9iYWNrKHZhcik7CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgSW5pdGlhbGl6ZVZhcmlhYmxlcyhyb290LCBsaXN0KTsKKyAgICBJbml0aWFsaXpl
VmFyaWFibGVzKHJvb3QsIGxpc3QsIHN5bWJvbFRhYmxlKTsKIH0KIAotY29uc3QgVEV4dGVuc2lv
bkJlaGF2aW9yJiBUQ29tcGlsZXI6OmdldEV4dGVuc2lvbkJlaGF2aW9yKCkgY29uc3QKK2NvbnN0
IFRFeHRlbnNpb25CZWhhdmlvciAmVENvbXBpbGVyOjpnZXRFeHRlbnNpb25CZWhhdmlvcigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIGV4dGVuc2lvbkJlaGF2aW9yOwogfQpAQCAtOTM0LDEyICs5NTks
MTIgQEAgY29uc3QgY2hhciAqVENvbXBpbGVyOjpnZXRTb3VyY2VQYXRoKCkgY29uc3QKICAgICBy
ZXR1cm4gbVNvdXJjZVBhdGg7CiB9CiAKLWNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgVENvbXBp
bGVyOjpnZXRSZXNvdXJjZXMoKSBjb25zdAorY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzICZUQ29t
cGlsZXI6OmdldFJlc291cmNlcygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbXBpbGVSZXNvdXJj
ZXM7CiB9CiAKLWNvbnN0IEFycmF5Qm91bmRzQ2xhbXBlciYgVENvbXBpbGVyOjpnZXRBcnJheUJv
dW5kc0NsYW1wZXIoKSBjb25zdAorY29uc3QgQXJyYXlCb3VuZHNDbGFtcGVyICZUQ29tcGlsZXI6
OmdldEFycmF5Qm91bmRzQ2xhbXBlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFycmF5Qm91bmRz
Q2xhbXBlcjsKIH0KQEAgLTk0OSw3ICs5NzQsNyBAQCBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0
ZWd5IFRDb21waWxlcjo6Z2V0QXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3koKSBjb25zdAogICAg
IHJldHVybiBjbGFtcGluZ1N0cmF0ZWd5OwogfQogCi1jb25zdCBCdWlsdEluRnVuY3Rpb25FbXVs
YXRvciYgVENvbXBpbGVyOjpnZXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvcigpIGNvbnN0Citjb25z
dCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAmVENvbXBpbGVyOjpnZXRCdWlsdEluRnVuY3Rpb25F
bXVsYXRvcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOwog
fQpAQCAtOTc3LDMgKzEwMDIsNSBAQCBib29sIFRDb21waWxlcjo6aXNWYXJ5aW5nRGVmaW5lZChj
b25zdCBjaGFyICp2YXJ5aW5nTmFtZSkKIAogICAgIHJldHVybiBmYWxzZTsKIH0KKworfSAgLy8g
bmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9Db21waWxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuaAppbmRleCA4MjM4MzJiY2IzZS4uZmZjMDYz
ZjdhYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0NvbXBpbGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuaApAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVk
ZSAiY29tcGlsZXIvdHJhbnNsYXRvci9CdWlsdEluRnVuY3Rpb25FbXVsYXRvci5oIgogI2luY2x1
ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQ2FsbERBRy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvRGlhZ25vc3RpY3MuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0V4
dGVuc2lvbkJlaGF2aW9yLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9IYXNoTmFt
ZXMuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmgiCkBAIC0yNCwx
MCArMjUsMTMgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1ZhcmlhYmxlSW5mby5o
IgogI2luY2x1ZGUgInRoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oIgog
CituYW1lc3BhY2Ugc2gKK3sKKwogY2xhc3MgVENvbXBpbGVyOwogI2lmZGVmIEFOR0xFX0VOQUJM
RV9ITFNMCiBjbGFzcyBUcmFuc2xhdG9ySExTTDsKLSNlbmRpZiAvLyBBTkdMRV9FTkFCTEVfSExT
TAorI2VuZGlmICAvLyBBTkdMRV9FTkFCTEVfSExTTAogCiAvLwogLy8gSGVscGVyIGZ1bmN0aW9u
IHRvIGlkZW50aWZ5IHNwZWNzIHRoYXQgYXJlIGJhc2VkIG9uIHRoZSBXZWJHTCBzcGVjLgpAQCAt
MzgsMjAgKzQyLDMxIEBAIGJvb2wgSXNXZWJHTEJhc2VkU3BlYyhTaFNoYWRlclNwZWMgc3BlYyk7
CiAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgaWYgdGhlIHNoYWRlciB0eXBlIGlzIEdMU0wu
CiAvLwogYm9vbCBJc0dMU0wxMzBPck5ld2VyKFNoU2hhZGVyT3V0cHV0IG91dHB1dCk7Citib29s
IElzR0xTTDQyME9yTmV3ZXIoU2hTaGFkZXJPdXRwdXQgb3V0cHV0KTsKK2Jvb2wgSXNHTFNMNDEw
T3JPbGRlcihTaFNoYWRlck91dHB1dCBvdXRwdXQpOworCisvLworLy8gSGVscGVyIGZ1bmN0aW9u
IHRvIGNoZWNrIGlmIHRoZSBpbnZhcmlhbnQgcXVhbGlmaWVyIGNhbiBiZSByZW1vdmVkLgorLy8K
K2Jvb2wgUmVtb3ZlSW52YXJpYW50KHNoOjpHTGVudW0gc2hhZGVyVHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgU2hTaGFk
ZXJPdXRwdXQgb3V0cHV0VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgIFNoQ29tcGlsZU9wdGlv
bnMgY29tcGlsZU9wdGlvbnMpOwogCiAvLwogLy8gVGhlIGJhc2UgY2xhc3MgdXNlZCB0byBiYWNr
IGhhbmRsZXMgcmV0dXJuZWQgdG8gdGhlIGRyaXZlci4KIC8vCi1jbGFzcyBUU2hIYW5kbGVCYXNl
IHsKLXB1YmxpYzoKK2NsYXNzIFRTaEhhbmRsZUJhc2UKK3sKKyAgcHVibGljOgogICAgIFRTaEhh
bmRsZUJhc2UoKTsKICAgICB2aXJ0dWFsIH5UU2hIYW5kbGVCYXNlKCk7Ci0gICAgdmlydHVhbCBU
Q29tcGlsZXIqIGdldEFzQ29tcGlsZXIoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBUQ29t
cGlsZXIgKmdldEFzQ29tcGlsZXIoKSB7IHJldHVybiAwOyB9CiAjaWZkZWYgQU5HTEVfRU5BQkxF
X0hMU0wKLSAgICB2aXJ0dWFsIFRyYW5zbGF0b3JITFNMKiBnZXRBc1RyYW5zbGF0b3JITFNMKCkg
eyByZXR1cm4gMDsgfQotI2VuZGlmIC8vIEFOR0xFX0VOQUJMRV9ITFNMCisgICAgdmlydHVhbCBU
cmFuc2xhdG9ySExTTCAqZ2V0QXNUcmFuc2xhdG9ySExTTCgpIHsgcmV0dXJuIDA7IH0KKyNlbmRp
ZiAgLy8gQU5HTEVfRU5BQkxFX0hMU0wKIAotcHJvdGVjdGVkOgorICBwcm90ZWN0ZWQ6CiAgICAg
Ly8gTWVtb3J5IGFsbG9jYXRvci4gQWxsb2NhdGVzIGFuZCB0cmFja3MgbWVtb3J5IHJlcXVpcmVk
IGJ5IHRoZSBjb21waWxlci4KICAgICAvLyBEZWFsbG9jYXRlcyBhbGwgbWVtb3J5IHdoZW4gY29t
cGlsZXIgaXMgZGVzdHJ1Y3RlZC4KICAgICBUUG9vbEFsbG9jYXRvciBhbGxvY2F0b3I7CkBAIC02
OCw3ICs4Myw3IEBAIGNsYXNzIFRDb21waWxlciA6IHB1YmxpYyBUU2hIYW5kbGVCYXNlCiAgICAg
flRDb21waWxlcigpIG92ZXJyaWRlOwogICAgIFRDb21waWxlciAqZ2V0QXNDb21waWxlcigpIG92
ZXJyaWRlIHsgcmV0dXJuIHRoaXM7IH0KIAotICAgIGJvb2wgSW5pdChjb25zdCBTaEJ1aWx0SW5S
ZXNvdXJjZXMmIHJlc291cmNlcyk7CisgICAgYm9vbCBJbml0KGNvbnN0IFNoQnVpbHRJblJlc291
cmNlcyAmcmVzb3VyY2VzKTsKIAogICAgIC8vIGNvbXBpbGVUcmVlRm9yVGVzdGluZyBzaG91bGQg
YmUgdXNlZCBvbmx5IHdoZW4gdGVzdHMgcmVxdWlyZSBhY2Nlc3MgdG8KICAgICAvLyB0aGUgQVNU
LiBVc2VycyBvZiB0aGlzIGZ1bmN0aW9uIG5lZWQgdG8gbWFudWFsbHkgbWFuYWdlIHRoZSBnbG9i
YWwgcG9vbApAQCAtODMsMTAgKzk4LDExIEBAIGNsYXNzIFRDb21waWxlciA6IHB1YmxpYyBUU2hI
YW5kbGVCYXNlCiAKICAgICAvLyBHZXQgcmVzdWx0cyBvZiB0aGUgbGFzdCBjb21waWxhdGlvbi4K
ICAgICBpbnQgZ2V0U2hhZGVyVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIHNoYWRlclZlcnNpb247
IH0KLSAgICBUSW5mb1NpbmsmIGdldEluZm9TaW5rKCkgeyByZXR1cm4gaW5mb1Npbms7IH0KKyAg
ICBUSW5mb1NpbmsgJmdldEluZm9TaW5rKCkgeyByZXR1cm4gaW5mb1Npbms7IH0KIAogICAgIGJv
b2wgaXNDb21wdXRlU2hhZGVyTG9jYWxTaXplRGVjbGFyZWQoKSBjb25zdCB7IHJldHVybiBtQ29t
cHV0ZVNoYWRlckxvY2FsU2l6ZURlY2xhcmVkOyB9Ci0gICAgY29uc3Qgc2g6OldvcmtHcm91cFNp
emUgJmdldENvbXB1dGVTaGFkZXJMb2NhbFNpemUoKSB7IHJldHVybiBtQ29tcHV0ZVNoYWRlckxv
Y2FsU2l6ZTsgfQorICAgIGNvbnN0IHNoOjpXb3JrR3JvdXBTaXplICZnZXRDb21wdXRlU2hhZGVy
TG9jYWxTaXplKCkgY29uc3QgeyByZXR1cm4gbUNvbXB1dGVTaGFkZXJMb2NhbFNpemU7IH0KKyAg
ICBpbnQgZ2V0TnVtVmlld3MoKSBjb25zdCB7IHJldHVybiBtTnVtVmlld3M7IH0KIAogICAgIC8v
IENsZWFycyB0aGUgcmVzdWx0cyBmcm9tIHRoZSBwcmV2aW91cyBjb21waWxhdGlvbi4KICAgICB2
b2lkIGNsZWFyUmVzdWx0cygpOwpAQCAtOTgsOCArMTE0LDggQEAgY2xhc3MgVENvbXBpbGVyIDog
cHVibGljIFRTaEhhbmRsZUJhc2UKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNl
QmxvY2s+ICZnZXRJbnRlcmZhY2VCbG9ja3MoKSBjb25zdCB7IHJldHVybiBpbnRlcmZhY2VCbG9j
a3M7IH0KIAogICAgIFNoSGFzaEZ1bmN0aW9uNjQgZ2V0SGFzaEZ1bmN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gaGFzaEZ1bmN0aW9uOyB9Ci0gICAgTmFtZU1hcCYgZ2V0TmFtZU1hcCgpIHsgcmV0dXJu
IG5hbWVNYXA7IH0KLSAgICBUU3ltYm9sVGFibGUmIGdldFN5bWJvbFRhYmxlKCkgeyByZXR1cm4g
c3ltYm9sVGFibGU7IH0KKyAgICBOYW1lTWFwICZnZXROYW1lTWFwKCkgeyByZXR1cm4gbmFtZU1h
cDsgfQorICAgIFRTeW1ib2xUYWJsZSAmZ2V0U3ltYm9sVGFibGUoKSB7IHJldHVybiBzeW1ib2xU
YWJsZTsgfQogICAgIFNoU2hhZGVyU3BlYyBnZXRTaGFkZXJTcGVjKCkgY29uc3QgeyByZXR1cm4g
c2hhZGVyU3BlYzsgfQogICAgIFNoU2hhZGVyT3V0cHV0IGdldE91dHB1dFR5cGUoKSBjb25zdCB7
IHJldHVybiBvdXRwdXRUeXBlOyB9CiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldEJ1aWx0SW5S
ZXNvdXJjZXNTdHJpbmcoKSBjb25zdCB7IHJldHVybiBidWlsdEluUmVzb3VyY2VzU3RyaW5nOyB9
CkBAIC0xMDcsMjMgKzEyMywxOCBAQCBjbGFzcyBUQ29tcGlsZXIgOiBwdWJsaWMgVFNoSGFuZGxl
QmFzZQogICAgIGJvb2wgc2hvdWxkUnVuTG9vcEFuZEluZGV4aW5nVmFsaWRhdGlvbihTaENvbXBp
bGVPcHRpb25zIGNvbXBpbGVPcHRpb25zKSBjb25zdDsKIAogICAgIC8vIEdldCB0aGUgcmVzb3Vy
Y2VzIHNldCBieSBJbml0QnVpbHRJblN5bWJvbFRhYmxlCi0gICAgY29uc3QgU2hCdWlsdEluUmVz
b3VyY2VzJiBnZXRSZXNvdXJjZXMoKSBjb25zdDsKKyAgICBjb25zdCBTaEJ1aWx0SW5SZXNvdXJj
ZXMgJmdldFJlc291cmNlcygpIGNvbnN0OwogCiAgIHByb3RlY3RlZDoKICAgICBzaDo6R0xlbnVt
IGdldFNoYWRlclR5cGUoKSBjb25zdCB7IHJldHVybiBzaGFkZXJUeXBlOyB9CiAgICAgLy8gSW5p
dGlhbGl6ZSBzeW1ib2wtdGFibGUgd2l0aCBidWlsdC1pbiBzeW1ib2xzLgotICAgIGJvb2wgSW5p
dEJ1aWx0SW5TeW1ib2xUYWJsZShjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJlc291cmNlcyk7
CisgICAgYm9vbCBJbml0QnVpbHRJblN5bWJvbFRhYmxlKGNvbnN0IFNoQnVpbHRJblJlc291cmNl
cyAmcmVzb3VyY2VzKTsKICAgICAvLyBDb21wdXRlIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24g
b2YgdGhlIGJ1aWx0LWluIHJlc291cmNlcwogICAgIHZvaWQgc2V0UmVzb3VyY2VTdHJpbmcoKTsK
ICAgICAvLyBSZXR1cm4gZmFsc2UgaWYgdGhlIGNhbGwgZGVwdGggaXMgZXhjZWVkZWQuCiAgICAg
Ym9vbCBjaGVja0NhbGxEZXB0aCgpOwogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhIHByb2dyYW0g
aGFzIG5vIGNvbmZsaWN0aW5nIG9yIG1pc3NpbmcgZnJhZ21lbnQgb3V0cHV0cwotICAgIGJvb2wg
dmFsaWRhdGVPdXRwdXRzKFRJbnRlcm1Ob2RlKiByb290KTsKLSAgICAvLyBSZXR1cm5zIHRydWUg
aWYgdGhlIGdpdmVuIHNoYWRlciBkb2VzIG5vdCBleGNlZWQgdGhlIG1pbmltdW0KLSAgICAvLyBm
dW5jdGlvbmFsaXR5IG1hbmRhdGVkIGluIEdMU0wgMS4wIHNwZWMgQXBwZW5kaXggQS4KLSAgICBi
b29sIHZhbGlkYXRlTGltaXRhdGlvbnMoVEludGVybU5vZGUqIHJvb3QpOwotICAgIC8vIENvbGxl
Y3QgaW5mbyBmb3IgYWxsIGF0dHJpYnMsIHVuaWZvcm1zLCB2YXJ5aW5ncy4KLSAgICB2b2lkIGNv
bGxlY3RWYXJpYWJsZXMoVEludGVybU5vZGUqIHJvb3QpOworICAgIGJvb2wgdmFsaWRhdGVPdXRw
dXRzKFRJbnRlcm1Ob2RlICpyb290KTsKICAgICAvLyBBZGQgZW11bGF0ZWQgZnVuY3Rpb25zIHRv
IHRoZSBidWlsdC1pbiBmdW5jdGlvbiBlbXVsYXRvci4KICAgICB2aXJ0dWFsIHZvaWQgaW5pdEJ1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICplbXUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25z
IGNvbXBpbGVPcHRpb25zKXt9OwpAQCAtMTQzLDM2ICsxNTQsMzIgQEAgY2xhc3MgVENvbXBpbGVy
IDogcHVibGljIFRTaEhhbmRsZUJhc2UKICAgICAvLyBJdCBpcyB0byB3b3JrIGFyb3VuZCBhIExp
bnV4IGRyaXZlciBidWcgd2hlcmUgbWlzc2luZyB0aGlzIGNhdXNlcyBjb21waWxlIGZhaWx1cmUK
ICAgICAvLyB3aGlsZSBzcGVjIHNheXMgaXQgaXMgYWxsb3dlZC4KICAgICAvLyBUaGlzIGZ1bmN0
aW9uIHNob3VsZCBvbmx5IGJlIGFwcGxpZWQgdG8gdmVydGV4IHNoYWRlcnMuCi0gICAgdm9pZCBp
bml0aWFsaXplR0xQb3NpdGlvbihUSW50ZXJtTm9kZSogcm9vdCk7CisgICAgdm9pZCBpbml0aWFs
aXplR0xQb3NpdGlvbihUSW50ZXJtTm9kZSAqcm9vdCk7CiAgICAgLy8gUmV0dXJuIHRydWUgaWYg
dGhlIG1heGltdW0gZXhwcmVzc2lvbiBjb21wbGV4aXR5IGlzIGJlbG93IHRoZSBsaW1pdC4KLSAg
ICBib29sIGxpbWl0RXhwcmVzc2lvbkNvbXBsZXhpdHkoVEludGVybU5vZGUqIHJvb3QpOworICAg
IGJvb2wgbGltaXRFeHByZXNzaW9uQ29tcGxleGl0eShUSW50ZXJtTm9kZSAqcm9vdCk7CiAgICAg
Ly8gR2V0IGJ1aWx0LWluIGV4dGVuc2lvbnMgd2l0aCBkZWZhdWx0IGJlaGF2aW9yLgotICAgIGNv
bnN0IFRFeHRlbnNpb25CZWhhdmlvciYgZ2V0RXh0ZW5zaW9uQmVoYXZpb3IoKSBjb25zdDsKKyAg
ICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3IgJmdldEV4dGVuc2lvbkJlaGF2aW9yKCkgY29uc3Q7
CiAgICAgY29uc3QgY2hhciAqZ2V0U291cmNlUGF0aCgpIGNvbnN0OwotICAgIGNvbnN0IFRQcmFn
bWEmIGdldFByYWdtYSgpIGNvbnN0IHsgcmV0dXJuIG1QcmFnbWE7IH0KKyAgICBjb25zdCBUUHJh
Z21hICZnZXRQcmFnbWEoKSBjb25zdCB7IHJldHVybiBtUHJhZ21hOyB9CiAgICAgdm9pZCB3cml0
ZVByYWdtYShTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zKTsKICAgICB1bnNpZ25lZCBp
bnQgKmdldFRlbXBvcmFyeUluZGV4KCkgeyByZXR1cm4gJm1UZW1wb3JhcnlJbmRleDsgfQogICAg
IC8vIFJlbGllcyBvbiBjb2xsZWN0VmFyaWFibGVzIGhhdmluZyBiZWVuIGNhbGxlZC4KICAgICBi
b29sIGlzVmFyeWluZ0RlZmluZWQoY29uc3QgY2hhciAqdmFyeWluZ05hbWUpOwogCi0gICAgY29u
c3QgQXJyYXlCb3VuZHNDbGFtcGVyJiBnZXRBcnJheUJvdW5kc0NsYW1wZXIoKSBjb25zdDsKKyAg
ICBjb25zdCBBcnJheUJvdW5kc0NsYW1wZXIgJmdldEFycmF5Qm91bmRzQ2xhbXBlcigpIGNvbnN0
OwogICAgIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRlZ3kgZ2V0QXJyYXlJbmRleENsYW1waW5n
U3RyYXRlZ3koKSBjb25zdDsKLSAgICBjb25zdCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvciYgZ2V0
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IoKSBjb25zdDsKLQotICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRDb2xsZWN0VmFyaWFibGVzKFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpCi0gICAg
ewotICAgICAgICByZXR1cm4gKGNvbXBpbGVPcHRpb25zICYgU0hfVkFSSUFCTEVTKSAhPSAwOwot
ICAgIH0KKyAgICBjb25zdCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAmZ2V0QnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3IoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGbGF0dGVuUHJh
Z21hU3RkZ2xJbnZhcmlhbnRBbGwoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3VsZENvbGxl
Y3RWYXJpYWJsZXMoU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucyk7CiAKKyAgICBib29s
IHdlcmVWYXJpYWJsZXNDb2xsZWN0ZWQoKSBjb25zdDsKICAgICBzdGQ6OnZlY3RvcjxzaDo6QXR0
cmlidXRlPiBhdHRyaWJ1dGVzOwogICAgIHN0ZDo6dmVjdG9yPHNoOjpPdXRwdXRWYXJpYWJsZT4g
b3V0cHV0VmFyaWFibGVzOwogICAgIHN0ZDo6dmVjdG9yPHNoOjpVbmlmb3JtPiB1bmlmb3JtczsK
ICAgICBzdGQ6OnZlY3RvcjxzaDo6U2hhZGVyVmFyaWFibGU+IGV4cGFuZGVkVW5pZm9ybXM7CiAg
ICAgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+IHZhcnlpbmdzOwogICAgIHN0ZDo6dmVjdG9yPHNo
OjpJbnRlcmZhY2VCbG9jaz4gaW50ZXJmYWNlQmxvY2tzOwotICAgIGJvb2wgdmFyaWFibGVzQ29s
bGVjdGVkOwogCiAgIHByaXZhdGU6CiAgICAgLy8gQ3JlYXRlcyB0aGUgZnVuY3Rpb24gY2FsbCBE
QUcgZm9yIGZ1cnRoZXIgYW5hbHlzaXMsIHJldHVybmluZyBmYWxzZSBpZiB0aGVyZSBpcyBhIHJl
Y3Vyc2lvbgpAQCAtMTgzLDYgKzE5MCwxMSBAQCBjbGFzcyBUQ29tcGlsZXIgOiBwdWJsaWMgVFNo
SGFuZGxlQmFzZQogCiAgICAgdm9pZCBpbml0U2FtcGxlckRlZmF1bHRQcmVjaXNpb24oVEJhc2lj
VHlwZSBzYW1wbGVyVHlwZSk7CiAKKyAgICAvLyBDb2xsZWN0IGluZm8gZm9yIGFsbCBhdHRyaWJz
LCB1bmlmb3JtcywgdmFyeWluZ3MuCisgICAgdm9pZCBjb2xsZWN0VmFyaWFibGVzKFRJbnRlcm1O
b2RlICpyb290KTsKKworICAgIGJvb2wgdmFyaWFibGVzQ29sbGVjdGVkOworCiAgICAgLy8gUmVt
b3ZlcyB1bnVzZWQgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGFuZCBwcm90b3R5cGVzIGZyb20gdGhl
IEFTVAogICAgIGNsYXNzIFVudXNlZFByZWRpY2F0ZTsKICAgICBib29sIHBydW5lVW51c2VkRnVu
Y3Rpb25zKFRJbnRlcm1CbG9jayAqcm9vdCk7CkBAIC0xOTcsMTAgKzIwOSw3IEBAIGNsYXNzIFRD
b21waWxlciA6IHB1YmxpYyBUU2hIYW5kbGVCYXNlCiAKICAgICBzdHJ1Y3QgRnVuY3Rpb25NZXRh
ZGF0YQogICAgIHsKLSAgICAgICAgRnVuY3Rpb25NZXRhZGF0YSgpCi0gICAgICAgICAgICA6IHVz
ZWQoZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAgfQorICAgICAgICBGdW5jdGlvbk1ldGFkYXRh
KCkgOiB1c2VkKGZhbHNlKSB7fQogICAgICAgICBib29sIHVzZWQ7CiAgICAgfTsKIApAQCAtMjI4
LDEzICsyMzcsMTcgQEAgY2xhc3MgVENvbXBpbGVyIDogcHVibGljIFRTaEhhbmRsZUJhc2UKIAog
ICAgIC8vIFJlc3VsdHMgb2YgY29tcGlsYXRpb24uCiAgICAgaW50IHNoYWRlclZlcnNpb247Ci0g
ICAgVEluZm9TaW5rIGluZm9TaW5rOyAgLy8gT3V0cHV0IHNpbmsuCi0gICAgY29uc3QgY2hhciAq
bVNvdXJjZVBhdGg7IC8vIFBhdGggb2Ygc291cmNlIGZpbGUgb3IgTlVMTAorICAgIFRJbmZvU2lu
ayBpbmZvU2luazsgICAgICAgLy8gT3V0cHV0IHNpbmsuCisgICAgVERpYWdub3N0aWNzIG1EaWFn
bm9zdGljczsKKyAgICBjb25zdCBjaGFyICptU291cmNlUGF0aDsgIC8vIFBhdGggb2Ygc291cmNl
IGZpbGUgb3IgTlVMTAogCiAgICAgLy8gY29tcHV0ZSBzaGFkZXIgbG9jYWwgZ3JvdXAgc2l6ZQog
ICAgIGJvb2wgbUNvbXB1dGVTaGFkZXJMb2NhbFNpemVEZWNsYXJlZDsKICAgICBzaDo6V29ya0dy
b3VwU2l6ZSBtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZTsKIAorICAgIC8vIEdMX09WUl9tdWx0aXZp
ZXcgbnVtX3ZpZXdzLgorICAgIGludCBtTnVtVmlld3M7CisKICAgICAvLyBuYW1lIGhhc2hpbmcu
CiAgICAgU2hIYXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rpb247CiAgICAgTmFtZU1hcCBuYW1lTWFw
OwpAQCAtMjUzLDggKzI2Niw5IEBAIGNsYXNzIFRDb21waWxlciA6IHB1YmxpYyBUU2hIYW5kbGVC
YXNlCiAvLyBkZXN0cm95IHRoZSBtYWNoaW5lIGRlcGVuZGVudCBvYmplY3RzLCB3aGljaCBjb250
YWluIHRoZQogLy8gYWJvdmUgbWFjaGluZSBpbmRlcGVuZGVudCBpbmZvcm1hdGlvbi4KIC8vCi1U
Q29tcGlsZXIqIENvbnN0cnVjdENvbXBpbGVyKAotICAgIHNoOjpHTGVudW0gdHlwZSwgU2hTaGFk
ZXJTcGVjIHNwZWMsIFNoU2hhZGVyT3V0cHV0IG91dHB1dCk7Ci12b2lkIERlbGV0ZUNvbXBpbGVy
KFRDb21waWxlciopOworVENvbXBpbGVyICpDb25zdHJ1Y3RDb21waWxlcihzaDo6R0xlbnVtIHR5
cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBTaFNoYWRlck91dHB1dCBvdXRwdXQpOwordm9pZCBEZWxl
dGVDb21waWxlcihUQ29tcGlsZXIgKik7CisKK30gIC8vIG5hbWVzcGFjZSBzaAogCi0jZW5kaWYg
Ly8gQ09NUElMRVJfVFJBTlNMQVRPUl9DT01QSUxFUl9IXworI2VuZGlmICAvLyBDT01QSUxFUl9U
UkFOU0xBVE9SX0NPTVBJTEVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db25zdGFudFVuaW9uLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0NvbnN0YW50VW5pb24uY3BwCmlu
ZGV4IGI0MDc0YmY3N2QwLi5iOTYwZTQyOGYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29uc3RhbnRVbmlvbi5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvQ29uc3RhbnRV
bmlvbi5jcHAKQEAgLTcsNTkgKzcsNjEgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvQ29uc3RhbnRVbmlvbi5oIgogCi0jaW5jbHVkZSAiYmFzZS9udW1lcmljcy9zYWZlX21hdGgu
aCIKICNpbmNsdWRlICJjb21tb24vbWF0aHV0aWwuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL0RpYWdub3N0aWNzLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBuYW1lc3BhY2UKIHsK
IAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1UIENoZWNrZWRTdW0oYmFzZTo6Q2hlY2tlZE51bWVy
aWM8VD4gbGhzLAotICAgICAgICAgICAgIGJhc2U6OkNoZWNrZWROdW1lcmljPFQ+IHJocywKLSAg
ICAgICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWcsCi0gICAgICAgICAgICAgY29uc3QgVFNvdXJj
ZUxvYyAmbGluZSkKK2Zsb2F0IENoZWNrZWRTdW0oZmxvYXQgbGhzLCBmbG9hdCByaHMsIFREaWFn
bm9zdGljcyAqZGlhZywgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkKIHsKLSAgICBBU1NFUlQobGhz
LklzVmFsaWQoKSAmJiByaHMuSXNWYWxpZCgpKTsKLSAgICBhdXRvIHJlc3VsdCA9IGxocyArIHJo
czsKLSAgICBpZiAoIXJlc3VsdC5Jc1ZhbGlkKCkpCisgICAgZmxvYXQgcmVzdWx0ID0gbGhzICsg
cmhzOworICAgIGlmIChnbDo6aXNOYU4ocmVzdWx0KSAmJiAhZ2w6OmlzTmFOKGxocykgJiYgIWds
Ojppc05hTihyaHMpKQorICAgIHsKKyAgICAgICAgZGlhZy0+d2FybmluZyhsaW5lLCAiQ29uc3Rh
bnQgZm9sZGVkIHVuZGVmaW5lZCBhZGRpdGlvbiBnZW5lcmF0ZWQgTmFOIiwgIisiKTsKKyAgICB9
CisgICAgZWxzZSBpZiAoZ2w6OmlzSW5mKHJlc3VsdCkgJiYgIWdsOjppc0luZihsaHMpICYmICFn
bDo6aXNJbmYocmhzKSkKICAgICB7Ci0gICAgICAgIGRpYWctPmVycm9yKGxpbmUsICJBZGRpdGlv
biBvdXQgb2YgcmFuZ2UiLCAiKiIsICIiKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRp
YWctPndhcm5pbmcobGluZSwgIkNvbnN0YW50IGZvbGRlZCBhZGRpdGlvbiBvdmVyZmxvd2VkIHRv
IGluZmluaXR5IiwgIisiKTsKICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdC5WYWx1ZU9yRGVmYXVs
dCgwKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVQg
Q2hlY2tlZERpZmYoYmFzZTo6Q2hlY2tlZE51bWVyaWM8VD4gbGhzLAotICAgICAgICAgICAgICBi
YXNlOjpDaGVja2VkTnVtZXJpYzxUPiByaHMsCi0gICAgICAgICAgICAgIFREaWFnbm9zdGljcyAq
ZGlhZywKLSAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkKK2Zsb2F0IENoZWNr
ZWREaWZmKGZsb2F0IGxocywgZmxvYXQgcmhzLCBURGlhZ25vc3RpY3MgKmRpYWcsIGNvbnN0IFRT
b3VyY2VMb2MgJmxpbmUpCiB7Ci0gICAgQVNTRVJUKGxocy5Jc1ZhbGlkKCkgJiYgcmhzLklzVmFs
aWQoKSk7Ci0gICAgYXV0byByZXN1bHQgPSBsaHMgLSByaHM7Ci0gICAgaWYgKCFyZXN1bHQuSXNW
YWxpZCgpKQorICAgIGZsb2F0IHJlc3VsdCA9IGxocyAtIHJoczsKKyAgICBpZiAoZ2w6OmlzTmFO
KHJlc3VsdCkgJiYgIWdsOjppc05hTihsaHMpICYmICFnbDo6aXNOYU4ocmhzKSkKKyAgICB7Cisg
ICAgICAgIGRpYWctPndhcm5pbmcobGluZSwgIkNvbnN0YW50IGZvbGRlZCB1bmRlZmluZWQgc3Vi
dHJhY3Rpb24gZ2VuZXJhdGVkIE5hTiIsICItIik7CisgICAgfQorICAgIGVsc2UgaWYgKGdsOjpp
c0luZihyZXN1bHQpICYmICFnbDo6aXNJbmYobGhzKSAmJiAhZ2w6OmlzSW5mKHJocykpCiAgICAg
ewotICAgICAgICBkaWFnLT5lcnJvcihsaW5lLCAiRGlmZmVyZW5jZSBvdXQgb2YgcmFuZ2UiLCAi
KiIsICIiKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRpYWctPndhcm5pbmcobGluZSwg
IkNvbnN0YW50IGZvbGRlZCBzdWJ0cmFjdGlvbiBvdmVyZmxvd2VkIHRvIGluZmluaXR5IiwgIi0i
KTsKICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdC5WYWx1ZU9yRGVmYXVsdCgwKTsKKyAgICByZXR1
cm4gcmVzdWx0OwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLVQgQ2hlY2tlZE11bChiYXNl
OjpDaGVja2VkTnVtZXJpYzxUPiBsaHMsCi0gICAgICAgICAgICAgYmFzZTo6Q2hlY2tlZE51bWVy
aWM8VD4gcmhzLAotICAgICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZywKLSAgICAgICAgICAg
ICBjb25zdCBUU291cmNlTG9jICZsaW5lKQorZmxvYXQgQ2hlY2tlZE11bChmbG9hdCBsaHMsIGZs
b2F0IHJocywgVERpYWdub3N0aWNzICpkaWFnLCBjb25zdCBUU291cmNlTG9jICZsaW5lKQogewot
ICAgIEFTU0VSVChsaHMuSXNWYWxpZCgpICYmIHJocy5Jc1ZhbGlkKCkpOwotICAgIGF1dG8gcmVz
dWx0ID0gbGhzICogcmhzOwotICAgIGlmICghcmVzdWx0LklzVmFsaWQoKSkKKyAgICBmbG9hdCBy
ZXN1bHQgPSBsaHMgKiByaHM7CisgICAgaWYgKGdsOjppc05hTihyZXN1bHQpICYmICFnbDo6aXNO
YU4obGhzKSAmJiAhZ2w6OmlzTmFOKHJocykpCiAgICAgewotICAgICAgICBkaWFnLT5lcnJvcihs
aW5lLCAiTXVsdGlwbGljYXRpb24gb3V0IG9mIHJhbmdlIiwgIioiLCAiIik7Ci0gICAgICAgIHJl
dHVybiAwOworICAgICAgICBkaWFnLT53YXJuaW5nKGxpbmUsICJDb25zdGFudCBmb2xkZWQgdW5k
ZWZpbmVkIG11bHRpcGxpY2F0aW9uIGdlbmVyYXRlZCBOYU4iLCAiKiIpOwogICAgIH0KLSAgICBy
ZXR1cm4gcmVzdWx0LlZhbHVlT3JEZWZhdWx0KDApOworICAgIGVsc2UgaWYgKGdsOjppc0luZihy
ZXN1bHQpICYmICFnbDo6aXNJbmYobGhzKSAmJiAhZ2w6OmlzSW5mKHJocykpCisgICAgeworICAg
ICAgICBkaWFnLT53YXJuaW5nKGxpbmUsICJDb25zdGFudCBmb2xkZWQgbXVsdGlwbGljYXRpb24g
b3ZlcmZsb3dlZCB0byBpbmZpbml0eSIsICIqIik7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK2Jvb2wgSXNWYWxpZFNoaWZ0T2Zmc2V0KGNvbnN0IFRDb25zdGFudFVuaW9uICZyaHMp
Cit7CisgICAgcmV0dXJuIChyaHMuZ2V0VHlwZSgpID09IEVidEludCAmJiAocmhzLmdldElDb25z
dCgpID49IDAgJiYgcmhzLmdldElDb25zdCgpIDw9IDMxKSkgfHwKKyAgICAgICAgICAgKHJocy5n
ZXRUeXBlKCkgPT0gRWJ0VUludCAmJiByaHMuZ2V0VUNvbnN0KCkgPD0gMzF1KTsKIH0KIAogfSAg
Ly8gYW5vbnltb3VzIG5hbWVzcGFjZQpAQCAtMTk2LDYgKzE5OCwxMSBAQCBib29sIFRDb25zdGFu
dFVuaW9uOjpvcGVyYXRvcj09KGNvbnN0IGJvb2wgYikgY29uc3QKICAgICByZXR1cm4gYiA9PSBi
Q29uc3Q7CiB9CiAKK2Jvb2wgVENvbnN0YW50VW5pb246Om9wZXJhdG9yPT0oY29uc3QgVFl1dkNz
Y1N0YW5kYXJkRVhUIHMpIGNvbnN0Cit7CisgICAgcmV0dXJuIHMgPT0geXV2Q3NjU3RhbmRhcmRF
WFRDb25zdDsKK30KKwogYm9vbCBUQ29uc3RhbnRVbmlvbjo6b3BlcmF0b3I9PShjb25zdCBUQ29u
c3RhbnRVbmlvbiAmY29uc3RhbnQpIGNvbnN0CiB7CiAgICAgaWYgKGNvbnN0YW50LnR5cGUgIT0g
dHlwZSkKQEAgLTIxMSw2ICsyMTgsOCBAQCBib29sIFRDb25zdGFudFVuaW9uOjpvcGVyYXRvcj09
KGNvbnN0IFRDb25zdGFudFVuaW9uICZjb25zdGFudCkgY29uc3QKICAgICAgICAgICAgIHJldHVy
biBjb25zdGFudC5mQ29uc3QgPT0gZkNvbnN0OwogICAgICAgICBjYXNlIEVidEJvb2w6CiAgICAg
ICAgICAgICByZXR1cm4gY29uc3RhbnQuYkNvbnN0ID09IGJDb25zdDsKKyAgICAgICAgY2FzZSBF
YnRZdXZDc2NTdGFuZGFyZEVYVDoKKyAgICAgICAgICAgIHJldHVybiBjb25zdGFudC55dXZDc2NT
dGFuZGFyZEVYVENvbnN0ID09IHl1dkNzY1N0YW5kYXJkRVhUQ29uc3Q7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjM2LDYgKzI0NSwxMSBA
QCBib29sIFRDb25zdGFudFVuaW9uOjpvcGVyYXRvciE9KGNvbnN0IGJvb2wgYikgY29uc3QKICAg
ICByZXR1cm4gIW9wZXJhdG9yPT0oYik7CiB9CiAKK2Jvb2wgVENvbnN0YW50VW5pb246Om9wZXJh
dG9yIT0oY29uc3QgVFl1dkNzY1N0YW5kYXJkRVhUIHMpIGNvbnN0Cit7CisgICAgcmV0dXJuICFv
cGVyYXRvcj09KHMpOworfQorCiBib29sIFRDb25zdGFudFVuaW9uOjpvcGVyYXRvciE9KGNvbnN0
IFRDb25zdGFudFVuaW9uICZjb25zdGFudCkgY29uc3QKIHsKICAgICByZXR1cm4gIW9wZXJhdG9y
PT0oY29uc3RhbnQpOwpAQCAtMjkwLDcgKzMwNCw3IEBAIFRDb25zdGFudFVuaW9uIFRDb25zdGFu
dFVuaW9uOjphZGQoY29uc3QgVENvbnN0YW50VW5pb24gJmxocywKICAgICAgICAgICAgIHJldHVy
blZhbHVlLnNldFVDb25zdChnbDo6V3JhcHBpbmdTdW08dW5zaWduZWQgaW50PihsaHMudUNvbnN0
LCByaHMudUNvbnN0KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFYnRGbG9h
dDoKLSAgICAgICAgICAgIHJldHVyblZhbHVlLnNldEZDb25zdChDaGVja2VkU3VtPGZsb2F0Pihs
aHMuZkNvbnN0LCByaHMuZkNvbnN0LCBkaWFnLCBsaW5lKSk7CisgICAgICAgICAgICByZXR1cm5W
YWx1ZS5zZXRGQ29uc3QoQ2hlY2tlZFN1bShsaHMuZkNvbnN0LCByaHMuZkNvbnN0LCBkaWFnLCBs
aW5lKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CkBAIC0zMTYsNyArMzMwLDcgQEAgVENvbnN0YW50VW5pb24gVENvbnN0
YW50VW5pb246OnN1Yihjb25zdCBUQ29uc3RhbnRVbmlvbiAmbGhzLAogICAgICAgICAgICAgcmV0
dXJuVmFsdWUuc2V0VUNvbnN0KGdsOjpXcmFwcGluZ0RpZmY8dW5zaWduZWQgaW50PihsaHMudUNv
bnN0LCByaHMudUNvbnN0KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFYnRG
bG9hdDoKLSAgICAgICAgICAgIHJldHVyblZhbHVlLnNldEZDb25zdChDaGVja2VkRGlmZjxmbG9h
dD4obGhzLmZDb25zdCwgcmhzLmZDb25zdCwgZGlhZywgbGluZSkpOworICAgICAgICAgICAgcmV0
dXJuVmFsdWUuc2V0RkNvbnN0KENoZWNrZWREaWZmKGxocy5mQ29uc3QsIHJocy5mQ29uc3QsIGRp
YWcsIGxpbmUpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKQEAgLTM0NCw3ICszNTgsNyBAQCBUQ29uc3RhbnRVbmlvbiBU
Q29uc3RhbnRVbmlvbjo6bXVsKGNvbnN0IFRDb25zdGFudFVuaW9uICZsaHMsCiAgICAgICAgICAg
ICByZXR1cm5WYWx1ZS5zZXRVQ29uc3QobGhzLnVDb25zdCAqIHJocy51Q29uc3QpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICByZXR1cm5W
YWx1ZS5zZXRGQ29uc3QoQ2hlY2tlZE11bDxmbG9hdD4obGhzLmZDb25zdCwgcmhzLmZDb25zdCwg
ZGlhZywgbGluZSkpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0RkNvbnN0KENoZWNrZWRN
dWwobGhzLmZDb25zdCwgcmhzLmZDb25zdCwgZGlhZywgbGluZSkpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwpAQCAtMzgx
LDEwICszOTUsOSBAQCBUQ29uc3RhbnRVbmlvbiBUQ29uc3RhbnRVbmlvbjo6cnNoaWZ0KGNvbnN0
IFRDb25zdGFudFVuaW9uICZsaHMsCiAgICAgVENvbnN0YW50VW5pb24gcmV0dXJuVmFsdWU7CiAg
ICAgQVNTRVJUKGxocy50eXBlID09IEVidEludCB8fCBsaHMudHlwZSA9PSBFYnRVSW50KTsKICAg
ICBBU1NFUlQocmhzLnR5cGUgPT0gRWJ0SW50IHx8IHJocy50eXBlID09IEVidFVJbnQpOwotICAg
IGlmICgocmhzLnR5cGUgPT0gRWJ0SW50ICYmIChyaHMuaUNvbnN0IDwgMCB8fCByaHMuaUNvbnN0
ID4gMzEpKSB8fAotICAgICAgICAocmhzLnR5cGUgPT0gRWJ0VUludCAmJiByaHMudUNvbnN0ID4g
MzF1KSkKKyAgICBpZiAoIUlzVmFsaWRTaGlmdE9mZnNldChyaHMpKQogICAgIHsKLSAgICAgICAg
ZGlhZy0+ZXJyb3IobGluZSwgIlVuZGVmaW5lZCBzaGlmdCAob3BlcmFuZCBvdXQgb2YgcmFuZ2Up
IiwgIj4+IiwgIiIpOworICAgICAgICBkaWFnLT53YXJuaW5nKGxpbmUsICJVbmRlZmluZWQgc2hp
ZnQgKG9wZXJhbmQgb3V0IG9mIHJhbmdlKSIsICI+PiIpOwogICAgICAgICBzd2l0Y2ggKGxocy50
eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICBjYXNlIEVidEludDoKQEAgLTQyMCwyNyArNDMz
LDQyIEBAIFRDb25zdGFudFVuaW9uIFRDb25zdGFudFVuaW9uOjpyc2hpZnQoY29uc3QgVENvbnN0
YW50VW5pb24gJmxocywKICAgICAgICAgICAgICAgICAvLyBFU1NMIDMuMDAuNiBzZWN0aW9uIDUu
OTogIklmIEUxIGlzIGEgc2lnbmVkIGludGVnZXIsIHRoZSByaWdodC1zaGlmdCB3aWxsIGV4dGVu
ZAogICAgICAgICAgICAgICAgIC8vIHRoZSBzaWduIGJpdC4iIEluIEMrKyBzaGlmdGluZyBuZWdh
dGl2ZSBpbnRlZ2VycyBpcyB1bmRlZmluZWQsIHNvIHdlIGltcGxlbWVudAogICAgICAgICAgICAg
ICAgIC8vIGV4dGVuZGluZyB0aGUgc2lnbiBiaXQgbWFudWFsbHkuCi0gICAgICAgICAgICAgICAg
Ym9vbCBleHRlbmRTaWduQml0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaW50IGxoc1NhZmUg
ICAgICAgID0gbGhzLmlDb25zdDsKLSAgICAgICAgICAgICAgICBpZiAobGhzU2FmZSA8IDApCisg
ICAgICAgICAgICAgICAgaW50IGxoc1NhZmUgPSBsaHMuaUNvbnN0OworICAgICAgICAgICAgICAg
IGlmIChsaHNTYWZlID09IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCkpCiAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBleHRlbmRTaWduQml0ID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIHNpZ24gYml0IHNvIHRoYXQgYml0c2hpZnQg
cmlnaHQgaXMgZGVmaW5lZCBpbiBDKysuCi0gICAgICAgICAgICAgICAgICAgIGxoc1NhZmUgJj0g
MHg3ZmZmZmZmZjsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxoc1NhZmUgPiAwKTsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gVGhlIG1pbiBpbnRlZ2VyIG5lZWRzIHNwZWNpYWwgdHJlYXRt
ZW50IGJlY2F1c2Ugb25seSBiaXQgaXQgaGFzIHNldCBpcyB0aGUKKyAgICAgICAgICAgICAgICAg
ICAgLy8gc2lnbiBiaXQsIHdoaWNoIHdlIGNsZWFyIGxhdGVyIHRvIGltcGxlbWVudCBzYWZlIHJp
Z2h0IHNoaWZ0IG9mIG5lZ2F0aXZlCisgICAgICAgICAgICAgICAgICAgIC8vIG51bWJlcnMuCisg
ICAgICAgICAgICAgICAgICAgIGxoc1NhZmUgPSAtMHg0MDAwMDAwMDsKKyAgICAgICAgICAgICAg
ICAgICAgLS1zaGlmdE9mZnNldDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
cmV0dXJuVmFsdWUuc2V0SUNvbnN0KGxoc1NhZmUgPj4gc2hpZnRPZmZzZXQpOwotCi0gICAgICAg
ICAgICAgICAgLy8gTWFudWFsbHkgZmlsbCBpbiB0aGUgZXh0ZW5kZWQgc2lnbiBiaXQgaWYgbmVj
ZXNzYXJ5LgotICAgICAgICAgICAgICAgIGlmIChleHRlbmRTaWduQml0KQorICAgICAgICAgICAg
ICAgIGlmIChzaGlmdE9mZnNldCA+IDApCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICBpbnQgZXh0ZW5kZWRTaWduQml0ID0gc3RhdGljX2Nhc3Q8aW50PigweGZmZmZmZmZm
dSA8PCAoMzEgLSBzaGlmdE9mZnNldCkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1
ZS5zZXRJQ29uc3QocmV0dXJuVmFsdWUuZ2V0SUNvbnN0KCkgfCBleHRlbmRlZFNpZ25CaXQpOwor
ICAgICAgICAgICAgICAgICAgICBib29sIGV4dGVuZFNpZ25CaXQgPSBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGxoc1NhZmUgPCAwKQorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBleHRlbmRTaWduQml0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIENsZWFyIHRoZSBzaWduIGJpdCBzbyB0aGF0IGJpdHNoaWZ0IHJpZ2h0IGlz
IGRlZmluZWQgaW4gQysrLgorICAgICAgICAgICAgICAgICAgICAgICAgbGhzU2FmZSAmPSAweDdm
ZmZmZmZmOworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGxoc1NhZmUgPiAwKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm5WYWx1ZS5zZXRJ
Q29uc3QobGhzU2FmZSA+PiBzaGlmdE9mZnNldCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8g
TWFudWFsbHkgZmlsbCBpbiB0aGUgZXh0ZW5kZWQgc2lnbiBiaXQgaWYgbmVjZXNzYXJ5LgorICAg
ICAgICAgICAgICAgICAgICBpZiAoZXh0ZW5kU2lnbkJpdCkKKyAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4dGVuZGVkU2lnbkJpdCA9IHN0YXRpY19j
YXN0PGludD4oMHhmZmZmZmZmZnUgPDwgKDMxIC0gc2hpZnRPZmZzZXQpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVyblZhbHVlLnNldElDb25zdChyZXR1cm5WYWx1ZS5nZXRJQ29uc3Qo
KSB8IGV4dGVuZGVkU2lnbkJpdCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuVmFsdWUuc2V0SUNvbnN0KGxoc1NhZmUpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm5WYWx1ZS5zZXRJQ29uc3QocmhzLmlDb25zdCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuVmFsdWUuc2V0SUNvbnN0KGxocy5pQ29uc3QpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTQ3MywxMCArNTAxLDkgQEAgVENv
bnN0YW50VW5pb24gVENvbnN0YW50VW5pb246OmxzaGlmdChjb25zdCBUQ29uc3RhbnRVbmlvbiAm
bGhzLAogICAgIFRDb25zdGFudFVuaW9uIHJldHVyblZhbHVlOwogICAgIEFTU0VSVChsaHMudHlw
ZSA9PSBFYnRJbnQgfHwgbGhzLnR5cGUgPT0gRWJ0VUludCk7CiAgICAgQVNTRVJUKHJocy50eXBl
ID09IEVidEludCB8fCByaHMudHlwZSA9PSBFYnRVSW50KTsKLSAgICBpZiAoKHJocy50eXBlID09
IEVidEludCAmJiAocmhzLmlDb25zdCA8IDAgfHwgcmhzLmlDb25zdCA+IDMxKSkgfHwKLSAgICAg
ICAgKHJocy50eXBlID09IEVidFVJbnQgJiYgcmhzLnVDb25zdCA+IDMxdSkpCisgICAgaWYgKCFJ
c1ZhbGlkU2hpZnRPZmZzZXQocmhzKSkKICAgICB7Ci0gICAgICAgIGRpYWctPmVycm9yKGxpbmUs
ICJVbmRlZmluZWQgc2hpZnQgKG9wZXJhbmQgb3V0IG9mIHJhbmdlKSIsICI8PCIsICIiKTsKKyAg
ICAgICAgZGlhZy0+d2FybmluZyhsaW5lLCAiVW5kZWZpbmVkIHNoaWZ0IChvcGVyYW5kIG91dCBv
ZiByYW5nZSkiLCAiPDwiKTsKICAgICAgICAgc3dpdGNoIChsaHMudHlwZSkKICAgICAgICAgewog
ICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CkBAIC02MjAsMyArNjQ3LDUgQEAgVENvbnN0YW50VW5p
b24gVENvbnN0YW50VW5pb246Om9wZXJhdG9yfHwoY29uc3QgVENvbnN0YW50VW5pb24gJmNvbnN0
YW50KSBjb25zdAogCiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwogfQorCit9ICAvLyBuYW1lc3Bh
Y2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0NvbnN0YW50VW5pb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0NvbnN0YW50VW5pb24uaAppbmRleCBlZWMwZjBmZjk3ZC4uODcw
YWNiNmY5MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0NvbnN0YW50VW5pb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Db25zdGFudFVuaW9uLmgKQEAgLTEyLDYgKzEyLDkg
QEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0NvbW1vbi5oIgogI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvQmFzZVR5cGVzLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBjbGFz
cyBURGlhZ25vc3RpY3M7CiAKIGNsYXNzIFRDb25zdGFudFVuaW9uCkBAIC0yMiwyNSArMjUsNTAg
QEAgY2xhc3MgVENvbnN0YW50VW5pb24KIAogICAgIGJvb2wgY2FzdChUQmFzaWNUeXBlIG5ld1R5
cGUsIGNvbnN0IFRDb25zdGFudFVuaW9uICZjb25zdGFudCk7CiAKLSAgICB2b2lkIHNldElDb25z
dChpbnQgaSkge2lDb25zdCA9IGk7IHR5cGUgPSBFYnRJbnQ7IH0KLSAgICB2b2lkIHNldFVDb25z
dCh1bnNpZ25lZCBpbnQgdSkgeyB1Q29uc3QgPSB1OyB0eXBlID0gRWJ0VUludDsgfQotICAgIHZv
aWQgc2V0RkNvbnN0KGZsb2F0IGYpIHtmQ29uc3QgPSBmOyB0eXBlID0gRWJ0RmxvYXQ7IH0KLSAg
ICB2b2lkIHNldEJDb25zdChib29sIGIpIHtiQ29uc3QgPSBiOyB0eXBlID0gRWJ0Qm9vbDsgfQor
ICAgIHZvaWQgc2V0SUNvbnN0KGludCBpKQorICAgIHsKKyAgICAgICAgaUNvbnN0ID0gaTsKKyAg
ICAgICAgdHlwZSAgID0gRWJ0SW50OworICAgIH0KKyAgICB2b2lkIHNldFVDb25zdCh1bnNpZ25l
ZCBpbnQgdSkKKyAgICB7CisgICAgICAgIHVDb25zdCA9IHU7CisgICAgICAgIHR5cGUgICA9IEVi
dFVJbnQ7CisgICAgfQorICAgIHZvaWQgc2V0RkNvbnN0KGZsb2F0IGYpCisgICAgeworICAgICAg
ICBmQ29uc3QgPSBmOworICAgICAgICB0eXBlICAgPSBFYnRGbG9hdDsKKyAgICB9CisgICAgdm9p
ZCBzZXRCQ29uc3QoYm9vbCBiKQorICAgIHsKKyAgICAgICAgYkNvbnN0ID0gYjsKKyAgICAgICAg
dHlwZSAgID0gRWJ0Qm9vbDsKKyAgICB9CisKKyAgICB2b2lkIHNldFl1dkNzY1N0YW5kYXJkRVhU
Q29uc3QoVFl1dkNzY1N0YW5kYXJkRVhUIHMpCisgICAgeworICAgICAgICB5dXZDc2NTdGFuZGFy
ZEVYVENvbnN0ID0gczsKKyAgICAgICAgdHlwZSAgICAgICAgICAgICAgICAgICA9IEVidFl1dkNz
Y1N0YW5kYXJkRVhUOworICAgIH0KIAogICAgIGludCBnZXRJQ29uc3QoKSBjb25zdCB7IHJldHVy
biBpQ29uc3Q7IH0KICAgICB1bnNpZ25lZCBpbnQgZ2V0VUNvbnN0KCkgY29uc3QgeyByZXR1cm4g
dUNvbnN0OyB9CiAgICAgZmxvYXQgZ2V0RkNvbnN0KCkgY29uc3QgeyByZXR1cm4gZkNvbnN0OyB9
CiAgICAgYm9vbCBnZXRCQ29uc3QoKSBjb25zdCB7IHJldHVybiBiQ29uc3Q7IH0KKyAgICBUWXV2
Q3NjU3RhbmRhcmRFWFQgZ2V0WXV2Q3NjU3RhbmRhcmRFWFRDb25zdCgpIGNvbnN0IHsgcmV0dXJu
IHl1dkNzY1N0YW5kYXJkRVhUQ29uc3Q7IH0KIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBp
bnQgaSkgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHVuc2lnbmVkIGludCB1KSBj
b25zdDsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgZmxvYXQgZikgY29uc3Q7CiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IGJvb2wgYikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFRZdXZDc2NTdGFuZGFyZEVYVCBzKSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgVENvbnN0YW50VW5pb24gJmNvbnN0YW50KSBjb25zdDsKICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgaW50IGkpIGNvbnN0OwogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCB1bnNpZ25lZCBp
bnQgdSkgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGZsb2F0IGYpIGNvbnN0Owog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBib29sIGIpIGNvbnN0OworICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBUWXV2Q3NjU3RhbmRhcmRFWFQgcykgY29uc3Q7CiAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFRDb25zdGFudFVuaW9uICZjb25zdGFudCkgY29uc3Q7CiAgICAgYm9vbCBvcGVy
YXRvcj4oY29uc3QgVENvbnN0YW50VW5pb24gJmNvbnN0YW50KSBjb25zdDsKICAgICBib29sIG9w
ZXJhdG9yPChjb25zdCBUQ29uc3RhbnRVbmlvbiAmY29uc3RhbnQpIGNvbnN0OwpAQCAtNzgsOSAr
MTA2LDEyIEBAIGNsYXNzIFRDb25zdGFudFVuaW9uCiAgICAgICAgIHVuc2lnbmVkIGludCB1Q29u
c3Q7ICAvLyB1c2VkIGZvciB1dmVjLCBzY2FsYXIgdWludHMKICAgICAgICAgYm9vbCBiQ29uc3Q7
ICAgICAgICAgIC8vIHVzZWQgZm9yIGJ2ZWMsIHNjYWxhciBib29scwogICAgICAgICBmbG9hdCBm
Q29uc3Q7ICAgICAgICAgLy8gdXNlZCBmb3IgdmVjLCBtYXQsIHNjYWxhciBmbG9hdHMKKyAgICAg
ICAgVFl1dkNzY1N0YW5kYXJkRVhUIHl1dkNzY1N0YW5kYXJkRVhUQ29uc3Q7CiAgICAgfTsKIAog
ICAgIFRCYXNpY1R5cGUgdHlwZTsKIH07CiAKLSNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9S
X0NPTlNUQU5UVU5JT05fSF8KK30gIC8vIG5hbWVzcGFjZSBzaAorCisjZW5kaWYgIC8vIENPTVBJ
TEVSX1RSQU5TTEFUT1JfQ09OU1RBTlRVTklPTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGVmZXJHbG9iYWxJbml0aWFsaXpl
cnMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
RGVmZXJHbG9iYWxJbml0aWFsaXplcnMuY3BwCmluZGV4IDA2N2U2Y2VhM2M5Li5jZjdlYmI1ZTg4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvRGVmZXJHbG9iYWxJbml0aWFsaXplcnMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmNw
cApAQCAtMTUsNTQgKzE1LDExIEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRl
cm1Ob2RlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgog
Ci1uYW1lc3BhY2UKLXsKLQotdm9pZCBTZXRJbnRlcm5hbEZ1bmN0aW9uTmFtZShURnVuY3Rpb25T
eW1ib2xJbmZvICpmdW5jdGlvbkluZm8sIGNvbnN0IGNoYXIgKm5hbWUpCi17Ci0gICAgVFN0cmlu
ZyBuYW1lU3RyKG5hbWUpOwotICAgIG5hbWVTdHIgPSBURnVuY3Rpb246Om1hbmdsZU5hbWUobmFt
ZVN0cik7Ci0gICAgVE5hbWUgbmFtZU9iaihuYW1lU3RyKTsKLSAgICBuYW1lT2JqLnNldEludGVy
bmFsKHRydWUpOwotICAgIGZ1bmN0aW9uSW5mby0+c2V0TmFtZU9iaihuYW1lT2JqKTsKLX0KLQot
VEludGVybUFnZ3JlZ2F0ZSAqQ3JlYXRlRnVuY3Rpb25Qcm90b3R5cGVOb2RlKGNvbnN0IGNoYXIg
Km5hbWUsIGNvbnN0IGludCBmdW5jdGlvbklkKQotewotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmZ1
bmN0aW9uTm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcFByb3RvdHlwZSk7Ci0KLSAgICBT
ZXRJbnRlcm5hbEZ1bmN0aW9uTmFtZShmdW5jdGlvbk5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5m
bygpLCBuYW1lKTsKLSAgICBUVHlwZSByZXR1cm5UeXBlKEVidFZvaWQpOwotICAgIGZ1bmN0aW9u
Tm9kZS0+c2V0VHlwZShyZXR1cm5UeXBlKTsKLSAgICBmdW5jdGlvbk5vZGUtPmdldEZ1bmN0aW9u
U3ltYm9sSW5mbygpLT5zZXRJZChmdW5jdGlvbklkKTsKLSAgICByZXR1cm4gZnVuY3Rpb25Ob2Rl
OwotfQotCi1USW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpDcmVhdGVGdW5jdGlvbkRlZmluaXRp
b25Ob2RlKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqZnVuY3Rpb25Cb2R5LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBpbnQgZnVuY3Rpb25JZCkKK25hbWVzcGFjZSBzaAogewotICAgIFRUeXBlIHJldHVyblR5cGUo
RWJ0Vm9pZCk7Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFyYW1zTm9kZSA9IG5ldyBUSW50ZXJt
QWdncmVnYXRlKEVPcFBhcmFtZXRlcnMpOwotICAgIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24g
KmZ1bmN0aW9uTm9kZSA9Ci0gICAgICAgIG5ldyBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uKHJl
dHVyblR5cGUsIHBhcmFtc05vZGUsIGZ1bmN0aW9uQm9keSk7Ci0KLSAgICBTZXRJbnRlcm5hbEZ1
bmN0aW9uTmFtZShmdW5jdGlvbk5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLCBuYW1lKTsK
LSAgICBmdW5jdGlvbk5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5zZXRJZChmdW5jdGlv
bklkKTsKLSAgICByZXR1cm4gZnVuY3Rpb25Ob2RlOwotfQogCi1USW50ZXJtQWdncmVnYXRlICpD
cmVhdGVGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGludCBmdW5jdGlv
bklkKQorbmFtZXNwYWNlCiB7Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25Ob2RlID0g
bmV3IFRJbnRlcm1BZ2dyZWdhdGUoRU9wRnVuY3Rpb25DYWxsKTsKLQotICAgIGZ1bmN0aW9uTm9k
ZS0+c2V0VXNlckRlZmluZWQoKTsKLSAgICBTZXRJbnRlcm5hbEZ1bmN0aW9uTmFtZShmdW5jdGlv
bk5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLCBuYW1lKTsKLSAgICBUVHlwZSByZXR1cm5U
eXBlKEVidFZvaWQpOwotICAgIGZ1bmN0aW9uTm9kZS0+c2V0VHlwZShyZXR1cm5UeXBlKTsKLSAg
ICBmdW5jdGlvbk5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5zZXRJZChmdW5jdGlvbklk
KTsKLSAgICByZXR1cm4gZnVuY3Rpb25Ob2RlOwotfQogCiBjbGFzcyBEZWZlckdsb2JhbEluaXRp
YWxpemVyc1RyYXZlcnNlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiB7CkBAIC0xMTEsNyAr
NjgsNyBAQCBib29sIERlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzVHJhdmVyc2VyOjp2aXNpdEJpbmFy
eShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbgogICAgICAgICAgICAgaWYgKHN5bWJvbE5v
ZGUtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KQogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIC8vIEFsbCBvZiB0aGUgc2libGluZ3MgaW4gdGhlIHNhbWUgZGVjbGFyYXRpb24gbmVl
ZCB0byBoYXZlIGNvbnNpc3RlbnQgcXVhbGlmaWVycy4KLSAgICAgICAgICAgICAgICBhdXRvICpz
aWJsaW5ncyA9IGdldFBhcmVudE5vZGUoKS0+Z2V0QXNBZ2dyZWdhdGUoKS0+Z2V0U2VxdWVuY2Uo
KTsKKyAgICAgICAgICAgICAgICBhdXRvICpzaWJsaW5ncyA9IGdldFBhcmVudE5vZGUoKS0+Z2V0
QXNEZWNsYXJhdGlvbk5vZGUoKS0+Z2V0U2VxdWVuY2UoKTsKICAgICAgICAgICAgICAgICBmb3Ig
KFRJbnRlcm1Ob2RlICpzaWJsaW5nTm9kZSA6ICpzaWJsaW5ncykKICAgICAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKnNpYmxpbmdCaW5hcnkgPSBzaWJs
aW5nTm9kZS0+Z2V0QXNCaW5hcnlOb2RlKCk7CkBAIC0xMzgsMjQgKzk1LDI0IEBAIHZvaWQgRGVm
ZXJHbG9iYWxJbml0aWFsaXplcnNUcmF2ZXJzZXI6Omluc2VydEluaXRGdW5jdGlvbihUSW50ZXJt
QmxvY2sgKnJvb3QpCiAgICAgewogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGNvbnN0IGlu
dCBpbml0RnVuY3Rpb25JZCAgPSBUU3ltYm9sVGFibGU6Om5leHRVbmlxdWVJZCgpOworICAgIFRT
eW1ib2xVbmlxdWVJZCBpbml0RnVuY3Rpb25JZDsKIAogICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9u
TmFtZSA9ICJpbml0aWFsaXplRGVmZXJyZWRHbG9iYWxzIjsKIAogICAgIC8vIEFkZCBmdW5jdGlv
biBwcm90b3R5cGUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc2hhZGVyCi0gICAgVEludGVybUFn
Z3JlZ2F0ZSAqZnVuY3Rpb25Qcm90b3R5cGVOb2RlID0KLSAgICAgICAgQ3JlYXRlRnVuY3Rpb25Q
cm90b3R5cGVOb2RlKGZ1bmN0aW9uTmFtZSwgaW5pdEZ1bmN0aW9uSWQpOworICAgIFRJbnRlcm1G
dW5jdGlvblByb3RvdHlwZSAqZnVuY3Rpb25Qcm90b3R5cGVOb2RlID0KKyAgICAgICAgQ3JlYXRl
SW50ZXJuYWxGdW5jdGlvblByb3RvdHlwZU5vZGUoVFR5cGUoRWJ0Vm9pZCksIGZ1bmN0aW9uTmFt
ZSwgaW5pdEZ1bmN0aW9uSWQpOwogICAgIHJvb3QtPmdldFNlcXVlbmNlKCktPmluc2VydChyb290
LT5nZXRTZXF1ZW5jZSgpLT5iZWdpbigpLCBmdW5jdGlvblByb3RvdHlwZU5vZGUpOwogCiAgICAg
Ly8gQWRkIGZ1bmN0aW9uIGRlZmluaXRpb24gdG8gdGhlIGVuZCBvZiB0aGUgc2hhZGVyCiAgICAg
VEludGVybUJsb2NrICpmdW5jdGlvbkJvZHlOb2RlID0gbmV3IFRJbnRlcm1CbG9jaygpOwotICAg
IFRJbnRlcm1TZXF1ZW5jZSAqZnVuY3Rpb25Cb2R5ID0gZnVuY3Rpb25Cb2R5Tm9kZS0+Z2V0U2Vx
dWVuY2UoKTsKKyAgICBUSW50ZXJtU2VxdWVuY2UgKmZ1bmN0aW9uQm9keSAgPSBmdW5jdGlvbkJv
ZHlOb2RlLT5nZXRTZXF1ZW5jZSgpOwogICAgIGZvciAoY29uc3QgYXV0byAmZGVmZXJyZWRJbml0
IDogbURlZmVycmVkSW5pdGlhbGl6ZXJzKQogICAgIHsKICAgICAgICAgZnVuY3Rpb25Cb2R5LT5w
dXNoX2JhY2soZGVmZXJyZWRJbml0KTsKICAgICB9Ci0gICAgVEludGVybUZ1bmN0aW9uRGVmaW5p
dGlvbiAqZnVuY3Rpb25EZWZpbml0aW9uID0KLSAgICAgICAgQ3JlYXRlRnVuY3Rpb25EZWZpbml0
aW9uTm9kZShmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uQm9keU5vZGUsIGluaXRGdW5jdGlvbklkKTsK
KyAgICBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpmdW5jdGlvbkRlZmluaXRpb24gPSBDcmVh
dGVJbnRlcm5hbEZ1bmN0aW9uRGVmaW5pdGlvbk5vZGUoCisgICAgICAgIFRUeXBlKEVidFZvaWQp
LCBmdW5jdGlvbk5hbWUsIGZ1bmN0aW9uQm9keU5vZGUsIGluaXRGdW5jdGlvbklkKTsKICAgICBy
b290LT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soZnVuY3Rpb25EZWZpbml0aW9uKTsKIAogICAg
IC8vIEluc2VydCBjYWxsIGludG8gbWFpbiBmdW5jdGlvbgpAQCAtMTY0LDggKzEyMSw4IEBAIHZv
aWQgRGVmZXJHbG9iYWxJbml0aWFsaXplcnNUcmF2ZXJzZXI6Omluc2VydEluaXRGdW5jdGlvbihU
SW50ZXJtQmxvY2sgKnJvb3QpCiAgICAgICAgIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5v
ZGVGdW5jdGlvbiA9IG5vZGUtPmdldEFzRnVuY3Rpb25EZWZpbml0aW9uKCk7CiAgICAgICAgIGlm
IChub2RlRnVuY3Rpb24gIT0gbnVsbHB0ciAmJiBub2RlRnVuY3Rpb24tPmdldEZ1bmN0aW9uU3lt
Ym9sSW5mbygpLT5pc01haW4oKSkKICAgICAgICAgewotICAgICAgICAgICAgVEludGVybUFnZ3Jl
Z2F0ZSAqZnVuY3Rpb25DYWxsTm9kZSA9Ci0gICAgICAgICAgICAgICAgQ3JlYXRlRnVuY3Rpb25D
YWxsTm9kZShmdW5jdGlvbk5hbWUsIGluaXRGdW5jdGlvbklkKTsKKyAgICAgICAgICAgIFRJbnRl
cm1BZ2dyZWdhdGUgKmZ1bmN0aW9uQ2FsbE5vZGUgPSBDcmVhdGVJbnRlcm5hbEZ1bmN0aW9uQ2Fs
bE5vZGUoCisgICAgICAgICAgICAgICAgVFR5cGUoRWJ0Vm9pZCksIGZ1bmN0aW9uTmFtZSwgaW5p
dEZ1bmN0aW9uSWQsIG51bGxwdHIpOwogCiAgICAgICAgICAgICBUSW50ZXJtQmxvY2sgKm1haW5C
b2R5ID0gbm9kZUZ1bmN0aW9uLT5nZXRCb2R5KCk7CiAgICAgICAgICAgICBBU1NFUlQobWFpbkJv
ZHkgIT0gbnVsbHB0cik7CkBAIC0xODcsMyArMTQ0LDUgQEAgdm9pZCBEZWZlckdsb2JhbEluaXRp
YWxpemVycyhUSW50ZXJtQmxvY2sgKnJvb3QpCiAgICAgLy8gQWRkIHRoZSBmdW5jdGlvbiB3aXRo
IGluaXRpYWxpemF0aW9uIGFuZCB0aGUgY2FsbCB0byB0aGF0LgogICAgIHRyYXZlcnNlci5pbnNl
cnRJbml0RnVuY3Rpb24ocm9vdCk7CiB9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGVmZXJH
bG9iYWxJbml0aWFsaXplcnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0RlZmVyR2xvYmFsSW5pdGlhbGl6ZXJzLmgKaW5kZXggODVlNTVkOWM2MDku
LjI2MWVjOTAwMThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9EZWZlckdsb2JhbEluaXRpYWxpemVycy5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RlZmVyR2xvYmFsSW5pdGlh
bGl6ZXJzLmgKQEAgLTE1LDYgKzE1LDkgQEAKIAogY2xhc3MgVEludGVybUJsb2NrOwogCituYW1l
c3BhY2Ugc2gKK3sKIHZvaWQgRGVmZXJHbG9iYWxJbml0aWFsaXplcnMoVEludGVybUJsb2NrICpy
b290KTsKK30gIC8vIG5hbWVzcGFjZSBzaAogCiAjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFU
T1JfREVGRVJHTE9CQUxJTklUSUFMSVpFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0aWNzLmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0aWNzLmNw
cAppbmRleCA2YmE0Njc5YzQ1OS4uZDJmZTQyOTI4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0RpYWdub3N0aWNzLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9EaWFnbm9z
dGljcy5jcHAKQEAgLTExLDEwICsxMSwxMSBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvQ29tbW9uLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbmZvU2luay5oIgog
Ci1URGlhZ25vc3RpY3M6OlREaWFnbm9zdGljcyhUSW5mb1NpbmsmIGluZm9TaW5rKSA6Ci0gICAg
bUluZm9TaW5rKGluZm9TaW5rKSwKLSAgICBtTnVtRXJyb3JzKDApLAotICAgIG1OdW1XYXJuaW5n
cygwKQorbmFtZXNwYWNlIHNoCit7CisKK1REaWFnbm9zdGljczo6VERpYWdub3N0aWNzKFRJbmZv
U2lua0Jhc2UgJmluZm9TaW5rKQorICAgIDogbUluZm9TaW5rKGluZm9TaW5rKSwgbU51bUVycm9y
cygwKSwgbU51bVdhcm5pbmdzKDApCiB7CiB9CiAKQEAgLTIzLDU5ICsyNCw3MSBAQCBURGlhZ25v
c3RpY3M6On5URGlhZ25vc3RpY3MoKQogfQogCiB2b2lkIFREaWFnbm9zdGljczo6d3JpdGVJbmZv
KFNldmVyaXR5IHNldmVyaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBw
cDo6U291cmNlTG9jYXRpb24mIGxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHJlYXNvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHRva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgZXh0cmEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHBwOjpTb3VyY2VMb2NhdGlvbiAmbG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICpyZWFzb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKnRva2VuKQogewotICAgIFRQcmVmaXhUeXBlIHByZWZpeCA9IEVQcmVmaXhOb25lOwogICAg
IHN3aXRjaCAoc2V2ZXJpdHkpCiAgICAgewotICAgICAgY2FzZSBQUF9FUlJPUjoKLSAgICAgICAg
KyttTnVtRXJyb3JzOwotICAgICAgICBwcmVmaXggPSBFUHJlZml4RXJyb3I7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBQUF9XQVJOSU5HOgotICAgICAgICArK21OdW1XYXJuaW5nczsKLSAg
ICAgICAgcHJlZml4ID0gRVByZWZpeFdhcm5pbmc7Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVm
YXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU0hfRVJST1I6CisgICAgICAgICAgICArK21OdW1FcnJvcnM7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBTSF9XQVJOSU5HOgorICAgICAgICAgICAgKyttTnVtV2FybmluZ3M7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBUSW5mb1NpbmtCYXNl
JiBzaW5rID0gbUluZm9TaW5rLmluZm87CiAgICAgLyogVkMrKyBmb3JtYXQ6IGZpbGUobGluZW51
bSkgOiBlcnJvciAjOiAndG9rZW4nIDogZXh0cmFpbmZvICovCi0gICAgc2luay5wcmVmaXgocHJl
Zml4KTsKLSAgICBzaW5rLmxvY2F0aW9uKGxvYy5maWxlLCBsb2MubGluZSk7Ci0gICAgc2luayA8
PCAiJyIgPDwgdG9rZW4gPDwgICInIDogIiA8PCByZWFzb24gPDwgIiAiIDw8IGV4dHJhIDw8ICJc
biI7CisgICAgbUluZm9TaW5rLnByZWZpeChzZXZlcml0eSk7CisgICAgbUluZm9TaW5rLmxvY2F0
aW9uKGxvYy5maWxlLCBsb2MubGluZSk7CisgICAgbUluZm9TaW5rIDw8ICInIiA8PCB0b2tlbiA8
PCAiJyA6ICIgPDwgcmVhc29uIDw8ICJcbiI7Cit9CisKK3ZvaWQgVERpYWdub3N0aWNzOjpnbG9i
YWxFcnJvcihjb25zdCBjaGFyICptZXNzYWdlKQoreworICAgICsrbU51bUVycm9yczsKKyAgICBt
SW5mb1NpbmsucHJlZml4KFNIX0VSUk9SKTsKKyAgICBtSW5mb1NpbmsgPDwgbWVzc2FnZSA8PCAi
XG4iOworfQorCit2b2lkIFREaWFnbm9zdGljczo6ZXJyb3IoY29uc3QgcHA6OlNvdXJjZUxvY2F0
aW9uICZsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29uc3QgY2hhciAqdG9rZW4pCit7CisgICAg
d3JpdGVJbmZvKFNIX0VSUk9SLCBsb2MsIHJlYXNvbiwgdG9rZW4pOwogfQogCi12b2lkIFREaWFn
bm9zdGljczo6ZXJyb3IoY29uc3QgVFNvdXJjZUxvYyAmbG9jLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICp0b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpleHRy
YUluZm8pCit2b2lkIFREaWFnbm9zdGljczo6d2FybmluZyhjb25zdCBwcDo6U291cmNlTG9jYXRp
b24gJmxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyICp0b2tlbikKK3sKKyAgICB3
cml0ZUluZm8oU0hfV0FSTklORywgbG9jLCByZWFzb24sIHRva2VuKTsKK30KKwordm9pZCBURGlh
Z25vc3RpY3M6OmVycm9yKGNvbnN0IFRTb3VyY2VMb2MgJmxvYywgY29uc3QgY2hhciAqcmVhc29u
LCBjb25zdCBjaGFyICp0b2tlbikKIHsKICAgICBwcDo6U291cmNlTG9jYXRpb24gc3JjTG9jOwog
ICAgIHNyY0xvYy5maWxlID0gbG9jLmZpcnN0X2ZpbGU7CiAgICAgc3JjTG9jLmxpbmUgPSBsb2Mu
Zmlyc3RfbGluZTsKLSAgICB3cml0ZUluZm8ocHA6OkRpYWdub3N0aWNzOjpQUF9FUlJPUiwgc3Jj
TG9jLCByZWFzb24sIHRva2VuLCBleHRyYUluZm8pOworICAgIGVycm9yKHNyY0xvYywgcmVhc29u
LCB0b2tlbik7CiB9CiAKLXZvaWQgVERpYWdub3N0aWNzOjp3YXJuaW5nKGNvbnN0IFRTb3VyY2VM
b2MgJmxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRva2VuLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXh0cmFJbmZvKQordm9pZCBURGlhZ25vc3Rp
Y3M6Ondhcm5pbmcoY29uc3QgVFNvdXJjZUxvYyAmbG9jLCBjb25zdCBjaGFyICpyZWFzb24sIGNv
bnN0IGNoYXIgKnRva2VuKQogewogICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBzcmNMb2M7CiAgICAg
c3JjTG9jLmZpbGUgPSBsb2MuZmlyc3RfZmlsZTsKICAgICBzcmNMb2MubGluZSA9IGxvYy5maXJz
dF9saW5lOwotICAgIHdyaXRlSW5mbyhwcDo6RGlhZ25vc3RpY3M6OlBQX1dBUk5JTkcsIHNyY0xv
YywgcmVhc29uLCB0b2tlbiwgZXh0cmFJbmZvKTsKKyAgICB3YXJuaW5nKHNyY0xvYywgcmVhc29u
LCB0b2tlbik7CiB9CiAKLXZvaWQgVERpYWdub3N0aWNzOjpwcmludChJRCBpZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBwcDo6U291cmNlTG9jYXRpb24mIGxvYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdGV4dCkKK3ZvaWQgVERpYWdub3N0
aWNzOjpwcmludChJRCBpZCwgY29uc3QgcHA6OlNvdXJjZUxvY2F0aW9uICZsb2MsIGNvbnN0IHN0
ZDo6c3RyaW5nICZ0ZXh0KQogewotICAgIHdyaXRlSW5mbyhzZXZlcml0eShpZCksIGxvYywgbWVz
c2FnZShpZCksIHRleHQsICIiKTsKKyAgICB3cml0ZUluZm8oaXNFcnJvcihpZCkgPyBTSF9FUlJP
UiA6IFNIX1dBUk5JTkcsIGxvYywgbWVzc2FnZShpZCksIHRleHQuY19zdHIoKSk7CiB9CisKK3Zv
aWQgVERpYWdub3N0aWNzOjpyZXNldEVycm9yQ291bnQoKQoreworICAgIG1OdW1FcnJvcnMgICA9
IDA7CisgICAgbU51bVdhcm5pbmdzID0gMDsKK30KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9E
aWFnbm9zdGljcy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvRGlhZ25vc3RpY3MuaAppbmRleCBiYjUyMWRhMWEyYS4uNzhiZmI3NWNlZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0Rp
YWdub3N0aWNzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvRGlhZ25vc3RpY3MuaApAQCAtOSw0MCArOSw0NyBAQAogCiAjaW5jbHVkZSAiY29t
bW9uL2FuZ2xldXRpbHMuaCIKICNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3IvRGlhZ25v
c3RpY3NCYXNlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TZXZlcml0eS5oIgog
Ci1jbGFzcyBUSW5mb1Npbms7CituYW1lc3BhY2Ugc2gKK3sKKworY2xhc3MgVEluZm9TaW5rQmFz
ZTsKIHN0cnVjdCBUU291cmNlTG9jOwogCiBjbGFzcyBURGlhZ25vc3RpY3MgOiBwdWJsaWMgcHA6
OkRpYWdub3N0aWNzLCBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgotICAgIFREaWFn
bm9zdGljcyhUSW5mb1NpbmsmIGluZm9TaW5rKTsKKyAgICBURGlhZ25vc3RpY3MoVEluZm9TaW5r
QmFzZSAmaW5mb1NpbmspOwogICAgIH5URGlhZ25vc3RpY3MoKSBvdmVycmlkZTsKIAotICAgIFRJ
bmZvU2luayYgaW5mb1NpbmsoKSB7IHJldHVybiBtSW5mb1Npbms7IH0KLQogICAgIGludCBudW1F
cnJvcnMoKSBjb25zdCB7IHJldHVybiBtTnVtRXJyb3JzOyB9CiAgICAgaW50IG51bVdhcm5pbmdz
KCkgY29uc3QgeyByZXR1cm4gbU51bVdhcm5pbmdzOyB9CiAKLSAgICB2b2lkIHdyaXRlSW5mbyhT
ZXZlcml0eSBzZXZlcml0eSwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBwcDo6U291cmNlTG9j
YXRpb24mIGxvYywKLSAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgcmVhc29u
LAotICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0b2tlbiwKLSAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZXh0cmEpOworICAgIHZvaWQgZXJyb3IoY29u
c3QgcHA6OlNvdXJjZUxvY2F0aW9uICZsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29uc3QgY2hh
ciAqdG9rZW4pOworICAgIHZvaWQgd2FybmluZyhjb25zdCBwcDo6U291cmNlTG9jYXRpb24gJmxv
YywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyICp0b2tlbik7CisKKyAgICB2b2lkIGVy
cm9yKGNvbnN0IFRTb3VyY2VMb2MgJmxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFy
ICp0b2tlbik7CisgICAgdm9pZCB3YXJuaW5nKGNvbnN0IFRTb3VyY2VMb2MgJmxvYywgY29uc3Qg
Y2hhciAqcmVhc29uLCBjb25zdCBjaGFyICp0b2tlbik7CiAKLSAgICB2b2lkIGVycm9yKGNvbnN0
IFRTb3VyY2VMb2MgJmxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyICp0b2tlbiwg
Y29uc3QgY2hhciAqZXh0cmFJbmZvKTsKLSAgICB2b2lkIHdhcm5pbmcoY29uc3QgVFNvdXJjZUxv
YyAmbG9jLAotICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFzb24sCi0gICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIgKnRva2VuLAotICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpl
eHRyYUluZm8pOworICAgIHZvaWQgZ2xvYmFsRXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSk7CisK
KyAgICB2b2lkIHJlc2V0RXJyb3JDb3VudCgpOwogCiAgIHByb3RlY3RlZDoKKyAgICB2b2lkIHdy
aXRlSW5mbyhTZXZlcml0eSBzZXZlcml0eSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBwcDo6
U291cmNlTG9jYXRpb24gJmxvYywKKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpyZWFz
b24sCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9rZW4pOworCiAgICAgdm9pZCBw
cmludChJRCBpZCwgY29uc3QgcHA6OlNvdXJjZUxvY2F0aW9uICZsb2MsIGNvbnN0IHN0ZDo6c3Ry
aW5nICZ0ZXh0KSBvdmVycmlkZTsKIAogICBwcml2YXRlOgotICAgIFRJbmZvU2luayYgbUluZm9T
aW5rOworICAgIFRJbmZvU2lua0Jhc2UgJm1JbmZvU2luazsKICAgICBpbnQgbU51bUVycm9yczsK
ICAgICBpbnQgbU51bVdhcm5pbmdzOwogfTsKIAorfSAgLy8gbmFtZXNwYWNlIHNoCisKICNlbmRp
ZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9ESUFHTk9TVElDU19IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlyZWN0aXZlSGFu
ZGxlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9EaXJlY3RpdmVIYW5kbGVyLmNwcAppbmRleCBmODA4MWVjZDY1OS4uYmJjYWQyNWI1NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L0RpcmVjdGl2ZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0RpcmVjdGl2ZUhhbmRsZXIuY3BwCkBAIC0xMiwxNyArMTIsMjQg
QEAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL0RpYWdub3N0aWNzLmgiCiAKLXN0YXRpYyBUQmVoYXZpb3IgZ2V0QmVoYXZpb3IoY29uc3Qg
c3RkOjpzdHJpbmcmIHN0cikKK25hbWVzcGFjZSBzaAoreworCitzdGF0aWMgVEJlaGF2aW9yIGdl
dEJlaGF2aW9yKGNvbnN0IHN0ZDo6c3RyaW5nICZzdHIpCiB7CiAgICAgY29uc3QgY2hhciBrUmVx
dWlyZVtdID0gInJlcXVpcmUiOwotICAgIGNvbnN0IGNoYXIga0VuYWJsZVtdID0gImVuYWJsZSI7
CisgICAgY29uc3QgY2hhciBrRW5hYmxlW10gID0gImVuYWJsZSI7CiAgICAgY29uc3QgY2hhciBr
RGlzYWJsZVtdID0gImRpc2FibGUiOwotICAgIGNvbnN0IGNoYXIga1dhcm5bXSA9ICJ3YXJuIjsK
LQotICAgIGlmIChzdHIgPT0ga1JlcXVpcmUpIHJldHVybiBFQmhSZXF1aXJlOwotICAgIGVsc2Ug
aWYgKHN0ciA9PSBrRW5hYmxlKSByZXR1cm4gRUJoRW5hYmxlOwotICAgIGVsc2UgaWYgKHN0ciA9
PSBrRGlzYWJsZSkgcmV0dXJuIEVCaERpc2FibGU7Ci0gICAgZWxzZSBpZiAoc3RyID09IGtXYXJu
KSByZXR1cm4gRUJoV2FybjsKKyAgICBjb25zdCBjaGFyIGtXYXJuW10gICAgPSAid2FybiI7CisK
KyAgICBpZiAoc3RyID09IGtSZXF1aXJlKQorICAgICAgICByZXR1cm4gRUJoUmVxdWlyZTsKKyAg
ICBlbHNlIGlmIChzdHIgPT0ga0VuYWJsZSkKKyAgICAgICAgcmV0dXJuIEVCaEVuYWJsZTsKKyAg
ICBlbHNlIGlmIChzdHIgPT0ga0Rpc2FibGUpCisgICAgICAgIHJldHVybiBFQmhEaXNhYmxlOwor
ICAgIGVsc2UgaWYgKHN0ciA9PSBrV2FybikKKyAgICAgICAgcmV0dXJuIEVCaFdhcm47CiAgICAg
cmV0dXJuIEVCaFVuZGVmaW5lZDsKIH0KIApAQCAtNDMsMzAgKzUwLDI5IEBAIFREaXJlY3RpdmVI
YW5kbGVyOjp+VERpcmVjdGl2ZUhhbmRsZXIoKQogewogfQogCi12b2lkIFREaXJlY3RpdmVIYW5k
bGVyOjpoYW5kbGVFcnJvcihjb25zdCBwcDo6U291cmNlTG9jYXRpb24mIGxvYywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtc2cpCit2b2lk
IFREaXJlY3RpdmVIYW5kbGVyOjpoYW5kbGVFcnJvcihjb25zdCBwcDo6U291cmNlTG9jYXRpb24g
JmxvYywgY29uc3Qgc3RkOjpzdHJpbmcgJm1zZykKIHsKLSAgICBtRGlhZ25vc3RpY3Mud3JpdGVJ
bmZvKHBwOjpEaWFnbm9zdGljczo6UFBfRVJST1IsIGxvYywgbXNnLCAiIiwgIiIpOworICAgIG1E
aWFnbm9zdGljcy5lcnJvcihsb2MsIG1zZy5jX3N0cigpLCAiIik7CiB9CiAKLXZvaWQgVERpcmVj
dGl2ZUhhbmRsZXI6OmhhbmRsZVByYWdtYShjb25zdCBwcDo6U291cmNlTG9jYXRpb24mIGxvYywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgdmFsdWUsCit2b2lkIFREaXJlY3RpdmVIYW5kbGVyOjpoYW5kbGVQcmFnbWEoY29uc3Qg
cHA6OlNvdXJjZUxvY2F0aW9uICZsb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZhbHVlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgc3RkZ2wpCiB7CiAgICAgaWYgKHN0ZGdsKQogICAgIHsK
ICAgICAgICAgY29uc3QgY2hhciBrSW52YXJpYW50W10gPSAiaW52YXJpYW50IjsKLSAgICAgICAg
Y29uc3QgY2hhciBrQWxsW10gPSAiYWxsIjsKKyAgICAgICAgY29uc3QgY2hhciBrQWxsW10gICAg
ICAgPSAiYWxsIjsKIAogICAgICAgICBpZiAobmFtZSA9PSBrSW52YXJpYW50ICYmIHZhbHVlID09
IGtBbGwpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChtU2hhZGVyVmVyc2lvbiA9PSAzMDAg
JiYgbVNoYWRlclR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSKQogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgIC8vIEVTU0wgMy4wMC40IHNlY3Rpb24gNC42LjEKLSAgICAgICAgICAgICAg
ICBtRGlhZ25vc3RpY3Mud3JpdGVJbmZvKAotICAgICAgICAgICAgICAgICAgICBwcDo6RGlhZ25v
c3RpY3M6OlBQX0VSUk9SLCBsb2MsCi0gICAgICAgICAgICAgICAgICAgICIjcHJhZ21hIFNUREdM
IGludmFyaWFudChhbGwpIGNhbiBub3QgYmUgdXNlZCBpbiBmcmFnbWVudCBzaGFkZXIiLCBuYW1l
LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgbURpYWdub3N0aWNzLmVycm9yKAorICAgICAgICAg
ICAgICAgICAgICBsb2MsICIjcHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpIGNhbiBub3QgYmUg
dXNlZCBpbiBmcmFnbWVudCBzaGFkZXIiLAorICAgICAgICAgICAgICAgICAgICBuYW1lLmNfc3Ry
KCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbVByYWdtYS5zdGRnbC5pbnZhcmlhbnRB
bGwgPSB0cnVlOwogICAgICAgICB9CkBAIC03NywzMCArODMsMzkgQEAgdm9pZCBURGlyZWN0aXZl
SGFuZGxlcjo6aGFuZGxlUHJhZ21hKGNvbnN0IHBwOjpTb3VyY2VMb2NhdGlvbiYgbG9jLAogICAg
IH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBjb25zdCBjaGFyIGtPcHRpbWl6ZVtdID0gIm9w
dGltaXplIjsKLSAgICAgICAgY29uc3QgY2hhciBrRGVidWdbXSA9ICJkZWJ1ZyI7CisgICAgICAg
IGNvbnN0IGNoYXIga09wdGltaXplW10gICAgICAgICAgICAgPSAib3B0aW1pemUiOworICAgICAg
ICBjb25zdCBjaGFyIGtEZWJ1Z1tdICAgICAgICAgICAgICAgID0gImRlYnVnIjsKICAgICAgICAg
Y29uc3QgY2hhciBrRGVidWdTaGFkZXJQcmVjaXNpb25bXSA9ICJ3ZWJnbF9kZWJ1Z19zaGFkZXJf
cHJlY2lzaW9uIjsKLSAgICAgICAgY29uc3QgY2hhciBrT25bXSA9ICJvbiI7Ci0gICAgICAgIGNv
bnN0IGNoYXIga09mZltdID0gIm9mZiI7CisgICAgICAgIGNvbnN0IGNoYXIga09uW10gICAgICAg
ICAgICAgICAgICAgPSAib24iOworICAgICAgICBjb25zdCBjaGFyIGtPZmZbXSAgICAgICAgICAg
ICAgICAgID0gIm9mZiI7CiAKICAgICAgICAgYm9vbCBpbnZhbGlkVmFsdWUgPSBmYWxzZTsKICAg
ICAgICAgaWYgKG5hbWUgPT0ga09wdGltaXplKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
dmFsdWUgPT0ga09uKSBtUHJhZ21hLm9wdGltaXplID0gdHJ1ZTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKHZhbHVlID09IGtPZmYpIG1QcmFnbWEub3B0aW1pemUgPSBmYWxzZTsKLSAgICAgICAgICAg
IGVsc2UgaW52YWxpZFZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBrT24p
CisgICAgICAgICAgICAgICAgbVByYWdtYS5vcHRpbWl6ZSA9IHRydWU7CisgICAgICAgICAgICBl
bHNlIGlmICh2YWx1ZSA9PSBrT2ZmKQorICAgICAgICAgICAgICAgIG1QcmFnbWEub3B0aW1pemUg
PSBmYWxzZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpbnZhbGlkVmFsdWUg
PSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0ga0RlYnVnKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAodmFsdWUgPT0ga09uKSBtUHJhZ21hLmRlYnVnID0gdHJ1
ZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlID09IGtPZmYpIG1QcmFnbWEuZGVidWcgPSBm
YWxzZTsKLSAgICAgICAgICAgIGVsc2UgaW52YWxpZFZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAg
IGlmICh2YWx1ZSA9PSBrT24pCisgICAgICAgICAgICAgICAgbVByYWdtYS5kZWJ1ZyA9IHRydWU7
CisgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBrT2ZmKQorICAgICAgICAgICAgICAgIG1Q
cmFnbWEuZGVidWcgPSBmYWxzZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBp
bnZhbGlkVmFsdWUgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKG5hbWUgPT0g
a0RlYnVnU2hhZGVyUHJlY2lzaW9uICYmIG1EZWJ1Z1NoYWRlclByZWNpc2lvblN1cHBvcnRlZCkK
ICAgICAgICAgewotICAgICAgICAgICAgaWYgKHZhbHVlID09IGtPbikgbVByYWdtYS5kZWJ1Z1No
YWRlclByZWNpc2lvbiA9IHRydWU7Ci0gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSBrT2Zm
KSBtUHJhZ21hLmRlYnVnU2hhZGVyUHJlY2lzaW9uID0gZmFsc2U7Ci0gICAgICAgICAgICBlbHNl
IGludmFsaWRWYWx1ZSA9IHRydWU7CisgICAgICAgICAgICBpZiAodmFsdWUgPT0ga09uKQorICAg
ICAgICAgICAgICAgIG1QcmFnbWEuZGVidWdTaGFkZXJQcmVjaXNpb24gPSB0cnVlOworICAgICAg
ICAgICAgZWxzZSBpZiAodmFsdWUgPT0ga09mZikKKyAgICAgICAgICAgICAgICBtUHJhZ21hLmRl
YnVnU2hhZGVyUHJlY2lzaW9uID0gZmFsc2U7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgaW52YWxpZFZhbHVlID0gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAg
ICAgIHsKQEAgLTExMCwyNCArMTI1LDIxIEBAIHZvaWQgVERpcmVjdGl2ZUhhbmRsZXI6OmhhbmRs
ZVByYWdtYShjb25zdCBwcDo6U291cmNlTG9jYXRpb24mIGxvYywKIAogICAgICAgICBpZiAoaW52
YWxpZFZhbHVlKQogICAgICAgICB7Ci0gICAgICAgICAgICBtRGlhZ25vc3RpY3Mud3JpdGVJbmZv
KHBwOjpEaWFnbm9zdGljczo6UFBfRVJST1IsIGxvYywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImludmFsaWQgcHJhZ21hIHZhbHVlIiwgdmFsdWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICInb24nIG9yICdvZmYnIGV4cGVjdGVkIik7CisgICAgICAg
ICAgICBtRGlhZ25vc3RpY3MuZXJyb3IobG9jLCAiaW52YWxpZCBwcmFnbWEgdmFsdWUgLSAnb24n
IG9yICdvZmYnIGV4cGVjdGVkIiwgdmFsdWUuY19zdHIoKSk7CiAgICAgICAgIH0KICAgICB9CiB9
CiAKLXZvaWQgVERpcmVjdGl2ZUhhbmRsZXI6OmhhbmRsZUV4dGVuc2lvbihjb25zdCBwcDo6U291
cmNlTG9jYXRpb24mIGxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgYmVoYXZpb3IpCit2b2lkIFREaXJlY3RpdmVI
YW5kbGVyOjpoYW5kbGVFeHRlbnNpb24oY29uc3QgcHA6OlNvdXJjZUxvY2F0aW9uICZsb2MsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
Jm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJmJlaGF2aW9yKQogewogICAgIGNvbnN0IGNoYXIga0V4dEFsbFtdID0gImFsbCI7
CiAKICAgICBUQmVoYXZpb3IgYmVoYXZpb3JWYWwgPSBnZXRCZWhhdmlvcihiZWhhdmlvcik7CiAg
ICAgaWYgKGJlaGF2aW9yVmFsID09IEVCaFVuZGVmaW5lZCkKICAgICB7Ci0gICAgICAgIG1EaWFn
bm9zdGljcy53cml0ZUluZm8ocHA6OkRpYWdub3N0aWNzOjpQUF9FUlJPUiwgbG9jLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJiZWhhdmlvciIsIG5hbWUsICJpbnZhbGlkIik7Cisg
ICAgICAgIG1EaWFnbm9zdGljcy5lcnJvcihsb2MsICJiZWhhdmlvciBpbnZhbGlkIiwgbmFtZS5j
X3N0cigpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM1LDE1ICsxNDcsMTEgQEAg
dm9pZCBURGlyZWN0aXZlSGFuZGxlcjo6aGFuZGxlRXh0ZW5zaW9uKGNvbnN0IHBwOjpTb3VyY2VM
b2NhdGlvbiYgbG9jLAogICAgIHsKICAgICAgICAgaWYgKGJlaGF2aW9yVmFsID09IEVCaFJlcXVp
cmUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1EaWFnbm9zdGljcy53cml0ZUluZm8ocHA6OkRp
YWdub3N0aWNzOjpQUF9FUlJPUiwgbG9jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZXh0ZW5zaW9uIiwgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImNhbm5vdCBoYXZlICdyZXF1aXJlJyBiZWhhdmlvciIpOworICAgICAgICAgICAgbURpYWdu
b3N0aWNzLmVycm9yKGxvYywgImV4dGVuc2lvbiBjYW5ub3QgaGF2ZSAncmVxdWlyZScgYmVoYXZp
b3IiLCBuYW1lLmNfc3RyKCkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGJlaGF2aW9y
VmFsID09IEVCaEVuYWJsZSkKICAgICAgICAgewotICAgICAgICAgICAgbURpYWdub3N0aWNzLndy
aXRlSW5mbyhwcDo6RGlhZ25vc3RpY3M6OlBQX0VSUk9SLCBsb2MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJleHRlbnNpb24iLCBuYW1lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiY2Fubm90IGhhdmUgJ2VuYWJsZScgYmVoYXZpb3IiKTsKKyAgICAg
ICAgICAgIG1EaWFnbm9zdGljcy5lcnJvcihsb2MsICJleHRlbnNpb24gY2Fubm90IGhhdmUgJ2Vu
YWJsZScgYmVoYXZpb3IiLCBuYW1lLmNfc3RyKCkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UK
ICAgICAgICAgewpAQCAtMTYxLDI2ICsxNjksMjMgQEAgdm9pZCBURGlyZWN0aXZlSGFuZGxlcjo6
aGFuZGxlRXh0ZW5zaW9uKGNvbnN0IHBwOjpTb3VyY2VMb2NhdGlvbiYgbG9jLAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgcHA6OkRpYWdub3N0aWNzOjpTZXZlcml0eSBzZXZlcml0eSA9
IHBwOjpEaWFnbm9zdGljczo6UFBfRVJST1I7Ci0gICAgc3dpdGNoIChiZWhhdmlvclZhbCkgewot
ICAgICAgY2FzZSBFQmhSZXF1aXJlOgotICAgICAgICBzZXZlcml0eSA9IHBwOjpEaWFnbm9zdGlj
czo6UFBfRVJST1I7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFQmhFbmFibGU6Ci0gICAg
ICBjYXNlIEVCaFdhcm46Ci0gICAgICBjYXNlIEVCaERpc2FibGU6Ci0gICAgICAgIHNldmVyaXR5
ID0gcHA6OkRpYWdub3N0aWNzOjpQUF9XQVJOSU5HOwotICAgICAgICBicmVhazsKLSAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIGJyZWFrOworICAgIHN3aXRj
aCAoYmVoYXZpb3JWYWwpCisgICAgeworICAgICAgICBjYXNlIEVCaFJlcXVpcmU6CisgICAgICAg
ICAgICBtRGlhZ25vc3RpY3MuZXJyb3IobG9jLCAiZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQi
LCBuYW1lLmNfc3RyKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUJoRW5h
YmxlOgorICAgICAgICBjYXNlIEVCaFdhcm46CisgICAgICAgIGNhc2UgRUJoRGlzYWJsZToKKyAg
ICAgICAgICAgIG1EaWFnbm9zdGljcy53YXJuaW5nKGxvYywgImV4dGVuc2lvbiBpcyBub3Qgc3Vw
cG9ydGVkIiwgbmFtZS5jX3N0cigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
IH0KLSAgICBtRGlhZ25vc3RpY3Mud3JpdGVJbmZvKHNldmVyaXR5LCBsb2MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZXh0ZW5zaW9uIiwgbmFtZSwgImlzIG5vdCBzdXBwb3J0ZWQiKTsK
IH0KIAotdm9pZCBURGlyZWN0aXZlSGFuZGxlcjo6aGFuZGxlVmVyc2lvbihjb25zdCBwcDo6U291
cmNlTG9jYXRpb24mIGxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHZlcnNpb24pCit2b2lkIFREaXJlY3RpdmVIYW5kbGVyOjpoYW5kbGVWZXJzaW9uKGNvbnN0
IHBwOjpTb3VyY2VMb2NhdGlvbiAmbG9jLCBpbnQgdmVyc2lvbikKIHsKICAgICBpZiAodmVyc2lv
biA9PSAxMDAgfHwgdmVyc2lvbiA9PSAzMDAgfHwgdmVyc2lvbiA9PSAzMTApCiAgICAgewpAQCAt
MTkxLDcgKzE5Niw4IEBAIHZvaWQgVERpcmVjdGl2ZUhhbmRsZXI6OmhhbmRsZVZlcnNpb24oY29u
c3QgcHA6OlNvdXJjZUxvY2F0aW9uJiBsb2MsCiAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0
cmVhbTsKICAgICAgICAgc3RyZWFtIDw8IHZlcnNpb247CiAgICAgICAgIHN0ZDo6c3RyaW5nIHN0
ciA9IHN0cmVhbS5zdHIoKTsKLSAgICAgICAgbURpYWdub3N0aWNzLndyaXRlSW5mbyhwcDo6RGlh
Z25vc3RpY3M6OlBQX0VSUk9SLCBsb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InZlcnNpb24gbnVtYmVyIiwgc3RyLCAibm90IHN1cHBvcnRlZCIpOworICAgICAgICBtRGlhZ25v
c3RpY3MuZXJyb3IobG9jLCAidmVyc2lvbiBudW1iZXIgbm90IHN1cHBvcnRlZCIsIHN0ci5jX3N0
cigpKTsKICAgICB9CiB9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlyZWN0aXZlSGFuZGxl
ci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGly
ZWN0aXZlSGFuZGxlci5oCmluZGV4IDAwZWI0OTExNGU1Li44ZThjYjliYmY2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRGlyZWN0
aXZlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0RpcmVjdGl2ZUhhbmRsZXIuaApAQCAtMTMsNiArMTMsOCBAQAogI2luY2x1ZGUg
ImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9EaXJlY3RpdmVIYW5kbGVyQmFzZS5oIgogI2luY2x1ZGUg
IkdMU0xBTkcvU2hhZGVyTGFuZy5oIgogCituYW1lc3BhY2Ugc2gKK3sKIGNsYXNzIFREaWFnbm9z
dGljczsKIAogY2xhc3MgVERpcmVjdGl2ZUhhbmRsZXIgOiBwdWJsaWMgcHA6OkRpcmVjdGl2ZUhh
bmRsZXIsIGFuZ2xlOjpOb25Db3B5YWJsZQpAQCAtMjUsOCArMjcsOCBAQCBjbGFzcyBURGlyZWN0
aXZlSGFuZGxlciA6IHB1YmxpYyBwcDo6RGlyZWN0aXZlSGFuZGxlciwgYW5nbGU6Ok5vbkNvcHlh
YmxlCiAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkZWJ1Z1NoYWRlclByZWNpc2lvblN1cHBv
cnRlZCk7CiAgICAgflREaXJlY3RpdmVIYW5kbGVyKCkgb3ZlcnJpZGU7CiAKLSAgICBjb25zdCBU
UHJhZ21hJiBwcmFnbWEoKSBjb25zdCB7IHJldHVybiBtUHJhZ21hOyB9Ci0gICAgY29uc3QgVEV4
dGVuc2lvbkJlaGF2aW9yJiBleHRlbnNpb25CZWhhdmlvcigpIGNvbnN0IHsgcmV0dXJuIG1FeHRl
bnNpb25CZWhhdmlvcjsgfQorICAgIGNvbnN0IFRQcmFnbWEgJnByYWdtYSgpIGNvbnN0IHsgcmV0
dXJuIG1QcmFnbWE7IH0KKyAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3IgJmV4dGVuc2lvbkJl
aGF2aW9yKCkgY29uc3QgeyByZXR1cm4gbUV4dGVuc2lvbkJlaGF2aW9yOyB9CiAKICAgICB2b2lk
IGhhbmRsZUVycm9yKGNvbnN0IHBwOjpTb3VyY2VMb2NhdGlvbiAmbG9jLCBjb25zdCBzdGQ6OnN0
cmluZyAmbXNnKSBvdmVycmlkZTsKIApAQCAtNDMsMTEgKzQ1LDEzIEBAIGNsYXNzIFREaXJlY3Rp
dmVIYW5kbGVyIDogcHVibGljIHBwOjpEaXJlY3RpdmVIYW5kbGVyLCBhbmdsZTo6Tm9uQ29weWFi
bGUKIAogICBwcml2YXRlOgogICAgIFRQcmFnbWEgbVByYWdtYTsKLSAgICBURXh0ZW5zaW9uQmVo
YXZpb3ImIG1FeHRlbnNpb25CZWhhdmlvcjsKLSAgICBURGlhZ25vc3RpY3MmIG1EaWFnbm9zdGlj
czsKLSAgICBpbnQmIG1TaGFkZXJWZXJzaW9uOworICAgIFRFeHRlbnNpb25CZWhhdmlvciAmbUV4
dGVuc2lvbkJlaGF2aW9yOworICAgIFREaWFnbm9zdGljcyAmbURpYWdub3N0aWNzOworICAgIGlu
dCAmbVNoYWRlclZlcnNpb247CiAgICAgc2g6OkdMZW51bSBtU2hhZGVyVHlwZTsKICAgICBib29s
IG1EZWJ1Z1NoYWRlclByZWNpc2lvblN1cHBvcnRlZDsKIH07CiAKK30gIC8vIG5hbWVzcGFjZSBz
aAorCiAjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfRElSRUNUSVZFSEFORExFUl9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdC5j
cHAKaW5kZXggZTM0ZTFkYzFjMDUuLmE0ZWViOWI3ZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlR0xGcmFnQ29sb3JC
cm9hZGNhc3QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0VtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdC5jcHAKQEAgLTE0LDYgKzE0LDkg
QEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVHTEZyYWdDb2xvckJyb2Fk
Y2FzdC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgogCitu
YW1lc3BhY2Ugc2gKK3sKKwogbmFtZXNwYWNlCiB7CiAKQEAgLTEzMCwzICsxMzMsNSBAQCB2b2lk
IEVtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdChUSW50ZXJtTm9kZSAqcm9vdCwKICAgICAgICAg
fQogICAgIH0KIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlR0xGcmFnQ29sb3JC
cm9hZGNhc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL0VtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdC5oCmluZGV4IDYyN2M0YzY3ZmU5Li4wOWU4
ZGFlNmQxYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0LmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRW11bGF0ZUdMRnJhZ0NvbG9y
QnJvYWRjYXN0LmgKQEAgLTE1LDggKzE1LDYgQEAKIG5hbWVzcGFjZSBzaAogewogc3RydWN0IE91
dHB1dFZhcmlhYmxlOwotfQotCiBjbGFzcyBUSW50ZXJtTm9kZTsKIAogLy8gUmVwbGFjZSBhbGwg
Z2xfRnJhZ0NvbG9yIHdpdGggZ2xfRnJhZ0RhdGFbMF0sIGFuZCBpbiB0aGUgZW5kIG9mIG1haW4o
KSBmdW5jdGlvbiwKQEAgLTI0LDYgKzIyLDcgQEAgY2xhc3MgVEludGVybU5vZGU7CiAvLyBJZiBn
bF9GcmFnQ29sb3IgaXMgaW4gb3V0cHV0VmFyaWFibGVzLCBpdCBpcyByZXBsYWNlZCBieSBnbF9G
cmFnRGF0YS4KIHZvaWQgRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0KFRJbnRlcm1Ob2RlICpy
b290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heERyYXdCdWZmZXJz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c2g6Ok91dHB1
dFZhcmlhYmxlPiAqb3V0cHV0VmFyaWFibGVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dmVjdG9yPE91dHB1dFZhcmlhYmxlPiAqb3V0cHV0VmFyaWFibGVzKTsKK30K
IAogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0VNVUxBVEVHTEZSQUdDT0xPUkJST0FE
Q0FTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvRW11bGF0ZVByZWNpc2lvbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlUHJlY2lzaW9uLmNwcAppbmRleCBhOGY2
ZDY0MmViNC4uODBkNWMxZWQzM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVQcmVjaXNpb24uY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0VtdWxhdGVQcmVjaXNp
b24uY3BwCkBAIC04LDYgKzgsOSBAQAogCiAjaW5jbHVkZSA8bWVtb3J5PgogCituYW1lc3BhY2Ug
c2gKK3sKKwogbmFtZXNwYWNlCiB7CiAKQEAgLTQyNCwxNCArNDI3LDE1IEBAIGJvb2wgY2FuUm91
bmRGbG9hdChjb25zdCBUVHlwZSAmdHlwZSkKICAgICAgICAgICAgKHR5cGUuZ2V0UHJlY2lzaW9u
KCkgPT0gRWJwTG93IHx8IHR5cGUuZ2V0UHJlY2lzaW9uKCkgPT0gRWJwTWVkaXVtKTsKIH0KIAot
VEludGVybUFnZ3JlZ2F0ZSAqY3JlYXRlSW50ZXJuYWxGdW5jdGlvbkNhbGxOb2RlKFRTdHJpbmcg
bmFtZSwgVEludGVybU5vZGUgKmNoaWxkKQorVEludGVybUFnZ3JlZ2F0ZSAqY3JlYXRlSW50ZXJu
YWxGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IFRUeXBlICZ0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRTdHJpbmcgbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKmFy
Z3VtZW50cykKIHsKLSAgICBUSW50ZXJtQWdncmVnYXRlICpjYWxsTm9kZSA9IG5ldyBUSW50ZXJt
QWdncmVnYXRlKCk7Ci0gICAgY2FsbE5vZGUtPnNldE9wKEVPcEZ1bmN0aW9uQ2FsbCk7Ci0gICAg
VE5hbWUgbmFtZU9iaihURnVuY3Rpb246Om1hbmdsZU5hbWUobmFtZSkpOworICAgIFROYW1lIG5h
bWVPYmoobmFtZSk7CiAgICAgbmFtZU9iai5zZXRJbnRlcm5hbCh0cnVlKTsKKyAgICBUSW50ZXJt
QWdncmVnYXRlICpjYWxsTm9kZSA9CisgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGU6OkNyZWF0ZSh0
eXBlLCBFT3BDYWxsSW50ZXJuYWxSYXdGdW5jdGlvbiwgYXJndW1lbnRzKTsKICAgICBjYWxsTm9k
ZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPnNldE5hbWVPYmoobmFtZU9iaik7Ci0gICAgY2Fs
bE5vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhjaGlsZCk7CiAgICAgcmV0dXJuIGNhbGxO
b2RlOwogfQogCkBAIC00NDEsMjYgKzQ0NSwyOSBAQCBUSW50ZXJtQWdncmVnYXRlICpjcmVhdGVS
b3VuZGluZ0Z1bmN0aW9uQ2FsbE5vZGUoVEludGVybVR5cGVkICpyb3VuZGVkQ2hpbGQpCiAgICAg
aWYgKHJvdW5kZWRDaGlsZC0+Z2V0UHJlY2lzaW9uKCkgPT0gRWJwTWVkaXVtKQogICAgICAgICBy
b3VuZEZ1bmN0aW9uTmFtZSA9ICJhbmdsZV9mcm0iOwogICAgIGVsc2UKLSAgICAgICAgcm91bmRG
dW5jdGlvbk5hbWUgPSAiYW5nbGVfZnJsIjsKLSAgICBUSW50ZXJtQWdncmVnYXRlICpjYWxsTm9k
ZSA9IGNyZWF0ZUludGVybmFsRnVuY3Rpb25DYWxsTm9kZShyb3VuZEZ1bmN0aW9uTmFtZSwgcm91
bmRlZENoaWxkKTsKLSAgICBjYWxsTm9kZS0+c2V0VHlwZShyb3VuZGVkQ2hpbGQtPmdldFR5cGUo
KSk7Ci0gICAgcmV0dXJuIGNhbGxOb2RlOworICAgICAgICByb3VuZEZ1bmN0aW9uTmFtZSAgICAg
ID0gImFuZ2xlX2ZybCI7CisgICAgVEludGVybVNlcXVlbmNlICphcmd1bWVudHMgPSBuZXcgVElu
dGVybVNlcXVlbmNlKCk7CisgICAgYXJndW1lbnRzLT5wdXNoX2JhY2socm91bmRlZENoaWxkKTsK
KyAgICByZXR1cm4gY3JlYXRlSW50ZXJuYWxGdW5jdGlvbkNhbGxOb2RlKHJvdW5kZWRDaGlsZC0+
Z2V0VHlwZSgpLCByb3VuZEZ1bmN0aW9uTmFtZSwgYXJndW1lbnRzKTsKIH0KIAotVEludGVybUFn
Z3JlZ2F0ZSAqY3JlYXRlQ29tcG91bmRBc3NpZ25tZW50RnVuY3Rpb25DYWxsTm9kZShUSW50ZXJt
VHlwZWQgKmxlZnQsIFRJbnRlcm1UeXBlZCAqcmlnaHQsIGNvbnN0IGNoYXIgKm9wTmFtZVN0cikK
K1RJbnRlcm1BZ2dyZWdhdGUgKmNyZWF0ZUNvbXBvdW5kQXNzaWdubWVudEZ1bmN0aW9uQ2FsbE5v
ZGUoVEludGVybVR5cGVkICpsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnJpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyICpvcE5hbWVTdHIpCiB7CiAgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3Ryc3RyOwogICAgIGlm
IChsZWZ0LT5nZXRQcmVjaXNpb24oKSA9PSBFYnBNZWRpdW0pCiAgICAgICAgIHN0cnN0ciA8PCAi
YW5nbGVfY29tcG91bmRfIiA8PCBvcE5hbWVTdHIgPDwgIl9mcm0iOwogICAgIGVsc2UKICAgICAg
ICAgc3Ryc3RyIDw8ICJhbmdsZV9jb21wb3VuZF8iIDw8IG9wTmFtZVN0ciA8PCAiX2ZybCI7Ci0g
ICAgVFN0cmluZyBmdW5jdGlvbk5hbWUgPSBzdHJzdHIuc3RyKCkuY19zdHIoKTsKLSAgICBUSW50
ZXJtQWdncmVnYXRlICpjYWxsTm9kZSA9IGNyZWF0ZUludGVybmFsRnVuY3Rpb25DYWxsTm9kZShm
dW5jdGlvbk5hbWUsIGxlZnQpOwotICAgIGNhbGxOb2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2Jh
Y2socmlnaHQpOwotICAgIHJldHVybiBjYWxsTm9kZTsKKyAgICBUU3RyaW5nIGZ1bmN0aW9uTmFt
ZSAgICAgICA9IHN0cnN0ci5zdHIoKS5jX3N0cigpOworICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJn
dW1lbnRzID0gbmV3IFRJbnRlcm1TZXF1ZW5jZSgpOworICAgIGFyZ3VtZW50cy0+cHVzaF9iYWNr
KGxlZnQpOworICAgIGFyZ3VtZW50cy0+cHVzaF9iYWNrKHJpZ2h0KTsKKyAgICByZXR1cm4gY3Jl
YXRlSW50ZXJuYWxGdW5jdGlvbkNhbGxOb2RlKFRUeXBlKEVidFZvaWQpLCBmdW5jdGlvbk5hbWUs
IGFyZ3VtZW50cyk7CiB9CiAKLWJvb2wgcGFyZW50VXNlc1Jlc3VsdChUSW50ZXJtTm9kZSogcGFy
ZW50LCBUSW50ZXJtTm9kZSogbm9kZSkKK2Jvb2wgcGFyZW50VXNlc1Jlc3VsdChUSW50ZXJtTm9k
ZSAqcGFyZW50LCBUSW50ZXJtTm9kZSAqbm9kZSkKIHsKICAgICBpZiAoIXBhcmVudCkKICAgICB7
CkBAIC00ODgsNyArNDk1LDggQEAgYm9vbCBwYXJlbnRVc2VzUmVzdWx0KFRJbnRlcm1Ob2RlKiBw
YXJlbnQsIFRJbnRlcm1Ob2RlKiBub2RlKQogRW11bGF0ZVByZWNpc2lvbjo6RW11bGF0ZVByZWNp
c2lvbihjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLCBpbnQgc2hhZGVyVmVyc2lvbikK
ICAgICA6IFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcih0cnVlLCB0cnVlLCB0cnVlLCBzeW1ib2xU
YWJsZSwgc2hhZGVyVmVyc2lvbiksCiAgICAgICBtRGVjbGFyaW5nVmFyaWFibGVzKGZhbHNlKQot
e30KK3sKK30KIAogdm9pZCBFbXVsYXRlUHJlY2lzaW9uOjp2aXNpdFN5bWJvbChUSW50ZXJtU3lt
Ym9sICpub2RlKQogewpAQCAtNDk5LDcgKzUwNyw2IEBAIHZvaWQgRW11bGF0ZVByZWNpc2lvbjo6
dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkKICAgICB9CiB9CiAKLQogYm9vbCBFbXVs
YXRlUHJlY2lzaW9uOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9k
ZSkKIHsKICAgICBib29sIHZpc2l0Q2hpbGRyZW4gPSB0cnVlOwpAQCAtNTE2LDE0NCArNTIzLDEz
OCBAQCBib29sIEVtdWxhdGVQcmVjaXNpb246OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50
ZXJtQmluYXJ5ICpub2RlKQogICAgIGlmICh2aXNpdCAhPSBQcmVWaXNpdCkKICAgICAgICAgcmV0
dXJuIHZpc2l0Q2hpbGRyZW47CiAKLSAgICBjb25zdCBUVHlwZSYgdHlwZSA9IG5vZGUtPmdldFR5
cGUoKTsKLSAgICBib29sIHJvdW5kRmxvYXQgPSBjYW5Sb3VuZEZsb2F0KHR5cGUpOwotCi0gICAg
aWYgKHJvdW5kRmxvYXQpIHsKLSAgICAgICAgc3dpdGNoIChvcCkgewotICAgICAgICAgIC8vIE1h
dGggb3BlcmF0b3JzIHRoYXQgY2FuIHJlc3VsdCBpbiBhIGZsb2F0IG1heSBuZWVkIHRvIGFwcGx5
IHJvdW5kaW5nIHRvIHRoZSByZXR1cm4KLSAgICAgICAgICAvLyB2YWx1ZS4gTm90ZSB0aGF0IGlu
IHRoZSBjYXNlIG9mIGFzc2lnbm1lbnQsIHRoZSByb3VuZGluZyBpcyBhcHBsaWVkIHRvIGl0cyBy
ZXR1cm4KLSAgICAgICAgICAvLyB2YWx1ZSBoZXJlLCBub3QgdGhlIHZhbHVlIGJlaW5nIGFzc2ln
bmVkLgotICAgICAgICAgIGNhc2UgRU9wQXNzaWduOgotICAgICAgICAgIGNhc2UgRU9wQWRkOgot
ICAgICAgICAgIGNhc2UgRU9wU3ViOgotICAgICAgICAgIGNhc2UgRU9wTXVsOgotICAgICAgICAg
IGNhc2UgRU9wRGl2OgotICAgICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2FsYXI6Ci0gICAg
ICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc01hdHJpeDoKLSAgICAgICAgICBjYXNlIEVPcE1hdHJp
eFRpbWVzVmVjdG9yOgotICAgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXI6Ci0gICAg
ICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc01hdHJpeDoKLSAgICAgICAgICB7Ci0gICAgICAgICAg
ICBUSW50ZXJtTm9kZSAqcGFyZW50ID0gZ2V0UGFyZW50Tm9kZSgpOwotICAgICAgICAgICAgaWYg
KCFwYXJlbnRVc2VzUmVzdWx0KHBhcmVudCwgbm9kZSkpCisgICAgY29uc3QgVFR5cGUgJnR5cGUg
PSBub2RlLT5nZXRUeXBlKCk7CisgICAgYm9vbCByb3VuZEZsb2F0ICAgPSBjYW5Sb3VuZEZsb2F0
KHR5cGUpOworCisgICAgaWYgKHJvdW5kRmxvYXQpCisgICAgeworICAgICAgICBzd2l0Y2ggKG9w
KQorICAgICAgICB7CisgICAgICAgICAgICAvLyBNYXRoIG9wZXJhdG9ycyB0aGF0IGNhbiByZXN1
bHQgaW4gYSBmbG9hdCBtYXkgbmVlZCB0byBhcHBseSByb3VuZGluZyB0byB0aGUgcmV0dXJuCisg
ICAgICAgICAgICAvLyB2YWx1ZS4gTm90ZSB0aGF0IGluIHRoZSBjYXNlIG9mIGFzc2lnbm1lbnQs
IHRoZSByb3VuZGluZyBpcyBhcHBsaWVkIHRvIGl0cyByZXR1cm4KKyAgICAgICAgICAgIC8vIHZh
bHVlIGhlcmUsIG5vdCB0aGUgdmFsdWUgYmVpbmcgYXNzaWduZWQuCisgICAgICAgICAgICBjYXNl
IEVPcEFzc2lnbjoKKyAgICAgICAgICAgIGNhc2UgRU9wQWRkOgorICAgICAgICAgICAgY2FzZSBF
T3BTdWI6CisgICAgICAgICAgICBjYXNlIEVPcE11bDoKKyAgICAgICAgICAgIGNhc2UgRU9wRGl2
OgorICAgICAgICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc1NjYWxhcjoKKyAgICAgICAgICAgIGNh
c2UgRU9wVmVjdG9yVGltZXNNYXRyaXg6CisgICAgICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVz
VmVjdG9yOgorICAgICAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjoKKyAgICAgICAg
ICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXg6CiAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgVEludGVybU5vZGUgKnBhcmVudCA9IGdldFBhcmVudE5vZGUoKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIXBhcmVudFVzZXNSZXN1bHQocGFyZW50LCBub2RlKSkKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQgPSBjcmVhdGVSb3VuZGluZ0Z1bmN0
aW9uQ2FsbE5vZGUobm9kZSk7CisgICAgICAgICAgICAgICAgcXVldWVSZXBsYWNlbWVudChub2Rl
LCByZXBsYWNlbWVudCwgT3JpZ2luYWxOb2RlOjpCRUNPTUVTX0NISUxEKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpyZXBs
YWNlbWVudCA9IGNyZWF0ZVJvdW5kaW5nRnVuY3Rpb25DYWxsTm9kZShub2RlKTsKLSAgICAgICAg
ICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgcmVwbGFjZW1lbnQsIE9yaWdpbmFsTm9kZTo6QkVD
T01FU19DSElMRCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAvLyBDb21wb3VuZCBhc3NpZ25tZW50IGNhc2VzIG5lZWQgdG8gcmVwbGFjZSB0aGUgb3BlcmF0
b3Igd2l0aCBhIGZ1bmN0aW9uIGNhbGwuCi0gICAgICAgICAgY2FzZSBFT3BBZGRBc3NpZ246Ci0g
ICAgICAgICAgewotICAgICAgICAgICAgICBtRW11bGF0ZUNvbXBvdW5kQWRkLmluc2VydCgKLSAg
ICAgICAgICAgICAgICAgIFR5cGVQYWlyKHR5cGUuZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5nZXRSaWdodCgpLT5nZXRUeXBlKCku
Z2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCkpKTsKLSAgICAgICAgICAgICAgVEludGVybU5vZGUg
KnJlcGxhY2VtZW50ID0gY3JlYXRlQ29tcG91bmRBc3NpZ25tZW50RnVuY3Rpb25DYWxsTm9kZSgK
LSAgICAgICAgICAgICAgICAgIG5vZGUtPmdldExlZnQoKSwgbm9kZS0+Z2V0UmlnaHQoKSwgImFk
ZCIpOwotICAgICAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIHJlcGxhY2VtZW50LCBP
cmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICB9Ci0gICAgICAgICAgY2FzZSBFT3BTdWJBc3NpZ246Ci0gICAgICAgICAgewotICAgICAgICAg
ICAgICBtRW11bGF0ZUNvbXBvdW5kU3ViLmluc2VydCgKLSAgICAgICAgICAgICAgICAgIFR5cGVQ
YWlyKHR5cGUuZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLT5nZXRSaWdodCgpLT5nZXRUeXBlKCkuZ2V0QnVpbHRJblR5cGVOYW1lU3Ry
aW5nKCkpKTsKLSAgICAgICAgICAgICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50ID0gY3JlYXRl
Q29tcG91bmRBc3NpZ25tZW50RnVuY3Rpb25DYWxsTm9kZSgKLSAgICAgICAgICAgICAgICAgIG5v
ZGUtPmdldExlZnQoKSwgbm9kZS0+Z2V0UmlnaHQoKSwgInN1YiIpOwotICAgICAgICAgICAgICBx
dWV1ZVJlcGxhY2VtZW50KG5vZGUsIHJlcGxhY2VtZW50LCBPcmlnaW5hbE5vZGU6OklTX0RST1BQ
RUQpOwotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgICAgY2FzZSBF
T3BNdWxBc3NpZ246Ci0gICAgICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc01hdHJpeEFzc2lnbjoK
LSAgICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzU2NhbGFyQXNzaWduOgotICAgICAgICAgIGNh
c2UgRU9wTWF0cml4VGltZXNTY2FsYXJBc3NpZ246Ci0gICAgICAgICAgY2FzZSBFT3BNYXRyaXhU
aW1lc01hdHJpeEFzc2lnbjoKLSAgICAgICAgICB7Ci0gICAgICAgICAgICAgIG1FbXVsYXRlQ29t
cG91bmRNdWwuaW5zZXJ0KAotICAgICAgICAgICAgICAgICAgVHlwZVBhaXIodHlwZS5nZXRCdWls
dEluVHlwZU5hbWVTdHJpbmcoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmdl
dFJpZ2h0KCktPmdldFR5cGUoKS5nZXRCdWlsdEluVHlwZU5hbWVTdHJpbmcoKSkpOwotICAgICAg
ICAgICAgICBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQgPSBjcmVhdGVDb21wb3VuZEFzc2lnbm1l
bnRGdW5jdGlvbkNhbGxOb2RlKAotICAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0TGVmdCgpLCBu
b2RlLT5nZXRSaWdodCgpLCAibXVsIik7Ci0gICAgICAgICAgICAgIHF1ZXVlUmVwbGFjZW1lbnQo
bm9kZSwgcmVwbGFjZW1lbnQsIE9yaWdpbmFsTm9kZTo6SVNfRFJPUFBFRCk7Ci0gICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgICBjYXNlIEVPcERpdkFzc2lnbjoKLSAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgIG1FbXVsYXRlQ29tcG91bmREaXYuaW5zZXJ0KAotICAg
ICAgICAgICAgICAgICAgVHlwZVBhaXIodHlwZS5nZXRCdWlsdEluVHlwZU5hbWVTdHJpbmcoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmdldFJpZ2h0KCktPmdldFR5cGUoKS5n
ZXRCdWlsdEluVHlwZU5hbWVTdHJpbmcoKSkpOwotICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAq
cmVwbGFjZW1lbnQgPSBjcmVhdGVDb21wb3VuZEFzc2lnbm1lbnRGdW5jdGlvbkNhbGxOb2RlKAot
ICAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0TGVmdCgpLCBub2RlLT5nZXRSaWdodCgpLCAiZGl2
Iik7Ci0gICAgICAgICAgICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgcmVwbGFjZW1lbnQsIE9y
aWdpbmFsTm9kZTo6SVNfRFJPUFBFRCk7Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
IH0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgLy8gVGhlIHJlc3Qgb2YgdGhlIGJp
bmFyeSBvcGVyYXRpb25zIHNob3VsZCBub3QgbmVlZCBwcmVjaXNpb24gZW11bGF0aW9uLgotICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIC8vIENvbXBvdW5kIGFzc2lnbm1lbnQgY2Fz
ZXMgbmVlZCB0byByZXBsYWNlIHRoZSBvcGVyYXRvciB3aXRoIGEgZnVuY3Rpb24gY2FsbC4KKyAg
ICAgICAgICAgIGNhc2UgRU9wQWRkQXNzaWduOgorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIG1FbXVsYXRlQ29tcG91bmRBZGQuaW5zZXJ0KAorICAgICAgICAgICAgICAgICAgICBUeXBl
UGFpcih0eXBlLmdldEJ1aWx0SW5UeXBlTmFtZVN0cmluZygpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5nZXRSaWdodCgpLT5nZXRUeXBlKCkuZ2V0QnVpbHRJblR5cGVOYW1l
U3RyaW5nKCkpKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQgPSBj
cmVhdGVDb21wb3VuZEFzc2lnbm1lbnRGdW5jdGlvbkNhbGxOb2RlKAorICAgICAgICAgICAgICAg
ICAgICBub2RlLT5nZXRMZWZ0KCksIG5vZGUtPmdldFJpZ2h0KCksICJhZGQiKTsKKyAgICAgICAg
ICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIHJlcGxhY2VtZW50LCBPcmlnaW5hbE5vZGU6
OklTX0RST1BQRUQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY2FzZSBFT3BTdWJBc3NpZ246CisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgbUVtdWxhdGVDb21wb3VuZFN1Yi5pbnNlcnQoCisgICAgICAgICAgICAgICAgICAgIFR5cGVQ
YWlyKHR5cGUuZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUtPmdldFJpZ2h0KCktPmdldFR5cGUoKS5nZXRCdWlsdEluVHlwZU5hbWVT
dHJpbmcoKSkpOworICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCA9IGNy
ZWF0ZUNvbXBvdW5kQXNzaWdubWVudEZ1bmN0aW9uQ2FsbE5vZGUoCisgICAgICAgICAgICAgICAg
ICAgIG5vZGUtPmdldExlZnQoKSwgbm9kZS0+Z2V0UmlnaHQoKSwgInN1YiIpOworICAgICAgICAg
ICAgICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgcmVwbGFjZW1lbnQsIE9yaWdpbmFsTm9kZTo6
SVNfRFJPUFBFRCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjYXNlIEVPcE11bEFzc2lnbjoKKyAgICAgICAgICAgIGNhc2UgRU9wVmVjdG9yVGlt
ZXNNYXRyaXhBc3NpZ246CisgICAgICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzU2NhbGFyQXNz
aWduOgorICAgICAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhckFzc2lnbjoKKyAgICAg
ICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXhBc3NpZ246CisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgbUVtdWxhdGVDb21wb3VuZE11bC5pbnNlcnQoCisgICAgICAgICAgICAg
ICAgICAgIFR5cGVQYWlyKHR5cGUuZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmdldFJpZ2h0KCktPmdldFR5cGUoKS5nZXRCdWls
dEluVHlwZU5hbWVTdHJpbmcoKSkpOworICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpyZXBs
YWNlbWVudCA9IGNyZWF0ZUNvbXBvdW5kQXNzaWdubWVudEZ1bmN0aW9uQ2FsbE5vZGUoCisgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPmdldExlZnQoKSwgbm9kZS0+Z2V0UmlnaHQoKSwgIm11bCIp
OworICAgICAgICAgICAgICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgcmVwbGFjZW1lbnQsIE9y
aWdpbmFsTm9kZTo6SVNfRFJPUFBFRCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBjYXNlIEVPcERpdkFzc2lnbjoKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBtRW11bGF0ZUNvbXBvdW5kRGl2Lmluc2VydCgKKyAgICAgICAgICAgICAg
ICAgICAgVHlwZVBhaXIodHlwZS5nZXRCdWlsdEluVHlwZU5hbWVTdHJpbmcoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0UmlnaHQoKS0+Z2V0VHlwZSgpLmdldEJ1aWx0
SW5UeXBlTmFtZVN0cmluZygpKSk7CisgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKnJlcGxh
Y2VtZW50ID0gY3JlYXRlQ29tcG91bmRBc3NpZ25tZW50RnVuY3Rpb25DYWxsTm9kZSgKKyAgICAg
ICAgICAgICAgICAgICAgbm9kZS0+Z2V0TGVmdCgpLCBub2RlLT5nZXRSaWdodCgpLCAiZGl2Iik7
CisgICAgICAgICAgICAgICAgcXVldWVSZXBsYWNlbWVudChub2RlLCByZXBsYWNlbWVudCwgT3Jp
Z2luYWxOb2RlOjpJU19EUk9QUEVEKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgLy8gVGhlIHJlc3Qg
b2YgdGhlIGJpbmFyeSBvcGVyYXRpb25zIHNob3VsZCBub3QgbmVlZCBwcmVjaXNpb24gZW11bGF0
aW9uLgorICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVy
biB2aXNpdENoaWxkcmVuOwogfQogCitib29sIEVtdWxhdGVQcmVjaXNpb246OnZpc2l0RGVjbGFy
YXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1EZWNsYXJhdGlvbiAqbm9kZSkKK3sKKyAgICAvLyBW
YXJpYWJsZSBvciBpbnRlcmZhY2UgYmxvY2sgZGVjbGFyYXRpb24uCisgICAgaWYgKHZpc2l0ID09
IFByZVZpc2l0KQorICAgIHsKKyAgICAgICAgbURlY2xhcmluZ1ZhcmlhYmxlcyA9IHRydWU7Cisg
ICAgfQorICAgIGVsc2UgaWYgKHZpc2l0ID09IEluVmlzaXQpCisgICAgeworICAgICAgICBtRGVj
bGFyaW5nVmFyaWFibGVzID0gdHJ1ZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg
bURlY2xhcmluZ1ZhcmlhYmxlcyA9IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBFbXVsYXRlUHJlY2lzaW9uOjp2aXNpdEludmFyaWFudERlY2xhcmF0aW9uKFZpc2l0
IHZpc2l0LCBUSW50ZXJtSW52YXJpYW50RGVjbGFyYXRpb24gKm5vZGUpCit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCitib29sIEVtdWxhdGVQcmVjaXNpb246OnZpc2l0RnVuY3Rpb25Qcm90b3R5
cGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAqbm9kZSkKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgRW11bGF0ZVByZWNpc2lvbjo6dmlzaXRBZ2dyZWdhdGUo
VmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCiB7CiAgICAgYm9vbCB2aXNpdENo
aWxkcmVuID0gdHJ1ZTsKICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCiAgICAgewotICAgICAg
Y2FzZSBFT3BDb25zdHJ1Y3RTdHJ1Y3Q6Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BQ
cm90b3R5cGU6Ci0gICAgICAgIHZpc2l0Q2hpbGRyZW4gPSBmYWxzZTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEVPcFBhcmFtZXRlcnM6Ci0gICAgICAgIHZpc2l0Q2hpbGRyZW4gPSBmYWxz
ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEludmFyaWFudERlY2xhcmF0aW9uOgot
ICAgICAgICB2aXNpdENoaWxkcmVuID0gZmFsc2U7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BEZWNsYXJhdGlvbjoKLSAgICAgICAgLy8gVmFyaWFibGUgZGVjbGFyYXRpb24uCi0gICAg
ICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKLSAgICAgICAgewotICAgICAgICAgICAgbURlY2xh
cmluZ1ZhcmlhYmxlcyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAodmlzaXQg
PT0gSW5WaXNpdCkKLSAgICAgICAgewotICAgICAgICAgICAgbURlY2xhcmluZ1ZhcmlhYmxlcyA9
IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBt
RGVjbGFyaW5nVmFyaWFibGVzID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEVPcEZ1bmN0aW9uQ2FsbDoKLSAgICAgIHsKLSAgICAgICAgLy8gRnVuY3Rpb24g
Y2FsbC4KLSAgICAgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KQotICAgICAgICB7Ci0gICAgICAg
ICAgICAvLyBVc2VyLWRlZmluZWQgZnVuY3Rpb24gcmV0dXJuIHZhbHVlcyBhcmUgbm90IHJvdW5k
ZWQsIHRoaXMgcmVsaWVzIG9uIHRoYXQKLSAgICAgICAgICAgIC8vIGNhbGN1bGF0aW9ucyBwcm9k
dWNpbmcgdGhlIHZhbHVlIHdlcmUgcm91bmRlZC4KKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RT
dHJ1Y3Q6CisgICAgICAgIGNhc2UgRU9wQ2FsbEludGVybmFsUmF3RnVuY3Rpb246CisgICAgICAg
IGNhc2UgRU9wQ2FsbEZ1bmN0aW9uSW5BU1Q6CisgICAgICAgICAgICAvLyBVc2VyLWRlZmluZWQg
ZnVuY3Rpb24gcmV0dXJuIHZhbHVlcyBhcmUgbm90IHJvdW5kZWQuIFRoZSBjYWxjdWxhdGlvbnMg
dGhhdCBwcm9kdWNlZAorICAgICAgICAgICAgLy8gdGhlIHZhbHVlIGluc2lkZSB0aGUgZnVuY3Rp
b24gZGVmaW5pdGlvbiBzaG91bGQgaGF2ZSBiZWVuIHJvdW5kZWQuCisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICpwYXJlbnQgPSBn
ZXRQYXJlbnROb2RlKCk7Ci0gICAgICAgICAgICBpZiAoY2FuUm91bmRGbG9hdChub2RlLT5nZXRU
eXBlKCkpICYmICFpc0luRnVuY3Rpb25NYXAobm9kZSkgJiYKKyAgICAgICAgICAgIGlmIChjYW5S
b3VuZEZsb2F0KG5vZGUtPmdldFR5cGUoKSkgJiYgdmlzaXQgPT0gUHJlVmlzaXQgJiYKICAgICAg
ICAgICAgICAgICBwYXJlbnRVc2VzUmVzdWx0KHBhcmVudCwgbm9kZSkpCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50ID0gY3JlYXRlUm91bmRp
bmdGdW5jdGlvbkNhbGxOb2RlKG5vZGUpOwogICAgICAgICAgICAgICAgIHF1ZXVlUmVwbGFjZW1l
bnQobm9kZSwgcmVwbGFjZW1lbnQsIE9yaWdpbmFsTm9kZTo6QkVDT01FU19DSElMRCk7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBkZWZh
dWx0OgotICAgICAgICBUSW50ZXJtTm9kZSAqcGFyZW50ID0gZ2V0UGFyZW50Tm9kZSgpOwotICAg
ICAgICBpZiAoY2FuUm91bmRGbG9hdChub2RlLT5nZXRUeXBlKCkpICYmIHZpc2l0ID09IFByZVZp
c2l0ICYmIHBhcmVudFVzZXNSZXN1bHQocGFyZW50LCBub2RlKSkKLSAgICAgICAgewotICAgICAg
ICAgICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50ID0gY3JlYXRlUm91bmRpbmdGdW5jdGlvbkNh
bGxOb2RlKG5vZGUpOwotICAgICAgICAgICAgcXVldWVSZXBsYWNlbWVudChub2RlLCByZXBsYWNl
bWVudCwgT3JpZ2luYWxOb2RlOjpCRUNPTUVTX0NISUxEKTsKLSAgICAgICAgfQotICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gdmlzaXRDaGlsZHJl
bjsKIH0KQEAgLTY2MiwyMSArNjYzLDIxIEBAIGJvb2wgRW11bGF0ZVByZWNpc2lvbjo6dmlzaXRV
bmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5ICpub2RlKQogewogICAgIHN3aXRjaCAobm9k
ZS0+Z2V0T3AoKSkKICAgICB7Ci0gICAgICBjYXNlIEVPcE5lZ2F0aXZlOgotICAgICAgY2FzZSBF
T3BWZWN0b3JMb2dpY2FsTm90OgotICAgICAgY2FzZSBFT3BMb2dpY2FsTm90OgotICAgICAgY2Fz
ZSBFT3BQb3N0SW5jcmVtZW50OgotICAgICAgY2FzZSBFT3BQb3N0RGVjcmVtZW50OgotICAgICAg
Y2FzZSBFT3BQcmVJbmNyZW1lbnQ6Ci0gICAgICBjYXNlIEVPcFByZURlY3JlbWVudDoKLSAgICAg
ICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBpZiAoY2FuUm91bmRGbG9hdChub2Rl
LT5nZXRUeXBlKCkpICYmIHZpc2l0ID09IFByZVZpc2l0KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQgPSBjcmVhdGVSb3VuZGluZ0Z1bmN0aW9uQ2FsbE5v
ZGUobm9kZSk7Ci0gICAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIHJlcGxhY2VtZW50
LCBPcmlnaW5hbE5vZGU6OkJFQ09NRVNfQ0hJTEQpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEVPcE5lZ2F0aXZlOgorICAgICAgICBjYXNlIEVPcExvZ2ljYWxOb3Q6
CisgICAgICAgIGNhc2UgRU9wUG9zdEluY3JlbWVudDoKKyAgICAgICAgY2FzZSBFT3BQb3N0RGVj
cmVtZW50OgorICAgICAgICBjYXNlIEVPcFByZUluY3JlbWVudDoKKyAgICAgICAgY2FzZSBFT3BQ
cmVEZWNyZW1lbnQ6CisgICAgICAgIGNhc2UgRU9wTG9naWNhbE5vdENvbXBvbmVudFdpc2U6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmIChjYW5S
b3VuZEZsb2F0KG5vZGUtPmdldFR5cGUoKSkgJiYgdmlzaXQgPT0gUHJlVmlzaXQpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKnJlcGxhY2VtZW50ID0gY3JlYXRl
Um91bmRpbmdGdW5jdGlvbkNhbGxOb2RlKG5vZGUpOworICAgICAgICAgICAgICAgIHF1ZXVlUmVw
bGFjZW1lbnQobm9kZSwgcmVwbGFjZW1lbnQsIE9yaWdpbmFsTm9kZTo6QkVDT01FU19DSElMRCk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKICAgICB9CiAKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTcxMyw2ICs3MTQsOCBAQCBib29sIEVtdWxhdGVQcmVjaXNpb246OlN1cHBvcnRl
ZEluTGFuZ3VhZ2UoY29uc3QgU2hTaGFkZXJPdXRwdXQgb3V0cHV0TGFuZ3VhZ2UpCiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBPdGhlciBsYW5ndWFnZXMgbm90IHlldCBzdXBwb3J0
ZWQKICAgICAgICAgICAgIHJldHVybiAob3V0cHV0TGFuZ3VhZ2UgPT0gU0hfR0xTTF9DT01QQVRJ
QklMSVRZX09VVFBVVCB8fAotICAgICAgICAgICAgICAgICAgICBJc0dMU0wxMzBPck5ld2VyKG91
dHB1dExhbmd1YWdlKSk7CisgICAgICAgICAgICAgICAgICAgIHNoOjpJc0dMU0wxMzBPck5ld2Vy
KG91dHB1dExhbmd1YWdlKSk7CiAgICAgfQogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0Vt
dWxhdGVQcmVjaXNpb24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0VtdWxhdGVQcmVjaXNpb24uaAppbmRleCBmMjNlNDBiZTdmNS4uZWQxNTM5NTJl
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL0VtdWxhdGVQcmVjaXNpb24uaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRlUHJlY2lzaW9uLmgKQEAgLTE4LDYgKzE4LDkg
QEAKIC8vIG5lZWQgdG8gd3JpdGUgYSBodWdlIG51bWJlciBvZiB2YXJpYXRpb25zIG9mIHRoZSBl
bXVsYXRlZCBjb21wb3VuZCBhc3NpZ25tZW50CiAvLyB0byBldmVyeSB0cmFuc2xhdGVkIHNoYWRl
ciB3aXRoIGVtdWxhdGlvbiBlbmFibGVkLgogCituYW1lc3BhY2Ugc2gKK3sKKwogY2xhc3MgRW11
bGF0ZVByZWNpc2lvbiA6IHB1YmxpYyBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXIKIHsKICAgcHVi
bGljOgpAQCAtMjcsNiArMzAsOSBAQCBjbGFzcyBFbXVsYXRlUHJlY2lzaW9uIDogcHVibGljIFRM
VmFsdWVUcmFja2luZ1RyYXZlcnNlcgogICAgIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQs
IFRJbnRlcm1CaW5hcnkgKm5vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRVbmFyeShWaXNp
dCB2aXNpdCwgVEludGVybVVuYXJ5ICpub2RlKSBvdmVycmlkZTsKICAgICBib29sIHZpc2l0QWdn
cmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKSBvdmVycmlkZTsKKyAg
ICBib29sIHZpc2l0SW52YXJpYW50RGVjbGFyYXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1JbnZh
cmlhbnREZWNsYXJhdGlvbiAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdERlY2xhcmF0
aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtRGVjbGFyYXRpb24gKm5vZGUpIG92ZXJyaWRlOworICAg
IGJvb2wgdmlzaXRGdW5jdGlvblByb3RvdHlwZShWaXNpdCB2aXNpdCwgVEludGVybUZ1bmN0aW9u
UHJvdG90eXBlICpub2RlKSBvdmVycmlkZTsKIAogICAgIHZvaWQgd3JpdGVFbXVsYXRpb25IZWxw
ZXJzKFRJbmZvU2lua0Jhc2UgJnNpbmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgaW50IHNoYWRlclZlcnNpb24sCkBAIC0zNyw4ICs0Myw3IEBAIGNsYXNzIEVtdWxhdGVQ
cmVjaXNpb24gOiBwdWJsaWMgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyCiAgIHByaXZhdGU6CiAg
ICAgc3RydWN0IFR5cGVQYWlyCiAgICAgewotICAgICAgICBUeXBlUGFpcihjb25zdCBjaGFyICps
LCBjb25zdCBjaGFyICpyKQotICAgICAgICAgICAgOiBsVHlwZShsKSwgclR5cGUocikgeyB9Cisg
ICAgICAgIFR5cGVQYWlyKGNvbnN0IGNoYXIgKmwsIGNvbnN0IGNoYXIgKnIpIDogbFR5cGUobCks
IHJUeXBlKHIpIHt9CiAKICAgICAgICAgY29uc3QgY2hhciAqbFR5cGU7CiAgICAgICAgIGNvbnN0
IGNoYXIgKnJUeXBlOwpAQCAtNDYsNyArNTEsNyBAQCBjbGFzcyBFbXVsYXRlUHJlY2lzaW9uIDog
cHVibGljIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcgogCiAgICAgc3RydWN0IFR5cGVQYWlyQ29t
cGFyYXRvcgogICAgIHsKLSAgICAgICAgYm9vbCBvcGVyYXRvcigpIChjb25zdCBUeXBlUGFpciYg
bCwgY29uc3QgVHlwZVBhaXImIHIpIGNvbnN0CisgICAgICAgIGJvb2wgb3BlcmF0b3IoKShjb25z
dCBUeXBlUGFpciAmbCwgY29uc3QgVHlwZVBhaXIgJnIpIGNvbnN0CiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmIChsLmxUeXBlID09IHIubFR5cGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGwu
clR5cGUgPCByLnJUeXBlOwpAQCAtNjMsNCArNjgsNiBAQCBjbGFzcyBFbXVsYXRlUHJlY2lzaW9u
IDogcHVibGljIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcgogICAgIGJvb2wgbURlY2xhcmluZ1Zh
cmlhYmxlczsKIH07CiAKK30gIC8vIG5hbWVzcGFjZSBzaAorCiAjZW5kaWYgIC8vIENPTVBJTEVS
X1RSQU5TTEFUT1JfRU1VTEFURV9QUkVDSVNJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0V4cGFuZEludGVnZXJQb3dFeHBy
ZXNzaW9ucy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9FeHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMuY3BwCmluZGV4IDk0MDljMDEwZjE0Li45
ZmYyZjEyNjUwZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvRXhwYW5kSW50ZWdlclBvd0V4cHJlc3Npb25zLmNwcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FeHBhbmRJbnRlZ2Vy
UG93RXhwcmVzc2lvbnMuY3BwCkBAIC0xMTYsOCArMTE2LDggQEAgYm9vbCBUcmF2ZXJzZXI6OnZp
c2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQogICAgIFRJ
bnRlcm1UeXBlZCAqbGhzID0gc2VxdWVuY2UtPmF0KDApLT5nZXRBc1R5cGVkKCk7CiAgICAgQVNT
RVJUKGxocyk7CiAKLSAgICBUSW50ZXJtQWdncmVnYXRlICppbml0ID0gY3JlYXRlVGVtcEluaXRE
ZWNsYXJhdGlvbihsaHMpOwotICAgIFRJbnRlcm1UeXBlZCAqY3VycmVudCAgPSBjcmVhdGVUZW1w
U3ltYm9sKGxocy0+Z2V0VHlwZSgpKTsKKyAgICBUSW50ZXJtRGVjbGFyYXRpb24gKmluaXQgPSBj
cmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKGxocyk7CisgICAgVEludGVybVR5cGVkICpjdXJyZW50
ICAgID0gY3JlYXRlVGVtcFN5bWJvbChsaHMtPmdldFR5cGUoKSk7CiAKICAgICBpbnNlcnRTdGF0
ZW1lbnRJblBhcmVudEJsb2NrKGluaXQpOwogCkBAIC0xMzYsNyArMTM2LDcgQEAgYm9vbCBUcmF2
ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2Rl
KQogICAgICAgICBvbmVWYWwtPnNldEZDb25zdCgxLjBmKTsKICAgICAgICAgVEludGVybUNvbnN0
YW50VW5pb24gKm9uZU5vZGUgPSBuZXcgVEludGVybUNvbnN0YW50VW5pb24ob25lVmFsLCBub2Rl
LT5nZXRUeXBlKCkpOwogICAgICAgICBUSW50ZXJtQmluYXJ5ICpkaXYgICAgICAgICAgICA9IG5l
dyBUSW50ZXJtQmluYXJ5KEVPcERpdiwgb25lTm9kZSwgY3VycmVudCk7Ci0gICAgICAgIGN1cnJl
bnQgPSBkaXY7CisgICAgICAgIGN1cnJlbnQgICAgICAgICAgICAgICAgICAgICAgID0gZGl2Owog
ICAgIH0KIAogICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgY3VycmVudCwgT3JpZ2luYWxOb2Rl
OjpJU19EUk9QUEVEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0V4dGVuc2lvbkJlaGF2aW9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FeHRlbnNpb25CZWhhdmlvci5oCmluZGV4
IDc4MmMxYzkyMTc4Li5mYWM4MmExMzRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRXh0ZW5zaW9uQmVoYXZpb3IuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FeHRlbnNpb25C
ZWhhdmlvci5oCkBAIC0xMCwyNCArMTAsMjIgQEAKICNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8
c3RyaW5nPgogCi10eXBlZGVmIGVudW0KLXsKLSAgICBFQmhSZXF1aXJlLAotICAgIEVCaEVuYWJs
ZSwKLSAgICBFQmhXYXJuLAotICAgIEVCaERpc2FibGUsCi0gICAgRUJoVW5kZWZpbmVkCi19IFRC
ZWhhdmlvcjsKK3R5cGVkZWYgZW51bSB7IEVCaFJlcXVpcmUsIEVCaEVuYWJsZSwgRUJoV2Fybiwg
RUJoRGlzYWJsZSwgRUJoVW5kZWZpbmVkIH0gVEJlaGF2aW9yOwogCi1pbmxpbmUgY29uc3QgY2hh
ciogZ2V0QmVoYXZpb3JTdHJpbmcoVEJlaGF2aW9yIGIpCitpbmxpbmUgY29uc3QgY2hhciAqZ2V0
QmVoYXZpb3JTdHJpbmcoVEJlaGF2aW9yIGIpCiB7Ci0gICAgc3dpdGNoKGIpCisgICAgc3dpdGNo
IChiKQogICAgIHsKLSAgICAgIGNhc2UgRUJoUmVxdWlyZTogcmV0dXJuICJyZXF1aXJlIjsKLSAg
ICAgIGNhc2UgRUJoRW5hYmxlOiByZXR1cm4gImVuYWJsZSI7Ci0gICAgICBjYXNlIEVCaFdhcm46
IHJldHVybiAid2FybiI7Ci0gICAgICBjYXNlIEVCaERpc2FibGU6IHJldHVybiAiZGlzYWJsZSI7
Ci0gICAgICBkZWZhdWx0OiByZXR1cm4gTlVMTDsKKyAgICAgICAgY2FzZSBFQmhSZXF1aXJlOgor
ICAgICAgICAgICAgcmV0dXJuICJyZXF1aXJlIjsKKyAgICAgICAgY2FzZSBFQmhFbmFibGU6Cisg
ICAgICAgICAgICByZXR1cm4gImVuYWJsZSI7CisgICAgICAgIGNhc2UgRUJoV2FybjoKKyAgICAg
ICAgICAgIHJldHVybiAid2FybiI7CisgICAgICAgIGNhc2UgRUJoRGlzYWJsZToKKyAgICAgICAg
ICAgIHJldHVybiAiZGlzYWJsZSI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gTlVMTDsKICAgICB9CiB9CiAKQEAgLTQwLDQgKzM4LDQgQEAgaW5saW5lIGJvb2wgSXNFeHRl
bnNpb25FbmFibGVkKGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciAmZXh0QmVoYXZpb3IsIGNvbnN0
IGNoYXIKICAgICByZXR1cm4gaXRlciAhPSBleHRCZWhhdmlvci5lbmQoKSAmJiAoaXRlci0+c2Vj
b25kID09IEVCaEVuYWJsZSB8fCBpdGVyLT5zZWNvbmQgPT0gRUJoUmVxdWlyZSk7CiB9CiAKLSNl
bmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0VYVEVOU0lPTkJFSEFWSU9SX0hfCisjZW5kaWYg
IC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfRVhURU5TSU9OQkVIQVZJT1JfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0V4dGVuc2lv
bkdMU0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvRXh0ZW5zaW9uR0xTTC5jcHAKaW5kZXggZDdmNDVmN2VlZjYuLjViNWRjNTgwZTlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9F
eHRlbnNpb25HTFNMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9FeHRlbnNpb25HTFNMLmNwcApAQCAtMTAsNiArMTAsOSBAQAogCiAjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9WZXJzaW9uR0xTTC5oIgogCituYW1lc3BhY2Ugc2gK
K3sKKwogVEV4dGVuc2lvbkdMU0w6OlRFeHRlbnNpb25HTFNMKFNoU2hhZGVyT3V0cHV0IG91dHB1
dCkKICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwgbVRhcmdldFZl
cnNpb24oU2hhZGVyT3V0cHV0VHlwZVRvR0xTTFZlcnNpb24ob3V0cHV0KSkKIHsKQEAgLTk4LDMg
KzEwMSw1IEBAIHZvaWQgVEV4dGVuc2lvbkdMU0w6OmNoZWNrT3BlcmF0b3IoVEludGVybU9wZXJh
dG9yICpub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQorCit9ICAvLyBuYW1lc3Bh
Y2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0V4dGVuc2lvbkdMU0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0V4dGVuc2lvbkdMU0wuaAppbmRleCA2YmI4NGQ2MTJkYS4uM2My
ZGJlMDc0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0V4dGVuc2lvbkdMU0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9FeHRlbnNpb25HTFNMLmgKQEAgLTE0LDYgKzE0LDkg
QEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgogCituYW1l
c3BhY2Ugc2gKK3sKKwogLy8gVHJhdmVyc2VzIHRoZSBpbnRlcm1lZGlhdGUgdHJlZSB0byBkZXRl
cm1pbmUgd2hpY2ggR0xTTCBleHRlbnNpb25zIGFyZSByZXF1aXJlZAogLy8gdG8gc3VwcG9ydCB0
aGUgc2hhZGVyLgogY2xhc3MgVEV4dGVuc2lvbkdMU0wgOiBwdWJsaWMgVEludGVybVRyYXZlcnNl
cgpAQCAtMzYsNCArMzksNiBAQCBjbGFzcyBURXh0ZW5zaW9uR0xTTCA6IHB1YmxpYyBUSW50ZXJt
VHJhdmVyc2VyCiAgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IG1SZXF1aXJlZEV4dGVuc2lvbnM7
CiB9OwogCit9ICAvLyBuYW1lc3BhY2Ugc2gKKwogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xB
VE9SX0VYVEVOU0lPTkdMU0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ZpbmRTeW1ib2xOb2RlLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ZpbmRTeW1ib2xOb2RlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uODdmYjlkNTk4NjQKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9GaW5kU3ltYm9sTm9kZS5jcHAKQEAgLTAsMCArMSw1OCBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisv
LyBGaW5kU3ltYm9sLmNwcDoKKy8vICAgICBVdGlsaXR5IGZvciBmaW5kaW5nIGEgc3ltYm9sIG5v
ZGUgaW5zaWRlIGFuIEFTVCB0cmVlLgorCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9G
aW5kU3ltYm9sTm9kZS5oIgorCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1O
b2RlLmgiCisKK25hbWVzcGFjZSBzaAoreworCituYW1lc3BhY2UKK3sKKworY2xhc3MgU3ltYm9s
RmluZGVyIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKK3sKKyAgcHVibGljOgorICAgIFN5bWJv
bEZpbmRlcihjb25zdCBUU3RyaW5nICZzeW1ib2xOYW1lLCBUQmFzaWNUeXBlIGJhc2ljVHlwZSkK
KyAgICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksCisgICAgICAg
ICAgbVN5bWJvbE5hbWUoc3ltYm9sTmFtZSksCisgICAgICAgICAgbU5vZGVGb3VuZChudWxscHRy
KSwKKyAgICAgICAgICBtQmFzaWNUeXBlKGJhc2ljVHlwZSkKKyAgICB7CisgICAgfQorCisgICAg
dm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKQorICAgIHsKKyAgICAgICAgaWYg
KG5vZGUtPmdldEJhc2ljVHlwZSgpID09IG1CYXNpY1R5cGUgJiYgbm9kZS0+Z2V0U3ltYm9sKCkg
PT0gbVN5bWJvbE5hbWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1Ob2RlRm91bmQgPSBub2Rl
OworICAgICAgICB9CisgICAgfQorCisgICAgYm9vbCBpc0ZvdW5kKCkgY29uc3QgeyByZXR1cm4g
bU5vZGVGb3VuZCAhPSBudWxscHRyOyB9CisgICAgY29uc3QgVEludGVybVN5bWJvbCAqZ2V0Tm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1Ob2RlRm91bmQ7IH0KKworICBwcml2YXRlOgorICAgIFRTdHJp
bmcgbVN5bWJvbE5hbWU7CisgICAgVEludGVybVN5bWJvbCAqbU5vZGVGb3VuZDsKKyAgICBUQmFz
aWNUeXBlIG1CYXNpY1R5cGU7Cit9OworCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK2Nv
bnN0IFRJbnRlcm1TeW1ib2wgKkZpbmRTeW1ib2xOb2RlKFRJbnRlcm1Ob2RlICpyb290LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmc3ltYm9sTmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRCYXNpY1R5cGUgYmFzaWNU
eXBlKQoreworICAgIFN5bWJvbEZpbmRlciBmaW5kZXIoc3ltYm9sTmFtZSwgYmFzaWNUeXBlKTsK
KyAgICByb290LT50cmF2ZXJzZSgmZmluZGVyKTsKKyAgICByZXR1cm4gZmluZGVyLmdldE5vZGUo
KTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9GaW5kU3ltYm9sTm9kZS5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRmluZFN5bWJvbE5vZGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMDhkZmI5YTIyMjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9GaW5kU3ltYm9sTm9kZS5oCkBAIC0wLDAgKzEsMjcgQEAKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
Ly8gRmluZFN5bWJvbE5vZGUuaDoKKy8vICAgICBVdGlsaXR5IGZvciBmaW5kaW5nIGEgc3ltYm9s
IG5vZGUgaW5zaWRlIGFuIEFTVCB0cmVlLgorCisjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1Jf
RklORF9TWU1CT0xfSF8KKyNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9GSU5EX1NZTUJPTF9I
XworCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9CYXNlVHlwZXMuaCIKKyNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL0NvbW1vbi5oIgorCituYW1lc3BhY2Ugc2gKK3sKKworY2xh
c3MgVEludGVybU5vZGU7CitjbGFzcyBUSW50ZXJtU3ltYm9sOworCitjb25zdCBUSW50ZXJtU3lt
Ym9sICpGaW5kU3ltYm9sTm9kZShUSW50ZXJtTm9kZSAqcm9vdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJnN5bWJvbE5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUQmFzaWNUeXBlIGJhc2ljVHlwZSk7CisKK30gIC8v
IG5hbWVzcGFjZSBzaAorCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfRklORF9TWU1C
T0xfSF8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9GbGFnU3RkMTQwU3RydWN0cy5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9GbGFn
U3RkMTQwU3RydWN0cy5jcHAKaW5kZXggYTc1MWI3NjhiNzguLmQxNjQxMmJiMjMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9GbGFn
U3RkMTQwU3RydWN0cy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvRmxhZ1N0ZDE0MFN0cnVjdHMuY3BwCkBAIC0xNSwxNSArMTUsMTYgQEAg
Ym9vbCBGbGFnU3RkMTQwU3RydWN0czo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1C
aW5hcnkgKmJpbmFyeU5vZGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGJpbmFyeU5vZGUtPmdl
dE9wKCkpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0SW50ZXJmYWNl
QmxvY2s6Ci0gICAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdFN0cnVjdDoKLSAgICAgICAgICAg
IGlmIChpc0luU3RkMTQwSW50ZXJmYWNlQmxvY2soYmluYXJ5Tm9kZS0+Z2V0TGVmdCgpKSkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtRmxhZ2dlZE5vZGVzLnB1c2hfYmFjayhiaW5h
cnlOb2RlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAg
ZGVmYXVsdDogYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0SW50ZXJmYWNl
QmxvY2s6CisgICAgICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0U3RydWN0OgorICAgICAgICAg
ICAgICAgIGlmIChpc0luU3RkMTQwSW50ZXJmYWNlQmxvY2soYmluYXJ5Tm9kZS0+Z2V0TGVmdCgp
KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1GbGFnZ2VkTm9kZXMu
cHVzaF9iYWNrKGJpbmFyeU5vZGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtNzMsNSArNzQsNCBA
QCBzdGQ6OnZlY3RvcjxUSW50ZXJtVHlwZWQgKj4gRmxhZ1N0ZDE0MFZhbHVlU3RydWN0cyhUSW50
ZXJtTm9kZSAqbm9kZSkKIAogICAgIHJldHVybiBmbGFnZ2luZ1RyYXZlcnNhbC5nZXRGbGFnZ2Vk
Tm9kZXMoKTsKIH0KLQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvRmxhZ1N0ZDE0MFN0cnVjdHMuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ZsYWdTdGQxNDBTdHJ1Y3RzLmgKaW5k
ZXggY2ZjZDc3NWFmNzQuLjY3MmIyMGQzOTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9GbGFnU3RkMTQwU3RydWN0cy5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ZsYWdTdGQx
NDBTdHJ1Y3RzLmgKQEAgLTE4LDExICsxOCw3IEBAIG5hbWVzcGFjZSBzaAogY2xhc3MgRmxhZ1N0
ZDE0MFN0cnVjdHMgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogewogICBwdWJsaWM6Ci0KLSAg
ICBGbGFnU3RkMTQwU3RydWN0cygpCi0gICAgICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBm
YWxzZSwgZmFsc2UpCi0gICAgewotICAgIH0KKyAgICBGbGFnU3RkMTQwU3RydWN0cygpIDogVElu
dGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpIHt9CiAKICAgICBjb25zdCBzdGQ6OnZl
Y3RvcjxUSW50ZXJtVHlwZWQgKj4gZ2V0RmxhZ2dlZE5vZGVzKCkgY29uc3QgeyByZXR1cm4gbUZs
YWdnZWROb2RlczsgfQogCkBAIC0zNyw3ICszMyw2IEBAIGNsYXNzIEZsYWdTdGQxNDBTdHJ1Y3Rz
IDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKIH07CiAKIHN0ZDo6dmVjdG9yPFRJbnRlcm1UeXBl
ZCAqPiBGbGFnU3RkMTQwVmFsdWVTdHJ1Y3RzKFRJbnRlcm1Ob2RlICpub2RlKTsKLQogfQogCi0j
ZW5kaWYgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9GTEFHU1REMTQwU1RSVUNUU19IXworI2VuZGlm
ICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0ZMQUdTVEQxNDBTVFJVQ1RTX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Gb3JMb29w
VW5yb2xsLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL0Zvckxvb3BVbnJvbGwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Y2Mx
YzI2YTEzNS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvRm9yTG9vcFVucm9sbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5
NyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci9Gb3JMb29wVW5yb2xsLmgiCi0KLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Zh
bGlkYXRlTGltaXRhdGlvbnMuaCIKLSNpbmNsdWRlICJhbmdsZV9nbC5oIgotCi1ib29sIEZvckxv
b3BVbnJvbGxNYXJrZXI6OnZpc2l0QmluYXJ5KFZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2RlKQot
ewotICAgIGlmIChtVW5yb2xsQ29uZGl0aW9uICE9IGtTYW1wbGVyQXJyYXlJbmRleCkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBJZiBhIHNhbXBsZXIgYXJyYXkgaW5kZXggaXMgYWxz
byB0aGUgbG9vcCBpbmRleCwKLSAgICAvLyAgIDEpIGlmIHRoZSBpbmRleCB0eXBlIGlzIGludGVn
ZXIsIG1hcmsgdGhlIGxvb3AgZm9yIHVucm9sbGluZzsKLSAgICAvLyAgIDIpIGlmIHRoZSBpbmRl
eCB0eXBlIGlmIGZsb2F0LCBzZXQgYSBmbGFnIHRvIGxhdGVyIGZhaWwgY29tcGlsZS4KLSAgICBz
d2l0Y2ggKG5vZGUtPmdldE9wKCkpCi0gICAgewotICAgICAgY2FzZSBFT3BJbmRleEluZGlyZWN0
OgotICAgICAgICBpZiAobm9kZS0+Z2V0TGVmdCgpICE9IE5VTEwgJiYgbm9kZS0+Z2V0UmlnaHQo
KSAhPSBOVUxMICYmIG5vZGUtPmdldExlZnQoKS0+Z2V0QXNTeW1ib2xOb2RlKCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IG5vZGUtPmdldExlZnQoKS0+
Z2V0QXNTeW1ib2xOb2RlKCk7Ci0gICAgICAgICAgICBpZiAoSXNTYW1wbGVyKHN5bWJvbC0+Z2V0
QmFzaWNUeXBlKCkpICYmIHN5bWJvbC0+aXNBcnJheSgpICYmICFtTG9vcFN0YWNrLmVtcHR5KCkp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbVZpc2l0U2FtcGxlckFycmF5SW5kZXhO
b2RlSW5zaWRlTG9vcCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgbm9kZS0+Z2V0UmlnaHQoKS0+
dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgICAgICAgICAgbVZpc2l0U2FtcGxlckFycmF5SW5kZXhO
b2RlSW5zaWRlTG9vcCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYWxyZWFk
eSB2aXNpdGVkIGFsbCB0aGUgY2hpbGRyZW4uCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVs
dDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIEZv
ckxvb3BVbnJvbGxNYXJrZXI6OnZpc2l0TG9vcChWaXNpdCwgVEludGVybUxvb3AgKm5vZGUpCi17
Ci0gICAgYm9vbCBjYW5CZVVucm9sbGVkID0gbUhhc1J1bkxvb3BWYWxpZGF0aW9uOwotICAgIGlm
ICghbUhhc1J1bkxvb3BWYWxpZGF0aW9uKQotICAgIHsKLSAgICAgICAgY2FuQmVVbnJvbGxlZCA9
IFZhbGlkYXRlTGltaXRhdGlvbnM6OklzTGltaXRlZEZvckxvb3Aobm9kZSk7Ci0gICAgfQotICAg
IGlmIChtVW5yb2xsQ29uZGl0aW9uID09IGtJbnRlZ2VySW5kZXggJiYgY2FuQmVVbnJvbGxlZCkK
LSAgICB7Ci0gICAgICAgIC8vIENoZWNrIGlmIGxvb3AgaW5kZXggdHlwZSBpcyBpbnRlZ2VyLgot
ICAgICAgICAvLyBUaGlzIGlzIGNhbGxlZCBhZnRlciBWYWxpZGF0ZUxpbWl0YXRpb25zIHBhc3Ms
IHNvIHRoZSBsb29wIGhhcyB0aGUgbGltaXRlZCBmb3JtIHNwZWNpZmllZAotICAgICAgICAvLyBp
biBFU1NMIDEuMDAgYXBwZW5kaXggQS4KLSAgICAgICAgVEludGVybVNlcXVlbmNlICpkZWNsU2Vx
ID0gbm9kZS0+Z2V0SW5pdCgpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5nZXRTZXF1ZW5jZSgpOwotICAg
ICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSAoKmRlY2xTZXEpWzBdLT5nZXRBc0JpbmFyeU5v
ZGUoKS0+Z2V0TGVmdCgpLT5nZXRBc1N5bWJvbE5vZGUoKTsKLSAgICAgICAgaWYgKHN5bWJvbC0+
Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50KQotICAgICAgICAgICAgbm9kZS0+c2V0VW5yb2xsRmxh
Zyh0cnVlKTsKLSAgICB9Ci0KLSAgICBUSW50ZXJtTm9kZSAqYm9keSA9IG5vZGUtPmdldEJvZHko
KTsKLSAgICBpZiAoYm9keSAhPSBudWxscHRyKQotICAgIHsKLSAgICAgICAgaWYgKGNhbkJlVW5y
b2xsZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1Mb29wU3RhY2sucHVzaChub2RlKTsKLSAg
ICAgICAgICAgIGJvZHktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgbUxvb3BTdGFjay5w
b3AoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGJv
ZHktPnRyYXZlcnNlKHRoaXMpOwotICAgICAgICB9Ci0gICAgfQotICAgIC8vIFRoZSBsb29wIGlz
IGZ1bGx5IHByb2Nlc3NlZCAtIG5vIG5lZWQgdG8gdmlzaXQgY2hpbGRyZW4uCi0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi12b2lkIEZvckxvb3BVbnJvbGxNYXJrZXI6OnZpc2l0U3ltYm9sKFRJbnRl
cm1TeW1ib2wqIHN5bWJvbCkKLXsKLSAgICBpZiAoIW1WaXNpdFNhbXBsZXJBcnJheUluZGV4Tm9k
ZUluc2lkZUxvb3ApCi0gICAgICAgIHJldHVybjsKLSAgICBUSW50ZXJtTG9vcCAqbG9vcCA9IG1M
b29wU3RhY2suZmluZExvb3Aoc3ltYm9sKTsKLSAgICBpZiAobG9vcCkKLSAgICB7Ci0gICAgICAg
IHN3aXRjaCAoc3ltYm9sLT5nZXRCYXNpY1R5cGUoKSkKLSAgICAgICAgewotICAgICAgICAgIGNh
c2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICBtU2FtcGxlckFycmF5SW5kZXhJc0Zsb2F0TG9vcElu
ZGV4ID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgRWJ0SW50Ogot
ICAgICAgICAgICAgbG9vcC0+c2V0VW5yb2xsRmxhZyh0cnVlKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAg
ICB9Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvRm9yTG9vcFVucm9sbC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRm9yTG9vcFVucm9sbC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5YzQ5ZWNhZDMzZS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvRm9yTG9vcFVucm9sbC5oCisr
KyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMSBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpZm5kZWYgQ09N
UElMRVJfVFJBTlNMQVRPUl9GT1JMT09QVU5ST0xMX0hfCi0jZGVmaW5lIENPTVBJTEVSX1RSQU5T
TEFUT1JfRk9STE9PUFVOUk9MTF9IXwotCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9M
b29wSW5mby5oIgotCi0vLyBUaGlzIGNsYXNzIGRldGVjdHMgZm9yLWxvb3BzIHRoYXQgbmVlZHMg
dG8gYmUgdW5yb2xsZWQuCi0vLyBDdXJyZW50bHkgd2Ugc3VwcG9ydCB0d28gdW5yb2xsIGNvbmRp
dGlvbnM6Ci0vLyAgIDEpIGtGb3JMb29wV2l0aEludGVnZXJJbmRleDogdW5yb2xsIGlmIHRoZSBp
bmRleCB0eXBlIGlzIGludGVnZXIuCi0vLyAgIDIpIGtGb3JMb29wV2l0aFNhbXBsZXJBcnJheUlu
ZGV4OiB1bnJvbGwgd2hlcmUgYSBzYW1wbGVyIGFycmF5IGluZGV4Ci0vLyAgICAgIGlzIGFsc28g
dGhlIGxvb3AgaW50ZWdlciBpbmRleCwgYW5kIHJlamVjdCBhbmQgZmFpbCBhIGNvbXBpbGUKLS8v
ICAgICAgd2hlcmUgYSBzYW1wbGVyIGFycmF5IGluZGV4IGlzIGFsc28gdGhlIGxvb3AgZmxvYXQg
aW5kZXguCi1jbGFzcyBGb3JMb29wVW5yb2xsTWFya2VyIDogcHVibGljIFRJbnRlcm1UcmF2ZXJz
ZXIKLXsKLSAgcHVibGljOgotICAgIGVudW0gVW5yb2xsQ29uZGl0aW9uCi0gICAgewotICAgICAg
ICBrSW50ZWdlckluZGV4LAotICAgICAgICBrU2FtcGxlckFycmF5SW5kZXgKLSAgICB9OwotCi0g
ICAgRm9yTG9vcFVucm9sbE1hcmtlcihVbnJvbGxDb25kaXRpb24gY29uZGl0aW9uLCBib29sIGhh
c1J1bkxvb3BWYWxpZGF0aW9uKQotICAgICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFs
c2UsIGZhbHNlKSwKLSAgICAgICAgICBtVW5yb2xsQ29uZGl0aW9uKGNvbmRpdGlvbiksCi0gICAg
ICAgICAgbVNhbXBsZXJBcnJheUluZGV4SXNGbG9hdExvb3BJbmRleChmYWxzZSksCi0gICAgICAg
ICAgbVZpc2l0U2FtcGxlckFycmF5SW5kZXhOb2RlSW5zaWRlTG9vcChmYWxzZSksCi0gICAgICAg
ICAgbUhhc1J1bkxvb3BWYWxpZGF0aW9uKGhhc1J1bkxvb3BWYWxpZGF0aW9uKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBib29sIHZpc2l0QmluYXJ5KFZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2RlKSBv
dmVycmlkZTsKLSAgICBib29sIHZpc2l0TG9vcChWaXNpdCwgVEludGVybUxvb3AgKm5vZGUpIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkgb3ZlcnJp
ZGU7Ci0KLSAgICBib29sIHNhbXBsZXJBcnJheUluZGV4SXNGbG9hdExvb3BJbmRleCgpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gbVNhbXBsZXJBcnJheUluZGV4SXNGbG9hdExvb3BJbmRl
eDsKLSAgICB9Ci0KLSAgcHJpdmF0ZToKLSAgICBVbnJvbGxDb25kaXRpb24gbVVucm9sbENvbmRp
dGlvbjsKLSAgICBUTG9vcFN0YWNrIG1Mb29wU3RhY2s7Ci0gICAgYm9vbCBtU2FtcGxlckFycmF5
SW5kZXhJc0Zsb2F0TG9vcEluZGV4OwotICAgIGJvb2wgbVZpc2l0U2FtcGxlckFycmF5SW5kZXhO
b2RlSW5zaWRlTG9vcDsKLSAgICBib29sIG1IYXNSdW5Mb29wVmFsaWRhdGlvbjsKLX07Ci0KLSNl
bmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0ZPUkxPT1BVTlJPTExfSF8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5r
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0lu
Zm9TaW5rLmNwcAppbmRleCBjZDU5NjU4ZmY3Ni4uZGIyNmFhNjdlODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9J
bmZvU2luay5jcHAKQEAgLTYsMzIgKzYsMjcgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvSW5mb1NpbmsuaCIKIAotdm9pZCBUSW5mb1NpbmtCYXNlOjpwcmVmaXgoVFByZWZpeFR5
cGUgcCkgewotICAgIHN3aXRjaChwKSB7Ci0gICAgICAgIGNhc2UgRVByZWZpeE5vbmU6Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFUHJlZml4V2FybmluZzoKK25hbWVzcGFjZSBz
aAoreworCit2b2lkIFRJbmZvU2lua0Jhc2U6OnByZWZpeChTZXZlcml0eSBzZXZlcml0eSkKK3sK
KyAgICBzd2l0Y2ggKHNldmVyaXR5KQorICAgIHsKKyAgICAgICAgY2FzZSBTSF9XQVJOSU5HOgog
ICAgICAgICAgICAgc2luay5hcHBlbmQoIldBUk5JTkc6ICIpOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgRVByZWZpeEVycm9yOgorICAgICAgICBjYXNlIFNIX0VSUk9SOgogICAg
ICAgICAgICAgc2luay5hcHBlbmQoIkVSUk9SOiAiKTsKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEVQcmVmaXhJbnRlcm5hbEVycm9yOgotICAgICAgICAgICAgc2luay5hcHBlbmQo
IklOVEVSTkFMIEVSUk9SOiAiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVQ
cmVmaXhVbmltcGxlbWVudGVkOgotICAgICAgICAgICAgc2luay5hcHBlbmQoIlVOSU1QTEVNRU5U
RUQ6ICIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRVByZWZpeE5vdGU6Ci0g
ICAgICAgICAgICBzaW5rLmFwcGVuZCgiTk9URTogIik7Ci0gICAgICAgICAgICBicmVhazsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHNpbmsuYXBwZW5kKCJVTktPV04gRVJST1I6ICIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCi12b2lkIFRJbmZvU2lua0Jhc2U6Omxv
Y2F0aW9uKGludCBmaWxlLCBpbnQgbGluZSkgewordm9pZCBUSW5mb1NpbmtCYXNlOjpsb2NhdGlv
bihpbnQgZmlsZSwgaW50IGxpbmUpCit7CiAgICAgVFBlcnNpc3RTdHJpbmdTdHJlYW0gc3RyZWFt
OwogICAgIGlmIChsaW5lKQogICAgICAgICBzdHJlYW0gPDwgZmlsZSA8PCAiOiIgPDwgbGluZTsK
QEAgLTQyLDEzICszNyw0IEBAIHZvaWQgVEluZm9TaW5rQmFzZTo6bG9jYXRpb24oaW50IGZpbGUs
IGludCBsaW5lKSB7CiAgICAgc2luay5hcHBlbmQoc3RyZWFtLnN0cigpKTsKIH0KIAotdm9pZCBU
SW5mb1NpbmtCYXNlOjpsb2NhdGlvbihjb25zdCBUU291cmNlTG9jJiBsb2MpIHsKLSAgICBsb2Nh
dGlvbihsb2MuZmlyc3RfZmlsZSwgbG9jLmZpcnN0X2xpbmUpOwotfQotCi12b2lkIFRJbmZvU2lu
a0Jhc2U6Om1lc3NhZ2UoVFByZWZpeFR5cGUgcCwgY29uc3QgVFNvdXJjZUxvYyYgbG9jLCBjb25z
dCBjaGFyKiBtKSB7Ci0gICAgcHJlZml4KHApOwotICAgIGxvY2F0aW9uKGxvYyk7Ci0gICAgc2lu
ay5hcHBlbmQobSk7Ci0gICAgc2luay5hcHBlbmQoIlxuIik7Ci19Cit9ICAvLyBuYW1lc3BhY2Ug
c2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL0luZm9TaW5rLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9JbmZvU2luay5oCmluZGV4IGY0N2ZhZmE4ZWUxLi4yNzA1ZjQ4ZDU5OSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
SW5mb1NpbmsuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9JbmZvU2luay5oCkBAIC0xMCwzOCArMTAsMzIgQEAKICNpbmNsdWRlIDxtYXRoLmg+
CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Db21t
b24uaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1NldmVyaXR5LmgiCisKK25hbWVz
cGFjZSBzaAorewogCiAvLyBSZXR1cm5zIHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIGdpdmVu
IGZsb2F0aW5nLXBvaW50IG51bWJlci4KLWlubGluZSBmbG9hdCBmcmFjdGlvbmFsUGFydChmbG9h
dCBmKSB7Ci0gIGZsb2F0IGludFBhcnQgPSAwLjBmOwotICByZXR1cm4gbW9kZmYoZiwgJmludFBh
cnQpOworaW5saW5lIGZsb2F0IGZyYWN0aW9uYWxQYXJ0KGZsb2F0IGYpCit7CisgICAgZmxvYXQg
aW50UGFydCA9IDAuMGY7CisgICAgcmV0dXJuIG1vZGZmKGYsICZpbnRQYXJ0KTsKIH0KIAogLy8K
LS8vIFRQcmVmaXhUeXBlIGlzIHVzZWQgdG8gY2VudHJhbGl6ZSBob3cgaW5mbyBsb2cgbWVzc2Fn
ZXMgc3RhcnQuCi0vLyBTZWUgYmVsb3cuCi0vLwotZW51bSBUUHJlZml4VHlwZSB7Ci0gICAgRVBy
ZWZpeE5vbmUsCi0gICAgRVByZWZpeFdhcm5pbmcsCi0gICAgRVByZWZpeEVycm9yLAotICAgIEVQ
cmVmaXhJbnRlcm5hbEVycm9yLAotICAgIEVQcmVmaXhVbmltcGxlbWVudGVkLAotICAgIEVQcmVm
aXhOb3RlCi19OwotCi0vLwogLy8gRW5jYXBzdWxhdGUgaW5mbyBsb2dzIGZvciBhbGwgb2JqZWN0
cyB0aGF0IGhhdmUgdGhlbS4KIC8vCiAvLyBUaGUgbWV0aG9kcyBhcmUgYSBnZW5lcmFsIHNldCBv
ZiB0b29scyBmb3IgZ2V0dGluZyBhIHZhcmlldHkgb2YKIC8vIG1lc3NhZ2VzIGFuZCB0eXBlcyBp
bnNlcnRlZCBpbnRvIHRoZSBsb2cuCiAvLwotY2xhc3MgVEluZm9TaW5rQmFzZSB7Ci1wdWJsaWM6
CitjbGFzcyBUSW5mb1NpbmtCYXNlCit7CisgIHB1YmxpYzoKICAgICBUSW5mb1NpbmtCYXNlKCkg
e30KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIFRJbmZvU2lua0Jhc2UmIG9wZXJh
dG9yPDwoY29uc3QgVCYgdCkgeworICAgIFRJbmZvU2lua0Jhc2UgJm9wZXJhdG9yPDwoY29uc3Qg
VCAmdCkKKyAgICB7CiAgICAgICAgIFRQZXJzaXN0U3RyaW5nU3RyZWFtIHN0cmVhbTsKICAgICAg
ICAgc3RyZWFtIDw8IHQ7CiAgICAgICAgIHNpbmsuYXBwZW5kKHN0cmVhbS5zdHIoKSk7CkBAIC00
OSwzMyArNDMsNDEgQEAgcHVibGljOgogICAgIH0KICAgICAvLyBPdmVycmlkZSA8PCBvcGVyYXRv
ciBmb3Igc3BlY2lmaWMgdHlwZXMuIEl0IGlzIGZhc3RlciB0byBhcHBlbmQgc3RyaW5ncwogICAg
IC8vIGFuZCBjaGFyYWN0ZXJzIGRpcmVjdGx5IHRvIHRoZSBzaW5rLgotICAgIFRJbmZvU2lua0Jh
c2UmIG9wZXJhdG9yPDwoY2hhciBjKSB7CisgICAgVEluZm9TaW5rQmFzZSAmb3BlcmF0b3I8PChj
aGFyIGMpCisgICAgewogICAgICAgICBzaW5rLmFwcGVuZCgxLCBjKTsKICAgICAgICAgcmV0dXJu
ICp0aGlzOwogICAgIH0KLSAgICBUSW5mb1NpbmtCYXNlJiBvcGVyYXRvcjw8KGNvbnN0IGNoYXIq
IHN0cikgeworICAgIFRJbmZvU2lua0Jhc2UgJm9wZXJhdG9yPDwoY29uc3QgY2hhciAqc3RyKQor
ICAgIHsKICAgICAgICAgc2luay5hcHBlbmQoc3RyKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwog
ICAgIH0KLSAgICBUSW5mb1NpbmtCYXNlJiBvcGVyYXRvcjw8KGNvbnN0IFRQZXJzaXN0U3RyaW5n
JiBzdHIpIHsKKyAgICBUSW5mb1NpbmtCYXNlICZvcGVyYXRvcjw8KGNvbnN0IFRQZXJzaXN0U3Ry
aW5nICZzdHIpCisgICAgewogICAgICAgICBzaW5rLmFwcGVuZChzdHIpOwogICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgfQotICAgIFRJbmZvU2lua0Jhc2UmIG9wZXJhdG9yPDwoY29uc3QgVFN0
cmluZyYgc3RyKSB7CisgICAgVEluZm9TaW5rQmFzZSAmb3BlcmF0b3I8PChjb25zdCBUU3RyaW5n
ICZzdHIpCisgICAgewogICAgICAgICBzaW5rLmFwcGVuZChzdHIuY19zdHIoKSk7CiAgICAgICAg
IHJldHVybiAqdGhpczsKICAgICB9CiAgICAgLy8gTWFrZSBzdXJlIGZsb2F0cyBhcmUgd3JpdHRl
biB3aXRoIGNvcnJlY3QgcHJlY2lzaW9uLgotICAgIFRJbmZvU2lua0Jhc2UmIG9wZXJhdG9yPDwo
ZmxvYXQgZikgeworICAgIFRJbmZvU2lua0Jhc2UgJm9wZXJhdG9yPDwoZmxvYXQgZikKKyAgICB7
CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGF0IGxlYXN0IG9uZSBkZWNpbWFsIHBvaW50IGlz
IHdyaXR0ZW4uIElmIGEgbnVtYmVyCiAgICAgICAgIC8vIGRvZXMgbm90IGhhdmUgYSBmcmFjdGlv
bmFsIHBhcnQsIHRoZSBkZWZhdWx0IHByZWNpc2lvbiBmb3JtYXQgZG9lcwogICAgICAgICAvLyBu
b3Qgd3JpdGUgdGhlIGRlY2ltYWwgcG9ydGlvbiB3aGljaCBnZXRzIGludGVycHJldGVkIGFzIGlu
dGVnZXIgYnkKICAgICAgICAgLy8gdGhlIGNvbXBpbGVyLgogICAgICAgICBUUGVyc2lzdFN0cmlu
Z1N0cmVhbSBzdHJlYW07Ci0gICAgICAgIGlmIChmcmFjdGlvbmFsUGFydChmKSA9PSAwLjBmKSB7
CisgICAgICAgIGlmIChmcmFjdGlvbmFsUGFydChmKSA9PSAwLjBmKQorICAgICAgICB7CiAgICAg
ICAgICAgICBzdHJlYW0ucHJlY2lzaW9uKDEpOwogICAgICAgICAgICAgc3RyZWFtIDw8IHN0ZDo6
c2hvd3BvaW50IDw8IHN0ZDo6Zml4ZWQgPDwgZjsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKICAgICAgICAgICAgIHN0cmVhbS51bnNldGYoc3Rk
Ojppb3M6OmZpeGVkKTsKICAgICAgICAgICAgIHN0cmVhbS51bnNldGYoc3RkOjppb3M6OnNjaWVu
dGlmaWMpOwogICAgICAgICAgICAgc3RyZWFtLnByZWNpc2lvbig4KTsKQEAgLTg1LDggKzg3LDkg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogICAgIC8vIFdyaXRlIGJv
b2xlYW4gdmFsdWVzIGFzIHRoZWlyIG5hbWVzIGluc3RlYWQgb2YgaW50ZWdyYWwgdmFsdWUuCi0g
ICAgVEluZm9TaW5rQmFzZSYgb3BlcmF0b3I8PChib29sIGIpIHsKLSAgICAgICAgY29uc3QgY2hh
ciogc3RyID0gYiA/ICJ0cnVlIiA6ICJmYWxzZSI7CisgICAgVEluZm9TaW5rQmFzZSAmb3BlcmF0
b3I8PChib29sIGIpCisgICAgeworICAgICAgICBjb25zdCBjaGFyICpzdHIgPSBiID8gInRydWUi
IDogImZhbHNlIjsKICAgICAgICAgc2luay5hcHBlbmQoc3RyKTsKICAgICAgICAgcmV0dXJuICp0
aGlzOwogICAgIH0KQEAgLTk0LDIzICs5NywyNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBlcmFzZSgp
IHsgc2luay5jbGVhcigpOyB9CiAgICAgaW50IHNpemUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KHNpbmsuc2l6ZSgpKTsgfQogCi0gICAgY29uc3QgVFBlcnNpc3RTdHJpbmcmIHN0cigpIGNv
bnN0IHsgcmV0dXJuIHNpbms7IH0KLSAgICBjb25zdCBjaGFyKiBjX3N0cigpIGNvbnN0IHsgcmV0
dXJuIHNpbmsuY19zdHIoKTsgfQorICAgIGNvbnN0IFRQZXJzaXN0U3RyaW5nICZzdHIoKSBjb25z
dCB7IHJldHVybiBzaW5rOyB9CisgICAgY29uc3QgY2hhciAqY19zdHIoKSBjb25zdCB7IHJldHVy
biBzaW5rLmNfc3RyKCk7IH0KIAotICAgIHZvaWQgcHJlZml4KFRQcmVmaXhUeXBlIHApOworICAg
IHZvaWQgcHJlZml4KFNldmVyaXR5IHNldmVyaXR5KTsKICAgICB2b2lkIGxvY2F0aW9uKGludCBm
aWxlLCBpbnQgbGluZSk7Ci0gICAgdm9pZCBsb2NhdGlvbihjb25zdCBUU291cmNlTG9jJiBsb2Mp
OwotICAgIHZvaWQgbWVzc2FnZShUUHJlZml4VHlwZSBwLCBjb25zdCBUU291cmNlTG9jJiBsb2Ms
IGNvbnN0IGNoYXIqIG0pOwogCi1wcml2YXRlOgorICBwcml2YXRlOgogICAgIFRQZXJzaXN0U3Ry
aW5nIHNpbms7CiB9OwogCi1jbGFzcyBUSW5mb1NpbmsgewotcHVibGljOgorY2xhc3MgVEluZm9T
aW5rCit7CisgIHB1YmxpYzoKICAgICBUSW5mb1NpbmtCYXNlIGluZm87CiAgICAgVEluZm9TaW5r
QmFzZSBkZWJ1ZzsKICAgICBUSW5mb1NpbmtCYXNlIG9iajsKIH07CiAKLSNlbmRpZiAvLyBDT01Q
SUxFUl9UUkFOU0xBVE9SX0lORk9TSU5LX0hfCit9ICAvLyBuYW1lc3BhY2Ugc2gKKworI2VuZGlm
ICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0lORk9TSU5LX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxp
emUuY3BwCmluZGV4IDc1OTgzNGY4NTc1Li5lZGM1MGI4OTljNSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZS5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5p
dGlhbGl6ZS5jcHAKQEAgLTYsNyArNiw3IEBACiAKIC8vCiAvLyBDcmVhdGUgc3ltYm9scyB0aGF0
IGRlY2xhcmUgYnVpbHQtaW4gZGVmaW5pdGlvbnMsIGFkZCBidWlsdC1pbnMgdGhhdAotLy8gY2Fu
bm90IGJlIGV4cHJlc3NlZCBpbiB0aGUgZmlsZXMsIGFuZCBlc3RhYmxpc2ggbWFwcGluZ3MgYmV0
d2VlbiAKKy8vIGNhbm5vdCBiZSBleHByZXNzZWQgaW4gdGhlIGZpbGVzLCBhbmQgZXN0YWJsaXNo
IG1hcHBpbmdzIGJldHdlZW4KIC8vIGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgb3BlcmF0b3JzLgog
Ly8KIApAQCAtMTYsMTggKzE2LDI1IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9J
bnRlcm1Ob2RlLmgiCiAjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKIAotdm9pZCBJbnNlcnRCdWlsdElu
RnVuY3Rpb25zKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIGNvbnN0IFNoQnVp
bHRJblJlc291cmNlcyAmcmVzb3VyY2VzLCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlKQorbmFt
ZXNwYWNlIHNoCiB7Ci0gICAgY29uc3QgVFR5cGUgKmZsb2F0MSA9IFRDYWNoZTo6Z2V0VHlwZShF
YnRGbG9hdCk7Ci0gICAgY29uc3QgVFR5cGUgKmZsb2F0MiA9IFRDYWNoZTo6Z2V0VHlwZShFYnRG
bG9hdCwgMik7Ci0gICAgY29uc3QgVFR5cGUgKmZsb2F0MyA9IFRDYWNoZTo6Z2V0VHlwZShFYnRG
bG9hdCwgMyk7Ci0gICAgY29uc3QgVFR5cGUgKmZsb2F0NCA9IFRDYWNoZTo6Z2V0VHlwZShFYnRG
bG9hdCwgNCk7Ci0gICAgY29uc3QgVFR5cGUgKmludDEgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0SW50
KTsKLSAgICBjb25zdCBUVHlwZSAqaW50MiA9IFRDYWNoZTo6Z2V0VHlwZShFYnRJbnQsIDIpOwot
ICAgIGNvbnN0IFRUeXBlICppbnQzID0gVENhY2hlOjpnZXRUeXBlKEVidEludCwgMyk7Ci0gICAg
Y29uc3QgVFR5cGUgKnVpbnQxID0gVENhY2hlOjpnZXRUeXBlKEVidFVJbnQpOwotICAgIGNvbnN0
IFRUeXBlICpib29sMSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRCb29sKTsKLSAgICBjb25zdCBUVHlw
ZSAqZ2VuVHlwZSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRHZW5UeXBlKTsKKwordm9pZCBJbnNlcnRC
dWlsdEluRnVuY3Rpb25zKHNoOjpHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTaFNoYWRlclNwZWMgc3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTaEJ1aWx0SW5SZXNvdXJjZXMgJnJlc291cmNlcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlKQoreworICAgIGNvbnN0IFRUeXBlICp2b2lk
VHlwZSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRWb2lkKTsKKyAgICBjb25zdCBUVHlwZSAqZmxvYXQx
ICAgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQpOworICAgIGNvbnN0IFRUeXBlICpmbG9hdDIg
ICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgMik7CisgICAgY29uc3QgVFR5cGUgKmZsb2F0
MyAgID0gVENhY2hlOjpnZXRUeXBlKEVidEZsb2F0LCAzKTsKKyAgICBjb25zdCBUVHlwZSAqZmxv
YXQ0ICAgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIDQpOworICAgIGNvbnN0IFRUeXBlICpp
bnQxICAgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRJbnQpOworICAgIGNvbnN0IFRUeXBlICppbnQy
ICAgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRJbnQsIDIpOworICAgIGNvbnN0IFRUeXBlICppbnQz
ICAgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRJbnQsIDMpOworICAgIGNvbnN0IFRUeXBlICp1aW50
MSAgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRVSW50KTsKKyAgICBjb25zdCBUVHlwZSAqYm9vbDEg
ICAgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0Qm9vbCk7CisgICAgY29uc3QgVFR5cGUgKmdlblR5cGUg
ID0gVENhY2hlOjpnZXRUeXBlKEVidEdlblR5cGUpOwogICAgIGNvbnN0IFRUeXBlICpnZW5JVHlw
ZSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRHZW5JVHlwZSk7CiAgICAgY29uc3QgVFR5cGUgKmdlblVU
eXBlID0gVENhY2hlOjpnZXRUeXBlKEVidEdlblVUeXBlKTsKICAgICBjb25zdCBUVHlwZSAqZ2Vu
QlR5cGUgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0R2VuQlR5cGUpOwpAQCAtMzUsMTEzICs0MiwxMTcg
QEAgdm9pZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25zKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJT
cGVjIHNwZWMsIGNvbnN0IFNoQnVpbHRJblIKICAgICAvLwogICAgIC8vIEFuZ2xlIGFuZCBUcmln
b25vbWV0cmljIEZ1bmN0aW9ucy4KICAgICAvLwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BSYWRpYW5zLCBnZW5UeXBlLCAicmFkaWFucyIsIGdlblR5
cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BE
ZWdyZWVzLCBnZW5UeXBlLCAiZGVncmVlcyIsIGdlblR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BTaW4sIGdlblR5cGUsICJzaW4iLCBnZW5U
eXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9w
Q29zLCBnZW5UeXBlLCAiY29zIiwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihDT01NT05fQlVJTFRJTlMsIEVPcFRhbiwgZ2VuVHlwZSwgInRhbiIsIGdlblR5cGUpOwot
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BBc2luLCBn
ZW5UeXBlLCAiYXNpbiIsIGdlblR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
Q09NTU9OX0JVSUxUSU5TLCBFT3BBY29zLCBnZW5UeXBlLCAiYWNvcyIsIGdlblR5cGUpOwotICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BBdGFuLCBnZW5U
eXBlLCAiYXRhbiIsIGdlblR5cGUsIGdlblR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BBdGFuLCBnZW5UeXBlLCAiYXRhbiIsIGdlblR5cGUp
OwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcFNpbmgs
IGdlblR5cGUsICJzaW5oIiwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihFU1NMM19CVUlMVElOUywgRU9wQ29zaCwgZ2VuVHlwZSwgImNvc2giLCBnZW5UeXBlKTsKLSAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BUYW5oLCBnZW5U
eXBlLCAidGFuaCIsIGdlblR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNT
TDNfQlVJTFRJTlMsIEVPcEFzaW5oLCBnZW5UeXBlLCAiYXNpbmgiLCBnZW5UeXBlKTsKLSAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BBY29zaCwgZ2VuVHlw
ZSwgImFjb3NoIiwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NM
M19CVUlMVElOUywgRU9wQXRhbmgsIGdlblR5cGUsICJhdGFuaCIsIGdlblR5cGUpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcFJhZGlhbnMsIGdl
blR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05f
QlVJTFRJTlMsIEVPcERlZ3JlZXMsIGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcFNpbiwgZ2VuVHlwZSwgZ2VuVHlw
ZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9w
Q29zLCBnZW5UeXBlLCBnZW5UeXBlKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3Ao
Q09NTU9OX0JVSUxUSU5TLCBFT3BUYW4sIGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcEFzaW4sIGdlblR5cGUsIGdl
blR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMs
IEVPcEFjb3MsIGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcEF0YW4sIGdlblR5cGUsIGdlblR5cGUsIGdlblR5cGUp
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcEF0
YW4sIGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChF
U1NMM19CVUlMVElOUywgRU9wU2luaCwgZ2VuVHlwZSwgZ2VuVHlwZSk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BDb3NoLCBnZW5UeXBlLCBnZW5U
eXBlKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVP
cFRhbmgsIGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5P
cChFU1NMM19CVUlMVElOUywgRU9wQXNpbmgsIGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wQWNvc2gsIGdlblR5cGUs
IGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElO
UywgRU9wQXRhbmgsIGdlblR5cGUsIGdlblR5cGUpOwogCiAgICAgLy8KICAgICAvLyBFeHBvbmVu
dGlhbCBGdW5jdGlvbnMuCiAgICAgLy8KLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENP
TU1PTl9CVUlMVElOUywgRU9wUG93LCBnZW5UeXBlLCAicG93IiwgZ2VuVHlwZSwgZ2VuVHlwZSk7
Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcEV4cCwg
Z2VuVHlwZSwgImV4cCIsIGdlblR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
Q09NTU9OX0JVSUxUSU5TLCBFT3BMb2csIGdlblR5cGUsICJsb2ciLCBnZW5UeXBlKTsKLSAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9wRXhwMiwgZ2VuVHlw
ZSwgImV4cDIiLCBnZW5UeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1P
Tl9CVUlMVElOUywgRU9wTG9nMiwgZ2VuVHlwZSwgImxvZzIiLCBnZW5UeXBlKTsKLSAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9wU3FydCwgZ2VuVHlwZSwg
InNxcnQiLCBnZW5UeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9C
VUlMVElOUywgRU9wSW52ZXJzZVNxcnQsIGdlblR5cGUsICJpbnZlcnNlc3FydCIsIGdlblR5cGUp
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcFBv
dywgZ2VuVHlwZSwgZ2VuVHlwZSwgZ2VuVHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9wRXhwLCBnZW5UeXBlLCBnZW5UeXBlKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BMb2csIGdlblR5
cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJ
TFRJTlMsIEVPcEV4cDIsIGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcExvZzIsIGdlblR5cGUsIGdlblR5cGUpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcFNxcnQs
IGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01N
T05fQlVJTFRJTlMsIEVPcEludmVyc2VTcXJ0LCBnZW5UeXBlLCBnZW5UeXBlKTsKIAogICAgIC8v
CiAgICAgLy8gQ29tbW9uIEZ1bmN0aW9ucy4KICAgICAvLwotICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BBYnMsIGdlblR5cGUsICJhYnMiLCBnZW5UeXBl
KTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BBYnMs
IGdlbklUeXBlLCAiYWJzIiwgZ2VuSVR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BTaWduLCBnZW5UeXBlLCAic2lnbiIsIGdlblR5cGUpOwot
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcFNpZ24sIGdl
bklUeXBlLCAic2lnbiIsIGdlbklUeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KENPTU1PTl9CVUlMVElOUywgRU9wRmxvb3IsIGdlblR5cGUsICJmbG9vciIsIGdlblR5cGUpOwot
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcFRydW5jLCBn
ZW5UeXBlLCAidHJ1bmMiLCBnZW5UeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KEVTU0wzX0JVSUxUSU5TLCBFT3BSb3VuZCwgZ2VuVHlwZSwgInJvdW5kIiwgZ2VuVHlwZSk7Ci0g
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wUm91bmRFdmVu
LCBnZW5UeXBlLCAicm91bmRFdmVuIiwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcENlaWwsIGdlblR5cGUsICJjZWlsIiwgZ2VuVHlw
ZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcEZy
YWN0LCBnZW5UeXBlLCAiZnJhY3QiLCBnZW5UeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9wTW9kLCBnZW5UeXBlLCAibW9kIiwgZ2VuVHlwZSwg
ZmxvYXQxKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywg
RU9wTW9kLCBnZW5UeXBlLCAibW9kIiwgZ2VuVHlwZSwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcE1pbiwgZ2VuVHlwZSwgIm1pbiIs
IGdlblR5cGUsIGZsb2F0MSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05f
QlVJTFRJTlMsIEVPcE1pbiwgZ2VuVHlwZSwgIm1pbiIsIGdlblR5cGUsIGdlblR5cGUpOwotICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcE1pbiwgZ2VuSVR5
cGUsICJtaW4iLCBnZW5JVHlwZSwgZ2VuSVR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcE1pbiwgZ2VuSVR5cGUsICJtaW4iLCBnZW5JVHlwZSwg
aW50MSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9w
TWluLCBnZW5VVHlwZSwgIm1pbiIsIGdlblVUeXBlLCBnZW5VVHlwZSk7Ci0gICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wTWluLCBnZW5VVHlwZSwgIm1pbiIs
IGdlblVUeXBlLCB1aW50MSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05f
QlVJTFRJTlMsIEVPcE1heCwgZ2VuVHlwZSwgIm1heCIsIGdlblR5cGUsIGZsb2F0MSk7Ci0gICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcE1heCwgZ2VuVHlw
ZSwgIm1heCIsIGdlblR5cGUsIGdlblR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oRVNTTDNfQlVJTFRJTlMsIEVPcE1heCwgZ2VuSVR5cGUsICJtYXgiLCBnZW5JVHlwZSwgZ2Vu
SVR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVP
cE1heCwgZ2VuSVR5cGUsICJtYXgiLCBnZW5JVHlwZSwgaW50MSk7Ci0gICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wTWF4LCBnZW5VVHlwZSwgIm1heCIsIGdl
blVUeXBlLCBnZW5VVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19C
VUlMVElOUywgRU9wTWF4LCBnZW5VVHlwZSwgIm1heCIsIGdlblVUeXBlLCB1aW50MSk7Ci0gICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcENsYW1wLCBnZW5U
eXBlLCAiY2xhbXAiLCBnZW5UeXBlLCBmbG9hdDEsIGZsb2F0MSk7Ci0gICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcENsYW1wLCBnZW5UeXBlLCAiY2xhbXAi
LCBnZW5UeXBlLCBnZW5UeXBlLCBnZW5UeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKEVTU0wzX0JVSUxUSU5TLCBFT3BDbGFtcCwgZ2VuSVR5cGUsICJjbGFtcCIsIGdlbklUeXBl
LCBpbnQxLCBpbnQxKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxU
SU5TLCBFT3BDbGFtcCwgZ2VuSVR5cGUsICJjbGFtcCIsIGdlbklUeXBlLCBnZW5JVHlwZSwgZ2Vu
SVR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVP
cENsYW1wLCBnZW5VVHlwZSwgImNsYW1wIiwgZ2VuVVR5cGUsIHVpbnQxLCB1aW50MSk7Ci0gICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wQ2xhbXAsIGdlblVU
eXBlLCAiY2xhbXAiLCBnZW5VVHlwZSwgZ2VuVVR5cGUsIGdlblVUeXBlKTsKLSAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9wTWl4LCBnZW5UeXBlLCAibWl4
IiwgZ2VuVHlwZSwgZ2VuVHlwZSwgZmxvYXQxKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKENPTU1PTl9CVUlMVElOUywgRU9wTWl4LCBnZW5UeXBlLCAibWl4IiwgZ2VuVHlwZSwgZ2Vu
VHlwZSwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlM
VElOUywgRU9wTWl4LCBnZW5UeXBlLCAibWl4IiwgZ2VuVHlwZSwgZ2VuVHlwZSwgZ2VuQlR5cGUp
OwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BTdGVw
LCBnZW5UeXBlLCAic3RlcCIsIGdlblR5cGUsIGdlblR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BTdGVwLCBnZW5UeXBlLCAic3RlcCIsIGZs
b2F0MSwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJ
TFRJTlMsIEVPcFNtb290aFN0ZXAsIGdlblR5cGUsICJzbW9vdGhzdGVwIiwgZ2VuVHlwZSwgZ2Vu
VHlwZSwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJ
TFRJTlMsIEVPcFNtb290aFN0ZXAsIGdlblR5cGUsICJzbW9vdGhzdGVwIiwgZmxvYXQxLCBmbG9h
dDEsIGdlblR5cGUpOwotCi0gICAgY29uc3QgVFR5cGUgKm91dEZsb2F0MSA9IFRDYWNoZTo6Z2V0
VHlwZShFYnRGbG9hdCwgRXZxT3V0KTsKLSAgICBjb25zdCBUVHlwZSAqb3V0RmxvYXQyID0gVENh
Y2hlOjpnZXRUeXBlKEVidEZsb2F0LCBFdnFPdXQsIDIpOwotICAgIGNvbnN0IFRUeXBlICpvdXRG
bG9hdDMgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIEV2cU91dCwgMyk7Ci0gICAgY29uc3Qg
VFR5cGUgKm91dEZsb2F0NCA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgRXZxT3V0LCA0KTsK
LQotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcE1vZGYs
IGZsb2F0MSwgIm1vZGYiLCBmbG9hdDEsIG91dEZsb2F0MSk7Ci0gICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wTW9kZiwgZmxvYXQyLCAibW9kZiIsIGZsb2F0
Miwgb3V0RmxvYXQyKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxU
SU5TLCBFT3BNb2RmLCBmbG9hdDMsICJtb2RmIiwgZmxvYXQzLCBvdXRGbG9hdDMpOwotICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcE1vZGYsIGZsb2F0NCwg
Im1vZGYiLCBmbG9hdDQsIG91dEZsb2F0NCk7Ci0KLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKEVTU0wzX0JVSUxUSU5TLCBFT3BJc05hbiwgZ2VuQlR5cGUsICJpc25hbiIsIGdlblR5cGUp
OwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcElzSW5m
LCBnZW5CVHlwZSwgImlzaW5mIiwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihFU1NMM19CVUlMVElOUywgRU9wRmxvYXRCaXRzVG9JbnQsIGdlbklUeXBlLCAiZmxvYXRC
aXRzVG9JbnQiLCBnZW5UeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wz
X0JVSUxUSU5TLCBFT3BGbG9hdEJpdHNUb1VpbnQsIGdlblVUeXBlLCAiZmxvYXRCaXRzVG9VaW50
IiwgZ2VuVHlwZSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElO
UywgRU9wSW50Qml0c1RvRmxvYXQsIGdlblR5cGUsICJpbnRCaXRzVG9GbG9hdCIsIGdlbklUeXBl
KTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BVaW50
Qml0c1RvRmxvYXQsIGdlblR5cGUsICJ1aW50Qml0c1RvRmxvYXQiLCBnZW5VVHlwZSk7Ci0KLSAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BQYWNrU25vcm0y
eDE2LCB1aW50MSwgInBhY2tTbm9ybTJ4MTYiLCBmbG9hdDIpOwotICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcFBhY2tVbm9ybTJ4MTYsIHVpbnQxLCAicGFj
a1Vub3JtMngxNiIsIGZsb2F0Mik7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NM
M19CVUlMVElOUywgRU9wUGFja0hhbGYyeDE2LCB1aW50MSwgInBhY2tIYWxmMngxNiIsIGZsb2F0
Mik7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wVW5w
YWNrU25vcm0yeDE2LCBmbG9hdDIsICJ1bnBhY2tTbm9ybTJ4MTYiLCB1aW50MSk7Ci0gICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wVW5wYWNrVW5vcm0yeDE2
LCBmbG9hdDIsICJ1bnBhY2tVbm9ybTJ4MTYiLCB1aW50MSk7Ci0gICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wVW5wYWNrSGFsZjJ4MTYsIGZsb2F0MiwgInVu
cGFja0hhbGYyeDE2IiwgdWludDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChD
T01NT05fQlVJTFRJTlMsIEVPcEFicywgZ2VuVHlwZSwgZ2VuVHlwZSk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BBYnMsIGdlbklUeXBlLCBnZW5J
VHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywg
RU9wU2lnbiwgZ2VuVHlwZSwgZ2VuVHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BTaWduLCBnZW5JVHlwZSwgZ2VuSVR5cGUpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcEZsb29yLCBnZW5U
eXBlLCBnZW5UeXBlKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJ
TFRJTlMsIEVPcFRydW5jLCBnZW5UeXBlLCBnZW5UeXBlKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcFJvdW5kLCBnZW5UeXBlLCBnZW5UeXBlKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcFJvdW5k
RXZlbiwgZ2VuVHlwZSwgZ2VuVHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9w
KENPTU1PTl9CVUlMVElOUywgRU9wQ2VpbCwgZ2VuVHlwZSwgZ2VuVHlwZSk7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9wRnJhY3QsIGdlblR5cGUs
IGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJ
TlMsIEVPcE1vZCwgZ2VuVHlwZSwgZ2VuVHlwZSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BNb2QsIGdlblR5cGUsIGdlblR5cGUs
IGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJ
TlMsIEVPcE1pbiwgZ2VuVHlwZSwgZ2VuVHlwZSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BNaW4sIGdlblR5cGUsIGdlblR5cGUs
IGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElO
UywgRU9wTWluLCBnZW5JVHlwZSwgZ2VuSVR5cGUsIGdlbklUeXBlKTsKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcE1pbiwgZ2VuSVR5cGUsIGdlbklU
eXBlLCBpbnQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJ
TlMsIEVPcE1pbiwgZ2VuVVR5cGUsIGdlblVUeXBlLCBnZW5VVHlwZSk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BNaW4sIGdlblVUeXBlLCBnZW5V
VHlwZSwgdWludDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJ
TFRJTlMsIEVPcE1heCwgZ2VuVHlwZSwgZ2VuVHlwZSwgZmxvYXQxKTsKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BNYXgsIGdlblR5cGUsIGdlblR5
cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlM
VElOUywgRU9wTWF4LCBnZW5JVHlwZSwgZ2VuSVR5cGUsIGdlbklUeXBlKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcE1heCwgZ2VuSVR5cGUsIGdl
bklUeXBlLCBpbnQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJ
TFRJTlMsIEVPcE1heCwgZ2VuVVR5cGUsIGdlblVUeXBlLCBnZW5VVHlwZSk7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BNYXgsIGdlblVUeXBlLCBn
ZW5VVHlwZSwgdWludDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05f
QlVJTFRJTlMsIEVPcENsYW1wLCBnZW5UeXBlLCBnZW5UeXBlLCBmbG9hdDEsIGZsb2F0MSk7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9wQ2xhbXAs
IGdlblR5cGUsIGdlblR5cGUsIGdlblR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wQ2xhbXAsIGdlbklUeXBlLCBnZW5JVHlw
ZSwgaW50MSwgaW50MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JV
SUxUSU5TLCBFT3BDbGFtcCwgZ2VuSVR5cGUsIGdlbklUeXBlLCBnZW5JVHlwZSwgZ2VuSVR5cGUp
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wQ2xh
bXAsIGdlblVUeXBlLCBnZW5VVHlwZSwgdWludDEsIHVpbnQxKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcENsYW1wLCBnZW5VVHlwZSwgZ2VuVVR5
cGUsIGdlblVUeXBlLCBnZW5VVHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9w
KENPTU1PTl9CVUlMVElOUywgRU9wTWl4LCBnZW5UeXBlLCBnZW5UeXBlLCBnZW5UeXBlLCBmbG9h
dDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVP
cE1peCwgZ2VuVHlwZSwgZ2VuVHlwZSwgZ2VuVHlwZSwgZ2VuVHlwZSk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BNaXgsIGdlblR5cGUsIGdlblR5
cGUsIGdlblR5cGUsIGdlbkJUeXBlKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3Ao
Q09NTU9OX0JVSUxUSU5TLCBFT3BTdGVwLCBnZW5UeXBlLCBnZW5UeXBlLCBnZW5UeXBlKTsKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BTdGVwLCBn
ZW5UeXBlLCBmbG9hdDEsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5P
cChDT01NT05fQlVJTFRJTlMsIEVPcFNtb290aFN0ZXAsIGdlblR5cGUsIGdlblR5cGUsIGdlblR5
cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJ
TFRJTlMsIEVPcFNtb290aFN0ZXAsIGdlblR5cGUsIGZsb2F0MSwgZmxvYXQxLCBnZW5UeXBlKTsK
KworICAgIGNvbnN0IFRUeXBlICpvdXRHZW5UeXBlID0gVENhY2hlOjpnZXRUeXBlKEVidEdlblR5
cGUsIEV2cU91dCk7CisgICAgY29uc3QgVFR5cGUgKm91dEdlbklUeXBlID0gVENhY2hlOjpnZXRU
eXBlKEVidEdlbklUeXBlLCBFdnFPdXQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BNb2RmLCBnZW5UeXBlLCBnZW5UeXBlLCBvdXRHZW5UeXBl
KTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9w
SXNOYW4sIGdlbkJUeXBlLCBnZW5UeXBlKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
T3AoRVNTTDNfQlVJTFRJTlMsIEVPcElzSW5mLCBnZW5CVHlwZSwgZ2VuVHlwZSk7CisgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BGbG9hdEJpdHNUb0lu
dCwgZ2VuSVR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChF
U1NMM19CVUlMVElOUywgRU9wRmxvYXRCaXRzVG9VaW50LCBnZW5VVHlwZSwgZ2VuVHlwZSk7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BJbnRCaXRz
VG9GbG9hdCwgZ2VuVHlwZSwgZ2VuSVR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW5PcChFU1NMM19CVUlMVElOUywgRU9wVWludEJpdHNUb0Zsb2F0LCBnZW5UeXBlLCBnZW5VVHlw
ZSk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfMV9CVUlMVElOUywg
RU9wRnJleHAsIGdlblR5cGUsIGdlblR5cGUsIG91dEdlbklUeXBlKTsKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfMV9CVUlMVElOUywgRU9wTGRleHAsIGdlblR5cGUsIGdl
blR5cGUsIGdlbklUeXBlKTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NM
M19CVUlMVElOUywgRU9wUGFja1Nub3JtMngxNiwgdWludDEsIGZsb2F0Mik7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BQYWNrVW5vcm0yeDE2LCB1
aW50MSwgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJ
TFRJTlMsIEVPcFBhY2tIYWxmMngxNiwgdWludDEsIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BVbnBhY2tTbm9ybTJ4MTYsIGZsb2F0
MiwgdWludDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElO
UywgRU9wVW5wYWNrVW5vcm0yeDE2LCBmbG9hdDIsIHVpbnQxKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcFVucGFja0hhbGYyeDE2LCBmbG9hdDIs
IHVpbnQxKTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM18xX0JVSUxU
SU5TLCBFT3BQYWNrVW5vcm00eDgsIHVpbnQxLCBmbG9hdDQpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW5PcChFU1NMM18xX0JVSUxUSU5TLCBFT3BQYWNrU25vcm00eDgsIHVpbnQxLCBm
bG9hdDQpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM18xX0JVSUxUSU5T
LCBFT3BVbnBhY2tVbm9ybTR4OCwgZmxvYXQ0LCB1aW50MSk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbk9wKEVTU0wzXzFfQlVJTFRJTlMsIEVPcFVucGFja1Nub3JtNHg4LCBmbG9hdDQs
IHVpbnQxKTsKIAogICAgIC8vCiAgICAgLy8gR2VvbWV0cmljIEZ1bmN0aW9ucy4KICAgICAvLwot
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BMZW5ndGgs
IGZsb2F0MSwgImxlbmd0aCIsIGdlblR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BEaXN0YW5jZSwgZmxvYXQxLCAiZGlzdGFuY2UiLCBnZW5U
eXBlLCBnZW5UeXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlM
VElOUywgRU9wRG90LCBmbG9hdDEsICJkb3QiLCBnZW5UeXBlLCBnZW5UeXBlKTsKLSAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9wQ3Jvc3MsIGZsb2F0Mywg
ImNyb3NzIiwgZmxvYXQzLCBmbG9hdDMpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
Q09NTU9OX0JVSUxUSU5TLCBFT3BOb3JtYWxpemUsIGdlblR5cGUsICJub3JtYWxpemUiLCBnZW5U
eXBlKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9w
RmFjZUZvcndhcmQsIGdlblR5cGUsICJmYWNlZm9yd2FyZCIsIGdlblR5cGUsIGdlblR5cGUsIGdl
blR5cGUpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBF
T3BSZWZsZWN0LCBnZW5UeXBlLCAicmVmbGVjdCIsIGdlblR5cGUsIGdlblR5cGUpOwotICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BSZWZyYWN0LCBnZW5U
eXBlLCAicmVmcmFjdCIsIGdlblR5cGUsIGdlblR5cGUsIGZsb2F0MSk7Ci0KLSAgICBjb25zdCBU
VHlwZSAqbWF0MiA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgMiwgMik7Ci0gICAgY29uc3Qg
VFR5cGUgKm1hdDMgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIDMsIDMpOwotICAgIGNvbnN0
IFRUeXBlICptYXQ0ID0gVENhY2hlOjpnZXRUeXBlKEVidEZsb2F0LCA0LCA0KTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BMZW5ndGgsIGZsb2F0
MSwgZ2VuVHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlM
VElOUywgRU9wRGlzdGFuY2UsIGZsb2F0MSwgZ2VuVHlwZSwgZ2VuVHlwZSk7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9wRG90LCBmbG9hdDEsIGdl
blR5cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05f
QlVJTFRJTlMsIEVPcENyb3NzLCBmbG9hdDMsIGZsb2F0MywgZmxvYXQzKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BOb3JtYWxpemUsIGdlblR5
cGUsIGdlblR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJ
TFRJTlMsIEVPcEZhY2VGb3J3YXJkLCBnZW5UeXBlLCBnZW5UeXBlLCBnZW5UeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5UeXBlKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BSZWZsZWN0LCBnZW5UeXBlLCBnZW5UeXBl
LCBnZW5UeXBlKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxU
SU5TLCBFT3BSZWZyYWN0LCBnZW5UeXBlLCBnZW5UeXBlLCBnZW5UeXBlLCBmbG9hdDEpOworCisg
ICAgY29uc3QgVFR5cGUgKm1hdDIgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgMiwgMik7
CisgICAgY29uc3QgVFR5cGUgKm1hdDMgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgMywg
Myk7CisgICAgY29uc3QgVFR5cGUgKm1hdDQgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwg
NCwgNCk7CiAgICAgY29uc3QgVFR5cGUgKm1hdDJ4MyA9IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9h
dCwgMiwgMyk7CiAgICAgY29uc3QgVFR5cGUgKm1hdDN4MiA9IFRDYWNoZTo6Z2V0VHlwZShFYnRG
bG9hdCwgMywgMik7CiAgICAgY29uc3QgVFR5cGUgKm1hdDJ4NCA9IFRDYWNoZTo6Z2V0VHlwZShF
YnRGbG9hdCwgMiwgNCk7CkBAIC0xNTIsNDUgKzE2Myw0NSBAQCB2b2lkIEluc2VydEJ1aWx0SW5G
dW5jdGlvbnMoc2g6OkdMZW51bSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgY29uc3QgU2hCdWls
dEluUgogICAgIC8vCiAgICAgLy8gTWF0cml4IEZ1bmN0aW9ucy4KICAgICAvLwotICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BNdWwsIG1hdDIsICJtYXRy
aXhDb21wTXVsdCIsIG1hdDIsIG1hdDIpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
Q09NTU9OX0JVSUxUSU5TLCBFT3BNdWwsIG1hdDMsICJtYXRyaXhDb21wTXVsdCIsIG1hdDMsIG1h
dDMpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BN
dWwsIG1hdDQsICJtYXRyaXhDb21wTXVsdCIsIG1hdDQsIG1hdDQpOwotICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcE11bCwgbWF0MngzLCAibWF0cml4Q29t
cE11bHQiLCBtYXQyeDMsIG1hdDJ4Myk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihF
U1NMM19CVUlMVElOUywgRU9wTXVsLCBtYXQzeDIsICJtYXRyaXhDb21wTXVsdCIsIG1hdDN4Miwg
bWF0M3gyKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBF
T3BNdWwsIG1hdDJ4NCwgIm1hdHJpeENvbXBNdWx0IiwgbWF0Mng0LCBtYXQyeDQpOwotICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcE11bCwgbWF0NHgyLCAi
bWF0cml4Q29tcE11bHQiLCBtYXQ0eDIsIG1hdDR4Mik7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wTXVsLCBtYXQzeDQsICJtYXRyaXhDb21wTXVsdCIs
IG1hdDN4NCwgbWF0M3g0KTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JV
SUxUSU5TLCBFT3BNdWwsIG1hdDR4MywgIm1hdHJpeENvbXBNdWx0IiwgbWF0NHgzLCBtYXQ0eDMp
OwotCi0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wT3V0
ZXJQcm9kdWN0LCBtYXQyLCAib3V0ZXJQcm9kdWN0IiwgZmxvYXQyLCBmbG9hdDIpOwotICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcE91dGVyUHJvZHVjdCwg
bWF0MywgIm91dGVyUHJvZHVjdCIsIGZsb2F0MywgZmxvYXQzKTsKLSAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BPdXRlclByb2R1Y3QsIG1hdDQsICJvdXRl
clByb2R1Y3QiLCBmbG9hdDQsIGZsb2F0NCk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihFU1NMM19CVUlMVElOUywgRU9wT3V0ZXJQcm9kdWN0LCBtYXQyeDMsICJvdXRlclByb2R1Y3Qi
LCBmbG9hdDMsIGZsb2F0Mik7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19C
VUlMVElOUywgRU9wT3V0ZXJQcm9kdWN0LCBtYXQzeDIsICJvdXRlclByb2R1Y3QiLCBmbG9hdDIs
IGZsb2F0Myk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywg
RU9wT3V0ZXJQcm9kdWN0LCBtYXQyeDQsICJvdXRlclByb2R1Y3QiLCBmbG9hdDQsIGZsb2F0Mik7
Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wT3V0ZXJQ
cm9kdWN0LCBtYXQ0eDIsICJvdXRlclByb2R1Y3QiLCBmbG9hdDIsIGZsb2F0NCk7Ci0gICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wT3V0ZXJQcm9kdWN0LCBt
YXQzeDQsICJvdXRlclByb2R1Y3QiLCBmbG9hdDQsIGZsb2F0Myk7Ci0gICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wT3V0ZXJQcm9kdWN0LCBtYXQ0eDMsICJv
dXRlclByb2R1Y3QiLCBmbG9hdDMsIGZsb2F0NCk7Ci0KLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BUcmFuc3Bvc2UsIG1hdDIsICJ0cmFuc3Bvc2UiLCBt
YXQyKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BU
cmFuc3Bvc2UsIG1hdDMsICJ0cmFuc3Bvc2UiLCBtYXQzKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BUcmFuc3Bvc2UsIG1hdDQsICJ0cmFuc3Bvc2Ui
LCBtYXQ0KTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBF
T3BUcmFuc3Bvc2UsIG1hdDJ4MywgInRyYW5zcG9zZSIsIG1hdDN4Mik7Ci0gICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wVHJhbnNwb3NlLCBtYXQzeDIsICJ0
cmFuc3Bvc2UiLCBtYXQyeDMpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNf
QlVJTFRJTlMsIEVPcFRyYW5zcG9zZSwgbWF0Mng0LCAidHJhbnNwb3NlIiwgbWF0NHgyKTsKLSAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BUcmFuc3Bvc2Us
IG1hdDR4MiwgInRyYW5zcG9zZSIsIG1hdDJ4NCk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihFU1NMM19CVUlMVElOUywgRU9wVHJhbnNwb3NlLCBtYXQzeDQsICJ0cmFuc3Bvc2UiLCBt
YXQ0eDMpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVP
cFRyYW5zcG9zZSwgbWF0NHgzLCAidHJhbnNwb3NlIiwgbWF0M3g0KTsKLQotICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcERldGVybWluYW50LCBmbG9hdDEs
ICJkZXRlcm1pbmFudCIsIG1hdDIpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNT
TDNfQlVJTFRJTlMsIEVPcERldGVybWluYW50LCBmbG9hdDEsICJkZXRlcm1pbmFudCIsIG1hdDMp
OwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcERldGVy
bWluYW50LCBmbG9hdDEsICJkZXRlcm1pbmFudCIsIG1hdDQpOwotCi0gICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgRU9wSW52ZXJzZSwgbWF0MiwgImludmVyc2Ui
LCBtYXQyKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBF
T3BJbnZlcnNlLCBtYXQzLCAiaW52ZXJzZSIsIG1hdDMpOwotICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcEludmVyc2UsIG1hdDQsICJpbnZlcnNlIiwgbWF0
NCk7Ci0KLSAgICBjb25zdCBUVHlwZSAqdmVjID0gVENhY2hlOjpnZXRUeXBlKEVidFZlYyk7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9wTXVsTWF0
cml4Q29tcG9uZW50V2lzZSwgbWF0MiwgbWF0MiwgbWF0Mik7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9wTXVsTWF0cml4Q29tcG9uZW50V2lzZSwg
bWF0MywgbWF0MywgbWF0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1P
Tl9CVUlMVElOUywgRU9wTXVsTWF0cml4Q29tcG9uZW50V2lzZSwgbWF0NCwgbWF0NCwgbWF0NCk7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BNdWxN
YXRyaXhDb21wb25lbnRXaXNlLCBtYXQyeDMsIG1hdDJ4MywgbWF0MngzKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcE11bE1hdHJpeENvbXBvbmVu
dFdpc2UsIG1hdDN4MiwgbWF0M3gyLCBtYXQzeDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wTXVsTWF0cml4Q29tcG9uZW50V2lzZSwgbWF0Mng0
LCBtYXQyeDQsIG1hdDJ4NCk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wz
X0JVSUxUSU5TLCBFT3BNdWxNYXRyaXhDb21wb25lbnRXaXNlLCBtYXQ0eDIsIG1hdDR4MiwgbWF0
NHgyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVP
cE11bE1hdHJpeENvbXBvbmVudFdpc2UsIG1hdDN4NCwgbWF0M3g0LCBtYXQzeDQpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wTXVsTWF0cml4Q29t
cG9uZW50V2lzZSwgbWF0NHgzLCBtYXQ0eDMsIG1hdDR4Myk7CisKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcE91dGVyUHJvZHVjdCwgbWF0MiwgZmxv
YXQyLCBmbG9hdDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlM
VElOUywgRU9wT3V0ZXJQcm9kdWN0LCBtYXQzLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BPdXRlclByb2R1Y3QsIG1h
dDQsIGZsb2F0NCwgZmxvYXQ0KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNT
TDNfQlVJTFRJTlMsIEVPcE91dGVyUHJvZHVjdCwgbWF0MngzLCBmbG9hdDMsIGZsb2F0Mik7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BPdXRlclBy
b2R1Y3QsIG1hdDN4MiwgZmxvYXQyLCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wT3V0ZXJQcm9kdWN0LCBtYXQyeDQsIGZsb2F0NCwg
ZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMs
IEVPcE91dGVyUHJvZHVjdCwgbWF0NHgyLCBmbG9hdDIsIGZsb2F0NCk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BPdXRlclByb2R1Y3QsIG1hdDN4
NCwgZmxvYXQ0LCBmbG9hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NM
M19CVUlMVElOUywgRU9wT3V0ZXJQcm9kdWN0LCBtYXQ0eDMsIGZsb2F0MywgZmxvYXQ0KTsKKwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wVHJhbnNw
b3NlLCBtYXQyLCBtYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNf
QlVJTFRJTlMsIEVPcFRyYW5zcG9zZSwgbWF0MywgbWF0Myk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BUcmFuc3Bvc2UsIG1hdDQsIG1hdDQpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wVHJhbnNw
b3NlLCBtYXQyeDMsIG1hdDN4Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVT
U0wzX0JVSUxUSU5TLCBFT3BUcmFuc3Bvc2UsIG1hdDN4MiwgbWF0MngzKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcFRyYW5zcG9zZSwgbWF0Mng0
LCBtYXQ0eDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElO
UywgRU9wVHJhbnNwb3NlLCBtYXQ0eDIsIG1hdDJ4NCk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BUcmFuc3Bvc2UsIG1hdDN4NCwgbWF0NHgzKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcFRyYW5z
cG9zZSwgbWF0NHgzLCBtYXQzeDQpOworCisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9w
KEVTU0wzX0JVSUxUSU5TLCBFT3BEZXRlcm1pbmFudCwgZmxvYXQxLCBtYXQyKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcERldGVybWluYW50LCBm
bG9hdDEsIG1hdDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlM
VElOUywgRU9wRGV0ZXJtaW5hbnQsIGZsb2F0MSwgbWF0NCk7CisKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcEludmVyc2UsIG1hdDIsIG1hdDIpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wSW52ZXJz
ZSwgbWF0MywgbWF0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JV
SUxUSU5TLCBFT3BJbnZlcnNlLCBtYXQ0LCBtYXQ0KTsKKworICAgIGNvbnN0IFRUeXBlICp2ZWMg
ID0gVENhY2hlOjpnZXRUeXBlKEVidFZlYyk7CiAgICAgY29uc3QgVFR5cGUgKml2ZWMgPSBUQ2Fj
aGU6OmdldFR5cGUoRWJ0SVZlYyk7CiAgICAgY29uc3QgVFR5cGUgKnV2ZWMgPSBUQ2FjaGU6Omdl
dFR5cGUoRWJ0VVZlYyk7CiAgICAgY29uc3QgVFR5cGUgKmJ2ZWMgPSBUQ2FjaGU6OmdldFR5cGUo
RWJ0QlZlYyk7CkBAIC0xOTgsMzEgKzIwOSw2MiBAQCB2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlv
bnMoc2g6OkdMZW51bSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgY29uc3QgU2hCdWlsdEluUgog
ICAgIC8vCiAgICAgLy8gVmVjdG9yIHJlbGF0aW9uYWwgZnVuY3Rpb25zLgogICAgIC8vCi0gICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcExlc3NUaGFuLCBi
dmVjLCAibGVzc1RoYW4iLCB2ZWMsIHZlYyk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihDT01NT05fQlVJTFRJTlMsIEVPcExlc3NUaGFuLCBidmVjLCAibGVzc1RoYW4iLCBpdmVjLCBp
dmVjKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BM
ZXNzVGhhbiwgYnZlYywgImxlc3NUaGFuIiwgdXZlYywgdXZlYyk7Ci0gICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcExlc3NUaGFuRXF1YWwsIGJ2ZWMsICJs
ZXNzVGhhbkVxdWFsIiwgdmVjLCB2ZWMpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
Q09NTU9OX0JVSUxUSU5TLCBFT3BMZXNzVGhhbkVxdWFsLCBidmVjLCAibGVzc1RoYW5FcXVhbCIs
IGl2ZWMsIGl2ZWMpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJ
TlMsIEVPcExlc3NUaGFuRXF1YWwsIGJ2ZWMsICJsZXNzVGhhbkVxdWFsIiwgdXZlYywgdXZlYyk7
Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcEdyZWF0
ZXJUaGFuLCBidmVjLCAiZ3JlYXRlclRoYW4iLCB2ZWMsIHZlYyk7Ci0gICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcEdyZWF0ZXJUaGFuLCBidmVjLCAiZ3Jl
YXRlclRoYW4iLCBpdmVjLCBpdmVjKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVT
U0wzX0JVSUxUSU5TLCBFT3BHcmVhdGVyVGhhbiwgYnZlYywgImdyZWF0ZXJUaGFuIiwgdXZlYywg
dXZlYyk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVP
cEdyZWF0ZXJUaGFuRXF1YWwsIGJ2ZWMsICJncmVhdGVyVGhhbkVxdWFsIiwgdmVjLCB2ZWMpOwot
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BHcmVhdGVy
VGhhbkVxdWFsLCBidmVjLCAiZ3JlYXRlclRoYW5FcXVhbCIsIGl2ZWMsIGl2ZWMpOwotICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcEdyZWF0ZXJUaGFuRXF1
YWwsIGJ2ZWMsICJncmVhdGVyVGhhbkVxdWFsIiwgdXZlYywgdXZlYyk7Ci0gICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihDT01NT05fQlVJTFRJTlMsIEVPcFZlY3RvckVxdWFsLCBidmVjLCAi
ZXF1YWwiLCB2ZWMsIHZlYyk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05f
QlVJTFRJTlMsIEVPcFZlY3RvckVxdWFsLCBidmVjLCAiZXF1YWwiLCBpdmVjLCBpdmVjKTsKLSAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBFT3BWZWN0b3JFcXVh
bCwgYnZlYywgImVxdWFsIiwgdXZlYywgdXZlYyk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihDT01NT05fQlVJTFRJTlMsIEVPcFZlY3RvckVxdWFsLCBidmVjLCAiZXF1YWwiLCBidmVj
LCBidmVjKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywg
RU9wVmVjdG9yTm90RXF1YWwsIGJ2ZWMsICJub3RFcXVhbCIsIHZlYywgdmVjKTsKLSAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9wVmVjdG9yTm90RXF1YWws
IGJ2ZWMsICJub3RFcXVhbCIsIGl2ZWMsIGl2ZWMpOwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcFZlY3Rvck5vdEVxdWFsLCBidmVjLCAibm90RXF1YWwi
LCB1dmVjLCB1dmVjKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKENPTU1PTl9CVUlM
VElOUywgRU9wVmVjdG9yTm90RXF1YWwsIGJ2ZWMsICJub3RFcXVhbCIsIGJ2ZWMsIGJ2ZWMpOwot
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oQ09NTU9OX0JVSUxUSU5TLCBFT3BBbnksIGJv
b2wxLCAiYW55IiwgYnZlYyk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihDT01NT05f
QlVJTFRJTlMsIEVPcEFsbCwgYm9vbDEsICJhbGwiLCBidmVjKTsKLSAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKENPTU1PTl9CVUlMVElOUywgRU9wVmVjdG9yTG9naWNhbE5vdCwgYnZlYywg
Im5vdCIsIGJ2ZWMpOwotCi0gICAgY29uc3QgVFR5cGUgKnNhbXBsZXIyRCA9IFRDYWNoZTo6Z2V0
VHlwZShFYnRTYW1wbGVyMkQpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01N
T05fQlVJTFRJTlMsIEVPcExlc3NUaGFuQ29tcG9uZW50V2lzZSwgYnZlYywgdmVjLCB2ZWMpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcExlc3NU
aGFuQ29tcG9uZW50V2lzZSwgYnZlYywgaXZlYywgaXZlYyk7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BMZXNzVGhhbkNvbXBvbmVudFdpc2UsIGJ2
ZWMsIHV2ZWMsIHV2ZWMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05f
QlVJTFRJTlMsIEVPcExlc3NUaGFuRXF1YWxDb21wb25lbnRXaXNlLCBidmVjLCB2ZWMsIHZlYyk7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9wTGVz
c1RoYW5FcXVhbENvbXBvbmVudFdpc2UsIGJ2ZWMsIGl2ZWMsIGl2ZWMpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wTGVzc1RoYW5FcXVhbENvbXBv
bmVudFdpc2UsIGJ2ZWMsIHV2ZWMsIHV2ZWMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcEdyZWF0ZXJUaGFuQ29tcG9uZW50V2lzZSwgYnZlYywg
dmVjLCB2ZWMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJ
TlMsIEVPcEdyZWF0ZXJUaGFuQ29tcG9uZW50V2lzZSwgYnZlYywgaXZlYywgaXZlYyk7CisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BHcmVhdGVyVGhh
bkNvbXBvbmVudFdpc2UsIGJ2ZWMsIHV2ZWMsIHV2ZWMpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcEdyZWF0ZXJUaGFuRXF1YWxDb21wb25lbnRX
aXNlLCBidmVjLCB2ZWMsIHZlYyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENP
TU1PTl9CVUlMVElOUywgRU9wR3JlYXRlclRoYW5FcXVhbENvbXBvbmVudFdpc2UsIGJ2ZWMsIGl2
ZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl2ZWMpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM19CVUlMVElOUywgRU9wR3JlYXRlclRoYW5FcXVhbENv
bXBvbmVudFdpc2UsIGJ2ZWMsIHV2ZWMsIHV2ZWMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW5PcChDT01NT05fQlVJTFRJTlMsIEVPcEVxdWFsQ29tcG9uZW50V2lzZSwgYnZlYywgdmVj
LCB2ZWMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01NT05fQlVJTFRJTlMs
IEVPcEVxdWFsQ29tcG9uZW50V2lzZSwgYnZlYywgaXZlYywgaXZlYyk7CisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzX0JVSUxUSU5TLCBFT3BFcXVhbENvbXBvbmVudFdpc2Us
IGJ2ZWMsIHV2ZWMsIHV2ZWMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChDT01N
T05fQlVJTFRJTlMsIEVPcEVxdWFsQ29tcG9uZW50V2lzZSwgYnZlYywgYnZlYywgYnZlYyk7Cisg
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9wTm90RXF1
YWxDb21wb25lbnRXaXNlLCBidmVjLCB2ZWMsIHZlYyk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9wTm90RXF1YWxDb21wb25lbnRXaXNlLCBidmVj
LCBpdmVjLCBpdmVjKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJ
TFRJTlMsIEVPcE5vdEVxdWFsQ29tcG9uZW50V2lzZSwgYnZlYywgdXZlYywgdXZlYyk7CisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKENPTU1PTl9CVUlMVElOUywgRU9wTm90RXF1YWxD
b21wb25lbnRXaXNlLCBidmVjLCBidmVjLCBidmVjKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BBbnksIGJvb2wxLCBidmVjKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBFT3BBbGwsIGJvb2wxLCBi
dmVjKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoQ09NTU9OX0JVSUxUSU5TLCBF
T3BMb2dpY2FsTm90Q29tcG9uZW50V2lzZSwgYnZlYywgYnZlYyk7CisKKyAgICAvLworICAgIC8v
IEludGVnZXIgZnVuY3Rpb25zCisgICAgLy8KKyAgICBjb25zdCBUVHlwZSAqb3V0R2VuVVR5cGUg
PSBUQ2FjaGU6OmdldFR5cGUoRWJ0R2VuVVR5cGUsIEV2cU91dCk7CisKKyAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfMV9CVUlMVElOUywgRU9wQml0ZmllbGRFeHRyYWN0LCBn
ZW5JVHlwZSwgZ2VuSVR5cGUsIGludDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludDEpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM18xX0JVSUxUSU5T
LCBFT3BCaXRmaWVsZEV4dHJhY3QsIGdlblVUeXBlLCBnZW5VVHlwZSwgaW50MSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbk9wKEVTU0wzXzFfQlVJTFRJTlMsIEVPcEJpdGZpZWxkSW5zZXJ0LCBnZW5JVHlwZSwgZ2Vu
SVR5cGUsIGdlbklUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxLCBp
bnQxKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfMV9CVUlMVElOUywg
RU9wQml0ZmllbGRJbnNlcnQsIGdlblVUeXBlLCBnZW5VVHlwZSwgZ2VuVVR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludDEsIGludDEpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW5PcChFU1NMM18xX0JVSUxUSU5TLCBFT3BCaXRmaWVsZFJldmVyc2UsIGdlbklU
eXBlLCBnZW5JVHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wzXzFf
QlVJTFRJTlMsIEVPcEJpdGZpZWxkUmV2ZXJzZSwgZ2VuVVR5cGUsIGdlblVUeXBlKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfMV9CVUlMVElOUywgRU9wQml0Q291bnQs
IGdlbklUeXBlLCBnZW5JVHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVT
U0wzXzFfQlVJTFRJTlMsIEVPcEJpdENvdW50LCBnZW5JVHlwZSwgZ2VuVVR5cGUpOworICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM18xX0JVSUxUSU5TLCBFT3BGaW5kTFNCLCBn
ZW5JVHlwZSwgZ2VuSVR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NM
M18xX0JVSUxUSU5TLCBFT3BGaW5kTFNCLCBnZW5JVHlwZSwgZ2VuVVR5cGUpOworICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM18xX0JVSUxUSU5TLCBFT3BGaW5kTVNCLCBnZW5J
VHlwZSwgZ2VuSVR5cGUpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM18x
X0JVSUxUSU5TLCBFT3BGaW5kTVNCLCBnZW5JVHlwZSwgZ2VuVVR5cGUpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM18xX0JVSUxUSU5TLCBFT3BVYWRkQ2FycnksIGdlblVU
eXBlLCBnZW5VVHlwZSwgZ2VuVVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG91dEdlblVUeXBlKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfMV9C
VUlMVElOUywgRU9wVXN1YkJvcnJvdywgZ2VuVVR5cGUsIGdlblVUeXBlLCBnZW5VVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0R2VuVVR5cGUpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW5PcChFU1NMM18xX0JVSUxUSU5TLCBFT3BVbXVsRXh0ZW5kZWQsIHZv
aWRUeXBlLCBnZW5VVHlwZSwgZ2VuVVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG91dEdlblVUeXBlLCBvdXRHZW5VVHlwZSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbk9wKEVTU0wzXzFfQlVJTFRJTlMsIEVPcEltdWxFeHRlbmRlZCwgdm9pZFR5cGUsIGdlbklU
eXBlLCBnZW5JVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0R2VuSVR5
cGUsIG91dEdlbklUeXBlKTsKKworICAgIGNvbnN0IFRUeXBlICpzYW1wbGVyMkQgICA9IFRDYWNo
ZTo6Z2V0VHlwZShFYnRTYW1wbGVyMkQpOwogICAgIGNvbnN0IFRUeXBlICpzYW1wbGVyQ3ViZSA9
IFRDYWNoZTo6Z2V0VHlwZShFYnRTYW1wbGVyQ3ViZSk7CiAKICAgICAvLwpAQCAtMjM4LDggKzI4
MCwxMCBAQCB2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnMoc2g6OkdMZW51bSB0eXBlLCBTaFNo
YWRlclNwZWMgc3BlYywgY29uc3QgU2hCdWlsdEluUgogICAgICAgICBjb25zdCBUVHlwZSAqc2Ft
cGxlckV4dGVybmFsT0VTID0gVENhY2hlOjpnZXRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbE9FUyk7
CiAKICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywgZmxv
YXQ0LCAidGV4dHVyZTJEIiwgc2FtcGxlckV4dGVybmFsT0VTLCBmbG9hdDIpOwotICAgICAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0dXJl
MkRQcm9qIiwgc2FtcGxlckV4dGVybmFsT0VTLCBmbG9hdDMpOwotICAgICAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0dXJlMkRQcm9qIiwg
c2FtcGxlckV4dGVybmFsT0VTLCBmbG9hdDQpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRC
dWlsdEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0dXJlMkRQcm9qIiwgc2FtcGxlckV4
dGVybmFsT0VTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0Myk7Cisg
ICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDFfQlVJTFRJTlMsIGZsb2F0NCwg
InRleHR1cmUyRFByb2oiLCBzYW1wbGVyRXh0ZXJuYWxPRVMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQ0KTsKICAgICB9CiAKICAgICBpZiAocmVzb3VyY2VzLkFSQl90
ZXh0dXJlX3JlY3RhbmdsZSkKQEAgLTI0Nyw4ICsyOTEsMTAgQEAgdm9pZCBJbnNlcnRCdWlsdElu
RnVuY3Rpb25zKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIGNvbnN0IFNoQnVp
bHRJblIKICAgICAgICAgY29uc3QgVFR5cGUgKnNhbXBsZXIyRFJlY3QgPSBUQ2FjaGU6OmdldFR5
cGUoRWJ0U2FtcGxlcjJEUmVjdCk7CiAKICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihFU1NMMV9CVUlMVElOUywgZmxvYXQ0LCAidGV4dHVyZTJEUmVjdCIsIHNhbXBsZXIyRFJlY3Qs
IGZsb2F0Mik7Ci0gICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDFfQlVJTFRJ
TlMsIGZsb2F0NCwgInRleHR1cmUyRFJlY3RQcm9qIiwgc2FtcGxlcjJEUmVjdCwgZmxvYXQzKTsK
LSAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywgZmxvYXQ0
LCAidGV4dHVyZTJEUmVjdFByb2oiLCBzYW1wbGVyMkRSZWN0LCBmbG9hdDQpOworICAgICAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0dXJl
MkRSZWN0UHJvaiIsIHNhbXBsZXIyRFJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmxvYXQzKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9C
VUlMVElOUywgZmxvYXQ0LCAidGV4dHVyZTJEUmVjdFByb2oiLCBzYW1wbGVyMkRSZWN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0NCk7CiAgICAgfQogCiAgICAgaWYg
KHJlc291cmNlcy5FWFRfc2hhZGVyX3RleHR1cmVfbG9kKQpAQCAtMjU2LDQ5ICszMDIsNjggQEAg
dm9pZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25zKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVj
IHNwZWMsIGNvbnN0IFNoQnVpbHRJblIKICAgICAgICAgLyogVGhlICpHcmFkKiB2YXJpYW50cyBh
cmUgbmV3IHRvIGJvdGggdmVydGV4IGFuZCBmcmFnbWVudCBzaGFkZXJzOyB0aGUgZnJhZ21lbnQK
ICAgICAgICAgICogc2hhZGVyIHNwZWNpZmljIHBpZWNlcyBhcmUgYWRkZWQgc2VwYXJhdGVseSBi
ZWxvdy4KICAgICAgICAgICovCi0gICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNT
TDFfQlVJTFRJTlMsICJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIiwgZmxvYXQ0LCAidGV4dHVy
ZTJER3JhZEVYVCIsIHNhbXBsZXIyRCwgZmxvYXQyLCBmbG9hdDIsIGZsb2F0Mik7Ci0gICAgICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDFfQlVJTFRJTlMsICJHTF9FWFRfc2hhZGVy
X3RleHR1cmVfbG9kIiwgZmxvYXQ0LCAidGV4dHVyZTJEUHJvakdyYWRFWFQiLCBzYW1wbGVyMkQs
IGZsb2F0MywgZmxvYXQyLCBmbG9hdDIpOwotICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKEVTU0wxX0JVSUxUSU5TLCAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIsIGZsb2F0NCwg
InRleHR1cmUyRFByb2pHcmFkRVhUIiwgc2FtcGxlcjJELCBmbG9hdDQsIGZsb2F0MiwgZmxvYXQy
KTsKLSAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywgIkdM
X0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiLCBmbG9hdDQsICJ0ZXh0dXJlQ3ViZUdyYWRFWFQiLCBz
YW1wbGVyQ3ViZSwgZmxvYXQzLCBmbG9hdDMsIGZsb2F0Myk7CisgICAgICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oRVNTTDFfQlVJTFRJTlMsICJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9k
IiwgZmxvYXQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0dXJlMkRH
cmFkRVhUIiwgc2FtcGxlcjJELCBmbG9hdDIsIGZsb2F0MiwgZmxvYXQyKTsKKyAgICAgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywgIkdMX0VYVF9zaGFkZXJfdGV4
dHVyZV9sb2QiLCBmbG9hdDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRl
eHR1cmUyRFByb2pHcmFkRVhUIiwgc2FtcGxlcjJELCBmbG9hdDMsIGZsb2F0MiwgZmxvYXQyKTsK
KyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywgIkdMX0VY
VF9zaGFkZXJfdGV4dHVyZV9sb2QiLCBmbG9hdDQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInRleHR1cmUyRFByb2pHcmFkRVhUIiwgc2FtcGxlcjJELCBmbG9hdDQsIGZsb2F0
MiwgZmxvYXQyKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlM
VElOUywgIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiLCBmbG9hdDQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRleHR1cmVDdWJlR3JhZEVYVCIsIHNhbXBsZXJDdWJlLCBm
bG9hdDMsIGZsb2F0MywgZmxvYXQzKTsKICAgICB9CiAKICAgICBpZiAodHlwZSA9PSBHTF9GUkFH
TUVOVF9TSEFERVIpCiAgICAgewogICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVT
U0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0dXJlMkQiLCBzYW1wbGVyMkQsIGZsb2F0MiwgZmxv
YXQxKTsKLSAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywg
ZmxvYXQ0LCAidGV4dHVyZTJEUHJvaiIsIHNhbXBsZXIyRCwgZmxvYXQzLCBmbG9hdDEpOwotICAg
ICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0
ZXh0dXJlMkRQcm9qIiwgc2FtcGxlcjJELCBmbG9hdDQsIGZsb2F0MSk7Ci0gICAgICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDFfQlVJTFRJTlMsIGZsb2F0NCwgInRleHR1cmVDdWJl
Iiwgc2FtcGxlckN1YmUsIGZsb2F0MywgZmxvYXQxKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywgZmxvYXQ0LCAidGV4dHVyZTJEUHJvaiIsIHNhbXBs
ZXIyRCwgZmxvYXQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0MSk7
CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDFfQlVJTFRJTlMsIGZsb2F0
NCwgInRleHR1cmUyRFByb2oiLCBzYW1wbGVyMkQsIGZsb2F0NCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbG9hdDEpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0dXJlQ3ViZSIsIHNhbXBsZXJDdWJlLCBm
bG9hdDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQxKTsKIAogICAg
ICAgICBpZiAocmVzb3VyY2VzLk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcykKICAgICAgICAgewot
ICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywgRU9w
REZkeCwgIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIsIGdlblR5cGUsICJkRmR4IiwgZ2Vu
VHlwZSk7Ci0gICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxU
SU5TLCBFT3BERmR5LCAiR0xfT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIiwgZ2VuVHlwZSwgImRG
ZHkiLCBnZW5UeXBlKTsKLSAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNT
TDFfQlVJTFRJTlMsIEVPcEZ3aWR0aCwgIkdMX09FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyIsIGdl
blR5cGUsICJmd2lkdGgiLCBnZW5UeXBlKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW5PcChFU1NMMV9CVUlMVElOUywgRU9wREZkeCwgIkdMX09FU19zdGFuZGFyZF9kZXJp
dmF0aXZlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuVHlw
ZSwgZ2VuVHlwZSk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNT
TDFfQlVJTFRJTlMsIEVPcERGZHksICJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlblR5cGUsIGdlblR5cGUpOwor
ICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbk9wKEVTU0wxX0JVSUxUSU5TLCBF
T3BGd2lkdGgsICJHTF9PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdlblR5cGUsIGdlblR5cGUpOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKHJlc291cmNlcy5FWFRfc2hhZGVyX3RleHR1cmVfbG9kKQogICAgICAgICB7
Ci0gICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCAi
R0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIsIGZsb2F0NCwgInRleHR1cmUyRExvZEVYVCIsIHNh
bXBsZXIyRCwgZmxvYXQyLCBmbG9hdDEpOwotICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihFU1NMMV9CVUlMVElOUywgIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiLCBmbG9h
dDQsICJ0ZXh0dXJlMkRQcm9qTG9kRVhUIiwgc2FtcGxlcjJELCBmbG9hdDMsIGZsb2F0MSk7Ci0g
ICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCAiR0xf
RVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIsIGZsb2F0NCwgInRleHR1cmUyRFByb2pMb2RFWFQiLCBz
YW1wbGVyMkQsIGZsb2F0NCwgZmxvYXQxKTsKLSAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oRVNTTDFfQlVJTFRJTlMsICJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIiwgZmxv
YXQ0LCAidGV4dHVyZUN1YmVMb2RFWFQiLCBzYW1wbGVyQ3ViZSwgZmxvYXQzLCBmbG9hdDEpOwor
ICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywgIkdM
X0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiLCBmbG9hdDQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJ0ZXh0dXJlMkRMb2RFWFQiLCBzYW1wbGVyMkQsIGZsb2F0MiwgZmxv
YXQxKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDFfQlVJTFRJ
TlMsICJHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIiwgZmxvYXQ0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAidGV4dHVyZTJEUHJvakxvZEVYVCIsIHNhbXBsZXIyRCwg
ZmxvYXQzLCBmbG9hdDEpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihF
U1NMMV9CVUlMVElOUywgIkdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QiLCBmbG9hdDQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0dXJlMkRQcm9qTG9kRVhUIiwg
c2FtcGxlcjJELCBmbG9hdDQsIGZsb2F0MSk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNl
cnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCAiR0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCIsIGZs
b2F0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRleHR1cmVDdWJl
TG9kRVhUIiwgc2FtcGxlckN1YmUsIGZsb2F0MywgZmxvYXQxKTsKICAgICAgICAgfQogICAgIH0K
IAogICAgIGlmICh0eXBlID09IEdMX1ZFUlRFWF9TSEFERVIpCiAgICAgewotICAgICAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0dXJlMkRM
b2QiLCBzYW1wbGVyMkQsIGZsb2F0MiwgZmxvYXQxKTsKLSAgICAgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywgZmxvYXQ0LCAidGV4dHVyZTJEUHJvakxvZCIsIHNh
bXBsZXIyRCwgZmxvYXQzLCBmbG9hdDEpOwotICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0dXJlMkRQcm9qTG9kIiwgc2FtcGxlcjJE
LCBmbG9hdDQsIGZsb2F0MSk7Ci0gICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNT
TDFfQlVJTFRJTlMsIGZsb2F0NCwgInRleHR1cmVDdWJlTG9kIiwgc2FtcGxlckN1YmUsIGZsb2F0
MywgZmxvYXQxKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlM
VElOUywgZmxvYXQ0LCAidGV4dHVyZTJETG9kIiwgc2FtcGxlcjJELCBmbG9hdDIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQxKTsKKyAgICAgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihFU1NMMV9CVUlMVElOUywgZmxvYXQ0LCAidGV4dHVyZTJEUHJvakxvZCIs
IHNhbXBsZXIyRCwgZmxvYXQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
b2F0MSk7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDFfQlVJTFRJTlMs
IGZsb2F0NCwgInRleHR1cmUyRFByb2pMb2QiLCBzYW1wbGVyMkQsIGZsb2F0NCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDEpOworICAgICAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKEVTU0wxX0JVSUxUSU5TLCBmbG9hdDQsICJ0ZXh0dXJlQ3ViZUxvZCIsIHNh
bXBsZXJDdWJlLCBmbG9hdDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxv
YXQxKTsKICAgICB9CiAKICAgICBjb25zdCBUVHlwZSAqZ3ZlYzQgPSBUQ2FjaGU6OmdldFR5cGUo
RWJ0R1ZlYzQpOwogCi0gICAgY29uc3QgVFR5cGUgKmdzYW1wbGVyMkQgPSBUQ2FjaGU6OmdldFR5
cGUoRWJ0R1NhbXBsZXIyRCk7Ci0gICAgY29uc3QgVFR5cGUgKmdzYW1wbGVyQ3ViZSA9IFRDYWNo
ZTo6Z2V0VHlwZShFYnRHU2FtcGxlckN1YmUpOwotICAgIGNvbnN0IFRUeXBlICpnc2FtcGxlcjNE
ID0gVENhY2hlOjpnZXRUeXBlKEVidEdTYW1wbGVyM0QpOworICAgIGNvbnN0IFRUeXBlICpnc2Ft
cGxlcjJEICAgICAgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0R1NhbXBsZXIyRCk7CisgICAgY29uc3Qg
VFR5cGUgKmdzYW1wbGVyQ3ViZSAgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRHU2FtcGxlckN1YmUp
OworICAgIGNvbnN0IFRUeXBlICpnc2FtcGxlcjNEICAgICAgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0
R1NhbXBsZXIzRCk7CiAgICAgY29uc3QgVFR5cGUgKmdzYW1wbGVyMkRBcnJheSA9IFRDYWNoZTo6
Z2V0VHlwZShFYnRHU2FtcGxlcjJEQXJyYXkpOworICAgIGNvbnN0IFRUeXBlICpnc2FtcGxlcjJE
TVMgICAgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0R1NhbXBsZXIyRE1TKTsKIAogICAgIC8vCiAgICAg
Ly8gVGV4dHVyZSBGdW5jdGlvbnMgZm9yIEdMU0wgRVMgMy4wCkBAIC0zMjYsMTIgKzM5MSwzMiBA
QCB2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnMoc2g6OkdMZW51bSB0eXBlLCBTaFNoYWRlclNw
ZWMgc3BlYywgY29uc3QgU2hCdWlsdEluUgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZsb2F0NCk7CiAgICAgfQogCisgICAgaWYgKHJlc291cmNlcy5FWFRfWVVWX3RhcmdldCkK
KyAgICB7CisgICAgICAgIGNvbnN0IFRUeXBlICpzYW1wbGVyRXh0ZXJuYWwyRFkyWUVYVCA9IFRD
YWNoZTo6Z2V0VHlwZShFYnRTYW1wbGVyRXh0ZXJuYWwyRFkyWUVYVCk7CisKKyAgICAgICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgIkdMX0VYVF9ZVVZfdGFyZ2V0
IiwgZmxvYXQ0LCAidGV4dHVyZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2FtcGxlckV4dGVybmFsMkRZMllFWFQsIGZsb2F0Mik7CisgICAgICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsICJHTF9FWFRfWVVWX3RhcmdldCIsIGZsb2F0NCwg
InRleHR1cmVQcm9qIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVy
RXh0ZXJuYWwyRFkyWUVYVCwgZmxvYXQzKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihFU1NMM19CVUlMVElOUywgIkdMX0VYVF9ZVVZfdGFyZ2V0IiwgZmxvYXQ0LCAidGV4dHVy
ZVByb2oiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZXJFeHRlcm5h
bDJEWTJZRVhULCBmbG9hdDQpOworCisgICAgICAgIGNvbnN0IFRUeXBlICp5dXZDc2NTdGFuZGFy
ZEVYVCA9IFRDYWNoZTo6Z2V0VHlwZShFYnRZdXZDc2NTdGFuZGFyZEVYVCk7CisKKyAgICAgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgIkdMX0VYVF9ZVVZfdGFy
Z2V0IiwgZmxvYXQzLCAicmdiXzJfeXV2IiwgZmxvYXQzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHl1dkNzY1N0YW5kYXJkRVhUKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgIkdMX0VYVF9ZVVZfdGFyZ2V0IiwgZmxvYXQzLCAi
eXV2XzJfcmdiIiwgZmxvYXQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl1
dkNzY1N0YW5kYXJkRVhUKTsKKyAgICB9CisKICAgICBpZiAodHlwZSA9PSBHTF9GUkFHTUVOVF9T
SEFERVIpCiAgICAgewogICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JV
SUxUSU5TLCBndmVjNCwgInRleHR1cmUiLCBnc2FtcGxlcjJELCBmbG9hdDIsIGZsb2F0MSk7CiAg
ICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAi
dGV4dHVyZSIsIGdzYW1wbGVyM0QsIGZsb2F0MywgZmxvYXQxKTsKICAgICAgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlIiwgZ3NhbXBs
ZXJDdWJlLCBmbG9hdDMsIGZsb2F0MSk7Ci0gICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZSIsIGdzYW1wbGVyMkRBcnJheSwgZmxv
YXQzLCBmbG9hdDEpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JV
SUxUSU5TLCBndmVjNCwgInRleHR1cmUiLCBnc2FtcGxlcjJEQXJyYXksIGZsb2F0MywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDEpOwogICAgICAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qIiwgZ3Nh
bXBsZXIyRCwgZmxvYXQzLCBmbG9hdDEpOwogICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qIiwgZ3NhbXBsZXIyRCwgZmxv
YXQ0LCBmbG9hdDEpOwogICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JV
SUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qIiwgZ3NhbXBsZXIzRCwgZmxvYXQ0LCBmbG9hdDEp
OwpAQCAtMzQ3LDIzICs0MzIsMzkgQEAgdm9pZCBJbnNlcnRCdWlsdEluRnVuY3Rpb25zKHNoOjpH
TGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIGNvbnN0IFNoQnVpbHRJblIKICAgICAgICAg
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0NCwgInRl
eHR1cmVQcm9qIiwgc2FtcGxlckV4dGVybmFsT0VTLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmbG9hdDQsIGZsb2F0MSk7CiAgICAgICAgIH0KKworICAgICAgICBpZiAo
cmVzb3VyY2VzLkVYVF9ZVVZfdGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBU
VHlwZSAqc2FtcGxlckV4dGVybmFsMkRZMllFWFQgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0U2FtcGxl
ckV4dGVybmFsMkRZMllFWFQpOworCisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKEVTU0wzX0JVSUxUSU5TLCAiR0xfRVhUX1lVVl90YXJnZXQiLCBmbG9hdDQsICJ0ZXh0dXJl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlckV4dGVybmFs
MkRZMllFWFQsIGZsb2F0MiwgZmxvYXQxKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsICJHTF9FWFRfWVVWX3RhcmdldCIsIGZsb2F0NCwgInRl
eHR1cmVQcm9qIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxl
ckV4dGVybmFsMkRZMllFWFQsIGZsb2F0MywgZmxvYXQxKTsKKyAgICAgICAgICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsICJHTF9FWFRfWVVWX3RhcmdldCIsIGZs
b2F0NCwgInRleHR1cmVQcm9qIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2FtcGxlckV4dGVybmFsMkRZMllFWFQsIGZsb2F0NCwgZmxvYXQxKTsKKyAgICAgICAgfQog
ICAgIH0KIAotICAgIGNvbnN0IFRUeXBlICpzYW1wbGVyMkRTaGFkb3cgPSBUQ2FjaGU6OmdldFR5
cGUoRWJ0U2FtcGxlcjJEU2hhZG93KTsKLSAgICBjb25zdCBUVHlwZSAqc2FtcGxlckN1YmVTaGFk
b3cgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0U2FtcGxlckN1YmVTaGFkb3cpOworICAgIGNvbnN0IFRU
eXBlICpzYW1wbGVyMkRTaGFkb3cgICAgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRTYW1wbGVyMkRT
aGFkb3cpOworICAgIGNvbnN0IFRUeXBlICpzYW1wbGVyQ3ViZVNoYWRvdyAgICA9IFRDYWNoZTo6
Z2V0VHlwZShFYnRTYW1wbGVyQ3ViZVNoYWRvdyk7CiAgICAgY29uc3QgVFR5cGUgKnNhbXBsZXIy
REFycmF5U2hhZG93ID0gVENhY2hlOjpnZXRUeXBlKEVidFNhbXBsZXIyREFycmF5U2hhZG93KTsK
IAogICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwg
InRleHR1cmUiLCBzYW1wbGVyMkRTaGFkb3csIGZsb2F0Myk7CiAgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxvYXQxLCAidGV4dHVyZSIsIHNhbXBsZXJDdWJl
U2hhZG93LCBmbG9hdDQpOwogICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJ
TFRJTlMsIGZsb2F0MSwgInRleHR1cmUiLCBzYW1wbGVyMkRBcnJheVNoYWRvdywgZmxvYXQ0KTsK
ICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEsICJ0
ZXh0dXJlUHJvaiIsIHNhbXBsZXIyRFNoYWRvdywgZmxvYXQ0KTsKLSAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEsICJ0ZXh0dXJlTG9kIiwgc2FtcGxl
cjJEU2hhZG93LCBmbG9hdDMsIGZsb2F0MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihFU1NMM19CVUlMVElOUywgZmxvYXQxLCAidGV4dHVyZUxvZCIsIHNhbXBsZXIyRFNoYWRvdywg
ZmxvYXQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQxKTsKIAogICAgIGlm
ICh0eXBlID09IEdMX0ZSQUdNRU5UX1NIQURFUikKICAgICB7Ci0gICAgICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwgInRleHR1cmUiLCBzYW1wbGVy
MkRTaGFkb3csIGZsb2F0MywgZmxvYXQxKTsKLSAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihFU1NMM19CVUlMVElOUywgZmxvYXQxLCAidGV4dHVyZSIsIHNhbXBsZXJDdWJlU2hhZG93
LCBmbG9hdDQsIGZsb2F0MSk7Ci0gICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNT
TDNfQlVJTFRJTlMsIGZsb2F0MSwgInRleHR1cmVQcm9qIiwgc2FtcGxlcjJEU2hhZG93LCBmbG9h
dDQsIGZsb2F0MSk7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJ
TFRJTlMsIGZsb2F0MSwgInRleHR1cmUiLCBzYW1wbGVyMkRTaGFkb3csIGZsb2F0MywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDEpOworICAgICAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEsICJ0ZXh0dXJlIiwgc2FtcGxl
ckN1YmVTaGFkb3csIGZsb2F0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
bG9hdDEpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5T
LCBmbG9hdDEsICJ0ZXh0dXJlUHJvaiIsIHNhbXBsZXIyRFNoYWRvdywgZmxvYXQ0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0MSk7CiAgICAgfQogCiAgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgaW50MiwgInRleHR1cmVTaXplIiwg
Z3NhbXBsZXIyRCwgaW50MSk7CkBAIC0zNzMsNiArNDc0LDcgQEAgdm9pZCBJbnNlcnRCdWlsdElu
RnVuY3Rpb25zKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIGNvbnN0IFNoQnVp
bHRJblIKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBpbnQy
LCAidGV4dHVyZVNpemUiLCBzYW1wbGVyMkRTaGFkb3csIGludDEpOwogICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGludDIsICJ0ZXh0dXJlU2l6ZSIsIHNhbXBs
ZXJDdWJlU2hhZG93LCBpbnQxKTsKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wz
X0JVSUxUSU5TLCBpbnQzLCAidGV4dHVyZVNpemUiLCBzYW1wbGVyMkRBcnJheVNoYWRvdywgaW50
MSk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgaW50Miwg
InRleHR1cmVTaXplIiwgZ3NhbXBsZXIyRE1TKTsKIAogICAgIGlmIChyZXNvdXJjZXMuT0VTX0VH
TF9pbWFnZV9leHRlcm5hbF9lc3NsMykKICAgICB7CkBAIC0zODEsNTMgKzQ4Myw4MSBAQCB2b2lk
IEluc2VydEJ1aWx0SW5GdW5jdGlvbnMoc2g6OkdMZW51bSB0eXBlLCBTaFNoYWRlclNwZWMgc3Bl
YywgY29uc3QgU2hCdWlsdEluUgogICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVT
U0wzX0JVSUxUSU5TLCBpbnQyLCAidGV4dHVyZVNpemUiLCBzYW1wbGVyRXh0ZXJuYWxPRVMsIGlu
dDEpOwogICAgIH0KIAorICAgIGlmIChyZXNvdXJjZXMuRVhUX1lVVl90YXJnZXQpCisgICAgewor
ICAgICAgICBjb25zdCBUVHlwZSAqc2FtcGxlckV4dGVybmFsMkRZMllFWFQgPSBUQ2FjaGU6Omdl
dFR5cGUoRWJ0U2FtcGxlckV4dGVybmFsMkRZMllFWFQpOworCisgICAgICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsICJHTF9FWFRfWVVWX3RhcmdldCIsIGludDIs
ICJ0ZXh0dXJlU2l6ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxl
ckV4dGVybmFsMkRZMllFWFQsIGludDEpOworICAgIH0KKwogICAgIGlmICh0eXBlID09IEdMX0ZS
QUdNRU5UX1NIQURFUikKICAgICB7Ci0gICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
RVNTTDNfQlVJTFRJTlMsIEVPcERGZHgsIGdlblR5cGUsICJkRmR4IiwgZ2VuVHlwZSk7Ci0gICAg
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIEVPcERGZHksIGdl
blR5cGUsICJkRmR5IiwgZ2VuVHlwZSk7Ci0gICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oRVNTTDNfQlVJTFRJTlMsIEVPcEZ3aWR0aCwgZ2VuVHlwZSwgImZ3aWR0aCIsIGdlblR5cGUp
OworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVP
cERGZHgsIGdlblR5cGUsIGdlblR5cGUpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcERGZHksIGdlblR5cGUsIGdlblR5cGUpOworICAgICAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluT3AoRVNTTDNfQlVJTFRJTlMsIEVPcEZ3aWR0aCwg
Z2VuVHlwZSwgZ2VuVHlwZSk7CiAgICAgfQogCiAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlT2Zmc2V0IiwgZ3NhbXBsZXIyRCwgZmxv
YXQyLCBpbnQyKTsKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5T
LCBndmVjNCwgInRleHR1cmVPZmZzZXQiLCBnc2FtcGxlcjNELCBmbG9hdDMsIGludDMpOwotICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwgInRleHR1
cmVPZmZzZXQiLCBzYW1wbGVyMkRTaGFkb3csIGZsb2F0MywgaW50Mik7Ci0gICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlT2Zmc2V0Iiwg
Z3NhbXBsZXIyREFycmF5LCBmbG9hdDMsIGludDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwgInRleHR1cmVPZmZzZXQiLCBzYW1wbGVyMkRT
aGFkb3csIGZsb2F0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDIpOworICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVy
ZU9mZnNldCIsIGdzYW1wbGVyMkRBcnJheSwgZmxvYXQzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50Mik7CiAKICAgICBpZiAodHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCiAg
ICAgewotICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBn
dmVjNCwgInRleHR1cmVPZmZzZXQiLCBnc2FtcGxlcjJELCBmbG9hdDIsIGludDIsIGZsb2F0MSk7
Ci0gICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0
LCAidGV4dHVyZU9mZnNldCIsIGdzYW1wbGVyM0QsIGZsb2F0MywgaW50MywgZmxvYXQxKTsKLSAg
ICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxvYXQxLCAi
dGV4dHVyZU9mZnNldCIsIHNhbXBsZXIyRFNoYWRvdywgZmxvYXQzLCBpbnQyLCBmbG9hdDEpOwot
ICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwg
InRleHR1cmVPZmZzZXQiLCBnc2FtcGxlcjJEQXJyYXksIGZsb2F0MywgaW50MiwgZmxvYXQxKTsK
KyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQs
ICJ0ZXh0dXJlT2Zmc2V0IiwgZ3NhbXBsZXIyRCwgZmxvYXQyLCBpbnQyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsb2F0MSk7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZU9mZnNldCIsIGdzYW1wbGVy
M0QsIGZsb2F0MywgaW50MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dDEpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBm
bG9hdDEsICJ0ZXh0dXJlT2Zmc2V0Iiwgc2FtcGxlcjJEU2hhZG93LCBmbG9hdDMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MiwgZmxvYXQxKTsKKyAgICAgICAgc3ltYm9s
VGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlT2Zmc2V0
IiwgZ3NhbXBsZXIyREFycmF5LCBmbG9hdDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50MiwgZmxvYXQxKTsKICAgICB9CiAKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qT2Zmc2V0IiwgZ3NhbXBsZXIy
RCwgZmxvYXQzLCBpbnQyKTsKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JV
SUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qT2Zmc2V0IiwgZ3NhbXBsZXIyRCwgZmxvYXQ0LCBp
bnQyKTsKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVj
NCwgInRleHR1cmVQcm9qT2Zmc2V0IiwgZ3NhbXBsZXIzRCwgZmxvYXQ0LCBpbnQzKTsKLSAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEsICJ0ZXh0dXJl
UHJvak9mZnNldCIsIHNhbXBsZXIyRFNoYWRvdywgZmxvYXQ0LCBpbnQyKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEsICJ0ZXh0dXJlUHJvak9m
ZnNldCIsIHNhbXBsZXIyRFNoYWRvdywgZmxvYXQ0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50Mik7CiAKICAgICBpZiAodHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCiAgICAg
ewotICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVj
NCwgInRleHR1cmVQcm9qT2Zmc2V0IiwgZ3NhbXBsZXIyRCwgZmxvYXQzLCBpbnQyLCBmbG9hdDEp
OwotICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVj
NCwgInRleHR1cmVQcm9qT2Zmc2V0IiwgZ3NhbXBsZXIyRCwgZmxvYXQ0LCBpbnQyLCBmbG9hdDEp
OwotICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVj
NCwgInRleHR1cmVQcm9qT2Zmc2V0IiwgZ3NhbXBsZXIzRCwgZmxvYXQ0LCBpbnQzLCBmbG9hdDEp
OwotICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9h
dDEsICJ0ZXh0dXJlUHJvak9mZnNldCIsIHNhbXBsZXIyRFNoYWRvdywgZmxvYXQ0LCBpbnQyLCBm
bG9hdDEpOworICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5T
LCBndmVjNCwgInRleHR1cmVQcm9qT2Zmc2V0IiwgZ3NhbXBsZXIyRCwgZmxvYXQzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDIsIGZsb2F0MSk7CisgICAgICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZVByb2pP
ZmZzZXQiLCBnc2FtcGxlcjJELCBmbG9hdDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50MiwgZmxvYXQxKTsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihF
U1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlUHJvak9mZnNldCIsIGdzYW1wbGVyM0QsIGZs
b2F0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzLCBmbG9hdDEpOwor
ICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEs
ICJ0ZXh0dXJlUHJvak9mZnNldCIsIHNhbXBsZXIyRFNoYWRvdywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbG9hdDQsIGludDIsIGZsb2F0MSk7CiAgICAgfQogCi0gICAgc3lt
Ym9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlTG9k
T2Zmc2V0IiwgZ3NhbXBsZXIyRCwgZmxvYXQyLCBmbG9hdDEsIGludDIpOwotICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZUxvZE9mZnNl
dCIsIGdzYW1wbGVyM0QsIGZsb2F0MywgZmxvYXQxLCBpbnQzKTsKLSAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEsICJ0ZXh0dXJlTG9kT2Zmc2V0Iiwg
c2FtcGxlcjJEU2hhZG93LCBmbG9hdDMsIGZsb2F0MSwgaW50Mik7Ci0gICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlTG9kT2Zmc2V0Iiwg
Z3NhbXBsZXIyREFycmF5LCBmbG9hdDMsIGZsb2F0MSwgaW50Mik7CisgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlTG9kT2Zmc2V0Iiwg
Z3NhbXBsZXIyRCwgZmxvYXQyLCBmbG9hdDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBn
dmVjNCwgInRleHR1cmVMb2RPZmZzZXQiLCBnc2FtcGxlcjNELCBmbG9hdDMsIGZsb2F0MSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMpOworICAgIHN5bWJvbFRhYmxlLmluc2Vy
dEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwgInRleHR1cmVMb2RPZmZzZXQiLCBzYW1w
bGVyMkRTaGFkb3csIGZsb2F0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0
MSwgaW50Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywg
Z3ZlYzQsICJ0ZXh0dXJlTG9kT2Zmc2V0IiwgZ3NhbXBsZXIyREFycmF5LCBmbG9hdDMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDEsIGludDIpOwogCiAgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlUHJvakxvZCIs
IGdzYW1wbGVyMkQsIGZsb2F0MywgZmxvYXQxKTsKICAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qTG9kIiwgZ3NhbXBsZXIyRCwg
ZmxvYXQ0LCBmbG9hdDEpOwogICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJ
TFRJTlMsIGd2ZWM0LCAidGV4dHVyZVByb2pMb2QiLCBnc2FtcGxlcjNELCBmbG9hdDQsIGZsb2F0
MSk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxvYXQx
LCAidGV4dHVyZVByb2pMb2QiLCBzYW1wbGVyMkRTaGFkb3csIGZsb2F0NCwgZmxvYXQxKTsKLQot
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4
dHVyZVByb2pMb2RPZmZzZXQiLCBnc2FtcGxlcjJELCBmbG9hdDMsIGZsb2F0MSwgaW50Mik7Ci0g
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0
dXJlUHJvakxvZE9mZnNldCIsIGdzYW1wbGVyMkQsIGZsb2F0NCwgZmxvYXQxLCBpbnQyKTsKLSAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1
cmVQcm9qTG9kT2Zmc2V0IiwgZ3NhbXBsZXIzRCwgZmxvYXQ0LCBmbG9hdDEsIGludDMpOwotICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwgInRleHR1
cmVQcm9qTG9kT2Zmc2V0Iiwgc2FtcGxlcjJEU2hhZG93LCBmbG9hdDQsIGZsb2F0MSwgaW50Mik7
CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxvYXQxLCAi
dGV4dHVyZVByb2pMb2QiLCBzYW1wbGVyMkRTaGFkb3csIGZsb2F0NCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0MSk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qTG9kT2Zmc2V0IiwgZ3NhbXBsZXIy
RCwgZmxvYXQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQxLCBpbnQyKTsK
KyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRl
eHR1cmVQcm9qTG9kT2Zmc2V0IiwgZ3NhbXBsZXIyRCwgZmxvYXQ0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQxLCBpbnQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qTG9kT2Zmc2V0IiwgZ3NhbXBs
ZXIzRCwgZmxvYXQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQxLCBpbnQz
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEs
ICJ0ZXh0dXJlUHJvakxvZE9mZnNldCIsIHNhbXBsZXIyRFNoYWRvdywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0NCwgZmxvYXQxLCBpbnQyKTsKIAogICAgIHN5bWJvbFRhYmxl
Lmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4ZWxGZXRjaCIsIGdzYW1w
bGVyMkQsIGludDIsIGludDEpOwogICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNf
QlVJTFRJTlMsIGd2ZWM0LCAidGV4ZWxGZXRjaCIsIGdzYW1wbGVyM0QsIGludDMsIGludDEpOwpA
QCAtNDQxLDM4ICs1NzEsMTEwIEBAIHZvaWQgSW5zZXJ0QnVpbHRJbkZ1bmN0aW9ucyhzaDo6R0xl
bnVtIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBjb25zdCBTaEJ1aWx0SW5SCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50MSk7CiAgICAgfQogCi0gICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXhlbEZldGNoT2Zmc2V0Iiwg
Z3NhbXBsZXIyRCwgaW50MiwgaW50MSwgaW50Mik7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVp
bHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXhlbEZldGNoT2Zmc2V0IiwgZ3NhbXBsZXIz
RCwgaW50MywgaW50MSwgaW50Myk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NM
M19CVUlMVElOUywgZ3ZlYzQsICJ0ZXhlbEZldGNoT2Zmc2V0IiwgZ3NhbXBsZXIyREFycmF5LCBp
bnQzLCBpbnQxLCBpbnQyKTsKLQotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNf
QlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZUdyYWQiLCBnc2FtcGxlcjJELCBmbG9hdDIsIGZsb2F0
MiwgZmxvYXQyKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5T
LCBndmVjNCwgInRleHR1cmVHcmFkIiwgZ3NhbXBsZXIzRCwgZmxvYXQzLCBmbG9hdDMsIGZsb2F0
Myk7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQs
ICJ0ZXh0dXJlR3JhZCIsIGdzYW1wbGVyQ3ViZSwgZmxvYXQzLCBmbG9hdDMsIGZsb2F0Myk7Ci0g
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxvYXQxLCAidGV4
dHVyZUdyYWQiLCBzYW1wbGVyMkRTaGFkb3csIGZsb2F0MywgZmxvYXQyLCBmbG9hdDIpOwotICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwgInRleHR1
cmVHcmFkIiwgc2FtcGxlckN1YmVTaGFkb3csIGZsb2F0NCwgZmxvYXQzLCBmbG9hdDMpOwotICAg
IHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVy
ZUdyYWQiLCBnc2FtcGxlcjJEQXJyYXksIGZsb2F0MywgZmxvYXQyLCBmbG9hdDIpOwotICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwgInRleHR1cmVH
cmFkIiwgc2FtcGxlcjJEQXJyYXlTaGFkb3csIGZsb2F0NCwgZmxvYXQyLCBmbG9hdDIpOwotCi0g
ICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0
dXJlR3JhZE9mZnNldCIsIGdzYW1wbGVyMkQsIGZsb2F0MiwgZmxvYXQyLCBmbG9hdDIsIGludDIp
OwotICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAi
dGV4dHVyZUdyYWRPZmZzZXQiLCBnc2FtcGxlcjNELCBmbG9hdDMsIGZsb2F0MywgZmxvYXQzLCBp
bnQzKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9h
dDEsICJ0ZXh0dXJlR3JhZE9mZnNldCIsIHNhbXBsZXIyRFNoYWRvdywgZmxvYXQzLCBmbG9hdDIs
IGZsb2F0MiwgaW50Mik7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlM
VElOUywgZ3ZlYzQsICJ0ZXh0dXJlR3JhZE9mZnNldCIsIGdzYW1wbGVyMkRBcnJheSwgZmxvYXQz
LCBmbG9hdDIsIGZsb2F0MiwgaW50Mik7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihF
U1NMM19CVUlMVElOUywgZmxvYXQxLCAidGV4dHVyZUdyYWRPZmZzZXQiLCBzYW1wbGVyMkRBcnJh
eVNoYWRvdywgZmxvYXQ0LCBmbG9hdDIsIGZsb2F0MiwgaW50Mik7Ci0KLSAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qR3JhZCIs
IGdzYW1wbGVyMkQsIGZsb2F0MywgZmxvYXQyLCBmbG9hdDIpOwotICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZVByb2pHcmFkIiwgZ3Nh
bXBsZXIyRCwgZmxvYXQ0LCBmbG9hdDIsIGZsb2F0Mik7Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlUHJvakdyYWQiLCBnc2FtcGxl
cjNELCBmbG9hdDQsIGZsb2F0MywgZmxvYXQzKTsKLSAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEsICJ0ZXh0dXJlUHJvakdyYWQiLCBzYW1wbGVyMkRT
aGFkb3csIGZsb2F0NCwgZmxvYXQyLCBmbG9hdDIpOwotCi0gICAgc3ltYm9sVGFibGUuaW5zZXJ0
QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlUHJvakdyYWRPZmZzZXQiLCBn
c2FtcGxlcjJELCBmbG9hdDMsIGZsb2F0MiwgZmxvYXQyLCBpbnQyKTsKLSAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qR3JhZE9m
ZnNldCIsIGdzYW1wbGVyMkQsIGZsb2F0NCwgZmxvYXQyLCBmbG9hdDIsIGludDIpOwotICAgIHN5
bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZVBy
b2pHcmFkT2Zmc2V0IiwgZ3NhbXBsZXIzRCwgZmxvYXQ0LCBmbG9hdDMsIGZsb2F0MywgaW50Myk7
Ci0gICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZmxvYXQxLCAi
dGV4dHVyZVByb2pHcmFkT2Zmc2V0Iiwgc2FtcGxlcjJEU2hhZG93LCBmbG9hdDQsIGZsb2F0Miwg
ZmxvYXQyLCBpbnQyKTsKKyAgICBpZiAocmVzb3VyY2VzLkVYVF9ZVVZfdGFyZ2V0KQorICAgIHsK
KyAgICAgICAgY29uc3QgVFR5cGUgKnNhbXBsZXJFeHRlcm5hbDJEWTJZRVhUID0gVENhY2hlOjpn
ZXRUeXBlKEVidFNhbXBsZXJFeHRlcm5hbDJEWTJZRVhUKTsKKworICAgICAgICBzeW1ib2xUYWJs
ZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCAiR0xfRVhUX1lVVl90YXJnZXQiLCBmbG9h
dDQsICJ0ZXhlbEZldGNoIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1w
bGVyRXh0ZXJuYWwyRFkyWUVYVCwgaW50MiwgaW50MSk7CisgICAgfQorCisgICAgc3ltYm9sVGFi
bGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXhlbEZldGNoT2Zmc2V0
IiwgZ3NhbXBsZXIyRCwgaW50MiwgaW50MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2
ZWM0LCAidGV4ZWxGZXRjaE9mZnNldCIsIGdzYW1wbGVyM0QsIGludDMsIGludDEsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWls
dEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleGVsRmV0Y2hPZmZzZXQiLCBnc2FtcGxlcjJE
QXJyYXksIGludDMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQxLCBpbnQyKTsK
KworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAi
dGV4dHVyZUdyYWQiLCBnc2FtcGxlcjJELCBmbG9hdDIsIGZsb2F0MiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihF
U1NMM19CVUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlR3JhZCIsIGdzYW1wbGVyM0QsIGZsb2F0Mywg
ZmxvYXQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQzKTsKKyAgICBzeW1i
b2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVHcmFk
IiwgZ3NhbXBsZXJDdWJlLCBmbG9hdDMsIGZsb2F0MywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlM
VElOUywgZmxvYXQxLCAidGV4dHVyZUdyYWQiLCBzYW1wbGVyMkRTaGFkb3csIGZsb2F0MywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0MiwgZmxvYXQyKTsKKyAgICBzeW1ib2xU
YWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEsICJ0ZXh0dXJlR3JhZCIs
IHNhbXBsZXJDdWJlU2hhZG93LCBmbG9hdDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbG9hdDMsIGZsb2F0Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19C
VUlMVElOUywgZ3ZlYzQsICJ0ZXh0dXJlR3JhZCIsIGdzYW1wbGVyMkRBcnJheSwgZmxvYXQzLCBm
bG9hdDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDIpOworICAgIHN5bWJv
bFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwgInRleHR1cmVHcmFk
Iiwgc2FtcGxlcjJEQXJyYXlTaGFkb3csIGZsb2F0NCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsb2F0MiwgZmxvYXQyKTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4o
RVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZUdyYWRPZmZzZXQiLCBnc2FtcGxlcjJELCBm
bG9hdDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDIsIGZsb2F0MiwgaW50
Mik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM19CVUlMVElOUywgZ3ZlYzQs
ICJ0ZXh0dXJlR3JhZE9mZnNldCIsIGdzYW1wbGVyM0QsIGZsb2F0MywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0MywgZmxvYXQzLCBpbnQzKTsKKyAgICBzeW1ib2xUYWJsZS5p
bnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9hdDEsICJ0ZXh0dXJlR3JhZE9mZnNldCIs
IHNhbXBsZXIyRFNoYWRvdywgZmxvYXQzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxvYXQyLCBmbG9hdDIsIGludDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNT
TDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZUdyYWRPZmZzZXQiLCBnc2FtcGxlcjJEQXJyYXks
IGZsb2F0MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0MiwgZmxvYXQyLCBp
bnQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBmbG9h
dDEsICJ0ZXh0dXJlR3JhZE9mZnNldCIsIHNhbXBsZXIyREFycmF5U2hhZG93LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXQ0LCBmbG9hdDIsIGZsb2F0MiwgaW50Mik7CisKKyAg
ICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1
cmVQcm9qR3JhZCIsIGdzYW1wbGVyMkQsIGZsb2F0MywgZmxvYXQyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQyKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVT
U0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQcm9qR3JhZCIsIGdzYW1wbGVyMkQsIGZsb2F0
NCwgZmxvYXQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQyKTsKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzX0JVSUxUSU5TLCBndmVjNCwgInRleHR1cmVQ
cm9qR3JhZCIsIGdzYW1wbGVyM0QsIGZsb2F0NCwgZmxvYXQzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZmxvYXQzKTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wz
X0JVSUxUSU5TLCBmbG9hdDEsICJ0ZXh0dXJlUHJvakdyYWQiLCBzYW1wbGVyMkRTaGFkb3csIGZs
b2F0NCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0MiwgZmxvYXQyKTsKKwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4
dHVyZVByb2pHcmFkT2Zmc2V0IiwgZ3NhbXBsZXIyRCwgZmxvYXQzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxvYXQyLCBmbG9hdDIsIGludDIpOworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZVByb2pHcmFkT2Zmc2V0
IiwgZ3NhbXBsZXIyRCwgZmxvYXQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxv
YXQyLCBmbG9hdDIsIGludDIpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNf
QlVJTFRJTlMsIGd2ZWM0LCAidGV4dHVyZVByb2pHcmFkT2Zmc2V0IiwgZ3NhbXBsZXIzRCwgZmxv
YXQ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQzLCBmbG9hdDMsIGludDMp
OworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfQlVJTFRJTlMsIGZsb2F0MSwg
InRleHR1cmVQcm9qR3JhZE9mZnNldCIsIHNhbXBsZXIyRFNoYWRvdywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsb2F0NCwgZmxvYXQyLCBmbG9hdDIsIGludDIpOworCisgICAgY29u
c3QgVFR5cGUgKmdpbWFnZTJEICAgICAgPSBUQ2FjaGU6OmdldFR5cGUoRWJ0R0ltYWdlMkQpOwor
ICAgIGNvbnN0IFRUeXBlICpnaW1hZ2UzRCAgICAgID0gVENhY2hlOjpnZXRUeXBlKEVidEdJbWFn
ZTNEKTsKKyAgICBjb25zdCBUVHlwZSAqZ2ltYWdlMkRBcnJheSA9IFRDYWNoZTo6Z2V0VHlwZShF
YnRHSW1hZ2UyREFycmF5KTsKKyAgICBjb25zdCBUVHlwZSAqZ2ltYWdlQ3ViZSAgICA9IFRDYWNo
ZTo6Z2V0VHlwZShFYnRHSW1hZ2VDdWJlKTsKKworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0
SW4oRVNTTDNfMV9CVUlMVElOUywgdm9pZFR5cGUsICJpbWFnZVN0b3JlIiwgZ2ltYWdlMkQsIGlu
dDIsIGd2ZWM0KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzXzFfQlVJTFRJ
TlMsIHZvaWRUeXBlLCAiaW1hZ2VTdG9yZSIsIGdpbWFnZTNELCBpbnQzLCBndmVjNCk7CisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM18xX0JVSUxUSU5TLCB2b2lkVHlwZSwgImlt
YWdlU3RvcmUiLCBnaW1hZ2UyREFycmF5LCBpbnQzLCBndmVjNCk7CisgICAgc3ltYm9sVGFibGUu
aW5zZXJ0QnVpbHRJbihFU1NMM18xX0JVSUxUSU5TLCB2b2lkVHlwZSwgImltYWdlU3RvcmUiLCBn
aW1hZ2VDdWJlLCBpbnQzLCBndmVjNCk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdElu
KEVTU0wzXzFfQlVJTFRJTlMsIGd2ZWM0LCAiaW1hZ2VMb2FkIiwgZ2ltYWdlMkQsIGludDIpOwor
ICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfMV9CVUlMVElOUywgZ3ZlYzQsICJp
bWFnZUxvYWQiLCBnaW1hZ2UzRCwgaW50Myk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJ
bihFU1NMM18xX0JVSUxUSU5TLCBndmVjNCwgImltYWdlTG9hZCIsIGdpbWFnZTJEQXJyYXksIGlu
dDMpOworICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW4oRVNTTDNfMV9CVUlMVElOUywgZ3Zl
YzQsICJpbWFnZUxvYWQiLCBnaW1hZ2VDdWJlLCBpbnQzKTsKKworICAgIHN5bWJvbFRhYmxlLmlu
c2VydEJ1aWx0SW4oRVNTTDNfMV9CVUlMVElOUywgaW50MiwgImltYWdlU2l6ZSIsIGdpbWFnZTJE
KTsKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzXzFfQlVJTFRJTlMsIGludDMs
ICJpbWFnZVNpemUiLCBnaW1hZ2UzRCk7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihF
U1NMM18xX0JVSUxUSU5TLCBpbnQzLCAiaW1hZ2VTaXplIiwgZ2ltYWdlMkRBcnJheSk7CisgICAg
c3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbihFU1NMM18xX0JVSUxUSU5TLCBpbnQyLCAiaW1hZ2VT
aXplIiwgZ2ltYWdlQ3ViZSk7CisKKyAgICBzeW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluRnVuY3Rp
b25Ob1BhcmFtZXRlcnMoRVNTTDNfMV9CVUlMVElOUywgRU9wTWVtb3J5QmFycmllciwgdm9pZFR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJt
ZW1vcnlCYXJyaWVyIik7CisgICAgc3ltYm9sVGFibGUuaW5zZXJ0QnVpbHRJbkZ1bmN0aW9uTm9Q
YXJhbWV0ZXJzKEVTU0wzXzFfQlVJTFRJTlMsIEVPcE1lbW9yeUJhcnJpZXJBdG9taWNDb3VudGVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lk
VHlwZSwgIm1lbW9yeUJhcnJpZXJBdG9taWNDb3VudGVyIik7CisgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0QnVpbHRJbkZ1bmN0aW9uTm9QYXJhbWV0ZXJzKEVTU0wzXzFfQlVJTFRJTlMsIEVPcE1lbW9y
eUJhcnJpZXJCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZvaWRUeXBlLCAibWVtb3J5QmFycmllckJ1ZmZlciIpOworICAgIHN5bWJvbFRh
YmxlLmluc2VydEJ1aWx0SW5GdW5jdGlvbk5vUGFyYW1ldGVycyhFU1NMM18xX0JVSUxUSU5TLCBF
T3BNZW1vcnlCYXJyaWVySW1hZ2UsIHZvaWRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5QmFycmllckltYWdlIik7CisKKyAgICBz
eW1ib2xUYWJsZS5pbnNlcnRCdWlsdEluKEVTU0wzXzFfQlVJTFRJTlMsIGd2ZWM0LCAidGV4ZWxG
ZXRjaCIsIGdzYW1wbGVyMkRNUywgaW50MiwgaW50MSk7CisKKyAgICBpZiAodHlwZSA9PSBHTF9D
T01QVVRFX1NIQURFUikKKyAgICB7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5G
dW5jdGlvbk5vUGFyYW1ldGVycyhFU1NMM18xX0JVSUxUSU5TLCBFT3BCYXJyaWVyLCB2b2lkVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJiYXJyaWVyIik7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1aWx0SW5GdW5jdGlvbk5v
UGFyYW1ldGVycyhFU1NMM18xX0JVSUxUSU5TLCBFT3BNZW1vcnlCYXJyaWVyU2hhcmVkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZFR5
cGUsICJtZW1vcnlCYXJyaWVyU2hhcmVkIik7CisgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydEJ1
aWx0SW5GdW5jdGlvbk5vUGFyYW1ldGVycyhFU1NMM18xX0JVSUxUSU5TLCBFT3BHcm91cE1lbW9y
eUJhcnJpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2b2lkVHlwZSwgImdyb3VwTWVtb3J5QmFycmllciIpOworICAgIH0KIAogICAgIC8v
CiAgICAgLy8gRGVwdGggcmFuZ2UgaW4gd2luZG93IGNvb3JkaW5hdGVzCiAgICAgLy8KLSAgICBU
RmllbGRMaXN0ICpmaWVsZHMgPSBOZXdQb29sVEZpZWxkTGlzdCgpOworICAgIFRGaWVsZExpc3Qg
KmZpZWxkcyAgICAgICA9IE5ld1Bvb2xURmllbGRMaXN0KCk7CiAgICAgVFNvdXJjZUxvYyB6ZXJv
U291cmNlTG9jID0gezAsIDAsIDAsIDB9OwogICAgIGF1dG8gaGlnaHBGbG9hdDEgICAgICAgICA9
IG5ldyBUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwgRXZxR2xvYmFsLCAxKTsKICAgICBURmllbGQg
Km5lYXIgICAgICAgICAgICAgPSBuZXcgVEZpZWxkKGhpZ2hwRmxvYXQxLCBOZXdQb29sVFN0cmlu
ZygibmVhciIpLCB6ZXJvU291cmNlTG9jKTsKQEAgLTQ4MSwxNSArNjgzLDE2IEBAIHZvaWQgSW5z
ZXJ0QnVpbHRJbkZ1bmN0aW9ucyhzaDo6R0xlbnVtIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBj
b25zdCBTaEJ1aWx0SW5SCiAgICAgZmllbGRzLT5wdXNoX2JhY2sobmVhcik7CiAgICAgZmllbGRz
LT5wdXNoX2JhY2soZmFyKTsKICAgICBmaWVsZHMtPnB1c2hfYmFjayhkaWZmKTsKLSAgICBUU3Ry
dWN0dXJlICpkZXB0aFJhbmdlU3RydWN0ID0gbmV3IFRTdHJ1Y3R1cmUoTmV3UG9vbFRTdHJpbmco
ImdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJzIiksIGZpZWxkcyk7CisgICAgVFN0cnVjdHVyZSAqZGVw
dGhSYW5nZVN0cnVjdCA9CisgICAgICAgIG5ldyBUU3RydWN0dXJlKE5ld1Bvb2xUU3RyaW5nKCJn
bF9EZXB0aFJhbmdlUGFyYW1ldGVycyIpLCBmaWVsZHMpOwogICAgIFRWYXJpYWJsZSAqZGVwdGhS
YW5nZVBhcmFtZXRlcnMgPQogICAgICAgICBuZXcgVFZhcmlhYmxlKCZkZXB0aFJhbmdlU3RydWN0
LT5uYW1lKCksIFRUeXBlKGRlcHRoUmFuZ2VTdHJ1Y3QpLCB0cnVlKTsKICAgICBzeW1ib2xUYWJs
ZS5pbnNlcnQoQ09NTU9OX0JVSUxUSU5TLCBkZXB0aFJhbmdlUGFyYW1ldGVycyk7CiAgICAgVFZh
cmlhYmxlICpkZXB0aFJhbmdlID0gbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfRGVw
dGhSYW5nZSIpLCBUVHlwZShkZXB0aFJhbmdlU3RydWN0KSk7CiAgICAgZGVwdGhSYW5nZS0+c2V0
UXVhbGlmaWVyKEV2cVVuaWZvcm0pOwotICAgIC8vIEVuc3VyZSB3ZSBldmFsdWF0ZSB0aGUgbWFu
Z2xlZCBuYW1lIGZvciBkZXB0aCByYW5nZSwgc28gd2UgYWxsb2NhdGUgdG8gdGhlIGN1cnJlbnQg
c2NvcGUuCi0gICAgZGVwdGhSYW5nZVBhcmFtZXRlcnMtPmdldFR5cGUoKS5nZXRNYW5nbGVkTmFt
ZSgpOwotICAgIGRlcHRoUmFuZ2UtPmdldFR5cGUoKS5nZXRNYW5nbGVkTmFtZSgpOworICAgIC8v
IERvIGxhenkgaW5pdGlhbGl6YXRpb24gZm9yIGRlcHRoIHJhbmdlLCBzbyB3ZSBhbGxvY2F0ZSB0
byB0aGUgY3VycmVudCBzY29wZS4KKyAgICBkZXB0aFJhbmdlUGFyYW1ldGVycy0+Z2V0VHlwZSgp
LnJlYWxpemUoKTsKKyAgICBkZXB0aFJhbmdlLT5nZXRUeXBlKCkucmVhbGl6ZSgpOwogICAgIHN5
bWJvbFRhYmxlLmluc2VydChDT01NT05fQlVJTFRJTlMsIGRlcHRoUmFuZ2UpOwogCiAgICAgLy8K
QEAgLTU3Niw3ICs3NzksOCBAQCB2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnMoc2g6OkdMZW51
bSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgY29uc3QgU2hCdWlsdEluUgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy5NYXhBdG9taWNDb3VudGVyQnVmZmVyU2l6ZSwg
RWJwTWVkaXVtKTsKIH0KIAotdm9pZCBJZGVudGlmeUJ1aWx0SW5zKHNoOjpHTGVudW0gdHlwZSwg
U2hTaGFkZXJTcGVjIHNwZWMsCit2b2lkIElkZW50aWZ5QnVpbHRJbnMoc2g6OkdMZW51bSB0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyU3BlYyBzcGVjLAogICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVzb3VyY2VzLAogICAgICAgICAg
ICAgICAgICAgICAgIFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUpCiB7CkBAIC01ODQsMTIwICs3
ODgsMTQxIEBAIHZvaWQgSWRlbnRpZnlCdWlsdElucyhzaDo6R0xlbnVtIHR5cGUsIFNoU2hhZGVy
U3BlYyBzcGVjLAogICAgIC8vIEluc2VydCBzb21lIHNwZWNpYWwgYnVpbHQtaW4gdmFyaWFibGVz
IHRoYXQgYXJlIG5vdCBpbgogICAgIC8vIHRoZSBidWlsdC1pbiBoZWFkZXIgZmlsZXMuCiAgICAg
Ly8KKworICAgIGlmIChyZXNvdXJjZXMuT1ZSX211bHRpdmlldyAmJiB0eXBlICE9IEdMX0NPTVBV
VEVfU0hBREVSKQorICAgIHsKKyAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KENPTU1PTl9CVUlM
VElOUywgIkdMX09WUl9tdWx0aXZpZXciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3
IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfVmlld0lEX09WUiIpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRVSW50LCBFYnBIaWdoLCBFdnFW
aWV3SURPVlIsIDEpKSk7CisgICAgfQorCiAgICAgc3dpdGNoICh0eXBlKQogICAgIHsKLSAgICAg
IGNhc2UgR0xfRlJBR01FTlRfU0hBREVSOgotICAgICAgewotICAgICAgICAgIHN5bWJvbFRhYmxl
Lmluc2VydChDT01NT05fQlVJTFRJTlMsIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImds
X0ZyYWdDb29yZCIpLAotICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBF
dnFGcmFnQ29vcmQsIDQpKSk7Ci0gICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KENPTU1PTl9C
VUlMVElOUywgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfRnJvbnRGYWNpbmciKSwK
LSAgICAgICAgICAgICAgVFR5cGUoRWJ0Qm9vbCwgIEVicFVuZGVmaW5lZCwgRXZxRnJvbnRGYWNp
bmcsIDEpKSk7Ci0gICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KENPTU1PTl9CVUlMVElOUywg
bmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfUG9pbnRDb29yZCIpLAotICAgICAgICAg
ICAgICBUVHlwZShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFQb2ludENvb3JkLCAyKSkpOwotCi0g
ICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KEVTU0wxX0JVSUxUSU5TLCBuZXcgVFZhcmlhYmxl
KE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnQ29sb3IiKSwKLSAgICAgICAgICAgICAgVFR5cGUoRWJ0
RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0NvbG9yLCA0KSkpOwotICAgICAgICAgIFRUeXBlIGZy
YWdEYXRhKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUZyYWdEYXRhLCA0LCAxLCB0cnVlKTsKLSAg
ICAgICAgICBmcmFnRGF0YS5zZXRBcnJheVNpemUocmVzb3VyY2VzLk1heERyYXdCdWZmZXJzKTsK
LSAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoRVNTTDFfQlVJTFRJTlMsIG5ldyBUVmFyaWFi
bGUoTmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdEYXRhIiksIGZyYWdEYXRhKSk7Ci0KLSAgICAgICAg
ICBpZiAocmVzb3VyY2VzLkVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkKQotICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KAotICAgICAgICAgICAgICAgICAgRVNTTDFf
QlVJTFRJTlMsICJHTF9FWFRfYmxlbmRfZnVuY19leHRlbmRlZCIsCi0gICAgICAgICAgICAgICAg
ICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9TZWNvbmRhcnlGcmFnQ29sb3JFWFQi
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1l
ZGl1bSwgRXZxU2Vjb25kYXJ5RnJhZ0NvbG9yRVhULCA0KSkpOwotICAgICAgICAgICAgICBUVHlw
ZSBzZWNvbmRhcnlGcmFnRGF0YShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFTZWNvbmRhcnlGcmFn
RGF0YUVYVCwgNCwgMSwgdHJ1ZSk7Ci0gICAgICAgICAgICAgIHNlY29uZGFyeUZyYWdEYXRhLnNl
dEFycmF5U2l6ZShyZXNvdXJjZXMuTWF4RHVhbFNvdXJjZURyYXdCdWZmZXJzKTsKLSAgICAgICAg
ICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KAotICAgICAgICAgICAgICAgICAgRVNTTDFfQlVJTFRJ
TlMsICJHTF9FWFRfYmxlbmRfZnVuY19leHRlbmRlZCIsCi0gICAgICAgICAgICAgICAgICBuZXcg
VFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9TZWNvbmRhcnlGcmFnRGF0YUVYVCIpLCBzZWNv
bmRhcnlGcmFnRGF0YSkpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmIChyZXNvdXJjZXMu
RVhUX2ZyYWdfZGVwdGgpCi0gICAgICAgICAgewotICAgICAgICAgICAgICBzeW1ib2xUYWJsZS5p
bnNlcnQoCi0gICAgICAgICAgICAgICAgICBFU1NMMV9CVUlMVElOUywgIkdMX0VYVF9mcmFnX2Rl
cHRoIiwKLSAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUoCi0gICAgICAgICAgICAgICAg
ICAgICAgTmV3UG9vbFRTdHJpbmcoImdsX0ZyYWdEZXB0aEVYVCIpLAotICAgICAgICAgICAgICAg
ICAgICAgIFRUeXBlKEVidEZsb2F0LCByZXNvdXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoID8g
RWJwSGlnaCA6IEVicE1lZGl1bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdnFGcmFn
RGVwdGhFWFQsIDEpKSk7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgc3ltYm9sVGFibGUuaW5z
ZXJ0KEVTU0wzX0JVSUxUSU5TLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVFZh
cmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9GcmFnRGVwdGgiKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJwSGlnaCwgRXZxRnJh
Z0RlcHRoLCAxKSkpOwotCi0gICAgICAgICAgaWYgKHJlc291cmNlcy5FWFRfc2hhZGVyX2ZyYW1l
YnVmZmVyX2ZldGNoIHx8IHJlc291cmNlcy5OVl9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2gpCi0g
ICAgICAgICAgewotICAgICAgICAgICAgICBUVHlwZSBsYXN0RnJhZ0RhdGEoRWJ0RmxvYXQsIEVi
cE1lZGl1bSwgRXZxTGFzdEZyYWdEYXRhLCA0LCAxLCB0cnVlKTsKLSAgICAgICAgICAgICAgbGFz
dEZyYWdEYXRhLnNldEFycmF5U2l6ZShyZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMpOwotCi0gICAg
ICAgICAgICAgIGlmIChyZXNvdXJjZXMuRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCkKLSAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KEVTU0wx
X0JVSUxUSU5TLCAiR0xfRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCIsCi0gICAgICAgICAg
ICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfTGFzdEZyYWdEYXRh
IiksIGxhc3RGcmFnRGF0YSkpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGVsc2Ug
aWYgKHJlc291cmNlcy5OVl9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2gpCi0gICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMMV9CVUlMVElOUywg
IkdMX05WX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCIsCi0gICAgICAgICAgICAgICAgICAgICAg
bmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfTGFzdEZyYWdDb2xvciIpLAotICAgICAg
ICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUxhc3RGcmFnQ29s
b3IsIDQpKSk7Ci0gICAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoRVNTTDFfQlVJ
TFRJTlMsICJHTF9OVl9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2giLAotICAgICAgICAgICAgICAg
ICAgICAgIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0xhc3RGcmFnRGF0YSIpLCBs
YXN0RnJhZ0RhdGEpKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBl
bHNlIGlmIChyZXNvdXJjZXMuQVJNX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCkKLSAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMMV9CVUlMVElOUywgIkdM
X0FSTV9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2giLAotICAgICAgICAgICAgICAgICAgbmV3IFRW
YXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfTGFzdEZyYWdDb2xvckFSTSIpLAotICAgICAgICAg
ICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxTGFzdEZyYWdDb2xvciwgNCkp
KTsKLSAgICAgICAgICB9Ci0gICAgICB9CisgICAgICAgIGNhc2UgR0xfRlJBR01FTlRfU0hBREVS
OgorICAgICAgICB7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoQ09NTU9OX0JVSUxU
SU5TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUoTmV3UG9v
bFRTdHJpbmcoImdsX0ZyYWdDb29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0Nvb3JkLCA0
KSkpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KENPTU1PTl9CVUlMVElOUywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5n
KCJnbF9Gcm9udEZhY2luZyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFGcm9udEZhY2luZywgMSkp
KTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChDT01NT05fQlVJTFRJTlMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygi
Z2xfUG9pbnRDb29yZCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxUG9pbnRDb29yZCwgMikpKTsKKwor
ICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KEVTU0wxX0JVSUxUSU5TLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0Zy
YWdDb2xvciIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0NvbG9yLCA0KSkpOworICAgICAgICAg
ICAgVFR5cGUgZnJhZ0RhdGEoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxRnJhZ0RhdGEsIDQsIDEs
IHRydWUpOworICAgICAgICAgICAgZnJhZ0RhdGEuc2V0QXJyYXlTaXplKHJlc291cmNlcy5NYXhE
cmF3QnVmZmVycyk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoRVNTTDFfQlVJTFRJ
TlMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29s
VFN0cmluZygiZ2xfRnJhZ0RhdGEiKSwgZnJhZ0RhdGEpKTsKKworICAgICAgICAgICAgaWYgKHJl
c291cmNlcy5FWFRfYmxlbmRfZnVuY19leHRlbmRlZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoCisgICAgICAgICAgICAgICAgICAgIEVTU0wxX0JV
SUxUSU5TLCAiR0xfRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQiLAorICAgICAgICAgICAgICAgICAg
ICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9TZWNvbmRhcnlGcmFnQ29sb3JFWFQi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgRWJw
TWVkaXVtLCBFdnFTZWNvbmRhcnlGcmFnQ29sb3JFWFQsIDQpKSk7CisgICAgICAgICAgICAgICAg
VFR5cGUgc2Vjb25kYXJ5RnJhZ0RhdGEoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxU2Vjb25kYXJ5
RnJhZ0RhdGFFWFQsIDQsIDEsIHRydWUpOworICAgICAgICAgICAgICAgIHNlY29uZGFyeUZyYWdE
YXRhLnNldEFycmF5U2l6ZShyZXNvdXJjZXMuTWF4RHVhbFNvdXJjZURyYXdCdWZmZXJzKTsKKyAg
ICAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoCisgICAgICAgICAgICAgICAgICAgIEVT
U0wxX0JVSUxUSU5TLCAiR0xfRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQiLAorICAgICAgICAgICAg
ICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9TZWNvbmRhcnlGcmFnRGF0
YUVYVCIpLCBzZWNvbmRhcnlGcmFnRGF0YSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAocmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgKKyAgICAgICAgICAgICAgICAgICAgRVNTTDFfQlVJ
TFRJTlMsICJHTF9FWFRfZnJhZ19kZXB0aCIsCisgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFy
aWFibGUoCisgICAgICAgICAgICAgICAgICAgICAgICBOZXdQb29sVFN0cmluZygiZ2xfRnJhZ0Rl
cHRoRVhUIiksCisgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9hdCwgcmVzb3Vy
Y2VzLkZyYWdtZW50UHJlY2lzaW9uSGlnaCA/IEVicEhpZ2ggOiBFYnBNZWRpdW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFdnFGcmFnRGVwdGhFWFQsIDEpKSk7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMM19CVUlMVElOUywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5n
KCJnbF9GcmFnRGVwdGgiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFGcmFnRGVwdGgsIDEpKSk7CisKKyAg
ICAgICAgICAgIGlmIChyZXNvdXJjZXMuRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCB8fCBy
ZXNvdXJjZXMuTlZfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIFRUeXBlIGxhc3RGcmFnRGF0YShFYnRGbG9hdCwgRWJwTWVkaXVtLCBFdnFM
YXN0RnJhZ0RhdGEsIDQsIDEsIHRydWUpOworICAgICAgICAgICAgICAgIGxhc3RGcmFnRGF0YS5z
ZXRBcnJheVNpemUocmVzb3VyY2VzLk1heERyYXdCdWZmZXJzKTsKKworICAgICAgICAgICAgICAg
IGlmIChyZXNvdXJjZXMuRVhUX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCkKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEVTU0wxX0JVSUxUSU5TLCAiR0xfRVhUX3NoYWRlcl9mcmFtZWJ1ZmZl
cl9mZXRjaCIsCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xU
U3RyaW5nKCJnbF9MYXN0RnJhZ0RhdGEiKSwgbGFzdEZyYWdEYXRhKSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlc291cmNlcy5OVl9zaGFkZXJfZnJhbWVi
dWZmZXJfZmV0Y2gpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBzeW1i
b2xUYWJsZS5pbnNlcnQoCisgICAgICAgICAgICAgICAgICAgICAgICBFU1NMMV9CVUlMVElOUywg
IkdMX05WX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9MYXN0RnJhZ0NvbG9yIiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBNZWRp
dW0sIEV2cUxhc3RGcmFnQ29sb3IsIDQpKSk7CisgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRh
YmxlLmluc2VydCgKKyAgICAgICAgICAgICAgICAgICAgICAgIEVTU0wxX0JVSUxUSU5TLCAiR0xf
TlZfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5l
dyBUVmFyaWFibGUoTmV3UG9vbFRTdHJpbmcoImdsX0xhc3RGcmFnRGF0YSIpLCBsYXN0RnJhZ0Rh
dGEpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
IGlmIChyZXNvdXJjZXMuQVJNX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoRVNTTDFfQlVJTFRJTlMsICJH
TF9BUk1fc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfTGFzdEZyYWdDb2xv
ckFSTSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRUeXBlKEVidEZsb2F0LCBFYnBNZWRpdW0sIEV2cUxhc3RGcmFnQ29sb3IsIDQpKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgICBicmVhazsKIAotICAgICAgY2FzZSBHTF9W
RVJURVhfU0hBREVSOgotICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoQ09NTU9OX0JVSUxUSU5T
LCBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9Qb3NpdGlvbiIpLAotICAgICAgICAg
ICAgVFR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gsIEV2cVBvc2l0aW9uLCA0KSkpOwotICAgICAgICBz
eW1ib2xUYWJsZS5pbnNlcnQoQ09NTU9OX0JVSUxUSU5TLCBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xU
U3RyaW5nKCJnbF9Qb2ludFNpemUiKSwKLSAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBN
ZWRpdW0sIEV2cVBvaW50U2l6ZSwgMSkpKTsKLSAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KEVT
U0wzX0JVSUxUSU5TLCBuZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9JbnN0YW5jZUlE
IiksCi0gICAgICAgICAgICBUVHlwZShFYnRJbnQsIEVicEhpZ2gsIEV2cUluc3RhbmNlSUQsIDEp
KSk7Ci0gICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMM19CVUlMVElOUywgbmV3IFRWYXJp
YWJsZShOZXdQb29sVFN0cmluZygiZ2xfVmVydGV4SUQiKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEludCwgRWJwSGln
aCwgRXZxVmVydGV4SUQsIDEpKSk7CisgICAgICAgIGNhc2UgR0xfVkVSVEVYX1NIQURFUjoKKyAg
ICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChDT01NT05fQlVJTFRJTlMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfUG9z
aXRpb24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRU
eXBlKEVidEZsb2F0LCBFYnBIaWdoLCBFdnFQb3NpdGlvbiwgNCkpKTsKKyAgICAgICAgICAgIHN5
bWJvbFRhYmxlLmluc2VydChDT01NT05fQlVJTFRJTlMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfUG9pbnRTaXplIiksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRGbG9h
dCwgRWJwTWVkaXVtLCBFdnFQb2ludFNpemUsIDEpKSk7CisgICAgICAgICAgICBzeW1ib2xUYWJs
ZS5pbnNlcnQoRVNTTDNfQlVJTFRJTlMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmV3IFRWYXJpYWJsZShOZXdQb29sVFN0cmluZygiZ2xfSW5zdGFuY2VJRCIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0SW50LCBFYnBIaWdo
LCBFdnFJbnN0YW5jZUlELCAxKSkpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KEVT
U0wzX0JVSUxUSU5TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFi
bGUoTmV3UG9vbFRTdHJpbmcoImdsX1ZlcnRleElEIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRJbnQsIEVicEhpZ2gsIEV2cVZlcnRleElE
LCAxKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQ09NUFVURV9TSEFE
RVI6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMM18xX0JV
SUxUSU5TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUoTmV3
UG9vbFRTdHJpbmcoImdsX051bVdvcmtHcm91cHMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidFVJbnQsIEVicFVuZGVmaW5lZCwgRXZxTnVt
V29ya0dyb3VwcywgMykpKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NMM18x
X0JVSUxUSU5TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUo
TmV3UG9vbFRTdHJpbmcoImdsX1dvcmtHcm91cFNpemUiKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidFVJbnQsIEVicFVuZGVmaW5lZCwgRXZx
V29ya0dyb3VwU2l6ZSwgMykpKTsKKyAgICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2VydChFU1NM
M18xX0JVSUxUSU5TLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFi
bGUoTmV3UG9vbFRTdHJpbmcoImdsX1dvcmtHcm91cElEIiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZShFYnRVSW50LCBFYnBVbmRlZmluZWQsIEV2
cVdvcmtHcm91cElELCAzKSkpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KAorICAg
ICAgICAgICAgICAgIEVTU0wzXzFfQlVJTFRJTlMsCisgICAgICAgICAgICAgICAgbmV3IFRWYXJp
YWJsZShOZXdQb29sVFN0cmluZygiZ2xfTG9jYWxJbnZvY2F0aW9uSUQiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidFVJbnQsIEVicFVuZGVmaW5lZCwgRXZxTG9jYWxJ
bnZvY2F0aW9uSUQsIDMpKSk7CisgICAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQoCisgICAg
ICAgICAgICAgICAgRVNTTDNfMV9CVUlMVElOUywKKyAgICAgICAgICAgICAgICBuZXcgVFZhcmlh
YmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9HbG9iYWxJbnZvY2F0aW9uSUQiKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidFVJbnQsIEVicFVuZGVmaW5lZCwgRXZxR2xvYmFs
SW52b2NhdGlvbklELCAzKSkpOworICAgICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KAorICAg
ICAgICAgICAgICAgIEVTU0wzXzFfQlVJTFRJTlMsCisgICAgICAgICAgICAgICAgbmV3IFRWYXJp
YWJsZShOZXdQb29sVFN0cmluZygiZ2xfTG9jYWxJbnZvY2F0aW9uSW5kZXgiKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidFVJbnQsIEVicFVuZGVmaW5lZCwgRXZxTG9j
YWxJbnZvY2F0aW9uSW5kZXgsIDEpKSk7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEdMX0NPTVBVVEVfU0hBREVSOgotICAgICAgewotICAgICAgICAgIHN5bWJvbFRhYmxl
Lmluc2VydChFU1NMM18xX0JVSUxUSU5TLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
ZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9OdW1Xb3JrR3JvdXBzIiksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0VUludCwgRWJwVW5k
ZWZpbmVkLCBFdnFOdW1Xb3JrR3JvdXBzLCAzKSkpOwotICAgICAgICAgIHN5bWJvbFRhYmxlLmlu
c2VydChFU1NMM18xX0JVSUxUSU5TLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcg
VFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9Xb3JrR3JvdXBTaXplIiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0VUludCwgRWJwVW5kZWZp
bmVkLCBFdnFXb3JrR3JvdXBTaXplLCAzKSkpOwotICAgICAgICAgIHN5bWJvbFRhYmxlLmluc2Vy
dChFU1NMM18xX0JVSUxUSU5TLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVFZh
cmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9Xb3JrR3JvdXBJRCIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidFVJbnQsIEVicFVuZGVmaW5lZCwg
RXZxV29ya0dyb3VwSUQsIDMpKSk7Ci0gICAgICAgICAgc3ltYm9sVGFibGUuaW5zZXJ0KEVTU0wz
XzFfQlVJTFRJTlMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUVmFyaWFibGUo
TmV3UG9vbFRTdHJpbmcoImdsX0xvY2FsSW52b2NhdGlvbklEIiksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0VUludCwgRWJwVW5kZWZpbmVkLCBF
dnFMb2NhbEludm9jYXRpb25JRCwgMykpKTsKLSAgICAgICAgICBzeW1ib2xUYWJsZS5pbnNlcnQo
RVNTTDNfMV9CVUlMVElOUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRWYXJp
YWJsZShOZXdQb29sVFN0cmluZygiZ2xfR2xvYmFsSW52b2NhdGlvbklEIiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUoRWJ0VUludCwgRWJwVW5kZWZp
bmVkLCBFdnFHbG9iYWxJbnZvY2F0aW9uSUQsIDMpKSk7Ci0gICAgICAgICAgc3ltYm9sVGFibGUu
aW5zZXJ0KAotICAgICAgICAgICAgICBFU1NMM18xX0JVSUxUSU5TLAotICAgICAgICAgICAgICBu
ZXcgVFZhcmlhYmxlKE5ld1Bvb2xUU3RyaW5nKCJnbF9Mb2NhbEludm9jYXRpb25JbmRleCIpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidFVJbnQsIEVicFVuZGVmaW5lZCwg
RXZxTG9jYWxJbnZvY2F0aW9uSW5kZXgsIDEpKSk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLQot
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgYXNzZXJ0KGZhbHNlICYmICJMYW5ndWFnZSBub3Qgc3Vw
cG9ydGVkIik7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGFzc2VydChmYWxzZSAm
JiAiTGFuZ3VhZ2Ugbm90IHN1cHBvcnRlZCIpOwogICAgIH0KIH0KIAotdm9pZCBJbml0RXh0ZW5z
aW9uQmVoYXZpb3IoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzJiByZXNvdXJjZXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yKQordm9p
ZCBJbml0RXh0ZW5zaW9uQmVoYXZpb3IoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzICZyZXNvdXJj
ZXMsIFRFeHRlbnNpb25CZWhhdmlvciAmZXh0QmVoYXZpb3IpCiB7CiAgICAgaWYgKHJlc291cmNl
cy5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMpCiAgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9PRVNf
c3RhbmRhcmRfZGVyaXZhdGl2ZXMiXSA9IEVCaFVuZGVmaW5lZDsKQEAgLTcyMywxNCArOTQ4LDIz
IEBAIHZvaWQgSW5pdEV4dGVuc2lvbkJlaGF2aW9yKGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYg
cmVzb3VyY2VzLAogICAgICAgICBleHRCZWhhdmlvclsiR0xfTlZfc2hhZGVyX2ZyYW1lYnVmZmVy
X2ZldGNoIl0gPSBFQmhVbmRlZmluZWQ7CiAgICAgaWYgKHJlc291cmNlcy5BUk1fc2hhZGVyX2Zy
YW1lYnVmZmVyX2ZldGNoKQogICAgICAgICBleHRCZWhhdmlvclsiR0xfQVJNX3NoYWRlcl9mcmFt
ZWJ1ZmZlcl9mZXRjaCJdID0gRUJoVW5kZWZpbmVkOworICAgIGlmIChyZXNvdXJjZXMuT1ZSX211
bHRpdmlldykKKyAgICB7CisgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9PVlJfbXVsdGl2aWV3Il0g
ID0gRUJoVW5kZWZpbmVkOworICAgICAgICBleHRCZWhhdmlvclsiR0xfT1ZSX211bHRpdmlldzIi
XSA9IEVCaFVuZGVmaW5lZDsKKyAgICB9CisgICAgaWYgKHJlc291cmNlcy5FWFRfWVVWX3Rhcmdl
dCkKKyAgICB7CisgICAgICAgIGV4dEJlaGF2aW9yWyJHTF9FWFRfWVVWX3RhcmdldCJdID0gRUJo
VW5kZWZpbmVkOworICAgIH0KIH0KIAogdm9pZCBSZXNldEV4dGVuc2lvbkJlaGF2aW9yKFRFeHRl
bnNpb25CZWhhdmlvciAmZXh0QmVoYXZpb3IpCiB7Ci0gICAgZm9yIChhdXRvIGV4dF9pdGVyID0g
ZXh0QmVoYXZpb3IuYmVnaW4oKTsKLSAgICAgICAgIGV4dF9pdGVyICE9IGV4dEJlaGF2aW9yLmVu
ZCgpOwotICAgICAgICAgKytleHRfaXRlcikKKyAgICBmb3IgKGF1dG8gZXh0X2l0ZXIgPSBleHRC
ZWhhdmlvci5iZWdpbigpOyBleHRfaXRlciAhPSBleHRCZWhhdmlvci5lbmQoKTsgKytleHRfaXRl
cikKICAgICB7CiAgICAgICAgIGV4dF9pdGVyLT5zZWNvbmQgPSBFQmhVbmRlZmluZWQ7CiAgICAg
fQogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemUuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemUuaAppbmRleCBj
NDNjZTM0MTdhMi4uMmU2MTIxOGEwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemUuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplLmgKQEAgLTEx
LDE0ICsxMSwyMSBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQ29tcGlsZXIuaCIK
ICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmgiCiAKLXZvaWQgSW5z
ZXJ0QnVpbHRJbkZ1bmN0aW9ucyhzaDo6R0xlbnVtIHR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjLCBj
b25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMgJnJlc291cmNlcywgVFN5bWJvbFRhYmxlICZ0YWJsZSk7
CituYW1lc3BhY2Ugc2gKK3sKIAotdm9pZCBJZGVudGlmeUJ1aWx0SW5zKHNoOjpHTGVudW0gdHlw
ZSwgU2hTaGFkZXJTcGVjIHNwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hCdWls
dEluUmVzb3VyY2VzJiByZXNvdXJjZXMsCi0gICAgICAgICAgICAgICAgICAgICAgVFN5bWJvbFRh
YmxlJiBzeW1ib2xUYWJsZSk7Cit2b2lkIEluc2VydEJ1aWx0SW5GdW5jdGlvbnMoc2g6OkdMZW51
bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyU3BlYyBzcGVjLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVz
b3VyY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRTeW1ib2xUYWJsZSAmdGFibGUp
OwogCi12b2lkIEluaXRFeHRlbnNpb25CZWhhdmlvcihjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMm
IHJlc291cmNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFRFeHRlbnNpb25CZWhhdmlv
ciYgZXh0ZW5zaW9uQmVoYXZpb3IpOwordm9pZCBJZGVudGlmeUJ1aWx0SW5zKHNoOjpHTGVudW0g
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICBTaFNoYWRlclNwZWMgc3BlYywKKyAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMgJnJlc291cmNlcywKKyAgICAg
ICAgICAgICAgICAgICAgICBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlKTsKKwordm9pZCBJbml0
RXh0ZW5zaW9uQmVoYXZpb3IoY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzICZyZXNvdXJjZXMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBURXh0ZW5zaW9uQmVoYXZpb3IgJmV4dGVuc2lvbkJl
aGF2aW9yKTsKIAogLy8gUmVzZXRzIHRoZSBiZWhhdmlvciBvZiB0aGUgZXh0ZW5zaW9ucyBsaXN0
ZWQgaW4gfGV4dGVuc2lvbkJlaGF2aW9yfCB0byB0aGUKIC8vIHVuZGVmaW5lZCBzdGF0ZS4gVGhl
c2UgZXh0ZW5zaW9ucyB3aWxsIG9ubHkgYmUgdGhvc2UgaW5pdGlhbGx5IHN1cHBvcnRlZCBpbgpA
QCAtMjYsNCArMzMsNiBAQCB2b2lkIEluaXRFeHRlbnNpb25CZWhhdmlvcihjb25zdCBTaEJ1aWx0
SW5SZXNvdXJjZXMmIHJlc291cmNlcywKIC8vIGV4dGVuc2lvbnMgd2lsbCByZW1haW4gdW5zdXBw
b3J0ZWQuCiB2b2lkIFJlc2V0RXh0ZW5zaW9uQmVoYXZpb3IoVEV4dGVuc2lvbkJlaGF2aW9yICZl
eHRlbnNpb25CZWhhdmlvcik7CiAKLSNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0lOSVRJ
QUxJWkVfSF8KK30gIC8vIG5hbWVzcGFjZSBzaAorCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5T
TEFUT1JfSU5JVElBTElaRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZURsbC5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplRGxsLmNwcAppbmRl
eCA3MTM5NjUzODlmYS4uNDNjMjE1ZjUyYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVEbGwuY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVE
bGwuY3BwCkBAIC03LDI0ICs3LDIyIEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9D
YWNoZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZURsbC5oIgog
I2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZUdsb2JhbHMuaCIKLSNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVQYXJzZUNvbnRleHQuaCIKIAogI2lu
Y2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgogCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKK25hbWVz
cGFjZSBzaAoreworCiBib29sIEluaXRQcm9jZXNzKCkKIHsKLSAgICBpZiAoIUluaXRpYWxpemVQ
b29sSW5kZXgoKSkgeworICAgIGlmICghSW5pdGlhbGl6ZVBvb2xJbmRleCgpKQorICAgIHsKICAg
ICAgICAgYXNzZXJ0KDAgJiYgIkluaXRQcm9jZXNzKCk6IEZhaWxlZCB0byBpbml0YWxpemUgZ2xv
YmFsIHBvb2wiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghSW5p
dGlhbGl6ZVBhcnNlQ29udGV4dEluZGV4KCkpIHsKLSAgICAgICAgYXNzZXJ0KDAgJiYgIkluaXRQ
cm9jZXNzKCk6IEZhaWxlZCB0byBpbml0YWxpemUgcGFyc2UgY29udGV4dCIpOwotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgVENhY2hlOjppbml0aWFsaXplKCk7CiAKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTMyLDcgKzMwLDggQEAgYm9vbCBJbml0UHJvY2VzcygpCiAKIHZvaWQg
RGV0YWNoUHJvY2VzcygpCiB7Ci0gICAgRnJlZVBhcnNlQ29udGV4dEluZGV4KCk7CiAgICAgRnJl
ZVBvb2xJbmRleCgpOwogICAgIFRDYWNoZTo6ZGVzdHJveSgpOwogfQorCit9ICAvLyBuYW1lc3Bh
Y2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0luaXRpYWxpemVEbGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVEbGwuaAppbmRleCA0YzQwMDc2MGY2My4uODdm
NzI1MTQ3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL0luaXRpYWxpemVEbGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplRGxsLmgKQEAgLTYsOCArNiwxMCBA
QAogI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX0lOSVRJQUxJWkVETExfSF8KICNkZWZpbmUg
Q09NUElMRVJfVFJBTlNMQVRPUl9JTklUSUFMSVpFRExMX0hfCiAKK25hbWVzcGFjZSBzaAorewog
Ym9vbCBJbml0UHJvY2VzcygpOwogdm9pZCBEZXRhY2hQcm9jZXNzKCk7Cit9ICAvLyBuYW1lc3Bh
Y2Ugc2gKIAotI2VuZGlmIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfSU5JVElBTElaRURMTF9IXwot
CisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfSU5JVElBTElaRURMTF9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5p
dGlhbGl6ZUdsb2JhbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0luaXRpYWxpemVHbG9iYWxzLmgKaW5kZXggOGM2NWNiMjhkYTMuLjlhNjdlZDBl
MDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9Jbml0aWFsaXplR2xvYmFscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVHbG9iYWxzLmgKQEAgLTEwLDQgKzEw
LDQgQEAKIGJvb2wgSW5pdGlhbGl6ZVBvb2xJbmRleCgpOwogdm9pZCBGcmVlUG9vbEluZGV4KCk7
CiAKLSNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0lOSVRJQUxJWkVHTE9CQUxTX0hfCisj
ZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfSU5JVElBTElaRUdMT0JBTFNfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0lu
aXRpYWxpemVQYXJzZUNvbnRleHQuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGMzNWNlZGIzNDhiLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplUGFyc2VD
b250ZXh0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8vCi0vLyBDb3B5cmln
aHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwot
Ci0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplUGFyc2VDb250ZXh0Lmgi
Ci0KLSNpbmNsdWRlICJjb21tb24vdGxzLmgiCi0KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLQotVExT
SW5kZXggR2xvYmFsUGFyc2VDb250ZXh0SW5kZXggPSBUTFNfSU5WQUxJRF9JTkRFWDsKLQotYm9v
bCBJbml0aWFsaXplUGFyc2VDb250ZXh0SW5kZXgoKQotewotICAgIGFzc2VydChHbG9iYWxQYXJz
ZUNvbnRleHRJbmRleCA9PSBUTFNfSU5WQUxJRF9JTkRFWCk7Ci0KLSAgICBHbG9iYWxQYXJzZUNv
bnRleHRJbmRleCA9IENyZWF0ZVRMU0luZGV4KCk7Ci0gICAgcmV0dXJuIEdsb2JhbFBhcnNlQ29u
dGV4dEluZGV4ICE9IFRMU19JTlZBTElEX0lOREVYOwotfQotCi12b2lkIEZyZWVQYXJzZUNvbnRl
eHRJbmRleCgpCi17Ci0gICAgYXNzZXJ0KEdsb2JhbFBhcnNlQ29udGV4dEluZGV4ICE9IFRMU19J
TlZBTElEX0lOREVYKTsKLQotICAgIERlc3Ryb3lUTFNJbmRleChHbG9iYWxQYXJzZUNvbnRleHRJ
bmRleCk7Ci0gICAgR2xvYmFsUGFyc2VDb250ZXh0SW5kZXggPSBUTFNfSU5WQUxJRF9JTkRFWDsK
LX0KLQotdm9pZCBTZXRHbG9iYWxQYXJzZUNvbnRleHQoVFBhcnNlQ29udGV4dCogY29udGV4dCkK
LXsKLSAgICBhc3NlcnQoR2xvYmFsUGFyc2VDb250ZXh0SW5kZXggIT0gVExTX0lOVkFMSURfSU5E
RVgpOwotICAgIFNldFRMU1ZhbHVlKEdsb2JhbFBhcnNlQ29udGV4dEluZGV4LCBjb250ZXh0KTsK
LX0KLQotVFBhcnNlQ29udGV4dCogR2V0R2xvYmFsUGFyc2VDb250ZXh0KCkKLXsKLSAgICBhc3Nl
cnQoR2xvYmFsUGFyc2VDb250ZXh0SW5kZXggIT0gVExTX0lOVkFMSURfSU5ERVgpOwotICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxUUGFyc2VDb250ZXh0Kj4oR2V0VExTVmFsdWUoR2xvYmFsUGFyc2VD
b250ZXh0SW5kZXgpKTsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZVBhcnNl
Q29udGV4dC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MGRhYzcwMmUyMy4uMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvSW5pdGlhbGl6ZVBhcnNlQ29udGV4dC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAs
MCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX0lO
SVRJQUxJWkVQQVJTRUNPTlRFWFRfSF8KLSNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9JTklU
SUFMSVpFUEFSU0VDT05URVhUX0hfCi0KLWJvb2wgSW5pdGlhbGl6ZVBhcnNlQ29udGV4dEluZGV4
KCk7Ci12b2lkIEZyZWVQYXJzZUNvbnRleHRJbmRleCgpOwotCi1jbGFzcyBUUGFyc2VDb250ZXh0
OwotZXh0ZXJuIHZvaWQgU2V0R2xvYmFsUGFyc2VDb250ZXh0KFRQYXJzZUNvbnRleHQqIGNvbnRl
eHQpOwotZXh0ZXJuIFRQYXJzZUNvbnRleHQqIEdldEdsb2JhbFBhcnNlQ29udGV4dCgpOwotCi0j
ZW5kaWYgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9JTklUSUFMSVpFUEFSU0VDT05URVhUX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9Jbml0aWFsaXplVmFyaWFibGVzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVWYXJpYWJsZXMuY3BwCmluZGV4IDJkZWZmMGM1
ZWYxLi44Y2I1MGFlMTg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZVZhcmlhYmxlcy5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlhbGl6ZVZhcmlh
Ymxlcy5jcHAKQEAgLTksMTcgKzksMjUgQEAKICNpbmNsdWRlICJhbmdsZV9nbC5oIgogI2luY2x1
ZGUgImNvbW1vbi9kZWJ1Zy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJt
Tm9kZS5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFibGUuaCIKICNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL3V0aWwuaCIKIAorbmFtZXNwYWNlIHNoCit7CisK
IG5hbWVzcGFjZQogewogCiBjbGFzcyBWYXJpYWJsZUluaXRpYWxpemVyIDogcHVibGljIFRJbnRl
cm1UcmF2ZXJzZXIKIHsKICAgcHVibGljOgotICAgIFZhcmlhYmxlSW5pdGlhbGl6ZXIoY29uc3Qg
SW5pdFZhcmlhYmxlTGlzdCAmdmFycykKLSAgICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUs
IGZhbHNlLCBmYWxzZSksIG1WYXJpYWJsZXModmFycyksIG1Db2RlSW5zZXJ0ZWQoZmFsc2UpCisg
ICAgVmFyaWFibGVJbml0aWFsaXplcihjb25zdCBJbml0VmFyaWFibGVMaXN0ICZ2YXJzLCBjb25z
dCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlKQorICAgICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIo
dHJ1ZSwgZmFsc2UsIGZhbHNlKSwKKyAgICAgICAgICBtVmFyaWFibGVzKHZhcnMpLAorICAgICAg
ICAgIG1TeW1ib2xUYWJsZShzeW1ib2xUYWJsZSksCisgICAgICAgICAgbUNvZGVJbnNlcnRlZChm
YWxzZSkKICAgICB7CisgICAgICAgIEFTU0VSVChtU3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgp
KTsKICAgICB9CiAKICAgcHJvdGVjdGVkOgpAQCAtMzYsNiArNDQsNyBAQCBjbGFzcyBWYXJpYWJs
ZUluaXRpYWxpemVyIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICB2b2lkIGluc2VydElu
aXRDb2RlKFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVuY2UpOwogCiAgICAgY29uc3QgSW5pdFZhcmlh
YmxlTGlzdCAmbVZhcmlhYmxlczsKKyAgICBjb25zdCBUU3ltYm9sVGFibGUgJm1TeW1ib2xUYWJs
ZTsKICAgICBib29sIG1Db2RlSW5zZXJ0ZWQ7CiB9OwogCkBAIC01OSwyNSArNjgsMzEgQEAgdm9p
ZCBWYXJpYWJsZUluaXRpYWxpemVyOjppbnNlcnRJbml0Q29kZShUSW50ZXJtU2VxdWVuY2UgKnNl
cXVlbmNlKQogICAgIGZvciAoY29uc3QgYXV0byAmdmFyIDogbVZhcmlhYmxlcykKICAgICB7CiAg
ICAgICAgIFRTdHJpbmcgbmFtZSA9IFRTdHJpbmcodmFyLm5hbWUuY19zdHIoKSk7Ci0gICAgICAg
IFRUeXBlIHR5cGUgICA9IHNoOjpHZXRTaGFkZXJWYXJpYWJsZVR5cGUodmFyKTsKIAotICAgICAg
ICAvLyBBc3NpZ24gdGhlIGFycmF5IGVsZW1lbnRzIG9uZSBieSBvbmUgdG8ga2VlcCB0aGUgQVNU
IGNvbXBhdGlibGUgd2l0aCBFU1NMIDEuMDAgd2hpY2gKLSAgICAgICAgLy8gZG9lc24ndCBoYXZl
IGFycmF5IGFzc2lnbm1lbnQuCiAgICAgICAgIGlmICh2YXIuaXNBcnJheSgpKQogICAgICAgICB7
CisgICAgICAgICAgICAvLyBBc3NpZ24gdGhlIGFycmF5IGVsZW1lbnRzIG9uZSBieSBvbmUgdG8g
a2VlcCB0aGUgQVNUIGNvbXBhdGlibGUgd2l0aCBFU1NMIDEuMDAgd2hpY2gKKyAgICAgICAgICAg
IC8vIGRvZXNuJ3QgaGF2ZSBhcnJheSBhc3NpZ25tZW50LgogICAgICAgICAgICAgc2l6ZV90IHBv
cyA9IG5hbWUuZmluZF9sYXN0X29mKCdbJyk7CiAgICAgICAgICAgICBpZiAocG9zICE9IFRTdHJp
bmc6Om5wb3MpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3Vi
c3RyKDAsIHBvcyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBUVHlwZSBlbGVtZW50VHlw
ZSA9IHR5cGU7Ci0gICAgICAgICAgICBlbGVtZW50VHlwZS5jbGVhckFycmF5bmVzcygpOwotCi0g
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHZhci5hcnJheVNpemU7ICsr
aSkKKyAgICAgICAgICAgIFRUeXBlIGVsZW1lbnRUeXBlID0gc2g6OkdldFNoYWRlclZhcmlhYmxl
QmFzaWNUeXBlKHZhcik7CisgICAgICAgICAgICBUVHlwZSBhcnJheVR5cGUgICA9IGVsZW1lbnRU
eXBlOworICAgICAgICAgICAgYXJyYXlUeXBlLnNldEFycmF5U2l6ZSh2YXIuZWxlbWVudENvdW50
KCkpOworCisgICAgICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciBodHRwOi8vY3JidWcuY29tLzcw
OTMxNworICAgICAgICAgICAgLy8gICBUaGlzIGxvb3AgaXMgcmV2ZXJzZWQgdG8gaW5pdGlhbGl6
ZSBlbGVtZW50cyBpbiBpbmNyZWFzaW5nCisgICAgICAgICAgICAvLyBvcmRlciBbMCAxIDIgLi4u
XS4gT3RoZXJ3aXNlLCB0aGV5J3JlIGluaXRpYWxpemVkIGluCisgICAgICAgICAgICAvLyBkZWNy
ZWFzaW5nIG9yZGVyIFsuLi4gMiAxIDBdLCBkdWUgdG8KKyAgICAgICAgICAgIC8vIGBzZXF1ZW5j
ZS0+aW5zZXJ0KHNlcXVlbmNlLT5iZWdpbigpLCAuLi4pYCBiZWxvdy4KKyAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSB2YXIuYXJyYXlTaXplOyBpID4gMDsgLS1pKQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKmFycmF5U3ltYm9sID0gbmV3IFRJ
bnRlcm1TeW1ib2woMCwgbmFtZSwgdHlwZSk7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50
IGluZGV4ID0gaSAtIDE7CisgICAgICAgICAgICAgICAgVEludGVybVN5bWJvbCAqYXJyYXlTeW1i
b2wgPSBuZXcgVEludGVybVN5bWJvbCgwLCBuYW1lLCBhcnJheVR5cGUpOwogICAgICAgICAgICAg
ICAgIFRJbnRlcm1CaW5hcnkgKmVsZW1lbnQgICAgID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9wSW5k
ZXhEaXJlY3QsIGFycmF5U3ltYm9sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQ6OkNyZWF0ZUluZGV4Tm9kZShp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJbnRlcm1UeXBlZDo6Q3JlYXRlSW5kZXhOb2RlKGluZGV4KSk7CiAKICAgICAgICAg
ICAgICAgICBUSW50ZXJtVHlwZWQgKnplcm8gICAgICAgID0gVEludGVybVR5cGVkOjpDcmVhdGVa
ZXJvKGVsZW1lbnRUeXBlKTsKICAgICAgICAgICAgICAgICBUSW50ZXJtQmluYXJ5ICphc3NpZ25t
ZW50ID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9wQXNzaWduLCBlbGVtZW50LCB6ZXJvKTsKQEAgLTg1
LDggKzEwMCwyMCBAQCB2b2lkIFZhcmlhYmxlSW5pdGlhbGl6ZXI6Omluc2VydEluaXRDb2RlKFRJ
bnRlcm1TZXF1ZW5jZSAqc2VxdWVuY2UpCiAgICAgICAgICAgICAgICAgc2VxdWVuY2UtPmluc2Vy
dChzZXF1ZW5jZS0+YmVnaW4oKSwgYXNzaWdubWVudCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KKyAgICAgICAgZWxzZSBpZiAodmFyLmlzU3RydWN0KCkpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIFRWYXJpYWJsZSAqc3RydWN0SW5mbyA9IHJlaW50ZXJwcmV0X2Nhc3Q8VFZhcmlhYmxlICo+
KG1TeW1ib2xUYWJsZS5maW5kR2xvYmFsKG5hbWUpKTsKKyAgICAgICAgICAgIEFTU0VSVChzdHJ1
Y3RJbmZvKTsKKworICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gbmV3IFRJbnRl
cm1TeW1ib2woMCwgbmFtZSwgc3RydWN0SW5mby0+Z2V0VHlwZSgpKTsKKyAgICAgICAgICAgIFRJ
bnRlcm1UeXBlZCAqemVybyAgICA9IFRJbnRlcm1UeXBlZDo6Q3JlYXRlWmVybyhzdHJ1Y3RJbmZv
LT5nZXRUeXBlKCkpOworCisgICAgICAgICAgICBUSW50ZXJtQmluYXJ5ICphc3NpZ24gPSBuZXcg
VEludGVybUJpbmFyeShFT3BBc3NpZ24sIHN5bWJvbCwgemVybyk7CisgICAgICAgICAgICBzZXF1
ZW5jZS0+aW5zZXJ0KHNlcXVlbmNlLT5iZWdpbigpLCBhc3NpZ24pOworICAgICAgICB9CiAgICAg
ICAgIGVsc2UKICAgICAgICAgeworICAgICAgICAgICAgVFR5cGUgdHlwZSAgICAgICAgICAgID0g
c2g6OkdldFNoYWRlclZhcmlhYmxlQmFzaWNUeXBlKHZhcik7CiAgICAgICAgICAgICBUSW50ZXJt
U3ltYm9sICpzeW1ib2wgPSBuZXcgVEludGVybVN5bWJvbCgwLCBuYW1lLCB0eXBlKTsKICAgICAg
ICAgICAgIFRJbnRlcm1UeXBlZCAqemVybyAgICA9IFRJbnRlcm1UeXBlZDo6Q3JlYXRlWmVybyh0
eXBlKTsKIApAQCAtOTgsOCArMTI1LDEyIEBAIHZvaWQgVmFyaWFibGVJbml0aWFsaXplcjo6aW5z
ZXJ0SW5pdENvZGUoVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSkKIAogfSAgLy8gbmFtZXNwYWNl
IGFub255bW91cwogCi12b2lkIEluaXRpYWxpemVWYXJpYWJsZXMoVEludGVybU5vZGUgKnJvb3Qs
IGNvbnN0IEluaXRWYXJpYWJsZUxpc3QgJnZhcnMpCit2b2lkIEluaXRpYWxpemVWYXJpYWJsZXMo
VEludGVybU5vZGUgKnJvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW5pdFZh
cmlhYmxlTGlzdCAmdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9s
VGFibGUgJnN5bWJvbFRhYmxlKQogewotICAgIFZhcmlhYmxlSW5pdGlhbGl6ZXIgaW5pdGlhbGl6
ZXIodmFycyk7CisgICAgVmFyaWFibGVJbml0aWFsaXplciBpbml0aWFsaXplcih2YXJzLCBzeW1i
b2xUYWJsZSk7CiAgICAgcm9vdC0+dHJhdmVyc2UoJmluaXRpYWxpemVyKTsKIH0KKworfSAgLy8g
bmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplVmFyaWFibGVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplVmFyaWFibGVzLmgKaW5k
ZXggZGNlMTA4M2Y2NmIuLjlhMzQyNDVhNTNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Jbml0aWFsaXplVmFyaWFibGVzLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5pdGlh
bGl6ZVZhcmlhYmxlcy5oCkBAIC05LDExICs5LDIzIEBACiAKICNpbmNsdWRlIDxHTFNMQU5HL1No
YWRlckxhbmcuaD4KIAorbmFtZXNwYWNlIHNoCit7CiBjbGFzcyBUSW50ZXJtTm9kZTsKK2NsYXNz
IFRTeW1ib2xUYWJsZTsKIAogdHlwZWRlZiBzdGQ6OnZlY3RvcjxzaDo6U2hhZGVyVmFyaWFibGU+
IEluaXRWYXJpYWJsZUxpc3Q7CiAKLS8vIFRoaXMgZnVuY3Rpb24gY2Fubm90IGN1cnJlbnRseSBp
bml0aWFsaXplIHN0cnVjdHVyZXMgY29udGFpbmluZyBhcnJheXMgZm9yIGFuIEVTU0wgMS4wMCBi
YWNrZW5kLgotdm9pZCBJbml0aWFsaXplVmFyaWFibGVzKFRJbnRlcm1Ob2RlICpyb290LCBjb25z
dCBJbml0VmFyaWFibGVMaXN0ICZ2YXJzKTsKKy8vIEN1cnJlbnRseSB0aGlzIGZ1bmN0aW9uIGlz
IG9ubHkgY2FwYWJsZSBvZiBpbml0aWFsaXppbmcgdmFyaWFibGVzIG9mIGJhc2ljIHR5cGVzLAor
Ly8gYXJyYXkgb2YgYmFzaWMgdHlwZXMsIG9yIHN0cnVjdCBvZiBiYXNpYyB0eXBlcy4KKy8vIEZv
ciBub3cgaXQgaXMgdXNlZCBmb3IgdGhlIGZvbGxvd2luZyB0d28gc2NlbmFyaW9zOgorLy8gICAx
LiBpbml0aWFsaXppbmcgZ2xfUG9zaXRpb247CisvLyAgIDIuIGluaXRpYWxpemluZyBFU1NMIDMu
MDAgc2hhZGVycycgb3V0cHV0IHZhcmlhYmxlcyAod2hpY2ggbWlnaHQgYmUgc3RydWN0cykuCisv
LyBTcGVjaWZpY2FsbHksIGl0J3Mgbm90IGZlYXNpYmxlIHRvIG1ha2UgaXQgd29yayBmb3IgbG9j
YWwgdmFyaWFibGVzIGJlY2F1c2UgaWYgdGhlaXIKKy8vIHR5cGVzIGFyZSBzdHJ1Y3RzLCB3ZSBj
YW4ndCBsb29rIGludG8gVFN5bWJvbFRhYmxlIHRvIGZpbmQgdGhlIFRUeXBlIGRhdGEuCit2b2lk
IEluaXRpYWxpemVWYXJpYWJsZXMoVEludGVybU5vZGUgKnJvb3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgSW5pdFZhcmlhYmxlTGlzdCAmdmFycywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlKTsKK30gIC8vIG5hbWVzcGFj
ZSBzaAogCiAjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfSU5JVElBTElaRVZBUklBQkxF
U19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvSW50ZXJtTm9kZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmNwcAppbmRleCAwYWNmZTQwZTdlNy4uZTYzODQ4
YTQ2NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0ludGVybU5vZGUuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuY3BwCkBAIC0yMywxMCArMjMsMTMgQEAK
ICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmgiCiAjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBuYW1lc3Bh
Y2UKIHsKIAotY29uc3QgZmxvYXQga1BpID0gMy4xNDE1OTI2NTM1ODk3OTMyMzg0NmY7Citjb25z
dCBmbG9hdCBrUGkgICAgICAgICAgICAgICAgICAgICAgICAgPSAzLjE0MTU5MjY1MzU4OTc5MzIz
ODQ2ZjsKIGNvbnN0IGZsb2F0IGtEZWdyZWVzVG9SYWRpYW5zTXVsdGlwbGllciA9IGtQaSAvIDE4
MC4wZjsKIGNvbnN0IGZsb2F0IGtSYWRpYW5zVG9EZWdyZWVzTXVsdGlwbGllciA9IDE4MC4wZiAv
IGtQaTsKIApAQCAtMzksNyArNDIsNyBAQCBUQ29uc3RhbnRVbmlvbiAqVmVjdG9yaXplKGNvbnN0
IFRDb25zdGFudFVuaW9uICZjb25zdGFudCwgc2l6ZV90IHNpemUpCiB7CiAgICAgVENvbnN0YW50
VW5pb24gKmNvbnN0VW5pb24gPSBuZXcgVENvbnN0YW50VW5pb25bc2l6ZV07CiAgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIGNvbnN0VW5pb25baV0g
PSBjb25zdGFudDsKKyAgICAgICAgY29uc3RVbmlvbltpXSAgID0gY29uc3RhbnQ7CiAKICAgICBy
ZXR1cm4gY29uc3RVbmlvbjsKIH0KQEAgLTUxLDI0ICs1NCwyNCBAQCB2b2lkIFVuZGVmaW5lZENv
bnN0YW50Rm9sZGluZ0Vycm9yKGNvbnN0IFRTb3VyY2VMb2MgJmxvYywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVENvbnN0YW50VW5pb24gKnJlc3VsdCkKIHsKICAgICBkaWFn
bm9zdGljcy0+d2FybmluZyhsb2MsICJvcGVyYXRpb24gcmVzdWx0IGlzIHVuZGVmaW5lZCBmb3Ig
dGhlIHZhbHVlcyBwYXNzZWQgaW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgIEdldE9wZXJh
dG9yU3RyaW5nKG9wKSwgIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgIEdldE9wZXJhdG9y
U3RyaW5nKG9wKSk7CiAKICAgICBzd2l0Y2ggKGJhc2ljVHlwZSkKICAgICB7Ci0gICAgICBjYXNl
IEVidEZsb2F0IDoKLSAgICAgICAgcmVzdWx0LT5zZXRGQ29uc3QoMC4wZik7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgIHJlc3VsdC0+c2V0SUNvbnN0KDApOwot
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0VUludDoKLSAgICAgICAgcmVzdWx0LT5zZXRV
Q29uc3QoMHUpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAg
cmVzdWx0LT5zZXRCQ29uc3QoZmFsc2UpOwotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidEZsb2F0OgorICAgICAgICAgICAgcmVz
dWx0LT5zZXRGQ29uc3QoMC4wZik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBF
YnRJbnQ6CisgICAgICAgICAgICByZXN1bHQtPnNldElDb25zdCgwKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICByZXN1bHQtPnNldFVDb25z
dCgwdSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRCb29sOgorICAgICAg
ICAgICAgcmVzdWx0LT5zZXRCQ29uc3QoZmFsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKICAgICB9CiB9CiAKQEAgLTEzNCw3ICsx
MzcsNyBAQCB2b2lkIFNldFVuaW9uQXJyYXlGcm9tTWF0cml4KGNvbnN0IGFuZ2xlOjpNYXRyaXg8
ZmxvYXQ+ICZtLCBUQ29uc3RhbnRVbmlvbiAqcmVzdQogewogICAgIC8vIFRyYW5zcG9zZSBpcyB1
c2VkIHNpbmNlIHRoZSBpbnB1dCBNYXRyaXggaXMgaW4gcm93LW1ham9yIG9yZGVyLAogICAgIC8v
IHdoZXJlYXMgdGhlIGFjdHVhbCByZXN1bHQgc2hvdWxkIGJlIGluIGNvbHVtbi1tYWpvciBvcmRl
ci4KLSAgICBhbmdsZTo6TWF0cml4PGZsb2F0PiByZXN1bHQgPSBtLnRyYW5zcG9zZSgpOworICAg
IGFuZ2xlOjpNYXRyaXg8ZmxvYXQ+IHJlc3VsdCAgICAgICA9IG0udHJhbnNwb3NlKCk7CiAgICAg
c3RkOjp2ZWN0b3I8ZmxvYXQ+IHJlc3VsdEVsZW1lbnRzID0gcmVzdWx0LmVsZW1lbnRzKCk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXN1bHRFbGVtZW50cy5zaXplKCk7IGkrKykKICAg
ICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KHJlc3VsdEVsZW1lbnRzW2ldKTsKQEAgLTE0
Miw3ICsxNDUsNiBAQCB2b2lkIFNldFVuaW9uQXJyYXlGcm9tTWF0cml4KGNvbnN0IGFuZ2xlOjpN
YXRyaXg8ZmxvYXQ+ICZtLCBUQ29uc3RhbnRVbmlvbiAqcmVzdQogCiB9ICAvLyBuYW1lc3BhY2Ug
YW5vbnltb3VzCiAKLQogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8KIC8vIE1lbWJlciBmdW5jdGlvbnMgb2YgdGhlIG5v
ZGVzIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSB0cmVlLgpAQCAtMTUyLDE5ICsxNTQsMTkgQEAgdm9p
ZCBTZXRVbmlvbkFycmF5RnJvbU1hdHJpeChjb25zdCBhbmdsZTo6TWF0cml4PGZsb2F0PiAmbSwg
VENvbnN0YW50VW5pb24gKnJlc3UKIHZvaWQgVEludGVybVR5cGVkOjpzZXRUeXBlUHJlc2VydmVQ
cmVjaXNpb24oY29uc3QgVFR5cGUgJnQpCiB7CiAgICAgVFByZWNpc2lvbiBwcmVjaXNpb24gPSBn
ZXRQcmVjaXNpb24oKTsKLSAgICBtVHlwZSA9IHQ7CisgICAgbVR5cGUgICAgICAgICAgICAgICAg
PSB0OwogICAgIEFTU0VSVChtVHlwZS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRCb29sIHx8IHByZWNp
c2lvbiA9PSBFYnBVbmRlZmluZWQpOwogICAgIG1UeXBlLnNldFByZWNpc2lvbihwcmVjaXNpb24p
OwogfQogCiAjZGVmaW5lIFJFUExBQ0VfSUZfSVMobm9kZSwgdHlwZSwgb3JpZ2luYWwsIHJlcGxh
Y2VtZW50KSBcCi0gICAgaWYgKG5vZGUgPT0gb3JpZ2luYWwpIHsgXAotICAgICAgICBub2RlID0g
c3RhdGljX2Nhc3Q8dHlwZSAqPihyZXBsYWNlbWVudCk7IFwKLSAgICAgICAgcmV0dXJuIHRydWU7
IFwKKyAgICBpZiAobm9kZSA9PSBvcmlnaW5hbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgbm9kZSA9IHN0YXRpY19jYXN0PHR5cGUgKj4ocmVwbGFjZW1lbnQp
OyAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIHRydWU7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICB9CiAKLWJvb2wgVEludGVybUxvb3A6OnJlcGxhY2VDaGlsZE5v
ZGUoCi0gICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQp
Citib29sIFRJbnRlcm1Mb29wOjpyZXBsYWNlQ2hpbGROb2RlKFRJbnRlcm1Ob2RlICpvcmlnaW5h
bCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KQogewogICAgIEFTU0VSVChvcmlnaW5hbCAhPSBu
dWxscHRyKTsgIC8vIFRoaXMgcmlza3MgcmVwbGFjaW5nIG11bHRpcGxlIGNoaWxkcmVuLgogICAg
IFJFUExBQ0VfSUZfSVMobUluaXQsIFRJbnRlcm1Ob2RlLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQp
OwpAQCAtMTc0LDggKzE3Niw3IEBAIGJvb2wgVEludGVybUxvb3A6OnJlcGxhY2VDaGlsZE5vZGUo
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRJbnRlcm1CcmFuY2g6OnJlcGxhY2VDaGls
ZE5vZGUoCi0gICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1l
bnQpCitib29sIFRJbnRlcm1CcmFuY2g6OnJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9y
aWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCiB7CiAgICAgUkVQTEFDRV9JRl9JUyht
RXhwcmVzc2lvbiwgVEludGVybVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOwogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTE4OCwzMSArMTg5LDM0IEBAIGJvb2wgVEludGVybVN3aXp6bGU6OnJl
cGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFj
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRJbnRlcm1CaW5hcnk6OnJlcGxhY2VDaGls
ZE5vZGUoCi0gICAgVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1l
bnQpCitib29sIFRJbnRlcm1CaW5hcnk6OnJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9y
aWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCiB7CiAgICAgUkVQTEFDRV9JRl9JUyht
TGVmdCwgVEludGVybVR5cGVkLCBvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOwogICAgIFJFUExBQ0Vf
SUZfSVMobVJpZ2h0LCBUSW50ZXJtVHlwZWQsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRJbnRlcm1VbmFyeTo6cmVwbGFjZUNoaWxkTm9kZSgK
LSAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkKK2Jv
b2wgVEludGVybVVuYXJ5OjpyZXBsYWNlQ2hpbGROb2RlKFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwg
VEludGVybU5vZGUgKnJlcGxhY2VtZW50KQogewogICAgIEFTU0VSVChvcmlnaW5hbC0+Z2V0QXNU
eXBlZCgpLT5nZXRUeXBlKCkgPT0gcmVwbGFjZW1lbnQtPmdldEFzVHlwZWQoKS0+Z2V0VHlwZSgp
KTsKICAgICBSRVBMQUNFX0lGX0lTKG1PcGVyYW5kLCBUSW50ZXJtVHlwZWQsIG9yaWdpbmFsLCBy
ZXBsYWNlbWVudCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIFRJbnRlcm1JbnZhcmlh
bnREZWNsYXJhdGlvbjo6cmVwbGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJ
bnRlcm1Ob2RlICpyZXBsYWNlbWVudCkKK3sKKyAgICBSRVBMQUNFX0lGX0lTKG1TeW1ib2wsIFRJ
bnRlcm1TeW1ib2wsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiBib29sIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb246OnJlcGxhY2VDaGlsZE5vZGUoVElu
dGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCiB7Ci0gICAgUkVQ
TEFDRV9JRl9JUyhtUGFyYW1ldGVycywgVEludGVybUFnZ3JlZ2F0ZSwgb3JpZ2luYWwsIHJlcGxh
Y2VtZW50KTsKKyAgICBSRVBMQUNFX0lGX0lTKG1Qcm90b3R5cGUsIFRJbnRlcm1GdW5jdGlvblBy
b3RvdHlwZSwgb3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKICAgICBSRVBMQUNFX0lGX0lTKG1Cb2R5
LCBUSW50ZXJtQmxvY2ssIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIFRJbnRlcm1BZ2dyZWdhdGU6OnJlcGxhY2VDaGlsZE5vZGUoCi0gICAgVElu
dGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCitib29sIFRJbnRl
cm1BZ2dyZWdhdGU6OnJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50
ZXJtTm9kZSAqcmVwbGFjZW1lbnQpCiB7CiAgICAgcmV0dXJuIHJlcGxhY2VDaGlsZE5vZGVJbnRl
cm5hbChvcmlnaW5hbCwgcmVwbGFjZW1lbnQpOwogfQpAQCAtMjIyLDYgKzIyNiwxNiBAQCBib29s
IFRJbnRlcm1CbG9jazo6cmVwbGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJ
bnRlcm1Ob2RlICpyZXBsYWNlbQogICAgIHJldHVybiByZXBsYWNlQ2hpbGROb2RlSW50ZXJuYWwo
b3JpZ2luYWwsIHJlcGxhY2VtZW50KTsKIH0KIAorYm9vbCBUSW50ZXJtRnVuY3Rpb25Qcm90b3R5
cGU6OnJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAq
cmVwbGFjZW1lbnQpCit7CisgICAgcmV0dXJuIHJlcGxhY2VDaGlsZE5vZGVJbnRlcm5hbChvcmln
aW5hbCwgcmVwbGFjZW1lbnQpOworfQorCitib29sIFRJbnRlcm1EZWNsYXJhdGlvbjo6cmVwbGFj
ZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVu
dCkKK3sKKyAgICByZXR1cm4gcmVwbGFjZUNoaWxkTm9kZUludGVybmFsKG9yaWdpbmFsLCByZXBs
YWNlbWVudCk7Cit9CisKIGJvb2wgVEludGVybUFnZ3JlZ2F0ZUJhc2U6OnJlcGxhY2VDaGlsZE5v
ZGVJbnRlcm5hbChUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVu
dCkKIHsKICAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgZ2V0U2VxdWVuY2UoKS0+c2l6ZSgp
OyArK2lpKQpAQCAtMjU4LDEyICsyNzIsOTkgQEAgYm9vbCBUSW50ZXJtQWdncmVnYXRlQmFzZTo6
aW5zZXJ0Q2hpbGROb2RlcyhUSW50ZXJtU2VxdWVuY2U6OnNpemVfdHlwZSBwb3NpdGlvbiwKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorVEludGVybUFnZ3JlZ2F0ZSAqVEludGVybUFnZ3JlZ2F0ZTo6
Q3JlYXRlRnVuY3Rpb25DYWxsKGNvbnN0IFRGdW5jdGlvbiAmZnVuYywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2Ug
KmFyZ3VtZW50cykKK3sKKyAgICBUSW50ZXJtQWdncmVnYXRlICpjYWxsTm9kZSA9CisgICAgICAg
IG5ldyBUSW50ZXJtQWdncmVnYXRlKGZ1bmMuZ2V0UmV0dXJuVHlwZSgpLCBFT3BDYWxsRnVuY3Rp
b25JbkFTVCwgYXJndW1lbnRzKTsKKyAgICBjYWxsTm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZv
KCktPnNldEZyb21GdW5jdGlvbihmdW5jKTsKKyAgICByZXR1cm4gY2FsbE5vZGU7Cit9CisKK1RJ
bnRlcm1BZ2dyZWdhdGUgKlRJbnRlcm1BZ2dyZWdhdGU6OkNyZWF0ZUZ1bmN0aW9uQ2FsbChjb25z
dCBUVHlwZSAmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sVW5pcXVlSWQgJmlkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFROYW1lICZuYW1l
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzKQoreworICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmNh
bGxOb2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUodHlwZSwgRU9wQ2FsbEZ1bmN0aW9uSW5BU1Qs
IGFyZ3VtZW50cyk7CisgICAgY2FsbE5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5zZXRJ
ZChpZCk7CisgICAgY2FsbE5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5zZXROYW1lT2Jq
KG5hbWUpOworICAgIHJldHVybiBjYWxsTm9kZTsKK30KKworVEludGVybUFnZ3JlZ2F0ZSAqVElu
dGVybUFnZ3JlZ2F0ZTo6Q3JlYXRlQnVpbHRJbkZ1bmN0aW9uQ2FsbChjb25zdCBURnVuY3Rpb24g
JmZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzKQoreworICAgIFRJbnRlcm1B
Z2dyZWdhdGUgKmNhbGxOb2RlID0KKyAgICAgICAgbmV3IFRJbnRlcm1BZ2dyZWdhdGUoZnVuYy5n
ZXRSZXR1cm5UeXBlKCksIEVPcENhbGxCdWlsdEluRnVuY3Rpb24sIGFyZ3VtZW50cyk7CisgICAg
Y2FsbE5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5zZXRGcm9tRnVuY3Rpb24oZnVuYyk7
CisgICAgLy8gTm90ZSB0aGF0IG5hbWUgbmVlZHMgdG8gYmUgc2V0IGJlZm9yZSB0ZXh0dXJlIGZ1
bmN0aW9uIHR5cGUgaXMgZGV0ZXJtaW5lZC4KKyAgICBjYWxsTm9kZS0+c2V0QnVpbHRJbkZ1bmN0
aW9uUHJlY2lzaW9uKCk7CisgICAgcmV0dXJuIGNhbGxOb2RlOworfQorCitUSW50ZXJtQWdncmVn
YXRlICpUSW50ZXJtQWdncmVnYXRlOjpDcmVhdGVDb25zdHJ1Y3Rvcihjb25zdCBUVHlwZSAmdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzKQoreworICAgIFRJbnRlcm1B
Z2dyZWdhdGUgKmNvbnN0cnVjdG9yTm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKHR5cGUsIG9w
LCBhcmd1bWVudHMpOworICAgIEFTU0VSVChjb25zdHJ1Y3Rvck5vZGUtPmlzQ29uc3RydWN0b3Io
KSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yTm9kZTsKK30KKworVEludGVybUFnZ3JlZ2F0ZSAq
VEludGVybUFnZ3JlZ2F0ZTo6Q3JlYXRlKGNvbnN0IFRUeXBlICZ0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKmFyZ3VtZW50
cykKK3sKKyAgICBUSW50ZXJtQWdncmVnYXRlICpub2RlID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUo
dHlwZSwgb3AsIGFyZ3VtZW50cyk7CisgICAgQVNTRVJUKG9wICE9IEVPcENhbGxGdW5jdGlvbklu
QVNUKTsgICAgLy8gU2hvdWxkIHVzZSBDcmVhdGVGdW5jdGlvbkNhbGwKKyAgICBBU1NFUlQob3Ag
IT0gRU9wQ2FsbEJ1aWx0SW5GdW5jdGlvbik7ICAvLyBTaG91bGQgdXNlIENyZWF0ZUJ1aWx0SW5G
dW5jdGlvbkNhbGwKKyAgICBBU1NFUlQoIW5vZGUtPmlzQ29uc3RydWN0b3IoKSk7ICAgICAgICAv
LyBTaG91bGQgdXNlIENyZWF0ZUNvbnN0cnVjdG9yCisgICAgcmV0dXJuIG5vZGU7Cit9CisKK1RJ
bnRlcm1BZ2dyZWdhdGU6OlRJbnRlcm1BZ2dyZWdhdGUoY29uc3QgVFR5cGUgJnR5cGUsIFRPcGVy
YXRvciBvcCwgVEludGVybVNlcXVlbmNlICphcmd1bWVudHMpCisgICAgOiBUSW50ZXJtT3BlcmF0
b3Iob3ApLCBtVXNlRW11bGF0ZWRGdW5jdGlvbihmYWxzZSksIG1Hb3RQcmVjaXNpb25Gcm9tQ2hp
bGRyZW4oZmFsc2UpCit7CisgICAgaWYgKGFyZ3VtZW50cyAhPSBudWxscHRyKQorICAgIHsKKyAg
ICAgICAgbUFyZ3VtZW50cy5zd2FwKCphcmd1bWVudHMpOworICAgIH0KKyAgICBzZXRUeXBlUHJl
Y2lzaW9uQW5kUXVhbGlmaWVyKHR5cGUpOworfQorCit2b2lkIFRJbnRlcm1BZ2dyZWdhdGU6OnNl
dFR5cGVQcmVjaXNpb25BbmRRdWFsaWZpZXIoY29uc3QgVFR5cGUgJnR5cGUpCit7CisgICAgc2V0
VHlwZSh0eXBlKTsKKyAgICBtVHlwZS5zZXRRdWFsaWZpZXIoRXZxVGVtcG9yYXJ5KTsKKyAgICBp
ZiAoIWlzRnVuY3Rpb25DYWxsKCkpCisgICAgeworICAgICAgICBpZiAoaXNDb25zdHJ1Y3Rvcigp
KQorICAgICAgICB7CisgICAgICAgICAgICAvLyBTdHJ1Y3RzIHNob3VsZCBub3QgYmUgcHJlY2lz
aW9uIHF1YWxpZmllZCwgdGhlIGluZGl2aWR1YWwgbWVtYmVycyBtYXkgYmUuCisgICAgICAgICAg
ICAvLyBCdWlsdC1pbiB0eXBlcyBvbiB0aGUgb3RoZXIgaGFuZCBzaG91bGQgYmUgcHJlY2lzaW9u
IHF1YWxpZmllZC4KKyAgICAgICAgICAgIGlmIChtT3AgIT0gRU9wQ29uc3RydWN0U3RydWN0KQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHNldFByZWNpc2lvbkZyb21DaGlsZHJlbigp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAg
ICAgICAgICAgc2V0UHJlY2lzaW9uRm9yQnVpbHRJbk9wKCk7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGFyZUNoaWxkcmVuQ29uc3RRdWFsaWZpZWQoKSkKKyAgICAgICAgeworICAgICAgICAgICAg
bVR5cGUuc2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsKKyAgICAgICAgfQorICAgIH0KK30KKwogYm9v
bCBUSW50ZXJtQWdncmVnYXRlOjphcmVDaGlsZHJlbkNvbnN0UXVhbGlmaWVkKCkKIHsKLSAgICBm
b3IgKFRJbnRlcm1Ob2RlIComY2hpbGQgOiBtU2VxdWVuY2UpCisgICAgZm9yIChUSW50ZXJtTm9k
ZSAqJmFyZyA6IG1Bcmd1bWVudHMpCiAgICAgewotICAgICAgICBUSW50ZXJtVHlwZWQgKnR5cGVk
ID0gY2hpbGQtPmdldEFzVHlwZWQoKTsKLSAgICAgICAgaWYgKHR5cGVkICYmIHR5cGVkLT5nZXRR
dWFsaWZpZXIoKSAhPSBFdnFDb25zdCkKKyAgICAgICAgVEludGVybVR5cGVkICp0eXBlZEFyZyA9
IGFyZy0+Z2V0QXNUeXBlZCgpOworICAgICAgICBpZiAodHlwZWRBcmcgJiYgdHlwZWRBcmctPmdl
dFF1YWxpZmllcigpICE9IEV2cUNvbnN0KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KQEAgLTI4MCw5ICszODEsOSBAQCB2b2lkIFRJbnRlcm1BZ2dyZWdh
dGU6OnNldFByZWNpc2lvbkZyb21DaGlsZHJlbigpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBUUHJlY2lzaW9uIHByZWNpc2lvbiA9IEVicFVuZGVmaW5lZDsKLSAgICBUSW50ZXJtU2Vx
dWVuY2U6Oml0ZXJhdG9yIGNoaWxkSXRlciA9IG1TZXF1ZW5jZS5iZWdpbigpOwotICAgIHdoaWxl
IChjaGlsZEl0ZXIgIT0gbVNlcXVlbmNlLmVuZCgpKQorICAgIFRQcmVjaXNpb24gcHJlY2lzaW9u
ICAgICAgICAgICAgICAgID0gRWJwVW5kZWZpbmVkOworICAgIFRJbnRlcm1TZXF1ZW5jZTo6aXRl
cmF0b3IgY2hpbGRJdGVyID0gbUFyZ3VtZW50cy5iZWdpbigpOworICAgIHdoaWxlIChjaGlsZEl0
ZXIgIT0gbUFyZ3VtZW50cy5lbmQoKSkKICAgICB7CiAgICAgICAgIFRJbnRlcm1UeXBlZCAqdHlw
ZWQgPSAoKmNoaWxkSXRlciktPmdldEFzVHlwZWQoKTsKICAgICAgICAgaWYgKHR5cGVkKQpAQCAt
MjkyLDIzICszOTMsNTQgQEAgdm9pZCBUSW50ZXJtQWdncmVnYXRlOjpzZXRQcmVjaXNpb25Gcm9t
Q2hpbGRyZW4oKQogICAgIG1UeXBlLnNldFByZWNpc2lvbihwcmVjaXNpb24pOwogfQogCit2b2lk
IFRJbnRlcm1BZ2dyZWdhdGU6OnNldFByZWNpc2lvbkZvckJ1aWx0SW5PcCgpCit7CisgICAgQVNT
RVJUKCFpc0NvbnN0cnVjdG9yKCkpOworICAgIEFTU0VSVCghaXNGdW5jdGlvbkNhbGwoKSk7Cisg
ICAgaWYgKCFzZXRQcmVjaXNpb25Gb3JTcGVjaWFsQnVpbHRJbk9wKCkpCisgICAgeworICAgICAg
ICBzZXRQcmVjaXNpb25Gcm9tQ2hpbGRyZW4oKTsKKyAgICB9Cit9CisKK2Jvb2wgVEludGVybUFn
Z3JlZ2F0ZTo6c2V0UHJlY2lzaW9uRm9yU3BlY2lhbEJ1aWx0SW5PcCgpCit7CisgICAgc3dpdGNo
IChtT3ApCisgICAgeworICAgICAgICBjYXNlIEVPcEJpdGZpZWxkRXh0cmFjdDoKKyAgICAgICAg
ICAgIG1UeXBlLnNldFByZWNpc2lvbihtQXJndW1lbnRzWzBdLT5nZXRBc1R5cGVkKCktPmdldFBy
ZWNpc2lvbigpKTsKKyAgICAgICAgICAgIG1Hb3RQcmVjaXNpb25Gcm9tQ2hpbGRyZW4gPSB0cnVl
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgRU9wQml0ZmllbGRJbnNl
cnQ6CisgICAgICAgICAgICBtVHlwZS5zZXRQcmVjaXNpb24oR2V0SGlnaGVyUHJlY2lzaW9uKG1B
cmd1bWVudHNbMF0tPmdldEFzVHlwZWQoKS0+Z2V0UHJlY2lzaW9uKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Bcmd1bWVudHNbMV0tPmdldEFz
VHlwZWQoKS0+Z2V0UHJlY2lzaW9uKCkpKTsKKyAgICAgICAgICAgIG1Hb3RQcmVjaXNpb25Gcm9t
Q2hpbGRyZW4gPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2Ug
RU9wVWFkZENhcnJ5OgorICAgICAgICBjYXNlIEVPcFVzdWJCb3Jyb3c6CisgICAgICAgICAgICBt
VHlwZS5zZXRQcmVjaXNpb24oRWJwSGlnaCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKIHZv
aWQgVEludGVybUFnZ3JlZ2F0ZTo6c2V0QnVpbHRJbkZ1bmN0aW9uUHJlY2lzaW9uKCkKIHsKICAg
ICAvLyBBbGwgYnVpbHQtaW5zIHJldHVybmluZyBib29sIHNob3VsZCBiZSBoYW5kbGVkIGFzIG9w
cywgbm90IGZ1bmN0aW9ucy4KICAgICBBU1NFUlQoZ2V0QmFzaWNUeXBlKCkgIT0gRWJ0Qm9vbCk7
CisgICAgQVNTRVJUKG1PcCA9PSBFT3BDYWxsQnVpbHRJbkZ1bmN0aW9uKTsKIAogICAgIFRQcmVj
aXNpb24gcHJlY2lzaW9uID0gRWJwVW5kZWZpbmVkOwotICAgIFRJbnRlcm1TZXF1ZW5jZTo6aXRl
cmF0b3IgY2hpbGRJdGVyID0gbVNlcXVlbmNlLmJlZ2luKCk7Ci0gICAgd2hpbGUgKGNoaWxkSXRl
ciAhPSBtU2VxdWVuY2UuZW5kKCkpCisgICAgZm9yIChUSW50ZXJtTm9kZSAqYXJnIDogbUFyZ3Vt
ZW50cykKICAgICB7Ci0gICAgICAgIFRJbnRlcm1UeXBlZCAqdHlwZWQgPSAoKmNoaWxkSXRlcikt
PmdldEFzVHlwZWQoKTsKKyAgICAgICAgVEludGVybVR5cGVkICp0eXBlZCA9IGFyZy0+Z2V0QXNU
eXBlZCgpOwogICAgICAgICAvLyBFU1NMIHNwZWMgc2VjdGlvbiA4OiB0ZXh0dXJlIGZ1bmN0aW9u
cyBnZXQgdGhlaXIgcHJlY2lzaW9uIGZyb20gdGhlIHNhbXBsZXIuCiAgICAgICAgIGlmICh0eXBl
ZCAmJiBJc1NhbXBsZXIodHlwZWQtPmdldEJhc2ljVHlwZSgpKSkKICAgICAgICAgewogICAgICAg
ICAgICAgcHJlY2lzaW9uID0gdHlwZWQtPmdldFByZWNpc2lvbigpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICAgICAgKytjaGlsZEl0ZXI7CiAgICAgfQogICAgIC8vIEVTU0wg
My4wIHNwZWMgc2VjdGlvbiA4OiB0ZXh0dXJlU2l6ZSBhbHdheXMgZ2V0cyBoaWdocCBwcmVjaXNp
b24uCiAgICAgLy8gQWxsIG90aGVyIGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBzYW1wbGVyIGFyZSBh
c3N1bWVkIHRvIGJlIHRleHR1cmUgZnVuY3Rpb25zLgpAQCAtMzE4LDE0ICs0NTAsNDkgQEAgdm9p
ZCBUSW50ZXJtQWdncmVnYXRlOjpzZXRCdWlsdEluRnVuY3Rpb25QcmVjaXNpb24oKQogICAgICAg
ICBtVHlwZS5zZXRQcmVjaXNpb24ocHJlY2lzaW9uKTsKIH0KIAorVFN0cmluZyBUSW50ZXJtQWdn
cmVnYXRlOjpnZXRTeW1ib2xUYWJsZU1hbmdsZWROYW1lKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
IWlzQ29uc3RydWN0b3IoKSk7CisgICAgc3dpdGNoIChtT3ApCisgICAgeworICAgICAgICBjYXNl
IEVPcENhbGxJbnRlcm5hbFJhd0Z1bmN0aW9uOgorICAgICAgICBjYXNlIEVPcENhbGxCdWlsdElu
RnVuY3Rpb246CisgICAgICAgIGNhc2UgRU9wQ2FsbEZ1bmN0aW9uSW5BU1Q6CisgICAgICAgICAg
ICByZXR1cm4gVEZ1bmN0aW9uOjpHZXRNYW5nbGVkTmFtZUZyb21DYWxsKG1GdW5jdGlvbkluZm8u
Z2V0TmFtZSgpLCBtQXJndW1lbnRzKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFRT
dHJpbmcgb3BTdHJpbmcgPSBHZXRPcGVyYXRvclN0cmluZyhtT3ApOworICAgICAgICAgICAgcmV0
dXJuIFRGdW5jdGlvbjo6R2V0TWFuZ2xlZE5hbWVGcm9tQ2FsbChvcFN0cmluZywgbUFyZ3VtZW50
cyk7CisgICAgfQorfQorCiB2b2lkIFRJbnRlcm1CbG9jazo6YXBwZW5kU3RhdGVtZW50KFRJbnRl
cm1Ob2RlICpzdGF0ZW1lbnQpCiB7Ci0gICAgaWYgKHN0YXRlbWVudCAhPSBudWxscHRyKQorICAg
IC8vIERlY2xhcmF0aW9uIG5vZGVzIHdpdGggbm8gY2hpbGRyZW4gY2FuIGFwcGVhciBpZiBhbGwg
dGhlIGRlY2xhcmF0b3JzIGp1c3QgYWRkZWQgY29uc3RhbnRzIHRvCisgICAgLy8gdGhlIHN5bWJv
bCB0YWJsZSBpbnN0ZWFkIG9mIGdlbmVyYXRpbmcgY29kZS4gVGhleSdyZSBuby1vcHMgc28gdGhl
eSBhcmVuJ3QgYWRkZWQgdG8gYmxvY2tzLgorICAgIGlmIChzdGF0ZW1lbnQgIT0gbnVsbHB0ciAm
JiAoc3RhdGVtZW50LT5nZXRBc0RlY2xhcmF0aW9uTm9kZSgpID09IG51bGxwdHIgfHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICFzdGF0ZW1lbnQtPmdldEFzRGVjbGFyYXRpb25O
b2RlKCktPmdldFNlcXVlbmNlKCktPmVtcHR5KCkpKQogICAgIHsKICAgICAgICAgbVN0YXRlbWVu
dHMucHVzaF9iYWNrKHN0YXRlbWVudCk7CiAgICAgfQogfQogCit2b2lkIFRJbnRlcm1GdW5jdGlv
blByb3RvdHlwZTo6YXBwZW5kUGFyYW1ldGVyKFRJbnRlcm1TeW1ib2wgKnBhcmFtZXRlcikKK3sK
KyAgICBBU1NFUlQocGFyYW1ldGVyICE9IG51bGxwdHIpOworICAgIG1QYXJhbWV0ZXJzLnB1c2hf
YmFjayhwYXJhbWV0ZXIpOworfQorCit2b2lkIFRJbnRlcm1EZWNsYXJhdGlvbjo6YXBwZW5kRGVj
bGFyYXRvcihUSW50ZXJtVHlwZWQgKmRlY2xhcmF0b3IpCit7CisgICAgQVNTRVJUKGRlY2xhcmF0
b3IgIT0gbnVsbHB0cik7CisgICAgQVNTRVJUKGRlY2xhcmF0b3ItPmdldEFzU3ltYm9sTm9kZSgp
ICE9IG51bGxwdHIgfHwKKyAgICAgICAgICAgKGRlY2xhcmF0b3ItPmdldEFzQmluYXJ5Tm9kZSgp
ICE9IG51bGxwdHIgJiYKKyAgICAgICAgICAgIGRlY2xhcmF0b3ItPmdldEFzQmluYXJ5Tm9kZSgp
LT5nZXRPcCgpID09IEVPcEluaXRpYWxpemUpKTsKKyAgICBBU1NFUlQobURlY2xhcmF0b3JzLmVt
cHR5KCkgfHwKKyAgICAgICAgICAgZGVjbGFyYXRvci0+Z2V0VHlwZSgpLnNhbWVFbGVtZW50VHlw
ZShtRGVjbGFyYXRvcnMuYmFjaygpLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKSkpOworICAgIG1E
ZWNsYXJhdG9ycy5wdXNoX2JhY2soZGVjbGFyYXRvcik7Cit9CisKIGJvb2wgVEludGVybVRlcm5h
cnk6OnJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAq
cmVwbGFjZW1lbnQpCiB7CiAgICAgUkVQTEFDRV9JRl9JUyhtQ29uZGl0aW9uLCBUSW50ZXJtVHlw
ZWQsIG9yaWdpbmFsLCByZXBsYWNlbWVudCk7CkBAIC0zNDIsMTYgKzUwOSwxNCBAQCBib29sIFRJ
bnRlcm1JZkVsc2U6OnJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50
ZXJtTm9kZSAqcmVwbGFjZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBUSW50ZXJtU3dp
dGNoOjpyZXBsYWNlQ2hpbGROb2RlKAotICAgIFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVy
bU5vZGUgKnJlcGxhY2VtZW50KQorYm9vbCBUSW50ZXJtU3dpdGNoOjpyZXBsYWNlQ2hpbGROb2Rl
KFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KQogewogICAg
IFJFUExBQ0VfSUZfSVMobUluaXQsIFRJbnRlcm1UeXBlZCwgb3JpZ2luYWwsIHJlcGxhY2VtZW50
KTsKICAgICBSRVBMQUNFX0lGX0lTKG1TdGF0ZW1lbnRMaXN0LCBUSW50ZXJtQmxvY2ssIG9yaWdp
bmFsLCByZXBsYWNlbWVudCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFRJbnRlcm1D
YXNlOjpyZXBsYWNlQ2hpbGROb2RlKAotICAgIFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVy
bU5vZGUgKnJlcGxhY2VtZW50KQorYm9vbCBUSW50ZXJtQ2FzZTo6cmVwbGFjZUNoaWxkTm9kZShU
SW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkKIHsKICAgICBS
RVBMQUNFX0lGX0lTKG1Db25kaXRpb24sIFRJbnRlcm1UeXBlZCwgb3JpZ2luYWwsIHJlcGxhY2Vt
ZW50KTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC00MjAsOCArNTg1LDEzIEBAIFRJbnRlcm1UeXBl
ZCAqVEludGVybVR5cGVkOjpDcmVhdGVaZXJvKGNvbnN0IFRUeXBlICZ0eXBlKQogICAgICAgICAg
ICAgICAgICAgICB1W2ldLnNldEJDb25zdChmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAg
ICAgICAgICAgICAvLyBDcmVhdGVaZXJvIGlzIGNhbGxlZCBieSBQYXJzZUNvbnRleHQgdGhhdCBr
ZWVwcyBwYXJzaW5nIGV2ZW4gd2hlbiBhbiBlcnJvcgorICAgICAgICAgICAgICAgICAgICAvLyBv
Y2N1cnMsIHNvIGl0IGlzIHBvc3NpYmxlIGZvciBDcmVhdGVaZXJvIHRvIGJlIGNhbGxlZCB3aXRo
IG5vbi1iYXNpYyB0eXBlcy4KKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBoYXBwZW5zIG9u
bHkgb24gZXJyb3IgY29uZGl0aW9uIGJ1dCBDcmVhdGVaZXJvIG5lZWRzIHRvIHJldHVybiBhIHZh
bHVlCisgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIGNvcnJlY3QgdHlwZSB0byBjb250
aW51ZSB0aGUgdHlwZWNoZWNrLiBUaGF0J3Mgd2h5IHdlIGhhbmRsZQorICAgICAgICAgICAgICAg
ICAgICAvLyBub24tYmFzaWMgdHlwZSBieSBzZXR0aW5nIHdoYXRldmVyIHZhbHVlLCB3ZSBqdXN0
IG5lZWQgdGhlIHR5cGUgdG8gYmUgcmlnaHQuCisgICAgICAgICAgICAgICAgICAgIHVbaV0uc2V0
SUNvbnN0KDQyKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIApAQCAtNDI5LDggKzU5OSw3IEBAIFRJbnRlcm1UeXBlZCAqVEludGVybVR5cGVk
OjpDcmVhdGVaZXJvKGNvbnN0IFRUeXBlICZ0eXBlKQogICAgICAgICByZXR1cm4gbm9kZTsKICAg
ICB9CiAKLSAgICBUSW50ZXJtQWdncmVnYXRlICpjb25zdHJ1Y3RvciA9IG5ldyBUSW50ZXJtQWdn
cmVnYXRlKHNoOjpUeXBlVG9Db25zdHJ1Y3Rvck9wZXJhdG9yKHR5cGUpKTsKLSAgICBjb25zdHJ1
Y3Rvci0+c2V0VHlwZShjb25zdFR5cGUpOworICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRz
ID0gbmV3IFRJbnRlcm1TZXF1ZW5jZSgpOwogCiAgICAgaWYgKHR5cGUuaXNBcnJheSgpKQogICAg
IHsKQEAgLTQ0MCw3ICs2MDksNyBAQCBUSW50ZXJtVHlwZWQgKlRJbnRlcm1UeXBlZDo6Q3JlYXRl
WmVybyhjb25zdCBUVHlwZSAmdHlwZSkKICAgICAgICAgc2l6ZV90IGFycmF5U2l6ZSA9IHR5cGUu
Z2V0QXJyYXlTaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlTaXpl
OyArK2kpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5nZXRTZXF1ZW5jZSgp
LT5wdXNoX2JhY2soQ3JlYXRlWmVybyhlbGVtZW50VHlwZSkpOworICAgICAgICAgICAgYXJndW1l
bnRzLT5wdXNoX2JhY2soQ3JlYXRlWmVybyhlbGVtZW50VHlwZSkpOwogICAgICAgICB9CiAgICAg
fQogICAgIGVsc2UKQEAgLTQ1MCwxMSArNjE5LDIzIEBAIFRJbnRlcm1UeXBlZCAqVEludGVybVR5
cGVkOjpDcmVhdGVaZXJvKGNvbnN0IFRUeXBlICZ0eXBlKQogICAgICAgICBUU3RydWN0dXJlICpz
dHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgpOwogICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJmZp
ZWxkIDogc3RydWN0dXJlLT5maWVsZHMoKSkKICAgICAgICAgewotICAgICAgICAgICAgY29uc3Ry
dWN0b3ItPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhDcmVhdGVaZXJvKCpmaWVsZC0+dHlwZSgp
KSk7CisgICAgICAgICAgICBhcmd1bWVudHMtPnB1c2hfYmFjayhDcmVhdGVaZXJvKCpmaWVsZC0+
dHlwZSgpKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gY29uc3RydWN0b3I7Cisg
ICAgcmV0dXJuIFRJbnRlcm1BZ2dyZWdhdGU6OkNyZWF0ZUNvbnN0cnVjdG9yKGNvbnN0VHlwZSwg
c2g6OlR5cGVUb0NvbnN0cnVjdG9yT3BlcmF0b3IodHlwZSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyk7Cit9CisKKy8vIHN0YXRpYwor
VEludGVybVR5cGVkICpUSW50ZXJtVHlwZWQ6OkNyZWF0ZUJvb2woYm9vbCB2YWx1ZSkKK3sKKyAg
ICBUQ29uc3RhbnRVbmlvbiAqdSA9IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsKKyAgICB1WzBdLnNl
dEJDb25zdCh2YWx1ZSk7CisKKyAgICBUVHlwZSB0eXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxQ29uc3QsIDEpOworICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpub2RlID0gbmV3IFRJbnRl
cm1Db25zdGFudFVuaW9uKHUsIHR5cGUpOworICAgIHJldHVybiBub2RlOwogfQogCiBUSW50ZXJt
Q29uc3RhbnRVbmlvbjo6VEludGVybUNvbnN0YW50VW5pb24oY29uc3QgVEludGVybUNvbnN0YW50
VW5pb24gJm5vZGUpIDogVEludGVybVR5cGVkKG5vZGUpCkBAIC00NjQsMzEgKzY0NSw3OSBAQCBU
SW50ZXJtQ29uc3RhbnRVbmlvbjo6VEludGVybUNvbnN0YW50VW5pb24oY29uc3QgVEludGVybUNv
bnN0YW50VW5pb24gJm5vZGUpIDogVAogCiB2b2lkIFRGdW5jdGlvblN5bWJvbEluZm86OnNldEZy
b21GdW5jdGlvbihjb25zdCBURnVuY3Rpb24gJmZ1bmN0aW9uKQogewotICAgIHNldE5hbWUoZnVu
Y3Rpb24uZ2V0TWFuZ2xlZE5hbWUoKSk7Ci0gICAgc2V0SWQoZnVuY3Rpb24uZ2V0VW5pcXVlSWQo
KSk7CisgICAgc2V0TmFtZShmdW5jdGlvbi5nZXROYW1lKCkpOworICAgIHNldElkKFRTeW1ib2xV
bmlxdWVJZChmdW5jdGlvbikpOworfQorCitURnVuY3Rpb25TeW1ib2xJbmZvOjpURnVuY3Rpb25T
eW1ib2xJbmZvKGNvbnN0IFRTeW1ib2xVbmlxdWVJZCAmaWQpIDogbUlkKG5ldyBUU3ltYm9sVW5p
cXVlSWQoaWQpKQoreworfQorCitURnVuY3Rpb25TeW1ib2xJbmZvOjpURnVuY3Rpb25TeW1ib2xJ
bmZvKGNvbnN0IFRGdW5jdGlvblN5bWJvbEluZm8gJmluZm8pCisgICAgOiBtTmFtZShpbmZvLm1O
YW1lKSwgbUlkKG51bGxwdHIpCit7CisgICAgaWYgKGluZm8ubUlkKQorICAgIHsKKyAgICAgICAg
bUlkID0gbmV3IFRTeW1ib2xVbmlxdWVJZCgqaW5mby5tSWQpOworICAgIH0KK30KKworVEZ1bmN0
aW9uU3ltYm9sSW5mbyAmVEZ1bmN0aW9uU3ltYm9sSW5mbzo6b3BlcmF0b3I9KGNvbnN0IFRGdW5j
dGlvblN5bWJvbEluZm8gJmluZm8pCit7CisgICAgbU5hbWUgPSBpbmZvLm1OYW1lOworICAgIGlm
IChpbmZvLm1JZCkKKyAgICB7CisgICAgICAgIG1JZCA9IG5ldyBUU3ltYm9sVW5pcXVlSWQoKmlu
Zm8ubUlkKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbUlkID0gbnVsbHB0cjsK
KyAgICB9CisgICAgcmV0dXJuICp0aGlzOworfQorCit2b2lkIFRGdW5jdGlvblN5bWJvbEluZm86
OnNldElkKGNvbnN0IFRTeW1ib2xVbmlxdWVJZCAmaWQpCit7CisgICAgbUlkID0gbmV3IFRTeW1i
b2xVbmlxdWVJZChpZCk7Cit9CisKK2NvbnN0IFRTeW1ib2xVbmlxdWVJZCAmVEZ1bmN0aW9uU3lt
Ym9sSW5mbzo6Z2V0SWQoKSBjb25zdAoreworICAgIEFTU0VSVChtSWQpOworICAgIHJldHVybiAq
bUlkOwogfQogCiBUSW50ZXJtQWdncmVnYXRlOjpUSW50ZXJtQWdncmVnYXRlKGNvbnN0IFRJbnRl
cm1BZ2dyZWdhdGUgJm5vZGUpCiAgICAgOiBUSW50ZXJtT3BlcmF0b3Iobm9kZSksCi0gICAgICBt
VXNlckRlZmluZWQobm9kZS5tVXNlckRlZmluZWQpLAogICAgICAgbVVzZUVtdWxhdGVkRnVuY3Rp
b24obm9kZS5tVXNlRW11bGF0ZWRGdW5jdGlvbiksCiAgICAgICBtR290UHJlY2lzaW9uRnJvbUNo
aWxkcmVuKG5vZGUubUdvdFByZWNpc2lvbkZyb21DaGlsZHJlbiksCiAgICAgICBtRnVuY3Rpb25J
bmZvKG5vZGUubUZ1bmN0aW9uSW5mbykKIHsKLSAgICBmb3IgKFRJbnRlcm1Ob2RlICpjaGlsZCA6
IG5vZGUubVNlcXVlbmNlKQorICAgIGZvciAoVEludGVybU5vZGUgKmFyZyA6IG5vZGUubUFyZ3Vt
ZW50cykKICAgICB7Ci0gICAgICAgIFRJbnRlcm1UeXBlZCAqdHlwZWRDaGlsZCA9IGNoaWxkLT5n
ZXRBc1R5cGVkKCk7Ci0gICAgICAgIEFTU0VSVCh0eXBlZENoaWxkICE9IG51bGxwdHIpOwotICAg
ICAgICBUSW50ZXJtVHlwZWQgKmNoaWxkQ29weSA9IHR5cGVkQ2hpbGQtPmRlZXBDb3B5KCk7Ci0g
ICAgICAgIG1TZXF1ZW5jZS5wdXNoX2JhY2soY2hpbGRDb3B5KTsKKyAgICAgICAgVEludGVybVR5
cGVkICp0eXBlZEFyZyA9IGFyZy0+Z2V0QXNUeXBlZCgpOworICAgICAgICBBU1NFUlQodHlwZWRB
cmcgIT0gbnVsbHB0cik7CisgICAgICAgIFRJbnRlcm1UeXBlZCAqYXJnQ29weSA9IHR5cGVkQXJn
LT5kZWVwQ29weSgpOworICAgICAgICBtQXJndW1lbnRzLnB1c2hfYmFjayhhcmdDb3B5KTsKICAg
ICB9CiB9CiAKK1RJbnRlcm1BZ2dyZWdhdGUgKlRJbnRlcm1BZ2dyZWdhdGU6OnNoYWxsb3dDb3B5
KCkgY29uc3QKK3sKKyAgICBUSW50ZXJtU2VxdWVuY2UgKmNvcHlTZXEgPSBuZXcgVEludGVybVNl
cXVlbmNlKCk7CisgICAgY29weVNlcS0+aW5zZXJ0KGNvcHlTZXEtPmJlZ2luKCksIGdldFNlcXVl
bmNlKCktPmJlZ2luKCksIGdldFNlcXVlbmNlKCktPmVuZCgpKTsKKyAgICBUSW50ZXJtQWdncmVn
YXRlICpjb3B5Tm9kZSAgICAgICAgID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGUobVR5cGUsIG1PcCwg
Y29weVNlcSk7CisgICAgKmNvcHlOb2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKSA9IG1GdW5j
dGlvbkluZm87CisgICAgY29weU5vZGUtPnNldExpbmUobUxpbmUpOworICAgIHJldHVybiBjb3B5
Tm9kZTsKK30KKwogVEludGVybVN3aXp6bGU6OlRJbnRlcm1Td2l6emxlKGNvbnN0IFRJbnRlcm1T
d2l6emxlICZub2RlKSA6IFRJbnRlcm1UeXBlZChub2RlKQogewogICAgIFRJbnRlcm1UeXBlZCAq
b3BlcmFuZENvcHkgPSBub2RlLm1PcGVyYW5kLT5kZWVwQ29weSgpOwogICAgIEFTU0VSVChvcGVy
YW5kQ29weSAhPSBudWxscHRyKTsKICAgICBtT3BlcmFuZCA9IG9wZXJhbmRDb3B5OworICAgIG1T
d2l6emxlT2Zmc2V0cyA9IG5vZGUubVN3aXp6bGVPZmZzZXRzOwogfQogCiBUSW50ZXJtQmluYXJ5
OjpUSW50ZXJtQmluYXJ5KGNvbnN0IFRJbnRlcm1CaW5hcnkgJm5vZGUpCkBAIC01MjksMTUgKzc1
OCwxNSBAQCBib29sIFRJbnRlcm1PcGVyYXRvcjo6aXNNdWx0aXBsaWNhdGlvbigpIGNvbnN0CiB7
CiAgICAgc3dpdGNoIChtT3ApCiAgICAgewotICAgICAgY2FzZSBFT3BNdWw6Ci0gICAgICBjYXNl
IEVPcE1hdHJpeFRpbWVzTWF0cml4OgotICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1ZlY3RvcjoK
LSAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXI6Ci0gICAgICBjYXNlIEVPcFZlY3RvclRp
bWVzTWF0cml4OgotICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc1NjYWxhcjoKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGNhc2UgRU9wTXVsOgorICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4OgorICAgICAg
ICBjYXNlIEVPcE1hdHJpeFRpbWVzVmVjdG9yOgorICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVz
U2NhbGFyOgorICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzTWF0cml4OgorICAgICAgICBjYXNl
IEVPcFZlY3RvclRpbWVzU2NhbGFyOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCkBAIC01NDgs
MzUgKzc3Nyw0OCBAQCBib29sIFRJbnRlcm1PcGVyYXRvcjo6aXNDb25zdHJ1Y3RvcigpIGNvbnN0
CiB7CiAgICAgc3dpdGNoIChtT3ApCiAgICAgewotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMy
OgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMzOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RW
ZWM0OgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyOgotICAgICAgY2FzZSBFT3BDb25zdHJ1
Y3RNYXQyeDM6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDJ4NDoKLSAgICAgIGNhc2UgRU9w
Q29uc3RydWN0TWF0M3gyOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzOgotICAgICAgY2Fz
ZSBFT3BDb25zdHJ1Y3RNYXQzeDQ6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDR4MjoKLSAg
ICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NHgzOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0
OgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RGbG9hdDoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0
SVZlYzI6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWMzOgotICAgICAgY2FzZSBFT3BDb25z
dHJ1Y3RJVmVjNDoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0SW50OgotICAgICAgY2FzZSBFT3BD
b25zdHJ1Y3RVVmVjMjoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0VVZlYzM6Ci0gICAgICBjYXNl
IEVPcENvbnN0cnVjdFVWZWM0OgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RVSW50OgotICAgICAg
Y2FzZSBFT3BDb25zdHJ1Y3RCVmVjMjoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0QlZlYzM6Ci0g
ICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWM0OgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCb29s
OgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RTdHJ1Y3Q6Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjYXNlIEVPcENv
bnN0cnVjdFZlYzI6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjMzoKKyAgICAgICAgY2Fz
ZSBFT3BDb25zdHJ1Y3RWZWM0OgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDI6CisgICAg
ICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MngzOgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1h
dDJ4NDoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzeDI6CisgICAgICAgIGNhc2UgRU9w
Q29uc3RydWN0TWF0MzoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzeDQ6CisgICAgICAg
IGNhc2UgRU9wQ29uc3RydWN0TWF0NHgyOgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDR4
MzoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0OgorICAgICAgICBjYXNlIEVPcENvbnN0
cnVjdEZsb2F0OgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWMyOgorICAgICAgICBjYXNl
IEVPcENvbnN0cnVjdElWZWMzOgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWM0OgorICAg
ICAgICBjYXNlIEVPcENvbnN0cnVjdEludDoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RVVmVj
MjoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RVVmVjMzoKKyAgICAgICAgY2FzZSBFT3BDb25z
dHJ1Y3RVVmVjNDoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RVSW50OgorICAgICAgICBjYXNl
IEVPcENvbnN0cnVjdEJWZWMyOgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWMzOgorICAg
ICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWM0OgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdEJv
b2w6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0U3RydWN0OgorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorfQorCitib29sIFRJbnRlcm1PcGVyYXRvcjo6aXNGdW5jdGlvbkNhbGwoKSBjb25zdAorewor
ICAgIHN3aXRjaCAobU9wKQorICAgIHsKKyAgICAgICAgY2FzZSBFT3BDYWxsRnVuY3Rpb25JbkFT
VDoKKyAgICAgICAgY2FzZSBFT3BDYWxsQnVpbHRJbkZ1bmN0aW9uOgorICAgICAgICBjYXNlIEVP
cENhbGxJbnRlcm5hbFJhd0Z1bmN0aW9uOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCkBAIC02
OTUsNiArOTM3LDggQEAgdm9pZCBUSW50ZXJtVW5hcnk6OnByb21vdGUoKQogICAgICAgICBjYXNl
IEVPcFBhY2tTbm9ybTJ4MTY6CiAgICAgICAgIGNhc2UgRU9wUGFja1Vub3JtMngxNjoKICAgICAg
ICAgY2FzZSBFT3BQYWNrSGFsZjJ4MTY6CisgICAgICAgIGNhc2UgRU9wUGFja1Vub3JtNHg4Ogor
ICAgICAgICBjYXNlIEVPcFBhY2tTbm9ybTR4ODoKICAgICAgICAgICAgIHNldFR5cGUoVFR5cGUo
RWJ0VUludCwgRWJwSGlnaCwgcmVzdWx0UXVhbGlmaWVyKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBFT3BVbnBhY2tTbm9ybTJ4MTY6CkBAIC03MDQsNiArOTQ4LDEwIEBAIHZv
aWQgVEludGVybVVuYXJ5Ojpwcm9tb3RlKCkKICAgICAgICAgY2FzZSBFT3BVbnBhY2tIYWxmMngx
NjoKICAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgcmVzdWx0
UXVhbGlmaWVyLCAyKSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BVbnBh
Y2tVbm9ybTR4ODoKKyAgICAgICAgY2FzZSBFT3BVbnBhY2tTbm9ybTR4ODoKKyAgICAgICAgICAg
IHNldFR5cGUoVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgcmVzdWx0UXVhbGlmaWVyLCA0KSk7
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFT3BBbnk6CiAgICAgICAgIGNhc2Ug
RU9wQWxsOgogICAgICAgICAgICAgc2V0VHlwZShUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQs
IHJlc3VsdFF1YWxpZmllcikpOwpAQCAtNzIxLDYgKzk2OSwxOCBAQCB2b2lkIFRJbnRlcm1VbmFy
eTo6cHJvbW90ZSgpCiAgICAgICAgIGNhc2UgRU9wSXNOYW46CiAgICAgICAgICAgICBzZXRUeXBl
KFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgcmVzdWx0UXVhbGlmaWVyLCBvcGVyYW5kUHJp
bWFyeVNpemUpKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdGZpZWxk
UmV2ZXJzZToKKyAgICAgICAgICAgIHNldFR5cGUoVFR5cGUobU9wZXJhbmQtPmdldEJhc2ljVHlw
ZSgpLCBFYnBIaWdoLCByZXN1bHRRdWFsaWZpZXIsIG9wZXJhbmRQcmltYXJ5U2l6ZSkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQml0Q291bnQ6CisgICAgICAgICAgICBz
ZXRUeXBlKFRUeXBlKEVidEludCwgRWJwTG93LCByZXN1bHRRdWFsaWZpZXIsIG9wZXJhbmRQcmlt
YXJ5U2l6ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wRmluZExTQjoK
KyAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoRWJ0SW50LCBFYnBMb3csIHJlc3VsdFF1YWxpZmll
ciwgb3BlcmFuZFByaW1hcnlTaXplKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFT3BGaW5kTVNCOgorICAgICAgICAgICAgc2V0VHlwZShUVHlwZShFYnRJbnQsIEVicExvdywg
cmVzdWx0UXVhbGlmaWVyLCBvcGVyYW5kUHJpbWFyeVNpemUpKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgc2V0VHlwZShtT3BlcmFuZC0+Z2V0VHlw
ZSgpKTsKICAgICAgICAgICAgIG1UeXBlLnNldFF1YWxpZmllcihyZXN1bHRRdWFsaWZpZXIpOwpA
QCAtNzQ5LDYgKzEwMDksMTMgQEAgVEludGVybUJpbmFyeTo6VEludGVybUJpbmFyeShUT3BlcmF0
b3Igb3AsIFRJbnRlcm1UeXBlZCAqbGVmdCwgVEludGVybVR5cGVkICpyaWcKICAgICBwcm9tb3Rl
KCk7CiB9CiAKK1RJbnRlcm1JbnZhcmlhbnREZWNsYXJhdGlvbjo6VEludGVybUludmFyaWFudERl
Y2xhcmF0aW9uKFRJbnRlcm1TeW1ib2wgKnN5bWJvbCwgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkK
KyAgICA6IFRJbnRlcm1Ob2RlKCksIG1TeW1ib2woc3ltYm9sKQoreworICAgIEFTU0VSVChzeW1i
b2wpOworICAgIHNldExpbmUobGluZSk7Cit9CisKIFRJbnRlcm1UZXJuYXJ5OjpUSW50ZXJtVGVy
bmFyeShUSW50ZXJtVHlwZWQgKmNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VEludGVybVR5cGVkICp0cnVlRXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUSW50ZXJtVHlwZWQgKmZhbHNlRXhwcmVzc2lvbikKQEAgLTc5OSwyNiArMTA2NiwzMSBA
QCBib29sIFRJbnRlcm1Td2l6emxlOjpoYXNEdXBsaWNhdGVPZmZzZXRzKCkgY29uc3QKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgVEludGVybVN3aXp6bGU6Om9mZnNldHNNYXRjaChpbnQg
b2Zmc2V0KSBjb25zdAoreworICAgIHJldHVybiBtU3dpenpsZU9mZnNldHMuc2l6ZSgpID09IDEg
JiYgbVN3aXp6bGVPZmZzZXRzWzBdID09IG9mZnNldDsKK30KKwogdm9pZCBUSW50ZXJtU3dpenps
ZTo6d3JpdGVPZmZzZXRzQXNYWVpXKFRJbmZvU2lua0Jhc2UgKm91dCkgY29uc3QKIHsKICAgICBm
b3IgKGNvbnN0IGludCBvZmZzZXQgOiBtU3dpenpsZU9mZnNldHMpCiAgICAgewogICAgICAgICBz
d2l0Y2ggKG9mZnNldCkKICAgICAgICAgewotICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAgICAq
b3V0IDw8ICJ4IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDE6Ci0gICAgICAg
ICAgICAqb3V0IDw8ICJ5IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDI6Ci0g
ICAgICAgICAgICAqb3V0IDw8ICJ6IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IDM6Ci0gICAgICAgICAgICAqb3V0IDw8ICJ3IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGNhc2Ug
MDoKKyAgICAgICAgICAgICAgICAqb3V0IDw8ICJ4IjsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICAqb3V0IDw8ICJ5IjsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAq
b3V0IDw8ICJ6IjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMzoK
KyAgICAgICAgICAgICAgICAqb3V0IDw8ICJ3IjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTkxMSw4ICsxMTgzLDcgQEAgdm9pZCBUSW50ZXJtQmluYXJ5Ojpw
cm9tb3RlKCkKICAgICBUUHJlY2lzaW9uIGhpZ2hlclByZWNpc2lvbiA9IEdldEhpZ2hlclByZWNp
c2lvbihtTGVmdC0+Z2V0UHJlY2lzaW9uKCksIG1SaWdodC0+Z2V0UHJlY2lzaW9uKCkpOwogICAg
IGdldFR5cGVQb2ludGVyKCktPnNldFByZWNpc2lvbihoaWdoZXJQcmVjaXNpb24pOwogCi0gICAg
Y29uc3QgaW50IG5vbWluYWxTaXplID0KLSAgICAgICAgc3RkOjptYXgobUxlZnQtPmdldE5vbWlu
YWxTaXplKCksIG1SaWdodC0+Z2V0Tm9taW5hbFNpemUoKSk7CisgICAgY29uc3QgaW50IG5vbWlu
YWxTaXplID0gc3RkOjptYXgobUxlZnQtPmdldE5vbWluYWxTaXplKCksIG1SaWdodC0+Z2V0Tm9t
aW5hbFNpemUoKSk7CiAKICAgICAvLwogICAgIC8vIEFsbCBzY2FsYXJzIG9yIHN0cnVjdHMuIENv
ZGUgYWZ0ZXIgdGhpcyB0ZXN0IGFzc3VtZXMgdGhpcyBjYXNlIGlzIHJlbW92ZWQhCkBAIC05MjEs
MzAgKzExOTIsMzAgQEAgdm9pZCBUSW50ZXJtQmluYXJ5Ojpwcm9tb3RlKCkKICAgICB7CiAgICAg
ICAgIHN3aXRjaCAobU9wKQogICAgICAgICB7Ci0gICAgICAgICAgLy8KLSAgICAgICAgICAvLyBQ
cm9tb3RlIHRvIGNvbmRpdGlvbmFsCi0gICAgICAgICAgLy8KLSAgICAgICAgICBjYXNlIEVPcEVx
dWFsOgotICAgICAgICAgIGNhc2UgRU9wTm90RXF1YWw6Ci0gICAgICAgICAgY2FzZSBFT3BMZXNz
VGhhbjoKLSAgICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOgotICAgICAgICAgIGNhc2UgRU9w
TGVzc1RoYW5FcXVhbDoKLSAgICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWw6Ci0gICAg
ICAgICAgICAgIHNldFR5cGUoVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCByZXN1bHRRdWFs
aWZpZXIpKTsKLSAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAvLwotICAgICAgICAg
IC8vIEFuZCBhbmQgT3Igb3BlcmF0ZSBvbiBjb25kaXRpb25hbHMKLSAgICAgICAgICAvLwotICAg
ICAgICAgIGNhc2UgRU9wTG9naWNhbEFuZDoKLSAgICAgICAgICBjYXNlIEVPcExvZ2ljYWxYb3I6
Ci0gICAgICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6Ci0gICAgICAgICAgICBBU1NFUlQobUxlZnQt
PmdldEJhc2ljVHlwZSgpID09IEVidEJvb2wgJiYgbVJpZ2h0LT5nZXRCYXNpY1R5cGUoKSA9PSBF
YnRCb29sKTsKLSAgICAgICAgICAgIHNldFR5cGUoVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVk
LCByZXN1bHRRdWFsaWZpZXIpKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgLy8K
KyAgICAgICAgICAgIC8vIFByb21vdGUgdG8gY29uZGl0aW9uYWwKKyAgICAgICAgICAgIC8vCisg
ICAgICAgICAgICBjYXNlIEVPcEVxdWFsOgorICAgICAgICAgICAgY2FzZSBFT3BOb3RFcXVhbDoK
KyAgICAgICAgICAgIGNhc2UgRU9wTGVzc1RoYW46CisgICAgICAgICAgICBjYXNlIEVPcEdyZWF0
ZXJUaGFuOgorICAgICAgICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFsOgorICAgICAgICAgICAg
Y2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFsOgorICAgICAgICAgICAgICAgIHNldFR5cGUoVFR5cGUo
RWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCByZXN1bHRRdWFsaWZpZXIpKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIC8vCisgICAgICAgICAgICAvLyBBbmQgYW5kIE9yIG9wZXJhdGUgb24gY29uZGl0aW9u
YWxzCisgICAgICAgICAgICAvLworICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2FsQW5kOgorICAg
ICAgICAgICAgY2FzZSBFT3BMb2dpY2FsWG9yOgorICAgICAgICAgICAgY2FzZSBFT3BMb2dpY2Fs
T3I6CisgICAgICAgICAgICAgICAgQVNTRVJUKG1MZWZ0LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRC
b29sICYmIG1SaWdodC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0Qm9vbCk7CisgICAgICAgICAgICAg
ICAgc2V0VHlwZShUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIHJlc3VsdFF1YWxpZmllcikp
OworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0x
MTU0LDIzICsxNDI1LDI3IEBAIFRJbnRlcm1UeXBlZCAqVEludGVybVVuYXJ5Ojpmb2xkKFREaWFn
bm9zdGljcyAqZGlhZ25vc3RpY3MpCiAgICAgVENvbnN0YW50VW5pb24gKmNvbnN0QXJyYXkgPSBu
dWxscHRyOwogICAgIHN3aXRjaCAobU9wKQogICAgIHsKLSAgICAgIGNhc2UgRU9wQW55OgotICAg
ICAgY2FzZSBFT3BBbGw6Ci0gICAgICBjYXNlIEVPcExlbmd0aDoKLSAgICAgIGNhc2UgRU9wVHJh
bnNwb3NlOgotICAgICAgY2FzZSBFT3BEZXRlcm1pbmFudDoKLSAgICAgIGNhc2UgRU9wSW52ZXJz
ZToKLSAgICAgIGNhc2UgRU9wUGFja1Nub3JtMngxNjoKLSAgICAgIGNhc2UgRU9wVW5wYWNrU25v
cm0yeDE2OgotICAgICAgY2FzZSBFT3BQYWNrVW5vcm0yeDE2OgotICAgICAgY2FzZSBFT3BVbnBh
Y2tVbm9ybTJ4MTY6Ci0gICAgICBjYXNlIEVPcFBhY2tIYWxmMngxNjoKLSAgICAgIGNhc2UgRU9w
VW5wYWNrSGFsZjJ4MTY6Ci0gICAgICAgICAgY29uc3RBcnJheSA9IG9wZXJhbmRDb25zdGFudC0+
Zm9sZFVuYXJ5Tm9uQ29tcG9uZW50V2lzZShtT3ApOwotICAgICAgICAgIGJyZWFrOwotICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICBjb25zdEFycmF5ID0gb3BlcmFuZENvbnN0YW50LT5mb2xkVW5h
cnlDb21wb25lbnRXaXNlKG1PcCwgZGlhZ25vc3RpY3MpOwotICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEVPcEFueToKKyAgICAgICAgY2FzZSBFT3BBbGw6CisgICAgICAgIGNhc2UgRU9w
TGVuZ3RoOgorICAgICAgICBjYXNlIEVPcFRyYW5zcG9zZToKKyAgICAgICAgY2FzZSBFT3BEZXRl
cm1pbmFudDoKKyAgICAgICAgY2FzZSBFT3BJbnZlcnNlOgorICAgICAgICBjYXNlIEVPcFBhY2tT
bm9ybTJ4MTY6CisgICAgICAgIGNhc2UgRU9wVW5wYWNrU25vcm0yeDE2OgorICAgICAgICBjYXNl
IEVPcFBhY2tVbm9ybTJ4MTY6CisgICAgICAgIGNhc2UgRU9wVW5wYWNrVW5vcm0yeDE2OgorICAg
ICAgICBjYXNlIEVPcFBhY2tIYWxmMngxNjoKKyAgICAgICAgY2FzZSBFT3BVbnBhY2tIYWxmMngx
NjoKKyAgICAgICAgY2FzZSBFT3BQYWNrVW5vcm00eDg6CisgICAgICAgIGNhc2UgRU9wUGFja1Nu
b3JtNHg4OgorICAgICAgICBjYXNlIEVPcFVucGFja1Vub3JtNHg4OgorICAgICAgICBjYXNlIEVP
cFVucGFja1Nub3JtNHg4OgorICAgICAgICAgICAgY29uc3RBcnJheSA9IG9wZXJhbmRDb25zdGFu
dC0+Zm9sZFVuYXJ5Tm9uQ29tcG9uZW50V2lzZShtT3ApOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb25zdEFycmF5ID0gb3BlcmFuZENvbnN0YW50
LT5mb2xkVW5hcnlDb21wb25lbnRXaXNlKG1PcCwgZGlhZ25vc3RpY3MpOworICAgICAgICAgICAg
YnJlYWs7CiAgICAgfQogCiAgICAgLy8gTm9kZXMgbWF5IGJlIGNvbnN0YW50IGZvbGRlZCB3aXRo
b3V0IGJlaW5nIHF1YWxpZmllZCBhcyBjb25zdGFudC4KQEAgLTExOTQsOCArMTQ2OSw3IEBAIFRJ
bnRlcm1UeXBlZCAqVEludGVybUFnZ3JlZ2F0ZTo6Zm9sZChURGlhZ25vc3RpY3MgKmRpYWdub3N0
aWNzKQogICAgICAgICBjb25zdEFycmF5ID0gVEludGVybUNvbnN0YW50VW5pb246OkZvbGRBZ2dy
ZWdhdGVCdWlsdEluKHRoaXMsIGRpYWdub3N0aWNzKTsKIAogICAgIC8vIE5vZGVzIG1heSBiZSBj
b25zdGFudCBmb2xkZWQgd2l0aG91dCBiZWluZyBxdWFsaWZpZWQgYXMgY29uc3RhbnQuCi0gICAg
VFF1YWxpZmllciByZXN1bHRRdWFsaWZpZXIgPSBhcmVDaGlsZHJlbkNvbnN0UXVhbGlmaWVkKCkg
PyBFdnFDb25zdCA6IEV2cVRlbXBvcmFyeTsKLSAgICByZXR1cm4gQ3JlYXRlRm9sZGVkTm9kZShj
b25zdEFycmF5LCB0aGlzLCByZXN1bHRRdWFsaWZpZXIpOworICAgIHJldHVybiBDcmVhdGVGb2xk
ZWROb2RlKGNvbnN0QXJyYXksIHRoaXMsIGdldFF1YWxpZmllcigpKTsKIH0KIAogLy8KQEAgLTEy
MjQsNDIgKzE0OTgsNDUgQEAgVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpm
b2xkQmluYXJ5KFRPcGVyYXRvciBvcCwKICAgICBlbHNlIGlmIChyaWdodE5vZGUtPmdldFR5cGUo
KS5nZXRPYmplY3RTaXplKCkgPiAxICYmIG9iamVjdFNpemUgPT0gMSkKICAgICB7CiAgICAgICAg
IC8vIGZvciBhIGNhc2UgbGlrZSBmbG9hdCBmID0gMS4yICsgdmVjNCgyLCAzLCA0LCA1KTsKLSAg
ICAgICAgbGVmdEFycmF5ID0gVmVjdG9yaXplKCpnZXRVbmlvbkFycmF5UG9pbnRlcigpLCByaWdo
dE5vZGUtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCkpOworICAgICAgICBsZWZ0QXJyYXkgID0g
VmVjdG9yaXplKCpnZXRVbmlvbkFycmF5UG9pbnRlcigpLCByaWdodE5vZGUtPmdldFR5cGUoKS5n
ZXRPYmplY3RTaXplKCkpOwogICAgICAgICBvYmplY3RTaXplID0gcmlnaHROb2RlLT5nZXRUeXBl
KCkuZ2V0T2JqZWN0U2l6ZSgpOwogICAgIH0KIAogICAgIFRDb25zdGFudFVuaW9uICpyZXN1bHRB
cnJheSA9IG51bGxwdHI7CiAKLSAgICBzd2l0Y2gob3ApCisgICAgc3dpdGNoIChvcCkKICAgICB7
Ci0gICAgICBjYXNlIEVPcEFkZDoKLSAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50
VW5pb25bb2JqZWN0U2l6ZV07Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0
U2l6ZTsgaSsrKQotICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0gPSBUQ29uc3RhbnRVbmlvbjo6
YWRkKGxlZnRBcnJheVtpXSwgcmlnaHRBcnJheVtpXSwgZGlhZ25vc3RpY3MsIGxpbmUpOwotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wU3ViOgotICAgICAgICByZXN1bHRBcnJheSA9IG5l
dyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBvYmplY3RTaXplOyBpKyspCi0gICAgICAgICAgICByZXN1bHRBcnJheVtpXSA9IFRDb25z
dGFudFVuaW9uOjpzdWIobGVmdEFycmF5W2ldLCByaWdodEFycmF5W2ldLCBkaWFnbm9zdGljcywg
bGluZSk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEFkZDoKKyAgICAgICAgICAg
IHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW29iamVjdFNpemVdOworICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAg
ICAgcmVzdWx0QXJyYXlbaV0gPQorICAgICAgICAgICAgICAgICAgICBUQ29uc3RhbnRVbmlvbjo6
YWRkKGxlZnRBcnJheVtpXSwgcmlnaHRBcnJheVtpXSwgZGlhZ25vc3RpY3MsIGxpbmUpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wU3ViOgorICAgICAgICAgICAgcmVzdWx0
QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CisgICAgICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICByZXN1
bHRBcnJheVtpXSA9CisgICAgICAgICAgICAgICAgICAgIFRDb25zdGFudFVuaW9uOjpzdWIobGVm
dEFycmF5W2ldLCByaWdodEFycmF5W2ldLCBkaWFnbm9zdGljcywgbGluZSk7CisgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgY2FzZSBFT3BNdWw6Ci0gICAgICBjYXNlIEVPcFZlY3RvclRpbWVz
U2NhbGFyOgotICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjoKLSAgICAgICAgcmVzdWx0
QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07Ci0gICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQotICAgICAgICAgICAgcmVzdWx0QXJyYXlb
aV0gPSBUQ29uc3RhbnRVbmlvbjo6bXVsKGxlZnRBcnJheVtpXSwgcmlnaHRBcnJheVtpXSwgZGlh
Z25vc3RpY3MsIGxpbmUpOwotICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BNdWw6Cisg
ICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2FsYXI6CisgICAgICAgIGNhc2UgRU9wTWF0cml4
VGltZXNTY2FsYXI6CisgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlv
bltvYmplY3RTaXplXTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0
U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldID0KKyAgICAgICAgICAg
ICAgICAgICAgVENvbnN0YW50VW5pb246Om11bChsZWZ0QXJyYXlbaV0sIHJpZ2h0QXJyYXlbaV0s
IGRpYWdub3N0aWNzLCBsaW5lKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEVP
cE1hdHJpeFRpbWVzTWF0cml4OgorICAgICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4Ogog
ICAgICAgICB7CiAgICAgICAgICAgICAvLyBUT0RPKGptYWRsbCk6IFRoaXMgY29kZSBzaG91bGQg
Y2hlY2sgZm9yIG92ZXJmbG93cy4KICAgICAgICAgICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0QmFz
aWNUeXBlKCkgPT0gRWJ0RmxvYXQgJiYgcmlnaHROb2RlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRG
bG9hdCk7CiAKLSAgICAgICAgICAgIGNvbnN0IGludCBsZWZ0Q29scyA9IGdldENvbHMoKTsKLSAg
ICAgICAgICAgIGNvbnN0IGludCBsZWZ0Um93cyA9IGdldFJvd3MoKTsKLSAgICAgICAgICAgIGNv
bnN0IGludCByaWdodENvbHMgPSByaWdodE5vZGUtPmdldFR5cGUoKS5nZXRDb2xzKCk7Ci0gICAg
ICAgICAgICBjb25zdCBpbnQgcmlnaHRSb3dzID0gcmlnaHROb2RlLT5nZXRUeXBlKCkuZ2V0Um93
cygpOworICAgICAgICAgICAgY29uc3QgaW50IGxlZnRDb2xzICAgPSBnZXRDb2xzKCk7CisgICAg
ICAgICAgICBjb25zdCBpbnQgbGVmdFJvd3MgICA9IGdldFJvd3MoKTsKKyAgICAgICAgICAgIGNv
bnN0IGludCByaWdodENvbHMgID0gcmlnaHROb2RlLT5nZXRUeXBlKCkuZ2V0Q29scygpOworICAg
ICAgICAgICAgY29uc3QgaW50IHJpZ2h0Um93cyAgPSByaWdodE5vZGUtPmdldFR5cGUoKS5nZXRS
b3dzKCk7CiAgICAgICAgICAgICBjb25zdCBpbnQgcmVzdWx0Q29scyA9IHJpZ2h0Q29sczsKICAg
ICAgICAgICAgIGNvbnN0IGludCByZXN1bHRSb3dzID0gbGVmdFJvd3M7CiAKQEAgLTEyNzQsMTE0
ICsxNTUxLDE1MiBAQCBUQ29uc3RhbnRVbmlvbiAqVEludGVybUNvbnN0YW50VW5pb246OmZvbGRC
aW5hcnkoVE9wZXJhdG9yIG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlb
cmVzdWx0Um93cyAqIGNvbHVtbiArIHJvd10uc2V0RkNvbnN0KAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5W3Jlc3VsdFJvd3MgKiBjb2x1bW4gKyByb3ddLmdldEZDb25z
dCgpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0QXJyYXlbaSAqIGxlZnRSb3dz
ICsgcm93XS5nZXRGQ29uc3QoKSAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRB
cnJheVtjb2x1bW4gKiByaWdodFJvd3MgKyBpXS5nZXRGQ29uc3QoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJpZ2h0QXJyYXlbY29sdW1uICogcmlnaHRSb3dzICsgaV0uZ2V0
RkNvbnN0KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEVPcERp
djoKLSAgICAgIGNhc2UgRU9wSU1vZDoKKyAgICAgICAgY2FzZSBFT3BEaXY6CisgICAgICAgIGNh
c2UgRU9wSU1vZDoKICAgICAgICAgewogICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENv
bnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBzd2l0
Y2ggKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgICAgICAgICBpZiAocmlnaHRB
cnJheVtpXSA9PSAwLjBmKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBkaWFnbm9zdGljcy0+d2FybmluZygKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZXRMaW5lKCksICJEaXZpZGUgYnkgemVybyBlcnJvciBkdXJpbmcgY29uc3RhbnQgZm9sZGlu
ZyIsICIvIiwgIiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0
RkNvbnN0KGxlZnRBcnJheVtpXS5nZXRGQ29uc3QoKSA8IDAgPyAtRkxUX01BWCA6IEZMVF9NQVgp
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKICAgICAgICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9wID09IEVPcERpdik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QobGVmdEFycmF5W2ldLmdldEZDb25z
dCgpIC8gcmlnaHRBcnJheVtpXS5nZXRGQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0
SW50OgotICAgICAgICAgICAgICAgICAgICBpZiAocmlnaHRBcnJheVtpXSA9PSAwKQotICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkaWFnbm9zdGljcy0+d2Fy
bmluZygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMaW5lKCksICJEaXZpZGUgYnkg
emVybyBlcnJvciBkdXJpbmcgY29uc3RhbnQgZm9sZGluZyIsICIvIiwgIiIpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KElOVF9NQVgpOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxocyAgICAgPSBsZWZ0QXJyYXlb
aV0uZ2V0SUNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGl2aXNvciA9IHJp
Z2h0QXJyYXlbaV0uZ2V0SUNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3Ag
PT0gRU9wRGl2KQorICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGl2aWRlbmQgPSBsZWZ0
QXJyYXlbaV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBkaXZp
c29yICA9IHJpZ2h0QXJyYXlbaV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZGl2aXNvciA9PSAwLjBmKQogICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIHdoZXJl
IHRoZSBtaW5pbXVtIHJlcHJlc2VudGFibGUgbnVtYmVyIGlzCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gZGl2aWRlZCBieSAtMS4gSWYgbGVmdCBhbG9uZSB0aGlzIGxlYWRzIHRvIGlu
dGVnZXIgb3ZlcmZsb3cgaW4gQysrLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVT
U0wgMy4wMC42IHNlY3Rpb24gNC4xLjMgSW50ZWdlcnM6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gIkhvd2V2ZXIsIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgbWluaW11bSByZXByZXNl
bnRhYmxlIHZhbHVlIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGl2aWRlZCBi
eSAtMSwgaXQgaXMgYWxsb3dlZCB0byByZXR1cm4gZWl0aGVyIHRoZSBtaW5pbXVtCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gcmVwcmVzZW50YWJsZSB2YWx1ZSBvciB0aGUgbWF4aW11
bSByZXByZXNlbnRhYmxlIHZhbHVlLiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
bGhzID09IC0weDdmZmZmZmZmIC0gMSAmJiBkaXZpc29yID09IC0xKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChkaXZpZGVuZCA9PSAwLjBmKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0u
c2V0SUNvbnN0KDB4N2ZmZmZmZmYpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWFnbm9zdGljcy0+d2FybmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdldExpbmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJaZXJvIGRp
dmlkZWQgYnkgemVybyBkdXJpbmcgY29uc3RhbnQgZm9sZGluZyBnZW5lcmF0ZWQgTmFOIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChzdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6cXVpZXRfTmFOKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5z
ZXRJQ29uc3QobGhzIC8gZGl2aXNvcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpYWdub3N0aWNzLT53YXJuaW5nKGdldExpbmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpdmlkZSBieSB6ZXJvIGR1cmluZyBjb25z
dGFudCBmb2xkaW5nIiwgIi8iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBuZWdhdGl2ZVJlc3VsdCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OnNpZ25iaXQoZGl2aWRlbmQpICE9IHN0ZDo6c2lnbmJpdChkaXZpc29yKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmVnYXRpdmVSZXN1bHQgPyAtc3RkOjpudW1l
cmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDogc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Omlu
ZmluaXR5KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGdsOjppc0luZihk
aXZpZGVuZCkgJiYgZ2w6OmlzSW5mKGRpdmlzb3IpKQorICAgICAgICAgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWdub3N0aWNzLT53YXJuaW5nKGdldExp
bmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
SW5maW5pdHkgZGl2aWRlZCBieSBpbmZpbml0eSBkdXJpbmcgY29uc3RhbnQgIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb2xkaW5nIGdlbmVyYXRl
ZCBOYU4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIvIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNv
bnN0KHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG9wID09
IEVPcElNb2QpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaHMgPCAwIHx8IGRp
dmlzb3IgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHJlc3VsdCA9IGRp
dmlkZW5kIC8gZGl2aXNvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWdsOjpp
c0luZihkaXZpZGVuZCkgJiYgZ2w6OmlzSW5mKHJlc3VsdCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFU1NMIDMuMDAu
NiBzZWN0aW9uIDUuOTogUmVzdWx0cyBvZiBtb2R1bHVzIGFyZSB1bmRlZmluZWQgd2hlbgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlaXRoZXIgb25lIG9mIHRoZSBvcGVyYW5k
cyBpcyBuZWdhdGl2ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhZ25vc3Rp
Y3MtPndhcm5pbmcoZ2V0TGluZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiTmVnYXRpdmUgbW9kdWx1cyBvcGVyYXRvciBvcGVyYW5kICIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVu
Y291bnRlcmVkIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiLCAiIik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdCgwKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGlhZ25vc3RpY3MtPndhcm5pbmcoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMaW5lKCksICJDb25zdGFudCBmb2xkZWQgZGl2
aXNpb24gb3ZlcmZsb3dlZCB0byBpbmZpbml0eSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiLyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QocmVzdWx0KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50Ogor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJpZ2h0QXJyYXlbaV0gPT0gMCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFnbm9zdGlj
cy0+d2FybmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TGluZSgpLCAi
RGl2aWRlIGJ5IHplcm8gZXJyb3IgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciLCAiLyIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdChJTlRfTUFY
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgbGhzICAgICA9IGxlZnRBcnJheVtpXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgZGl2aXNvciA9IHJpZ2h0QXJyYXlbaV0uZ2V0SUNvbnN0KCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wID09IEVPcERpdikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENo
ZWNrIGZvciB0aGUgc3BlY2lhbCBjYXNlIHdoZXJlIHRoZSBtaW5pbXVtIHJlcHJlc2VudGFibGUg
bnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGRpdmlkZWQgYnkgLTEuIElmIGxlZnQgYWxvbmUgdGhp
cyBsZWFkcyB0byBpbnRlZ2VyIG92ZXJmbG93IGluCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEMrKy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRVNTTCAz
LjAwLjYgc2VjdGlvbiA0LjEuMyBJbnRlZ2VyczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gIkhvd2V2ZXIsIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgbWluaW11bSByZXByZXNl
bnRhYmxlIHZhbHVlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpdmlk
ZWQgYnkgLTEsIGl0IGlzIGFsbG93ZWQgdG8gcmV0dXJuIGVpdGhlciB0aGUgbWluaW11bQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXByZXNlbnRhYmxlIHZhbHVlIG9yIHRo
ZSBtYXhpbXVtIHJlcHJlc2VudGFibGUgdmFsdWUuIgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobGhzID09IC0weDdmZmZmZmZmIC0gMSAmJiBkaXZpc29yID09IC0xKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3QoMHg3ZmZmZmZmZik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3QobGhzIC8gZGl2
aXNvcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KGxocyAlIGRpdmlzb3IpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQob3AgPT0gRU9wSU1vZCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChsaHMgPCAwIHx8IGRpdmlzb3IgPCAwKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBFU1NMIDMuMDAuNiBzZWN0aW9uIDUuOTogUmVzdWx0cyBvZiBtb2R1bHVzIGFyZSB1bmRl
ZmluZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVpdGhlciBvbmUgb2YgdGhlIG9wZXJh
bmRzIGlzIG5lZ2F0aXZlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlh
Z25vc3RpY3MtPndhcm5pbmcoZ2V0TGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5lZ2F0aXZlIG1vZHVsdXMgb3BlcmF0b3Ig
b3BlcmFuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZW5jb3VudGVyZWQgZHVyaW5nIGNvbnN0YW50IGZvbGRpbmciLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUiKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElD
b25zdCgwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNl
dElDb25zdChsaHMgJSBkaXZpc29yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgICBjYXNlIEVi
dFVJbnQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyaWdodEFycmF5W2ldID09IDApCi0gICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpYWdub3N0aWNzLT53
YXJuaW5nKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExpbmUoKSwgIkRpdmlkZSBi
eSB6ZXJvIGVycm9yIGR1cmluZyBjb25zdGFudCBmb2xkaW5nIiwgIi8iLCAiIik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3QoVUlOVF9NQVgpOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wID09IEVPcERpdikKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHJpZ2h0QXJyYXlbaV0gPT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3QobGVmdEFycmF5
W2ldLmdldFVDb25zdCgpIC8gcmlnaHRBcnJheVtpXS5nZXRVQ29uc3QoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlhZ25vc3RpY3MtPndhcm5pbmcoCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdldExpbmUoKSwgIkRpdmlkZSBieSB6ZXJvIGVycm9yIGR1cmluZyBj
b25zdGFudCBmb2xkaW5nIiwgIi8iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHRBcnJheVtpXS5zZXRVQ29uc3QoVUlOVF9NQVgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChvcCA9PSBFT3BJTW9kKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3QobGVmdEFy
cmF5W2ldLmdldFVDb25zdCgpICUgcmlnaHRBcnJheVtpXS5nZXRVQ29uc3QoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wID09IEVPcERp
dikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldFVDb25zdChsZWZ0QXJyYXlbaV0uZ2V0VUNvbnN0
KCkgLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmlnaHRBcnJheVtpXS5nZXRVQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChv
cCA9PSBFT3BJTW9kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJy
YXlbaV0uc2V0VUNvbnN0KGxlZnRBcnJheVtpXS5nZXRVQ29uc3QoKSAlCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodEFycmF5W2ld
LmdldFVDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OwotICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKIAotICAgICAgY2FzZSBF
T3BNYXRyaXhUaW1lc1ZlY3RvcjoKKyAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1ZlY3RvcjoK
ICAgICAgICAgewogICAgICAgICAgICAgLy8gVE9ETyhqbWFkbGwpOiBUaGlzIGNvZGUgc2hvdWxk
IGNoZWNrIGZvciBvdmVyZmxvd3MuCiAgICAgICAgICAgICBBU1NFUlQocmlnaHROb2RlLT5nZXRC
YXNpY1R5cGUoKSA9PSBFYnRGbG9hdCk7CkBAIC0xMzk2LDE1ICsxNzExLDE2IEBAIFRDb25zdGFu
dFVuaW9uICpUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZEJpbmFyeShUT3BlcmF0b3Igb3AsCiAg
ICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbbWF0cml4Um93XS5zZXRGQ29uc3QoMC4wZik7CiAg
ICAgICAgICAgICAgICAgZm9yIChpbnQgY29sID0gMDsgY29sIDwgbWF0cml4Q29sczsgY29sKysp
CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVttYXRy
aXhSb3ddLnNldEZDb25zdChyZXN1bHRBcnJheVttYXRyaXhSb3ddLmdldEZDb25zdCgpICsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdEFy
cmF5W2NvbCAqIG1hdHJpeFJvd3MgKyBtYXRyaXhSb3ddLmdldEZDb25zdCgpICoKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRBcnJheVtj
b2xdLmdldEZDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbbWF0cml4
Um93XS5zZXRGQ29uc3QoCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVttYXRy
aXhSb3ddLmdldEZDb25zdCgpICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRBcnJheVtj
b2wgKiBtYXRyaXhSb3dzICsgbWF0cml4Um93XS5nZXRGQ29uc3QoKSAqCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmlnaHRBcnJheVtjb2xdLmdldEZDb25zdCgpKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKLSAgICAg
IGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXg6CisgICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNN
YXRyaXg6CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIFRPRE8oam1hZGxsKTogVGhpcyBjb2Rl
IHNob3VsZCBjaGVjayBmb3Igb3ZlcmZsb3dzLgogICAgICAgICAgICAgQVNTRVJUKGdldFR5cGUo
KS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCk7CkBAIC0xNDE5LDE1ICsxNzM1LDE2IEBAIFRD
b25zdGFudFVuaW9uICpUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZEJpbmFyeShUT3BlcmF0b3Ig
b3AsCiAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbbWF0cml4Q29sXS5zZXRGQ29uc3QoMC4w
Zik7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgbWF0cml4Um93ID0gMDsgbWF0cml4Um93IDwg
bWF0cml4Um93czsgbWF0cml4Um93KyspCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICByZXN1bHRBcnJheVttYXRyaXhDb2xdLnNldEZDb25zdChyZXN1bHRBcnJheVttYXRy
aXhDb2xdLmdldEZDb25zdCgpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGVmdEFycmF5W21hdHJpeFJvd10uZ2V0RkNvbnN0KCkgKgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodEFy
cmF5W21hdHJpeENvbCAqIG1hdHJpeFJvd3MgKyBtYXRyaXhSb3ddLmdldEZDb25zdCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbbWF0cml4Q29sXS5zZXRGQ29uc3QoCisgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVttYXRyaXhDb2xdLmdldEZDb25zdCgpICsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRBcnJheVttYXRyaXhSb3ddLmdldEZDb25zdCgp
ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodEFycmF5W21hdHJpeENvbCAqIG1h
dHJpeFJvd3MgKyBtYXRyaXhSb3ddLmdldEZDb25zdCgpKTsKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKLSAgICAgIGNhc2UgRU9w
TG9naWNhbEFuZDoKKyAgICAgICAgY2FzZSBFT3BMb2dpY2FsQW5kOgogICAgICAgICB7CiAgICAg
ICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQpAQCAtMTQz
Nyw3ICsxNzU0LDcgQEAgVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xk
QmluYXJ5KFRPcGVyYXRvciBvcCwKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAotICAgICAg
Y2FzZSBFT3BMb2dpY2FsT3I6CisgICAgICAgIGNhc2UgRU9wTG9naWNhbE9yOgogICAgICAgICB7
CiAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXpl
XTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQpA
QCAtMTQ0Nyw3ICsxNzY0LDcgQEAgVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9u
Ojpmb2xkQmluYXJ5KFRPcGVyYXRvciBvcCwKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAot
ICAgICAgY2FzZSBFT3BMb2dpY2FsWG9yOgorICAgICAgICBjYXNlIEVPcExvZ2ljYWxYb3I6CiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0g
RWJ0Qm9vbCk7CiAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltv
YmplY3RTaXplXTsKQEAgLTE0NTgsNjEgKzE3NzUsNjMgQEAgVENvbnN0YW50VW5pb24gKlRJbnRl
cm1Db25zdGFudFVuaW9uOjpmb2xkQmluYXJ5KFRPcGVyYXRvciBvcCwKICAgICAgICAgfQogICAg
ICAgICBicmVhazsKIAotICAgICAgY2FzZSBFT3BCaXR3aXNlQW5kOgotICAgICAgICByZXN1bHRB
cnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKLSAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCi0gICAgICAgICAgICByZXN1bHRBcnJheVtp
XSA9IGxlZnRBcnJheVtpXSAmIHJpZ2h0QXJyYXlbaV07Ci0gICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFT3BCaXR3aXNlWG9yOgotICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRV
bmlvbltvYmplY3RTaXplXTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RT
aXplOyBpKyspCi0gICAgICAgICAgICByZXN1bHRBcnJheVtpXSA9IGxlZnRBcnJheVtpXSBeIHJp
Z2h0QXJyYXlbaV07Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BCaXR3aXNlT3I6Ci0g
ICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVjdFNpemU7IGkrKykKLSAgICAgICAgICAg
IHJlc3VsdEFycmF5W2ldID0gbGVmdEFycmF5W2ldIHwgcmlnaHRBcnJheVtpXTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVmdDoKLSAgICAgICAgcmVzdWx0QXJyYXkg
PSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07Ci0gICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQotICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0gPSBU
Q29uc3RhbnRVbmlvbjo6bHNoaWZ0KGxlZnRBcnJheVtpXSwgcmlnaHRBcnJheVtpXSwgZGlhZ25v
c3RpY3MsIGxpbmUpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0U2hpZnRSaWdo
dDoKLSAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQotICAgICAg
ICAgICAgcmVzdWx0QXJyYXlbaV0gPSBUQ29uc3RhbnRVbmlvbjo6cnNoaWZ0KGxlZnRBcnJheVtp
XSwgcmlnaHRBcnJheVtpXSwgZGlhZ25vc3RpY3MsIGxpbmUpOwotICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BCaXR3aXNlQW5kOgorICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcg
VENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpICAg
ICAgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5
W2ldID0gbGVmdEFycmF5W2ldICYgcmlnaHRBcnJheVtpXTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEVPcEJpdHdpc2VYb3I6CisgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5l
dyBUQ29uc3RhbnRVbmlvbltvYmplY3RTaXplXTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
ICAgICA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgcmVzdWx0QXJy
YXlbaV0gPSBsZWZ0QXJyYXlbaV0gXiByaWdodEFycmF5W2ldOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRU9wQml0d2lzZU9yOgorICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBu
ZXcgVENvbnN0YW50VW5pb25bb2JqZWN0U2l6ZV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ICAgICAgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgIHJlc3VsdEFy
cmF5W2ldID0gbGVmdEFycmF5W2ldIHwgcmlnaHRBcnJheVtpXTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVmdDoKKyAgICAgICAgICAgIHJlc3VsdEFycmF5
ID0gbmV3IFRDb25zdGFudFVuaW9uW29iamVjdFNpemVdOworICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgcmVzdWx0QXJy
YXlbaV0gPQorICAgICAgICAgICAgICAgICAgICBUQ29uc3RhbnRVbmlvbjo6bHNoaWZ0KGxlZnRB
cnJheVtpXSwgcmlnaHRBcnJheVtpXSwgZGlhZ25vc3RpY3MsIGxpbmUpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRU9wQml0U2hpZnRSaWdodDoKKyAgICAgICAgICAgIHJlc3Vs
dEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW29iamVjdFNpemVdOworICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBvYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXlbaV0gPQorICAgICAgICAgICAgICAgICAgICBUQ29uc3RhbnRVbmlvbjo6cnNoaWZ0
KGxlZnRBcnJheVtpXSwgcmlnaHRBcnJheVtpXSwgZGlhZ25vc3RpY3MsIGxpbmUpOworICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgIGNhc2UgRU9wTGVzc1RoYW46Ci0gICAgICAgIEFTU0VSVChv
YmplY3RTaXplID09IDEpOwotICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlv
blsxXTsKLSAgICAgICAgcmVzdWx0QXJyYXktPnNldEJDb25zdCgqbGVmdEFycmF5IDwgKnJpZ2h0
QXJyYXkpOwotICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BMZXNzVGhhbjoKKyAgICAg
ICAgICAgIEFTU0VSVChvYmplY3RTaXplID09IDEpOworICAgICAgICAgICAgcmVzdWx0QXJyYXkg
PSBuZXcgVENvbnN0YW50VW5pb25bMV07CisgICAgICAgICAgICByZXN1bHRBcnJheS0+c2V0QkNv
bnN0KCpsZWZ0QXJyYXkgPCAqcmlnaHRBcnJheSk7CisgICAgICAgICAgICBicmVhazsKIAotICAg
ICAgY2FzZSBFT3BHcmVhdGVyVGhhbjoKLSAgICAgICAgQVNTRVJUKG9iamVjdFNpemUgPT0gMSk7
Ci0gICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uWzFdOwotICAgICAgICBy
ZXN1bHRBcnJheS0+c2V0QkNvbnN0KCpsZWZ0QXJyYXkgPiAqcmlnaHRBcnJheSk7Ci0gICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOgorICAgICAgICAgICAgQVNTRVJU
KG9iamVjdFNpemUgPT0gMSk7CisgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3Rh
bnRVbmlvblsxXTsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRCQ29uc3QoKmxlZnRBcnJh
eSA+ICpyaWdodEFycmF5KTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEVPcExl
c3NUaGFuRXF1YWw6Ci0gICAgICAgIEFTU0VSVChvYmplY3RTaXplID09IDEpOwotICAgICAgICBy
ZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgcmVzdWx0QXJyYXkt
PnNldEJDb25zdCghKCpsZWZ0QXJyYXkgPiAqcmlnaHRBcnJheSkpOwotICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFsOgorICAgICAgICAgICAgQVNTRVJUKG9iamVj
dFNpemUgPT0gMSk7CisgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlv
blsxXTsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRCQ29uc3QoISgqbGVmdEFycmF5ID4g
KnJpZ2h0QXJyYXkpKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEVPcEdyZWF0
ZXJUaGFuRXF1YWw6Ci0gICAgICAgIEFTU0VSVChvYmplY3RTaXplID09IDEpOwotICAgICAgICBy
ZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsKLSAgICAgICAgcmVzdWx0QXJyYXkt
PnNldEJDb25zdCghKCpsZWZ0QXJyYXkgPCAqcmlnaHRBcnJheSkpOwotICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFsOgorICAgICAgICAgICAgQVNTRVJUKG9i
amVjdFNpemUgPT0gMSk7CisgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRV
bmlvblsxXTsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRCQ29uc3QoISgqbGVmdEFycmF5
IDwgKnJpZ2h0QXJyYXkpKTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEVPcEVx
dWFsOgotICAgICAgY2FzZSBFT3BOb3RFcXVhbDoKKyAgICAgICAgY2FzZSBFT3BFcXVhbDoKKyAg
ICAgICAgY2FzZSBFT3BOb3RFcXVhbDoKICAgICAgICAgewogICAgICAgICAgICAgcmVzdWx0QXJy
YXkgPSBuZXcgVENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgICAgICBib29sIGVxdWFsID0gdHJ1
ZTsKKyAgICAgICAgICAgIGJvb2wgZXF1YWwgID0gdHJ1ZTsKICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIGlmIChsZWZ0QXJyYXlbaV0gIT0gcmlnaHRBcnJheVtpXSkKQEAgLTE1MzIsOSArMTg1
MSw5IEBAIFRDb25zdGFudFVuaW9uICpUSW50ZXJtQ29uc3RhbnRVbmlvbjo6Zm9sZEJpbmFyeShU
T3BlcmF0b3Igb3AsCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKLSAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdEFycmF5OwogfQpAQCAtMTU0
OSw3ICsxODY4LDcgQEAgVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xk
VW5hcnlOb25Db21wb25lbnRXaXNlKFRPcGVyYXRvciBvcCkKICAgICBjb25zdCBUQ29uc3RhbnRV
bmlvbiAqb3BlcmFuZEFycmF5ID0gZ2V0VW5pb25BcnJheVBvaW50ZXIoKTsKICAgICBBU1NFUlQo
b3BlcmFuZEFycmF5KTsKIAotICAgIHNpemVfdCBvYmplY3RTaXplID0gZ2V0VHlwZSgpLmdldE9i
amVjdFNpemUoKTsKKyAgICBzaXplX3Qgb2JqZWN0U2l6ZSAgICAgICAgICAgPSBnZXRUeXBlKCku
Z2V0T2JqZWN0U2l6ZSgpOwogICAgIFRDb25zdGFudFVuaW9uICpyZXN1bHRBcnJheSA9IG51bGxw
dHI7CiAgICAgc3dpdGNoIChvcCkKICAgICB7CkBAIC0xNjc1LDYgKzE5OTQsNDkgQEAgVENvbnN0
YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkVW5hcnlOb25Db21wb25lbnRXaXNl
KFRPcGVyYXRvciBvcCkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAg
Y2FzZSBFT3BQYWNrVW5vcm00eDg6CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChnZXRU
eXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0RmxvYXQpOworICAgICAgICAgICAgcmVzdWx0QXJy
YXkgPSBuZXcgVENvbnN0YW50VW5pb24oKTsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRV
Q29uc3QoCisgICAgICAgICAgICAgICAgZ2w6OlBhY2tVbm9ybTR4OChvcGVyYW5kQXJyYXlbMF0u
Z2V0RkNvbnN0KCksIG9wZXJhbmRBcnJheVsxXS5nZXRGQ29uc3QoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wZXJhbmRBcnJheVsyXS5nZXRGQ29uc3QoKSwgb3BlcmFuZEFy
cmF5WzNdLmdldEZDb25zdCgpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEVPcFBhY2tTbm9ybTR4ODoKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJU
KGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRGbG9hdCk7CisgICAgICAgICAgICByZXN1
bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbigpOworICAgICAgICAgICAgcmVzdWx0QXJyYXkt
PnNldFVDb25zdCgKKyAgICAgICAgICAgICAgICBnbDo6UGFja1Nub3JtNHg4KG9wZXJhbmRBcnJh
eVswXS5nZXRGQ29uc3QoKSwgb3BlcmFuZEFycmF5WzFdLmdldEZDb25zdCgpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZEFycmF5WzJdLmdldEZDb25zdCgpLCBvcGVy
YW5kQXJyYXlbM10uZ2V0RkNvbnN0KCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGNhc2UgRU9wVW5wYWNrVW5vcm00eDg6CisgICAgICAgIHsKKyAgICAgICAgICAg
IEFTU0VSVChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0VUludCk7CisgICAgICAgICAg
ICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbls0XTsKKyAgICAgICAgICAgIGZsb2F0
IGZbNF07CisgICAgICAgICAgICBnbDo6VW5wYWNrVW5vcm00eDgob3BlcmFuZEFycmF5WzBdLmdl
dFVDb25zdCgpLCBmKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNDsgKytp
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25z
dChmW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRU9wVW5wYWNrU25vcm00eDg6CisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0VUludCk7CisgICAgICAgICAgICBy
ZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvbls0XTsKKyAgICAgICAgICAgIGZsb2F0IGZb
NF07CisgICAgICAgICAgICBnbDo6VW5wYWNrU25vcm00eDgob3BlcmFuZEFycmF5WzBdLmdldFVD
b25zdCgpLCBmKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNDsgKytpKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChm
W2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTE2OTgsNyArMjA2MCw3IEBAIFRDb25zdGFudFVuaW9uICpUSW50ZXJtQ29uc3Rh
bnRVbmlvbjo6Zm9sZFVuYXJ5Q29tcG9uZW50V2lzZShUT3BlcmF0b3Igb3AsCiAgICAgVENvbnN0
YW50VW5pb24gKnJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW29iamVjdFNpemVdOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb2JqZWN0U2l6ZTsgaSsrKQogICAgIHsKLSAgICAg
ICAgc3dpdGNoKG9wKQorICAgICAgICBzd2l0Y2ggKG9wKQogICAgICAgICB7CiAgICAgICAgICAg
ICBjYXNlIEVPcE5lZ2F0aXZlOgogICAgICAgICAgICAgICAgIHN3aXRjaCAoZ2V0VHlwZSgpLmdl
dEJhc2ljVHlwZSgpKQpAQCAtMjAzNSw3ICsyMzk3LDcgQEAgVENvbnN0YW50VW5pb24gKlRJbnRl
cm1Db25zdGFudFVuaW9uOjpmb2xkVW5hcnlDb21wb25lbnRXaXNlKFRPcGVyYXRvciBvcCwKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNh
c2UgRU9wVmVjdG9yTG9naWNhbE5vdDoKKyAgICAgICAgICAgIGNhc2UgRU9wTG9naWNhbE5vdENv
bXBvbmVudFdpc2U6CiAgICAgICAgICAgICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5
cGUoKSA9PSBFYnRCb29sKTsKICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29u
c3QoIW9wZXJhbmRBcnJheVtpXS5nZXRCQ29uc3QoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC0yMDUyLDcgKzI0MTQsODIgQEAgVENvbnN0YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVu
aW9uOjpmb2xkVW5hcnlDb21wb25lbnRXaXNlKFRPcGVyYXRvciBvcCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhZ25vc3RpY3MsICZyZXN1bHRB
cnJheVtpXSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0KKyAgICAg
ICAgICAgIGNhc2UgRU9wQml0ZmllbGRSZXZlcnNlOgorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIHVpbnQzMl90IHZhbHVlOworICAgICAgICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0
QmFzaWNUeXBlKCkgPT0gRWJ0SW50KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgdmFsdWUgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFuZEFycmF5W2ldLmdldElD
b25zdCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNp
Y1R5cGUoKSA9PSBFYnRVSW50KTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBvcGVyYW5k
QXJyYXlbaV0uZ2V0VUNvbnN0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IHVpbnQzMl90IHJlc3VsdCA9IGdsOjpCaXRmaWVsZFJldmVyc2UodmFsdWUpOworICAgICAgICAg
ICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50KQorICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KHN0
YXRpY19jYXN0PGludDMyX3Q+KHJlc3VsdCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICByZXN1
bHRBcnJheVtpXS5zZXRVQ29uc3QocmVzdWx0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEVPcEJpdENv
dW50OgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbHVlOworICAg
ICAgICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50KQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzdGF0aWNfY2FzdDx1
aW50MzJfdD4ob3BlcmFuZEFycmF5W2ldLmdldElDb25zdCgpKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRVSW50KTsKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWUgPSBvcGVyYW5kQXJyYXlbaV0uZ2V0VUNvbnN0KCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGludCByZXN1bHQgPSBnbDo6Qml0Q291bnQo
dmFsdWUpOworICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdChyZXN1bHQp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2Fz
ZSBFT3BGaW5kTFNCOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IHZh
bHVlOworICAgICAgICAgICAgICAgIGlmIChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0
SW50KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzdGF0
aWNfY2FzdDx1aW50MzJfdD4ob3BlcmFuZEFycmF5W2ldLmdldElDb25zdCgpKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKGdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRVSW50
KTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBvcGVyYW5kQXJyYXlbaV0uZ2V0VUNvbnN0
KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNl
dElDb25zdChnbDo6RmluZExTQih2YWx1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBFT3BGaW5kTVNCOgorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIHVpbnQzMl90IHZhbHVlOworICAgICAgICAgICAgICAgIGlmIChnZXRU
eXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0SW50KQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgaW50IGludFZhbHVlID0gb3BlcmFuZEFycmF5W2ldLmdldElDb25zdCgp
OworICAgICAgICAgICAgICAgICAgICB2YWx1ZSAgICAgICAgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oaW50VmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoaW50VmFsdWUgPCAwKQorICAg
ICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBMb29rIGZvciB6
ZXJvIGluc3RlYWQgb2Ygb25lIGluIHZhbHVlLiBUaGlzIGFsc28gaGFuZGxlcyB0aGUgaW50VmFs
dWUgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0xIHNwZWNpYWwgY2FzZSwgd2hlcmUg
dGhlIHJldHVybiB2YWx1ZSBuZWVkcyB0byBiZSAtMS4KKyAgICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlID0gfnZhbHVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChnZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0VUludCk7CisgICAg
ICAgICAgICAgICAgICAgIHZhbHVlID0gb3BlcmFuZEFycmF5W2ldLmdldFVDb25zdCgpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3Qo
Z2w6OkZpbmRNU0IodmFsdWUpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGNhc2UgRU9wREZkeDoKICAgICAgICAgICAgIGNhc2UgRU9wREZkeToK
ICAgICAgICAgICAgIGNhc2UgRU9wRndpZHRoOgpAQCAtMjEzNSw3ICsyNTcyLDcgQEAgVENvbnN0
YW50VW5pb24gKlRJbnRlcm1Db25zdGFudFVuaW9uOjpGb2xkQWdncmVnYXRlQ29uc3RydWN0b3Io
VEludGVybUFnZ3JlZ2F0ZQogICAgICAgICAgICAgaW50IGFyZ3VtZW50Q29scyA9IGFyZ3VtZW50
Q29uc3RhbnQtPmdldFR5cGUoKS5nZXRDb2xzKCk7CiAgICAgICAgICAgICBpbnQgYXJndW1lbnRS
b3dzID0gYXJndW1lbnRDb25zdGFudC0+Z2V0VHlwZSgpLmdldFJvd3MoKTsKICAgICAgICAgICAg
IGludCByZXN1bHRDb2xzICAgPSBhZ2dyZWdhdGUtPmdldFR5cGUoKS5nZXRDb2xzKCk7Ci0gICAg
ICAgICAgICBpbnQgcmVzdWx0Um93cyA9IGFnZ3JlZ2F0ZS0+Z2V0VHlwZSgpLmdldFJvd3MoKTsK
KyAgICAgICAgICAgIGludCByZXN1bHRSb3dzICAgPSBhZ2dyZWdhdGUtPmdldFR5cGUoKS5nZXRS
b3dzKCk7CiAgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCByZXN1bHRDb2xzOyAr
K2NvbCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyBy
b3cgPCByZXN1bHRSb3dzOyArK3JvdykKQEAgLTIxODIsNTkwICsyNjE5LDY4NiBAQCBUQ29uc3Rh
bnRVbmlvbiAqVEludGVybUNvbnN0YW50VW5pb246OkZvbGRBZ2dyZWdhdGVDb25zdHJ1Y3RvcihU
SW50ZXJtQWdncmVnYXRlCiBUQ29uc3RhbnRVbmlvbiAqVEludGVybUNvbnN0YW50VW5pb246OkZv
bGRBZ2dyZWdhdGVCdWlsdEluKFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVERpYWdu
b3N0aWNzICpkaWFnbm9zdGljcykKIHsKLSAgICBUT3BlcmF0b3Igb3AgPSBhZ2dyZWdhdGUtPmdl
dE9wKCk7Ci0gICAgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9IGFnZ3JlZ2F0ZS0+Z2V0U2Vx
dWVuY2UoKTsKLSAgICB1bnNpZ25lZCBpbnQgcGFyYW1zQ291bnQgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KHNlcXVlbmNlLT5zaXplKCkpOwotICAgIHN0ZDo6dmVjdG9yPGNvbnN0IFRDb25z
dGFudFVuaW9uICo+IHVuaW9uQXJyYXlzKHBhcmFtc0NvdW50KTsKLSAgICBzdGQ6OnZlY3Rvcjxz
aXplX3Q+IG9iamVjdFNpemVzKHBhcmFtc0NvdW50KTsKKyAgICBUT3BlcmF0b3Igb3AgICAgICAg
ICAgICAgID0gYWdncmVnYXRlLT5nZXRPcCgpOworICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1l
bnRzID0gYWdncmVnYXRlLT5nZXRTZXF1ZW5jZSgpOworICAgIHVuc2lnbmVkIGludCBhcmdzQ291
bnQgICAgID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pihhcmd1bWVudHMtPnNpemUoKSk7Cisg
ICAgc3RkOjp2ZWN0b3I8Y29uc3QgVENvbnN0YW50VW5pb24gKj4gdW5pb25BcnJheXMoYXJnc0Nv
dW50KTsKKyAgICBzdGQ6OnZlY3RvcjxzaXplX3Q+IG9iamVjdFNpemVzKGFyZ3NDb3VudCk7CiAg
ICAgc2l6ZV90IG1heE9iamVjdFNpemUgPSAwOwogICAgIFRCYXNpY1R5cGUgYmFzaWNUeXBlID0g
RWJ0Vm9pZDsKICAgICBUU291cmNlTG9jIGxvYzsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0g
MDsgaSA8IHBhcmFtc0NvdW50OyBpKyspCisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBhcmdzQ291bnQ7IGkrKykKICAgICB7Ci0gICAgICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpw
YXJhbUNvbnN0YW50ID0gKCpzZXF1ZW5jZSlbaV0tPmdldEFzQ29uc3RhbnRVbmlvbigpOwotICAg
ICAgICBBU1NFUlQocGFyYW1Db25zdGFudCAhPSBudWxscHRyKTsgLy8gU2hvdWxkIGJlIGNoZWNr
ZWQgYWxyZWFkeS4KKyAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKmFyZ0NvbnN0YW50ID0g
KCphcmd1bWVudHMpW2ldLT5nZXRBc0NvbnN0YW50VW5pb24oKTsKKyAgICAgICAgQVNTRVJUKGFy
Z0NvbnN0YW50ICE9IG51bGxwdHIpOyAgLy8gU2hvdWxkIGJlIGNoZWNrZWQgYWxyZWFkeS4KIAog
ICAgICAgICBpZiAoaSA9PSAwKQogICAgICAgICB7Ci0gICAgICAgICAgICBiYXNpY1R5cGUgPSBw
YXJhbUNvbnN0YW50LT5nZXRUeXBlKCkuZ2V0QmFzaWNUeXBlKCk7Ci0gICAgICAgICAgICBsb2Mg
PSBwYXJhbUNvbnN0YW50LT5nZXRMaW5lKCk7CisgICAgICAgICAgICBiYXNpY1R5cGUgPSBhcmdD
b25zdGFudC0+Z2V0VHlwZSgpLmdldEJhc2ljVHlwZSgpOworICAgICAgICAgICAgbG9jICAgICAg
ID0gYXJnQ29uc3RhbnQtPmdldExpbmUoKTsKICAgICAgICAgfQotICAgICAgICB1bmlvbkFycmF5
c1tpXSA9IHBhcmFtQ29uc3RhbnQtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7Ci0gICAgICAgIG9i
amVjdFNpemVzW2ldID0gcGFyYW1Db25zdGFudC0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKTsK
KyAgICAgICAgdW5pb25BcnJheXNbaV0gPSBhcmdDb25zdGFudC0+Z2V0VW5pb25BcnJheVBvaW50
ZXIoKTsKKyAgICAgICAgb2JqZWN0U2l6ZXNbaV0gPSBhcmdDb25zdGFudC0+Z2V0VHlwZSgpLmdl
dE9iamVjdFNpemUoKTsKICAgICAgICAgaWYgKG9iamVjdFNpemVzW2ldID4gbWF4T2JqZWN0U2l6
ZSkKICAgICAgICAgICAgIG1heE9iamVjdFNpemUgPSBvYmplY3RTaXplc1tpXTsKICAgICB9CiAK
LSAgICBpZiAoISgqc2VxdWVuY2UpWzBdLT5nZXRBc1R5cGVkKCktPmlzTWF0cml4KCkgJiYgYWdn
cmVnYXRlLT5nZXRPcCgpICE9IEVPcE91dGVyUHJvZHVjdCkKKyAgICBpZiAoISgqYXJndW1lbnRz
KVswXS0+Z2V0QXNUeXBlZCgpLT5pc01hdHJpeCgpICYmIGFnZ3JlZ2F0ZS0+Z2V0T3AoKSAhPSBF
T3BPdXRlclByb2R1Y3QpCiAgICAgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IHBhcmFtc0NvdW50OyBpKyspCisgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp
IDwgYXJnc0NvdW50OyBpKyspCiAgICAgICAgICAgICBpZiAob2JqZWN0U2l6ZXNbaV0gIT0gbWF4
T2JqZWN0U2l6ZSkKICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1tpXSA9IFZlY3Rvcml6ZSgq
dW5pb25BcnJheXNbaV0sIG1heE9iamVjdFNpemUpOwogICAgIH0KIAogICAgIFRDb25zdGFudFVu
aW9uICpyZXN1bHRBcnJheSA9IG51bGxwdHI7Ci0gICAgaWYgKHBhcmFtc0NvdW50ID09IDIpCisK
KyAgICBzd2l0Y2ggKG9wKQogICAgIHsKLSAgICAgICAgLy8KLSAgICAgICAgLy8gQmluYXJ5IGJ1
aWx0LWluCi0gICAgICAgIC8vCi0gICAgICAgIHN3aXRjaCAob3ApCisgICAgICAgIGNhc2UgRU9w
QXRhbjoKICAgICAgICAgewotICAgICAgICAgICAgY2FzZSBFT3BBdGFuOgorICAgICAgICAgICAg
QVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCk7CisgICAgICAgICAgICByZXN1bHRBcnJheSA9
IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIEFTU0VSVChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpOwotICAgICAgICAgICAgICAg
IHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwotICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgeSA9IHVuaW9uQXJyYXlz
WzBdW2ldLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAgICAgICBmbG9hdCB4ID0gdW5pb25B
cnJheXNbMV1baV0uZ2V0RkNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFJlc3VsdHMg
YXJlIHVuZGVmaW5lZCBpZiB4IGFuZCB5IGFyZSBib3RoIDAuCi0gICAgICAgICAgICAgICAgICAg
IGlmICh4ID09IDAuMGYgJiYgeSA9PSAwLjBmKQotICAgICAgICAgICAgICAgICAgICAgICAgVW5k
ZWZpbmVkQ29uc3RhbnRGb2xkaW5nRXJyb3IobG9jLCBvcCwgYmFzaWNUeXBlLCBkaWFnbm9zdGlj
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZyZXN1bHRBcnJheVtpXSk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChhdGFuMmYoeSwgeCkpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBm
bG9hdCB5ID0gdW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAg
ZmxvYXQgeCA9IHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAg
IC8vIFJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiB4IGFuZCB5IGFyZSBib3RoIDAuCisgICAgICAg
ICAgICAgICAgaWYgKHggPT0gMC4wZiAmJiB5ID09IDAuMGYpCisgICAgICAgICAgICAgICAgICAg
IFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGxvYywgb3AsIGJhc2ljVHlwZSwgZGlhZ25v
c3RpY3MsICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoYXRhbjJmKHksIHgpKTsKICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKLSAgICAgICAgICAgIGNh
c2UgRU9wUG93OgorICAgICAgICBjYXNlIEVPcFBvdzoKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCk7CisgICAgICAgICAgICByZXN1bHRBcnJheSA9
IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIEFTU0VSVChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpOwotICAgICAgICAgICAgICAg
IHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwotICAgICAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgeCA9IHVuaW9uQXJyYXlz
WzBdW2ldLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAgICAgICBmbG9hdCB5ID0gdW5pb25B
cnJheXNbMV1baV0uZ2V0RkNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFJlc3VsdHMg
YXJlIHVuZGVmaW5lZCBpZiB4IDwgMC4KLSAgICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0cyBh
cmUgdW5kZWZpbmVkIGlmIHggPSAwIGFuZCB5IDw9IDAuCi0gICAgICAgICAgICAgICAgICAgIGlm
ICh4IDwgMC4wZikKLSAgICAgICAgICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50Rm9s
ZGluZ0Vycm9yKGxvYywgb3AsIGJhc2ljVHlwZSwgZGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzdWx0QXJyYXlbaV0p
OwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4ID09IDAuMGYgJiYgeSA8PSAwLjBmKQot
ICAgICAgICAgICAgICAgICAgICAgICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xkaW5nRXJyb3IobG9j
LCBvcCwgYmFzaWNUeXBlLCBkaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXN1bHRBcnJheVtpXSk7Ci0gICAgICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNl
dEZDb25zdChwb3dmKHgsIHkpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgZmxvYXQgeCA9IHVuaW9uQXJyYXlzWzBdW2ldLmdldEZD
b25zdCgpOworICAgICAgICAgICAgICAgIGZsb2F0IHkgPSB1bmlvbkFycmF5c1sxXVtpXS5nZXRG
Q29uc3QoKTsKKyAgICAgICAgICAgICAgICAvLyBSZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYgeCA8
IDAuCisgICAgICAgICAgICAgICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIHggPSAwIGFu
ZCB5IDw9IDAuCisgICAgICAgICAgICAgICAgaWYgKHggPCAwLjBmKQorICAgICAgICAgICAgICAg
ICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNpY1R5cGUsIGRp
YWdub3N0aWNzLCAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHgg
PT0gMC4wZiAmJiB5IDw9IDAuMGYpCisgICAgICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0
YW50Rm9sZGluZ0Vycm9yKGxvYywgb3AsIGJhc2ljVHlwZSwgZGlhZ25vc3RpY3MsICZyZXN1bHRB
cnJheVtpXSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXN1
bHRBcnJheVtpXS5zZXRGQ29uc3QocG93Zih4LCB5KSk7CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBjYXNlIEVPcE1vZDoKKyAgICAg
ICAgY2FzZSBFT3BNb2Q6CisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChiYXNpY1R5cGUg
PT0gRWJ0RmxvYXQpOworICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5p
b25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1h
eE9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
YmFzaWNUeXBlID09IEVidEZsb2F0KTsKLSAgICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5l
dyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKLSAgICAgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIGZsb2F0IHggPSB1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3Qo
KTsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgeSA9IHVuaW9uQXJyYXlzWzFdW2ldLmdldEZD
b25zdCgpOwotICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoeCAt
IHkgKiBmbG9vcmYoeCAvIHkpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgZmxvYXQgeCA9IHVuaW9uQXJyYXlzWzBdW2ldLmdldEZD
b25zdCgpOworICAgICAgICAgICAgICAgIGZsb2F0IHkgPSB1bmlvbkFycmF5c1sxXVtpXS5nZXRG
Q29uc3QoKTsKKyAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoeCAtIHkg
KiBmbG9vcmYoeCAvIHkpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGNhc2UgRU9wTWluOgorICAgICAgICBjYXNlIEVPcE1pbjoK
KyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25b
bWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9i
amVjdFNpemU7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXN1bHRBcnJh
eSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKLSAgICAgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAg
ICBzd2l0Y2ggKGJhc2ljVHlwZSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIHN3aXRjaCAoYmFzaWNUeXBlKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChzdGQ6Om1pbih1bmlvbkFycmF5c1swXVtpXS5nZXRG
Q29uc3QoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCkpKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
RWJ0SW50OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElD
b25zdChzdGQ6Om1pbih1bmlvbkFycmF5c1swXVtpXS5nZXRJQ29uc3QoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25B
cnJheXNbMV1baV0uZ2V0SUNvbnN0KCkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRVQ29uc3Qoc3RkOjptaW4odW5pb25B
cnJheXNbMF1baV0uZ2V0VUNvbnN0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldFVDb25z
dCgpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hB
QkxFKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdCgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGQ6Om1pbih1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKSwgdW5pb25B
cnJheXNbMV1baV0uZ2V0RkNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdEFycmF5W2ldLnNldElDb25zdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGQ6Om1pbih1bmlvbkFycmF5c1swXVtpXS5nZXRJQ29uc3QoKSwgdW5pb25BcnJheXNbMV1b
aV0uZ2V0SUNvbnN0KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHRBcnJheVtpXS5zZXRVQ29uc3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpt
aW4odW5pb25BcnJheXNbMF1baV0uZ2V0VUNvbnN0KCksIHVuaW9uQXJyYXlzWzFdW2ldLmdldFVD
b25zdCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogCi0gICAgICAgICAgICBjYXNlIEVPcE1heDoKKyAgICAgICAgY2FzZSBFT3BNYXg6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21h
eE9iamVjdFNpemVdOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmpl
Y3RTaXplOyBpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkg
PSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07Ci0gICAgICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAg
c3dpdGNoIChiYXNpY1R5cGUpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBzd2l0Y2ggKGJhc2ljVHlwZSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRBcnJheVtpXS5zZXRGQ29uc3Qoc3RkOjptYXgodW5pb25BcnJheXNbMF1baV0uZ2V0RkNv
bnN0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpKSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVi
dEludDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJQ29u
c3Qoc3RkOjptYXgodW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJy
YXlzWzFdW2ldLmdldElDb25zdCgpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0VUNvbnN0KHN0ZDo6bWF4KHVuaW9uQXJy
YXlzWzBdW2ldLmdldFVDb25zdCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29uc3Qo
KSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYXgodW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCksIHVuaW9uQXJy
YXlzWzFdW2ldLmdldEZDb25zdCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjptYXgodW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCksIHVuaW9uQXJyYXlzWzFdW2ld
LmdldElDb25zdCgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
QXJyYXlbaV0uc2V0VUNvbnN0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4
KHVuaW9uQXJyYXlzWzBdW2ldLmdldFVDb25zdCgpLCB1bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29u
c3QoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KIAotICAgICAgICAgICAgY2FzZSBFT3BTdGVwOgorICAgICAgICBjYXNlIEVPcFN0ZXA6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpOworICAg
ICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07
CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykK
KyAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoCisgICAgICAgICAgICAg
ICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpIDwgdW5pb25BcnJheXNbMF1baV0u
Z2V0RkNvbnN0KCkgPyAwLjBmIDogMS4wZik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorCisgICAgICAgIGNhc2UgRU9wTGVzc1RoYW5Db21wb25lbnRXaXNlOgorICAgICAgICB7Cisg
ICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXpl
XTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsr
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEFTU0VSVChiYXNpY1R5cGUgPT0gRWJ0
RmxvYXQpOwotICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9u
W21heE9iamVjdFNpemVdOwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bWF4T2JqZWN0U2l6ZTsgaSsrKQotICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5z
ZXRGQ29uc3QoCi0gICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRG
Q29uc3QoKSA8IHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpID8gMC4wZgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6IDEuMGYpOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIHN3aXRjaCAoYmFzaWNUeXBlKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKSA8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJh
eXNbMV1baV0uZ2V0RkNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldElDb25zdCgpIDwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFy
cmF5c1sxXVtpXS5nZXRJQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldFVDb25zdCgp
IDwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlv
bkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQog
Ci0gICAgICAgICAgICBjYXNlIEVPcExlc3NUaGFuOgorICAgICAgICBjYXNlIEVPcExlc3NUaGFu
RXF1YWxDb21wb25lbnRXaXNlOgorICAgICAgICB7CisgICAgICAgICAgICByZXN1bHRBcnJheSA9
IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVd
OwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsg
aSsrKQorICAgICAgICAgICAgICAgIHN3aXRjaCAoYmFzaWNUeXBlKQogICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChiYXNpY1R5cGUpCi0gICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlz
WzBdW2ldLmdldEZDb25zdCgpIDwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCkpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0
QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldElDb25zdCgpIDwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0
SUNvbnN0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRVQ29uc3QoKSA8
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
aW9uQXJyYXlzWzFdW2ldLmdldFVDb25zdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjYXNl
IEVidEZsb2F0OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNv
bnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpIDw9CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0
QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldElDb25zdCgpIDw9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0SUNv
bnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ld
LnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRVQ29uc3QoKSA8PQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdl
dFVDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbDoKKyAgICAgICAgY2Fz
ZSBFT3BHcmVhdGVyVGhhbkNvbXBvbmVudFdpc2U6CisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
c3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOworICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4
T2JqZWN0U2l6ZV07Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhP
YmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgc3dpdGNoIChiYXNpY1R5cGUpCiAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGJhc2ljVHlwZSkKLSAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9h
dDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3Qo
dW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkgPD0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0
KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldElDb25zdCgpIDw9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJy
YXlzWzFdW2ldLmdldElDb25zdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0u
Z2V0VUNvbnN0KCkgPD0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0VUNvbnN0KCkpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRB
cnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkgPgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFd
W2ldLmdldEZDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRJQ29uc3QoKSA+CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNb
MV1baV0uZ2V0SUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRVQ29uc3QoKSA+Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJh
eXNbMV1baV0uZ2V0VUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBjYXNlIEVPcEdyZWF0ZXJUaGFuOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFsQ29tcG9uZW50V2lzZToKKyAgICAgICAgewor
ICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6
ZV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkr
KykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29u
c3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGJh
c2ljVHlwZSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAo
YmFzaWNUeXBlKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5
W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKSA+Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFd
W2ldLmdldEZDb25zdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRJQ29u
c3QoKSA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUludDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25B
cnJheXNbMF1baV0uZ2V0VUNvbnN0KCkgPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRGbG9hdDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3Qo
KSA+PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
aW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRJQ29u
c3QoKSA+PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0
VUNvbnN0KCkgPj0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWw6CisgICAgICAgIH0KKyAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFT3BFcXVhbENvbXBvbmVudFdpc2U6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVj
dFNpemVdOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXpl
OyBpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcg
VENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07Ci0gICAgICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgc3dpdGNo
IChiYXNpY1R5cGUpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzd2l0
Y2ggKGJhc2ljVHlwZSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRB
cnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkgPj0KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJh
eXNbMV1baV0uZ2V0RkNvbnN0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdl
dElDb25zdCgpID49Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0VUlu
dDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3Qo
dW5pb25BcnJheXNbMF1baV0uZ2V0VUNvbnN0KCkgPj0KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0VUNvbnN0
KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0
RkNvbnN0KCkgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0u
Z2V0SUNvbnN0KCkgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29uc3QoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgorICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBd
W2ldLmdldFVDb25zdCgpID09CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0VUNvbnN0KCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5
c1swXVtpXS5nZXRCQ29uc3QoKSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldEJDb25zdCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAKLSAgICAgICAgICAgIGNhc2UgRU9wVmVjdG9yRXF1YWw6Cisg
ICAgICAgIGNhc2UgRU9wTm90RXF1YWxDb21wb25lbnRXaXNlOgorICAgICAgICB7CisgICAgICAg
ICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVu
aW9uW21heE9iamVjdFNpemVdOwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgIHN3aXRjaCAoYmFzaWNUeXBl
KQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChiYXNpY1R5
cGUpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
RWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0
QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpID09Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdl
dEZDb25zdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50OgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRJQ29uc3QoKSA9
PQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidFVJbnQ6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlz
WzBdW2ldLmdldFVDb25zdCgpID09Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldFVDb25zdCgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5z
ZXRCQ29uc3QodW5pb25BcnJheXNbMF1baV0uZ2V0QkNvbnN0KCkgPT0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0u
Z2V0QkNvbnN0KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNb
MF1baV0uZ2V0RkNvbnN0KCkgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJh
eXNbMF1baV0uZ2V0SUNvbnN0KCkgIT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29uc3QoKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBFYnRVSW50
OgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9u
QXJyYXlzWzBdW2ldLmdldFVDb25zdCgpICE9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0VUNvbnN0KCkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0
Qm9vbDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJDb25zdCh1
bmlvbkFycmF5c1swXVtpXS5nZXRCQ29uc3QoKSAhPQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuaW9uQXJyYXlzWzFdW2ldLmdldEJDb25zdCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgY2FzZSBFT3BEaXN0YW5jZToKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGJh
c2ljVHlwZSA9PSBFYnRGbG9hdCk7CisgICAgICAgICAgICBUQ29uc3RhbnRVbmlvbiAqZGlzdGFu
Y2VBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAg
IHJlc3VsdEFycmF5ICAgICAgICAgICAgICAgICAgID0gbmV3IFRDb25zdGFudFVuaW9uKCk7Cisg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmbG9hdCB4ID0gdW5pb25BcnJheXNbMF1baV0u
Z2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgZmxvYXQgeSA9IHVuaW9uQXJyYXlzWzFdW2ld
LmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgIGRpc3RhbmNlQXJyYXlbaV0uc2V0RkNvbnN0
KHggLSB5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlc3VsdEFycmF5LT5zZXRGQ29u
c3QoVmVjdG9yTGVuZ3RoKGRpc3RhbmNlQXJyYXksIG1heE9iamVjdFNpemUpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBFT3BEb3Q6CisgICAgICAgICAg
ICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0KTsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5
ID0gbmV3IFRDb25zdGFudFVuaW9uKCk7CisgICAgICAgICAgICByZXN1bHRBcnJheS0+c2V0RkNv
bnN0KFZlY3RvckRvdFByb2R1Y3QodW5pb25BcnJheXNbMF0sIHVuaW9uQXJyYXlzWzFdLCBtYXhP
YmplY3RTaXplKSk7CisgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgICAgY2FzZSBFT3BW
ZWN0b3JOb3RFcXVhbDoKKyAgICAgICAgY2FzZSBFT3BDcm9zczoKKyAgICAgICAgeworICAgICAg
ICAgICAgQVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCAmJiBtYXhPYmplY3RTaXplID09IDMp
OworICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0
U2l6ZV07CisgICAgICAgICAgICBmbG9hdCB4MCAgICA9IHVuaW9uQXJyYXlzWzBdWzBdLmdldEZD
b25zdCgpOworICAgICAgICAgICAgZmxvYXQgeDEgICAgPSB1bmlvbkFycmF5c1swXVsxXS5nZXRG
Q29uc3QoKTsKKyAgICAgICAgICAgIGZsb2F0IHgyICAgID0gdW5pb25BcnJheXNbMF1bMl0uZ2V0
RkNvbnN0KCk7CisgICAgICAgICAgICBmbG9hdCB5MCAgICA9IHVuaW9uQXJyYXlzWzFdWzBdLmdl
dEZDb25zdCgpOworICAgICAgICAgICAgZmxvYXQgeTEgICAgPSB1bmlvbkFycmF5c1sxXVsxXS5n
ZXRGQ29uc3QoKTsKKyAgICAgICAgICAgIGZsb2F0IHkyICAgID0gdW5pb25BcnJheXNbMV1bMl0u
Z2V0RkNvbnN0KCk7CisgICAgICAgICAgICByZXN1bHRBcnJheVswXS5zZXRGQ29uc3QoeDEgKiB5
MiAtIHkxICogeDIpOworICAgICAgICAgICAgcmVzdWx0QXJyYXlbMV0uc2V0RkNvbnN0KHgyICog
eTAgLSB5MiAqIHgwKTsKKyAgICAgICAgICAgIHJlc3VsdEFycmF5WzJdLnNldEZDb25zdCh4MCAq
IHkxIC0geTAgKiB4MSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAg
IGNhc2UgRU9wUmVmbGVjdDoKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGJhc2ljVHlw
ZSA9PSBFYnRGbG9hdCk7CisgICAgICAgICAgICAvLyBnZW5UeXBlIHJlZmxlY3QgKGdlblR5cGUg
SSwgZ2VuVHlwZSBOKSA6CisgICAgICAgICAgICAvLyAgICAgRm9yIHRoZSBpbmNpZGVudCB2ZWN0
b3IgSSBhbmQgc3VyZmFjZSBvcmllbnRhdGlvbiBOLCByZXR1cm5zIHRoZSByZWZsZWN0aW9uCisg
ICAgICAgICAgICAvLyAgICAgZGlyZWN0aW9uOgorICAgICAgICAgICAgLy8gICAgIEkgLSAyICog
ZG90KE4sIEkpICogTi4KKyAgICAgICAgICAgIHJlc3VsdEFycmF5ICAgICAgPSBuZXcgVENvbnN0
YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAgICBmbG9hdCBkb3RQcm9kdWN0ID0g
VmVjdG9yRG90UHJvZHVjdCh1bmlvbkFycmF5c1sxXSwgdW5pb25BcnJheXNbMF0sIG1heE9iamVj
dFNpemUpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXpl
OyBpKyspCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcg
VENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07Ci0gICAgICAgICAgICAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgZmxvYXQg
cmVzdWx0ID0gdW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkgLQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDIuMGYgKiBkb3RQcm9kdWN0ICogdW5pb25BcnJheXNbMV1baV0uZ2V0
RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KHJlc3Vs
dCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAg
ICAgIGNhc2UgRU9wTXVsTWF0cml4Q29tcG9uZW50V2lzZToKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCAmJiAoKmFyZ3VtZW50cylbMF0tPmdldEFz
VHlwZWQoKS0+aXNNYXRyaXgoKSAmJgorICAgICAgICAgICAgICAgICAgICgqYXJndW1lbnRzKVsx
XS0+Z2V0QXNUeXBlZCgpLT5pc01hdHJpeCgpKTsKKyAgICAgICAgICAgIC8vIFBlcmZvcm0gY29t
cG9uZW50LXdpc2UgbWF0cml4IG11bHRpcGxpY2F0aW9uLgorICAgICAgICAgICAgcmVzdWx0QXJy
YXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAgICBpbnQg
c2l6ZSAgICA9ICgqYXJndW1lbnRzKVswXS0+Z2V0QXNUeXBlZCgpLT5nZXROb21pbmFsU2l6ZSgp
OworICAgICAgICAgICAgYW5nbGU6Ok1hdHJpeDxmbG9hdD4gcmVzdWx0ID0KKyAgICAgICAgICAg
ICAgICBHZXRNYXRyaXgodW5pb25BcnJheXNbMF0sIHNpemUpLmNvbXBNdWx0KEdldE1hdHJpeCh1
bmlvbkFycmF5c1sxXSwgc2l6ZSkpOworICAgICAgICAgICAgU2V0VW5pb25BcnJheUZyb21NYXRy
aXgocmVzdWx0LCByZXN1bHRBcnJheSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIGNhc2UgRU9wT3V0ZXJQcm9kdWN0OgorICAgICAgICB7CisgICAgICAgICAgICBB
U1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0KTsKKyAgICAgICAgICAgIHNpemVfdCBudW1Sb3dz
ID0gKCphcmd1bWVudHMpWzBdLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKS5nZXRPYmplY3RTaXpl
KCk7CisgICAgICAgICAgICBzaXplX3QgbnVtQ29scyA9ICgqYXJndW1lbnRzKVsxXS0+Z2V0QXNU
eXBlZCgpLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICAgICAgcmVzdWx0QXJy
YXkgICAgPSBuZXcgVENvbnN0YW50VW5pb25bbnVtUm93cyAqIG51bUNvbHNdOworICAgICAgICAg
ICAgYW5nbGU6Ok1hdHJpeDxmbG9hdD4gcmVzdWx0ID0KKyAgICAgICAgICAgICAgICBHZXRNYXRy
aXgodW5pb25BcnJheXNbMF0sIHN0YXRpY19jYXN0PGludD4obnVtUm93cyksIDEpCisgICAgICAg
ICAgICAgICAgICAgIC5vdXRlclByb2R1Y3QoR2V0TWF0cml4KHVuaW9uQXJyYXlzWzFdLCAxLCBz
dGF0aWNfY2FzdDxpbnQ+KG51bUNvbHMpKSk7CisgICAgICAgICAgICBTZXRVbmlvbkFycmF5RnJv
bU1hdHJpeChyZXN1bHQsIHJlc3VsdEFycmF5KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisKKyAgICAgICAgY2FzZSBFT3BDbGFtcDoKKyAgICAgICAgeworICAgICAgICAgICAgcmVz
dWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGJhc2ljVHlwZSkKICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYmFzaWNUeXBlKQorICAgICAgICAgICAgICAg
ICAgICBjYXNlIEVidEZsb2F0OgogICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBjYXNlIEVidEZsb2F0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdEFycmF5W2ldLnNldEJDb25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKSAhPQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlv
bkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRCQ29uc3QodW5pb25BcnJheXNbMF1b
aV0uZ2V0SUNvbnN0KCkgIT0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0SUNvbnN0KCkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBF
YnRVSW50OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEJD
b25zdCh1bmlvbkFycmF5c1swXVtpXS5nZXRVQ29uc3QoKSAhPQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5nZXRV
Q29uc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXlbaV0uc2V0QkNvbnN0KHVuaW9uQXJyYXlzWzBdW2ldLmdldEJDb25zdCgpICE9
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
aW9uQXJyYXlzWzFdW2ldLmdldEJDb25zdCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHggICA9IHVuaW9uQXJyYXlz
WzBdW2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgbWluID0g
dW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBm
bG9hdCBtYXggPSB1bmlvbkFycmF5c1syXVtpXS5nZXRGQ29uc3QoKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIFJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZiBtaW4gPiBtYXguCisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAobWluID4gbWF4KQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFVuZGVmaW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGxvYywgb3AsIGJhc2ljVHlwZSwgZGlh
Z25vc3RpY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJnJlc3VsdEFycmF5W2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3Qo
Z2w6OmNsYW1wKHgsIG1pbiwgbWF4KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0SW50
OgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCAg
ID0gdW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgbWluID0gdW5pb25BcnJheXNbMV1baV0uZ2V0SUNvbnN0KCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbWF4ID0gdW5pb25BcnJheXNbMl1baV0uZ2V0SUNvbnN0KCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBSZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYgbWluID4gbWF4
LgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1pbiA+IG1heCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNp
Y1R5cGUsIGRpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0u
c2V0SUNvbnN0KGdsOjpjbGFtcCh4LCBtaW4sIG1heCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBFYnRVSW50OgorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgeCAgID0gdW5pb25BcnJheXNbMF1baV0uZ2V0VUNvbnN0KCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWluID0gdW5pb25BcnJheXNbMV1baV0u
Z2V0VUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWF4ID0g
dW5pb25BcnJheXNbMl1baV0uZ2V0VUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAv
LyBSZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYgbWluID4gbWF4LgorICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1pbiA+IG1heCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRlZmlu
ZWRDb25zdGFudEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNpY1R5cGUsIGRpYWdub3N0aWNzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZyZXN1bHRBcnJheVtpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0VUNvbnN0KGdsOjpjbGFtcCh4
LCBtaW4sIG1heCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBjYXNlIEVPcERp
c3RhbmNlOgorICAgICAgICBjYXNlIEVPcE1peDoKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCk7CisgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5l
dyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIEFTU0VSVChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQpOwotICAgICAgICAgICAgICAgIFRD
b25zdGFudFVuaW9uICpkaXN0YW5jZUFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVj
dFNpemVdOwotICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ICAgICAgICAgICAgICAgICAgID0g
bmV3IFRDb25zdGFudFVuaW9uKCk7Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgZmxvYXQgeCAgICAgICAg
ID0gdW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgZmxvYXQg
eSAgICAgICAgID0gdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAg
ICAgVEJhc2ljVHlwZSB0eXBlID0gKCphcmd1bWVudHMpWzJdLT5nZXRBc1R5cGVkKCktPmdldFR5
cGUoKS5nZXRCYXNpY1R5cGUoKTsKKyAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBFYnRGbG9h
dCkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IHggPSB1bmlv
bkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgeSA9
IHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAgICAgICBkaXN0
YW5jZUFycmF5W2ldLnNldEZDb25zdCh4IC0geSk7CisgICAgICAgICAgICAgICAgICAgIC8vIFJl
dHVybnMgdGhlIGxpbmVhciBibGVuZCBvZiB4IGFuZCB5LCBpLmUuLCB4ICogKDEgLSBhKSArIHkg
KiBhLgorICAgICAgICAgICAgICAgICAgICBmbG9hdCBhID0gdW5pb25BcnJheXNbMl1baV0uZ2V0
RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdCh4
ICogKDEuMGYgLSBhKSArIHkgKiBhKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgZWxzZSAgLy8gM3JkIHBhcmFtZXRlciBpcyBFYnRCb29sCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZSA9PSBFYnRCb29sKTsKKyAgICAgICAgICAg
ICAgICAgICAgLy8gU2VsZWN0cyB3aGljaCB2ZWN0b3IgZWFjaCByZXR1cm5lZCBjb21wb25lbnQg
Y29tZXMgZnJvbS4KKyAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGEgY29tcG9uZW50IG9mIGEg
dGhhdCBpcyBmYWxzZSwgdGhlIGNvcnJlc3BvbmRpbmcgY29tcG9uZW50IG9mIHggaXMKKyAgICAg
ICAgICAgICAgICAgICAgLy8gcmV0dXJuZWQuCisgICAgICAgICAgICAgICAgICAgIC8vIEZvciBh
IGNvbXBvbmVudCBvZiBhIHRoYXQgaXMgdHJ1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgY29tcG9uZW50
IG9mIHkgaXMKKyAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuZWQuCisgICAgICAgICAgICAg
ICAgICAgIGJvb2wgYSA9IHVuaW9uQXJyYXlzWzJdW2ldLmdldEJDb25zdCgpOworICAgICAgICAg
ICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoYSA/IHkgOiB4KTsKICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXktPnNldEZDb25zdChWZWN0b3JM
ZW5ndGgoZGlzdGFuY2VBcnJheSwgbWF4T2JqZWN0U2l6ZSkpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAotICAg
ICAgICAgICAgY2FzZSBFT3BEb3Q6Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJhc2ljVHlwZSA9
PSBFYnRGbG9hdCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50
VW5pb24oKTsKLSAgICAgICAgICAgICAgICByZXN1bHRBcnJheS0+c2V0RkNvbnN0KAotICAgICAg
ICAgICAgICAgICAgICBWZWN0b3JEb3RQcm9kdWN0KHVuaW9uQXJyYXlzWzBdLCB1bmlvbkFycmF5
c1sxXSwgbWF4T2JqZWN0U2l6ZSkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
ICAgICBjYXNlIEVPcENyb3NzOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEFTU0VS
VChiYXNpY1R5cGUgPT0gRWJ0RmxvYXQgJiYgbWF4T2JqZWN0U2l6ZSA9PSAzKTsKLSAgICAgICAg
ICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsK
LSAgICAgICAgICAgICAgICBmbG9hdCB4MCAgICA9IHVuaW9uQXJyYXlzWzBdWzBdLmdldEZDb25z
dCgpOwotICAgICAgICAgICAgICAgIGZsb2F0IHgxICAgID0gdW5pb25BcnJheXNbMF1bMV0uZ2V0
RkNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgZmxvYXQgeDIgICAgPSB1bmlvbkFycmF5c1swXVsy
XS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAgICBmbG9hdCB5MCAgICA9IHVuaW9uQXJyYXlz
WzFdWzBdLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAgIGZsb2F0IHkxICAgID0gdW5pb25B
cnJheXNbMV1bMV0uZ2V0RkNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgZmxvYXQgeTIgICAgPSB1
bmlvbkFycmF5c1sxXVsyXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAgICByZXN1bHRBcnJh
eVswXS5zZXRGQ29uc3QoeDEgKiB5MiAtIHkxICogeDIpOwotICAgICAgICAgICAgICAgIHJlc3Vs
dEFycmF5WzFdLnNldEZDb25zdCh4MiAqIHkwIC0geTIgKiB4MCk7Ci0gICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXlbMl0uc2V0RkNvbnN0KHgwICogeTEgLSB5MCAqIHgxKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BTbW9vdGhTdGVwOgorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0KTsKKyAgICAgICAgICAgIHJlc3Vs
dEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOworICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZmxvYXQgZWRnZTAgPSB1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29u
c3QoKTsKKyAgICAgICAgICAgICAgICBmbG9hdCBlZGdlMSA9IHVuaW9uQXJyYXlzWzFdW2ldLmdl
dEZDb25zdCgpOworICAgICAgICAgICAgICAgIGZsb2F0IHggICAgID0gdW5pb25BcnJheXNbMl1b
aV0uZ2V0RkNvbnN0KCk7CisgICAgICAgICAgICAgICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZpbmVk
IGlmIGVkZ2UwID49IGVkZ2UxLgorICAgICAgICAgICAgICAgIGlmIChlZGdlMCA+PSBlZGdlMSkK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50
Rm9sZGluZ0Vycm9yKGxvYywgb3AsIGJhc2ljVHlwZSwgZGlhZ25vc3RpY3MsICZyZXN1bHRBcnJh
eVtpXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFJldHVybnMgMC4wIGlmIHggPD0gZWRn
ZTAgYW5kIDEuMCBpZiB4ID49IGVkZ2UxIGFuZCBwZXJmb3JtcyBzbW9vdGgKKyAgICAgICAgICAg
ICAgICAgICAgLy8gSGVybWl0ZSBpbnRlcnBvbGF0aW9uIGJldHdlZW4gMCBhbmQgMSB3aGVuIGVk
Z2UwIDwgeCA8IGVkZ2UxLgorICAgICAgICAgICAgICAgICAgICBmbG9hdCB0ID0gZ2w6OmNsYW1w
KCh4IC0gZWRnZTApIC8gKGVkZ2UxIC0gZWRnZTApLCAwLjBmLCAxLjBmKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KHQgKiB0ICogKDMuMGYgLSAyLjBmICog
dCkpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAKLSAgICAgICAgICAgIGNhc2UgRU9wUmVmbGVjdDoKKyAgICAgICAgY2Fz
ZSBFT3BMZGV4cDoKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENv
bnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0KTsKLSAgICAgICAgICAgICAgICAvLyBnZW5U
eXBlIHJlZmxlY3QgKGdlblR5cGUgSSwgZ2VuVHlwZSBOKSA6Ci0gICAgICAgICAgICAgICAgLy8g
ICAgIEZvciB0aGUgaW5jaWRlbnQgdmVjdG9yIEkgYW5kIHN1cmZhY2Ugb3JpZW50YXRpb24gTiwg
cmV0dXJucyB0aGUgcmVmbGVjdGlvbgotICAgICAgICAgICAgICAgIC8vICAgICBkaXJlY3Rpb246
Ci0gICAgICAgICAgICAgICAgLy8gICAgIEkgLSAyICogZG90KE4sIEkpICogTi4KLSAgICAgICAg
ICAgICAgICByZXN1bHRBcnJheSAgICAgID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNp
emVdOwotICAgICAgICAgICAgICAgIGZsb2F0IGRvdFByb2R1Y3QgPSBWZWN0b3JEb3RQcm9kdWN0
KHVuaW9uQXJyYXlzWzFdLCB1bmlvbkFycmF5c1swXSwgbWF4T2JqZWN0U2l6ZSk7Ci0gICAgICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyBpKyspCisgICAg
ICAgICAgICAgICAgZmxvYXQgeCA9IHVuaW9uQXJyYXlzWzBdW2ldLmdldEZDb25zdCgpOworICAg
ICAgICAgICAgICAgIGludCBleHAgPSB1bmlvbkFycmF5c1sxXVtpXS5nZXRJQ29uc3QoKTsKKyAg
ICAgICAgICAgICAgICBpZiAoZXhwID4gMTI4KQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgcmVzdWx0ID0gdW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCkg
LQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyLjBmICogZG90UHJvZHVjdCAq
IHVuaW9uQXJyYXlzWzFdW2ldLmdldEZDb25zdCgpOwotICAgICAgICAgICAgICAgICAgICByZXN1
bHRBcnJheVtpXS5zZXRGQ29uc3QocmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgVW5kZWZp
bmVkQ29uc3RhbnRGb2xkaW5nRXJyb3IobG9jLCBvcCwgYmFzaWNUeXBlLCBkaWFnbm9zdGljcywg
JnJlc3VsdEFycmF5W2ldKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0u
c2V0RkNvbnN0KGdsOjpMZGV4cCh4LCBleHApKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogCi0gICAgICAgICAgICBjYXNlIEVPcE11bDoKKyAgICAgICAgY2FzZSBFT3BGYWNlRm9y
d2FyZDoKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9h
dCk7CisgICAgICAgICAgICAvLyBnZW5UeXBlIGZhY2Vmb3J3YXJkKGdlblR5cGUgTiwgZ2VuVHlw
ZSBJLCBnZW5UeXBlIE5yZWYpIDoKKyAgICAgICAgICAgIC8vICAgICBJZiBkb3QoTnJlZiwgSSkg
PCAwIHJldHVybiBOLCBvdGhlcndpc2UgcmV0dXJuIC1OLgorICAgICAgICAgICAgcmVzdWx0QXJy
YXkgICAgICA9IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAg
IGZsb2F0IGRvdFByb2R1Y3QgPSBWZWN0b3JEb3RQcm9kdWN0KHVuaW9uQXJyYXlzWzJdLCB1bmlv
bkFycmF5c1sxXSwgbWF4T2JqZWN0U2l6ZSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1heE9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0ICYmICgqc2VxdWVuY2UpWzBdLT5nZXRBc1R5
cGVkKCktPmlzTWF0cml4KCkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgKCpzZXF1ZW5jZSlb
MV0tPmdldEFzVHlwZWQoKS0+aXNNYXRyaXgoKSk7Ci0gICAgICAgICAgICAgICAgLy8gUGVyZm9y
bSBjb21wb25lbnQtd2lzZSBtYXRyaXggbXVsdGlwbGljYXRpb24uCi0gICAgICAgICAgICAgICAg
cmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4T2JqZWN0U2l6ZV07Ci0gICAgICAg
ICAgICAgICAgaW50IHNpemUgICAgPSAoKnNlcXVlbmNlKVswXS0+Z2V0QXNUeXBlZCgpLT5nZXRO
b21pbmFsU2l6ZSgpOwotICAgICAgICAgICAgICAgIGFuZ2xlOjpNYXRyaXg8ZmxvYXQ+IHJlc3Vs
dCA9Ci0gICAgICAgICAgICAgICAgICAgIEdldE1hdHJpeCh1bmlvbkFycmF5c1swXSwgc2l6ZSku
Y29tcE11bHQoR2V0TWF0cml4KHVuaW9uQXJyYXlzWzFdLCBzaXplKSk7Ci0gICAgICAgICAgICAg
ICAgU2V0VW5pb25BcnJheUZyb21NYXRyaXgocmVzdWx0LCByZXN1bHRBcnJheSk7Ci0gICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGRvdFByb2R1Y3QgPCAwKQorICAg
ICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QodW5pb25BcnJheXNbMF1b
aV0uZ2V0RkNvbnN0KCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KC11bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3Qo
KSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCi0gICAg
ICAgICAgICBjYXNlIEVPcE91dGVyUHJvZHVjdDoKKyAgICAgICAgY2FzZSBFT3BSZWZyYWN0Ogor
ICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoYmFzaWNUeXBlID09IEVidEZsb2F0KTsKKyAg
ICAgICAgICAgIC8vIGdlblR5cGUgcmVmcmFjdChnZW5UeXBlIEksIGdlblR5cGUgTiwgZmxvYXQg
ZXRhKSA6CisgICAgICAgICAgICAvLyAgICAgRm9yIHRoZSBpbmNpZGVudCB2ZWN0b3IgSSBhbmQg
c3VyZmFjZSBub3JtYWwgTiwgYW5kIHRoZSByYXRpbyBvZiBpbmRpY2VzIG9mCisgICAgICAgICAg
ICAvLyAgICAgcmVmcmFjdGlvbiBldGEsCisgICAgICAgICAgICAvLyAgICAgcmV0dXJuIHRoZSBy
ZWZyYWN0aW9uIHZlY3Rvci4gVGhlIHJlc3VsdCBpcyBjb21wdXRlZCBieQorICAgICAgICAgICAg
Ly8gICAgICAgICBrID0gMS4wIC0gZXRhICogZXRhICogKDEuMCAtIGRvdChOLCBJKSAqIGRvdChO
LCBJKSkKKyAgICAgICAgICAgIC8vICAgICAgICAgaWYgKGsgPCAwLjApCisgICAgICAgICAgICAv
LyAgICAgICAgICAgICByZXR1cm4gZ2VuVHlwZSgwLjApCisgICAgICAgICAgICAvLyAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIC8vICAgICAgICAgICAgIHJldHVybiBldGEgKiBJIC0gKGV0YSAq
IGRvdChOLCBJKSArIHNxcnQoaykpICogTgorICAgICAgICAgICAgcmVzdWx0QXJyYXkgICAgICA9
IG5ldyBUQ29uc3RhbnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAgIGZsb2F0IGRv
dFByb2R1Y3QgPSBWZWN0b3JEb3RQcm9kdWN0KHVuaW9uQXJyYXlzWzFdLCB1bmlvbkFycmF5c1sw
XSwgbWF4T2JqZWN0U2l6ZSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1h
eE9iamVjdFNpemU7IGkrKykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
YmFzaWNUeXBlID09IEVidEZsb2F0KTsKLSAgICAgICAgICAgICAgICBzaXplX3QgbnVtUm93cyA9
ICgqc2VxdWVuY2UpWzBdLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7
Ci0gICAgICAgICAgICAgICAgc2l6ZV90IG51bUNvbHMgPSAoKnNlcXVlbmNlKVsxXS0+Z2V0QXNU
eXBlZCgpLT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpOwotICAgICAgICAgICAgICAgIHJlc3Vs
dEFycmF5ICAgID0gbmV3IFRDb25zdGFudFVuaW9uW251bVJvd3MgKiBudW1Db2xzXTsKLSAgICAg
ICAgICAgICAgICBhbmdsZTo6TWF0cml4PGZsb2F0PiByZXN1bHQgPQotICAgICAgICAgICAgICAg
ICAgICBHZXRNYXRyaXgodW5pb25BcnJheXNbMF0sIHN0YXRpY19jYXN0PGludD4obnVtUm93cyks
IDEpCi0gICAgICAgICAgICAgICAgICAgICAgICAub3V0ZXJQcm9kdWN0KEdldE1hdHJpeCh1bmlv
bkFycmF5c1sxXSwgMSwgc3RhdGljX2Nhc3Q8aW50PihudW1Db2xzKSkpOwotICAgICAgICAgICAg
ICAgIFNldFVuaW9uQXJyYXlGcm9tTWF0cml4KHJlc3VsdCwgcmVzdWx0QXJyYXkpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGZsb2F0IGV0YSA9IHVuaW9uQXJyYXlz
WzJdW2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAgICAgIGZsb2F0IGsgICA9IDEuMGYgLSBl
dGEgKiBldGEgKiAoMS4wZiAtIGRvdFByb2R1Y3QgKiBkb3RQcm9kdWN0KTsKKyAgICAgICAgICAg
ICAgICBpZiAoayA8IDAuMGYpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNl
dEZDb25zdCgwLjBmKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChldGEgKiB1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29u
c3QoKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXRh
ICogZG90UHJvZHVjdCArIHNxcnRmKGspKSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCkpOwogICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgLy8gVE9ETzogQWRkIGNvbnN0YW50IGZvbGRpbmcg
c3VwcG9ydCBmb3Igb3RoZXIgYnVpbHQtaW4gb3BlcmF0aW9ucyB0aGF0IHRha2UgMgotICAgICAg
ICAgICAgICAgIC8vIHBhcmFtZXRlcnMgYW5kIG5vdCBoYW5kbGVkIGFib3ZlLgotICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAg
ICB9Ci0gICAgZWxzZSBpZiAocGFyYW1zQ291bnQgPT0gMykKLSAgICB7Ci0gICAgICAgIC8vCi0g
ICAgICAgIC8vIFRlcm5hcnkgYnVpbHQtaW4KLSAgICAgICAgLy8KLSAgICAgICAgc3dpdGNoIChv
cCkKKyAgICAgICAgY2FzZSBFT3BCaXRmaWVsZEV4dHJhY3Q6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNhc2UgRU9wQ2xhbXA6CisgICAgICAgICAgICByZXN1bHRBcnJheSA9IG5ldyBUQ29uc3Rh
bnRVbmlvblttYXhPYmplY3RTaXplXTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbWF4T2JqZWN0U2l6ZTsgKytpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJl
c3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwotICAgICAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQorICAgICAg
ICAgICAgICAgIGludCBvZmZzZXQgPSB1bmlvbkFycmF5c1sxXVswXS5nZXRJQ29uc3QoKTsKKyAg
ICAgICAgICAgICAgICBpbnQgYml0cyAgID0gdW5pb25BcnJheXNbMl1bMF0uZ2V0SUNvbnN0KCk7
CisgICAgICAgICAgICAgICAgaWYgKGJpdHMgPT0gMCkKICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAoYmFzaWNUeXBlKQorICAgICAgICAgICAgICAgICAgICBp
ZiAoYWdncmVnYXRlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnQpCiAgICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgeCAgID0g
dW5pb25BcnJheXNbMF1baV0uZ2V0RkNvbnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmxvYXQgbWluID0gdW5pb25BcnJheXNbMV1baV0uZ2V0RkNvbnN0KCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmxvYXQgbWF4ID0gdW5pb25BcnJheXNbMl1baV0uZ2V0RkNvbnN0
KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZpbmVk
IGlmIG1pbiA+IG1heC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluID4gbWF4
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRp
bmdFcnJvcihsb2MsIG9wLCBiYXNpY1R5cGUsIGRpYWdub3N0aWNzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzdWx0QXJy
YXlbaV0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KGdsOjpjbGFtcCh4LCBt
aW4sIG1heCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidEludDoK
LSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgeCAgID0gdW5pb25BcnJheXNbMF1baV0uZ2V0SUNvbnN0KCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IG1pbiA9IHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXggPSB1bmlvbkFycmF5c1syXVtpXS5nZXRJ
Q29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXN1bHRzIGFyZSB1bmRl
ZmluZWQgaWYgbWluID4gbWF4LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW4g
PiBtYXgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuZGVmaW5lZENvbnN0YW50
Rm9sZGluZ0Vycm9yKGxvYywgb3AsIGJhc2ljVHlwZSwgZGlhZ25vc3RpY3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXN1
bHRBcnJheVtpXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRJQ29uc3QoZ2w6OmNsYW1w
KHgsIG1pbiwgbWF4KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVidFVJ
bnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IHggICA9IHVuaW9uQXJyYXlzWzBdW2ldLmdldFVDb25zdCgpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtaW4gPSB1bmlvbkFycmF5c1sx
XVtpXS5nZXRVQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgbWF4ID0gdW5pb25BcnJheXNbMl1baV0uZ2V0VUNvbnN0KCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIG1pbiA+IG1heC4KLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluID4gbWF4KQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBVbmRlZmluZWRDb25zdGFudEZvbGRpbmdFcnJvcihsb2MsIG9wLCBiYXNp
Y1R5cGUsIGRpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzdWx0QXJyYXlbaV0pOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0QXJyYXlbaV0uc2V0VUNvbnN0KGdsOjpjbGFtcCh4LCBtaW4sIG1heCkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0SUNvbnN0KDApOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGFnZ3JlZ2F0ZS0+Z2V0QmFz
aWNUeXBlKCkgPT0gRWJ0VUludCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJh
eVtpXS5zZXRVQ29uc3QoMCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGNhc2UgRU9wTWl4OgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEFTU0VSVChiYXNp
Y1R5cGUgPT0gRWJ0RmxvYXQpOwotICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRD
b25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsgaSsrKQorICAgICAgICAgICAgICAgIGVsc2UgaWYg
KG9mZnNldCA8IDAgfHwgYml0cyA8IDAgfHwgb2Zmc2V0ID49IDMyIHx8IGJpdHMgPiAzMiB8fCBv
ZmZzZXQgKyBiaXRzID4gMzIpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBmbG9hdCB4ICAgICAgICAgPSB1bmlvbkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKTsKLSAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgeSAgICAgICAgID0gdW5pb25BcnJheXNbMV1baV0uZ2V0RkNv
bnN0KCk7Ci0gICAgICAgICAgICAgICAgICAgIFRCYXNpY1R5cGUgdHlwZSA9ICgqc2VxdWVuY2Up
WzJdLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHR5cGUgPT0gRWJ0RmxvYXQpCisgICAgICAgICAgICAgICAgICAgIFVuZGVm
aW5lZENvbnN0YW50Rm9sZGluZ0Vycm9yKGxvYywgb3AsIGFnZ3JlZ2F0ZS0+Z2V0QmFzaWNUeXBl
KCksIGRpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmcmVzdWx0QXJyYXlbaV0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBi
aXRzIGNhbiBiZSAzMiBoZXJlLCBzbyB3ZSBuZWVkIHRvIGF2b2lkIGJpdCBzaGlmdCBvdmVyZmxv
dy4KKyAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbWFza01zYiA9IDF1IDw8IChiaXRzIC0g
MSk7CisgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG1hc2sgICAgPSAoKG1hc2tNc2IgLSAx
dSkgfCBtYXNrTXNiKSA8PCBvZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChhZ2dyZWdh
dGUtPmdldEJhc2ljVHlwZSgpID09IEVidEludCkKICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gUmV0dXJucyB0aGUgbGluZWFyIGJsZW5kIG9mIHggYW5k
IHksIGkuZS4sIHggKiAoMSAtIGEpICsgeSAqIGEuCi0gICAgICAgICAgICAgICAgICAgICAgICBm
bG9hdCBhID0gdW5pb25BcnJheXNbMl1baV0uZ2V0RkNvbnN0KCk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoeCAqICgxLjBmIC0gYSkgKyB5ICogYSk7
CisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWx1ZSA9IHN0YXRpY19jYXN0PHVp
bnQzMl90Pih1bmlvbkFycmF5c1swXVtpXS5nZXRJQ29uc3QoKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCByZXN1bHRVbnNpZ25lZCA9ICh2YWx1ZSAmIG1hc2spID4+IG9mZnNl
dDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocmVzdWx0VW5zaWduZWQgJiBtYXNrTXNi
KSAhPSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIFRoZSBtb3N0IHNpZ25pZmljYW50IGJpdHMgKGZyb20gYml0cysxIHRvIHRoZSBt
b3N0IHNpZ25pZmljYW50IGJpdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaG91
bGQgYmUgc2V0IHRvIDEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaGln
aGVyQml0c01hc2sgPSAoKDF1IDw8ICgzMiAtIGJpdHMpKSAtIDF1KSA8PCBiaXRzOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFVuc2lnbmVkIHw9IGhpZ2hlckJpdHNNYXNrOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
QXJyYXlbaV0uc2V0SUNvbnN0KHN0YXRpY19jYXN0PGludDMyX3Q+KHJlc3VsdFVuc2lnbmVkKSk7
CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSAgLy8gM3Jk
IHBhcmFtZXRlciBpcyBFYnRCb29sCisgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gRWJ0
Qm9vbCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWxlY3RzIHdoaWNoIHZlY3RvciBl
YWNoIHJldHVybmVkIGNvbXBvbmVudCBjb21lcyBmcm9tLgotICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gRm9yIGEgY29tcG9uZW50IG9mIGEgdGhhdCBpcyBmYWxzZSwgdGhlIGNvcnJlc3BvbmRp
bmcgY29tcG9uZW50IG9mIHggaXMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJldHVybmVk
LgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIGEgY29tcG9uZW50IG9mIGEgdGhhdCBp
cyB0cnVlLCB0aGUgY29ycmVzcG9uZGluZyBjb21wb25lbnQgb2YgeSBpcwotICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gcmV0dXJuZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICBib29sIGEg
PSB1bmlvbkFycmF5c1syXVtpXS5nZXRCQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChhID8geSA6IHgpOworICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGFnZ3JlZ2F0ZS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0VUludCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2YWx1ZSA9IHVuaW9uQXJyYXlzWzBdW2ldLmdl
dFVDb25zdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0VUNv
bnN0KCh2YWx1ZSAmIG1hc2spID4+IG9mZnNldCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGNhc2UgRU9wU21vb3RoU3RlcDoKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIGNhc2UgRU9wQml0ZmllbGRJbnNlcnQ6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJlc3VsdEFycmF5ID0gbmV3IFRDb25zdGFudFVuaW9uW21heE9iamVjdFNpemVdOwor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXplOyArK2kpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9h
dCk7Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bbWF4
T2JqZWN0U2l6ZV07Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhP
YmplY3RTaXplOyBpKyspCisgICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IHVuaW9uQXJyYXlz
WzJdWzBdLmdldElDb25zdCgpOworICAgICAgICAgICAgICAgIGludCBiaXRzICAgPSB1bmlvbkFy
cmF5c1szXVswXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICBpZiAoYml0cyA9PSAwKQog
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgZWRnZTAgPSB1bmlv
bkFycmF5c1swXVtpXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgZWRn
ZTEgPSB1bmlvbkFycmF5c1sxXVtpXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgICAgICAgICAg
ZmxvYXQgeCAgICAgPSB1bmlvbkFycmF5c1syXVtpXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAg
ICAgICAgICAgLy8gUmVzdWx0cyBhcmUgdW5kZWZpbmVkIGlmIGVkZ2UwID49IGVkZ2UxLgotICAg
ICAgICAgICAgICAgICAgICBpZiAoZWRnZTAgPj0gZWRnZTEpCisgICAgICAgICAgICAgICAgICAg
IGlmIChhZ2dyZWdhdGUtPmdldEJhc2ljVHlwZSgpID09IEVidEludCkKICAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xkaW5n
RXJyb3IobG9jLCBvcCwgYmFzaWNUeXBlLCBkaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXN1bHRBcnJheVtpXSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGJhc2UgPSB1bmlvbkFycmF5c1swXVtpXS5n
ZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldElD
b25zdChiYXNlKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJl
dHVybnMgMC4wIGlmIHggPD0gZWRnZTAgYW5kIDEuMCBpZiB4ID49IGVkZ2UxIGFuZCBwZXJmb3Jt
cyBzbW9vdGgKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEhlcm1pdGUgaW50ZXJwb2xhdGlv
biBiZXR3ZWVuIDAgYW5kIDEgd2hlbiBlZGdlMCA8IHggPCBlZGdlMS4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGZsb2F0IHQgPSBnbDo6Y2xhbXAoKHggLSBlZGdlMCkgLyAoZWRnZTEgLSBlZGdl
MCksIDAuMGYsIDEuMGYpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0u
c2V0RkNvbnN0KHQgKiB0ICogKDMuMGYgLSAyLjBmICogdCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGFnZ3JlZ2F0ZS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0VUludCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBiYXNlID0gdW5pb25BcnJheXNbMF1baV0uZ2V0
VUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRVQ29u
c3QoYmFzZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNhc2UgRU9w
RmFjZUZvcndhcmQ6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJhc2lj
VHlwZSA9PSBFYnRGbG9hdCk7Ci0gICAgICAgICAgICAgICAgLy8gZ2VuVHlwZSBmYWNlZm9yd2Fy
ZChnZW5UeXBlIE4sIGdlblR5cGUgSSwgZ2VuVHlwZSBOcmVmKSA6Ci0gICAgICAgICAgICAgICAg
Ly8gICAgIElmIGRvdChOcmVmLCBJKSA8IDAgcmV0dXJuIE4sIG90aGVyd2lzZSByZXR1cm4gLU4u
Ci0gICAgICAgICAgICAgICAgcmVzdWx0QXJyYXkgICAgICA9IG5ldyBUQ29uc3RhbnRVbmlvbltt
YXhPYmplY3RTaXplXTsKLSAgICAgICAgICAgICAgICBmbG9hdCBkb3RQcm9kdWN0ID0gVmVjdG9y
RG90UHJvZHVjdCh1bmlvbkFycmF5c1syXSwgdW5pb25BcnJheXNbMV0sIG1heE9iamVjdFNpemUp
OwotICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4T2JqZWN0U2l6ZTsg
aSsrKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9mZnNldCA8IDAgfHwgYml0cyA8IDAgfHwg
b2Zmc2V0ID49IDMyIHx8IGJpdHMgPiAzMiB8fCBvZmZzZXQgKyBiaXRzID4gMzIpCiAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoZG90UHJvZHVjdCA8IDApCi0gICAg
ICAgICAgICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QodW5pb25BcnJheXNb
MF1baV0uZ2V0RkNvbnN0KCkpOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgICAgICByZXN1bHRBcnJheVtpXS5zZXRGQ29uc3QoLXVuaW9uQXJyYXlzWzBdW2ld
LmdldEZDb25zdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgVW5kZWZpbmVkQ29uc3RhbnRGb2xk
aW5nRXJyb3IobG9jLCBvcCwgYWdncmVnYXRlLT5nZXRCYXNpY1R5cGUoKSwgZGlhZ25vc3RpY3Ms
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyZXN1
bHRBcnJheVtpXSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjYXNlIEVPcFJlZnJhY3Q6Ci0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJhc2ljVHlwZSA9PSBFYnRGbG9hdCk7Ci0gICAg
ICAgICAgICAgICAgLy8gZ2VuVHlwZSByZWZyYWN0KGdlblR5cGUgSSwgZ2VuVHlwZSBOLCBmbG9h
dCBldGEpIDoKLSAgICAgICAgICAgICAgICAvLyAgICAgRm9yIHRoZSBpbmNpZGVudCB2ZWN0b3Ig
SSBhbmQgc3VyZmFjZSBub3JtYWwgTiwgYW5kIHRoZSByYXRpbyBvZiBpbmRpY2VzIG9mCi0gICAg
ICAgICAgICAgICAgLy8gICAgIHJlZnJhY3Rpb24gZXRhLAotICAgICAgICAgICAgICAgIC8vICAg
ICByZXR1cm4gdGhlIHJlZnJhY3Rpb24gdmVjdG9yLiBUaGUgcmVzdWx0IGlzIGNvbXB1dGVkIGJ5
Ci0gICAgICAgICAgICAgICAgLy8gICAgICAgICBrID0gMS4wIC0gZXRhICogZXRhICogKDEuMCAt
IGRvdChOLCBJKSAqIGRvdChOLCBJKSkKLSAgICAgICAgICAgICAgICAvLyAgICAgICAgIGlmIChr
IDwgMC4wKQotICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgIHJldHVybiBnZW5UeXBlKDAu
MCkKLSAgICAgICAgICAgICAgICAvLyAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAvLyAg
ICAgICAgICAgICByZXR1cm4gZXRhICogSSAtIChldGEgKiBkb3QoTiwgSSkgKyBzcXJ0KGspKSAq
IE4KLSAgICAgICAgICAgICAgICByZXN1bHRBcnJheSAgICAgID0gbmV3IFRDb25zdGFudFVuaW9u
W21heE9iamVjdFNpemVdOwotICAgICAgICAgICAgICAgIGZsb2F0IGRvdFByb2R1Y3QgPSBWZWN0
b3JEb3RQcm9kdWN0KHVuaW9uQXJyYXlzWzFdLCB1bmlvbkFycmF5c1swXSwgbWF4T2JqZWN0U2l6
ZSk7Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhPYmplY3RTaXpl
OyBpKyspCisgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgZmxvYXQgZXRhID0gdW5pb25BcnJheXNbMl1baV0uZ2V0RkNvbnN0KCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGZsb2F0IGsgICA9IDEuMGYgLSBldGEgKiBldGEgKiAoMS4wZiAt
IGRvdFByb2R1Y3QgKiBkb3RQcm9kdWN0KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGsgPCAw
LjBmKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QXJyYXlbaV0uc2V0RkNvbnN0KDAu
MGYpOworICAgICAgICAgICAgICAgICAgICAvLyBiaXRzIGNhbiBiZSAzMiBoZXJlLCBzbyB3ZSBu
ZWVkIHRvIGF2b2lkIGJpdCBzaGlmdCBvdmVyZmxvdy4KKyAgICAgICAgICAgICAgICAgICAgdWlu
dDMyX3QgbWFza01zYiAgICA9IDF1IDw8IChiaXRzIC0gMSk7CisgICAgICAgICAgICAgICAgICAg
IHVpbnQzMl90IGluc2VydE1hc2sgPSAoKG1hc2tNc2IgLSAxdSkgfCBtYXNrTXNiKSA8PCBvZmZz
ZXQ7CisgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGJhc2VNYXNrICAgPSB+aW5zZXJ0TWFz
azsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFnZ3JlZ2F0ZS0+Z2V0QmFzaWNUeXBlKCkgPT0g
RWJ0SW50KQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICB1
aW50MzJfdCBiYXNlICAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odW5pb25BcnJheXNbMF1baV0u
Z2V0SUNvbnN0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5zZXJ0ID0g
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHVuaW9uQXJyYXlzWzFdW2ldLmdldElDb25zdCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHJlc3VsdFVuc2lnbmVkID0KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoYmFzZSAmIGJhc2VNYXNrKSB8ICgoaW5zZXJ0IDw8IG9mZnNl
dCkgJiBpbnNlcnRNYXNrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEFycmF5W2ld
LnNldElDb25zdChzdGF0aWNfY2FzdDxpbnQzMl90PihyZXN1bHRVbnNpZ25lZCkpOworICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdEFycmF5W2ldLnNldEZDb25zdChldGEgKiB1bmlvbkFycmF5c1swXVtp
XS5nZXRGQ29uc3QoKSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGV0YSAqIGRvdFByb2R1Y3QgKyBzcXJ0ZihrKSkgKgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbkFycmF5c1sxXVtpXS5n
ZXRGQ29uc3QoKSk7CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChhZ2dyZWdhdGUtPmdldEJhc2ljVHlwZSgpID09IEVidFVJbnQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgYmFzZSAgID0gdW5pb25BcnJheXNbMF1baV0uZ2V0
VUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBpbnNlcnQgPSB1bmlv
bkFycmF5c1sxXVtpXS5nZXRVQ29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dEFycmF5W2ldLnNldFVDb25zdCgoYmFzZSAmIGJhc2VNYXNrKSB8CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChpbnNlcnQgPDwgb2Zmc2V0KSAmIGlu
c2VydE1hc2spKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgIC8vIFRP
RE86IEFkZCBjb25zdGFudCBmb2xkaW5nIHN1cHBvcnQgZm9yIG90aGVyIGJ1aWx0LWluIG9wZXJh
dGlvbnMgdGhhdCB0YWtlIDMKLSAgICAgICAgICAgICAgICAvLyBwYXJhbWV0ZXJzIGFuZCBub3Qg
aGFuZGxlZCBhYm92ZS4KLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0
dXJuIHJlc3VsdEFycmF5OwogfQpAQCAtMjc5MywyNCArMzMyNiwyMSBAQCB2b2lkIFRJbnRlcm1U
cmF2ZXJzZXI6OnVwZGF0ZVRyZWUoKQogICAgICAgICAgICAgYm9vbCBpbnNlcnRlZCA9IGluc2Vy
dGlvbi5wYXJlbnQtPmluc2VydENoaWxkTm9kZXMoaW5zZXJ0aW9uLnBvc2l0aW9uICsgMSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluc2VydGlvbi5pbnNlcnRpb25zQWZ0ZXIpOwogICAgICAgICAgICAgQVNTRVJUKGluc2Vy
dGVkKTsKLSAgICAgICAgICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUoaW5zZXJ0ZWQpOwog
ICAgICAgICB9CiAgICAgICAgIGlmICghaW5zZXJ0aW9uLmluc2VydGlvbnNCZWZvcmUuZW1wdHko
KSkKICAgICAgICAgewogICAgICAgICAgICAgYm9vbCBpbnNlcnRlZCA9CiAgICAgICAgICAgICAg
ICAgaW5zZXJ0aW9uLnBhcmVudC0+aW5zZXJ0Q2hpbGROb2RlcyhpbnNlcnRpb24ucG9zaXRpb24s
IGluc2VydGlvbi5pbnNlcnRpb25zQmVmb3JlKTsKICAgICAgICAgICAgIEFTU0VSVChpbnNlcnRl
ZCk7Ci0gICAgICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKGluc2VydGVkKTsKICAg
ICAgICAgfQogICAgIH0KICAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgbVJlcGxhY2VtZW50
cy5zaXplKCk7ICsraWkpCiAgICAgewogICAgICAgICBjb25zdCBOb2RlVXBkYXRlRW50cnkgJnJl
cGxhY2VtZW50ID0gbVJlcGxhY2VtZW50c1tpaV07CiAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVu
dC5wYXJlbnQpOwotICAgICAgICBib29sIHJlcGxhY2VkID0gcmVwbGFjZW1lbnQucGFyZW50LT5y
ZXBsYWNlQ2hpbGROb2RlKAotICAgICAgICAgICAgcmVwbGFjZW1lbnQub3JpZ2luYWwsIHJlcGxh
Y2VtZW50LnJlcGxhY2VtZW50KTsKKyAgICAgICAgYm9vbCByZXBsYWNlZCA9CisgICAgICAgICAg
ICByZXBsYWNlbWVudC5wYXJlbnQtPnJlcGxhY2VDaGlsZE5vZGUocmVwbGFjZW1lbnQub3JpZ2lu
YWwsIHJlcGxhY2VtZW50LnJlcGxhY2VtZW50KTsKICAgICAgICAgQVNTRVJUKHJlcGxhY2VkKTsK
LSAgICAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShyZXBsYWNlZCk7CiAKICAgICAgICAg
aWYgKCFyZXBsYWNlbWVudC5vcmlnaW5hbEJlY29tZXNDaGlsZE9mUmVwbGFjZW1lbnQpCiAgICAg
ICAgIHsKQEAgLTI4MzAsMTAgKzMzNjAsOSBAQCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnVwZGF0
ZVRyZWUoKQogICAgIHsKICAgICAgICAgY29uc3QgTm9kZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRy
eSAmcmVwbGFjZW1lbnQgPSBtTXVsdGlSZXBsYWNlbWVudHNbaWldOwogICAgICAgICBBU1NFUlQo
cmVwbGFjZW1lbnQucGFyZW50KTsKLSAgICAgICAgYm9vbCByZXBsYWNlZCA9IHJlcGxhY2VtZW50
LnBhcmVudC0+cmVwbGFjZUNoaWxkTm9kZVdpdGhNdWx0aXBsZSgKLSAgICAgICAgICAgIHJlcGxh
Y2VtZW50Lm9yaWdpbmFsLCByZXBsYWNlbWVudC5yZXBsYWNlbWVudHMpOworICAgICAgICBib29s
IHJlcGxhY2VkID0gcmVwbGFjZW1lbnQucGFyZW50LT5yZXBsYWNlQ2hpbGROb2RlV2l0aE11bHRp
cGxlKHJlcGxhY2VtZW50Lm9yaWdpbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50LnJl
cGxhY2VtZW50cyk7CiAgICAgICAgIEFTU0VSVChyZXBsYWNlZCk7Ci0gICAgICAgIFVOVVNFRF9B
U1NFUlRJT05fVkFSSUFCTEUocmVwbGFjZWQpOwogICAgIH0KIAogICAgIGNsZWFyUmVwbGFjZW1l
bnRRdWV1ZSgpOwpAQCAtMjg2MSwzICszMzkwLDQ1IEBAIHZvaWQgVEludGVybVRyYXZlcnNlcjo6
cXVldWVSZXBsYWNlbWVudFdpdGhQYXJlbnQoVEludGVybU5vZGUgKnBhcmVudCwKICAgICBib29s
IG9yaWdpbmFsQmVjb21lc0NoaWxkID0gKG9yaWdpbmFsU3RhdHVzID09IE9yaWdpbmFsTm9kZTo6
QkVDT01FU19DSElMRCk7CiAgICAgbVJlcGxhY2VtZW50cy5wdXNoX2JhY2soTm9kZVVwZGF0ZUVu
dHJ5KHBhcmVudCwgb3JpZ2luYWwsIHJlcGxhY2VtZW50LCBvcmlnaW5hbEJlY29tZXNDaGlsZCkp
OwogfQorCitUTmFtZSBUSW50ZXJtVHJhdmVyc2VyOjpHZXRJbnRlcm5hbEZ1bmN0aW9uTmFtZShj
b25zdCBjaGFyICpuYW1lKQoreworICAgIFRTdHJpbmcgbmFtZVN0cihuYW1lKTsKKyAgICBUTmFt
ZSBuYW1lT2JqKG5hbWVTdHIpOworICAgIG5hbWVPYmouc2V0SW50ZXJuYWwodHJ1ZSk7CisgICAg
cmV0dXJuIG5hbWVPYmo7Cit9CisKK1RJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAqVEludGVybVRy
YXZlcnNlcjo6Q3JlYXRlSW50ZXJuYWxGdW5jdGlvblByb3RvdHlwZU5vZGUoCisgICAgY29uc3Qg
VFR5cGUgJnJldHVyblR5cGUsCisgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICBjb25zdCBUU3lt
Ym9sVW5pcXVlSWQgJmZ1bmN0aW9uSWQpCit7CisgICAgVEludGVybUZ1bmN0aW9uUHJvdG90eXBl
ICpmdW5jdGlvbk5vZGUgPSBuZXcgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlKHJldHVyblR5cGUs
IGZ1bmN0aW9uSWQpOworICAgIGZ1bmN0aW9uTm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCkt
PnNldE5hbWVPYmooR2V0SW50ZXJuYWxGdW5jdGlvbk5hbWUobmFtZSkpOworICAgIHJldHVybiBm
dW5jdGlvbk5vZGU7Cit9CisKK1RJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKlRJbnRlcm1UcmF2
ZXJzZXI6OkNyZWF0ZUludGVybmFsRnVuY3Rpb25EZWZpbml0aW9uTm9kZSgKKyAgICBjb25zdCBU
VHlwZSAmcmV0dXJuVHlwZSwKKyAgICBjb25zdCBjaGFyICpuYW1lLAorICAgIFRJbnRlcm1CbG9j
ayAqZnVuY3Rpb25Cb2R5LAorICAgIGNvbnN0IFRTeW1ib2xVbmlxdWVJZCAmZnVuY3Rpb25JZCkK
K3sKKyAgICBUSW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKnByb3RvdHlwZU5vZGUgPQorICAgICAg
ICBDcmVhdGVJbnRlcm5hbEZ1bmN0aW9uUHJvdG90eXBlTm9kZShyZXR1cm5UeXBlLCBuYW1lLCBm
dW5jdGlvbklkKTsKKyAgICByZXR1cm4gbmV3IFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24ocHJv
dG90eXBlTm9kZSwgZnVuY3Rpb25Cb2R5KTsKK30KKworVEludGVybUFnZ3JlZ2F0ZSAqVEludGVy
bVRyYXZlcnNlcjo6Q3JlYXRlSW50ZXJuYWxGdW5jdGlvbkNhbGxOb2RlKAorICAgIGNvbnN0IFRU
eXBlICZyZXR1cm5UeXBlLAorICAgIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgY29uc3QgVFN5bWJv
bFVuaXF1ZUlkICZmdW5jdGlvbklkLAorICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzKQor
eworICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmZ1bmN0aW9uTm9kZSA9IFRJbnRlcm1BZ2dyZWdhdGU6
OkNyZWF0ZUZ1bmN0aW9uQ2FsbCgKKyAgICAgICAgcmV0dXJuVHlwZSwgZnVuY3Rpb25JZCwgR2V0
SW50ZXJuYWxGdW5jdGlvbk5hbWUobmFtZSksIGFyZ3VtZW50cyk7CisgICAgcmV0dXJuIGZ1bmN0
aW9uTm9kZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgK
aW5kZXggNGMzNzAzNDEzZTYuLmJlZjI3YTU3MmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5o
CkBAIC0yNywxMSArMjcsMTcgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL09wZXJh
dG9yLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UeXBlcy5oIgogCituYW1lc3Bh
Y2Ugc2gKK3sKKwogY2xhc3MgVERpYWdub3N0aWNzOwogCiBjbGFzcyBUSW50ZXJtVHJhdmVyc2Vy
OwogY2xhc3MgVEludGVybUFnZ3JlZ2F0ZTsKIGNsYXNzIFRJbnRlcm1CbG9jazsKK2NsYXNzIFRJ
bnRlcm1JbnZhcmlhbnREZWNsYXJhdGlvbjsKK2NsYXNzIFRJbnRlcm1EZWNsYXJhdGlvbjsKK2Ns
YXNzIFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZTsKIGNsYXNzIFRJbnRlcm1GdW5jdGlvbkRlZmlu
aXRpb247CiBjbGFzcyBUSW50ZXJtU3dpenpsZTsKIGNsYXNzIFRJbnRlcm1CaW5hcnk7CkBAIC01
MCw2ICs1Niw3IEBAIGNsYXNzIFRJbnRlcm1SYXc7CiBjbGFzcyBUSW50ZXJtQnJhbmNoOwogCiBj
bGFzcyBUU3ltYm9sVGFibGU7CitjbGFzcyBUU3ltYm9sVW5pcXVlSWQ7CiBjbGFzcyBURnVuY3Rp
b247CiAKIC8vIEVuY2Fwc3VsYXRlIGFuIGlkZW50aWZpZXIgc3RyaW5nIGFuZCB0cmFjayB3aGV0
aGVyIGl0IGlzIGNvbWluZyBmcm9tIHRoZSBvcmlnaW5hbCBzaGFkZXIgY29kZQpAQCAtODcsNyAr
OTQsNyBAQCBjbGFzcyBUSW50ZXJtTm9kZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICBt
TGluZS5maXJzdF9maWxlID0gbUxpbmUubGFzdF9maWxlID0gMDsKICAgICAgICAgbUxpbmUuZmly
c3RfbGluZSA9IG1MaW5lLmxhc3RfbGluZSA9IDA7CiAgICAgfQotICAgIHZpcnR1YWwgflRJbnRl
cm1Ob2RlKCkgeyB9CisgICAgdmlydHVhbCB+VEludGVybU5vZGUoKSB7fQogCiAgICAgY29uc3Qg
VFNvdXJjZUxvYyAmZ2V0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1MaW5lOyB9CiAgICAgdm9pZCBz
ZXRMaW5lKGNvbnN0IFRTb3VyY2VMb2MgJmwpIHsgbUxpbmUgPSBsOyB9CkBAIC05OCw2ICsxMDUs
OCBAQCBjbGFzcyBUSW50ZXJtTm9kZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHZpcnR1YWwg
VEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqZ2V0QXNGdW5jdGlvbkRlZmluaXRpb24oKSB7IHJl
dHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBUSW50ZXJtQWdncmVnYXRlICpnZXRBc0FnZ3Jl
Z2F0ZSgpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIFRJbnRlcm1CbG9jayAqZ2V0QXNCbG9j
aygpIHsgcmV0dXJuIG51bGxwdHI7IH0KKyAgICB2aXJ0dWFsIFRJbnRlcm1GdW5jdGlvblByb3Rv
dHlwZSAqZ2V0QXNGdW5jdGlvblByb3RvdHlwZU5vZGUoKSB7IHJldHVybiBudWxscHRyOyB9Cisg
ICAgdmlydHVhbCBUSW50ZXJtRGVjbGFyYXRpb24gKmdldEFzRGVjbGFyYXRpb25Ob2RlKCkgeyBy
ZXR1cm4gbnVsbHB0cjsgfQogICAgIHZpcnR1YWwgVEludGVybVN3aXp6bGUgKmdldEFzU3dpenps
ZU5vZGUoKSB7IHJldHVybiBudWxscHRyOyB9CiAgICAgdmlydHVhbCBUSW50ZXJtQmluYXJ5ICpn
ZXRBc0JpbmFyeU5vZGUoKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBUSW50ZXJtVW5hcnkg
KmdldEFzVW5hcnlOb2RlKCkgeyByZXR1cm4gMDsgfQpAQCAtMTEyLDggKzEyMSw3IEBAIGNsYXNz
IFRJbnRlcm1Ob2RlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICAvLyBSZXBsYWNlIGEgY2hp
bGQgbm9kZS4gUmV0dXJuIHRydWUgaWYgfG9yaWdpbmFsfCBpcyBhIGNoaWxkCiAgICAgLy8gbm9k
ZSBhbmQgaXQgaXMgcmVwbGFjZWQ7IG90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLgotICAgIHZpcnR1
YWwgYm9vbCByZXBsYWNlQ2hpbGROb2RlKAotICAgICAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWws
IFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCByZXBsYWNl
Q2hpbGROb2RlKFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50
KSA9IDA7CiAKICAgcHJvdGVjdGVkOgogICAgIFRTb3VyY2VMb2MgbUxpbmU7CkBAIC0xMzQsNyAr
MTQyLDcgQEAgc3RydWN0IFRJbnRlcm1Ob2RlUGFpcgogY2xhc3MgVEludGVybVR5cGVkIDogcHVi
bGljIFRJbnRlcm1Ob2RlCiB7CiAgIHB1YmxpYzoKLSAgICBUSW50ZXJtVHlwZWQoY29uc3QgVFR5
cGUgJnQpIDogbVR5cGUodCkgIHsgfQorICAgIFRJbnRlcm1UeXBlZChjb25zdCBUVHlwZSAmdCkg
OiBtVHlwZSh0KSB7fQogCiAgICAgdmlydHVhbCBUSW50ZXJtVHlwZWQgKmRlZXBDb3B5KCkgY29u
c3QgPSAwOwogCkBAIC0xNTAsNiArMTU4LDcgQEAgY2xhc3MgVEludGVybVR5cGVkIDogcHVibGlj
IFRJbnRlcm1Ob2RlCiAgICAgVEJhc2ljVHlwZSBnZXRCYXNpY1R5cGUoKSBjb25zdCB7IHJldHVy
biBtVHlwZS5nZXRCYXNpY1R5cGUoKTsgfQogICAgIFRRdWFsaWZpZXIgZ2V0UXVhbGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbVR5cGUuZ2V0UXVhbGlmaWVyKCk7IH0KICAgICBUUHJlY2lzaW9uIGdl
dFByZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1UeXBlLmdldFByZWNpc2lvbigpOyB9CisgICAg
VE1lbW9yeVF1YWxpZmllciBnZXRNZW1vcnlRdWFsaWZpZXIoKSBjb25zdCB7IHJldHVybiBtVHlw
ZS5nZXRNZW1vcnlRdWFsaWZpZXIoKTsgfQogICAgIGludCBnZXRDb2xzKCkgY29uc3QgeyByZXR1
cm4gbVR5cGUuZ2V0Q29scygpOyB9CiAgICAgaW50IGdldFJvd3MoKSBjb25zdCB7IHJldHVybiBt
VHlwZS5nZXRSb3dzKCk7IH0KICAgICBpbnQgZ2V0Tm9taW5hbFNpemUoKSBjb25zdCB7IHJldHVy
biBtVHlwZS5nZXROb21pbmFsU2l6ZSgpOyB9CkBAIC0xNTcsNyArMTY2LDcgQEAgY2xhc3MgVElu
dGVybVR5cGVkIDogcHVibGljIFRJbnRlcm1Ob2RlCiAKICAgICBib29sIGlzSW50ZXJmYWNlQmxv
Y2soKSBjb25zdCB7IHJldHVybiBtVHlwZS5pc0ludGVyZmFjZUJsb2NrKCk7IH0KICAgICBib29s
IGlzTWF0cml4KCkgY29uc3QgeyByZXR1cm4gbVR5cGUuaXNNYXRyaXgoKTsgfQotICAgIGJvb2wg
aXNBcnJheSgpICBjb25zdCB7IHJldHVybiBtVHlwZS5pc0FycmF5KCk7IH0KKyAgICBib29sIGlz
QXJyYXkoKSBjb25zdCB7IHJldHVybiBtVHlwZS5pc0FycmF5KCk7IH0KICAgICBib29sIGlzVmVj
dG9yKCkgY29uc3QgeyByZXR1cm4gbVR5cGUuaXNWZWN0b3IoKTsgfQogICAgIGJvb2wgaXNTY2Fs
YXIoKSBjb25zdCB7IHJldHVybiBtVHlwZS5pc1NjYWxhcigpOyB9CiAgICAgYm9vbCBpc1NjYWxh
ckludCgpIGNvbnN0IHsgcmV0dXJuIG1UeXBlLmlzU2NhbGFySW50KCk7IH0KQEAgLTE3MCw2ICsx
NzksNyBAQCBjbGFzcyBUSW50ZXJtVHlwZWQgOiBwdWJsaWMgVEludGVybU5vZGUKIAogICAgIHN0
YXRpYyBUSW50ZXJtVHlwZWQgKkNyZWF0ZUluZGV4Tm9kZShpbnQgaW5kZXgpOwogICAgIHN0YXRp
YyBUSW50ZXJtVHlwZWQgKkNyZWF0ZVplcm8oY29uc3QgVFR5cGUgJnR5cGUpOworICAgIHN0YXRp
YyBUSW50ZXJtVHlwZWQgKkNyZWF0ZUJvb2woYm9vbCB2YWx1ZSk7CiAKICAgcHJvdGVjdGVkOgog
ICAgIFRUeXBlIG1UeXBlOwpAQCAtMTk1LDcgKzIwNSw3IEBAIGNsYXNzIFRJbnRlcm1Mb29wIDog
cHVibGljIFRJbnRlcm1Ob2RlCiAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpjb25kLAog
ICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqZXhwciwKICAgICAgICAgICAgICAgICBUSW50
ZXJtQmxvY2sgKmJvZHkpCi0gICAgICAgIDogbVR5cGUodHlwZSksIG1Jbml0KGluaXQpLCBtQ29u
ZChjb25kKSwgbUV4cHIoZXhwciksIG1Cb2R5KGJvZHkpLCBtVW5yb2xsRmxhZyhmYWxzZSkKKyAg
ICAgICAgOiBtVHlwZSh0eXBlKSwgbUluaXQoaW5pdCksIG1Db25kKGNvbmQpLCBtRXhwcihleHBy
KSwgbUJvZHkoYm9keSkKICAgICB7CiAgICAgfQogCkBAIC0yMTMsMTcgKzIyMywxMiBAQCBjbGFz
cyBUSW50ZXJtTG9vcCA6IHB1YmxpYyBUSW50ZXJtTm9kZQogICAgIHZvaWQgc2V0RXhwcmVzc2lv
bihUSW50ZXJtVHlwZWQgKmV4cHJlc3Npb24pIHsgbUV4cHIgPSBleHByZXNzaW9uOyB9CiAgICAg
dm9pZCBzZXRCb2R5KFRJbnRlcm1CbG9jayAqYm9keSkgeyBtQm9keSA9IGJvZHk7IH0KIAotICAg
IHZvaWQgc2V0VW5yb2xsRmxhZyhib29sIGZsYWcpIHsgbVVucm9sbEZsYWcgPSBmbGFnOyB9Ci0g
ICAgYm9vbCBnZXRVbnJvbGxGbGFnKCkgY29uc3QgeyByZXR1cm4gbVVucm9sbEZsYWc7IH0KLQog
ICBwcm90ZWN0ZWQ6CiAgICAgVExvb3BUeXBlIG1UeXBlOwotICAgIFRJbnRlcm1Ob2RlICptSW5p
dDsgIC8vIGZvci1sb29wIGluaXRpYWxpemF0aW9uCi0gICAgVEludGVybVR5cGVkICptQ29uZDsg
Ly8gbG9vcCBleGl0IGNvbmRpdGlvbgotICAgIFRJbnRlcm1UeXBlZCAqbUV4cHI7IC8vIGZvci1s
b29wIGV4cHJlc3Npb24KKyAgICBUSW50ZXJtTm9kZSAqbUluaXQ7ICAgLy8gZm9yLWxvb3AgaW5p
dGlhbGl6YXRpb24KKyAgICBUSW50ZXJtVHlwZWQgKm1Db25kOyAgLy8gbG9vcCBleGl0IGNvbmRp
dGlvbgorICAgIFRJbnRlcm1UeXBlZCAqbUV4cHI7ICAvLyBmb3ItbG9vcCBleHByZXNzaW9uCiAg
ICAgVEludGVybUJsb2NrICptQm9keTsgIC8vIGxvb3AgYm9keQotCi0gICAgYm9vbCBtVW5yb2xs
RmxhZzsgLy8gV2hldGhlciB0aGUgbG9vcCBzaG91bGQgYmUgdW5yb2xsZWQgb3Igbm90LgogfTsK
IAogLy8KQEAgLTIzMiwxOCArMjM3LDE2IEBAIGNsYXNzIFRJbnRlcm1Mb29wIDogcHVibGljIFRJ
bnRlcm1Ob2RlCiBjbGFzcyBUSW50ZXJtQnJhbmNoIDogcHVibGljIFRJbnRlcm1Ob2RlCiB7CiAg
IHB1YmxpYzoKLSAgICBUSW50ZXJtQnJhbmNoKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkICpl
KQotICAgICAgICA6IG1GbG93T3Aob3ApLAotICAgICAgICAgIG1FeHByZXNzaW9uKGUpIHsgfQor
ICAgIFRJbnRlcm1CcmFuY2goVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQgKmUpIDogbUZsb3dP
cChvcCksIG1FeHByZXNzaW9uKGUpIHt9CiAKICAgICB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2
ZXJzZXIgKml0KSBvdmVycmlkZTsKICAgICBUSW50ZXJtQnJhbmNoICpnZXRBc0JyYW5jaE5vZGUo
KSBvdmVycmlkZSB7IHJldHVybiB0aGlzOyB9CiAgICAgYm9vbCByZXBsYWNlQ2hpbGROb2RlKFRJ
bnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KSBvdmVycmlkZTsK
IAogICAgIFRPcGVyYXRvciBnZXRGbG93T3AoKSB7IHJldHVybiBtRmxvd09wOyB9Ci0gICAgVElu
dGVybVR5cGVkKiBnZXRFeHByZXNzaW9uKCkgeyByZXR1cm4gbUV4cHJlc3Npb247IH0KKyAgICBU
SW50ZXJtVHlwZWQgKmdldEV4cHJlc3Npb24oKSB7IHJldHVybiBtRXhwcmVzc2lvbjsgfQogCi1w
cm90ZWN0ZWQ6CisgIHByb3RlY3RlZDoKICAgICBUT3BlcmF0b3IgbUZsb3dPcDsKICAgICBUSW50
ZXJtVHlwZWQgKm1FeHByZXNzaW9uOyAgLy8gbm9uLXplcm8gZXhjZXB0IGZvciAicmV0dXJuIGV4
cDsiIHN0YXRlbWVudHMKIH07CkBAIC0yOTIsOSArMjk1LDcgQEAgY2xhc3MgVEludGVybVN5bWJv
bCA6IHB1YmxpYyBUSW50ZXJtVHlwZWQKIGNsYXNzIFRJbnRlcm1SYXcgOiBwdWJsaWMgVEludGVy
bVR5cGVkCiB7CiAgIHB1YmxpYzoKLSAgICBUSW50ZXJtUmF3KGNvbnN0IFRUeXBlICZ0eXBlLCBj
b25zdCBUU3RyaW5nICZyYXdUZXh0KQotICAgICAgICA6IFRJbnRlcm1UeXBlZCh0eXBlKSwKLSAg
ICAgICAgICBtUmF3VGV4dChyYXdUZXh0KSB7IH0KKyAgICBUSW50ZXJtUmF3KGNvbnN0IFRUeXBl
ICZ0eXBlLCBjb25zdCBUU3RyaW5nICZyYXdUZXh0KSA6IFRJbnRlcm1UeXBlZCh0eXBlKSwgbVJh
d1RleHQocmF3VGV4dCkge30KICAgICBUSW50ZXJtUmF3KGNvbnN0IFRJbnRlcm1SYXcgJikgPSBk
ZWxldGU7CiAKICAgICBUSW50ZXJtVHlwZWQgKmRlZXBDb3B5KCkgY29uc3Qgb3ZlcnJpZGUKQEAg
LTM4Miw3ICszODMsNyBAQCBjbGFzcyBUSW50ZXJtQ29uc3RhbnRVbmlvbiA6IHB1YmxpYyBUSW50
ZXJtVHlwZWQKICAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAqbVVuaW9uQXJyYXlQb2ludGVyOwog
CiAgIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBmbG9hdCgqRmxvYXRUeXBlVW5hcnlGdW5jKSAoZmxv
YXQpOworICAgIHR5cGVkZWYgZmxvYXQgKCpGbG9hdFR5cGVVbmFyeUZ1bmMpKGZsb2F0KTsKICAg
ICB2b2lkIGZvbGRGbG9hdFR5cGVVbmFyeShjb25zdCBUQ29uc3RhbnRVbmlvbiAmcGFyYW1ldGVy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0VHlwZVVuYXJ5RnVuYyBidWlsdGlu
RnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ29uc3RhbnRVbmlvbiAqcmVzdWx0
KSBjb25zdDsKQEAgLTQwMiwxOSArNDAzLDE5IEBAIGNsYXNzIFRJbnRlcm1PcGVyYXRvciA6IHB1
YmxpYyBUSW50ZXJtVHlwZWQKICAgICBib29sIGlzTXVsdGlwbGljYXRpb24oKSBjb25zdDsKICAg
ICBib29sIGlzQ29uc3RydWN0b3IoKSBjb25zdDsKIAorICAgIC8vIFJldHVybnMgdHJ1ZSBmb3Ig
Y2FsbHMgbWFwcGVkIHRvIEVPcENhbGwqLCBmYWxzZSBmb3IgYnVpbHQtaW5zIHRoYXQgaGF2ZSB0
aGVpciBvd24gc3BlY2lmaWMKKyAgICAvLyBvcHMuCisgICAgYm9vbCBpc0Z1bmN0aW9uQ2FsbCgp
IGNvbnN0OworCiAgICAgYm9vbCBoYXNTaWRlRWZmZWN0cygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGlzQXNzaWdubWVudCgpOyB9CiAKICAgcHJvdGVjdGVkOgotICAgIFRJbnRlcm1PcGVyYXRv
cihUT3BlcmF0b3Igb3ApCi0gICAgICAgIDogVEludGVybVR5cGVkKFRUeXBlKEVidEZsb2F0LCBF
YnBVbmRlZmluZWQpKSwKLSAgICAgICAgICBtT3Aob3ApIHt9Ci0gICAgVEludGVybU9wZXJhdG9y
KFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUgJnR5cGUpCi0gICAgICAgIDogVEludGVybVR5cGVk
KHR5cGUpLAotICAgICAgICAgIG1PcChvcCkge30KKyAgICBUSW50ZXJtT3BlcmF0b3IoVE9wZXJh
dG9yIG9wKSA6IFRJbnRlcm1UeXBlZChUVHlwZShFYnRGbG9hdCwgRWJwVW5kZWZpbmVkKSksIG1P
cChvcCkge30KKyAgICBUSW50ZXJtT3BlcmF0b3IoVE9wZXJhdG9yIG9wLCBjb25zdCBUVHlwZSAm
dHlwZSkgOiBUSW50ZXJtVHlwZWQodHlwZSksIG1PcChvcCkge30KIAogICAgIFRJbnRlcm1PcGVy
YXRvcihjb25zdCBUSW50ZXJtT3BlcmF0b3IgJikgPSBkZWZhdWx0OwogCi0gICAgVE9wZXJhdG9y
IG1PcDsKKyAgICBjb25zdCBUT3BlcmF0b3IgbU9wOwogfTsKIAogLy8gTm9kZSBmb3IgdmVjdG9y
IHN3aXp6bGVzLgpAQCAtNDM2LDYgKzQzNyw3IEBAIGNsYXNzIFRJbnRlcm1Td2l6emxlIDogcHVi
bGljIFRJbnRlcm1UeXBlZAogICAgIHZvaWQgd3JpdGVPZmZzZXRzQXNYWVpXKFRJbmZvU2lua0Jh
c2UgKm91dCkgY29uc3Q7CiAKICAgICBib29sIGhhc0R1cGxpY2F0ZU9mZnNldHMoKSBjb25zdDsK
KyAgICBib29sIG9mZnNldHNNYXRjaChpbnQgb2Zmc2V0KSBjb25zdDsKIAogICAgIFRJbnRlcm1U
eXBlZCAqZm9sZCgpOwogCkBAIC00ODMsOCArNDg1LDggQEAgY2xhc3MgVEludGVybUJpbmFyeSA6
IHB1YmxpYyBUSW50ZXJtT3BlcmF0b3IKICAgICBib29sIGdldEFkZEluZGV4Q2xhbXAoKSB7IHJl
dHVybiBtQWRkSW5kZXhDbGFtcDsgfQogCiAgIHByb3RlY3RlZDoKLSAgICBUSW50ZXJtVHlwZWQq
IG1MZWZ0OwotICAgIFRJbnRlcm1UeXBlZCogbVJpZ2h0OworICAgIFRJbnRlcm1UeXBlZCAqbUxl
ZnQ7CisgICAgVEludGVybVR5cGVkICptUmlnaHQ7CiAKICAgICAvLyBJZiBzZXQgdG8gdHJ1ZSwg
d3JhcCBhbnkgRU9wSW5kZXhJbmRpcmVjdCB3aXRoIGEgY2xhbXAgdG8gYm91bmRzLgogICAgIGJv
b2wgbUFkZEluZGV4Q2xhbXA7CkBAIC01MzQsMTAgKzUzNiwxMSBAQCBjbGFzcyBURnVuY3Rpb25T
eW1ib2xJbmZvCiB7CiAgIHB1YmxpYzoKICAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7
Ci0gICAgVEZ1bmN0aW9uU3ltYm9sSW5mbygpIDogbUlkKDApIHt9CisgICAgVEZ1bmN0aW9uU3lt
Ym9sSW5mbyhjb25zdCBUU3ltYm9sVW5pcXVlSWQgJmlkKTsKKyAgICBURnVuY3Rpb25TeW1ib2xJ
bmZvKCkgOiBtSWQobnVsbHB0cikge30KIAotICAgIFRGdW5jdGlvblN5bWJvbEluZm8oY29uc3Qg
VEZ1bmN0aW9uU3ltYm9sSW5mbyAmKSA9IGRlZmF1bHQ7Ci0gICAgVEZ1bmN0aW9uU3ltYm9sSW5m
byAmb3BlcmF0b3I9KGNvbnN0IFRGdW5jdGlvblN5bWJvbEluZm8gJikgPSBkZWZhdWx0OworICAg
IFRGdW5jdGlvblN5bWJvbEluZm8oY29uc3QgVEZ1bmN0aW9uU3ltYm9sSW5mbyAmaW5mbyk7Cisg
ICAgVEZ1bmN0aW9uU3ltYm9sSW5mbyAmb3BlcmF0b3I9KGNvbnN0IFRGdW5jdGlvblN5bWJvbElu
Zm8gJmluZm8pOwogCiAgICAgdm9pZCBzZXRGcm9tRnVuY3Rpb24oY29uc3QgVEZ1bmN0aW9uICZm
dW5jdGlvbik7CiAKQEAgLTU0Niw1OSArNTQ5LDI4IEBAIGNsYXNzIFRGdW5jdGlvblN5bWJvbElu
Zm8KIAogICAgIGNvbnN0IFRTdHJpbmcgJmdldE5hbWUoKSBjb25zdCB7IHJldHVybiBtTmFtZS5n
ZXRTdHJpbmcoKTsgfQogICAgIHZvaWQgc2V0TmFtZShjb25zdCBUU3RyaW5nICZuYW1lKSB7IG1O
YW1lLnNldFN0cmluZyhuYW1lKTsgfQotICAgIGJvb2wgaXNNYWluKCkgY29uc3QgeyByZXR1cm4g
bU5hbWUuZ2V0U3RyaW5nKCkgPT0gIm1haW4oIjsgfQotCi0gICAgdm9pZCBzZXRJZChpbnQgZnVu
Y3Rpb25JZCkgeyBtSWQgPSBmdW5jdGlvbklkOyB9Ci0gICAgaW50IGdldElkKCkgY29uc3QgeyBy
ZXR1cm4gbUlkOyB9Ci0gIHByaXZhdGU6Ci0gICAgVE5hbWUgbU5hbWU7Ci0gICAgaW50IG1JZDsK
LX07CisgICAgYm9vbCBpc01haW4oKSBjb25zdCB7IHJldHVybiBtTmFtZS5nZXRTdHJpbmcoKSA9
PSAibWFpbiI7IH0KIAotLy8gTm9kZSBmb3IgZnVuY3Rpb24gZGVmaW5pdGlvbnMuCi1jbGFzcyBU
SW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uIDogcHVibGljIFRJbnRlcm1UeXBlZAotewotICBwdWJs
aWM6Ci0gICAgLy8gVE9ETyhvZXR1YWhvQG52aWRpYS5jb20pOiBTZWUgaWYgVEZ1bmN0aW9uU3lt
Ym9sSW5mbyBjb3VsZCBiZSBhZGRlZCB0byBjb25zdHJ1Y3RvcgotICAgIC8vIHBhcmFtZXRlcnMu
Ci0gICAgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbihjb25zdCBUVHlwZSAmdHlwZSwgVEludGVy
bUFnZ3JlZ2F0ZSAqcGFyYW1ldGVycywgVEludGVybUJsb2NrICpib2R5KQotICAgICAgICA6IFRJ
bnRlcm1UeXBlZCh0eXBlKSwgbVBhcmFtZXRlcnMocGFyYW1ldGVycyksIG1Cb2R5KGJvZHkpCi0g
ICAgewotICAgICAgICBBU1NFUlQocGFyYW1ldGVycyAhPSBudWxscHRyKTsKLSAgICAgICAgQVNT
RVJUKGJvZHkgIT0gbnVsbHB0cik7Ci0gICAgfQotCi0gICAgVEludGVybUZ1bmN0aW9uRGVmaW5p
dGlvbiAqZ2V0QXNGdW5jdGlvbkRlZmluaXRpb24oKSBvdmVycmlkZSB7IHJldHVybiB0aGlzOyB9
Ci0gICAgdm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCByZXBsYWNlQ2hpbGROb2RlKFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUg
KnJlcGxhY2VtZW50KSBvdmVycmlkZTsKLQotICAgIFRJbnRlcm1UeXBlZCAqZGVlcENvcHkoKSBj
b25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIGJvb2wgaGFzU2lkZUVmZmVjdHMoKSBjb25zdCBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfQotCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAqZ2V0RnVuY3Rpb25QYXJhbWV0ZXJzKCkg
Y29uc3QgeyByZXR1cm4gbVBhcmFtZXRlcnM7IH0KLSAgICBUSW50ZXJtQmxvY2sgKmdldEJvZHko
KSBjb25zdCB7IHJldHVybiBtQm9keTsgfQotCi0gICAgVEZ1bmN0aW9uU3ltYm9sSW5mbyAqZ2V0
RnVuY3Rpb25TeW1ib2xJbmZvKCkgeyByZXR1cm4gJm1GdW5jdGlvbkluZm87IH0KLSAgICBjb25z
dCBURnVuY3Rpb25TeW1ib2xJbmZvICpnZXRGdW5jdGlvblN5bWJvbEluZm8oKSBjb25zdCB7IHJl
dHVybiAmbUZ1bmN0aW9uSW5mbzsgfQorICAgIHZvaWQgc2V0SWQoY29uc3QgVFN5bWJvbFVuaXF1
ZUlkICZmdW5jdGlvbklkKTsKKyAgICBjb25zdCBUU3ltYm9sVW5pcXVlSWQgJmdldElkKCkgY29u
c3Q7CiAKICAgcHJpdmF0ZToKLSAgICBUSW50ZXJtQWdncmVnYXRlICptUGFyYW1ldGVyczsKLSAg
ICBUSW50ZXJtQmxvY2sgKm1Cb2R5OwotCi0gICAgVEZ1bmN0aW9uU3ltYm9sSW5mbyBtRnVuY3Rp
b25JbmZvOworICAgIFROYW1lIG1OYW1lOworICAgIFRTeW1ib2xVbmlxdWVJZCAqbUlkOwogfTsK
IAogdHlwZWRlZiBUVmVjdG9yPFRJbnRlcm1Ob2RlICo+IFRJbnRlcm1TZXF1ZW5jZTsKIHR5cGVk
ZWYgVFZlY3RvcjxpbnQ+IFRRdWFsaWZpZXJMaXN0OwogCisvLworLy8gVGhpcyBpcyBqdXN0IHRv
IGhlbHAgeWFjYy4KKy8vCitzdHJ1Y3QgVEludGVybUZ1bmN0aW9uQ2FsbE9yTWV0aG9kCit7Cisg
ICAgVEludGVybVNlcXVlbmNlICphcmd1bWVudHM7CisgICAgVEludGVybU5vZGUgKnRoaXNOb2Rl
OworfTsKKwogLy8gSW50ZXJmYWNlIGZvciBub2RlIGNsYXNzZXMgdGhhdCBoYXZlIGFuIGFyYml0
cmFyaWx5IHNpemVkIHNldCBvZiBjaGlsZHJlbi4KIGNsYXNzIFRJbnRlcm1BZ2dyZWdhdGVCYXNl
CiB7CkBAIC02MjMsMjYgKzU5NSwyNyBAQCBjbGFzcyBUSW50ZXJtQWdncmVnYXRlQmFzZQogY2xh
c3MgVEludGVybUFnZ3JlZ2F0ZSA6IHB1YmxpYyBUSW50ZXJtT3BlcmF0b3IsIHB1YmxpYyBUSW50
ZXJtQWdncmVnYXRlQmFzZQogewogICBwdWJsaWM6Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSgpCi0g
ICAgICAgIDogVEludGVybU9wZXJhdG9yKEVPcE51bGwpLAotICAgICAgICAgIG1Vc2VyRGVmaW5l
ZChmYWxzZSksCi0gICAgICAgICAgbVVzZUVtdWxhdGVkRnVuY3Rpb24oZmFsc2UpLAotICAgICAg
ICAgIG1Hb3RQcmVjaXNpb25Gcm9tQ2hpbGRyZW4oZmFsc2UpCi0gICAgewotICAgIH0KLSAgICBU
SW50ZXJtQWdncmVnYXRlKFRPcGVyYXRvciBvcCkKLSAgICAgICAgOiBUSW50ZXJtT3BlcmF0b3Io
b3ApLAotICAgICAgICAgIG1Vc2VyRGVmaW5lZChmYWxzZSksCi0gICAgICAgICAgbVVzZUVtdWxh
dGVkRnVuY3Rpb24oZmFsc2UpLAotICAgICAgICAgIG1Hb3RQcmVjaXNpb25Gcm9tQ2hpbGRyZW4o
ZmFsc2UpCi0gICAgewotICAgIH0KLSAgICB+VEludGVybUFnZ3JlZ2F0ZSgpIHsgfQorICAgIHN0
YXRpYyBUSW50ZXJtQWdncmVnYXRlICpDcmVhdGVGdW5jdGlvbkNhbGwoY29uc3QgVEZ1bmN0aW9u
ICZmdW5jLCBUSW50ZXJtU2VxdWVuY2UgKmFyZ3VtZW50cyk7CisKKyAgICAvLyBJZiB1c2luZyB0
aGlzLCBlbnN1cmUgdGhhdCB0aGVyZSdzIGEgY29uc2lzdGVudCBmdW5jdGlvbiBkZWZpbml0aW9u
IHdpdGggdGhlIHNhbWUgc3ltYm9sIGlkCisgICAgLy8gYWRkZWQgdG8gdGhlIEFTVC4KKyAgICBz
dGF0aWMgVEludGVybUFnZ3JlZ2F0ZSAqQ3JlYXRlRnVuY3Rpb25DYWxsKGNvbnN0IFRUeXBlICZ0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVFN5bWJvbFVuaXF1ZUlkICZpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFROYW1lICZuYW1lLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVNlcXVlbmNlICphcmd1bWVudHMpOwor
CisgICAgc3RhdGljIFRJbnRlcm1BZ2dyZWdhdGUgKkNyZWF0ZUJ1aWx0SW5GdW5jdGlvbkNhbGwo
Y29uc3QgVEZ1bmN0aW9uICZmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzKTsKKyAgICBz
dGF0aWMgVEludGVybUFnZ3JlZ2F0ZSAqQ3JlYXRlQ29uc3RydWN0b3IoY29uc3QgVFR5cGUgJnR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRPcGVy
YXRvciBvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VEludGVybVNlcXVlbmNlICphcmd1bWVudHMpOworICAgIHN0YXRpYyBUSW50ZXJtQWdncmVnYXRl
ICpDcmVhdGUoY29uc3QgVFR5cGUgJnR5cGUsIFRPcGVyYXRvciBvcCwgVEludGVybVNlcXVlbmNl
ICphcmd1bWVudHMpOworICAgIH5USW50ZXJtQWdncmVnYXRlKCkge30KIAogICAgIC8vIE5vdGU6
IG9ubHkgc3VwcG9ydGVkIGZvciBub2RlcyB0aGF0IGNhbiBiZSBhIHBhcnQgb2YgYW4gZXhwcmVz
c2lvbi4KICAgICBUSW50ZXJtVHlwZWQgKmRlZXBDb3B5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbmV3IFRJbnRlcm1BZ2dyZWdhdGUoKnRoaXMpOyB9CiAKLSAgICB2b2lkIHNldE9wKFRPcGVy
YXRvciBvcCkgeyBtT3AgPSBvcDsgfQorICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnNoYWxsb3dDb3B5
KCkgY29uc3Q7CiAKICAgICBUSW50ZXJtQWdncmVnYXRlICpnZXRBc0FnZ3JlZ2F0ZSgpIG92ZXJy
aWRlIHsgcmV0dXJuIHRoaXM7IH0KICAgICB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIg
Kml0KSBvdmVycmlkZTsKQEAgLTY1MiwxOSArNjI1LDE0IEBAIGNsYXNzIFRJbnRlcm1BZ2dyZWdh
dGUgOiBwdWJsaWMgVEludGVybU9wZXJhdG9yLCBwdWJsaWMgVEludGVybUFnZ3JlZ2F0ZUJhc2UK
ICAgICBib29sIGhhc1NpZGVFZmZlY3RzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogICAgIFRJbnRlcm1UeXBlZCAqZm9sZChURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKTsKIAot
ICAgIFRJbnRlcm1TZXF1ZW5jZSAqZ2V0U2VxdWVuY2UoKSBvdmVycmlkZSB7IHJldHVybiAmbVNl
cXVlbmNlOyB9Ci0gICAgY29uc3QgVEludGVybVNlcXVlbmNlICpnZXRTZXF1ZW5jZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuICZtU2VxdWVuY2U7IH0KKyAgICBUSW50ZXJtU2VxdWVuY2UgKmdl
dFNlcXVlbmNlKCkgb3ZlcnJpZGUgeyByZXR1cm4gJm1Bcmd1bWVudHM7IH0KKyAgICBjb25zdCBU
SW50ZXJtU2VxdWVuY2UgKmdldFNlcXVlbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gJm1B
cmd1bWVudHM7IH0KIAotICAgIHZvaWQgc2V0VXNlckRlZmluZWQoKSB7IG1Vc2VyRGVmaW5lZCA9
IHRydWU7IH0KLSAgICBib29sIGlzVXNlckRlZmluZWQoKSBjb25zdCB7IHJldHVybiBtVXNlckRl
ZmluZWQ7IH0KKyAgICBUU3RyaW5nIGdldFN5bWJvbFRhYmxlTWFuZ2xlZE5hbWUoKSBjb25zdDsK
IAogICAgIHZvaWQgc2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpIHsgbVVzZUVtdWxhdGVkRnVuY3Rp
b24gPSB0cnVlOyB9CiAgICAgYm9vbCBnZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkgeyByZXR1cm4g
bVVzZUVtdWxhdGVkRnVuY3Rpb247IH0KIAotICAgIGJvb2wgYXJlQ2hpbGRyZW5Db25zdFF1YWxp
ZmllZCgpOwotICAgIHZvaWQgc2V0UHJlY2lzaW9uRnJvbUNoaWxkcmVuKCk7Ci0gICAgdm9pZCBz
ZXRCdWlsdEluRnVuY3Rpb25QcmVjaXNpb24oKTsKLQogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBj
aGFuZ2luZyBwYXJhbWV0ZXIgcHJlY2lzaW9uIG1heSBhZmZlY3QgdGhlIHJldHVybiB2YWx1ZS4K
ICAgICBib29sIGdvdFByZWNpc2lvbkZyb21DaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1Hb3RQ
cmVjaXNpb25Gcm9tQ2hpbGRyZW47IH0KIApAQCAtNjcyLDExICs2NDAsMTAgQEAgY2xhc3MgVElu
dGVybUFnZ3JlZ2F0ZSA6IHB1YmxpYyBUSW50ZXJtT3BlcmF0b3IsIHB1YmxpYyBUSW50ZXJtQWdn
cmVnYXRlQmFzZQogICAgIGNvbnN0IFRGdW5jdGlvblN5bWJvbEluZm8gKmdldEZ1bmN0aW9uU3lt
Ym9sSW5mbygpIGNvbnN0IHsgcmV0dXJuICZtRnVuY3Rpb25JbmZvOyB9CiAKICAgcHJvdGVjdGVk
OgotICAgIFRJbnRlcm1TZXF1ZW5jZSBtU2VxdWVuY2U7Ci0gICAgYm9vbCBtVXNlckRlZmluZWQ7
IC8vIHVzZWQgZm9yIHVzZXIgZGVmaW5lZCBmdW5jdGlvbiBuYW1lcworICAgIFRJbnRlcm1TZXF1
ZW5jZSBtQXJndW1lbnRzOwogCiAgICAgLy8gSWYgc2V0IHRvIHRydWUsIHJlcGxhY2UgdGhlIGJ1
aWx0LWluIGZ1bmN0aW9uIGNhbGwgd2l0aCBhbiBlbXVsYXRlZCBvbmUKLSAgICAvLyB0byB3b3Jr
IGFyb3VuZCBkcml2ZXIgYnVncy4KKyAgICAvLyB0byB3b3JrIGFyb3VuZCBkcml2ZXIgYnVncy4g
T25seSBmb3IgY2FsbHMgbWFwcGVkIHRvIG9wcyBvdGhlciB0aGFuIEVPcENhbGwqLgogICAgIGJv
b2wgbVVzZUVtdWxhdGVkRnVuY3Rpb247CiAKICAgICBib29sIG1Hb3RQcmVjaXNpb25Gcm9tQ2hp
bGRyZW47CkBAIC02ODQsNyArNjUxLDI0IEBAIGNsYXNzIFRJbnRlcm1BZ2dyZWdhdGUgOiBwdWJs
aWMgVEludGVybU9wZXJhdG9yLCBwdWJsaWMgVEludGVybUFnZ3JlZ2F0ZUJhc2UKICAgICBURnVu
Y3Rpb25TeW1ib2xJbmZvIG1GdW5jdGlvbkluZm87CiAKICAgcHJpdmF0ZToKKyAgICBUSW50ZXJt
QWdncmVnYXRlKGNvbnN0IFRUeXBlICZ0eXBlLCBUT3BlcmF0b3Igb3AsIFRJbnRlcm1TZXF1ZW5j
ZSAqYXJndW1lbnRzKTsKKwogICAgIFRJbnRlcm1BZ2dyZWdhdGUoY29uc3QgVEludGVybUFnZ3Jl
Z2F0ZSAmbm9kZSk7ICAvLyBub3RlOiBub3QgZGVsZXRlZCwganVzdCBwcml2YXRlIQorCisgICAg
dm9pZCBzZXRUeXBlUHJlY2lzaW9uQW5kUXVhbGlmaWVyKGNvbnN0IFRUeXBlICZ0eXBlKTsKKwor
ICAgIGJvb2wgYXJlQ2hpbGRyZW5Db25zdFF1YWxpZmllZCgpOworCisgICAgdm9pZCBzZXRQcmVj
aXNpb25Gcm9tQ2hpbGRyZW4oKTsKKworICAgIHZvaWQgc2V0UHJlY2lzaW9uRm9yQnVpbHRJbk9w
KCk7CisKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgcHJlY2lzaW9uIHdhcyBzZXQgYWNjb3JkaW5n
IHRvIHNwZWNpYWwgcnVsZXMgZm9yIHRoaXMgYnVpbHQtaW4uCisgICAgYm9vbCBzZXRQcmVjaXNp
b25Gb3JTcGVjaWFsQnVpbHRJbk9wKCk7CisKKyAgICAvLyBVc2VkIGZvciBidWlsdC1pbiBmdW5j
dGlvbnMgdW5kZXIgRU9wQ2FsbEJ1aWx0SW5GdW5jdGlvbi4gVGhlIGZ1bmN0aW9uIG5hbWUgaW4g
dGhlIHN5bWJvbAorICAgIC8vIGluZm8gbmVlZHMgdG8gYmUgc2V0IGJlZm9yZSBjYWxsaW5nIHRo
aXMuCisgICAgdm9pZCBzZXRCdWlsdEluRnVuY3Rpb25QcmVjaXNpb24oKTsKIH07CiAKIC8vIEEg
bGlzdCBvZiBzdGF0ZW1lbnRzLiBFaXRoZXIgdGhlIHJvb3Qgbm9kZSB3aGljaCBjb250YWlucyBk
ZWNsYXJhdGlvbnMgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zLApAQCAtNzA5LDYgKzY5MywxMTUg
QEAgY2xhc3MgVEludGVybUJsb2NrIDogcHVibGljIFRJbnRlcm1Ob2RlLCBwdWJsaWMgVEludGVy
bUFnZ3JlZ2F0ZUJhc2UKICAgICBUSW50ZXJtU2VxdWVuY2UgbVN0YXRlbWVudHM7CiB9OwogCisv
LyBGdW5jdGlvbiBwcm90b3R5cGUuIE1heSBiZSBpbiB0aGUgQVNUIGVpdGhlciBhcyBhIGZ1bmN0
aW9uIHByb3RvdHlwZSBkZWNsYXJhdGlvbiBvciBhcyBhIHBhcnQgb2YKKy8vIGEgZnVuY3Rpb24g
ZGVmaW5pdGlvbi4gVGhlIHR5cGUgb2YgdGhlIG5vZGUgaXMgdGhlIGZ1bmN0aW9uIHJldHVybiB0
eXBlLgorY2xhc3MgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlIDogcHVibGljIFRJbnRlcm1UeXBl
ZCwgcHVibGljIFRJbnRlcm1BZ2dyZWdhdGVCYXNlCit7CisgIHB1YmxpYzoKKyAgICAvLyBUT0RP
KG9ldHVhaG9AbnZpZGlhLmNvbSk6IFNlZSBpZiBURnVuY3Rpb25TeW1ib2xJbmZvIGNvdWxkIGJl
IGFkZGVkIHRvIGNvbnN0cnVjdG9yCisgICAgLy8gcGFyYW1ldGVycy4KKyAgICBUSW50ZXJtRnVu
Y3Rpb25Qcm90b3R5cGUoY29uc3QgVFR5cGUgJnR5cGUsIGNvbnN0IFRTeW1ib2xVbmlxdWVJZCAm
aWQpCisgICAgICAgIDogVEludGVybVR5cGVkKHR5cGUpLCBtRnVuY3Rpb25JbmZvKGlkKQorICAg
IHsKKyAgICB9CisgICAgflRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSgpIHt9CisKKyAgICBUSW50
ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKmdldEFzRnVuY3Rpb25Qcm90b3R5cGVOb2RlKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gdGhpczsgfQorICAgIHZvaWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAq
aXQpIG92ZXJyaWRlOworICAgIGJvb2wgcmVwbGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqb3Jp
Z2luYWwsIFRJbnRlcm1Ob2RlICpyZXBsYWNlbWVudCkgb3ZlcnJpZGU7CisKKyAgICBUSW50ZXJt
VHlwZWQgKmRlZXBDb3B5KCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBib29sIGhhc1NpZGVF
ZmZlY3RzKCkgY29uc3Qgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIE9ubHkgaW50ZW5kZWQgZm9yIGlu
aXRpYWxseSBidWlsZGluZyB0aGUgZGVjbGFyYXRpb24uCisgICAgdm9pZCBhcHBlbmRQYXJhbWV0
ZXIoVEludGVybVN5bWJvbCAqcGFyYW1ldGVyKTsKKworICAgIFRJbnRlcm1TZXF1ZW5jZSAqZ2V0
U2VxdWVuY2UoKSBvdmVycmlkZSB7IHJldHVybiAmbVBhcmFtZXRlcnM7IH0KKyAgICBjb25zdCBU
SW50ZXJtU2VxdWVuY2UgKmdldFNlcXVlbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gJm1Q
YXJhbWV0ZXJzOyB9CisKKyAgICBURnVuY3Rpb25TeW1ib2xJbmZvICpnZXRGdW5jdGlvblN5bWJv
bEluZm8oKSB7IHJldHVybiAmbUZ1bmN0aW9uSW5mbzsgfQorICAgIGNvbnN0IFRGdW5jdGlvblN5
bWJvbEluZm8gKmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpIGNvbnN0IHsgcmV0dXJuICZtRnVuY3Rp
b25JbmZvOyB9CisKKyAgcHJvdGVjdGVkOgorICAgIFRJbnRlcm1TZXF1ZW5jZSBtUGFyYW1ldGVy
czsKKworICAgIFRGdW5jdGlvblN5bWJvbEluZm8gbUZ1bmN0aW9uSW5mbzsKK307CisKKy8vIE5v
ZGUgZm9yIGZ1bmN0aW9uIGRlZmluaXRpb25zLiBUaGUgcHJvdG90eXBlIGNoaWxkIG5vZGUgc3Rv
cmVzIHRoZSBmdW5jdGlvbiBoZWFkZXIgaW5jbHVkaW5nCisvLyBwYXJhbWV0ZXJzLCBhbmQgdGhl
IGJvZHkgY2hpbGQgbm9kZSBzdG9yZXMgdGhlIGZ1bmN0aW9uIGJvZHkuCitjbGFzcyBUSW50ZXJt
RnVuY3Rpb25EZWZpbml0aW9uIDogcHVibGljIFRJbnRlcm1Ob2RlCit7CisgIHB1YmxpYzoKKyAg
ICBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uKFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAqcHJv
dG90eXBlLCBUSW50ZXJtQmxvY2sgKmJvZHkpCisgICAgICAgIDogVEludGVybU5vZGUoKSwgbVBy
b3RvdHlwZShwcm90b3R5cGUpLCBtQm9keShib2R5KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHBy
b3RvdHlwZSAhPSBudWxscHRyKTsKKyAgICAgICAgQVNTRVJUKGJvZHkgIT0gbnVsbHB0cik7Cisg
ICAgfQorCisgICAgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqZ2V0QXNGdW5jdGlvbkRlZmlu
aXRpb24oKSBvdmVycmlkZSB7IHJldHVybiB0aGlzOyB9CisgICAgdm9pZCB0cmF2ZXJzZShUSW50
ZXJtVHJhdmVyc2VyICppdCkgb3ZlcnJpZGU7CisgICAgYm9vbCByZXBsYWNlQ2hpbGROb2RlKFRJ
bnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KSBvdmVycmlkZTsK
KworICAgIFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAqZ2V0RnVuY3Rpb25Qcm90b3R5cGUoKSBj
b25zdCB7IHJldHVybiBtUHJvdG90eXBlOyB9CisgICAgVEludGVybUJsb2NrICpnZXRCb2R5KCkg
Y29uc3QgeyByZXR1cm4gbUJvZHk7IH0KKworICAgIGNvbnN0IFRGdW5jdGlvblN5bWJvbEluZm8g
KmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbVBy
b3RvdHlwZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCk7CisgICAgfQorCisgIHByaXZhdGU6Cisg
ICAgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlICptUHJvdG90eXBlOworICAgIFRJbnRlcm1CbG9j
ayAqbUJvZHk7Cit9OworCisvLyBTdHJ1Y3QsIGludGVyZmFjZSBibG9jayBvciB2YXJpYWJsZSBk
ZWNsYXJhdGlvbi4gQ2FuIGNvbnRhaW4gbXVsdGlwbGUgdmFyaWFibGUgZGVjbGFyYXRvcnMuCitj
bGFzcyBUSW50ZXJtRGVjbGFyYXRpb24gOiBwdWJsaWMgVEludGVybU5vZGUsIHB1YmxpYyBUSW50
ZXJtQWdncmVnYXRlQmFzZQoreworICBwdWJsaWM6CisgICAgVEludGVybURlY2xhcmF0aW9uKCkg
OiBUSW50ZXJtTm9kZSgpIHt9CisgICAgflRJbnRlcm1EZWNsYXJhdGlvbigpIHt9CisKKyAgICBU
SW50ZXJtRGVjbGFyYXRpb24gKmdldEFzRGVjbGFyYXRpb25Ob2RlKCkgb3ZlcnJpZGUgeyByZXR1
cm4gdGhpczsgfQorICAgIHZvaWQgdHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpIG92ZXJy
aWRlOworICAgIGJvb2wgcmVwbGFjZUNoaWxkTm9kZShUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJ
bnRlcm1Ob2RlICpyZXBsYWNlbWVudCkgb3ZlcnJpZGU7CisKKyAgICAvLyBPbmx5IGludGVuZGVk
IGZvciBpbml0aWFsbHkgYnVpbGRpbmcgdGhlIGRlY2xhcmF0aW9uLgorICAgIC8vIFRoZSBkZWNs
YXJhdG9yIG5vZGUgc2hvdWxkIGJlIGVpdGhlciBUSW50ZXJtU3ltYm9sIG9yIFRJbnRlcm1CaW5h
cnkgd2l0aCBvcCBzZXQgdG8KKyAgICAvLyBFT3BJbml0aWFsaXplLgorICAgIHZvaWQgYXBwZW5k
RGVjbGFyYXRvcihUSW50ZXJtVHlwZWQgKmRlY2xhcmF0b3IpOworCisgICAgVEludGVybVNlcXVl
bmNlICpnZXRTZXF1ZW5jZSgpIG92ZXJyaWRlIHsgcmV0dXJuICZtRGVjbGFyYXRvcnM7IH0KKyAg
ICBjb25zdCBUSW50ZXJtU2VxdWVuY2UgKmdldFNlcXVlbmNlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gJm1EZWNsYXJhdG9yczsgfQorICBwcm90ZWN0ZWQ6CisgICAgVEludGVybVNlcXVlbmNl
IG1EZWNsYXJhdG9yczsKK307CisKKy8vIFNwZWNpYWxpemVkIGRlY2xhcmF0aW9ucyBmb3IgYXR0
cmlidXRpbmcgaW52YXJpYW5jZS4KK2NsYXNzIFRJbnRlcm1JbnZhcmlhbnREZWNsYXJhdGlvbiA6
IHB1YmxpYyBUSW50ZXJtTm9kZQoreworICBwdWJsaWM6CisgICAgVEludGVybUludmFyaWFudERl
Y2xhcmF0aW9uKFRJbnRlcm1TeW1ib2wgKnN5bWJvbCwgY29uc3QgVFNvdXJjZUxvYyAmbGluZSk7
CisKKyAgICBUSW50ZXJtU3ltYm9sICpnZXRTeW1ib2woKSB7IHJldHVybiBtU3ltYm9sOyB9CisK
KyAgICB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KSBvdmVycmlkZTsKKyAgICBi
b29sIHJlcGxhY2VDaGlsZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAq
cmVwbGFjZW1lbnQpIG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgVEludGVybVN5bWJvbCAq
bVN5bWJvbDsKK307CisKIC8vIEZvciB0ZXJuYXJ5IG9wZXJhdG9ycyBsaWtlIGEgPyBiIDogYy4K
IGNsYXNzIFRJbnRlcm1UZXJuYXJ5IDogcHVibGljIFRJbnRlcm1UeXBlZAogewpAQCAtNzc3LDgg
Kzg3MCw3IEBAIGNsYXNzIFRJbnRlcm1Td2l0Y2ggOiBwdWJsaWMgVEludGVybU5vZGUKICAgICB9
CiAKICAgICB2b2lkIHRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KSBvdmVycmlkZTsKLSAg
ICBib29sIHJlcGxhY2VDaGlsZE5vZGUoCi0gICAgICAgIFRJbnRlcm1Ob2RlICpvcmlnaW5hbCwg
VEludGVybU5vZGUgKnJlcGxhY2VtZW50KSBvdmVycmlkZTsKKyAgICBib29sIHJlcGxhY2VDaGls
ZE5vZGUoVEludGVybU5vZGUgKm9yaWdpbmFsLCBUSW50ZXJtTm9kZSAqcmVwbGFjZW1lbnQpIG92
ZXJyaWRlOwogCiAgICAgVEludGVybVN3aXRjaCAqZ2V0QXNTd2l0Y2hOb2RlKCkgb3ZlcnJpZGUg
eyByZXR1cm4gdGhpczsgfQogCkBAIC03OTcsMTUgKzg4OSwxMCBAQCBjbGFzcyBUSW50ZXJtU3dp
dGNoIDogcHVibGljIFRJbnRlcm1Ob2RlCiBjbGFzcyBUSW50ZXJtQ2FzZSA6IHB1YmxpYyBUSW50
ZXJtTm9kZQogewogICBwdWJsaWM6Ci0gICAgVEludGVybUNhc2UoVEludGVybVR5cGVkICpjb25k
aXRpb24pCi0gICAgICAgIDogVEludGVybU5vZGUoKSwKLSAgICAgICAgICBtQ29uZGl0aW9uKGNv
bmRpdGlvbikKLSAgICB7Ci0gICAgfQorICAgIFRJbnRlcm1DYXNlKFRJbnRlcm1UeXBlZCAqY29u
ZGl0aW9uKSA6IFRJbnRlcm1Ob2RlKCksIG1Db25kaXRpb24oY29uZGl0aW9uKSB7fQogCiAgICAg
dm9pZCB0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBy
ZXBsYWNlQ2hpbGROb2RlKAotICAgICAgICBUSW50ZXJtTm9kZSAqb3JpZ2luYWwsIFRJbnRlcm1O
b2RlICpyZXBsYWNlbWVudCkgb3ZlcnJpZGU7CisgICAgYm9vbCByZXBsYWNlQ2hpbGROb2RlKFRJ
bnRlcm1Ob2RlICpvcmlnaW5hbCwgVEludGVybU5vZGUgKnJlcGxhY2VtZW50KSBvdmVycmlkZTsK
IAogICAgIFRJbnRlcm1DYXNlICpnZXRBc0Nhc2VOb2RlKCkgb3ZlcnJpZGUgeyByZXR1cm4gdGhp
czsgfQogCkBAIC04NTEsMTIgKzkzOCwyMSBAQCBjbGFzcyBUSW50ZXJtVHJhdmVyc2VyIDogYW5n
bGU6Ok5vbkNvcHlhYmxlCiAgICAgdmlydHVhbCBib29sIHZpc2l0SWZFbHNlKFZpc2l0IHZpc2l0
LCBUSW50ZXJtSWZFbHNlICpub2RlKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29s
IHZpc2l0U3dpdGNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtU3dpdGNoICpub2RlKSB7IHJldHVybiB0
cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHZpc2l0Q2FzZShWaXNpdCB2aXNpdCwgVEludGVybUNh
c2UgKm5vZGUpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdmlzaXRGdW5jdGlv
blByb3RvdHlwZShWaXNpdCB2aXNpdCwgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlICpub2RlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogICAgIHZpcnR1YWwgYm9vbCB2aXNp
dEZ1bmN0aW9uRGVmaW5pdGlvbihWaXNpdCB2aXNpdCwgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlv
biAqbm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICB2aXJ0dWFs
IGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUp
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgdmlzaXRCbG9jayhWaXNpdCB2aXNp
dCwgVEludGVybUJsb2NrICpub2RlKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29s
IHZpc2l0SW52YXJpYW50RGVjbGFyYXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1JbnZhcmlhbnRE
ZWNsYXJhdGlvbiAqbm9kZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICB2aXJ0dWFsIGJvb2wgdmlzaXREZWNsYXJhdGlvbihWaXNpdCB2aXNpdCwgVEludGVybURlY2xh
cmF0aW9uICpub2RlKSB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHZpc2l0TG9v
cChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AgKm5vZGUpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2
aXJ0dWFsIGJvb2wgdmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2ggKm5vZGUp
IHsgcmV0dXJuIHRydWU7IH0KIApAQCAtODczLDkgKzk2OSwxMiBAQCBjbGFzcyBUSW50ZXJtVHJh
dmVyc2VyIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlSWZF
bHNlKFRJbnRlcm1JZkVsc2UgKm5vZGUpOwogICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZVN3aXRj
aChUSW50ZXJtU3dpdGNoICpub2RlKTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2VDYXNlKFRJ
bnRlcm1DYXNlICpub2RlKTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2VGdW5jdGlvblByb3Rv
dHlwZShUSW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKm5vZGUpOwogICAgIHZpcnR1YWwgdm9pZCB0
cmF2ZXJzZUZ1bmN0aW9uRGVmaW5pdGlvbihUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2Rl
KTsKICAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2VBZ2dyZWdhdGUoVEludGVybUFnZ3JlZ2F0ZSAq
bm9kZSk7CiAgICAgdmlydHVhbCB2b2lkIHRyYXZlcnNlQmxvY2soVEludGVybUJsb2NrICpub2Rl
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJhdmVyc2VJbnZhcmlhbnREZWNsYXJhdGlvbihUSW50ZXJt
SW52YXJpYW50RGVjbGFyYXRpb24gKm5vZGUpOworICAgIHZpcnR1YWwgdm9pZCB0cmF2ZXJzZURl
Y2xhcmF0aW9uKFRJbnRlcm1EZWNsYXJhdGlvbiAqbm9kZSk7CiAgICAgdmlydHVhbCB2b2lkIHRy
YXZlcnNlTG9vcChUSW50ZXJtTG9vcCAqbm9kZSk7CiAgICAgdmlydHVhbCB2b2lkIHRyYXZlcnNl
QnJhbmNoKFRJbnRlcm1CcmFuY2ggKm5vZGUpOwogCkBAIC04OTMsNyArOTkyLDIyIEBAIGNsYXNz
IFRJbnRlcm1UcmF2ZXJzZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAvLyBTdGFydCBjcmVh
dGluZyB0ZW1wb3Jhcnkgc3ltYm9scyBmcm9tIHRoZSBnaXZlbiB0ZW1wb3Jhcnkgc3ltYm9sIGlu
ZGV4ICsgMS4KICAgICB2b2lkIHVzZVRlbXBvcmFyeUluZGV4KHVuc2lnbmVkIGludCAqdGVtcG9y
YXJ5SW5kZXgpOwogCisgICAgc3RhdGljIFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAqQ3JlYXRl
SW50ZXJuYWxGdW5jdGlvblByb3RvdHlwZU5vZGUoCisgICAgICAgIGNvbnN0IFRUeXBlICZyZXR1
cm5UeXBlLAorICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICBjb25zdCBUU3ltYm9s
VW5pcXVlSWQgJmZ1bmN0aW9uSWQpOworICAgIHN0YXRpYyBUSW50ZXJtRnVuY3Rpb25EZWZpbml0
aW9uICpDcmVhdGVJbnRlcm5hbEZ1bmN0aW9uRGVmaW5pdGlvbk5vZGUoCisgICAgICAgIGNvbnN0
IFRUeXBlICZyZXR1cm5UeXBlLAorICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICBU
SW50ZXJtQmxvY2sgKmZ1bmN0aW9uQm9keSwKKyAgICAgICAgY29uc3QgVFN5bWJvbFVuaXF1ZUlk
ICZmdW5jdGlvbklkKTsKKyAgICBzdGF0aWMgVEludGVybUFnZ3JlZ2F0ZSAqQ3JlYXRlSW50ZXJu
YWxGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IFRUeXBlICZyZXR1cm5UeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2xVbmlxdWVJZCAmZnVuY3Rpb25JZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRl
cm1TZXF1ZW5jZSAqYXJndW1lbnRzKTsKKwogICBwcm90ZWN0ZWQ6CisgICAgLy8gU2hvdWxkIG9u
bHkgYmUgY2FsbGVkIGZyb20gdHJhdmVyc2UqKCkgZnVuY3Rpb25zCiAgICAgdm9pZCBpbmNyZW1l
bnREZXB0aChUSW50ZXJtTm9kZSAqY3VycmVudCkKICAgICB7CiAgICAgICAgIG1EZXB0aCsrOwpA
QCAtOTAxLDIzICsxMDE1LDM1IEBAIGNsYXNzIFRJbnRlcm1UcmF2ZXJzZXIgOiBhbmdsZTo6Tm9u
Q29weWFibGUKICAgICAgICAgbVBhdGgucHVzaF9iYWNrKGN1cnJlbnQpOwogICAgIH0KIAorICAg
IC8vIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHRyYXZlcnNlKigpIGZ1bmN0aW9ucwogICAg
IHZvaWQgZGVjcmVtZW50RGVwdGgoKQogICAgIHsKICAgICAgICAgbURlcHRoLS07CiAgICAgICAg
IG1QYXRoLnBvcF9iYWNrKCk7CiAgICAgfQogCi0gICAgVEludGVybU5vZGUgKmdldFBhcmVudE5v
ZGUoKQorICAgIC8vIFJBSUkgaGVscGVyIGZvciBpbmNyZW1lbnREZXB0aC9kZWNyZW1lbnREZXB0
aAorICAgIGNsYXNzIFNjb3BlZE5vZGVJblRyYXZlcnNhbFBhdGgKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtUGF0aC5zaXplKCkgPT0gMCA/IE5VTEwgOiBtUGF0aC5iYWNrKCk7Ci0gICAgfQorICAg
ICAgcHVibGljOgorICAgICAgICBTY29wZWROb2RlSW5UcmF2ZXJzYWxQYXRoKFRJbnRlcm1UcmF2
ZXJzZXIgKnRyYXZlcnNlciwgVEludGVybU5vZGUgKmN1cnJlbnQpCisgICAgICAgICAgICA6IG1U
cmF2ZXJzZXIodHJhdmVyc2VyKQorICAgICAgICB7CisgICAgICAgICAgICBtVHJhdmVyc2VyLT5p
bmNyZW1lbnREZXB0aChjdXJyZW50KTsKKyAgICAgICAgfQorICAgICAgICB+U2NvcGVkTm9kZUlu
VHJhdmVyc2FsUGF0aCgpIHsgbVRyYXZlcnNlci0+ZGVjcmVtZW50RGVwdGgoKTsgfQorICAgICAg
cHJpdmF0ZToKKyAgICAgICAgVEludGVybVRyYXZlcnNlciAqbVRyYXZlcnNlcjsKKyAgICB9Owor
CisgICAgVEludGVybU5vZGUgKmdldFBhcmVudE5vZGUoKSB7IHJldHVybiBtUGF0aC5zaXplKCkg
PD0gMSA/IG51bGxwdHIgOiBtUGF0aFttUGF0aC5zaXplKCkgLSAydV07IH0KIAogICAgIC8vIFJl
dHVybiB0aGUgbnRoIGFuY2VzdG9yIG9mIHRoZSBub2RlIGJlaW5nIHRyYXZlcnNlZC4gZ2V0QW5j
ZXN0b3JOb2RlKDApID09IGdldFBhcmVudE5vZGUoKQogICAgIFRJbnRlcm1Ob2RlICpnZXRBbmNl
c3Rvck5vZGUodW5zaWduZWQgaW50IG4pCiAgICAgewotICAgICAgICBpZiAobVBhdGguc2l6ZSgp
ID4gbikKKyAgICAgICAgaWYgKG1QYXRoLnNpemUoKSA+IG4gKyAxdSkKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIG1QYXRoW21QYXRoLnNpemUoKSAtIG4gLSAxdV07CisgICAgICAgICAg
ICByZXR1cm4gbVBhdGhbbVBhdGguc2l6ZSgpIC0gbiAtIDJ1XTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBAIC05MjYsMTEgKzEwNTIsNiBAQCBjbGFzcyBUSW50
ZXJtVHJhdmVyc2VyIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdm9pZCBpbmNyZW1lbnRQYXJl
bnRCbG9ja1BvcygpOwogICAgIHZvaWQgcG9wUGFyZW50QmxvY2soKTsKIAotICAgIGJvb2wgcGFy
ZW50Tm9kZUlzQmxvY2soKQotICAgIHsKLSAgICAgICAgcmV0dXJuICFtUGFyZW50QmxvY2tTdGFj
ay5lbXB0eSgpICYmIGdldFBhcmVudE5vZGUoKSA9PSBtUGFyZW50QmxvY2tTdGFjay5iYWNrKCku
bm9kZTsKLSAgICB9Ci0KICAgICAvLyBUbyByZXBsYWNlIGEgc2luZ2xlIG5vZGUgd2l0aCBtdWx0
aXBsZSBub2RlcyBvbiB0aGUgcGFyZW50IGFnZ3JlZ2F0ZSBub2RlCiAgICAgc3RydWN0IE5vZGVS
ZXBsYWNlV2l0aE11bHRpcGxlRW50cnkKICAgICB7CkBAIC05NjYsMTAgKzEwODcsMTIgQEAgY2xh
c3MgVEludGVybVRyYXZlcnNlciA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICBUSW50ZXJt
U2VxdWVuY2UgaW5zZXJ0aW9uc0FmdGVyOwogICAgIH07CiAKLSAgICAvLyBIZWxwZXIgdG8gaW5z
ZXJ0IHN0YXRlbWVudHMgaW4gdGhlIHBhcmVudCBibG9jayAoc2VxdWVuY2UpIG9mIHRoZSBub2Rl
IGN1cnJlbnRseSBiZWluZyB0cmF2ZXJzZWQuCisgICAgLy8gSGVscGVyIHRvIGluc2VydCBzdGF0
ZW1lbnRzIGluIHRoZSBwYXJlbnQgYmxvY2sgKHNlcXVlbmNlKSBvZiB0aGUgbm9kZSBjdXJyZW50
bHkgYmVpbmcKKyAgICAvLyB0cmF2ZXJzZWQuCiAgICAgLy8gVGhlIHN0YXRlbWVudHMgd2lsbCBi
ZSBpbnNlcnRlZCBiZWZvcmUgdGhlIG5vZGUgYmVpbmcgdHJhdmVyc2VkIG9uY2UgdXBkYXRlVHJl
ZSBpcyBjYWxsZWQuCiAgICAgLy8gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGR1cmluZyBQcmVWaXNp
dCBvciBQb3N0VmlzaXQgZnJvbSBzZXF1ZW5jZSBub2Rlcy4KLSAgICAvLyBOb3RlIHRoYXQgaW5z
ZXJ0aW5nIG1vcmUgdGhhbiBvbmUgc2V0IG9mIG5vZGVzIHRvIHRoZSBzYW1lIHBhcmVudCBub2Rl
IG9uIGEgc2luZ2xlIHVwZGF0ZVRyZWUgY2FsbCBpcyBub3QKKyAgICAvLyBOb3RlIHRoYXQgaW5z
ZXJ0aW5nIG1vcmUgdGhhbiBvbmUgc2V0IG9mIG5vZGVzIHRvIHRoZSBzYW1lIHBhcmVudCBub2Rl
IG9uIGEgc2luZ2xlIHVwZGF0ZVRyZWUKKyAgICAvLyBjYWxsIGlzIG5vdAogICAgIC8vIHN1cHBv
cnRlZC4KICAgICB2b2lkIGluc2VydFN0YXRlbWVudHNJblBhcmVudEJsb2NrKGNvbnN0IFRJbnRl
cm1TZXF1ZW5jZSAmaW5zZXJ0aW9ucyk7CiAKQEAgLTk4NiwxMSArMTEwOSwxMiBAQCBjbGFzcyBU
SW50ZXJtVHJhdmVyc2VyIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgLy8gSGVscGVyIHRvIGNy
ZWF0ZSBhIHRlbXBvcmFyeSBzeW1ib2wgbm9kZS4KICAgICBUSW50ZXJtU3ltYm9sICpjcmVhdGVU
ZW1wU3ltYm9sKGNvbnN0IFRUeXBlICZ0eXBlKTsKICAgICAvLyBDcmVhdGUgYSBub2RlIHRoYXQg
ZGVjbGFyZXMgYnV0IGRvZXNuJ3QgaW5pdGlhbGl6ZSBhIHRlbXBvcmFyeSBzeW1ib2wuCi0gICAg
VEludGVybUFnZ3JlZ2F0ZSAqY3JlYXRlVGVtcERlY2xhcmF0aW9uKGNvbnN0IFRUeXBlICZ0eXBl
KTsKLSAgICAvLyBDcmVhdGUgYSBub2RlIHRoYXQgaW5pdGlhbGl6ZXMgdGhlIGN1cnJlbnQgdGVt
cG9yYXJ5IHN5bWJvbCB3aXRoIGluaXRpYWxpemVyIGhhdmluZyB0aGUgZ2l2ZW4gcXVhbGlmaWVy
LgotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmNyZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24oVEludGVy
bVR5cGVkICppbml0aWFsaXplciwgVFF1YWxpZmllciBxdWFsaWZpZXIpOworICAgIFRJbnRlcm1E
ZWNsYXJhdGlvbiAqY3JlYXRlVGVtcERlY2xhcmF0aW9uKGNvbnN0IFRUeXBlICZ0eXBlKTsKKyAg
ICAvLyBDcmVhdGUgYSBub2RlIHRoYXQgaW5pdGlhbGl6ZXMgdGhlIGN1cnJlbnQgdGVtcG9yYXJ5
IHN5bWJvbCB3aXRoIGluaXRpYWxpemVyIGhhdmluZyB0aGUgZ2l2ZW4KKyAgICAvLyBxdWFsaWZp
ZXIuCisgICAgVEludGVybURlY2xhcmF0aW9uICpjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKFRJ
bnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIsIFRRdWFsaWZpZXIgcXVhbGlmaWVyKTsKICAgICAvLyBD
cmVhdGUgYSBub2RlIHRoYXQgaW5pdGlhbGl6ZXMgdGhlIGN1cnJlbnQgdGVtcG9yYXJ5IHN5bWJv
bCB3aXRoIGluaXRpYWxpemVyLgotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmNyZWF0ZVRlbXBJbml0
RGVjbGFyYXRpb24oVEludGVybVR5cGVkICppbml0aWFsaXplcik7CisgICAgVEludGVybURlY2xh
cmF0aW9uICpjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6
ZXIpOwogICAgIC8vIENyZWF0ZSBhIG5vZGUgdGhhdCBhc3NpZ25zIHJpZ2h0Tm9kZSB0byB0aGUg
Y3VycmVudCB0ZW1wb3Jhcnkgc3ltYm9sLgogICAgIFRJbnRlcm1CaW5hcnkgKmNyZWF0ZVRlbXBB
c3NpZ25tZW50KFRJbnRlcm1UeXBlZCAqcmlnaHROb2RlKTsKICAgICAvLyBJbmNyZW1lbnQgdGVt
cG9yYXJ5IHN5bWJvbCBpbmRleC4KQEAgLTEwMTgsOSArMTE0Miw2IEBAIGNsYXNzIFRJbnRlcm1U
cmF2ZXJzZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBpbnQgbURlcHRoOwogICAgIGludCBt
TWF4RGVwdGg7CiAKLSAgICAvLyBBbGwgdGhlIG5vZGVzIGZyb20gcm9vdCB0byB0aGUgY3VycmVu
dCBub2RlJ3MgcGFyZW50IGR1cmluZyB0cmF2ZXJzaW5nLgotICAgIFRWZWN0b3I8VEludGVybU5v
ZGUgKj4gbVBhdGg7Ci0KICAgICBib29sIG1Jbkdsb2JhbFNjb3BlOwogCiAgICAgLy8gRHVyaW5n
IHRyYXZlcnNpbmcsIHNhdmUgYWxsIHRoZSBjaGFuZ2VzIHRoYXQgbmVlZCB0byBoYXBwZW4gaW50
bwpAQCAtMTAzMCw2ICsxMTUxLDggQEAgY2xhc3MgVEludGVybVRyYXZlcnNlciA6IGFuZ2xlOjpO
b25Db3B5YWJsZQogICAgIHN0ZDo6dmVjdG9yPE5vZGVJbnNlcnRNdWx0aXBsZUVudHJ5PiBtSW5z
ZXJ0aW9uczsKIAogICBwcml2YXRlOgorICAgIHN0YXRpYyBUTmFtZSBHZXRJbnRlcm5hbEZ1bmN0
aW9uTmFtZShjb25zdCBjaGFyICpuYW1lKTsKKwogICAgIC8vIFRvIHJlcGxhY2UgYSBzaW5nbGUg
bm9kZSB3aXRoIGFub3RoZXIgb24gdGhlIHBhcmVudCBub2RlCiAgICAgc3RydWN0IE5vZGVVcGRh
dGVFbnRyeQogICAgIHsKQEAgLTEwNjMsNiArMTE4Niw5IEBAIGNsYXNzIFRJbnRlcm1UcmF2ZXJz
ZXIgOiBhbmdsZTo6Tm9uQ29weWFibGUKIAogICAgIHN0ZDo6dmVjdG9yPE5vZGVVcGRhdGVFbnRy
eT4gbVJlcGxhY2VtZW50czsKIAorICAgIC8vIEFsbCB0aGUgbm9kZXMgZnJvbSByb290IHRvIHRo
ZSBjdXJyZW50IG5vZGUgZHVyaW5nIHRyYXZlcnNpbmcuCisgICAgVFZlY3RvcjxUSW50ZXJtTm9k
ZSAqPiBtUGF0aDsKKwogICAgIC8vIEFsbCB0aGUgY29kZSBibG9ja3MgZnJvbSB0aGUgcm9vdCB0
byB0aGUgY3VycmVudCBub2RlJ3MgcGFyZW50IGR1cmluZyB0cmF2ZXJzYWwuCiAgICAgc3RkOjp2
ZWN0b3I8UGFyZW50QmxvY2s+IG1QYXJlbnRCbG9ja1N0YWNrOwogCkBAIC0xMDkwLDcgKzEyMTYs
NyBAQCBjbGFzcyBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXIgOiBwdWJsaWMgVEludGVybVRyYXZl
cnNlcgogCiAgICAgdm9pZCB0cmF2ZXJzZUJpbmFyeShUSW50ZXJtQmluYXJ5ICpub2RlKSBmaW5h
bDsKICAgICB2b2lkIHRyYXZlcnNlVW5hcnkoVEludGVybVVuYXJ5ICpub2RlKSBmaW5hbDsKLSAg
ICB2b2lkIHRyYXZlcnNlRnVuY3Rpb25EZWZpbml0aW9uKFRJbnRlcm1GdW5jdGlvbkRlZmluaXRp
b24gKm5vZGUpIGZpbmFsOworICAgIHZvaWQgdHJhdmVyc2VGdW5jdGlvblByb3RvdHlwZShUSW50
ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKm5vZGUpIGZpbmFsOwogICAgIHZvaWQgdHJhdmVyc2VBZ2dy
ZWdhdGUoVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgZmluYWw7CiAKICAgcHJvdGVjdGVkOgpAQCAt
MTA5OSwxMCArMTIyNSw2IEBAIGNsYXNzIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlciA6IHB1Ymxp
YyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgICAgIHJldHVybiBtT3BlcmF0b3JSZXF1aXJlc0xWYWx1
ZSB8fCBtSW5GdW5jdGlvbkNhbGxPdXRQYXJhbWV0ZXI7CiAgICAgfQogCi0gICAgLy8gUmV0dXJu
IHRydWUgaWYgdGhlIHByb3RvdHlwZSBvciBkZWZpbml0aW9uIG9mIHRoZSBmdW5jdGlvbiBiZWlu
ZyBjYWxsZWQgaGFzIGJlZW4gZW5jb3VudGVyZWQKLSAgICAvLyBkdXJpbmcgdHJhdmVyc2FsLgot
ICAgIGJvb2wgaXNJbkZ1bmN0aW9uTWFwKGNvbnN0IFRJbnRlcm1BZ2dyZWdhdGUgKmNhbGxOb2Rl
KSBjb25zdDsKLQogICBwcml2YXRlOgogICAgIC8vIFRyYWNrIHdoZXRoZXIgYW4gbC12YWx1ZSBp
cyByZXF1aXJlZCBpbiB0aGUgbm9kZSB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyB0cmF2ZXJzZWQg
YnkgdGhlCiAgICAgLy8gc3Vycm91bmRpbmcgb3BlcmF0b3IuCkBAIC0xMTE0LDcgKzEyMzYsMTEg
QEAgY2xhc3MgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyIDogcHVibGljIFRJbnRlcm1UcmF2ZXJz
ZXIKICAgICBib29sIG9wZXJhdG9yUmVxdWlyZXNMVmFsdWUoKSBjb25zdCB7IHJldHVybiBtT3Bl
cmF0b3JSZXF1aXJlc0xWYWx1ZTsgfQogCiAgICAgLy8gQWRkIGEgZnVuY3Rpb24gZW5jb3VudGVy
ZWQgZHVyaW5nIHRyYXZlcnNhbCB0byB0aGUgZnVuY3Rpb24gbWFwLgotICAgIHZvaWQgYWRkVG9G
dW5jdGlvbk1hcChjb25zdCBUTmFtZSAmbmFtZSwgVEludGVybVNlcXVlbmNlICpwYXJhbVNlcXVl
bmNlKTsKKyAgICB2b2lkIGFkZFRvRnVuY3Rpb25NYXAoY29uc3QgVFN5bWJvbFVuaXF1ZUlkICZp
ZCwgVEludGVybVNlcXVlbmNlICpwYXJhbVNlcXVlbmNlKTsKKworICAgIC8vIFJldHVybiB0cnVl
IGlmIHRoZSBwcm90b3R5cGUgb3IgZGVmaW5pdGlvbiBvZiB0aGUgZnVuY3Rpb24gYmVpbmcgY2Fs
bGVkIGhhcyBiZWVuIGVuY291bnRlcmVkCisgICAgLy8gZHVyaW5nIHRyYXZlcnNhbC4KKyAgICBi
b29sIGlzSW5GdW5jdGlvbk1hcChjb25zdCBUSW50ZXJtQWdncmVnYXRlICpjYWxsTm9kZSkgY29u
c3Q7CiAKICAgICAvLyBSZXR1cm4gdGhlIHBhcmFtZXRlcnMgc2VxdWVuY2UgZnJvbSB0aGUgZnVu
Y3Rpb24gZGVmaW5pdGlvbiBvciBwcm90b3R5cGUuCiAgICAgVEludGVybVNlcXVlbmNlICpnZXRG
dW5jdGlvblBhcmFtZXRlcnMoY29uc3QgVEludGVybUFnZ3JlZ2F0ZSAqY2FsbE5vZGUpOwpAQCAt
MTEyNiwyMCArMTI1Miw4IEBAIGNsYXNzIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlciA6IHB1Ymxp
YyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgYm9vbCBtT3BlcmF0b3JSZXF1aXJlc0xWYWx1ZTsKICAg
ICBib29sIG1JbkZ1bmN0aW9uQ2FsbE91dFBhcmFtZXRlcjsKIAotICAgIHN0cnVjdCBUTmFtZUNv
bXBhcmF0b3IKLSAgICB7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBUTmFtZSAmYSwg
Y29uc3QgVE5hbWUgJmIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGludCBjb21wYXJl
UmVzdWx0ID0gYS5nZXRTdHJpbmcoKS5jb21wYXJlKGIuZ2V0U3RyaW5nKCkpOwotICAgICAgICAg
ICAgaWYgKGNvbXBhcmVSZXN1bHQgIT0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gY29tcGFy
ZVJlc3VsdCA8IDA7Ci0gICAgICAgICAgICAvLyBJbnRlcm5hbCBmdW5jdGlvbnMgbWF5IGhhdmUg
c2FtZSBuYW1lcyBhcyBub24taW50ZXJuYWwgZnVuY3Rpb25zLgotICAgICAgICAgICAgcmV0dXJu
ICFhLmlzSW50ZXJuYWwoKSAmJiBiLmlzSW50ZXJuYWwoKTsKLSAgICAgICAgfQotICAgIH07Ci0K
LSAgICAvLyBNYXAgZnJvbSBtYW5nbGVkIGZ1bmN0aW9uIG5hbWVzIHRvIHRoZWlyIHBhcmFtZXRl
ciBzZXF1ZW5jZXMKLSAgICBUTWFwPFROYW1lLCBUSW50ZXJtU2VxdWVuY2UgKiwgVE5hbWVDb21w
YXJhdG9yPiBtRnVuY3Rpb25NYXA7CisgICAgLy8gTWFwIGZyb20gZnVuY3Rpb24gc3ltYm9sIGlk
IHZhbHVlcyB0byB0aGVpciBwYXJhbWV0ZXIgc2VxdWVuY2VzCisgICAgVE1hcDxpbnQsIFRJbnRl
cm1TZXF1ZW5jZSAqPiBtRnVuY3Rpb25NYXA7CiAKICAgICBjb25zdCBUU3ltYm9sVGFibGUgJm1T
eW1ib2xUYWJsZTsKICAgICBjb25zdCBpbnQgbVNoYWRlclZlcnNpb247CkBAIC0xMTU0LDggKzEy
NjgsOSBAQCBjbGFzcyBUTWF4RGVwdGhUcmF2ZXJzZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNl
cgogICBwdWJsaWM6CiAgICAgUE9PTF9BTExPQ0FUT1JfTkVXX0RFTEVURSgpOwogICAgIFRNYXhE
ZXB0aFRyYXZlcnNlcihpbnQgZGVwdGhMaW1pdCkKLSAgICAgICAgOiBUSW50ZXJtVHJhdmVyc2Vy
KHRydWUsIHRydWUsIGZhbHNlKSwKLSAgICAgICAgICBtRGVwdGhMaW1pdChkZXB0aExpbWl0KSB7
IH0KKyAgICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIHRydWUsIGZhbHNlKSwgbURlcHRo
TGltaXQoZGVwdGhMaW1pdCkKKyAgICB7CisgICAgfQogCiAgICAgYm9vbCB2aXNpdEJpbmFyeShW
aXNpdCwgVEludGVybUJpbmFyeSAqKSBvdmVycmlkZSB7IHJldHVybiBkZXB0aENoZWNrKCk7IH0K
ICAgICBib29sIHZpc2l0VW5hcnkoVmlzaXQsIFRJbnRlcm1VbmFyeSAqKSBvdmVycmlkZSB7IHJl
dHVybiBkZXB0aENoZWNrKCk7IH0KQEAgLTExNzIsNCArMTI4Nyw2IEBAIGNsYXNzIFRNYXhEZXB0
aFRyYXZlcnNlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgaW50IG1EZXB0aExpbWl0
OwogfTsKIAorfSAgLy8gbmFtZXNwYWNlIHNoCisKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNM
QVRPUl9JTlRFUk1OT0RFX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZVBh
dHRlcm5NYXRjaGVyLmNwcAppbmRleCA0MTc3YjA1YWNiNy4uYmMwODQ3ZDUyM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ludGVy
bU5vZGVQYXR0ZXJuTWF0Y2hlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyLmNwcApAQCAtMTIs
NiArMTIsOSBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgi
CiAKK25hbWVzcGFjZSBzaAoreworCiBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXI6OkludGVybU5v
ZGVQYXR0ZXJuTWF0Y2hlcihjb25zdCB1bnNpZ25lZCBpbnQgbWFzaykgOiBtTWFzayhtYXNrKQog
ewogfQpAQCAtODQsOCArODcsNyBAQCBib29sIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlcjo6bWF0
Y2goVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSwgVEludGVybU5vZGUgKnBhcmVudAogICAgICAgICAg
ICAgICAgICAocGFyZW50QmluYXJ5LT5nZXRPcCgpID09IEVPcEFzc2lnbiB8fCBwYXJlbnRCaW5h
cnktPmdldE9wKCkgPT0gRU9wSW5pdGlhbGl6ZSkpOwogCiAgICAgICAgICAgICBpZiAobm9kZS0+
Z2V0VHlwZSgpLmlzQXJyYXkoKSAmJiAhcGFyZW50SXNBc3NpZ25tZW50ICYmCi0gICAgICAgICAg
ICAgICAgKG5vZGUtPmlzQ29uc3RydWN0b3IoKSB8fCBub2RlLT5nZXRPcCgpID09IEVPcEZ1bmN0
aW9uQ2FsbCkgJiYKLSAgICAgICAgICAgICAgICAhcGFyZW50Tm9kZS0+Z2V0QXNCbG9jaygpKQor
ICAgICAgICAgICAgICAgIChub2RlLT5pc0NvbnN0cnVjdG9yKCkgfHwgbm9kZS0+aXNGdW5jdGlv
bkNhbGwoKSkgJiYgIXBhcmVudE5vZGUtPmdldEFzQmxvY2soKSkKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTEwMiwzICsxMDQs
MTQgQEAgYm9vbCBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXI6Om1hdGNoKFRJbnRlcm1UZXJuYXJ5
ICpub2RlKQogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CisKK2Jvb2wgSW50ZXJtTm9kZVBh
dHRlcm5NYXRjaGVyOjptYXRjaChUSW50ZXJtRGVjbGFyYXRpb24gKm5vZGUpCit7CisgICAgaWYg
KChtTWFzayAmIGtNdWx0aURlY2xhcmF0aW9uKSAhPSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG5vZGUtPmdldFNlcXVlbmNlKCktPnNpemUoKSA+IDE7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ludGVy
bU5vZGVQYXR0ZXJuTWF0Y2hlci5oCmluZGV4IDNlMjRmODU2MGUxLi5jMTU2MTAwYjUzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
SW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyLmgKQEAgLTEx
LDEwICsxMSwxNCBAQAogI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX0lOVEVSTU5PREVQQVRU
RVJOTUFUQ0hFUl9IXwogI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX0lOVEVSTU5PREVQQVRU
RVJOTUFUQ0hFUl9IXwogCituYW1lc3BhY2Ugc2gKK3sKKwogY2xhc3MgVEludGVybUFnZ3JlZ2F0
ZTsKIGNsYXNzIFRJbnRlcm1CaW5hcnk7CiBjbGFzcyBUSW50ZXJtTm9kZTsKIGNsYXNzIFRJbnRl
cm1UZXJuYXJ5OworY2xhc3MgVEludGVybURlY2xhcmF0aW9uOwogCiBjbGFzcyBJbnRlcm1Ob2Rl
UGF0dGVybk1hdGNoZXIKIHsKQEAgLTMxLDcgKzM1LDEwIEBAIGNsYXNzIEludGVybU5vZGVQYXR0
ZXJuTWF0Y2hlcgogICAgICAgICBrRXhwcmVzc2lvblJldHVybmluZ0FycmF5ID0gMHgwMDAyLAog
CiAgICAgICAgIC8vIE1hdGNoZXMgZHluYW1pYyBpbmRleGluZyBvZiB2ZWN0b3JzIG9yIG1hdHJp
Y2VzIGluIGwtdmFsdWVzLgotICAgICAgICBrRHluYW1pY0luZGV4aW5nT2ZWZWN0b3JPck1hdHJp
eEluTFZhbHVlID0gMHgwMDA0CisgICAgICAgIGtEeW5hbWljSW5kZXhpbmdPZlZlY3Rvck9yTWF0
cml4SW5MVmFsdWUgPSAweDAwMDQsCisKKyAgICAgICAgLy8gTWF0Y2hlcyBkZWNsYXJhdGlvbnMg
d2l0aCBtb3JlIHRoYW4gb25lIGRlY2xhcmVkIHZhcmlhYmxlcworICAgICAgICBrTXVsdGlEZWNs
YXJhdGlvbiA9IDB4MDAwOCwKICAgICB9OwogICAgIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlcihj
b25zdCB1bnNpZ25lZCBpbnQgbWFzayk7CiAKQEAgLTQzLDYgKzUwLDcgQEAgY2xhc3MgSW50ZXJt
Tm9kZVBhdHRlcm5NYXRjaGVyCiAKICAgICBib29sIG1hdGNoKFRJbnRlcm1BZ2dyZWdhdGUgKm5v
ZGUsIFRJbnRlcm1Ob2RlICpwYXJlbnROb2RlKTsKICAgICBib29sIG1hdGNoKFRJbnRlcm1UZXJu
YXJ5ICpub2RlKTsKKyAgICBib29sIG1hdGNoKFRJbnRlcm1EZWNsYXJhdGlvbiAqbm9kZSk7CiAK
ICAgcHJpdmF0ZToKICAgICBjb25zdCB1bnNpZ25lZCBpbnQgbU1hc2s7CkBAIC01MCw0ICs1OCw2
IEBAIGNsYXNzIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlcgogICAgIGJvb2wgbWF0Y2hJbnRlcm5h
bChUSW50ZXJtQmluYXJ5ICpub2RlLCBUSW50ZXJtTm9kZSAqcGFyZW50Tm9kZSk7CiB9OwogCit9
ICAvLyBuYW1lc3BhY2Ugc2gKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1UcmF2ZXJzZS5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1UcmF2ZXJz
ZS5jcHAKaW5kZXggMjlmODFmNDAxZmQuLjE4MTlhYjhlNWYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1UcmF2ZXJzZS5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
SW50ZXJtVHJhdmVyc2UuY3BwCkBAIC04LDYgKzgsOSBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvSW5mb1NpbmsuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1N5bWJv
bFRhYmxlLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiB2b2lkIFRJbnRlcm1TeW1ib2w6OnRyYXZl
cnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0KQogewogICAgIGl0LT50cmF2ZXJzZVN5bWJvbCh0aGlz
KTsKQEAgLTY4LDYgKzcxLDIxIEBAIHZvaWQgVEludGVybUJsb2NrOjp0cmF2ZXJzZShUSW50ZXJt
VHJhdmVyc2VyICppdCkKICAgICBpdC0+dHJhdmVyc2VCbG9jayh0aGlzKTsKIH0KIAordm9pZCBU
SW50ZXJtSW52YXJpYW50RGVjbGFyYXRpb246OnRyYXZlcnNlKFRJbnRlcm1UcmF2ZXJzZXIgKml0
KQoreworICAgIGl0LT50cmF2ZXJzZUludmFyaWFudERlY2xhcmF0aW9uKHRoaXMpOworfQorCit2
b2lkIFRJbnRlcm1EZWNsYXJhdGlvbjo6dHJhdmVyc2UoVEludGVybVRyYXZlcnNlciAqaXQpCit7
CisgICAgaXQtPnRyYXZlcnNlRGVjbGFyYXRpb24odGhpcyk7Cit9CisKK3ZvaWQgVEludGVybUZ1
bmN0aW9uUHJvdG90eXBlOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkKK3sKKyAgICBp
dC0+dHJhdmVyc2VGdW5jdGlvblByb3RvdHlwZSh0aGlzKTsKK30KKwogdm9pZCBUSW50ZXJtQWdn
cmVnYXRlOjp0cmF2ZXJzZShUSW50ZXJtVHJhdmVyc2VyICppdCkKIHsKICAgICBpdC0+dHJhdmVy
c2VBZ2dyZWdhdGUodGhpcyk7CkBAIC04Nyw3ICsxMDUsNyBAQCBUSW50ZXJtVHJhdmVyc2VyOjpU
SW50ZXJtVHJhdmVyc2VyKGJvb2wgcHJlVmlzaXQsIGJvb2wgaW5WaXNpdCwgYm9vbCBwb3N0Vmlz
aXQpCiAgICAgOiBwcmVWaXNpdChwcmVWaXNpdCksCiAgICAgICBpblZpc2l0KGluVmlzaXQpLAog
ICAgICAgcG9zdFZpc2l0KHBvc3RWaXNpdCksCi0gICAgICBtRGVwdGgoMCksCisgICAgICBtRGVw
dGgoLTEpLAogICAgICAgbU1heERlcHRoKDApLAogICAgICAgbUluR2xvYmFsU2NvcGUodHJ1ZSks
CiAgICAgICBtVGVtcG9yYXJ5SW5kZXgobnVsbHB0cikKQEAgLTEyNCw4ICsxNDIsMTYgQEAgdm9p
ZCBUSW50ZXJtVHJhdmVyc2VyOjppbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRCbG9jayhjb25zdCBU
SW50ZXJtU2VxdWVuY2UgJmluc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVEludGVybVNlcXVlbmNlICZpbnNlcnRpb25zQWZ0ZXIp
CiB7CiAgICAgQVNTRVJUKCFtUGFyZW50QmxvY2tTdGFjay5lbXB0eSgpKTsKLSAgICBOb2RlSW5z
ZXJ0TXVsdGlwbGVFbnRyeSBpbnNlcnQobVBhcmVudEJsb2NrU3RhY2suYmFjaygpLm5vZGUsIG1Q
YXJlbnRCbG9ja1N0YWNrLmJhY2soKS5wb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluc2VydGlvbnNCZWZvcmUsIGluc2VydGlvbnNBZnRlcik7CisgICAgUGFyZW50Qmxv
Y2sgJnBhcmVudEJsb2NrID0gbVBhcmVudEJsb2NrU3RhY2suYmFjaygpOworICAgIGlmIChtUGF0
aC5iYWNrKCkgPT0gcGFyZW50QmxvY2subm9kZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtUGFy
ZW50QmxvY2tTdGFjay5zaXplKCkgPj0gMnUpOworICAgICAgICAvLyBUaGUgY3VycmVudCBub2Rl
IGlzIGEgYmxvY2sgbm9kZSwgc28gdGhlIHBhcmVudCBibG9jayBpcyBub3QgdGhlIHRvcG1vc3Qg
b25lIGluIHRoZSBibG9jaworICAgICAgICAvLyBzdGFjaywgYnV0IHRoZSBvbmUgYmVsb3cgdGhh
dC4KKyAgICAgICAgcGFyZW50QmxvY2sgPSBtUGFyZW50QmxvY2tTdGFjay5hdChtUGFyZW50Qmxv
Y2tTdGFjay5zaXplKCkgLSAydSk7CisgICAgfQorICAgIE5vZGVJbnNlcnRNdWx0aXBsZUVudHJ5
IGluc2VydChwYXJlbnRCbG9jay5ub2RlLCBwYXJlbnRCbG9jay5wb3MsIGluc2VydGlvbnNCZWZv
cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvbnNBZnRlcik7
CiAgICAgbUluc2VydGlvbnMucHVzaF9iYWNrKGluc2VydCk7CiB9CiAKQEAgLTEzOCw3ICsxNjQs
OCBAQCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6Omluc2VydFN0YXRlbWVudEluUGFyZW50QmxvY2so
VEludGVybU5vZGUgKnN0YXRlbWVudCkKIAogVEludGVybVN5bWJvbCAqVEludGVybVRyYXZlcnNl
cjo6Y3JlYXRlVGVtcFN5bWJvbChjb25zdCBUVHlwZSAmdHlwZSwgVFF1YWxpZmllciBxdWFsaWZp
ZXIpCiB7Ci0gICAgLy8gRWFjaCB0cmF2ZXJzYWwgdXNlcyBhdCBtb3N0IG9uZSB0ZW1wb3Jhcnkg
dmFyaWFibGUsIHNvIHRoZSBpbmRleCBzdGF5cyB0aGUgc2FtZSB3aXRoaW4gYSBzaW5nbGUgdHJh
dmVyc2FsLgorICAgIC8vIEVhY2ggdHJhdmVyc2FsIHVzZXMgYXQgbW9zdCBvbmUgdGVtcG9yYXJ5
IHZhcmlhYmxlLCBzbyB0aGUgaW5kZXggc3RheXMgdGhlIHNhbWUgd2l0aGluIGEKKyAgICAvLyBz
aW5nbGUgdHJhdmVyc2FsLgogICAgIFRJbmZvU2lua0Jhc2Ugc3ltYm9sTmFtZU91dDsKICAgICBB
U1NFUlQobVRlbXBvcmFyeUluZGV4ICE9IG51bGxwdHIpOwogICAgIHN5bWJvbE5hbWVPdXQgPDwg
InMiIDw8ICgqbVRlbXBvcmFyeUluZGV4KTsKQEAgLTE0Niw3ICsxNzMsMTEgQEAgVEludGVybVN5
bWJvbCAqVEludGVybVRyYXZlcnNlcjo6Y3JlYXRlVGVtcFN5bWJvbChjb25zdCBUVHlwZSAmdHlw
ZSwgVFF1YWxpZmllcgogCiAgICAgVEludGVybVN5bWJvbCAqbm9kZSA9IG5ldyBUSW50ZXJtU3lt
Ym9sKDAsIHN5bWJvbE5hbWUsIHR5cGUpOwogICAgIG5vZGUtPnNldEludGVybmFsKHRydWUpOwor
CisgICAgQVNTRVJUKHF1YWxpZmllciA9PSBFdnFUZW1wb3JhcnkgfHwgcXVhbGlmaWVyID09IEV2
cUNvbnN0IHx8IHF1YWxpZmllciA9PSBFdnFHbG9iYWwpOwogICAgIG5vZGUtPmdldFR5cGVQb2lu
dGVyKCktPnNldFF1YWxpZmllcihxdWFsaWZpZXIpOworICAgIC8vIFRPRE8ob2V0dWFobyk6IE1p
Z2h0IGJlIHVzZWZ1bCB0byBzYW5pdGl6ZSBsYXlvdXQgcXVhbGlmaWVyIGV0Yy4gb24gdGhlIHR5
cGUgb2YgdGhlIGNyZWF0ZWQKKyAgICAvLyBzeW1ib2wuIFRoaXMgbWlnaHQgbmVlZCB0byBiZSBk
b25lIGluIG90aGVyIHBsYWNlcyBhcyB3ZWxsLgogICAgIHJldHVybiBub2RlOwogfQogCkBAIC0x
NTUsMjQgKzE4NiwyNSBAQCBUSW50ZXJtU3ltYm9sICpUSW50ZXJtVHJhdmVyc2VyOjpjcmVhdGVU
ZW1wU3ltYm9sKGNvbnN0IFRUeXBlICZ0eXBlKQogICAgIHJldHVybiBjcmVhdGVUZW1wU3ltYm9s
KHR5cGUsIEV2cVRlbXBvcmFyeSk7CiB9CiAKLVRJbnRlcm1BZ2dyZWdhdGUgKlRJbnRlcm1UcmF2
ZXJzZXI6OmNyZWF0ZVRlbXBEZWNsYXJhdGlvbihjb25zdCBUVHlwZSAmdHlwZSkKK1RJbnRlcm1E
ZWNsYXJhdGlvbiAqVEludGVybVRyYXZlcnNlcjo6Y3JlYXRlVGVtcERlY2xhcmF0aW9uKGNvbnN0
IFRUeXBlICZ0eXBlKQogewotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnRlbXBEZWNsYXJhdGlvbiA9
IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcERlY2xhcmF0aW9uKTsKLSAgICB0ZW1wRGVjbGFyYXRp
b24tPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhjcmVhdGVUZW1wU3ltYm9sKHR5cGUpKTsKKyAg
ICBUSW50ZXJtRGVjbGFyYXRpb24gKnRlbXBEZWNsYXJhdGlvbiA9IG5ldyBUSW50ZXJtRGVjbGFy
YXRpb24oKTsKKyAgICB0ZW1wRGVjbGFyYXRpb24tPmFwcGVuZERlY2xhcmF0b3IoY3JlYXRlVGVt
cFN5bWJvbCh0eXBlKSk7CiAgICAgcmV0dXJuIHRlbXBEZWNsYXJhdGlvbjsKIH0KIAotVEludGVy
bUFnZ3JlZ2F0ZSAqVEludGVybVRyYXZlcnNlcjo6Y3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihU
SW50ZXJtVHlwZWQgKmluaXRpYWxpemVyLCBUUXVhbGlmaWVyIHF1YWxpZmllcikKK1RJbnRlcm1E
ZWNsYXJhdGlvbiAqVEludGVybVRyYXZlcnNlcjo6Y3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihU
SW50ZXJtVHlwZWQgKmluaXRpYWxpemVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyKQog
ewogICAgIEFTU0VSVChpbml0aWFsaXplciAhPSBudWxscHRyKTsKLSAgICBUSW50ZXJtU3ltYm9s
ICp0ZW1wU3ltYm9sID0gY3JlYXRlVGVtcFN5bWJvbChpbml0aWFsaXplci0+Z2V0VHlwZSgpLCBx
dWFsaWZpZXIpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnRlbXBEZWNsYXJhdGlvbiA9IG5ldyBU
SW50ZXJtQWdncmVnYXRlKEVPcERlY2xhcmF0aW9uKTsKLSAgICBUSW50ZXJtQmluYXJ5ICp0ZW1w
SW5pdCAgICAgICAgICAgPSBuZXcgVEludGVybUJpbmFyeShFT3BJbml0aWFsaXplLCB0ZW1wU3lt
Ym9sLCBpbml0aWFsaXplcik7Ci0gICAgdGVtcERlY2xhcmF0aW9uLT5nZXRTZXF1ZW5jZSgpLT5w
dXNoX2JhY2sodGVtcEluaXQpOworICAgIFRJbnRlcm1TeW1ib2wgKnRlbXBTeW1ib2wgICAgICAg
ICAgID0gY3JlYXRlVGVtcFN5bWJvbChpbml0aWFsaXplci0+Z2V0VHlwZSgpLCBxdWFsaWZpZXIp
OworICAgIFRJbnRlcm1EZWNsYXJhdGlvbiAqdGVtcERlY2xhcmF0aW9uID0gbmV3IFRJbnRlcm1E
ZWNsYXJhdGlvbigpOworICAgIFRJbnRlcm1CaW5hcnkgKnRlbXBJbml0ICAgICAgICAgICAgID0g
bmV3IFRJbnRlcm1CaW5hcnkoRU9wSW5pdGlhbGl6ZSwgdGVtcFN5bWJvbCwgaW5pdGlhbGl6ZXIp
OworICAgIHRlbXBEZWNsYXJhdGlvbi0+YXBwZW5kRGVjbGFyYXRvcih0ZW1wSW5pdCk7CiAgICAg
cmV0dXJuIHRlbXBEZWNsYXJhdGlvbjsKIH0KIAotVEludGVybUFnZ3JlZ2F0ZSAqVEludGVybVRy
YXZlcnNlcjo6Y3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihUSW50ZXJtVHlwZWQgKmluaXRpYWxp
emVyKQorVEludGVybURlY2xhcmF0aW9uICpUSW50ZXJtVHJhdmVyc2VyOjpjcmVhdGVUZW1wSW5p
dERlY2xhcmF0aW9uKFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIpCiB7CiAgICAgcmV0dXJuIGNy
ZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24oaW5pdGlhbGl6ZXIsIEV2cVRlbXBvcmFyeSk7CiB9CkBA
IC0xOTYsMjIgKzIyOCwyMyBAQCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6Om5leHRUZW1wb3JhcnlJ
bmRleCgpCiAgICAgKysoKm1UZW1wb3JhcnlJbmRleCk7CiB9CiAKLXZvaWQgVExWYWx1ZVRyYWNr
aW5nVHJhdmVyc2VyOjphZGRUb0Z1bmN0aW9uTWFwKGNvbnN0IFROYW1lICZuYW1lLCBUSW50ZXJt
U2VxdWVuY2UgKnBhcmFtU2VxdWVuY2UpCit2b2lkIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcjo6
YWRkVG9GdW5jdGlvbk1hcChjb25zdCBUU3ltYm9sVW5pcXVlSWQgJmlkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVNlcXVlbmNlICpwYXJh
bVNlcXVlbmNlKQogewotICAgIG1GdW5jdGlvbk1hcFtuYW1lXSA9IHBhcmFtU2VxdWVuY2U7Cisg
ICAgbUZ1bmN0aW9uTWFwW2lkLmdldCgpXSA9IHBhcmFtU2VxdWVuY2U7CiB9CiAKIGJvb2wgVExW
YWx1ZVRyYWNraW5nVHJhdmVyc2VyOjppc0luRnVuY3Rpb25NYXAoY29uc3QgVEludGVybUFnZ3Jl
Z2F0ZSAqY2FsbE5vZGUpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGNhbGxOb2RlLT5nZXRPcCgpID09
IEVPcEZ1bmN0aW9uQ2FsbCk7Ci0gICAgcmV0dXJuIChtRnVuY3Rpb25NYXAuZmluZChjYWxsTm9k
ZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWVPYmooKSkgIT0KKyAgICBBU1NFUlQo
Y2FsbE5vZGUtPmdldE9wKCkgPT0gRU9wQ2FsbEZ1bmN0aW9uSW5BU1QpOworICAgIHJldHVybiAo
bUZ1bmN0aW9uTWFwLmZpbmQoY2FsbE5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXRJ
ZCgpLmdldCgpKSAhPQogICAgICAgICAgICAgbUZ1bmN0aW9uTWFwLmVuZCgpKTsKIH0KIAogVElu
dGVybVNlcXVlbmNlICpUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXI6OmdldEZ1bmN0aW9uUGFyYW1l
dGVycyhjb25zdCBUSW50ZXJtQWdncmVnYXRlICpjYWxsTm9kZSkKIHsKICAgICBBU1NFUlQoaXNJ
bkZ1bmN0aW9uTWFwKGNhbGxOb2RlKSk7Ci0gICAgcmV0dXJuIG1GdW5jdGlvbk1hcFtjYWxsTm9k
ZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWVPYmooKV07CisgICAgcmV0dXJuIG1G
dW5jdGlvbk1hcFtjYWxsTm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldElkKCkuZ2V0
KCldOwogfQogCiB2b2lkIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcjo6c2V0SW5GdW5jdGlvbkNh
bGxPdXRQYXJhbWV0ZXIoYm9vbCBpbk91dFBhcmFtZXRlcikKQEAgLTI0MCwxNiArMjczLDIwIEBA
IGJvb2wgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyOjppc0luRnVuY3Rpb25DYWxsT3V0UGFyYW1l
dGVyKCkgY29uc3QKIC8vCiB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlU3ltYm9sKFRJ
bnRlcm1TeW1ib2wgKm5vZGUpCiB7CisgICAgU2NvcGVkTm9kZUluVHJhdmVyc2FsUGF0aCBhZGRU
b1BhdGgodGhpcywgbm9kZSk7CiAgICAgdmlzaXRTeW1ib2wobm9kZSk7CiB9CiAKIHZvaWQgVElu
dGVybVRyYXZlcnNlcjo6dHJhdmVyc2VDb25zdGFudFVuaW9uKFRJbnRlcm1Db25zdGFudFVuaW9u
ICpub2RlKQogeworICAgIFNjb3BlZE5vZGVJblRyYXZlcnNhbFBhdGggYWRkVG9QYXRoKHRoaXMs
IG5vZGUpOwogICAgIHZpc2l0Q29uc3RhbnRVbmlvbihub2RlKTsKIH0KIAogdm9pZCBUSW50ZXJt
VHJhdmVyc2VyOjp0cmF2ZXJzZVN3aXp6bGUoVEludGVybVN3aXp6bGUgKm5vZGUpCiB7CisgICAg
U2NvcGVkTm9kZUluVHJhdmVyc2FsUGF0aCBhZGRUb1BhdGgodGhpcywgbm9kZSk7CisKICAgICBi
b29sIHZpc2l0ID0gdHJ1ZTsKIAogICAgIGlmIChwcmVWaXNpdCkKQEAgLTI1NywxMSArMjk0LDcg
QEAgdm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZVN3aXp6bGUoVEludGVybVN3aXp6bGUg
Km5vZGUpCiAKICAgICBpZiAodmlzaXQpCiAgICAgewotICAgICAgICBpbmNyZW1lbnREZXB0aChu
b2RlKTsKLQogICAgICAgICBub2RlLT5nZXRPcGVyYW5kKCktPnRyYXZlcnNlKHRoaXMpOwotCi0g
ICAgICAgIGRlY3JlbWVudERlcHRoKCk7CiAgICAgfQogCiAgICAgaWYgKHZpc2l0ICYmIHBvc3RW
aXNpdCkKQEAgLTI3Myw2ICszMDYsOCBAQCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNl
U3dpenpsZShUSW50ZXJtU3dpenpsZSAqbm9kZSkKIC8vCiB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6
OnRyYXZlcnNlQmluYXJ5KFRJbnRlcm1CaW5hcnkgKm5vZGUpCiB7CisgICAgU2NvcGVkTm9kZUlu
VHJhdmVyc2FsUGF0aCBhZGRUb1BhdGgodGhpcywgbm9kZSk7CisKICAgICBib29sIHZpc2l0ID0g
dHJ1ZTsKIAogICAgIC8vCkBAIC0yODYsOCArMzIxLDYgQEAgdm9pZCBUSW50ZXJtVHJhdmVyc2Vy
Ojp0cmF2ZXJzZUJpbmFyeShUSW50ZXJtQmluYXJ5ICpub2RlKQogICAgIC8vCiAgICAgaWYgKHZp
c2l0KQogICAgIHsKLSAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7Ci0KICAgICAgICAgaWYg
KG5vZGUtPmdldExlZnQoKSkKICAgICAgICAgICAgIG5vZGUtPmdldExlZnQoKS0+dHJhdmVyc2Uo
dGhpcyk7CiAKQEAgLTI5Niw4ICszMjksNiBAQCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZl
cnNlQmluYXJ5KFRJbnRlcm1CaW5hcnkgKm5vZGUpCiAKICAgICAgICAgaWYgKHZpc2l0ICYmIG5v
ZGUtPmdldFJpZ2h0KCkpCiAgICAgICAgICAgICBub2RlLT5nZXRSaWdodCgpLT50cmF2ZXJzZSh0
aGlzKTsKLQotICAgICAgICBkZWNyZW1lbnREZXB0aCgpOwogICAgIH0KIAogICAgIC8vCkBAIC0z
MTAsNiArMzQxLDggQEAgdm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZUJpbmFyeShUSW50
ZXJtQmluYXJ5ICpub2RlKQogCiB2b2lkIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcjo6dHJhdmVy
c2VCaW5hcnkoVEludGVybUJpbmFyeSAqbm9kZSkKIHsKKyAgICBTY29wZWROb2RlSW5UcmF2ZXJz
YWxQYXRoIGFkZFRvUGF0aCh0aGlzLCBub2RlKTsKKwogICAgIGJvb2wgdmlzaXQgPSB0cnVlOwog
CiAgICAgLy8KQEAgLTMyMyw4ICszNTYsNiBAQCB2b2lkIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNl
cjo6dHJhdmVyc2VCaW5hcnkoVEludGVybUJpbmFyeSAqbm9kZSkKICAgICAvLwogICAgIGlmICh2
aXNpdCkKICAgICB7Ci0gICAgICAgIGluY3JlbWVudERlcHRoKG5vZGUpOwotCiAgICAgICAgIC8v
IFNvbWUgYmluYXJ5IG9wZXJhdGlvbnMgbGlrZSBpbmRleGluZyBjYW4gYmUgaW5zaWRlIGFuIGV4
cHJlc3Npb24gd2hpY2ggbXVzdCBiZSBhbgogICAgICAgICAvLyBsLXZhbHVlLgogICAgICAgICBi
b29sIHBhcmVudE9wZXJhdG9yUmVxdWlyZXNMVmFsdWUgICAgID0gb3BlcmF0b3JSZXF1aXJlc0xW
YWx1ZSgpOwpAQCAtMzU5LDggKzM5MCw2IEBAIHZvaWQgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2Vy
Ojp0cmF2ZXJzZUJpbmFyeShUSW50ZXJtQmluYXJ5ICpub2RlKQogCiAgICAgICAgIHNldE9wZXJh
dG9yUmVxdWlyZXNMVmFsdWUocGFyZW50T3BlcmF0b3JSZXF1aXJlc0xWYWx1ZSk7CiAgICAgICAg
IHNldEluRnVuY3Rpb25DYWxsT3V0UGFyYW1ldGVyKHBhcmVudEluRnVuY3Rpb25DYWxsT3V0UGFy
YW1ldGVyKTsKLQotICAgICAgICBkZWNyZW1lbnREZXB0aCgpOwogICAgIH0KIAogICAgIC8vCkBA
IC0zNzYsNiArNDA1LDggQEAgdm9pZCBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXI6OnRyYXZlcnNl
QmluYXJ5KFRJbnRlcm1CaW5hcnkgKm5vZGUpCiAvLwogdm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0
cmF2ZXJzZVVuYXJ5KFRJbnRlcm1VbmFyeSAqbm9kZSkKIHsKKyAgICBTY29wZWROb2RlSW5UcmF2
ZXJzYWxQYXRoIGFkZFRvUGF0aCh0aGlzLCBub2RlKTsKKwogICAgIGJvb2wgdmlzaXQgPSB0cnVl
OwogCiAgICAgaWYgKHByZVZpc2l0KQpAQCAtMzgzLDExICs0MTQsNyBAQCB2b2lkIFRJbnRlcm1U
cmF2ZXJzZXI6OnRyYXZlcnNlVW5hcnkoVEludGVybVVuYXJ5ICpub2RlKQogCiAgICAgaWYgKHZp
c2l0KQogICAgIHsKLSAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7Ci0KICAgICAgICAgbm9k
ZS0+Z2V0T3BlcmFuZCgpLT50cmF2ZXJzZSh0aGlzKTsKLQotICAgICAgICBkZWNyZW1lbnREZXB0
aCgpOwogICAgIH0KIAogICAgIGlmICh2aXNpdCAmJiBwb3N0VmlzaXQpCkBAIC0zOTYsNiArNDIz
LDggQEAgdm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZVVuYXJ5KFRJbnRlcm1VbmFyeSAq
bm9kZSkKIAogdm9pZCBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXI6OnRyYXZlcnNlVW5hcnkoVElu
dGVybVVuYXJ5ICpub2RlKQogeworICAgIFNjb3BlZE5vZGVJblRyYXZlcnNhbFBhdGggYWRkVG9Q
YXRoKHRoaXMsIG5vZGUpOworCiAgICAgYm9vbCB2aXNpdCA9IHRydWU7CiAKICAgICBpZiAocHJl
VmlzaXQpCkBAIC00MDMsOCArNDMyLDYgQEAgdm9pZCBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXI6
OnRyYXZlcnNlVW5hcnkoVEludGVybVVuYXJ5ICpub2RlKQogCiAgICAgaWYgKHZpc2l0KQogICAg
IHsKLSAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7Ci0KICAgICAgICAgQVNTRVJUKCFvcGVy
YXRvclJlcXVpcmVzTFZhbHVlKCkpOwogICAgICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCiAg
ICAgICAgIHsKQEAgLTQyMSw4ICs0NDgsNiBAQCB2b2lkIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNl
cjo6dHJhdmVyc2VVbmFyeShUSW50ZXJtVW5hcnkgKm5vZGUpCiAgICAgICAgIG5vZGUtPmdldE9w
ZXJhbmQoKS0+dHJhdmVyc2UodGhpcyk7CiAKICAgICAgICAgc2V0T3BlcmF0b3JSZXF1aXJlc0xW
YWx1ZShmYWxzZSk7Ci0KLSAgICAgICAgZGVjcmVtZW50RGVwdGgoKTsKICAgICB9CiAKICAgICBp
ZiAodmlzaXQgJiYgcG9zdFZpc2l0KQpAQCAtNDMyLDYgKzQ1Nyw4IEBAIHZvaWQgVExWYWx1ZVRy
YWNraW5nVHJhdmVyc2VyOjp0cmF2ZXJzZVVuYXJ5KFRJbnRlcm1VbmFyeSAqbm9kZSkKIC8vIFRy
YXZlcnNlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBub2RlLgogdm9pZCBUSW50ZXJtVHJhdmVyc2Vy
Ojp0cmF2ZXJzZUZ1bmN0aW9uRGVmaW5pdGlvbihUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpu
b2RlKQogeworICAgIFNjb3BlZE5vZGVJblRyYXZlcnNhbFBhdGggYWRkVG9QYXRoKHRoaXMsIG5v
ZGUpOworCiAgICAgYm9vbCB2aXNpdCA9IHRydWU7CiAKICAgICBpZiAocHJlVmlzaXQpCkBAIC00
MzksMTYgKzQ2NiwxNCBAQCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlRnVuY3Rpb25E
ZWZpbml0aW9uKFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZAogCiAgICAgaWYgKHZpc2l0
KQogICAgIHsKLSAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7CiAgICAgICAgIG1Jbkdsb2Jh
bFNjb3BlID0gZmFsc2U7CiAKLSAgICAgICAgbm9kZS0+Z2V0RnVuY3Rpb25QYXJhbWV0ZXJzKCkt
PnRyYXZlcnNlKHRoaXMpOworICAgICAgICBub2RlLT5nZXRGdW5jdGlvblByb3RvdHlwZSgpLT50
cmF2ZXJzZSh0aGlzKTsKICAgICAgICAgaWYgKGluVmlzaXQpCiAgICAgICAgICAgICB2aXNpdCA9
IHZpc2l0RnVuY3Rpb25EZWZpbml0aW9uKEluVmlzaXQsIG5vZGUpOwogICAgICAgICBub2RlLT5n
ZXRCb2R5KCktPnRyYXZlcnNlKHRoaXMpOwogCiAgICAgICAgIG1Jbkdsb2JhbFNjb3BlID0gdHJ1
ZTsKLSAgICAgICAgZGVjcmVtZW50RGVwdGgoKTsKICAgICB9CiAKICAgICBpZiAodmlzaXQgJiYg
cG9zdFZpc2l0KQpAQCAtNDU4LDYgKzQ4Myw5IEBAIHZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJh
dmVyc2VGdW5jdGlvbkRlZmluaXRpb24oVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kCiAv
LyBUcmF2ZXJzZSBhIGJsb2NrIG5vZGUuCiB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNl
QmxvY2soVEludGVybUJsb2NrICpub2RlKQogeworICAgIFNjb3BlZE5vZGVJblRyYXZlcnNhbFBh
dGggYWRkVG9QYXRoKHRoaXMsIG5vZGUpOworICAgIHB1c2hQYXJlbnRCbG9jayhub2RlKTsKKwog
ICAgIGJvb2wgdmlzaXQgPSB0cnVlOwogCiAgICAgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9
IG5vZGUtPmdldFNlcXVlbmNlKCk7CkBAIC00NjcsOSArNDk1LDYgQEAgdm9pZCBUSW50ZXJtVHJh
dmVyc2VyOjp0cmF2ZXJzZUJsb2NrKFRJbnRlcm1CbG9jayAqbm9kZSkKIAogICAgIGlmICh2aXNp
dCkKICAgICB7Ci0gICAgICAgIGluY3JlbWVudERlcHRoKG5vZGUpOwotICAgICAgICBwdXNoUGFy
ZW50QmxvY2sobm9kZSk7Ci0KICAgICAgICAgZm9yIChhdXRvICpjaGlsZCA6ICpzZXF1ZW5jZSkK
ICAgICAgICAgewogICAgICAgICAgICAgY2hpbGQtPnRyYXZlcnNlKHRoaXMpOwpAQCAtNDgxLDE4
ICs1MDYsOTcgQEAgdm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZUJsb2NrKFRJbnRlcm1C
bG9jayAqbm9kZSkKIAogICAgICAgICAgICAgaW5jcmVtZW50UGFyZW50QmxvY2tQb3MoKTsKICAg
ICAgICAgfQotCi0gICAgICAgIHBvcFBhcmVudEJsb2NrKCk7Ci0gICAgICAgIGRlY3JlbWVudERl
cHRoKCk7CiAgICAgfQogCiAgICAgaWYgKHZpc2l0ICYmIHBvc3RWaXNpdCkKICAgICAgICAgdmlz
aXRCbG9jayhQb3N0VmlzaXQsIG5vZGUpOworCisgICAgcG9wUGFyZW50QmxvY2soKTsKK30KKwor
dm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZUludmFyaWFudERlY2xhcmF0aW9uKFRJbnRl
cm1JbnZhcmlhbnREZWNsYXJhdGlvbiAqbm9kZSkKK3sKKyAgICBTY29wZWROb2RlSW5UcmF2ZXJz
YWxQYXRoIGFkZFRvUGF0aCh0aGlzLCBub2RlKTsKKworICAgIGJvb2wgdmlzaXQgPSB0cnVlOwor
CisgICAgaWYgKHByZVZpc2l0KQorICAgIHsKKyAgICAgICAgdmlzaXQgPSB2aXNpdEludmFyaWFu
dERlY2xhcmF0aW9uKFByZVZpc2l0LCBub2RlKTsKKyAgICB9CisKKyAgICBpZiAodmlzaXQpCisg
ICAgeworICAgICAgICBub2RlLT5nZXRTeW1ib2woKS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAg
IGlmIChwb3N0VmlzaXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZpc2l0SW52YXJpYW50RGVj
bGFyYXRpb24oUG9zdFZpc2l0LCBub2RlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gVHJh
dmVyc2UgYSBkZWNsYXJhdGlvbiBub2RlLgordm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJz
ZURlY2xhcmF0aW9uKFRJbnRlcm1EZWNsYXJhdGlvbiAqbm9kZSkKK3sKKyAgICBTY29wZWROb2Rl
SW5UcmF2ZXJzYWxQYXRoIGFkZFRvUGF0aCh0aGlzLCBub2RlKTsKKworICAgIGJvb2wgdmlzaXQg
PSB0cnVlOworCisgICAgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVl
bmNlKCk7CisKKyAgICBpZiAocHJlVmlzaXQpCisgICAgICAgIHZpc2l0ID0gdmlzaXREZWNsYXJh
dGlvbihQcmVWaXNpdCwgbm9kZSk7CisKKyAgICBpZiAodmlzaXQpCisgICAgeworICAgICAgICBm
b3IgKGF1dG8gKmNoaWxkIDogKnNlcXVlbmNlKQorICAgICAgICB7CisgICAgICAgICAgICBjaGls
ZC0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgICAgICBpZiAodmlzaXQgJiYgaW5WaXNpdCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoY2hpbGQgIT0gc2VxdWVuY2UtPmJhY2so
KSkKKyAgICAgICAgICAgICAgICAgICAgdmlzaXQgPSB2aXNpdERlY2xhcmF0aW9uKEluVmlzaXQs
IG5vZGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHZpc2l0
ICYmIHBvc3RWaXNpdCkKKyAgICAgICAgdmlzaXREZWNsYXJhdGlvbihQb3N0VmlzaXQsIG5vZGUp
OworfQorCit2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlRnVuY3Rpb25Qcm90b3R5cGUo
VEludGVybUZ1bmN0aW9uUHJvdG90eXBlICpub2RlKQoreworICAgIFNjb3BlZE5vZGVJblRyYXZl
cnNhbFBhdGggYWRkVG9QYXRoKHRoaXMsIG5vZGUpOworCisgICAgYm9vbCB2aXNpdCA9IHRydWU7
CisKKyAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsK
KworICAgIGlmIChwcmVWaXNpdCkKKyAgICAgICAgdmlzaXQgPSB2aXNpdEZ1bmN0aW9uUHJvdG90
eXBlKFByZVZpc2l0LCBub2RlKTsKKworICAgIGlmICh2aXNpdCkKKyAgICB7CisgICAgICAgIGZv
ciAoYXV0byAqY2hpbGQgOiAqc2VxdWVuY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoaWxk
LT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAgICAgIGlmICh2aXNpdCAmJiBpblZpc2l0KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChjaGlsZCAhPSBzZXF1ZW5jZS0+YmFjaygp
KQorICAgICAgICAgICAgICAgICAgICB2aXNpdCA9IHZpc2l0RnVuY3Rpb25Qcm90b3R5cGUoSW5W
aXNpdCwgbm9kZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
dmlzaXQgJiYgcG9zdFZpc2l0KQorICAgICAgICB2aXNpdEZ1bmN0aW9uUHJvdG90eXBlKFBvc3RW
aXNpdCwgbm9kZSk7CiB9CiAKIC8vIFRyYXZlcnNlIGFuIGFnZ3JlZ2F0ZSBub2RlLiAgU2FtZSBj
b21tZW50cyBpbiBiaW5hcnkgbm9kZSBhcHBseSBoZXJlLgogdm9pZCBUSW50ZXJtVHJhdmVyc2Vy
Ojp0cmF2ZXJzZUFnZ3JlZ2F0ZShUSW50ZXJtQWdncmVnYXRlICpub2RlKQogeworICAgIFNjb3Bl
ZE5vZGVJblRyYXZlcnNhbFBhdGggYWRkVG9QYXRoKHRoaXMsIG5vZGUpOworCiAgICAgYm9vbCB2
aXNpdCA9IHRydWU7CiAKICAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlID0gbm9kZS0+Z2V0
U2VxdWVuY2UoKTsKQEAgLTUwMiw4ICs2MDYsNiBAQCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRy
YXZlcnNlQWdncmVnYXRlKFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCiAKICAgICBpZiAodmlzaXQp
CiAgICAgewotICAgICAgICBpbmNyZW1lbnREZXB0aChub2RlKTsKLQogICAgICAgICBmb3IgKGF1
dG8gKmNoaWxkIDogKnNlcXVlbmNlKQogICAgICAgICB7CiAgICAgICAgICAgICBjaGlsZC0+dHJh
dmVyc2UodGhpcyk7CkBAIC01MTMsNzEgKzYxNSw3MCBAQCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6
OnRyYXZlcnNlQWdncmVnYXRlKFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCiAgICAgICAgICAgICAg
ICAgICAgIHZpc2l0ID0gdmlzaXRBZ2dyZWdhdGUoSW5WaXNpdCwgbm9kZSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLQotICAgICAgICBkZWNyZW1lbnREZXB0aCgpOwogICAgIH0KIAogICAg
IGlmICh2aXNpdCAmJiBwb3N0VmlzaXQpCiAgICAgICAgIHZpc2l0QWdncmVnYXRlKFBvc3RWaXNp
dCwgbm9kZSk7CiB9CiAKLXZvaWQgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyOjp0cmF2ZXJzZUZ1
bmN0aW9uRGVmaW5pdGlvbihUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2RlKQordm9pZCBU
TFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXI6OnRyYXZlcnNlRnVuY3Rpb25Qcm90b3R5cGUoVEludGVy
bUZ1bmN0aW9uUHJvdG90eXBlICpub2RlKQogewotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcmFt
cyA9IG5vZGUtPmdldEZ1bmN0aW9uUGFyYW1ldGVycygpOwotICAgIEFTU0VSVChwYXJhbXMgIT0g
bnVsbHB0cik7Ci0gICAgQVNTRVJUKHBhcmFtcy0+Z2V0T3AoKSA9PSBFT3BQYXJhbWV0ZXJzKTsK
LSAgICBhZGRUb0Z1bmN0aW9uTWFwKG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXRO
YW1lT2JqKCksIHBhcmFtcy0+Z2V0U2VxdWVuY2UoKSk7CisgICAgVEludGVybVNlcXVlbmNlICpz
ZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7CisgICAgYWRkVG9GdW5jdGlvbk1hcChub2Rl
LT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0SWQoKSwgc2VxdWVuY2UpOwogCi0gICAgVElu
dGVybVRyYXZlcnNlcjo6dHJhdmVyc2VGdW5jdGlvbkRlZmluaXRpb24obm9kZSk7CisgICAgVElu
dGVybVRyYXZlcnNlcjo6dHJhdmVyc2VGdW5jdGlvblByb3RvdHlwZShub2RlKTsKIH0KIAogdm9p
ZCBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXI6OnRyYXZlcnNlQWdncmVnYXRlKFRJbnRlcm1BZ2dy
ZWdhdGUgKm5vZGUpCiB7CisgICAgU2NvcGVkTm9kZUluVHJhdmVyc2FsUGF0aCBhZGRUb1BhdGgo
dGhpcywgbm9kZSk7CisKICAgICBib29sIHZpc2l0ID0gdHJ1ZTsKIAogICAgIFRJbnRlcm1TZXF1
ZW5jZSAqc2VxdWVuY2UgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOwotICAgIGlmIChub2RlLT5nZXRP
cCgpID09IEVPcFByb3RvdHlwZSkKLSAgICB7Ci0gICAgICAgIGFkZFRvRnVuY3Rpb25NYXAobm9k
ZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWVPYmooKSwgc2VxdWVuY2UpOwotICAg
IH0KIAogICAgIGlmIChwcmVWaXNpdCkKICAgICAgICAgdmlzaXQgPSB2aXNpdEFnZ3JlZ2F0ZShQ
cmVWaXNpdCwgbm9kZSk7CiAKICAgICBpZiAodmlzaXQpCiAgICAgewotICAgICAgICBib29sIGlu
RnVuY3Rpb25NYXAgPSBmYWxzZTsKLSAgICAgICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wRnVu
Y3Rpb25DYWxsKQorICAgICAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BDYWxsRnVuY3Rpb25J
bkFTVCkKICAgICAgICAgewotICAgICAgICAgICAgaW5GdW5jdGlvbk1hcCA9IGlzSW5GdW5jdGlv
bk1hcChub2RlKTsKLSAgICAgICAgICAgIGlmICghaW5GdW5jdGlvbk1hcCkKKyAgICAgICAgICAg
IGlmIChpc0luRnVuY3Rpb25NYXAobm9kZSkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgLy8gVGhlIGZ1bmN0aW9uIGlzIG5vdCB1c2VyLWRlZmluZWQgLSBpdCBpcyBsaWtlbHkgYnVp
bHQtaW4gdGV4dHVyZSBmdW5jdGlvbi4KLSAgICAgICAgICAgICAgICAvLyBBc3N1bWUgdGhhdCB0
aG9zZSBkbyBub3QgaGF2ZSBvdXQgcGFyYW1ldGVycy4KLSAgICAgICAgICAgICAgICBzZXRJbkZ1
bmN0aW9uQ2FsbE91dFBhcmFtZXRlcihmYWxzZSk7CisgICAgICAgICAgICAgICAgVEludGVybVNl
cXVlbmNlICpwYXJhbXMgICAgICAgICAgICAgPSBnZXRGdW5jdGlvblBhcmFtZXRlcnMobm9kZSk7
CisgICAgICAgICAgICAgICAgVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBwYXJhbUl0ZXIgPSBw
YXJhbXMtPmJlZ2luKCk7CisgICAgICAgICAgICAgICAgZm9yIChhdXRvICpjaGlsZCA6ICpzZXF1
ZW5jZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChwYXJh
bUl0ZXIgIT0gcGFyYW1zLT5lbmQoKSk7CisgICAgICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIg
cXVhbGlmaWVyID0gKCpwYXJhbUl0ZXIpLT5nZXRBc1R5cGVkKCktPmdldFF1YWxpZmllcigpOwor
ICAgICAgICAgICAgICAgICAgICBzZXRJbkZ1bmN0aW9uQ2FsbE91dFBhcmFtZXRlcihxdWFsaWZp
ZXIgPT0gRXZxT3V0IHx8IHF1YWxpZmllciA9PSBFdnFJbk91dCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgY2hpbGQtPnRyYXZlcnNlKHRoaXMpOworICAgICAgICAgICAgICAgICAgICBpZiAodmlz
aXQgJiYgaW5WaXNpdCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGNoaWxkICE9IHNlcXVlbmNlLT5iYWNrKCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmlzaXQgPSB2aXNpdEFnZ3JlZ2F0ZShJblZpc2l0LCBub2RlKTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICsrcGFyYW1JdGVyOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGluY3JlbWVu
dERlcHRoKG5vZGUpOwotCi0gICAgICAgIGlmIChpbkZ1bmN0aW9uTWFwKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKnBhcmFtcyAgICAgICAgICAgICA9IGdldEZ1bmN0
aW9uUGFyYW1ldGVycyhub2RlKTsKLSAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZTo6aXRlcmF0
b3IgcGFyYW1JdGVyID0gcGFyYW1zLT5iZWdpbigpOwotICAgICAgICAgICAgZm9yIChhdXRvICpj
aGlsZCA6ICpzZXF1ZW5jZSkKKyAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBBU1NFUlQocGFyYW1JdGVyICE9IHBhcmFtcy0+ZW5kKCkpOwotICAgICAgICAg
ICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gKCpwYXJhbUl0ZXIpLT5nZXRBc1R5cGVkKCkt
PmdldFF1YWxpZmllcigpOwotICAgICAgICAgICAgICAgIHNldEluRnVuY3Rpb25DYWxsT3V0UGFy
YW1ldGVyKHF1YWxpZmllciA9PSBFdnFPdXQgfHwgcXVhbGlmaWVyID09IEV2cUluT3V0KTsKLQot
ICAgICAgICAgICAgICAgIGNoaWxkLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgICAgICAgICBp
ZiAodmlzaXQgJiYgaW5WaXNpdCkKKyAgICAgICAgICAgICAgICAvLyBUaGUgbm9kZSBtaWdodCBu
b3QgYmUgaW4gdGhlIGZ1bmN0aW9uIG1hcCBpbiBjYXNlIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YK
KyAgICAgICAgICAgICAgICAvLyB0cmFuc2Zvcm1pbmcgdGhlIEFTVCwgYW5kIGhhdmUgaW5zZXJ0
ZWQgZnVuY3Rpb24gY2FsbCBub2RlcyB3aXRob3V0IGluc2VydGluZyB0aGUKKyAgICAgICAgICAg
ICAgICAvLyBmdW5jdGlvbiBkZWZpbml0aW9ucyB5ZXQuCisgICAgICAgICAgICAgICAgc2V0SW5G
dW5jdGlvbkNhbGxPdXRQYXJhbWV0ZXIoZmFsc2UpOworICAgICAgICAgICAgICAgIGZvciAoYXV0
byAqY2hpbGQgOiAqc2VxdWVuY2UpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBpZiAoY2hpbGQgIT0gc2VxdWVuY2UtPmJhY2soKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHZpc2l0ID0gdmlzaXRBZ2dyZWdhdGUoSW5WaXNpdCwgbm9kZSk7CisgICAgICAgICAgICAg
ICAgICAgIGNoaWxkLT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZp
c2l0ICYmIGluVmlzaXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChjaGlsZCAhPSBzZXF1ZW5jZS0+YmFjaygpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZpc2l0ID0gdmlzaXRBZ2dyZWdhdGUoSW5WaXNpdCwgbm9kZSk7CisgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICArK3Bh
cmFtSXRlcjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgc2V0SW5GdW5jdGlvbkNhbGxP
dXRQYXJhbWV0ZXIoZmFsc2UpOwpAQCAtNTg3LDMyICs2ODgsMTggQEAgdm9pZCBUTFZhbHVlVHJh
Y2tpbmdUcmF2ZXJzZXI6OnRyYXZlcnNlQWdncmVnYXRlKFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUp
CiAgICAgICAgICAgICAvLyBGaW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbiBjb3JyZXNwb25kaW5n
IHRvIHRoaXMgb3Agc28gdGhhdCB3ZSBjYW4gZGV0ZXJtaW5lIHRoZQogICAgICAgICAgICAgLy8g
aW4vb3V0IHF1YWxpZmllcnMgb2YgaXRzIHBhcmFtZXRlcnMuCiAgICAgICAgICAgICBURnVuY3Rp
b24gKmJ1aWx0SW5GdW5jID0gbnVsbHB0cjsKLSAgICAgICAgICAgIFRTdHJpbmcgb3BTdHJpbmcg
PSBHZXRPcGVyYXRvclN0cmluZyhub2RlLT5nZXRPcCgpKTsKLSAgICAgICAgICAgIGlmICghbm9k
ZS0+aXNDb25zdHJ1Y3RvcigpICYmICFvcFN0cmluZy5lbXB0eSgpKQorICAgICAgICAgICAgaWYg
KCFub2RlLT5pc0Z1bmN0aW9uQ2FsbCgpICYmICFub2RlLT5pc0NvbnN0cnVjdG9yKCkpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gVGhlIHJldHVybiB0eXBlIGRvZXNuJ3QgYWZm
ZWN0IHRoZSBtYW5nbGVkIG5hbWUgb2YgdGhlIGZ1bmN0aW9uLCB3aGljaCBpcyB1c2VkCi0gICAg
ICAgICAgICAgICAgLy8gdG8gbG9vayBpdCB1cCBmcm9tIHRoZSBzeW1ib2wgdGFibGUuCi0gICAg
ICAgICAgICAgICAgVFR5cGUgZHVtbXlSZXR1cm5UeXBlOwotICAgICAgICAgICAgICAgIFRGdW5j
dGlvbiBjYWxsKCZvcFN0cmluZywgJmR1bW15UmV0dXJuVHlwZSwgbm9kZS0+Z2V0T3AoKSk7Ci0g
ICAgICAgICAgICAgICAgZm9yIChhdXRvICpjaGlsZCA6ICpzZXF1ZW5jZSkKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIFRUeXBlICpwYXJhbVR5cGUgPSBjaGlsZC0+Z2V0
QXNUeXBlZCgpLT5nZXRUeXBlUG9pbnRlcigpOwotICAgICAgICAgICAgICAgICAgICBUQ29uc3RQ
YXJhbWV0ZXIgcChwYXJhbVR5cGUpOwotICAgICAgICAgICAgICAgICAgICBjYWxsLmFkZFBhcmFt
ZXRlcihwKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBUU3ltYm9sICpz
eW0gPSBtU3ltYm9sVGFibGUuZmluZEJ1aWx0SW4oY2FsbC5nZXRNYW5nbGVkTmFtZSgpLCBtU2hh
ZGVyVmVyc2lvbik7Ci0gICAgICAgICAgICAgICAgaWYgKHN5bSAhPSBudWxscHRyICYmIHN5bS0+
aXNGdW5jdGlvbigpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYnVp
bHRJbkZ1bmMgPSBzdGF0aWNfY2FzdDxURnVuY3Rpb24gKj4oc3ltKTsKLSAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGJ1aWx0SW5GdW5jLT5nZXRQYXJhbUNvdW50KCkgPT0gc2VxdWVuY2UtPnNp
emUoKSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJ1aWx0SW5GdW5jID0g
c3RhdGljX2Nhc3Q8VEZ1bmN0aW9uICo+KAorICAgICAgICAgICAgICAgICAgICBtU3ltYm9sVGFi
bGUuZmluZEJ1aWx0SW4obm9kZS0+Z2V0U3ltYm9sVGFibGVNYW5nbGVkTmFtZSgpLCBtU2hhZGVy
VmVyc2lvbikpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBzaXplX3QgcGFyYW1JbmRl
eCA9IDA7CiAKICAgICAgICAgICAgIGZvciAoYXV0byAqY2hpbGQgOiAqc2VxdWVuY2UpCiAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBhc3N1bWVzIHRoYXQgcmF3IGZ1bmN0
aW9ucyBjYWxsZWQgd2l0aAorICAgICAgICAgICAgICAgIC8vIEVPcENhbGxJbnRlcm5hbFJhd0Z1
bmN0aW9uIGRvbid0IGhhdmUgb3V0IHBhcmFtZXRlcnMuCiAgICAgICAgICAgICAgICAgVFF1YWxp
ZmllciBxdWFsaWZpZXIgPSBFdnFJbjsKICAgICAgICAgICAgICAgICBpZiAoYnVpbHRJbkZ1bmMg
IT0gbnVsbHB0cikKICAgICAgICAgICAgICAgICAgICAgcXVhbGlmaWVyID0gYnVpbHRJbkZ1bmMt
PmdldFBhcmFtKHBhcmFtSW5kZXgpLnR5cGUtPmdldFF1YWxpZmllcigpOwpAQCAtNjMwLDggKzcx
Nyw2IEBAIHZvaWQgVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyOjp0cmF2ZXJzZUFnZ3JlZ2F0ZShU
SW50ZXJtQWdncmVnYXRlICpub2RlKQogCiAgICAgICAgICAgICBzZXRJbkZ1bmN0aW9uQ2FsbE91
dFBhcmFtZXRlcihmYWxzZSk7CiAgICAgICAgIH0KLQotICAgICAgICBkZWNyZW1lbnREZXB0aCgp
OwogICAgIH0KIAogICAgIGlmICh2aXNpdCAmJiBwb3N0VmlzaXQpCkBAIC02NDMsNiArNzI4LDgg
QEAgdm9pZCBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXI6OnRyYXZlcnNlQWdncmVnYXRlKFRJbnRl
cm1BZ2dyZWdhdGUgKm5vZGUpCiAvLwogdm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZVRl
cm5hcnkoVEludGVybVRlcm5hcnkgKm5vZGUpCiB7CisgICAgU2NvcGVkTm9kZUluVHJhdmVyc2Fs
UGF0aCBhZGRUb1BhdGgodGhpcywgbm9kZSk7CisKICAgICBib29sIHZpc2l0ID0gdHJ1ZTsKIAog
ICAgIGlmIChwcmVWaXNpdCkKQEAgLTY1MCwxMyArNzM3LDExIEBAIHZvaWQgVEludGVybVRyYXZl
cnNlcjo6dHJhdmVyc2VUZXJuYXJ5KFRJbnRlcm1UZXJuYXJ5ICpub2RlKQogCiAgICAgaWYgKHZp
c2l0KQogICAgIHsKLSAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7CiAgICAgICAgIG5vZGUt
PmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKICAgICAgICAgaWYgKG5vZGUtPmdldFRy
dWVFeHByZXNzaW9uKCkpCiAgICAgICAgICAgICBub2RlLT5nZXRUcnVlRXhwcmVzc2lvbigpLT50
cmF2ZXJzZSh0aGlzKTsKICAgICAgICAgaWYgKG5vZGUtPmdldEZhbHNlRXhwcmVzc2lvbigpKQog
ICAgICAgICAgICAgbm9kZS0+Z2V0RmFsc2VFeHByZXNzaW9uKCktPnRyYXZlcnNlKHRoaXMpOwot
ICAgICAgICBkZWNyZW1lbnREZXB0aCgpOwogICAgIH0KIAogICAgIGlmICh2aXNpdCAmJiBwb3N0
VmlzaXQpCkBAIC02NjYsNiArNzUxLDggQEAgdm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJz
ZVRlcm5hcnkoVEludGVybVRlcm5hcnkgKm5vZGUpCiAvLyBUcmF2ZXJzZSBhbiBpZi1lbHNlIG5v
ZGUuICBTYW1lIGNvbW1lbnRzIGluIGJpbmFyeSBub2RlIGFwcGx5IGhlcmUuCiB2b2lkIFRJbnRl
cm1UcmF2ZXJzZXI6OnRyYXZlcnNlSWZFbHNlKFRJbnRlcm1JZkVsc2UgKm5vZGUpCiB7CisgICAg
U2NvcGVkTm9kZUluVHJhdmVyc2FsUGF0aCBhZGRUb1BhdGgodGhpcywgbm9kZSk7CisKICAgICBi
b29sIHZpc2l0ID0gdHJ1ZTsKIAogICAgIGlmIChwcmVWaXNpdCkKQEAgLTY3MywxMyArNzYwLDEx
IEBAIHZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VJZkVsc2UoVEludGVybUlmRWxzZSAq
bm9kZSkKIAogICAgIGlmICh2aXNpdCkKICAgICB7Ci0gICAgICAgIGluY3JlbWVudERlcHRoKG5v
ZGUpOwogICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7CiAgICAg
ICAgIGlmIChub2RlLT5nZXRUcnVlQmxvY2soKSkKICAgICAgICAgICAgIG5vZGUtPmdldFRydWVC
bG9jaygpLT50cmF2ZXJzZSh0aGlzKTsKICAgICAgICAgaWYgKG5vZGUtPmdldEZhbHNlQmxvY2so
KSkKICAgICAgICAgICAgIG5vZGUtPmdldEZhbHNlQmxvY2soKS0+dHJhdmVyc2UodGhpcyk7Ci0g
ICAgICAgIGRlY3JlbWVudERlcHRoKCk7CiAgICAgfQogCiAgICAgaWYgKHZpc2l0ICYmIHBvc3RW
aXNpdCkKQEAgLTY5MSw2ICs3NzYsOCBAQCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNl
SWZFbHNlKFRJbnRlcm1JZkVsc2UgKm5vZGUpCiAvLwogdm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0
cmF2ZXJzZVN3aXRjaChUSW50ZXJtU3dpdGNoICpub2RlKQogeworICAgIFNjb3BlZE5vZGVJblRy
YXZlcnNhbFBhdGggYWRkVG9QYXRoKHRoaXMsIG5vZGUpOworCiAgICAgYm9vbCB2aXNpdCA9IHRy
dWU7CiAKICAgICBpZiAocHJlVmlzaXQpCkBAIC02OTgsMTMgKzc4NSwxMSBAQCB2b2lkIFRJbnRl
cm1UcmF2ZXJzZXI6OnRyYXZlcnNlU3dpdGNoKFRJbnRlcm1Td2l0Y2ggKm5vZGUpCiAKICAgICBp
ZiAodmlzaXQpCiAgICAgewotICAgICAgICBpbmNyZW1lbnREZXB0aChub2RlKTsKICAgICAgICAg
bm9kZS0+Z2V0SW5pdCgpLT50cmF2ZXJzZSh0aGlzKTsKICAgICAgICAgaWYgKGluVmlzaXQpCiAg
ICAgICAgICAgICB2aXNpdCA9IHZpc2l0U3dpdGNoKEluVmlzaXQsIG5vZGUpOwogICAgICAgICBp
ZiAodmlzaXQgJiYgbm9kZS0+Z2V0U3RhdGVtZW50TGlzdCgpKQogICAgICAgICAgICAgbm9kZS0+
Z2V0U3RhdGVtZW50TGlzdCgpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgZGVjcmVtZW50RGVw
dGgoKTsKICAgICB9CiAKICAgICBpZiAodmlzaXQgJiYgcG9zdFZpc2l0KQpAQCAtNzE2LDYgKzgw
MSw4IEBAIHZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VTd2l0Y2goVEludGVybVN3aXRj
aCAqbm9kZSkKIC8vCiB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlQ2FzZShUSW50ZXJt
Q2FzZSAqbm9kZSkKIHsKKyAgICBTY29wZWROb2RlSW5UcmF2ZXJzYWxQYXRoIGFkZFRvUGF0aCh0
aGlzLCBub2RlKTsKKwogICAgIGJvb2wgdmlzaXQgPSB0cnVlOwogCiAgICAgaWYgKHByZVZpc2l0
KQpAQCAtNzIzLDkgKzgxMCw3IEBAIHZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VDYXNl
KFRJbnRlcm1DYXNlICpub2RlKQogCiAgICAgaWYgKHZpc2l0ICYmIG5vZGUtPmdldENvbmRpdGlv
bigpKQogICAgIHsKLSAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7CiAgICAgICAgIG5vZGUt
PmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgZGVjcmVtZW50RGVwdGgo
KTsKICAgICB9CiAKICAgICBpZiAodmlzaXQgJiYgcG9zdFZpc2l0KQpAQCAtNzM3LDYgKzgyMiw4
IEBAIHZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VDYXNlKFRJbnRlcm1DYXNlICpub2Rl
KQogLy8KIHZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VMb29wKFRJbnRlcm1Mb29wICpu
b2RlKQogeworICAgIFNjb3BlZE5vZGVJblRyYXZlcnNhbFBhdGggYWRkVG9QYXRoKHRoaXMsIG5v
ZGUpOworCiAgICAgYm9vbCB2aXNpdCA9IHRydWU7CiAKICAgICBpZiAocHJlVmlzaXQpCkBAIC03
NDQsOCArODMxLDYgQEAgdm9pZCBUSW50ZXJtVHJhdmVyc2VyOjp0cmF2ZXJzZUxvb3AoVEludGVy
bUxvb3AgKm5vZGUpCiAKICAgICBpZiAodmlzaXQpCiAgICAgewotICAgICAgICBpbmNyZW1lbnRE
ZXB0aChub2RlKTsKLQogICAgICAgICBpZiAobm9kZS0+Z2V0SW5pdCgpKQogICAgICAgICAgICAg
bm9kZS0+Z2V0SW5pdCgpLT50cmF2ZXJzZSh0aGlzKTsKIApAQCAtNzU3LDggKzg0Miw2IEBAIHZv
aWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VMb29wKFRJbnRlcm1Mb29wICpub2RlKQogCiAg
ICAgICAgIGlmIChub2RlLT5nZXRFeHByZXNzaW9uKCkpCiAgICAgICAgICAgICBub2RlLT5nZXRF
eHByZXNzaW9uKCktPnRyYXZlcnNlKHRoaXMpOwotCi0gICAgICAgIGRlY3JlbWVudERlcHRoKCk7
CiAgICAgfQogCiAgICAgaWYgKHZpc2l0ICYmIHBvc3RWaXNpdCkKQEAgLTc3MCw2ICs4NTMsOCBA
QCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlTG9vcChUSW50ZXJtTG9vcCAqbm9kZSkK
IC8vCiB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlQnJhbmNoKFRJbnRlcm1CcmFuY2gg
Km5vZGUpCiB7CisgICAgU2NvcGVkTm9kZUluVHJhdmVyc2FsUGF0aCBhZGRUb1BhdGgodGhpcywg
bm9kZSk7CisKICAgICBib29sIHZpc2l0ID0gdHJ1ZTsKIAogICAgIGlmIChwcmVWaXNpdCkKQEAg
LTc3Nyw5ICs4NjIsNyBAQCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlQnJhbmNoKFRJ
bnRlcm1CcmFuY2ggKm5vZGUpCiAKICAgICBpZiAodmlzaXQgJiYgbm9kZS0+Z2V0RXhwcmVzc2lv
bigpKQogICAgIHsKLSAgICAgICAgaW5jcmVtZW50RGVwdGgobm9kZSk7CiAgICAgICAgIG5vZGUt
PmdldEV4cHJlc3Npb24oKS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgIGRlY3JlbWVudERlcHRo
KCk7CiAgICAgfQogCiAgICAgaWYgKHZpc2l0ICYmIHBvc3RWaXNpdCkKQEAgLTc4OCw1ICs4NzEs
OCBAQCB2b2lkIFRJbnRlcm1UcmF2ZXJzZXI6OnRyYXZlcnNlQnJhbmNoKFRJbnRlcm1CcmFuY2gg
Km5vZGUpCiAKIHZvaWQgVEludGVybVRyYXZlcnNlcjo6dHJhdmVyc2VSYXcoVEludGVybVJhdyAq
bm9kZSkKIHsKKyAgICBTY29wZWROb2RlSW5UcmF2ZXJzYWxQYXRoIGFkZFRvUGF0aCh0aGlzLCBu
b2RlKTsKICAgICB2aXNpdFJhdyhub2RlKTsKIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9J
bnRlcm1lZGlhdGUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvSW50ZXJtZWRpYXRlLmNwcAppbmRleCA4ZTY1MTlkZDY4Ny4uMGIzOGViNWMyYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL0ludGVybWVkaWF0ZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtZWRpYXRlLmNwcApAQCAtMTUsNiArMTUsOSBAQAogI2lu
Y2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtZWRpYXRlLmgiCiAjaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwogLy8KIC8vIEZpcnN0IHNldCBvZiBmdW5jdGlvbnMgYXJlIHRvIGhl
bHAgYnVpbGQgdGhlIGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbi4KQEAgLTI4LDggKzMxLDEw
IEBACiAvLwogLy8gUmV0dXJucyB0aGUgYWRkZWQgbm9kZS4KIC8vCi1USW50ZXJtU3ltYm9sICpU
SW50ZXJtZWRpYXRlOjphZGRTeW1ib2woCi0gICAgaW50IGlkLCBjb25zdCBUU3RyaW5nICZuYW1l
LCBjb25zdCBUVHlwZSAmdHlwZSwgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkKK1RJbnRlcm1TeW1i
b2wgKlRJbnRlcm1lZGlhdGU6OmFkZFN5bWJvbChpbnQgaWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lKQogewog
ICAgIFRJbnRlcm1TeW1ib2wgKm5vZGUgPSBuZXcgVEludGVybVN5bWJvbChpZCwgbmFtZSwgdHlw
ZSk7CiAgICAgbm9kZS0+c2V0TGluZShsaW5lKTsKQEAgLTYyLDk1ICs2Nyw2IEBAIFRJbnRlcm1U
eXBlZCAqVEludGVybWVkaWF0ZTo6YWRkSW5kZXgoVE9wZXJhdG9yIG9wLAogICAgIHJldHVybiBu
b2RlOwogfQogCi0vLyBUaGlzIGlzIHRoZSBzYWZlIHdheSB0byBjaGFuZ2UgdGhlIG9wZXJhdG9y
IG9uIGFuIGFnZ3JlZ2F0ZSwgYXMgaXQKLS8vIGRvZXMgbG90cyBvZiBlcnJvciBjaGVja2luZyBh
bmQgZml4aW5nLiAgRXNwZWNpYWxseSBmb3IgZXN0YWJsaXNoaW5nCi0vLyBhIGZ1bmN0aW9uIGNh
bGwncyBvcGVyYXRpb24gb24gaXQncyBzZXQgb2YgcGFyYW1ldGVycy4KLS8vCi0vLyBSZXR1cm5z
IGFuIGFnZ3JlZ2F0ZSBub2RlLCB3aGljaCBjb3VsZCBiZSB0aGUgb25lIHBhc3NlZCBpbiBpZgot
Ly8gaXQgd2FzIGFscmVhZHkgYW4gYWdncmVnYXRlIGJ1dCBubyBvcGVyYXRvciB3YXMgc2V0Lgot
VEludGVybUFnZ3JlZ2F0ZSAqVEludGVybWVkaWF0ZTo6c2V0QWdncmVnYXRlT3BlcmF0b3IoCi0g
ICAgVEludGVybU5vZGUgKm5vZGUsIFRPcGVyYXRvciBvcCwgY29uc3QgVFNvdXJjZUxvYyAmbGlu
ZSkKLXsKLSAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dOb2RlOwotCi0gICAgLy8KLSAgICAvLyBN
YWtlIHN1cmUgd2UgaGF2ZSBhbiBhZ2dyZWdhdGUuICBJZiBub3QgdHVybiBpdCBpbnRvIG9uZS4K
LSAgICAvLwotICAgIGlmIChub2RlKQotICAgIHsKLSAgICAgICAgYWdnTm9kZSA9IG5vZGUtPmdl
dEFzQWdncmVnYXRlKCk7Ci0gICAgICAgIGlmIChhZ2dOb2RlID09IE5VTEwgfHwgYWdnTm9kZS0+
Z2V0T3AoKSAhPSBFT3BOdWxsKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLwotICAgICAgICAg
ICAgLy8gTWFrZSBhbiBhZ2dyZWdhdGUgY29udGFpbmluZyB0aGlzIG5vZGUuCi0gICAgICAgICAg
ICAvLwotICAgICAgICAgICAgYWdnTm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKCk7Ci0gICAg
ICAgICAgICBhZ2dOb2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sobm9kZSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgYWdnTm9kZSA9IG5ldyBUSW50ZXJt
QWdncmVnYXRlKCk7Ci0gICAgfQotCi0gICAgLy8KLSAgICAvLyBTZXQgdGhlIG9wZXJhdG9yLgot
ICAgIC8vCi0gICAgYWdnTm9kZS0+c2V0T3Aob3ApOwotICAgIGFnZ05vZGUtPnNldExpbmUobGlu
ZSk7Ci0KLSAgICByZXR1cm4gYWdnTm9kZTsKLX0KLQotLy8KLS8vIFNhZmUgd2F5IHRvIGNvbWJp
bmUgdHdvIG5vZGVzIGludG8gYW4gYWdncmVnYXRlLiAgV29ya3Mgd2l0aCBudWxsIHBvaW50ZXJz
LAotLy8gYSBub2RlIHRoYXQncyBub3QgYSBhZ2dyZWdhdGUgeWV0LCBldGMuCi0vLwotLy8gUmV0
dXJucyB0aGUgcmVzdWx0aW5nIGFnZ3JlZ2F0ZSwgdW5sZXNzIDAgd2FzIHBhc3NlZCBpbiBmb3IK
LS8vIGJvdGggZXhpc3Rpbmcgbm9kZXMuCi0vLwotVEludGVybUFnZ3JlZ2F0ZSAqVEludGVybWVk
aWF0ZTo6Z3Jvd0FnZ3JlZ2F0ZSgKLSAgICBUSW50ZXJtTm9kZSAqbGVmdCwgVEludGVybU5vZGUg
KnJpZ2h0LCBjb25zdCBUU291cmNlTG9jICZsaW5lKQotewotICAgIGlmIChsZWZ0ID09IE5VTEwg
JiYgcmlnaHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBUSW50ZXJtQWdn
cmVnYXRlICphZ2dOb2RlID0gTlVMTDsKLSAgICBpZiAobGVmdCkKLSAgICAgICAgYWdnTm9kZSA9
IGxlZnQtPmdldEFzQWdncmVnYXRlKCk7Ci0gICAgaWYgKCFhZ2dOb2RlIHx8IGFnZ05vZGUtPmdl
dE9wKCkgIT0gRU9wTnVsbCkKLSAgICB7Ci0gICAgICAgIGFnZ05vZGUgPSBuZXcgVEludGVybUFn
Z3JlZ2F0ZTsKLSAgICAgICAgaWYgKGxlZnQpCi0gICAgICAgICAgICBhZ2dOb2RlLT5nZXRTZXF1
ZW5jZSgpLT5wdXNoX2JhY2sobGVmdCk7Ci0gICAgfQotCi0gICAgaWYgKHJpZ2h0KQotICAgICAg
ICBhZ2dOb2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2socmlnaHQpOwotCi0gICAgYWdnTm9k
ZS0+c2V0TGluZShsaW5lKTsKLQotICAgIHJldHVybiBhZ2dOb2RlOwotfQotCi0vLwotLy8gVHVy
biBhbiBleGlzdGluZyBub2RlIGludG8gYW4gYWdncmVnYXRlLgotLy8KLS8vIFJldHVybnMgYW4g
YWdncmVnYXRlLCB1bmxlc3MgTlVMTCB3YXMgcGFzc2VkIGluIGZvciB0aGUgZXhpc3Rpbmcgbm9k
ZS4KLS8vCi1USW50ZXJtQWdncmVnYXRlICpUSW50ZXJtZWRpYXRlOjpNYWtlQWdncmVnYXRlKFRJ
bnRlcm1Ob2RlICpub2RlLCBjb25zdCBUU291cmNlTG9jICZsaW5lKQotewotICAgIGlmIChub2Rl
ID09IG51bGxwdHIpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgVEludGVybUFnZ3Jl
Z2F0ZSAqYWdnTm9kZSA9IG5ldyBUSW50ZXJtQWdncmVnYXRlOwotICAgIGFnZ05vZGUtPmdldFNl
cXVlbmNlKCktPnB1c2hfYmFjayhub2RlKTsKLQotICAgIGFnZ05vZGUtPnNldExpbmUobGluZSk7
Ci0KLSAgICByZXR1cm4gYWdnTm9kZTsKLX0KLQogLy8gSWYgdGhlIGlucHV0IG5vZGUgaXMgbnVs
bHB0ciwgcmV0dXJuIG51bGxwdHIuCiAvLyBJZiB0aGUgaW5wdXQgbm9kZSBpcyBhIGJsb2NrIG5v
ZGUsIHJldHVybiBpdC4KIC8vIElmIHRoZSBpbnB1dCBub2RlIGlzIG5vdCBhIGJsb2NrIG5vZGUs
IHB1dCBpdCBpbnNpZGUgYSBibG9jayBub2RlIGFuZCByZXR1cm4gdGhhdC4KQEAgLTI2NCw4ICsx
ODAsNyBAQCBUSW50ZXJtU3dpdGNoICpUSW50ZXJtZWRpYXRlOjphZGRTd2l0Y2goVEludGVybVR5
cGVkICppbml0LAogICAgIHJldHVybiBub2RlOwogfQogCi1USW50ZXJtQ2FzZSAqVEludGVybWVk
aWF0ZTo6YWRkQ2FzZSgKLSAgICBUSW50ZXJtVHlwZWQgKmNvbmRpdGlvbiwgY29uc3QgVFNvdXJj
ZUxvYyAmbGluZSkKK1RJbnRlcm1DYXNlICpUSW50ZXJtZWRpYXRlOjphZGRDYXNlKFRJbnRlcm1U
eXBlZCAqY29uZGl0aW9uLCBjb25zdCBUU291cmNlTG9jICZsaW5lKQogewogICAgIFRJbnRlcm1D
YXNlICpub2RlID0gbmV3IFRJbnRlcm1DYXNlKGNvbmRpdGlvbik7CiAgICAgbm9kZS0+c2V0TGlu
ZShsaW5lKTsKQEAgLTMxMyw5ICsyMjgsMTIgQEAgVEludGVybVR5cGVkICpUSW50ZXJtZWRpYXRl
OjpBZGRTd2l6emxlKFRJbnRlcm1UeXBlZCAqYmFzZUV4cHJlc3Npb24sCiAvLwogLy8gQ3JlYXRl
IGxvb3Agbm9kZXMuCiAvLwotVEludGVybU5vZGUgKlRJbnRlcm1lZGlhdGU6OmFkZExvb3AoCi0g
ICAgVExvb3BUeXBlIHR5cGUsIFRJbnRlcm1Ob2RlICppbml0LCBUSW50ZXJtVHlwZWQgKmNvbmQs
IFRJbnRlcm1UeXBlZCAqZXhwciwKLSAgICBUSW50ZXJtTm9kZSAqYm9keSwgY29uc3QgVFNvdXJj
ZUxvYyAmbGluZSkKK1RJbnRlcm1Ob2RlICpUSW50ZXJtZWRpYXRlOjphZGRMb29wKFRMb29wVHlw
ZSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUg
KmluaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQg
KmNvbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQg
KmV4cHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAq
Ym9keSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VM
b2MgJmxpbmUpCiB7CiAgICAgVEludGVybU5vZGUgKm5vZGUgPSBuZXcgVEludGVybUxvb3AodHlw
ZSwgaW5pdCwgY29uZCwgZXhwciwgRW5zdXJlQmxvY2soYm9keSkpOwogICAgIG5vZGUtPnNldExp
bmUobGluZSk7CkBAIC0zMjYsMTQgKzI0NCwxNCBAQCBUSW50ZXJtTm9kZSAqVEludGVybWVkaWF0
ZTo6YWRkTG9vcCgKIC8vCiAvLyBBZGQgYnJhbmNoZXMuCiAvLwotVEludGVybUJyYW5jaCogVElu
dGVybWVkaWF0ZTo6YWRkQnJhbmNoKAotICAgIFRPcGVyYXRvciBicmFuY2hPcCwgY29uc3QgVFNv
dXJjZUxvYyAmbGluZSkKK1RJbnRlcm1CcmFuY2ggKlRJbnRlcm1lZGlhdGU6OmFkZEJyYW5jaChU
T3BlcmF0b3IgYnJhbmNoT3AsIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpCiB7CiAgICAgcmV0dXJu
IGFkZEJyYW5jaChicmFuY2hPcCwgMCwgbGluZSk7CiB9CiAKLVRJbnRlcm1CcmFuY2gqIFRJbnRl
cm1lZGlhdGU6OmFkZEJyYW5jaCgKLSAgICBUT3BlcmF0b3IgYnJhbmNoT3AsIFRJbnRlcm1UeXBl
ZCAqZXhwcmVzc2lvbiwgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkKK1RJbnRlcm1CcmFuY2ggKlRJ
bnRlcm1lZGlhdGU6OmFkZEJyYW5jaChUT3BlcmF0b3IgYnJhbmNoT3AsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpleHByZXNzaW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxp
bmUpCiB7CiAgICAgVEludGVybUJyYW5jaCAqbm9kZSA9IG5ldyBUSW50ZXJtQnJhbmNoKGJyYW5j
aE9wLCBleHByZXNzaW9uKTsKICAgICBub2RlLT5zZXRMaW5lKGxpbmUpOwpAQCAtMzU1LDIwICsy
NzMsMjMgQEAgVEludGVybVR5cGVkICpUSW50ZXJtZWRpYXRlOjpmb2xkQWdncmVnYXRlQnVpbHRJ
bihUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGUsCiAgICAgICAgIGNhc2UgRU9wTWl4OgogICAg
ICAgICBjYXNlIEVPcFN0ZXA6CiAgICAgICAgIGNhc2UgRU9wU21vb3RoU3RlcDoKLSAgICAgICAg
Y2FzZSBFT3BNdWw6CisgICAgICAgIGNhc2UgRU9wTGRleHA6CisgICAgICAgIGNhc2UgRU9wTXVs
TWF0cml4Q29tcG9uZW50V2lzZToKICAgICAgICAgY2FzZSBFT3BPdXRlclByb2R1Y3Q6Ci0gICAg
ICAgIGNhc2UgRU9wTGVzc1RoYW46Ci0gICAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbDoKLSAg
ICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbjoKLSAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVx
dWFsOgotICAgICAgICBjYXNlIEVPcFZlY3RvckVxdWFsOgotICAgICAgICBjYXNlIEVPcFZlY3Rv
ck5vdEVxdWFsOgorICAgICAgICBjYXNlIEVPcEVxdWFsQ29tcG9uZW50V2lzZToKKyAgICAgICAg
Y2FzZSBFT3BOb3RFcXVhbENvbXBvbmVudFdpc2U6CisgICAgICAgIGNhc2UgRU9wTGVzc1RoYW5D
b21wb25lbnRXaXNlOgorICAgICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWxDb21wb25lbnRXaXNl
OgorICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuQ29tcG9uZW50V2lzZToKKyAgICAgICAgY2Fz
ZSBFT3BHcmVhdGVyVGhhbkVxdWFsQ29tcG9uZW50V2lzZToKICAgICAgICAgY2FzZSBFT3BEaXN0
YW5jZToKICAgICAgICAgY2FzZSBFT3BEb3Q6CiAgICAgICAgIGNhc2UgRU9wQ3Jvc3M6CiAgICAg
ICAgIGNhc2UgRU9wRmFjZUZvcndhcmQ6CiAgICAgICAgIGNhc2UgRU9wUmVmbGVjdDoKICAgICAg
ICAgY2FzZSBFT3BSZWZyYWN0OgorICAgICAgICBjYXNlIEVPcEJpdGZpZWxkRXh0cmFjdDoKKyAg
ICAgICAgY2FzZSBFT3BCaXRmaWVsZEluc2VydDoKICAgICAgICAgICAgIHJldHVybiBhZ2dyZWdh
dGUtPmZvbGQoZGlhZ25vc3RpY3MpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLy8g
VE9ETzogQWRkIHN1cHBvcnQgZm9yIGZvbGRpbmcgYXJyYXkgY29uc3RydWN0b3JzCkBAIC0zODAs
MyArMzAxLDUgQEAgVEludGVybVR5cGVkICpUSW50ZXJtZWRpYXRlOjpmb2xkQWdncmVnYXRlQnVp
bHRJbihUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGUsCiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiB9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtZWRpYXRlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1l
ZGlhdGUuaAppbmRleCBhNGZiN2NjOWU3Yi4uZWIxZDFkMGU1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0ludGVybWVkaWF0ZS5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0lu
dGVybWVkaWF0ZS5oCkBAIC05LDYgKzksOSBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci9JbnRlcm1Ob2RlLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBzdHJ1Y3QgVFZlY3RvckZp
ZWxkcwogewogICAgIGludCBvZmZzZXRzWzRdOwpAQCAtMjQsMjAgKzI3LDEzIEBAIGNsYXNzIFRJ
bnRlcm1lZGlhdGUKICAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7CiAgICAgVEludGVy
bWVkaWF0ZSgpIHt9CiAKLSAgICBUSW50ZXJtU3ltYm9sICphZGRTeW1ib2woCi0gICAgICAgIGlu
dCBpZCwgY29uc3QgVFN0cmluZyAmLCBjb25zdCBUVHlwZSAmLCBjb25zdCBUU291cmNlTG9jICYp
OworICAgIFRJbnRlcm1TeW1ib2wgKmFkZFN5bWJvbChpbnQgaWQsIGNvbnN0IFRTdHJpbmcgJiwg
Y29uc3QgVFR5cGUgJiwgY29uc3QgVFNvdXJjZUxvYyAmKTsKICAgICBUSW50ZXJtVHlwZWQgKmFk
ZEluZGV4KFRPcGVyYXRvciBvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1U
eXBlZCAqYmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5k
ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVERpYWdub3N0aWNzICpkaWFnbm9zdGljcyk7Ci0g
ICAgVEludGVybVR5cGVkICphZGRVbmFyeU1hdGgoCi0gICAgICAgIFRPcGVyYXRvciBvcCwgVElu
dGVybVR5cGVkICpjaGlsZCwgY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFR5cGUgKmZ1
bmNSZXR1cm5UeXBlKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlICpncm93QWdncmVnYXRlKAotICAg
ICAgICBUSW50ZXJtTm9kZSAqbGVmdCwgVEludGVybU5vZGUgKnJpZ2h0LCBjb25zdCBUU291cmNl
TG9jICYpOwotICAgIHN0YXRpYyBUSW50ZXJtQWdncmVnYXRlICpNYWtlQWdncmVnYXRlKFRJbnRl
cm1Ob2RlICpub2RlLCBjb25zdCBUU291cmNlTG9jICZsaW5lKTsKICAgICBzdGF0aWMgVEludGVy
bUJsb2NrICpFbnN1cmVCbG9jayhUSW50ZXJtTm9kZSAqbm9kZSk7Ci0gICAgVEludGVybUFnZ3Jl
Z2F0ZSAqc2V0QWdncmVnYXRlT3BlcmF0b3IoVEludGVybU5vZGUgKiwgVE9wZXJhdG9yLCBjb25z
dCBUU291cmNlTG9jICYpOwogICAgIFRJbnRlcm1Ob2RlICphZGRJZkVsc2UoVEludGVybVR5cGVk
ICpjb25kLCBUSW50ZXJtTm9kZVBhaXIgY29kZSwgY29uc3QgVFNvdXJjZUxvYyAmbGluZSk7CiAg
ICAgc3RhdGljIFRJbnRlcm1UeXBlZCAqQWRkVGVybmFyeVNlbGVjdGlvbihUSW50ZXJtVHlwZWQg
KmNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50
ZXJtVHlwZWQgKnRydWVFeHByZXNzaW9uLApAQCAtNDYsOCArNDIsNyBAQCBjbGFzcyBUSW50ZXJt
ZWRpYXRlCiAgICAgVEludGVybVN3aXRjaCAqYWRkU3dpdGNoKFRJbnRlcm1UeXBlZCAqaW5pdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUJsb2NrICpzdGF0ZW1lbnRMaXN0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lKTsK
LSAgICBUSW50ZXJtQ2FzZSAqYWRkQ2FzZSgKLSAgICAgICAgVEludGVybVR5cGVkICpjb25kaXRp
b24sIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpOworICAgIFRJbnRlcm1DYXNlICphZGRDYXNlKFRJ
bnRlcm1UeXBlZCAqY29uZGl0aW9uLCBjb25zdCBUU291cmNlTG9jICZsaW5lKTsKICAgICBzdGF0
aWMgVEludGVybVR5cGVkICpBZGRDb21tYShUSW50ZXJtVHlwZWQgKmxlZnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpyaWdodCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lLApAQCAtNTUsOCAr
NTAsMTIgQEAgY2xhc3MgVEludGVybWVkaWF0ZQogICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICph
ZGRDb25zdGFudFVuaW9uKGNvbnN0IFRDb25zdGFudFVuaW9uICpjb25zdGFudFVuaW9uLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3Vy
Y2VMb2MgJmxpbmUpOwotICAgIFRJbnRlcm1Ob2RlICphZGRMb29wKFRMb29wVHlwZSwgVEludGVy
bU5vZGUgKiwgVEludGVybVR5cGVkICosIFRJbnRlcm1UeXBlZCAqLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIFRJbnRlcm1Ob2RlICosIGNvbnN0IFRTb3VyY2VMb2MgJik7CisgICAgVEludGVy
bU5vZGUgKmFkZExvb3AoVExvb3BUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRl
cm1Ob2RlICosCisgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICosCisgICAg
ICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICosCisgICAgICAgICAgICAgICAgICAg
ICAgICAgVEludGVybU5vZGUgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291
cmNlTG9jICYpOwogICAgIFRJbnRlcm1CcmFuY2ggKmFkZEJyYW5jaChUT3BlcmF0b3IsIGNvbnN0
IFRTb3VyY2VMb2MgJik7CiAgICAgVEludGVybUJyYW5jaCAqYWRkQnJhbmNoKFRPcGVyYXRvciwg
VEludGVybVR5cGVkICosIGNvbnN0IFRTb3VyY2VMb2MgJik7CiAgICAgc3RhdGljIFRJbnRlcm1U
eXBlZCAqQWRkU3dpenpsZShUSW50ZXJtVHlwZWQgKmJhc2VFeHByZXNzaW9uLApAQCAtNjgsNyAr
NjcsOSBAQCBjbGFzcyBUSW50ZXJtZWRpYXRlCiAgICAgVEludGVybVR5cGVkICpmb2xkQWdncmVn
YXRlQnVpbHRJbihUSW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGUsIFREaWFnbm9zdGljcyAqZGlh
Z25vc3RpY3MpOwogCiAgIHByaXZhdGU6Ci0gICAgdm9pZCBvcGVyYXRvcj0oVEludGVybWVkaWF0
ZSAmKTsgLy8gcHJldmVudCBhc3NpZ25tZW50cworICAgIHZvaWQgb3BlcmF0b3I9KFRJbnRlcm1l
ZGlhdGUgJik7ICAvLyBwcmV2ZW50IGFzc2lnbm1lbnRzCiB9OwogCit9ICAvLyBuYW1lc3BhY2Ug
c2gKKwogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0lOVEVSTUVESUFURV9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
TG9vcEluZm8uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvTG9vcEluZm8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTMxYTE4
YTIzMS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvTG9vcEluZm8uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjExICswLDAg
QEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0xv
b3BJbmZvLmgiCi0KLW5hbWVzcGFjZQotewotCi1pbnQgRXZhbHVhdGVJbnRDb25zdGFudChUSW50
ZXJtQ29uc3RhbnRVbmlvbiAqbm9kZSkKLXsKLSAgICBBU1NFUlQobm9kZSAmJiBub2RlLT5nZXRV
bmlvbkFycmF5UG9pbnRlcigpKTsKLSAgICByZXR1cm4gbm9kZS0+Z2V0SUNvbnN0KDApOwotfQot
Ci1pbnQgR2V0TG9vcEludEluY3JlbWVudChUSW50ZXJtTG9vcCAqbm9kZSkKLXsKLSAgICBUSW50
ZXJtTm9kZSAqZXhwciA9IG5vZGUtPmdldEV4cHJlc3Npb24oKTsKLSAgICAvLyBmb3IgZXhwcmVz
c2lvbiBoYXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgZm9ybXM6Ci0gICAgLy8gICAgIGxvb3BfaW5k
ZXgrKwotICAgIC8vICAgICBsb29wX2luZGV4LS0KLSAgICAvLyAgICAgbG9vcF9pbmRleCArPSBj
b25zdGFudF9leHByZXNzaW9uCi0gICAgLy8gICAgIGxvb3BfaW5kZXggLT0gY29uc3RhbnRfZXhw
cmVzc2lvbgotICAgIC8vICAgICArK2xvb3BfaW5kZXgKLSAgICAvLyAgICAgLS1sb29wX2luZGV4
Ci0gICAgLy8gVGhlIGxhc3QgdHdvIGZvcm1zIGFyZSBub3Qgc3BlY2lmaWVkIGluIHRoZSBzcGVj
LCBidXQgSSBhbSBhc3N1bWluZwotICAgIC8vIGl0cyBhbiBvdmVyc2lnaHQuCi0gICAgVEludGVy
bVVuYXJ5ICp1bk9wID0gZXhwci0+Z2V0QXNVbmFyeU5vZGUoKTsKLSAgICBUSW50ZXJtQmluYXJ5
ICpiaW5PcCA9IHVuT3AgPyBOVUxMIDogZXhwci0+Z2V0QXNCaW5hcnlOb2RlKCk7Ci0KLSAgICBU
T3BlcmF0b3Igb3AgPSBFT3BOdWxsOwotICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICppbmNyZW1l
bnROb2RlID0gTlVMTDsKLSAgICBpZiAodW5PcCkKLSAgICB7Ci0gICAgICAgIG9wID0gdW5PcC0+
Z2V0T3AoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoYmluT3ApCi0gICAgewotICAgICAgICBvcCA9
IGJpbk9wLT5nZXRPcCgpOwotICAgICAgICBBU1NFUlQoYmluT3AtPmdldFJpZ2h0KCkpOwotICAg
ICAgICBpbmNyZW1lbnROb2RlID0gYmluT3AtPmdldFJpZ2h0KCktPmdldEFzQ29uc3RhbnRVbmlv
bigpOwotICAgICAgICBBU1NFUlQoaW5jcmVtZW50Tm9kZSk7Ci0gICAgfQotCi0gICAgaW50IGlu
Y3JlbWVudCA9IDA7Ci0gICAgLy8gVGhlIG9wZXJhdG9yIGlzIG9uZSBvZjogKysgLS0gKz0gLT0u
Ci0gICAgc3dpdGNoIChvcCkKLSAgICB7Ci0gICAgICBjYXNlIEVPcFBvc3RJbmNyZW1lbnQ6Ci0g
ICAgICBjYXNlIEVPcFByZUluY3JlbWVudDoKLSAgICAgICAgQVNTRVJUKHVuT3AgJiYgIWJpbk9w
KTsKLSAgICAgICAgaW5jcmVtZW50ID0gMTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVP
cFBvc3REZWNyZW1lbnQ6Ci0gICAgICBjYXNlIEVPcFByZURlY3JlbWVudDoKLSAgICAgICAgQVNT
RVJUKHVuT3AgJiYgIWJpbk9wKTsKLSAgICAgICAgaW5jcmVtZW50ID0gLTE7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFT3BBZGRBc3NpZ246Ci0gICAgICAgIEFTU0VSVCghdW5PcCAmJiBi
aW5PcCk7Ci0gICAgICAgIGluY3JlbWVudCA9IEV2YWx1YXRlSW50Q29uc3RhbnQoaW5jcmVtZW50
Tm9kZSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BTdWJBc3NpZ246Ci0gICAgICAg
IEFTU0VSVCghdW5PcCAmJiBiaW5PcCk7Ci0gICAgICAgIGluY3JlbWVudCA9IC0gRXZhbHVhdGVJ
bnRDb25zdGFudChpbmNyZW1lbnROb2RlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0
OgotICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgIH0KLQotICAgIHJldHVybiBpbmNyZW1lbnQ7
Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBhbm9ueW1vdXMKLQotVExvb3BJbmRleEluZm86OlRMb29w
SW5kZXhJbmZvKCkKLSAgICA6IG1JZCgtMSksCi0gICAgICBtVHlwZShFYnRWb2lkKSwKLSAgICAg
IG1Jbml0VmFsdWUoMCksCi0gICAgICBtU3RvcFZhbHVlKDApLAotICAgICAgbUluY3JlbWVudFZh
bHVlKDApLAotICAgICAgbU9wKEVPcE51bGwpLAotICAgICAgbUN1cnJlbnRWYWx1ZSgwKQotewot
fQotCi12b2lkIFRMb29wSW5kZXhJbmZvOjpmaWxsSW5mbyhUSW50ZXJtTG9vcCAqbm9kZSkKLXsK
LSAgICBpZiAobm9kZSA9PSBOVUxMKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBIZXJlIHdl
IGFzc3VtZSBhbGwgdGhlIG9wZXJhdGlvbnMgYXJlIHZhbGlkLCBiZWNhdXNlIHRoZSBsb29wIG5v
ZGUgaXMKLSAgICAvLyBhbHJlYWR5IHZhbGlkYXRlZCBpbiBWYWxpZGF0ZUxpbWl0YXRpb25zLgot
ICAgIFRJbnRlcm1TZXF1ZW5jZSAqZGVjbFNlcSA9Ci0gICAgICAgIG5vZGUtPmdldEluaXQoKS0+
Z2V0QXNBZ2dyZWdhdGUoKS0+Z2V0U2VxdWVuY2UoKTsKLSAgICBUSW50ZXJtQmluYXJ5ICpkZWNs
SW5pdCA9ICgqZGVjbFNlcSlbMF0tPmdldEFzQmluYXJ5Tm9kZSgpOwotICAgIFRJbnRlcm1TeW1i
b2wgKnN5bWJvbCA9IGRlY2xJbml0LT5nZXRMZWZ0KCktPmdldEFzU3ltYm9sTm9kZSgpOwotCi0g
ICAgbUlkID0gc3ltYm9sLT5nZXRJZCgpOwotICAgIG1UeXBlID0gc3ltYm9sLT5nZXRCYXNpY1R5
cGUoKTsKLQotICAgIGlmIChtVHlwZSA9PSBFYnRJbnQpCi0gICAgewotICAgICAgICBUSW50ZXJt
Q29uc3RhbnRVbmlvbiogaW5pdE5vZGUgPSBkZWNsSW5pdC0+Z2V0UmlnaHQoKS0+Z2V0QXNDb25z
dGFudFVuaW9uKCk7Ci0gICAgICAgIG1Jbml0VmFsdWUgPSBFdmFsdWF0ZUludENvbnN0YW50KGlu
aXROb2RlKTsKLSAgICAgICAgbUN1cnJlbnRWYWx1ZSA9IG1Jbml0VmFsdWU7Ci0gICAgICAgIG1J
bmNyZW1lbnRWYWx1ZSA9IEdldExvb3BJbnRJbmNyZW1lbnQobm9kZSk7Ci0KLSAgICAgICAgVElu
dGVybUJpbmFyeSogYmluT3AgPSBub2RlLT5nZXRDb25kaXRpb24oKS0+Z2V0QXNCaW5hcnlOb2Rl
KCk7Ci0gICAgICAgIG1TdG9wVmFsdWUgPSBFdmFsdWF0ZUludENvbnN0YW50KAotICAgICAgICAg
ICAgYmluT3AtPmdldFJpZ2h0KCktPmdldEFzQ29uc3RhbnRVbmlvbigpKTsKLSAgICAgICAgbU9w
ID0gYmluT3AtPmdldE9wKCk7Ci0gICAgfQotfQotCi1ib29sIFRMb29wSW5kZXhJbmZvOjpzYXRp
c2ZpZXNMb29wQ29uZGl0aW9uKCkgY29uc3QKLXsKLSAgICAvLyBSZWxhdGlvbmFsIG9wZXJhdG9y
IGlzIG9uZSBvZjogPiA+PSA8IDw9ID09IG9yICE9LgotICAgIHN3aXRjaCAobU9wKQotICAgIHsK
LSAgICAgIGNhc2UgRU9wRXF1YWw6Ci0gICAgICAgIHJldHVybiAobUN1cnJlbnRWYWx1ZSA9PSBt
U3RvcFZhbHVlKTsKLSAgICAgIGNhc2UgRU9wTm90RXF1YWw6Ci0gICAgICAgIHJldHVybiAobUN1
cnJlbnRWYWx1ZSAhPSBtU3RvcFZhbHVlKTsKLSAgICAgIGNhc2UgRU9wTGVzc1RoYW46Ci0gICAg
ICAgIHJldHVybiAobUN1cnJlbnRWYWx1ZSA8IG1TdG9wVmFsdWUpOwotICAgICAgY2FzZSBFT3BH
cmVhdGVyVGhhbjoKLSAgICAgICAgcmV0dXJuIChtQ3VycmVudFZhbHVlID4gbVN0b3BWYWx1ZSk7
Ci0gICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6Ci0gICAgICAgIHJldHVybiAobUN1cnJlbnRW
YWx1ZSA8PSBtU3RvcFZhbHVlKTsKLSAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW5FcXVhbDoKLSAg
ICAgICAgcmV0dXJuIChtQ3VycmVudFZhbHVlID49IG1TdG9wVmFsdWUpOwotICAgICAgZGVmYXVs
dDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
LX0KLQotVExvb3BJbmZvOjpUTG9vcEluZm8oKQotICAgIDogbG9vcChOVUxMKQotewotfQotCi1U
TG9vcEluZm86OlRMb29wSW5mbyhUSW50ZXJtTG9vcCAqbm9kZSkKLSAgICA6IGxvb3Aobm9kZSkK
LXsKLSAgICBpbmRleC5maWxsSW5mbyhub2RlKTsKLX0KLQotVEludGVybUxvb3AgKlRMb29wU3Rh
Y2s6OmZpbmRMb29wKFRJbnRlcm1TeW1ib2wgKnN5bWJvbCkKLXsKLSAgICBpZiAoIXN5bWJvbCkK
LSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZm9yIChpdGVyYXRvciBpdGVyID0gYmVnaW4oKTsg
aXRlciAhPSBlbmQoKTsgKytpdGVyKQotICAgIHsKLSAgICAgICAgaWYgKGl0ZXItPmluZGV4Lmdl
dElkKCkgPT0gc3ltYm9sLT5nZXRJZCgpKQotICAgICAgICAgICAgcmV0dXJuIGl0ZXItPmxvb3A7
Ci0gICAgfQotICAgIHJldHVybiBOVUxMOwotfQotCi1UTG9vcEluZGV4SW5mbyAqVExvb3BTdGFj
azo6Z2V0SW5kZXhJbmZvKFRJbnRlcm1TeW1ib2wgKnN5bWJvbCkKLXsKLSAgICBpZiAoIXN5bWJv
bCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgZm9yIChpdGVyYXRvciBpdGVyID0gYmVnaW4o
KTsgaXRlciAhPSBlbmQoKTsgKytpdGVyKQotICAgIHsKLSAgICAgICAgaWYgKGl0ZXItPmluZGV4
LmdldElkKCkgPT0gc3ltYm9sLT5nZXRJZCgpKQotICAgICAgICAgICAgcmV0dXJuICYoaXRlci0+
aW5kZXgpOwotICAgIH0KLSAgICByZXR1cm4gTlVMTDsKLX0KLQotdm9pZCBUTG9vcFN0YWNrOjpz
dGVwKCkKLXsKLSAgICBBU1NFUlQoIWVtcHR5KCkpOwotICAgIHJiZWdpbigpLT5pbmRleC5zdGVw
KCk7Ci19Ci0KLWJvb2wgVExvb3BTdGFjazo6c2F0aXNmaWVzTG9vcENvbmRpdGlvbigpCi17Ci0g
ICAgQVNTRVJUKCFlbXB0eSgpKTsKLSAgICByZXR1cm4gcmJlZ2luKCktPmluZGV4LnNhdGlzZmll
c0xvb3BDb25kaXRpb24oKTsKLX0KLQotYm9vbCBUTG9vcFN0YWNrOjpuZWVkc1RvUmVwbGFjZVN5
bWJvbFdpdGhWYWx1ZShUSW50ZXJtU3ltYm9sICpzeW1ib2wpCi17Ci0gICAgVEludGVybUxvb3Ag
Kmxvb3AgPSBmaW5kTG9vcChzeW1ib2wpOwotICAgIHJldHVybiBsb29wICYmIGxvb3AtPmdldFVu
cm9sbEZsYWcoKTsKLX0KLQotaW50IFRMb29wU3RhY2s6OmdldExvb3BJbmRleFZhbHVlKFRJbnRl
cm1TeW1ib2wgKnN5bWJvbCkKLXsKLSAgICBUTG9vcEluZGV4SW5mbyAqaW5mbyA9IGdldEluZGV4
SW5mbyhzeW1ib2wpOwotICAgIEFTU0VSVChpbmZvKTsKLSAgICByZXR1cm4gaW5mby0+Z2V0Q3Vy
cmVudFZhbHVlKCk7Ci19Ci0KLXZvaWQgVExvb3BTdGFjazo6cHVzaChUSW50ZXJtTG9vcCAqbG9v
cCkKLXsKLSAgICBUTG9vcEluZm8gaW5mbyhsb29wKTsKLSAgICBwdXNoX2JhY2soaW5mbyk7Ci19
Ci0KLXZvaWQgVExvb3BTdGFjazo6cG9wKCkKLXsKLSAgICBwb3BfYmFjaygpOwotfQotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9M
b29wSW5mby5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvTG9vcEluZm8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM3M2ZkMGZhNTIu
LjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL0xvb3BJbmZvLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vLwot
Ly8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCi0vLwotCi0jaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfTE9PUElORk9fSF8K
LSNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9MT09QSU5GT19IXwotCi0jaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCi0KLWNsYXNzIFRMb29wSW5kZXhJbmZvCi17
Ci0gIHB1YmxpYzoKLSAgICBUTG9vcEluZGV4SW5mbygpOwotCi0gICAgLy8gSWYgdHlwZSBpcyBF
YnRJbnQsIGZpbGwgYWxsIGZpZWxkcyBvZiB0aGUgc3RydWN0dXJlIHdpdGggaW5mbwotICAgIC8v
IGV4dHJhY3RlZCBmcm9tIGEgbG9vcCBub2RlLgotICAgIC8vIElmIHR5cGUgaXMgbm90IEVidElu
dCwgb25seSBmaWxsIGlkIGFuZCB0eXBlLgotICAgIHZvaWQgZmlsbEluZm8oVEludGVybUxvb3Ag
Km5vZGUpOwotCi0gICAgaW50IGdldElkKCkgY29uc3QgeyByZXR1cm4gbUlkOyB9Ci0gICAgdm9p
ZCBzZXRJZChpbnQgaWQpIHsgbUlkID0gaWQ7IH0KLSAgICBUQmFzaWNUeXBlIGdldFR5cGUoKSBj
b25zdCB7IHJldHVybiBtVHlwZTsgfQotICAgIHZvaWQgc2V0VHlwZShUQmFzaWNUeXBlIHR5cGUp
IHsgbVR5cGUgPSB0eXBlOyB9Ci0gICAgaW50IGdldEN1cnJlbnRWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1DdXJyZW50VmFsdWU7IH0KLQotICAgIHZvaWQgc3RlcCgpIHsgbUN1cnJlbnRWYWx1ZSAr
PSBtSW5jcmVtZW50VmFsdWU7IH0KLQotICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IHZhbHVl
IHNhdGlzZmllcyB0aGUgbG9vcCBjb25kaXRpb24uCi0gICAgYm9vbCBzYXRpc2ZpZXNMb29wQ29u
ZGl0aW9uKCkgY29uc3Q7Ci0KLSAgcHJpdmF0ZToKLSAgICBpbnQgbUlkOwotICAgIFRCYXNpY1R5
cGUgbVR5cGU7ICAvLyBFaXRoZXIgRWJ0SW50IG9yIEVidEZsb2F0Ci0KLSAgICAvLyBCZWxvdyBm
aWVsZHMgYXJlIG9ubHkgdmFsaWQgaWYgdGhlIGluZGV4J3MgdHlwZSBpcyBpbnQuCi0gICAgaW50
IG1Jbml0VmFsdWU7Ci0gICAgaW50IG1TdG9wVmFsdWU7Ci0gICAgaW50IG1JbmNyZW1lbnRWYWx1
ZTsKLSAgICBUT3BlcmF0b3IgbU9wOwotICAgIGludCBtQ3VycmVudFZhbHVlOwotfTsKLQotc3Ry
dWN0IFRMb29wSW5mbwotewotICAgIFRMb29wSW5kZXhJbmZvIGluZGV4OwotICAgIFRJbnRlcm1M
b29wICpsb29wOwotCi0gICAgVExvb3BJbmZvKCk7Ci0gICAgVExvb3BJbmZvKFRJbnRlcm1Mb29w
ICpub2RlKTsKLX07Ci0KLWNsYXNzIFRMb29wU3RhY2sgOiBwdWJsaWMgVFZlY3RvcjxUTG9vcElu
Zm8+Ci17Ci0gIHB1YmxpYzoKLSAgICAvLyBTZWFyY2ggbG9vcCBzdGFjayBmb3IgYSBsb29wIHdo
b3NlIGluZGV4IG1hdGNoZXMgdGhlIGlucHV0IHN5bWJvbC4KLSAgICBUSW50ZXJtTG9vcCAqZmlu
ZExvb3AoVEludGVybVN5bWJvbCAqc3ltYm9sKTsKLQotICAgIC8vIEZpbmQgdGhlIGxvb3AgaW5k
ZXggaW5mbyBpbiB0aGUgbG9vcCBzdGFjayBieSB0aGUgaW5wdXQgc3ltYm9sLgotICAgIFRMb29w
SW5kZXhJbmZvICpnZXRJbmRleEluZm8oVEludGVybVN5bWJvbCAqc3ltYm9sKTsKLQotICAgIC8v
IFVwZGF0ZSB0aGUgY3VycmVudFZhbHVlIGZvciB0aGUgbmV4dCBsb29wIGl0ZXJhdGlvbi4KLSAg
ICB2b2lkIHN0ZXAoKTsKLQotICAgIC8vIFJldHVybiBmYWxzZSBpZiBsb29wIGNvbmRpdGlvbiBp
cyBubyBsb25nZXIgc2F0aXNmaWVkLgotICAgIGJvb2wgc2F0aXNmaWVzTG9vcENvbmRpdGlvbigp
OwotCi0gICAgLy8gQ2hlY2sgaWYgdGhlIHN5bWJvbCBpcyB0aGUgaW5kZXggb2YgYSBsb29wIHRo
YXQncyB1bnJvbGxlZC4KLSAgICBib29sIG5lZWRzVG9SZXBsYWNlU3ltYm9sV2l0aFZhbHVlKFRJ
bnRlcm1TeW1ib2wgKnN5bWJvbCk7Ci0KLSAgICAvLyBSZXR1cm4gdGhlIGN1cnJlbnQgdmFsdWUg
b2YgYSBnaXZlbiBsb29wIGluZGV4IHN5bWJvbC4KLSAgICBpbnQgZ2V0TG9vcEluZGV4VmFsdWUo
VEludGVybVN5bWJvbCAqc3ltYm9sKTsKLQotICAgIHZvaWQgcHVzaChUSW50ZXJtTG9vcCAqaW5m
byk7Ci0gICAgdm9pZCBwb3AoKTsKLX07Ci0KLSNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9S
X0xPT1BJTkZPX0hfCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL01NYXAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL01NYXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZmNhODQzOTkyYjYuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL01NYXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAg
QEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRPUl9NTUFQ
X0hfCi0jZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfTU1BUF9IXwotCi0vLwotLy8gRW5jYXBz
dWxhdGUgbWVtb3J5IG1hcHBlZCBmaWxlcwotLy8KLQotY2xhc3MgVE1NYXAgewotcHVibGljOgot
ICAgIFRNTWFwKGNvbnN0IGNoYXIqIGZpbGVOYW1lKSA6IAotICAgICAgICBmU2l6ZSgtMSksIC8v
IC0xIGlzIHRoZSBlcnJvciB2YWx1ZSByZXR1cm5lZCBieSBHZXRGaWxlU2l6ZSgpCi0gICAgICAg
IGZwKE5VTEwpLAotICAgICAgICBmQnVmZigwKSAgIC8vIDAgaXMgdGhlIGVycm9yIHZhbHVlIHJl
dHVybmVkIGJ5IE1hcFZpZXdPZkZpbGUoKQotICAgIHsKLSAgICAgICAgaWYgKChmcCA9IGZvcGVu
KGZpbGVOYW1lLCAiciIpKSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBj
aGFyIGMgPSBnZXRjKGZwKTsKLSAgICAgICAgZlNpemUgPSAwOwotICAgICAgICB3aGlsZSAoYyAh
PSBFT0YpIHsKLSAgICAgICAgICAgIGZTaXplKys7Ci0gICAgICAgICAgICBjID0gZ2V0YyhmcCk7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGMgPT0gRU9GKQotICAgICAgICAgICAgZlNpemUrKzsK
LSAgICAgICAgcmV3aW5kKGZwKTsKLSAgICAgICAgZkJ1ZmYgPSAoY2hhciopbWFsbG9jKHNpemVv
ZihjaGFyKSAqIGZTaXplKTsKLSAgICAgICAgaW50IGNvdW50ID0gMDsKLSAgICAgICAgYyA9IGdl
dGMoZnApOwotICAgICAgICB3aGlsZSAoYyAhPSBFT0YpIHsKLSAgICAgICAgICAgIGZCdWZmW2Nv
dW50KytdID0gYzsKLSAgICAgICAgICAgIGMgPSBnZXRjKGZwKTsKLSAgICAgICAgfQotICAgICAg
ICBmQnVmZltjb3VudCsrXSA9IGM7Ci0gICAgfQotCi0gICAgY2hhciogZ2V0RGF0YSgpIHsgcmV0
dXJuIGZCdWZmOyB9Ci0gICAgaW50ICAgZ2V0U2l6ZSgpIHsgcmV0dXJuIGZTaXplOyB9Ci0KLSAg
ICB+VE1NYXAoKSB7Ci0gICAgICAgIGlmIChmcCAhPSBOVUxMKQotICAgICAgICAgICAgZmNsb3Nl
KGZwKTsKLSAgICB9Ci0gICAgCi1wcml2YXRlOgotICAgIGludCAgICAgICAgICAgICBmU2l6ZTsg
ICAgICAvLyBzaXplIG9mIGZpbGUgdG8gbWFwIGluCi0gICAgRklMRSAqZnA7Ci0gICAgY2hhciog
ICAgICAgICAgIGZCdWZmOyAgICAgIC8vIHRoZSBhY3R1YWwgZGF0YTsKLX07Ci0KLSNlbmRpZiAv
LyBDT01QSUxFUl9UUkFOU0xBVE9SX01NQVBfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL05vZGVTZWFyY2guaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL05vZGVTZWFyY2guaAppbmRl
eCBiMTNiMWJhYWJiMC4uOTZiMGIzMzg2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL05vZGVTZWFyY2guaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Ob2RlU2VhcmNoLmgKQEAg
LTE4LDEwICsxOCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBQYXJlbnQ+CiBjbGFzcyBOb2RlU2VhcmNo
VHJhdmVyc2VyIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKIHsKICAgcHVibGljOgotICAgIE5v
ZGVTZWFyY2hUcmF2ZXJzZXIoKQotICAgICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFs
c2UsIGZhbHNlKSwKLSAgICAgICAgICBtRm91bmQoZmFsc2UpCi0gICAge30KKyAgICBOb2RlU2Vh
cmNoVHJhdmVyc2VyKCkgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksIG1G
b3VuZChmYWxzZSkge30KIAogICAgIGJvb2wgZm91bmQoKSBjb25zdCB7IHJldHVybiBtRm91bmQ7
IH0KIApAQCAtNDMsMTcgKzQwLDE3IEBAIGNsYXNzIEZpbmREaXNjYXJkIDogcHVibGljIE5vZGVT
ZWFyY2hUcmF2ZXJzZXI8RmluZERpc2NhcmQ+CiAgICAgewogICAgICAgICBzd2l0Y2ggKG5vZGUt
PmdldEZsb3dPcCgpKQogICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBFT3BLaWxsOgotICAgICAg
ICAgICAgbUZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBFT3BLaWxsOgorICAgICAgICAgICAgICAgIG1Gb3VuZCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKLSAgICAgICAgICBkZWZhdWx0OiBicmVhazsKKyAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4g
IW1Gb3VuZDsKICAgICB9CiB9OwotCiB9CiAKLSNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9S
X05PREVTRUFSQ0hfSF8KKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9OT0RFU0VBUkNI
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9PcGVyYXRvci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9PcGVyYXRvci5jcHAKaW5kZXggMGI2OTNlMmQwNDIuLmZjMmE5ODFkMzc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9PcGVyYXRvci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvT3BlcmF0b3IuY3BwCkBAIC0xMCwxODkgKzEwLDM5MSBAQCBjb25zdCBj
aGFyICpHZXRPcGVyYXRvclN0cmluZyhUT3BlcmF0b3Igb3ApCiB7CiAgICAgc3dpdGNoIChvcCkK
ICAgICB7Ci0gICAgICAvLyBOb3RlOiBvcHMgZnJvbSBFT3BOdWxsIHRvIEVPcFByb3RvdHlwZSBj
YW4ndCBiZSBoYW5kbGVkIGhlcmUuCi0KLSAgICAgIGNhc2UgRU9wTmVnYXRpdmU6IHJldHVybiAi
LSI7Ci0gICAgICBjYXNlIEVPcFBvc2l0aXZlOiByZXR1cm4gIisiOwotICAgICAgY2FzZSBFT3BM
b2dpY2FsTm90OiByZXR1cm4gIiEiOwotICAgICAgY2FzZSBFT3BWZWN0b3JMb2dpY2FsTm90OiBy
ZXR1cm4gIm5vdCI7Ci0gICAgICBjYXNlIEVPcEJpdHdpc2VOb3Q6IHJldHVybiAifiI7Ci0KLSAg
ICAgIGNhc2UgRU9wUG9zdEluY3JlbWVudDogcmV0dXJuICIrKyI7Ci0gICAgICBjYXNlIEVPcFBv
c3REZWNyZW1lbnQ6IHJldHVybiAiLS0iOwotICAgICAgY2FzZSBFT3BQcmVJbmNyZW1lbnQ6IHJl
dHVybiAiKysiOwotICAgICAgY2FzZSBFT3BQcmVEZWNyZW1lbnQ6IHJldHVybiAiLS0iOwotCi0g
ICAgICBjYXNlIEVPcEFkZDogcmV0dXJuICIrIjsKLSAgICAgIGNhc2UgRU9wU3ViOiByZXR1cm4g
Ii0iOwotICAgICAgY2FzZSBFT3BNdWw6IHJldHVybiAiKiI7Ci0gICAgICBjYXNlIEVPcERpdjog
cmV0dXJuICIvIjsKLSAgICAgIGNhc2UgRU9wSU1vZDogcmV0dXJuICIlIjsKLSAgICAgIGNhc2Ug
RU9wRXF1YWw6IHJldHVybiAiPT0iOwotICAgICAgY2FzZSBFT3BOb3RFcXVhbDogcmV0dXJuICIh
PSI7Ci0gICAgICBjYXNlIEVPcFZlY3RvckVxdWFsOiByZXR1cm4gImVxdWFsIjsKLSAgICAgIGNh
c2UgRU9wVmVjdG9yTm90RXF1YWw6IHJldHVybiAibm90RXF1YWwiOwotICAgICAgY2FzZSBFT3BM
ZXNzVGhhbjogcmV0dXJuICI8IjsKLSAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW46IHJldHVybiAi
PiI7Ci0gICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6IHJldHVybiAiPD0iOwotICAgICAgY2Fz
ZSBFT3BHcmVhdGVyVGhhbkVxdWFsOiByZXR1cm4gIj49IjsKLSAgICAgIGNhc2UgRU9wQ29tbWE6
IHJldHVybiAiLCI7Ci0KLSAgICAgIC8vIEZhbGwtdGhyb3VnaC4KLSAgICAgIGNhc2UgRU9wVmVj
dG9yVGltZXNTY2FsYXI6Ci0gICAgICBjYXNlIEVPcFZlY3RvclRpbWVzTWF0cml4OgotICAgICAg
Y2FzZSBFT3BNYXRyaXhUaW1lc1ZlY3RvcjoKLSAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2Fs
YXI6IHJldHVybiAiKiI7Ci0KLSAgICAgIGNhc2UgRU9wTG9naWNhbE9yOiByZXR1cm4gInx8IjsK
LSAgICAgIGNhc2UgRU9wTG9naWNhbFhvcjogcmV0dXJuICJeXiI7Ci0gICAgICBjYXNlIEVPcExv
Z2ljYWxBbmQ6IHJldHVybiAiJiYiOwotCi0gICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVmdDogcmV0
dXJuICI8PCI7Ci0gICAgICBjYXNlIEVPcEJpdFNoaWZ0UmlnaHQ6IHJldHVybiAiPj4iOwotCi0g
ICAgICBjYXNlIEVPcEJpdHdpc2VBbmQ6IHJldHVybiAiJiI7Ci0gICAgICBjYXNlIEVPcEJpdHdp
c2VYb3I6IHJldHVybiAiXiI7Ci0gICAgICBjYXNlIEVPcEJpdHdpc2VPcjogcmV0dXJuICJ8IjsK
LQotICAgICAgLy8gRmFsbC10aHJvdWdoLgotICAgICAgY2FzZSBFT3BJbmRleERpcmVjdDoKLSAg
ICAgIGNhc2UgRU9wSW5kZXhJbmRpcmVjdDogcmV0dXJuICJbXSI7Ci0KLSAgICAgIGNhc2UgRU9w
SW5kZXhEaXJlY3RTdHJ1Y3Q6Ci0gICAgICBjYXNlIEVPcEluZGV4RGlyZWN0SW50ZXJmYWNlQmxv
Y2s6IHJldHVybiAiLiI7Ci0KLSAgICAgIGNhc2UgRU9wUmFkaWFuczogcmV0dXJuICJyYWRpYW5z
IjsKLSAgICAgIGNhc2UgRU9wRGVncmVlczogcmV0dXJuICJkZWdyZWVzIjsKLSAgICAgIGNhc2Ug
RU9wU2luOiByZXR1cm4gInNpbiI7Ci0gICAgICBjYXNlIEVPcENvczogcmV0dXJuICJjb3MiOwot
ICAgICAgY2FzZSBFT3BUYW46IHJldHVybiAidGFuIjsKLSAgICAgIGNhc2UgRU9wQXNpbjogcmV0
dXJuICJhc2luIjsKLSAgICAgIGNhc2UgRU9wQWNvczogcmV0dXJuICJhY29zIjsKLSAgICAgIGNh
c2UgRU9wQXRhbjogcmV0dXJuICJhdGFuIjsKLQotICAgICAgY2FzZSBFT3BTaW5oOiByZXR1cm4g
InNpbmgiOwotICAgICAgY2FzZSBFT3BDb3NoOiByZXR1cm4gImNvc2giOwotICAgICAgY2FzZSBF
T3BUYW5oOiByZXR1cm4gInRhbmgiOwotICAgICAgY2FzZSBFT3BBc2luaDogcmV0dXJuICJhc2lu
aCI7Ci0gICAgICBjYXNlIEVPcEFjb3NoOiByZXR1cm4gImFjb3NoIjsKLSAgICAgIGNhc2UgRU9w
QXRhbmg6IHJldHVybiAiYXRhbmgiOwotCi0gICAgICBjYXNlIEVPcFBvdzogcmV0dXJuICJwb3ci
OwotICAgICAgY2FzZSBFT3BFeHA6IHJldHVybiAiZXhwIjsKLSAgICAgIGNhc2UgRU9wTG9nOiBy
ZXR1cm4gImxvZyI7Ci0gICAgICBjYXNlIEVPcEV4cDI6IHJldHVybiAiZXhwMiI7Ci0gICAgICBj
YXNlIEVPcExvZzI6IHJldHVybiAibG9nMiI7Ci0gICAgICBjYXNlIEVPcFNxcnQ6IHJldHVybiAi
c3FydCI7Ci0gICAgICBjYXNlIEVPcEludmVyc2VTcXJ0OiByZXR1cm4gImludmVyc2VzcXJ0IjsK
LQotICAgICAgY2FzZSBFT3BBYnM6IHJldHVybiAiYWJzIjsKLSAgICAgIGNhc2UgRU9wU2lnbjog
cmV0dXJuICJzaWduIjsKLSAgICAgIGNhc2UgRU9wRmxvb3I6IHJldHVybiAiZmxvb3IiOwotICAg
ICAgY2FzZSBFT3BUcnVuYzogcmV0dXJuICJ0cnVuYyI7Ci0gICAgICBjYXNlIEVPcFJvdW5kOiBy
ZXR1cm4gInJvdW5kIjsKLSAgICAgIGNhc2UgRU9wUm91bmRFdmVuOiByZXR1cm4gInJvdW5kRXZl
biI7Ci0gICAgICBjYXNlIEVPcENlaWw6IHJldHVybiAiY2VpbCI7Ci0gICAgICBjYXNlIEVPcEZy
YWN0OiByZXR1cm4gImZyYWN0IjsKLSAgICAgIGNhc2UgRU9wTW9kOiByZXR1cm4gIm1vZCI7Ci0g
ICAgICBjYXNlIEVPcE1vZGY6IHJldHVybiAibW9kZiI7Ci0gICAgICBjYXNlIEVPcE1pbjogcmV0
dXJuICJtaW4iOwotICAgICAgY2FzZSBFT3BNYXg6IHJldHVybiAibWF4IjsKLSAgICAgIGNhc2Ug
RU9wQ2xhbXA6IHJldHVybiAiY2xhbXAiOwotICAgICAgY2FzZSBFT3BNaXg6IHJldHVybiAibWl4
IjsKLSAgICAgIGNhc2UgRU9wU3RlcDogcmV0dXJuICJzdGVwIjsKLSAgICAgIGNhc2UgRU9wU21v
b3RoU3RlcDogcmV0dXJuICJzbW9vdGhzdGVwIjsKLSAgICAgIGNhc2UgRU9wSXNOYW46IHJldHVy
biAiaXNuYW4iOwotICAgICAgY2FzZSBFT3BJc0luZjogcmV0dXJuICJpc2luZiI7Ci0KLSAgICAg
IGNhc2UgRU9wRmxvYXRCaXRzVG9JbnQ6IHJldHVybiAiZmxvYXRCaXRzVG9JbnQiOwotICAgICAg
Y2FzZSBFT3BGbG9hdEJpdHNUb1VpbnQ6IHJldHVybiAiZmxvYXRCaXRzVG9VaW50IjsKLSAgICAg
IGNhc2UgRU9wSW50Qml0c1RvRmxvYXQ6IHJldHVybiAiaW50Qml0c1RvRmxvYXQiOwotICAgICAg
Y2FzZSBFT3BVaW50Qml0c1RvRmxvYXQ6IHJldHVybiAidWludEJpdHNUb0Zsb2F0IjsKLQotICAg
ICAgY2FzZSBFT3BQYWNrU25vcm0yeDE2OiByZXR1cm4gInBhY2tTbm9ybTJ4MTYiOwotICAgICAg
Y2FzZSBFT3BQYWNrVW5vcm0yeDE2OiByZXR1cm4gInBhY2tVbm9ybTJ4MTYiOwotICAgICAgY2Fz
ZSBFT3BQYWNrSGFsZjJ4MTY6IHJldHVybiAicGFja0hhbGYyeDE2IjsKLSAgICAgIGNhc2UgRU9w
VW5wYWNrU25vcm0yeDE2OiByZXR1cm4gInVucGFja1Nub3JtMngxNiI7Ci0gICAgICBjYXNlIEVP
cFVucGFja1Vub3JtMngxNjogcmV0dXJuICJ1bnBhY2tVbm9ybTJ4MTYiOwotICAgICAgY2FzZSBF
T3BVbnBhY2tIYWxmMngxNjogcmV0dXJuICJ1bnBhY2tIYWxmMngxNiI7Ci0KLSAgICAgIGNhc2Ug
RU9wTGVuZ3RoOiByZXR1cm4gImxlbmd0aCI7Ci0gICAgICBjYXNlIEVPcERpc3RhbmNlOiByZXR1
cm4gImRpc3RhbmNlIjsKLSAgICAgIGNhc2UgRU9wRG90OiByZXR1cm4gImRvdCI7Ci0gICAgICBj
YXNlIEVPcENyb3NzOiByZXR1cm4gImNyb3NzIjsKLSAgICAgIGNhc2UgRU9wTm9ybWFsaXplOiBy
ZXR1cm4gIm5vcm1hbGl6ZSI7Ci0gICAgICBjYXNlIEVPcEZhY2VGb3J3YXJkOiByZXR1cm4gImZh
Y2Vmb3J3YXJkIjsKLSAgICAgIGNhc2UgRU9wUmVmbGVjdDogcmV0dXJuICJyZWZsZWN0IjsKLSAg
ICAgIGNhc2UgRU9wUmVmcmFjdDogcmV0dXJuICJyZWZyYWN0IjsKLQotICAgICAgY2FzZSBFT3BE
RmR4OiByZXR1cm4gImRGZHgiOwotICAgICAgY2FzZSBFT3BERmR5OiByZXR1cm4gImRGZHkiOwot
ICAgICAgY2FzZSBFT3BGd2lkdGg6IHJldHVybiAiZndpZHRoIjsKLQotICAgICAgY2FzZSBFT3BN
YXRyaXhUaW1lc01hdHJpeDogcmV0dXJuICIqIjsKLQotICAgICAgY2FzZSBFT3BPdXRlclByb2R1
Y3Q6IHJldHVybiAib3V0ZXJQcm9kdWN0IjsKLSAgICAgIGNhc2UgRU9wVHJhbnNwb3NlOiByZXR1
cm4gInRyYW5zcG9zZSI7Ci0gICAgICBjYXNlIEVPcERldGVybWluYW50OiByZXR1cm4gImRldGVy
bWluYW50IjsKLSAgICAgIGNhc2UgRU9wSW52ZXJzZTogcmV0dXJuICJpbnZlcnNlIjsKLQotICAg
ICAgY2FzZSBFT3BBbnk6IHJldHVybiAiYW55IjsKLSAgICAgIGNhc2UgRU9wQWxsOiByZXR1cm4g
ImFsbCI7Ci0KLSAgICAgIGNhc2UgRU9wS2lsbDogcmV0dXJuICJraWxsIjsKLSAgICAgIGNhc2Ug
RU9wUmV0dXJuOiByZXR1cm4gInJldHVybiI7Ci0gICAgICBjYXNlIEVPcEJyZWFrOiByZXR1cm4g
ImJyZWFrIjsKLSAgICAgIGNhc2UgRU9wQ29udGludWU6IHJldHVybiAiY29udGludWUiOwotCi0g
ICAgICBjYXNlIEVPcENvbnN0cnVjdEludDogcmV0dXJuICJpbnQiOwotICAgICAgY2FzZSBFT3BD
b25zdHJ1Y3RVSW50OiByZXR1cm4gInVpbnQiOwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCb29s
OiByZXR1cm4gImJvb2wiOwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RGbG9hdDogcmV0dXJuICJm
bG9hdCI7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdFZlYzI6IHJldHVybiAidmVjMiI7Ci0gICAg
ICBjYXNlIEVPcENvbnN0cnVjdFZlYzM6IHJldHVybiAidmVjMyI7Ci0gICAgICBjYXNlIEVPcENv
bnN0cnVjdFZlYzQ6IHJldHVybiAidmVjNCI7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWMy
OiByZXR1cm4gImJ2ZWMyIjsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0QlZlYzM6IHJldHVybiAi
YnZlYzMiOwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVjNDogcmV0dXJuICJidmVjNCI7Ci0g
ICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWMyOiByZXR1cm4gIml2ZWMyIjsKLSAgICAgIGNhc2Ug
RU9wQ29uc3RydWN0SVZlYzM6IHJldHVybiAiaXZlYzMiOwotICAgICAgY2FzZSBFT3BDb25zdHJ1
Y3RJVmVjNDogcmV0dXJuICJpdmVjNCI7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdFVWZWMyOiBy
ZXR1cm4gInV2ZWMyIjsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0VVZlYzM6IHJldHVybiAidXZl
YzMiOwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RVVmVjNDogcmV0dXJuICJ1dmVjNCI7Ci0gICAg
ICBjYXNlIEVPcENvbnN0cnVjdE1hdDI6IHJldHVybiAibWF0MiI7Ci0gICAgICBjYXNlIEVPcENv
bnN0cnVjdE1hdDJ4MzogcmV0dXJuICJtYXQyeDMiOwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RN
YXQyeDQ6IHJldHVybiAibWF0Mng0IjsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0M3gyOiBy
ZXR1cm4gIm1hdDN4MiI7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDM6IHJldHVybiAibWF0
MyI7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4NDogcmV0dXJuICJtYXQzeDQiOwotICAg
ICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0eDI6IHJldHVybiAibWF0NHgyIjsKLSAgICAgIGNhc2Ug
RU9wQ29uc3RydWN0TWF0NHgzOiByZXR1cm4gIm1hdDR4MyI7Ci0gICAgICBjYXNlIEVPcENvbnN0
cnVjdE1hdDQ6IHJldHVybiAibWF0NCI7Ci0gICAgICAvLyBOb3RlOiBFT3BDb25zdHJ1Y3RTdHJ1
Y3QgY2FuJ3QgYmUgaGFuZGxlZCBoZXJlCi0KLSAgICAgIGNhc2UgRU9wQXNzaWduOiByZXR1cm4g
Ij0iOwotICAgICAgY2FzZSBFT3BJbml0aWFsaXplOiByZXR1cm4gIj0iOwotICAgICAgY2FzZSBF
T3BBZGRBc3NpZ246IHJldHVybiAiKz0iOwotICAgICAgY2FzZSBFT3BTdWJBc3NpZ246IHJldHVy
biAiLT0iOwotCi0gICAgICAvLyBGYWxsLXRocm91Z2guCi0gICAgICBjYXNlIEVPcE11bEFzc2ln
bjoKLSAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXhBc3NpZ246Ci0gICAgICBjYXNlIEVP
cFZlY3RvclRpbWVzU2NhbGFyQXNzaWduOgotICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxh
ckFzc2lnbjoKLSAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXhBc3NpZ246IHJldHVybiAi
Kj0iOwotCi0gICAgICBjYXNlIEVPcERpdkFzc2lnbjogcmV0dXJuICIvPSI7Ci0gICAgICBjYXNl
IEVPcElNb2RBc3NpZ246IHJldHVybiAiJT0iOwotICAgICAgY2FzZSBFT3BCaXRTaGlmdExlZnRB
c3NpZ246IHJldHVybiAiPDw9IjsKLSAgICAgIGNhc2UgRU9wQml0U2hpZnRSaWdodEFzc2lnbjog
cmV0dXJuICI+Pj0iOwotICAgICAgY2FzZSBFT3BCaXR3aXNlQW5kQXNzaWduOiByZXR1cm4gIiY9
IjsKLSAgICAgIGNhc2UgRU9wQml0d2lzZVhvckFzc2lnbjogcmV0dXJuICJePSI7Ci0gICAgICBj
YXNlIEVPcEJpdHdpc2VPckFzc2lnbjogcmV0dXJuICJ8PSI7Ci0KLSAgICAgIGRlZmF1bHQ6IGJy
ZWFrOworICAgICAgICAvLyBOb3RlOiBFT3BOdWxsIGFuZCBFT3BDYWxsKiBjYW4ndCBiZSBoYW5k
bGVkIGhlcmUuCisKKyAgICAgICAgY2FzZSBFT3BOZWdhdGl2ZToKKyAgICAgICAgICAgIHJldHVy
biAiLSI7CisgICAgICAgIGNhc2UgRU9wUG9zaXRpdmU6CisgICAgICAgICAgICByZXR1cm4gIisi
OworICAgICAgICBjYXNlIEVPcExvZ2ljYWxOb3Q6CisgICAgICAgICAgICByZXR1cm4gIiEiOwor
ICAgICAgICBjYXNlIEVPcEJpdHdpc2VOb3Q6CisgICAgICAgICAgICByZXR1cm4gIn4iOworCisg
ICAgICAgIGNhc2UgRU9wUG9zdEluY3JlbWVudDoKKyAgICAgICAgICAgIHJldHVybiAiKysiOwor
ICAgICAgICBjYXNlIEVPcFBvc3REZWNyZW1lbnQ6CisgICAgICAgICAgICByZXR1cm4gIi0tIjsK
KyAgICAgICAgY2FzZSBFT3BQcmVJbmNyZW1lbnQ6CisgICAgICAgICAgICByZXR1cm4gIisrIjsK
KyAgICAgICAgY2FzZSBFT3BQcmVEZWNyZW1lbnQ6CisgICAgICAgICAgICByZXR1cm4gIi0tIjsK
KworICAgICAgICBjYXNlIEVPcEFkZDoKKyAgICAgICAgICAgIHJldHVybiAiKyI7CisgICAgICAg
IGNhc2UgRU9wU3ViOgorICAgICAgICAgICAgcmV0dXJuICItIjsKKyAgICAgICAgY2FzZSBFT3BN
dWw6CisgICAgICAgICAgICByZXR1cm4gIioiOworICAgICAgICBjYXNlIEVPcERpdjoKKyAgICAg
ICAgICAgIHJldHVybiAiLyI7CisgICAgICAgIGNhc2UgRU9wSU1vZDoKKyAgICAgICAgICAgIHJl
dHVybiAiJSI7CisKKyAgICAgICAgY2FzZSBFT3BFcXVhbDoKKyAgICAgICAgICAgIHJldHVybiAi
PT0iOworICAgICAgICBjYXNlIEVPcE5vdEVxdWFsOgorICAgICAgICAgICAgcmV0dXJuICIhPSI7
CisgICAgICAgIGNhc2UgRU9wTGVzc1RoYW46CisgICAgICAgICAgICByZXR1cm4gIjwiOworICAg
ICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuOgorICAgICAgICAgICAgcmV0dXJuICI+IjsKKyAgICAg
ICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFsOgorICAgICAgICAgICAgcmV0dXJuICI8PSI7CisgICAg
ICAgIGNhc2UgRU9wR3JlYXRlclRoYW5FcXVhbDoKKyAgICAgICAgICAgIHJldHVybiAiPj0iOwor
CisgICAgICAgIGNhc2UgRU9wRXF1YWxDb21wb25lbnRXaXNlOgorICAgICAgICAgICAgcmV0dXJu
ICJlcXVhbCI7CisgICAgICAgIGNhc2UgRU9wTm90RXF1YWxDb21wb25lbnRXaXNlOgorICAgICAg
ICAgICAgcmV0dXJuICJub3RFcXVhbCI7CisgICAgICAgIGNhc2UgRU9wTGVzc1RoYW5Db21wb25l
bnRXaXNlOgorICAgICAgICAgICAgcmV0dXJuICJsZXNzVGhhbiI7CisgICAgICAgIGNhc2UgRU9w
R3JlYXRlclRoYW5Db21wb25lbnRXaXNlOgorICAgICAgICAgICAgcmV0dXJuICJncmVhdGVyVGhh
biI7CisgICAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbENvbXBvbmVudFdpc2U6CisgICAgICAg
ICAgICByZXR1cm4gImxlc3NUaGFuRXF1YWwiOworICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFu
RXF1YWxDb21wb25lbnRXaXNlOgorICAgICAgICAgICAgcmV0dXJuICJncmVhdGVyVGhhbkVxdWFs
IjsKKworICAgICAgICBjYXNlIEVPcENvbW1hOgorICAgICAgICAgICAgcmV0dXJuICIsIjsKKwor
ICAgICAgICAvLyBGYWxsLXRocm91Z2guCisgICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2Fs
YXI6CisgICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNNYXRyaXg6CisgICAgICAgIGNhc2UgRU9w
TWF0cml4VGltZXNWZWN0b3I6CisgICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNTY2FsYXI6Cisg
ICAgICAgIGNhc2UgRU9wTWF0cml4VGltZXNNYXRyaXg6CisgICAgICAgICAgICByZXR1cm4gIioi
OworCisgICAgICAgIGNhc2UgRU9wTG9naWNhbE9yOgorICAgICAgICAgICAgcmV0dXJuICJ8fCI7
CisgICAgICAgIGNhc2UgRU9wTG9naWNhbFhvcjoKKyAgICAgICAgICAgIHJldHVybiAiXl4iOwor
ICAgICAgICBjYXNlIEVPcExvZ2ljYWxBbmQ6CisgICAgICAgICAgICByZXR1cm4gIiYmIjsKKwor
ICAgICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVmdDoKKyAgICAgICAgICAgIHJldHVybiAiPDwiOwor
ICAgICAgICBjYXNlIEVPcEJpdFNoaWZ0UmlnaHQ6CisgICAgICAgICAgICByZXR1cm4gIj4+IjsK
KworICAgICAgICBjYXNlIEVPcEJpdHdpc2VBbmQ6CisgICAgICAgICAgICByZXR1cm4gIiYiOwor
ICAgICAgICBjYXNlIEVPcEJpdHdpc2VYb3I6CisgICAgICAgICAgICByZXR1cm4gIl4iOworICAg
ICAgICBjYXNlIEVPcEJpdHdpc2VPcjoKKyAgICAgICAgICAgIHJldHVybiAifCI7CisKKyAgICAg
ICAgLy8gRmFsbC10aHJvdWdoLgorICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0OgorICAgICAg
ICBjYXNlIEVPcEluZGV4SW5kaXJlY3Q6CisgICAgICAgICAgICByZXR1cm4gIltdIjsKKworICAg
ICAgICBjYXNlIEVPcEluZGV4RGlyZWN0U3RydWN0OgorICAgICAgICBjYXNlIEVPcEluZGV4RGly
ZWN0SW50ZXJmYWNlQmxvY2s6CisgICAgICAgICAgICByZXR1cm4gIi4iOworCisgICAgICAgIGNh
c2UgRU9wUmFkaWFuczoKKyAgICAgICAgICAgIHJldHVybiAicmFkaWFucyI7CisgICAgICAgIGNh
c2UgRU9wRGVncmVlczoKKyAgICAgICAgICAgIHJldHVybiAiZGVncmVlcyI7CisgICAgICAgIGNh
c2UgRU9wU2luOgorICAgICAgICAgICAgcmV0dXJuICJzaW4iOworICAgICAgICBjYXNlIEVPcENv
czoKKyAgICAgICAgICAgIHJldHVybiAiY29zIjsKKyAgICAgICAgY2FzZSBFT3BUYW46CisgICAg
ICAgICAgICByZXR1cm4gInRhbiI7CisgICAgICAgIGNhc2UgRU9wQXNpbjoKKyAgICAgICAgICAg
IHJldHVybiAiYXNpbiI7CisgICAgICAgIGNhc2UgRU9wQWNvczoKKyAgICAgICAgICAgIHJldHVy
biAiYWNvcyI7CisgICAgICAgIGNhc2UgRU9wQXRhbjoKKyAgICAgICAgICAgIHJldHVybiAiYXRh
biI7CisKKyAgICAgICAgY2FzZSBFT3BTaW5oOgorICAgICAgICAgICAgcmV0dXJuICJzaW5oIjsK
KyAgICAgICAgY2FzZSBFT3BDb3NoOgorICAgICAgICAgICAgcmV0dXJuICJjb3NoIjsKKyAgICAg
ICAgY2FzZSBFT3BUYW5oOgorICAgICAgICAgICAgcmV0dXJuICJ0YW5oIjsKKyAgICAgICAgY2Fz
ZSBFT3BBc2luaDoKKyAgICAgICAgICAgIHJldHVybiAiYXNpbmgiOworICAgICAgICBjYXNlIEVP
cEFjb3NoOgorICAgICAgICAgICAgcmV0dXJuICJhY29zaCI7CisgICAgICAgIGNhc2UgRU9wQXRh
bmg6CisgICAgICAgICAgICByZXR1cm4gImF0YW5oIjsKKworICAgICAgICBjYXNlIEVPcFBvdzoK
KyAgICAgICAgICAgIHJldHVybiAicG93IjsKKyAgICAgICAgY2FzZSBFT3BFeHA6CisgICAgICAg
ICAgICByZXR1cm4gImV4cCI7CisgICAgICAgIGNhc2UgRU9wTG9nOgorICAgICAgICAgICAgcmV0
dXJuICJsb2ciOworICAgICAgICBjYXNlIEVPcEV4cDI6CisgICAgICAgICAgICByZXR1cm4gImV4
cDIiOworICAgICAgICBjYXNlIEVPcExvZzI6CisgICAgICAgICAgICByZXR1cm4gImxvZzIiOwor
ICAgICAgICBjYXNlIEVPcFNxcnQ6CisgICAgICAgICAgICByZXR1cm4gInNxcnQiOworICAgICAg
ICBjYXNlIEVPcEludmVyc2VTcXJ0OgorICAgICAgICAgICAgcmV0dXJuICJpbnZlcnNlc3FydCI7
CisKKyAgICAgICAgY2FzZSBFT3BBYnM6CisgICAgICAgICAgICByZXR1cm4gImFicyI7CisgICAg
ICAgIGNhc2UgRU9wU2lnbjoKKyAgICAgICAgICAgIHJldHVybiAic2lnbiI7CisgICAgICAgIGNh
c2UgRU9wRmxvb3I6CisgICAgICAgICAgICByZXR1cm4gImZsb29yIjsKKyAgICAgICAgY2FzZSBF
T3BUcnVuYzoKKyAgICAgICAgICAgIHJldHVybiAidHJ1bmMiOworICAgICAgICBjYXNlIEVPcFJv
dW5kOgorICAgICAgICAgICAgcmV0dXJuICJyb3VuZCI7CisgICAgICAgIGNhc2UgRU9wUm91bmRF
dmVuOgorICAgICAgICAgICAgcmV0dXJuICJyb3VuZEV2ZW4iOworICAgICAgICBjYXNlIEVPcENl
aWw6CisgICAgICAgICAgICByZXR1cm4gImNlaWwiOworICAgICAgICBjYXNlIEVPcEZyYWN0Ogor
ICAgICAgICAgICAgcmV0dXJuICJmcmFjdCI7CisgICAgICAgIGNhc2UgRU9wTW9kOgorICAgICAg
ICAgICAgcmV0dXJuICJtb2QiOworICAgICAgICBjYXNlIEVPcE1vZGY6CisgICAgICAgICAgICBy
ZXR1cm4gIm1vZGYiOworICAgICAgICBjYXNlIEVPcE1pbjoKKyAgICAgICAgICAgIHJldHVybiAi
bWluIjsKKyAgICAgICAgY2FzZSBFT3BNYXg6CisgICAgICAgICAgICByZXR1cm4gIm1heCI7Cisg
ICAgICAgIGNhc2UgRU9wQ2xhbXA6CisgICAgICAgICAgICByZXR1cm4gImNsYW1wIjsKKyAgICAg
ICAgY2FzZSBFT3BNaXg6CisgICAgICAgICAgICByZXR1cm4gIm1peCI7CisgICAgICAgIGNhc2Ug
RU9wU3RlcDoKKyAgICAgICAgICAgIHJldHVybiAic3RlcCI7CisgICAgICAgIGNhc2UgRU9wU21v
b3RoU3RlcDoKKyAgICAgICAgICAgIHJldHVybiAic21vb3Roc3RlcCI7CisgICAgICAgIGNhc2Ug
RU9wSXNOYW46CisgICAgICAgICAgICByZXR1cm4gImlzbmFuIjsKKyAgICAgICAgY2FzZSBFT3BJ
c0luZjoKKyAgICAgICAgICAgIHJldHVybiAiaXNpbmYiOworCisgICAgICAgIGNhc2UgRU9wRmxv
YXRCaXRzVG9JbnQ6CisgICAgICAgICAgICByZXR1cm4gImZsb2F0Qml0c1RvSW50IjsKKyAgICAg
ICAgY2FzZSBFT3BGbG9hdEJpdHNUb1VpbnQ6CisgICAgICAgICAgICByZXR1cm4gImZsb2F0Qml0
c1RvVWludCI7CisgICAgICAgIGNhc2UgRU9wSW50Qml0c1RvRmxvYXQ6CisgICAgICAgICAgICBy
ZXR1cm4gImludEJpdHNUb0Zsb2F0IjsKKyAgICAgICAgY2FzZSBFT3BVaW50Qml0c1RvRmxvYXQ6
CisgICAgICAgICAgICByZXR1cm4gInVpbnRCaXRzVG9GbG9hdCI7CisKKyAgICAgICAgY2FzZSBF
T3BGcmV4cDoKKyAgICAgICAgICAgIHJldHVybiAiZnJleHAiOworICAgICAgICBjYXNlIEVPcExk
ZXhwOgorICAgICAgICAgICAgcmV0dXJuICJsZGV4cCI7CisKKyAgICAgICAgY2FzZSBFT3BQYWNr
U25vcm0yeDE2OgorICAgICAgICAgICAgcmV0dXJuICJwYWNrU25vcm0yeDE2IjsKKyAgICAgICAg
Y2FzZSBFT3BQYWNrVW5vcm0yeDE2OgorICAgICAgICAgICAgcmV0dXJuICJwYWNrVW5vcm0yeDE2
IjsKKyAgICAgICAgY2FzZSBFT3BQYWNrSGFsZjJ4MTY6CisgICAgICAgICAgICByZXR1cm4gInBh
Y2tIYWxmMngxNiI7CisgICAgICAgIGNhc2UgRU9wVW5wYWNrU25vcm0yeDE2OgorICAgICAgICAg
ICAgcmV0dXJuICJ1bnBhY2tTbm9ybTJ4MTYiOworICAgICAgICBjYXNlIEVPcFVucGFja1Vub3Jt
MngxNjoKKyAgICAgICAgICAgIHJldHVybiAidW5wYWNrVW5vcm0yeDE2IjsKKyAgICAgICAgY2Fz
ZSBFT3BVbnBhY2tIYWxmMngxNjoKKyAgICAgICAgICAgIHJldHVybiAidW5wYWNrSGFsZjJ4MTYi
OworCisgICAgICAgIGNhc2UgRU9wUGFja1Vub3JtNHg4OgorICAgICAgICAgICAgcmV0dXJuICJw
YWNrVW5vcm00eDgiOworICAgICAgICBjYXNlIEVPcFBhY2tTbm9ybTR4ODoKKyAgICAgICAgICAg
IHJldHVybiAicGFja1Nub3JtNHg4IjsKKyAgICAgICAgY2FzZSBFT3BVbnBhY2tVbm9ybTR4ODoK
KyAgICAgICAgICAgIHJldHVybiAidW5wYWNrVW5vcm00eDgiOworICAgICAgICBjYXNlIEVPcFVu
cGFja1Nub3JtNHg4OgorICAgICAgICAgICAgcmV0dXJuICJ1bnBhY2tTbm9ybTR4OCI7CisKKyAg
ICAgICAgY2FzZSBFT3BMZW5ndGg6CisgICAgICAgICAgICByZXR1cm4gImxlbmd0aCI7CisgICAg
ICAgIGNhc2UgRU9wRGlzdGFuY2U6CisgICAgICAgICAgICByZXR1cm4gImRpc3RhbmNlIjsKKyAg
ICAgICAgY2FzZSBFT3BEb3Q6CisgICAgICAgICAgICByZXR1cm4gImRvdCI7CisgICAgICAgIGNh
c2UgRU9wQ3Jvc3M6CisgICAgICAgICAgICByZXR1cm4gImNyb3NzIjsKKyAgICAgICAgY2FzZSBF
T3BOb3JtYWxpemU6CisgICAgICAgICAgICByZXR1cm4gIm5vcm1hbGl6ZSI7CisgICAgICAgIGNh
c2UgRU9wRmFjZUZvcndhcmQ6CisgICAgICAgICAgICByZXR1cm4gImZhY2Vmb3J3YXJkIjsKKyAg
ICAgICAgY2FzZSBFT3BSZWZsZWN0OgorICAgICAgICAgICAgcmV0dXJuICJyZWZsZWN0IjsKKyAg
ICAgICAgY2FzZSBFT3BSZWZyYWN0OgorICAgICAgICAgICAgcmV0dXJuICJyZWZyYWN0IjsKKwor
ICAgICAgICBjYXNlIEVPcERGZHg6CisgICAgICAgICAgICByZXR1cm4gImRGZHgiOworICAgICAg
ICBjYXNlIEVPcERGZHk6CisgICAgICAgICAgICByZXR1cm4gImRGZHkiOworICAgICAgICBjYXNl
IEVPcEZ3aWR0aDoKKyAgICAgICAgICAgIHJldHVybiAiZndpZHRoIjsKKworICAgICAgICBjYXNl
IEVPcE11bE1hdHJpeENvbXBvbmVudFdpc2U6CisgICAgICAgICAgICByZXR1cm4gIm1hdHJpeENv
bXBNdWx0IjsKKyAgICAgICAgY2FzZSBFT3BPdXRlclByb2R1Y3Q6CisgICAgICAgICAgICByZXR1
cm4gIm91dGVyUHJvZHVjdCI7CisgICAgICAgIGNhc2UgRU9wVHJhbnNwb3NlOgorICAgICAgICAg
ICAgcmV0dXJuICJ0cmFuc3Bvc2UiOworICAgICAgICBjYXNlIEVPcERldGVybWluYW50OgorICAg
ICAgICAgICAgcmV0dXJuICJkZXRlcm1pbmFudCI7CisgICAgICAgIGNhc2UgRU9wSW52ZXJzZToK
KyAgICAgICAgICAgIHJldHVybiAiaW52ZXJzZSI7CisKKyAgICAgICAgY2FzZSBFT3BBbnk6Cisg
ICAgICAgICAgICByZXR1cm4gImFueSI7CisgICAgICAgIGNhc2UgRU9wQWxsOgorICAgICAgICAg
ICAgcmV0dXJuICJhbGwiOworICAgICAgICBjYXNlIEVPcExvZ2ljYWxOb3RDb21wb25lbnRXaXNl
OgorICAgICAgICAgICAgcmV0dXJuICJub3QiOworCisgICAgICAgIGNhc2UgRU9wQml0ZmllbGRF
eHRyYWN0OgorICAgICAgICAgICAgcmV0dXJuICJiaXRmaWVsZEV4dHJhY3QiOworICAgICAgICBj
YXNlIEVPcEJpdGZpZWxkSW5zZXJ0OgorICAgICAgICAgICAgcmV0dXJuICJiaXRmaWVsZEluc2Vy
dCI7CisgICAgICAgIGNhc2UgRU9wQml0ZmllbGRSZXZlcnNlOgorICAgICAgICAgICAgcmV0dXJu
ICJiaXRmaWVsZFJldmVyc2UiOworICAgICAgICBjYXNlIEVPcEJpdENvdW50OgorICAgICAgICAg
ICAgcmV0dXJuICJiaXRDb3VudCI7CisgICAgICAgIGNhc2UgRU9wRmluZExTQjoKKyAgICAgICAg
ICAgIHJldHVybiAiZmluZExTQiI7CisgICAgICAgIGNhc2UgRU9wRmluZE1TQjoKKyAgICAgICAg
ICAgIHJldHVybiAiZmluZE1TQiI7CisgICAgICAgIGNhc2UgRU9wVWFkZENhcnJ5OgorICAgICAg
ICAgICAgcmV0dXJuICJ1YWRkQ2FycnkiOworICAgICAgICBjYXNlIEVPcFVzdWJCb3Jyb3c6Cisg
ICAgICAgICAgICByZXR1cm4gInVzdWJCb3Jyb3ciOworICAgICAgICBjYXNlIEVPcFVtdWxFeHRl
bmRlZDoKKyAgICAgICAgICAgIHJldHVybiAidW11bEV4dGVuZGVkIjsKKyAgICAgICAgY2FzZSBF
T3BJbXVsRXh0ZW5kZWQ6CisgICAgICAgICAgICByZXR1cm4gImltdWxFeHRlbmRlZCI7CisKKyAg
ICAgICAgY2FzZSBFT3BLaWxsOgorICAgICAgICAgICAgcmV0dXJuICJraWxsIjsKKyAgICAgICAg
Y2FzZSBFT3BSZXR1cm46CisgICAgICAgICAgICByZXR1cm4gInJldHVybiI7CisgICAgICAgIGNh
c2UgRU9wQnJlYWs6CisgICAgICAgICAgICByZXR1cm4gImJyZWFrIjsKKyAgICAgICAgY2FzZSBF
T3BDb250aW51ZToKKyAgICAgICAgICAgIHJldHVybiAiY29udGludWUiOworCisgICAgICAgIGNh
c2UgRU9wQ29uc3RydWN0SW50OgorICAgICAgICAgICAgcmV0dXJuICJpbnQiOworICAgICAgICBj
YXNlIEVPcENvbnN0cnVjdFVJbnQ6CisgICAgICAgICAgICByZXR1cm4gInVpbnQiOworICAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdEJvb2w6CisgICAgICAgICAgICByZXR1cm4gImJvb2wiOworICAg
ICAgICBjYXNlIEVPcENvbnN0cnVjdEZsb2F0OgorICAgICAgICAgICAgcmV0dXJuICJmbG9hdCI7
CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjMjoKKyAgICAgICAgICAgIHJldHVybiAidmVj
MiI7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjMzoKKyAgICAgICAgICAgIHJldHVybiAi
dmVjMyI7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjNDoKKyAgICAgICAgICAgIHJldHVy
biAidmVjNCI7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0QlZlYzI6CisgICAgICAgICAgICBy
ZXR1cm4gImJ2ZWMyIjsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVjMzoKKyAgICAgICAg
ICAgIHJldHVybiAiYnZlYzMiOworICAgICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWM0OgorICAg
ICAgICAgICAgcmV0dXJuICJidmVjNCI7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0SVZlYzI6
CisgICAgICAgICAgICByZXR1cm4gIml2ZWMyIjsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RJ
VmVjMzoKKyAgICAgICAgICAgIHJldHVybiAiaXZlYzMiOworICAgICAgICBjYXNlIEVPcENvbnN0
cnVjdElWZWM0OgorICAgICAgICAgICAgcmV0dXJuICJpdmVjNCI7CisgICAgICAgIGNhc2UgRU9w
Q29uc3RydWN0VVZlYzI6CisgICAgICAgICAgICByZXR1cm4gInV2ZWMyIjsKKyAgICAgICAgY2Fz
ZSBFT3BDb25zdHJ1Y3RVVmVjMzoKKyAgICAgICAgICAgIHJldHVybiAidXZlYzMiOworICAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdFVWZWM0OgorICAgICAgICAgICAgcmV0dXJuICJ1dmVjNCI7Cisg
ICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MjoKKyAgICAgICAgICAgIHJldHVybiAibWF0MiI7
CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MngzOgorICAgICAgICAgICAgcmV0dXJuICJt
YXQyeDMiOworICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDJ4NDoKKyAgICAgICAgICAgIHJl
dHVybiAibWF0Mng0IjsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzeDI6CisgICAgICAg
ICAgICByZXR1cm4gIm1hdDN4MiI7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MzoKKyAg
ICAgICAgICAgIHJldHVybiAibWF0MyI7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0M3g0
OgorICAgICAgICAgICAgcmV0dXJuICJtYXQzeDQiOworICAgICAgICBjYXNlIEVPcENvbnN0cnVj
dE1hdDR4MjoKKyAgICAgICAgICAgIHJldHVybiAibWF0NHgyIjsKKyAgICAgICAgY2FzZSBFT3BD
b25zdHJ1Y3RNYXQ0eDM6CisgICAgICAgICAgICByZXR1cm4gIm1hdDR4MyI7CisgICAgICAgIGNh
c2UgRU9wQ29uc3RydWN0TWF0NDoKKyAgICAgICAgICAgIHJldHVybiAibWF0NCI7CisgICAgICAg
IC8vIE5vdGU6IEVPcENvbnN0cnVjdFN0cnVjdCBjYW4ndCBiZSBoYW5kbGVkIGhlcmUKKworICAg
ICAgICBjYXNlIEVPcEFzc2lnbjoKKyAgICAgICAgICAgIHJldHVybiAiPSI7CisgICAgICAgIGNh
c2UgRU9wSW5pdGlhbGl6ZToKKyAgICAgICAgICAgIHJldHVybiAiPSI7CisgICAgICAgIGNhc2Ug
RU9wQWRkQXNzaWduOgorICAgICAgICAgICAgcmV0dXJuICIrPSI7CisgICAgICAgIGNhc2UgRU9w
U3ViQXNzaWduOgorICAgICAgICAgICAgcmV0dXJuICItPSI7CisKKyAgICAgICAgLy8gRmFsbC10
aHJvdWdoLgorICAgICAgICBjYXNlIEVPcE11bEFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BWZWN0
b3JUaW1lc01hdHJpeEFzc2lnbjoKKyAgICAgICAgY2FzZSBFT3BWZWN0b3JUaW1lc1NjYWxhckFz
c2lnbjoKKyAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhckFzc2lnbjoKKyAgICAgICAg
Y2FzZSBFT3BNYXRyaXhUaW1lc01hdHJpeEFzc2lnbjoKKyAgICAgICAgICAgIHJldHVybiAiKj0i
OworCisgICAgICAgIGNhc2UgRU9wRGl2QXNzaWduOgorICAgICAgICAgICAgcmV0dXJuICIvPSI7
CisgICAgICAgIGNhc2UgRU9wSU1vZEFzc2lnbjoKKyAgICAgICAgICAgIHJldHVybiAiJT0iOwor
ICAgICAgICBjYXNlIEVPcEJpdFNoaWZ0TGVmdEFzc2lnbjoKKyAgICAgICAgICAgIHJldHVybiAi
PDw9IjsKKyAgICAgICAgY2FzZSBFT3BCaXRTaGlmdFJpZ2h0QXNzaWduOgorICAgICAgICAgICAg
cmV0dXJuICI+Pj0iOworICAgICAgICBjYXNlIEVPcEJpdHdpc2VBbmRBc3NpZ246CisgICAgICAg
ICAgICByZXR1cm4gIiY9IjsKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNlWG9yQXNzaWduOgorICAg
ICAgICAgICAgcmV0dXJuICJePSI7CisgICAgICAgIGNhc2UgRU9wQml0d2lzZU9yQXNzaWduOgor
ICAgICAgICAgICAgcmV0dXJuICJ8PSI7CisgICAgICAgIGNhc2UgRU9wQmFycmllcjoKKyAgICAg
ICAgICAgIHJldHVybiAiYmFycmllciI7CisgICAgICAgIGNhc2UgRU9wTWVtb3J5QmFycmllcjoK
KyAgICAgICAgICAgIHJldHVybiAibWVtb3J5QmFycmllciI7CisgICAgICAgIGNhc2UgRU9wTWVt
b3J5QmFycmllckF0b21pY0NvdW50ZXI6CisgICAgICAgICAgICByZXR1cm4gIm1lbW9yeUJhcnJp
ZXJBdG9taWNDb3VudGVyIjsKKyAgICAgICAgY2FzZSBFT3BNZW1vcnlCYXJyaWVyQnVmZmVyOgor
ICAgICAgICAgICAgcmV0dXJuICJtZW1vcnlCYXJyaWVyQnVmZmVyIjsKKyAgICAgICAgY2FzZSBF
T3BNZW1vcnlCYXJyaWVySW1hZ2U6CisgICAgICAgICAgICByZXR1cm4gIm1lbW9yeUJhcnJpZXJJ
bWFnZSI7CisgICAgICAgIGNhc2UgRU9wTWVtb3J5QmFycmllclNoYXJlZDoKKyAgICAgICAgICAg
IHJldHVybiAibWVtb3J5QmFycmllclNoYXJlZCI7CisgICAgICAgIGNhc2UgRU9wR3JvdXBNZW1v
cnlCYXJyaWVyOgorICAgICAgICAgICAgcmV0dXJuICJncm91cE1lbW9yeUJhcnJpZXIiOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiAiIjsK
IH0KQEAgLTIyNCw0ICs0MjYsNCBAQCBib29sIElzQXNzaWdubWVudChUT3BlcmF0b3Igb3ApCiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotfQorfQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL09wZXJhdG9yLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PcGVyYXRvci5oCmluZGV4IDQyYzVj
NjMyMmFmLi44M2I5NTdkMTA3MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3BlcmF0b3IuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PcGVyYXRvci5oCkBAIC0xMiwxMyArMTIs
MjEgQEAKIC8vCiBlbnVtIFRPcGVyYXRvcgogewotICAgIEVPcE51bGwsICAgICAgICAgICAgLy8g
aWYgaW4gYSBub2RlLCBzaG91bGQgb25seSBtZWFuIGEgbm9kZSBpcyBzdGlsbCBiZWluZyBidWls
dAotICAgIEVPcEZ1bmN0aW9uQ2FsbCwKLSAgICBFT3BQYXJhbWV0ZXJzLCAgICAgIC8vIGFuIGFn
Z3JlZ2F0ZSBsaXN0aW5nIHRoZSBwYXJhbWV0ZXJzIHRvIGEgZnVuY3Rpb24KKyAgICBFT3BOdWxs
LCAgLy8gaWYgaW4gYSBub2RlLCBzaG91bGQgb25seSBtZWFuIGEgbm9kZSBpcyBzdGlsbCBiZWlu
ZyBidWlsdAogCi0gICAgRU9wRGVjbGFyYXRpb24sCi0gICAgRU9wSW52YXJpYW50RGVjbGFyYXRp
b24sIC8vIFNwZWNpYWxpemVkIGRlY2xhcmF0aW9ucyBmb3IgYXR0cmlidXRpbmcgaW52YXJpYW5j
ZQotICAgIEVPcFByb3RvdHlwZSwKKyAgICAvLyBDYWxsIGEgZnVuY3Rpb24gZGVmaW5lZCBpbiB0
aGUgQVNULiBUaGlzIG1pZ2h0IGJlIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9yIGEgZnVuY3Rp
b24KKyAgICAvLyBpbnNlcnRlZCBieSBhbiBBU1QgdHJhbnNmb3JtYXRpb24uCisgICAgRU9wQ2Fs
bEZ1bmN0aW9uSW5BU1QsCisKKyAgICAvLyBDYWxsIGFuIGludGVybmFsIGhlbHBlciBmdW5jdGlv
biB3aXRoIGEgcmF3IGltcGxlbWVudGF0aW9uIC0gdGhlIGltcGxlbWVudGF0aW9uIGNhbid0IGJl
CisgICAgLy8gc3ViamVjdCB0byBBU1QgdHJhbnNmb3JtYXRpb25zLiBSYXcgZnVuY3Rpb25zIGhh
dmUgYSBmZXcgY29uc3RyYWludHMgdG8ga2VlcCB0aGVtIGNvbXBhdGlibGUKKyAgICAvLyB3aXRo
IEFTVCB0cmF2ZXJzZXJzOgorICAgIC8vICogVGhleSBzaG91bGQgbm90IHJldHVybiBhcnJheXMu
CisgICAgLy8gKiBUaGV5IHNob3VsZCBub3QgaGF2ZSBvdXQgcGFyYW1ldGVycy4KKyAgICBFT3BD
YWxsSW50ZXJuYWxSYXdGdW5jdGlvbiwKKworICAgIC8vIENhbGwgYSBidWlsdC1pbiBmdW5jdGlv
biBsaWtlIGEgdGV4dHVyZSBvciBpbWFnZSBmdW5jdGlvbi4KKyAgICBFT3BDYWxsQnVpbHRJbkZ1
bmN0aW9uLAogCiAgICAgLy8KICAgICAvLyBVbmFyeSBvcGVyYXRvcnMKQEAgLTI3LDcgKzM1LDYg
QEAgZW51bSBUT3BlcmF0b3IKICAgICBFT3BOZWdhdGl2ZSwKICAgICBFT3BQb3NpdGl2ZSwKICAg
ICBFT3BMb2dpY2FsTm90LAotICAgIEVPcFZlY3RvckxvZ2ljYWxOb3QsCiAgICAgRU9wQml0d2lz
ZU5vdCwKIAogICAgIEVPcFBvc3RJbmNyZW1lbnQsCkBAIC0zNiw3ICs0Myw4IEBAIGVudW0gVE9w
ZXJhdG9yCiAgICAgRU9wUHJlRGVjcmVtZW50LAogCiAgICAgLy8KLSAgICAvLyBiaW5hcnkgb3Bl
cmF0aW9ucworICAgIC8vIGJpbmFyeSBvcGVyYXRpb25zIChvbmVzIHdpdGggc3BlY2lhbCBHTFNM
IHN5bnRheCBhcmUgdXNlZCBpbiBUSW50ZXJtQmluYXJ5IG5vZGVzLCBvdGhlcnMgaW4KKyAgICAv
LyBUSW50ZXJtQWdncmVnYXRlIG5vZGVzKQogICAgIC8vCiAKICAgICBFT3BBZGQsCkBAIC00NCwy
MCArNTIsMjggQEAgZW51bSBUT3BlcmF0b3IKICAgICBFT3BNdWwsCiAgICAgRU9wRGl2LAogICAg
IEVPcElNb2QsCisKICAgICBFT3BFcXVhbCwKICAgICBFT3BOb3RFcXVhbCwKLSAgICBFT3BWZWN0
b3JFcXVhbCwKLSAgICBFT3BWZWN0b3JOb3RFcXVhbCwKICAgICBFT3BMZXNzVGhhbiwKICAgICBF
T3BHcmVhdGVyVGhhbiwKICAgICBFT3BMZXNzVGhhbkVxdWFsLAogICAgIEVPcEdyZWF0ZXJUaGFu
RXF1YWwsCisKKyAgICBFT3BFcXVhbENvbXBvbmVudFdpc2UsCisgICAgRU9wTm90RXF1YWxDb21w
b25lbnRXaXNlLAorICAgIEVPcExlc3NUaGFuQ29tcG9uZW50V2lzZSwKKyAgICBFT3BMZXNzVGhh
bkVxdWFsQ29tcG9uZW50V2lzZSwKKyAgICBFT3BHcmVhdGVyVGhhbkNvbXBvbmVudFdpc2UsCisg
ICAgRU9wR3JlYXRlclRoYW5FcXVhbENvbXBvbmVudFdpc2UsCisKICAgICBFT3BDb21tYSwKIAog
ICAgIEVPcFZlY3RvclRpbWVzU2NhbGFyLAogICAgIEVPcFZlY3RvclRpbWVzTWF0cml4LAogICAg
IEVPcE1hdHJpeFRpbWVzVmVjdG9yLAogICAgIEVPcE1hdHJpeFRpbWVzU2NhbGFyLAorICAgIEVP
cE1hdHJpeFRpbWVzTWF0cml4LAogCiAgICAgRU9wTG9naWNhbE9yLAogICAgIEVPcExvZ2ljYWxY
b3IsCkBAIC03Niw3ICs5Miw3IEBAIGVudW0gVE9wZXJhdG9yCiAgICAgRU9wSW5kZXhEaXJlY3RJ
bnRlcmZhY2VCbG9jaywKIAogICAgIC8vCi0gICAgLy8gQnVpbHQtaW4gZnVuY3Rpb25zIHBvdGVu
dGlhbGx5IG1hcHBlZCB0byBvcGVyYXRvcnMKKyAgICAvLyBCdWlsdC1pbiBmdW5jdGlvbnMgbWFw
cGVkIHRvIG9wZXJhdG9ycyAoZWl0aGVyIHVuYXJ5IG9yIHdpdGggbXVsdGlwbGUgcGFyYW1ldGVy
cykKICAgICAvLwogCiAgICAgRU9wUmFkaWFucywKQEAgLTEyNyw2ICsxNDMsOSBAQCBlbnVtIFRP
cGVyYXRvcgogICAgIEVPcEludEJpdHNUb0Zsb2F0LAogICAgIEVPcFVpbnRCaXRzVG9GbG9hdCwK
IAorICAgIEVPcEZyZXhwLAorICAgIEVPcExkZXhwLAorCiAgICAgRU9wUGFja1Nub3JtMngxNiwK
ICAgICBFT3BQYWNrVW5vcm0yeDE2LAogICAgIEVPcFBhY2tIYWxmMngxNiwKQEAgLTEzNCw2ICsx
NTMsMTEgQEAgZW51bSBUT3BlcmF0b3IKICAgICBFT3BVbnBhY2tVbm9ybTJ4MTYsCiAgICAgRU9w
VW5wYWNrSGFsZjJ4MTYsCiAKKyAgICBFT3BQYWNrVW5vcm00eDgsCisgICAgRU9wUGFja1Nub3Jt
NHg4LAorICAgIEVPcFVucGFja1Vub3JtNHg4LAorICAgIEVPcFVucGFja1Nub3JtNHg4LAorCiAg
ICAgRU9wTGVuZ3RoLAogICAgIEVPcERpc3RhbmNlLAogICAgIEVPcERvdCwKQEAgLTE0MywxMiAr
MTY3LDExIEBAIGVudW0gVE9wZXJhdG9yCiAgICAgRU9wUmVmbGVjdCwKICAgICBFT3BSZWZyYWN0
LAogCi0gICAgRU9wREZkeCwgICAgICAgICAgICAvLyBGcmFnbWVudCBvbmx5LCBPRVNfc3RhbmRh
cmRfZGVyaXZhdGl2ZXMgZXh0ZW5zaW9uCi0gICAgRU9wREZkeSwgICAgICAgICAgICAvLyBGcmFn
bWVudCBvbmx5LCBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgZXh0ZW5zaW9uCi0gICAgRU9wRndp
ZHRoLCAgICAgICAgICAvLyBGcmFnbWVudCBvbmx5LCBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMg
ZXh0ZW5zaW9uCi0KLSAgICBFT3BNYXRyaXhUaW1lc01hdHJpeCwKKyAgICBFT3BERmR4LCAgICAv
LyBGcmFnbWVudCBvbmx5LCBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgZXh0ZW5zaW9uCisgICAg
RU9wREZkeSwgICAgLy8gRnJhZ21lbnQgb25seSwgT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzIGV4
dGVuc2lvbgorICAgIEVPcEZ3aWR0aCwgIC8vIEZyYWdtZW50IG9ubHksIE9FU19zdGFuZGFyZF9k
ZXJpdmF0aXZlcyBleHRlbnNpb24KIAorICAgIEVPcE11bE1hdHJpeENvbXBvbmVudFdpc2UsCiAg
ICAgRU9wT3V0ZXJQcm9kdWN0LAogICAgIEVPcFRyYW5zcG9zZSwKICAgICBFT3BEZXRlcm1pbmFu
dCwKQEAgLTE1NiwxMiArMTc5LDI0IEBAIGVudW0gVE9wZXJhdG9yCiAKICAgICBFT3BBbnksCiAg
ICAgRU9wQWxsLAorICAgIEVPcExvZ2ljYWxOb3RDb21wb25lbnRXaXNlLAorCisgICAgRU9wQml0
ZmllbGRFeHRyYWN0LAorICAgIEVPcEJpdGZpZWxkSW5zZXJ0LAorICAgIEVPcEJpdGZpZWxkUmV2
ZXJzZSwKKyAgICBFT3BCaXRDb3VudCwKKyAgICBFT3BGaW5kTFNCLAorICAgIEVPcEZpbmRNU0Is
CisgICAgRU9wVWFkZENhcnJ5LAorICAgIEVPcFVzdWJCb3Jyb3csCisgICAgRU9wVW11bEV4dGVu
ZGVkLAorICAgIEVPcEltdWxFeHRlbmRlZCwKIAogICAgIC8vCiAgICAgLy8gQnJhbmNoCiAgICAg
Ly8KIAotICAgIEVPcEtpbGwsICAgICAgICAgICAgLy8gRnJhZ21lbnQgb25seQorICAgIEVPcEtp
bGwsICAvLyBGcmFnbWVudCBvbmx5CiAgICAgRU9wUmV0dXJuLAogICAgIEVPcEJyZWFrLAogICAg
IEVPcENvbnRpbnVlLApAQCAtMjE4LDExICsyNTMsMjAgQEAgZW51bSBUT3BlcmF0b3IKICAgICBF
T3BCaXRTaGlmdFJpZ2h0QXNzaWduLAogICAgIEVPcEJpdHdpc2VBbmRBc3NpZ24sCiAgICAgRU9w
Qml0d2lzZVhvckFzc2lnbiwKLSAgICBFT3BCaXR3aXNlT3JBc3NpZ24KKyAgICBFT3BCaXR3aXNl
T3JBc3NpZ24sCisKKyAgICAvLyAgYmFycmllcnMKKyAgICBFT3BCYXJyaWVyLAorICAgIEVPcE1l
bW9yeUJhcnJpZXIsCisgICAgRU9wTWVtb3J5QmFycmllckF0b21pY0NvdW50ZXIsCisgICAgRU9w
TWVtb3J5QmFycmllckJ1ZmZlciwKKyAgICBFT3BNZW1vcnlCYXJyaWVySW1hZ2UsCisgICAgRU9w
TWVtb3J5QmFycmllclNoYXJlZCwKKyAgICBFT3BHcm91cE1lbW9yeUJhcnJpZXIKIH07CiAKIC8v
IFJldHVybnMgdGhlIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIHRoZSBvcGVyYXRvciBpbiBHTFNM
Ci1jb25zdCBjaGFyKiBHZXRPcGVyYXRvclN0cmluZyhUT3BlcmF0b3Igb3ApOworY29uc3QgY2hh
ciAqR2V0T3BlcmF0b3JTdHJpbmcoVE9wZXJhdG9yIG9wKTsKIAogLy8gU2F5IHdoZXRoZXIgb3Ig
bm90IGEgYmluYXJ5IG9yIHVuYXJ5IG9wZXJhdGlvbiBjaGFuZ2VzIHRoZSB2YWx1ZSBvZiBhIHZh
cmlhYmxlLgogYm9vbCBJc0Fzc2lnbm1lbnQoVE9wZXJhdG9yIG9wKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEVTU0wu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0
cHV0RVNTTC5jcHAKaW5kZXggNzdlMGE4ZmIzNzYuLmRmOTg1YWQ0ODMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRFU1NM
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9PdXRwdXRFU1NMLmNwcApAQCAtNiwyMCArNiwyNyBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIv
dHJhbnNsYXRvci9PdXRwdXRFU1NMLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBUT3V0cHV0RVNT
TDo6VE91dHB1dEVTU0woVEluZm9TaW5rQmFzZSAmb2JqU2luaywKICAgICAgICAgICAgICAgICAg
ICAgICAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IGNsYW1waW5nU3RyYXRlZ3ksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hIYXNoRnVuY3Rpb242NCBoYXNoRnVuY3Rpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgTmFtZU1hcCAmbmFtZU1hcCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHNoOjpHTGVudW0gc2hhZGVyVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc2hhZGVyVmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZvcmNlSGln
aHApCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmb3JjZUhpZ2hwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpCiAgICAgOiBU
T3V0cHV0R0xTTEJhc2Uob2JqU2luaywKICAgICAgICAgICAgICAgICAgICAgICBjbGFtcGluZ1N0
cmF0ZWd5LAogICAgICAgICAgICAgICAgICAgICAgIGhhc2hGdW5jdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICBuYW1lTWFwLAogICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLAor
ICAgICAgICAgICAgICAgICAgICAgIHNoYWRlclR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
c2hhZGVyVmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICBTSF9FU1NMX09VVFBVVCksCisg
ICAgICAgICAgICAgICAgICAgICAgU0hfRVNTTF9PVVRQVVQsCisgICAgICAgICAgICAgICAgICAg
ICAgY29tcGlsZU9wdGlvbnMpLAogICAgICAgbUZvcmNlSGlnaHAoZm9yY2VIaWdocCkKIHsKIH0K
QEAgLTI5LDEwICszNiwxMiBAQCBib29sIFRPdXRwdXRFU1NMOjp3cml0ZVZhcmlhYmxlUHJlY2lz
aW9uKFRQcmVjaXNpb24gcHJlY2lzaW9uKQogICAgIGlmIChwcmVjaXNpb24gPT0gRWJwVW5kZWZp
bmVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBUSW5mb1NpbmtCYXNlJiBvdXQgPSBv
YmpTaW5rKCk7CisgICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gb2JqU2luaygpOwogICAgIGlmICht
Rm9yY2VIaWdocCkKICAgICAgICAgb3V0IDw8IGdldFByZWNpc2lvblN0cmluZyhFYnBIaWdoKTsK
ICAgICBlbHNlCiAgICAgICAgIG91dCA8PCBnZXRQcmVjaXNpb25TdHJpbmcocHJlY2lzaW9uKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRFU1NM
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRw
dXRFU1NMLmgKaW5kZXggYzVhOTYzNDk5ZTguLjViMmNiOTQ5MmM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRFU1NMLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0
cHV0RVNTTC5oCkBAIC05LDIyICs5LDI5IEBACiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL091dHB1dEdMU0xCYXNlLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBjbGFzcyBUT3V0cHV0
RVNTTCA6IHB1YmxpYyBUT3V0cHV0R0xTTEJhc2UKIHsKLXB1YmxpYzoKLSAgICBUT3V0cHV0RVNT
TChUSW5mb1NpbmtCYXNlJiBvYmpTaW5rLAorICBwdWJsaWM6CisgICAgVE91dHB1dEVTU0woVElu
Zm9TaW5rQmFzZSAmb2JqU2luaywKICAgICAgICAgICAgICAgICBTaEFycmF5SW5kZXhDbGFtcGlu
Z1N0cmF0ZWd5IGNsYW1waW5nU3RyYXRlZ3ksCiAgICAgICAgICAgICAgICAgU2hIYXNoRnVuY3Rp
b242NCBoYXNoRnVuY3Rpb24sCi0gICAgICAgICAgICAgICAgTmFtZU1hcCYgbmFtZU1hcCwKLSAg
ICAgICAgICAgICAgICBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlLAorICAgICAgICAgICAgICAg
IE5hbWVNYXAgJm5hbWVNYXAsCisgICAgICAgICAgICAgICAgVFN5bWJvbFRhYmxlICZzeW1ib2xU
YWJsZSwKKyAgICAgICAgICAgICAgICBzaDo6R0xlbnVtIHNoYWRlclR5cGUsCiAgICAgICAgICAg
ICAgICAgaW50IHNoYWRlclZlcnNpb24sCi0gICAgICAgICAgICAgICAgYm9vbCBmb3JjZUhpZ2hw
KTsKKyAgICAgICAgICAgICAgICBib29sIGZvcmNlSGlnaHAsCisgICAgICAgICAgICAgICAgU2hD
b21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucyk7CiAKLXByb3RlY3RlZDoKLSAgYm9vbCB3cml0
ZVZhcmlhYmxlUHJlY2lzaW9uKFRQcmVjaXNpb24gcHJlY2lzaW9uKSBvdmVycmlkZTsKKyAgcHJv
dGVjdGVkOgorICAgIGJvb2wgd3JpdGVWYXJpYWJsZVByZWNpc2lvbihUUHJlY2lzaW9uIHByZWNp
c2lvbikgb3ZlcnJpZGU7CiAKLXByaXZhdGU6CisgIHByaXZhdGU6CiAgICAgYm9vbCBtRm9yY2VI
aWdocDsKIH07CiAKK30gIC8vIG5hbWVzcGFjZSBzaAorCiAjZW5kaWYgIC8vIENPTVBJTEVSX1RS
QU5TTEFUT1JfT1VUUFVURVNTTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0R0xTTC5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMLmNwcAppbmRleCA0
MzE0MjUwMjBhNy4uYWYxYjc3YzU0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0wuY3BwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0wuY3BwCkBA
IC02LDIwICs2LDI3IEBACiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL091dHB1dEdM
U0wuaCIKIAotVE91dHB1dEdMU0w6OlRPdXRwdXRHTFNMKFRJbmZvU2lua0Jhc2UmIG9ialNpbmss
CituYW1lc3BhY2Ugc2gKK3sKKworVE91dHB1dEdMU0w6OlRPdXRwdXRHTFNMKFRJbmZvU2lua0Jh
c2UgJm9ialNpbmssCiAgICAgICAgICAgICAgICAgICAgICAgICAgU2hBcnJheUluZGV4Q2xhbXBp
bmdTdHJhdGVneSBjbGFtcGluZ1N0cmF0ZWd5LAogICAgICAgICAgICAgICAgICAgICAgICAgIFNo
SGFzaEZ1bmN0aW9uNjQgaGFzaEZ1bmN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgIE5h
bWVNYXAmIG5hbWVNYXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgVFN5bWJvbFRhYmxlJiBz
eW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lTWFwICZuYW1lTWFwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgc2g6OkdMZW51bSBzaGFkZXJUeXBlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
IFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBTaFNoYWRl
ck91dHB1dCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgU2hDb21waWxlT3B0aW9u
cyBjb21waWxlT3B0aW9ucykKICAgICA6IFRPdXRwdXRHTFNMQmFzZShvYmpTaW5rLAogICAgICAg
ICAgICAgICAgICAgICAgIGNsYW1waW5nU3RyYXRlZ3ksCiAgICAgICAgICAgICAgICAgICAgICAg
aGFzaEZ1bmN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgIG5hbWVNYXAsCiAgICAgICAgICAg
ICAgICAgICAgICAgc3ltYm9sVGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyVHlw
ZSwKICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJWZXJzaW9uLAotICAgICAgICAgICAgICAg
ICAgICAgIG91dHB1dCkKKyAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQsCisgICAgICAgICAg
ICAgICAgICAgICAgY29tcGlsZU9wdGlvbnMpCiB7CiB9CiAKQEAgLTMwLDE4ICszNywxOCBAQCBi
b29sIFRPdXRwdXRHTFNMOjp3cml0ZVZhcmlhYmxlUHJlY2lzaW9uKFRQcmVjaXNpb24pCiAKIHZv
aWQgVE91dHB1dEdMU0w6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKm5vZGUpCiB7Ci0gICAg
VEluZm9TaW5rQmFzZSYgb3V0ID0gb2JqU2luaygpOworICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9
IG9ialNpbmsoKTsKIAogICAgIGNvbnN0IFRTdHJpbmcgJnN5bWJvbCA9IG5vZGUtPmdldFN5bWJv
bCgpOwogICAgIGlmIChzeW1ib2wgPT0gImdsX0ZyYWdEZXB0aEVYVCIpCiAgICAgewogICAgICAg
ICBvdXQgPDwgImdsX0ZyYWdEZXB0aCI7CiAgICAgfQotICAgIGVsc2UgaWYgKHN5bWJvbCA9PSAi
Z2xfRnJhZ0NvbG9yIiAmJiBJc0dMU0wxMzBPck5ld2VyKGdldFNoYWRlck91dHB1dCgpKSkKKyAg
ICBlbHNlIGlmIChzeW1ib2wgPT0gImdsX0ZyYWdDb2xvciIgJiYgc2g6OklzR0xTTDEzME9yTmV3
ZXIoZ2V0U2hhZGVyT3V0cHV0KCkpKQogICAgIHsKICAgICAgICAgb3V0IDw8ICJ3ZWJnbF9GcmFn
Q29sb3IiOwogICAgIH0KLSAgICBlbHNlIGlmIChzeW1ib2wgPT0gImdsX0ZyYWdEYXRhIiAmJiBJ
c0dMU0wxMzBPck5ld2VyKGdldFNoYWRlck91dHB1dCgpKSkKKyAgICBlbHNlIGlmIChzeW1ib2wg
PT0gImdsX0ZyYWdEYXRhIiAmJiBzaDo6SXNHTFNMMTMwT3JOZXdlcihnZXRTaGFkZXJPdXRwdXQo
KSkpCiAgICAgewogICAgICAgICBvdXQgPDwgIndlYmdsX0ZyYWdEYXRhIjsKICAgICB9CkBAIC01
OSw0NCArNjYsNDIgQEAgdm9pZCBUT3V0cHV0R0xTTDo6dmlzaXRTeW1ib2woVEludGVybVN5bWJv
bCAqbm9kZSkKICAgICB9CiB9CiAKLVRTdHJpbmcgVE91dHB1dEdMU0w6OnRyYW5zbGF0ZVRleHR1
cmVGdW5jdGlvbihUU3RyaW5nICZuYW1lKQorVFN0cmluZyBUT3V0cHV0R0xTTDo6dHJhbnNsYXRl
VGV4dHVyZUZ1bmN0aW9uKGNvbnN0IFRTdHJpbmcgJm5hbWUpCiB7Ci0gICAgc3RhdGljIGNvbnN0
IGNoYXIgKnNpbXBsZVJlbmFtZVtdID0gewotICAgICAgICAidGV4dHVyZTJETG9kRVhUIiwgInRl
eHR1cmUyRExvZCIsCi0gICAgICAgICJ0ZXh0dXJlMkRQcm9qTG9kRVhUIiwgInRleHR1cmUyRFBy
b2pMb2QiLAotICAgICAgICAidGV4dHVyZUN1YmVMb2RFWFQiLCAidGV4dHVyZUN1YmVMb2QiLAot
ICAgICAgICAidGV4dHVyZTJER3JhZEVYVCIsICJ0ZXh0dXJlMkRHcmFkQVJCIiwKLSAgICAgICAg
InRleHR1cmUyRFByb2pHcmFkRVhUIiwgInRleHR1cmUyRFByb2pHcmFkQVJCIiwKLSAgICAgICAg
InRleHR1cmVDdWJlR3JhZEVYVCIsICJ0ZXh0dXJlQ3ViZUdyYWRBUkIiLAotICAgICAgICBOVUxM
LCBOVUxMCi0gICAgfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqc2ltcGxlUmVuYW1lW10gPSB7
InRleHR1cmUyRExvZEVYVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ0ZXh0dXJlMkRMb2QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAidGV4dHVyZTJEUHJvakxvZEVYVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ0ZXh0dXJlMkRQcm9qTG9kIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInRleHR1cmVDdWJlTG9kRVhUIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInRleHR1cmVDdWJlTG9kIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInRleHR1cmUyREdyYWRFWFQiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGV4dHVyZTJER3JhZEFSQiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0dXJlMkRQcm9qR3JhZEVY
VCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXh0dXJlMkRQ
cm9qR3JhZEFSQiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0
ZXh0dXJlQ3ViZUdyYWRFWFQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAidGV4dHVyZUN1YmVHcmFkQVJCIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTlVMTH07CiAgICAgc3RhdGljIGNvbnN0IGNoYXIgKmxlZ2FjeVRvQ29yZVJlbmFtZVtdID0g
ewotICAgICAgICAidGV4dHVyZTJEIiwgInRleHR1cmUiLAotICAgICAgICAidGV4dHVyZTJEUHJv
aiIsICJ0ZXh0dXJlUHJvaiIsCi0gICAgICAgICJ0ZXh0dXJlMkRMb2QiLCAidGV4dHVyZUxvZCIs
Ci0gICAgICAgICJ0ZXh0dXJlMkRQcm9qTG9kIiwgInRleHR1cmVQcm9qTG9kIiwKLSAgICAgICAg
InRleHR1cmUyRFJlY3QiLCAidGV4dHVyZSIsCi0gICAgICAgICJ0ZXh0dXJlQ3ViZSIsICJ0ZXh0
dXJlIiwKKyAgICAgICAgInRleHR1cmUyRCIsICJ0ZXh0dXJlIiwgInRleHR1cmUyRFByb2oiLCAi
dGV4dHVyZVByb2oiLCAidGV4dHVyZTJETG9kIiwgInRleHR1cmVMb2QiLAorICAgICAgICAidGV4
dHVyZTJEUHJvakxvZCIsICJ0ZXh0dXJlUHJvakxvZCIsICJ0ZXh0dXJlMkRSZWN0IiwgInRleHR1
cmUiLCAidGV4dHVyZUN1YmUiLCAidGV4dHVyZSIsCiAgICAgICAgICJ0ZXh0dXJlQ3ViZUxvZCIs
ICJ0ZXh0dXJlTG9kIiwKICAgICAgICAgLy8gRXh0ZW5zaW9ucwotICAgICAgICAidGV4dHVyZTJE
TG9kRVhUIiwgInRleHR1cmVMb2QiLAotICAgICAgICAidGV4dHVyZTJEUHJvakxvZEVYVCIsICJ0
ZXh0dXJlUHJvakxvZCIsCi0gICAgICAgICJ0ZXh0dXJlQ3ViZUxvZEVYVCIsICJ0ZXh0dXJlTG9k
IiwKLSAgICAgICAgInRleHR1cmUyREdyYWRFWFQiLCAidGV4dHVyZUdyYWQiLAotICAgICAgICAi
dGV4dHVyZTJEUHJvakdyYWRFWFQiLCAidGV4dHVyZVByb2pHcmFkIiwKLSAgICAgICAgInRleHR1
cmVDdWJlR3JhZEVYVCIsICJ0ZXh0dXJlR3JhZCIsCi0gICAgICAgIE5VTEwsIE5VTEwKLSAgICB9
OwotICAgIGNvbnN0IGNoYXIgKiptYXBwaW5nID0gKElzR0xTTDEzME9yTmV3ZXIoZ2V0U2hhZGVy
T3V0cHV0KCkpKSA/Ci0gICAgICAgIGxlZ2FjeVRvQ29yZVJlbmFtZSA6IHNpbXBsZVJlbmFtZTsK
KyAgICAgICAgInRleHR1cmUyRExvZEVYVCIsICJ0ZXh0dXJlTG9kIiwgInRleHR1cmUyRFByb2pM
b2RFWFQiLCAidGV4dHVyZVByb2pMb2QiLAorICAgICAgICAidGV4dHVyZUN1YmVMb2RFWFQiLCAi
dGV4dHVyZUxvZCIsICJ0ZXh0dXJlMkRHcmFkRVhUIiwgInRleHR1cmVHcmFkIiwKKyAgICAgICAg
InRleHR1cmUyRFByb2pHcmFkRVhUIiwgInRleHR1cmVQcm9qR3JhZCIsICJ0ZXh0dXJlQ3ViZUdy
YWRFWFQiLCAidGV4dHVyZUdyYWQiLCBOVUxMLCBOVUxMfTsKKyAgICBjb25zdCBjaGFyICoqbWFw
cGluZyA9CisgICAgICAgIChzaDo6SXNHTFNMMTMwT3JOZXdlcihnZXRTaGFkZXJPdXRwdXQoKSkp
ID8gbGVnYWN5VG9Db3JlUmVuYW1lIDogc2ltcGxlUmVuYW1lOwogCiAgICAgZm9yIChpbnQgaSA9
IDA7IG1hcHBpbmdbaV0gIT0gTlVMTDsgaSArPSAyKQogICAgIHsKICAgICAgICAgaWYgKG5hbWUg
PT0gbWFwcGluZ1tpXSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG1hcHBpbmdbaSsx
XTsKKyAgICAgICAgICAgIHJldHVybiBtYXBwaW5nW2kgKyAxXTsKICAgICAgICAgfQogICAgIH0K
IAogICAgIHJldHVybiBuYW1lOwogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEdM
U0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091
dHB1dEdMU0wuaAppbmRleCA5YjFhY2E0ZWFiZS4uMTc2ODJmZjMxZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0wu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9P
dXRwdXRHTFNMLmgKQEAgLTksMjEgKzksMjggQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvT3V0cHV0R0xTTEJhc2UuaCIKIAorbmFtZXNwYWNlIHNoCit7CisKIGNsYXNzIFRPdXRw
dXRHTFNMIDogcHVibGljIFRPdXRwdXRHTFNMQmFzZQogewogICBwdWJsaWM6Ci0gICAgVE91dHB1
dEdMU0woVEluZm9TaW5rQmFzZSYgb2JqU2luaywKKyAgICBUT3V0cHV0R0xTTChUSW5mb1NpbmtC
YXNlICZvYmpTaW5rLAogICAgICAgICAgICAgICAgIFNoQXJyYXlJbmRleENsYW1waW5nU3RyYXRl
Z3kgY2xhbXBpbmdTdHJhdGVneSwKICAgICAgICAgICAgICAgICBTaEhhc2hGdW5jdGlvbjY0IGhh
c2hGdW5jdGlvbiwKLSAgICAgICAgICAgICAgICBOYW1lTWFwJiBuYW1lTWFwLAotICAgICAgICAg
ICAgICAgIFRTeW1ib2xUYWJsZSYgc3ltYm9sVGFibGUsCisgICAgICAgICAgICAgICAgTmFtZU1h
cCAmbmFtZU1hcCwKKyAgICAgICAgICAgICAgICBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLAor
ICAgICAgICAgICAgICAgIHNoOjpHTGVudW0gc2hhZGVyVHlwZSwKICAgICAgICAgICAgICAgICBp
bnQgc2hhZGVyVmVyc2lvbiwKLSAgICAgICAgICAgICAgICBTaFNoYWRlck91dHB1dCBvdXRwdXQp
OworICAgICAgICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCwKKyAgICAgICAgICAgICAg
ICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zKTsKIAogICBwcm90ZWN0ZWQ6CiAgICAg
Ym9vbCB3cml0ZVZhcmlhYmxlUHJlY2lzaW9uKFRQcmVjaXNpb24pIG92ZXJyaWRlOwogICAgIHZv
aWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkgb3ZlcnJpZGU7Ci0gICAgVFN0cmlu
ZyB0cmFuc2xhdGVUZXh0dXJlRnVuY3Rpb24oVFN0cmluZyAmbmFtZSkgb3ZlcnJpZGU7CisgICAg
VFN0cmluZyB0cmFuc2xhdGVUZXh0dXJlRnVuY3Rpb24oY29uc3QgVFN0cmluZyAmbmFtZSkgb3Zl
cnJpZGU7CiB9OwogCit9ICAvLyBuYW1lc3BhY2Ugc2gKKwogI2VuZGlmICAvLyBDT01QSUxFUl9U
UkFOU0xBVE9SX09VVFBVVEdMU0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0xCYXNlLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0xCYXNlLmNw
cAppbmRleCA0MzAxNTU5NjEzNC4uZmVlMzgzNjMxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEdMU0xCYXNlLmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRw
dXRHTFNMQmFzZS5jcHAKQEAgLTcsOSArNywxMyBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvT3V0cHV0R0xTTEJhc2UuaCIKIAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2lu
Y2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgogCiAjaW5jbHVkZSA8Y2Zsb2F0PgogCituYW1lc3Bh
Y2Ugc2gKK3sKKwogbmFtZXNwYWNlCiB7CiBUU3RyaW5nIGFycmF5QnJhY2tldHMoY29uc3QgVFR5
cGUgJnR5cGUpCkBAIC00OSw2ICs1Myw2NyBAQCBib29sIGlzU2luZ2xlU3RhdGVtZW50KFRJbnRl
cm1Ob2RlICpub2RlKQogICAgIHJldHVybiB0cnVlOwogfQogCisvLyBJZiBTSF9TQ0FMQVJJWkVf
VkVDX0FORF9NQVRfQ09OU1RSVUNUT1JfQVJHUyBpcyBlbmFibGVkLCBsYXlvdXQgcXVhbGlmaWVy
cyBhcmUgc3BpbGxlZCB3aGVuZXZlcgorLy8gdmFyaWFibGVzIHdpdGggc3BlY2lmaWVkIGxheW91
dCBxdWFsaWZpZXJzIGFyZSBjb3BpZWQuIEFkZGl0aW9uYWwgY2hlY2tzIGFyZSBuZWVkZWQgYWdh
aW5zdCB0aGUKKy8vIHR5cGUgYW5kIHN0b3JhZ2UgcXVhbGlmaWVyIG9mIHRoZSB2YXJpYWJsZSB0
byB2ZXJpZnkgdGhhdCBsYXlvdXQgcXVhbGlmaWVycyBoYXZlIHRvIGJlIG91dHB1dHRlZC4KKy8v
IFRPRE8gKG1yYWRldik6IEZpeCBsYXlvdXQgcXVhbGlmaWVyIHNwaWxsaW5nIGluIFNjYWxhcml6
ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncyBhbmQgcmVtb3ZlCisvLyBOZWVkc1RvV3JpdGVMYXlv
dXRRdWFsaWZpZXIuCitib29sIE5lZWRzVG9Xcml0ZUxheW91dFF1YWxpZmllcihjb25zdCBUVHlw
ZSAmdHlwZSkKK3sKKyAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRJbnRlcmZhY2VC
bG9jaykKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBU
TGF5b3V0UXVhbGlmaWVyICZsYXlvdXRRdWFsaWZpZXIgPSB0eXBlLmdldExheW91dFF1YWxpZmll
cigpOworCisgICAgaWYgKCh0eXBlLmdldFF1YWxpZmllcigpID09IEV2cUZyYWdtZW50T3V0IHx8
IHR5cGUuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxVmVydGV4SW4pICYmCisgICAgICAgIGxheW91dFF1
YWxpZmllci5sb2NhdGlvbiA+PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgaWYgKHR5cGUuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxRnJhZ21lbnRPdXQgJiYgbGF5
b3V0UXVhbGlmaWVyLnl1diA9PSB0cnVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgaWYgKElzT3BhcXVlVHlwZSh0eXBlLmdldEJhc2ljVHlwZSgpKSAmJiBsYXlv
dXRRdWFsaWZpZXIuYmluZGluZyAhPSAtMSkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIGlmIChJc0ltYWdlKHR5cGUuZ2V0QmFzaWNUeXBlKCkpICYmIGxheW91dFF1
YWxpZmllci5pbWFnZUludGVybmFsRm9ybWF0ICE9IEVpaWZVbnNwZWNpZmllZCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2NsYXNz
IENvbW1hU2VwYXJhdGVkTGlzdEl0ZW1QcmVmaXhHZW5lcmF0b3IKK3sKKyAgcHVibGljOgorICAg
IENvbW1hU2VwYXJhdGVkTGlzdEl0ZW1QcmVmaXhHZW5lcmF0b3IoKSA6IG1GaXJzdCh0cnVlKSB7
fQorICBwcml2YXRlOgorICAgIGJvb2wgbUZpcnN0OworCisgICAgZnJpZW5kIFRJbmZvU2lua0Jh
c2UgJm9wZXJhdG9yPDwoVEluZm9TaW5rQmFzZSAmb3V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvbW1hU2VwYXJhdGVkTGlzdEl0ZW1QcmVmaXhHZW5lcmF0b3IgJmdl
bik7Cit9OworCitUSW5mb1NpbmtCYXNlICZvcGVyYXRvcjw8KFRJbmZvU2lua0Jhc2UgJm91dCwg
Q29tbWFTZXBhcmF0ZWRMaXN0SXRlbVByZWZpeEdlbmVyYXRvciAmZ2VuKQoreworICAgIGlmIChn
ZW4ubUZpcnN0KQorICAgIHsKKyAgICAgICAgZ2VuLm1GaXJzdCA9IGZhbHNlOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBvdXQgPDwgIiwgIjsKKyAgICB9CisgICAgcmV0dXJuIG91
dDsKK30KKwogfSAgLy8gbmFtZXNwYWNlCiAKIFRPdXRwdXRHTFNMQmFzZTo6VE91dHB1dEdMU0xC
YXNlKFRJbmZvU2lua0Jhc2UgJm9ialNpbmssCkBAIC01Niw4ICsxMjEsMTAgQEAgVE91dHB1dEdM
U0xCYXNlOjpUT3V0cHV0R0xTTEJhc2UoVEluZm9TaW5rQmFzZSAmb2JqU2luaywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNoSGFzaEZ1bmN0aW9uNjQgaGFzaEZ1bmN0aW9uLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZU1hcCAmbmFtZU1hcCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaDo6R0xlbnVtIHNoYWRlclR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlv
bnMpCiAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIHRydWUsIHRydWUpLAogICAgICAgbU9i
alNpbmsob2JqU2luayksCiAgICAgICBtRGVjbGFyaW5nVmFyaWFibGVzKGZhbHNlKSwKQEAgLTY1
LDEzICsxMzIsMzggQEAgVE91dHB1dEdMU0xCYXNlOjpUT3V0cHV0R0xTTEJhc2UoVEluZm9TaW5r
QmFzZSAmb2JqU2luaywKICAgICAgIG1IYXNoRnVuY3Rpb24oaGFzaEZ1bmN0aW9uKSwKICAgICAg
IG1OYW1lTWFwKG5hbWVNYXApLAogICAgICAgbVN5bWJvbFRhYmxlKHN5bWJvbFRhYmxlKSwKKyAg
ICAgIG1TaGFkZXJUeXBlKHNoYWRlclR5cGUpLAogICAgICAgbVNoYWRlclZlcnNpb24oc2hhZGVy
VmVyc2lvbiksCi0gICAgICBtT3V0cHV0KG91dHB1dCkKKyAgICAgIG1PdXRwdXQob3V0cHV0KSwK
KyAgICAgIG1Db21waWxlT3B0aW9ucyhjb21waWxlT3B0aW9ucykKK3sKK30KKwordm9pZCBUT3V0
cHV0R0xTTEJhc2U6OndyaXRlSW52YXJpYW50UXVhbGlmaWVyKGNvbnN0IFRUeXBlICZ0eXBlKQor
eworICAgIGlmICghc2g6OlJlbW92ZUludmFyaWFudChtU2hhZGVyVHlwZSwgbVNoYWRlclZlcnNp
b24sIG1PdXRwdXQsIG1Db21waWxlT3B0aW9ucykpCisgICAgeworICAgICAgICBUSW5mb1NpbmtC
YXNlICZvdXQgPSBvYmpTaW5rKCk7CisgICAgICAgIG91dCA8PCAiaW52YXJpYW50ICI7CisgICAg
fQorfQorCit2b2lkIFRPdXRwdXRHTFNMQmFzZTo6d3JpdGVGbG9hdChUSW5mb1NpbmtCYXNlICZv
dXQsIGZsb2F0IGYpCiB7CisgICAgaWYgKChnbDo6aXNJbmYoZikgfHwgZ2w6OmlzTmFOKGYpKSAm
JiBtU2hhZGVyVmVyc2lvbiA+PSAzMDApCisgICAgeworICAgICAgICBvdXQgPDwgInVpbnRCaXRz
VG9GbG9hdCgiIDw8IGdsOjpiaXRDYXN0PHVpbnQzMl90PihmKSA8PCAidSkiOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBvdXQgPDwgc3RkOjptaW4oRkxUX01BWCwgc3RkOjptYXgo
LUZMVF9NQVgsIGYpKTsKKyAgICB9CiB9CiAKLXZvaWQgVE91dHB1dEdMU0xCYXNlOjp3cml0ZVRy
aXBsZXQoCi0gICAgVmlzaXQgdmlzaXQsIGNvbnN0IGNoYXIgKnByZVN0ciwgY29uc3QgY2hhciAq
aW5TdHIsIGNvbnN0IGNoYXIgKnBvc3RTdHIpCit2b2lkIFRPdXRwdXRHTFNMQmFzZTo6d3JpdGVU
cmlwbGV0KFZpc2l0IHZpc2l0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBjaGFyICpwcmVTdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgKmluU3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICpwb3N0U3RyKQogewogICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG9ialNpbmsoKTsK
ICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQgJiYgcHJlU3RyKQpAQCAtODIsNjUgKzE3NCwxNjkg
QEAgdm9pZCBUT3V0cHV0R0xTTEJhc2U6OndyaXRlVHJpcGxldCgKICAgICAgICAgb3V0IDw8IHBv
c3RTdHI7CiB9CiAKLXZvaWQgVE91dHB1dEdMU0xCYXNlOjp3cml0ZUJ1aWx0SW5GdW5jdGlvblRy
aXBsZXQoCi0gICAgVmlzaXQgdmlzaXQsIGNvbnN0IGNoYXIgKnByZVN0ciwgYm9vbCB1c2VFbXVs
YXRlZEZ1bmN0aW9uKQordm9pZCBUT3V0cHV0R0xTTEJhc2U6OndyaXRlQnVpbHRJbkZ1bmN0aW9u
VHJpcGxldChWaXNpdCB2aXNpdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVE9wZXJhdG9yIG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHVzZUVtdWxhdGVkRnVuY3Rpb24pCiB7Ci0gICAg
VFN0cmluZyBwcmVTdHJpbmcgPSB1c2VFbXVsYXRlZEZ1bmN0aW9uID8KLSAgICAgICAgQnVpbHRJ
bkZ1bmN0aW9uRW11bGF0b3I6OkdldEVtdWxhdGVkRnVuY3Rpb25OYW1lKHByZVN0cikgOiBwcmVT
dHI7Ci0gICAgd3JpdGVUcmlwbGV0KHZpc2l0LCBwcmVTdHJpbmcuY19zdHIoKSwgIiwgIiwgIiki
KTsKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBvYmpTaW5rKCk7CisgICAgaWYgKHZpc2l0ID09
IFByZVZpc2l0KQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciAqb3BTdHIoR2V0T3BlcmF0b3JT
dHJpbmcob3ApKTsKKyAgICAgICAgaWYgKHVzZUVtdWxhdGVkRnVuY3Rpb24pCisgICAgICAgIHsK
KyAgICAgICAgICAgIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yOjpXcml0ZUVtdWxhdGVkRnVuY3Rp
b25OYW1lKG91dCwgb3BTdHIpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewor
ICAgICAgICAgICAgb3V0IDw8IG9wU3RyOworICAgICAgICB9CisgICAgICAgIG91dCA8PCAiKCI7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHdyaXRlVHJpcGxldCh2aXNpdCwgbnVs
bHB0ciwgIiwgIiwgIikiKTsKKyAgICB9CiB9CiAKIHZvaWQgVE91dHB1dEdMU0xCYXNlOjp3cml0
ZUxheW91dFF1YWxpZmllcihjb25zdCBUVHlwZSAmdHlwZSkKIHsKKyAgICBpZiAoIU5lZWRzVG9X
cml0ZUxheW91dFF1YWxpZmllcih0eXBlKSkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgICAgICAgICAgICAgICAgICAgICAgPSBvYmpTaW5r
KCk7CisgICAgY29uc3QgVExheW91dFF1YWxpZmllciAmbGF5b3V0UXVhbGlmaWVyID0gdHlwZS5n
ZXRMYXlvdXRRdWFsaWZpZXIoKTsKKyAgICBvdXQgPDwgImxheW91dCgiOworCisgICAgQ29tbWFT
ZXBhcmF0ZWRMaXN0SXRlbVByZWZpeEdlbmVyYXRvciBsaXN0SXRlbVByZWZpeDsKKwogICAgIGlm
ICh0eXBlLmdldFF1YWxpZmllcigpID09IEV2cUZyYWdtZW50T3V0IHx8IHR5cGUuZ2V0UXVhbGlm
aWVyKCkgPT0gRXZxVmVydGV4SW4pCiAgICAgewotICAgICAgICBjb25zdCBUTGF5b3V0UXVhbGlm
aWVyICZsYXlvdXRRdWFsaWZpZXIgPSB0eXBlLmdldExheW91dFF1YWxpZmllcigpOwogICAgICAg
ICBpZiAobGF5b3V0UXVhbGlmaWVyLmxvY2F0aW9uID49IDApCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG9ialNpbmsoKTsKLSAgICAgICAgICAgIG91dCA8PCAi
bGF5b3V0KGxvY2F0aW9uID0gIiA8PCBsYXlvdXRRdWFsaWZpZXIubG9jYXRpb24gPDwgIikgIjsK
KyAgICAgICAgICAgIG91dCA8PCBsaXN0SXRlbVByZWZpeCA8PCAibG9jYXRpb24gPSAiIDw8IGxh
eW91dFF1YWxpZmllci5sb2NhdGlvbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh0eXBl
LmdldFF1YWxpZmllcigpID09IEV2cUZyYWdtZW50T3V0KQorICAgIHsKKyAgICAgICAgaWYgKGxh
eW91dFF1YWxpZmllci55dXYgPT0gdHJ1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgb3V0IDw8
IGxpc3RJdGVtUHJlZml4IDw8ICJ5dXYiOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKElz
T3BhcXVlVHlwZSh0eXBlLmdldEJhc2ljVHlwZSgpKSkKKyAgICB7CisgICAgICAgIGlmIChsYXlv
dXRRdWFsaWZpZXIuYmluZGluZyA+PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBvdXQgPDwg
bGlzdEl0ZW1QcmVmaXggPDwgImJpbmRpbmcgPSAiIDw8IGxheW91dFF1YWxpZmllci5iaW5kaW5n
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKElzSW1hZ2UodHlwZS5nZXRCYXNpY1R5cGUo
KSkpCisgICAgeworICAgICAgICBpZiAobGF5b3V0UXVhbGlmaWVyLmltYWdlSW50ZXJuYWxGb3Jt
YXQgIT0gRWlpZlVuc3BlY2lmaWVkKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQodHlw
ZS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFUZW1wb3JhcnkgfHwgdHlwZS5nZXRRdWFsaWZpZXIoKSA9
PSBFdnFVbmlmb3JtKTsKKyAgICAgICAgICAgIG91dCA8PCBsaXN0SXRlbVByZWZpeAorICAgICAg
ICAgICAgICAgIDw8IGdldEltYWdlSW50ZXJuYWxGb3JtYXRTdHJpbmcobGF5b3V0UXVhbGlmaWVy
LmltYWdlSW50ZXJuYWxGb3JtYXQpOwogICAgICAgICB9CiAgICAgfQorCisgICAgb3V0IDw8ICIp
ICI7Cit9CisKK2NvbnN0IGNoYXIgKlRPdXRwdXRHTFNMQmFzZTo6bWFwUXVhbGlmaWVyVG9TdHJp
bmcoVFF1YWxpZmllciBxdWFsaWZpZXIpCit7CisgICAgaWYgKHNoOjpJc0dMU0w0MTBPck9sZGVy
KG1PdXRwdXQpICYmIG1TaGFkZXJWZXJzaW9uID49IDMwMCAmJgorICAgICAgICAobUNvbXBpbGVP
cHRpb25zICYgU0hfUkVNT1ZFX0lOVkFSSUFOVF9BTkRfQ0VOVFJPSURfRk9SX0VTU0wzKSAhPSAw
KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChxdWFsaWZpZXIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIC8vIFRoZSByZXR1cm4gc3RyaW5nIGlzIGNvbnNpc3RlbnQgd2l0aCBzaDo6Z2V0UXVhbGlm
aWVyU3RyaW5nKCkgZnJvbQorICAgICAgICAgICAgLy8gQmFzZVR5cGVzLmggbWludXMgdGhlICJj
ZW50cm9pZCIga2V5d29yZC4KKyAgICAgICAgICAgIGNhc2UgRXZxQ2VudHJvaWQ6CisgICAgICAg
ICAgICAgICAgcmV0dXJuICIiOworICAgICAgICAgICAgY2FzZSBFdnFDZW50cm9pZEluOgorICAg
ICAgICAgICAgICAgIHJldHVybiAic21vb3RoIGluIjsKKyAgICAgICAgICAgIGNhc2UgRXZxQ2Vu
dHJvaWRPdXQ6CisgICAgICAgICAgICAgICAgcmV0dXJuICJzbW9vdGggb3V0IjsKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgaWYgKHNoOjpJc0dMU0wxMzBPck5ld2VyKG1PdXRwdXQpKQorICAgIHsKKyAgICAgICAgc3dp
dGNoIChxdWFsaWZpZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgRXZxQXR0cmlidXRl
OgorICAgICAgICAgICAgICAgIHJldHVybiAiaW4iOworICAgICAgICAgICAgY2FzZSBFdnFWYXJ5
aW5nSW46CisgICAgICAgICAgICAgICAgcmV0dXJuICJpbiI7CisgICAgICAgICAgICBjYXNlIEV2
cVZhcnlpbmdPdXQ6CisgICAgICAgICAgICAgICAgcmV0dXJuICJvdXQiOworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gc2g6OmdldFF1YWxpZmllclN0cmluZyhxdWFsaWZpZXIpOwogfQogCiB2b2lkIFRPdXRw
dXRHTFNMQmFzZTo6d3JpdGVWYXJpYWJsZVR5cGUoY29uc3QgVFR5cGUgJnR5cGUpCiB7Ci0gICAg
VEluZm9TaW5rQmFzZSAmb3V0ID0gb2JqU2luaygpOworICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVy
ID0gdHlwZS5nZXRRdWFsaWZpZXIoKTsKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgICA9IG9ialNp
bmsoKTsKICAgICBpZiAodHlwZS5pc0ludmFyaWFudCgpKQogICAgIHsKLSAgICAgICAgb3V0IDw8
ICJpbnZhcmlhbnQgIjsKKyAgICAgICAgd3JpdGVJbnZhcmlhbnRRdWFsaWZpZXIodHlwZSk7CiAg
ICAgfQogICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidEludGVyZmFjZUJsb2NrKQog
ICAgIHsKICAgICAgICAgVEludGVyZmFjZUJsb2NrICppbnRlcmZhY2VCbG9jayA9IHR5cGUuZ2V0
SW50ZXJmYWNlQmxvY2soKTsKICAgICAgICAgZGVjbGFyZUludGVyZmFjZUJsb2NrTGF5b3V0KGlu
dGVyZmFjZUJsb2NrKTsKICAgICB9Ci0gICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSB0eXBlLmdl
dFF1YWxpZmllcigpOwogICAgIGlmIChxdWFsaWZpZXIgIT0gRXZxVGVtcG9yYXJ5ICYmIHF1YWxp
ZmllciAhPSBFdnFHbG9iYWwpCiAgICAgewotICAgICAgICBpZiAoSXNHTFNMMTMwT3JOZXdlciht
T3V0cHV0KSkKKyAgICAgICAgY29uc3QgY2hhciAqcXVhbGlmaWVyU3RyaW5nID0gbWFwUXVhbGlm
aWVyVG9TdHJpbmcocXVhbGlmaWVyKTsKKyAgICAgICAgaWYgKHF1YWxpZmllclN0cmluZyAmJiBx
dWFsaWZpZXJTdHJpbmdbMF0gIT0gJ1wwJykKICAgICAgICAgewotICAgICAgICAgICAgc3dpdGNo
IChxdWFsaWZpZXIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgRXZxQXR0cmli
dXRlOgotICAgICAgICAgICAgICAgIG91dCA8PCAiaW4gIjsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgY2FzZSBFdnFWYXJ5aW5nSW46Ci0gICAgICAgICAgICAgICAgb3V0
IDw8ICJpbiAiOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEV2
cVZhcnlpbmdPdXQ6Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICJvdXQgIjsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBvdXQg
PDwgdHlwZS5nZXRRdWFsaWZpZXJTdHJpbmcoKSA8PCAiICI7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0g
ICAgICAgICAgICBvdXQgPDwgdHlwZS5nZXRRdWFsaWZpZXJTdHJpbmcoKSA8PCAiICI7CisgICAg
ICAgICAgICBvdXQgPDwgcXVhbGlmaWVyU3RyaW5nIDw8ICIgIjsKICAgICAgICAgfQogICAgIH0K
KworICAgIGNvbnN0IFRNZW1vcnlRdWFsaWZpZXIgJm1lbW9yeVF1YWxpZmllciA9IHR5cGUuZ2V0
TWVtb3J5UXVhbGlmaWVyKCk7CisgICAgaWYgKG1lbW9yeVF1YWxpZmllci5yZWFkb25seSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChJc0ltYWdlKHR5cGUuZ2V0QmFzaWNUeXBlKCkpKTsKKyAgICAg
ICAgb3V0IDw8ICJyZWFkb25seSAiOworICAgIH0KKworICAgIGlmIChtZW1vcnlRdWFsaWZpZXIu
d3JpdGVvbmx5KQorICAgIHsKKyAgICAgICAgQVNTRVJUKElzSW1hZ2UodHlwZS5nZXRCYXNpY1R5
cGUoKSkpOworICAgICAgICBvdXQgPDwgIndyaXRlb25seSAiOworICAgIH0KKworICAgIGlmICht
ZW1vcnlRdWFsaWZpZXIuY29oZXJlbnQpCisgICAgeworICAgICAgICBBU1NFUlQoSXNJbWFnZSh0
eXBlLmdldEJhc2ljVHlwZSgpKSk7CisgICAgICAgIG91dCA8PCAiY29oZXJlbnQgIjsKKyAgICB9
CisKKyAgICBpZiAobWVtb3J5UXVhbGlmaWVyLnJlc3RyaWN0UXVhbGlmaWVyKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKElzSW1hZ2UodHlwZS5nZXRCYXNpY1R5cGUoKSkpOworICAgICAgICBvdXQg
PDwgInJlc3RyaWN0ICI7CisgICAgfQorCisgICAgaWYgKG1lbW9yeVF1YWxpZmllci52b2xhdGls
ZVF1YWxpZmllcikKKyAgICB7CisgICAgICAgIEFTU0VSVChJc0ltYWdlKHR5cGUuZ2V0QmFzaWNU
eXBlKCkpKTsKKyAgICAgICAgb3V0IDw8ICJ2b2xhdGlsZSAiOworICAgIH0KKwogICAgIC8vIERl
Y2xhcmUgdGhlIHN0cnVjdCBpZiB3ZSBoYXZlIG5vdCBkb25lIHNvIGFscmVhZHkuCiAgICAgaWYg
KHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0ICYmICFzdHJ1Y3REZWNsYXJlZCh0eXBl
LmdldFN0cnVjdCgpKSkKICAgICB7CkBAIC0xNjksOCArMzY1LDcgQEAgdm9pZCBUT3V0cHV0R0xT
TEJhc2U6OndyaXRlVmFyaWFibGVUeXBlKGNvbnN0IFRUeXBlICZ0eXBlKQogdm9pZCBUT3V0cHV0
R0xTTEJhc2U6OndyaXRlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAm
YXJncykKIHsKICAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBvYmpTaW5rKCk7Ci0gICAgZm9yIChU
SW50ZXJtU2VxdWVuY2U6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBhcmdzLmJlZ2luKCk7Ci0gICAg
ICAgICBpdGVyICE9IGFyZ3MuZW5kKCk7ICsraXRlcikKKyAgICBmb3IgKFRJbnRlcm1TZXF1ZW5j
ZTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGFyZ3MuYmVnaW4oKTsgaXRlciAhPSBhcmdzLmVuZCgp
OyArK2l0ZXIpCiAgICAgewogICAgICAgICBjb25zdCBUSW50ZXJtU3ltYm9sICphcmcgPSAoKml0
ZXIpLT5nZXRBc1N5bWJvbE5vZGUoKTsKICAgICAgICAgQVNTRVJUKGFyZyAhPSBOVUxMKTsKQEAg
LTE3OCw5ICszNzMsOCBAQCB2b2lkIFRPdXRwdXRHTFNMQmFzZTo6d3JpdGVGdW5jdGlvblBhcmFt
ZXRlcnMoY29uc3QgVEludGVybVNlcXVlbmNlICZhcmdzKQogICAgICAgICBjb25zdCBUVHlwZSAm
dHlwZSA9IGFyZy0+Z2V0VHlwZSgpOwogICAgICAgICB3cml0ZVZhcmlhYmxlVHlwZSh0eXBlKTsK
IAotICAgICAgICBjb25zdCBUU3RyaW5nICZuYW1lID0gYXJnLT5nZXRTeW1ib2woKTsKLSAgICAg
ICAgaWYgKCFuYW1lLmVtcHR5KCkpCi0gICAgICAgICAgICBvdXQgPDwgIiAiIDw8IGhhc2hOYW1l
KG5hbWUpOworICAgICAgICBpZiAoIWFyZy0+Z2V0TmFtZSgpLmdldFN0cmluZygpLmVtcHR5KCkp
CisgICAgICAgICAgICBvdXQgPDwgIiAiIDw8IGhhc2hOYW1lKGFyZy0+Z2V0TmFtZSgpKTsKICAg
ICAgICAgaWYgKHR5cGUuaXNBcnJheSgpKQogICAgICAgICAgICAgb3V0IDw8IGFycmF5QnJhY2tl
dHModHlwZSk7CiAKQEAgLTE5MCwxNSArMzg0LDE1IEBAIHZvaWQgVE91dHB1dEdMU0xCYXNlOjp3
cml0ZUZ1bmN0aW9uUGFyYW1ldGVycyhjb25zdCBUSW50ZXJtU2VxdWVuY2UgJmFyZ3MpCiAgICAg
fQogfQogCi1jb25zdCBUQ29uc3RhbnRVbmlvbiAqVE91dHB1dEdMU0xCYXNlOjp3cml0ZUNvbnN0
YW50VW5pb24oCi0gICAgY29uc3QgVFR5cGUgJnR5cGUsIGNvbnN0IFRDb25zdGFudFVuaW9uICpw
Q29uc3RVbmlvbikKK2NvbnN0IFRDb25zdGFudFVuaW9uICpUT3V0cHV0R0xTTEJhc2U6OndyaXRl
Q29uc3RhbnRVbmlvbihjb25zdCBUVHlwZSAmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAq
cENvbnN0VW5pb24pCiB7CiAgICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gb2JqU2luaygpOwogCiAg
ICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0KQogICAgIHsKICAgICAgICAg
Y29uc3QgVFN0cnVjdHVyZSAqc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKLSAgICAgICAg
b3V0IDw8IGhhc2hOYW1lKHN0cnVjdHVyZS0+bmFtZSgpKSA8PCAiKCI7CisgICAgICAgIG91dCA8
PCBoYXNoTmFtZShUTmFtZShzdHJ1Y3R1cmUtPm5hbWUoKSkpIDw8ICIoIjsKIAogICAgICAgICBj
b25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSBzdHJ1Y3R1cmUtPmZpZWxkcygpOwogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkKQEAgLTIxMyw3ICs0MDcs
NyBAQCBjb25zdCBUQ29uc3RhbnRVbmlvbiAqVE91dHB1dEdMU0xCYXNlOjp3cml0ZUNvbnN0YW50
VW5pb24oCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHNpemVfdCBzaXplID0gdHlw
ZS5nZXRPYmplY3RTaXplKCk7CisgICAgICAgIHNpemVfdCBzaXplICAgID0gdHlwZS5nZXRPYmpl
Y3RTaXplKCk7CiAgICAgICAgIGJvb2wgd3JpdGVUeXBlID0gc2l6ZSA+IDE7CiAgICAgICAgIGlm
ICh3cml0ZVR5cGUpCiAgICAgICAgICAgICBvdXQgPDwgZ2V0VHlwZU5hbWUodHlwZSkgPDwgIigi
OwpAQCAtMjIxLDE5ICs0MTUsMjMgQEAgY29uc3QgVENvbnN0YW50VW5pb24gKlRPdXRwdXRHTFNM
QmFzZTo6d3JpdGVDb25zdGFudFVuaW9uKAogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2gg
KHBDb25zdFVuaW9uLT5nZXRUeXBlKCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNh
c2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICAgICAgb3V0IDw8IHN0ZDo6bWluKEZMVF9NQVgsIHN0
ZDo6bWF4KC1GTFRfTUFYLCBwQ29uc3RVbmlvbi0+Z2V0RkNvbnN0KCkpKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBFYnRJbnQ6Ci0gICAgICAgICAgICAgICAg
b3V0IDw8IHBDb25zdFVuaW9uLT5nZXRJQ29uc3QoKTsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgY2FzZSBFYnRVSW50OgotICAgICAgICAgICAgICAgIG91dCA8PCBwQ29u
c3RVbmlvbi0+Z2V0VUNvbnN0KCkgPDwgInUiOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICBjYXNlIEVidEJvb2w6Ci0gICAgICAgICAgICAgICAgb3V0IDw8IHBDb25zdFVu
aW9uLT5nZXRCQ29uc3QoKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICBjYXNlIEVidEZsb2F0Ogor
ICAgICAgICAgICAgICAgICAgICB3cml0ZUZsb2F0KG91dCwgcENvbnN0VW5pb24tPmdldEZDb25z
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBF
YnRJbnQ6CisgICAgICAgICAgICAgICAgICAgIG91dCA8PCBwQ29uc3RVbmlvbi0+Z2V0SUNvbnN0
KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRWJ0
VUludDoKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8IHBDb25zdFVuaW9uLT5nZXRVQ29uc3Qo
KSA8PCAidSI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNh
c2UgRWJ0Qm9vbDoKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8IHBDb25zdFVuaW9uLT5nZXRC
Q29uc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2Fz
ZSBFYnRZdXZDc2NTdGFuZGFyZEVYVDoKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8IGdldFl1
dkNzY1N0YW5kYXJkRVhUU3RyaW5nKHBDb25zdFVuaW9uLT5nZXRZdXZDc2NTdGFuZGFyZEVYVENv
bnN0KCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKGkgIT0gc2l6ZSAtIDEpCiAgICAgICAgICAgICAgICAgb3V0IDw8ICIs
ICI7CkBAIC0yNjksMTAgKzQ2Nyw3IEBAIHZvaWQgVE91dHB1dEdMU0xCYXNlOjp3cml0ZUNvbnN0
cnVjdG9yVHJpcGxldChWaXNpdCB2aXNpdCwgY29uc3QgVFR5cGUgJnR5cGUpCiB2b2lkIFRPdXRw
dXRHTFNMQmFzZTo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkKIHsKICAgICBUSW5m
b1NpbmtCYXNlICZvdXQgPSBvYmpTaW5rKCk7Ci0gICAgaWYgKG1Mb29wVW5yb2xsU3RhY2submVl
ZHNUb1JlcGxhY2VTeW1ib2xXaXRoVmFsdWUobm9kZSkpCi0gICAgICAgIG91dCA8PCBtTG9vcFVu
cm9sbFN0YWNrLmdldExvb3BJbmRleFZhbHVlKG5vZGUpOwotICAgIGVsc2UKLSAgICAgICAgb3V0
IDw8IGhhc2hWYXJpYWJsZU5hbWUobm9kZS0+Z2V0U3ltYm9sKCkpOworICAgIG91dCA8PCBoYXNo
VmFyaWFibGVOYW1lKG5vZGUtPmdldE5hbWUoKSk7CiAKICAgICBpZiAobURlY2xhcmluZ1Zhcmlh
YmxlcyAmJiBub2RlLT5nZXRUeXBlKCkuaXNBcnJheSgpKQogICAgICAgICBvdXQgPDwgYXJyYXlC
cmFja2V0cyhub2RlLT5nZXRUeXBlKCkpOwpAQCAtNDA1LDcgKzYwMCw3IEBAIGJvb2wgVE91dHB1
dEdMU0xCYXNlOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkK
IAogICAgICAgICAgICAgICAgIFRTdHJpbmcgZmllbGROYW1lID0gZmllbGQtPm5hbWUoKTsKICAg
ICAgICAgICAgICAgICBpZiAoIW1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihzdHJ1Y3R1cmUtPm5h
bWUoKSwgbVNoYWRlclZlcnNpb24pKQotICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWUgPSBo
YXNoTmFtZShmaWVsZE5hbWUpOworICAgICAgICAgICAgICAgICAgICBmaWVsZE5hbWUgPSBoYXNo
TmFtZShUTmFtZShmaWVsZE5hbWUpKTsKIAogICAgICAgICAgICAgICAgIG91dCA8PCBmaWVsZE5h
bWU7CiAgICAgICAgICAgICAgICAgdmlzaXRDaGlsZHJlbiA9IGZhbHNlOwpAQCAtNDIyLDcgKzYx
Nyw3IEBAIGJvb2wgVE91dHB1dEdMU0xCYXNlOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVElu
dGVybUJpbmFyeSAqbm9kZSkKIAogICAgICAgICAgICAgICAgIFRTdHJpbmcgZmllbGROYW1lID0g
ZmllbGQtPm5hbWUoKTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIW1TeW1ib2xUYWJsZS5maW5k
QnVpbHRJbihpbnRlcmZhY2VCbG9jay0+bmFtZSgpLCBtU2hhZGVyVmVyc2lvbikpOwotICAgICAg
ICAgICAgICAgIGZpZWxkTmFtZSA9IGhhc2hOYW1lKGZpZWxkTmFtZSk7CisgICAgICAgICAgICAg
ICAgZmllbGROYW1lID0gaGFzaE5hbWUoVE5hbWUoZmllbGROYW1lKSk7CiAKICAgICAgICAgICAg
ICAgICBvdXQgPDwgZmllbGROYW1lOwogICAgICAgICAgICAgICAgIHZpc2l0Q2hpbGRyZW4gPSBm
YWxzZTsKQEAgLTUxMSwxODMgKzcwNiw5OSBAQCBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRV
bmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5ICpub2RlKQogCiAgICAgc3dpdGNoIChub2Rl
LT5nZXRPcCgpKQogICAgIHsKLSAgICAgIGNhc2UgRU9wTmVnYXRpdmU6IHByZVN0cmluZyA9ICIo
LSI7IGJyZWFrOwotICAgICAgY2FzZSBFT3BQb3NpdGl2ZTogcHJlU3RyaW5nID0gIigrIjsgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcFZlY3RvckxvZ2ljYWxOb3Q6IHByZVN0cmluZyA9ICJub3QoIjsg
YnJlYWs7Ci0gICAgICBjYXNlIEVPcExvZ2ljYWxOb3Q6IHByZVN0cmluZyA9ICIoISI7IGJyZWFr
OwotICAgICAgY2FzZSBFT3BCaXR3aXNlTm90OiBwcmVTdHJpbmcgPSAiKH4iOyBicmVhazsKLQot
ICAgICAgY2FzZSBFT3BQb3N0SW5jcmVtZW50OiBwcmVTdHJpbmcgPSAiKCI7IHBvc3RTdHJpbmcg
PSAiKyspIjsgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFBvc3REZWNyZW1lbnQ6IHByZVN0cmluZyA9
ICIoIjsgcG9zdFN0cmluZyA9ICItLSkiOyBicmVhazsKLSAgICAgIGNhc2UgRU9wUHJlSW5jcmVt
ZW50OiBwcmVTdHJpbmcgPSAiKCsrIjsgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFByZURlY3JlbWVu
dDogcHJlU3RyaW5nID0gIigtLSI7IGJyZWFrOwotCi0gICAgICBjYXNlIEVPcFJhZGlhbnM6Ci0g
ICAgICAgIHByZVN0cmluZyA9ICJyYWRpYW5zKCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BEZWdyZWVzOgotICAgICAgICBwcmVTdHJpbmcgPSAiZGVncmVlcygiOwotICAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgRU9wU2luOgotICAgICAgICBwcmVTdHJpbmcgPSAic2luKCI7Ci0g
ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BDb3M6Ci0gICAgICAgIHByZVN0cmluZyA9ICJj
b3MoIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFRhbjoKLSAgICAgICAgcHJlU3Ry
aW5nID0gInRhbigiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQXNpbjoKLSAgICAg
ICAgcHJlU3RyaW5nID0gImFzaW4oIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEFj
b3M6Ci0gICAgICAgIHByZVN0cmluZyA9ICJhY29zKCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFT3BBdGFuOgotICAgICAgICBwcmVTdHJpbmcgPSAiYXRhbigiOwotICAgICAgICBicmVh
azsKLQotICAgICAgY2FzZSBFT3BTaW5oOgotICAgICAgICBwcmVTdHJpbmcgPSAic2luaCgiOwot
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ29zaDoKLSAgICAgICAgcHJlU3RyaW5nID0g
ImNvc2goIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFRhbmg6Ci0gICAgICAgIHBy
ZVN0cmluZyA9ICJ0YW5oKCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BBc2luaDoK
LSAgICAgICAgcHJlU3RyaW5nID0gImFzaW5oKCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BBY29zaDoKLSAgICAgICAgcHJlU3RyaW5nID0gImFjb3NoKCI7Ci0gICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFT3BBdGFuaDoKLSAgICAgICAgcHJlU3RyaW5nID0gImF0YW5oKCI7Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcEV4cDoKLSAgICAgICAgcHJlU3RyaW5nID0g
ImV4cCgiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTG9nOgotICAgICAgICBwcmVT
dHJpbmcgPSAibG9nKCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BFeHAyOgotICAg
ICAgICBwcmVTdHJpbmcgPSAiZXhwMigiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
TG9nMjoKLSAgICAgICAgcHJlU3RyaW5nID0gImxvZzIoIjsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcFNxcnQ6Ci0gICAgICAgIHByZVN0cmluZyA9ICJzcXJ0KCI7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFT3BJbnZlcnNlU3FydDoKLSAgICAgICAgcHJlU3RyaW5nID0gImlu
dmVyc2VzcXJ0KCI7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcEFiczoKLSAgICAg
ICAgcHJlU3RyaW5nID0gImFicygiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wU2ln
bjoKLSAgICAgICAgcHJlU3RyaW5nID0gInNpZ24oIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEVPcEZsb29yOgotICAgICAgICBwcmVTdHJpbmcgPSAiZmxvb3IoIjsKLSAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcFRydW5jOgotICAgICAgICBwcmVTdHJpbmcgPSAidHJ1bmMoIjsK
LSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFJvdW5kOgotICAgICAgICBwcmVTdHJpbmcg
PSAicm91bmQoIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFJvdW5kRXZlbjoKLSAg
ICAgICAgcHJlU3RyaW5nID0gInJvdW5kRXZlbigiOwotICAgICAgICBicmVhazsKLSAgICAgIGNh
c2UgRU9wQ2VpbDoKLSAgICAgICAgcHJlU3RyaW5nID0gImNlaWwoIjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEVPcEZyYWN0OgotICAgICAgICBwcmVTdHJpbmcgPSAiZnJhY3QoIjsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcElzTmFuOgotICAgICAgICBwcmVTdHJpbmcgPSAi
aXNuYW4oIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcElzSW5mOgotICAgICAgICBw
cmVTdHJpbmcgPSAiaXNpbmYoIjsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRU9wRmxv
YXRCaXRzVG9JbnQ6Ci0gICAgICAgIHByZVN0cmluZyA9ICJmbG9hdEJpdHNUb0ludCgiOwotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wRmxvYXRCaXRzVG9VaW50OgotICAgICAgICBwcmVT
dHJpbmcgPSAiZmxvYXRCaXRzVG9VaW50KCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBF
T3BJbnRCaXRzVG9GbG9hdDoKLSAgICAgICAgcHJlU3RyaW5nID0gImludEJpdHNUb0Zsb2F0KCI7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BVaW50Qml0c1RvRmxvYXQ6Ci0gICAgICAg
IHByZVN0cmluZyA9ICJ1aW50Qml0c1RvRmxvYXQoIjsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAg
IGNhc2UgRU9wUGFja1Nub3JtMngxNjoKLSAgICAgICAgcHJlU3RyaW5nID0gInBhY2tTbm9ybTJ4
MTYoIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFBhY2tVbm9ybTJ4MTY6Ci0gICAg
ICAgIHByZVN0cmluZyA9ICJwYWNrVW5vcm0yeDE2KCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFT3BQYWNrSGFsZjJ4MTY6Ci0gICAgICAgIHByZVN0cmluZyA9ICJwYWNrSGFsZjJ4MTYo
IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFVucGFja1Nub3JtMngxNjoKLSAgICAg
ICAgcHJlU3RyaW5nID0gInVucGFja1Nub3JtMngxNigiOwotICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgRU9wVW5wYWNrVW5vcm0yeDE2OgotICAgICAgICBwcmVTdHJpbmcgPSAidW5wYWNrVW5v
cm0yeDE2KCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BVbnBhY2tIYWxmMngxNjoK
LSAgICAgICAgcHJlU3RyaW5nID0gInVucGFja0hhbGYyeDE2KCI7Ci0gICAgICAgIGJyZWFrOwot
Ci0gICAgICBjYXNlIEVPcExlbmd0aDoKLSAgICAgICAgcHJlU3RyaW5nID0gImxlbmd0aCgiOwot
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTm9ybWFsaXplOgotICAgICAgICBwcmVTdHJp
bmcgPSAibm9ybWFsaXplKCI7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcERGZHg6
Ci0gICAgICAgIHByZVN0cmluZyA9ICJkRmR4KCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BERmR5OgotICAgICAgICBwcmVTdHJpbmcgPSAiZEZkeSgiOwotICAgICAgICBicmVhazsK
LSAgICAgIGNhc2UgRU9wRndpZHRoOgotICAgICAgICBwcmVTdHJpbmcgPSAiZndpZHRoKCI7Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcFRyYW5zcG9zZToKLSAgICAgICAgcHJlU3Ry
aW5nID0gInRyYW5zcG9zZSgiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wRGV0ZXJt
aW5hbnQ6Ci0gICAgICAgIHByZVN0cmluZyA9ICJkZXRlcm1pbmFudCgiOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRU9wSW52ZXJzZToKLSAgICAgICAgcHJlU3RyaW5nID0gImludmVyc2Uo
IjsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRU9wQW55OgotICAgICAgICBwcmVTdHJp
bmcgPSAiYW55KCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BBbGw6Ci0gICAgICAg
IHByZVN0cmluZyA9ICJhbGwoIjsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgfQotCi0gICAgaWYgKHZpc2l0ID09IFByZVZpc2l0
ICYmIG5vZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSkKLSAgICAgICAgcHJlU3RyaW5nID0g
QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3I6OkdldEVtdWxhdGVkRnVuY3Rpb25OYW1lKHByZVN0cmlu
Zyk7CisgICAgICAgIGNhc2UgRU9wTmVnYXRpdmU6CisgICAgICAgICAgICBwcmVTdHJpbmcgPSAi
KC0iOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wUG9zaXRpdmU6CisgICAg
ICAgICAgICBwcmVTdHJpbmcgPSAiKCsiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRU9wTG9naWNhbE5vdDoKKyAgICAgICAgICAgIHByZVN0cmluZyA9ICIoISI7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNlTm90OgorICAgICAgICAgICAgcHJl
U3RyaW5nID0gIih+IjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRU9wUG9z
dEluY3JlbWVudDoKKyAgICAgICAgICAgIHByZVN0cmluZyAgPSAiKCI7CisgICAgICAgICAgICBw
b3N0U3RyaW5nID0gIisrKSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BQ
b3N0RGVjcmVtZW50OgorICAgICAgICAgICAgcHJlU3RyaW5nICA9ICIoIjsKKyAgICAgICAgICAg
IHBvc3RTdHJpbmcgPSAiLS0pIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVP
cFByZUluY3JlbWVudDoKKyAgICAgICAgICAgIHByZVN0cmluZyA9ICIoKysiOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wUHJlRGVjcmVtZW50OgorICAgICAgICAgICAgcHJl
U3RyaW5nID0gIigtLSI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEVPcFJh
ZGlhbnM6CisgICAgICAgIGNhc2UgRU9wRGVncmVlczoKKyAgICAgICAgY2FzZSBFT3BTaW46Cisg
ICAgICAgIGNhc2UgRU9wQ29zOgorICAgICAgICBjYXNlIEVPcFRhbjoKKyAgICAgICAgY2FzZSBF
T3BBc2luOgorICAgICAgICBjYXNlIEVPcEFjb3M6CisgICAgICAgIGNhc2UgRU9wQXRhbjoKKyAg
ICAgICAgY2FzZSBFT3BTaW5oOgorICAgICAgICBjYXNlIEVPcENvc2g6CisgICAgICAgIGNhc2Ug
RU9wVGFuaDoKKyAgICAgICAgY2FzZSBFT3BBc2luaDoKKyAgICAgICAgY2FzZSBFT3BBY29zaDoK
KyAgICAgICAgY2FzZSBFT3BBdGFuaDoKKyAgICAgICAgY2FzZSBFT3BFeHA6CisgICAgICAgIGNh
c2UgRU9wTG9nOgorICAgICAgICBjYXNlIEVPcEV4cDI6CisgICAgICAgIGNhc2UgRU9wTG9nMjoK
KyAgICAgICAgY2FzZSBFT3BTcXJ0OgorICAgICAgICBjYXNlIEVPcEludmVyc2VTcXJ0OgorICAg
ICAgICBjYXNlIEVPcEFiczoKKyAgICAgICAgY2FzZSBFT3BTaWduOgorICAgICAgICBjYXNlIEVP
cEZsb29yOgorICAgICAgICBjYXNlIEVPcFRydW5jOgorICAgICAgICBjYXNlIEVPcFJvdW5kOgor
ICAgICAgICBjYXNlIEVPcFJvdW5kRXZlbjoKKyAgICAgICAgY2FzZSBFT3BDZWlsOgorICAgICAg
ICBjYXNlIEVPcEZyYWN0OgorICAgICAgICBjYXNlIEVPcElzTmFuOgorICAgICAgICBjYXNlIEVP
cElzSW5mOgorICAgICAgICBjYXNlIEVPcEZsb2F0Qml0c1RvSW50OgorICAgICAgICBjYXNlIEVP
cEZsb2F0Qml0c1RvVWludDoKKyAgICAgICAgY2FzZSBFT3BJbnRCaXRzVG9GbG9hdDoKKyAgICAg
ICAgY2FzZSBFT3BVaW50Qml0c1RvRmxvYXQ6CisgICAgICAgIGNhc2UgRU9wUGFja1Nub3JtMngx
NjoKKyAgICAgICAgY2FzZSBFT3BQYWNrVW5vcm0yeDE2OgorICAgICAgICBjYXNlIEVPcFBhY2tI
YWxmMngxNjoKKyAgICAgICAgY2FzZSBFT3BVbnBhY2tTbm9ybTJ4MTY6CisgICAgICAgIGNhc2Ug
RU9wVW5wYWNrVW5vcm0yeDE2OgorICAgICAgICBjYXNlIEVPcFVucGFja0hhbGYyeDE2OgorICAg
ICAgICBjYXNlIEVPcFBhY2tVbm9ybTR4ODoKKyAgICAgICAgY2FzZSBFT3BQYWNrU25vcm00eDg6
CisgICAgICAgIGNhc2UgRU9wVW5wYWNrVW5vcm00eDg6CisgICAgICAgIGNhc2UgRU9wVW5wYWNr
U25vcm00eDg6CisgICAgICAgIGNhc2UgRU9wTGVuZ3RoOgorICAgICAgICBjYXNlIEVPcE5vcm1h
bGl6ZToKKyAgICAgICAgY2FzZSBFT3BERmR4OgorICAgICAgICBjYXNlIEVPcERGZHk6CisgICAg
ICAgIGNhc2UgRU9wRndpZHRoOgorICAgICAgICBjYXNlIEVPcFRyYW5zcG9zZToKKyAgICAgICAg
Y2FzZSBFT3BEZXRlcm1pbmFudDoKKyAgICAgICAgY2FzZSBFT3BJbnZlcnNlOgorICAgICAgICBj
YXNlIEVPcEFueToKKyAgICAgICAgY2FzZSBFT3BBbGw6CisgICAgICAgIGNhc2UgRU9wTG9naWNh
bE5vdENvbXBvbmVudFdpc2U6CisgICAgICAgIGNhc2UgRU9wQml0ZmllbGRSZXZlcnNlOgorICAg
ICAgICBjYXNlIEVPcEJpdENvdW50OgorICAgICAgICBjYXNlIEVPcEZpbmRMU0I6CisgICAgICAg
IGNhc2UgRU9wRmluZE1TQjoKKyAgICAgICAgICAgIHdyaXRlQnVpbHRJbkZ1bmN0aW9uVHJpcGxl
dCh2aXNpdCwgbm9kZS0+Z2V0T3AoKSwgbm9kZS0+Z2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpKTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICB9CisKICAgICB3cml0ZVRyaXBsZXQodmlzaXQsIHByZVN0cmlu
Zy5jX3N0cigpLCBOVUxMLCBwb3N0U3RyaW5nLmNfc3RyKCkpOwogCiAgICAgcmV0dXJuIHRydWU7
CkBAIC03MTgsNyArODI5LDYgQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0SWZFbHNlKFZp
c2l0IHZpc2l0LCBUSW50ZXJtSWZFbHNlICpub2RlKQogICAgIG5vZGUtPmdldENvbmRpdGlvbigp
LT50cmF2ZXJzZSh0aGlzKTsKICAgICBvdXQgPDwgIilcbiI7CiAKLSAgICBpbmNyZW1lbnREZXB0
aChub2RlKTsKICAgICB2aXNpdENvZGVCbG9jayhub2RlLT5nZXRUcnVlQmxvY2soKSk7CiAKICAg
ICBpZiAobm9kZS0+Z2V0RmFsc2VCbG9jaygpKQpAQCAtNzI2LDcgKzgzNiw2IEBAIGJvb2wgVE91
dHB1dEdMU0xCYXNlOjp2aXNpdElmRWxzZShWaXNpdCB2aXNpdCwgVEludGVybUlmRWxzZSAqbm9k
ZSkKICAgICAgICAgb3V0IDw8ICJlbHNlXG4iOwogICAgICAgICB2aXNpdENvZGVCbG9jayhub2Rl
LT5nZXRGYWxzZUJsb2NrKCkpOwogICAgIH0KLSAgICBkZWNyZW1lbnREZXB0aCgpOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIApAQCAtNzY5LDcgKzg3OCw2IEBAIGJvb2wgVE91dHB1dEdMU0xCYXNl
Ojp2aXNpdEJsb2NrKFZpc2l0IHZpc2l0LCBUSW50ZXJtQmxvY2sgKm5vZGUpCiAgICAgICAgIG91
dCA8PCAie1xuIjsKICAgICB9CiAKLSAgICBpbmNyZW1lbnREZXB0aChub2RlKTsKICAgICBmb3Ig
KFRJbnRlcm1TZXF1ZW5jZTo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG5vZGUtPmdldFNlcXVlbmNl
KCktPmJlZ2luKCk7CiAgICAgICAgICBpdGVyICE9IG5vZGUtPmdldFNlcXVlbmNlKCktPmVuZCgp
OyArK2l0ZXIpCiAgICAgewpAQCAtNzgwLDcgKzg4OCw2IEBAIGJvb2wgVE91dHB1dEdMU0xCYXNl
Ojp2aXNpdEJsb2NrKFZpc2l0IHZpc2l0LCBUSW50ZXJtQmxvY2sgKm5vZGUpCiAgICAgICAgIGlm
IChpc1NpbmdsZVN0YXRlbWVudChjdXJOb2RlKSkKICAgICAgICAgICAgIG91dCA8PCAiO1xuIjsK
ICAgICB9Ci0gICAgZGVjcmVtZW50RGVwdGgoKTsKIAogICAgIC8vIFNjb3BlIHRoZSBibG9ja3Mg
ZXhjZXB0IHdoZW4gYXQgdGhlIGdsb2JhbCBzY29wZS4KICAgICBpZiAobURlcHRoID4gMCkKQEAg
LTc5MiwyNzAgKzg5OSwxOTMgQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0QmxvY2soVmlz
aXQgdmlzaXQsIFRJbnRlcm1CbG9jayAqbm9kZSkKIAogYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZp
c2l0RnVuY3Rpb25EZWZpbml0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25EZWZpbml0
aW9uICpub2RlKQogewotICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG9ialNpbmsoKTsKKyAgICBU
SW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKnByb3RvdHlwZSA9IG5vZGUtPmdldEZ1bmN0aW9uUHJv
dG90eXBlKCk7CisgICAgcHJvdG90eXBlLT50cmF2ZXJzZSh0aGlzKTsKKyAgICB2aXNpdENvZGVC
bG9jayhub2RlLT5nZXRCb2R5KCkpOworCisgICAgLy8gRnVsbHkgcHJvY2Vzc2VkOyBubyBuZWVk
IHRvIHZpc2l0IGNoaWxkcmVuLgorICAgIHJldHVybiBmYWxzZTsKK30KIAorYm9vbCBUT3V0cHV0
R0xTTEJhc2U6OnZpc2l0SW52YXJpYW50RGVjbGFyYXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1J
bnZhcmlhbnREZWNsYXJhdGlvbiAqbm9kZSkKK3sKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBv
YmpTaW5rKCk7CiAgICAgQVNTRVJUKHZpc2l0ID09IFByZVZpc2l0KTsKLSAgICB7Ci0gICAgICAg
IGNvbnN0IFRUeXBlICZ0eXBlID0gbm9kZS0+Z2V0VHlwZSgpOwotICAgICAgICB3cml0ZVZhcmlh
YmxlVHlwZSh0eXBlKTsKLSAgICAgICAgaWYgKHR5cGUuaXNBcnJheSgpKQotICAgICAgICAgICAg
b3V0IDw8IGFycmF5QnJhY2tldHModHlwZSk7Ci0gICAgfQorICAgIGNvbnN0IFRJbnRlcm1TeW1i
b2wgKnN5bWJvbCA9IG5vZGUtPmdldFN5bWJvbCgpOworICAgIG91dCA8PCAiaW52YXJpYW50ICIg
PDwgaGFzaFZhcmlhYmxlTmFtZShzeW1ib2wtPmdldE5hbWUoKSk7CisgICAgcmV0dXJuIGZhbHNl
OworfQogCi0gICAgb3V0IDw8ICIgIiA8PCBoYXNoRnVuY3Rpb25OYW1lSWZOZWVkZWQobm9kZS0+
Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWVPYmooKSk7Citib29sIFRPdXRwdXRHTFNM
QmFzZTo6dmlzaXRGdW5jdGlvblByb3RvdHlwZShWaXNpdCB2aXNpdCwgVEludGVybUZ1bmN0aW9u
UHJvdG90eXBlICpub2RlKQoreworICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG9ialNpbmsoKTsK
KyAgICBBU1NFUlQodmlzaXQgPT0gUHJlVmlzaXQpOwogCi0gICAgaW5jcmVtZW50RGVwdGgobm9k
ZSk7CisgICAgY29uc3QgVFR5cGUgJnR5cGUgPSBub2RlLT5nZXRUeXBlKCk7CisgICAgd3JpdGVW
YXJpYWJsZVR5cGUodHlwZSk7CisgICAgaWYgKHR5cGUuaXNBcnJheSgpKQorICAgICAgICBvdXQg
PDwgYXJyYXlCcmFja2V0cyh0eXBlKTsKIAotICAgIC8vIFRyYXZlcnNlIGZ1bmN0aW9uIHBhcmFt
ZXRlcnMuCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAqcGFyYW1zID0gbm9kZS0+Z2V0RnVuY3Rpb25Q
YXJhbWV0ZXJzKCktPmdldEFzQWdncmVnYXRlKCk7Ci0gICAgQVNTRVJUKHBhcmFtcy0+Z2V0T3Ao
KSA9PSBFT3BQYXJhbWV0ZXJzKTsKLSAgICBwYXJhbXMtPnRyYXZlcnNlKHRoaXMpOworICAgIG91
dCA8PCAiICIgPDwgaGFzaEZ1bmN0aW9uTmFtZUlmTmVlZGVkKCpub2RlLT5nZXRGdW5jdGlvblN5
bWJvbEluZm8oKSk7CiAKLSAgICAvLyBUcmF2ZXJzZSBmdW5jdGlvbiBib2R5LgotICAgIHZpc2l0
Q29kZUJsb2NrKG5vZGUtPmdldEJvZHkoKSk7Ci0gICAgZGVjcmVtZW50RGVwdGgoKTsKKyAgICBv
dXQgPDwgIigiOworICAgIHdyaXRlRnVuY3Rpb25QYXJhbWV0ZXJzKCoobm9kZS0+Z2V0U2VxdWVu
Y2UoKSkpOworICAgIG91dCA8PCAiKSI7CiAKLSAgICAvLyBGdWxseSBwcm9jZXNzZWQ7IG5vIG5l
ZWQgdG8gdmlzaXQgY2hpbGRyZW4uCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIFRPdXRw
dXRHTFNMQmFzZTo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUg
Km5vZGUpCiB7Ci0gICAgYm9vbCB2aXNpdENoaWxkcmVuID0gdHJ1ZTsKLSAgICBUSW5mb1NpbmtC
YXNlICZvdXQgPSBvYmpTaW5rKCk7Ci0gICAgYm9vbCB1c2VFbXVsYXRlZEZ1bmN0aW9uID0gKHZp
c2l0ID09IFByZVZpc2l0ICYmIG5vZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSk7CisgICAg
Ym9vbCB2aXNpdENoaWxkcmVuICAgICAgID0gdHJ1ZTsKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQg
ICAgICAgPSBvYmpTaW5rKCk7CiAgICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQogICAgIHsKLSAg
ICAgIGNhc2UgRU9wUHJvdG90eXBlOgotICAgICAgICAvLyBGdW5jdGlvbiBkZWNsYXJhdGlvbi4K
LSAgICAgICAgQVNTRVJUKHZpc2l0ID09IFByZVZpc2l0KTsKLSAgICAgICAgewotICAgICAgICAg
ICAgY29uc3QgVFR5cGUgJnR5cGUgPSBub2RlLT5nZXRUeXBlKCk7Ci0gICAgICAgICAgICB3cml0
ZVZhcmlhYmxlVHlwZSh0eXBlKTsKLSAgICAgICAgICAgIGlmICh0eXBlLmlzQXJyYXkoKSkKLSAg
ICAgICAgICAgICAgICBvdXQgPDwgYXJyYXlCcmFja2V0cyh0eXBlKTsKLSAgICAgICAgfQorICAg
ICAgICBjYXNlIEVPcENhbGxGdW5jdGlvbkluQVNUOgorICAgICAgICBjYXNlIEVPcENhbGxJbnRl
cm5hbFJhd0Z1bmN0aW9uOgorICAgICAgICBjYXNlIEVPcENhbGxCdWlsdEluRnVuY3Rpb246Cisg
ICAgICAgICAgICAvLyBGdW5jdGlvbiBjYWxsLgorICAgICAgICAgICAgaWYgKHZpc2l0ID09IFBy
ZVZpc2l0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChub2RlLT5nZXRPcCgp
ID09IEVPcENhbGxCdWlsdEluRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBvdXQgPDwgdHJhbnNsYXRlVGV4dHVyZUZ1bmN0aW9uKG5vZGUtPmdldEZ1bmN0
aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBvdXQg
PDwgaGFzaEZ1bmN0aW9uTmFtZUlmTmVlZGVkKCpub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8o
KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dCA8PCAiKCI7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBJblZpc2l0KQorICAgICAg
ICAgICAgICAgIG91dCA8PCAiLCAiOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IG91dCA8PCAiKSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1
Y3RGbG9hdDoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMyOgorICAgICAgICBjYXNlIEVP
cENvbnN0cnVjdFZlYzM6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjNDoKKyAgICAgICAg
Y2FzZSBFT3BDb25zdHJ1Y3RCb29sOgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWMyOgor
ICAgICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWMzOgorICAgICAgICBjYXNlIEVPcENvbnN0cnVj
dEJWZWM0OgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdEludDoKKyAgICAgICAgY2FzZSBFT3BD
b25zdHJ1Y3RJVmVjMjoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RJVmVjMzoKKyAgICAgICAg
Y2FzZSBFT3BDb25zdHJ1Y3RJVmVjNDoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RVSW50Ogor
ICAgICAgICBjYXNlIEVPcENvbnN0cnVjdFVWZWMyOgorICAgICAgICBjYXNlIEVPcENvbnN0cnVj
dFVWZWMzOgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdFVWZWM0OgorICAgICAgICBjYXNlIEVP
cENvbnN0cnVjdE1hdDI6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MngzOgorICAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdE1hdDJ4NDoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQz
eDI6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MzoKKyAgICAgICAgY2FzZSBFT3BDb25z
dHJ1Y3RNYXQzeDQ6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NHgyOgorICAgICAgICBj
YXNlIEVPcENvbnN0cnVjdE1hdDR4MzoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0Ogor
ICAgICAgICBjYXNlIEVPcENvbnN0cnVjdFN0cnVjdDoKKyAgICAgICAgICAgIHdyaXRlQ29uc3Ry
dWN0b3JUcmlwbGV0KHZpc2l0LCBub2RlLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgb3V0IDw8ICIgIiA8PCBoYXNoRnVuY3Rpb25OYW1lSWZOZWVkZWQobm9kZS0+
Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWVPYmooKSk7CisgICAgICAgIGNhc2UgRU9w
RXF1YWxDb21wb25lbnRXaXNlOgorICAgICAgICBjYXNlIEVPcE5vdEVxdWFsQ29tcG9uZW50V2lz
ZToKKyAgICAgICAgY2FzZSBFT3BMZXNzVGhhbkNvbXBvbmVudFdpc2U6CisgICAgICAgIGNhc2Ug
RU9wR3JlYXRlclRoYW5Db21wb25lbnRXaXNlOgorICAgICAgICBjYXNlIEVPcExlc3NUaGFuRXF1
YWxDb21wb25lbnRXaXNlOgorICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWxDb21wb25l
bnRXaXNlOgorICAgICAgICBjYXNlIEVPcE1vZDoKKyAgICAgICAgY2FzZSBFT3BNb2RmOgorICAg
ICAgICBjYXNlIEVPcFBvdzoKKyAgICAgICAgY2FzZSBFT3BBdGFuOgorICAgICAgICBjYXNlIEVP
cE1pbjoKKyAgICAgICAgY2FzZSBFT3BNYXg6CisgICAgICAgIGNhc2UgRU9wQ2xhbXA6CisgICAg
ICAgIGNhc2UgRU9wTWl4OgorICAgICAgICBjYXNlIEVPcFN0ZXA6CisgICAgICAgIGNhc2UgRU9w
U21vb3RoU3RlcDoKKyAgICAgICAgY2FzZSBFT3BGcmV4cDoKKyAgICAgICAgY2FzZSBFT3BMZGV4
cDoKKyAgICAgICAgY2FzZSBFT3BEaXN0YW5jZToKKyAgICAgICAgY2FzZSBFT3BEb3Q6CisgICAg
ICAgIGNhc2UgRU9wQ3Jvc3M6CisgICAgICAgIGNhc2UgRU9wRmFjZUZvcndhcmQ6CisgICAgICAg
IGNhc2UgRU9wUmVmbGVjdDoKKyAgICAgICAgY2FzZSBFT3BSZWZyYWN0OgorICAgICAgICBjYXNl
IEVPcE11bE1hdHJpeENvbXBvbmVudFdpc2U6CisgICAgICAgIGNhc2UgRU9wT3V0ZXJQcm9kdWN0
OgorICAgICAgICBjYXNlIEVPcEJpdGZpZWxkRXh0cmFjdDoKKyAgICAgICAgY2FzZSBFT3BCaXRm
aWVsZEluc2VydDoKKyAgICAgICAgY2FzZSBFT3BVYWRkQ2Fycnk6CisgICAgICAgIGNhc2UgRU9w
VXN1YkJvcnJvdzoKKyAgICAgICAgY2FzZSBFT3BVbXVsRXh0ZW5kZWQ6CisgICAgICAgIGNhc2Ug
RU9wSW11bEV4dGVuZGVkOgorICAgICAgICBjYXNlIEVPcEJhcnJpZXI6CisgICAgICAgIGNhc2Ug
RU9wTWVtb3J5QmFycmllcjoKKyAgICAgICAgY2FzZSBFT3BNZW1vcnlCYXJyaWVyQXRvbWljQ291
bnRlcjoKKyAgICAgICAgY2FzZSBFT3BNZW1vcnlCYXJyaWVyQnVmZmVyOgorICAgICAgICBjYXNl
IEVPcE1lbW9yeUJhcnJpZXJJbWFnZToKKyAgICAgICAgY2FzZSBFT3BNZW1vcnlCYXJyaWVyU2hh
cmVkOgorICAgICAgICBjYXNlIEVPcEdyb3VwTWVtb3J5QmFycmllcjoKKyAgICAgICAgICAgIHdy
aXRlQnVpbHRJbkZ1bmN0aW9uVHJpcGxldCh2aXNpdCwgbm9kZS0+Z2V0T3AoKSwgbm9kZS0+Z2V0
VXNlRW11bGF0ZWRGdW5jdGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9CisgICAgcmV0dXJuIHZpc2l0
Q2hpbGRyZW47Cit9CiAKLSAgICAgICAgb3V0IDw8ICIoIjsKLSAgICAgICAgd3JpdGVGdW5jdGlv
blBhcmFtZXRlcnMoKihub2RlLT5nZXRTZXF1ZW5jZSgpKSk7Ci0gICAgICAgIG91dCA8PCAiKSI7
Citib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXREZWNsYXJhdGlvbihWaXNpdCB2aXNpdCwgVElu
dGVybURlY2xhcmF0aW9uICpub2RlKQoreworICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG9ialNp
bmsoKTsKIAotICAgICAgICB2aXNpdENoaWxkcmVuID0gZmFsc2U7Ci0gICAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSBFT3BGdW5jdGlvbkNhbGw6Ci0gICAgICAgIC8vIEZ1bmN0aW9uIGNhbGwuCi0g
ICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKLSAgICAgICAgICAgIG91dCA8PCBoYXNoRnVu
Y3Rpb25OYW1lSWZOZWVkZWQobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWVP
YmooKSkgPDwgIigiOwotICAgICAgICBlbHNlIGlmICh2aXNpdCA9PSBJblZpc2l0KQotICAgICAg
ICAgICAgb3V0IDw8ICIsICI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG91dCA8PCAiKSI7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BQYXJhbWV0ZXJzOgotICAgICAgICAvLyBG
dW5jdGlvbiBwYXJhbWV0ZXJzLgotICAgICAgICBBU1NFUlQodmlzaXQgPT0gUHJlVmlzaXQpOwot
ICAgICAgICBvdXQgPDwgIigiOwotICAgICAgICB3cml0ZUZ1bmN0aW9uUGFyYW1ldGVycygqKG5v
ZGUtPmdldFNlcXVlbmNlKCkpKTsKLSAgICAgICAgb3V0IDw8ICIpIjsKLSAgICAgICAgdmlzaXRD
aGlsZHJlbiA9IGZhbHNlOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wRGVjbGFyYXRp
b246Ci0gICAgICAgIC8vIFZhcmlhYmxlIGRlY2xhcmF0aW9uLgotICAgICAgICBpZiAodmlzaXQg
PT0gUHJlVmlzaXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5j
ZSAmc2VxdWVuY2UgPSAqKG5vZGUtPmdldFNlcXVlbmNlKCkpOwotICAgICAgICAgICAgY29uc3Qg
VEludGVybVR5cGVkICp2YXJpYWJsZSA9IHNlcXVlbmNlLmZyb250KCktPmdldEFzVHlwZWQoKTsK
LSAgICAgICAgICAgIHdyaXRlTGF5b3V0UXVhbGlmaWVyKHZhcmlhYmxlLT5nZXRUeXBlKCkpOwot
ICAgICAgICAgICAgd3JpdGVWYXJpYWJsZVR5cGUodmFyaWFibGUtPmdldFR5cGUoKSk7Ci0gICAg
ICAgICAgICBvdXQgPDwgIiAiOwotICAgICAgICAgICAgbURlY2xhcmluZ1ZhcmlhYmxlcyA9IHRy
dWU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAodmlzaXQgPT0gSW5WaXNpdCkKLSAgICAg
ICAgewotICAgICAgICAgICAgb3V0IDw8ICIsICI7Ci0gICAgICAgICAgICBtRGVjbGFyaW5nVmFy
aWFibGVzID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIG1EZWNsYXJpbmdWYXJpYWJsZXMgPSBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgRU9wSW52YXJpYW50RGVjbGFyYXRpb246Ci0gICAgICAgIC8vIElu
dmFyaWFudCBkZWNsYXJhdGlvbi4KLSAgICAgICAgQVNTRVJUKHZpc2l0ID09IFByZVZpc2l0KTsK
LSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9
IG5vZGUtPmdldFNlcXVlbmNlKCk7Ci0gICAgICAgICAgICBBU1NFUlQoc2VxdWVuY2UgJiYgc2Vx
dWVuY2UtPnNpemUoKSA9PSAxKTsKLSAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1TeW1ib2wgKnN5
bWJvbCA9IHNlcXVlbmNlLT5mcm9udCgpLT5nZXRBc1N5bWJvbE5vZGUoKTsKLSAgICAgICAgICAg
IEFTU0VSVChzeW1ib2wpOwotICAgICAgICAgICAgb3V0IDw8ICJpbnZhcmlhbnQgIiA8PCBoYXNo
VmFyaWFibGVOYW1lKHN5bWJvbC0+Z2V0U3ltYm9sKCkpOwotICAgICAgICB9Ci0gICAgICAgIHZp
c2l0Q2hpbGRyZW4gPSBmYWxzZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcENvbnN0
cnVjdEZsb2F0OgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMyOgotICAgICAgY2FzZSBFT3BD
b25zdHJ1Y3RWZWMzOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWM0OgotICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RCb29sOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVjMjoKLSAgICAgIGNh
c2UgRU9wQ29uc3RydWN0QlZlYzM6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWM0OgotICAg
ICAgY2FzZSBFT3BDb25zdHJ1Y3RJbnQ6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWMyOgot
ICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RJVmVjMzoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0SVZl
YzQ6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdFVJbnQ6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVj
dFVWZWMyOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RVVmVjMzoKLSAgICAgIGNhc2UgRU9wQ29u
c3RydWN0VVZlYzQ6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDI6Ci0gICAgICBjYXNlIEVP
cENvbnN0cnVjdE1hdDJ4MzoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0Mng0OgotICAgICAg
Y2FzZSBFT3BDb25zdHJ1Y3RNYXQzeDI6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDM6Ci0g
ICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4NDoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0
NHgyOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0eDM6Ci0gICAgICBjYXNlIEVPcENvbnN0
cnVjdE1hdDQ6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdFN0cnVjdDoKLSAgICAgICAgICB3cml0
ZUNvbnN0cnVjdG9yVHJpcGxldCh2aXNpdCwgbm9kZS0+Z2V0VHlwZSgpKTsKLSAgICAgICAgICBi
cmVhazsKLQotICAgICAgY2FzZSBFT3BPdXRlclByb2R1Y3Q6Ci0gICAgICAgIHdyaXRlQnVpbHRJ
bkZ1bmN0aW9uVHJpcGxldCh2aXNpdCwgIm91dGVyUHJvZHVjdCgiLCB1c2VFbXVsYXRlZEZ1bmN0
aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRU9wTGVzc1RoYW46Ci0gICAgICAg
IHdyaXRlQnVpbHRJbkZ1bmN0aW9uVHJpcGxldCh2aXNpdCwgImxlc3NUaGFuKCIsIHVzZUVtdWxh
dGVkRnVuY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW46
Ci0gICAgICAgIHdyaXRlQnVpbHRJbkZ1bmN0aW9uVHJpcGxldCh2aXNpdCwgImdyZWF0ZXJUaGFu
KCIsIHVzZUVtdWxhdGVkRnVuY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
TGVzc1RoYW5FcXVhbDoKLSAgICAgICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZpc2l0
LCAibGVzc1RoYW5FcXVhbCgiLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWw6Ci0gICAgICAgIHdyaXRlQnVpbHRJbkZ1
bmN0aW9uVHJpcGxldCh2aXNpdCwgImdyZWF0ZXJUaGFuRXF1YWwoIiwgdXNlRW11bGF0ZWRGdW5j
dGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BWZWN0b3JFcXVhbDoKLSAgICAg
ICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZpc2l0LCAiZXF1YWwoIiwgdXNlRW11bGF0
ZWRGdW5jdGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BWZWN0b3JOb3RFcXVh
bDoKLSAgICAgICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZpc2l0LCAibm90RXF1YWwo
IiwgdXNlRW11bGF0ZWRGdW5jdGlvbik7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVP
cE1vZDoKLSAgICAgICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZpc2l0LCAibW9kKCIs
IHVzZUVtdWxhdGVkRnVuY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTW9k
ZjoKLSAgICAgICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZpc2l0LCAibW9kZigiLCB1
c2VFbXVsYXRlZEZ1bmN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFBvdzoK
LSAgICAgICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZpc2l0LCAicG93KCIsIHVzZUVt
dWxhdGVkRnVuY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQXRhbjoKLSAg
ICAgICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZpc2l0LCAiYXRhbigiLCB1c2VFbXVs
YXRlZEZ1bmN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcE1pbjoKLSAgICAg
ICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZpc2l0LCAibWluKCIsIHVzZUVtdWxhdGVk
RnVuY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTWF4OgotICAgICAgICB3
cml0ZUJ1aWx0SW5GdW5jdGlvblRyaXBsZXQodmlzaXQsICJtYXgoIiwgdXNlRW11bGF0ZWRGdW5j
dGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BDbGFtcDoKLSAgICAgICAgd3Jp
dGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZpc2l0LCAiY2xhbXAoIiwgdXNlRW11bGF0ZWRGdW5j
dGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BNaXg6Ci0gICAgICAgIHdyaXRl
QnVpbHRJbkZ1bmN0aW9uVHJpcGxldCh2aXNpdCwgIm1peCgiLCB1c2VFbXVsYXRlZEZ1bmN0aW9u
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFN0ZXA6Ci0gICAgICAgIHdyaXRlQnVp
bHRJbkZ1bmN0aW9uVHJpcGxldCh2aXNpdCwgInN0ZXAoIiwgdXNlRW11bGF0ZWRGdW5jdGlvbik7
Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BTbW9vdGhTdGVwOgotICAgICAgICB3cml0
ZUJ1aWx0SW5GdW5jdGlvblRyaXBsZXQodmlzaXQsICJzbW9vdGhzdGVwKCIsIHVzZUVtdWxhdGVk
RnVuY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wRGlzdGFuY2U6Ci0gICAg
ICAgIHdyaXRlQnVpbHRJbkZ1bmN0aW9uVHJpcGxldCh2aXNpdCwgImRpc3RhbmNlKCIsIHVzZUVt
dWxhdGVkRnVuY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wRG90OgotICAg
ICAgICB3cml0ZUJ1aWx0SW5GdW5jdGlvblRyaXBsZXQodmlzaXQsICJkb3QoIiwgdXNlRW11bGF0
ZWRGdW5jdGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BDcm9zczoKLSAgICAg
ICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZpc2l0LCAiY3Jvc3MoIiwgdXNlRW11bGF0
ZWRGdW5jdGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BGYWNlRm9yd2FyZDoK
LSAgICAgICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZpc2l0LCAiZmFjZWZvcndhcmQo
IiwgdXNlRW11bGF0ZWRGdW5jdGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BS
ZWZsZWN0OgotICAgICAgICB3cml0ZUJ1aWx0SW5GdW5jdGlvblRyaXBsZXQodmlzaXQsICJyZWZs
ZWN0KCIsIHVzZUVtdWxhdGVkRnVuY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
RU9wUmVmcmFjdDoKLSAgICAgICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZpc2l0LCAi
cmVmcmFjdCgiLCB1c2VFbXVsYXRlZEZ1bmN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEVPcE11bDoKLSAgICAgICAgd3JpdGVCdWlsdEluRnVuY3Rpb25UcmlwbGV0KHZpc2l0LCAi
bWF0cml4Q29tcE11bHQoIiwgdXNlRW11bGF0ZWRGdW5jdGlvbik7Ci0gICAgICAgIGJyZWFrOwot
Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIC8vIFZhcmlhYmxl
IGRlY2xhcmF0aW9uLgorICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKKyAgICB7CisgICAgICAg
IGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAmc2VxdWVuY2UgPSAqKG5vZGUtPmdldFNlcXVlbmNlKCkp
OworICAgICAgICBjb25zdCBUSW50ZXJtVHlwZWQgKnZhcmlhYmxlICAgID0gc2VxdWVuY2UuZnJv
bnQoKS0+Z2V0QXNUeXBlZCgpOworICAgICAgICB3cml0ZUxheW91dFF1YWxpZmllcih2YXJpYWJs
ZS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgd3JpdGVWYXJpYWJsZVR5cGUodmFyaWFibGUtPmdldFR5
cGUoKSk7CisgICAgICAgIG91dCA8PCAiICI7CisgICAgICAgIG1EZWNsYXJpbmdWYXJpYWJsZXMg
PSB0cnVlOwogICAgIH0KLSAgICByZXR1cm4gdmlzaXRDaGlsZHJlbjsKKyAgICBlbHNlIGlmICh2
aXNpdCA9PSBJblZpc2l0KQorICAgIHsKKyAgICAgICAgb3V0IDw8ICIsICI7CisgICAgICAgIG1E
ZWNsYXJpbmdWYXJpYWJsZXMgPSB0cnVlOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICBtRGVjbGFyaW5nVmFyaWFibGVzID0gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOwog
fQogCiBib29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJt
TG9vcCAqbm9kZSkKIHsKICAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBvYmpTaW5rKCk7CiAKLSAg
ICBpbmNyZW1lbnREZXB0aChub2RlKTsKLQogICAgIFRMb29wVHlwZSBsb29wVHlwZSA9IG5vZGUt
PmdldFR5cGUoKTsKIAotICAgIC8vIE9ubHkgZm9yIGxvb3BzIGNhbiBiZSB1bnJvbGxlZAotICAg
IEFTU0VSVCghbm9kZS0+Z2V0VW5yb2xsRmxhZygpIHx8IGxvb3BUeXBlID09IEVMb29wRm9yKTsK
LQogICAgIGlmIChsb29wVHlwZSA9PSBFTG9vcEZvcikgIC8vIGZvciBsb29wCiAgICAgewotICAg
ICAgICBpZiAoIW5vZGUtPmdldFVucm9sbEZsYWcoKSkKLSAgICAgICAgewotICAgICAgICAgICAg
b3V0IDw8ICJmb3IgKCI7Ci0gICAgICAgICAgICBpZiAobm9kZS0+Z2V0SW5pdCgpKQotICAgICAg
ICAgICAgICAgIG5vZGUtPmdldEluaXQoKS0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgICAgICBv
dXQgPDwgIjsgIjsKKyAgICAgICAgb3V0IDw8ICJmb3IgKCI7CisgICAgICAgIGlmIChub2RlLT5n
ZXRJbml0KCkpCisgICAgICAgICAgICBub2RlLT5nZXRJbml0KCktPnRyYXZlcnNlKHRoaXMpOwor
ICAgICAgICBvdXQgPDwgIjsgIjsKIAotICAgICAgICAgICAgaWYgKG5vZGUtPmdldENvbmRpdGlv
bigpKQotICAgICAgICAgICAgICAgIG5vZGUtPmdldENvbmRpdGlvbigpLT50cmF2ZXJzZSh0aGlz
KTsKLSAgICAgICAgICAgIG91dCA8PCAiOyAiOworICAgICAgICBpZiAobm9kZS0+Z2V0Q29uZGl0
aW9uKCkpCisgICAgICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7
CisgICAgICAgIG91dCA8PCAiOyAiOwogCi0gICAgICAgICAgICBpZiAobm9kZS0+Z2V0RXhwcmVz
c2lvbigpKQotICAgICAgICAgICAgICAgIG5vZGUtPmdldEV4cHJlc3Npb24oKS0+dHJhdmVyc2Uo
dGhpcyk7Ci0gICAgICAgICAgICBvdXQgPDwgIilcbiI7CisgICAgICAgIGlmIChub2RlLT5nZXRF
eHByZXNzaW9uKCkpCisgICAgICAgICAgICBub2RlLT5nZXRFeHByZXNzaW9uKCktPnRyYXZlcnNl
KHRoaXMpOworICAgICAgICBvdXQgPDwgIilcbiI7CiAKLSAgICAgICAgICAgIHZpc2l0Q29kZUJs
b2NrKG5vZGUtPmdldEJvZHkoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7
Ci0gICAgICAgICAgICAvLyBOZWVkIHRvIHB1dCBhIG9uZS1pdGVyYXRpb24gbG9vcCBoZXJlIHRv
IGhhbmRsZSBicmVhay4KLSAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqZGVjbFNlcSA9Ci0g
ICAgICAgICAgICAgICAgbm9kZS0+Z2V0SW5pdCgpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5nZXRTZXF1
ZW5jZSgpOwotICAgICAgICAgICAgVEludGVybVN5bWJvbCAqaW5kZXhTeW1ib2wgPQotICAgICAg
ICAgICAgICAgICgqZGVjbFNlcSlbMF0tPmdldEFzQmluYXJ5Tm9kZSgpLT5nZXRMZWZ0KCktPmdl
dEFzU3ltYm9sTm9kZSgpOwotICAgICAgICAgICAgVFN0cmluZyBuYW1lID0gaGFzaFZhcmlhYmxl
TmFtZShpbmRleFN5bWJvbC0+Z2V0U3ltYm9sKCkpOwotICAgICAgICAgICAgb3V0IDw8ICJmb3Ig
KGludCAiIDw8IG5hbWUgPDwgIiA9IDA7ICIKLSAgICAgICAgICAgICAgICA8PCBuYW1lIDw8ICIg
PCAxOyAiCi0gICAgICAgICAgICAgICAgPDwgIisrIiA8PCBuYW1lIDw8ICIpXG4iOwotCi0gICAg
ICAgICAgICBvdXQgPDwgIntcbiI7Ci0gICAgICAgICAgICBtTG9vcFVucm9sbFN0YWNrLnB1c2go
bm9kZSk7Ci0gICAgICAgICAgICB3aGlsZSAobUxvb3BVbnJvbGxTdGFjay5zYXRpc2ZpZXNMb29w
Q29uZGl0aW9uKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmlzaXRDb2RlQmxv
Y2sobm9kZS0+Z2V0Qm9keSgpKTsKLSAgICAgICAgICAgICAgICBtTG9vcFVucm9sbFN0YWNrLnN0
ZXAoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1Mb29wVW5yb2xsU3RhY2sucG9wKCk7
Ci0gICAgICAgICAgICBvdXQgPDwgIn1cbiI7Ci0gICAgICAgIH0KKyAgICAgICAgdmlzaXRDb2Rl
QmxvY2sobm9kZS0+Z2V0Qm9keSgpKTsKICAgICB9CiAgICAgZWxzZSBpZiAobG9vcFR5cGUgPT0g
RUxvb3BXaGlsZSkgIC8vIHdoaWxlIGxvb3AKICAgICB7CkBAIC0xMDc5LDggKzExMDksNiBAQCBi
b29sIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRMb29wKFZpc2l0IHZpc2l0LCBUSW50ZXJtTG9vcCAq
bm9kZSkKICAgICAgICAgb3V0IDw8ICIpO1xuIjsKICAgICB9CiAKLSAgICBkZWNyZW1lbnREZXB0
aCgpOwotCiAgICAgLy8gTm8gbmVlZCB0byB2aXNpdCBjaGlsZHJlbi4gVGhleSBoYXZlIGJlZW4g
YWxyZWFkeSBwcm9jZXNzZWQgaW4KICAgICAvLyB0aGlzIGZ1bmN0aW9uLgogICAgIHJldHVybiBm
YWxzZTsKQEAgLTEwOTAsMjAgKzExMTgsMjAgQEAgYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0
QnJhbmNoKFZpc2l0IHZpc2l0LCBUSW50ZXJtQnJhbmNoICpub2RlKQogewogICAgIHN3aXRjaCAo
bm9kZS0+Z2V0Rmxvd09wKCkpCiAgICAgewotICAgICAgY2FzZSBFT3BLaWxsOgotICAgICAgICB3
cml0ZVRyaXBsZXQodmlzaXQsICJkaXNjYXJkIiwgTlVMTCwgTlVMTCk7Ci0gICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFT3BCcmVhazoKLSAgICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiYnJl
YWsiLCBOVUxMLCBOVUxMKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcENvbnRpbnVl
OgotICAgICAgICB3cml0ZVRyaXBsZXQodmlzaXQsICJjb250aW51ZSIsIE5VTEwsIE5VTEwpOwot
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wUmV0dXJuOgotICAgICAgICB3cml0ZVRyaXBs
ZXQodmlzaXQsICJyZXR1cm4gIiwgTlVMTCwgTlVMTCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgY2FzZSBFT3BLaWxsOgor
ICAgICAgICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAiZGlzY2FyZCIsIE5VTEwsIE5VTEwpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQnJlYWs6CisgICAgICAgICAgICB3
cml0ZVRyaXBsZXQodmlzaXQsICJicmVhayIsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRU9wQ29udGludWU6CisgICAgICAgICAgICB3cml0ZVRyaXBsZXQo
dmlzaXQsICJjb250aW51ZSIsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRU9wUmV0dXJuOgorICAgICAgICAgICAgd3JpdGVUcmlwbGV0KHZpc2l0LCAicmV0
dXJuICIsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpA
QCAtMTEyOSw0MCArMTE1Nyw2NyBAQCB2b2lkIFRPdXRwdXRHTFNMQmFzZTo6dmlzaXRDb2RlQmxv
Y2soVEludGVybUJsb2NrICpub2RlKQogVFN0cmluZyBUT3V0cHV0R0xTTEJhc2U6OmdldFR5cGVO
YW1lKGNvbnN0IFRUeXBlICZ0eXBlKQogewogICAgIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09
IEVidFN0cnVjdCkKLSAgICAgICAgcmV0dXJuIGhhc2hOYW1lKHR5cGUuZ2V0U3RydWN0KCktPm5h
bWUoKSk7CisgICAgICAgIHJldHVybiBoYXNoTmFtZShUTmFtZSh0eXBlLmdldFN0cnVjdCgpLT5u
YW1lKCkpKTsKICAgICBlbHNlCiAgICAgICAgIHJldHVybiB0eXBlLmdldEJ1aWx0SW5UeXBlTmFt
ZVN0cmluZygpOwogfQogCi1UU3RyaW5nIFRPdXRwdXRHTFNMQmFzZTo6aGFzaE5hbWUoY29uc3Qg
VFN0cmluZyAmbmFtZSkKK1RTdHJpbmcgVE91dHB1dEdMU0xCYXNlOjpoYXNoTmFtZShjb25zdCBU
TmFtZSAmbmFtZSkKIHsKLSAgICBpZiAobUhhc2hGdW5jdGlvbiA9PSBOVUxMIHx8IG5hbWUuZW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIG5hbWU7Ci0gICAgTmFtZU1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtTmFtZU1hcC5maW5kKG5hbWUuY19zdHIoKSk7CisgICAgaWYgKG5hbWUuZ2V0U3RyaW5n
KCkuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbmFtZS5pc0ludGVybmFsKCkpOwor
ICAgICAgICByZXR1cm4gbmFtZS5nZXRTdHJpbmcoKTsKKyAgICB9CisgICAgaWYgKG5hbWUuaXNJ
bnRlcm5hbCgpKQorICAgIHsKKyAgICAgICAgLy8gVE9ETyhvZXR1YWhvKTogV291bGQgYmUgbmlj
ZXIgdG8gcHJlZml4IG5vbi1pbnRlcm5hbCBuYW1lcyB3aXRoICJfIiBpbnN0ZWFkLCBsaWtlIGlz
CisgICAgICAgIC8vIGRvbmUgaW4gdGhlIEhMU0wgb3V0cHV0LCBidXQgdGhhdCByZXF1aXJlcyBm
YWlybHkgY29tcGxleCBjaGFuZ2VzIGVsc2V3aGVyZSBpbiB0aGUgY29kZQorICAgICAgICAvLyBh
cyB3ZWxsLgorICAgICAgICAvLyBXZSBuZWVkIHRvIHVzZSBhIHByZWZpeCB0aGF0IGlzIHJlc2Vy
dmVkIGluIFdlYkdMIGluIG9yZGVyIHRvIGd1YXJhbnRlZSB0aGF0IHRoZSBpbnRlcm5hbAorICAg
ICAgICAvLyBuYW1lcyBkb24ndCBjb25mbGljdCB3aXRoIHVzZXItZGVmaW5lZCBuYW1lcyBmcm9t
IFdlYkdMLgorICAgICAgICByZXR1cm4gIndlYmdsX2FuZ2xlXyIgKyBuYW1lLmdldFN0cmluZygp
OworICAgIH0KKyAgICBpZiAobUhhc2hGdW5jdGlvbiA9PSBudWxscHRyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG5hbWUuZ2V0U3RyaW5nKCk7CisgICAgfQorICAgIE5hbWVNYXA6OmNvbnN0X2l0
ZXJhdG9yIGl0ID0gbU5hbWVNYXAuZmluZChuYW1lLmdldFN0cmluZygpLmNfc3RyKCkpOwogICAg
IGlmIChpdCAhPSBtTmFtZU1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQuY19z
dHIoKTsKLSAgICBUU3RyaW5nIGhhc2hlZE5hbWUgPSBUSW50ZXJtVHJhdmVyc2VyOjpoYXNoKG5h
bWUsIG1IYXNoRnVuY3Rpb24pOwotICAgIG1OYW1lTWFwW25hbWUuY19zdHIoKV0gPSBoYXNoZWRO
YW1lLmNfc3RyKCk7CisgICAgVFN0cmluZyBoYXNoZWROYW1lICAgICAgICAgICAgICAgICA9IFRJ
bnRlcm1UcmF2ZXJzZXI6Omhhc2gobmFtZS5nZXRTdHJpbmcoKSwgbUhhc2hGdW5jdGlvbik7Cisg
ICAgbU5hbWVNYXBbbmFtZS5nZXRTdHJpbmcoKS5jX3N0cigpXSA9IGhhc2hlZE5hbWUuY19zdHIo
KTsKICAgICByZXR1cm4gaGFzaGVkTmFtZTsKIH0KIAotVFN0cmluZyBUT3V0cHV0R0xTTEJhc2U6
Omhhc2hWYXJpYWJsZU5hbWUoY29uc3QgVFN0cmluZyAmbmFtZSkKK1RTdHJpbmcgVE91dHB1dEdM
U0xCYXNlOjpoYXNoVmFyaWFibGVOYW1lKGNvbnN0IFROYW1lICZuYW1lKQogewotICAgIGlmICht
U3ltYm9sVGFibGUuZmluZEJ1aWx0SW4obmFtZSwgbVNoYWRlclZlcnNpb24pICE9IE5VTEwpCi0g
ICAgICAgIHJldHVybiBuYW1lOworICAgIGlmIChtU3ltYm9sVGFibGUuZmluZEJ1aWx0SW4obmFt
ZS5nZXRTdHJpbmcoKSwgbVNoYWRlclZlcnNpb24pICE9IE5VTEwpCisgICAgeworICAgICAgICBp
ZiAobUNvbXBpbGVPcHRpb25zICYgU0hfVFJBTlNMQVRFX1ZJRVdJRF9PVlJfVE9fVU5JRk9STSAm
JgorICAgICAgICAgICAgbmFtZS5nZXRTdHJpbmcoKSA9PSAiZ2xfVmlld0lEX09WUiIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIFROYW1lIHVuaWZvcm1OYW1lKFRTdHJpbmcoIlZpZXdJRF9PVlIi
KSk7CisgICAgICAgICAgICB1bmlmb3JtTmFtZS5zZXRJbnRlcm5hbCh0cnVlKTsKKyAgICAgICAg
ICAgIHJldHVybiBoYXNoTmFtZSh1bmlmb3JtTmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIG5hbWUuZ2V0U3RyaW5nKCk7CisgICAgfQogICAgIHJldHVybiBoYXNoTmFtZShuYW1lKTsK
IH0KIAotVFN0cmluZyBUT3V0cHV0R0xTTEJhc2U6Omhhc2hGdW5jdGlvbk5hbWVJZk5lZWRlZChj
b25zdCBUTmFtZSAmbWFuZ2xlZE5hbWUpCitUU3RyaW5nIFRPdXRwdXRHTFNMQmFzZTo6aGFzaEZ1
bmN0aW9uTmFtZUlmTmVlZGVkKGNvbnN0IFRGdW5jdGlvblN5bWJvbEluZm8gJmluZm8pCiB7Ci0g
ICAgVFN0cmluZyBtYW5nbGVkU3RyID0gbWFuZ2xlZE5hbWUuZ2V0U3RyaW5nKCk7Ci0gICAgVFN0
cmluZyBuYW1lID0gVEZ1bmN0aW9uOjp1bm1hbmdsZU5hbWUobWFuZ2xlZFN0cik7Ci0gICAgaWYg
KG1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbihtYW5nbGVkU3RyLCBtU2hhZGVyVmVyc2lvbikgIT0g
bnVsbHB0ciB8fCBuYW1lID09ICJtYWluIikKLSAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZVRleHR1
cmVGdW5jdGlvbihuYW1lKTsKLSAgICBpZiAobWFuZ2xlZE5hbWUuaXNJbnRlcm5hbCgpKQotICAg
ICAgICByZXR1cm4gbmFtZTsKKyAgICBpZiAoaW5mby5pc01haW4oKSB8fCBpbmZvLmdldE5hbWVP
YmooKS5pc0ludGVybmFsKCkpCisgICAgeworICAgICAgICAvLyBJbnRlcm5hbCBmdW5jdGlvbiBu
YW1lcyBhcmUgb3V0cHV0dGVkIGFzLWlzIC0gdGhleSBtYXkgcmVmZXIgdG8gZnVuY3Rpb25zIG1h
bnVhbGx5IGFkZGVkCisgICAgICAgIC8vIHRvIHRoZSBvdXRwdXQgc2hhZGVyIHNvdXJjZSB0aGF0
IGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIEFTVCBhdCBhbGwuCisgICAgICAgIHJldHVybiBpbmZv
LmdldE5hbWUoKTsKKyAgICB9CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gaGFzaE5hbWUobmFt
ZSk7CisgICAgeworICAgICAgICByZXR1cm4gaGFzaE5hbWUoaW5mby5nZXROYW1lT2JqKCkpOwor
ICAgIH0KIH0KIAogYm9vbCBUT3V0cHV0R0xTTEJhc2U6OnN0cnVjdERlY2xhcmVkKGNvbnN0IFRT
dHJ1Y3R1cmUgKnN0cnVjdHVyZSkgY29uc3QKQEAgLTExODAsMTQgKzEyMzUsMTQgQEAgdm9pZCBU
T3V0cHV0R0xTTEJhc2U6OmRlY2xhcmVTdHJ1Y3QoY29uc3QgVFN0cnVjdHVyZSAqc3RydWN0dXJl
KQogewogICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG9ialNpbmsoKTsKIAotICAgIG91dCA8PCAi
c3RydWN0ICIgPDwgaGFzaE5hbWUoc3RydWN0dXJlLT5uYW1lKCkpIDw8ICJ7XG4iOworICAgIG91
dCA8PCAic3RydWN0ICIgPDwgaGFzaE5hbWUoVE5hbWUoc3RydWN0dXJlLT5uYW1lKCkpKSA8PCAi
e1xuIjsKICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSBzdHJ1Y3R1cmUtPmZpZWxkcygp
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgKytpKQogICAgIHsK
ICAgICAgICAgY29uc3QgVEZpZWxkICpmaWVsZCA9IGZpZWxkc1tpXTsKICAgICAgICAgaWYgKHdy
aXRlVmFyaWFibGVQcmVjaXNpb24oZmllbGQtPnR5cGUoKS0+Z2V0UHJlY2lzaW9uKCkpKQogICAg
ICAgICAgICAgb3V0IDw8ICIgIjsKLSAgICAgICAgb3V0IDw8IGdldFR5cGVOYW1lKCpmaWVsZC0+
dHlwZSgpKSA8PCAiICIgPDwgaGFzaE5hbWUoZmllbGQtPm5hbWUoKSk7CisgICAgICAgIG91dCA8
PCBnZXRUeXBlTmFtZSgqZmllbGQtPnR5cGUoKSkgPDwgIiAiIDw8IGhhc2hOYW1lKFROYW1lKGZp
ZWxkLT5uYW1lKCkpKTsKICAgICAgICAgaWYgKGZpZWxkLT50eXBlKCktPmlzQXJyYXkoKSkKICAg
ICAgICAgICAgIG91dCA8PCBhcnJheUJyYWNrZXRzKCpmaWVsZC0+dHlwZSgpKTsKICAgICAgICAg
b3V0IDw8ICI7XG4iOwpAQCAtMTI0OCwxNyArMTMwMywxOSBAQCB2b2lkIFRPdXRwdXRHTFNMQmFz
ZTo6ZGVjbGFyZUludGVyZmFjZUJsb2NrKGNvbnN0IFRJbnRlcmZhY2VCbG9jayAqaW50ZXJmYWNl
QmxvYwogewogICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG9ialNpbmsoKTsKIAotICAgIG91dCA8
PCBoYXNoTmFtZShpbnRlcmZhY2VCbG9jay0+bmFtZSgpKSA8PCAie1xuIjsKKyAgICBvdXQgPDwg
aGFzaE5hbWUoVE5hbWUoaW50ZXJmYWNlQmxvY2stPm5hbWUoKSkpIDw8ICJ7XG4iOwogICAgIGNv
bnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IGludGVyZmFjZUJsb2NrLT5maWVsZHMoKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7ICsraSkKICAgICB7CiAgICAgICAg
IGNvbnN0IFRGaWVsZCAqZmllbGQgPSBmaWVsZHNbaV07CiAgICAgICAgIGlmICh3cml0ZVZhcmlh
YmxlUHJlY2lzaW9uKGZpZWxkLT50eXBlKCktPmdldFByZWNpc2lvbigpKSkKICAgICAgICAgICAg
IG91dCA8PCAiICI7Ci0gICAgICAgIG91dCA8PCBnZXRUeXBlTmFtZSgqZmllbGQtPnR5cGUoKSkg
PDwgIiAiIDw8IGhhc2hOYW1lKGZpZWxkLT5uYW1lKCkpOworICAgICAgICBvdXQgPDwgZ2V0VHlw
ZU5hbWUoKmZpZWxkLT50eXBlKCkpIDw8ICIgIiA8PCBoYXNoTmFtZShUTmFtZShmaWVsZC0+bmFt
ZSgpKSk7CiAgICAgICAgIGlmIChmaWVsZC0+dHlwZSgpLT5pc0FycmF5KCkpCiAgICAgICAgICAg
ICBvdXQgPDwgYXJyYXlCcmFja2V0cygqZmllbGQtPnR5cGUoKSk7CiAgICAgICAgIG91dCA8PCAi
O1xuIjsKICAgICB9CiAgICAgb3V0IDw8ICJ9IjsKIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9PdXRwdXRHTFNMQmFzZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvT3V0cHV0R0xTTEJhc2UuaAppbmRleCBhYTg2MWM3M2MzMC4uYWYzMDE5YzVk
YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL091dHB1dEdMU0xCYXNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0R0xTTEJhc2UuaApAQCAtMTAsOSArMTAsMTEgQEAK
ICNpbmNsdWRlIDxzZXQ+CiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5v
ZGUuaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0xvb3BJbmZvLmgiCiAjaW5jbHVk
ZSAiY29tcGlsZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQuaCIKIAorbmFtZXNwYWNlIHNoCit7
CisKIGNsYXNzIFRPdXRwdXRHTFNMQmFzZSA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiB7CiAg
IHB1YmxpYzoKQEAgLTIwLDE5ICsyMiwyNSBAQCBjbGFzcyBUT3V0cHV0R0xTTEJhc2UgOiBwdWJs
aWMgVEludGVybVRyYXZlcnNlcgogICAgICAgICAgICAgICAgICAgICBTaEFycmF5SW5kZXhDbGFt
cGluZ1N0cmF0ZWd5IGNsYW1waW5nU3RyYXRlZ3ksCiAgICAgICAgICAgICAgICAgICAgIFNoSGFz
aEZ1bmN0aW9uNjQgaGFzaEZ1bmN0aW9uLAogICAgICAgICAgICAgICAgICAgICBOYW1lTWFwICZu
YW1lTWFwLAotICAgICAgICAgICAgICAgICAgICBUU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlLAor
ICAgICAgICAgICAgICAgICAgICBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLAorICAgICAgICAg
ICAgICAgICAgICBzaDo6R0xlbnVtIHNoYWRlclR5cGUsCiAgICAgICAgICAgICAgICAgICAgIGlu
dCBzaGFkZXJWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICBTaFNoYWRlck91dHB1dCBvdXRw
dXQpOworICAgICAgICAgICAgICAgICAgICBTaFNoYWRlck91dHB1dCBvdXRwdXQsCisgICAgICAg
ICAgICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpOwogCi0gICAgU2hT
aGFkZXJPdXRwdXQgZ2V0U2hhZGVyT3V0cHV0KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtT3V0cHV0OwotICAgIH0KKyAgICBTaFNoYWRlck91dHB1dCBnZXRTaGFkZXJPdXRwdXQoKSBj
b25zdCB7IHJldHVybiBtT3V0cHV0OyB9CisKKyAgICAvLyBSZXR1cm4gdGhlIG9yaWdpbmFsIG5h
bWUgaWYgaGFzaCBmdW5jdGlvbiBwb2ludGVyIGlzIE5VTEw7CisgICAgLy8gb3RoZXJ3aXNlIHJl
dHVybiB0aGUgaGFzaGVkIG5hbWUuIEhhcyBzcGVjaWFsIGhhbmRsaW5nIGZvciBpbnRlcm5hbCBu
YW1lcywgd2hpY2ggYXJlIG5vdAorICAgIC8vIGhhc2hlZC4KKyAgICBUU3RyaW5nIGhhc2hOYW1l
KGNvbnN0IFROYW1lICZuYW1lKTsKIAogICBwcm90ZWN0ZWQ6CiAgICAgVEluZm9TaW5rQmFzZSAm
b2JqU2luaygpIHsgcmV0dXJuIG1PYmpTaW5rOyB9CisgICAgdm9pZCB3cml0ZUZsb2F0KFRJbmZv
U2lua0Jhc2UgJm91dCwgZmxvYXQgZik7CiAgICAgdm9pZCB3cml0ZVRyaXBsZXQoVmlzaXQgdmlz
aXQsIGNvbnN0IGNoYXIgKnByZVN0ciwgY29uc3QgY2hhciAqaW5TdHIsIGNvbnN0IGNoYXIgKnBv
c3RTdHIpOwotICAgIHZvaWQgd3JpdGVMYXlvdXRRdWFsaWZpZXIoY29uc3QgVFR5cGUgJnR5cGUp
OworICAgIHZpcnR1YWwgdm9pZCB3cml0ZUxheW91dFF1YWxpZmllcihjb25zdCBUVHlwZSAmdHlw
ZSk7CisgICAgdm9pZCB3cml0ZUludmFyaWFudFF1YWxpZmllcihjb25zdCBUVHlwZSAmdHlwZSk7
CiAgICAgdm9pZCB3cml0ZVZhcmlhYmxlVHlwZShjb25zdCBUVHlwZSAmdHlwZSk7CiAgICAgdmly
dHVhbCBib29sIHdyaXRlVmFyaWFibGVQcmVjaXNpb24oVFByZWNpc2lvbiBwcmVjaXNpb24pID0g
MDsKICAgICB2b2lkIHdyaXRlRnVuY3Rpb25QYXJhbWV0ZXJzKGNvbnN0IFRJbnRlcm1TZXF1ZW5j
ZSAmYXJncyk7CkBAIC00OSwyMyArNTcsMjMgQEAgY2xhc3MgVE91dHB1dEdMU0xCYXNlIDogcHVi
bGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICBib29sIHZpc2l0SWZFbHNlKFZpc2l0IHZpc2l0LCBU
SW50ZXJtSWZFbHNlICpub2RlKSBvdmVycmlkZTsKICAgICBib29sIHZpc2l0U3dpdGNoKFZpc2l0
IHZpc2l0LCBUSW50ZXJtU3dpdGNoICpub2RlKSBvdmVycmlkZTsKICAgICBib29sIHZpc2l0Q2Fz
ZShWaXNpdCB2aXNpdCwgVEludGVybUNhc2UgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlz
aXRGdW5jdGlvblByb3RvdHlwZShWaXNpdCB2aXNpdCwgVEludGVybUZ1bmN0aW9uUHJvdG90eXBl
ICpub2RlKSBvdmVycmlkZTsKICAgICBib29sIHZpc2l0RnVuY3Rpb25EZWZpbml0aW9uKFZpc2l0
IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpub2RlKSBvdmVycmlkZTsKICAgICBi
b29sIHZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKSBv
dmVycmlkZTsKICAgICBib29sIHZpc2l0QmxvY2soVmlzaXQgdmlzaXQsIFRJbnRlcm1CbG9jayAq
bm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEludmFyaWFudERlY2xhcmF0aW9uKFZpc2l0
IHZpc2l0LCBUSW50ZXJtSW52YXJpYW50RGVjbGFyYXRpb24gKm5vZGUpIG92ZXJyaWRlOworICAg
IGJvb2wgdmlzaXREZWNsYXJhdGlvbihWaXNpdCB2aXNpdCwgVEludGVybURlY2xhcmF0aW9uICpu
b2RlKSBvdmVycmlkZTsKICAgICBib29sIHZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxv
b3AgKm5vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJ
bnRlcm1CcmFuY2ggKm5vZGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCB2aXNpdENvZGVCbG9jayhU
SW50ZXJtQmxvY2sgKm5vZGUpOwogCi0gICAgLy8gUmV0dXJuIHRoZSBvcmlnaW5hbCBuYW1lIGlm
IGhhc2ggZnVuY3Rpb24gcG9pbnRlciBpcyBOVUxMOwotICAgIC8vIG90aGVyd2lzZSByZXR1cm4g
dGhlIGhhc2hlZCBuYW1lLgotICAgIFRTdHJpbmcgaGFzaE5hbWUoY29uc3QgVFN0cmluZyAmbmFt
ZSk7CiAgICAgLy8gU2FtZSBhcyBoYXNoTmFtZSgpLCBidXQgd2l0aG91dCBoYXNoaW5nIGJ1aWx0
LWluIHZhcmlhYmxlcy4KLSAgICBUU3RyaW5nIGhhc2hWYXJpYWJsZU5hbWUoY29uc3QgVFN0cmlu
ZyAmbmFtZSk7Ci0gICAgLy8gU2FtZSBhcyBoYXNoTmFtZSgpLCBidXQgd2l0aG91dCBoYXNoaW5n
IGJ1aWx0LWluIGZ1bmN0aW9ucyBhbmQgd2l0aCB1bm1hbmdsaW5nLgotICAgIFRTdHJpbmcgaGFz
aEZ1bmN0aW9uTmFtZUlmTmVlZGVkKGNvbnN0IFROYW1lICZtYW5nbGVkTmFtZSk7CisgICAgVFN0
cmluZyBoYXNoVmFyaWFibGVOYW1lKGNvbnN0IFROYW1lICZuYW1lKTsKKyAgICAvLyBTYW1lIGFz
IGhhc2hOYW1lKCksIGJ1dCB3aXRob3V0IGhhc2hpbmcgaW50ZXJuYWwgZnVuY3Rpb25zIG9yICJt
YWluIi4KKyAgICBUU3RyaW5nIGhhc2hGdW5jdGlvbk5hbWVJZk5lZWRlZChjb25zdCBURnVuY3Rp
b25TeW1ib2xJbmZvICZpbmZvKTsKICAgICAvLyBVc2VkIHRvIHRyYW5zbGF0ZSBmdW5jdGlvbiBu
YW1lcyBmb3IgZGlmZmVyZW5jZXMgYmV0d2VlbiBFU1NMIGFuZCBHTFNMCi0gICAgdmlydHVhbCBU
U3RyaW5nIHRyYW5zbGF0ZVRleHR1cmVGdW5jdGlvbihUU3RyaW5nICZuYW1lKSB7IHJldHVybiBu
YW1lOyB9CisgICAgdmlydHVhbCBUU3RyaW5nIHRyYW5zbGF0ZVRleHR1cmVGdW5jdGlvbihjb25z
dCBUU3RyaW5nICZuYW1lKSB7IHJldHVybiBuYW1lOyB9CiAKICAgcHJpdmF0ZToKICAgICBib29s
IHN0cnVjdERlY2xhcmVkKGNvbnN0IFRTdHJ1Y3R1cmUgKnN0cnVjdHVyZSkgY29uc3Q7CkBAIC03
NCw3ICs4Miw5IEBAIGNsYXNzIFRPdXRwdXRHTFNMQmFzZSA6IHB1YmxpYyBUSW50ZXJtVHJhdmVy
c2VyCiAgICAgdm9pZCBkZWNsYXJlSW50ZXJmYWNlQmxvY2tMYXlvdXQoY29uc3QgVEludGVyZmFj
ZUJsb2NrICppbnRlcmZhY2VCbG9jayk7CiAgICAgdm9pZCBkZWNsYXJlSW50ZXJmYWNlQmxvY2so
Y29uc3QgVEludGVyZmFjZUJsb2NrICppbnRlcmZhY2VCbG9jayk7CiAKLSAgICB2b2lkIHdyaXRl
QnVpbHRJbkZ1bmN0aW9uVHJpcGxldChWaXNpdCB2aXNpdCwgY29uc3QgY2hhciAqcHJlU3RyLCBi
b29sIHVzZUVtdWxhdGVkRnVuY3Rpb24pOworICAgIHZvaWQgd3JpdGVCdWlsdEluRnVuY3Rpb25U
cmlwbGV0KFZpc2l0IHZpc2l0LCBUT3BlcmF0b3Igb3AsIGJvb2wgdXNlRW11bGF0ZWRGdW5jdGlv
bik7CisKKyAgICBjb25zdCBjaGFyICptYXBRdWFsaWZpZXJUb1N0cmluZyhUUXVhbGlmaWVyIHFp
YWxpZmllcik7CiAKICAgICBUSW5mb1NpbmtCYXNlICZtT2JqU2luazsKICAgICBib29sIG1EZWNs
YXJpbmdWYXJpYWJsZXM7CkBAIC04Miw5ICs5Miw2IEBAIGNsYXNzIFRPdXRwdXRHTFNMQmFzZSA6
IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgLy8gVGhpcyBzZXQgY29udGFpbnMgYWxsIHRo
ZSBpZHMgb2YgdGhlIHN0cnVjdHMgZnJvbSBldmVyeSBzY29wZS4KICAgICBzdGQ6OnNldDxpbnQ+
IG1EZWNsYXJlZFN0cnVjdHM7CiAKLSAgICAvLyBTdGFjayBvZiBsb29wcyB0aGF0IG5lZWQgdG8g
YmUgdW5yb2xsZWQuCi0gICAgVExvb3BTdGFjayBtTG9vcFVucm9sbFN0YWNrOwotCiAgICAgU2hB
cnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBtQ2xhbXBpbmdTdHJhdGVneTsKIAogICAgIC8vIG5h
bWUgaGFzaGluZy4KQEAgLTk0LDkgKzEwMSwxNSBAQCBjbGFzcyBUT3V0cHV0R0xTTEJhc2UgOiBw
dWJsaWMgVEludGVybVRyYXZlcnNlcgogCiAgICAgVFN5bWJvbFRhYmxlICZtU3ltYm9sVGFibGU7
CiAKKyAgICBzaDo6R0xlbnVtIG1TaGFkZXJUeXBlOworCiAgICAgY29uc3QgaW50IG1TaGFkZXJW
ZXJzaW9uOwogCiAgICAgU2hTaGFkZXJPdXRwdXQgbU91dHB1dDsKKworICAgIFNoQ29tcGlsZU9w
dGlvbnMgbUNvbXBpbGVPcHRpb25zOwogfTsKIAorfSAgLy8gbmFtZXNwYWNlIHNoCisKICNlbmRp
ZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9PVVRQVVRHTFNMQkFTRV9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExT
TC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9P
dXRwdXRITFNMLmNwcAppbmRleCBmZWFlNjg0ZDU4MC4uYzAxMjlkYWRlNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEhM
U0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL091dHB1dEhMU0wuY3BwCkBAIC0yOCwxNiArMjgsMzEgQEAKICNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL2Jsb2NrbGF5b3V0LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci91dGlsLmgiCiAKLW5hbWVzcGFjZQorbmFtZXNwYWNlIHNoCiB7CiAKLXZvaWQgV3JpdGVTaW5n
bGVDb25zdGFudChUSW5mb1NpbmtCYXNlICZvdXQsIGNvbnN0IFRDb25zdGFudFVuaW9uICpjb25z
dCBjb25zdFVuaW9uKQordm9pZCBPdXRwdXRITFNMOjp3cml0ZUZsb2F0KFRJbmZvU2lua0Jhc2Ug
Jm91dCwgZmxvYXQgZikKK3sKKyAgICAvLyBUaGlzIGlzIGtub3duIG5vdCB0byB3b3JrIGZvciBO
YU4gb24gYWxsIGRyaXZlcnMgYnV0IG1ha2UgdGhlIGJlc3QgZWZmb3J0IHRvIG91dHB1dCBOYU5z
CisgICAgLy8gcmVnYXJkbGVzcy4KKyAgICBpZiAoKGdsOjppc0luZihmKSB8fCBnbDo6aXNOYU4o
ZikpICYmIG1TaGFkZXJWZXJzaW9uID49IDMwMCAmJgorICAgICAgICBtT3V0cHV0VHlwZSA9PSBT
SF9ITFNMXzRfMV9PVVRQVVQpCisgICAgeworICAgICAgICBvdXQgPDwgImFzZmxvYXQoIiA8PCBn
bDo6Yml0Q2FzdDx1aW50MzJfdD4oZikgPDwgInUpIjsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgb3V0IDw8IHN0ZDo6bWluKEZMVF9NQVgsIHN0ZDo6bWF4KC1GTFRfTUFYLCBmKSk7
CisgICAgfQorfQorCit2b2lkIE91dHB1dEhMU0w6OndyaXRlU2luZ2xlQ29uc3RhbnQoVEluZm9T
aW5rQmFzZSAmb3V0LCBjb25zdCBUQ29uc3RhbnRVbmlvbiAqY29uc3QgY29uc3RVbmlvbikKIHsK
ICAgICBBU1NFUlQoY29uc3RVbmlvbiAhPSBudWxscHRyKTsKICAgICBzd2l0Y2ggKGNvbnN0VW5p
b24tPmdldFR5cGUoKSkKICAgICB7CiAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAg
ICBvdXQgPDwgc3RkOjptaW4oRkxUX01BWCwgc3RkOjptYXgoLUZMVF9NQVgsIGNvbnN0VW5pb24t
PmdldEZDb25zdCgpKSk7CisgICAgICAgICAgICB3cml0ZUZsb2F0KG91dCwgY29uc3RVbmlvbi0+
Z2V0RkNvbnN0KCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRWJ0SW50Ogog
ICAgICAgICAgICAgb3V0IDw8IGNvbnN0VW5pb24tPmdldElDb25zdCgpOwpAQCAtNTMsMTQgKzY4
LDE0IEBAIHZvaWQgV3JpdGVTaW5nbGVDb25zdGFudChUSW5mb1NpbmtCYXNlICZvdXQsIGNvbnN0
IFRDb25zdGFudFVuaW9uICpjb25zdCBjb25zdFVuCiAgICAgfQogfQogCi1jb25zdCBUQ29uc3Rh
bnRVbmlvbiAqV3JpdGVDb25zdGFudFVuaW9uQXJyYXkoVEluZm9TaW5rQmFzZSAmb3V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRDb25zdGFu
dFVuaW9uICpjb25zdCBjb25zdFVuaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBzaXplKQorY29uc3QgVENvbnN0YW50VW5pb24g
Kk91dHB1dEhMU0w6OndyaXRlQ29uc3RhbnRVbmlvbkFycmF5KFRJbmZvU2lua0Jhc2UgJm91dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUQ29uc3RhbnRVbmlvbiAqY29uc3QgY29uc3RVbmlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplX3Qg
c2l6ZSkKIHsKICAgICBjb25zdCBUQ29uc3RhbnRVbmlvbiAqY29uc3RVbmlvbkl0ZXJhdGVkID0g
Y29uc3RVbmlvbjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKywgY29uc3RV
bmlvbkl0ZXJhdGVkKyspCiAgICAgewotICAgICAgICBXcml0ZVNpbmdsZUNvbnN0YW50KG91dCwg
Y29uc3RVbmlvbkl0ZXJhdGVkKTsKKyAgICAgICAgd3JpdGVTaW5nbGVDb25zdGFudChvdXQsIGNv
bnN0VW5pb25JdGVyYXRlZCk7CiAKICAgICAgICAgaWYgKGkgIT0gc2l6ZSAtIDEpCiAgICAgICAg
IHsKQEAgLTcwLDExICs4NSw2IEBAIGNvbnN0IFRDb25zdGFudFVuaW9uICpXcml0ZUNvbnN0YW50
VW5pb25BcnJheShUSW5mb1NpbmtCYXNlICZvdXQsCiAgICAgcmV0dXJuIGNvbnN0VW5pb25JdGVy
YXRlZDsKIH0KIAotfSAvLyBuYW1lc3BhY2UKLQotbmFtZXNwYWNlIHNoCi17Ci0KIE91dHB1dEhM
U0w6Ok91dHB1dEhMU0woc2g6OkdMZW51bSBzaGFkZXJUeXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgc2hhZGVyVmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVEV4
dGVuc2lvbkJlaGF2aW9yICZleHRlbnNpb25CZWhhdmlvciwKQEAgLTk1LDM3ICsxMDUsNDMgQEAg
T3V0cHV0SExTTDo6T3V0cHV0SExTTChzaDo6R0xlbnVtIHNoYWRlclR5cGUsCiB7CiAgICAgbUlu
c2lkZUZ1bmN0aW9uID0gZmFsc2U7CiAKLSAgICBtVXNlc0ZyYWdDb2xvciA9IGZhbHNlOwotICAg
IG1Vc2VzRnJhZ0RhdGEgPSBmYWxzZTsKLSAgICBtVXNlc0RlcHRoUmFuZ2UgPSBmYWxzZTsKLSAg
ICBtVXNlc0ZyYWdDb29yZCA9IGZhbHNlOwotICAgIG1Vc2VzUG9pbnRDb29yZCA9IGZhbHNlOwot
ICAgIG1Vc2VzRnJvbnRGYWNpbmcgPSBmYWxzZTsKLSAgICBtVXNlc1BvaW50U2l6ZSA9IGZhbHNl
OwotICAgIG1Vc2VzSW5zdGFuY2VJRCA9IGZhbHNlOworICAgIG1Vc2VzRnJhZ0NvbG9yICAgICAg
ICAgICAgICAgPSBmYWxzZTsKKyAgICBtVXNlc0ZyYWdEYXRhICAgICAgICAgICAgICAgID0gZmFs
c2U7CisgICAgbVVzZXNEZXB0aFJhbmdlICAgICAgICAgICAgICA9IGZhbHNlOworICAgIG1Vc2Vz
RnJhZ0Nvb3JkICAgICAgICAgICAgICAgPSBmYWxzZTsKKyAgICBtVXNlc1BvaW50Q29vcmQgICAg
ICAgICAgICAgID0gZmFsc2U7CisgICAgbVVzZXNGcm9udEZhY2luZyAgICAgICAgICAgICA9IGZh
bHNlOworICAgIG1Vc2VzUG9pbnRTaXplICAgICAgICAgICAgICAgPSBmYWxzZTsKKyAgICBtVXNl
c0luc3RhbmNlSUQgICAgICAgICAgICAgID0gZmFsc2U7CiAgICAgbVVzZXNWZXJ0ZXhJRCAgICAg
ICAgICAgICAgICA9IGZhbHNlOwotICAgIG1Vc2VzRnJhZ0RlcHRoID0gZmFsc2U7Ci0gICAgbVVz
ZXNYb3IgPSBmYWxzZTsKLSAgICBtVXNlc0Rpc2NhcmRSZXdyaXRpbmcgPSBmYWxzZTsKLSAgICBt
VXNlc05lc3RlZEJyZWFrID0gZmFsc2U7CisgICAgbVVzZXNGcmFnRGVwdGggICAgICAgICAgICAg
ICA9IGZhbHNlOworICAgIG1Vc2VzTnVtV29ya0dyb3VwcyAgICAgICAgICAgPSBmYWxzZTsKKyAg
ICBtVXNlc1dvcmtHcm91cElEICAgICAgICAgICAgID0gZmFsc2U7CisgICAgbVVzZXNMb2NhbElu
dm9jYXRpb25JRCAgICAgICA9IGZhbHNlOworICAgIG1Vc2VzR2xvYmFsSW52b2NhdGlvbklEICAg
ICAgPSBmYWxzZTsKKyAgICBtVXNlc0xvY2FsSW52b2NhdGlvbkluZGV4ICAgID0gZmFsc2U7Cisg
ICAgbVVzZXNYb3IgICAgICAgICAgICAgICAgICAgICA9IGZhbHNlOworICAgIG1Vc2VzRGlzY2Fy
ZFJld3JpdGluZyAgICAgICAgPSBmYWxzZTsKKyAgICBtVXNlc05lc3RlZEJyZWFrICAgICAgICAg
ICAgID0gZmFsc2U7CiAgICAgbVJlcXVpcmVzSUVFRVN0cmljdENvbXBpbGluZyA9IGZhbHNlOwog
CiAgICAgbVVuaXF1ZUluZGV4ID0gMDsKIAotICAgIG1PdXRwdXRMb2QwRnVuY3Rpb24gPSBmYWxz
ZTsKKyAgICBtT3V0cHV0TG9kMEZ1bmN0aW9uICAgICAgPSBmYWxzZTsKICAgICBtSW5zaWRlRGlz
Y29udGludW91c0xvb3AgPSBmYWxzZTsKLSAgICBtTmVzdGVkTG9vcERlcHRoID0gMDsKKyAgICBt
TmVzdGVkTG9vcERlcHRoICAgICAgICAgPSAwOwogCiAgICAgbUV4Y2Vzc2l2ZUxvb3BJbmRleCA9
IE5VTEw7CiAKLSAgICBtU3RydWN0dXJlSExTTCA9IG5ldyBTdHJ1Y3R1cmVITFNMOwotICAgIG1V
bmlmb3JtSExTTCA9IG5ldyBVbmlmb3JtSExTTChtU3RydWN0dXJlSExTTCwgb3V0cHV0VHlwZSwg
dW5pZm9ybXMpOworICAgIG1TdHJ1Y3R1cmVITFNMICAgICAgID0gbmV3IFN0cnVjdHVyZUhMU0w7
CisgICAgbVVuaWZvcm1ITFNMICAgICAgICAgPSBuZXcgVW5pZm9ybUhMU0wobVN0cnVjdHVyZUhM
U0wsIG91dHB1dFR5cGUsIHVuaWZvcm1zKTsKICAgICBtVGV4dHVyZUZ1bmN0aW9uSExTTCA9IG5l
dyBUZXh0dXJlRnVuY3Rpb25ITFNMOwogCiAgICAgaWYgKG1PdXRwdXRUeXBlID09IFNIX0hMU0xf
M18wX09VVFBVVCkKICAgICB7CiAgICAgICAgIC8vIEZyYWdtZW50IHNoYWRlcnMgbmVlZCBkeF9E
ZXB0aFJhbmdlLCBkeF9WaWV3Q29vcmRzIGFuZCBkeF9EZXB0aEZyb250LgotICAgICAgICAvLyBW
ZXJ0ZXggc2hhZGVycyBuZWVkIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHNldDogZHhfRGVwdGhSYW5n
ZSwgZHhfVmlld0Nvb3JkcyBhbmQgZHhfVmlld0FkanVzdC4KKyAgICAgICAgLy8gVmVydGV4IHNo
YWRlcnMgbmVlZCBhIHNsaWdodGx5IGRpZmZlcmVudCBzZXQ6IGR4X0RlcHRoUmFuZ2UsIGR4X1Zp
ZXdDb29yZHMgYW5kCisgICAgICAgIC8vIGR4X1ZpZXdBZGp1c3QuCiAgICAgICAgIC8vIEluIGJv
dGggY2FzZXMgdG90YWwgMyB1bmlmb3JtIHJlZ2lzdGVycyBuZWVkIHRvIGJlIHJlc2VydmVkLgog
ICAgICAgICBtVW5pZm9ybUhMU0wtPnJlc2VydmVVbmlmb3JtUmVnaXN0ZXJzKDMpOwogICAgIH0K
QEAgLTE1MSw3ICsxNjcsNyBAQCBPdXRwdXRITFNMOjp+T3V0cHV0SExTTCgpCiAKIHZvaWQgT3V0
cHV0SExTTDo6b3V0cHV0KFRJbnRlcm1Ob2RlICp0cmVlUm9vdCwgVEluZm9TaW5rQmFzZSAmb2Jq
U2luaykKIHsKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxUSW50ZXJtVHlwZWQqPiAmZmxhZ2dlZFN0
cnVjdHMgPSBGbGFnU3RkMTQwVmFsdWVTdHJ1Y3RzKHRyZWVSb290KTsKKyAgICBjb25zdCBzdGQ6
OnZlY3RvcjxUSW50ZXJtVHlwZWQgKj4gJmZsYWdnZWRTdHJ1Y3RzID0gRmxhZ1N0ZDE0MFZhbHVl
U3RydWN0cyh0cmVlUm9vdCk7CiAgICAgbWFrZUZsYWdnZWRTdHJ1Y3RNYXBzKGZsYWdnZWRTdHJ1
Y3RzKTsKIAogICAgIEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yIGJ1aWx0SW5GdW5jdGlvbkVtdWxh
dG9yOwpAQCAtMTYyLDEyICsxNzgsMTEgQEAgdm9pZCBPdXRwdXRITFNMOjpvdXRwdXQoVEludGVy
bU5vZGUgKnRyZWVSb290LCBUSW5mb1NpbmtCYXNlICZvYmpTaW5rKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2hhZGVyVmVyc2lv
bik7CiAgICAgfQogCi0gICAgYnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IuTWFya0J1aWx0SW5GdW5j
dGlvbnNGb3JFbXVsYXRpb24odHJlZVJvb3QpOworICAgIGJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9y
Lm1hcmtCdWlsdEluRnVuY3Rpb25zRm9yRW11bGF0aW9uKHRyZWVSb290KTsKIAogICAgIC8vIE5v
dyB0aGF0IHdlIGFyZSBkb25lIGNoYW5naW5nIHRoZSBBU1QsIGRvIHRoZSBhbmFseXNlcyBuZWVk
IGZvciBITFNMIGdlbmVyYXRpb24KLSAgICBDYWxsREFHOjpJbml0UmVzdWx0IHN1Y2Nlc3MgPSBt
Q2FsbERhZy5pbml0KHRyZWVSb290LCAmb2JqU2luayk7CisgICAgQ2FsbERBRzo6SW5pdFJlc3Vs
dCBzdWNjZXNzID0gbUNhbGxEYWcuaW5pdCh0cmVlUm9vdCwgbnVsbHB0cik7CiAgICAgQVNTRVJU
KHN1Y2Nlc3MgPT0gQ2FsbERBRzo6SU5JVERBR19TVUNDRVNTKTsKLSAgICBVTlVTRURfQVNTRVJU
SU9OX1ZBUklBQkxFKHN1Y2Nlc3MpOwogICAgIG1BU1RNZXRhZGF0YUxpc3QgPSBDcmVhdGVBU1RN
ZXRhZGF0YUhMU0wodHJlZVJvb3QsIG1DYWxsRGFnKTsKIAogICAgIC8vIE91dHB1dCB0aGUgYm9k
eSBhbmQgZm9vdGVyIGZpcnN0IHRvIGRldGVybWluZSB3aGF0IGhhcyB0byBnbyBpbiB0aGUgaGVh
ZGVyCkBAIC0xODYsNyArMjAxLDcgQEAgdm9pZCBPdXRwdXRITFNMOjpvdXRwdXQoVEludGVybU5v
ZGUgKnRyZWVSb290LCBUSW5mb1NpbmtCYXNlICZvYmpTaW5rKQogICAgIG9ialNpbmsgPDwgbUJv
ZHkuY19zdHIoKTsKICAgICBvYmpTaW5rIDw8IG1Gb290ZXIuY19zdHIoKTsKIAotICAgIGJ1aWx0
SW5GdW5jdGlvbkVtdWxhdG9yLkNsZWFudXAoKTsKKyAgICBidWlsdEluRnVuY3Rpb25FbXVsYXRv
ci5jbGVhbnVwKCk7CiB9CiAKIHZvaWQgT3V0cHV0SExTTDo6bWFrZUZsYWdnZWRTdHJ1Y3RNYXBz
KGNvbnN0IHN0ZDo6dmVjdG9yPFRJbnRlcm1UeXBlZCAqPiAmZmxhZ2dlZFN0cnVjdHMpCkBAIC0y
MDYsNyArMjIxLDggQEAgdm9pZCBPdXRwdXRITFNMOjptYWtlRmxhZ2dlZFN0cnVjdE1hcHMoY29u
c3Qgc3RkOjp2ZWN0b3I8VEludGVybVR5cGVkICo+ICZmbGFnZ2UKIAogICAgICAgICBtRmxhZ2dl
ZFN0cnVjdE9yaWdpbmFsTmFtZXNbZmxhZ2dlZE5vZGVdID0gc3RydWN0TmFtZTsKIAotICAgICAg
ICBmb3IgKHNpemVfdCBwb3MgPSBzdHJ1Y3ROYW1lLmZpbmQoJy4nKTsgcG9zICE9IHN0ZDo6c3Ry
aW5nOjpucG9zOyBwb3MgPSBzdHJ1Y3ROYW1lLmZpbmQoJy4nKSkKKyAgICAgICAgZm9yIChzaXpl
X3QgcG9zID0gc3RydWN0TmFtZS5maW5kKCcuJyk7IHBvcyAhPSBzdGQ6OnN0cmluZzo6bnBvczsK
KyAgICAgICAgICAgICBwb3MgICAgICAgID0gc3RydWN0TmFtZS5maW5kKCcuJykpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHN0cnVjdE5hbWUuZXJhc2UocG9zLCAxKTsKICAgICAgICAgfQpAQCAt
MjI3LDEzICsyNDMsMTUgQEAgY29uc3Qgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHVuc2lnbmVkIGlu
dD4gJk91dHB1dEhMU0w6OmdldFVuaWZvcm1SZWdpc3Rlck1hcCgpIGMKIAogaW50IE91dHB1dEhM
U0w6OnZlY3RvclNpemUoY29uc3QgVFR5cGUgJnR5cGUpIGNvbnN0CiB7Ci0gICAgaW50IGVsZW1l
bnRTaXplID0gdHlwZS5pc01hdHJpeCgpID8gdHlwZS5nZXRDb2xzKCkgOiAxOworICAgIGludCBl
bGVtZW50U2l6ZSAgICAgICAgPSB0eXBlLmlzTWF0cml4KCkgPyB0eXBlLmdldENvbHMoKSA6IDE7
CiAgICAgdW5zaWduZWQgaW50IGFycmF5U2l6ZSA9IHR5cGUuaXNBcnJheSgpID8gdHlwZS5nZXRB
cnJheVNpemUoKSA6IDF1OwogCiAgICAgcmV0dXJuIGVsZW1lbnRTaXplICogYXJyYXlTaXplOwog
fQogCi1UU3RyaW5nIE91dHB1dEhMU0w6OnN0cnVjdEluaXRpYWxpemVyU3RyaW5nKGludCBpbmRl
bnQsIGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdHVyZSwgY29uc3QgVFN0cmluZyAmcmhzU3RydWN0
TmFtZSkKK1RTdHJpbmcgT3V0cHV0SExTTDo6c3RydWN0SW5pdGlhbGl6ZXJTdHJpbmcoaW50IGlu
ZGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFN0cnVjdHVyZSAmc3RydWN0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUU3RyaW5nICZyaHNTdHJ1Y3ROYW1lKQogewogICAgIFRTdHJpbmcg
aW5pdDsKIApAQCAtMjQ1LDcgKzI2Myw3IEBAIFRTdHJpbmcgT3V0cHV0SExTTDo6c3RydWN0SW5p
dGlhbGl6ZXJTdHJpbmcoaW50IGluZGVudCwgY29uc3QgVFN0cnVjdHVyZSAmc3RydWN0CiAgICAg
ICAgIHByZUluZGVudFN0cmluZyArPSAnICc7CiAgICAgfQogCi0gICAgZm9yIChpbnQgc3BhY2Vz
ID0gMDsgc3BhY2VzIDwgKChpbmRlbnQrMSkgKiA0KTsgc3BhY2VzKyspCisgICAgZm9yIChpbnQg
c3BhY2VzID0gMDsgc3BhY2VzIDwgKChpbmRlbnQgKyAxKSAqIDQpOyBzcGFjZXMrKykKICAgICB7
CiAgICAgICAgIGZ1bGxJbmRlbnRTdHJpbmcgKz0gJyAnOwogICAgIH0KQEAgLTI1NSw5ICsyNzMs
OSBAQCBUU3RyaW5nIE91dHB1dEhMU0w6OnN0cnVjdEluaXRpYWxpemVyU3RyaW5nKGludCBpbmRl
bnQsIGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdAogICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxk
cyA9IHN0cnVjdHVyZS5maWVsZHMoKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBmaWVsZEluZGV4
ID0gMDsgZmllbGRJbmRleCA8IGZpZWxkcy5zaXplKCk7IGZpZWxkSW5kZXgrKykKICAgICB7Ci0g
ICAgICAgIGNvbnN0IFRGaWVsZCAmZmllbGQgPSAqZmllbGRzW2ZpZWxkSW5kZXhdOworICAgICAg
ICBjb25zdCBURmllbGQgJmZpZWxkICAgICAgPSAqZmllbGRzW2ZpZWxkSW5kZXhdOwogICAgICAg
ICBjb25zdCBUU3RyaW5nICZmaWVsZE5hbWUgPSByaHNTdHJ1Y3ROYW1lICsgIi4iICsgRGVjb3Jh
dGUoZmllbGQubmFtZSgpKTsKLSAgICAgICAgY29uc3QgVFR5cGUgJmZpZWxkVHlwZSA9ICpmaWVs
ZC50eXBlKCk7CisgICAgICAgIGNvbnN0IFRUeXBlICZmaWVsZFR5cGUgICA9ICpmaWVsZC50eXBl
KCk7CiAKICAgICAgICAgaWYgKGZpZWxkVHlwZS5nZXRTdHJ1Y3QoKSkKICAgICAgICAgewpAQCAt
MjgwLDEwICsyOTgsMTIgQEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoVEluZm9TaW5rQmFzZSAm
b3V0LCBjb25zdCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqYnVpbHQKICAgICBUU3RyaW5nIGF0
dHJpYnV0ZXM7CiAgICAgVFN0cmluZyBmbGFnZ2VkU3RydWN0czsKIAotICAgIGZvciAoc3RkOjpt
YXA8VEludGVybVR5cGVkKiwgVFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGZsYWdnZWRTdHJ1Y3RJ
dCA9IG1GbGFnZ2VkU3RydWN0TWFwcGVkTmFtZXMuYmVnaW4oKTsgZmxhZ2dlZFN0cnVjdEl0ICE9
IG1GbGFnZ2VkU3RydWN0TWFwcGVkTmFtZXMuZW5kKCk7IGZsYWdnZWRTdHJ1Y3RJdCsrKQorICAg
IGZvciAoc3RkOjptYXA8VEludGVybVR5cGVkICosIFRTdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBm
bGFnZ2VkU3RydWN0SXQgPQorICAgICAgICAgICAgIG1GbGFnZ2VkU3RydWN0TWFwcGVkTmFtZXMu
YmVnaW4oKTsKKyAgICAgICAgIGZsYWdnZWRTdHJ1Y3RJdCAhPSBtRmxhZ2dlZFN0cnVjdE1hcHBl
ZE5hbWVzLmVuZCgpOyBmbGFnZ2VkU3RydWN0SXQrKykKICAgICB7Ci0gICAgICAgIFRJbnRlcm1U
eXBlZCAqc3RydWN0Tm9kZSA9IGZsYWdnZWRTdHJ1Y3RJdC0+Zmlyc3Q7Ci0gICAgICAgIGNvbnN0
IFRTdHJpbmcgJm1hcHBlZE5hbWUgPSBmbGFnZ2VkU3RydWN0SXQtPnNlY29uZDsKKyAgICAgICAg
VEludGVybVR5cGVkICpzdHJ1Y3ROb2RlICAgID0gZmxhZ2dlZFN0cnVjdEl0LT5maXJzdDsKKyAg
ICAgICAgY29uc3QgVFN0cmluZyAmbWFwcGVkTmFtZSAgID0gZmxhZ2dlZFN0cnVjdEl0LT5zZWNv
bmQ7CiAgICAgICAgIGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdHVyZSA9ICpzdHJ1Y3ROb2RlLT5n
ZXRUeXBlKCkuZ2V0U3RydWN0KCk7CiAgICAgICAgIGNvbnN0IFRTdHJpbmcgJm9yaWdpbmFsTmFt
ZSA9IG1GbGFnZ2VkU3RydWN0T3JpZ2luYWxOYW1lc1tzdHJ1Y3ROb2RlXTsKIApAQCAtMjkyLDIy
ICszMTIsMjUgQEAgdm9pZCBPdXRwdXRITFNMOjpoZWFkZXIoVEluZm9TaW5rQmFzZSAmb3V0LCBj
b25zdCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAqYnVpbHQKICAgICAgICAgZmxhZ2dlZFN0cnVj
dHMgKz0gIlxuIjsKICAgICB9CiAKLSAgICBmb3IgKFJlZmVyZW5jZWRTeW1ib2xzOjpjb25zdF9p
dGVyYXRvciB2YXJ5aW5nID0gbVJlZmVyZW5jZWRWYXJ5aW5ncy5iZWdpbigpOyB2YXJ5aW5nICE9
IG1SZWZlcmVuY2VkVmFyeWluZ3MuZW5kKCk7IHZhcnlpbmcrKykKKyAgICBmb3IgKFJlZmVyZW5j
ZWRTeW1ib2xzOjpjb25zdF9pdGVyYXRvciB2YXJ5aW5nID0gbVJlZmVyZW5jZWRWYXJ5aW5ncy5i
ZWdpbigpOworICAgICAgICAgdmFyeWluZyAhPSBtUmVmZXJlbmNlZFZhcnlpbmdzLmVuZCgpOyB2
YXJ5aW5nKyspCiAgICAgewotICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSA9IHZhcnlpbmctPnNl
Y29uZC0+Z2V0VHlwZSgpOworICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSAgID0gdmFyeWluZy0+
c2Vjb25kLT5nZXRUeXBlKCk7CiAgICAgICAgIGNvbnN0IFRTdHJpbmcgJm5hbWUgPSB2YXJ5aW5n
LT5zZWNvbmQtPmdldFN5bWJvbCgpOwogCiAgICAgICAgIC8vIFByb2dyYW0gbGlua2luZyBkZXBl
bmRzIG9uIHRoaXMgZXhhY3QgZm9ybWF0Ci0gICAgICAgIHZhcnlpbmdzICs9ICJzdGF0aWMgIiAr
IEludGVycG9sYXRpb25TdHJpbmcodHlwZS5nZXRRdWFsaWZpZXIoKSkgKyAiICIgKyBUeXBlU3Ry
aW5nKHR5cGUpICsgIiAiICsKLSAgICAgICAgICAgICAgICAgICAgRGVjb3JhdGUobmFtZSkgKyBB
cnJheVN0cmluZyh0eXBlKSArICIgPSAiICsgaW5pdGlhbGl6ZXIodHlwZSkgKyAiO1xuIjsKKyAg
ICAgICAgdmFyeWluZ3MgKz0gInN0YXRpYyAiICsgSW50ZXJwb2xhdGlvblN0cmluZyh0eXBlLmdl
dFF1YWxpZmllcigpKSArICIgIiArIFR5cGVTdHJpbmcodHlwZSkgKworICAgICAgICAgICAgICAg
ICAgICAiICIgKyBEZWNvcmF0ZShuYW1lKSArIEFycmF5U3RyaW5nKHR5cGUpICsgIiA9ICIgKyBp
bml0aWFsaXplcih0eXBlKSArICI7XG4iOwogICAgIH0KIAotICAgIGZvciAoUmVmZXJlbmNlZFN5
bWJvbHM6OmNvbnN0X2l0ZXJhdG9yIGF0dHJpYnV0ZSA9IG1SZWZlcmVuY2VkQXR0cmlidXRlcy5i
ZWdpbigpOyBhdHRyaWJ1dGUgIT0gbVJlZmVyZW5jZWRBdHRyaWJ1dGVzLmVuZCgpOyBhdHRyaWJ1
dGUrKykKKyAgICBmb3IgKFJlZmVyZW5jZWRTeW1ib2xzOjpjb25zdF9pdGVyYXRvciBhdHRyaWJ1
dGUgPSBtUmVmZXJlbmNlZEF0dHJpYnV0ZXMuYmVnaW4oKTsKKyAgICAgICAgIGF0dHJpYnV0ZSAh
PSBtUmVmZXJlbmNlZEF0dHJpYnV0ZXMuZW5kKCk7IGF0dHJpYnV0ZSsrKQogICAgIHsKLSAgICAg
ICAgY29uc3QgVFR5cGUgJnR5cGUgPSBhdHRyaWJ1dGUtPnNlY29uZC0+Z2V0VHlwZSgpOworICAg
ICAgICBjb25zdCBUVHlwZSAmdHlwZSAgID0gYXR0cmlidXRlLT5zZWNvbmQtPmdldFR5cGUoKTsK
ICAgICAgICAgY29uc3QgVFN0cmluZyAmbmFtZSA9IGF0dHJpYnV0ZS0+c2Vjb25kLT5nZXRTeW1i
b2woKTsKIAotICAgICAgICBhdHRyaWJ1dGVzICs9ICJzdGF0aWMgIiArIFR5cGVTdHJpbmcodHlw
ZSkgKyAiICIgKyBEZWNvcmF0ZShuYW1lKSArIEFycmF5U3RyaW5nKHR5cGUpICsgIiA9ICIgKyBp
bml0aWFsaXplcih0eXBlKSArICI7XG4iOworICAgICAgICBhdHRyaWJ1dGVzICs9ICJzdGF0aWMg
IiArIFR5cGVTdHJpbmcodHlwZSkgKyAiICIgKyBEZWNvcmF0ZShuYW1lKSArIEFycmF5U3RyaW5n
KHR5cGUpICsKKyAgICAgICAgICAgICAgICAgICAgICAiID0gIiArIGluaXRpYWxpemVyKHR5cGUp
ICsgIjtcbiI7CiAgICAgfQogCiAgICAgb3V0IDw8IG1TdHJ1Y3R1cmVITFNMLT5zdHJ1Y3RzSGVh
ZGVyKCk7CkBAIC0zNjYsMjEgKzM4OSwyNCBAQCB2b2lkIE91dHB1dEhMU0w6OmhlYWRlcihUSW5m
b1NpbmtCYXNlICZvdXQsIGNvbnN0IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICpidWlsdAogICAg
IGlmIChtU2hhZGVyVHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpCiAgICAgewogICAgICAgICBU
RXh0ZW5zaW9uQmVoYXZpb3I6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtRXh0ZW5zaW9uQmVoYXZp
b3IuZmluZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpOwotICAgICAgICBjb25zdCBib29sIHVzaW5n
TVJURXh0ZW5zaW9uID0gKGl0ZXIgIT0gbUV4dGVuc2lvbkJlaGF2aW9yLmVuZCgpICYmIChpdGVy
LT5zZWNvbmQgPT0gRUJoRW5hYmxlIHx8IGl0ZXItPnNlY29uZCA9PSBFQmhSZXF1aXJlKSk7Cisg
ICAgICAgIGNvbnN0IGJvb2wgdXNpbmdNUlRFeHRlbnNpb24gICAgICAgICAgICA9IChpdGVyICE9
IG1FeHRlbnNpb25CZWhhdmlvci5lbmQoKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChpdGVyLT5zZWNvbmQgPT0gRUJoRW5hYmxlIHx8IGl0ZXItPnNlY29uZCA9
PSBFQmhSZXF1aXJlKSk7CiAKICAgICAgICAgb3V0IDw8ICIvLyBWYXJ5aW5nc1xuIjsKLSAgICAg
ICAgb3V0IDw8ICB2YXJ5aW5nczsKKyAgICAgICAgb3V0IDw8IHZhcnlpbmdzOwogICAgICAgICBv
dXQgPDwgIlxuIjsKIAogICAgICAgICBpZiAobVNoYWRlclZlcnNpb24gPj0gMzAwKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBmb3IgKFJlZmVyZW5jZWRTeW1ib2xzOjpjb25zdF9pdGVyYXRvciBv
dXRwdXRWYXJpYWJsZUl0ID0gbVJlZmVyZW5jZWRPdXRwdXRWYXJpYWJsZXMuYmVnaW4oKTsgb3V0
cHV0VmFyaWFibGVJdCAhPSBtUmVmZXJlbmNlZE91dHB1dFZhcmlhYmxlcy5lbmQoKTsgb3V0cHV0
VmFyaWFibGVJdCsrKQorICAgICAgICAgICAgZm9yIChSZWZlcmVuY2VkU3ltYm9sczo6Y29uc3Rf
aXRlcmF0b3Igb3V0cHV0VmFyaWFibGVJdCA9CisgICAgICAgICAgICAgICAgICAgICBtUmVmZXJl
bmNlZE91dHB1dFZhcmlhYmxlcy5iZWdpbigpOworICAgICAgICAgICAgICAgICBvdXRwdXRWYXJp
YWJsZUl0ICE9IG1SZWZlcmVuY2VkT3V0cHV0VmFyaWFibGVzLmVuZCgpOyBvdXRwdXRWYXJpYWJs
ZUl0KyspCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmdmFy
aWFibGVOYW1lID0gb3V0cHV0VmFyaWFibGVJdC0+Zmlyc3Q7Ci0gICAgICAgICAgICAgICAgY29u
c3QgVFR5cGUgJnZhcmlhYmxlVHlwZSA9IG91dHB1dFZhcmlhYmxlSXQtPnNlY29uZC0+Z2V0VHlw
ZSgpOworICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZ2YXJpYWJsZVR5cGUgICA9IG91dHB1
dFZhcmlhYmxlSXQtPnNlY29uZC0+Z2V0VHlwZSgpOwogCi0gICAgICAgICAgICAgICAgb3V0IDw8
ICJzdGF0aWMgIiArIFR5cGVTdHJpbmcodmFyaWFibGVUeXBlKSArICIgb3V0XyIgKyB2YXJpYWJs
ZU5hbWUgKyBBcnJheVN0cmluZyh2YXJpYWJsZVR5cGUpICsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIiA9ICIgKyBpbml0aWFsaXplcih2YXJpYWJsZVR5cGUpICsgIjtcbiI7CisgICAgICAgICAg
ICAgICAgb3V0IDw8ICJzdGF0aWMgIiArIFR5cGVTdHJpbmcodmFyaWFibGVUeXBlKSArICIgb3V0
XyIgKyB2YXJpYWJsZU5hbWUgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlTdHJp
bmcodmFyaWFibGVUeXBlKSArICIgPSAiICsgaW5pdGlhbGl6ZXIodmFyaWFibGVUeXBlKSArICI7
XG4iOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UKQEAgLTM4OCw3ICs0
MTQsNyBAQCB2b2lkIE91dHB1dEhMU0w6OmhlYWRlcihUSW5mb1NpbmtCYXNlICZvdXQsIGNvbnN0
IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICpidWlsdAogICAgICAgICAgICAgY29uc3QgdW5zaWdu
ZWQgaW50IG51bUNvbG9yVmFsdWVzID0gdXNpbmdNUlRFeHRlbnNpb24gPyBtTnVtUmVuZGVyVGFy
Z2V0cyA6IDE7CiAKICAgICAgICAgICAgIG91dCA8PCAic3RhdGljIGZsb2F0NCBnbF9Db2xvclsi
IDw8IG51bUNvbG9yVmFsdWVzIDw8ICJdID1cbiIKLSAgICAgICAgICAgICAgICAgICAie1xuIjsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJ7XG4iOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkg
PCBudW1Db2xvclZhbHVlczsgaSsrKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIG91
dCA8PCAiICAgIGZsb2F0NCgwLCAwLCAwLCAwKSI7CkBAIC00OTEsNyArNTE3LDggQEAgdm9pZCBP
dXRwdXRITFNMOjpoZWFkZXIoVEluZm9TaW5rQmFzZSAmb3V0LCBjb25zdCBCdWlsdEluRnVuY3Rp
b25FbXVsYXRvciAqYnVpbHQKIAogICAgICAgICBpZiAobVVzZXNEZXB0aFJhbmdlKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBvdXQgPDwgInN0YXRpYyBnbF9EZXB0aFJhbmdlUGFyYW1ldGVycyBn
bF9EZXB0aFJhbmdlID0ge2R4X0RlcHRoUmFuZ2UueCwgZHhfRGVwdGhSYW5nZS55LCBkeF9EZXB0
aFJhbmdlLnp9O1xuIgorICAgICAgICAgICAgb3V0IDw8ICJzdGF0aWMgZ2xfRGVwdGhSYW5nZVBh
cmFtZXRlcnMgZ2xfRGVwdGhSYW5nZSA9IHtkeF9EZXB0aFJhbmdlLngsICIKKyAgICAgICAgICAg
ICAgICAgICAiZHhfRGVwdGhSYW5nZS55LCBkeF9EZXB0aFJhbmdlLnp9O1xuIgogICAgICAgICAg
ICAgICAgICAgICJcbiI7CiAgICAgICAgIH0KIApAQCAtNTE4LDEwICs1NDUsMTAgQEAgdm9pZCBP
dXRwdXRITFNMOjpoZWFkZXIoVEluZm9TaW5rQmFzZSAmb3V0LCBjb25zdCBCdWlsdEluRnVuY3Rp
b25FbXVsYXRvciAqYnVpbHQKICAgICAgICAgICAgIG91dCA8PCAiI2RlZmluZSBHTF9VU0VTX0ZS
QUdfREFUQVxuIjsKICAgICAgICAgfQogICAgIH0KLSAgICBlbHNlICAgLy8gVmVydGV4IHNoYWRl
cgorICAgIGVsc2UgaWYgKG1TaGFkZXJUeXBlID09IEdMX1ZFUlRFWF9TSEFERVIpCiAgICAgewog
ICAgICAgICBvdXQgPDwgIi8vIEF0dHJpYnV0ZXNcbiI7Ci0gICAgICAgIG91dCA8PCAgYXR0cmli
dXRlczsKKyAgICAgICAgb3V0IDw8IGF0dHJpYnV0ZXM7CiAgICAgICAgIG91dCA8PCAiXG4iCiAg
ICAgICAgICAgICAgICAic3RhdGljIGZsb2F0NCBnbF9Qb3NpdGlvbiA9IGZsb2F0NCgwLCAwLCAw
LCAwKTtcbiI7CiAKQEAgLTU0Miw3ICs1NjksNyBAQCB2b2lkIE91dHB1dEhMU0w6OmhlYWRlcihU
SW5mb1NpbmtCYXNlICZvdXQsIGNvbnN0IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICpidWlsdAog
CiAgICAgICAgIG91dCA8PCAiXG4iCiAgICAgICAgICAgICAgICAiLy8gVmFyeWluZ3NcbiI7Ci0g
ICAgICAgIG91dCA8PCAgdmFyeWluZ3M7CisgICAgICAgIG91dCA8PCB2YXJ5aW5nczsKICAgICAg
ICAgb3V0IDw8ICJcbiI7CiAKICAgICAgICAgaWYgKG1Vc2VzRGVwdGhSYW5nZSkKQEAgLTU1OSw3
ICs1ODYsNyBAQCB2b2lkIE91dHB1dEhMU0w6OmhlYWRlcihUSW5mb1NpbmtCYXNlICZvdXQsIGNv
bnN0IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICpidWlsdAogICAgICAgICBpZiAobU91dHB1dFR5
cGUgPT0gU0hfSExTTF80XzFfT1VUUFVUIHx8IG1PdXRwdXRUeXBlID09IFNIX0hMU0xfNF8wX0ZM
OV8zX09VVFBVVCkKICAgICAgICAgewogICAgICAgICAgICAgb3V0IDw8ICJjYnVmZmVyIERyaXZl
ckNvbnN0YW50cyA6IHJlZ2lzdGVyKGIxKVxuIgotICAgICAgICAgICAgICAgICAgICAie1xuIjsK
KyAgICAgICAgICAgICAgICAgICAie1xuIjsKIAogICAgICAgICAgICAgaWYgKG1Vc2VzRGVwdGhS
YW5nZSkKICAgICAgICAgICAgIHsKQEAgLTU5Niw3ICs2MjMsOCBAQCB2b2lkIE91dHB1dEhMU0w6
OmhlYWRlcihUSW5mb1NpbmtCYXNlICZvdXQsIGNvbnN0IEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9y
ICpidWlsdAogCiAgICAgICAgIGlmIChtVXNlc0RlcHRoUmFuZ2UpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIG91dCA8PCAic3RhdGljIGdsX0RlcHRoUmFuZ2VQYXJhbWV0ZXJzIGdsX0RlcHRoUmFu
Z2UgPSB7ZHhfRGVwdGhSYW5nZS54LCBkeF9EZXB0aFJhbmdlLnksIGR4X0RlcHRoUmFuZ2Uuen07
XG4iCisgICAgICAgICAgICBvdXQgPDwgInN0YXRpYyBnbF9EZXB0aFJhbmdlUGFyYW1ldGVycyBn
bF9EZXB0aFJhbmdlID0ge2R4X0RlcHRoUmFuZ2UueCwgIgorICAgICAgICAgICAgICAgICAgICJk
eF9EZXB0aFJhbmdlLnksIGR4X0RlcHRoUmFuZ2Uuen07XG4iCiAgICAgICAgICAgICAgICAgICAg
IlxuIjsKICAgICAgICAgfQogCkBAIC02MDgsNiArNjM2LDQwIEBAIHZvaWQgT3V0cHV0SExTTDo6
aGVhZGVyKFRJbmZvU2lua0Jhc2UgJm91dCwgY29uc3QgQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3Ig
KmJ1aWx0CiAgICAgICAgICAgICBvdXQgPDwgIlxuIjsKICAgICAgICAgfQogICAgIH0KKyAgICBl
bHNlICAvLyBDb21wdXRlIHNoYWRlcgorICAgIHsKKyAgICAgICAgQVNTRVJUKG1TaGFkZXJUeXBl
ID09IEdMX0NPTVBVVEVfU0hBREVSKTsKKyAgICAgICAgaWYgKG1Vc2VzTnVtV29ya0dyb3VwcykK
KyAgICAgICAgeworICAgICAgICAgICAgb3V0IDw8ICJjYnVmZmVyIERyaXZlckNvbnN0YW50cyA6
IHJlZ2lzdGVyKGIxKVxuIgorICAgICAgICAgICAgICAgICAgICJ7XG4iOworICAgICAgICAgICAg
b3V0IDw8ICIgICAgdWludDMgZ2xfTnVtV29ya0dyb3VwcyA6IHBhY2tvZmZzZXQoYzApO1xuIjsK
KyAgICAgICAgICAgIG91dCA8PCAifTtcbiI7CisgICAgICAgIH0KKworICAgICAgICAvLyBGb2xs
b3cgYnVpbHQtaW4gdmFyaWFibGVzIHdvdWxkIGJlIGluaXRpYWxpemVkIGluCisgICAgICAgIC8v
IER5bmFtaWNITFNMOjpnZW5lcmF0ZUNvbXB1dGVTaGFkZXJMaW5rSExTTCwgaWYgdGhleQorICAg
ICAgICAvLyBhcmUgdXNlZCBpbiBjb21wdXRlIHNoYWRlci4KKyAgICAgICAgaWYgKG1Vc2VzV29y
a0dyb3VwSUQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8PCAic3RhdGljIHVpbnQzIGds
X1dvcmtHcm91cElEID0gdWludDMoMCwgMCwgMCk7XG4iOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKG1Vc2VzTG9jYWxJbnZvY2F0aW9uSUQpCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCA8
PCAic3RhdGljIHVpbnQzIGdsX0xvY2FsSW52b2NhdGlvbklEID0gdWludDMoMCwgMCwgMCk7XG4i
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1Vc2VzR2xvYmFsSW52b2NhdGlvbklEKQorICAg
ICAgICB7CisgICAgICAgICAgICBvdXQgPDwgInN0YXRpYyB1aW50MyBnbF9HbG9iYWxJbnZvY2F0
aW9uSUQgPSB1aW50MygwLCAwLCAwKTtcbiI7CisgICAgICAgIH0KKworICAgICAgICBpZiAobVVz
ZXNMb2NhbEludm9jYXRpb25JbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgb3V0IDw8ICJz
dGF0aWMgdWludCBnbF9Mb2NhbEludm9jYXRpb25JbmRleCA9IHVpbnQoMCk7XG4iOworICAgICAg
ICB9CisgICAgfQogCiAgICAgYm9vbCBnZXREaW1lbnNpb25zSWdub3Jlc0Jhc2VMZXZlbCA9CiAg
ICAgICAgIChtQ29tcGlsZU9wdGlvbnMgJiBTSF9ITFNMX0dFVF9ESU1FTlNJT05TX0lHTk9SRVNf
QkFTRV9MRVZFTCkgIT0gMDsKQEAgLTY0Myw2ICs3MDUsMzEgQEAgdm9pZCBPdXRwdXRITFNMOjpo
ZWFkZXIoVEluZm9TaW5rQmFzZSAmb3V0LCBjb25zdCBCdWlsdEluRnVuY3Rpb25FbXVsYXRvciAq
YnVpbHQKICAgICAgICAgb3V0IDw8ICIjZGVmaW5lIEdMX1VTRVNfREVQVEhfUkFOR0VcbiI7CiAg
ICAgfQogCisgICAgaWYgKG1Vc2VzTnVtV29ya0dyb3VwcykKKyAgICB7CisgICAgICAgIG91dCA8
PCAiI2RlZmluZSBHTF9VU0VTX05VTV9XT1JLX0dST1VQU1xuIjsKKyAgICB9CisKKyAgICBpZiAo
bVVzZXNXb3JrR3JvdXBJRCkKKyAgICB7CisgICAgICAgIG91dCA8PCAiI2RlZmluZSBHTF9VU0VT
X1dPUktfR1JPVVBfSURcbiI7CisgICAgfQorCisgICAgaWYgKG1Vc2VzTG9jYWxJbnZvY2F0aW9u
SUQpCisgICAgeworICAgICAgICBvdXQgPDwgIiNkZWZpbmUgR0xfVVNFU19MT0NBTF9JTlZPQ0FU
SU9OX0lEXG4iOworICAgIH0KKworICAgIGlmIChtVXNlc0dsb2JhbEludm9jYXRpb25JRCkKKyAg
ICB7CisgICAgICAgIG91dCA8PCAiI2RlZmluZSBHTF9VU0VTX0dMT0JBTF9JTlZPQ0FUSU9OX0lE
XG4iOworICAgIH0KKworICAgIGlmIChtVXNlc0xvY2FsSW52b2NhdGlvbkluZGV4KQorICAgIHsK
KyAgICAgICAgb3V0IDw8ICIjZGVmaW5lIEdMX1VTRVNfTE9DQUxfSU5WT0NBVElPTl9JTkRFWFxu
IjsKKyAgICB9CisKICAgICBpZiAobVVzZXNYb3IpCiAgICAgewogICAgICAgICBvdXQgPDwgImJv
b2wgeG9yKGJvb2wgcCwgYm9vbCBxKVxuIgpAQCAtNjUyLDcgKzczOSw3IEBAIHZvaWQgT3V0cHV0
SExTTDo6aGVhZGVyKFRJbmZvU2lua0Jhc2UgJm91dCwgY29uc3QgQnVpbHRJbkZ1bmN0aW9uRW11
bGF0b3IgKmJ1aWx0CiAgICAgICAgICAgICAgICAiXG4iOwogICAgIH0KIAotICAgIGJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yLT5PdXRwdXRFbXVsYXRlZEZ1bmN0aW9ucyhvdXQpOworICAgIGJ1aWx0
SW5GdW5jdGlvbkVtdWxhdG9yLT5vdXRwdXRFbXVsYXRlZEZ1bmN0aW9ucyhvdXQpOwogfQogCiB2
b2lkIE91dHB1dEhMU0w6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKm5vZGUpCkBAIC02Nzks
NyArNzY2LDcgQEAgdm9pZCBPdXRwdXRITFNMOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpu
b2RlKQogCiAgICAgICAgIGlmIChxdWFsaWZpZXIgPT0gRXZxVW5pZm9ybSkKICAgICAgICAgewot
ICAgICAgICAgICAgY29uc3QgVFR5cGUgJm5vZGVUeXBlID0gbm9kZS0+Z2V0VHlwZSgpOworICAg
ICAgICAgICAgY29uc3QgVFR5cGUgJm5vZGVUeXBlICAgICAgICAgICAgICAgICA9IG5vZGUtPmdl
dFR5cGUoKTsKICAgICAgICAgICAgIGNvbnN0IFRJbnRlcmZhY2VCbG9jayAqaW50ZXJmYWNlQmxv
Y2sgPSBub2RlVHlwZS5nZXRJbnRlcmZhY2VCbG9jaygpOwogCiAgICAgICAgICAgICBpZiAoaW50
ZXJmYWNlQmxvY2spCkBAIC03NTYsNiArODQzLDMxIEBAIHZvaWQgT3V0cHV0SExTTDo6dmlzaXRT
eW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkKICAgICAgICAgICAgIG1Vc2VzRnJhZ0RlcHRoID0g
dHJ1ZTsKICAgICAgICAgICAgIG91dCA8PCAiZ2xfRGVwdGgiOwogICAgICAgICB9CisgICAgICAg
IGVsc2UgaWYgKHF1YWxpZmllciA9PSBFdnFOdW1Xb3JrR3JvdXBzKQorICAgICAgICB7CisgICAg
ICAgICAgICBtVXNlc051bVdvcmtHcm91cHMgPSB0cnVlOworICAgICAgICAgICAgb3V0IDw8IG5h
bWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocXVhbGlmaWVyID09IEV2cVdvcmtHcm91
cElEKQorICAgICAgICB7CisgICAgICAgICAgICBtVXNlc1dvcmtHcm91cElEID0gdHJ1ZTsKKyAg
ICAgICAgICAgIG91dCA8PCBuYW1lOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHF1YWxp
ZmllciA9PSBFdnFMb2NhbEludm9jYXRpb25JRCkKKyAgICAgICAgeworICAgICAgICAgICAgbVVz
ZXNMb2NhbEludm9jYXRpb25JRCA9IHRydWU7CisgICAgICAgICAgICBvdXQgPDwgbmFtZTsKKyAg
ICAgICAgfQorICAgICAgICBlbHNlIGlmIChxdWFsaWZpZXIgPT0gRXZxR2xvYmFsSW52b2NhdGlv
bklEKQorICAgICAgICB7CisgICAgICAgICAgICBtVXNlc0dsb2JhbEludm9jYXRpb25JRCA9IHRy
dWU7CisgICAgICAgICAgICBvdXQgPDwgbmFtZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlm
IChxdWFsaWZpZXIgPT0gRXZxTG9jYWxJbnZvY2F0aW9uSW5kZXgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1Vc2VzTG9jYWxJbnZvY2F0aW9uSW5kZXggPSB0cnVlOworICAgICAgICAgICAgb3V0
IDw8IG5hbWU7CisgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CiAgICAgICAgICAg
ICBvdXQgPDwgRGVjb3JhdGVJZk5lZWRlZChub2RlLT5nZXROYW1lKCkpOwpAQCAtODA3LDExICs5
MTksOSBAQCB2b2lkIE91dHB1dEhMU0w6Om91dHB1dEVxdWFsKFZpc2l0IHZpc2l0LCBjb25zdCBU
VHlwZSAmdHlwZSwgVE9wZXJhdG9yIG9wLCBUSW5mbwogICAgIH0KIH0KIAotYm9vbCBPdXRwdXRI
TFNMOjphbmNlc3RvckV2YWx1YXRlc1RvU2FtcGxlckluU3RydWN0KFZpc2l0IHZpc2l0KQorYm9v
bCBPdXRwdXRITFNMOjphbmNlc3RvckV2YWx1YXRlc1RvU2FtcGxlckluU3RydWN0KCkKIHsKLSAg
ICAvLyBJbnNpZGUgSW5WaXNpdCB0aGUgY3VycmVudCBub2RlIGlzIGFscmVhZHkgaW4gdGhlIHBh
dGguCi0gICAgY29uc3QgdW5zaWduZWQgaW50IGluaXRpYWxOID0gdmlzaXQgPT0gSW5WaXNpdCA/
IDF1IDogMHU7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgbiA9IGluaXRpYWxOOyBnZXRBbmNlc3Rv
ck5vZGUobikgIT0gbnVsbHB0cjsgKytuKQorICAgIGZvciAodW5zaWduZWQgaW50IG4gPSAwdTsg
Z2V0QW5jZXN0b3JOb2RlKG4pICE9IG51bGxwdHI7ICsrbikKICAgICB7CiAgICAgICAgIFRJbnRl
cm1Ob2RlICphbmNlc3RvciAgICAgICAgICAgICAgID0gZ2V0QW5jZXN0b3JOb2RlKG4pOwogICAg
ICAgICBjb25zdCBUSW50ZXJtQmluYXJ5ICphbmNlc3RvckJpbmFyeSA9IGFuY2VzdG9yLT5nZXRB
c0JpbmFyeU5vZGUoKTsKQEAgLTg5MCw3ICsxMDAwLDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNp
dEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgLy8gQXJyYXlSZXR1cm5WYWx1ZVRvT3V0UGFyYW1ldGVyIHNo
b3VsZCBoYXZlIGVsaW1pbmF0ZWQgZXhwcmVzc2lvbnMgd2hlcmUgYQogICAgICAgICAgICAgICAg
IC8vIGZ1bmN0aW9uIGNhbGwgaXMgYXNzaWduZWQuCi0gICAgICAgICAgICAgICAgQVNTRVJUKHJp
Z2h0QWdnID09IG51bGxwdHIgfHwgcmlnaHRBZ2ctPmdldE9wKCkgIT0gRU9wRnVuY3Rpb25DYWxs
KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQocmlnaHRBZ2cgPT0gbnVsbHB0cik7CiAKICAgICAg
ICAgICAgICAgICBjb25zdCBUU3RyaW5nICZmdW5jdGlvbk5hbWUgPSBhZGRBcnJheUFzc2lnbm1l
bnRGdW5jdGlvbihub2RlLT5nZXRUeXBlKCkpOwogICAgICAgICAgICAgICAgIG91dHB1dFRyaXBs
ZXQob3V0LCB2aXNpdCwgKGZ1bmN0aW9uTmFtZSArICIoIikuY19zdHIoKSwgIiwgIiwgIikiKTsK
QEAgLTEwMDEsMTkgKzExMTEsMjAgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJpbmFyeShWaXNp
dCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEVPcEluZGV4RGlyZWN0OgogICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBUVHlw
ZSYgbGVmdFR5cGUgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKTsKKyAgICAgICAgICAgIGNv
bnN0IFRUeXBlICZsZWZ0VHlwZSA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpOwogICAgICAg
ICAgICAgaWYgKGxlZnRUeXBlLmlzSW50ZXJmYWNlQmxvY2soKSkKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCiAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBUSW50ZXJmYWNlQmxvY2sqIGludGVyZmFjZUJsb2NrID0gbGVm
dFR5cGUuZ2V0SW50ZXJmYWNlQmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgVEludGVyZmFj
ZUJsb2NrICppbnRlcmZhY2VCbG9jayA9IGxlZnRUeXBlLmdldEludGVyZmFjZUJsb2NrKCk7CiAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBhcnJheUluZGV4ID0gbm9kZS0+Z2V0UmlnaHQo
KS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldElDb25zdCgwKTsKLSAgICAgICAgICAgICAgICAg
ICAgbVJlZmVyZW5jZWRJbnRlcmZhY2VCbG9ja3NbaW50ZXJmYWNlQmxvY2stPmluc3RhbmNlTmFt
ZSgpXSA9IG5vZGUtPmdldExlZnQoKS0+Z2V0QXNTeW1ib2xOb2RlKCk7CisgICAgICAgICAgICAg
ICAgICAgIG1SZWZlcmVuY2VkSW50ZXJmYWNlQmxvY2tzW2ludGVyZmFjZUJsb2NrLT5pbnN0YW5j
ZU5hbWUoKV0gPQorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0TGVmdCgpLT5nZXRB
c1N5bWJvbE5vZGUoKTsKICAgICAgICAgICAgICAgICAgICAgb3V0IDw8IG1Vbmlmb3JtSExTTC0+
aW50ZXJmYWNlQmxvY2tJbnN0YW5jZVN0cmluZygqaW50ZXJmYWNlQmxvY2ssIGFycmF5SW5kZXgp
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYW5jZXN0b3JFdmFsdWF0ZXNUb1Nh
bXBsZXJJblN0cnVjdCh2aXNpdCkpCisgICAgICAgICAgICBlbHNlIGlmIChhbmNlc3RvckV2YWx1
YXRlc1RvU2FtcGxlckluU3RydWN0KCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
Ly8gQWxsIHBhcnRzIG9mIGFuIGV4cHJlc3Npb24gdGhhdCBhY2Nlc3MgYSBzYW1wbGVyIGluIGEg
c3RydWN0IG5lZWQgdG8gdXNlIF8gYXMKICAgICAgICAgICAgICAgICAvLyBzZXBhcmF0b3IgdG8g
YWNjZXNzIHRoZSBzYW1wbGVyIHZhcmlhYmxlIHRoYXQgaGFzIGJlZW4gbW92ZWQgb3V0IG9mIHRo
ZSBzdHJ1Y3QuCkBAIC0xMDI1LDE2ICsxMTM2LDE2IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRC
aW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEluZGV4SW5kaXJlY3Q6Ci0g
ICAgICAgIC8vIFdlIGRvIG5vdCBjdXJyZW50bHkgc3VwcG9ydCBpbmRpcmVjdCByZWZlcmVuY2Vz
IHRvIGludGVyZmFjZSBibG9ja3MKLSAgICAgICAgQVNTRVJUKG5vZGUtPmdldExlZnQoKS0+Z2V0
QmFzaWNUeXBlKCkgIT0gRWJ0SW50ZXJmYWNlQmxvY2spOwotICAgICAgICBvdXRwdXRUcmlwbGV0
KG91dCwgdmlzaXQsICIiLCAiWyIsICJdIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBF
T3BJbmRleERpcmVjdFN0cnVjdDoKKyAgICAgICAgY2FzZSBFT3BJbmRleEluZGlyZWN0OgorICAg
ICAgICAgICAgLy8gV2UgZG8gbm90IGN1cnJlbnRseSBzdXBwb3J0IGluZGlyZWN0IHJlZmVyZW5j
ZXMgdG8gaW50ZXJmYWNlIGJsb2NrcworICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmdldExlZnQo
KS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0SW50ZXJmYWNlQmxvY2spOworICAgICAgICAgICAgb3V0
cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiIiwgIlsiLCAiXSIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlw
ZSgpLmdldFN0cnVjdCgpOwotICAgICAgICAgICAgY29uc3QgVEludGVybUNvbnN0YW50VW5pb24q
IGluZGV4ID0gbm9kZS0+Z2V0UmlnaHQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7Ci0gICAgICAg
ICAgICBjb25zdCBURmllbGQqIGZpZWxkID0gc3RydWN0dXJlLT5maWVsZHMoKVtpbmRleC0+Z2V0
SUNvbnN0KDApXTsKKyAgICAgICAgICAgIGNvbnN0IFRTdHJ1Y3R1cmUgKnN0cnVjdHVyZSAgICAg
ICA9IG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpOworICAgICAgICAgICAg
Y29uc3QgVEludGVybUNvbnN0YW50VW5pb24gKmluZGV4ID0gbm9kZS0+Z2V0UmlnaHQoKS0+Z2V0
QXNDb25zdGFudFVuaW9uKCk7CisgICAgICAgICAgICBjb25zdCBURmllbGQgKmZpZWxkICAgICAg
ICAgICAgICAgPSBzdHJ1Y3R1cmUtPmZpZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOwogCiAg
ICAgICAgICAgICAvLyBJbiBjYXNlcyB3aGVyZSBpbmRleGluZyByZXR1cm5zIGEgc2FtcGxlciwg
d2UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbXBsZXIgdmFyaWFibGUKICAgICAgICAgICAgIC8vIHRo
YXQgaGFzIGJlZW4gbW92ZWQgb3V0IG9mIHRoZSBzdHJ1Y3QuCkBAIC0xMDUwLDcgKzExNjEsNyBA
QCBib29sIE91dHB1dEhMU0w6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5
ICpub2RlKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8vIEFsbCBwYXJ0cyBvZiBh
biBleHByZXNzaW9uIHRoYXQgYWNjZXNzIGEgc2FtcGxlciBpbiBhIHN0cnVjdCBuZWVkIHRvIHVz
ZSBfIGFzCiAgICAgICAgICAgICAgICAgLy8gc2VwYXJhdG9yIHRvIGFjY2VzcyB0aGUgc2FtcGxl
ciB2YXJpYWJsZSB0aGF0IGhhcyBiZWVuIG1vdmVkIG91dCBvZiB0aGUgc3RydWN0LgotICAgICAg
ICAgICAgICAgIGluZGV4aW5nUmV0dXJuc1NhbXBsZXIgPSBhbmNlc3RvckV2YWx1YXRlc1RvU2Ft
cGxlckluU3RydWN0KHZpc2l0KTsKKyAgICAgICAgICAgICAgICBpbmRleGluZ1JldHVybnNTYW1w
bGVyID0gYW5jZXN0b3JFdmFsdWF0ZXNUb1NhbXBsZXJJblN0cnVjdCgpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgaWYgKHZpc2l0ID09IEluVmlzaXQpCiAgICAgICAgICAgICB7CkBAIC0x
MDY3LDkzICsxMTc4LDk3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRCaW5hcnkoVmlzaXQgdmlz
aXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEluZGV4RGlyZWN0SW50ZXJmYWNlQmxvY2s6Ci0gICAg
ICAgIGlmICh2aXNpdCA9PSBJblZpc2l0KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBU
SW50ZXJmYWNlQmxvY2sqIGludGVyZmFjZUJsb2NrID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBl
KCkuZ2V0SW50ZXJmYWNlQmxvY2soKTsKLSAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1Db25zdGFu
dFVuaW9uKiBpbmRleCA9IG5vZGUtPmdldFJpZ2h0KCktPmdldEFzQ29uc3RhbnRVbmlvbigpOwot
ICAgICAgICAgICAgY29uc3QgVEZpZWxkKiBmaWVsZCA9IGludGVyZmFjZUJsb2NrLT5maWVsZHMo
KVtpbmRleC0+Z2V0SUNvbnN0KDApXTsKLSAgICAgICAgICAgIG91dCA8PCAiLiIgKyBEZWNvcmF0
ZShmaWVsZC0+bmFtZSgpKTsKKyAgICAgICAgY2FzZSBFT3BJbmRleERpcmVjdEludGVyZmFjZUJs
b2NrOgorICAgICAgICAgICAgaWYgKHZpc2l0ID09IEluVmlzaXQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgY29uc3QgVEludGVyZmFjZUJsb2NrICppbnRlcmZhY2VCbG9jayA9Cisg
ICAgICAgICAgICAgICAgICAgIG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpLmdldEludGVyZmFj
ZUJsb2NrKCk7CisgICAgICAgICAgICAgICAgY29uc3QgVEludGVybUNvbnN0YW50VW5pb24gKmlu
ZGV4ID0gbm9kZS0+Z2V0UmlnaHQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCk7CisgICAgICAgICAg
ICAgICAgY29uc3QgVEZpZWxkICpmaWVsZCAgICAgICAgICAgICAgID0gaW50ZXJmYWNlQmxvY2st
PmZpZWxkcygpW2luZGV4LT5nZXRJQ29uc3QoMCldOworICAgICAgICAgICAgICAgIG91dCA8PCAi
LiIgKyBEZWNvcmF0ZShmaWVsZC0+bmFtZSgpKTsKIAotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BBZGQ6Ci0gICAgICAg
ICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgKyAiLCAiKSIpOwotICAgICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBFT3BTdWI6Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQs
IHZpc2l0LCAiKCIsICIgLSAiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBF
T3BNdWw6Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgKiAiLCAi
KSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BEaXY6Ci0gICAgICAgICAgb3V0
cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgLyAiLCAiKSIpOwotICAgICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFT3BJTW9kOgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNp
dCwgIigiLCAiICUgIiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0
U2hpZnRMZWZ0OgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiIDw8
ICIsICIpIik7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEJpdFNoaWZ0UmlnaHQ6
Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgPj4gIiwgIikiKTsK
LSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0d2lzZUFuZDoKLSAgICAgICAgICBv
dXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiAmICIsICIpIik7Ci0gICAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcEJpdHdpc2VYb3I6Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChv
dXQsIHZpc2l0LCAiKCIsICIgXiAiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BCaXR3aXNlT3I6Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIs
ICIgfCAiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BFcXVhbDoKLSAg
ICAgIGNhc2UgRU9wTm90RXF1YWw6Ci0gICAgICAgIG91dHB1dEVxdWFsKHZpc2l0LCBub2RlLT5n
ZXRMZWZ0KCktPmdldFR5cGUoKSwgbm9kZS0+Z2V0T3AoKSwgb3V0KTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEVPcExlc3NUaGFuOgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2
aXNpdCwgIigiLCAiIDwgIiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
R3JlYXRlclRoYW46Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIg
PiAiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFs
OgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiIDw9ICIsICIpIik7
Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWw6Ci0gICAg
ICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgPj0gIiwgIikiKTsKLSAgICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2FsYXI6Ci0gICAgICAgICAg
b3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgKiAiLCAiKSIpOwotICAgICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjoKLSAgICAgICAgICBvdXRwdXRU
cmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiAqICIsICIpIik7Ci0gICAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEVPcFZlY3RvclRpbWVzTWF0cml4OgotICAgICAgICAgIG91dHB1dFRyaXBsZXQo
b3V0LCB2aXNpdCwgIm11bCgiLCAiLCB0cmFuc3Bvc2UoIiwgIikpIik7Ci0gICAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzVmVjdG9yOgotICAgICAgICAgIG91dHB1dFRy
aXBsZXQob3V0LCB2aXNpdCwgIm11bCh0cmFuc3Bvc2UoIiwgIiksICIsICIpIik7Ci0gICAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcE1hdHJpeFRpbWVzTWF0cml4OgotICAgICAgICAgIG91
dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgInRyYW5zcG9zZShtdWwodHJhbnNwb3NlKCIsICIpLCB0
cmFuc3Bvc2UoIiwgIikpKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BMb2dp
Y2FsT3I6Ci0gICAgICAgIC8vIEhMU0wgZG9lc24ndCBzaG9ydC1jaXJjdWl0IHx8LCBzbyB3ZSBh
c3N1bWUgdGhhdCB8fCBhZmZlY3RlZCBieSBzaG9ydC1jaXJjdWl0aW5nIGhhdmUgYmVlbiB1bmZv
bGRlZC4KLSAgICAgICAgQVNTRVJUKCFub2RlLT5nZXRSaWdodCgpLT5oYXNTaWRlRWZmZWN0cygp
KTsKLSAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgfHwgIiwgIikiKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBjYXNlIEVPcExvZ2ljYWxYb3I6Ci0gICAgICAg
IG1Vc2VzWG9yID0gdHJ1ZTsKLSAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAieG9y
KCIsICIsICIsICIpIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BMb2dpY2FsQW5k
OgotICAgICAgICAvLyBITFNMIGRvZXNuJ3Qgc2hvcnQtY2lyY3VpdCAmJiwgc28gd2UgYXNzdW1l
IHRoYXQgJiYgYWZmZWN0ZWQgYnkgc2hvcnQtY2lyY3VpdGluZyBoYXZlIGJlZW4gdW5mb2xkZWQu
Ci0gICAgICAgIEFTU0VSVCghbm9kZS0+Z2V0UmlnaHQoKS0+aGFzU2lkZUVmZmVjdHMoKSk7Ci0g
ICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiICYmICIsICIpIik7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFT3BBZGQ6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlz
aXQsICIoIiwgIiArICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBF
T3BTdWI6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiAtICIs
ICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BNdWw6CisgICAgICAg
ICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiAqICIsICIpIik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BEaXY6CisgICAgICAgICAgICBvdXRwdXRUcmlw
bGV0KG91dCwgdmlzaXQsICIoIiwgIiAvICIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BJTW9kOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0
LCAiKCIsICIgJSAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9w
Qml0U2hpZnRMZWZ0OgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIs
ICIgPDwgIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdFNo
aWZ0UmlnaHQ6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiA+
PiAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQml0d2lzZUFu
ZDoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiICYgIiwgIiki
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEJpdHdpc2VYb3I6CisgICAg
ICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiBeICIsICIpIik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXR3aXNlT3I6CisgICAgICAgICAgICBv
dXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiB8ICIsICIpIik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBFT3BFcXVhbDoKKyAgICAgICAgY2FzZSBFT3BOb3RFcXVhbDoK
KyAgICAgICAgICAgIG91dHB1dEVxdWFsKHZpc2l0LCBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUo
KSwgbm9kZS0+Z2V0T3AoKSwgb3V0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEVPcExlc3NUaGFuOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIs
ICIgPCAiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wR3JlYXRl
clRoYW46CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiA+ICIs
ICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFs
OgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgPD0gIiwgIiki
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWw6
CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiA+PSAiLCAiKSIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wVmVjdG9yVGltZXNTY2FsYXI6
CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiAqICIsICIpIik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BNYXRyaXhUaW1lc1NjYWxhcjoK
KyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiICogIiwgIikiKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcFZlY3RvclRpbWVzTWF0cml4Ogor
ICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAibXVsKCIsICIsIHRyYW5zcG9z
ZSgiLCAiKSkiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcE1hdHJpeFRp
bWVzVmVjdG9yOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAibXVsKHRy
YW5zcG9zZSgiLCAiKSwgIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEVPcE1hdHJpeFRpbWVzTWF0cml4OgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZp
c2l0LCAidHJhbnNwb3NlKG11bCh0cmFuc3Bvc2UoIiwgIiksIHRyYW5zcG9zZSgiLCAiKSkpIik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6CisgICAgICAg
ICAgICAvLyBITFNMIGRvZXNuJ3Qgc2hvcnQtY2lyY3VpdCB8fCwgc28gd2UgYXNzdW1lIHRoYXQg
fHwgYWZmZWN0ZWQgYnkgc2hvcnQtY2lyY3VpdGluZyBoYXZlCisgICAgICAgICAgICAvLyBiZWVu
IHVuZm9sZGVkLgorICAgICAgICAgICAgQVNTRVJUKCFub2RlLT5nZXRSaWdodCgpLT5oYXNTaWRl
RWZmZWN0cygpKTsKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAi
IHx8ICIsICIpIik7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBFT3BM
b2dpY2FsWG9yOgorICAgICAgICAgICAgbVVzZXNYb3IgPSB0cnVlOworICAgICAgICAgICAgb3V0
cHV0VHJpcGxldChvdXQsIHZpc2l0LCAieG9yKCIsICIsICIsICIpIik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBFT3BMb2dpY2FsQW5kOgorICAgICAgICAgICAgLy8gSExTTCBk
b2Vzbid0IHNob3J0LWNpcmN1aXQgJiYsIHNvIHdlIGFzc3VtZSB0aGF0ICYmIGFmZmVjdGVkIGJ5
IHNob3J0LWNpcmN1aXRpbmcgaGF2ZQorICAgICAgICAgICAgLy8gYmVlbiB1bmZvbGRlZC4KKyAg
ICAgICAgICAgIEFTU0VSVCghbm9kZS0+Z2V0UmlnaHQoKS0+aGFzU2lkZUVmZmVjdHMoKSk7Cisg
ICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiAmJiAiLCAiKSIpOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwpAQCAtMTE3MSw5ICsxMjg2
LDYgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVW5h
cnkgKm5vZGUpCiAgICAgICAgIGNhc2UgRU9wUG9zaXRpdmU6CiAgICAgICAgICAgICBvdXRwdXRU
cmlwbGV0KG91dCwgdmlzaXQsICIoKyIsICIiLCAiKSIpOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgRU9wVmVjdG9yTG9naWNhbE5vdDoKLSAgICAgICAgICAgIG91dHB1dFRyaXBs
ZXQob3V0LCB2aXNpdCwgIighIiwgIiIsICIpIik7Ci0gICAgICAgICAgICBicmVhazsKICAgICAg
ICAgY2FzZSBFT3BMb2dpY2FsTm90OgogICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZp
c2l0LCAiKCEiLCAiIiwgIikiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTIyNSwxNjEgKzEz
MzcsMTY0IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVy
bVVuYXJ5ICpub2RlKQogICAgICAgICBjYXNlIEVPcFRhbmg6CiAgICAgICAgICAgICBvdXRwdXRU
cmlwbGV0KG91dCwgdmlzaXQsICJ0YW5oKCIsICIiLCAiKSIpOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEVPcEFzaW5oOgotICAgICAgICBBU1NFUlQobm9kZS0+Z2V0VXNlRW11bGF0
ZWRGdW5jdGlvbigpKTsKLSAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQs
IHZpc2l0LCAiYXNpbmgoIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BBY29zaDoK
LSAgICAgICAgQVNTRVJUKG5vZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSk7Ci0gICAgICAg
IHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBsZXQob3V0LCB2aXNpdCwgImFjb3NoKCIpOwotICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQXRhbmg6Ci0gICAgICAgIEFTU0VSVChub2RlLT5n
ZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkpOwotICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25U
cmlwbGV0KG91dCwgdmlzaXQsICJhdGFuaCgiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IEVPcEV4cDoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJleHAoIiwgIiIs
ICIpIik7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcExvZzoKLSAgICAgICAgICBv
dXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJsb2coIiwgIiIsICIpIik7Ci0gICAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcEV4cDI6Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZp
c2l0LCAiZXhwMigiLCAiIiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
TG9nMjoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJsb2cyKCIsICIiLCAi
KSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BTcXJ0OgotICAgICAgICAgIG91
dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgInNxcnQoIiwgIiIsICIpIik7Ci0gICAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcEludmVyc2VTcXJ0OgotICAgICAgICAgIG91dHB1dFRyaXBsZXQo
b3V0LCB2aXNpdCwgInJzcXJ0KCIsICIiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFT3BBYnM6Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiYWJzKCIs
ICIiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BTaWduOgotICAgICAg
ICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgInNpZ24oIiwgIiIsICIpIik7Ci0gICAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEZsb29yOgotICAgICAgICAgIG91dHB1dFRyaXBsZXQo
b3V0LCB2aXNpdCwgImZsb29yKCIsICIiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAg
Y2FzZSBFT3BUcnVuYzoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJ0cnVu
YygiLCAiIiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wUm91bmQ6Ci0g
ICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAicm91bmQoIiwgIiIsICIpIik7Ci0g
ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFJvdW5kRXZlbjoKLSAgICAgICAgQVNTRVJU
KG5vZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSk7Ci0gICAgICAgIHdyaXRlRW11bGF0ZWRG
dW5jdGlvblRyaXBsZXQob3V0LCB2aXNpdCwgInJvdW5kRXZlbigiKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEVPcENlaWw6Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0
LCAiY2VpbCgiLCAiIiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wRnJh
Y3Q6Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiZnJhYygiLCAiIiwgIiki
KTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wSXNOYW46Ci0gICAgICAgICAgaWYg
KG5vZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSkKLSAgICAgICAgICAgICAgd3JpdGVFbXVs
YXRlZEZ1bmN0aW9uVHJpcGxldChvdXQsIHZpc2l0LCAiaXNuYW4oIik7Ci0gICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJpc25hbigiLCAiIiwg
IikiKTsKLSAgICAgICAgICBtUmVxdWlyZXNJRUVFU3RyaWN0Q29tcGlsaW5nID0gdHJ1ZTsKLSAg
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wSXNJbmY6Ci0gICAgICAgICAgb3V0cHV0VHJp
cGxldChvdXQsIHZpc2l0LCAiaXNpbmYoIiwgIiIsICIpIik7Ci0gICAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIEVPcEZsb2F0Qml0c1RvSW50OgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0
LCB2aXNpdCwgImFzaW50KCIsICIiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BGbG9hdEJpdHNUb1VpbnQ6Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0
LCAiYXN1aW50KCIsICIiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BJ
bnRCaXRzVG9GbG9hdDoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJhc2Zs
b2F0KCIsICIiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BVaW50Qml0
c1RvRmxvYXQ6Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiYXNmbG9hdCgi
LCAiIiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wUGFja1Nub3JtMngx
NjoKLSAgICAgICAgQVNTRVJUKG5vZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSk7Ci0gICAg
ICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBsZXQob3V0LCB2aXNpdCwgInBhY2tTbm9ybTJ4
MTYoIik7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BQYWNrVW5vcm0yeDE2OgotICAg
ICAgICBBU1NFUlQobm9kZS0+Z2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpKTsKLSAgICAgICAgd3Jp
dGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQsIHZpc2l0LCAicGFja1Vub3JtMngxNigiKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFBhY2tIYWxmMngxNjoKLSAgICAgICAgQVNT
RVJUKG5vZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSk7Ci0gICAgICAgIHdyaXRlRW11bGF0
ZWRGdW5jdGlvblRyaXBsZXQob3V0LCB2aXNpdCwgInBhY2tIYWxmMngxNigiKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIEVPcFVucGFja1Nub3JtMngxNjoKLSAgICAgICAgQVNTRVJUKG5v
ZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSk7Ci0gICAgICAgIHdyaXRlRW11bGF0ZWRGdW5j
dGlvblRyaXBsZXQob3V0LCB2aXNpdCwgInVucGFja1Nub3JtMngxNigiKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcFVucGFja1Vub3JtMngxNjoKLSAgICAgICAgQVNTRVJUKG5vZGUt
PmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSk7Ci0gICAgICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlv
blRyaXBsZXQob3V0LCB2aXNpdCwgInVucGFja1Vub3JtMngxNigiKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEVPcFVucGFja0hhbGYyeDE2OgotICAgICAgICBBU1NFUlQobm9kZS0+Z2V0
VXNlRW11bGF0ZWRGdW5jdGlvbigpKTsKLSAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJp
cGxldChvdXQsIHZpc2l0LCAidW5wYWNrSGFsZjJ4MTYoIik7Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBFT3BMZW5ndGg6Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAi
bGVuZ3RoKCIsICIiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BOb3Jt
YWxpemU6Ci0gICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAibm9ybWFsaXplKCIs
ICIiLCAiKSIpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BERmR4OgotICAgICAg
ICBpZihtSW5zaWRlRGlzY29udGludW91c0xvb3AgfHwgbU91dHB1dExvZDBGdW5jdGlvbikKLSAg
ICAgICAgewotICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIiLCAi
LCAwLjApIik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAg
ICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJkZHgoIiwgIiIsICIpIik7Ci0gICAgICAgIH0K
LSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcERGZHk6Ci0gICAgICAgIGlmKG1JbnNpZGVE
aXNjb250aW51b3VzTG9vcCB8fCBtT3V0cHV0TG9kMEZ1bmN0aW9uKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiIsICIsIDAuMCkiKTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIG91dHB1dFRyaXBs
ZXQob3V0LCB2aXNpdCwgImRkeSgiLCAiIiwgIikiKTsKLSAgICAgICAgfQotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRU9wRndpZHRoOgotICAgICAgICBpZihtSW5zaWRlRGlzY29udGludW91
c0xvb3AgfHwgbU91dHB1dExvZDBGdW5jdGlvbikKLSAgICAgICAgewotICAgICAgICAgICAgb3V0
cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIiLCAiLCAwLjApIik7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlz
aXQsICJmd2lkdGgoIiwgIiIsICIpIik7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcFRyYW5zcG9zZToKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQs
ICJ0cmFuc3Bvc2UoIiwgIiIsICIpIik7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVP
cERldGVybWluYW50OgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImRldGVy
bWluYW50KHRyYW5zcG9zZSgiLCAiIiwgIikpIik7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEVPcEludmVyc2U6Ci0gICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1bmN0
aW9uKCkpOwotICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91dCwgdmlzaXQs
ICJpbnZlcnNlKCIpOwotICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BBc2luaDoKKyAg
ICAgICAgY2FzZSBFT3BBY29zaDoKKyAgICAgICAgY2FzZSBFT3BBdGFuaDoKKyAgICAgICAgICAg
IEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkpOworICAgICAgICAgICAgd3Jp
dGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQsIHZpc2l0LCBub2RlLT5nZXRPcCgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEV4cDoKKyAgICAgICAgICAgIG91dHB1
dFRyaXBsZXQob3V0LCB2aXNpdCwgImV4cCgiLCAiIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEVPcExvZzoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2
aXNpdCwgImxvZygiLCAiIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEVPcEV4cDI6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJleHAyKCIs
ICIiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTG9nMjoKKyAg
ICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImxvZzIoIiwgIiIsICIpIik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BTcXJ0OgorICAgICAgICAgICAgb3V0
cHV0VHJpcGxldChvdXQsIHZpc2l0LCAic3FydCgiLCAiIiwgIikiKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEVPcEludmVyc2VTcXJ0OgorICAgICAgICAgICAgb3V0cHV0VHJp
cGxldChvdXQsIHZpc2l0LCAicnNxcnQoIiwgIiIsICIpIik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFT3BBYnM6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlz
aXQsICJhYnMoIiwgIiIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBF
T3BTaWduOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAic2lnbigiLCAi
IiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEZsb29yOgorICAg
ICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiZmxvb3IoIiwgIiIsICIpIik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BUcnVuYzoKKyAgICAgICAgICAgIG91
dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgInRydW5jKCIsICIiLCAiKSIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRU9wUm91bmQ6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0
KG91dCwgdmlzaXQsICJyb3VuZCgiLCAiIiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEVPcFJvdW5kRXZlbjoKKyAgICAgICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VF
bXVsYXRlZEZ1bmN0aW9uKCkpOworICAgICAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJp
cGxldChvdXQsIHZpc2l0LCBub2RlLT5nZXRPcCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIEVPcENlaWw6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQs
ICJjZWlsKCIsICIiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9w
RnJhY3Q6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJmcmFjKCIsICIi
LCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wSXNOYW46CisgICAg
ICAgICAgICBpZiAobm9kZS0+Z2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpKQorICAgICAgICAgICAg
ICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBsZXQob3V0LCB2aXNpdCwgbm9kZS0+Z2V0T3Ao
KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQs
IHZpc2l0LCAiaXNuYW4oIiwgIiIsICIpIik7CisgICAgICAgICAgICBtUmVxdWlyZXNJRUVFU3Ry
aWN0Q29tcGlsaW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVP
cElzSW5mOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiaXNpbmYoIiwg
IiIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BGbG9hdEJpdHNU
b0ludDoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImFzaW50KCIsICIi
LCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wRmxvYXRCaXRzVG9V
aW50OgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiYXN1aW50KCIsICIi
LCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wSW50Qml0c1RvRmxv
YXQ6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJhc2Zsb2F0KCIsICIi
LCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wVWludEJpdHNUb0Zs
b2F0OgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiYXNmbG9hdCgiLCAi
IiwgIikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcFBhY2tTbm9ybTJ4
MTY6CisgICAgICAgIGNhc2UgRU9wUGFja1Vub3JtMngxNjoKKyAgICAgICAgY2FzZSBFT3BQYWNr
SGFsZjJ4MTY6CisgICAgICAgIGNhc2UgRU9wVW5wYWNrU25vcm0yeDE2OgorICAgICAgICBjYXNl
IEVPcFVucGFja1Vub3JtMngxNjoKKyAgICAgICAgY2FzZSBFT3BVbnBhY2tIYWxmMngxNjoKKyAg
ICAgICAgY2FzZSBFT3BQYWNrVW5vcm00eDg6CisgICAgICAgIGNhc2UgRU9wUGFja1Nub3JtNHg4
OgorICAgICAgICBjYXNlIEVPcFVucGFja1Vub3JtNHg4OgorICAgICAgICBjYXNlIEVPcFVucGFj
a1Nub3JtNHg4OgorICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rp
b24oKSk7CisgICAgICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91dCwgdmlz
aXQsIG5vZGUtPmdldE9wKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9w
TGVuZ3RoOgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAibGVuZ3RoKCIs
ICIiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTm9ybWFsaXpl
OgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAibm9ybWFsaXplKCIsICIi
LCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wREZkeDoKKyAgICAg
ICAgICAgIGlmIChtSW5zaWRlRGlzY29udGludW91c0xvb3AgfHwgbU91dHB1dExvZDBGdW5jdGlv
bikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlz
aXQsICIoIiwgIiIsICIsIDAuMCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQs
ICJkZHgoIiwgIiIsICIpIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BERmR5OgorICAgICAgICAgICAgaWYgKG1JbnNpZGVEaXNjb250aW51b3Vz
TG9vcCB8fCBtT3V0cHV0TG9kMEZ1bmN0aW9uKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiIiwgIiwgMC4wKSIpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImRkeSgiLCAiIiwgIikiKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEZ3aWR0aDoKKyAgICAgICAg
ICAgIGlmIChtSW5zaWRlRGlzY29udGludW91c0xvb3AgfHwgbU91dHB1dExvZDBGdW5jdGlvbikK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQs
ICIoIiwgIiIsICIsIDAuMCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJm
d2lkdGgoIiwgIiIsICIpIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BUcmFuc3Bvc2U6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwg
dmlzaXQsICJ0cmFuc3Bvc2UoIiwgIiIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBFT3BEZXRlcm1pbmFudDoKKyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2
aXNpdCwgImRldGVybWluYW50KHRyYW5zcG9zZSgiLCAiIiwgIikpIik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBFT3BJbnZlcnNlOgorICAgICAgICAgICAgQVNTRVJUKG5vZGUt
PmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSk7CisgICAgICAgICAgICB3cml0ZUVtdWxhdGVkRnVu
Y3Rpb25UcmlwbGV0KG91dCwgdmlzaXQsIG5vZGUtPmdldE9wKCkpOworICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICAgIGNhc2UgRU9wQW55OgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2
aXNpdCwgImFueSgiLCAiIiwgIikiKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
QWxsOgotICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImFsbCgiLCAiIiwgIiki
KTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAg
ICAgIGNhc2UgRU9wQW55OgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAi
YW55KCIsICIiLCAiKSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQWxs
OgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiYWxsKCIsICIiLCAiKSIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTG9naWNhbE5vdENvbXBvbmVu
dFdpc2U6CisgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoISIsICIiLCAi
KSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQml0ZmllbGRSZXZlcnNl
OgorICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAicmV2ZXJzZWJpdHMoIiwg
IiIsICIpIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCaXRDb3VudDoK
KyAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImNvdW50Yml0cygiLCAiIiwg
IikiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEZpbmRMU0I6CisgICAg
ICAgICAgICAvLyBOb3RlIHRoYXQgaXQncyB1bmNsZWFyIGZyb20gdGhlIEhMU0wgZG9jcyB3aGF0
IHRoaXMgcmV0dXJucyBmb3IgMCwgYnV0IHRoaXMgaXMgdGVzdGVkCisgICAgICAgICAgICAvLyBp
biBHTFNMVGVzdCBhbmQgcmVzdWx0cyBhcmUgY29uc2lzdGVudCB3aXRoIEdMLgorICAgICAgICAg
ICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiZmlyc3RiaXRsb3coIiwgIiIsICIpIik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BGaW5kTVNCOgorICAgICAgICAgICAg
Ly8gTm90ZSB0aGF0IGl0J3MgdW5jbGVhciBmcm9tIHRoZSBITFNMIGRvY3Mgd2hhdCB0aGlzIHJl
dHVybnMgZm9yIDAgb3IgLTEsIGJ1dCB0aGlzIGlzCisgICAgICAgICAgICAvLyB0ZXN0ZWQgaW4g
R0xTTFRlc3QgYW5kIHJlc3VsdHMgYXJlIGNvbnNpc3RlbnQgd2l0aCBHTC4KKyAgICAgICAgICAg
IG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImZpcnN0Yml0aGlnaCgiLCAiIiwgIikiKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFC
TEUoKTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0NjUsOSArMTU4MCw5IEBAIGJv
b2wgT3V0cHV0SExTTDo6dmlzaXRGdW5jdGlvbkRlZmluaXRpb24oVmlzaXQgdmlzaXQsIFRJbnRl
cm1GdW5jdGlvbkRlZmluaXRpb24KICAgICBBU1NFUlQoaW5kZXggIT0gQ2FsbERBRzo6SW52YWxp
ZEluZGV4KTsKICAgICBtQ3VycmVudEZ1bmN0aW9uTWV0YWRhdGEgPSAmbUFTVE1ldGFkYXRhTGlz
dFtpbmRleF07CiAKLSAgICBvdXQgPDwgVHlwZVN0cmluZyhub2RlLT5nZXRUeXBlKCkpIDw8ICIg
IjsKKyAgICBvdXQgPDwgVHlwZVN0cmluZyhub2RlLT5nZXRGdW5jdGlvblByb3RvdHlwZSgpLT5n
ZXRUeXBlKCkpIDw8ICIgIjsKIAotICAgIFRJbnRlcm1TZXF1ZW5jZSAqcGFyYW1ldGVycyA9IG5v
ZGUtPmdldEZ1bmN0aW9uUGFyYW1ldGVycygpLT5nZXRTZXF1ZW5jZSgpOworICAgIFRJbnRlcm1T
ZXF1ZW5jZSAqcGFyYW1ldGVycyA9IG5vZGUtPmdldEZ1bmN0aW9uUHJvdG90eXBlKCktPmdldFNl
cXVlbmNlKCk7CiAKICAgICBpZiAobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmlzTWFp
bigpKQogICAgIHsKQEAgLTE0NzUsNyArMTU5MCw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRG
dW5jdGlvbkRlZmluaXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24K
ICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgb3V0IDw8IERlY29yYXRlRnVuY3Rpb25J
Zk5lZWRlZChub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZU9iaigpKQorICAg
ICAgICBvdXQgPDwgRGVjb3JhdGVJZk5lZWRlZChub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8o
KS0+Z2V0TmFtZU9iaigpKQogICAgICAgICAgICAgPDwgRGlzYW1iaWd1YXRlRnVuY3Rpb25OYW1l
KHBhcmFtZXRlcnMpIDw8IChtT3V0cHV0TG9kMEZ1bmN0aW9uID8gIkxvZDAoIiA6ICIoIik7CiAg
ICAgfQogCkBAIC0xNTE5LDE0MSArMTYzNCwxMzkgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEZ1
bmN0aW9uRGVmaW5pdGlvbihWaXNpdCB2aXNpdCwgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbgog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShW
aXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKK2Jvb2wgT3V0cHV0SExTTDo6dmlz
aXREZWNsYXJhdGlvbihWaXNpdCB2aXNpdCwgVEludGVybURlY2xhcmF0aW9uICpub2RlKQogewog
ICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IGdldEluZm9TaW5rKCk7Ci0KLSAgICBzd2l0Y2ggKG5v
ZGUtPmdldE9wKCkpCisgICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KQogICAgIHsKLSAgICAgICAg
Y2FzZSBFT3BEZWNsYXJhdGlvbjoKLSAgICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNl
ID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKLSAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnZh
cmlhYmxlICAgID0gKCpzZXF1ZW5jZSlbMF0tPmdldEFzVHlwZWQoKTsKLSAgICAgICAgICAgICAg
ICBBU1NFUlQoc2VxdWVuY2UtPnNpemUoKSA9PSAxKTsKKyAgICAgICAgVEludGVybVNlcXVlbmNl
ICpzZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7CisgICAgICAgIFRJbnRlcm1UeXBlZCAq
dmFyaWFibGUgICAgPSAoKnNlcXVlbmNlKVswXS0+Z2V0QXNUeXBlZCgpOworICAgICAgICBBU1NF
UlQoc2VxdWVuY2UtPnNpemUoKSA9PSAxKTsKIAotICAgICAgICAgICAgICAgIGlmICh2YXJpYWJs
ZSAmJgotICAgICAgICAgICAgICAgICAgICAodmFyaWFibGUtPmdldFF1YWxpZmllcigpID09IEV2
cVRlbXBvcmFyeSB8fAotICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPmdldFF1YWxpZmll
cigpID09IEV2cUdsb2JhbCB8fCB2YXJpYWJsZS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxQ29uc3Qp
KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZW5zdXJlU3RydWN0RGVm
aW5lZCh2YXJpYWJsZS0+Z2V0VHlwZSgpKTsKKyAgICAgICAgaWYgKHZhcmlhYmxlICYmCisgICAg
ICAgICAgICAodmFyaWFibGUtPmdldFF1YWxpZmllcigpID09IEV2cVRlbXBvcmFyeSB8fCB2YXJp
YWJsZS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxR2xvYmFsIHx8CisgICAgICAgICAgICAgdmFyaWFi
bGUtPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0KSkKKyAgICAgICAgeworICAgICAgICAgICAg
ZW5zdXJlU3RydWN0RGVmaW5lZCh2YXJpYWJsZS0+Z2V0VHlwZSgpKTsKIAotICAgICAgICAgICAg
ICAgICAgICBpZiAoIXZhcmlhYmxlLT5nZXRBc1N5bWJvbE5vZGUoKSB8fAotICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyaWFibGUtPmdldEFzU3ltYm9sTm9kZSgpLT5nZXRTeW1ib2woKSAhPSAi
IikgIC8vIFZhcmlhYmxlIGRlY2xhcmF0aW9uCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghbUluc2lkZUZ1bmN0aW9uKQotICAgICAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCAic3RhdGljICI7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXZhcmlhYmxlLT5n
ZXRBc1N5bWJvbE5vZGUoKSB8fAorICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRBc1N5bWJv
bE5vZGUoKS0+Z2V0U3ltYm9sKCkgIT0gIiIpICAvLyBWYXJpYWJsZSBkZWNsYXJhdGlvbgorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICghbUluc2lkZUZ1bmN0aW9uKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0IDw8ICJzdGF0aWMgIjsKKyAgICAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dCA8PCBUeXBlU3RyaW5n
KHZhcmlhYmxlLT5nZXRUeXBlKCkpICsgIiAiOworICAgICAgICAgICAgICAgIG91dCA8PCBUeXBl
U3RyaW5nKHZhcmlhYmxlLT5nZXRUeXBlKCkpICsgIiAiOwogCi0gICAgICAgICAgICAgICAgICAg
ICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSB2YXJpYWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCk7
CisgICAgICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gdmFyaWFibGUtPmdldEFz
U3ltYm9sTm9kZSgpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sKQotICAg
ICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJv
bC0+dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0IDw8IEFy
cmF5U3RyaW5nKHN5bWJvbC0+Z2V0VHlwZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBvdXQgPDwgIiA9ICIgKyBpbml0aWFsaXplcihzeW1ib2wtPmdldFR5cGUoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUt
PnRyYXZlcnNlKHRoaXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhcmlhYmxlLT5nZXRBc1N5
bWJvbE5vZGUoKSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0
QXNTeW1ib2xOb2RlKCktPmdldFN5bWJvbCgpID09Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiIikgIC8vIFR5cGUgKHN0cnVjdCkgZGVjbGFyYXRpb24KLSAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWxyZWFkeSBhZGRlZCB0byBjb25z
dHJ1Y3RvciBtYXAKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAg
ICAgIGlmIChzeW1ib2wpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBz
eW1ib2wtPnRyYXZlcnNlKHRoaXMpOworICAgICAgICAgICAgICAgICAgICBvdXQgPDwgQXJyYXlT
dHJpbmcoc3ltYm9sLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiA9
ICIgKyBpbml0aWFsaXplcihzeW1ib2wtPmdldFR5cGUoKSk7CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhcmlhYmxlICYmIElzVmFyeWluZ091dCh2YXJpYWJs
ZS0+Z2V0UXVhbGlmaWVyKCkpKQorICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoVEludGVybVNlcXVlbmNlOjppdGVyYXRvciBz
aXQgPSBzZXF1ZW5jZS0+YmVnaW4oKTsgc2l0ICE9IHNlcXVlbmNlLT5lbmQoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXQrKykKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gKCpzaXQpLT5nZXRBc1N5bWJv
bE5vZGUoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBWZXJ0ZXgg
KG91dHB1dCkgdmFyeWluZ3Mgd2hpY2ggYXJlIGRlY2xhcmVkIGJ1dCBub3Qgd3JpdHRlbiB0byBz
aG91bGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGlsbCBiZSBkZWNsYXJlZCB0
byBhbGxvdyBzdWNjZXNzZnVsIGxpbmtpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
UmVmZXJlbmNlZFZhcnlpbmdzW3N5bWJvbC0+Z2V0U3ltYm9sKCldID0gc3ltYm9sOwotICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqc2l0KS0+
dHJhdmVyc2UodGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPnRyYXZlcnNlKHRoaXMpOwog
ICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKHZpc2l0ID09IEluVmlzaXQpCisgICAgICAg
ICAgICBlbHNlIGlmICh2YXJpYWJsZS0+Z2V0QXNTeW1ib2xOb2RlKCkgJiYKKyAgICAgICAgICAg
ICAgICAgICAgIHZhcmlhYmxlLT5nZXRBc1N5bWJvbE5vZGUoKS0+Z2V0U3ltYm9sKCkgPT0gIiIp
ICAvLyBUeXBlIChzdHJ1Y3QpIGRlY2xhcmF0aW9uCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgb3V0IDw8ICIsICI7CisgICAgICAgICAgICAgICAgLy8gQWxyZWFkeSBhZGRlZCB0byBj
b25zdHJ1Y3RvciBtYXAKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEVPcEludmFyaWFudERlY2xhcmF0aW9uOgotICAgICAgICAgICAgLy8gRG8gbm90IGRv
IGFueSB0cmFuc2xhdGlvbgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjYXNl
IEVPcFByb3RvdHlwZToKLSAgICAgICAgICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UgaWYgKHZhcmlhYmxlICYmIElzVmFyeWluZ091dCh2YXJpYWJsZS0+Z2V0UXVh
bGlmaWVyKCkpKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKFRJbnRlcm1TZXF1ZW5jZTo6
aXRlcmF0b3Igc2l0ID0gc2VxdWVuY2UtPmJlZ2luKCk7IHNpdCAhPSBzZXF1ZW5jZS0+ZW5kKCk7
IHNpdCsrKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHNpemVfdCBpbmRleCA9IG1D
YWxsRGFnLmZpbmRJbmRleChub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKSk7Ci0gICAgICAg
ICAgICAgICAgLy8gU2tpcCB0aGUgcHJvdG90eXBlIGlmIGl0IGlzIG5vdCBpbXBsZW1lbnRlZCAo
YW5kIHRodXMgbm90IHVzZWQpCi0gICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IENhbGxEQUc6
OkludmFsaWRJbmRleCkKKyAgICAgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSAo
KnNpdCktPmdldEFzU3ltYm9sTm9kZSgpOworCisgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkK
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICAgICAgLy8gVmVydGV4IChvdXRwdXQpIHZhcnlpbmdzIHdoaWNoIGFyZSBk
ZWNsYXJlZCBidXQgbm90IHdyaXR0ZW4gdG8gc2hvdWxkCisgICAgICAgICAgICAgICAgICAgIC8v
IHN0aWxsIGJlIGRlY2xhcmVkIHRvIGFsbG93IHN1Y2Nlc3NmdWwgbGlua2luZworICAgICAgICAg
ICAgICAgICAgICBtUmVmZXJlbmNlZFZhcnlpbmdzW3N5bWJvbC0+Z2V0U3ltYm9sKCldID0gc3lt
Ym9sOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICAoKnNpdCktPnRyYXZlcnNlKHRoaXMpOwogICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7Cit9CiAKLSAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKmFyZ3VtZW50
cyA9IG5vZGUtPmdldFNlcXVlbmNlKCk7Citib29sIE91dHB1dEhMU0w6OnZpc2l0SW52YXJpYW50
RGVjbGFyYXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1JbnZhcmlhbnREZWNsYXJhdGlvbiAqbm9k
ZSkKK3sKKyAgICAvLyBEbyBub3QgZG8gYW55IHRyYW5zbGF0aW9uCisgICAgcmV0dXJuIGZhbHNl
OworfQogCi0gICAgICAgICAgICAgICAgVFN0cmluZyBuYW1lID0KLSAgICAgICAgICAgICAgICAg
ICAgRGVjb3JhdGVGdW5jdGlvbklmTmVlZGVkKG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygp
LT5nZXROYW1lT2JqKCkpOwotICAgICAgICAgICAgICAgIG91dCA8PCBUeXBlU3RyaW5nKG5vZGUt
PmdldFR5cGUoKSkgPDwgIiAiIDw8IG5hbWUKLSAgICAgICAgICAgICAgICAgICAgPDwgRGlzYW1i
aWd1YXRlRnVuY3Rpb25OYW1lKGFyZ3VtZW50cykgPDwgKG1PdXRwdXRMb2QwRnVuY3Rpb24gPyAi
TG9kMCgiIDogIigiKTsKK2Jvb2wgT3V0cHV0SExTTDo6dmlzaXRGdW5jdGlvblByb3RvdHlwZShW
aXNpdCB2aXNpdCwgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlICpub2RlKQoreworICAgIFRJbmZv
U2lua0Jhc2UgJm91dCA9IGdldEluZm9TaW5rKCk7CiAKLSAgICAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGludCBpID0gMDsgaSA8IGFyZ3VtZW50cy0+c2l6ZSgpOyBpKyspCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSAoKmFy
Z3VtZW50cylbaV0tPmdldEFzU3ltYm9sTm9kZSgpOworICAgIEFTU0VSVCh2aXNpdCA9PSBQcmVW
aXNpdCk7CisgICAgc2l6ZV90IGluZGV4ID0gbUNhbGxEYWcuZmluZEluZGV4KG5vZGUtPmdldEZ1
bmN0aW9uU3ltYm9sSW5mbygpKTsKKyAgICAvLyBTa2lwIHRoZSBwcm90b3R5cGUgaWYgaXQgaXMg
bm90IGltcGxlbWVudGVkIChhbmQgdGh1cyBub3QgdXNlZCkKKyAgICBpZiAoaW5kZXggPT0gQ2Fs
bERBRzo6SW52YWxpZEluZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
IAotICAgICAgICAgICAgICAgICAgICBpZiAoc3ltYm9sKQotICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXQgPDwgYXJndW1lbnRTdHJpbmcoc3ltYm9sKTsK
KyAgICBUSW50ZXJtU2VxdWVuY2UgKmFyZ3VtZW50cyA9IG5vZGUtPmdldFNlcXVlbmNlKCk7CiAK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpIDwgYXJndW1lbnRzLT5zaXplKCkgLSAxKQot
ICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91
dCA8PCAiLCAiOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgfQorICAgIFRTdHJpbmcgbmFtZSA9IERlY29y
YXRlSWZOZWVkZWQobm9kZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWVPYmooKSk7
CisgICAgb3V0IDw8IFR5cGVTdHJpbmcobm9kZS0+Z2V0VHlwZSgpKSA8PCAiICIgPDwgbmFtZSA8
PCBEaXNhbWJpZ3VhdGVGdW5jdGlvbk5hbWUoYXJndW1lbnRzKQorICAgICAgICA8PCAobU91dHB1
dExvZDBGdW5jdGlvbiA/ICJMb2QwKCIgOiAiKCIpOwogCi0gICAgICAgICAgICAgICAgb3V0IDw8
ICIpO1xuIjsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGFyZ3VtZW50cy0+c2l6
ZSgpOyBpKyspCisgICAgeworICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSAoKmFyZ3Vt
ZW50cylbaV0tPmdldEFzU3ltYm9sTm9kZSgpOworICAgICAgICBBU1NFUlQoc3ltYm9sICE9IG51
bGxwdHIpOwogCi0gICAgICAgICAgICAgICAgLy8gQWxzbyBwcm90b3R5cGUgdGhlIExvZDAgdmFy
aWFudCBpZiBuZWVkZWQKLSAgICAgICAgICAgICAgICBib29sIG5lZWRzTG9kMCA9IG1BU1RNZXRh
ZGF0YUxpc3RbaW5kZXhdLm1OZWVkc0xvZDA7Ci0gICAgICAgICAgICAgICAgaWYgKG5lZWRzTG9k
MCAmJiAhbU91dHB1dExvZDBGdW5jdGlvbiAmJiBtU2hhZGVyVHlwZSA9PSBHTF9GUkFHTUVOVF9T
SEFERVIpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBtT3V0cHV0TG9k
MEZ1bmN0aW9uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+dHJhdmVyc2UodGhp
cyk7Ci0gICAgICAgICAgICAgICAgICAgIG1PdXRwdXRMb2QwRnVuY3Rpb24gPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgIG91dCA8PCBhcmd1bWVudFN0cmluZyhzeW1ib2wpOwog
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wRnVuY3Rpb25DYWxsOgorICAgICAgICBpZiAoaSA8
IGFyZ3VtZW50cy0+c2l6ZSgpIC0gMSkKKyAgICAgICAgeworICAgICAgICAgICAgb3V0IDw8ICIs
ICI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBvdXQgPDwgIik7XG4iOworCisgICAgLy8gQWxz
byBwcm90b3R5cGUgdGhlIExvZDAgdmFyaWFudCBpZiBuZWVkZWQKKyAgICBib29sIG5lZWRzTG9k
MCA9IG1BU1RNZXRhZGF0YUxpc3RbaW5kZXhdLm1OZWVkc0xvZDA7CisgICAgaWYgKG5lZWRzTG9k
MCAmJiAhbU91dHB1dExvZDBGdW5jdGlvbiAmJiBtU2hhZGVyVHlwZSA9PSBHTF9GUkFHTUVOVF9T
SEFERVIpCisgICAgeworICAgICAgICBtT3V0cHV0TG9kMEZ1bmN0aW9uID0gdHJ1ZTsKKyAgICAg
ICAgbm9kZS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgIG1PdXRwdXRMb2QwRnVuY3Rpb24gPSBm
YWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgT3V0cHV0SExTTDo6
dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCit7Cisg
ICAgVEluZm9TaW5rQmFzZSAmb3V0ID0gZ2V0SW5mb1NpbmsoKTsKKworICAgIHN3aXRjaCAobm9k
ZS0+Z2V0T3AoKSkKKyAgICB7CisgICAgICAgIGNhc2UgRU9wQ2FsbEJ1aWx0SW5GdW5jdGlvbjoK
KyAgICAgICAgY2FzZSBFT3BDYWxsRnVuY3Rpb25JbkFTVDoKKyAgICAgICAgY2FzZSBFT3BDYWxs
SW50ZXJuYWxSYXdGdW5jdGlvbjoKICAgICAgICAgewogICAgICAgICAgICAgVEludGVybVNlcXVl
bmNlICphcmd1bWVudHMgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOwogCiAgICAgICAgICAgICBib29s
IGxvZDAgPSBtSW5zaWRlRGlzY29udGludW91c0xvb3AgfHwgbU91dHB1dExvZDBGdW5jdGlvbjsK
LSAgICAgICAgICAgIGlmIChub2RlLT5pc1VzZXJEZWZpbmVkKCkpCisgICAgICAgICAgICBpZiAo
bm9kZS0+Z2V0T3AoKSA9PSBFT3BDYWxsRnVuY3Rpb25JbkFTVCkKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBpZiAobm9kZS0+aXNBcnJheSgpKQogICAgICAgICAgICAgICAgIHsKQEAg
LTE2NjMsMjEgKzE3NzYsMjUgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNp
dCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKICAgICAgICAgICAgICAgICBBU1NFUlQo
aW5kZXggIT0gQ2FsbERBRzo6SW52YWxpZEluZGV4KTsKICAgICAgICAgICAgICAgICBsb2QwICY9
IG1BU1RNZXRhZGF0YUxpc3RbaW5kZXhdLm1OZWVkc0xvZDA7CiAKLSAgICAgICAgICAgICAgICBv
dXQgPDwgRGVjb3JhdGVGdW5jdGlvbklmTmVlZGVkKG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5m
bygpLT5nZXROYW1lT2JqKCkpOworICAgICAgICAgICAgICAgIG91dCA8PCBEZWNvcmF0ZUlmTmVl
ZGVkKG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lT2JqKCkpOwogICAgICAg
ICAgICAgICAgIG91dCA8PCBEaXNhbWJpZ3VhdGVGdW5jdGlvbk5hbWUobm9kZS0+Z2V0U2VxdWVu
Y2UoKSk7CiAgICAgICAgICAgICAgICAgb3V0IDw8IChsb2QwID8gIkxvZDAoIiA6ICIoIik7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChub2RlLT5nZXRGdW5jdGlvblN5bWJv
bEluZm8oKS0+Z2V0TmFtZU9iaigpLmlzSW50ZXJuYWwoKSkKKyAgICAgICAgICAgIGVsc2UgaWYg
KG5vZGUtPmdldE9wKCkgPT0gRU9wQ2FsbEludGVybmFsUmF3RnVuY3Rpb24pCiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgLy8gVGhpcyBwYXRoIGlzIHVzZWQgZm9yIGludGVybmFsIGZ1
bmN0aW9ucyB0aGF0IGRvbid0IGhhdmUgdGhlaXIgZGVmaW5pdGlvbnMgaW4gdGhlCiAgICAgICAg
ICAgICAgICAgLy8gQVNULCBzdWNoIGFzIHByZWNpc2lvbiBlbXVsYXRpb24gZnVuY3Rpb25zLgot
ICAgICAgICAgICAgICAgIG91dCA8PCBEZWNvcmF0ZUZ1bmN0aW9uSWZOZWVkZWQobm9kZS0+Z2V0
RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWVPYmooKSkgPDwgIigiOworICAgICAgICAgICAg
ICAgIG91dCA8PCBEZWNvcmF0ZUlmTmVlZGVkKG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygp
LT5nZXROYW1lT2JqKCkpIDw8ICIoIjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBUU3RyaW5nIG5hbWUgPSBURnVuY3Rpb246
OnVubWFuZ2xlTmFtZShub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZSgpKTsK
KyAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZuYW1lICAgID0gbm9kZS0+Z2V0RnVuY3Rp
b25TeW1ib2xJbmZvKCktPmdldE5hbWUoKTsKICAgICAgICAgICAgICAgICBUQmFzaWNUeXBlIHNh
bXBsZXJUeXBlID0gKCphcmd1bWVudHMpWzBdLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKS5nZXRC
YXNpY1R5cGUoKTsKLSAgICAgICAgICAgICAgICBpbnQgY29vcmRzICAgICAgICAgICAgICAgICAg
PSAoKmFyZ3VtZW50cylbMV0tPmdldEFzVHlwZWQoKS0+Z2V0Tm9taW5hbFNpemUoKTsKKyAgICAg
ICAgICAgICAgICBpbnQgY29vcmRzID0gMDsgIC8vIHRleHR1cmVTaXplKGdzYW1wbGVyMkRNUykg
ZG9lc24ndCBoYXZlIGEgc2Vjb25kIGFyZ3VtZW50LgorICAgICAgICAgICAgICAgIGlmIChhcmd1
bWVudHMtPnNpemUoKSA+IDEpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBjb29yZHMgPSAoKmFyZ3VtZW50cylbMV0tPmdldEFzVHlwZWQoKS0+Z2V0Tm9taW5hbFNpemUo
KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgVFN0cmluZyB0ZXh0dXJlRnVu
Y3Rpb25OYW1lID0gbVRleHR1cmVGdW5jdGlvbkhMU0wtPnVzZVRleHR1cmVGdW5jdGlvbigKICAg
ICAgICAgICAgICAgICAgICAgbmFtZSwgc2FtcGxlclR5cGUsIGNvb3JkcywgYXJndW1lbnRzLT5z
aXplKCksIGxvZDAsIG1TaGFkZXJUeXBlKTsKICAgICAgICAgICAgICAgICBvdXQgPDwgdGV4dHVy
ZUZ1bmN0aW9uTmFtZSA8PCAiKCI7CkBAIC0xNzI5LDkgKzE4NDYsNiBAQCBib29sIE91dHB1dEhM
U0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQog
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBFT3BQ
YXJhbWV0ZXJzOgotICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIs
ICIsICIpXG57XG4iKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVPcENvbnN0
cnVjdEZsb2F0OgogICAgICAgICAgICAgb3V0cHV0Q29uc3RydWN0b3Iob3V0LCB2aXNpdCwgbm9k
ZS0+Z2V0VHlwZSgpLCAidmVjMSIsIG5vZGUtPmdldFNlcXVlbmNlKCkpOwogICAgICAgICAgICAg
YnJlYWs7CkBAIC0xODE4LDI3ICsxOTMyLDI3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dy
ZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCiAgICAgICAgICAgICBv
dXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsIChzdHJ1Y3ROYW1lICsgIl9jdG9yKCIpLmNfc3RyKCks
ICIsICIsICIpIik7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9w
TGVzc1RoYW46CisgICAgICAgIGNhc2UgRU9wRXF1YWxDb21wb25lbnRXaXNlOgorICAgICAgICAg
ICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgPT0gIiwgIikiKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcE5vdEVxdWFsQ29tcG9uZW50V2lzZToKKyAgICAg
ICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIigiLCAiICE9ICIsICIpIik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BMZXNzVGhhbkNvbXBvbmVudFdpc2U6CiAg
ICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiA8ICIsICIpIik7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbjoKKyAgICAgICAg
Y2FzZSBFT3BHcmVhdGVyVGhhbkNvbXBvbmVudFdpc2U6CiAgICAgICAgICAgICBvdXRwdXRUcmlw
bGV0KG91dCwgdmlzaXQsICIoIiwgIiA+ICIsICIpIik7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFsOgorICAgICAgICBjYXNlIEVPcExlc3NUaGFuRXF1
YWxDb21wb25lbnRXaXNlOgogICAgICAgICAgICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAi
KCIsICIgPD0gIiwgIikiKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVPcEdy
ZWF0ZXJUaGFuRXF1YWw6CisgICAgICAgIGNhc2UgRU9wR3JlYXRlclRoYW5FcXVhbENvbXBvbmVu
dFdpc2U6CiAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiA+PSAi
LCAiKSIpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wVmVjdG9yRXF1YWw6
Ci0gICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiA9PSAiLCAiKSIp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRU9wVmVjdG9yTm90RXF1YWw6Ci0g
ICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICIoIiwgIiAhPSAiLCAiKSIpOwot
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRU9wTW9kOgogICAgICAgICAgICAgQVNT
RVJUKG5vZGUtPmdldFVzZUVtdWxhdGVkRnVuY3Rpb24oKSk7Ci0gICAgICAgICAgICB3cml0ZUVt
dWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91dCwgdmlzaXQsICJtb2QoIik7CisgICAgICAgICAgICB3
cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91dCwgdmlzaXQsIG5vZGUtPmdldE9wKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRU9wTW9kZjoKICAgICAgICAgICAgIG91
dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgIm1vZGYoIiwgIiwgIiwgIikiKTsKQEAgLTE4NDksNyAr
MTk2Myw3IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJ
bnRlcm1BZ2dyZWdhdGUgKm5vZGUpCiAgICAgICAgIGNhc2UgRU9wQXRhbjoKICAgICAgICAgICAg
IEFTU0VSVChub2RlLT5nZXRTZXF1ZW5jZSgpLT5zaXplKCkgPT0gMik7ICAvLyBhdGFuKHgpIGlz
IGEgdW5hcnkgb3BlcmF0b3IKICAgICAgICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRl
ZEZ1bmN0aW9uKCkpOwotICAgICAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChv
dXQsIHZpc2l0LCAiYXRhbigiKTsKKyAgICAgICAgICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRy
aXBsZXQob3V0LCB2aXNpdCwgbm9kZS0+Z2V0T3AoKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBFT3BNaW46CiAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQs
ICJtaW4oIiwgIiwgIiwgIikiKTsKQEAgLTE4NjUsMTAgKzE5NzksMTEgQEAgYm9vbCBPdXRwdXRI
TFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkK
ICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqbGFzdFBhcmFtTm9kZSA9ICgqKG5vZGUtPmdldFNl
cXVlbmNlKCkpKVsyXS0+Z2V0QXNUeXBlZCgpOwogICAgICAgICAgICAgaWYgKGxhc3RQYXJhbU5v
ZGUtPmdldFR5cGUoKS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sKQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIEhMU0wgZXF1aXZhbGVudCBmb3IgRVNTTDMg
YnVpbHQtaW4gImdlblR5cGUgbWl4IChnZW5UeXBlIHgsIGdlblR5cGUgeSwgZ2VuQlR5cGUgYSki
LAorICAgICAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIEhMU0wgZXF1aXZhbGVudCBmb3IgRVNT
TDMgYnVpbHQtaW4gImdlblR5cGUgbWl4IChnZW5UeXBlIHgsIGdlblR5cGUKKyAgICAgICAgICAg
ICAgICAvLyB5LCBnZW5CVHlwZSBhKSIsCiAgICAgICAgICAgICAgICAgLy8gc28gdXNlIGVtdWxh
dGVkIHZlcnNpb24uCiAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmdldFVzZUVtdWxhdGVk
RnVuY3Rpb24oKSk7Ci0gICAgICAgICAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxl
dChvdXQsIHZpc2l0LCAibWl4KCIpOworICAgICAgICAgICAgICAgIHdyaXRlRW11bGF0ZWRGdW5j
dGlvblRyaXBsZXQob3V0LCB2aXNpdCwgbm9kZS0+Z2V0T3AoKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7CkBAIC0xODgyLDYgKzE5OTcsMTEgQEAgYm9v
bCBPdXRwdXRITFNMOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0
ZSAqbm9kZSkKICAgICAgICAgY2FzZSBFT3BTbW9vdGhTdGVwOgogICAgICAgICAgICAgb3V0cHV0
VHJpcGxldChvdXQsIHZpc2l0LCAic21vb3Roc3RlcCgiLCAiLCAiLCAiKSIpOwogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wRnJleHA6CisgICAgICAgIGNhc2UgRU9wTGRleHA6
CisgICAgICAgICAgICBBU1NFUlQobm9kZS0+Z2V0VXNlRW11bGF0ZWRGdW5jdGlvbigpKTsKKyAg
ICAgICAgICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBsZXQob3V0LCB2aXNpdCwgbm9kZS0+
Z2V0T3AoKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFT3BEaXN0YW5jZToK
ICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImRpc3RhbmNlKCIsICIsICIs
ICIpIik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE4OTMsNyArMjAxMyw3IEBAIGJvb2wgT3V0
cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5v
ZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFT3BGYWNlRm9yd2FyZDoKICAg
ICAgICAgICAgIEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkpOwotICAgICAg
ICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQsIHZpc2l0LCAiZmFjZWZvcndh
cmQoIik7CisgICAgICAgICAgICB3cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KG91dCwgdmlz
aXQsIG5vZGUtPmdldE9wKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRU9w
UmVmbGVjdDoKICAgICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgInJlZmxlY3Qo
IiwgIiwgIiwgIikiKTsKQEAgLTE5MDMsMTEgKzIwMjMsMjAgQEAgYm9vbCBPdXRwdXRITFNMOjp2
aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVPcE91dGVyUHJvZHVjdDoKICAgICAgICAgICAg
IEFTU0VSVChub2RlLT5nZXRVc2VFbXVsYXRlZEZ1bmN0aW9uKCkpOwotICAgICAgICAgICAgd3Jp
dGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQsIHZpc2l0LCAib3V0ZXJQcm9kdWN0KCIpOwor
ICAgICAgICAgICAgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChvdXQsIHZpc2l0LCBub2Rl
LT5nZXRPcCgpKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEVPcE11bDoKKyAg
ICAgICAgY2FzZSBFT3BNdWxNYXRyaXhDb21wb25lbnRXaXNlOgogICAgICAgICAgICAgb3V0cHV0
VHJpcGxldChvdXQsIHZpc2l0LCAiKCIsICIgKiAiLCAiKSIpOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRU9wQml0ZmllbGRFeHRyYWN0OgorICAgICAgICBjYXNlIEVPcEJpdGZp
ZWxkSW5zZXJ0OgorICAgICAgICBjYXNlIEVPcFVhZGRDYXJyeToKKyAgICAgICAgY2FzZSBFT3BV
c3ViQm9ycm93OgorICAgICAgICBjYXNlIEVPcFVtdWxFeHRlbmRlZDoKKyAgICAgICAgY2FzZSBF
T3BJbXVsRXh0ZW5kZWQ6CisgICAgICAgICAgICBBU1NFUlQobm9kZS0+Z2V0VXNlRW11bGF0ZWRG
dW5jdGlvbigpKTsKKyAgICAgICAgICAgIHdyaXRlRW11bGF0ZWRGdW5jdGlvblRyaXBsZXQob3V0
LCB2aXNpdCwgbm9kZS0+Z2V0T3AoKSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQpAQCAtMTk5Nyw3ICsyMTI2
LDggQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdFN3aXRjaChWaXNpdCB2aXNpdCwgVEludGVybVN3
aXRjaCAqbm9kZSkKIAogICAgIGlmIChub2RlLT5nZXRTdGF0ZW1lbnRMaXN0KCkpCiAgICAgewot
ICAgICAgICBub2RlLT5zZXRTdGF0ZW1lbnRMaXN0KFJlbW92ZVN3aXRjaEZhbGxUaHJvdWdoOjpy
ZW1vdmVGYWxsVGhyb3VnaChub2RlLT5nZXRTdGF0ZW1lbnRMaXN0KCkpKTsKKyAgICAgICAgbm9k
ZS0+c2V0U3RhdGVtZW50TGlzdCgKKyAgICAgICAgICAgIFJlbW92ZVN3aXRjaEZhbGxUaHJvdWdo
OjpyZW1vdmVGYWxsVGhyb3VnaChub2RlLT5nZXRTdGF0ZW1lbnRMaXN0KCkpKTsKICAgICAgICAg
b3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAic3dpdGNoICgiLCAiKSAiLCAiIik7CiAgICAgICAg
IC8vIFRoZSBjdXJseSBicmFjZXMgZ2V0IHdyaXR0ZW4gd2hlbiB2aXNpdGluZyB0aGUgc3RhdGVt
ZW50TGlzdCBhZ2dyZWdhdGUKICAgICB9CkBAIC0yMDM2LDggKzIxNjYsOCBAQCBib29sIE91dHB1
dEhMU0w6OnZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AgKm5vZGUpCiAgICAgbU5l
c3RlZExvb3BEZXB0aCsrOwogCiAgICAgYm9vbCB3YXNEaXNjb250aW51b3VzID0gbUluc2lkZURp
c2NvbnRpbnVvdXNMb29wOwotICAgIG1JbnNpZGVEaXNjb250aW51b3VzTG9vcCA9IG1JbnNpZGVE
aXNjb250aW51b3VzTG9vcCB8fAotICAgIG1DdXJyZW50RnVuY3Rpb25NZXRhZGF0YS0+bURpc2Nv
bnRpbnVvdXNMb29wcy5jb3VudChub2RlKSA+IDA7CisgICAgbUluc2lkZURpc2NvbnRpbnVvdXNM
b29wID0KKyAgICAgICAgbUluc2lkZURpc2NvbnRpbnVvdXNMb29wIHx8IG1DdXJyZW50RnVuY3Rp
b25NZXRhZGF0YS0+bURpc2NvbnRpbnVvdXNMb29wcy5jb3VudChub2RlKSA+IDA7CiAKICAgICBU
SW5mb1NpbmtCYXNlICZvdXQgPSBnZXRJbmZvU2luaygpOwogCkBAIC0yMTI1LDkzICsyMjU1LDYy
IEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRCcmFuY2goVmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFu
Y2ggKm5vZGUpCiAKICAgICBzd2l0Y2ggKG5vZGUtPmdldEZsb3dPcCgpKQogICAgIHsKLSAgICAg
IGNhc2UgRU9wS2lsbDoKLSAgICAgICAgICBvdXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsICJkaXNj
YXJkO1xuIiwgIiIsICIiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEJyZWFrOgot
ICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChtTmVzdGVkTG9vcERlcHRoID4gMSkKKyAgICAgICAgY2FzZSBFT3BLaWxsOgorICAgICAgICAg
ICAgb3V0cHV0VHJpcGxldChvdXQsIHZpc2l0LCAiZGlzY2FyZDtcbiIsICIiLCAiIik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BCcmVhazoKKyAgICAgICAgICAgIGlmICh2
aXNpdCA9PSBQcmVWaXNpdCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtVXNlc05l
c3RlZEJyZWFrID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobU5l
c3RlZExvb3BEZXB0aCA+IDEpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBtVXNlc05lc3RlZEJyZWFrID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIGlmIChtRXhjZXNzaXZlTG9vcEluZGV4KQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIG91dCA8PCAie0JyZWFrIjsKLSAgICAgICAgICAgICAgICBtRXhjZXNzaXZlTG9vcEluZGV4
LT50cmF2ZXJzZSh0aGlzKTsKLSAgICAgICAgICAgICAgICBvdXQgPDwgIiA9IHRydWU7IGJyZWFr
O31cbiI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgb3V0IDw8ICJicmVhaztcbiI7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcENvbnRpbnVlOgotICAgICAgICAgIG91
dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImNvbnRpbnVlO1xuIiwgIiIsICIiKTsKLSAgICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgRU9wUmV0dXJuOgotICAgICAgICBpZiAodmlzaXQgPT0gUHJl
VmlzaXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5nZXRFeHByZXNzaW9uKCkp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0IDw8ICJyZXR1cm4gIjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBvdXQgPDwgInJldHVybjtcbiI7CisgICAgICAgICAgICAgICAgaWYgKG1FeGNlc3NpdmVMb29w
SW5kZXgpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIntC
cmVhayI7CisgICAgICAgICAgICAgICAgICAgIG1FeGNlc3NpdmVMb29wSW5kZXgtPnRyYXZlcnNl
KHRoaXMpOworICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIiA9IHRydWU7IGJyZWFrO31cbiI7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAiYnJlYWs7XG4iOworICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICh2aXNpdCA9
PSBQb3N0VmlzaXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2RlLT5nZXRFeHByZXNz
aW9uKCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDb250aW51ZToKKyAg
ICAgICAgICAgIG91dHB1dFRyaXBsZXQob3V0LCB2aXNpdCwgImNvbnRpbnVlO1xuIiwgIiIsICIi
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcFJldHVybjoKKyAgICAgICAg
ICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBvdXQgPDwgIjtcbiI7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldEV4cHJlc3Npb24o
KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAicmV0dXJu
ICI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIG91dCA8PCAicmV0dXJuO1xuIjsKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQot
Ci1ib29sIE91dHB1dEhMU0w6OmlzU2luZ2xlU3RhdGVtZW50KFRJbnRlcm1Ob2RlICpub2RlKQot
ewotICAgIGlmIChub2RlLT5nZXRBc0Jsb2NrKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRlID0gbm9kZS0+Z2V0
QXNBZ2dyZWdhdGUoKTsKLSAgICBpZiAoYWdncmVnYXRlKQotICAgIHsKLSAgICAgICAgaWYgKGFn
Z3JlZ2F0ZS0+Z2V0T3AoKSA9PSBFT3BEZWNsYXJhdGlvbikKLSAgICAgICAgewotICAgICAgICAg
ICAgLy8gRGVjbGFyaW5nIG11bHRpcGxlIGNvbW1hLXNlcGFyYXRlZCB2YXJpYWJsZXMgbXVzdCBi
ZSBjb25zaWRlcmVkIG11bHRpcGxlIHN0YXRlbWVudHMKLSAgICAgICAgICAgIC8vIGJlY2F1c2Ug
ZWFjaCBpbmRpdmlkdWFsIGRlY2xhcmF0aW9uIGhhcyBzaWRlIGVmZmVjdHMgd2hpY2ggYXJlIHZp
c2libGUgaW4gdGhlIG5leHQuCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKFRJbnRlcm1TZXF1ZW5j
ZTo6aXRlcmF0b3Igc2l0ID0gYWdncmVnYXRlLT5nZXRTZXF1ZW5jZSgpLT5iZWdpbigpOyBzaXQg
IT0gYWdncmVnYXRlLT5nZXRTZXF1ZW5jZSgpLT5lbmQoKTsgc2l0KyspCisgICAgICAgICAgICBl
bHNlIGlmICh2aXNpdCA9PSBQb3N0VmlzaXQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFpc1NpbmdsZVN0YXRlbWVudCgqc2l0KSkKKyAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+Z2V0RXhwcmVzc2lvbigpKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBvdXQgPDwgIjtcbiI7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQogCiAvLyBI
YW5kbGUgbG9vcHMgd2l0aCBtb3JlIHRoYW4gMjU0IGl0ZXJhdGlvbnMgKHVuc3VwcG9ydGVkIGJ5
IEQzRDkpIGJ5IHNwbGl0dGluZyB0aGVtCi0vLyAoVGhlIEQzRCBkb2N1bWVudGF0aW9uIHNheXMg
MjU1IGl0ZXJhdGlvbnMsIGJ1dCB0aGUgY29tcGlsZXIgY29tcGxhaW5zIGF0IGFueXRoaW5nIG1v
cmUgdGhhbiAyNTQpLgorLy8gKFRoZSBEM0QgZG9jdW1lbnRhdGlvbiBzYXlzIDI1NSBpdGVyYXRp
b25zLCBidXQgdGhlIGNvbXBpbGVyIGNvbXBsYWlucyBhdCBhbnl0aGluZyBtb3JlIHRoYW4KKy8v
IDI1NCkuCiBib29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluZm9TaW5rQmFz
ZSAmb3V0LCBUSW50ZXJtTG9vcCAqbm9kZSkKIHsKICAgICBjb25zdCBpbnQgTUFYX0xPT1BfSVRF
UkFUSU9OUyA9IDI1NDsKQEAgLTIyMjAsMTkgKzIzMTksMTkgQEAgYm9vbCBPdXRwdXRITFNMOjpo
YW5kbGVFeGNlc3NpdmVMb29wKFRJbmZvU2lua0Jhc2UgJm91dCwgVEludGVybUxvb3AgKm5vZGUp
CiAgICAgLy8gZm9yKGludCBpbmRleCA9IGluaXRpYWw7IGluZGV4IFtjb21wYXJhdG9yXSBsaW1p
dDsgaW5kZXggKz0gaW5jcmVtZW50KQogICAgIFRJbnRlcm1TeW1ib2wgKmluZGV4ID0gTlVMTDsK
ICAgICBUT3BlcmF0b3IgY29tcGFyYXRvciA9IEVPcE51bGw7Ci0gICAgaW50IGluaXRpYWwgPSAw
OwotICAgIGludCBsaW1pdCA9IDA7Ci0gICAgaW50IGluY3JlbWVudCA9IDA7CisgICAgaW50IGlu
aXRpYWwgICAgICAgICAgPSAwOworICAgIGludCBsaW1pdCAgICAgICAgICAgID0gMDsKKyAgICBp
bnQgaW5jcmVtZW50ICAgICAgICA9IDA7CiAKICAgICAvLyBQYXJzZSBpbmRleCBuYW1lIGFuZCBp
bnRpYWwgdmFsdWUKICAgICBpZiAobm9kZS0+Z2V0SW5pdCgpKQogICAgIHsKLSAgICAgICAgVElu
dGVybUFnZ3JlZ2F0ZSAqaW5pdCA9IG5vZGUtPmdldEluaXQoKS0+Z2V0QXNBZ2dyZWdhdGUoKTsK
KyAgICAgICAgVEludGVybURlY2xhcmF0aW9uICppbml0ID0gbm9kZS0+Z2V0SW5pdCgpLT5nZXRB
c0RlY2xhcmF0aW9uTm9kZSgpOwogCiAgICAgICAgIGlmIChpbml0KQogICAgICAgICB7CiAgICAg
ICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlID0gaW5pdC0+Z2V0U2VxdWVuY2UoKTsK
LSAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqdmFyaWFibGUgPSAoKnNlcXVlbmNlKVswXS0+Z2V0
QXNUeXBlZCgpOworICAgICAgICAgICAgVEludGVybVR5cGVkICp2YXJpYWJsZSAgICA9ICgqc2Vx
dWVuY2UpWzBdLT5nZXRBc1R5cGVkKCk7CiAKICAgICAgICAgICAgIGlmICh2YXJpYWJsZSAmJiB2
YXJpYWJsZS0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxVGVtcG9yYXJ5KQogICAgICAgICAgICAgewpA
QCAtMjI0MCwxNCArMjMzOSwxNCBAQCBib29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxv
b3AoVEluZm9TaW5rQmFzZSAmb3V0LCBUSW50ZXJtTG9vcCAqbm9kZSkKIAogICAgICAgICAgICAg
ICAgIGlmIChhc3NpZ24tPmdldE9wKCkgPT0gRU9wSW5pdGlhbGl6ZSkKICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGFzc2lnbi0+
Z2V0TGVmdCgpLT5nZXRBc1N5bWJvbE5vZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgVEludGVy
bVN5bWJvbCAqc3ltYm9sICAgICAgICAgID0gYXNzaWduLT5nZXRMZWZ0KCktPmdldEFzU3ltYm9s
Tm9kZSgpOwogICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqY29uc3Rh
bnQgPSBhc3NpZ24tPmdldFJpZ2h0KCktPmdldEFzQ29uc3RhbnRVbmlvbigpOwogCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChzeW1ib2wgJiYgY29uc3RhbnQpCiAgICAgICAgICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0QmFzaWNUeXBlKCkg
PT0gRWJ0SW50ICYmIGNvbnN0YW50LT5pc1NjYWxhcigpKQogICAgICAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gc3ltYm9sOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGV4ICAgPSBzeW1ib2w7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW5pdGlhbCA9IGNvbnN0YW50LT5nZXRJQ29uc3QoMCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTIyNzAsNyArMjM2OSw3
IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcChUSW5mb1NpbmtCYXNlICZv
dXQsIFRJbnRlcm1Mb29wICpub2RlKQogICAgICAgICAgICAgICAgIGlmIChjb25zdGFudC0+Z2V0
QmFzaWNUeXBlKCkgPT0gRWJ0SW50ICYmIGNvbnN0YW50LT5pc1NjYWxhcigpKQogICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgY29tcGFyYXRvciA9IHRlc3QtPmdldE9wKCk7
Ci0gICAgICAgICAgICAgICAgICAgIGxpbWl0ID0gY29uc3RhbnQtPmdldElDb25zdCgwKTsKKyAg
ICAgICAgICAgICAgICAgICAgbGltaXQgICAgICA9IGNvbnN0YW50LT5nZXRJQ29uc3QoMCk7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMjgwLDExICsy
Mzc5LDExIEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9vcChUSW5mb1NpbmtC
YXNlICZvdXQsIFRJbnRlcm1Mb29wICpub2RlKQogICAgIGlmIChpbmRleCAhPSBOVUxMICYmIGNv
bXBhcmF0b3IgIT0gRU9wTnVsbCAmJiBub2RlLT5nZXRFeHByZXNzaW9uKCkpCiAgICAgewogICAg
ICAgICBUSW50ZXJtQmluYXJ5ICpiaW5hcnlUZXJtaW5hbCA9IG5vZGUtPmdldEV4cHJlc3Npb24o
KS0+Z2V0QXNCaW5hcnlOb2RlKCk7Ci0gICAgICAgIFRJbnRlcm1VbmFyeSAqdW5hcnlUZXJtaW5h
bCA9IG5vZGUtPmdldEV4cHJlc3Npb24oKS0+Z2V0QXNVbmFyeU5vZGUoKTsKKyAgICAgICAgVElu
dGVybVVuYXJ5ICp1bmFyeVRlcm1pbmFsICAgPSBub2RlLT5nZXRFeHByZXNzaW9uKCktPmdldEFz
VW5hcnlOb2RlKCk7CiAKICAgICAgICAgaWYgKGJpbmFyeVRlcm1pbmFsKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBUT3BlcmF0b3Igb3AgPSBiaW5hcnlUZXJtaW5hbC0+Z2V0T3AoKTsKKyAgICAg
ICAgICAgIFRPcGVyYXRvciBvcCAgICAgICAgICAgICAgICAgICA9IGJpbmFyeVRlcm1pbmFsLT5n
ZXRPcCgpOwogICAgICAgICAgICAgVEludGVybUNvbnN0YW50VW5pb24gKmNvbnN0YW50ID0gYmlu
YXJ5VGVybWluYWwtPmdldFJpZ2h0KCktPmdldEFzQ29uc3RhbnRVbmlvbigpOwogCiAgICAgICAg
ICAgICBpZiAoY29uc3RhbnQpCkBAIC0yMjk1LDkgKzIzOTQsMTQgQEAgYm9vbCBPdXRwdXRITFNM
OjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbmZvU2lua0Jhc2UgJm91dCwgVEludGVybUxvb3AgKm5v
ZGUpCiAKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChvcCkKICAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRU9wQWRkQXNzaWduOiBpbmNyZW1lbnQg
PSB2YWx1ZTsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRU9wU3ViQXNzaWdu
OiBpbmNyZW1lbnQgPSAtdmFsdWU7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ6IFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRU9wQWRk
QXNzaWduOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudCA9IHZhbHVlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBFT3BTdWJBc3NpZ246CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jcmVt
ZW50ID0gLXZhbHVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBV
TklNUExFTUVOVEVEKCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CkBAIC0yMzA4LDExICsyNDEyLDIwIEBAIGJvb2wgT3V0cHV0SExTTDo6
aGFuZGxlRXhjZXNzaXZlTG9vcChUSW5mb1NpbmtCYXNlICZvdXQsIFRJbnRlcm1Mb29wICpub2Rl
KQogCiAgICAgICAgICAgICBzd2l0Y2ggKG9wKQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICBjYXNlIEVPcFBvc3RJbmNyZW1lbnQ6IGluY3JlbWVudCA9IDE7ICBicmVhazsKLSAgICAgICAg
ICAgICAgY2FzZSBFT3BQb3N0RGVjcmVtZW50OiBpbmNyZW1lbnQgPSAtMTsgYnJlYWs7Ci0gICAg
ICAgICAgICAgIGNhc2UgRU9wUHJlSW5jcmVtZW50OiAgaW5jcmVtZW50ID0gMTsgIGJyZWFrOwot
ICAgICAgICAgICAgICBjYXNlIEVPcFByZURlY3JlbWVudDogIGluY3JlbWVudCA9IC0xOyBicmVh
azsKLSAgICAgICAgICAgICAgZGVmYXVsdDogVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAg
ICAgIGNhc2UgRU9wUG9zdEluY3JlbWVudDoKKyAgICAgICAgICAgICAgICAgICAgaW5jcmVtZW50
ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBF
T3BQb3N0RGVjcmVtZW50OgorICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnQgPSAtMTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBFT3BQcmVJbmNy
ZW1lbnQ6CisgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudCA9IDE7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRU9wUHJlRGVjcmVtZW50OgorICAg
ICAgICAgICAgICAgICAgICBpbmNyZW1lbnQgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjMzMSwxMSAr
MjQ0NCwxMSBAQCBib29sIE91dHB1dEhMU0w6OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluZm9TaW5r
QmFzZSAmb3V0LCBUSW50ZXJtTG9vcCAqbm9kZSkKIAogICAgICAgICAgICAgaWYgKGl0ZXJhdGlv
bnMgPD0gTUFYX0xPT1BfSVRFUkFUSU9OUykKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7ICAgLy8gTm90IGFuIGV4Y2Vzc2l2ZSBsb29wCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOyAgLy8gTm90IGFuIGV4Y2Vzc2l2ZSBsb29wCiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnJlc3RvcmVJbmRleCA9IG1FeGNlc3NpdmVM
b29wSW5kZXg7Ci0gICAgICAgICAgICBtRXhjZXNzaXZlTG9vcEluZGV4ID0gaW5kZXg7CisgICAg
ICAgICAgICBtRXhjZXNzaXZlTG9vcEluZGV4ICAgICAgICAgPSBpbmRleDsKIAogICAgICAgICAg
ICAgb3V0IDw8ICJ7aW50ICI7CiAgICAgICAgICAgICBpbmRleC0+dHJhdmVyc2UodGhpcyk7CkBA
IC0yMzU3LDEzICsyNDcwLDE0IEBAIGJvb2wgT3V0cHV0SExTTDo6aGFuZGxlRXhjZXNzaXZlTG9v
cChUSW5mb1NpbmtCYXNlICZvdXQsIFRJbnRlcm1Mb29wICpub2RlKQogICAgICAgICAgICAgICAg
ICAgICBvdXQgPDwgIikge1xuIjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAg
ICBpZiAoaXRlcmF0aW9ucyA8PSBNQVhfTE9PUF9JVEVSQVRJT05TKSAgIC8vIExhc3QgbG9vcCBm
cmFnbWVudAorICAgICAgICAgICAgICAgIGlmIChpdGVyYXRpb25zIDw9IE1BWF9MT09QX0lURVJB
VElPTlMpICAvLyBMYXN0IGxvb3AgZnJhZ21lbnQKICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIG1FeGNlc3NpdmVMb29wSW5kZXggPSBOVUxMOyAgIC8vIFN0b3BzIHNldHRp
bmcgdGhlIEJyZWFrIGZsYWcKKyAgICAgICAgICAgICAgICAgICAgbUV4Y2Vzc2l2ZUxvb3BJbmRl
eCA9IE5VTEw7ICAvLyBTdG9wcyBzZXR0aW5nIHRoZSBCcmVhayBmbGFnCiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgLy8gZm9yKGludCBpbmRleCA9IGluaXRpYWw7IGluZGV4
IDwgY2xhbXBlZExpbWl0OyBpbmRleCArPSBpbmNyZW1lbnQpCi0gICAgICAgICAgICAgICAgY29u
c3QgY2hhciAqdW5yb2xsID0gbUN1cnJlbnRGdW5jdGlvbk1ldGFkYXRhLT5oYXNHcmFkaWVudElu
Q2FsbEdyYXBoKG5vZGUpID8gIkxPT1AiIDogIiI7CisgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqdW5yb2xsID0KKyAgICAgICAgICAgICAgICAgICAgbUN1cnJlbnRGdW5jdGlvbk1ldGFkYXRh
LT5oYXNHcmFkaWVudEluQ2FsbEdyYXBoKG5vZGUpID8gIkxPT1AiIDogIiI7CiAKICAgICAgICAg
ICAgICAgICBvdXQgPDwgdW5yb2xsIDw8ICIgZm9yKCI7CiAgICAgICAgICAgICAgICAgaW5kZXgt
PnRyYXZlcnNlKHRoaXMpOwpAQCAtMjQwOSwxMCArMjUyMywxMSBAQCBib29sIE91dHB1dEhMU0w6
OmhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVEluZm9TaW5rQmFzZSAmb3V0LCBUSW50ZXJtTG9vcCAqbm9k
ZSkKIAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBV
TklNUExFTUVOVEVEKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQo
KTsKICAgICB9CiAKLSAgICByZXR1cm4gZmFsc2U7ICAgLy8gTm90IGhhbmRsZWQgYXMgYW4gZXhj
ZXNzaXZlIGxvb3AKKyAgICByZXR1cm4gZmFsc2U7ICAvLyBOb3QgaGFuZGxlZCBhcyBhbiBleGNl
c3NpdmUgbG9vcAogfQogCiB2b2lkIE91dHB1dEhMU0w6Om91dHB1dFRyaXBsZXQoVEluZm9TaW5r
QmFzZSAmb3V0LApAQCAtMjU4MCwxMiArMjY5NSwxMiBAQCBjb25zdCBUQ29uc3RhbnRVbmlvbiAq
T3V0cHV0SExTTDo6d3JpdGVDb25zdGFudFVuaW9uKFRJbmZvU2lua0Jhc2UgJm91dCwKIHsKICAg
ICBjb25zdCBUQ29uc3RhbnRVbmlvbiAqY29uc3RVbmlvbkl0ZXJhdGVkID0gY29uc3RVbmlvbjsK
IAotICAgIGNvbnN0IFRTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0KCk7Cisg
ICAgY29uc3QgVFN0cnVjdHVyZSAqc3RydWN0dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKICAgICBp
ZiAoc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgb3V0IDw8IFN0cnVjdE5hbWVTdHJpbmcoKnN0
cnVjdHVyZSkgKyAiX2N0b3IoIjsKIAotICAgICAgICBjb25zdCBURmllbGRMaXN0JiBmaWVsZHMg
PSBzdHJ1Y3R1cmUtPmZpZWxkcygpOworICAgICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMg
PSBzdHJ1Y3R1cmUtPmZpZWxkcygpOwogCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZmllbGRzLnNpemUoKTsgaSsrKQogICAgICAgICB7CkBAIC0yNjAyLDE0ICsyNzE3LDE0IEBAIGNv
bnN0IFRDb25zdGFudFVuaW9uICpPdXRwdXRITFNMOjp3cml0ZUNvbnN0YW50VW5pb24oVEluZm9T
aW5rQmFzZSAmb3V0LAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBzaXplX3Qgc2l6
ZSA9IHR5cGUuZ2V0T2JqZWN0U2l6ZSgpOworICAgICAgICBzaXplX3Qgc2l6ZSAgICA9IHR5cGUu
Z2V0T2JqZWN0U2l6ZSgpOwogICAgICAgICBib29sIHdyaXRlVHlwZSA9IHNpemUgPiAxOwogCiAg
ICAgICAgIGlmICh3cml0ZVR5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIG91dCA8PCBUeXBl
U3RyaW5nKHR5cGUpIDw8ICIoIjsKICAgICAgICAgfQotICAgICAgICBjb25zdFVuaW9uSXRlcmF0
ZWQgPSBXcml0ZUNvbnN0YW50VW5pb25BcnJheShvdXQsIGNvbnN0VW5pb25JdGVyYXRlZCwgc2l6
ZSk7CisgICAgICAgIGNvbnN0VW5pb25JdGVyYXRlZCA9IHdyaXRlQ29uc3RhbnRVbmlvbkFycmF5
KG91dCwgY29uc3RVbmlvbkl0ZXJhdGVkLCBzaXplKTsKICAgICAgICAgaWYgKHdyaXRlVHlwZSkK
ICAgICAgICAgewogICAgICAgICAgICAgb3V0IDw8ICIpIjsKQEAgLTI2MTksMTMgKzI3MzQsMjMg
QEAgY29uc3QgVENvbnN0YW50VW5pb24gKk91dHB1dEhMU0w6OndyaXRlQ29uc3RhbnRVbmlvbihU
SW5mb1NpbmtCYXNlICZvdXQsCiAgICAgcmV0dXJuIGNvbnN0VW5pb25JdGVyYXRlZDsKIH0KIAot
dm9pZCBPdXRwdXRITFNMOjp3cml0ZUVtdWxhdGVkRnVuY3Rpb25UcmlwbGV0KFRJbmZvU2lua0Jh
c2UgJm91dCwgVmlzaXQgdmlzaXQsIGNvbnN0IGNoYXIgKnByZVN0cikKK3ZvaWQgT3V0cHV0SExT
TDo6d3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChUSW5mb1NpbmtCYXNlICZvdXQsIFZpc2l0
IHZpc2l0LCBUT3BlcmF0b3Igb3ApCiB7Ci0gICAgVFN0cmluZyBwcmVTdHJpbmcgPSBCdWlsdElu
RnVuY3Rpb25FbXVsYXRvcjo6R2V0RW11bGF0ZWRGdW5jdGlvbk5hbWUocHJlU3RyKTsKLSAgICBv
dXRwdXRUcmlwbGV0KG91dCwgdmlzaXQsIHByZVN0cmluZy5jX3N0cigpLCAiLCAiLCAiKSIpOwor
ICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCkKKyAgICB7CisgICAgICAgIGNvbnN0IGNoYXIgKm9w
U3RyID0gR2V0T3BlcmF0b3JTdHJpbmcob3ApOworICAgICAgICBCdWlsdEluRnVuY3Rpb25FbXVs
YXRvcjo6V3JpdGVFbXVsYXRlZEZ1bmN0aW9uTmFtZShvdXQsIG9wU3RyKTsKKyAgICAgICAgb3V0
IDw8ICIoIjsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgb3V0cHV0VHJpcGxldChv
dXQsIHZpc2l0LCBudWxscHRyLCAiLCAiLCAiKSIpOworICAgIH0KIH0KIAotYm9vbCBPdXRwdXRI
TFNMOjp3cml0ZVNhbWVTeW1ib2xJbml0aWFsaXplcihUSW5mb1NpbmtCYXNlICZvdXQsIFRJbnRl
cm1TeW1ib2wgKnN5bWJvbE5vZGUsIFRJbnRlcm1UeXBlZCAqZXhwcmVzc2lvbikKK2Jvb2wgT3V0
cHV0SExTTDo6d3JpdGVTYW1lU3ltYm9sSW5pdGlhbGl6ZXIoVEluZm9TaW5rQmFzZSAmb3V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU3ltYm9s
ICpzeW1ib2xOb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUSW50ZXJtVHlwZWQgKmV4cHJlc3Npb24pCiB7CiAgICAgc2g6OlNlYXJjaFN5bWJvbCBzZWFy
Y2hTeW1ib2woc3ltYm9sTm9kZS0+Z2V0U3ltYm9sKCkpOwogICAgIGV4cHJlc3Npb24tPnRyYXZl
cnNlKCZzZWFyY2hTeW1ib2wpOwpAQCAtMjY3MCw3ICsyNzk1LDcgQEAgYm9vbCBPdXRwdXRITFNM
Ojp3cml0ZUNvbnN0YW50SW5pdGlhbGl6YXRpb24oVEluZm9TaW5rQmFzZSAmb3V0LAogICAgICAg
ICB7CiAgICAgICAgICAgICBUSW50ZXJtQ29uc3RhbnRVbmlvbiAqbm9kZUNvbnN0ICA9IGV4cHJl
c3Npb24tPmdldEFzQ29uc3RhbnRVbmlvbigpOwogICAgICAgICAgICAgY29uc3QgVENvbnN0YW50
VW5pb24gKmNvbnN0VW5pb24gPSBub2RlQ29uc3QtPmdldFVuaW9uQXJyYXlQb2ludGVyKCk7Ci0g
ICAgICAgICAgICBXcml0ZUNvbnN0YW50VW5pb25BcnJheShvdXQsIGNvbnN0VW5pb24sIG5vZGVD
b25zdC0+Z2V0VHlwZSgpLmdldE9iamVjdFNpemUoKSk7CisgICAgICAgICAgICB3cml0ZUNvbnN0
YW50VW5pb25BcnJheShvdXQsIGNvbnN0VW5pb24sIG5vZGVDb25zdC0+Z2V0VHlwZSgpLmdldE9i
amVjdFNpemUoKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CkBAIC0yNjgx
LDcgKzI4MDYsNyBAQCBib29sIE91dHB1dEhMU0w6OndyaXRlQ29uc3RhbnRJbml0aWFsaXphdGlv
bihUSW5mb1NpbmtCYXNlICZvdXQsCiAgICAgICAgICAgICAgICAgVEludGVybUNvbnN0YW50VW5p
b24gKm5vZGVDb25zdCA9IG5vZGUtPmdldEFzQ29uc3RhbnRVbmlvbigpOwogICAgICAgICAgICAg
ICAgIEFTU0VSVChub2RlQ29uc3QpOwogICAgICAgICAgICAgICAgIGNvbnN0IFRDb25zdGFudFVu
aW9uICpjb25zdFVuaW9uID0gbm9kZUNvbnN0LT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOwotICAg
ICAgICAgICAgICAgIFdyaXRlQ29uc3RhbnRVbmlvbkFycmF5KG91dCwgY29uc3RVbmlvbiwgbm9k
ZUNvbnN0LT5nZXRUeXBlKCkuZ2V0T2JqZWN0U2l6ZSgpKTsKKyAgICAgICAgICAgICAgICB3cml0
ZUNvbnN0YW50VW5pb25BcnJheShvdXQsIGNvbnN0VW5pb24sIG5vZGVDb25zdC0+Z2V0VHlwZSgp
LmdldE9iamVjdFNpemUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUgIT0gY29uc3RydWN0
b3ItPmdldFNlcXVlbmNlKCktPmJhY2soKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgICAgIG91dCA8PCAiLCAiOwpAQCAtMjcwOSwxOCArMjgzNCwxOSBAQCBUU3RyaW5nIE91
dHB1dEhMU0w6OmFkZFN0cnVjdEVxdWFsaXR5RnVuY3Rpb24oY29uc3QgVFN0cnVjdHVyZSAmc3Ry
dWN0dXJlKQogICAgIGNvbnN0IFRTdHJpbmcgJnN0cnVjdE5hbWVTdHJpbmcgPSBTdHJ1Y3ROYW1l
U3RyaW5nKHN0cnVjdHVyZSk7CiAKICAgICBTdHJ1Y3RFcXVhbGl0eUZ1bmN0aW9uICpmdW5jdGlv
biA9IG5ldyBTdHJ1Y3RFcXVhbGl0eUZ1bmN0aW9uKCk7Ci0gICAgZnVuY3Rpb24tPnN0cnVjdHVy
ZSA9ICZzdHJ1Y3R1cmU7Ci0gICAgZnVuY3Rpb24tPmZ1bmN0aW9uTmFtZSA9ICJhbmdsZV9lcV8i
ICsgc3RydWN0TmFtZVN0cmluZzsKKyAgICBmdW5jdGlvbi0+c3RydWN0dXJlICAgICAgICAgICAg
ICA9ICZzdHJ1Y3R1cmU7CisgICAgZnVuY3Rpb24tPmZ1bmN0aW9uTmFtZSAgICAgICAgICAgPSAi
YW5nbGVfZXFfIiArIHN0cnVjdE5hbWVTdHJpbmc7CiAKICAgICBUSW5mb1NpbmtCYXNlIGZuT3V0
OwogCi0gICAgZm5PdXQgPDwgImJvb2wgIiA8PCBmdW5jdGlvbi0+ZnVuY3Rpb25OYW1lIDw8ICIo
IiA8PCBzdHJ1Y3ROYW1lU3RyaW5nIDw8ICIgYSwgIiA8PCBzdHJ1Y3ROYW1lU3RyaW5nICsgIiBi
KVxuIgorICAgIGZuT3V0IDw8ICJib29sICIgPDwgZnVuY3Rpb24tPmZ1bmN0aW9uTmFtZSA8PCAi
KCIgPDwgc3RydWN0TmFtZVN0cmluZyA8PCAiIGEsICIKKyAgICAgICAgICA8PCBzdHJ1Y3ROYW1l
U3RyaW5nICsgIiBiKVxuIgogICAgICAgICAgIDw8ICJ7XG4iCiAgICAgICAgICAgICAgIiAgICBy
ZXR1cm4gIjsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgaSsr
KQogICAgIHsKLSAgICAgICAgY29uc3QgVEZpZWxkICpmaWVsZCA9IGZpZWxkc1tpXTsKKyAgICAg
ICAgY29uc3QgVEZpZWxkICpmaWVsZCAgICA9IGZpZWxkc1tpXTsKICAgICAgICAgY29uc3QgVFR5
cGUgKmZpZWxkVHlwZSA9IGZpZWxkLT50eXBlKCk7CiAKICAgICAgICAgY29uc3QgVFN0cmluZyAm
ZmllbGROYW1lQSA9ICJhLiIgKyBEZWNvcmF0ZShmaWVsZC0+bmFtZSgpKTsKQEAgLTI3NDAsNyAr
Mjg2Niw4IEBAIFRTdHJpbmcgT3V0cHV0SExTTDo6YWRkU3RydWN0RXF1YWxpdHlGdW5jdGlvbihj
b25zdCBUU3RydWN0dXJlICZzdHJ1Y3R1cmUpCiAgICAgICAgIGZuT3V0IDw8ICIpIjsKICAgICB9
CiAKLSAgICBmbk91dCA8PCAiO1xuIiA8PCAifVxuIjsKKyAgICBmbk91dCA8PCAiO1xuIgorICAg
ICAgICAgIDw8ICJ9XG4iOwogCiAgICAgZnVuY3Rpb24tPmZ1bmN0aW9uRGVmaW5pdGlvbiA9IGZu
T3V0LmNfc3RyKCk7CiAKQEAgLTI3NTAsNyArMjg3Nyw3IEBAIFRTdHJpbmcgT3V0cHV0SExTTDo6
YWRkU3RydWN0RXF1YWxpdHlGdW5jdGlvbihjb25zdCBUU3RydWN0dXJlICZzdHJ1Y3R1cmUpCiAg
ICAgcmV0dXJuIGZ1bmN0aW9uLT5mdW5jdGlvbk5hbWU7CiB9CiAKLVRTdHJpbmcgT3V0cHV0SExT
TDo6YWRkQXJyYXlFcXVhbGl0eUZ1bmN0aW9uKGNvbnN0IFRUeXBlJiB0eXBlKQorVFN0cmluZyBP
dXRwdXRITFNMOjphZGRBcnJheUVxdWFsaXR5RnVuY3Rpb24oY29uc3QgVFR5cGUgJnR5cGUpCiB7
CiAgICAgZm9yIChjb25zdCBhdXRvICZlcUZ1bmN0aW9uIDogbUFycmF5RXF1YWxpdHlGdW5jdGlv
bnMpCiAgICAgewpAQCAtMjc2Myw3ICsyODkwLDcgQEAgVFN0cmluZyBPdXRwdXRITFNMOjphZGRB
cnJheUVxdWFsaXR5RnVuY3Rpb24oY29uc3QgVFR5cGUmIHR5cGUpCiAgICAgY29uc3QgVFN0cmlu
ZyAmdHlwZU5hbWUgPSBUeXBlU3RyaW5nKHR5cGUpOwogCiAgICAgQXJyYXlIZWxwZXJGdW5jdGlv
biAqZnVuY3Rpb24gPSBuZXcgQXJyYXlIZWxwZXJGdW5jdGlvbigpOwotICAgIGZ1bmN0aW9uLT50
eXBlID0gdHlwZTsKKyAgICBmdW5jdGlvbi0+dHlwZSAgICAgICAgICAgICAgICA9IHR5cGU7CiAK
ICAgICBUSW5mb1NpbmtCYXNlIGZuTmFtZU91dDsKICAgICBmbk5hbWVPdXQgPDwgImFuZ2xlX2Vx
XyIgPDwgdHlwZS5nZXRBcnJheVNpemUoKSA8PCAiXyIgPDwgdHlwZU5hbWU7CkBAIC0yNzc0LDEz
ICsyOTAxLDEzIEBAIFRTdHJpbmcgT3V0cHV0SExTTDo6YWRkQXJyYXlFcXVhbGl0eUZ1bmN0aW9u
KGNvbnN0IFRUeXBlJiB0eXBlKQogCiAgICAgVEluZm9TaW5rQmFzZSBmbk91dDsKIAotICAgIGZu
T3V0IDw8ICJib29sICIgPDwgZnVuY3Rpb24tPmZ1bmN0aW9uTmFtZSA8PCAiKCIKLSAgICAgICAg
ICA8PCB0eXBlTmFtZSA8PCAiIGFbIiA8PCB0eXBlLmdldEFycmF5U2l6ZSgpIDw8ICJdLCAiCi0g
ICAgICAgICAgPDwgdHlwZU5hbWUgPDwgIiBiWyIgPDwgdHlwZS5nZXRBcnJheVNpemUoKSA8PCAi
XSlcbiIKKyAgICBmbk91dCA8PCAiYm9vbCAiIDw8IGZ1bmN0aW9uLT5mdW5jdGlvbk5hbWUgPDwg
IigiIDw8IHR5cGVOYW1lIDw8ICIgYVsiIDw8IHR5cGUuZ2V0QXJyYXlTaXplKCkKKyAgICAgICAg
ICA8PCAiXSwgIiA8PCB0eXBlTmFtZSA8PCAiIGJbIiA8PCB0eXBlLmdldEFycmF5U2l6ZSgpIDw8
ICJdKVxuIgogICAgICAgICAgIDw8ICJ7XG4iCi0gICAgICAgICAgICAgIiAgICBmb3IgKGludCBp
ID0gMDsgaSA8ICIgPDwgdHlwZS5nZXRBcnJheVNpemUoKSA8PCAiOyArK2kpXG4iCi0gICAgICAg
ICAgICAgIiAgICB7XG4iCi0gICAgICAgICAgICAgIiAgICAgICAgaWYgKCI7CisgICAgICAgICAg
ICAgIiAgICBmb3IgKGludCBpID0gMDsgaSA8ICIKKyAgICAgICAgICA8PCB0eXBlLmdldEFycmF5
U2l6ZSgpIDw8ICI7ICsraSlcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIgICAge1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAg
aWYgKCI7CiAKICAgICBvdXRwdXRFcXVhbChQcmVWaXNpdCwgbm9uQXJyYXlUeXBlLCBFT3BOb3RF
cXVhbCwgZm5PdXQpOwogICAgIGZuT3V0IDw8ICJhW2ldIjsKQEAgLTI4MDEsNyArMjkyOCw3IEBA
IFRTdHJpbmcgT3V0cHV0SExTTDo6YWRkQXJyYXlFcXVhbGl0eUZ1bmN0aW9uKGNvbnN0IFRUeXBl
JiB0eXBlKQogICAgIHJldHVybiBmdW5jdGlvbi0+ZnVuY3Rpb25OYW1lOwogfQogCi1UU3RyaW5n
IE91dHB1dEhMU0w6OmFkZEFycmF5QXNzaWdubWVudEZ1bmN0aW9uKGNvbnN0IFRUeXBlJiB0eXBl
KQorVFN0cmluZyBPdXRwdXRITFNMOjphZGRBcnJheUFzc2lnbm1lbnRGdW5jdGlvbihjb25zdCBU
VHlwZSAmdHlwZSkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8gJmFzc2lnbkZ1bmN0aW9uIDogbUFy
cmF5QXNzaWdubWVudEZ1bmN0aW9ucykKICAgICB7CkBAIC0yODIyLDE1ICsyOTQ5LDE1IEBAIFRT
dHJpbmcgT3V0cHV0SExTTDo6YWRkQXJyYXlBc3NpZ25tZW50RnVuY3Rpb24oY29uc3QgVFR5cGUm
IHR5cGUpCiAKICAgICBUSW5mb1NpbmtCYXNlIGZuT3V0OwogCi0gICAgZm5PdXQgPDwgInZvaWQg
IiA8PCBmdW5jdGlvbi5mdW5jdGlvbk5hbWUgPDwgIihvdXQgIgotICAgICAgICA8PCB0eXBlTmFt
ZSA8PCAiIGFbIiA8PCB0eXBlLmdldEFycmF5U2l6ZSgpIDw8ICJdLCAiCi0gICAgICAgIDw8IHR5
cGVOYW1lIDw8ICIgYlsiIDw8IHR5cGUuZ2V0QXJyYXlTaXplKCkgPDwgIl0pXG4iCi0gICAgICAg
IDw8ICJ7XG4iCi0gICAgICAgICAgICIgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAiIDw8IHR5cGUu
Z2V0QXJyYXlTaXplKCkgPDwgIjsgKytpKVxuIgotICAgICAgICAgICAiICAgIHtcbiIKLSAgICAg
ICAgICAgIiAgICAgICAgYVtpXSA9IGJbaV07XG4iCi0gICAgICAgICAgICIgICAgfVxuIgotICAg
ICAgICAgICAifVxuIjsKKyAgICBmbk91dCA8PCAidm9pZCAiIDw8IGZ1bmN0aW9uLmZ1bmN0aW9u
TmFtZSA8PCAiKG91dCAiIDw8IHR5cGVOYW1lIDw8ICIgYVsiIDw8IHR5cGUuZ2V0QXJyYXlTaXpl
KCkKKyAgICAgICAgICA8PCAiXSwgIiA8PCB0eXBlTmFtZSA8PCAiIGJbIiA8PCB0eXBlLmdldEFy
cmF5U2l6ZSgpIDw8ICJdKVxuIgorICAgICAgICAgIDw8ICJ7XG4iCisgICAgICAgICAgICAgIiAg
ICBmb3IgKGludCBpID0gMDsgaSA8ICIKKyAgICAgICAgICA8PCB0eXBlLmdldEFycmF5U2l6ZSgp
IDw8ICI7ICsraSlcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAg
e1xuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgYVtpXSA9
IGJbaV07XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIH1cbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ9XG4iOwogCiAgICAgZnVuY3Rp
b24uZnVuY3Rpb25EZWZpbml0aW9uID0gZm5PdXQuY19zdHIoKTsKIApAQCAtMjgzOSw3ICsyOTY2
LDcgQEAgVFN0cmluZyBPdXRwdXRITFNMOjphZGRBcnJheUFzc2lnbm1lbnRGdW5jdGlvbihjb25z
dCBUVHlwZSYgdHlwZSkKICAgICByZXR1cm4gZnVuY3Rpb24uZnVuY3Rpb25OYW1lOwogfQogCi1U
U3RyaW5nIE91dHB1dEhMU0w6OmFkZEFycmF5Q29uc3RydWN0SW50b0Z1bmN0aW9uKGNvbnN0IFRU
eXBlJiB0eXBlKQorVFN0cmluZyBPdXRwdXRITFNMOjphZGRBcnJheUNvbnN0cnVjdEludG9GdW5j
dGlvbihjb25zdCBUVHlwZSAmdHlwZSkKIHsKICAgICBmb3IgKGNvbnN0IGF1dG8gJmNvbnN0cnVj
dEludG9GdW5jdGlvbiA6IG1BcnJheUNvbnN0cnVjdEludG9GdW5jdGlvbnMpCiAgICAgewpAQCAt
Mjg2MCw4ICsyOTg3LDggQEAgVFN0cmluZyBPdXRwdXRITFNMOjphZGRBcnJheUNvbnN0cnVjdElu
dG9GdW5jdGlvbihjb25zdCBUVHlwZSYgdHlwZSkKIAogICAgIFRJbmZvU2lua0Jhc2UgZm5PdXQ7
CiAKLSAgICBmbk91dCA8PCAidm9pZCAiIDw8IGZ1bmN0aW9uLmZ1bmN0aW9uTmFtZSA8PCAiKG91
dCAiCi0gICAgICAgICAgPDwgdHlwZU5hbWUgPDwgIiBhWyIgPDwgdHlwZS5nZXRBcnJheVNpemUo
KSA8PCAiXSI7CisgICAgZm5PdXQgPDwgInZvaWQgIiA8PCBmdW5jdGlvbi5mdW5jdGlvbk5hbWUg
PDwgIihvdXQgIiA8PCB0eXBlTmFtZSA8PCAiIGFbIiA8PCB0eXBlLmdldEFycmF5U2l6ZSgpCisg
ICAgICAgICAgPDwgIl0iOwogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwdTsgaSA8IHR5cGUu
Z2V0QXJyYXlTaXplKCk7ICsraSkKICAgICB7CiAgICAgICAgIGZuT3V0IDw8ICIsICIgPDwgdHlw
ZU5hbWUgPDwgIiBiIiA8PCBpOwpAQCAtMjg5Miw2ICszMDE5LDQgQEAgdm9pZCBPdXRwdXRITFNM
OjplbnN1cmVTdHJ1Y3REZWZpbmVkKGNvbnN0IFRUeXBlICZ0eXBlKQogICAgIH0KIH0KIAotCi0K
LX0KK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5oCmluZGV4IGYyOTZk
ZDkyOGNlLi5iMWNjYmM1OWQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dEhMU0wuaApAQCAtMjUsNyAr
MjUsNyBAQCBjbGFzcyBUZXh0dXJlRnVuY3Rpb25ITFNMOwogY2xhc3MgVW5mb2xkU2hvcnRDaXJj
dWl0OwogY2xhc3MgVW5pZm9ybUhMU0w7CiAKLXR5cGVkZWYgc3RkOjptYXA8VFN0cmluZywgVElu
dGVybVN5bWJvbCo+IFJlZmVyZW5jZWRTeW1ib2xzOwordHlwZWRlZiBzdGQ6Om1hcDxUU3RyaW5n
LCBUSW50ZXJtU3ltYm9sICo+IFJlZmVyZW5jZWRTeW1ib2xzOwogCiBjbGFzcyBPdXRwdXRITFNM
IDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKIHsKQEAgLTQ4LDM0ICs0OCw0NyBAQCBjbGFzcyBP
dXRwdXRITFNMIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKIAogICAgIHN0YXRpYyBUU3RyaW5n
IGluaXRpYWxpemVyKGNvbnN0IFRUeXBlICZ0eXBlKTsKIAotICAgIFRJbmZvU2lua0Jhc2UgJmdl
dEluZm9TaW5rKCkgeyBBU1NFUlQoIW1JbmZvU2lua1N0YWNrLmVtcHR5KCkpOyByZXR1cm4gKm1J
bmZvU2lua1N0YWNrLnRvcCgpOyB9CisgICAgVEluZm9TaW5rQmFzZSAmZ2V0SW5mb1NpbmsoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKCFtSW5mb1NpbmtTdGFjay5lbXB0eSgpKTsKKyAgICAgICAg
cmV0dXJuICptSW5mb1NpbmtTdGFjay50b3AoKTsKKyAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBj
YW5Xcml0ZUFzSExTTExpdGVyYWwoVEludGVybVR5cGVkICpleHByZXNzaW9uKTsKIAogICBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBoZWFkZXIoVEluZm9TaW5rQmFzZSAmb3V0LCBjb25zdCBCdWlsdElu
RnVuY3Rpb25FbXVsYXRvciAqYnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IpOwogCisgICAgdm9pZCB3
cml0ZUZsb2F0KFRJbmZvU2lua0Jhc2UgJm91dCwgZmxvYXQgZik7CisgICAgdm9pZCB3cml0ZVNp
bmdsZUNvbnN0YW50KFRJbmZvU2lua0Jhc2UgJm91dCwgY29uc3QgVENvbnN0YW50VW5pb24gKmNv
bnN0IGNvbnN0VW5pb24pOworICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICp3cml0ZUNvbnN0YW50
VW5pb25BcnJheShUSW5mb1NpbmtCYXNlICZvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICpjb25zdCBjb25z
dFVuaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzaXplX3Qgc2l6ZSk7CisKICAgICAvLyBWaXNpdCBBU1Qgbm9kZXMgYW5kIG91dHB1
dCB0aGVpciBjb2RlIHRvIHRoZSBib2R5IHN0cmVhbQotICAgIHZvaWQgdmlzaXRTeW1ib2woVElu
dGVybVN5bWJvbCopIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXRSYXcoVEludGVybVJhdyopIG92
ZXJyaWRlOwotICAgIHZvaWQgdmlzaXRDb25zdGFudFVuaW9uKFRJbnRlcm1Db25zdGFudFVuaW9u
Kikgb3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICopOworICAg
IHZvaWQgdmlzaXRSYXcoVEludGVybVJhdyAqKTsKKyAgICB2b2lkIHZpc2l0Q29uc3RhbnRVbmlv
bihUSW50ZXJtQ29uc3RhbnRVbmlvbiAqKTsKICAgICBib29sIHZpc2l0U3dpenpsZShWaXNpdCB2
aXNpdCwgVEludGVybVN3aXp6bGUgKm5vZGUpIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRCaW5h
cnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkqKSBvdmVycmlkZTsKLSAgICBib29sIHZpc2l0
VW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1VbmFyeSopIG92ZXJyaWRlOwotICAgIGJvb2wgdmlz
aXRUZXJuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVGVybmFyeSAqKSBvdmVycmlkZTsKLSAgICBi
b29sIHZpc2l0SWZFbHNlKFZpc2l0IHZpc2l0LCBUSW50ZXJtSWZFbHNlICopIG92ZXJyaWRlOwot
ICAgIGJvb2wgdmlzaXRTd2l0Y2goVmlzaXQgdmlzaXQsIFRJbnRlcm1Td2l0Y2ggKikgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCB2aXNpdENhc2UoVmlzaXQgdmlzaXQsIFRJbnRlcm1DYXNlICopIG92ZXJy
aWRlOworICAgIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKik7
CisgICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVW5hcnkgKik7CisgICAg
Ym9vbCB2aXNpdFRlcm5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1UZXJuYXJ5ICopOworICAgIGJv
b2wgdmlzaXRJZkVsc2UoVmlzaXQgdmlzaXQsIFRJbnRlcm1JZkVsc2UgKik7CisgICAgYm9vbCB2
aXNpdFN3aXRjaChWaXNpdCB2aXNpdCwgVEludGVybVN3aXRjaCAqKTsKKyAgICBib29sIHZpc2l0
Q2FzZShWaXNpdCB2aXNpdCwgVEludGVybUNhc2UgKik7CisgICAgYm9vbCB2aXNpdEZ1bmN0aW9u
UHJvdG90eXBlKFZpc2l0IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKm5vZGUpIG92
ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRGdW5jdGlvbkRlZmluaXRpb24oVmlzaXQgdmlzaXQsIFRJ
bnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUpIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRB
Z2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUqKSBvdmVycmlkZTsKLSAgICBi
b29sIHZpc2l0QmxvY2soVmlzaXQgdmlzaXQsIFRJbnRlcm1CbG9jayAqbm9kZSkgb3ZlcnJpZGU7
Ci0gICAgYm9vbCB2aXNpdExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wKikgb3ZlcnJpZGU7
Ci0gICAgYm9vbCB2aXNpdEJyYW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCopIG92ZXJy
aWRlOworICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdh
dGUgKik7CisgICAgYm9vbCB2aXNpdEJsb2NrKFZpc2l0IHZpc2l0LCBUSW50ZXJtQmxvY2sgKm5v
ZGUpOworICAgIGJvb2wgdmlzaXRJbnZhcmlhbnREZWNsYXJhdGlvbihWaXNpdCB2aXNpdCwgVElu
dGVybUludmFyaWFudERlY2xhcmF0aW9uICpub2RlKTsKKyAgICBib29sIHZpc2l0RGVjbGFyYXRp
b24oVmlzaXQgdmlzaXQsIFRJbnRlcm1EZWNsYXJhdGlvbiAqbm9kZSk7CisgICAgYm9vbCB2aXNp
dExvb3AoVmlzaXQgdmlzaXQsIFRJbnRlcm1Mb29wICopOworICAgIGJvb2wgdmlzaXRCcmFuY2go
VmlzaXQgdmlzaXQsIFRJbnRlcm1CcmFuY2ggKik7CiAKLSAgICBib29sIGlzU2luZ2xlU3RhdGVt
ZW50KFRJbnRlcm1Ob2RlICpub2RlKTsKICAgICBib29sIGhhbmRsZUV4Y2Vzc2l2ZUxvb3AoVElu
Zm9TaW5rQmFzZSAmb3V0LCBUSW50ZXJtTG9vcCAqbm9kZSk7CiAKLSAgICAvLyBFbWl0IG9uZSBv
ZiB0aHJlZSBzdHJpbmdzIGRlcGVuZGluZyBvbiB0cmF2ZXJzZSBwaGFzZS4gQ2FsbGVkIHdpdGgg
bGl0ZXJhbCBzdHJpbmdzIHNvIHVzaW5nIGNvbnN0IGNoYXIqIGluc3RlYWQgb2YgVFN0cmluZy4K
KyAgICAvLyBFbWl0IG9uZSBvZiB0aHJlZSBzdHJpbmdzIGRlcGVuZGluZyBvbiB0cmF2ZXJzZSBw
aGFzZS4gQ2FsbGVkIHdpdGggbGl0ZXJhbCBzdHJpbmdzIHNvIHVzaW5nCisgICAgLy8gY29uc3Qg
Y2hhciogaW5zdGVhZCBvZiBUU3RyaW5nLgogICAgIHZvaWQgb3V0cHV0VHJpcGxldChUSW5mb1Np
bmtCYXNlICZvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgIFZpc2l0IHZpc2l0LAogICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwcmVTdHJpbmcsCkBAIC05NywxNyArMTEwLDE5
IEBAIGNsYXNzIE91dHB1dEhMU0wgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogCiAgICAgdm9p
ZCBvdXRwdXRFcXVhbChWaXNpdCB2aXNpdCwgY29uc3QgVFR5cGUgJnR5cGUsIFRPcGVyYXRvciBv
cCwgVEluZm9TaW5rQmFzZSAmb3V0KTsKIAotICAgIHZvaWQgd3JpdGVFbXVsYXRlZEZ1bmN0aW9u
VHJpcGxldChUSW5mb1NpbmtCYXNlICZvdXQsIFZpc2l0IHZpc2l0LCBjb25zdCBjaGFyICpwcmVT
dHIpOworICAgIHZvaWQgd3JpdGVFbXVsYXRlZEZ1bmN0aW9uVHJpcGxldChUSW5mb1NpbmtCYXNl
ICZvdXQsIFZpc2l0IHZpc2l0LCBUT3BlcmF0b3Igb3ApOwogICAgIHZvaWQgbWFrZUZsYWdnZWRT
dHJ1Y3RNYXBzKGNvbnN0IHN0ZDo6dmVjdG9yPFRJbnRlcm1UeXBlZCAqPiAmZmxhZ2dlZFN0cnVj
dHMpOwogCi0gICAgLy8gUmV0dXJucyB0cnVlIGlmIGl0IGZvdW5kIGEgJ3NhbWUgc3ltYm9sJyBp
bml0aWFsaXplciAoaW5pdGlhbGl6ZXIgdGhhdCByZWZlcmVuY2VzIHRoZSB2YXJpYWJsZSBpdCdz
IGluaXR0aW5nKQotICAgIGJvb2wgd3JpdGVTYW1lU3ltYm9sSW5pdGlhbGl6ZXIoVEluZm9TaW5r
QmFzZSAmb3V0LCBUSW50ZXJtU3ltYm9sICpzeW1ib2xOb2RlLCBUSW50ZXJtVHlwZWQgKmV4cHJl
c3Npb24pOworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBpdCBmb3VuZCBhICdzYW1lIHN5bWJvbCcg
aW5pdGlhbGl6ZXIgKGluaXRpYWxpemVyIHRoYXQgcmVmZXJlbmNlcyB0aGUKKyAgICAvLyB2YXJp
YWJsZSBpdCdzIGluaXR0aW5nKQorICAgIGJvb2wgd3JpdGVTYW1lU3ltYm9sSW5pdGlhbGl6ZXIo
VEluZm9TaW5rQmFzZSAmb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VEludGVybVN5bWJvbCAqc3ltYm9sTm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJbnRlcm1UeXBlZCAqZXhwcmVzc2lvbik7CiAgICAgLy8gUmV0dXJucyB0cnVlIGlm
IHZhcmlhYmxlIGluaXRpYWxpemVyIGNvdWxkIGJlIHdyaXR0ZW4gdXNpbmcgbGl0ZXJhbCB7fSBu
b3RhdGlvbi4KICAgICBib29sIHdyaXRlQ29uc3RhbnRJbml0aWFsaXphdGlvbihUSW5mb1NpbmtC
YXNlICZvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVN5
bWJvbCAqc3ltYm9sTm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
SW50ZXJtVHlwZWQgKmV4cHJlc3Npb24pOwogCi0gICAgdm9pZCB3cml0ZURlZmVycmVkR2xvYmFs
SW5pdGlhbGl6ZXJzKFRJbmZvU2lua0Jhc2UgJm91dCk7CiAgICAgdm9pZCB3cml0ZUlmRWxzZShU
SW5mb1NpbmtCYXNlICZvdXQsIFRJbnRlcm1JZkVsc2UgKm5vZGUpOwogCiAgICAgLy8gUmV0dXJu
cyB0aGUgZnVuY3Rpb24gbmFtZQpAQCAtMTMzLDggKzE0OCw4IEBAIGNsYXNzIE91dHB1dEhMU0wg
OiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgIFRJbmZvU2lua0Jhc2UgbUJvZHk7CiAgICAg
VEluZm9TaW5rQmFzZSBtRm9vdGVyOwogCi0gICAgLy8gQSBzdGFjayBpcyB1c2VmdWwgd2hlbiB3
ZSB3YW50IHRvIHRyYXZlcnNlIGluIHRoZSBoZWFkZXIsIG9yIGluIGhlbHBlciBmdW5jdGlvbnMs
IGJ1dCBub3QgYWx3YXlzCi0gICAgLy8gd3JpdGUgdG8gdGhlIGJvZHkuIEluc3RlYWQgdXNlIGFu
IEluZm9TaW5rIHN0YWNrIHRvIGtlZXAgb3VyIGN1cnJlbnQgc3RhdGUgaW50YWN0LgorICAgIC8v
IEEgc3RhY2sgaXMgdXNlZnVsIHdoZW4gd2Ugd2FudCB0byB0cmF2ZXJzZSBpbiB0aGUgaGVhZGVy
LCBvciBpbiBoZWxwZXIgZnVuY3Rpb25zLCBidXQgbm90CisgICAgLy8gYWx3YXlzIHdyaXRlIHRv
IHRoZSBib2R5LiBJbnN0ZWFkIHVzZSBhbiBJbmZvU2luayBzdGFjayB0byBrZWVwIG91ciBjdXJy
ZW50IHN0YXRlIGludGFjdC4KICAgICAvLyBUT0RPIChqbWFkaWxsKTogSnVzdCBwYXNzaW5nIGFu
IEluZm9TaW5rIGluIGZ1bmN0aW9uIHBhcmFtZXRlcnMgd291bGQgYmUgc2ltcGxlci4KICAgICBz
dGQ6OnN0YWNrPFRJbmZvU2lua0Jhc2UgKj4gbUluZm9TaW5rU3RhY2s7CiAKQEAgLTE1OSwxNSAr
MTc0LDE5IEBAIGNsYXNzIE91dHB1dEhMU0wgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAg
IGJvb2wgbVVzZXNJbnN0YW5jZUlEOwogICAgIGJvb2wgbVVzZXNWZXJ0ZXhJRDsKICAgICBib29s
IG1Vc2VzRnJhZ0RlcHRoOworICAgIGJvb2wgbVVzZXNOdW1Xb3JrR3JvdXBzOworICAgIGJvb2wg
bVVzZXNXb3JrR3JvdXBJRDsKKyAgICBib29sIG1Vc2VzTG9jYWxJbnZvY2F0aW9uSUQ7CisgICAg
Ym9vbCBtVXNlc0dsb2JhbEludm9jYXRpb25JRDsKKyAgICBib29sIG1Vc2VzTG9jYWxJbnZvY2F0
aW9uSW5kZXg7CiAgICAgYm9vbCBtVXNlc1hvcjsKICAgICBib29sIG1Vc2VzRGlzY2FyZFJld3Jp
dGluZzsKICAgICBib29sIG1Vc2VzTmVzdGVkQnJlYWs7CiAgICAgYm9vbCBtUmVxdWlyZXNJRUVF
U3RyaWN0Q29tcGlsaW5nOwogCi0KICAgICBpbnQgbU51bVJlbmRlclRhcmdldHM7CiAKLSAgICBp
bnQgbVVuaXF1ZUluZGV4OyAgIC8vIEZvciBjcmVhdGluZyB1bmlxdWUgbmFtZXMKKyAgICBpbnQg
bVVuaXF1ZUluZGV4OyAgLy8gRm9yIGNyZWF0aW5nIHVuaXF1ZSBuYW1lcwogCiAgICAgQ2FsbERB
RyBtQ2FsbERhZzsKICAgICBNZXRhZGF0YUxpc3QgbUFTVE1ldGFkYXRhTGlzdDsKQEAgLTE3OCwx
MCArMTk3LDEyIEBAIGNsYXNzIE91dHB1dEhMU0wgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgog
CiAgICAgVEludGVybVN5bWJvbCAqbUV4Y2Vzc2l2ZUxvb3BJbmRleDsKIAotICAgIFRTdHJpbmcg
c3RydWN0SW5pdGlhbGl6ZXJTdHJpbmcoaW50IGluZGVudCwgY29uc3QgVFN0cnVjdHVyZSAmc3Ry
dWN0dXJlLCBjb25zdCBUU3RyaW5nICZyaHNTdHJ1Y3ROYW1lKTsKKyAgICBUU3RyaW5nIHN0cnVj
dEluaXRpYWxpemVyU3RyaW5nKGludCBpbmRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUU3RydWN0dXJlICZzdHJ1Y3R1cmUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZyaHNTdHJ1Y3ROYW1lKTsKIAotICAg
IHN0ZDo6bWFwPFRJbnRlcm1UeXBlZCosIFRTdHJpbmc+IG1GbGFnZ2VkU3RydWN0TWFwcGVkTmFt
ZXM7Ci0gICAgc3RkOjptYXA8VEludGVybVR5cGVkKiwgVFN0cmluZz4gbUZsYWdnZWRTdHJ1Y3RP
cmlnaW5hbE5hbWVzOworICAgIHN0ZDo6bWFwPFRJbnRlcm1UeXBlZCAqLCBUU3RyaW5nPiBtRmxh
Z2dlZFN0cnVjdE1hcHBlZE5hbWVzOworICAgIHN0ZDo6bWFwPFRJbnRlcm1UeXBlZCAqLCBUU3Ry
aW5nPiBtRmxhZ2dlZFN0cnVjdE9yaWdpbmFsTmFtZXM7CiAKICAgICBzdHJ1Y3QgSGVscGVyRnVu
Y3Rpb24KICAgICB7CkBAIC0xOTUsMzIgKzIxNiwzMSBAQCBjbGFzcyBPdXRwdXRITFNMIDogcHVi
bGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICAvLyB3aGljaCB3ZSBhZGQgdGhlIGZ1bmN0aW9ucywg
c2luY2UgbmVzdGVkIHN0cnVjdHVyZXMgY2FsbCBlYWNoIG90aGVyIHJlY3Vyc2l2ZWx5LCBhbmQK
ICAgICAvLyBzdHJ1Y3R1cmUgZXF1YWxpdHkgZnVuY3Rpb25zIG1heSBuZWVkIHRvIGNhbGwgYXJy
YXkgZXF1YWxpdHkgZnVuY3Rpb25zIGFuZCB2aWNlIHZlcnNhLgogICAgIC8vIFRoZSBvd25lcnNo
aXAgb2YgdGhlIHBvaW50ZXJzIGlzIG1haW50YWluZWQgYnkgdGhlIHR5cGUtc3BlY2lmaWMgYXJy
YXlzLgotICAgIHN0ZDo6dmVjdG9yPEhlbHBlckZ1bmN0aW9uKj4gbUVxdWFsaXR5RnVuY3Rpb25z
OworICAgIHN0ZDo6dmVjdG9yPEhlbHBlckZ1bmN0aW9uICo+IG1FcXVhbGl0eUZ1bmN0aW9uczsK
IAogICAgIHN0cnVjdCBTdHJ1Y3RFcXVhbGl0eUZ1bmN0aW9uIDogcHVibGljIEhlbHBlckZ1bmN0
aW9uCiAgICAgewogICAgICAgICBjb25zdCBUU3RydWN0dXJlICpzdHJ1Y3R1cmU7CiAgICAgfTsK
LSAgICBzdGQ6OnZlY3RvcjxTdHJ1Y3RFcXVhbGl0eUZ1bmN0aW9uKj4gbVN0cnVjdEVxdWFsaXR5
RnVuY3Rpb25zOworICAgIHN0ZDo6dmVjdG9yPFN0cnVjdEVxdWFsaXR5RnVuY3Rpb24gKj4gbVN0
cnVjdEVxdWFsaXR5RnVuY3Rpb25zOwogCiAgICAgc3RydWN0IEFycmF5SGVscGVyRnVuY3Rpb24g
OiBwdWJsaWMgSGVscGVyRnVuY3Rpb24KICAgICB7CiAgICAgICAgIFRUeXBlIHR5cGU7CiAgICAg
fTsKLSAgICBzdGQ6OnZlY3RvcjxBcnJheUhlbHBlckZ1bmN0aW9uKj4gbUFycmF5RXF1YWxpdHlG
dW5jdGlvbnM7CisgICAgc3RkOjp2ZWN0b3I8QXJyYXlIZWxwZXJGdW5jdGlvbiAqPiBtQXJyYXlF
cXVhbGl0eUZ1bmN0aW9uczsKIAogICAgIHN0ZDo6dmVjdG9yPEFycmF5SGVscGVyRnVuY3Rpb24+
IG1BcnJheUFzc2lnbm1lbnRGdW5jdGlvbnM7CiAKLSAgICAvLyBUaGUgY29uc3RydWN0LWludG8g
ZnVuY3Rpb25zIGFyZSBmdW5jdGlvbnMgdGhhdCBmaWxsIGFuIE4tZWxlbWVudCBhcnJheSBwYXNz
ZWQgYXMgYW4gb3V0IHBhcmFtZXRlcgotICAgIC8vIHdpdGggdGhlIG90aGVyIE4gcGFyYW1ldGVy
cyBvZiB0aGUgZnVuY3Rpb24uIFRoaXMgaXMgdXNlZCB0byB3b3JrIGFyb3VuZCB0aGF0IGFycmF5
cyBjYW4ndCBiZQotICAgIC8vIHJldHVybiB2YWx1ZXMgaW4gSExTTC4KKyAgICAvLyBUaGUgY29u
c3RydWN0LWludG8gZnVuY3Rpb25zIGFyZSBmdW5jdGlvbnMgdGhhdCBmaWxsIGFuIE4tZWxlbWVu
dCBhcnJheSBwYXNzZWQgYXMgYW4gb3V0CisgICAgLy8gcGFyYW1ldGVyIHdpdGggdGhlIG90aGVy
IE4gcGFyYW1ldGVycyBvZiB0aGUgZnVuY3Rpb24uIFRoaXMgaXMgdXNlZCB0byB3b3JrIGFyb3Vu
ZCB0aGF0CisgICAgLy8gYXJyYXlzIGNhbid0IGJlIHJldHVybiB2YWx1ZXMgaW4gSExTTC4KICAg
ICBzdGQ6OnZlY3RvcjxBcnJheUhlbHBlckZ1bmN0aW9uPiBtQXJyYXlDb25zdHJ1Y3RJbnRvRnVu
Y3Rpb25zOwogCiAgIHByaXZhdGU6CiAgICAgVFN0cmluZyBzYW1wbGVyTmFtZVByZWZpeEZyb21T
dHJ1Y3QoVEludGVybVR5cGVkICpub2RlKTsKLSAgICBib29sIGFuY2VzdG9yRXZhbHVhdGVzVG9T
YW1wbGVySW5TdHJ1Y3QoVmlzaXQgdmlzaXQpOworICAgIGJvb2wgYW5jZXN0b3JFdmFsdWF0ZXNU
b1NhbXBsZXJJblN0cnVjdCgpOwogfTsKLQogfQogCi0jZW5kaWYgICAvLyBDT01QSUxFUl9UUkFO
U0xBVE9SX09VVFBVVEhMU0xfSF8KKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9PVVRQ
VVRITFNMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9PdXRwdXRWdWxrYW5HTFNMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091dHB1dFZ1bGthbkdMU0wuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jMmM3ODEzZGU3NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL091
dHB1dFZ1bGthbkdMU0wuY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gT3V0
cHV0VnVsa2FuR0xTTDoKKy8vICAgQ29kZSB0aGF0IG91dHB1dHMgc2hhZGVycyB0aGF0IGZpdCBH
TF9LSFJfdnVsa2FuX2dsc2wuCisvLyAgIFRoZSBzaGFkZXJzIGFyZSB0aGVuIGZlZCBpbnRvIGds
c2xhbmcgdG8gc3BpdCBvdXQgU1BJUi1WIChsaWJBTkdMRS1zaWRlKS4KKy8vICAgU2VlOiBodHRw
czovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS92dWxrYW4vc3BlY3MvbWlzYy9HTF9LSFJfdnVs
a2FuX2dsc2wudHh0CisvLworCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRW
dWxrYW5HTFNMLmgiCisKK25hbWVzcGFjZSBzaAoreworCitUT3V0cHV0VnVsa2FuR0xTTDo6VE91
dHB1dFZ1bGthbkdMU0woVEluZm9TaW5rQmFzZSAmb2JqU2luaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5IGNsYW1waW5n
U3RyYXRlZ3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hIYXNoRnVu
Y3Rpb242NCBoYXNoRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTmFtZU1hcCAmbmFtZU1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNoOjpHTGVudW0gc2hhZGVyVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaFNoYWRlck91dHB1dCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykKKyAgICA6
IFRPdXRwdXRHTFNMQmFzZShvYmpTaW5rLAorICAgICAgICAgICAgICAgICAgICAgIGNsYW1waW5n
U3RyYXRlZ3ksCisgICAgICAgICAgICAgICAgICAgICAgaGFzaEZ1bmN0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgIG5hbWVNYXAsCisgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUs
CisgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyVHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICBzaGFkZXJWZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCwKKyAgICAgICAg
ICAgICAgICAgICAgICBjb21waWxlT3B0aW9ucykKK3sKK30KKworLy8gVE9ETyhqbWFkaWxsKTog
VGhpcyBpcyBub3QgY29tcGxldGUuCit2b2lkIFRPdXRwdXRWdWxrYW5HTFNMOjp3cml0ZUxheW91
dFF1YWxpZmllcihjb25zdCBUVHlwZSAmdHlwZSkKK3sKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQg
ICAgICAgICAgICAgICAgICAgICAgPSBvYmpTaW5rKCk7CisgICAgY29uc3QgVExheW91dFF1YWxp
ZmllciAmbGF5b3V0UXVhbGlmaWVyID0gdHlwZS5nZXRMYXlvdXRRdWFsaWZpZXIoKTsKKyAgICBv
dXQgPDwgImxheW91dCgiOworCisgICAgaWYgKHR5cGUuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxQXR0
cmlidXRlIHx8IHR5cGUuZ2V0UXVhbGlmaWVyKCkgPT0gRXZxRnJhZ21lbnRPdXQgfHwKKyAgICAg
ICAgdHlwZS5nZXRRdWFsaWZpZXIoKSA9PSBFdnFWZXJ0ZXhJbikKKyAgICB7CisgICAgICAgIC8v
IFRPRE8oam1hZGlsbCk6IE11bHRpcGxlIG91dHB1dCBsb2NhdGlvbnMuCisgICAgICAgIG91dCA8
PCAibG9jYXRpb24gPSAiCisgICAgICAgICAgICA8PCAiMCI7CisgICAgfQorCisgICAgaWYgKElz
SW1hZ2UodHlwZS5nZXRCYXNpY1R5cGUoKSkgJiYgbGF5b3V0UXVhbGlmaWVyLmltYWdlSW50ZXJu
YWxGb3JtYXQgIT0gRWlpZlVuc3BlY2lmaWVkKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHR5cGUu
Z2V0UXVhbGlmaWVyKCkgPT0gRXZxVGVtcG9yYXJ5IHx8IHR5cGUuZ2V0UXVhbGlmaWVyKCkgPT0g
RXZxVW5pZm9ybSk7CisgICAgICAgIG91dCA8PCBnZXRJbWFnZUludGVybmFsRm9ybWF0U3RyaW5n
KGxheW91dFF1YWxpZmllci5pbWFnZUludGVybmFsRm9ybWF0KTsKKyAgICB9CisKKyAgICBvdXQg
PDwgIikgIjsKK30KKworYm9vbCBUT3V0cHV0VnVsa2FuR0xTTDo6d3JpdGVWYXJpYWJsZVByZWNp
c2lvbihUUHJlY2lzaW9uIHByZWNpc2lvbikKK3sKKyAgICBpZiAocHJlY2lzaW9uID09IEVicFVu
ZGVmaW5lZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVEluZm9TaW5rQmFzZSAmb3V0
ID0gb2JqU2luaygpOworICAgIG91dCA8PCBnZXRQcmVjaXNpb25TdHJpbmcocHJlY2lzaW9uKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBUT3V0cHV0VnVsa2FuR0xTTDo6dmlzaXRTeW1i
b2woVEludGVybVN5bWJvbCAqbm9kZSkKK3sKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBvYmpT
aW5rKCk7CisKKyAgICBjb25zdCBUU3RyaW5nICZzeW1ib2wgPSBub2RlLT5nZXRTeW1ib2woKTsK
KyAgICBpZiAoc3ltYm9sID09ICJnbF9GcmFnQ29sb3IiKQorICAgIHsKKyAgICAgICAgb3V0IDw8
ICJ3ZWJnbF9GcmFnQ29sb3IiOworICAgIH0KKyAgICBlbHNlIGlmIChzeW1ib2wgPT0gImdsX0Zy
YWdEYXRhIikKKyAgICB7CisgICAgICAgIG91dCA8PCAid2ViZ2xfRnJhZ0RhdGEiOworICAgIH0K
KyAgICBlbHNlCisgICAgeworICAgICAgICBUT3V0cHV0R0xTTEJhc2U6OnZpc2l0U3ltYm9sKG5v
ZGUpOworICAgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRWdWxrYW5HTFNM
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9PdXRw
dXRWdWxrYW5HTFNMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc1
ZjJmMzVkYWU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0VnVsa2FuR0xTTC5oCkBAIC0wLDAgKzEsMzYgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworLy8gT3V0cHV0VnVsa2FuR0xTTDoKKy8vICAgQ29kZSB0aGF0IG91dHB1
dHMgc2hhZGVycyB0aGF0IGZpdCBHTF9LSFJfdnVsa2FuX2dsc2wuCisvLyAgIFRoZSBzaGFkZXJz
IGFyZSB0aGVuIGZlZCBpbnRvIGdsc2xhbmcgdG8gc3BpdCBvdXQgU1BJUi1WIChsaWJBTkdMRS1z
aWRlKS4KKy8vICAgU2VlOiBodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS92dWxrYW4v
c3BlY3MvbWlzYy9HTF9LSFJfdnVsa2FuX2dsc2wudHh0CisvLworCisjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMLmgiCisKK25hbWVzcGFjZSBzaAoreworCitjbGFzcyBU
T3V0cHV0VnVsa2FuR0xTTCA6IHB1YmxpYyBUT3V0cHV0R0xTTEJhc2UKK3sKKyAgcHVibGljOgor
ICAgIFRPdXRwdXRWdWxrYW5HTFNMKFRJbmZvU2lua0Jhc2UgJm9ialNpbmssCisgICAgICAgICAg
ICAgICAgICAgICAgU2hBcnJheUluZGV4Q2xhbXBpbmdTdHJhdGVneSBjbGFtcGluZ1N0cmF0ZWd5
LAorICAgICAgICAgICAgICAgICAgICAgIFNoSGFzaEZ1bmN0aW9uNjQgaGFzaEZ1bmN0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgIE5hbWVNYXAgJm5hbWVNYXAsCisgICAgICAgICAgICAgICAg
ICAgICAgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICBz
aDo6R0xlbnVtIHNoYWRlclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZl
cnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0LAorICAg
ICAgICAgICAgICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpOworCisg
IHByb3RlY3RlZDoKKyAgICB2b2lkIHdyaXRlTGF5b3V0UXVhbGlmaWVyKGNvbnN0IFRUeXBlICZ0
eXBlKSBvdmVycmlkZTsKKyAgICBib29sIHdyaXRlVmFyaWFibGVQcmVjaXNpb24oVFByZWNpc2lv
biBwcmVjaXNpb24pIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJv
bCAqbm9kZSkgb3ZlcnJpZGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9QYXJzZUNvbnRleHQuY3BwCmluZGV4IDcwYzBjMjdjZjM2Li5mNDY5NzQ2NGNhZSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUGFy
c2VDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9QYXJzZUNvbnRleHQuY3BwCkBAIC0xNiwxMiArMTYsMTI2IEBACiAjaW5jbHVk
ZSAiY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmgiCiAjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiAv
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwogLy8KIC8vIFN1Yi0gdmVjdG9yIGFuZCBtYXRyaXggZmllbGRzCiAvLwog
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCiAKK25hbWVzcGFjZQoreworCitjb25zdCBpbnQga1dlYkdMTWF4U3Ry
dWN0TmVzdGluZyA9IDQ7CisKK2Jvb2wgQ29udGFpbnNTYW1wbGVyKGNvbnN0IFRUeXBlICZ0eXBl
KQoreworICAgIGlmIChJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkpCisgICAgICAgIHJl
dHVybiB0cnVlOworCisgICAgaWYgKHR5cGUuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0U3RydWN0IHx8
IHR5cGUuaXNJbnRlcmZhY2VCbG9jaygpKQorICAgIHsKKyAgICAgICAgY29uc3QgVEZpZWxkTGlz
dCAmZmllbGRzID0gdHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7CisgICAgICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgZmllbGRzLnNpemUoKTsgKytpKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoQ29udGFpbnNTYW1wbGVyKCpmaWVsZHNbaV0tPnR5cGUoKSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2Jvb2wgQ29udGFpbnNJbWFnZShjb25zdCBUVHlwZSAmdHlwZSkKK3sKKyAgICBp
ZiAoSXNJbWFnZSh0eXBlLmdldEJhc2ljVHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICBpZiAodHlwZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QgfHwgdHlwZS5pc0ludGVy
ZmFjZUJsb2NrKCkpCisgICAgeworICAgICAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMgPSB0
eXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChD
b250YWluc0ltYWdlKCpmaWVsZHNbaV0tPnR5cGUoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIEdl
dCBhIHRva2VuIGZyb20gYW4gaW1hZ2UgYXJndW1lbnQgdG8gdXNlIGFzIGFuIGVycm9yIG1lc3Nh
Z2UgdG9rZW4uCitjb25zdCBjaGFyICpHZXRJbWFnZUFyZ3VtZW50VG9rZW4oVEludGVybVR5cGVk
ICppbWFnZU5vZGUpCit7CisgICAgQVNTRVJUKElzSW1hZ2UoaW1hZ2VOb2RlLT5nZXRCYXNpY1R5
cGUoKSkpOworICAgIHdoaWxlIChpbWFnZU5vZGUtPmdldEFzQmluYXJ5Tm9kZSgpICYmCisgICAg
ICAgICAgIChpbWFnZU5vZGUtPmdldEFzQmluYXJ5Tm9kZSgpLT5nZXRPcCgpID09IEVPcEluZGV4
SW5kaXJlY3QgfHwKKyAgICAgICAgICAgIGltYWdlTm9kZS0+Z2V0QXNCaW5hcnlOb2RlKCktPmdl
dE9wKCkgPT0gRU9wSW5kZXhEaXJlY3QpKQorICAgIHsKKyAgICAgICAgaW1hZ2VOb2RlID0gaW1h
Z2VOb2RlLT5nZXRBc0JpbmFyeU5vZGUoKS0+Z2V0TGVmdCgpOworICAgIH0KKyAgICBUSW50ZXJt
U3ltYm9sICppbWFnZVN5bWJvbCA9IGltYWdlTm9kZS0+Z2V0QXNTeW1ib2xOb2RlKCk7CisgICAg
aWYgKGltYWdlU3ltYm9sKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGltYWdlU3ltYm9sLT5nZXRT
eW1ib2woKS5jX3N0cigpOworICAgIH0KKyAgICByZXR1cm4gImltYWdlIjsKK30KKworfSAgLy8g
bmFtZXNwYWNlCisKK1RQYXJzZUNvbnRleHQ6OlRQYXJzZUNvbnRleHQoVFN5bWJvbFRhYmxlICZz
eW10LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURXh0ZW5zaW9uQmVoYXZpb3IgJmV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkdMZW51bSB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTaFNoYWRlclNwZWMgc3BlYywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBvcHRpb25zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGNoZWNrc1ByZWNFcnJvcnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVzb3VyY2VzKQorICAgIDogaW50
ZXJtZWRpYXRlKCksCisgICAgICBzeW1ib2xUYWJsZShzeW10KSwKKyAgICAgIG1EZWZlcnJlZFNp
bmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayhmYWxzZSksCisgICAgICBtU2hhZGVyVHlwZSh0eXBl
KSwKKyAgICAgIG1TaGFkZXJTcGVjKHNwZWMpLAorICAgICAgbUNvbXBpbGVPcHRpb25zKG9wdGlv
bnMpLAorICAgICAgbVNoYWRlclZlcnNpb24oMTAwKSwKKyAgICAgIG1UcmVlUm9vdChudWxscHRy
KSwKKyAgICAgIG1Mb29wTmVzdGluZ0xldmVsKDApLAorICAgICAgbVN0cnVjdE5lc3RpbmdMZXZl
bCgwKSwKKyAgICAgIG1Td2l0Y2hOZXN0aW5nTGV2ZWwoMCksCisgICAgICBtQ3VycmVudEZ1bmN0
aW9uVHlwZShudWxscHRyKSwKKyAgICAgIG1GdW5jdGlvblJldHVybnNWYWx1ZShmYWxzZSksCisg
ICAgICBtQ2hlY2tzUHJlY2lzaW9uRXJyb3JzKGNoZWNrc1ByZWNFcnJvcnMpLAorICAgICAgbUZy
YWdtZW50UHJlY2lzaW9uSGlnaE9uRVNTTDEoZmFsc2UpLAorICAgICAgbURlZmF1bHRNYXRyaXhQ
YWNraW5nKEVtcENvbHVtbk1ham9yKSwKKyAgICAgIG1EZWZhdWx0QmxvY2tTdG9yYWdlKHNoOjpJ
c1dlYkdMQmFzZWRTcGVjKHNwZWMpID8gRWJzU3RkMTQwIDogRWJzU2hhcmVkKSwKKyAgICAgIG1E
aWFnbm9zdGljcyhkaWFnbm9zdGljcyksCisgICAgICBtRGlyZWN0aXZlSGFuZGxlcihleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAqbURpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgbVNoYWRlclZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBtU2hhZGVyVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy5XRUJHTF9kZWJ1Z19zaGFkZXJf
cHJlY2lzaW9uID09IDEpLAorICAgICAgbVByZXByb2Nlc3NvcihtRGlhZ25vc3RpY3MsICZtRGly
ZWN0aXZlSGFuZGxlciwgcHA6OlByZXByb2Nlc3NvclNldHRpbmdzKCkpLAorICAgICAgbVNjYW5u
ZXIobnVsbHB0ciksCisgICAgICBtVXNlc0ZyYWdEYXRhKGZhbHNlKSwKKyAgICAgIG1Vc2VzRnJh
Z0NvbG9yKGZhbHNlKSwKKyAgICAgIG1Vc2VzU2Vjb25kYXJ5T3V0cHV0cyhmYWxzZSksCisgICAg
ICBtTWluUHJvZ3JhbVRleGVsT2Zmc2V0KHJlc291cmNlcy5NaW5Qcm9ncmFtVGV4ZWxPZmZzZXQp
LAorICAgICAgbU1heFByb2dyYW1UZXhlbE9mZnNldChyZXNvdXJjZXMuTWF4UHJvZ3JhbVRleGVs
T2Zmc2V0KSwKKyAgICAgIG1NdWx0aXZpZXdBdmFpbGFibGUocmVzb3VyY2VzLk9WUl9tdWx0aXZp
ZXcgPT0gMSksCisgICAgICBtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZURlY2xhcmVkKGZhbHNlKSwK
KyAgICAgIG1OdW1WaWV3cygtMSksCisgICAgICBtTWF4TnVtVmlld3MocmVzb3VyY2VzLk1heFZp
ZXdzT1ZSKSwKKyAgICAgIG1NYXhJbWFnZVVuaXRzKHJlc291cmNlcy5NYXhJbWFnZVVuaXRzKSwK
KyAgICAgIG1NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKHJlc291cmNlcy5NYXhDb21iaW5l
ZFRleHR1cmVJbWFnZVVuaXRzKSwKKyAgICAgIG1NYXhVbmlmb3JtTG9jYXRpb25zKHJlc291cmNl
cy5NYXhVbmlmb3JtTG9jYXRpb25zKSwKKyAgICAgIG1EZWNsYXJpbmdGdW5jdGlvbihmYWxzZSkK
K3sKKyAgICBtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZS5maWxsKC0xKTsKK30KKwogLy8KIC8vIExv
b2sgYXQgYSAnLicgZmllbGQgc2VsZWN0b3Igc3RyaW5nIGFuZCBjaGFuZ2UgaXQgaW50byBvZmZz
ZXRzCiAvLyBmb3IgYSB2ZWN0b3IuCkBAIC0xMzIsMzkgKzI0NiwzMSBAQCBib29sIFRQYXJzZUNv
bnRleHQ6OnBhcnNlVmVjdG9yRmllbGRzKGNvbnN0IFRTdHJpbmcgJmNvbXBTdHJpbmcsCiAvLwog
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCiAKLQogLy8KIC8vIFVzZWQgYnkgZmxleC9iaXNvbiB0byBvdXRwdXQg
YWxsIHN5bnRheCBhbmQgcGFyc2luZyBlcnJvcnMuCiAvLwotdm9pZCBUUGFyc2VDb250ZXh0Ojpl
cnJvcihjb25zdCBUU291cmNlTG9jICZsb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgKnJlYXNvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq
dG9rZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmV4dHJhSW5mbykK
K3ZvaWQgVFBhcnNlQ29udGV4dDo6ZXJyb3IoY29uc3QgVFNvdXJjZUxvYyAmbG9jLCBjb25zdCBj
aGFyICpyZWFzb24sIGNvbnN0IGNoYXIgKnRva2VuKQogewotICAgIG1EaWFnbm9zdGljcy5lcnJv
cihsb2MsIHJlYXNvbiwgdG9rZW4sIGV4dHJhSW5mbyk7CisgICAgbURpYWdub3N0aWNzLT5lcnJv
cihsb2MsIHJlYXNvbiwgdG9rZW4pOwogfQogCi12b2lkIFRQYXJzZUNvbnRleHQ6Ondhcm5pbmco
Y29uc3QgVFNvdXJjZUxvYyAmbG9jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKnJlYXNvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0
b2tlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpleHRyYUluZm8p
Cit2b2lkIFRQYXJzZUNvbnRleHQ6Ondhcm5pbmcoY29uc3QgVFNvdXJjZUxvYyAmbG9jLCBjb25z
dCBjaGFyICpyZWFzb24sIGNvbnN0IGNoYXIgKnRva2VuKQogewotICAgIG1EaWFnbm9zdGljcy53
YXJuaW5nKGxvYywgcmVhc29uLCB0b2tlbiwgZXh0cmFJbmZvKTsKKyAgICBtRGlhZ25vc3RpY3Mt
Pndhcm5pbmcobG9jLCByZWFzb24sIHRva2VuKTsKIH0KIAogdm9pZCBUUGFyc2VDb250ZXh0Ojpv
dXRPZlJhbmdlRXJyb3IoYm9vbCBpc0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAqdG9rZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpleHRyYUluZm8pCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbikKIHsKICAgICBpZiAoaXNFcnJvcikKICAg
ICB7Ci0gICAgICAgIGVycm9yKGxvYywgcmVhc29uLCB0b2tlbiwgZXh0cmFJbmZvKTsKKyAgICAg
ICAgZXJyb3IobG9jLCByZWFzb24sIHRva2VuKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAg
ICAgICAgd2FybmluZyhsb2MsIHJlYXNvbiwgdG9rZW4sIGV4dHJhSW5mbyk7CisgICAgICAgIHdh
cm5pbmcobG9jLCByZWFzb24sIHRva2VuKTsKICAgICB9CiB9CiAKQEAgLTE3MywxMCArMjc5LDEw
IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6b3V0T2ZSYW5nZUVycm9yKGJvb2wgaXNFcnJvciwKIC8v
CiB2b2lkIFRQYXJzZUNvbnRleHQ6OmFzc2lnbkVycm9yKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUs
IGNvbnN0IGNoYXIgKm9wLCBUU3RyaW5nIGxlZnQsIFRTdHJpbmcgcmlnaHQpCiB7Ci0gICAgc3Rk
OjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAi
Y2Fubm90IGNvbnZlcnQgZnJvbSAnIiA8PCByaWdodCA8PCAiJyB0byAnIiA8PCBsZWZ0IDw8ICIn
IjsKLSAgICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0g
ICAgZXJyb3IobGluZSwgIiIsIG9wLCBleHRyYUluZm8uY19zdHIoKSk7CisgICAgc3RkOjpzdHJp
bmdzdHJlYW0gcmVhc29uU3RyZWFtOworICAgIHJlYXNvblN0cmVhbSA8PCAiY2Fubm90IGNvbnZl
cnQgZnJvbSAnIiA8PCByaWdodCA8PCAiJyB0byAnIiA8PCBsZWZ0IDw8ICInIjsKKyAgICBzdGQ6
OnN0cmluZyByZWFzb24gPSByZWFzb25TdHJlYW0uc3RyKCk7CisgICAgZXJyb3IobGluZSwgcmVh
c29uLmNfc3RyKCksIG9wKTsKIH0KIAogLy8KQEAgLTE4NCwxMSArMjkwLDEyIEBAIHZvaWQgVFBh
cnNlQ29udGV4dDo6YXNzaWduRXJyb3IoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgY2hh
ciAqb3AsIFRTdHJpbmcKIC8vCiB2b2lkIFRQYXJzZUNvbnRleHQ6OnVuYXJ5T3BFcnJvcihjb25z
dCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBjaGFyICpvcCwgVFN0cmluZyBvcGVyYW5kKQogewot
ICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKLSAgICBleHRyYUluZm9TdHJl
YW0gPDwgIm5vIG9wZXJhdGlvbiAnIiA8PCBvcCA8PCAiJyBleGlzdHMgdGhhdCB0YWtlcyBhbiBv
cGVyYW5kIG9mIHR5cGUgIgotICAgICAgICAgICAgICAgICAgICA8PCBvcGVyYW5kIDw8ICIgKG9y
IHRoZXJlIGlzIG5vIGFjY2VwdGFibGUgY29udmVyc2lvbikiOwotICAgIHN0ZDo6c3RyaW5nIGV4
dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICBlcnJvcihsaW5lLCAiIHdyb25n
IG9wZXJhbmQgdHlwZSIsIG9wLCBleHRyYUluZm8uY19zdHIoKSk7CisgICAgc3RkOjpzdHJpbmdz
dHJlYW0gcmVhc29uU3RyZWFtOworICAgIHJlYXNvblN0cmVhbSA8PCAid3Jvbmcgb3BlcmFuZCB0
eXBlIC0gbm8gb3BlcmF0aW9uICciIDw8IG9wCisgICAgICAgICAgICAgICAgIDw8ICInIGV4aXN0
cyB0aGF0IHRha2VzIGFuIG9wZXJhbmQgb2YgdHlwZSAiIDw8IG9wZXJhbmQKKyAgICAgICAgICAg
ICAgICAgPDwgIiAob3IgdGhlcmUgaXMgbm8gYWNjZXB0YWJsZSBjb252ZXJzaW9uKSI7CisgICAg
c3RkOjpzdHJpbmcgcmVhc29uID0gcmVhc29uU3RyZWFtLnN0cigpOworICAgIGVycm9yKGxpbmUs
IHJlYXNvbi5jX3N0cigpLCBvcCk7CiB9CiAKIC8vCkBAIC0xOTksMTIgKzMwNiwxMyBAQCB2b2lk
IFRQYXJzZUNvbnRleHQ6OmJpbmFyeU9wRXJyb3IoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUU3RyaW5nIGxlZnQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVFN0cmluZyByaWdodCkKIHsKLSAgICBzdGQ6OnN0cmlu
Z3N0cmVhbSBleHRyYUluZm9TdHJlYW07Ci0gICAgZXh0cmFJbmZvU3RyZWFtIDw8ICJubyBvcGVy
YXRpb24gJyIgPDwgb3AgPDwgIicgZXhpc3RzIHRoYXQgdGFrZXMgYSBsZWZ0LWhhbmQgb3BlcmFu
ZCBvZiB0eXBlICciCi0gICAgICAgICAgICAgICAgICAgIDw8IGxlZnQgPDwgIicgYW5kIGEgcmln
aHQgb3BlcmFuZCBvZiB0eXBlICciIDw8IHJpZ2h0Ci0gICAgICAgICAgICAgICAgICAgIDw8ICIn
IChvciB0aGVyZSBpcyBubyBhY2NlcHRhYmxlIGNvbnZlcnNpb24pIjsKLSAgICBzdGQ6OnN0cmlu
ZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0gICAgZXJyb3IobGluZSwgIiB3
cm9uZyBvcGVyYW5kIHR5cGVzICIsIG9wLCBleHRyYUluZm8uY19zdHIoKSk7CisgICAgc3RkOjpz
dHJpbmdzdHJlYW0gcmVhc29uU3RyZWFtOworICAgIHJlYXNvblN0cmVhbSA8PCAid3Jvbmcgb3Bl
cmFuZCB0eXBlcyAtIG5vIG9wZXJhdGlvbiAnIiA8PCBvcAorICAgICAgICAgICAgICAgICA8PCAi
JyBleGlzdHMgdGhhdCB0YWtlcyBhIGxlZnQtaGFuZCBvcGVyYW5kIG9mIHR5cGUgJyIgPDwgbGVm
dAorICAgICAgICAgICAgICAgICA8PCAiJyBhbmQgYSByaWdodCBvcGVyYW5kIG9mIHR5cGUgJyIg
PDwgcmlnaHQKKyAgICAgICAgICAgICAgICAgPDwgIicgKG9yIHRoZXJlIGlzIG5vIGFjY2VwdGFi
bGUgY29udmVyc2lvbikiOworICAgIHN0ZDo6c3RyaW5nIHJlYXNvbiA9IHJlYXNvblN0cmVhbS5z
dHIoKTsKKyAgICBlcnJvcihsaW5lLCByZWFzb24uY19zdHIoKSwgb3ApOwogfQogCiB2b2lkIFRQ
YXJzZUNvbnRleHQ6OmNoZWNrUHJlY2lzaW9uU3BlY2lmaWVkKGNvbnN0IFRTb3VyY2VMb2MgJmxp
bmUsCkBAIC0yMzcsNiArMzQ1LDExIEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6Y2hlY2tQcmVjaXNp
b25TcGVjaWZpZWQoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKICAgICAgICAgICAgICAgICAgICAg
ZXJyb3IobGluZSwgIk5vIHByZWNpc2lvbiBzcGVjaWZpZWQgKHNhbXBsZXIpIiwgIiIpOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGlmIChJc0ltYWdlKHR5cGUpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgZXJyb3IobGluZSwgIk5vIHByZWNpc2lvbiBzcGVjaWZpZWQgKGltYWdlKSIsICIiKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KIH0KQEAgLTI0NSw4ICszNTgsOCBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNr
UHJlY2lzaW9uU3BlY2lmaWVkKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCiAvLyBhbiBsLXZhbHVl
IHRoYXQgY2FuIGJlIG9wZXJhdGVkIG9uIHRoaXMgd2F5LgogYm9vbCBUUGFyc2VDb250ZXh0Ojpj
aGVja0NhbkJlTFZhbHVlKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IGNoYXIgKm9wLCBU
SW50ZXJtVHlwZWQgKm5vZGUpCiB7Ci0gICAgVEludGVybVN5bWJvbCAqc3ltTm9kZSAgICA9IG5v
ZGUtPmdldEFzU3ltYm9sTm9kZSgpOwotICAgIFRJbnRlcm1CaW5hcnkgKmJpbmFyeU5vZGUgPSBu
b2RlLT5nZXRBc0JpbmFyeU5vZGUoKTsKKyAgICBUSW50ZXJtU3ltYm9sICpzeW1Ob2RlICAgICAg
PSBub2RlLT5nZXRBc1N5bWJvbE5vZGUoKTsKKyAgICBUSW50ZXJtQmluYXJ5ICpiaW5hcnlOb2Rl
ICAgPSBub2RlLT5nZXRBc0JpbmFyeU5vZGUoKTsKICAgICBUSW50ZXJtU3dpenpsZSAqc3dpenps
ZU5vZGUgPSBub2RlLT5nZXRBc1N3aXp6bGVOb2RlKCk7CiAKICAgICBpZiAoc3dpenpsZU5vZGUp
CkBAIC0yNzYsMTAgKzM4OSw2IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y2hlY2tDYW5CZUxWYWx1
ZShjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBjaGFyICpvcCwgVEluCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBjb25zdCBjaGFyICpzeW1ib2wgPSAwOwotICAgIGlm
IChzeW1Ob2RlICE9IDApCi0gICAgICAgIHN5bWJvbCA9IHN5bU5vZGUtPmdldFN5bWJvbCgpLmNf
c3RyKCk7Ci0KICAgICBjb25zdCBjaGFyICptZXNzYWdlID0gMDsKICAgICBzd2l0Y2ggKG5vZGUt
PmdldFF1YWxpZmllcigpKQogICAgIHsKQEAgLTM0NiwxMSArNDU1LDE1IEBAIGJvb2wgVFBhcnNl
Q29udGV4dDo6Y2hlY2tDYW5CZUxWYWx1ZShjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBj
aGFyICpvcCwgVEluCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJj
YW4ndCBtb2RpZnkgYSBzYW1wbGVyIjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChJ
c0ltYWdlKG5vZGUtPmdldEJhc2ljVHlwZSgpKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBtZXNzYWdlID0gImNhbid0IG1vZGlmeSBhbiBpbWFnZSI7CisgICAgICAgICAgICB9CiAg
ICAgfQogCiAgICAgaWYgKG1lc3NhZ2UgPT0gMCAmJiBiaW5hcnlOb2RlID09IDAgJiYgc3ltTm9k
ZSA9PSAwKQogICAgIHsKLSAgICAgICAgZXJyb3IobGluZSwgIiBsLXZhbHVlIHJlcXVpcmVkIiwg
b3ApOworICAgICAgICBlcnJvcihsaW5lLCAibC12YWx1ZSByZXF1aXJlZCIsIG9wKTsKIAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMzY2LDE3ICs0NzksMTggQEAgYm9vbCBUUGFy
c2VDb250ZXh0OjpjaGVja0NhbkJlTFZhbHVlKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0
IGNoYXIgKm9wLCBUSW4KICAgICAvLwogICAgIGlmIChzeW1Ob2RlKQogICAgIHsKLSAgICAgICAg
c3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAgICBleHRyYUluZm9TdHJl
YW0gPDwgIlwiIiA8PCBzeW1ib2wgPDwgIlwiICgiIDw8IG1lc3NhZ2UgPDwgIikiOwotICAgICAg
ICBzdGQ6OnN0cmluZyBleHRyYUluZm8gPSBleHRyYUluZm9TdHJlYW0uc3RyKCk7Ci0gICAgICAg
IGVycm9yKGxpbmUsICIgbC12YWx1ZSByZXF1aXJlZCIsIG9wLCBleHRyYUluZm8uY19zdHIoKSk7
CisgICAgICAgIGNvbnN0IGNoYXIgKnN5bWJvbCA9IHN5bU5vZGUtPmdldFN5bWJvbCgpLmNfc3Ry
KCk7CisgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHJlYXNvblN0cmVhbTsKKyAgICAgICAgcmVh
c29uU3RyZWFtIDw8ICJsLXZhbHVlIHJlcXVpcmVkICgiIDw8IG1lc3NhZ2UgPDwgIiBcIiIgPDwg
c3ltYm9sIDw8ICJcIikiOworICAgICAgICBzdGQ6OnN0cmluZyByZWFzb24gPSByZWFzb25TdHJl
YW0uc3RyKCk7CisgICAgICAgIGVycm9yKGxpbmUsIHJlYXNvbi5jX3N0cigpLCBvcCk7CiAgICAg
fQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0
cmVhbTsKLSAgICAgICAgZXh0cmFJbmZvU3RyZWFtIDw8ICIoIiA8PCBtZXNzYWdlIDw8ICIpIjsK
LSAgICAgICAgc3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwot
ICAgICAgICBlcnJvcihsaW5lLCAiIGwtdmFsdWUgcmVxdWlyZWQiLCBvcCwgZXh0cmFJbmZvLmNf
c3RyKCkpOworICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSByZWFzb25TdHJlYW07CisgICAgICAg
IHJlYXNvblN0cmVhbSA8PCAibC12YWx1ZSByZXF1aXJlZCAoIiA8PCBtZXNzYWdlIDw8ICIpIjsK
KyAgICAgICAgc3RkOjpzdHJpbmcgcmVhc29uID0gcmVhc29uU3RyZWFtLnN0cigpOworICAgICAg
ICBlcnJvcihsaW5lLCByZWFzb24uY19zdHIoKSwgb3ApOwogICAgIH0KIAogICAgIHJldHVybiBm
YWxzZTsKQEAgLTQyOSw3ICs1NDMsNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNoZWNrSXNOb3RS
ZXNlcnZlZChjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBUU3RyaW5nICZpZAogICAgICAg
ICAgICAgZXJyb3IobGluZSwgcmVzZXJ2ZWRFcnJNc2csICJnbF8iKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBpZiAoSXNXZWJHTEJhc2VkU3BlYyhtU2hh
ZGVyU3BlYykpCisgICAgICAgIGlmIChzaDo6SXNXZWJHTEJhc2VkU3BlYyhtU2hhZGVyU3BlYykp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChpZGVudGlmaWVyLmNvbXBhcmUoMCwgNiwgIndl
YmdsXyIpID09IDApCiAgICAgICAgICAgICB7CkBAIC00NTksOCArNTczLDcgQEAgYm9vbCBUUGFy
c2VDb250ZXh0OjpjaGVja0lzTm90UmVzZXJ2ZWQoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29u
c3QgVFN0cmluZyAmaWQKIC8vIHNvbWV0aGluZyBvZiB0aGUgdHlwZSBvZiB0aGUgY29uc3RydWN0
b3IuICBBbHNvIHJldHVybnMgdGhlIHR5cGUgb2YKIC8vIHRoZSBjb25zdHJ1Y3Rvci4KIGJvb2wg
VFBhcnNlQ29udGV4dDo6Y2hlY2tDb25zdHJ1Y3RvckFyZ3VtZW50cyhjb25zdCBUU291cmNlTG9j
ICZsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJ
bnRlcm1Ob2RlICphcmd1bWVudHNOb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRGdW5jdGlvbiAmZnVuY3Rpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVEludGVybVNlcXVlbmNlICph
cmd1bWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VE9wZXJhdG9yIG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRUeXBlICZ0eXBlKQogewpAQCAtNDkyLDE5ICs2MDUsMTkgQEAgYm9vbCBUUGFy
c2VDb250ZXh0OjpjaGVja0NvbnN0cnVjdG9yQXJndW1lbnRzKGNvbnN0IFRTb3VyY2VMb2MgJmxp
bmUsCiAgICAgYm9vbCBmdWxsICAgICAgICAgICA9IGZhbHNlOwogICAgIGJvb2wgb3ZlckZ1bGwg
ICAgICAgPSBmYWxzZTsKICAgICBib29sIG1hdHJpeEluTWF0cml4ID0gZmFsc2U7Ci0gICAgYm9v
bCBhcnJheUFyZyA9IGZhbHNlOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb24u
Z2V0UGFyYW1Db3VudCgpOyArK2kpCisgICAgYm9vbCBhcnJheUFyZyAgICAgICA9IGZhbHNlOwor
ICAgIGZvciAoVEludGVybU5vZGUgKmFyZyA6ICphcmd1bWVudHMpCiAgICAgewotICAgICAgICBj
b25zdCBUQ29uc3RQYXJhbWV0ZXIgJnBhcmFtID0gZnVuY3Rpb24uZ2V0UGFyYW0oaSk7Ci0gICAg
ICAgIHNpemUgKz0gcGFyYW0udHlwZS0+Z2V0T2JqZWN0U2l6ZSgpOworICAgICAgICBjb25zdCBU
SW50ZXJtVHlwZWQgKmFyZ1R5cGVkID0gYXJnLT5nZXRBc1R5cGVkKCk7CisgICAgICAgIHNpemUg
Kz0gYXJnVHlwZWQtPmdldFR5cGUoKS5nZXRPYmplY3RTaXplKCk7CiAKLSAgICAgICAgaWYgKGNv
bnN0cnVjdGluZ01hdHJpeCAmJiBwYXJhbS50eXBlLT5pc01hdHJpeCgpKQorICAgICAgICBpZiAo
Y29uc3RydWN0aW5nTWF0cml4ICYmIGFyZ1R5cGVkLT5nZXRUeXBlKCkuaXNNYXRyaXgoKSkKICAg
ICAgICAgICAgIG1hdHJpeEluTWF0cml4ID0gdHJ1ZTsKICAgICAgICAgaWYgKGZ1bGwpCiAgICAg
ICAgICAgICBvdmVyRnVsbCA9IHRydWU7CiAgICAgICAgIGlmIChvcCAhPSBFT3BDb25zdHJ1Y3RT
dHJ1Y3QgJiYgIXR5cGUuaXNBcnJheSgpICYmIHNpemUgPj0gdHlwZS5nZXRPYmplY3RTaXplKCkp
CiAgICAgICAgICAgICBmdWxsID0gdHJ1ZTsKLSAgICAgICAgaWYgKHBhcmFtLnR5cGUtPmlzQXJy
YXkoKSkKKyAgICAgICAgaWYgKGFyZ1R5cGVkLT5nZXRUeXBlKCkuaXNBcnJheSgpKQogICAgICAg
ICAgICAgYXJyYXlBcmcgPSB0cnVlOwogICAgIH0KIApAQCAtNTEyLDcgKzYyNSw3IEBAIGJvb2wg
VFBhcnNlQ29udGV4dDo6Y2hlY2tDb25zdHJ1Y3RvckFyZ3VtZW50cyhjb25zdCBUU291cmNlTG9j
ICZsaW5lLAogICAgIHsKICAgICAgICAgLy8gVGhlIHNpemUgb2YgYW4gdW5zaXplZCBjb25zdHJ1
Y3RvciBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gZGV0ZXJtaW5lZC4KICAgICAgICAgQVNTRVJU
KCF0eXBlLmlzVW5zaXplZEFycmF5KCkpOwotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90
Pih0eXBlLmdldEFycmF5U2l6ZSgpKSAhPSBmdW5jdGlvbi5nZXRQYXJhbUNvdW50KCkpCisgICAg
ICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KHR5cGUuZ2V0QXJyYXlTaXplKCkpICE9IGFyZ3Vt
ZW50cy0+c2l6ZSgpKQogICAgICAgICB7CiAgICAgICAgICAgICBlcnJvcihsaW5lLCAiYXJyYXkg
Y29uc3RydWN0b3IgbmVlZHMgb25lIGFyZ3VtZW50IHBlciBhcnJheSBlbGVtZW50IiwgImNvbnN0
cnVjdG9yIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01MjcsNyArNjQwLDcgQEAg
Ym9vbCBUUGFyc2VDb250ZXh0OjpjaGVja0NvbnN0cnVjdG9yQXJndW1lbnRzKGNvbnN0IFRTb3Vy
Y2VMb2MgJmxpbmUsCiAKICAgICBpZiAobWF0cml4SW5NYXRyaXggJiYgIXR5cGUuaXNBcnJheSgp
KQogICAgIHsKLSAgICAgICAgaWYgKGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKSAhPSAxKQorICAg
ICAgICBpZiAoYXJndW1lbnRzLT5zaXplKCkgIT0gMSkKICAgICAgICAgewogICAgICAgICAgICAg
ZXJyb3IobGluZSwgImNvbnN0cnVjdGluZyBtYXRyaXggZnJvbSBtYXRyaXggY2FuIG9ubHkgdGFr
ZSBvbmUgYXJndW1lbnQiLAogICAgICAgICAgICAgICAgICAgImNvbnN0cnVjdG9yIik7CkBAIC01
NDIsNyArNjU1LDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpjaGVja0NvbnN0cnVjdG9yQXJndW1l
bnRzKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCiAgICAgfQogCiAgICAgaWYgKG9wID09IEVPcENv
bnN0cnVjdFN0cnVjdCAmJiAhdHlwZS5pc0FycmF5KCkgJiYKLSAgICAgICAgdHlwZS5nZXRTdHJ1
Y3QoKS0+ZmllbGRzKCkuc2l6ZSgpICE9IGZ1bmN0aW9uLmdldFBhcmFtQ291bnQoKSkKKyAgICAg
ICAgdHlwZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCkuc2l6ZSgpICE9IGFyZ3VtZW50cy0+c2l6ZSgp
KQogICAgIHsKICAgICAgICAgZXJyb3IobGluZSwKICAgICAgICAgICAgICAgIk51bWJlciBvZiBj
b25zdHJ1Y3RvciBwYXJhbWV0ZXJzIGRvZXMgbm90IG1hdGNoIHRoZSBudW1iZXIgb2Ygc3RydWN0
dXJlIGZpZWxkcyIsCkBAIC01NjAsMTQgKzY3MywxMyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNo
ZWNrQ29uc3RydWN0b3JBcmd1bWVudHMoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKICAgICAgICAg
fQogICAgIH0KIAotICAgIGlmIChhcmd1bWVudHNOb2RlID09IG51bGxwdHIpCisgICAgaWYgKGFy
Z3VtZW50cy0+ZW1wdHkoKSkKICAgICB7CiAgICAgICAgIGVycm9yKGxpbmUsICJjb25zdHJ1Y3Rv
ciBkb2VzIG5vdCBoYXZlIGFueSBhcmd1bWVudHMiLCAiY29uc3RydWN0b3IiKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFyZ3VtZW50c0Fn
ZyA9IGFyZ3VtZW50c05vZGUtPmdldEFzQWdncmVnYXRlKCk7Ci0gICAgZm9yIChUSW50ZXJtTm9k
ZSAqJmFyZ05vZGUgOiAqYXJndW1lbnRzQWdnLT5nZXRTZXF1ZW5jZSgpKQorICAgIGZvciAoVElu
dGVybU5vZGUgKmNvbnN0ICZhcmdOb2RlIDogKmFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIFRJ
bnRlcm1UeXBlZCAqYXJnVHlwZWQgPSBhcmdOb2RlLT5nZXRBc1R5cGVkKCk7CiAgICAgICAgIEFT
U0VSVChhcmdUeXBlZCAhPSBudWxscHRyKTsKQEAgLTU3Niw2ICs2ODgsMTEgQEAgYm9vbCBUUGFy
c2VDb250ZXh0OjpjaGVja0NvbnN0cnVjdG9yQXJndW1lbnRzKGNvbnN0IFRTb3VyY2VMb2MgJmxp
bmUsCiAgICAgICAgICAgICBlcnJvcihsaW5lLCAiY2Fubm90IGNvbnZlcnQgYSBzYW1wbGVyIiwg
ImNvbnN0cnVjdG9yIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAg
ICAgICAgaWYgKG9wICE9IEVPcENvbnN0cnVjdFN0cnVjdCAmJiBJc0ltYWdlKGFyZ1R5cGVkLT5n
ZXRCYXNpY1R5cGUoKSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsICJjYW5u
b3QgY29udmVydCBhbiBpbWFnZSIsICJjb25zdHJ1Y3RvciIpOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CiAgICAgICAgIGlmIChhcmdUeXBlZC0+Z2V0QmFzaWNUeXBlKCkg
PT0gRWJ0Vm9pZCkKICAgICAgICAgewogICAgICAgICAgICAgZXJyb3IobGluZSwgImNhbm5vdCBj
b252ZXJ0IGEgdm9pZCIsICJjb25zdHJ1Y3RvciIpOwpAQCAtNTg3LDE0ICs3MDQsMTggQEAgYm9v
bCBUUGFyc2VDb250ZXh0OjpjaGVja0NvbnN0cnVjdG9yQXJndW1lbnRzKGNvbnN0IFRTb3VyY2VM
b2MgJmxpbmUsCiAgICAgewogICAgICAgICAvLyBHTFNMIEVTIDMuMDAgc2VjdGlvbiA1LjQuNDog
RWFjaCBhcmd1bWVudCBtdXN0IGJlIHRoZSBzYW1lIHR5cGUgYXMgdGhlIGVsZW1lbnQgdHlwZSBv
ZgogICAgICAgICAvLyB0aGUgYXJyYXkuCi0gICAgICAgIGZvciAoVEludGVybU5vZGUgKiZhcmdO
b2RlIDogKmFyZ3VtZW50c0FnZy0+Z2V0U2VxdWVuY2UoKSkKKyAgICAgICAgZm9yIChUSW50ZXJt
Tm9kZSAqY29uc3QgJmFyZ05vZGUgOiAqYXJndW1lbnRzKQogICAgICAgICB7CiAgICAgICAgICAg
ICBjb25zdCBUVHlwZSAmYXJnVHlwZSA9IGFyZ05vZGUtPmdldEFzVHlwZWQoKS0+Z2V0VHlwZSgp
OwotICAgICAgICAgICAgLy8gSXQgaGFzIGFscmVhZHkgYmVlbiBjaGVja2VkIHRoYXQgdGhlIGFy
Z3VtZW50IGlzIG5vdCBhbiBhcnJheS4KLSAgICAgICAgICAgIEFTU0VSVCghYXJnVHlwZS5pc0Fy
cmF5KCkpOworICAgICAgICAgICAgLy8gSXQgaGFzIGFscmVhZHkgYmVlbiBjaGVja2VkIHRoYXQg
dGhlIGFyZ3VtZW50IGlzIG5vdCBhbiBhcnJheSwgYnV0IHdlIGNhbiBhcnJpdmUKKyAgICAgICAg
ICAgIC8vIGhlcmUgZHVlIHRvIHByaW9yIGVycm9yIGNvbmRpdGlvbnMuCisgICAgICAgICAgICBp
ZiAoYXJnVHlwZS5pc0FycmF5KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFhcmdUeXBlLnNhbWVF
bGVtZW50VHlwZSh0eXBlKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBlcnJvcihs
aW5lLCAiQXJyYXkgY29uc3RydWN0b3IgYXJndW1lbnQgaGFzIGFuIGluY29ycmVjdCB0eXBlIiwg
IkVycm9yIik7CisgICAgICAgICAgICAgICAgZXJyb3IobGluZSwgIkFycmF5IGNvbnN0cnVjdG9y
IGFyZ3VtZW50IGhhcyBhbiBpbmNvcnJlY3QgdHlwZSIsICJjb25zdHJ1Y3RvciIpOwogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNjAy
LDE0ICs3MjMsMTQgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpjaGVja0NvbnN0cnVjdG9yQXJndW1l
bnRzKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCiAgICAgZWxzZSBpZiAob3AgPT0gRU9wQ29uc3Ry
dWN0U3RydWN0KQogICAgIHsKICAgICAgICAgY29uc3QgVEZpZWxkTGlzdCAmZmllbGRzID0gdHlw
ZS5nZXRTdHJ1Y3QoKS0+ZmllbGRzKCk7Ci0gICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJncyAg
ICA9IGFyZ3VtZW50c0FnZy0+Z2V0U2VxdWVuY2UoKTsKIAogICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGZpZWxkcy5zaXplKCk7IGkrKykKICAgICAgICAgewotICAgICAgICAgICAgaWYg
KGkgPj0gYXJncy0+c2l6ZSgpIHx8ICgqYXJncylbaV0tPmdldEFzVHlwZWQoKS0+Z2V0VHlwZSgp
ICE9ICpmaWVsZHNbaV0tPnR5cGUoKSkKKyAgICAgICAgICAgIGlmIChpID49IGFyZ3VtZW50cy0+
c2l6ZSgpIHx8CisgICAgICAgICAgICAgICAgKCphcmd1bWVudHMpW2ldLT5nZXRBc1R5cGVkKCkt
PmdldFR5cGUoKSAhPSAqZmllbGRzW2ldLT50eXBlKCkpCiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgZXJyb3IobGluZSwgIlN0cnVjdHVyZSBjb25zdHJ1Y3RvciBhcmd1bWVudHMgZG8g
bm90IG1hdGNoIHN0cnVjdHVyZSBmaWVsZHMiLAotICAgICAgICAgICAgICAgICAgICAgICJFcnJv
ciIpOworICAgICAgICAgICAgICAgICAgICAgICJjb25zdHJ1Y3RvciIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNjYyLDkgKzc4
MywxMiBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmNoZWNrSXNOb3RTYW1wbGVyKGNvbnN0IFRTb3Vy
Y2VMb2MgJmxpbmUsCiB7CiAgICAgaWYgKHBUeXBlLnR5cGUgPT0gRWJ0U3RydWN0KQogICAgIHsK
LSAgICAgICAgaWYgKGNvbnRhaW5zU2FtcGxlcigqcFR5cGUudXNlckRlZikpCisgICAgICAgIGlm
IChDb250YWluc1NhbXBsZXIoKnBUeXBlLnVzZXJEZWYpKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBlcnJvcihsaW5lLCByZWFzb24sIGdldEJhc2ljU3RyaW5nKHBUeXBlLnR5cGUpLCAiKHN0cnVj
dHVyZSBjb250YWlucyBhIHNhbXBsZXIpIik7CisgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVh
bSByZWFzb25TdHJlYW07CisgICAgICAgICAgICByZWFzb25TdHJlYW0gPDwgcmVhc29uIDw8ICIg
KHN0cnVjdHVyZSBjb250YWlucyBhIHNhbXBsZXIpIjsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5n
IHJlYXNvblN0ciA9IHJlYXNvblN0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgIGVycm9yKGxpbmUs
IHJlYXNvblN0ci5jX3N0cigpLCBnZXRCYXNpY1N0cmluZyhwVHlwZS50eXBlKSk7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtNjc5LDYgKzgwMywzNCBAQCBib29s
IFRQYXJzZUNvbnRleHQ6OmNoZWNrSXNOb3RTYW1wbGVyKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUs
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgVFBhcnNlQ29udGV4dDo6Y2hlY2tJc05vdElt
YWdlKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUVHlwZVNwZWNpZmllck5vbkFycmF5ICZwVHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKK3sKKyAgICBpZiAo
cFR5cGUudHlwZSA9PSBFYnRTdHJ1Y3QpCisgICAgeworICAgICAgICBpZiAoQ29udGFpbnNJbWFn
ZSgqcFR5cGUudXNlckRlZikpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIHJlYXNvblN0cmVhbTsKKyAgICAgICAgICAgIHJlYXNvblN0cmVhbSA8PCByZWFzb24gPDwg
IiAoc3RydWN0dXJlIGNvbnRhaW5zIGFuIGltYWdlKSI7CisgICAgICAgICAgICBzdGQ6OnN0cmlu
ZyByZWFzb25TdHIgPSByZWFzb25TdHJlYW0uc3RyKCk7CisgICAgICAgICAgICBlcnJvcihsaW5l
LCByZWFzb25TdHIuY19zdHIoKSwgZ2V0QmFzaWNTdHJpbmcocFR5cGUudHlwZSkpOworCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgZWxzZSBpZiAoSXNJbWFnZShwVHlwZS50eXBlKSkKKyAgICB7CisgICAgICAg
IGVycm9yKGxpbmUsIHJlYXNvbiwgZ2V0QmFzaWNTdHJpbmcocFR5cGUudHlwZSkpOworCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9pZCBU
UGFyc2VDb250ZXh0OjpjaGVja0RlY2xhcmF0b3JMb2NhdGlvbklzTm90U3BlY2lmaWVkKGNvbnN0
IFRTb3VyY2VMb2MgJmxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFB1YmxpY1R5cGUgJnBUeXBlKQogewpAQCAtNjk0
LDM4ICs4NDYsNDQgQEAgdm9pZCBUUGFyc2VDb250ZXh0OjpjaGVja0xvY2F0aW9uSXNOb3RTcGVj
aWZpZWQoY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sCiB7CiAgICAgaWYgKGxheW91dFF1YWxp
Zmllci5sb2NhdGlvbiAhPSAtMSkKICAgICB7Ci0gICAgICAgIGVycm9yKGxvY2F0aW9uLCAiaW52
YWxpZCBsYXlvdXQgcXVhbGlmaWVyOiIsICJsb2NhdGlvbiIsCi0gICAgICAgICAgICAgICJvbmx5
IHZhbGlkIG9uIHByb2dyYW0gaW5wdXRzIGFuZCBvdXRwdXRzIik7CisgICAgICAgIGNvbnN0IGNo
YXIgKmVycm9yTXNnID0gImludmFsaWQgbGF5b3V0IHF1YWxpZmllcjogb25seSB2YWxpZCBvbiBw
cm9ncmFtIGlucHV0cyBhbmQgb3V0cHV0cyI7CisgICAgICAgIGlmIChtU2hhZGVyVmVyc2lvbiA+
PSAzMTApCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yTXNnID0KKyAgICAgICAgICAgICAg
ICAiaW52YWxpZCBsYXlvdXQgcXVhbGlmaWVyOiBvbmx5IHZhbGlkIG9uIHByb2dyYW0gaW5wdXRz
LCBvdXRwdXRzLCBhbmQgdW5pZm9ybXMiOworICAgICAgICB9CisgICAgICAgIGVycm9yKGxvY2F0
aW9uLCBlcnJvck1zZywgImxvY2F0aW9uIik7CiAgICAgfQogfQogCit2b2lkIFRQYXJzZUNvbnRl
eHQ6OmNoZWNrT3V0UGFyYW1ldGVySXNOb3RPcGFxdWVUeXBlKGNvbnN0IFRTb3VyY2VMb2MgJmxp
bmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFRRdWFsaWZpZXIgcXVhbGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSkKK3sKKyAgICBjaGVja091dFBh
cmFtZXRlcklzTm90U2FtcGxlcihsaW5lLCBxdWFsaWZpZXIsIHR5cGUpOworICAgIGNoZWNrT3V0
UGFyYW1ldGVySXNOb3RJbWFnZShsaW5lLCBxdWFsaWZpZXIsIHR5cGUpOworfQorCiB2b2lkIFRQ
YXJzZUNvbnRleHQ6OmNoZWNrT3V0UGFyYW1ldGVySXNOb3RTYW1wbGVyKGNvbnN0IFRTb3VyY2VM
b2MgJmxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSkKIHsKLSAgICBpZiAoKHF1YWxp
ZmllciA9PSBFdnFPdXQgfHwgcXVhbGlmaWVyID09IEV2cUluT3V0KSAmJiB0eXBlLmdldEJhc2lj
VHlwZSgpICE9IEVidFN0cnVjdCAmJgotICAgICAgICBJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5
cGUoKSkpCisgICAgQVNTRVJUKHF1YWxpZmllciA9PSBFdnFPdXQgfHwgcXVhbGlmaWVyID09IEV2
cUluT3V0KTsKKyAgICBpZiAoSXNTYW1wbGVyKHR5cGUuZ2V0QmFzaWNUeXBlKCkpKQogICAgIHsK
ICAgICAgICAgZXJyb3IobGluZSwgInNhbXBsZXJzIGNhbm5vdCBiZSBvdXRwdXQgcGFyYW1ldGVy
cyIsIHR5cGUuZ2V0QmFzaWNTdHJpbmcoKSk7CiAgICAgfQogfQogCi1ib29sIFRQYXJzZUNvbnRl
eHQ6OmNvbnRhaW5zU2FtcGxlcihjb25zdCBUVHlwZSAmdHlwZSkKK3ZvaWQgVFBhcnNlQ29udGV4
dDo6Y2hlY2tPdXRQYXJhbWV0ZXJJc05vdEltYWdlKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUXVhbGlmaWVy
IHF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRUeXBlICZ0eXBlKQogewotICAgIGlmIChJc1NhbXBsZXIodHlwZS5nZXRCYXNp
Y1R5cGUoKSkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKHR5cGUuZ2V0QmFzaWNU
eXBlKCkgPT0gRWJ0U3RydWN0IHx8IHR5cGUuaXNJbnRlcmZhY2VCbG9jaygpKQorICAgIEFTU0VS
VChxdWFsaWZpZXIgPT0gRXZxT3V0IHx8IHF1YWxpZmllciA9PSBFdnFJbk91dCk7CisgICAgaWYg
KElzSW1hZ2UodHlwZS5nZXRCYXNpY1R5cGUoKSkpCiAgICAgewotICAgICAgICBjb25zdCBURmll
bGRMaXN0ICZmaWVsZHMgPSB0eXBlLmdldFN0cnVjdCgpLT5maWVsZHMoKTsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGlmIChjb250YWluc1NhbXBsZXIoKmZpZWxkc1tpXS0+dHlwZSgpKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQorICAgICAgICBlcnJvcihsaW5l
LCAiaW1hZ2VzIGNhbm5vdCBiZSBvdXRwdXQgcGFyYW1ldGVycyIsIHR5cGUuZ2V0QmFzaWNTdHJp
bmcoKSk7CiAgICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwogfQogCiAvLyBEbyBzaXplIGNoZWNr
aW5nIGZvciBhbiBhcnJheSB0eXBlJ3Mgc2l6ZS4KQEAgLTg3OCw2ICsxMDM2LDggQEAgYm9vbCBU
UGFyc2VDb250ZXh0OjpkZWNsYXJlVmFyaWFibGUoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKIHsK
ICAgICBBU1NFUlQoKCp2YXJpYWJsZSkgPT0gbnVsbHB0cik7CiAKKyAgICBjaGVja0JpbmRpbmdJ
c1ZhbGlkKGxpbmUsIHR5cGUpOworCiAgICAgYm9vbCBuZWVkc1Jlc2VydmVkQ2hlY2sgPSB0cnVl
OwogCiAgICAgLy8gZ2xfTGFzdEZyYWdEYXRhIG1heSBiZSByZWRlY2xhcmVkIHdpdGggYSBuZXcg
cHJlY2lzaW9uIHF1YWxpZmllcgpAQCAtOTIyLDExICsxMDgyLDIwIEBAIHZvaWQgVFBhcnNlQ29u
dGV4dDo6Y2hlY2tJc1BhcmFtZXRlclF1YWxpZmllclZhbGlkKAogICAgIGNvbnN0IFRUeXBlUXVh
bGlmaWVyQnVpbGRlciAmdHlwZVF1YWxpZmllckJ1aWxkZXIsCiAgICAgVFR5cGUgKnR5cGUpCiB7
Ci0gICAgVFR5cGVRdWFsaWZpZXIgdHlwZVF1YWxpZmllciA9IHR5cGVRdWFsaWZpZXJCdWlsZGVy
LmdldFBhcmFtZXRlclR5cGVRdWFsaWZpZXIoJm1EaWFnbm9zdGljcyk7CisgICAgVFR5cGVRdWFs
aWZpZXIgdHlwZVF1YWxpZmllciA9IHR5cGVRdWFsaWZpZXJCdWlsZGVyLmdldFBhcmFtZXRlclR5
cGVRdWFsaWZpZXIobURpYWdub3N0aWNzKTsKIAogICAgIGlmICh0eXBlUXVhbGlmaWVyLnF1YWxp
ZmllciA9PSBFdnFPdXQgfHwgdHlwZVF1YWxpZmllci5xdWFsaWZpZXIgPT0gRXZxSW5PdXQpCiAg
ICAgewotICAgICAgICBjaGVja091dFBhcmFtZXRlcklzTm90U2FtcGxlcihsaW5lLCB0eXBlUXVh
bGlmaWVyLnF1YWxpZmllciwgKnR5cGUpOworICAgICAgICBjaGVja091dFBhcmFtZXRlcklzTm90
T3BhcXVlVHlwZShsaW5lLCB0eXBlUXVhbGlmaWVyLnF1YWxpZmllciwgKnR5cGUpOworICAgIH0K
KworICAgIGlmICghSXNJbWFnZSh0eXBlLT5nZXRCYXNpY1R5cGUoKSkpCisgICAgeworICAgICAg
ICBjaGVja01lbW9yeVF1YWxpZmllcklzTm90U3BlY2lmaWVkKHR5cGVRdWFsaWZpZXIubWVtb3J5
UXVhbGlmaWVyLCBsaW5lKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgdHlwZS0+
c2V0TWVtb3J5UXVhbGlmaWVyKHR5cGVRdWFsaWZpZXIubWVtb3J5UXVhbGlmaWVyKTsKICAgICB9
CiAKICAgICB0eXBlLT5zZXRRdWFsaWZpZXIodHlwZVF1YWxpZmllci5xdWFsaWZpZXIpOwpAQCAt
OTQzLDI0ICsxMTEyLDQ1IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y2hlY2tDYW5Vc2VFeHRlbnNp
b24oY29uc3QgVFNvdXJjZUxvYyAmbGluZSwgY29uc3QgVFN0cmluZyAmCiAgICAgVEV4dGVuc2lv
bkJlaGF2aW9yOjpjb25zdF9pdGVyYXRvciBpdGVyID0gZXh0QmVoYXZpb3IuZmluZChleHRlbnNp
b24uY19zdHIoKSk7CiAgICAgaWYgKGl0ZXIgPT0gZXh0QmVoYXZpb3IuZW5kKCkpCiAgICAgewot
ICAgICAgICBlcnJvcihsaW5lLCAiZXh0ZW5zaW9uIiwgZXh0ZW5zaW9uLmNfc3RyKCksICJpcyBu
b3Qgc3VwcG9ydGVkIik7CisgICAgICAgIGVycm9yKGxpbmUsICJleHRlbnNpb24gaXMgbm90IHN1
cHBvcnRlZCIsIGV4dGVuc2lvbi5jX3N0cigpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KICAgICAvLyBJbiBHTFNMIEVTLCBhbiBleHRlbnNpb24ncyBkZWZhdWx0IGJlaGF2aW9yIGlz
ICJkaXNhYmxlIi4KICAgICBpZiAoaXRlci0+c2Vjb25kID09IEVCaERpc2FibGUgfHwgaXRlci0+
c2Vjb25kID09IEVCaFVuZGVmaW5lZCkKICAgICB7Ci0gICAgICAgIGVycm9yKGxpbmUsICJleHRl
bnNpb24iLCBleHRlbnNpb24uY19zdHIoKSwgImlzIGRpc2FibGVkIik7CisgICAgICAgIC8vIFRP
RE8ob2V0dWFob0BudmlkaWEuY29tKTogVGhpcyBpcyBzbGlnaHRseSBoYWNreS4gTWlnaHQgYmUg
YmV0dGVyIGlmIHN5bWJvbHMgY291bGQgYmUKKyAgICAgICAgLy8gYXNzb2NpYXRlZCB3aXRoIG1v
cmUgdGhhbiBvbmUgZXh0ZW5zaW9uLgorICAgICAgICBpZiAoZXh0ZW5zaW9uID09ICJHTF9PVlJf
bXVsdGl2aWV3IikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGNoZWNrQ2FuVXNlRXh0
ZW5zaW9uKGxpbmUsICJHTF9PVlJfbXVsdGl2aWV3MiIpOworICAgICAgICB9CisgICAgICAgIGVy
cm9yKGxpbmUsICJleHRlbnNpb24gaXMgZGlzYWJsZWQiLCBleHRlbnNpb24uY19zdHIoKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGl0ZXItPnNlY29uZCA9PSBFQmhX
YXJuKQogICAgIHsKLSAgICAgICAgd2FybmluZyhsaW5lLCAiZXh0ZW5zaW9uIiwgZXh0ZW5zaW9u
LmNfc3RyKCksICJpcyBiZWluZyB1c2VkIik7CisgICAgICAgIHdhcm5pbmcobGluZSwgImV4dGVu
c2lvbiBpcyBiZWluZyB1c2VkIiwgZXh0ZW5zaW9uLmNfc3RyKCkpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBUUGFyc2VDb250ZXh0
OjplbXB0eURlY2xhcmF0aW9uRXJyb3JDaGVjayhjb25zdCBUUHVibGljVHlwZSAmcHVibGljVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFNvdXJjZUxvYyAmbG9jYXRpb24pCit7CisgICAgaWYgKHB1YmxpY1R5cGUuaXNVbnNpemVkQXJy
YXkoKSkKKyAgICB7CisgICAgICAgIC8vIEVTU0wzIHNwZWMgc2VjdGlvbiA0LjEuOTogQXJyYXkg
ZGVjbGFyYXRpb24gd2hpY2ggbGVhdmVzIHRoZSBzaXplIHVuc3BlY2lmaWVkIGlzIGFuCisgICAg
ICAgIC8vIGVycm9yLiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhpcyBhcHBsaWVzIHRvIGVtcHR5IGRl
Y2xhcmF0aW9ucyBhcyB3ZWxsLgorICAgICAgICBlcnJvcihsb2NhdGlvbiwgImVtcHR5IGFycmF5
IGRlY2xhcmF0aW9uIG5lZWRzIHRvIHNwZWNpZnkgYSBzaXplIiwgIiIpOworICAgIH0KKyAgICBp
ZiAocHVibGljVHlwZS5xdWFsaWZpZXIgPT0gRXZxU2hhcmVkICYmICFwdWJsaWNUeXBlLmxheW91
dFF1YWxpZmllci5pc0VtcHR5KCkpCisgICAgeworICAgICAgICBlcnJvcihsb2NhdGlvbiwgIlNo
YXJlZCBtZW1vcnkgZGVjbGFyYXRpb25zIGNhbm5vdCBoYXZlIGxheW91dCBzcGVjaWZpZWQiLCAi
bGF5b3V0Iik7CisgICAgfQorfQorCiAvLyBUaGVzZSBjaGVja3MgYXJlIGNvbW1vbiBmb3IgYWxs
IGRlY2xhcmF0aW9ucyBzdGFydGluZyBhIGRlY2xhcmF0b3IgbGlzdCwgYW5kIGRlY2xhcmF0b3Jz
IHRoYXQKIC8vIGZvbGxvdyBhbiBlbXB0eSBkZWNsYXJhdGlvbi4KIHZvaWQgVFBhcnNlQ29udGV4
dDo6c2luZ2xlRGVjbGFyYXRpb25FcnJvckNoZWNrKGNvbnN0IFRQdWJsaWNUeXBlICZwdWJsaWNU
eXBlLApAQCAtOTkxLDMwICsxMTgxLDE2NiBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OnNpbmdsZURl
Y2xhcmF0aW9uRXJyb3JDaGVjayhjb25zdCBUUHVibGljVHlwZSAmcHVibGljVHlwZSwKICAgICB7
CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKHB1YmxpY1R5cGUucXVhbGlmaWVyICE9
IEV2cVVuaWZvcm0gJiYKKyAgICAgICAgIWNoZWNrSXNOb3RJbWFnZShpZGVudGlmaWVyTG9jYXRp
b24sIHB1YmxpY1R5cGUudHlwZVNwZWNpZmllck5vbkFycmF5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICJpbWFnZXMgbXVzdCBiZSB1bmlmb3JtIikpCisgICAgeworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgaWYgKChwdWJsaWNUeXBlLnF1YWxpZmllciAhPSBFdnFUZW1wb3Jhcnkg
JiYgcHVibGljVHlwZS5xdWFsaWZpZXIgIT0gRXZxR2xvYmFsICYmCisgICAgICAgICBwdWJsaWNU
eXBlLnF1YWxpZmllciAhPSBFdnFDb25zdCkgJiYKKyAgICAgICAgcHVibGljVHlwZS5nZXRCYXNp
Y1R5cGUoKSA9PSBFYnRZdXZDc2NTdGFuZGFyZEVYVCkKKyAgICB7CisgICAgICAgIGVycm9yKGlk
ZW50aWZpZXJMb2NhdGlvbiwgImNhbm5vdCBiZSB1c2VkIHdpdGggYSB5dXZDc2NTdGFuZGFyZEVY
VCIsCisgICAgICAgICAgICAgIGdldFF1YWxpZmllclN0cmluZyhwdWJsaWNUeXBlLnF1YWxpZmll
cikpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgLy8gY2hlY2sgZm9yIGxheW91dCBx
dWFsaWZpZXIgaXNzdWVzCiAgICAgY29uc3QgVExheW91dFF1YWxpZmllciBsYXlvdXRRdWFsaWZp
ZXIgPSBwdWJsaWNUeXBlLmxheW91dFF1YWxpZmllcjsKIAogICAgIGlmIChsYXlvdXRRdWFsaWZp
ZXIubWF0cml4UGFja2luZyAhPSBFbXBVbnNwZWNpZmllZCkKICAgICB7Ci0gICAgICAgIGVycm9y
KGlkZW50aWZpZXJMb2NhdGlvbiwgImxheW91dCBxdWFsaWZpZXIiLAotICAgICAgICAgICAgICBn
ZXRNYXRyaXhQYWNraW5nU3RyaW5nKGxheW91dFF1YWxpZmllci5tYXRyaXhQYWNraW5nKSwKLSAg
ICAgICAgICAgICAgIm9ubHkgdmFsaWQgZm9yIGludGVyZmFjZSBibG9ja3MiKTsKKyAgICAgICAg
ZXJyb3IoaWRlbnRpZmllckxvY2F0aW9uLCAibGF5b3V0IHF1YWxpZmllciBvbmx5IHZhbGlkIGZv
ciBpbnRlcmZhY2UgYmxvY2tzIiwKKyAgICAgICAgICAgICAgZ2V0TWF0cml4UGFja2luZ1N0cmlu
ZyhsYXlvdXRRdWFsaWZpZXIubWF0cml4UGFja2luZykpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKGxheW91dFF1YWxpZmllci5ibG9ja1N0b3JhZ2UgIT0gRWJzVW5zcGVjaWZp
ZWQpCiAgICAgewotICAgICAgICBlcnJvcihpZGVudGlmaWVyTG9jYXRpb24sICJsYXlvdXQgcXVh
bGlmaWVyIiwKLSAgICAgICAgICAgICAgZ2V0QmxvY2tTdG9yYWdlU3RyaW5nKGxheW91dFF1YWxp
Zmllci5ibG9ja1N0b3JhZ2UpLAotICAgICAgICAgICAgICAib25seSB2YWxpZCBmb3IgaW50ZXJm
YWNlIGJsb2NrcyIpOworICAgICAgICBlcnJvcihpZGVudGlmaWVyTG9jYXRpb24sICJsYXlvdXQg
cXVhbGlmaWVyIG9ubHkgdmFsaWQgZm9yIGludGVyZmFjZSBibG9ja3MiLAorICAgICAgICAgICAg
ICBnZXRCbG9ja1N0b3JhZ2VTdHJpbmcobGF5b3V0UXVhbGlmaWVyLmJsb2NrU3RvcmFnZSkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHB1YmxpY1R5cGUucXVhbGlmaWVyICE9
IEV2cVZlcnRleEluICYmIHB1YmxpY1R5cGUucXVhbGlmaWVyICE9IEV2cUZyYWdtZW50T3V0KQor
ICAgIGJvb2wgY2FuSGF2ZUxvY2F0aW9uID0KKyAgICAgICAgcHVibGljVHlwZS5xdWFsaWZpZXIg
PT0gRXZxVmVydGV4SW4gfHwgcHVibGljVHlwZS5xdWFsaWZpZXIgPT0gRXZxRnJhZ21lbnRPdXQ7
CisKKyAgICBpZiAobVNoYWRlclZlcnNpb24gPj0gMzEwICYmIHB1YmxpY1R5cGUucXVhbGlmaWVy
ID09IEV2cVVuaWZvcm0pCisgICAgeworICAgICAgICBjYW5IYXZlTG9jYXRpb24gPSB0cnVlOwor
CisgICAgICAgIC8vIFZhbGlkIHVuaWZvcm0gZGVjbGFyYXRpb25zIGNhbid0IGJlIHVuc2l6ZWQg
YXJyYXlzIHNpbmNlIHVuaWZvcm1zIGNhbid0IGJlIGluaXRpYWxpemVkLgorICAgICAgICAvLyBC
dXQgaW52YWxpZCBzaGFkZXJzIG1heSBzdGlsbCByZWFjaCBoZXJlIHdpdGggYW4gdW5zaXplZCBh
cnJheSBkZWNsYXJhdGlvbi4KKyAgICAgICAgaWYgKCFwdWJsaWNUeXBlLmlzVW5zaXplZEFycmF5
KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIFRUeXBlIHR5cGUocHVibGljVHlwZSk7CisgICAg
ICAgICAgICBjaGVja1VuaWZvcm1Mb2NhdGlvbkluUmFuZ2UoaWRlbnRpZmllckxvY2F0aW9uLCB0
eXBlLmdldExvY2F0aW9uQ291bnQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWNUeXBlLmxheW91dFF1YWxpZmllcik7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgaWYgKCFjYW5IYXZlTG9jYXRpb24pCiAgICAgewogICAgICAgICBjaGVja0xvY2F0aW9uSXNO
b3RTcGVjaWZpZWQoaWRlbnRpZmllckxvY2F0aW9uLCBwdWJsaWNUeXBlLmxheW91dFF1YWxpZmll
cik7CiAgICAgfQorCisgICAgaWYgKHB1YmxpY1R5cGUucXVhbGlmaWVyID09IEV2cUZyYWdtZW50
T3V0KQorICAgIHsKKyAgICAgICAgaWYgKGxheW91dFF1YWxpZmllci5sb2NhdGlvbiAhPSAtMSAm
JiBsYXlvdXRRdWFsaWZpZXIueXV2ID09IHRydWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVy
cm9yKGlkZW50aWZpZXJMb2NhdGlvbiwgImludmFsaWQgbGF5b3V0IHF1YWxpZmllciBjb21iaW5h
dGlvbiIsICJ5dXYiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBjaGVja1l1dklzTm90U3BlY2lmaWVkKGlkZW50aWZpZXJM
b2NhdGlvbiwgbGF5b3V0UXVhbGlmaWVyLnl1dik7CisgICAgfQorCisgICAgaWYgKElzSW1hZ2Uo
cHVibGljVHlwZS5nZXRCYXNpY1R5cGUoKSkpCisgICAgeworCisgICAgICAgIHN3aXRjaCAobGF5
b3V0UXVhbGlmaWVyLmltYWdlSW50ZXJuYWxGb3JtYXQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNhc2UgRWlpZlJHQkEzMkY6CisgICAgICAgICAgICBjYXNlIEVpaWZSR0JBMTZGOgorICAgICAg
ICAgICAgY2FzZSBFaWlmUjMyRjoKKyAgICAgICAgICAgIGNhc2UgRWlpZlJHQkE4OgorICAgICAg
ICAgICAgY2FzZSBFaWlmUkdCQThfU05PUk06CisgICAgICAgICAgICAgICAgaWYgKCFJc0Zsb2F0
SW1hZ2UocHVibGljVHlwZS5nZXRCYXNpY1R5cGUoKSkpCisgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICBlcnJvcihpZGVudGlmaWVyTG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICJpbnRlcm5hbCBpbWFnZSBmb3JtYXQgcmVxdWlyZXMgYSBmbG9hdGluZyBp
bWFnZSB0eXBlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QmFzaWNTdHJpbmcocHVi
bGljVHlwZS5nZXRCYXNpY1R5cGUoKSkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBFaWlmUkdCQTMySToKKyAgICAgICAgICAgIGNhc2UgRWlpZlJHQkExNkk6CisgICAgICAgICAg
ICBjYXNlIEVpaWZSR0JBOEk6CisgICAgICAgICAgICBjYXNlIEVpaWZSMzJJOgorICAgICAgICAg
ICAgICAgIGlmICghSXNJbnRlZ2VySW1hZ2UocHVibGljVHlwZS5nZXRCYXNpY1R5cGUoKSkpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBlcnJvcihpZGVudGlmaWVyTG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcm5hbCBpbWFnZSBmb3JtYXQg
cmVxdWlyZXMgYW4gaW50ZWdlciBpbWFnZSB0eXBlIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2V0QmFzaWNTdHJpbmcocHVibGljVHlwZS5nZXRCYXNpY1R5cGUoKSkpOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBFaWlmUkdCQTMyVUk6CisgICAgICAgICAgICBjYXNlIEVp
aWZSR0JBMTZVSToKKyAgICAgICAgICAgIGNhc2UgRWlpZlJHQkE4VUk6CisgICAgICAgICAgICBj
YXNlIEVpaWZSMzJVSToKKyAgICAgICAgICAgICAgICBpZiAoIUlzVW5zaWduZWRJbWFnZShwdWJs
aWNUeXBlLmdldEJhc2ljVHlwZSgpKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIGVycm9yKGlkZW50aWZpZXJMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgImludGVybmFsIGltYWdlIGZvcm1hdCByZXF1aXJlcyBhbiB1bnNpZ25lZCBpbWFnZSB0eXBl
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QmFzaWNTdHJpbmcocHVibGljVHlwZS5n
ZXRCYXNpY1R5cGUoKSkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFaWlmVW5z
cGVjaWZpZWQ6CisgICAgICAgICAgICAgICAgZXJyb3IoaWRlbnRpZmllckxvY2F0aW9uLCAibGF5
b3V0IHF1YWxpZmllciIsICJObyBpbWFnZSBpbnRlcm5hbCBmb3JtYXQgc3BlY2lmaWVkIik7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICBlcnJvcihpZGVudGlmaWVyTG9jYXRpb24sICJsYXlvdXQgcXVhbGlmaWVyIiwgInVucmVj
b2duaXplZCB0b2tlbiIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIEdMU0wgRVMgMy4xMCBSZXZpc2lvbiA0LCA0LjkgTWVtb3J5IEFjY2VzcyBRdWFs
aWZpZXJzCisgICAgICAgIHN3aXRjaCAobGF5b3V0UXVhbGlmaWVyLmltYWdlSW50ZXJuYWxGb3Jt
YXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgRWlpZlIzMkY6CisgICAgICAgICAgICBj
YXNlIEVpaWZSMzJJOgorICAgICAgICAgICAgY2FzZSBFaWlmUjMyVUk6CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGlmICghcHVi
bGljVHlwZS5tZW1vcnlRdWFsaWZpZXIucmVhZG9ubHkgJiYgIXB1YmxpY1R5cGUubWVtb3J5UXVh
bGlmaWVyLndyaXRlb25seSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IGVycm9yKGlkZW50aWZpZXJMb2NhdGlvbiwgImxheW91dCBxdWFsaWZpZXIiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAiRXhjZXB0IGZvciBpbWFnZXMgd2l0aCB0aGUgcjMyZiwgcjMyaSBh
bmQgcjMydWkgZm9ybWF0IHF1YWxpZmllcnMsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ImltYWdlIHZhcmlhYmxlcyBtdXN0IGJlIHF1YWxpZmllZCByZWFkb25seSBhbmQvb3Igd3JpdGVv
bmx5Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgY2hlY2tJbnRlcm5hbEZvcm1hdElzTm90U3BlY2lmaWVkKGlkZW50aWZpZXJMb2Nh
dGlvbiwgbGF5b3V0UXVhbGlmaWVyLmltYWdlSW50ZXJuYWxGb3JtYXQpOworCisgICAgICAgIGNo
ZWNrTWVtb3J5UXVhbGlmaWVySXNOb3RTcGVjaWZpZWQocHVibGljVHlwZS5tZW1vcnlRdWFsaWZp
ZXIsIGlkZW50aWZpZXJMb2NhdGlvbik7CisgICAgfQorfQorCit2b2lkIFRQYXJzZUNvbnRleHQ6
OmNoZWNrQmluZGluZ0lzVmFsaWQoY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9u
LCBjb25zdCBUVHlwZSAmdHlwZSkKK3sKKyAgICBUTGF5b3V0UXVhbGlmaWVyIGxheW91dFF1YWxp
ZmllciA9IHR5cGUuZ2V0TGF5b3V0UXVhbGlmaWVyKCk7CisgICAgaW50IGFycmF5U2l6ZSAgICAg
ICAgICAgICAgICAgICAgPSB0eXBlLmlzQXJyYXkoKSA/IHR5cGUuZ2V0QXJyYXlTaXplKCkgOiAx
OworICAgIGlmIChJc0ltYWdlKHR5cGUuZ2V0QmFzaWNUeXBlKCkpKQorICAgIHsKKyAgICAgICAg
Y2hlY2tJbWFnZUJpbmRpbmdJc1ZhbGlkKGlkZW50aWZpZXJMb2NhdGlvbiwgbGF5b3V0UXVhbGlm
aWVyLmJpbmRpbmcsIGFycmF5U2l6ZSk7CisgICAgfQorICAgIGVsc2UgaWYgKElzU2FtcGxlcih0
eXBlLmdldEJhc2ljVHlwZSgpKSkKKyAgICB7CisgICAgICAgIGNoZWNrU2FtcGxlckJpbmRpbmdJ
c1ZhbGlkKGlkZW50aWZpZXJMb2NhdGlvbiwgbGF5b3V0UXVhbGlmaWVyLmJpbmRpbmcsIGFycmF5
U2l6ZSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIEFTU0VSVCghSXNPcGFxdWVU
eXBlKHR5cGUuZ2V0QmFzaWNUeXBlKCkpKTsKKyAgICAgICAgY2hlY2tCaW5kaW5nSXNOb3RTcGVj
aWZpZWQoaWRlbnRpZmllckxvY2F0aW9uLCBsYXlvdXRRdWFsaWZpZXIuYmluZGluZyk7CisgICAg
fQogfQogCiB2b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNrTGF5b3V0UXVhbGlmaWVyU3VwcG9ydGVk
KGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLApAQCAtMTAyNCw3ICsxMzUwLDcgQEAgdm9pZCBU
UGFyc2VDb250ZXh0OjpjaGVja0xheW91dFF1YWxpZmllclN1cHBvcnRlZChjb25zdCBUU291cmNl
TG9jICZsb2NhdGlvbiwKIAogICAgIGlmIChtU2hhZGVyVmVyc2lvbiA8IHZlcnNpb25SZXF1aXJl
ZCkKICAgICB7Ci0gICAgICAgIGVycm9yKGxvY2F0aW9uLCAiaW52YWxpZCBsYXlvdXQgcXVhbGlm
aWVyOiIsIGxheW91dFF1YWxpZmllck5hbWUuY19zdHIoKSwgIm5vdCBzdXBwb3J0ZWQiKTsKKyAg
ICAgICAgZXJyb3IobG9jYXRpb24sICJpbnZhbGlkIGxheW91dCBxdWFsaWZpZXI6IG5vdCBzdXBw
b3J0ZWQiLCBsYXlvdXRRdWFsaWZpZXJOYW1lLmNfc3RyKCkpOwogICAgIH0KIH0KIApAQCAtMTAz
Niw4ICsxMzYyLDEwIEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6Y2hlY2tXb3JrR3JvdXBTaXplSXNO
b3RTcGVjaWZpZWQoY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sCiAgICAgewogICAgICAgICBp
ZiAobG9jYWxTaXplW2ldICE9IC0xKQogICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvcihsb2Nh
dGlvbiwgImludmFsaWQgbGF5b3V0IHF1YWxpZmllcjoiLCBnZXRXb3JrR3JvdXBTaXplU3RyaW5n
KGkpLAotICAgICAgICAgICAgICAgICAgIm9ubHkgdmFsaWQgd2hlbiB1c2VkIHdpdGggJ2luJyBp
biBhIGNvbXB1dGUgc2hhZGVyIGdsb2JhbCBsYXlvdXQgZGVjbGFyYXRpb24iKTsKKyAgICAgICAg
ICAgIGVycm9yKGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgImludmFsaWQgbGF5b3V0IHF1
YWxpZmllcjogb25seSB2YWxpZCB3aGVuIHVzZWQgd2l0aCAnaW4nIGluIGEgY29tcHV0ZSBzaGFk
ZXIgIgorICAgICAgICAgICAgICAgICAgImdsb2JhbCBsYXlvdXQgZGVjbGFyYXRpb24iLAorICAg
ICAgICAgICAgICAgICAgZ2V0V29ya0dyb3VwU2l6ZVN0cmluZyhpKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDQ1LDYgKzEzNzMsNjUgQEAgYm9v
bCBUUGFyc2VDb250ZXh0OjpjaGVja1dvcmtHcm91cFNpemVJc05vdFNwZWNpZmllZChjb25zdCBU
U291cmNlTG9jICZsb2NhdGlvbiwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBUUGFyc2VD
b250ZXh0OjpjaGVja0ludGVybmFsRm9ybWF0SXNOb3RTcGVjaWZpZWQoY29uc3QgVFNvdXJjZUxv
YyAmbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUTGF5b3V0SW1hZ2VJbnRlcm5hbEZvcm1hdCBpbnRlcm5hbEZvcm1hdCkKK3sK
KyAgICBpZiAoaW50ZXJuYWxGb3JtYXQgIT0gRWlpZlVuc3BlY2lmaWVkKQorICAgIHsKKyAgICAg
ICAgZXJyb3IobG9jYXRpb24sICJpbnZhbGlkIGxheW91dCBxdWFsaWZpZXI6IG9ubHkgdmFsaWQg
d2hlbiB1c2VkIHdpdGggaW1hZ2VzIiwKKyAgICAgICAgICAgICAgZ2V0SW1hZ2VJbnRlcm5hbEZv
cm1hdFN0cmluZyhpbnRlcm5hbEZvcm1hdCkpOworICAgIH0KK30KKwordm9pZCBUUGFyc2VDb250
ZXh0OjpjaGVja0JpbmRpbmdJc05vdFNwZWNpZmllZChjb25zdCBUU291cmNlTG9jICZsb2NhdGlv
biwgaW50IGJpbmRpbmcpCit7CisgICAgaWYgKGJpbmRpbmcgIT0gLTEpCisgICAgeworICAgICAg
ICBlcnJvcihsb2NhdGlvbiwKKyAgICAgICAgICAgICAgImludmFsaWQgbGF5b3V0IHF1YWxpZmll
cjogb25seSB2YWxpZCB3aGVuIHVzZWQgd2l0aCBvcGFxdWUgdHlwZXMgb3IgYmxvY2tzIiwKKyAg
ICAgICAgICAgICAgImJpbmRpbmciKTsKKyAgICB9Cit9CisKK3ZvaWQgVFBhcnNlQ29udGV4dDo6
Y2hlY2tJbWFnZUJpbmRpbmdJc1ZhbGlkKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLCBpbnQg
YmluZGluZywgaW50IGFycmF5U2l6ZSkKK3sKKyAgICAvLyBFeHBlY3RzIGFycmF5U2l6ZSB0byBi
ZSAxIHdoZW4gc2V0dGluZyBiaW5kaW5nIGZvciBvbmx5IGEgc2luZ2xlIHZhcmlhYmxlLgorICAg
IGlmIChiaW5kaW5nID49IDAgJiYgYmluZGluZyArIGFycmF5U2l6ZSA+IG1NYXhJbWFnZVVuaXRz
KQorICAgIHsKKyAgICAgICAgZXJyb3IobG9jYXRpb24sICJpbWFnZSBiaW5kaW5nIGdyZWF0ZXIg
dGhhbiBnbF9NYXhJbWFnZVVuaXRzIiwgImJpbmRpbmciKTsKKyAgICB9Cit9CisKK3ZvaWQgVFBh
cnNlQ29udGV4dDo6Y2hlY2tTYW1wbGVyQmluZGluZ0lzVmFsaWQoY29uc3QgVFNvdXJjZUxvYyAm
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBiaW5kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgYXJyYXlTaXplKQoreworICAgIC8vIEV4cGVjdHMgYXJyYXlTaXplIHRvIGJlIDEg
d2hlbiBzZXR0aW5nIGJpbmRpbmcgZm9yIG9ubHkgYSBzaW5nbGUgdmFyaWFibGUuCisgICAgaWYg
KGJpbmRpbmcgPj0gMCAmJiBiaW5kaW5nICsgYXJyYXlTaXplID4gbU1heENvbWJpbmVkVGV4dHVy
ZUltYWdlVW5pdHMpCisgICAgeworICAgICAgICBlcnJvcihsb2NhdGlvbiwgInNhbXBsZXIgYmlu
ZGluZyBncmVhdGVyIHRoYW4gbWF4aW11bSB0ZXh0dXJlIHVuaXRzIiwgImJpbmRpbmciKTsKKyAg
ICB9Cit9CisKK3ZvaWQgVFBhcnNlQ29udGV4dDo6Y2hlY2tVbmlmb3JtTG9jYXRpb25JblJhbmdl
KGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IG9iamVjdExvY2F0aW9uQ291bnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUTGF5b3V0UXVhbGlm
aWVyICZsYXlvdXRRdWFsaWZpZXIpCit7CisgICAgaW50IGxvYyA9IGxheW91dFF1YWxpZmllci5s
b2NhdGlvbjsKKyAgICBpZiAobG9jID49IDAgJiYgbG9jICsgb2JqZWN0TG9jYXRpb25Db3VudCA+
IG1NYXhVbmlmb3JtTG9jYXRpb25zKQorICAgIHsKKyAgICAgICAgZXJyb3IobG9jYXRpb24sICJV
bmlmb3JtIGxvY2F0aW9uIG91dCBvZiByYW5nZSIsICJsb2NhdGlvbiIpOworICAgIH0KK30KKwor
dm9pZCBUUGFyc2VDb250ZXh0OjpjaGVja1l1dklzTm90U3BlY2lmaWVkKGNvbnN0IFRTb3VyY2VM
b2MgJmxvY2F0aW9uLCBib29sIHl1dikKK3sKKyAgICBpZiAoeXV2ICE9IGZhbHNlKQorICAgIHsK
KyAgICAgICAgZXJyb3IobG9jYXRpb24sICJpbnZhbGlkIGxheW91dCBxdWFsaWZpZXI6IG9ubHkg
dmFsaWQgb24gcHJvZ3JhbSBvdXRwdXRzIiwgInl1diIpOworICAgIH0KK30KKwogdm9pZCBUUGFy
c2VDb250ZXh0OjpmdW5jdGlvbkNhbGxMVmFsdWVFcnJvckNoZWNrKGNvbnN0IFRGdW5jdGlvbiAq
Zm5DYW5kaWRhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqZm5DYWxsKQogewpAQCAtMTA1Nyw3ICsxNDQ0LDggQEAg
dm9pZCBUUGFyc2VDb250ZXh0OjpmdW5jdGlvbkNhbGxMVmFsdWVFcnJvckNoZWNrKGNvbnN0IFRG
dW5jdGlvbiAqZm5DYW5kaWRhdGUsCiAgICAgICAgICAgICBpZiAoIWNoZWNrQ2FuQmVMVmFsdWUo
YXJndW1lbnQtPmdldExpbmUoKSwgImFzc2lnbiIsIGFyZ3VtZW50KSkKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBlcnJvcihhcmd1bWVudC0+Z2V0TGluZSgpLAotICAgICAgICAgICAg
ICAgICAgICAgICJDb25zdGFudCB2YWx1ZSBjYW5ub3QgYmUgcGFzc2VkIGZvciAnb3V0JyBvciAn
aW5vdXQnIHBhcmFtZXRlcnMuIiwgIkVycm9yIik7CisgICAgICAgICAgICAgICAgICAgICAgIkNv
bnN0YW50IHZhbHVlIGNhbm5vdCBiZSBwYXNzZWQgZm9yICdvdXQnIG9yICdpbm91dCcgcGFyYW1l
dGVycy4iLAorICAgICAgICAgICAgICAgICAgICAgIGZuQ2FsbC0+Z2V0RnVuY3Rpb25TeW1ib2xJ
bmZvKCktPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KQEAgLTEyMjYsNTAgKzE2MTQsNDMgQEAgVEludGVybVR5cGVk
ICpUUGFyc2VDb250ZXh0OjpwYXJzZVZhcmlhYmxlSWRlbnRpZmllcihjb25zdCBUU291cmNlTG9j
ICZsb2NhdGlvbiwKIHsKICAgICBjb25zdCBUVmFyaWFibGUgKnZhcmlhYmxlID0gZ2V0TmFtZWRW
YXJpYWJsZShsb2NhdGlvbiwgbmFtZSwgc3ltYm9sKTsKIAorICAgIGlmICh2YXJpYWJsZS0+Z2V0
VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cVZpZXdJRE9WUiAmJiBJc1dlYkdMQmFzZWRTcGVj
KG1TaGFkZXJTcGVjKSAmJgorICAgICAgICBtU2hhZGVyVHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFE
RVIgJiYgIWlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT1ZSX211bHRpdmlldzIiKSkKKyAgICB7Cisg
ICAgICAgIC8vIFdFQkdMX211bHRpdmlldyBzcGVjCisgICAgICAgIGVycm9yKGxvY2F0aW9uLCAi
TmVlZCB0byBlbmFibGUgT1ZSX211bHRpdmlldzIgdG8gdXNlIGdsX1ZpZXdJRF9PVlIgaW4gZnJh
Z21lbnQgc2hhZGVyIiwKKyAgICAgICAgICAgICAgImdsX1ZpZXdJRF9PVlIiKTsKKyAgICB9CisK
ICAgICBpZiAodmFyaWFibGUtPmdldENvbnN0UG9pbnRlcigpKQogICAgIHsKICAgICAgICAgY29u
c3QgVENvbnN0YW50VW5pb24gKmNvbnN0QXJyYXkgPSB2YXJpYWJsZS0+Z2V0Q29uc3RQb2ludGVy
KCk7CiAgICAgICAgIHJldHVybiBpbnRlcm1lZGlhdGUuYWRkQ29uc3RhbnRVbmlvbihjb25zdEFy
cmF5LCB2YXJpYWJsZS0+Z2V0VHlwZSgpLCBsb2NhdGlvbik7CiAgICAgfQotICAgIGVsc2UKKyAg
ICBlbHNlIGlmICh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpID09IEV2cVdvcmtH
cm91cFNpemUgJiYKKyAgICAgICAgICAgICBtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZURlY2xhcmVk
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFyaWFibGUt
PmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksIGxvY2F0aW9uKTsKLSAgICB9
Ci19CisgICAgICAgIC8vIGdsX1dvcmtHcm91cFNpemUgY2FuIGJlIHVzZWQgdG8gc2l6ZSBhcnJh
eXMgYWNjb3JkaW5nIHRvIHRoZSBFU1NMIDMuMTAuNCBzcGVjLCBzbyBpdAorICAgICAgICAvLyBu
ZWVkcyB0byBiZSBhZGRlZCB0byB0aGUgQVNUIGFzIGEgY29uc3RhbnQgYW5kIG5vdCBhcyBhIHN5
bWJvbC4KKyAgICAgICAgc2g6OldvcmtHcm91cFNpemUgd29ya0dyb3VwU2l6ZSA9IGdldENvbXB1
dGVTaGFkZXJMb2NhbFNpemUoKTsKKyAgICAgICAgVENvbnN0YW50VW5pb24gKmNvbnN0QXJyYXkg
ICAgICA9IG5ldyBUQ29uc3RhbnRVbmlvblszXTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCAzOyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0QXJyYXlbaV0uc2V0VUNv
bnN0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4od29ya0dyb3VwU2l6ZVtpXSkpOworICAgICAg
ICB9CiAKLS8vCi0vLyBMb29rIHVwIGEgZnVuY3Rpb24gbmFtZSBpbiB0aGUgc3ltYm9sIHRhYmxl
LCBhbmQgbWFrZSBzdXJlIGl0IGlzIGEgZnVuY3Rpb24uCi0vLwotLy8gUmV0dXJuIHRoZSBmdW5j
dGlvbiBzeW1ib2wgaWYgZm91bmQsIG90aGVyd2lzZSAwLgotLy8KLWNvbnN0IFRGdW5jdGlvbiAq
VFBhcnNlQ29udGV4dDo6ZmluZEZ1bmN0aW9uKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURnVuY3Rpb24gKmNhbGws
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5wdXRT
aGFkZXJWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCAqYnVpbHRJbikKLXsKLSAgICAvLyBGaXJzdCBmaW5kIGJ5IHVubWFuZ2xlZCBuYW1l
IHRvIGNoZWNrIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIG5hbWUgaGFzIGJlZW4KLSAgICAvLyBoaWRk
ZW4gYnkgYSB2YXJpYWJsZSBuYW1lIG9yIHN0cnVjdCB0eXBlbmFtZS4KLSAgICAvLyBJZiBhIGZ1
bmN0aW9uIGlzIGZvdW5kLCBjaGVjayBmb3Igb25lIHdpdGggYSBtYXRjaGluZyBhcmd1bWVudCBs
aXN0LgotICAgIGNvbnN0IFRTeW1ib2wgKnN5bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmQoY2FsbC0+
Z2V0TmFtZSgpLCBpbnB1dFNoYWRlclZlcnNpb24sIGJ1aWx0SW4pOwotICAgIGlmIChzeW1ib2wg
PT0gMCB8fCBzeW1ib2wtPmlzRnVuY3Rpb24oKSkKLSAgICB7Ci0gICAgICAgIHN5bWJvbCA9IHN5
bWJvbFRhYmxlLmZpbmQoY2FsbC0+Z2V0TWFuZ2xlZE5hbWUoKSwgaW5wdXRTaGFkZXJWZXJzaW9u
LCBidWlsdEluKTsKLSAgICB9CisgICAgICAgIEFTU0VSVCh2YXJpYWJsZS0+Z2V0VHlwZSgpLmdl
dEJhc2ljVHlwZSgpID09IEVidFVJbnQpOworICAgICAgICBBU1NFUlQodmFyaWFibGUtPmdldFR5
cGUoKS5nZXRPYmplY3RTaXplKCkgPT0gMyk7CiAKLSAgICBpZiAoc3ltYm9sID09IDApCi0gICAg
ewotICAgICAgICBlcnJvcihsaW5lLCAibm8gbWF0Y2hpbmcgb3ZlcmxvYWRlZCBmdW5jdGlvbiBm
b3VuZCIsIGNhbGwtPmdldE5hbWUoKS5jX3N0cigpKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIFRUeXBlIHR5cGUodmFyaWFibGUtPmdldFR5cGUoKSk7CisgICAgICAgIHR5cGUuc2V0UXVh
bGlmaWVyKEV2cUNvbnN0KTsKKyAgICAgICAgcmV0dXJuIGludGVybWVkaWF0ZS5hZGRDb25zdGFu
dFVuaW9uKGNvbnN0QXJyYXksIHR5cGUsIGxvY2F0aW9uKTsKICAgICB9Ci0KLSAgICBpZiAoIXN5
bWJvbC0+aXNGdW5jdGlvbigpKQorICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGVycm9yKGxpbmUs
ICJmdW5jdGlvbiBuYW1lIGV4cGVjdGVkIiwgY2FsbC0+Z2V0TmFtZSgpLmNfc3RyKCkpOwotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIGludGVybWVkaWF0ZS5hZGRTeW1ib2wodmFy
aWFibGUtPmdldFVuaXF1ZUlkKCksIHZhcmlhYmxlLT5nZXROYW1lKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRUeXBlKCksIGxvY2F0aW9uKTsK
ICAgICB9Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVEZ1bmN0aW9uICo+KHN5bWJv
bCk7CiB9CiAKIC8vCkBAIC0xMjgyLDE1ICsxNjYzLDI2IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6
ZXhlY3V0ZUluaXRpYWxpemVyKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFB1YmxpY1R5cGUgJnBU
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVk
ICppbml0aWFsaXplciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJ
bnRlcm1Ob2RlICoqaW50ZXJtTm9kZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJbnRlcm1CaW5hcnkgKippbml0Tm9kZSkKIHsKLSAgICBBU1NFUlQoaW50ZXJtTm9k
ZSAhPSBudWxscHRyKTsKKyAgICBBU1NFUlQoaW5pdE5vZGUgIT0gbnVsbHB0cik7CisgICAgQVNT
RVJUKCppbml0Tm9kZSA9PSBudWxscHRyKTsKICAgICBUVHlwZSB0eXBlID0gVFR5cGUocFR5cGUp
OwogCiAgICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG51bGxwdHI7CiAgICAgaWYgKHR5cGUuaXNV
bnNpemVkQXJyYXkoKSkKICAgICB7Ci0gICAgICAgIHR5cGUuc2V0QXJyYXlTaXplKGluaXRpYWxp
emVyLT5nZXRBcnJheVNpemUoKSk7CisgICAgICAgIC8vIFdlIGhhdmUgbm90IGNoZWNrZWQgeWV0
IHdoZXRoZXIgdGhlIGluaXRpYWxpemVyIGFjdHVhbGx5IGlzIGFuIGFycmF5IG9yIG5vdC4KKyAg
ICAgICAgaWYgKGluaXRpYWxpemVyLT5pc0FycmF5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHR5cGUuc2V0QXJyYXlTaXplKGluaXRpYWxpemVyLT5nZXRBcnJheVNpemUoKSk7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAvLyBIYXZpbmcgYSBub24t
YXJyYXkgaW5pdGlhbGl6ZXIgZm9yIGFuIHVuc2l6ZWQgYXJyYXkgd2lsbCByZXN1bHQgaW4gYW4g
ZXJyb3IgbGF0ZXIsCisgICAgICAgICAgICAvLyBzbyB3ZSBkb24ndCBnZW5lcmF0ZSBhbiBlcnJv
ciBtZXNzYWdlIGhlcmUuCisgICAgICAgICAgICB0eXBlLnNldEFycmF5U2l6ZSgxdSk7CisgICAg
ICAgIH0KICAgICB9CiAgICAgaWYgKCFkZWNsYXJlVmFyaWFibGUobGluZSwgaWRlbnRpZmllciwg
dHlwZSwgJnZhcmlhYmxlKSkKICAgICB7CkBAIC0xMzMzLDEwICsxNzI1LDExIEBAIGJvb2wgVFBh
cnNlQ29udGV4dDo6ZXhlY3V0ZUluaXRpYWxpemVyKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCiAg
ICAgewogICAgICAgICBpZiAocXVhbGlmaWVyICE9IGluaXRpYWxpemVyLT5nZXRUeXBlKCkuZ2V0
UXVhbGlmaWVyKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGV4
dHJhSW5mb1N0cmVhbTsKLSAgICAgICAgICAgIGV4dHJhSW5mb1N0cmVhbSA8PCAiJyIgPDwgdmFy
aWFibGUtPmdldFR5cGUoKS5nZXRDb21wbGV0ZVN0cmluZygpIDw8ICInIjsKLSAgICAgICAgICAg
IHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAg
ICAgIGVycm9yKGxpbmUsICIgYXNzaWduaW5nIG5vbi1jb25zdGFudCB0byIsICI9IiwgZXh0cmFJ
bmZvLmNfc3RyKCkpOworICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gcmVhc29uU3RyZWFt
OworICAgICAgICAgICAgcmVhc29uU3RyZWFtIDw8ICJhc3NpZ25pbmcgbm9uLWNvbnN0YW50IHRv
ICciIDw8IHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0Q29tcGxldGVTdHJpbmcoKQorICAgICAgICAg
ICAgICAgICAgICAgICAgIDw8ICInIjsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHJlYXNvbiA9
IHJlYXNvblN0cmVhbS5zdHIoKTsKKyAgICAgICAgICAgIGVycm9yKGxpbmUsIHJlYXNvbi5jX3N0
cigpLCAiPSIpOwogICAgICAgICAgICAgdmFyaWFibGUtPmdldFR5cGUoKS5zZXRRdWFsaWZpZXIo
RXZxVGVtcG9yYXJ5KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CkBAIC0x
MzU2LDcgKzE3NDksNyBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihj
b25zdCBUU291cmNlTG9jICZsaW5lLAogICAgICAgICBpZiAoaW5pdGlhbGl6ZXItPmdldEFzQ29u
c3RhbnRVbmlvbigpKQogICAgICAgICB7CiAgICAgICAgICAgICB2YXJpYWJsZS0+c2hhcmVDb25z
dFBvaW50ZXIoaW5pdGlhbGl6ZXItPmdldEFzQ29uc3RhbnRVbmlvbigpLT5nZXRVbmlvbkFycmF5
UG9pbnRlcigpKTsKLSAgICAgICAgICAgICppbnRlcm1Ob2RlID0gbnVsbHB0cjsKKyAgICAgICAg
ICAgICppbml0Tm9kZSA9IG51bGxwdHI7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KICAgICAgICAgZWxzZSBpZiAoaW5pdGlhbGl6ZXItPmdldEFzU3ltYm9sTm9kZSgpKQpA
QCAtMTM2OSw3ICsxNzYyLDcgQEAgYm9vbCBUUGFyc2VDb250ZXh0OjpleGVjdXRlSW5pdGlhbGl6
ZXIoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKICAgICAgICAgICAgIGlmIChjb25zdEFycmF5KQog
ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5zaGFyZUNvbnN0UG9pbnRl
cihjb25zdEFycmF5KTsKLSAgICAgICAgICAgICAgICAqaW50ZXJtTm9kZSA9IG51bGxwdHI7Cisg
ICAgICAgICAgICAgICAgKmluaXROb2RlID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTEzNzcsOCArMTc3MCw4IEBA
IGJvb2wgVFBhcnNlQ29udGV4dDo6ZXhlY3V0ZUluaXRpYWxpemVyKGNvbnN0IFRTb3VyY2VMb2Mg
JmxpbmUsCiAKICAgICBUSW50ZXJtU3ltYm9sICppbnRlcm1TeW1ib2wgPSBpbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKAogICAgICAgICB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwgdmFyaWFibGUtPmdl
dE5hbWUoKSwgdmFyaWFibGUtPmdldFR5cGUoKSwgbGluZSk7Ci0gICAgKmludGVybU5vZGUgPSBj
cmVhdGVBc3NpZ24oRU9wSW5pdGlhbGl6ZSwgaW50ZXJtU3ltYm9sLCBpbml0aWFsaXplciwgbGlu
ZSk7Ci0gICAgaWYgKCppbnRlcm1Ob2RlID09IG51bGxwdHIpCisgICAgKmluaXROb2RlID0gY3Jl
YXRlQXNzaWduKEVPcEluaXRpYWxpemUsIGludGVybVN5bWJvbCwgaW5pdGlhbGl6ZXIsIGxpbmUp
OworICAgIGlmICgqaW5pdE5vZGUgPT0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIGFzc2lnbkVy
cm9yKGxpbmUsICI9IiwgaW50ZXJtU3ltYm9sLT5nZXRDb21wbGV0ZVN0cmluZygpLCBpbml0aWFs
aXplci0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTM4
NywxNSArMTc4MCwyOCBAQCBib29sIFRQYXJzZUNvbnRleHQ6OmV4ZWN1dGVJbml0aWFsaXplcihj
b25zdCBUU291cmNlTG9jICZsaW5lLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBUUGFy
c2VDb250ZXh0OjphZGRGdWxseVNwZWNpZmllZFR5cGUoVFB1YmxpY1R5cGUgKnR5cGVTcGVjaWZp
ZXIpCit7CisgICAgY2hlY2tQcmVjaXNpb25TcGVjaWZpZWQodHlwZVNwZWNpZmllci0+Z2V0TGlu
ZSgpLCB0eXBlU3BlY2lmaWVyLT5wcmVjaXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdHlwZVNwZWNpZmllci0+Z2V0QmFzaWNUeXBlKCkpOworCisgICAgaWYgKG1TaGFkZXJWZXJz
aW9uIDwgMzAwICYmIHR5cGVTcGVjaWZpZXItPmFycmF5KQorICAgIHsKKyAgICAgICAgZXJyb3Io
dHlwZVNwZWNpZmllci0+Z2V0TGluZSgpLCAibm90IHN1cHBvcnRlZCIsICJmaXJzdC1jbGFzcyBh
cnJheSIpOworICAgICAgICB0eXBlU3BlY2lmaWVyLT5jbGVhckFycmF5bmVzcygpOworICAgIH0K
K30KKwogVFB1YmxpY1R5cGUgVFBhcnNlQ29udGV4dDo6YWRkRnVsbHlTcGVjaWZpZWRUeXBlKGNv
bnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRlciAmdHlwZVF1YWxpZmllckJ1aWxkZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFB1YmxpY1R5
cGUgJnR5cGVTcGVjaWZpZXIpCiB7Ci0gICAgVFR5cGVRdWFsaWZpZXIgdHlwZVF1YWxpZmllciA9
IHR5cGVRdWFsaWZpZXJCdWlsZGVyLmdldFZhcmlhYmxlVHlwZVF1YWxpZmllcigmbURpYWdub3N0
aWNzKTsKKyAgICBUVHlwZVF1YWxpZmllciB0eXBlUXVhbGlmaWVyID0gdHlwZVF1YWxpZmllckJ1
aWxkZXIuZ2V0VmFyaWFibGVUeXBlUXVhbGlmaWVyKG1EaWFnbm9zdGljcyk7CiAKICAgICBUUHVi
bGljVHlwZSByZXR1cm5UeXBlICAgICA9IHR5cGVTcGVjaWZpZXI7CiAgICAgcmV0dXJuVHlwZS5x
dWFsaWZpZXIgICAgICAgPSB0eXBlUXVhbGlmaWVyLnF1YWxpZmllcjsKICAgICByZXR1cm5UeXBl
LmludmFyaWFudCAgICAgICA9IHR5cGVRdWFsaWZpZXIuaW52YXJpYW50OwogICAgIHJldHVyblR5
cGUubGF5b3V0UXVhbGlmaWVyID0gdHlwZVF1YWxpZmllci5sYXlvdXRRdWFsaWZpZXI7CisgICAg
cmV0dXJuVHlwZS5tZW1vcnlRdWFsaWZpZXIgPSB0eXBlUXVhbGlmaWVyLm1lbW9yeVF1YWxpZmll
cjsKICAgICByZXR1cm5UeXBlLnByZWNpc2lvbiAgICAgICA9IHR5cGVTcGVjaWZpZXIucHJlY2lz
aW9uOwogCiAgICAgaWYgKHR5cGVRdWFsaWZpZXIucHJlY2lzaW9uICE9IEVicFVuZGVmaW5lZCkK
QEAgLTE1MjcsOSArMTkzMyw1MSBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNrSW5wdXRPdXRw
dXRUeXBlSXNWYWxpZEVTMyhjb25zdCBUUXVhbGlmaWVyIHF1YWxpZmllciwKICAgICB9CiB9CiAK
LVRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNlU2luZ2xlRGVjbGFyYXRpb24o
VFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJPclR5
cGVMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllcikKK3ZvaWQgVFBhcnNlQ29udGV4
dDo6Y2hlY2tMb2NhbFZhcmlhYmxlQ29uc3RTdG9yYWdlUXVhbGlmaWVyKGNvbnN0IFRRdWFsaWZp
ZXJXcmFwcGVyQmFzZSAmcXVhbGlmaWVyKQoreworICAgIGlmIChxdWFsaWZpZXIuZ2V0VHlwZSgp
ID09IFF0U3RvcmFnZSkKKyAgICB7CisgICAgICAgIGNvbnN0IFRTdG9yYWdlUXVhbGlmaWVyV3Jh
cHBlciAmc3RvcmFnZVF1YWxpZmllciA9CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBU
U3RvcmFnZVF1YWxpZmllcldyYXBwZXIgJj4ocXVhbGlmaWVyKTsKKyAgICAgICAgaWYgKCFkZWNs
YXJpbmdGdW5jdGlvbigpICYmIHN0b3JhZ2VRdWFsaWZpZXIuZ2V0UXVhbGlmaWVyKCkgIT0gRXZx
Q29uc3QgJiYKKyAgICAgICAgICAgICFzeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGVycm9yKHN0b3JhZ2VRdWFsaWZpZXIuZ2V0TGluZSgpLAorICAg
ICAgICAgICAgICAgICAgIkxvY2FsIHZhcmlhYmxlcyBjYW4gb25seSB1c2UgdGhlIGNvbnN0IHN0
b3JhZ2UgcXVhbGlmaWVyLiIsCisgICAgICAgICAgICAgICAgICBzdG9yYWdlUXVhbGlmaWVyLmdl
dFF1YWxpZmllclN0cmluZygpLmNfc3RyKCkpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IFRQYXJzZUNvbnRleHQ6OmNoZWNrTWVtb3J5UXVhbGlmaWVySXNOb3RTcGVjaWZpZWQoY29uc3Qg
VE1lbW9yeVF1YWxpZmllciAmbWVtb3J5UXVhbGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0
aW9uKQoreworICAgIGlmIChtZW1vcnlRdWFsaWZpZXIucmVhZG9ubHkpCisgICAgeworICAgICAg
ICBlcnJvcihsb2NhdGlvbiwgIk9ubHkgYWxsb3dlZCB3aXRoIGltYWdlcy4iLCAicmVhZG9ubHki
KTsKKyAgICB9CisgICAgaWYgKG1lbW9yeVF1YWxpZmllci53cml0ZW9ubHkpCisgICAgeworICAg
ICAgICBlcnJvcihsb2NhdGlvbiwgIk9ubHkgYWxsb3dlZCB3aXRoIGltYWdlcy4iLCAid3JpdGVv
bmx5Iik7CisgICAgfQorICAgIGlmIChtZW1vcnlRdWFsaWZpZXIuY29oZXJlbnQpCisgICAgewor
ICAgICAgICBlcnJvcihsb2NhdGlvbiwgIk9ubHkgYWxsb3dlZCB3aXRoIGltYWdlcy4iLCAiY29o
ZXJlbnQiKTsKKyAgICB9CisgICAgaWYgKG1lbW9yeVF1YWxpZmllci5yZXN0cmljdFF1YWxpZmll
cikKKyAgICB7CisgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiT25seSBhbGxvd2VkIHdpdGggaW1h
Z2VzLiIsICJyZXN0cmljdCIpOworICAgIH0KKyAgICBpZiAobWVtb3J5UXVhbGlmaWVyLnZvbGF0
aWxlUXVhbGlmaWVyKQorICAgIHsKKyAgICAgICAgZXJyb3IobG9jYXRpb24sICJPbmx5IGFsbG93
ZWQgd2l0aCBpbWFnZXMuIiwgInZvbGF0aWxlIik7CisgICAgfQorfQorCitUSW50ZXJtRGVjbGFy
YXRpb24gKlRQYXJzZUNvbnRleHQ6OnBhcnNlU2luZ2xlRGVjbGFyYXRpb24oCisgICAgVFB1Ymxp
Y1R5cGUgJnB1YmxpY1R5cGUsCisgICAgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllck9yVHlw
ZUxvY2F0aW9uLAorICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIpCiB7CiAgICAgVFR5cGUg
dHlwZShwdWJsaWNUeXBlKTsKICAgICBpZiAoKG1Db21waWxlT3B0aW9ucyAmIFNIX0ZMQVRURU5f
UFJBR01BX1NUREdMX0lOVkFSSUFOVF9BTEwpICYmCkBAIC0xNTY1LDE1ICsyMDEzLDEyIEBAIFRJ
bnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNlU2luZ2xlRGVjbGFyYXRpb24oVFB1
YmxpY1R5cGUgJnB1YmxpY1R5cGUsCiAKICAgICBtRGVmZXJyZWRTaW5nbGVEZWNsYXJhdGlvbkVy
cm9yQ2hlY2sgPSBlbXB0eURlY2xhcmF0aW9uOwogCisgICAgVEludGVybURlY2xhcmF0aW9uICpk
ZWNsYXJhdGlvbiA9IG5ldyBUSW50ZXJtRGVjbGFyYXRpb24oKTsKKyAgICBkZWNsYXJhdGlvbi0+
c2V0TGluZShpZGVudGlmaWVyT3JUeXBlTG9jYXRpb24pOworCiAgICAgaWYgKGVtcHR5RGVjbGFy
YXRpb24pCiAgICAgewotICAgICAgICBpZiAocHVibGljVHlwZS5pc1Vuc2l6ZWRBcnJheSgpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICAvLyBFU1NMMyBzcGVjIHNlY3Rpb24gNC4xLjk6IEFycmF5
IGRlY2xhcmF0aW9uIHdoaWNoIGxlYXZlcyB0aGUgc2l6ZSB1bnNwZWNpZmllZCBpcyBhbgotICAg
ICAgICAgICAgLy8gZXJyb3IuIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGlzIGFwcGxpZXMgdG8gZW1w
dHkgZGVjbGFyYXRpb25zIGFzIHdlbGwuCi0gICAgICAgICAgICBlcnJvcihpZGVudGlmaWVyT3JU
eXBlTG9jYXRpb24sICJlbXB0eSBhcnJheSBkZWNsYXJhdGlvbiBuZWVkcyB0byBzcGVjaWZ5IGEg
c2l6ZSIsCi0gICAgICAgICAgICAgICAgICBpZGVudGlmaWVyLmNfc3RyKCkpOwotICAgICAgICB9
CisgICAgICAgIGVtcHR5RGVjbGFyYXRpb25FcnJvckNoZWNrKHB1YmxpY1R5cGUsIGlkZW50aWZp
ZXJPclR5cGVMb2NhdGlvbik7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0xNTg1LDE3ICsy
MDMwLDIzIEBAIFRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNlU2luZ2xlRGVj
bGFyYXRpb24oVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCiAgICAgICAgIGRlY2xhcmVWYXJpYWJs
ZShpZGVudGlmaWVyT3JUeXBlTG9jYXRpb24sIGlkZW50aWZpZXIsIHR5cGUsICZ2YXJpYWJsZSk7
CiAKICAgICAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKKyAgICAgICAgewogICAgICAgICAg
ICAgc3ltYm9sLT5zZXRJZCh2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSk7CisgICAgICAgIH0KICAg
ICB9CiAKLSAgICByZXR1cm4gVEludGVybWVkaWF0ZTo6TWFrZUFnZ3JlZ2F0ZShzeW1ib2wsIGlk
ZW50aWZpZXJPclR5cGVMb2NhdGlvbik7CisgICAgLy8gV2UgYXBwZW5kIHRoZSBzeW1ib2wgZXZl
biBpZiB0aGUgZGVjbGFyYXRpb24gaXMgZW1wdHksIG1haW5seSBiZWNhdXNlIG9mIHN0cnVjdCBk
ZWNsYXJhdGlvbnMKKyAgICAvLyB0aGF0IG1heSBqdXN0IGRlY2xhcmUgYSB0eXBlLgorICAgIGRl
Y2xhcmF0aW9uLT5hcHBlbmREZWNsYXJhdG9yKHN5bWJvbCk7CisKKyAgICByZXR1cm4gZGVjbGFy
YXRpb247CiB9CiAKLVRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNlU2luZ2xl
QXJyYXlEZWNsYXJhdGlvbihUUHVibGljVHlwZSAmcHVibGljVHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291
cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmaWRlbnRpZmll
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbmRleExvY2F0aW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBl
ZCAqaW5kZXhFeHByZXNzaW9uKQorVEludGVybURlY2xhcmF0aW9uICpUUGFyc2VDb250ZXh0Ojpw
YXJzZVNpbmdsZUFycmF5RGVjbGFyYXRpb24oVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3Ry
aW5nICZpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5kZXhMb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXhFeHByZXNzaW9uKQogewogICAgIG1EZWZlcnJlZFNp
bmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayA9IGZhbHNlOwogCkBAIC0xNjE1LDM4ICsyMDY2LDQ0
IEBAIFRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNlU2luZ2xlQXJyYXlEZWNs
YXJhdGlvbihUUHVibGljVHlwZSAmcHVibGljCiAgICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9IG51
bGxwdHI7CiAgICAgZGVjbGFyZVZhcmlhYmxlKGlkZW50aWZpZXJMb2NhdGlvbiwgaWRlbnRpZmll
ciwgYXJyYXlUeXBlLCAmdmFyaWFibGUpOwogCisgICAgVEludGVybURlY2xhcmF0aW9uICpkZWNs
YXJhdGlvbiA9IG5ldyBUSW50ZXJtRGVjbGFyYXRpb24oKTsKKyAgICBkZWNsYXJhdGlvbi0+c2V0
TGluZShpZGVudGlmaWVyTG9jYXRpb24pOworCiAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0g
aW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCBpZGVudGlmaWVyLCBhcnJheVR5cGUsIGlkZW50aWZp
ZXJMb2NhdGlvbik7CiAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKKyAgICB7CiAgICAgICAg
IHN5bWJvbC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOworICAgICAgICBkZWNsYXJh
dGlvbi0+YXBwZW5kRGVjbGFyYXRvcihzeW1ib2wpOworICAgIH0KIAotICAgIHJldHVybiBUSW50
ZXJtZWRpYXRlOjpNYWtlQWdncmVnYXRlKHN5bWJvbCwgaWRlbnRpZmllckxvY2F0aW9uKTsKKyAg
ICByZXR1cm4gZGVjbGFyYXRpb247CiB9CiAKLVRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRl
eHQ6OnBhcnNlU2luZ2xlSW5pdERlY2xhcmF0aW9uKGNvbnN0IFRQdWJsaWNUeXBlICZwdWJsaWNU
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9uLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFN0cmluZyAmaWRlbnRpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmluaXRMb2NhdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIpCitUSW50ZXJtRGVjbGFyYXRpb24gKlRQYXJz
ZUNvbnRleHQ6OnBhcnNlU2luZ2xlSW5pdERlY2xhcmF0aW9uKGNvbnN0IFRQdWJsaWNUeXBlICZw
dWJsaWNUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlu
aXRMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbml0aWFsaXplcikKIHsKICAgICBtRGVm
ZXJyZWRTaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2sgPSBmYWxzZTsKIAogICAgIHNpbmdsZURl
Y2xhcmF0aW9uRXJyb3JDaGVjayhwdWJsaWNUeXBlLCBpZGVudGlmaWVyTG9jYXRpb24pOwogCi0g
ICAgVEludGVybU5vZGUgKmludGVybU5vZGUgPSBudWxscHRyOwotICAgIGlmICghZXhlY3V0ZUlu
aXRpYWxpemVyKGlkZW50aWZpZXJMb2NhdGlvbiwgaWRlbnRpZmllciwgcHVibGljVHlwZSwgaW5p
dGlhbGl6ZXIsICZpbnRlcm1Ob2RlKSkKLSAgICB7Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIEJ1
aWxkIGludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbgotICAgICAgICAvLwotICAgICAgICByZXR1
cm4gaW50ZXJtTm9kZSA/IFRJbnRlcm1lZGlhdGU6Ok1ha2VBZ2dyZWdhdGUoaW50ZXJtTm9kZSwg
aW5pdExvY2F0aW9uKSA6IG51bGxwdHI7Ci0gICAgfQotICAgIGVsc2UKKyAgICBUSW50ZXJtRGVj
bGFyYXRpb24gKmRlY2xhcmF0aW9uID0gbmV3IFRJbnRlcm1EZWNsYXJhdGlvbigpOworICAgIGRl
Y2xhcmF0aW9uLT5zZXRMaW5lKGlkZW50aWZpZXJMb2NhdGlvbik7CisKKyAgICBUSW50ZXJtQmlu
YXJ5ICppbml0Tm9kZSA9IG51bGxwdHI7CisgICAgaWYgKCFleGVjdXRlSW5pdGlhbGl6ZXIoaWRl
bnRpZmllckxvY2F0aW9uLCBpZGVudGlmaWVyLCBwdWJsaWNUeXBlLCBpbml0aWFsaXplciwgJmlu
aXROb2RlKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBpZiAoaW5p
dE5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRlY2xhcmF0aW9uLT5hcHBlbmREZWNsYXJh
dG9yKGluaXROb2RlKTsKKyAgICAgICAgfQogICAgIH0KKyAgICByZXR1cm4gZGVjbGFyYXRpb247
CiB9CiAKLVRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNlU2luZ2xlQXJyYXlJ
bml0RGVjbGFyYXRpb24oCitUSW50ZXJtRGVjbGFyYXRpb24gKlRQYXJzZUNvbnRleHQ6OnBhcnNl
U2luZ2xlQXJyYXlJbml0RGVjbGFyYXRpb24oCiAgICAgVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUs
CiAgICAgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9uLAogICAgIGNvbnN0IFRT
dHJpbmcgJmlkZW50aWZpZXIsCkBAIC0xNjc0LDI1ICsyMTMxLDI5IEBAIFRJbnRlcm1BZ2dyZWdh
dGUgKlRQYXJzZUNvbnRleHQ6OnBhcnNlU2luZ2xlQXJyYXlJbml0RGVjbGFyYXRpb24oCiAgICAg
Ly8gVGhpcyBlbnN1cmVzIHVzZWxlc3MgZXJyb3IgbWVzc2FnZXMgcmVnYXJkaW5nIHRoZSB2YXJp
YWJsZSdzIG5vbi1hcnJheW5lc3Mgd29uJ3QgZm9sbG93LgogICAgIGFycmF5VHlwZS5zZXRBcnJh
eVNpemUoc2l6ZSk7CiAKKyAgICBUSW50ZXJtRGVjbGFyYXRpb24gKmRlY2xhcmF0aW9uID0gbmV3
IFRJbnRlcm1EZWNsYXJhdGlvbigpOworICAgIGRlY2xhcmF0aW9uLT5zZXRMaW5lKGlkZW50aWZp
ZXJMb2NhdGlvbik7CisKICAgICAvLyBpbml0Tm9kZSB3aWxsIGNvcnJlc3BvbmQgdG8gdGhlIHdo
b2xlIG9mICJ0eXBlIGJbbl0gPSBpbml0aWFsaXplciIuCi0gICAgVEludGVybU5vZGUgKmluaXRO
b2RlID0gbnVsbHB0cjsKKyAgICBUSW50ZXJtQmluYXJ5ICppbml0Tm9kZSA9IG51bGxwdHI7CiAg
ICAgaWYgKCFleGVjdXRlSW5pdGlhbGl6ZXIoaWRlbnRpZmllckxvY2F0aW9uLCBpZGVudGlmaWVy
LCBhcnJheVR5cGUsIGluaXRpYWxpemVyLCAmaW5pdE5vZGUpKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGluaXROb2RlID8gVEludGVybWVkaWF0ZTo6TWFrZUFnZ3JlZ2F0ZShpbml0Tm9kZSwgaW5p
dExvY2F0aW9uKSA6IG51bGxwdHI7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICBpZiAoaW5pdE5vZGUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGRlY2xhcmF0aW9uLT5hcHBlbmREZWNsYXJhdG9yKGluaXROb2RlKTsKKyAgICAgICAgfQog
ICAgIH0KKworICAgIHJldHVybiBkZWNsYXJhdGlvbjsKIH0KIAotVEludGVybUFnZ3JlZ2F0ZSAq
VFBhcnNlQ29udGV4dDo6cGFyc2VJbnZhcmlhbnREZWNsYXJhdGlvbigKK1RJbnRlcm1JbnZhcmlh
bnREZWNsYXJhdGlvbiAqVFBhcnNlQ29udGV4dDo6cGFyc2VJbnZhcmlhbnREZWNsYXJhdGlvbigK
ICAgICBjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXIgJnR5cGVRdWFsaWZpZXJCdWlsZGVyLAog
ICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2MsCiAgICAgY29uc3QgVFN0cmluZyAq
aWRlbnRpZmllciwKICAgICBjb25zdCBUU3ltYm9sICpzeW1ib2wpCiB7Ci0gICAgVFR5cGVRdWFs
aWZpZXIgdHlwZVF1YWxpZmllciA9IHR5cGVRdWFsaWZpZXJCdWlsZGVyLmdldFZhcmlhYmxlVHlw
ZVF1YWxpZmllcigmbURpYWdub3N0aWNzKTsKKyAgICBUVHlwZVF1YWxpZmllciB0eXBlUXVhbGlm
aWVyID0gdHlwZVF1YWxpZmllckJ1aWxkZXIuZ2V0VmFyaWFibGVUeXBlUXVhbGlmaWVyKG1EaWFn
bm9zdGljcyk7CiAKICAgICBpZiAoIXR5cGVRdWFsaWZpZXIuaW52YXJpYW50KQogICAgIHsKQEAg
LTE3MjksMjEgKzIxOTAsMjAgQEAgVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFy
c2VJbnZhcmlhbnREZWNsYXJhdGlvbigKIAogICAgIGNoZWNrSW52YXJpYW50VmFyaWFibGVRdWFs
aWZpZXIodHlwZVF1YWxpZmllci5pbnZhcmlhbnQsIHR5cGUuZ2V0UXVhbGlmaWVyKCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlUXVhbGlmaWVyLmxpbmUpOworICAg
IGNoZWNrTWVtb3J5UXVhbGlmaWVySXNOb3RTcGVjaWZpZWQodHlwZVF1YWxpZmllci5tZW1vcnlR
dWFsaWZpZXIsIHR5cGVRdWFsaWZpZXIubGluZSk7CiAKICAgICBzeW1ib2xUYWJsZS5hZGRJbnZh
cmlhbnRWYXJ5aW5nKHN0ZDo6c3RyaW5nKGlkZW50aWZpZXItPmNfc3RyKCkpKTsKIAogICAgIFRJ
bnRlcm1TeW1ib2wgKmludGVybVN5bWJvbCA9CiAgICAgICAgIGludGVybWVkaWF0ZS5hZGRTeW1i
b2wodmFyaWFibGUtPmdldFVuaXF1ZUlkKCksICppZGVudGlmaWVyLCB0eXBlLCBpZGVudGlmaWVy
TG9jKTsKIAotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSA9IFRJbnRlcm1lZGlhdGU6
Ok1ha2VBZ2dyZWdhdGUoaW50ZXJtU3ltYm9sLCBpZGVudGlmaWVyTG9jKTsKLSAgICBhZ2dyZWdh
dGUtPnNldE9wKEVPcEludmFyaWFudERlY2xhcmF0aW9uKTsKLSAgICByZXR1cm4gYWdncmVnYXRl
OworICAgIHJldHVybiBuZXcgVEludGVybUludmFyaWFudERlY2xhcmF0aW9uKGludGVybVN5bWJv
bCwgaWRlbnRpZmllckxvYyk7CiB9CiAKLVRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6
OnBhcnNlRGVjbGFyYXRvcihUUHVibGljVHlwZSAmcHVibGljVHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dy
ZWdhdGVEZWNsYXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAm
aWRlbnRpZmllcikKK3ZvaWQgVFBhcnNlQ29udGV4dDo6cGFyc2VEZWNsYXJhdG9yKFRQdWJsaWNU
eXBlICZwdWJsaWNUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1EZWNsYXJhdGlvbiAqZGVjbGFyYXRpb25PdXQp
CiB7CiAgICAgLy8gSWYgdGhlIGRlY2xhcmF0aW9uIHN0YXJ0aW5nIHRoaXMgZGVjbGFyYXRvciBs
aXN0IHdhcyBlbXB0eSAoZXhhbXBsZTogaW50LCksIHNvbWUgY2hlY2tzIHdlcmUKICAgICAvLyBu
b3QgcGVyZm9ybWVkLgpAQCAtMTc1OCwyMiArMjIxOCwyMyBAQCBUSW50ZXJtQWdncmVnYXRlICpU
UGFyc2VDb250ZXh0OjpwYXJzZURlY2xhcmF0b3IoVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCiAg
ICAgY2hlY2tDYW5CZURlY2xhcmVkV2l0aG91dEluaXRpYWxpemVyKGlkZW50aWZpZXJMb2NhdGlv
biwgaWRlbnRpZmllciwgJnB1YmxpY1R5cGUpOwogCiAgICAgVFZhcmlhYmxlICp2YXJpYWJsZSA9
IG51bGxwdHI7Ci0gICAgZGVjbGFyZVZhcmlhYmxlKGlkZW50aWZpZXJMb2NhdGlvbiwgaWRlbnRp
ZmllciwgVFR5cGUocHVibGljVHlwZSksICZ2YXJpYWJsZSk7CisgICAgVFR5cGUgdHlwZShwdWJs
aWNUeXBlKTsKKyAgICBkZWNsYXJlVmFyaWFibGUoaWRlbnRpZmllckxvY2F0aW9uLCBpZGVudGlm
aWVyLCB0eXBlLCAmdmFyaWFibGUpOwogCi0gICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0KLSAg
ICAgICAgaW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCBpZGVudGlmaWVyLCBUVHlwZShwdWJsaWNU
eXBlKSwgaWRlbnRpZmllckxvY2F0aW9uKTsKKyAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSBp
bnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsIGlkZW50aWZpZXIsIHR5cGUsIGlkZW50aWZpZXJMb2Nh
dGlvbik7CiAgICAgaWYgKHZhcmlhYmxlICYmIHN5bWJvbCkKKyAgICB7CiAgICAgICAgIHN5bWJv
bC0+c2V0SWQodmFyaWFibGUtPmdldFVuaXF1ZUlkKCkpOwotCi0gICAgcmV0dXJuIGludGVybWVk
aWF0ZS5ncm93QWdncmVnYXRlKGFnZ3JlZ2F0ZURlY2xhcmF0aW9uLCBzeW1ib2wsIGlkZW50aWZp
ZXJMb2NhdGlvbik7CisgICAgICAgIGRlY2xhcmF0aW9uT3V0LT5hcHBlbmREZWNsYXJhdG9yKHN5
bWJvbCk7CisgICAgfQogfQogCi1USW50ZXJtQWdncmVnYXRlICpUUGFyc2VDb250ZXh0OjpwYXJz
ZUFycmF5RGVjbGFyYXRvcihUUHVibGljVHlwZSAmcHVibGljVHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUg
KmFnZ3JlZ2F0ZURlY2xhcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmFycmF5TG9jYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
SW50ZXJtVHlwZWQgKmluZGV4RXhwcmVzc2lvbikKK3ZvaWQgVFBhcnNlQ29udGV4dDo6cGFyc2VB
cnJheURlY2xhcmF0b3IoVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2Nh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0
cmluZyAmaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFNvdXJjZUxvYyAmYXJyYXlMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbmRleEV4cHJlc3Npb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1EZWNsYXJhdGlvbiAq
ZGVjbGFyYXRpb25PdXQpCiB7CiAgICAgLy8gSWYgdGhlIGRlY2xhcmF0aW9uIHN0YXJ0aW5nIHRo
aXMgZGVjbGFyYXRvciBsaXN0IHdhcyBlbXB0eSAoZXhhbXBsZTogaW50LCksIHNvbWUgY2hlY2tz
IHdlcmUKICAgICAvLyBub3QgcGVyZm9ybWVkLgpAQCAtMTc4OSw3ICsyMjUwLDcgQEAgVEludGVy
bUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VBcnJheURlY2xhcmF0b3IoVFB1YmxpY1R5
cGUgJnB1YmxpY1R5cGUsCiAKICAgICBpZiAoY2hlY2tJc1ZhbGlkVHlwZUFuZFF1YWxpZmllckZv
ckFycmF5KGFycmF5TG9jYXRpb24sIHB1YmxpY1R5cGUpKQogICAgIHsKLSAgICAgICAgVFR5cGUg
YXJyYXlUeXBlID0gVFR5cGUocHVibGljVHlwZSk7CisgICAgICAgIFRUeXBlIGFycmF5VHlwZSAg
ID0gVFR5cGUocHVibGljVHlwZSk7CiAgICAgICAgIHVuc2lnbmVkIGludCBzaXplID0gY2hlY2tJ
c1ZhbGlkQXJyYXlTaXplKGFycmF5TG9jYXRpb24sIGluZGV4RXhwcmVzc2lvbik7CiAgICAgICAg
IGFycmF5VHlwZS5zZXRBcnJheVNpemUoc2l6ZSk7CiAKQEAgLTE4MDEsMTggKzIyNjIsMTYgQEAg
VEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VBcnJheURlY2xhcmF0b3IoVFB1
YmxpY1R5cGUgJnB1YmxpY1R5cGUsCiAgICAgICAgIGlmICh2YXJpYWJsZSAmJiBzeW1ib2wpCiAg
ICAgICAgICAgICBzeW1ib2wtPnNldElkKHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpKTsKIAotICAg
ICAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoYWdncmVnYXRlRGVjbGFyYXRp
b24sIHN5bWJvbCwgaWRlbnRpZmllckxvY2F0aW9uKTsKKyAgICAgICAgZGVjbGFyYXRpb25PdXQt
PmFwcGVuZERlY2xhcmF0b3Ioc3ltYm9sKTsKICAgICB9Ci0KLSAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VJbml0RGVjbGFyYXRv
cihjb25zdCBUUHVibGljVHlwZSAmcHVibGljVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqYWdncmVnYXRl
RGVjbGFyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmlu
ZyAmaWRlbnRpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5pdExvY2F0aW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmlu
aXRpYWxpemVyKQordm9pZCBUUGFyc2VDb250ZXh0OjpwYXJzZUluaXREZWNsYXJhdG9yKGNvbnN0
IFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VM
b2MgJmluaXRMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUSW50ZXJtVHlwZWQgKmluaXRpYWxpemVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRJbnRlcm1EZWNsYXJhdGlvbiAqZGVjbGFyYXRpb25PdXQpCiB7CiAgICAg
Ly8gSWYgdGhlIGRlY2xhcmF0aW9uIHN0YXJ0aW5nIHRoaXMgZGVjbGFyYXRvciBsaXN0IHdhcyBl
bXB0eSAoZXhhbXBsZTogaW50LCksIHNvbWUgY2hlY2tzIHdlcmUKICAgICAvLyBub3QgcGVyZm9y
bWVkLgpAQCAtMTgyNCwzNSArMjI4MywyNyBAQCBUSW50ZXJtQWdncmVnYXRlICpUUGFyc2VDb250
ZXh0OjpwYXJzZUluaXREZWNsYXJhdG9yKGNvbnN0IFRQdWJsaWNUeXBlICZwdWJsaWNUeQogCiAg
ICAgY2hlY2tEZWNsYXJhdG9yTG9jYXRpb25Jc05vdFNwZWNpZmllZChpZGVudGlmaWVyTG9jYXRp
b24sIHB1YmxpY1R5cGUpOwogCi0gICAgVEludGVybU5vZGUgKmludGVybU5vZGUgPSBudWxscHRy
OwotICAgIGlmICghZXhlY3V0ZUluaXRpYWxpemVyKGlkZW50aWZpZXJMb2NhdGlvbiwgaWRlbnRp
ZmllciwgcHVibGljVHlwZSwgaW5pdGlhbGl6ZXIsICZpbnRlcm1Ob2RlKSkKKyAgICBUSW50ZXJt
QmluYXJ5ICppbml0Tm9kZSA9IG51bGxwdHI7CisgICAgaWYgKCFleGVjdXRlSW5pdGlhbGl6ZXIo
aWRlbnRpZmllckxvY2F0aW9uLCBpZGVudGlmaWVyLCBwdWJsaWNUeXBlLCBpbml0aWFsaXplciwg
JmluaXROb2RlKSkKICAgICB7CiAgICAgICAgIC8vCiAgICAgICAgIC8vIGJ1aWxkIHRoZSBpbnRl
cm1lZGlhdGUgcmVwcmVzZW50YXRpb24KICAgICAgICAgLy8KLSAgICAgICAgaWYgKGludGVybU5v
ZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpbnRlcm1lZGlhdGUuZ3Jvd0FnZ3Jl
Z2F0ZShhZ2dyZWdhdGVEZWNsYXJhdGlvbiwgaW50ZXJtTm9kZSwgaW5pdExvY2F0aW9uKTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlCisgICAgICAgIGlmIChpbml0Tm9kZSkKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGFnZ3JlZ2F0ZURlY2xhcmF0aW9uOworICAgICAgICAgICAgZGVj
bGFyYXRpb25PdXQtPmFwcGVuZERlY2xhcmF0b3IoaW5pdE5vZGUpOwogICAgICAgICB9CiAgICAg
fQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIH0KIAot
VEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6cGFyc2VBcnJheUluaXREZWNsYXJhdG9y
KGNvbnN0IFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3Jl
Z2F0ZURlY2xhcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmluZGV4TG9j
YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEludGVybVR5cGVkICppbmRleEV4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxv
YyAmaW5pdExvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIpCit2b2lkIFRQYXJz
ZUNvbnRleHQ6OnBhcnNlQXJyYXlJbml0RGVjbGFyYXRvcihjb25zdCBUUHVibGljVHlwZSAmcHVi
bGljVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9j
ICZpbmRleExvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVEludGVybVR5cGVkICppbmRleEV4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbml0TG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQgKmluaXRpYWxpemVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVEludGVybURlY2xhcmF0aW9uICpkZWNsYXJhdGlvbk91dCkKIHsKICAgICAvLyBJZiB0
aGUgZGVjbGFyYXRpb24gc3RhcnRpbmcgdGhpcyBkZWNsYXJhdG9yIGxpc3Qgd2FzIGVtcHR5IChl
eGFtcGxlOiBpbnQsKSwgc29tZSBjaGVja3Mgd2VyZQogICAgIC8vIG5vdCBwZXJmb3JtZWQuCkBA
IC0xODgwLDI3ICsyMzMxLDE5IEBAIFRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OnBh
cnNlQXJyYXlJbml0RGVjbGFyYXRvcihjb25zdCBUUHVibGljVHlwZSAmcHViCiAgICAgYXJyYXlU
eXBlLnNldEFycmF5U2l6ZShzaXplKTsKIAogICAgIC8vIGluaXROb2RlIHdpbGwgY29ycmVzcG9u
ZCB0byB0aGUgd2hvbGUgb2YgImJbbl0gPSBpbml0aWFsaXplciIuCi0gICAgVEludGVybU5vZGUg
KmluaXROb2RlID0gbnVsbHB0cjsKKyAgICBUSW50ZXJtQmluYXJ5ICppbml0Tm9kZSA9IG51bGxw
dHI7CiAgICAgaWYgKCFleGVjdXRlSW5pdGlhbGl6ZXIoaWRlbnRpZmllckxvY2F0aW9uLCBpZGVu
dGlmaWVyLCBhcnJheVR5cGUsIGluaXRpYWxpemVyLCAmaW5pdE5vZGUpKQogICAgIHsKICAgICAg
ICAgaWYgKGluaXROb2RlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaW50ZXJtZWRp
YXRlLmdyb3dBZ2dyZWdhdGUoYWdncmVnYXRlRGVjbGFyYXRpb24sIGluaXROb2RlLCBpbml0TG9j
YXRpb24pOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIGFnZ3JlZ2F0ZURlY2xhcmF0aW9uOworICAgICAgICAgICAgZGVjbGFyYXRpb25PdXQt
PmFwcGVuZERlY2xhcmF0b3IoaW5pdE5vZGUpOwogICAgICAgICB9CiAgICAgfQotICAgIGVsc2UK
LSAgICB7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KIH0KIAogdm9pZCBUUGFyc2VD
b250ZXh0OjpwYXJzZUdsb2JhbExheW91dFF1YWxpZmllcihjb25zdCBUVHlwZVF1YWxpZmllckJ1
aWxkZXIgJnR5cGVRdWFsaWZpZXJCdWlsZGVyKQogewotICAgIFRUeXBlUXVhbGlmaWVyIHR5cGVR
dWFsaWZpZXIgPSB0eXBlUXVhbGlmaWVyQnVpbGRlci5nZXRWYXJpYWJsZVR5cGVRdWFsaWZpZXIo
Jm1EaWFnbm9zdGljcyk7CisgICAgVFR5cGVRdWFsaWZpZXIgdHlwZVF1YWxpZmllciA9IHR5cGVR
dWFsaWZpZXJCdWlsZGVyLmdldFZhcmlhYmxlVHlwZVF1YWxpZmllcihtRGlhZ25vc3RpY3MpOwog
ICAgIGNvbnN0IFRMYXlvdXRRdWFsaWZpZXIgbGF5b3V0UXVhbGlmaWVyID0gdHlwZVF1YWxpZmll
ci5sYXlvdXRRdWFsaWZpZXI7CiAKICAgICBjaGVja0ludmFyaWFudFZhcmlhYmxlUXVhbGlmaWVy
KHR5cGVRdWFsaWZpZXIuaW52YXJpYW50LCB0eXBlUXVhbGlmaWVyLnF1YWxpZmllciwKQEAgLTE5
MTUsMTAgKzIzNTgsMTggQEAgdm9pZCBUUGFyc2VDb250ZXh0OjpwYXJzZUdsb2JhbExheW91dFF1
YWxpZmllcihjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXIgJnR5cGUKIAogICAgIGlmICghbGF5
b3V0UXVhbGlmaWVyLmlzQ29tYmluYXRpb25WYWxpZCgpKQogICAgIHsKLSAgICAgICAgZXJyb3Io
dHlwZVF1YWxpZmllci5saW5lLCAiaW52YWxpZCBjb21iaW5hdGlvbjoiLCAibGF5b3V0Iik7Cisg
ICAgICAgIGVycm9yKHR5cGVRdWFsaWZpZXIubGluZSwgImludmFsaWQgbGF5b3V0IHF1YWxpZmll
ciBjb21iaW5hdGlvbiIsICJsYXlvdXQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAg
IGNoZWNrQmluZGluZ0lzTm90U3BlY2lmaWVkKHR5cGVRdWFsaWZpZXIubGluZSwgbGF5b3V0UXVh
bGlmaWVyLmJpbmRpbmcpOworCisgICAgY2hlY2tNZW1vcnlRdWFsaWZpZXJJc05vdFNwZWNpZmll
ZCh0eXBlUXVhbGlmaWVyLm1lbW9yeVF1YWxpZmllciwgdHlwZVF1YWxpZmllci5saW5lKTsKKwor
ICAgIGNoZWNrSW50ZXJuYWxGb3JtYXRJc05vdFNwZWNpZmllZCh0eXBlUXVhbGlmaWVyLmxpbmUs
IGxheW91dFF1YWxpZmllci5pbWFnZUludGVybmFsRm9ybWF0KTsKKworICAgIGNoZWNrWXV2SXNO
b3RTcGVjaWZpZWQodHlwZVF1YWxpZmllci5saW5lLCBsYXlvdXRRdWFsaWZpZXIueXV2KTsKKwog
ICAgIGlmICh0eXBlUXVhbGlmaWVyLnF1YWxpZmllciA9PSBFdnFDb21wdXRlSW4pCiAgICAgewog
ICAgICAgICBpZiAobUNvbXB1dGVTaGFkZXJMb2NhbFNpemVEZWNsYXJlZCAmJgpAQCAtMTk1Niwx
MyArMjQwNywxMiBAQCB2b2lkIFRQYXJzZUNvbnRleHQ6OnBhcnNlR2xvYmFsTGF5b3V0UXVhbGlm
aWVyKGNvbnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRlciAmdHlwZQogICAgICAgICAgICAgICAgIGlm
IChtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZVtpXSA8IDEgfHwKICAgICAgICAgICAgICAgICAgICAg
bUNvbXB1dGVTaGFkZXJMb2NhbFNpemVbaV0gPiBtYXhDb21wdXRlV29ya0dyb3VwU2l6ZVZhbHVl
KQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJl
YW0gZXJyb3JNZXNzYWdlU3RyZWFtOwotICAgICAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2VT
dHJlYW0gPDwgIlZhbHVlIG11c3QgYmUgYXQgbGVhc3QgMSBhbmQgbm8gZ3JlYXRlciB0aGFuICIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IG1heENvbXB1dGVXb3Jr
R3JvdXBTaXplVmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZl
cnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2VTdHJlYW0uc3RyKCk7CisgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHJlYXNvblN0cmVhbTsKKyAgICAgICAgICAgICAgICAgICAg
cmVhc29uU3RyZWFtIDw8ICJpbnZhbGlkIHZhbHVlOiBWYWx1ZSBtdXN0IGJlIGF0IGxlYXN0IDEg
YW5kIG5vIGdyZWF0ZXIgdGhhbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCBtYXhDb21wdXRlV29ya0dyb3VwU2l6ZVZhbHVlOworICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyAmcmVhc29uID0gcmVhc29uU3RyZWFtLnN0cigpOwogCi0gICAgICAgICAg
ICAgICAgICAgIGVycm9yKHR5cGVRdWFsaWZpZXIubGluZSwgImludmFsaWQgdmFsdWU6IiwgZ2V0
V29ya0dyb3VwU2l6ZVN0cmluZyhpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JN
ZXNzYWdlLmNfc3RyKCkpOworICAgICAgICAgICAgICAgICAgICBlcnJvcih0eXBlUXVhbGlmaWVy
LmxpbmUsIHJlYXNvbi5jX3N0cigpLCBnZXRXb3JrR3JvdXBTaXplU3RyaW5nKGkpKTsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
QEAgLTE5NzAsMTggKzI0MjAsNDUgQEAgdm9pZCBUUGFyc2VDb250ZXh0OjpwYXJzZUdsb2JhbExh
eW91dFF1YWxpZmllcihjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXIgJnR5cGUKIAogICAgICAg
ICBtQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZURlY2xhcmVkID0gdHJ1ZTsKICAgICB9Ci0gICAgZWxz
ZQorICAgIGVsc2UgaWYgKG1NdWx0aXZpZXdBdmFpbGFibGUgJiYKKyAgICAgICAgICAgICAoaXNF
eHRlbnNpb25FbmFibGVkKCJHTF9PVlJfbXVsdGl2aWV3IikgfHwgaXNFeHRlbnNpb25FbmFibGVk
KCJHTF9PVlJfbXVsdGl2aWV3MiIpKSAmJgorICAgICAgICAgICAgIHR5cGVRdWFsaWZpZXIucXVh
bGlmaWVyID09IEV2cVZlcnRleEluKQogICAgIHsKKyAgICAgICAgLy8gVGhpcyBlcnJvciBpcyBv
bmx5IHNwZWNpZmllZCBpbiBXZWJHTCwgYnV0IHRpZ2h0ZW5zIHVuc3BlY2lmaWVkIGJlaGF2aW9y
IGluIHRoZSBuYXRpdmUKKyAgICAgICAgLy8gc3BlY2lmaWNhdGlvbi4KKyAgICAgICAgaWYgKG1O
dW1WaWV3cyAhPSAtMSAmJiBsYXlvdXRRdWFsaWZpZXIubnVtVmlld3MgIT0gbU51bVZpZXdzKQor
ICAgICAgICB7CisgICAgICAgICAgICBlcnJvcih0eXBlUXVhbGlmaWVyLmxpbmUsICJOdW1iZXIg
b2Ygdmlld3MgZG9lcyBub3QgbWF0Y2ggdGhlIHByZXZpb3VzIGRlY2xhcmF0aW9uIiwKKyAgICAg
ICAgICAgICAgICAgICJsYXlvdXQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChsYXlvdXRRdWFsaWZpZXIubnVtVmlld3MgPT0gLTEpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGVycm9yKHR5cGVRdWFsaWZpZXIubGluZSwgIk5vIG51bV92aWV3cyBzcGVj
aWZpZWQiLCAibGF5b3V0Iik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBpZiAobGF5b3V0UXVhbGlmaWVyLm51bVZpZXdzID4gbU1heE51bVZpZXdzKQorICAgICAg
ICB7CisgICAgICAgICAgICBlcnJvcih0eXBlUXVhbGlmaWVyLmxpbmUsICJudW1fdmlld3MgZ3Jl
YXRlciB0aGFuIHRoZSB2YWx1ZSBvZiBHTF9NQVhfVklFV1NfT1ZSIiwKKyAgICAgICAgICAgICAg
ICAgICJsYXlvdXQiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgICAg
IGlmICghY2hlY2tXb3JrR3JvdXBTaXplSXNOb3RTcGVjaWZpZWQodHlwZVF1YWxpZmllci5saW5l
LCB0eXBlUXVhbGlmaWVyLmxheW91dFF1YWxpZmllcikpCisgICAgICAgIG1OdW1WaWV3cyA9IGxh
eW91dFF1YWxpZmllci5udW1WaWV3czsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg
aWYgKCFjaGVja1dvcmtHcm91cFNpemVJc05vdFNwZWNpZmllZCh0eXBlUXVhbGlmaWVyLmxpbmUs
IGxheW91dFF1YWxpZmllcikpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmICh0eXBlUXVhbGlmaWVyLnF1YWxpZmllciAhPSBFdnFVbmlmb3Jt
KQogICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvcih0eXBlUXVhbGlmaWVyLmxpbmUsICJpbnZh
bGlkIHF1YWxpZmllcjoiLAotICAgICAgICAgICAgICAgICAgZ2V0UXVhbGlmaWVyU3RyaW5nKHR5
cGVRdWFsaWZpZXIucXVhbGlmaWVyKSwgImdsb2JhbCBsYXlvdXQgbXVzdCBiZSB1bmlmb3JtIik7
CisgICAgICAgICAgICBlcnJvcih0eXBlUXVhbGlmaWVyLmxpbmUsICJpbnZhbGlkIHF1YWxpZmll
cjogZ2xvYmFsIGxheW91dCBtdXN0IGJlIHVuaWZvcm0iLAorICAgICAgICAgICAgICAgICAgZ2V0
UXVhbGlmaWVyU3RyaW5nKHR5cGVRdWFsaWZpZXIucXVhbGlmaWVyKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTk5Miw3ICsyNDY5LDcgQEAgdm9pZCBUUGFyc2VDb250
ZXh0OjpwYXJzZUdsb2JhbExheW91dFF1YWxpZmllcihjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxk
ZXIgJnR5cGUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGNoZWNr
TG9jYXRpb25Jc05vdFNwZWNpZmllZCh0eXBlUXVhbGlmaWVyLmxpbmUsIHR5cGVRdWFsaWZpZXIu
bGF5b3V0UXVhbGlmaWVyKTsKKyAgICAgICAgY2hlY2tMb2NhdGlvbklzTm90U3BlY2lmaWVkKHR5
cGVRdWFsaWZpZXIubGluZSwgbGF5b3V0UXVhbGlmaWVyKTsKIAogICAgICAgICBpZiAobGF5b3V0
UXVhbGlmaWVyLm1hdHJpeFBhY2tpbmcgIT0gRW1wVW5zcGVjaWZpZWQpCiAgICAgICAgIHsKQEAg
LTIwMDYsNDcgKzI0ODMsNjYgQEAgdm9pZCBUUGFyc2VDb250ZXh0OjpwYXJzZUdsb2JhbExheW91
dFF1YWxpZmllcihjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXIgJnR5cGUKICAgICB9CiB9CiAK
LVRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OmFkZEZ1bmN0aW9uUHJvdG90eXBlRGVj
bGFyYXRpb24oY29uc3QgVEZ1bmN0aW9uICZwYXJzZWRGdW5jdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFNvdXJjZUxvYyAmbG9jYXRpb24pCitUSW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKlRQYXJzZUNv
bnRleHQ6OmNyZWF0ZVByb3RvdHlwZU5vZGVGcm9tRnVuY3Rpb24oCisgICAgY29uc3QgVEZ1bmN0
aW9uICZmdW5jdGlvbiwKKyAgICBjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwKKyAgICBib29s
IGluc2VydFBhcmFtZXRlcnNUb1N5bWJvbFRhYmxlKQogewotICAgIC8vIE5vdGU6IGZ1bmN0aW9u
IGZvdW5kIGZyb20gdGhlIHN5bWJvbCB0YWJsZSBjb3VsZCBiZSB0aGUgc2FtZSBhcyBwYXJzZWRG
dW5jdGlvbiBpZiB0aGlzIGlzIHRoZQotICAgIC8vIGZpcnN0IGRlY2xhcmF0aW9uLiBFaXRoZXIg
d2F5IHRoZSBpbnN0YW5jZSBpbiB0aGUgc3ltYm9sIHRhYmxlIGlzIHVzZWQgdG8gdHJhY2sgd2hl
dGhlciB0aGUKLSAgICAvLyBmdW5jdGlvbiBpcyBkZWNsYXJlZCBtdWx0aXBsZSB0aW1lcy4KLSAg
ICBURnVuY3Rpb24gKmZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8VEZ1bmN0aW9uICo+KAotICAgICAg
ICBzeW1ib2xUYWJsZS5maW5kKHBhcnNlZEZ1bmN0aW9uLmdldE1hbmdsZWROYW1lKCksIGdldFNo
YWRlclZlcnNpb24oKSkpOwotICAgIGlmIChmdW5jdGlvbi0+aGFzUHJvdG90eXBlRGVjbGFyYXRp
b24oKSAmJiBtU2hhZGVyVmVyc2lvbiA9PSAxMDApCi0gICAgewotICAgICAgICAvLyBFU1NMIDEu
MDAuMTcgc2VjdGlvbiA0LjIuNy4KLSAgICAgICAgLy8gRG9lc24ndCBhcHBseSB0byBFU1NMIDMu
MDAuNDogc2VlIHNlY3Rpb24gNC4yLjMuCi0gICAgICAgIGVycm9yKGxvY2F0aW9uLCAiZHVwbGlj
YXRlIGZ1bmN0aW9uIHByb3RvdHlwZSBkZWNsYXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIiwgImZ1
bmN0aW9uIik7Ci0gICAgfQotICAgIGZ1bmN0aW9uLT5zZXRIYXNQcm90b3R5cGVEZWNsYXJhdGlv
bigpOwotCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAqcHJvdG90eXBlID0gbmV3IFRJbnRlcm1BZ2dy
ZWdhdGU7CisgICAgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlICpwcm90b3R5cGUgPQorICAgICAg
ICBuZXcgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlKGZ1bmN0aW9uLmdldFJldHVyblR5cGUoKSwg
VFN5bWJvbFVuaXF1ZUlkKGZ1bmN0aW9uKSk7CiAgICAgLy8gVE9ETyhvZXR1YWhvQG52aWRpYS5j
b20pOiBJbnN0ZWFkIG9mIGNvbnZlcnRpbmcgdGhlIGZ1bmN0aW9uIGluZm9ybWF0aW9uIGhlcmUs
IHRoZSBub2RlIGNvdWxkCiAgICAgLy8gcG9pbnQgdG8gdGhlIGRhdGEgdGhhdCBhbHJlYWR5IGV4
aXN0cyBpbiB0aGUgc3ltYm9sIHRhYmxlLgotICAgIHByb3RvdHlwZS0+c2V0VHlwZShmdW5jdGlv
bi0+Z2V0UmV0dXJuVHlwZSgpKTsKLSAgICBwcm90b3R5cGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5m
bygpLT5zZXRGcm9tRnVuY3Rpb24oKmZ1bmN0aW9uKTsKKyAgICBwcm90b3R5cGUtPmdldEZ1bmN0
aW9uU3ltYm9sSW5mbygpLT5zZXRGcm9tRnVuY3Rpb24oZnVuY3Rpb24pOworICAgIHByb3RvdHlw
ZS0+c2V0TGluZShsb2NhdGlvbik7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0
aW9uLT5nZXRQYXJhbUNvdW50KCk7IGkrKykKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1
bmN0aW9uLmdldFBhcmFtQ291bnQoKTsgaSsrKQogICAgIHsKLSAgICAgICAgY29uc3QgVENvbnN0
UGFyYW1ldGVyICZwYXJhbSA9IGZ1bmN0aW9uLT5nZXRQYXJhbShpKTsKLSAgICAgICAgaWYgKHBh
cmFtLm5hbWUgIT0gMCkKKyAgICAgICAgY29uc3QgVENvbnN0UGFyYW1ldGVyICZwYXJhbSA9IGZ1
bmN0aW9uLmdldFBhcmFtKGkpOworCisgICAgICAgIC8vIElmIHRoZSBwYXJhbWV0ZXIgaGFzIG5v
IG5hbWUsIGl0J3Mgbm90IGFuIGVycm9yLCBqdXN0IGRvbid0IGFkZCBpdCB0byBzeW1ib2wgdGFi
bGUgKGNvdWxkCisgICAgICAgIC8vIGJlIHVzZWQgZm9yIHVudXNlZCBhcmdzKS4KKyAgICAgICAg
aWYgKHBhcmFtLm5hbWUgIT0gbnVsbHB0cikKICAgICAgICAgewotICAgICAgICAgICAgVFZhcmlh
YmxlIHZhcmlhYmxlKHBhcmFtLm5hbWUsICpwYXJhbS50eXBlKTsKKyAgICAgICAgICAgIFRWYXJp
YWJsZSAqdmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKHBhcmFtLm5hbWUsICpwYXJhbS50eXBlKTsK
IAotICAgICAgICAgICAgVEludGVybVN5bWJvbCAqcGFyYW1TeW1ib2wgPSBpbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKAotICAgICAgICAgICAgICAgIHZhcmlhYmxlLmdldFVuaXF1ZUlkKCksIHZhcmlh
YmxlLmdldE5hbWUoKSwgdmFyaWFibGUuZ2V0VHlwZSgpLCBsb2NhdGlvbik7Ci0gICAgICAgICAg
ICBwcm90b3R5cGUgPSBpbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZShwcm90b3R5cGUsIHBhcmFt
U3ltYm9sLCBsb2NhdGlvbik7CisgICAgICAgICAgICAvLyBJbnNlcnQgdGhlIHBhcmFtZXRlciBp
biB0aGUgc3ltYm9sIHRhYmxlLgorICAgICAgICAgICAgaWYgKGluc2VydFBhcmFtZXRlcnNUb1N5
bWJvbFRhYmxlICYmICFzeW1ib2xUYWJsZS5kZWNsYXJlKHZhcmlhYmxlKSkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgInJlZGVmaW5pdGlvbiIsIHZhcmlh
YmxlLT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgICAgICAgICAgICAgcHJvdG90eXBlLT5hcHBl
bmRQYXJhbWV0ZXIoaW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFtLnR5cGUsIGxv
Y2F0aW9uKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSBpbnRlcm1lZGlhdGUuYWRkU3ltYm9sKAor
ICAgICAgICAgICAgICAgIHZhcmlhYmxlLT5nZXRVbmlxdWVJZCgpLCB2YXJpYWJsZS0+Z2V0TmFt
ZSgpLCB2YXJpYWJsZS0+Z2V0VHlwZSgpLCBsb2NhdGlvbik7CisgICAgICAgICAgICBwcm90b3R5
cGUtPmFwcGVuZFBhcmFtZXRlcihzeW1ib2wpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAg
ICAgICAgewotICAgICAgICAgICAgVEludGVybVN5bWJvbCAqcGFyYW1TeW1ib2wgPSBpbnRlcm1l
ZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgbG9jYXRpb24pOwotICAgICAgICAg
ICAgcHJvdG90eXBlICAgICAgICAgICAgICAgICAgPSBpbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0
ZShwcm90b3R5cGUsIHBhcmFtU3ltYm9sLCBsb2NhdGlvbik7CisgICAgICAgICAgICBwcm90b3R5
cGUtPmFwcGVuZFBhcmFtZXRlcihpbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICIiLCAqcGFyYW0u
dHlwZSwgbG9jYXRpb24pKTsKICAgICAgICAgfQogICAgIH0KKyAgICByZXR1cm4gcHJvdG90eXBl
OworfQorCitUSW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKlRQYXJzZUNvbnRleHQ6OmFkZEZ1bmN0
aW9uUHJvdG90eXBlRGVjbGFyYXRpb24oCisgICAgY29uc3QgVEZ1bmN0aW9uICZwYXJzZWRGdW5j
dGlvbiwKKyAgICBjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbikKK3sKKyAgICAvLyBOb3RlOiBm
dW5jdGlvbiBmb3VuZCBmcm9tIHRoZSBzeW1ib2wgdGFibGUgY291bGQgYmUgdGhlIHNhbWUgYXMg
cGFyc2VkRnVuY3Rpb24gaWYgdGhpcyBpcyB0aGUKKyAgICAvLyBmaXJzdCBkZWNsYXJhdGlvbi4g
RWl0aGVyIHdheSB0aGUgaW5zdGFuY2UgaW4gdGhlIHN5bWJvbCB0YWJsZSBpcyB1c2VkIHRvIHRy
YWNrIHdoZXRoZXIgdGhlCisgICAgLy8gZnVuY3Rpb24gaXMgZGVjbGFyZWQgbXVsdGlwbGUgdGlt
ZXMuCisgICAgVEZ1bmN0aW9uICpmdW5jdGlvbiA9IHN0YXRpY19jYXN0PFRGdW5jdGlvbiAqPigK
KyAgICAgICAgc3ltYm9sVGFibGUuZmluZChwYXJzZWRGdW5jdGlvbi5nZXRNYW5nbGVkTmFtZSgp
LCBnZXRTaGFkZXJWZXJzaW9uKCkpKTsKKyAgICBpZiAoZnVuY3Rpb24tPmhhc1Byb3RvdHlwZURl
Y2xhcmF0aW9uKCkgJiYgbVNoYWRlclZlcnNpb24gPT0gMTAwKQorICAgIHsKKyAgICAgICAgLy8g
RVNTTCAxLjAwLjE3IHNlY3Rpb24gNC4yLjcuCisgICAgICAgIC8vIERvZXNuJ3QgYXBwbHkgdG8g
RVNTTCAzLjAwLjQ6IHNlZSBzZWN0aW9uIDQuMi4zLgorICAgICAgICBlcnJvcihsb2NhdGlvbiwg
ImR1cGxpY2F0ZSBmdW5jdGlvbiBwcm90b3R5cGUgZGVjbGFyYXRpb25zIGFyZSBub3QgYWxsb3dl
ZCIsICJmdW5jdGlvbiIpOworICAgIH0KKyAgICBmdW5jdGlvbi0+c2V0SGFzUHJvdG90eXBlRGVj
bGFyYXRpb24oKTsKIAotICAgIHByb3RvdHlwZS0+c2V0T3AoRU9wUHJvdG90eXBlKTsKKyAgICBU
SW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKnByb3RvdHlwZSA9CisgICAgICAgIGNyZWF0ZVByb3Rv
dHlwZU5vZGVGcm9tRnVuY3Rpb24oKmZ1bmN0aW9uLCBsb2NhdGlvbiwgZmFsc2UpOwogCiAgICAg
c3ltYm9sVGFibGUucG9wKCk7CiAKQEAgLTIwNjAsMTUgKzI1NTYsMTUgQEAgVEludGVybUFnZ3Jl
Z2F0ZSAqVFBhcnNlQ29udGV4dDo6YWRkRnVuY3Rpb25Qcm90b3R5cGVEZWNsYXJhdGlvbihjb25z
dCBURnVuY3Rpb24KIH0KIAogVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqVFBhcnNlQ29udGV4
dDo6YWRkRnVuY3Rpb25EZWZpbml0aW9uKAotICAgIGNvbnN0IFRGdW5jdGlvbiAmZnVuY3Rpb24s
Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25QYXJhbWV0ZXJzLAorICAgIFRJbnRlcm1G
dW5jdGlvblByb3RvdHlwZSAqZnVuY3Rpb25Qcm90b3R5cGUsCiAgICAgVEludGVybUJsb2NrICpm
dW5jdGlvbkJvZHksCiAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24pCiB7CiAgICAgLy8g
Q2hlY2sgdGhhdCBub24tdm9pZCBmdW5jdGlvbnMgaGF2ZSBhdCBsZWFzdCBvbmUgcmV0dXJuIHN0
YXRlbWVudC4KICAgICBpZiAobUN1cnJlbnRGdW5jdGlvblR5cGUtPmdldEJhc2ljVHlwZSgpICE9
IEVidFZvaWQgJiYgIW1GdW5jdGlvblJldHVybnNWYWx1ZSkKICAgICB7Ci0gICAgICAgIGVycm9y
KGxvY2F0aW9uLCAiZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWU6IiwgIiIsIGZ1bmN0
aW9uLmdldE5hbWUoKS5jX3N0cigpKTsKKyAgICAgICAgZXJyb3IobG9jYXRpb24sICJmdW5jdGlv
biBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZToiLAorICAgICAgICAgICAgICBmdW5jdGlvblByb3Rv
dHlwZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICB9
CiAKICAgICBpZiAoZnVuY3Rpb25Cb2R5ID09IG51bGxwdHIpCkBAIC0yMDc3LDE4ICsyNTczLDE2
IEBAIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKlRQYXJzZUNvbnRleHQ6OmFkZEZ1bmN0aW9u
RGVmaW5pdGlvbigKICAgICAgICAgZnVuY3Rpb25Cb2R5LT5zZXRMaW5lKGxvY2F0aW9uKTsKICAg
ICB9CiAgICAgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqZnVuY3Rpb25Ob2RlID0KLSAgICAg
ICAgbmV3IFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24oZnVuY3Rpb24uZ2V0UmV0dXJuVHlwZSgp
LCBmdW5jdGlvblBhcmFtZXRlcnMsIGZ1bmN0aW9uQm9keSk7CisgICAgICAgIG5ldyBUSW50ZXJt
RnVuY3Rpb25EZWZpbml0aW9uKGZ1bmN0aW9uUHJvdG90eXBlLCBmdW5jdGlvbkJvZHkpOwogICAg
IGZ1bmN0aW9uTm9kZS0+c2V0TGluZShsb2NhdGlvbik7CiAKLSAgICBmdW5jdGlvbk5vZGUtPmdl
dEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5zZXRGcm9tRnVuY3Rpb24oZnVuY3Rpb24pOwotCiAgICAg
c3ltYm9sVGFibGUucG9wKCk7CiAgICAgcmV0dXJuIGZ1bmN0aW9uTm9kZTsKIH0KIAogdm9pZCBU
UGFyc2VDb250ZXh0OjpwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbkhlYWRlcihjb25zdCBUU291cmNl
TG9jICZsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEZ1bmN0aW9uICoqZnVuY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKiphZ2dyZWdhdGVPdXQp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRl
cm1GdW5jdGlvblByb3RvdHlwZSAqKnByb3RvdHlwZU91dCkKIHsKICAgICBBU1NFUlQoZnVuY3Rp
b24pOwogICAgIEFTU0VSVCgqZnVuY3Rpb24pOwpAQCAtMjEyNSw2OSArMjYxOSwxMSBAQCB2b2lk
IFRQYXJzZUNvbnRleHQ6OnBhcnNlRnVuY3Rpb25EZWZpbml0aW9uSGVhZGVyKGNvbnN0IFRTb3Vy
Y2VMb2MgJmxvY2F0aW9uLAogICAgICAgICAoKmZ1bmN0aW9uKS0+c2V0RGVmaW5lZCgpOwogICAg
IH0KIAotICAgIC8vIFJhaXNlIGVycm9yIG1lc3NhZ2UgaWYgbWFpbiBmdW5jdGlvbiB0YWtlcyBh
bnkgcGFyYW1ldGVycyBvciByZXR1cm4gYW55dGhpbmcgb3RoZXIgdGhhbiB2b2lkCi0gICAgaWYg
KCgqZnVuY3Rpb24pLT5nZXROYW1lKCkgPT0gIm1haW4iKQotICAgIHsKLSAgICAgICAgaWYgKCgq
ZnVuY3Rpb24pLT5nZXRQYXJhbUNvdW50KCkgPiAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBl
cnJvcihsb2NhdGlvbiwgImZ1bmN0aW9uIGNhbm5vdCB0YWtlIGFueSBwYXJhbWV0ZXIocykiLAot
ICAgICAgICAgICAgICAgICAgKCpmdW5jdGlvbiktPmdldE5hbWUoKS5jX3N0cigpKTsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoKCpmdW5jdGlvbiktPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1R5
cGUoKSAhPSBFYnRWb2lkKQotICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwg
IiIsICgqZnVuY3Rpb24pLT5nZXRSZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSwKLSAgICAg
ICAgICAgICAgICAgICJtYWluIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gYSB2YWx1ZSIpOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgLy8KLSAgICAvLyBSZW1lbWJlciB0aGUgcmV0dXJuIHR5cGUg
Zm9yIGxhdGVyIGNoZWNraW5nIGZvciBSRVRVUk4gc3RhdGVtZW50cy4KLSAgICAvLworICAgIC8v
IFJlbWVtYmVyIHRoZSByZXR1cm4gdHlwZSBmb3IgbGF0ZXIgY2hlY2tpbmcgZm9yIHJldHVybiBz
dGF0ZW1lbnRzLgogICAgIG1DdXJyZW50RnVuY3Rpb25UeXBlICA9ICYoKCpmdW5jdGlvbiktPmdl
dFJldHVyblR5cGUoKSk7CiAgICAgbUZ1bmN0aW9uUmV0dXJuc1ZhbHVlID0gZmFsc2U7CiAKLSAg
ICAvLwotICAgIC8vIEluc2VydCBwYXJhbWV0ZXJzIGludG8gdGhlIHN5bWJvbCB0YWJsZS4KLSAg
ICAvLyBJZiB0aGUgcGFyYW1ldGVyIGhhcyBubyBuYW1lLCBpdCdzIG5vdCBhbiBlcnJvciwganVz
dCBkb24ndCBpbnNlcnQgaXQKLSAgICAvLyAoY291bGQgYmUgdXNlZCBmb3IgdW51c2VkIGFyZ3Mp
LgotICAgIC8vCi0gICAgLy8gQWxzbywgYWNjdW11bGF0ZSB0aGUgbGlzdCBvZiBwYXJhbWV0ZXJz
IGludG8gdGhlIEhJTCwgc28gbG93ZXIgbGV2ZWwgY29kZQotICAgIC8vIGtub3dzIHdoZXJlIHRv
IGZpbmQgcGFyYW1ldGVycy4KLSAgICAvLwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcmFtTm9k
ZXMgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8ICgq
ZnVuY3Rpb24pLT5nZXRQYXJhbUNvdW50KCk7IGkrKykKLSAgICB7Ci0gICAgICAgIGNvbnN0IFRD
b25zdFBhcmFtZXRlciAmcGFyYW0gPSAoKmZ1bmN0aW9uKS0+Z2V0UGFyYW0oaSk7Ci0gICAgICAg
IGlmIChwYXJhbS5uYW1lICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIFRWYXJpYWJsZSAq
dmFyaWFibGUgPSBuZXcgVFZhcmlhYmxlKHBhcmFtLm5hbWUsICpwYXJhbS50eXBlKTsKLSAgICAg
ICAgICAgIC8vCi0gICAgICAgICAgICAvLyBJbnNlcnQgdGhlIHBhcmFtZXRlcnMgd2l0aCBuYW1l
IGluIHRoZSBzeW1ib2wgdGFibGUuCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgaWYgKCFz
eW1ib2xUYWJsZS5kZWNsYXJlKHZhcmlhYmxlKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBlcnJvcihsb2NhdGlvbiwgInJlZGVmaW5pdGlvbiIsIHZhcmlhYmxlLT5nZXROYW1lKCku
Y19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgcGFyYW1Ob2RlcyA9IGludGVybWVkaWF0ZS5ncm93
QWdncmVnYXRlKAotICAgICAgICAgICAgICAgICAgICBwYXJhbU5vZGVzLCBpbnRlcm1lZGlhdGUu
YWRkU3ltYm9sKDAsICIiLCAqcGFyYW0udHlwZSwgbG9jYXRpb24pLCBsb2NhdGlvbik7Ci0gICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vCi0g
ICAgICAgICAgICAvLyBBZGQgdGhlIHBhcmFtZXRlciB0byB0aGUgSElMCi0gICAgICAgICAgICAv
LwotICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3ltYm9sID0gaW50ZXJtZWRpYXRlLmFkZFN5
bWJvbCgKLSAgICAgICAgICAgICAgICB2YXJpYWJsZS0+Z2V0VW5pcXVlSWQoKSwgdmFyaWFibGUt
PmdldE5hbWUoKSwgdmFyaWFibGUtPmdldFR5cGUoKSwgbG9jYXRpb24pOwotCi0gICAgICAgICAg
ICBwYXJhbU5vZGVzID0gaW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUocGFyYW1Ob2Rlcywgc3lt
Ym9sLCBsb2NhdGlvbik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAg
ICAgICAgICBwYXJhbU5vZGVzID0gaW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoCi0gICAgICAg
ICAgICAgICAgcGFyYW1Ob2RlcywgaW50ZXJtZWRpYXRlLmFkZFN5bWJvbCgwLCAiIiwgKnBhcmFt
LnR5cGUsIGxvY2F0aW9uKSwgbG9jYXRpb24pOwotICAgICAgICB9Ci0gICAgfQotICAgIGludGVy
bWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVyYXRvcihwYXJhbU5vZGVzLCBFT3BQYXJhbWV0ZXJzLCBs
b2NhdGlvbik7Ci0gICAgKmFnZ3JlZ2F0ZU91dCA9IHBhcmFtTm9kZXM7CisgICAgKnByb3RvdHlw
ZU91dCA9IGNyZWF0ZVByb3RvdHlwZU5vZGVGcm9tRnVuY3Rpb24oKipmdW5jdGlvbiwgbG9jYXRp
b24sIHRydWUpOwogICAgIHNldExvb3BOZXN0aW5nTGV2ZWwoMCk7CiB9CiAKQEAgLTIyMDQsOSAr
MjY0MCwxMSBAQCBURnVuY3Rpb24gKlRQYXJzZUNvbnRleHQ6OnBhcnNlRnVuY3Rpb25EZWNsYXJh
dG9yKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLCBURgogICAgIFRGdW5jdGlvbiAqcHJldkRl
YyA9CiAgICAgICAgIHN0YXRpY19jYXN0PFRGdW5jdGlvbiAqPihzeW1ib2xUYWJsZS5maW5kKGZ1
bmN0aW9uLT5nZXRNYW5nbGVkTmFtZSgpLCBnZXRTaGFkZXJWZXJzaW9uKCkpKTsKIAotICAgIGlm
IChnZXRTaGFkZXJWZXJzaW9uKCkgPj0gMzAwICYmIHN5bWJvbFRhYmxlLmhhc1VubWFuZ2xlZEJ1
aWx0SW4oZnVuY3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKSkKKyAgICBpZiAoZ2V0U2hhZGVyVmVy
c2lvbigpID49IDMwMCAmJgorICAgICAgICBzeW1ib2xUYWJsZS5oYXNVbm1hbmdsZWRCdWlsdElu
Rm9yU2hhZGVyVmVyc2lvbihmdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFNoYWRlclZl
cnNpb24oKSkpCiAgICAgewotICAgICAgICAvLyBXaXRoIEVTU0wgMy4wMCwgbmFtZXMgb2YgYnVp
bHQtaW4gZnVuY3Rpb25zIGNhbm5vdCBiZSByZWRlY2xhcmVkIGFzIGZ1bmN0aW9ucy4KKyAgICAg
ICAgLy8gV2l0aCBFU1NMIDMuMDAgYW5kIGFib3ZlLCBuYW1lcyBvZiBidWlsdC1pbiBmdW5jdGlv
bnMgY2Fubm90IGJlIHJlZGVjbGFyZWQgYXMgZnVuY3Rpb25zLgogICAgICAgICAvLyBUaGVyZWZv
cmUgb3ZlcmxvYWRpbmcgb3IgcmVkZWZpbmluZyBidWlsdGluIGZ1bmN0aW9ucyBpcyBhbiBlcnJv
ci4KICAgICAgICAgZXJyb3IobG9jYXRpb24sICJOYW1lIG9mIGEgYnVpbHQtaW4gZnVuY3Rpb24g
Y2Fubm90IGJlIHJlZGVjbGFyZWQgYXMgZnVuY3Rpb24iLAogICAgICAgICAgICAgICBmdW5jdGlv
bi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwpAQCAtMjIzOCw3ICsyNjc2LDcgQEAgVEZ1bmN0aW9uICpU
UGFyc2VDb250ZXh0OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRvcihjb25zdCBUU291cmNlTG9jICZs
b2NhdGlvbiwgVEYKICAgICB7CiAgICAgICAgIGlmICghcHJldlN5bS0+aXNGdW5jdGlvbigpKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgInJlZGVmaW5pdGlvbiIsIGZ1
bmN0aW9uLT5nZXROYW1lKCkuY19zdHIoKSwgImZ1bmN0aW9uIik7CisgICAgICAgICAgICBlcnJv
cihsb2NhdGlvbiwgInJlZGVmaW5pdGlvbiBvZiBhIGZ1bmN0aW9uIiwgZnVuY3Rpb24tPmdldE5h
bWUoKS5jX3N0cigpKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCkBAIC0yMjUxLDYgKzI2
ODksMjAgQEAgVEZ1bmN0aW9uICpUUGFyc2VDb250ZXh0OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRv
cihjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwgVEYKICAgICAvLyBBZGQgdGhlIGZ1bmN0aW9u
IHByb3RvdHlwZSB0byB0aGUgc3Vycm91bmRpbmcgc2NvcGUgaW5zdGVhZC4KICAgICBzeW1ib2xU
YWJsZS5nZXRPdXRlckxldmVsKCktPmluc2VydChmdW5jdGlvbik7CiAKKyAgICAvLyBSYWlzZSBl
cnJvciBtZXNzYWdlIGlmIG1haW4gZnVuY3Rpb24gdGFrZXMgYW55IHBhcmFtZXRlcnMgb3IgcmV0
dXJuIGFueXRoaW5nIG90aGVyIHRoYW4gdm9pZAorICAgIGlmIChmdW5jdGlvbi0+Z2V0TmFtZSgp
ID09ICJtYWluIikKKyAgICB7CisgICAgICAgIGlmIChmdW5jdGlvbi0+Z2V0UGFyYW1Db3VudCgp
ID4gMCkKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICJmdW5jdGlvbiBj
YW5ub3QgdGFrZSBhbnkgcGFyYW1ldGVyKHMpIiwgIm1haW4iKTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoZnVuY3Rpb24tPmdldFJldHVyblR5cGUoKS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRWb2lk
KQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvcihsb2NhdGlvbiwgIm1haW4gZnVuY3Rpb24g
Y2Fubm90IHJldHVybiBhIHZhbHVlIiwKKyAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uLT5nZXRS
ZXR1cm5UeXBlKCkuZ2V0QmFzaWNTdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICAv
LwogICAgIC8vIElmIHRoaXMgaXMgYSByZWRlY2xhcmF0aW9uLCBpdCBjb3VsZCBhbHNvIGJlIGEg
ZGVmaW5pdGlvbiwgaW4gd2hpY2ggY2FzZSwgd2Ugd2FudCB0byB1c2UgdGhlCiAgICAgLy8gdmFy
aWFibGUgbmFtZXMgZnJvbSB0aGlzIG9uZSwgYW5kIG5vdCB0aGUgb25lIHRoYXQncwpAQCAtMjI3
MiwxNCArMjcyNCwxNSBAQCBURnVuY3Rpb24gKlRQYXJzZUNvbnRleHQ6OnBhcnNlRnVuY3Rpb25I
ZWFkZXIoY29uc3QgVFB1YmxpY1R5cGUgJnR5cGUsCiAgICAgewogICAgICAgICBlcnJvcihsb2Nh
dGlvbiwgIm5vIHF1YWxpZmllcnMgYWxsb3dlZCBmb3IgZnVuY3Rpb24gcmV0dXJuIiwgImxheW91
dCIpOwogICAgIH0KLSAgICAvLyBtYWtlIHN1cmUgYSBzYW1wbGVyIGlzIG5vdCBpbnZvbHZlZCBh
cyB3ZWxsLi4uCisgICAgLy8gbWFrZSBzdXJlIGEgc2FtcGxlciBvciBhbiBpbWFnZSBpcyBub3Qg
aW52b2x2ZWQgYXMgd2VsbC4uLgogICAgIGNoZWNrSXNOb3RTYW1wbGVyKGxvY2F0aW9uLCB0eXBl
LnR5cGVTcGVjaWZpZXJOb25BcnJheSwKICAgICAgICAgICAgICAgICAgICAgICAic2FtcGxlcnMg
Y2FuJ3QgYmUgZnVuY3Rpb24gcmV0dXJuIHZhbHVlcyIpOworICAgIGNoZWNrSXNOb3RJbWFnZShs
b2NhdGlvbiwgdHlwZS50eXBlU3BlY2lmaWVyTm9uQXJyYXksICJpbWFnZXMgY2FuJ3QgYmUgZnVu
Y3Rpb24gcmV0dXJuIHZhbHVlcyIpOwogICAgIGlmIChtU2hhZGVyVmVyc2lvbiA8IDMwMCkKICAg
ICB7CiAgICAgICAgIC8vIEFycmF5IHJldHVybiB2YWx1ZXMgYXJlIGZvcmJpZGRlbiwgYnV0IHRo
ZXJlJ3MgYWxzbyBubyB2YWxpZCBzeW50YXggZm9yIGRlY2xhcmluZyBhcnJheQogICAgICAgICAv
LyByZXR1cm4gdmFsdWVzIGluIEVTU0wgMS4wMC4KLSAgICAgICAgQVNTRVJUKHR5cGUuYXJyYXlT
aXplID09IDAgfHwgbURpYWdub3N0aWNzLm51bUVycm9ycygpID4gMCk7CisgICAgICAgIEFTU0VS
VCh0eXBlLmFycmF5U2l6ZSA9PSAwIHx8IG1EaWFnbm9zdGljcy0+bnVtRXJyb3JzKCkgPiAwKTsK
IAogICAgICAgICBpZiAodHlwZS5pc1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJheXMoKSkKICAgICAg
ICAgewpAQCAtMjMxNSwxMyArMjc2OCwxMiBAQCBURnVuY3Rpb24gKlRQYXJzZUNvbnRleHQ6OmFk
ZENvbnN0cnVjdG9yRnVuYyhjb25zdCBUUHVibGljVHlwZSAmcHVibGljVHlwZUluKQogICAgICAg
ICAgICAgZXJyb3IocHVibGljVHlwZS5nZXRMaW5lKCksICJjYW5ub3QgY29uc3RydWN0IHRoaXMg
dHlwZSIsCiAgICAgICAgICAgICAgICAgICBnZXRCYXNpY1N0cmluZyhwdWJsaWNUeXBlLmdldEJh
c2ljVHlwZSgpKSk7CiAgICAgICAgICAgICBwdWJsaWNUeXBlLnNldEJhc2ljVHlwZShFYnRGbG9h
dCk7Ci0gICAgICAgICAgICBvcCAgICAgICAgICAgICAgPSBFT3BDb25zdHJ1Y3RGbG9hdDsKKyAg
ICAgICAgICAgIG9wID0gRU9wQ29uc3RydWN0RmxvYXQ7CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBUU3RyaW5nIHRlbXBTdHJpbmc7CiAgICAgY29uc3QgVFR5cGUgKnR5cGUgPSBuZXcgVFR5cGUo
cHVibGljVHlwZSk7Ci0gICAgcmV0dXJuIG5ldyBURnVuY3Rpb24oJnRlbXBTdHJpbmcsIHR5cGUs
IG9wKTsKKyAgICByZXR1cm4gbmV3IFRGdW5jdGlvbihudWxscHRyLCB0eXBlLCBvcCk7CiB9CiAK
IC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byB0ZXN0IGZvciB0aGUgY29ycmVjdG5lc3Mgb2Yg
dGhlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIHZhcmlvdXMgY29uc3RydWN0b3IKQEAgLTIzMjksNjYg
KzI3ODEsNDQgQEAgVEZ1bmN0aW9uICpUUGFyc2VDb250ZXh0OjphZGRDb25zdHJ1Y3RvckZ1bmMo
Y29uc3QgVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGVJbikKIC8vCiAvLyBSZXR1cm5zIGEgbm9kZSB0
byBhZGQgdG8gdGhlIHRyZWUgcmVnYXJkbGVzcyBvZiBpZiBhbiBlcnJvciB3YXMgZ2VuZXJhdGVk
IG9yIG5vdC4KIC8vCi1USW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZENvbnN0cnVjdG9y
KFRJbnRlcm1Ob2RlICphcmd1bWVudHMsCitUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFk
ZENvbnN0cnVjdG9yKFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUT3BlcmF0b3Igb3AsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRGdW5jdGlvbiAqZm5DYWxsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUVHlwZSB0eXBlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZs
aW5lKQogewotICAgIFRUeXBlIHR5cGUgPSBmbkNhbGwtPmdldFJldHVyblR5cGUoKTsKICAgICBp
ZiAodHlwZS5pc1Vuc2l6ZWRBcnJheSgpKQogICAgIHsKLSAgICAgICAgdHlwZS5zZXRBcnJheVNp
emUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihmbkNhbGwtPmdldFBhcmFtQ291bnQoKSkpOwot
ICAgIH0KLSAgICBib29sIGNvbnN0VHlwZSA9IHRydWU7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBmbkNhbGwtPmdldFBhcmFtQ291bnQoKTsgKytpKQotICAgIHsKLSAgICAgICAgY29uc3Qg
VENvbnN0UGFyYW1ldGVyICZwYXJhbSA9IGZuQ2FsbC0+Z2V0UGFyYW0oaSk7Ci0gICAgICAgIGlm
IChwYXJhbS50eXBlLT5nZXRRdWFsaWZpZXIoKSAhPSBFdnFDb25zdCkKLSAgICAgICAgICAgIGNv
bnN0VHlwZSA9IGZhbHNlOwotICAgIH0KLSAgICBpZiAoY29uc3RUeXBlKQotICAgICAgICB0eXBl
LnNldFF1YWxpZmllcihFdnFDb25zdCk7Ci0KLSAgICBpZiAoIWNoZWNrQ29uc3RydWN0b3JBcmd1
bWVudHMobGluZSwgYXJndW1lbnRzLCAqZm5DYWxsLCBvcCwgdHlwZSkpCi0gICAgewotICAgICAg
ICBUSW50ZXJtVHlwZWQgKmR1bW15Tm9kZSA9IGludGVybWVkaWF0ZS5zZXRBZ2dyZWdhdGVPcGVy
YXRvcihudWxscHRyLCBvcCwgbGluZSk7Ci0gICAgICAgIGR1bW15Tm9kZS0+c2V0VHlwZSh0eXBl
KTsKLSAgICAgICAgcmV0dXJuIGR1bW15Tm9kZTsKKyAgICAgICAgaWYgKGFyZ3VtZW50cy0+ZW1w
dHkoKSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJyb3IobGluZSwgImltcGxpY2l0bHkgc2l6
ZWQgYXJyYXkgY29uc3RydWN0b3IgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIsICJb
XSIpOworICAgICAgICAgICAgdHlwZS5zZXRBcnJheVNpemUoMXUpOworICAgICAgICAgICAgcmV0
dXJuIFRJbnRlcm1UeXBlZDo6Q3JlYXRlWmVybyh0eXBlKTsKKyAgICAgICAgfQorICAgICAgICB0
eXBlLnNldEFycmF5U2l6ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGFyZ3VtZW50cy0+c2l6
ZSgpKSk7CiAgICAgfQotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmNvbnN0cnVjdG9yID0gYXJndW1l
bnRzLT5nZXRBc0FnZ3JlZ2F0ZSgpOwotICAgIEFTU0VSVChjb25zdHJ1Y3RvciAhPSBudWxscHRy
KTsKLQotICAgIC8vIFR1cm4gdGhlIGFyZ3VtZW50IGxpc3QgaXRzZWxmIGludG8gYSBjb25zdHJ1
Y3RvcgotICAgIGNvbnN0cnVjdG9yLT5zZXRPcChvcCk7Ci0gICAgY29uc3RydWN0b3ItPnNldExp
bmUobGluZSk7Ci0gICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5pc0NvbnN0cnVjdG9yKCkpOwogCi0g
ICAgLy8gTmVlZCB0byBzZXQgdHlwZSBiZWZvcmUgc2V0UHJlY2lzaW9uRnJvbUNoaWxkcmVuKCkg
YmVjYXVzZSBib29sIGRvZXNuJ3QgaGF2ZSBwcmVjaXNpb24uCi0gICAgY29uc3RydWN0b3ItPnNl
dFR5cGUodHlwZSk7Ci0KLSAgICAvLyBTdHJ1Y3RzIHNob3VsZCBub3QgYmUgcHJlY2lzaW9uIHF1
YWxpZmllZCwgdGhlIGluZGl2aWR1YWwgbWVtYmVycyBtYXkgYmUuCi0gICAgLy8gQnVpbHQtaW4g
dHlwZXMgb24gdGhlIG90aGVyIGhhbmQgc2hvdWxkIGJlIHByZWNpc2lvbiBxdWFsaWZpZWQuCi0g
ICAgaWYgKG9wICE9IEVPcENvbnN0cnVjdFN0cnVjdCkKKyAgICBpZiAoIWNoZWNrQ29uc3RydWN0
b3JBcmd1bWVudHMobGluZSwgYXJndW1lbnRzLCBvcCwgdHlwZSkpCiAgICAgewotICAgICAgICBj
b25zdHJ1Y3Rvci0+c2V0UHJlY2lzaW9uRnJvbUNoaWxkcmVuKCk7Ci0gICAgICAgIHR5cGUuc2V0
UHJlY2lzaW9uKGNvbnN0cnVjdG9yLT5nZXRQcmVjaXNpb24oKSk7CisgICAgICAgIHJldHVybiBU
SW50ZXJtVHlwZWQ6OkNyZWF0ZVplcm8odHlwZSk7CiAgICAgfQogCi0gICAgY29uc3RydWN0b3It
PnNldFR5cGUodHlwZSk7CisgICAgVEludGVybUFnZ3JlZ2F0ZSAqY29uc3RydWN0b3JOb2RlID0g
VEludGVybUFnZ3JlZ2F0ZTo6Q3JlYXRlQ29uc3RydWN0b3IodHlwZSwgb3AsIGFyZ3VtZW50cyk7
CisgICAgY29uc3RydWN0b3JOb2RlLT5zZXRMaW5lKGxpbmUpOwogCi0gICAgVEludGVybVR5cGVk
ICpjb25zdENvbnN0cnVjdG9yID0gaW50ZXJtZWRpYXRlLmZvbGRBZ2dyZWdhdGVCdWlsdEluKGNv
bnN0cnVjdG9yLCAmbURpYWdub3N0aWNzKTsKKyAgICBUSW50ZXJtVHlwZWQgKmNvbnN0Q29uc3Ry
dWN0b3IgPQorICAgICAgICBpbnRlcm1lZGlhdGUuZm9sZEFnZ3JlZ2F0ZUJ1aWx0SW4oY29uc3Ry
dWN0b3JOb2RlLCBtRGlhZ25vc3RpY3MpOwogICAgIGlmIChjb25zdENvbnN0cnVjdG9yKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGNvbnN0Q29uc3RydWN0b3I7CiAgICAgfQogCi0gICAgcmV0dXJu
IGNvbnN0cnVjdG9yOworICAgIHJldHVybiBjb25zdHJ1Y3Rvck5vZGU7CiB9CiAKIC8vCiAvLyBJ
bnRlcmZhY2UvdW5pZm9ybSBibG9ja3MKIC8vCi1USW50ZXJtQWdncmVnYXRlICpUUGFyc2VDb250
ZXh0OjphZGRJbnRlcmZhY2VCbG9jaygKK1RJbnRlcm1EZWNsYXJhdGlvbiAqVFBhcnNlQ29udGV4
dDo6YWRkSW50ZXJmYWNlQmxvY2soCiAgICAgY29uc3QgVFR5cGVRdWFsaWZpZXJCdWlsZGVyICZ0
eXBlUXVhbGlmaWVyQnVpbGRlciwKICAgICBjb25zdCBUU291cmNlTG9jICZuYW1lTGluZSwKICAg
ICBjb25zdCBUU3RyaW5nICZibG9ja05hbWUsCkBAIC0yNDAwLDEyICsyODMwLDEyIEBAIFRJbnRl
cm1BZ2dyZWdhdGUgKlRQYXJzZUNvbnRleHQ6OmFkZEludGVyZmFjZUJsb2NrKAogewogICAgIGNo
ZWNrSXNOb3RSZXNlcnZlZChuYW1lTGluZSwgYmxvY2tOYW1lKTsKIAotICAgIFRUeXBlUXVhbGlm
aWVyIHR5cGVRdWFsaWZpZXIgPSB0eXBlUXVhbGlmaWVyQnVpbGRlci5nZXRWYXJpYWJsZVR5cGVR
dWFsaWZpZXIoJm1EaWFnbm9zdGljcyk7CisgICAgVFR5cGVRdWFsaWZpZXIgdHlwZVF1YWxpZmll
ciA9IHR5cGVRdWFsaWZpZXJCdWlsZGVyLmdldFZhcmlhYmxlVHlwZVF1YWxpZmllcihtRGlhZ25v
c3RpY3MpOwogCiAgICAgaWYgKHR5cGVRdWFsaWZpZXIucXVhbGlmaWVyICE9IEV2cVVuaWZvcm0p
CiAgICAgewotICAgICAgICBlcnJvcih0eXBlUXVhbGlmaWVyLmxpbmUsICJpbnZhbGlkIHF1YWxp
ZmllcjoiLCBnZXRRdWFsaWZpZXJTdHJpbmcodHlwZVF1YWxpZmllci5xdWFsaWZpZXIpLAotICAg
ICAgICAgICAgICAiaW50ZXJmYWNlIGJsb2NrcyBtdXN0IGJlIHVuaWZvcm0iKTsKKyAgICAgICAg
ZXJyb3IodHlwZVF1YWxpZmllci5saW5lLCAiaW52YWxpZCBxdWFsaWZpZXI6IGludGVyZmFjZSBi
bG9ja3MgbXVzdCBiZSB1bmlmb3JtIiwKKyAgICAgICAgICAgICAgZ2V0UXVhbGlmaWVyU3RyaW5n
KHR5cGVRdWFsaWZpZXIucXVhbGlmaWVyKSk7CiAgICAgfQogCiAgICAgaWYgKHR5cGVRdWFsaWZp
ZXIuaW52YXJpYW50KQpAQCAtMjQxMyw2ICsyODQzLDEzIEBAIFRJbnRlcm1BZ2dyZWdhdGUgKlRQ
YXJzZUNvbnRleHQ6OmFkZEludGVyZmFjZUJsb2NrKAogICAgICAgICBlcnJvcih0eXBlUXVhbGlm
aWVyLmxpbmUsICJpbnZhbGlkIHF1YWxpZmllciBvbiBpbnRlcmZhY2UgYmxvY2sgbWVtYmVyIiwg
ImludmFyaWFudCIpOwogICAgIH0KIAorICAgIGNoZWNrTWVtb3J5UXVhbGlmaWVySXNOb3RTcGVj
aWZpZWQodHlwZVF1YWxpZmllci5tZW1vcnlRdWFsaWZpZXIsIHR5cGVRdWFsaWZpZXIubGluZSk7
CisKKyAgICAvLyBUT0RPKG9ldHVhaG8pOiBSZW1vdmUgdGhpcyBhbmQgc3VwcG9ydCBiaW5kaW5n
IGZvciBibG9ja3MuCisgICAgY2hlY2tCaW5kaW5nSXNOb3RTcGVjaWZpZWQodHlwZVF1YWxpZmll
ci5saW5lLCB0eXBlUXVhbGlmaWVyLmxheW91dFF1YWxpZmllci5iaW5kaW5nKTsKKworICAgIGNo
ZWNrWXV2SXNOb3RTcGVjaWZpZWQodHlwZVF1YWxpZmllci5saW5lLCB0eXBlUXVhbGlmaWVyLmxh
eW91dFF1YWxpZmllci55dXYpOworCiAgICAgVExheW91dFF1YWxpZmllciBibG9ja0xheW91dFF1
YWxpZmllciA9IHR5cGVRdWFsaWZpZXIubGF5b3V0UXVhbGlmaWVyOwogICAgIGNoZWNrTG9jYXRp
b25Jc05vdFNwZWNpZmllZCh0eXBlUXVhbGlmaWVyLmxpbmUsIGJsb2NrTGF5b3V0UXVhbGlmaWVy
KTsKIApAQCAtMjQyOCwxMCArMjg2NSwxMiBAQCBUSW50ZXJtQWdncmVnYXRlICpUUGFyc2VDb250
ZXh0OjphZGRJbnRlcmZhY2VCbG9jaygKIAogICAgIGNoZWNrV29ya0dyb3VwU2l6ZUlzTm90U3Bl
Y2lmaWVkKG5hbWVMaW5lLCBibG9ja0xheW91dFF1YWxpZmllcik7CiAKKyAgICBjaGVja0ludGVy
bmFsRm9ybWF0SXNOb3RTcGVjaWZpZWQobmFtZUxpbmUsIGJsb2NrTGF5b3V0UXVhbGlmaWVyLmlt
YWdlSW50ZXJuYWxGb3JtYXQpOworCiAgICAgVFN5bWJvbCAqYmxvY2tOYW1lU3ltYm9sID0gbmV3
IFRJbnRlcmZhY2VCbG9ja05hbWUoJmJsb2NrTmFtZSk7CiAgICAgaWYgKCFzeW1ib2xUYWJsZS5k
ZWNsYXJlKGJsb2NrTmFtZVN5bWJvbCkpCiAgICAgewotICAgICAgICBlcnJvcihuYW1lTGluZSwg
InJlZGVmaW5pdGlvbiIsIGJsb2NrTmFtZS5jX3N0cigpLCAiaW50ZXJmYWNlIGJsb2NrIG5hbWUi
KTsKKyAgICAgICAgZXJyb3IobmFtZUxpbmUsICJyZWRlZmluaXRpb24gb2YgYW4gaW50ZXJmYWNl
IGJsb2NrIG5hbWUiLCBibG9ja05hbWUuY19zdHIoKSk7CiAgICAgfQogCiAgICAgLy8gY2hlY2sg
Zm9yIHNhbXBsZXIgdHlwZXMgYW5kIGFwcGx5IGxheW91dCBxdWFsaWZpZXJzCkBAIC0yNDQxLDgg
KzI4ODAsMTYgQEAgVEludGVybUFnZ3JlZ2F0ZSAqVFBhcnNlQ29udGV4dDo6YWRkSW50ZXJmYWNl
QmxvY2soCiAgICAgICAgIFRUeXBlICpmaWVsZFR5cGUgPSBmaWVsZC0+dHlwZSgpOwogICAgICAg
ICBpZiAoSXNTYW1wbGVyKGZpZWxkVHlwZS0+Z2V0QmFzaWNUeXBlKCkpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBlcnJvcihmaWVsZC0+bGluZSgpLCAidW5zdXBwb3J0ZWQgdHlwZSIsIGZpZWxk
VHlwZS0+Z2V0QmFzaWNTdHJpbmcoKSwKLSAgICAgICAgICAgICAgICAgICJzYW1wbGVyIHR5cGVz
IGFyZSBub3QgYWxsb3dlZCBpbiBpbnRlcmZhY2UgYmxvY2tzIik7CisgICAgICAgICAgICBlcnJv
cihmaWVsZC0+bGluZSgpLAorICAgICAgICAgICAgICAgICAgInVuc3VwcG9ydGVkIHR5cGUgLSBz
YW1wbGVyIHR5cGVzIGFyZSBub3QgYWxsb3dlZCBpbiBpbnRlcmZhY2UgYmxvY2tzIiwKKyAgICAg
ICAgICAgICAgICAgIGZpZWxkVHlwZS0+Z2V0QmFzaWNTdHJpbmcoKSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoSXNJbWFnZShmaWVsZFR5cGUtPmdldEJhc2ljVHlwZSgpKSkKKyAgICAgICAg
eworICAgICAgICAgICAgZXJyb3IoZmllbGQtPmxpbmUoKSwKKyAgICAgICAgICAgICAgICAgICJ1
bnN1cHBvcnRlZCB0eXBlIC0gaW1hZ2UgdHlwZXMgYXJlIG5vdCBhbGxvd2VkIGluIGludGVyZmFj
ZSBibG9ja3MiLAorICAgICAgICAgICAgICAgICAgZmllbGRUeXBlLT5nZXRCYXNpY1N0cmluZygp
KTsKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gZmll
bGRUeXBlLT5nZXRRdWFsaWZpZXIoKTsKQEAgLTI0NjgsOCArMjkxNSw4IEBAIFRJbnRlcm1BZ2dy
ZWdhdGUgKlRQYXJzZUNvbnRleHQ6OmFkZEludGVyZmFjZUJsb2NrKAogCiAgICAgICAgIGlmIChm
aWVsZExheW91dFF1YWxpZmllci5ibG9ja1N0b3JhZ2UgIT0gRWJzVW5zcGVjaWZpZWQpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGVycm9yKGZpZWxkLT5saW5lKCksICJpbnZhbGlkIGxheW91dCBx
dWFsaWZpZXI6IiwKLSAgICAgICAgICAgICAgICAgIGdldEJsb2NrU3RvcmFnZVN0cmluZyhmaWVs
ZExheW91dFF1YWxpZmllci5ibG9ja1N0b3JhZ2UpLCAiY2Fubm90IGJlIHVzZWQgaGVyZSIpOwor
ICAgICAgICAgICAgZXJyb3IoZmllbGQtPmxpbmUoKSwgImludmFsaWQgbGF5b3V0IHF1YWxpZmll
cjogY2Fubm90IGJlIHVzZWQgaGVyZSIsCisgICAgICAgICAgICAgICAgICBnZXRCbG9ja1N0b3Jh
Z2VTdHJpbmcoZmllbGRMYXlvdXRRdWFsaWZpZXIuYmxvY2tTdG9yYWdlKSk7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoZmllbGRMYXlvdXRRdWFsaWZpZXIubWF0cml4UGFja2luZyA9PSBFbXBV
bnNwZWNpZmllZCkKQEAgLTI0NzgsOSArMjkyNSw5IEBAIFRJbnRlcm1BZ2dyZWdhdGUgKlRQYXJz
ZUNvbnRleHQ6OmFkZEludGVyZmFjZUJsb2NrKAogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYg
KCFmaWVsZFR5cGUtPmlzTWF0cml4KCkgJiYgZmllbGRUeXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBF
YnRTdHJ1Y3QpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHdhcm5pbmcoZmllbGQtPmxpbmUoKSwg
ImV4dHJhbmVvdXMgbGF5b3V0IHF1YWxpZmllcjoiLAotICAgICAgICAgICAgICAgICAgICBnZXRN
YXRyaXhQYWNraW5nU3RyaW5nKGZpZWxkTGF5b3V0UXVhbGlmaWVyLm1hdHJpeFBhY2tpbmcpLAot
ICAgICAgICAgICAgICAgICAgICAib25seSBoYXMgYW4gZWZmZWN0IG9uIG1hdHJpeCB0eXBlcyIp
OworICAgICAgICAgICAgd2FybmluZyhmaWVsZC0+bGluZSgpLAorICAgICAgICAgICAgICAgICAg
ICAiZXh0cmFuZW91cyBsYXlvdXQgcXVhbGlmaWVyOiBvbmx5IGhhcyBhbiBlZmZlY3Qgb24gbWF0
cml4IHR5cGVzIiwKKyAgICAgICAgICAgICAgICAgICAgZ2V0TWF0cml4UGFja2luZ1N0cmluZyhm
aWVsZExheW91dFF1YWxpZmllci5tYXRyaXhQYWNraW5nKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBmaWVsZFR5cGUtPnNldExheW91dFF1YWxpZmllcihmaWVsZExheW91dFF1YWxpZmllcik7CkBA
IC0yNTE3LDggKzI5NjQsOCBAQCBUSW50ZXJtQWdncmVnYXRlICpUUGFyc2VDb250ZXh0OjphZGRJ
bnRlcmZhY2VCbG9jaygKIAogICAgICAgICAgICAgaWYgKCFzeW1ib2xUYWJsZS5kZWNsYXJlKGZp
ZWxkVmFyaWFibGUpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGVycm9yKGZpZWxk
LT5saW5lKCksICJyZWRlZmluaXRpb24iLCBmaWVsZC0+bmFtZSgpLmNfc3RyKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgImludGVyZmFjZSBibG9jayBtZW1iZXIgbmFtZSIpOworICAgICAgICAg
ICAgICAgIGVycm9yKGZpZWxkLT5saW5lKCksICJyZWRlZmluaXRpb24gb2YgYW4gaW50ZXJmYWNl
IGJsb2NrIG1lbWJlciBuYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICBmaWVsZC0+bmFtZSgp
LmNfc3RyKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjUzMiwyMSAr
Mjk3OSwyMiBAQCBUSW50ZXJtQWdncmVnYXRlICpUUGFyc2VDb250ZXh0OjphZGRJbnRlcmZhY2VC
bG9jaygKIAogICAgICAgICBpZiAoIXN5bWJvbFRhYmxlLmRlY2xhcmUoaW5zdGFuY2VUeXBlRGVm
KSkKICAgICAgICAgewotICAgICAgICAgICAgZXJyb3IoaW5zdGFuY2VMaW5lLCAicmVkZWZpbml0
aW9uIiwgaW5zdGFuY2VOYW1lLT5jX3N0cigpLAotICAgICAgICAgICAgICAgICAgImludGVyZmFj
ZSBibG9jayBpbnN0YW5jZSBuYW1lIik7CisgICAgICAgICAgICBlcnJvcihpbnN0YW5jZUxpbmUs
ICJyZWRlZmluaXRpb24gb2YgYW4gaW50ZXJmYWNlIGJsb2NrIGluc3RhbmNlIG5hbWUiLAorICAg
ICAgICAgICAgICAgICAgaW5zdGFuY2VOYW1lLT5jX3N0cigpKTsKICAgICAgICAgfQogCiAgICAg
ICAgIHN5bWJvbElkICAgPSBpbnN0YW5jZVR5cGVEZWYtPmdldFVuaXF1ZUlkKCk7CiAgICAgICAg
IHN5bWJvbE5hbWUgPSBpbnN0YW5jZVR5cGVEZWYtPmdldE5hbWUoKTsKICAgICB9CiAKLSAgICBU
SW50ZXJtQWdncmVnYXRlICphZ2dyZWdhdGUgPSBUSW50ZXJtZWRpYXRlOjpNYWtlQWdncmVnYXRl
KAotICAgICAgICBpbnRlcm1lZGlhdGUuYWRkU3ltYm9sKHN5bWJvbElkLCBzeW1ib2xOYW1lLCBp
bnRlcmZhY2VCbG9ja1R5cGUsIHR5cGVRdWFsaWZpZXIubGluZSksCi0gICAgICAgIG5hbWVMaW5l
KTsKLSAgICBhZ2dyZWdhdGUtPnNldE9wKEVPcERlY2xhcmF0aW9uKTsKKyAgICBUSW50ZXJtU3lt
Ym9sICpibG9ja1N5bWJvbCA9CisgICAgICAgIGludGVybWVkaWF0ZS5hZGRTeW1ib2woc3ltYm9s
SWQsIHN5bWJvbE5hbWUsIGludGVyZmFjZUJsb2NrVHlwZSwgdHlwZVF1YWxpZmllci5saW5lKTsK
KyAgICBUSW50ZXJtRGVjbGFyYXRpb24gKmRlY2xhcmF0aW9uID0gbmV3IFRJbnRlcm1EZWNsYXJh
dGlvbigpOworICAgIGRlY2xhcmF0aW9uLT5hcHBlbmREZWNsYXJhdG9yKGJsb2NrU3ltYm9sKTsK
KyAgICBkZWNsYXJhdGlvbi0+c2V0TGluZShuYW1lTGluZSk7CiAKICAgICBleGl0U3RydWN0RGVj
bGFyYXRpb24oKTsKLSAgICByZXR1cm4gYWdncmVnYXRlOworICAgIHJldHVybiBkZWNsYXJhdGlv
bjsKIH0KIAogdm9pZCBUUGFyc2VDb250ZXh0OjplbnRlclN0cnVjdERlY2xhcmF0aW9uKGNvbnN0
IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIpCkBAIC0yNTU0LDEx
ICszMDAyLDEwIEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6ZW50ZXJTdHJ1Y3REZWNsYXJhdGlvbihj
b25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBUU3RyaW5nCiAgICAgKyttU3RydWN0TmVzdGlu
Z0xldmVsOwogCiAgICAgLy8gRW1iZWRkZWQgc3RydWN0dXJlIGRlZmluaXRpb25zIGFyZSBub3Qg
c3VwcG9ydGVkIHBlciBHTFNMIEVTIHNwZWMuCi0gICAgLy8gVGhleSBhcmVuJ3QgYWxsb3dlZCBp
biBHTFNMIGVpdGhlciwgYnV0IHdlIG5lZWQgdG8gZGV0ZWN0IHRoaXMgaGVyZQotICAgIC8vIHNv
IHdlIGRvbid0IHJlbHkgb24gdGhlIEdMU0wgY29tcGlsZXIgdG8gY2F0Y2ggaXQuCisgICAgLy8g
RVNTTCAxLjAwLjE3IHNlY3Rpb24gMTAuOS4gRVNTTCAzLjAwLjYgc2VjdGlvbiAxMi4xMS4KICAg
ICBpZiAobVN0cnVjdE5lc3RpbmdMZXZlbCA+IDEpCiAgICAgewotICAgICAgICBlcnJvcihsaW5l
LCAiIiwgIkVtYmVkZGVkIHN0cnVjdCBkZWZpbml0aW9ucyBhcmUgbm90IGFsbG93ZWQiKTsKKyAg
ICAgICAgZXJyb3IobGluZSwgIkVtYmVkZGVkIHN0cnVjdCBkZWZpbml0aW9ucyBhcmUgbm90IGFs
bG93ZWQiLCAic3RydWN0Iik7CiAgICAgfQogfQogCkBAIC0yNTY3LDE1ICszMDE0LDkgQEAgdm9p
ZCBUUGFyc2VDb250ZXh0OjpleGl0U3RydWN0RGVjbGFyYXRpb24oKQogICAgIC0tbVN0cnVjdE5l
c3RpbmdMZXZlbDsKIH0KIAotbmFtZXNwYWNlCi17Ci1jb25zdCBpbnQga1dlYkdMTWF4U3RydWN0
TmVzdGluZyA9IDQ7Ci0KLX0gIC8vIG5hbWVzcGFjZQotCiB2b2lkIFRQYXJzZUNvbnRleHQ6OmNo
ZWNrSXNCZWxvd1N0cnVjdE5lc3RpbmdMaW1pdChjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25z
dCBURmllbGQgJmZpZWxkKQogewotICAgIGlmICghSXNXZWJHTEJhc2VkU3BlYyhtU2hhZGVyU3Bl
YykpCisgICAgaWYgKCFzaDo6SXNXZWJHTEJhc2VkU3BlYyhtU2hhZGVyU3BlYykpCiAgICAgewog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjU5Myw3ICszMDM0LDcgQEAgdm9pZCBUUGFyc2VD
b250ZXh0OjpjaGVja0lzQmVsb3dTdHJ1Y3ROZXN0aW5nTGltaXQoY29uc3QgVFNvdXJjZUxvYyAm
bGluZSwgY29uc3QKICAgICAgICAgcmVhc29uU3RyZWFtIDw8ICJSZWZlcmVuY2Ugb2Ygc3RydWN0
IHR5cGUgIiA8PCBmaWVsZC50eXBlKCktPmdldFN0cnVjdCgpLT5uYW1lKCkuY19zdHIoKQogICAg
ICAgICAgICAgICAgICAgICAgPDwgIiBleGNlZWRzIG1heGltdW0gYWxsb3dlZCBuZXN0aW5nIGxl
dmVsIG9mICIgPDwga1dlYkdMTWF4U3RydWN0TmVzdGluZzsKICAgICAgICAgc3RkOjpzdHJpbmcg
cmVhc29uID0gcmVhc29uU3RyZWFtLnN0cigpOwotICAgICAgICBlcnJvcihsaW5lLCByZWFzb24u
Y19zdHIoKSwgZmllbGQubmFtZSgpLmNfc3RyKCksICIiKTsKKyAgICAgICAgZXJyb3IobGluZSwg
cmVhc29uLmNfc3RyKCksIGZpZWxkLm5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIH0KQEAgLTI2MzMsMTggKzMwNzQsMTggQEAgVEludGVybVR5cGVkICpUUGFyc2VDb250
ZXh0OjphZGRJbmRleEV4cHJlc3Npb24oVEludGVybVR5cGVkICpiYXNlRXhwcmVzc2lvbiwKICAg
ICB7CiAgICAgICAgIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNJbnRlcmZhY2VCbG9jaygpKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBlcnJvcigKLSAgICAgICAgICAgICAgICBsb2NhdGlvbiwgIiIs
ICJbIiwKLSAgICAgICAgICAgICAgICAiYXJyYXkgaW5kZXhlcyBmb3IgaW50ZXJmYWNlIGJsb2Nr
cyBhcnJheXMgbXVzdCBiZSBjb25zdGFudCBpbnRlZ3JhbCBleHByZXNzaW9ucyIpOworICAgICAg
ICAgICAgZXJyb3IobG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAiYXJyYXkgaW5kZXhlcyBm
b3IgaW50ZXJmYWNlIGJsb2NrcyBhcnJheXMgbXVzdCBiZSBjb25zdGFudCBpbnRlZ3JhbCBleHBy
ZXNzaW9ucyIsCisgICAgICAgICAgICAgICAgICAiWyIpOwogICAgICAgICB9CiAgICAgICAgIGVs
c2UgaWYgKGJhc2VFeHByZXNzaW9uLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFGcmFnbWVudE91dCkK
ICAgICAgICAgewotICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICIiLCAiWyIsCi0gICAgICAg
ICAgICAgICAgICAiYXJyYXkgaW5kZXhlcyBmb3IgZnJhZ21lbnQgb3V0cHV0cyBtdXN0IGJlIGNv
bnN0YW50IGludGVncmFsIGV4cHJlc3Npb25zIik7CisgICAgICAgICAgICBlcnJvcihsb2NhdGlv
biwKKyAgICAgICAgICAgICAgICAgICJhcnJheSBpbmRleGVzIGZvciBmcmFnbWVudCBvdXRwdXRz
IG11c3QgYmUgY29uc3RhbnQgaW50ZWdyYWwgZXhwcmVzc2lvbnMiLCAiWyIpOwogICAgICAgICB9
CiAgICAgICAgIGVsc2UgaWYgKG1TaGFkZXJTcGVjID09IFNIX1dFQkdMMl9TUEVDICYmIGJhc2VF
eHByZXNzaW9uLT5nZXRRdWFsaWZpZXIoKSA9PSBFdnFGcmFnRGF0YSkKICAgICAgICAgewotICAg
ICAgICAgICAgZXJyb3IobG9jYXRpb24sICIiLCAiWyIsICJhcnJheSBpbmRleCBmb3IgZ2xfRnJh
Z0RhdGEgbXVzdCBiZSBjb25zdGFudCB6ZXJvIik7CisgICAgICAgICAgICBlcnJvcihsb2NhdGlv
biwgImFycmF5IGluZGV4IGZvciBnbF9GcmFnRGF0YSBtdXN0IGJlIGNvbnN0YW50IHplcm8iLCAi
WyIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNjU2LDcgKzMwOTcsNyBAQCBUSW50ZXJtVHlw
ZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEluZGV4RXhwcmVzc2lvbihUSW50ZXJtVHlwZWQgKmJhc2VF
eHByZXNzaW9uLAogICAgICAgICAvLyBoYW5kbGUgdGhpcyBjYXNlIGlzIHRvIHJlcG9ydCBhIHdh
cm5pbmcgaW5zdGVhZCBvZiBhbiBlcnJvciBhbmQgZm9yY2UgdGhlIGluZGV4IHRvIGJlIGluCiAg
ICAgICAgIC8vIHRoZSBjb3JyZWN0IHJhbmdlLgogICAgICAgICBib29sIG91dE9mUmFuZ2VJbmRl
eElzRXJyb3IgPSBpbmRleEV4cHJlc3Npb24tPmdldFF1YWxpZmllcigpID09IEV2cUNvbnN0Owot
ICAgICAgICBpbnQgaW5kZXggPSBpbmRleENvbnN0YW50VW5pb24tPmdldElDb25zdCgwKTsKKyAg
ICAgICAgaW50IGluZGV4ICAgICAgICAgICAgICAgICAgID0gaW5kZXhDb25zdGFudFVuaW9uLT5n
ZXRJQ29uc3QoMCk7CiAKICAgICAgICAgaW50IHNhZmVJbmRleCA9IC0xOwogCkBAIC0yNjY5LDE2
ICszMTEwLDE2IEBAIFRJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6YWRkSW5kZXhFeHByZXNz
aW9uKFRJbnRlcm1UeXBlZCAqYmFzZUV4cHJlc3Npb24sCiAgICAgICAgICAgICAgICAgICAgIC8v
IEVycm9yIGhhcyBiZWVuIGFscmVhZHkgZ2VuZXJhdGVkIGlmIGluZGV4IGlzIG5vdCBjb25zdC4K
ICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4RXhwcmVzc2lvbi0+Z2V0UXVhbGlmaWVyKCkg
PT0gRXZxQ29uc3QpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGVycm9yKGxvY2F0aW9uLCAiIiwgIlsiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImFycmF5IGluZGV4IGZvciBnbF9GcmFnRGF0YSBtdXN0IGJlIGNvbnN0YW50IHplcm8iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKGxvY2F0aW9uLCAiYXJyYXkgaW5kZXggZm9y
IGdsX0ZyYWdEYXRhIG11c3QgYmUgY29uc3RhbnQgemVybyIsICJbIik7CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgc2FmZUluZGV4ID0gMDsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xf
RVhUX2RyYXdfYnVmZmVycyIpKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgb3V0T2ZSYW5nZUVycm9yKG91dE9mUmFuZ2VJbmRleElzRXJyb3IsIGxvY2F0aW9uLCAiIiwg
IlsiLAorICAgICAgICAgICAgICAgICAgICBvdXRPZlJhbmdlRXJyb3Iob3V0T2ZSYW5nZUluZGV4
SXNFcnJvciwgbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
YXJyYXkgaW5kZXggZm9yIGdsX0ZyYWdEYXRhIG11c3QgYmUgemVybyB3aGVuICIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHTF9FWFRfZHJhd19idWZmZXJzIGlzIGRpc2Fi
bGVkIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR0xfRVhUX2RyYXdf
YnVmZmVycyBpcyBkaXNhYmxlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiWyIpOwogICAgICAgICAgICAgICAgICAgICBzYWZlSW5kZXggPSAwOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KQEAgLTI2ODcsMjAgKzMxMjgsMjAgQEAgVEludGVybVR5cGVk
ICpUUGFyc2VDb250ZXh0OjphZGRJbmRleEV4cHJlc3Npb24oVEludGVybVR5cGVkICpiYXNlRXhw
cmVzc2lvbiwKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBzYWZlSW5kZXggPSBjaGVj
a0luZGV4T3V0T2ZSYW5nZShvdXRPZlJhbmdlSW5kZXhJc0Vycm9yLCBsb2NhdGlvbiwgaW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUV4
cHJlc3Npb24tPmdldEFycmF5U2l6ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJhcnJheSBpbmRleCBvdXQgb2YgcmFuZ2UiLCAiW10iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJyYXkgaW5k
ZXggb3V0IG9mIHJhbmdlIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxz
ZSBpZiAoYmFzZUV4cHJlc3Npb24tPmlzTWF0cml4KCkpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHNhZmVJbmRleCA9IGNoZWNrSW5kZXhPdXRPZlJhbmdlKG91dE9mUmFuZ2VJbmRleElzRXJyb3Is
IGxvY2F0aW9uLCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJhc2VFeHByZXNzaW9uLT5nZXRUeXBlKCkuZ2V0Q29scygpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1hdHJpeCBmaWVsZCBzZWxlY3Rpb24g
b3V0IG9mIHJhbmdlIiwgIltdIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAibWF0cml4IGZpZWxkIHNlbGVjdGlvbiBvdXQgb2YgcmFuZ2UiKTsKICAgICAg
ICAgfQogICAgICAgICBlbHNlIGlmIChiYXNlRXhwcmVzc2lvbi0+aXNWZWN0b3IoKSkKICAgICAg
ICAgewogICAgICAgICAgICAgc2FmZUluZGV4ID0gY2hlY2tJbmRleE91dE9mUmFuZ2Uob3V0T2ZS
YW5nZUluZGV4SXNFcnJvciwgbG9jYXRpb24sIGluZGV4LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUV4cHJlc3Npb24tPmdldFR5cGUoKS5nZXROb21p
bmFsU2l6ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InZlY3RvciBmaWVsZCBzZWxlY3Rpb24gb3V0IG9mIHJhbmdlIiwgIltdIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmVjdG9yIGZpZWxkIHNlbGVjdGlv
biBvdXQgb2YgcmFuZ2UiKTsKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChzYWZlSW5kZXgg
Pj0gMCk7CkBAIC0yNzE1LDEyICszMTU2LDEyIEBAIFRJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4
dDo6YWRkSW5kZXhFeHByZXNzaW9uKFRJbnRlcm1UeXBlZCAqYmFzZUV4cHJlc3Npb24sCiAgICAg
ICAgIH0KIAogICAgICAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGly
ZWN0LCBiYXNlRXhwcmVzc2lvbiwgaW5kZXhFeHByZXNzaW9uLCBsb2NhdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbURpYWdub3N0aWNzKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtRGlhZ25vc3RpY3MpOwogICAgIH0KICAgICBlbHNl
CiAgICAgewogICAgICAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4SW5k
aXJlY3QsIGJhc2VFeHByZXNzaW9uLCBpbmRleEV4cHJlc3Npb24sIGxvY2F0aW9uLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtRGlhZ25vc3RpY3MpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EaWFnbm9zdGljcyk7CiAgICAgfQogfQogCkBA
IC0yNzI4LDE1ICszMTY5LDE0IEBAIGludCBUUGFyc2VDb250ZXh0OjpjaGVja0luZGV4T3V0T2ZS
YW5nZShib29sIG91dE9mUmFuZ2VJbmRleElzRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhcnJheVNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRva2VuKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbikKIHsKICAg
ICBpZiAoaW5kZXggPj0gYXJyYXlTaXplIHx8IGluZGV4IDwgMCkKICAgICB7Ci0gICAgICAgIHN0
ZDo6c3RyaW5nc3RyZWFtIGV4dHJhSW5mb1N0cmVhbTsKLSAgICAgICAgZXh0cmFJbmZvU3RyZWFt
IDw8ICInIiA8PCBpbmRleCA8PCAiJyI7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGV4dHJhSW5mbyA9
IGV4dHJhSW5mb1N0cmVhbS5zdHIoKTsKLSAgICAgICAgb3V0T2ZSYW5nZUVycm9yKG91dE9mUmFu
Z2VJbmRleElzRXJyb3IsIGxvY2F0aW9uLCByZWFzb24sIHRva2VuLCBleHRyYUluZm8uY19zdHIo
KSk7CisgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHJlYXNvblN0cmVhbTsKKyAgICAgICAgcmVh
c29uU3RyZWFtIDw8IHJlYXNvbiA8PCAiICciIDw8IGluZGV4IDw8ICInIjsKKyAgICAgICAgc3Rk
OjpzdHJpbmcgdG9rZW4gPSByZWFzb25TdHJlYW0uc3RyKCk7CisgICAgICAgIG91dE9mUmFuZ2VF
cnJvcihvdXRPZlJhbmdlSW5kZXhJc0Vycm9yLCBsb2NhdGlvbiwgcmVhc29uLCAiW10iKTsKICAg
ICAgICAgaWYgKGluZGV4IDwgMCkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIDA7CkBA
IC0yNzk3LDcgKzMyMzcsNyBAQCBUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEZpZWxk
U2VsZWN0aW9uRXhwcmVzc2lvbihUSW50ZXJtVHlwZWQgKmJhc2VFeHByZQogICAgICAgICAgICAg
ICAgIFRJbnRlcm1UeXBlZCAqaW5kZXggPSBUSW50ZXJtVHlwZWQ6OkNyZWF0ZUluZGV4Tm9kZShp
KTsKICAgICAgICAgICAgICAgICBpbmRleC0+c2V0TGluZShmaWVsZExvY2F0aW9uKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmFkZEluZGV4KEVPcEluZGV4RGlyZWN0U3Ry
dWN0LCBiYXNlRXhwcmVzc2lvbiwgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkb3RMb2NhdGlvbiwgJm1EaWFnbm9zdGljcyk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3RMb2NhdGlvbiwgbURpYWdub3N0
aWNzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKQEAg
LTI4MzEsNyArMzI3MSw3IEBAIFRJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6YWRkRmllbGRT
ZWxlY3Rpb25FeHByZXNzaW9uKFRJbnRlcm1UeXBlZCAqYmFzZUV4cHJlCiAgICAgICAgICAgICAg
ICAgVEludGVybVR5cGVkICppbmRleCA9IFRJbnRlcm1UeXBlZDo6Q3JlYXRlSW5kZXhOb2RlKGkp
OwogICAgICAgICAgICAgICAgIGluZGV4LT5zZXRMaW5lKGZpZWxkTG9jYXRpb24pOwogICAgICAg
ICAgICAgICAgIHJldHVybiBpbnRlcm1lZGlhdGUuYWRkSW5kZXgoRU9wSW5kZXhEaXJlY3RJbnRl
cmZhY2VCbG9jaywgYmFzZUV4cHJlc3Npb24sIGluZGV4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG90TG9jYXRpb24sICZtRGlhZ25vc3RpY3MpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90TG9jYXRpb24sIG1E
aWFnbm9zdGljcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICB7CkBAIC0yODY1LDcgKzMzMDUsNyBAQCBUTGF5b3V0UXVhbGlmaWVyIFRQYXJzZUNvbnRleHQ6
OnBhcnNlTGF5b3V0UXVhbGlmaWVyKGNvbnN0IFRTdHJpbmcgJnF1YWxpZmllclR5cAogCiAgICAg
aWYgKHF1YWxpZmllclR5cGUgPT0gInNoYXJlZCIpCiAgICAgewotICAgICAgICBpZiAoSXNXZWJH
TEJhc2VkU3BlYyhtU2hhZGVyU3BlYykpCisgICAgICAgIGlmIChzaDo6SXNXZWJHTEJhc2VkU3Bl
YyhtU2hhZGVyU3BlYykpCiAgICAgICAgIHsKICAgICAgICAgICAgIGVycm9yKHF1YWxpZmllclR5
cGVMaW5lLCAiT25seSBzdGQxNDAgbGF5b3V0IGlzIGFsbG93ZWQgaW4gV2ViR0wiLCAic2hhcmVk
Iik7CiAgICAgICAgIH0KQEAgLTI4NzMsNyArMzMxMyw3IEBAIFRMYXlvdXRRdWFsaWZpZXIgVFBh
cnNlQ29udGV4dDo6cGFyc2VMYXlvdXRRdWFsaWZpZXIoY29uc3QgVFN0cmluZyAmcXVhbGlmaWVy
VHlwCiAgICAgfQogICAgIGVsc2UgaWYgKHF1YWxpZmllclR5cGUgPT0gInBhY2tlZCIpCiAgICAg
ewotICAgICAgICBpZiAoSXNXZWJHTEJhc2VkU3BlYyhtU2hhZGVyU3BlYykpCisgICAgICAgIGlm
IChzaDo6SXNXZWJHTEJhc2VkU3BlYyhtU2hhZGVyU3BlYykpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGVycm9yKHF1YWxpZmllclR5cGVMaW5lLCAiT25seSBzdGQxNDAgbGF5b3V0IGlzIGFsbG93
ZWQgaW4gV2ViR0wiLCAicGFja2VkIik7CiAgICAgICAgIH0KQEAgLTI4OTMsOSArMzMzMyw4MCBA
QCBUTGF5b3V0UXVhbGlmaWVyIFRQYXJzZUNvbnRleHQ6OnBhcnNlTGF5b3V0UXVhbGlmaWVyKGNv
bnN0IFRTdHJpbmcgJnF1YWxpZmllclR5cAogICAgIH0KICAgICBlbHNlIGlmIChxdWFsaWZpZXJU
eXBlID09ICJsb2NhdGlvbiIpCiAgICAgewotICAgICAgICBlcnJvcihxdWFsaWZpZXJUeXBlTGlu
ZSwgImludmFsaWQgbGF5b3V0IHF1YWxpZmllciIsIHF1YWxpZmllclR5cGUuY19zdHIoKSwKLSAg
ICAgICAgICAgICAgImxvY2F0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50Iik7CisgICAgICAgIGVy
cm9yKHF1YWxpZmllclR5cGVMaW5lLCAiaW52YWxpZCBsYXlvdXQgcXVhbGlmaWVyOiBsb2NhdGlv
biByZXF1aXJlcyBhbiBhcmd1bWVudCIsCisgICAgICAgICAgICAgIHF1YWxpZmllclR5cGUuY19z
dHIoKSk7CisgICAgfQorICAgIGVsc2UgaWYgKHF1YWxpZmllclR5cGUgPT0gInl1diIgJiYgaXNF
eHRlbnNpb25FbmFibGVkKCJHTF9FWFRfWVVWX3RhcmdldCIpICYmCisgICAgICAgICAgICAgbVNo
YWRlclR5cGUgPT0gR0xfRlJBR01FTlRfU0hBREVSKQorICAgIHsKKyAgICAgICAgcXVhbGlmaWVy
Lnl1diA9IHRydWU7CisgICAgfQorICAgIGVsc2UgaWYgKHF1YWxpZmllclR5cGUgPT0gInJnYmEz
MmYiKQorICAgIHsKKyAgICAgICAgY2hlY2tMYXlvdXRRdWFsaWZpZXJTdXBwb3J0ZWQocXVhbGlm
aWVyVHlwZUxpbmUsIHF1YWxpZmllclR5cGUsIDMxMCk7CisgICAgICAgIHF1YWxpZmllci5pbWFn
ZUludGVybmFsRm9ybWF0ID0gRWlpZlJHQkEzMkY7CisgICAgfQorICAgIGVsc2UgaWYgKHF1YWxp
ZmllclR5cGUgPT0gInJnYmExNmYiKQorICAgIHsKKyAgICAgICAgY2hlY2tMYXlvdXRRdWFsaWZp
ZXJTdXBwb3J0ZWQocXVhbGlmaWVyVHlwZUxpbmUsIHF1YWxpZmllclR5cGUsIDMxMCk7CisgICAg
ICAgIHF1YWxpZmllci5pbWFnZUludGVybmFsRm9ybWF0ID0gRWlpZlJHQkExNkY7CisgICAgfQor
ICAgIGVsc2UgaWYgKHF1YWxpZmllclR5cGUgPT0gInIzMmYiKQorICAgIHsKKyAgICAgICAgY2hl
Y2tMYXlvdXRRdWFsaWZpZXJTdXBwb3J0ZWQocXVhbGlmaWVyVHlwZUxpbmUsIHF1YWxpZmllclR5
cGUsIDMxMCk7CisgICAgICAgIHF1YWxpZmllci5pbWFnZUludGVybmFsRm9ybWF0ID0gRWlpZlIz
MkY7CisgICAgfQorICAgIGVsc2UgaWYgKHF1YWxpZmllclR5cGUgPT0gInJnYmE4IikKKyAgICB7
CisgICAgICAgIGNoZWNrTGF5b3V0UXVhbGlmaWVyU3VwcG9ydGVkKHF1YWxpZmllclR5cGVMaW5l
LCBxdWFsaWZpZXJUeXBlLCAzMTApOworICAgICAgICBxdWFsaWZpZXIuaW1hZ2VJbnRlcm5hbEZv
cm1hdCA9IEVpaWZSR0JBODsKKyAgICB9CisgICAgZWxzZSBpZiAocXVhbGlmaWVyVHlwZSA9PSAi
cmdiYThfc25vcm0iKQorICAgIHsKKyAgICAgICAgY2hlY2tMYXlvdXRRdWFsaWZpZXJTdXBwb3J0
ZWQocXVhbGlmaWVyVHlwZUxpbmUsIHF1YWxpZmllclR5cGUsIDMxMCk7CisgICAgICAgIHF1YWxp
Zmllci5pbWFnZUludGVybmFsRm9ybWF0ID0gRWlpZlJHQkE4X1NOT1JNOworICAgIH0KKyAgICBl
bHNlIGlmIChxdWFsaWZpZXJUeXBlID09ICJyZ2JhMzJpIikKKyAgICB7CisgICAgICAgIGNoZWNr
TGF5b3V0UXVhbGlmaWVyU3VwcG9ydGVkKHF1YWxpZmllclR5cGVMaW5lLCBxdWFsaWZpZXJUeXBl
LCAzMTApOworICAgICAgICBxdWFsaWZpZXIuaW1hZ2VJbnRlcm5hbEZvcm1hdCA9IEVpaWZSR0JB
MzJJOworICAgIH0KKyAgICBlbHNlIGlmIChxdWFsaWZpZXJUeXBlID09ICJyZ2JhMTZpIikKKyAg
ICB7CisgICAgICAgIGNoZWNrTGF5b3V0UXVhbGlmaWVyU3VwcG9ydGVkKHF1YWxpZmllclR5cGVM
aW5lLCBxdWFsaWZpZXJUeXBlLCAzMTApOworICAgICAgICBxdWFsaWZpZXIuaW1hZ2VJbnRlcm5h
bEZvcm1hdCA9IEVpaWZSR0JBMTZJOworICAgIH0KKyAgICBlbHNlIGlmIChxdWFsaWZpZXJUeXBl
ID09ICJyZ2JhOGkiKQorICAgIHsKKyAgICAgICAgY2hlY2tMYXlvdXRRdWFsaWZpZXJTdXBwb3J0
ZWQocXVhbGlmaWVyVHlwZUxpbmUsIHF1YWxpZmllclR5cGUsIDMxMCk7CisgICAgICAgIHF1YWxp
Zmllci5pbWFnZUludGVybmFsRm9ybWF0ID0gRWlpZlJHQkE4STsKKyAgICB9CisgICAgZWxzZSBp
ZiAocXVhbGlmaWVyVHlwZSA9PSAicjMyaSIpCisgICAgeworICAgICAgICBjaGVja0xheW91dFF1
YWxpZmllclN1cHBvcnRlZChxdWFsaWZpZXJUeXBlTGluZSwgcXVhbGlmaWVyVHlwZSwgMzEwKTsK
KyAgICAgICAgcXVhbGlmaWVyLmltYWdlSW50ZXJuYWxGb3JtYXQgPSBFaWlmUjMySTsKICAgICB9
CisgICAgZWxzZSBpZiAocXVhbGlmaWVyVHlwZSA9PSAicmdiYTMydWkiKQorICAgIHsKKyAgICAg
ICAgY2hlY2tMYXlvdXRRdWFsaWZpZXJTdXBwb3J0ZWQocXVhbGlmaWVyVHlwZUxpbmUsIHF1YWxp
ZmllclR5cGUsIDMxMCk7CisgICAgICAgIHF1YWxpZmllci5pbWFnZUludGVybmFsRm9ybWF0ID0g
RWlpZlJHQkEzMlVJOworICAgIH0KKyAgICBlbHNlIGlmIChxdWFsaWZpZXJUeXBlID09ICJyZ2Jh
MTZ1aSIpCisgICAgeworICAgICAgICBjaGVja0xheW91dFF1YWxpZmllclN1cHBvcnRlZChxdWFs
aWZpZXJUeXBlTGluZSwgcXVhbGlmaWVyVHlwZSwgMzEwKTsKKyAgICAgICAgcXVhbGlmaWVyLmlt
YWdlSW50ZXJuYWxGb3JtYXQgPSBFaWlmUkdCQTE2VUk7CisgICAgfQorICAgIGVsc2UgaWYgKHF1
YWxpZmllclR5cGUgPT0gInJnYmE4dWkiKQorICAgIHsKKyAgICAgICAgY2hlY2tMYXlvdXRRdWFs
aWZpZXJTdXBwb3J0ZWQocXVhbGlmaWVyVHlwZUxpbmUsIHF1YWxpZmllclR5cGUsIDMxMCk7Cisg
ICAgICAgIHF1YWxpZmllci5pbWFnZUludGVybmFsRm9ybWF0ID0gRWlpZlJHQkE4VUk7CisgICAg
fQorICAgIGVsc2UgaWYgKHF1YWxpZmllclR5cGUgPT0gInIzMnVpIikKKyAgICB7CisgICAgICAg
IGNoZWNrTGF5b3V0UXVhbGlmaWVyU3VwcG9ydGVkKHF1YWxpZmllclR5cGVMaW5lLCBxdWFsaWZp
ZXJUeXBlLCAzMTApOworICAgICAgICBxdWFsaWZpZXIuaW1hZ2VJbnRlcm5hbEZvcm1hdCA9IEVp
aWZSMzJVSTsKKyAgICB9CisKICAgICBlbHNlCiAgICAgewogICAgICAgICBlcnJvcihxdWFsaWZp
ZXJUeXBlTGluZSwgImludmFsaWQgbGF5b3V0IHF1YWxpZmllciIsIHF1YWxpZmllclR5cGUuY19z
dHIoKSk7CkBAIC0yOTE1LDEyICszNDI2LDI4IEBAIHZvaWQgVFBhcnNlQ29udGV4dDo6cGFyc2VM
b2NhbFNpemUoY29uc3QgVFN0cmluZyAmcXVhbGlmaWVyVHlwZSwKICAgICBjaGVja0xheW91dFF1
YWxpZmllclN1cHBvcnRlZChxdWFsaWZpZXJUeXBlTGluZSwgcXVhbGlmaWVyVHlwZSwgMzEwKTsK
ICAgICBpZiAoaW50VmFsdWUgPCAxKQogICAgIHsKLSAgICAgICAgc3RkOjpzdHJpbmcgZXJyb3JN
ZXNzYWdlID0gc3RkOjpzdHJpbmcoZ2V0V29ya0dyb3VwU2l6ZVN0cmluZyhpbmRleCkpICsgIiBt
dXN0IGJlIHBvc2l0aXZlIjsKLSAgICAgICAgZXJyb3IoaW50VmFsdWVMaW5lLCAib3V0IG9mIHJh
bmdlOiIsIGludFZhbHVlU3RyaW5nLmNfc3RyKCksIGVycm9yTWVzc2FnZS5jX3N0cigpKTsKKyAg
ICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gcmVhc29uU3RyZWFtOworICAgICAgICByZWFzb25TdHJl
YW0gPDwgIm91dCBvZiByYW5nZTogIiA8PCBnZXRXb3JrR3JvdXBTaXplU3RyaW5nKGluZGV4KSA8
PCAiIG11c3QgYmUgcG9zaXRpdmUiOworICAgICAgICBzdGQ6OnN0cmluZyByZWFzb24gPSByZWFz
b25TdHJlYW0uc3RyKCk7CisgICAgICAgIGVycm9yKGludFZhbHVlTGluZSwgcmVhc29uLmNfc3Ry
KCksIGludFZhbHVlU3RyaW5nLmNfc3RyKCkpOwogICAgIH0KICAgICAoKmxvY2FsU2l6ZSlbaW5k
ZXhdID0gaW50VmFsdWU7CiB9CiAKK3ZvaWQgVFBhcnNlQ29udGV4dDo6cGFyc2VOdW1WaWV3cyhp
bnQgaW50VmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNv
dXJjZUxvYyAmaW50VmFsdWVMaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZpbnRWYWx1ZVN0cmluZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgKm51bVZpZXdzKQoreworICAgIC8vIFRoaXMgZXJyb3IgaXMgb25s
eSBzcGVjaWZpZWQgaW4gV2ViR0wsIGJ1dCB0aWdodGVucyB1bnNwZWNpZmllZCBiZWhhdmlvciBp
biB0aGUgbmF0aXZlCisgICAgLy8gc3BlY2lmaWNhdGlvbi4KKyAgICBpZiAoaW50VmFsdWUgPCAx
KQorICAgIHsKKyAgICAgICAgZXJyb3IoaW50VmFsdWVMaW5lLCAib3V0IG9mIHJhbmdlOiBudW1f
dmlld3MgbXVzdCBiZSBwb3NpdGl2ZSIsIGludFZhbHVlU3RyaW5nLmNfc3RyKCkpOworICAgIH0K
KyAgICAqbnVtVmlld3MgPSBpbnRWYWx1ZTsKK30KKwogVExheW91dFF1YWxpZmllciBUUGFyc2VD
b250ZXh0OjpwYXJzZUxheW91dFF1YWxpZmllcihjb25zdCBUU3RyaW5nICZxdWFsaWZpZXJUeXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUU291cmNlTG9jICZxdWFsaWZpZXJUeXBlTGluZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGludFZhbHVlLApAQCAtMjkzNSwx
NSArMzQ2MiwyOCBAQCBUTGF5b3V0UXVhbGlmaWVyIFRQYXJzZUNvbnRleHQ6OnBhcnNlTGF5b3V0
UXVhbGlmaWVyKGNvbnN0IFRTdHJpbmcgJnF1YWxpZmllclR5cAogICAgICAgICAvLyBtdXN0IGNo
ZWNrIHRoYXQgbG9jYXRpb24gaXMgbm9uLW5lZ2F0aXZlCiAgICAgICAgIGlmIChpbnRWYWx1ZSA8
IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yKGludFZhbHVlTGluZSwgIm91dCBvZiBy
YW5nZToiLCBpbnRWYWx1ZVN0cmluZy5jX3N0cigpLAotICAgICAgICAgICAgICAgICAgImxvY2F0
aW9uIG11c3QgYmUgbm9uLW5lZ2F0aXZlIik7CisgICAgICAgICAgICBlcnJvcihpbnRWYWx1ZUxp
bmUsICJvdXQgb2YgcmFuZ2U6IGxvY2F0aW9uIG11c3QgYmUgbm9uLW5lZ2F0aXZlIiwKKyAgICAg
ICAgICAgICAgICAgIGludFZhbHVlU3RyaW5nLmNfc3RyKCkpOwogICAgICAgICB9CiAgICAgICAg
IGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgcXVhbGlmaWVyLmxvY2F0aW9uID0gaW50VmFs
dWU7CisgICAgICAgICAgICBxdWFsaWZpZXIubG9jYXRpb24gICAgICAgICAgID0gaW50VmFsdWU7
CiAgICAgICAgICAgICBxdWFsaWZpZXIubG9jYXRpb25zU3BlY2lmaWVkID0gMTsKICAgICAgICAg
fQogICAgIH0KKyAgICBlbHNlIGlmIChxdWFsaWZpZXJUeXBlID09ICJiaW5kaW5nIikKKyAgICB7
CisgICAgICAgIGNoZWNrTGF5b3V0UXVhbGlmaWVyU3VwcG9ydGVkKHF1YWxpZmllclR5cGVMaW5l
LCBxdWFsaWZpZXJUeXBlLCAzMTApOworICAgICAgICBpZiAoaW50VmFsdWUgPCAwKQorICAgICAg
ICB7CisgICAgICAgICAgICBlcnJvcihpbnRWYWx1ZUxpbmUsICJvdXQgb2YgcmFuZ2U6IGJpbmRp
bmcgbXVzdCBiZSBub24tbmVnYXRpdmUiLAorICAgICAgICAgICAgICAgICAgaW50VmFsdWVTdHJp
bmcuY19zdHIoKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAg
ICAgICBxdWFsaWZpZXIuYmluZGluZyA9IGludFZhbHVlOworICAgICAgICB9CisgICAgfQogICAg
IGVsc2UgaWYgKHF1YWxpZmllclR5cGUgPT0gImxvY2FsX3NpemVfeCIpCiAgICAgewogICAgICAg
ICBwYXJzZUxvY2FsU2l6ZShxdWFsaWZpZXJUeXBlLCBxdWFsaWZpZXJUeXBlTGluZSwgaW50VmFs
dWUsIGludFZhbHVlTGluZSwgaW50VmFsdWVTdHJpbmcsIDB1LApAQCAtMjk1OSw2ICszNDk5LDEy
IEBAIFRMYXlvdXRRdWFsaWZpZXIgVFBhcnNlQ29udGV4dDo6cGFyc2VMYXlvdXRRdWFsaWZpZXIo
Y29uc3QgVFN0cmluZyAmcXVhbGlmaWVyVHlwCiAgICAgICAgIHBhcnNlTG9jYWxTaXplKHF1YWxp
ZmllclR5cGUsIHF1YWxpZmllclR5cGVMaW5lLCBpbnRWYWx1ZSwgaW50VmFsdWVMaW5lLCBpbnRW
YWx1ZVN0cmluZywgMnUsCiAgICAgICAgICAgICAgICAgICAgICAgICZxdWFsaWZpZXIubG9jYWxT
aXplKTsKICAgICB9CisgICAgZWxzZSBpZiAocXVhbGlmaWVyVHlwZSA9PSAibnVtX3ZpZXdzIiAm
JiBtTXVsdGl2aWV3QXZhaWxhYmxlICYmCisgICAgICAgICAgICAgKGlzRXh0ZW5zaW9uRW5hYmxl
ZCgiR0xfT1ZSX211bHRpdmlldyIpIHx8IGlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfT1ZSX211bHRp
dmlldzIiKSkgJiYKKyAgICAgICAgICAgICBtU2hhZGVyVHlwZSA9PSBHTF9WRVJURVhfU0hBREVS
KQorICAgIHsKKyAgICAgICAgcGFyc2VOdW1WaWV3cyhpbnRWYWx1ZSwgaW50VmFsdWVMaW5lLCBp
bnRWYWx1ZVN0cmluZywgJnF1YWxpZmllci5udW1WaWV3cyk7CisgICAgfQogICAgIGVsc2UKICAg
ICB7CiAgICAgICAgIGVycm9yKHF1YWxpZmllclR5cGVMaW5lLCAiaW52YWxpZCBsYXlvdXQgcXVh
bGlmaWVyIiwgcXVhbGlmaWVyVHlwZS5jX3N0cigpKTsKQEAgLTI5NzksNyArMzUyNSwyNSBAQCBU
TGF5b3V0UXVhbGlmaWVyIFRQYXJzZUNvbnRleHQ6OmpvaW5MYXlvdXRRdWFsaWZpZXJzKFRMYXlv
dXRRdWFsaWZpZXIgbGVmdFF1YWxpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZyaWdodFF1YWxpZmllckxvY2F0
aW9uKQogewogICAgIHJldHVybiBzaDo6Sm9pbkxheW91dFF1YWxpZmllcnMobGVmdFF1YWxpZmll
ciwgcmlnaHRRdWFsaWZpZXIsIHJpZ2h0UXVhbGlmaWVyTG9jYXRpb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmbURpYWdub3N0aWNzKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1EaWFnbm9zdGljcyk7Cit9CisKK1RGaWVsZExpc3QgKlRQYXJz
ZUNvbnRleHQ6OmNvbWJpbmVTdHJ1Y3RGaWVsZExpc3RzKFRGaWVsZExpc3QgKnByb2Nlc3NlZEZp
ZWxkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRGaWVsZExpc3QgKm5ld2x5QWRkZWRGaWVsZHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2NhdGlv
bikKK3sKKyAgICBmb3IgKFRGaWVsZCAqZmllbGQgOiAqbmV3bHlBZGRlZEZpZWxkcykKKyAgICB7
CisgICAgICAgIGZvciAoVEZpZWxkICpvbGRGaWVsZCA6ICpwcm9jZXNzZWRGaWVsZHMpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChvbGRGaWVsZC0+bmFtZSgpID09IGZpZWxkLT5uYW1lKCkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXJyb3IobG9jYXRpb24sICJkdXBsaWNh
dGUgZmllbGQgbmFtZSBpbiBzdHJ1Y3R1cmUiLCBmaWVsZC0+bmFtZSgpLmNfc3RyKCkpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHByb2Nlc3NlZEZpZWxkcy0+cHVzaF9iYWNr
KGZpZWxkKTsKKyAgICB9CisgICAgcmV0dXJuIHByb2Nlc3NlZEZpZWxkczsKIH0KIAogVEZpZWxk
TGlzdCAqVFBhcnNlQ29udGV4dDo6YWRkU3RydWN0RGVjbGFyYXRvckxpc3RXaXRoUXVhbGlmaWVy
cygKQEAgLTI5ODcsMTAgKzM1NTEsMTEgQEAgVEZpZWxkTGlzdCAqVFBhcnNlQ29udGV4dDo6YWRk
U3RydWN0RGVjbGFyYXRvckxpc3RXaXRoUXVhbGlmaWVycygKICAgICBUUHVibGljVHlwZSAqdHlw
ZVNwZWNpZmllciwKICAgICBURmllbGRMaXN0ICpmaWVsZExpc3QpCiB7Ci0gICAgVFR5cGVRdWFs
aWZpZXIgdHlwZVF1YWxpZmllciA9IHR5cGVRdWFsaWZpZXJCdWlsZGVyLmdldFZhcmlhYmxlVHlw
ZVF1YWxpZmllcigmbURpYWdub3N0aWNzKTsKKyAgICBUVHlwZVF1YWxpZmllciB0eXBlUXVhbGlm
aWVyID0gdHlwZVF1YWxpZmllckJ1aWxkZXIuZ2V0VmFyaWFibGVUeXBlUXVhbGlmaWVyKG1EaWFn
bm9zdGljcyk7CiAKICAgICB0eXBlU3BlY2lmaWVyLT5xdWFsaWZpZXIgICAgICAgPSB0eXBlUXVh
bGlmaWVyLnF1YWxpZmllcjsKICAgICB0eXBlU3BlY2lmaWVyLT5sYXlvdXRRdWFsaWZpZXIgPSB0
eXBlUXVhbGlmaWVyLmxheW91dFF1YWxpZmllcjsKKyAgICB0eXBlU3BlY2lmaWVyLT5tZW1vcnlR
dWFsaWZpZXIgPSB0eXBlUXVhbGlmaWVyLm1lbW9yeVF1YWxpZmllcjsKICAgICB0eXBlU3BlY2lm
aWVyLT5pbnZhcmlhbnQgICAgICAgPSB0eXBlUXVhbGlmaWVyLmludmFyaWFudDsKICAgICBpZiAo
dHlwZVF1YWxpZmllci5wcmVjaXNpb24gIT0gRWJwVW5kZWZpbmVkKQogICAgIHsKQEAgLTMwMjEs
NiArMzU4Niw3IEBAIFRGaWVsZExpc3QgKlRQYXJzZUNvbnRleHQ6OmFkZFN0cnVjdERlY2xhcmF0
b3JMaXN0KGNvbnN0IFRQdWJsaWNUeXBlICZ0eXBlU3BlY2lmCiAgICAgICAgIHR5cGUtPnNldFBy
ZWNpc2lvbih0eXBlU3BlY2lmaWVyLnByZWNpc2lvbik7CiAgICAgICAgIHR5cGUtPnNldFF1YWxp
Zmllcih0eXBlU3BlY2lmaWVyLnF1YWxpZmllcik7CiAgICAgICAgIHR5cGUtPnNldExheW91dFF1
YWxpZmllcih0eXBlU3BlY2lmaWVyLmxheW91dFF1YWxpZmllcik7CisgICAgICAgIHR5cGUtPnNl
dE1lbW9yeVF1YWxpZmllcih0eXBlU3BlY2lmaWVyLm1lbW9yeVF1YWxpZmllcik7CiAgICAgICAg
IHR5cGUtPnNldEludmFyaWFudCh0eXBlU3BlY2lmaWVyLmludmFyaWFudCk7CiAKICAgICAgICAg
Ly8gZG9uJ3QgYWxsb3cgYXJyYXlzIG9mIGFycmF5cwpAQCAtMzA1OSw3ICszNjI1LDcgQEAgVFR5
cGVTcGVjaWZpZXJOb25BcnJheSBUUGFyc2VDb250ZXh0OjphZGRTdHJ1Y3R1cmUoY29uc3QgVFNv
dXJjZUxvYyAmc3RydWN0TGluZSwKICAgICAgICAgVFZhcmlhYmxlICp1c2VyVHlwZURlZiA9IG5l
dyBUVmFyaWFibGUoc3RydWN0TmFtZSwgKnN0cnVjdHVyZVR5cGUsIHRydWUpOwogICAgICAgICBp
ZiAoIXN5bWJvbFRhYmxlLmRlY2xhcmUodXNlclR5cGVEZWYpKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBlcnJvcihuYW1lTGluZSwgInJlZGVmaW5pdGlvbiIsIHN0cnVjdE5hbWUtPmNfc3RyKCks
ICJzdHJ1Y3QiKTsKKyAgICAgICAgICAgIGVycm9yKG5hbWVMaW5lLCAicmVkZWZpbml0aW9uIG9m
IGEgc3RydWN0Iiwgc3RydWN0TmFtZS0+Y19zdHIoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTMwODIsNiArMzY0OCwxNCBAQCBUVHlwZVNwZWNpZmllck5vbkFycmF5IFRQYXJzZUNvbnRleHQ6
OmFkZFN0cnVjdHVyZShjb25zdCBUU291cmNlTG9jICZzdHJ1Y3RMaW5lLAogICAgICAgICB7CiAg
ICAgICAgICAgICBlcnJvcihmaWVsZC5saW5lKCksICJpbnZhbGlkIHF1YWxpZmllciBvbiBzdHJ1
Y3QgbWVtYmVyIiwgImludmFyaWFudCIpOwogICAgICAgICB9CisgICAgICAgIGlmIChJc0ltYWdl
KGZpZWxkLnR5cGUoKS0+Z2V0QmFzaWNUeXBlKCkpKQorICAgICAgICB7CisgICAgICAgICAgICBl
cnJvcihmaWVsZC5saW5lKCksICJkaXNhbGxvd2VkIHR5cGUgaW4gc3RydWN0IiwgZmllbGQudHlw
ZSgpLT5nZXRCYXNpY1N0cmluZygpKTsKKyAgICAgICAgfQorCisgICAgICAgIGNoZWNrTWVtb3J5
UXVhbGlmaWVySXNOb3RTcGVjaWZpZWQoZmllbGQudHlwZSgpLT5nZXRNZW1vcnlRdWFsaWZpZXIo
KSwgZmllbGQubGluZSgpKTsKKworICAgICAgICBjaGVja0JpbmRpbmdJc05vdFNwZWNpZmllZChm
aWVsZC5saW5lKCksIGZpZWxkLnR5cGUoKS0+Z2V0TGF5b3V0UXVhbGlmaWVyKCkuYmluZGluZyk7
CiAKICAgICAgICAgY2hlY2tMb2NhdGlvbklzTm90U3BlY2lmaWVkKGZpZWxkLmxpbmUoKSwgZmll
bGQudHlwZSgpLT5nZXRMYXlvdXRRdWFsaWZpZXIoKSk7CiAgICAgfQpAQCAtMzExMCw3ICszNjg0
LDcgQEAgVEludGVybVN3aXRjaCAqVFBhcnNlQ29udGV4dDo6YWRkU3dpdGNoKFRJbnRlcm1UeXBl
ZCAqaW5pdCwKIAogICAgIGlmIChzdGF0ZW1lbnRMaXN0KQogICAgIHsKLSAgICAgICAgaWYgKCFW
YWxpZGF0ZVN3aXRjaDo6dmFsaWRhdGUoc3dpdGNoVHlwZSwgdGhpcywgc3RhdGVtZW50TGlzdCwg
bG9jKSkKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVN3aXRjaFN0YXRlbWVudExpc3Qoc3dpdGNoVHlw
ZSwgbURpYWdub3N0aWNzLCBzdGF0ZW1lbnRMaXN0LCBsb2MpKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQpAQCAtMzE3NywxMyArMzc1MSw5IEBAIFRJ
bnRlcm1DYXNlICpUUGFyc2VDb250ZXh0OjphZGREZWZhdWx0KGNvbnN0IFRTb3VyY2VMb2MgJmxv
YykKIAogVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjpjcmVhdGVVbmFyeU1hdGgoVE9wZXJh
dG9yIG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElu
dGVybVR5cGVkICpjaGlsZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpmdW5jUmV0dXJuVHlwZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxv
YykKIHsKLSAgICBpZiAoY2hpbGQgPT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIH0KKyAgICBBU1NFUlQoY2hpbGQgIT0gbnVsbHB0cik7CiAKICAgICBzd2l0
Y2ggKG9wKQogICAgIHsKQEAgLTMxOTEsNiArMzc2MSw3IEBAIFRJbnRlcm1UeXBlZCAqVFBhcnNl
Q29udGV4dDo6Y3JlYXRlVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwKICAgICAgICAgICAgIGlmIChj
aGlsZC0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0Qm9vbCB8fCBjaGlsZC0+aXNNYXRyaXgoKSB8fCBj
aGlsZC0+aXNBcnJheSgpIHx8CiAgICAgICAgICAgICAgICAgY2hpbGQtPmlzVmVjdG9yKCkpCiAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdW5hcnlPcEVycm9yKGxvYywgR2V0T3BlcmF0
b3JTdHJpbmcob3ApLCBjaGlsZC0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAg
LTMxOTgsNiArMzc2OSw3IEBAIFRJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6Y3JlYXRlVW5h
cnlNYXRoKFRPcGVyYXRvciBvcCwKICAgICAgICAgICAgIGlmICgoY2hpbGQtPmdldEJhc2ljVHlw
ZSgpICE9IEVidEludCAmJiBjaGlsZC0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0VUludCkgfHwKICAg
ICAgICAgICAgICAgICBjaGlsZC0+aXNNYXRyaXgoKSB8fCBjaGlsZC0+aXNBcnJheSgpKQogICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIHVuYXJ5T3BFcnJvcihsb2MsIEdldE9wZXJhdG9y
U3RyaW5nKG9wKSwgY2hpbGQtPmdldENvbXBsZXRlU3RyaW5nKCkpOwogICAgICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0z
MjA4LDggKzM3ODAsOSBAQCBUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmNyZWF0ZVVuYXJ5
TWF0aChUT3BlcmF0b3Igb3AsCiAgICAgICAgIGNhc2UgRU9wTmVnYXRpdmU6CiAgICAgICAgIGNh
c2UgRU9wUG9zaXRpdmU6CiAgICAgICAgICAgICBpZiAoY2hpbGQtPmdldEJhc2ljVHlwZSgpID09
IEVidFN0cnVjdCB8fCBjaGlsZC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0Qm9vbCB8fAotICAgICAg
ICAgICAgICAgIGNoaWxkLT5pc0FycmF5KCkgfHwgSXNTYW1wbGVyKGNoaWxkLT5nZXRCYXNpY1R5
cGUoKSkpCisgICAgICAgICAgICAgICAgY2hpbGQtPmlzQXJyYXkoKSB8fCBJc09wYXF1ZVR5cGUo
Y2hpbGQtPmdldEJhc2ljVHlwZSgpKSkKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB1
bmFyeU9wRXJyb3IobG9jLCBHZXRPcGVyYXRvclN0cmluZyhvcCksIGNoaWxkLT5nZXRDb21wbGV0
ZVN0cmluZygpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAg
IH0KICAgICAgICAgLy8gT3BlcmF0b3JzIGZvciBidWlsdC1pbnMgYXJlIGFscmVhZHkgdHlwZSBj
aGVja2VkIGFnYWluc3QgdGhlaXIgcHJvdG90eXBlLgpAQCAtMzIyMCw3ICszNzkzLDcgQEAgVElu
dGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjpjcmVhdGVVbmFyeU1hdGgoVE9wZXJhdG9yIG9wLAog
ICAgIFRJbnRlcm1VbmFyeSAqbm9kZSA9IG5ldyBUSW50ZXJtVW5hcnkob3AsIGNoaWxkKTsKICAg
ICBub2RlLT5zZXRMaW5lKGxvYyk7CiAKLSAgICBUSW50ZXJtVHlwZWQgKmZvbGRlZE5vZGUgPSBu
b2RlLT5mb2xkKCZtRGlhZ25vc3RpY3MpOworICAgIFRJbnRlcm1UeXBlZCAqZm9sZGVkTm9kZSA9
IG5vZGUtPmZvbGQobURpYWdub3N0aWNzKTsKICAgICBpZiAoZm9sZGVkTm9kZSkKICAgICAgICAg
cmV0dXJuIGZvbGRlZE5vZGU7CiAKQEAgLTMyMjksMTAgKzM4MDIsOSBAQCBUSW50ZXJtVHlwZWQg
KlRQYXJzZUNvbnRleHQ6OmNyZWF0ZVVuYXJ5TWF0aChUT3BlcmF0b3Igb3AsCiAKIFRJbnRlcm1U
eXBlZCAqVFBhcnNlQ29udGV4dDo6YWRkVW5hcnlNYXRoKFRPcGVyYXRvciBvcCwgVEludGVybVR5
cGVkICpjaGlsZCwgY29uc3QgVFNvdXJjZUxvYyAmbG9jKQogewotICAgIFRJbnRlcm1UeXBlZCAq
bm9kZSA9IGNyZWF0ZVVuYXJ5TWF0aChvcCwgY2hpbGQsIGxvYywgbnVsbHB0cik7CisgICAgVElu
dGVybVR5cGVkICpub2RlID0gY3JlYXRlVW5hcnlNYXRoKG9wLCBjaGlsZCwgbG9jKTsKICAgICBp
ZiAobm9kZSA9PSBudWxscHRyKQogICAgIHsKLSAgICAgICAgdW5hcnlPcEVycm9yKGxvYywgR2V0
T3BlcmF0b3JTdHJpbmcob3ApLCBjaGlsZC0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAg
IHJldHVybiBjaGlsZDsKICAgICB9CiAgICAgcmV0dXJuIG5vZGU7CkBAIC0zMzczLDEzICszOTQ1
LDI4IEBAIGJvb2wgVFBhcnNlQ29udGV4dDo6YmluYXJ5T3BDb21tb25DaGVjayhUT3BlcmF0b3Ig
b3AsCiAgICAgICAgICAgICAgICAgICAgICAgR2V0T3BlcmF0b3JTdHJpbmcob3ApKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
ICgob3AgPT0gRU9wQXNzaWduIHx8IG9wID09IEVPcEluaXRpYWxpemUpICYmCisgICAgICAgICAg
ICAgICAgbGVmdC0+Z2V0VHlwZSgpLmlzU3RydWN0dXJlQ29udGFpbmluZ0ltYWdlcygpKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGVycm9yKGxvYywgInVuZGVmaW5lZCBvcGVyYXRp
b24gZm9yIHN0cnVjdHMgY29udGFpbmluZyBpbWFnZXMiLAorICAgICAgICAgICAgICAgICAgICAg
IEdldE9wZXJhdG9yU3RyaW5nKG9wKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChsZWZ0LT5nZXROb21pbmFsU2l6ZSgpICE9
IHJpZ2h0LT5nZXROb21pbmFsU2l6ZSgpKSB8fAorICAgICAgICAgICAgICAgIChsZWZ0LT5nZXRT
ZWNvbmRhcnlTaXplKCkgIT0gcmlnaHQtPmdldFNlY29uZGFyeVNpemUoKSkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgZXJyb3IobG9jLCAiZGltZW5zaW9uIG1pc21hdGNoIiwgR2V0
T3BlcmF0b3JTdHJpbmcob3ApKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFT3BMZXNzVGhhbjoK
ICAgICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbjoKICAgICAgICAgY2FzZSBFT3BMZXNzVGhhbkVx
dWFsOgogICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWw6Ci0gICAgICAgICAgICBpZiAo
KGxlZnQtPmdldE5vbWluYWxTaXplKCkgIT0gcmlnaHQtPmdldE5vbWluYWxTaXplKCkpIHx8Ci0g
ICAgICAgICAgICAgICAgKGxlZnQtPmdldFNlY29uZGFyeVNpemUoKSAhPSByaWdodC0+Z2V0U2Vj
b25kYXJ5U2l6ZSgpKSkKKyAgICAgICAgICAgIGlmICghbGVmdC0+aXNTY2FsYXIoKSB8fCAhcmln
aHQtPmlzU2NhbGFyKCkpCiAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXJyb3IobG9j
LCAiY29tcGFyaXNvbiBvcGVyYXRvciBvbmx5IGRlZmluZWQgZm9yIHNjYWxhcnMiLCBHZXRPcGVy
YXRvclN0cmluZyhvcCkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzQ4NiwyNyArNDA3MywyMiBAQCBUSW50ZXJt
VHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEJpbmFyeU1hdGhJbnRlcm5hbChUT3BlcmF0b3Igb3As
CiAgICAgewogICAgICAgICBjYXNlIEVPcEVxdWFsOgogICAgICAgICBjYXNlIEVPcE5vdEVxdWFs
OgotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRU9wTGVzc1RoYW46CiAgICAgICAg
IGNhc2UgRU9wR3JlYXRlclRoYW46CiAgICAgICAgIGNhc2UgRU9wTGVzc1RoYW5FcXVhbDoKICAg
ICAgICAgY2FzZSBFT3BHcmVhdGVyVGhhbkVxdWFsOgotICAgICAgICAgICAgQVNTRVJUKCFsZWZ0
LT5pc0FycmF5KCkgJiYgIXJpZ2h0LT5pc0FycmF5KCkgJiYgIWxlZnQtPmdldFR5cGUoKS5nZXRT
dHJ1Y3QoKSAmJgotICAgICAgICAgICAgICAgICAgICFyaWdodC0+Z2V0VHlwZSgpLmdldFN0cnVj
dCgpKTsKLSAgICAgICAgICAgIGlmIChsZWZ0LT5pc01hdHJpeCgpIHx8IGxlZnQtPmlzVmVjdG9y
KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBFT3BMb2dpY2FsT3I6
CiAgICAgICAgIGNhc2UgRU9wTG9naWNhbFhvcjoKICAgICAgICAgY2FzZSBFT3BMb2dpY2FsQW5k
OgogICAgICAgICAgICAgQVNTRVJUKCFsZWZ0LT5pc0FycmF5KCkgJiYgIXJpZ2h0LT5pc0FycmF5
KCkgJiYgIWxlZnQtPmdldFR5cGUoKS5nZXRTdHJ1Y3QoKSAmJgogICAgICAgICAgICAgICAgICAg
ICFyaWdodC0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKTsKLSAgICAgICAgICAgIGlmIChsZWZ0LT5n
ZXRCYXNpY1R5cGUoKSAhPSBFYnRCb29sIHx8IGxlZnQtPmlzTWF0cml4KCkgfHwgbGVmdC0+aXNW
ZWN0b3IoKSkKKyAgICAgICAgICAgIGlmIChsZWZ0LT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRCb29s
IHx8ICFsZWZ0LT5pc1NjYWxhcigpIHx8ICFyaWdodC0+aXNTY2FsYXIoKSkKICAgICAgICAgICAg
IHsKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIC8vIEJhc2ljIHR5cGVzIG1hdGNoaW5nIHNob3VsZCBoYXZlIGJlZW4gYWxyZWFkeSBj
aGVja2VkLgorICAgICAgICAgICAgQVNTRVJUKHJpZ2h0LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRC
b29sKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEVPcEFkZDoKICAgICAgICAg
Y2FzZSBFT3BTdWI6CkBAIC0zNTQ1LDcgKzQxMjcsNyBAQCBUSW50ZXJtVHlwZWQgKlRQYXJzZUNv
bnRleHQ6OmFkZEJpbmFyeU1hdGhJbnRlcm5hbChUT3BlcmF0b3Igb3AsCiAgICAgbm9kZS0+c2V0
TGluZShsb2MpOwogCiAgICAgLy8gU2VlIGlmIHdlIGNhbiBmb2xkIGNvbnN0YW50cy4KLSAgICBU
SW50ZXJtVHlwZWQgKmZvbGRlZE5vZGUgPSBub2RlLT5mb2xkKCZtRGlhZ25vc3RpY3MpOworICAg
IFRJbnRlcm1UeXBlZCAqZm9sZGVkTm9kZSA9IG5vZGUtPmZvbGQobURpYWdub3N0aWNzKTsKICAg
ICBpZiAoZm9sZGVkTm9kZSkKICAgICAgICAgcmV0dXJuIGZvbGRlZE5vZGU7CiAKQEAgLTM1ODUs
MTAgKzQxNjcsMTAgQEAgVEludGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRCaW5hcnlNYXRo
Qm9vbGVhblJlc3VsdChUT3BlcmF0b3Igb3AsCiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLVRJbnRl
cm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6Y3JlYXRlQXNzaWduKFRPcGVyYXRvciBvcCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqbGVmdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAq
cmlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
U291cmNlTG9jICZsb2MpCitUSW50ZXJtQmluYXJ5ICpUUGFyc2VDb250ZXh0OjpjcmVhdGVBc3Np
Z24oVE9wZXJhdG9yIG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRJbnRlcm1UeXBlZCAqbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvYykKIHsKICAgICBpZiAoYmlu
YXJ5T3BDb21tb25DaGVjayhvcCwgbGVmdCwgcmlnaHQsIGxvYykpCiAgICAgewpAQCAtMzYyOCwx
MCArNDIxMCwxMCBAQCBUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZENvbW1hKFRJbnRl
cm1UeXBlZCAqbGVmdCwKIHsKICAgICAvLyBXZWJHTDIgc2VjdGlvbiA1LjI2LCB0aGUgZm9sbG93
aW5nIHJlc3VsdHMgaW4gYW4gZXJyb3I6CiAgICAgLy8gIlNlcXVlbmNlIG9wZXJhdG9yIGFwcGxp
ZWQgdG8gdm9pZCwgYXJyYXlzLCBvciBzdHJ1Y3RzIGNvbnRhaW5pbmcgYXJyYXlzIgotICAgIGlm
IChtU2hhZGVyU3BlYyA9PSBTSF9XRUJHTDJfU1BFQyAmJiAobGVmdC0+aXNBcnJheSgpIHx8IGxl
ZnQtPmdldEJhc2ljVHlwZSgpID09IEVidFZvaWQgfHwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxlZnQtPmdldFR5cGUoKS5pc1N0cnVjdHVyZUNvbnRhaW5pbmdB
cnJheXMoKSB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmln
aHQtPmlzQXJyYXkoKSB8fCByaWdodC0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0Vm9pZCB8fAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQtPmdldFR5cGUoKS5p
c1N0cnVjdHVyZUNvbnRhaW5pbmdBcnJheXMoKSkpCisgICAgaWYgKG1TaGFkZXJTcGVjID09IFNI
X1dFQkdMMl9TUEVDICYmCisgICAgICAgIChsZWZ0LT5pc0FycmF5KCkgfHwgbGVmdC0+Z2V0QmFz
aWNUeXBlKCkgPT0gRWJ0Vm9pZCB8fAorICAgICAgICAgbGVmdC0+Z2V0VHlwZSgpLmlzU3RydWN0
dXJlQ29udGFpbmluZ0FycmF5cygpIHx8IHJpZ2h0LT5pc0FycmF5KCkgfHwKKyAgICAgICAgIHJp
Z2h0LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkIHx8IHJpZ2h0LT5nZXRUeXBlKCkuaXNTdHJ1
Y3R1cmVDb250YWluaW5nQXJyYXlzKCkpKQogICAgIHsKICAgICAgICAgZXJyb3IobG9jLAogICAg
ICAgICAgICAgICAic2VxdWVuY2Ugb3BlcmF0b3IgaXMgbm90IGFsbG93ZWQgZm9yIHZvaWQsIGFy
cmF5cywgb3Igc3RydWN0cyBjb250YWluaW5nIGFycmF5cyIsCkBAIC0zNjg5LDIwICs0MjcxLDE3
IEBAIFRJbnRlcm1CcmFuY2ggKlRQYXJzZUNvbnRleHQ6OmFkZEJyYW5jaChUT3BlcmF0b3Igb3As
CiAKIHZvaWQgVFBhcnNlQ29udGV4dDo6Y2hlY2tUZXh0dXJlT2Zmc2V0Q29uc3QoVEludGVybUFn
Z3JlZ2F0ZSAqZnVuY3Rpb25DYWxsKQogewotICAgIEFTU0VSVCghZnVuY3Rpb25DYWxsLT5pc1Vz
ZXJEZWZpbmVkKCkpOworICAgIEFTU0VSVChmdW5jdGlvbkNhbGwtPmdldE9wKCkgPT0gRU9wQ2Fs
bEJ1aWx0SW5GdW5jdGlvbik7CiAgICAgY29uc3QgVFN0cmluZyAmbmFtZSAgICAgICAgPSBmdW5j
dGlvbkNhbGwtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lKCk7CiAgICAgVEludGVy
bU5vZGUgKm9mZnNldCAgICAgICAgPSBudWxscHRyOwogICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJn
dW1lbnRzID0gZnVuY3Rpb25DYWxsLT5nZXRTZXF1ZW5jZSgpOwotICAgIGlmIChuYW1lLmNvbXBh
cmUoMCwgMTYsICJ0ZXhlbEZldGNoT2Zmc2V0IikgPT0gMCB8fAotICAgICAgICBuYW1lLmNvbXBh
cmUoMCwgMTYsICJ0ZXh0dXJlTG9kT2Zmc2V0IikgPT0gMCB8fAotICAgICAgICBuYW1lLmNvbXBh
cmUoMCwgMjAsICJ0ZXh0dXJlUHJvakxvZE9mZnNldCIpID09IDAgfHwKLSAgICAgICAgbmFtZS5j
b21wYXJlKDAsIDE3LCAidGV4dHVyZUdyYWRPZmZzZXQiKSA9PSAwIHx8Ci0gICAgICAgIG5hbWUu
Y29tcGFyZSgwLCAyMSwgInRleHR1cmVQcm9qR3JhZE9mZnNldCIpID09IDApCisgICAgaWYgKG5h
bWUgPT0gInRleGVsRmV0Y2hPZmZzZXQiIHx8IG5hbWUgPT0gInRleHR1cmVMb2RPZmZzZXQiIHx8
CisgICAgICAgIG5hbWUgPT0gInRleHR1cmVQcm9qTG9kT2Zmc2V0IiB8fCBuYW1lID09ICJ0ZXh0
dXJlR3JhZE9mZnNldCIgfHwKKyAgICAgICAgbmFtZSA9PSAidGV4dHVyZVByb2pHcmFkT2Zmc2V0
IikKICAgICB7CiAgICAgICAgIG9mZnNldCA9IGFyZ3VtZW50cy0+YmFjaygpOwogICAgIH0KLSAg
ICBlbHNlIGlmIChuYW1lLmNvbXBhcmUoMCwgMTMsICJ0ZXh0dXJlT2Zmc2V0IikgPT0gMCB8fAot
ICAgICAgICAgICAgIG5hbWUuY29tcGFyZSgwLCAxNywgInRleHR1cmVQcm9qT2Zmc2V0IikgPT0g
MCkKKyAgICBlbHNlIGlmIChuYW1lID09ICJ0ZXh0dXJlT2Zmc2V0IiB8fCBuYW1lID09ICJ0ZXh0
dXJlUHJvak9mZnNldCIpCiAgICAgewogICAgICAgICAvLyBBIGJpYXMgcGFyYW1ldGVyIG1pZ2h0
IGZvbGxvdyB0aGUgb2Zmc2V0IHBhcmFtZXRlci4KICAgICAgICAgQVNTRVJUKGFyZ3VtZW50cy0+
c2l6ZSgpID49IDMpOwpAQCAtMzcxMyw5ICs0MjkyLDggQEAgdm9pZCBUUGFyc2VDb250ZXh0Ojpj
aGVja1RleHR1cmVPZmZzZXRDb25zdChUSW50ZXJtQWdncmVnYXRlICpmdW5jdGlvbkNhbGwpCiAg
ICAgICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpvZmZzZXRDb25zdGFudFVuaW9uID0gb2Zmc2V0
LT5nZXRBc0NvbnN0YW50VW5pb24oKTsKICAgICAgICAgaWYgKG9mZnNldC0+Z2V0QXNUeXBlZCgp
LT5nZXRRdWFsaWZpZXIoKSAhPSBFdnFDb25zdCB8fCAhb2Zmc2V0Q29uc3RhbnRVbmlvbikKICAg
ICAgICAgewotICAgICAgICAgICAgVFN0cmluZyB1bm1hbmdsZWROYW1lID0gVEZ1bmN0aW9uOjp1
bm1hbmdsZU5hbWUobmFtZSk7CiAgICAgICAgICAgICBlcnJvcihmdW5jdGlvbkNhbGwtPmdldExp
bmUoKSwgIlRleHR1cmUgb2Zmc2V0IG11c3QgYmUgYSBjb25zdGFudCBleHByZXNzaW9uIiwKLSAg
ICAgICAgICAgICAgICAgIHVubWFuZ2xlZE5hbWUuY19zdHIoKSk7CisgICAgICAgICAgICAgICAg
ICBuYW1lLmNfc3RyKCkpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewpAQCAt
MzczOCw3MCArNDMxNiwxOTUgQEAgdm9pZCBUUGFyc2VDb250ZXh0OjpjaGVja1RleHR1cmVPZmZz
ZXRDb25zdChUSW50ZXJtQWdncmVnYXRlICpmdW5jdGlvbkNhbGwpCiAgICAgfQogfQogCi1USW50
ZXJtVHlwZWQgKlRQYXJzZUNvbnRleHQ6OmFkZEZ1bmN0aW9uQ2FsbE9yTWV0aG9kKFRGdW5jdGlv
biAqZm5DYWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUSW50ZXJtTm9kZSAqcGFyYW1Ob2RlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqdGhpc05vZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
b3VyY2VMb2MgJmxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCAqZmF0YWxFcnJvcikKKy8vIEdMU0wgRVMgMy4xMCBSZXZpc2lvbiA0
LCA0LjkgTWVtb3J5IEFjY2VzcyBRdWFsaWZpZXJzCit2b2lkIFRQYXJzZUNvbnRleHQ6OmNoZWNr
SW1hZ2VNZW1vcnlBY2Nlc3NGb3JCdWlsdGluRnVuY3Rpb25zKFRJbnRlcm1BZ2dyZWdhdGUgKmZ1
bmN0aW9uQ2FsbCkKIHsKLSAgICAqZmF0YWxFcnJvciAgICAgICAgICAgID0gZmFsc2U7Ci0gICAg
VE9wZXJhdG9yIG9wICAgICAgICAgICA9IGZuQ2FsbC0+Z2V0QnVpbHRJbk9wKCk7Ci0gICAgVElu
dGVybVR5cGVkICpjYWxsTm9kZSA9IG51bGxwdHI7CisgICAgQVNTRVJUKGZ1bmN0aW9uQ2FsbC0+
Z2V0T3AoKSA9PSBFT3BDYWxsQnVpbHRJbkZ1bmN0aW9uKTsKKyAgICBjb25zdCBUU3RyaW5nICZu
YW1lID0gZnVuY3Rpb25DYWxsLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZSgpOwog
Ci0gICAgaWYgKHRoaXNOb2RlICE9IG51bGxwdHIpCisgICAgaWYgKG5hbWUuY29tcGFyZSgwLCA1
LCAiaW1hZ2UiKSA9PSAwKQogICAgIHsKLSAgICAgICAgVENvbnN0YW50VW5pb24gKnVuaW9uQXJy
YXkgPSBuZXcgVENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgIGludCBhcnJheVNpemUgICAgICAg
ICAgICAgID0gMDsKLSAgICAgICAgVEludGVybVR5cGVkICp0eXBlZFRoaXMgPSB0aGlzTm9kZS0+
Z2V0QXNUeXBlZCgpOwotICAgICAgICBpZiAoZm5DYWxsLT5nZXROYW1lKCkgIT0gImxlbmd0aCIp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGVycm9yKGxvYywgImludmFsaWQgbWV0aG9kIiwgZm5D
YWxsLT5nZXROYW1lKCkuY19zdHIoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAocGFy
YW1Ob2RlICE9IG51bGxwdHIpCisgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzID0g
ZnVuY3Rpb25DYWxsLT5nZXRTZXF1ZW5jZSgpOworICAgICAgICBUSW50ZXJtVHlwZWQgKmltYWdl
Tm9kZSAgICA9ICgqYXJndW1lbnRzKVswXS0+Z2V0QXNUeXBlZCgpOworCisgICAgICAgIGNvbnN0
IFRNZW1vcnlRdWFsaWZpZXIgJm1lbW9yeVF1YWxpZmllciA9IGltYWdlTm9kZS0+Z2V0TWVtb3J5
UXVhbGlmaWVyKCk7CisKKyAgICAgICAgaWYgKG5hbWUuY29tcGFyZSg1LCA1LCAiU3RvcmUiKSA9
PSAwKQogICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvcihsb2MsICJtZXRob2QgdGFrZXMgbm8g
cGFyYW1ldGVycyIsICJsZW5ndGgiKTsKKyAgICAgICAgICAgIGlmIChtZW1vcnlRdWFsaWZpZXIu
cmVhZG9ubHkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXJyb3IoaW1hZ2VOb2Rl
LT5nZXRMaW5lKCksCisgICAgICAgICAgICAgICAgICAgICAgIidpbWFnZVN0b3JlJyBjYW5ub3Qg
YmUgdXNlZCB3aXRoIGltYWdlcyBxdWFsaWZpZWQgYXMgJ3JlYWRvbmx5JyIsCisgICAgICAgICAg
ICAgICAgICAgICAgR2V0SW1hZ2VBcmd1bWVudFRva2VuKGltYWdlTm9kZSkpOworICAgICAgICAg
ICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHR5cGVkVGhpcyA9PSBudWxscHRyIHx8
ICF0eXBlZFRoaXMtPmlzQXJyYXkoKSkKKyAgICAgICAgZWxzZSBpZiAobmFtZS5jb21wYXJlKDUs
IDQsICJMb2FkIikgPT0gMCkKICAgICAgICAgewotICAgICAgICAgICAgZXJyb3IobG9jLCAibGVu
Z3RoIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhcnJheXMiLCAibGVuZ3RoIik7CisgICAgICAgICAg
ICBpZiAobWVtb3J5UXVhbGlmaWVyLndyaXRlb25seSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBlcnJvcihpbWFnZU5vZGUtPmdldExpbmUoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAiJ2ltYWdlTG9hZCcgY2Fubm90IGJlIHVzZWQgd2l0aCBpbWFnZXMgcXVhbGlmaWVkIGFzICd3
cml0ZW9ubHknIiwKKyAgICAgICAgICAgICAgICAgICAgICBHZXRJbWFnZUFyZ3VtZW50VG9rZW4o
aW1hZ2VOb2RlKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZQorICAg
IH0KK30KKworLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDEzLjUxIE1hdGNoaW5nIG9mIE1l
bW9yeSBRdWFsaWZpZXJzIGluIEZ1bmN0aW9uIFBhcmFtZXRlcnMKK3ZvaWQgVFBhcnNlQ29udGV4
dDo6Y2hlY2tJbWFnZU1lbW9yeUFjY2Vzc0ZvclVzZXJEZWZpbmVkRnVuY3Rpb25zKAorICAgIGNv
bnN0IFRGdW5jdGlvbiAqZnVuY3Rpb25EZWZpbml0aW9uLAorICAgIGNvbnN0IFRJbnRlcm1BZ2dy
ZWdhdGUgKmZ1bmN0aW9uQ2FsbCkKK3sKKyAgICBBU1NFUlQoZnVuY3Rpb25DYWxsLT5nZXRPcCgp
ID09IEVPcENhbGxGdW5jdGlvbkluQVNUKTsKKworICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAm
YXJndW1lbnRzID0gKmZ1bmN0aW9uQ2FsbC0+Z2V0U2VxdWVuY2UoKTsKKworICAgIEFTU0VSVChm
dW5jdGlvbkRlZmluaXRpb24tPmdldFBhcmFtQ291bnQoKSA9PSBhcmd1bWVudHMuc2l6ZSgpKTsK
KworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKQorICAg
IHsKKyAgICAgICAgVEludGVybVR5cGVkICp0eXBlZEFyZ3VtZW50ICAgICAgICA9IGFyZ3VtZW50
c1tpXS0+Z2V0QXNUeXBlZCgpOworICAgICAgICBjb25zdCBUVHlwZSAmZnVuY3Rpb25Bcmd1bWVu
dFR5cGUgID0gdHlwZWRBcmd1bWVudC0+Z2V0VHlwZSgpOworICAgICAgICBjb25zdCBUVHlwZSAm
ZnVuY3Rpb25QYXJhbWV0ZXJUeXBlID0gKmZ1bmN0aW9uRGVmaW5pdGlvbi0+Z2V0UGFyYW0oaSku
dHlwZTsKKyAgICAgICAgQVNTRVJUKGZ1bmN0aW9uQXJndW1lbnRUeXBlLmdldEJhc2ljVHlwZSgp
ID09IGZ1bmN0aW9uUGFyYW1ldGVyVHlwZS5nZXRCYXNpY1R5cGUoKSk7CisKKyAgICAgICAgaWYg
KElzSW1hZ2UoZnVuY3Rpb25Bcmd1bWVudFR5cGUuZ2V0QmFzaWNUeXBlKCkpKQogICAgICAgICB7
Ci0gICAgICAgICAgICBhcnJheVNpemUgPSB0eXBlZFRoaXMtPmdldEFycmF5U2l6ZSgpOwotICAg
ICAgICAgICAgaWYgKHR5cGVkVGhpcy0+Z2V0QXNTeW1ib2xOb2RlKCkgPT0gbnVsbHB0cikKKyAg
ICAgICAgICAgIGNvbnN0IFRNZW1vcnlRdWFsaWZpZXIgJmZ1bmN0aW9uQXJndW1lbnRNZW1vcnlR
dWFsaWZpZXIgPQorICAgICAgICAgICAgICAgIGZ1bmN0aW9uQXJndW1lbnRUeXBlLmdldE1lbW9y
eVF1YWxpZmllcigpOworICAgICAgICAgICAgY29uc3QgVE1lbW9yeVF1YWxpZmllciAmZnVuY3Rp
b25QYXJhbWV0ZXJNZW1vcnlRdWFsaWZpZXIgPQorICAgICAgICAgICAgICAgIGZ1bmN0aW9uUGFy
YW1ldGVyVHlwZS5nZXRNZW1vcnlRdWFsaWZpZXIoKTsKKyAgICAgICAgICAgIGlmIChmdW5jdGlv
bkFyZ3VtZW50TWVtb3J5UXVhbGlmaWVyLnJlYWRvbmx5ICYmCisgICAgICAgICAgICAgICAgIWZ1
bmN0aW9uUGFyYW1ldGVyTWVtb3J5UXVhbGlmaWVyLnJlYWRvbmx5KQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGVycm9yKGZ1bmN0aW9uQ2FsbC0+Z2V0TGluZSgpLAorICAgICAgICAg
ICAgICAgICAgICAgICJGdW5jdGlvbiBjYWxsIGRpc2NhcmRzIHRoZSAncmVhZG9ubHknIHF1YWxp
ZmllciBmcm9tIGltYWdlIiwKKyAgICAgICAgICAgICAgICAgICAgICBHZXRJbWFnZUFyZ3VtZW50
VG9rZW4odHlwZWRBcmd1bWVudCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAo
ZnVuY3Rpb25Bcmd1bWVudE1lbW9yeVF1YWxpZmllci53cml0ZW9ubHkgJiYKKyAgICAgICAgICAg
ICAgICAhZnVuY3Rpb25QYXJhbWV0ZXJNZW1vcnlRdWFsaWZpZXIud3JpdGVvbmx5KQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGVycm9yKGZ1bmN0aW9uQ2FsbC0+Z2V0TGluZSgpLAor
ICAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiBjYWxsIGRpc2NhcmRzIHRoZSAnd3JpdGVv
bmx5JyBxdWFsaWZpZXIgZnJvbSBpbWFnZSIsCisgICAgICAgICAgICAgICAgICAgICAgR2V0SW1h
Z2VBcmd1bWVudFRva2VuKHR5cGVkQXJndW1lbnQpKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgaWYgKGZ1bmN0aW9uQXJndW1lbnRNZW1vcnlRdWFsaWZpZXIuY29oZXJlbnQgJiYKKyAg
ICAgICAgICAgICAgICAhZnVuY3Rpb25QYXJhbWV0ZXJNZW1vcnlRdWFsaWZpZXIuY29oZXJlbnQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXJyb3IoZnVuY3Rpb25DYWxsLT5nZXRM
aW5lKCksCisgICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIGNhbGwgZGlzY2FyZHMgdGhl
ICdjb2hlcmVudCcgcXVhbGlmaWVyIGZyb20gaW1hZ2UiLAorICAgICAgICAgICAgICAgICAgICAg
IEdldEltYWdlQXJndW1lbnRUb2tlbih0eXBlZEFyZ3VtZW50KSk7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmIChmdW5jdGlvbkFyZ3VtZW50TWVtb3J5UXVhbGlmaWVyLnZvbGF0aWxl
UXVhbGlmaWVyICYmCisgICAgICAgICAgICAgICAgIWZ1bmN0aW9uUGFyYW1ldGVyTWVtb3J5UXVh
bGlmaWVyLnZvbGF0aWxlUXVhbGlmaWVyKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IC8vIFRoaXMgY29kZSBwYXRoIGNhbiBiZSBoaXQgd2l0aCBleHByZXNzaW9ucyBsaWtlIHRoZXNl
OgotICAgICAgICAgICAgICAgIC8vIChhID0gYikubGVuZ3RoKCkKLSAgICAgICAgICAgICAgICAv
LyAoZnVuYygpKS5sZW5ndGgoKQotICAgICAgICAgICAgICAgIC8vIChpbnRbM10oMCwgMSwgMikp
Lmxlbmd0aCgpCi0gICAgICAgICAgICAgICAgLy8gRVNTTCAzLjAwIHNlY3Rpb24gNS45IGRlZmlu
ZXMgZXhwcmVzc2lvbnMgc28gdGhhdCB0aGlzIGlzIG5vdCBhY3R1YWxseSBhIHZhbGlkCi0gICAg
ICAgICAgICAgICAgLy8gZXhwcmVzc2lvbi4KLSAgICAgICAgICAgICAgICAvLyBJdCBhbGxvd3Mg
IkFuIGFycmF5IG5hbWUgd2l0aCB0aGUgbGVuZ3RoIG1ldGhvZCBhcHBsaWVkIiBpbiBjb250cmFz
dCB0byBHTFNMIDQuNAotICAgICAgICAgICAgICAgIC8vIHNwZWMgc2VjdGlvbiA1Ljkgd2hpY2gg
YWxsb3dzICJBbiBhcnJheSwgdmVjdG9yIG9yIG1hdHJpeCBleHByZXNzaW9uIHdpdGggdGhlCi0g
ICAgICAgICAgICAgICAgLy8gbGVuZ3RoIG1ldGhvZCBhcHBsaWVkIi4KLSAgICAgICAgICAgICAg
ICBlcnJvcihsb2MsICJsZW5ndGggY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGFycmF5IG5hbWVzLCBu
b3Qgb24gYXJyYXkgZXhwcmVzc2lvbnMiLAotICAgICAgICAgICAgICAgICAgICAgICJsZW5ndGgi
KTsKKyAgICAgICAgICAgICAgICBlcnJvcihmdW5jdGlvbkNhbGwtPmdldExpbmUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAiRnVuY3Rpb24gY2FsbCBkaXNjYXJkcyB0aGUgJ3ZvbGF0aWxlJyBx
dWFsaWZpZXIgZnJvbSBpbWFnZSIsCisgICAgICAgICAgICAgICAgICAgICAgR2V0SW1hZ2VBcmd1
bWVudFRva2VuKHR5cGVkQXJndW1lbnQpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
ICAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoYXJyYXlTaXplKTsKLSAgICAgICAgY2FsbE5vZGUg
PQotICAgICAgICAgICAgaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwg
VFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgbG9jKTsKICAgICB9Ci0gICAg
ZWxzZSBpZiAob3AgIT0gRU9wTnVsbCkKK30KKworVEludGVybVNlcXVlbmNlICpUUGFyc2VDb250
ZXh0OjpjcmVhdGVFbXB0eUFyZ3VtZW50c0xpc3QoKQoreworICAgIHJldHVybiBuZXcgVEludGVy
bVNlcXVlbmNlKCk7Cit9CisKK1RJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4dDo6YWRkRnVuY3Rp
b25DYWxsT3JNZXRob2QoVEZ1bmN0aW9uICpmbkNhbGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
SW50ZXJtTm9kZSAqdGhpc05vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvYykKK3sKKyAgICBpZiAodGhp
c05vZGUgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBhZGRNZXRob2QoZm5DYWxs
LCBhcmd1bWVudHMsIHRoaXNOb2RlLCBsb2MpOworICAgIH0KKworICAgIFRPcGVyYXRvciBvcCA9
IGZuQ2FsbC0+Z2V0QnVpbHRJbk9wKCk7CisgICAgaWYgKG9wICE9IEVPcE51bGwpCiAgICAgewot
ICAgICAgICAvLyBUaGVuIHRoaXMgc2hvdWxkIGJlIGEgY29uc3RydWN0b3IuCi0gICAgICAgIGNh
bGxOb2RlID0gYWRkQ29uc3RydWN0b3IocGFyYW1Ob2RlLCBvcCwgZm5DYWxsLCBsb2MpOworICAg
ICAgICByZXR1cm4gYWRkQ29uc3RydWN0b3IoYXJndW1lbnRzLCBvcCwgZm5DYWxsLT5nZXRSZXR1
cm5UeXBlKCksIGxvYyk7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIC8vCi0gICAg
ICAgIC8vIE5vdCBhIGNvbnN0cnVjdG9yLiAgRmluZCBpdCBpbiB0aGUgc3ltYm9sIHRhYmxlLgot
ICAgICAgICAvLwotICAgICAgICBjb25zdCBURnVuY3Rpb24gKmZuQ2FuZGlkYXRlOwotICAgICAg
ICBib29sIGJ1aWx0SW47Ci0gICAgICAgIGZuQ2FuZGlkYXRlID0gZmluZEZ1bmN0aW9uKGxvYywg
Zm5DYWxsLCBtU2hhZGVyVmVyc2lvbiwgJmJ1aWx0SW4pOwotICAgICAgICBpZiAoZm5DYW5kaWRh
dGUpCisgICAgICAgIHJldHVybiBhZGROb25Db25zdHJ1Y3RvckZ1bmN0aW9uQ2FsbChmbkNhbGws
IGFyZ3VtZW50cywgbG9jKTsKKyAgICB9Cit9CisKK1RJbnRlcm1UeXBlZCAqVFBhcnNlQ29udGV4
dDo6YWRkTWV0aG9kKFRGdW5jdGlvbiAqZm5DYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEludGVybVNlcXVlbmNlICphcmd1bWVudHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqdGhpc05vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2MpCit7
CisgICAgVENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bMV07
CisgICAgaW50IGFycmF5U2l6ZSAgICAgICAgICAgICAgPSAwOworICAgIFRJbnRlcm1UeXBlZCAq
dHlwZWRUaGlzICAgID0gdGhpc05vZGUtPmdldEFzVHlwZWQoKTsKKyAgICAvLyBJdCdzIHBvc3Np
YmxlIGZvciB0aGUgbmFtZSBwb2ludGVyIGluIHRoZSBURnVuY3Rpb24gdG8gYmUgbnVsbCBpbiBj
YXNlIGl0IGdldHMgcGFyc2VkIGFzCisgICAgLy8gYSBjb25zdHJ1Y3Rvci4gQnV0IHN1Y2ggYSBU
RnVuY3Rpb24gY2FuJ3QgcmVhY2ggaGVyZSwgc2luY2UgdGhlIGxleGVyIGdvZXMgaW50byBGSUVM
RFMKKyAgICAvLyBtb2RlIGFmdGVyIGEgZG90LCB3aGljaCBtYWtlcyB0eXBlIGlkZW50aWZpZXJz
IHRvIGJlIHBhcnNlZCBhcyBGSUVMRF9TRUxFQ1RJT04gaW5zdGVhZC4KKyAgICAvLyBTbyBhY2Nl
c3NpbmcgZm5DYWxsLT5nZXROYW1lKCkgYmVsb3cgaXMgc2FmZS4KKyAgICBpZiAoZm5DYWxsLT5n
ZXROYW1lKCkgIT0gImxlbmd0aCIpCisgICAgeworICAgICAgICBlcnJvcihsb2MsICJpbnZhbGlk
IG1ldGhvZCIsIGZuQ2FsbC0+Z2V0TmFtZSgpLmNfc3RyKCkpOworICAgIH0KKyAgICBlbHNlIGlm
ICghYXJndW1lbnRzLT5lbXB0eSgpKQorICAgIHsKKyAgICAgICAgZXJyb3IobG9jLCAibWV0aG9k
IHRha2VzIG5vIHBhcmFtZXRlcnMiLCAibGVuZ3RoIik7CisgICAgfQorICAgIGVsc2UgaWYgKHR5
cGVkVGhpcyA9PSBudWxscHRyIHx8ICF0eXBlZFRoaXMtPmlzQXJyYXkoKSkKKyAgICB7CisgICAg
ICAgIGVycm9yKGxvYywgImxlbmd0aCBjYW4gb25seSBiZSBjYWxsZWQgb24gYXJyYXlzIiwgImxl
bmd0aCIpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBhcnJheVNpemUgPSB0eXBl
ZFRoaXMtPmdldEFycmF5U2l6ZSgpOworICAgICAgICBpZiAodHlwZWRUaGlzLT5nZXRBc1N5bWJv
bE5vZGUoKSA9PSBudWxscHRyKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGlzIGNvZGUg
cGF0aCBjYW4gYmUgaGl0IHdpdGggZXhwcmVzc2lvbnMgbGlrZSB0aGVzZToKKyAgICAgICAgICAg
IC8vIChhID0gYikubGVuZ3RoKCkKKyAgICAgICAgICAgIC8vIChmdW5jKCkpLmxlbmd0aCgpCisg
ICAgICAgICAgICAvLyAoaW50WzNdKDAsIDEsIDIpKS5sZW5ndGgoKQorICAgICAgICAgICAgLy8g
RVNTTCAzLjAwIHNlY3Rpb24gNS45IGRlZmluZXMgZXhwcmVzc2lvbnMgc28gdGhhdCB0aGlzIGlz
IG5vdCBhY3R1YWxseSBhIHZhbGlkCisgICAgICAgICAgICAvLyBleHByZXNzaW9uLgorICAgICAg
ICAgICAgLy8gSXQgYWxsb3dzICJBbiBhcnJheSBuYW1lIHdpdGggdGhlIGxlbmd0aCBtZXRob2Qg
YXBwbGllZCIgaW4gY29udHJhc3QgdG8gR0xTTCA0LjQKKyAgICAgICAgICAgIC8vIHNwZWMgc2Vj
dGlvbiA1Ljkgd2hpY2ggYWxsb3dzICJBbiBhcnJheSwgdmVjdG9yIG9yIG1hdHJpeCBleHByZXNz
aW9uIHdpdGggdGhlCisgICAgICAgICAgICAvLyBsZW5ndGggbWV0aG9kIGFwcGxpZWQiLgorICAg
ICAgICAgICAgZXJyb3IobG9jLCAibGVuZ3RoIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhcnJheSBu
YW1lcywgbm90IG9uIGFycmF5IGV4cHJlc3Npb25zIiwKKyAgICAgICAgICAgICAgICAgICJsZW5n
dGgiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICB1bmlvbkFycmF5LT5zZXRJQ29uc3QoYXJyYXlT
aXplKTsKKyAgICByZXR1cm4gaW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJh
eSwgVFR5cGUoRWJ0SW50LCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0KSwgbG9jKTsKK30KKworVElu
dGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGROb25Db25zdHJ1Y3RvckZ1bmN0aW9uQ2FsbChU
RnVuY3Rpb24gKmZuQ2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVEludGVybVNlcXVlbmNlICphcmd1bWVudHMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRTb3VyY2VMb2MgJmxvYykKK3sKKyAgICAvLyBGaXJzdCBmaW5kIGJ5IHVubWFuZ2xlZCBuYW1l
IHRvIGNoZWNrIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIG5hbWUgaGFzIGJlZW4KKyAgICAvLyBoaWRk
ZW4gYnkgYSB2YXJpYWJsZSBuYW1lIG9yIHN0cnVjdCB0eXBlbmFtZS4KKyAgICAvLyBJZiBhIGZ1
bmN0aW9uIGlzIGZvdW5kLCBjaGVjayBmb3Igb25lIHdpdGggYSBtYXRjaGluZyBhcmd1bWVudCBs
aXN0LgorICAgIGJvb2wgYnVpbHRJbjsKKyAgICBjb25zdCBUU3ltYm9sICpzeW1ib2wgPSBzeW1i
b2xUYWJsZS5maW5kKGZuQ2FsbC0+Z2V0TmFtZSgpLCBtU2hhZGVyVmVyc2lvbiwgJmJ1aWx0SW4p
OworICAgIGlmIChzeW1ib2wgIT0gbnVsbHB0ciAmJiAhc3ltYm9sLT5pc0Z1bmN0aW9uKCkpCisg
ICAgeworICAgICAgICBlcnJvcihsb2MsICJmdW5jdGlvbiBuYW1lIGV4cGVjdGVkIiwgZm5DYWxs
LT5nZXROYW1lKCkuY19zdHIoKSk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHN5
bWJvbCA9IHN5bWJvbFRhYmxlLmZpbmQoVEZ1bmN0aW9uOjpHZXRNYW5nbGVkTmFtZUZyb21DYWxs
KGZuQ2FsbC0+Z2V0TmFtZSgpLCAqYXJndW1lbnRzKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtU2hhZGVyVmVyc2lvbiwgJmJ1aWx0SW4pOworICAgICAgICBpZiAoc3ltYm9s
ID09IG51bGxwdHIpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yKGxvYywgIm5vIG1hdGNo
aW5nIG92ZXJsb2FkZWQgZnVuY3Rpb24gZm91bmQiLCBmbkNhbGwtPmdldE5hbWUoKS5jX3N0cigp
KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0
IFRGdW5jdGlvbiAqZm5DYW5kaWRhdGUgPSBzdGF0aWNfY2FzdDxjb25zdCBURnVuY3Rpb24gKj4o
c3ltYm9sKTsKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBBIGRlY2xhcmVkIGZ1bmN0
aW9uLgogICAgICAgICAgICAgLy8KQEAgLTM4MDksMTAyICs0NTEyLDcwIEBAIFRJbnRlcm1UeXBl
ZCAqVFBhcnNlQ29udGV4dDo6YWRkRnVuY3Rpb25DYWxsT3JNZXRob2QoVEZ1bmN0aW9uICpmbkNh
bGwsCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgY2hlY2tDYW5Vc2VFeHRlbnNpb24o
bG9jLCBmbkNhbmRpZGF0ZS0+Z2V0RXh0ZW5zaW9uKCkpOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgb3AgPSBmbkNhbmRpZGF0ZS0+Z2V0QnVpbHRJbk9wKCk7CisgICAgICAgICAgICBUT3Bl
cmF0b3Igb3AgPSBmbkNhbmRpZGF0ZS0+Z2V0QnVpbHRJbk9wKCk7CiAgICAgICAgICAgICBpZiAo
YnVpbHRJbiAmJiBvcCAhPSBFT3BOdWxsKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IC8vCiAgICAgICAgICAgICAgICAgLy8gQSBmdW5jdGlvbiBjYWxsIG1hcHBlZCB0byBhIGJ1aWx0
LWluIG9wZXJhdGlvbi4KLSAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgIGlmIChm
bkNhbmRpZGF0ZS0+Z2V0UGFyYW1Db3VudCgpID09IDEpCiAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAgICAgICAvLyBUcmVhdCBpdCBsaWtl
IGEgYnVpbHQtaW4gdW5hcnkgb3BlcmF0b3IuCi0gICAgICAgICAgICAgICAgICAgIC8vCi0gICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcmFtQWdnID0gcGFyYW1Ob2RlLT5n
ZXRBc0FnZ3JlZ2F0ZSgpOwotICAgICAgICAgICAgICAgICAgICBwYXJhbU5vZGUgICAgICAgICAg
ICAgICAgICA9IHBhcmFtQWdnLT5nZXRTZXF1ZW5jZSgpLT5mcm9udCgpOwotICAgICAgICAgICAg
ICAgICAgICBjYWxsTm9kZSA9IGNyZWF0ZVVuYXJ5TWF0aChvcCwgcGFyYW1Ob2RlLT5nZXRBc1R5
cGVkKCksIGxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmZuQ2FuZGlkYXRlLT5nZXRSZXR1cm5UeXBlKCkpOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoY2FsbE5vZGUgPT0gbnVsbHB0cikKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXh0cmFJbmZvU3RyZWFtOwotICAgICAg
ICAgICAgICAgICAgICAgICAgZXh0cmFJbmZvU3RyZWFtCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgPDwgImJ1aWx0IGluIHVuYXJ5IG9wZXJhdG9yIGZ1bmN0aW9uLiAgVHlwZTogIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0PFRJbnRlcm1UeXBlZCAqPihw
YXJhbU5vZGUpLT5nZXRDb21wbGV0ZVN0cmluZygpOwotICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjpzdHJpbmcgZXh0cmFJbmZvID0gZXh0cmFJbmZvU3RyZWFtLnN0cigpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgZXJyb3IocGFyYW1Ob2RlLT5nZXRMaW5lKCksICIgd3Jvbmcgb3BlcmFu
ZCB0eXBlIiwgIkludGVybmFsIEVycm9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4dHJhSW5mby5jX3N0cigpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICpmYXRhbEVycm9y
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1Ob2RlICp1bmFyeVBh
cmFtTm9kZSA9IGFyZ3VtZW50cy0+ZnJvbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgVEludGVy
bVR5cGVkICpjYWxsTm9kZSA9IGNyZWF0ZVVuYXJ5TWF0aChvcCwgdW5hcnlQYXJhbU5vZGUtPmdl
dEFzVHlwZWQoKSwgbG9jKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNhbGxOb2RlICE9
IG51bGxwdHIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbE5vZGU7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSA9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpbnRlcm1lZGlhdGUuc2V0QWdncmVnYXRlT3BlcmF0b3IocGFyYW1Ob2Rl
LCBvcCwgbG9jKTsKLSAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRlLT5zZXRUeXBlKGZuQ2Fu
ZGlkYXRlLT5nZXRSZXR1cm5UeXBlKCkpOwotICAgICAgICAgICAgICAgICAgICBhZ2dyZWdhdGUt
PnNldFByZWNpc2lvbkZyb21DaGlsZHJlbigpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYWdn
cmVnYXRlLT5hcmVDaGlsZHJlbkNvbnN0UXVhbGlmaWVkKCkpCi0gICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFnZ3JlZ2F0ZS0+Z2V0VHlwZVBvaW50ZXIoKS0+
c2V0UXVhbGlmaWVyKEV2cUNvbnN0KTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpjYWxsTm9kZSA9CisgICAgICAgICAgICAgICAg
ICAgICAgICBUSW50ZXJtQWdncmVnYXRlOjpDcmVhdGUoZm5DYW5kaWRhdGUtPmdldFJldHVyblR5
cGUoKSwgb3AsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgICAgIGNhbGxOb2RlLT5zZXRM
aW5lKGxvYyk7CiAKICAgICAgICAgICAgICAgICAgICAgLy8gU29tZSBidWlsdC1pbiBmdW5jdGlv
bnMgaGF2ZSBvdXQgcGFyYW1ldGVycyB0b28uCi0gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9u
Q2FsbExWYWx1ZUVycm9yQ2hlY2soZm5DYW5kaWRhdGUsIGFnZ3JlZ2F0ZSk7CisgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uQ2FsbExWYWx1ZUVycm9yQ2hlY2soZm5DYW5kaWRhdGUsIGNhbGxO
b2RlKTsKIAogICAgICAgICAgICAgICAgICAgICAvLyBTZWUgaWYgd2UgY2FuIGNvbnN0YW50IGZv
bGQgYSBidWlsdC1pbi4gTm90ZSB0aGF0IHRoaXMgbWF5IGJlIHBvc3NpYmxlIGV2ZW4KICAgICAg
ICAgICAgICAgICAgICAgLy8gaWYgaXQgaXMgbm90IGNvbnN0LXF1YWxpZmllZC4KICAgICAgICAg
ICAgICAgICAgICAgVEludGVybVR5cGVkICpmb2xkZWROb2RlID0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGludGVybWVkaWF0ZS5mb2xkQWdncmVnYXRlQnVpbHRJbihhZ2dyZWdhdGUsICZtRGlh
Z25vc3RpY3MpOworICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJtZWRpYXRlLmZvbGRBZ2dy
ZWdhdGVCdWlsdEluKGNhbGxOb2RlLCBtRGlhZ25vc3RpY3MpOwogICAgICAgICAgICAgICAgICAg
ICBpZiAoZm9sZGVkTm9kZSkKICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICAgY2FsbE5vZGUgPSBmb2xkZWROb2RlOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgY2FsbE5vZGUgPSBhZ2dyZWdhdGU7CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZm9sZGVkTm9kZTsKICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gY2FsbE5vZGU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8v
IFRoaXMgaXMgYSByZWFsIGZ1bmN0aW9uIGNhbGwKLSAgICAgICAgICAgICAgICBUSW50ZXJtQWdn
cmVnYXRlICphZ2dyZWdhdGUgPQotICAgICAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGUuc2V0
QWdncmVnYXRlT3BlcmF0b3IocGFyYW1Ob2RlLCBFT3BGdW5jdGlvbkNhbGwsIGxvYyk7Ci0gICAg
ICAgICAgICAgICAgYWdncmVnYXRlLT5zZXRUeXBlKGZuQ2FuZGlkYXRlLT5nZXRSZXR1cm5UeXBl
KCkpOwotCi0gICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBob3cgd2Uga25vdyB3aGV0aGVyIHRo
ZSBnaXZlbiBmdW5jdGlvbiBpcyBhIGJ1aWx0SW4gZnVuY3Rpb24gb3IgYSB1c2VyCi0gICAgICAg
ICAgICAgICAgLy8gZGVmaW5lZCBmdW5jdGlvbgotICAgICAgICAgICAgICAgIC8vIGlmIGJ1aWx0
SW4gPT0gZmFsc2UsIGl0J3MgYSB1c2VyRGVmaW5lZCAtPiBjb3VsZCBiZSBhbiBvdmVybG9hZGVk
Ci0gICAgICAgICAgICAgICAgLy8gYnVpbHRJbiBmdW5jdGlvbiBhbHNvCi0gICAgICAgICAgICAg
ICAgLy8gaWYgYnVpbHRJbiA9PSB0cnVlLCBpdCdzIGRlZmluaXRlbHkgYSBidWlsdEluIGZ1bmN0
aW9uIHdpdGggRU9wTnVsbAotICAgICAgICAgICAgICAgIGlmICghYnVpbHRJbikKLSAgICAgICAg
ICAgICAgICAgICAgYWdncmVnYXRlLT5zZXRVc2VyRGVmaW5lZCgpOwotICAgICAgICAgICAgICAg
IGFnZ3JlZ2F0ZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPnNldEZyb21GdW5jdGlvbigqZm5D
YW5kaWRhdGUpOwotCi0gICAgICAgICAgICAgICAgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYWZ0
ZXIgdGhlIGZ1bmN0aW9uIGluZm8gaW5jbHVkaW5nIG5hbWUgaXMgc2V0CisgICAgICAgICAgICAg
ICAgVEludGVybUFnZ3JlZ2F0ZSAqY2FsbE5vZGUgPSBudWxscHRyOworCisgICAgICAgICAgICAg
ICAgLy8gSWYgYnVpbHRJbiA9PSBmYWxzZSwgdGhlIGZ1bmN0aW9uIGlzIHVzZXIgZGVmaW5lZCAt
IGNvdWxkIGJlIGFuIG92ZXJsb2FkZWQKKyAgICAgICAgICAgICAgICAvLyBidWlsdC1pbiBhcyB3
ZWxsLgorICAgICAgICAgICAgICAgIC8vIGlmIGJ1aWx0SW4gPT0gdHJ1ZSwgaXQncyBhIGJ1aWx0
SW4gZnVuY3Rpb24gd2l0aCBubyBvcCBhc3NvY2lhdGVkIHdpdGggaXQuCisgICAgICAgICAgICAg
ICAgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIgdGhlIGZ1bmN0aW9uIGluZm8gaW5jbHVk
aW5nIG5hbWUgaXMgc2V0LgogICAgICAgICAgICAgICAgIGlmIChidWlsdEluKQogICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYWdncmVnYXRlLT5zZXRCdWlsdEluRnVuY3Rp
b25QcmVjaXNpb24oKTsKLQotICAgICAgICAgICAgICAgICAgICBjaGVja1RleHR1cmVPZmZzZXRD
b25zdChhZ2dyZWdhdGUpOworICAgICAgICAgICAgICAgICAgICBjYWxsTm9kZSA9IFRJbnRlcm1B
Z2dyZWdhdGU6OkNyZWF0ZUJ1aWx0SW5GdW5jdGlvbkNhbGwoKmZuQ2FuZGlkYXRlLCBhcmd1bWVu
dHMpOworICAgICAgICAgICAgICAgICAgICBjaGVja1RleHR1cmVPZmZzZXRDb25zdChjYWxsTm9k
ZSk7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrSW1hZ2VNZW1vcnlBY2Nlc3NGb3JCdWlsdGlu
RnVuY3Rpb25zKGNhbGxOb2RlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbE5vZGUgPSBU
SW50ZXJtQWdncmVnYXRlOjpDcmVhdGVGdW5jdGlvbkNhbGwoKmZuQ2FuZGlkYXRlLCBhcmd1bWVu
dHMpOworICAgICAgICAgICAgICAgICAgICBjaGVja0ltYWdlTWVtb3J5QWNjZXNzRm9yVXNlckRl
ZmluZWRGdW5jdGlvbnMoZm5DYW5kaWRhdGUsIGNhbGxOb2RlKTsKICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICBjYWxsTm9kZSA9IGFnZ3JlZ2F0ZTsKKyAgICAgICAgICAgICAg
ICBmdW5jdGlvbkNhbGxMVmFsdWVFcnJvckNoZWNrKGZuQ2FuZGlkYXRlLCBjYWxsTm9kZSk7CiAK
LSAgICAgICAgICAgICAgICBmdW5jdGlvbkNhbGxMVmFsdWVFcnJvckNoZWNrKGZuQ2FuZGlkYXRl
LCBhZ2dyZWdhdGUpOworICAgICAgICAgICAgICAgIGNhbGxOb2RlLT5zZXRMaW5lKGxvYyk7CisK
KyAgICAgICAgICAgICAgICByZXR1cm4gY2FsbE5vZGU7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBlcnJvciBtZXNzYWdl
IHdhcyBwdXQgb3V0IGJ5IGZpbmRGdW5jdGlvbigpCi0gICAgICAgICAgICAvLyBQdXQgb24gYSBk
dW1teSBub2RlIGZvciBlcnJvciByZWNvdmVyeQotICAgICAgICAgICAgVENvbnN0YW50VW5pb24g
KnVuaW9uQXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bMV07Ci0gICAgICAgICAgICB1bmlvbkFy
cmF5LT5zZXRGQ29uc3QoMC4wZik7Ci0gICAgICAgICAgICBjYWxsTm9kZSA9IGludGVybWVkaWF0
ZS5hZGRDb25zdGFudFVuaW9uKHVuaW9uQXJyYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRUeXBlKEVidEZsb2F0LCBFYnBVbmRlZmluZWQs
IEV2cUNvbnN0KSwgbG9jKTsKLSAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gY2FsbE5vZGU7
CisKKyAgICAvLyBFcnJvciBtZXNzYWdlIHdhcyBhbHJlYWR5IHdyaXR0ZW4uIFB1dCBvbiBhIGR1
bW15IG5vZGUgZm9yIGVycm9yIHJlY292ZXJ5LgorICAgIHJldHVybiBUSW50ZXJtVHlwZWQ6OkNy
ZWF0ZVplcm8oVFR5cGUoRWJ0RmxvYXQsIEVicE1lZGl1bSwgRXZxQ29uc3QpKTsKIH0KIAogVElu
dGVybVR5cGVkICpUUGFyc2VDb250ZXh0OjphZGRUZXJuYXJ5U2VsZWN0aW9uKFRJbnRlcm1UeXBl
ZCAqY29uZCwKQEAgLTM5MjAsNiArNDU5MSwxNyBAQCBUSW50ZXJtVHlwZWQgKlRQYXJzZUNvbnRl
eHQ6OmFkZFRlcm5hcnlTZWxlY3Rpb24oVEludGVybVR5cGVkICpjb25kLAogICAgICAgICAgICAg
ICAgICAgICAgIGZhbHNlRXhwcmVzc2lvbi0+Z2V0Q29tcGxldGVTdHJpbmcoKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZUV4cHJlc3Npb247CiAgICAgfQorICAgIGlmIChJc09wYXF1ZVR5cGUodHJ1
ZUV4cHJlc3Npb24tPmdldEJhc2ljVHlwZSgpKSkKKyAgICB7CisgICAgICAgIC8vIEVTU0wgMS4w
MCBzZWN0aW9uIDQuMS43CisgICAgICAgIC8vIEVTU0wgMy4wMCBzZWN0aW9uIDQuMS43CisgICAg
ICAgIC8vIE9wYXF1ZS9zYW1wbGVyIHR5cGVzIGFyZSBub3QgYWxsb3dlZCBpbiBtb3N0IHR5cGVz
IG9mIGV4cHJlc3Npb25zLCBpbmNsdWRpbmcgdGVybmFyeS4KKyAgICAgICAgLy8gTm90ZSB0aGF0
IHN0cnVjdHMgY29udGFpbmluZyBvcGFxdWUgdHlwZXMgZG9uJ3QgbmVlZCB0byBiZSBjaGVja2Vk
IGFzIHN0cnVjdHMgYXJlCisgICAgICAgIC8vIGZvcmJpZGRlbiBiZWxvdy4KKyAgICAgICAgZXJy
b3IobG9jLCAidGVybmFyeSBvcGVyYXRvciBpcyBub3QgYWxsb3dlZCBmb3Igb3BhcXVlIHR5cGVz
IiwgIjoiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlRXhwcmVzc2lvbjsKKyAgICB9CisKICAgICAv
LyBFU1NMMSBzZWN0aW9ucyA1LjIgYW5kIDUuNzoKICAgICAvLyBFU1NMMyBzZWN0aW9uIDUuNzoK
ICAgICAvLyBUZXJuYXJ5IG9wZXJhdG9yIGlzIG5vdCBhbW9uZyB0aGUgb3BlcmF0b3JzIGFsbG93
ZWQgZm9yIHN0cnVjdHVyZXMvYXJyYXlzLgpAQCAtMzk2MywzICs0NjQ1LDUgQEAgaW50IFBhUGFy
c2VTdHJpbmdzKHNpemVfdCBjb3VudCwKIAogICAgIHJldHVybiAoZXJyb3IgPT0gMCkgJiYgKGNv
bnRleHQtPm51bUVycm9ycygpID09IDApID8gMCA6IDE7CiB9CisKK30gIC8vIG5hbWVzcGFjZSBz
aApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvUGFyc2VDb250ZXh0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRleHQuaAppbmRleCA2Y2EzYTNjZDVmYS4uNjZkZGE3ZmU3
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1BhcnNlQ29udGV4dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5oCkBAIC0xNCw2ICsxNCw5IEBACiAjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9RdWFsaWZpZXJUeXBlcy5oIgogI2luY2x1ZGUgImNv
bXBpbGVyL3ByZXByb2Nlc3Nvci9QcmVwcm9jZXNzb3IuaCIKIAorbmFtZXNwYWNlIHNoCit7CisK
IHN0cnVjdCBUTWF0cml4RmllbGRzCiB7CiAgICAgYm9vbCB3aG9sZVJvdzsKQEAgLTM1LDQzICsz
OCw4IEBAIGNsYXNzIFRQYXJzZUNvbnRleHQgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAg
ICAgICAgICAgIFNoU2hhZGVyU3BlYyBzcGVjLAogICAgICAgICAgICAgICAgICAgU2hDb21waWxl
T3B0aW9ucyBvcHRpb25zLAogICAgICAgICAgICAgICAgICAgYm9vbCBjaGVja3NQcmVjRXJyb3Jz
LAotICAgICAgICAgICAgICAgICAgVEluZm9TaW5rICZpcywKLSAgICAgICAgICAgICAgICAgIGNv
bnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVzb3VyY2VzKQotICAgICAgICA6IGludGVybWVkaWF0
ZSgpLAotICAgICAgICAgIHN5bWJvbFRhYmxlKHN5bXQpLAotICAgICAgICAgIG1EZWZlcnJlZFNp
bmdsZURlY2xhcmF0aW9uRXJyb3JDaGVjayhmYWxzZSksCi0gICAgICAgICAgbVNoYWRlclR5cGUo
dHlwZSksCi0gICAgICAgICAgbVNoYWRlclNwZWMoc3BlYyksCi0gICAgICAgICAgbUNvbXBpbGVP
cHRpb25zKG9wdGlvbnMpLAotICAgICAgICAgIG1TaGFkZXJWZXJzaW9uKDEwMCksCi0gICAgICAg
ICAgbVRyZWVSb290KG51bGxwdHIpLAotICAgICAgICAgIG1Mb29wTmVzdGluZ0xldmVsKDApLAot
ICAgICAgICAgIG1TdHJ1Y3ROZXN0aW5nTGV2ZWwoMCksCi0gICAgICAgICAgbVN3aXRjaE5lc3Rp
bmdMZXZlbCgwKSwKLSAgICAgICAgICBtQ3VycmVudEZ1bmN0aW9uVHlwZShudWxscHRyKSwKLSAg
ICAgICAgICBtRnVuY3Rpb25SZXR1cm5zVmFsdWUoZmFsc2UpLAotICAgICAgICAgIG1DaGVja3NQ
cmVjaXNpb25FcnJvcnMoY2hlY2tzUHJlY0Vycm9ycyksCi0gICAgICAgICAgbUZyYWdtZW50UHJl
Y2lzaW9uSGlnaE9uRVNTTDEoZmFsc2UpLAotICAgICAgICAgIG1EZWZhdWx0TWF0cml4UGFja2lu
ZyhFbXBDb2x1bW5NYWpvciksCi0gICAgICAgICAgbURlZmF1bHRCbG9ja1N0b3JhZ2UoSXNXZWJH
TEJhc2VkU3BlYyhzcGVjKSA/IEVic1N0ZDE0MCA6IEVic1NoYXJlZCksCi0gICAgICAgICAgbURp
YWdub3N0aWNzKGlzKSwKLSAgICAgICAgICBtRGlyZWN0aXZlSGFuZGxlcihleHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbURpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1TaGFkZXJWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TaGFk
ZXJUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy5XRUJHTF9kZWJ1
Z19zaGFkZXJfcHJlY2lzaW9uID09IDEpLAotICAgICAgICAgIG1QcmVwcm9jZXNzb3IoJm1EaWFn
bm9zdGljcywgJm1EaXJlY3RpdmVIYW5kbGVyKSwKLSAgICAgICAgICBtU2Nhbm5lcihudWxscHRy
KSwKLSAgICAgICAgICBtVXNlc0ZyYWdEYXRhKGZhbHNlKSwKLSAgICAgICAgICBtVXNlc0ZyYWdD
b2xvcihmYWxzZSksCi0gICAgICAgICAgbVVzZXNTZWNvbmRhcnlPdXRwdXRzKGZhbHNlKSwKLSAg
ICAgICAgICBtTWluUHJvZ3JhbVRleGVsT2Zmc2V0KHJlc291cmNlcy5NaW5Qcm9ncmFtVGV4ZWxP
ZmZzZXQpLAotICAgICAgICAgIG1NYXhQcm9ncmFtVGV4ZWxPZmZzZXQocmVzb3VyY2VzLk1heFBy
b2dyYW1UZXhlbE9mZnNldCksCi0gICAgICAgICAgbUNvbXB1dGVTaGFkZXJMb2NhbFNpemVEZWNs
YXJlZChmYWxzZSksCi0gICAgICAgICAgbURlY2xhcmluZ0Z1bmN0aW9uKGZhbHNlKQotICAgIHsK
LSAgICAgICAgbUNvbXB1dGVTaGFkZXJMb2NhbFNpemUuZmlsbCgtMSk7Ci0gICAgfQorICAgICAg
ICAgICAgICAgICAgVERpYWdub3N0aWNzICpkaWFnbm9zdGljcywKKyAgICAgICAgICAgICAgICAg
IGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAmcmVzb3VyY2VzKTsKIAogICAgIGNvbnN0IHBwOjpQ
cmVwcm9jZXNzb3IgJmdldFByZXByb2Nlc3NvcigpIGNvbnN0IHsgcmV0dXJuIG1QcmVwcm9jZXNz
b3I7IH0KICAgICBwcDo6UHJlcHJvY2Vzc29yICZnZXRQcmVwcm9jZXNzb3IoKSB7IHJldHVybiBt
UHJlcHJvY2Vzc29yOyB9CkBAIC04MCwxOSArNDgsMTUgQEAgY2xhc3MgVFBhcnNlQ29udGV4dCA6
IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIGludCBnZXRTaGFkZXJWZXJzaW9uKCkgY29uc3QgeyBy
ZXR1cm4gbVNoYWRlclZlcnNpb247IH0KICAgICBzaDo6R0xlbnVtIGdldFNoYWRlclR5cGUoKSBj
b25zdCB7IHJldHVybiBtU2hhZGVyVHlwZTsgfQogICAgIFNoU2hhZGVyU3BlYyBnZXRTaGFkZXJT
cGVjKCkgY29uc3QgeyByZXR1cm4gbVNoYWRlclNwZWM7IH0KLSAgICBpbnQgbnVtRXJyb3JzKCkg
Y29uc3QgeyByZXR1cm4gbURpYWdub3N0aWNzLm51bUVycm9ycygpOyB9Ci0gICAgVEluZm9TaW5r
ICZpbmZvU2luaygpIHsgcmV0dXJuIG1EaWFnbm9zdGljcy5pbmZvU2luaygpOyB9Ci0gICAgdm9p
ZCBlcnJvcihjb25zdCBUU291cmNlTG9jICZsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29uc3Qg
Y2hhciAqdG9rZW4sCi0gICAgICAgICAgICAgICBjb25zdCBjaGFyICpleHRyYUluZm89IiIpOwot
ICAgIHZvaWQgd2FybmluZyhjb25zdCBUU291cmNlTG9jICZsb2MsIGNvbnN0IGNoYXIgKnJlYXNv
biwgY29uc3QgY2hhciAqdG9rZW4sCi0gICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmV4dHJh
SW5mbz0iIik7CisgICAgaW50IG51bUVycm9ycygpIGNvbnN0IHsgcmV0dXJuIG1EaWFnbm9zdGlj
cy0+bnVtRXJyb3JzKCk7IH0KKyAgICB2b2lkIGVycm9yKGNvbnN0IFRTb3VyY2VMb2MgJmxvYywg
Y29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyICp0b2tlbik7CisgICAgdm9pZCB3YXJuaW5n
KGNvbnN0IFRTb3VyY2VMb2MgJmxvYywgY29uc3QgY2hhciAqcmVhc29uLCBjb25zdCBjaGFyICp0
b2tlbik7CiAKICAgICAvLyBJZiBpc0Vycm9yIGlzIGZhbHNlLCBhIHdhcm5pbmcgd2lsbCBiZSBy
ZXBvcnRlZCBpbnN0ZWFkLgogICAgIHZvaWQgb3V0T2ZSYW5nZUVycm9yKGJvb2wgaXNFcnJvciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2MsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIgKnRva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIgKmV4dHJhSW5mbyA9ICIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyICp0b2tlbik7CiAKICAgICBUSW50ZXJtQmxvY2sgKmdldFRyZWVSb290KCkgY29uc3QgeyBy
ZXR1cm4gbVRyZWVSb290OyB9CiAgICAgdm9pZCBzZXRUcmVlUm9vdChUSW50ZXJtQmxvY2sgKnRy
ZWVSb290KSB7IG1UcmVlUm9vdCA9IHRyZWVSb290OyB9CkBAIC0xMDYsMTAgKzcwLDcgQEAgY2xh
c3MgVFBhcnNlQ29udGV4dCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICBtRnJhZ21lbnRQ
cmVjaXNpb25IaWdoT25FU1NMMSA9IGZyYWdtZW50UHJlY2lzaW9uSGlnaDsKICAgICB9CiAKLSAg
ICB2b2lkIHNldExvb3BOZXN0aW5nTGV2ZWwoaW50IGxvb3BOZXN0aW50TGV2ZWwpCi0gICAgewot
ICAgICAgICBtTG9vcE5lc3RpbmdMZXZlbCA9IGxvb3BOZXN0aW50TGV2ZWw7Ci0gICAgfQorICAg
IHZvaWQgc2V0TG9vcE5lc3RpbmdMZXZlbChpbnQgbG9vcE5lc3RpbnRMZXZlbCkgeyBtTG9vcE5l
c3RpbmdMZXZlbCA9IGxvb3BOZXN0aW50TGV2ZWw7IH0KIAogICAgIHZvaWQgaW5jckxvb3BOZXN0
aW5nTGV2ZWwoKSB7ICsrbUxvb3BOZXN0aW5nTGV2ZWw7IH0KICAgICB2b2lkIGRlY3JMb29wTmVz
dGluZ0xldmVsKCkgeyAtLW1Mb29wTmVzdGluZ0xldmVsOyB9CkBAIC0xMjAsNiArODEsOCBAQCBj
bGFzcyBUUGFyc2VDb250ZXh0IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgYm9vbCBpc0NvbXB1
dGVTaGFkZXJMb2NhbFNpemVEZWNsYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1Db21wdXRlU2hhZGVy
TG9jYWxTaXplRGVjbGFyZWQ7IH0KICAgICBzaDo6V29ya0dyb3VwU2l6ZSBnZXRDb21wdXRlU2hh
ZGVyTG9jYWxTaXplKCkgY29uc3Q7CiAKKyAgICBpbnQgZ2V0TnVtVmlld3MoKSBjb25zdCB7IHJl
dHVybiBtTnVtVmlld3M7IH0KKwogICAgIHZvaWQgZW50ZXJGdW5jdGlvbkRlY2xhcmF0aW9uKCkg
eyBtRGVjbGFyaW5nRnVuY3Rpb24gPSB0cnVlOyB9CiAKICAgICB2b2lkIGV4aXRGdW5jdGlvbkRl
Y2xhcmF0aW9uKCkgeyBtRGVjbGFyaW5nRnVuY3Rpb24gPSBmYWxzZTsgfQpAQCAtMTI3LDEyICs5
MCwxNCBAQCBjbGFzcyBUUGFyc2VDb250ZXh0IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgYm9v
bCBkZWNsYXJpbmdGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1EZWNsYXJpbmdGdW5jdGlvbjsg
fQogCiAgICAgLy8gVGhpcyBtZXRob2QgaXMgZ3VhcmFudGVlZCB0byBzdWNjZWVkLCBldmVuIGlm
IG5vIHZhcmlhYmxlIHdpdGggJ25hbWUnIGV4aXN0cy4KLSAgICBjb25zdCBUVmFyaWFibGUgKmdl
dE5hbWVkVmFyaWFibGUoY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sIGNvbnN0IFRTdHJpbmcg
Km5hbWUsIGNvbnN0IFRTeW1ib2wgKnN5bWJvbCk7CisgICAgY29uc3QgVFZhcmlhYmxlICpnZXRO
YW1lZFZhcmlhYmxlKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICpuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sICpzeW1ib2wpOwogICAgIFRJ
bnRlcm1UeXBlZCAqcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoY29uc3QgVFNvdXJjZUxvYyAmbG9j
YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
U3RyaW5nICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFN5bWJvbCAqc3ltYm9sKTsKIAotICAgIGJvb2wgcGFyc2VWZWN0b3JGaWVsZHMoY29u
c3QgVFN0cmluZyYsIGludCB2ZWNTaXplLCBUVmVjdG9yRmllbGRzJiwgY29uc3QgVFNvdXJjZUxv
YyAmbGluZSk7CisgICAgYm9vbCBwYXJzZVZlY3RvckZpZWxkcyhjb25zdCBUU3RyaW5nICYsIGlu
dCB2ZWNTaXplLCBUVmVjdG9yRmllbGRzICYsIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpOwogCiAg
ICAgdm9pZCBhc3NpZ25FcnJvcihjb25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBjaGFyICpv
cCwgVFN0cmluZyBsZWZ0LCBUU3RyaW5nIHJpZ2h0KTsKICAgICB2b2lkIHVuYXJ5T3BFcnJvcihj
b25zdCBUU291cmNlTG9jICZsaW5lLCBjb25zdCBjaGFyICpvcCwgVFN0cmluZyBvcGVyYW5kKTsK
QEAgLTE0Nyw4ICsxMTIsNyBAQCBjbGFzcyBUUGFyc2VDb250ZXh0IDogYW5nbGU6Ok5vbkNvcHlh
YmxlCiAgICAgdm9pZCBjaGVja0lzU2NhbGFySW50ZWdlcihUSW50ZXJtVHlwZWQgKm5vZGUsIGNv
bnN0IGNoYXIgKnRva2VuKTsKICAgICBib29sIGNoZWNrSXNBdEdsb2JhbExldmVsKGNvbnN0IFRT
b3VyY2VMb2MgJmxpbmUsIGNvbnN0IGNoYXIgKnRva2VuKTsKICAgICBib29sIGNoZWNrQ29uc3Ry
dWN0b3JBcmd1bWVudHMoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVEludGVybU5vZGUgKmFyZ3VtZW50c05vZGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRGdW5jdGlvbiAmZnVuY3Rpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAqYXJn
dW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUT3BlcmF0b3Igb3As
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlKTsK
IApAQCAtMTYyLDI0ICsxMjYsMjQgQEAgY2xhc3MgVFBhcnNlQ29udGV4dCA6IGFuZ2xlOjpOb25D
b3B5YWJsZQogICAgIGJvb2wgY2hlY2tJc05vdFNhbXBsZXIoY29uc3QgVFNvdXJjZUxvYyAmbGlu
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlU3BlY2lmaWVyTm9uQXJy
YXkgJnBUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29u
KTsKKyAgICBib29sIGNoZWNrSXNOb3RJbWFnZShjb25zdCBUU291cmNlTG9jICZsaW5lLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlU3BlY2lmaWVyTm9uQXJyYXkgJnBUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbik7CiAgICAgdm9p
ZCBjaGVja0RlY2xhcmF0b3JMb2NhdGlvbklzTm90U3BlY2lmaWVkKGNvbnN0IFRTb3VyY2VMb2Mg
JmxpbmUsIGNvbnN0IFRQdWJsaWNUeXBlICZwVHlwZSk7CiAgICAgdm9pZCBjaGVja0xvY2F0aW9u
SXNOb3RTcGVjaWZpZWQoY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVExheW91dFF1YWxpZmllciAmbGF5b3V0UXVh
bGlmaWVyKTsKLSAgICB2b2lkIGNoZWNrT3V0UGFyYW1ldGVySXNOb3RTYW1wbGVyKGNvbnN0IFRT
b3VyY2VMb2MgJmxpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU
UXVhbGlmaWVyIHF1YWxpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRUeXBlICZ0eXBlKTsKICAgICB2b2lkIGNoZWNrSXNQYXJhbWV0ZXJRdWFsaWZp
ZXJWYWxpZChjb25zdCBUU291cmNlTG9jICZsaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRlciAmdHlwZVF1YWxpZmll
ckJ1aWxkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUg
KnR5cGUpOwogICAgIGJvb2wgY2hlY2tDYW5Vc2VFeHRlbnNpb24oY29uc3QgVFNvdXJjZUxvYyAm
bGluZSwgY29uc3QgVFN0cmluZyAmZXh0ZW5zaW9uKTsKICAgICB2b2lkIHNpbmdsZURlY2xhcmF0
aW9uRXJyb3JDaGVjayhjb25zdCBUUHVibGljVHlwZSAmcHVibGljVHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9j
YXRpb24pOworICAgIHZvaWQgZW1wdHlEZWNsYXJhdGlvbkVycm9yQ2hlY2soY29uc3QgVFB1Ymxp
Y1R5cGUgJnB1YmxpY1R5cGUsIGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uKTsKICAgICB2b2lk
IGNoZWNrTGF5b3V0UXVhbGlmaWVyU3VwcG9ydGVkKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9u
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAm
bGF5b3V0UXVhbGlmaWVyTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCB2ZXJzaW9uUmVxdWlyZWQpOwogICAgIGJvb2wgY2hlY2tXb3JrR3JvdXBTaXplSXNO
b3RTcGVjaWZpZWQoY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUTGF5b3V0UXVhbGlmaWVyICZsYXlvdXRR
dWFsaWZpZXIpOwotCiAgICAgdm9pZCBmdW5jdGlvbkNhbGxMVmFsdWVFcnJvckNoZWNrKGNvbnN0
IFRGdW5jdGlvbiAqZm5DYW5kaWRhdGUsIFRJbnRlcm1BZ2dyZWdhdGUgKmZuQ2FsbCk7CiAgICAg
dm9pZCBjaGVja0ludmFyaWFudFZhcmlhYmxlUXVhbGlmaWVyKGJvb2wgaW52YXJpYW50LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUUXVhbGlmaWVyIHF1
YWxpZmllciwKQEAgLTE4NywxMTEgKzE1MSwxMTMgQEAgY2xhc3MgVFBhcnNlQ29udGV4dCA6IGFu
Z2xlOjpOb25Db3B5YWJsZQogICAgIHZvaWQgY2hlY2tJbnB1dE91dHB1dFR5cGVJc1ZhbGlkRVMz
KGNvbnN0IFRRdWFsaWZpZXIgcXVhbGlmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRQdWJsaWNUeXBlICZ0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJnF1YWxpZmllckxvY2F0aW9u
KTsKLQorICAgIHZvaWQgY2hlY2tMb2NhbFZhcmlhYmxlQ29uc3RTdG9yYWdlUXVhbGlmaWVyKGNv
bnN0IFRRdWFsaWZpZXJXcmFwcGVyQmFzZSAmcXVhbGlmaWVyKTsKICAgICBjb25zdCBUUHJhZ21h
ICZwcmFnbWEoKSBjb25zdCB7IHJldHVybiBtRGlyZWN0aXZlSGFuZGxlci5wcmFnbWEoKTsgfQot
ICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciAmZXh0ZW5zaW9uQmVoYXZpb3IoKSBjb25zdCB7
IHJldHVybiBtRGlyZWN0aXZlSGFuZGxlci5leHRlbnNpb25CZWhhdmlvcigpOyB9CisgICAgY29u
c3QgVEV4dGVuc2lvbkJlaGF2aW9yICZleHRlbnNpb25CZWhhdmlvcigpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbURpcmVjdGl2ZUhhbmRsZXIuZXh0ZW5zaW9uQmVoYXZpb3IoKTsKKyAg
ICB9CiAgICAgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBjaGFyICpleHRlbnNpb24pOwog
ICAgIGJvb2wgaXNFeHRlbnNpb25FbmFibGVkKGNvbnN0IGNoYXIgKmV4dGVuc2lvbikgY29uc3Q7
CiAgICAgdm9pZCBoYW5kbGVFeHRlbnNpb25EaXJlY3RpdmUoY29uc3QgVFNvdXJjZUxvYyAmbG9j
LCBjb25zdCBjaGFyICpleHROYW1lLCBjb25zdCBjaGFyICpiZWhhdmlvcik7Ci0gICAgdm9pZCBo
YW5kbGVQcmFnbWFEaXJlY3RpdmUoY29uc3QgVFNvdXJjZUxvYyAmbG9jLCBjb25zdCBjaGFyICpu
YW1lLCBjb25zdCBjaGFyICp2YWx1ZSwgYm9vbCBzdGRnbCk7CisgICAgdm9pZCBoYW5kbGVQcmFn
bWFEaXJlY3RpdmUoY29uc3QgVFNvdXJjZUxvYyAmbG9jLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBzdGRnbCk7CiAKLSAgICBib29sIGNvbnRhaW5zU2FtcGxlcihjb25zdCBUVHlwZSAmdHlwZSk7
Ci0gICAgY29uc3QgVEZ1bmN0aW9uKiBmaW5kRnVuY3Rpb24oCi0gICAgICAgIGNvbnN0IFRTb3Vy
Y2VMb2MgJmxpbmUsIFRGdW5jdGlvbiAqcGZuQ2FsbCwgaW50IGlucHV0U2hhZGVyVmVyc2lvbiwg
Ym9vbCAqYnVpbHRJbiA9IDApOwogICAgIGJvb2wgZXhlY3V0ZUluaXRpYWxpemVyKGNvbnN0IFRT
b3VyY2VMb2MgJmxpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmlu
ZyAmaWRlbnRpZmllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUUHVibGlj
VHlwZSAmcFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpp
bml0aWFsaXplciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqKmlu
dGVybU5vZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKipp
bml0Tm9kZSk7CiAKKyAgICB2b2lkIGFkZEZ1bGx5U3BlY2lmaWVkVHlwZShUUHVibGljVHlwZSAq
dHlwZVNwZWNpZmllcik7CiAgICAgVFB1YmxpY1R5cGUgYWRkRnVsbHlTcGVjaWZpZWRUeXBlKGNv
bnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRlciAmdHlwZVF1YWxpZmllckJ1aWxkZXIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRQdWJsaWNUeXBlICZ0eXBlU3Bl
Y2lmaWVyKTsKIAotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcnNlU2luZ2xlRGVjbGFyYXRpb24o
VFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyT3JUeXBlTG9jYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3Ry
aW5nICZpZGVudGlmaWVyKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlICpwYXJzZVNpbmdsZUFycmF5
RGVjbGFyYXRpb24oVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZp
ZXJMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5kZXhMb2NhdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVElu
dGVybVR5cGVkICppbmRleEV4cHJlc3Npb24pOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcnNl
U2luZ2xlSW5pdERlY2xhcmF0aW9uKGNvbnN0IFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3Vy
Y2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2Mg
JmluaXRMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUSW50ZXJtVHlwZWQgKmluaXRpYWxpemVyKTsKKyAgICBUSW50ZXJtRGVjbGFyYXRp
b24gKnBhcnNlU2luZ2xlRGVjbGFyYXRpb24oVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VM
b2MgJmlkZW50aWZpZXJPclR5cGVMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllcik7CisgICAgVElu
dGVybURlY2xhcmF0aW9uICpwYXJzZVNpbmdsZUFycmF5RGVjbGFyYXRpb24oVFB1YmxpY1R5cGUg
JnB1YmxpY1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcg
JmlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5kZXhMb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmluZGV4
RXhwcmVzc2lvbik7CisgICAgVEludGVybURlY2xhcmF0aW9uICpwYXJzZVNpbmdsZUluaXREZWNs
YXJhdGlvbihjb25zdCBUUHVibGljVHlwZSAmcHVibGljVHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50
aWZpZXJMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbml0TG9j
YXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUSW50ZXJtVHlwZWQgKmluaXRpYWxpemVyKTsKIAogICAgIC8vIFBhcnNlIGEgZGVjbGFyYXRp
b24gbGlrZSAidHlwZSBhW25dID0gaW5pdGlhbGl6ZXIiCiAgICAgLy8gTm90ZSB0aGF0IHRoaXMg
ZG9lcyBub3QgYXBwbHkgdG8gZGVjbGFyYXRpb25zIGxpa2UgInR5cGVbbl0gYSA9IGluaXRpYWxp
emVyIgotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcnNlU2luZ2xlQXJyYXlJbml0RGVjbGFyYXRp
b24oVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9j
YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5kZXhMb2Nh
dGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRJbnRlcm1UeXBlZCAqaW5kZXhFeHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5pdExv
Y2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVEludGVybVR5cGVkICppbml0aWFsaXplcik7Ci0KLSAgICBUSW50ZXJtQWdncmVnYXRl
ICpwYXJzZUludmFyaWFudERlY2xhcmF0aW9uKGNvbnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRlciAm
dHlwZVF1YWxpZmllckJ1aWxkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9jLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAqaWRl
bnRpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRTeW1ib2wgKnN5bWJvbCk7Ci0KLSAgICBUSW50ZXJtQWdncmVnYXRlICpwYXJzZURl
Y2xhcmF0b3IoVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZURlY2xhcmF0aW9uLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZp
ZGVudGlmaWVyTG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBhcnNl
QXJyYXlEZWNsYXJhdG9yKFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZURl
Y2xhcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmFy
cmF5TG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VEludGVybVR5cGVkICppbmRleEV4cHJlc3Npb24pOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnBh
cnNlSW5pdERlY2xhcmF0b3IoY29uc3QgVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICphZ2dy
ZWdhdGVEZWNsYXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJmlkZW50aWZpZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9j
ICZpbml0TG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUSW50ZXJtVHlwZWQgKmluaXRpYWxpemVyKTsKKyAgICBUSW50ZXJtRGVjbGFyYXRpb24gKnBh
cnNlU2luZ2xlQXJyYXlJbml0RGVjbGFyYXRpb24oVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmaWRlbnRp
ZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5kZXhMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbmRl
eEV4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmluaXRMb2NhdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVk
ICppbml0aWFsaXplcik7CisKKyAgICBUSW50ZXJtSW52YXJpYW50RGVjbGFyYXRpb24gKnBhcnNl
SW52YXJpYW50RGVjbGFyYXRpb24oCisgICAgICAgIGNvbnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRl
ciAmdHlwZVF1YWxpZmllckJ1aWxkZXIsCisgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50
aWZpZXJMb2MsCisgICAgICAgIGNvbnN0IFRTdHJpbmcgKmlkZW50aWZpZXIsCisgICAgICAgIGNv
bnN0IFRTeW1ib2wgKnN5bWJvbCk7CisKKyAgICB2b2lkIHBhcnNlRGVjbGFyYXRvcihUUHVibGlj
VHlwZSAmcHVibGljVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNl
TG9jICZpZGVudGlmaWVyTG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFN0cmluZyAmaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtRGVj
bGFyYXRpb24gKmRlY2xhcmF0aW9uT3V0KTsKKyAgICB2b2lkIHBhcnNlQXJyYXlEZWNsYXJhdG9y
KFRQdWJsaWNUeXBlICZwdWJsaWNUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFNvdXJjZUxvYyAmaWRlbnRpZmllckxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmFycmF5TG9jYXRpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmluZGV4RXhwcmVzc2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1EZWNsYXJhdGlvbiAqZGVjbGFyYXRpb25P
dXQpOworICAgIHZvaWQgcGFyc2VJbml0RGVjbGFyYXRvcihjb25zdCBUUHVibGljVHlwZSAmcHVi
bGljVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAm
aWRlbnRpZmllckxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
U3RyaW5nICZpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
U291cmNlTG9jICZpbml0TG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJ
bnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJ
bnRlcm1EZWNsYXJhdGlvbiAqZGVjbGFyYXRpb25PdXQpOwogCiAgICAgLy8gUGFyc2UgYSBkZWNs
YXJhdG9yIGxpa2UgImFbbl0gPSBpbml0aWFsaXplciIKLSAgICBUSW50ZXJtQWdncmVnYXRlICpw
YXJzZUFycmF5SW5pdERlY2xhcmF0b3IoY29uc3QgVFB1YmxpY1R5cGUgJnB1YmxpY1R5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dy
ZWdhdGUgKmFnZ3JlZ2F0ZURlY2xhcmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpZGVudGlmaWVyTG9jYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
dHJpbmcgJmlkZW50aWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmluZGV4TG9jYXRpb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXhFeHBy
ZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUU291cmNlTG9jICZpbml0TG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIpOworICAgIHZv
aWQgcGFyc2VBcnJheUluaXREZWNsYXJhdG9yKGNvbnN0IFRQdWJsaWNUeXBlICZwdWJsaWNUeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmlk
ZW50aWZpZXJMb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUU3RyaW5nICZpZGVudGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRTb3VyY2VMb2MgJmluZGV4TG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVEludGVybVR5cGVkICppbmRleEV4cHJlc3Npb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmaW5pdExvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybURlY2xhcmF0aW9uICpk
ZWNsYXJhdGlvbk91dCk7CiAKICAgICB2b2lkIHBhcnNlR2xvYmFsTGF5b3V0UXVhbGlmaWVyKGNv
bnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRlciAmdHlwZVF1YWxpZmllckJ1aWxkZXIpOwotICAgIFRJ
bnRlcm1BZ2dyZWdhdGUgKmFkZEZ1bmN0aW9uUHJvdG90eXBlRGVjbGFyYXRpb24oY29uc3QgVEZ1
bmN0aW9uICZwYXJzZWRGdW5jdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uKTsKLSAgICBU
SW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICphZGRGdW5jdGlvbkRlZmluaXRpb24oY29uc3QgVEZ1
bmN0aW9uICZmdW5jdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25QYXJhbWV0ZXJzLAorICAg
IFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAqYWRkRnVuY3Rpb25Qcm90b3R5cGVEZWNsYXJhdGlv
bihjb25zdCBURnVuY3Rpb24gJnBhcnNlZEZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9j
ICZsb2NhdGlvbik7CisgICAgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqYWRkRnVuY3Rpb25E
ZWZpbml0aW9uKFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAqZnVuY3Rpb25Qcm90b3R5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRl
cm1CbG9jayAqZnVuY3Rpb25Cb2R5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbik7CiAgICAgdm9p
ZCBwYXJzZUZ1bmN0aW9uRGVmaW5pdGlvbkhlYWRlcihjb25zdCBUU291cmNlTG9jICZsb2NhdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRGdW5jdGlvbiAqKmZ1
bmN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUFn
Z3JlZ2F0ZSAqKmFnZ3JlZ2F0ZU91dCk7Ci0gICAgVEZ1bmN0aW9uICpwYXJzZUZ1bmN0aW9uRGVj
bGFyYXRvcihjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb24pOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlICoqcHJvdG90
eXBlT3V0KTsKKyAgICBURnVuY3Rpb24gKnBhcnNlRnVuY3Rpb25EZWNsYXJhdG9yKGNvbnN0IFRT
b3VyY2VMb2MgJmxvY2F0aW9uLCBURnVuY3Rpb24gKmZ1bmN0aW9uKTsKICAgICBURnVuY3Rpb24g
KnBhcnNlRnVuY3Rpb25IZWFkZXIoY29uc3QgVFB1YmxpY1R5cGUgJnR5cGUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgKm5hbWUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9uKTsKICAg
ICBURnVuY3Rpb24gKmFkZENvbnN0cnVjdG9yRnVuYyhjb25zdCBUUHVibGljVHlwZSAmcHVibGlj
VHlwZSk7Ci0gICAgVEludGVybVR5cGVkICphZGRDb25zdHJ1Y3RvcihUSW50ZXJtTm9kZSAqYXJn
dW1lbnRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE9wZXJhdG9yIG9wLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEZ1bmN0aW9uICpmbkNhbGwsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsaW5lKTsKIAog
ICAgIFRJbnRlcm1UeXBlZCAqYWRkSW5kZXhFeHByZXNzaW9uKFRJbnRlcm1UeXBlZCAqYmFzZUV4
cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNv
dXJjZUxvYyYgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVEludGVybVR5cGVkICppbmRleEV4cHJlc3Npb24pOwotICAgIFRJbnRlcm1UeXBl
ZCogYWRkRmllbGRTZWxlY3Rpb25FeHByZXNzaW9uKFRJbnRlcm1UeXBlZCAqYmFzZUV4cHJlc3Np
b24sCisgICAgVEludGVybVR5cGVkICphZGRGaWVsZFNlbGVjdGlvbkV4cHJlc3Npb24oVEludGVy
bVR5cGVkICpiYXNlRXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZkb3RMb2NhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZmaWVsZFN0
cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUU291cmNlTG9jICZmaWVsZExvY2F0aW9uKTsKIAorICAgIFRGaWVsZExpc3QgKmNvbWJpbmVT
dHJ1Y3RGaWVsZExpc3RzKFRGaWVsZExpc3QgKnByb2Nlc3NlZEZpZWxkcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBURmllbGRMaXN0ICpuZXdseUFkZGVk
RmllbGRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
b3VyY2VMb2MgJmxvY2F0aW9uKTsKICAgICBURmllbGRMaXN0ICphZGRTdHJ1Y3REZWNsYXJhdG9y
TGlzdFdpdGhRdWFsaWZpZXJzKAogICAgICAgICBjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXIg
JnR5cGVRdWFsaWZpZXJCdWlsZGVyLAogICAgICAgICBUUHVibGljVHlwZSAqdHlwZVNwZWNpZmll
ciwKQEAgLTMwMiwxNCArMjY4LDE0IEBAIGNsYXNzIFRQYXJzZUNvbnRleHQgOiBhbmdsZTo6Tm9u
Q29weWFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
U3RyaW5nICpzdHJ1Y3ROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRGaWVsZExpc3QgKmZpZWxkTGlzdCk7CiAKLSAgICBUSW50ZXJtQWdncmVnYXRlICphZGRJ
bnRlcmZhY2VCbG9jayhjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXIgJnR5cGVRdWFsaWZpZXJC
dWlsZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
b3VyY2VMb2MgJm5hbWVMaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTdHJpbmcgJmJsb2NrTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBURmllbGRMaXN0ICpmaWVsZExpc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAqaW5zdGFuY2VOYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmluc3Rh
bmNlTGluZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJt
VHlwZWQgKmFycmF5SW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFNvdXJjZUxvYyAmYXJyYXlJbmRleExpbmUpOworICAgIFRJbnRlcm1EZWNsYXJh
dGlvbiAqYWRkSW50ZXJmYWNlQmxvY2soY29uc3QgVFR5cGVRdWFsaWZpZXJCdWlsZGVyICZ0eXBl
UXVhbGlmaWVyQnVpbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTb3VyY2VMb2MgJm5hbWVMaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmYmxvY2tOYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEZpZWxkTGlzdCAqZmllbGRMaXN0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAqaW5z
dGFuY2VOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVFNvdXJjZUxvYyAmaW5zdGFuY2VMaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVEludGVybVR5cGVkICphcnJheUluZGV4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmYXJyYXlJbmRleExp
bmUpOwogCiAgICAgdm9pZCBwYXJzZUxvY2FsU2l6ZShjb25zdCBUU3RyaW5nICZxdWFsaWZpZXJU
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmcXVhbGlmaWVy
VHlwZUxpbmUsCkBAIC0zMTgsOCArMjg0LDEyIEBAIGNsYXNzIFRQYXJzZUNvbnRleHQgOiBhbmds
ZTo6Tm9uQ29weWFibGUKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZpbnRWYWx1ZVN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbmRleCwK
ICAgICAgICAgICAgICAgICAgICAgICAgIHNoOjpXb3JrR3JvdXBTaXplICpsb2NhbFNpemUpOwot
ICAgIFRMYXlvdXRRdWFsaWZpZXIgcGFyc2VMYXlvdXRRdWFsaWZpZXIoCi0gICAgICAgIGNvbnN0
IFRTdHJpbmcgJnF1YWxpZmllclR5cGUsIGNvbnN0IFRTb3VyY2VMb2MgJnF1YWxpZmllclR5cGVM
aW5lKTsKKyAgICB2b2lkIHBhcnNlTnVtVmlld3MoaW50IGludFZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZpbnRWYWx1ZUxpbmUsCisgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZpbnRWYWx1ZVN0cmluZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgaW50ICpudW1WaWV3cyk7CisgICAgVExheW91dFF1YWxpZmllciBwYXJzZUxh
eW91dFF1YWxpZmllcihjb25zdCBUU3RyaW5nICZxdWFsaWZpZXJUeXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmcXVhbGlmaWVy
VHlwZUxpbmUpOwogICAgIFRMYXlvdXRRdWFsaWZpZXIgcGFyc2VMYXlvdXRRdWFsaWZpZXIoY29u
c3QgVFN0cmluZyAmcXVhbGlmaWVyVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJnF1YWxpZmllclR5cGVMaW5lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGludFZhbHVlLApAQCAtMzQz
LDEyICszMTMsMTggQEAgY2xhc3MgVFBhcnNlQ29udGV4dCA6IGFuZ2xlOjpOb25Db3B5YWJsZQog
CiAgICAgVEludGVybVR5cGVkICphZGRVbmFyeU1hdGgoVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlw
ZWQgKmNoaWxkLCBjb25zdCBUU291cmNlTG9jICZsb2MpOwogICAgIFRJbnRlcm1UeXBlZCAqYWRk
VW5hcnlNYXRoTFZhbHVlKFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkICpjaGlsZCwgY29uc3Qg
VFNvdXJjZUxvYyAmbG9jKTsKLSAgICBUSW50ZXJtVHlwZWQgKmFkZEJpbmFyeU1hdGgoCi0gICAg
ICAgIFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkICpsZWZ0LCBUSW50ZXJtVHlwZWQgKnJpZ2h0
LCBjb25zdCBUU291cmNlTG9jICZsb2MpOwotICAgIFRJbnRlcm1UeXBlZCAqYWRkQmluYXJ5TWF0
aEJvb2xlYW5SZXN1bHQoCi0gICAgICAgIFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkICpsZWZ0
LCBUSW50ZXJtVHlwZWQgKnJpZ2h0LCBjb25zdCBUU291cmNlTG9jICZsb2MpOwotICAgIFRJbnRl
cm1UeXBlZCAqYWRkQXNzaWduKAotICAgICAgICBUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAq
bGVmdCwgVEludGVybVR5cGVkICpyaWdodCwgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKKyAgICBU
SW50ZXJtVHlwZWQgKmFkZEJpbmFyeU1hdGgoVE9wZXJhdG9yIG9wLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmxlZnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqcmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvYyk7CisgICAgVEludGVybVR5cGVkICphZGRC
aW5hcnlNYXRoQm9vbGVhblJlc3VsdChUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmxlZnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKnJpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJj
ZUxvYyAmbG9jKTsKKyAgICBUSW50ZXJtVHlwZWQgKmFkZEFzc2lnbihUT3BlcmF0b3Igb3AsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpsZWZ0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqcmlnaHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKIAogICAgIFRJbnRlcm1UeXBlZCAq
YWRkQ29tbWEoVEludGVybVR5cGVkICpsZWZ0LCBUSW50ZXJtVHlwZWQgKnJpZ2h0LCBjb25zdCBU
U291cmNlTG9jICZsb2MpOwogCkBAIC0zNTYsMTEgKzMzMiwxNyBAQCBjbGFzcyBUUGFyc2VDb250
ZXh0IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgVEludGVybUJyYW5jaCAqYWRkQnJhbmNoKFRP
cGVyYXRvciBvcCwgVEludGVybVR5cGVkICpyZXR1cm5WYWx1ZSwgY29uc3QgVFNvdXJjZUxvYyAm
bG9jKTsKIAogICAgIHZvaWQgY2hlY2tUZXh0dXJlT2Zmc2V0Q29uc3QoVEludGVybUFnZ3JlZ2F0
ZSAqZnVuY3Rpb25DYWxsKTsKKyAgICB2b2lkIGNoZWNrSW1hZ2VNZW1vcnlBY2Nlc3NGb3JCdWls
dGluRnVuY3Rpb25zKFRJbnRlcm1BZ2dyZWdhdGUgKmZ1bmN0aW9uQ2FsbCk7CisgICAgdm9pZCBj
aGVja0ltYWdlTWVtb3J5QWNjZXNzRm9yVXNlckRlZmluZWRGdW5jdGlvbnMoY29uc3QgVEZ1bmN0
aW9uICpmdW5jdGlvbkRlZmluaXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVEludGVybUFnZ3JlZ2F0ZSAqZnVuY3Rpb25D
YWxsKTsKKyAgICBUSW50ZXJtU2VxdWVuY2UgKmNyZWF0ZUVtcHR5QXJndW1lbnRzTGlzdCgpOwor
CisgICAgLy8gZm5DYWxsIGlzIG9ubHkgc3RvcmluZyB0aGUgYnVpbHQtaW4gb3AsIGFuZCBmdW5j
dGlvbiBuYW1lIG9yIGNvbnN0cnVjdG9yIHR5cGUuIGFyZ3VtZW50cworICAgIC8vIGhhcyB0aGUg
YXJndW1lbnRzLgogICAgIFRJbnRlcm1UeXBlZCAqYWRkRnVuY3Rpb25DYWxsT3JNZXRob2QoVEZ1
bmN0aW9uICpmbkNhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUSW50ZXJtTm9kZSAqcGFyYW1Ob2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVEludGVybVNlcXVlbmNlICphcmd1bWVudHMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSAqdGhpc05vZGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICpmYXRhbEVy
cm9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRT
b3VyY2VMb2MgJmxvYyk7CiAKICAgICBUSW50ZXJtVHlwZWQgKmFkZFRlcm5hcnlTZWxlY3Rpb24o
VEludGVybVR5cGVkICpjb25kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUSW50ZXJtVHlwZWQgKnRydWVFeHByZXNzaW9uLApAQCAtMzcyLDE1ICszNTQsMTcgQEAgY2xh
c3MgVFBhcnNlQ29udGV4dCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIFRTeW1ib2xUYWJsZSAm
c3ltYm9sVGFibGU7ICAgLy8gc3ltYm9sIHRhYmxlIHRoYXQgZ29lcyB3aXRoIHRoZSBsYW5ndWFn
ZSBjdXJyZW50bHkgYmVpbmcgcGFyc2VkCiAKICAgcHJpdmF0ZToKLSAgICAvLyBSZXR1cm5zIGEg
Y2xhbXBlZCBpbmRleC4KKyAgICAvLyBSZXR1cm5zIGEgY2xhbXBlZCBpbmRleC4gSWYgaXQgcHJp
bnRzIG91dCBhbiBlcnJvciBtZXNzYWdlLCB0aGUgdG9rZW4gaXMgIltdIi4KICAgICBpbnQgY2hl
Y2tJbmRleE91dE9mUmFuZ2UoYm9vbCBvdXRPZlJhbmdlSW5kZXhJc0Vycm9yLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgYXJyYXlTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyICpyZWFzb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRv
a2VuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVhc29uKTsK
IAotICAgIGJvb2wgZGVjbGFyZVZhcmlhYmxlKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsIGNvbnN0
IFRTdHJpbmcgJmlkZW50aWZpZXIsIGNvbnN0IFRUeXBlICZ0eXBlLCBUVmFyaWFibGUgKip2YXJp
YWJsZSk7CisgICAgYm9vbCBkZWNsYXJlVmFyaWFibGUoY29uc3QgVFNvdXJjZUxvYyAmbGluZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZpZGVudGlmaWVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIFRWYXJpYWJsZSAqKnZhcmlhYmxlKTsKIAogICAgIHZvaWQgY2hlY2tDYW5CZURl
Y2xhcmVkV2l0aG91dEluaXRpYWxpemVyKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmaWRl
bnRpZmllciwKQEAgLTM5MiwzMyArMzc2LDc3IEBAIGNsYXNzIFRQYXJzZUNvbnRleHQgOiBhbmds
ZTo6Tm9uQ29weWFibGUKICAgICAvLyBBc3N1bWVzIHRoYXQgbXVsdGlwbGljYXRpb24gb3AgaGFz
IGFscmVhZHkgYmVlbiBzZXQgYmFzZWQgb24gdGhlIHR5cGVzLgogICAgIGJvb2wgaXNNdWx0aXBs
aWNhdGlvblR5cGVDb21iaW5hdGlvblZhbGlkKFRPcGVyYXRvciBvcCwgY29uc3QgVFR5cGUgJmxl
ZnQsIGNvbnN0IFRUeXBlICZyaWdodCk7CiAKLSAgICBUSW50ZXJtVHlwZWQgKmFkZEJpbmFyeU1h
dGhJbnRlcm5hbCgKLSAgICAgICAgVE9wZXJhdG9yIG9wLCBUSW50ZXJtVHlwZWQgKmxlZnQsIFRJ
bnRlcm1UeXBlZCAqcmlnaHQsIGNvbnN0IFRTb3VyY2VMb2MgJmxvYyk7Ci0gICAgVEludGVybVR5
cGVkICpjcmVhdGVBc3NpZ24oCi0gICAgICAgIFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkICps
ZWZ0LCBUSW50ZXJtVHlwZWQgKnJpZ2h0LCBjb25zdCBUU291cmNlTG9jICZsb2MpOwotICAgIC8v
IFRoZSBmdW5jUmV0dXJuVHlwZSBwYXJhbWV0ZXIgaXMgZXhwZWN0ZWQgdG8gYmUgbm9uLW51bGwg
d2hlbiB0aGUgb3BlcmF0aW9uIGlzIGEgYnVpbHQtaW4gZnVuY3Rpb24uCi0gICAgLy8gSXQgaXMg
ZXhwZWN0ZWQgdG8gYmUgbnVsbCBmb3Igb3RoZXIgdW5hcnkgb3BlcmF0b3JzLgotICAgIFRJbnRl
cm1UeXBlZCAqY3JlYXRlVW5hcnlNYXRoKAotICAgICAgICBUT3BlcmF0b3Igb3AsIFRJbnRlcm1U
eXBlZCAqY2hpbGQsIGNvbnN0IFRTb3VyY2VMb2MgJmxvYywgY29uc3QgVFR5cGUgKmZ1bmNSZXR1
cm5UeXBlKTsKKyAgICB2b2lkIGNoZWNrT3V0UGFyYW1ldGVySXNOb3RJbWFnZShjb25zdCBUU291
cmNlTG9jICZsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRRdWFs
aWZpZXIgcXVhbGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRUeXBlICZ0eXBlKTsKKyAgICB2b2lkIGNoZWNrT3V0UGFyYW1ldGVySXNOb3RPcGFxdWVU
eXBlKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlKTsKKyAgICB2b2lkIGNoZWNr
T3V0UGFyYW1ldGVySXNOb3RTYW1wbGVyKGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlKTsK
KworICAgIHZvaWQgY2hlY2tJbnRlcm5hbEZvcm1hdElzTm90U3BlY2lmaWVkKGNvbnN0IFRTb3Vy
Y2VMb2MgJmxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRMYXlvdXRJbWFnZUludGVybmFsRm9ybWF0IGludGVybmFsRm9ybWF0KTsKKyAgICB2b2lk
IGNoZWNrTWVtb3J5UXVhbGlmaWVySXNOb3RTcGVjaWZpZWQoY29uc3QgVE1lbW9yeVF1YWxpZmll
ciAmbWVtb3J5UXVhbGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbik7CisgICAgdm9pZCBjaGVja0JpbmRp
bmdJc1ZhbGlkKGNvbnN0IFRTb3VyY2VMb2MgJmlkZW50aWZpZXJMb2NhdGlvbiwgY29uc3QgVFR5
cGUgJnR5cGUpOworICAgIHZvaWQgY2hlY2tCaW5kaW5nSXNOb3RTcGVjaWZpZWQoY29uc3QgVFNv
dXJjZUxvYyAmbG9jYXRpb24sIGludCBiaW5kaW5nKTsKKyAgICB2b2lkIGNoZWNrSW1hZ2VCaW5k
aW5nSXNWYWxpZChjb25zdCBUU291cmNlTG9jICZsb2NhdGlvbiwgaW50IGJpbmRpbmcsIGludCBh
cnJheVNpemUpOworICAgIHZvaWQgY2hlY2tTYW1wbGVyQmluZGluZ0lzVmFsaWQoY29uc3QgVFNv
dXJjZUxvYyAmbG9jYXRpb24sIGludCBiaW5kaW5nLCBpbnQgYXJyYXlTaXplKTsKKworICAgIHZv
aWQgY2hlY2tVbmlmb3JtTG9jYXRpb25JblJhbmdlKGNvbnN0IFRTb3VyY2VMb2MgJmxvY2F0aW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvYmplY3RMb2NhdGlv
bkNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRMYXlv
dXRRdWFsaWZpZXIgJmxheW91dFF1YWxpZmllcik7CisKKyAgICB2b2lkIGNoZWNrWXV2SXNOb3RT
cGVjaWZpZWQoY29uc3QgVFNvdXJjZUxvYyAmbG9jYXRpb24sIGJvb2wgeXV2KTsKKworICAgIFRJ
bnRlcm1UeXBlZCAqYWRkQmluYXJ5TWF0aEludGVybmFsKFRPcGVyYXRvciBvcCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmxlZnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpyaWdodCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9j
ICZsb2MpOworICAgIFRJbnRlcm1CaW5hcnkgKmNyZWF0ZUFzc2lnbihUT3BlcmF0b3Igb3AsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqbGVmdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICpyaWdodCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKKyAgICBUSW50
ZXJtVHlwZWQgKmNyZWF0ZVVuYXJ5TWF0aChUT3BlcmF0b3Igb3AsIFRJbnRlcm1UeXBlZCAqY2hp
bGQsIGNvbnN0IFRTb3VyY2VMb2MgJmxvYyk7CisKKyAgICBUSW50ZXJtVHlwZWQgKmFkZE1ldGhv
ZChURnVuY3Rpb24gKmZuQ2FsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJt
U2VxdWVuY2UgKmFyZ3VtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJt
Tm9kZSAqdGhpc05vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJj
ZUxvYyAmbG9jKTsKKyAgICBUSW50ZXJtVHlwZWQgKmFkZENvbnN0cnVjdG9yKFRJbnRlcm1TZXF1
ZW5jZSAqYXJndW1lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE9wZXJh
dG9yIG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFR5cGUgdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUpOwor
ICAgIFRJbnRlcm1UeXBlZCAqYWRkTm9uQ29uc3RydWN0b3JGdW5jdGlvbkNhbGwoVEZ1bmN0aW9u
ICpmbkNhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUSW50ZXJtU2VxdWVuY2UgKmFyZ3VtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxvYyk7CiAKICAgICAvLyBS
ZXR1cm4gdHJ1ZSBpZiB0aGUgY2hlY2tzIHBhc3MKLSAgICBib29sIGJpbmFyeU9wQ29tbW9uQ2hl
Y2soCi0gICAgICAgIFRPcGVyYXRvciBvcCwgVEludGVybVR5cGVkICpsZWZ0LCBUSW50ZXJtVHlw
ZWQgKnJpZ2h0LCBjb25zdCBUU291cmNlTG9jICZsb2MpOworICAgIGJvb2wgYmluYXJ5T3BDb21t
b25DaGVjayhUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRl
cm1UeXBlZCAqbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVk
ICpyaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAm
bG9jKTsKKworICAgIFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAqY3JlYXRlUHJvdG90eXBlTm9k
ZUZyb21GdW5jdGlvbihjb25zdCBURnVuY3Rpb24gJmZ1bmN0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291
cmNlTG9jICZsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbnNlcnRQYXJhbWV0ZXJzVG9TeW1ib2xUYWJs
ZSk7CiAKICAgICAvLyBTZXQgdG8gdHJ1ZSB3aGVuIHRoZSBsYXN0L2N1cnJlbnQgZGVjbGFyYXRv
ciBsaXN0IHdhcyBzdGFydGVkIHdpdGggYW4gZW1wdHkgZGVjbGFyYXRpb24uCiAgICAgYm9vbCBt
RGVmZXJyZWRTaW5nbGVEZWNsYXJhdGlvbkVycm9yQ2hlY2s7CiAKLSAgICBzaDo6R0xlbnVtIG1T
aGFkZXJUeXBlOyAgICAgICAgICAgICAgLy8gdmVydGV4IG9yIGZyYWdtZW50IGxhbmd1YWdlIChm
dXR1cmU6IHBhY2sgb3IgdW5wYWNrKQorICAgIHNoOjpHTGVudW0gbVNoYWRlclR5cGU7ICAgIC8v
IHZlcnRleCBvciBmcmFnbWVudCBsYW5ndWFnZSAoZnV0dXJlOiBwYWNrIG9yIHVucGFjaykKICAg
ICBTaFNoYWRlclNwZWMgbVNoYWRlclNwZWM7ICAvLyBUaGUgbGFuZ3VhZ2Ugc3BlY2lmaWNhdGlv
biBjb21waWxlciBjb25mb3JtcyB0byAtIEdMRVMyIG9yIFdlYkdMLgogICAgIFNoQ29tcGlsZU9w
dGlvbnMgbUNvbXBpbGVPcHRpb25zOyAgLy8gT3B0aW9ucyBwYXNzZWQgdG8gVENvbXBpbGVyCiAg
ICAgaW50IG1TaGFkZXJWZXJzaW9uOwotICAgIFRJbnRlcm1CbG9jayAqbVRyZWVSb290OyAgICAg
Ly8gcm9vdCBvZiBwYXJzZSB0cmVlIGJlaW5nIGNyZWF0ZWQKLSAgICBpbnQgbUxvb3BOZXN0aW5n
TGV2ZWw7ICAgICAgIC8vIDAgaWYgb3V0c2lkZSBhbGwgbG9vcHMKLSAgICBpbnQgbVN0cnVjdE5l
c3RpbmdMZXZlbDsgICAgIC8vIGluY3JlbWVudGVkIHdoaWxlIHBhcnNpbmcgYSBzdHJ1Y3QgZGVj
bGFyYXRpb24KLSAgICBpbnQgbVN3aXRjaE5lc3RpbmdMZXZlbDsgICAgIC8vIDAgaWYgb3V0c2lk
ZSBhbGwgc3dpdGNoIHN0YXRlbWVudHMKKyAgICBUSW50ZXJtQmxvY2sgKm1UcmVlUm9vdDsgIC8v
IHJvb3Qgb2YgcGFyc2UgdHJlZSBiZWluZyBjcmVhdGVkCisgICAgaW50IG1Mb29wTmVzdGluZ0xl
dmVsOyAgICAvLyAwIGlmIG91dHNpZGUgYWxsIGxvb3BzCisgICAgaW50IG1TdHJ1Y3ROZXN0aW5n
TGV2ZWw7ICAvLyBpbmNyZW1lbnRlZCB3aGlsZSBwYXJzaW5nIGEgc3RydWN0IGRlY2xhcmF0aW9u
CisgICAgaW50IG1Td2l0Y2hOZXN0aW5nTGV2ZWw7ICAvLyAwIGlmIG91dHNpZGUgYWxsIHN3aXRj
aCBzdGF0ZW1lbnRzCiAgICAgY29uc3QgVFR5cGUKLSAgICAgICAgKm1DdXJyZW50RnVuY3Rpb25U
eXBlOyAgIC8vIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUgZnVuY3Rpb24gdGhhdCdzIGN1cnJlbnRs
eSBiZWluZyBwYXJzZWQKLSAgICBib29sIG1GdW5jdGlvblJldHVybnNWYWx1ZTsgIC8vIHRydWUg
aWYgYSBub24tdm9pZCBmdW5jdGlvbiBoYXMgYSByZXR1cm4KKyAgICAgICAgKm1DdXJyZW50RnVu
Y3Rpb25UeXBlOyAgICAvLyB0aGUgcmV0dXJuIHR5cGUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQncyBj
dXJyZW50bHkgYmVpbmcgcGFyc2VkCisgICAgYm9vbCBtRnVuY3Rpb25SZXR1cm5zVmFsdWU7ICAg
Ly8gdHJ1ZSBpZiBhIG5vbi12b2lkIGZ1bmN0aW9uIGhhcyBhIHJldHVybgogICAgIGJvb2wgbUNo
ZWNrc1ByZWNpc2lvbkVycm9yczsgIC8vIHRydWUgaWYgYW4gZXJyb3Igd2lsbCBiZSBnZW5lcmF0
ZWQgd2hlbiBhIHZhcmlhYmxlIGlzIGRlY2xhcmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gd2l0aG91dCBwcmVjaXNpb24sIGV4cGxpY2l0IG9yIGltcGxpY2l0LgogICAg
IGJvb2wgbUZyYWdtZW50UHJlY2lzaW9uSGlnaE9uRVNTTDE7ICAvLyB0cnVlIGlmIGhpZ2hwIHBy
ZWNpc2lvbiBpcyBzdXBwb3J0ZWQgd2hlbiBjb21waWxpbmcKQEAgLTQyNiwyNSArNDU0LDM3IEBA
IGNsYXNzIFRQYXJzZUNvbnRleHQgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBUTGF5b3V0TWF0
cml4UGFja2luZyBtRGVmYXVsdE1hdHJpeFBhY2tpbmc7CiAgICAgVExheW91dEJsb2NrU3RvcmFn
ZSBtRGVmYXVsdEJsb2NrU3RvcmFnZTsKICAgICBUU3RyaW5nIG1IYXNoRXJyTXNnOwotICAgIFRE
aWFnbm9zdGljcyBtRGlhZ25vc3RpY3M7CisgICAgVERpYWdub3N0aWNzICptRGlhZ25vc3RpY3M7
CiAgICAgVERpcmVjdGl2ZUhhbmRsZXIgbURpcmVjdGl2ZUhhbmRsZXI7CiAgICAgcHA6OlByZXBy
b2Nlc3NvciBtUHJlcHJvY2Vzc29yOwogICAgIHZvaWQgKm1TY2FubmVyOwotICAgIGJvb2wgbVVz
ZXNGcmFnRGF0YTsgLy8gdHJhY2sgaWYgd2UgYXJlIHVzaW5nIGJvdGggZ2xfRnJhZ0RhdGEgYW5k
IGdsX0ZyYWdDb2xvcgorICAgIGJvb2wgbVVzZXNGcmFnRGF0YTsgIC8vIHRyYWNrIGlmIHdlIGFy
ZSB1c2luZyBib3RoIGdsX0ZyYWdEYXRhIGFuZCBnbF9GcmFnQ29sb3IKICAgICBib29sIG1Vc2Vz
RnJhZ0NvbG9yOwogICAgIGJvb2wgbVVzZXNTZWNvbmRhcnlPdXRwdXRzOyAgLy8gVHJhY2sgaWYg
d2UgYXJlIHVzaW5nIGVpdGhlciBnbF9TZWNvbmRhcnlGcmFnRGF0YSBvcgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gZ2xfU2Vjb25kYXJ5IEZyYWdDb2xvciBvciBib3RoLgog
ICAgIGludCBtTWluUHJvZ3JhbVRleGVsT2Zmc2V0OwogICAgIGludCBtTWF4UHJvZ3JhbVRleGVs
T2Zmc2V0OwogCisgICAgYm9vbCBtTXVsdGl2aWV3QXZhaWxhYmxlOworCiAgICAgLy8ga2VlcCB0
cmFjayBvZiBsb2NhbCBncm91cCBzaXplIGRlY2xhcmVkIGluIGxheW91dC4gSXQgc2hvdWxkIGJl
IGRlY2xhcmVkIG9ubHkgb25jZS4KICAgICBib29sIG1Db21wdXRlU2hhZGVyTG9jYWxTaXplRGVj
bGFyZWQ7CiAgICAgc2g6OldvcmtHcm91cFNpemUgbUNvbXB1dGVTaGFkZXJMb2NhbFNpemU7Cisg
ICAgLy8ga2VlcCB0cmFjayBvZiBudW1iZXIgb2Ygdmlld3MgZGVjbGFyZWQgaW4gbGF5b3V0Lgor
ICAgIGludCBtTnVtVmlld3M7CisgICAgaW50IG1NYXhOdW1WaWV3czsKKyAgICBpbnQgbU1heElt
YWdlVW5pdHM7CisgICAgaW50IG1NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzOworICAgIGlu
dCBtTWF4VW5pZm9ybUxvY2F0aW9uczsKICAgICAvLyBrZWVwcyB0cmFjayB3aGV0aGVyIHdlIGFy
ZSBkZWNsYXJpbmcgLyBkZWZpbmluZyBhIGZ1bmN0aW9uCiAgICAgYm9vbCBtRGVjbGFyaW5nRnVu
Y3Rpb247CiB9OwogCi1pbnQgUGFQYXJzZVN0cmluZ3MoCi0gICAgc2l6ZV90IGNvdW50LCBjb25z
dCBjaGFyICpjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdLCBUUGFyc2VDb250ZXh0
ICpjb250ZXh0KTsKK2ludCBQYVBhcnNlU3RyaW5ncyhzaXplX3QgY291bnQsCisgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqY29uc3Qgc3RyaW5nW10sCisgICAgICAgICAgICAgICAgICAg
Y29uc3QgaW50IGxlbmd0aFtdLAorICAgICAgICAgICAgICAgICAgIFRQYXJzZUNvbnRleHQgKmNv
bnRleHQpOworCit9ICAvLyBuYW1lc3BhY2Ugc2gKIAotI2VuZGlmIC8vIENPTVBJTEVSX1RSQU5T
TEFUT1JfUEFSU0VDT05URVhUX0hfCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUEFS
U0VDT05URVhUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9Qb29sQWxsb2MuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUG9vbEFsbG9jLmNwcAppbmRleCAzYjQ0YWZlMzM1OC4u
MGYxY2Q4YjVjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1Bvb2xBbGxvYy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUG9vbEFsbG9jLmNwcApAQCAtMzQsMTMgKzM0LDEz
IEBAIHZvaWQgRnJlZVBvb2xJbmRleCgpCiAgICAgUG9vbEluZGV4ID0gVExTX0lOVkFMSURfSU5E
RVg7CiB9CiAKLVRQb29sQWxsb2NhdG9yKiBHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCkKK1RQb29s
QWxsb2NhdG9yICpHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCkKIHsKICAgICBhc3NlcnQoUG9vbElu
ZGV4ICE9IFRMU19JTlZBTElEX0lOREVYKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VFBvb2xB
bGxvY2F0b3IqPihHZXRUTFNWYWx1ZShQb29sSW5kZXgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8VFBvb2xBbGxvY2F0b3IgKj4oR2V0VExTVmFsdWUoUG9vbEluZGV4KSk7CiB9CiAKLXZvaWQg
U2V0R2xvYmFsUG9vbEFsbG9jYXRvcihUUG9vbEFsbG9jYXRvciogcG9vbEFsbG9jYXRvcikKK3Zv
aWQgU2V0R2xvYmFsUG9vbEFsbG9jYXRvcihUUG9vbEFsbG9jYXRvciAqcG9vbEFsbG9jYXRvcikK
IHsKICAgICBhc3NlcnQoUG9vbEluZGV4ICE9IFRMU19JTlZBTElEX0lOREVYKTsKICAgICBTZXRU
TFNWYWx1ZShQb29sSW5kZXgsIHBvb2xBbGxvY2F0b3IpOwpAQCAtNjUsMTQgKzY1LDE0IEBAIFRQ
b29sQWxsb2NhdG9yOjpUUG9vbEFsbG9jYXRvcihpbnQgZ3Jvd3RoSW5jcmVtZW50LCBpbnQgYWxs
b2NhdGlvbkFsaWdubWVudCkKICAgICAvLyBBZGp1c3QgYWxpZ25tZW50IHRvIGJlIGF0IGxlYXN0
IHBvaW50ZXIgYWxpZ25lZCBhbmQKICAgICAvLyBwb3dlciBvZiAyLgogICAgIC8vCi0gICAgc2l6
ZV90IG1pbkFsaWduID0gc2l6ZW9mKHZvaWQqKTsKKyAgICBzaXplX3QgbWluQWxpZ24gPSBzaXpl
b2Yodm9pZCAqKTsKICAgICBhbGlnbm1lbnQgJj0gfihtaW5BbGlnbiAtIDEpOwogICAgIGlmIChh
bGlnbm1lbnQgPCBtaW5BbGlnbikKICAgICAgICAgYWxpZ25tZW50ID0gbWluQWxpZ247Ci0gICAg
c2l6ZV90IGEgPSAxOworICAgIHNpemVfdCBhICAgICAgPSAxOwogICAgIHdoaWxlIChhIDwgYWxp
Z25tZW50KQogICAgICAgICBhIDw8PSAxOwotICAgIGFsaWdubWVudCA9IGE7CisgICAgYWxpZ25t
ZW50ICAgICA9IGE7CiAgICAgYWxpZ25tZW50TWFzayA9IGEgLSAxOwogCiAjaWYgIWRlZmluZWQo
QU5HTEVfVFJBTlNMQVRPUl9ESVNBQkxFX1BPT0xfQUxMT0MpCkBAIC05Myw3ICs5Myw4IEBAIFRQ
b29sQWxsb2NhdG9yOjpUUG9vbEFsbG9jYXRvcihpbnQgZ3Jvd3RoSW5jcmVtZW50LCBpbnQgYWxs
b2NhdGlvbkFsaWdubWVudCkKICAgICAvLyBBbGlnbiBoZWFkZXIgc2tpcAogICAgIC8vCiAgICAg
aGVhZGVyU2tpcCA9IG1pbkFsaWduOwotICAgIGlmIChoZWFkZXJTa2lwIDwgc2l6ZW9mKHRIZWFk
ZXIpKSB7CisgICAgaWYgKGhlYWRlclNraXAgPCBzaXplb2YodEhlYWRlcikpCisgICAgewogICAg
ICAgICBoZWFkZXJTa2lwID0gKHNpemVvZih0SGVhZGVyKSArIGFsaWdubWVudE1hc2spICYgfmFs
aWdubWVudE1hc2s7CiAgICAgfQogI2Vsc2UgIC8vICFkZWZpbmVkKEFOR0xFX1RSQU5TTEFUT1Jf
RElTQUJMRV9QT09MX0FMTE9DKQpAQCAtMTA0LDEwICsxMDUsMTEgQEAgVFBvb2xBbGxvY2F0b3I6
OlRQb29sQWxsb2NhdG9yKGludCBncm93dGhJbmNyZW1lbnQsIGludCBhbGxvY2F0aW9uQWxpZ25t
ZW50KQogVFBvb2xBbGxvY2F0b3I6On5UUG9vbEFsbG9jYXRvcigpCiB7CiAjaWYgIWRlZmluZWQo
QU5HTEVfVFJBTlNMQVRPUl9ESVNBQkxFX1BPT0xfQUxMT0MpCi0gICAgd2hpbGUgKGluVXNlTGlz
dCkgewotICAgICAgICB0SGVhZGVyKiBuZXh0ID0gaW5Vc2VMaXN0LT5uZXh0UGFnZTsKKyAgICB3
aGlsZSAoaW5Vc2VMaXN0KQorICAgIHsKKyAgICAgICAgdEhlYWRlciAqbmV4dCA9IGluVXNlTGlz
dC0+bmV4dFBhZ2U7CiAgICAgICAgIGluVXNlTGlzdC0+fnRIZWFkZXIoKTsKLSAgICAgICAgZGVs
ZXRlIFtdIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGluVXNlTGlzdCk7CisgICAgICAgIGRlbGV0
ZVtdIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciAqPihpblVzZUxpc3QpOwogICAgICAgICBpblVzZUxp
c3QgPSBuZXh0OwogICAgIH0KIApAQCAtMTE1LDkgKzExNywxMCBAQCBUUG9vbEFsbG9jYXRvcjo6
flRQb29sQWxsb2NhdG9yKCkKICAgICAvLyBoZXJlLCBiZWNhdXNlIHdlIGRpZCBpdCBhbHJlYWR5
IHdoZW4gdGhlIGJsb2NrIHdhcwogICAgIC8vIHBsYWNlZCBpbnRvIHRoZSBmcmVlIGxpc3QuCiAg
ICAgLy8KLSAgICB3aGlsZSAoZnJlZUxpc3QpIHsKLSAgICAgICAgdEhlYWRlciogbmV4dCA9IGZy
ZWVMaXN0LT5uZXh0UGFnZTsKLSAgICAgICAgZGVsZXRlIFtdIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGZyZWVMaXN0KTsKKyAgICB3aGlsZSAoZnJlZUxpc3QpCisgICAgeworICAgICAgICB0SGVh
ZGVyICpuZXh0ID0gZnJlZUxpc3QtPm5leHRQYWdlOworICAgICAgICBkZWxldGVbXSByZWludGVy
cHJldF9jYXN0PGNoYXIgKj4oZnJlZUxpc3QpOwogICAgICAgICBmcmVlTGlzdCA9IG5leHQ7CiAg
ICAgfQogI2Vsc2UgIC8vICFkZWZpbmVkKEFOR0xFX1RSQU5TTEFUT1JfRElTQUJMRV9QT09MX0FM
TE9DKQpAQCAtMTM4LDI4ICsxNDEsMzIgQEAgY29uc3QgdW5zaWduZWQgY2hhciBUQWxsb2NhdGlv
bjo6Z3VhcmRCbG9ja0VuZFZhbCAgID0gMHhmZTsKIGNvbnN0IHVuc2lnbmVkIGNoYXIgVEFsbG9j
YXRpb246OnVzZXJEYXRhRmlsbCAgICAgICA9IDB4Y2Q7CiAKICNpZmRlZiBHVUFSRF9CTE9DS1MK
LSAgICBjb25zdCBzaXplX3QgVEFsbG9jYXRpb246Omd1YXJkQmxvY2tTaXplID0gMTY7Citjb25z
dCBzaXplX3QgVEFsbG9jYXRpb246Omd1YXJkQmxvY2tTaXplID0gMTY7CiAjZWxzZQotICAgIGNv
bnN0IHNpemVfdCBUQWxsb2NhdGlvbjo6Z3VhcmRCbG9ja1NpemUgPSAwOworY29uc3Qgc2l6ZV90
IFRBbGxvY2F0aW9uOjpndWFyZEJsb2NrU2l6ZSA9IDA7CiAjZW5kaWYKIAogLy8KIC8vIENoZWNr
IGEgc2luZ2xlIGd1YXJkIGJsb2NrIGZvciBkYW1hZ2UKIC8vCi12b2lkIFRBbGxvY2F0aW9uOjpj
aGVja0d1YXJkQmxvY2sodW5zaWduZWQgY2hhciogYmxvY2tNZW0sIHVuc2lnbmVkIGNoYXIgdmFs
LCBjb25zdCBjaGFyKiBsb2NUZXh0KSBjb25zdAordm9pZCBUQWxsb2NhdGlvbjo6Y2hlY2tHdWFy
ZEJsb2NrKHVuc2lnbmVkIGNoYXIgKmJsb2NrTWVtLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIgKmxvY1RleHQpIGNvbnN0CiB7CiAjaWZkZWYgR1VBUkRfQkxPQ0tT
Ci0gICAgZm9yIChzaXplX3QgeCA9IDA7IHggPCBndWFyZEJsb2NrU2l6ZTsgeCsrKSB7Ci0gICAg
ICAgIGlmIChibG9ja01lbVt4XSAhPSB2YWwpIHsKKyAgICBmb3IgKHNpemVfdCB4ID0gMDsgeCA8
IGd1YXJkQmxvY2tTaXplOyB4KyspCisgICAgeworICAgICAgICBpZiAoYmxvY2tNZW1beF0gIT0g
dmFsKQorICAgICAgICB7CiAgICAgICAgICAgICBjaGFyIGFzc2VydE1zZ1s4MF07CiAKLSAgICAg
ICAgICAgIC8vIFdlIGRvbid0IHByaW50IHRoZSBhc3NlcnQgbWVzc2FnZS4gIEl0J3MgaGVyZSBq
dXN0IHRvIGJlIGhlbHBmdWwuCisvLyBXZSBkb24ndCBwcmludCB0aGUgYXNzZXJ0IG1lc3NhZ2Uu
ICBJdCdzIGhlcmUganVzdCB0byBiZSBoZWxwZnVsLgogI2lmIGRlZmluZWQoX01TQ19WRVIpCi0g
ICAgICAgICAgICBzbnByaW50Zihhc3NlcnRNc2csIHNpemVvZihhc3NlcnRNc2cpLCAiUG9vbEFs
bG9jOiBEYW1hZ2UgJXMgJUl1IGJ5dGUgYWxsb2NhdGlvbiBhdCAweCVwXG4iLAotICAgICAgICAg
ICAgICAgICAgICBsb2NUZXh0LCBzaXplLCBkYXRhKCkpOworICAgICAgICAgICAgc25wcmludGYo
YXNzZXJ0TXNnLCBzaXplb2YoYXNzZXJ0TXNnKSwKKyAgICAgICAgICAgICAgICAgICAgICJQb29s
QWxsb2M6IERhbWFnZSAlcyAlSXUgYnl0ZSBhbGxvY2F0aW9uIGF0IDB4JXBcbiIsIGxvY1RleHQs
IHNpemUsIGRhdGEoKSk7CiAjZWxzZQotICAgICAgICAgICAgc25wcmludGYoYXNzZXJ0TXNnLCBz
aXplb2YoYXNzZXJ0TXNnKSwgIlBvb2xBbGxvYzogRGFtYWdlICVzICV6dSBieXRlIGFsbG9jYXRp
b24gYXQgMHglcFxuIiwKLSAgICAgICAgICAgICAgICAgICAgbG9jVGV4dCwgc2l6ZSwgZGF0YSgp
KTsKKyAgICAgICAgICAgIHNucHJpbnRmKGFzc2VydE1zZywgc2l6ZW9mKGFzc2VydE1zZyksCisg
ICAgICAgICAgICAgICAgICAgICAiUG9vbEFsbG9jOiBEYW1hZ2UgJXMgJXp1IGJ5dGUgYWxsb2Nh
dGlvbiBhdCAweCVwXG4iLCBsb2NUZXh0LCBzaXplLCBkYXRhKCkpOwogI2VuZGlmCiAgICAgICAg
ICAgICBhc3NlcnQoMCAmJiAiUG9vbEFsbG9jOiBEYW1hZ2UgaW4gZ3VhcmQgYmxvY2siKTsKICAg
ICAgICAgfQpAQCAtMTY3LDExICsxNzQsMTAgQEAgdm9pZCBUQWxsb2NhdGlvbjo6Y2hlY2tHdWFy
ZEJsb2NrKHVuc2lnbmVkIGNoYXIqIGJsb2NrTWVtLCB1bnNpZ25lZCBjaGFyIHZhbCwgY28KICNl
bmRpZgogfQogCi0KIHZvaWQgVFBvb2xBbGxvY2F0b3I6OnB1c2goKQogewogI2lmICFkZWZpbmVk
KEFOR0xFX1RSQU5TTEFUT1JfRElTQUJMRV9QT09MX0FMTE9DKQotICAgIHRBbGxvY1N0YXRlIHN0
YXRlID0geyBjdXJyZW50UGFnZU9mZnNldCwgaW5Vc2VMaXN0IH07CisgICAgdEFsbG9jU3RhdGUg
c3RhdGUgPSB7Y3VycmVudFBhZ2VPZmZzZXQsIGluVXNlTGlzdH07CiAKICAgICBtU3RhY2sucHVz
aF9iYWNrKHN0YXRlKTsKIApAQCAtMjAwLDE2ICsyMDYsMTggQEAgdm9pZCBUUG9vbEFsbG9jYXRv
cjo6cG9wKCkKICAgICB0SGVhZGVyICpwYWdlICAgICA9IG1TdGFjay5iYWNrKCkucGFnZTsKICAg
ICBjdXJyZW50UGFnZU9mZnNldCA9IG1TdGFjay5iYWNrKCkub2Zmc2V0OwogCi0gICAgd2hpbGUg
KGluVXNlTGlzdCAhPSBwYWdlKSB7CisgICAgd2hpbGUgKGluVXNlTGlzdCAhPSBwYWdlKQorICAg
IHsKICAgICAgICAgLy8gaW52b2tlIGRlc3RydWN0b3IgdG8gZnJlZSBhbGxvY2F0aW9uIGxpc3QK
ICAgICAgICAgaW5Vc2VMaXN0LT5+dEhlYWRlcigpOwotICAgICAgICAKLSAgICAgICAgdEhlYWRl
ciogbmV4dEluVXNlID0gaW5Vc2VMaXN0LT5uZXh0UGFnZTsKKworICAgICAgICB0SGVhZGVyICpu
ZXh0SW5Vc2UgPSBpblVzZUxpc3QtPm5leHRQYWdlOwogICAgICAgICBpZiAoaW5Vc2VMaXN0LT5w
YWdlQ291bnQgPiAxKQotICAgICAgICAgICAgZGVsZXRlIFtdIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hh
cio+KGluVXNlTGlzdCk7Ci0gICAgICAgIGVsc2UgeworICAgICAgICAgICAgZGVsZXRlW10gcmVp
bnRlcnByZXRfY2FzdDxjaGFyICo+KGluVXNlTGlzdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ewogICAgICAgICAgICAgaW5Vc2VMaXN0LT5uZXh0UGFnZSA9IGZyZWVMaXN0OwotICAgICAgICAg
ICAgZnJlZUxpc3QgPSBpblVzZUxpc3Q7CisgICAgICAgICAgICBmcmVlTGlzdCAgICAgICAgICAg
ID0gaW5Vc2VMaXN0OwogICAgICAgICB9CiAgICAgICAgIGluVXNlTGlzdCA9IG5leHRJblVzZTsK
ICAgICB9CkBAIC0yMzQsNyArMjQyLDcgQEAgdm9pZCBUUG9vbEFsbG9jYXRvcjo6cG9wQWxsKCkK
ICAgICAgICAgcG9wKCk7CiB9CiAKLXZvaWQqIFRQb29sQWxsb2NhdG9yOjphbGxvY2F0ZShzaXpl
X3QgbnVtQnl0ZXMpCit2b2lkICpUUG9vbEFsbG9jYXRvcjo6YWxsb2NhdGUoc2l6ZV90IG51bUJ5
dGVzKQogewogICAgIEFTU0VSVCghbUxvY2tlZCk7CiAKQEAgLTI1OSwxOCArMjY3LDIwIEBAIHZv
aWQqIFRQb29sQWxsb2NhdG9yOjphbGxvY2F0ZShzaXplX3QgbnVtQnl0ZXMpCiAgICAgLy8gRG8g
dGhlIGFsbG9jYXRpb24sIG1vc3QgbGlrZWx5IGNhc2UgZmlyc3QsIGZvciBlZmZpY2llbmN5Lgog
ICAgIC8vIFRoaXMgc3RlcCBjb3VsZCBiZSBtb3ZlZCB0byBiZSBpbmxpbmUgc29tZXRpbWUuCiAg
ICAgLy8KLSAgICBpZiAoYWxsb2NhdGlvblNpemUgPD0gcGFnZVNpemUgLSBjdXJyZW50UGFnZU9m
ZnNldCkgeworICAgIGlmIChhbGxvY2F0aW9uU2l6ZSA8PSBwYWdlU2l6ZSAtIGN1cnJlbnRQYWdl
T2Zmc2V0KQorICAgIHsKICAgICAgICAgLy8KICAgICAgICAgLy8gU2FmZSB0byBhbGxvY2F0ZSBm
cm9tIGN1cnJlbnRQYWdlT2Zmc2V0LgogICAgICAgICAvLwotICAgICAgICB1bnNpZ25lZCBjaGFy
KiBtZW1vcnkgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIgKj4oaW5Vc2VMaXN0KSAr
IGN1cnJlbnRQYWdlT2Zmc2V0OworICAgICAgICB1bnNpZ25lZCBjaGFyICptZW1vcnkgPSByZWlu
dGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIgKj4oaW5Vc2VMaXN0KSArIGN1cnJlbnRQYWdlT2Zm
c2V0OwogICAgICAgICBjdXJyZW50UGFnZU9mZnNldCArPSBhbGxvY2F0aW9uU2l6ZTsKICAgICAg
ICAgY3VycmVudFBhZ2VPZmZzZXQgPSAoY3VycmVudFBhZ2VPZmZzZXQgKyBhbGlnbm1lbnRNYXNr
KSAmIH5hbGlnbm1lbnRNYXNrOwogCiAgICAgICAgIHJldHVybiBpbml0aWFsaXplQWxsb2NhdGlv
bihpblVzZUxpc3QsIG1lbW9yeSwgbnVtQnl0ZXMpOwogICAgIH0KIAotICAgIGlmIChhbGxvY2F0
aW9uU2l6ZSA+IHBhZ2VTaXplIC0gaGVhZGVyU2tpcCkgeworICAgIGlmIChhbGxvY2F0aW9uU2l6
ZSA+IHBhZ2VTaXplIC0gaGVhZGVyU2tpcCkKKyAgICB7CiAgICAgICAgIC8vCiAgICAgICAgIC8v
IERvIGEgbXVsdGktcGFnZSBhbGxvY2F0aW9uLiAgRG9uJ3QgbWl4IHRoZXNlIHdpdGggdGhlIG90
aGVycy4KICAgICAgICAgLy8gVGhlIE9TIGlzIGVmZmljaWVudCBhbmQgYWxsb2NhdGluZyBhbmQg
ZnJlZS1pbmcgbXVsdGlwbGUgcGFnZXMuCkBAIC0yODAsMzkgKzI5MCw0MiBAQCB2b2lkKiBUUG9v
bEFsbG9jYXRvcjo6YWxsb2NhdGUoc2l6ZV90IG51bUJ5dGVzKQogICAgICAgICBpZiAobnVtQnl0
ZXNUb0FsbG9jIDwgYWxsb2NhdGlvblNpemUpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAg
ICAgICB0SGVhZGVyKiBtZW1vcnkgPSByZWludGVycHJldF9jYXN0PHRIZWFkZXIqPig6Om5ldyBj
aGFyW251bUJ5dGVzVG9BbGxvY10pOworICAgICAgICB0SGVhZGVyICptZW1vcnkgPSByZWludGVy
cHJldF9jYXN0PHRIZWFkZXIgKj4oOjpuZXcgY2hhcltudW1CeXRlc1RvQWxsb2NdKTsKICAgICAg
ICAgaWYgKG1lbW9yeSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgLy8g
VXNlIHBsYWNlbWVudC1uZXcgdG8gaW5pdGlhbGl6ZSBoZWFkZXIKLSAgICAgICAgbmV3KG1lbW9y
eSkgdEhlYWRlcihpblVzZUxpc3QsIChudW1CeXRlc1RvQWxsb2MgKyBwYWdlU2l6ZSAtIDEpIC8g
cGFnZVNpemUpOworICAgICAgICBuZXcgKG1lbW9yeSkgdEhlYWRlcihpblVzZUxpc3QsIChudW1C
eXRlc1RvQWxsb2MgKyBwYWdlU2l6ZSAtIDEpIC8gcGFnZVNpemUpOwogICAgICAgICBpblVzZUxp
c3QgPSBtZW1vcnk7CiAKICAgICAgICAgY3VycmVudFBhZ2VPZmZzZXQgPSBwYWdlU2l6ZTsgIC8v
IG1ha2UgbmV4dCBhbGxvY2F0aW9uIGNvbWUgZnJvbSBhIG5ldyBwYWdlCiAKICAgICAgICAgLy8g
Tm8gZ3VhcmQgYmxvY2tzIGZvciBtdWx0aS1wYWdlIGFsbG9jYXRpb25zICh5ZXQpCi0gICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4obWVtb3J5KSArIGhlYWRlclNraXApOworICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2Fz
dDx2b2lkICo+KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihtZW1vcnkpICsgaGVhZGVyU2tp
cCk7CiAgICAgfQogCiAgICAgLy8KICAgICAvLyBOZWVkIGEgc2ltcGxlIHBhZ2UgdG8gYWxsb2Nh
dGUgZnJvbS4KICAgICAvLwotICAgIHRIZWFkZXIqIG1lbW9yeTsKLSAgICBpZiAoZnJlZUxpc3Qp
IHsKLSAgICAgICAgbWVtb3J5ID0gZnJlZUxpc3Q7CisgICAgdEhlYWRlciAqbWVtb3J5OworICAg
IGlmIChmcmVlTGlzdCkKKyAgICB7CisgICAgICAgIG1lbW9yeSAgID0gZnJlZUxpc3Q7CiAgICAg
ICAgIGZyZWVMaXN0ID0gZnJlZUxpc3QtPm5leHRQYWdlOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IG1lbW9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dEhlYWRlcio+KDo6bmV3IGNoYXJbcGFnZVNpemVd
KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbWVtb3J5ID0gcmVpbnRlcnByZXRf
Y2FzdDx0SGVhZGVyICo+KDo6bmV3IGNoYXJbcGFnZVNpemVdKTsKICAgICAgICAgaWYgKG1lbW9y
eSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgLy8gVXNlIHBsYWNl
bWVudC1uZXcgdG8gaW5pdGlhbGl6ZSBoZWFkZXIKLSAgICBuZXcobWVtb3J5KSB0SGVhZGVyKGlu
VXNlTGlzdCwgMSk7CisgICAgbmV3IChtZW1vcnkpIHRIZWFkZXIoaW5Vc2VMaXN0LCAxKTsKICAg
ICBpblVzZUxpc3QgPSBtZW1vcnk7Ci0gICAgCi0gICAgdW5zaWduZWQgY2hhciogcmV0ID0gcmVp
bnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyICo+KGluVXNlTGlzdCkgKyBoZWFkZXJTa2lwOwot
ICAgIGN1cnJlbnRQYWdlT2Zmc2V0ID0gKGhlYWRlclNraXAgKyBhbGxvY2F0aW9uU2l6ZSArIGFs
aWdubWVudE1hc2spICYgfmFsaWdubWVudE1hc2s7CisKKyAgICB1bnNpZ25lZCBjaGFyICpyZXQg
PSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGNoYXIgKj4oaW5Vc2VMaXN0KSArIGhlYWRlclNr
aXA7CisgICAgY3VycmVudFBhZ2VPZmZzZXQgID0gKGhlYWRlclNraXAgKyBhbGxvY2F0aW9uU2l6
ZSArIGFsaWdubWVudE1hc2spICYgfmFsaWdubWVudE1hc2s7CiAKICAgICByZXR1cm4gaW5pdGlh
bGl6ZUFsbG9jYXRpb24oaW5Vc2VMaXN0LCByZXQsIG51bUJ5dGVzKTsKICNlbHNlICAvLyAhZGVm
aW5lZChBTkdMRV9UUkFOU0xBVE9SX0RJU0FCTEVfUE9PTF9BTExPQykKQEAgLTM0Miw2ICszNTUs
NiBAQCB2b2lkIFRQb29sQWxsb2NhdG9yOjp1bmxvY2soKQogLy8KIHZvaWQgVEFsbG9jYXRpb246
OmNoZWNrQWxsb2NMaXN0KCkgY29uc3QKIHsKLSAgICBmb3IgKGNvbnN0IFRBbGxvY2F0aW9uKiBh
bGxvYyA9IHRoaXM7IGFsbG9jICE9IDA7IGFsbG9jID0gYWxsb2MtPnByZXZBbGxvYykKKyAgICBm
b3IgKGNvbnN0IFRBbGxvY2F0aW9uICphbGxvYyA9IHRoaXM7IGFsbG9jICE9IDA7IGFsbG9jID0g
YWxsb2MtPnByZXZBbGxvYykKICAgICAgICAgYWxsb2MtPmNoZWNrKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Qb29sQWxs
b2MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Bv
b2xBbGxvYy5oCmluZGV4IGYxNWIzZTA1ZDg0Li5hZDYzYmM0Y2Q2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUG9vbEFsbG9jLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUG9v
bEFsbG9jLmgKQEAgLTEzLDggKzEzLDggQEAKIAogLy8KIC8vIFRoaXMgaGVhZGVyIGRlZmluZXMg
YW4gYWxsb2NhdG9yIHRoYXQgY2FuIGJlIHVzZWQgdG8gZWZmaWNpZW50bHkKLS8vIGFsbG9jYXRl
IGEgbGFyZ2UgbnVtYmVyIG9mIHNtYWxsIHJlcXVlc3RzIGZvciBoZWFwIG1lbW9yeSwgd2l0aCB0
aGUgCi0vLyBpbnRlbnRpb24gdGhhdCB0aGV5IGFyZSBub3QgaW5kaXZpZHVhbGx5IGRlYWxsb2Nh
dGVkLCBidXQgcmF0aGVyIAorLy8gYWxsb2NhdGUgYSBsYXJnZSBudW1iZXIgb2Ygc21hbGwgcmVx
dWVzdHMgZm9yIGhlYXAgbWVtb3J5LCB3aXRoIHRoZQorLy8gaW50ZW50aW9uIHRoYXQgdGhleSBh
cmUgbm90IGluZGl2aWR1YWxseSBkZWFsbG9jYXRlZCwgYnV0IHJhdGhlcgogLy8gY29sbGVjdGl2
ZWx5IGRlYWxsb2NhdGVkIGF0IG9uZSB0aW1lLgogLy8KIC8vIFRoaXMgc2ltdWx0YW5lb3VzbHkK
QEAgLTM4LDUzICszOCw1OCBAQAogLy8gSWYgd2UgYXJlIHVzaW5nIGd1YXJkIGJsb2Nrcywgd2Ug
bXVzdCB0cmFjayBlYWNoIGluZGl2dWFsCiAvLyBhbGxvY2F0aW9uLiAgSWYgd2UgYXJlbid0IHVz
aW5nIGd1YXJkIGJsb2NrcywgdGhlc2UKIC8vIG5ldmVyIGdldCBpbnN0YW50aWF0ZWQsIHNvIHdv
bid0IGhhdmUgYW55IGltcGFjdC4KLS8vIAotCi1jbGFzcyBUQWxsb2NhdGlvbiB7Ci1wdWJsaWM6
Ci0gICAgVEFsbG9jYXRpb24oc2l6ZV90IHNpemUsIHVuc2lnbmVkIGNoYXIqIG1lbSwgVEFsbG9j
YXRpb24qIHByZXYgPSAwKSA6Ci0gICAgICAgIHNpemUoc2l6ZSksIG1lbShtZW0pLCBwcmV2QWxs
b2MocHJldikgewotICAgICAgICAvLyBBbGxvY2F0aW9ucyBhcmUgYnJhY2tldGVkOgotICAgICAg
ICAvLyAgICBbYWxsb2NhdGlvbkhlYWRlcl1baW5pdGlhbEd1YXJkQmxvY2tdW3VzZXJEYXRhXVtm
aW5hbEd1YXJkQmxvY2tdCi0gICAgICAgIC8vIFRoaXMgd291bGQgYmUgY2xlYW5lciB3aXRoIGlm
IChndWFyZEJsb2NrU2l6ZSkuLi4sIGJ1dCB0aGF0Ci0gICAgICAgIC8vIG1ha2VzIHRoZSBjb21w
aWxlciBwcmludCB3YXJuaW5ncyBhYm91dCAwIGxlbmd0aCBtZW1zZXRzLAotICAgICAgICAvLyBl
dmVuIHdpdGggdGhlIGlmKCkgcHJvdGVjdGluZyB0aGVtLgorLy8KKworY2xhc3MgVEFsbG9jYXRp
b24KK3sKKyAgcHVibGljOgorICAgIFRBbGxvY2F0aW9uKHNpemVfdCBzaXplLCB1bnNpZ25lZCBj
aGFyICptZW0sIFRBbGxvY2F0aW9uICpwcmV2ID0gMCkKKyAgICAgICAgOiBzaXplKHNpemUpLCBt
ZW0obWVtKSwgcHJldkFsbG9jKHByZXYpCisgICAgeworLy8gQWxsb2NhdGlvbnMgYXJlIGJyYWNr
ZXRlZDoKKy8vICAgIFthbGxvY2F0aW9uSGVhZGVyXVtpbml0aWFsR3VhcmRCbG9ja11bdXNlckRh
dGFdW2ZpbmFsR3VhcmRCbG9ja10KKy8vIFRoaXMgd291bGQgYmUgY2xlYW5lciB3aXRoIGlmIChn
dWFyZEJsb2NrU2l6ZSkuLi4sIGJ1dCB0aGF0CisvLyBtYWtlcyB0aGUgY29tcGlsZXIgcHJpbnQg
d2FybmluZ3MgYWJvdXQgMCBsZW5ndGggbWVtc2V0cywKKy8vIGV2ZW4gd2l0aCB0aGUgaWYoKSBw
cm90ZWN0aW5nIHRoZW0uCiAjaWZkZWYgR1VBUkRfQkxPQ0tTCiAgICAgICAgIG1lbXNldChwcmVH
dWFyZCgpLCBndWFyZEJsb2NrQmVnaW5WYWwsIGd1YXJkQmxvY2tTaXplKTsKLSAgICAgICAgbWVt
c2V0KGRhdGEoKSwgICAgICB1c2VyRGF0YUZpbGwsICAgICAgIHNpemUpOwotICAgICAgICBtZW1z
ZXQocG9zdEd1YXJkKCksIGd1YXJkQmxvY2tFbmRWYWwsICAgZ3VhcmRCbG9ja1NpemUpOworICAg
ICAgICBtZW1zZXQoZGF0YSgpLCB1c2VyRGF0YUZpbGwsIHNpemUpOworICAgICAgICBtZW1zZXQo
cG9zdEd1YXJkKCksIGd1YXJkQmxvY2tFbmRWYWwsIGd1YXJkQmxvY2tTaXplKTsKICNlbmRpZgog
ICAgIH0KIAotICAgIHZvaWQgY2hlY2soKSBjb25zdCB7Ci0gICAgICAgIGNoZWNrR3VhcmRCbG9j
ayhwcmVHdWFyZCgpLCAgZ3VhcmRCbG9ja0JlZ2luVmFsLCAiYmVmb3JlIik7Ci0gICAgICAgIGNo
ZWNrR3VhcmRCbG9jayhwb3N0R3VhcmQoKSwgZ3VhcmRCbG9ja0VuZFZhbCwgICAiYWZ0ZXIiKTsK
KyAgICB2b2lkIGNoZWNrKCkgY29uc3QKKyAgICB7CisgICAgICAgIGNoZWNrR3VhcmRCbG9jayhw
cmVHdWFyZCgpLCBndWFyZEJsb2NrQmVnaW5WYWwsICJiZWZvcmUiKTsKKyAgICAgICAgY2hlY2tH
dWFyZEJsb2NrKHBvc3RHdWFyZCgpLCBndWFyZEJsb2NrRW5kVmFsLCAiYWZ0ZXIiKTsKICAgICB9
CiAKICAgICB2b2lkIGNoZWNrQWxsb2NMaXN0KCkgY29uc3Q7CiAKICAgICAvLyBSZXR1cm4gdG90
YWwgc2l6ZSBuZWVkZWQgdG8gYWNjb21vZGF0ZSB1c2VyIGJ1ZmZlciBvZiAnc2l6ZScsCiAgICAg
Ly8gcGx1cyBvdXIgdHJhY2tpbmcgZGF0YS4KLSAgICBpbmxpbmUgc3RhdGljIHNpemVfdCBhbGxv
Y2F0aW9uU2l6ZShzaXplX3Qgc2l6ZSkgeworICAgIGlubGluZSBzdGF0aWMgc2l6ZV90IGFsbG9j
YXRpb25TaXplKHNpemVfdCBzaXplKQorICAgIHsKICAgICAgICAgcmV0dXJuIHNpemUgKyAyICog
Z3VhcmRCbG9ja1NpemUgKyBoZWFkZXJTaXplKCk7CiAgICAgfQogCiAgICAgLy8gT2Zmc2V0IGZy
b20gc3Vycm91bmRpbmcgYnVmZmVyIHRvIGdldCB0byB1c2VyIGRhdGEgYnVmZmVyLgotICAgIGlu
bGluZSBzdGF0aWMgdW5zaWduZWQgY2hhciogb2Zmc2V0QWxsb2NhdGlvbih1bnNpZ25lZCBjaGFy
KiBtKSB7CisgICAgaW5saW5lIHN0YXRpYyB1bnNpZ25lZCBjaGFyICpvZmZzZXRBbGxvY2F0aW9u
KHVuc2lnbmVkIGNoYXIgKm0pCisgICAgewogICAgICAgICByZXR1cm4gbSArIGd1YXJkQmxvY2tT
aXplICsgaGVhZGVyU2l6ZSgpOwogICAgIH0KIAotcHJpdmF0ZToKLSAgICB2b2lkIGNoZWNrR3Vh
cmRCbG9jayh1bnNpZ25lZCBjaGFyKiBibG9ja01lbSwgdW5zaWduZWQgY2hhciB2YWwsIGNvbnN0
IGNoYXIqIGxvY1RleHQpIGNvbnN0OworICBwcml2YXRlOgorICAgIHZvaWQgY2hlY2tHdWFyZEJs
b2NrKHVuc2lnbmVkIGNoYXIgKmJsb2NrTWVtLCB1bnNpZ25lZCBjaGFyIHZhbCwgY29uc3QgY2hh
ciAqbG9jVGV4dCkgY29uc3Q7CiAKICAgICAvLyBGaW5kIG9mZnNldHMgdG8gcHJlIGFuZCBwb3N0
IGd1YXJkIGJsb2NrcywgYW5kIHVzZXIgZGF0YSBidWZmZXIKLSAgICB1bnNpZ25lZCBjaGFyKiBw
cmVHdWFyZCgpICBjb25zdCB7IHJldHVybiBtZW0gKyBoZWFkZXJTaXplKCk7IH0KLSAgICB1bnNp
Z25lZCBjaGFyKiBkYXRhKCkgICAgICBjb25zdCB7IHJldHVybiBwcmVHdWFyZCgpICsgZ3VhcmRC
bG9ja1NpemU7IH0KLSAgICB1bnNpZ25lZCBjaGFyKiBwb3N0R3VhcmQoKSBjb25zdCB7IHJldHVy
biBkYXRhKCkgKyBzaXplOyB9CisgICAgdW5zaWduZWQgY2hhciAqcHJlR3VhcmQoKSBjb25zdCB7
IHJldHVybiBtZW0gKyBoZWFkZXJTaXplKCk7IH0KKyAgICB1bnNpZ25lZCBjaGFyICpkYXRhKCkg
Y29uc3QgeyByZXR1cm4gcHJlR3VhcmQoKSArIGd1YXJkQmxvY2tTaXplOyB9CisgICAgdW5zaWdu
ZWQgY2hhciAqcG9zdEd1YXJkKCkgY29uc3QgeyByZXR1cm4gZGF0YSgpICsgc2l6ZTsgfQogCi0g
ICAgc2l6ZV90IHNpemU7ICAgICAgICAgICAgICAgICAgLy8gc2l6ZSBvZiB0aGUgdXNlciBkYXRh
IGFyZWEKLSAgICB1bnNpZ25lZCBjaGFyKiBtZW07ICAgICAgICAgICAvLyBiZWdpbm5pbmcgb2Yg
b3VyIGFsbG9jYXRpb24gKHB0cyB0byBoZWFkZXIpCi0gICAgVEFsbG9jYXRpb24qIHByZXZBbGxv
YzsgICAgICAgLy8gcHJpb3IgYWxsb2NhdGlvbiBpbiB0aGUgY2hhaW4KKyAgICBzaXplX3Qgc2l6
ZTsgICAgICAgICAgICAgLy8gc2l6ZSBvZiB0aGUgdXNlciBkYXRhIGFyZWEKKyAgICB1bnNpZ25l
ZCBjaGFyICptZW07ICAgICAgLy8gYmVnaW5uaW5nIG9mIG91ciBhbGxvY2F0aW9uIChwdHMgdG8g
aGVhZGVyKQorICAgIFRBbGxvY2F0aW9uICpwcmV2QWxsb2M7ICAvLyBwcmlvciBhbGxvY2F0aW9u
IGluIHRoZSBjaGFpbgogCiAgICAgLy8gU3VwcG9ydCBNU1ZDKysgNi4wCiAgICAgY29uc3Qgc3Rh
dGljIHVuc2lnbmVkIGNoYXIgZ3VhcmRCbG9ja0JlZ2luVmFsOwpAQCAtMTAxLDcgKzEwNiw3IEBA
IHByaXZhdGU6CiAKIC8vCiAvLyBUaGVyZSBhcmUgc2V2ZXJhbCBzdGFja3MuICBPbmUgaXMgdG8g
dHJhY2sgdGhlIHB1c2hpbmcgYW5kIHBvcHBpbmcKLS8vIG9mIHRoZSB1c2VyLCBhbmQgbm90IHll
dCBpbXBsZW1lbnRlZC4gIFRoZSBvdGhlcnMgYXJlIHNpbXBseSBhIAorLy8gb2YgdGhlIHVzZXIs
IGFuZCBub3QgeWV0IGltcGxlbWVudGVkLiAgVGhlIG90aGVycyBhcmUgc2ltcGx5IGEKIC8vIHJl
cG9zaXRvcmllcyBvZiBmcmVlIHBhZ2VzIG9yIHVzZWQgcGFnZXMuCiAvLwogLy8gUGFnZSBzdGFj
a3MgYXJlIGxpbmtlZCB0b2dldGhlciB3aXRoIGEgc2ltcGxlIGhlYWRlciBhdCB0aGUgYmVnaW5u
aW5nCkBAIC0xMTAsMTIgKzExNSwxMyBAQCBwcml2YXRlOgogLy8gcmUtdXNlLgogLy8KIC8vIFRo
ZSAicGFnZSBzaXplIiB1c2VkIGlzIG5vdCwgbm9yIG11c3QgaXQgbWF0Y2gsIHRoZSB1bmRlcmx5
aW5nIE9TCi0vLyBwYWdlIHNpemUuICBCdXQsIGhhdmluZyBpdCBiZSBhYm91dCB0aGF0IHNpemUg
b3IgZXF1YWwgdG8gYSBzZXQgb2YgCisvLyBwYWdlIHNpemUuICBCdXQsIGhhdmluZyBpdCBiZSBh
Ym91dCB0aGF0IHNpemUgb3IgZXF1YWwgdG8gYSBzZXQgb2YKIC8vIHBhZ2VzIGlzIGxpa2VseSBt
b3N0IG9wdGltYWwuCiAvLwotY2xhc3MgVFBvb2xBbGxvY2F0b3IgewotcHVibGljOgotICAgIFRQ
b29sQWxsb2NhdG9yKGludCBncm93dGhJbmNyZW1lbnQgPSA4KjEwMjQsIGludCBhbGxvY2F0aW9u
QWxpZ25tZW50ID0gMTYpOworY2xhc3MgVFBvb2xBbGxvY2F0b3IKK3sKKyAgcHVibGljOgorICAg
IFRQb29sQWxsb2NhdG9yKGludCBncm93dGhJbmNyZW1lbnQgPSA4ICogMTAyNCwgaW50IGFsbG9j
YXRpb25BbGlnbm1lbnQgPSAxNik7CiAKICAgICAvLwogICAgIC8vIERvbid0IGNhbGwgdGhlIGRl
c3RydWN0b3IganVzdCB0byBmcmVlIHVwIHRoZSBtZW1vcnksIGNhbGwgcG9wKCkKQEAgLTE0Myw3
ICsxNDksNyBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbCBhbGxvY2F0ZSgpIHRvIGFjdHVhbGx5IGFj
cXVpcmUgbWVtb3J5LiAgUmV0dXJucyAwIGlmIG5vIG1lbW9yeQogICAgIC8vIGF2YWlsYWJsZSwg
b3RoZXJ3aXNlIGEgcHJvcGVybHkgYWxpZ25lZCBwb2ludGVyIHRvICdudW1CeXRlcycgb2YgbWVt
b3J5LgogICAgIC8vCi0gICAgdm9pZCogYWxsb2NhdGUoc2l6ZV90IG51bUJ5dGVzKTsKKyAgICB2
b2lkICphbGxvY2F0ZShzaXplX3QgbnVtQnl0ZXMpOwogCiAgICAgLy8KICAgICAvLyBUaGVyZSBp
cyBubyBkZWFsbG9jYXRlLiAgVGhlIHBvaW50IG9mIHRoaXMgY2xhc3MgaXMgdGhhdApAQCAtMTY0
LDc1ICsxNzAsODAgQEAgcHVibGljOgogCiAjaWYgIWRlZmluZWQoQU5HTEVfVFJBTlNMQVRPUl9E
SVNBQkxFX1BPT0xfQUxMT0MpCiAgICAgZnJpZW5kIHN0cnVjdCB0SGVhZGVyOwotICAgIAotICAg
IHN0cnVjdCB0SGVhZGVyIHsKLSAgICAgICAgdEhlYWRlcih0SGVhZGVyKiBuZXh0UGFnZSwgc2l6
ZV90IHBhZ2VDb3VudCkgOgotICAgICAgICAgICAgbmV4dFBhZ2UobmV4dFBhZ2UpLAotICAgICAg
ICAgICAgcGFnZUNvdW50KHBhZ2VDb3VudCkKKworICAgIHN0cnVjdCB0SGVhZGVyCisgICAgewor
ICAgICAgICB0SGVhZGVyKHRIZWFkZXIgKm5leHRQYWdlLCBzaXplX3QgcGFnZUNvdW50KQorICAg
ICAgICAgICAgOiBuZXh0UGFnZShuZXh0UGFnZSksCisgICAgICAgICAgICAgIHBhZ2VDb3VudChw
YWdlQ291bnQpCiAjaWZkZWYgR1VBUkRfQkxPQ0tTCi0gICAgICAgICAgLCBsYXN0QWxsb2NhdGlv
bigwKQorICAgICAgICAgICAgICAsCisgICAgICAgICAgICAgIGxhc3RBbGxvY2F0aW9uKDApCiAj
ZW5kaWYKLSAgICAgICAgICAgIHsgfQorICAgICAgICB7CisgICAgICAgIH0KIAotICAgICAgICB+
dEhlYWRlcigpIHsKKyAgICAgICAgfnRIZWFkZXIoKQorICAgICAgICB7CiAjaWZkZWYgR1VBUkRf
QkxPQ0tTCiAgICAgICAgICAgICBpZiAobGFzdEFsbG9jYXRpb24pCiAgICAgICAgICAgICAgICAg
bGFzdEFsbG9jYXRpb24tPmNoZWNrQWxsb2NMaXN0KCk7CiAjZW5kaWYKICAgICAgICAgfQogCi0g
ICAgICAgIHRIZWFkZXIqIG5leHRQYWdlOworICAgICAgICB0SGVhZGVyICpuZXh0UGFnZTsKICAg
ICAgICAgc2l6ZV90IHBhZ2VDb3VudDsKICNpZmRlZiBHVUFSRF9CTE9DS1MKLSAgICAgICAgVEFs
bG9jYXRpb24qIGxhc3RBbGxvY2F0aW9uOworICAgICAgICBUQWxsb2NhdGlvbiAqbGFzdEFsbG9j
YXRpb247CiAjZW5kaWYKICAgICB9OwogCi0gICAgc3RydWN0IHRBbGxvY1N0YXRlIHsKKyAgICBz
dHJ1Y3QgdEFsbG9jU3RhdGUKKyAgICB7CiAgICAgICAgIHNpemVfdCBvZmZzZXQ7Ci0gICAgICAg
IHRIZWFkZXIqIHBhZ2U7CisgICAgICAgIHRIZWFkZXIgKnBhZ2U7CiAgICAgfTsKICAgICB0eXBl
ZGVmIHN0ZDo6dmVjdG9yPHRBbGxvY1N0YXRlPiB0QWxsb2NTdGFjazsKIAogICAgIC8vIFRyYWNr
IGFsbG9jYXRpb25zIGlmIGFuZCBvbmx5IGlmIHdlJ3JlIHVzaW5nIGd1YXJkIGJsb2NrcwotICAg
IHZvaWQqIGluaXRpYWxpemVBbGxvY2F0aW9uKHRIZWFkZXIqIGJsb2NrLCB1bnNpZ25lZCBjaGFy
KiBtZW1vcnksIHNpemVfdCBudW1CeXRlcykgeworICAgIHZvaWQgKmluaXRpYWxpemVBbGxvY2F0
aW9uKHRIZWFkZXIgKmJsb2NrLCB1bnNpZ25lZCBjaGFyICptZW1vcnksIHNpemVfdCBudW1CeXRl
cykKKyAgICB7CiAjaWZkZWYgR1VBUkRfQkxPQ0tTCi0gICAgICAgIG5ldyhtZW1vcnkpIFRBbGxv
Y2F0aW9uKG51bUJ5dGVzLCBtZW1vcnksIGJsb2NrLT5sYXN0QWxsb2NhdGlvbik7Ci0gICAgICAg
IGJsb2NrLT5sYXN0QWxsb2NhdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8VEFsbG9jYXRpb24qPiht
ZW1vcnkpOworICAgICAgICBuZXcgKG1lbW9yeSkgVEFsbG9jYXRpb24obnVtQnl0ZXMsIG1lbW9y
eSwgYmxvY2stPmxhc3RBbGxvY2F0aW9uKTsKKyAgICAgICAgYmxvY2stPmxhc3RBbGxvY2F0aW9u
ID0gcmVpbnRlcnByZXRfY2FzdDxUQWxsb2NhdGlvbiAqPihtZW1vcnkpOwogI2VuZGlmCiAgICAg
ICAgIC8vIFRoaXMgaXMgb3B0aW1pemVkIGVudGlyZWx5IGF3YXkgaWYgR1VBUkRfQkxPQ0tTIGlz
IG5vdCBkZWZpbmVkLgogICAgICAgICByZXR1cm4gVEFsbG9jYXRpb246Om9mZnNldEFsbG9jYXRp
b24obWVtb3J5KTsKICAgICB9CiAKLSAgICBzaXplX3QgcGFnZVNpemU7ICAgICAgICAvLyBncmFu
dWxhcml0eSBvZiBhbGxvY2F0aW9uIGZyb20gdGhlIE9TCi0gICAgc2l6ZV90IGhlYWRlclNraXA7
ICAgICAgLy8gYW1vdW50IG9mIG1lbW9yeSB0byBza2lwIHRvIG1ha2Ugcm9vbSBmb3IgdGhlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICBoZWFkZXIgKGJhc2ljYWxseSwgc2l6
ZSBvZiBoZWFkZXIsIHJvdW5kZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAg
IHVwIHRvIG1ha2UgaXQgYWxpZ25lZAorICAgIHNpemVfdCBwYWdlU2l6ZTsgICAgICAgICAgIC8v
IGdyYW51bGFyaXR5IG9mIGFsbG9jYXRpb24gZnJvbSB0aGUgT1MKKyAgICBzaXplX3QgaGVhZGVy
U2tpcDsgICAgICAgICAvLyBhbW91bnQgb2YgbWVtb3J5IHRvIHNraXAgdG8gbWFrZSByb29tIGZv
ciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgIGhlYWRlciAoYmFz
aWNhbGx5LCBzaXplIG9mIGhlYWRlciwgcm91bmRlZAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vICAgICAgdXAgdG8gbWFrZSBpdCBhbGlnbmVkCiAgICAgc2l6ZV90IGN1cnJlbnRQ
YWdlT2Zmc2V0OyAgLy8gbmV4dCBvZmZzZXQgaW4gdG9wIG9mIGluVXNlTGlzdCB0byBhbGxvY2F0
ZSBmcm9tCi0gICAgdEhlYWRlciogZnJlZUxpc3Q7ICAgICAgLy8gbGlzdCBvZiBwb3BwZWQgbWVt
b3J5Ci0gICAgdEhlYWRlciogaW5Vc2VMaXN0OyAgICAgLy8gbGlzdCBvZiBhbGwgbWVtb3J5IGN1
cnJlbnRseSBiZWluZyB1c2VkCi0gICAgdEFsbG9jU3RhY2sgbVN0YWNrOyAgICAgLy8gc3RhY2sg
b2Ygd2hlcmUgdG8gYWxsb2NhdGUgZnJvbSwgdG8gcGFydGl0aW9uIHBvb2wKKyAgICB0SGVhZGVy
ICpmcmVlTGlzdDsgICAgICAgICAvLyBsaXN0IG9mIHBvcHBlZCBtZW1vcnkKKyAgICB0SGVhZGVy
ICppblVzZUxpc3Q7ICAgICAgICAvLyBsaXN0IG9mIGFsbCBtZW1vcnkgY3VycmVudGx5IGJlaW5n
IHVzZWQKKyAgICB0QWxsb2NTdGFjayBtU3RhY2s7ICAgICAgICAvLyBzdGFjayBvZiB3aGVyZSB0
byBhbGxvY2F0ZSBmcm9tLCB0byBwYXJ0aXRpb24gcG9vbAogCi0gICAgaW50IG51bUNhbGxzOyAg
ICAgICAgICAgLy8ganVzdCBhbiBpbnRlcmVzdGluZyBzdGF0aXN0aWMKLSAgICBzaXplX3QgdG90
YWxCeXRlczsgICAgICAvLyBqdXN0IGFuIGludGVyZXN0aW5nIHN0YXRpc3RpYworICAgIGludCBu
dW1DYWxsczsgICAgICAgLy8ganVzdCBhbiBpbnRlcmVzdGluZyBzdGF0aXN0aWMKKyAgICBzaXpl
X3QgdG90YWxCeXRlczsgIC8vIGp1c3QgYW4gaW50ZXJlc3Rpbmcgc3RhdGlzdGljCiAKICNlbHNl
ICAvLyAhZGVmaW5lZChBTkdMRV9UUkFOU0xBVE9SX0RJU0FCTEVfUE9PTF9BTExPQykKICAgICBz
dGQ6OnZlY3RvcjxzdGQ6OnZlY3Rvcjx2b2lkICo+PiBtU3RhY2s7CiAjZW5kaWYKIAotICAgIFRQ
b29sQWxsb2NhdG9yJiBvcGVyYXRvcj0oY29uc3QgVFBvb2xBbGxvY2F0b3ImKTsgIC8vIGRvbnQg
YWxsb3cgYXNzaWdubWVudCBvcGVyYXRvcgotICAgIFRQb29sQWxsb2NhdG9yKGNvbnN0IFRQb29s
QWxsb2NhdG9yJik7ICAvLyBkb250IGFsbG93IGRlZmF1bHQgY29weSBjb25zdHJ1Y3RvcgorICAg
IFRQb29sQWxsb2NhdG9yICZvcGVyYXRvcj0oY29uc3QgVFBvb2xBbGxvY2F0b3IgJik7ICAvLyBk
b250IGFsbG93IGFzc2lnbm1lbnQgb3BlcmF0b3IKKyAgICBUUG9vbEFsbG9jYXRvcihjb25zdCBU
UG9vbEFsbG9jYXRvciAmKTsgICAgICAgICAgICAgLy8gZG9udCBhbGxvdyBkZWZhdWx0IGNvcHkg
Y29uc3RydWN0b3IKICAgICBib29sIG1Mb2NrZWQ7CiB9OwogCi0KIC8vCiAvLyBUaGVyZSBjb3Vs
ZCBwb3RlbnRpYWxseSBiZSBtYW55IHBvb2xzIHdpdGggcG9wcyBoYXBwZW5pbmcgYXQKIC8vIGRp
ZmZlcmVudCB0aW1lcy4gIEJ1dCBhIHNpbXBsZSB1c2UgaXMgdG8gaGF2ZSBhIGdsb2JhbCBwb3AK
IC8vIHdpdGggZXZlcnlvbmUgdXNpbmcgdGhlIHNhbWUgZ2xvYmFsIGFsbG9jYXRvci4KIC8vCi1l
eHRlcm4gVFBvb2xBbGxvY2F0b3IqIEdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKTsKLWV4dGVybiB2
b2lkIFNldEdsb2JhbFBvb2xBbGxvY2F0b3IoVFBvb2xBbGxvY2F0b3IqIHBvb2xBbGxvY2F0b3Ip
OworZXh0ZXJuIFRQb29sQWxsb2NhdG9yICpHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCk7CitleHRl
cm4gdm9pZCBTZXRHbG9iYWxQb29sQWxsb2NhdG9yKFRQb29sQWxsb2NhdG9yICpwb29sQWxsb2Nh
dG9yKTsKIAogLy8KIC8vIFRoaXMgU1RMIGNvbXBhdGlibGUgYWxsb2NhdG9yIGlzIGludGVuZGVk
IHRvIGJlIHVzZWQgYXMgdGhlIGFsbG9jYXRvcgpAQCAtMjQxLDYzICsyNTIsNjggQEAgZXh0ZXJu
IHZvaWQgU2V0R2xvYmFsUG9vbEFsbG9jYXRvcihUUG9vbEFsbG9jYXRvciogcG9vbEFsbG9jYXRv
cik7CiAvLyBJdCB3aWxsIHVzZSB0aGUgcG9vbHMgZm9yIGFsbG9jYXRpb24sIGFuZCBub3QKIC8v
IGRvIGFueSBkZWFsbG9jYXRpb24sIGJ1dCB3aWxsIHN0aWxsIGRvIGRlc3RydWN0aW9uLgogLy8K
LXRlbXBsYXRlPGNsYXNzIFQ+Ci1jbGFzcyBwb29sX2FsbG9jYXRvciB7Ci1wdWJsaWM6Cit0ZW1w
bGF0ZSA8Y2xhc3MgVD4KK2NsYXNzIHBvb2xfYWxsb2NhdG9yCit7CisgIHB1YmxpYzoKICAgICB0
eXBlZGVmIHNpemVfdCBzaXplX3R5cGU7CiAgICAgdHlwZWRlZiBwdHJkaWZmX3QgZGlmZmVyZW5j
ZV90eXBlOwotICAgIHR5cGVkZWYgVCogcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNvbnN0IFQqIGNv
bnN0X3BvaW50ZXI7Ci0gICAgdHlwZWRlZiBUJiByZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBjb25z
dCBUJiBjb25zdF9yZWZlcmVuY2U7CisgICAgdHlwZWRlZiBUICpwb2ludGVyOworICAgIHR5cGVk
ZWYgY29uc3QgVCAqY29uc3RfcG9pbnRlcjsKKyAgICB0eXBlZGVmIFQgJnJlZmVyZW5jZTsKKyAg
ICB0eXBlZGVmIGNvbnN0IFQgJmNvbnN0X3JlZmVyZW5jZTsKICAgICB0eXBlZGVmIFQgdmFsdWVf
dHlwZTsKIAotICAgIHRlbXBsYXRlPGNsYXNzIE90aGVyPiAKLSAgICBzdHJ1Y3QgcmViaW5kIHsK
KyAgICB0ZW1wbGF0ZSA8Y2xhc3MgT3RoZXI+CisgICAgc3RydWN0IHJlYmluZAorICAgIHsKICAg
ICAgICAgdHlwZWRlZiBwb29sX2FsbG9jYXRvcjxPdGhlcj4gb3RoZXI7CiAgICAgfTsKICAgICBw
b2ludGVyIGFkZHJlc3MocmVmZXJlbmNlIHgpIGNvbnN0IHsgcmV0dXJuICZ4OyB9CiAgICAgY29u
c3RfcG9pbnRlciBhZGRyZXNzKGNvbnN0X3JlZmVyZW5jZSB4KSBjb25zdCB7IHJldHVybiAmeDsg
fQogCi0gICAgcG9vbF9hbGxvY2F0b3IoKSB7IH0KKyAgICBwb29sX2FsbG9jYXRvcigpIHt9CiAK
LSAgICB0ZW1wbGF0ZTxjbGFzcyBPdGhlcj4KLSAgICBwb29sX2FsbG9jYXRvcihjb25zdCBwb29s
X2FsbG9jYXRvcjxPdGhlcj4mIHApIHsgfQorICAgIHRlbXBsYXRlIDxjbGFzcyBPdGhlcj4KKyAg
ICBwb29sX2FsbG9jYXRvcihjb25zdCBwb29sX2FsbG9jYXRvcjxPdGhlcj4gJnApCisgICAgewor
ICAgIH0KIAogICAgIHRlbXBsYXRlIDxjbGFzcyBPdGhlcj4KLSAgICBwb29sX2FsbG9jYXRvcjxU
PiYgb3BlcmF0b3I9KGNvbnN0IHBvb2xfYWxsb2NhdG9yPE90aGVyPiYgcCkgeyByZXR1cm4gKnRo
aXM7IH0KKyAgICBwb29sX2FsbG9jYXRvcjxUPiAmb3BlcmF0b3I9KGNvbnN0IHBvb2xfYWxsb2Nh
dG9yPE90aGVyPiAmcCkKKyAgICB7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CiAKICNp
ZiBkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiAhZGVmaW5lZChfUldTVERfQUxMT0NBVE9SKQogICAg
IC8vIGxpYkNTdGQgb24gc29tZSBwbGF0Zm9ybXMgaGF2ZSBhIGRpZmZlcmVudCBhbGxvY2F0ZS9k
ZWFsbG9jYXRlIGludGVyZmFjZS4KICAgICAvLyBDYWxsZXIgcHJlLWJha2VzIHNpemVvZihUKSBp
bnRvICduJyB3aGljaCBpcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGJlCiAgICAgLy8gYWxsb2Nh
dGVkLCBub3QgdGhlIG51bWJlciBvZiBlbGVtZW50cy4KLSAgICB2b2lkKiBhbGxvY2F0ZShzaXpl
X3R5cGUgbikgeyAKLSAgICAgICAgcmV0dXJuIGdldEFsbG9jYXRvcigpLmFsbG9jYXRlKG4pOwot
ICAgIH0KLSAgICB2b2lkKiBhbGxvY2F0ZShzaXplX3R5cGUgbiwgY29uc3Qgdm9pZCopIHsKLSAg
ICAgICAgcmV0dXJuIGdldEFsbG9jYXRvcigpLmFsbG9jYXRlKG4pOwotICAgIH0KLSAgICB2b2lk
IGRlYWxsb2NhdGUodm9pZCosIHNpemVfdHlwZSkge30KKyAgICB2b2lkICphbGxvY2F0ZShzaXpl
X3R5cGUgbikgeyByZXR1cm4gZ2V0QWxsb2NhdG9yKCkuYWxsb2NhdGUobik7IH0KKyAgICB2b2lk
ICphbGxvY2F0ZShzaXplX3R5cGUgbiwgY29uc3Qgdm9pZCAqKSB7IHJldHVybiBnZXRBbGxvY2F0
b3IoKS5hbGxvY2F0ZShuKTsgfQorICAgIHZvaWQgZGVhbGxvY2F0ZSh2b2lkICosIHNpemVfdHlw
ZSkge30KICNlbHNlCi0gICAgcG9pbnRlciBhbGxvY2F0ZShzaXplX3R5cGUgbikgeyAKKyAgICBw
b2ludGVyIGFsbG9jYXRlKHNpemVfdHlwZSBuKQorICAgIHsKICAgICAgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8cG9pbnRlcj4oZ2V0QWxsb2NhdG9yKCkuYWxsb2NhdGUobiAqIHNpemVvZihU
KSkpOwogICAgIH0KLSAgICBwb2ludGVyIGFsbG9jYXRlKHNpemVfdHlwZSBuLCBjb25zdCB2b2lk
KikgeyAKKyAgICBwb2ludGVyIGFsbG9jYXRlKHNpemVfdHlwZSBuLCBjb25zdCB2b2lkICopCisg
ICAgewogICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxwb2ludGVyPihnZXRBbGxvY2F0
b3IoKS5hbGxvY2F0ZShuICogc2l6ZW9mKFQpKSk7CiAgICAgfQogICAgIHZvaWQgZGVhbGxvY2F0
ZShwb2ludGVyLCBzaXplX3R5cGUpIHt9CiAjZW5kaWYgIC8vIF9SV1NURF9BTExPQ0FUT1IKIAot
ICAgIHZvaWQgY29uc3RydWN0KHBvaW50ZXIgcCwgY29uc3QgVCYgdmFsKSB7IG5ldyAoKHZvaWQg
KilwKSBUKHZhbCk7IH0KKyAgICB2b2lkIGNvbnN0cnVjdChwb2ludGVyIHAsIGNvbnN0IFQgJnZh
bCkgeyBuZXcgKCh2b2lkICopcCkgVCh2YWwpOyB9CiAgICAgdm9pZCBkZXN0cm95KHBvaW50ZXIg
cCkgeyBwLT5UOjp+VCgpOyB9CiAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgcG9vbF9hbGxv
Y2F0b3ImIHJocykgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBwb29sX2FsbG9jYXRvciYgcmhzKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBwb29sX2FsbG9jYXRvciAmcmhzKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHBvb2xfYWxsb2NhdG9yICZyaHMpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KC0xKSAvIHNpemVvZihUKTsgfQogICAgIHNp
emVfdHlwZSBtYXhfc2l6ZShpbnQgc2l6ZSkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6
ZV90eXBlPigtMSkgLyBzaXplOyB9CiAKLSAgICBUUG9vbEFsbG9jYXRvciYgZ2V0QWxsb2NhdG9y
KCkgY29uc3QgeyByZXR1cm4gKkdldEdsb2JhbFBvb2xBbGxvY2F0b3IoKTsgfQorICAgIFRQb29s
QWxsb2NhdG9yICZnZXRBbGxvY2F0b3IoKSBjb25zdCB7IHJldHVybiAqR2V0R2xvYmFsUG9vbEFs
bG9jYXRvcigpOyB9CiB9OwogCi0jZW5kaWYgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9QT09MQUxM
T0NfSF8KKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9QT09MQUxMT0NfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1By
YWdtYS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
UHJhZ21hLmgKaW5kZXggNTdiMTEzNDk3MDYuLjhjNDE5ZmMxN2UzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QcmFnbWEuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QcmFnbWEu
aApAQCAtMTEsMTcgKzExLDE2IEBAIHN0cnVjdCBUUHJhZ21hCiB7CiAgICAgc3RydWN0IFNUREdM
CiAgICAgewotICAgICAgICBTVERHTCgpIDogaW52YXJpYW50QWxsKGZhbHNlKSB7IH0KKyAgICAg
ICAgU1RER0woKSA6IGludmFyaWFudEFsbChmYWxzZSkge30KIAogICAgICAgICBib29sIGludmFy
aWFudEFsbDsKICAgICB9OwogCi0KICAgICAvLyBCeSBkZWZhdWx0IG9wdGltaXphdGlvbiBpcyB0
dXJuZWQgb24gYW5kIGRlYnVnIGlzIHR1cm5lZCBvZmYuCiAgICAgLy8gUHJlY2lzaW9uIGVtdWxh
dGlvbiBpcyB0dXJuZWQgb24gYnkgZGVmYXVsdCwgYnV0IGhhcyBubyBlZmZlY3QgdW5sZXNzCiAg
ICAgLy8gdGhlIGV4dGVuc2lvbiBpcyBlbmFibGVkLgotICAgIFRQcmFnbWEoKSA6IG9wdGltaXpl
KHRydWUpLCBkZWJ1ZyhmYWxzZSksIGRlYnVnU2hhZGVyUHJlY2lzaW9uKHRydWUpIHsgfQotICAg
IFRQcmFnbWEoYm9vbCBvLCBib29sIGQpIDogb3B0aW1pemUobyksIGRlYnVnKGQpLCBkZWJ1Z1No
YWRlclByZWNpc2lvbih0cnVlKSB7IH0KKyAgICBUUHJhZ21hKCkgOiBvcHRpbWl6ZSh0cnVlKSwg
ZGVidWcoZmFsc2UpLCBkZWJ1Z1NoYWRlclByZWNpc2lvbih0cnVlKSB7fQorICAgIFRQcmFnbWEo
Ym9vbCBvLCBib29sIGQpIDogb3B0aW1pemUobyksIGRlYnVnKGQpLCBkZWJ1Z1NoYWRlclByZWNp
c2lvbih0cnVlKSB7fQogCiAgICAgYm9vbCBvcHRpbWl6ZTsKICAgICBib29sIGRlYnVnOwpAQCAt
MjksNCArMjgsNCBAQCBzdHJ1Y3QgVFByYWdtYQogICAgIFNUREdMIHN0ZGdsOwogfTsKIAotI2Vu
ZGlmIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUFJBR01BX0hfCisjZW5kaWYgIC8vIENPTVBJTEVS
X1RSQU5TTEFUT1JfUFJBR01BX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QcnVuZUVtcHR5RGVjbGFyYXRpb25zLmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BydW5lRW1wdHlE
ZWNsYXJhdGlvbnMuY3BwCmluZGV4IDQ3NjNkZDZlZGVkLi5mZDBlYjQxZjNiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUHJ1bmVF
bXB0eURlY2xhcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvUHJ1bmVFbXB0eURlY2xhcmF0aW9ucy5jcHAKQEAgLTMsMTIgKzMs
MTYgQEAKIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAv
LwotLy8gVGhlIFBydW5lRW1wdHlEZWNsYXJhdGlvbnMgZnVuY3Rpb24gcHJ1bmVzIHVubmVjZXNz
YXJ5IGVtcHR5IGRlY2xhcmF0aW9ucyBhbmQgZGVjbGFyYXRvcnMgZnJvbSB0aGUgQVNULgorLy8g
VGhlIFBydW5lRW1wdHlEZWNsYXJhdGlvbnMgZnVuY3Rpb24gcHJ1bmVzIHVubmVjZXNzYXJ5IGVt
cHR5IGRlY2xhcmF0aW9ucyBhbmQgZGVjbGFyYXRvcnMgZnJvbQorLy8gdGhlIEFTVC4KIAogI2lu
Y2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUHJ1bmVFbXB0eURlY2xhcmF0aW9ucy5oIgogCiAj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCiAKK25hbWVzcGFjZSBz
aAoreworCiBuYW1lc3BhY2UKIHsKIApAQCAtMTYsOSArMjAsMTAgQEAgY2xhc3MgUHJ1bmVFbXB0
eURlY2xhcmF0aW9uc1RyYXZlcnNlciA6IHByaXZhdGUgVEludGVybVRyYXZlcnNlcgogewogICBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgYXBwbHkoVEludGVybU5vZGUgKnJvb3QpOworCiAgIHBy
aXZhdGU6CiAgICAgUHJ1bmVFbXB0eURlY2xhcmF0aW9uc1RyYXZlcnNlcigpOwotICAgIGJvb2wg
dmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlOwor
ICAgIGJvb2wgdmlzaXREZWNsYXJhdGlvbihWaXNpdCwgVEludGVybURlY2xhcmF0aW9uICpub2Rl
KSBvdmVycmlkZTsKIH07CiAKIHZvaWQgUHJ1bmVFbXB0eURlY2xhcmF0aW9uc1RyYXZlcnNlcjo6
YXBwbHkoVEludGVybU5vZGUgKnJvb3QpCkBAIC0zMyw3OSArMzgsNzggQEAgUHJ1bmVFbXB0eURl
Y2xhcmF0aW9uc1RyYXZlcnNlcjo6UHJ1bmVFbXB0eURlY2xhcmF0aW9uc1RyYXZlcnNlcigpCiB7
CiB9CiAKLWJvb2wgUHJ1bmVFbXB0eURlY2xhcmF0aW9uc1RyYXZlcnNlcjo6dmlzaXRBZ2dyZWdh
dGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCitib29sIFBydW5lRW1wdHlEZWNsYXJh
dGlvbnNUcmF2ZXJzZXI6OnZpc2l0RGVjbGFyYXRpb24oVmlzaXQsIFRJbnRlcm1EZWNsYXJhdGlv
biAqbm9kZSkKIHsKLSAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BEZWNsYXJhdGlvbikKKyAg
ICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKKyAgICBp
ZiAoc2VxdWVuY2UtPnNpemUoKSA+PSAxKQogICAgIHsKLSAgICAgICAgVEludGVybVNlcXVlbmNl
ICpzZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7Ci0gICAgICAgIGlmIChzZXF1ZW5jZS0+
c2l6ZSgpID49IDEpCisgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bSA9IHNlcXVlbmNlLT5mcm9u
dCgpLT5nZXRBc1N5bWJvbE5vZGUoKTsKKyAgICAgICAgLy8gUHJ1bmUgZGVjbGFyYXRpb25zIHdp
dGhvdXQgYSB2YXJpYWJsZSBuYW1lLCB1bmxlc3MgaXQncyBhbiBpbnRlcmZhY2UgYmxvY2sgZGVj
bGFyYXRpb24uCisgICAgICAgIGlmIChzeW0gIT0gbnVsbHB0ciAmJiBzeW0tPmdldFN5bWJvbCgp
ID09ICIiICYmICFzeW0tPmlzSW50ZXJmYWNlQmxvY2soKSkKICAgICAgICAgewotICAgICAgICAg
ICAgVEludGVybVN5bWJvbCAqc3ltID0gc2VxdWVuY2UtPmZyb250KCktPmdldEFzU3ltYm9sTm9k
ZSgpOwotICAgICAgICAgICAgLy8gUHJ1bmUgZGVjbGFyYXRpb25zIHdpdGhvdXQgYSB2YXJpYWJs
ZSBuYW1lLCB1bmxlc3MgaXQncyBhbiBpbnRlcmZhY2UgYmxvY2sgZGVjbGFyYXRpb24uCi0gICAg
ICAgICAgICBpZiAoc3ltICE9IG51bGxwdHIgJiYgc3ltLT5nZXRTeW1ib2woKSA9PSAiIiAmJiAh
c3ltLT5pc0ludGVyZmFjZUJsb2NrKCkpCisgICAgICAgICAgICBpZiAoc2VxdWVuY2UtPnNpemUo
KSA+IDEpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKHNlcXVlbmNlLT5zaXpl
KCkgPiAxKQorICAgICAgICAgICAgICAgIC8vIEdlbmVyYXRlIGEgcmVwbGFjZW1lbnQgdGhhdCB3
aWxsIHJlbW92ZSB0aGUgZW1wdHkgZGVjbGFyYXRvciBpbiB0aGUgYmVnaW5uaW5nIG9mCisgICAg
ICAgICAgICAgICAgLy8gYSBkZWNsYXJhdG9yIGxpc3QuIEV4YW1wbGUgb2YgYSBkZWNsYXJhdGlv
biB0aGF0IHdpbGwgYmUgY2hhbmdlZDoKKyAgICAgICAgICAgICAgICAvLyBmbG9hdCwgYTsKKyAg
ICAgICAgICAgICAgICAvLyB3aWxsIGJlIGNoYW5nZWQgdG8KKyAgICAgICAgICAgICAgICAvLyBm
bG9hdCBhOworICAgICAgICAgICAgICAgIC8vIFRoaXMgYXBwbGllcyBhbHNvIHRvIHN0cnVjdCBk
ZWNsYXJhdGlvbnMuCisgICAgICAgICAgICAgICAgVEludGVybVNlcXVlbmNlIGVtcHR5UmVwbGFj
ZW1lbnQ7CisgICAgICAgICAgICAgICAgbU11bHRpUmVwbGFjZW1lbnRzLnB1c2hfYmFjaygKKyAg
ICAgICAgICAgICAgICAgICAgTm9kZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRyeShub2RlLCBzeW0s
IGVtcHR5UmVwbGFjZW1lbnQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYg
KHN5bS0+Z2V0QmFzaWNUeXBlKCkgIT0gRWJ0U3RydWN0KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIC8vIFNpbmdsZSBzdHJ1Y3QgZGVjbGFyYXRpb25zIG1heSBqdXN0IGRlY2xhcmUg
dGhlIHN0cnVjdCB0eXBlIGFuZCBubyB2YXJpYWJsZXMsIHNvCisgICAgICAgICAgICAgICAgLy8g
dGhleSBzaG91bGQgbm90IGJlIHBydW5lZC4gQWxsIG90aGVyIHNpbmdsZSBlbXB0eSBkZWNsYXJh
dGlvbnMgY2FuIGJlIHBydW5lZAorICAgICAgICAgICAgICAgIC8vIGVudGlyZWx5LiBFeGFtcGxl
IG9mIGFuIGVtcHR5IGRlY2xhcmF0aW9uIHRoYXQgd2lsbCBiZSBwcnVuZWQ6CisgICAgICAgICAg
ICAgICAgLy8gZmxvYXQ7CisgICAgICAgICAgICAgICAgVEludGVybVNlcXVlbmNlIGVtcHR5UmVw
bGFjZW1lbnQ7CisgICAgICAgICAgICAgICAgVEludGVybUJsb2NrICpwYXJlbnRBc0Jsb2NrID0g
Z2V0UGFyZW50Tm9kZSgpLT5nZXRBc0Jsb2NrKCk7CisgICAgICAgICAgICAgICAgLy8gVGhlIGRl
Y2xhcmF0aW9uIG1heSBiZSBpbnNpZGUgYSBibG9jayBvciBpbiBhIGxvb3AgaW5pdCBleHByZXNz
aW9uLgorICAgICAgICAgICAgICAgIEFTU0VSVChwYXJlbnRBc0Jsb2NrICE9IG51bGxwdHIgfHwg
Z2V0UGFyZW50Tm9kZSgpLT5nZXRBc0xvb3BOb2RlKCkgIT0gbnVsbHB0cik7CisgICAgICAgICAg
ICAgICAgaWYgKHBhcmVudEFzQmxvY2spCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAvLyBHZW5lcmF0ZSBhIHJlcGxhY2VtZW50IHRoYXQgd2lsbCByZW1vdmUgdGhlIGVt
cHR5IGRlY2xhcmF0b3IgaW4gdGhlIGJlZ2lubmluZyBvZiBhIGRlY2xhcmF0b3IKLSAgICAgICAg
ICAgICAgICAgICAgLy8gbGlzdC4gRXhhbXBsZSBvZiBhIGRlY2xhcmF0aW9uIHRoYXQgd2lsbCBi
ZSBjaGFuZ2VkOgotICAgICAgICAgICAgICAgICAgICAvLyBmbG9hdCwgYTsKLSAgICAgICAgICAg
ICAgICAgICAgLy8gd2lsbCBiZSBjaGFuZ2VkIHRvCi0gICAgICAgICAgICAgICAgICAgIC8vIGZs
b2F0IGE7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgYXBwbGllcyBhbHNvIHRvIHN0cnVj
dCBkZWNsYXJhdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBlbXB0
eVJlcGxhY2VtZW50OwotICAgICAgICAgICAgICAgICAgICBtTXVsdGlSZXBsYWNlbWVudHMucHVz
aF9iYWNrKE5vZGVSZXBsYWNlV2l0aE11bHRpcGxlRW50cnkobm9kZSwgc3ltLCBlbXB0eVJlcGxh
Y2VtZW50KSk7CisgICAgICAgICAgICAgICAgICAgIG1NdWx0aVJlcGxhY2VtZW50cy5wdXNoX2Jh
Y2soCisgICAgICAgICAgICAgICAgICAgICAgICBOb2RlUmVwbGFjZVdpdGhNdWx0aXBsZUVudHJ5
KHBhcmVudEFzQmxvY2ssIG5vZGUsIGVtcHR5UmVwbGFjZW1lbnQpKTsKICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc3ltLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRT
dHJ1Y3QpCisgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgLy8gU2luZ2xlIHN0cnVjdCBkZWNsYXJhdGlvbnMgbWF5IGp1c3QgZGVjbGFy
ZSB0aGUgc3RydWN0IHR5cGUgYW5kIG5vIHZhcmlhYmxlcywgc28gdGhleSBzaG91bGQKLSAgICAg
ICAgICAgICAgICAgICAgLy8gbm90IGJlIHBydW5lZC4gQWxsIG90aGVyIHNpbmdsZSBlbXB0eSBk
ZWNsYXJhdGlvbnMgY2FuIGJlIHBydW5lZCBlbnRpcmVseS4gRXhhbXBsZSBvZiBhbiBlbXB0eQot
ICAgICAgICAgICAgICAgICAgICAvLyBkZWNsYXJhdGlvbiB0aGF0IHdpbGwgYmUgcHJ1bmVkOgot
ICAgICAgICAgICAgICAgICAgICAvLyBmbG9hdDsKLSAgICAgICAgICAgICAgICAgICAgVEludGVy
bVNlcXVlbmNlIGVtcHR5UmVwbGFjZW1lbnQ7Ci0gICAgICAgICAgICAgICAgICAgIFRJbnRlcm1C
bG9jayAqcGFyZW50QXNCbG9jayA9IGdldFBhcmVudE5vZGUoKS0+Z2V0QXNCbG9jaygpOwotICAg
ICAgICAgICAgICAgICAgICAvLyBUaGUgZGVjbGFyYXRpb24gbWF5IGJlIGluc2lkZSBhIGJsb2Nr
IG9yIGluIGEgbG9vcCBpbml0IGV4cHJlc3Npb24uCi0gICAgICAgICAgICAgICAgICAgIEFTU0VS
VChwYXJlbnRBc0Jsb2NrICE9IG51bGxwdHIgfHwgZ2V0UGFyZW50Tm9kZSgpLT5nZXRBc0xvb3BO
b2RlKCkgIT0gbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRBc0Jsb2Nr
KQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtTXVsdGlS
ZXBsYWNlbWVudHMucHVzaF9iYWNrKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGVS
ZXBsYWNlV2l0aE11bHRpcGxlRW50cnkocGFyZW50QXNCbG9jaywgbm9kZSwgZW1wdHlSZXBsYWNl
bWVudCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgcXVldWVSZXBs
YWNlbWVudChub2RlLCBudWxscHRyLCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQpOwotICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9k
ZSwgbnVsbHB0ciwgT3JpZ2luYWxOb2RlOjpJU19EUk9QUEVEKTsKICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc3ltLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkg
IT0gRXZxR2xvYmFsICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3ltLT5nZXRUeXBlKCku
Z2V0UXVhbGlmaWVyKCkgIT0gRXZxVGVtcG9yYXJ5KQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgLy8gV2UndmUgaGl0IGFuIGVtcHR5IHN0cnVjdCBkZWNsYXJhdGlvbiB3
aXRoIGEgcXVhbGlmaWVyLCBmb3IgZXhhbXBsZSBsaWtlCi0gICAgICAgICAgICAgICAgICAgIC8v
IHRoaXM6Ci0gICAgICAgICAgICAgICAgICAgIC8vIGNvbnN0IHN0cnVjdCBhIHsgaW50IGk7IH07
Ci0gICAgICAgICAgICAgICAgICAgIC8vIE5WSURJQSBHTCBkcml2ZXIgdmVyc2lvbiAzNjcuMjcg
ZG9lc24ndCBhY2NlcHQgdGhpcyBraW5kIG9mIGRlY2xhcmF0aW9ucywgc28KLSAgICAgICAgICAg
ICAgICAgICAgLy8gd2UgY29udmVydCB0aGUgZGVjbGFyYXRpb24gdG8gYSByZWd1bGFyIHN0cnVj
dCBkZWNsYXJhdGlvbi4gVGhpcyBpcyBva2F5LAotICAgICAgICAgICAgICAgICAgICAvLyBzaW5j
ZSBFU1NMIDEuMDAgc3BlYyBzZWN0aW9uIDQuMS44IHNheXMgYWJvdXQgc3RydWN0cyB0aGF0ICJU
aGUgb3B0aW9uYWwKLSAgICAgICAgICAgICAgICAgICAgLy8gcXVhbGlmaWVycyBvbmx5IGFwcGx5
IHRvIGFueSBkZWNsYXJhdG9ycywgYW5kIGFyZSBub3QgcGFydCBvZiB0aGUgdHlwZSBiZWluZwot
ICAgICAgICAgICAgICAgICAgICAvLyBkZWZpbmVkIGZvciBuYW1lLiIKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGVsc2UgaWYgKHN5bS0+Z2V0VHlwZSgpLmdldFF1YWxpZmllcigpICE9IEV2
cUdsb2JhbCAmJgorICAgICAgICAgICAgICAgICAgICAgc3ltLT5nZXRUeXBlKCkuZ2V0UXVhbGlm
aWVyKCkgIT0gRXZxVGVtcG9yYXJ5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8v
IFdlJ3ZlIGhpdCBhbiBlbXB0eSBzdHJ1Y3QgZGVjbGFyYXRpb24gd2l0aCBhIHF1YWxpZmllciwg
Zm9yIGV4YW1wbGUgbGlrZQorICAgICAgICAgICAgICAgIC8vIHRoaXM6CisgICAgICAgICAgICAg
ICAgLy8gY29uc3Qgc3RydWN0IGEgeyBpbnQgaTsgfTsKKyAgICAgICAgICAgICAgICAvLyBOVklE
SUEgR0wgZHJpdmVyIHZlcnNpb24gMzY3LjI3IGRvZXNuJ3QgYWNjZXB0IHRoaXMga2luZCBvZiBk
ZWNsYXJhdGlvbnMsIHNvCisgICAgICAgICAgICAgICAgLy8gd2UgY29udmVydCB0aGUgZGVjbGFy
YXRpb24gdG8gYSByZWd1bGFyIHN0cnVjdCBkZWNsYXJhdGlvbi4gVGhpcyBpcyBva2F5LAorICAg
ICAgICAgICAgICAgIC8vIHNpbmNlIEVTU0wgMS4wMCBzcGVjIHNlY3Rpb24gNC4xLjggc2F5cyBh
Ym91dCBzdHJ1Y3RzIHRoYXQgIlRoZSBvcHRpb25hbAorICAgICAgICAgICAgICAgIC8vIHF1YWxp
ZmllcnMgb25seSBhcHBseSB0byBhbnkgZGVjbGFyYXRvcnMsIGFuZCBhcmUgbm90IHBhcnQgb2Yg
dGhlIHR5cGUgYmVpbmcKKyAgICAgICAgICAgICAgICAvLyBkZWZpbmVkIGZvciBuYW1lLiIKIAot
ICAgICAgICAgICAgICAgICAgICBpZiAobUluR2xvYmFsU2NvcGUpCi0gICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5bS0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0
UXVhbGlmaWVyKEV2cUdsb2JhbCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzeW0tPmdldFR5cGVQb2ludGVyKCktPnNldFF1YWxpZmllcihFdnFUZW1wb3JhcnkpOwot
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1Jbkdsb2JhbFNjb3Bl
KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgc3ltLT5nZXRUeXBlUG9p
bnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxR2xvYmFsKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
c3ltLT5nZXRUeXBlUG9pbnRlcigpLT5zZXRRdWFsaWZpZXIoRXZxVGVtcG9yYXJ5KTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLX0g
Ly8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UKIAogdm9pZCBQcnVuZUVtcHR5RGVjbGFyYXRp
b25zKFRJbnRlcm1Ob2RlICpyb290KQogewogICAgIFBydW5lRW1wdHlEZWNsYXJhdGlvbnNUcmF2
ZXJzZXI6OmFwcGx5KHJvb3QpOwogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BydW5lRW1w
dHlEZWNsYXJhdGlvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1BydW5lRW1wdHlEZWNsYXJhdGlvbnMuaAppbmRleCAxMjJlODMwOTAyMi4uZjky
ODk3ODAxMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1BydW5lRW1wdHlEZWNsYXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QcnVuZUVtcHR5RGVjbGFyYXRpb25z
LmgKQEAgLTMsMTMgKzMsMTcgQEAKIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCiAvLwotLy8gVGhlIFBydW5lRW1wdHlEZWNsYXJhdGlvbnMgZnVuY3Rpb24g
cHJ1bmVzIHVubmVjZXNzYXJ5IGVtcHR5IGRlY2xhcmF0aW9ucyBhbmQgZGVjbGFyYXRvcnMgZnJv
bSB0aGUgQVNULgorLy8gVGhlIFBydW5lRW1wdHlEZWNsYXJhdGlvbnMgZnVuY3Rpb24gcHJ1bmVz
IHVubmVjZXNzYXJ5IGVtcHR5IGRlY2xhcmF0aW9ucyBhbmQgZGVjbGFyYXRvcnMgZnJvbQorLy8g
dGhlIEFTVC4KIAogI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX1BSVU5FRU1QVFlERUNMQVJB
VElPTlNfSF8KICNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9QUlVORUVNUFRZREVDTEFSQVRJ
T05TX0hfCiAKK25hbWVzcGFjZSBzaAorewogY2xhc3MgVEludGVybU5vZGU7CiAKIHZvaWQgUHJ1
bmVFbXB0eURlY2xhcmF0aW9ucyhUSW50ZXJtTm9kZSAqcm9vdCk7Cit9CiAKICNlbmRpZiAgLy8g
Q09NUElMRVJfVFJBTlNMQVRPUl9QUlVORUVNUFRZREVDTEFSQVRJT05TX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9QcnVuZVB1
cmVMaXRlcmFsU3RhdGVtZW50cy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9QcnVuZVB1cmVMaXRlcmFsU3RhdGVtZW50cy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjVkZWY1YTBmYjIyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUHJ1
bmVQdXJlTGl0ZXJhbFN0YXRlbWVudHMuY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8vCisvLyBDb3B5
cmlnaHQgKGMpIDIwMTcgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisv
LworLy8gUHJ1bmVQdXJlTGl0ZXJhbFN0YXRlbWVudHMuY3BwOiBSZW1vdmVzIHN0YXRlbWVudHMg
dGhhdCBhcmUgbGl0ZXJhbHMgYW5kIG5vdGhpbmcgZWxzZS4KKworI2luY2x1ZGUgImNvbXBpbGVy
L3RyYW5zbGF0b3IvUHJ1bmVQdXJlTGl0ZXJhbFN0YXRlbWVudHMuaCIKKworI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgorCituYW1lc3BhY2Ugc2gKK3sKKworbmFt
ZXNwYWNlCit7CisKK2NsYXNzIFBydW5lUHVyZUxpdGVyYWxTdGF0ZW1lbnRzVHJhdmVyc2VyIDog
cHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKK3sKKyAgcHVibGljOgorICAgIFBydW5lUHVyZUxpdGVy
YWxTdGF0ZW1lbnRzVHJhdmVyc2VyKCkgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBm
YWxzZSkge30KKworICAgIGJvb2wgdmlzaXRCbG9jayhWaXNpdCB2aXNpdCwgVEludGVybUJsb2Nr
ICpub2RlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgVEludGVybVNlcXVlbmNlICpzdGF0ZW1l
bnRzID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKKyAgICAgICAgaWYgKHN0YXRlbWVudHMgPT0gbnVs
bHB0cikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisK
KyAgICAgICAgLy8gRW1wdHkgY2FzZSBzdGF0ZW1lbnRzIGF0IHRoZSBlbmQgb2YgYSBzd2l0Y2gg
YXJlIGludmFsaWQ6IGlmIHRoZSBsYXN0IHN0YXRlbWVudHMKKyAgICAgICAgLy8gb2YgYSBibG9j
ayB3YXMgYSBwdXJlIGxpdGVyYWwsIGFsc28gZGVsZXRlIGFsbCB0aGUgY2FzZSBzdGF0ZW1lbnRz
IGRpcmVjdGx5IHByZWNlZGluZyBpdC4KKyAgICAgICAgYm9vbCBkZWxldGVDYXNlU3RhdGVtZW50
cyA9IGZhbHNlOworICAgICAgICBmb3IgKGludCBpID0gc3RhdGljX2Nhc3Q8aW50PihzdGF0ZW1l
bnRzLT5zaXplKCkpOyBpLS0gPiAwOykKKyAgICAgICAgeworICAgICAgICAgICAgVEludGVybU5v
ZGUgKnN0YXRlbWVudCA9ICgqc3RhdGVtZW50cylbaV07CisKKyAgICAgICAgICAgIGlmIChzdGF0
ZW1lbnQtPmdldEFzQ29uc3RhbnRVbmlvbigpICE9IG51bGxwdHIpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgVEludGVybVNlcXVlbmNlIGVtcHR5UmVwbGFjZW1lbnQ7CisgICAgICAg
ICAgICAgICAgbU11bHRpUmVwbGFjZW1lbnRzLnB1c2hfYmFjaygKKyAgICAgICAgICAgICAgICAg
ICAgTm9kZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRyeShub2RlLCBzdGF0ZW1lbnQsIGVtcHR5UmVw
bGFjZW1lbnQpKTsKKworICAgICAgICAgICAgICAgIGlmIChpID09IHN0YXRpY19jYXN0PGludD4o
c3RhdGVtZW50cy0+c2l6ZSgpKSAtIDEpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBkZWxldGVDYXNlU3RhdGVtZW50cyA9IHRydWU7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGlmIChkZWxldGVDYXNlU3RhdGVtZW50cykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBpZiAoc3RhdGVtZW50LT5nZXRBc0Nhc2VOb2RlKCkgIT0gbnVsbHB0cikKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSBlbXB0eVJlcGxhY2Vt
ZW50OworICAgICAgICAgICAgICAgICAgICBtTXVsdGlSZXBsYWNlbWVudHMucHVzaF9iYWNrKAor
ICAgICAgICAgICAgICAgICAgICAgICAgTm9kZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRyeShub2Rl
LCBzdGF0ZW1lbnQsIGVtcHR5UmVwbGFjZW1lbnQpKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlQ2FzZVN0YXRlbWVudHMgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBi
b29sIHZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AgKmxvb3ApIG92ZXJyaWRlCisg
ICAgeworICAgICAgICBUSW50ZXJtVHlwZWQgKmV4cHIgPSBsb29wLT5nZXRFeHByZXNzaW9uKCk7
CisgICAgICAgIGlmIChleHByICE9IG51bGxwdHIgJiYgZXhwci0+Z2V0QXNDb25zdGFudFVuaW9u
KCkgIT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAgICAgICAgbG9vcC0+c2V0RXhwcmVzc2lv
bihudWxscHRyKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK307
CisKK30gIC8vIG5hbWVzcGFjZQorCit2b2lkIFBydW5lUHVyZUxpdGVyYWxTdGF0ZW1lbnRzKFRJ
bnRlcm1Ob2RlICpyb290KQoreworICAgIFBydW5lUHVyZUxpdGVyYWxTdGF0ZW1lbnRzVHJhdmVy
c2VyIHBydW5lOworICAgIHJvb3QtPnRyYXZlcnNlKCZwcnVuZSk7CisgICAgcHJ1bmUudXBkYXRl
VHJlZSgpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BydW5lUHVyZUxpdGVyYWxTdGF0
ZW1lbnRzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9QcnVuZVB1cmVMaXRlcmFsU3RhdGVtZW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi5lZjk1NmMwNjlmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1BydW5lUHVyZUxpdGVyYWxTdGF0
ZW1lbnRzLmgKQEAgLTAsMCArMSwxOCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNyBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBQcnVuZVB1cmVMaXRl
cmFsU3RhdGVtZW50cy5oOiBSZW1vdmVzIHN0YXRlbWVudHMgdGhhdCBhcmUgbGl0ZXJhbHMgYW5k
IG5vdGhpbmcgZWxzZS4KKworI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX1BSVU5FUFVSRUxJ
VEVSQUxTVEFURU1FTlRTX0hfCisjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfUFJVTkVQVVJF
TElURVJBTFNUQVRFTUVOVFNfSF8KKworbmFtZXNwYWNlIHNoCit7CitjbGFzcyBUSW50ZXJtTm9k
ZTsKKwordm9pZCBQcnVuZVB1cmVMaXRlcmFsU3RhdGVtZW50cyhUSW50ZXJtTm9kZSAqcm9vdCk7
Cit9CisKKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9QUlVORVBVUkVMSVRFUkFMU1RB
VEVNRU5UU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvUXVhbGlmaWVyVHlwZXMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUXVhbGlmaWVyVHlwZXMuY3BwCmluZGV4IDMwZDhj
NGVlZDA4Li5hNzBmZjk3ZDJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUXVhbGlmaWVyVHlwZXMuY3BwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1F1YWxpZmllclR5cGVzLmNw
cApAQCAtMTIsNDUgKzEyLDYgQEAKIAogbmFtZXNwYWNlIHNoCiB7Ci1UTGF5b3V0UXVhbGlmaWVy
IEpvaW5MYXlvdXRRdWFsaWZpZXJzKFRMYXlvdXRRdWFsaWZpZXIgbGVmdFF1YWxpZmllciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVExheW91dFF1YWxpZmllciByaWdo
dFF1YWxpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFNvdXJjZUxvYyAmcmlnaHRRdWFsaWZpZXJMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVERpYWdub3N0aWNzICpkaWFnbm9zdGljcykKLXsKLSAgICBUTGF5
b3V0UXVhbGlmaWVyIGpvaW5lZFF1YWxpZmllciA9IGxlZnRRdWFsaWZpZXI7Ci0KLSAgICBpZiAo
cmlnaHRRdWFsaWZpZXIubG9jYXRpb24gIT0gLTEpCi0gICAgewotICAgICAgICBqb2luZWRRdWFs
aWZpZXIubG9jYXRpb24gPSByaWdodFF1YWxpZmllci5sb2NhdGlvbjsKLSAgICAgICAgKytqb2lu
ZWRRdWFsaWZpZXIubG9jYXRpb25zU3BlY2lmaWVkOwotICAgIH0KLSAgICBpZiAocmlnaHRRdWFs
aWZpZXIubWF0cml4UGFja2luZyAhPSBFbXBVbnNwZWNpZmllZCkKLSAgICB7Ci0gICAgICAgIGpv
aW5lZFF1YWxpZmllci5tYXRyaXhQYWNraW5nID0gcmlnaHRRdWFsaWZpZXIubWF0cml4UGFja2lu
ZzsKLSAgICB9Ci0gICAgaWYgKHJpZ2h0UXVhbGlmaWVyLmJsb2NrU3RvcmFnZSAhPSBFYnNVbnNw
ZWNpZmllZCkKLSAgICB7Ci0gICAgICAgIGpvaW5lZFF1YWxpZmllci5ibG9ja1N0b3JhZ2UgPSBy
aWdodFF1YWxpZmllci5ibG9ja1N0b3JhZ2U7Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3QgaSA9
IDB1OyBpIDwgcmlnaHRRdWFsaWZpZXIubG9jYWxTaXplLnNpemUoKTsgKytpKQotICAgIHsKLSAg
ICAgICAgaWYgKHJpZ2h0UXVhbGlmaWVyLmxvY2FsU2l6ZVtpXSAhPSAtMSkKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKGpvaW5lZFF1YWxpZmllci5sb2NhbFNpemVbaV0gIT0gLTEgJiYKLSAg
ICAgICAgICAgICAgICBqb2luZWRRdWFsaWZpZXIubG9jYWxTaXplW2ldICE9IHJpZ2h0UXVhbGlm
aWVyLmxvY2FsU2l6ZVtpXSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBkaWFnbm9z
dGljcy0+ZXJyb3IocmlnaHRRdWFsaWZpZXJMb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkNhbm5vdCBoYXZlIG11bHRpcGxlIGRpZmZlcmVudCB3b3JrIGdyb3Vw
IHNpemUgc3BlY2lmaWVycyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdl
dFdvcmtHcm91cFNpemVTdHJpbmcoaSksICIiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGpvaW5lZFF1YWxpZmllci5sb2NhbFNpemVbaV0gPSByaWdodFF1YWxpZmllci5sb2NhbFNpemVb
aV07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gam9pbmVkUXVhbGlmaWVyOwotfQot
fSAgLy8gbmFtZXNwYWNlIHNoCiAKIG5hbWVzcGFjZQogewpAQCAtNjMsNyArMjQsNiBAQCBib29s
IEFyZVR5cGVRdWFsaWZpZXJDaGVja3NSZWxheGVkKGludCBzaGFkZXJWZXJzaW9uKQogICAgIHJl
dHVybiBzaGFkZXJWZXJzaW9uID49IDMxMDsKIH0KIAotI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxF
X0FTU0VSVFMpCiBib29sIElzU2NvcGVRdWFsaWZpZXIoVFF1YWxpZmllciBxdWFsaWZpZXIpCiB7
CiAgICAgcmV0dXJuIHF1YWxpZmllciA9PSBFdnFHbG9iYWwgfHwgcXVhbGlmaWVyID09IEV2cVRl
bXBvcmFyeTsKQEAgLTg2LDcgKzQ2LDYgQEAgYm9vbCBJc0ludmFyaWFudENvcnJlY3QoY29uc3Qg
VFR5cGVRdWFsaWZpZXJCdWlsZGVyOjpRdWFsaWZpZXJTZXF1ZW5jZSAmcXVhbGlmaWUKICAgICAv
LyBUaGUgZmlyc3QgcXVhbGlmaWVyIGFsd2F5cyB0ZWxscyB0aGUgc2NvcGUuCiAgICAgcmV0dXJu
IHF1YWxpZmllcnMuc2l6ZSgpID49IDEgJiYgSXNTY29wZVF1YWxpZmllcldyYXBwZXIocXVhbGlm
aWVyc1swXSk7CiB9Ci0jZW5kaWYKIAogLy8gUmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSBxdWFs
aWZpZXJzIHdoaWNoIGhhdmUgYmVlbiBzcGVjaWZpZWQgbXVsdGlwbGUgdGltZXMKIC8vIElmIGFy
ZVF1YWxpZmllckNoZWNrc1JlbGF4ZWQgaXMgc2V0IHRvIHRydWUsIHRoZW4gbGF5b3V0IHF1YWxp
ZmllciByZXBldGl0aW9uIGlzIGFsbG93ZWQuCkBAIC0xOTEsNiArMTUwLDMxIEBAIGJvb2wgSGFz
UmVwZWF0aW5nUXVhbGlmaWVycyhjb25zdCBUVHlwZVF1YWxpZmllckJ1aWxkZXI6OlF1YWxpZmll
clNlcXVlbmNlICZxdWFsCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBRdE1lbW9yeToKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAvLyBHbyBvdmVyIGFsbCBvZiB0aGUgbWVtb3J5IHF1YWxpZmll
cnMgdXAgdW50aWwgdGhlIGN1cnJlbnQgb25lIGFuZCBjaGVjayBmb3IKKyAgICAgICAgICAgICAg
ICAvLyByZXBldGl0aW9ucy4KKyAgICAgICAgICAgICAgICAvLyBIYXZpbmcgYm90aCByZWFkb25s
eSBhbmQgd3JpdGVvbmx5IGluIGEgc2VxdWVuY2UgaXMgdmFsaWQuCisgICAgICAgICAgICAgICAg
Ly8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuOSBNZW1vcnkgQWNjZXNzIFF1YWxpZmllcnMK
KyAgICAgICAgICAgICAgICBUUXVhbGlmaWVyIGN1cnJlbnRRdWFsaWZpZXIgPQorICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBUTWVtb3J5UXVhbGlmaWVyV3JhcHBlciAqPihx
dWFsaWZpZXJzW2ldKS0+Z2V0UXVhbGlmaWVyKCk7CisgICAgICAgICAgICAgICAgZm9yIChzaXpl
X3QgaiA9IDE7IGogPCBpOyArK2opCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBpZiAocXVhbGlmaWVyc1tqXS0+Z2V0VHlwZSgpID09IFF0TWVtb3J5KQorICAgICAgICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUTWVtb3J5UXVhbGlm
aWVyV3JhcHBlciAqcHJldmlvdXNRdWFsaWZpZXJXcmFwcGVyID0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBUTWVtb3J5UXVhbGlmaWVyV3JhcHBlciAqPihx
dWFsaWZpZXJzW2pdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIgcHJldmlv
dXNRdWFsaWZpZXIgPSBwcmV2aW91c1F1YWxpZmllcldyYXBwZXItPmdldFF1YWxpZmllcigpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWFsaWZpZXIgPT0gcHJldmlvdXNR
dWFsaWZpZXIpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKmVycm9yTWVzc2FnZSA9IHByZXZpb3VzUXVhbGlmaWVyV3JhcHBlci0+Z2V0UXVh
bGlmaWVyU3RyaW5nKCkuY19zdHIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXJy
b3JNZXNzYWdlICs9ICIgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzIjsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQpAQCAtMjYzLDYgKzI0NywxMyBAQCBib29sIEFy
ZVF1YWxpZmllcnNJbk9yZGVyKGNvbnN0IFRUeXBlUXVhbGlmaWVyQnVpbGRlcjo6UXVhbGlmaWVy
U2VxdWVuY2UgJnF1YWxpZgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBmb3Vu
ZFN0b3JhZ2UgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBRdE1lbW9yeToKKyAgICAgICAgICAgICAgICBpZiAoZm91bmRQcmVjaXNpb24pCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAqZXJyb3JNZXNzYWdlID0gIlByZWNpc2lv
biBxdWFsaWZpZXJzIGhhdmUgdG8gYmUgYWZ0ZXIgbWVtb3J5IHF1YWxpZmllcnMuIjsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUXRQcmVjaXNpb246CiAgICAgICAgICAg
ICAgICAgZm91bmRQcmVjaXNpb24gPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MzkyLDYgKzM4MywzNCBAQCBib29sIEpvaW5QYXJhbWV0ZXJTdG9yYWdlUXVhbGlmaWVyKFRRdWFs
aWZpZXIgKmpvaW5lZFF1YWxpZmllciwgVFF1YWxpZmllciBzdG9yYQogICAgIHJldHVybiB0cnVl
OwogfQogCitib29sIEpvaW5NZW1vcnlRdWFsaWZpZXIoVE1lbW9yeVF1YWxpZmllciAqam9pbmVk
TWVtb3J5UXVhbGlmaWVyLCBUUXVhbGlmaWVyIG1lbW9yeVF1YWxpZmllcikKK3sKKyAgICBzd2l0
Y2ggKG1lbW9yeVF1YWxpZmllcikKKyAgICB7CisgICAgICAgIGNhc2UgRXZxUmVhZE9ubHk6Cisg
ICAgICAgICAgICBqb2luZWRNZW1vcnlRdWFsaWZpZXItPnJlYWRvbmx5ID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEV2cVdyaXRlT25seToKKyAgICAgICAgICAgIGpv
aW5lZE1lbW9yeVF1YWxpZmllci0+d3JpdGVvbmx5ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEV2cUNvaGVyZW50OgorICAgICAgICAgICAgam9pbmVkTWVtb3J5UXVh
bGlmaWVyLT5jb2hlcmVudCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFdnFSZXN0cmljdDoKKyAgICAgICAgICAgIGpvaW5lZE1lbW9yeVF1YWxpZmllci0+cmVzdHJp
Y3RRdWFsaWZpZXIgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRXZx
Vm9sYXRpbGU6CisgICAgICAgICAgICAvLyBWYXJpYWJsZXMgaGF2aW5nIHRoZSB2b2xhdGlsZSBx
dWFsaWZpZXIgYXJlIGF1dG9tYXRjYWxseSB0cmVhdGVkIGFzIGNvaGVyZW50IGFzIHdlbGwuCisg
ICAgICAgICAgICAvLyBHTFNMIEVTIDMuMTAsIFJldmlzaW9uIDQsIDQuOSBNZW1vcnkgQWNjZXNz
IFF1YWxpZmllcnMKKyAgICAgICAgICAgIGpvaW5lZE1lbW9yeVF1YWxpZmllci0+dm9sYXRpbGVR
dWFsaWZpZXIgPSB0cnVlOworICAgICAgICAgICAgam9pbmVkTWVtb3J5UXVhbGlmaWVyLT5jb2hl
cmVudCAgICAgICAgICA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgfQorICAgIHJldHVybiB0cnVlOwor
fQorCiBUVHlwZVF1YWxpZmllciBHZXRWYXJpYWJsZVR5cGVRdWFsaWZpZXJGcm9tU29ydGVkU2Vx
dWVuY2UoCiAgICAgY29uc3QgVFR5cGVRdWFsaWZpZXJCdWlsZGVyOjpRdWFsaWZpZXJTZXF1ZW5j
ZSAmc29ydGVkU2VxdWVuY2UsCiAgICAgVERpYWdub3N0aWNzICpkaWFnbm9zdGljcykKQEAgLTQ0
NSw2ICs0NjQsMTEgQEAgVFR5cGVRdWFsaWZpZXIgR2V0VmFyaWFibGVUeXBlUXVhbGlmaWVyRnJv
bVNvcnRlZFNlcXVlbmNlKAogICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBU
UHJlY2lzaW9uUXVhbGlmaWVyV3JhcHBlciAqPihxdWFsaWZpZXIpLT5nZXRRdWFsaWZpZXIoKTsK
ICAgICAgICAgICAgICAgICBBU1NFUlQodHlwZVF1YWxpZmllci5wcmVjaXNpb24gIT0gRWJwVW5k
ZWZpbmVkKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUXRNZW1v
cnk6CisgICAgICAgICAgICAgICAgaXNRdWFsaWZpZXJWYWxpZCA9IEpvaW5NZW1vcnlRdWFsaWZp
ZXIoCisgICAgICAgICAgICAgICAgICAgICZ0eXBlUXVhbGlmaWVyLm1lbW9yeVF1YWxpZmllciwK
KyAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgVE1lbW9yeVF1YWxpZmllcldy
YXBwZXIgKj4ocXVhbGlmaWVyKS0+Z2V0UXVhbGlmaWVyKCkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OwogICAgICAgICB9CkBAIC00NTIsNyArNDc2LDcgQEAgVFR5cGVRdWFsaWZpZXIgR2V0VmFyaWFi
bGVUeXBlUXVhbGlmaWVyRnJvbVNvcnRlZFNlcXVlbmNlKAogICAgICAgICB7CiAgICAgICAgICAg
ICBjb25zdCBUU3RyaW5nICZxdWFsaWZpZXJTdHJpbmcgPSBxdWFsaWZpZXItPmdldFF1YWxpZmll
clN0cmluZygpOwogICAgICAgICAgICAgZGlhZ25vc3RpY3MtPmVycm9yKHF1YWxpZmllci0+Z2V0
TGluZSgpLCAiaW52YWxpZCBxdWFsaWZpZXIgY29tYmluYXRpb24iLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHF1YWxpZmllclN0cmluZy5jX3N0cigpLCAiIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcXVhbGlmaWVyU3RyaW5nLmNfc3RyKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC00NzQsNiArNDk4LDExIEBAIFRUeXBlUXVh
bGlmaWVyIEdldFBhcmFtZXRlclR5cGVRdWFsaWZpZXJGcm9tU29ydGVkU2VxdWVuY2UoCiAgICAg
ICAgICAgICBjYXNlIFF0SW50ZXJwb2xhdGlvbjoKICAgICAgICAgICAgIGNhc2UgUXRMYXlvdXQ6
CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFF0TWVtb3J5OgorICAg
ICAgICAgICAgICAgIGlzUXVhbGlmaWVyVmFsaWQgPSBKb2luTWVtb3J5UXVhbGlmaWVyKAorICAg
ICAgICAgICAgICAgICAgICAmdHlwZVF1YWxpZmllci5tZW1vcnlRdWFsaWZpZXIsCisgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFRNZW1vcnlRdWFsaWZpZXJXcmFwcGVyICo+
KHF1YWxpZmllciktPmdldFF1YWxpZmllcigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgUXRTdG9yYWdlOgogICAgICAgICAgICAgICAgIGlzUXVhbGlmaWVyVmFs
aWQgPSBKb2luUGFyYW1ldGVyU3RvcmFnZVF1YWxpZmllcigKICAgICAgICAgICAgICAgICAgICAg
JnR5cGVRdWFsaWZpZXIucXVhbGlmaWVyLApAQCAtNDkyLDcgKzUyMSw3IEBAIFRUeXBlUXVhbGlm
aWVyIEdldFBhcmFtZXRlclR5cGVRdWFsaWZpZXJGcm9tU29ydGVkU2VxdWVuY2UoCiAgICAgICAg
IHsKICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJnF1YWxpZmllclN0cmluZyA9IHF1YWxpZmll
ci0+Z2V0UXVhbGlmaWVyU3RyaW5nKCk7CiAgICAgICAgICAgICBkaWFnbm9zdGljcy0+ZXJyb3Io
cXVhbGlmaWVyLT5nZXRMaW5lKCksICJpbnZhbGlkIHBhcmFtZXRlciBxdWFsaWZpZXIiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YWxpZmllclN0cmluZy5jX3N0cigpLCAiIik7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVhbGlmaWVyU3RyaW5nLmNfc3RyKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CkBAIC01MTMsMTIgKzU0Miw2
OSBAQCBUVHlwZVF1YWxpZmllciBHZXRQYXJhbWV0ZXJUeXBlUXVhbGlmaWVyRnJvbVNvcnRlZFNl
cXVlbmNlKAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBkaWFnbm9zdGljcy0+ZXJyb3Ioc29ydGVkU2VxdWVuY2VbMF0tPmdldExpbmUoKSwgIkludmFs
aWQgcGFyYW1ldGVyIHF1YWxpZmllciAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdldFF1YWxpZmllclN0cmluZyh0eXBlUXVhbGlmaWVyLnF1YWxpZmllciksICIiKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRRdWFsaWZpZXJTdHJpbmcodHlwZVF1YWxpZmll
ci5xdWFsaWZpZXIpKTsKICAgICB9CiAgICAgcmV0dXJuIHR5cGVRdWFsaWZpZXI7CiB9CiB9ICAv
LyBuYW1lc3BhY2UKIAorVExheW91dFF1YWxpZmllciBKb2luTGF5b3V0UXVhbGlmaWVycyhUTGF5
b3V0UXVhbGlmaWVyIGxlZnRRdWFsaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRMYXlvdXRRdWFsaWZpZXIgcmlnaHRRdWFsaWZpZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTb3VyY2VMb2MgJnJpZ2h0UXVhbGlmaWVy
TG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFREaWFnbm9z
dGljcyAqZGlhZ25vc3RpY3MpCit7CisgICAgVExheW91dFF1YWxpZmllciBqb2luZWRRdWFsaWZp
ZXIgPSBsZWZ0UXVhbGlmaWVyOworCisgICAgaWYgKHJpZ2h0UXVhbGlmaWVyLmxvY2F0aW9uICE9
IC0xKQorICAgIHsKKyAgICAgICAgam9pbmVkUXVhbGlmaWVyLmxvY2F0aW9uID0gcmlnaHRRdWFs
aWZpZXIubG9jYXRpb247CisgICAgICAgICsram9pbmVkUXVhbGlmaWVyLmxvY2F0aW9uc1NwZWNp
ZmllZDsKKyAgICB9CisgICAgaWYgKHJpZ2h0UXVhbGlmaWVyLnl1diAhPSBmYWxzZSkKKyAgICB7
CisgICAgICAgIGpvaW5lZFF1YWxpZmllci55dXYgPSByaWdodFF1YWxpZmllci55dXY7CisgICAg
fQorICAgIGlmIChyaWdodFF1YWxpZmllci5iaW5kaW5nICE9IC0xKQorICAgIHsKKyAgICAgICAg
am9pbmVkUXVhbGlmaWVyLmJpbmRpbmcgPSByaWdodFF1YWxpZmllci5iaW5kaW5nOworICAgIH0K
KyAgICBpZiAocmlnaHRRdWFsaWZpZXIubWF0cml4UGFja2luZyAhPSBFbXBVbnNwZWNpZmllZCkK
KyAgICB7CisgICAgICAgIGpvaW5lZFF1YWxpZmllci5tYXRyaXhQYWNraW5nID0gcmlnaHRRdWFs
aWZpZXIubWF0cml4UGFja2luZzsKKyAgICB9CisgICAgaWYgKHJpZ2h0UXVhbGlmaWVyLmJsb2Nr
U3RvcmFnZSAhPSBFYnNVbnNwZWNpZmllZCkKKyAgICB7CisgICAgICAgIGpvaW5lZFF1YWxpZmll
ci5ibG9ja1N0b3JhZ2UgPSByaWdodFF1YWxpZmllci5ibG9ja1N0b3JhZ2U7CisgICAgfQorCisg
ICAgZm9yIChzaXplX3QgaSA9IDB1OyBpIDwgcmlnaHRRdWFsaWZpZXIubG9jYWxTaXplLnNpemUo
KTsgKytpKQorICAgIHsKKyAgICAgICAgaWYgKHJpZ2h0UXVhbGlmaWVyLmxvY2FsU2l6ZVtpXSAh
PSAtMSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGpvaW5lZFF1YWxpZmllci5sb2NhbFNp
emVbaV0gIT0gLTEgJiYKKyAgICAgICAgICAgICAgICBqb2luZWRRdWFsaWZpZXIubG9jYWxTaXpl
W2ldICE9IHJpZ2h0UXVhbGlmaWVyLmxvY2FsU2l6ZVtpXSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBkaWFnbm9zdGljcy0+ZXJyb3IocmlnaHRRdWFsaWZpZXJMb2NhdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBoYXZlIG11bHRpcGxlIGRp
ZmZlcmVudCB3b3JrIGdyb3VwIHNpemUgc3BlY2lmaWVycyIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdldFdvcmtHcm91cFNpemVTdHJpbmcoaSkpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgam9pbmVkUXVhbGlmaWVyLmxvY2FsU2l6ZVtpXSA9IHJpZ2h0UXVhbGlm
aWVyLmxvY2FsU2l6ZVtpXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChyaWdodFF1YWxp
Zmllci5udW1WaWV3cyAhPSAtMSkKKyAgICB7CisgICAgICAgIGpvaW5lZFF1YWxpZmllci5udW1W
aWV3cyA9IHJpZ2h0UXVhbGlmaWVyLm51bVZpZXdzOworICAgIH0KKworICAgIGlmIChyaWdodFF1
YWxpZmllci5pbWFnZUludGVybmFsRm9ybWF0ICE9IEVpaWZVbnNwZWNpZmllZCkKKyAgICB7Cisg
ICAgICAgIGpvaW5lZFF1YWxpZmllci5pbWFnZUludGVybmFsRm9ybWF0ID0gcmlnaHRRdWFsaWZp
ZXIuaW1hZ2VJbnRlcm5hbEZvcm1hdDsKKyAgICB9CisKKyAgICByZXR1cm4gam9pbmVkUXVhbGlm
aWVyOworfQorCiB1bnNpZ25lZCBpbnQgVEludmFyaWFudFF1YWxpZmllcldyYXBwZXI6OmdldFJh
bmsoKSBjb25zdAogewogICAgIHJldHVybiAwdTsKQEAgLTU0OCw2ICs2MzQsMTEgQEAgdW5zaWdu
ZWQgaW50IFRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlcjo6Z2V0UmFuaygpIGNvbnN0CiAgICAgfQog
fQogCit1bnNpZ25lZCBpbnQgVE1lbW9yeVF1YWxpZmllcldyYXBwZXI6OmdldFJhbmsoKSBjb25z
dAoreworICAgIHJldHVybiA0dTsKK30KKwogdW5zaWduZWQgaW50IFRQcmVjaXNpb25RdWFsaWZp
ZXJXcmFwcGVyOjpnZXRSYW5rKCkgY29uc3QKIHsKICAgICByZXR1cm4gNXU7CkBAIC01NTUsNiAr
NjQ2LDcgQEAgdW5zaWduZWQgaW50IFRQcmVjaXNpb25RdWFsaWZpZXJXcmFwcGVyOjpnZXRSYW5r
KCkgY29uc3QKIAogVFR5cGVRdWFsaWZpZXI6OlRUeXBlUXVhbGlmaWVyKFRRdWFsaWZpZXIgc2Nv
cGUsIGNvbnN0IFRTb3VyY2VMb2MgJmxvYykKICAgICA6IGxheW91dFF1YWxpZmllcihUTGF5b3V0
UXVhbGlmaWVyOjpjcmVhdGUoKSksCisgICAgICBtZW1vcnlRdWFsaWZpZXIoVE1lbW9yeVF1YWxp
Zmllcjo6Y3JlYXRlKCkpLAogICAgICAgcHJlY2lzaW9uKEVicFVuZGVmaW5lZCksCiAgICAgICBx
dWFsaWZpZXIoc2NvcGUpLAogICAgICAgaW52YXJpYW50KGZhbHNlKSwKQEAgLTU4MiwxNSArNjc0
LDEzIEBAIGJvb2wgVFR5cGVRdWFsaWZpZXJCdWlsZGVyOjpjaGVja1NlcXVlbmNlSXNWYWxpZChU
RGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKSBjb25zCiAgICAgc3RkOjpzdHJpbmcgZXJyb3JNZXNz
YWdlOwogICAgIGlmIChIYXNSZXBlYXRpbmdRdWFsaWZpZXJzKG1RdWFsaWZpZXJzLCBhcmVRdWFs
aWZpZXJDaGVja3NSZWxheGVkLCAmZXJyb3JNZXNzYWdlKSkKICAgICB7Ci0gICAgICAgIGRpYWdu
b3N0aWNzLT5lcnJvcihtUXVhbGlmaWVyc1swXS0+Z2V0TGluZSgpLCAicXVhbGlmaWVyIHNlcXVl
bmNlIiwgZXJyb3JNZXNzYWdlLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAi
Iik7CisgICAgICAgIGRpYWdub3N0aWNzLT5lcnJvcihtUXVhbGlmaWVyc1swXS0+Z2V0TGluZSgp
LCBlcnJvck1lc3NhZ2UuY19zdHIoKSwgInF1YWxpZmllciBzZXF1ZW5jZSIpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCFhcmVRdWFsaWZpZXJDaGVja3NSZWxheGVk
ICYmICFBcmVRdWFsaWZpZXJzSW5PcmRlcihtUXVhbGlmaWVycywgJmVycm9yTWVzc2FnZSkpCiAg
ICAgewotICAgICAgICBkaWFnbm9zdGljcy0+ZXJyb3IobVF1YWxpZmllcnNbMF0tPmdldExpbmUo
KSwgInF1YWxpZmllciBzZXF1ZW5jZSIsIGVycm9yTWVzc2FnZS5jX3N0cigpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiIpOworICAgICAgICBkaWFnbm9zdGljcy0+ZXJyb3IobVF1YWxp
ZmllcnNbMF0tPmdldExpbmUoKSwgZXJyb3JNZXNzYWdlLmNfc3RyKCksICJxdWFsaWZpZXIgc2Vx
dWVuY2UiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNjQ0LDMgKzczNCw1
IEBAIFRUeXBlUXVhbGlmaWVyIFRUeXBlUXVhbGlmaWVyQnVpbGRlcjo6Z2V0VmFyaWFibGVUeXBl
UXVhbGlmaWVyKFREaWFnbm9zdGljcyAqZGlhCiAgICAgfQogICAgIHJldHVybiBHZXRWYXJpYWJs
ZVR5cGVRdWFsaWZpZXJGcm9tU29ydGVkU2VxdWVuY2UobVF1YWxpZmllcnMsIGRpYWdub3N0aWNz
KTsKIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9RdWFsaWZpZXJUeXBlcy5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUXVhbGlmaWVyVHlwZXMu
aAppbmRleCAwYmNjMzlhMTZlNC4uMTBiZGVlZDg5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1F1YWxpZmllclR5cGVzLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUXVhbGlm
aWVyVHlwZXMuaApAQCAtMTEsMTUgKzExLDE0IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci9CYXNlVHlwZXMuaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1R5cGVzLmgi
CiAKLWNsYXNzIFREaWFnbm9zdGljczsKLQogbmFtZXNwYWNlIHNoCiB7CitjbGFzcyBURGlhZ25v
c3RpY3M7CisKIFRMYXlvdXRRdWFsaWZpZXIgSm9pbkxheW91dFF1YWxpZmllcnMoVExheW91dFF1
YWxpZmllciBsZWZ0UXVhbGlmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUTGF5b3V0UXVhbGlmaWVyIHJpZ2h0UXVhbGlmaWVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZyaWdodFF1YWxpZmllckxvY2F0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURGlhZ25vc3RpY3Mg
KmRpYWdub3N0aWNzKTsKLX0gIC8vIG5hbWVzcGFjZSBzaAogCiBlbnVtIFRRdWFsaWZpZXJUeXBl
CiB7CkBAIC0yNyw3ICsyNiw4IEBAIGVudW0gVFF1YWxpZmllclR5cGUKICAgICBRdEludGVycG9s
YXRpb24sCiAgICAgUXRMYXlvdXQsCiAgICAgUXRTdG9yYWdlLAotICAgIFF0UHJlY2lzaW9uCisg
ICAgUXRQcmVjaXNpb24sCisgICAgUXRNZW1vcnkKIH07CiAKIGNsYXNzIFRRdWFsaWZpZXJXcmFw
cGVyQmFzZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQpAQCAtNjUsNyArNjUsNyBAQCBjbGFzcyBUSW50
ZXJwb2xhdGlvblF1YWxpZmllcldyYXBwZXIgZmluYWwgOiBwdWJsaWMgVFF1YWxpZmllcldyYXBw
ZXJCYXNlCiAgICAgflRJbnRlcnBvbGF0aW9uUXVhbGlmaWVyV3JhcHBlcigpIHt9CiAKICAgICBU
UXVhbGlmaWVyVHlwZSBnZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gUXRJbnRlcnBvbGF0aW9uOyB9
Ci0gICAgVFN0cmluZyBnZXRRdWFsaWZpZXJTdHJpbmcoKSBjb25zdCB7IHJldHVybiA6OmdldFF1
YWxpZmllclN0cmluZyhtSW50ZXJwb2xhdGlvblF1YWxpZmllcik7IH0KKyAgICBUU3RyaW5nIGdl
dFF1YWxpZmllclN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHNoOjpnZXRRdWFsaWZpZXJTdHJpbmco
bUludGVycG9sYXRpb25RdWFsaWZpZXIpOyB9CiAgICAgVFF1YWxpZmllciBnZXRRdWFsaWZpZXIo
KSBjb25zdCB7IHJldHVybiBtSW50ZXJwb2xhdGlvblF1YWxpZmllcjsgfQogICAgIHVuc2lnbmVk
IGludCBnZXRSYW5rKCkgY29uc3Q7CiAKQEAgLTEwMSw3ICsxMDEsNyBAQCBjbGFzcyBUU3RvcmFn
ZVF1YWxpZmllcldyYXBwZXIgZmluYWwgOiBwdWJsaWMgVFF1YWxpZmllcldyYXBwZXJCYXNlCiAg
ICAgflRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlcigpIHt9CiAKICAgICBUUXVhbGlmaWVyVHlwZSBn
ZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gUXRTdG9yYWdlOyB9Ci0gICAgVFN0cmluZyBnZXRRdWFs
aWZpZXJTdHJpbmcoKSBjb25zdCB7IHJldHVybiA6OmdldFF1YWxpZmllclN0cmluZyhtU3RvcmFn
ZVF1YWxpZmllcik7IH0KKyAgICBUU3RyaW5nIGdldFF1YWxpZmllclN0cmluZygpIGNvbnN0IHsg
cmV0dXJuIHNoOjpnZXRRdWFsaWZpZXJTdHJpbmcobVN0b3JhZ2VRdWFsaWZpZXIpOyB9CiAgICAg
VFF1YWxpZmllciBnZXRRdWFsaWZpZXIoKSBjb25zdCB7IHJldHVybiBtU3RvcmFnZVF1YWxpZmll
cjsgfQogICAgIHVuc2lnbmVkIGludCBnZXRSYW5rKCkgY29uc3Q7CiAKQEAgLTExOSw3ICsxMTks
NyBAQCBjbGFzcyBUUHJlY2lzaW9uUXVhbGlmaWVyV3JhcHBlciBmaW5hbCA6IHB1YmxpYyBUUXVh
bGlmaWVyV3JhcHBlckJhc2UKICAgICB+VFByZWNpc2lvblF1YWxpZmllcldyYXBwZXIoKSB7fQog
CiAgICAgVFF1YWxpZmllclR5cGUgZ2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIFF0UHJlY2lzaW9u
OyB9Ci0gICAgVFN0cmluZyBnZXRRdWFsaWZpZXJTdHJpbmcoKSBjb25zdCB7IHJldHVybiA6Omdl
dFByZWNpc2lvblN0cmluZyhtUHJlY2lzaW9uUXVhbGlmaWVyKTsgfQorICAgIFRTdHJpbmcgZ2V0
UXVhbGlmaWVyU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gc2g6OmdldFByZWNpc2lvblN0cmluZyht
UHJlY2lzaW9uUXVhbGlmaWVyKTsgfQogICAgIFRQcmVjaXNpb24gZ2V0UXVhbGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbVByZWNpc2lvblF1YWxpZmllcjsgfQogICAgIHVuc2lnbmVkIGludCBnZXRS
YW5rKCkgY29uc3Q7CiAKQEAgLTEyNyw2ICsxMjcsMjQgQEAgY2xhc3MgVFByZWNpc2lvblF1YWxp
ZmllcldyYXBwZXIgZmluYWwgOiBwdWJsaWMgVFF1YWxpZmllcldyYXBwZXJCYXNlCiAgICAgVFBy
ZWNpc2lvbiBtUHJlY2lzaW9uUXVhbGlmaWVyOwogfTsKIAorY2xhc3MgVE1lbW9yeVF1YWxpZmll
cldyYXBwZXIgZmluYWwgOiBwdWJsaWMgVFF1YWxpZmllcldyYXBwZXJCYXNlCit7CisgIHB1Ymxp
YzoKKyAgICBUTWVtb3J5UXVhbGlmaWVyV3JhcHBlcihUUXVhbGlmaWVyIG1lbW9yeVF1YWxpZmll
ciwgY29uc3QgVFNvdXJjZUxvYyAmbGluZSkKKyAgICAgICAgOiBUUXVhbGlmaWVyV3JhcHBlckJh
c2UobGluZSksIG1NZW1vcnlRdWFsaWZpZXIobWVtb3J5UXVhbGlmaWVyKQorICAgIHsKKyAgICB9
CisgICAgflRNZW1vcnlRdWFsaWZpZXJXcmFwcGVyKCkge30KKworICAgIFRRdWFsaWZpZXJUeXBl
IGdldFR5cGUoKSBjb25zdCB7IHJldHVybiBRdE1lbW9yeTsgfQorICAgIFRTdHJpbmcgZ2V0UXVh
bGlmaWVyU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gc2g6OmdldFF1YWxpZmllclN0cmluZyhtTWVt
b3J5UXVhbGlmaWVyKTsgfQorICAgIFRRdWFsaWZpZXIgZ2V0UXVhbGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbU1lbW9yeVF1YWxpZmllcjsgfQorICAgIHVuc2lnbmVkIGludCBnZXRSYW5rKCkgY29u
c3Q7CisKKyAgcHJpdmF0ZToKKyAgICBUUXVhbGlmaWVyIG1NZW1vcnlRdWFsaWZpZXI7Cit9Owor
CiAvLyBUVHlwZVF1YWxpZmllciB0aWdodGx5IGNvdmVycyB0eXBlX3F1YWxpZmllciBmcm9tIHRo
ZSBncmFtbWFyCiBzdHJ1Y3QgVFR5cGVRdWFsaWZpZXIKIHsKQEAgLTEzNCw2ICsxNTIsNyBAQCBz
dHJ1Y3QgVFR5cGVRdWFsaWZpZXIKICAgICBUVHlwZVF1YWxpZmllcihUUXVhbGlmaWVyIHNjb3Bl
LCBjb25zdCBUU291cmNlTG9jICZsb2MpOwogCiAgICAgVExheW91dFF1YWxpZmllciBsYXlvdXRR
dWFsaWZpZXI7CisgICAgVE1lbW9yeVF1YWxpZmllciBtZW1vcnlRdWFsaWZpZXI7CiAgICAgVFBy
ZWNpc2lvbiBwcmVjaXNpb247CiAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7CiAgICAgYm9vbCBp
bnZhcmlhbnQ7CkBAIC0xNjcsNCArMTg2LDYgQEAgY2xhc3MgVFR5cGVRdWFsaWZpZXJCdWlsZGVy
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgaW50IG1TaGFkZXJWZXJzaW9uOwogfTsKIAorfSAg
Ly8gbmFtZXNwYWNlIHNoCisKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9RVUFMSUZJ
RVJfVFlQRVNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1JlY29yZENvbnN0YW50UHJlY2lzaW9uLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlY29yZENvbnN0YW50UHJlY2lz
aW9uLmNwcAppbmRleCA2ZWNhMjI5ZDg3Zi4uNTEwNmY5ZWUzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlY29yZENvbnN0YW50
UHJlY2lzaW9uLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9SZWNvcmRDb25zdGFudFByZWNpc2lvbi5jcHAKQEAgLTMsMTQgKzMsMTUgQEAK
IC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwotLy8g
RHVyaW5nIHBhcnNpbmcsIGFsbCBjb25zdGFudCBleHByZXNzaW9ucyBhcmUgZm9sZGVkIHRvIGNv
bnN0YW50IHVuaW9uIG5vZGVzLiBUaGUgZXhwcmVzc2lvbnMgdGhhdCBoYXZlIGJlZW4KLS8vIGZv
bGRlZCBtYXkgaGF2ZSBoYWQgcHJlY2lzaW9uIHF1YWxpZmllcnMsIHdoaWNoIHNob3VsZCBhZmZl
Y3QgdGhlIHByZWNpc2lvbiBvZiB0aGUgY29uc3VtaW5nIG9wZXJhdGlvbi4KLS8vIElmIHRoZSBm
b2xkZWQgY29uc3RhbnQgdW5pb24gbm9kZXMgYXJlIHdyaXR0ZW4gdG8gb3V0cHV0IGFzIHN1Y2gg
dGhleSB3b24ndCBoYXZlIGFueSBwcmVjaXNpb24gcXVhbGlmaWVycywKLS8vIGFuZCB0aGVpciBl
ZmZlY3Qgb24gdGhlIHByZWNpc2lvbiBvZiB0aGUgY29uc3VtaW5nIG9wZXJhdGlvbiBpcyBsb3N0
LgorLy8gRHVyaW5nIHBhcnNpbmcsIGFsbCBjb25zdGFudCBleHByZXNzaW9ucyBhcmUgZm9sZGVk
IHRvIGNvbnN0YW50IHVuaW9uIG5vZGVzLiBUaGUgZXhwcmVzc2lvbnMgdGhhdAorLy8gaGF2ZSBi
ZWVuIGZvbGRlZCBtYXkgaGF2ZSBoYWQgcHJlY2lzaW9uIHF1YWxpZmllcnMsIHdoaWNoIHNob3Vs
ZCBhZmZlY3QgdGhlIHByZWNpc2lvbiBvZiB0aGUKKy8vIGNvbnN1bWluZyBvcGVyYXRpb24uIElm
IHRoZSBmb2xkZWQgY29uc3RhbnQgdW5pb24gbm9kZXMgYXJlIHdyaXR0ZW4gdG8gb3V0cHV0IGFz
IHN1Y2ggdGhleSB3b24ndAorLy8gaGF2ZSBhbnkgcHJlY2lzaW9uIHF1YWxpZmllcnMsIGFuZCB0
aGVpciBlZmZlY3Qgb24gdGhlIHByZWNpc2lvbiBvZiB0aGUgY29uc3VtaW5nIG9wZXJhdGlvbiBp
cworLy8gbG9zdC4KIC8vCi0vLyBSZWNvcmRDb25zdGFudFByZWNpc2lvbiBpcyBhbiBBU1QgdHJh
dmVyc2VyIHRoYXQgaW5zcGVjdHMgdGhlIHByZWNpc2lvbiBxdWFsaWZpZXJzIG9mIGNvbnN0YW50
cyBhbmQgaG9pc3RzCi0vLyB0aGUgY29uc3RhbnRzIG91dHNpZGUgdGhlIGNvbnRhaW5pbmcgZXhw
cmVzc2lvbiBhcyBwcmVjaXNpb24gcXVhbGlmaWVkIG5hbWVkIHZhcmlhYmxlcyBpbiBjYXNlIHRo
YXQgaXMKLS8vIHJlcXVpcmVkIGZvciBjb3JyZWN0IHByZWNpc2lvbiBwcm9wYWdhdGlvbi4KKy8v
IFJlY29yZENvbnN0YW50UHJlY2lzaW9uIGlzIGFuIEFTVCB0cmF2ZXJzZXIgdGhhdCBpbnNwZWN0
cyB0aGUgcHJlY2lzaW9uIHF1YWxpZmllcnMgb2YgY29uc3RhbnRzCisvLyBhbmQgaG9pc3RzIHRo
ZSBjb25zdGFudHMgb3V0c2lkZSB0aGUgY29udGFpbmluZyBleHByZXNzaW9uIGFzIHByZWNpc2lv
biBxdWFsaWZpZWQgbmFtZWQgdmFyaWFibGVzCisvLyBpbiBjYXNlIHRoYXQgaXMgcmVxdWlyZWQg
Zm9yIGNvcnJlY3QgcHJlY2lzaW9uIHByb3BhZ2F0aW9uLgogLy8KIAogI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24uaCIKQEAgLTE4LDYgKzE5LDkg
QEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmgiCiAjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBu
YW1lc3BhY2UKIHsKIApAQCAtMzgsOCArNDIsNyBAQCBjbGFzcyBSZWNvcmRDb25zdGFudFByZWNp
c2lvblRyYXZlcnNlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiB9OwogCiBSZWNvcmRDb25z
dGFudFByZWNpc2lvblRyYXZlcnNlcjo6UmVjb3JkQ29uc3RhbnRQcmVjaXNpb25UcmF2ZXJzZXIo
KQotICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgdHJ1ZSksCi0gICAgICBtRm91
bmRIaWdoZXJQcmVjaXNpb25Db25zdGFudChmYWxzZSkKKyAgICA6IFRJbnRlcm1UcmF2ZXJzZXIo
dHJ1ZSwgZmFsc2UsIHRydWUpLCBtRm91bmRIaWdoZXJQcmVjaXNpb25Db25zdGFudChmYWxzZSkK
IHsKIH0KIApAQCAtNTcsMTUgKzYwLDE1IEBAIGJvb2wgUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25U
cmF2ZXJzZXI6Om9wZXJhbmRBZmZlY3RzUGFyZW50T3BlcmF0aW9uUHJlY2lzaW9uKFRJCiAgICAg
ICAgIC8vIGl0cyBwcmVjaXNpb24gaGFzIG5vIGVmZmVjdC4KICAgICAgICAgc3dpdGNoIChwYXJl
bnRBc0JpbmFyeS0+Z2V0T3AoKSkKICAgICAgICAgewotICAgICAgICAgIGNhc2UgRU9wSW5pdGlh
bGl6ZToKLSAgICAgICAgICBjYXNlIEVPcEFzc2lnbjoKLSAgICAgICAgICBjYXNlIEVPcEluZGV4
RGlyZWN0OgotICAgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJlY3RTdHJ1Y3Q6Ci0gICAgICAgICAg
Y2FzZSBFT3BJbmRleERpcmVjdEludGVyZmFjZUJsb2NrOgotICAgICAgICAgIGNhc2UgRU9wSW5k
ZXhJbmRpcmVjdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVPcEluaXRpYWxpemU6Cisg
ICAgICAgICAgICBjYXNlIEVPcEFzc2lnbjoKKyAgICAgICAgICAgIGNhc2UgRU9wSW5kZXhEaXJl
Y3Q6CisgICAgICAgICAgICBjYXNlIEVPcEluZGV4RGlyZWN0U3RydWN0OgorICAgICAgICAgICAg
Y2FzZSBFT3BJbmRleERpcmVjdEludGVyZmFjZUJsb2NrOgorICAgICAgICAgICAgY2FzZSBFT3BJ
bmRleEluZGlyZWN0OgorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBU
SW50ZXJtVHlwZWQgKm90aGVyT3BlcmFuZCA9IHBhcmVudEFzQmluYXJ5LT5nZXRSaWdodCgpOwpA
QCAtNzMsOSArNzYsMTAgQEAgYm9vbCBSZWNvcmRDb25zdGFudFByZWNpc2lvblRyYXZlcnNlcjo6
b3BlcmFuZEFmZmVjdHNQYXJlbnRPcGVyYXRpb25QcmVjaXNpb24oVEkKICAgICAgICAgewogICAg
ICAgICAgICAgb3RoZXJPcGVyYW5kID0gcGFyZW50QXNCaW5hcnktPmdldExlZnQoKTsKICAgICAg
ICAgfQotICAgICAgICAvLyBJZiB0aGUgcHJlY2lzaW9uIG9mIHRoZSBvdGhlciBjaGlsZCBpcyBh
dCBsZWFzdCBhcyBoaWdoIGFzIHRoZSBwcmVjaXNpb24gb2YgdGhlIGNvbnN0YW50LCB0aGUgcHJl
Y2lzaW9uIG9mCi0gICAgICAgIC8vIHRoZSBjb25zdGFudCBoYXMgbm8gZWZmZWN0LgotICAgICAg
ICBpZiAob3RoZXJPcGVyYW5kLT5nZXRBc0NvbnN0YW50VW5pb24oKSA9PSBudWxscHRyICYmIG90
aGVyT3BlcmFuZC0+Z2V0UHJlY2lzaW9uKCkgPj0gb3BlcmFuZC0+Z2V0UHJlY2lzaW9uKCkpCisg
ICAgICAgIC8vIElmIHRoZSBwcmVjaXNpb24gb2YgdGhlIG90aGVyIGNoaWxkIGlzIGF0IGxlYXN0
IGFzIGhpZ2ggYXMgdGhlIHByZWNpc2lvbiBvZiB0aGUgY29uc3RhbnQsCisgICAgICAgIC8vIHRo
ZSBwcmVjaXNpb24gb2YgdGhlIGNvbnN0YW50IGhhcyBubyBlZmZlY3QuCisgICAgICAgIGlmIChv
dGhlck9wZXJhbmQtPmdldEFzQ29uc3RhbnRVbmlvbigpID09IG51bGxwdHIgJiYKKyAgICAgICAg
ICAgIG90aGVyT3BlcmFuZC0+Z2V0UHJlY2lzaW9uKCkgPj0gb3BlcmFuZC0+Z2V0UHJlY2lzaW9u
KCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAt
OTcsMTQgKzEwMSwxNSBAQCBib29sIFJlY29yZENvbnN0YW50UHJlY2lzaW9uVHJhdmVyc2VyOjpv
cGVyYW5kQWZmZWN0c1BhcmVudE9wZXJhdGlvblByZWNpc2lvbihUSQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgLy8gSWYgdGhlIHByZWNp
c2lvbiBvZiBvcGVyYW5kcyBkb2VzIGFmZmVjdCB0aGUgcmVzdWx0LCBidXQgdGhlIHByZWNpc2lv
biBvZiBhbnkgb2YgdGhlIG90aGVyIGNoaWxkcmVuCi0gICAgICAgIC8vIGhhcyBhIHByZWNpc2lv
biB0aGF0J3MgYXQgbGVhc3QgYXMgaGlnaCBhcyB0aGUgcHJlY2lzaW9uIG9mIHRoZSBjb25zdGFu
dCwgdGhlIHByZWNpc2lvbiBvZiB0aGUgY29uc3RhbnQKLSAgICAgICAgLy8gaGFzIG5vIGVmZmVj
dC4KKyAgICAgICAgLy8gSWYgdGhlIHByZWNpc2lvbiBvZiBvcGVyYW5kcyBkb2VzIGFmZmVjdCB0
aGUgcmVzdWx0LCBidXQgdGhlIHByZWNpc2lvbiBvZiBhbnkgb2YgdGhlCisgICAgICAgIC8vIG90
aGVyIGNoaWxkcmVuIGhhcyBhIHByZWNpc2lvbiB0aGF0J3MgYXQgbGVhc3QgYXMgaGlnaCBhcyB0
aGUgcHJlY2lzaW9uIG9mIHRoZSBjb25zdGFudCwKKyAgICAgICAgLy8gdGhlIHByZWNpc2lvbiBv
ZiB0aGUgY29uc3RhbnQgaGFzIG5vIGVmZmVjdC4KICAgICAgICAgVEludGVybVNlcXVlbmNlICpw
YXJhbWV0ZXJzID0gcGFyZW50QXNBZ2dyZWdhdGUtPmdldFNlcXVlbmNlKCk7CiAgICAgICAgIGZv
ciAoVEludGVybU5vZGUgKnBhcmFtZXRlciA6ICpwYXJhbWV0ZXJzKQogICAgICAgICB7CiAgICAg
ICAgICAgICBjb25zdCBUSW50ZXJtVHlwZWQgKnR5cGVkUGFyYW1ldGVyID0gcGFyYW1ldGVyLT5n
ZXRBc1R5cGVkKCk7Ci0gICAgICAgICAgICBpZiAocGFyYW1ldGVyICE9IG9wZXJhbmQgJiYgdHlw
ZWRQYXJhbWV0ZXIgIT0gbnVsbHB0ciAmJiBwYXJhbWV0ZXItPmdldEFzQ29uc3RhbnRVbmlvbigp
ID09IG51bGxwdHIgJiYKKyAgICAgICAgICAgIGlmIChwYXJhbWV0ZXIgIT0gb3BlcmFuZCAmJiB0
eXBlZFBhcmFtZXRlciAhPSBudWxscHRyICYmCisgICAgICAgICAgICAgICAgcGFyYW1ldGVyLT5n
ZXRBc0NvbnN0YW50VW5pb24oKSA9PSBudWxscHRyICYmCiAgICAgICAgICAgICAgICAgdHlwZWRQ
YXJhbWV0ZXItPmdldFByZWNpc2lvbigpID49IG9wZXJhbmQtPmdldFByZWNpc2lvbigpKQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExOSwxNyArMTI0
LDE4IEBAIHZvaWQgUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25UcmF2ZXJzZXI6OnZpc2l0Q29uc3Rh
bnRVbmlvbihUSW50ZXJtQ29uc3RhbnRVbmlvbiAqCiAgICAgaWYgKG1Gb3VuZEhpZ2hlclByZWNp
c2lvbkNvbnN0YW50KQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBJZiB0aGUgY29uc3RhbnQg
aGFzIGxvd3Agb3IgdW5kZWZpbmVkIHByZWNpc2lvbiwgaXQgY2FuJ3QgaW5jcmVhc2UgdGhlIHBy
ZWNpc2lvbiBvZiBjb25zdW1pbmcgb3BlcmF0aW9ucy4KKyAgICAvLyBJZiB0aGUgY29uc3RhbnQg
aGFzIGxvd3Agb3IgdW5kZWZpbmVkIHByZWNpc2lvbiwgaXQgY2FuJ3QgaW5jcmVhc2UgdGhlIHBy
ZWNpc2lvbiBvZiBjb25zdW1pbmcKKyAgICAvLyBvcGVyYXRpb25zLgogICAgIGlmIChub2RlLT5n
ZXRQcmVjaXNpb24oKSA8IEVicE1lZGl1bSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gSXQn
cyBwb3NzaWJsZSB0aGUgbm9kZSBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwcmVjaXNpb24gb2YgdGhl
IGNvbnN1bWluZyBleHByZXNzaW9uLCBkZXBlbmRpbmcgb24gdGhlCi0gICAgLy8gY29uc3VtaW5n
IGV4cHJlc3Npb24sIGFuZCB0aGUgcHJlY2lzaW9uIG9mIHRoZSBvdGhlciBwYXJhbWV0ZXJzIG9m
IHRoZSBleHByZXNzaW9uLgorICAgIC8vIEl0J3MgcG9zc2libGUgdGhlIG5vZGUgaGFzIG5vIGVm
ZmVjdCBvbiB0aGUgcHJlY2lzaW9uIG9mIHRoZSBjb25zdW1pbmcgZXhwcmVzc2lvbiwgZGVwZW5k
aW5nCisgICAgLy8gb24gdGhlIGNvbnN1bWluZyBleHByZXNzaW9uLCBhbmQgdGhlIHByZWNpc2lv
biBvZiB0aGUgb3RoZXIgcGFyYW1ldGVycyBvZiB0aGUgZXhwcmVzc2lvbi4KICAgICBpZiAoIW9w
ZXJhbmRBZmZlY3RzUGFyZW50T3BlcmF0aW9uUHJlY2lzaW9uKG5vZGUpKQogICAgICAgICByZXR1
cm47CiAKLSAgICAvLyBNYWtlIHRoZSBjb25zdGFudCBhIHByZWNpc2lvbi1xdWFsaWZpZWQgbmFt
ZWQgdmFyaWFibGUgdG8gbWFrZSBzdXJlIGl0IGFmZmVjdHMgdGhlIHByZWNpc2lvbiBvZiB0aGUg
Y29uc3VtaW5nCi0gICAgLy8gZXhwcmVzc2lvbi4KKyAgICAvLyBNYWtlIHRoZSBjb25zdGFudCBh
IHByZWNpc2lvbi1xdWFsaWZpZWQgbmFtZWQgdmFyaWFibGUgdG8gbWFrZSBzdXJlIGl0IGFmZmVj
dHMgdGhlIHByZWNpc2lvbgorICAgIC8vIG9mIHRoZSBjb25zdW1pbmcgZXhwcmVzc2lvbi4KICAg
ICBUSW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9uczsKICAgICBpbnNlcnRpb25zLnB1c2hfYmFjayhj
cmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKG5vZGUsIEV2cUNvbnN0KSk7CiAgICAgaW5zZXJ0U3Rh
dGVtZW50c0luUGFyZW50QmxvY2soaW5zZXJ0aW9ucyk7CkBAIC0xNDMsNyArMTQ5LDcgQEAgdm9p
ZCBSZWNvcmRDb25zdGFudFByZWNpc2lvblRyYXZlcnNlcjo6bmV4dEl0ZXJhdGlvbigpCiAgICAg
bUZvdW5kSGlnaGVyUHJlY2lzaW9uQ29uc3RhbnQgPSBmYWxzZTsKIH0KIAotfSAvLyBuYW1lc3Bh
Y2UKK30gIC8vIG5hbWVzcGFjZQogCiB2b2lkIFJlY29yZENvbnN0YW50UHJlY2lzaW9uKFRJbnRl
cm1Ob2RlICpyb290LCB1bnNpZ25lZCBpbnQgKnRlbXBvcmFyeUluZGV4KQogewpAQCAtMTU3LDYg
KzE2Myw3IEBAIHZvaWQgUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24oVEludGVybU5vZGUgKnJvb3Qs
IHVuc2lnbmVkIGludCAqdGVtcG9yYXJ5SW5kZXgpCiAgICAgICAgIHJvb3QtPnRyYXZlcnNlKCZ0
cmF2ZXJzZXIpOwogICAgICAgICBpZiAodHJhdmVyc2VyLmZvdW5kSGlnaGVyUHJlY2lzaW9uQ29u
c3RhbnQoKSkKICAgICAgICAgICAgIHRyYXZlcnNlci51cGRhdGVUcmVlKCk7Ci0gICAgfQotICAg
IHdoaWxlICh0cmF2ZXJzZXIuZm91bmRIaWdoZXJQcmVjaXNpb25Db25zdGFudCgpKTsKKyAgICB9
IHdoaWxlICh0cmF2ZXJzZXIuZm91bmRIaWdoZXJQcmVjaXNpb25Db25zdGFudCgpKTsKIH0KKwor
fSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZWNvcmRDb25zdGFudFByZWNpc2lvbi5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVjb3JkQ29uc3RhbnRQ
cmVjaXNpb24uaAppbmRleCAyY2Q0MDFiNDE4MS4uY2JlOTJkNGJhZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlY29yZENvbnN0
YW50UHJlY2lzaW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvUmVjb3JkQ29uc3RhbnRQcmVjaXNpb24uaApAQCAtMywyMSArMywyNSBAQAog
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCi0vLyBE
dXJpbmcgcGFyc2luZywgYWxsIGNvbnN0YW50IGV4cHJlc3Npb25zIGFyZSBmb2xkZWQgdG8gY29u
c3RhbnQgdW5pb24gbm9kZXMuIFRoZSBleHByZXNzaW9ucyB0aGF0IGhhdmUgYmVlbgotLy8gZm9s
ZGVkIG1heSBoYXZlIGhhZCBwcmVjaXNpb24gcXVhbGlmaWVycywgd2hpY2ggc2hvdWxkIGFmZmVj
dCB0aGUgcHJlY2lzaW9uIG9mIHRoZSBjb25zdW1pbmcgb3BlcmF0aW9uLgotLy8gSWYgdGhlIGZv
bGRlZCBjb25zdGFudCB1bmlvbiBub2RlcyBhcmUgd3JpdHRlbiB0byBvdXRwdXQgYXMgc3VjaCB0
aGV5IHdvbid0IGhhdmUgYW55IHByZWNpc2lvbiBxdWFsaWZpZXJzLAotLy8gYW5kIHRoZWlyIGVm
ZmVjdCBvbiB0aGUgcHJlY2lzaW9uIG9mIHRoZSBjb25zdW1pbmcgb3BlcmF0aW9uIGlzIGxvc3Qu
CisvLyBEdXJpbmcgcGFyc2luZywgYWxsIGNvbnN0YW50IGV4cHJlc3Npb25zIGFyZSBmb2xkZWQg
dG8gY29uc3RhbnQgdW5pb24gbm9kZXMuIFRoZSBleHByZXNzaW9ucyB0aGF0CisvLyBoYXZlIGJl
ZW4gZm9sZGVkIG1heSBoYXZlIGhhZCBwcmVjaXNpb24gcXVhbGlmaWVycywgd2hpY2ggc2hvdWxk
IGFmZmVjdCB0aGUgcHJlY2lzaW9uIG9mIHRoZQorLy8gY29uc3VtaW5nIG9wZXJhdGlvbi4gSWYg
dGhlIGZvbGRlZCBjb25zdGFudCB1bmlvbiBub2RlcyBhcmUgd3JpdHRlbiB0byBvdXRwdXQgYXMg
c3VjaCB0aGV5IHdvbid0CisvLyBoYXZlIGFueSBwcmVjaXNpb24gcXVhbGlmaWVycywgYW5kIHRo
ZWlyIGVmZmVjdCBvbiB0aGUgcHJlY2lzaW9uIG9mIHRoZSBjb25zdW1pbmcgb3BlcmF0aW9uIGlz
CisvLyBsb3N0LgogLy8KLS8vIFJlY29yZENvbnN0YW50UHJlY2lzaW9uIGlzIGFuIEFTVCB0cmF2
ZXJzZXIgdGhhdCBpbnNwZWN0cyB0aGUgcHJlY2lzaW9uIHF1YWxpZmllcnMgb2YgY29uc3RhbnRz
IGFuZCBob2lzdHMKLS8vIHRoZSBjb25zdGFudHMgb3V0c2lkZSB0aGUgY29udGFpbmluZyBleHBy
ZXNzaW9uIGFzIHByZWNpc2lvbiBxdWFsaWZpZWQgbmFtZWQgdmFyaWFibGVzIGluIGNhc2UgdGhh
dCBpcwotLy8gcmVxdWlyZWQgZm9yIGNvcnJlY3QgcHJlY2lzaW9uIHByb3BhZ2F0aW9uLgorLy8g
UmVjb3JkQ29uc3RhbnRQcmVjaXNpb24gaXMgYW4gQVNUIHRyYXZlcnNlciB0aGF0IGluc3BlY3Rz
IHRoZSBwcmVjaXNpb24gcXVhbGlmaWVycyBvZiBjb25zdGFudHMKKy8vIGFuZCBob2lzdHMgdGhl
IGNvbnN0YW50cyBvdXRzaWRlIHRoZSBjb250YWluaW5nIGV4cHJlc3Npb24gYXMgcHJlY2lzaW9u
IHF1YWxpZmllZCBuYW1lZCB2YXJpYWJsZXMKKy8vIGluIGNhc2UgdGhhdCBpcyByZXF1aXJlZCBm
b3IgY29ycmVjdCBwcmVjaXNpb24gcHJvcGFnYXRpb24uCiAvLwogCiAjaWZuZGVmIENPTVBJTEVS
X1RSQU5TTEFUT1JfUkVDT1JEQ09OU1RBTlRQUkVDSVNJT05fSF8KICNkZWZpbmUgQ09NUElMRVJf
VFJBTlNMQVRPUl9SRUNPUkRDT05TVEFOVFBSRUNJU0lPTl9IXwogCituYW1lc3BhY2Ugc2gKK3sK
IGNsYXNzIFRJbnRlcm1Ob2RlOwogCiB2b2lkIFJlY29yZENvbnN0YW50UHJlY2lzaW9uKFRJbnRl
cm1Ob2RlICpyb290LCB1bnNpZ25lZCBpbnQgKnRlbXBvcmFyeUluZGV4KTsKK30gIC8vIG5hbWVz
cGFjZSBzaAogCi0jZW5kaWYgICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1JFQ09SRENPTlNUQU5U
UFJFQ0lTSU9OX0hfCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUkVDT1JEQ09OU1RB
TlRQUkVDSVNJT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1JlZ2VuZXJhdGVTdHJ1Y3ROYW1lcy5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZWdlbmVyYXRlU3RydWN0TmFt
ZXMuY3BwCmluZGV4IDFhN2Q4YWFmOGUwLi4xNjEzMDA4MDRhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVnZW5lcmF0ZVN0cnVj
dE5hbWVzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9SZWdlbmVyYXRlU3RydWN0TmFtZXMuY3BwCkBAIC03LDYgKzcsOSBAQAogI2luY2x1
ZGUgImNvbW1vbi9kZWJ1Zy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUmVnZW5l
cmF0ZVN0cnVjdE5hbWVzLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiB2b2lkIFJlZ2VuZXJhdGVT
dHJ1Y3ROYW1lczo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqc3ltYm9sKQogewogICAgIEFT
U0VSVChzeW1ib2wpOwpAQCAtNTMsNyArNTYsNyBAQCB2b2lkIFJlZ2VuZXJhdGVTdHJ1Y3ROYW1l
czo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqc3ltYm9sKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIHN0ZDo6c3RyaW5nIGlkID0gU3RyKHVuaXF1ZUlkKTsKLSAgICBUU3RyaW5nIHRt
cCA9IGtQcmVmaXggKyBUU3RyaW5nKGlkLmNfc3RyKCkpOworICAgIFRTdHJpbmcgdG1wICAgID0g
a1ByZWZpeCArIFRTdHJpbmcoaWQuY19zdHIoKSk7CiAgICAgdG1wICs9ICJfIiArIHVzZXJUeXBl
LT5uYW1lKCk7CiAgICAgdXNlclR5cGUtPnNldE5hbWUodG1wKTsKIH0KQEAgLTY5LDMgKzcyLDUg
QEAgYm9vbCBSZWdlbmVyYXRlU3RydWN0TmFtZXM6OnZpc2l0QmxvY2soVmlzaXQsIFRJbnRlcm1C
bG9jayAqYmxvY2spCiAgICAgLS1tU2NvcGVEZXB0aDsKICAgICByZXR1cm4gZmFsc2U7CiB9CisK
K30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVnZW5lcmF0ZVN0cnVjdE5hbWVzLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZWdlbmVyYXRlU3RydWN0
TmFtZXMuaAppbmRleCBhOTEwMTM1MWVjMC4uZTRmYzY3ZTY1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlZ2VuZXJhdGVTdHJ1
Y3ROYW1lcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1JlZ2VuZXJhdGVTdHJ1Y3ROYW1lcy5oCkBAIC0xMiwxNSArMTIsMTkgQEAKIAogI2lu
Y2x1ZGUgPHNldD4KIAorbmFtZXNwYWNlIHNoCit7CisKIGNsYXNzIFJlZ2VuZXJhdGVTdHJ1Y3RO
YW1lcyA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiB7CiAgIHB1YmxpYzoKLSAgICBSZWdlbmVy
YXRlU3RydWN0TmFtZXMoY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24pCisgICAgUmVnZW5lcmF0ZVN0cnVj
dE5hbWVzKGNvbnN0IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUsIGludCBzaGFkZXJWZXJzaW9u
KQogICAgICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwKICAgICAg
ICAgICBtU3ltYm9sVGFibGUoc3ltYm9sVGFibGUpLAogICAgICAgICAgIG1TaGFkZXJWZXJzaW9u
KHNoYWRlclZlcnNpb24pLAotICAgICAgICAgIG1TY29wZURlcHRoKDApIHt9CisgICAgICAgICAg
bVNjb3BlRGVwdGgoMCkKKyAgICB7CisgICAgfQogCiAgIHByb3RlY3RlZDoKICAgICB2b2lkIHZp
c2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKikgb3ZlcnJpZGU7CkBAIC0zOCw0ICs0Miw2IEBAIGNs
YXNzIFJlZ2VuZXJhdGVTdHJ1Y3ROYW1lcyA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAg
c3RkOjpzZXQ8aW50PiBtRGVjbGFyZWRHbG9iYWxTdHJ1Y3RzOwogfTsKIAorfSAgLy8gbmFtZXNw
YWNlIHNoCisKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9SRUdFTkVSQVRFU1RSVUNU
TkFNRVNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1JlbW92ZUR5bmFtaWNJbmRleGluZy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVEeW5hbWljSW5kZXhpbmcuY3Bw
CmluZGV4IDk5NGFlMzEzYTQzLi5hOGY2YjUxYzU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlRHluYW1pY0luZGV4aW5n
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9SZW1vdmVEeW5hbWljSW5kZXhpbmcuY3BwCkBAIC0xNCwxMCArMTQsMTMgQEAKICNpbmNsdWRl
ICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5oIgogI2luY2x1
ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFibGUuaCIKIAorbmFtZXNwYWNlIHNoCit7
CisKIG5hbWVzcGFjZQogewogCi1UTmFtZSBHZXRJbmRleEZ1bmN0aW9uTmFtZShjb25zdCBUVHlw
ZSAmdHlwZSwgYm9vbCB3cml0ZSkKK3N0ZDo6c3RyaW5nIEdldEluZGV4RnVuY3Rpb25OYW1lKGNv
bnN0IFRUeXBlICZ0eXBlLCBib29sIHdyaXRlKQogewogICAgIFRJbmZvU2lua0Jhc2UgbmFtZVNp
bms7CiAgICAgbmFtZVNpbmsgPDwgImR5bl9pbmRleF8iOwpAQCAtNTAsMTAgKzUzLDcgQEAgVE5h
bWUgR2V0SW5kZXhGdW5jdGlvbk5hbWUoY29uc3QgVFR5cGUgJnR5cGUsIGJvb2wgd3JpdGUpCiAg
ICAgICAgIH0KICAgICAgICAgbmFtZVNpbmsgPDwgdHlwZS5nZXROb21pbmFsU2l6ZSgpOwogICAg
IH0KLSAgICBUU3RyaW5nIG5hbWVTdHJpbmcgPSBURnVuY3Rpb246Om1hbmdsZU5hbWUobmFtZVNp
bmsuY19zdHIoKSk7Ci0gICAgVE5hbWUgbmFtZShuYW1lU3RyaW5nKTsKLSAgICBuYW1lLnNldElu
dGVybmFsKHRydWUpOwotICAgIHJldHVybiBuYW1lOworICAgIHJldHVybiBuYW1lU2luay5zdHIo
KTsKIH0KIAogVEludGVybVN5bWJvbCAqQ3JlYXRlQmFzZVN5bWJvbChjb25zdCBUVHlwZSAmdHlw
ZSwgVFF1YWxpZmllciBxdWFsaWZpZXIpCkBAIC0xMDgsMTEgKzEwOCw5IEBAIFRJbnRlcm1UeXBl
ZCAqRW5zdXJlU2lnbmVkSW50KFRJbnRlcm1UeXBlZCAqbm9kZSkKICAgICBpZiAobm9kZS0+Z2V0
QmFzaWNUeXBlKCkgPT0gRWJ0SW50KQogICAgICAgICByZXR1cm4gbm9kZTsKIAotICAgIFRJbnRl
cm1BZ2dyZWdhdGUgKmNvbnZlcnRlZE5vZGUgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BDb25z
dHJ1Y3RJbnQpOwotICAgIGNvbnZlcnRlZE5vZGUtPnNldFR5cGUoVFR5cGUoRWJ0SW50KSk7Ci0g
ICAgY29udmVydGVkTm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKG5vZGUpOwotICAgIGNv
bnZlcnRlZE5vZGUtPnNldFByZWNpc2lvbkZyb21DaGlsZHJlbigpOwotICAgIHJldHVybiBjb252
ZXJ0ZWROb2RlOworICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzID0gbmV3IFRJbnRlcm1T
ZXF1ZW5jZSgpOworICAgIGFyZ3VtZW50cy0+cHVzaF9iYWNrKG5vZGUpOworICAgIHJldHVybiBU
SW50ZXJtQWdncmVnYXRlOjpDcmVhdGVDb25zdHJ1Y3RvcihUVHlwZShFYnRJbnQpLCBFT3BDb25z
dHJ1Y3RJbnQsIGFyZ3VtZW50cyk7CiB9CiAKIFRUeXBlIEdldEZpZWxkVHlwZShjb25zdCBUVHlw
ZSAmaW5kZXhlZFR5cGUpCkBAIC0xNzIsNyArMTcwLDkgQEAgVFR5cGUgR2V0RmllbGRUeXBlKGNv
bnN0IFRUeXBlICZpbmRleGVkVHlwZSkKIC8vICAgIGJhc2VbMV0gPSB2YWx1ZTsKIC8vIH0KIC8v
IE5vdGUgdGhhdCBlbHNlIGlzIG5vdCB1c2VkIGluIGFib3ZlIGZ1bmN0aW9ucyB0byBhdm9pZCB0
aGUgUmV3cml0ZUVsc2VCbG9ja3MgdHJhbnNmb3JtYXRpb24uCi1USW50ZXJtRnVuY3Rpb25EZWZp
bml0aW9uICpHZXRJbmRleEZ1bmN0aW9uRGVmaW5pdGlvbihUVHlwZSB0eXBlLCBib29sIHdyaXRl
KQorVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqR2V0SW5kZXhGdW5jdGlvbkRlZmluaXRpb24o
VFR5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgd3JpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sVW5pcXVlSWQgJmZ1bmN0aW9uSWQpCiB7
CiAgICAgQVNTRVJUKCF0eXBlLmlzQXJyYXkoKSk7CiAgICAgLy8gQ29uc2VydmF0aXZlbHkgdXNl
IGhpZ2hwIGhlcmUsIGV2ZW4gaWYgdGhlIGluZGV4ZWQgdHlwZSBpcyBub3QgaGlnaHAuIFRoYXQg
d2F5IHRoZSBjb2RlIGNhbid0CkBAIC0xODIsNyArMTgyLDcgQEAgVEludGVybUZ1bmN0aW9uRGVm
aW5pdGlvbiAqR2V0SW5kZXhGdW5jdGlvbkRlZmluaXRpb24oVFR5cGUgdHlwZSwgYm9vbCB3cml0
ZSkKICAgICB0eXBlLnNldFByZWNpc2lvbihFYnBIaWdoKTsKIAogICAgIFRUeXBlIGZpZWxkVHlw
ZSA9IEdldEZpZWxkVHlwZSh0eXBlKTsKLSAgICBpbnQgbnVtQ2FzZXMgPSAwOworICAgIGludCBu
dW1DYXNlcyAgICA9IDA7CiAgICAgaWYgKHR5cGUuaXNNYXRyaXgoKSkKICAgICB7CiAgICAgICAg
IG51bUNhc2VzID0gdHlwZS5nZXRDb2xzKCk7CkBAIC0xOTIsMTggKzE5MiwyNyBAQCBUSW50ZXJt
RnVuY3Rpb25EZWZpbml0aW9uICpHZXRJbmRleEZ1bmN0aW9uRGVmaW5pdGlvbihUVHlwZSB0eXBl
LCBib29sIHdyaXRlKQogICAgICAgICBudW1DYXNlcyA9IHR5cGUuZ2V0Tm9taW5hbFNpemUoKTsK
ICAgICB9CiAKLSAgICBUSW50ZXJtQWdncmVnYXRlICpwYXJhbXNOb2RlID0gbmV3IFRJbnRlcm1B
Z2dyZWdhdGUoRU9wUGFyYW1ldGVycyk7Ci0gICAgVFF1YWxpZmllciBiYXNlUXVhbGlmaWVyID0g
RXZxSW5PdXQ7CisgICAgVFR5cGUgcmV0dXJuVHlwZShFYnRWb2lkKTsKKyAgICBpZiAoIXdyaXRl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuVHlwZSA9IGZpZWxkVHlwZTsKKyAgICB9CisKKyAgICBz
dGQ6OnN0cmluZyBmdW5jdGlvbk5hbWUgICAgICAgICAgICAgICAgPSBHZXRJbmRleEZ1bmN0aW9u
TmFtZSh0eXBlLCB3cml0ZSk7CisgICAgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlICpwcm90b3R5
cGVOb2RlID0gVEludGVybVRyYXZlcnNlcjo6Q3JlYXRlSW50ZXJuYWxGdW5jdGlvblByb3RvdHlw
ZU5vZGUoCisgICAgICAgIHJldHVyblR5cGUsIGZ1bmN0aW9uTmFtZS5jX3N0cigpLCBmdW5jdGlv
bklkKTsKKworICAgIFRRdWFsaWZpZXIgYmFzZVF1YWxpZmllciAgICAgPSBFdnFJbk91dDsKICAg
ICBpZiAoIXdyaXRlKQogICAgICAgICBiYXNlUXVhbGlmaWVyICAgICAgICA9IEV2cUluOwogICAg
IFRJbnRlcm1TeW1ib2wgKmJhc2VQYXJhbSA9IENyZWF0ZUJhc2VTeW1ib2wodHlwZSwgYmFzZVF1
YWxpZmllcik7Ci0gICAgcGFyYW1zTm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGJhc2VQ
YXJhbSk7CisgICAgcHJvdG90eXBlTm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGJhc2VQ
YXJhbSk7CiAgICAgVEludGVybVN5bWJvbCAqaW5kZXhQYXJhbSA9IENyZWF0ZUluZGV4U3ltYm9s
KCk7Ci0gICAgcGFyYW1zTm9kZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKGluZGV4UGFyYW0p
OworICAgIHByb3RvdHlwZU5vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhpbmRleFBhcmFt
KTsKICAgICBpZiAod3JpdGUpCiAgICAgewogICAgICAgICBUSW50ZXJtU3ltYm9sICp2YWx1ZVBh
cmFtID0gQ3JlYXRlVmFsdWVTeW1ib2woZmllbGRUeXBlKTsKLSAgICAgICAgcGFyYW1zTm9kZS0+
Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKHZhbHVlUGFyYW0pOworICAgICAgICBwcm90b3R5cGVO
b2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sodmFsdWVQYXJhbSk7CiAgICAgfQogCiAgICAg
VEludGVybUJsb2NrICpzdGF0ZW1lbnRMaXN0ID0gbmV3IFRJbnRlcm1CbG9jaygpOwpAQCAtMjcz
LDE2ICsyODIsOCBAQCBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9uICpHZXRJbmRleEZ1bmN0aW9u
RGVmaW5pdGlvbihUVHlwZSB0eXBlLCBib29sIHdyaXRlKQogICAgIGJvZHlOb2RlLT5nZXRTZXF1
ZW5jZSgpLT5wdXNoX2JhY2soaWZOb2RlKTsKICAgICBib2R5Tm9kZS0+Z2V0U2VxdWVuY2UoKS0+
cHVzaF9iYWNrKHVzZUxhc3RCbG9jayk7CiAKLSAgICBUSW50ZXJtRnVuY3Rpb25EZWZpbml0aW9u
ICppbmRleGluZ0Z1bmN0aW9uID0gbnVsbHB0cjsKLSAgICBpZiAod3JpdGUpCi0gICAgewotICAg
ICAgICBpbmRleGluZ0Z1bmN0aW9uID0gbmV3IFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24oVFR5
cGUoRWJ0Vm9pZCksIHBhcmFtc05vZGUsIGJvZHlOb2RlKTsKLSAgICB9Ci0gICAgZWxzZQotICAg
IHsKLSAgICAgICAgaW5kZXhpbmdGdW5jdGlvbiA9IG5ldyBUSW50ZXJtRnVuY3Rpb25EZWZpbml0
aW9uKGZpZWxkVHlwZSwgcGFyYW1zTm9kZSwgYm9keU5vZGUpOwotICAgIH0KLSAgICBpbmRleGlu
Z0Z1bmN0aW9uLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+c2V0TmFtZU9iaihHZXRJbmRleEZ1
bmN0aW9uTmFtZSh0eXBlLCB3cml0ZSkpOworICAgIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24g
KmluZGV4aW5nRnVuY3Rpb24gPQorICAgICAgICBuZXcgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlv
bihwcm90b3R5cGVOb2RlLCBib2R5Tm9kZSk7CiAgICAgcmV0dXJuIGluZGV4aW5nRnVuY3Rpb247
CiB9CiAKQEAgLTMwMCwxMCArMzAxLDExIEBAIGNsYXNzIFJlbW92ZUR5bmFtaWNJbmRleGluZ1Ry
YXZlcnNlciA6IHB1YmxpYyBUTFZhbHVlVHJhY2tpbmdUcmF2ZXJzZXIKICAgICBib29sIHVzZWRU
cmVlSW5zZXJ0aW9uKCkgY29uc3QgeyByZXR1cm4gbVVzZWRUcmVlSW5zZXJ0aW9uOyB9CiAKICAg
cHJvdGVjdGVkOgotICAgIC8vIFNldHMgb2YgdHlwZXMgdGhhdCBhcmUgaW5kZXhlZC4gTm90ZSB0
aGF0IHRoZXNlIGNhbiBub3Qgc3RvcmUgbXVsdGlwbGUgdmFyaWFudHMKLSAgICAvLyBvZiB0aGUg
c2FtZSB0eXBlIHdpdGggZGlmZmVyZW50IHByZWNpc2lvbnMgLSBvbmx5IG9uZSBwcmVjaXNpb24g
Z2V0cyBzdG9yZWQuCi0gICAgc3RkOjpzZXQ8VFR5cGU+IG1JbmRleGVkVmVjQW5kTWF0cml4VHlw
ZXM7Ci0gICAgc3RkOjpzZXQ8VFR5cGU+IG1Xcml0dGVuVmVjQW5kTWF0cml4VHlwZXM7CisgICAg
Ly8gTWFwcyBvZiB0eXBlcyB0aGF0IGFyZSBpbmRleGVkIHRvIHRoZSBpbmRleGluZyBmdW5jdGlv
biBpZHMgdXNlZCBmb3IgdGhlbS4gTm90ZSB0aGF0IHRoZXNlCisgICAgLy8gY2FuIG5vdCBzdG9y
ZSBtdWx0aXBsZSB2YXJpYW50cyBvZiB0aGUgc2FtZSB0eXBlIHdpdGggZGlmZmVyZW50IHByZWNp
c2lvbnMgLSBvbmx5IG9uZQorICAgIC8vIHByZWNpc2lvbiBnZXRzIHN0b3JlZC4KKyAgICBzdGQ6
Om1hcDxUVHlwZSwgVFN5bWJvbFVuaXF1ZUlkPiBtSW5kZXhlZFZlY0FuZE1hdHJpeFR5cGVzOwor
ICAgIHN0ZDo6bWFwPFRUeXBlLCBUU3ltYm9sVW5pcXVlSWQ+IG1Xcml0dGVuVmVjQW5kTWF0cml4
VHlwZXM7CiAKICAgICBib29sIG1Vc2VkVHJlZUluc2VydGlvbjsKIApAQCAtMzI3LDQ5ICszMjks
NTEgQEAgdm9pZCBSZW1vdmVEeW5hbWljSW5kZXhpbmdUcmF2ZXJzZXI6Omluc2VydEhlbHBlckRl
ZmluaXRpb25zKFRJbnRlcm1Ob2RlICpyb290KQogICAgIFRJbnRlcm1CbG9jayAqcm9vdEJsb2Nr
ID0gcm9vdC0+Z2V0QXNCbG9jaygpOwogICAgIEFTU0VSVChyb290QmxvY2sgIT0gbnVsbHB0cik7
CiAgICAgVEludGVybVNlcXVlbmNlIGluc2VydGlvbnM7Ci0gICAgZm9yIChUVHlwZSB0eXBlIDog
bUluZGV4ZWRWZWNBbmRNYXRyaXhUeXBlcykKKyAgICBmb3IgKGF1dG8gJnR5cGUgOiBtSW5kZXhl
ZFZlY0FuZE1hdHJpeFR5cGVzKQogICAgIHsKLSAgICAgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2so
R2V0SW5kZXhGdW5jdGlvbkRlZmluaXRpb24odHlwZSwgZmFsc2UpKTsKKyAgICAgICAgaW5zZXJ0
aW9ucy5wdXNoX2JhY2soR2V0SW5kZXhGdW5jdGlvbkRlZmluaXRpb24odHlwZS5maXJzdCwgZmFs
c2UsIHR5cGUuc2Vjb25kKSk7CiAgICAgfQotICAgIGZvciAoVFR5cGUgdHlwZSA6IG1Xcml0dGVu
VmVjQW5kTWF0cml4VHlwZXMpCisgICAgZm9yIChhdXRvICZ0eXBlIDogbVdyaXR0ZW5WZWNBbmRN
YXRyaXhUeXBlcykKICAgICB7Ci0gICAgICAgIGluc2VydGlvbnMucHVzaF9iYWNrKEdldEluZGV4
RnVuY3Rpb25EZWZpbml0aW9uKHR5cGUsIHRydWUpKTsKKyAgICAgICAgaW5zZXJ0aW9ucy5wdXNo
X2JhY2soR2V0SW5kZXhGdW5jdGlvbkRlZmluaXRpb24odHlwZS5maXJzdCwgdHJ1ZSwgdHlwZS5z
ZWNvbmQpKTsKICAgICB9CiAgICAgbUluc2VydGlvbnMucHVzaF9iYWNrKE5vZGVJbnNlcnRNdWx0
aXBsZUVudHJ5KHJvb3RCbG9jaywgMCwgaW5zZXJ0aW9ucywgVEludGVybVNlcXVlbmNlKCkpKTsK
IH0KIAogLy8gQ3JlYXRlIGEgY2FsbCB0byBkeW5faW5kZXhfKigpIGJhc2VkIG9uIGFuIGluZGly
ZWN0IGluZGV4aW5nIG9wIG5vZGUKIFRJbnRlcm1BZ2dyZWdhdGUgKkNyZWF0ZUluZGV4RnVuY3Rp
b25DYWxsKFRJbnRlcm1CaW5hcnkgKm5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmluZGV4ZWROb2RlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVEludGVybVR5cGVkICppbmRleCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5kZXgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sVW5p
cXVlSWQgJmZ1bmN0aW9uSWQpCiB7CiAgICAgQVNTRVJUKG5vZGUtPmdldE9wKCkgPT0gRU9wSW5k
ZXhJbmRpcmVjdCk7Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqaW5kZXhpbmdDYWxsID0gbmV3IFRJ
bnRlcm1BZ2dyZWdhdGUoRU9wRnVuY3Rpb25DYWxsKTsKKyAgICBUSW50ZXJtU2VxdWVuY2UgKmFy
Z3VtZW50cyA9IG5ldyBUSW50ZXJtU2VxdWVuY2UoKTsKKyAgICBhcmd1bWVudHMtPnB1c2hfYmFj
ayhub2RlLT5nZXRMZWZ0KCkpOworICAgIGFyZ3VtZW50cy0+cHVzaF9iYWNrKGluZGV4KTsKKwor
ICAgIFRUeXBlIGZpZWxkVHlwZSAgICAgICAgICAgICAgICA9IEdldEZpZWxkVHlwZShub2RlLT5n
ZXRMZWZ0KCktPmdldFR5cGUoKSk7CisgICAgc3RkOjpzdHJpbmcgZnVuY3Rpb25OYW1lICAgICAg
ID0gR2V0SW5kZXhGdW5jdGlvbk5hbWUobm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCksIGZhbHNl
KTsKKyAgICBUSW50ZXJtQWdncmVnYXRlICppbmRleGluZ0NhbGwgPSBUSW50ZXJtVHJhdmVyc2Vy
OjpDcmVhdGVJbnRlcm5hbEZ1bmN0aW9uQ2FsbE5vZGUoCisgICAgICAgIGZpZWxkVHlwZSwgZnVu
Y3Rpb25OYW1lLmNfc3RyKCksIGZ1bmN0aW9uSWQsIGFyZ3VtZW50cyk7CiAgICAgaW5kZXhpbmdD
YWxsLT5zZXRMaW5lKG5vZGUtPmdldExpbmUoKSk7Ci0gICAgaW5kZXhpbmdDYWxsLT5zZXRVc2Vy
RGVmaW5lZCgpOwotICAgIGluZGV4aW5nQ2FsbC0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPnNl
dE5hbWVPYmooCi0gICAgICAgIEdldEluZGV4RnVuY3Rpb25OYW1lKGluZGV4ZWROb2RlLT5nZXRU
eXBlKCksIGZhbHNlKSk7Ci0gICAgaW5kZXhpbmdDYWxsLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2Jh
Y2soaW5kZXhlZE5vZGUpOwotICAgIGluZGV4aW5nQ2FsbC0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9i
YWNrKGluZGV4KTsKLQotICAgIFRUeXBlIGZpZWxkVHlwZSA9IEdldEZpZWxkVHlwZShpbmRleGVk
Tm9kZS0+Z2V0VHlwZSgpKTsKLSAgICBpbmRleGluZ0NhbGwtPnNldFR5cGUoZmllbGRUeXBlKTsK
ICAgICByZXR1cm4gaW5kZXhpbmdDYWxsOwogfQogCiBUSW50ZXJtQWdncmVnYXRlICpDcmVhdGVJ
bmRleGVkV3JpdGVGdW5jdGlvbkNhbGwoVEludGVybUJpbmFyeSAqbm9kZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmluZGV4
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRJbnRl
cm1UeXBlZCAqd3JpdHRlblZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRJbnRlcm1UeXBlZCAqd3JpdHRlblZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2xVbmlxdWVJ
ZCAmZnVuY3Rpb25JZCkKIHsKLSAgICAvLyBEZWVwIGNvcHkgdGhlIGxlZnQgbm9kZSBzbyB0aGF0
IHR3byBwb2ludGVycyB0byB0aGUgc2FtZSBub2RlIGRvbid0IGVuZCB1cCBpbiB0aGUgdHJlZS4K
LSAgICBUSW50ZXJtTm9kZSAqbGVmdENvcHkgPSBub2RlLT5nZXRMZWZ0KCktPmRlZXBDb3B5KCk7
Ci0gICAgQVNTRVJUKGxlZnRDb3B5ICE9IG51bGxwdHIgJiYgbGVmdENvcHktPmdldEFzVHlwZWQo
KSAhPSBudWxscHRyKTsKLSAgICBUSW50ZXJtQWdncmVnYXRlICppbmRleGVkV3JpdGVDYWxsID0K
LSAgICAgICAgQ3JlYXRlSW5kZXhGdW5jdGlvbkNhbGwobm9kZSwgbGVmdENvcHktPmdldEFzVHlw
ZWQoKSwgaW5kZXgpOwotICAgIGluZGV4ZWRXcml0ZUNhbGwtPmdldEZ1bmN0aW9uU3ltYm9sSW5m
bygpLT5zZXROYW1lT2JqKAotICAgICAgICBHZXRJbmRleEZ1bmN0aW9uTmFtZShub2RlLT5nZXRM
ZWZ0KCktPmdldFR5cGUoKSwgdHJ1ZSkpOwotICAgIGluZGV4ZWRXcml0ZUNhbGwtPnNldFR5cGUo
VFR5cGUoRWJ0Vm9pZCkpOwotICAgIGluZGV4ZWRXcml0ZUNhbGwtPmdldFNlcXVlbmNlKCktPnB1
c2hfYmFjayh3cml0dGVuVmFsdWUpOworICAgIEFTU0VSVChub2RlLT5nZXRPcCgpID09IEVPcElu
ZGV4SW5kaXJlY3QpOworICAgIFRJbnRlcm1TZXF1ZW5jZSAqYXJndW1lbnRzID0gbmV3IFRJbnRl
cm1TZXF1ZW5jZSgpOworICAgIC8vIERlZXAgY29weSB0aGUgY2hpbGQgbm9kZXMgc28gdGhhdCB0
d28gcG9pbnRlcnMgdG8gdGhlIHNhbWUgbm9kZSBkb24ndCBlbmQgdXAgaW4gdGhlIHRyZWUuCisg
ICAgYXJndW1lbnRzLT5wdXNoX2JhY2sobm9kZS0+Z2V0TGVmdCgpLT5kZWVwQ29weSgpKTsKKyAg
ICBhcmd1bWVudHMtPnB1c2hfYmFjayhpbmRleC0+ZGVlcENvcHkoKSk7CisgICAgYXJndW1lbnRz
LT5wdXNoX2JhY2sod3JpdHRlblZhbHVlKTsKKworICAgIHN0ZDo6c3RyaW5nIGZ1bmN0aW9uTmFt
ZSAgICAgICAgICAgPSBHZXRJbmRleEZ1bmN0aW9uTmFtZShub2RlLT5nZXRMZWZ0KCktPmdldFR5
cGUoKSwgdHJ1ZSk7CisgICAgVEludGVybUFnZ3JlZ2F0ZSAqaW5kZXhlZFdyaXRlQ2FsbCA9IFRJ
bnRlcm1UcmF2ZXJzZXI6OkNyZWF0ZUludGVybmFsRnVuY3Rpb25DYWxsTm9kZSgKKyAgICAgICAg
VFR5cGUoRWJ0Vm9pZCksIGZ1bmN0aW9uTmFtZS5jX3N0cigpLCBmdW5jdGlvbklkLCBhcmd1bWVu
dHMpOworICAgIGluZGV4ZWRXcml0ZUNhbGwtPnNldExpbmUobm9kZS0+Z2V0TGluZSgpKTsKICAg
ICByZXR1cm4gaW5kZXhlZFdyaXRlQ2FsbDsKIH0KIApAQCAtMzkwLDcgKzM5NCw3IEBAIGJvb2wg
UmVtb3ZlRHluYW1pY0luZGV4aW5nVHJhdmVyc2VyOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwg
VEludGVybUJpbmFyeSAqbm9kCiAgICAgICAgICAgICAvLyBOb3cgdl9leHByW3MwXSBjYW4gYmUg
c2FmZWx5IGV4ZWN1dGVkIHNldmVyYWwgdGltZXMgd2l0aG91dCB1bmludGVuZGVkIHNpZGUgZWZm
ZWN0cy4KIAogICAgICAgICAgICAgLy8gSW5pdCB0aGUgdGVtcCB2YXJpYWJsZSBob2xkaW5nIHRo
ZSBpbmRleAotICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqaW5pdEluZGV4ID0gY3JlYXRl
VGVtcEluaXREZWNsYXJhdGlvbihub2RlLT5nZXRSaWdodCgpKTsKKyAgICAgICAgICAgIFRJbnRl
cm1EZWNsYXJhdGlvbiAqaW5pdEluZGV4ID0gY3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihub2Rl
LT5nZXRSaWdodCgpKTsKICAgICAgICAgICAgIGluc2VydFN0YXRlbWVudEluUGFyZW50QmxvY2so
aW5pdEluZGV4KTsKICAgICAgICAgICAgIG1Vc2VkVHJlZUluc2VydGlvbiA9IHRydWU7CiAKQEAg
LTQxMCw4ICs0MTQsMTYgQEAgYm9vbCBSZW1vdmVEeW5hbWljSW5kZXhpbmdUcmF2ZXJzZXI6OnZp
c2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2QKICAgICAgICAgICAgIEFT
U0VSVChtYXRjaGVyLm1hdGNoKG5vZGUsIGdldFBhcmVudE5vZGUoKSwgaXNMVmFsdWVSZXF1aXJl
ZEhlcmUoKSkgPT0gd3JpdGUpOwogI2VuZGlmCiAKLSAgICAgICAgICAgIFRUeXBlIHR5cGUgPSBu
b2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKTsKLSAgICAgICAgICAgIG1JbmRleGVkVmVjQW5kTWF0
cml4VHlwZXMuaW5zZXJ0KHR5cGUpOworICAgICAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUgPSBu
b2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKTsKKyAgICAgICAgICAgIFRTeW1ib2xVbmlxdWVJZCBp
bmRleGluZ0Z1bmN0aW9uSWQ7CisgICAgICAgICAgICBpZiAobUluZGV4ZWRWZWNBbmRNYXRyaXhU
eXBlcy5maW5kKHR5cGUpID09IG1JbmRleGVkVmVjQW5kTWF0cml4VHlwZXMuZW5kKCkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgbUluZGV4ZWRWZWNBbmRNYXRyaXhUeXBlc1t0eXBl
XSA9IGluZGV4aW5nRnVuY3Rpb25JZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbmRleGluZ0Z1bmN0aW9uSWQgPSBtSW5k
ZXhlZFZlY0FuZE1hdHJpeFR5cGVzW3R5cGVdOworICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBpZiAod3JpdGUpCiAgICAgICAgICAgICB7CkBAIC00MzAsMTAgKzQ0MiwzMCBAQCBib29sIFJl
bW92ZUR5bmFtaWNJbmRleGluZ1RyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJ
bnRlcm1CaW5hcnkgKm5vZAogICAgICAgICAgICAgICAgICAgICBtUmVtb3ZlSW5kZXhTaWRlRWZm
ZWN0c0luU3VidHJlZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFRJbnRlcm1CaW5hcnkgKmxlZnRC
aW5hcnkgPSBub2RlLT5nZXRMZWZ0KCktPmdldEFzQmluYXJ5Tm9kZSgpOworICAgICAgICAgICAg
ICAgIGlmIChsZWZ0QmluYXJ5ICE9IG51bGxwdHIgJiYKKyAgICAgICAgICAgICAgICAgICAgSW50
ZXJtTm9kZVBhdHRlcm5NYXRjaGVyOjpJc0R5bmFtaWNJbmRleGluZ09mVmVjdG9yT3JNYXRyaXgo
bGVmdEJpbmFyeSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBU
aGlzIGlzIGEgY2FzZSBsaWtlOgorICAgICAgICAgICAgICAgICAgICAvLyBtYXQyIG07CisgICAg
ICAgICAgICAgICAgICAgIC8vIG1bYV1bYl0rKzsKKyAgICAgICAgICAgICAgICAgICAgLy8gUHJv
Y2VzcyB0aGUgY2hpbGQgbm9kZSBtW2FdIGZpcnN0LgorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICAvLyBUT0RPKG9l
dHVhaG9AbnZpZGlhLmNvbSk6IFRoaXMgaXMgbm90IG9wdGltYWwgaWYgdGhlIGV4cHJlc3Npb24g
dXNpbmcgdGhlIHZhbHVlCiAgICAgICAgICAgICAgICAgLy8gb25seSB3cml0ZXMgaXQgYW5kIGRv
ZXNuJ3QgbmVlZCB0aGUgcHJldmlvdXMgdmFsdWUuIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTExNgog
Ci0gICAgICAgICAgICAgICAgbVdyaXR0ZW5WZWNBbmRNYXRyaXhUeXBlcy5pbnNlcnQodHlwZSk7
CisgICAgICAgICAgICAgICAgVFN5bWJvbFVuaXF1ZUlkIGluZGV4ZWRXcml0ZUZ1bmN0aW9uSWQ7
CisgICAgICAgICAgICAgICAgaWYgKG1Xcml0dGVuVmVjQW5kTWF0cml4VHlwZXMuZmluZCh0eXBl
KSA9PSBtV3JpdHRlblZlY0FuZE1hdHJpeFR5cGVzLmVuZCgpKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgbVdyaXR0ZW5WZWNBbmRNYXRyaXhUeXBlc1t0eXBlXSA9IGlu
ZGV4ZWRXcml0ZUZ1bmN0aW9uSWQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGluZGV4ZWRXcml0
ZUZ1bmN0aW9uSWQgPSBtV3JpdHRlblZlY0FuZE1hdHJpeFR5cGVzW3R5cGVdOworICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICBUVHlwZSBmaWVsZFR5cGUgPSBHZXRGaWVsZFR5cGUo
dHlwZSk7CiAKICAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9uc0JlZm9y
ZTsKQEAgLTQ0MSwyMyArNDczLDIzIEBAIGJvb2wgUmVtb3ZlRHluYW1pY0luZGV4aW5nVHJhdmVy
c2VyOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kCiAKICAgICAg
ICAgICAgICAgICAvLyBTdG9yZSB0aGUgaW5kZXggaW4gYSB0ZW1wb3Jhcnkgc2lnbmVkIGludCB2
YXJpYWJsZS4KICAgICAgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmluZGV4SW5pdGlhbGl6ZXIg
PSBFbnN1cmVTaWduZWRJbnQobm9kZS0+Z2V0UmlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgVElu
dGVybUFnZ3JlZ2F0ZSAqaW5pdEluZGV4ID0gY3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihpbmRl
eEluaXRpYWxpemVyKTsKKyAgICAgICAgICAgICAgICBUSW50ZXJtRGVjbGFyYXRpb24gKmluaXRJ
bmRleCAgPSBjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKGluZGV4SW5pdGlhbGl6ZXIpOwogICAg
ICAgICAgICAgICAgIGluaXRJbmRleC0+c2V0TGluZShub2RlLT5nZXRMaW5lKCkpOwogICAgICAg
ICAgICAgICAgIGluc2VydGlvbnNCZWZvcmUucHVzaF9iYWNrKGluaXRJbmRleCk7CiAKLSAgICAg
ICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICppbmRleGluZ0NhbGwgPSBDcmVhdGVJbmRleEZ1
bmN0aW9uQ2FsbCgKLSAgICAgICAgICAgICAgICAgICAgbm9kZSwgbm9kZS0+Z2V0TGVmdCgpLCBj
cmVhdGVUZW1wU3ltYm9sKGluZGV4SW5pdGlhbGl6ZXItPmdldFR5cGUoKSkpOwotCiAgICAgICAg
ICAgICAgICAgLy8gQ3JlYXRlIGEgbm9kZSBmb3IgcmVmZXJyaW5nIHRvIHRoZSBpbmRleCBhZnRl
ciB0aGUgbmV4dFRlbXBvcmFyeUluZGV4KCkgY2FsbAogICAgICAgICAgICAgICAgIC8vIGJlbG93
LgogICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnRlbXBJbmRleCA9IGNyZWF0ZVRlbXBT
eW1ib2woaW5kZXhJbml0aWFsaXplci0+Z2V0VHlwZSgpKTsKIAorICAgICAgICAgICAgICAgIFRJ
bnRlcm1BZ2dyZWdhdGUgKmluZGV4aW5nQ2FsbCA9CisgICAgICAgICAgICAgICAgICAgIENyZWF0
ZUluZGV4RnVuY3Rpb25DYWxsKG5vZGUsIHRlbXBJbmRleCwgaW5kZXhpbmdGdW5jdGlvbklkKTsK
KwogICAgICAgICAgICAgICAgIG5leHRUZW1wb3JhcnlJbmRleCgpOyAgLy8gRnJvbSBub3cgb24s
IGNyZWF0aW5nIHRlbXBvcmFyeSBzeW1ib2xzIHRoYXQgcmVmZXIgdG8gdGhlCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaWVsZCB2YWx1ZS4KICAgICAgICAgICAg
ICAgICBpbnNlcnRpb25zQmVmb3JlLnB1c2hfYmFjayhjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9u
KGluZGV4aW5nQ2FsbCkpOwogCi0gICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqaW5k
ZXhlZFdyaXRlQ2FsbCA9Ci0gICAgICAgICAgICAgICAgICAgIENyZWF0ZUluZGV4ZWRXcml0ZUZ1
bmN0aW9uQ2FsbChub2RlLCB0ZW1wSW5kZXgsIGNyZWF0ZVRlbXBTeW1ib2woZmllbGRUeXBlKSk7
CisgICAgICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAqaW5kZXhlZFdyaXRlQ2FsbCA9IENy
ZWF0ZUluZGV4ZWRXcml0ZUZ1bmN0aW9uQ2FsbCgKKyAgICAgICAgICAgICAgICAgICAgbm9kZSwg
dGVtcEluZGV4LCBjcmVhdGVUZW1wU3ltYm9sKGZpZWxkVHlwZSksIGluZGV4ZWRXcml0ZUZ1bmN0
aW9uSWQpOwogICAgICAgICAgICAgICAgIGluc2VydGlvbnNBZnRlci5wdXNoX2JhY2soaW5kZXhl
ZFdyaXRlQ2FsbCk7CiAgICAgICAgICAgICAgICAgaW5zZXJ0U3RhdGVtZW50c0luUGFyZW50Qmxv
Y2soaW5zZXJ0aW9uc0JlZm9yZSwgaW5zZXJ0aW9uc0FmdGVyKTsKICAgICAgICAgICAgICAgICBx
dWV1ZVJlcGxhY2VtZW50KG5vZGUsIGNyZWF0ZVRlbXBTeW1ib2woZmllbGRUeXBlKSwgT3JpZ2lu
YWxOb2RlOjpJU19EUk9QUEVEKTsKQEAgLTQ3Miw3ICs1MDQsNyBAQCBib29sIFJlbW92ZUR5bmFt
aWNJbmRleGluZ1RyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5h
cnkgKm5vZAogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBpbmRleF9leHByIGlzIHVuc2lnbmVk
LCB3ZSdsbCBjb252ZXJ0IGl0IHRvIHNpZ25lZC4KICAgICAgICAgICAgICAgICBBU1NFUlQoIW1S
ZW1vdmVJbmRleFNpZGVFZmZlY3RzSW5TdWJ0cmVlKTsKICAgICAgICAgICAgICAgICBUSW50ZXJt
QWdncmVnYXRlICppbmRleGluZ0NhbGwgPSBDcmVhdGVJbmRleEZ1bmN0aW9uQ2FsbCgKLSAgICAg
ICAgICAgICAgICAgICAgbm9kZSwgbm9kZS0+Z2V0TGVmdCgpLCBFbnN1cmVTaWduZWRJbnQobm9k
ZS0+Z2V0UmlnaHQoKSkpOworICAgICAgICAgICAgICAgICAgICBub2RlLCBFbnN1cmVTaWduZWRJ
bnQobm9kZS0+Z2V0UmlnaHQoKSksIGluZGV4aW5nRnVuY3Rpb25JZCk7CiAgICAgICAgICAgICAg
ICAgcXVldWVSZXBsYWNlbWVudChub2RlLCBpbmRleGluZ0NhbGwsIE9yaWdpbmFsTm9kZTo6SVNf
RFJPUFBFRCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTUwMyw2ICs1MzUsMTMgQEAg
dm9pZCBSZW1vdmVEeW5hbWljSW5kZXhpbmcoVEludGVybU5vZGUgKnJvb3QsCiAgICAgICAgIHJv
b3QtPnRyYXZlcnNlKCZ0cmF2ZXJzZXIpOwogICAgICAgICB0cmF2ZXJzZXIudXBkYXRlVHJlZSgp
OwogICAgIH0gd2hpbGUgKHRyYXZlcnNlci51c2VkVHJlZUluc2VydGlvbigpKTsKKyAgICAvLyBU
T09EKG9ldHVhaG9AbnZpZGlhLmNvbSk6IEl0IG1pZ2h0IGJlIG5pY2VyIHRvIGFkZCB0aGUgaGVs
cGVyIGRlZmluaXRpb25zIGFsc28gaW4gdGhlIG1pZGRsZQorICAgIC8vIG9mIHRyYXZlcnNhbC4g
Tm93IHRoZSB0cmVlIGVuZHMgdXAgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlIGluIHRoZSBtaWRk
bGUsIHNpbmNlIHRoZXJlIGFyZQorICAgIC8vIGZ1bmN0aW9uIGNhbGwgbm9kZXMgd2l0aCBubyBj
b3JyZXNwb25kaW5nIGRlZmluaXRpb24gbm9kZXMuIFRoaXMgbmVlZHMgc3BlY2lhbCBoYW5kbGlu
ZyBpbgorICAgIC8vIFRJbnRlcm1MVmFsdWVUcmFja2luZ1RyYXZlcnNlciwgYW5kIGNyZWF0ZXMg
aW50cmljYWNpZXMgdGhhdCBhcmUgbm90IGVhc2lseSBhcHBhcmVudCBmcm9tIGEKKyAgICAvLyBz
dXBlcmZpY2lhbCByZWFkaW5nIG9mIHRoZSBjb2RlLgogICAgIHRyYXZlcnNlci5pbnNlcnRIZWxw
ZXJEZWZpbml0aW9ucyhyb290KTsKICAgICB0cmF2ZXJzZXIudXBkYXRlVHJlZSgpOwogfQorCit9
ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1JlbW92ZUR5bmFtaWNJbmRleGluZy5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlRHluYW1pY0luZGV4
aW5nLmgKaW5kZXggYWUzYTkzYzliMTQuLjA2MzA1ZDBmODI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVEeW5hbWljSW5k
ZXhpbmcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9SZW1vdmVEeW5hbWljSW5kZXhpbmcuaApAQCAtMTAsNiArMTAsOSBAQAogI2lmbmRlZiBD
T01QSUxFUl9UUkFOU0xBVE9SX1JFTU9WRURZTkFNSUNJTkRFWElOR19IXwogI2RlZmluZSBDT01Q
SUxFUl9UUkFOU0xBVE9SX1JFTU9WRURZTkFNSUNJTkRFWElOR19IXwogCituYW1lc3BhY2Ugc2gK
K3sKKwogY2xhc3MgVEludGVybU5vZGU7CiBjbGFzcyBUU3ltYm9sVGFibGU7CiAKQEAgLTE4LDQg
KzIxLDYgQEAgdm9pZCBSZW1vdmVEeW5hbWljSW5kZXhpbmcoVEludGVybU5vZGUgKnJvb3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24pOwogCit9ICAv
LyBuYW1lc3BhY2Ugc2gKKwogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1JFTU9WRURZ
TkFNSUNJTkRFWElOR19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24uY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlSW52YXJp
YW50RGVjbGFyYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
Li5kNWUxMmJhYmM3NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlbW92ZUludmFyaWFudERlY2xhcmF0aW9uLmNwcApA
QCAtMCwwICsxLDQzIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24uaCIKKworI2luY2x1ZGUgImNvbXBpbGVy
L3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgorCituYW1lc3BhY2Ugc2gKK3sKKworbmFtZXNwYWNl
Cit7CisKKy8vIEFuIEFTVCB0cmF2ZXJzZXIgdGhhdCByZW1vdmVzIGludmFyaWFudCBkZWNsYXJh
dGlvbiBmb3IgaW5wdXQgaW4gZnJhZ21lbnQgc2hhZGVyCisvLyB3aGVuIEdMU0wgPj0gNC4yMCBh
bmQgZm9yIG91dHB1dCBpbiB2ZXJ0ZXggc2hhZGVyIHdoZW4gR0xTTCA8IDQuMi4KK2NsYXNzIFJl
bW92ZUludmFyaWFudERlY2xhcmF0aW9uVHJhdmVyc2VyIDogcHVibGljIFRJbnRlcm1UcmF2ZXJz
ZXIKK3sKKyAgcHVibGljOgorICAgIFJlbW92ZUludmFyaWFudERlY2xhcmF0aW9uVHJhdmVyc2Vy
KCkgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSkge30KKworICBwcml2YXRl
OgorICAgIGJvb2wgdmlzaXRJbnZhcmlhbnREZWNsYXJhdGlvbihWaXNpdCB2aXNpdCwgVEludGVy
bUludmFyaWFudERlY2xhcmF0aW9uICpub2RlKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgVElu
dGVybVNlcXVlbmNlIGVtcHR5UmVwbGFjZW1lbnQ7CisgICAgICAgIG1NdWx0aVJlcGxhY2VtZW50
cy5wdXNoX2JhY2soCisgICAgICAgICAgICBOb2RlUmVwbGFjZVdpdGhNdWx0aXBsZUVudHJ5KGdl
dFBhcmVudE5vZGUoKS0+Z2V0QXNCbG9jaygpLCBub2RlLCBlbXB0eVJlcGxhY2VtZW50KSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9OworCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCisKK3ZvaWQgUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb24oVEludGVybU5vZGUgKnJvb3Qp
Cit7CisgICAgUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRpb25UcmF2ZXJzZXIgdHJhdmVyc2VyOwor
ICAgIHJvb3QtPnRyYXZlcnNlKCZ0cmF2ZXJzZXIpOworICAgIHRyYXZlcnNlci51cGRhdGVUcmVl
KCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRp
b24uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jl
bW92ZUludmFyaWFudERlY2xhcmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLmNmOWQ0YWE0YzI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlSW52YXJpYW50RGVjbGFyYXRp
b24uaApAQCAtMCwwICsxLDE4IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2lmbmRlZiBDT01QSUxFUl9U
UkFOU0xBVE9SX1JFTU9WRUlOVkFSSUFOVERFQ0xBUkFUSU9OX0hfCisjZGVmaW5lIENPTVBJTEVS
X1RSQU5TTEFUT1JfUkVNT1ZFSU5WQVJJQU5UREVDTEFSQVRJT05fSF8KKworY2xhc3MgVEludGVy
bU5vZGU7CituYW1lc3BhY2Ugc2gKK3sKKwordm9pZCBSZW1vdmVJbnZhcmlhbnREZWNsYXJhdGlv
bihUSW50ZXJtTm9kZSAqcm9vdCk7CisKK30gIC8vIG5hbWVzcGFjZSBzaAorCisjZW5kaWYgIC8v
IENPTVBJTEVSX1RSQU5TTEFUT1JfUkVNT1ZFSU5WQVJJQU5UREVDTEFSQVRJT05fSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jl
bW92ZVBvdy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9SZW1vdmVQb3cuY3BwCmluZGV4IDRiMGZlNjk0ODg2Li5jYTdkMDhkZmY5ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVt
b3ZlUG93LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9SZW1vdmVQb3cuY3BwCkBAIC0xMyw2ICsxMyw5IEBACiAjaW5jbHVkZSAiY29tcGls
ZXIvdHJhbnNsYXRvci9JbmZvU2luay5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3Iv
SW50ZXJtTm9kZS5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogbmFtZXNwYWNlCiB7CiAKQEAgLTQz
LDggKzQ2LDcgQEAgY2xhc3MgUmVtb3ZlUG93VHJhdmVyc2VyIDogcHVibGljIFRJbnRlcm1UcmF2
ZXJzZXIKIH07CiAKIFJlbW92ZVBvd1RyYXZlcnNlcjo6UmVtb3ZlUG93VHJhdmVyc2VyKCkKLSAg
ICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwKLSAgICAgIG1OZWVkQW5v
dGhlckl0ZXJhdGlvbihmYWxzZSkKKyAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2Us
IGZhbHNlKSwgbU5lZWRBbm90aGVySXRlcmF0aW9uKGZhbHNlKQogewogfQogCkBAIC03OCw3ICs4
MCw3IEBAIGJvb2wgUmVtb3ZlUG93VHJhdmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNp
dCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotfSAvLyBu
YW1lc3BhY2UKK30gIC8vIG5hbWVzcGFjZQogCiB2b2lkIFJlbW92ZVBvdyhUSW50ZXJtTm9kZSAq
cm9vdCkKIHsKQEAgLTg5LDYgKzkxLDcgQEAgdm9pZCBSZW1vdmVQb3coVEludGVybU5vZGUgKnJv
b3QpCiAgICAgICAgIHRyYXZlcnNlci5uZXh0SXRlcmF0aW9uKCk7CiAgICAgICAgIHJvb3QtPnRy
YXZlcnNlKCZ0cmF2ZXJzZXIpOwogICAgICAgICB0cmF2ZXJzZXIudXBkYXRlVHJlZSgpOwotICAg
IH0KLSAgICB3aGlsZSAodHJhdmVyc2VyLm5lZWRBbm90aGVySXRlcmF0aW9uKCkpOworICAgIH0g
d2hpbGUgKHRyYXZlcnNlci5uZWVkQW5vdGhlckl0ZXJhdGlvbigpKTsKIH0KKworfSAgLy8gbmFt
ZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9SZW1vdmVQb3cuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1JlbW92ZVBvdy5oCmluZGV4IDQwZjlkNjcyYjI0Li4zY2Q4NDk4
OGE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvUmVtb3ZlUG93LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlUG93LmgKQEAgLTExLDggKzExLDExIEBACiAjaWZuZGVm
IENPTVBJTEVSX1RSQU5TTEFUT1JfUkVNT1ZFUE9XX0hfCiAjZGVmaW5lIENPTVBJTEVSX1RSQU5T
TEFUT1JfUkVNT1ZFUE9XX0hfCiAKK25hbWVzcGFjZSBzaAorewogY2xhc3MgVEludGVybU5vZGU7
CiAKIHZvaWQgUmVtb3ZlUG93KFRJbnRlcm1Ob2RlICpyb290KTsKK30gIC8vIG5hbWVzcGFjZSBz
aAogCi0jZW5kaWYgICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1JFTU9WRVBPV19IXworI2VuZGlm
ICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1JFTU9WRVBPV19IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmVtb3ZlU3dpdGNoRmFs
bFRocm91Z2guY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvUmVtb3ZlU3dpdGNoRmFsbFRocm91Z2guY3BwCmluZGV4IGRmOGNlMWUxZjM2Li42YzEw
OGExMmQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvUmVtb3ZlU3dpdGNoRmFsbFRocm91Z2guY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlbW92ZVN3aXRjaEZhbGxUaHJv
dWdoLmNwcApAQCAtNiwxMyArNiwxNiBAQAogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9SZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaC5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogVEludGVy
bUJsb2NrICpSZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaDo6cmVtb3ZlRmFsbFRocm91Z2goVEludGVy
bUJsb2NrICpzdGF0ZW1lbnRMaXN0KQogewogICAgIFJlbW92ZVN3aXRjaEZhbGxUaHJvdWdoIHJt
KHN0YXRlbWVudExpc3QpOwogICAgIEFTU0VSVChzdGF0ZW1lbnRMaXN0KTsKICAgICBzdGF0ZW1l
bnRMaXN0LT50cmF2ZXJzZSgmcm0pOwogICAgIGJvb2wgbGFzdFN0YXRlbWVudFdhc0JyZWFrID0g
cm0ubUxhc3RTdGF0ZW1lbnRXYXNCcmVhazsKLSAgICBybS5tTGFzdFN0YXRlbWVudFdhc0JyZWFr
ID0gdHJ1ZTsKKyAgICBybS5tTGFzdFN0YXRlbWVudFdhc0JyZWFrICA9IHRydWU7CiAgICAgcm0u
aGFuZGxlUHJldmlvdXNDYXNlKCk7CiAgICAgaWYgKCFsYXN0U3RhdGVtZW50V2FzQnJlYWspCiAg
ICAgewpAQCAtMTE0LDE2ICsxMTcsMTYgQEAgdm9pZCBSZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaDo6
aGFuZGxlUHJldmlvdXNDYXNlKCkKICAgICAgICAgICAgICAgICAvLyBJbmNsdWRlIGFsbCB0aGUg
c3RhdGVtZW50cyB0aGF0IHRoaXMgY2FzZSBjYW4gZmFsbCB0aHJvdWdoIHVuZGVyIHRoZSBzYW1l
IGxhYmVsLgogICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSBpOyBqIDwgbUNhc2VzU2hh
cmluZ0JyZWFrLnNpemUoKTsgKytqKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IHN0YXJ0SW5kZXggPSBqID4gaSA/IDEgOiAwOyAvLyBBZGQgdGhlIGxhYmVs
IG9ubHkgZnJvbSB0aGUgZmlyc3Qgc2VxdWVuY2UuCisgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBzdGFydEluZGV4ID0KKyAgICAgICAgICAgICAgICAgICAgICAgIGogPiBpID8gMSA6IDA7ICAv
LyBBZGQgdGhlIGxhYmVsIG9ubHkgZnJvbSB0aGUgZmlyc3Qgc2VxdWVuY2UuCiAgICAgICAgICAg
ICAgICAgICAgIG91dHB1dFNlcXVlbmNlKG1DYXNlc1NoYXJpbmdCcmVhay5hdChqKS0+Z2V0U2Vx
dWVuY2UoKSwgc3RhcnRJbmRleCk7Ci0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgbUNhc2VzU2hhcmluZ0JyZWFrLmNsZWFyKCk7CiAgICAgfQog
ICAgIG1MYXN0U3RhdGVtZW50V2FzQnJlYWsgPSBmYWxzZTsKLSAgICBtUHJldmlvdXNDYXNlID0g
bnVsbHB0cjsKKyAgICBtUHJldmlvdXNDYXNlICAgICAgICAgID0gbnVsbHB0cjsKIH0KIAogYm9v
bCBSZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaDo6dmlzaXRDYXNlKFZpc2l0LCBUSW50ZXJtQ2FzZSAq
bm9kZSkKQEAgLTE2NywzICsxNzAsNSBAQCBib29sIFJlbW92ZVN3aXRjaEZhbGxUaHJvdWdoOjp2
aXNpdEJyYW5jaChWaXNpdCwgVEludGVybUJyYW5jaCAqbm9kZSkKICAgICBtTGFzdFN0YXRlbWVu
dFdhc0JyZWFrID0gdHJ1ZTsKICAgICByZXR1cm4gZmFsc2U7CiB9CisKK30gIC8vIG5hbWVzcGFj
ZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvUmVtb3ZlU3dpdGNoRmFsbFRocm91Z2guaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1JlbW92ZVN3aXRjaEZhbGxUaHJvdWdoLmgKaW5k
ZXggMTcxYzUxYmYzYTQuLmExOWM0Mzc2MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jl
bW92ZVN3aXRjaEZhbGxUaHJvdWdoLmgKQEAgLTksNiArOSw5IEBACiAKICNpbmNsdWRlICJjb21w
aWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKIAorbmFtZXNwYWNlIHNoCit7CisKIGNsYXNz
IFJlbW92ZVN3aXRjaEZhbGxUaHJvdWdoIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKIHsKICAg
cHVibGljOgpAQCAtNDIsNCArNDUsNiBAQCBjbGFzcyBSZW1vdmVTd2l0Y2hGYWxsVGhyb3VnaCA6
IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgc3RkOjp2ZWN0b3I8VEludGVybUJsb2NrICo+
IG1DYXNlc1NoYXJpbmdCcmVhazsKIH07CiAKLSNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9S
X1JFTU9WRVNXSVRDSEZBTExUSFJPVUdIX0hfCit9ICAvLyBuYW1lc3BhY2Ugc2gKKworI2VuZGlm
ICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1JFTU9WRVNXSVRDSEZBTExUSFJPVUdIX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9S
ZXdyaXRlRG9XaGlsZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9SZXdyaXRlRG9XaGlsZS5jcHAKaW5kZXggOWNjNTUxYmI3OWMuLjc5OTljYmY0
OTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9SZXdyaXRlRG9XaGlsZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZURvV2hpbGUuY3BwCkBAIC0xMSw2ICsxMSw5
IEBACiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKIAorbmFt
ZXNwYWNlIHNoCit7CisKIG5hbWVzcGFjZQogewogCkBAIC02Nyw3ICs3MCw3IEBAIGNsYXNzIERv
V2hpbGVSZXdyaXRlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgICAgICAgICBUVHlw
ZSBib29sVHlwZSA9IFRUeXBlKEVidEJvb2wpOwogCiAgICAgICAgICAgICAvLyBib29sIHRlbXAg
PSBmYWxzZTsKLSAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnRlbXBEZWNsYXJhdGlvbiA9
IG51bGxwdHI7CisgICAgICAgICAgICBUSW50ZXJtRGVjbGFyYXRpb24gKnRlbXBEZWNsYXJhdGlv
biA9IG51bGxwdHI7CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgVENvbnN0YW50VW5p
b24gKmZhbHNlQ29uc3RhbnQgPSBuZXcgVENvbnN0YW50VW5pb24oKTsKICAgICAgICAgICAgICAg
ICBmYWxzZUNvbnN0YW50LT5zZXRCQ29uc3QoZmFsc2UpOwpAQCAtMTUyLDMgKzE1NSw1IEBAIHZv
aWQgUmV3cml0ZURvV2hpbGUoVEludGVybU5vZGUgKnJvb3QsIHVuc2lnbmVkIGludCAqdGVtcG9y
YXJ5SW5kZXgpCiAKICAgICByb290LT50cmF2ZXJzZSgmcmV3cml0ZXIpOwogfQorCit9ICAvLyBu
YW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1Jld3JpdGVEb1doaWxlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlRG9XaGlsZS5oCmluZGV4IGY2ZWMxY2Fm
MDY3Li45MWE3OTU4YzAwNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZURvV2hpbGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlRG9XaGlsZS5oCkBAIC0x
MCw3ICsxMCwxMCBAQAogI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX1JFV1JJVEVET1dISUxF
X0hfCiAjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfUkVXUklURURPV0hJTEVfSF8KIAorbmFt
ZXNwYWNlIHNoCit7CiBjbGFzcyBUSW50ZXJtTm9kZTsKIHZvaWQgUmV3cml0ZURvV2hpbGUoVElu
dGVybU5vZGUgKnJvb3QsIHVuc2lnbmVkIGludCAqdGVtcG9yYXJ5SW5kZXgpOworfSAgLy8gbmFt
ZXNwYWNlIHNoCiAKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9SRVdSSVRFRE9XSElM
RV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvUmV3cml0ZUVsc2VCbG9ja3MuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZUVsc2VCbG9ja3MuY3BwCmluZGV4IGFhZmI4
NmYxYzk2Li4xNWFlZDRjZGQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZUVsc2VCbG9ja3MuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVFbHNlQmxv
Y2tzLmNwcApAQCAtMzQsMTUgKzM0LDE0IEBAIGNsYXNzIEVsc2VCbG9ja1Jld3JpdGVyIDogcHVi
bGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICBUSW50ZXJtTm9kZSAqcmV3cml0ZUlmRWxzZShUSW50
ZXJtSWZFbHNlICppZkVsc2UpOwogfTsKIAotRWxzZUJsb2NrUmV3cml0ZXI6OkVsc2VCbG9ja1Jl
d3JpdGVyKCkKLSAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIHRydWUpLAotICAg
ICAgbUZ1bmN0aW9uVHlwZShOVUxMKQote30KK0Vsc2VCbG9ja1Jld3JpdGVyOjpFbHNlQmxvY2tS
ZXdyaXRlcigpIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgdHJ1ZSksIG1GdW5jdGlv
blR5cGUoTlVMTCkKK3sKK30KIAogYm9vbCBFbHNlQmxvY2tSZXdyaXRlcjo6dmlzaXRGdW5jdGlv
bkRlZmluaXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvbkRlZmluaXRpb24gKm5vZGUp
CiB7CiAgICAgLy8gU3RvcmUgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY29udGV4dCAoc2VlIGNvbW1l
bnQgYmVsb3cpCi0gICAgbUZ1bmN0aW9uVHlwZSA9ICgodmlzaXQgPT0gUHJlVmlzaXQpID8gJm5v
ZGUtPmdldFR5cGUoKSA6IG51bGxwdHIpOworICAgIG1GdW5jdGlvblR5cGUgPSAoKHZpc2l0ID09
IFByZVZpc2l0KSA/ICZub2RlLT5nZXRGdW5jdGlvblByb3RvdHlwZSgpLT5nZXRUeXBlKCkgOiBu
dWxscHRyKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNzAsOCArNjksNyBAQCBUSW50ZXJt
Tm9kZSAqRWxzZUJsb2NrUmV3cml0ZXI6OnJld3JpdGVJZkVsc2UoVEludGVybUlmRWxzZSAqaWZF
bHNlKQogCiAgICAgbmV4dFRlbXBvcmFyeUluZGV4KCk7CiAKLSAgICBUSW50ZXJtVHlwZWQgKnR5
cGVkQ29uZGl0aW9uICAgICA9IGlmRWxzZS0+Z2V0Q29uZGl0aW9uKCktPmdldEFzVHlwZWQoKTsK
LSAgICBUSW50ZXJtQWdncmVnYXRlICpzdG9yZUNvbmRpdGlvbiA9IGNyZWF0ZVRlbXBJbml0RGVj
bGFyYXRpb24odHlwZWRDb25kaXRpb24pOworICAgIFRJbnRlcm1EZWNsYXJhdGlvbiAqc3RvcmVD
b25kaXRpb24gPSBjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKGlmRWxzZS0+Z2V0Q29uZGl0aW9u
KCkpOwogCiAgICAgVEludGVybUJsb2NrICpmYWxzZUJsb2NrID0gbnVsbHB0cjsKIApAQCAtODYs
OSArODQsOSBAQCBUSW50ZXJtTm9kZSAqRWxzZUJsb2NrUmV3cml0ZXI6OnJld3JpdGVJZkVsc2Uo
VEludGVybUlmRWxzZSAqaWZFbHNlKQogICAgICAgICAvLyByZXR1cm5zICh0aGF0IGFyZSB1bnJl
YWNoYWJsZSkgd2UgY2FuIHNpbGVuY2UgdGhpcyBjb21waWxlIGVycm9yLgogICAgICAgICBpZiAo
bUZ1bmN0aW9uVHlwZSAmJiBtRnVuY3Rpb25UeXBlLT5nZXRCYXNpY1R5cGUoKSAhPSBFYnRWb2lk
KQogICAgICAgICB7Ci0gICAgICAgICAgICBUU3RyaW5nIHR5cGVTdHJpbmcgPSBtRnVuY3Rpb25U
eXBlLT5nZXRTdHJ1Y3QoKSA/IG1GdW5jdGlvblR5cGUtPmdldFN0cnVjdCgpLT5uYW1lKCkgOgot
ICAgICAgICAgICAgICAgIG1GdW5jdGlvblR5cGUtPmdldEJhc2ljU3RyaW5nKCk7Ci0gICAgICAg
ICAgICBUU3RyaW5nIHJhd1RleHQgPSAicmV0dXJuICgiICsgdHlwZVN0cmluZyArICIpMCI7Cisg
ICAgICAgICAgICBUU3RyaW5nIHR5cGVTdHJpbmcgPSBtRnVuY3Rpb25UeXBlLT5nZXRTdHJ1Y3Qo
KSA/IG1GdW5jdGlvblR5cGUtPmdldFN0cnVjdCgpLT5uYW1lKCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbUZ1bmN0aW9uVHlw
ZS0+Z2V0QmFzaWNTdHJpbmcoKTsKKyAgICAgICAgICAgIFRTdHJpbmcgcmF3VGV4dCAgICAgICAg
PSAicmV0dXJuICgiICsgdHlwZVN0cmluZyArICIpMCI7CiAgICAgICAgICAgICBUSW50ZXJtUmF3
ICpyZXR1cm5Ob2RlID0gbmV3IFRJbnRlcm1SYXcoKm1GdW5jdGlvblR5cGUsIHJhd1RleHQpOwog
ICAgICAgICAgICAgbmVnYXRlZEVsc2UgICAgICAgICAgICA9IG5ldyBUSW50ZXJtQmxvY2soKTsK
ICAgICAgICAgICAgIG5lZ2F0ZWRFbHNlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2socmV0dXJu
Tm9kZSk7CkBAIC0xMTEsNyArMTA5LDYgQEAgVEludGVybU5vZGUgKkVsc2VCbG9ja1Jld3JpdGVy
OjpyZXdyaXRlSWZFbHNlKFRJbnRlcm1JZkVsc2UgKmlmRWxzZSkKIAogICAgIHJldHVybiBibG9j
azsKIH0KLQogfQogCiB2b2lkIFJld3JpdGVFbHNlQmxvY2tzKFRJbnRlcm1Ob2RlICpub2RlLCB1
bnNpZ25lZCBpbnQgKnRlbXBvcmFyeUluZGV4KQpAQCAtMTIwLDUgKzExNyw0IEBAIHZvaWQgUmV3
cml0ZUVsc2VCbG9ja3MoVEludGVybU5vZGUgKm5vZGUsIHVuc2lnbmVkIGludCAqdGVtcG9yYXJ5
SW5kZXgpCiAgICAgcmV3cml0ZXIudXNlVGVtcG9yYXJ5SW5kZXgodGVtcG9yYXJ5SW5kZXgpOwog
ICAgIG5vZGUtPnRyYXZlcnNlKCZyZXdyaXRlcik7CiB9Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVFbHNlQmxv
Y2tzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9S
ZXdyaXRlRWxzZUJsb2Nrcy5oCmluZGV4IDI0YTQyNWU2NmQ1Li4wNWE4NjM0YmVkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3
cml0ZUVsc2VCbG9ja3MuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9SZXdyaXRlRWxzZUJsb2Nrcy5oCkBAIC0xNiw3ICsxNiw2IEBAIG5hbWVz
cGFjZSBzaAogewogCiB2b2lkIFJld3JpdGVFbHNlQmxvY2tzKFRJbnRlcm1Ob2RlICpub2RlLCB1
bnNpZ25lZCBpbnQgKnRlbXBvcmFyeUluZGV4KTsKLQogfQogCi0jZW5kaWYgLy8gQ09NUElMRVJf
VFJBTlNMQVRPUl9SRVdSSVRFRUxTRUJMT0NLU19IXworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFO
U0xBVE9SX1JFV1JJVEVFTFNFQkxPQ0tTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdy
aXRlVGV4ZWxGZXRjaE9mZnNldC5jcHAKaW5kZXggNmQwYzg2NmY4MjguLjU1NGIwNDRlY2Y3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9SZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQuY3BwCkBA
IC0yMSw5ICsyMSw3IEBAIG5hbWVzcGFjZQogY2xhc3MgVHJhdmVyc2VyIDogcHVibGljIFRJbnRl
cm1UcmF2ZXJzZXIKIHsKICAgcHVibGljOgotICAgIHN0YXRpYyB2b2lkIEFwcGx5KFRJbnRlcm1O
b2RlICpyb290LAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2xUYWJsZSAmc3lt
Ym9sVGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24pOworICAg
IHN0YXRpYyB2b2lkIEFwcGx5KFRJbnRlcm1Ob2RlICpyb290LCBjb25zdCBUU3ltYm9sVGFibGUg
JnN5bWJvbFRhYmxlLCBpbnQgc2hhZGVyVmVyc2lvbik7CiAKICAgcHJpdmF0ZToKICAgICBUcmF2
ZXJzZXIoY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwgaW50IHNoYWRlclZlcnNpb24p
OwpAQCAtNDEsOSArMzksNyBAQCBUcmF2ZXJzZXI6OlRyYXZlcnNlcihjb25zdCBUU3ltYm9sVGFi
bGUgJnN5bWJvbFRhYmxlLCBpbnQgc2hhZGVyVmVyc2lvbikKIH0KIAogLy8gc3RhdGljCi12b2lk
IFRyYXZlcnNlcjo6QXBwbHkoVEludGVybU5vZGUgKnJvb3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKLSAgICAgICAgICAgICAgICAgICAg
ICBpbnQgc2hhZGVyVmVyc2lvbikKK3ZvaWQgVHJhdmVyc2VyOjpBcHBseShUSW50ZXJtTm9kZSAq
cm9vdCwgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwgaW50IHNoYWRlclZlcnNpb24p
CiB7CiAgICAgVHJhdmVyc2VyIHRyYXZlcnNlcihzeW1ib2xUYWJsZSwgc2hhZGVyVmVyc2lvbik7
CiAgICAgZG8KQEAgLTcwLDEyICs2NiwxMiBAQCBib29sIFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdh
dGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCiAgICAgfQogCiAgICAgLy8g
RGVjaWRlIGlmIHRoZSBub2RlIHJlcHJlc2VudHMgdGhlIGNhbGwgb2YgdGV4ZWxGZXRjaE9mZnNl
dC4KLSAgICBpZiAobm9kZS0+Z2V0T3AoKSAhPSBFT3BGdW5jdGlvbkNhbGwgfHwgbm9kZS0+aXNV
c2VyRGVmaW5lZCgpKQorICAgIGlmIChub2RlLT5nZXRPcCgpICE9IEVPcENhbGxCdWlsdEluRnVu
Y3Rpb24pCiAgICAgewogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBpZiAobm9k
ZS0+Z2V0RnVuY3Rpb25TeW1ib2xJbmZvKCktPmdldE5hbWUoKS5jb21wYXJlKDAsIDE2LCAidGV4
ZWxGZXRjaE9mZnNldCIpICE9IDApCisgICAgaWYgKG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5m
bygpLT5nZXROYW1lKCkgIT0gInRleGVsRmV0Y2hPZmZzZXQiKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtODQsMjggKzgwLDE4IEBAIGJvb2wgVHJhdmVyc2VyOjp2aXNp
dEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKICAgICBjb25z
dCBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlID0gbm9kZS0+Z2V0U2VxdWVuY2UoKTsKICAgICBB
U1NFUlQoc2VxdWVuY2UtPnNpemUoKSA9PSA0dSk7CiAKLSAgICAvLyBEZWNpZGUgaWYgdGhlcmUg
aXMgYSAyREFycmF5IHNhbXBsZXIuCi0gICAgYm9vbCBpczJEQXJyYXkgPSBub2RlLT5nZXRGdW5j
dGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZSgpLmZpbmQoInMyYTEiKSAhPSBUU3RyaW5nOjpucG9z
OwotCi0gICAgLy8gQ3JlYXRlIG5ldyBhcmd1bWVudCBsaXN0IGZyb20gbm9kZS0+Z2V0TmFtZSgp
LgotICAgIC8vIGUuZy4gR2V0ICIoaXMyYTE7dmkzO2kxOyIgZnJvbSAidGV4ZWxGZXRjaE9mZnNl
dChpczJhMTt2aTM7aTE7dmkyOyIKLSAgICBUU3RyaW5nIG5ld0FyZ3MgPSBub2RlLT5nZXRGdW5j
dGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZSgpLnN1YnN0cigKLSAgICAgICAgMTYsIG5vZGUtPmdl
dEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5nZXROYW1lKCkubGVuZ3RoKCkgLSAyMCk7Ci0gICAgVFN0
cmluZyBuZXdOYW1lICAgICAgICAgICA9ICJ0ZXhlbEZldGNoIiArIG5ld0FyZ3M7Ci0gICAgVFN5
bWJvbCAqdGV4ZWxGZXRjaFN5bWJvbCA9IHN5bWJvbFRhYmxlLT5maW5kQnVpbHRJbihuZXdOYW1l
LCBzaGFkZXJWZXJzaW9uKTsKLSAgICBBU1NFUlQodGV4ZWxGZXRjaFN5bWJvbCk7Ci0gICAgaW50
IHVuaXF1ZUlkID0gdGV4ZWxGZXRjaFN5bWJvbC0+Z2V0VW5pcXVlSWQoKTsKKyAgICAvLyBEZWNp
ZGUgaWYgdGhlIHNhbXBsZXIgaXMgYSAyREFycmF5IHNhbXBsZXIuIEluIHRoYXQgY2FzZSBwb3Np
dGlvbiBpcyBpdmVjMyBhbmQgb2Zmc2V0IGlzCisgICAgLy8gaXZlYzIuCisgICAgYm9vbCBpczJE
QXJyYXkgPSBzZXF1ZW5jZS0+YXQoMSktPmdldEFzVHlwZWQoKS0+Z2V0Tm9taW5hbFNpemUoKSA9
PSAzICYmCisgICAgICAgICAgICAgICAgICAgICBzZXF1ZW5jZS0+YXQoMyktPmdldEFzVHlwZWQo
KS0+Z2V0Tm9taW5hbFNpemUoKSA9PSAyOwogCiAgICAgLy8gQ3JlYXRlIG5ldyBub2RlIHRoYXQg
cmVwcmVzZW50cyB0aGUgY2FsbCBvZiBmdW5jdGlvbiB0ZXhlbEZldGNoLgogICAgIC8vIEl0cyBh
cmd1bWVudCBsaXN0IHdpbGwgYmU6IHRleGVsRmV0Y2goc2FtcGxlciwgUG9zaXRpb24rb2Zmc2V0
LCBsb2QpLgotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnRleGVsRmV0Y2hOb2RlID0gbmV3IFRJbnRl
cm1BZ2dyZWdhdGUoRU9wRnVuY3Rpb25DYWxsKTsKLSAgICB0ZXhlbEZldGNoTm9kZS0+Z2V0RnVu
Y3Rpb25TeW1ib2xJbmZvKCktPnNldE5hbWUobmV3TmFtZSk7Ci0gICAgdGV4ZWxGZXRjaE5vZGUt
PmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpLT5zZXRJZCh1bmlxdWVJZCk7Ci0gICAgdGV4ZWxGZXRj
aE5vZGUtPnNldFR5cGUobm9kZS0+Z2V0VHlwZSgpKTsKLSAgICB0ZXhlbEZldGNoTm9kZS0+c2V0
TGluZShub2RlLT5nZXRMaW5lKCkpOworCisgICAgVEludGVybVNlcXVlbmNlICp0ZXhlbEZldGNo
QXJndW1lbnRzID0gbmV3IFRJbnRlcm1TZXF1ZW5jZSgpOwogCiAgICAgLy8gc2FtcGxlcgotICAg
IHRleGVsRmV0Y2hOb2RlLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soc2VxdWVuY2UtPmF0KDAp
KTsKKyAgICB0ZXhlbEZldGNoQXJndW1lbnRzLT5wdXNoX2JhY2soc2VxdWVuY2UtPmF0KDApKTsK
IAogICAgIC8vIFBvc2l0aW9uCiAgICAgVEludGVybVR5cGVkICp0ZXhDb29yZE5vZGUgPSBzZXF1
ZW5jZS0+YXQoMSktPmdldEFzVHlwZWQoKTsKQEAgLTExOCwyMCArMTA0LDE1IEBAIGJvb2wgVHJh
dmVyc2VyOjp2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9k
ZSkKICAgICB7CiAgICAgICAgIC8vIEZvciAyREFycmF5IHNhbXBsZXJzLCBQb3NpdGlvbiBpcyBp
dmVjMyBhbmQgb2Zmc2V0IGlzIGl2ZWMyOwogICAgICAgICAvLyBTbyBvZmZzZXQgbXVzdCBiZSBj
b252ZXJ0ZWQgaW50byBhbiBpdmVjMyBiZWZvcmUgYmVpbmcgYWRkZWQgdG8gUG9zaXRpb24uCi0g
ICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmNvbnN0cnVjdElWZWMzTm9kZSA9IG5ldyBUSW50ZXJt
QWdncmVnYXRlKEVPcENvbnN0cnVjdElWZWMzKTsKLSAgICAgICAgY29uc3RydWN0SVZlYzNOb2Rl
LT5zZXRMaW5lKHRleENvb3JkTm9kZS0+Z2V0TGluZSgpKTsKLSAgICAgICAgY29uc3RydWN0SVZl
YzNOb2RlLT5zZXRUeXBlKHRleENvb3JkTm9kZS0+Z2V0VHlwZSgpKTsKLQotICAgICAgICBjb25z
dHJ1Y3RJVmVjM05vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhzZXF1ZW5jZS0+YXQoMykt
PmdldEFzVHlwZWQoKSk7CisgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqY29uc3RydWN0T2Zmc2V0
SXZlY0FyZ3VtZW50cyA9IG5ldyBUSW50ZXJtU2VxdWVuY2UoKTsKKyAgICAgICAgY29uc3RydWN0
T2Zmc2V0SXZlY0FyZ3VtZW50cy0+cHVzaF9iYWNrKHNlcXVlbmNlLT5hdCgzKS0+Z2V0QXNUeXBl
ZCgpKTsKIAotICAgICAgICBUQ29uc3RhbnRVbmlvbiAqemVybyA9IG5ldyBUQ29uc3RhbnRVbmlv
bigpOwotICAgICAgICB6ZXJvLT5zZXRJQ29uc3QoMCk7Ci0gICAgICAgIFRUeXBlICppbnRUeXBl
ID0gbmV3IFRUeXBlKEVidEludCk7CisgICAgICAgIFRJbnRlcm1UeXBlZCAqemVyb05vZGUgPSBU
SW50ZXJtVHlwZWQ6OkNyZWF0ZVplcm8oVFR5cGUoRWJ0SW50KSk7CisgICAgICAgIGNvbnN0cnVj
dE9mZnNldEl2ZWNBcmd1bWVudHMtPnB1c2hfYmFjayh6ZXJvTm9kZSk7CiAKLSAgICAgICAgVElu
dGVybUNvbnN0YW50VW5pb24gKnplcm9Ob2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKHpl
cm8sICppbnRUeXBlKTsKLSAgICAgICAgY29uc3RydWN0SVZlYzNOb2RlLT5nZXRTZXF1ZW5jZSgp
LT5wdXNoX2JhY2soemVyb05vZGUpOwotCi0gICAgICAgIG9mZnNldE5vZGUgPSBjb25zdHJ1Y3RJ
VmVjM05vZGU7CisgICAgICAgIG9mZnNldE5vZGUgPSBUSW50ZXJtQWdncmVnYXRlOjpDcmVhdGVD
b25zdHJ1Y3Rvcih0ZXhDb29yZE5vZGUtPmdldFR5cGUoKSwgRU9wQ29uc3RydWN0SVZlYzMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdHJ1Y3RPZmZzZXRJdmVjQXJndW1lbnRzKTsKKyAgICAgICAgb2Zmc2V0Tm9kZS0+c2V0TGlu
ZSh0ZXhDb29yZE5vZGUtPmdldExpbmUoKSk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0x
NDEsMTIgKzEyMiwyMSBAQCBib29sIFRyYXZlcnNlcjo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlz
aXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCiAgICAgLy8gUG9zaXRpb24rb2Zmc2V0CiAgICAg
VEludGVybUJpbmFyeSAqYWRkID0gbmV3IFRJbnRlcm1CaW5hcnkoRU9wQWRkLCB0ZXhDb29yZE5v
ZGUsIG9mZnNldE5vZGUpOwogICAgIGFkZC0+c2V0TGluZSh0ZXhDb29yZE5vZGUtPmdldExpbmUo
KSk7Ci0gICAgdGV4ZWxGZXRjaE5vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhhZGQpOwor
ICAgIHRleGVsRmV0Y2hBcmd1bWVudHMtPnB1c2hfYmFjayhhZGQpOwogCiAgICAgLy8gbG9kCi0g
ICAgdGV4ZWxGZXRjaE5vZGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhzZXF1ZW5jZS0+YXQo
MikpOworICAgIHRleGVsRmV0Y2hBcmd1bWVudHMtPnB1c2hfYmFjayhzZXF1ZW5jZS0+YXQoMikp
OworCisgICAgQVNTRVJUKHRleGVsRmV0Y2hBcmd1bWVudHMtPnNpemUoKSA9PSAzdSk7CiAKLSAg
ICBBU1NFUlQodGV4ZWxGZXRjaE5vZGUtPmdldFNlcXVlbmNlKCktPnNpemUoKSA9PSAzdSk7Cisg
ICAgLy8gR2V0IHRoZSBzeW1ib2wgb2YgdGhlIHRleGVsIGZldGNoIGZ1bmN0aW9uIHRvIHVzZS4K
KyAgICBUU3RyaW5nIG1hbmdsZWROYW1lID0gVEZ1bmN0aW9uOjpHZXRNYW5nbGVkTmFtZUZyb21D
YWxsKCJ0ZXhlbEZldGNoIiwgKnRleGVsRmV0Y2hBcmd1bWVudHMpOworICAgIFRTeW1ib2wgKnRl
eGVsRmV0Y2hTeW1ib2wgPSBzeW1ib2xUYWJsZS0+ZmluZEJ1aWx0SW4obWFuZ2xlZE5hbWUsIHNo
YWRlclZlcnNpb24pOworICAgIEFTU0VSVCh0ZXhlbEZldGNoU3ltYm9sICYmIHRleGVsRmV0Y2hT
eW1ib2wtPmlzRnVuY3Rpb24oKSk7CisKKyAgICBUSW50ZXJtQWdncmVnYXRlICp0ZXhlbEZldGNo
Tm9kZSA9IFRJbnRlcm1BZ2dyZWdhdGU6OkNyZWF0ZUJ1aWx0SW5GdW5jdGlvbkNhbGwoCisgICAg
ICAgICpzdGF0aWNfY2FzdDxjb25zdCBURnVuY3Rpb24gKj4odGV4ZWxGZXRjaFN5bWJvbCksIHRl
eGVsRmV0Y2hBcmd1bWVudHMpOworICAgIHRleGVsRmV0Y2hOb2RlLT5zZXRMaW5lKG5vZGUtPmdl
dExpbmUoKSk7CiAKICAgICAvLyBSZXBsYWNlIHRoZSBvbGQgbm9kZSBieSB0aGlzIG5ldyBub2Rl
LgogICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgdGV4ZWxGZXRjaE5vZGUsIE9yaWdpbmFsTm9k
ZTo6SVNfRFJPUFBFRCk7CkBAIC0xNTYsOSArMTQ2LDcgQEAgYm9vbCBUcmF2ZXJzZXI6OnZpc2l0
QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQogCiB9ICAvLyBh
bm9ueW1vdXMgbmFtZXNwYWNlCiAKLXZvaWQgUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQoVEludGVy
bU5vZGUgKnJvb3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2xU
YWJsZSAmc3ltYm9sVGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFk
ZXJWZXJzaW9uKQordm9pZCBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldChUSW50ZXJtTm9kZSAqcm9v
dCwgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwgaW50IHNoYWRlclZlcnNpb24pCiB7
CiAgICAgLy8gdGV4ZWxGZXRjaE9mZnNldCBpcyBvbmx5IHZhbGlkIGluIEdMU0wgMy4wIGFuZCBs
YXRlci4KICAgICBpZiAoc2hhZGVyVmVyc2lvbiA8IDMwMCkKQEAgLTE2Nyw0ICsxNTUsNCBAQCB2
b2lkIFJld3JpdGVUZXhlbEZldGNoT2Zmc2V0KFRJbnRlcm1Ob2RlICpyb290LAogICAgIFRyYXZl
cnNlcjo6QXBwbHkocm9vdCwgc3ltYm9sVGFibGUsIHNoYWRlclZlcnNpb24pOwogfQogCi19ICAv
LyBuYW1lc3BhY2Ugc2gKK30gIC8vIG5hbWVzcGFjZSBzaApcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1Jld3JpdGVUZXhlbEZldGNoT2Zmc2V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5oCmlu
ZGV4IGM2ZGI2NjQ1NzI1Li42OTRkNzA5ZjhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVRleGVsRmV0Y2hPZmZzZXQu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9S
ZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5oCkBAIC0yMSwxMCArMjEsOCBAQCBjbGFzcyBUU3ltYm9s
VGFibGU7CiBuYW1lc3BhY2Ugc2gKIHsKIAotdm9pZCBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldChU
SW50ZXJtTm9kZSAqcm9vdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN5
bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHNoYWRlclZlcnNpb24pOwordm9pZCBSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldChUSW50ZXJtTm9k
ZSAqcm9vdCwgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwgaW50IHNoYWRlclZlcnNp
b24pOwogCiB9ICAvLyBuYW1lc3BhY2Ugc2gKIAotI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xB
VE9SX1JFV1JJVEVfVEVYRUxGRVRDSE9GRlNFVF9IXworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFO
U0xBVE9SX1JFV1JJVEVfVEVYRUxGRVRDSE9GRlNFVF9IXwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1Jld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09w
ZXJhdG9yRmxvYXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4x
MzUwYzVlODUzOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5jcHAK
QEAgLTAsMCArMSw5MyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL1Jld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdC5oIgorCisjaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCisKK25hbWVzcGFjZSBzaAoreworCituYW1l
c3BhY2UKK3sKKworY2xhc3MgVHJhdmVyc2VyIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKK3sK
KyAgcHVibGljOgorICAgIHN0YXRpYyB2b2lkIEFwcGx5KFRJbnRlcm1Ob2RlICpyb290KTsKKwor
ICBwcml2YXRlOgorICAgIFRyYXZlcnNlcigpOworICAgIGJvb2wgdmlzaXRVbmFyeShWaXNpdCB2
aXNpdCwgVEludGVybVVuYXJ5ICpub2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIG5leHRJdGVyYXRp
b24oKTsKKworICAgIGJvb2wgbUZvdW5kID0gZmFsc2U7Cit9OworCisvLyBzdGF0aWMKK3ZvaWQg
VHJhdmVyc2VyOjpBcHBseShUSW50ZXJtTm9kZSAqcm9vdCkKK3sKKyAgICBUcmF2ZXJzZXIgdHJh
dmVyc2VyOworICAgIGRvCisgICAgeworICAgICAgICB0cmF2ZXJzZXIubmV4dEl0ZXJhdGlvbigp
OworICAgICAgICByb290LT50cmF2ZXJzZSgmdHJhdmVyc2VyKTsKKyAgICAgICAgaWYgKHRyYXZl
cnNlci5tRm91bmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRyYXZlcnNlci51cGRhdGVUcmVl
KCk7CisgICAgICAgIH0KKyAgICB9IHdoaWxlICh0cmF2ZXJzZXIubUZvdW5kKTsKK30KKworVHJh
dmVyc2VyOjpUcmF2ZXJzZXIoKSA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNl
KQoreworfQorCit2b2lkIFRyYXZlcnNlcjo6bmV4dEl0ZXJhdGlvbigpCit7CisgICAgbUZvdW5k
ID0gZmFsc2U7Cit9CisKK2Jvb2wgVHJhdmVyc2VyOjp2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBU
SW50ZXJtVW5hcnkgKm5vZGUpCit7CisgICAgaWYgKG1Gb3VuZCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBEZXRlY3QgaWYgdGhlIGN1cnJlbnQgb3BlcmF0
b3IgaXMgdW5hcnkgbWludXMgb3BlcmF0b3IuCisgICAgaWYgKG5vZGUtPmdldE9wKCkgIT0gRU9w
TmVnYXRpdmUpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBE
ZXRlY3QgaWYgdGhlIGN1cnJlbnQgb3BlcmFuZCBpcyBhIGZsb2F0IHZhcmlhYmxlLgorICAgIFRJ
bnRlcm1UeXBlZCAqZlZhbHVlID0gbm9kZS0+Z2V0T3BlcmFuZCgpOworICAgIGlmICghZlZhbHVl
LT5nZXRUeXBlKCkuaXNTY2FsYXJGbG9hdCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgLy8gMC4wIC0gZmxvYXQKKyAgICBUSW50ZXJtVHlwZWQgKnplcm8gPSBU
SW50ZXJtVHlwZWQ6OkNyZWF0ZVplcm8oZlZhbHVlLT5nZXRUeXBlKCkpOworICAgIHplcm8tPnNl
dExpbmUoZlZhbHVlLT5nZXRMaW5lKCkpOworICAgIFRJbnRlcm1CaW5hcnkgKnN1YiA9IG5ldyBU
SW50ZXJtQmluYXJ5KEVPcFN1YiwgemVybywgZlZhbHVlKTsKKyAgICBzdWItPnNldExpbmUoZlZh
bHVlLT5nZXRMaW5lKCkpOworCisgICAgcXVldWVSZXBsYWNlbWVudChub2RlLCBzdWIsIE9yaWdp
bmFsTm9kZTo6SVNfRFJPUFBFRCk7CisKKyAgICBtRm91bmQgPSB0cnVlOworICAgIHJldHVybiBm
YWxzZTsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCit2b2lkIFJld3JpdGVVbmFy
eU1pbnVzT3BlcmF0b3JGbG9hdChUSW50ZXJtTm9kZSAqcm9vdCkKK3sKKyAgICBUcmF2ZXJzZXI6
OkFwcGx5KHJvb3QpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Jld3JpdGVVbmFyeU1p
bnVzT3BlcmF0b3JGbG9hdC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckZsb2F0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmNjYmZiY2JkOWU1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0
ZVVuYXJ5TWludXNPcGVyYXRvckZsb2F0LmgKQEAgLTAsMCArMSwxOSBAQAorLy8gQ29weXJpZ2h0
IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8v
IFJld3JpdGUgIi1mbG9hdCIgdG8gIjAuMCAtIGZsb2F0IiB0byB3b3JrIGFyb3VuZCB1bmFyeSBt
aW51cyBvcGVyYXRvciBvbiBmbG9hdCBpc3N1ZSBvbiBJbnRlbCBNYWMKKy8vIE9TWCAxMC4xMS4K
KworI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX1JFV1JJVEVVTkFSWU1JTlVTT1BFUkFUT1JG
TE9BVF9IXworI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX1JFV1JJVEVVTkFSWU1JTlVTT1BF
UkFUT1JGTE9BVF9IXworCitjbGFzcyBUSW50ZXJtTm9kZTsKK25hbWVzcGFjZSBzaAoreworCit2
b2lkIFJld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JGbG9hdChUSW50ZXJtTm9kZSAqcm9vdCk7CisK
K30gIC8vIG5hbWVzcGFjZSBzaAorCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfUkVX
UklURVVOQVJZTUlOVVNPUEVSQVRPUkZMT0FUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJh
dG9ySW50LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1Jld3JpdGVVbmFyeU1pbnVzT3BlcmF0b3JJbnQuY3BwCmluZGV4IGQyMDU4MDUwN2IwLi5l
ZjcwOGNiMmUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckludC5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5
TWludXNPcGVyYXRvckludC5jcHAKQEAgLTEwOSw0ICsxMDksNCBAQCB2b2lkIFJld3JpdGVVbmFy
eU1pbnVzT3BlcmF0b3JJbnQoVEludGVybU5vZGUgKnJvb3QpCiAgICAgVHJhdmVyc2VyOjpBcHBs
eShyb290KTsKIH0KIAotfSAgLy8gbmFtZXNwYWNlIHNoCit9ICAvLyBuYW1lc3BhY2Ugc2gKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9SZXdy
aXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmgKaW5kZXggODAyZWQ1NzQ4ZjEuLjUwZjBjNDQyYTcz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9SZXdyaXRlVW5hcnlNaW51c09wZXJhdG9ySW50LmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRv
ckludC5oCkBAIC0xNyw0ICsxNyw0IEBAIHZvaWQgUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvcklu
dChUSW50ZXJtTm9kZSAqcm9vdCk7CiAKIH0gIC8vIG5hbWVzcGFjZSBzaAogCi0jZW5kaWYgIC8v
IENPTVBJTEVSX1RSQU5TTEFUT1JfUkVXUklURVVOQVJZTUlOVVNPUEVSQVRPUklOVF9IXworI2Vu
ZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1JFV1JJVEVVTkFSWU1JTlVTT1BFUkFUT1JJTlRf
SF8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TY2FsYXJpemVWZWNBbmRNYXRDb25z
dHJ1Y3RvckFyZ3MuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvU2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzLmNwcAppbmRleCA5Njc4
OWJkY2Y2NC4uOGEyOTI5ZWYyY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJn
cy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvU2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzLmNwcApAQCAtMyw2ICszLDEwIEBA
CiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KKy8v
IFNjYWxhcml6ZSB2ZWN0b3IgYW5kIG1hdHJpeCBjb25zdHJ1Y3RvciBhcmdzLCBzbyB0aGF0IHZl
Y3RvcnMgYnVpbHQgZnJvbSBjb21wb25lbnRzIGRvbid0IGhhdmUKKy8vIG1hdHJpeCBhcmd1bWVu
dHMsIGFuZCBtYXRyaWNlcyBidWlsdCBmcm9tIGNvbXBvbmVudHMgZG9uJ3QgaGF2ZSB2ZWN0b3Ig
YXJndW1lbnRzLiBUaGlzIGF2b2lkcworLy8gZHJpdmVyIGJ1Z3MgYXJvdW5kIHZlY3RvciBhbmQg
bWF0cml4IGNvbnN0cnVjdG9ycy4KKy8vCiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKICNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1NjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9y
QXJncy5oIgpAQCAtMTEsNiArMTUsMTAgQEAKIAogI2luY2x1ZGUgImFuZ2xlX2dsLmgiCiAjaW5j
bHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L0ludGVybU5vZGUuaCIKKworbmFtZXNwYWNlIHNoCit7CiAKIG5hbWVzcGFjZQogewpAQCAtNDIs
NTYgKzUwLDg5IEBAIFRJbnRlcm1CaW5hcnkgKkNvbnN0cnVjdFZlY3RvckluZGV4QmluYXJ5Tm9k
ZShUSW50ZXJtU3ltYm9sICpzeW1ib2xOb2RlLCBpbnQgaW5kCiAgICAgcmV0dXJuIG5ldyBUSW50
ZXJtQmluYXJ5KEVPcEluZGV4RGlyZWN0LCBzeW1ib2xOb2RlLCBUSW50ZXJtVHlwZWQ6OkNyZWF0
ZUluZGV4Tm9kZShpbmRleCkpOwogfQogCi1USW50ZXJtQmluYXJ5ICpDb25zdHJ1Y3RNYXRyaXhJ
bmRleEJpbmFyeU5vZGUoCi0gICAgVEludGVybVN5bWJvbCAqc3ltYm9sTm9kZSwgaW50IGNvbElu
ZGV4LCBpbnQgcm93SW5kZXgpCitUSW50ZXJtQmluYXJ5ICpDb25zdHJ1Y3RNYXRyaXhJbmRleEJp
bmFyeU5vZGUoVEludGVybVN5bWJvbCAqc3ltYm9sTm9kZSwgaW50IGNvbEluZGV4LCBpbnQgcm93
SW5kZXgpCiB7Ci0gICAgVEludGVybUJpbmFyeSAqY29sVmVjdG9yTm9kZSA9Ci0gICAgICAgIENv
bnN0cnVjdFZlY3RvckluZGV4QmluYXJ5Tm9kZShzeW1ib2xOb2RlLCBjb2xJbmRleCk7CisgICAg
VEludGVybUJpbmFyeSAqY29sVmVjdG9yTm9kZSA9IENvbnN0cnVjdFZlY3RvckluZGV4QmluYXJ5
Tm9kZShzeW1ib2xOb2RlLCBjb2xJbmRleCk7CiAKICAgICByZXR1cm4gbmV3IFRJbnRlcm1CaW5h
cnkoRU9wSW5kZXhEaXJlY3QsIGNvbFZlY3Rvck5vZGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJbnRlcm1UeXBlZDo6Q3JlYXRlSW5kZXhOb2RlKHJvd0luZGV4KSk7CiB9CiAKLX0g
IC8vIG5hbWVzcGFjZSBhbm9ueW1vdXMKK2NsYXNzIFNjYWxhcml6ZUFyZ3NUcmF2ZXJzZXIgOiBw
dWJsaWMgVEludGVybVRyYXZlcnNlcgoreworICBwdWJsaWM6CisgICAgU2NhbGFyaXplQXJnc1Ry
YXZlcnNlcihzaDo6R0xlbnVtIHNoYWRlclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGZyYWdtZW50UHJlY2lzaW9uSGlnaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCAqdGVtcG9yYXJ5SW5kZXgpCisgICAgICAgIDogVEludGVybVRyYXZlcnNl
cih0cnVlLCBmYWxzZSwgZmFsc2UpLAorICAgICAgICAgIG1TaGFkZXJUeXBlKHNoYWRlclR5cGUp
LAorICAgICAgICAgIG1GcmFnbWVudFByZWNpc2lvbkhpZ2goZnJhZ21lbnRQcmVjaXNpb25IaWdo
KQorICAgIHsKKyAgICAgICAgdXNlVGVtcG9yYXJ5SW5kZXgodGVtcG9yYXJ5SW5kZXgpOworICAg
IH0KKworICBwcm90ZWN0ZWQ6CisgICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwg
VEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEJsb2NrKFZp
c2l0IHZpc2l0LCBUSW50ZXJtQmxvY2sgKm5vZGUpIG92ZXJyaWRlOworCisgIHByaXZhdGU6Cisg
ICAgdm9pZCBzY2FsYXJpemVBcmdzKFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSwgYm9vbCBz
Y2FsYXJpemVWZWN0b3IsIGJvb2wgc2NhbGFyaXplTWF0cml4KTsKKworICAgIC8vIElmIHdlIGhh
dmUgdGhlIGZvbGxvd2luZyBjb2RlOgorICAgIC8vICAgbWF0NCBtKDApOworICAgIC8vICAgdmVj
NCB2KDEsIG0pOworICAgIC8vIFdlIHdpbGwgcmV3cml0ZSB0bzoKKyAgICAvLyAgIG1hdDQgbSgw
KTsKKyAgICAvLyAgIG1hdDQgczAgPSBtOworICAgIC8vICAgdmVjNCB2KDEsIHMwWzBdWzBdLCBz
MFswXVsxXSwgczBbMF1bMl0pOworICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgdG8gY3JlYXRlIG5v
ZGVzIGZvciAibWF0NCBzMCA9IG07IiBhbmQgaW5zZXJ0IGl0IHRvIHRoZSBjb2RlIHNlcXVlbmNl
LiBUaGlzCisgICAgLy8gd2F5IHRoZSBwb3NzaWJsZSBzaWRlIGVmZmVjdHMgb2YgdGhlIGNvbnN0
cnVjdG9yIGFyZ3VtZW50IHdpbGwgb25seSBiZSBldmFsdWF0ZWQgb25jZS4KKyAgICB2b2lkIGNy
ZWF0ZVRlbXBWYXJpYWJsZShUSW50ZXJtVHlwZWQgKm9yaWdpbmFsKTsKIAotYm9vbCBTY2FsYXJp
emVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3M6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBU
SW50ZXJtQWdncmVnYXRlICpub2RlKQorICAgIHN0ZDo6dmVjdG9yPFRJbnRlcm1TZXF1ZW5jZT4g
bUJsb2NrU3RhY2s7CisKKyAgICBzaDo6R0xlbnVtIG1TaGFkZXJUeXBlOworICAgIGJvb2wgbUZy
YWdtZW50UHJlY2lzaW9uSGlnaDsKK307CisKK2Jvb2wgU2NhbGFyaXplQXJnc1RyYXZlcnNlcjo6
dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCiB7CiAg
ICAgaWYgKHZpc2l0ID09IFByZVZpc2l0KQogICAgIHsKICAgICAgICAgc3dpdGNoIChub2RlLT5n
ZXRPcCgpKQogICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMyOgotICAg
ICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjMzoKLSAgICAgICAgICBjYXNlIEVPcENvbnN0cnVj
dFZlYzQ6Ci0gICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVjMjoKLSAgICAgICAgICBjYXNl
IEVPcENvbnN0cnVjdEJWZWMzOgotICAgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0QlZlYzQ6Ci0g
ICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RJVmVjMjoKLSAgICAgICAgICBjYXNlIEVPcENvbnN0
cnVjdElWZWMzOgotICAgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0SVZlYzQ6Ci0gICAgICAgICAg
ICBpZiAoQ29udGFpbnNNYXRyaXhOb2RlKCoobm9kZS0+Z2V0U2VxdWVuY2UoKSkpKQotICAgICAg
ICAgICAgICAgIHNjYWxhcml6ZUFyZ3Mobm9kZSwgZmFsc2UsIHRydWUpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyOgotICAgICAgICAgIGNhc2Ug
RU9wQ29uc3RydWN0TWF0MngzOgotICAgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0Mng0Ogot
ICAgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0M3gyOgotICAgICAgICAgIGNhc2UgRU9wQ29u
c3RydWN0TWF0MzoKLSAgICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4NDoKLSAgICAgICAg
ICBjYXNlIEVPcENvbnN0cnVjdE1hdDR4MjoKLSAgICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1h
dDR4MzoKLSAgICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDQ6Ci0gICAgICAgICAgICBpZiAo
Q29udGFpbnNWZWN0b3JOb2RlKCoobm9kZS0+Z2V0U2VxdWVuY2UoKSkpKQotICAgICAgICAgICAg
ICAgIHNjYWxhcml6ZUFyZ3Mobm9kZSwgdHJ1ZSwgZmFsc2UpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBFT3BDb25zdHJ1Y3RWZWMyOgorICAgICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMzOgor
ICAgICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWM0OgorICAgICAgICAgICAgY2FzZSBFT3BD
b25zdHJ1Y3RCVmVjMjoKKyAgICAgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0QlZlYzM6CisgICAg
ICAgICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWM0OgorICAgICAgICAgICAgY2FzZSBFT3BDb25z
dHJ1Y3RJVmVjMjoKKyAgICAgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0SVZlYzM6CisgICAgICAg
ICAgICBjYXNlIEVPcENvbnN0cnVjdElWZWM0OgorICAgICAgICAgICAgICAgIGlmIChDb250YWlu
c01hdHJpeE5vZGUoKihub2RlLT5nZXRTZXF1ZW5jZSgpKSkpCisgICAgICAgICAgICAgICAgICAg
IHNjYWxhcml6ZUFyZ3Mobm9kZSwgZmFsc2UsIHRydWUpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyOgorICAgICAgICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RNYXQyeDM6CisgICAgICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDJ4NDoK
KyAgICAgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0M3gyOgorICAgICAgICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RNYXQzOgorICAgICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzeDQ6Cisg
ICAgICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDR4MjoKKyAgICAgICAgICAgIGNhc2UgRU9w
Q29uc3RydWN0TWF0NHgzOgorICAgICAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0OgorICAg
ICAgICAgICAgICAgIGlmIChDb250YWluc1ZlY3Rvck5vZGUoKihub2RlLT5nZXRTZXF1ZW5jZSgp
KSkpCisgICAgICAgICAgICAgICAgICAgIHNjYWxhcml6ZUFyZ3Mobm9kZSwgdHJ1ZSwgZmFsc2Up
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBTY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3M6OnZpc2l0QmxvY2soVmlzaXQg
dmlzaXQsIFRJbnRlcm1CbG9jayAqbm9kZSkKK2Jvb2wgU2NhbGFyaXplQXJnc1RyYXZlcnNlcjo6
dmlzaXRCbG9jayhWaXNpdCB2aXNpdCwgVEludGVybUJsb2NrICpub2RlKQogewogICAgIG1CbG9j
a1N0YWNrLnB1c2hfYmFjayhUSW50ZXJtU2VxdWVuY2UoKSk7CiAgICAgewpAQCAtMTExLDQ5ICsx
NTIsNTAgQEAgYm9vbCBTY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3M6OnZpc2l0Qmxv
Y2soVmlzaXQgdmlzaXQsIFRJbnRlcm1CbG9jayAqbm8KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXZvaWQgU2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzOjpzY2FsYXJpemVBcmdzKAot
ICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSwgYm9vbCBzY2FsYXJpemVWZWN0b3IsIGJv
b2wgc2NhbGFyaXplTWF0cml4KQordm9pZCBTY2FsYXJpemVBcmdzVHJhdmVyc2VyOjpzY2FsYXJp
emVBcmdzKFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3JlZ2F0ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHNjYWxhcml6ZVZlY3RvciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNjYWxhcml6ZU1hdHJpeCkKIHsK
ICAgICBBU1NFUlQoYWdncmVnYXRlKTsKICAgICBpbnQgc2l6ZSA9IDA7CiAgICAgc3dpdGNoIChh
Z2dyZWdhdGUtPmdldE9wKCkpCiAgICAgewotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RWZWMyOgot
ICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVjMjoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0SVZl
YzI6Ci0gICAgICAgIHNpemUgPSAyOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ29u
c3RydWN0VmVjMzoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0QlZlYzM6Ci0gICAgICBjYXNlIEVP
cENvbnN0cnVjdElWZWMzOgotICAgICAgICBzaXplID0gMzsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcENvbnN0cnVjdFZlYzQ6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWM0Ogot
ICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RJVmVjNDoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0
MjoKLSAgICAgICAgc2l6ZSA9IDQ7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BDb25z
dHJ1Y3RNYXQyeDM6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4MjoKLSAgICAgICAgc2l6
ZSA9IDY7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyeDQ6Ci0g
ICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDR4MjoKLSAgICAgICAgc2l6ZSA9IDg7Ci0gICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzOgotICAgICAgICBzaXplID0gOTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4NDoKLSAgICAgIGNh
c2UgRU9wQ29uc3RydWN0TWF0NHgzOgotICAgICAgICBzaXplID0gMTI7Ci0gICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0OgotICAgICAgICBzaXplID0gMTY7Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RU9wQ29uc3RydWN0VmVjMjoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVjMjoKKyAgICAg
ICAgY2FzZSBFT3BDb25zdHJ1Y3RJVmVjMjoKKyAgICAgICAgICAgIHNpemUgPSAyOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0VmVjMzoKKyAgICAgICAgY2Fz
ZSBFT3BDb25zdHJ1Y3RCVmVjMzoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RJVmVjMzoKKyAg
ICAgICAgICAgIHNpemUgPSAzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9w
Q29uc3RydWN0VmVjNDoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVjNDoKKyAgICAgICAg
Y2FzZSBFT3BDb25zdHJ1Y3RJVmVjNDoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyOgor
ICAgICAgICAgICAgc2l6ZSA9IDQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RNYXQyeDM6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0M3gyOgorICAg
ICAgICAgICAgc2l6ZSA9IDY7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BD
b25zdHJ1Y3RNYXQyeDQ6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NHgyOgorICAgICAg
ICAgICAgc2l6ZSA9IDg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BDb25z
dHJ1Y3RNYXQzOgorICAgICAgICAgICAgc2l6ZSA9IDk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzeDQ6CisgICAgICAgIGNhc2UgRU9wQ29uc3RydWN0
TWF0NHgzOgorICAgICAgICAgICAgc2l6ZSA9IDEyOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0NDoKKyAgICAgICAgICAgIHNpemUgPSAxNjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVuY2UgPSBhZ2dyZWdhdGUtPmdldFNlcXVlbmNl
KCk7CiAgICAgVEludGVybVNlcXVlbmNlIG9yaWdpbmFsKCpzZXF1ZW5jZSk7CkBAIC0xNjMsMTIg
KzIwNSwxMCBAQCB2b2lkIFNjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJnczo6c2NhbGFy
aXplQXJncygKICAgICAgICAgQVNTRVJUKHNpemUgPiAwKTsKICAgICAgICAgVEludGVybVR5cGVk
ICpub2RlID0gb3JpZ2luYWxbaWldLT5nZXRBc1R5cGVkKCk7CiAgICAgICAgIEFTU0VSVChub2Rl
KTsKLSAgICAgICAgVFN0cmluZyB2YXJOYW1lID0gY3JlYXRlVGVtcFZhcmlhYmxlKG5vZGUpOwor
ICAgICAgICBjcmVhdGVUZW1wVmFyaWFibGUobm9kZSk7CiAgICAgICAgIGlmIChub2RlLT5pc1Nj
YWxhcigpKQogICAgICAgICB7Ci0gICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2xOb2Rl
ID0KLSAgICAgICAgICAgICAgICBuZXcgVEludGVybVN5bWJvbCgtMSwgdmFyTmFtZSwgbm9kZS0+
Z2V0VHlwZSgpKTsKLSAgICAgICAgICAgIHNlcXVlbmNlLT5wdXNoX2JhY2soc3ltYm9sTm9kZSk7
CisgICAgICAgICAgICBzZXF1ZW5jZS0+cHVzaF9iYWNrKGNyZWF0ZVRlbXBTeW1ib2wobm9kZS0+
Z2V0VHlwZSgpKSk7CiAgICAgICAgICAgICBzaXplLS07CiAgICAgICAgIH0KICAgICAgICAgZWxz
ZSBpZiAobm9kZS0+aXNWZWN0b3IoKSkKQEAgLTE3OSwxNyArMjE5LDE0IEBAIHZvaWQgU2NhbGFy
aXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzOjpzY2FsYXJpemVBcmdzKAogICAgICAgICAgICAg
ICAgIHNpemUgLT0gcmVwZWF0OwogICAgICAgICAgICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsg
aW5kZXggPCByZXBlYXQ7ICsraW5kZXgpCiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2xOb2RlID0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIG5ldyBUSW50ZXJtU3ltYm9sKC0xLCB2YXJOYW1lLCBub2RlLT5nZXRUeXBlKCkpOwotICAg
ICAgICAgICAgICAgICAgICBUSW50ZXJtQmluYXJ5ICpuZXdOb2RlID0gQ29uc3RydWN0VmVjdG9y
SW5kZXhCaW5hcnlOb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sTm9kZSwgaW5k
ZXgpOworICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2xOb2RlID0gY3Jl
YXRlVGVtcFN5bWJvbChub2RlLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgICAgICAgICBUSW50
ZXJtQmluYXJ5ICpuZXdOb2RlICAgID0gQ29uc3RydWN0VmVjdG9ySW5kZXhCaW5hcnlOb2RlKHN5
bWJvbE5vZGUsIGluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2UtPnB1c2hfYmFj
ayhuZXdOb2RlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVEludGVybVN5bWJvbCAqc3lt
Ym9sTm9kZSA9Ci0gICAgICAgICAgICAgICAgICAgIG5ldyBUSW50ZXJtU3ltYm9sKC0xLCB2YXJO
YW1lLCBub2RlLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5
bWJvbE5vZGUgPSBjcmVhdGVUZW1wU3ltYm9sKG5vZGUtPmdldFR5cGUoKSk7CiAgICAgICAgICAg
ICAgICAgc2VxdWVuY2UtPnB1c2hfYmFjayhzeW1ib2xOb2RlKTsKICAgICAgICAgICAgICAgICBz
aXplIC09IG5vZGUtPmdldE5vbWluYWxTaXplKCk7CiAgICAgICAgICAgICB9CkBAIC0yMDQsMTAg
KzI0MSw5IEBAIHZvaWQgU2NhbGFyaXplVmVjQW5kTWF0Q29uc3RydWN0b3JBcmdzOjpzY2FsYXJp
emVBcmdzKAogICAgICAgICAgICAgICAgIHNpemUgLT0gcmVwZWF0OwogICAgICAgICAgICAgICAg
IHdoaWxlIChyZXBlYXQgPiAwKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgVEludGVybVN5bWJvbCAqc3ltYm9sTm9kZSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBu
ZXcgVEludGVybVN5bWJvbCgtMSwgdmFyTmFtZSwgbm9kZS0+Z2V0VHlwZSgpKTsKLSAgICAgICAg
ICAgICAgICAgICAgVEludGVybUJpbmFyeSAqbmV3Tm9kZSA9IENvbnN0cnVjdE1hdHJpeEluZGV4
QmluYXJ5Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbE5vZGUsIGNvbEluZGV4
LCByb3dJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbE5v
ZGUgPSBjcmVhdGVUZW1wU3ltYm9sKG5vZGUtPmdldFR5cGUoKSk7CisgICAgICAgICAgICAgICAg
ICAgIFRJbnRlcm1CaW5hcnkgKm5ld05vZGUgPQorICAgICAgICAgICAgICAgICAgICAgICAgQ29u
c3RydWN0TWF0cml4SW5kZXhCaW5hcnlOb2RlKHN5bWJvbE5vZGUsIGNvbEluZGV4LCByb3dJbmRl
eCk7CiAgICAgICAgICAgICAgICAgICAgIHNlcXVlbmNlLT5wdXNoX2JhY2sobmV3Tm9kZSk7CiAg
ICAgICAgICAgICAgICAgICAgIHJvd0luZGV4Kys7CiAgICAgICAgICAgICAgICAgICAgIGlmIChy
b3dJbmRleCA+PSBub2RlLT5nZXRSb3dzKCkpCkBAIC0yMjAsOCArMjU2LDcgQEAgdm9pZCBTY2Fs
YXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3M6OnNjYWxhcml6ZUFyZ3MoCiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVElu
dGVybVN5bWJvbCAqc3ltYm9sTm9kZSA9Ci0gICAgICAgICAgICAgICAgICAgIG5ldyBUSW50ZXJt
U3ltYm9sKC0xLCB2YXJOYW1lLCBub2RlLT5nZXRUeXBlKCkpOworICAgICAgICAgICAgICAgIFRJ
bnRlcm1TeW1ib2wgKnN5bWJvbE5vZGUgPSBjcmVhdGVUZW1wU3ltYm9sKG5vZGUtPmdldFR5cGUo
KSk7CiAgICAgICAgICAgICAgICAgc2VxdWVuY2UtPnB1c2hfYmFjayhzeW1ib2xOb2RlKTsKICAg
ICAgICAgICAgICAgICBzaXplIC09IG5vZGUtPmdldENvbHMoKSAqIG5vZGUtPmdldFJvd3MoKTsK
ICAgICAgICAgICAgIH0KQEAgLTIyOSw0OCArMjY0LDM5IEBAIHZvaWQgU2NhbGFyaXplVmVjQW5k
TWF0Q29uc3RydWN0b3JBcmdzOjpzY2FsYXJpemVBcmdzKAogICAgIH0KIH0KIAotVFN0cmluZyBT
Y2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3M6OmNyZWF0ZVRlbXBWYXJpYWJsZShUSW50
ZXJtVHlwZWQgKm9yaWdpbmFsKQordm9pZCBTY2FsYXJpemVBcmdzVHJhdmVyc2VyOjpjcmVhdGVU
ZW1wVmFyaWFibGUoVEludGVybVR5cGVkICpvcmlnaW5hbCkKIHsKLSAgICBUU3RyaW5nIHRlbXBW
YXJOYW1lID0gIl93ZWJnbF90bXBfIjsKLSAgICBpZiAob3JpZ2luYWwtPmlzU2NhbGFyKCkpCi0g
ICAgewotICAgICAgICB0ZW1wVmFyTmFtZSArPSAic2NhbGFyXyI7Ci0gICAgfQotICAgIGVsc2Ug
aWYgKG9yaWdpbmFsLT5pc1ZlY3RvcigpKQotICAgIHsKLSAgICAgICAgdGVtcFZhck5hbWUgKz0g
InZlY18iOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBBU1NFUlQob3JpZ2luYWwt
PmlzTWF0cml4KCkpOwotICAgICAgICB0ZW1wVmFyTmFtZSArPSAibWF0XyI7Ci0gICAgfQotICAg
IHRlbXBWYXJOYW1lICs9IFN0cihtVGVtcFZhckNvdW50KS5jX3N0cigpOwotICAgIG1UZW1wVmFy
Q291bnQrKzsKLQogICAgIEFTU0VSVChvcmlnaW5hbCk7Ci0gICAgVFR5cGUgdHlwZSA9IG9yaWdp
bmFsLT5nZXRUeXBlKCk7Ci0gICAgdHlwZS5zZXRRdWFsaWZpZXIoRXZxVGVtcG9yYXJ5KTsKKyAg
ICBuZXh0VGVtcG9yYXJ5SW5kZXgoKTsKKyAgICBUSW50ZXJtRGVjbGFyYXRpb24gKmRlY2wgPSBj
cmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKG9yaWdpbmFsKTsKIAotICAgIGlmIChtU2hhZGVyVHlw
ZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIgJiYKLSAgICAgICAgdHlwZS5nZXRCYXNpY1R5cGUoKSA9
PSBFYnRGbG9hdCAmJgorICAgIFRUeXBlIHR5cGUgPSBvcmlnaW5hbC0+Z2V0VHlwZSgpOworICAg
IGlmIChtU2hhZGVyVHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIgJiYgdHlwZS5nZXRCYXNpY1R5
cGUoKSA9PSBFYnRGbG9hdCAmJgogICAgICAgICB0eXBlLmdldFByZWNpc2lvbigpID09IEVicFVu
ZGVmaW5lZCkKICAgICB7CiAgICAgICAgIC8vIFdlIHVzZSB0aGUgaGlnaGVzdCBhdmFpbGFibGUg
cHJlY2lzaW9uIGZvciB0aGUgdGVtcG9yYXJ5IHZhcmlhYmxlCiAgICAgICAgIC8vIHRvIGF2b2lk
IGNvbXB1dGluZyB0aGUgYWN0dWFsIHByZWNpc2lvbiB1c2luZyB0aGUgcnVsZXMgZGVmaW5lZAog
ICAgICAgICAvLyBpbiBHTFNMIEVTIDEuMCBTZWN0aW9uIDQuNS4yLgotICAgICAgICB0eXBlLnNl
dFByZWNpc2lvbihtRnJhZ21lbnRQcmVjaXNpb25IaWdoID8gRWJwSGlnaCA6IEVicE1lZGl1bSk7
CisgICAgICAgIFRJbnRlcm1CaW5hcnkgKmluaXQgPSBkZWNsLT5nZXRTZXF1ZW5jZSgpLT5hdCgw
KS0+Z2V0QXNCaW5hcnlOb2RlKCk7CisgICAgICAgIGluaXQtPmdldFR5cGVQb2ludGVyKCktPnNl
dFByZWNpc2lvbihtRnJhZ21lbnRQcmVjaXNpb25IaWdoID8gRWJwSGlnaCA6IEVicE1lZGl1bSk7
CisgICAgICAgIGluaXQtPmdldExlZnQoKS0+Z2V0VHlwZVBvaW50ZXIoKS0+c2V0UHJlY2lzaW9u
KG1GcmFnbWVudFByZWNpc2lvbkhpZ2ggPyBFYnBIaWdoCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiBFYnBNZWRpdW0pOwogICAgIH0KIAotICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbE5vZGUgPSBu
ZXcgVEludGVybVN5bWJvbCgtMSwgdGVtcFZhck5hbWUsIHR5cGUpOwotICAgIFRJbnRlcm1CaW5h
cnkgKmluaXQgICAgICAgPSBuZXcgVEludGVybUJpbmFyeShFT3BJbml0aWFsaXplLCBzeW1ib2xO
b2RlLCBvcmlnaW5hbCk7Ci0KLSAgICBUSW50ZXJtQWdncmVnYXRlICpkZWNsID0gbmV3IFRJbnRl
cm1BZ2dyZWdhdGUoRU9wRGVjbGFyYXRpb24pOwotICAgIGRlY2wtPmdldFNlcXVlbmNlKCktPnB1
c2hfYmFjayhpbml0KTsKLQogICAgIEFTU0VSVChtQmxvY2tTdGFjay5zaXplKCkgPiAwKTsKICAg
ICBUSW50ZXJtU2VxdWVuY2UgJnNlcXVlbmNlID0gbUJsb2NrU3RhY2suYmFjaygpOwogICAgIHNl
cXVlbmNlLnB1c2hfYmFjayhkZWNsKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFub255bW91cwog
Ci0gICAgcmV0dXJuIHRlbXBWYXJOYW1lOwordm9pZCBTY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1
Y3RvckFyZ3MoVEludGVybUJsb2NrICpyb290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2g6OkdMZW51bSBzaGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBmcmFnbWVudFByZWNpc2lvbkhpZ2gsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnRlbXBvcmFyeUluZGV4
KQoreworICAgIFNjYWxhcml6ZUFyZ3NUcmF2ZXJzZXIgc2NhbGFyaXplcihzaGFkZXJUeXBlLCBm
cmFnbWVudFByZWNpc2lvbkhpZ2gsIHRlbXBvcmFyeUluZGV4KTsKKyAgICByb290LT50cmF2ZXJz
ZSgmc2NhbGFyaXplcik7CiB9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2NhbGFyaXplVmVj
QW5kTWF0Q29uc3RydWN0b3JBcmdzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9TY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3MuaAppbmRl
eCBlYWM2MTI1YTY2ZC4uMTRiYmJlMTNlMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVj
dG9yQXJncy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1NjYWxhcml6ZVZlY0FuZE1hdENvbnN0cnVjdG9yQXJncy5oCkBAIC0zLDQ3ICszLDI0
IEBACiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8K
Ky8vIFNjYWxhcml6ZSB2ZWN0b3IgYW5kIG1hdHJpeCBjb25zdHJ1Y3RvciBhcmdzLCBzbyB0aGF0
IHZlY3RvcnMgYnVpbHQgZnJvbSBjb21wb25lbnRzIGRvbid0IGhhdmUKKy8vIG1hdHJpeCBhcmd1
bWVudHMsIGFuZCBtYXRyaWNlcyBidWlsdCBmcm9tIGNvbXBvbmVudHMgZG9uJ3QgaGF2ZSB2ZWN0
b3IgYXJndW1lbnRzLiBUaGlzIGF2b2lkcworLy8gZHJpdmVyIGJ1Z3MgYXJvdW5kIHZlY3RvciBh
bmQgbWF0cml4IGNvbnN0cnVjdG9ycy4KKy8vCiAKICNpZm5kZWYgQ09NUElMRVJfVFJBTlNMQVRP
Ul9TQ0FMQVJJWkVWRUNBTkRNQVRDT05TVFJVQ1RPUkFSR1NfSF8KICNkZWZpbmUgQ09NUElMRVJf
VFJBTlNMQVRPUl9TQ0FMQVJJWkVWRUNBTkRNQVRDT05TVFJVQ1RPUkFSR1NfSF8KIAotI2luY2x1
ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgorI2luY2x1ZGUgIkdMU0xBTkcv
U2hhZGVyTGFuZy5oIgogCi1jbGFzcyBTY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3Mg
OiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgorbmFtZXNwYWNlIHNoCiB7Ci0gIHB1YmxpYzoKLSAg
ICBTY2FsYXJpemVWZWNBbmRNYXRDb25zdHJ1Y3RvckFyZ3Moc2g6OkdMZW51bSBzaGFkZXJUeXBl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZyYWdtZW50UHJl
Y2lzaW9uSGlnaCkKLSAgICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxz
ZSksCi0gICAgICAgICAgbVRlbXBWYXJDb3VudCgwKSwKLSAgICAgICAgICBtU2hhZGVyVHlwZShz
aGFkZXJUeXBlKSwKLSAgICAgICAgICBtRnJhZ21lbnRQcmVjaXNpb25IaWdoKGZyYWdtZW50UHJl
Y2lzaW9uSGlnaCkge30KLQotICBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShW
aXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2
aXNpdEJsb2NrKFZpc2l0IHZpc2l0LCBUSW50ZXJtQmxvY2sgKm5vZGUpIG92ZXJyaWRlOwotCi0g
IHByaXZhdGU6Ci0gICAgdm9pZCBzY2FsYXJpemVBcmdzKFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ3Jl
Z2F0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzY2FsYXJpemVWZWN0b3IsIGJvb2wg
c2NhbGFyaXplTWF0cml4KTsKLQotICAgIC8vIElmIHdlIGhhdmUgdGhlIGZvbGxvd2luZyBjb2Rl
OgotICAgIC8vICAgbWF0NCBtKDApOwotICAgIC8vICAgdmVjNCB2KDEsIG0pOwotICAgIC8vIFdl
IHdpbGwgcmV3cml0ZSB0bzoKLSAgICAvLyAgIG1hdDQgbSgwKTsKLSAgICAvLyAgIG1hdDQgX3dl
YmdsX3RtcF9tYXRfMCA9IG07Ci0gICAgLy8gICB2ZWM0IHYoMSwgX3dlYmdsX3RtcF9tYXRfMFsw
XVswXSwgX3dlYmdsX3RtcF9tYXRfMFswXVsxXSwgX3dlYmdsX3RtcF9tYXRfMFswXVsyXSk7Ci0g
ICAgLy8gVGhpcyBmdW5jdGlvbiBpcyB0byBjcmVhdGUgbm9kZXMgZm9yICJtYXQ0IF93ZWJnbF90
bXBfbWF0XzAgPSBtOyIgYW5kIGluc2VydCBpdCB0bwotICAgIC8vIHRoZSBjb2RlIHNlcXVlbmNl
LgotICAgIC8vIFJldHVybiB0aGUgdGVtcG9yYXJ5IHZhcmlhYmxlIG5hbWUuCi0gICAgVFN0cmlu
ZyBjcmVhdGVUZW1wVmFyaWFibGUoVEludGVybVR5cGVkICpvcmlnaW5hbCk7Ci0KLSAgICBzdGQ6
OnZlY3RvcjxUSW50ZXJtU2VxdWVuY2U+IG1CbG9ja1N0YWNrOwotICAgIGludCBtVGVtcFZhckNv
dW50OworY2xhc3MgVEludGVybUJsb2NrOwogCi0gICAgc2g6OkdMZW51bSBtU2hhZGVyVHlwZTsK
LSAgICBib29sIG1GcmFnbWVudFByZWNpc2lvbkhpZ2g7Ci19Owordm9pZCBTY2FsYXJpemVWZWNB
bmRNYXRDb25zdHJ1Y3RvckFyZ3MoVEludGVybUJsb2NrICpyb290LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkdMZW51bSBzaGFkZXJUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmcmFnbWVudFByZWNpc2lvbkhpZ2gs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnRl
bXBvcmFyeUluZGV4KTsKK30gIC8vIG5hbWVzcGFjZSBzaAogCiAjZW5kaWYgIC8vIENPTVBJTEVS
X1RSQU5TTEFUT1JfU0NBTEFSSVpFVkVDQU5ETUFUQ09OU1RSVUNUT1JBUkdTX0hfCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZWFy
Y2hTeW1ib2wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvU2VhcmNoU3ltYm9sLmNwcAppbmRleCBjY2NkNGQzZmYwMS4uMzRjNjQ0ZDAyODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1NlYXJjaFN5bWJvbC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvU2VhcmNoU3ltYm9sLmNwcApAQCAtMTMsOCArMTMsNyBAQAogbmFtZXNw
YWNlIHNoCiB7CiBTZWFyY2hTeW1ib2w6OlNlYXJjaFN5bWJvbChjb25zdCBUU3RyaW5nICZzeW1i
b2wpCi0gICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksCi0gICAgICBt
U3ltYm9sKHN5bWJvbCkKKyAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNl
KSwgbVN5bWJvbChzeW1ib2wpCiB7CiAgICAgbWF0Y2ggPSBmYWxzZTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NlYXJjaFN5
bWJvbC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
U2VhcmNoU3ltYm9sLmgKaW5kZXggMWU1ZTE3MDBkMTUuLjRmYmVhOGNlZjc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZWFyY2hT
eW1ib2wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9TZWFyY2hTeW1ib2wuaApAQCAtMzAsNCArMzAsNCBAQCBjbGFzcyBTZWFyY2hTeW1ib2wg
OiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogfTsKIH0KIAotI2VuZGlmICAgLy8gQ09NUElMRVJf
VFJBTlNMQVRPUl9TRUFSQ0hTWU1CT0xfSF8KKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRP
Ul9TRUFSQ0hTWU1CT0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlQXJyYXlJbml0aWFsaXphdGlvbi5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZUFy
cmF5SW5pdGlhbGl6YXRpb24uY3BwCmluZGV4IDhjZDFmYTEwOTZjLi5mZTI1ODIzZTM4YSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
U2VwYXJhdGVBcnJheUluaXRpYWxpemF0aW9uLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZUFycmF5SW5pdGlhbGl6YXRpb24u
Y3BwCkBAIC0zLDcgKzMsOCBAQAogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KIC8vCi0vLyBUaGUgU2VwYXJhdGVBcnJheUluaXRpYWxpemF0aW9uIGZ1bmN0
aW9uIHNwbGl0cyBlYWNoIGFycmF5IGluaXRpYWxpemF0aW9uIGludG8gYSBkZWNsYXJhdGlvbiBh
bmQgYW4gYXNzaWdubWVudC4KKy8vIFRoZSBTZXBhcmF0ZUFycmF5SW5pdGlhbGl6YXRpb24gZnVu
Y3Rpb24gc3BsaXRzIGVhY2ggYXJyYXkgaW5pdGlhbGl6YXRpb24gaW50byBhIGRlY2xhcmF0aW9u
IGFuZAorLy8gYW4gYXNzaWdubWVudC4KIC8vIEV4YW1wbGU6CiAvLyAgICAgdHlwZVtuXSBhID0g
aW5pdGlhbGl6ZXI7CiAvLyB3aWxsIGVmZmVjdGl2ZWx5IGJlY29tZQpAQCAtMjAsNiArMjEsOSBA
QAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgogI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0SExTTC5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwog
bmFtZXNwYWNlCiB7CiAKQEAgLTI3LDkgKzMxLDEwIEBAIGNsYXNzIFNlcGFyYXRlQXJyYXlJbml0
VHJhdmVyc2VyIDogcHJpdmF0ZSBUSW50ZXJtVHJhdmVyc2VyCiB7CiAgIHB1YmxpYzoKICAgICBz
dGF0aWMgdm9pZCBhcHBseShUSW50ZXJtTm9kZSAqcm9vdCk7CisKICAgcHJpdmF0ZToKICAgICBT
ZXBhcmF0ZUFycmF5SW5pdFRyYXZlcnNlcigpOwotICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlz
aXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXREZWNs
YXJhdGlvbihWaXNpdCwgVEludGVybURlY2xhcmF0aW9uICpub2RlKSBvdmVycmlkZTsKIH07CiAK
IHZvaWQgU2VwYXJhdGVBcnJheUluaXRUcmF2ZXJzZXI6OmFwcGx5KFRJbnRlcm1Ob2RlICpyb290
KQpAQCAtMzksNTMgKzQ0LDQ5IEBAIHZvaWQgU2VwYXJhdGVBcnJheUluaXRUcmF2ZXJzZXI6OmFw
cGx5KFRJbnRlcm1Ob2RlICpyb290KQogICAgIHNlcGFyYXRlSW5pdC51cGRhdGVUcmVlKCk7CiB9
CiAKLVNlcGFyYXRlQXJyYXlJbml0VHJhdmVyc2VyOjpTZXBhcmF0ZUFycmF5SW5pdFRyYXZlcnNl
cigpCi0gICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSkKK1NlcGFyYXRl
QXJyYXlJbml0VHJhdmVyc2VyOjpTZXBhcmF0ZUFycmF5SW5pdFRyYXZlcnNlcigpIDogVEludGVy
bVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpCiB7CiB9CiAKLWJvb2wgU2VwYXJhdGVBcnJh
eUluaXRUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpu
b2RlKQorYm9vbCBTZXBhcmF0ZUFycmF5SW5pdFRyYXZlcnNlcjo6dmlzaXREZWNsYXJhdGlvbihW
aXNpdCwgVEludGVybURlY2xhcmF0aW9uICpub2RlKQogewotICAgIGlmIChub2RlLT5nZXRPcCgp
ID09IEVPcERlY2xhcmF0aW9uKQorICAgIFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVuY2UgPSBub2Rl
LT5nZXRTZXF1ZW5jZSgpOworICAgIFRJbnRlcm1CaW5hcnkgKmluaXROb2RlICAgPSBzZXF1ZW5j
ZS0+YmFjaygpLT5nZXRBc0JpbmFyeU5vZGUoKTsKKyAgICBpZiAoaW5pdE5vZGUgIT0gbnVsbHB0
ciAmJiBpbml0Tm9kZS0+Z2V0T3AoKSA9PSBFT3BJbml0aWFsaXplKQogICAgIHsKLSAgICAgICAg
VEludGVybVNlcXVlbmNlICpzZXF1ZW5jZSA9IG5vZGUtPmdldFNlcXVlbmNlKCk7Ci0gICAgICAg
IFRJbnRlcm1CaW5hcnkgKmluaXROb2RlID0gc2VxdWVuY2UtPmJhY2soKS0+Z2V0QXNCaW5hcnlO
b2RlKCk7Ci0gICAgICAgIGlmIChpbml0Tm9kZSAhPSBudWxscHRyICYmIGluaXROb2RlLT5nZXRP
cCgpID09IEVPcEluaXRpYWxpemUpCisgICAgICAgIFRJbnRlcm1UeXBlZCAqaW5pdGlhbGl6ZXIg
PSBpbml0Tm9kZS0+Z2V0UmlnaHQoKTsKKyAgICAgICAgaWYgKGluaXRpYWxpemVyLT5pc0FycmF5
KCkgJiYgIXNoOjpPdXRwdXRITFNMOjpjYW5Xcml0ZUFzSExTTExpdGVyYWwoaW5pdGlhbGl6ZXIp
KQogICAgICAgICB7Ci0gICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmluaXRpYWxpemVyID0gaW5p
dE5vZGUtPmdldFJpZ2h0KCk7Ci0gICAgICAgICAgICBpZiAoaW5pdGlhbGl6ZXItPmlzQXJyYXko
KSAmJiAhc2g6Ok91dHB1dEhMU0w6OmNhbldyaXRlQXNITFNMTGl0ZXJhbChpbml0aWFsaXplcikp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgcmVseSBvbiB0aGF0IGFycmF5
IGRlY2xhcmF0aW9ucyBoYXZlIGJlZW4gaXNvbGF0ZWQgdG8gc2luZ2xlIGRlY2xhcmF0aW9ucy4K
LSAgICAgICAgICAgICAgICBBU1NFUlQoc2VxdWVuY2UtPnNpemUoKSA9PSAxKTsKLSAgICAgICAg
ICAgICAgICBUSW50ZXJtVHlwZWQgKnN5bWJvbCA9IGluaXROb2RlLT5nZXRMZWZ0KCk7Ci0gICAg
ICAgICAgICAgICAgVEludGVybUJsb2NrICpwYXJlbnRCbG9jayA9IGdldFBhcmVudE5vZGUoKS0+
Z2V0QXNCbG9jaygpOwotICAgICAgICAgICAgICAgIEFTU0VSVChwYXJlbnRCbG9jayAhPSBudWxs
cHRyKTsKLQotICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSByZXBsYWNlbWVudHM7Ci0K
LSAgICAgICAgICAgICAgICBUSW50ZXJtQWdncmVnYXRlICpyZXBsYWNlbWVudERlY2xhcmF0aW9u
ID0gbmV3IFRJbnRlcm1BZ2dyZWdhdGU7Ci0gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnREZWNs
YXJhdGlvbi0+c2V0T3AoRU9wRGVjbGFyYXRpb24pOwotICAgICAgICAgICAgICAgIHJlcGxhY2Vt
ZW50RGVjbGFyYXRpb24tPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayhzeW1ib2wpOwotICAgICAg
ICAgICAgICAgIHJlcGxhY2VtZW50RGVjbGFyYXRpb24tPnNldExpbmUoc3ltYm9sLT5nZXRMaW5l
KCkpOwotICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50cy5wdXNoX2JhY2socmVwbGFjZW1lbnRE
ZWNsYXJhdGlvbik7Ci0KLSAgICAgICAgICAgICAgICBUSW50ZXJtQmluYXJ5ICpyZXBsYWNlbWVu
dEFzc2lnbm1lbnQgPQotICAgICAgICAgICAgICAgICAgICBuZXcgVEludGVybUJpbmFyeShFT3BB
c3NpZ24sIHN5bWJvbCwgaW5pdGlhbGl6ZXIpOwotICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50
QXNzaWdubWVudC0+c2V0TGluZShzeW1ib2wtPmdldExpbmUoKSk7Ci0gICAgICAgICAgICAgICAg
cmVwbGFjZW1lbnRzLnB1c2hfYmFjayhyZXBsYWNlbWVudEFzc2lnbm1lbnQpOwotCi0gICAgICAg
ICAgICAgICAgbU11bHRpUmVwbGFjZW1lbnRzLnB1c2hfYmFjaygKLSAgICAgICAgICAgICAgICAg
ICAgTm9kZVJlcGxhY2VXaXRoTXVsdGlwbGVFbnRyeShwYXJlbnRCbG9jaywgbm9kZSwgcmVwbGFj
ZW1lbnRzKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBXZSByZWx5IG9uIHRoYXQg
YXJyYXkgZGVjbGFyYXRpb25zIGhhdmUgYmVlbiBpc29sYXRlZCB0byBzaW5nbGUgZGVjbGFyYXRp
b25zLgorICAgICAgICAgICAgQVNTRVJUKHNlcXVlbmNlLT5zaXplKCkgPT0gMSk7CisgICAgICAg
ICAgICBUSW50ZXJtVHlwZWQgKnN5bWJvbCAgICAgID0gaW5pdE5vZGUtPmdldExlZnQoKTsKKyAg
ICAgICAgICAgIFRJbnRlcm1CbG9jayAqcGFyZW50QmxvY2sgPSBnZXRQYXJlbnROb2RlKCktPmdl
dEFzQmxvY2soKTsKKyAgICAgICAgICAgIEFTU0VSVChwYXJlbnRCbG9jayAhPSBudWxscHRyKTsK
KworICAgICAgICAgICAgVEludGVybVNlcXVlbmNlIHJlcGxhY2VtZW50czsKKworICAgICAgICAg
ICAgVEludGVybURlY2xhcmF0aW9uICpyZXBsYWNlbWVudERlY2xhcmF0aW9uID0gbmV3IFRJbnRl
cm1EZWNsYXJhdGlvbigpOworICAgICAgICAgICAgcmVwbGFjZW1lbnREZWNsYXJhdGlvbi0+YXBw
ZW5kRGVjbGFyYXRvcihzeW1ib2wpOworICAgICAgICAgICAgcmVwbGFjZW1lbnREZWNsYXJhdGlv
bi0+c2V0TGluZShzeW1ib2wtPmdldExpbmUoKSk7CisgICAgICAgICAgICByZXBsYWNlbWVudHMu
cHVzaF9iYWNrKHJlcGxhY2VtZW50RGVjbGFyYXRpb24pOworCisgICAgICAgICAgICBUSW50ZXJt
QmluYXJ5ICpyZXBsYWNlbWVudEFzc2lnbm1lbnQgPQorICAgICAgICAgICAgICAgIG5ldyBUSW50
ZXJtQmluYXJ5KEVPcEFzc2lnbiwgc3ltYm9sLCBpbml0aWFsaXplcik7CisgICAgICAgICAgICBy
ZXBsYWNlbWVudEFzc2lnbm1lbnQtPnNldExpbmUoc3ltYm9sLT5nZXRMaW5lKCkpOworICAgICAg
ICAgICAgcmVwbGFjZW1lbnRzLnB1c2hfYmFjayhyZXBsYWNlbWVudEFzc2lnbm1lbnQpOworCisg
ICAgICAgICAgICBtTXVsdGlSZXBsYWNlbWVudHMucHVzaF9iYWNrKAorICAgICAgICAgICAgICAg
IE5vZGVSZXBsYWNlV2l0aE11bHRpcGxlRW50cnkocGFyZW50QmxvY2ssIG5vZGUsIHJlcGxhY2Vt
ZW50cykpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCi19IC8vIG5hbWVzcGFjZQorfSAgLy8g
bmFtZXNwYWNlCiAKIHZvaWQgU2VwYXJhdGVBcnJheUluaXRpYWxpemF0aW9uKFRJbnRlcm1Ob2Rl
ICpyb290KQogewogICAgIFNlcGFyYXRlQXJyYXlJbml0VHJhdmVyc2VyOjphcHBseShyb290KTsK
IH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZUFycmF5SW5pdGlhbGl6YXRpb24u
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NlcGFy
YXRlQXJyYXlJbml0aWFsaXphdGlvbi5oCmluZGV4IGQxNjM1N2EzYWZkLi4zYTliYjU1ZGQxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvU2VwYXJhdGVBcnJheUluaXRpYWxpemF0aW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVBcnJheUluaXRpYWxpemF0aW9u
LmgKQEAgLTMsNyArMyw4IEBACiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgogLy8KLS8vIFRoZSBTZXBhcmF0ZUFycmF5SW5pdGlhbGl6YXRpb24gZnVuY3Rp
b24gc3BsaXRzIGVhY2ggYXJyYXkgaW5pdGlhbGl6YXRpb24gaW50byBhIGRlY2xhcmF0aW9uIGFu
ZCBhbiBhc3NpZ25tZW50LgorLy8gVGhlIFNlcGFyYXRlQXJyYXlJbml0aWFsaXphdGlvbiBmdW5j
dGlvbiBzcGxpdHMgZWFjaCBhcnJheSBpbml0aWFsaXphdGlvbiBpbnRvIGEgZGVjbGFyYXRpb24g
YW5kCisvLyBhbiBhc3NpZ25tZW50LgogLy8gRXhhbXBsZToKIC8vICAgICB0eXBlW25dIGEgPSBp
bml0aWFsaXplcjsKIC8vIHdpbGwgZWZmZWN0aXZlbHkgYmVjb21lCkBAIC0xOCw4ICsxOSwxMSBA
QAogI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX1NFUEFSQVRFQVJSQVlJTklUSUFMSVpBVElP
Tl9IXwogI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX1NFUEFSQVRFQVJSQVlJTklUSUFMSVpB
VElPTl9IXwogCituYW1lc3BhY2Ugc2gKK3sKIGNsYXNzIFRJbnRlcm1Ob2RlOwogCiB2b2lkIFNl
cGFyYXRlQXJyYXlJbml0aWFsaXphdGlvbihUSW50ZXJtTm9kZSAqcm9vdCk7Cit9ICAvLyBuYW1l
c3BhY2Ugc2gKIAogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1NFUEFSQVRFQVJSQVlJ
TklUSUFMSVpBVElPTl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVEZWNsYXJhdGlvbnMuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVEZWNsYXJhdGlv
bnMuY3BwCmluZGV4IGNjMzM5ZWE2NGVhLi45M2M4YjM4Y2M2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVEZWNsYXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1NlcGFyYXRlRGVjbGFyYXRpb25zLmNwcApAQCAtNSw4ICs1LDggQEAKIC8vCiAvLyBU
aGUgU2VwYXJhdGVEZWNsYXJhdGlvbnMgZnVuY3Rpb24gcHJvY2Vzc2VzIGRlY2xhcmF0aW9ucywg
c28gdGhhdCBpbiB0aGUgZW5kIGVhY2ggZGVjbGFyYXRpb24KIC8vIGNvbnRhaW5zIG9ubHkgb25l
IGRlY2xhcmF0b3IuCi0vLyBUaGlzIGlzIHVzZWZ1bCBhcyBhbiBpbnRlcm1lZGlhdGUgc3RlcCB3
aGVuIGluaXRpYWxpemF0aW9uIG5lZWRzIHRvIGJlIHNlcGFyYXRlZCBmcm9tIGRlY2xhcmF0aW9u
LAotLy8gb3Igd2hlbiB0aGluZ3MgbmVlZCB0byBiZSB1bmZvbGRlZCBvdXQgb2YgdGhlIGluaXRp
YWxpemVyLgorLy8gVGhpcyBpcyB1c2VmdWwgYXMgYW4gaW50ZXJtZWRpYXRlIHN0ZXAgd2hlbiBp
bml0aWFsaXphdGlvbiBuZWVkcyB0byBiZSBzZXBhcmF0ZWQgZnJvbQorLy8gZGVjbGFyYXRpb24s
IG9yIHdoZW4gdGhpbmdzIG5lZWQgdG8gYmUgdW5mb2xkZWQgb3V0IG9mIHRoZSBpbml0aWFsaXpl
ci4KIC8vIEV4YW1wbGU6CiAvLyAgICAgaW50IGFbMV0gPSBpbnRbMV0oMSksIGJbMV0gPSBpbnRb
MV0oMik7CiAvLyBnZXRzIHRyYW5zZm9ybWVkIHdoZW4gcnVuIHRocm91Z2ggdGhpcyBjbGFzcyBp
bnRvIHRoZSBBU1QgZXF1aXZhbGVudCBvZjoKQEAgLTE3LDYgKzE3LDkgQEAKIAogI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwog
bmFtZXNwYWNlCiB7CiAKQEAgLTI0LDkgKzI3LDEwIEBAIGNsYXNzIFNlcGFyYXRlRGVjbGFyYXRp
b25zVHJhdmVyc2VyIDogcHJpdmF0ZSBUSW50ZXJtVHJhdmVyc2VyCiB7CiAgIHB1YmxpYzoKICAg
ICBzdGF0aWMgdm9pZCBhcHBseShUSW50ZXJtTm9kZSAqcm9vdCk7CisKICAgcHJpdmF0ZToKICAg
ICBTZXBhcmF0ZURlY2xhcmF0aW9uc1RyYXZlcnNlcigpOwotICAgIGJvb2wgdmlzaXRBZ2dyZWdh
dGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlz
aXREZWNsYXJhdGlvbihWaXNpdCwgVEludGVybURlY2xhcmF0aW9uICpub2RlKSBvdmVycmlkZTsK
IH07CiAKIHZvaWQgU2VwYXJhdGVEZWNsYXJhdGlvbnNUcmF2ZXJzZXI6OmFwcGx5KFRJbnRlcm1O
b2RlICpyb290KQpAQCAtNDEsMzggKzQ1LDM1IEBAIFNlcGFyYXRlRGVjbGFyYXRpb25zVHJhdmVy
c2VyOjpTZXBhcmF0ZURlY2xhcmF0aW9uc1RyYXZlcnNlcigpCiB7CiB9CiAKLWJvb2wgU2VwYXJh
dGVEZWNsYXJhdGlvbnNUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdn
cmVnYXRlICpub2RlKQorYm9vbCBTZXBhcmF0ZURlY2xhcmF0aW9uc1RyYXZlcnNlcjo6dmlzaXRE
ZWNsYXJhdGlvbihWaXNpdCwgVEludGVybURlY2xhcmF0aW9uICpub2RlKQogewotICAgIGlmIChu
b2RlLT5nZXRPcCgpID09IEVPcERlY2xhcmF0aW9uKQorICAgIFRJbnRlcm1TZXF1ZW5jZSAqc2Vx
dWVuY2UgPSBub2RlLT5nZXRTZXF1ZW5jZSgpOworICAgIGlmIChzZXF1ZW5jZS0+c2l6ZSgpID4g
MSkKICAgICB7Ci0gICAgICAgIFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVuY2UgPSBub2RlLT5nZXRT
ZXF1ZW5jZSgpOwotICAgICAgICBpZiAoc2VxdWVuY2UtPnNpemUoKSA+IDEpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqcGFyZW50QmxvY2sgPSBnZXRQYXJlbnROb2RlKCkt
PmdldEFzQmxvY2soKTsKLSAgICAgICAgICAgIEFTU0VSVChwYXJlbnRCbG9jayAhPSBudWxscHRy
KTsKKyAgICAgICAgVEludGVybUJsb2NrICpwYXJlbnRCbG9jayA9IGdldFBhcmVudE5vZGUoKS0+
Z2V0QXNCbG9jaygpOworICAgICAgICBBU1NFUlQocGFyZW50QmxvY2sgIT0gbnVsbHB0cik7CiAK
LSAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSByZXBsYWNlbWVudERlY2xhcmF0aW9uczsKLSAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGlpID0gMDsgaWkgPCBzZXF1ZW5jZS0+c2l6ZSgpOyArK2lp
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnJlcGxh
Y2VtZW50RGVjbGFyYXRpb24gPSBuZXcgVEludGVybUFnZ3JlZ2F0ZTsKLQotICAgICAgICAgICAg
ICAgIHJlcGxhY2VtZW50RGVjbGFyYXRpb24tPnNldE9wKEVPcERlY2xhcmF0aW9uKTsKLSAgICAg
ICAgICAgICAgICByZXBsYWNlbWVudERlY2xhcmF0aW9uLT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2Jh
Y2soc2VxdWVuY2UtPmF0KGlpKSk7Ci0gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnREZWNsYXJh
dGlvbi0+c2V0TGluZShzZXF1ZW5jZS0+YXQoaWkpLT5nZXRMaW5lKCkpOwotICAgICAgICAgICAg
ICAgIHJlcGxhY2VtZW50RGVjbGFyYXRpb25zLnB1c2hfYmFjayhyZXBsYWNlbWVudERlY2xhcmF0
aW9uKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgVEludGVybVNlcXVlbmNlIHJlcGxhY2VtZW50
RGVjbGFyYXRpb25zOworICAgICAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgc2VxdWVuY2Ut
PnNpemUoKTsgKytpaSkKKyAgICAgICAgeworICAgICAgICAgICAgVEludGVybURlY2xhcmF0aW9u
ICpyZXBsYWNlbWVudERlY2xhcmF0aW9uID0gbmV3IFRJbnRlcm1EZWNsYXJhdGlvbigpOwogCi0g
ICAgICAgICAgICBtTXVsdGlSZXBsYWNlbWVudHMucHVzaF9iYWNrKAotICAgICAgICAgICAgICAg
IE5vZGVSZXBsYWNlV2l0aE11bHRpcGxlRW50cnkocGFyZW50QmxvY2ssIG5vZGUsIHJlcGxhY2Vt
ZW50RGVjbGFyYXRpb25zKSk7CisgICAgICAgICAgICByZXBsYWNlbWVudERlY2xhcmF0aW9uLT5h
cHBlbmREZWNsYXJhdG9yKHNlcXVlbmNlLT5hdChpaSktPmdldEFzVHlwZWQoKSk7CisgICAgICAg
ICAgICByZXBsYWNlbWVudERlY2xhcmF0aW9uLT5zZXRMaW5lKHNlcXVlbmNlLT5hdChpaSktPmdl
dExpbmUoKSk7CisgICAgICAgICAgICByZXBsYWNlbWVudERlY2xhcmF0aW9ucy5wdXNoX2JhY2so
cmVwbGFjZW1lbnREZWNsYXJhdGlvbik7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIG1NdWx0aVJlcGxhY2VtZW50cy5wdXNoX2JhY2soCisgICAgICAgICAgICBO
b2RlUmVwbGFjZVdpdGhNdWx0aXBsZUVudHJ5KHBhcmVudEJsb2NrLCBub2RlLCByZXBsYWNlbWVu
dERlY2xhcmF0aW9ucykpOwogICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLX0gLy8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UKIAogdm9pZCBTZXBhcmF0
ZURlY2xhcmF0aW9ucyhUSW50ZXJtTm9kZSAqcm9vdCkKIHsKICAgICBTZXBhcmF0ZURlY2xhcmF0
aW9uc1RyYXZlcnNlcjo6YXBwbHkocm9vdCk7CiB9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
U2VwYXJhdGVEZWNsYXJhdGlvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1NlcGFyYXRlRGVjbGFyYXRpb25zLmgKaW5kZXggNzc5MTNhYjhiYmMu
LjgxNDJmYWVhMWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9TZXBhcmF0ZURlY2xhcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlRGVjbGFyYXRpb25z
LmgKQEAgLTUsOCArNSw4IEBACiAvLwogLy8gVGhlIFNlcGFyYXRlRGVjbGFyYXRpb25zIGZ1bmN0
aW9uIHByb2Nlc3NlcyBkZWNsYXJhdGlvbnMsIHNvIHRoYXQgaW4gdGhlIGVuZCBlYWNoIGRlY2xh
cmF0aW9uCiAvLyBjb250YWlucyBvbmx5IG9uZSBkZWNsYXJhdG9yLgotLy8gVGhpcyBpcyB1c2Vm
dWwgYXMgYW4gaW50ZXJtZWRpYXRlIHN0ZXAgd2hlbiBpbml0aWFsaXphdGlvbiBuZWVkcyB0byBi
ZSBzZXBhcmF0ZWQgZnJvbSBkZWNsYXJhdGlvbiwKLS8vIG9yIHdoZW4gdGhpbmdzIG5lZWQgdG8g
YmUgdW5mb2xkZWQgb3V0IG9mIHRoZSBpbml0aWFsaXplci4KKy8vIFRoaXMgaXMgdXNlZnVsIGFz
IGFuIGludGVybWVkaWF0ZSBzdGVwIHdoZW4gaW5pdGlhbGl6YXRpb24gbmVlZHMgdG8gYmUgc2Vw
YXJhdGVkIGZyb20KKy8vIGRlY2xhcmF0aW9uLCBvciB3aGVuIHRoaW5ncyBuZWVkIHRvIGJlIHVu
Zm9sZGVkIG91dCBvZiB0aGUgaW5pdGlhbGl6ZXIuCiAvLyBFeGFtcGxlOgogLy8gICAgIGludCBh
WzFdID0gaW50WzFdKDEpLCBiWzFdID0gaW50WzFdKDIpOwogLy8gZ2V0cyB0cmFuc2Zvcm1lZCB3
aGVuIHJ1biB0aHJvdWdoIHRoaXMgY2xhc3MgaW50byB0aGUgQVNUIGVxdWl2YWxlbnQgb2Y6CkBA
IC0xNiw4ICsxNiwxMSBAQAogI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX1NFUEFSQVRFREVD
TEFSQVRJT05TX0hfCiAjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfU0VQQVJBVEVERUNMQVJB
VElPTlNfSF8KIAorbmFtZXNwYWNlIHNoCit7CiBjbGFzcyBUSW50ZXJtTm9kZTsKIAogdm9pZCBT
ZXBhcmF0ZURlY2xhcmF0aW9ucyhUSW50ZXJtTm9kZSAqcm9vdCk7Cit9ICAvLyBuYW1lc3BhY2Ug
c2gKIAogI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1NFUEFSQVRFREVDTEFSQVRJT05T
X0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9TZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlRXhwcmVzc2lv
bnNSZXR1cm5pbmdBcnJheXMuY3BwCmluZGV4IDQ0YmY1NTRlNGI4Li4xZTcwMDBiNGNkZiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
U2VwYXJhdGVFeHByZXNzaW9uc1JldHVybmluZ0FycmF5cy5jcHAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVFeHByZXNzaW9uc1Jl
dHVybmluZ0FycmF5cy5jcHAKQEAgLTMsOCArMyw4IEBACiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KLS8vIFNlcGFyYXRlRXhwcmVzc2lvbnNSZXR1
cm5pbmdBcnJheXMgc3BsaXRzIGFycmF5LXJldHVybmluZyBleHByZXNzaW9ucyB0aGF0IGFyZSBu
b3QgYXJyYXkgbmFtZXMgZnJvbSBtb3JlIGNvbXBsZXgKLS8vIGV4cHJlc3Npb25zLCBhc3NpZ25p
bmcgdGhlbSB0byBhIHRlbXBvcmFyeSB2YXJpYWJsZSBhIy4KKy8vIFNlcGFyYXRlRXhwcmVzc2lv
bnNSZXR1cm5pbmdBcnJheXMgc3BsaXRzIGFycmF5LXJldHVybmluZyBleHByZXNzaW9ucyB0aGF0
IGFyZSBub3QgYXJyYXkgbmFtZXMKKy8vIGZyb20gbW9yZSBjb21wbGV4IGV4cHJlc3Npb25zLCBh
c3NpZ25pbmcgdGhlbSB0byBhIHRlbXBvcmFyeSB2YXJpYWJsZSBhIy4KIC8vIEV4YW1wbGVzIHdo
ZXJlIGEsIGIgYW5kIGMgYXJlIGFsbCBhcnJheXM6CiAvLyAoYSA9IGIpID09IChhID0gYykgaXMg
c3BsaXQgaW50byBhID0gYjsgdHlwZVtuXSBhMSA9IGE7IGEgPSBjOyB0eXBlW25dIGEyID0gYTsg
YTEgPT0gYTI7CiAvLyB0eXBlIGQgPSB0eXBlW25dKC4uLilbaV07IGlzIHNwbGl0IGludG8gdHlw
ZVtuXSBhMSA9IHR5cGVbbl0oLi4uKTsgdHlwZSBkID0gYTFbaV07CkBAIC0xNCw2ICsxNCw5IEBA
CiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCiAjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIuaCIKIAorbmFtZXNw
YWNlIHNoCit7CisKIG5hbWVzcGFjZQogewogCkBAIC0zMCw4ICszMyw4IEBAIGNsYXNzIFNlcGFy
YXRlRXhwcmVzc2lvbnNUcmF2ZXJzZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgIGJv
b2wgZm91bmRBcnJheUV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBtRm91bmRBcnJheUV4cHJl
c3Npb247IH0KIAogICBwcm90ZWN0ZWQ6Ci0gICAgLy8gTWFya2VkIHRvIHRydWUgb25jZSBhbiBv
cGVyYXRpb24gdGhhdCBuZWVkcyB0byBiZSBob2lzdGVkIG91dCBvZiB0aGUgZXhwcmVzc2lvbiBo
YXMgYmVlbiBmb3VuZC4KLSAgICAvLyBBZnRlciB0aGF0LCBubyBtb3JlIEFTVCB1cGRhdGVzIGFy
ZSBwZXJmb3JtZWQgb24gdGhhdCB0cmF2ZXJzYWwuCisgICAgLy8gTWFya2VkIHRvIHRydWUgb25j
ZSBhbiBvcGVyYXRpb24gdGhhdCBuZWVkcyB0byBiZSBob2lzdGVkIG91dCBvZiB0aGUgZXhwcmVz
c2lvbiBoYXMgYmVlbgorICAgIC8vIGZvdW5kLiBBZnRlciB0aGF0LCBubyBtb3JlIEFTVCB1cGRh
dGVzIGFyZSBwZXJmb3JtZWQgb24gdGhhdCB0cmF2ZXJzYWwuCiAgICAgYm9vbCBtRm91bmRBcnJh
eUV4cHJlc3Npb247CiAKICAgICBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXIgbVBhdHRlcm5Ub1Nl
cGFyYXRlTWF0Y2hlcjsKQEAgLTUyLDIxICs1NSw2IEBAIFRJbnRlcm1CaW5hcnkgKkNvcHlBc3Np
Z25tZW50Tm9kZShUSW50ZXJtQmluYXJ5ICpub2RlKQogICAgIHJldHVybiBuZXcgVEludGVybUJp
bmFyeShub2RlLT5nZXRPcCgpLCBub2RlLT5nZXRMZWZ0KCksIG5vZGUtPmdldFJpZ2h0KCkpOwog
fQogCi0vLyBQZXJmb3JtcyBhIHNoYWxsb3cgY29weSBvZiBhIGNvbnN0cnVjdG9yL2Z1bmN0aW9u
IGNhbGwgbm9kZS4KLVRJbnRlcm1BZ2dyZWdhdGUgKkNvcHlBZ2dyZWdhdGVOb2RlKFRJbnRlcm1B
Z2dyZWdhdGUgKm5vZGUpCi17Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqY29weU5vZGUgPSBuZXcg
VEludGVybUFnZ3JlZ2F0ZShub2RlLT5nZXRPcCgpKTsKLSAgICBUSW50ZXJtU2VxdWVuY2UgKmNv
cHlTZXEgPSBjb3B5Tm9kZS0+Z2V0U2VxdWVuY2UoKTsKLSAgICBjb3B5U2VxLT5pbnNlcnQoY29w
eVNlcS0+YmVnaW4oKSwgbm9kZS0+Z2V0U2VxdWVuY2UoKS0+YmVnaW4oKSwgbm9kZS0+Z2V0U2Vx
dWVuY2UoKS0+ZW5kKCkpOwotICAgIGNvcHlOb2RlLT5zZXRUeXBlKG5vZGUtPmdldFR5cGUoKSk7
Ci0gICAgKmNvcHlOb2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKSA9ICpub2RlLT5nZXRGdW5j
dGlvblN5bWJvbEluZm8oKTsKLSAgICBpZiAobm9kZS0+aXNVc2VyRGVmaW5lZCgpKQotICAgIHsK
LSAgICAgICAgY29weU5vZGUtPnNldFVzZXJEZWZpbmVkKCk7Ci0gICAgfQotICAgIHJldHVybiBj
b3B5Tm9kZTsKLX0KLQogYm9vbCBTZXBhcmF0ZUV4cHJlc3Npb25zVHJhdmVyc2VyOjp2aXNpdEJp
bmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkKIHsKICAgICBpZiAobUZvdW5k
QXJyYXlFeHByZXNzaW9uKQpAQCAtOTYsMTcgKzg0LDE3IEBAIGJvb2wgU2VwYXJhdGVFeHByZXNz
aW9uc1RyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5v
ZGUpCiBib29sIFNlcGFyYXRlRXhwcmVzc2lvbnNUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZp
c2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQogewogICAgIGlmIChtRm91bmRBcnJh
eUV4cHJlc3Npb24pCi0gICAgICAgIHJldHVybiBmYWxzZTsgLy8gTm8gbmVlZCB0byB0cmF2ZXJz
ZSBmdXJ0aGVyCisgICAgICAgIHJldHVybiBmYWxzZTsgIC8vIE5vIG5lZWQgdG8gdHJhdmVyc2Ug
ZnVydGhlcgogCiAgICAgaWYgKCFtUGF0dGVyblRvU2VwYXJhdGVNYXRjaGVyLm1hdGNoKG5vZGUs
IGdldFBhcmVudE5vZGUoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgQVNTRVJUKG5v
ZGUtPmlzQ29uc3RydWN0b3IoKSB8fCBub2RlLT5nZXRPcCgpID09IEVPcEZ1bmN0aW9uQ2FsbCk7
CisgICAgQVNTRVJUKG5vZGUtPmlzQ29uc3RydWN0b3IoKSB8fCBub2RlLT5nZXRPcCgpID09IEVP
cENhbGxGdW5jdGlvbkluQVNUKTsKIAogICAgIG1Gb3VuZEFycmF5RXhwcmVzc2lvbiA9IHRydWU7
CiAKICAgICBUSW50ZXJtU2VxdWVuY2UgaW5zZXJ0aW9uczsKLSAgICBpbnNlcnRpb25zLnB1c2hf
YmFjayhjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKENvcHlBZ2dyZWdhdGVOb2RlKG5vZGUpKSk7
CisgICAgaW5zZXJ0aW9ucy5wdXNoX2JhY2soY3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihub2Rl
LT5zaGFsbG93Q29weSgpKSk7CiAgICAgaW5zZXJ0U3RhdGVtZW50c0luUGFyZW50QmxvY2soaW5z
ZXJ0aW9ucyk7CiAKICAgICBxdWV1ZVJlcGxhY2VtZW50KG5vZGUsIGNyZWF0ZVRlbXBTeW1ib2wo
bm9kZS0+Z2V0VHlwZSgpKSwgT3JpZ2luYWxOb2RlOjpJU19EUk9QUEVEKTsKQEAgLTEyMCw3ICsx
MDgsNyBAQCB2b2lkIFNlcGFyYXRlRXhwcmVzc2lvbnNUcmF2ZXJzZXI6Om5leHRJdGVyYXRpb24o
KQogICAgIG5leHRUZW1wb3JhcnlJbmRleCgpOwogfQogCi19IC8vIG5hbWVzcGFjZQorfSAgLy8g
bmFtZXNwYWNlCiAKIHZvaWQgU2VwYXJhdGVFeHByZXNzaW9uc1JldHVybmluZ0FycmF5cyhUSW50
ZXJtTm9kZSAqcm9vdCwgdW5zaWduZWQgaW50ICp0ZW1wb3JhcnlJbmRleCkKIHsKQEAgLTEzNCw2
ICsxMjIsNyBAQCB2b2lkIFNlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJheXMoVEludGVy
bU5vZGUgKnJvb3QsIHVuc2lnbmVkIGludCAqdGVtcG9yYQogICAgICAgICByb290LT50cmF2ZXJz
ZSgmdHJhdmVyc2VyKTsKICAgICAgICAgaWYgKHRyYXZlcnNlci5mb3VuZEFycmF5RXhwcmVzc2lv
bigpKQogICAgICAgICAgICAgdHJhdmVyc2VyLnVwZGF0ZVRyZWUoKTsKLSAgICB9Ci0gICAgd2hp
bGUgKHRyYXZlcnNlci5mb3VuZEFycmF5RXhwcmVzc2lvbigpKTsKKyAgICB9IHdoaWxlICh0cmF2
ZXJzZXIuZm91bmRBcnJheUV4cHJlc3Npb24oKSk7CiB9CisKK30gIC8vIG5hbWVzcGFjZSBzaApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvU2VwYXJhdGVFeHByZXNzaW9uc1JldHVybmluZ0FycmF5cy5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVFeHByZXNzaW9uc1JldHVy
bmluZ0FycmF5cy5oCmluZGV4IGIxNzhlYmIzZWM0Li4xZWQ1MGEwNzdkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2VwYXJhdGVF
eHByZXNzaW9uc1JldHVybmluZ0FycmF5cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NlcGFyYXRlRXhwcmVzc2lvbnNSZXR1cm5pbmdBcnJh
eXMuaApAQCAtMyw4ICszLDggQEAKIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCiAvLwotLy8gU2VwYXJhdGVFeHByZXNzaW9uc1JldHVybmluZ0FycmF5cyBz
cGxpdHMgYXJyYXktcmV0dXJuaW5nIGV4cHJlc3Npb25zIHRoYXQgYXJlIG5vdCBhcnJheSBuYW1l
cyBmcm9tIG1vcmUgY29tcGxleAotLy8gZXhwcmVzc2lvbnMsIGFzc2lnbmluZyB0aGVtIHRvIGEg
dGVtcG9yYXJ5IHZhcmlhYmxlIGEjLgorLy8gU2VwYXJhdGVFeHByZXNzaW9uc1JldHVybmluZ0Fy
cmF5cyBzcGxpdHMgYXJyYXktcmV0dXJuaW5nIGV4cHJlc3Npb25zIHRoYXQgYXJlIG5vdCBhcnJh
eSBuYW1lcworLy8gZnJvbSBtb3JlIGNvbXBsZXggZXhwcmVzc2lvbnMsIGFzc2lnbmluZyB0aGVt
IHRvIGEgdGVtcG9yYXJ5IHZhcmlhYmxlIGEjLgogLy8gRXhhbXBsZXMgd2hlcmUgYSwgYiBhbmQg
YyBhcmUgYWxsIGFycmF5czoKIC8vIChhID0gYikgPT0gKGEgPSBjKSBpcyBzcGxpdCBpbnRvIGEg
PSBiOyB0eXBlW25dIGExID0gYTsgYSA9IGM7IHR5cGVbbl0gYTIgPSBhOyBhMSA9PSBhMjsKIC8v
IHR5cGUgZCA9IHR5cGVbbl0oLi4uKVtpXTsgaXMgc3BsaXQgaW50byB0eXBlW25dIGExID0gdHlw
ZVtuXSguLi4pOyB0eXBlIGQgPSBhMVtpXTsKQEAgLTEyLDggKzEyLDExIEBACiAjaWZuZGVmIENP
TVBJTEVSX1RSQU5TTEFUT1JfU0VQQVJBVEVFWFBSRVNTSU9OU1JFVFVSTklOR0FSUkFZU19IXwog
I2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX1NFUEFSQVRFRVhQUkVTU0lPTlNSRVRVUk5JTkdB
UlJBWVNfSF8KIAorbmFtZXNwYWNlIHNoCit7CiBjbGFzcyBUSW50ZXJtTm9kZTsKIAogdm9pZCBT
ZXBhcmF0ZUV4cHJlc3Npb25zUmV0dXJuaW5nQXJyYXlzKFRJbnRlcm1Ob2RlICpyb290LCB1bnNp
Z25lZCBpbnQgKnRlbXBvcmFyeUluZGV4KTsKK30gIC8vIG5hbWVzcGFjZSBzaAogCi0jZW5kaWYg
Ly8gQ09NUElMRVJfVFJBTlNMQVRPUl9TRVBBUkFURUVYUFJFU1NJT05TUkVUVVJOSU5HQVJSQVlT
X0hfCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfU0VQQVJBVEVFWFBSRVNTSU9OU1JF
VFVSTklOR0FSUkFZU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvU2V2ZXJpdHkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NldmVyaXR5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAuLjQ3ODA4YTE2YTdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2V2ZXJpdHkuaApAQCAt
MCwwICsxLDIyIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9S
X1NFVkVSSVRZX0hfCisjZGVmaW5lIENPTVBJTEVSX1RSQU5TTEFUT1JfU0VWRVJJVFlfSF8KKwor
bmFtZXNwYWNlIHNoCit7CisKKy8vIFNldmVyaXR5IGlzIHVzZWQgdG8gY2xhc3NpZnkgaW5mbyBs
b2cgbWVzc2FnZXMuCitlbnVtIFNldmVyaXR5Cit7CisgICAgU0hfV0FSTklORywKKyAgICBTSF9F
UlJPUgorfTsKKworfSAgLy8gbmFtZXNwYWNlIHNoCisKKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJB
TlNMQVRPUl9TRVZFUklUWV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2hhZGVyTGFuZy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaGFkZXJMYW5nLmNwcAppbmRleCAzN2Ix
MTE0YTJiYi4uMTFiODNmMzAxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NoYWRlckxhbmcuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NoYWRlckxhbmcuY3BwCkBAIC0x
NiwxMCArMTYsMTMgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL2xlbmd0aF9saW1p
dHMuaCIKICNpZmRlZiBBTkdMRV9FTkFCTEVfSExTTAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvVHJhbnNsYXRvckhMU0wuaCIKLSNlbmRpZiAvLyBBTkdMRV9FTkFCTEVfSExTTAorI2Vu
ZGlmICAvLyBBTkdMRV9FTkFCTEVfSExTTAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3Iv
VmFyaWFibGVQYWNrZXIuaCIKICNpbmNsdWRlICJhbmdsZV9nbC5oIgogCituYW1lc3BhY2Ugc2gK
K3sKKwogbmFtZXNwYWNlCiB7CiAKQEAgLTM0LDMxICszNywzMSBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVmFyVD4KIGNvbnN0IHN0ZDo6dmVjdG9yPFZhclQ+ICpHZXRWYXJpYWJsZUxpc3QoY29uc3Qg
VENvbXBpbGVyICpjb21waWxlcik7CiAKIHRlbXBsYXRlIDw+Ci1jb25zdCBzdGQ6OnZlY3Rvcjxz
aDo6VW5pZm9ybT4gKkdldFZhcmlhYmxlTGlzdChjb25zdCBUQ29tcGlsZXIgKmNvbXBpbGVyKQor
Y29uc3Qgc3RkOjp2ZWN0b3I8VW5pZm9ybT4gKkdldFZhcmlhYmxlTGlzdChjb25zdCBUQ29tcGls
ZXIgKmNvbXBpbGVyKQogewogICAgIHJldHVybiAmY29tcGlsZXItPmdldFVuaWZvcm1zKCk7CiB9
CiAKIHRlbXBsYXRlIDw+Ci1jb25zdCBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gKkdldFZhcmlh
YmxlTGlzdChjb25zdCBUQ29tcGlsZXIgKmNvbXBpbGVyKQorY29uc3Qgc3RkOjp2ZWN0b3I8VmFy
eWluZz4gKkdldFZhcmlhYmxlTGlzdChjb25zdCBUQ29tcGlsZXIgKmNvbXBpbGVyKQogewogICAg
IHJldHVybiAmY29tcGlsZXItPmdldFZhcnlpbmdzKCk7CiB9CiAKIHRlbXBsYXRlIDw+Ci1jb25z
dCBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiAqR2V0VmFyaWFibGVMaXN0KGNvbnN0IFRDb21w
aWxlciAqY29tcGlsZXIpCitjb25zdCBzdGQ6OnZlY3RvcjxBdHRyaWJ1dGU+ICpHZXRWYXJpYWJs
ZUxpc3QoY29uc3QgVENvbXBpbGVyICpjb21waWxlcikKIHsKICAgICByZXR1cm4gJmNvbXBpbGVy
LT5nZXRBdHRyaWJ1dGVzKCk7CiB9CiAKIHRlbXBsYXRlIDw+Ci1jb25zdCBzdGQ6OnZlY3Rvcjxz
aDo6T3V0cHV0VmFyaWFibGU+ICpHZXRWYXJpYWJsZUxpc3QoY29uc3QgVENvbXBpbGVyICpjb21w
aWxlcikKK2NvbnN0IHN0ZDo6dmVjdG9yPE91dHB1dFZhcmlhYmxlPiAqR2V0VmFyaWFibGVMaXN0
KGNvbnN0IFRDb21waWxlciAqY29tcGlsZXIpCiB7CiAgICAgcmV0dXJuICZjb21waWxlci0+Z2V0
T3V0cHV0VmFyaWFibGVzKCk7CiB9CiAKIHRlbXBsYXRlIDw+Ci1jb25zdCBzdGQ6OnZlY3Rvcjxz
aDo6SW50ZXJmYWNlQmxvY2s+ICpHZXRWYXJpYWJsZUxpc3QoY29uc3QgVENvbXBpbGVyICpjb21w
aWxlcikKK2NvbnN0IHN0ZDo6dmVjdG9yPEludGVyZmFjZUJsb2NrPiAqR2V0VmFyaWFibGVMaXN0
KGNvbnN0IFRDb21waWxlciAqY29tcGlsZXIpCiB7CiAgICAgcmV0dXJuICZjb21waWxlci0+Z2V0
SW50ZXJmYWNlQmxvY2tzKCk7CiB9CkBAIC03MSw4ICs3NCw4IEBAIGNvbnN0IHN0ZDo6dmVjdG9y
PFZhclQ+ICpHZXRTaGFkZXJWYXJpYWJsZXMoY29uc3QgU2hIYW5kbGUgaGFuZGxlKQogICAgICAg
ICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBUU2hIYW5kbGVCYXNlKiBiYXNlID0gc3RhdGlj
X2Nhc3Q8VFNoSGFuZGxlQmFzZSo+KGhhbmRsZSk7Ci0gICAgVENvbXBpbGVyKiBjb21waWxlciA9
IGJhc2UtPmdldEFzQ29tcGlsZXIoKTsKKyAgICBUU2hIYW5kbGVCYXNlICpiYXNlID0gc3RhdGlj
X2Nhc3Q8VFNoSGFuZGxlQmFzZSAqPihoYW5kbGUpOworICAgIFRDb21waWxlciAqY29tcGlsZXIg
PSBiYXNlLT5nZXRBc0NvbXBpbGVyKCk7CiAgICAgaWYgKCFjb21waWxlcikKICAgICB7CiAgICAg
ICAgIHJldHVybiBOVUxMOwpAQCAtOTcsNyArMTAwLDcgQEAgVHJhbnNsYXRvckhMU0wgKkdldFRy
YW5zbGF0b3JITFNMRnJvbUhhbmRsZShTaEhhbmRsZSBoYW5kbGUpCiAgICAgVFNoSGFuZGxlQmFz
ZSAqYmFzZSA9IHN0YXRpY19jYXN0PFRTaEhhbmRsZUJhc2UgKj4oaGFuZGxlKTsKICAgICByZXR1
cm4gYmFzZS0+Z2V0QXNUcmFuc2xhdG9ySExTTCgpOwogfQotI2VuZGlmIC8vIEFOR0xFX0VOQUJM
RV9ITFNMCisjZW5kaWYgIC8vIEFOR0xFX0VOQUJMRV9ITFNMCiAKIH0gIC8vIGFub255bW91cyBu
YW1lc3BhY2UKIApAQCAtMTA1LDcgKzEwOCw3IEBAIFRyYW5zbGF0b3JITFNMICpHZXRUcmFuc2xh
dG9ySExTTEZyb21IYW5kbGUoU2hIYW5kbGUgaGFuZGxlKQogLy8gRHJpdmVyIG11c3QgY2FsbCB0
aGlzIGZpcnN0LCBvbmNlLCBiZWZvcmUgZG9pbmcgYW55IG90aGVyIGNvbXBpbGVyIG9wZXJhdGlv
bnMuCiAvLyBTdWJzZXF1ZW50IGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gYXJlIG5vLW9wLgogLy8K
LWJvb2wgU2hJbml0aWFsaXplKCkKK2Jvb2wgSW5pdGlhbGl6ZSgpCiB7CiAgICAgaWYgKCFpc0lu
aXRpYWxpemVkKQogICAgIHsKQEAgLTExNyw3ICsxMjAsNyBAQCBib29sIFNoSW5pdGlhbGl6ZSgp
CiAvLwogLy8gQ2xlYW51cCBzeW1ib2wgdGFibGVzCiAvLwotYm9vbCBTaEZpbmFsaXplKCkKK2Jv
b2wgRmluYWxpemUoKQogewogICAgIGlmIChpc0luaXRpYWxpemVkKQogICAgIHsKQEAgLTEzMCwz
NSArMTMzLDM3IEBAIGJvb2wgU2hGaW5hbGl6ZSgpCiAvLwogLy8gSW5pdGlhbGl6ZSBidWlsdC1p
biByZXNvdXJjZXMgd2l0aCBtaW5pbXVtIGV4cGVjdGVkIHZhbHVlcy4KIC8vCi12b2lkIFNoSW5p
dEJ1aWx0SW5SZXNvdXJjZXMoU2hCdWlsdEluUmVzb3VyY2VzKiByZXNvdXJjZXMpCit2b2lkIElu
aXRCdWlsdEluUmVzb3VyY2VzKFNoQnVpbHRJblJlc291cmNlcyAqcmVzb3VyY2VzKQogewogICAg
IC8vIE1ha2UgY29tcGFyYWJsZS4KICAgICBtZW1zZXQocmVzb3VyY2VzLCAwLCBzaXplb2YoKnJl
c291cmNlcykpOwogCiAgICAgLy8gQ29uc3RhbnRzLgotICAgIHJlc291cmNlcy0+TWF4VmVydGV4
QXR0cmlicyA9IDg7Ci0gICAgcmVzb3VyY2VzLT5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyA9IDEy
ODsKLSAgICByZXNvdXJjZXMtPk1heFZhcnlpbmdWZWN0b3JzID0gODsKLSAgICByZXNvdXJjZXMt
Pk1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzID0gMDsKKyAgICByZXNvdXJjZXMtPk1heFZlcnRl
eEF0dHJpYnMgICAgICAgICAgICAgPSA4OworICAgIHJlc291cmNlcy0+TWF4VmVydGV4VW5pZm9y
bVZlY3RvcnMgICAgICA9IDEyODsKKyAgICByZXNvdXJjZXMtPk1heFZhcnlpbmdWZWN0b3JzICAg
ICAgICAgICAgPSA4OworICAgIHJlc291cmNlcy0+TWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMg
ICA9IDA7CiAgICAgcmVzb3VyY2VzLT5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzID0gODsK
LSAgICByZXNvdXJjZXMtPk1heFRleHR1cmVJbWFnZVVuaXRzID0gODsKLSAgICByZXNvdXJjZXMt
Pk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMgPSAxNjsKLSAgICByZXNvdXJjZXMtPk1heERyYXdC
dWZmZXJzID0gMTsKKyAgICByZXNvdXJjZXMtPk1heFRleHR1cmVJbWFnZVVuaXRzICAgICAgICAg
PSA4OworICAgIHJlc291cmNlcy0+TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyAgICA9IDE2Owor
ICAgIHJlc291cmNlcy0+TWF4RHJhd0J1ZmZlcnMgICAgICAgICAgICAgICA9IDE7CiAKICAgICAv
LyBFeHRlbnNpb25zLgotICAgIHJlc291cmNlcy0+T0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzID0g
MDsKLSAgICByZXNvdXJjZXMtPk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgPSAwOworICAgIHJlc291
cmNlcy0+T0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzICAgICAgICA9IDA7CisgICAgcmVzb3VyY2Vz
LT5PRVNfRUdMX2ltYWdlX2V4dGVybmFsICAgICAgICAgID0gMDsKICAgICByZXNvdXJjZXMtPk9F
U19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMgICAgPSAwOwogICAgIHJlc291cmNlcy0+TlZfRUdM
X3N0cmVhbV9jb25zdW1lcl9leHRlcm5hbCA9IDA7Ci0gICAgcmVzb3VyY2VzLT5BUkJfdGV4dHVy
ZV9yZWN0YW5nbGUgPSAwOwotICAgIHJlc291cmNlcy0+RVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQg
ICAgICA9IDA7Ci0gICAgcmVzb3VyY2VzLT5FWFRfZHJhd19idWZmZXJzID0gMDsKLSAgICByZXNv
dXJjZXMtPkVYVF9mcmFnX2RlcHRoID0gMDsKLSAgICByZXNvdXJjZXMtPkVYVF9zaGFkZXJfdGV4
dHVyZV9sb2QgPSAwOwotICAgIHJlc291cmNlcy0+V0VCR0xfZGVidWdfc2hhZGVyX3ByZWNpc2lv
biA9IDA7Ci0gICAgcmVzb3VyY2VzLT5FWFRfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoID0gMDsK
LSAgICByZXNvdXJjZXMtPk5WX3NoYWRlcl9mcmFtZWJ1ZmZlcl9mZXRjaCA9IDA7Ci0gICAgcmVz
b3VyY2VzLT5BUk1fc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoID0gMDsKKyAgICByZXNvdXJjZXMt
PkFSQl90ZXh0dXJlX3JlY3RhbmdsZSAgICAgICAgICAgPSAwOworICAgIHJlc291cmNlcy0+RVhU
X2JsZW5kX2Z1bmNfZXh0ZW5kZWQgICAgICAgICA9IDA7CisgICAgcmVzb3VyY2VzLT5FWFRfZHJh
d19idWZmZXJzICAgICAgICAgICAgICAgID0gMDsKKyAgICByZXNvdXJjZXMtPkVYVF9mcmFnX2Rl
cHRoICAgICAgICAgICAgICAgICAgPSAwOworICAgIHJlc291cmNlcy0+RVhUX3NoYWRlcl90ZXh0
dXJlX2xvZCAgICAgICAgICA9IDA7CisgICAgcmVzb3VyY2VzLT5XRUJHTF9kZWJ1Z19zaGFkZXJf
cHJlY2lzaW9uICAgID0gMDsKKyAgICByZXNvdXJjZXMtPkVYVF9zaGFkZXJfZnJhbWVidWZmZXJf
ZmV0Y2ggICAgPSAwOworICAgIHJlc291cmNlcy0+TlZfc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNo
ICAgICA9IDA7CisgICAgcmVzb3VyY2VzLT5BUk1fc2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoICAg
ID0gMDsKKyAgICByZXNvdXJjZXMtPk9WUl9tdWx0aXZpZXcgICAgICAgICAgICAgICAgICAgPSAw
OworICAgIHJlc291cmNlcy0+RVhUX1lVVl90YXJnZXQgICAgICAgICAgICAgICAgICA9IDA7CiAK
ICAgICByZXNvdXJjZXMtPk5WX2RyYXdfYnVmZmVycyA9IDA7CiAKQEAgLTE2NiwxNCArMTcxLDE2
IEBAIHZvaWQgU2hJbml0QnVpbHRJblJlc291cmNlcyhTaEJ1aWx0SW5SZXNvdXJjZXMqIHJlc291
cmNlcykKICAgICByZXNvdXJjZXMtPkZyYWdtZW50UHJlY2lzaW9uSGlnaCA9IDA7CiAKICAgICAv
LyBHTFNMIEVTIDMuMCBjb25zdGFudHMuCi0gICAgcmVzb3VyY2VzLT5NYXhWZXJ0ZXhPdXRwdXRW
ZWN0b3JzID0gMTY7CisgICAgcmVzb3VyY2VzLT5NYXhWZXJ0ZXhPdXRwdXRWZWN0b3JzICA9IDE2
OwogICAgIHJlc291cmNlcy0+TWF4RnJhZ21lbnRJbnB1dFZlY3RvcnMgPSAxNTsKLSAgICByZXNv
dXJjZXMtPk1pblByb2dyYW1UZXhlbE9mZnNldCA9IC04OwotICAgIHJlc291cmNlcy0+TWF4UHJv
Z3JhbVRleGVsT2Zmc2V0ID0gNzsKKyAgICByZXNvdXJjZXMtPk1pblByb2dyYW1UZXhlbE9mZnNl
dCAgID0gLTg7CisgICAgcmVzb3VyY2VzLT5NYXhQcm9ncmFtVGV4ZWxPZmZzZXQgICA9IDc7CiAK
ICAgICAvLyBFeHRlbnNpb25zIGNvbnN0YW50cy4KICAgICByZXNvdXJjZXMtPk1heER1YWxTb3Vy
Y2VEcmF3QnVmZmVycyA9IDA7CiAKKyAgICByZXNvdXJjZXMtPk1heFZpZXdzT1ZSID0gMjsKKwog
ICAgIC8vIERpc2FibGUgbmFtZSBoYXNoaW5nIGJ5IGRlZmF1bHQuCiAgICAgcmVzb3VyY2VzLT5I
YXNoRnVuY3Rpb24gPSBOVUxMOwogCkBAIC0xOTAsNiArMTk3LDggQEAgdm9pZCBTaEluaXRCdWls
dEluUmVzb3VyY2VzKFNoQnVpbHRJblJlc291cmNlcyogcmVzb3VyY2VzKQogICAgIHJlc291cmNl
cy0+TWF4Q29tcHV0ZUltYWdlVW5pZm9ybXMgID0gNDsKICAgICByZXNvdXJjZXMtPk1heENvbWJp
bmVkSW1hZ2VVbmlmb3JtcyA9IDQ7CiAKKyAgICByZXNvdXJjZXMtPk1heFVuaWZvcm1Mb2NhdGlv
bnMgPSAxMDI0OworCiAgICAgcmVzb3VyY2VzLT5NYXhDb21iaW5lZFNoYWRlck91dHB1dFJlc291
cmNlcyA9IDQ7CiAKICAgICByZXNvdXJjZXMtPk1heENvbXB1dGVXb3JrR3JvdXBDb3VudFswXSA9
IDY1NTM1OwpAQCAtMjE4LDQzICsyMjcsNDUgQEAgdm9pZCBTaEluaXRCdWlsdEluUmVzb3VyY2Vz
KFNoQnVpbHRJblJlc291cmNlcyogcmVzb3VyY2VzKQogLy8KIC8vIERyaXZlciBjYWxscyB0aGVz
ZSB0byBjcmVhdGUgYW5kIGRlc3Ryb3kgY29tcGlsZXIgb2JqZWN0cy4KIC8vCi1TaEhhbmRsZSBT
aENvbnN0cnVjdENvbXBpbGVyKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hCdWlsdEluUmVzb3VyY2VzKiByZXNvdXJj
ZXMpCitTaEhhbmRsZSBDb25zdHJ1Y3RDb21waWxlcihzaDo6R0xlbnVtIHR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBTaFNoYWRlclNwZWMgc3BlYywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAqcmVzb3VyY2VzKQogewotICAgIFRTaEhhbmRs
ZUJhc2UqIGJhc2UgPSBzdGF0aWNfY2FzdDxUU2hIYW5kbGVCYXNlKj4oQ29uc3RydWN0Q29tcGls
ZXIodHlwZSwgc3BlYywgb3V0cHV0KSk7CisgICAgVFNoSGFuZGxlQmFzZSAqYmFzZSA9IHN0YXRp
Y19jYXN0PFRTaEhhbmRsZUJhc2UgKj4oQ29uc3RydWN0Q29tcGlsZXIodHlwZSwgc3BlYywgb3V0
cHV0KSk7CiAgICAgaWYgKGJhc2UgPT0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIAotICAgIFRDb21waWxlciogY29tcGlsZXIgPSBiYXNlLT5nZXRBc0NvbXBpbGVy
KCk7CisgICAgVENvbXBpbGVyICpjb21waWxlciA9IGJhc2UtPmdldEFzQ29tcGlsZXIoKTsKICAg
ICBpZiAoY29tcGlsZXIgPT0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIHJldHVybiAwOwogICAg
IH0KIAogICAgIC8vIEdlbmVyYXRlIGJ1aWx0LWluIHN5bWJvbCB0YWJsZS4KLSAgICBpZiAoIWNv
bXBpbGVyLT5Jbml0KCpyZXNvdXJjZXMpKSB7Ci0gICAgICAgIFNoRGVzdHJ1Y3QoYmFzZSk7Cisg
ICAgaWYgKCFjb21waWxlci0+SW5pdCgqcmVzb3VyY2VzKSkKKyAgICB7CisgICAgICAgIERlc3Ry
dWN0KGJhc2UpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oYmFzZSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCAqPihiYXNlKTsKIH0KIAotdm9pZCBTaERlc3RydWN0KFNoSGFuZGxlIGhhbmRsZSkKK3ZvaWQg
RGVzdHJ1Y3QoU2hIYW5kbGUgaGFuZGxlKQogewogICAgIGlmIChoYW5kbGUgPT0gMCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgVFNoSGFuZGxlQmFzZSogYmFzZSA9IHN0YXRpY19jYXN0PFRTaEhh
bmRsZUJhc2UqPihoYW5kbGUpOworICAgIFRTaEhhbmRsZUJhc2UgKmJhc2UgPSBzdGF0aWNfY2Fz
dDxUU2hIYW5kbGVCYXNlICo+KGhhbmRsZSk7CiAKICAgICBpZiAoYmFzZS0+Z2V0QXNDb21waWxl
cigpKQogICAgICAgICBEZWxldGVDb21waWxlcihiYXNlLT5nZXRBc0NvbXBpbGVyKCkpOwogfQog
Ci1jb25zdCBzdGQ6OnN0cmluZyAmU2hHZXRCdWlsdEluUmVzb3VyY2VzU3RyaW5nKGNvbnN0IFNo
SGFuZGxlIGhhbmRsZSkKK2NvbnN0IHN0ZDo6c3RyaW5nICZHZXRCdWlsdEluUmVzb3VyY2VzU3Ry
aW5nKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSkKIHsKICAgICBUQ29tcGlsZXIgKmNvbXBpbGVyID0g
R2V0Q29tcGlsZXJGcm9tSGFuZGxlKGhhbmRsZSk7CiAgICAgQVNTRVJUKGNvbXBpbGVyKTsKQEAg
LTI2OCwxMCArMjc5LDEwIEBAIGNvbnN0IHN0ZDo6c3RyaW5nICZTaEdldEJ1aWx0SW5SZXNvdXJj
ZXNTdHJpbmcoY29uc3QgU2hIYW5kbGUgaGFuZGxlKQogLy8gUmV0dXJuOiAgVGhlIHJldHVybiB2
YWx1ZSBvZiBTaENvbXBpbGUgaXMgcmVhbGx5IGJvb2xlYW4sIGluZGljYXRpbmcKIC8vIHN1Y2Nl
c3Mgb3IgZmFpbHVyZS4KIC8vCi1ib29sIFNoQ29tcGlsZShjb25zdCBTaEhhbmRsZSBoYW5kbGUs
Ci0gICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb25zdCBzaGFkZXJTdHJpbmdzW10sCi0gICAg
ICAgICAgICAgICBzaXplX3QgbnVtU3RyaW5ncywKLSAgICAgICAgICAgICAgIFNoQ29tcGlsZU9w
dGlvbnMgY29tcGlsZU9wdGlvbnMpCitib29sIENvbXBpbGUoY29uc3QgU2hIYW5kbGUgaGFuZGxl
LAorICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0IHNoYWRlclN0cmluZ3NbXSwKKyAgICAg
ICAgICAgICBzaXplX3QgbnVtU3RyaW5ncywKKyAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25z
IGNvbXBpbGVPcHRpb25zKQogewogICAgIFRDb21waWxlciAqY29tcGlsZXIgPSBHZXRDb21waWxl
ckZyb21IYW5kbGUoaGFuZGxlKTsKICAgICBBU1NFUlQoY29tcGlsZXIpOwpAQCAtMjc5LDIzICsy
OTAsMjMgQEAgYm9vbCBTaENvbXBpbGUoY29uc3QgU2hIYW5kbGUgaGFuZGxlLAogICAgIHJldHVy
biBjb21waWxlci0+Y29tcGlsZShzaGFkZXJTdHJpbmdzLCBudW1TdHJpbmdzLCBjb21waWxlT3B0
aW9ucyk7CiB9CiAKLXZvaWQgU2hDbGVhclJlc3VsdHMoY29uc3QgU2hIYW5kbGUgaGFuZGxlKQor
dm9pZCBDbGVhclJlc3VsdHMoY29uc3QgU2hIYW5kbGUgaGFuZGxlKQogewogICAgIFRDb21waWxl
ciAqY29tcGlsZXIgPSBHZXRDb21waWxlckZyb21IYW5kbGUoaGFuZGxlKTsKICAgICBBU1NFUlQo
Y29tcGlsZXIpOwogICAgIGNvbXBpbGVyLT5jbGVhclJlc3VsdHMoKTsKIH0KIAotaW50IFNoR2V0
U2hhZGVyVmVyc2lvbihjb25zdCBTaEhhbmRsZSBoYW5kbGUpCitpbnQgR2V0U2hhZGVyVmVyc2lv
bihjb25zdCBTaEhhbmRsZSBoYW5kbGUpCiB7Ci0gICAgVENvbXBpbGVyKiBjb21waWxlciA9IEdl
dENvbXBpbGVyRnJvbUhhbmRsZShoYW5kbGUpOworICAgIFRDb21waWxlciAqY29tcGlsZXIgPSBH
ZXRDb21waWxlckZyb21IYW5kbGUoaGFuZGxlKTsKICAgICBBU1NFUlQoY29tcGlsZXIpOwogICAg
IHJldHVybiBjb21waWxlci0+Z2V0U2hhZGVyVmVyc2lvbigpOwogfQogCi1TaFNoYWRlck91dHB1
dCBTaEdldFNoYWRlck91dHB1dFR5cGUoY29uc3QgU2hIYW5kbGUgaGFuZGxlKQorU2hTaGFkZXJP
dXRwdXQgR2V0U2hhZGVyT3V0cHV0VHlwZShjb25zdCBTaEhhbmRsZSBoYW5kbGUpCiB7Ci0gICAg
VENvbXBpbGVyKiBjb21waWxlciA9IEdldENvbXBpbGVyRnJvbUhhbmRsZShoYW5kbGUpOworICAg
IFRDb21waWxlciAqY29tcGlsZXIgPSBHZXRDb21waWxlckZyb21IYW5kbGUoaGFuZGxlKTsKICAg
ICBBU1NFUlQoY29tcGlsZXIpOwogICAgIHJldHVybiBjb21waWxlci0+Z2V0T3V0cHV0VHlwZSgp
OwogfQpAQCAtMzAzLDcgKzMxNCw3IEBAIFNoU2hhZGVyT3V0cHV0IFNoR2V0U2hhZGVyT3V0cHV0
VHlwZShjb25zdCBTaEhhbmRsZSBoYW5kbGUpCiAvLwogLy8gUmV0dXJuIGFueSBjb21waWxlciBs
b2cgb2YgbWVzc2FnZXMgZm9yIHRoZSBhcHBsaWNhdGlvbi4KIC8vCi1jb25zdCBzdGQ6OnN0cmlu
ZyAmU2hHZXRJbmZvTG9nKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSkKK2NvbnN0IHN0ZDo6c3RyaW5n
ICZHZXRJbmZvTG9nKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSkKIHsKICAgICBUQ29tcGlsZXIgKmNv
bXBpbGVyID0gR2V0Q29tcGlsZXJGcm9tSGFuZGxlKGhhbmRsZSk7CiAgICAgQVNTRVJUKGNvbXBp
bGVyKTsKQEAgLTMxNSw3ICszMjYsNyBAQCBjb25zdCBzdGQ6OnN0cmluZyAmU2hHZXRJbmZvTG9n
KGNvbnN0IFNoSGFuZGxlIGhhbmRsZSkKIC8vCiAvLyBSZXR1cm4gYW55IG9iamVjdCBjb2RlLgog
Ly8KLWNvbnN0IHN0ZDo6c3RyaW5nICZTaEdldE9iamVjdENvZGUoY29uc3QgU2hIYW5kbGUgaGFu
ZGxlKQorY29uc3Qgc3RkOjpzdHJpbmcgJkdldE9iamVjdENvZGUoY29uc3QgU2hIYW5kbGUgaGFu
ZGxlKQogewogICAgIFRDb21waWxlciAqY29tcGlsZXIgPSBHZXRDb21waWxlckZyb21IYW5kbGUo
aGFuZGxlKTsKICAgICBBU1NFUlQoY29tcGlsZXIpOwpAQCAtMzI0LDQwICszMzUsMzkgQEAgY29u
c3Qgc3RkOjpzdHJpbmcgJlNoR2V0T2JqZWN0Q29kZShjb25zdCBTaEhhbmRsZSBoYW5kbGUpCiAg
ICAgcmV0dXJuIGluZm9TaW5rLm9iai5zdHIoKTsKIH0KIAotY29uc3Qgc3RkOjptYXA8c3RkOjpz
dHJpbmcsIHN0ZDo6c3RyaW5nPiAqU2hHZXROYW1lSGFzaGluZ01hcCgKLSAgICBjb25zdCBTaEhh
bmRsZSBoYW5kbGUpCitjb25zdCBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+ICpH
ZXROYW1lSGFzaGluZ01hcChjb25zdCBTaEhhbmRsZSBoYW5kbGUpCiB7CiAgICAgVENvbXBpbGVy
ICpjb21waWxlciA9IEdldENvbXBpbGVyRnJvbUhhbmRsZShoYW5kbGUpOwogICAgIEFTU0VSVChj
b21waWxlcik7CiAgICAgcmV0dXJuICYoY29tcGlsZXItPmdldE5hbWVNYXAoKSk7CiB9CiAKLWNv
bnN0IHN0ZDo6dmVjdG9yPHNoOjpVbmlmb3JtPiAqU2hHZXRVbmlmb3Jtcyhjb25zdCBTaEhhbmRs
ZSBoYW5kbGUpCitjb25zdCBzdGQ6OnZlY3RvcjxVbmlmb3JtPiAqR2V0VW5pZm9ybXMoY29uc3Qg
U2hIYW5kbGUgaGFuZGxlKQogewotICAgIHJldHVybiBHZXRTaGFkZXJWYXJpYWJsZXM8c2g6OlVu
aWZvcm0+KGhhbmRsZSk7CisgICAgcmV0dXJuIEdldFNoYWRlclZhcmlhYmxlczxVbmlmb3JtPiho
YW5kbGUpOwogfQogCi1jb25zdCBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gKlNoR2V0VmFyeWlu
Z3MoY29uc3QgU2hIYW5kbGUgaGFuZGxlKQorY29uc3Qgc3RkOjp2ZWN0b3I8VmFyeWluZz4gKkdl
dFZhcnlpbmdzKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSkKIHsKLSAgICByZXR1cm4gR2V0U2hhZGVy
VmFyaWFibGVzPHNoOjpWYXJ5aW5nPihoYW5kbGUpOworICAgIHJldHVybiBHZXRTaGFkZXJWYXJp
YWJsZXM8VmFyeWluZz4oaGFuZGxlKTsKIH0KIAotY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkF0dHJp
YnV0ZT4gKlNoR2V0QXR0cmlidXRlcyhjb25zdCBTaEhhbmRsZSBoYW5kbGUpCitjb25zdCBzdGQ6
OnZlY3RvcjxBdHRyaWJ1dGU+ICpHZXRBdHRyaWJ1dGVzKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSkK
IHsKLSAgICByZXR1cm4gR2V0U2hhZGVyVmFyaWFibGVzPHNoOjpBdHRyaWJ1dGU+KGhhbmRsZSk7
CisgICAgcmV0dXJuIEdldFNoYWRlclZhcmlhYmxlczxBdHRyaWJ1dGU+KGhhbmRsZSk7CiB9CiAK
LWNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpPdXRwdXRWYXJpYWJsZT4gKlNoR2V0T3V0cHV0VmFyaWFi
bGVzKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSkKK2NvbnN0IHN0ZDo6dmVjdG9yPE91dHB1dFZhcmlh
YmxlPiAqR2V0T3V0cHV0VmFyaWFibGVzKGNvbnN0IFNoSGFuZGxlIGhhbmRsZSkKIHsKLSAgICBy
ZXR1cm4gR2V0U2hhZGVyVmFyaWFibGVzPHNoOjpPdXRwdXRWYXJpYWJsZT4oaGFuZGxlKTsKKyAg
ICByZXR1cm4gR2V0U2hhZGVyVmFyaWFibGVzPE91dHB1dFZhcmlhYmxlPihoYW5kbGUpOwogfQog
Ci1jb25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNlQmxvY2s+ICpTaEdldEludGVyZmFjZUJs
b2Nrcyhjb25zdCBTaEhhbmRsZSBoYW5kbGUpCitjb25zdCBzdGQ6OnZlY3RvcjxJbnRlcmZhY2VC
bG9jaz4gKkdldEludGVyZmFjZUJsb2Nrcyhjb25zdCBTaEhhbmRsZSBoYW5kbGUpCiB7Ci0gICAg
cmV0dXJuIEdldFNoYWRlclZhcmlhYmxlczxzaDo6SW50ZXJmYWNlQmxvY2s+KGhhbmRsZSk7Cisg
ICAgcmV0dXJuIEdldFNoYWRlclZhcmlhYmxlczxJbnRlcmZhY2VCbG9jaz4oaGFuZGxlKTsKIH0K
IAotc2g6OldvcmtHcm91cFNpemUgU2hHZXRDb21wdXRlU2hhZGVyTG9jYWxHcm91cFNpemUoY29u
c3QgU2hIYW5kbGUgaGFuZGxlKQorV29ya0dyb3VwU2l6ZSBHZXRDb21wdXRlU2hhZGVyTG9jYWxH
cm91cFNpemUoY29uc3QgU2hIYW5kbGUgaGFuZGxlKQogewogICAgIEFTU0VSVChoYW5kbGUpOwog
CkBAIC0zNjgsMTYgKzM3OCwyNSBAQCBzaDo6V29ya0dyb3VwU2l6ZSBTaEdldENvbXB1dGVTaGFk
ZXJMb2NhbEdyb3VwU2l6ZShjb25zdCBTaEhhbmRsZSBoYW5kbGUpCiAgICAgcmV0dXJuIGNvbXBp
bGVyLT5nZXRDb21wdXRlU2hhZGVyTG9jYWxTaXplKCk7CiB9CiAKLWJvb2wgU2hDaGVja1Zhcmlh
Ymxlc1dpdGhpblBhY2tpbmdMaW1pdHMoaW50IG1heFZlY3RvcnMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJp
YWJsZT4gJnZhcmlhYmxlcykKK2ludCBHZXRWZXJ0ZXhTaGFkZXJOdW1WaWV3cyhjb25zdCBTaEhh
bmRsZSBoYW5kbGUpCit7CisgICAgQVNTRVJUKGhhbmRsZSk7CisgICAgVFNoSGFuZGxlQmFzZSAq
YmFzZSA9IHN0YXRpY19jYXN0PFRTaEhhbmRsZUJhc2UgKj4oaGFuZGxlKTsKKyAgICBUQ29tcGls
ZXIgKmNvbXBpbGVyID0gYmFzZS0+Z2V0QXNDb21waWxlcigpOworICAgIEFTU0VSVChjb21waWxl
cik7CisKKyAgICByZXR1cm4gY29tcGlsZXItPmdldE51bVZpZXdzKCk7Cit9CisKK2Jvb2wgQ2hl
Y2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKGludCBtYXhWZWN0b3JzLCBjb25zdCBzdGQ6
OnZlY3RvcjxTaGFkZXJWYXJpYWJsZT4gJnZhcmlhYmxlcykKIHsKICAgICBWYXJpYWJsZVBhY2tl
ciBwYWNrZXI7CiAgICAgcmV0dXJuIHBhY2tlci5DaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdM
aW1pdHMobWF4VmVjdG9ycywgdmFyaWFibGVzKTsKIH0KIAotYm9vbCBTaEdldEludGVyZmFjZUJs
b2NrUmVnaXN0ZXIoY29uc3QgU2hIYW5kbGUgaGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmludGVyZmFjZUJsb2NrTmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqaW5kZXhPdXQpCitib29s
IEdldEludGVyZmFjZUJsb2NrUmVnaXN0ZXIoY29uc3QgU2hIYW5kbGUgaGFuZGxlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZpbnRlcmZhY2VCbG9j
a05hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICppbmRl
eE91dCkKIHsKICNpZmRlZiBBTkdMRV9FTkFCTEVfSExTTAogICAgIEFTU0VSVChpbmRleE91dCk7
CkBAIC0zOTQsMTAgKzQxMywxMCBAQCBib29sIFNoR2V0SW50ZXJmYWNlQmxvY2tSZWdpc3Rlcihj
b25zdCBTaEhhbmRsZSBoYW5kbGUsCiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIHJldHVy
biBmYWxzZTsKLSNlbmRpZiAvLyBBTkdMRV9FTkFCTEVfSExTTAorI2VuZGlmICAvLyBBTkdMRV9F
TkFCTEVfSExTTAogfQogCi1jb25zdCBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgdW5zaWduZWQgaW50
PiAqU2hHZXRVbmlmb3JtUmVnaXN0ZXJNYXAoY29uc3QgU2hIYW5kbGUgaGFuZGxlKQorY29uc3Qg
c3RkOjptYXA8c3RkOjpzdHJpbmcsIHVuc2lnbmVkIGludD4gKkdldFVuaWZvcm1SZWdpc3Rlck1h
cChjb25zdCBTaEhhbmRsZSBoYW5kbGUpCiB7CiAjaWZkZWYgQU5HTEVfRU5BQkxFX0hMU0wKICAg
ICBUcmFuc2xhdG9ySExTTCAqdHJhbnNsYXRvciA9IEdldFRyYW5zbGF0b3JITFNMRnJvbUhhbmRs
ZShoYW5kbGUpOwpAQCAtNDA4LDMgKzQyNyw1IEBAIGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5n
LCB1bnNpZ25lZCBpbnQ+ICpTaEdldFVuaWZvcm1SZWdpc3Rlck1hcChjb25zdCBTaEhhbmRsCiAg
ICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYgIC8vIEFOR0xFX0VOQUJMRV9ITFNMCiB9CisKK30g
IC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvU2hhZGVyVmFycy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaGFkZXJWYXJzLmNwcAppbmRleCA4ZTIxN2Yx
YzBkYS4uODRhNGUzZDUzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1NoYWRlclZhcnMuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NoYWRlclZhcnMuY3BwCkBAIC0yMSw3
ICsyMSw2IEBAIEludGVycG9sYXRpb25UeXBlIEdldE5vbkF1eGlsaWFyeUludGVycG9sYXRpb25U
eXBlKEludGVycG9sYXRpb25UeXBlIGludGVycG9sYXRpCiB7CiAgICAgcmV0dXJuIChpbnRlcnBv
bGF0aW9uID09IElOVEVSUE9MQVRJT05fQ0VOVFJPSUQgPyBJTlRFUlBPTEFUSU9OX1NNT09USCA6
IGludGVycG9sYXRpb24pOwogfQotCiB9CiAvLyBUaGUgRVMgMy4wIHNwZWMgaXMgbm90IGNsZWFy
IG9uIHRoaXMgcG9pbnQsIGJ1dCB0aGUgRVMgMy4xIHNwZWMsIGFuZCBkaXNjdXNzaW9uCiAvLyBv
biBLaHJvbm9zLm9yZywgY2xhcmlmaWVzIHRoYXQgYSBzbW9vdGgvZmxhdCBtaXNtYXRjaCBwcm9k
dWNlcyBhIGxpbmsgZXJyb3IsCkBAIC0zMSwyMiArMzAsMTggQEAgYm9vbCBJbnRlcnBvbGF0aW9u
VHlwZXNNYXRjaChJbnRlcnBvbGF0aW9uVHlwZSBhLCBJbnRlcnBvbGF0aW9uVHlwZSBiKQogICAg
IHJldHVybiAoR2V0Tm9uQXV4aWxpYXJ5SW50ZXJwb2xhdGlvblR5cGUoYSkgPT0gR2V0Tm9uQXV4
aWxpYXJ5SW50ZXJwb2xhdGlvblR5cGUoYikpOwogfQogCi1TaGFkZXJWYXJpYWJsZTo6U2hhZGVy
VmFyaWFibGUoKQotICAgIDogdHlwZSgwKSwKLSAgICAgIHByZWNpc2lvbigwKSwKLSAgICAgIGFy
cmF5U2l6ZSgwKSwKLSAgICAgIHN0YXRpY1VzZShmYWxzZSkKLXt9CitTaGFkZXJWYXJpYWJsZTo6
U2hhZGVyVmFyaWFibGUoKSA6IHR5cGUoMCksIHByZWNpc2lvbigwKSwgYXJyYXlTaXplKDApLCBz
dGF0aWNVc2UoZmFsc2UpCit7Cit9CiAKIFNoYWRlclZhcmlhYmxlOjpTaGFkZXJWYXJpYWJsZShH
TGVudW0gdHlwZUluLCB1bnNpZ25lZCBpbnQgYXJyYXlTaXplSW4pCi0gICAgOiB0eXBlKHR5cGVJ
biksCi0gICAgICBwcmVjaXNpb24oMCksCi0gICAgICBhcnJheVNpemUoYXJyYXlTaXplSW4pLAot
ICAgICAgc3RhdGljVXNlKGZhbHNlKQote30KKyAgICA6IHR5cGUodHlwZUluKSwgcHJlY2lzaW9u
KDApLCBhcnJheVNpemUoYXJyYXlTaXplSW4pLCBzdGF0aWNVc2UoZmFsc2UpCit7Cit9CiAKIFNo
YWRlclZhcmlhYmxlOjp+U2hhZGVyVmFyaWFibGUoKQote30KK3sKK30KIAogU2hhZGVyVmFyaWFi
bGU6OlNoYWRlclZhcmlhYmxlKGNvbnN0IFNoYWRlclZhcmlhYmxlICZvdGhlcikKICAgICA6IHR5
cGUob3RoZXIudHlwZSksCkBAIC01NywzMCArNTIsMjcgQEAgU2hhZGVyVmFyaWFibGU6OlNoYWRl
clZhcmlhYmxlKGNvbnN0IFNoYWRlclZhcmlhYmxlICZvdGhlcikKICAgICAgIHN0YXRpY1VzZShv
dGhlci5zdGF0aWNVc2UpLAogICAgICAgZmllbGRzKG90aGVyLmZpZWxkcyksCiAgICAgICBzdHJ1
Y3ROYW1lKG90aGVyLnN0cnVjdE5hbWUpCi17fQoreworfQogCiBTaGFkZXJWYXJpYWJsZSAmU2hh
ZGVyVmFyaWFibGU6Om9wZXJhdG9yPShjb25zdCBTaGFkZXJWYXJpYWJsZSAmb3RoZXIpCiB7Ci0g
ICAgdHlwZSA9IG90aGVyLnR5cGU7Ci0gICAgcHJlY2lzaW9uID0gb3RoZXIucHJlY2lzaW9uOwot
ICAgIG5hbWUgPSBvdGhlci5uYW1lOworICAgIHR5cGUgICAgICAgPSBvdGhlci50eXBlOworICAg
IHByZWNpc2lvbiAgPSBvdGhlci5wcmVjaXNpb247CisgICAgbmFtZSAgICAgICA9IG90aGVyLm5h
bWU7CiAgICAgbWFwcGVkTmFtZSA9IG90aGVyLm1hcHBlZE5hbWU7Ci0gICAgYXJyYXlTaXplID0g
b3RoZXIuYXJyYXlTaXplOwotICAgIHN0YXRpY1VzZSA9IG90aGVyLnN0YXRpY1VzZTsKLSAgICBm
aWVsZHMgPSBvdGhlci5maWVsZHM7CisgICAgYXJyYXlTaXplICA9IG90aGVyLmFycmF5U2l6ZTsK
KyAgICBzdGF0aWNVc2UgID0gb3RoZXIuc3RhdGljVXNlOworICAgIGZpZWxkcyAgICAgPSBvdGhl
ci5maWVsZHM7CiAgICAgc3RydWN0TmFtZSA9IG90aGVyLnN0cnVjdE5hbWU7CiAgICAgcmV0dXJu
ICp0aGlzOwogfQogCiBib29sIFNoYWRlclZhcmlhYmxlOjpvcGVyYXRvcj09KGNvbnN0IFNoYWRl
clZhcmlhYmxlICZvdGhlcikgY29uc3QKIHsKLSAgICBpZiAodHlwZSAhPSBvdGhlci50eXBlIHx8
Ci0gICAgICAgIHByZWNpc2lvbiAhPSBvdGhlci5wcmVjaXNpb24gfHwKLSAgICAgICAgbmFtZSAh
PSBvdGhlci5uYW1lIHx8Ci0gICAgICAgIG1hcHBlZE5hbWUgIT0gb3RoZXIubWFwcGVkTmFtZSB8
fAotICAgICAgICBhcnJheVNpemUgIT0gb3RoZXIuYXJyYXlTaXplIHx8Ci0gICAgICAgIHN0YXRp
Y1VzZSAhPSBvdGhlci5zdGF0aWNVc2UgfHwKLSAgICAgICAgZmllbGRzLnNpemUoKSAhPSBvdGhl
ci5maWVsZHMuc2l6ZSgpIHx8CisgICAgaWYgKHR5cGUgIT0gb3RoZXIudHlwZSB8fCBwcmVjaXNp
b24gIT0gb3RoZXIucHJlY2lzaW9uIHx8IG5hbWUgIT0gb3RoZXIubmFtZSB8fAorICAgICAgICBt
YXBwZWROYW1lICE9IG90aGVyLm1hcHBlZE5hbWUgfHwgYXJyYXlTaXplICE9IG90aGVyLmFycmF5
U2l6ZSB8fAorICAgICAgICBzdGF0aWNVc2UgIT0gb3RoZXIuc3RhdGljVXNlIHx8IGZpZWxkcy5z
aXplKCkgIT0gb3RoZXIuZmllbGRzLnNpemUoKSB8fAogICAgICAgICBzdHJ1Y3ROYW1lICE9IG90
aGVyLnN0cnVjdE5hbWUpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05Myw5ICs4
NSw5IEBAIGJvb2wgU2hhZGVyVmFyaWFibGU6Om9wZXJhdG9yPT0oY29uc3QgU2hhZGVyVmFyaWFi
bGUgJm90aGVyKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNoYWRlclZhcmlh
YmxlOjpmaW5kSW5mb0J5TWFwcGVkTmFtZSgKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmbWFwcGVk
RnVsbE5hbWUsCi0gICAgY29uc3QgU2hhZGVyVmFyaWFibGUgKipsZWFmVmFyLCBzdGQ6OnN0cmlu
ZyAqb3JpZ2luYWxGdWxsTmFtZSkgY29uc3QKK2Jvb2wgU2hhZGVyVmFyaWFibGU6OmZpbmRJbmZv
QnlNYXBwZWROYW1lKGNvbnN0IHN0ZDo6c3RyaW5nICZtYXBwZWRGdWxsTmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNoYWRlclZhcmlhYmxlICoq
bGVhZlZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6
c3RyaW5nICpvcmlnaW5hbEZ1bGxOYW1lKSBjb25zdAogewogICAgIEFTU0VSVChsZWFmVmFyICYm
IG9yaWdpbmFsRnVsbE5hbWUpOwogICAgIC8vIFRoZXJlIGFyZSB0aHJlZSBjYXNlczoKQEAgLTEx
MCw3ICsxMDIsNyBAQCBib29sIFNoYWRlclZhcmlhYmxlOjpmaW5kSW5mb0J5TWFwcGVkTmFtZSgK
ICAgICAgICAgaWYgKG1hcHBlZEZ1bGxOYW1lICE9IHRoaXMtPm1hcHBlZE5hbWUpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICpvcmlnaW5hbEZ1bGxOYW1lID0gdGhpcy0+bmFt
ZTsKLSAgICAgICAgKmxlYWZWYXIgPSB0aGlzOworICAgICAgICAqbGVhZlZhciAgICAgICAgICA9
IHRoaXM7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBlbHNlCkBAIC0xMzEsMTMg
KzEyMywxMyBAQCBib29sIFNoYWRlclZhcmlhYmxlOjpmaW5kSW5mb0J5TWFwcGVkTmFtZSgKICAg
ICAgICAgICAgIGlmIChjbG9zZVBvcyArIDEgPT0gbWFwcGVkRnVsbE5hbWUuc2l6ZSgpKQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgICpvcmlnaW5hbEZ1bGxOYW1lID0gb3JpZ2luYWxO
YW1lOwotICAgICAgICAgICAgICAgICpsZWFmVmFyID0gdGhpczsKKyAgICAgICAgICAgICAgICAq
bGVhZlZhciAgICAgICAgICA9IHRoaXM7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgLy8gSW4gdGhlIGZvcm0gb2YgJ2FbMF0uYicsIHNvIGFmdGVyICddJywgJy4nIGlzIGV4
cGVjdGVkLgotICAgICAgICAgICAgICAgIGlmIChtYXBwZWRGdWxsTmFtZVtjbG9zZVBvcyArIDFd
ICAhPSAnLicpCisgICAgICAgICAgICAgICAgaWYgKG1hcHBlZEZ1bGxOYW1lW2Nsb3NlUG9zICsg
MV0gIT0gJy4nKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgcmVtYWluaW5nID0gbWFwcGVkRnVsbE5hbWUuc3Vic3RyKGNsb3NlUG9zICsgMik7ICAv
LyBTa2lwICJdLiIKICAgICAgICAgICAgIH0KQEAgLTE1MSwxMiArMTQzLDExIEBAIGJvb2wgU2hh
ZGVyVmFyaWFibGU6OmZpbmRJbmZvQnlNYXBwZWROYW1lKAogICAgICAgICB7CiAgICAgICAgICAg
ICBjb25zdCBTaGFkZXJWYXJpYWJsZSAqZmllbGRWYXIgPSBOVUxMOwogICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgb3JpZ2luYWxGaWVsZE5hbWU7Ci0gICAgICAgICAgICBib29sIGZvdW5kID0gZmll
bGRzW2lpXS5maW5kSW5mb0J5TWFwcGVkTmFtZSgKLSAgICAgICAgICAgICAgICByZW1haW5pbmcs
ICZmaWVsZFZhciwgJm9yaWdpbmFsRmllbGROYW1lKTsKKyAgICAgICAgICAgIGJvb2wgZm91bmQg
PSBmaWVsZHNbaWldLmZpbmRJbmZvQnlNYXBwZWROYW1lKHJlbWFpbmluZywgJmZpZWxkVmFyLCAm
b3JpZ2luYWxGaWVsZE5hbWUpOwogICAgICAgICAgICAgaWYgKGZvdW5kKQogICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICpvcmlnaW5hbEZ1bGxOYW1lID0gb3JpZ2luYWxOYW1lICsgIi4i
ICsgb3JpZ2luYWxGaWVsZE5hbWU7Ci0gICAgICAgICAgICAgICAgKmxlYWZWYXIgPSBmaWVsZFZh
cjsKKyAgICAgICAgICAgICAgICAqbGVhZlZhciAgICAgICAgICA9IGZpZWxkVmFyOwogICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNjQs
OCArMTU1LDggQEAgYm9vbCBTaGFkZXJWYXJpYWJsZTo6ZmluZEluZm9CeU1hcHBlZE5hbWUoCiAg
ICAgfQogfQogCi1ib29sIFNoYWRlclZhcmlhYmxlOjppc1NhbWVWYXJpYWJsZUF0TGlua1RpbWUo
Ci0gICAgY29uc3QgU2hhZGVyVmFyaWFibGUgJm90aGVyLCBib29sIG1hdGNoUHJlY2lzaW9uKSBj
b25zdAorYm9vbCBTaGFkZXJWYXJpYWJsZTo6aXNTYW1lVmFyaWFibGVBdExpbmtUaW1lKGNvbnN0
IFNoYWRlclZhcmlhYmxlICZvdGhlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIG1hdGNoUHJlY2lzaW9uKSBjb25zdAogewogICAgIGlmICh0eXBl
ICE9IG90aGVyLnR5cGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4MCw4ICsxNzEsNyBA
QCBib29sIFNoYWRlclZhcmlhYmxlOjppc1NhbWVWYXJpYWJsZUF0TGlua1RpbWUoCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgZmllbGRzLnNpemUo
KTsgKytpaSkKICAgICB7Ci0gICAgICAgIGlmICghZmllbGRzW2lpXS5pc1NhbWVWYXJpYWJsZUF0
TGlua1RpbWUob3RoZXIuZmllbGRzW2lpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXRjaFByZWNpc2lvbikpCisgICAgICAgIGlmICghZmllbGRz
W2lpXS5pc1NhbWVWYXJpYWJsZUF0TGlua1RpbWUob3RoZXIuZmllbGRzW2lpXSwgbWF0Y2hQcmVj
aXNpb24pKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
QEAgLTE5MSw1MyArMTgxLDY2IEBAIGJvb2wgU2hhZGVyVmFyaWFibGU6OmlzU2FtZVZhcmlhYmxl
QXRMaW5rVGltZSgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotVW5pZm9ybTo6VW5pZm9ybSgpCi17
fQorVW5pZm9ybTo6VW5pZm9ybSgpIDogYmluZGluZygtMSkKK3sKK30KIAogVW5pZm9ybTo6flVu
aWZvcm0oKQote30KK3sKK30KIAotVW5pZm9ybTo6VW5pZm9ybShjb25zdCBVbmlmb3JtICZvdGhl
cikKLSAgICA6IFNoYWRlclZhcmlhYmxlKG90aGVyKQote30KK1VuaWZvcm06OlVuaWZvcm0oY29u
c3QgVW5pZm9ybSAmb3RoZXIpIDogVmFyaWFibGVXaXRoTG9jYXRpb24ob3RoZXIpLCBiaW5kaW5n
KG90aGVyLmJpbmRpbmcpCit7Cit9CiAKIFVuaWZvcm0gJlVuaWZvcm06Om9wZXJhdG9yPShjb25z
dCBVbmlmb3JtICZvdGhlcikKIHsKLSAgICBTaGFkZXJWYXJpYWJsZTo6b3BlcmF0b3I9KG90aGVy
KTsKKyAgICBWYXJpYWJsZVdpdGhMb2NhdGlvbjo6b3BlcmF0b3I9KG90aGVyKTsKKyAgICBiaW5k
aW5nICAgICAgICAgICAgICAgICA9IG90aGVyLmJpbmRpbmc7CiAgICAgcmV0dXJuICp0aGlzOwog
fQogCiBib29sIFVuaWZvcm06Om9wZXJhdG9yPT0oY29uc3QgVW5pZm9ybSAmb3RoZXIpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFNoYWRlclZhcmlhYmxlOjpvcGVyYXRvcj09KG90aGVyKTsKKyAgICBy
ZXR1cm4gVmFyaWFibGVXaXRoTG9jYXRpb246Om9wZXJhdG9yPT0ob3RoZXIpICYmIGJpbmRpbmcg
PT0gb3RoZXIuYmluZGluZzsKIH0KIAogYm9vbCBVbmlmb3JtOjppc1NhbWVVbmlmb3JtQXRMaW5r
VGltZShjb25zdCBVbmlmb3JtICZvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gU2hhZGVyVmFy
aWFibGU6OmlzU2FtZVZhcmlhYmxlQXRMaW5rVGltZShvdGhlciwgdHJ1ZSk7CisgICAgaWYgKGJp
bmRpbmcgIT0gLTEgJiYgb3RoZXIuYmluZGluZyAhPSAtMSAmJiBiaW5kaW5nICE9IG90aGVyLmJp
bmRpbmcpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlmIChsb2Nh
dGlvbiAhPSAtMSAmJiBvdGhlci5sb2NhdGlvbiAhPSAtMSAmJiBsb2NhdGlvbiAhPSBvdGhlci5s
b2NhdGlvbikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJu
IFZhcmlhYmxlV2l0aExvY2F0aW9uOjppc1NhbWVWYXJpYWJsZUF0TGlua1RpbWUob3RoZXIsIHRy
dWUpOwogfQogCi1JbnRlcmZhY2VWYXJpYWJsZTo6SW50ZXJmYWNlVmFyaWFibGUoKSA6IGxvY2F0
aW9uKC0xKQote30KK1ZhcmlhYmxlV2l0aExvY2F0aW9uOjpWYXJpYWJsZVdpdGhMb2NhdGlvbigp
IDogbG9jYXRpb24oLTEpCit7Cit9CiAKLUludGVyZmFjZVZhcmlhYmxlOjp+SW50ZXJmYWNlVmFy
aWFibGUoKQote30KK1ZhcmlhYmxlV2l0aExvY2F0aW9uOjp+VmFyaWFibGVXaXRoTG9jYXRpb24o
KQoreworfQogCi1JbnRlcmZhY2VWYXJpYWJsZTo6SW50ZXJmYWNlVmFyaWFibGUoY29uc3QgSW50
ZXJmYWNlVmFyaWFibGUgJm90aGVyKQorVmFyaWFibGVXaXRoTG9jYXRpb246OlZhcmlhYmxlV2l0
aExvY2F0aW9uKGNvbnN0IFZhcmlhYmxlV2l0aExvY2F0aW9uICZvdGhlcikKICAgICA6IFNoYWRl
clZhcmlhYmxlKG90aGVyKSwgbG9jYXRpb24ob3RoZXIubG9jYXRpb24pCi17fQoreworfQogCi1J
bnRlcmZhY2VWYXJpYWJsZSAmSW50ZXJmYWNlVmFyaWFibGU6Om9wZXJhdG9yPShjb25zdCBJbnRl
cmZhY2VWYXJpYWJsZSAmb3RoZXIpCitWYXJpYWJsZVdpdGhMb2NhdGlvbiAmVmFyaWFibGVXaXRo
TG9jYXRpb246Om9wZXJhdG9yPShjb25zdCBWYXJpYWJsZVdpdGhMb2NhdGlvbiAmb3RoZXIpCiB7
CiAgICAgU2hhZGVyVmFyaWFibGU6Om9wZXJhdG9yPShvdGhlcik7Ci0gICAgbG9jYXRpb24gPSBv
dGhlci5sb2NhdGlvbjsKKyAgICBsb2NhdGlvbiAgICAgICAgICAgICAgICA9IG90aGVyLmxvY2F0
aW9uOwogICAgIHJldHVybiAqdGhpczsKIH0KIAotYm9vbCBJbnRlcmZhY2VWYXJpYWJsZTo6b3Bl
cmF0b3I9PShjb25zdCBJbnRlcmZhY2VWYXJpYWJsZSAmb3RoZXIpIGNvbnN0Citib29sIFZhcmlh
YmxlV2l0aExvY2F0aW9uOjpvcGVyYXRvcj09KGNvbnN0IFZhcmlhYmxlV2l0aExvY2F0aW9uICZv
dGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gKFNoYWRlclZhcmlhYmxlOjpvcGVyYXRvcj09KG90
aGVyKSAmJgotICAgICAgICAgICAgbG9jYXRpb24gPT0gb3RoZXIubG9jYXRpb24pOworICAgIHJl
dHVybiAoU2hhZGVyVmFyaWFibGU6Om9wZXJhdG9yPT0ob3RoZXIpICYmIGxvY2F0aW9uID09IG90
aGVyLmxvY2F0aW9uKTsKIH0KIAogQXR0cmlidXRlOjpBdHRyaWJ1dGUoKQpAQCAtMjQ4LDE5ICsy
NTEsMTkgQEAgQXR0cmlidXRlOjp+QXR0cmlidXRlKCkKIHsKIH0KIAotQXR0cmlidXRlOjpBdHRy
aWJ1dGUoY29uc3QgQXR0cmlidXRlICZvdGhlcikgOiBJbnRlcmZhY2VWYXJpYWJsZShvdGhlcikK
K0F0dHJpYnV0ZTo6QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSAmb3RoZXIpIDogVmFyaWFibGVX
aXRoTG9jYXRpb24ob3RoZXIpCiB7CiB9CiAKIEF0dHJpYnV0ZSAmQXR0cmlidXRlOjpvcGVyYXRv
cj0oY29uc3QgQXR0cmlidXRlICZvdGhlcikKIHsKLSAgICBJbnRlcmZhY2VWYXJpYWJsZTo6b3Bl
cmF0b3I9KG90aGVyKTsKKyAgICBWYXJpYWJsZVdpdGhMb2NhdGlvbjo6b3BlcmF0b3I9KG90aGVy
KTsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKIGJvb2wgQXR0cmlidXRlOjpvcGVyYXRvcj09KGNv
bnN0IEF0dHJpYnV0ZSAmb3RoZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEludGVyZmFjZVZhcmlh
YmxlOjpvcGVyYXRvcj09KG90aGVyKTsKKyAgICByZXR1cm4gVmFyaWFibGVXaXRoTG9jYXRpb246
Om9wZXJhdG9yPT0ob3RoZXIpOwogfQogCiBPdXRwdXRWYXJpYWJsZTo6T3V0cHV0VmFyaWFibGUo
KQpAQCAtMjcxLDQ0ICsyNzQsNDQgQEAgT3V0cHV0VmFyaWFibGU6On5PdXRwdXRWYXJpYWJsZSgp
CiB7CiB9CiAKLU91dHB1dFZhcmlhYmxlOjpPdXRwdXRWYXJpYWJsZShjb25zdCBPdXRwdXRWYXJp
YWJsZSAmb3RoZXIpIDogSW50ZXJmYWNlVmFyaWFibGUob3RoZXIpCitPdXRwdXRWYXJpYWJsZTo6
T3V0cHV0VmFyaWFibGUoY29uc3QgT3V0cHV0VmFyaWFibGUgJm90aGVyKSA6IFZhcmlhYmxlV2l0
aExvY2F0aW9uKG90aGVyKQogewogfQogCiBPdXRwdXRWYXJpYWJsZSAmT3V0cHV0VmFyaWFibGU6
Om9wZXJhdG9yPShjb25zdCBPdXRwdXRWYXJpYWJsZSAmb3RoZXIpCiB7Ci0gICAgSW50ZXJmYWNl
VmFyaWFibGU6Om9wZXJhdG9yPShvdGhlcik7CisgICAgVmFyaWFibGVXaXRoTG9jYXRpb246Om9w
ZXJhdG9yPShvdGhlcik7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCiBib29sIE91dHB1dFZhcmlh
YmxlOjpvcGVyYXRvcj09KGNvbnN0IE91dHB1dFZhcmlhYmxlICZvdGhlcikgY29uc3QKIHsKLSAg
ICByZXR1cm4gSW50ZXJmYWNlVmFyaWFibGU6Om9wZXJhdG9yPT0ob3RoZXIpOworICAgIHJldHVy
biBWYXJpYWJsZVdpdGhMb2NhdGlvbjo6b3BlcmF0b3I9PShvdGhlcik7CiB9CiAKLUludGVyZmFj
ZUJsb2NrRmllbGQ6OkludGVyZmFjZUJsb2NrRmllbGQoKQotICAgIDogaXNSb3dNYWpvckxheW91
dChmYWxzZSkKLXt9CitJbnRlcmZhY2VCbG9ja0ZpZWxkOjpJbnRlcmZhY2VCbG9ja0ZpZWxkKCkg
OiBpc1Jvd01ham9yTGF5b3V0KGZhbHNlKQoreworfQogCiBJbnRlcmZhY2VCbG9ja0ZpZWxkOjp+
SW50ZXJmYWNlQmxvY2tGaWVsZCgpCi17fQoreworfQogCiBJbnRlcmZhY2VCbG9ja0ZpZWxkOjpJ
bnRlcmZhY2VCbG9ja0ZpZWxkKGNvbnN0IEludGVyZmFjZUJsb2NrRmllbGQgJm90aGVyKQotICAg
IDogU2hhZGVyVmFyaWFibGUob3RoZXIpLAotICAgICAgaXNSb3dNYWpvckxheW91dChvdGhlci5p
c1Jvd01ham9yTGF5b3V0KQote30KKyAgICA6IFNoYWRlclZhcmlhYmxlKG90aGVyKSwgaXNSb3dN
YWpvckxheW91dChvdGhlci5pc1Jvd01ham9yTGF5b3V0KQoreworfQogCiBJbnRlcmZhY2VCbG9j
a0ZpZWxkICZJbnRlcmZhY2VCbG9ja0ZpZWxkOjpvcGVyYXRvcj0oY29uc3QgSW50ZXJmYWNlQmxv
Y2tGaWVsZCAmb3RoZXIpCiB7CiAgICAgU2hhZGVyVmFyaWFibGU6Om9wZXJhdG9yPShvdGhlcik7
Ci0gICAgaXNSb3dNYWpvckxheW91dCA9IG90aGVyLmlzUm93TWFqb3JMYXlvdXQ7CisgICAgaXNS
b3dNYWpvckxheW91dCAgICAgICAgPSBvdGhlci5pc1Jvd01ham9yTGF5b3V0OwogICAgIHJldHVy
biAqdGhpczsKIH0KIAogYm9vbCBJbnRlcmZhY2VCbG9ja0ZpZWxkOjpvcGVyYXRvcj09KGNvbnN0
IEludGVyZmFjZUJsb2NrRmllbGQgJm90aGVyKSBjb25zdAogewotICAgIHJldHVybiAoU2hhZGVy
VmFyaWFibGU6Om9wZXJhdG9yPT0ob3RoZXIpICYmCi0gICAgICAgICAgICBpc1Jvd01ham9yTGF5
b3V0ID09IG90aGVyLmlzUm93TWFqb3JMYXlvdXQpOworICAgIHJldHVybiAoU2hhZGVyVmFyaWFi
bGU6Om9wZXJhdG9yPT0ob3RoZXIpICYmIGlzUm93TWFqb3JMYXlvdXQgPT0gb3RoZXIuaXNSb3dN
YWpvckxheW91dCk7CiB9CiAKIGJvb2wgSW50ZXJmYWNlQmxvY2tGaWVsZDo6aXNTYW1lSW50ZXJm
YWNlQmxvY2tGaWVsZEF0TGlua1RpbWUoCkBAIC0zMTgsMzIgKzMyMSwzMCBAQCBib29sIEludGVy
ZmFjZUJsb2NrRmllbGQ6OmlzU2FtZUludGVyZmFjZUJsb2NrRmllbGRBdExpbmtUaW1lKAogICAg
ICAgICAgICAgaXNSb3dNYWpvckxheW91dCA9PSBvdGhlci5pc1Jvd01ham9yTGF5b3V0KTsKIH0K
IAotVmFyeWluZzo6VmFyeWluZygpCi0gICAgOiBpbnRlcnBvbGF0aW9uKElOVEVSUE9MQVRJT05f
U01PT1RIKSwKLSAgICAgIGlzSW52YXJpYW50KGZhbHNlKQote30KK1Zhcnlpbmc6OlZhcnlpbmco
KSA6IGludGVycG9sYXRpb24oSU5URVJQT0xBVElPTl9TTU9PVEgpLCBpc0ludmFyaWFudChmYWxz
ZSkKK3sKK30KIAogVmFyeWluZzo6flZhcnlpbmcoKQote30KK3sKK30KIAogVmFyeWluZzo6VmFy
eWluZyhjb25zdCBWYXJ5aW5nICZvdGhlcikKLSAgICA6IFNoYWRlclZhcmlhYmxlKG90aGVyKSwK
LSAgICAgIGludGVycG9sYXRpb24ob3RoZXIuaW50ZXJwb2xhdGlvbiksCi0gICAgICBpc0ludmFy
aWFudChvdGhlci5pc0ludmFyaWFudCkKLXt9CisgICAgOiBTaGFkZXJWYXJpYWJsZShvdGhlciks
IGludGVycG9sYXRpb24ob3RoZXIuaW50ZXJwb2xhdGlvbiksIGlzSW52YXJpYW50KG90aGVyLmlz
SW52YXJpYW50KQoreworfQogCiBWYXJ5aW5nICZWYXJ5aW5nOjpvcGVyYXRvcj0oY29uc3QgVmFy
eWluZyAmb3RoZXIpCiB7CiAgICAgU2hhZGVyVmFyaWFibGU6Om9wZXJhdG9yPShvdGhlcik7Ci0g
ICAgaW50ZXJwb2xhdGlvbiA9IG90aGVyLmludGVycG9sYXRpb247Ci0gICAgaXNJbnZhcmlhbnQg
PSBvdGhlci5pc0ludmFyaWFudDsKKyAgICBpbnRlcnBvbGF0aW9uICAgICAgICAgICA9IG90aGVy
LmludGVycG9sYXRpb247CisgICAgaXNJbnZhcmlhbnQgICAgICAgICAgICAgPSBvdGhlci5pc0lu
dmFyaWFudDsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKIGJvb2wgVmFyeWluZzo6b3BlcmF0b3I9
PShjb25zdCBWYXJ5aW5nICZvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gKFNoYWRlclZhcmlh
YmxlOjpvcGVyYXRvcj09KG90aGVyKSAmJgotICAgICAgICAgICAgaW50ZXJwb2xhdGlvbiA9PSBv
dGhlci5pbnRlcnBvbGF0aW9uICYmCisgICAgcmV0dXJuIChTaGFkZXJWYXJpYWJsZTo6b3BlcmF0
b3I9PShvdGhlcikgJiYgaW50ZXJwb2xhdGlvbiA9PSBvdGhlci5pbnRlcnBvbGF0aW9uICYmCiAg
ICAgICAgICAgICBpc0ludmFyaWFudCA9PSBvdGhlci5pc0ludmFyaWFudCk7CiB9CiAKQEAgLTM2
MCwxNCArMzYxLDEzIEBAIGJvb2wgVmFyeWluZzo6aXNTYW1lVmFyeWluZ0F0TGlua1RpbWUoY29u
c3QgVmFyeWluZyAmb3RoZXIsIGludCBzaGFkZXJWZXJzaW9uKSBjCiB9CiAKIEludGVyZmFjZUJs
b2NrOjpJbnRlcmZhY2VCbG9jaygpCi0gICAgOiBhcnJheVNpemUoMCksCi0gICAgICBsYXlvdXQo
QkxPQ0tMQVlPVVRfUEFDS0VEKSwKLSAgICAgIGlzUm93TWFqb3JMYXlvdXQoZmFsc2UpLAotICAg
ICAgc3RhdGljVXNlKGZhbHNlKQote30KKyAgICA6IGFycmF5U2l6ZSgwKSwgbGF5b3V0KEJMT0NL
TEFZT1VUX1BBQ0tFRCksIGlzUm93TWFqb3JMYXlvdXQoZmFsc2UpLCBzdGF0aWNVc2UoZmFsc2Up
Cit7Cit9CiAKIEludGVyZmFjZUJsb2NrOjp+SW50ZXJmYWNlQmxvY2soKQote30KK3sKK30KIAog
SW50ZXJmYWNlQmxvY2s6OkludGVyZmFjZUJsb2NrKGNvbnN0IEludGVyZmFjZUJsb2NrICZvdGhl
cikKICAgICA6IG5hbWUob3RoZXIubmFtZSksCkBAIC0zNzgsMTggKzM3OCwxOSBAQCBJbnRlcmZh
Y2VCbG9jazo6SW50ZXJmYWNlQmxvY2soY29uc3QgSW50ZXJmYWNlQmxvY2sgJm90aGVyKQogICAg
ICAgaXNSb3dNYWpvckxheW91dChvdGhlci5pc1Jvd01ham9yTGF5b3V0KSwKICAgICAgIHN0YXRp
Y1VzZShvdGhlci5zdGF0aWNVc2UpLAogICAgICAgZmllbGRzKG90aGVyLmZpZWxkcykKLXt9Cit7
Cit9CiAKIEludGVyZmFjZUJsb2NrICZJbnRlcmZhY2VCbG9jazo6b3BlcmF0b3I9KGNvbnN0IElu
dGVyZmFjZUJsb2NrICZvdGhlcikKIHsKLSAgICBuYW1lID0gb3RoZXIubmFtZTsKLSAgICBtYXBw
ZWROYW1lID0gb3RoZXIubWFwcGVkTmFtZTsKLSAgICBpbnN0YW5jZU5hbWUgPSBvdGhlci5pbnN0
YW5jZU5hbWU7Ci0gICAgYXJyYXlTaXplID0gb3RoZXIuYXJyYXlTaXplOwotICAgIGxheW91dCA9
IG90aGVyLmxheW91dDsKKyAgICBuYW1lICAgICAgICAgICAgID0gb3RoZXIubmFtZTsKKyAgICBt
YXBwZWROYW1lICAgICAgID0gb3RoZXIubWFwcGVkTmFtZTsKKyAgICBpbnN0YW5jZU5hbWUgICAg
ID0gb3RoZXIuaW5zdGFuY2VOYW1lOworICAgIGFycmF5U2l6ZSAgICAgICAgPSBvdGhlci5hcnJh
eVNpemU7CisgICAgbGF5b3V0ICAgICAgICAgICA9IG90aGVyLmxheW91dDsKICAgICBpc1Jvd01h
am9yTGF5b3V0ID0gb3RoZXIuaXNSb3dNYWpvckxheW91dDsKLSAgICBzdGF0aWNVc2UgPSBvdGhl
ci5zdGF0aWNVc2U7Ci0gICAgZmllbGRzID0gb3RoZXIuZmllbGRzOworICAgIHN0YXRpY1VzZSAg
ICAgICAgPSBvdGhlci5zdGF0aWNVc2U7CisgICAgZmllbGRzICAgICAgICAgICA9IG90aGVyLmZp
ZWxkczsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NpbXBsaWZ5TG9vcENvbmRpdGlvbnMu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2lt
cGxpZnlMb29wQ29uZGl0aW9ucy5jcHAKaW5kZXggYjhjYzk3NmVhODYuLmEyZWQ3ZjM4NDZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9TaW1wbGlmeUxvb3BDb25kaXRpb25zLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TaW1wbGlmeUxvb3BDb25kaXRpb25zLmNwcApAQCAt
MTMsNiArMTMsOSBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5o
IgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVy
LmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBuYW1lc3BhY2UKIHsKIApAQCAtMzcsNiArNDAsNyBA
QCBjbGFzcyBTaW1wbGlmeUxvb3BDb25kaXRpb25zVHJhdmVyc2VyIDogcHVibGljIFRMVmFsdWVU
cmFja2luZ1RyYXZlcnNlcgogICAgIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRl
cm1CaW5hcnkgKm5vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQg
dmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRU
ZXJuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVGVybmFyeSAqbm9kZSkgb3ZlcnJpZGU7CisgICAg
Ym9vbCB2aXNpdERlY2xhcmF0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtRGVjbGFyYXRpb24gKm5v
ZGUpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBuZXh0SXRlcmF0aW9uKCk7CiAgICAgYm9vbCBmb3Vu
ZExvb3BUb0NoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1Gb3VuZExvb3BUb0NoYW5nZTsgfQpAQCAt
NDUsNyArNDksNyBAQCBjbGFzcyBTaW1wbGlmeUxvb3BDb25kaXRpb25zVHJhdmVyc2VyIDogcHVi
bGljIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcgogICAgIC8vIE1hcmtlZCB0byB0cnVlIG9uY2Ug
YW4gb3BlcmF0aW9uIHRoYXQgbmVlZHMgdG8gYmUgaG9pc3RlZCBvdXQgb2YgdGhlIGV4cHJlc3Np
b24gaGFzIGJlZW4KICAgICAvLyBmb3VuZC4gQWZ0ZXIgdGhhdCwgbm8gbW9yZSBBU1QgdXBkYXRl
cyBhcmUgcGVyZm9ybWVkIG9uIHRoYXQgdHJhdmVyc2FsLgogICAgIGJvb2wgbUZvdW5kTG9vcFRv
Q2hhbmdlOwotICAgIGJvb2wgbUluc2lkZUxvb3BDb25kaXRpb25PckV4cHJlc3Npb247CisgICAg
Ym9vbCBtSW5zaWRlTG9vcEluaXRDb25kaXRpb25PckV4cHJlc3Npb247CiAgICAgSW50ZXJtTm9k
ZVBhdHRlcm5NYXRjaGVyIG1Db25kaXRpb25zVG9TaW1wbGlmeTsKIH07CiAKQEAgLTU1LDMyICs1
OSwzMyBAQCBTaW1wbGlmeUxvb3BDb25kaXRpb25zVHJhdmVyc2VyOjpTaW1wbGlmeUxvb3BDb25k
aXRpb25zVHJhdmVyc2VyKAogICAgIGludCBzaGFkZXJWZXJzaW9uKQogICAgIDogVExWYWx1ZVRy
YWNraW5nVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSwgc3ltYm9sVGFibGUsIHNoYWRlclZl
cnNpb24pLAogICAgICAgbUZvdW5kTG9vcFRvQ2hhbmdlKGZhbHNlKSwKLSAgICAgIG1JbnNpZGVM
b29wQ29uZGl0aW9uT3JFeHByZXNzaW9uKGZhbHNlKSwKKyAgICAgIG1JbnNpZGVMb29wSW5pdENv
bmRpdGlvbk9yRXhwcmVzc2lvbihmYWxzZSksCiAgICAgICBtQ29uZGl0aW9uc1RvU2ltcGxpZnko
Y29uZGl0aW9uc1RvU2ltcGxpZnlNYXNrKQogewogfQogCiB2b2lkIFNpbXBsaWZ5TG9vcENvbmRp
dGlvbnNUcmF2ZXJzZXI6Om5leHRJdGVyYXRpb24oKQogewotICAgIG1Gb3VuZExvb3BUb0NoYW5n
ZSAgICAgICAgICAgICAgID0gZmFsc2U7Ci0gICAgbUluc2lkZUxvb3BDb25kaXRpb25PckV4cHJl
c3Npb24gPSBmYWxzZTsKKyAgICBtRm91bmRMb29wVG9DaGFuZ2UgICAgICAgICAgICAgICAgICAg
PSBmYWxzZTsKKyAgICBtSW5zaWRlTG9vcEluaXRDb25kaXRpb25PckV4cHJlc3Npb24gPSBmYWxz
ZTsKICAgICBuZXh0VGVtcG9yYXJ5SW5kZXgoKTsKIH0KIAorLy8gVGhlIHZpc2l0IGZ1bmN0aW9u
cyBvcGVyYXRlIGluIHRocmVlIG1vZGVzOgorLy8gMS4gSWYgYSBtYXRjaGluZyBleHByZXNzaW9u
IGhhcyBhbHJlYWR5IGJlZW4gZm91bmQsIHdlIHJldHVybiBlYXJseSBzaW5jZSBvbmx5IG9uZSBs
b29wIGNhbgorLy8gICAgYmUgdHJhbnNmb3JtZWQgb24gb25lIHRyYXZlcnNhbC4KKy8vIDIuIFdl
IHRyeSB0byBmaW5kIGxvb3BzLiBJbiBjYXNlIGEgbm9kZSBpcyBub3QgaW5zaWRlIGEgbG9vcCBh
bmQgY2FuIG5vdCBjb250YWluIGxvb3BzLCB3ZQorLy8gICAgc3RvcCB0cmF2ZXJzaW5nIHRoZSBz
dWJ0cmVlLgorLy8gMy4gSWYgd2UncmUgaW5zaWRlIGEgbG9vcCBpbml0aWFsaXphdGlvbiwgY29u
ZGl0aW9uIG9yIGV4cHJlc3Npb24sIHdlIGNoZWNrIGZvciBleHByZXNzaW9ucworLy8gICAgdGhh
dCBzaG91bGQgYmUgbW92ZWQgb3V0IG9mIHRoZSBsb29wIGNvbmRpdGlvbiBvciBleHByZXNzaW9u
LiBJZiBvbmUgaXMgZm91bmQsIHRoZSBsb29wCisvLyAgICBpcyBwcm9jZXNzZWQuCiBib29sIFNp
bXBsaWZ5TG9vcENvbmRpdGlvbnNUcmF2ZXJzZXI6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBU
SW50ZXJtQmluYXJ5ICpub2RlKQogewotICAgIC8vIFRoZSB2aXNpdCBmdW5jdGlvbnMgb3BlcmF0
ZSBpbiB0aHJlZSBtb2RlczoKLSAgICAvLyAxLiBJZiBhIG1hdGNoaW5nIGV4cHJlc3Npb24gaGFz
IGFscmVhZHkgYmVlbiBmb3VuZCwgd2UgcmV0dXJuIGVhcmx5IHNpbmNlIG9ubHkgb25lIGxvb3Ag
Y2FuCi0gICAgLy8gICAgYmUgdHJhbnNmb3JtZWQgb24gb25lIHRyYXZlcnNhbC4KLSAgICAvLyAy
LiBXZSB0cnkgdG8gZmluZCBsb29wcy4gSW4gY2FzZSBhIG5vZGUgaXMgbm90IGluc2lkZSBhIGxv
b3AgYW5kIGNhbiBub3QgY29udGFpbiBsb29wcywgd2UKLSAgICAvLyAgICBzdG9wIHRyYXZlcnNp
bmcgdGhlIHN1YnRyZWUuCi0gICAgLy8gMy4gSWYgd2UncmUgaW5zaWRlIGEgbG9vcCBjb25kaXRp
b24gb3IgZXhwcmVzc2lvbiwgd2UgY2hlY2sgZm9yIGV4cHJlc3Npb25zIHRoYXQgc2hvdWxkIGJl
Ci0gICAgLy8gICAgbW92ZWQgb3V0IG9mIHRoZSBsb29wIGNvbmRpdGlvbiBvciBleHByZXNzaW9u
LiBJZiBvbmUgaXMgZm91bmQsIHRoZSBsb29wIGlzIHByb2Nlc3NlZC4KIAogICAgIGlmIChtRm91
bmRMb29wVG9DaGFuZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghbUluc2lk
ZUxvb3BDb25kaXRpb25PckV4cHJlc3Npb24pCisgICAgaWYgKCFtSW5zaWRlTG9vcEluaXRDb25k
aXRpb25PckV4cHJlc3Npb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1Gb3VuZExv
b3BUb0NoYW5nZSA9IG1Db25kaXRpb25zVG9TaW1wbGlmeS5tYXRjaChub2RlLCBnZXRQYXJlbnRO
b2RlKCksIGlzTFZhbHVlUmVxdWlyZWRIZXJlKCkpOwpAQCAtOTIsOCArOTcsNyBAQCBib29sIFNp
bXBsaWZ5TG9vcENvbmRpdGlvbnNUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0
LCBUSW50ZXJtQWdncmVnYQogICAgIGlmIChtRm91bmRMb29wVG9DaGFuZ2UpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIC8vIElmIHdlJ3JlIG91dHNpZGUgYSBsb29wIGNvbmRpdGlvbiwg
d2Ugb25seSBuZWVkIHRvIHRyYXZlcnNlIG5vZGVzIHRoYXQgbWF5IGNvbnRhaW4gbG9vcHMuCi0g
ICAgaWYgKCFtSW5zaWRlTG9vcENvbmRpdGlvbk9yRXhwcmVzc2lvbikKKyAgICBpZiAoIW1JbnNp
ZGVMb29wSW5pdENvbmRpdGlvbk9yRXhwcmVzc2lvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgbUZvdW5kTG9vcFRvQ2hhbmdlID0gbUNvbmRpdGlvbnNUb1NpbXBsaWZ5Lm1hdGNoKG5v
ZGUsIGdldFBhcmVudE5vZGUoKSk7CkBAIC0xMDUsOCArMTA5LDE5IEBAIGJvb2wgU2ltcGxpZnlM
b29wQ29uZGl0aW9uc1RyYXZlcnNlcjo6dmlzaXRUZXJuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJt
VGVybmFyeSAqCiAgICAgaWYgKG1Gb3VuZExvb3BUb0NoYW5nZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgLy8gRG9uJ3QgdHJhdmVyc2UgdGVybmFyeSBvcGVyYXRvcnMgb3V0c2lkZSBs
b29wIGNvbmRpdGlvbnMuCi0gICAgaWYgKCFtSW5zaWRlTG9vcENvbmRpdGlvbk9yRXhwcmVzc2lv
bikKKyAgICBpZiAoIW1JbnNpZGVMb29wSW5pdENvbmRpdGlvbk9yRXhwcmVzc2lvbikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgbUZvdW5kTG9vcFRvQ2hhbmdlID0gbUNvbmRpdGlvbnNU
b1NpbXBsaWZ5Lm1hdGNoKG5vZGUpOworICAgIHJldHVybiAhbUZvdW5kTG9vcFRvQ2hhbmdlOwor
fQorCitib29sIFNpbXBsaWZ5TG9vcENvbmRpdGlvbnNUcmF2ZXJzZXI6OnZpc2l0RGVjbGFyYXRp
b24oVmlzaXQgdmlzaXQsIFRJbnRlcm1EZWNsYXJhdGlvbiAqbm9kZSkKK3sKKyAgICBpZiAobUZv
dW5kTG9vcFRvQ2hhbmdlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1JbnNp
ZGVMb29wSW5pdENvbmRpdGlvbk9yRXhwcmVzc2lvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgbUZvdW5kTG9vcFRvQ2hhbmdlID0gbUNvbmRpdGlvbnNUb1NpbXBsaWZ5Lm1hdGNoKG5v
ZGUpOwpAQCAtMTIwLDE0MiArMTM1LDE1MSBAQCB2b2lkIFNpbXBsaWZ5TG9vcENvbmRpdGlvbnNU
cmF2ZXJzZXI6OnRyYXZlcnNlTG9vcChUSW50ZXJtTG9vcCAqbm9kZSkKIAogICAgIC8vIE1hcmsg
dGhhdCB3ZSdyZSBpbnNpZGUgYSBsb29wIGNvbmRpdGlvbiBvciBleHByZXNzaW9uLCBhbmQgdHJh
bnNmb3JtIHRoZSBsb29wIGlmIG5lZWRlZC4KIAotICAgIGluY3JlbWVudERlcHRoKG5vZGUpOwor
ICAgIFNjb3BlZE5vZGVJblRyYXZlcnNhbFBhdGggYWRkVG9QYXRoKHRoaXMsIG5vZGUpOwogCi0g
ICAgLy8gTm90ZTogTm8gbmVlZCB0byB0cmF2ZXJzZSB0aGUgbG9vcCBpbml0IG5vZGUuCisgICAg
bUluc2lkZUxvb3BJbml0Q29uZGl0aW9uT3JFeHByZXNzaW9uID0gdHJ1ZTsKKyAgICBUTG9vcFR5
cGUgbG9vcFR5cGUgICAgICAgICAgICAgICAgICAgPSBub2RlLT5nZXRUeXBlKCk7CiAKLSAgICBt
SW5zaWRlTG9vcENvbmRpdGlvbk9yRXhwcmVzc2lvbiA9IHRydWU7Ci0gICAgVExvb3BUeXBlIGxv
b3BUeXBlICAgICAgICAgICAgICAgPSBub2RlLT5nZXRUeXBlKCk7CisgICAgaWYgKCFtRm91bmRM
b29wVG9DaGFuZ2UgJiYgbm9kZS0+Z2V0SW5pdCgpKQorICAgIHsKKyAgICAgICAgbm9kZS0+Z2V0
SW5pdCgpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICB9CiAKLSAgICBpZiAobm9kZS0+Z2V0Q29uZGl0
aW9uKCkpCisgICAgaWYgKCFtRm91bmRMb29wVG9DaGFuZ2UgJiYgbm9kZS0+Z2V0Q29uZGl0aW9u
KCkpCiAgICAgewogICAgICAgICBub2RlLT5nZXRDb25kaXRpb24oKS0+dHJhdmVyc2UodGhpcyk7
CisgICAgfQogCi0gICAgICAgIGlmIChtRm91bmRMb29wVG9DaGFuZ2UpCisgICAgaWYgKCFtRm91
bmRMb29wVG9DaGFuZ2UgJiYgbm9kZS0+Z2V0RXhwcmVzc2lvbigpKQorICAgIHsKKyAgICAgICAg
bm9kZS0+Z2V0RXhwcmVzc2lvbigpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICB9CisKKyAgICBpZiAo
bUZvdW5kTG9vcFRvQ2hhbmdlKQorICAgIHsKKyAgICAgICAgLy8gUmVwbGFjZSB0aGUgbG9vcCBj
b25kaXRpb24gd2l0aCBhIGJvb2xlYW4gdmFyaWFibGUgdGhhdCdzIHVwZGF0ZWQgb24gZWFjaCBp
dGVyYXRpb24uCisgICAgICAgIGlmIChsb29wVHlwZSA9PSBFTG9vcFdoaWxlKQogICAgICAgICB7
Ci0gICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSBsb29wIGNvbmRpdGlvbiB3aXRoIGEgYm9vbGVh
biB2YXJpYWJsZSB0aGF0J3MgdXBkYXRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4KLSAgICAgICAgICAg
IGlmIChsb29wVHlwZSA9PSBFTG9vcFdoaWxlKQorICAgICAgICAgICAgLy8gVHJhbnNmb3JtOgor
ICAgICAgICAgICAgLy8gICB3aGlsZSAoZXhwcikgeyBib2R5OyB9CisgICAgICAgICAgICAvLyBp
bnRvCisgICAgICAgICAgICAvLyAgIGJvb2wgczAgPSBleHByOworICAgICAgICAgICAgLy8gICB3
aGlsZSAoczApIHsgeyBib2R5OyB9IHMwID0gZXhwcjsgfQorICAgICAgICAgICAgVEludGVybVNl
cXVlbmNlIHRlbXBJbml0U2VxOworICAgICAgICAgICAgdGVtcEluaXRTZXEucHVzaF9iYWNrKGNy
ZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24obm9kZS0+Z2V0Q29uZGl0aW9uKCktPmRlZXBDb3B5KCkp
KTsKKyAgICAgICAgICAgIGluc2VydFN0YXRlbWVudHNJblBhcmVudEJsb2NrKHRlbXBJbml0U2Vx
KTsKKworICAgICAgICAgICAgVEludGVybUJsb2NrICpuZXdCb2R5ID0gbmV3IFRJbnRlcm1CbG9j
aygpOworICAgICAgICAgICAgaWYgKG5vZGUtPmdldEJvZHkoKSkKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAvLyBUcmFuc2Zvcm06Ci0gICAgICAgICAgICAgICAgLy8gICB3aGlsZSAo
ZXhwcikgeyBib2R5OyB9Ci0gICAgICAgICAgICAgICAgLy8gaW50bwotICAgICAgICAgICAgICAg
IC8vICAgYm9vbCBzMCA9IGV4cHI7Ci0gICAgICAgICAgICAgICAgLy8gICB3aGlsZSAoczApIHsg
eyBib2R5OyB9IHMwID0gZXhwcjsgfQotICAgICAgICAgICAgICAgIFRJbnRlcm1TZXF1ZW5jZSB0
ZW1wSW5pdFNlcTsKLSAgICAgICAgICAgICAgICB0ZW1wSW5pdFNlcS5wdXNoX2JhY2soY3JlYXRl
VGVtcEluaXREZWNsYXJhdGlvbihub2RlLT5nZXRDb25kaXRpb24oKS0+ZGVlcENvcHkoKSkpOwot
ICAgICAgICAgICAgICAgIGluc2VydFN0YXRlbWVudHNJblBhcmVudEJsb2NrKHRlbXBJbml0U2Vx
KTsKLQotICAgICAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqbmV3Qm9keSA9IG5ldyBUSW50ZXJt
QmxvY2soKTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+Z2V0Qm9keSgpKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbmV3Qm9keS0+Z2V0U2VxdWVuY2UoKS0+cHVz
aF9iYWNrKG5vZGUtPmdldEJvZHkoKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIG5ld0JvZHktPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjaygKLSAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlVGVtcEFzc2lnbm1lbnQobm9kZS0+Z2V0Q29uZGl0aW9uKCktPmRlZXBDb3B5KCkp
KTsKKyAgICAgICAgICAgICAgICBuZXdCb2R5LT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sobm9k
ZS0+Z2V0Qm9keSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5ld0JvZHktPmdldFNl
cXVlbmNlKCktPnB1c2hfYmFjaygKKyAgICAgICAgICAgICAgICBjcmVhdGVUZW1wQXNzaWdubWVu
dChub2RlLT5nZXRDb25kaXRpb24oKS0+ZGVlcENvcHkoKSkpOworCisgICAgICAgICAgICAvLyBD
YW4ndCB1c2UgcXVldWVSZXBsYWNlbWVudCB0byByZXBsYWNlIG9sZCBib2R5LCBzaW5jZSBpdCBt
YXkgaGF2ZSBiZWVuIG51bGxwdHIuCisgICAgICAgICAgICAvLyBJdCdzIHNhZmUgdG8gZG8gdGhl
IHJlcGxhY2VtZW50cyBpbiBwbGFjZSBoZXJlIC0gdGhpcyBub2RlIHdvbid0IGJlIHRyYXZlcnNl
ZAorICAgICAgICAgICAgLy8gZnVydGhlci4KKyAgICAgICAgICAgIG5vZGUtPnNldEJvZHkobmV3
Qm9keSk7CisgICAgICAgICAgICBub2RlLT5zZXRDb25kaXRpb24oY3JlYXRlVGVtcFN5bWJvbChu
b2RlLT5nZXRDb25kaXRpb24oKS0+Z2V0VHlwZSgpKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSBpZiAobG9vcFR5cGUgPT0gRUxvb3BEb1doaWxlKQorICAgICAgICB7CisgICAgICAgICAgICAv
LyBUcmFuc2Zvcm06CisgICAgICAgICAgICAvLyAgIGRvIHsKKyAgICAgICAgICAgIC8vICAgICBi
b2R5OworICAgICAgICAgICAgLy8gICB9IHdoaWxlIChleHByKTsKKyAgICAgICAgICAgIC8vIGlu
dG8KKyAgICAgICAgICAgIC8vICAgYm9vbCBzMCA9IHRydWU7CisgICAgICAgICAgICAvLyAgIGRv
IHsKKyAgICAgICAgICAgIC8vICAgICB7IGJvZHk7IH0KKyAgICAgICAgICAgIC8vICAgICBzMCA9
IGV4cHI7CisgICAgICAgICAgICAvLyAgIH0gd2hpbGUgKHMwKTsKKyAgICAgICAgICAgIFRJbnRl
cm1TZXF1ZW5jZSB0ZW1wSW5pdFNlcTsKKyAgICAgICAgICAgIHRlbXBJbml0U2VxLnB1c2hfYmFj
ayhjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKENyZWF0ZUJvb2xDb25zdGFudE5vZGUodHJ1ZSkp
KTsKKyAgICAgICAgICAgIGluc2VydFN0YXRlbWVudHNJblBhcmVudEJsb2NrKHRlbXBJbml0U2Vx
KTsKKworICAgICAgICAgICAgVEludGVybUJsb2NrICpuZXdCb2R5ID0gbmV3IFRJbnRlcm1CbG9j
aygpOworICAgICAgICAgICAgaWYgKG5vZGUtPmdldEJvZHkoKSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBuZXdCb2R5LT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sobm9kZS0+Z2V0
Qm9keSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5ld0JvZHktPmdldFNlcXVlbmNl
KCktPnB1c2hfYmFjaygKKyAgICAgICAgICAgICAgICBjcmVhdGVUZW1wQXNzaWdubWVudChub2Rl
LT5nZXRDb25kaXRpb24oKS0+ZGVlcENvcHkoKSkpOworCisgICAgICAgICAgICAvLyBDYW4ndCB1
c2UgcXVldWVSZXBsYWNlbWVudCB0byByZXBsYWNlIG9sZCBib2R5LCBzaW5jZSBpdCBtYXkgaGF2
ZSBiZWVuIG51bGxwdHIuCisgICAgICAgICAgICAvLyBJdCdzIHNhZmUgdG8gZG8gdGhlIHJlcGxh
Y2VtZW50cyBpbiBwbGFjZSBoZXJlIC0gdGhpcyBub2RlIHdvbid0IGJlIHRyYXZlcnNlZAorICAg
ICAgICAgICAgLy8gZnVydGhlci4KKyAgICAgICAgICAgIG5vZGUtPnNldEJvZHkobmV3Qm9keSk7
CisgICAgICAgICAgICBub2RlLT5zZXRDb25kaXRpb24oY3JlYXRlVGVtcFN5bWJvbChub2RlLT5n
ZXRDb25kaXRpb24oKS0+Z2V0VHlwZSgpKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAo
bG9vcFR5cGUgPT0gRUxvb3BGb3IpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIE1vdmUgdGhl
IGxvb3AgY29uZGl0aW9uIGluc2lkZSB0aGUgbG9vcC4KKyAgICAgICAgICAgIC8vIFRyYW5zZm9y
bToKKyAgICAgICAgICAgIC8vICAgZm9yIChpbml0OyBleHByOyBleHByQikgeyBib2R5OyB9Cisg
ICAgICAgICAgICAvLyBpbnRvCisgICAgICAgICAgICAvLyAgIHsKKyAgICAgICAgICAgIC8vICAg
ICBpbml0OworICAgICAgICAgICAgLy8gICAgIGJvb2wgczAgPSBleHByOworICAgICAgICAgICAg
Ly8gICAgIHdoaWxlIChzMCkgeworICAgICAgICAgICAgLy8gICAgICAgeyBib2R5OyB9CisgICAg
ICAgICAgICAvLyAgICAgICBleHByQjsKKyAgICAgICAgICAgIC8vICAgICAgIHMwID0gZXhwcjsK
KyAgICAgICAgICAgIC8vICAgICB9CisgICAgICAgICAgICAvLyAgIH0KKyAgICAgICAgICAgIFRJ
bnRlcm1CbG9jayAqbG9vcFNjb3BlICAgICAgICAgICAgPSBuZXcgVEludGVybUJsb2NrKCk7Cisg
ICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKmxvb3BTY29wZVNlcXVlbmNlID0gbG9vcFNjb3Bl
LT5nZXRTZXF1ZW5jZSgpOworCisgICAgICAgICAgICAvLyBJbnNlcnQgImluaXQ7IgorICAgICAg
ICAgICAgaWYgKG5vZGUtPmdldEluaXQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBsb29wU2NvcGVTZXF1ZW5jZS0+cHVzaF9iYWNrKG5vZGUtPmdldEluaXQoKSk7CisgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICAvLyBDYW4ndCB1c2UgcXVldWVSZXBsYWNlbWVudCB0
byByZXBsYWNlIG9sZCBib2R5LCBzaW5jZSBpdCBtYXkgaGF2ZSBiZWVuIG51bGxwdHIuCi0gICAg
ICAgICAgICAgICAgLy8gSXQncyBzYWZlIHRvIGRvIHRoZSByZXBsYWNlbWVudHMgaW4gcGxhY2Ug
aGVyZSAtIHRoaXMgbm9kZSB3b24ndCBiZSB0cmF2ZXJzZWQKLSAgICAgICAgICAgICAgICAvLyBm
dXJ0aGVyLgotICAgICAgICAgICAgICAgIG5vZGUtPnNldEJvZHkobmV3Qm9keSk7Ci0gICAgICAg
ICAgICAgICAgbm9kZS0+c2V0Q29uZGl0aW9uKGNyZWF0ZVRlbXBTeW1ib2wobm9kZS0+Z2V0Q29u
ZGl0aW9uKCktPmdldFR5cGUoKSkpOworICAgICAgICAgICAgLy8gSW5zZXJ0ICJib29sIHMwID0g
ZXhwcjsiIGlmIGFwcGxpY2FibGUsICJib29sIHMwID0gdHJ1ZTsiIG90aGVyd2lzZQorICAgICAg
ICAgICAgVEludGVybVR5cGVkICpjb25kaXRpb25Jbml0aWFsaXplciA9IG51bGxwdHI7CisgICAg
ICAgICAgICBpZiAobm9kZS0+Z2V0Q29uZGl0aW9uKCkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY29uZGl0aW9uSW5pdGlhbGl6ZXIgPSBub2RlLT5nZXRDb25kaXRpb24oKS0+ZGVl
cENvcHkoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGxvb3BUeXBlID09
IEVMb29wRG9XaGlsZSkKKyAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAvLyBUcmFuc2Zvcm06Ci0gICAgICAgICAgICAgICAgLy8gICBkbyB7Ci0gICAgICAg
ICAgICAgICAgLy8gICAgIGJvZHk7Ci0gICAgICAgICAgICAgICAgLy8gICB9IHdoaWxlIChleHBy
KTsKLSAgICAgICAgICAgICAgICAvLyBpbnRvCi0gICAgICAgICAgICAgICAgLy8gICBib29sIHMw
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAvLyAgIGRvIHsKLSAgICAgICAgICAgICAgICAvLyAg
ICAgeyBib2R5OyB9Ci0gICAgICAgICAgICAgICAgLy8gICAgIHMwID0gZXhwcjsKLSAgICAgICAg
ICAgICAgICAvLyAgIHdoaWxlIChzMCk7Ci0gICAgICAgICAgICAgICAgVEludGVybVNlcXVlbmNl
IHRlbXBJbml0U2VxOwotICAgICAgICAgICAgICAgIHRlbXBJbml0U2VxLnB1c2hfYmFjayhjcmVh
dGVUZW1wSW5pdERlY2xhcmF0aW9uKENyZWF0ZUJvb2xDb25zdGFudE5vZGUodHJ1ZSkpKTsKLSAg
ICAgICAgICAgICAgICBpbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRCbG9jayh0ZW1wSW5pdFNlcSk7
Ci0KLSAgICAgICAgICAgICAgICBUSW50ZXJtQmxvY2sgKm5ld0JvZHkgPSBuZXcgVEludGVybUJs
b2NrKCk7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldEJvZHkoKSkKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG5ld0JvZHktPmdldFNlcXVlbmNlKCktPnB1c2hf
YmFjayhub2RlLT5nZXRCb2R5KCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBuZXdCb2R5LT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soCi0gICAgICAgICAgICAgICAgICAg
IGNyZWF0ZVRlbXBBc3NpZ25tZW50KG5vZGUtPmdldENvbmRpdGlvbigpLT5kZWVwQ29weSgpKSk7
CisgICAgICAgICAgICAgICAgY29uZGl0aW9uSW5pdGlhbGl6ZXIgPSBUSW50ZXJtVHlwZWQ6OkNy
ZWF0ZUJvb2wodHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsb29wU2NvcGVTZXF1
ZW5jZS0+cHVzaF9iYWNrKGNyZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24oY29uZGl0aW9uSW5pdGlh
bGl6ZXIpKTsKIAotICAgICAgICAgICAgICAgIC8vIENhbid0IHVzZSBxdWV1ZVJlcGxhY2VtZW50
IHRvIHJlcGxhY2Ugb2xkIGJvZHksIHNpbmNlIGl0IG1heSBoYXZlIGJlZW4gbnVsbHB0ci4KLSAg
ICAgICAgICAgICAgICAvLyBJdCdzIHNhZmUgdG8gZG8gdGhlIHJlcGxhY2VtZW50cyBpbiBwbGFj
ZSBoZXJlIC0gdGhpcyBub2RlIHdvbid0IGJlIHRyYXZlcnNlZAotICAgICAgICAgICAgICAgIC8v
IGZ1cnRoZXIuCi0gICAgICAgICAgICAgICAgbm9kZS0+c2V0Qm9keShuZXdCb2R5KTsKLSAgICAg
ICAgICAgICAgICBub2RlLT5zZXRDb25kaXRpb24oY3JlYXRlVGVtcFN5bWJvbChub2RlLT5nZXRD
b25kaXRpb24oKS0+Z2V0VHlwZSgpKSk7CisgICAgICAgICAgICAvLyBJbnNlcnQgInsgYm9keTsg
fSIgaW4gdGhlIHdoaWxlIGxvb3AKKyAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqd2hpbGVMb29w
Qm9keSA9IG5ldyBUSW50ZXJtQmxvY2soKTsKKyAgICAgICAgICAgIGlmIChub2RlLT5nZXRCb2R5
KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgd2hpbGVMb29wQm9keS0+Z2V0U2Vx
dWVuY2UoKS0+cHVzaF9iYWNrKG5vZGUtPmdldEJvZHkoKSk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBlbHNlIGlmIChsb29wVHlwZSA9PSBFTG9vcEZvcikKKyAgICAgICAgICAgIC8vIElu
c2VydCAiZXhwckI7IiBpbiB0aGUgd2hpbGUgbG9vcAorICAgICAgICAgICAgaWYgKG5vZGUtPmdl
dEV4cHJlc3Npb24oKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBNb3ZlIHRo
ZSBsb29wIGNvbmRpdGlvbiBpbnNpZGUgdGhlIGxvb3AuCi0gICAgICAgICAgICAgICAgLy8gVHJh
bnNmb3JtOgotICAgICAgICAgICAgICAgIC8vICAgZm9yIChpbml0OyBleHByOyBleHByQikgeyBi
b2R5OyB9Ci0gICAgICAgICAgICAgICAgLy8gaW50bwotICAgICAgICAgICAgICAgIC8vICAgewot
ICAgICAgICAgICAgICAgIC8vICAgICBpbml0OwotICAgICAgICAgICAgICAgIC8vICAgICBib29s
IHMwID0gZXhwcjsKLSAgICAgICAgICAgICAgICAvLyAgICAgd2hpbGUgKHMwKSB7IHsgYm9keTsg
fSBleHByQjsgczAgPSBleHByOyB9Ci0gICAgICAgICAgICAgICAgLy8gICB9Ci0gICAgICAgICAg
ICAgICAgVEludGVybUJsb2NrICpsb29wU2NvcGUgPSBuZXcgVEludGVybUJsb2NrKCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmdldEluaXQoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgIGxvb3BTY29wZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKG5vZGUt
PmdldEluaXQoKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGxvb3BTY29w
ZS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKAotICAgICAgICAgICAgICAgICAgICBjcmVhdGVU
ZW1wSW5pdERlY2xhcmF0aW9uKG5vZGUtPmdldENvbmRpdGlvbigpLT5kZWVwQ29weSgpKSk7Ci0K
LSAgICAgICAgICAgICAgICBUSW50ZXJtQmxvY2sgKndoaWxlTG9vcEJvZHkgPSBuZXcgVEludGVy
bUJsb2NrKCk7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGUtPmdldEJvZHkoKSkKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlTG9vcEJvZHktPmdldFNlcXVlbmNl
KCktPnB1c2hfYmFjayhub2RlLT5nZXRCb2R5KCkpOwotICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB3aGlsZUxvb3BCb2R5LT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2sobm9kZS0+
Z2V0RXhwcmVzc2lvbigpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEluc2VydCAi
czAgPSBleHByOyIgaW4gdGhlIHdoaWxlIGxvb3AKKyAgICAgICAgICAgIGlmIChub2RlLT5nZXRD
b25kaXRpb24oKSkKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICB3aGlsZUxvb3BCb2R5
LT5nZXRTZXF1ZW5jZSgpLT5wdXNoX2JhY2soCiAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVRl
bXBBc3NpZ25tZW50KG5vZGUtPmdldENvbmRpdGlvbigpLT5kZWVwQ29weSgpKSk7Ci0gICAgICAg
ICAgICAgICAgVEludGVybUxvb3AgKndoaWxlTG9vcCA9IG5ldyBUSW50ZXJtTG9vcCgKLSAgICAg
ICAgICAgICAgICAgICAgRUxvb3BXaGlsZSwgbnVsbHB0ciwgY3JlYXRlVGVtcFN5bWJvbChub2Rl
LT5nZXRDb25kaXRpb24oKS0+Z2V0VHlwZSgpKSwgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgd2hpbGVMb29wQm9keSk7Ci0gICAgICAgICAgICAgICAgbG9vcFNjb3BlLT5nZXRTZXF1ZW5j
ZSgpLT5wdXNoX2JhY2sod2hpbGVMb29wKTsKLSAgICAgICAgICAgICAgICBxdWV1ZVJlcGxhY2Vt
ZW50V2l0aFBhcmVudChnZXRBbmNlc3Rvck5vZGUoMSksIG5vZGUsIGxvb3BTY29wZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmlnaW5hbE5vZGU6OklTX0RS
T1BQRUQpOwogICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQogCi0gICAgaWYgKCFtRm91
bmRMb29wVG9DaGFuZ2UgJiYgbm9kZS0+Z2V0RXhwcmVzc2lvbigpKQotICAgIHsKLSAgICAgICAg
bm9kZS0+Z2V0RXhwcmVzc2lvbigpLT50cmF2ZXJzZSh0aGlzKTsKLQotICAgICAgICBpZiAobUZv
dW5kTG9vcFRvQ2hhbmdlKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQobG9vcFR5cGUg
PT0gRUxvb3BGb3IpOwotICAgICAgICAgICAgLy8gTW92ZSB0aGUgbG9vcCBleHByZXNzaW9uIHRv
IGluc2lkZSB0aGUgbG9vcC4KLSAgICAgICAgICAgIC8vIFRyYW5zZm9ybToKLSAgICAgICAgICAg
IC8vICAgZm9yIChpbml0OyBleHByOyBleHByQikgeyBib2R5OyB9Ci0gICAgICAgICAgICAvLyBp
bnRvCi0gICAgICAgICAgICAvLyAgIGZvciAoaW5pdDsgZXhwcjsgKSB7IHsgYm9keTsgfSBleHBy
QjsgfQotICAgICAgICAgICAgVEludGVybVR5cGVkICpsb29wRXhwcmVzc2lvbiA9IG5vZGUtPmdl
dEV4cHJlc3Npb24oKTsKLSAgICAgICAgICAgIG5vZGUtPnNldEV4cHJlc3Npb24obnVsbHB0cik7
Ci0gICAgICAgICAgICBUSW50ZXJtQmxvY2sgKm9sZEJvZHkgPSBub2RlLT5nZXRCb2R5KCk7Ci0g
ICAgICAgICAgICBub2RlLT5zZXRCb2R5KG5ldyBUSW50ZXJtQmxvY2soKSk7Ci0gICAgICAgICAg
ICBpZiAob2xkQm9keSAhPSBudWxscHRyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IG5vZGUtPmdldEJvZHkoKS0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNrKG9sZEJvZHkpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgbm9kZS0+Z2V0Qm9keSgpLT5nZXRTZXF1ZW5jZSgpLT5w
dXNoX2JhY2sobG9vcEV4cHJlc3Npb24pOworICAgICAgICAgICAgLy8gQ3JlYXRlICJ3aGlsZShz
MCkgeyB3aGlsZUxvb3BCb2R5IH0iCisgICAgICAgICAgICBUSW50ZXJtTG9vcCAqd2hpbGVMb29w
ID0gbmV3IFRJbnRlcm1Mb29wKAorICAgICAgICAgICAgICAgIEVMb29wV2hpbGUsIG51bGxwdHIs
IGNyZWF0ZVRlbXBTeW1ib2woY29uZGl0aW9uSW5pdGlhbGl6ZXItPmdldFR5cGUoKSksIG51bGxw
dHIsCisgICAgICAgICAgICAgICAgd2hpbGVMb29wQm9keSk7CisgICAgICAgICAgICBsb29wU2Nv
cGUtPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayh3aGlsZUxvb3ApOworICAgICAgICAgICAgcXVl
dWVSZXBsYWNlbWVudChub2RlLCBsb29wU2NvcGUsIE9yaWdpbmFsTm9kZTo6SVNfRFJPUFBFRCk7
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtSW5zaWRlTG9vcENvbmRpdGlvbk9yRXhwcmVzc2lv
biA9IGZhbHNlOworICAgIG1JbnNpZGVMb29wSW5pdENvbmRpdGlvbk9yRXhwcmVzc2lvbiA9IGZh
bHNlOwogCiAgICAgaWYgKCFtRm91bmRMb29wVG9DaGFuZ2UgJiYgbm9kZS0+Z2V0Qm9keSgpKQog
ICAgICAgICBub2RlLT5nZXRCb2R5KCktPnRyYXZlcnNlKHRoaXMpOwotCi0gICAgZGVjcmVtZW50
RGVwdGgoKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlCkBAIC0yNzgsMyArMzAyLDUgQEAgdm9pZCBT
aW1wbGlmeUxvb3BDb25kaXRpb25zKFRJbnRlcm1Ob2RlICpyb290LAogICAgICAgICAgICAgdHJh
dmVyc2VyLnVwZGF0ZVRyZWUoKTsKICAgICB9IHdoaWxlICh0cmF2ZXJzZXIuZm91bmRMb29wVG9D
aGFuZ2UoKSk7CiB9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU2ltcGxpZnlMb29wQ29uZGl0
aW9ucy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
U2ltcGxpZnlMb29wQ29uZGl0aW9ucy5oCmluZGV4IGI4ODAyYWExMWFmLi45NjgwODlkNTQxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvU2ltcGxpZnlMb29wQ29uZGl0aW9ucy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NpbXBsaWZ5TG9vcENvbmRpdGlvbnMuaApAQCAtMTEs
NiArMTEsOCBAQAogI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX1NJTVBMSUZZTE9PUENPTkRJ
VElPTlNfSF8KICNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRPUl9TSU1QTElGWUxPT1BDT05ESVRJ
T05TX0hfCiAKK25hbWVzcGFjZSBzaAorewogY2xhc3MgVEludGVybU5vZGU7CiBjbGFzcyBUU3lt
Ym9sVGFibGU7CiAKQEAgLTE5LDUgKzIxLDYgQEAgdm9pZCBTaW1wbGlmeUxvb3BDb25kaXRpb25z
KFRJbnRlcm1Ob2RlICpyb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGludCAqdGVtcG9yYXJ5SW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgc2hhZGVyVmVyc2lvbik7Cit9ICAvLyBuYW1lc3BhY2Ugc2gKIAogI2VuZGlmICAvLyBDT01Q
SUxFUl9UUkFOU0xBVE9SX1NJTVBMSUZZTE9PUENPTkRJVElPTlNfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1NwbGl0U2VxdWVu
Y2VPcGVyYXRvci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9TcGxpdFNlcXVlbmNlT3BlcmF0b3IuY3BwCmluZGV4IGUwZDI4YjljZDZmLi40YzYz
YjU5ZjdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvU3BsaXRTZXF1ZW5jZU9wZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TcGxpdFNlcXVlbmNlT3BlcmF0b3Iu
Y3BwCkBAIC0xNCw2ICsxNCw5IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRl
cm1Ob2RlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlUGF0dGVy
bk1hdGNoZXIuaCIKIAorbmFtZXNwYWNlIHNoCit7CisKIG5hbWVzcGFjZQogewogCkBAIC0xNTEs
MyArMTU0LDUgQEAgdm9pZCBTcGxpdFNlcXVlbmNlT3BlcmF0b3IoVEludGVybU5vZGUgKnJvb3Qs
CiAgICAgICAgICAgICB0cmF2ZXJzZXIudXBkYXRlVHJlZSgpOwogICAgIH0gd2hpbGUgKHRyYXZl
cnNlci5mb3VuZEV4cHJlc3Npb25Ub1NwbGl0KCkpOwogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1NwbGl0U2VxdWVuY2VPcGVyYXRvci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvU3BsaXRTZXF1ZW5jZU9wZXJhdG9yLmgKaW5kZXggNGE0NmZl
MzZjMGEuLjZkZjlkNDU4ZWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9TcGxpdFNlcXVlbmNlT3BlcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TcGxpdFNlcXVlbmNl
T3BlcmF0b3IuaApAQCAtMTIsNiArMTIsOSBAQAogI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9S
X1NQTElUU0VRVUVOQ0VPUEVSQVRPUl9IXwogI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX1NQ
TElUU0VRVUVOQ0VPUEVSQVRPUl9IXwogCituYW1lc3BhY2Ugc2gKK3sKKwogY2xhc3MgVEludGVy
bU5vZGU7CiBjbGFzcyBUU3ltYm9sVGFibGU7CiAKQEAgLTIxLDQgKzI0LDYgQEAgdm9pZCBTcGxp
dFNlcXVlbmNlT3BlcmF0b3IoVEludGVybU5vZGUgKnJvb3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24pOwogCit9ICAvLyBuYW1lc3BhY2Ugc2gKKwog
I2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1NQTElUU0VRVUVOQ0VPUEVSQVRPUl9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvU3RydWN0dXJlSExTTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9TdHJ1Y3R1cmVITFNMLmNwcAppbmRleCA5M2UwYmE1NzM3MS4uZmQxNDBh
ZTk3NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1N0cnVjdHVyZUhMU0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1N0cnVjdHVyZUhMU0wuY3BwCkBAIC0xOSwyMSArMTks
MjEgQEAgbmFtZXNwYWNlIHNoCiAKIFN0ZDE0MFBhZGRpbmdIZWxwZXI6OlN0ZDE0MFBhZGRpbmdI
ZWxwZXIoY29uc3Qgc3RkOjptYXA8VFN0cmluZywgaW50PiAmc3RydWN0RWxlbWVudEluZGV4ZXMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkICp1bmlx
dWVDb3VudGVyKQotICAgIDogbVBhZGRpbmdDb3VudGVyKHVuaXF1ZUNvdW50ZXIpLAotICAgICAg
bUVsZW1lbnRJbmRleCgwKSwKLSAgICAgIG1TdHJ1Y3RFbGVtZW50SW5kZXhlcygmc3RydWN0RWxl
bWVudEluZGV4ZXMpCi17fQorICAgIDogbVBhZGRpbmdDb3VudGVyKHVuaXF1ZUNvdW50ZXIpLCBt
RWxlbWVudEluZGV4KDApLCBtU3RydWN0RWxlbWVudEluZGV4ZXMoJnN0cnVjdEVsZW1lbnRJbmRl
eGVzKQoreworfQogCiBTdGQxNDBQYWRkaW5nSGVscGVyOjpTdGQxNDBQYWRkaW5nSGVscGVyKGNv
bnN0IFN0ZDE0MFBhZGRpbmdIZWxwZXIgJm90aGVyKQogICAgIDogbVBhZGRpbmdDb3VudGVyKG90
aGVyLm1QYWRkaW5nQ291bnRlciksCiAgICAgICBtRWxlbWVudEluZGV4KG90aGVyLm1FbGVtZW50
SW5kZXgpLAogICAgICAgbVN0cnVjdEVsZW1lbnRJbmRleGVzKG90aGVyLm1TdHJ1Y3RFbGVtZW50
SW5kZXhlcykKLXt9Cit7Cit9CiAKIFN0ZDE0MFBhZGRpbmdIZWxwZXIgJlN0ZDE0MFBhZGRpbmdI
ZWxwZXI6Om9wZXJhdG9yPShjb25zdCBTdGQxNDBQYWRkaW5nSGVscGVyICZvdGhlcikKIHsKLSAg
ICBtUGFkZGluZ0NvdW50ZXIgPSBvdGhlci5tUGFkZGluZ0NvdW50ZXI7Ci0gICAgbUVsZW1lbnRJ
bmRleCA9IG90aGVyLm1FbGVtZW50SW5kZXg7CisgICAgbVBhZGRpbmdDb3VudGVyICAgICAgID0g
b3RoZXIubVBhZGRpbmdDb3VudGVyOworICAgIG1FbGVtZW50SW5kZXggICAgICAgICA9IG90aGVy
Lm1FbGVtZW50SW5kZXg7CiAgICAgbVN0cnVjdEVsZW1lbnRJbmRleGVzID0gb3RoZXIubVN0cnVj
dEVsZW1lbnRJbmRleGVzOwogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTUzLDcgKzUzLDcgQEAg
aW50IFN0ZDE0MFBhZGRpbmdIZWxwZXI6OnByZVBhZGRpbmcoY29uc3QgVFR5cGUgJnR5cGUpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNvbnN0IEdMZW51bSBnbFR5cGUgPSBHTFZh
cmlhYmxlVHlwZSh0eXBlKTsKKyAgICBjb25zdCBHTGVudW0gZ2xUeXBlICAgICA9IEdMVmFyaWFi
bGVUeXBlKHR5cGUpOwogICAgIGNvbnN0IGludCBudW1Db21wb25lbnRzID0gZ2w6OlZhcmlhYmxl
Q29tcG9uZW50Q291bnQoZ2xUeXBlKTsKIAogICAgIGlmIChudW1Db21wb25lbnRzID49IDQpCkBA
IC03MCw5ICs3MCw5IEBAIGludCBTdGQxNDBQYWRkaW5nSGVscGVyOjpwcmVQYWRkaW5nKGNvbnN0
IFRUeXBlICZ0eXBlKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBjb25zdCBpbnQg
YWxpZ25tZW50ID0gbnVtQ29tcG9uZW50cyA9PSAzID8gNCA6IG51bUNvbXBvbmVudHM7CisgICAg
Y29uc3QgaW50IGFsaWdubWVudCAgICAgPSBudW1Db21wb25lbnRzID09IDMgPyA0IDogbnVtQ29t
cG9uZW50czsKICAgICBjb25zdCBpbnQgcGFkZGluZ09mZnNldCA9IChtRWxlbWVudEluZGV4ICUg
YWxpZ25tZW50KTsKLSAgICBjb25zdCBpbnQgcGFkZGluZ0NvdW50ID0gKHBhZGRpbmdPZmZzZXQg
IT0gMCA/IChhbGlnbm1lbnQgLSBwYWRkaW5nT2Zmc2V0KSA6IDApOworICAgIGNvbnN0IGludCBw
YWRkaW5nQ291bnQgID0gKHBhZGRpbmdPZmZzZXQgIT0gMCA/IChhbGlnbm1lbnQgLSBwYWRkaW5n
T2Zmc2V0KSA6IDApOwogCiAgICAgbUVsZW1lbnRJbmRleCArPSBwYWRkaW5nQ291bnQ7CiAgICAg
bUVsZW1lbnRJbmRleCArPSBudW1Db21wb25lbnRzOwpAQCAtMTAyLDI1ICsxMDIsMjYgQEAgVFN0
cmluZyBTdGQxNDBQYWRkaW5nSGVscGVyOjpwb3N0UGFkZGluZ1N0cmluZyhjb25zdCBUVHlwZSAm
dHlwZSwgYm9vbCB1c2VITFNMUm8KICAgICAgICAgcmV0dXJuICIiOwogICAgIH0KIAotICAgIGlu
dCBudW1Db21wb25lbnRzID0gMDsKKyAgICBpbnQgbnVtQ29tcG9uZW50cyAgICAgPSAwOwogICAg
IFRTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IHR5cGUuZ2V0U3RydWN0KCk7CiAKICAgICBpZiAodHlw
ZS5pc01hdHJpeCgpKQogICAgIHsKLSAgICAgICAgLy8gVGhpcyBtZXRob2QgY2FuIGFsc28gYmUg
Y2FsbGVkIGZyb20gc3RydWN0dXJlU3RyaW5nLCB3aGljaCBkb2VzIG5vdCB1c2UgbGF5b3V0IHF1
YWxpZmllcnMuCisgICAgICAgIC8vIFRoaXMgbWV0aG9kIGNhbiBhbHNvIGJlIGNhbGxlZCBmcm9t
IHN0cnVjdHVyZVN0cmluZywgd2hpY2ggZG9lcyBub3QgdXNlIGxheW91dAorICAgICAgICAvLyBx
dWFsaWZpZXJzLgogICAgICAgICAvLyBUaHVzLCB1c2UgdGhlIG1ldGhvZCBwYXJhbWV0ZXIgZm9y
IGRldGVybWluaW5nIHRoZSBtYXRyaXggcGFja2luZy4KICAgICAgICAgLy8KICAgICAgICAgLy8g
Tm90ZSBITFNMIHJvdyBtYWpvciBwYWNraW5nIGNvcnJlc3BvbmRzIHRvIEdMIEFQSSBjb2x1bW4t
bWFqb3IsIGFuZCB2aWNlLXZlcnNhLCBzaW5jZSB3ZQogICAgICAgICAvLyB3aXNoIHRvIGFsd2F5
cyB0cmFuc3Bvc2UgR0wgbWF0cmljZXMgdG8gcGxheSB3ZWxsIHdpdGggSExTTCdzIG1hdHJpeCBh
cnJheSBpbmRleGluZy4KICAgICAgICAgLy8KICAgICAgICAgY29uc3QgYm9vbCBpc1Jvd01ham9y
TWF0cml4ID0gIXVzZUhMU0xSb3dNYWpvclBhY2tpbmc7Ci0gICAgICAgIGNvbnN0IEdMZW51bSBn
bFR5cGUgPSBHTFZhcmlhYmxlVHlwZSh0eXBlKTsKLSAgICAgICAgbnVtQ29tcG9uZW50cyA9IGds
OjpNYXRyaXhDb21wb25lbnRDb3VudChnbFR5cGUsIGlzUm93TWFqb3JNYXRyaXgpOworICAgICAg
ICBjb25zdCBHTGVudW0gZ2xUeXBlICAgICAgICAgPSBHTFZhcmlhYmxlVHlwZSh0eXBlKTsKKyAg
ICAgICAgbnVtQ29tcG9uZW50cyAgICAgICAgICAgICAgID0gZ2w6Ok1hdHJpeENvbXBvbmVudENv
dW50KGdsVHlwZSwgaXNSb3dNYWpvck1hdHJpeCk7CiAgICAgfQogICAgIGVsc2UgaWYgKHN0cnVj
dHVyZSkKICAgICB7Ci0gICAgICAgIGNvbnN0IFRTdHJpbmcgJnN0cnVjdE5hbWUgPSBRdWFsaWZp
ZWRTdHJ1Y3ROYW1lU3RyaW5nKCpzdHJ1Y3R1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZUhMU0xSb3dNYWpvclBhY2tp
bmcsIHRydWUpOworICAgICAgICBjb25zdCBUU3RyaW5nICZzdHJ1Y3ROYW1lID0KKyAgICAgICAg
ICAgIFF1YWxpZmllZFN0cnVjdE5hbWVTdHJpbmcoKnN0cnVjdHVyZSwgdXNlSExTTFJvd01ham9y
UGFja2luZywgdHJ1ZSk7CiAgICAgICAgIG51bUNvbXBvbmVudHMgPSBtU3RydWN0RWxlbWVudElu
ZGV4ZXMtPmZpbmQoc3RydWN0TmFtZSktPnNlY29uZDsKIAogICAgICAgICBpZiAobnVtQ29tcG9u
ZW50cyA9PSAwKQpAQCAtMTMxLDcgKzEzMiw3IEBAIFRTdHJpbmcgU3RkMTQwUGFkZGluZ0hlbHBl
cjo6cG9zdFBhZGRpbmdTdHJpbmcoY29uc3QgVFR5cGUgJnR5cGUsIGJvb2wgdXNlSExTTFJvCiAg
ICAgZWxzZQogICAgIHsKICAgICAgICAgY29uc3QgR0xlbnVtIGdsVHlwZSA9IEdMVmFyaWFibGVU
eXBlKHR5cGUpOwotICAgICAgICBudW1Db21wb25lbnRzID0gZ2w6OlZhcmlhYmxlQ29tcG9uZW50
Q291bnQoZ2xUeXBlKTsKKyAgICAgICAgbnVtQ29tcG9uZW50cyAgICAgICA9IGdsOjpWYXJpYWJs
ZUNvbXBvbmVudENvdW50KGdsVHlwZSk7CiAgICAgfQogCiAgICAgVFN0cmluZyBwYWRkaW5nOwpA
QCAtMTQyLDE2ICsxNDMsMTggQEAgVFN0cmluZyBTdGQxNDBQYWRkaW5nSGVscGVyOjpwb3N0UGFk
ZGluZ1N0cmluZyhjb25zdCBUVHlwZSAmdHlwZSwgYm9vbCB1c2VITFNMUm8KICAgICByZXR1cm4g
cGFkZGluZzsKIH0KIAotU3RydWN0dXJlSExTTDo6U3RydWN0dXJlSExTTCgpCi0gICAgOiBtVW5p
cXVlUGFkZGluZ0NvdW50ZXIoMCkKLXt9CitTdHJ1Y3R1cmVITFNMOjpTdHJ1Y3R1cmVITFNMKCkg
OiBtVW5pcXVlUGFkZGluZ0NvdW50ZXIoMCkKK3sKK30KIAogU3RkMTQwUGFkZGluZ0hlbHBlciBT
dHJ1Y3R1cmVITFNMOjpnZXRQYWRkaW5nSGVscGVyKCkKIHsKICAgICByZXR1cm4gU3RkMTQwUGFk
ZGluZ0hlbHBlcihtU3RkMTQwU3RydWN0RWxlbWVudEluZGV4ZXMsICZtVW5pcXVlUGFkZGluZ0Nv
dW50ZXIpOwogfQogCi1UU3RyaW5nIFN0cnVjdHVyZUhMU0w6OmRlZmluZVF1YWxpZmllZChjb25z
dCBUU3RydWN0dXJlICZzdHJ1Y3R1cmUsIGJvb2wgdXNlSExTTFJvd01ham9yUGFja2luZywgYm9v
bCB1c2VTdGQxNDBQYWNraW5nKQorVFN0cmluZyBTdHJ1Y3R1cmVITFNMOjpkZWZpbmVRdWFsaWZp
ZWQoY29uc3QgVFN0cnVjdHVyZSAmc3RydWN0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCB1c2VITFNMUm93TWFqb3JQYWNraW5nLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VTdGQxNDBQYWNraW5nKQogewogICAg
IGlmICh1c2VTdGQxNDBQYWNraW5nKQogICAgIHsKQEAgLTE2OSwxNyArMTcyLDIwIEBAIFRTdHJp
bmcgU3RydWN0dXJlSExTTDo6ZGVmaW5lTmFtZWxlc3MoY29uc3QgVFN0cnVjdHVyZSAmc3RydWN0
dXJlKQogICAgIHJldHVybiBkZWZpbmUoc3RydWN0dXJlLCBmYWxzZSwgZmFsc2UsIE5VTEwpOwog
fQogCi1UU3RyaW5nIFN0cnVjdHVyZUhMU0w6OmRlZmluZShjb25zdCBUU3RydWN0dXJlICZzdHJ1
Y3R1cmUsIGJvb2wgdXNlSExTTFJvd01ham9yUGFja2luZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgdXNlU3RkMTQwUGFja2luZywgU3RkMTQwUGFkZGluZ0hlbHBlciAqcGFk
SGVscGVyKQorVFN0cmluZyBTdHJ1Y3R1cmVITFNMOjpkZWZpbmUoY29uc3QgVFN0cnVjdHVyZSAm
c3RydWN0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VITFNMUm93
TWFqb3JQYWNraW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VTdGQx
NDBQYWNraW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RkMTQwUGFkZGluZ0hl
bHBlciAqcGFkSGVscGVyKQogewogICAgIGNvbnN0IFRGaWVsZExpc3QgJmZpZWxkcyA9IHN0cnVj
dHVyZS5maWVsZHMoKTsKLSAgICBjb25zdCBib29sIGlzTmFtZWxlc3MgPSAoc3RydWN0dXJlLm5h
bWUoKSA9PSAiIik7Ci0gICAgY29uc3QgVFN0cmluZyAmc3RydWN0TmFtZSA9IFF1YWxpZmllZFN0
cnVjdE5hbWVTdHJpbmcoc3RydWN0dXJlLCB1c2VITFNMUm93TWFqb3JQYWNraW5nLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZVN0
ZDE0MFBhY2tpbmcpOworICAgIGNvbnN0IGJvb2wgaXNOYW1lbGVzcyAgICA9IChzdHJ1Y3R1cmUu
bmFtZSgpID09ICIiKTsKKyAgICBjb25zdCBUU3RyaW5nICZzdHJ1Y3ROYW1lID0KKyAgICAgICAg
UXVhbGlmaWVkU3RydWN0TmFtZVN0cmluZyhzdHJ1Y3R1cmUsIHVzZUhMU0xSb3dNYWpvclBhY2tp
bmcsIHVzZVN0ZDE0MFBhY2tpbmcpOwogICAgIGNvbnN0IFRTdHJpbmcgZGVjbGFyZVN0cmluZyA9
IChpc05hbWVsZXNzID8gInN0cnVjdCIgOiAic3RydWN0ICIgKyBzdHJ1Y3ROYW1lKTsKIAogICAg
IFRTdHJpbmcgc3RyaW5nOwotICAgIHN0cmluZyArPSBkZWNsYXJlU3RyaW5nICsgIlxuIgorICAg
IHN0cmluZyArPSBkZWNsYXJlU3RyaW5nICsKKyAgICAgICAgICAgICAgIlxuIgogICAgICAgICAg
ICAgICAie1xuIjsKIAogICAgIGZvciAoY29uc3QgVEZpZWxkICpmaWVsZCA6IGZpZWxkcykKQEAg
LTIwOCw3ICsyMTQsOCBAQCBUU3RyaW5nIFN0cnVjdHVyZUhMU0w6OmRlZmluZShjb25zdCBUU3Ry
dWN0dXJlICZzdHJ1Y3R1cmUsIGJvb2wgdXNlSExTTFJvd01ham9yUAogICAgICAgICB9CiAgICAg
fQogCi0gICAgLy8gTmFtZWxlc3Mgc3RydWN0cyBkbyBub3QgZmluaXNoIHdpdGggYSBzZW1pY29s
b24gYW5kIG5ld2xpbmUsIHRvIGxlYXZlIHJvb20gZm9yIGFuIGluc3RhbmNlIHZhcmlhYmxlCisg
ICAgLy8gTmFtZWxlc3Mgc3RydWN0cyBkbyBub3QgZmluaXNoIHdpdGggYSBzZW1pY29sb24gYW5k
IG5ld2xpbmUsIHRvIGxlYXZlIHJvb20gZm9yIGFuIGluc3RhbmNlCisgICAgLy8gdmFyaWFibGUK
ICAgICBzdHJpbmcgKz0gKGlzTmFtZWxlc3MgPyAifSAiIDogIn07XG4iKTsKIAogICAgIHJldHVy
biBzdHJpbmc7CkBAIC0yMzgsNyArMjQ1LDcgQEAgVFN0cmluZyBTdHJ1Y3R1cmVITFNMOjphZGRD
b25zdHJ1Y3Rvcihjb25zdCBUVHlwZSAmdHlwZSwKIAogICAgIFRTdHJpbmcgY29uc3RydWN0b3JG
dW5jdGlvbk5hbWU7CiAKLSAgICBjb25zdCBUU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0eXBlLmdl
dFN0cnVjdCgpOworICAgIGNvbnN0IFRTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IHR5cGUuZ2V0U3Ry
dWN0KCk7CiAgICAgaWYgKHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIG1TdHJ1Y3ROYW1lcy5p
bnNlcnQobmFtZSk7CkBAIC0yNDksMTcgKzI1NiwxOCBAQCBUU3RyaW5nIFN0cnVjdHVyZUhMU0w6
OmFkZENvbnN0cnVjdG9yKGNvbnN0IFRUeXBlICZ0eXBlLAogCiAgICAgICAgIGNvbnN0IFRTdHJp
bmcgJnN0cnVjdFN0cmluZyA9IGRlZmluZVF1YWxpZmllZCgqc3RydWN0dXJlLCBmYWxzZSwgZmFs
c2UpOwogCi0gICAgICAgIGlmIChzdGQ6OmZpbmQobVN0cnVjdERlY2xhcmF0aW9ucy5iZWdpbigp
LCBtU3RydWN0RGVjbGFyYXRpb25zLmVuZCgpLCBzdHJ1Y3RTdHJpbmcpID09IG1TdHJ1Y3REZWNs
YXJhdGlvbnMuZW5kKCkpCisgICAgICAgIGlmIChzdGQ6OmZpbmQobVN0cnVjdERlY2xhcmF0aW9u
cy5iZWdpbigpLCBtU3RydWN0RGVjbGFyYXRpb25zLmVuZCgpLCBzdHJ1Y3RTdHJpbmcpID09Cisg
ICAgICAgICAgICBtU3RydWN0RGVjbGFyYXRpb25zLmVuZCgpKQogICAgICAgICB7CiAgICAgICAg
ICAgICAvLyBBZGQgcm93LW1ham9yIHBhY2tlZCBzdHJ1Y3QgZm9yIGludGVyZmFjZSBibG9ja3MK
ICAgICAgICAgICAgIFRTdHJpbmcgcm93TWFqb3JTdHJpbmcgPSAiI3ByYWdtYSBwYWNrX21hdHJp
eChyb3dfbWFqb3IpXG4iICsKLSAgICAgICAgICAgICAgICBkZWZpbmVRdWFsaWZpZWQoKnN0cnVj
dHVyZSwgdHJ1ZSwgZmFsc2UpICsKLSAgICAgICAgICAgICAgICAiI3ByYWdtYSBwYWNrX21hdHJp
eChjb2x1bW5fbWFqb3IpXG4iOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlZmluZVF1YWxpZmllZCgqc3RydWN0dXJlLCB0cnVlLCBmYWxzZSkgKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIjcHJhZ21hIHBhY2tfbWF0cml4KGNvbHVtbl9tYWpv
cilcbiI7CiAKLSAgICAgICAgICAgIFRTdHJpbmcgc3RkMTQwU3RyaW5nID0gZGVmaW5lUXVhbGlm
aWVkKCpzdHJ1Y3R1cmUsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIFRTdHJpbmcgc3RkMTQw
U3RyaW5nICAgICAgICAgPSBkZWZpbmVRdWFsaWZpZWQoKnN0cnVjdHVyZSwgZmFsc2UsIHRydWUp
OwogICAgICAgICAgICAgVFN0cmluZyBzdGQxNDBSb3dNYWpvclN0cmluZyA9ICIjcHJhZ21hIHBh
Y2tfbWF0cml4KHJvd19tYWpvcilcbiIgKwotICAgICAgICAgICAgICAgIGRlZmluZVF1YWxpZmll
ZCgqc3RydWN0dXJlLCB0cnVlLCB0cnVlKSArCi0gICAgICAgICAgICAgICAgIiNwcmFnbWEgcGFj
a19tYXRyaXgoY29sdW1uX21ham9yKVxuIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWZpbmVRdWFsaWZpZWQoKnN0cnVjdHVyZSwgdHJ1ZSwgdHJ1ZSkgKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIjcHJhZ21hIHBhY2tf
bWF0cml4KGNvbHVtbl9tYWpvcilcbiI7CiAKICAgICAgICAgICAgIG1TdHJ1Y3REZWNsYXJhdGlv
bnMucHVzaF9iYWNrKHN0cnVjdFN0cmluZyk7CiAgICAgICAgICAgICBtU3RydWN0RGVjbGFyYXRp
b25zLnB1c2hfYmFjayhyb3dNYWpvclN0cmluZyk7CkBAIC0yODcsNyArMjk1LDggQEAgVFN0cmlu
ZyBTdHJ1Y3R1cmVITFNMOjphZGRDb25zdHJ1Y3Rvcihjb25zdCBUVHlwZSAmdHlwZSwKICAgICAg
ICAgfQogICAgICAgICBjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZSA9IFRTdHJpbmcobmFtZSkgKyBE
aXNhbWJpZ3VhdGVGdW5jdGlvbk5hbWUocGFyYW1ldGVycyk7CiAgICAgfQotICAgIGVsc2UgVU5S
RUFDSEFCTEUoKTsKKyAgICBlbHNlCisgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAKICAgICBUU3Ry
aW5nIGNvbnN0cnVjdG9yOwogCkBAIC0yOTUsNyArMzA0LDcgQEAgVFN0cmluZyBTdHJ1Y3R1cmVI
TFNMOjphZGRDb25zdHJ1Y3Rvcihjb25zdCBUVHlwZSAmdHlwZSwKICAgICB7CiAgICAgICAgIGNv
bnN0cnVjdG9yICs9IG5hbWUgKyAiICIgKyBuYW1lICsgIl9jdG9yKCI7CiAgICAgfQotICAgIGVs
c2UgICAvLyBCdWlsdC1pbiB0eXBlCisgICAgZWxzZSAgLy8gQnVpbHQtaW4gdHlwZQogICAgIHsK
ICAgICAgICAgY29uc3RydWN0b3IgKz0gVHlwZVN0cmluZyhjdG9yVHlwZSkgKyAiICIgKyBjb25z
dHJ1Y3RvckZ1bmN0aW9uTmFtZSArICIoIjsKICAgICB9CkBAIC0zMTIsOCArMzIxLDkgQEAgVFN0
cmluZyBTdHJ1Y3R1cmVITFNMOjphZGRDb25zdHJ1Y3Rvcihjb25zdCBUVHlwZSAmdHlwZSwKICAg
ICAgICAgfQogICAgIH0KIAotICAgIGNvbnN0cnVjdG9yICs9ICIpXG4iCi0gICAgICAgICAgICAg
ICAgICAgIntcbiI7CisgICAgY29uc3RydWN0b3IgKz0KKyAgICAgICAgIilcbiIKKyAgICAgICAg
IntcbiI7CiAKICAgICBpZiAoY3RvclR5cGUuZ2V0U3RydWN0KCkpCiAgICAgewpAQCAtMzM0LDgg
KzM0NCw4IEBAIFRTdHJpbmcgU3RydWN0dXJlSExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3QgVFR5
cGUgJnR5cGUsCiAKICAgICBpZiAoY3RvclR5cGUuaXNNYXRyaXgoKSAmJiBjdG9yUGFyYW1ldGVy
cy5zaXplKCkgPT0gMSkKICAgICB7Ci0gICAgICAgIGludCByb3dzID0gY3RvclR5cGUuZ2V0Um93
cygpOwotICAgICAgICBpbnQgY29scyA9IGN0b3JUeXBlLmdldENvbHMoKTsKKyAgICAgICAgaW50
IHJvd3MgICAgICAgICAgICAgICA9IGN0b3JUeXBlLmdldFJvd3MoKTsKKyAgICAgICAgaW50IGNv
bHMgICAgICAgICAgICAgICA9IGN0b3JUeXBlLmdldENvbHMoKTsKICAgICAgICAgY29uc3QgVFR5
cGUgJnBhcmFtZXRlciA9IGN0b3JQYXJhbWV0ZXJzWzBdOwogCiAgICAgICAgIGlmIChwYXJhbWV0
ZXIuaXNTY2FsYXIoKSkKQEAgLTM3Nyw3ICszODcsOCBAQCBUU3RyaW5nIFN0cnVjdHVyZUhMU0w6
OmFkZENvbnN0cnVjdG9yKGNvbnN0IFRUeXBlICZ0eXBlLAogICAgICAgICB9CiAgICAgICAgIGVs
c2UKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKHJvd3MgPT0gMiAmJiBjb2xzID09IDIg
JiYgcGFyYW1ldGVyLmlzVmVjdG9yKCkgJiYgcGFyYW1ldGVyLmdldE5vbWluYWxTaXplKCkgPT0g
NCk7CisgICAgICAgICAgICBBU1NFUlQocm93cyA9PSAyICYmIGNvbHMgPT0gMiAmJiBwYXJhbWV0
ZXIuaXNWZWN0b3IoKSAmJgorICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlci5nZXROb21pbmFs
U2l6ZSgpID09IDQpOwogCiAgICAgICAgICAgICBjb25zdHJ1Y3RvciArPSAieDAiOwogICAgICAg
ICB9CkBAIC0zOTcsOSArNDA4LDkgQEAgVFN0cmluZyBTdHJ1Y3R1cmVITFNMOjphZGRDb25zdHJ1
Y3Rvcihjb25zdCBUVHlwZSAmdHlwZSwKIAogICAgICAgICB3aGlsZSAocmVtYWluaW5nQ29tcG9u
ZW50cyA+IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRUeXBlICZwYXJhbWV0ZXIg
PSBjdG9yUGFyYW1ldGVyc1twYXJhbWV0ZXJJbmRleF07CisgICAgICAgICAgICBjb25zdCBUVHlw
ZSAmcGFyYW1ldGVyICAgICA9IGN0b3JQYXJhbWV0ZXJzW3BhcmFtZXRlckluZGV4XTsKICAgICAg
ICAgICAgIGNvbnN0IHNpemVfdCBwYXJhbWV0ZXJTaXplID0gcGFyYW1ldGVyLmdldE9iamVjdFNp
emUoKTsKLSAgICAgICAgICAgIGJvb2wgbW9yZVBhcmFtZXRlcnMgPSBwYXJhbWV0ZXJJbmRleCAr
IDEgPCBjdG9yUGFyYW1ldGVycy5zaXplKCk7CisgICAgICAgICAgICBib29sIG1vcmVQYXJhbWV0
ZXJzICAgICAgICA9IHBhcmFtZXRlckluZGV4ICsgMSA8IGN0b3JQYXJhbWV0ZXJzLnNpemUoKTsK
IAogICAgICAgICAgICAgY29uc3RydWN0b3IgKz0gIngiICsgc3RyKHBhcmFtZXRlckluZGV4KTsK
IApAQCAtNDI0LDE2ICs0MzUsMjYgQEAgVFN0cmluZyBTdHJ1Y3R1cmVITFNMOjphZGRDb25zdHJ1
Y3Rvcihjb25zdCBUVHlwZSAmdHlwZSwKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAocmVtYWluaW5nQ29tcG9uZW50cykKICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTogY29uc3RydWN0b3IgKz0gIi54IjsgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiBjb25zdHJ1Y3RvciArPSAiLnh5
IjsgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IGNvbnN0cnVjdG9yICs9
ICIueHl6IjsgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDogY29uc3RydWN0
b3IgKz0gIi54eXp3IjsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvciArPSAiLngiOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yICs9ICIueHkiOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yICs9ICIueHl6IjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgNDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvciArPSAiLnh5enci
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5n
Q29tcG9uZW50cyA9IDA7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2Ug
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChwYXJh
bWV0ZXIuaXNNYXRyaXgoKSkKICAgICAgICAgICAgIHsKQEAgLTQ0NiwxMCArNDY3LDE3IEBAIFRT
dHJpbmcgU3RydWN0dXJlSExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3QgVFR5cGUgJnR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAocmVt
YWluaW5nQ29tcG9uZW50cykKICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2FzZSAxOiAgY29uc3RydWN0b3IgKz0gIi54IjsgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjogIGNvbnN0cnVjdG9yICs9ICIueHkiOyAg
IGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6ICBjb25zdHJ1Y3RvciAr
PSAiLnh5eiI7ICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yICs9ICIueCI7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3IgKz0g
Ii54eSI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3RydWN0b3IgKz0gIi54eXoiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdDb21wb25lbnRzID0g
MDsKQEAgLTQ2Nyw3ICs0OTUsOCBAQCBUU3RyaW5nIFN0cnVjdHVyZUhMU0w6OmFkZENvbnN0cnVj
dG9yKGNvbnN0IFRUeXBlICZ0eXBlLAogICAgICAgICAgICAgICAgICAgICBjb2x1bW4rKzsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIFVOUkVBQ0hB
QkxFKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
IAogICAgICAgICAgICAgaWYgKG1vcmVQYXJhbWV0ZXJzKQogICAgICAgICAgICAgewpAQCAtNDkz
LDggKzUyMiw5IEBAIFRTdHJpbmcgU3RydWN0dXJlSExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3Qg
VFR5cGUgJnR5cGUsCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGNvbnN0cnVjdG9y
ICs9ICIpO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAifVxuIjsKKyAgICAgICAgY29uc3Ry
dWN0b3IgKz0KKyAgICAgICAgICAgICIpO1xuIgorICAgICAgICAgICAgIn1cbiI7CiAgICAgfQog
CiAgICAgbUNvbnN0cnVjdG9ycy5pbnNlcnQoY29uc3RydWN0b3IpOwpAQCAtNTEyLDggKzU0Miw3
IEBAIHN0ZDo6c3RyaW5nIFN0cnVjdHVyZUhMU0w6OnN0cnVjdHNIZWFkZXIoKSBjb25zdAogICAg
IH0KIAogICAgIGZvciAoQ29uc3RydWN0b3JzOjpjb25zdF9pdGVyYXRvciBjb25zdHJ1Y3RvciA9
IG1Db25zdHJ1Y3RvcnMuYmVnaW4oKTsKLSAgICAgICAgIGNvbnN0cnVjdG9yICE9IG1Db25zdHJ1
Y3RvcnMuZW5kKCk7Ci0gICAgICAgICBjb25zdHJ1Y3RvcisrKQorICAgICAgICAgY29uc3RydWN0
b3IgIT0gbUNvbnN0cnVjdG9ycy5lbmQoKTsgY29uc3RydWN0b3IrKykKICAgICB7CiAgICAgICAg
IG91dCA8PCAqY29uc3RydWN0b3I7CiAgICAgfQpAQCAtNTIxLDE5ICs1NTAsMjAgQEAgc3RkOjpz
dHJpbmcgU3RydWN0dXJlSExTTDo6c3RydWN0c0hlYWRlcigpIGNvbnN0CiAgICAgcmV0dXJuIG91
dC5zdHIoKTsKIH0KIAotdm9pZCBTdHJ1Y3R1cmVITFNMOjpzdG9yZVN0ZDE0MEVsZW1lbnRJbmRl
eChjb25zdCBUU3RydWN0dXJlICZzdHJ1Y3R1cmUsIGJvb2wgdXNlSExTTFJvd01ham9yUGFja2lu
ZykKK3ZvaWQgU3RydWN0dXJlSExTTDo6c3RvcmVTdGQxNDBFbGVtZW50SW5kZXgoY29uc3QgVFN0
cnVjdHVyZSAmc3RydWN0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHVzZUhMU0xSb3dNYWpvclBhY2tpbmcpCiB7CiAgICAgU3RkMTQwUGFkZGlu
Z0hlbHBlciBwYWRIZWxwZXIgPSBnZXRQYWRkaW5nSGVscGVyKCk7Ci0gICAgY29uc3QgVEZpZWxk
TGlzdCAmZmllbGRzID0gc3RydWN0dXJlLmZpZWxkcygpOworICAgIGNvbnN0IFRGaWVsZExpc3Qg
JmZpZWxkcyAgICAgID0gc3RydWN0dXJlLmZpZWxkcygpOwogCiAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBmaWVsZHMuc2l6ZSgpOyBpKyspCiAgICAgewogICAgICAgICBwYWRIZWxw
ZXIucHJlUGFkZGluZygqZmllbGRzW2ldLT50eXBlKCkpOwogICAgIH0KIAotICAgIC8vIEFkZCBy
ZW1haW5pbmcgZWxlbWVudCBpbmRleCB0byB0aGUgZ2xvYmFsIG1hcCwgZm9yIHVzZSB3aXRoIG5l
c3RlZCBzdHJ1Y3RzIGluIHN0YW5kYXJkIGxheW91dHMKKyAgICAvLyBBZGQgcmVtYWluaW5nIGVs
ZW1lbnQgaW5kZXggdG8gdGhlIGdsb2JhbCBtYXAsIGZvciB1c2Ugd2l0aCBuZXN0ZWQgc3RydWN0
cyBpbiBzdGFuZGFyZAorICAgIC8vIGxheW91dHMKICAgICBjb25zdCBUU3RyaW5nICZzdHJ1Y3RO
YW1lID0gUXVhbGlmaWVkU3RydWN0TmFtZVN0cmluZyhzdHJ1Y3R1cmUsIHVzZUhMU0xSb3dNYWpv
clBhY2tpbmcsIHRydWUpOwogICAgIG1TdGQxNDBTdHJ1Y3RFbGVtZW50SW5kZXhlc1tzdHJ1Y3RO
YW1lXSA9IHBhZEhlbHBlci5lbGVtZW50SW5kZXgoKTsKIH0KLQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU3RydWN0dXJlSExT
TC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU3Ry
dWN0dXJlSExTTC5oCmluZGV4IDk2MTM5ZWM5YTdjLi5iOGM2ZDYyNTU1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU3RydWN0dXJl
SExTTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1N0cnVjdHVyZUhMU0wuaApAQCAtNTYsNyArNTYsOSBAQCBjbGFzcyBTdHJ1Y3R1cmVITFNM
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBU
SW50ZXJtU2VxdWVuY2UgKnBhcmFtZXRlcnMpOwogICAgIHN0ZDo6c3RyaW5nIHN0cnVjdHNIZWFk
ZXIoKSBjb25zdDsKIAotICAgIFRTdHJpbmcgZGVmaW5lUXVhbGlmaWVkKGNvbnN0IFRTdHJ1Y3R1
cmUgJnN0cnVjdHVyZSwgYm9vbCB1c2VITFNMUm93TWFqb3JQYWNraW5nLCBib29sIHVzZVN0ZDE0
MFBhY2tpbmcpOworICAgIFRTdHJpbmcgZGVmaW5lUXVhbGlmaWVkKGNvbnN0IFRTdHJ1Y3R1cmUg
JnN0cnVjdHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVzZUhMU0xSb3dN
YWpvclBhY2tpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VTdGQxNDBQ
YWNraW5nKTsKICAgICBzdGF0aWMgVFN0cmluZyBkZWZpbmVOYW1lbGVzcyhjb25zdCBUU3RydWN0
dXJlICZzdHJ1Y3R1cmUpOwogCiAgICAgU3RkMTQwUGFkZGluZ0hlbHBlciBnZXRQYWRkaW5nSGVs
cGVyKCk7CkBAIC03NiwxMCArNzgsMTEgQEAgY2xhc3MgU3RydWN0dXJlSExTTCA6IGFuZ2xlOjpO
b25Db3B5YWJsZQogICAgIFN0cnVjdERlY2xhcmF0aW9ucyBtU3RydWN0RGVjbGFyYXRpb25zOwog
CiAgICAgdm9pZCBzdG9yZVN0ZDE0MEVsZW1lbnRJbmRleChjb25zdCBUU3RydWN0dXJlICZzdHJ1
Y3R1cmUsIGJvb2wgdXNlSExTTFJvd01ham9yUGFja2luZyk7Ci0gICAgc3RhdGljIFRTdHJpbmcg
ZGVmaW5lKGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdHVyZSwgYm9vbCB1c2VITFNMUm93TWFqb3JQ
YWNraW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdXNlU3RkMTQwUGFja2luZywg
U3RkMTQwUGFkZGluZ0hlbHBlciAqcGFkSGVscGVyKTsKKyAgICBzdGF0aWMgVFN0cmluZyBkZWZp
bmUoY29uc3QgVFN0cnVjdHVyZSAmc3RydWN0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIHVzZUhMU0xSb3dNYWpvclBhY2tpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgdXNlU3RkMTQwUGFja2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgU3RkMTQw
UGFkZGluZ0hlbHBlciAqcGFkSGVscGVyKTsKIH07Ci0KIH0KIAotI2VuZGlmIC8vIENPTVBJTEVS
X1RSQU5TTEFUT1JfU1RSVUNUVVJFSExTTF9IXworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xB
VE9SX1NUUlVDVFVSRUhMU0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmNwcAppbmRleCBh
YTIzNzc2Yjk3Mi4uYTdmN2U4ZjU0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5jcHAK
QEAgLTEwLDE3ICsxMCw0MiBAQAogLy8KIAogI2lmIGRlZmluZWQoX01TQ19WRVIpCi0jcHJhZ21h
IHdhcm5pbmcoZGlzYWJsZTogNDcxOCkKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDcxOCkK
ICNlbmRpZgogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5oIgor
CiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9DYWNoZS5oIgorI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvSW50ZXJtTm9kZS5oIgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNs
dWRlIDxhbGdvcml0aG0+CiAKK25hbWVzcGFjZSBzaAoreworCituYW1lc3BhY2UKK3sKKworc3Rh
dGljIGNvbnN0IGNoYXIga0Z1bmN0aW9uTWFuZ2xlZE5hbWVTZXBhcmF0b3IgPSAnKCc7CisKK30g
IC8vIGFub255bW91cyBuYW1lc3BhY2UKKwogaW50IFRTeW1ib2xUYWJsZTo6dW5pcXVlSWRDb3Vu
dGVyID0gMDsKIAorVFN5bWJvbFVuaXF1ZUlkOjpUU3ltYm9sVW5pcXVlSWQoKSA6IG1JZChUU3lt
Ym9sVGFibGU6Om5leHRVbmlxdWVJZCgpKQoreworfQorCitUU3ltYm9sVW5pcXVlSWQ6OlRTeW1i
b2xVbmlxdWVJZChjb25zdCBUU3ltYm9sICZzeW1ib2wpIDogbUlkKHN5bWJvbC5nZXRVbmlxdWVJ
ZCgpKQoreworfQorCitpbnQgVFN5bWJvbFVuaXF1ZUlkOjpnZXQoKSBjb25zdAoreworICAgIHJl
dHVybiBtSWQ7Cit9CisKIFRTeW1ib2w6OlRTeW1ib2woY29uc3QgVFN0cmluZyAqbikgOiB1bmlx
dWVJZChUU3ltYm9sVGFibGU6Om5leHRVbmlxdWVJZCgpKSwgbmFtZShuKQogewogfQpAQCAtNTIs
MTYgKzc3LDI5IEBAIHZvaWQgVEZ1bmN0aW9uOjpzd2FwUGFyYW1ldGVycyhjb25zdCBURnVuY3Rp
b24gJnBhcmFtZXRlcnNTb3VyY2UpCiAKIGNvbnN0IFRTdHJpbmcgKlRGdW5jdGlvbjo6YnVpbGRN
YW5nbGVkTmFtZSgpIGNvbnN0CiB7Ci0gICAgc3RkOjpzdHJpbmcgbmV3TmFtZSA9IG1hbmdsZU5h
bWUoZ2V0TmFtZSgpKS5jX3N0cigpOworICAgIHN0ZDo6c3RyaW5nIG5ld05hbWUgPSBnZXROYW1l
KCkuY19zdHIoKTsKKyAgICBuZXdOYW1lICs9IGtGdW5jdGlvbk1hbmdsZWROYW1lU2VwYXJhdG9y
OwogCiAgICAgZm9yIChjb25zdCBhdXRvICZwIDogcGFyYW1ldGVycykKICAgICB7CiAgICAgICAg
IG5ld05hbWUgKz0gcC50eXBlLT5nZXRNYW5nbGVkTmFtZSgpLmNfc3RyKCk7CiAgICAgfQotCiAg
ICAgcmV0dXJuIE5ld1Bvb2xUU3RyaW5nKG5ld05hbWUuY19zdHIoKSk7CiB9CiAKK2NvbnN0IFRT
dHJpbmcgJlRGdW5jdGlvbjo6R2V0TWFuZ2xlZE5hbWVGcm9tQ2FsbChjb25zdCBUU3RyaW5nICZm
dW5jdGlvbk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgVEludGVybVNlcXVlbmNlICZhcmd1bWVudHMpCit7CisgICAgc3RkOjpzdHJp
bmcgbmV3TmFtZSA9IGZ1bmN0aW9uTmFtZS5jX3N0cigpOworICAgIG5ld05hbWUgKz0ga0Z1bmN0
aW9uTWFuZ2xlZE5hbWVTZXBhcmF0b3I7CisKKyAgICBmb3IgKFRJbnRlcm1Ob2RlICphcmd1bWVu
dCA6IGFyZ3VtZW50cykKKyAgICB7CisgICAgICAgIG5ld05hbWUgKz0gYXJndW1lbnQtPmdldEFz
VHlwZWQoKS0+Z2V0VHlwZSgpLmdldE1hbmdsZWROYW1lKCkuY19zdHIoKTsKKyAgICB9CisgICAg
cmV0dXJuICpOZXdQb29sVFN0cmluZyhuZXdOYW1lLmNfc3RyKCkpOworfQorCiAvLwogLy8gU3lt
Ym9sIHRhYmxlIGxldmVscyBhcmUgYSBtYXAgb2YgcG9pbnRlcnMgdG8gc3ltYm9scyB0aGF0IGhh
dmUgdG8gYmUgZGVsZXRlZC4KIC8vCkBAIC05Niw4ICsxMzQsMTAgQEAgVFN5bWJvbCAqVFN5bWJv
bFRhYmxlTGV2ZWw6OmZpbmQoY29uc3QgVFN0cmluZyAmbmFtZSkgY29uc3QKICAgICAgICAgcmV0
dXJuICgqaXQpLnNlY29uZDsKIH0KIAotVFN5bWJvbCAqVFN5bWJvbFRhYmxlOjpmaW5kKGNvbnN0
IFRTdHJpbmcgJm5hbWUsIGludCBzaGFkZXJWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgKmJ1aWx0SW4sIGJvb2wgKnNhbWVTY29wZSkgY29uc3QKK1RTeW1ib2wgKlRT
eW1ib2xUYWJsZTo6ZmluZChjb25zdCBUU3RyaW5nICZuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgKmJ1aWx0SW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAqc2FtZVNj
b3BlKSBjb25zdAogewogICAgIGludCBsZXZlbCA9IGN1cnJlbnRMZXZlbCgpOwogICAgIFRTeW1i
b2wgKnN5bWJvbDsKQEAgLTExMiw4ICsxNTIsNyBAQCBUU3ltYm9sICpUU3ltYm9sVGFibGU6OmZp
bmQoY29uc3QgVFN0cmluZyAmbmFtZSwgaW50IHNoYWRlclZlcnNpb24sCiAgICAgICAgICAgICBs
ZXZlbC0tOwogCiAgICAgICAgIHN5bWJvbCA9IHRhYmxlW2xldmVsXS0+ZmluZChuYW1lKTsKLSAg
ICB9Ci0gICAgd2hpbGUgKHN5bWJvbCA9PSAwICYmIC0tbGV2ZWwgPj0gMCk7CisgICAgfSB3aGls
ZSAoc3ltYm9sID09IDAgJiYgLS1sZXZlbCA+PSAwKTsKIAogICAgIGlmIChidWlsdEluKQogICAg
ICAgICAqYnVpbHRJbiA9IChsZXZlbCA8PSBMQVNUX0JVSUxUSU5fTEVWRUwpOwpAQCAtMTIzLDgg
KzE2MiwxMyBAQCBUU3ltYm9sICpUU3ltYm9sVGFibGU6OmZpbmQoY29uc3QgVFN0cmluZyAmbmFt
ZSwgaW50IHNoYWRlclZlcnNpb24sCiAgICAgcmV0dXJuIHN5bWJvbDsKIH0KIAotVFN5bWJvbCAq
VFN5bWJvbFRhYmxlOjpmaW5kQnVpbHRJbigKLSAgICBjb25zdCBUU3RyaW5nICZuYW1lLCBpbnQg
c2hhZGVyVmVyc2lvbikgY29uc3QKK1RTeW1ib2wgKlRTeW1ib2xUYWJsZTo6ZmluZEdsb2JhbChj
b25zdCBUU3RyaW5nICZuYW1lKSBjb25zdAoreworICAgIEFTU0VSVCh0YWJsZS5zaXplKCkgPiBH
TE9CQUxfTEVWRUwpOworICAgIHJldHVybiB0YWJsZVtHTE9CQUxfTEVWRUxdLT5maW5kKG5hbWUp
OworfQorCitUU3ltYm9sICpUU3ltYm9sVGFibGU6OmZpbmRCdWlsdEluKGNvbnN0IFRTdHJpbmcg
Jm5hbWUsIGludCBzaGFkZXJWZXJzaW9uKSBjb25zdAogewogICAgIGZvciAoaW50IGxldmVsID0g
TEFTVF9CVUlMVElOX0xFVkVMOyBsZXZlbCA+PSAwOyBsZXZlbC0tKQogICAgIHsKQEAgLTE1NSw3
ICsxOTksOCBAQCBib29sIElzR2VuVHlwZShjb25zdCBUVHlwZSAqdHlwZSkKICAgICBpZiAodHlw
ZSkKICAgICB7CiAgICAgICAgIFRCYXNpY1R5cGUgYmFzaWNUeXBlID0gdHlwZS0+Z2V0QmFzaWNU
eXBlKCk7Ci0gICAgICAgIHJldHVybiBiYXNpY1R5cGUgPT0gRWJ0R2VuVHlwZSB8fCBiYXNpY1R5
cGUgPT0gRWJ0R2VuSVR5cGUgfHwgYmFzaWNUeXBlID09IEVidEdlblVUeXBlIHx8IGJhc2ljVHlw
ZSA9PSBFYnRHZW5CVHlwZTsKKyAgICAgICAgcmV0dXJuIGJhc2ljVHlwZSA9PSBFYnRHZW5UeXBl
IHx8IGJhc2ljVHlwZSA9PSBFYnRHZW5JVHlwZSB8fCBiYXNpY1R5cGUgPT0gRWJ0R2VuVVR5cGUg
fHwKKyAgICAgICAgICAgICAgIGJhc2ljVHlwZSA9PSBFYnRHZW5CVHlwZTsKICAgICB9CiAKICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0xNjYsNyArMjExLDggQEAgYm9vbCBJc1ZlY1R5cGUoY29uc3Qg
VFR5cGUgKnR5cGUpCiAgICAgaWYgKHR5cGUpCiAgICAgewogICAgICAgICBUQmFzaWNUeXBlIGJh
c2ljVHlwZSA9IHR5cGUtPmdldEJhc2ljVHlwZSgpOwotICAgICAgICByZXR1cm4gYmFzaWNUeXBl
ID09IEVidFZlYyB8fCBiYXNpY1R5cGUgPT0gRWJ0SVZlYyB8fCBiYXNpY1R5cGUgPT0gRWJ0VVZl
YyB8fCBiYXNpY1R5cGUgPT0gRWJ0QlZlYzsKKyAgICAgICAgcmV0dXJuIGJhc2ljVHlwZSA9PSBF
YnRWZWMgfHwgYmFzaWNUeXBlID09IEVidElWZWMgfHwgYmFzaWNUeXBlID09IEVidFVWZWMgfHwK
KyAgICAgICAgICAgICAgIGJhc2ljVHlwZSA9PSBFYnRCVmVjOwogICAgIH0KIAogICAgIHJldHVy
biBmYWxzZTsKQEAgLTE4MywxMyArMjI5LDE5IEBAIGNvbnN0IFRUeXBlICpTcGVjaWZpY1R5cGUo
Y29uc3QgVFR5cGUgKnR5cGUsIGludCBzaXplKQogCiAgICAgQVNTRVJUKCFJc1ZlY1R5cGUodHlw
ZSkpOwogCi0gICAgc3dpdGNoKHR5cGUtPmdldEJhc2ljVHlwZSgpKQorICAgIHN3aXRjaCAodHlw
ZS0+Z2V0QmFzaWNUeXBlKCkpCiAgICAgewotICAgICAgY2FzZSBFYnRHZW5UeXBlOiAgcmV0dXJu
IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc2l6
ZSkpOwotICAgICAgY2FzZSBFYnRHZW5JVHlwZTogcmV0dXJuIFRDYWNoZTo6Z2V0VHlwZShFYnRJ
bnQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNpemUpKTsKLSAgICAgIGNhc2UgRWJ0R2Vu
VVR5cGU6IHJldHVybiBUQ2FjaGU6OmdldFR5cGUoRWJ0VUludCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgY2hhcj4oc2l6ZSkpOwotICAgICAgY2FzZSBFYnRHZW5CVHlwZTogcmV0dXJuIFRDYWNoZTo6
Z2V0VHlwZShFYnRCb29sLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzaXplKSk7Ci0gICAg
ICBkZWZhdWx0OiByZXR1cm4gdHlwZTsKKyAgICAgICAgY2FzZSBFYnRHZW5UeXBlOgorICAgICAg
ICAgICAgcmV0dXJuIFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgdHlwZS0+Z2V0UXVhbGlmaWVy
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXI+KHNpemUpKTsKKyAgICAgICAgY2FzZSBFYnRHZW5JVHlwZToKKyAgICAgICAgICAg
IHJldHVybiBUQ2FjaGU6OmdldFR5cGUoRWJ0SW50LCB0eXBlLT5nZXRRdWFsaWZpZXIoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc2l6ZSkpOworICAgICAgICBjYXNlIEVidEdlblVUeXBl
OgorICAgICAgICAgICAgcmV0dXJuIFRDYWNoZTo6Z2V0VHlwZShFYnRVSW50LCB0eXBlLT5nZXRR
dWFsaWZpZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc2l6ZSkpOworICAgICAgICBj
YXNlIEVidEdlbkJUeXBlOgorICAgICAgICAgICAgcmV0dXJuIFRDYWNoZTo6Z2V0VHlwZShFYnRC
b29sLCB0eXBlLT5nZXRRdWFsaWZpZXIoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc2l6
ZSkpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHR5cGU7CiAgICAgfQog
fQogCkBAIC0yMDQsNjcgKzI1NiwxNDggQEAgY29uc3QgVFR5cGUgKlZlY3RvclR5cGUoY29uc3Qg
VFR5cGUgKnR5cGUsIGludCBzaXplKQogCiAgICAgQVNTRVJUKCFJc0dlblR5cGUodHlwZSkpOwog
Ci0gICAgc3dpdGNoKHR5cGUtPmdldEJhc2ljVHlwZSgpKQorICAgIHN3aXRjaCAodHlwZS0+Z2V0
QmFzaWNUeXBlKCkpCiAgICAgewotICAgICAgY2FzZSBFYnRWZWM6ICByZXR1cm4gVENhY2hlOjpn
ZXRUeXBlKEVidEZsb2F0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihzaXplKSk7Ci0gICAg
ICBjYXNlIEVidElWZWM6IHJldHVybiBUQ2FjaGU6OmdldFR5cGUoRWJ0SW50LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyPihzaXplKSk7Ci0gICAgICBjYXNlIEVidFVWZWM6IHJldHVybiBUQ2Fj
aGU6OmdldFR5cGUoRWJ0VUludCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oc2l6ZSkpOwot
ICAgICAgY2FzZSBFYnRCVmVjOiByZXR1cm4gVENhY2hlOjpnZXRUeXBlKEVidEJvb2wsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGNoYXI+KHNpemUpKTsKLSAgICAgIGRlZmF1bHQ6IHJldHVybiB0eXBl
OworICAgICAgICBjYXNlIEVidFZlYzoKKyAgICAgICAgICAgIHJldHVybiBUQ2FjaGU6OmdldFR5
cGUoRWJ0RmxvYXQsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNpemUpKTsKKyAgICAgICAg
Y2FzZSBFYnRJVmVjOgorICAgICAgICAgICAgcmV0dXJuIFRDYWNoZTo6Z2V0VHlwZShFYnRJbnQs
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHNpemUpKTsKKyAgICAgICAgY2FzZSBFYnRVVmVj
OgorICAgICAgICAgICAgcmV0dXJuIFRDYWNoZTo6Z2V0VHlwZShFYnRVSW50LCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBjaGFyPihzaXplKSk7CisgICAgICAgIGNhc2UgRWJ0QlZlYzoKKyAgICAgICAg
ICAgIHJldHVybiBUQ2FjaGU6OmdldFR5cGUoRWJ0Qm9vbCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
Y2hhcj4oc2l6ZSkpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHR5cGU7
CiAgICAgfQogfQogCi12b2lkIFRTeW1ib2xUYWJsZTo6aW5zZXJ0QnVpbHRJbihFU3ltYm9sTGV2
ZWwgbGV2ZWwsIFRPcGVyYXRvciBvcCwgY29uc3QgY2hhciAqZXh0LCBjb25zdCBUVHlwZSAqcnZh
bHVlLCBjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFR5cGUgKnB0eXBlMSwgY29uc3QgVFR5cGUgKnB0eXBlMiwgY29uc3QgVFR5cGUgKnB0
eXBlMywgY29uc3QgVFR5cGUgKnB0eXBlNCwgY29uc3QgVFR5cGUgKnB0eXBlNSkKK3ZvaWQgVFN5
bWJvbFRhYmxlOjppbnNlcnRCdWlsdEluKEVTeW1ib2xMZXZlbCBsZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRPcGVyYXRvciBvcCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRUeXBlICpydmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFR5cGUgKnB0eXBlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRUeXBlICpwdHlwZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUVHlwZSAqcHR5cGUzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFR5cGUgKnB0eXBlNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRU
eXBlICpwdHlwZTUpCiB7CiAgICAgaWYgKHB0eXBlMS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0R1Nh
bXBsZXIyRCkKICAgICB7Ci0gICAgICAgIGluc2VydFVubWFuZ2xlZEJ1aWx0SW4obmFtZSk7Cisg
ICAgICAgIGluc2VydFVubWFuZ2xlZEJ1aWx0SW5OYW1lKG5hbWUsIGxldmVsKTsKICAgICAgICAg
Ym9vbCBndmVjNCA9IChydmFsdWUtPmdldEJhc2ljVHlwZSgpID09IEVidEdWZWM0KTsKLSAgICAg
ICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgZ3ZlYzQgPyBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQs
IDQpIDogcnZhbHVlLCBuYW1lLCBUQ2FjaGU6OmdldFR5cGUoRWJ0U2FtcGxlcjJEKSwgcHR5cGUy
LCBwdHlwZTMsIHB0eXBlNCwgcHR5cGU1KTsKLSAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwg
Z3ZlYzQgPyBUQ2FjaGU6OmdldFR5cGUoRWJ0SW50LCA0KSA6IHJ2YWx1ZSwgbmFtZSwgVENhY2hl
OjpnZXRUeXBlKEVidElTYW1wbGVyMkQpLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUp
OwotICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBndmVjNCA/IFRDYWNoZTo6Z2V0VHlwZShF
YnRVSW50LCA0KSA6IHJ2YWx1ZSwgbmFtZSwgVENhY2hlOjpnZXRUeXBlKEVidFVTYW1wbGVyMkQp
LCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOworICAgICAgICBpbnNlcnRCdWlsdElu
KGxldmVsLCBndmVjNCA/IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwgNCkgOiBydmFsdWUsIG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgVENhY2hlOjpnZXRUeXBlKEVidFNhbXBsZXIyRCks
IHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7CisgICAgICAgIGluc2VydEJ1aWx0SW4o
bGV2ZWwsIGd2ZWM0ID8gVENhY2hlOjpnZXRUeXBlKEVidEludCwgNCkgOiBydmFsdWUsIG5hbWUs
CisgICAgICAgICAgICAgICAgICAgICAgVENhY2hlOjpnZXRUeXBlKEVidElTYW1wbGVyMkQpLCBw
dHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOworICAgICAgICBpbnNlcnRCdWlsdEluKGxl
dmVsLCBndmVjNCA/IFRDYWNoZTo6Z2V0VHlwZShFYnRVSW50LCA0KSA6IHJ2YWx1ZSwgbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICBUQ2FjaGU6OmdldFR5cGUoRWJ0VVNhbXBsZXIyRCksIHB0
eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7CiAgICAgfQogICAgIGVsc2UgaWYgKHB0eXBl
MS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0R1NhbXBsZXIzRCkKICAgICB7Ci0gICAgICAgIGluc2Vy
dFVubWFuZ2xlZEJ1aWx0SW4obmFtZSk7CisgICAgICAgIGluc2VydFVubWFuZ2xlZEJ1aWx0SW5O
YW1lKG5hbWUsIGxldmVsKTsKICAgICAgICAgYm9vbCBndmVjNCA9IChydmFsdWUtPmdldEJhc2lj
VHlwZSgpID09IEVidEdWZWM0KTsKLSAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgZ3ZlYzQg
PyBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIDQpIDogcnZhbHVlLCBuYW1lLCBUQ2FjaGU6Omdl
dFR5cGUoRWJ0U2FtcGxlcjNEKSwgcHR5cGUyLCBwdHlwZTMsIHB0eXBlNCwgcHR5cGU1KTsKLSAg
ICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgZ3ZlYzQgPyBUQ2FjaGU6OmdldFR5cGUoRWJ0SW50
LCA0KSA6IHJ2YWx1ZSwgbmFtZSwgVENhY2hlOjpnZXRUeXBlKEVidElTYW1wbGVyM0QpLCBwdHlw
ZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOwotICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVs
LCBndmVjNCA/IFRDYWNoZTo6Z2V0VHlwZShFYnRVSW50LCA0KSA6IHJ2YWx1ZSwgbmFtZSwgVENh
Y2hlOjpnZXRUeXBlKEVidFVTYW1wbGVyM0QpLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlw
ZTUpOworICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBndmVjNCA/IFRDYWNoZTo6Z2V0VHlw
ZShFYnRGbG9hdCwgNCkgOiBydmFsdWUsIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgVENh
Y2hlOjpnZXRUeXBlKEVidFNhbXBsZXIzRCksIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBl
NSk7CisgICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIGd2ZWM0ID8gVENhY2hlOjpnZXRUeXBl
KEVidEludCwgNCkgOiBydmFsdWUsIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgVENhY2hl
OjpnZXRUeXBlKEVidElTYW1wbGVyM0QpLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUp
OworICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBndmVjNCA/IFRDYWNoZTo6Z2V0VHlwZShF
YnRVSW50LCA0KSA6IHJ2YWx1ZSwgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBUQ2FjaGU6
OmdldFR5cGUoRWJ0VVNhbXBsZXIzRCksIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7
CiAgICAgfQogICAgIGVsc2UgaWYgKHB0eXBlMS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0R1NhbXBs
ZXJDdWJlKQogICAgIHsKLSAgICAgICAgaW5zZXJ0VW5tYW5nbGVkQnVpbHRJbihuYW1lKTsKKyAg
ICAgICAgaW5zZXJ0VW5tYW5nbGVkQnVpbHRJbk5hbWUobmFtZSwgbGV2ZWwpOwogICAgICAgICBi
b29sIGd2ZWM0ID0gKHJ2YWx1ZS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0R1ZlYzQpOwotICAgICAg
ICBpbnNlcnRCdWlsdEluKGxldmVsLCBndmVjNCA/IFRDYWNoZTo6Z2V0VHlwZShFYnRGbG9hdCwg
NCkgOiBydmFsdWUsIG5hbWUsIFRDYWNoZTo6Z2V0VHlwZShFYnRTYW1wbGVyQ3ViZSksIHB0eXBl
MiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7Ci0gICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWws
IGd2ZWM0ID8gVENhY2hlOjpnZXRUeXBlKEVidEludCwgNCkgOiBydmFsdWUsIG5hbWUsIFRDYWNo
ZTo6Z2V0VHlwZShFYnRJU2FtcGxlckN1YmUpLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlw
ZTUpOwotICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBndmVjNCA/IFRDYWNoZTo6Z2V0VHlw
ZShFYnRVSW50LCA0KSA6IHJ2YWx1ZSwgbmFtZSwgVENhY2hlOjpnZXRUeXBlKEVidFVTYW1wbGVy
Q3ViZSksIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7CisgICAgICAgIGluc2VydEJ1
aWx0SW4obGV2ZWwsIGd2ZWM0ID8gVENhY2hlOjpnZXRUeXBlKEVidEZsb2F0LCA0KSA6IHJ2YWx1
ZSwgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBUQ2FjaGU6OmdldFR5cGUoRWJ0U2FtcGxl
ckN1YmUpLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOworICAgICAgICBpbnNlcnRC
dWlsdEluKGxldmVsLCBndmVjNCA/IFRDYWNoZTo6Z2V0VHlwZShFYnRJbnQsIDQpIDogcnZhbHVl
LCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIFRDYWNoZTo6Z2V0VHlwZShFYnRJU2FtcGxl
ckN1YmUpLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOworICAgICAgICBpbnNlcnRC
dWlsdEluKGxldmVsLCBndmVjNCA/IFRDYWNoZTo6Z2V0VHlwZShFYnRVSW50LCA0KSA6IHJ2YWx1
ZSwgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBUQ2FjaGU6OmdldFR5cGUoRWJ0VVNhbXBs
ZXJDdWJlKSwgcHR5cGUyLCBwdHlwZTMsIHB0eXBlNCwgcHR5cGU1KTsKICAgICB9CiAgICAgZWxz
ZSBpZiAocHR5cGUxLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRHU2FtcGxlcjJEQXJyYXkpCiAgICAg
ewotICAgICAgICBpbnNlcnRVbm1hbmdsZWRCdWlsdEluKG5hbWUpOworICAgICAgICBpbnNlcnRV
bm1hbmdsZWRCdWlsdEluTmFtZShuYW1lLCBsZXZlbCk7CiAgICAgICAgIGJvb2wgZ3ZlYzQgPSAo
cnZhbHVlLT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRHVmVjNCk7Ci0gICAgICAgIGluc2VydEJ1aWx0
SW4obGV2ZWwsIGd2ZWM0ID8gVENhY2hlOjpnZXRUeXBlKEVidEZsb2F0LCA0KSA6IHJ2YWx1ZSwg
bmFtZSwgVENhY2hlOjpnZXRUeXBlKEVidFNhbXBsZXIyREFycmF5KSwgcHR5cGUyLCBwdHlwZTMs
IHB0eXBlNCwgcHR5cGU1KTsKLSAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgZ3ZlYzQgPyBU
Q2FjaGU6OmdldFR5cGUoRWJ0SW50LCA0KSA6IHJ2YWx1ZSwgbmFtZSwgVENhY2hlOjpnZXRUeXBl
KEVidElTYW1wbGVyMkRBcnJheSksIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7Ci0g
ICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIGd2ZWM0ID8gVENhY2hlOjpnZXRUeXBlKEVidFVJ
bnQsIDQpIDogcnZhbHVlLCBuYW1lLCBUQ2FjaGU6OmdldFR5cGUoRWJ0VVNhbXBsZXIyREFycmF5
KSwgcHR5cGUyLCBwdHlwZTMsIHB0eXBlNCwgcHR5cGU1KTsKKyAgICAgICAgaW5zZXJ0QnVpbHRJ
bihsZXZlbCwgZ3ZlYzQgPyBUQ2FjaGU6OmdldFR5cGUoRWJ0RmxvYXQsIDQpIDogcnZhbHVlLCBu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgIFRDYWNoZTo6Z2V0VHlwZShFYnRTYW1wbGVyMkRB
cnJheSksIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7CisgICAgICAgIGluc2VydEJ1
aWx0SW4obGV2ZWwsIGd2ZWM0ID8gVENhY2hlOjpnZXRUeXBlKEVidEludCwgNCkgOiBydmFsdWUs
IG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgVENhY2hlOjpnZXRUeXBlKEVidElTYW1wbGVy
MkRBcnJheSksIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7CisgICAgICAgIGluc2Vy
dEJ1aWx0SW4obGV2ZWwsIGd2ZWM0ID8gVENhY2hlOjpnZXRUeXBlKEVidFVJbnQsIDQpIDogcnZh
bHVlLCBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIFRDYWNoZTo6Z2V0VHlwZShFYnRVU2Ft
cGxlcjJEQXJyYXkpLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOwogICAgIH0KLSAg
ICBlbHNlIGlmIChJc0dlblR5cGUocnZhbHVlKSB8fCBJc0dlblR5cGUocHR5cGUxKSB8fCBJc0dl
blR5cGUocHR5cGUyKSB8fCBJc0dlblR5cGUocHR5cGUzKSkKKyAgICBlbHNlIGlmIChwdHlwZTEt
PmdldEJhc2ljVHlwZSgpID09IEVidEdTYW1wbGVyMkRNUykKICAgICB7Ci0gICAgICAgIEFTU0VS
VCghcHR5cGU0ICYmICFwdHlwZTUpOwotICAgICAgICBpbnNlcnRVbm1hbmdsZWRCdWlsdEluKG5h
bWUpOwotICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBvcCwgZXh0LCBTcGVjaWZpY1R5cGUo
cnZhbHVlLCAxKSwgbmFtZSwgU3BlY2lmaWNUeXBlKHB0eXBlMSwgMSksIFNwZWNpZmljVHlwZShw
dHlwZTIsIDEpLCBTcGVjaWZpY1R5cGUocHR5cGUzLCAxKSk7Ci0gICAgICAgIGluc2VydEJ1aWx0
SW4obGV2ZWwsIG9wLCBleHQsIFNwZWNpZmljVHlwZShydmFsdWUsIDIpLCBuYW1lLCBTcGVjaWZp
Y1R5cGUocHR5cGUxLCAyKSwgU3BlY2lmaWNUeXBlKHB0eXBlMiwgMiksIFNwZWNpZmljVHlwZShw
dHlwZTMsIDIpKTsKLSAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgb3AsIGV4dCwgU3BlY2lm
aWNUeXBlKHJ2YWx1ZSwgMyksIG5hbWUsIFNwZWNpZmljVHlwZShwdHlwZTEsIDMpLCBTcGVjaWZp
Y1R5cGUocHR5cGUyLCAzKSwgU3BlY2lmaWNUeXBlKHB0eXBlMywgMykpOwotICAgICAgICBpbnNl
cnRCdWlsdEluKGxldmVsLCBvcCwgZXh0LCBTcGVjaWZpY1R5cGUocnZhbHVlLCA0KSwgbmFtZSwg
U3BlY2lmaWNUeXBlKHB0eXBlMSwgNCksIFNwZWNpZmljVHlwZShwdHlwZTIsIDQpLCBTcGVjaWZp
Y1R5cGUocHR5cGUzLCA0KSk7CisgICAgICAgIGluc2VydFVubWFuZ2xlZEJ1aWx0SW5OYW1lKG5h
bWUsIGxldmVsKTsKKyAgICAgICAgYm9vbCBndmVjNCA9IChydmFsdWUtPmdldEJhc2ljVHlwZSgp
ID09IEVidEdWZWM0KTsKKyAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgZ3ZlYzQgPyBUQ2Fj
aGU6OmdldFR5cGUoRWJ0RmxvYXQsIDQpIDogcnZhbHVlLCBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgIFRDYWNoZTo6Z2V0VHlwZShFYnRTYW1wbGVyMkRNUyksIHB0eXBlMiwgcHR5cGUzLCBw
dHlwZTQsIHB0eXBlNSk7CisgICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIGd2ZWM0ID8gVENh
Y2hlOjpnZXRUeXBlKEVidEludCwgNCkgOiBydmFsdWUsIG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgVENhY2hlOjpnZXRUeXBlKEVidElTYW1wbGVyMkRNUyksIHB0eXBlMiwgcHR5cGUzLCBw
dHlwZTQsIHB0eXBlNSk7CisgICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIGd2ZWM0ID8gVENh
Y2hlOjpnZXRUeXBlKEVidFVJbnQsIDQpIDogcnZhbHVlLCBuYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgIFRDYWNoZTo6Z2V0VHlwZShFYnRVU2FtcGxlcjJETVMpLCBwdHlwZTIsIHB0eXBlMywg
cHR5cGU0LCBwdHlwZTUpOworICAgIH0KKyAgICBlbHNlIGlmIChJc0dJbWFnZShwdHlwZTEtPmdl
dEJhc2ljVHlwZSgpKSkKKyAgICB7CisgICAgICAgIGluc2VydFVubWFuZ2xlZEJ1aWx0SW5OYW1l
KG5hbWUsIGxldmVsKTsKKworICAgICAgICBjb25zdCBUVHlwZSAqZmxvYXRUeXBlICAgID0gVENh
Y2hlOjpnZXRUeXBlKEVidEZsb2F0LCA0KTsKKyAgICAgICAgY29uc3QgVFR5cGUgKmludFR5cGUg
ICAgICA9IFRDYWNoZTo6Z2V0VHlwZShFYnRJbnQsIDQpOworICAgICAgICBjb25zdCBUVHlwZSAq
dW5zaWduZWRUeXBlID0gVENhY2hlOjpnZXRUeXBlKEVidFVJbnQsIDQpOworCisgICAgICAgIGNv
bnN0IFRUeXBlICpmbG9hdEltYWdlID0KKyAgICAgICAgICAgIFRDYWNoZTo6Z2V0VHlwZShjb252
ZXJ0R0ltYWdlVG9GbG9hdEltYWdlKHB0eXBlMS0+Z2V0QmFzaWNUeXBlKCkpKTsKKyAgICAgICAg
Y29uc3QgVFR5cGUgKmludEltYWdlID0gVENhY2hlOjpnZXRUeXBlKGNvbnZlcnRHSW1hZ2VUb0lu
dEltYWdlKHB0eXBlMS0+Z2V0QmFzaWNUeXBlKCkpKTsKKyAgICAgICAgY29uc3QgVFR5cGUgKnVu
c2lnbmVkSW1hZ2UgPQorICAgICAgICAgICAgVENhY2hlOjpnZXRUeXBlKGNvbnZlcnRHSW1hZ2VU
b1Vuc2lnbmVkSW1hZ2UocHR5cGUxLT5nZXRCYXNpY1R5cGUoKSkpOworCisgICAgICAgIC8vIEdM
U0wgRVMgMy4xMCwgUmV2aXNpb24gNCwgOC4xMiBJbWFnZSBGdW5jdGlvbnMKKyAgICAgICAgaWYg
KHJ2YWx1ZS0+Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0R1ZlYzQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIC8vIGltYWdlTG9hZAorICAgICAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgZmxvYXRU
eXBlLCBuYW1lLCBmbG9hdEltYWdlLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOwor
ICAgICAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgaW50VHlwZSwgbmFtZSwgaW50SW1hZ2Us
IHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7CisgICAgICAgICAgICBpbnNlcnRCdWls
dEluKGxldmVsLCB1bnNpZ25lZFR5cGUsIG5hbWUsIHVuc2lnbmVkSW1hZ2UsIHB0eXBlMiwgcHR5
cGUzLCBwdHlwZTQsIHB0eXBlNSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocnZhbHVl
LT5nZXRCYXNpY1R5cGUoKSA9PSBFYnRWb2lkKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBp
bWFnZVN0b3JlCisgICAgICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBydmFsdWUsIG5hbWUs
IGZsb2F0SW1hZ2UsIHB0eXBlMiwgZmxvYXRUeXBlLCBwdHlwZTQsIHB0eXBlNSk7CisgICAgICAg
ICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBydmFsdWUsIG5hbWUsIGludEltYWdlLCBwdHlwZTIs
IGludFR5cGUsIHB0eXBlNCwgcHR5cGU1KTsKKyAgICAgICAgICAgIGluc2VydEJ1aWx0SW4obGV2
ZWwsIHJ2YWx1ZSwgbmFtZSwgdW5zaWduZWRJbWFnZSwgcHR5cGUyLCB1bnNpZ25lZFR5cGUsIHB0
eXBlNCwgcHR5cGU1KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAg
ICAgICAgIC8vIGltYWdlU2l6ZQorICAgICAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgcnZh
bHVlLCBuYW1lLCBmbG9hdEltYWdlLCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOwor
ICAgICAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgcnZhbHVlLCBuYW1lLCBpbnRJbWFnZSwg
cHR5cGUyLCBwdHlwZTMsIHB0eXBlNCwgcHR5cGU1KTsKKyAgICAgICAgICAgIGluc2VydEJ1aWx0
SW4obGV2ZWwsIHJ2YWx1ZSwgbmFtZSwgdW5zaWduZWRJbWFnZSwgcHR5cGUyLCBwdHlwZTMsIHB0
eXBlNCwgcHR5cGU1KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChJc0dlblR5cGUo
cnZhbHVlKSB8fCBJc0dlblR5cGUocHR5cGUxKSB8fCBJc0dlblR5cGUocHR5cGUyKSB8fCBJc0dl
blR5cGUocHR5cGUzKSB8fAorICAgICAgICAgICAgIElzR2VuVHlwZShwdHlwZTQpKQorICAgIHsK
KyAgICAgICAgQVNTRVJUKCFwdHlwZTUpOworICAgICAgICBpbnNlcnRVbm1hbmdsZWRCdWlsdElu
TmFtZShuYW1lLCBsZXZlbCk7CisgICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIG9wLCBleHQs
IFNwZWNpZmljVHlwZShydmFsdWUsIDEpLCBuYW1lLCBTcGVjaWZpY1R5cGUocHR5cGUxLCAxKSwK
KyAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpY1R5cGUocHR5cGUyLCAxKSwgU3BlY2lmaWNU
eXBlKHB0eXBlMywgMSksIFNwZWNpZmljVHlwZShwdHlwZTQsIDEpKTsKKyAgICAgICAgaW5zZXJ0
QnVpbHRJbihsZXZlbCwgb3AsIGV4dCwgU3BlY2lmaWNUeXBlKHJ2YWx1ZSwgMiksIG5hbWUsIFNw
ZWNpZmljVHlwZShwdHlwZTEsIDIpLAorICAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmljVHlw
ZShwdHlwZTIsIDIpLCBTcGVjaWZpY1R5cGUocHR5cGUzLCAyKSwgU3BlY2lmaWNUeXBlKHB0eXBl
NCwgMikpOworICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBvcCwgZXh0LCBTcGVjaWZpY1R5
cGUocnZhbHVlLCAzKSwgbmFtZSwgU3BlY2lmaWNUeXBlKHB0eXBlMSwgMyksCisgICAgICAgICAg
ICAgICAgICAgICAgU3BlY2lmaWNUeXBlKHB0eXBlMiwgMyksIFNwZWNpZmljVHlwZShwdHlwZTMs
IDMpLCBTcGVjaWZpY1R5cGUocHR5cGU0LCAzKSk7CisgICAgICAgIGluc2VydEJ1aWx0SW4obGV2
ZWwsIG9wLCBleHQsIFNwZWNpZmljVHlwZShydmFsdWUsIDQpLCBuYW1lLCBTcGVjaWZpY1R5cGUo
cHR5cGUxLCA0KSwKKyAgICAgICAgICAgICAgICAgICAgICBTcGVjaWZpY1R5cGUocHR5cGUyLCA0
KSwgU3BlY2lmaWNUeXBlKHB0eXBlMywgNCksIFNwZWNpZmljVHlwZShwdHlwZTQsIDQpKTsKICAg
ICB9CiAgICAgZWxzZSBpZiAoSXNWZWNUeXBlKHJ2YWx1ZSkgfHwgSXNWZWNUeXBlKHB0eXBlMSkg
fHwgSXNWZWNUeXBlKHB0eXBlMikgfHwgSXNWZWNUeXBlKHB0eXBlMykpCiAgICAgewogICAgICAg
ICBBU1NFUlQoIXB0eXBlNCAmJiAhcHR5cGU1KTsKLSAgICAgICAgaW5zZXJ0VW5tYW5nbGVkQnVp
bHRJbihuYW1lKTsKLSAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgb3AsIGV4dCwgVmVjdG9y
VHlwZShydmFsdWUsIDIpLCBuYW1lLCBWZWN0b3JUeXBlKHB0eXBlMSwgMiksIFZlY3RvclR5cGUo
cHR5cGUyLCAyKSwgVmVjdG9yVHlwZShwdHlwZTMsIDIpKTsKLSAgICAgICAgaW5zZXJ0QnVpbHRJ
bihsZXZlbCwgb3AsIGV4dCwgVmVjdG9yVHlwZShydmFsdWUsIDMpLCBuYW1lLCBWZWN0b3JUeXBl
KHB0eXBlMSwgMyksIFZlY3RvclR5cGUocHR5cGUyLCAzKSwgVmVjdG9yVHlwZShwdHlwZTMsIDMp
KTsKLSAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgb3AsIGV4dCwgVmVjdG9yVHlwZShydmFs
dWUsIDQpLCBuYW1lLCBWZWN0b3JUeXBlKHB0eXBlMSwgNCksIFZlY3RvclR5cGUocHR5cGUyLCA0
KSwgVmVjdG9yVHlwZShwdHlwZTMsIDQpKTsKKyAgICAgICAgaW5zZXJ0VW5tYW5nbGVkQnVpbHRJ
bk5hbWUobmFtZSwgbGV2ZWwpOworICAgICAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBvcCwgZXh0
LCBWZWN0b3JUeXBlKHJ2YWx1ZSwgMiksIG5hbWUsIFZlY3RvclR5cGUocHR5cGUxLCAyKSwKKyAg
ICAgICAgICAgICAgICAgICAgICBWZWN0b3JUeXBlKHB0eXBlMiwgMiksIFZlY3RvclR5cGUocHR5
cGUzLCAyKSk7CisgICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIG9wLCBleHQsIFZlY3RvclR5
cGUocnZhbHVlLCAzKSwgbmFtZSwgVmVjdG9yVHlwZShwdHlwZTEsIDMpLAorICAgICAgICAgICAg
ICAgICAgICAgIFZlY3RvclR5cGUocHR5cGUyLCAzKSwgVmVjdG9yVHlwZShwdHlwZTMsIDMpKTsK
KyAgICAgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgb3AsIGV4dCwgVmVjdG9yVHlwZShydmFsdWUs
IDQpLCBuYW1lLCBWZWN0b3JUeXBlKHB0eXBlMSwgNCksCisgICAgICAgICAgICAgICAgICAgICAg
VmVjdG9yVHlwZShwdHlwZTIsIDQpLCBWZWN0b3JUeXBlKHB0eXBlMywgNCkpOwogICAgIH0KICAg
ICBlbHNlCiAgICAgewpAQCAtMjkyLDExICs0MjUsNTAgQEAgdm9pZCBUU3ltYm9sVGFibGU6Omlu
c2VydEJ1aWx0SW4oRVN5bWJvbExldmVsIGxldmVsLCBUT3BlcmF0b3Igb3AsIGNvbnN0IGNoYXIg
KmUKICAgICAgICAgICAgIGZ1bmN0aW9uLT5hZGRQYXJhbWV0ZXIoVENvbnN0UGFyYW1ldGVyKHB0
eXBlNSkpOwogICAgICAgICB9CiAKLSAgICAgICAgQVNTRVJUKGhhc1VubWFuZ2xlZEJ1aWx0SW4o
bmFtZSkpOworICAgICAgICBBU1NFUlQoaGFzVW5tYW5nbGVkQnVpbHRJbkF0TGV2ZWwobmFtZSwg
bGV2ZWwpKTsKICAgICAgICAgaW5zZXJ0KGxldmVsLCBmdW5jdGlvbik7CiAgICAgfQogfQogCit2
b2lkIFRTeW1ib2xUYWJsZTo6aW5zZXJ0QnVpbHRJbk9wKEVTeW1ib2xMZXZlbCBsZXZlbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE9wZXJhdG9yIG9wLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcnZhbHVlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcHR5cGUxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcHR5cGUyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcHR5cGUzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcHR5cGU0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcHR5cGU1KQoreworICAgIGNv
bnN0IGNoYXIgKm5hbWUgPSBHZXRPcGVyYXRvclN0cmluZyhvcCk7CisgICAgQVNTRVJUKHN0cmxl
bihuYW1lKSA+IDApOworICAgIGluc2VydFVubWFuZ2xlZEJ1aWx0SW5OYW1lKG5hbWUsIGxldmVs
KTsKKyAgICBpbnNlcnRCdWlsdEluKGxldmVsLCBvcCwgIiIsIHJ2YWx1ZSwgbmFtZSwgcHR5cGUx
LCBwdHlwZTIsIHB0eXBlMywgcHR5cGU0LCBwdHlwZTUpOworfQorCit2b2lkIFRTeW1ib2xUYWJs
ZTo6aW5zZXJ0QnVpbHRJbk9wKEVTeW1ib2xMZXZlbCBsZXZlbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVE9wZXJhdG9yIG9wLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRUeXBlICpydmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTUpCit7CisgICAgY29uc3QgY2hhciAqbmFtZSA9IEdl
dE9wZXJhdG9yU3RyaW5nKG9wKTsKKyAgICBpbnNlcnRVbm1hbmdsZWRCdWlsdEluTmFtZShuYW1l
LCBsZXZlbCk7CisgICAgaW5zZXJ0QnVpbHRJbihsZXZlbCwgb3AsIGV4dCwgcnZhbHVlLCBuYW1l
LCBwdHlwZTEsIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7Cit9CisKK3ZvaWQgVFN5
bWJvbFRhYmxlOjppbnNlcnRCdWlsdEluRnVuY3Rpb25Ob1BhcmFtZXRlcnMoRVN5bWJvbExldmVs
IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUT3BlcmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpydmFsdWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpCit7Cisg
ICAgaW5zZXJ0VW5tYW5nbGVkQnVpbHRJbk5hbWUobmFtZSwgbGV2ZWwpOworICAgIGluc2VydChs
ZXZlbCwgbmV3IFRGdW5jdGlvbihOZXdQb29sVFN0cmluZyhuYW1lKSwgcnZhbHVlLCBvcCkpOwor
fQorCiBUUHJlY2lzaW9uIFRTeW1ib2xUYWJsZTo6Z2V0RGVmYXVsdFByZWNpc2lvbihUQmFzaWNU
eXBlIHR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFTdXBwb3J0c1ByZWNpc2lvbih0eXBlKSkKQEAg
LTMwNiw3ICs0NzgsNyBAQCBUUHJlY2lzaW9uIFRTeW1ib2xUYWJsZTo6Z2V0RGVmYXVsdFByZWNp
c2lvbihUQmFzaWNUeXBlIHR5cGUpIGNvbnN0CiAgICAgVEJhc2ljVHlwZSBiYXNlVHlwZSA9ICh0
eXBlID09IEVidFVJbnQpID8gRWJ0SW50IDogdHlwZTsKIAogICAgIGludCBsZXZlbCA9IHN0YXRp
Y19jYXN0PGludD4ocHJlY2lzaW9uU3RhY2suc2l6ZSgpKSAtIDE7Ci0gICAgYXNzZXJ0KGxldmVs
ID49IDApOyAvLyBKdXN0IHRvIGJlIHNhZmUuIFNob3VsZCBub3QgaGFwcGVuLgorICAgIGFzc2Vy
dChsZXZlbCA+PSAwKTsgIC8vIEp1c3QgdG8gYmUgc2FmZS4gU2hvdWxkIG5vdCBoYXBwZW4uCiAg
ICAgLy8gSWYgd2UgZG9udCBmaW5kIGFueXRoaW5nIHdlIHJldHVybiB0aGlzLiBTb21lIHR5cGVz
IGRvbid0IGhhdmUgcHJlZGVmaW5lZCBkZWZhdWx0IHByZWNpc2lvbi4KICAgICBUUHJlY2lzaW9u
IHByZWMgPSBFYnBVbmRlZmluZWQ7CiAgICAgd2hpbGUgKGxldmVsID49IDApCkBAIC0zMjEsMyAr
NDkzLDQ0IEBAIFRQcmVjaXNpb24gVFN5bWJvbFRhYmxlOjpnZXREZWZhdWx0UHJlY2lzaW9uKFRC
YXNpY1R5cGUgdHlwZSkgY29uc3QKICAgICB9CiAgICAgcmV0dXJuIHByZWM7CiB9CisKK3ZvaWQg
VFN5bWJvbFRhYmxlOjppbnNlcnRVbm1hbmdsZWRCdWlsdEluTmFtZShjb25zdCBjaGFyICpuYW1l
LCBFU3ltYm9sTGV2ZWwgbGV2ZWwpCit7CisgICAgQVNTRVJUKGxldmVsID49IDAgJiYgbGV2ZWwg
PCBzdGF0aWNfY2FzdDxFU3ltYm9sTGV2ZWw+KHRhYmxlLnNpemUoKSkpOworICAgIHRhYmxlW2xl
dmVsXS0+aW5zZXJ0VW5tYW5nbGVkQnVpbHRJbk5hbWUoc3RkOjpzdHJpbmcobmFtZSkpOworfQor
Citib29sIFRTeW1ib2xUYWJsZTo6aGFzVW5tYW5nbGVkQnVpbHRJbkF0TGV2ZWwoY29uc3QgY2hh
ciAqbmFtZSwgRVN5bWJvbExldmVsIGxldmVsKQoreworICAgIEFTU0VSVChsZXZlbCA+PSAwICYm
IGxldmVsIDwgc3RhdGljX2Nhc3Q8RVN5bWJvbExldmVsPih0YWJsZS5zaXplKCkpKTsKKyAgICBy
ZXR1cm4gdGFibGVbbGV2ZWxdLT5oYXNVbm1hbmdsZWRCdWlsdEluKHN0ZDo6c3RyaW5nKG5hbWUp
KTsKK30KKworYm9vbCBUU3ltYm9sVGFibGU6Omhhc1VubWFuZ2xlZEJ1aWx0SW5Gb3JTaGFkZXJW
ZXJzaW9uKGNvbnN0IGNoYXIgKm5hbWUsIGludCBzaGFkZXJWZXJzaW9uKQoreworICAgIEFTU0VS
VChzdGF0aWNfY2FzdDxFU3ltYm9sTGV2ZWw+KHRhYmxlLnNpemUoKSkgPiBMQVNUX0JVSUxUSU5f
TEVWRUwpOworCisgICAgZm9yIChpbnQgbGV2ZWwgPSBMQVNUX0JVSUxUSU5fTEVWRUw7IGxldmVs
ID49IDA7IC0tbGV2ZWwpCisgICAgeworICAgICAgICBpZiAobGV2ZWwgPT0gRVNTTDNfMV9CVUlM
VElOUyAmJiBzaGFkZXJWZXJzaW9uICE9IDMxMCkKKyAgICAgICAgeworICAgICAgICAgICAgLS1s
ZXZlbDsKKyAgICAgICAgfQorICAgICAgICBpZiAobGV2ZWwgPT0gRVNTTDNfQlVJTFRJTlMgJiYg
c2hhZGVyVmVyc2lvbiA8IDMwMCkKKyAgICAgICAgeworICAgICAgICAgICAgLS1sZXZlbDsKKyAg
ICAgICAgfQorICAgICAgICBpZiAobGV2ZWwgPT0gRVNTTDFfQlVJTFRJTlMgJiYgc2hhZGVyVmVy
c2lvbiAhPSAxMDApCisgICAgICAgIHsKKyAgICAgICAgICAgIC0tbGV2ZWw7CisgICAgICAgIH0K
KworICAgICAgICBpZiAodGFibGVbbGV2ZWxdLT5oYXNVbm1hbmdsZWRCdWlsdEluKG5hbWUpKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvU3ltYm9sVGFibGUu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1N5bWJv
bFRhYmxlLmgKaW5kZXggNTFhODJmNzI0Y2EuLmMzNDg5NDMxNGI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1N5
bWJvbFRhYmxlLmgKQEAgLTE4LDcgKzE4LDcgQEAKIC8vICAgc28gdGhhdCBzeW1ib2wgdGFibGUg
bG9va3VwcyBhcmUgbmV2ZXIgYW1iaWd1b3VzLiAgVGhpcyBhbGxvd3MKIC8vICAgYSBzaW1wbGVy
IHN5bWJvbCB0YWJsZSBzdHJ1Y3R1cmUuCiAvLwotLy8gKiBQdXNoaW5nIGFuZCBwb3BwaW5nIG9m
IHNjb3BlLCBzbyBzeW1ib2wgdGFibGUgd2lsbCByZWFsbHkgYmUgYSBzdGFjayAKKy8vICogUHVz
aGluZyBhbmQgcG9wcGluZyBvZiBzY29wZSwgc28gc3ltYm9sIHRhYmxlIHdpbGwgcmVhbGx5IGJl
IGEgc3RhY2sKIC8vICAgb2Ygc3ltYm9sIHRhYmxlcy4gIFNlYXJjaGVkIGZyb20gdGhlIHRvcCwg
d2l0aCBuZXcgaW5zZXJ0cyBnb2luZyBpbnRvCiAvLyAgIHRoZSB0b3AuCiAvLwpAQCAtMzgsNiAr
MzgsMjUgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmgiCiAjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCiAKK25hbWVzcGFjZSBzaAor
eworCisvLyBFbmNhcHN1bGF0ZXMgYSB1bmlxdWUgaWQgZm9yIGEgc3ltYm9sLgorY2xhc3MgVFN5
bWJvbFVuaXF1ZUlkCit7CisgIHB1YmxpYzoKKyAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRF
KCk7CisgICAgVFN5bWJvbFVuaXF1ZUlkKCk7CisgICAgVFN5bWJvbFVuaXF1ZUlkKGNvbnN0IFRT
eW1ib2wgJnN5bWJvbCk7CisgICAgVFN5bWJvbFVuaXF1ZUlkKGNvbnN0IFRTeW1ib2xVbmlxdWVJ
ZCAmKSA9IGRlZmF1bHQ7CisgICAgVFN5bWJvbFVuaXF1ZUlkICZvcGVyYXRvcj0oY29uc3QgVFN5
bWJvbFVuaXF1ZUlkICYpID0gZGVmYXVsdDsKKworICAgIGludCBnZXQoKSBjb25zdDsKKworICBw
cml2YXRlOgorICAgIGludCBtSWQ7Cit9OworCiAvLyBTeW1ib2wgYmFzZSBjbGFzcy4gKENhbiBi
dWlsZCBmdW5jdGlvbnMgb3IgdmFyaWFibGVzIG91dCBvZiB0aGVzZS4uLikKIGNsYXNzIFRTeW1i
b2wgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKQEAgLTUwLDM0ICs2OSwxMyBAQCBjbGFzcyBUU3lt
Ym9sIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgIC8vIGRvbid0IGRlbGV0ZSBuYW1lLCBp
dCdzIGZyb20gdGhlIHBvb2wKICAgICB9CiAKLSAgICBjb25zdCBUU3RyaW5nICZnZXROYW1lKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiAqbmFtZTsKLSAgICB9Ci0gICAgdmlydHVhbCBj
b25zdCBUU3RyaW5nICZnZXRNYW5nbGVkTmFtZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gZ2V0TmFtZSgpOwotICAgIH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNGdW5jdGlvbigpIGNvbnN0
Ci0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHZpcnR1YWwgYm9vbCBp
c1ZhcmlhYmxlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0g
ICAgaW50IGdldFVuaXF1ZUlkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB1bmlxdWVJ
ZDsKLSAgICB9Ci0gICAgdm9pZCByZWxhdGVUb0V4dGVuc2lvbihjb25zdCBUU3RyaW5nICZleHQp
Ci0gICAgewotICAgICAgICBleHRlbnNpb24gPSBleHQ7Ci0gICAgfQotICAgIGNvbnN0IFRTdHJp
bmcgJmdldEV4dGVuc2lvbigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZXh0ZW5zaW9u
OwotICAgIH0KKyAgICBjb25zdCBUU3RyaW5nICZnZXROYW1lKCkgY29uc3QgeyByZXR1cm4gKm5h
bWU7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IFRTdHJpbmcgJmdldE1hbmdsZWROYW1lKCkgY29uc3Qg
eyByZXR1cm4gZ2V0TmFtZSgpOyB9CisgICAgdmlydHVhbCBib29sIGlzRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1ZhcmlhYmxlKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICBpbnQgZ2V0VW5pcXVlSWQoKSBjb25zdCB7IHJldHVybiB1
bmlxdWVJZDsgfQorICAgIHZvaWQgcmVsYXRlVG9FeHRlbnNpb24oY29uc3QgVFN0cmluZyAmZXh0
KSB7IGV4dGVuc2lvbiA9IGV4dDsgfQorICAgIGNvbnN0IFRTdHJpbmcgJmdldEV4dGVuc2lvbigp
IGNvbnN0IHsgcmV0dXJuIGV4dGVuc2lvbjsgfQogCiAgIHByaXZhdGU6CiAgICAgY29uc3QgaW50
IHVuaXF1ZUlkOwpAQCAtODYsNDEgKzg0LDI2IEBAIGNsYXNzIFRTeW1ib2wgOiBhbmdsZTo6Tm9u
Q29weWFibGUKIH07CiAKIC8vIFZhcmlhYmxlIGNsYXNzLCBtZWFuaW5nIGEgc3ltYm9sIHRoYXQn
cyBub3QgYSBmdW5jdGlvbi4KLS8vIAorLy8KIC8vIFRoZXJlIGNvdWxkIGJlIGEgc2VwYXJhdGUg
Y2xhc3MgaGVpcmFyY2h5IGZvciBDb25zdGFudCB2YXJpYWJsZXM7CiAvLyBPbmx5IG9uZSBvZiBp
bnQsIGJvb2wsIG9yIGZsb2F0LCAob3Igbm9uZSkgaXMgY29ycmVjdCBmb3IKIC8vIGFueSBwYXJ0
aWN1bGFyIHVzZSwgYnV0IGl0J3MgZWFzeSB0byBkbyB0aGlzIHdheSwgYW5kIGRvZXNuJ3QKIC8v
IHNlZW0gd29ydGggaGF2aW5nIHNlcGFyYXRlIGNsYXNzZXMsIGFuZCAiZ2V0Q29uc3QiIGNhbid0
IHNpbXBseSByZXR1cm4KLS8vIGRpZmZlcmVudCB2YWx1ZXMgZm9yIGRpZmZlcmVudCB0eXBlcyBw
b2x5bW9ycGhpY2FsbHksIHNvIHRoaXMgaXMgCisvLyBkaWZmZXJlbnQgdmFsdWVzIGZvciBkaWZm
ZXJlbnQgdHlwZXMgcG9seW1vcnBoaWNhbGx5LCBzbyB0aGlzIGlzCiAvLyBqdXN0IHNpbXBsZSBh
bmQgcHJhZ21hdGljLgogY2xhc3MgVFZhcmlhYmxlIDogcHVibGljIFRTeW1ib2wKIHsKICAgcHVi
bGljOgogICAgIFRWYXJpYWJsZShjb25zdCBUU3RyaW5nICpuYW1lLCBjb25zdCBUVHlwZSAmdCwg
Ym9vbCB1VCA9IGZhbHNlKQotICAgICAgICA6IFRTeW1ib2wobmFtZSksCi0gICAgICAgICAgdHlw
ZSh0KSwKLSAgICAgICAgICB1c2VyVHlwZSh1VCksCi0gICAgICAgICAgdW5pb25BcnJheSgwKQor
ICAgICAgICA6IFRTeW1ib2wobmFtZSksIHR5cGUodCksIHVzZXJUeXBlKHVUKSwgdW5pb25BcnJh
eSgwKQogICAgIHsKICAgICB9CiAgICAgflRWYXJpYWJsZSgpIG92ZXJyaWRlIHt9CiAgICAgYm9v
bCBpc1ZhcmlhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFRUeXBl
ICZnZXRUeXBlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0eXBlOwotICAgIH0KLSAgICBjb25z
dCBUVHlwZSAmZ2V0VHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdHlwZTsKLSAg
ICB9Ci0gICAgYm9vbCBpc1VzZXJUeXBlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB1
c2VyVHlwZTsKLSAgICB9Ci0gICAgdm9pZCBzZXRRdWFsaWZpZXIoVFF1YWxpZmllciBxdWFsaWZp
ZXIpCi0gICAgewotICAgICAgICB0eXBlLnNldFF1YWxpZmllcihxdWFsaWZpZXIpOwotICAgIH0K
KyAgICBUVHlwZSAmZ2V0VHlwZSgpIHsgcmV0dXJuIHR5cGU7IH0KKyAgICBjb25zdCBUVHlwZSAm
Z2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGU7IH0KKyAgICBib29sIGlzVXNlclR5cGUoKSBj
b25zdCB7IHJldHVybiB1c2VyVHlwZTsgfQorICAgIHZvaWQgc2V0UXVhbGlmaWVyKFRRdWFsaWZp
ZXIgcXVhbGlmaWVyKSB7IHR5cGUuc2V0UXVhbGlmaWVyKHF1YWxpZmllcik7IH0KIAogICAgIGNv
bnN0IFRDb25zdGFudFVuaW9uICpnZXRDb25zdFBvaW50ZXIoKSBjb25zdCB7IHJldHVybiB1bmlv
bkFycmF5OyB9CiAKQEAgLTEzNywyOSArMTIwLDEzIEBAIGNsYXNzIFRWYXJpYWJsZSA6IHB1Ymxp
YyBUU3ltYm9sCiAvLyBJbW11dGFibGUgdmVyc2lvbiBvZiBUUGFyYW1ldGVyLgogc3RydWN0IFRD
b25zdFBhcmFtZXRlcgogewotICAgIFRDb25zdFBhcmFtZXRlcigpCi0gICAgICAgIDogbmFtZShu
dWxscHRyKSwKLSAgICAgICAgICB0eXBlKG51bGxwdHIpCi0gICAgewotICAgIH0KLSAgICBleHBs
aWNpdCBUQ29uc3RQYXJhbWV0ZXIoY29uc3QgVFN0cmluZyAqbikKLSAgICAgICAgOiBuYW1lKG4p
LAotICAgICAgICAgIHR5cGUobnVsbHB0cikKLSAgICB7Ci0gICAgfQotICAgIGV4cGxpY2l0IFRD
b25zdFBhcmFtZXRlcihjb25zdCBUVHlwZSAqdCkKLSAgICAgICAgOiBuYW1lKG51bGxwdHIpLAot
ICAgICAgICAgIHR5cGUodCkKLSAgICB7Ci0gICAgfQotICAgIFRDb25zdFBhcmFtZXRlcihjb25z
dCBUU3RyaW5nICpuLCBjb25zdCBUVHlwZSAqdCkKLSAgICAgICAgOiBuYW1lKG4pLAotICAgICAg
ICAgIHR5cGUodCkKLSAgICB7Ci0gICAgfQorICAgIFRDb25zdFBhcmFtZXRlcigpIDogbmFtZShu
dWxscHRyKSwgdHlwZShudWxscHRyKSB7fQorICAgIGV4cGxpY2l0IFRDb25zdFBhcmFtZXRlcihj
b25zdCBUU3RyaW5nICpuKSA6IG5hbWUobiksIHR5cGUobnVsbHB0cikge30KKyAgICBleHBsaWNp
dCBUQ29uc3RQYXJhbWV0ZXIoY29uc3QgVFR5cGUgKnQpIDogbmFtZShudWxscHRyKSwgdHlwZSh0
KSB7fQorICAgIFRDb25zdFBhcmFtZXRlcihjb25zdCBUU3RyaW5nICpuLCBjb25zdCBUVHlwZSAq
dCkgOiBuYW1lKG4pLCB0eXBlKHQpIHt9CiAKICAgICAvLyBCb3RoIGNvbnN0cnVjdG9yIGFyZ3Vt
ZW50cyBtdXN0IGJlIGNvbnN0LgotICAgIFRDb25zdFBhcmFtZXRlcihUU3RyaW5nICpuLCBUVHlw
ZSAqdCkgPSBkZWxldGU7CisgICAgVENvbnN0UGFyYW1ldGVyKFRTdHJpbmcgKm4sIFRUeXBlICp0
KSAgICAgICA9IGRlbGV0ZTsKICAgICBUQ29uc3RQYXJhbWV0ZXIoY29uc3QgVFN0cmluZyAqbiwg
VFR5cGUgKnQpID0gZGVsZXRlOwogICAgIFRDb25zdFBhcmFtZXRlcihUU3RyaW5nICpuLCBjb25z
dCBUVHlwZSAqdCkgPSBkZWxldGU7CiAKQEAgLTE3Nyw5ICsxNDQsOSBAQCBzdHJ1Y3QgVFBhcmFt
ZXRlcgogICAgIFRDb25zdFBhcmFtZXRlciB0dXJuVG9Db25zdCgpCiAgICAgewogICAgICAgICBj
b25zdCBUU3RyaW5nICpjb25zdE5hbWUgPSBuYW1lOwotICAgICAgICBjb25zdCBUVHlwZSAqY29u
c3RUeXBlID0gdHlwZTsKLSAgICAgICAgbmFtZSA9IG51bGxwdHI7Ci0gICAgICAgIHR5cGUgPSBu
dWxscHRyOworICAgICAgICBjb25zdCBUVHlwZSAqY29uc3RUeXBlICAgPSB0eXBlOworICAgICAg
ICBuYW1lICAgICAgICAgICAgICAgICAgICAgPSBudWxscHRyOworICAgICAgICB0eXBlICAgICAg
ICAgICAgICAgICAgICAgPSBudWxscHRyOwogICAgICAgICByZXR1cm4gVENvbnN0UGFyYW1ldGVy
KGNvbnN0TmFtZSwgY29uc3RUeXBlKTsKICAgICB9CiAKQEAgLTE4Nyw3ICsxNTQsNyBAQCBzdHJ1
Y3QgVFBhcmFtZXRlcgogICAgIFRUeXBlICp0eXBlOwogfTsKIAotLy8gVGhlIGZ1bmN0aW9uIHN1
Yi1jbGFzcyBvZiBhIHN5bWJvbC4gIAorLy8gVGhlIGZ1bmN0aW9uIHN1Yi1jbGFzcyBvZiBhIHN5
bWJvbC4KIGNsYXNzIFRGdW5jdGlvbiA6IHB1YmxpYyBUU3ltYm9sCiB7CiAgIHB1YmxpYzoKQEAg
LTIwNywxNSArMTc0LDYgQEAgY2xhc3MgVEZ1bmN0aW9uIDogcHVibGljIFRTeW1ib2wKICAgICB+
VEZ1bmN0aW9uKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc0Z1bmN0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgc3RhdGljIFRTdHJpbmcgbWFuZ2xlTmFtZShjb25z
dCBUU3RyaW5nICZuYW1lKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG5hbWUgKyAnKCc7Ci0gICAg
fQotICAgIHN0YXRpYyBUU3RyaW5nIHVubWFuZ2xlTmFtZShjb25zdCBUU3RyaW5nICZtYW5nbGVk
TmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBUU3RyaW5nKG1hbmdsZWROYW1lLmNfc3RyKCks
IG1hbmdsZWROYW1lLmZpbmRfZmlyc3Rfb2YoJygnKSk7Ci0gICAgfQotCiAgICAgdm9pZCBhZGRQ
YXJhbWV0ZXIoY29uc3QgVENvbnN0UGFyYW1ldGVyICZwKQogICAgIHsKICAgICAgICAgcGFyYW1l
dGVycy5wdXNoX2JhY2socCk7CkBAIC0yMzIsMjkgKzE5MCwyMSBAQCBjbGFzcyBURnVuY3Rpb24g
OiBwdWJsaWMgVFN5bWJvbAogICAgICAgICB9CiAgICAgICAgIHJldHVybiAqbWFuZ2xlZE5hbWU7
CiAgICAgfQotICAgIGNvbnN0IFRUeXBlICZnZXRSZXR1cm5UeXBlKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAqcmV0dXJuVHlwZTsKLSAgICB9CiAKLSAgICBUT3BlcmF0b3IgZ2V0QnVp
bHRJbk9wKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBvcDsKLSAgICB9CisgICAgc3Rh
dGljIGNvbnN0IFRTdHJpbmcgJkdldE1hbmdsZWROYW1lRnJvbUNhbGwoY29uc3QgVFN0cmluZyAm
ZnVuY3Rpb25OYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAmYXJndW1lbnRzKTsKKworICAgIGNvbnN0IFRU
eXBlICZnZXRSZXR1cm5UeXBlKCkgY29uc3QgeyByZXR1cm4gKnJldHVyblR5cGU7IH0KKworICAg
IFRPcGVyYXRvciBnZXRCdWlsdEluT3AoKSBjb25zdCB7IHJldHVybiBvcDsgfQogCiAgICAgdm9p
ZCBzZXREZWZpbmVkKCkgeyBkZWZpbmVkID0gdHJ1ZTsgfQogICAgIGJvb2wgaXNEZWZpbmVkKCkg
eyByZXR1cm4gZGVmaW5lZDsgfQogICAgIHZvaWQgc2V0SGFzUHJvdG90eXBlRGVjbGFyYXRpb24o
KSB7IG1IYXNQcm90b3R5cGVEZWNsYXJhdGlvbiA9IHRydWU7IH0KICAgICBib29sIGhhc1Byb3Rv
dHlwZURlY2xhcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbUhhc1Byb3RvdHlwZURlY2xhcmF0aW9u
OyB9CiAKLSAgICBzaXplX3QgZ2V0UGFyYW1Db3VudCgpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gcGFyYW1ldGVycy5zaXplKCk7Ci0gICAgfQotICAgIGNvbnN0IFRDb25zdFBhcmFtZXRl
ciAmZ2V0UGFyYW0oc2l6ZV90IGkpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcGFyYW1l
dGVyc1tpXTsKLSAgICB9CisgICAgc2l6ZV90IGdldFBhcmFtQ291bnQoKSBjb25zdCB7IHJldHVy
biBwYXJhbWV0ZXJzLnNpemUoKTsgfQorICAgIGNvbnN0IFRDb25zdFBhcmFtZXRlciAmZ2V0UGFy
YW0oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIHBhcmFtZXRlcnNbaV07IH0KIAogICBwcml2YXRl
OgogICAgIHZvaWQgY2xlYXJQYXJhbWV0ZXJzKCk7CkBAIC0yNzQsMTQgKzIyNCw5IEBAIGNsYXNz
IFRGdW5jdGlvbiA6IHB1YmxpYyBUU3ltYm9sCiBjbGFzcyBUSW50ZXJmYWNlQmxvY2tOYW1lIDog
cHVibGljIFRTeW1ib2wKIHsKICAgcHVibGljOgotICAgIFRJbnRlcmZhY2VCbG9ja05hbWUoY29u
c3QgVFN0cmluZyAqbmFtZSkKLSAgICAgICAgOiBUU3ltYm9sKG5hbWUpCi0gICAgewotICAgIH0K
KyAgICBUSW50ZXJmYWNlQmxvY2tOYW1lKGNvbnN0IFRTdHJpbmcgKm5hbWUpIDogVFN5bWJvbChu
YW1lKSB7fQogCi0gICAgdmlydHVhbCB+VEludGVyZmFjZUJsb2NrTmFtZSgpCi0gICAgewotICAg
IH0KKyAgICB2aXJ0dWFsIH5USW50ZXJmYWNlQmxvY2tOYW1lKCkge30KIH07CiAKIGNsYXNzIFRT
eW1ib2xUYWJsZUxldmVsCkBAIC0yOTIsMTAgKzIzNyw3IEBAIGNsYXNzIFRTeW1ib2xUYWJsZUxl
dmVsCiAgICAgdHlwZWRlZiBjb25zdCB0TGV2ZWw6OnZhbHVlX3R5cGUgdExldmVsUGFpcjsKICAg
ICB0eXBlZGVmIHN0ZDo6cGFpcjx0TGV2ZWw6Oml0ZXJhdG9yLCBib29sPiB0SW5zZXJ0UmVzdWx0
OwogCi0gICAgVFN5bWJvbFRhYmxlTGV2ZWwoKQotICAgICAgICA6IG1HbG9iYWxJbnZhcmlhbnQo
ZmFsc2UpCi0gICAgewotICAgIH0KKyAgICBUU3ltYm9sVGFibGVMZXZlbCgpIDogbUdsb2JhbElu
dmFyaWFudChmYWxzZSkge30KICAgICB+VFN5bWJvbFRhYmxlTGV2ZWwoKTsKIAogICAgIGJvb2wg
aW5zZXJ0KFRTeW1ib2wgKnN5bWJvbCk7CkBAIC0zMDUsMTAgKzI0Nyw3IEBAIGNsYXNzIFRTeW1i
b2xUYWJsZUxldmVsCiAKICAgICBUU3ltYm9sICpmaW5kKGNvbnN0IFRTdHJpbmcgJm5hbWUpIGNv
bnN0OwogCi0gICAgdm9pZCBhZGRJbnZhcmlhbnRWYXJ5aW5nKGNvbnN0IHN0ZDo6c3RyaW5nICZu
YW1lKQotICAgIHsKLSAgICAgICAgbUludmFyaWFudFZhcnlpbmdzLmluc2VydChuYW1lKTsKLSAg
ICB9CisgICAgdm9pZCBhZGRJbnZhcmlhbnRWYXJ5aW5nKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1l
KSB7IG1JbnZhcmlhbnRWYXJ5aW5ncy5pbnNlcnQobmFtZSk7IH0KIAogICAgIGJvb2wgaXNWYXJ5
aW5nSW52YXJpYW50KGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKQogICAgIHsKQEAgLTMxNywxOSAr
MjU2LDMyIEBAIGNsYXNzIFRTeW1ib2xUYWJsZUxldmVsCiAKICAgICB2b2lkIHNldEdsb2JhbElu
dmFyaWFudChib29sIGludmFyaWFudCkgeyBtR2xvYmFsSW52YXJpYW50ID0gaW52YXJpYW50OyB9
CiAKKyAgICB2b2lkIGluc2VydFVubWFuZ2xlZEJ1aWx0SW5OYW1lKGNvbnN0IHN0ZDo6c3RyaW5n
ICZuYW1lKQorICAgIHsKKyAgICAgICAgbVVubWFuZ2xlZEJ1aWx0SW5OYW1lcy5pbnNlcnQobmFt
ZSk7CisgICAgfQorCisgICAgYm9vbCBoYXNVbm1hbmdsZWRCdWlsdEluKGNvbnN0IHN0ZDo6c3Ry
aW5nICZuYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1Vbm1hbmdsZWRCdWlsdEluTmFtZXMu
Y291bnQobmFtZSkgPiAwOworICAgIH0KKwogICBwcm90ZWN0ZWQ6CiAgICAgdExldmVsIGxldmVs
OwogICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtSW52YXJpYW50VmFyeWluZ3M7CiAgICAgYm9v
bCBtR2xvYmFsSW52YXJpYW50OworCisgIHByaXZhdGU6CisgICAgc3RkOjpzZXQ8c3RkOjpzdHJp
bmc+IG1Vbm1hbmdsZWRCdWlsdEluTmFtZXM7CiB9OwogCiAvLyBEZWZpbmUgRVN5bWJvbExldmVs
IGFzIGludCByYXRoZXIgdGhhbiBhbiBlbnVtIHNpbmNlIGxldmVsIGNhbiBnbwogLy8gYWJvdmUg
R0xPQkFMX0xFVkVMIGFuZCBjYXVzZSBhdEJ1aWx0SW5MZXZlbCgpIHRvIGZhaWwgaWYgdGhlCiAv
LyBjb21waWxlciBvcHRpbWl6ZXMgdGhlID49IG9mIHRoZSBsYXN0IGVsZW1lbnQgdG8gPT0uCiB0
eXBlZGVmIGludCBFU3ltYm9sTGV2ZWw7Ci1jb25zdCBpbnQgQ09NTU9OX0JVSUxUSU5TID0gMDsK
LWNvbnN0IGludCBFU1NMMV9CVUlMVElOUyA9IDE7Ci1jb25zdCBpbnQgRVNTTDNfQlVJTFRJTlMg
PSAyOworY29uc3QgaW50IENPTU1PTl9CVUlMVElOUyAgICA9IDA7Citjb25zdCBpbnQgRVNTTDFf
QlVJTFRJTlMgICAgID0gMTsKK2NvbnN0IGludCBFU1NMM19CVUlMVElOUyAgICAgPSAyOwogY29u
c3QgaW50IEVTU0wzXzFfQlVJTFRJTlMgICA9IDM7CiBjb25zdCBpbnQgTEFTVF9CVUlMVElOX0xF
VkVMID0gRVNTTDNfMV9CVUlMVElOUzsKIGNvbnN0IGludCBHTE9CQUxfTEVWRUwgICAgICAgPSA0
OwpAQCAtMzQ5LDE4ICszMDEsOSBAQCBjbGFzcyBUU3ltYm9sVGFibGUgOiBhbmdsZTo6Tm9uQ29w
eWFibGUKICAgICAvLyBXaGVuIHRoZSBzeW1ib2wgdGFibGUgaXMgaW5pdGlhbGl6ZWQgd2l0aCB0
aGUgYnVpbHQtaW5zLCB0aGVyZSBzaG91bGQKICAgICAvLyAncHVzaCcgY2FsbHMsIHNvIHRoYXQg
YnVpbHQtaW5zIGFyZSBhdCBsZXZlbCAwIGFuZCB0aGUgc2hhZGVyCiAgICAgLy8gZ2xvYmFscyBh
cmUgYXQgbGV2ZWwgMS4KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRhYmxlLmVtcHR5KCk7Ci0gICAgfQotICAgIGJvb2wgYXRCdWlsdEluTGV2ZWwoKSBj
b25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGN1cnJlbnRMZXZlbCgpIDw9IExBU1RfQlVJTFRJ
Tl9MRVZFTDsKLSAgICB9Ci0gICAgYm9vbCBhdEdsb2JhbExldmVsKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBjdXJyZW50TGV2ZWwoKSA9PSBHTE9CQUxfTEVWRUw7Ci0gICAgfQorICAg
IGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIHRhYmxlLmVtcHR5KCk7IH0KKyAgICBib29s
IGF0QnVpbHRJbkxldmVsKCkgY29uc3QgeyByZXR1cm4gY3VycmVudExldmVsKCkgPD0gTEFTVF9C
VUlMVElOX0xFVkVMOyB9CisgICAgYm9vbCBhdEdsb2JhbExldmVsKCkgY29uc3QgeyByZXR1cm4g
Y3VycmVudExldmVsKCkgPT0gR0xPQkFMX0xFVkVMOyB9CiAgICAgdm9pZCBwdXNoKCkKICAgICB7
CiAgICAgICAgIHRhYmxlLnB1c2hfYmFjayhuZXcgVFN5bWJvbFRhYmxlTGV2ZWwpOwpAQCAtMzc2
LDE1ICszMTksOSBAQCBjbGFzcyBUU3ltYm9sVGFibGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAg
ICAgICAgcHJlY2lzaW9uU3RhY2sucG9wX2JhY2soKTsKICAgICB9CiAKLSAgICBib29sIGRlY2xh
cmUoVFN5bWJvbCAqc3ltYm9sKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGluc2VydChjdXJyZW50
TGV2ZWwoKSwgc3ltYm9sKTsKLSAgICB9CisgICAgYm9vbCBkZWNsYXJlKFRTeW1ib2wgKnN5bWJv
bCkgeyByZXR1cm4gaW5zZXJ0KGN1cnJlbnRMZXZlbCgpLCBzeW1ib2wpOyB9CiAKLSAgICBib29s
IGluc2VydChFU3ltYm9sTGV2ZWwgbGV2ZWwsIFRTeW1ib2wgKnN5bWJvbCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0YWJsZVtsZXZlbF0tPmluc2VydChzeW1ib2wpOwotICAgIH0KKyAgICBib29s
IGluc2VydChFU3ltYm9sTGV2ZWwgbGV2ZWwsIFRTeW1ib2wgKnN5bWJvbCkgeyByZXR1cm4gdGFi
bGVbbGV2ZWxdLT5pbnNlcnQoc3ltYm9sKTsgfQogCiAgICAgYm9vbCBpbnNlcnQoRVN5bWJvbExl
dmVsIGxldmVsLCBjb25zdCBjaGFyICpleHQsIFRTeW1ib2wgKnN5bWJvbCkKICAgICB7CkBAIC00
MzAsMzQgKzM2Nyw3NyBAQCBjbGFzcyBUU3ltYm9sVGFibGUgOiBhbmdsZTo6Tm9uQ29weWFibGUK
ICAgICAgICAgcmV0dXJuIGluc2VydChsZXZlbCwgY29uc3RhbnRJdmVjMyk7CiAgICAgfQogCi0g
ICAgdm9pZCBpbnNlcnRCdWlsdEluKEVTeW1ib2xMZXZlbCBsZXZlbCwgVE9wZXJhdG9yIG9wLCBj
b25zdCBjaGFyICpleHQsIGNvbnN0IFRUeXBlICpydmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTEsIGNvbnN0IFRUeXBlICpw
dHlwZTIgPSAwLCBjb25zdCBUVHlwZSAqcHR5cGUzID0gMCwgY29uc3QgVFR5cGUgKnB0eXBlNCA9
IDAsIGNvbnN0IFRUeXBlICpwdHlwZTUgPSAwKTsKLQotICAgIHZvaWQgaW5zZXJ0QnVpbHRJbihF
U3ltYm9sTGV2ZWwgbGV2ZWwsIGNvbnN0IFRUeXBlICpydmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTEsIGNvbnN0IFRUeXBl
ICpwdHlwZTIgPSAwLCBjb25zdCBUVHlwZSAqcHR5cGUzID0gMCwgY29uc3QgVFR5cGUgKnB0eXBl
NCA9IDAsIGNvbnN0IFRUeXBlICpwdHlwZTUgPSAwKQotICAgIHsKLSAgICAgICAgaW5zZXJ0VW5t
YW5nbGVkQnVpbHRJbihuYW1lKTsKKyAgICB2b2lkIGluc2VydEJ1aWx0SW4oRVN5bWJvbExldmVs
IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICBUT3BlcmF0b3Igb3AsCisgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVFR5cGUgKnJ2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnB0eXBlMSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnB0eXBlMiA9IDAsCisgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTMgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUVHlwZSAqcHR5cGU0ID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5
cGUgKnB0eXBlNSA9IDApOworCisgICAgdm9pZCBpbnNlcnRCdWlsdEluKEVTeW1ib2xMZXZlbCBs
ZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnJ2YWx1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVFR5cGUgKnB0eXBlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5
cGUgKnB0eXBlMiA9IDAsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwdHlw
ZTMgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcHR5cGU0ID0gMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnB0eXBlNSA9IDApCisgICAgewor
ICAgICAgICBpbnNlcnRVbm1hbmdsZWRCdWlsdEluTmFtZShuYW1lLCBsZXZlbCk7CiAgICAgICAg
IGluc2VydEJ1aWx0SW4obGV2ZWwsIEVPcE51bGwsICIiLCBydmFsdWUsIG5hbWUsIHB0eXBlMSwg
cHR5cGUyLCBwdHlwZTMsIHB0eXBlNCwgcHR5cGU1KTsKICAgICB9CiAKLSAgICB2b2lkIGluc2Vy
dEJ1aWx0SW4oRVN5bWJvbExldmVsIGxldmVsLCBjb25zdCBjaGFyICpleHQsIGNvbnN0IFRUeXBl
ICpydmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRUeXBlICpwdHlwZTEsIGNvbnN0IFRUeXBlICpwdHlwZTIgPSAwLCBjb25zdCBUVHlwZSAqcHR5
cGUzID0gMCwgY29uc3QgVFR5cGUgKnB0eXBlNCA9IDAsIGNvbnN0IFRUeXBlICpwdHlwZTUgPSAw
KQorICAgIHZvaWQgaW5zZXJ0QnVpbHRJbihFU3ltYm9sTGV2ZWwgbGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVFR5cGUgKnJ2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnB0eXBlMSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnB0eXBlMiA9IDAsCisgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTMgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUVHlwZSAqcHR5cGU0ID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5
cGUgKnB0eXBlNSA9IDApCiAgICAgewotICAgICAgICBpbnNlcnRVbm1hbmdsZWRCdWlsdEluKG5h
bWUpOworICAgICAgICBpbnNlcnRVbm1hbmdsZWRCdWlsdEluTmFtZShuYW1lLCBsZXZlbCk7CiAg
ICAgICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIEVPcE51bGwsIGV4dCwgcnZhbHVlLCBuYW1lLCBw
dHlwZTEsIHB0eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7CiAgICAgfQogCi0gICAgdm9p
ZCBpbnNlcnRCdWlsdEluKEVTeW1ib2xMZXZlbCBsZXZlbCwgVE9wZXJhdG9yIG9wLCBjb25zdCBU
VHlwZSAqcnZhbHVlLCBjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUVHlwZSAqcHR5cGUxLCBjb25zdCBUVHlwZSAqcHR5cGUyID0gMCwgY29uc3QgVFR5cGUg
KnB0eXBlMyA9IDAsIGNvbnN0IFRUeXBlICpwdHlwZTQgPSAwLCBjb25zdCBUVHlwZSAqcHR5cGU1
ID0gMCkKLSAgICB7Ci0gICAgICAgIGluc2VydFVubWFuZ2xlZEJ1aWx0SW4obmFtZSk7Ci0gICAg
ICAgIGluc2VydEJ1aWx0SW4obGV2ZWwsIG9wLCAiIiwgcnZhbHVlLCBuYW1lLCBwdHlwZTEsIHB0
eXBlMiwgcHR5cGUzLCBwdHlwZTQsIHB0eXBlNSk7Ci0gICAgfQorICAgIHZvaWQgaW5zZXJ0QnVp
bHRJbk9wKEVTeW1ib2xMZXZlbCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBUT3Bl
cmF0b3Igb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFR5cGUgKnJ2YWx1ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcHR5cGUxLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTIgPSAwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRUeXBlICpwdHlwZTMgPSAwLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRUeXBlICpwdHlwZTQgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRUeXBlICpwdHlwZTUgPSAwKTsKKworICAgIHZvaWQgaW5zZXJ0QnVpbHRJbk9wKEVTeW1i
b2xMZXZlbCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBUT3BlcmF0b3Igb3AsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFRUeXBlICpydmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgVFR5cGUgKnB0eXBlMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlw
ZSAqcHR5cGUyID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcHR5
cGUzID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcHR5cGU0ID0g
MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUVHlwZSAqcHR5cGU1ID0gMCk7CisK
KyAgICB2b2lkIGluc2VydEJ1aWx0SW5GdW5jdGlvbk5vUGFyYW1ldGVycyhFU3ltYm9sTGV2ZWwg
bGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE9wZXJh
dG9yIG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRUeXBlICpydmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAqbmFtZSk7CisKKyAgICBUU3ltYm9sICpmaW5kKGNvbnN0IFRTdHJpbmcg
Jm5hbWUsCisgICAgICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbiwKKyAgICAgICAgICAg
ICAgICAgIGJvb2wgKmJ1aWx0SW4gICA9IE5VTEwsCisgICAgICAgICAgICAgICAgICBib29sICpz
YW1lU2NvcGUgPSBOVUxMKSBjb25zdDsKKworICAgIFRTeW1ib2wgKmZpbmRHbG9iYWwoY29uc3Qg
VFN0cmluZyAmbmFtZSkgY29uc3Q7CiAKLSAgICBUU3ltYm9sICpmaW5kKGNvbnN0IFRTdHJpbmcg
Jm5hbWUsIGludCBzaGFkZXJWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgYm9vbCAqYnVpbHRJ
biA9IE5VTEwsIGJvb2wgKnNhbWVTY29wZSA9IE5VTEwpIGNvbnN0OwogICAgIFRTeW1ib2wgKmZp
bmRCdWlsdEluKGNvbnN0IFRTdHJpbmcgJm5hbWUsIGludCBzaGFkZXJWZXJzaW9uKSBjb25zdDsK
LSAgICAKKwogICAgIFRTeW1ib2xUYWJsZUxldmVsICpnZXRPdXRlckxldmVsKCkKICAgICB7CiAg
ICAgICAgIGFzc2VydChjdXJyZW50TGV2ZWwoKSA+PSAxKTsKQEAgLTQ3Myw3ICs0NTMsNyBAQCBj
bGFzcyBUU3ltYm9sVGFibGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgaWYgKHR5cGUu
Z2V0QmFzaWNUeXBlKCkgPT0gRWJ0VUludCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgIC8v
IEVTU0wgMy4wMC40IHNlY3Rpb24gNC41LjQKICAgICAgICAgaWYgKHR5cGUuaXNBZ2dyZWdhdGUo
KSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gTm90IGFsbG93ZWQgdG8gc2V0IGZvciBh
Z2dyZWdhdGUgdHlwZXMKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsgIC8vIE5vdCBhbGxvd2Vk
IHRvIHNldCBmb3IgYWdncmVnYXRlIHR5cGVzCiAgICAgICAgIGludCBpbmRleE9mTGFzdEVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxpbnQ+KHByZWNpc2lvblN0YWNrLnNpemUoKSkgLSAxOwogICAgICAg
ICAvLyBVc2VzIG1hcCBvcGVyYXRvciBbXSwgb3ZlcndyaXRlcyB0aGUgY3VycmVudCB2YWx1ZQog
ICAgICAgICAoKnByZWNpc2lvblN0YWNrW2luZGV4T2ZMYXN0RWxlbWVudF0pW3R5cGUuZ2V0QmFz
aWNUeXBlKCldID0gcHJlYzsKQEAgLTUwNywzNSArNDg3LDI3IEBAIGNsYXNzIFRTeW1ib2xUYWJs
ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICB0YWJsZVtjdXJyZW50TGV2ZWwoKV0tPnNl
dEdsb2JhbEludmFyaWFudChpbnZhcmlhbnQpOwogICAgIH0KIAotICAgIHN0YXRpYyBpbnQgbmV4
dFVuaXF1ZUlkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiArK3VuaXF1ZUlkQ291bnRlcjsKLSAg
ICB9CisgICAgc3RhdGljIGludCBuZXh0VW5pcXVlSWQoKSB7IHJldHVybiArK3VuaXF1ZUlkQ291
bnRlcjsgfQogCi0gICAgYm9vbCBoYXNVbm1hbmdsZWRCdWlsdEluKGNvbnN0IGNoYXIgKm5hbWUp
Ci0gICAgewotICAgICAgICByZXR1cm4gbVVubWFuZ2xlZEJ1aWx0aW5OYW1lcy5jb3VudChzdGQ6
OnN0cmluZyhuYW1lKSkgPiAwOwotICAgIH0KKyAgICAvLyBDaGVja3Mgd2hldGhlciB0aGVyZSBp
cyBhIGJ1aWx0LWluIGFjY2Vzc2libGUgYnkgYSBzaGFkZXIgd2l0aCB0aGUgc3BlY2lmaWVkIHZl
cnNpb24uCisgICAgYm9vbCBoYXNVbm1hbmdsZWRCdWlsdEluRm9yU2hhZGVyVmVyc2lvbihjb25z
dCBjaGFyICpuYW1lLCBpbnQgc2hhZGVyVmVyc2lvbik7CiAKICAgcHJpdmF0ZToKLSAgICBFU3lt
Ym9sTGV2ZWwgY3VycmVudExldmVsKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxFU3ltYm9sTGV2ZWw+KHRhYmxlLnNpemUoKSAtIDEpOwotICAgIH0KKyAgICBFU3lt
Ym9sTGV2ZWwgY3VycmVudExldmVsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVN5bWJv
bExldmVsPih0YWJsZS5zaXplKCkgLSAxKTsgfQogCi0gICAgLy8gVXNlZCB0byBpbnNlcnQgdW5t
YW5nbGVkIGZ1bmN0aW9ucyB0byBjaGVjayByZWRlY2xhcmF0aW9uIG9mIGJ1aWx0LWlucyBpbiBF
U1NMIDMuMDAuCi0gICAgdm9pZCBpbnNlcnRVbm1hbmdsZWRCdWlsdEluKGNvbnN0IGNoYXIgKm5h
bWUpCi0gICAgewotICAgICAgICBtVW5tYW5nbGVkQnVpbHRpbk5hbWVzLmluc2VydChzdGQ6OnN0
cmluZyhuYW1lKSk7Ci0gICAgfQorICAgIC8vIFVzZWQgdG8gaW5zZXJ0IHVubWFuZ2xlZCBmdW5j
dGlvbnMgdG8gY2hlY2sgcmVkZWNsYXJhdGlvbiBvZiBidWlsdC1pbnMgaW4gRVNTTCAzLjAwIGFu
ZAorICAgIC8vIGFib3ZlLgorICAgIHZvaWQgaW5zZXJ0VW5tYW5nbGVkQnVpbHRJbk5hbWUoY29u
c3QgY2hhciAqbmFtZSwgRVN5bWJvbExldmVsIGxldmVsKTsKKworICAgIGJvb2wgaGFzVW5tYW5n
bGVkQnVpbHRJbkF0TGV2ZWwoY29uc3QgY2hhciAqbmFtZSwgRVN5bWJvbExldmVsIGxldmVsKTsK
IAogICAgIHN0ZDo6dmVjdG9yPFRTeW1ib2xUYWJsZUxldmVsICo+IHRhYmxlOwogICAgIHR5cGVk
ZWYgVE1hcDxUQmFzaWNUeXBlLCBUUHJlY2lzaW9uPiBQcmVjaXNpb25TdGFja0xldmVsOwotICAg
IHN0ZDo6dmVjdG9yPCBQcmVjaXNpb25TdGFja0xldmVsICo+IHByZWNpc2lvblN0YWNrOwotCi0g
ICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IG1Vbm1hbmdsZWRCdWlsdGluTmFtZXM7CisgICAgc3Rk
Ojp2ZWN0b3I8UHJlY2lzaW9uU3RhY2tMZXZlbCAqPiBwcmVjaXNpb25TdGFjazsKIAogICAgIHN0
YXRpYyBpbnQgdW5pcXVlSWRDb3VudGVyOwogfTsKIAotI2VuZGlmIC8vIENPTVBJTEVSX1RSQU5T
TEFUT1JfU1lNQk9MVEFCTEVfSF8KK30gIC8vIG5hbWVzcGFjZSBzaAorCisjZW5kaWYgIC8vIENP
TVBJTEVSX1RSQU5TTEFUT1JfU1lNQk9MVEFCTEVfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RleHR1cmVGdW5jdGlvbkhMU0wu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVGV4
dHVyZUZ1bmN0aW9uSExTTC5jcHAKaW5kZXggMzNkMDk4NTMxZDQuLmJjNTM0NzMyNDQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9U
ZXh0dXJlRnVuY3Rpb25ITFNMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9UZXh0dXJlRnVuY3Rpb25ITFNMLmNwcApAQCAtMjk2LDcgKzI5
NiwxMCBAQCB2b2lkIE91dHB1dFRleHR1cmVGdW5jdGlvbkFyZ3VtZW50TGlzdChUSW5mb1NpbmtC
YXNlICZvdXQsCiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG91
dHB1dFR5cGUgPT0gU0hfSExTTF80XzFfT1VUUFVUKTsKLSAgICAgICAgICAgIG91dCA8PCAiY29u
c3QgdWludCBzYW1wbGVySW5kZXgiOworICAgICAgICAgICAgLy8gQSBidWcgaW4gdGhlIEQzRCBj
b21waWxlciBjYXVzZXMgc29tZSBuZXN0ZWQgc2FtcGxpbmcgb3BlcmF0aW9ucyB0byBmYWlsLgor
ICAgICAgICAgICAgLy8gU2VlIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTkyMworICAgICAgICAgICAg
Ly8gVE9ETyhqbWFkaWxsKTogUmVpbnN0YXRlIHRoZSBjb25zdCBrZXl3b3JkIHdoZW4gcG9zc2li
bGUuCisgICAgICAgICAgICBvdXQgPDwgLyoiY29uc3QiKi8gInVpbnQgc2FtcGxlckluZGV4IjsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtMzE5LDYgKzMyMiw4IEBAIHZvaWQgT3V0cHV0VGV4dHVy
ZUZ1bmN0aW9uQXJndW1lbnRMaXN0KFRJbmZvU2lua0Jhc2UgJm91dCwKICAgICB7CiAgICAgICAg
IHN3aXRjaCAodGV4dHVyZUZ1bmN0aW9uLmNvb3JkcykKICAgICAgICAgeworICAgICAgICAgICAg
Y2FzZSAwOgorICAgICAgICAgICAgICAgIGJyZWFrOyAgLy8gdGV4dHVyZVNpemUoZ1NhbXBsZXIy
RE1TIHNhbXBsZXIpCiAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgb3V0IDw8
ICIsIGludCBsb2QiOwogICAgICAgICAgICAgICAgIGJyZWFrOyAgLy8gdGV4dHVyZVNpemUoKQpA
QCAtNDU3LDQ4ICs0NjIsNTYgQEAgdm9pZCBPdXRwdXRUZXh0dXJlU2l6ZUZ1bmN0aW9uQm9keShU
SW5mb1NpbmtCYXNlICZvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRTdHJpbmcgJnRleHR1cmVSZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgZ2V0RGltZW5zaW9uc0lnbm9yZXNCYXNlTGV2ZWwpCiB7Ci0gICAgaWYg
KGdldERpbWVuc2lvbnNJZ25vcmVzQmFzZUxldmVsKQorICAgIGlmIChJc1NhbXBsZXIyRE1TKHRl
eHR1cmVGdW5jdGlvbi5zYW1wbGVyKSkKICAgICB7Ci0gICAgICAgIG91dCA8PCAiaW50IGJhc2VM
ZXZlbCA9IHNhbXBsZXJNZXRhZGF0YVtzYW1wbGVySW5kZXhdLmJhc2VMZXZlbDtcbiI7CisgICAg
ICAgIG91dCA8PCAiICAgIHVpbnQgd2lkdGg7IHVpbnQgaGVpZ2h0OyB1aW50IHNhbXBsZXM7XG4i
CisgICAgICAgICAgICA8PCAiICAgICIgPDwgdGV4dHVyZVJlZmVyZW5jZSA8PCAiLkdldERpbWVu
c2lvbnMod2lkdGgsIGhlaWdodCwgc2FtcGxlcyk7XG4iOwogICAgIH0KICAgICBlbHNlCiAgICAg
ewotICAgICAgICBvdXQgPDwgImludCBiYXNlTGV2ZWwgPSAwO1xuIjsKLSAgICB9CisgICAgICAg
IGlmIChnZXREaW1lbnNpb25zSWdub3Jlc0Jhc2VMZXZlbCkKKyAgICAgICAgeworICAgICAgICAg
ICAgb3V0IDw8ICIgICAgaW50IGJhc2VMZXZlbCA9IHNhbXBsZXJNZXRhZGF0YVtzYW1wbGVySW5k
ZXhdLmJhc2VMZXZlbDtcbiI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7Cisg
ICAgICAgICAgICBvdXQgPDwgIiAgICBpbnQgYmFzZUxldmVsID0gMDtcbiI7CisgICAgICAgIH0K
IAotICAgIGlmIChJc1NhbXBsZXIzRCh0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikgfHwgSXNTYW1w
bGVyQXJyYXkodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIpIHx8Ci0gICAgICAgIChJc0ludGVnZXJT
YW1wbGVyKHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSAmJiBJc1NhbXBsZXJDdWJlKHRleHR1cmVG
dW5jdGlvbi5zYW1wbGVyKSkpCi0gICAgewotICAgICAgICAvLyAiZGVwdGgiIHN0b3JlcyBlaXRo
ZXIgdGhlIG51bWJlciBvZiBsYXllcnMgaW4gYW4gYXJyYXkgdGV4dHVyZSBvciAzRCBkZXB0aAot
ICAgICAgICBvdXQgPDwgIiAgICB1aW50IHdpZHRoOyB1aW50IGhlaWdodDsgdWludCBkZXB0aDsg
dWludCBudW1iZXJPZkxldmVscztcbiIKLSAgICAgICAgICAgIDw8ICIgICAgIiA8PCB0ZXh0dXJl
UmVmZXJlbmNlCi0gICAgICAgICAgICA8PCAiLkdldERpbWVuc2lvbnMoYmFzZUxldmVsLCB3aWR0
aCwgaGVpZ2h0LCBkZXB0aCwgbnVtYmVyT2ZMZXZlbHMpO1xuIgotICAgICAgICAgICAgPDwgIiAg
ICB3aWR0aCA9IG1heCh3aWR0aCA+PiBsb2QsIDEpO1xuIgotICAgICAgICAgICAgPDwgIiAgICBo
ZWlnaHQgPSBtYXgoaGVpZ2h0ID4+IGxvZCwgMSk7XG4iOwotCi0gICAgICAgIGlmICghSXNTYW1w
bGVyQXJyYXkodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIpKQorICAgICAgICBpZiAoSXNTYW1wbGVy
M0QodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIpIHx8IElzU2FtcGxlckFycmF5KHRleHR1cmVGdW5j
dGlvbi5zYW1wbGVyKSB8fAorICAgICAgICAgICAgKElzSW50ZWdlclNhbXBsZXIodGV4dHVyZUZ1
bmN0aW9uLnNhbXBsZXIpICYmIElzU2FtcGxlckN1YmUodGV4dHVyZUZ1bmN0aW9uLnNhbXBsZXIp
KSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gImRlcHRoIiBzdG9yZXMgZWl0aGVyIHRoZSBu
dW1iZXIgb2YgbGF5ZXJzIGluIGFuIGFycmF5IHRleHR1cmUgb3IgM0QgZGVwdGgKKyAgICAgICAg
ICAgIG91dCA8PCAiICAgIHVpbnQgd2lkdGg7IHVpbnQgaGVpZ2h0OyB1aW50IGRlcHRoOyB1aW50
IG51bWJlck9mTGV2ZWxzO1xuIgorICAgICAgICAgICAgICAgIDw8ICIgICAgIiA8PCB0ZXh0dXJl
UmVmZXJlbmNlCisgICAgICAgICAgICAgICAgPDwgIi5HZXREaW1lbnNpb25zKGJhc2VMZXZlbCwg
d2lkdGgsIGhlaWdodCwgZGVwdGgsIG51bWJlck9mTGV2ZWxzKTtcbiIKKyAgICAgICAgICAgICAg
ICA8PCAiICAgIHdpZHRoID0gbWF4KHdpZHRoID4+IGxvZCwgMSk7XG4iCisgICAgICAgICAgICAg
ICAgPDwgIiAgICBoZWlnaHQgPSBtYXgoaGVpZ2h0ID4+IGxvZCwgMSk7XG4iOworCisgICAgICAg
ICAgICBpZiAoIUlzU2FtcGxlckFycmF5KHRleHR1cmVGdW5jdGlvbi5zYW1wbGVyKSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiAgICBkZXB0aCA9IG1heChkZXB0aCA+
PiBsb2QsIDEpO1xuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlm
IChJc1NhbXBsZXIyRCh0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikgfHwgSXNTYW1wbGVyQ3ViZSh0
ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG91dCA8PCAi
ICAgIGRlcHRoID0gbWF4KGRlcHRoID4+IGxvZCwgMSk7XG4iOworICAgICAgICAgICAgb3V0IDw8
ICIgICAgdWludCB3aWR0aDsgdWludCBoZWlnaHQ7IHVpbnQgbnVtYmVyT2ZMZXZlbHM7XG4iCisg
ICAgICAgICAgICAgICAgPDwgIiAgICAiIDw8IHRleHR1cmVSZWZlcmVuY2UKKyAgICAgICAgICAg
ICAgICA8PCAiLkdldERpbWVuc2lvbnMoYmFzZUxldmVsLCB3aWR0aCwgaGVpZ2h0LCBudW1iZXJP
ZkxldmVscyk7XG4iCisgICAgICAgICAgICAgICAgPDwgIiAgICB3aWR0aCA9IG1heCh3aWR0aCA+
PiBsb2QsIDEpO1xuIgorICAgICAgICAgICAgICAgIDw8ICIgICAgaGVpZ2h0ID0gbWF4KGhlaWdo
dCA+PiBsb2QsIDEpO1xuIjsKICAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOwogICAgIH0KLSAgICBlbHNlIGlmIChJc1NhbXBsZXIyRCh0ZXh0dXJlRnVu
Y3Rpb24uc2FtcGxlcikgfHwgSXNTYW1wbGVyQ3ViZSh0ZXh0dXJlRnVuY3Rpb24uc2FtcGxlcikp
Ci0gICAgewotICAgICAgICBvdXQgPDwgIiAgICB1aW50IHdpZHRoOyB1aW50IGhlaWdodDsgdWlu
dCBudW1iZXJPZkxldmVscztcbiIKLSAgICAgICAgICAgIDw8ICIgICAgIiA8PCB0ZXh0dXJlUmVm
ZXJlbmNlCi0gICAgICAgICAgICA8PCAiLkdldERpbWVuc2lvbnMoYmFzZUxldmVsLCB3aWR0aCwg
aGVpZ2h0LCBudW1iZXJPZkxldmVscyk7XG4iCi0gICAgICAgICAgICA8PCAiICAgIHdpZHRoID0g
bWF4KHdpZHRoID4+IGxvZCwgMSk7XG4iCi0gICAgICAgICAgICA8PCAiICAgIGhlaWdodCA9IG1h
eChoZWlnaHQgPj4gbG9kLCAxKTtcbiI7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgVU5SRUFD
SEFCTEUoKTsKIAogICAgIGlmIChzdHJjbXAodGV4dHVyZUZ1bmN0aW9uLmdldFJldHVyblR5cGUo
KSwgImludDMiKSA9PSAwKQogICAgIHsKLSAgICAgICAgb3V0IDw8ICIgICAgcmV0dXJuIGludDMo
d2lkdGgsIGhlaWdodCwgZGVwdGgpOyI7CisgICAgICAgIG91dCA8PCAiICAgIHJldHVybiBpbnQz
KHdpZHRoLCBoZWlnaHQsIGRlcHRoKTtcbiI7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAg
ICAgIG91dCA8PCAiICAgIHJldHVybiBpbnQyKHdpZHRoLCBoZWlnaHQpOyI7CisgICAgICAgIG91
dCA8PCAiICAgIHJldHVybiBpbnQyKHdpZHRoLCBoZWlnaHQpO1xuIjsKICAgICB9CiB9CiAKQEAg
LTEwNDgsNiArMTA2MSw5IEBAIGNvbnN0IGNoYXIgKlRleHR1cmVGdW5jdGlvbkhMU0w6OlRleHR1
cmVGdW5jdGlvbjo6Z2V0UmV0dXJuVHlwZSgpIGNvbnN0CiAgICAgICAgICAgICBjYXNlIEVidFVT
YW1wbGVyQ3ViZToKICAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmVTaGFkb3c6CiAgICAg
ICAgICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbE9FUzoKKyAgICAgICAgICAgIGNhc2UgRWJ0
U2FtcGxlcjJETVM6CisgICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRNUzoKKyAgICAgICAg
ICAgIGNhc2UgRWJ0VVNhbXBsZXIyRE1TOgogICAgICAgICAgICAgICAgIHJldHVybiAiaW50MiI7
CiAgICAgICAgICAgICBjYXNlIEVidFNhbXBsZXIzRDoKICAgICAgICAgICAgIGNhc2UgRWJ0SVNh
bXBsZXIzRDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NMLmNwcAppbmRleCAxMDliMTcw
MGQ1ZC4uZWZkNjAzMTQxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NMLmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5jcHAK
QEAgLTYsMTkgKzYsMzcgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNs
YXRvckVTU0wuaCIKIAorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQnVpbHRJbkZ1bmN0
aW9uRW11bGF0b3JHTFNMLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9FbXVsYXRl
UHJlY2lzaW9uLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9QcnVuZVB1cmVMaXRl
cmFsU3RhdGVtZW50cy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUmVjb3JkQ29u
c3RhbnRQcmVjaXNpb24uaCIKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL091dHB1dEVT
U0wuaCIKICNpbmNsdWRlICJhbmdsZV9nbC5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogVHJhbnNs
YXRvckVTU0w6OlRyYW5zbGF0b3JFU1NMKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNw
ZWMpCiAgICAgOiBUQ29tcGlsZXIodHlwZSwgc3BlYywgU0hfRVNTTF9PVVRQVVQpCiB7CiB9CiAK
K3ZvaWQgVHJhbnNsYXRvckVTU0w6OmluaXRCdWlsdEluRnVuY3Rpb25FbXVsYXRvcihCdWlsdElu
RnVuY3Rpb25FbXVsYXRvciAqZW11LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpCit7CisgICAg
aWYgKGNvbXBpbGVPcHRpb25zICYgU0hfRU1VTEFURV9BVEFOMl9GTE9BVF9GVU5DVElPTikKKyAg
ICB7CisgICAgICAgIEluaXRCdWlsdEluQXRhbkZ1bmN0aW9uRW11bGF0b3JGb3JHTFNMV29ya2Fy
b3VuZHMoZW11KTsKKyAgICB9Cit9CisKIHZvaWQgVHJhbnNsYXRvckVTU0w6OnRyYW5zbGF0ZShU
SW50ZXJtTm9kZSAqcm9vdCwgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykKIHsKLSAg
ICBUSW5mb1NpbmtCYXNlJiBzaW5rID0gZ2V0SW5mb1NpbmsoKS5vYmo7CisgICAgLy8gVGhlIEVT
U0wgb3V0cHV0IGRvZXNuJ3QgZGVmaW5lIGEgZGVmYXVsdCBwcmVjaXNpb24gZm9yIGZsb2F0LCBz
byBmbG9hdCBsaXRlcmFsIHN0YXRlbWVudHMKKyAgICAvLyBlbmQgdXAgd2l0aCBubyBwcmVjaXNp
b24gd2hpY2ggaXMgaW52YWxpZCBFU1NMLgorICAgIFBydW5lUHVyZUxpdGVyYWxTdGF0ZW1lbnRz
KHJvb3QpOworCisgICAgVEluZm9TaW5rQmFzZSAmc2luayA9IGdldEluZm9TaW5rKCkub2JqOwog
CiAgICAgaW50IHNoYWRlclZlciA9IGdldFNoYWRlclZlcnNpb24oKTsKICAgICBpZiAoc2hhZGVy
VmVyID4gMTAwKQpAQCAtMjcsMTMgKzQ1LDE0IEBAIHZvaWQgVHJhbnNsYXRvckVTU0w6OnRyYW5z
bGF0ZShUSW50ZXJtTm9kZSAqcm9vdCwgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9uCiAg
ICAgfQogCiAgICAgLy8gV3JpdGUgYnVpbHQtaW4gZXh0ZW5zaW9uIGJlaGF2aW9ycy4KLSAgICB3
cml0ZUV4dGVuc2lvbkJlaGF2aW9yKCk7CisgICAgd3JpdGVFeHRlbnNpb25CZWhhdmlvcihjb21w
aWxlT3B0aW9ucyk7CiAKICAgICAvLyBXcml0ZSBwcmFnbWFzIGFmdGVyIGV4dGVuc2lvbnMgYmVj
YXVzZSBzb21lIGRyaXZlcnMgY29uc2lkZXIgcHJhZ21hcwogICAgIC8vIGxpa2Ugbm9uLXByZXBy
b2Nlc3NvciB0b2tlbnMuCiAgICAgd3JpdGVQcmFnbWEoY29tcGlsZU9wdGlvbnMpOwogCi0gICAg
Ym9vbCBwcmVjaXNpb25FbXVsYXRpb24gPSBnZXRSZXNvdXJjZXMoKS5XRUJHTF9kZWJ1Z19zaGFk
ZXJfcHJlY2lzaW9uICYmIGdldFByYWdtYSgpLmRlYnVnU2hhZGVyUHJlY2lzaW9uOworICAgIGJv
b2wgcHJlY2lzaW9uRW11bGF0aW9uID0KKyAgICAgICAgZ2V0UmVzb3VyY2VzKCkuV0VCR0xfZGVi
dWdfc2hhZGVyX3ByZWNpc2lvbiAmJiBnZXRQcmFnbWEoKS5kZWJ1Z1NoYWRlclByZWNpc2lvbjsK
IAogICAgIGlmIChwcmVjaXNpb25FbXVsYXRpb24pCiAgICAgewpAQCAtNDYsNyArNjUsNyBAQCB2
b2lkIFRyYW5zbGF0b3JFU1NMOjp0cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QsIFNoQ29tcGls
ZU9wdGlvbnMgY29tcGlsZU9wdGlvbgogICAgIFJlY29yZENvbnN0YW50UHJlY2lzaW9uKHJvb3Qs
IGdldFRlbXBvcmFyeUluZGV4KCkpOwogCiAgICAgLy8gV3JpdGUgZW11bGF0ZWQgYnVpbHQtaW4g
ZnVuY3Rpb25zIGlmIG5lZWRlZC4KLSAgICBpZiAoIWdldEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9y
KCkuSXNPdXRwdXRFbXB0eSgpKQorICAgIGlmICghZ2V0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3Io
KS5pc091dHB1dEVtcHR5KCkpCiAgICAgewogICAgICAgICBzaW5rIDw8ICIvLyBCRUdJTjogR2Vu
ZXJhdGVkIGNvZGUgZm9yIGJ1aWx0LWluIGZ1bmN0aW9uIGVtdWxhdGlvblxuXG4iOwogICAgICAg
ICBpZiAoZ2V0U2hhZGVyVHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUikKQEAgLTYyLDcgKzgx
LDcgQEAgdm9pZCBUcmFuc2xhdG9yRVNTTDo6dHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBT
aENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb24KICAgICAgICAgICAgIHNpbmsgPDwgIiNkZWZp
bmUgd2ViZ2xfZW11X3ByZWNpc2lvbiBoaWdocFxuIjsKICAgICAgICAgfQogCi0gICAgICAgIGdl
dEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKCkuT3V0cHV0RW11bGF0ZWRGdW5jdGlvbnMoc2luayk7
CisgICAgICAgIGdldEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKCkub3V0cHV0RW11bGF0ZWRGdW5j
dGlvbnMoc2luayk7CiAgICAgICAgIHNpbmsgPDwgIi8vIEVORDogR2VuZXJhdGVkIGNvZGUgZm9y
IGJ1aWx0LWluIGZ1bmN0aW9uIGVtdWxhdGlvblxuXG4iOwogICAgIH0KIApAQCAtNzgsNyArOTcs
MTYgQEAgdm9pZCBUcmFuc2xhdG9yRVNTTDo6dHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBT
aENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb24KIAogICAgIC8vIFdyaXRlIHRyYW5zbGF0ZWQg
c2hhZGVyLgogICAgIFRPdXRwdXRFU1NMIG91dHB1dEVTU0woc2luaywgZ2V0QXJyYXlJbmRleENs
YW1waW5nU3RyYXRlZ3koKSwgZ2V0SGFzaEZ1bmN0aW9uKCksIGdldE5hbWVNYXAoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdldFN5bWJvbFRhYmxlKCksIHNoYWRlclZlciwgcHJlY2lz
aW9uRW11bGF0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFN5bWJvbFRhYmxl
KCksIGdldFNoYWRlclR5cGUoKSwgc2hhZGVyVmVyLCBwcmVjaXNpb25FbXVsYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlT3B0aW9ucyk7CisKKyAgICBpZiAoY29tcGls
ZU9wdGlvbnMgJiBTSF9UUkFOU0xBVEVfVklFV0lEX09WUl9UT19VTklGT1JNKQorICAgIHsKKyAg
ICAgICAgVE5hbWUgdW5pZm9ybU5hbWUoVFN0cmluZygiVmlld0lEX09WUiIpKTsKKyAgICAgICAg
dW5pZm9ybU5hbWUuc2V0SW50ZXJuYWwodHJ1ZSk7CisgICAgICAgIHNpbmsgPDwgImhpZ2hwIHVu
aWZvcm0gaW50ICIgPDwgb3V0cHV0RVNTTC5oYXNoTmFtZSh1bmlmb3JtTmFtZSkgPDwgIjtcbiI7
CisgICAgfQorCiAgICAgcm9vdC0+dHJhdmVyc2UoJm91dHB1dEVTU0wpOwogfQogCkBAIC04OCwy
MiArMTE2LDM5IEBAIGJvb2wgVHJhbnNsYXRvckVTU0w6OnNob3VsZEZsYXR0ZW5QcmFnbWFTdGRn
bEludmFyaWFudEFsbCgpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFRyYW5zbGF0b3JF
U1NMOjp3cml0ZUV4dGVuc2lvbkJlaGF2aW9yKCkgewotICAgIFRJbmZvU2lua0Jhc2UmIHNpbmsg
PSBnZXRJbmZvU2luaygpLm9iajsKLSAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dEJl
aGF2aW9yID0gZ2V0RXh0ZW5zaW9uQmVoYXZpb3IoKTsKLSAgICBmb3IgKFRFeHRlbnNpb25CZWhh
dmlvcjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGV4dEJlaGF2aW9yLmJlZ2luKCk7Ci0gICAgICAg
ICBpdGVyICE9IGV4dEJlaGF2aW9yLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAgICAgaWYgKGl0ZXIt
PnNlY29uZCAhPSBFQmhVbmRlZmluZWQpIHsKLSAgICAgICAgICAgIGlmIChnZXRSZXNvdXJjZXMo
KS5OVl9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2ggJiYgaXRlci0+Zmlyc3QgPT0gIkdMX0VYVF9z
aGFkZXJfZnJhbWVidWZmZXJfZmV0Y2giKSB7Cit2b2lkIFRyYW5zbGF0b3JFU1NMOjp3cml0ZUV4
dGVuc2lvbkJlaGF2aW9yKFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpCit7CisgICAg
VEluZm9TaW5rQmFzZSAmc2luayAgICAgICAgICAgICAgICAgICA9IGdldEluZm9TaW5rKCkub2Jq
OworICAgIGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciAmZXh0QmVoYXZpb3IgPSBnZXRFeHRlbnNp
b25CZWhhdmlvcigpOworICAgIGZvciAoVEV4dGVuc2lvbkJlaGF2aW9yOjpjb25zdF9pdGVyYXRv
ciBpdGVyID0gZXh0QmVoYXZpb3IuYmVnaW4oKTsgaXRlciAhPSBleHRCZWhhdmlvci5lbmQoKTsK
KyAgICAgICAgICsraXRlcikKKyAgICB7CisgICAgICAgIGlmIChpdGVyLT5zZWNvbmQgIT0gRUJo
VW5kZWZpbmVkKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZ2V0UmVzb3VyY2VzKCkuTlZf
c2hhZGVyX2ZyYW1lYnVmZmVyX2ZldGNoICYmCisgICAgICAgICAgICAgICAgaXRlci0+Zmlyc3Qg
PT0gIkdMX0VYVF9zaGFkZXJfZnJhbWVidWZmZXJfZmV0Y2giKQorICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgIHNpbmsgPDwgIiNleHRlbnNpb24gR0xfTlZfc2hhZGVyX2ZyYW1lYnVmZmVy
X2ZldGNoIDogIgogICAgICAgICAgICAgICAgICAgICAgPDwgZ2V0QmVoYXZpb3JTdHJpbmcoaXRl
ci0+c2Vjb25kKSA8PCAiXG4iOwotICAgICAgICAgICAgfSBlbHNlIGlmIChnZXRSZXNvdXJjZXMo
KS5OVl9kcmF3X2J1ZmZlcnMgJiYgaXRlci0+Zmlyc3QgPT0gIkdMX0VYVF9kcmF3X2J1ZmZlcnMi
KSB7Ci0gICAgICAgICAgICAgICAgc2luayA8PCAiI2V4dGVuc2lvbiBHTF9OVl9kcmF3X2J1ZmZl
cnMgOiAiCi0gICAgICAgICAgICAgICAgICAgICA8PCBnZXRCZWhhdmlvclN0cmluZyhpdGVyLT5z
ZWNvbmQpIDw8ICJcbiI7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNp
bmsgPDwgIiNleHRlbnNpb24gIiA8PCBpdGVyLT5maXJzdCA8PCAiIDogIgotICAgICAgICAgICAg
ICAgICAgICAgPDwgZ2V0QmVoYXZpb3JTdHJpbmcoaXRlci0+c2Vjb25kKSA8PCAiXG4iOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZ2V0UmVzb3VyY2VzKCkuTlZfZHJhd19i
dWZmZXJzICYmIGl0ZXItPmZpcnN0ID09ICJHTF9FWFRfZHJhd19idWZmZXJzIikKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBzaW5rIDw8ICIjZXh0ZW5zaW9uIEdMX05WX2RyYXdfYnVm
ZmVycyA6ICIgPDwgZ2V0QmVoYXZpb3JTdHJpbmcoaXRlci0+c2Vjb25kKQorICAgICAgICAgICAg
ICAgICAgICAgPDwgIlxuIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNv
bXBpbGVPcHRpb25zICYgU0hfVFJBTlNMQVRFX1ZJRVdJRF9PVlJfVE9fVU5JRk9STSAmJgorICAg
ICAgICAgICAgICAgICAgICAgKGl0ZXItPmZpcnN0ID09ICJHTF9PVlJfbXVsdGl2aWV3IiB8fCBp
dGVyLT5maXJzdCA9PSAiR0xfT1ZSX211bHRpdmlldzIiKSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAvLyBObyBvdXRwdXQKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBzaW5rIDw8ICIjZXh0ZW5zaW9uICIgPDwgaXRlci0+Zmlyc3QgPDwgIiA6ICIgPDwgZ2V0QmVo
YXZpb3JTdHJpbmcoaXRlci0+c2Vjb25kKQorICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIH0KKworfSAgLy8gbmFtZXNwYWNlIHNo
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9UcmFuc2xhdG9yRVNTTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuaAppbmRleCBmMTQ3Y2EwNjYxMC4uYjRlNDkx
ZGUxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuaApAQCAtOSwxNyArOSwyNSBA
QAogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Db21waWxlci5oIgogCituYW1lc3Bh
Y2Ugc2gKK3sKKwogY2xhc3MgVHJhbnNsYXRvckVTU0wgOiBwdWJsaWMgVENvbXBpbGVyCiB7CiAg
IHB1YmxpYzoKICAgICBUcmFuc2xhdG9yRVNTTChzaDo6R0xlbnVtIHR5cGUsIFNoU2hhZGVyU3Bl
YyBzcGVjKTsKIAogICBwcm90ZWN0ZWQ6CisgICAgdm9pZCBpbml0QnVpbHRJbkZ1bmN0aW9uRW11
bGF0b3IoQnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IgKmVtdSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zKSBvdmVycmlk
ZTsKKwogICAgIHZvaWQgdHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBTaENvbXBpbGVPcHRp
b25zIGNvbXBpbGVPcHRpb25zKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZEZsYXR0ZW5QcmFn
bWFTdGRnbEludmFyaWFudEFsbCgpIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6Ci0gICAgdm9pZCB3
cml0ZUV4dGVuc2lvbkJlaGF2aW9yKCk7CisgICAgdm9pZCB3cml0ZUV4dGVuc2lvbkJlaGF2aW9y
KFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMpOwogfTsKIAorfSAgLy8gbmFtZXNwYWNl
IHNoCisKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9UUkFOU0xBVE9SRVNTTF9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvVHJhbnNsYXRvckdMU0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckdMU0wuY3BwCmluZGV4IGEwZWUwMWY1NWI4Li4yNTNh
NTc5ZDcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvVHJhbnNsYXRvckdMU0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JHTFNMLmNwcApAQCAtMTIsMTIg
KzEyLDE1IEBACiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9FeHRlbnNpb25HTFNMLmgi
CiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9PdXRwdXRHTFNMLmgiCiAjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9SZXdyaXRlVGV4ZWxGZXRjaE9mZnNldC5oIgorI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvUmV3cml0ZVVuYXJ5TWludXNPcGVyYXRvckZsb2F0LmgiCiAj
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9WZXJzaW9uR0xTTC5oIgogCi1UcmFuc2xhdG9y
R0xTTDo6VHJhbnNsYXRvckdMU0woc2g6OkdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFNoU2hhZGVyU3BlYyBzcGVjLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKLSAgICA6IFRDb21waWxlcih0eXBlLCBzcGVj
LCBvdXRwdXQpIHsKK25hbWVzcGFjZSBzaAoreworCitUcmFuc2xhdG9yR0xTTDo6VHJhbnNsYXRv
ckdMU0woc2g6OkdMZW51bSB0eXBlLCBTaFNoYWRlclNwZWMgc3BlYywgU2hTaGFkZXJPdXRwdXQg
b3V0cHV0KQorICAgIDogVENvbXBpbGVyKHR5cGUsIHNwZWMsIG91dHB1dCkKK3sKIH0KIAogdm9p
ZCBUcmFuc2xhdG9yR0xTTDo6aW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKEJ1aWx0SW5GdW5j
dGlvbkVtdWxhdG9yICplbXUsCkBAIC0zMywxMyArMzYsMTggQEAgdm9pZCBUcmFuc2xhdG9yR0xT
TDo6aW5pdEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yKEJ1aWx0SW5GdW5jdGlvbkVtdWxhdG9yICpl
bXUsCiAgICAgICAgIEluaXRCdWlsdEluSXNuYW5GdW5jdGlvbkVtdWxhdG9yRm9yR0xTTFdvcmth
cm91bmRzKGVtdSwgZ2V0U2hhZGVyVmVyc2lvbigpKTsKICAgICB9CiAKKyAgICBpZiAoY29tcGls
ZU9wdGlvbnMgJiBTSF9FTVVMQVRFX0FUQU4yX0ZMT0FUX0ZVTkNUSU9OKQorICAgIHsKKyAgICAg
ICAgSW5pdEJ1aWx0SW5BdGFuRnVuY3Rpb25FbXVsYXRvckZvckdMU0xXb3JrYXJvdW5kcyhlbXUp
OworICAgIH0KKwogICAgIGludCB0YXJnZXRHTFNMVmVyc2lvbiA9IFNoYWRlck91dHB1dFR5cGVU
b0dMU0xWZXJzaW9uKGdldE91dHB1dFR5cGUoKSk7CiAgICAgSW5pdEJ1aWx0SW5GdW5jdGlvbkVt
dWxhdG9yRm9yR0xTTE1pc3NpbmdGdW5jdGlvbnMoZW11LCBnZXRTaGFkZXJUeXBlKCksIHRhcmdl
dEdMU0xWZXJzaW9uKTsKIH0KIAogdm9pZCBUcmFuc2xhdG9yR0xTTDo6dHJhbnNsYXRlKFRJbnRl
cm1Ob2RlICpyb290LCBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zKQogewotICAgIFRJ
bmZvU2lua0Jhc2UmIHNpbmsgPSBnZXRJbmZvU2luaygpLm9iajsKKyAgICBUSW5mb1NpbmtCYXNl
ICZzaW5rID0gZ2V0SW5mb1NpbmsoKS5vYmo7CiAKICAgICAvLyBXcml0ZSBHTFNMIHZlcnNpb24u
CiAgICAgd3JpdGVWZXJzaW9uKHJvb3QpOwpAQCAtNTUsOSArNjMsMTEgQEAgdm9pZCBUcmFuc2xh
dG9yR0xTTDo6dHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBTaENvbXBpbGVPcHRpb25zIGNv
bXBpbGVPcHRpb24KICAgICAvLyB2YXJpYWJsZXMuIEl0IHNob3VsZCBiZSBoYXJtbGVzcyB0byBk
byB0aGlzIHR3aWNlIGluIHRoZSBjYXNlIHRoYXQgdGhlIHNoYWRlciBhbHNvIGV4cGxpY2l0bHkK
ICAgICAvLyBkaWQgdGhpcy4gSG93ZXZlciwgaXQncyBpbXBvcnRhbnQgdG8gZW1pdCBpbnZhcmlh
bnQgcXVhbGlmaWVycyBvbmx5IGZvciB0aG9zZSBidWlsdC1pbgogICAgIC8vIHZhcmlhYmxlcyB0
aGF0IGFyZSBhY3R1YWxseSB1c2VkLCB0byBhdm9pZCBhZmZlY3RpbmcgdGhlIGJlaGF2aW9yIG9m
IHRoZSBzaGFkZXIuCi0gICAgaWYgKChjb21waWxlT3B0aW9ucyAmIFNIX0ZMQVRURU5fUFJBR01B
X1NUREdMX0lOVkFSSUFOVF9BTEwpICYmIGdldFByYWdtYSgpLnN0ZGdsLmludmFyaWFudEFsbCkK
KyAgICBpZiAoKGNvbXBpbGVPcHRpb25zICYgU0hfRkxBVFRFTl9QUkFHTUFfU1RER0xfSU5WQVJJ
QU5UX0FMTCkgIT0gMCAmJgorICAgICAgICBnZXRQcmFnbWEoKS5zdGRnbC5pbnZhcmlhbnRBbGwg
JiYKKyAgICAgICAgIXNoOjpSZW1vdmVJbnZhcmlhbnQoZ2V0U2hhZGVyVHlwZSgpLCBnZXRTaGFk
ZXJWZXJzaW9uKCksIGdldE91dHB1dFR5cGUoKSwgY29tcGlsZU9wdGlvbnMpKQogICAgIHsKLSAg
ICAgICAgY29sbGVjdFZhcmlhYmxlcyhyb290KTsKKyAgICAgICAgQVNTRVJUKHdlcmVWYXJpYWJs
ZXNDb2xsZWN0ZWQoKSk7CiAKICAgICAgICAgc3dpdGNoIChnZXRTaGFkZXJUeXBlKCkpCiAgICAg
ICAgIHsKQEAgLTg3LDcgKzk3LDEzIEBAIHZvaWQgVHJhbnNsYXRvckdMU0w6OnRyYW5zbGF0ZShU
SW50ZXJtTm9kZSAqcm9vdCwgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9uCiAgICAgICAg
IHNoOjpSZXdyaXRlVGV4ZWxGZXRjaE9mZnNldChyb290LCBnZXRTeW1ib2xUYWJsZSgpLCBnZXRT
aGFkZXJWZXJzaW9uKCkpOwogICAgIH0KIAotICAgIGJvb2wgcHJlY2lzaW9uRW11bGF0aW9uID0g
Z2V0UmVzb3VyY2VzKCkuV0VCR0xfZGVidWdfc2hhZGVyX3ByZWNpc2lvbiAmJiBnZXRQcmFnbWEo
KS5kZWJ1Z1NoYWRlclByZWNpc2lvbjsKKyAgICBpZiAoKGNvbXBpbGVPcHRpb25zICYgU0hfUkVX
UklURV9GTE9BVF9VTkFSWV9NSU5VU19PUEVSQVRPUikgIT0gMCkKKyAgICB7CisgICAgICAgIHNo
OjpSZXdyaXRlVW5hcnlNaW51c09wZXJhdG9yRmxvYXQocm9vdCk7CisgICAgfQorCisgICAgYm9v
bCBwcmVjaXNpb25FbXVsYXRpb24gPQorICAgICAgICBnZXRSZXNvdXJjZXMoKS5XRUJHTF9kZWJ1
Z19zaGFkZXJfcHJlY2lzaW9uICYmIGdldFByYWdtYSgpLmRlYnVnU2hhZGVyUHJlY2lzaW9uOwog
CiAgICAgaWYgKHByZWNpc2lvbkVtdWxhdGlvbikKICAgICB7CkBAIC05OCwxMSArMTE0LDExIEBA
IHZvaWQgVHJhbnNsYXRvckdMU0w6OnRyYW5zbGF0ZShUSW50ZXJtTm9kZSAqcm9vdCwgU2hDb21w
aWxlT3B0aW9ucyBjb21waWxlT3B0aW9uCiAgICAgfQogCiAgICAgLy8gV3JpdGUgZW11bGF0ZWQg
YnVpbHQtaW4gZnVuY3Rpb25zIGlmIG5lZWRlZC4KLSAgICBpZiAoIWdldEJ1aWx0SW5GdW5jdGlv
bkVtdWxhdG9yKCkuSXNPdXRwdXRFbXB0eSgpKQorICAgIGlmICghZ2V0QnVpbHRJbkZ1bmN0aW9u
RW11bGF0b3IoKS5pc091dHB1dEVtcHR5KCkpCiAgICAgewogICAgICAgICBzaW5rIDw8ICIvLyBC
RUdJTjogR2VuZXJhdGVkIGNvZGUgZm9yIGJ1aWx0LWluIGZ1bmN0aW9uIGVtdWxhdGlvblxuXG4i
OwogICAgICAgICBzaW5rIDw8ICIjZGVmaW5lIHdlYmdsX2VtdV9wcmVjaXNpb25cblxuIjsKLSAg
ICAgICAgZ2V0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IoKS5PdXRwdXRFbXVsYXRlZEZ1bmN0aW9u
cyhzaW5rKTsKKyAgICAgICAgZ2V0QnVpbHRJbkZ1bmN0aW9uRW11bGF0b3IoKS5vdXRwdXRFbXVs
YXRlZEZ1bmN0aW9ucyhzaW5rKTsKICAgICAgICAgc2luayA8PCAiLy8gRU5EOiBHZW5lcmF0ZWQg
Y29kZSBmb3IgYnVpbHQtaW4gZnVuY3Rpb24gZW11bGF0aW9uXG5cbiI7CiAgICAgfQogCkBAIC0x
ODUsMTMgKzIwMSwxNyBAQCB2b2lkIFRyYW5zbGF0b3JHTFNMOjp0cmFuc2xhdGUoVEludGVybU5v
ZGUgKnJvb3QsIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbgogICAgIH0KIAogICAgIC8v
IFdyaXRlIHRyYW5zbGF0ZWQgc2hhZGVyLgotICAgIFRPdXRwdXRHTFNMIG91dHB1dEdMU0woc2lu
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0
ZWd5KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRIYXNoRnVuY3Rpb24oKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdldE5hbWVNYXAoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdldFN5bWJvbFRhYmxlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBn
ZXRTaGFkZXJWZXJzaW9uKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRPdXRwdXRU
eXBlKCkpOworICAgIFRPdXRwdXRHTFNMIG91dHB1dEdMU0woc2luaywgZ2V0QXJyYXlJbmRleENs
YW1waW5nU3RyYXRlZ3koKSwgZ2V0SGFzaEZ1bmN0aW9uKCksIGdldE5hbWVNYXAoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdldFN5bWJvbFRhYmxlKCksIGdldFNoYWRlclR5cGUoKSwg
Z2V0U2hhZGVyVmVyc2lvbigpLCBnZXRPdXRwdXRUeXBlKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb21waWxlT3B0aW9ucyk7CisKKyAgICBpZiAoY29tcGlsZU9wdGlvbnMgJiBTSF9U
UkFOU0xBVEVfVklFV0lEX09WUl9UT19VTklGT1JNKQorICAgIHsKKyAgICAgICAgVE5hbWUgdW5p
Zm9ybU5hbWUoVFN0cmluZygiVmlld0lEX09WUiIpKTsKKyAgICAgICAgdW5pZm9ybU5hbWUuc2V0
SW50ZXJuYWwodHJ1ZSk7CisgICAgICAgIHNpbmsgPDwgInVuaWZvcm0gaW50ICIgPDwgb3V0cHV0
R0xTTC5oYXNoTmFtZSh1bmlmb3JtTmFtZSkgPDwgIjtcbiI7CisgICAgfQorCiAgICAgcm9vdC0+
dHJhdmVyc2UoJm91dHB1dEdMU0wpOwogfQogCkBAIC0yMDIsNiArMjIyLDEyIEBAIGJvb2wgVHJh
bnNsYXRvckdMU0w6OnNob3VsZEZsYXR0ZW5QcmFnbWFTdGRnbEludmFyaWFudEFsbCgpCiAgICAg
cmV0dXJuIElzR0xTTDEzME9yTmV3ZXIoZ2V0T3V0cHV0VHlwZSgpKTsKIH0KIAorYm9vbCBUcmFu
c2xhdG9yR0xTTDo6c2hvdWxkQ29sbGVjdFZhcmlhYmxlcyhTaENvbXBpbGVPcHRpb25zIGNvbXBp
bGVPcHRpb25zKQoreworICAgIHJldHVybiAoY29tcGlsZU9wdGlvbnMgJiBTSF9GTEFUVEVOX1BS
QUdNQV9TVERHTF9JTlZBUklBTlRfQUxMKSB8fAorICAgICAgICAgICBUQ29tcGlsZXI6OnNob3Vs
ZENvbGxlY3RWYXJpYWJsZXMoY29tcGlsZU9wdGlvbnMpOworfQorCiB2b2lkIFRyYW5zbGF0b3JH
TFNMOjp3cml0ZVZlcnNpb24oVEludGVybU5vZGUgKnJvb3QpCiB7CiAgICAgVFZlcnNpb25HTFNM
IHZlcnNpb25HTFNMKGdldFNoYWRlclR5cGUoKSwgZ2V0UHJhZ21hKCksIGdldE91dHB1dFR5cGUo
KSk7CkBAIC0yMTEsMTUgKzIzNywxNSBAQCB2b2lkIFRyYW5zbGF0b3JHTFNMOjp3cml0ZVZlcnNp
b24oVEludGVybU5vZGUgKnJvb3QpCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gdmVyc2lvbiBkaXJl
Y3RpdmUgaW4gdGhlIHNoYWRlciwgMTEwIGlzIGltcGxpZWQuCiAgICAgaWYgKHZlcnNpb24gPiAx
MTApCiAgICAgewotICAgICAgICBUSW5mb1NpbmtCYXNlJiBzaW5rID0gZ2V0SW5mb1NpbmsoKS5v
Ymo7CisgICAgICAgIFRJbmZvU2lua0Jhc2UgJnNpbmsgPSBnZXRJbmZvU2luaygpLm9iajsKICAg
ICAgICAgc2luayA8PCAiI3ZlcnNpb24gIiA8PCB2ZXJzaW9uIDw8ICJcbiI7CiAgICAgfQogfQog
CiB2b2lkIFRyYW5zbGF0b3JHTFNMOjp3cml0ZUV4dGVuc2lvbkJlaGF2aW9yKFRJbnRlcm1Ob2Rl
ICpyb290KQogewotICAgIFRJbmZvU2lua0Jhc2UmIHNpbmsgPSBnZXRJbmZvU2luaygpLm9iajsK
LSAgICBjb25zdCBURXh0ZW5zaW9uQmVoYXZpb3ImIGV4dEJlaGF2aW9yID0gZ2V0RXh0ZW5zaW9u
QmVoYXZpb3IoKTsKKyAgICBUSW5mb1NpbmtCYXNlICZzaW5rICAgICAgICAgICAgICAgICAgID0g
Z2V0SW5mb1NpbmsoKS5vYmo7CisgICAgY29uc3QgVEV4dGVuc2lvbkJlaGF2aW9yICZleHRCZWhh
dmlvciA9IGdldEV4dGVuc2lvbkJlaGF2aW9yKCk7CiAgICAgZm9yIChjb25zdCBhdXRvICZpdGVy
IDogZXh0QmVoYXZpb3IpCiAgICAgewogICAgICAgICBpZiAoaXRlci5zZWNvbmQgPT0gRUJoVW5k
ZWZpbmVkKQpAQCAtMjQ2LDI2ICsyNzIsMjEgQEAgdm9pZCBUcmFuc2xhdG9yR0xTTDo6d3JpdGVF
eHRlbnNpb25CZWhhdmlvcihUSW50ZXJtTm9kZSAqcm9vdCkKICAgICB9CiAKICAgICAvLyBHTFNM
IEVTIDMgZXhwbGljaXQgbG9jYXRpb24gcXVhbGlmaWVycyBuZWVkIHRvIHVzZSBhbiBleHRlbnNp
b24gYmVmb3JlIEdMU0wgMzMwCi0gICAgaWYgKGdldFNoYWRlclZlcnNpb24oKSA+PSAzMDAgJiYg
Z2V0T3V0cHV0VHlwZSgpIDwgU0hfR0xTTF8zMzBfQ09SRV9PVVRQVVQpCisgICAgaWYgKGdldFNo
YWRlclZlcnNpb24oKSA+PSAzMDAgJiYgZ2V0T3V0cHV0VHlwZSgpIDwgU0hfR0xTTF8zMzBfQ09S
RV9PVVRQVVQgJiYKKyAgICAgICAgZ2V0U2hhZGVyVHlwZSgpICE9IEdMX0NPTVBVVEVfU0hBREVS
KQogICAgIHsKICAgICAgICAgc2luayA8PCAiI2V4dGVuc2lvbiBHTF9BUkJfZXhwbGljaXRfYXR0
cmliX2xvY2F0aW9uIDogcmVxdWlyZVxuIjsKICAgICB9CiAKICAgICAvLyBOZWVkIHRvIGVuYWJs
ZSBncHVfc2hhZGVyNSB0byBoYXZlIGluZGV4IGNvbnN0YW50IHNhbXBsZXIgYXJyYXkgaW5kZXhp
bmcKLSAgICBpZiAoZ2V0T3V0cHV0VHlwZSgpICE9IFNIX0VTU0xfT1VUUFVUICYmIGdldE91dHB1
dFR5cGUoKSA8IFNIX0dMU0xfNDAwX0NPUkVfT1VUUFVUKQorICAgIGlmIChnZXRPdXRwdXRUeXBl
KCkgIT0gU0hfRVNTTF9PVVRQVVQgJiYgZ2V0T3V0cHV0VHlwZSgpIDwgU0hfR0xTTF80MDBfQ09S
RV9PVVRQVVQgJiYKKyAgICAgICAgZ2V0U2hhZGVyVmVyc2lvbigpID09IDEwMCkKICAgICB7Ci0g
ICAgICAgIHNpbmsgPDwgIiNleHRlbnNpb24gR0xfQVJCX2dwdV9zaGFkZXI1IDogIjsKLQotICAg
ICAgICAvLyBEb24ndCB1c2UgInJlcXVpcmUiIG9uIFdlYkdMIDEgdG8gYXZvaWQgYnJlYWtpbmcg
V2ViR0wgb24gZHJpdmVycyB0aGF0IHNpbGVudGx5Ci0gICAgICAgIC8vIHN1cHBvcnQgaW5kZXgg
Y29uc3RhbnQgc2FtcGxlciBhcnJheSBpbmRleGluZywgYnV0IGRvbid0IGhhdmUgdGhlIGV4dGVu
c2lvbi4KLSAgICAgICAgaWYgKGdldFNoYWRlclZlcnNpb24oKSA+PSAzMDApCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHNpbmsgPDwgInJlcXVpcmVcbiI7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBzaW5rIDw8ICJlbmFibGVcbiI7Ci0gICAgICAgIH0K
KyAgICAgICAgLy8gRG9uJ3QgdXNlICJyZXF1aXJlIiBvbiB0byBhdm9pZCBicmVha2luZyBXZWJH
TCAxIG9uIGRyaXZlcnMgdGhhdCBzaWxlbnRseQorICAgICAgICAvLyBzdXBwb3J0IGluZGV4IGNv
bnN0YW50IHNhbXBsZXIgYXJyYXkgaW5kZXhpbmcsIGJ1dCBkb24ndCBoYXZlIHRoZSBleHRlbnNp
b24gb3IKKyAgICAgICAgLy8gb24gZHJpdmVycyB0aGF0IGRvbid0IGhhdmUgdGhlIGV4dGVuc2lv
biBhdCBhbGwgYXMgaXQgd291bGQgYnJlYWsgV2ViR0wgMSBmb3IKKyAgICAgICAgLy8gc29tZSB1
c2Vycy4KKyAgICAgICAgc2luayA8PCAiI2V4dGVuc2lvbiBHTF9BUkJfZ3B1X3NoYWRlcjUgOiBl
bmFibGVcbiI7CiAgICAgfQogCiAgICAgVEV4dGVuc2lvbkdMU0wgZXh0ZW5zaW9uR0xTTChnZXRP
dXRwdXRUeXBlKCkpOwpAQCAtMjg5LDMgKzMxMCw1IEBAIHZvaWQgVHJhbnNsYXRvckdMU0w6OmNv
bmRpdGlvbmFsbHlPdXRwdXRJbnZhcmlhbnREZWNsYXJhdGlvbihjb25zdCBjaGFyICpidWlsdGlu
CiAgICAgICAgIHNpbmsgPDwgImludmFyaWFudCAiIDw8IGJ1aWx0aW5WYXJ5aW5nTmFtZSA8PCAi
O1xuIjsKICAgICB9CiB9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckdMU0wu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5z
bGF0b3JHTFNMLmgKaW5kZXggZjIzNGMxOGVjYTIuLmQ2ZjY5NDgyNDY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9y
R0xTTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1RyYW5zbGF0b3JHTFNMLmgKQEAgLTksNiArOSw5IEBACiAKICNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL0NvbXBpbGVyLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBjbGFzcyBUcmFu
c2xhdG9yR0xTTCA6IHB1YmxpYyBUQ29tcGlsZXIKIHsKICAgcHVibGljOgpAQCAtMjAsNiArMjMs
NyBAQCBjbGFzcyBUcmFuc2xhdG9yR0xTTCA6IHB1YmxpYyBUQ29tcGlsZXIKIAogICAgIHZvaWQg
dHJhbnNsYXRlKFRJbnRlcm1Ob2RlICpyb290LCBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRp
b25zKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZEZsYXR0ZW5QcmFnbWFTdGRnbEludmFyaWFu
dEFsbCgpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkQ29sbGVjdFZhcmlhYmxlcyhTaENvbXBp
bGVPcHRpb25zIGNvbXBpbGVPcHRpb25zKSBvdmVycmlkZTsKIAogICBwcml2YXRlOgogICAgIHZv
aWQgd3JpdGVWZXJzaW9uKFRJbnRlcm1Ob2RlICpyb290KTsKQEAgLTI3LDQgKzMxLDYgQEAgY2xh
c3MgVHJhbnNsYXRvckdMU0wgOiBwdWJsaWMgVENvbXBpbGVyCiAgICAgdm9pZCBjb25kaXRpb25h
bGx5T3V0cHV0SW52YXJpYW50RGVjbGFyYXRpb24oY29uc3QgY2hhciAqYnVpbHRpblZhcnlpbmdO
YW1lKTsKIH07CiAKK30gIC8vIG5hbWVzcGFjZSBzaAorCiAjZW5kaWYgIC8vIENPTVBJTEVSX1RS
QU5TTEFUT1JfVFJBTlNMQVRPUkdMU0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNM
LmNwcAppbmRleCBmYjAxMWRhNzY2Ny4uMzBkNDI3MWY0ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JITFNMLmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9U
cmFuc2xhdG9ySExTTC5jcHAKQEAgLTI0LDYgKzI0LDkgQEAKICNpbmNsdWRlICJjb21waWxlci90
cmFuc2xhdG9yL1NwbGl0U2VxdWVuY2VPcGVyYXRvci5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0VG9JZi5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwog
VHJhbnNsYXRvckhMU0w6OlRyYW5zbGF0b3JITFNMKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJT
cGVjIHNwZWMsIFNoU2hhZGVyT3V0cHV0IG91dHB1dCkKICAgICA6IFRDb21waWxlcih0eXBlLCBz
cGVjLCBvdXRwdXQpCiB7CkBAIC0zMiwyMCArMzUsMjMgQEAgVHJhbnNsYXRvckhMU0w6OlRyYW5z
bGF0b3JITFNMKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIFNoU2hhZGVyT3V0
cHUKIHZvaWQgVHJhbnNsYXRvckhMU0w6OnRyYW5zbGF0ZShUSW50ZXJtTm9kZSAqcm9vdCwgU2hD
b21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykKIHsKICAgICBjb25zdCBTaEJ1aWx0SW5SZXNv
dXJjZXMgJnJlc291cmNlcyA9IGdldFJlc291cmNlcygpOwotICAgIGludCBudW1SZW5kZXJUYXJn
ZXRzID0gcmVzb3VyY2VzLkVYVF9kcmF3X2J1ZmZlcnMgPyByZXNvdXJjZXMuTWF4RHJhd0J1ZmZl
cnMgOiAxOworICAgIGludCBudW1SZW5kZXJUYXJnZXRzICAgICAgICAgICAgICAgID0gcmVzb3Vy
Y2VzLkVYVF9kcmF3X2J1ZmZlcnMgPyByZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgOiAxOwogCiAg
ICAgc2g6OkFkZERlZmF1bHRSZXR1cm5TdGF0ZW1lbnRzKHJvb3QpOwogCi0gICAgU2VwYXJhdGVE
ZWNsYXJhdGlvbnMocm9vdCk7Ci0KICAgICAvLyBOb3RlIHRoYXQgU2ltcGxpZnlMb29wQ29uZGl0
aW9ucyBuZWVkcyB0byBiZSBydW4gYmVmb3JlIGFueSBvdGhlciBBU1QgdHJhbnNmb3JtYXRpb25z
IHRoYXQKICAgICAvLyBtYXkgbmVlZCB0byBnZW5lcmF0ZSBuZXcgc3RhdGVtZW50cyBmcm9tIGxv
b3AgY29uZGl0aW9ucyBvciBsb29wIGV4cHJlc3Npb25zLgogICAgIFNpbXBsaWZ5TG9vcENvbmRp
dGlvbnMocm9vdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVybU5vZGVQYXR0ZXJu
TWF0Y2hlcjo6a0V4cHJlc3Npb25SZXR1cm5pbmdBcnJheSB8CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVyOjprVW5mb2xkZWRTaG9ydENpcmN1
aXRFeHByZXNzaW9uIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlcm1Ob2Rl
UGF0dGVybk1hdGNoZXI6OmtEeW5hbWljSW5kZXhpbmdPZlZlY3Rvck9yTWF0cml4SW5MVmFsdWUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJtTm9kZVBhdHRlcm5NYXRjaGVy
OjprRHluYW1pY0luZGV4aW5nT2ZWZWN0b3JPck1hdHJpeEluTFZhbHVlIHwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJbnRlcm1Ob2RlUGF0dGVybk1hdGNoZXI6OmtNdWx0aURlY2xh
cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0VGVtcG9yYXJ5SW5kZXgoKSwg
Z2V0U3ltYm9sVGFibGUoKSwgZ2V0U2hhZGVyVmVyc2lvbigpKTsKIAorICAgIC8vIE5vdGUgdGhh
dCBzZXBhcmF0ZSBkZWNsYXJhdGlvbnMgbmVlZCB0byBiZSBydW4gYmVmb3JlIG90aGVyIEFTVCB0
cmFuc2Zvcm1hdGlvbnMgdGhhdAorICAgIC8vIGdlbmVyYXRlIG5ldyBzdGF0ZW1lbnRzIGZyb20g
ZXhwcmVzc2lvbnMuCisgICAgU2VwYXJhdGVEZWNsYXJhdGlvbnMocm9vdCk7CisKICAgICBTcGxp
dFNlcXVlbmNlT3BlcmF0b3Iocm9vdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJt
Tm9kZVBhdHRlcm5NYXRjaGVyOjprRXhwcmVzc2lvblJldHVybmluZ0FycmF5IHwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEludGVybU5vZGVQYXR0ZXJuTWF0Y2hlcjo6a1VuZm9sZGVk
U2hvcnRDaXJjdWl0RXhwcmVzc2lvbiB8CkBAIC0xMTIsMTIgKzExOCwxMyBAQCB2b2lkIFRyYW5z
bGF0b3JITFNMOjp0cmFuc2xhdGUoVEludGVybU5vZGUgKnJvb3QsIFNoQ29tcGlsZU9wdGlvbnMg
Y29tcGlsZU9wdGlvbgogICAgIH0KIAogICAgIHNoOjpPdXRwdXRITFNMIG91dHB1dEhMU0woZ2V0
U2hhZGVyVHlwZSgpLCBnZXRTaGFkZXJWZXJzaW9uKCksIGdldEV4dGVuc2lvbkJlaGF2aW9yKCks
Ci0gICAgICAgIGdldFNvdXJjZVBhdGgoKSwgZ2V0T3V0cHV0VHlwZSgpLCBudW1SZW5kZXJUYXJn
ZXRzLCBnZXRVbmlmb3JtcygpLCBjb21waWxlT3B0aW9ucyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnZXRTb3VyY2VQYXRoKCksIGdldE91dHB1dFR5cGUoKSwgbnVtUmVuZGVyVGFy
Z2V0cywgZ2V0VW5pZm9ybXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBp
bGVPcHRpb25zKTsKIAogICAgIG91dHB1dEhMU0wub3V0cHV0KHJvb3QsIGdldEluZm9TaW5rKCku
b2JqKTsKIAogICAgIG1JbnRlcmZhY2VCbG9ja1JlZ2lzdGVyTWFwID0gb3V0cHV0SExTTC5nZXRJ
bnRlcmZhY2VCbG9ja1JlZ2lzdGVyTWFwKCk7Ci0gICAgbVVuaWZvcm1SZWdpc3Rlck1hcCA9IG91
dHB1dEhMU0wuZ2V0VW5pZm9ybVJlZ2lzdGVyTWFwKCk7CisgICAgbVVuaWZvcm1SZWdpc3Rlck1h
cCAgICAgICAgPSBvdXRwdXRITFNMLmdldFVuaWZvcm1SZWdpc3Rlck1hcCgpOwogfQogCiBib29s
IFRyYW5zbGF0b3JITFNMOjpzaG91bGRGbGF0dGVuUHJhZ21hU3RkZ2xJbnZhcmlhbnRBbGwoKQpA
QCAtMTQxLDMgKzE0OCw1IEBAIGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1bnNpZ25lZCBp
bnQ+ICpUcmFuc2xhdG9ySExTTDo6Z2V0VW5pZm9ybVJlZ2lzdGVyTWFwCiB7CiAgICAgcmV0dXJu
ICZtVW5pZm9ybVJlZ2lzdGVyTWFwOwogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5z
bGF0b3JITFNMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci9UcmFuc2xhdG9ySExTTC5oCmluZGV4IGQyYWRkMTRlM2QwLi44NmQ5NjBmMmY2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VHJhbnNsYXRvckhMU0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9ySExTTC5oCkBAIC05LDEzICs5LDE0IEBACiAKICNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL0NvbXBpbGVyLmgiCiAKK25hbWVzcGFjZSBzaAorewor
CiBjbGFzcyBUcmFuc2xhdG9ySExTTCA6IHB1YmxpYyBUQ29tcGlsZXIKIHsKICAgcHVibGljOgog
ICAgIFRyYW5zbGF0b3JITFNMKHNoOjpHTGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMsIFNo
U2hhZGVyT3V0cHV0IG91dHB1dCk7Ci0jaWZkZWYgQU5HTEVfRU5BQkxFX0hMU0wKLSAgICBUcmFu
c2xhdG9ySExTTCAqZ2V0QXNUcmFuc2xhdG9ySExTTCgpIG92ZXJyaWRlIHsgcmV0dXJuIHRoaXM7
IH0KLSNlbmRpZiAvLyBBTkdMRV9FTkFCTEVfSExTTAorICAgIFRyYW5zbGF0b3JITFNMICpnZXRB
c1RyYW5zbGF0b3JITFNMKCkgeyByZXR1cm4gdGhpczsgfQogCiAgICAgYm9vbCBoYXNJbnRlcmZh
Y2VCbG9jayhjb25zdCBzdGQ6OnN0cmluZyAmaW50ZXJmYWNlQmxvY2tOYW1lKSBjb25zdDsKICAg
ICB1bnNpZ25lZCBpbnQgZ2V0SW50ZXJmYWNlQmxvY2tSZWdpc3Rlcihjb25zdCBzdGQ6OnN0cmlu
ZyAmaW50ZXJmYWNlQmxvY2tOYW1lKSBjb25zdDsKQEAgLTMzLDQgKzM0LDYgQEAgY2xhc3MgVHJh
bnNsYXRvckhMU0wgOiBwdWJsaWMgVENvbXBpbGVyCiAgICAgc3RkOjptYXA8c3RkOjpzdHJpbmcs
IHVuc2lnbmVkIGludD4gbVVuaWZvcm1SZWdpc3Rlck1hcDsKIH07CiAKK30gIC8vIG5hbWVzcGFj
ZSBzaAorCiAjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfVFJBTlNMQVRPUkhMU0xfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1RyYW5zbGF0b3JWdWxrYW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvclZ1bGthbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLjViYzdlYjA0MTRjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvclZ1
bGthbi5jcHAKQEAgLTAsMCArMSw3NyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBUcmFuc2xhdG9yVnVs
a2FuOgorLy8gICBBIEdMU0wtYmFzZWQgdHJhbnNsYXRvciB0aGF0IG91dHB1dHMgc2hhZGVycyB0
aGF0IGZpdCBHTF9LSFJfdnVsa2FuX2dsc2wuCisvLyAgIFRoZSBzaGFkZXJzIGFyZSB0aGVuIGZl
ZCBpbnRvIGdsc2xhbmcgdG8gc3BpdCBvdXQgU1BJUi1WIChsaWJBTkdMRS1zaWRlKS4KKy8vICAg
U2VlOiBodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS92dWxrYW4vc3BlY3MvbWlzYy9H
TF9LSFJfdnVsa2FuX2dsc2wudHh0CisvLworCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRv
ci9UcmFuc2xhdG9yVnVsa2FuLmgiCisKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvT3V0cHV0VnVsa2FuR0xTTC5oIgorCituYW1lc3BhY2Ugc2gK
K3sKKworVHJhbnNsYXRvclZ1bGthbjo6VHJhbnNsYXRvclZ1bGthbihzaDo6R0xlbnVtIHR5cGUs
IFNoU2hhZGVyU3BlYyBzcGVjKQorICAgIDogVENvbXBpbGVyKHR5cGUsIHNwZWMsIFNIX0dMU0xf
NDUwX0NPUkVfT1VUUFVUKQoreworfQorCit2b2lkIFRyYW5zbGF0b3JWdWxrYW46OnRyYW5zbGF0
ZShUSW50ZXJtTm9kZSAqcm9vdCwgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykKK3sK
KyAgICBUSW5mb1NpbmtCYXNlICZzaW5rID0gZ2V0SW5mb1NpbmsoKS5vYmo7CisKKyAgICBzaW5r
IDw8ICIjdmVyc2lvbiA0NTAgY29yZVxuIjsKKworICAgIC8vIERlY2xhcmUgZ2xfRnJhZ0NvbG9y
IGFuZCBnbEZyYWdEYXRhIGFzIHdlYmdsX0ZyYWdDb2xvciBhbmQgd2ViZ2xfRnJhZ0RhdGEKKyAg
ICAvLyBpZiBpdCdzIGNvcmUgcHJvZmlsZSBzaGFkZXJzIGFuZCB0aGV5IGFyZSB1c2VkLgorICAg
IGlmIChnZXRTaGFkZXJUeXBlKCkgPT0gR0xfRlJBR01FTlRfU0hBREVSKQorICAgIHsKKyAgICAg
ICAgYm9vbCBoYXNHTEZyYWdDb2xvciA9IGZhbHNlOworICAgICAgICBib29sIGhhc0dMRnJhZ0Rh
dGEgID0gZmFsc2U7CisKKyAgICAgICAgZm9yIChjb25zdCBhdXRvICZvdXRwdXRWYXIgOiBvdXRw
dXRWYXJpYWJsZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChvdXRwdXRWYXIubmFtZSA9
PSAiZ2xfRnJhZ0NvbG9yIikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
IWhhc0dMRnJhZ0NvbG9yKTsKKyAgICAgICAgICAgICAgICBoYXNHTEZyYWdDb2xvciA9IHRydWU7
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBl
bHNlIGlmIChvdXRwdXRWYXIubmFtZSA9PSAiZ2xfRnJhZ0RhdGEiKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIEFTU0VSVCghaGFzR0xGcmFnRGF0YSk7CisgICAgICAgICAgICAgICAg
aGFzR0xGcmFnRGF0YSA9IHRydWU7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKCEoaGFzR0xGcmFnQ29sb3IgJiYgaGFz
R0xGcmFnRGF0YSkpOworICAgICAgICBpZiAoaGFzR0xGcmFnQ29sb3IpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHNpbmsgPDwgImxheW91dChsb2NhdGlvbiA9IDApIG91dCB2ZWM0IHdlYmdsX0Zy
YWdDb2xvcjtcbiI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGhhc0dMRnJhZ0RhdGEpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHNpbmsgPDwgImxheW91dChsb2NhdGlvbiA9IDApIG91dCB2ZWM0
IHdlYmdsX0ZyYWdEYXRhW2dsX01heERyYXdCdWZmZXJzXTtcbiI7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBXcml0ZSB0cmFuc2xhdGVkIHNoYWRlci4KKyAgICBUT3V0cHV0VnVsa2FuR0xT
TCBvdXRwdXRHTFNMKHNpbmssIGdldEFycmF5SW5kZXhDbGFtcGluZ1N0cmF0ZWd5KCksIGdldEhh
c2hGdW5jdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TmFtZU1h
cCgpLCBnZXRTeW1ib2xUYWJsZSgpLCBnZXRTaGFkZXJUeXBlKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnZXRTaGFkZXJWZXJzaW9uKCksIGdldE91dHB1dFR5cGUoKSwgY29t
cGlsZU9wdGlvbnMpOworICAgIHJvb3QtPnRyYXZlcnNlKCZvdXRwdXRHTFNMKTsKK30KKworYm9v
bCBUcmFuc2xhdG9yVnVsa2FuOjpzaG91bGRGbGF0dGVuUHJhZ21hU3RkZ2xJbnZhcmlhbnRBbGwo
KQoreworICAgIC8vIE5vdCBuZWNlc3NhcnkuCisgICAgcmV0dXJuIGZhbHNlOworfQorCit9ICAv
LyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JWdWxrYW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JWdWxrYW4uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNWJjYTM5NGJiNDMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9U
cmFuc2xhdG9yVnVsa2FuLmgKQEAgLTAsMCArMSwzMiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykg
MjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBUcmFu
c2xhdG9yVnVsa2FuOgorLy8gICBBIEdMU0wtYmFzZWQgdHJhbnNsYXRvciB0aGF0IG91dHB1dHMg
c2hhZGVycyB0aGF0IGZpdCBHTF9LSFJfdnVsa2FuX2dsc2wuCisvLyAgIFRoZSBzaGFkZXJzIGFy
ZSB0aGVuIGZlZCBpbnRvIGdsc2xhbmcgdG8gc3BpdCBvdXQgU1BJUi1WIChsaWJBTkdMRS1zaWRl
KS4KKy8vICAgU2VlOiBodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS92dWxrYW4vc3Bl
Y3MvbWlzYy9HTF9LSFJfdnVsa2FuX2dsc2wudHh0CisvLworCisjaWZuZGVmIENPTVBJTEVSX1RS
QU5TTEFUT1JfVFJBTlNMQVRPUlZVTEtBTl9IXworI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9S
X1RSQU5TTEFUT1JWVUxLQU5fSF8KKworI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQ29t
cGlsZXIuaCIKKworbmFtZXNwYWNlIHNoCit7CisKK2NsYXNzIFRyYW5zbGF0b3JWdWxrYW4gOiBw
dWJsaWMgVENvbXBpbGVyCit7CisgIHB1YmxpYzoKKyAgICBUcmFuc2xhdG9yVnVsa2FuKHNoOjpH
TGVudW0gdHlwZSwgU2hTaGFkZXJTcGVjIHNwZWMpOworCisgIHByb3RlY3RlZDoKKyAgICB2b2lk
IHRyYW5zbGF0ZShUSW50ZXJtTm9kZSAqcm9vdCwgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0
aW9ucykgb3ZlcnJpZGU7CisgICAgYm9vbCBzaG91bGRGbGF0dGVuUHJhZ21hU3RkZ2xJbnZhcmlh
bnRBbGwoKSBvdmVycmlkZTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBzaAorCisjZW5kaWYgIC8v
IENPTVBJTEVSX1RSQU5TTEFUT1JfVFJBTlNMQVRPUlZVTEtBTl9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHlwZXMuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHlwZXMuY3Bw
CmluZGV4IDU5OGJlMjg3MTEzLi45NjY0NjIzZTNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHlwZXMuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1R5cGVzLmNwcApAQCAt
NSw3ICs1LDcgQEAKIC8vCiAKICNpZiBkZWZpbmVkKF9NU0NfVkVSKQotI3ByYWdtYSB3YXJuaW5n
KGRpc2FibGU6IDQ3MTgpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQ3MTgpCiAjZW5kaWYK
IAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHlwZXMuaCIKQEAgLTE2LDM1ICsxNiw5
OCBAQAogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxjbGltaXRzPgogCi1jb25zdCBj
aGFyKiBnZXRCYXNpY1N0cmluZyhUQmFzaWNUeXBlIHQpCituYW1lc3BhY2Ugc2gKK3sKKworY29u
c3QgY2hhciAqZ2V0QmFzaWNTdHJpbmcoVEJhc2ljVHlwZSB0KQogewogICAgIHN3aXRjaCAodCkK
ICAgICB7Ci0gICAgICAgIGNhc2UgRWJ0Vm9pZDogICAgICAgICAgICAgICAgIHJldHVybiAidm9p
ZCI7Ci0gICAgICAgIGNhc2UgRWJ0RmxvYXQ6ICAgICAgICAgICAgICAgIHJldHVybiAiZmxvYXQi
OwotICAgICAgICBjYXNlIEVidEludDogICAgICAgICAgICAgICAgICByZXR1cm4gImludCI7Ci0g
ICAgICAgIGNhc2UgRWJ0VUludDogICAgICAgICAgICAgICAgIHJldHVybiAidWludCI7Ci0gICAg
ICAgIGNhc2UgRWJ0Qm9vbDogICAgICAgICAgICAgICAgIHJldHVybiAiYm9vbCI7Ci0gICAgICAg
IGNhc2UgRWJ0U2FtcGxlcjJEOiAgICAgICAgICAgIHJldHVybiAic2FtcGxlcjJEIjsKLSAgICAg
ICAgY2FzZSBFYnRTYW1wbGVyM0Q6ICAgICAgICAgICAgcmV0dXJuICJzYW1wbGVyM0QiOwotICAg
ICAgICBjYXNlIEVidFNhbXBsZXJDdWJlOiAgICAgICAgICByZXR1cm4gInNhbXBsZXJDdWJlIjsK
LSAgICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6ICAgcmV0dXJuICJzYW1wbGVyRXh0
ZXJuYWxPRVMiOwotICAgICAgICBjYXNlIEVidFNhbXBsZXIyRFJlY3Q6ICAgICAgICByZXR1cm4g
InNhbXBsZXIyRFJlY3QiOwotICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5OiAgICAgICBy
ZXR1cm4gInNhbXBsZXIyREFycmF5IjsKLSAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEOiAgICAg
ICAgICAgcmV0dXJuICJpc2FtcGxlcjJEIjsKLSAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjNEOiAg
ICAgICAgICAgcmV0dXJuICJpc2FtcGxlcjNEIjsKLSAgICAgICAgY2FzZSBFYnRJU2FtcGxlckN1
YmU6ICAgICAgICAgcmV0dXJuICJpc2FtcGxlckN1YmUiOwotICAgICAgICBjYXNlIEVidElTYW1w
bGVyMkRBcnJheTogICAgICByZXR1cm4gImlzYW1wbGVyMkRBcnJheSI7Ci0gICAgICAgIGNhc2Ug
RWJ0VVNhbXBsZXIyRDogICAgICAgICAgIHJldHVybiAidXNhbXBsZXIyRCI7Ci0gICAgICAgIGNh
c2UgRWJ0VVNhbXBsZXIzRDogICAgICAgICAgIHJldHVybiAidXNhbXBsZXIzRCI7Ci0gICAgICAg
IGNhc2UgRWJ0VVNhbXBsZXJDdWJlOiAgICAgICAgIHJldHVybiAidXNhbXBsZXJDdWJlIjsKLSAg
ICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEQXJyYXk6ICAgICAgcmV0dXJuICJ1c2FtcGxlcjJEQXJy
YXkiOwotICAgICAgICBjYXNlIEVidFNhbXBsZXIyRFNoYWRvdzogICAgICByZXR1cm4gInNhbXBs
ZXIyRFNoYWRvdyI7Ci0gICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmVTaGFkb3c6ICAgIHJldHVy
biAic2FtcGxlckN1YmVTaGFkb3ciOwotICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5U2hh
ZG93OiByZXR1cm4gInNhbXBsZXIyREFycmF5U2hhZG93IjsKLSAgICAgICAgY2FzZSBFYnRTdHJ1
Y3Q6ICAgICAgICAgICAgICAgcmV0dXJuICJzdHJ1Y3R1cmUiOwotICAgICAgICBjYXNlIEVidElu
dGVyZmFjZUJsb2NrOiAgICAgICByZXR1cm4gImludGVyZmFjZSBibG9jayI7Ci0gICAgICAgIGRl
ZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgIHJldHVybiAidW5rbm93biB0eXBlIjsKKyAgICAg
ICAgY2FzZSBFYnRWb2lkOgorICAgICAgICAgICAgcmV0dXJuICJ2b2lkIjsKKyAgICAgICAgY2Fz
ZSBFYnRGbG9hdDoKKyAgICAgICAgICAgIHJldHVybiAiZmxvYXQiOworICAgICAgICBjYXNlIEVi
dEludDoKKyAgICAgICAgICAgIHJldHVybiAiaW50IjsKKyAgICAgICAgY2FzZSBFYnRVSW50Ogor
ICAgICAgICAgICAgcmV0dXJuICJ1aW50IjsKKyAgICAgICAgY2FzZSBFYnRCb29sOgorICAgICAg
ICAgICAgcmV0dXJuICJib29sIjsKKyAgICAgICAgY2FzZSBFYnRZdXZDc2NTdGFuZGFyZEVYVDoK
KyAgICAgICAgICAgIHJldHVybiAieXV2Q3NjU3RhbmRhcmRFWFQiOworICAgICAgICBjYXNlIEVi
dFNhbXBsZXIyRDoKKyAgICAgICAgICAgIHJldHVybiAic2FtcGxlcjJEIjsKKyAgICAgICAgY2Fz
ZSBFYnRTYW1wbGVyM0Q6CisgICAgICAgICAgICByZXR1cm4gInNhbXBsZXIzRCI7CisgICAgICAg
IGNhc2UgRWJ0U2FtcGxlckN1YmU6CisgICAgICAgICAgICByZXR1cm4gInNhbXBsZXJDdWJlIjsK
KyAgICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6CisgICAgICAgICAgICByZXR1cm4g
InNhbXBsZXJFeHRlcm5hbE9FUyI7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlckV4dGVybmFsMkRZ
MllFWFQ6CisgICAgICAgICAgICByZXR1cm4gIl9fc2FtcGxlckV4dGVybmFsMkRZMllFWFQiOwor
ICAgICAgICBjYXNlIEVidFNhbXBsZXIyRFJlY3Q6CisgICAgICAgICAgICByZXR1cm4gInNhbXBs
ZXIyRFJlY3QiOworICAgICAgICBjYXNlIEVidFNhbXBsZXIyREFycmF5OgorICAgICAgICAgICAg
cmV0dXJuICJzYW1wbGVyMkRBcnJheSI7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJETVM6Cisg
ICAgICAgICAgICByZXR1cm4gInNhbXBsZXIyRE1TIjsKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxl
cjJEOgorICAgICAgICAgICAgcmV0dXJuICJpc2FtcGxlcjJEIjsKKyAgICAgICAgY2FzZSBFYnRJ
U2FtcGxlcjNEOgorICAgICAgICAgICAgcmV0dXJuICJpc2FtcGxlcjNEIjsKKyAgICAgICAgY2Fz
ZSBFYnRJU2FtcGxlckN1YmU6CisgICAgICAgICAgICByZXR1cm4gImlzYW1wbGVyQ3ViZSI7Cisg
ICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyREFycmF5OgorICAgICAgICAgICAgcmV0dXJuICJpc2Ft
cGxlcjJEQXJyYXkiOworICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRNUzoKKyAgICAgICAgICAg
IHJldHVybiAiaXNhbXBsZXIyRE1TIjsKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEOgorICAg
ICAgICAgICAgcmV0dXJuICJ1c2FtcGxlcjJEIjsKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjNE
OgorICAgICAgICAgICAgcmV0dXJuICJ1c2FtcGxlcjNEIjsKKyAgICAgICAgY2FzZSBFYnRVU2Ft
cGxlckN1YmU6CisgICAgICAgICAgICByZXR1cm4gInVzYW1wbGVyQ3ViZSI7CisgICAgICAgIGNh
c2UgRWJ0VVNhbXBsZXIyREFycmF5OgorICAgICAgICAgICAgcmV0dXJuICJ1c2FtcGxlcjJEQXJy
YXkiOworICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkRNUzoKKyAgICAgICAgICAgIHJldHVybiAi
dXNhbXBsZXIyRE1TIjsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRTaGFkb3c6CisgICAgICAg
ICAgICByZXR1cm4gInNhbXBsZXIyRFNoYWRvdyI7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1
YmVTaGFkb3c6CisgICAgICAgICAgICByZXR1cm4gInNhbXBsZXJDdWJlU2hhZG93IjsKKyAgICAg
ICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheVNoYWRvdzoKKyAgICAgICAgICAgIHJldHVybiAic2Ft
cGxlcjJEQXJyYXlTaGFkb3ciOworICAgICAgICBjYXNlIEVidFN0cnVjdDoKKyAgICAgICAgICAg
IHJldHVybiAic3RydWN0dXJlIjsKKyAgICAgICAgY2FzZSBFYnRJbnRlcmZhY2VCbG9jazoKKyAg
ICAgICAgICAgIHJldHVybiAiaW50ZXJmYWNlIGJsb2NrIjsKKyAgICAgICAgY2FzZSBFYnRJbWFn
ZTJEOgorICAgICAgICAgICAgcmV0dXJuICJpbWFnZTJEIjsKKyAgICAgICAgY2FzZSBFYnRJSW1h
Z2UyRDoKKyAgICAgICAgICAgIHJldHVybiAiaWltYWdlMkQiOworICAgICAgICBjYXNlIEVidFVJ
bWFnZTJEOgorICAgICAgICAgICAgcmV0dXJuICJ1aW1hZ2UyRCI7CisgICAgICAgIGNhc2UgRWJ0
SW1hZ2UzRDoKKyAgICAgICAgICAgIHJldHVybiAiaW1hZ2UzRCI7CisgICAgICAgIGNhc2UgRWJ0
SUltYWdlM0Q6CisgICAgICAgICAgICByZXR1cm4gImlpbWFnZTNEIjsKKyAgICAgICAgY2FzZSBF
YnRVSW1hZ2UzRDoKKyAgICAgICAgICAgIHJldHVybiAidWltYWdlM0QiOworICAgICAgICBjYXNl
IEVidEltYWdlMkRBcnJheToKKyAgICAgICAgICAgIHJldHVybiAiaW1hZ2UyREFycmF5IjsKKyAg
ICAgICAgY2FzZSBFYnRJSW1hZ2UyREFycmF5OgorICAgICAgICAgICAgcmV0dXJuICJpaW1hZ2Uy
REFycmF5IjsKKyAgICAgICAgY2FzZSBFYnRVSW1hZ2UyREFycmF5OgorICAgICAgICAgICAgcmV0
dXJuICJ1aW1hZ2UyREFycmF5IjsKKyAgICAgICAgY2FzZSBFYnRJbWFnZUN1YmU6CisgICAgICAg
ICAgICByZXR1cm4gImltYWdlQ3ViZSI7CisgICAgICAgIGNhc2UgRWJ0SUltYWdlQ3ViZToKKyAg
ICAgICAgICAgIHJldHVybiAiaWltYWdlQ3ViZSI7CisgICAgICAgIGNhc2UgRWJ0VUltYWdlQ3Vi
ZToKKyAgICAgICAgICAgIHJldHVybiAidWltYWdlQ3ViZSI7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuICJ1bmtub3duIHR5
cGUiOwogICAgIH0KIH0KIApAQCAtNTMsNiArMTE2LDcgQEAgVFR5cGU6OlRUeXBlKGNvbnN0IFRQ
dWJsaWNUeXBlICZwKQogICAgICAgcHJlY2lzaW9uKHAucHJlY2lzaW9uKSwKICAgICAgIHF1YWxp
ZmllcihwLnF1YWxpZmllciksCiAgICAgICBpbnZhcmlhbnQocC5pbnZhcmlhbnQpLAorICAgICAg
bWVtb3J5UXVhbGlmaWVyKHAubWVtb3J5UXVhbGlmaWVyKSwKICAgICAgIGxheW91dFF1YWxpZmll
cihwLmxheW91dFF1YWxpZmllciksCiAgICAgICBwcmltYXJ5U2l6ZShwLmdldFByaW1hcnlTaXpl
KCkpLAogICAgICAgc2Vjb25kYXJ5U2l6ZShwLmdldFNlY29uZGFyeVNpemUoKSksCkBAIC0yMjAs
NzggKzI4NCwxMjkgQEAgVFN0cmluZyBUVHlwZTo6YnVpbGRNYW5nbGVkTmFtZSgpIGNvbnN0CiAK
ICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgewotICAgICAgY2FzZSBFYnRGbG9hdDoKLSAgICAgICAg
bWFuZ2xlZE5hbWUgKz0gJ2YnOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0SW50Ogot
ICAgICAgICBtYW5nbGVkTmFtZSArPSAnaSc7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBF
YnRVSW50OgotICAgICAgICBtYW5nbGVkTmFtZSArPSAndSc7Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBFYnRCb29sOgotICAgICAgICBtYW5nbGVkTmFtZSArPSAnYic7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFYnRTYW1wbGVyMkQ6Ci0gICAgICAgIG1hbmdsZWROYW1lICs9ICJz
MiI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6Ci0gICAgICAgIG1h
bmdsZWROYW1lICs9ICJzMyI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRTYW1wbGVy
Q3ViZToKLSAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInNDIjsKLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVidFNhbXBsZXIyREFycmF5OgotICAgICAgICBtYW5nbGVkTmFtZSArPSAiczJhIjsK
LSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbE9FUzoKLSAgICAg
ICAgbWFuZ2xlZE5hbWUgKz0gInNleHQiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0
U2FtcGxlcjJEUmVjdDoKLSAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInMyciI7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEOgotICAgICAgICBtYW5nbGVkTmFtZSArPSAi
aXMyIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVidElTYW1wbGVyM0Q6Ci0gICAgICAg
IG1hbmdsZWROYW1lICs9ICJpczMiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0SVNh
bXBsZXJDdWJlOgotICAgICAgICBtYW5nbGVkTmFtZSArPSAiaXNDIjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEVidElTYW1wbGVyMkRBcnJheToKLSAgICAgICAgbWFuZ2xlZE5hbWUgKz0g
ImlzMmEiOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRWJ0VVNhbXBsZXIyRDoKLSAgICAg
ICAgbWFuZ2xlZE5hbWUgKz0gInVzMiI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRV
U2FtcGxlcjNEOgotICAgICAgICBtYW5nbGVkTmFtZSArPSAidXMzIjsKLSAgICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEVidFVTYW1wbGVyQ3ViZToKLSAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInVz
QyI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEQXJyYXk6Ci0gICAg
ICAgIG1hbmdsZWROYW1lICs9ICJ1czJhIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVi
dFNhbXBsZXIyRFNoYWRvdzoKLSAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInMycyI7Ci0gICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBFYnRTYW1wbGVyQ3ViZVNoYWRvdzoKLSAgICAgICAgbWFuZ2xl
ZE5hbWUgKz0gInNDcyI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRTYW1wbGVyMkRB
cnJheVNoYWRvdzoKLSAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInMyYXMiOwotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRWJ0U3RydWN0OgotICAgICAgICBtYW5nbGVkTmFtZSArPSBzdHJ1Y3R1
cmUtPm1hbmdsZWROYW1lKCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFYnRJbnRlcmZh
Y2VCbG9jazoKLSAgICAgICAgbWFuZ2xlZE5hbWUgKz0gaW50ZXJmYWNlQmxvY2stPm1hbmdsZWRO
YW1lKCk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgLy8gRWJ0Vm9p
ZCwgRWJ0QWRkcmVzcyBhbmQgbm9uIHR5cGVzCi0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEVidEZsb2F0OgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gJ2YnOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRWJ0SW50OgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0g
J2knOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0VUludDoKKyAgICAgICAg
ICAgIG1hbmdsZWROYW1lICs9ICd1JzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEVidEJvb2w6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAnYic7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBFYnRZdXZDc2NTdGFuZGFyZEVYVDoKKyAgICAgICAgICAgIG1h
bmdsZWROYW1lICs9ICJ5Y3MiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0
U2FtcGxlcjJEOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInMyIjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEVidFNhbXBsZXIzRDoKKyAgICAgICAgICAgIG1hbmdsZWRO
YW1lICs9ICJzMyI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVy
Q3ViZToKKyAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICJzQyI7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheToKKyAgICAgICAgICAgIG1hbmdsZWRO
YW1lICs9ICJzMmEiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxl
ckV4dGVybmFsT0VTOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInNleHQiOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlckV4dGVybmFsMkRZMllFWFQ6Cisg
ICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAic2V4dDJ5MnkiOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEUmVjdDoKKyAgICAgICAgICAgIG1hbmdsZWROYW1l
ICs9ICJzMnIiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJE
TVM6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAiczJtcyI7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUg
Kz0gImlzMiI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjNE
OgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gImlzMyI7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFYnRJU2FtcGxlckN1YmU6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSAr
PSAiaXNDIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRB
cnJheToKKyAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICJpczJhIjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRNUzoKKyAgICAgICAgICAgIG1hbmdsZWRO
YW1lICs9ICJpczJtcyI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRVU2Ft
cGxlcjJEOgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInVzMiI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxlcjNEOgorICAgICAgICAgICAgbWFuZ2xlZE5h
bWUgKz0gInVzMyI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRVU2FtcGxl
ckN1YmU6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAidXNDIjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkRBcnJheToKKyAgICAgICAgICAgIG1hbmds
ZWROYW1lICs9ICJ1czJhIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidFVT
YW1wbGVyMkRNUzoKKyAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICJ1czJtcyI7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRTaGFkb3c6CisgICAgICAgICAg
ICBtYW5nbGVkTmFtZSArPSAiczJzIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEVidFNhbXBsZXJDdWJlU2hhZG93OgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInNDcyI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVyMkRBcnJheVNoYWRv
dzoKKyAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICJzMmFzIjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEVidEltYWdlMkQ6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAi
aW0yIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidElJbWFnZTJEOgorICAg
ICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gImlpbTIiOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRWJ0VUltYWdlMkQ6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSAidWltMiI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRJbWFnZTNEOgorICAgICAgICAg
ICAgbWFuZ2xlZE5hbWUgKz0gImltMyI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFYnRJSW1hZ2UzRDoKKyAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICJpaW0zIjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidFVJbWFnZTNEOgorICAgICAgICAgICAgbWFu
Z2xlZE5hbWUgKz0gInVpbTMiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0
SW1hZ2UyREFycmF5OgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gImltMmEiOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRWJ0SUltYWdlMkRBcnJheToKKyAgICAgICAgICAg
IG1hbmdsZWROYW1lICs9ICJpaW0yYSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFYnRVSW1hZ2UyREFycmF5OgorICAgICAgICAgICAgbWFuZ2xlZE5hbWUgKz0gInVpbTJhIjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidEltYWdlQ3ViZToKKyAgICAgICAg
ICAgIG1hbmdsZWROYW1lICs9ICJpbWMiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgRWJ0SUltYWdlQ3ViZToKKyAgICAgICAgICAgIG1hbmdsZWROYW1lICs9ICJpaW1jIjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVidFVJbWFnZUN1YmU6CisgICAgICAgICAg
ICBtYW5nbGVkTmFtZSArPSAidWltYyI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFYnRTdHJ1Y3Q6CisgICAgICAgICAgICBtYW5nbGVkTmFtZSArPSBzdHJ1Y3R1cmUtPm1hbmds
ZWROYW1lKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFYnRJbnRlcmZhY2VC
bG9jazoKKyAgICAgICAgICAgIG1hbmdsZWROYW1lICs9IGludGVyZmFjZUJsb2NrLT5tYW5nbGVk
TmFtZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAvLyBFYnRWb2lkLCBFYnRBZGRyZXNzIGFuZCBub24gdHlwZXMKKyAgICAgICAgICAgIGJyZWFr
OwogICAgIH0KIAogICAgIGlmIChpc01hdHJpeCgpKQpAQCAtMzQwLDYgKzQ1NSwzNiBAQCBzaXpl
X3QgVFR5cGU6OmdldE9iamVjdFNpemUoKSBjb25zdAogICAgIHJldHVybiB0b3RhbFNpemU7CiB9
CiAKK2ludCBUVHlwZTo6Z2V0TG9jYXRpb25Db3VudCgpIGNvbnN0Cit7CisgICAgaW50IGNvdW50
ID0gMTsKKworICAgIGlmIChnZXRCYXNpY1R5cGUoKSA9PSBFYnRTdHJ1Y3QpCisgICAgeworICAg
ICAgICBjb3VudCA9IHN0cnVjdHVyZS0+Z2V0TG9jYXRpb25Db3VudCgpOworICAgIH0KKworICAg
IGlmIChpc0FycmF5KCkpCisgICAgeworICAgICAgICBpZiAoY291bnQgPT0gMCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBp
bnQgY3VycmVudEFycmF5U2l6ZSA9IGdldEFycmF5U2l6ZSgpOworICAgICAgICBpZiAoY3VycmVu
dEFycmF5U2l6ZSA+IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3RkOjpudW1lcmljX2xpbWl0
czxpbnQ+OjptYXgoKSAvIGNvdW50KSkKKyAgICAgICAgeworICAgICAgICAgICAgY291bnQgPSBz
dGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOworICAgICAgICB9CisgICAgICAgIGVsc2UK
KyAgICAgICAgeworICAgICAgICAgICAgY291bnQgKj0gc3RhdGljX2Nhc3Q8aW50PihjdXJyZW50
QXJyYXlTaXplKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBjb3VudDsKK30KKwog
VFN0cnVjdHVyZTo6VFN0cnVjdHVyZShjb25zdCBUU3RyaW5nICpuYW1lLCBURmllbGRMaXN0ICpm
aWVsZHMpCiAgICAgOiBURmllbGRMaXN0Q29sbGVjdGlvbihuYW1lLCBmaWVsZHMpLAogICAgICAg
bURlZXBlc3ROZXN0aW5nKDApLApAQCAtMzgxLDYgKzUyNiwxNyBAQCBib29sIFRTdHJ1Y3R1cmU6
OmNvbnRhaW5zU2FtcGxlcnMoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBU
U3RydWN0dXJlOjpjb250YWluc0ltYWdlcygpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtRmllbGRzLT5zaXplKCk7ICsraSkKKyAgICB7CisgICAgICAgIGNvbnN0IFRUeXBl
ICpmaWVsZFR5cGUgPSAoKm1GaWVsZHMpW2ldLT50eXBlKCk7CisgICAgICAgIGlmIChJc0ltYWdl
KGZpZWxkVHlwZS0+Z2V0QmFzaWNUeXBlKCkpIHx8IGZpZWxkVHlwZS0+aXNTdHJ1Y3R1cmVDb250
YWluaW5nSW1hZ2VzKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCiB2b2lkIFRTdHJ1Y3R1cmU6OmNyZWF0ZVNhbXBsZXJTeW1ib2xzKGNv
bnN0IFRTdHJpbmcgJnN0cnVjdE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRTdHJpbmcgJnN0cnVjdEFQSU5hbWUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBhcnJheU9mU3RydWN0c1NpemUs
CkBAIC00MTcsNyArNTczLDcgQEAgdm9pZCBUU3RydWN0dXJlOjpjcmVhdGVTYW1wbGVyU3ltYm9s
cyhjb25zdCBUU3RyaW5nICZzdHJ1Y3ROYW1lLAogCiAgICAgICAgICAgICAgICAgaWYgKG91dHB1
dFN5bWJvbHNUb0FQSU5hbWVzKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgVFN0cmluZyBhcGlOYW1lID0gc3RydWN0QVBJTmFtZSArICIuIiArIGZpZWxkLT5uYW1lKCk7
CisgICAgICAgICAgICAgICAgICAgIFRTdHJpbmcgYXBpTmFtZSAgICAgICAgICAgICAgICAgICAg
PSBzdHJ1Y3RBUElOYW1lICsgIi4iICsgZmllbGQtPm5hbWUoKTsKICAgICAgICAgICAgICAgICAg
ICAgKCpvdXRwdXRTeW1ib2xzVG9BUElOYW1lcylbc3ltYm9sXSA9IGFwaU5hbWU7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNDY3LDkgKzYyMyw5IEBAIFRTdHJpbmcgVEZp
ZWxkTGlzdENvbGxlY3Rpb246OmJ1aWxkTWFuZ2xlZE5hbWUoY29uc3QgVFN0cmluZyAmbWFuZ2xl
ZE5hbWVQcmVmaXgpCiBzaXplX3QgVEZpZWxkTGlzdENvbGxlY3Rpb246OmNhbGN1bGF0ZU9iamVj
dFNpemUoKSBjb25zdAogewogICAgIHNpemVfdCBzaXplID0gMDsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1GaWVsZHMtPnNpemUoKTsgKytpKQorICAgIGZvciAoY29uc3QgVEZpZWxkICpm
aWVsZCA6ICptRmllbGRzKQogICAgIHsKLSAgICAgICAgc2l6ZV90IGZpZWxkU2l6ZSA9ICgqbUZp
ZWxkcylbaV0tPnR5cGUoKS0+Z2V0T2JqZWN0U2l6ZSgpOworICAgICAgICBzaXplX3QgZmllbGRT
aXplID0gZmllbGQtPnR5cGUoKS0+Z2V0T2JqZWN0U2l6ZSgpOwogICAgICAgICBpZiAoZmllbGRT
aXplID4gSU5UX01BWCAtIHNpemUpCiAgICAgICAgICAgICBzaXplID0gSU5UX01BWDsKICAgICAg
ICAgZWxzZQpAQCAtNDc4LDYgKzYzNCwyNCBAQCBzaXplX3QgVEZpZWxkTGlzdENvbGxlY3Rpb246
OmNhbGN1bGF0ZU9iamVjdFNpemUoKSBjb25zdAogICAgIHJldHVybiBzaXplOwogfQogCitpbnQg
VEZpZWxkTGlzdENvbGxlY3Rpb246OmdldExvY2F0aW9uQ291bnQoKSBjb25zdAoreworICAgIGlu
dCBjb3VudCA9IDA7CisgICAgZm9yIChjb25zdCBURmllbGQgKmZpZWxkIDogKm1GaWVsZHMpCisg
ICAgeworICAgICAgICBpbnQgZmllbGRDb3VudCA9IGZpZWxkLT50eXBlKCktPmdldExvY2F0aW9u
Q291bnQoKTsKKyAgICAgICAgaWYgKGZpZWxkQ291bnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dD46Om1heCgpIC0gY291bnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvdW50ID0gc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNvdW50ICs9IGZpZWxkQ291bnQ7CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIGNvdW50OworfQorCiBpbnQgVFN0cnVjdHVyZTo6Y2FsY3VsYXRlRGVlcGVz
dE5lc3RpbmcoKSBjb25zdAogewogICAgIGludCBtYXhOZXN0aW5nID0gMDsKQEAgLTQ4NSwzICs2
NTksNSBAQCBpbnQgVFN0cnVjdHVyZTo6Y2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcoKSBjb25zdAog
ICAgICAgICBtYXhOZXN0aW5nID0gc3RkOjptYXgobWF4TmVzdGluZywgKCptRmllbGRzKVtpXS0+
dHlwZSgpLT5nZXREZWVwZXN0U3RydWN0TmVzdGluZygpKTsKICAgICByZXR1cm4gMSArIG1heE5l
c3Rpbmc7CiB9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVHlwZXMuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1R5cGVzLmgKaW5kZXggYWIxYjZj
M2ZmNzcuLjUzMGM4NDBlOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9UeXBlcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1R5cGVzLmgKQEAgLTEzLDYgKzEzLDkgQEAKICNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0Jhc2VUeXBlcy5oIgogI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvQ29tbW9uLmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBzdHJ1Y3QgVFB1
YmxpY1R5cGU7CiBjbGFzcyBUVHlwZTsKIGNsYXNzIFRTeW1ib2w7CkBAIC0yMywzMSArMjYsMTcg
QEAgY2xhc3MgVEZpZWxkIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgIHB1YmxpYzoKICAgICBQT09M
X0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7CiAgICAgVEZpZWxkKFRUeXBlICp0eXBlLCBUU3RyaW5n
ICpuYW1lLCBjb25zdCBUU291cmNlTG9jICZsaW5lKQotICAgICAgICA6IG1UeXBlKHR5cGUpLAot
ICAgICAgICAgIG1OYW1lKG5hbWUpLAotICAgICAgICAgIG1MaW5lKGxpbmUpCisgICAgICAgIDog
bVR5cGUodHlwZSksIG1OYW1lKG5hbWUpLCBtTGluZShsaW5lKQogICAgIHsKICAgICB9CiAKICAg
ICAvLyBUT0RPKGFsb2twKTogV2Ugc2hvdWxkIG9ubHkgcmV0dXJuIGNvbnN0IHR5cGUuCiAgICAg
Ly8gRml4IGl0IGJ5IHR3ZWFraW5nIGdyYW1tYXIuCi0gICAgVFR5cGUgKnR5cGUoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIG1UeXBlOwotICAgIH0KLSAgICBjb25zdCBUVHlwZSAqdHlwZSgpIGNv
bnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbVR5cGU7Ci0gICAgfQorICAgIFRUeXBlICp0eXBl
KCkgeyByZXR1cm4gbVR5cGU7IH0KKyAgICBjb25zdCBUVHlwZSAqdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1UeXBlOyB9CiAKLSAgICBjb25zdCBUU3RyaW5nICZuYW1lKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAqbU5hbWU7Ci0gICAgfQotICAgIGNvbnN0IFRTb3VyY2VMb2MgJmxpbmUo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1MaW5lOwotICAgIH0KKyAgICBjb25zdCBU
U3RyaW5nICZuYW1lKCkgY29uc3QgeyByZXR1cm4gKm1OYW1lOyB9CisgICAgY29uc3QgVFNvdXJj
ZUxvYyAmbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1MaW5lOyB9CiAKICAgcHJpdmF0ZToKICAgICBU
VHlwZSAqbVR5cGU7CkBAIC01OSwzMyArNDgsMjggQEAgdHlwZWRlZiBUVmVjdG9yPFRGaWVsZCAq
PiBURmllbGRMaXN0OwogaW5saW5lIFRGaWVsZExpc3QgKk5ld1Bvb2xURmllbGRMaXN0KCkKIHsK
ICAgICB2b2lkICptZW1vcnkgPSBHZXRHbG9iYWxQb29sQWxsb2NhdG9yKCktPmFsbG9jYXRlKHNp
emVvZihURmllbGRMaXN0KSk7Ci0gICAgcmV0dXJuIG5ldyhtZW1vcnkpIFRGaWVsZExpc3Q7Cisg
ICAgcmV0dXJuIG5ldyAobWVtb3J5KSBURmllbGRMaXN0OwogfQogCiBjbGFzcyBURmllbGRMaXN0
Q29sbGVjdGlvbiA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6Ci0gICAgY29uc3Qg
VFN0cmluZyAmbmFtZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKm1OYW1lOwotICAg
IH0KLSAgICBjb25zdCBURmllbGRMaXN0ICZmaWVsZHMoKSBjb25zdAotICAgIHsKLSAgICAgICAg
cmV0dXJuICptRmllbGRzOwotICAgIH0KKyAgICBjb25zdCBUU3RyaW5nICZuYW1lKCkgY29uc3Qg
eyByZXR1cm4gKm1OYW1lOyB9CisgICAgY29uc3QgVEZpZWxkTGlzdCAmZmllbGRzKCkgY29uc3Qg
eyByZXR1cm4gKm1GaWVsZHM7IH0KIAogICAgIHNpemVfdCBvYmplY3RTaXplKCkgY29uc3QKICAg
ICB7CiAgICAgICAgIGlmIChtT2JqZWN0U2l6ZSA9PSAwKQogICAgICAgICAgICAgbU9iamVjdFNp
emUgPSBjYWxjdWxhdGVPYmplY3RTaXplKCk7CiAgICAgICAgIHJldHVybiBtT2JqZWN0U2l6ZTsK
LSAgICB9OworICAgIH0KKworICAgIC8vIEhvdyBtYW55IGxvY2F0aW9ucyB0aGUgZmllbGQgbGlz
dCBjb25zdW1lcyBhcyBhIHVuaWZvcm0uCisgICAgaW50IGdldExvY2F0aW9uQ291bnQoKSBjb25z
dDsKIAogICBwcm90ZWN0ZWQ6CiAgICAgVEZpZWxkTGlzdENvbGxlY3Rpb24oY29uc3QgVFN0cmlu
ZyAqbmFtZSwgVEZpZWxkTGlzdCAqZmllbGRzKQotICAgICAgICA6IG1OYW1lKG5hbWUpLAotICAg
ICAgICAgIG1GaWVsZHMoZmllbGRzKSwKLSAgICAgICAgICBtT2JqZWN0U2l6ZSgwKQorICAgICAg
ICA6IG1OYW1lKG5hbWUpLCBtRmllbGRzKGZpZWxkcyksIG1PYmplY3RTaXplKDApCiAgICAgewog
ICAgIH0KICAgICBUU3RyaW5nIGJ1aWxkTWFuZ2xlZE5hbWUoY29uc3QgVFN0cmluZyAmbWFuZ2xl
ZE5hbWVQcmVmaXgpIGNvbnN0OwpAQCAtMTE0LDYgKzk4LDcgQEAgY2xhc3MgVFN0cnVjdHVyZSA6
IHB1YmxpYyBURmllbGRMaXN0Q29sbGVjdGlvbgogICAgIGJvb2wgY29udGFpbnNBcnJheXMoKSBj
b25zdDsKICAgICBib29sIGNvbnRhaW5zVHlwZShUQmFzaWNUeXBlIHQpIGNvbnN0OwogICAgIGJv
b2wgY29udGFpbnNTYW1wbGVycygpIGNvbnN0OworICAgIGJvb2wgY29udGFpbnNJbWFnZXMoKSBj
b25zdDsKIAogICAgIHZvaWQgY3JlYXRlU2FtcGxlclN5bWJvbHMoY29uc3QgVFN0cmluZyAmc3Ry
dWN0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJnN0
cnVjdEFQSU5hbWUsCkBAIC0xMjMsMTAgKzEwOCw3IEBAIGNsYXNzIFRTdHJ1Y3R1cmUgOiBwdWJs
aWMgVEZpZWxkTGlzdENvbGxlY3Rpb24KIAogICAgIGJvb2wgZXF1YWxzKGNvbnN0IFRTdHJ1Y3R1
cmUgJm90aGVyKSBjb25zdDsKIAotICAgIHZvaWQgc2V0VW5pcXVlSWQoaW50IHVuaXF1ZUlkKQot
ICAgIHsKLSAgICAgICAgbVVuaXF1ZUlkID0gdW5pcXVlSWQ7Ci0gICAgfQorICAgIHZvaWQgc2V0
VW5pcXVlSWQoaW50IHVuaXF1ZUlkKSB7IG1VbmlxdWVJZCA9IHVuaXF1ZUlkOyB9CiAKICAgICBp
bnQgdW5pcXVlSWQoKSBjb25zdAogICAgIHsKQEAgLTEzNCwxNSArMTE2LDkgQEAgY2xhc3MgVFN0
cnVjdHVyZSA6IHB1YmxpYyBURmllbGRMaXN0Q29sbGVjdGlvbgogICAgICAgICByZXR1cm4gbVVu
aXF1ZUlkOwogICAgIH0KIAotICAgIHZvaWQgc2V0QXRHbG9iYWxTY29wZShib29sIGF0R2xvYmFs
U2NvcGUpCi0gICAgewotICAgICAgICBtQXRHbG9iYWxTY29wZSA9IGF0R2xvYmFsU2NvcGU7Ci0g
ICAgfQorICAgIHZvaWQgc2V0QXRHbG9iYWxTY29wZShib29sIGF0R2xvYmFsU2NvcGUpIHsgbUF0
R2xvYmFsU2NvcGUgPSBhdEdsb2JhbFNjb3BlOyB9CiAKLSAgICBib29sIGF0R2xvYmFsU2NvcGUo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1BdEdsb2JhbFNjb3BlOwotICAgIH0KKyAg
ICBib29sIGF0R2xvYmFsU2NvcGUoKSBjb25zdCB7IHJldHVybiBtQXRHbG9iYWxTY29wZTsgfQog
CiAgICAgY29uc3QgVFN0cmluZyAmbWFuZ2xlZE5hbWUoKSBjb25zdAogICAgIHsKQEAgLTE1OSw3
ICsxMzUsNyBAQCBjbGFzcyBUU3RydWN0dXJlIDogcHVibGljIFRGaWVsZExpc3RDb2xsZWN0aW9u
CiAgICAgdm9pZCBzZXROYW1lKGNvbnN0IFRTdHJpbmcgJm5hbWUpCiAgICAgewogICAgICAgICBU
U3RyaW5nICptdXRhYmxlTmFtZSA9IGNvbnN0X2Nhc3Q8VFN0cmluZyAqPihtTmFtZSk7Ci0gICAg
ICAgICptdXRhYmxlTmFtZSA9IG5hbWU7CisgICAgICAgICptdXRhYmxlTmFtZSAgICAgICAgID0g
bmFtZTsKICAgICB9CiAKICAgICBpbnQgY2FsY3VsYXRlRGVlcGVzdE5lc3RpbmcoKSBjb25zdDsK
QEAgLTE3Myw4ICsxNDksMTEgQEAgY2xhc3MgVEludGVyZmFjZUJsb2NrIDogcHVibGljIFRGaWVs
ZExpc3RDb2xsZWN0aW9uCiB7CiAgIHB1YmxpYzoKICAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVM
RVRFKCk7Ci0gICAgVEludGVyZmFjZUJsb2NrKGNvbnN0IFRTdHJpbmcgKm5hbWUsIFRGaWVsZExp
c3QgKmZpZWxkcywgY29uc3QgVFN0cmluZyAqaW5zdGFuY2VOYW1lLAotICAgICAgICAgICAgICAg
ICAgICBpbnQgYXJyYXlTaXplLCBjb25zdCBUTGF5b3V0UXVhbGlmaWVyICZsYXlvdXRRdWFsaWZp
ZXIpCisgICAgVEludGVyZmFjZUJsb2NrKGNvbnN0IFRTdHJpbmcgKm5hbWUsCisgICAgICAgICAg
ICAgICAgICAgIFRGaWVsZExpc3QgKmZpZWxkcywKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VFN0cmluZyAqaW5zdGFuY2VOYW1lLAorICAgICAgICAgICAgICAgICAgICBpbnQgYXJyYXlTaXpl
LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBUTGF5b3V0UXVhbGlmaWVyICZsYXlvdXRRdWFs
aWZpZXIpCiAgICAgICAgIDogVEZpZWxkTGlzdENvbGxlY3Rpb24obmFtZSwgZmllbGRzKSwKICAg
ICAgICAgICBtSW5zdGFuY2VOYW1lKGluc3RhbmNlTmFtZSksCiAgICAgICAgICAgbUFycmF5U2l6
ZShhcnJheVNpemUpLApAQCAtMTgzLDMwICsxNjIsMTIgQEAgY2xhc3MgVEludGVyZmFjZUJsb2Nr
IDogcHVibGljIFRGaWVsZExpc3RDb2xsZWN0aW9uCiAgICAgewogICAgIH0KIAotICAgIGNvbnN0
IFRTdHJpbmcgJmluc3RhbmNlTmFtZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKm1J
bnN0YW5jZU5hbWU7Ci0gICAgfQotICAgIGJvb2wgaGFzSW5zdGFuY2VOYW1lKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtSW5zdGFuY2VOYW1lICE9IE5VTEw7Ci0gICAgfQotICAgIGJv
b2wgaXNBcnJheSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbUFycmF5U2l6ZSA+IDA7
Ci0gICAgfQotICAgIGludCBhcnJheVNpemUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1BcnJheVNpemU7Ci0gICAgfQotICAgIFRMYXlvdXRCbG9ja1N0b3JhZ2UgYmxvY2tTdG9yYWdl
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtQmxvY2tTdG9yYWdlOwotICAgIH0KLSAg
ICBUTGF5b3V0TWF0cml4UGFja2luZyBtYXRyaXhQYWNraW5nKCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtTWF0cml4UGFja2luZzsKLSAgICB9CisgICAgY29uc3QgVFN0cmluZyAmaW5z
dGFuY2VOYW1lKCkgY29uc3QgeyByZXR1cm4gKm1JbnN0YW5jZU5hbWU7IH0KKyAgICBib29sIGhh
c0luc3RhbmNlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1JbnN0YW5jZU5hbWUgIT0gTlVMTDsgfQor
ICAgIGJvb2wgaXNBcnJheSgpIGNvbnN0IHsgcmV0dXJuIG1BcnJheVNpemUgPiAwOyB9CisgICAg
aW50IGFycmF5U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1BcnJheVNpemU7IH0KKyAgICBUTGF5b3V0
QmxvY2tTdG9yYWdlIGJsb2NrU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuIG1CbG9ja1N0b3JhZ2U7
IH0KKyAgICBUTGF5b3V0TWF0cml4UGFja2luZyBtYXRyaXhQYWNraW5nKCkgY29uc3QgeyByZXR1
cm4gbU1hdHJpeFBhY2tpbmc7IH0KICAgICBjb25zdCBUU3RyaW5nICZtYW5nbGVkTmFtZSgpIGNv
bnN0CiAgICAgewogICAgICAgICBpZiAobU1hbmdsZWROYW1lLmVtcHR5KCkpCkBAIC0yMTUsOCAr
MTc2LDggQEAgY2xhc3MgVEludGVyZmFjZUJsb2NrIDogcHVibGljIFRGaWVsZExpc3RDb2xsZWN0
aW9uCiAgICAgfQogCiAgIHByaXZhdGU6Ci0gICAgY29uc3QgVFN0cmluZyAqbUluc3RhbmNlTmFt
ZTsgLy8gZm9yIGludGVyZmFjZSBibG9jayBpbnN0YW5jZSBuYW1lcwotICAgIGludCBtQXJyYXlT
aXplOyAvLyAwIGlmIG5vdCBhbiBhcnJheQorICAgIGNvbnN0IFRTdHJpbmcgKm1JbnN0YW5jZU5h
bWU7ICAvLyBmb3IgaW50ZXJmYWNlIGJsb2NrIGluc3RhbmNlIG5hbWVzCisgICAgaW50IG1BcnJh
eVNpemU7ICAgICAgICAgICAgICAgIC8vIDAgaWYgbm90IGFuIGFycmF5CiAgICAgVExheW91dEJs
b2NrU3RvcmFnZSBtQmxvY2tTdG9yYWdlOwogICAgIFRMYXlvdXRNYXRyaXhQYWNraW5nIG1NYXRy
aXhQYWNraW5nOwogfTsKQEAgLTIyOSwxMCArMTkwLDE4IEBAIGNsYXNzIFRUeXBlCiAgIHB1Ymxp
YzoKICAgICBQT09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKCk7CiAgICAgVFR5cGUoKQotICAgICAg
ICA6IHR5cGUoRWJ0Vm9pZCksIHByZWNpc2lvbihFYnBVbmRlZmluZWQpLCBxdWFsaWZpZXIoRXZx
R2xvYmFsKSwgaW52YXJpYW50KGZhbHNlKSwKKyAgICAgICAgOiB0eXBlKEVidFZvaWQpLAorICAg
ICAgICAgIHByZWNpc2lvbihFYnBVbmRlZmluZWQpLAorICAgICAgICAgIHF1YWxpZmllcihFdnFH
bG9iYWwpLAorICAgICAgICAgIGludmFyaWFudChmYWxzZSksCisgICAgICAgICAgbWVtb3J5UXVh
bGlmaWVyKFRNZW1vcnlRdWFsaWZpZXI6OmNyZWF0ZSgpKSwKICAgICAgICAgICBsYXlvdXRRdWFs
aWZpZXIoVExheW91dFF1YWxpZmllcjo6Y3JlYXRlKCkpLAotICAgICAgICAgIHByaW1hcnlTaXpl
KDApLCBzZWNvbmRhcnlTaXplKDApLCBhcnJheShmYWxzZSksIGFycmF5U2l6ZSgwKSwKLSAgICAg
ICAgICBpbnRlcmZhY2VCbG9jayhudWxscHRyKSwgc3RydWN0dXJlKG51bGxwdHIpCisgICAgICAg
ICAgcHJpbWFyeVNpemUoMCksCisgICAgICAgICAgc2Vjb25kYXJ5U2l6ZSgwKSwKKyAgICAgICAg
ICBhcnJheShmYWxzZSksCisgICAgICAgICAgYXJyYXlTaXplKDApLAorICAgICAgICAgIGludGVy
ZmFjZUJsb2NrKG51bGxwdHIpLAorICAgICAgICAgIHN0cnVjdHVyZShudWxscHRyKQogICAgIHsK
ICAgICB9CiAgICAgZXhwbGljaXQgVFR5cGUoVEJhc2ljVHlwZSB0LCB1bnNpZ25lZCBjaGFyIHBz
ID0gMSwgdW5zaWduZWQgY2hhciBzcyA9IDEpCkBAIC0yNDAsNiArMjA5LDcgQEAgY2xhc3MgVFR5
cGUKICAgICAgICAgICBwcmVjaXNpb24oRWJwVW5kZWZpbmVkKSwKICAgICAgICAgICBxdWFsaWZp
ZXIoRXZxR2xvYmFsKSwKICAgICAgICAgICBpbnZhcmlhbnQoZmFsc2UpLAorICAgICAgICAgIG1l
bW9yeVF1YWxpZmllcihUTWVtb3J5UXVhbGlmaWVyOjpjcmVhdGUoKSksCiAgICAgICAgICAgbGF5
b3V0UXVhbGlmaWVyKFRMYXlvdXRRdWFsaWZpZXI6OmNyZWF0ZSgpKSwKICAgICAgICAgICBwcmlt
YXJ5U2l6ZShwcyksCiAgICAgICAgICAgc2Vjb25kYXJ5U2l6ZShzcyksCkBAIC0yNDksMTIgKzIx
OSwyNCBAQCBjbGFzcyBUVHlwZQogICAgICAgICAgIHN0cnVjdHVyZSgwKQogICAgIHsKICAgICB9
Ci0gICAgVFR5cGUoVEJhc2ljVHlwZSB0LCBUUHJlY2lzaW9uIHAsIFRRdWFsaWZpZXIgcSA9IEV2
cVRlbXBvcmFyeSwKLSAgICAgICAgICB1bnNpZ25lZCBjaGFyIHBzID0gMSwgdW5zaWduZWQgY2hh
ciBzcyA9IDEsIGJvb2wgYSA9IGZhbHNlKQotICAgICAgICA6IHR5cGUodCksIHByZWNpc2lvbihw
KSwgcXVhbGlmaWVyKHEpLCBpbnZhcmlhbnQoZmFsc2UpLAorICAgIFRUeXBlKFRCYXNpY1R5cGUg
dCwKKyAgICAgICAgICBUUHJlY2lzaW9uIHAsCisgICAgICAgICAgVFF1YWxpZmllciBxICAgICA9
IEV2cVRlbXBvcmFyeSwKKyAgICAgICAgICB1bnNpZ25lZCBjaGFyIHBzID0gMSwKKyAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIHNzID0gMSwKKyAgICAgICAgICBib29sIGEgICAgICAgICAgID0gZmFs
c2UpCisgICAgICAgIDogdHlwZSh0KSwKKyAgICAgICAgICBwcmVjaXNpb24ocCksCisgICAgICAg
ICAgcXVhbGlmaWVyKHEpLAorICAgICAgICAgIGludmFyaWFudChmYWxzZSksCisgICAgICAgICAg
bWVtb3J5UXVhbGlmaWVyKFRNZW1vcnlRdWFsaWZpZXI6OmNyZWF0ZSgpKSwKICAgICAgICAgICBs
YXlvdXRRdWFsaWZpZXIoVExheW91dFF1YWxpZmllcjo6Y3JlYXRlKCkpLAotICAgICAgICAgIHBy
aW1hcnlTaXplKHBzKSwgc2Vjb25kYXJ5U2l6ZShzcyksIGFycmF5KGEpLCBhcnJheVNpemUoMCks
Ci0gICAgICAgICAgaW50ZXJmYWNlQmxvY2soMCksIHN0cnVjdHVyZSgwKQorICAgICAgICAgIHBy
aW1hcnlTaXplKHBzKSwKKyAgICAgICAgICBzZWNvbmRhcnlTaXplKHNzKSwKKyAgICAgICAgICBh
cnJheShhKSwKKyAgICAgICAgICBhcnJheVNpemUoMCksCisgICAgICAgICAgaW50ZXJmYWNlQmxv
Y2soMCksCisgICAgICAgICAgc3RydWN0dXJlKDApCiAgICAgewogICAgIH0KICAgICBleHBsaWNp
dCBUVHlwZShjb25zdCBUUHVibGljVHlwZSAmcCk7CkBAIC0yNjMsNiArMjQ1LDcgQEAgY2xhc3Mg
VFR5cGUKICAgICAgICAgICBwcmVjaXNpb24ocCksCiAgICAgICAgICAgcXVhbGlmaWVyKEV2cVRl
bXBvcmFyeSksCiAgICAgICAgICAgaW52YXJpYW50KGZhbHNlKSwKKyAgICAgICAgICBtZW1vcnlR
dWFsaWZpZXIoVE1lbW9yeVF1YWxpZmllcjo6Y3JlYXRlKCkpLAogICAgICAgICAgIGxheW91dFF1
YWxpZmllcihUTGF5b3V0UXVhbGlmaWVyOjpjcmVhdGUoKSksCiAgICAgICAgICAgcHJpbWFyeVNp
emUoMSksCiAgICAgICAgICAgc2Vjb25kYXJ5U2l6ZSgxKSwKQEAgLTI3MiwyMiArMjU1LDI5IEBA
IGNsYXNzIFRUeXBlCiAgICAgICAgICAgc3RydWN0dXJlKHVzZXJEZWYpCiAgICAgewogICAgIH0K
LSAgICBUVHlwZShUSW50ZXJmYWNlQmxvY2sgKmludGVyZmFjZUJsb2NrSW4sIFRRdWFsaWZpZXIg
cXVhbGlmaWVySW4sCi0gICAgICAgICAgVExheW91dFF1YWxpZmllciBsYXlvdXRRdWFsaWZpZXJJ
biwgaW50IGFycmF5U2l6ZUluKQotICAgICAgICA6IHR5cGUoRWJ0SW50ZXJmYWNlQmxvY2spLCBw
cmVjaXNpb24oRWJwVW5kZWZpbmVkKSwgcXVhbGlmaWVyKHF1YWxpZmllckluKSwKLSAgICAgICAg
ICBpbnZhcmlhbnQoZmFsc2UpLCBsYXlvdXRRdWFsaWZpZXIobGF5b3V0UXVhbGlmaWVySW4pLAot
ICAgICAgICAgIHByaW1hcnlTaXplKDEpLCBzZWNvbmRhcnlTaXplKDEpLCBhcnJheShhcnJheVNp
emVJbiA+IDApLCBhcnJheVNpemUoYXJyYXlTaXplSW4pLAotICAgICAgICAgIGludGVyZmFjZUJs
b2NrKGludGVyZmFjZUJsb2NrSW4pLCBzdHJ1Y3R1cmUoMCkKKyAgICBUVHlwZShUSW50ZXJmYWNl
QmxvY2sgKmludGVyZmFjZUJsb2NrSW4sCisgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXJJ
biwKKyAgICAgICAgICBUTGF5b3V0UXVhbGlmaWVyIGxheW91dFF1YWxpZmllckluLAorICAgICAg
ICAgIGludCBhcnJheVNpemVJbikKKyAgICAgICAgOiB0eXBlKEVidEludGVyZmFjZUJsb2NrKSwK
KyAgICAgICAgICBwcmVjaXNpb24oRWJwVW5kZWZpbmVkKSwKKyAgICAgICAgICBxdWFsaWZpZXIo
cXVhbGlmaWVySW4pLAorICAgICAgICAgIGludmFyaWFudChmYWxzZSksCisgICAgICAgICAgbWVt
b3J5UXVhbGlmaWVyKFRNZW1vcnlRdWFsaWZpZXI6OmNyZWF0ZSgpKSwKKyAgICAgICAgICBsYXlv
dXRRdWFsaWZpZXIobGF5b3V0UXVhbGlmaWVySW4pLAorICAgICAgICAgIHByaW1hcnlTaXplKDEp
LAorICAgICAgICAgIHNlY29uZGFyeVNpemUoMSksCisgICAgICAgICAgYXJyYXkoYXJyYXlTaXpl
SW4gPiAwKSwKKyAgICAgICAgICBhcnJheVNpemUoYXJyYXlTaXplSW4pLAorICAgICAgICAgIGlu
dGVyZmFjZUJsb2NrKGludGVyZmFjZUJsb2NrSW4pLAorICAgICAgICAgIHN0cnVjdHVyZSgwKQog
ICAgIHsKICAgICB9CiAKICAgICBUVHlwZShjb25zdCBUVHlwZSAmKSA9IGRlZmF1bHQ7CiAgICAg
VFR5cGUgJm9wZXJhdG9yPShjb25zdCBUVHlwZSAmKSA9IGRlZmF1bHQ7CiAKLSAgICBUQmFzaWNU
eXBlIGdldEJhc2ljVHlwZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdHlwZTsKLSAg
ICB9CisgICAgVEJhc2ljVHlwZSBnZXRCYXNpY1R5cGUoKSBjb25zdCB7IHJldHVybiB0eXBlOyB9
CiAgICAgdm9pZCBzZXRCYXNpY1R5cGUoVEJhc2ljVHlwZSB0KQogICAgIHsKICAgICAgICAgaWYg
KHR5cGUgIT0gdCkKQEAgLTI5Nyw0OCArMjg3LDI0IEBAIGNsYXNzIFRUeXBlCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBUUHJlY2lzaW9uIGdldFByZWNpc2lvbigpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gcHJlY2lzaW9uOwotICAgIH0KLSAgICB2b2lkIHNldFByZWNpc2lvbihUUHJl
Y2lzaW9uIHApCi0gICAgewotICAgICAgICBwcmVjaXNpb24gPSBwOwotICAgIH0KKyAgICBUUHJl
Y2lzaW9uIGdldFByZWNpc2lvbigpIGNvbnN0IHsgcmV0dXJuIHByZWNpc2lvbjsgfQorICAgIHZv
aWQgc2V0UHJlY2lzaW9uKFRQcmVjaXNpb24gcCkgeyBwcmVjaXNpb24gPSBwOyB9CiAKLSAgICBU
UXVhbGlmaWVyIGdldFF1YWxpZmllcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcXVh
bGlmaWVyOwotICAgIH0KLSAgICB2b2lkIHNldFF1YWxpZmllcihUUXVhbGlmaWVyIHEpCi0gICAg
ewotICAgICAgICBxdWFsaWZpZXIgPSBxOwotICAgIH0KKyAgICBUUXVhbGlmaWVyIGdldFF1YWxp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIHF1YWxpZmllcjsgfQorICAgIHZvaWQgc2V0UXVhbGlmaWVy
KFRRdWFsaWZpZXIgcSkgeyBxdWFsaWZpZXIgPSBxOyB9CiAKLSAgICBib29sIGlzSW52YXJpYW50
KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpbnZhcmlhbnQ7Ci0gICAgfQorICAgIGJv
b2wgaXNJbnZhcmlhbnQoKSBjb25zdCB7IHJldHVybiBpbnZhcmlhbnQ7IH0KIAogICAgIHZvaWQg
c2V0SW52YXJpYW50KGJvb2wgaSkgeyBpbnZhcmlhbnQgPSBpOyB9CiAKLSAgICBUTGF5b3V0UXVh
bGlmaWVyIGdldExheW91dFF1YWxpZmllcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4g
bGF5b3V0UXVhbGlmaWVyOwotICAgIH0KLSAgICB2b2lkIHNldExheW91dFF1YWxpZmllcihUTGF5
b3V0UXVhbGlmaWVyIGxxKQotICAgIHsKLSAgICAgICAgbGF5b3V0UXVhbGlmaWVyID0gbHE7Ci0g
ICAgfQorICAgIFRNZW1vcnlRdWFsaWZpZXIgZ2V0TWVtb3J5UXVhbGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbWVtb3J5UXVhbGlmaWVyOyB9CisgICAgdm9pZCBzZXRNZW1vcnlRdWFsaWZpZXIoY29u
c3QgVE1lbW9yeVF1YWxpZmllciAmbXEpIHsgbWVtb3J5UXVhbGlmaWVyID0gbXE7IH0KIAotICAg
IGludCBnZXROb21pbmFsU2l6ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcHJpbWFy
eVNpemU7Ci0gICAgfQotICAgIGludCBnZXRTZWNvbmRhcnlTaXplKCkgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBzZWNvbmRhcnlTaXplOwotICAgIH0KKyAgICBUTGF5b3V0UXVhbGlmaWVy
IGdldExheW91dFF1YWxpZmllcigpIGNvbnN0IHsgcmV0dXJuIGxheW91dFF1YWxpZmllcjsgfQor
ICAgIHZvaWQgc2V0TGF5b3V0UXVhbGlmaWVyKFRMYXlvdXRRdWFsaWZpZXIgbHEpIHsgbGF5b3V0
UXVhbGlmaWVyID0gbHE7IH0KKworICAgIGludCBnZXROb21pbmFsU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIHByaW1hcnlTaXplOyB9CisgICAgaW50IGdldFNlY29uZGFyeVNpemUoKSBjb25zdCB7IHJl
dHVybiBzZWNvbmRhcnlTaXplOyB9CiAgICAgaW50IGdldENvbHMoKSBjb25zdAogICAgIHsKICAg
ICAgICAgQVNTRVJUKGlzTWF0cml4KCkpOwpAQCAtMzY5LDIyICszMzUsMTMgQEAgY2xhc3MgVFR5
cGUKICAgICAvLyBGdWxsIHNpemUgb2Ygc2luZ2xlIGluc3RhbmNlIG9mIHR5cGUKICAgICBzaXpl
X3QgZ2V0T2JqZWN0U2l6ZSgpIGNvbnN0OwogCi0gICAgYm9vbCBpc01hdHJpeCgpIGNvbnN0Ci0g
ICAgewotICAgICAgICByZXR1cm4gcHJpbWFyeVNpemUgPiAxICYmIHNlY29uZGFyeVNpemUgPiAx
OwotICAgIH0KLSAgICBib29sIGlzTm9uU3F1YXJlTWF0cml4KCkgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBpc01hdHJpeCgpICYmIHByaW1hcnlTaXplICE9IHNlY29uZGFyeVNpemU7Ci0g
ICAgfQotICAgIGJvb2wgaXNBcnJheSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gYXJy
YXk7Ci0gICAgfQotICAgIGJvb2wgaXNVbnNpemVkQXJyYXkoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgcmV0dXJuIGFycmF5ICYmIGFycmF5U2l6ZSA9PSAwdTsKLSAgICB9CisgICAgLy8gR2V0IGhv
dyBtYW55IGxvY2F0aW9ucyB0aGlzIHR5cGUgY29uc3VtZXMgYXMgYSB1bmlmb3JtLgorICAgIGlu
dCBnZXRMb2NhdGlvbkNvdW50KCkgY29uc3Q7CisKKyAgICBib29sIGlzTWF0cml4KCkgY29uc3Qg
eyByZXR1cm4gcHJpbWFyeVNpemUgPiAxICYmIHNlY29uZGFyeVNpemUgPiAxOyB9CisgICAgYm9v
bCBpc05vblNxdWFyZU1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIGlzTWF0cml4KCkgJiYgcHJpbWFy
eVNpemUgIT0gc2Vjb25kYXJ5U2l6ZTsgfQorICAgIGJvb2wgaXNBcnJheSgpIGNvbnN0IHsgcmV0
dXJuIGFycmF5OyB9CisgICAgYm9vbCBpc1Vuc2l6ZWRBcnJheSgpIGNvbnN0IHsgcmV0dXJuIGFy
cmF5ICYmIGFycmF5U2l6ZSA9PSAwdTsgfQogICAgIHVuc2lnbmVkIGludCBnZXRBcnJheVNpemUo
KSBjb25zdCB7IHJldHVybiBhcnJheVNpemU7IH0KICAgICB2b2lkIHNldEFycmF5U2l6ZSh1bnNp
Z25lZCBpbnQgcykKICAgICB7CkBAIC00MDUsMTAgKzM2Miw3IEBAIGNsYXNzIFRUeXBlCiAgICAg
ICAgIH0KICAgICB9CiAKLSAgICBUSW50ZXJmYWNlQmxvY2sgKmdldEludGVyZmFjZUJsb2NrKCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBpbnRlcmZhY2VCbG9jazsKLSAgICB9CisgICAg
VEludGVyZmFjZUJsb2NrICpnZXRJbnRlcmZhY2VCbG9jaygpIGNvbnN0IHsgcmV0dXJuIGludGVy
ZmFjZUJsb2NrOyB9CiAgICAgdm9pZCBzZXRJbnRlcmZhY2VCbG9jayhUSW50ZXJmYWNlQmxvY2sg
KmludGVyZmFjZUJsb2NrSW4pCiAgICAgewogICAgICAgICBpZiAoaW50ZXJmYWNlQmxvY2sgIT0g
aW50ZXJmYWNlQmxvY2tJbikKQEAgLTQxNywyOCArMzcxLDE0IEBAIGNsYXNzIFRUeXBlCiAgICAg
ICAgICAgICBpbnZhbGlkYXRlTWFuZ2xlZE5hbWUoKTsKICAgICAgICAgfQogICAgIH0KLSAgICBi
b29sIGlzSW50ZXJmYWNlQmxvY2soKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGUg
PT0gRWJ0SW50ZXJmYWNlQmxvY2s7Ci0gICAgfQorICAgIGJvb2wgaXNJbnRlcmZhY2VCbG9jaygp
IGNvbnN0IHsgcmV0dXJuIHR5cGUgPT0gRWJ0SW50ZXJmYWNlQmxvY2s7IH0KIAotICAgIGJvb2wg
aXNWZWN0b3IoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHByaW1hcnlTaXplID4gMSAm
JiBzZWNvbmRhcnlTaXplID09IDE7Ci0gICAgfQotICAgIGJvb2wgaXNTY2FsYXIoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHByaW1hcnlTaXplID09IDEgJiYgc2Vjb25kYXJ5U2l6ZSA9
PSAxICYmICFzdHJ1Y3R1cmU7Ci0gICAgfQotICAgIGJvb2wgaXNTY2FsYXJJbnQoKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGlzU2NhbGFyKCkgJiYgKHR5cGUgPT0gRWJ0SW50IHx8IHR5
cGUgPT0gRWJ0VUludCk7Ci0gICAgfQorICAgIGJvb2wgaXNWZWN0b3IoKSBjb25zdCB7IHJldHVy
biBwcmltYXJ5U2l6ZSA+IDEgJiYgc2Vjb25kYXJ5U2l6ZSA9PSAxOyB9CisgICAgYm9vbCBpc1Nj
YWxhcigpIGNvbnN0IHsgcmV0dXJuIHByaW1hcnlTaXplID09IDEgJiYgc2Vjb25kYXJ5U2l6ZSA9
PSAxICYmICFzdHJ1Y3R1cmU7IH0KKyAgICBib29sIGlzU2NhbGFyRmxvYXQoKSBjb25zdCB7IHJl
dHVybiBpc1NjYWxhcigpICYmIHR5cGUgPT0gRWJ0RmxvYXQ7IH0KKyAgICBib29sIGlzU2NhbGFy
SW50KCkgY29uc3QgeyByZXR1cm4gaXNTY2FsYXIoKSAmJiAodHlwZSA9PSBFYnRJbnQgfHwgdHlw
ZSA9PSBFYnRVSW50KTsgfQogCi0gICAgVFN0cnVjdHVyZSAqZ2V0U3RydWN0KCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7Ci0gICAgfQorICAgIFRTdHJ1Y3R1cmUgKmdl
dFN0cnVjdCgpIGNvbnN0IHsgcmV0dXJuIHN0cnVjdHVyZTsgfQogICAgIHZvaWQgc2V0U3RydWN0
KFRTdHJ1Y3R1cmUgKnMpCiAgICAgewogICAgICAgICBpZiAoc3RydWN0dXJlICE9IHMpCkBAIC00
NjEsMjQgKzQwMSwxNyBAQCBjbGFzcyBUVHlwZQogCiAgICAgYm9vbCBzYW1lRWxlbWVudFR5cGUo
Y29uc3QgVFR5cGUgJnJpZ2h0KSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIHR5cGUgPT0g
cmlnaHQudHlwZSAmJgotICAgICAgICAgICAgcHJpbWFyeVNpemUgPT0gcmlnaHQucHJpbWFyeVNp
emUgJiYKLSAgICAgICAgICAgIHNlY29uZGFyeVNpemUgPT0gcmlnaHQuc2Vjb25kYXJ5U2l6ZSAm
JgotICAgICAgICAgICAgc3RydWN0dXJlID09IHJpZ2h0LnN0cnVjdHVyZTsKKyAgICAgICAgcmV0
dXJuIHR5cGUgPT0gcmlnaHQudHlwZSAmJiBwcmltYXJ5U2l6ZSA9PSByaWdodC5wcmltYXJ5U2l6
ZSAmJgorICAgICAgICAgICAgICAgc2Vjb25kYXJ5U2l6ZSA9PSByaWdodC5zZWNvbmRhcnlTaXpl
ICYmIHN0cnVjdHVyZSA9PSByaWdodC5zdHJ1Y3R1cmU7CiAgICAgfQogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBUVHlwZSAmcmlnaHQpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gdHlw
ZSA9PSByaWdodC50eXBlICYmCi0gICAgICAgICAgICBwcmltYXJ5U2l6ZSA9PSByaWdodC5wcmlt
YXJ5U2l6ZSAmJgotICAgICAgICAgICAgc2Vjb25kYXJ5U2l6ZSA9PSByaWdodC5zZWNvbmRhcnlT
aXplICYmCi0gICAgICAgICAgICBhcnJheSA9PSByaWdodC5hcnJheSAmJiAoIWFycmF5IHx8IGFy
cmF5U2l6ZSA9PSByaWdodC5hcnJheVNpemUpICYmCi0gICAgICAgICAgICBzdHJ1Y3R1cmUgPT0g
cmlnaHQuc3RydWN0dXJlOworICAgICAgICByZXR1cm4gdHlwZSA9PSByaWdodC50eXBlICYmIHBy
aW1hcnlTaXplID09IHJpZ2h0LnByaW1hcnlTaXplICYmCisgICAgICAgICAgICAgICBzZWNvbmRh
cnlTaXplID09IHJpZ2h0LnNlY29uZGFyeVNpemUgJiYgYXJyYXkgPT0gcmlnaHQuYXJyYXkgJiYK
KyAgICAgICAgICAgICAgICghYXJyYXkgfHwgYXJyYXlTaXplID09IHJpZ2h0LmFycmF5U2l6ZSkg
JiYgc3RydWN0dXJlID09IHJpZ2h0LnN0cnVjdHVyZTsKICAgICAgICAgLy8gZG9uJ3QgY2hlY2sg
dGhlIHF1YWxpZmllciwgaXQncyBub3QgZXZlciB3aGF0J3MgYmVpbmcgc291Z2h0IGFmdGVyCiAg
ICAgfQotICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUVHlwZSAmcmlnaHQpIGNvbnN0Ci0gICAg
ewotICAgICAgICByZXR1cm4gIW9wZXJhdG9yPT0ocmlnaHQpOwotICAgIH0KKyAgICBib29sIG9w
ZXJhdG9yIT0oY29uc3QgVFR5cGUgJnJpZ2h0KSBjb25zdCB7IHJldHVybiAhb3BlcmF0b3I9PShy
aWdodCk7IH0KICAgICBib29sIG9wZXJhdG9yPChjb25zdCBUVHlwZSAmcmlnaHQpIGNvbnN0CiAg
ICAgewogICAgICAgICBpZiAodHlwZSAhPSByaWdodC50eXBlKQpAQCAtNDk3LDE5ICs0MzAsMTAg
QEAgY2xhc3MgVFR5cGUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0
IGNoYXIgKmdldEJhc2ljU3RyaW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiA6Omdl
dEJhc2ljU3RyaW5nKHR5cGUpOwotICAgIH0KKyAgICBjb25zdCBjaGFyICpnZXRCYXNpY1N0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIHNoOjpnZXRCYXNpY1N0cmluZyh0eXBlKTsgfQogCi0gICAgY29u
c3QgY2hhciAqZ2V0UHJlY2lzaW9uU3RyaW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVy
biA6OmdldFByZWNpc2lvblN0cmluZyhwcmVjaXNpb24pOwotICAgIH0KLSAgICBjb25zdCBjaGFy
ICpnZXRRdWFsaWZpZXJTdHJpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIDo6Z2V0
UXVhbGlmaWVyU3RyaW5nKHF1YWxpZmllcik7Ci0gICAgfQorICAgIGNvbnN0IGNoYXIgKmdldFBy
ZWNpc2lvblN0cmluZygpIGNvbnN0IHsgcmV0dXJuIHNoOjpnZXRQcmVjaXNpb25TdHJpbmcocHJl
Y2lzaW9uKTsgfQorICAgIGNvbnN0IGNoYXIgKmdldFF1YWxpZmllclN0cmluZygpIGNvbnN0IHsg
cmV0dXJuIHNoOjpnZXRRdWFsaWZpZXJTdHJpbmcocXVhbGlmaWVyKTsgfQogCiAgICAgY29uc3Qg
Y2hhciAqZ2V0QnVpbHRJblR5cGVOYW1lU3RyaW5nKCkgY29uc3Q7CiAKQEAgLTUyNywxMCArNDUx
LDcgQEAgY2xhc3MgVFR5cGUKICAgICAvLyBGb3IgdHlwZSAibmVzdGluZzIiLCB0aGlzIG1ldGhv
ZCB3b3VsZCByZXR1cm4gMiAtLSB0aGUgbnVtYmVyCiAgICAgLy8gb2Ygc3RydWN0dXJlcyB0aHJv
dWdoIHdoaWNoIGluZGlyZWN0aW9uIG11c3Qgb2NjdXIgdG8gcmVhY2ggdGhlCiAgICAgLy8gZGVl
cGVzdCBmaWVsZCAobmVzdGluZzIuZmllbGQxLnBvc2l0aW9uKS4KLSAgICBpbnQgZ2V0RGVlcGVz
dFN0cnVjdE5lc3RpbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0cnVjdHVyZSA/
IHN0cnVjdHVyZS0+ZGVlcGVzdE5lc3RpbmcoKSA6IDA7Ci0gICAgfQorICAgIGludCBnZXREZWVw
ZXN0U3RydWN0TmVzdGluZygpIGNvbnN0IHsgcmV0dXJuIHN0cnVjdHVyZSA/IHN0cnVjdHVyZS0+
ZGVlcGVzdE5lc3RpbmcoKSA6IDA7IH0KIAogICAgIGJvb2wgaXNTdHJ1Y3R1cmVDb250YWluaW5n
QXJyYXlzKCkgY29uc3QKICAgICB7CkBAIC01NDcsNiArNDY4LDExIEBAIGNsYXNzIFRUeXBlCiAg
ICAgICAgIHJldHVybiBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUtPmNvbnRhaW5zU2FtcGxlcnMoKSA6
IGZhbHNlOwogICAgIH0KIAorICAgIGJvb2wgaXNTdHJ1Y3R1cmVDb250YWluaW5nSW1hZ2VzKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzdHJ1Y3R1cmUgPyBzdHJ1Y3R1cmUtPmNvbnRh
aW5zSW1hZ2VzKCkgOiBmYWxzZTsKKyAgICB9CisKICAgICB2b2lkIGNyZWF0ZVNhbXBsZXJTeW1i
b2xzKGNvbnN0IFRTdHJpbmcgJnN0cnVjdE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUU3RyaW5nICZzdHJ1Y3RBUElOYW1lLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IGFycmF5T2ZTdHJ1Y3RzU2l6ZSwKQEAgLTU1OSwy
MyArNDg1LDIwIEBAIGNsYXNzIFRUeXBlCiAgICAgfQogCiAgICAgLy8gSW5pdGlhbGl6ZXMgYWxs
IGxhemlseS1pbml0aWFsaXplZCBtZW1iZXJzLgotICAgIHZvaWQgcmVhbGl6ZSgpCi0gICAgewot
ICAgICAgICBnZXRNYW5nbGVkTmFtZSgpOwotICAgIH0KKyAgICB2b2lkIHJlYWxpemUoKSB7IGdl
dE1hbmdsZWROYW1lKCk7IH0KIAogICBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZU1hbmds
ZWROYW1lKCkgeyBtYW5nbGVkID0gIiI7IH0KICAgICBUU3RyaW5nIGJ1aWxkTWFuZ2xlZE5hbWUo
KSBjb25zdDsKLSAgICBzaXplX3QgZ2V0U3RydWN0U2l6ZSgpIGNvbnN0OwogCiAgICAgVEJhc2lj
VHlwZSB0eXBlOwogICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uOwogICAgIFRRdWFsaWZpZXIgcXVh
bGlmaWVyOwogICAgIGJvb2wgaW52YXJpYW50OworICAgIFRNZW1vcnlRdWFsaWZpZXIgbWVtb3J5
UXVhbGlmaWVyOwogICAgIFRMYXlvdXRRdWFsaWZpZXIgbGF5b3V0UXVhbGlmaWVyOwotICAgIHVu
c2lnbmVkIGNoYXIgcHJpbWFyeVNpemU7IC8vIHNpemUgb2YgdmVjdG9yIG9yIGNvbHMgbWF0cml4
Ci0gICAgdW5zaWduZWQgY2hhciBzZWNvbmRhcnlTaXplOyAvLyByb3dzIG9mIGEgbWF0cml4Cisg
ICAgdW5zaWduZWQgY2hhciBwcmltYXJ5U2l6ZTsgICAgLy8gc2l6ZSBvZiB2ZWN0b3Igb3IgY29s
cyBtYXRyaXgKKyAgICB1bnNpZ25lZCBjaGFyIHNlY29uZGFyeVNpemU7ICAvLyByb3dzIG9mIGEg
bWF0cml4CiAgICAgYm9vbCBhcnJheTsKICAgICB1bnNpZ25lZCBpbnQgYXJyYXlTaXplOwogCkBA
IC01OTMsOCArNTE2LDggQEAgY2xhc3MgVFR5cGUKIHN0cnVjdCBUVHlwZVNwZWNpZmllck5vbkFy
cmF5CiB7CiAgICAgVEJhc2ljVHlwZSB0eXBlOwotICAgIHVuc2lnbmVkIGNoYXIgcHJpbWFyeVNp
emU7ICAgICAgICAgIC8vIHNpemUgb2YgdmVjdG9yIG9yIGNvbHMgb2YgbWF0cml4Ci0gICAgdW5z
aWduZWQgY2hhciBzZWNvbmRhcnlTaXplOyAgICAgICAgLy8gcm93cyBvZiBtYXRyaXgKKyAgICB1
bnNpZ25lZCBjaGFyIHByaW1hcnlTaXplOyAgICAvLyBzaXplIG9mIHZlY3RvciBvciBjb2xzIG9m
IG1hdHJpeAorICAgIHVuc2lnbmVkIGNoYXIgc2Vjb25kYXJ5U2l6ZTsgIC8vIHJvd3Mgb2YgbWF0
cml4CiAgICAgVFR5cGUgKnVzZXJEZWY7CiAgICAgVFNvdXJjZUxvYyBsaW5lOwogCkBAIC02MDMs
MTggKzUyNiwxNSBAQCBzdHJ1Y3QgVFR5cGVTcGVjaWZpZXJOb25BcnJheQogCiAgICAgdm9pZCBp
bml0aWFsaXplKFRCYXNpY1R5cGUgYnQsIGNvbnN0IFRTb3VyY2VMb2MgJmxuKQogICAgIHsKLSAg
ICAgICAgdHlwZSA9IGJ0OwotICAgICAgICBwcmltYXJ5U2l6ZSA9IDE7Ci0gICAgICAgIHNlY29u
ZGFyeVNpemUgPSAxOworICAgICAgICB0eXBlICAgICAgICAgICAgICA9IGJ0OworICAgICAgICBw
cmltYXJ5U2l6ZSAgICAgICA9IDE7CisgICAgICAgIHNlY29uZGFyeVNpemUgICAgID0gMTsKICAg
ICAgICAgdXNlckRlZiAgICAgICAgICAgPSBudWxscHRyOwotICAgICAgICBsaW5lID0gbG47Cisg
ICAgICAgIGxpbmUgICAgICAgICAgICAgID0gbG47CiAgICAgICAgIGlzU3RydWN0U3BlY2lmaWVy
ID0gZmFsc2U7CiAgICAgfQogCi0gICAgdm9pZCBzZXRBZ2dyZWdhdGUodW5zaWduZWQgY2hhciBz
aXplKQotICAgIHsKLSAgICAgICAgcHJpbWFyeVNpemUgPSBzaXplOwotICAgIH0KKyAgICB2b2lk
IHNldEFnZ3JlZ2F0ZSh1bnNpZ25lZCBjaGFyIHNpemUpIHsgcHJpbWFyeVNpemUgPSBzaXplOyB9
CiAKICAgICB2b2lkIHNldE1hdHJpeCh1bnNpZ25lZCBjaGFyIGNvbHVtbnMsIHVuc2lnbmVkIGNo
YXIgcm93cykKICAgICB7CkBAIC02NDEsNiArNTYxLDcgQEAgc3RydWN0IFRQdWJsaWNUeXBlCiB7
CiAgICAgVFR5cGVTcGVjaWZpZXJOb25BcnJheSB0eXBlU3BlY2lmaWVyTm9uQXJyYXk7CiAgICAg
VExheW91dFF1YWxpZmllciBsYXlvdXRRdWFsaWZpZXI7CisgICAgVE1lbW9yeVF1YWxpZmllciBt
ZW1vcnlRdWFsaWZpZXI7CiAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7CiAgICAgYm9vbCBpbnZh
cmlhbnQ7CiAgICAgVFByZWNpc2lvbiBwcmVjaXNpb247CkBAIC02NTEsNiArNTcyLDcgQEAgc3Ry
dWN0IFRQdWJsaWNUeXBlCiAgICAgewogICAgICAgICB0eXBlU3BlY2lmaWVyTm9uQXJyYXkgPSB0
eXBlU3BlY2lmaWVyOwogICAgICAgICBsYXlvdXRRdWFsaWZpZXIgICAgICAgPSBUTGF5b3V0UXVh
bGlmaWVyOjpjcmVhdGUoKTsKKyAgICAgICAgbWVtb3J5UXVhbGlmaWVyICAgICAgID0gVE1lbW9y
eVF1YWxpZmllcjo6Y3JlYXRlKCk7CiAgICAgICAgIHF1YWxpZmllciAgICAgICAgICAgICA9IHE7
CiAgICAgICAgIGludmFyaWFudCAgICAgICAgICAgICA9IGZhbHNlOwogICAgICAgICBwcmVjaXNp
b24gICAgICAgICAgICAgPSBFYnBVbmRlZmluZWQ7CkBAIC02NTgsMTYgKzU4MCwyNSBAQCBzdHJ1
Y3QgVFB1YmxpY1R5cGUKICAgICAgICAgYXJyYXlTaXplICAgICAgICAgICAgID0gMDsKICAgICB9
CiAKKyAgICB2b2lkIGluaXRpYWxpemVCYXNpY1R5cGUoVEJhc2ljVHlwZSBiYXNpY1R5cGUpCisg
ICAgeworICAgICAgICB0eXBlU3BlY2lmaWVyTm9uQXJyYXkudHlwZSAgICAgICAgICA9IGJhc2lj
VHlwZTsKKyAgICAgICAgdHlwZVNwZWNpZmllck5vbkFycmF5LnByaW1hcnlTaXplICAgPSAxOwor
ICAgICAgICB0eXBlU3BlY2lmaWVyTm9uQXJyYXkuc2Vjb25kYXJ5U2l6ZSA9IDE7CisgICAgICAg
IGxheW91dFF1YWxpZmllciAgICAgICAgICAgICAgICAgICAgID0gVExheW91dFF1YWxpZmllcjo6
Y3JlYXRlKCk7CisgICAgICAgIG1lbW9yeVF1YWxpZmllciAgICAgICAgICAgICAgICAgICAgID0g
VE1lbW9yeVF1YWxpZmllcjo6Y3JlYXRlKCk7CisgICAgICAgIHF1YWxpZmllciAgICAgICAgICAg
ICAgICAgICAgICAgICAgID0gRXZxVGVtcG9yYXJ5OworICAgICAgICBpbnZhcmlhbnQgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IGZhbHNlOworICAgICAgICBwcmVjaXNpb24gICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IEVicFVuZGVmaW5lZDsKKyAgICAgICAgYXJyYXkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZTsKKyAgICAgICAgYXJyYXlTaXplICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSAwOworICAgIH0KKwogICAgIFRCYXNpY1R5cGUgZ2V0QmFzaWNU
eXBlKCkgY29uc3QgeyByZXR1cm4gdHlwZVNwZWNpZmllck5vbkFycmF5LnR5cGU7IH0KICAgICB2
b2lkIHNldEJhc2ljVHlwZShUQmFzaWNUeXBlIGJhc2ljVHlwZSkgeyB0eXBlU3BlY2lmaWVyTm9u
QXJyYXkudHlwZSA9IGJhc2ljVHlwZTsgfQogCiAgICAgdW5zaWduZWQgY2hhciBnZXRQcmltYXJ5
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHR5cGVTcGVjaWZpZXJOb25BcnJheS5wcmltYXJ5U2l6ZTsg
fQogICAgIHVuc2lnbmVkIGNoYXIgZ2V0U2Vjb25kYXJ5U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHR5
cGVTcGVjaWZpZXJOb25BcnJheS5zZWNvbmRhcnlTaXplOyB9Ci0gICAgdm9pZCBpbml0aWFsaXpl
U2l6ZUZvclNjYWxhclR5cGVzKCkKLSAgICB7Ci0gICAgICAgIHR5cGVTcGVjaWZpZXJOb25BcnJh
eS5wcmltYXJ5U2l6ZSAgID0gMTsKLSAgICAgICAgdHlwZVNwZWNpZmllck5vbkFycmF5LnNlY29u
ZGFyeVNpemUgPSAxOwotICAgIH0KIAogICAgIGNvbnN0IFRUeXBlICpnZXRVc2VyRGVmKCkgY29u
c3QgeyByZXR1cm4gdHlwZVNwZWNpZmllck5vbkFycmF5LnVzZXJEZWY7IH0KICAgICBjb25zdCBU
U291cmNlTG9jICZnZXRMaW5lKCkgY29uc3QgeyByZXR1cm4gdHlwZVNwZWNpZmllck5vbkFycmF5
LmxpbmU7IH0KQEAgLTcxMiw0ICs2NDMsNiBAQCBzdHJ1Y3QgVFB1YmxpY1R5cGUKICAgICB9CiB9
OwogCi0jZW5kaWYgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9UWVBFU19IXworfSAgLy8gbmFtZXNw
YWNlIHNoCisKKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9UWVBFU19IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5m
b2xkU2hvcnRDaXJjdWl0QVNULmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2lyY3VpdEFTVC5jcHAKaW5kZXggZTU3NjgxZWRh
ZDYuLmU2ZDk1M2EwMTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXRBU1QuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2ly
Y3VpdEFTVC5jcHAKQEAgLTYsNiArNiw5IEBACiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL1VuZm9sZFNob3J0Q2lyY3VpdEFTVC5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogbmFtZXNw
YWNlCiB7CiAKQEAgLTE0LDggKzE3LDggQEAgVEludGVybVRlcm5hcnkgKlVuZm9sZE9SKFRJbnRl
cm1UeXBlZCAqeCwgVEludGVybVR5cGVkICp5KQogewogICAgIFRDb25zdGFudFVuaW9uICp1ID0g
bmV3IFRDb25zdGFudFVuaW9uOwogICAgIHUtPnNldEJDb25zdCh0cnVlKTsKLSAgICBUSW50ZXJt
Q29uc3RhbnRVbmlvbiAqdHJ1ZU5vZGUgPSBuZXcgVEludGVybUNvbnN0YW50VW5pb24oCi0gICAg
ICAgIHUsIFRUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QsIDEpKTsKKyAgICBU
SW50ZXJtQ29uc3RhbnRVbmlvbiAqdHJ1ZU5vZGUgPQorICAgICAgICBuZXcgVEludGVybUNvbnN0
YW50VW5pb24odSwgVFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFDb25zdCwgMSkpOwog
ICAgIHJldHVybiBuZXcgVEludGVybVRlcm5hcnkoeCwgdHJ1ZU5vZGUsIHkpOwogfQogCkBAIC0y
NCw4ICsyNyw4IEBAIFRJbnRlcm1UZXJuYXJ5ICpVbmZvbGRBTkQoVEludGVybVR5cGVkICp4LCBU
SW50ZXJtVHlwZWQgKnkpCiB7CiAgICAgVENvbnN0YW50VW5pb24gKnUgPSBuZXcgVENvbnN0YW50
VW5pb247CiAgICAgdS0+c2V0QkNvbnN0KGZhbHNlKTsKLSAgICBUSW50ZXJtQ29uc3RhbnRVbmlv
biAqZmFsc2VOb2RlID0gbmV3IFRJbnRlcm1Db25zdGFudFVuaW9uKAotICAgICAgICB1LCBUVHlw
ZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0LCAxKSk7CisgICAgVEludGVybUNvbnN0
YW50VW5pb24gKmZhbHNlTm9kZSA9CisgICAgICAgIG5ldyBUSW50ZXJtQ29uc3RhbnRVbmlvbih1
LCBUVHlwZShFYnRCb29sLCBFYnBVbmRlZmluZWQsIEV2cUNvbnN0LCAxKSk7CiAgICAgcmV0dXJu
IG5ldyBUSW50ZXJtVGVybmFyeSh4LCB5LCBmYWxzZU5vZGUpOwogfQogCkBAIC0zNywxNCArNDAs
MTQgQEAgYm9vbCBVbmZvbGRTaG9ydENpcmN1aXRBU1Q6OnZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0
LCBUSW50ZXJtQmluYXJ5ICpub2RlKQogCiAgICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQogICAg
IHsKLSAgICAgIGNhc2UgRU9wTG9naWNhbE9yOgotICAgICAgICByZXBsYWNlbWVudCA9IFVuZm9s
ZE9SKG5vZGUtPmdldExlZnQoKSwgbm9kZS0+Z2V0UmlnaHQoKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSBFT3BMb2dpY2FsQW5kOgotICAgICAgICByZXBsYWNlbWVudCA9IFVuZm9sZEFO
RChub2RlLT5nZXRMZWZ0KCksIG5vZGUtPmdldFJpZ2h0KCkpOwotICAgICAgICBicmVhazsKLSAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcExvZ2ljYWxPcjoK
KyAgICAgICAgICAgIHJlcGxhY2VtZW50ID0gVW5mb2xkT1Iobm9kZS0+Z2V0TGVmdCgpLCBub2Rl
LT5nZXRSaWdodCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcExvZ2lj
YWxBbmQ6CisgICAgICAgICAgICByZXBsYWNlbWVudCA9IFVuZm9sZEFORChub2RlLT5nZXRMZWZ0
KCksIG5vZGUtPmdldFJpZ2h0KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgaWYgKHJlcGxhY2VtZW50KQogICAg
IHsKQEAgLTUyLDMgKzU1LDUgQEAgYm9vbCBVbmZvbGRTaG9ydENpcmN1aXRBU1Q6OnZpc2l0Qmlu
YXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmluYXJ5ICpub2RlKQogICAgIH0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXRBU1Qu
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VuZm9s
ZFNob3J0Q2lyY3VpdEFTVC5oCmluZGV4IGI5MmE0ZTkxNTI2Li5mZTZkOGZkZjcyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5m
b2xkU2hvcnRDaXJjdWl0QVNULmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVW5mb2xkU2hvcnRDaXJjdWl0QVNULmgKQEAgLTEzLDYgKzEzLDkg
QEAKICNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3Ry
YW5zbGF0b3IvSW50ZXJtTm9kZS5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogLy8gVGhpcyB0cmF2
ZXJzZXIgaWRlbnRpZmllcyBhbGwgdGhlIHNob3J0IGNpcmN1aXQgYmluYXJ5ICBub2RlcyB0aGF0
IG5lZWQgdG8KIC8vIGJlIHJlcGxhY2VkLCBhbmQgY3JlYXRlcyB0aGUgY29ycmVzcG9uZGluZyBy
ZXBsYWNlbWVudCBub2Rlcy4gSG93ZXZlciwKIC8vIHRoZSBhY3R1YWwgcmVwbGFjZW1lbnRzIGhh
cHBlbiBhZnRlciB0aGUgdHJhdmVyc2UgdGhyb3VnaCB1cGRhdGVUcmVlKCkuCkBAIC0yMCwxMiAr
MjMsMTEgQEAKIGNsYXNzIFVuZm9sZFNob3J0Q2lyY3VpdEFTVCA6IHB1YmxpYyBUSW50ZXJtVHJh
dmVyc2VyCiB7CiAgIHB1YmxpYzoKLSAgICBVbmZvbGRTaG9ydENpcmN1aXRBU1QoKQotICAgICAg
ICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKQotICAgIHsKLSAgICB9Cisg
ICAgVW5mb2xkU2hvcnRDaXJjdWl0QVNUKCkgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNl
LCBmYWxzZSkge30KIAogICAgIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1C
aW5hcnkgKikgb3ZlcnJpZGU7CiB9OwogCit9ICAvLyBuYW1lc3BhY2Ugc2gKKwogI2VuZGlmICAv
LyBDT01QSUxFUl9UUkFOU0xBVE9SX1VORk9MRFNIT1JUQ0lSQ1VJVEFTVF9IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVW5mb2xk
U2hvcnRDaXJjdWl0VG9JZi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1aXRUb0lmLmNwcAppbmRleCA3MTJmNTlhYWZk
Zi4uMzc1MTEyOGFhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2lyY3VpdFRvSWYuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2ly
Y3VpdFRvSWYuY3BwCkBAIC0zLDcgKzMsOCBAQAogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCi0vLyBVbmZvbGRTaG9ydENpcmN1aXRUb0lmIGlzIGFu
IEFTVCB0cmF2ZXJzZXIgdG8gY29udmVydCBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdG9ycyB0byBp
Zi1lbHNlIHN0YXRlbWVudHMuCisvLyBVbmZvbGRTaG9ydENpcmN1aXRUb0lmIGlzIGFuIEFTVCB0
cmF2ZXJzZXIgdG8gY29udmVydCBzaG9ydC1jaXJjdWl0aW5nIG9wZXJhdG9ycyB0byBpZi1lbHNl
CisvLyBzdGF0ZW1lbnRzLgogLy8gVGhlIHJlc3VsdHMgYXJlIGFzc2lnbmVkIHRvIHMjIHRlbXBv
cmFyaWVzLCB3aGljaCBhcmUgdXNlZCBieSB0aGUgbWFpbiB0cmFuc2xhdG9yIGluc3RlYWQgb2YK
IC8vIHRoZSBvcmlnaW5hbCBleHByZXNzaW9uLgogLy8KQEAgLTEzLDYgKzE0LDkgQEAKICNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKICNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL0ludGVybU5vZGVQYXR0ZXJuTWF0Y2hlci5oIgogCituYW1lc3BhY2Ugc2gK
K3sKKwogbmFtZXNwYWNlCiB7CiAKQEAgLTYzLDU4ICs2Nyw1OSBAQCBib29sIFVuZm9sZFNob3J0
Q2lyY3VpdFRyYXZlcnNlcjo6dmlzaXRCaW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkg
Km5vZGUpCiAKICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCiAgICAgewotICAgICAgY2FzZSBF
T3BMb2dpY2FsT3I6Ci0gICAgICB7Ci0gICAgICAgICAgLy8gInggfHwgeSIgaXMgZXF1aXZhbGVu
dCB0byAieCA/IHRydWUgOiB5Iiwgd2hpY2ggdW5mb2xkcyB0byAiYm9vbCBzOyBpZih4KSBzID0g
dHJ1ZTsKLSAgICAgICAgICAvLyBlbHNlIHMgPSB5OyIsCi0gICAgICAgICAgLy8gYW5kIHRoZW4g
ZnVydGhlciBzaW1wbGlmaWVzIGRvd24gdG8gImJvb2wgcyA9IHg7IGlmKCFzKSBzID0geTsiLgot
Ci0gICAgICAgICAgVEludGVybVNlcXVlbmNlIGluc2VydGlvbnM7Ci0gICAgICAgICAgVFR5cGUg
Ym9vbFR5cGUoRWJ0Qm9vbCwgRWJwVW5kZWZpbmVkLCBFdnFUZW1wb3JhcnkpOwotCi0gICAgICAg
ICAgQVNTRVJUKG5vZGUtPmdldExlZnQoKS0+Z2V0VHlwZSgpID09IGJvb2xUeXBlKTsKLSAgICAg
ICAgICBpbnNlcnRpb25zLnB1c2hfYmFjayhjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKG5vZGUt
PmdldExlZnQoKSkpOwotCi0gICAgICAgICAgVEludGVybUJsb2NrICphc3NpZ25SaWdodEJsb2Nr
ID0gbmV3IFRJbnRlcm1CbG9jaygpOwotICAgICAgICAgIEFTU0VSVChub2RlLT5nZXRSaWdodCgp
LT5nZXRUeXBlKCkgPT0gYm9vbFR5cGUpOwotICAgICAgICAgIGFzc2lnblJpZ2h0QmxvY2stPmdl
dFNlcXVlbmNlKCktPnB1c2hfYmFjayhjcmVhdGVUZW1wQXNzaWdubWVudChub2RlLT5nZXRSaWdo
dCgpKSk7Ci0KLSAgICAgICAgICBUSW50ZXJtVW5hcnkgKm5vdFRlbXBTeW1ib2wgPSBuZXcgVElu
dGVybVVuYXJ5KEVPcExvZ2ljYWxOb3QsIGNyZWF0ZVRlbXBTeW1ib2woYm9vbFR5cGUpKTsKLSAg
ICAgICAgICBUSW50ZXJtSWZFbHNlICppZk5vZGUgICAgICAgPSBuZXcgVEludGVybUlmRWxzZShu
b3RUZW1wU3ltYm9sLCBhc3NpZ25SaWdodEJsb2NrLCBudWxscHRyKTsKLSAgICAgICAgICBpbnNl
cnRpb25zLnB1c2hfYmFjayhpZk5vZGUpOwotCi0gICAgICAgICAgaW5zZXJ0U3RhdGVtZW50c0lu
UGFyZW50QmxvY2soaW5zZXJ0aW9ucyk7Ci0KLSAgICAgICAgICBxdWV1ZVJlcGxhY2VtZW50KG5v
ZGUsIGNyZWF0ZVRlbXBTeW1ib2woYm9vbFR5cGUpLCBPcmlnaW5hbE5vZGU6OklTX0RST1BQRUQp
OwotICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGNhc2UgRU9wTG9naWNh
bEFuZDoKLSAgICAgIHsKLSAgICAgICAgICAvLyAieCAmJiB5IiBpcyBlcXVpdmFsZW50IHRvICJ4
ID8geSA6IGZhbHNlIiwgd2hpY2ggdW5mb2xkcyB0byAiYm9vbCBzOyBpZih4KSBzID0geTsKLSAg
ICAgICAgICAvLyBlbHNlIHMgPSBmYWxzZTsiLAotICAgICAgICAgIC8vIGFuZCB0aGVuIGZ1cnRo
ZXIgc2ltcGxpZmllcyBkb3duIHRvICJib29sIHMgPSB4OyBpZihzKSBzID0geTsiLgotICAgICAg
ICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRpb25zOwotICAgICAgICAgIFRUeXBlIGJvb2xUeXBl
KEVidEJvb2wsIEVicFVuZGVmaW5lZCwgRXZxVGVtcG9yYXJ5KTsKLQotICAgICAgICAgIEFTU0VS
VChub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKSA9PSBib29sVHlwZSk7Ci0gICAgICAgICAgaW5z
ZXJ0aW9ucy5wdXNoX2JhY2soY3JlYXRlVGVtcEluaXREZWNsYXJhdGlvbihub2RlLT5nZXRMZWZ0
KCkpKTsKLQotICAgICAgICAgIFRJbnRlcm1CbG9jayAqYXNzaWduUmlnaHRCbG9jayA9IG5ldyBU
SW50ZXJtQmxvY2soKTsKLSAgICAgICAgICBBU1NFUlQobm9kZS0+Z2V0UmlnaHQoKS0+Z2V0VHlw
ZSgpID09IGJvb2xUeXBlKTsKLSAgICAgICAgICBhc3NpZ25SaWdodEJsb2NrLT5nZXRTZXF1ZW5j
ZSgpLT5wdXNoX2JhY2soY3JlYXRlVGVtcEFzc2lnbm1lbnQobm9kZS0+Z2V0UmlnaHQoKSkpOwot
Ci0gICAgICAgICAgVEludGVybUlmRWxzZSAqaWZOb2RlID0KLSAgICAgICAgICAgICAgbmV3IFRJ
bnRlcm1JZkVsc2UoY3JlYXRlVGVtcFN5bWJvbChib29sVHlwZSksIGFzc2lnblJpZ2h0QmxvY2ss
IG51bGxwdHIpOwotICAgICAgICAgIGluc2VydGlvbnMucHVzaF9iYWNrKGlmTm9kZSk7Ci0KLSAg
ICAgICAgICBpbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRCbG9jayhpbnNlcnRpb25zKTsKLQotICAg
ICAgICAgIHF1ZXVlUmVwbGFjZW1lbnQobm9kZSwgY3JlYXRlVGVtcFN5bWJvbChib29sVHlwZSks
IE9yaWdpbmFsTm9kZTo6SVNfRFJPUFBFRCk7Ci0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgfQotICAgICAgZGVmYXVsdDoKLSAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBjYXNlIEVPcExvZ2ljYWxPcjoKKyAgICAgICAgeworICAg
ICAgICAgICAgLy8gInggfHwgeSIgaXMgZXF1aXZhbGVudCB0byAieCA/IHRydWUgOiB5Iiwgd2hp
Y2ggdW5mb2xkcyB0byAiYm9vbCBzOyBpZih4KSBzID0gdHJ1ZTsKKyAgICAgICAgICAgIC8vIGVs
c2UgcyA9IHk7IiwKKyAgICAgICAgICAgIC8vIGFuZCB0aGVuIGZ1cnRoZXIgc2ltcGxpZmllcyBk
b3duIHRvICJib29sIHMgPSB4OyBpZighcykgcyA9IHk7Ii4KKworICAgICAgICAgICAgVEludGVy
bVNlcXVlbmNlIGluc2VydGlvbnM7CisgICAgICAgICAgICBUVHlwZSBib29sVHlwZShFYnRCb29s
LCBFYnBVbmRlZmluZWQsIEV2cVRlbXBvcmFyeSk7CisKKyAgICAgICAgICAgIEFTU0VSVChub2Rl
LT5nZXRMZWZ0KCktPmdldFR5cGUoKSA9PSBib29sVHlwZSk7CisgICAgICAgICAgICBpbnNlcnRp
b25zLnB1c2hfYmFjayhjcmVhdGVUZW1wSW5pdERlY2xhcmF0aW9uKG5vZGUtPmdldExlZnQoKSkp
OworCisgICAgICAgICAgICBUSW50ZXJtQmxvY2sgKmFzc2lnblJpZ2h0QmxvY2sgPSBuZXcgVElu
dGVybUJsb2NrKCk7CisgICAgICAgICAgICBBU1NFUlQobm9kZS0+Z2V0UmlnaHQoKS0+Z2V0VHlw
ZSgpID09IGJvb2xUeXBlKTsKKyAgICAgICAgICAgIGFzc2lnblJpZ2h0QmxvY2stPmdldFNlcXVl
bmNlKCktPnB1c2hfYmFjayhjcmVhdGVUZW1wQXNzaWdubWVudChub2RlLT5nZXRSaWdodCgpKSk7
CisKKyAgICAgICAgICAgIFRJbnRlcm1VbmFyeSAqbm90VGVtcFN5bWJvbCA9CisgICAgICAgICAg
ICAgICAgbmV3IFRJbnRlcm1VbmFyeShFT3BMb2dpY2FsTm90LCBjcmVhdGVUZW1wU3ltYm9sKGJv
b2xUeXBlKSk7CisgICAgICAgICAgICBUSW50ZXJtSWZFbHNlICppZk5vZGUgPSBuZXcgVEludGVy
bUlmRWxzZShub3RUZW1wU3ltYm9sLCBhc3NpZ25SaWdodEJsb2NrLCBudWxscHRyKTsKKyAgICAg
ICAgICAgIGluc2VydGlvbnMucHVzaF9iYWNrKGlmTm9kZSk7CisKKyAgICAgICAgICAgIGluc2Vy
dFN0YXRlbWVudHNJblBhcmVudEJsb2NrKGluc2VydGlvbnMpOworCisgICAgICAgICAgICBxdWV1
ZVJlcGxhY2VtZW50KG5vZGUsIGNyZWF0ZVRlbXBTeW1ib2woYm9vbFR5cGUpLCBPcmlnaW5hbE5v
ZGU6OklTX0RST1BQRUQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRU9wTG9naWNhbEFuZDoKKyAgICAgICAgeworICAgICAgICAgICAgLy8gIngg
JiYgeSIgaXMgZXF1aXZhbGVudCB0byAieCA/IHkgOiBmYWxzZSIsIHdoaWNoIHVuZm9sZHMgdG8g
ImJvb2wgczsgaWYoeCkgcyA9IHk7CisgICAgICAgICAgICAvLyBlbHNlIHMgPSBmYWxzZTsiLAor
ICAgICAgICAgICAgLy8gYW5kIHRoZW4gZnVydGhlciBzaW1wbGlmaWVzIGRvd24gdG8gImJvb2wg
cyA9IHg7IGlmKHMpIHMgPSB5OyIuCisgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgaW5zZXJ0
aW9uczsKKyAgICAgICAgICAgIFRUeXBlIGJvb2xUeXBlKEVidEJvb2wsIEVicFVuZGVmaW5lZCwg
RXZxVGVtcG9yYXJ5KTsKKworICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmdldExlZnQoKS0+Z2V0
VHlwZSgpID09IGJvb2xUeXBlKTsKKyAgICAgICAgICAgIGluc2VydGlvbnMucHVzaF9iYWNrKGNy
ZWF0ZVRlbXBJbml0RGVjbGFyYXRpb24obm9kZS0+Z2V0TGVmdCgpKSk7CisKKyAgICAgICAgICAg
IFRJbnRlcm1CbG9jayAqYXNzaWduUmlnaHRCbG9jayA9IG5ldyBUSW50ZXJtQmxvY2soKTsKKyAg
ICAgICAgICAgIEFTU0VSVChub2RlLT5nZXRSaWdodCgpLT5nZXRUeXBlKCkgPT0gYm9vbFR5cGUp
OworICAgICAgICAgICAgYXNzaWduUmlnaHRCbG9jay0+Z2V0U2VxdWVuY2UoKS0+cHVzaF9iYWNr
KGNyZWF0ZVRlbXBBc3NpZ25tZW50KG5vZGUtPmdldFJpZ2h0KCkpKTsKKworICAgICAgICAgICAg
VEludGVybUlmRWxzZSAqaWZOb2RlID0KKyAgICAgICAgICAgICAgICBuZXcgVEludGVybUlmRWxz
ZShjcmVhdGVUZW1wU3ltYm9sKGJvb2xUeXBlKSwgYXNzaWduUmlnaHRCbG9jaywgbnVsbHB0cik7
CisgICAgICAgICAgICBpbnNlcnRpb25zLnB1c2hfYmFjayhpZk5vZGUpOworCisgICAgICAgICAg
ICBpbnNlcnRTdGF0ZW1lbnRzSW5QYXJlbnRCbG9jayhpbnNlcnRpb25zKTsKKworICAgICAgICAg
ICAgcXVldWVSZXBsYWNlbWVudChub2RlLCBjcmVhdGVUZW1wU3ltYm9sKGJvb2xUeXBlKSwgT3Jp
Z2luYWxOb2RlOjpJU19EUk9QUEVEKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIH0KIApAQCAtMTM0LDkgKzEzOSw3IEBAIGJvb2wg
VW5mb2xkU2hvcnRDaXJjdWl0VHJhdmVyc2VyOjp2aXNpdFRlcm5hcnkoVmlzaXQgdmlzaXQsIFRJ
bnRlcm1UZXJuYXJ5ICpub2RlCiAgICAgLy8gVW5mb2xkICJiID8geCA6IHkiIGludG8gInR5cGUg
czsgaWYoYikgcyA9IHg7IGVsc2UgcyA9IHk7IgogICAgIFRJbnRlcm1TZXF1ZW5jZSBpbnNlcnRp
b25zOwogCi0gICAgVEludGVybVN5bWJvbCAqdGVtcFN5bWJvbCAgICAgICAgID0gY3JlYXRlVGVt
cFN5bWJvbChub2RlLT5nZXRUeXBlKCkpOwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKnRlbXBEZWNs
YXJhdGlvbiA9IG5ldyBUSW50ZXJtQWdncmVnYXRlKEVPcERlY2xhcmF0aW9uKTsKLSAgICB0ZW1w
RGVjbGFyYXRpb24tPmdldFNlcXVlbmNlKCktPnB1c2hfYmFjayh0ZW1wU3ltYm9sKTsKKyAgICBU
SW50ZXJtRGVjbGFyYXRpb24gKnRlbXBEZWNsYXJhdGlvbiA9IGNyZWF0ZVRlbXBEZWNsYXJhdGlv
bihub2RlLT5nZXRUeXBlKCkpOwogICAgIGluc2VydGlvbnMucHVzaF9iYWNrKHRlbXBEZWNsYXJh
dGlvbik7CiAKICAgICBUSW50ZXJtQmxvY2sgKnRydWVCbG9jayAgICAgICA9IG5ldyBUSW50ZXJt
QmxvY2soKTsKQEAgLTE2NSw3ICsxNjgsNyBAQCB2b2lkIFVuZm9sZFNob3J0Q2lyY3VpdFRyYXZl
cnNlcjo6bmV4dEl0ZXJhdGlvbigpCiAgICAgbmV4dFRlbXBvcmFyeUluZGV4KCk7CiB9CiAKLX0g
Ly8gbmFtZXNwYWNlCit9ICAvLyBuYW1lc3BhY2UKIAogdm9pZCBVbmZvbGRTaG9ydENpcmN1aXRU
b0lmKFRJbnRlcm1Ob2RlICpyb290LCB1bnNpZ25lZCBpbnQgKnRlbXBvcmFyeUluZGV4KQogewpA
QCAtMTc5LDYgKzE4Miw3IEBAIHZvaWQgVW5mb2xkU2hvcnRDaXJjdWl0VG9JZihUSW50ZXJtTm9k
ZSAqcm9vdCwgdW5zaWduZWQgaW50ICp0ZW1wb3JhcnlJbmRleCkKICAgICAgICAgcm9vdC0+dHJh
dmVyc2UoJnRyYXZlcnNlcik7CiAgICAgICAgIGlmICh0cmF2ZXJzZXIuZm91bmRTaG9ydENpcmN1
aXQoKSkKICAgICAgICAgICAgIHRyYXZlcnNlci51cGRhdGVUcmVlKCk7Ci0gICAgfQotICAgIHdo
aWxlICh0cmF2ZXJzZXIuZm91bmRTaG9ydENpcmN1aXQoKSk7CisgICAgfSB3aGlsZSAodHJhdmVy
c2VyLmZvdW5kU2hvcnRDaXJjdWl0KCkpOwogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Vu
Zm9sZFNob3J0Q2lyY3VpdFRvSWYuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci90cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2lyY3VpdFRvSWYuaAppbmRleCAwZmUzN2I3MTQw
MC4uYjFmZjA2NGRkMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1VuZm9sZFNob3J0Q2lyY3VpdFRvSWYuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9VbmZvbGRTaG9ydENpcmN1
aXRUb0lmLmgKQEAgLTMsNyArMyw4IEBACiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgogLy8KLS8vIFVuZm9sZFNob3J0Q2lyY3VpdFRvSWYgaXMgYW4gQVNU
IHRyYXZlcnNlciB0byBjb252ZXJ0IHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0b3JzIHRvIGlmLWVs
c2Ugc3RhdGVtZW50cy4KKy8vIFVuZm9sZFNob3J0Q2lyY3VpdFRvSWYgaXMgYW4gQVNUIHRyYXZl
cnNlciB0byBjb252ZXJ0IHNob3J0LWNpcmN1aXRpbmcgb3BlcmF0b3JzIHRvIGlmLWVsc2UKKy8v
IHN0YXRlbWVudHMuCiAvLyBUaGUgcmVzdWx0cyBhcmUgYXNzaWduZWQgdG8gcyMgdGVtcG9yYXJp
ZXMsIHdoaWNoIGFyZSB1c2VkIGJ5IHRoZSBtYWluIHRyYW5zbGF0b3IgaW5zdGVhZCBvZgogLy8g
dGhlIG9yaWdpbmFsIGV4cHJlc3Npb24uCiAvLwpAQCAtMTEsOCArMTIsMTEgQEAKICNpZm5kZWYg
Q09NUElMRVJfVFJBTlNMQVRPUl9VTkZPTERTSE9SVENJUkNVSVRfSF8KICNkZWZpbmUgQ09NUElM
RVJfVFJBTlNMQVRPUl9VTkZPTERTSE9SVENJUkNVSVRfSF8KIAorbmFtZXNwYWNlIHNoCit7CiBj
bGFzcyBUSW50ZXJtTm9kZTsKIAogdm9pZCBVbmZvbGRTaG9ydENpcmN1aXRUb0lmKFRJbnRlcm1O
b2RlICpyb290LCB1bnNpZ25lZCBpbnQgKnRlbXBvcmFyeUluZGV4KTsKK30gIC8vIG5hbWVzcGFj
ZSBzaAogCi0jZW5kaWYgICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1VORk9MRFNIT1JUQ0lSQ1VJ
VF9IXworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1VORk9MRFNIT1JUQ0lSQ1VJVF9I
XwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvVW5pZm9ybUhMU0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVW5pZm9ybUhMU0wuY3BwCmluZGV4IDNhODVjNjBmYzFiLi5mMjczMzVi
ZTQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVW5pZm9ybUhMU0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1VuaWZvcm1ITFNMLmNwcApAQCAtMzIsNyArMzIsNyBAQCBz
dGF0aWMgY29uc3QgY2hhciAqVW5pZm9ybVJlZ2lzdGVyUHJlZml4KGNvbnN0IFRUeXBlICZ0eXBl
KQogCiBzdGF0aWMgVFN0cmluZyBJbnRlcmZhY2VCbG9ja0ZpZWxkVHlwZVN0cmluZyhjb25zdCBU
RmllbGQgJmZpZWxkLCBUTGF5b3V0QmxvY2tTdG9yYWdlIGJsb2NrU3RvcmFnZSkKIHsKLSAgICBj
b25zdCBUVHlwZSAmZmllbGRUeXBlID0gKmZpZWxkLnR5cGUoKTsKKyAgICBjb25zdCBUVHlwZSAm
ZmllbGRUeXBlICAgICAgICAgICAgICAgICAgID0gKmZpZWxkLnR5cGUoKTsKICAgICBjb25zdCBU
TGF5b3V0TWF0cml4UGFja2luZyBtYXRyaXhQYWNraW5nID0gZmllbGRUeXBlLmdldExheW91dFF1
YWxpZmllcigpLm1hdHJpeFBhY2tpbmc7CiAgICAgQVNTRVJUKG1hdHJpeFBhY2tpbmcgIT0gRW1w
VW5zcGVjaWZpZWQpOwogICAgIFRTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IGZpZWxkVHlwZS5nZXRT
dHJ1Y3QoKTsKQEAgLTQwLDE0ICs0MCwxNSBAQCBzdGF0aWMgVFN0cmluZyBJbnRlcmZhY2VCbG9j
a0ZpZWxkVHlwZVN0cmluZyhjb25zdCBURmllbGQgJmZpZWxkLCBUTGF5b3V0QmxvY2tTdAogICAg
IGlmIChmaWVsZFR5cGUuaXNNYXRyaXgoKSkKICAgICB7CiAgICAgICAgIC8vIFVzZSBITFNMIHJv
dy1tYWpvciBwYWNraW5nIGZvciBHTFNMIGNvbHVtbi1tYWpvciBtYXRyaWNlcwotICAgICAgICBj
b25zdCBUU3RyaW5nICZtYXRyaXhQYWNrU3RyaW5nID0gKG1hdHJpeFBhY2tpbmcgPT0gRW1wUm93
TWFqb3IgPyAiY29sdW1uX21ham9yIiA6ICJyb3dfbWFqb3IiKTsKKyAgICAgICAgY29uc3QgVFN0
cmluZyAmbWF0cml4UGFja1N0cmluZyA9CisgICAgICAgICAgICAobWF0cml4UGFja2luZyA9PSBF
bXBSb3dNYWpvciA/ICJjb2x1bW5fbWFqb3IiIDogInJvd19tYWpvciIpOwogICAgICAgICByZXR1
cm4gbWF0cml4UGFja1N0cmluZyArICIgIiArIFR5cGVTdHJpbmcoZmllbGRUeXBlKTsKICAgICB9
CiAgICAgZWxzZSBpZiAoc3RydWN0dXJlKQogICAgIHsKICAgICAgICAgLy8gVXNlIEhMU0wgcm93
LW1ham9yIHBhY2tpbmcgZm9yIEdMU0wgY29sdW1uLW1ham9yIG1hdHJpY2VzCiAgICAgICAgIHJl
dHVybiBRdWFsaWZpZWRTdHJ1Y3ROYW1lU3RyaW5nKCpzdHJ1Y3R1cmUsIG1hdHJpeFBhY2tpbmcg
PT0gRW1wQ29sdW1uTWFqb3IsCi0gICAgICAgICAgICBibG9ja1N0b3JhZ2UgPT0gRWJzU3RkMTQw
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tTdG9yYWdl
ID09IEVic1N0ZDE0MCk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC02MCwxNCArNjEsMTcg
QEAgc3RhdGljIFRTdHJpbmcgSW50ZXJmYWNlQmxvY2tTdHJ1Y3ROYW1lKGNvbnN0IFRJbnRlcmZh
Y2VCbG9jayAmaW50ZXJmYWNlQmxvY2spCiAgICAgcmV0dXJuIERlY29yYXRlUHJpdmF0ZShpbnRl
cmZhY2VCbG9jay5uYW1lKCkpICsgIl90eXBlIjsKIH0KIAotVW5pZm9ybUhMU0w6OlVuaWZvcm1I
TFNMKFN0cnVjdHVyZUhMU0wgKnN0cnVjdHVyZUhMU0wsIFNoU2hhZGVyT3V0cHV0IG91dHB1dFR5
cGUsIGNvbnN0IHN0ZDo6dmVjdG9yPFVuaWZvcm0+ICZ1bmlmb3JtcykKK1VuaWZvcm1ITFNMOjpV
bmlmb3JtSExTTChTdHJ1Y3R1cmVITFNMICpzdHJ1Y3R1cmVITFNMLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dFR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VW5pZm9ybT4gJnVuaWZvcm1zKQogICAgIDogbVVuaWZv
cm1SZWdpc3RlcigwKSwKICAgICAgIG1JbnRlcmZhY2VCbG9ja1JlZ2lzdGVyKDApLAogICAgICAg
bVNhbXBsZXJSZWdpc3RlcigwKSwKICAgICAgIG1TdHJ1Y3R1cmVITFNMKHN0cnVjdHVyZUhMU0wp
LAogICAgICAgbU91dHB1dFR5cGUob3V0cHV0VHlwZSksCiAgICAgICBtVW5pZm9ybXModW5pZm9y
bXMpCi17fQoreworfQogCiB2b2lkIFVuaWZvcm1ITFNMOjpyZXNlcnZlVW5pZm9ybVJlZ2lzdGVy
cyh1bnNpZ25lZCBpbnQgcmVnaXN0ZXJDb3VudCkKIHsKQEAgLTk2LDcgKzEwMCw4IEBAIHVuc2ln
bmVkIGludCBVbmlmb3JtSExTTDo6YXNzaWduVW5pZm9ybVJlZ2lzdGVyKGNvbnN0IFRUeXBlICZ0
eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgVFN0cmluZyAmbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCAqb3V0UmVnaXN0ZXJDb3VudCkKIHsKLSAgICB1bnNpZ25l
ZCBpbnQgcmVnaXN0ZXJJbmRleCA9IChJc1NhbXBsZXIodHlwZS5nZXRCYXNpY1R5cGUoKSkgPyBt
U2FtcGxlclJlZ2lzdGVyIDogbVVuaWZvcm1SZWdpc3Rlcik7CisgICAgdW5zaWduZWQgaW50IHJl
Z2lzdGVySW5kZXggPQorICAgICAgICAoSXNTYW1wbGVyKHR5cGUuZ2V0QmFzaWNUeXBlKCkpID8g
bVNhbXBsZXJSZWdpc3RlciA6IG1Vbmlmb3JtUmVnaXN0ZXIpOwogCiAgICAgY29uc3QgVW5pZm9y
bSAqdW5pZm9ybSA9IGZpbmRVbmlmb3JtQnlOYW1lKG5hbWUpOwogICAgIEFTU0VSVCh1bmlmb3Jt
KTsKQEAgLTEyNiw3ICsxMzEsNyBAQCB1bnNpZ25lZCBpbnQgVW5pZm9ybUhMU0w6OmFzc2lnblNh
bXBsZXJJblN0cnVjdFVuaWZvcm1SZWdpc3Rlcihjb25zdCBUVHlwZSAmdHlwZQogewogICAgIC8v
IFNhbXBsZXIgdGhhdCBpcyBhIGZpZWxkIG9mIGEgdW5pZm9ybSBzdHJ1Y3R1cmUuCiAgICAgQVNT
RVJUKElzU2FtcGxlcih0eXBlLmdldEJhc2ljVHlwZSgpKSk7Ci0gICAgdW5zaWduZWQgaW50IHJl
Z2lzdGVySW5kZXggPSBtU2FtcGxlclJlZ2lzdGVyOworICAgIHVuc2lnbmVkIGludCByZWdpc3Rl
ckluZGV4ICAgICAgICAgICAgICAgICAgICAgPSBtU2FtcGxlclJlZ2lzdGVyOwogICAgIG1Vbmlm
b3JtUmVnaXN0ZXJNYXBbc3RkOjpzdHJpbmcobmFtZS5jX3N0cigpKV0gPSByZWdpc3RlckluZGV4
OwogICAgIHVuc2lnbmVkIGludCByZWdpc3RlckNvdW50ICAgICAgICAgICAgICAgICAgICAgPSB0
eXBlLmlzQXJyYXkoKSA/IHR5cGUuZ2V0QXJyYXlTaXplKCkgOiAxdTsKICAgICBtU2FtcGxlclJl
Z2lzdGVyICs9IHJlZ2lzdGVyQ291bnQ7CkBAIC0xNTcsNyArMTYyLDcgQEAgdm9pZCBVbmlmb3Jt
SExTTDo6b3V0cHV0SExTTFNhbXBsZXJVbmlmb3JtR3JvdXAoCiAKICAgICAgICAgLy8gVGhlIHVu
aWZvcm0gbWlnaHQgYmUganVzdCBhIHJlZ3VsYXIgc2FtcGxlciBvciBvbmUgZXh0cmFjdGVkIGZy
b20gYSBzdHJ1Y3QuCiAgICAgICAgIHVuc2lnbmVkIGludCBzYW1wbGVyQXJyYXlJbmRleCA9IDB1
OwotICAgICAgICBjb25zdCBVbmlmb3JtICp1bmlmb3JtQnlOYW1lID0gZmluZFVuaWZvcm1CeU5h
bWUobmFtZSk7CisgICAgICAgIGNvbnN0IFVuaWZvcm0gKnVuaWZvcm1CeU5hbWUgICA9IGZpbmRV
bmlmb3JtQnlOYW1lKG5hbWUpOwogICAgICAgICBpZiAodW5pZm9ybUJ5TmFtZSkKICAgICAgICAg
ewogICAgICAgICAgICAgc2FtcGxlckFycmF5SW5kZXggPSBhc3NpZ25Vbmlmb3JtUmVnaXN0ZXIo
dHlwZSwgbmFtZSwgJnJlZ2lzdGVyQ291bnQpOwpAQCAtMzU2LDEwICszNjEsMTAgQEAgVFN0cmlu
ZyBVbmlmb3JtSExTTDo6aW50ZXJmYWNlQmxvY2tzSGVhZGVyKGNvbnN0IFJlZmVyZW5jZWRTeW1i
b2xzICZyZWZlcmVuY2VkSW4KICAgICBmb3IgKFJlZmVyZW5jZWRTeW1ib2xzOjpjb25zdF9pdGVy
YXRvciBpbnRlcmZhY2VCbG9ja0l0ID0gcmVmZXJlbmNlZEludGVyZmFjZUJsb2Nrcy5iZWdpbigp
OwogICAgICAgICAgaW50ZXJmYWNlQmxvY2tJdCAhPSByZWZlcmVuY2VkSW50ZXJmYWNlQmxvY2tz
LmVuZCgpOyBpbnRlcmZhY2VCbG9ja0l0KyspCiAgICAgewotICAgICAgICBjb25zdCBUVHlwZSAm
bm9kZVR5cGUgPSBpbnRlcmZhY2VCbG9ja0l0LT5zZWNvbmQtPmdldFR5cGUoKTsKKyAgICAgICAg
Y29uc3QgVFR5cGUgJm5vZGVUeXBlICAgICAgICAgICAgICAgICA9IGludGVyZmFjZUJsb2NrSXQt
PnNlY29uZC0+Z2V0VHlwZSgpOwogICAgICAgICBjb25zdCBUSW50ZXJmYWNlQmxvY2sgJmludGVy
ZmFjZUJsb2NrID0gKm5vZGVUeXBlLmdldEludGVyZmFjZUJsb2NrKCk7CiAKLSAgICAgICAgdW5z
aWduZWQgaW50IGFycmF5U2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oaW50ZXJmYWNl
QmxvY2suYXJyYXlTaXplKCkpOworICAgICAgICB1bnNpZ25lZCBpbnQgYXJyYXlTaXplICAgICAg
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGludGVyZmFjZUJsb2NrLmFycmF5U2l6ZSgpKTsK
ICAgICAgICAgdW5zaWduZWQgaW50IGFjdGl2ZVJlZ2lzdGVyID0gbUludGVyZmFjZUJsb2NrUmVn
aXN0ZXI7CiAKICAgICAgICAgbUludGVyZmFjZUJsb2NrUmVnaXN0ZXJNYXBbaW50ZXJmYWNlQmxv
Y2submFtZSgpLmNfc3RyKCldID0gYWN0aXZlUmVnaXN0ZXI7CkBAIC0zNzYsMjUgKzM4MSwzMSBA
QCBUU3RyaW5nIFVuaWZvcm1ITFNMOjppbnRlcmZhY2VCbG9ja3NIZWFkZXIoY29uc3QgUmVmZXJl
bmNlZFN5bWJvbHMgJnJlZmVyZW5jZWRJbgogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGludCBhcnJheUluZGV4ID0gMDsgYXJyYXlJbmRleCA8IGFycmF5U2l6ZTsgYXJyYXlJ
bmRleCsrKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludGVyZmFjZUJsb2NrcyAr
PSBpbnRlcmZhY2VCbG9ja1N0cmluZyhpbnRlcmZhY2VCbG9jaywgYWN0aXZlUmVnaXN0ZXIgKyBh
cnJheUluZGV4LCBhcnJheUluZGV4KTsKKyAgICAgICAgICAgICAgICBpbnRlcmZhY2VCbG9ja3Mg
Kz0KKyAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlQmxvY2tTdHJpbmcoaW50ZXJmYWNlQmxv
Y2ssIGFjdGl2ZVJlZ2lzdGVyICsgYXJyYXlJbmRleCwgYXJyYXlJbmRleCk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBpbnRl
cmZhY2VCbG9ja3MgKz0gaW50ZXJmYWNlQmxvY2tTdHJpbmcoaW50ZXJmYWNlQmxvY2ssIGFjdGl2
ZVJlZ2lzdGVyLCBHTF9JTlZBTElEX0lOREVYKTsKKyAgICAgICAgICAgIGludGVyZmFjZUJsb2Nr
cyArPQorICAgICAgICAgICAgICAgIGludGVyZmFjZUJsb2NrU3RyaW5nKGludGVyZmFjZUJsb2Nr
LCBhY3RpdmVSZWdpc3RlciwgR0xfSU5WQUxJRF9JTkRFWCk7CiAgICAgICAgIH0KICAgICB9CiAK
ICAgICByZXR1cm4gKGludGVyZmFjZUJsb2Nrcy5lbXB0eSgpID8gIiIgOiAoIi8vIEludGVyZmFj
ZSBCbG9ja3NcblxuIiArIGludGVyZmFjZUJsb2NrcykpOwogfQogCi1UU3RyaW5nIFVuaWZvcm1I
TFNMOjppbnRlcmZhY2VCbG9ja1N0cmluZyhjb25zdCBUSW50ZXJmYWNlQmxvY2sgJmludGVyZmFj
ZUJsb2NrLCB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJJbmRleCwgdW5zaWduZWQgaW50IGFycmF5SW5k
ZXgpCitUU3RyaW5nIFVuaWZvcm1ITFNMOjppbnRlcmZhY2VCbG9ja1N0cmluZyhjb25zdCBUSW50
ZXJmYWNlQmxvY2sgJmludGVyZmFjZUJsb2NrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHJlZ2lzdGVySW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJyYXlJbmRleCkKIHsK
LSAgICBjb25zdCBUU3RyaW5nICZhcnJheUluZGV4U3RyaW5nID0gIChhcnJheUluZGV4ICE9IEdM
X0lOVkFMSURfSU5ERVggPyBEZWNvcmF0ZShzdHIoYXJyYXlJbmRleCkpIDogIiIpOworICAgIGNv
bnN0IFRTdHJpbmcgJmFycmF5SW5kZXhTdHJpbmcgPQorICAgICAgICAoYXJyYXlJbmRleCAhPSBH
TF9JTlZBTElEX0lOREVYID8gRGVjb3JhdGUoc3RyKGFycmF5SW5kZXgpKSA6ICIiKTsKICAgICBj
b25zdCBUU3RyaW5nICZibG9ja05hbWUgPSBpbnRlcmZhY2VCbG9jay5uYW1lKCkgKyBhcnJheUlu
ZGV4U3RyaW5nOwogICAgIFRTdHJpbmcgaGxzbDsKIAotICAgIGhsc2wgKz0gImNidWZmZXIgIiAr
IGJsb2NrTmFtZSArICIgOiByZWdpc3RlcihiIiArIHN0cihyZWdpc3RlckluZGV4KSArICIpXG4i
CisgICAgaGxzbCArPSAiY2J1ZmZlciAiICsgYmxvY2tOYW1lICsgIiA6IHJlZ2lzdGVyKGIiICsg
c3RyKHJlZ2lzdGVySW5kZXgpICsKKyAgICAgICAgICAgICIpXG4iCiAgICAgICAgICAgICAie1xu
IjsKIAogICAgIGlmIChpbnRlcmZhY2VCbG9jay5oYXNJbnN0YW5jZU5hbWUoKSkKQEAgLTQxMyw3
ICs0MjQsOCBAQCBUU3RyaW5nIFVuaWZvcm1ITFNMOjppbnRlcmZhY2VCbG9ja1N0cmluZyhjb25z
dCBUSW50ZXJmYWNlQmxvY2sgJmludGVyZmFjZUJsb2NrLAogICAgIHJldHVybiBobHNsOwogfQog
Ci1UU3RyaW5nIFVuaWZvcm1ITFNMOjppbnRlcmZhY2VCbG9ja0luc3RhbmNlU3RyaW5nKGNvbnN0
IFRJbnRlcmZhY2VCbG9jayYgaW50ZXJmYWNlQmxvY2ssIHVuc2lnbmVkIGludCBhcnJheUluZGV4
KQorVFN0cmluZyBVbmlmb3JtSExTTDo6aW50ZXJmYWNlQmxvY2tJbnN0YW5jZVN0cmluZyhjb25z
dCBUSW50ZXJmYWNlQmxvY2sgJmludGVyZmFjZUJsb2NrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJyYXlJbmRleCkKIHsK
ICAgICBpZiAoIWludGVyZmFjZUJsb2NrLmhhc0luc3RhbmNlTmFtZSgpKQogICAgIHsKQEAgLTQy
OSw3ICs0NDEsOCBAQCBUU3RyaW5nIFVuaWZvcm1ITFNMOjppbnRlcmZhY2VCbG9ja0luc3RhbmNl
U3RyaW5nKGNvbnN0IFRJbnRlcmZhY2VCbG9jayYgaW50ZXJmYQogICAgIH0KIH0KIAotVFN0cmlu
ZyBVbmlmb3JtSExTTDo6aW50ZXJmYWNlQmxvY2tNZW1iZXJzU3RyaW5nKGNvbnN0IFRJbnRlcmZh
Y2VCbG9jayAmaW50ZXJmYWNlQmxvY2ssIFRMYXlvdXRCbG9ja1N0b3JhZ2UgYmxvY2tTdG9yYWdl
KQorVFN0cmluZyBVbmlmb3JtSExTTDo6aW50ZXJmYWNlQmxvY2tNZW1iZXJzU3RyaW5nKGNvbnN0
IFRJbnRlcmZhY2VCbG9jayAmaW50ZXJmYWNlQmxvY2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVExheW91dEJsb2NrU3RvcmFnZSBibG9ja1N0b3Jh
Z2UpCiB7CiAgICAgVFN0cmluZyBobHNsOwogCkBAIC00MzcsNyArNDUwLDcgQEAgVFN0cmluZyBV
bmlmb3JtSExTTDo6aW50ZXJmYWNlQmxvY2tNZW1iZXJzU3RyaW5nKGNvbnN0IFRJbnRlcmZhY2VC
bG9jayAmaW50ZXJmYWMKIAogICAgIGZvciAodW5zaWduZWQgaW50IHR5cGVJbmRleCA9IDA7IHR5
cGVJbmRleCA8IGludGVyZmFjZUJsb2NrLmZpZWxkcygpLnNpemUoKTsgdHlwZUluZGV4KyspCiAg
ICAgewotICAgICAgICBjb25zdCBURmllbGQgJmZpZWxkID0gKmludGVyZmFjZUJsb2NrLmZpZWxk
cygpW3R5cGVJbmRleF07CisgICAgICAgIGNvbnN0IFRGaWVsZCAmZmllbGQgICAgPSAqaW50ZXJm
YWNlQmxvY2suZmllbGRzKClbdHlwZUluZGV4XTsKICAgICAgICAgY29uc3QgVFR5cGUgJmZpZWxk
VHlwZSA9ICpmaWVsZC50eXBlKCk7CiAKICAgICAgICAgaWYgKGJsb2NrU3RvcmFnZSA9PSBFYnNT
dGQxNDApCkBAIC00NDYsMTMgKzQ1OSwxNSBAQCBUU3RyaW5nIFVuaWZvcm1ITFNMOjppbnRlcmZh
Y2VCbG9ja01lbWJlcnNTdHJpbmcoY29uc3QgVEludGVyZmFjZUJsb2NrICZpbnRlcmZhYwogICAg
ICAgICAgICAgaGxzbCArPSBwYWRIZWxwZXIucHJlUGFkZGluZ1N0cmluZyhmaWVsZFR5cGUpOwog
ICAgICAgICB9CiAKLSAgICAgICAgaGxzbCArPSAiICAgICIgKyBJbnRlcmZhY2VCbG9ja0ZpZWxk
VHlwZVN0cmluZyhmaWVsZCwgYmxvY2tTdG9yYWdlKSArCi0gICAgICAgICAgICAgICAgIiAiICsg
RGVjb3JhdGUoZmllbGQubmFtZSgpKSArIEFycmF5U3RyaW5nKGZpZWxkVHlwZSkgKyAiO1xuIjsK
KyAgICAgICAgaGxzbCArPSAiICAgICIgKyBJbnRlcmZhY2VCbG9ja0ZpZWxkVHlwZVN0cmluZyhm
aWVsZCwgYmxvY2tTdG9yYWdlKSArICIgIiArCisgICAgICAgICAgICAgICAgRGVjb3JhdGUoZmll
bGQubmFtZSgpKSArIEFycmF5U3RyaW5nKGZpZWxkVHlwZSkgKyAiO1xuIjsKIAotICAgICAgICAv
LyBtdXN0IHBhZCBvdXQgYWZ0ZXIgbWF0cmljZXMgYW5kIGFycmF5cywgd2hlcmUgSExTTCB1c3Vh
bGx5IGFsbG93cyBpdHNlbGYgcm9vbSB0byBwYWNrIHN0dWZmCisgICAgICAgIC8vIG11c3QgcGFk
IG91dCBhZnRlciBtYXRyaWNlcyBhbmQgYXJyYXlzLCB3aGVyZSBITFNMIHVzdWFsbHkgYWxsb3dz
IGl0c2VsZiByb29tIHRvIHBhY2sKKyAgICAgICAgLy8gc3R1ZmYKICAgICAgICAgaWYgKGJsb2Nr
U3RvcmFnZSA9PSBFYnNTdGQxNDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGJvb2wg
dXNlSExTTFJvd01ham9yUGFja2luZyA9IChmaWVsZFR5cGUuZ2V0TGF5b3V0UXVhbGlmaWVyKCku
bWF0cml4UGFja2luZyA9PSBFbXBDb2x1bW5NYWpvcik7CisgICAgICAgICAgICBjb25zdCBib29s
IHVzZUhMU0xSb3dNYWpvclBhY2tpbmcgPQorICAgICAgICAgICAgICAgIChmaWVsZFR5cGUuZ2V0
TGF5b3V0UXVhbGlmaWVyKCkubWF0cml4UGFja2luZyA9PSBFbXBDb2x1bW5NYWpvcik7CiAgICAg
ICAgICAgICBobHNsICs9IHBhZEhlbHBlci5wb3N0UGFkZGluZ1N0cmluZyhmaWVsZFR5cGUsIHVz
ZUhMU0xSb3dNYWpvclBhY2tpbmcpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDY0LDEwICs0Nzks
OSBAQCBUU3RyaW5nIFVuaWZvcm1ITFNMOjppbnRlcmZhY2VCbG9ja1N0cnVjdFN0cmluZyhjb25z
dCBUSW50ZXJmYWNlQmxvY2sgJmludGVyZmFjZQogewogICAgIGNvbnN0IFRMYXlvdXRCbG9ja1N0
b3JhZ2UgYmxvY2tTdG9yYWdlID0gaW50ZXJmYWNlQmxvY2suYmxvY2tTdG9yYWdlKCk7CiAKLSAg
ICByZXR1cm4gInN0cnVjdCAiICsgSW50ZXJmYWNlQmxvY2tTdHJ1Y3ROYW1lKGludGVyZmFjZUJs
b2NrKSArICJcbiIKKyAgICByZXR1cm4gInN0cnVjdCAiICsgSW50ZXJmYWNlQmxvY2tTdHJ1Y3RO
YW1lKGludGVyZmFjZUJsb2NrKSArCisgICAgICAgICAgICJcbiIKICAgICAgICAgICAgIntcbiIg
KwotICAgICAgICAgICBpbnRlcmZhY2VCbG9ja01lbWJlcnNTdHJpbmcoaW50ZXJmYWNlQmxvY2ss
IGJsb2NrU3RvcmFnZSkgKwotICAgICAgICAgICAifTtcblxuIjsKKyAgICAgICAgICAgaW50ZXJm
YWNlQmxvY2tNZW1iZXJzU3RyaW5nKGludGVyZmFjZUJsb2NrLCBibG9ja1N0b3JhZ2UpICsgIn07
XG5cbiI7CiB9Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL1VuaWZvcm1ITFNMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Vbmlmb3JtSExTTC5oCmluZGV4IGMwMWI5MGZlMDBk
Li43YmJmNDFiNThmNyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVW5pZm9ybUhMU0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Vbmlmb3JtSExTTC5oCkBAIC0yMCw3ICsyMCw5
IEBAIGNsYXNzIFN0cnVjdHVyZUhMU0w7CiBjbGFzcyBVbmlmb3JtSExTTCA6IGFuZ2xlOjpOb25D
b3B5YWJsZQogewogICBwdWJsaWM6Ci0gICAgVW5pZm9ybUhMU0woU3RydWN0dXJlSExTTCAqc3Ry
dWN0dXJlSExTTCwgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSwgY29uc3Qgc3RkOjp2ZWN0b3I8
VW5pZm9ybT4gJnVuaWZvcm1zKTsKKyAgICBVbmlmb3JtSExTTChTdHJ1Y3R1cmVITFNMICpzdHJ1
Y3R1cmVITFNMLAorICAgICAgICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dFR5cGUsCisg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VW5pZm9ybT4gJnVuaWZvcm1zKTsKIAog
ICAgIHZvaWQgcmVzZXJ2ZVVuaWZvcm1SZWdpc3RlcnModW5zaWduZWQgaW50IHJlZ2lzdGVyQ291
bnQpOwogICAgIHZvaWQgcmVzZXJ2ZUludGVyZmFjZUJsb2NrUmVnaXN0ZXJzKHVuc2lnbmVkIGlu
dCByZWdpc3RlckNvdW50KTsKQEAgLTM0LDcgKzM2LDggQEAgY2xhc3MgVW5pZm9ybUhMU0wgOiBh
bmdsZTo6Tm9uQ29weWFibGUKICAgICBUU3RyaW5nIGludGVyZmFjZUJsb2Nrc0hlYWRlcihjb25z
dCBSZWZlcmVuY2VkU3ltYm9scyAmcmVmZXJlbmNlZEludGVyZmFjZUJsb2Nrcyk7CiAKICAgICAv
LyBVc2VkIGZvciBkaXJlY3QgaW5kZXggcmVmZXJlbmNlcwotICAgIHN0YXRpYyBUU3RyaW5nIGlu
dGVyZmFjZUJsb2NrSW5zdGFuY2VTdHJpbmcoY29uc3QgVEludGVyZmFjZUJsb2NrJiBpbnRlcmZh
Y2VCbG9jaywgdW5zaWduZWQgaW50IGFycmF5SW5kZXgpOworICAgIHN0YXRpYyBUU3RyaW5nIGlu
dGVyZmFjZUJsb2NrSW5zdGFuY2VTdHJpbmcoY29uc3QgVEludGVyZmFjZUJsb2NrICZpbnRlcmZh
Y2VCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBhcnJheUluZGV4KTsKIAogICAgIGNvbnN0IHN0ZDo6bWFwPHN0ZDo6c3Ry
aW5nLCB1bnNpZ25lZCBpbnQ+ICZnZXRJbnRlcmZhY2VCbG9ja1JlZ2lzdGVyTWFwKCkgY29uc3QK
ICAgICB7CkBAIC00Niw4ICs0OSwxMSBAQCBjbGFzcyBVbmlmb3JtSExTTCA6IGFuZ2xlOjpOb25D
b3B5YWJsZQogICAgIH0KIAogICBwcml2YXRlOgotICAgIFRTdHJpbmcgaW50ZXJmYWNlQmxvY2tT
dHJpbmcoY29uc3QgVEludGVyZmFjZUJsb2NrICZpbnRlcmZhY2VCbG9jaywgdW5zaWduZWQgaW50
IHJlZ2lzdGVySW5kZXgsIHVuc2lnbmVkIGludCBhcnJheUluZGV4KTsKLSAgICBUU3RyaW5nIGlu
dGVyZmFjZUJsb2NrTWVtYmVyc1N0cmluZyhjb25zdCBUSW50ZXJmYWNlQmxvY2sgJmludGVyZmFj
ZUJsb2NrLCBUTGF5b3V0QmxvY2tTdG9yYWdlIGJsb2NrU3RvcmFnZSk7CisgICAgVFN0cmluZyBp
bnRlcmZhY2VCbG9ja1N0cmluZyhjb25zdCBUSW50ZXJmYWNlQmxvY2sgJmludGVyZmFjZUJsb2Nr
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHJlZ2lzdGVy
SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJy
YXlJbmRleCk7CisgICAgVFN0cmluZyBpbnRlcmZhY2VCbG9ja01lbWJlcnNTdHJpbmcoY29uc3Qg
VEludGVyZmFjZUJsb2NrICZpbnRlcmZhY2VCbG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUTGF5b3V0QmxvY2tTdG9yYWdlIGJsb2NrU3RvcmFnZSk7CiAgICAg
VFN0cmluZyBpbnRlcmZhY2VCbG9ja1N0cnVjdFN0cmluZyhjb25zdCBUSW50ZXJmYWNlQmxvY2sg
JmludGVyZmFjZUJsb2NrKTsKICAgICBjb25zdCBVbmlmb3JtICpmaW5kVW5pZm9ybUJ5TmFtZShj
b25zdCBUU3RyaW5nICZuYW1lKSBjb25zdDsKIApAQCAtODYsNyArOTIsNiBAQCBjbGFzcyBVbmlm
b3JtSExTTCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCB1
bnNpZ25lZCBpbnQ+IG1JbnRlcmZhY2VCbG9ja1JlZ2lzdGVyTWFwOwogICAgIHN0ZDo6bWFwPHN0
ZDo6c3RyaW5nLCB1bnNpZ25lZCBpbnQ+IG1Vbmlmb3JtUmVnaXN0ZXJNYXA7CiB9OwotCiB9CiAK
LSNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1VOSUZPUk1ITFNMX0hfCisjZW5kaWYgIC8v
IENPTVBJTEVSX1RSQU5TTEFUT1JfVU5JRk9STUhMU0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VzZUludGVyZmFjZUJsb2Nr
RmllbGRzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1VzZUludGVyZmFjZUJsb2NrRmllbGRzLmNwcAppbmRleCAyYTFhODEyZTJkMS4uMzkwZTJi
MDkyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL1VzZUludGVyZmFjZUJsb2NrRmllbGRzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Vc2VJbnRlcmZhY2VCbG9ja0ZpZWxk
cy5jcHAKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Vz
ZUludGVyZmFjZUJsb2NrRmllbGRzLmgiCiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L0ludGVybU5vZGUuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxl
LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmgiCiAKIG5hbWVzcGFjZSBz
aApAQCAtMjIsOSArMjMsMTMgQEAgbmFtZXNwYWNlCiBjbGFzcyBVc2VVbmlmb3JtQmxvY2tNZW1i
ZXJzIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKIHsKICAgcHVibGljOgotICAgIFVzZVVuaWZv
cm1CbG9ja01lbWJlcnMoY29uc3QgSW50ZXJmYWNlQmxvY2tMaXN0ICZibG9ja3MpCi0gICAgICAg
IDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLCBtQmxvY2tzKGJsb2Nrcyks
IG1Db2RlSW5zZXJ0ZWQoZmFsc2UpCisgICAgVXNlVW5pZm9ybUJsb2NrTWVtYmVycyhjb25zdCBJ
bnRlcmZhY2VCbG9ja0xpc3QgJmJsb2NrcywgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJs
ZSkKKyAgICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksCisgICAg
ICAgICAgbUJsb2NrcyhibG9ja3MpLAorICAgICAgICAgIG1TeW1ib2xUYWJsZShzeW1ib2xUYWJs
ZSksCisgICAgICAgICAgbUNvZGVJbnNlcnRlZChmYWxzZSkKICAgICB7CisgICAgICAgIEFTU0VS
VChtU3ltYm9sVGFibGUuYXRHbG9iYWxMZXZlbCgpKTsKICAgICB9CiAKICAgcHJvdGVjdGVkOgpA
QCAtMzYsNiArNDEsNyBAQCBjbGFzcyBVc2VVbmlmb3JtQmxvY2tNZW1iZXJzIDogcHVibGljIFRJ
bnRlcm1UcmF2ZXJzZXIKICAgICB2b2lkIEFkZEZpZWxkVXNlU3RhdGVtZW50cyhjb25zdCBTaGFk
ZXJWYXJpYWJsZSAmdmFyLCBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlKTsKIAogICAgIGNvbnN0
IEludGVyZmFjZUJsb2NrTGlzdCAmbUJsb2NrczsKKyAgICBjb25zdCBUU3ltYm9sVGFibGUgJm1T
eW1ib2xUYWJsZTsKICAgICBib29sIG1Db2RlSW5zZXJ0ZWQ7CiB9OwogCkBAIC01Nyw4ICs2Myw2
IEBAIHZvaWQgVXNlVW5pZm9ybUJsb2NrTWVtYmVyczo6QWRkRmllbGRVc2VTdGF0ZW1lbnRzKGNv
bnN0IFNoYWRlclZhcmlhYmxlICZ2YXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUSW50ZXJtU2VxdWVuY2UgKnNlcXVlbmNlKQogewogICAgIFRT
dHJpbmcgbmFtZSA9IFRTdHJpbmcodmFyLm5hbWUuY19zdHIoKSk7Ci0gICAgVFR5cGUgdHlwZSAg
ID0gR2V0U2hhZGVyVmFyaWFibGVUeXBlKHZhcik7Ci0KICAgICBpZiAodmFyLmlzQXJyYXkoKSkK
ICAgICB7CiAgICAgICAgIHNpemVfdCBwb3MgPSBuYW1lLmZpbmRfbGFzdF9vZignWycpOwpAQCAt
NjYsMzMgKzcwLDM1IEBAIHZvaWQgVXNlVW5pZm9ybUJsb2NrTWVtYmVyczo6QWRkRmllbGRVc2VT
dGF0ZW1lbnRzKGNvbnN0IFNoYWRlclZhcmlhYmxlICZ2YXIsCiAgICAgICAgIHsKICAgICAgICAg
ICAgIG5hbWUgPSBuYW1lLnN1YnN0cigwLCBwb3MpOwogICAgICAgICB9Ci0gICAgICAgIFRUeXBl
IGVsZW1lbnRUeXBlID0gdHlwZTsKLSAgICAgICAgZWxlbWVudFR5cGUuY2xlYXJBcnJheW5lc3Mo
KTsKKyAgICB9CisgICAgY29uc3QgVFR5cGUgKnR5cGU7CisgICAgVFR5cGUgYmFzaWNUeXBlOwor
ICAgIGlmICh2YXIuaXNTdHJ1Y3QoKSkKKyAgICB7CisgICAgICAgIFRWYXJpYWJsZSAqc3RydWN0
SW5mbyA9IHJlaW50ZXJwcmV0X2Nhc3Q8VFZhcmlhYmxlICo+KG1TeW1ib2xUYWJsZS5maW5kR2xv
YmFsKG5hbWUpKTsKKyAgICAgICAgQVNTRVJUKHN0cnVjdEluZm8pOworICAgICAgICBjb25zdCBU
VHlwZSAmc3RydWN0VHlwZSA9IHN0cnVjdEluZm8tPmdldFR5cGUoKTsKKyAgICAgICAgdHlwZSAg
ICAgICAgICAgICAgICAgICAgPSAmc3RydWN0VHlwZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgYmFzaWNUeXBlID0gc2g6OkdldFNoYWRlclZhcmlhYmxlQmFzaWNUeXBlKHZhcik7
CisgICAgICAgIHR5cGUgICAgICA9ICZiYXNpY1R5cGU7CisgICAgfQorICAgIEFTU0VSVCh0eXBl
KTsKIAotICAgICAgICBUSW50ZXJtU3ltYm9sICphcnJheVN5bWJvbCA9IG5ldyBUSW50ZXJtU3lt
Ym9sKDAsIG5hbWUsIHR5cGUpOworICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IG5ldyBUSW50
ZXJtU3ltYm9sKDAsIG5hbWUsICp0eXBlKTsKKyAgICBpZiAodmFyLmlzQXJyYXkoKSkKKyAgICB7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgdmFyLmFycmF5U2l6ZTsgKytp
KQogICAgICAgICB7CiAgICAgICAgICAgICBUSW50ZXJtQmluYXJ5ICplbGVtZW50ID0KLSAgICAg
ICAgICAgICAgICBuZXcgVEludGVybUJpbmFyeShFT3BJbmRleERpcmVjdCwgYXJyYXlTeW1ib2ws
IFRJbnRlcm1UeXBlZDo6Q3JlYXRlSW5kZXhOb2RlKGkpKTsKLQotICAgICAgICAgICAgc2VxdWVu
Y2UtPmluc2VydChzZXF1ZW5jZS0+YmVnaW4oKSwgZWxlbWVudCk7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgZWxzZSBpZiAodmFyLmlzU3RydWN0KCkpCi0gICAgewotICAgICAgICBUSW50ZXJtU3lt
Ym9sICpzdHJ1Y3RTeW1ib2wgPSBuZXcgVEludGVybVN5bWJvbCgwLCBuYW1lLCB0eXBlKTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCB2YXIuZmllbGRzLnNpemUoKTsgKytp
KQotICAgICAgICB7Ci0gICAgICAgICAgICBUSW50ZXJtQmluYXJ5ICplbGVtZW50ID0gbmV3IFRJ
bnRlcm1CaW5hcnkoRU9wSW5kZXhEaXJlY3RTdHJ1Y3QsIHN0cnVjdFN5bWJvbCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtVHlw
ZWQ6OkNyZWF0ZUluZGV4Tm9kZShpKSk7Ci0KKyAgICAgICAgICAgICAgICBuZXcgVEludGVybUJp
bmFyeShFT3BJbmRleERpcmVjdCwgc3ltYm9sLCBUSW50ZXJtVHlwZWQ6OkNyZWF0ZUluZGV4Tm9k
ZShpKSk7CiAgICAgICAgICAgICBzZXF1ZW5jZS0+aW5zZXJ0KHNlcXVlbmNlLT5iZWdpbigpLCBl
bGVtZW50KTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBUSW50
ZXJtU3ltYm9sICpzeW1ib2wgPSBuZXcgVEludGVybVN5bWJvbCgwLCBuYW1lLCB0eXBlKTsKLQog
ICAgICAgICBzZXF1ZW5jZS0+aW5zZXJ0KHNlcXVlbmNlLT5iZWdpbigpLCBzeW1ib2wpOwogICAg
IH0KIH0KQEAgLTExMCw5ICsxMTYsMTAgQEAgdm9pZCBVc2VVbmlmb3JtQmxvY2tNZW1iZXJzOjpp
bnNlcnRVc2VDb2RlKFRJbnRlcm1TZXF1ZW5jZSAqc2VxdWVuY2UpCiAgICAgICAgIH0KICAgICAg
ICAgZWxzZSBpZiAoYmxvY2suYXJyYXlTaXplID4gMCkKICAgICAgICAgewotICAgICAgICAgICAg
VFR5cGUgdHlwZSAgICAgICAgICAgICAgICAgPSBHZXRJbnRlcmZhY2VCbG9ja1R5cGUoYmxvY2sp
OwotICAgICAgICAgICAgVFN0cmluZyBuYW1lICAgICAgICAgICAgICAgPSBUU3RyaW5nKGJsb2Nr
Lmluc3RhbmNlTmFtZS5jX3N0cigpKTsKLSAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKmFycmF5
U3ltYm9sID0gbmV3IFRJbnRlcm1TeW1ib2woMCwgbmFtZSwgdHlwZSk7CisgICAgICAgICAgICBU
U3RyaW5nIG5hbWUgICAgICA9IFRTdHJpbmcoYmxvY2suaW5zdGFuY2VOYW1lLmNfc3RyKCkpOwor
ICAgICAgICAgICAgVFZhcmlhYmxlICp1YkluZm8gPSByZWludGVycHJldF9jYXN0PFRWYXJpYWJs
ZSAqPihtU3ltYm9sVGFibGUuZmluZEdsb2JhbChuYW1lKSk7CisgICAgICAgICAgICBBU1NFUlQo
dWJJbmZvKTsKKyAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKmFycmF5U3ltYm9sID0gbmV3IFRJ
bnRlcm1TeW1ib2woMCwgbmFtZSwgdWJJbmZvLT5nZXRUeXBlKCkpOwogICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBibG9jay5hcnJheVNpemU7ICsraSkKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICBUSW50ZXJtQmluYXJ5ICppbnN0YW5jZVN5bWJvbCA9IG5l
dyBUSW50ZXJtQmluYXJ5KEVPcEluZGV4RGlyZWN0LCBhcnJheVN5bWJvbCwKQEAgLTEyOCw5ICsx
MzUsMTAgQEAgdm9pZCBVc2VVbmlmb3JtQmxvY2tNZW1iZXJzOjppbnNlcnRVc2VDb2RlKFRJbnRl
cm1TZXF1ZW5jZSAqc2VxdWVuY2UpCiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7
Ci0gICAgICAgICAgICBUVHlwZSB0eXBlICAgICAgICAgICAgICAgICA9IEdldEludGVyZmFjZUJs
b2NrVHlwZShibG9jayk7Ci0gICAgICAgICAgICBUU3RyaW5nIG5hbWUgICAgICAgICAgICAgICA9
IFRTdHJpbmcoYmxvY2suaW5zdGFuY2VOYW1lLmNfc3RyKCkpOwotICAgICAgICAgICAgVEludGVy
bVN5bWJvbCAqYmxvY2tTeW1ib2wgPSBuZXcgVEludGVybVN5bWJvbCgwLCBuYW1lLCB0eXBlKTsK
KyAgICAgICAgICAgIFRTdHJpbmcgbmFtZSAgICAgID0gVFN0cmluZyhibG9jay5pbnN0YW5jZU5h
bWUuY19zdHIoKSk7CisgICAgICAgICAgICBUVmFyaWFibGUgKnViSW5mbyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8VFZhcmlhYmxlICo+KG1TeW1ib2xUYWJsZS5maW5kR2xvYmFsKG5hbWUpKTsKKyAgICAg
ICAgICAgIEFTU0VSVCh1YkluZm8pOworICAgICAgICAgICAgVEludGVybVN5bWJvbCAqYmxvY2tT
eW1ib2wgPSBuZXcgVEludGVybVN5bWJvbCgwLCBuYW1lLCB1YkluZm8tPmdldFR5cGUoKSk7CiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGJsb2NrLmZpZWxkcy5zaXpl
KCk7ICsraSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBUSW50ZXJtQmluYXJ5ICpl
bGVtZW50ID0gbmV3IFRJbnRlcm1CaW5hcnkoCkBAIC0xNDQsOSArMTUyLDExIEBAIHZvaWQgVXNl
VW5pZm9ybUJsb2NrTWVtYmVyczo6aW5zZXJ0VXNlQ29kZShUSW50ZXJtU2VxdWVuY2UgKnNlcXVl
bmNlKQogCiB9ICAvLyBuYW1lc3BhY2UgYW5vbnltb3VzCiAKLXZvaWQgVXNlSW50ZXJmYWNlQmxv
Y2tGaWVsZHMoVEludGVybU5vZGUgKnJvb3QsIGNvbnN0IEludGVyZmFjZUJsb2NrTGlzdCAmYmxv
Y2tzKQordm9pZCBVc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcyhUSW50ZXJtTm9kZSAqcm9vdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50ZXJmYWNlQmxvY2tMaXN0ICZibG9j
a3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2xUYWJsZSAmc3lt
Ym9sVGFibGUpCiB7Ci0gICAgVXNlVW5pZm9ybUJsb2NrTWVtYmVycyB1c2VVbmlmb3JtQmxvY2so
YmxvY2tzKTsKKyAgICBVc2VVbmlmb3JtQmxvY2tNZW1iZXJzIHVzZVVuaWZvcm1CbG9jayhibG9j
a3MsIHN5bWJvbFRhYmxlKTsKICAgICByb290LT50cmF2ZXJzZSgmdXNlVW5pZm9ybUJsb2NrKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVXNlSW50ZXJmYWNlQmxvY2tGaWVsZHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1VzZUludGVyZmFjZUJsb2NrRmllbGRzLmgKaW5k
ZXggMDI0YmZkNGIxZDIuLmE3ODliYjdlOWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9Vc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcy5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Vz
ZUludGVyZmFjZUJsb2NrRmllbGRzLmgKQEAgLTE3LDkgKzE3LDE0IEBAIGNsYXNzIFRJbnRlcm1O
b2RlOwogbmFtZXNwYWNlIHNoCiB7CiAKK2NsYXNzIFRTeW1ib2xUYWJsZTsKKwogdXNpbmcgSW50
ZXJmYWNlQmxvY2tMaXN0ID0gc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPjsKIAotdm9p
ZCBVc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcyhUSW50ZXJtTm9kZSAqcm9vdCwgY29uc3QgSW50ZXJm
YWNlQmxvY2tMaXN0ICZibG9ja3MpOwordm9pZCBVc2VJbnRlcmZhY2VCbG9ja0ZpZWxkcyhUSW50
ZXJtTm9kZSAqcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50ZXJm
YWNlQmxvY2tMaXN0ICZibG9ja3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUpOworCiB9ICAvLyBuYW1lc3BhY2Ugc2gKIAogI2Vu
ZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1VTRUlOVEVSRkFDRUJMT0NLRklFTERTX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9VdGlsc0hMU0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVXRpbHNITFNMLmNwcAppbmRleCAyMjFkNWQ5YjU2YS4uYWNjYjNiNWJhNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1V0aWxzSExTTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvVXRpbHNITFNMLmNwcApAQCAtNTMsNiArNTMsOCBAQCBITFNMVGV4dHVyZVNh
bXBsZXJHcm91cCBUZXh0dXJlR3JvdXAoY29uc3QgVEJhc2ljVHlwZSB0eXBlKQogICAgICAgICAg
ICAgcmV0dXJuIEhMU0xfVEVYVFVSRV8yRF9BUlJBWTsKICAgICAgICAgY2FzZSBFYnRTYW1wbGVy
M0Q6CiAgICAgICAgICAgICByZXR1cm4gSExTTF9URVhUVVJFXzNEOworICAgICAgICBjYXNlIEVi
dFNhbXBsZXIyRE1TOgorICAgICAgICAgICAgcmV0dXJuIEhMU0xfVEVYVFVSRV8yRF9NUzsKICAg
ICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEOgogICAgICAgICAgICAgcmV0dXJuIEhMU0xfVEVYVFVS
RV8yRF9JTlQ0OwogICAgICAgICBjYXNlIEVidElTYW1wbGVyM0Q6CkBAIC02MSw2ICs2Myw4IEBA
IEhMU0xUZXh0dXJlU2FtcGxlckdyb3VwIFRleHR1cmVHcm91cChjb25zdCBUQmFzaWNUeXBlIHR5
cGUpCiAgICAgICAgICAgICByZXR1cm4gSExTTF9URVhUVVJFXzJEX0FSUkFZX0lOVDQ7CiAgICAg
ICAgIGNhc2UgRWJ0SVNhbXBsZXIyREFycmF5OgogICAgICAgICAgICAgcmV0dXJuIEhMU0xfVEVY
VFVSRV8yRF9BUlJBWV9JTlQ0OworICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRNUzoKKyAgICAg
ICAgICAgIHJldHVybiBITFNMX1RFWFRVUkVfMkRfTVNfSU5UNDsKICAgICAgICAgY2FzZSBFYnRV
U2FtcGxlcjJEOgogICAgICAgICAgICAgcmV0dXJuIEhMU0xfVEVYVFVSRV8yRF9VSU5UNDsKICAg
ICAgICAgY2FzZSBFYnRVU2FtcGxlcjNEOgpAQCAtNjksNiArNzMsOCBAQCBITFNMVGV4dHVyZVNh
bXBsZXJHcm91cCBUZXh0dXJlR3JvdXAoY29uc3QgVEJhc2ljVHlwZSB0eXBlKQogICAgICAgICAg
ICAgcmV0dXJuIEhMU0xfVEVYVFVSRV8yRF9BUlJBWV9VSU5UNDsKICAgICAgICAgY2FzZSBFYnRV
U2FtcGxlcjJEQXJyYXk6CiAgICAgICAgICAgICByZXR1cm4gSExTTF9URVhUVVJFXzJEX0FSUkFZ
X1VJTlQ0OworICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkRNUzoKKyAgICAgICAgICAgIHJldHVy
biBITFNMX1RFWFRVUkVfMkRfTVNfVUlOVDQ7CiAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEU2hh
ZG93OgogICAgICAgICAgICAgcmV0dXJuIEhMU0xfVEVYVFVSRV8yRF9DT01QQVJJU09OOwogICAg
ICAgICBjYXNlIEVidFNhbXBsZXJDdWJlU2hhZG93OgpAQCAtOTMsMTggKzk5LDI0IEBAIFRTdHJp
bmcgVGV4dHVyZVN0cmluZyhjb25zdCBITFNMVGV4dHVyZVNhbXBsZXJHcm91cCB0eXBlKQogICAg
ICAgICAgICAgcmV0dXJuICJUZXh0dXJlMkRBcnJheSI7CiAgICAgICAgIGNhc2UgSExTTF9URVhU
VVJFXzNEOgogICAgICAgICAgICAgcmV0dXJuICJUZXh0dXJlM0QiOworICAgICAgICBjYXNlIEhM
U0xfVEVYVFVSRV8yRF9NUzoKKyAgICAgICAgICAgIHJldHVybiAiVGV4dHVyZTJETVM8ZmxvYXQ0
PiI7CiAgICAgICAgIGNhc2UgSExTTF9URVhUVVJFXzJEX0lOVDQ6CiAgICAgICAgICAgICByZXR1
cm4gIlRleHR1cmUyRDxpbnQ0PiI7CiAgICAgICAgIGNhc2UgSExTTF9URVhUVVJFXzNEX0lOVDQ6
CiAgICAgICAgICAgICByZXR1cm4gIlRleHR1cmUzRDxpbnQ0PiI7CiAgICAgICAgIGNhc2UgSExT
TF9URVhUVVJFXzJEX0FSUkFZX0lOVDQ6CiAgICAgICAgICAgICByZXR1cm4gIlRleHR1cmUyREFy
cmF5PGludDQ+IjsKKyAgICAgICAgY2FzZSBITFNMX1RFWFRVUkVfMkRfTVNfSU5UNDoKKyAgICAg
ICAgICAgIHJldHVybiAiVGV4dHVyZTJETVM8aW50ND4iOwogICAgICAgICBjYXNlIEhMU0xfVEVY
VFVSRV8yRF9VSU5UNDoKICAgICAgICAgICAgIHJldHVybiAiVGV4dHVyZTJEPHVpbnQ0PiI7CiAg
ICAgICAgIGNhc2UgSExTTF9URVhUVVJFXzNEX1VJTlQ0OgogICAgICAgICAgICAgcmV0dXJuICJU
ZXh0dXJlM0Q8dWludDQ+IjsKICAgICAgICAgY2FzZSBITFNMX1RFWFRVUkVfMkRfQVJSQVlfVUlO
VDQ6CiAgICAgICAgICAgICByZXR1cm4gIlRleHR1cmUyREFycmF5PHVpbnQ0PiI7CisgICAgICAg
IGNhc2UgSExTTF9URVhUVVJFXzJEX01TX1VJTlQ0OgorICAgICAgICAgICAgcmV0dXJuICJUZXh0
dXJlMkRNUzx1aW50ND4iOwogICAgICAgICBjYXNlIEhMU0xfVEVYVFVSRV8yRF9DT01QQVJJU09O
OgogICAgICAgICAgICAgcmV0dXJuICJUZXh0dXJlMkQiOwogICAgICAgICBjYXNlIEhMU0xfVEVY
VFVSRV9DVUJFX0NPTVBBUklTT046CkBAIC0xMzUsMTggKzE0NywyNCBAQCBUU3RyaW5nIFRleHR1
cmVHcm91cFN1ZmZpeChjb25zdCBITFNMVGV4dHVyZVNhbXBsZXJHcm91cCB0eXBlKQogICAgICAg
ICAgICAgcmV0dXJuICIyREFycmF5IjsKICAgICAgICAgY2FzZSBITFNMX1RFWFRVUkVfM0Q6CiAg
ICAgICAgICAgICByZXR1cm4gIjNEIjsKKyAgICAgICAgY2FzZSBITFNMX1RFWFRVUkVfMkRfTVM6
CisgICAgICAgICAgICByZXR1cm4gIjJETVMiOwogICAgICAgICBjYXNlIEhMU0xfVEVYVFVSRV8y
RF9JTlQ0OgogICAgICAgICAgICAgcmV0dXJuICIyRF9pbnQ0XyI7CiAgICAgICAgIGNhc2UgSExT
TF9URVhUVVJFXzNEX0lOVDQ6CiAgICAgICAgICAgICByZXR1cm4gIjNEX2ludDRfIjsKICAgICAg
ICAgY2FzZSBITFNMX1RFWFRVUkVfMkRfQVJSQVlfSU5UNDoKICAgICAgICAgICAgIHJldHVybiAi
MkRBcnJheV9pbnQ0XyI7CisgICAgICAgIGNhc2UgSExTTF9URVhUVVJFXzJEX01TX0lOVDQ6Cisg
ICAgICAgICAgICByZXR1cm4gIjJETVNfaW50NF8iOwogICAgICAgICBjYXNlIEhMU0xfVEVYVFVS
RV8yRF9VSU5UNDoKICAgICAgICAgICAgIHJldHVybiAiMkRfdWludDRfIjsKICAgICAgICAgY2Fz
ZSBITFNMX1RFWFRVUkVfM0RfVUlOVDQ6CiAgICAgICAgICAgICByZXR1cm4gIjNEX3VpbnQ0XyI7
CiAgICAgICAgIGNhc2UgSExTTF9URVhUVVJFXzJEX0FSUkFZX1VJTlQ0OgogICAgICAgICAgICAg
cmV0dXJuICIyREFycmF5X3VpbnQ0XyI7CisgICAgICAgIGNhc2UgSExTTF9URVhUVVJFXzJEX01T
X1VJTlQ0OgorICAgICAgICAgICAgcmV0dXJuICIyRE1TX3VpbnQ0XyI7CiAgICAgICAgIGNhc2Ug
SExTTF9URVhUVVJFXzJEX0NPTVBBUklTT046CiAgICAgICAgICAgICByZXR1cm4gIjJEX2NvbXBh
cmlzb24iOwogICAgICAgICBjYXNlIEhMU0xfVEVYVFVSRV9DVUJFX0NPTVBBUklTT046CkBAIC0y
MjMsMjkgKzI0MSwxNyBAQCBUU3RyaW5nIERlY29yYXRlSWZOZWVkZWQoY29uc3QgVE5hbWUgJm5h
bWUpCiAgICAgfQogfQogCi1UU3RyaW5nIERlY29yYXRlRnVuY3Rpb25JZk5lZWRlZChjb25zdCBU
TmFtZSAmbmFtZSkKLXsKLSAgICBpZiAobmFtZS5pc0ludGVybmFsKCkpCi0gICAgewotICAgICAg
ICByZXR1cm4gVEZ1bmN0aW9uOjp1bm1hbmdsZU5hbWUobmFtZS5nZXRTdHJpbmcoKSk7Ci0gICAg
fQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiBEZWNvcmF0ZShURnVuY3Rpb246OnVu
bWFuZ2xlTmFtZShuYW1lLmdldFN0cmluZygpKSk7Ci0gICAgfQotfQotCiBUU3RyaW5nIFR5cGVT
dHJpbmcoY29uc3QgVFR5cGUgJnR5cGUpCiB7Ci0gICAgY29uc3QgVFN0cnVjdHVyZSogc3RydWN0
dXJlID0gdHlwZS5nZXRTdHJ1Y3QoKTsKKyAgICBjb25zdCBUU3RydWN0dXJlICpzdHJ1Y3R1cmUg
PSB0eXBlLmdldFN0cnVjdCgpOwogICAgIGlmIChzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBj
b25zdCBUU3RyaW5nJiB0eXBlTmFtZSA9IHN0cnVjdHVyZS0+bmFtZSgpOworICAgICAgICBjb25z
dCBUU3RyaW5nICZ0eXBlTmFtZSA9IHN0cnVjdHVyZS0+bmFtZSgpOwogICAgICAgICBpZiAodHlw
ZU5hbWUgIT0gIiIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3ROYW1lU3Ry
aW5nKCpzdHJ1Y3R1cmUpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgICAvLyBOYW1lbGVzcyBz
dHJ1Y3R1cmUsIGRlZmluZSBpbiBwbGFjZQorICAgICAgICBlbHNlICAvLyBOYW1lbGVzcyBzdHJ1
Y3R1cmUsIGRlZmluZSBpbiBwbGFjZQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gU3Ry
dWN0dXJlSExTTDo6ZGVmaW5lTmFtZWxlc3MoKnN0cnVjdHVyZSk7CiAgICAgICAgIH0KQEAgLTI2
MCw1NSArMjY2LDcxIEBAIFRTdHJpbmcgVHlwZVN0cmluZyhjb25zdCBUVHlwZSAmdHlwZSkKICAg
ICB7CiAgICAgICAgIHN3aXRjaCAodHlwZS5nZXRCYXNpY1R5cGUoKSkKICAgICAgICAgewotICAg
ICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0Tm9taW5h
bFNpemUoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gImZs
b2F0IjsKLSAgICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gImZsb2F0MiI7Ci0gICAgICAgICAg
ICAgIGNhc2UgMzogcmV0dXJuICJmbG9hdDMiOwotICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVy
biAiZmxvYXQ0IjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBjYXNlIEVidEludDoKLSAgICAg
ICAgICAgIHN3aXRjaCAodHlwZS5nZXROb21pbmFsU2l6ZSgpKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICBjYXNlIDE6IHJldHVybiAiaW50IjsKLSAgICAgICAgICAgICAgY2FzZSAyOiBy
ZXR1cm4gImludDIiOwotICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiAiaW50MyI7Ci0gICAg
ICAgICAgICAgIGNhc2UgNDogcmV0dXJuICJpbnQ0IjsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICBjYXNlIEVidFVJbnQ6Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0Tm9taW5hbFNpemUo
KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gInVpbnQiOwot
ICAgICAgICAgICAgICBjYXNlIDI6IHJldHVybiAidWludDIiOwotICAgICAgICAgICAgICBjYXNl
IDM6IHJldHVybiAidWludDMiOwotICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiAidWludDQi
OwotICAgICAgICAgICAgfQotICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAgICAgIHN3
aXRjaCAodHlwZS5nZXROb21pbmFsU2l6ZSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICBjYXNlIDE6IHJldHVybiAiYm9vbCI7Ci0gICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuICJi
b29sMiI7Ci0gICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuICJib29sMyI7Ci0gICAgICAgICAg
ICAgIGNhc2UgNDogcmV0dXJuICJib29sNCI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgY2Fz
ZSBFYnRWb2lkOgotICAgICAgICAgICAgcmV0dXJuICJ2b2lkIjsKLSAgICAgICAgICBjYXNlIEVi
dFNhbXBsZXIyRDoKLSAgICAgICAgICBjYXNlIEVidElTYW1wbGVyMkQ6Ci0gICAgICAgICAgY2Fz
ZSBFYnRVU2FtcGxlcjJEOgotICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6Ci0gICAg
ICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEQXJyYXk6Ci0gICAgICAgICAgY2FzZSBFYnRVU2FtcGxl
cjJEQXJyYXk6Ci0gICAgICAgICAgICByZXR1cm4gInNhbXBsZXIyRCI7Ci0gICAgICAgICAgY2Fz
ZSBFYnRTYW1wbGVyQ3ViZToKLSAgICAgICAgICBjYXNlIEVidElTYW1wbGVyQ3ViZToKLSAgICAg
ICAgICBjYXNlIEVidFVTYW1wbGVyQ3ViZToKLSAgICAgICAgICAgIHJldHVybiAic2FtcGxlckNV
QkUiOwotICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlckV4dGVybmFsT0VTOgotICAgICAgICAgICAg
cmV0dXJuICJzYW1wbGVyMkQiOwotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0
eXBlLmdldE5vbWluYWxTaXplKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImZsb2F0IjsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICJmbG9hdDIiOworICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gImZsb2F0MyI7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiZmxvYXQ0IjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUu
Z2V0Tm9taW5hbFNpemUoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgMToKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiaW50IjsKKyAgICAgICAg
ICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJpbnQy
IjsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICJpbnQzIjsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuICJpbnQ0IjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjYXNlIEVidFVJbnQ6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlLmdldE5vbWluYWxT
aXplKCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjYXNlIDE6Cisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInVpbnQiOworICAgICAgICAgICAgICAgICAg
ICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInVpbnQyIjsKKyAgICAg
ICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJ1
aW50MyI7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiAidWludDQiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2Ug
RWJ0Qm9vbDoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0Tm9taW5hbFNpemUoKSkK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAiYm9vbCI7CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
MjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAiYm9vbDIiOworICAgICAgICAgICAg
ICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gImJvb2wzIjsK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICJib29sNCI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBFYnRWb2lk
OgorICAgICAgICAgICAgICAgIHJldHVybiAidm9pZCI7CisgICAgICAgICAgICBjYXNlIEVidFNh
bXBsZXIyRDoKKyAgICAgICAgICAgIGNhc2UgRWJ0SVNhbXBsZXIyRDoKKyAgICAgICAgICAgIGNh
c2UgRWJ0VVNhbXBsZXIyRDoKKyAgICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXk6Cisg
ICAgICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRBcnJheToKKyAgICAgICAgICAgIGNhc2UgRWJ0
VVNhbXBsZXIyREFycmF5OgorICAgICAgICAgICAgICAgIHJldHVybiAic2FtcGxlcjJEIjsKKyAg
ICAgICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6CisgICAgICAgICAgICBjYXNlIEVidElTYW1w
bGVyQ3ViZToKKyAgICAgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXJDdWJlOgorICAgICAgICAgICAg
ICAgIHJldHVybiAic2FtcGxlckNVQkUiOworICAgICAgICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0
ZXJuYWxPRVM6CisgICAgICAgICAgICAgICAgcmV0dXJuICJzYW1wbGVyMkQiOworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIApA
QCAtMzMzLDcgKzM1NSw4IEBAIFRTdHJpbmcgU3RydWN0TmFtZVN0cmluZyhjb25zdCBUU3RydWN0
dXJlICZzdHJ1Y3R1cmUpCiAgICAgcmV0dXJuICJzcyIgKyBzdHIoc3RydWN0dXJlLnVuaXF1ZUlk
KCkpICsgIl8iICsgc3RydWN0dXJlLm5hbWUoKTsKIH0KIAotVFN0cmluZyBRdWFsaWZpZWRTdHJ1
Y3ROYW1lU3RyaW5nKGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdHVyZSwgYm9vbCB1c2VITFNMUm93
TWFqb3JQYWNraW5nLAorVFN0cmluZyBRdWFsaWZpZWRTdHJ1Y3ROYW1lU3RyaW5nKGNvbnN0IFRT
dHJ1Y3R1cmUgJnN0cnVjdHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHVzZUhMU0xSb3dNYWpvclBhY2tpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCB1c2VTdGQxNDBQYWNraW5nKQogewogICAgIGlmIChzdHJ1Y3R1cmUubmFtZSgp
ID09ICIiKQpAQCAtMzYzLDE3ICszODYsMjggQEAgVFN0cmluZyBJbnRlcnBvbGF0aW9uU3RyaW5n
KFRRdWFsaWZpZXIgcXVhbGlmaWVyKQogewogICAgIHN3aXRjaCAocXVhbGlmaWVyKQogICAgIHsK
LSAgICAgIGNhc2UgRXZxVmFyeWluZ0luOiAgICAgICAgICAgcmV0dXJuICIiOwotICAgICAgY2Fz
ZSBFdnFGcmFnbWVudEluOiAgICAgICAgICByZXR1cm4gIiI7Ci0gICAgICBjYXNlIEV2cVNtb290
aEluOiAgICAgICAgICAgIHJldHVybiAibGluZWFyIjsKLSAgICAgIGNhc2UgRXZxRmxhdEluOiAg
ICAgICAgICAgICAgcmV0dXJuICJub2ludGVycG9sYXRpb24iOwotICAgICAgY2FzZSBFdnFDZW50
cm9pZEluOiAgICAgICAgICByZXR1cm4gImNlbnRyb2lkIjsKLSAgICAgIGNhc2UgRXZxVmFyeWlu
Z091dDogICAgICAgICAgcmV0dXJuICIiOwotICAgICAgY2FzZSBFdnFWZXJ0ZXhPdXQ6ICAgICAg
ICAgICByZXR1cm4gIiI7Ci0gICAgICBjYXNlIEV2cVNtb290aE91dDogICAgICAgICAgIHJldHVy
biAibGluZWFyIjsKLSAgICAgIGNhc2UgRXZxRmxhdE91dDogICAgICAgICAgICAgcmV0dXJuICJu
b2ludGVycG9sYXRpb24iOwotICAgICAgY2FzZSBFdnFDZW50cm9pZE91dDogICAgICAgICByZXR1
cm4gImNlbnRyb2lkIjsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIGNh
c2UgRXZxVmFyeWluZ0luOgorICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICBjYXNlIEV2
cUZyYWdtZW50SW46CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIGNhc2UgRXZxU21v
b3RoSW46CisgICAgICAgICAgICByZXR1cm4gImxpbmVhciI7CisgICAgICAgIGNhc2UgRXZxRmxh
dEluOgorICAgICAgICAgICAgcmV0dXJuICJub2ludGVycG9sYXRpb24iOworICAgICAgICBjYXNl
IEV2cUNlbnRyb2lkSW46CisgICAgICAgICAgICByZXR1cm4gImNlbnRyb2lkIjsKKyAgICAgICAg
Y2FzZSBFdnFWYXJ5aW5nT3V0OgorICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICBjYXNl
IEV2cVZlcnRleE91dDoKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgY2FzZSBFdnFT
bW9vdGhPdXQ6CisgICAgICAgICAgICByZXR1cm4gImxpbmVhciI7CisgICAgICAgIGNhc2UgRXZx
RmxhdE91dDoKKyAgICAgICAgICAgIHJldHVybiAibm9pbnRlcnBvbGF0aW9uIjsKKyAgICAgICAg
Y2FzZSBFdnFDZW50cm9pZE91dDoKKyAgICAgICAgICAgIHJldHVybiAiY2VudHJvaWQiOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9CiAKICAgICBy
ZXR1cm4gIiI7CkBAIC0zODMsMTEgKzQxNywxNyBAQCBUU3RyaW5nIFF1YWxpZmllclN0cmluZyhU
UXVhbGlmaWVyIHF1YWxpZmllcikKIHsKICAgICBzd2l0Y2ggKHF1YWxpZmllcikKICAgICB7Ci0g
ICAgICBjYXNlIEV2cUluOiAgICAgICAgICAgIHJldHVybiAiaW4iOwotICAgICAgY2FzZSBFdnFP
dXQ6ICAgICAgICAgICByZXR1cm4gImlub3V0IjsgLy8gJ291dCcgcmVzdWx0cyBpbiBhbiBITFNM
IGVycm9yIGlmIG5vdCBhbGwgZmllbGRzIGFyZSB3cml0dGVuLCBmb3IgR0xTTCBpdCdzIHVuZGVm
aW5lZAotICAgICAgY2FzZSBFdnFJbk91dDogICAgICAgICByZXR1cm4gImlub3V0IjsKLSAgICAg
IGNhc2UgRXZxQ29uc3RSZWFkT25seTogcmV0dXJuICJjb25zdCI7Ci0gICAgICBkZWZhdWx0OiBV
TlJFQUNIQUJMRSgpOworICAgICAgICBjYXNlIEV2cUluOgorICAgICAgICAgICAgcmV0dXJuICJp
biI7CisgICAgICAgIGNhc2UgRXZxT3V0OgorICAgICAgICAgICAgcmV0dXJuICJpbm91dCI7ICAv
LyAnb3V0JyByZXN1bHRzIGluIGFuIEhMU0wgZXJyb3IgaWYgbm90IGFsbCBmaWVsZHMgYXJlIHdy
aXR0ZW4sIGZvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHTFNMIGl0J3MgdW5k
ZWZpbmVkCisgICAgICAgIGNhc2UgRXZxSW5PdXQ6CisgICAgICAgICAgICByZXR1cm4gImlub3V0
IjsKKyAgICAgICAgY2FzZSBFdnFDb25zdFJlYWRPbmx5OgorICAgICAgICAgICAgcmV0dXJuICJj
b25zdCI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAg
IH0KIAogICAgIHJldHVybiAiIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci90cmFuc2xhdG9yL1V0aWxzSExTTC5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVXRpbHNITFNMLmgKaW5kZXggNzQ4YjM1MTNl
NjkuLjM3ZWRjZTQwZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9VdGlsc0hMU0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9VdGlsc0hMU0wuaApAQCAtMzEsMTIgKzMxLDE1
IEBAIGVudW0gSExTTFRleHR1cmVTYW1wbGVyR3JvdXAKICAgICBITFNMX1RFWFRVUkVfQ1VCRSwK
ICAgICBITFNMX1RFWFRVUkVfMkRfQVJSQVksCiAgICAgSExTTF9URVhUVVJFXzNELAorICAgIEhM
U0xfVEVYVFVSRV8yRF9NUywKICAgICBITFNMX1RFWFRVUkVfMkRfSU5UNCwKICAgICBITFNMX1RF
WFRVUkVfM0RfSU5UNCwKICAgICBITFNMX1RFWFRVUkVfMkRfQVJSQVlfSU5UNCwKKyAgICBITFNM
X1RFWFRVUkVfMkRfTVNfSU5UNCwKICAgICBITFNMX1RFWFRVUkVfMkRfVUlOVDQsCiAgICAgSExT
TF9URVhUVVJFXzNEX1VJTlQ0LAogICAgIEhMU0xfVEVYVFVSRV8yRF9BUlJBWV9VSU5UNCwKKyAg
ICBITFNMX1RFWFRVUkVfMkRfTVNfVUlOVDQsCiAKICAgICAvLyBDb21wYXJpc29uIHNhbXBsZXJz
CiAKQEAgLTYyLDE0ICs2NSwxMyBAQCBUU3RyaW5nIFNhbXBsZXJTdHJpbmcoSExTTFRleHR1cmVT
YW1wbGVyR3JvdXAgdHlwZSk7CiAvLyBQcmVwZW5kcyBhbiB1bmRlcnNjb3JlIHRvIGF2b2lkIG5h
bWluZyBjbGFzaGVzCiBUU3RyaW5nIERlY29yYXRlKGNvbnN0IFRTdHJpbmcgJnN0cmluZyk7CiBU
U3RyaW5nIERlY29yYXRlSWZOZWVkZWQoY29uc3QgVE5hbWUgJm5hbWUpOwotLy8gRGVjb3JhdGVz
IGFuZCBhbHNvIHVubWFuZ2xlcyB0aGUgZnVuY3Rpb24gbmFtZQotVFN0cmluZyBEZWNvcmF0ZUZ1
bmN0aW9uSWZOZWVkZWQoY29uc3QgVE5hbWUgJm5hbWUpOwogVFN0cmluZyBEZWNvcmF0ZVVuaWZv
cm0oY29uc3QgVE5hbWUgJm5hbWUsIGNvbnN0IFRUeXBlICZ0eXBlKTsKIFRTdHJpbmcgRGVjb3Jh
dGVGaWVsZChjb25zdCBUU3RyaW5nICZzdHJpbmcsIGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdHVy
ZSk7CiBUU3RyaW5nIERlY29yYXRlUHJpdmF0ZShjb25zdCBUU3RyaW5nICZwcml2YXRlVGV4dCk7
CiBUU3RyaW5nIFR5cGVTdHJpbmcoY29uc3QgVFR5cGUgJnR5cGUpOwogVFN0cmluZyBTdHJ1Y3RO
YW1lU3RyaW5nKGNvbnN0IFRTdHJ1Y3R1cmUgJnN0cnVjdHVyZSk7Ci1UU3RyaW5nIFF1YWxpZmll
ZFN0cnVjdE5hbWVTdHJpbmcoY29uc3QgVFN0cnVjdHVyZSAmc3RydWN0dXJlLCBib29sIHVzZUhM
U0xSb3dNYWpvclBhY2tpbmcsCitUU3RyaW5nIFF1YWxpZmllZFN0cnVjdE5hbWVTdHJpbmcoY29u
c3QgVFN0cnVjdHVyZSAmc3RydWN0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgdXNlSExTTFJvd01ham9yUGFja2luZywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHVzZVN0ZDE0MFBhY2tpbmcpOwogVFN0cmluZyBJbnRlcnBvbGF0aW9u
U3RyaW5nKFRRdWFsaWZpZXIgcXVhbGlmaWVyKTsKIFRTdHJpbmcgUXVhbGlmaWVyU3RyaW5nKFRR
dWFsaWZpZXIgcXVhbGlmaWVyKTsKQEAgLTc4LDQgKzgwLDQgQEAgVFN0cmluZyBRdWFsaWZpZXJT
dHJpbmcoVFF1YWxpZmllciBxdWFsaWZpZXIpOwogVFN0cmluZyBEaXNhbWJpZ3VhdGVGdW5jdGlv
bk5hbWUoY29uc3QgVEludGVybVNlcXVlbmNlICpwYXJhbWV0ZXJzKTsKIH0KIAotI2VuZGlmIC8v
IENPTVBJTEVSX1RSQU5TTEFUT1JfVVRJTFNITFNMX0hfCisjZW5kaWYgIC8vIENPTVBJTEVSX1RS
QU5TTEFUT1JfVVRJTFNITFNMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRl
R2xvYmFsSW5pdGlhbGl6ZXIuY3BwCmluZGV4IDI0NjFiNmE0MzgzLi4xMGEzZTUxN2UyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3Iv
VmFsaWRhdGVHbG9iYWxJbml0aWFsaXplci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplci5jcHAK
QEAgLTgsNiArOCw5IEBACiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29u
dGV4dC5oIgogCituYW1lc3BhY2Ugc2gKK3sKKwogbmFtZXNwYWNlCiB7CiAKQEAgLTMyLDcgKzM1
LDggQEAgY2xhc3MgVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplclRyYXZlcnNlciA6IHB1YmxpYyBU
SW50ZXJtVHJhdmVyc2VyCiAKIHZvaWQgVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplclRyYXZlcnNl
cjo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkKIHsKLSAgICBjb25zdCBUU3ltYm9s
ICpzeW0gPSBtQ29udGV4dC0+c3ltYm9sVGFibGUuZmluZChub2RlLT5nZXRTeW1ib2woKSwgbUNv
bnRleHQtPmdldFNoYWRlclZlcnNpb24oKSk7CisgICAgY29uc3QgVFN5bWJvbCAqc3ltID0KKyAg
ICAgICAgbUNvbnRleHQtPnN5bWJvbFRhYmxlLmZpbmQobm9kZS0+Z2V0U3ltYm9sKCksIG1Db250
ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkpOwogICAgIGlmIChzeW0tPmlzVmFyaWFibGUoKSkKICAg
ICB7CiAgICAgICAgIC8vIEVTU0wgMS4wMCBzZWN0aW9uIDQuMyAob3IgRVNTTCAzLjAwIHNlY3Rp
b24gNC4zKToKQEAgLTQwLDMzICs0NCwzNiBAQCB2b2lkIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6
ZXJUcmF2ZXJzZXI6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKm5vZGUpCiAgICAgICAgIGNv
bnN0IFRWYXJpYWJsZSAqdmFyID0gc3RhdGljX2Nhc3Q8Y29uc3QgVFZhcmlhYmxlICo+KHN5bSk7
CiAgICAgICAgIHN3aXRjaCAodmFyLT5nZXRUeXBlKCkuZ2V0UXVhbGlmaWVyKCkpCiAgICAgICAg
IHsKLSAgICAgICAgICBjYXNlIEV2cUNvbnN0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgY2FzZSBFdnFHbG9iYWw6Ci0gICAgICAgICAgY2FzZSBFdnFUZW1wb3Jhcnk6Ci0gICAgICAg
ICAgY2FzZSBFdnFVbmlmb3JtOgotICAgICAgICAgICAgLy8gV2UgYWxsb3cgdGhlc2UgY2FzZXMg
dG8gYmUgY29tcGF0aWJsZSB3aXRoIGxlZ2FjeSBFU1NMIDEuMDAgY29udGVudC4KLSAgICAgICAg
ICAgIC8vIEltcGxlbWVudCBzdHJpY3RlciBydWxlcyBmb3IgRVNTTCAzLjAwIHNpbmNlIHRoZXJl
J3Mgbm8gbGVnYWN5IGNvbnRlbnQgdG8gZGVhbCB3aXRoLgotICAgICAgICAgICAgaWYgKG1Db250
ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkgPj0gMzAwKQotICAgICAgICAgICAgeworICAgICAgICAg
ICAgY2FzZSBFdnFDb25zdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgRXZxR2xvYmFsOgorICAgICAgICAgICAgY2FzZSBFdnFUZW1wb3Jhcnk6CisgICAgICAgICAg
ICBjYXNlIEV2cVVuaWZvcm06CisgICAgICAgICAgICAgICAgLy8gV2UgYWxsb3cgdGhlc2UgY2Fz
ZXMgdG8gYmUgY29tcGF0aWJsZSB3aXRoIGxlZ2FjeSBFU1NMIDEuMDAgY29udGVudC4KKyAgICAg
ICAgICAgICAgICAvLyBJbXBsZW1lbnQgc3RyaWN0ZXIgcnVsZXMgZm9yIEVTU0wgMy4wMCBzaW5j
ZSB0aGVyZSdzIG5vIGxlZ2FjeSBjb250ZW50IHRvIGRlYWwKKyAgICAgICAgICAgICAgICAvLyB3
aXRoLgorICAgICAgICAgICAgICAgIGlmIChtQ29udGV4dC0+Z2V0U2hhZGVyVmVyc2lvbigpID49
IDMwMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1Jc1ZhbGlkID0g
ZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1Jc3N1ZVdhcm5pbmcgPSB0cnVlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAgbUlzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtSXNzdWVXYXJu
aW5nID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICBtSXNWYWxpZCA9IGZhbHNlOwogICAgICAgICB9CiAgICAg
fQogfQogCiBib29sIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXJUcmF2ZXJzZXI6OnZpc2l0QWdn
cmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQogewotICAgIC8vIERp
c2FsbG93IGNhbGxzIHRvIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMgYW5kIHRleHR1cmUgbG9va3Vw
IGZ1bmN0aW9ucyBpbiBnbG9iYWwgdmFyaWFibGUgaW5pdGlhbGl6ZXJzLgotICAgIC8vIFRoaXMg
aXMgZG9uZSBzaW1wbHkgYnkgZGlzYWJsaW5nIGFsbCBmdW5jdGlvbiBjYWxscyAtIGJ1aWx0LWlu
IG1hdGggZnVuY3Rpb25zIGRvbid0IHVzZSBFT3BGdW5jdGlvbkNhbGwuCi0gICAgaWYgKG5vZGUt
PmdldE9wKCkgPT0gRU9wRnVuY3Rpb25DYWxsKQorICAgIC8vIERpc2FsbG93IGNhbGxzIHRvIHVz
ZXItZGVmaW5lZCBmdW5jdGlvbnMgYW5kIHRleHR1cmUgbG9va3VwIGZ1bmN0aW9ucyBpbiBnbG9i
YWwgdmFyaWFibGUKKyAgICAvLyBpbml0aWFsaXplcnMuCisgICAgLy8gVGhpcyBpcyBkb25lIHNp
bXBseSBieSBkaXNhYmxpbmcgYWxsIGZ1bmN0aW9uIGNhbGxzIC0gYnVpbHQtaW4gbWF0aCBmdW5j
dGlvbnMgZG9uJ3QgdXNlCisgICAgLy8gdGhlIGZ1bmN0aW9uIGNhbGwgb3BzLgorICAgIGlmIChu
b2RlLT5pc0Z1bmN0aW9uQ2FsbCgpKQogICAgIHsKICAgICAgICAgbUlzVmFsaWQgPSBmYWxzZTsK
ICAgICB9CkBAIC05MiwxNiArOTksMTUgQEAgYm9vbCBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVy
VHJhdmVyc2VyOjp2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVW5hcnkgKm4KIH0KIAog
VmFsaWRhdGVHbG9iYWxJbml0aWFsaXplclRyYXZlcnNlcjo6VmFsaWRhdGVHbG9iYWxJbml0aWFs
aXplclRyYXZlcnNlcihjb25zdCBUUGFyc2VDb250ZXh0ICpjb250ZXh0KQotICAgIDogVEludGVy
bVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLAotICAgICAgbUNvbnRleHQoY29udGV4dCks
Ci0gICAgICBtSXNWYWxpZCh0cnVlKSwKLSAgICAgIG1Jc3N1ZVdhcm5pbmcoZmFsc2UpCisgICAg
OiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksIG1Db250ZXh0KGNvbnRleHQp
LCBtSXNWYWxpZCh0cnVlKSwgbUlzc3VlV2FybmluZyhmYWxzZSkKIHsKIH0KIAotfSAvLyBuYW1l
c3BhY2UKK30gIC8vIG5hbWVzcGFjZQogCi1ib29sIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIo
VEludGVybVR5cGVkICppbml0aWFsaXplciwgY29uc3QgVFBhcnNlQ29udGV4dCAqY29udGV4dCwg
Ym9vbCAqd2FybmluZykKK2Jvb2wgVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplcihUSW50ZXJtVHlw
ZWQgKmluaXRpYWxpemVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRQ
YXJzZUNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCAqd2FybmluZykKIHsKICAgICBWYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyVHJhdmVyc2VyIHZh
bGlkYXRlKGNvbnRleHQpOwogICAgIGluaXRpYWxpemVyLT50cmF2ZXJzZSgmdmFsaWRhdGUpOwpA
QCAtMTEwLDMgKzExNiw0IEBAIGJvb2wgVmFsaWRhdGVHbG9iYWxJbml0aWFsaXplcihUSW50ZXJt
VHlwZWQgKmluaXRpYWxpemVyLCBjb25zdCBUUGFyc2VDb250ZXh0ICpjCiAgICAgcmV0dXJuIHZh
bGlkYXRlLmlzVmFsaWQoKTsKIH0KIAorfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUds
b2JhbEluaXRpYWxpemVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
dHJhbnNsYXRvci9WYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmgKaW5kZXggYzNkMmE0N2ViYTIu
LjJlNzU3MDY2N2E0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUdsb2JhbEluaXRpYWxpemVyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVHbG9iYWxJ
bml0aWFsaXplci5oCkBAIC03LDEwICs3LDE3IEBACiAjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFU
T1JfVkFMSURBVEVHTE9CQUxJTklUSUFMSVpFUl9IXwogI2RlZmluZSBDT01QSUxFUl9UUkFOU0xB
VE9SX1ZBTElEQVRFR0xPQkFMSU5JVElBTElaRVJfSF8KIAorbmFtZXNwYWNlIHNoCit7CisKIGNs
YXNzIFRJbnRlcm1UeXBlZDsKIGNsYXNzIFRQYXJzZUNvbnRleHQ7CiAKIC8vIFJldHVybnMgdHJ1
ZSBpZiB0aGUgaW5pdGlhbGl6ZXIgaXMgdmFsaWQuCi1ib29sIFZhbGlkYXRlR2xvYmFsSW5pdGlh
bGl6ZXIoVEludGVybVR5cGVkICppbml0aWFsaXplciwgY29uc3QgVFBhcnNlQ29udGV4dCAqY29u
dGV4dCwgYm9vbCAqd2FybmluZyk7Citib29sIFZhbGlkYXRlR2xvYmFsSW5pdGlhbGl6ZXIoVElu
dGVybVR5cGVkICppbml0aWFsaXplciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUUGFyc2VDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgKndhcm5pbmcpOworCit9ICAvLyBuYW1lc3BhY2Ugc2gKIAotI2VuZGlmIC8vIENP
TVBJTEVSX1RSQU5TTEFUT1JfVkFMSURBVEVHTE9CQUxJTklUSUFMSVpFUl9IXworI2VuZGlmICAv
LyBDT01QSUxFUl9UUkFOU0xBVE9SX1ZBTElEQVRFR0xPQkFMSU5JVElBTElaRVJfSF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Zh
bGlkYXRlTGltaXRhdGlvbnMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVMaW1pdGF0aW9ucy5jcHAKaW5kZXggNWRjZmU2OWM1NjMu
LjNhMTc2MTRmYTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUxpbWl0YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUxpbWl0YXRpb25z
LmNwcApAQCAtNSwxNCArNSwyOCBAQAogLy8KIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0
b3IvVmFsaWRhdGVMaW1pdGF0aW9ucy5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3Iv
SW5mb1NpbmsuaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVQYXJz
ZUNvbnRleHQuaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5o
IgorCiAjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L0RpYWdub3N0aWNzLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9QYXJzZUNvbnRl
eHQuaCIKKworbmFtZXNwYWNlIHNoCit7CiAKIG5hbWVzcGFjZQogewogCitpbnQgR2V0TG9vcFN5
bWJvbElkKFRJbnRlcm1Mb29wICpsb29wKQoreworICAgIC8vIEhlcmUgd2UgYXNzdW1lIGFsbCB0
aGUgb3BlcmF0aW9ucyBhcmUgdmFsaWQsIGJlY2F1c2UgdGhlIGxvb3Agbm9kZSBpcworICAgIC8v
IGFscmVhZHkgdmFsaWRhdGVkIGJlZm9yZSB0aGlzIGNhbGwuCisgICAgVEludGVybVNlcXVlbmNl
ICpkZWNsU2VxID0gbG9vcC0+Z2V0SW5pdCgpLT5nZXRBc0RlY2xhcmF0aW9uTm9kZSgpLT5nZXRT
ZXF1ZW5jZSgpOworICAgIFRJbnRlcm1CaW5hcnkgKmRlY2xJbml0ICA9ICgqZGVjbFNlcSlbMF0t
PmdldEFzQmluYXJ5Tm9kZSgpOworICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCAgICA9IGRlY2xJ
bml0LT5nZXRMZWZ0KCktPmdldEFzU3ltYm9sTm9kZSgpOworCisgICAgcmV0dXJuIHN5bWJvbC0+
Z2V0SWQoKTsKK30KKwogLy8gVHJhdmVyc2VzIGEgbm9kZSB0byBjaGVjayBpZiBpdCByZXByZXNl
bnRzIGEgY29uc3RhbnQgaW5kZXggZXhwcmVzc2lvbi4KIC8vIERlZmluaXRpb246CiAvLyBjb25z
dGFudC1pbmRleC1leHByZXNzaW9ucyBhcmUgYSBzdXBlcnNldCBvZiBjb25zdGFudC1leHByZXNz
aW9ucy4KQEAgLTI1LDEwICszOSw4IEBAIG5hbWVzcGFjZQogY2xhc3MgVmFsaWRhdGVDb25zdElu
ZGV4RXhwciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiB7CiAgIHB1YmxpYzoKLSAgICBWYWxp
ZGF0ZUNvbnN0SW5kZXhFeHByKFRMb29wU3RhY2smIHN0YWNrKQotICAgICAgICA6IFRJbnRlcm1U
cmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwKLSAgICAgICAgICBtVmFsaWQodHJ1ZSksCi0g
ICAgICAgICAgbUxvb3BTdGFjayhzdGFjaykKKyAgICBWYWxpZGF0ZUNvbnN0SW5kZXhFeHByKGNv
bnN0IHN0ZDo6dmVjdG9yPGludD4gJmxvb3BTeW1ib2xzKQorICAgICAgICA6IFRJbnRlcm1UcmF2
ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwgbVZhbGlkKHRydWUpLCBtTG9vcFN5bWJvbElkcyhs
b29wU3ltYm9scykKICAgICB7CiAgICAgfQogCkBAIC00MSw5MyArNTMsOTMgQEAgY2xhc3MgVmFs
aWRhdGVDb25zdEluZGV4RXhwciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgICAgIC8v
IGNvbnN0YW50IGluZGV4IGV4cHJlc3Npb24uCiAgICAgICAgIGlmIChtVmFsaWQpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIG1WYWxpZCA9IChzeW1ib2wtPmdldFF1YWxpZmllcigpID09IEV2cUNv
bnN0KSB8fAotICAgICAgICAgICAgICAgICAgICAgKG1Mb29wU3RhY2suZmluZExvb3Aoc3ltYm9s
KSk7CisgICAgICAgICAgICBib29sIGlzTG9vcFN5bWJvbCA9IHN0ZDo6ZmluZChtTG9vcFN5bWJv
bElkcy5iZWdpbigpLCBtTG9vcFN5bWJvbElkcy5lbmQoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbC0+Z2V0SWQoKSkgIT0gbUxvb3BTeW1ib2xJZHMu
ZW5kKCk7CisgICAgICAgICAgICBtVmFsaWQgPSAoc3ltYm9sLT5nZXRRdWFsaWZpZXIoKSA9PSBF
dnFDb25zdCkgfHwgaXNMb29wU3ltYm9sOwogICAgICAgICB9CiAgICAgfQogCiAgIHByaXZhdGU6
CiAgICAgYm9vbCBtVmFsaWQ7Ci0gICAgVExvb3BTdGFjayYgbUxvb3BTdGFjazsKKyAgICBjb25z
dCBzdGQ6OnZlY3RvcjxpbnQ+IG1Mb29wU3ltYm9sSWRzOwogfTsKIAotfSAgLy8gbmFtZXNwYWNl
IGFub255bW91cworLy8gVHJhdmVyc2VzIGludGVybWVkaWF0ZSB0cmVlIHRvIGVuc3VyZSB0aGF0
IHRoZSBzaGFkZXIgZG9lcyBub3QgZXhjZWVkIHRoZQorLy8gbWluaW11bSBmdW5jdGlvbmFsaXR5
IG1hbmRhdGVkIGluIEdMU0wgMS4wIHNwZWMsIEFwcGVuZGl4IEEuCitjbGFzcyBWYWxpZGF0ZUxp
bWl0YXRpb25zVHJhdmVyc2VyIDogcHVibGljIFRMVmFsdWVUcmFja2luZ1RyYXZlcnNlcgorewor
ICBwdWJsaWM6CisgICAgVmFsaWRhdGVMaW1pdGF0aW9uc1RyYXZlcnNlcihzaDo6R0xlbnVtIHNo
YWRlclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9s
VGFibGUgJnN5bWJvbFRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHNoYWRlclZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURGlhZ25v
c3RpY3MgKmRpYWdub3N0aWNzKTsKKworICAgIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJv
bCAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEJpbmFyeShWaXNpdCwgVEludGVybUJp
bmFyeSAqKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0TG9vcChWaXNpdCwgVEludGVybUxvb3Ag
Kikgb3ZlcnJpZGU7CiAKLVZhbGlkYXRlTGltaXRhdGlvbnM6OlZhbGlkYXRlTGltaXRhdGlvbnMo
c2g6OkdMZW51bSBzaGFkZXJUeXBlLCBUSW5mb1NpbmtCYXNlICpzaW5rKQotICAgIDogVEludGVy
bVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLAorICBwcml2YXRlOgorICAgIHZvaWQgZXJy
b3IoVFNvdXJjZUxvYyBsb2MsIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29uc3QgY2hhciAqdG9rZW4p
OworCisgICAgYm9vbCB3aXRoaW5Mb29wQm9keSgpIGNvbnN0OworICAgIGJvb2wgaXNMb29wSW5k
ZXgoVEludGVybVN5bWJvbCAqc3ltYm9sKTsKKyAgICBib29sIHZhbGlkYXRlTG9vcFR5cGUoVElu
dGVybUxvb3AgKm5vZGUpOworCisgICAgYm9vbCB2YWxpZGF0ZUZvckxvb3BIZWFkZXIoVEludGVy
bUxvb3AgKm5vZGUpOworICAgIC8vIElmIHZhbGlkLCByZXR1cm4gdGhlIGluZGV4IHN5bWJvbCBp
ZDsgT3RoZXJ3aXNlLCByZXR1cm4gLTEuCisgICAgaW50IHZhbGlkYXRlRm9yTG9vcEluaXQoVElu
dGVybUxvb3AgKm5vZGUpOworICAgIGJvb2wgdmFsaWRhdGVGb3JMb29wQ29uZChUSW50ZXJtTG9v
cCAqbm9kZSwgaW50IGluZGV4U3ltYm9sSWQpOworICAgIGJvb2wgdmFsaWRhdGVGb3JMb29wRXhw
cihUSW50ZXJtTG9vcCAqbm9kZSwgaW50IGluZGV4U3ltYm9sSWQpOworCisgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIGluZGV4aW5nIGRvZXMgbm90IGV4Y2VlZCB0aGUgbWluaW11bSBmdW5jdGlvbmFs
aXR5CisgICAgLy8gbWFuZGF0ZWQgaW4gR0xTTCAxLjAgc3BlYywgQXBwZW5kaXggQSwgU2VjdGlv
biA1LgorICAgIGJvb2wgaXNDb25zdEV4cHIoVEludGVybU5vZGUgKm5vZGUpOworICAgIGJvb2wg
aXNDb25zdEluZGV4RXhwcihUSW50ZXJtTm9kZSAqbm9kZSk7CisgICAgYm9vbCB2YWxpZGF0ZUlu
ZGV4aW5nKFRJbnRlcm1CaW5hcnkgKm5vZGUpOworCisgICAgc2g6OkdMZW51bSBtU2hhZGVyVHlw
ZTsKKyAgICBURGlhZ25vc3RpY3MgKm1EaWFnbm9zdGljczsKKyAgICBzdGQ6OnZlY3RvcjxpbnQ+
IG1Mb29wU3ltYm9sSWRzOworfTsKKworVmFsaWRhdGVMaW1pdGF0aW9uc1RyYXZlcnNlcjo6VmFs
aWRhdGVMaW1pdGF0aW9uc1RyYXZlcnNlcihzaDo6R0xlbnVtIHNoYWRlclR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBURGlh
Z25vc3RpY3MgKmRpYWdub3N0aWNzKQorICAgIDogVExWYWx1ZVRyYWNraW5nVHJhdmVyc2VyKHRy
dWUsIGZhbHNlLCBmYWxzZSwgc3ltYm9sVGFibGUsIHNoYWRlclZlcnNpb24pLAogICAgICAgbVNo
YWRlclR5cGUoc2hhZGVyVHlwZSksCi0gICAgICBtU2luayhzaW5rKSwKLSAgICAgIG1OdW1FcnJv
cnMoMCksCi0gICAgICBtVmFsaWRhdGVJbmRleGluZyh0cnVlKSwKLSAgICAgIG1WYWxpZGF0ZUlu
bmVyTG9vcHModHJ1ZSkKKyAgICAgIG1EaWFnbm9zdGljcyhkaWFnbm9zdGljcykKIHsKKyAgICBB
U1NFUlQoZGlhZ25vc3RpY3MpOwogfQogCi0vLyBzdGF0aWMKLWJvb2wgVmFsaWRhdGVMaW1pdGF0
aW9uczo6SXNMaW1pdGVkRm9yTG9vcChUSW50ZXJtTG9vcCAqbG9vcCkKK3ZvaWQgVmFsaWRhdGVM
aW1pdGF0aW9uc1RyYXZlcnNlcjo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkKIHsK
LSAgICAvLyBUaGUgc2hhZGVyIHR5cGUgZG9lc24ndCBtYXR0ZXIgaW4gdGhpcyBjYXNlLgotICAg
IFZhbGlkYXRlTGltaXRhdGlvbnMgdmFsaWRhdGUoR0xfRlJBR01FTlRfU0hBREVSLCBudWxscHRy
KTsKLSAgICB2YWxpZGF0ZS5tVmFsaWRhdGVJbmRleGluZyAgID0gZmFsc2U7Ci0gICAgdmFsaWRh
dGUubVZhbGlkYXRlSW5uZXJMb29wcyA9IGZhbHNlOwotICAgIGlmICghdmFsaWRhdGUudmFsaWRh
dGVMb29wVHlwZShsb29wKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghdmFsaWRh
dGUudmFsaWRhdGVGb3JMb29wSGVhZGVyKGxvb3ApKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgVEludGVybU5vZGUgKmJvZHkgPSBsb29wLT5nZXRCb2R5KCk7Ci0gICAgaWYgKGJvZHkgIT0g
bnVsbHB0cikKKyAgICBpZiAoaXNMb29wSW5kZXgobm9kZSkgJiYgaXNMVmFsdWVSZXF1aXJlZEhl
cmUoKSkKICAgICB7Ci0gICAgICAgIHZhbGlkYXRlLm1Mb29wU3RhY2sucHVzaChsb29wKTsKLSAg
ICAgICAgYm9keS0+dHJhdmVyc2UoJnZhbGlkYXRlKTsKLSAgICAgICAgdmFsaWRhdGUubUxvb3BT
dGFjay5wb3AoKTsKKyAgICAgICAgZXJyb3Iobm9kZS0+Z2V0TGluZSgpLAorICAgICAgICAgICAg
ICAiTG9vcCBpbmRleCBjYW5ub3QgYmUgc3RhdGljYWxseSBhc3NpZ25lZCB0byB3aXRoaW4gdGhl
IGJvZHkgb2YgdGhlIGxvb3AiLAorICAgICAgICAgICAgICBub2RlLT5nZXRTeW1ib2woKS5jX3N0
cigpKTsKICAgICB9Ci0gICAgcmV0dXJuICh2YWxpZGF0ZS5tTnVtRXJyb3JzID09IDApOwogfQog
Ci1ib29sIFZhbGlkYXRlTGltaXRhdGlvbnM6OnZpc2l0QmluYXJ5KFZpc2l0LCBUSW50ZXJtQmlu
YXJ5ICpub2RlKQorYm9vbCBWYWxpZGF0ZUxpbWl0YXRpb25zVHJhdmVyc2VyOjp2aXNpdEJpbmFy
eShWaXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkKIHsKLSAgICAvLyBDaGVjayBpZiBsb29wIGlu
ZGV4IGlzIG1vZGlmaWVkIGluIHRoZSBsb29wIGJvZHkuCi0gICAgdmFsaWRhdGVPcGVyYXRpb24o
bm9kZSwgbm9kZS0+Z2V0TGVmdCgpKTsKLQogICAgIC8vIENoZWNrIGluZGV4aW5nLgogICAgIHN3
aXRjaCAobm9kZS0+Z2V0T3AoKSkKICAgICB7Ci0gICAgICBjYXNlIEVPcEluZGV4RGlyZWN0Ogot
ICAgICAgY2FzZSBFT3BJbmRleEluZGlyZWN0OgotICAgICAgICAgIGlmIChtVmFsaWRhdGVJbmRl
eGluZykKLSAgICAgICAgICAgICAgdmFsaWRhdGVJbmRleGluZyhub2RlKTsKLSAgICAgICAgICBi
cmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVy
biB0cnVlOwotfQotCi1ib29sIFZhbGlkYXRlTGltaXRhdGlvbnM6OnZpc2l0VW5hcnkoVmlzaXQs
IFRJbnRlcm1VbmFyeSAqbm9kZSkKLXsKLSAgICAvLyBDaGVjayBpZiBsb29wIGluZGV4IGlzIG1v
ZGlmaWVkIGluIHRoZSBsb29wIGJvZHkuCi0gICAgdmFsaWRhdGVPcGVyYXRpb24obm9kZSwgbm9k
ZS0+Z2V0T3BlcmFuZCgpKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFZhbGlkYXRl
TGltaXRhdGlvbnM6OnZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2Rl
KQotewotICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkgewotICAgICAgY2FzZSBFT3BGdW5jdGlv
bkNhbGw6Ci0gICAgICAgIHZhbGlkYXRlRnVuY3Rpb25DYWxsKG5vZGUpOwotICAgICAgICBicmVh
azsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEluZGV4
RGlyZWN0OgorICAgICAgICBjYXNlIEVPcEluZGV4SW5kaXJlY3Q6CisgICAgICAgICAgICB2YWxp
ZGF0ZUluZGV4aW5nKG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
VmFsaWRhdGVMaW1pdGF0aW9uczo6dmlzaXRMb29wKFZpc2l0LCBUSW50ZXJtTG9vcCAqbm9kZSkK
K2Jvb2wgVmFsaWRhdGVMaW1pdGF0aW9uc1RyYXZlcnNlcjo6dmlzaXRMb29wKFZpc2l0LCBUSW50
ZXJtTG9vcCAqbm9kZSkKIHsKLSAgICBpZiAoIW1WYWxpZGF0ZUlubmVyTG9vcHMpCi0gICAgICAg
IHJldHVybiB0cnVlOwotCiAgICAgaWYgKCF2YWxpZGF0ZUxvb3BUeXBlKG5vZGUpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTEzNyw1MSArMTQ5LDQzIEBAIGJvb2wgVmFsaWRhdGVMaW1p
dGF0aW9uczo6dmlzaXRMb29wKFZpc2l0LCBUSW50ZXJtTG9vcCAqbm9kZSkKICAgICBUSW50ZXJt
Tm9kZSAqYm9keSA9IG5vZGUtPmdldEJvZHkoKTsKICAgICBpZiAoYm9keSAhPSBOVUxMKQogICAg
IHsKLSAgICAgICAgbUxvb3BTdGFjay5wdXNoKG5vZGUpOworICAgICAgICBtTG9vcFN5bWJvbElk
cy5wdXNoX2JhY2soR2V0TG9vcFN5bWJvbElkKG5vZGUpKTsKICAgICAgICAgYm9keS0+dHJhdmVy
c2UodGhpcyk7Ci0gICAgICAgIG1Mb29wU3RhY2sucG9wKCk7CisgICAgICAgIG1Mb29wU3ltYm9s
SWRzLnBvcF9iYWNrKCk7CiAgICAgfQogCiAgICAgLy8gVGhlIGxvb3AgaXMgZnVsbHkgcHJvY2Vz
c2VkIC0gbm8gbmVlZCB0byB2aXNpdCBjaGlsZHJlbi4KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXZvaWQgVmFsaWRhdGVMaW1pdGF0aW9uczo6ZXJyb3IoVFNvdXJjZUxvYyBsb2MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbiwgY29uc3QgY2hhciAq
dG9rZW4pCit2b2lkIFZhbGlkYXRlTGltaXRhdGlvbnNUcmF2ZXJzZXI6OmVycm9yKFRTb3VyY2VM
b2MgbG9jLCBjb25zdCBjaGFyICpyZWFzb24sIGNvbnN0IGNoYXIgKnRva2VuKQogewotICAgIGlm
IChtU2luaykKLSAgICB7Ci0gICAgICAgIG1TaW5rLT5wcmVmaXgoRVByZWZpeEVycm9yKTsKLSAg
ICAgICAgbVNpbmstPmxvY2F0aW9uKGxvYyk7Ci0gICAgICAgICgqbVNpbmspIDw8ICInIiA8PCB0
b2tlbiA8PCAiJyA6ICIgPDwgcmVhc29uIDw8ICJcbiI7Ci0gICAgfQotICAgICsrbU51bUVycm9y
czsKKyAgICBtRGlhZ25vc3RpY3MtPmVycm9yKGxvYywgcmVhc29uLCB0b2tlbik7CiB9CiAKLWJv
b2wgVmFsaWRhdGVMaW1pdGF0aW9uczo6d2l0aGluTG9vcEJvZHkoKSBjb25zdAorYm9vbCBWYWxp
ZGF0ZUxpbWl0YXRpb25zVHJhdmVyc2VyOjp3aXRoaW5Mb29wQm9keSgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuICFtTG9vcFN0YWNrLmVtcHR5KCk7CisgICAgcmV0dXJuICFtTG9vcFN5bWJvbElkcy5l
bXB0eSgpOwogfQogCi1ib29sIFZhbGlkYXRlTGltaXRhdGlvbnM6OmlzTG9vcEluZGV4KFRJbnRl
cm1TeW1ib2wgKnN5bWJvbCkKK2Jvb2wgVmFsaWRhdGVMaW1pdGF0aW9uc1RyYXZlcnNlcjo6aXNM
b29wSW5kZXgoVEludGVybVN5bWJvbCAqc3ltYm9sKQogewotICAgIHJldHVybiBtTG9vcFN0YWNr
LmZpbmRMb29wKHN5bWJvbCkgIT0gTlVMTDsKKyAgICByZXR1cm4gc3RkOjpmaW5kKG1Mb29wU3lt
Ym9sSWRzLmJlZ2luKCksIG1Mb29wU3ltYm9sSWRzLmVuZCgpLCBzeW1ib2wtPmdldElkKCkpICE9
CisgICAgICAgICAgIG1Mb29wU3ltYm9sSWRzLmVuZCgpOwogfQogCi1ib29sIFZhbGlkYXRlTGlt
aXRhdGlvbnM6OnZhbGlkYXRlTG9vcFR5cGUoVEludGVybUxvb3AgKm5vZGUpCitib29sIFZhbGlk
YXRlTGltaXRhdGlvbnNUcmF2ZXJzZXI6OnZhbGlkYXRlTG9vcFR5cGUoVEludGVybUxvb3AgKm5v
ZGUpCiB7CiAgICAgVExvb3BUeXBlIHR5cGUgPSBub2RlLT5nZXRUeXBlKCk7CiAgICAgaWYgKHR5
cGUgPT0gRUxvb3BGb3IpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gUmVqZWN0IHdo
aWxlIGFuZCBkby13aGlsZSBsb29wcy4KLSAgICBlcnJvcihub2RlLT5nZXRMaW5lKCksCi0gICAg
ICAgICAgIlRoaXMgdHlwZSBvZiBsb29wIGlzIG5vdCBhbGxvd2VkIiwKLSAgICAgICAgICB0eXBl
ID09IEVMb29wV2hpbGUgPyAid2hpbGUiIDogImRvIik7CisgICAgZXJyb3Iobm9kZS0+Z2V0TGlu
ZSgpLCAiVGhpcyB0eXBlIG9mIGxvb3AgaXMgbm90IGFsbG93ZWQiLCB0eXBlID09IEVMb29wV2hp
bGUgPyAid2hpbGUiIDogImRvIik7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFZhbGlk
YXRlTGltaXRhdGlvbnM6OnZhbGlkYXRlRm9yTG9vcEhlYWRlcihUSW50ZXJtTG9vcCAqbm9kZSkK
K2Jvb2wgVmFsaWRhdGVMaW1pdGF0aW9uc1RyYXZlcnNlcjo6dmFsaWRhdGVGb3JMb29wSGVhZGVy
KFRJbnRlcm1Mb29wICpub2RlKQogewogICAgIEFTU0VSVChub2RlLT5nZXRUeXBlKCkgPT0gRUxv
b3BGb3IpOwogCkBAIC0yMDAsNyArMjA0LDcgQEAgYm9vbCBWYWxpZGF0ZUxpbWl0YXRpb25zOjp2
YWxpZGF0ZUZvckxvb3BIZWFkZXIoVEludGVybUxvb3AgKm5vZGUpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWludCBWYWxpZGF0ZUxpbWl0YXRpb25zOjp2YWxpZGF0ZUZvckxvb3BJbml0KFRJbnRl
cm1Mb29wICpub2RlKQoraW50IFZhbGlkYXRlTGltaXRhdGlvbnNUcmF2ZXJzZXI6OnZhbGlkYXRl
Rm9yTG9vcEluaXQoVEludGVybUxvb3AgKm5vZGUpCiB7CiAgICAgVEludGVybU5vZGUgKmluaXQg
PSBub2RlLT5nZXRJbml0KCk7CiAgICAgaWYgKGluaXQgPT0gTlVMTCkKQEAgLTIxMyw4ICsyMTcs
OCBAQCBpbnQgVmFsaWRhdGVMaW1pdGF0aW9uczo6dmFsaWRhdGVGb3JMb29wSW5pdChUSW50ZXJt
TG9vcCAqbm9kZSkKICAgICAvLyBpbml0LWRlY2xhcmF0aW9uIGhhcyB0aGUgZm9ybToKICAgICAv
LyAgICAgdHlwZS1zcGVjaWZpZXIgaWRlbnRpZmllciA9IGNvbnN0YW50LWV4cHJlc3Npb24KICAg
ICAvLwotICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmRlY2wgPSBpbml0LT5nZXRBc0FnZ3JlZ2F0ZSgp
OwotICAgIGlmICgoZGVjbCA9PSBOVUxMKSB8fCAoZGVjbC0+Z2V0T3AoKSAhPSBFT3BEZWNsYXJh
dGlvbikpCisgICAgVEludGVybURlY2xhcmF0aW9uICpkZWNsID0gaW5pdC0+Z2V0QXNEZWNsYXJh
dGlvbk5vZGUoKTsKKyAgICBpZiAoZGVjbCA9PSBudWxscHRyKQogICAgIHsKICAgICAgICAgZXJy
b3IoaW5pdC0+Z2V0TGluZSgpLCAiSW52YWxpZCBpbml0IGRlY2xhcmF0aW9uIiwgImZvciIpOwog
ICAgICAgICByZXR1cm4gLTE7CkBAIC0yNDAsMTYgKzI0NCwxNSBAQCBpbnQgVmFsaWRhdGVMaW1p
dGF0aW9uczo6dmFsaWRhdGVGb3JMb29wSW5pdChUSW50ZXJtTG9vcCAqbm9kZSkKICAgICB9CiAg
ICAgLy8gVGhlIGxvb3AgaW5kZXggaGFzIHR5cGUgaW50IG9yIGZsb2F0LgogICAgIFRCYXNpY1R5
cGUgdHlwZSA9IHN5bWJvbC0+Z2V0QmFzaWNUeXBlKCk7Ci0gICAgaWYgKCh0eXBlICE9IEVidElu
dCkgJiYgKHR5cGUgIT0gRWJ0VUludCkgJiYgKHR5cGUgIT0gRWJ0RmxvYXQpKSB7Ci0gICAgICAg
IGVycm9yKHN5bWJvbC0+Z2V0TGluZSgpLAotICAgICAgICAgICAgICAiSW52YWxpZCB0eXBlIGZv
ciBsb29wIGluZGV4IiwgZ2V0QmFzaWNTdHJpbmcodHlwZSkpOworICAgIGlmICgodHlwZSAhPSBF
YnRJbnQpICYmICh0eXBlICE9IEVidFVJbnQpICYmICh0eXBlICE9IEVidEZsb2F0KSkKKyAgICB7
CisgICAgICAgIGVycm9yKHN5bWJvbC0+Z2V0TGluZSgpLCAiSW52YWxpZCB0eXBlIGZvciBsb29w
IGluZGV4IiwgZ2V0QmFzaWNTdHJpbmcodHlwZSkpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAg
fQogICAgIC8vIFRoZSBsb29wIGluZGV4IGlzIGluaXRpYWxpemVkIHdpdGggY29uc3RhbnQgZXhw
cmVzc2lvbi4KICAgICBpZiAoIWlzQ29uc3RFeHByKGRlY2xJbml0LT5nZXRSaWdodCgpKSkKICAg
ICB7Ci0gICAgICAgIGVycm9yKGRlY2xJbml0LT5nZXRMaW5lKCksCi0gICAgICAgICAgICAgICJM
b29wIGluZGV4IGNhbm5vdCBiZSBpbml0aWFsaXplZCB3aXRoIG5vbi1jb25zdGFudCBleHByZXNz
aW9uIiwKKyAgICAgICAgZXJyb3IoZGVjbEluaXQtPmdldExpbmUoKSwgIkxvb3AgaW5kZXggY2Fu
bm90IGJlIGluaXRpYWxpemVkIHdpdGggbm9uLWNvbnN0YW50IGV4cHJlc3Npb24iLAogICAgICAg
ICAgICAgICBzeW1ib2wtPmdldFN5bWJvbCgpLmNfc3RyKCkpOwogICAgICAgICByZXR1cm4gLTE7
CiAgICAgfQpAQCAtMjU3LDggKzI2MCw3IEBAIGludCBWYWxpZGF0ZUxpbWl0YXRpb25zOjp2YWxp
ZGF0ZUZvckxvb3BJbml0KFRJbnRlcm1Mb29wICpub2RlKQogICAgIHJldHVybiBzeW1ib2wtPmdl
dElkKCk7CiB9CiAKLWJvb2wgVmFsaWRhdGVMaW1pdGF0aW9uczo6dmFsaWRhdGVGb3JMb29wQ29u
ZChUSW50ZXJtTG9vcCAqbm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgaW5kZXhTeW1ib2xJZCkKK2Jvb2wgVmFsaWRhdGVMaW1pdGF0aW9uc1Ry
YXZlcnNlcjo6dmFsaWRhdGVGb3JMb29wQ29uZChUSW50ZXJtTG9vcCAqbm9kZSwgaW50IGluZGV4
U3ltYm9sSWQpCiB7CiAgICAgVEludGVybU5vZGUgKmNvbmQgPSBub2RlLT5nZXRDb25kaXRpb24o
KTsKICAgICBpZiAoY29uZCA9PSBOVUxMKQpAQCAtMjg1LDMxICsyODcsMjggQEAgYm9vbCBWYWxp
ZGF0ZUxpbWl0YXRpb25zOjp2YWxpZGF0ZUZvckxvb3BDb25kKFRJbnRlcm1Mb29wICpub2RlLAog
ICAgIH0KICAgICBpZiAoc3ltYm9sLT5nZXRJZCgpICE9IGluZGV4U3ltYm9sSWQpCiAgICAgewot
ICAgICAgICBlcnJvcihzeW1ib2wtPmdldExpbmUoKSwKLSAgICAgICAgICAgICAgIkV4cGVjdGVk
IGxvb3AgaW5kZXgiLCBzeW1ib2wtPmdldFN5bWJvbCgpLmNfc3RyKCkpOworICAgICAgICBlcnJv
cihzeW1ib2wtPmdldExpbmUoKSwgIkV4cGVjdGVkIGxvb3AgaW5kZXgiLCBzeW1ib2wtPmdldFN5
bWJvbCgpLmNfc3RyKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIC8vIFJl
bGF0aW9uYWwgb3BlcmF0b3IgaXMgb25lIG9mOiA+ID49IDwgPD0gPT0gb3IgIT0uCiAgICAgc3dp
dGNoIChiaW5PcC0+Z2V0T3AoKSkKICAgICB7Ci0gICAgICBjYXNlIEVPcEVxdWFsOgotICAgICAg
Y2FzZSBFT3BOb3RFcXVhbDoKLSAgICAgIGNhc2UgRU9wTGVzc1RoYW46Ci0gICAgICBjYXNlIEVP
cEdyZWF0ZXJUaGFuOgotICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFsOgotICAgICAgY2FzZSBF
T3BHcmVhdGVyVGhhbkVxdWFsOgotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIGVycm9yKGJpbk9wLT5nZXRMaW5lKCksCi0gICAgICAgICAgICAgICJJbnZhbGlkIHJlbGF0
aW9uYWwgb3BlcmF0b3IiLAotICAgICAgICAgICAgICBHZXRPcGVyYXRvclN0cmluZyhiaW5PcC0+
Z2V0T3AoKSkpOwotICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFT3BFcXVhbDoKKyAgICAg
ICAgY2FzZSBFT3BOb3RFcXVhbDoKKyAgICAgICAgY2FzZSBFT3BMZXNzVGhhbjoKKyAgICAgICAg
Y2FzZSBFT3BHcmVhdGVyVGhhbjoKKyAgICAgICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFsOgorICAg
ICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWw6CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGVycm9yKGJpbk9wLT5nZXRMaW5lKCksICJJbnZhbGlk
IHJlbGF0aW9uYWwgb3BlcmF0b3IiLAorICAgICAgICAgICAgICAgICAgR2V0T3BlcmF0b3JTdHJp
bmcoYmluT3AtPmdldE9wKCkpKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAvLyBM
b29wIGluZGV4IG11c3QgYmUgY29tcGFyZWQgd2l0aCBhIGNvbnN0YW50LgogICAgIGlmICghaXND
b25zdEV4cHIoYmluT3AtPmdldFJpZ2h0KCkpKQogICAgIHsKLSAgICAgICAgZXJyb3IoYmluT3At
PmdldExpbmUoKSwKLSAgICAgICAgICAgICAgIkxvb3AgaW5kZXggY2Fubm90IGJlIGNvbXBhcmVk
IHdpdGggbm9uLWNvbnN0YW50IGV4cHJlc3Npb24iLAorICAgICAgICBlcnJvcihiaW5PcC0+Z2V0
TGluZSgpLCAiTG9vcCBpbmRleCBjYW5ub3QgYmUgY29tcGFyZWQgd2l0aCBub24tY29uc3RhbnQg
ZXhwcmVzc2lvbiIsCiAgICAgICAgICAgICAgIHN5bWJvbC0+Z2V0U3ltYm9sKCkuY19zdHIoKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0zMTcsOCArMzE2LDcgQEAgYm9vbCBW
YWxpZGF0ZUxpbWl0YXRpb25zOjp2YWxpZGF0ZUZvckxvb3BDb25kKFRJbnRlcm1Mb29wICpub2Rl
LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlTGltaXRhdGlvbnM6OnZhbGlk
YXRlRm9yTG9vcEV4cHIoVEludGVybUxvb3AgKm5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4U3ltYm9sSWQpCitib29sIFZhbGlkYXRl
TGltaXRhdGlvbnNUcmF2ZXJzZXI6OnZhbGlkYXRlRm9yTG9vcEV4cHIoVEludGVybUxvb3AgKm5v
ZGUsIGludCBpbmRleFN5bWJvbElkKQogewogICAgIFRJbnRlcm1Ob2RlICpleHByID0gbm9kZS0+
Z2V0RXhwcmVzc2lvbigpOwogICAgIGlmIChleHByID09IE5VTEwpCkBAIC0zMzYsMTkgKzMzNCwx
OSBAQCBib29sIFZhbGlkYXRlTGltaXRhdGlvbnM6OnZhbGlkYXRlRm9yTG9vcEV4cHIoVEludGVy
bUxvb3AgKm5vZGUsCiAgICAgLy8gICAgIC0tbG9vcF9pbmRleAogICAgIC8vIFRoZSBsYXN0IHR3
byBmb3JtcyBhcmUgbm90IHNwZWNpZmllZCBpbiB0aGUgc3BlYywgYnV0IEkgYW0gYXNzdW1pbmcK
ICAgICAvLyBpdHMgYW4gb3ZlcnNpZ2h0LgotICAgIFRJbnRlcm1VbmFyeSAqdW5PcCA9IGV4cHIt
PmdldEFzVW5hcnlOb2RlKCk7CisgICAgVEludGVybVVuYXJ5ICp1bk9wICAgPSBleHByLT5nZXRB
c1VuYXJ5Tm9kZSgpOwogICAgIFRJbnRlcm1CaW5hcnkgKmJpbk9wID0gdW5PcCA/IE5VTEwgOiBl
eHByLT5nZXRBc0JpbmFyeU5vZGUoKTsKIAotICAgIFRPcGVyYXRvciBvcCA9IEVPcE51bGw7Cisg
ICAgVE9wZXJhdG9yIG9wICAgICAgICAgID0gRU9wTnVsbDsKICAgICBUSW50ZXJtU3ltYm9sICpz
eW1ib2wgPSBOVUxMOwogICAgIGlmICh1bk9wICE9IE5VTEwpCiAgICAgewotICAgICAgICBvcCA9
IHVuT3AtPmdldE9wKCk7CisgICAgICAgIG9wICAgICA9IHVuT3AtPmdldE9wKCk7CiAgICAgICAg
IHN5bWJvbCA9IHVuT3AtPmdldE9wZXJhbmQoKS0+Z2V0QXNTeW1ib2xOb2RlKCk7CiAgICAgfQog
ICAgIGVsc2UgaWYgKGJpbk9wICE9IE5VTEwpCiAgICAgewotICAgICAgICBvcCA9IGJpbk9wLT5n
ZXRPcCgpOworICAgICAgICBvcCAgICAgPSBiaW5PcC0+Z2V0T3AoKTsKICAgICAgICAgc3ltYm9s
ID0gYmluT3AtPmdldExlZnQoKS0+Z2V0QXNTeW1ib2xOb2RlKCk7CiAgICAgfQogCkBAIC0zNjAs
MjcgKzM1OCwyNiBAQCBib29sIFZhbGlkYXRlTGltaXRhdGlvbnM6OnZhbGlkYXRlRm9yTG9vcEV4
cHIoVEludGVybUxvb3AgKm5vZGUsCiAgICAgfQogICAgIGlmIChzeW1ib2wtPmdldElkKCkgIT0g
aW5kZXhTeW1ib2xJZCkKICAgICB7Ci0gICAgICAgIGVycm9yKHN5bWJvbC0+Z2V0TGluZSgpLAot
ICAgICAgICAgICAgICAiRXhwZWN0ZWQgbG9vcCBpbmRleCIsIHN5bWJvbC0+Z2V0U3ltYm9sKCku
Y19zdHIoKSk7CisgICAgICAgIGVycm9yKHN5bWJvbC0+Z2V0TGluZSgpLCAiRXhwZWN0ZWQgbG9v
cCBpbmRleCIsIHN5bWJvbC0+Z2V0U3ltYm9sKCkuY19zdHIoKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKICAgICAvLyBUaGUgb3BlcmF0b3IgaXMgb25lIG9mOiArKyAtLSArPSAt
PS4KICAgICBzd2l0Y2ggKG9wKQogICAgIHsKLSAgICAgIGNhc2UgRU9wUG9zdEluY3JlbWVudDoK
LSAgICAgIGNhc2UgRU9wUG9zdERlY3JlbWVudDoKLSAgICAgIGNhc2UgRU9wUHJlSW5jcmVtZW50
OgotICAgICAgY2FzZSBFT3BQcmVEZWNyZW1lbnQ6Ci0gICAgICAgIEFTU0VSVCgodW5PcCAhPSBO
VUxMKSAmJiAoYmluT3AgPT0gTlVMTCkpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
QWRkQXNzaWduOgotICAgICAgY2FzZSBFT3BTdWJBc3NpZ246Ci0gICAgICAgIEFTU0VSVCgodW5P
cCA9PSBOVUxMKSAmJiAoYmluT3AgIT0gTlVMTCkpOwotICAgICAgICBicmVhazsKLSAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIGVycm9yKGV4cHItPmdldExpbmUoKSwgIkludmFsaWQgb3BlcmF0b3Ii
LCBHZXRPcGVyYXRvclN0cmluZyhvcCkpOwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IGNhc2UgRU9wUG9zdEluY3JlbWVudDoKKyAgICAgICAgY2FzZSBFT3BQb3N0RGVjcmVtZW50Ogor
ICAgICAgICBjYXNlIEVPcFByZUluY3JlbWVudDoKKyAgICAgICAgY2FzZSBFT3BQcmVEZWNyZW1l
bnQ6CisgICAgICAgICAgICBBU1NFUlQoKHVuT3AgIT0gTlVMTCkgJiYgKGJpbk9wID09IE5VTEwp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVPcEFkZEFzc2lnbjoKKyAgICAg
ICAgY2FzZSBFT3BTdWJBc3NpZ246CisgICAgICAgICAgICBBU1NFUlQoKHVuT3AgPT0gTlVMTCkg
JiYgKGJpbk9wICE9IE5VTEwpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgZXJyb3IoZXhwci0+Z2V0TGluZSgpLCAiSW52YWxpZCBvcGVyYXRvciIs
IEdldE9wZXJhdG9yU3RyaW5nKG9wKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCiAgICAgLy8gTG9vcCBpbmRleCBtdXN0IGJlIGluY3JlbWVudGVkL2RlY3JlbWVudGVkIHdp
dGggYSBjb25zdGFudC4KQEAgLTM4OCw4ICszODUsNyBAQCBib29sIFZhbGlkYXRlTGltaXRhdGlv
bnM6OnZhbGlkYXRlRm9yTG9vcEV4cHIoVEludGVybUxvb3AgKm5vZGUsCiAgICAgewogICAgICAg
ICBpZiAoIWlzQ29uc3RFeHByKGJpbk9wLT5nZXRSaWdodCgpKSkKICAgICAgICAgewotICAgICAg
ICAgICAgZXJyb3IoYmluT3AtPmdldExpbmUoKSwKLSAgICAgICAgICAgICAgICAgICJMb29wIGlu
ZGV4IGNhbm5vdCBiZSBtb2RpZmllZCBieSBub24tY29uc3RhbnQgZXhwcmVzc2lvbiIsCisgICAg
ICAgICAgICBlcnJvcihiaW5PcC0+Z2V0TGluZSgpLCAiTG9vcCBpbmRleCBjYW5ub3QgYmUgbW9k
aWZpZWQgYnkgbm9uLWNvbnN0YW50IGV4cHJlc3Npb24iLAogICAgICAgICAgICAgICAgICAgc3lt
Ym9sLT5nZXRTeW1ib2woKS5jX3N0cigpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQpAQCAtMzk4LDk2ICszOTQsMzEgQEAgYm9vbCBWYWxpZGF0ZUxpbWl0YXRpb25zOjp2
YWxpZGF0ZUZvckxvb3BFeHByKFRJbnRlcm1Mb29wICpub2RlLAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlTGltaXRhdGlvbnM6OnZhbGlkYXRlRnVuY3Rpb25DYWxsKFRJbnRl
cm1BZ2dyZWdhdGUgKm5vZGUpCi17Ci0gICAgQVNTRVJUKG5vZGUtPmdldE9wKCkgPT0gRU9wRnVu
Y3Rpb25DYWxsKTsKLQotICAgIC8vIElmIG5vdCB3aXRoaW4gbG9vcCBib2R5LCB0aGVyZSBpcyBu
b3RoaW5nIHRvIGNoZWNrLgotICAgIGlmICghd2l0aGluTG9vcEJvZHkoKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICAvLyBMaXN0IG9mIHBhcmFtIGluZGljZXMgZm9yIHdoaWNoIGxvb3Ag
aW5kaWNlcyBhcmUgdXNlZCBhcyBhcmd1bWVudC4KLSAgICB0eXBlZGVmIHN0ZDo6dmVjdG9yPHNp
emVfdD4gUGFyYW1JbmRleDsKLSAgICBQYXJhbUluZGV4IHBJbmRleDsKLSAgICBUSW50ZXJtU2Vx
dWVuY2UgKnBhcmFtcyA9IG5vZGUtPmdldFNlcXVlbmNlKCk7Ci0gICAgZm9yIChUSW50ZXJtU2Vx
dWVuY2U6OnNpemVfdHlwZSBpID0gMDsgaSA8IHBhcmFtcy0+c2l6ZSgpOyArK2kpCi0gICAgewot
ICAgICAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2wgPSAoKnBhcmFtcylbaV0tPmdldEFzU3ltYm9s
Tm9kZSgpOwotICAgICAgICBpZiAoc3ltYm9sICYmIGlzTG9vcEluZGV4KHN5bWJvbCkpCi0gICAg
ICAgICAgICBwSW5kZXgucHVzaF9iYWNrKGkpOwotICAgIH0KLSAgICAvLyBJZiBub25lIG9mIHRo
ZSBsb29wIGluZGljZXMgYXJlIHVzZWQgYXMgYXJndW1lbnRzLAotICAgIC8vIHRoZXJlIGlzIG5v
dGhpbmcgdG8gY2hlY2suCi0gICAgaWYgKHBJbmRleC5lbXB0eSgpKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgIGJvb2wgdmFsaWQgPSB0cnVlOwotICAgIFRTeW1ib2xUYWJsZSYgc3ltYm9s
VGFibGUgPSBHZXRHbG9iYWxQYXJzZUNvbnRleHQoKS0+c3ltYm9sVGFibGU7Ci0gICAgVFN5bWJv
bCAqc3ltYm9sICAgICAgICAgICA9IHN5bWJvbFRhYmxlLmZpbmQobm9kZS0+Z2V0RnVuY3Rpb25T
eW1ib2xJbmZvKCktPmdldE5hbWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdldEdsb2JhbFBhcnNlQ29udGV4dCgpLT5nZXRTaGFkZXJWZXJzaW9uKCkpOwotICAg
IEFTU0VSVChzeW1ib2wgJiYgc3ltYm9sLT5pc0Z1bmN0aW9uKCkpOwotICAgIFRGdW5jdGlvbiAq
ZnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxURnVuY3Rpb24gKj4oc3ltYm9sKTsKLSAgICBmb3IgKFBh
cmFtSW5kZXg6OmNvbnN0X2l0ZXJhdG9yIGkgPSBwSW5kZXguYmVnaW4oKTsKLSAgICAgICAgIGkg
IT0gcEluZGV4LmVuZCgpOyArK2kpCi0gICAgewotICAgICAgICBjb25zdCBUQ29uc3RQYXJhbWV0
ZXIgJnBhcmFtID0gZnVuY3Rpb24tPmdldFBhcmFtKCppKTsKLSAgICAgICAgVFF1YWxpZmllciBx
dWFsID0gcGFyYW0udHlwZS0+Z2V0UXVhbGlmaWVyKCk7Ci0gICAgICAgIGlmICgocXVhbCA9PSBF
dnFPdXQpIHx8IChxdWFsID09IEV2cUluT3V0KSkKLSAgICAgICAgewotICAgICAgICAgICAgZXJy
b3IoKCpwYXJhbXMpWyppXS0+Z2V0TGluZSgpLAotICAgICAgICAgICAgICAgICAgIkxvb3AgaW5k
ZXggY2Fubm90IGJlIHVzZWQgYXMgYXJndW1lbnQgdG8gYSBmdW5jdGlvbiBvdXQgb3IgaW5vdXQg
cGFyYW1ldGVyIiwKLSAgICAgICAgICAgICAgICAgICgqcGFyYW1zKVsqaV0tPmdldEFzU3ltYm9s
Tm9kZSgpLT5nZXRTeW1ib2woKS5jX3N0cigpKTsKLSAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdmFsaWQ7Ci19Ci0KLWJvb2wgVmFsaWRh
dGVMaW1pdGF0aW9uczo6dmFsaWRhdGVPcGVyYXRpb24oVEludGVybU9wZXJhdG9yICpub2RlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSW50ZXJtTm9kZSog
b3BlcmFuZCkKLXsKLSAgICAvLyBDaGVjayBpZiBsb29wIGluZGV4IGlzIG1vZGlmaWVkIGluIHRo
ZSBsb29wIGJvZHkuCi0gICAgaWYgKCF3aXRoaW5Mb29wQm9keSgpIHx8ICFub2RlLT5pc0Fzc2ln
bm1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBUSW50ZXJtU3ltYm9sICpzeW1i
b2wgPSBvcGVyYW5kLT5nZXRBc1N5bWJvbE5vZGUoKTsKLSAgICBpZiAoc3ltYm9sICYmIGlzTG9v
cEluZGV4KHN5bWJvbCkpCi0gICAgewotICAgICAgICBlcnJvcihub2RlLT5nZXRMaW5lKCksCi0g
ICAgICAgICAgICAgICJMb29wIGluZGV4IGNhbm5vdCBiZSBzdGF0aWNhbGx5IGFzc2lnbmVkIHRv
IHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgbG9vcCIsCi0gICAgICAgICAgICAgIHN5bWJvbC0+Z2V0
U3ltYm9sKCkuY19zdHIoKSk7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFZh
bGlkYXRlTGltaXRhdGlvbnM6OmlzQ29uc3RFeHByKFRJbnRlcm1Ob2RlICpub2RlKQorYm9vbCBW
YWxpZGF0ZUxpbWl0YXRpb25zVHJhdmVyc2VyOjppc0NvbnN0RXhwcihUSW50ZXJtTm9kZSAqbm9k
ZSkKIHsKICAgICBBU1NFUlQobm9kZSAhPSBudWxscHRyKTsKICAgICByZXR1cm4gbm9kZS0+Z2V0
QXNDb25zdGFudFVuaW9uKCkgIT0gbnVsbHB0ciAmJiBub2RlLT5nZXRBc1R5cGVkKCktPmdldFF1
YWxpZmllcigpID09IEV2cUNvbnN0OwogfQogCi1ib29sIFZhbGlkYXRlTGltaXRhdGlvbnM6Omlz
Q29uc3RJbmRleEV4cHIoVEludGVybU5vZGUgKm5vZGUpCitib29sIFZhbGlkYXRlTGltaXRhdGlv
bnNUcmF2ZXJzZXI6OmlzQ29uc3RJbmRleEV4cHIoVEludGVybU5vZGUgKm5vZGUpCiB7CiAgICAg
QVNTRVJUKG5vZGUgIT0gTlVMTCk7CiAKLSAgICBWYWxpZGF0ZUNvbnN0SW5kZXhFeHByIHZhbGlk
YXRlKG1Mb29wU3RhY2spOworICAgIFZhbGlkYXRlQ29uc3RJbmRleEV4cHIgdmFsaWRhdGUobUxv
b3BTeW1ib2xJZHMpOwogICAgIG5vZGUtPnRyYXZlcnNlKCZ2YWxpZGF0ZSk7CiAgICAgcmV0dXJu
IHZhbGlkYXRlLmlzVmFsaWQoKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUxpbWl0YXRpb25zOjp2YWxp
ZGF0ZUluZGV4aW5nKFRJbnRlcm1CaW5hcnkgKm5vZGUpCitib29sIFZhbGlkYXRlTGltaXRhdGlv
bnNUcmF2ZXJzZXI6OnZhbGlkYXRlSW5kZXhpbmcoVEludGVybUJpbmFyeSAqbm9kZSkKIHsKLSAg
ICBBU1NFUlQoKG5vZGUtPmdldE9wKCkgPT0gRU9wSW5kZXhEaXJlY3QpIHx8Ci0gICAgICAgICAg
IChub2RlLT5nZXRPcCgpID09IEVPcEluZGV4SW5kaXJlY3QpKTsKKyAgICBBU1NFUlQoKG5vZGUt
PmdldE9wKCkgPT0gRU9wSW5kZXhEaXJlY3QpIHx8IChub2RlLT5nZXRPcCgpID09IEVPcEluZGV4
SW5kaXJlY3QpKTsKIAotICAgIGJvb2wgdmFsaWQgPSB0cnVlOworICAgIGJvb2wgdmFsaWQgICAg
ICAgICAgPSB0cnVlOwogICAgIFRJbnRlcm1UeXBlZCAqaW5kZXggPSBub2RlLT5nZXRSaWdodCgp
OwogICAgIC8vIFRoZSBpbmRleCBleHBlc3Npb24gbXVzdCBiZSBhIGNvbnN0YW50LWluZGV4LWV4
cHJlc3Npb24gdW5sZXNzCiAgICAgLy8gdGhlIG9wZXJhbmQgaXMgYSB1bmlmb3JtIGluIGEgdmVy
dGV4IHNoYWRlci4KICAgICBUSW50ZXJtVHlwZWQgKm9wZXJhbmQgPSBub2RlLT5nZXRMZWZ0KCk7
Ci0gICAgYm9vbCBza2lwID0gKG1TaGFkZXJUeXBlID09IEdMX1ZFUlRFWF9TSEFERVIpICYmCi0g
ICAgICAgICAgICAgICAgKG9wZXJhbmQtPmdldFF1YWxpZmllcigpID09IEV2cVVuaWZvcm0pOwor
ICAgIGJvb2wgc2tpcCA9IChtU2hhZGVyVHlwZSA9PSBHTF9WRVJURVhfU0hBREVSKSAmJiAob3Bl
cmFuZC0+Z2V0UXVhbGlmaWVyKCkgPT0gRXZxVW5pZm9ybSk7CiAgICAgaWYgKCFza2lwICYmICFp
c0NvbnN0SW5kZXhFeHByKGluZGV4KSkKICAgICB7CiAgICAgICAgIGVycm9yKGluZGV4LT5nZXRM
aW5lKCksICJJbmRleCBleHByZXNzaW9uIG11c3QgYmUgY29uc3RhbnQiLCAiW10iKTsKQEAgLTQ5
NiwzICs0MjcsMTcgQEAgYm9vbCBWYWxpZGF0ZUxpbWl0YXRpb25zOjp2YWxpZGF0ZUluZGV4aW5n
KFRJbnRlcm1CaW5hcnkgKm5vZGUpCiAgICAgcmV0dXJuIHZhbGlkOwogfQogCit9ICAvLyBuYW1l
c3BhY2UgYW5vbnltb3VzCisKK2Jvb2wgVmFsaWRhdGVMaW1pdGF0aW9ucyhUSW50ZXJtTm9kZSAq
cm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2hhZGVyVHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpCit7CisgICAgVmFsaWRhdGVMaW1p
dGF0aW9uc1RyYXZlcnNlciB2YWxpZGF0ZShzaGFkZXJUeXBlLCBzeW1ib2xUYWJsZSwgc2hhZGVy
VmVyc2lvbiwgZGlhZ25vc3RpY3MpOworICAgIHJvb3QtPnRyYXZlcnNlKCZ2YWxpZGF0ZSk7Cisg
ICAgcmV0dXJuIGRpYWdub3N0aWNzLT5udW1FcnJvcnMoKSA9PSAwOworfQorCit9ICAvLyBuYW1l
c3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1ZhbGlkYXRlTGltaXRhdGlvbnMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTGltaXRhdGlvbnMuaAppbmRleCA2
NjZlMzhmZjVjOC4uNjk0N2ZkZWYyYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTGltaXRhdGlvbnMuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZUxp
bWl0YXRpb25zLmgKQEAgLTgsNTYgKzgsMjAgQEAKICNkZWZpbmUgQ09NUElMRVJfVFJBTlNMQVRP
Ul9WQUxJREFURUxJTUlUQVRJT05TX0hfCiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9y
L0ludGVybU5vZGUuaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0xvb3BJbmZvLmgi
CiAKLWNsYXNzIFRJbmZvU2lua0Jhc2U7Ci0KLS8vIFRyYXZlcnNlcyBpbnRlcm1lZGlhdGUgdHJl
ZSB0byBlbnN1cmUgdGhhdCB0aGUgc2hhZGVyIGRvZXMgbm90IGV4Y2VlZCB0aGUKLS8vIG1pbmlt
dW0gZnVuY3Rpb25hbGl0eSBtYW5kYXRlZCBpbiBHTFNMIDEuMCBzcGVjLCBBcHBlbmRpeCBBLgot
Y2xhc3MgVmFsaWRhdGVMaW1pdGF0aW9ucyA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCituYW1l
c3BhY2Ugc2gKIHsKLSAgcHVibGljOgotICAgIFZhbGlkYXRlTGltaXRhdGlvbnMoc2g6OkdMZW51
bSBzaGFkZXJUeXBlLCBUSW5mb1NpbmtCYXNlICpzaW5rKTsKLQotICAgIGludCBudW1FcnJvcnMo
KSBjb25zdCB7IHJldHVybiBtTnVtRXJyb3JzOyB9Ci0KLSAgICBib29sIHZpc2l0QmluYXJ5KFZp
c2l0LCBUSW50ZXJtQmluYXJ5ICopIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRVbmFyeShWaXNp
dCwgVEludGVybVVuYXJ5ICopIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlz
aXQsIFRJbnRlcm1BZ2dyZWdhdGUgKikgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNpdExvb3AoVmlz
aXQsIFRJbnRlcm1Mb29wICopIG92ZXJyaWRlOwotCi0gICAgc3RhdGljIGJvb2wgSXNMaW1pdGVk
Rm9yTG9vcChUSW50ZXJtTG9vcCAqbm9kZSk7Ci0KLSAgcHJpdmF0ZToKLSAgICB2b2lkIGVycm9y
KFRTb3VyY2VMb2MgbG9jLCBjb25zdCBjaGFyICpyZWFzb24sIGNvbnN0IGNoYXIgKnRva2VuKTsK
LQotICAgIGJvb2wgd2l0aGluTG9vcEJvZHkoKSBjb25zdDsKLSAgICBib29sIGlzTG9vcEluZGV4
KFRJbnRlcm1TeW1ib2wgKnN5bWJvbCk7Ci0gICAgYm9vbCB2YWxpZGF0ZUxvb3BUeXBlKFRJbnRl
cm1Mb29wICpub2RlKTsKLQotICAgIGJvb2wgdmFsaWRhdGVGb3JMb29wSGVhZGVyKFRJbnRlcm1M
b29wICpub2RlKTsKLSAgICAvLyBJZiB2YWxpZCwgcmV0dXJuIHRoZSBpbmRleCBzeW1ib2wgaWQ7
IE90aGVyd2lzZSwgcmV0dXJuIC0xLgotICAgIGludCB2YWxpZGF0ZUZvckxvb3BJbml0KFRJbnRl
cm1Mb29wICpub2RlKTsKLSAgICBib29sIHZhbGlkYXRlRm9yTG9vcENvbmQoVEludGVybUxvb3Ag
Km5vZGUsIGludCBpbmRleFN5bWJvbElkKTsKLSAgICBib29sIHZhbGlkYXRlRm9yTG9vcEV4cHIo
VEludGVybUxvb3AgKm5vZGUsIGludCBpbmRleFN5bWJvbElkKTsKIAotICAgIC8vIFJldHVybnMg
dHJ1ZSBpZiBub25lIG9mIHRoZSBsb29wIGluZGljZXMgaXMgdXNlZCBhcyB0aGUgYXJndW1lbnQg
dG8KLSAgICAvLyB0aGUgZ2l2ZW4gZnVuY3Rpb24gb3V0IG9yIGlub3V0IHBhcmFtZXRlci4KLSAg
ICBib29sIHZhbGlkYXRlRnVuY3Rpb25DYWxsKFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpOwotICAg
IGJvb2wgdmFsaWRhdGVPcGVyYXRpb24oVEludGVybU9wZXJhdG9yICpub2RlLCBUSW50ZXJtTm9k
ZSAqb3BlcmFuZCk7CitjbGFzcyBURGlhZ25vc3RpY3M7CiAKLSAgICAvLyBSZXR1cm5zIHRydWUg
aWYgaW5kZXhpbmcgZG9lcyBub3QgZXhjZWVkIHRoZSBtaW5pbXVtIGZ1bmN0aW9uYWxpdHkKLSAg
ICAvLyBtYW5kYXRlZCBpbiBHTFNMIDEuMCBzcGVjLCBBcHBlbmRpeCBBLCBTZWN0aW9uIDUuCi0g
ICAgYm9vbCBpc0NvbnN0RXhwcihUSW50ZXJtTm9kZSAqbm9kZSk7Ci0gICAgYm9vbCBpc0NvbnN0
SW5kZXhFeHByKFRJbnRlcm1Ob2RlICpub2RlKTsKLSAgICBib29sIHZhbGlkYXRlSW5kZXhpbmco
VEludGVybUJpbmFyeSAqbm9kZSk7CisvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHNoYWRl
ciBkb2VzIG5vdCBleGNlZWQgdGhlIG1pbmltdW0gZnVuY3Rpb25hbGl0eSBtYW5kYXRlZCBpbiBH
TFNMIEVTCisvLyAxLjAwIHNwZWMgQXBwZW5kaXggQS4KK2Jvb2wgVmFsaWRhdGVMaW1pdGF0aW9u
cyhUSW50ZXJtTm9kZSAqcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2hh
ZGVyVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3ltYm9sVGFibGUgJnN5
bWJvbFRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJWZXJzaW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpOwogCi0g
ICAgc2g6OkdMZW51bSBtU2hhZGVyVHlwZTsKLSAgICBUSW5mb1NpbmtCYXNlICptU2luazsKLSAg
ICBpbnQgbU51bUVycm9yczsKLSAgICBUTG9vcFN0YWNrIG1Mb29wU3RhY2s7Ci0gICAgYm9vbCBt
VmFsaWRhdGVJbmRleGluZzsKLSAgICBib29sIG1WYWxpZGF0ZUlubmVyTG9vcHM7Ci19OworfSAg
Ly8gbmFtZXNwYWNlIHNoCiAKLSNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1ZBTElEQVRF
TElNSVRBVElPTlNfSF8KKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9WQUxJREFURUxJ
TUlUQVRJT05TX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU1heFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVNYXhQYXJhbWV0ZXJz
LmNwcAppbmRleCAwMGIzYzliNDUxYi4uMmQwYjNlYmQzMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTWF4UGFyYW1l
dGVycy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvVmFsaWRhdGVNYXhQYXJhbWV0ZXJzLmNwcApAQCAtNywxOSArNywyMiBAQAogCiAjaW5j
bHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU1heFBhcmFtZXRlcnMuaCIKIAorbmFt
ZXNwYWNlIHNoCit7CisKIFZhbGlkYXRlTWF4UGFyYW1ldGVyczo6VmFsaWRhdGVNYXhQYXJhbWV0
ZXJzKHVuc2lnbmVkIGludCBtYXhQYXJhbWV0ZXJzKQogICAgIDogVEludGVybVRyYXZlcnNlcih0
cnVlLCBmYWxzZSwgZmFsc2UpLCBtTWF4UGFyYW1ldGVycyhtYXhQYXJhbWV0ZXJzKSwgbVZhbGlk
KHRydWUpCiB7CiB9CiAKLWJvb2wgVmFsaWRhdGVNYXhQYXJhbWV0ZXJzOjp2aXNpdEFnZ3JlZ2F0
ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKK2Jvb2wgVmFsaWRhdGVNYXhQ
YXJhbWV0ZXJzOjp2aXNpdEZ1bmN0aW9uRGVmaW5pdGlvbihWaXNpdCB2aXNpdCwgVEludGVybUZ1
bmN0aW9uRGVmaW5pdGlvbiAqbm9kZSkKIHsKICAgICBpZiAoIW1WYWxpZCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAobm9kZS0+Z2V0T3AoKSA9PSBFT3BQ
YXJhbWV0ZXJzICYmIG5vZGUtPmdldFNlcXVlbmNlKCktPnNpemUoKSA+IG1NYXhQYXJhbWV0ZXJz
KQorICAgIGlmIChub2RlLT5nZXRGdW5jdGlvblByb3RvdHlwZSgpLT5nZXRTZXF1ZW5jZSgpLT5z
aXplKCkgPiBtTWF4UGFyYW1ldGVycykKICAgICB7CiAgICAgICAgIG1WYWxpZCA9IGZhbHNlOwog
ICAgIH0KQEAgLTMzLDMgKzM2LDUgQEAgYm9vbCBWYWxpZGF0ZU1heFBhcmFtZXRlcnM6OnZhbGlk
YXRlKFRJbnRlcm1Ob2RlICpyb290LCB1bnNpZ25lZCBpbnQgbWF4UGFyYW1ldGUKICAgICByb290
LT50cmF2ZXJzZSgmYXJnc1RyYXZlcnNlcik7CiAgICAgcmV0dXJuIGFyZ3NUcmF2ZXJzZXIubVZh
bGlkOwogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTWF4UGFyYW1ldGVycy5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRh
dGVNYXhQYXJhbWV0ZXJzLmgKaW5kZXggODc5MTZhZmVmOGYuLjdjNzMzOTBhNjQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxp
ZGF0ZU1heFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU1heFBhcmFtZXRlcnMuaApAQCAtMTAsNiArMTAsOSBA
QAogCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCiAKK25hbWVz
cGFjZSBzaAoreworCiBjbGFzcyBWYWxpZGF0ZU1heFBhcmFtZXRlcnMgOiBwdWJsaWMgVEludGVy
bVRyYXZlcnNlcgogewogICBwdWJsaWM6CkBAIC0xNyw3ICsyMCw3IEBAIGNsYXNzIFZhbGlkYXRl
TWF4UGFyYW1ldGVycyA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgc3RhdGljIGJvb2wg
dmFsaWRhdGUoVEludGVybU5vZGUgKnJvb3QsIHVuc2lnbmVkIGludCBtYXhQYXJhbWV0ZXJzKTsK
IAogICBwcm90ZWN0ZWQ6Ci0gICAgYm9vbCB2aXNpdEFnZ3JlZ2F0ZShWaXNpdCB2aXNpdCwgVElu
dGVybUFnZ3JlZ2F0ZSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEZ1bmN0aW9uRGVm
aW5pdGlvbihWaXNpdCB2aXNpdCwgVEludGVybUZ1bmN0aW9uRGVmaW5pdGlvbiAqbm9kZSkgb3Zl
cnJpZGU7CiAKICAgcHJpdmF0ZToKICAgICBWYWxpZGF0ZU1heFBhcmFtZXRlcnModW5zaWduZWQg
aW50IG1heFBhcmFtZXRlcnMpOwpAQCAtMjYsNCArMjksNiBAQCBjbGFzcyBWYWxpZGF0ZU1heFBh
cmFtZXRlcnMgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgIGJvb2wgbVZhbGlkOwogfTsK
IAorfSAgLy8gbmFtZXNwYWNlIHNoCisKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9W
QUxJREFURU1BWFBBUkFNRVRFUlNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTXVsdGl2aWV3V2ViR0wuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVN
dWx0aXZpZXdXZWJHTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LjE2OWEzMmU5MTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVNdWx0aXZpZXdXZWJHTC5jcHAKQEAgLTAs
MCArMSw0MTQgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBWYWxpZGF0ZU11bHRpdmlld1dlYkdM
LmNwcDoKKy8vICAgVmFsaWRhdGUgdGhlIEFTVCBhY2NvcmRpbmcgdG8gcnVsZXMgaW4gdGhlIFdF
QkdMX211bHRpdmlldyBleHRlbnNpb24gc3BlYy4gT25seSBjb3ZlcnMgdGhvc2UKKy8vICAgcnVs
ZXMgbm90IGFscmVhZHkgY292ZXJlZCBpbiBQYXJzZUNvbnRleHQuCisvLworCisjaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU11bHRpdmlld1dlYkdMLmgiCisKKyNpbmNsdWRl
IDxhcnJheT4KKworI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJh
bnNsYXRvci9EaWFnbm9zdGljcy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvRmlu
ZFN5bWJvbE5vZGUuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUu
aCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1N5bWJvbFRhYmxlLmgiCisKK25hbWVz
cGFjZSBzaAoreworCituYW1lc3BhY2UKK3sKKworY2xhc3MgVmFsaWRhdGVNdWx0aXZpZXdUcmF2
ZXJzZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgoreworICBwdWJsaWM6CisgICAgLy8gQ2hl
Y2sgZm9yIGVycm9ycyBhbmQgd3JpdGUgZXJyb3IgbWVzc2FnZXMgdG8gZGlhZ25vc3RpY3MuIFJl
dHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgbm8KKyAgICAvLyBlcnJvcnMuCisgICAgc3RhdGljIGJv
b2wgdmFsaWRhdGUoVEludGVybUJsb2NrICpyb290LAorICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBzaGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTeW1i
b2xUYWJsZSAmc3ltYm9sVGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRl
clZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtdWx0aXZpZXcyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpOworCisgICAg
Ym9vbCBpc1ZhbGlkKCkgeyByZXR1cm4gbVZhbGlkOyB9CisKKyAgcHJvdGVjdGVkOgorICAgIHZv
aWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2
aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkgb3ZlcnJpZGU7Cisg
ICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVW5hcnkgKm5vZGUpIG92ZXJy
aWRlOworICAgIGJvb2wgdmlzaXRJZkVsc2UoVmlzaXQgdmlzaXQsIFRJbnRlcm1JZkVsc2UgKm5v
ZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRl
cm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgVmFsaWRhdGVN
dWx0aXZpZXdUcmF2ZXJzZXIoR0xlbnVtIHNoYWRlclR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgc2hhZGVyVmVyc2lvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIG11bHRpdmlldzIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVERpYWdub3N0aWNzICpkaWFnbm9zdGljcyk7CisKKyAgICBzdGF0aWMgYm9vbCBJc0dM
UG9zaXRpb24oVEludGVybU5vZGUgKm5vZGUpOworICAgIHN0YXRpYyBib29sIElzR0xWaWV3SURP
VlIoVEludGVybU5vZGUgKm5vZGUpOworICAgIHN0YXRpYyBib29sIElzU2ltcGxlQXNzaWdubWVu
dFRvR0xQb3NpdGlvblgoVEludGVybUJpbmFyeSAqbm9kZSk7CisgICAgc3RhdGljIGJvb2wgSXNT
aW1wbGVBc3NpZ25tZW50VG9HTFBvc2l0aW9uKFRJbnRlcm1CaW5hcnkgKm5vZGUpOworCisgICAg
dm9pZCB2YWxpZGF0ZUFuZFRyYXZlcnNlVmlld0lEQ29uZGl0aW9uYWxCbG9jayhUSW50ZXJtQmxv
Y2sgKmJsb2NrLCBjb25zdCBjaGFyICp0b2tlbik7CisKKyAgICBib29sIG1WYWxpZDsKKyAgICBi
b29sIG1NdWx0aXZpZXcyOworICAgIEdMZW51bSBtU2hhZGVyVHlwZTsKKyAgICBjb25zdCBUU3lt
Ym9sVGFibGUgJm1TeW1ib2xUYWJsZTsKKyAgICBjb25zdCBpbnQgbVNoYWRlclZlcnNpb247CisK
KyAgICBib29sIG1JbnNpZGVWaWV3SURDb25kaXRpb25hbDsgIC8vIE9ubHkgc2V0IGlmIG1NdWx0
aXZpZXcyIGlzIGZhbHNlLgorICAgIGJvb2wgbUluc2lkZVJlc3RyaWN0ZWRBc3NpZ25tZW50Owor
ICAgIGJvb2wgbUdMUG9zaXRpb25BbGxvd2VkOworICAgIGJvb2wgbVZpZXdJRE9WUkFsbG93ZWQ7
CisKKyAgICBURGlhZ25vc3RpY3MgKm1EaWFnbm9zdGljczsKK307CisKK2Jvb2wgVmFsaWRhdGVN
dWx0aXZpZXdUcmF2ZXJzZXI6OnZhbGlkYXRlKFRJbnRlcm1CbG9jayAqcm9vdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzaGFkZXJUeXBlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN5bWJvbFRhYmxl
ICZzeW1ib2xUYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBzaGFkZXJWZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBtdWx0aXZpZXcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVERpYWdub3N0aWNzICpkaWFnbm9zdGljcykKK3sKKyAgICBWYWxpZGF0ZU11bHRp
dmlld1RyYXZlcnNlciB2YWxpZGF0ZShzaGFkZXJUeXBlLCBzeW1ib2xUYWJsZSwgc2hhZGVyVmVy
c2lvbiwgbXVsdGl2aWV3MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkaWFnbm9zdGljcyk7CisgICAgQVNTRVJUKHJvb3QpOworICAgIHJvb3QtPnRyYXZlcnNlKCZ2
YWxpZGF0ZSk7CisgICAgcmV0dXJuIHZhbGlkYXRlLmlzVmFsaWQoKTsKK30KKworVmFsaWRhdGVN
dWx0aXZpZXdUcmF2ZXJzZXI6OlZhbGlkYXRlTXVsdGl2aWV3VHJhdmVyc2VyKEdMZW51bSBzaGFk
ZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBtdWx0aXZpZXcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpCisgICAgOiBUSW50ZXJt
VHJhdmVyc2VyKHRydWUsIHRydWUsIHRydWUpLAorICAgICAgbVZhbGlkKHRydWUpLAorICAgICAg
bU11bHRpdmlldzIobXVsdGl2aWV3MiksCisgICAgICBtU2hhZGVyVHlwZShzaGFkZXJUeXBlKSwK
KyAgICAgIG1TeW1ib2xUYWJsZShzeW1ib2xUYWJsZSksCisgICAgICBtU2hhZGVyVmVyc2lvbihz
aGFkZXJWZXJzaW9uKSwKKyAgICAgIG1JbnNpZGVWaWV3SURDb25kaXRpb25hbChmYWxzZSksCisg
ICAgICBtSW5zaWRlUmVzdHJpY3RlZEFzc2lnbm1lbnQoZmFsc2UpLAorICAgICAgbUdMUG9zaXRp
b25BbGxvd2VkKG11bHRpdmlldzIpLAorICAgICAgbVZpZXdJRE9WUkFsbG93ZWQobXVsdGl2aWV3
MiksCisgICAgICBtRGlhZ25vc3RpY3MoZGlhZ25vc3RpY3MpCit7Cit9CisKK2Jvb2wgVmFsaWRh
dGVNdWx0aXZpZXdUcmF2ZXJzZXI6OklzR0xQb3NpdGlvbihUSW50ZXJtTm9kZSAqbm9kZSkKK3sK
KyAgICBUSW50ZXJtU3ltYm9sICpzeW1ib2xOb2RlID0gbm9kZS0+Z2V0QXNTeW1ib2xOb2RlKCk7
CisgICAgcmV0dXJuIChzeW1ib2xOb2RlICYmIHN5bWJvbE5vZGUtPmdldE5hbWUoKS5nZXRTdHJp
bmcoKSA9PSAiZ2xfUG9zaXRpb24iKTsKK30KKworYm9vbCBWYWxpZGF0ZU11bHRpdmlld1RyYXZl
cnNlcjo6SXNHTFZpZXdJRE9WUihUSW50ZXJtTm9kZSAqbm9kZSkKK3sKKyAgICBUSW50ZXJtU3lt
Ym9sICpzeW1ib2xOb2RlID0gbm9kZS0+Z2V0QXNTeW1ib2xOb2RlKCk7CisgICAgcmV0dXJuIChz
eW1ib2xOb2RlICYmIHN5bWJvbE5vZGUtPmdldE5hbWUoKS5nZXRTdHJpbmcoKSA9PSAiZ2xfVmll
d0lEX09WUiIpOworfQorCitib29sIFZhbGlkYXRlTXVsdGl2aWV3VHJhdmVyc2VyOjpJc1NpbXBs
ZUFzc2lnbm1lbnRUb0dMUG9zaXRpb25YKFRJbnRlcm1CaW5hcnkgKm5vZGUpCit7CisgICAgaWYg
KG5vZGUtPmdldE9wKCkgPT0gRU9wQXNzaWduKQorICAgIHsKKyAgICAgICAgVEludGVybVN3aXp6
bGUgKmxlZnRBc1N3aXp6bGUgPSBub2RlLT5nZXRMZWZ0KCktPmdldEFzU3dpenpsZU5vZGUoKTsK
KyAgICAgICAgaWYgKGxlZnRBc1N3aXp6bGUgJiYgSXNHTFBvc2l0aW9uKGxlZnRBc1N3aXp6bGUt
PmdldE9wZXJhbmQoKSkgJiYKKyAgICAgICAgICAgIGxlZnRBc1N3aXp6bGUtPm9mZnNldHNNYXRj
aCgwKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAg
ICAgICAgVEludGVybUJpbmFyeSAqbGVmdEFzQmluYXJ5ID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRB
c0JpbmFyeU5vZGUoKTsKKyAgICAgICAgaWYgKGxlZnRBc0JpbmFyeSAmJiBsZWZ0QXNCaW5hcnkt
PmdldE9wKCkgPT0gRU9wSW5kZXhEaXJlY3QgJiYKKyAgICAgICAgICAgIElzR0xQb3NpdGlvbihs
ZWZ0QXNCaW5hcnktPmdldExlZnQoKSkgJiYKKyAgICAgICAgICAgIGxlZnRBc0JpbmFyeS0+Z2V0
UmlnaHQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCktPmdldElDb25zdCgwKSA9PSAwKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgVmFsaWRhdGVNdWx0aXZpZXdUcmF2ZXJzZXI6OklzU2ltcGxl
QXNzaWdubWVudFRvR0xQb3NpdGlvbihUSW50ZXJtQmluYXJ5ICpub2RlKQoreworICAgIGlmIChu
b2RlLT5nZXRPcCgpID09IEVPcEFzc2lnbikKKyAgICB7CisgICAgICAgIGlmIChJc0dMUG9zaXRp
b24obm9kZS0+Z2V0TGVmdCgpKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgVEludGVybVN3aXp6bGUgKmxlZnRBc1N3aXp6bGUgPSBub2Rl
LT5nZXRMZWZ0KCktPmdldEFzU3dpenpsZU5vZGUoKTsKKyAgICAgICAgaWYgKGxlZnRBc1N3aXp6
bGUgJiYgSXNHTFBvc2l0aW9uKGxlZnRBc1N3aXp6bGUtPmdldE9wZXJhbmQoKSkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIFRJbnRlcm1C
aW5hcnkgKmxlZnRBc0JpbmFyeSA9IG5vZGUtPmdldExlZnQoKS0+Z2V0QXNCaW5hcnlOb2RlKCk7
CisgICAgICAgIGlmIChsZWZ0QXNCaW5hcnkgJiYgbGVmdEFzQmluYXJ5LT5nZXRPcCgpID09IEVP
cEluZGV4RGlyZWN0ICYmCisgICAgICAgICAgICBJc0dMUG9zaXRpb24obGVmdEFzQmluYXJ5LT5n
ZXRMZWZ0KCkpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgVmFsaWRhdGVNdWx0aXZpZXdU
cmF2ZXJzZXI6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKm5vZGUpCit7CisgICAgaWYgKElz
R0xQb3NpdGlvbihub2RlKSAmJiAhbUdMUG9zaXRpb25BbGxvd2VkKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKCFtTXVsdGl2aWV3Mik7CisgICAgICAgIG1EaWFnbm9zdGljcy0+ZXJyb3Iobm9kZS0+
Z2V0TGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEaXNhbGxvd2VkIHVzZSBv
ZiBnbF9Qb3NpdGlvbiB3aGVuIHVzaW5nIE9WUl9tdWx0aXZpZXciLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJnbF9Qb3NpdGlvbiIpOworICAgICAgICBtVmFsaWQgPSBmYWxzZTsKKyAg
ICB9CisgICAgZWxzZSBpZiAoSXNHTFZpZXdJRE9WUihub2RlKSAmJiAhbVZpZXdJRE9WUkFsbG93
ZWQpCisgICAgeworICAgICAgICBBU1NFUlQoIW1NdWx0aXZpZXcyKTsKKyAgICAgICAgbURpYWdu
b3N0aWNzLT5lcnJvcihub2RlLT5nZXRMaW5lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkRpc2FsbG93ZWQgdXNlIG9mIGdsX1ZpZXdJRF9PVlIgd2hlbiB1c2luZyBPVlJfbXVsdGl2
aWV3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2xfVmlld0lEX09WUiIpOworICAg
ICAgICBtVmFsaWQgPSBmYWxzZTsKKyAgICB9CisgICAgZWxzZSBpZiAoIW1NdWx0aXZpZXcyICYm
IG1TaGFkZXJUeXBlID09IEdMX0ZSQUdNRU5UX1NIQURFUikKKyAgICB7CisgICAgICAgIHN0ZDo6
YXJyYXk8Y29uc3QgY2hhciAqLCAzPiBkaXNhbGxvd2VkRnJhZ21lbnRTaGFkZXJTeW1ib2xzewor
ICAgICAgICAgICAgeyJnbF9GcmFnQ29vcmQiLCAiZ2xfUG9pbnRDb29yZCIsICJnbF9Gcm9udEZh
Y2luZyJ9fTsKKyAgICAgICAgZm9yIChhdXRvIGRpc2FsbG93ZWRTeW1ib2wgOiBkaXNhbGxvd2Vk
RnJhZ21lbnRTaGFkZXJTeW1ib2xzKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobm9kZS0+
Z2V0U3ltYm9sKCkgPT0gZGlzYWxsb3dlZFN5bWJvbCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBtRGlhZ25vc3RpY3MtPmVycm9yKAorICAgICAgICAgICAgICAgICAgICBub2RlLT5n
ZXRMaW5lKCksCisgICAgICAgICAgICAgICAgICAgICJEaXNhbGxvd2VkIHVzZSBvZiBhIGJ1aWx0
LWluIHZhcmlhYmxlIHdoZW4gdXNpbmcgT1ZSX211bHRpdmlldyIsCisgICAgICAgICAgICAgICAg
ICAgIGRpc2FsbG93ZWRTeW1ib2wpOworICAgICAgICAgICAgICAgIG1WYWxpZCA9IGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitib29sIFZhbGlkYXRlTXVsdGl2
aWV3VHJhdmVyc2VyOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9k
ZSkKK3sKKyAgICBpZiAoIW1NdWx0aXZpZXcyICYmIG1TaGFkZXJUeXBlID09IEdMX1ZFUlRFWF9T
SEFERVIpCisgICAgeworICAgICAgICBpZiAodmlzaXQgPT0gUHJlVmlzaXQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIEFTU0VSVCghbUluc2lkZVZpZXdJRENvbmRpdGlvbmFsIHx8IG1JbnNpZGVS
ZXN0cmljdGVkQXNzaWdubWVudCk7CisgICAgICAgICAgICBpZiAobm9kZS0+aXNBc3NpZ25tZW50
KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKG1JbnNpZGVSZXN0cmljdGVk
QXNzaWdubWVudCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1EaWFn
bm9zdGljcy0+ZXJyb3Iobm9kZS0+Z2V0TGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJEaXNhbGxvd2VkIGFzc2lnbm1lbnQgaW5zaWRlIGFzc2lnbm1lbnQg
dG8gZ2xfUG9zaXRpb24ueCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIndoZW4gdXNpbmcgT1ZSX211bHRpdmlldyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR2V0T3BlcmF0b3JTdHJpbmcobm9kZS0+Z2V0T3AoKSkpOworICAgICAg
ICAgICAgICAgICAgICBtVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoSXNTaW1wbGVBc3NpZ25tZW50VG9HTFBvc2l0aW9uWChub2RlKSAm
JgorICAgICAgICAgICAgICAgICAgICAgICAgIEZpbmRTeW1ib2xOb2RlKG5vZGUtPmdldFJpZ2h0
KCksICJnbF9WaWV3SURfT1ZSIiwgRWJ0VUludCkpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBpZiAoIWdldFBhcmVudE5vZGUoKS0+Z2V0QXNCbG9jaygpKQorICAgICAg
ICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPmVy
cm9yKG5vZGUtPmdldExpbmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkRpc2FsbG93ZWQgdXNlIG9mIGFzc2lnbm1lbnQgdG8gZ2xfUG9zaXRpb24ueCAi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGVuIHVzaW5n
IE9WUl9tdWx0aXZpZXciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiPSIpOworICAgICAgICAgICAgICAgICAgICAgICAgbVZhbGlkID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbUluc2lkZVJlc3RyaWN0ZWRB
c3NpZ25tZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbVZpZXdJRE9WUkFsbG93ZWQg
ICAgICAgICAgID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0UmlnaHQoKS0+
dHJhdmVyc2UodGhpcyk7CisgICAgICAgICAgICAgICAgICAgIG1JbnNpZGVSZXN0cmljdGVkQXNz
aWdubWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBtVmlld0lET1ZSQWxsb3dlZCAg
ICAgICAgICAgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChJc1NpbXBsZUFzc2lnbm1l
bnRUb0dMUG9zaXRpb24obm9kZSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICBub2RlLT5nZXRSaWdodCgpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZU11bHRpdmll
d1RyYXZlcnNlcjo6dmlzaXRVbmFyeShWaXNpdCB2aXNpdCwgVEludGVybVVuYXJ5ICpub2RlKQor
eworICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCAmJiAhbU11bHRpdmlldzIgJiYgbUluc2lkZVJl
c3RyaWN0ZWRBc3NpZ25tZW50KQorICAgIHsKKyAgICAgICAgaWYgKG5vZGUtPmlzQXNzaWdubWVu
dCgpKQorICAgICAgICB7CisgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPmVycm9yKG5vZGUtPmdl
dExpbmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpc2FsbG93ZWQgdW5h
cnkgb3BlcmF0b3IgaW5zaWRlIGFzc2lnbm1lbnQgdG8gZ2xfUG9zaXRpb24ueCB3aGVuICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVzaW5nIE9WUl9tdWx0aXZpZXciLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRPcGVyYXRvclN0cmluZyhub2RlLT5nZXRP
cCgpKSk7CisgICAgICAgICAgICBtVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBWYWxpZGF0ZU11bHRpdmlld1RyYXZlcnNlcjo6dmFs
aWRhdGVBbmRUcmF2ZXJzZVZpZXdJRENvbmRpdGlvbmFsQmxvY2soVEludGVybUJsb2NrICpibG9j
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRva2VuKQoreworICAgIGlmIChibG9j
ay0+Z2V0U2VxdWVuY2UoKS0+c2l6ZSgpID4gMSkKKyAgICB7CisgICAgICAgIG1EaWFnbm9zdGlj
cy0+ZXJyb3IoYmxvY2stPmdldExpbmUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
T25seSBvbmUgYXNzaWdubWVudCB0byBnbF9Qb3NpdGlvbiBhbGxvd2VkIGluc2lkZSBpZiBibG9j
ayBkZXBlbmRlbnQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvbiBnbF9WaWV3SURf
T1ZSIHdoZW4gdXNpbmcgT1ZSX211bHRpdmlldyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdG9rZW4pOworICAgICAgICBtVmFsaWQgPSBmYWxzZTsKKyAgICB9CisgICAgZWxzZSBpZiAo
YmxvY2stPmdldFNlcXVlbmNlKCktPnNpemUoKSA9PSAxKQorICAgIHsKKyAgICAgICAgVEludGVy
bUJpbmFyeSAqYXNzaWdubWVudCA9IGJsb2NrLT5nZXRTZXF1ZW5jZSgpLT5hdCgwKS0+Z2V0QXNC
aW5hcnlOb2RlKCk7CisgICAgICAgIGlmIChhc3NpZ25tZW50ICYmIElzU2ltcGxlQXNzaWdubWVu
dFRvR0xQb3NpdGlvblgoYXNzaWdubWVudCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1JbnNp
ZGVSZXN0cmljdGVkQXNzaWdubWVudCA9IHRydWU7CisgICAgICAgICAgICBhc3NpZ25tZW50LT5n
ZXRSaWdodCgpLT50cmF2ZXJzZSh0aGlzKTsKKyAgICAgICAgICAgIG1JbnNpZGVSZXN0cmljdGVk
QXNzaWdubWVudCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgewor
ICAgICAgICAgICAgbURpYWdub3N0aWNzLT5lcnJvcihibG9jay0+Z2V0TGluZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiT25seSBvbmUgYXNzaWdubWVudCB0byBnbF9Qb3Np
dGlvbi54IGFsbG93ZWQgaW5zaWRlIGlmIGJsb2NrICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImRlcGVuZGVudCBvbiBnbF9WaWV3SURfT1ZSIHdoZW4gdXNpbmcgT1ZSX211bHRp
dmlldyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuKTsKKyAgICAgICAg
ICAgIG1WYWxpZCA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorfQorCitib29sIFZhbGlkYXRl
TXVsdGl2aWV3VHJhdmVyc2VyOjp2aXNpdElmRWxzZShWaXNpdCB2aXNpdCwgVEludGVybUlmRWxz
ZSAqbm9kZSkKK3sKKyAgICBpZiAoIW1NdWx0aXZpZXcyICYmIG1TaGFkZXJUeXBlID09IEdMX1ZF
UlRFWF9TSEFERVIpCisgICAgeworICAgICAgICBBU1NFUlQodmlzaXQgPT0gUHJlVmlzaXQpOwor
CisgICAgICAgIC8vIENoZWNrIGlmIHRoZSBpZiBzdGF0ZW1lbnQgcmVmZXJzIHRvIGdsX1ZpZXdJ
RF9PVlIgYW5kIGlmIGl0IGRvZXMgc28gY29ycmVjdGx5CisgICAgICAgIFRJbnRlcm1CaW5hcnkg
KmJpbmFyeUNvbmRpdGlvbiAgICAgICAgICAgICAgPSBub2RlLT5nZXRDb25kaXRpb24oKS0+Z2V0
QXNCaW5hcnlOb2RlKCk7CisgICAgICAgIGJvb2wgY29uZGl0aW9uSXNBbGxvd2VkQ29tcGFyaXNv
bldpdGhWaWV3SUQgPSBmYWxzZTsKKyAgICAgICAgaWYgKGJpbmFyeUNvbmRpdGlvbiAmJiBiaW5h
cnlDb25kaXRpb24tPmdldE9wKCkgPT0gRU9wRXF1YWwpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNvbmRpdGlvbklzQWxsb3dlZENvbXBhcmlzb25XaXRoVmlld0lEID0KKyAgICAgICAgICAgICAg
ICBJc0dMVmlld0lET1ZSKGJpbmFyeUNvbmRpdGlvbi0+Z2V0TGVmdCgpKSAmJgorICAgICAgICAg
ICAgICAgIGJpbmFyeUNvbmRpdGlvbi0+Z2V0UmlnaHQoKS0+Z2V0QXNDb25zdGFudFVuaW9uKCkg
JiYKKyAgICAgICAgICAgICAgICBiaW5hcnlDb25kaXRpb24tPmdldFJpZ2h0KCktPmdldFF1YWxp
ZmllcigpID09IEV2cUNvbnN0OworICAgICAgICAgICAgaWYgKCFjb25kaXRpb25Jc0FsbG93ZWRD
b21wYXJpc29uV2l0aFZpZXdJRCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25k
aXRpb25Jc0FsbG93ZWRDb21wYXJpc29uV2l0aFZpZXdJRCA9CisgICAgICAgICAgICAgICAgICAg
IElzR0xWaWV3SURPVlIoYmluYXJ5Q29uZGl0aW9uLT5nZXRSaWdodCgpKSAmJgorICAgICAgICAg
ICAgICAgICAgICBiaW5hcnlDb25kaXRpb24tPmdldExlZnQoKS0+Z2V0QXNDb25zdGFudFVuaW9u
KCkgJiYKKyAgICAgICAgICAgICAgICAgICAgYmluYXJ5Q29uZGl0aW9uLT5nZXRMZWZ0KCktPmdl
dFF1YWxpZmllcigpID09IEV2cUNvbnN0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGlmIChjb25kaXRpb25Jc0FsbG93ZWRDb21wYXJpc29uV2l0aFZpZXdJRCkKKyAgICAgICAg
eworICAgICAgICAgICAgbUluc2lkZVZpZXdJRENvbmRpdGlvbmFsID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGlmIChub2RlLT5nZXRUcnVlQmxvY2soKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICB2YWxpZGF0ZUFuZFRyYXZlcnNlVmlld0lEQ29uZGl0aW9uYWxCbG9jayhub2RlLT5nZXRU
cnVlQmxvY2soKSwgImlmIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgbURpYWdub3N0aWNzLT5lcnJvcihub2RlLT5nZXRM
aW5lKCksICJFeHBlY3RlZCBhc3NpZ25tZW50IHRvIGdsX1Bvc2l0aW9uLngiLCAiaWYiKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChub2RlLT5nZXRGYWxzZUJsb2NrKCkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVBbmRUcmF2ZXJzZVZpZXdJRENvbmRp
dGlvbmFsQmxvY2sobm9kZS0+Z2V0RmFsc2VCbG9jaygpLCAiZWxzZSIpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgbUluc2lkZVZpZXdJRENvbmRpdGlvbmFsID0gZmFsc2U7CisgICAgICAg
IH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBub2RlLT5nZXRDb25kaXRp
b24oKS0+dHJhdmVyc2UodGhpcyk7CisgICAgICAgICAgICBpZiAobm9kZS0+Z2V0VHJ1ZUJsb2Nr
KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbm9kZS0+Z2V0VHJ1ZUJsb2NrKCkt
PnRyYXZlcnNlKHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5vZGUtPmdl
dEZhbHNlQmxvY2soKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBub2RlLT5nZXRG
YWxzZUJsb2NrKCktPnRyYXZlcnNlKHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
VmFsaWRhdGVNdWx0aXZpZXdUcmF2ZXJzZXI6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBU
SW50ZXJtQWdncmVnYXRlICpub2RlKQoreworICAgIGlmICh2aXNpdCA9PSBQcmVWaXNpdCAmJiAh
bU11bHRpdmlldzIgJiYgbUluc2lkZVJlc3RyaWN0ZWRBc3NpZ25tZW50KQorICAgIHsKKyAgICAg
ICAgLy8gQ2hlY2sgaWYgdGhlIG5vZGUgaXMgYW4gdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGNhbGwg
b3IgaWYgYW4gbC12YWx1ZSBpcyByZXF1aXJlZCwgb3IgaWYKKyAgICAgICAgLy8gdGhlcmUgYXJl
IHBvc3NpYmxlIHZpc2libGUgc2lkZSBlZmZlY3RzLCBzdWNoIGFzIGltYWdlIHdyaXRlcy4KKyAg
ICAgICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wQ2FsbEZ1bmN0aW9uSW5BU1QpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+ZXJyb3Iobm9kZS0+Z2V0TGluZSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGlzYWxsb3dlZCB1c2VyIGRlZmluZWQgZnVu
Y3Rpb24gY2FsbCBpbnNpZGUgYXNzaWdubWVudCB0byAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJnbF9Qb3NpdGlvbi54IHdoZW4gdXNpbmcgT1ZSX211bHRpdmlldyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldE9wZXJhdG9yU3RyaW5nKG5vZGUtPmdldE9w
KCkpKTsKKyAgICAgICAgICAgIG1WYWxpZCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIGVs
c2UgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wQ2FsbEJ1aWx0SW5GdW5jdGlvbiAmJgorICAgICAg
ICAgICAgICAgICBub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKS0+Z2V0TmFtZSgpID09ICJp
bWFnZVN0b3JlIikKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVE9ETyhvZXR1YWhvQG52aWRp
YS5jb20pOiBSZWNvcmQgd2hpY2ggYnVpbHQtaW4gZnVuY3Rpb25zIGhhdmUgc2lkZSBlZmZlY3Rz
IGluCisgICAgICAgICAgICAvLyB0aGUgc3ltYm9sIGluZm8gaW5zdGVhZC4KKyAgICAgICAgICAg
IG1EaWFnbm9zdGljcy0+ZXJyb3Iobm9kZS0+Z2V0TGluZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRGlzYWxsb3dlZCBmdW5jdGlvbiBjYWxsIHdpdGggc2lkZSBlZmZlY3Rz
IGluc2lkZSBhc3NpZ25tZW50ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRv
IGdsX1Bvc2l0aW9uLnggd2hlbiB1c2luZyBPVlJfbXVsdGl2aWV3IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2V0T3BlcmF0b3JTdHJpbmcobm9kZS0+Z2V0T3AoKSkpOworICAg
ICAgICAgICAgbVZhbGlkID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIW5v
ZGUtPmlzQ29uc3RydWN0b3IoKSkKKyAgICAgICAgeworICAgICAgICAgICAgVEZ1bmN0aW9uICpi
dWlsdEluRnVuYyA9IHN0YXRpY19jYXN0PFRGdW5jdGlvbiAqPigKKyAgICAgICAgICAgICAgICBt
U3ltYm9sVGFibGUuZmluZEJ1aWx0SW4obm9kZS0+Z2V0U3ltYm9sVGFibGVNYW5nbGVkTmFtZSgp
LCBtU2hhZGVyVmVyc2lvbikpOworICAgICAgICAgICAgZm9yIChzaXplX3QgcGFyYW1JbmRleCA9
IDB1OyBwYXJhbUluZGV4IDwgYnVpbHRJbkZ1bmMtPmdldFBhcmFtQ291bnQoKTsgKytwYXJhbUlu
ZGV4KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVy
ID0gYnVpbHRJbkZ1bmMtPmdldFBhcmFtKHBhcmFtSW5kZXgpLnR5cGUtPmdldFF1YWxpZmllcigp
OworICAgICAgICAgICAgICAgIGlmIChxdWFsaWZpZXIgPT0gRXZxT3V0IHx8IHF1YWxpZmllciA9
PSBFdnFJbk91dCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG1EaWFn
bm9zdGljcy0+ZXJyb3Iobm9kZS0+Z2V0TGluZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJEaXNhbGxvd2VkIHVzZSBvZiBhIGZ1bmN0aW9uIHdpdGggYW4gb3V0
IHBhcmFtZXRlciBpbnNpZGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJhc3NpZ25tZW50IHRvIGdsX1Bvc2l0aW9uLnggd2hlbiB1c2luZyBPVlJfbXVsdGl2aWV3
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZXRPcGVyYXRvclN0
cmluZyhub2RlLT5nZXRPcCgpKSk7CisgICAgICAgICAgICAgICAgICAgIG1WYWxpZCA9IGZhbHNl
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitib29sIFZh
bGlkYXRlTXVsdGl2aWV3V2ViR0woVEludGVybUJsb2NrICpyb290LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBzaGFkZXJUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IHNoYWRlclZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBtdWx0aXZpZXcyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFREaWFnbm9zdGlj
cyAqZGlhZ25vc3RpY3MpCit7CisgICAgaWYgKHNoYWRlclR5cGUgPT0gR0xfVkVSVEVYX1NIQURF
UiAmJiAhRmluZFN5bWJvbE5vZGUocm9vdCwgImdsX1ZpZXdJRF9PVlIiLCBFYnRVSW50KSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gVmFsaWRhdGVNdWx0
aXZpZXdUcmF2ZXJzZXI6OnZhbGlkYXRlKHJvb3QsIHNoYWRlclR5cGUsIHN5bWJvbFRhYmxlLCBz
aGFkZXJWZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbXVsdGl2aWV3MiwgZGlhZ25vc3RpY3MpOworfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1ZhbGlkYXRlTXVsdGl2aWV3V2ViR0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlTXVsdGl2aWV3V2ViR0wuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzcxYTAzZDE3MDcKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxp
ZGF0ZU11bHRpdmlld1dlYkdMLmgKQEAgLTAsMCArMSwzMyBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAwMi0yMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
Ky8vIFZhbGlkYXRlTXVsdGl2aWV3V2ViR0wuaDoKKy8vICAgVmFsaWRhdGUgdGhlIEFTVCBhY2Nv
cmRpbmcgdG8gcnVsZXMgaW4gdGhlIFdFQkdMX211bHRpdmlldyBleHRlbnNpb24gc3BlYy4gT25s
eSBjb3ZlcnMgdGhvc2UKKy8vICAgcnVsZXMgbm90IGFscmVhZHkgY292ZXJlZCBpbiBQYXJzZUNv
bnRleHQuCisvLworCisjaWZuZGVmIENPTVBJTEVSX1RSQU5TTEFUT1JfVkFMSURBVEVNVUxUSVZJ
RVdXRUJHTF9IXworI2RlZmluZSBDT01QSUxFUl9UUkFOU0xBVE9SX1ZBTElEQVRFTVVMVElWSUVX
V0VCR0xfSF8KKworI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyVmFycy5oIgorCituYW1lc3BhY2Ug
c2gKK3sKK2NsYXNzIFREaWFnbm9zdGljczsKK2NsYXNzIFRJbnRlcm1CbG9jazsKK2NsYXNzIFRT
eW1ib2xUYWJsZTsKKworLy8gQ2hlY2sgZm9yIGVycm9ycyBhbmQgb3V0cHV0IGVycm9yIG1lc3Nh
Z2VzIHdpdGggZGlhZ25vc3RpY3MuCisvLyBSZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIG5vIGVy
cm9ycy4KK2Jvb2wgVmFsaWRhdGVNdWx0aXZpZXdXZWJHTChUSW50ZXJtQmxvY2sgKnJvb3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkdMZW51bSBzaGFkZXJUeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNoYWRlclZlcnNpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBtdWx0aXZpZXcyLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MpOworCit9ICAvLyBuYW1lc3BhY2Ugc2gK
KworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1ZBTElEQVRFTVVMVElWSUVXV0VCR0xf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1ZhbGlkYXRlT3V0cHV0cy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU91dHB1dHMuY3BwCmluZGV4IDlmNWY4ZjU3N2Qy
Li4yN2FiODE0NjliZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVPdXRwdXRzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxpZGF0ZU91dHB1dHMuY3BwCkBA
IC02LDE3ICs2LDE2IEBACiAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRl
T3V0cHV0cy5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5mb1NpbmsuaCIKLSNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0luaXRpYWxpemVQYXJzZUNvbnRleHQuaCIKICNp
bmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1BhcnNlQ29udGV4dC5oIgogCituYW1lc3BhY2Ug
c2gKK3sKKwogbmFtZXNwYWNlCiB7Ci12b2lkIGVycm9yKGludCAqZXJyb3JDb3VudCwgVEluZm9T
aW5rQmFzZSAmc2luaywgY29uc3QgVEludGVybVN5bWJvbCAmc3ltYm9sLCBjb25zdCBjaGFyICpy
ZWFzb24pCit2b2lkIGVycm9yKGNvbnN0IFRJbnRlcm1TeW1ib2wgJnN5bWJvbCwgY29uc3QgY2hh
ciAqcmVhc29uLCBURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKQogewotICAgIHNpbmsucHJlZml4
KEVQcmVmaXhFcnJvcik7Ci0gICAgc2luay5sb2NhdGlvbihzeW1ib2wuZ2V0TGluZSgpKTsKLSAg
ICBzaW5rIDw8ICInIiA8PCBzeW1ib2wuZ2V0U3ltYm9sKCkgPDwgIicgOiAiIDw8IHJlYXNvbiA8
PCAiXG4iOwotICAgICgqZXJyb3JDb3VudCkrKzsKKyAgICBkaWFnbm9zdGljcy0+ZXJyb3Ioc3lt
Ym9sLmdldExpbmUoKSwgcmVhc29uLCBzeW1ib2wuZ2V0U3ltYm9sKCkuY19zdHIoKSk7CiB9CiAK
IH0gIC8vIG5hbWVzcGFjZQpAQCAtMjUsMTMgKzI0LDE0IEBAIFZhbGlkYXRlT3V0cHV0czo6VmFs
aWRhdGVPdXRwdXRzKGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciAmZXh0QmVoYXZpb3IsIGludCBt
YXhECiAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZhbHNlLCBmYWxzZSksCiAgICAgICBt
TWF4RHJhd0J1ZmZlcnMobWF4RHJhd0J1ZmZlcnMpLAogICAgICAgbUFsbG93VW5zcGVjaWZpZWRP
dXRwdXRMb2NhdGlvblJlc29sdXRpb24oCi0gICAgICAgICAgSXNFeHRlbnNpb25FbmFibGVkKGV4
dEJlaGF2aW9yLCAiR0xfRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQiKSkKKyAgICAgICAgICBJc0V4
dGVuc2lvbkVuYWJsZWQoZXh0QmVoYXZpb3IsICJHTF9FWFRfYmxlbmRfZnVuY19leHRlbmRlZCIp
KSwKKyAgICAgIG1Vc2VzRnJhZ0RlcHRoKGZhbHNlKQogewogfQogCiB2b2lkIFZhbGlkYXRlT3V0
cHV0czo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqc3ltYm9sKQogewotICAgIFRTdHJpbmcg
bmFtZSA9IHN5bWJvbC0+Z2V0U3ltYm9sKCk7CisgICAgVFN0cmluZyBuYW1lICAgICAgICAgPSBz
eW1ib2wtPmdldFN5bWJvbCgpOwogICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gc3ltYm9sLT5n
ZXRRdWFsaWZpZXIoKTsKIAogICAgIGlmIChtVmlzaXRlZFN5bWJvbHMuY291bnQobmFtZS5jX3N0
cigpKSA9PSAxKQpAQCAtNDEsMjEgKzQxLDI5IEBAIHZvaWQgVmFsaWRhdGVPdXRwdXRzOjp2aXNp
dFN5bWJvbChUSW50ZXJtU3ltYm9sICpzeW1ib2wpCiAKICAgICBpZiAocXVhbGlmaWVyID09IEV2
cUZyYWdtZW50T3V0KQogICAgIHsKLSAgICAgICAgaWYgKHN5bWJvbC0+Z2V0VHlwZSgpLmdldExh
eW91dFF1YWxpZmllcigpLmxvY2F0aW9uID09IC0xKQorICAgICAgICBpZiAoc3ltYm9sLT5nZXRU
eXBlKCkuZ2V0TGF5b3V0UXVhbGlmaWVyKCkubG9jYXRpb24gIT0gLTEpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIG1VbnNwZWNpZmllZExvY2F0aW9uT3V0cHV0cy5wdXNoX2JhY2soc3ltYm9sKTsK
KyAgICAgICAgICAgIG1PdXRwdXRzLnB1c2hfYmFjayhzeW1ib2wpOworICAgICAgICB9CisgICAg
ICAgIGVsc2UgaWYgKHN5bWJvbC0+Z2V0VHlwZSgpLmdldExheW91dFF1YWxpZmllcigpLnl1diA9
PSB0cnVlKQorICAgICAgICB7CisgICAgICAgICAgICBtWXV2T3V0cHV0cy5wdXNoX2JhY2soc3lt
Ym9sKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1P
dXRwdXRzLnB1c2hfYmFjayhzeW1ib2wpOworICAgICAgICAgICAgbVVuc3BlY2lmaWVkTG9jYXRp
b25PdXRwdXRzLnB1c2hfYmFjayhzeW1ib2wpOwogICAgICAgICB9CiAgICAgfQorICAgIGVsc2Ug
aWYgKHF1YWxpZmllciA9PSBFdnFGcmFnRGVwdGggfHwgcXVhbGlmaWVyID09IEV2cUZyYWdEZXB0
aEVYVCkKKyAgICB7CisgICAgICAgIG1Vc2VzRnJhZ0RlcHRoID0gdHJ1ZTsKKyAgICB9CiB9CiAK
LWludCBWYWxpZGF0ZU91dHB1dHM6OnZhbGlkYXRlQW5kQ291bnRFcnJvcnMoVEluZm9TaW5rQmFz
ZSAmc2luaykgY29uc3QKK3ZvaWQgVmFsaWRhdGVPdXRwdXRzOjp2YWxpZGF0ZShURGlhZ25vc3Rp
Y3MgKmRpYWdub3N0aWNzKSBjb25zdAogeworICAgIEFTU0VSVChkaWFnbm9zdGljcyk7CiAgICAg
T3V0cHV0VmVjdG9yIHZhbGlkT3V0cHV0cyhtTWF4RHJhd0J1ZmZlcnMpOwotICAgIGludCBlcnJv
ckNvdW50ID0gMDsKIAogICAgIGZvciAoY29uc3QgYXV0byAmc3ltYm9sIDogbU91dHB1dHMpCiAg
ICAgewpAQCAtNzUsNyArODMsNyBAQCBpbnQgVmFsaWRhdGVPdXRwdXRzOjp2YWxpZGF0ZUFuZENv
dW50RXJyb3JzKFRJbmZvU2lua0Jhc2UgJnNpbmspIGNvbnN0CiAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nc3RyZWFtIHN0cnN0cjsKICAgICAgICAgICAgICAgICAgICAgc3Ryc3RyIDw8
ICJjb25mbGljdGluZyBvdXRwdXQgbG9jYXRpb25zIHdpdGggcHJldmlvdXNseSBkZWZpbmVkIG91
dHB1dCAnIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgdmFsaWRPdXRwdXRzW29mZnNl
dExvY2F0aW9uXS0+Z2V0U3ltYm9sKCkgPDwgIiciOwotICAgICAgICAgICAgICAgICAgICBlcnJv
cigmZXJyb3JDb3VudCwgc2luaywgKnN5bWJvbCwgc3Ryc3RyLnN0cigpLmNfc3RyKCkpOworICAg
ICAgICAgICAgICAgICAgICBlcnJvcigqc3ltYm9sLCBzdHJzdHIuc3RyKCkuY19zdHIoKSwgZGlh
Z25vc3RpY3MpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgewpAQCAtODcsOSArOTUsMTAgQEAgaW50IFZhbGlkYXRlT3V0cHV0czo6dmFs
aWRhdGVBbmRDb3VudEVycm9ycyhUSW5mb1NpbmtCYXNlICZzaW5rKSBjb25zdAogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoZWxlbWVudENvdW50ID4gMCkKICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBlcnJvcigmZXJyb3JDb3VudCwgc2luaywgKnN5bWJvbCwKKyAgICAgICAgICAg
ICAgICBlcnJvcigqc3ltYm9sLAogICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRDb3VudCA+
IDEgPyAib3V0cHV0IGFycmF5IGxvY2F0aW9ucyB3b3VsZCBleGNlZWQgTUFYX0RSQVdfQlVGRkVS
UyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIm91dHB1dCBsb2Nh
dGlvbiBtdXN0IGJlIDwgTUFYX0RSQVdfQlVGRkVSUyIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgOiAib3V0cHV0IGxvY2F0aW9uIG11c3QgYmUgPCBNQVhfRFJBV19C
VUZGRVJTIiwKKyAgICAgICAgICAgICAgICAgICAgICBkaWFnbm9zdGljcyk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDAsOSArMTA5LDIzIEBAIGludCBWYWxpZGF0ZU91
dHB1dHM6OnZhbGlkYXRlQW5kQ291bnRFcnJvcnMoVEluZm9TaW5rQmFzZSAmc2luaykgY29uc3QK
ICAgICB7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byAmc3ltYm9sIDogbVVuc3BlY2lmaWVkTG9j
YXRpb25PdXRwdXRzKQogICAgICAgICB7Ci0gICAgICAgICAgICBlcnJvcigmZXJyb3JDb3VudCwg
c2luaywgKnN5bWJvbCwKLSAgICAgICAgICAgICAgICAgICJtdXN0IGV4cGxpY2l0bHkgc3BlY2lm
eSBhbGwgbG9jYXRpb25zIHdoZW4gdXNpbmcgbXVsdGlwbGUgZnJhZ21lbnQgb3V0cHV0cyIpOwor
ICAgICAgICAgICAgZXJyb3IoKnN5bWJvbCwKKyAgICAgICAgICAgICAgICAgICJtdXN0IGV4cGxp
Y2l0bHkgc3BlY2lmeSBhbGwgbG9jYXRpb25zIHdoZW4gdXNpbmcgbXVsdGlwbGUgZnJhZ21lbnQg
b3V0cHV0cyIsCisgICAgICAgICAgICAgICAgICBkaWFnbm9zdGljcyk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBpZiAoIW1ZdXZPdXRwdXRzLmVtcHR5KCkgJiYgKG1ZdXZPdXRwdXRzLnNpemUo
KSA+IDEgfHwgbVVzZXNGcmFnRGVwdGggfHwgIW1PdXRwdXRzLmVtcHR5KCkgfHwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICFtVW5zcGVjaWZpZWRMb2NhdGlvbk91dHB1dHMuZW1w
dHkoKSkpCisgICAgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJnN5bWJvbCA6IG1ZdXZPdXRw
dXRzKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJvcigqc3ltYm9sLAorICAgICAgICAgICAg
ICAgICAgIm5vdCBhbGxvd2VkIHRvIHNwZWNpZnkgeXV2IHF1YWxpZmllciB3aGVuIHVzaW5nIGRl
cHRoIG9yIG11bHRpcGxlIGNvbG9yICIKKyAgICAgICAgICAgICAgICAgICJmcmFnbWVudCBvdXRw
dXRzIiwKKyAgICAgICAgICAgICAgICAgIGRpYWdub3N0aWNzKTsKICAgICAgICAgfQogICAgIH0K
LSAgICByZXR1cm4gZXJyb3JDb3VudDsKIH0KKworfSAgLy8gbmFtZXNwYWNlIHNoCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYWxp
ZGF0ZU91dHB1dHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL1ZhbGlkYXRlT3V0cHV0cy5oCmluZGV4IDAxMjJjYTI1ZmUzLi5jOTI4MmQyYmQ5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvVmFsaWRhdGVPdXRwdXRzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVPdXRwdXRzLmgKQEAgLTEyLDYgKzEyLDkgQEAKIAog
I2luY2x1ZGUgPHNldD4KIAorbmFtZXNwYWNlIHNoCit7CisKIGNsYXNzIFRJbmZvU2lua0Jhc2U7
CiAKIGNsYXNzIFZhbGlkYXRlT3V0cHV0cyA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCkBAIC0x
OSwxOCArMjIsMjIgQEAgY2xhc3MgVmFsaWRhdGVPdXRwdXRzIDogcHVibGljIFRJbnRlcm1UcmF2
ZXJzZXIKICAgcHVibGljOgogICAgIFZhbGlkYXRlT3V0cHV0cyhjb25zdCBURXh0ZW5zaW9uQmVo
YXZpb3IgJmV4dEJlaGF2aW9yLCBpbnQgbWF4RHJhd0J1ZmZlcnMpOwogCi0gICAgaW50IHZhbGlk
YXRlQW5kQ291bnRFcnJvcnMoVEluZm9TaW5rQmFzZSAmc2luaykgY29uc3Q7CisgICAgdm9pZCB2
YWxpZGF0ZShURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzKSBjb25zdDsKIAogICAgIHZvaWQgdmlz
aXRTeW1ib2woVEludGVybVN5bWJvbCAqKSBvdmVycmlkZTsKIAogICBwcml2YXRlOgogICAgIGlu
dCBtTWF4RHJhd0J1ZmZlcnM7CiAgICAgYm9vbCBtQWxsb3dVbnNwZWNpZmllZE91dHB1dExvY2F0
aW9uUmVzb2x1dGlvbjsKKyAgICBib29sIG1Vc2VzRnJhZ0RlcHRoOwogCiAgICAgdHlwZWRlZiBz
dGQ6OnZlY3RvcjxUSW50ZXJtU3ltYm9sICo+IE91dHB1dFZlY3RvcjsKICAgICBPdXRwdXRWZWN0
b3IgbU91dHB1dHM7CiAgICAgT3V0cHV0VmVjdG9yIG1VbnNwZWNpZmllZExvY2F0aW9uT3V0cHV0
czsKKyAgICBPdXRwdXRWZWN0b3IgbVl1dk91dHB1dHM7CiAgICAgc3RkOjpzZXQ8c3RkOjpzdHJp
bmc+IG1WaXNpdGVkU3ltYm9sczsKIH07CiAKLSNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9S
X1ZBTElEQVRFT1VUUFVUU19IXworfSAgLy8gbmFtZXNwYWNlIHNoCisKKyNlbmRpZiAgLy8gQ09N
UElMRVJfVFJBTlNMQVRPUl9WQUxJREFURU9VVFBVVFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRlU3dpdGNoLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlk
YXRlU3dpdGNoLmNwcAppbmRleCA4ZmJkODMyNWJiMC4uNjA5MWM3MjM5M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhbGlkYXRl
U3dpdGNoLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJh
bnNsYXRvci9WYWxpZGF0ZVN3aXRjaC5jcHAKQEAgLTYsMjMgKzYsNjkgQEAKIAogI2luY2x1ZGUg
ImNvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRhdGVTd2l0Y2guaCIKIAotI2luY2x1ZGUgImNvbXBp
bGVyL3RyYW5zbGF0b3IvUGFyc2VDb250ZXh0LmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNs
YXRvci9JbnRlcm1Ob2RlLmgiCisjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9EaWFnbm9z
dGljcy5oIgorCituYW1lc3BhY2Ugc2gKK3sKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIFZhbGlk
YXRlU3dpdGNoIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKK3sKKyAgcHVibGljOgorICAgIHN0
YXRpYyBib29sIHZhbGlkYXRlKFRCYXNpY1R5cGUgc3dpdGNoVHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIFRJbnRlcm1CbG9jayAqc3RhdGVtZW50TGlzdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBUU291cmNlTG9jICZsb2MpOworCisgICAgdm9pZCB2aXNpdFN5bWJvbChUSW50
ZXJtU3ltYm9sICopIG92ZXJyaWRlOworICAgIHZvaWQgdmlzaXRDb25zdGFudFVuaW9uKFRJbnRl
cm1Db25zdGFudFVuaW9uICopIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQs
IFRJbnRlcm1CaW5hcnkgKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0LCBU
SW50ZXJtVW5hcnkgKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdFRlcm5hcnkoVmlzaXQsIFRJ
bnRlcm1UZXJuYXJ5ICopIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRJZkVsc2UoVmlzaXQgdmlz
aXQsIFRJbnRlcm1JZkVsc2UgKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdFN3aXRjaChWaXNp
dCwgVEludGVybVN3aXRjaCAqKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0Q2FzZShWaXNpdCwg
VEludGVybUNhc2UgKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlz
aXQsIFRJbnRlcm1BZ2dyZWdhdGUgKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdExvb3AoVmlz
aXQgdmlzaXQsIFRJbnRlcm1Mb29wICopIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXRCcmFuY2go
VmlzaXQsIFRJbnRlcm1CcmFuY2ggKikgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICBWYWxp
ZGF0ZVN3aXRjaChUQmFzaWNUeXBlIHN3aXRjaFR5cGUsIFREaWFnbm9zdGljcyAqY29udGV4dCk7
CisKKyAgICBib29sIHZhbGlkYXRlSW50ZXJuYWwoY29uc3QgVFNvdXJjZUxvYyAmbG9jKTsKKwor
ICAgIFRCYXNpY1R5cGUgbVN3aXRjaFR5cGU7CisgICAgVERpYWdub3N0aWNzICptRGlhZ25vc3Rp
Y3M7CisgICAgYm9vbCBtQ2FzZVR5cGVNaXNtYXRjaDsKKyAgICBib29sIG1GaXJzdENhc2VGb3Vu
ZDsKKyAgICBib29sIG1TdGF0ZW1lbnRCZWZvcmVDYXNlOworICAgIGJvb2wgbUxhc3RTdGF0ZW1l
bnRXYXNDYXNlOworICAgIGludCBtQ29udHJvbEZsb3dEZXB0aDsKKyAgICBib29sIG1DYXNlSW5z
aWRlQ29udHJvbEZsb3c7CisgICAgaW50IG1EZWZhdWx0Q291bnQ7CisgICAgc3RkOjpzZXQ8aW50
PiBtQ2FzZXNTaWduZWQ7CisgICAgc3RkOjpzZXQ8dW5zaWduZWQgaW50PiBtQ2FzZXNVbnNpZ25l
ZDsKKyAgICBib29sIG1EdXBsaWNhdGVDYXNlczsKK307CiAKIGJvb2wgVmFsaWRhdGVTd2l0Y2g6
OnZhbGlkYXRlKFRCYXNpY1R5cGUgc3dpdGNoVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRQYXJzZUNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVEludGVybUJsb2NrICpzdGF0ZW1lbnRMaXN0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKQogewotICAgIFZhbGlkYXRlU3dpdGNoIHZh
bGlkYXRlKHN3aXRjaFR5cGUsIGNvbnRleHQpOworICAgIFZhbGlkYXRlU3dpdGNoIHZhbGlkYXRl
KHN3aXRjaFR5cGUsIGRpYWdub3N0aWNzKTsKICAgICBBU1NFUlQoc3RhdGVtZW50TGlzdCk7CiAg
ICAgc3RhdGVtZW50TGlzdC0+dHJhdmVyc2UoJnZhbGlkYXRlKTsKICAgICByZXR1cm4gdmFsaWRh
dGUudmFsaWRhdGVJbnRlcm5hbChsb2MpOwogfQogCi1WYWxpZGF0ZVN3aXRjaDo6VmFsaWRhdGVT
d2l0Y2goVEJhc2ljVHlwZSBzd2l0Y2hUeXBlLCBUUGFyc2VDb250ZXh0ICpjb250ZXh0KQorVmFs
aWRhdGVTd2l0Y2g6OlZhbGlkYXRlU3dpdGNoKFRCYXNpY1R5cGUgc3dpdGNoVHlwZSwgVERpYWdu
b3N0aWNzICpkaWFnbm9zdGljcykKICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2Us
IHRydWUpLAogICAgICAgbVN3aXRjaFR5cGUoc3dpdGNoVHlwZSksCi0gICAgICBtQ29udGV4dChj
b250ZXh0KSwKKyAgICAgIG1EaWFnbm9zdGljcyhkaWFnbm9zdGljcyksCiAgICAgICBtQ2FzZVR5
cGVNaXNtYXRjaChmYWxzZSksCiAgICAgICBtRmlyc3RDYXNlRm91bmQoZmFsc2UpLAogICAgICAg
bVN0YXRlbWVudEJlZm9yZUNhc2UoZmFsc2UpLApAQCAtMzEsMTMgKzc3LDE0IEBAIFZhbGlkYXRl
U3dpdGNoOjpWYWxpZGF0ZVN3aXRjaChUQmFzaWNUeXBlIHN3aXRjaFR5cGUsIFRQYXJzZUNvbnRl
eHQgKmNvbnRleHQpCiAgICAgICBtQ2FzZUluc2lkZUNvbnRyb2xGbG93KGZhbHNlKSwKICAgICAg
IG1EZWZhdWx0Q291bnQoMCksCiAgICAgICBtRHVwbGljYXRlQ2FzZXMoZmFsc2UpCi17fQorewor
fQogCiB2b2lkIFZhbGlkYXRlU3dpdGNoOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICopCiB7
CiAgICAgaWYgKCFtRmlyc3RDYXNlRm91bmQpCiAgICAgICAgIG1TdGF0ZW1lbnRCZWZvcmVDYXNl
ID0gdHJ1ZTsKLSAgICBtTGFzdFN0YXRlbWVudFdhc0Nhc2UgPSBmYWxzZTsKKyAgICBtTGFzdFN0
YXRlbWVudFdhc0Nhc2UgICAgPSBmYWxzZTsKIH0KIAogdm9pZCBWYWxpZGF0ZVN3aXRjaDo6dmlz
aXRDb25zdGFudFVuaW9uKFRJbnRlcm1Db25zdGFudFVuaW9uICopCkBAIC00NiwxNCArOTMsMTQg
QEAgdm9pZCBWYWxpZGF0ZVN3aXRjaDo6dmlzaXRDb25zdGFudFVuaW9uKFRJbnRlcm1Db25zdGFu
dFVuaW9uICopCiAgICAgLy8gQ291bGQgYmUganVzdCBhIHN0YXRlbWVudCBsaWtlICIwOyIKICAg
ICBpZiAoIW1GaXJzdENhc2VGb3VuZCkKICAgICAgICAgbVN0YXRlbWVudEJlZm9yZUNhc2UgPSB0
cnVlOwotICAgIG1MYXN0U3RhdGVtZW50V2FzQ2FzZSA9IGZhbHNlOworICAgIG1MYXN0U3RhdGVt
ZW50V2FzQ2FzZSAgICA9IGZhbHNlOwogfQogCiBib29sIFZhbGlkYXRlU3dpdGNoOjp2aXNpdEJp
bmFyeShWaXNpdCwgVEludGVybUJpbmFyeSAqKQogewogICAgIGlmICghbUZpcnN0Q2FzZUZvdW5k
KQogICAgICAgICBtU3RhdGVtZW50QmVmb3JlQ2FzZSA9IHRydWU7Ci0gICAgbUxhc3RTdGF0ZW1l
bnRXYXNDYXNlID0gZmFsc2U7CisgICAgbUxhc3RTdGF0ZW1lbnRXYXNDYXNlICAgID0gZmFsc2U7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTY5LDcgKzExNiw3IEBAIGJvb2wgVmFsaWRhdGVT
d2l0Y2g6OnZpc2l0VGVybmFyeShWaXNpdCwgVEludGVybVRlcm5hcnkgKikKIHsKICAgICBpZiAo
IW1GaXJzdENhc2VGb3VuZCkKICAgICAgICAgbVN0YXRlbWVudEJlZm9yZUNhc2UgPSB0cnVlOwot
ICAgIG1MYXN0U3RhdGVtZW50V2FzQ2FzZSA9IGZhbHNlOworICAgIG1MYXN0U3RhdGVtZW50V2Fz
Q2FzZSAgICA9IGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC04MSw3ICsxMjgsNyBA
QCBib29sIFZhbGlkYXRlU3dpdGNoOjp2aXNpdElmRWxzZShWaXNpdCB2aXNpdCwgVEludGVybUlm
RWxzZSAqKQogICAgICAgICAtLW1Db250cm9sRmxvd0RlcHRoOwogICAgIGlmICghbUZpcnN0Q2Fz
ZUZvdW5kKQogICAgICAgICBtU3RhdGVtZW50QmVmb3JlQ2FzZSA9IHRydWU7Ci0gICAgbUxhc3RT
dGF0ZW1lbnRXYXNDYXNlID0gZmFsc2U7CisgICAgbUxhc3RTdGF0ZW1lbnRXYXNDYXNlICAgID0g
ZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTg5LDcgKzEzNiw3IEBAIGJvb2wgVmFs
aWRhdGVTd2l0Y2g6OnZpc2l0U3dpdGNoKFZpc2l0LCBUSW50ZXJtU3dpdGNoICopCiB7CiAgICAg
aWYgKCFtRmlyc3RDYXNlRm91bmQpCiAgICAgICAgIG1TdGF0ZW1lbnRCZWZvcmVDYXNlID0gdHJ1
ZTsKLSAgICBtTGFzdFN0YXRlbWVudFdhc0Nhc2UgPSBmYWxzZTsKKyAgICBtTGFzdFN0YXRlbWVu
dFdhc0Nhc2UgICAgPSBmYWxzZTsKICAgICAvLyBEb24ndCBnbyBpbnRvIG5lc3RlZCBzd2l0Y2gg
c3RhdGVtZW50cwogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTk5LDE3ICsxNDYsMTcgQEAgYm9v
bCBWYWxpZGF0ZVN3aXRjaDo6dmlzaXRDYXNlKFZpc2l0LCBUSW50ZXJtQ2FzZSAqbm9kZSkKICAg
ICBjb25zdCBjaGFyICpub2RlU3RyID0gbm9kZS0+aGFzQ29uZGl0aW9uKCkgPyAiY2FzZSIgOiAi
ZGVmYXVsdCI7CiAgICAgaWYgKG1Db250cm9sRmxvd0RlcHRoID4gMCkKICAgICB7Ci0gICAgICAg
IG1Db250ZXh0LT5lcnJvcihub2RlLT5nZXRMaW5lKCksICJsYWJlbCBzdGF0ZW1lbnQgbmVzdGVk
IGluc2lkZSBjb250cm9sIGZsb3ciLCBub2RlU3RyKTsKKyAgICAgICAgbURpYWdub3N0aWNzLT5l
cnJvcihub2RlLT5nZXRMaW5lKCksICJsYWJlbCBzdGF0ZW1lbnQgbmVzdGVkIGluc2lkZSBjb250
cm9sIGZsb3ciLCBub2RlU3RyKTsKICAgICAgICAgbUNhc2VJbnNpZGVDb250cm9sRmxvdyA9IHRy
dWU7CiAgICAgfQotICAgIG1GaXJzdENhc2VGb3VuZCA9IHRydWU7CisgICAgbUZpcnN0Q2FzZUZv
dW5kICAgICAgID0gdHJ1ZTsKICAgICBtTGFzdFN0YXRlbWVudFdhc0Nhc2UgPSB0cnVlOwogICAg
IGlmICghbm9kZS0+aGFzQ29uZGl0aW9uKCkpCiAgICAgewogICAgICAgICArK21EZWZhdWx0Q291
bnQ7CiAgICAgICAgIGlmIChtRGVmYXVsdENvdW50ID4gMSkKICAgICAgICAgewotICAgICAgICAg
ICAgbUNvbnRleHQtPmVycm9yKG5vZGUtPmdldExpbmUoKSwgImR1cGxpY2F0ZSBkZWZhdWx0IGxh
YmVsIiwgbm9kZVN0cik7CisgICAgICAgICAgICBtRGlhZ25vc3RpY3MtPmVycm9yKG5vZGUtPmdl
dExpbmUoKSwgImR1cGxpY2F0ZSBkZWZhdWx0IGxhYmVsIiwgbm9kZVN0cik7CiAgICAgICAgIH0K
ICAgICB9CiAgICAgZWxzZQpAQCAtMTIzLDggKzE3MCw5IEBAIGJvb2wgVmFsaWRhdGVTd2l0Y2g6
OnZpc2l0Q2FzZShWaXNpdCwgVEludGVybUNhc2UgKm5vZGUpCiAgICAgICAgIFRCYXNpY1R5cGUg
Y29uZGl0aW9uVHlwZSA9IGNvbmRpdGlvbi0+Z2V0QmFzaWNUeXBlKCk7CiAgICAgICAgIGlmIChj
b25kaXRpb25UeXBlICE9IG1Td2l0Y2hUeXBlKQogICAgICAgICB7Ci0gICAgICAgICAgICBtQ29u
dGV4dC0+ZXJyb3IoY29uZGl0aW9uLT5nZXRMaW5lKCksCi0gICAgICAgICAgICAgICAgImNhc2Ug
bGFiZWwgdHlwZSBkb2VzIG5vdCBtYXRjaCBzd2l0Y2ggaW5pdC1leHByZXNzaW9uIHR5cGUiLCBu
b2RlU3RyKTsKKyAgICAgICAgICAgIG1EaWFnbm9zdGljcy0+ZXJyb3IoY29uZGl0aW9uLT5nZXRM
aW5lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYXNlIGxhYmVsIHR5cGUg
ZG9lcyBub3QgbWF0Y2ggc3dpdGNoIGluaXQtZXhwcmVzc2lvbiB0eXBlIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZVN0cik7CiAgICAgICAgICAgICBtQ2FzZVR5cGVNaXNt
YXRjaCA9IHRydWU7CiAgICAgICAgIH0KIApAQCAtMTMzLDcgKzE4MSw3IEBAIGJvb2wgVmFsaWRh
dGVTd2l0Y2g6OnZpc2l0Q2FzZShWaXNpdCwgVEludGVybUNhc2UgKm5vZGUpCiAgICAgICAgICAg
ICBpbnQgaUNvbnN0ID0gY29uZGl0aW9uLT5nZXRJQ29uc3QoMCk7CiAgICAgICAgICAgICBpZiAo
bUNhc2VzU2lnbmVkLmZpbmQoaUNvbnN0KSAhPSBtQ2FzZXNTaWduZWQuZW5kKCkpCiAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgbUNvbnRleHQtPmVycm9yKGNvbmRpdGlvbi0+Z2V0TGlu
ZSgpLCAiZHVwbGljYXRlIGNhc2UgbGFiZWwiLCBub2RlU3RyKTsKKyAgICAgICAgICAgICAgICBt
RGlhZ25vc3RpY3MtPmVycm9yKGNvbmRpdGlvbi0+Z2V0TGluZSgpLCAiZHVwbGljYXRlIGNhc2Ug
bGFiZWwiLCBub2RlU3RyKTsKICAgICAgICAgICAgICAgICBtRHVwbGljYXRlQ2FzZXMgPSB0cnVl
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQpAQCAtMTQ2LDcgKzE5NCw3IEBAIGJv
b2wgVmFsaWRhdGVTd2l0Y2g6OnZpc2l0Q2FzZShWaXNpdCwgVEludGVybUNhc2UgKm5vZGUpCiAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgdUNvbnN0ID0gY29uZGl0aW9uLT5nZXRVQ29uc3QoMCk7
CiAgICAgICAgICAgICBpZiAobUNhc2VzVW5zaWduZWQuZmluZCh1Q29uc3QpICE9IG1DYXNlc1Vu
c2lnbmVkLmVuZCgpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1Db250ZXh0LT5l
cnJvcihjb25kaXRpb24tPmdldExpbmUoKSwgImR1cGxpY2F0ZSBjYXNlIGxhYmVsIiwgbm9kZVN0
cik7CisgICAgICAgICAgICAgICAgbURpYWdub3N0aWNzLT5lcnJvcihjb25kaXRpb24tPmdldExp
bmUoKSwgImR1cGxpY2F0ZSBjYXNlIGxhYmVsIiwgbm9kZVN0cik7CiAgICAgICAgICAgICAgICAg
bUR1cGxpY2F0ZUNhc2VzID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UK
QEAgLTE2OCw3ICsyMTYsNyBAQCBib29sIFZhbGlkYXRlU3dpdGNoOjp2aXNpdEFnZ3JlZ2F0ZShW
aXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqKQogICAgICAgICAvLyBUaGlzIGlzIG5vdCB0
aGUgc3RhdGVtZW50TGlzdCBub2RlLCBidXQgc29tZSBvdGhlciBub2RlLgogICAgICAgICBpZiAo
IW1GaXJzdENhc2VGb3VuZCkKICAgICAgICAgICAgIG1TdGF0ZW1lbnRCZWZvcmVDYXNlID0gdHJ1
ZTsKLSAgICAgICAgbUxhc3RTdGF0ZW1lbnRXYXNDYXNlID0gZmFsc2U7CisgICAgICAgIG1MYXN0
U3RhdGVtZW50V2FzQ2FzZSAgICA9IGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0K
QEAgLTE4MSw3ICsyMjksNyBAQCBib29sIFZhbGlkYXRlU3dpdGNoOjp2aXNpdExvb3AoVmlzaXQg
dmlzaXQsIFRJbnRlcm1Mb29wICopCiAgICAgICAgIC0tbUNvbnRyb2xGbG93RGVwdGg7CiAgICAg
aWYgKCFtRmlyc3RDYXNlRm91bmQpCiAgICAgICAgIG1TdGF0ZW1lbnRCZWZvcmVDYXNlID0gdHJ1
ZTsKLSAgICBtTGFzdFN0YXRlbWVudFdhc0Nhc2UgPSBmYWxzZTsKKyAgICBtTGFzdFN0YXRlbWVu
dFdhc0Nhc2UgICAgPSBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTg5LDcgKzIz
Nyw3IEBAIGJvb2wgVmFsaWRhdGVTd2l0Y2g6OnZpc2l0QnJhbmNoKFZpc2l0LCBUSW50ZXJtQnJh
bmNoICopCiB7CiAgICAgaWYgKCFtRmlyc3RDYXNlRm91bmQpCiAgICAgICAgIG1TdGF0ZW1lbnRC
ZWZvcmVDYXNlID0gdHJ1ZTsKLSAgICBtTGFzdFN0YXRlbWVudFdhc0Nhc2UgPSBmYWxzZTsKKyAg
ICBtTGFzdFN0YXRlbWVudFdhc0Nhc2UgICAgPSBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtMTk3LDE0ICsyNDUsMjYgQEAgYm9vbCBWYWxpZGF0ZVN3aXRjaDo6dmFsaWRhdGVJbnRl
cm5hbChjb25zdCBUU291cmNlTG9jICZsb2MpCiB7CiAgICAgaWYgKG1TdGF0ZW1lbnRCZWZvcmVD
YXNlKQogICAgIHsKLSAgICAgICAgbUNvbnRleHQtPmVycm9yKGxvYywKLSAgICAgICAgICAgICJz
dGF0ZW1lbnQgYmVmb3JlIHRoZSBmaXJzdCBsYWJlbCIsICJzd2l0Y2giKTsKKyAgICAgICAgbURp
YWdub3N0aWNzLT5lcnJvcihsb2MsICJzdGF0ZW1lbnQgYmVmb3JlIHRoZSBmaXJzdCBsYWJlbCIs
ICJzd2l0Y2giKTsKICAgICB9CiAgICAgaWYgKG1MYXN0U3RhdGVtZW50V2FzQ2FzZSkKICAgICB7
Ci0gICAgICAgIG1Db250ZXh0LT5lcnJvcihsb2MsCi0gICAgICAgICAgICAibm8gc3RhdGVtZW50
IGJldHdlZW4gdGhlIGxhc3QgbGFiZWwgYW5kIHRoZSBlbmQgb2YgdGhlIHN3aXRjaCBzdGF0ZW1l
bnQiLCAic3dpdGNoIik7CisgICAgICAgIG1EaWFnbm9zdGljcy0+ZXJyb3IoCisgICAgICAgICAg
ICBsb2MsICJubyBzdGF0ZW1lbnQgYmV0d2VlbiB0aGUgbGFzdCBsYWJlbCBhbmQgdGhlIGVuZCBv
ZiB0aGUgc3dpdGNoIHN0YXRlbWVudCIsCisgICAgICAgICAgICAic3dpdGNoIik7CiAgICAgfQog
ICAgIHJldHVybiAhbVN0YXRlbWVudEJlZm9yZUNhc2UgJiYgIW1MYXN0U3RhdGVtZW50V2FzQ2Fz
ZSAmJiAhbUNhc2VJbnNpZGVDb250cm9sRmxvdyAmJgotICAgICAgICAhbUNhc2VUeXBlTWlzbWF0
Y2ggJiYgbURlZmF1bHRDb3VudCA8PSAxICYmICFtRHVwbGljYXRlQ2FzZXM7CisgICAgICAgICAg
ICFtQ2FzZVR5cGVNaXNtYXRjaCAmJiBtRGVmYXVsdENvdW50IDw9IDEgJiYgIW1EdXBsaWNhdGVD
YXNlczsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitib29sIFZhbGlkYXRlU3dp
dGNoU3RhdGVtZW50TGlzdChUQmFzaWNUeXBlIHN3aXRjaFR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBURGlhZ25vc3RpY3MgKmRpYWdub3N0aWNzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVEludGVybUJsb2NrICpzdGF0ZW1lbnRMaXN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFNvdXJjZUxvYyAmbG9jKQoreworICAg
IHJldHVybiBWYWxpZGF0ZVN3aXRjaDo6dmFsaWRhdGUoc3dpdGNoVHlwZSwgZGlhZ25vc3RpY3Ms
IHN0YXRlbWVudExpc3QsIGxvYyk7CiB9CisKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFsaWRh
dGVTd2l0Y2guaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1ZhbGlkYXRlU3dpdGNoLmgKaW5kZXggOWM2ZGVlMjEyOGUuLjc1NzgyMGExNjRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9W
YWxpZGF0ZVN3aXRjaC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL1ZhbGlkYXRlU3dpdGNoLmgKQEAgLTcsNDkgKzcsMjEgQEAKICNpZm5kZWYg
Q09NUElMRVJfVFJBTlNMQVRPUl9WQUxJREFURVNXSVRDSF9IXwogI2RlZmluZSBDT01QSUxFUl9U
UkFOU0xBVE9SX1ZBTElEQVRFU1dJVENIX0hfCiAKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xh
dG9yL0ludGVybU5vZGUuaCIKKyNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0Jhc2VUeXBl
cy5oIgorI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvQ29tbW9uLmgiCiAKLWNsYXNzIFRQ
YXJzZUNvbnRleHQ7Ci0KLWNsYXNzIFZhbGlkYXRlU3dpdGNoIDogcHVibGljIFRJbnRlcm1UcmF2
ZXJzZXIKK25hbWVzcGFjZSBzaAogewotICBwdWJsaWM6Ci0gICAgLy8gQ2hlY2sgZm9yIGVycm9y
cyBhbmQgb3V0cHV0IG1lc3NhZ2VzIGFueSByZW1haW5pbmcgZXJyb3JzIG9uIHRoZSBjb250ZXh0
LgotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgbm8gZXJyb3JzLgotICAgIHN0YXRp
YyBib29sIHZhbGlkYXRlKFRCYXNpY1R5cGUgc3dpdGNoVHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBUUGFyc2VDb250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAg
IFRJbnRlcm1CbG9jayAqc3RhdGVtZW50TGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBUU291cmNlTG9jICZsb2MpOwotCi0gICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3lt
Ym9sICopIG92ZXJyaWRlOwotICAgIHZvaWQgdmlzaXRDb25zdGFudFVuaW9uKFRJbnRlcm1Db25z
dGFudFVuaW9uICopIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRCaW5hcnkoVmlzaXQsIFRJbnRl
cm1CaW5hcnkgKikgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0LCBUSW50ZXJt
VW5hcnkgKikgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNpdFRlcm5hcnkoVmlzaXQsIFRJbnRlcm1U
ZXJuYXJ5ICopIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRJZkVsc2UoVmlzaXQgdmlzaXQsIFRJ
bnRlcm1JZkVsc2UgKikgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNpdFN3aXRjaChWaXNpdCwgVElu
dGVybVN3aXRjaCAqKSBvdmVycmlkZTsKLSAgICBib29sIHZpc2l0Q2FzZShWaXNpdCwgVEludGVy
bUNhc2UgKm5vZGUpIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJ
bnRlcm1BZ2dyZWdhdGUgKikgb3ZlcnJpZGU7Ci0gICAgYm9vbCB2aXNpdExvb3AoVmlzaXQgdmlz
aXQsIFRJbnRlcm1Mb29wICopIG92ZXJyaWRlOwotICAgIGJvb2wgdmlzaXRCcmFuY2goVmlzaXQs
IFRJbnRlcm1CcmFuY2ggKikgb3ZlcnJpZGU7Ci0KLSAgcHJpdmF0ZToKLSAgICBWYWxpZGF0ZVN3
aXRjaChUQmFzaWNUeXBlIHN3aXRjaFR5cGUsIFRQYXJzZUNvbnRleHQgKmNvbnRleHQpOworY2xh
c3MgVERpYWdub3N0aWNzOworY2xhc3MgVEludGVybUJsb2NrOwogCi0gICAgYm9vbCB2YWxpZGF0
ZUludGVybmFsKGNvbnN0IFRTb3VyY2VMb2MgJmxvYyk7CisvLyBDaGVjayBmb3IgZXJyb3JzIGFu
ZCBvdXRwdXQgZXJyb3IgbWVzc2FnZXMgb24gdGhlIGNvbnRleHQuCisvLyBSZXR1cm5zIHRydWUg
aWYgdGhlcmUgYXJlIG5vIGVycm9ycy4KK2Jvb2wgVmFsaWRhdGVTd2l0Y2hTdGF0ZW1lbnRMaXN0
KFRCYXNpY1R5cGUgc3dpdGNoVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFREaWFnbm9zdGljcyAqZGlhZ25vc3RpY3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUSW50ZXJtQmxvY2sgKnN0YXRlbWVudExpc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUU291cmNlTG9jICZsb2MpOwogCi0gICAgVEJhc2ljVHlwZSBtU3dp
dGNoVHlwZTsKLSAgICBUUGFyc2VDb250ZXh0ICptQ29udGV4dDsKLSAgICBib29sIG1DYXNlVHlw
ZU1pc21hdGNoOwotICAgIGJvb2wgbUZpcnN0Q2FzZUZvdW5kOwotICAgIGJvb2wgbVN0YXRlbWVu
dEJlZm9yZUNhc2U7Ci0gICAgYm9vbCBtTGFzdFN0YXRlbWVudFdhc0Nhc2U7Ci0gICAgaW50IG1D
b250cm9sRmxvd0RlcHRoOwotICAgIGJvb2wgbUNhc2VJbnNpZGVDb250cm9sRmxvdzsKLSAgICBp
bnQgbURlZmF1bHRDb3VudDsKLSAgICBzdGQ6OnNldDxpbnQ+IG1DYXNlc1NpZ25lZDsKLSAgICBz
dGQ6OnNldDx1bnNpZ25lZCBpbnQ+IG1DYXNlc1Vuc2lnbmVkOwotICAgIGJvb2wgbUR1cGxpY2F0
ZUNhc2VzOwotfTsKK30gIC8vIG5hbWVzcGFjZSBzaAogCi0jZW5kaWYgLy8gQ09NUElMRVJfVFJB
TlNMQVRPUl9WQUxJREFURVNXSVRDSF9IXworI2VuZGlmICAvLyBDT01QSUxFUl9UUkFOU0xBVE9S
X1ZBTElEQVRFU1dJVENIX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYXJpYWJsZUluZm8uY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVJbmZvLmNwcAppbmRleCA3
ZTFlNWNkODJhMS4uYTIwMWI0YzZkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZhcmlhYmxlSW5mby5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVJbmZvLmNw
cApAQCAtMjAsMTAgKzIwLDE1IEBAIEJsb2NrTGF5b3V0VHlwZSBHZXRCbG9ja0xheW91dFR5cGUo
VExheW91dEJsb2NrU3RvcmFnZSBibG9ja1N0b3JhZ2UpCiB7CiAgICAgc3dpdGNoIChibG9ja1N0
b3JhZ2UpCiAgICAgewotICAgICAgY2FzZSBFYnNQYWNrZWQ6ICAgICAgICAgcmV0dXJuIEJMT0NL
TEFZT1VUX1BBQ0tFRDsKLSAgICAgIGNhc2UgRWJzU2hhcmVkOiAgICAgICAgIHJldHVybiBCTE9D
S0xBWU9VVF9TSEFSRUQ7Ci0gICAgICBjYXNlIEVic1N0ZDE0MDogICAgICAgICByZXR1cm4gQkxP
Q0tMQVlPVVRfU1RBTkRBUkQ7Ci0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyByZXR1cm4g
QkxPQ0tMQVlPVVRfU0hBUkVEOworICAgICAgICBjYXNlIEVic1BhY2tlZDoKKyAgICAgICAgICAg
IHJldHVybiBCTE9DS0xBWU9VVF9QQUNLRUQ7CisgICAgICAgIGNhc2UgRWJzU2hhcmVkOgorICAg
ICAgICAgICAgcmV0dXJuIEJMT0NLTEFZT1VUX1NIQVJFRDsKKyAgICAgICAgY2FzZSBFYnNTdGQx
NDA6CisgICAgICAgICAgICByZXR1cm4gQkxPQ0tMQVlPVVRfU1RBTkRBUkQ7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIEJM
T0NLTEFZT1VUX1NIQVJFRDsKICAgICB9CiB9CiAKQEAgLTQwLDE3ICs0NSwxMyBAQCB2b2lkIEV4
cGFuZFVzZXJEZWZpbmVkVmFyaWFibGUoY29uc3QgU2hhZGVyVmFyaWFibGUgJnZhcmlhYmxlLAog
ICAgIGZvciAoc2l6ZV90IGZpZWxkSW5kZXggPSAwOyBmaWVsZEluZGV4IDwgZmllbGRzLnNpemUo
KTsgZmllbGRJbmRleCsrKQogICAgIHsKICAgICAgICAgY29uc3QgU2hhZGVyVmFyaWFibGUgJmZp
ZWxkID0gZmllbGRzW2ZpZWxkSW5kZXhdOwotICAgICAgICBFeHBhbmRWYXJpYWJsZShmaWVsZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArICIuIiArIGZpZWxkLm5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgIG1hcHBlZE5hbWUgKyAiLiIgKyBmaWVsZC5tYXBwZWROYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICBtYXJrU3RhdGljVXNlLAotICAgICAgICAgICAgICAgICAgICAg
ICBleHBhbmRlZCk7CisgICAgICAgIEV4cGFuZFZhcmlhYmxlKGZpZWxkLCBuYW1lICsgIi4iICsg
ZmllbGQubmFtZSwgbWFwcGVkTmFtZSArICIuIiArIGZpZWxkLm1hcHBlZE5hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgIG1hcmtTdGF0aWNVc2UsIGV4cGFuZGVkKTsKICAgICB9CiB9CiAKIHRl
bXBsYXRlIDxjbGFzcyBWYXJUPgotVmFyVCAqRmluZFZhcmlhYmxlKGNvbnN0IFRTdHJpbmcgJm5h
bWUsCi0gICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxWYXJUPiAqaW5mb0xpc3QpCitWYXJU
ICpGaW5kVmFyaWFibGUoY29uc3QgVFN0cmluZyAmbmFtZSwgc3RkOjp2ZWN0b3I8VmFyVD4gKmlu
Zm9MaXN0KQogewogICAgIC8vIFRPRE8oem1vKTogb3B0aW1pemUgdGhpcyBmdW5jdGlvbi4KICAg
ICBmb3IgKHNpemVfdCBpaSA9IDA7IGlpIDwgaW5mb0xpc3QtPnNpemUoKTsgKytpaSkKQEAgLTYx
LDcgKzYyLDYgQEAgVmFyVCAqRmluZFZhcmlhYmxlKGNvbnN0IFRTdHJpbmcgJm5hbWUsCiAKICAg
ICByZXR1cm4gTlVMTDsKIH0KLQogfQogCiBDb2xsZWN0VmFyaWFibGVzOjpDb2xsZWN0VmFyaWFi
bGVzKHN0ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGU+ICphdHRyaWJzLApAQCAtMTA3LDcgKzEwNyw3
IEBAIENvbGxlY3RWYXJpYWJsZXM6OkNvbGxlY3RWYXJpYWJsZXMoc3RkOjp2ZWN0b3I8c2g6OkF0
dHJpYnV0ZT4gKmF0dHJpYnMsCiB2b2lkIENvbGxlY3RWYXJpYWJsZXM6OnZpc2l0U3ltYm9sKFRJ
bnRlcm1TeW1ib2wgKnN5bWJvbCkKIHsKICAgICBBU1NFUlQoc3ltYm9sICE9IE5VTEwpOwotICAg
IFNoYWRlclZhcmlhYmxlICp2YXIgPSBOVUxMOworICAgIFNoYWRlclZhcmlhYmxlICp2YXIgICAg
ICAgPSBOVUxMOwogICAgIGNvbnN0IFRTdHJpbmcgJnN5bWJvbE5hbWUgPSBzeW1ib2wtPmdldFN5
bWJvbCgpOwogCiAgICAgaWYgKElzVmFyeWluZyhzeW1ib2wtPmdldFF1YWxpZmllcigpKSkKQEAg
LTEyNiwzOSArMTI2LDM5IEBAIHZvaWQgQ29sbGVjdFZhcmlhYmxlczo6dmlzaXRTeW1ib2woVElu
dGVybVN5bWJvbCAqc3ltYm9sKQogICAgICAgICB7CiAgICAgICAgICAgICBVbmlmb3JtIGluZm87
CiAgICAgICAgICAgICBjb25zdCBjaGFyIGtOYW1lW10gPSAiZ2xfRGVwdGhSYW5nZSI7Ci0gICAg
ICAgICAgICBpbmZvLm5hbWUgPSBrTmFtZTsKLSAgICAgICAgICAgIGluZm8ubWFwcGVkTmFtZSA9
IGtOYW1lOwotICAgICAgICAgICAgaW5mby50eXBlID0gR0xfU1RSVUNUX0FOR0xFWDsKLSAgICAg
ICAgICAgIGluZm8uYXJyYXlTaXplID0gMDsKLSAgICAgICAgICAgIGluZm8ucHJlY2lzaW9uID0g
R0xfTk9ORTsKLSAgICAgICAgICAgIGluZm8uc3RhdGljVXNlID0gdHJ1ZTsKKyAgICAgICAgICAg
IGluZm8ubmFtZSAgICAgICAgICA9IGtOYW1lOworICAgICAgICAgICAgaW5mby5tYXBwZWROYW1l
ICAgID0ga05hbWU7CisgICAgICAgICAgICBpbmZvLnR5cGUgICAgICAgICAgPSBHTF9TVFJVQ1Rf
QU5HTEVYOworICAgICAgICAgICAgaW5mby5hcnJheVNpemUgICAgID0gMDsKKyAgICAgICAgICAg
IGluZm8ucHJlY2lzaW9uICAgICA9IEdMX05PTkU7CisgICAgICAgICAgICBpbmZvLnN0YXRpY1Vz
ZSAgICAgPSB0cnVlOwogCiAgICAgICAgICAgICBTaGFkZXJWYXJpYWJsZSBuZWFySW5mbzsKICAg
ICAgICAgICAgIGNvbnN0IGNoYXIga05lYXJOYW1lW10gPSAibmVhciI7Ci0gICAgICAgICAgICBu
ZWFySW5mby5uYW1lID0ga05lYXJOYW1lOwotICAgICAgICAgICAgbmVhckluZm8ubWFwcGVkTmFt
ZSA9IGtOZWFyTmFtZTsKLSAgICAgICAgICAgIG5lYXJJbmZvLnR5cGUgPSBHTF9GTE9BVDsKLSAg
ICAgICAgICAgIG5lYXJJbmZvLmFycmF5U2l6ZSA9IDA7Ci0gICAgICAgICAgICBuZWFySW5mby5w
cmVjaXNpb24gPSBHTF9ISUdIX0ZMT0FUOwotICAgICAgICAgICAgbmVhckluZm8uc3RhdGljVXNl
ID0gdHJ1ZTsKKyAgICAgICAgICAgIG5lYXJJbmZvLm5hbWUgICAgICAgICAgPSBrTmVhck5hbWU7
CisgICAgICAgICAgICBuZWFySW5mby5tYXBwZWROYW1lICAgID0ga05lYXJOYW1lOworICAgICAg
ICAgICAgbmVhckluZm8udHlwZSAgICAgICAgICA9IEdMX0ZMT0FUOworICAgICAgICAgICAgbmVh
ckluZm8uYXJyYXlTaXplICAgICA9IDA7CisgICAgICAgICAgICBuZWFySW5mby5wcmVjaXNpb24g
ICAgID0gR0xfSElHSF9GTE9BVDsKKyAgICAgICAgICAgIG5lYXJJbmZvLnN0YXRpY1VzZSAgICAg
PSB0cnVlOwogCiAgICAgICAgICAgICBTaGFkZXJWYXJpYWJsZSBmYXJJbmZvOwogICAgICAgICAg
ICAgY29uc3QgY2hhciBrRmFyTmFtZVtdID0gImZhciI7Ci0gICAgICAgICAgICBmYXJJbmZvLm5h
bWUgPSBrRmFyTmFtZTsKLSAgICAgICAgICAgIGZhckluZm8ubWFwcGVkTmFtZSA9IGtGYXJOYW1l
OwotICAgICAgICAgICAgZmFySW5mby50eXBlID0gR0xfRkxPQVQ7Ci0gICAgICAgICAgICBmYXJJ
bmZvLmFycmF5U2l6ZSA9IDA7Ci0gICAgICAgICAgICBmYXJJbmZvLnByZWNpc2lvbiA9IEdMX0hJ
R0hfRkxPQVQ7Ci0gICAgICAgICAgICBmYXJJbmZvLnN0YXRpY1VzZSA9IHRydWU7CisgICAgICAg
ICAgICBmYXJJbmZvLm5hbWUgICAgICAgICAgPSBrRmFyTmFtZTsKKyAgICAgICAgICAgIGZhcklu
Zm8ubWFwcGVkTmFtZSAgICA9IGtGYXJOYW1lOworICAgICAgICAgICAgZmFySW5mby50eXBlICAg
ICAgICAgID0gR0xfRkxPQVQ7CisgICAgICAgICAgICBmYXJJbmZvLmFycmF5U2l6ZSAgICAgPSAw
OworICAgICAgICAgICAgZmFySW5mby5wcmVjaXNpb24gICAgID0gR0xfSElHSF9GTE9BVDsKKyAg
ICAgICAgICAgIGZhckluZm8uc3RhdGljVXNlICAgICA9IHRydWU7CiAKICAgICAgICAgICAgIFNo
YWRlclZhcmlhYmxlIGRpZmZJbmZvOwogICAgICAgICAgICAgY29uc3QgY2hhciBrRGlmZk5hbWVb
XSA9ICJkaWZmIjsKLSAgICAgICAgICAgIGRpZmZJbmZvLm5hbWUgPSBrRGlmZk5hbWU7Ci0gICAg
ICAgICAgICBkaWZmSW5mby5tYXBwZWROYW1lID0ga0RpZmZOYW1lOwotICAgICAgICAgICAgZGlm
ZkluZm8udHlwZSA9IEdMX0ZMT0FUOwotICAgICAgICAgICAgZGlmZkluZm8uYXJyYXlTaXplID0g
MDsKLSAgICAgICAgICAgIGRpZmZJbmZvLnByZWNpc2lvbiA9IEdMX0hJR0hfRkxPQVQ7Ci0gICAg
ICAgICAgICBkaWZmSW5mby5zdGF0aWNVc2UgPSB0cnVlOworICAgICAgICAgICAgZGlmZkluZm8u
bmFtZSAgICAgICAgICA9IGtEaWZmTmFtZTsKKyAgICAgICAgICAgIGRpZmZJbmZvLm1hcHBlZE5h
bWUgICAgPSBrRGlmZk5hbWU7CisgICAgICAgICAgICBkaWZmSW5mby50eXBlICAgICAgICAgID0g
R0xfRkxPQVQ7CisgICAgICAgICAgICBkaWZmSW5mby5hcnJheVNpemUgICAgID0gMDsKKyAgICAg
ICAgICAgIGRpZmZJbmZvLnByZWNpc2lvbiAgICAgPSBHTF9ISUdIX0ZMT0FUOworICAgICAgICAg
ICAgZGlmZkluZm8uc3RhdGljVXNlICAgICA9IHRydWU7CiAKICAgICAgICAgICAgIGluZm8uZmll
bGRzLnB1c2hfYmFjayhuZWFySW5mbyk7CiAgICAgICAgICAgICBpbmZvLmZpZWxkcy5wdXNoX2Jh
Y2soZmFySW5mbyk7CkBAIC0xNzIsMTkgKzE3MiwyMCBAQCB2b2lkIENvbGxlY3RWYXJpYWJsZXM6
OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKnN5bWJvbCkKICAgICB7CiAgICAgICAgIHN3aXRj
aCAoc3ltYm9sLT5nZXRRdWFsaWZpZXIoKSkKICAgICAgICAgewotICAgICAgICAgIGNhc2UgRXZx
QXR0cmlidXRlOgotICAgICAgICAgIGNhc2UgRXZxVmVydGV4SW46Ci0gICAgICAgICAgICB2YXIg
PSBGaW5kVmFyaWFibGUoc3ltYm9sTmFtZSwgbUF0dHJpYnMpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgY2FzZSBFdnFGcmFnbWVudE91dDoKLSAgICAgICAgICAgIHZhciA9IEZpbmRW
YXJpYWJsZShzeW1ib2xOYW1lLCBtT3V0cHV0VmFyaWFibGVzKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgIGNhc2UgRXZxVW5pZm9ybToKKyAgICAgICAgICAgIGNhc2UgRXZxQXR0cmli
dXRlOgorICAgICAgICAgICAgY2FzZSBFdnFWZXJ0ZXhJbjoKKyAgICAgICAgICAgICAgICB2YXIg
PSBGaW5kVmFyaWFibGUoc3ltYm9sTmFtZSwgbUF0dHJpYnMpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBFdnFGcmFnbWVudE91dDoKKyAgICAgICAgICAgICAgICB2
YXIgPSBGaW5kVmFyaWFibGUoc3ltYm9sTmFtZSwgbU91dHB1dFZhcmlhYmxlcyk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEV2cVVuaWZvcm06CiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgY29uc3QgVEludGVyZmFjZUJsb2NrICppbnRlcmZhY2VCbG9j
ayA9IHN5bWJvbC0+Z2V0VHlwZSgpLmdldEludGVyZmFjZUJsb2NrKCk7CiAgICAgICAgICAgICAg
ICAgaWYgKGludGVyZmFjZUJsb2NrKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgSW50ZXJmYWNlQmxvY2sgKm5hbWVkQmxvY2sgPSBGaW5kVmFyaWFibGUoaW50ZXJmYWNl
QmxvY2stPm5hbWUoKSwgbUludGVyZmFjZUJsb2Nrcyk7CisgICAgICAgICAgICAgICAgICAgIElu
dGVyZmFjZUJsb2NrICpuYW1lZEJsb2NrID0KKyAgICAgICAgICAgICAgICAgICAgICAgIEZpbmRW
YXJpYWJsZShpbnRlcmZhY2VCbG9jay0+bmFtZSgpLCBtSW50ZXJmYWNlQmxvY2tzKTsKICAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUKG5hbWVkQmxvY2spOwogICAgICAgICAgICAgICAgICAgICB2
YXIgPSBGaW5kVmFyaWFibGUoc3ltYm9sTmFtZSwgJm5hbWVkQmxvY2stPmZpZWxkcyk7CiAKQEAg
LTIwMCwyNDIgKzIwMSwyNDUgQEAgdm9pZCBDb2xsZWN0VmFyaWFibGVzOjp2aXNpdFN5bWJvbChU
SW50ZXJtU3ltYm9sICpzeW1ib2wpCiAgICAgICAgICAgICAgICAgQVNTRVJUKHN5bWJvbE5hbWUu
Y29tcGFyZSgwLCAzLCAiZ2xfIikgIT0gMCB8fCB2YXIpOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBFdnFGcmFnQ29vcmQ6Ci0gICAgICAgICAgICBp
ZiAoIW1GcmFnQ29vcmRBZGRlZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBWYXJ5
aW5nIGluZm87Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciBrTmFtZVtdID0gImdsX0ZyYWdD
b29yZCI7Ci0gICAgICAgICAgICAgICAgaW5mby5uYW1lID0ga05hbWU7Ci0gICAgICAgICAgICAg
ICAgaW5mby5tYXBwZWROYW1lID0ga05hbWU7Ci0gICAgICAgICAgICAgICAgaW5mby50eXBlID0g
R0xfRkxPQVRfVkVDNDsKLSAgICAgICAgICAgICAgICBpbmZvLmFycmF5U2l6ZSA9IDA7Ci0gICAg
ICAgICAgICAgICAgaW5mby5wcmVjaXNpb24gPSBHTF9NRURJVU1fRkxPQVQ7ICAvLyBEZWZpbmVk
IGJ5IHNwZWMuCi0gICAgICAgICAgICAgICAgaW5mby5zdGF0aWNVc2UgPSB0cnVlOwotICAgICAg
ICAgICAgICAgIGluZm8uaXNJbnZhcmlhbnQgPSBtU3ltYm9sVGFibGUuaXNWYXJ5aW5nSW52YXJp
YW50KGtOYW1lKTsKLSAgICAgICAgICAgICAgICBtVmFyeWluZ3MtPnB1c2hfYmFjayhpbmZvKTsK
LSAgICAgICAgICAgICAgICBtRnJhZ0Nvb3JkQWRkZWQgPSB0cnVlOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIGNhc2UgRXZxRnJvbnRGYWNpbmc6Ci0gICAg
ICAgICAgICBpZiAoIW1Gcm9udEZhY2luZ0FkZGVkKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIFZhcnlpbmcgaW5mbzsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyIGtOYW1lW10g
PSAiZ2xfRnJvbnRGYWNpbmciOwotICAgICAgICAgICAgICAgIGluZm8ubmFtZSA9IGtOYW1lOwot
ICAgICAgICAgICAgICAgIGluZm8ubWFwcGVkTmFtZSA9IGtOYW1lOwotICAgICAgICAgICAgICAg
IGluZm8udHlwZSA9IEdMX0JPT0w7Ci0gICAgICAgICAgICAgICAgaW5mby5hcnJheVNpemUgPSAw
OwotICAgICAgICAgICAgICAgIGluZm8ucHJlY2lzaW9uID0gR0xfTk9ORTsKLSAgICAgICAgICAg
ICAgICBpbmZvLnN0YXRpY1VzZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgaW5mby5pc0ludmFy
aWFudCA9IG1TeW1ib2xUYWJsZS5pc1ZhcnlpbmdJbnZhcmlhbnQoa05hbWUpOwotICAgICAgICAg
ICAgICAgIG1WYXJ5aW5ncy0+cHVzaF9iYWNrKGluZm8pOwotICAgICAgICAgICAgICAgIG1Gcm9u
dEZhY2luZ0FkZGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICBjYXNlIEV2cVBvaW50Q29vcmQ6Ci0gICAgICAgICAgICBpZiAoIW1Qb2ludENv
b3JkQWRkZWQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVmFyeWluZyBpbmZvOwot
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIga05hbWVbXSA9ICJnbF9Qb2ludENvb3JkIjsKLSAg
ICAgICAgICAgICAgICBpbmZvLm5hbWUgPSBrTmFtZTsKLSAgICAgICAgICAgICAgICBpbmZvLm1h
cHBlZE5hbWUgPSBrTmFtZTsKLSAgICAgICAgICAgICAgICBpbmZvLnR5cGUgPSBHTF9GTE9BVF9W
RUMyOwotICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplID0gMDsKLSAgICAgICAgICAgICAg
ICBpbmZvLnByZWNpc2lvbiA9IEdMX01FRElVTV9GTE9BVDsgIC8vIERlZmluZWQgYnkgc3BlYy4K
LSAgICAgICAgICAgICAgICBpbmZvLnN0YXRpY1VzZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
aW5mby5pc0ludmFyaWFudCA9IG1TeW1ib2xUYWJsZS5pc1ZhcnlpbmdJbnZhcmlhbnQoa05hbWUp
OwotICAgICAgICAgICAgICAgIG1WYXJ5aW5ncy0+cHVzaF9iYWNrKGluZm8pOwotICAgICAgICAg
ICAgICAgIG1Qb2ludENvb3JkQWRkZWQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgIGNhc2UgRXZxSW5zdGFuY2VJRDoKLSAgICAgICAgICAgIGlm
ICghbUluc3RhbmNlSURBZGRlZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBBdHRy
aWJ1dGUgaW5mbzsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyIGtOYW1lW10gPSAiZ2xfSW5z
dGFuY2VJRCI7Ci0gICAgICAgICAgICAgICAgaW5mby5uYW1lID0ga05hbWU7Ci0gICAgICAgICAg
ICAgICAgaW5mby5tYXBwZWROYW1lID0ga05hbWU7Ci0gICAgICAgICAgICAgICAgaW5mby50eXBl
ID0gR0xfSU5UOwotICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplID0gMDsKLSAgICAgICAg
ICAgICAgICBpbmZvLnByZWNpc2lvbiA9IEdMX0hJR0hfSU5UOyAgLy8gRGVmaW5lZCBieSBzcGVj
LgotICAgICAgICAgICAgICAgIGluZm8uc3RhdGljVXNlID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICBpbmZvLmxvY2F0aW9uID0gLTE7Ci0gICAgICAgICAgICAgICAgbUF0dHJpYnMtPnB1c2hfYmFj
ayhpbmZvKTsKLSAgICAgICAgICAgICAgICBtSW5zdGFuY2VJREFkZGVkID0gdHJ1ZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICBjYXNlIEV2cVZlcnRleElE
OgotICAgICAgICAgICAgICBpZiAoIW1WZXJ0ZXhJREFkZGVkKQotICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUgaW5mbzsKLSAgICAgICAgICAgICAgICAgIGNvbnN0
IGNoYXIga05hbWVbXSA9ICJnbF9WZXJ0ZXhJRCI7Ci0gICAgICAgICAgICAgICAgICBpbmZvLm5h
bWUgICAgICAgICAgPSBrTmFtZTsKLSAgICAgICAgICAgICAgICAgIGluZm8ubWFwcGVkTmFtZSAg
ICA9IGtOYW1lOwotICAgICAgICAgICAgICAgICAgaW5mby50eXBlICAgICAgICAgID0gR0xfSU5U
OwotICAgICAgICAgICAgICAgICAgaW5mby5hcnJheVNpemUgICAgID0gMDsKLSAgICAgICAgICAg
ICAgICAgIGluZm8ucHJlY2lzaW9uICAgICA9IEdMX0hJR0hfSU5UOyAgLy8gRGVmaW5lZCBieSBz
cGVjLgotICAgICAgICAgICAgICAgICAgaW5mby5zdGF0aWNVc2UgICAgID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgIGluZm8ubG9jYXRpb24gICAgICA9IC0xOwotICAgICAgICAgICAgICAgICAg
bUF0dHJpYnMtPnB1c2hfYmFjayhpbmZvKTsKLSAgICAgICAgICAgICAgICAgIG1WZXJ0ZXhJREFk
ZGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgY2FzZSBFdnFQb3NpdGlvbjoKLSAgICAgICAgICAgIGlmICghbVBvc2l0aW9uQWRkZWQp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVmFyeWluZyBpbmZvOwotICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIga05hbWVbXSA9ICJnbF9Qb3NpdGlvbiI7Ci0gICAgICAgICAgICAg
ICAgaW5mby5uYW1lID0ga05hbWU7Ci0gICAgICAgICAgICAgICAgaW5mby5tYXBwZWROYW1lID0g
a05hbWU7Ci0gICAgICAgICAgICAgICAgaW5mby50eXBlID0gR0xfRkxPQVRfVkVDNDsKLSAgICAg
ICAgICAgICAgICBpbmZvLmFycmF5U2l6ZSA9IDA7Ci0gICAgICAgICAgICAgICAgaW5mby5wcmVj
aXNpb24gPSBHTF9ISUdIX0ZMT0FUOyAgLy8gRGVmaW5lZCBieSBzcGVjLgotICAgICAgICAgICAg
ICAgIGluZm8uc3RhdGljVXNlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpbmZvLmlzSW52YXJp
YW50ID0gbVN5bWJvbFRhYmxlLmlzVmFyeWluZ0ludmFyaWFudChrTmFtZSk7Ci0gICAgICAgICAg
ICAgICAgbVZhcnlpbmdzLT5wdXNoX2JhY2soaW5mbyk7Ci0gICAgICAgICAgICAgICAgbVBvc2l0
aW9uQWRkZWQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgIGNhc2UgRXZxUG9pbnRTaXplOgotICAgICAgICAgICAgaWYgKCFtUG9pbnRTaXplQWRk
ZWQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVmFyeWluZyBpbmZvOwotICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIga05hbWVbXSA9ICJnbF9Qb2ludFNpemUiOwotICAgICAgICAg
ICAgICAgIGluZm8ubmFtZSA9IGtOYW1lOwotICAgICAgICAgICAgICAgIGluZm8ubWFwcGVkTmFt
ZSA9IGtOYW1lOwotICAgICAgICAgICAgICAgIGluZm8udHlwZSA9IEdMX0ZMT0FUOwotICAgICAg
ICAgICAgICAgIGluZm8uYXJyYXlTaXplID0gMDsKLSAgICAgICAgICAgICAgICBpbmZvLnByZWNp
c2lvbiA9IEdMX01FRElVTV9GTE9BVDsgIC8vIERlZmluZWQgYnkgc3BlYy4KLSAgICAgICAgICAg
ICAgICBpbmZvLnN0YXRpY1VzZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgaW5mby5pc0ludmFy
aWFudCA9IG1TeW1ib2xUYWJsZS5pc1ZhcnlpbmdJbnZhcmlhbnQoa05hbWUpOwotICAgICAgICAg
ICAgICAgIG1WYXJ5aW5ncy0+cHVzaF9iYWNrKGluZm8pOwotICAgICAgICAgICAgICAgIG1Qb2lu
dFNpemVBZGRlZCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgY2FzZSBFdnFMYXN0RnJhZ0RhdGE6Ci0gICAgICAgICAgICBpZiAoIW1MYXN0RnJh
Z0RhdGFBZGRlZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBWYXJ5aW5nIGluZm87
Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciBrTmFtZVtdID0gImdsX0xhc3RGcmFnRGF0YSI7
Ci0gICAgICAgICAgICAgICAgaW5mby5uYW1lID0ga05hbWU7Ci0gICAgICAgICAgICAgICAgaW5m
by5tYXBwZWROYW1lID0ga05hbWU7Ci0gICAgICAgICAgICAgICAgaW5mby50eXBlID0gR0xfRkxP
QVRfVkVDNDsKLSAgICAgICAgICAgICAgICBpbmZvLmFycmF5U2l6ZSA9IHN0YXRpY19jYXN0PGNv
bnN0IFRWYXJpYWJsZSo+KG1TeW1ib2xUYWJsZS5maW5kQnVpbHRJbigiZ2xfTWF4RHJhd0J1ZmZl
cnMiLCAxMDApKS0+Z2V0Q29uc3RQb2ludGVyKCktPmdldElDb25zdCgpOwotICAgICAgICAgICAg
ICAgIGluZm8ucHJlY2lzaW9uID0gR0xfTUVESVVNX0ZMT0FUOyAgLy8gRGVmaW5lZCBieSBzcGVj
LgotICAgICAgICAgICAgICAgIGluZm8uc3RhdGljVXNlID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICBpbmZvLmlzSW52YXJpYW50ID0gbVN5bWJvbFRhYmxlLmlzVmFyeWluZ0ludmFyaWFudChrTmFt
ZSk7Ci0gICAgICAgICAgICAgICAgbVZhcnlpbmdzLT5wdXNoX2JhY2soaW5mbyk7Ci0gICAgICAg
ICAgICAgICAgbUxhc3RGcmFnRGF0YUFkZGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICBjYXNlIEV2cUZyYWdDb2xvcjoKLSAgICAgICAgICAg
ICAgaWYgKCFtRnJhZ0NvbG9yQWRkZWQpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgIE91dHB1dFZhcmlhYmxlIGluZm87Ci0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyIGtO
YW1lW10gPSAiZ2xfRnJhZ0NvbG9yIjsKLSAgICAgICAgICAgICAgICAgIGluZm8ubmFtZSAgICAg
ICAgICA9IGtOYW1lOwotICAgICAgICAgICAgICAgICAgaW5mby5tYXBwZWROYW1lICAgID0ga05h
bWU7Ci0gICAgICAgICAgICAgICAgICBpbmZvLnR5cGUgICAgICAgICAgPSBHTF9GTE9BVF9WRUM0
OwotICAgICAgICAgICAgICAgICAgaW5mby5hcnJheVNpemUgICAgID0gMDsKLSAgICAgICAgICAg
ICAgICAgIGluZm8ucHJlY2lzaW9uICAgICA9IEdMX01FRElVTV9GTE9BVDsgIC8vIERlZmluZWQg
Ynkgc3BlYy4KLSAgICAgICAgICAgICAgICAgIGluZm8uc3RhdGljVXNlID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICAgIG1PdXRwdXRWYXJpYWJsZXMtPnB1c2hfYmFjayhpbmZvKTsKLSAgICAgICAg
ICAgICAgICAgIG1GcmFnQ29sb3JBZGRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIGNhc2UgRXZxRnJhZ0RhdGE6Ci0gICAgICAgICAg
ICAgIGlmICghbUZyYWdEYXRhQWRkZWQpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgIE91dHB1dFZhcmlhYmxlIGluZm87Ci0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyIGtO
YW1lW10gPSAiZ2xfRnJhZ0RhdGEiOwotICAgICAgICAgICAgICAgICAgaW5mby5uYW1lICAgICAg
ICAgID0ga05hbWU7Ci0gICAgICAgICAgICAgICAgICBpbmZvLm1hcHBlZE5hbWUgICAgPSBrTmFt
ZTsKLSAgICAgICAgICAgICAgICAgIGluZm8udHlwZSAgICAgICAgICA9IEdMX0ZMT0FUX1ZFQzQ7
Ci0gICAgICAgICAgICAgICAgICBpZiAoOjpJc0V4dGVuc2lvbkVuYWJsZWQobUV4dGVuc2lvbkJl
aGF2aW9yLCAiR0xfRVhUX2RyYXdfYnVmZmVycyIpKQotICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplID0gc3RhdGljX2Nhc3Q8Y29uc3QgVFZh
cmlhYmxlICo+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1T
eW1ib2xUYWJsZS5maW5kQnVpbHRJbigiZ2xfTWF4RHJhd0J1ZmZlcnMiLCAxMDApKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+Z2V0Q29uc3RQb2ludGVyKCkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmdldElDb25zdCgp
OwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplID0gMTsKLSAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIGluZm8ucHJlY2lzaW9uID0gR0xf
TUVESVVNX0ZMT0FUOyAgLy8gRGVmaW5lZCBieSBzcGVjLgotICAgICAgICAgICAgICAgICAgaW5m
by5zdGF0aWNVc2UgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgbU91dHB1dFZhcmlhYmxlcy0+
cHVzaF9iYWNrKGluZm8pOwotICAgICAgICAgICAgICAgICAgbUZyYWdEYXRhQWRkZWQgPSB0cnVl
OwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICBjYXNl
IEV2cUZyYWdEZXB0aEVYVDoKLSAgICAgICAgICAgICAgaWYgKCFtRnJhZ0RlcHRoRVhUQWRkZWQp
Ci0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIE91dHB1dFZhcmlhYmxlIGluZm87
Ci0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyIGtOYW1lW10gPSAiZ2xfRnJhZ0RlcHRoRVhU
IjsKLSAgICAgICAgICAgICAgICAgIGluZm8ubmFtZSAgICAgICAgICA9IGtOYW1lOwotICAgICAg
ICAgICAgICAgICAgaW5mby5tYXBwZWROYW1lICAgID0ga05hbWU7Ci0gICAgICAgICAgICAgICAg
ICBpbmZvLnR5cGUgICAgICAgICAgPSBHTF9GTE9BVDsKLSAgICAgICAgICAgICAgICAgIGluZm8u
YXJyYXlTaXplID0gMDsKLSAgICAgICAgICAgICAgICAgIGluZm8ucHJlY2lzaW9uID0KLSAgICAg
ICAgICAgICAgICAgICAgICBHTFZhcmlhYmxlUHJlY2lzaW9uKHN0YXRpY19jYXN0PGNvbnN0IFRW
YXJpYWJsZSAqPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtU3ltYm9sVGFibGUuZmluZEJ1aWx0SW4oImdsX0ZyYWdEZXB0aEVYVCIsIDEwMCkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5nZXRUeXBlKCkpOwot
ICAgICAgICAgICAgICAgICAgaW5mby5zdGF0aWNVc2UgPSB0cnVlOwotICAgICAgICAgICAgICAg
ICAgbU91dHB1dFZhcmlhYmxlcy0+cHVzaF9iYWNrKGluZm8pOwotICAgICAgICAgICAgICAgICAg
bUZyYWdEZXB0aEVYVEFkZGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgY2FzZSBFdnFGcmFnRGVwdGg6Ci0gICAgICAgICAgICAgIGlm
ICghbUZyYWdEZXB0aEFkZGVkKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBP
dXRwdXRWYXJpYWJsZSBpbmZvOwotICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciBrTmFtZVtd
ID0gImdsX0ZyYWdEZXB0aCI7Ci0gICAgICAgICAgICAgICAgICBpbmZvLm5hbWUgICAgICAgICAg
PSBrTmFtZTsKLSAgICAgICAgICAgICAgICAgIGluZm8ubWFwcGVkTmFtZSAgICA9IGtOYW1lOwot
ICAgICAgICAgICAgICAgICAgaW5mby50eXBlICAgICAgICAgID0gR0xfRkxPQVQ7Ci0gICAgICAg
ICAgICAgICAgICBpbmZvLmFycmF5U2l6ZSAgICAgPSAwOwotICAgICAgICAgICAgICAgICAgaW5m
by5wcmVjaXNpb24gICAgID0gR0xfSElHSF9GTE9BVDsKLSAgICAgICAgICAgICAgICAgIGluZm8u
c3RhdGljVXNlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgIG1PdXRwdXRWYXJpYWJsZXMtPnB1
c2hfYmFjayhpbmZvKTsKLSAgICAgICAgICAgICAgICAgIG1GcmFnRGVwdGhBZGRlZCA9IHRydWU7
Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIGNhc2Ug
RXZxU2Vjb25kYXJ5RnJhZ0NvbG9yRVhUOgotICAgICAgICAgICAgICBpZiAoIW1TZWNvbmRhcnlG
cmFnQ29sb3JFWFRBZGRlZCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgT3V0
cHV0VmFyaWFibGUgaW5mbzsKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIga05hbWVbXSA9
ICJnbF9TZWNvbmRhcnlGcmFnQ29sb3JFWFQiOwotICAgICAgICAgICAgICAgICAgaW5mby5uYW1l
ICAgICAgICAgID0ga05hbWU7Ci0gICAgICAgICAgICAgICAgICBpbmZvLm1hcHBlZE5hbWUgICAg
PSBrTmFtZTsKLSAgICAgICAgICAgICAgICAgIGluZm8udHlwZSAgICAgICAgICA9IEdMX0ZMT0FU
X1ZFQzQ7Ci0gICAgICAgICAgICAgICAgICBpbmZvLmFycmF5U2l6ZSAgICAgPSAwOwotICAgICAg
ICAgICAgICAgICAgaW5mby5wcmVjaXNpb24gICAgID0gR0xfTUVESVVNX0ZMT0FUOyAgLy8gRGVm
aW5lZCBieSBzcGVjLgotICAgICAgICAgICAgICAgICAgaW5mby5zdGF0aWNVc2UgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgbU91dHB1dFZhcmlhYmxlcy0+cHVzaF9iYWNrKGluZm8pOwotICAg
ICAgICAgICAgICAgICAgbVNlY29uZGFyeUZyYWdDb2xvckVYVEFkZGVkID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgY2FzZSBFdnFTZWNv
bmRhcnlGcmFnRGF0YUVYVDoKLSAgICAgICAgICAgICAgaWYgKCFtU2Vjb25kYXJ5RnJhZ0RhdGFF
WFRBZGRlZCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgT3V0cHV0VmFyaWFi
bGUgaW5mbzsKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIga05hbWVbXSA9ICJnbF9TZWNv
bmRhcnlGcmFnRGF0YUVYVCI7Ci0gICAgICAgICAgICAgICAgICBpbmZvLm5hbWUgICAgICAgICAg
PSBrTmFtZTsKLSAgICAgICAgICAgICAgICAgIGluZm8ubWFwcGVkTmFtZSAgICA9IGtOYW1lOwot
ICAgICAgICAgICAgICAgICAgaW5mby50eXBlICAgICAgICAgID0gR0xfRkxPQVRfVkVDNDsKLQot
ICAgICAgICAgICAgICAgICAgY29uc3QgVFZhcmlhYmxlICptYXhEdWFsU291cmNlRHJhd0J1ZmZl
cnNWYXIgPSBzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUgKj4oCi0gICAgICAgICAgICAgICAg
ICAgICAgbVN5bWJvbFRhYmxlLmZpbmRCdWlsdEluKCJnbF9NYXhEdWFsU291cmNlRHJhd0J1ZmZl
cnNFWFQiLCAxMDApKTsKLSAgICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplID0gbWF4RHVh
bFNvdXJjZURyYXdCdWZmZXJzVmFyLT5nZXRDb25zdFBvaW50ZXIoKS0+Z2V0SUNvbnN0KCk7Ci0g
ICAgICAgICAgICAgICAgICBpbmZvLnByZWNpc2lvbiA9IEdMX01FRElVTV9GTE9BVDsgIC8vIERl
ZmluZWQgYnkgc3BlYy4KLSAgICAgICAgICAgICAgICAgIGluZm8uc3RhdGljVXNlID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICAgIG1PdXRwdXRWYXJpYWJsZXMtPnB1c2hfYmFjayhpbmZvKTsKLSAg
ICAgICAgICAgICAgICAgIG1TZWNvbmRhcnlGcmFnRGF0YUVYVEFkZGVkID0gdHJ1ZTsKLSAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFdnFGcmFnQ29vcmQ6CisgICAgICAg
ICAgICAgICAgaWYgKCFtRnJhZ0Nvb3JkQWRkZWQpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBWYXJ5aW5nIGluZm87CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIga05hbWVbXSA9ICJnbF9GcmFnQ29vcmQiOworICAgICAgICAgICAgICAgICAgICBpbmZvLm5h
bWUgICAgICAgICAgPSBrTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5tYXBwZWROYW1l
ICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAgICAgIGluZm8udHlwZSAgICAgICAgICA9IEdM
X0ZMT0FUX1ZFQzQ7CisgICAgICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplICAgICA9IDA7
CisgICAgICAgICAgICAgICAgICAgIGluZm8ucHJlY2lzaW9uICAgICA9IEdMX01FRElVTV9GTE9B
VDsgIC8vIERlZmluZWQgYnkgc3BlYy4KKyAgICAgICAgICAgICAgICAgICAgaW5mby5zdGF0aWNV
c2UgICAgID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5pc0ludmFyaWFudCAgID0g
bVN5bWJvbFRhYmxlLmlzVmFyeWluZ0ludmFyaWFudChrTmFtZSk7CisgICAgICAgICAgICAgICAg
ICAgIG1WYXJ5aW5ncy0+cHVzaF9iYWNrKGluZm8pOworICAgICAgICAgICAgICAgICAgICBtRnJh
Z0Nvb3JkQWRkZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBjYXNlIEV2cUZyb250RmFjaW5nOgorICAgICAgICAgICAgICAg
IGlmICghbUZyb250RmFjaW5nQWRkZWQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBWYXJ5aW5nIGluZm87CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIga05h
bWVbXSA9ICJnbF9Gcm9udEZhY2luZyI7CisgICAgICAgICAgICAgICAgICAgIGluZm8ubmFtZSAg
ICAgICAgICA9IGtOYW1lOworICAgICAgICAgICAgICAgICAgICBpbmZvLm1hcHBlZE5hbWUgICAg
PSBrTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby50eXBlICAgICAgICAgID0gR0xfQk9P
TDsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5hcnJheVNpemUgICAgID0gMDsKKyAgICAgICAg
ICAgICAgICAgICAgaW5mby5wcmVjaXNpb24gICAgID0gR0xfTk9ORTsKKyAgICAgICAgICAgICAg
ICAgICAgaW5mby5zdGF0aWNVc2UgICAgID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaW5m
by5pc0ludmFyaWFudCAgID0gbVN5bWJvbFRhYmxlLmlzVmFyeWluZ0ludmFyaWFudChrTmFtZSk7
CisgICAgICAgICAgICAgICAgICAgIG1WYXJ5aW5ncy0+cHVzaF9iYWNrKGluZm8pOworICAgICAg
ICAgICAgICAgICAgICBtRnJvbnRGYWNpbmdBZGRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNhc2UgRXZxUG9pbnRDb29y
ZDoKKyAgICAgICAgICAgICAgICBpZiAoIW1Qb2ludENvb3JkQWRkZWQpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBWYXJ5aW5nIGluZm87CisgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGNoYXIga05hbWVbXSA9ICJnbF9Qb2ludENvb3JkIjsKKyAgICAgICAgICAgICAg
ICAgICAgaW5mby5uYW1lICAgICAgICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAgICAgIGlu
Zm8ubWFwcGVkTmFtZSAgICA9IGtOYW1lOworICAgICAgICAgICAgICAgICAgICBpbmZvLnR5cGUg
ICAgICAgICAgPSBHTF9GTE9BVF9WRUMyOworICAgICAgICAgICAgICAgICAgICBpbmZvLmFycmF5
U2l6ZSAgICAgPSAwOworICAgICAgICAgICAgICAgICAgICBpbmZvLnByZWNpc2lvbiAgICAgPSBH
TF9NRURJVU1fRkxPQVQ7ICAvLyBEZWZpbmVkIGJ5IHNwZWMuCisgICAgICAgICAgICAgICAgICAg
IGluZm8uc3RhdGljVXNlICAgICA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGluZm8uaXNJ
bnZhcmlhbnQgICA9IG1TeW1ib2xUYWJsZS5pc1ZhcnlpbmdJbnZhcmlhbnQoa05hbWUpOworICAg
ICAgICAgICAgICAgICAgICBtVmFyeWluZ3MtPnB1c2hfYmFjayhpbmZvKTsKKyAgICAgICAgICAg
ICAgICAgICAgbVBvaW50Q29vcmRBZGRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNhc2UgRXZxSW5zdGFuY2VJRDoKKyAg
ICAgICAgICAgICAgICBpZiAoIW1JbnN0YW5jZUlEQWRkZWQpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGUgaW5mbzsKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgY2hhciBrTmFtZVtdID0gImdsX0luc3RhbmNlSUQiOworICAgICAgICAgICAgICAgICAg
ICBpbmZvLm5hbWUgICAgICAgICAgPSBrTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5t
YXBwZWROYW1lICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAgICAgIGluZm8udHlwZSAgICAg
ICAgICA9IEdMX0lOVDsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5hcnJheVNpemUgICAgID0g
MDsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5wcmVjaXNpb24gICAgID0gR0xfSElHSF9JTlQ7
ICAvLyBEZWZpbmVkIGJ5IHNwZWMuCisgICAgICAgICAgICAgICAgICAgIGluZm8uc3RhdGljVXNl
ICAgICA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGluZm8ubG9jYXRpb24gICAgICA9IC0x
OworICAgICAgICAgICAgICAgICAgICBtQXR0cmlicy0+cHVzaF9iYWNrKGluZm8pOworICAgICAg
ICAgICAgICAgICAgICBtSW5zdGFuY2VJREFkZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2FzZSBFdnFWZXJ0ZXhJRDoK
KyAgICAgICAgICAgICAgICBpZiAoIW1WZXJ0ZXhJREFkZGVkKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlIGluZm87CisgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIga05hbWVbXSA9ICJnbF9WZXJ0ZXhJRCI7CisgICAgICAgICAgICAgICAgICAg
IGluZm8ubmFtZSAgICAgICAgICA9IGtOYW1lOworICAgICAgICAgICAgICAgICAgICBpbmZvLm1h
cHBlZE5hbWUgICAgPSBrTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby50eXBlICAgICAg
ICAgID0gR0xfSU5UOworICAgICAgICAgICAgICAgICAgICBpbmZvLmFycmF5U2l6ZSAgICAgPSAw
OworICAgICAgICAgICAgICAgICAgICBpbmZvLnByZWNpc2lvbiAgICAgPSBHTF9ISUdIX0lOVDsg
IC8vIERlZmluZWQgYnkgc3BlYy4KKyAgICAgICAgICAgICAgICAgICAgaW5mby5zdGF0aWNVc2Ug
ICAgID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5sb2NhdGlvbiAgICAgID0gLTE7
CisgICAgICAgICAgICAgICAgICAgIG1BdHRyaWJzLT5wdXNoX2JhY2soaW5mbyk7CisgICAgICAg
ICAgICAgICAgICAgIG1WZXJ0ZXhJREFkZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2FzZSBFdnFQb3NpdGlvbjoKKyAg
ICAgICAgICAgICAgICBpZiAoIW1Qb3NpdGlvbkFkZGVkKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgVmFyeWluZyBpbmZvOworICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyIGtOYW1lW10gPSAiZ2xfUG9zaXRpb24iOworICAgICAgICAgICAgICAgICAgICBpbmZv
Lm5hbWUgICAgICAgICAgPSBrTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5tYXBwZWRO
YW1lICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAgICAgIGluZm8udHlwZSAgICAgICAgICA9
IEdMX0ZMT0FUX1ZFQzQ7CisgICAgICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplICAgICA9
IDA7CisgICAgICAgICAgICAgICAgICAgIGluZm8ucHJlY2lzaW9uICAgICA9IEdMX0hJR0hfRkxP
QVQ7ICAvLyBEZWZpbmVkIGJ5IHNwZWMuCisgICAgICAgICAgICAgICAgICAgIGluZm8uc3RhdGlj
VXNlICAgICA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGluZm8uaXNJbnZhcmlhbnQgICA9
IG1TeW1ib2xUYWJsZS5pc1ZhcnlpbmdJbnZhcmlhbnQoa05hbWUpOworICAgICAgICAgICAgICAg
ICAgICBtVmFyeWluZ3MtPnB1c2hfYmFjayhpbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgbVBv
c2l0aW9uQWRkZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBjYXNlIEV2cVBvaW50U2l6ZToKKyAgICAgICAgICAgICAgICBp
ZiAoIW1Qb2ludFNpemVBZGRlZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIFZhcnlpbmcgaW5mbzsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciBrTmFtZVtd
ID0gImdsX1BvaW50U2l6ZSI7CisgICAgICAgICAgICAgICAgICAgIGluZm8ubmFtZSAgICAgICAg
ICA9IGtOYW1lOworICAgICAgICAgICAgICAgICAgICBpbmZvLm1hcHBlZE5hbWUgICAgPSBrTmFt
ZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby50eXBlICAgICAgICAgID0gR0xfRkxPQVQ7Cisg
ICAgICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplICAgICA9IDA7CisgICAgICAgICAgICAg
ICAgICAgIGluZm8ucHJlY2lzaW9uICAgICA9IEdMX01FRElVTV9GTE9BVDsgIC8vIERlZmluZWQg
Ynkgc3BlYy4KKyAgICAgICAgICAgICAgICAgICAgaW5mby5zdGF0aWNVc2UgICAgID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICAgICAgaW5mby5pc0ludmFyaWFudCAgID0gbVN5bWJvbFRhYmxlLmlz
VmFyeWluZ0ludmFyaWFudChrTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIG1WYXJ5aW5ncy0+
cHVzaF9iYWNrKGluZm8pOworICAgICAgICAgICAgICAgICAgICBtUG9pbnRTaXplQWRkZWQgPSB0
cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICBjYXNlIEV2cUxhc3RGcmFnRGF0YToKKyAgICAgICAgICAgICAgICBpZiAoIW1MYXN0RnJh
Z0RhdGFBZGRlZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIFZhcnlp
bmcgaW5mbzsKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciBrTmFtZVtdID0gImdsX0xh
c3RGcmFnRGF0YSI7CisgICAgICAgICAgICAgICAgICAgIGluZm8ubmFtZSAgICAgICAgICA9IGtO
YW1lOworICAgICAgICAgICAgICAgICAgICBpbmZvLm1hcHBlZE5hbWUgICAgPSBrTmFtZTsKKyAg
ICAgICAgICAgICAgICAgICAgaW5mby50eXBlICAgICAgICAgID0gR0xfRkxPQVRfVkVDNDsKKyAg
ICAgICAgICAgICAgICAgICAgaW5mby5hcnJheVNpemUgICAgID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
VFZhcmlhYmxlICo+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
U3ltYm9sVGFibGUuZmluZEJ1aWx0SW4oImdsX01heERyYXdCdWZmZXJzIiwgMTAwKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5nZXRDb25zdFBvaW50ZXIoKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmdldElDb25zdCgpOwor
ICAgICAgICAgICAgICAgICAgICBpbmZvLnByZWNpc2lvbiAgID0gR0xfTUVESVVNX0ZMT0FUOyAg
Ly8gRGVmaW5lZCBieSBzcGVjLgorICAgICAgICAgICAgICAgICAgICBpbmZvLnN0YXRpY1VzZSAg
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5pc0ludmFyaWFudCA9IG1TeW1ib2xU
YWJsZS5pc1ZhcnlpbmdJbnZhcmlhbnQoa05hbWUpOworICAgICAgICAgICAgICAgICAgICBtVmFy
eWluZ3MtPnB1c2hfYmFjayhpbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgbUxhc3RGcmFnRGF0
YUFkZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgY2FzZSBFdnFGcmFnQ29sb3I6CisgICAgICAgICAgICAgICAgaWYgKCFt
RnJhZ0NvbG9yQWRkZWQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBP
dXRwdXRWYXJpYWJsZSBpbmZvOworICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyIGtOYW1l
W10gPSAiZ2xfRnJhZ0NvbG9yIjsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5uYW1lICAgICAg
ICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAgICAgIGluZm8ubWFwcGVkTmFtZSAgICA9IGtO
YW1lOworICAgICAgICAgICAgICAgICAgICBpbmZvLnR5cGUgICAgICAgICAgPSBHTF9GTE9BVF9W
RUM0OworICAgICAgICAgICAgICAgICAgICBpbmZvLmFycmF5U2l6ZSAgICAgPSAwOworICAgICAg
ICAgICAgICAgICAgICBpbmZvLnByZWNpc2lvbiAgICAgPSBHTF9NRURJVU1fRkxPQVQ7ICAvLyBE
ZWZpbmVkIGJ5IHNwZWMuCisgICAgICAgICAgICAgICAgICAgIGluZm8uc3RhdGljVXNlICAgICA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1PdXRwdXRWYXJpYWJsZXMtPnB1c2hfYmFjayhp
bmZvKTsKKyAgICAgICAgICAgICAgICAgICAgbUZyYWdDb2xvckFkZGVkID0gdHJ1ZTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgY2FzZSBF
dnFGcmFnRGF0YToKKyAgICAgICAgICAgICAgICBpZiAoIW1GcmFnRGF0YUFkZGVkKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgT3V0cHV0VmFyaWFibGUgaW5mbzsKKyAg
ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciBrTmFtZVtdID0gImdsX0ZyYWdEYXRhIjsKKyAg
ICAgICAgICAgICAgICAgICAgaW5mby5uYW1lICAgICAgICAgID0ga05hbWU7CisgICAgICAgICAg
ICAgICAgICAgIGluZm8ubWFwcGVkTmFtZSAgICA9IGtOYW1lOworICAgICAgICAgICAgICAgICAg
ICBpbmZvLnR5cGUgICAgICAgICAgPSBHTF9GTE9BVF9WRUM0OworICAgICAgICAgICAgICAgICAg
ICBpZiAoOjpJc0V4dGVuc2lvbkVuYWJsZWQobUV4dGVuc2lvbkJlaGF2aW9yLCAiR0xfRVhUX2Ry
YXdfYnVmZmVycyIpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpbmZvLmFycmF5U2l6ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFRWYXJpYWJsZSAqPigKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TeW1ib2xUYWJsZS5m
aW5kQnVpbHRJbigiZ2xfTWF4RHJhd0J1ZmZlcnMiLCAxMDApKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5nZXRDb25zdFBvaW50ZXIoKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5nZXRJQ29uc3QoKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uYXJyYXlTaXplID0gMTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpbmZvLnByZWNpc2lvbiA9
IEdMX01FRElVTV9GTE9BVDsgIC8vIERlZmluZWQgYnkgc3BlYy4KKyAgICAgICAgICAgICAgICAg
ICAgaW5mby5zdGF0aWNVc2UgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtT3V0cHV0VmFy
aWFibGVzLT5wdXNoX2JhY2soaW5mbyk7CisgICAgICAgICAgICAgICAgICAgIG1GcmFnRGF0YUFk
ZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgY2FzZSBFdnFGcmFnRGVwdGhFWFQ6CisgICAgICAgICAgICAgICAgaWYgKCFt
RnJhZ0RlcHRoRVhUQWRkZWQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBPdXRwdXRWYXJpYWJsZSBpbmZvOworICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyIGtO
YW1lW10gPSAiZ2xfRnJhZ0RlcHRoRVhUIjsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5uYW1l
ICAgICAgICAgID0ga05hbWU7CisgICAgICAgICAgICAgICAgICAgIGluZm8ubWFwcGVkTmFtZSAg
ICA9IGtOYW1lOworICAgICAgICAgICAgICAgICAgICBpbmZvLnR5cGUgICAgICAgICAgPSBHTF9G
TE9BVDsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5hcnJheVNpemUgICAgID0gMDsKKyAgICAg
ICAgICAgICAgICAgICAgaW5mby5wcmVjaXNpb24gPQorICAgICAgICAgICAgICAgICAgICAgICAg
R0xWYXJpYWJsZVByZWNpc2lvbihzdGF0aWNfY2FzdDxjb25zdCBUVmFyaWFibGUgKj4oCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3ltYm9sVGFibGUu
ZmluZEJ1aWx0SW4oImdsX0ZyYWdEZXB0aEVYVCIsIDEwMCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmdldFR5cGUoKSk7CisgICAgICAgICAgICAg
ICAgICAgIGluZm8uc3RhdGljVXNlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbU91dHB1
dFZhcmlhYmxlcy0+cHVzaF9iYWNrKGluZm8pOworICAgICAgICAgICAgICAgICAgICBtRnJhZ0Rl
cHRoRVhUQWRkZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICBjYXNlIEV2cUZyYWdEZXB0aDoKKyAgICAgICAgICAgICAgICBp
ZiAoIW1GcmFnRGVwdGhBZGRlZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIE91dHB1dFZhcmlhYmxlIGluZm87CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
a05hbWVbXSA9ICJnbF9GcmFnRGVwdGgiOworICAgICAgICAgICAgICAgICAgICBpbmZvLm5hbWUg
ICAgICAgICAgPSBrTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5tYXBwZWROYW1lICAg
ID0ga05hbWU7CisgICAgICAgICAgICAgICAgICAgIGluZm8udHlwZSAgICAgICAgICA9IEdMX0ZM
T0FUOworICAgICAgICAgICAgICAgICAgICBpbmZvLmFycmF5U2l6ZSAgICAgPSAwOworICAgICAg
ICAgICAgICAgICAgICBpbmZvLnByZWNpc2lvbiAgICAgPSBHTF9ISUdIX0ZMT0FUOworICAgICAg
ICAgICAgICAgICAgICBpbmZvLnN0YXRpY1VzZSAgICAgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICBtT3V0cHV0VmFyaWFibGVzLT5wdXNoX2JhY2soaW5mbyk7CisgICAgICAgICAgICAgICAg
ICAgIG1GcmFnRGVwdGhBZGRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNhc2UgRXZxU2Vjb25kYXJ5RnJhZ0NvbG9yRVhU
OgorICAgICAgICAgICAgICAgIGlmICghbVNlY29uZGFyeUZyYWdDb2xvckVYVEFkZGVkKQorICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgT3V0cHV0VmFyaWFibGUgaW5mbzsK
KyAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciBrTmFtZVtdID0gImdsX1NlY29uZGFyeUZy
YWdDb2xvckVYVCI7CisgICAgICAgICAgICAgICAgICAgIGluZm8ubmFtZSAgICAgICAgICA9IGtO
YW1lOworICAgICAgICAgICAgICAgICAgICBpbmZvLm1hcHBlZE5hbWUgICAgPSBrTmFtZTsKKyAg
ICAgICAgICAgICAgICAgICAgaW5mby50eXBlICAgICAgICAgID0gR0xfRkxPQVRfVkVDNDsKKyAg
ICAgICAgICAgICAgICAgICAgaW5mby5hcnJheVNpemUgICAgID0gMDsKKyAgICAgICAgICAgICAg
ICAgICAgaW5mby5wcmVjaXNpb24gICAgID0gR0xfTUVESVVNX0ZMT0FUOyAgLy8gRGVmaW5lZCBi
eSBzcGVjLgorICAgICAgICAgICAgICAgICAgICBpbmZvLnN0YXRpY1VzZSAgICAgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICBtT3V0cHV0VmFyaWFibGVzLT5wdXNoX2JhY2soaW5mbyk7Cisg
ICAgICAgICAgICAgICAgICAgIG1TZWNvbmRhcnlGcmFnQ29sb3JFWFRBZGRlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNh
c2UgRXZxU2Vjb25kYXJ5RnJhZ0RhdGFFWFQ6CisgICAgICAgICAgICAgICAgaWYgKCFtU2Vjb25k
YXJ5RnJhZ0RhdGFFWFRBZGRlZCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIE91dHB1dFZhcmlhYmxlIGluZm87CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg
a05hbWVbXSA9ICJnbF9TZWNvbmRhcnlGcmFnRGF0YUVYVCI7CisgICAgICAgICAgICAgICAgICAg
IGluZm8ubmFtZSAgICAgICAgICA9IGtOYW1lOworICAgICAgICAgICAgICAgICAgICBpbmZvLm1h
cHBlZE5hbWUgICAgPSBrTmFtZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby50eXBlICAgICAg
ICAgID0gR0xfRkxPQVRfVkVDNDsKKworICAgICAgICAgICAgICAgICAgICBjb25zdCBUVmFyaWFi
bGUgKm1heER1YWxTb3VyY2VEcmF3QnVmZmVyc1ZhciA9IHN0YXRpY19jYXN0PGNvbnN0IFRWYXJp
YWJsZSAqPigKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TeW1ib2xUYWJsZS5maW5kQnVpbHRJ
bigiZ2xfTWF4RHVhbFNvdXJjZURyYXdCdWZmZXJzRVhUIiwgMTAwKSk7CisgICAgICAgICAgICAg
ICAgICAgIGluZm8uYXJyYXlTaXplID0gbWF4RHVhbFNvdXJjZURyYXdCdWZmZXJzVmFyLT5nZXRD
b25zdFBvaW50ZXIoKS0+Z2V0SUNvbnN0KCk7CisgICAgICAgICAgICAgICAgICAgIGluZm8ucHJl
Y2lzaW9uID0gR0xfTUVESVVNX0ZMT0FUOyAgLy8gRGVmaW5lZCBieSBzcGVjLgorICAgICAgICAg
ICAgICAgICAgICBpbmZvLnN0YXRpY1VzZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1P
dXRwdXRWYXJpYWJsZXMtPnB1c2hfYmFjayhpbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgbVNl
Y29uZGFyeUZyYWdEYXRhRVhUQWRkZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICh2YXIpCkBAIC00NDQsMTY5ICs0NDgs
MTg0IEBAIHZvaWQgQ29sbGVjdFZhcmlhYmxlczo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAq
c3ltYm9sKQogICAgIH0KIH0KIAotY2xhc3MgTmFtZUhhc2hpbmdUcmF2ZXJzZXIgOiBwdWJsaWMg
R2V0VmFyaWFibGVUcmF2ZXJzZXIKK3ZvaWQgQ29sbGVjdFZhcmlhYmxlczo6c2V0Q29tbW9uVmFy
aWFibGVQcm9wZXJ0aWVzKGNvbnN0IFRUeXBlICZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFN0cmluZyAmbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclZhcmlh
YmxlICp2YXJpYWJsZU91dCkgY29uc3QKIHsKLSAgcHVibGljOgotICAgIE5hbWVIYXNoaW5nVHJh
dmVyc2VyKFNoSGFzaEZ1bmN0aW9uNjQgaGFzaEZ1bmN0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFRTeW1ib2xUYWJsZSAmc3ltYm9sVGFibGUpCi0gICAgICAgIDogR2V0VmFy
aWFibGVUcmF2ZXJzZXIoc3ltYm9sVGFibGUpLAotICAgICAgICAgIG1IYXNoRnVuY3Rpb24oaGFz
aEZ1bmN0aW9uKQotICAgIHt9Ci0KLSAgcHJpdmF0ZToKLSAgICB2b2lkIHZpc2l0VmFyaWFibGUo
U2hhZGVyVmFyaWFibGUgKnZhcmlhYmxlKSBvdmVycmlkZQorICAgIEFTU0VSVCh2YXJpYWJsZU91
dCk7CisKKyAgICBjb25zdCBUU3RydWN0dXJlICpzdHJ1Y3R1cmUgPSB0eXBlLmdldFN0cnVjdCgp
OworCisgICAgaWYgKCFzdHJ1Y3R1cmUpCiAgICAgewotICAgICAgICBUU3RyaW5nIHN0cmluZ05h
bWUgPSBUU3RyaW5nKHZhcmlhYmxlLT5uYW1lLmNfc3RyKCkpOwotICAgICAgICB2YXJpYWJsZS0+
bWFwcGVkTmFtZSA9IFRJbnRlcm1UcmF2ZXJzZXI6Omhhc2goc3RyaW5nTmFtZSwgbUhhc2hGdW5j
dGlvbikuY19zdHIoKTsKKyAgICAgICAgdmFyaWFibGVPdXQtPnR5cGUgICAgICA9IEdMVmFyaWFi
bGVUeXBlKHR5cGUpOworICAgICAgICB2YXJpYWJsZU91dC0+cHJlY2lzaW9uID0gR0xWYXJpYWJs
ZVByZWNpc2lvbih0eXBlKTsKICAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLy8gTm90
ZTogdGhpcyBlbnVtIHZhbHVlIGlzIG5vdCBleHBvc2VkIG91dHNpZGUgQU5HTEUKKyAgICAgICAg
dmFyaWFibGVPdXQtPnR5cGUgICAgICAgPSBHTF9TVFJVQ1RfQU5HTEVYOworICAgICAgICB2YXJp
YWJsZU91dC0+c3RydWN0TmFtZSA9IHN0cnVjdHVyZS0+bmFtZSgpLmNfc3RyKCk7CisKKyAgICAg
ICAgY29uc3QgVEZpZWxkTGlzdCAmZmllbGRzID0gc3RydWN0dXJlLT5maWVsZHMoKTsKIAotICAg
IFNoSGFzaEZ1bmN0aW9uNjQgbUhhc2hGdW5jdGlvbjsKLX07CisgICAgICAgIGZvciAoVEZpZWxk
ICpmaWVsZCA6IGZpZWxkcykKKyAgICAgICAgeworICAgICAgICAgICAgLy8gUmVnYXJkbGVzcyBv
ZiB0aGUgdmFyaWFibGUgdHlwZSAodW5pZm9ybSwgaW4vb3V0IGV0Yy4pIGl0cyBmaWVsZHMgYXJl
IGFsd2F5cyBwbGFpbgorICAgICAgICAgICAgLy8gU2hhZGVyVmFyaWFibGUgb2JqZWN0cy4KKyAg
ICAgICAgICAgIFNoYWRlclZhcmlhYmxlIGZpZWxkVmFyaWFibGU7CisgICAgICAgICAgICBzZXRD
b21tb25WYXJpYWJsZVByb3BlcnRpZXMoKmZpZWxkLT50eXBlKCksIGZpZWxkLT5uYW1lKCksICZm
aWVsZFZhcmlhYmxlKTsKKyAgICAgICAgICAgIHZhcmlhYmxlT3V0LT5maWVsZHMucHVzaF9iYWNr
KGZpZWxkVmFyaWFibGUpOworICAgICAgICB9CisgICAgfQorICAgIHZhcmlhYmxlT3V0LT5uYW1l
ICAgICAgID0gbmFtZS5jX3N0cigpOworICAgIHZhcmlhYmxlT3V0LT5tYXBwZWROYW1lID0gVElu
dGVybVRyYXZlcnNlcjo6aGFzaChuYW1lLCBtSGFzaEZ1bmN0aW9uKS5jX3N0cigpOworICAgIHZh
cmlhYmxlT3V0LT5hcnJheVNpemUgID0gdHlwZS5nZXRBcnJheVNpemUoKTsKK30KIAotLy8gQXR0
cmlidXRlcywgd2hpY2ggY2Fubm90IGhhdmUgc3RydWN0IGZpZWxkcywgYXJlIGEgc3BlY2lhbCBj
YXNlCi10ZW1wbGF0ZSA8Pgotdm9pZCBDb2xsZWN0VmFyaWFibGVzOjp2aXNpdFZhcmlhYmxlKGNv
bnN0IFRJbnRlcm1TeW1ib2wgKnZhcmlhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0ZDo6dmVjdG9yPEF0dHJpYnV0ZT4gKmluZm9MaXN0KSBjb25zdAorQXR0cmli
dXRlIENvbGxlY3RWYXJpYWJsZXM6OnJlY29yZEF0dHJpYnV0ZShjb25zdCBUSW50ZXJtU3ltYm9s
ICZ2YXJpYWJsZSkgY29uc3QKIHsKLSAgICBBU1NFUlQodmFyaWFibGUpOwotICAgIGNvbnN0IFRU
eXBlICZ0eXBlID0gdmFyaWFibGUtPmdldFR5cGUoKTsKKyAgICBjb25zdCBUVHlwZSAmdHlwZSA9
IHZhcmlhYmxlLmdldFR5cGUoKTsKICAgICBBU1NFUlQoIXR5cGUuZ2V0U3RydWN0KCkpOwogCiAg
ICAgQXR0cmlidXRlIGF0dHJpYnV0ZTsKKyAgICBzZXRDb21tb25WYXJpYWJsZVByb3BlcnRpZXMo
dHlwZSwgdmFyaWFibGUuZ2V0U3ltYm9sKCksICZhdHRyaWJ1dGUpOwogCi0gICAgYXR0cmlidXRl
LnR5cGUgPSBHTFZhcmlhYmxlVHlwZSh0eXBlKTsKLSAgICBhdHRyaWJ1dGUucHJlY2lzaW9uID0g
R0xWYXJpYWJsZVByZWNpc2lvbih0eXBlKTsKLSAgICBhdHRyaWJ1dGUubmFtZSA9IHZhcmlhYmxl
LT5nZXRTeW1ib2woKS5jX3N0cigpOwotICAgIGF0dHJpYnV0ZS5hcnJheVNpemUgID0gdHlwZS5n
ZXRBcnJheVNpemUoKTsKLSAgICBhdHRyaWJ1dGUubWFwcGVkTmFtZSA9IFRJbnRlcm1UcmF2ZXJz
ZXI6Omhhc2godmFyaWFibGUtPmdldFN5bWJvbCgpLCBtSGFzaEZ1bmN0aW9uKS5jX3N0cigpOwot
ICAgIGF0dHJpYnV0ZS5sb2NhdGlvbiA9IHZhcmlhYmxlLT5nZXRUeXBlKCkuZ2V0TGF5b3V0UXVh
bGlmaWVyKCkubG9jYXRpb247Ci0KLSAgICBpbmZvTGlzdC0+cHVzaF9iYWNrKGF0dHJpYnV0ZSk7
CisgICAgYXR0cmlidXRlLmxvY2F0aW9uID0gdHlwZS5nZXRMYXlvdXRRdWFsaWZpZXIoKS5sb2Nh
dGlvbjsKKyAgICByZXR1cm4gYXR0cmlidXRlOwogfQogCi10ZW1wbGF0ZSA8Pgotdm9pZCBDb2xs
ZWN0VmFyaWFibGVzOjp2aXNpdFZhcmlhYmxlKGNvbnN0IFRJbnRlcm1TeW1ib2wgKnZhcmlhYmxl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPE91dHB1
dFZhcmlhYmxlPiAqaW5mb0xpc3QpIGNvbnN0CitPdXRwdXRWYXJpYWJsZSBDb2xsZWN0VmFyaWFi
bGVzOjpyZWNvcmRPdXRwdXRWYXJpYWJsZShjb25zdCBUSW50ZXJtU3ltYm9sICZ2YXJpYWJsZSkg
Y29uc3QKIHsKLSAgICBBU1NFUlQodmFyaWFibGUpOwotICAgIGNvbnN0IFRUeXBlICZ0eXBlID0g
dmFyaWFibGUtPmdldFR5cGUoKTsKKyAgICBjb25zdCBUVHlwZSAmdHlwZSA9IHZhcmlhYmxlLmdl
dFR5cGUoKTsKICAgICBBU1NFUlQoIXR5cGUuZ2V0U3RydWN0KCkpOwogCi0gICAgT3V0cHV0VmFy
aWFibGUgYXR0cmlidXRlOworICAgIE91dHB1dFZhcmlhYmxlIG91dHB1dFZhcmlhYmxlOworICAg
IHNldENvbW1vblZhcmlhYmxlUHJvcGVydGllcyh0eXBlLCB2YXJpYWJsZS5nZXRTeW1ib2woKSwg
Jm91dHB1dFZhcmlhYmxlKTsKIAotICAgIGF0dHJpYnV0ZS50eXBlICAgICAgID0gR0xWYXJpYWJs
ZVR5cGUodHlwZSk7Ci0gICAgYXR0cmlidXRlLnByZWNpc2lvbiAgPSBHTFZhcmlhYmxlUHJlY2lz
aW9uKHR5cGUpOwotICAgIGF0dHJpYnV0ZS5uYW1lICAgICAgID0gdmFyaWFibGUtPmdldFN5bWJv
bCgpLmNfc3RyKCk7Ci0gICAgYXR0cmlidXRlLmFycmF5U2l6ZSAgPSB0eXBlLmdldEFycmF5U2l6
ZSgpOwotICAgIGF0dHJpYnV0ZS5tYXBwZWROYW1lID0gVEludGVybVRyYXZlcnNlcjo6aGFzaCh2
YXJpYWJsZS0+Z2V0U3ltYm9sKCksIG1IYXNoRnVuY3Rpb24pLmNfc3RyKCk7Ci0gICAgYXR0cmli
dXRlLmxvY2F0aW9uICAgPSB2YXJpYWJsZS0+Z2V0VHlwZSgpLmdldExheW91dFF1YWxpZmllcigp
LmxvY2F0aW9uOworICAgIG91dHB1dFZhcmlhYmxlLmxvY2F0aW9uID0gdHlwZS5nZXRMYXlvdXRR
dWFsaWZpZXIoKS5sb2NhdGlvbjsKKyAgICByZXR1cm4gb3V0cHV0VmFyaWFibGU7Cit9CiAKLSAg
ICBpbmZvTGlzdC0+cHVzaF9iYWNrKGF0dHJpYnV0ZSk7CitWYXJ5aW5nIENvbGxlY3RWYXJpYWJs
ZXM6OnJlY29yZFZhcnlpbmcoY29uc3QgVEludGVybVN5bWJvbCAmdmFyaWFibGUpIGNvbnN0Cit7
CisgICAgY29uc3QgVFR5cGUgJnR5cGUgPSB2YXJpYWJsZS5nZXRUeXBlKCk7CisKKyAgICBWYXJ5
aW5nIHZhcnlpbmc7CisgICAgc2V0Q29tbW9uVmFyaWFibGVQcm9wZXJ0aWVzKHR5cGUsIHZhcmlh
YmxlLmdldFN5bWJvbCgpLCAmdmFyeWluZyk7CisKKyAgICBzd2l0Y2ggKHR5cGUuZ2V0UXVhbGlm
aWVyKCkpCisgICAgeworICAgICAgICBjYXNlIEV2cVZhcnlpbmdJbjoKKyAgICAgICAgY2FzZSBF
dnFWYXJ5aW5nT3V0OgorICAgICAgICBjYXNlIEV2cVZlcnRleE91dDoKKyAgICAgICAgY2FzZSBF
dnFTbW9vdGhPdXQ6CisgICAgICAgIGNhc2UgRXZxRmxhdE91dDoKKyAgICAgICAgY2FzZSBFdnFD
ZW50cm9pZE91dDoKKyAgICAgICAgICAgIGlmIChtU3ltYm9sVGFibGUuaXNWYXJ5aW5nSW52YXJp
YW50KHN0ZDo6c3RyaW5nKHZhcmlhYmxlLmdldFN5bWJvbCgpLmNfc3RyKCkpKSB8fAorICAgICAg
ICAgICAgICAgIHR5cGUuaXNJbnZhcmlhbnQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICB2YXJ5aW5nLmlzSW52YXJpYW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgdmFyeWluZy5pbnRlcnBvbGF0aW9uID0gR2V0SW50ZXJwb2xhdGlvblR5cGUodHlwZS5n
ZXRRdWFsaWZpZXIoKSk7CisgICAgcmV0dXJuIHZhcnlpbmc7CiB9CiAKLXRlbXBsYXRlIDw+Ci12
b2lkIENvbGxlY3RWYXJpYWJsZXM6OnZpc2l0VmFyaWFibGUoY29uc3QgVEludGVybVN5bWJvbCAq
dmFyaWFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0
b3I8SW50ZXJmYWNlQmxvY2s+ICppbmZvTGlzdCkgY29uc3QKK0ludGVyZmFjZUJsb2NrIENvbGxl
Y3RWYXJpYWJsZXM6OnJlY29yZEludGVyZmFjZUJsb2NrKGNvbnN0IFRJbnRlcm1TeW1ib2wgJnZh
cmlhYmxlKSBjb25zdAogewotICAgIEludGVyZmFjZUJsb2NrIGludGVyZmFjZUJsb2NrOwotICAg
IGNvbnN0IFRJbnRlcmZhY2VCbG9jayAqYmxvY2tUeXBlID0gdmFyaWFibGUtPmdldFR5cGUoKS5n
ZXRJbnRlcmZhY2VCbG9jaygpOworICAgIGNvbnN0IFRJbnRlcmZhY2VCbG9jayAqYmxvY2tUeXBl
ID0gdmFyaWFibGUuZ2V0VHlwZSgpLmdldEludGVyZmFjZUJsb2NrKCk7CiAgICAgQVNTRVJUKGJs
b2NrVHlwZSk7CiAKKyAgICBJbnRlcmZhY2VCbG9jayBpbnRlcmZhY2VCbG9jazsKICAgICBpbnRl
cmZhY2VCbG9jay5uYW1lID0gYmxvY2tUeXBlLT5uYW1lKCkuY19zdHIoKTsKICAgICBpbnRlcmZh
Y2VCbG9jay5tYXBwZWROYW1lID0KICAgICAgICAgVEludGVybVRyYXZlcnNlcjo6aGFzaChibG9j
a1R5cGUtPm5hbWUoKS5jX3N0cigpLCBtSGFzaEZ1bmN0aW9uKS5jX3N0cigpOwotICAgIGludGVy
ZmFjZUJsb2NrLmluc3RhbmNlTmFtZSA9IChibG9ja1R5cGUtPmhhc0luc3RhbmNlTmFtZSgpID8g
YmxvY2tUeXBlLT5pbnN0YW5jZU5hbWUoKS5jX3N0cigpIDogIiIpOwotICAgIGludGVyZmFjZUJs
b2NrLmFycmF5U2l6ZSA9IHZhcmlhYmxlLT5nZXRBcnJheVNpemUoKTsKKyAgICBpbnRlcmZhY2VC
bG9jay5pbnN0YW5jZU5hbWUgPQorICAgICAgICAoYmxvY2tUeXBlLT5oYXNJbnN0YW5jZU5hbWUo
KSA/IGJsb2NrVHlwZS0+aW5zdGFuY2VOYW1lKCkuY19zdHIoKSA6ICIiKTsKKyAgICBpbnRlcmZh
Y2VCbG9jay5hcnJheVNpemUgICAgICAgID0gdmFyaWFibGUuZ2V0QXJyYXlTaXplKCk7CiAgICAg
aW50ZXJmYWNlQmxvY2suaXNSb3dNYWpvckxheW91dCA9IChibG9ja1R5cGUtPm1hdHJpeFBhY2tp
bmcoKSA9PSBFbXBSb3dNYWpvcik7Ci0gICAgaW50ZXJmYWNlQmxvY2subGF5b3V0ID0gR2V0Qmxv
Y2tMYXlvdXRUeXBlKGJsb2NrVHlwZS0+YmxvY2tTdG9yYWdlKCkpOworICAgIGludGVyZmFjZUJs
b2NrLmxheW91dCAgICAgICAgICAgPSBHZXRCbG9ja0xheW91dFR5cGUoYmxvY2tUeXBlLT5ibG9j
a1N0b3JhZ2UoKSk7CiAKICAgICAvLyBHYXRoZXIgZmllbGQgaW5mb3JtYXRpb24KICAgICBmb3Ig
KGNvbnN0IFRGaWVsZCAqZmllbGQgOiBibG9ja1R5cGUtPmZpZWxkcygpKQogICAgIHsKICAgICAg
ICAgY29uc3QgVFR5cGUgJmZpZWxkVHlwZSA9ICpmaWVsZC0+dHlwZSgpOwogCi0gICAgICAgIE5h
bWVIYXNoaW5nVHJhdmVyc2VyIHRyYXZlcnNlcihtSGFzaEZ1bmN0aW9uLCBtU3ltYm9sVGFibGUp
OwotICAgICAgICB0cmF2ZXJzZXIudHJhdmVyc2UoZmllbGRUeXBlLCBmaWVsZC0+bmFtZSgpLCAm
aW50ZXJmYWNlQmxvY2suZmllbGRzKTsKLQotICAgICAgICBpbnRlcmZhY2VCbG9jay5maWVsZHMu
YmFjaygpLmlzUm93TWFqb3JMYXlvdXQgPSAoZmllbGRUeXBlLmdldExheW91dFF1YWxpZmllcigp
Lm1hdHJpeFBhY2tpbmcgPT0gRW1wUm93TWFqb3IpOworICAgICAgICBJbnRlcmZhY2VCbG9ja0Zp
ZWxkIGZpZWxkVmFyaWFibGU7CisgICAgICAgIHNldENvbW1vblZhcmlhYmxlUHJvcGVydGllcyhm
aWVsZFR5cGUsIGZpZWxkLT5uYW1lKCksICZmaWVsZFZhcmlhYmxlKTsKKyAgICAgICAgZmllbGRW
YXJpYWJsZS5pc1Jvd01ham9yTGF5b3V0ID0KKyAgICAgICAgICAgIChmaWVsZFR5cGUuZ2V0TGF5
b3V0UXVhbGlmaWVyKCkubWF0cml4UGFja2luZyA9PSBFbXBSb3dNYWpvcik7CisgICAgICAgIGlu
dGVyZmFjZUJsb2NrLmZpZWxkcy5wdXNoX2JhY2soZmllbGRWYXJpYWJsZSk7CiAgICAgfQotCi0g
ICAgaW5mb0xpc3QtPnB1c2hfYmFjayhpbnRlcmZhY2VCbG9jayk7CisgICAgcmV0dXJuIGludGVy
ZmFjZUJsb2NrOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVmFyVD4KLXZvaWQgQ29sbGVjdFZh
cmlhYmxlczo6dmlzaXRWYXJpYWJsZShjb25zdCBUSW50ZXJtU3ltYm9sICp2YXJpYWJsZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxWYXJUPiAqaW5m
b0xpc3QpIGNvbnN0CitVbmlmb3JtIENvbGxlY3RWYXJpYWJsZXM6OnJlY29yZFVuaWZvcm0oY29u
c3QgVEludGVybVN5bWJvbCAmdmFyaWFibGUpIGNvbnN0CiB7Ci0gICAgTmFtZUhhc2hpbmdUcmF2
ZXJzZXIgdHJhdmVyc2VyKG1IYXNoRnVuY3Rpb24sIG1TeW1ib2xUYWJsZSk7Ci0gICAgdHJhdmVy
c2VyLnRyYXZlcnNlKHZhcmlhYmxlLT5nZXRUeXBlKCksIHZhcmlhYmxlLT5nZXRTeW1ib2woKSwg
aW5mb0xpc3QpOworICAgIFVuaWZvcm0gdW5pZm9ybTsKKyAgICBzZXRDb21tb25WYXJpYWJsZVBy
b3BlcnRpZXModmFyaWFibGUuZ2V0VHlwZSgpLCB2YXJpYWJsZS5nZXRTeW1ib2woKSwgJnVuaWZv
cm0pOworICAgIHVuaWZvcm0uYmluZGluZyA9IHZhcmlhYmxlLmdldFR5cGUoKS5nZXRMYXlvdXRR
dWFsaWZpZXIoKS5iaW5kaW5nOworICAgIHVuaWZvcm0ubG9jYXRpb24gPSB2YXJpYWJsZS5nZXRU
eXBlKCkuZ2V0TGF5b3V0UXVhbGlmaWVyKCkubG9jYXRpb247CisgICAgcmV0dXJuIHVuaWZvcm07
CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBWYXJUPgotdm9pZCBDb2xsZWN0VmFyaWFibGVzOjp2
aXNpdEluZm9MaXN0KGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAmc2VxdWVuY2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8VmFyVD4gKmluZm9MaXN0KSBj
b25zdAorYm9vbCBDb2xsZWN0VmFyaWFibGVzOjp2aXNpdERlY2xhcmF0aW9uKFZpc2l0LCBUSW50
ZXJtRGVjbGFyYXRpb24gKm5vZGUpCiB7Ci0gICAgZm9yIChzaXplX3Qgc2VxSW5kZXggPSAwOyBz
ZXFJbmRleCA8IHNlcXVlbmNlLnNpemUoKTsgc2VxSW5kZXgrKykKKyAgICBjb25zdCBUSW50ZXJt
U2VxdWVuY2UgJnNlcXVlbmNlID0gKihub2RlLT5nZXRTZXF1ZW5jZSgpKTsKKyAgICBBU1NFUlQo
IXNlcXVlbmNlLmVtcHR5KCkpOworCisgICAgY29uc3QgVEludGVybVR5cGVkICZ0eXBlZE5vZGUg
PSAqKHNlcXVlbmNlLmZyb250KCktPmdldEFzVHlwZWQoKSk7CisgICAgVFF1YWxpZmllciBxdWFs
aWZpZXIgICAgICAgICAgPSB0eXBlZE5vZGUuZ2V0UXVhbGlmaWVyKCk7CisKKyAgICBib29sIGlz
U2hhZGVyVmFyaWFibGUgPSBxdWFsaWZpZXIgPT0gRXZxQXR0cmlidXRlIHx8IHF1YWxpZmllciA9
PSBFdnFWZXJ0ZXhJbiB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YWxpZmllciA9
PSBFdnFGcmFnbWVudE91dCB8fCBxdWFsaWZpZXIgPT0gRXZxVW5pZm9ybSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElzVmFyeWluZyhxdWFsaWZpZXIpOworCisgICAgaWYgKHR5cGVk
Tm9kZS5nZXRCYXNpY1R5cGUoKSAhPSBFYnRJbnRlcmZhY2VCbG9jayAmJiAhaXNTaGFkZXJWYXJp
YWJsZSkKICAgICB7Ci0gICAgICAgIGNvbnN0IFRJbnRlcm1TeW1ib2wgKnZhcmlhYmxlID0gc2Vx
dWVuY2Vbc2VxSW5kZXhdLT5nZXRBc1N5bWJvbE5vZGUoKTsKLSAgICAgICAgLy8gVGhlIG9ubHkg
Y2FzZSBpbiB3aGljaCB0aGUgc2VxdWVuY2Ugd2lsbCBub3QgY29udGFpbiBhCi0gICAgICAgIC8v
IFRJbnRlcm1TeW1ib2wgbm9kZSBpcyBpbml0aWFsaXphdGlvbi4gSXQgd2lsbCBjb250YWluIGEK
LSAgICAgICAgLy8gVEludGVyQmluYXJ5IG5vZGUgaW4gdGhhdCBjYXNlLiBTaW5jZSBhdHRyaWJ1
dGVzLCB1bmlmb3JtcywKLSAgICAgICAgLy8gYW5kIHZhcnlpbmdzIGNhbm5vdCBiZSBpbml0aWFs
aXplZCBpbiBhIHNoYWRlciwgd2UgbXVzdCBoYXZlCi0gICAgICAgIC8vIG9ubHkgVEludGVybVN5
bWJvbCBub2RlcyBpbiB0aGUgc2VxdWVuY2UuCi0gICAgICAgIEFTU0VSVCh2YXJpYWJsZSAhPSBO
VUxMKTsKLSAgICAgICAgdmlzaXRWYXJpYWJsZSh2YXJpYWJsZSwgaW5mb0xpc3QpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9Ci19Ci0KLWJvb2wgQ29sbGVjdFZhcmlhYmxlczo6dmlzaXRB
Z2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCi17Ci0gICAgYm9vbCB2aXNp
dENoaWxkcmVuID0gdHJ1ZTsKIAotICAgIHN3aXRjaCAobm9kZS0+Z2V0T3AoKSkKKyAgICBmb3Ig
KFRJbnRlcm1Ob2RlICp2YXJpYWJsZU5vZGUgOiBzZXF1ZW5jZSkKICAgICB7Ci0gICAgICBjYXNl
IEVPcERlY2xhcmF0aW9uOgorICAgICAgICAvLyBUaGUgb25seSBjYXNlIGluIHdoaWNoIHRoZSBz
ZXF1ZW5jZSB3aWxsIG5vdCBjb250YWluIGEgVEludGVybVN5bWJvbCBub2RlIGlzCisgICAgICAg
IC8vIGluaXRpYWxpemF0aW9uLiBJdCB3aWxsIGNvbnRhaW4gYSBUSW50ZXJCaW5hcnkgbm9kZSBp
biB0aGF0IGNhc2UuIFNpbmNlIGF0dHJpYnV0ZXMsCisgICAgICAgIC8vIHVuaWZvcm1zLCB2YXJ5
aW5ncywgb3V0cHV0cyBhbmQgaW50ZXJmYWNlIGJsb2NrcyBjYW5ub3QgYmUgaW5pdGlhbGl6ZWQg
aW4gYSBzaGFkZXIsIHdlCisgICAgICAgIC8vIG11c3QgaGF2ZSBvbmx5IFRJbnRlcm1TeW1ib2wg
bm9kZXMgaW4gdGhlIHNlcXVlbmNlIGluIHRoZSBjYXNlcyB3ZSBhcmUgaW50ZXJlc3RlZCBpbi4K
KyAgICAgICAgY29uc3QgVEludGVybVN5bWJvbCAmdmFyaWFibGUgPSAqdmFyaWFibGVOb2RlLT5n
ZXRBc1N5bWJvbE5vZGUoKTsKKyAgICAgICAgaWYgKHR5cGVkTm9kZS5nZXRCYXNpY1R5cGUoKSA9
PSBFYnRJbnRlcmZhY2VCbG9jaykKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgVEludGVy
bVNlcXVlbmNlICZzZXF1ZW5jZSA9ICoobm9kZS0+Z2V0U2VxdWVuY2UoKSk7Ci0gICAgICAgICAg
ICBBU1NFUlQoIXNlcXVlbmNlLmVtcHR5KCkpOwotCi0gICAgICAgICAgICBjb25zdCBUSW50ZXJt
VHlwZWQgJnR5cGVkTm9kZSA9ICooc2VxdWVuY2UuZnJvbnQoKS0+Z2V0QXNUeXBlZCgpKTsKLSAg
ICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyID0gdHlwZWROb2RlLmdldFF1YWxpZmllcigp
OwotCi0gICAgICAgICAgICBpZiAodHlwZWROb2RlLmdldEJhc2ljVHlwZSgpID09IEVidEludGVy
ZmFjZUJsb2NrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZpc2l0SW5mb0xpc3Qo
c2VxdWVuY2UsIG1JbnRlcmZhY2VCbG9ja3MpOwotICAgICAgICAgICAgICAgIHZpc2l0Q2hpbGRy
ZW4gPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKHF1YWxpZmll
ciA9PSBFdnFBdHRyaWJ1dGUgfHwgcXVhbGlmaWVyID09IEV2cVZlcnRleEluIHx8Ci0gICAgICAg
ICAgICAgICAgICAgICBxdWFsaWZpZXIgPT0gRXZxRnJhZ21lbnRPdXQgfHwgcXVhbGlmaWVyID09
IEV2cVVuaWZvcm0gfHwKLSAgICAgICAgICAgICAgICAgICAgIElzVmFyeWluZyhxdWFsaWZpZXIp
KQorICAgICAgICAgICAgbUludGVyZmFjZUJsb2Nrcy0+cHVzaF9iYWNrKHJlY29yZEludGVyZmFj
ZUJsb2NrKHZhcmlhYmxlKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7Cisg
ICAgICAgICAgICBzd2l0Y2ggKHF1YWxpZmllcikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBzd2l0Y2ggKHF1YWxpZmllcikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICBjYXNlIEV2cUF0dHJpYnV0ZToKLSAgICAgICAgICAgICAgICAgIGNhc2UgRXZxVmVydGV4
SW46Ci0gICAgICAgICAgICAgICAgICAgIHZpc2l0SW5mb0xpc3Qoc2VxdWVuY2UsIG1BdHRyaWJz
KTsKKyAgICAgICAgICAgICAgICBjYXNlIEV2cUF0dHJpYnV0ZToKKyAgICAgICAgICAgICAgICBj
YXNlIEV2cVZlcnRleEluOgorICAgICAgICAgICAgICAgICAgICBtQXR0cmlicy0+cHVzaF9iYWNr
KHJlY29yZEF0dHJpYnV0ZSh2YXJpYWJsZSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgIGNhc2UgRXZxRnJhZ21lbnRPdXQ6Ci0gICAgICAgICAgICAgICAg
ICAgIHZpc2l0SW5mb0xpc3Qoc2VxdWVuY2UsIG1PdXRwdXRWYXJpYWJsZXMpOworICAgICAgICAg
ICAgICAgIGNhc2UgRXZxRnJhZ21lbnRPdXQ6CisgICAgICAgICAgICAgICAgICAgIG1PdXRwdXRW
YXJpYWJsZXMtPnB1c2hfYmFjayhyZWNvcmRPdXRwdXRWYXJpYWJsZSh2YXJpYWJsZSkpOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGNhc2UgRXZxVW5pZm9y
bToKLSAgICAgICAgICAgICAgICAgICAgdmlzaXRJbmZvTGlzdChzZXF1ZW5jZSwgbVVuaWZvcm1z
KTsKKyAgICAgICAgICAgICAgICBjYXNlIEV2cVVuaWZvcm06CisgICAgICAgICAgICAgICAgICAg
IG1Vbmlmb3Jtcy0+cHVzaF9iYWNrKHJlY29yZFVuaWZvcm0odmFyaWFibGUpKTsKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICAgICAgICB2aXNpdEluZm9MaXN0KHNlcXVlbmNlLCBtVmFyeWluZ3MpOworICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIG1WYXJ5aW5ncy0+cHVzaF9iYWNr
KHJlY29yZFZhcnlpbmcodmFyaWFibGUpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdmlzaXRDaGlsZHJlbiA9IGZhbHNl
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgIGRl
ZmF1bHQ6IGJyZWFrOwogICAgIH0KIAotICAgIHJldHVybiB2aXNpdENoaWxkcmVuOworICAgIC8v
IE5vbmUgb2YgdGhlIHJlY29yZGVkIHZhcmlhYmxlcyBjYW4gaGF2ZSBpbml0aWFsaXplcnMsIHNv
IHdlIGRvbid0IG5lZWQgdG8gdHJhdmVyc2UgdGhlCisgICAgLy8gZGVjbGFyYXRvcnMuCisgICAg
cmV0dXJuIGZhbHNlOwogfQogCiBib29sIENvbGxlY3RWYXJpYWJsZXM6OnZpc2l0QmluYXJ5KFZp
c2l0LCBUSW50ZXJtQmluYXJ5ICpiaW5hcnlOb2RlKQpAQCAtNjgwLDggKzY5OSw3IEBAIHZvaWQg
RXhwYW5kVmFyaWFibGUoY29uc3QgU2hhZGVyVmFyaWFibGUgJnZhcmlhYmxlLAogICAgIH0KIH0K
IAotdm9pZCBFeHBhbmRVbmlmb3Jtcyhjb25zdCBzdGQ6OnZlY3RvcjxVbmlmb3JtPiAmY29tcGFj
dCwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8U2hhZGVyVmFyaWFibGU+ICpleHBh
bmRlZCkKK3ZvaWQgRXhwYW5kVW5pZm9ybXMoY29uc3Qgc3RkOjp2ZWN0b3I8VW5pZm9ybT4gJmNv
bXBhY3QsIHN0ZDo6dmVjdG9yPFNoYWRlclZhcmlhYmxlPiAqZXhwYW5kZWQpCiB7CiAgICAgZm9y
IChzaXplX3QgdmFyaWFibGVJbmRleCA9IDA7IHZhcmlhYmxlSW5kZXggPCBjb21wYWN0LnNpemUo
KTsgdmFyaWFibGVJbmRleCsrKQogICAgIHsKQEAgLTY4OSw1ICs3MDcsNCBAQCB2b2lkIEV4cGFu
ZFVuaWZvcm1zKGNvbnN0IHN0ZDo6dmVjdG9yPFVuaWZvcm0+ICZjb21wYWN0LAogICAgICAgICBF
eHBhbmRWYXJpYWJsZSh2YXJpYWJsZSwgdmFyaWFibGUubmFtZSwgdmFyaWFibGUubWFwcGVkTmFt
ZSwgdmFyaWFibGUuc3RhdGljVXNlLCBleHBhbmRlZCk7CiAgICAgfQogfQotCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYXJp
YWJsZUluZm8uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xh
dG9yL1ZhcmlhYmxlSW5mby5oCmluZGV4IGY3OTAzNWQzODQyLi5mMjRlMmM4MTZmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFy
aWFibGVJbmZvLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3Ry
YW5zbGF0b3IvVmFyaWFibGVJbmZvLmgKQEAgLTMxLDE1ICszMSwxOSBAQCBjbGFzcyBDb2xsZWN0
VmFyaWFibGVzIDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFRFeHRlbnNpb25CZWhhdmlvciAmZXh0ZW5zaW9uQmVoYXZpb3IpOwogCiAgICAgdm9p
ZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpzeW1ib2wpIG92ZXJyaWRlOwotICAgIGJvb2wg
dmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpIG92ZXJyaWRlOwor
ICAgIGJvb2wgdmlzaXREZWNsYXJhdGlvbihWaXNpdCwgVEludGVybURlY2xhcmF0aW9uICpub2Rl
KSBvdmVycmlkZTsKICAgICBib29sIHZpc2l0QmluYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmlu
YXJ5ICpiaW5hcnlOb2RlKSBvdmVycmlkZTsKIAogICBwcml2YXRlOgotICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBWYXJUPgotICAgIHZvaWQgdmlzaXRWYXJpYWJsZShjb25zdCBUSW50ZXJtU3ltYm9s
ICp2YXJpYWJsZSwgc3RkOjp2ZWN0b3I8VmFyVD4gKmluZm9MaXN0KSBjb25zdDsKKyAgICB2b2lk
IHNldENvbW1vblZhcmlhYmxlUHJvcGVydGllcyhjb25zdCBUVHlwZSAmdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUU3RyaW5nICZuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlclZhcmlhYmxlICp2YXJpYWJsZU91
dCkgY29uc3Q7CiAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFyVD4KLSAgICB2b2lkIHZpc2l0
SW5mb0xpc3QoY29uc3QgVEludGVybVNlcXVlbmNlICZzZXF1ZW5jZSwgc3RkOjp2ZWN0b3I8VmFy
VD4gKmluZm9MaXN0KSBjb25zdDsKKyAgICBBdHRyaWJ1dGUgcmVjb3JkQXR0cmlidXRlKGNvbnN0
IFRJbnRlcm1TeW1ib2wgJnZhcmlhYmxlKSBjb25zdDsKKyAgICBPdXRwdXRWYXJpYWJsZSByZWNv
cmRPdXRwdXRWYXJpYWJsZShjb25zdCBUSW50ZXJtU3ltYm9sICZ2YXJpYWJsZSkgY29uc3Q7Cisg
ICAgVmFyeWluZyByZWNvcmRWYXJ5aW5nKGNvbnN0IFRJbnRlcm1TeW1ib2wgJnZhcmlhYmxlKSBj
b25zdDsKKyAgICBJbnRlcmZhY2VCbG9jayByZWNvcmRJbnRlcmZhY2VCbG9jayhjb25zdCBUSW50
ZXJtU3ltYm9sICZ2YXJpYWJsZSkgY29uc3Q7CisgICAgVW5pZm9ybSByZWNvcmRVbmlmb3JtKGNv
bnN0IFRJbnRlcm1TeW1ib2wgJnZhcmlhYmxlKSBjb25zdDsKIAogICAgIHN0ZDo6dmVjdG9yPEF0
dHJpYnV0ZT4gKm1BdHRyaWJzOwogICAgIHN0ZDo6dmVjdG9yPE91dHB1dFZhcmlhYmxlPiAqbU91
dHB1dFZhcmlhYmxlczsKQEAgLTc5LDkgKzgzLDcgQEAgdm9pZCBFeHBhbmRWYXJpYWJsZShjb25z
dCBTaGFkZXJWYXJpYWJsZSAmdmFyaWFibGUsCiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVj
dG9yPFNoYWRlclZhcmlhYmxlPiAqZXhwYW5kZWQpOwogCiAvLyBFeHBhbmQgc3RydWN0IHVuaWZv
cm1zIHRvIGZsYXR0ZW5lZCBsaXN0cyBvZiBzcGxpdCB2YXJpYWJsZXMKLXZvaWQgRXhwYW5kVW5p
Zm9ybXMoY29uc3Qgc3RkOjp2ZWN0b3I8VW5pZm9ybT4gJmNvbXBhY3QsCi0gICAgICAgICAgICAg
ICAgICAgIHN0ZDo6dmVjdG9yPFNoYWRlclZhcmlhYmxlPiAqZXhwYW5kZWQpOwotCit2b2lkIEV4
cGFuZFVuaWZvcm1zKGNvbnN0IHN0ZDo6dmVjdG9yPFVuaWZvcm0+ICZjb21wYWN0LCBzdGQ6OnZl
Y3RvcjxTaGFkZXJWYXJpYWJsZT4gKmV4cGFuZGVkKTsKIH0KIAogI2VuZGlmICAvLyBDT01QSUxF
Ul9UUkFOU0xBVE9SX1ZBUklBQkxFSU5GT19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVQYWNrZXIuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVQYWNr
ZXIuY3BwCmluZGV4IGE5ODFjOGFlMGIzLi45YzRjOTM3NmI1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVQYWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L1ZhcmlhYmxlUGFja2VyLmNwcApAQCAtMTUsMzMgKzE1LDMzIEBAIGludCBWYXJpYWJsZVBhY2tl
cjo6R2V0TnVtQ29tcG9uZW50c1BlclJvdyhzaDo6R0xlbnVtIHR5cGUpCiB7CiAgICAgc3dpdGNo
ICh0eXBlKQogICAgIHsKLSAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNDoKLSAgICAgIGNhc2UgR0xf
RkxPQVRfTUFUMjoKLSAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMng0OgotICAgICAgY2FzZSBHTF9G
TE9BVF9NQVQzeDQ6Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDR4MjoKLSAgICAgIGNhc2UgR0xf
RkxPQVRfTUFUNHgzOgotICAgICAgY2FzZSBHTF9GTE9BVF9WRUM0OgotICAgICAgY2FzZSBHTF9J
TlRfVkVDNDoKLSAgICAgIGNhc2UgR0xfQk9PTF9WRUM0OgotICAgICAgY2FzZSBHTF9VTlNJR05F
RF9JTlRfVkVDNDoKLSAgICAgICAgcmV0dXJuIDQ7Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6
Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDJ4MzoKLSAgICAgIGNhc2UgR0xfRkxPQVRfTUFUM3gy
OgotICAgICAgY2FzZSBHTF9GTE9BVF9WRUMzOgotICAgICAgY2FzZSBHTF9JTlRfVkVDMzoKLSAg
ICAgIGNhc2UgR0xfQk9PTF9WRUMzOgotICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfVkVDMzoK
LSAgICAgICAgcmV0dXJuIDM7Ci0gICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6Ci0gICAgICBjYXNl
IEdMX0lOVF9WRUMyOgotICAgICAgY2FzZSBHTF9CT09MX1ZFQzI6Ci0gICAgICBjYXNlIEdMX1VO
U0lHTkVEX0lOVF9WRUMyOgotICAgICAgICByZXR1cm4gMjsKLSAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgIEFTU0VSVChnbDo6VmFyaWFibGVDb21wb25lbnRDb3VudCh0eXBlKSA9PSAxKTsKLSAgICAg
ICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNDoKKyAgICAgICAgY2FzZSBH
TF9GTE9BVF9NQVQyOgorICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDJ4NDoKKyAgICAgICAgY2Fz
ZSBHTF9GTE9BVF9NQVQzeDQ6CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNHgyOgorICAgICAg
ICBjYXNlIEdMX0ZMT0FUX01BVDR4MzoKKyAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUM0OgorICAg
ICAgICBjYXNlIEdMX0lOVF9WRUM0OgorICAgICAgICBjYXNlIEdMX0JPT0xfVkVDNDoKKyAgICAg
ICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfVkVDNDoKKyAgICAgICAgICAgIHJldHVybiA0OworICAg
ICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMngzOgor
ICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDN4MjoKKyAgICAgICAgY2FzZSBHTF9GTE9BVF9WRUMz
OgorICAgICAgICBjYXNlIEdMX0lOVF9WRUMzOgorICAgICAgICBjYXNlIEdMX0JPT0xfVkVDMzoK
KyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfVkVDMzoKKyAgICAgICAgICAgIHJldHVybiAz
OworICAgICAgICBjYXNlIEdMX0ZMT0FUX1ZFQzI6CisgICAgICAgIGNhc2UgR0xfSU5UX1ZFQzI6
CisgICAgICAgIGNhc2UgR0xfQk9PTF9WRUMyOgorICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lO
VF9WRUMyOgorICAgICAgICAgICAgcmV0dXJuIDI7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBBU1NFUlQoZ2w6OlZhcmlhYmxlQ29tcG9uZW50Q291bnQodHlwZSkgPT0gMSk7CisgICAg
ICAgICAgICByZXR1cm4gMTsKICAgICB9CiB9CiAKQEAgLTQ5LDIxICs0OSwyMSBAQCBpbnQgVmFy
aWFibGVQYWNrZXI6OkdldE51bVJvd3Moc2g6OkdMZW51bSB0eXBlKQogewogICAgIHN3aXRjaCAo
dHlwZSkKICAgICB7Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6Ci0gICAgICBjYXNlIEdMX0ZM
T0FUX01BVDJ4NDoKLSAgICAgIGNhc2UgR0xfRkxPQVRfTUFUM3g0OgotICAgICAgY2FzZSBHTF9G
TE9BVF9NQVQ0eDM6Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDR4MjoKLSAgICAgICAgcmV0dXJu
IDQ7Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDM6Ci0gICAgICBjYXNlIEdMX0ZMT0FUX01BVDJ4
MzoKLSAgICAgIGNhc2UgR0xfRkxPQVRfTUFUM3gyOgotICAgICAgICByZXR1cm4gMzsKLSAgICAg
IGNhc2UgR0xfRkxPQVRfTUFUMjoKLSAgICAgICAgcmV0dXJuIDI7Ci0gICAgICBkZWZhdWx0Ogot
ICAgICAgICBBU1NFUlQoZ2w6OlZhcmlhYmxlUm93Q291bnQodHlwZSkgPT0gMSk7Ci0gICAgICAg
IHJldHVybiAxOworICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDQ6CisgICAgICAgIGNhc2UgR0xf
RkxPQVRfTUFUMng0OgorICAgICAgICBjYXNlIEdMX0ZMT0FUX01BVDN4NDoKKyAgICAgICAgY2Fz
ZSBHTF9GTE9BVF9NQVQ0eDM6CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUNHgyOgorICAgICAg
ICAgICAgcmV0dXJuIDQ7CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMzoKKyAgICAgICAgY2Fz
ZSBHTF9GTE9BVF9NQVQyeDM6CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUM3gyOgorICAgICAg
ICAgICAgcmV0dXJuIDM7CisgICAgICAgIGNhc2UgR0xfRkxPQVRfTUFUMjoKKyAgICAgICAgICAg
IHJldHVybiAyOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNTRVJUKGdsOjpWYXJp
YWJsZVJvd0NvdW50KHR5cGUpID09IDEpOworICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQog
fQogCkBAIC03Myw3ICs3Myw4IEBAIHN0cnVjdCBUVmFyaWFibGVJbmZvQ29tcGFyZXIKICAgICB7
CiAgICAgICAgIGludCBsaHNTb3J0T3JkZXIgPSBnbDo6VmFyaWFibGVTb3J0T3JkZXIobGhzLnR5
cGUpOwogICAgICAgICBpbnQgcmhzU29ydE9yZGVyID0gZ2w6OlZhcmlhYmxlU29ydE9yZGVyKHJo
cy50eXBlKTsKLSAgICAgICAgaWYgKGxoc1NvcnRPcmRlciAhPSByaHNTb3J0T3JkZXIpIHsKKyAg
ICAgICAgaWYgKGxoc1NvcnRPcmRlciAhPSByaHNTb3J0T3JkZXIpCisgICAgICAgIHsKICAgICAg
ICAgICAgIHJldHVybiBsaHNTb3J0T3JkZXIgPCByaHNTb3J0T3JkZXI7CiAgICAgICAgIH0KICAg
ICAgICAgLy8gU29ydCBieSBsYXJnZXN0IGZpcnN0LgpAQCAtODMsNjYgKzg0LDc2IEBAIHN0cnVj
dCBUVmFyaWFibGVJbmZvQ29tcGFyZXIKIAogdW5zaWduZWQgVmFyaWFibGVQYWNrZXI6Om1ha2VD
b2x1bW5GbGFncyhpbnQgY29sdW1uLCBpbnQgbnVtQ29tcG9uZW50c1BlclJvdykKIHsKLSAgICBy
ZXR1cm4gKChrQ29sdW1uTWFzayA8PCAoa051bUNvbHVtbnMgLSBudW1Db21wb25lbnRzUGVyUm93
KSkgJgotICAgICAgICAgICAgICAgICAgICBrQ29sdW1uTWFzaykgPj4gY29sdW1uOworICAgIHJl
dHVybiAoKGtDb2x1bW5NYXNrIDw8IChrTnVtQ29sdW1ucyAtIG51bUNvbXBvbmVudHNQZXJSb3cp
KSAmIGtDb2x1bW5NYXNrKSA+PiBjb2x1bW47CiB9CiAKIHZvaWQgVmFyaWFibGVQYWNrZXI6OmZp
bGxDb2x1bW5zKGludCB0b3BSb3csIGludCBudW1Sb3dzLCBpbnQgY29sdW1uLCBpbnQgbnVtQ29t
cG9uZW50c1BlclJvdykKIHsKICAgICB1bnNpZ25lZCBjb2x1bW5GbGFncyA9IG1ha2VDb2x1bW5G
bGFncyhjb2x1bW4sIG51bUNvbXBvbmVudHNQZXJSb3cpOwotICAgIGZvciAoaW50IHIgPSAwOyBy
IDwgbnVtUm93czsgKytyKSB7CisgICAgZm9yIChpbnQgciA9IDA7IHIgPCBudW1Sb3dzOyArK3Ip
CisgICAgewogICAgICAgICBpbnQgcm93ID0gdG9wUm93ICsgcjsKICAgICAgICAgQVNTRVJUKChy
b3dzX1tyb3ddICYgY29sdW1uRmxhZ3MpID09IDApOwogICAgICAgICByb3dzX1tyb3ddIHw9IGNv
bHVtbkZsYWdzOwogICAgIH0KIH0KIAotYm9vbCBWYXJpYWJsZVBhY2tlcjo6c2VhcmNoQ29sdW1u
KGludCBjb2x1bW4sIGludCBudW1Sb3dzLCBpbnQqIGRlc3RSb3csIGludCogZGVzdFNpemUpCiti
b29sIFZhcmlhYmxlUGFja2VyOjpzZWFyY2hDb2x1bW4oaW50IGNvbHVtbiwgaW50IG51bVJvd3Ms
IGludCAqZGVzdFJvdywgaW50ICpkZXN0U2l6ZSkKIHsKICAgICBBU1NFUlQoZGVzdFJvdyk7CiAK
LSAgICBmb3IgKDsgdG9wTm9uRnVsbFJvd18gPCBtYXhSb3dzXyAmJiByb3dzX1t0b3BOb25GdWxs
Um93X10gPT0ga0NvbHVtbk1hc2s7Ci0gICAgICAgICArK3RvcE5vbkZ1bGxSb3dfKSB7CisgICAg
Zm9yICg7IHRvcE5vbkZ1bGxSb3dfIDwgbWF4Um93c18gJiYgcm93c19bdG9wTm9uRnVsbFJvd19d
ID09IGtDb2x1bW5NYXNrOyArK3RvcE5vbkZ1bGxSb3dfKQorICAgIHsKICAgICB9CiAKLSAgICBm
b3IgKDsgYm90dG9tTm9uRnVsbFJvd18gPj0gMCAmJiByb3dzX1tib3R0b21Ob25GdWxsUm93X10g
PT0ga0NvbHVtbk1hc2s7Ci0gICAgICAgICAtLWJvdHRvbU5vbkZ1bGxSb3dfKSB7CisgICAgZm9y
ICg7IGJvdHRvbU5vbkZ1bGxSb3dfID49IDAgJiYgcm93c19bYm90dG9tTm9uRnVsbFJvd19dID09
IGtDb2x1bW5NYXNrOyAtLWJvdHRvbU5vbkZ1bGxSb3dfKQorICAgIHsKICAgICB9CiAKLSAgICBp
ZiAoYm90dG9tTm9uRnVsbFJvd18gLSB0b3BOb25GdWxsUm93XyArIDEgPCBudW1Sb3dzKSB7Cisg
ICAgaWYgKGJvdHRvbU5vbkZ1bGxSb3dfIC0gdG9wTm9uRnVsbFJvd18gKyAxIDwgbnVtUm93cykK
KyAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICB1bnNpZ25lZCBjb2x1
bW5GbGFncyA9IG1ha2VDb2x1bW5GbGFncyhjb2x1bW4sIDEpOwotICAgIGludCB0b3BHb29kUm93
ID0gMDsKLSAgICBpbnQgc21hbGxlc3RHb29kVG9wID0gLTE7CisgICAgaW50IHRvcEdvb2RSb3cg
ICAgICAgPSAwOworICAgIGludCBzbWFsbGVzdEdvb2RUb3AgID0gLTE7CiAgICAgaW50IHNtYWxs
ZXN0R29vZFNpemUgPSBtYXhSb3dzXyArIDE7Ci0gICAgaW50IGJvdHRvbVJvdyA9IGJvdHRvbU5v
bkZ1bGxSb3dfICsgMTsKLSAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgZm9yIChpbnQgcm93
ID0gdG9wTm9uRnVsbFJvd187IHJvdyA8PSBib3R0b21Sb3c7ICsrcm93KSB7CisgICAgaW50IGJv
dHRvbVJvdyAgICAgICAgPSBib3R0b21Ob25GdWxsUm93XyArIDE7CisgICAgYm9vbCBmb3VuZCAg
ICAgICAgICAgPSBmYWxzZTsKKyAgICBmb3IgKGludCByb3cgPSB0b3BOb25GdWxsUm93Xzsgcm93
IDw9IGJvdHRvbVJvdzsgKytyb3cpCisgICAgewogICAgICAgICBib29sIHJvd0VtcHR5ID0gcm93
IDwgYm90dG9tUm93ID8gKChyb3dzX1tyb3ddICYgY29sdW1uRmxhZ3MpID09IDApIDogZmFsc2U7
Ci0gICAgICAgIGlmIChyb3dFbXB0eSkgewotICAgICAgICAgICAgaWYgKCFmb3VuZCkgeworICAg
ICAgICBpZiAocm93RW1wdHkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghZm91bmQpCisg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdG9wR29vZFJvdyA9IHJvdzsKLSAgICAgICAg
ICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgZm91bmQgICAgICA9IHRydWU7
CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZm91bmQp
IHsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChm
b3VuZCkKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpbnQgc2l6ZSA9IHJvdyAtIHRv
cEdvb2RSb3c7Ci0gICAgICAgICAgICAgICAgaWYgKHNpemUgPj0gbnVtUm93cyAmJiBzaXplIDwg
c21hbGxlc3RHb29kU2l6ZSkgeworICAgICAgICAgICAgICAgIGlmIChzaXplID49IG51bVJvd3Mg
JiYgc2l6ZSA8IHNtYWxsZXN0R29vZFNpemUpCisgICAgICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgICAgICBzbWFsbGVzdEdvb2RTaXplID0gc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAg
c21hbGxlc3RHb29kVG9wID0gdG9wR29vZFJvdzsKKyAgICAgICAgICAgICAgICAgICAgc21hbGxl
c3RHb29kVG9wICA9IHRvcEdvb2RSb3c7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICAgICAgZm91bmQgPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAo
c21hbGxlc3RHb29kVG9wIDwgMCkgeworICAgIGlmIChzbWFsbGVzdEdvb2RUb3AgPCAwKQorICAg
IHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgICpkZXN0Um93ID0gc21hbGxl
c3RHb29kVG9wOwotICAgIGlmIChkZXN0U2l6ZSkgeworICAgIGlmIChkZXN0U2l6ZSkKKyAgICB7
CiAgICAgICAgICpkZXN0U2l6ZSA9IHNtYWxsZXN0R29vZFNpemU7CiAgICAgfQogICAgIHJldHVy
biB0cnVlOwpAQCAtMTUzLDggKzE2NCw4IEBAIGJvb2wgVmFyaWFibGVQYWNrZXI6OkNoZWNrVmFy
aWFibGVzV2l0aGluUGFja2luZ0xpbWl0cygKICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6U2hh
ZGVyVmFyaWFibGU+ICZpbl92YXJpYWJsZXMpCiB7CiAgICAgQVNTRVJUKG1heFZlY3RvcnMgPiAw
KTsKLSAgICBtYXhSb3dzXyA9IG1heFZlY3RvcnM7Ci0gICAgdG9wTm9uRnVsbFJvd18gPSAwOwor
ICAgIG1heFJvd3NfICAgICAgICAgID0gbWF4VmVjdG9yczsKKyAgICB0b3BOb25GdWxsUm93XyAg
ICA9IDA7CiAgICAgYm90dG9tTm9uRnVsbFJvd18gPSBtYXhSb3dzXyAtIDE7CiAgICAgc3RkOjp2
ZWN0b3I8c2g6OlNoYWRlclZhcmlhYmxlPiB2YXJpYWJsZXM7CiAKQEAgLTE2NSw5ICsxNzYsMTEg
QEAgYm9vbCBWYXJpYWJsZVBhY2tlcjo6Q2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRz
KAogICAgIH0KIAogICAgIC8vIENoZWNrIHdoZXRoZXIgZWFjaCB2YXJpYWJsZSBmaXRzIGluIHRo
ZSBhdmFpbGFibGUgdmVjdG9ycy4KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhcmlhYmxl
cy5zaXplKCk7IGkrKykgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdmFyaWFibGVzLnNp
emUoKTsgaSsrKQorICAgIHsKICAgICAgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXJp
YWJsZSA9IHZhcmlhYmxlc1tpXTsKLSAgICAgICAgaWYgKHZhcmlhYmxlLmVsZW1lbnRDb3VudCgp
ID4gbWF4VmVjdG9ycyAvIEdldE51bVJvd3ModmFyaWFibGUudHlwZSkpIHsKKyAgICAgICAgaWYg
KHZhcmlhYmxlLmVsZW1lbnRDb3VudCgpID4gbWF4VmVjdG9ycyAvIEdldE51bVJvd3ModmFyaWFi
bGUudHlwZSkpCisgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
fQogICAgIH0KQEAgLTE4MCw4MyArMTkzLDk4IEBAIGJvb2wgVmFyaWFibGVQYWNrZXI6OkNoZWNr
VmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cygKIAogICAgIC8vIFBhY2tzIHRoZSA0IGNvbHVt
biB2YXJpYWJsZXMuCiAgICAgc2l6ZV90IGlpID0gMDsKLSAgICBmb3IgKDsgaWkgPCB2YXJpYWJs
ZXMuc2l6ZSgpOyArK2lpKSB7CisgICAgZm9yICg7IGlpIDwgdmFyaWFibGVzLnNpemUoKTsgKytp
aSkKKyAgICB7CiAgICAgICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmdmFyaWFibGUgPSB2
YXJpYWJsZXNbaWldOwotICAgICAgICBpZiAoR2V0TnVtQ29tcG9uZW50c1BlclJvdyh2YXJpYWJs
ZS50eXBlKSAhPSA0KSB7CisgICAgICAgIGlmIChHZXROdW1Db21wb25lbnRzUGVyUm93KHZhcmlh
YmxlLnR5cGUpICE9IDQpCisgICAgICAgIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgIHRvcE5vbkZ1bGxSb3dfICs9IEdldE51bVJvd3ModmFyaWFibGUudHlwZSkgKiB2
YXJpYWJsZS5lbGVtZW50Q291bnQoKTsKICAgICB9CiAKLSAgICBpZiAodG9wTm9uRnVsbFJvd18g
PiBtYXhSb3dzXykgeworICAgIGlmICh0b3BOb25GdWxsUm93XyA+IG1heFJvd3NfKQorICAgIHsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIC8vIFBhY2tzIHRoZSAzIGNvbHVt
biB2YXJpYWJsZXMuCiAgICAgaW50IG51bTNDb2x1bW5Sb3dzID0gMDsKLSAgICBmb3IgKDsgaWkg
PCB2YXJpYWJsZXMuc2l6ZSgpOyArK2lpKSB7CisgICAgZm9yICg7IGlpIDwgdmFyaWFibGVzLnNp
emUoKTsgKytpaSkKKyAgICB7CiAgICAgICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmdmFy
aWFibGUgPSB2YXJpYWJsZXNbaWldOwotICAgICAgICBpZiAoR2V0TnVtQ29tcG9uZW50c1BlclJv
dyh2YXJpYWJsZS50eXBlKSAhPSAzKSB7CisgICAgICAgIGlmIChHZXROdW1Db21wb25lbnRzUGVy
Um93KHZhcmlhYmxlLnR5cGUpICE9IDMpCisgICAgICAgIHsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIG51bTNDb2x1bW5Sb3dzICs9IEdldE51bVJvd3ModmFyaWFibGUu
dHlwZSkgKiB2YXJpYWJsZS5lbGVtZW50Q291bnQoKTsKICAgICB9CiAKLSAgICBpZiAodG9wTm9u
RnVsbFJvd18gKyBudW0zQ29sdW1uUm93cyA+IG1heFJvd3NfKSB7CisgICAgaWYgKHRvcE5vbkZ1
bGxSb3dfICsgbnVtM0NvbHVtblJvd3MgPiBtYXhSb3dzXykKKyAgICB7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICBmaWxsQ29sdW1ucyh0b3BOb25GdWxsUm93XywgbnVtM0Nv
bHVtblJvd3MsIDAsIDMpOwogCiAgICAgLy8gUGFja3MgdGhlIDIgY29sdW1uIHZhcmlhYmxlcy4K
LSAgICBpbnQgdG9wMkNvbHVtblJvdyA9IHRvcE5vbkZ1bGxSb3dfICsgbnVtM0NvbHVtblJvd3M7
Ci0gICAgaW50IHR3b0NvbHVtblJvd3NBdmFpbGFibGUgPSBtYXhSb3dzXyAtIHRvcDJDb2x1bW5S
b3c7CisgICAgaW50IHRvcDJDb2x1bW5Sb3cgICAgICAgICAgICA9IHRvcE5vbkZ1bGxSb3dfICsg
bnVtM0NvbHVtblJvd3M7CisgICAgaW50IHR3b0NvbHVtblJvd3NBdmFpbGFibGUgICA9IG1heFJv
d3NfIC0gdG9wMkNvbHVtblJvdzsKICAgICBpbnQgcm93c0F2YWlsYWJsZUluQ29sdW1uczAxID0g
dHdvQ29sdW1uUm93c0F2YWlsYWJsZTsKICAgICBpbnQgcm93c0F2YWlsYWJsZUluQ29sdW1uczIz
ID0gdHdvQ29sdW1uUm93c0F2YWlsYWJsZTsKLSAgICBmb3IgKDsgaWkgPCB2YXJpYWJsZXMuc2l6
ZSgpOyArK2lpKSB7CisgICAgZm9yICg7IGlpIDwgdmFyaWFibGVzLnNpemUoKTsgKytpaSkKKyAg
ICB7CiAgICAgICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmdmFyaWFibGUgPSB2YXJpYWJs
ZXNbaWldOwotICAgICAgICBpZiAoR2V0TnVtQ29tcG9uZW50c1BlclJvdyh2YXJpYWJsZS50eXBl
KSAhPSAyKSB7CisgICAgICAgIGlmIChHZXROdW1Db21wb25lbnRzUGVyUm93KHZhcmlhYmxlLnR5
cGUpICE9IDIpCisgICAgICAgIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGludCBudW1Sb3dzID0gR2V0TnVtUm93cyh2YXJpYWJsZS50eXBlKSAqIHZhcmlhYmxlLmVs
ZW1lbnRDb3VudCgpOwotICAgICAgICBpZiAobnVtUm93cyA8PSByb3dzQXZhaWxhYmxlSW5Db2x1
bW5zMDEpIHsKKyAgICAgICAgaWYgKG51bVJvd3MgPD0gcm93c0F2YWlsYWJsZUluQ29sdW1uczAx
KQorICAgICAgICB7CiAgICAgICAgICAgICByb3dzQXZhaWxhYmxlSW5Db2x1bW5zMDEgLT0gbnVt
Um93czsKLSAgICAgICAgfSBlbHNlIGlmIChudW1Sb3dzIDw9IHJvd3NBdmFpbGFibGVJbkNvbHVt
bnMyMykgeworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG51bVJvd3MgPD0gcm93c0F2YWls
YWJsZUluQ29sdW1uczIzKQorICAgICAgICB7CiAgICAgICAgICAgICByb3dzQXZhaWxhYmxlSW5D
b2x1bW5zMjMgLT0gbnVtUm93czsKLSAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGludCBudW1Sb3dzVXNlZEluQ29sdW1uczAxID0KLSAgICAgICAgdHdvQ29s
dW1uUm93c0F2YWlsYWJsZSAtIHJvd3NBdmFpbGFibGVJbkNvbHVtbnMwMTsKLSAgICBpbnQgbnVt
Um93c1VzZWRJbkNvbHVtbnMyMyA9Ci0gICAgICAgIHR3b0NvbHVtblJvd3NBdmFpbGFibGUgLSBy
b3dzQXZhaWxhYmxlSW5Db2x1bW5zMjM7CisgICAgaW50IG51bVJvd3NVc2VkSW5Db2x1bW5zMDEg
PSB0d29Db2x1bW5Sb3dzQXZhaWxhYmxlIC0gcm93c0F2YWlsYWJsZUluQ29sdW1uczAxOworICAg
IGludCBudW1Sb3dzVXNlZEluQ29sdW1uczIzID0gdHdvQ29sdW1uUm93c0F2YWlsYWJsZSAtIHJv
d3NBdmFpbGFibGVJbkNvbHVtbnMyMzsKICAgICBmaWxsQ29sdW1ucyh0b3AyQ29sdW1uUm93LCBu
dW1Sb3dzVXNlZEluQ29sdW1uczAxLCAwLCAyKTsKLSAgICBmaWxsQ29sdW1ucyhtYXhSb3dzXyAt
IG51bVJvd3NVc2VkSW5Db2x1bW5zMjMsIG51bVJvd3NVc2VkSW5Db2x1bW5zMjMsCi0gICAgICAg
ICAgICAgICAgMiwgMik7CisgICAgZmlsbENvbHVtbnMobWF4Um93c18gLSBudW1Sb3dzVXNlZElu
Q29sdW1uczIzLCBudW1Sb3dzVXNlZEluQ29sdW1uczIzLCAyLCAyKTsKIAogICAgIC8vIFBhY2tz
IHRoZSAxIGNvbHVtbiB2YXJpYWJsZXMuCi0gICAgZm9yICg7IGlpIDwgdmFyaWFibGVzLnNpemUo
KTsgKytpaSkgeworICAgIGZvciAoOyBpaSA8IHZhcmlhYmxlcy5zaXplKCk7ICsraWkpCisgICAg
ewogICAgICAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJnZhcmlhYmxlID0gdmFyaWFibGVz
W2lpXTsKICAgICAgICAgQVNTRVJUKDEgPT0gR2V0TnVtQ29tcG9uZW50c1BlclJvdyh2YXJpYWJs
ZS50eXBlKSk7Ci0gICAgICAgIGludCBudW1Sb3dzID0gR2V0TnVtUm93cyh2YXJpYWJsZS50eXBl
KSAqIHZhcmlhYmxlLmVsZW1lbnRDb3VudCgpOworICAgICAgICBpbnQgbnVtUm93cyAgICAgICAg
PSBHZXROdW1Sb3dzKHZhcmlhYmxlLnR5cGUpICogdmFyaWFibGUuZWxlbWVudENvdW50KCk7CiAg
ICAgICAgIGludCBzbWFsbGVzdENvbHVtbiA9IC0xOwotICAgICAgICBpbnQgc21hbGxlc3RTaXpl
ID0gbWF4Um93c18gKyAxOwotICAgICAgICBpbnQgdG9wUm93ID0gLTE7Ci0gICAgICAgIGZvciAo
aW50IGNvbHVtbiA9IDA7IGNvbHVtbiA8IGtOdW1Db2x1bW5zOyArK2NvbHVtbikgewotICAgICAg
ICAgICAgaW50IHJvdyA9IDA7CisgICAgICAgIGludCBzbWFsbGVzdFNpemUgICA9IG1heFJvd3Nf
ICsgMTsKKyAgICAgICAgaW50IHRvcFJvdyAgICAgICAgID0gLTE7CisgICAgICAgIGZvciAoaW50
IGNvbHVtbiA9IDA7IGNvbHVtbiA8IGtOdW1Db2x1bW5zOyArK2NvbHVtbikKKyAgICAgICAgewor
ICAgICAgICAgICAgaW50IHJvdyAgPSAwOwogICAgICAgICAgICAgaW50IHNpemUgPSAwOwotICAg
ICAgICAgICAgaWYgKHNlYXJjaENvbHVtbihjb2x1bW4sIG51bVJvd3MsICZyb3csICZzaXplKSkg
ewotICAgICAgICAgICAgICAgIGlmIChzaXplIDwgc21hbGxlc3RTaXplKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHNtYWxsZXN0U2l6ZSA9IHNpemU7CisgICAgICAgICAgICBpZiAoc2VhcmNoQ29s
dW1uKGNvbHVtbiwgbnVtUm93cywgJnJvdywgJnNpemUpKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGlmIChzaXplIDwgc21hbGxlc3RTaXplKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgc21hbGxlc3RTaXplICAgPSBzaXplOwogICAgICAgICAgICAgICAg
ICAgICBzbWFsbGVzdENvbHVtbiA9IGNvbHVtbjsKLSAgICAgICAgICAgICAgICAgICAgdG9wUm93
ID0gcm93OworICAgICAgICAgICAgICAgICAgICB0b3BSb3cgICAgICAgICA9IHJvdzsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc21h
bGxlc3RDb2x1bW4gPCAwKSB7CisgICAgICAgIGlmIChzbWFsbGVzdENvbHVtbiA8IDApCisgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WYXJpYWJs
ZVBhY2tlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvVmFyaWFibGVQYWNrZXIuaAppbmRleCA1ZjM4YTBhOThkZS4uYzZhMzIwNjQ5YzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1Zh
cmlhYmxlUGFja2VyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvVmFyaWFibGVQYWNrZXIuaApAQCAtMTAsMzEgKzEwLDMyIEBACiAjaW5jbHVk
ZSA8dmVjdG9yPgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVmFyaWFibGVJbmZvLmgi
CiAKLWNsYXNzIFZhcmlhYmxlUGFja2VyIHsKLSBwdWJsaWM6Ci0gICAvLyBSZXR1cm5zIHRydWUg
aWYgdGhlIHBhc3NlZCBpbiB2YXJpYWJsZXMgcGFjayBpbiBtYXhWZWN0b3JzIGZvbGxvd2luZwot
ICAgLy8gdGhlIHBhY2tpbmcgcnVsZXMgZnJvbSB0aGUgR0xTTCAxLjAxNyBzcGVjLCBBcHBlbmRp
eCBBLCBzZWN0aW9uIDcuCi0gICBib29sIENoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0
cyh1bnNpZ25lZCBpbnQgbWF4VmVjdG9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4gJmluX3Zh
cmlhYmxlcyk7Ci0KLSAgIC8vIEdldHMgaG93IG1hbnkgY29tcG9uZW50cyBpbiBhIHJvdyBhIGRh
dGEgdHlwZSB0YWtlcy4KLSAgIHN0YXRpYyBpbnQgR2V0TnVtQ29tcG9uZW50c1BlclJvdyhzaDo6
R0xlbnVtIHR5cGUpOwotCi0gICAvLyBHZXRzIGhvdyBtYW55IHJvd3MgYSBkYXRhIHR5cGUgdGFr
ZXMuCi0gICBzdGF0aWMgaW50IEdldE51bVJvd3Moc2g6OkdMZW51bSB0eXBlKTsKLQotIHByaXZh
dGU6Ci0gICBzdGF0aWMgY29uc3QgaW50IGtOdW1Db2x1bW5zICAgICAgPSA0OwotICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGtDb2x1bW5NYXNrID0gKDEgPDwga051bUNvbHVtbnMpIC0gMTsKLQot
ICAgdW5zaWduZWQgbWFrZUNvbHVtbkZsYWdzKGludCBjb2x1bW4sIGludCBudW1Db21wb25lbnRz
UGVyUm93KTsKLSAgIHZvaWQgZmlsbENvbHVtbnMoaW50IHRvcFJvdywgaW50IG51bVJvd3MsIGlu
dCBjb2x1bW4sIGludCBudW1Db21wb25lbnRzUGVyUm93KTsKLSAgIGJvb2wgc2VhcmNoQ29sdW1u
KGludCBjb2x1bW4sIGludCBudW1Sb3dzLCBpbnQgKmRlc3RSb3csIGludCAqZGVzdFNpemUpOwot
Ci0gICBpbnQgdG9wTm9uRnVsbFJvd187Ci0gICBpbnQgYm90dG9tTm9uRnVsbFJvd187Ci0gICBp
bnQgbWF4Um93c187Ci0gICBzdGQ6OnZlY3Rvcjx1bnNpZ25lZD4gcm93c187CitjbGFzcyBWYXJp
YWJsZVBhY2tlcgoreworICBwdWJsaWM6CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBwYXNz
ZWQgaW4gdmFyaWFibGVzIHBhY2sgaW4gbWF4VmVjdG9ycyBmb2xsb3dpbmcKKyAgICAvLyB0aGUg
cGFja2luZyBydWxlcyBmcm9tIHRoZSBHTFNMIDEuMDE3IHNwZWMsIEFwcGVuZGl4IEEsIHNlY3Rp
b24gNy4KKyAgICBib29sIENoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyh1bnNpZ25l
ZCBpbnQgbWF4VmVjdG9ycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6U2hhZGVyVmFyaWFibGU+ICZpbl92YXJpYWJsZXMp
OworCisgICAgLy8gR2V0cyBob3cgbWFueSBjb21wb25lbnRzIGluIGEgcm93IGEgZGF0YSB0eXBl
IHRha2VzLgorICAgIHN0YXRpYyBpbnQgR2V0TnVtQ29tcG9uZW50c1BlclJvdyhzaDo6R0xlbnVt
IHR5cGUpOworCisgICAgLy8gR2V0cyBob3cgbWFueSByb3dzIGEgZGF0YSB0eXBlIHRha2VzLgor
ICAgIHN0YXRpYyBpbnQgR2V0TnVtUm93cyhzaDo6R0xlbnVtIHR5cGUpOworCisgIHByaXZhdGU6
CisgICAgc3RhdGljIGNvbnN0IGludCBrTnVtQ29sdW1ucyAgICAgID0gNDsKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQga0NvbHVtbk1hc2sgPSAoMSA8PCBrTnVtQ29sdW1ucykgLSAxOworCisg
ICAgdW5zaWduZWQgbWFrZUNvbHVtbkZsYWdzKGludCBjb2x1bW4sIGludCBudW1Db21wb25lbnRz
UGVyUm93KTsKKyAgICB2b2lkIGZpbGxDb2x1bW5zKGludCB0b3BSb3csIGludCBudW1Sb3dzLCBp
bnQgY29sdW1uLCBpbnQgbnVtQ29tcG9uZW50c1BlclJvdyk7CisgICAgYm9vbCBzZWFyY2hDb2x1
bW4oaW50IGNvbHVtbiwgaW50IG51bVJvd3MsIGludCAqZGVzdFJvdywgaW50ICpkZXN0U2l6ZSk7
CisKKyAgICBpbnQgdG9wTm9uRnVsbFJvd187CisgICAgaW50IGJvdHRvbU5vbkZ1bGxSb3dfOwor
ICAgIGludCBtYXhSb3dzXzsKKyAgICBzdGQ6OnZlY3Rvcjx1bnNpZ25lZD4gcm93c187CiB9Owog
Ci0jZW5kaWYgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9WQVJJQUJMRVBBQ0tFUl9IXworI2VuZGlm
ICAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX1ZBUklBQkxFUEFDS0VSX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WZXJzaW9uR0xT
TC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9W
ZXJzaW9uR0xTTC5jcHAKaW5kZXggNWMwYzUxOTE0ZmQuLjkzODMyNWIzNWM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WZXJzaW9u
R0xTTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvVmVyc2lvbkdMU0wuY3BwCkBAIC02LDIyICs2LDQwIEBACiAKICNpbmNsdWRlICJjb21w
aWxlci90cmFuc2xhdG9yL1ZlcnNpb25HTFNMLmgiCiAKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgor
CituYW1lc3BhY2Ugc2gKK3sKKwogaW50IFNoYWRlck91dHB1dFR5cGVUb0dMU0xWZXJzaW9uKFNo
U2hhZGVyT3V0cHV0IG91dHB1dCkKIHsKICAgICBzd2l0Y2ggKG91dHB1dCkKICAgICB7Ci0gICAg
ICBjYXNlIFNIX0dMU0xfMTMwX09VVFBVVDogICAgICAgICAgIHJldHVybiBHTFNMX1ZFUlNJT05f
MTMwOwotICAgICAgY2FzZSBTSF9HTFNMXzE0MF9PVVRQVVQ6ICAgICAgICAgICByZXR1cm4gR0xT
TF9WRVJTSU9OXzE0MDsKLSAgICAgIGNhc2UgU0hfR0xTTF8xNTBfQ09SRV9PVVRQVVQ6ICAgICAg
cmV0dXJuIEdMU0xfVkVSU0lPTl8xNTA7Ci0gICAgICBjYXNlIFNIX0dMU0xfMzMwX0NPUkVfT1VU
UFVUOiAgICAgIHJldHVybiBHTFNMX1ZFUlNJT05fMzMwOwotICAgICAgY2FzZSBTSF9HTFNMXzQw
MF9DT1JFX09VVFBVVDogICAgICByZXR1cm4gR0xTTF9WRVJTSU9OXzQwMDsKLSAgICAgIGNhc2Ug
U0hfR0xTTF80MTBfQ09SRV9PVVRQVVQ6ICAgICAgcmV0dXJuIEdMU0xfVkVSU0lPTl80MTA7Ci0g
ICAgICBjYXNlIFNIX0dMU0xfNDIwX0NPUkVfT1VUUFVUOiAgICAgIHJldHVybiBHTFNMX1ZFUlNJ
T05fNDIwOwotICAgICAgY2FzZSBTSF9HTFNMXzQzMF9DT1JFX09VVFBVVDogICAgICByZXR1cm4g
R0xTTF9WRVJTSU9OXzQzMDsKLSAgICAgIGNhc2UgU0hfR0xTTF80NDBfQ09SRV9PVVRQVVQ6ICAg
ICAgcmV0dXJuIEdMU0xfVkVSU0lPTl80NDA7Ci0gICAgICBjYXNlIFNIX0dMU0xfNDUwX0NPUkVf
T1VUUFVUOiAgICAgIHJldHVybiBHTFNMX1ZFUlNJT05fNDUwOwotICAgICAgY2FzZSBTSF9HTFNM
X0NPTVBBVElCSUxJVFlfT1VUUFVUOiByZXR1cm4gR0xTTF9WRVJTSU9OXzExMDsKLSAgICAgIGRl
ZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2Ug
U0hfR0xTTF8xMzBfT1VUUFVUOgorICAgICAgICAgICAgcmV0dXJuIEdMU0xfVkVSU0lPTl8xMzA7
CisgICAgICAgIGNhc2UgU0hfR0xTTF8xNDBfT1VUUFVUOgorICAgICAgICAgICAgcmV0dXJuIEdM
U0xfVkVSU0lPTl8xNDA7CisgICAgICAgIGNhc2UgU0hfR0xTTF8xNTBfQ09SRV9PVVRQVVQ6Cisg
ICAgICAgICAgICByZXR1cm4gR0xTTF9WRVJTSU9OXzE1MDsKKyAgICAgICAgY2FzZSBTSF9HTFNM
XzMzMF9DT1JFX09VVFBVVDoKKyAgICAgICAgICAgIHJldHVybiBHTFNMX1ZFUlNJT05fMzMwOwor
ICAgICAgICBjYXNlIFNIX0dMU0xfNDAwX0NPUkVfT1VUUFVUOgorICAgICAgICAgICAgcmV0dXJu
IEdMU0xfVkVSU0lPTl80MDA7CisgICAgICAgIGNhc2UgU0hfR0xTTF80MTBfQ09SRV9PVVRQVVQ6
CisgICAgICAgICAgICByZXR1cm4gR0xTTF9WRVJTSU9OXzQxMDsKKyAgICAgICAgY2FzZSBTSF9H
TFNMXzQyMF9DT1JFX09VVFBVVDoKKyAgICAgICAgICAgIHJldHVybiBHTFNMX1ZFUlNJT05fNDIw
OworICAgICAgICBjYXNlIFNIX0dMU0xfNDMwX0NPUkVfT1VUUFVUOgorICAgICAgICAgICAgcmV0
dXJuIEdMU0xfVkVSU0lPTl80MzA7CisgICAgICAgIGNhc2UgU0hfR0xTTF80NDBfQ09SRV9PVVRQ
VVQ6CisgICAgICAgICAgICByZXR1cm4gR0xTTF9WRVJTSU9OXzQ0MDsKKyAgICAgICAgY2FzZSBT
SF9HTFNMXzQ1MF9DT1JFX09VVFBVVDoKKyAgICAgICAgICAgIHJldHVybiBHTFNMX1ZFUlNJT05f
NDUwOworICAgICAgICBjYXNlIFNIX0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQVVQ6CisgICAgICAg
ICAgICByZXR1cm4gR0xTTF9WRVJTSU9OXzExMDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CiAKQEAg
LTQyLDkgKzYwLDcgQEAgaW50IFNoYWRlck91dHB1dFR5cGVUb0dMU0xWZXJzaW9uKFNoU2hhZGVy
T3V0cHV0IG91dHB1dCkKIC8vICAgIEdMU0wgMS4yIHJlbGF4ZWQgdGhlIHJlc3RyaWN0aW9uIG9u
IGFycmF5cywgc2VjdGlvbiA1Ljg6ICJWYXJpYWJsZXMgdGhhdAogLy8gICAgYXJlIGJ1aWx0LWlu
IHR5cGVzLCBlbnRpcmUgc3RydWN0dXJlcyBvciBhcnJheXMuLi4gYXJlIGFsbCBsLXZhbHVlcy4i
CiAvLwotVFZlcnNpb25HTFNMOjpUVmVyc2lvbkdMU0woc2g6OkdMZW51bSB0eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVFByYWdtYSAmcHJhZ21hLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0KQorVFZlcnNpb25HTFNMOjpUVmVy
c2lvbkdMU0woc2g6OkdMZW51bSB0eXBlLCBjb25zdCBUUHJhZ21hICZwcmFnbWEsIFNoU2hhZGVy
T3V0cHV0IG91dHB1dCkKICAgICA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNl
KQogewogICAgIG1WZXJzaW9uID0gU2hhZGVyT3V0cHV0VHlwZVRvR0xTTFZlcnNpb24ob3V0cHV0
KTsKQEAgLTUyLDYgKzY4LDEwIEBAIFRWZXJzaW9uR0xTTDo6VFZlcnNpb25HTFNMKHNoOjpHTGVu
dW0gdHlwZSwKICAgICB7CiAgICAgICAgIGVuc3VyZVZlcnNpb25Jc0F0TGVhc3QoR0xTTF9WRVJT
SU9OXzEyMCk7CiAgICAgfQorICAgIGlmICh0eXBlID09IEdMX0NPTVBVVEVfU0hBREVSKQorICAg
IHsKKyAgICAgICAgZW5zdXJlVmVyc2lvbklzQXRMZWFzdChHTFNMX1ZFUlNJT05fNDMwKTsKKyAg
ICB9CiB9CiAKIHZvaWQgVFZlcnNpb25HTFNMOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpu
b2RlKQpAQCAtNjIsNTQgKzgyLDU1IEBAIHZvaWQgVFZlcnNpb25HTFNMOjp2aXNpdFN5bWJvbChU
SW50ZXJtU3ltYm9sICpub2RlKQogICAgIH0KIH0KIAotYm9vbCBUVmVyc2lvbkdMU0w6OnZpc2l0
QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQorYm9vbCBUVmVyc2lvbkdM
U0w6OnZpc2l0RGVjbGFyYXRpb24oVmlzaXQsIFRJbnRlcm1EZWNsYXJhdGlvbiAqbm9kZSkKIHsK
LSAgICBib29sIHZpc2l0Q2hpbGRyZW4gPSB0cnVlOworICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5j
ZSAmc2VxdWVuY2UgPSAqKG5vZGUtPmdldFNlcXVlbmNlKCkpOworICAgIGlmIChzZXF1ZW5jZS5m
cm9udCgpLT5nZXRBc1R5cGVkKCktPmdldFR5cGUoKS5pc0ludmFyaWFudCgpKQorICAgIHsKKyAg
ICAgICAgZW5zdXJlVmVyc2lvbklzQXRMZWFzdChHTFNMX1ZFUlNJT05fMTIwKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCitib29sIFRW
ZXJzaW9uR0xTTDo6dmlzaXRJbnZhcmlhbnREZWNsYXJhdGlvbihWaXNpdCwgVEludGVybUludmFy
aWFudERlY2xhcmF0aW9uICpub2RlKQoreworICAgIGVuc3VyZVZlcnNpb25Jc0F0TGVhc3QoR0xT
TF9WRVJTSU9OXzEyMCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVFZlcnNpb25HTFNM
Ojp2aXNpdEZ1bmN0aW9uUHJvdG90eXBlKFZpc2l0LCBUSW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUg
Km5vZGUpCit7CisgICAgY29uc3QgVEludGVybVNlcXVlbmNlICZwYXJhbXMgPSAqKG5vZGUtPmdl
dFNlcXVlbmNlKCkpOworICAgIGZvciAoVEludGVybVNlcXVlbmNlOjpjb25zdF9pdGVyYXRvciBp
dGVyID0gcGFyYW1zLmJlZ2luKCk7IGl0ZXIgIT0gcGFyYW1zLmVuZCgpOyArK2l0ZXIpCiAgICAg
ewotICAgICAgY2FzZSBFT3BEZWNsYXJhdGlvbjoKKyAgICAgICAgY29uc3QgVEludGVybVR5cGVk
ICpwYXJhbSA9ICgqaXRlciktPmdldEFzVHlwZWQoKTsKKyAgICAgICAgaWYgKHBhcmFtLT5pc0Fy
cmF5KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IFRJbnRlcm1TZXF1ZW5jZSAmc2Vx
dWVuY2UgPSAqKG5vZGUtPmdldFNlcXVlbmNlKCkpOwotICAgICAgICAgICAgaWYgKHNlcXVlbmNl
LmZyb250KCktPmdldEFzVHlwZWQoKS0+Z2V0VHlwZSgpLmlzSW52YXJpYW50KCkpCisgICAgICAg
ICAgICBUUXVhbGlmaWVyIHF1YWxpZmllciA9IHBhcmFtLT5nZXRRdWFsaWZpZXIoKTsKKyAgICAg
ICAgICAgIGlmICgocXVhbGlmaWVyID09IEV2cU91dCkgfHwgKHF1YWxpZmllciA9PSBFdnFJbk91
dCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgZW5zdXJlVmVyc2lvbklzQXRMZWFz
dChHTFNMX1ZFUlNJT05fMTIwKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICBjYXNlIEVPcEludmFyaWFu
dERlY2xhcmF0aW9uOgotICAgICAgICBlbnN1cmVWZXJzaW9uSXNBdExlYXN0KEdMU0xfVkVSU0lP
Tl8xMjApOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wUGFyYW1ldGVyczoKLSAgICAg
ICAgewotICAgICAgICAgICAgY29uc3QgVEludGVybVNlcXVlbmNlICZwYXJhbXMgPSAqKG5vZGUt
PmdldFNlcXVlbmNlKCkpOwotICAgICAgICAgICAgZm9yIChUSW50ZXJtU2VxdWVuY2U6OmNvbnN0
X2l0ZXJhdG9yIGl0ZXIgPSBwYXJhbXMuYmVnaW4oKTsKLSAgICAgICAgICAgICAgICAgaXRlciAh
PSBwYXJhbXMuZW5kKCk7ICsraXRlcikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBj
b25zdCBUSW50ZXJtVHlwZWQgKnBhcmFtID0gKCppdGVyKS0+Z2V0QXNUeXBlZCgpOwotICAgICAg
ICAgICAgICAgIGlmIChwYXJhbS0+aXNBcnJheSgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXIgPSBwYXJhbS0+Z2V0UXVhbGlmaWVy
KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgocXVhbGlmaWVyID09IEV2cU91dCkgfHwgKHF1
YWxpZmllciA9PSAgRXZxSW5PdXQpKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBlbnN1cmVWZXJzaW9uSXNBdExlYXN0KEdMU0xfVkVSU0lPTl8xMjApOwot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBGdWxseSBwcm9j
ZXNzZWQuIE5vIG5lZWQgdG8gdmlzaXQgY2hpbGRyZW4uCi0gICAgICAgICAgICB2aXNpdENoaWxk
cmVuID0gZmFsc2U7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RNYXQyOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyeDM6Ci0gICAgICBj
YXNlIEVPcENvbnN0cnVjdE1hdDJ4NDoKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0M3gyOgot
ICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQzOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQz
eDQ6Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDR4MjoKLSAgICAgIGNhc2UgRU9wQ29uc3Ry
dWN0TWF0NHgzOgotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0OgorICAgIH0KKyAgICAvLyBG
dWxseSBwcm9jZXNzZWQuIE5vIG5lZWQgdG8gdmlzaXQgY2hpbGRyZW4uCisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIFRWZXJzaW9uR0xTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRl
cm1BZ2dyZWdhdGUgKm5vZGUpCit7CisgICAgc3dpdGNoIChub2RlLT5nZXRPcCgpKQorICAgIHsK
KyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyOgorICAgICAgICBjYXNlIEVPcENvbnN0cnVj
dE1hdDJ4MzoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyeDQ6CisgICAgICAgIGNhc2Ug
RU9wQ29uc3RydWN0TWF0M3gyOgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDM6CisgICAg
ICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0M3g0OgorICAgICAgICBjYXNlIEVPcENvbnN0cnVjdE1h
dDR4MjoKKyAgICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQ0eDM6CisgICAgICAgIGNhc2UgRU9w
Q29uc3RydWN0TWF0NDoKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgVEludGVybVNlcXVl
bmNlICZzZXF1ZW5jZSA9ICoobm9kZS0+Z2V0U2VxdWVuY2UoKSk7CiAgICAgICAgICAgICBpZiAo
c2VxdWVuY2Uuc2l6ZSgpID09IDEpCkBAIC0xMjIsMTEgKzE0MywxMCBAQCBib29sIFRWZXJzaW9u
R0xTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5vZGUpCiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgZGVmYXVsdDoK
LSAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKICAg
ICB9Ci0KLSAgICByZXR1cm4gdmlzaXRDaGlsZHJlbjsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
dm9pZCBUVmVyc2lvbkdMU0w6OmVuc3VyZVZlcnNpb25Jc0F0TGVhc3QoaW50IHZlcnNpb24pCkBA
IC0xMzQsMyArMTU0LDQgQEAgdm9pZCBUVmVyc2lvbkdMU0w6OmVuc3VyZVZlcnNpb25Jc0F0TGVh
c3QoaW50IHZlcnNpb24pCiAgICAgbVZlcnNpb24gPSBzdGQ6Om1heCh2ZXJzaW9uLCBtVmVyc2lv
bik7CiB9CiAKK30gIC8vIG5hbWVzcGFjZSBzaApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvVmVyc2lvbkdMU0wuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZlcnNpb25HTFNMLmgKaW5k
ZXggYzQxMDY5ZDQyZGYuLjljZjcyN2MxNDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9WZXJzaW9uR0xTTC5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL1ZlcnNpb25HTFNMLmgK
QEAgLTExLDYgKzExLDkgQEAKIAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvUHJhZ21h
LmgiCiAKK25hbWVzcGFjZSBzaAoreworCiBzdGF0aWMgY29uc3QgaW50IEdMU0xfVkVSU0lPTl8x
MTAgPSAxMTA7CiBzdGF0aWMgY29uc3QgaW50IEdMU0xfVkVSU0lPTl8xMjAgPSAxMjA7CiBzdGF0
aWMgY29uc3QgaW50IEdMU0xfVkVSU0lPTl8xMzAgPSAxMzA7CkBAIC01Niw4ICs1OSwxMSBAQCBj
bGFzcyBUVmVyc2lvbkdMU0wgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgIC8vICAgRWxz
ZSAxMTAgaXMgcmV0dXJuZWQuCiAgICAgaW50IGdldFZlcnNpb24oKSBjb25zdCB7IHJldHVybiBt
VmVyc2lvbjsgfQogCi0gICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICopIG92ZXJy
aWRlOwotICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKikg
b3ZlcnJpZGU7CisgICAgdm9pZCB2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKSBvdmVy
cmlkZTsKKyAgICBib29sIHZpc2l0QWdncmVnYXRlKFZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpu
b2RlKSBvdmVycmlkZTsKKyAgICBib29sIHZpc2l0SW52YXJpYW50RGVjbGFyYXRpb24oVmlzaXQs
IFRJbnRlcm1JbnZhcmlhbnREZWNsYXJhdGlvbiAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2
aXNpdEZ1bmN0aW9uUHJvdG90eXBlKFZpc2l0LCBUSW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKm5v
ZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXREZWNsYXJhdGlvbihWaXNpdCwgVEludGVybURl
Y2xhcmF0aW9uICpub2RlKSBvdmVycmlkZTsKIAogICBwcml2YXRlOgogICAgIHZvaWQgZW5zdXJl
VmVyc2lvbklzQXRMZWFzdChpbnQgdmVyc2lvbik7CkBAIC02NSw0ICs3MSw2IEBAIGNsYXNzIFRW
ZXJzaW9uR0xTTCA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiAgICAgaW50IG1WZXJzaW9uOwog
fTsKIAorfSAgLy8gbmFtZXNwYWNlIHNoCisKICNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRP
Ul9WRVJTSU9OR0xTTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3RyYW5zbGF0b3IvYmxvY2tsYXlvdXQuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvYmxvY2tsYXlvdXQuY3BwCmluZGV4IGJhNjMy
Mjg0OGU3Li4zMzA5MGE5YmY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvYmxvY2tsYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2Jsb2NrbGF5b3V0LmNwcApAQCAt
MTUsMTIgKzE1LDEzIEBACiBuYW1lc3BhY2Ugc2gKIHsKIAotQmxvY2tMYXlvdXRFbmNvZGVyOjpC
bG9ja0xheW91dEVuY29kZXIoKQotICAgIDogbUN1cnJlbnRPZmZzZXQoMCkKK0Jsb2NrTGF5b3V0
RW5jb2Rlcjo6QmxvY2tMYXlvdXRFbmNvZGVyKCkgOiBtQ3VycmVudE9mZnNldCgwKQogewogfQog
Ci1CbG9ja01lbWJlckluZm8gQmxvY2tMYXlvdXRFbmNvZGVyOjplbmNvZGVUeXBlKEdMZW51bSB0
eXBlLCB1bnNpZ25lZCBpbnQgYXJyYXlTaXplLCBib29sIGlzUm93TWFqb3JNYXRyaXgpCitCbG9j
a01lbWJlckluZm8gQmxvY2tMYXlvdXRFbmNvZGVyOjplbmNvZGVUeXBlKEdMZW51bSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgYXJyYXlTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGlzUm93TWFqb3JNYXRyaXgpCiB7CiAgICAgaW50IGFycmF5U3RyaWRlOwogICAg
IGludCBtYXRyaXhTdHJpZGU7CkBAIC02OCw0NCArNjksNTIgQEAgdm9pZCBTdGQxNDBCbG9ja0Vu
Y29kZXI6OmV4aXRBZ2dyZWdhdGVUeXBlKCkKICAgICBuZXh0UmVnaXN0ZXIoKTsKIH0KIAotdm9p
ZCBTdGQxNDBCbG9ja0VuY29kZXI6OmdldEJsb2NrTGF5b3V0SW5mbyhHTGVudW0gdHlwZSwgdW5z
aWduZWQgaW50IGFycmF5U2l6ZSwgYm9vbCBpc1Jvd01ham9yTWF0cml4LCBpbnQgKmFycmF5U3Ry
aWRlT3V0LCBpbnQgKm1hdHJpeFN0cmlkZU91dCkKK3ZvaWQgU3RkMTQwQmxvY2tFbmNvZGVyOjpn
ZXRCbG9ja0xheW91dEluZm8oR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhcnJheVNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNSb3dNYWpvck1hdHJpeCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICphcnJheVN0cmlk
ZU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpt
YXRyaXhTdHJpZGVPdXQpCiB7CiAgICAgLy8gV2UgYXNzdW1lIHdlIGFyZSBvbmx5IGRlYWxpbmcg
d2l0aCA0IGJ5dGUgY29tcG9uZW50cyAobm8gZG91YmxlcyBvciBoYWxmLXdvcmRzIGN1cnJlbnRs
eSkKICAgICBBU1NFUlQoZ2w6OlZhcmlhYmxlQ29tcG9uZW50U2l6ZShnbDo6VmFyaWFibGVDb21w
b25lbnRUeXBlKHR5cGUpKSA9PSBCeXRlc1BlckNvbXBvbmVudCk7CiAKICAgICBzaXplX3QgYmFz
ZUFsaWdubWVudCA9IDA7Ci0gICAgaW50IG1hdHJpeFN0cmlkZSA9IDA7Ci0gICAgaW50IGFycmF5
U3RyaWRlID0gMDsKKyAgICBpbnQgbWF0cml4U3RyaWRlICAgICA9IDA7CisgICAgaW50IGFycmF5
U3RyaWRlICAgICAgPSAwOwogCiAgICAgaWYgKGdsOjpJc01hdHJpeFR5cGUodHlwZSkpCiAgICAg
ewogICAgICAgICBiYXNlQWxpZ25tZW50ID0gQ29tcG9uZW50c1BlclJlZ2lzdGVyOwotICAgICAg
ICBtYXRyaXhTdHJpZGUgPSBDb21wb25lbnRzUGVyUmVnaXN0ZXI7CisgICAgICAgIG1hdHJpeFN0
cmlkZSAgPSBDb21wb25lbnRzUGVyUmVnaXN0ZXI7CiAKICAgICAgICAgaWYgKGFycmF5U2l6ZSA+
IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IGludCBudW1SZWdpc3RlcnMgPSBnbDo6
TWF0cml4UmVnaXN0ZXJDb3VudCh0eXBlLCBpc1Jvd01ham9yTWF0cml4KTsKLSAgICAgICAgICAg
IGFycmF5U3RyaWRlID0gQ29tcG9uZW50c1BlclJlZ2lzdGVyICogbnVtUmVnaXN0ZXJzOworICAg
ICAgICAgICAgYXJyYXlTdHJpZGUgICAgICAgICAgICA9IENvbXBvbmVudHNQZXJSZWdpc3RlciAq
IG51bVJlZ2lzdGVyczsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIGlmIChhcnJheVNpemUg
PiAwKQogICAgIHsKICAgICAgICAgYmFzZUFsaWdubWVudCA9IENvbXBvbmVudHNQZXJSZWdpc3Rl
cjsKLSAgICAgICAgYXJyYXlTdHJpZGUgPSBDb21wb25lbnRzUGVyUmVnaXN0ZXI7CisgICAgICAg
IGFycmF5U3RyaWRlICAgPSBDb21wb25lbnRzUGVyUmVnaXN0ZXI7CiAgICAgfQogICAgIGVsc2UK
ICAgICB7CiAgICAgICAgIGNvbnN0IGludCBudW1Db21wb25lbnRzID0gZ2w6OlZhcmlhYmxlQ29t
cG9uZW50Q291bnQodHlwZSk7Ci0gICAgICAgIGJhc2VBbGlnbm1lbnQgPSAobnVtQ29tcG9uZW50
cyA9PSAzID8gNHUgOiBzdGF0aWNfY2FzdDxzaXplX3Q+KG51bUNvbXBvbmVudHMpKTsKKyAgICAg
ICAgYmFzZUFsaWdubWVudCAgICAgICAgICAgPSAobnVtQ29tcG9uZW50cyA9PSAzID8gNHUgOiBz
dGF0aWNfY2FzdDxzaXplX3Q+KG51bUNvbXBvbmVudHMpKTsKICAgICB9CiAKICAgICBtQ3VycmVu
dE9mZnNldCA9IHJ4Ojpyb3VuZFVwKG1DdXJyZW50T2Zmc2V0LCBiYXNlQWxpZ25tZW50KTsKIAog
ICAgICptYXRyaXhTdHJpZGVPdXQgPSBtYXRyaXhTdHJpZGU7Ci0gICAgKmFycmF5U3RyaWRlT3V0
ID0gYXJyYXlTdHJpZGU7CisgICAgKmFycmF5U3RyaWRlT3V0ICA9IGFycmF5U3RyaWRlOwogfQog
Ci12b2lkIFN0ZDE0MEJsb2NrRW5jb2Rlcjo6YWR2YW5jZU9mZnNldChHTGVudW0gdHlwZSwgdW5z
aWduZWQgaW50IGFycmF5U2l6ZSwgYm9vbCBpc1Jvd01ham9yTWF0cml4LCBpbnQgYXJyYXlTdHJp
ZGUsIGludCBtYXRyaXhTdHJpZGUpCit2b2lkIFN0ZDE0MEJsb2NrRW5jb2Rlcjo6YWR2YW5jZU9m
ZnNldChHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCBhcnJheVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGlzUm93TWFqb3JNYXRyaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgYXJyYXlTdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQgbWF0cml4U3RyaWRlKQogewogICAgIGlmIChhcnJheVNpemUgPiAw
KQogICAgIHsKQEAgLTEyMiw1ICsxMzEsNCBAQCB2b2lkIFN0ZDE0MEJsb2NrRW5jb2Rlcjo6YWR2
YW5jZU9mZnNldChHTGVudW0gdHlwZSwgdW5zaWduZWQgaW50IGFycmF5U2l6ZSwgYm9vbAogICAg
ICAgICBtQ3VycmVudE9mZnNldCArPSBnbDo6VmFyaWFibGVDb21wb25lbnRDb3VudCh0eXBlKTsK
ICAgICB9CiB9Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL2Jsb2NrbGF5b3V0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91dC5oCmluZGV4IGRkNWZlMDczNzZj
Li5jYWE4MmU2NWVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvYmxvY2tsYXlvdXQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91dC5oCkBAIC0yNCw3ICsyNCw3
IEBAIHN0cnVjdCBVbmlmb3JtOwogc3RydWN0IFZhcnlpbmc7CiBzdHJ1Y3QgSW50ZXJmYWNlQmxv
Y2s7CiAKLXN0cnVjdCBDT01QSUxFUl9FWFBPUlQgQmxvY2tNZW1iZXJJbmZvCitzdHJ1Y3QgQmxv
Y2tNZW1iZXJJbmZvCiB7CiAgICAgQmxvY2tNZW1iZXJJbmZvKCkgOiBvZmZzZXQoLTEpLCBhcnJh
eVN0cmlkZSgtMSksIG1hdHJpeFN0cmlkZSgtMSksIGlzUm93TWFqb3JNYXRyaXgoZmFsc2UpIHt9
CiAKQEAgLTMzLDIwICszMywxOCBAQCBzdHJ1Y3QgQ09NUElMRVJfRVhQT1JUIEJsb2NrTWVtYmVy
SW5mbwogICAgICAgICAgIGFycmF5U3RyaWRlKGFycmF5U3RyaWRlKSwKICAgICAgICAgICBtYXRy
aXhTdHJpZGUobWF0cml4U3RyaWRlKSwKICAgICAgICAgICBpc1Jvd01ham9yTWF0cml4KGlzUm93
TWFqb3JNYXRyaXgpCi0gICAge30KLQotICAgIHN0YXRpYyBCbG9ja01lbWJlckluZm8gZ2V0RGVm
YXVsdEJsb2NrSW5mbygpCiAgICAgewotICAgICAgICByZXR1cm4gQmxvY2tNZW1iZXJJbmZvKC0x
LCAtMSwgLTEsIGZhbHNlKTsKICAgICB9CiAKKyAgICBzdGF0aWMgQmxvY2tNZW1iZXJJbmZvIGdl
dERlZmF1bHRCbG9ja0luZm8oKSB7IHJldHVybiBCbG9ja01lbWJlckluZm8oLTEsIC0xLCAtMSwg
ZmFsc2UpOyB9CisKICAgICBpbnQgb2Zmc2V0OwogICAgIGludCBhcnJheVN0cmlkZTsKICAgICBp
bnQgbWF0cml4U3RyaWRlOwogICAgIGJvb2wgaXNSb3dNYWpvck1hdHJpeDsKIH07CiAKLWNsYXNz
IENPTVBJTEVSX0VYUE9SVCBCbG9ja0xheW91dEVuY29kZXIKK2NsYXNzIEJsb2NrTGF5b3V0RW5j
b2RlcgogewogICBwdWJsaWM6CiAgICAgQmxvY2tMYXlvdXRFbmNvZGVyKCk7CkBAIC01Nyw5ICs1
NSw5IEBAIGNsYXNzIENPTVBJTEVSX0VYUE9SVCBCbG9ja0xheW91dEVuY29kZXIKICAgICBzaXpl
X3QgZ2V0QmxvY2tTaXplKCkgY29uc3QgeyByZXR1cm4gbUN1cnJlbnRPZmZzZXQgKiBCeXRlc1Bl
ckNvbXBvbmVudDsgfQogCiAgICAgdmlydHVhbCB2b2lkIGVudGVyQWdncmVnYXRlVHlwZSgpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZXhpdEFnZ3JlZ2F0ZVR5cGUoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGV4aXRBZ2dyZWdhdGVUeXBlKCkgID0gMDsKIAotICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgQnl0ZXNQZXJDb21wb25lbnQgPSA0dTsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IEJ5dGVz
UGVyQ29tcG9uZW50ICAgICAgICAgICA9IDR1OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBp
bnQgQ29tcG9uZW50c1BlclJlZ2lzdGVyID0gNHU7CiAKICAgICBzdGF0aWMgc2l6ZV90IGdldEJs
b2NrUmVnaXN0ZXIoY29uc3QgQmxvY2tNZW1iZXJJbmZvICZpbmZvKTsKQEAgLTcwLDE0ICs2OCwy
MiBAQCBjbGFzcyBDT01QSUxFUl9FWFBPUlQgQmxvY2tMYXlvdXRFbmNvZGVyCiAKICAgICB2b2lk
IG5leHRSZWdpc3RlcigpOwogCi0gICAgdmlydHVhbCB2b2lkIGdldEJsb2NrTGF5b3V0SW5mbyhH
TGVudW0gdHlwZSwgdW5zaWduZWQgaW50IGFycmF5U2l6ZSwgYm9vbCBpc1Jvd01ham9yTWF0cml4
LCBpbnQgKmFycmF5U3RyaWRlT3V0LCBpbnQgKm1hdHJpeFN0cmlkZU91dCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBhZHZhbmNlT2Zmc2V0KEdMZW51bSB0eXBlLCB1bnNpZ25lZCBpbnQgYXJyYXlT
aXplLCBib29sIGlzUm93TWFqb3JNYXRyaXgsIGludCBhcnJheVN0cmlkZSwgaW50IG1hdHJpeFN0
cmlkZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRCbG9ja0xheW91dEluZm8oR0xlbnVtIHR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXJy
YXlTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1Jvd01h
am9yTWF0cml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICphcnJh
eVN0cmlkZU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqbWF0
cml4U3RyaWRlT3V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkdmFuY2VPZmZzZXQoR0xlbnVt
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGFycmF5
U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzUm93TWFqb3JNYXRy
aXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFycmF5U3RyaWRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXRyaXhTdHJpZGUpID0gMDsKIH07CiAK
IC8vIEJsb2NrIGxheW91dCBhY2NvcmRpbmcgdG8gdGhlIHN0ZDE0MCBibG9jayBsYXlvdXQKIC8v
IFNlZSAiU3RhbmRhcmQgVW5pZm9ybSBCbG9jayBMYXlvdXQiIGluIFNlY3Rpb24gMi4xMS42IG9m
IHRoZSBPcGVuR0wgRVMgMy4wIHNwZWNpZmljYXRpb24KIAotY2xhc3MgQ09NUElMRVJfRVhQT1JU
IFN0ZDE0MEJsb2NrRW5jb2RlciA6IHB1YmxpYyBCbG9ja0xheW91dEVuY29kZXIKK2NsYXNzIFN0
ZDE0MEJsb2NrRW5jb2RlciA6IHB1YmxpYyBCbG9ja0xheW91dEVuY29kZXIKIHsKICAgcHVibGlj
OgogICAgIFN0ZDE0MEJsb2NrRW5jb2RlcigpOwpAQCAtOTcsNyArMTAzLDYgQEAgY2xhc3MgQ09N
UElMRVJfRVhQT1JUIFN0ZDE0MEJsb2NrRW5jb2RlciA6IHB1YmxpYyBCbG9ja0xheW91dEVuY29k
ZXIKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFycmF5U3RyaWRlLAogICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbWF0cml4U3RyaWRlKSBvdmVycmlkZTsKIH07Ci0KIH0KIAotI2VuZGlm
IC8vIENPTU1PTl9CTE9DS0xBWU9VVF9IXworI2VuZGlmICAvLyBDT01NT05fQkxPQ0tMQVlPVVRf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFu
c2xhdG9yL2Jsb2NrbGF5b3V0SExTTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91dEhMU0wuY3BwCmluZGV4IDQzMTE5MjQ4ZWI5
Li4zOWIxYTViZDM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3RyYW5zbGF0b3IvYmxvY2tsYXlvdXRITFNMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91dEhMU0wuY3BwCkBA
IC0xNSw5ICsxNSw4IEBACiBuYW1lc3BhY2Ugc2gKIHsKIAotSExTTEJsb2NrRW5jb2Rlcjo6SExT
TEJsb2NrRW5jb2RlcihITFNMQmxvY2tFbmNvZGVyU3RyYXRlZ3kgc3RyYXRlZ3kpCi0gICAgOiBt
RW5jb2RlclN0cmF0ZWd5KHN0cmF0ZWd5KSwKLSAgICAgIG1UcmFuc3Bvc2VNYXRyaWNlcyhmYWxz
ZSkKK0hMU0xCbG9ja0VuY29kZXI6OkhMU0xCbG9ja0VuY29kZXIoSExTTEJsb2NrRW5jb2RlclN0
cmF0ZWd5IHN0cmF0ZWd5LCBib29sIHRyYW5zcG9zZU1hdHJpY2VzKQorICAgIDogbUVuY29kZXJT
dHJhdGVneShzdHJhdGVneSksIG1UcmFuc3Bvc2VNYXRyaWNlcyh0cmFuc3Bvc2VNYXRyaWNlcykK
IHsKIH0KIApAQCAtMzAsNyArMjksMTEgQEAgdm9pZCBITFNMQmxvY2tFbmNvZGVyOjpleGl0QWdn
cmVnYXRlVHlwZSgpCiB7CiB9CiAKLXZvaWQgSExTTEJsb2NrRW5jb2Rlcjo6Z2V0QmxvY2tMYXlv
dXRJbmZvKEdMZW51bSB0eXBlSW4sIHVuc2lnbmVkIGludCBhcnJheVNpemUsIGJvb2wgaXNSb3dN
YWpvck1hdHJpeCwgaW50ICphcnJheVN0cmlkZU91dCwgaW50ICptYXRyaXhTdHJpZGVPdXQpCit2
b2lkIEhMU0xCbG9ja0VuY29kZXI6OmdldEJsb2NrTGF5b3V0SW5mbyhHTGVudW0gdHlwZUluLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGFy
cmF5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
aXNSb3dNYWpvck1hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCAqYXJyYXlTdHJpZGVPdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgKm1hdHJpeFN0cmlkZU91dCkKIHsKICAgICBHTGVudW0gdHlwZSA9ICht
VHJhbnNwb3NlTWF0cmljZXMgPyBnbDo6VHJhbnNwb3NlTWF0cml4VHlwZSh0eXBlSW4pIDogdHlw
ZUluKTsKIApAQCAtMzgsMTQgKzQxLDEyIEBAIHZvaWQgSExTTEJsb2NrRW5jb2Rlcjo6Z2V0Qmxv
Y2tMYXlvdXRJbmZvKEdMZW51bSB0eXBlSW4sIHVuc2lnbmVkIGludCBhcnJheVNpemUsCiAgICAg
QVNTRVJUKGdsOjpWYXJpYWJsZUNvbXBvbmVudFNpemUoZ2w6OlZhcmlhYmxlQ29tcG9uZW50VHlw
ZSh0eXBlKSkgPT0gQnl0ZXNQZXJDb21wb25lbnQpOwogCiAgICAgaW50IG1hdHJpeFN0cmlkZSA9
IDA7Ci0gICAgaW50IGFycmF5U3RyaWRlID0gMDsKKyAgICBpbnQgYXJyYXlTdHJpZGUgID0gMDsK
IAogICAgIC8vIGlmIHZhcmlhYmxlcyBhcmUgbm90IHRvIGJlIHBhY2tlZCwgb3Igd2UncmUgYWJv
dXQgdG8KICAgICAvLyBwYWNrIGEgbWF0cml4IG9yIGFycmF5LCBza2lwIHRvIHRoZSBzdGFydCBv
ZiB0aGUgbmV4dAogICAgIC8vIHJlZ2lzdGVyCi0gICAgaWYgKCFpc1BhY2tlZCgpIHx8Ci0gICAg
ICAgIGdsOjpJc01hdHJpeFR5cGUodHlwZSkgfHwKLSAgICAgICAgYXJyYXlTaXplID4gMCkKKyAg
ICBpZiAoIWlzUGFja2VkKCkgfHwgZ2w6OklzTWF0cml4VHlwZSh0eXBlKSB8fCBhcnJheVNpemUg
PiAwKQogICAgIHsKICAgICAgICAgbmV4dFJlZ2lzdGVyKCk7CiAgICAgfQpAQCAtNTcsNyArNTgs
NyBAQCB2b2lkIEhMU0xCbG9ja0VuY29kZXI6OmdldEJsb2NrTGF5b3V0SW5mbyhHTGVudW0gdHlw
ZUluLCB1bnNpZ25lZCBpbnQgYXJyYXlTaXplLAogICAgICAgICBpZiAoYXJyYXlTaXplID4gMCkK
ICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgaW50IG51bVJlZ2lzdGVycyA9IGdsOjpNYXRy
aXhSZWdpc3RlckNvdW50KHR5cGUsIGlzUm93TWFqb3JNYXRyaXgpOwotICAgICAgICAgICAgYXJy
YXlTdHJpZGUgPSBDb21wb25lbnRzUGVyUmVnaXN0ZXIgKiBudW1SZWdpc3RlcnM7CisgICAgICAg
ICAgICBhcnJheVN0cmlkZSAgICAgICAgICAgID0gQ29tcG9uZW50c1BlclJlZ2lzdGVyICogbnVt
UmVnaXN0ZXJzOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgaWYgKGFycmF5U2l6ZSA+IDAp
CkBAIC03NCwxMCArNzUsMTQgQEAgdm9pZCBITFNMQmxvY2tFbmNvZGVyOjpnZXRCbG9ja0xheW91
dEluZm8oR0xlbnVtIHR5cGVJbiwgdW5zaWduZWQgaW50IGFycmF5U2l6ZSwKICAgICB9CiAKICAg
ICAqbWF0cml4U3RyaWRlT3V0ID0gbWF0cml4U3RyaWRlOwotICAgICphcnJheVN0cmlkZU91dCA9
IGFycmF5U3RyaWRlOworICAgICphcnJheVN0cmlkZU91dCAgPSBhcnJheVN0cmlkZTsKIH0KIAot
dm9pZCBITFNMQmxvY2tFbmNvZGVyOjphZHZhbmNlT2Zmc2V0KEdMZW51bSB0eXBlSW4sIHVuc2ln
bmVkIGludCBhcnJheVNpemUsIGJvb2wgaXNSb3dNYWpvck1hdHJpeCwgaW50IGFycmF5U3RyaWRl
LCBpbnQgbWF0cml4U3RyaWRlKQordm9pZCBITFNMQmxvY2tFbmNvZGVyOjphZHZhbmNlT2Zmc2V0
KEdMZW51bSB0eXBlSW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IGFycmF5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGlzUm93TWFqb3JNYXRyaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGFycmF5U3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCBtYXRyaXhTdHJpZGUpCiB7CiAgICAgR0xlbnVtIHR5cGUgPSAobVRyYW5zcG9zZU1h
dHJpY2VzID8gZ2w6OlRyYW5zcG9zZU1hdHJpeFR5cGUodHlwZUluKSA6IHR5cGVJbik7CiAKQEAg
LTg5LDcgKzk0LDcgQEAgdm9pZCBITFNMQmxvY2tFbmNvZGVyOjphZHZhbmNlT2Zmc2V0KEdMZW51
bSB0eXBlSW4sIHVuc2lnbmVkIGludCBhcnJheVNpemUsIGJvb2wKICAgICBpZiAoZ2w6OklzTWF0
cml4VHlwZSh0eXBlKSkKICAgICB7CiAgICAgICAgIEFTU0VSVChtYXRyaXhTdHJpZGUgPT0gQ29t
cG9uZW50c1BlclJlZ2lzdGVyKTsKLSAgICAgICAgY29uc3QgaW50IG51bVJlZ2lzdGVycyA9IGds
OjpNYXRyaXhSZWdpc3RlckNvdW50KHR5cGUsIGlzUm93TWFqb3JNYXRyaXgpOworICAgICAgICBj
b25zdCBpbnQgbnVtUmVnaXN0ZXJzICA9IGdsOjpNYXRyaXhSZWdpc3RlckNvdW50KHR5cGUsIGlz
Um93TWFqb3JNYXRyaXgpOwogICAgICAgICBjb25zdCBpbnQgbnVtQ29tcG9uZW50cyA9IGdsOjpN
YXRyaXhDb21wb25lbnRDb3VudCh0eXBlLCBpc1Jvd01ham9yTWF0cml4KTsKICAgICAgICAgbUN1
cnJlbnRPZmZzZXQgKz0gQ29tcG9uZW50c1BlclJlZ2lzdGVyICogKG51bVJlZ2lzdGVycyAtIDEp
OwogICAgICAgICBtQ3VycmVudE9mZnNldCArPSBudW1Db21wb25lbnRzOwpAQCAtMTA5LDcgKzEx
NCw4IEBAIHZvaWQgSExTTEJsb2NrRW5jb2Rlcjo6c2tpcFJlZ2lzdGVycyh1bnNpZ25lZCBpbnQg
bnVtUmVnaXN0ZXJzKQogICAgIG1DdXJyZW50T2Zmc2V0ICs9IChudW1SZWdpc3RlcnMgKiBDb21w
b25lbnRzUGVyUmVnaXN0ZXIpOwogfQogCi1ITFNMQmxvY2tFbmNvZGVyOjpITFNMQmxvY2tFbmNv
ZGVyU3RyYXRlZ3kgSExTTEJsb2NrRW5jb2Rlcjo6R2V0U3RyYXRlZ3lGb3IoU2hTaGFkZXJPdXRw
dXQgb3V0cHV0VHlwZSkKK0hMU0xCbG9ja0VuY29kZXI6OkhMU0xCbG9ja0VuY29kZXJTdHJhdGVn
eSBITFNMQmxvY2tFbmNvZGVyOjpHZXRTdHJhdGVneUZvcigKKyAgICBTaFNoYWRlck91dHB1dCBv
dXRwdXRUeXBlKQogewogICAgIHN3aXRjaCAob3V0cHV0VHlwZSkKICAgICB7CkBAIC0xNDgsMjQg
KzE1NCwxMyBAQCB2b2lkIEhMU0xWYXJpYWJsZVJlZ2lzdGVyQ291bnQoY29uc3QgU2hhZGVyVmFy
VHlwZSAmdmFyaWFibGUsIEhMU0xCbG9ja0VuY29kZXIgKgogICAgIH0KIH0KIAotdW5zaWduZWQg
aW50IEhMU0xWYXJpYWJsZVJlZ2lzdGVyQ291bnQoY29uc3QgVmFyeWluZyAmdmFyaWFibGUsIGJv
b2wgdHJhbnNwb3NlTWF0cmljZXMpCi17Ci0gICAgSExTTEJsb2NrRW5jb2RlciBlbmNvZGVyKEhM
U0xCbG9ja0VuY29kZXI6OkVOQ09ERV9QQUNLRUQpOwotICAgIGVuY29kZXIuc2V0VHJhbnNwb3Nl
TWF0cmljZXModHJhbnNwb3NlTWF0cmljZXMpOwotICAgIEhMU0xWYXJpYWJsZVJlZ2lzdGVyQ291
bnQodmFyaWFibGUsICZlbmNvZGVyKTsKLQotICAgIGNvbnN0IHNpemVfdCByZWdpc3RlckJ5dGVz
ID0gKGVuY29kZXIuQnl0ZXNQZXJDb21wb25lbnQgKiBlbmNvZGVyLkNvbXBvbmVudHNQZXJSZWdp
c3Rlcik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4ocng6OnJvdW5kVXA8
c2l6ZV90PihlbmNvZGVyLmdldEJsb2NrU2l6ZSgpLCByZWdpc3RlckJ5dGVzKSAvIHJlZ2lzdGVy
Qnl0ZXMpOwotfQotCiB1bnNpZ25lZCBpbnQgSExTTFZhcmlhYmxlUmVnaXN0ZXJDb3VudChjb25z
dCBVbmlmb3JtICZ2YXJpYWJsZSwgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSkKIHsKLSAgICBI
TFNMQmxvY2tFbmNvZGVyIGVuY29kZXIoSExTTEJsb2NrRW5jb2Rlcjo6R2V0U3RyYXRlZ3lGb3Io
b3V0cHV0VHlwZSkpOwotICAgIGVuY29kZXIuc2V0VHJhbnNwb3NlTWF0cmljZXModHJ1ZSk7Cisg
ICAgSExTTEJsb2NrRW5jb2RlciBlbmNvZGVyKEhMU0xCbG9ja0VuY29kZXI6OkdldFN0cmF0ZWd5
Rm9yKG91dHB1dFR5cGUpLCB0cnVlKTsKICAgICBITFNMVmFyaWFibGVSZWdpc3RlckNvdW50KHZh
cmlhYmxlLCAmZW5jb2Rlcik7CiAKICAgICBjb25zdCBzaXplX3QgcmVnaXN0ZXJCeXRlcyA9IChl
bmNvZGVyLkJ5dGVzUGVyQ29tcG9uZW50ICogZW5jb2Rlci5Db21wb25lbnRzUGVyUmVnaXN0ZXIp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHJ4Ojpyb3VuZFVwPHNpemVf
dD4oZW5jb2Rlci5nZXRCbG9ja1NpemUoKSwgcmVnaXN0ZXJCeXRlcykgLyByZWdpc3RlckJ5dGVz
KTsKLX0KLQorICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHJ4Ojpyb3VuZFVw
PHNpemVfdD4oZW5jb2Rlci5nZXRCbG9ja1NpemUoKSwgcmVnaXN0ZXJCeXRlcykgLworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyQnl0ZXMpOwogfQorfSAgLy8g
bmFtZXNwYWNlIHNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91dEhMU0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2Jsb2NrbGF5b3V0SExTTC5oCmluZGV4IGM2MWNi
MWFlNTc3Li5hMDIyMGRjY2I3MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvYmxvY2tsYXlvdXRITFNMLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvYmxvY2tsYXlvdXRITFNMLmgK
QEAgLTI0LDcgKzI0LDcgQEAgbmFtZXNwYWNlIHNoCiAvLyBUaGUgc3RyYXRlZ3kgc2hvdWxkIGJl
IEVOQ09ERV9MT09TRSBmb3IgRDNEOSBjb25zdGFudCBibG9ja3MsIGFuZCBFTkNPREVfUEFDS0VE
CiAvLyBmb3IgZXZlcnl0aGluZyBlbHNlIChEM0QxMCsgY29uc3RhbnQgYmxvY2tzIGFuZCBhbGwg
YXR0cmlidXRlcy92YXJ5aW5ncykuCiAKLWNsYXNzIENPTVBJTEVSX0VYUE9SVCBITFNMQmxvY2tF
bmNvZGVyIDogcHVibGljIEJsb2NrTGF5b3V0RW5jb2RlcgorY2xhc3MgSExTTEJsb2NrRW5jb2Rl
ciA6IHB1YmxpYyBCbG9ja0xheW91dEVuY29kZXIKIHsKICAgcHVibGljOgogICAgIGVudW0gSExT
TEJsb2NrRW5jb2RlclN0cmF0ZWd5CkBAIC0zMywzMCArMzMsMzYgQEAgY2xhc3MgQ09NUElMRVJf
RVhQT1JUIEhMU0xCbG9ja0VuY29kZXIgOiBwdWJsaWMgQmxvY2tMYXlvdXRFbmNvZGVyCiAgICAg
ICAgIEVOQ09ERV9MT09TRQogICAgIH07CiAKLSAgICBITFNMQmxvY2tFbmNvZGVyKEhMU0xCbG9j
a0VuY29kZXJTdHJhdGVneSBzdHJhdGVneSk7CisgICAgSExTTEJsb2NrRW5jb2RlcihITFNMQmxv
Y2tFbmNvZGVyU3RyYXRlZ3kgc3RyYXRlZ3ksIGJvb2wgdHJhbnNwb3NlTWF0cmljZXMpOwogCiAg
ICAgdmlydHVhbCB2b2lkIGVudGVyQWdncmVnYXRlVHlwZSgpOwogICAgIHZpcnR1YWwgdm9pZCBl
eGl0QWdncmVnYXRlVHlwZSgpOwogICAgIHZvaWQgc2tpcFJlZ2lzdGVycyh1bnNpZ25lZCBpbnQg
bnVtUmVnaXN0ZXJzKTsKIAogICAgIGJvb2wgaXNQYWNrZWQoKSBjb25zdCB7IHJldHVybiBtRW5j
b2RlclN0cmF0ZWd5ID09IEVOQ09ERV9QQUNLRUQ7IH0KLSAgICB2b2lkIHNldFRyYW5zcG9zZU1h
dHJpY2VzKGJvb2wgZW5hYmxlZCkgeyBtVHJhbnNwb3NlTWF0cmljZXMgPSBlbmFibGVkOyB9CiAK
ICAgICBzdGF0aWMgSExTTEJsb2NrRW5jb2RlclN0cmF0ZWd5IEdldFN0cmF0ZWd5Rm9yKFNoU2hh
ZGVyT3V0cHV0IG91dHB1dFR5cGUpOwogCiAgIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0QmxvY2tMYXlvdXRJbmZvKEdMZW51bSB0eXBlLCB1bnNpZ25lZCBpbnQgYXJyYXlTaXplLCBi
b29sIGlzUm93TWFqb3JNYXRyaXgsIGludCAqYXJyYXlTdHJpZGVPdXQsIGludCAqbWF0cml4U3Ry
aWRlT3V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWR2YW5jZU9mZnNldChHTGVudW0gdHlwZSwgdW5z
aWduZWQgaW50IGFycmF5U2l6ZSwgYm9vbCBpc1Jvd01ham9yTWF0cml4LCBpbnQgYXJyYXlTdHJp
ZGUsIGludCBtYXRyaXhTdHJpZGUpOworICAgIHZpcnR1YWwgdm9pZCBnZXRCbG9ja0xheW91dElu
Zm8oR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp
Z25lZCBpbnQgYXJyYXlTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBpc1Jvd01ham9yTWF0cml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50ICphcnJheVN0cmlkZU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGludCAqbWF0cml4U3RyaWRlT3V0KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWR2YW5jZU9mZnNl
dChHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgYXJyYXlTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNSb3dN
YWpvck1hdHJpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYXJyYXlTdHJp
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1hdHJpeFN0cmlkZSk7CiAK
ICAgICBITFNMQmxvY2tFbmNvZGVyU3RyYXRlZ3kgbUVuY29kZXJTdHJhdGVneTsKICAgICBib29s
IG1UcmFuc3Bvc2VNYXRyaWNlczsKIH07CiAKLS8vIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIG51
bWJlciBvZiB1c2VkIHJlZ2lzdGVycyBmb3IgYSBTaGFkZXJWYXJpYWJsZS4gSXQgaXMgZGVwZW5k
ZW50IG9uIHRoZSBITFNMQmxvY2tFbmNvZGVyCi0vLyBjbGFzcyB0byBjb3VudCB0aGUgbnVtYmVy
IG9mIHVzZWQgcmVnaXN0ZXJzIGluIGEgc3RydWN0ICh3aGljaCBhcmUgaW5kaXZpZHVhbGx5IHBh
Y2tlZCBhY2NvcmRpbmcgdG8gdGhlIHNhbWUgcnVsZXMpLgotQ09NUElMRVJfRVhQT1JUIHVuc2ln
bmVkIGludCBITFNMVmFyaWFibGVSZWdpc3RlckNvdW50KGNvbnN0IFZhcnlpbmcgJnZhcmlhYmxl
LCBib29sIHRyYW5zcG9zZU1hdHJpY2VzKTsKLUNPTVBJTEVSX0VYUE9SVCB1bnNpZ25lZCBpbnQg
SExTTFZhcmlhYmxlUmVnaXN0ZXJDb3VudChjb25zdCBVbmlmb3JtICZ2YXJpYWJsZSwgU2hTaGFk
ZXJPdXRwdXQgb3V0cHV0VHlwZSk7Ci0KKy8vIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIG51bWJl
ciBvZiB1c2VkIHJlZ2lzdGVycyBmb3IgYSBTaGFkZXJWYXJpYWJsZS4gSXQgaXMgZGVwZW5kZW50
IG9uIHRoZQorLy8gSExTTEJsb2NrRW5jb2RlciBjbGFzcyB0byBjb3VudCB0aGUgbnVtYmVyIG9m
IHVzZWQgcmVnaXN0ZXJzIGluIGEgc3RydWN0ICh3aGljaCBhcmUgaW5kaXZpZHVhbGx5CisvLyBw
YWNrZWQgYWNjb3JkaW5nIHRvIHRoZSBzYW1lIHJ1bGVzKS4KK3Vuc2lnbmVkIGludCBITFNMVmFy
aWFibGVSZWdpc3RlckNvdW50KGNvbnN0IFVuaWZvcm0gJnZhcmlhYmxlLCBTaFNoYWRlck91dHB1
dCBvdXRwdXRUeXBlKTsKIH0KIAotI2VuZGlmIC8vIENPTU1PTl9CTE9DS0xBWU9VVEhMU0xfSF8K
KyNlbmRpZiAgLy8gQ09NTU9OX0JMT0NLTEFZT1VUSExTTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZy5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZy5oCmlu
ZGV4IDA1NTVlOTZkNDUwLi5lNTRjMzFiYTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZy5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmcuaApAQCAtNywx
NCArNywxOCBAQAogI2lmbmRlZiBDT01QSUxFUl9UUkFOU0xBVE9SX0dMU0xBTkdfSF8KICNkZWZp
bmUgQ09NUElMRVJfVFJBTlNMQVRPUl9HTFNMQU5HX0hfCiAKK25hbWVzcGFjZSBzaAorewogY2xh
c3MgVFBhcnNlQ29udGV4dDsKLWV4dGVybiBpbnQgZ2xzbGFuZ19pbml0aWFsaXplKFRQYXJzZUNv
bnRleHQqIGNvbnRleHQpOwotZXh0ZXJuIGludCBnbHNsYW5nX2ZpbmFsaXplKFRQYXJzZUNvbnRl
eHQqIGNvbnRleHQpOworfQorCitleHRlcm4gaW50IGdsc2xhbmdfaW5pdGlhbGl6ZShzaDo6VFBh
cnNlQ29udGV4dCAqY29udGV4dCk7CitleHRlcm4gaW50IGdsc2xhbmdfZmluYWxpemUoc2g6OlRQ
YXJzZUNvbnRleHQgKmNvbnRleHQpOwogCiBleHRlcm4gaW50IGdsc2xhbmdfc2NhbihzaXplX3Qg
Y291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdb
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0IHN0cmluZ1tdLAog
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGxlbmd0aFtdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgVFBhcnNlQ29udGV4dCogY29udGV4dCk7Ci1leHRlcm4gaW50IGdsc2xhbmdf
cGFyc2UoVFBhcnNlQ29udGV4dCogY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBz
aDo6VFBhcnNlQ29udGV4dCAqY29udGV4dCk7CitleHRlcm4gaW50IGdsc2xhbmdfcGFyc2Uoc2g6
OlRQYXJzZUNvbnRleHQgKmNvbnRleHQpOwogCi0jZW5kaWYgLy8gQ09NUElMRVJfVFJBTlNMQVRP
Ul9HTFNMQU5HX0hfCisjZW5kaWYgIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfR0xTTEFOR19IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0
b3IvZ2xzbGFuZy5sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5z
bGF0b3IvZ2xzbGFuZy5sCmluZGV4IDdmZTI4OTMwMjc1Li5jMTIzYmM2NTRkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFu
Zy5sCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9y
L2dsc2xhbmcubApAQCAtMjIsNiArMjIsOCBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wgRVMg
TEVYRVIgKGdsc2xhbmdfbGV4LmNwcCkuCiAKIC8vIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRl
ZCBieSBnZW5lcmF0ZV9wYXJzZXIuc2guIERPIE5PVCBFRElUIQogCisvKiBjbGFuZy1mb3JtYXQg
b2ZmICovCisKIC8vIElnbm9yZSBlcnJvcnMgaW4gYXV0by1nZW5lcmF0ZWQgY29kZS4KICNpZiBk
ZWZpbmVkKF9fR05VQ19fKQogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNl
ZC1mdW5jdGlvbiIKQEAgLTQ0LDYgKzQ2LDkgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVT
IExFWEVSIChnbHNsYW5nX2xleC5jcHApLgogI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9Ub2tlbi5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdXRpbC5oIgogI2luY2x1
ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvbGVuZ3RoX2xpbWl0cy5oIgorCit1c2luZyBuYW1lc3Bh
Y2Ugc2g7CisKICNpbmNsdWRlICJnbHNsYW5nX3RhYi5oIgogCiAvKiB3aW5kb3dzIG9ubHkgcHJh
Z21hICovCkBAIC03MSwxMCArNzYsMTUgQEAgc3RhdGljIGludCByZXNlcnZlZF93b3JkKHl5c2Nh
bl90IHl5c2Nhbm5lcik7CiBzdGF0aWMgaW50IEVTMl9yZXNlcnZlZF9FUzNfa2V5d29yZChUUGFy
c2VDb250ZXh0ICpjb250ZXh0LCBpbnQgdG9rZW4pOwogc3RhdGljIGludCBFUzJfa2V5d29yZF9F
UzNfcmVzZXJ2ZWQoVFBhcnNlQ29udGV4dCAqY29udGV4dCwgaW50IHRva2VuKTsKIHN0YXRpYyBp
bnQgRVMyX2lkZW50X0VTM19rZXl3b3JkKFRQYXJzZUNvbnRleHQgKmNvbnRleHQsIGludCB0b2tl
bik7CitzdGF0aWMgaW50IEVTMl9pZGVudF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChUUGFy
c2VDb250ZXh0ICpjb250ZXh0LCBpbnQgdG9rZW4pOworc3RhdGljIGludCBFUzJfYW5kX0VTM19y
ZXNlcnZlZF9FUzNfMV9rZXl3b3JkKFRQYXJzZUNvbnRleHQgKmNvbnRleHQsIGludCB0b2tlbik7
CitzdGF0aWMgaW50IEVTMl9hbmRfRVMzX2lkZW50X0VTM18xX2tleXdvcmQoVFBhcnNlQ29udGV4
dCAqY29udGV4dCwgaW50IHRva2VuKTsKK3N0YXRpYyBpbnQgRVMzX2V4dGVuc2lvbl9rZXl3b3Jk
X2Vsc2VfaWRlbnQoVFBhcnNlQ29udGV4dCAqY29udGV4dCwgY29uc3QgY2hhciAqZXh0ZW5zaW9u
LCBpbnQgdG9rZW4pOwogc3RhdGljIGludCB1aW50X2NvbnN0YW50KFRQYXJzZUNvbnRleHQgKmNv
bnRleHQpOwogc3RhdGljIGludCBpbnRfY29uc3RhbnQoVFBhcnNlQ29udGV4dCAqY29udGV4dCk7
CiBzdGF0aWMgaW50IGZsb2F0X2NvbnN0YW50KHl5c2Nhbl90IHl5c2Nhbm5lcik7CiBzdGF0aWMg
aW50IGZsb2F0c3VmZml4X2NoZWNrKFRQYXJzZUNvbnRleHQqIGNvbnRleHQpOworc3RhdGljIGlu
dCB5dXZjc2NzdGFuZGFyZGV4dF9jb25zdGFudChUUGFyc2VDb250ZXh0ICpjb250ZXh0KTsKICV9
CiAKICVvcHRpb24gbm95eXdyYXAgbm91bnB1dCBuZXZlci1pbnRlcmFjdGl2ZQpAQCAtMTI0LDYg
KzEzNCw3IEBAIE8gICAgICAgICAgIFswLTddCiAiaW4iICAgICAgICAgICB7IHJldHVybiBJTl9R
VUFMOyB9CiAib3V0IiAgICAgICAgICB7IHJldHVybiBPVVRfUVVBTDsgfQogImlub3V0IiAgICAg
ICAgeyByZXR1cm4gSU5PVVRfUVVBTDsgfQorInNoYXJlZCIgICAgICAgeyByZXR1cm4gRVMyX2Fu
ZF9FUzNfaWRlbnRfRVMzXzFfa2V5d29yZChjb250ZXh0LCBTSEFSRUQpOyB9CiAKICJmbG9hdCIg
ICAgICAgIHsgcmV0dXJuIEZMT0FUX1RZUEU7IH0KICJpbnQiICAgICAgICAgIHsgcmV0dXJuIElO
VF9UWVBFOyB9CkBAIC0xNzEsMjcgKzE4Miw1MCBAQCBPICAgICAgICAgICBbMC03XQogInNhbXBs
ZXIzRFJlY3QiICAgICAgICB7IHJldHVybiBFUzJfcmVzZXJ2ZWRfRVMzX2tleXdvcmQoY29udGV4
dCwgU0FNUExFUjNEUkVDVCk7IH0KICJzYW1wbGVyMkRSZWN0IiAgICAgICAgeyByZXR1cm4gU0FN
UExFUjJEUkVDVDsgfQogInNhbXBsZXIyREFycmF5IiAgICAgICB7IHJldHVybiBFUzJfaWRlbnRf
RVMzX2tleXdvcmQoY29udGV4dCwgU0FNUExFUjJEQVJSQVkpOyB9Cisic2FtcGxlcjJETVMiICAg
ICAgICAgIHsgcmV0dXJuIEVTMl9pZGVudF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChjb250
ZXh0LCBTQU1QTEVSMkRNUyk7IH0KICJpc2FtcGxlcjJEIiAgICAgICAgICAgeyByZXR1cm4gRVMy
X2lkZW50X0VTM19rZXl3b3JkKGNvbnRleHQsIElTQU1QTEVSMkQpOyB9CiAiaXNhbXBsZXIzRCIg
ICAgICAgICAgIHsgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBJU0FNUExF
UjNEKTsgfQogImlzYW1wbGVyQ3ViZSIgICAgICAgICB7IHJldHVybiBFUzJfaWRlbnRfRVMzX2tl
eXdvcmQoY29udGV4dCwgSVNBTVBMRVJDVUJFKTsgfQogImlzYW1wbGVyMkRBcnJheSIgICAgICB7
IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgSVNBTVBMRVIyREFSUkFZKTsg
fQorImlzYW1wbGVyMkRNUyIgICAgICAgICB7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVk
X0VTM18xX2tleXdvcmQoY29udGV4dCwgSVNBTVBMRVIyRE1TKTsgfQogInVzYW1wbGVyMkQiICAg
ICAgICAgICB7IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgVVNBTVBMRVIy
RCk7IH0KICJ1c2FtcGxlcjNEIiAgICAgICAgICAgeyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3
b3JkKGNvbnRleHQsIFVTQU1QTEVSM0QpOyB9CiAidXNhbXBsZXJDdWJlIiAgICAgICAgIHsgcmV0
dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBVU0FNUExFUkNVQkUpOyB9CiAidXNh
bXBsZXIyREFycmF5IiAgICAgIHsgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0
LCBVU0FNUExFUjJEQVJSQVkpOyB9CisidXNhbXBsZXIyRE1TIiAgICAgICAgIHsgcmV0dXJuIEVT
Ml9pZGVudF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChjb250ZXh0LCBVU0FNUExFUjJETVMp
OyB9CiAic2FtcGxlcjJEU2hhZG93IiAgICAgIHsgcmV0dXJuIEVTMl9yZXNlcnZlZF9FUzNfa2V5
d29yZChjb250ZXh0LCBTQU1QTEVSMkRTSEFET1cpOyB9CiAic2FtcGxlckN1YmVTaGFkb3ciICAg
IHsgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBTQU1QTEVSQ1VCRVNIQURP
Vyk7IH0KICJzYW1wbGVyMkRBcnJheVNoYWRvdyIgeyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3
b3JkKGNvbnRleHQsIFNBTVBMRVIyREFSUkFZU0hBRE9XKTsgfQorIl9fc2FtcGxlckV4dGVybmFs
MkRZMllFWFQiICAgeyByZXR1cm4gRVMzX2V4dGVuc2lvbl9rZXl3b3JkX2Vsc2VfaWRlbnQoY29u
dGV4dCwgIkdMX0VYVF9ZVVZfdGFyZ2V0IiwgU0FNUExFUkVYVEVSTkFMMkRZMllFWFQpOyB9CiAK
ICJzdHJ1Y3QiICAgICAgIHsgcmV0dXJuIFNUUlVDVDsgfQogCiAibGF5b3V0IiAgeyByZXR1cm4g
RVMyX2lkZW50X0VTM19rZXl3b3JkKGNvbnRleHQsIExBWU9VVCk7IH0KIAorInl1dkNzY1N0YW5k
YXJkRVhUIiAgICB7IHJldHVybiBFUzNfZXh0ZW5zaW9uX2tleXdvcmRfZWxzZV9pZGVudChjb250
ZXh0LCAiR0xfRVhUX1lVVl90YXJnZXQiLCBZVVZDU0NTVEFOREFSREVYVCk7IH0KKyJpdHVfNjAx
IiAgICAgICAgICAgICAgeyByZXR1cm4geXV2Y3Njc3RhbmRhcmRleHRfY29uc3RhbnQoY29udGV4
dCk7IH0KKyJpdHVfNjAxX2Z1bGxfcmFuZ2UiICAgeyByZXR1cm4geXV2Y3Njc3RhbmRhcmRleHRf
Y29uc3RhbnQoY29udGV4dCk7IH0KKyJpdHVfNzA5IiAgICAgICAgICAgICAgeyByZXR1cm4geXV2
Y3Njc3RhbmRhcmRleHRfY29uc3RhbnQoY29udGV4dCk7IH0KKworImltYWdlMkQiIHsgcmV0dXJu
IEVTMl9pZGVudF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChjb250ZXh0LCBJTUFHRTJEKTsg
fQorImlpbWFnZTJEIiB7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tleXdv
cmQoY29udGV4dCwgSUlNQUdFMkQpOyB9CisidWltYWdlMkQiIHsgcmV0dXJuIEVTMl9pZGVudF9F
UzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChjb250ZXh0LCBVSU1BR0UyRCk7IH0KKyJpbWFnZTJE
QXJyYXkiIHsgcmV0dXJuIEVTMl9pZGVudF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChjb250
ZXh0LCBJTUFHRTJEQVJSQVkpOyB9CisiaWltYWdlMkRBcnJheSIgeyByZXR1cm4gRVMyX2lkZW50
X0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRleHQsIElJTUFHRTJEQVJSQVkpOyB9Cisi
dWltYWdlMkRBcnJheSIgeyByZXR1cm4gRVMyX2lkZW50X0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3
b3JkKGNvbnRleHQsIFVJTUFHRTJEQVJSQVkpOyB9CisiaW1hZ2UzRCIgIHsgcmV0dXJuIEVTMl9p
ZGVudF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChjb250ZXh0LCBJTUFHRTNEKTsgfQorInVp
bWFnZTNEIiB7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tleXdvcmQoY29u
dGV4dCwgVUlNQUdFM0QpOyB9CisiaWltYWdlM0QiIHsgcmV0dXJuIEVTMl9pZGVudF9FUzNfcmVz
ZXJ2ZWRfRVMzXzFfa2V5d29yZChjb250ZXh0LCBJSU1BR0UzRCk7IH0KKyJpaW1hZ2VDdWJlIiB7
IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tleXdvcmQoY29udGV4dCwgSUlN
QUdFQ1VCRSk7IH0KKyJ1aW1hZ2VDdWJlIiB7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVk
X0VTM18xX2tleXdvcmQoY29udGV4dCwgVUlNQUdFQ1VCRSk7IH0KKyJpbWFnZUN1YmUiCXsgcmV0
dXJuIEVTMl9pZGVudF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChjb250ZXh0LCBJTUFHRUNV
QkUpOyB9CisicmVhZG9ubHkiIHsgcmV0dXJuIEVTMl9pZGVudF9FUzNfcmVzZXJ2ZWRfRVMzXzFf
a2V5d29yZChjb250ZXh0LCBSRUFET05MWSk7IH0KKyJ3cml0ZW9ubHkiIHsgcmV0dXJuIEVTMl9p
ZGVudF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChjb250ZXh0LCBXUklURU9OTFkpOyB9Cisi
Y29oZXJlbnQiIHsgcmV0dXJuIEVTMl9pZGVudF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChj
b250ZXh0LCBDT0hFUkVOVCk7IH0KKyJyZXN0cmljdCIgeyByZXR1cm4gRVMyX2lkZW50X0VTM19y
ZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRleHQsIFJFU1RSSUNUKTsgfQorInZvbGF0aWxlIiB7
IHJldHVybiBFUzJfYW5kX0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRleHQsIFZPTEFU
SUxFKTsgfQorCiAgICAgLyogUmVzZXJ2ZWQga2V5d29yZHMgZm9yIEdMU0wgRVMgMy4wMCB0aGF0
IGFyZSBub3QgcmVzZXJ2ZWQgZm9yIEdMU0wgRVMgMS4wMCAqLwotImNvaGVyZW50IiAgICAgICAg
ICB8Ci0icmVzdHJpY3QiICAgICAgICAgIHwKLSJyZWFkb25seSIgICAgICAgICAgfAotIndyaXRl
b25seSIgICAgICAgICB8CiAicmVzb3VyY2UiICAgICAgICAgIHwKICJhdG9taWNfdWludCIgICAg
ICAgfAogIm5vcGVyc3BlY3RpdmUiICAgICB8CkBAIC0yMDQsMjMgKzIzOCwxMSBAQCBPICAgICAg
ICAgICBbMC03XQogCiAiZmlsdGVyIiAgICAgICAgICAgIHwKICJpbWFnZTFEIiAgICAgICAgICAg
fAotImltYWdlMkQiICAgICAgICAgICB8Ci0iaW1hZ2UzRCIgICAgICAgICAgIHwKLSJpbWFnZUN1
YmUiCSAgICAgICAgfAogImlpbWFnZTFEIiAgICAgICAgICB8Ci0iaWltYWdlMkQiICAgICAgICAg
IHwKLSJpaW1hZ2UzRCIgICAgICAgICAgfAotImlpbWFnZUN1YmUiICAgICAgICB8CiAidWltYWdl
MUQiICAgICAgICAgIHwKLSJ1aW1hZ2UyRCIgICAgICAgICAgfAotInVpbWFnZTNEIiAgICAgICAg
ICB8Ci0idWltYWdlQ3ViZSIgICAgICAgIHwKICJpbWFnZTFEQXJyYXkiICAgICAgfAotImltYWdl
MkRBcnJheSIgICAgICB8CiAiaWltYWdlMURBcnJheSIgICAgIHwKLSJpaW1hZ2UyREFycmF5IiAg
ICAgfAogInVpbWFnZTFEQXJyYXkiICAgICB8Ci0idWltYWdlMkRBcnJheSIgICAgIHwKICJpbWFn
ZTFEU2hhZG93IiAgICAgfAogImltYWdlMkRTaGFkb3ciICAgICB8CiAiaW1hZ2UxREFycmF5U2hh
ZG93IiB8CkBAIC0yNDAsOSArMjYyLDYgQEAgTyAgICAgICAgICAgWzAtN10KICJzYW1wbGVyQnVm
ZmVyIiAgICAgfAogImlzYW1wbGVyQnVmZmVyIiAgICB8CiAidXNhbXBsZXJCdWZmZXIiICAgIHwK
LSJzYW1wbGVyMkRNUyIgICAgICAgfAotImlzYW1wbGVyMkRNUyIgICAgICB8Ci0idXNhbXBsZXIy
RE1TIiAgICAgIHwKICJzYW1wbGVyMkRNU0FycmF5IiAgfAogImlzYW1wbGVyMkRNU0FycmF5IiB8
CiAidXNhbXBsZXIyRE1TQXJyYXkiIHsgCkBAIC0yNzgsNyArMjk3LDYgQEAgTyAgICAgICAgICAg
WzAtN10KIAogImlubGluZSIgICAgICAgfAogIm5vaW5saW5lIiAgICAgfAotInZvbGF0aWxlIiAg
ICAgfAogInB1YmxpYyIgICAgICAgfAogInN0YXRpYyIgICAgICAgfAogImV4dGVybiIgICAgICAg
fApAQCAtMzkxLDcgKzQwOSw3IEBAIE8gICAgICAgICAgIFswLTddCiB9CiA8RklFTERTPlsgXHRc
dlxmXHJdIHt9CiA8RklFTERTPi4gewotICAgIHl5ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJbGxl
Z2FsIGNoYXJhY3RlciBhdCBmaWVsZG5hbWUgc3RhcnQiLCB5eXRleHQsICIiKTsKKyAgICB5eWV4
dHJhLT5lcnJvcigqeXlsbG9jLCAiSWxsZWdhbCBjaGFyYWN0ZXIgYXQgZmllbGRuYW1lIHN0YXJ0
IiwgeXl0ZXh0KTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNDM1LDcgKzQ1Myw3IEBAIGludCBj
aGVja190eXBlKHl5c2Nhbl90IHl5c2Nhbm5lcikgewogaW50IHJlc2VydmVkX3dvcmQoeXlzY2Fu
X3QgeXlzY2FubmVyKSB7CiAgICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0
c190KikgeXlzY2FubmVyOwogCi0gICAgeXlleHRyYS0+ZXJyb3IoKnl5bGxvYywgIklsbGVnYWwg
dXNlIG9mIHJlc2VydmVkIHdvcmQiLCB5eXRleHQsICIiKTsKKyAgICB5eWV4dHJhLT5lcnJvcigq
eXlsbG9jLCAiSWxsZWdhbCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4dCk7CiAgICAgcmV0
dXJuIDA7CiB9CiAKQEAgLTQ2Myw2ICs0ODEsMjQgQEAgaW50IEVTMl9rZXl3b3JkX0VTM19yZXNl
cnZlZChUUGFyc2VDb250ZXh0ICpjb250ZXh0LCBpbnQgdG9rZW4pCiAgICAgcmV0dXJuIHRva2Vu
OwogfQogCitpbnQgRVMyX2lkZW50X0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKFRQYXJzZUNv
bnRleHQgKmNvbnRleHQsIGludCB0b2tlbikKK3sKKyAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9
IChzdHJ1Y3QgeXlndXRzX3QqKSBjb250ZXh0LT5nZXRTY2FubmVyKCk7CisgICAgeXlzY2FuX3Qg
eXlzY2FubmVyID0gKHl5c2Nhbl90KSBjb250ZXh0LT5nZXRTY2FubmVyKCk7CisKKyAgICBpZiAo
Y29udGV4dC0+Z2V0U2hhZGVyVmVyc2lvbigpIDwgMzAwKQorICAgIHsKKyAgICAgICAgeXlsdmFs
LT5sZXguc3RyaW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0KTsKKyAgICAgICAgcmV0dXJuIGNo
ZWNrX3R5cGUoeXlzY2FubmVyKTsKKyAgICB9CisgICAgZWxzZSBpZiAoY29udGV4dC0+Z2V0U2hh
ZGVyVmVyc2lvbigpID09IDMwMCkKKyAgICB7CisgICAgICAgIHJldHVybiByZXNlcnZlZF93b3Jk
KHl5c2Nhbm5lcik7CisgICAgfQorCisgICAgcmV0dXJuIHRva2VuOworfQorCiBpbnQgRVMyX2lk
ZW50X0VTM19rZXl3b3JkKFRQYXJzZUNvbnRleHQgKmNvbnRleHQsIGludCB0b2tlbikKIHsKICAg
ICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSBjb250ZXh0LT5nZXRT
Y2FubmVyKCk7CkBAIC00NzgsMTggKzUxNCw2MCBAQCBpbnQgRVMyX2lkZW50X0VTM19rZXl3b3Jk
KFRQYXJzZUNvbnRleHQgKmNvbnRleHQsIGludCB0b2tlbikKICAgICByZXR1cm4gdG9rZW47CiB9
CiAKK2ludCBFUzJfYW5kX0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKFRQYXJzZUNvbnRleHQg
KmNvbnRleHQsIGludCB0b2tlbikKK3sKKyAgICB5eXNjYW5fdCB5eXNjYW5uZXIgPSAoeXlzY2Fu
X3QpIGNvbnRleHQtPmdldFNjYW5uZXIoKTsKKworICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJW
ZXJzaW9uKCkgPCAzMTApCisgICAgeworICAgICAgICByZXR1cm4gcmVzZXJ2ZWRfd29yZCh5eXNj
YW5uZXIpOworICAgIH0KKworICAgIHJldHVybiB0b2tlbjsKK30KKworaW50IEVTMl9hbmRfRVMz
X2lkZW50X0VTM18xX2tleXdvcmQoVFBhcnNlQ29udGV4dCAqY29udGV4dCwgaW50IHRva2VuKQor
eworICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIGNvbnRleHQt
PmdldFNjYW5uZXIoKTsKKyAgICB5eXNjYW5fdCB5eXNjYW5uZXIgPSAoeXlzY2FuX3QpIGNvbnRl
eHQtPmdldFNjYW5uZXIoKTsKKworICAgIC8vIG5vdCBhIHJlc2VydmVkIHdvcmQgaW4gR0xTTCBF
UyAxLjAwIGFuZCBHTFNMIEVTIDMuMDAsIHNvIGNvdWxkIGJlIHVzZWQgYXMgYW4gaWRlbnRpZmll
ci90eXBlIG5hbWUKKyAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVmVyc2lvbigpIDwgMzEwKQor
ICAgIHsKKyAgICAgICAgeXlsdmFsLT5sZXguc3RyaW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0
KTsKKyAgICAgICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdG9rZW47Cit9CisKK2ludCBFUzNfZXh0ZW5zaW9uX2tleXdvcmRfZWxzZV9pZGVudChU
UGFyc2VDb250ZXh0ICpjb250ZXh0LCBjb25zdCBjaGFyKiBleHRlbnNpb24sIGludCB0b2tlbikK
K3sKKyAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSBjb250ZXh0
LT5nZXRTY2FubmVyKCk7CisgICAgeXlzY2FuX3QgeXlzY2FubmVyID0gKHl5c2Nhbl90KSBjb250
ZXh0LT5nZXRTY2FubmVyKCk7CisKKyAgICAvLyBhIHJlc2VydmVkIHdvcmQgaW4gR0xTTCBFUyAz
LjAwIHdpdGggZW5hYmxlZCBleHRlbnNpb24sIG90aGVyd2lzZSBjb3VsZCBiZSB1c2VkIGFzIGFu
IGlkZW50aWZpZXIvdHlwZSBuYW1lCisgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24o
KSA+PSAzMDAgJiYgY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbikpCisgICAg
eworICAgICAgICByZXR1cm4gdG9rZW47CisgICAgfQorCisgICAgeXlsdmFsLT5sZXguc3RyaW5n
ID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0KTsKKyAgICByZXR1cm4gY2hlY2tfdHlwZSh5eXNjYW5u
ZXIpOworfQorCiBpbnQgdWludF9jb25zdGFudChUUGFyc2VDb250ZXh0ICpjb250ZXh0KQogewog
ICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIGNvbnRleHQtPmdl
dFNjYW5uZXIoKTsKIAogICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkgPCAzMDAp
CiAgICAgewotICAgICAgICBjb250ZXh0LT5lcnJvcigqeXlsbG9jLCAiVW5zaWduZWQgaW50ZWdl
cnMgYXJlIHVuc3VwcG9ydGVkIHByaW9yIHRvIEdMU0wgRVMgMy4wMCIsIHl5dGV4dCwgIiIpOwor
ICAgICAgICBjb250ZXh0LT5lcnJvcigqeXlsbG9jLCAiVW5zaWduZWQgaW50ZWdlcnMgYXJlIHVu
c3VwcG9ydGVkIHByaW9yIHRvIEdMU0wgRVMgMy4wMCIsIHl5dGV4dCk7CiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAogICAgIGlmICghYXRvaV9jbGFtcCh5eXRleHQsICYoeXlsdmFsLT5sZXgu
dSkpKQotICAgICAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAiSW50ZWdlciBvdmVyZmxvdyIs
IHl5dGV4dCwgIiIpOworICAgICAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAiSW50ZWdlciBv
dmVyZmxvdyIsIHl5dGV4dCk7CiAKICAgICByZXR1cm4gVUlOVENPTlNUQU5UOwogfQpAQCAtNTA3
LDcgKzU4NSw3IEBAIGludCBmbG9hdHN1ZmZpeF9jaGVjayhUUGFyc2VDb250ZXh0KiBjb250ZXh0
KQogICAgIHN0ZDo6c3RyaW5nIHRleHQgPSB5eXRleHQ7CiAgICAgdGV4dC5yZXNpemUodGV4dC5z
aXplKCkgLSAxKTsKICAgICBpZiAoIXN0cnRvZl9jbGFtcCh0ZXh0LCAmKHl5bHZhbC0+bGV4LmYp
KSkKLSAgICAgICAgeXlleHRyYS0+d2FybmluZygqeXlsbG9jLCAiRmxvYXQgb3ZlcmZsb3ciLCB5
eXRleHQsICIiKTsKKyAgICAgICAgeXlleHRyYS0+d2FybmluZygqeXlsbG9jLCAiRmxvYXQgb3Zl
cmZsb3ciLCB5eXRleHQpOwogCiAgICAgcmV0dXJuKEZMT0FUQ09OU1RBTlQpOwogfQpAQCAtNTIz
LDkgKzYwMSw5IEBAIGludCBpbnRfY29uc3RhbnQoVFBhcnNlQ29udGV4dCAqY29udGV4dCkgewog
ICAgIGlmICghYXRvaV9jbGFtcCh5eXRleHQsICZ1KSkKICAgICB7CiAgICAgICAgIGlmIChjb250
ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkgPj0gMzAwKQotICAgICAgICAgICAgeXlleHRyYS0+ZXJy
b3IoKnl5bGxvYywgIkludGVnZXIgb3ZlcmZsb3ciLCB5eXRleHQsICIiKTsKKyAgICAgICAgICAg
IHl5ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJbnRlZ2VyIG92ZXJmbG93IiwgeXl0ZXh0KTsKICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgeXlleHRyYS0+d2FybmluZygqeXlsbG9jLCAiSW50ZWdl
ciBvdmVyZmxvdyIsIHl5dGV4dCwgIiIpOworICAgICAgICAgICAgeXlleHRyYS0+d2FybmluZygq
eXlsbG9jLCAiSW50ZWdlciBvdmVyZmxvdyIsIHl5dGV4dCk7CiAgICAgfQogICAgIHl5bHZhbC0+
bGV4LmkgPSBzdGF0aWNfY2FzdDxpbnQ+KHUpOwogICAgIHJldHVybiBJTlRDT05TVEFOVDsKQEAg
LTUzNSwxMCArNjEzLDI2IEBAIGludCBmbG9hdF9jb25zdGFudCh5eXNjYW5fdCB5eXNjYW5uZXIp
IHsKICAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSB5eXNjYW5u
ZXI7CiAKICAgICBpZiAoIXN0cnRvZl9jbGFtcCh5eXRleHQsICYoeXlsdmFsLT5sZXguZikpKQot
ICAgICAgICB5eWV4dHJhLT53YXJuaW5nKCp5eWxsb2MsICJGbG9hdCBvdmVyZmxvdyIsIHl5dGV4
dCwgIiIpOworICAgICAgICB5eWV4dHJhLT53YXJuaW5nKCp5eWxsb2MsICJGbG9hdCBvdmVyZmxv
dyIsIHl5dGV4dCk7CiAgICAgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7CiB9CiAKK2ludCB5dXZjc2Nz
dGFuZGFyZGV4dF9jb25zdGFudChUUGFyc2VDb250ZXh0ICpjb250ZXh0KQoreworICAgIHN0cnVj
dCB5eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIGNvbnRleHQtPmdldFNjYW5uZXIo
KTsKKyAgICB5eXNjYW5fdCB5eXNjYW5uZXIgPSAoeXlzY2FuX3QpIGNvbnRleHQtPmdldFNjYW5u
ZXIoKTsKKworICAgIC8vIGEgcmVzZXJ2ZWQgd29yZCBpbiBHTFNMIEVTIDMuMDAgd2l0aCBlbmFi
bGVkIGV4dGVuc2lvbiwgb3RoZXJ3aXNlIGNvdWxkIGJlIHVzZWQgYXMgYW4gaWRlbnRpZmllci90
eXBlIG5hbWUKKyAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVmVyc2lvbigpID49IDMwMCAmJiBj
b250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9ZVVZfdGFyZ2V0IikpCisgICAgewor
ICAgICAgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOworICAg
ICAgICByZXR1cm4gWVVWQ1NDU1RBTkRBUkRFWFRDT05TVEFOVDsKKyAgICB9CisKKyAgICB5eWx2
YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOworICAgIHJldHVybiBjaGVj
a190eXBlKHl5c2Nhbm5lcik7Cit9CisKIGludCBnbHNsYW5nX2luaXRpYWxpemUoVFBhcnNlQ29u
dGV4dCogY29udGV4dCkgewogICAgIHl5c2Nhbl90IHNjYW5uZXIgPSBOVUxMOwogICAgIGlmICh5
eWxleF9pbml0X2V4dHJhKGNvbnRleHQsICZzY2FubmVyKSkKQEAgLTU3OSw4ICs2NzMsNyBAQCBp
bnQgZ2xzbGFuZ19zY2FuKHNpemVfdCBjb3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10s
IGNvbnN0IGludCBsZW5ndGhbXSwKICAgICBpZiAoY29udGV4dC0+Z2V0RnJhZ21lbnRQcmVjaXNp
b25IaWdoKCkpCiAgICAgICAgIHByZXByb2Nlc3Nvci0+cHJlZGVmaW5lTWFjcm8oIkdMX0ZSQUdN
RU5UX1BSRUNJU0lPTl9ISUdIIiwgMSk7CiAKLSAgICBwcmVwcm9jZXNzb3ItPnNldE1heFRva2Vu
U2l6ZShHZXRHbG9iYWxNYXhUb2tlblNpemUoY29udGV4dC0+Z2V0U2hhZGVyU3BlYygpKSk7Cisg
ICAgcHJlcHJvY2Vzc29yLT5zZXRNYXhUb2tlblNpemUoc2g6OkdldEdsb2JhbE1heFRva2VuU2l6
ZShjb250ZXh0LT5nZXRTaGFkZXJTcGVjKCkpKTsKIAogICAgIHJldHVybiAwOwogfQotCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9n
bHNsYW5nLnkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRv
ci9nbHNsYW5nLnkKaW5kZXggNzQ3NmY2MmNiOWEuLmQ2Nzc1MmMwM2VmIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nLnkK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xz
bGFuZy55CkBAIC00Niw2ICs0Niw4IEBAIFdISUNIIEdFTkVSQVRFUyBUSEUgR0xTTCBFUyBQQVJT
RVIgKGdsc2xhbmdfdGFiLmNwcCBBTkQgZ2xzbGFuZ190YWIuaCkuCiAKICNkZWZpbmUgWVlFTkFC
TEVfTkxTIDAKIAordXNpbmcgbmFtZXNwYWNlIHNoOworCiAlfQogJWV4cGVjdCAxIC8qIE9uZSBz
aGlmdCByZWR1Y2UgY29uZmxpY3QgYmVjYXVzZSBvZiBpZiB8IGVsc2UgKi8KICVwYXJzZS1wYXJh
bSB7VFBhcnNlQ29udGV4dCogY29udGV4dH0KQEAgLTcyLDEzICs3NCwxNiBAQCBXSElDSCBHRU5F
UkFURVMgVEhFIEdMU0wgRVMgUEFSU0VSIChnbHNsYW5nX3RhYi5jcHAgQU5EIGdsc2xhbmdfdGFi
LmgpLgogICAgIHN0cnVjdCB7CiAgICAgICAgIFRPcGVyYXRvciBvcDsKICAgICAgICAgdW5pb24g
ewotICAgICAgICAgICAgVEludGVybU5vZGUqIGludGVybU5vZGU7CisgICAgICAgICAgICBUSW50
ZXJtTm9kZSAqaW50ZXJtTm9kZTsKICAgICAgICAgICAgIFRJbnRlcm1Ob2RlUGFpciBub2RlUGFp
cjsKLSAgICAgICAgICAgIFRJbnRlcm1UeXBlZCogaW50ZXJtVHlwZWROb2RlOwotICAgICAgICAg
ICAgVEludGVybUFnZ3JlZ2F0ZSogaW50ZXJtQWdncmVnYXRlOwotICAgICAgICAgICAgVEludGVy
bUJsb2NrKiBpbnRlcm1CbG9jazsKLSAgICAgICAgICAgIFRJbnRlcm1Td2l0Y2gqIGludGVybVN3
aXRjaDsKLSAgICAgICAgICAgIFRJbnRlcm1DYXNlKiBpbnRlcm1DYXNlOworICAgICAgICAgICAg
VEludGVybUZ1bmN0aW9uQ2FsbE9yTWV0aG9kIGNhbGxPck1ldGhvZFBhaXI7CisgICAgICAgICAg
ICBUSW50ZXJtVHlwZWQgKmludGVybVR5cGVkTm9kZTsKKyAgICAgICAgICAgIFRJbnRlcm1BZ2dy
ZWdhdGUgKmludGVybUFnZ3JlZ2F0ZTsKKyAgICAgICAgICAgIFRJbnRlcm1CbG9jayAqaW50ZXJt
QmxvY2s7CisgICAgICAgICAgICBUSW50ZXJtRGVjbGFyYXRpb24gKmludGVybURlY2xhcmF0aW9u
OworICAgICAgICAgICAgVEludGVybUZ1bmN0aW9uUHJvdG90eXBlICppbnRlcm1GdW5jdGlvblBy
b3RvdHlwZTsKKyAgICAgICAgICAgIFRJbnRlcm1Td2l0Y2ggKmludGVybVN3aXRjaDsKKyAgICAg
ICAgICAgIFRJbnRlcm1DYXNlICppbnRlcm1DYXNlOwogICAgICAgICB9OwogICAgICAgICB1bmlv
biB7CiAgICAgICAgICAgICBUVHlwZVNwZWNpZmllck5vbkFycmF5IHR5cGVTcGVjaWZpZXJOb25B
cnJheTsKQEAgLTg2LDEyICs5MSwxMiBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdMU0wgRVMgUEFS
U0VSIChnbHNsYW5nX3RhYi5jcHAgQU5EIGdsc2xhbmdfdGFiLmgpLgogICAgICAgICAgICAgVFBy
ZWNpc2lvbiBwcmVjaXNpb247CiAgICAgICAgICAgICBUTGF5b3V0UXVhbGlmaWVyIGxheW91dFF1
YWxpZmllcjsKICAgICAgICAgICAgIFRRdWFsaWZpZXIgcXVhbGlmaWVyOwotICAgICAgICAgICAg
VEZ1bmN0aW9uKiBmdW5jdGlvbjsKKyAgICAgICAgICAgIFRGdW5jdGlvbiAqZnVuY3Rpb247CiAg
ICAgICAgICAgICBUUGFyYW1ldGVyIHBhcmFtOwotICAgICAgICAgICAgVEZpZWxkKiBmaWVsZDsK
LSAgICAgICAgICAgIFRGaWVsZExpc3QqIGZpZWxkTGlzdDsKLSAgICAgICAgICAgIFRRdWFsaWZp
ZXJXcmFwcGVyQmFzZSogcXVhbGlmaWVyV3JhcHBlcjsKLSAgICAgICAgICAgIFRUeXBlUXVhbGlm
aWVyQnVpbGRlciogdHlwZVF1YWxpZmllckJ1aWxkZXI7CisgICAgICAgICAgICBURmllbGQgKmZp
ZWxkOworICAgICAgICAgICAgVEZpZWxkTGlzdCAqZmllbGRMaXN0OworICAgICAgICAgICAgVFF1
YWxpZmllcldyYXBwZXJCYXNlICpxdWFsaWZpZXJXcmFwcGVyOworICAgICAgICAgICAgVFR5cGVR
dWFsaWZpZXJCdWlsZGVyICp0eXBlUXVhbGlmaWVyQnVpbGRlcjsKICAgICAgICAgfTsKICAgICB9
IGludGVybTsKIH0KQEAgLTE2NiwxMiArMTcxLDE4IEBAIGV4dGVybiB2b2lkIHl5ZXJyb3IoWVlM
VFlQRSogeXlsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCB2b2lkICpzY2FubmVyLCBjb25z
CiAldG9rZW4gPGxleD4gTUFUUklYMiBNQVRSSVgzIE1BVFJJWDQgSU5fUVVBTCBPVVRfUVVBTCBJ
Tk9VVF9RVUFMIFVOSUZPUk0gVkFSWUlORwogJXRva2VuIDxsZXg+IE1BVFJJWDJ4MyBNQVRSSVgz
eDIgTUFUUklYMng0IE1BVFJJWDR4MiBNQVRSSVgzeDQgTUFUUklYNHgzCiAldG9rZW4gPGxleD4g
Q0VOVFJPSUQgRkxBVCBTTU9PVEgKKyV0b2tlbiA8bGV4PiBSRUFET05MWSBXUklURU9OTFkgQ09I
RVJFTlQgUkVTVFJJQ1QgVk9MQVRJTEUgU0hBUkVECiAldG9rZW4gPGxleD4gU1RSVUNUIFZPSURf
VFlQRSBXSElMRQogJXRva2VuIDxsZXg+IFNBTVBMRVIyRCBTQU1QTEVSQ1VCRSBTQU1QTEVSX0VY
VEVSTkFMX09FUyBTQU1QTEVSMkRSRUNUIFNBTVBMRVIyREFSUkFZCiAldG9rZW4gPGxleD4gSVNB
TVBMRVIyRCBJU0FNUExFUjNEIElTQU1QTEVSQ1VCRSBJU0FNUExFUjJEQVJSQVkKICV0b2tlbiA8
bGV4PiBVU0FNUExFUjJEIFVTQU1QTEVSM0QgVVNBTVBMRVJDVUJFIFVTQU1QTEVSMkRBUlJBWQor
JXRva2VuIDxsZXg+IFNBTVBMRVIyRE1TIElTQU1QTEVSMkRNUyBVU0FNUExFUjJETVMKICV0b2tl
biA8bGV4PiBTQU1QTEVSM0QgU0FNUExFUjNEUkVDVCBTQU1QTEVSMkRTSEFET1cgU0FNUExFUkNV
QkVTSEFET1cgU0FNUExFUjJEQVJSQVlTSEFET1cKKyV0b2tlbiA8bGV4PiBTQU1QTEVSRVhURVJO
QUwyRFkyWUVYVAorJXRva2VuIDxsZXg+IElNQUdFMkQgSUlNQUdFMkQgVUlNQUdFMkQgSU1BR0Uz
RCBJSU1BR0UzRCBVSU1BR0UzRCBJTUFHRTJEQVJSQVkgSUlNQUdFMkRBUlJBWSBVSU1BR0UyREFS
UkFZCisldG9rZW4gPGxleD4gSU1BR0VDVUJFIElJTUFHRUNVQkUgVUlNQUdFQ1VCRQogJXRva2Vu
IDxsZXg+IExBWU9VVAorJXRva2VuIDxsZXg+IFlVVkNTQ1NUQU5EQVJERVhUIFlVVkNTQ1NUQU5E
QVJERVhUQ09OU1RBTlQKIAogJXRva2VuIDxsZXg+IElERU5USUZJRVIgVFlQRV9OQU1FIEZMT0FU
Q09OU1RBTlQgSU5UQ09OU1RBTlQgVUlOVENPTlNUQU5UIEJPT0xDT05TVEFOVAogJXRva2VuIDxs
ZXg+IEZJRUxEX1NFTEVDVElPTgpAQCAtMjE1LDggKzIyNiw4IEBAIGV4dGVybiB2b2lkIHl5ZXJy
b3IoWVlMVFlQRSogeXlsbG9jLCBUUGFyc2VDb250ZXh0KiBjb250ZXh0LCB2b2lkICpzY2FubmVy
LCBjb25zCiAKICV0eXBlIDxpbnRlcm0ucHJlY2lzaW9uPiBwcmVjaXNpb25fcXVhbGlmaWVyCiAl
dHlwZSA8aW50ZXJtLmxheW91dFF1YWxpZmllcj4gbGF5b3V0X3F1YWxpZmllcgotJXR5cGUgPGlu
dGVybS5xdWFsaWZpZXI+IHN0b3JhZ2VfcXVhbGlmaWVyIGludGVycG9sYXRpb25fcXVhbGlmaWVy
Ci0ldHlwZSA8aW50ZXJtLnF1YWxpZmllcldyYXBwZXI+IHNpbmdsZV90eXBlX3F1YWxpZmllciBp
bnZhcmlhbnRfcXVhbGlmaWVyCisldHlwZSA8aW50ZXJtLnF1YWxpZmllcj4gaW50ZXJwb2xhdGlv
bl9xdWFsaWZpZXIKKyV0eXBlIDxpbnRlcm0ucXVhbGlmaWVyV3JhcHBlcj4gc3RvcmFnZV9xdWFs
aWZpZXIgc2luZ2xlX3R5cGVfcXVhbGlmaWVyIGludmFyaWFudF9xdWFsaWZpZXIKICV0eXBlIDxp
bnRlcm0udHlwZVF1YWxpZmllckJ1aWxkZXI+IHR5cGVfcXVhbGlmaWVyCiAKICV0eXBlIDxpbnRl
cm0udHlwZVNwZWNpZmllck5vbkFycmF5PiB0eXBlX3NwZWNpZmllcl9ub25hcnJheSBzdHJ1Y3Rf
c3BlY2lmaWVyCkBAIC0yNzEsNiArMjgyLDE0IEBAIHByaW1hcnlfZXhwcmVzc2lvbgogICAgICAg
ICB1bmlvbkFycmF5LT5zZXRCQ29uc3QoJDEuYik7CiAgICAgICAgICQkID0gY29udGV4dC0+aW50
ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0Qm9vbCwgRWJw
VW5kZWZpbmVkLCBFdnFDb25zdCksIEAxKTsKICAgICB9CisgICAgfCBZVVZDU0NTVEFOREFSREVY
VENPTlNUQU5UIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdM
X0VYVF9ZVVZfdGFyZ2V0IikpIHsKKyAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJ1bnN1
cHBvcnRlZCB2YWx1ZSIsICQxLnN0cmluZy0+Y19zdHIoKSk7CisgICAgICAgIH0KKyAgICAgICAg
VENvbnN0YW50VW5pb24gKnVuaW9uQXJyYXkgPSBuZXcgVENvbnN0YW50VW5pb25bMV07CisgICAg
ICAgIHVuaW9uQXJyYXktPnNldFl1dkNzY1N0YW5kYXJkRVhUQ29uc3QoZ2V0WXV2Q3NjU3RhbmRh
cmRFWFQoJDEuc3RyaW5nLT5jX3N0cigpKSk7CisgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJt
ZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5cGUoRWJ0WXV2Q3NjU3RhbmRh
cmRFWFQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCBAMSk7CisgICAgfQogICAgIHwgTEVGVF9Q
QVJFTiBleHByZXNzaW9uIFJJR0hUX1BBUkVOIHsKICAgICAgICAgJCQgPSAkMjsKICAgICB9CkBA
IC0zMDYsMjQgKzMyNSwxOSBAQCBpbnRlZ2VyX2V4cHJlc3Npb24KIAogZnVuY3Rpb25fY2FsbAog
ICAgIDogZnVuY3Rpb25fY2FsbF9vcl9tZXRob2QgewotICAgICAgICBib29sIGZhdGFsRXJyb3Ig
PSBmYWxzZTsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRGdW5jdGlvbkNhbGxPck1ldGhvZCgk
MS5mdW5jdGlvbiwgJDEubm9kZVBhaXIubm9kZTEsICQxLm5vZGVQYWlyLm5vZGUyLCBAMSwgJmZh
dGFsRXJyb3IpOwotICAgICAgICBpZiAoZmF0YWxFcnJvcikKLSAgICAgICAgewotICAgICAgICAg
ICAgWVlFUlJPUjsKLSAgICAgICAgfQorICAgICAgICAkJCA9IGNvbnRleHQtPmFkZEZ1bmN0aW9u
Q2FsbE9yTWV0aG9kKCQxLmZ1bmN0aW9uLCAkMS5jYWxsT3JNZXRob2RQYWlyLmFyZ3VtZW50cywg
JDEuY2FsbE9yTWV0aG9kUGFpci50aGlzTm9kZSwgQDEpOwogICAgIH0KICAgICA7CiAKIGZ1bmN0
aW9uX2NhbGxfb3JfbWV0aG9kCiAgICAgOiBmdW5jdGlvbl9jYWxsX2dlbmVyaWMgewogICAgICAg
ICAkJCA9ICQxOwotICAgICAgICAkJC5ub2RlUGFpci5ub2RlMiA9IG51bGxwdHI7CisgICAgICAg
ICQkLmNhbGxPck1ldGhvZFBhaXIudGhpc05vZGUgPSBudWxscHRyOwogICAgIH0KICAgICB8IHBv
c3RmaXhfZXhwcmVzc2lvbiBET1QgZnVuY3Rpb25fY2FsbF9nZW5lcmljIHsKICAgICAgICAgRVMz
X09SX05FV0VSKCIiLCBAMywgIm1ldGhvZHMiKTsKICAgICAgICAgJCQgPSAkMzsKLSAgICAgICAg
JCQubm9kZVBhaXIubm9kZTIgPSAkMTsKKyAgICAgICAgJCQuY2FsbE9yTWV0aG9kUGFpci50aGlz
Tm9kZSA9ICQxOwogICAgIH0KICAgICA7CiAKQEAgLTMzOSwyNiArMzUzLDIzIEBAIGZ1bmN0aW9u
X2NhbGxfZ2VuZXJpYwogZnVuY3Rpb25fY2FsbF9oZWFkZXJfbm9fcGFyYW1ldGVycwogICAgIDog
ZnVuY3Rpb25fY2FsbF9oZWFkZXIgVk9JRF9UWVBFIHsKICAgICAgICAgJCQuZnVuY3Rpb24gPSAk
MTsKLSAgICAgICAgJCQubm9kZVBhaXIubm9kZTEgPSBudWxscHRyOworICAgICAgICAkJC5jYWxs
T3JNZXRob2RQYWlyLmFyZ3VtZW50cyA9IGNvbnRleHQtPmNyZWF0ZUVtcHR5QXJndW1lbnRzTGlz
dCgpOwogICAgIH0KICAgICB8IGZ1bmN0aW9uX2NhbGxfaGVhZGVyIHsKICAgICAgICAgJCQuZnVu
Y3Rpb24gPSAkMTsKLSAgICAgICAgJCQubm9kZVBhaXIubm9kZTEgPSBudWxscHRyOworICAgICAg
ICAkJC5jYWxsT3JNZXRob2RQYWlyLmFyZ3VtZW50cyA9IGNvbnRleHQtPmNyZWF0ZUVtcHR5QXJn
dW1lbnRzTGlzdCgpOwogICAgIH0KICAgICA7CiAKIGZ1bmN0aW9uX2NhbGxfaGVhZGVyX3dpdGhf
cGFyYW1ldGVycwogICAgIDogZnVuY3Rpb25fY2FsbF9oZWFkZXIgYXNzaWdubWVudF9leHByZXNz
aW9uIHsKLSAgICAgICAgY29uc3QgVFR5cGUgKnR5cGUgPSBuZXcgVFR5cGUoJDItPmdldFR5cGUo
KSk7Ci0gICAgICAgICQxLT5hZGRQYXJhbWV0ZXIoVENvbnN0UGFyYW1ldGVyKHR5cGUpKTsKKyAg
ICAgICAgJCQuY2FsbE9yTWV0aG9kUGFpci5hcmd1bWVudHMgPSBjb250ZXh0LT5jcmVhdGVFbXB0
eUFyZ3VtZW50c0xpc3QoKTsKICAgICAgICAgJCQuZnVuY3Rpb24gPSAkMTsKLSAgICAgICAgJCQu
bm9kZVBhaXIubm9kZTEgPSBUSW50ZXJtZWRpYXRlOjpNYWtlQWdncmVnYXRlKCQyLCBAMik7Cisg
ICAgICAgICQkLmNhbGxPck1ldGhvZFBhaXIuYXJndW1lbnRzLT5wdXNoX2JhY2soJDIpOwogICAg
IH0KICAgICB8IGZ1bmN0aW9uX2NhbGxfaGVhZGVyX3dpdGhfcGFyYW1ldGVycyBDT01NQSBhc3Np
Z25tZW50X2V4cHJlc3Npb24gewotICAgICAgICBjb25zdCBUVHlwZSAqdHlwZSA9IG5ldyBUVHlw
ZSgkMy0+Z2V0VHlwZSgpKTsKLSAgICAgICAgJDEuZnVuY3Rpb24tPmFkZFBhcmFtZXRlcihUQ29u
c3RQYXJhbWV0ZXIodHlwZSkpOwogICAgICAgICAkJC5mdW5jdGlvbiA9ICQxLmZ1bmN0aW9uOwot
ICAgICAgICAkJC5ub2RlUGFpci5ub2RlMSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5ncm93QWdn
cmVnYXRlKCQxLmludGVybU5vZGUsICQzLCBAMik7CisgICAgICAgICQkLmNhbGxPck1ldGhvZFBh
aXIuYXJndW1lbnRzLT5wdXNoX2JhY2soJDMpOwogICAgIH0KICAgICA7CiAKQEAgLTYwMywxMCAr
NjE0LDcgQEAgZGVjbGFyYXRpb24KICAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRGdW5jdGlvblBy
b3RvdHlwZURlY2xhcmF0aW9uKCooJDEuZnVuY3Rpb24pLCBAMSk7CiAgICAgfQogICAgIHwgaW5p
dF9kZWNsYXJhdG9yX2xpc3QgU0VNSUNPTE9OIHsKLSAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSAq
YWdnTm9kZSA9ICQxLmludGVybUFnZ3JlZ2F0ZTsKLSAgICAgICAgaWYgKGFnZ05vZGUgJiYgYWdn
Tm9kZS0+Z2V0T3AoKSA9PSBFT3BOdWxsKQotICAgICAgICAgICAgYWdnTm9kZS0+c2V0T3AoRU9w
RGVjbGFyYXRpb24pOwotICAgICAgICAkJCA9IGFnZ05vZGU7CisgICAgICAgICQkID0gJDEuaW50
ZXJtRGVjbGFyYXRpb247CiAgICAgfQogICAgIHwgUFJFQ0lTSU9OIHByZWNpc2lvbl9xdWFsaWZp
ZXIgdHlwZV9zcGVjaWZpZXJfbm9fcHJlYyBTRU1JQ09MT04gewogICAgICAgICBpZiAoKCQyID09
IEVicEhpZ2gpICYmIChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xfRlJBR01FTlRfU0hB
REVSKSAmJiAhY29udGV4dC0+Z2V0RnJhZ21lbnRQcmVjaXNpb25IaWdoKCkpIHsKQEAgLTc1OSw2
NyArNzY3LDYxIEBAIGluaXRfZGVjbGFyYXRvcl9saXN0CiAgICAgfQogICAgIHwgaW5pdF9kZWNs
YXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciB7CiAgICAgICAgICQkID0gJDE7Ci0gICAgICAg
ICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlRGVjbGFyYXRvcigkJC50eXBlLCAk
MS5pbnRlcm1BZ2dyZWdhdGUsIEAzLCAqJDMuc3RyaW5nKTsKKyAgICAgICAgY29udGV4dC0+cGFy
c2VEZWNsYXJhdG9yKCQkLnR5cGUsIEAzLCAqJDMuc3RyaW5nLCAkJC5pbnRlcm1EZWNsYXJhdGlv
bik7CiAgICAgfQogICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBM
RUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIHsKICAgICAgICAg
JCQgPSAkMTsKLSAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VBcnJh
eURlY2xhcmF0b3IoJCQudHlwZSwgJDEuaW50ZXJtQWdncmVnYXRlLCBAMywgKiQzLnN0cmluZywg
QDQsICQ1KTsKKyAgICAgICAgY29udGV4dC0+cGFyc2VBcnJheURlY2xhcmF0b3IoJCQudHlwZSwg
QDMsICokMy5zdHJpbmcsIEA0LCAkNSwgJCQuaW50ZXJtRGVjbGFyYXRpb24pOwogICAgIH0KICAg
ICB8IGluaXRfZGVjbGFyYXRvcl9saXN0IENPTU1BIGlkZW50aWZpZXIgTEVGVF9CUkFDS0VUIFJJ
R0hUX0JSQUNLRVQgRVFVQUwgaW5pdGlhbGl6ZXIgewogICAgICAgICBFUzNfT1JfTkVXRVIoIltd
IiwgQDMsICJpbXBsaWNpdGx5IHNpemVkIGFycmF5Iik7CiAgICAgICAgICQkID0gJDE7Ci0gICAg
ICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlQXJyYXlJbml0RGVjbGFyYXRv
cigkJC50eXBlLCAkMS5pbnRlcm1BZ2dyZWdhdGUsIEAzLCAqJDMuc3RyaW5nLCBANCwgbnVsbHB0
ciwgQDYsICQ3KTsKKyAgICAgICAgY29udGV4dC0+cGFyc2VBcnJheUluaXREZWNsYXJhdG9yKCQk
LnR5cGUsIEAzLCAqJDMuc3RyaW5nLCBANCwgbnVsbHB0ciwgQDYsICQ3LCAkJC5pbnRlcm1EZWNs
YXJhdGlvbik7CiAgICAgfQogICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRp
ZmllciBMRUZUX0JSQUNLRVQgY29uc3RhbnRfZXhwcmVzc2lvbiBSSUdIVF9CUkFDS0VUIEVRVUFM
IGluaXRpYWxpemVyIHsKICAgICAgICAgRVMzX09SX05FV0VSKCI9IiwgQDcsICJmaXJzdC1jbGFz
cyBhcnJheXMgKGFycmF5IGluaXRpYWxpemVyKSIpOwogICAgICAgICAkJCA9ICQxOwotICAgICAg
ICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZUFycmF5SW5pdERlY2xhcmF0b3Io
JCQudHlwZSwgJDEuaW50ZXJtQWdncmVnYXRlLCBAMywgKiQzLnN0cmluZywgQDQsICQ1LCBANywg
JDgpOworICAgICAgICBjb250ZXh0LT5wYXJzZUFycmF5SW5pdERlY2xhcmF0b3IoJCQudHlwZSwg
QDMsICokMy5zdHJpbmcsIEA0LCAkNSwgQDcsICQ4LCAkJC5pbnRlcm1EZWNsYXJhdGlvbik7CiAg
ICAgfQogICAgIHwgaW5pdF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgaWRlbnRpZmllciBFUVVBTCBp
bml0aWFsaXplciB7CiAgICAgICAgICQkID0gJDE7Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0
ZSA9IGNvbnRleHQtPnBhcnNlSW5pdERlY2xhcmF0b3IoJCQudHlwZSwgJDEuaW50ZXJtQWdncmVn
YXRlLCBAMywgKiQzLnN0cmluZywgQDQsICQ1KTsKKyAgICAgICAgY29udGV4dC0+cGFyc2VJbml0
RGVjbGFyYXRvcigkJC50eXBlLCBAMywgKiQzLnN0cmluZywgQDQsICQ1LCAkJC5pbnRlcm1EZWNs
YXJhdGlvbik7CiAgICAgfQogICAgIDsKIAogc2luZ2xlX2RlY2xhcmF0aW9uCiAgICAgOiBmdWxs
eV9zcGVjaWZpZWRfdHlwZSB7CiAgICAgICAgICQkLnR5cGUgPSAkMTsKLSAgICAgICAgJCQuaW50
ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VTaW5nbGVEZWNsYXJhdGlvbigkJC50eXBlLCBA
MSwgIiIpOworICAgICAgICAkJC5pbnRlcm1EZWNsYXJhdGlvbiA9IGNvbnRleHQtPnBhcnNlU2lu
Z2xlRGVjbGFyYXRpb24oJCQudHlwZSwgQDEsICIiKTsKICAgICB9CiAgICAgfCBmdWxseV9zcGVj
aWZpZWRfdHlwZSBpZGVudGlmaWVyIHsKICAgICAgICAgJCQudHlwZSA9ICQxOwotICAgICAgICAk
JC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZVNpbmdsZURlY2xhcmF0aW9uKCQkLnR5
cGUsIEAyLCAqJDIuc3RyaW5nKTsKKyAgICAgICAgJCQuaW50ZXJtRGVjbGFyYXRpb24gPSBjb250
ZXh0LT5wYXJzZVNpbmdsZURlY2xhcmF0aW9uKCQkLnR5cGUsIEAyLCAqJDIuc3RyaW5nKTsKICAg
ICB9CiAgICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBj
b25zdGFudF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgewogICAgICAgICAkJC50eXBlID0gJDE7
Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlU2luZ2xlQXJyYXlE
ZWNsYXJhdGlvbigkJC50eXBlLCBAMiwgKiQyLnN0cmluZywgQDMsICQ0KTsKKyAgICAgICAgJCQu
aW50ZXJtRGVjbGFyYXRpb24gPSBjb250ZXh0LT5wYXJzZVNpbmdsZUFycmF5RGVjbGFyYXRpb24o
JCQudHlwZSwgQDIsICokMi5zdHJpbmcsIEAzLCAkNCk7CiAgICAgfQogICAgIHwgZnVsbHlfc3Bl
Y2lmaWVkX3R5cGUgaWRlbnRpZmllciBMRUZUX0JSQUNLRVQgUklHSFRfQlJBQ0tFVCBFUVVBTCBp
bml0aWFsaXplciB7CiAgICAgICAgIEVTM19PUl9ORVdFUigiW10iLCBAMywgImltcGxpY2l0bHkg
c2l6ZWQgYXJyYXkiKTsKICAgICAgICAgJCQudHlwZSA9ICQxOwotICAgICAgICAkJC5pbnRlcm1B
Z2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZVNpbmdsZUFycmF5SW5pdERlY2xhcmF0aW9uKCQkLnR5
cGUsIEAyLCAqJDIuc3RyaW5nLCBAMywgbnVsbHB0ciwgQDUsICQ2KTsKKyAgICAgICAgJCQuaW50
ZXJtRGVjbGFyYXRpb24gPSBjb250ZXh0LT5wYXJzZVNpbmdsZUFycmF5SW5pdERlY2xhcmF0aW9u
KCQkLnR5cGUsIEAyLCAqJDIuc3RyaW5nLCBAMywgbnVsbHB0ciwgQDUsICQ2KTsKICAgICB9CiAg
ICAgfCBmdWxseV9zcGVjaWZpZWRfdHlwZSBpZGVudGlmaWVyIExFRlRfQlJBQ0tFVCBjb25zdGFu
dF9leHByZXNzaW9uIFJJR0hUX0JSQUNLRVQgRVFVQUwgaW5pdGlhbGl6ZXIgewogICAgICAgICBF
UzNfT1JfTkVXRVIoIj0iLCBANiwgImZpcnN0LWNsYXNzIGFycmF5cyAoYXJyYXkgaW5pdGlhbGl6
ZXIpIik7CiAgICAgICAgICQkLnR5cGUgPSAkMTsKLSAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRl
ID0gY29udGV4dC0+cGFyc2VTaW5nbGVBcnJheUluaXREZWNsYXJhdGlvbigkJC50eXBlLCBAMiwg
KiQyLnN0cmluZywgQDMsICQ0LCBANiwgJDcpOworICAgICAgICAkJC5pbnRlcm1EZWNsYXJhdGlv
biA9IGNvbnRleHQtPnBhcnNlU2luZ2xlQXJyYXlJbml0RGVjbGFyYXRpb24oJCQudHlwZSwgQDIs
ICokMi5zdHJpbmcsIEAzLCAkNCwgQDYsICQ3KTsKICAgICB9CiAgICAgfCBmdWxseV9zcGVjaWZp
ZWRfdHlwZSBpZGVudGlmaWVyIEVRVUFMIGluaXRpYWxpemVyIHsKICAgICAgICAgJCQudHlwZSA9
ICQxOwotICAgICAgICAkJC5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZVNpbmdsZUlu
aXREZWNsYXJhdGlvbigkJC50eXBlLCBAMiwgKiQyLnN0cmluZywgQDMsICQ0KTsKKyAgICAgICAg
JCQuaW50ZXJtRGVjbGFyYXRpb24gPSBjb250ZXh0LT5wYXJzZVNpbmdsZUluaXREZWNsYXJhdGlv
bigkJC50eXBlLCBAMiwgKiQyLnN0cmluZywgQDMsICQ0KTsKICAgICB9CiAgICAgOwogCiBmdWxs
eV9zcGVjaWZpZWRfdHlwZQogICAgIDogdHlwZV9zcGVjaWZpZXIgeworICAgICAgICBjb250ZXh0
LT5hZGRGdWxseVNwZWNpZmllZFR5cGUoJiQxKTsKICAgICAgICAgJCQgPSAkMTsKLQotICAgICAg
ICBpZiAoJDEuYXJyYXkpIHsKLSAgICAgICAgICAgIEVTM19PUl9ORVdFUigiW10iLCBAMSwgImZp
cnN0LWNsYXNzLWFycmF5Iik7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVmVy
c2lvbigpICE9IDMwMCkgewotICAgICAgICAgICAgICAgICQxLmNsZWFyQXJyYXluZXNzKCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KICAgICB9CiAgICAgfCB0eXBlX3F1YWxpZmllciB0eXBl
X3NwZWNpZmllciB7CiAgICAgICAgICQkID0gY29udGV4dC0+YWRkRnVsbHlTcGVjaWZpZWRUeXBl
KCokMSwgJDIpOwpAQCAtODU0LDExICs4NTYsOCBAQCBpbnZhcmlhbnRfcXVhbGlmaWVyCiAKIHNp
bmdsZV90eXBlX3F1YWxpZmllcgogICAgIDogc3RvcmFnZV9xdWFsaWZpZXIgewotICAgICAgICBp
ZiAoIWNvbnRleHQtPmRlY2xhcmluZ0Z1bmN0aW9uKCkgJiYgJDEgIT0gRXZxQ29uc3QgJiYgIWNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSkKLSAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+ZXJyb3IoQDEsICJMb2NhbCB2YXJpYWJsZXMgY2FuIG9ubHkgdXNlIHRoZSBj
b25zdCBzdG9yYWdlIHF1YWxpZmllci4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoJDEpKTsKLSAgICAg
ICAgfQotICAgICAgICAkJCA9IG5ldyBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIoJDEsIEAxKTsK
KyAgICAgICAgY29udGV4dC0+Y2hlY2tMb2NhbFZhcmlhYmxlQ29uc3RTdG9yYWdlUXVhbGlmaWVy
KCokMSk7CisgICAgICAgICQkID0gJDE7CiAgICAgfQogICAgIHwgbGF5b3V0X3F1YWxpZmllciB7
CiAgICAgICAgIGNvbnRleHQtPmNoZWNrSXNBdEdsb2JhbExldmVsKEAxLCAibGF5b3V0Iik7CkBA
IC04ODMsNDMgKzg4Miw0MyBAQCBzdG9yYWdlX3F1YWxpZmllcgogICAgICAgICBWRVJURVhfT05M
WSgiYXR0cmlidXRlIiwgQDEpOwogICAgICAgICBFUzJfT05MWSgiYXR0cmlidXRlIiwgQDEpOwog
ICAgICAgICBjb250ZXh0LT5jaGVja0lzQXRHbG9iYWxMZXZlbChAMSwgImF0dHJpYnV0ZSIpOwot
ICAgICAgICAkJCA9IEV2cUF0dHJpYnV0ZTsKKyAgICAgICAgJCQgPSBuZXcgVFN0b3JhZ2VRdWFs
aWZpZXJXcmFwcGVyKEV2cUF0dHJpYnV0ZSwgQDEpOwogICAgIH0KICAgICB8IFZBUllJTkcgewog
ICAgICAgICBFUzJfT05MWSgidmFyeWluZyIsIEAxKTsKICAgICAgICAgY29udGV4dC0+Y2hlY2tJ
c0F0R2xvYmFsTGV2ZWwoQDEsICJ2YXJ5aW5nIik7CiAgICAgICAgIGlmIChjb250ZXh0LT5nZXRT
aGFkZXJUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUikKLSAgICAgICAgICAgICQkID0gRXZxVmFy
eWluZ091dDsKKyAgICAgICAgICAgICQkID0gbmV3IFRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlcihF
dnFWYXJ5aW5nT3V0LCBAMSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICQkID0gRXZxVmFy
eWluZ0luOworICAgICAgICAgICAgJCQgPSBuZXcgVFN0b3JhZ2VRdWFsaWZpZXJXcmFwcGVyKEV2
cVZhcnlpbmdJbiwgQDEpOwogICAgIH0KICAgICB8IENPTlNUX1FVQUwgewotICAgICAgICAkJCA9
IEV2cUNvbnN0OworICAgICAgICAkJCA9IG5ldyBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIoRXZx
Q29uc3QsIEAxKTsKICAgICB9CiAgICAgfCBJTl9RVUFMIHsKICAgICAgICAgaWYgKGNvbnRleHQt
PmRlY2xhcmluZ0Z1bmN0aW9uKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgICQkID0gRXZxSW47
CisgICAgICAgICAgICAkJCA9IG5ldyBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIoRXZxSW4sIEAx
KTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkg
PT0gR0xfRlJBR01FTlRfU0hBREVSKQogICAgICAgICB7CiAgICAgICAgICAgICBFUzNfT1JfTkVX
RVIoImluIiwgQDEsICJzdG9yYWdlIHF1YWxpZmllciIpOwotICAgICAgICAgICAgJCQgPSBFdnFG
cmFnbWVudEluOworICAgICAgICAgICAgJCQgPSBuZXcgVFN0b3JhZ2VRdWFsaWZpZXJXcmFwcGVy
KEV2cUZyYWdtZW50SW4sIEAxKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjb250ZXh0
LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xfVkVSVEVYX1NIQURFUikKICAgICAgICAgewogICAgICAg
ICAgICAgRVMzX09SX05FV0VSKCJpbiIsIEAxLCAic3RvcmFnZSBxdWFsaWZpZXIiKTsKLSAgICAg
ICAgICAgICQkID0gRXZxVmVydGV4SW47CisgICAgICAgICAgICAkJCA9IG5ldyBUU3RvcmFnZVF1
YWxpZmllcldyYXBwZXIoRXZxVmVydGV4SW4sIEAxKTsKICAgICAgICAgfQogICAgICAgICBlbHNl
CiAgICAgICAgIHsKLSAgICAgICAgICAgICQkID0gRXZxQ29tcHV0ZUluOworICAgICAgICAgICAg
JCQgPSBuZXcgVFN0b3JhZ2VRdWFsaWZpZXJXcmFwcGVyKEV2cUNvbXB1dGVJbiwgQDEpOwogICAg
ICAgICB9CiAgICAgfQogICAgIHwgT1VUX1FVQUwgewogICAgICAgICBpZiAoY29udGV4dC0+ZGVj
bGFyaW5nRnVuY3Rpb24oKSkKICAgICAgICAgewotICAgICAgICAgICAgJCQgPSBFdnFPdXQ7Cisg
ICAgICAgICAgICAkJCA9IG5ldyBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIoRXZxT3V0LCBAMSk7
CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7CkBAIC05MjcsMzggKzkyNiw1NSBA
QCBzdG9yYWdlX3F1YWxpZmllcgogICAgICAgICAgICAgTk9OX0NPTVBVVEVfT05MWSgib3V0Iiwg
QDEpOwogICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9GUkFH
TUVOVF9TSEFERVIpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgJCQgPSBFdnFGcmFn
bWVudE91dDsKKyAgICAgICAgICAgICAgICAkJCA9IG5ldyBUU3RvcmFnZVF1YWxpZmllcldyYXBw
ZXIoRXZxRnJhZ21lbnRPdXQsIEAxKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAkJCA9IEV2cVZlcnRleE91dDsKKyAgICAg
ICAgICAgICAgICAkJCA9IG5ldyBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIoRXZxVmVydGV4T3V0
LCBAMSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgfCBJTk9VVF9RVUFM
IHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5kZWNsYXJpbmdGdW5jdGlvbigpKQogICAgICAgICB7
Ci0gICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgImludmFsaWQgaW5vdXQgcXVhbGlmaWVy
IiwgIidpbm91dCcgY2FuIGJlIG9ubHkgdXNlZCB3aXRoIGZ1bmN0aW9uIHBhcmFtZXRlcnMiKTsK
KyAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAxLCAiaW52YWxpZCBxdWFsaWZpZXI6IGNhbiBi
ZSBvbmx5IHVzZWQgd2l0aCBmdW5jdGlvbiBwYXJhbWV0ZXJzIiwgImlub3V0Iik7CiAgICAgICAg
IH0KLSAgICAgICAgJCQgPSBFdnFJbk91dDsKKyAgICAgICAgJCQgPSBuZXcgVFN0b3JhZ2VRdWFs
aWZpZXJXcmFwcGVyKEV2cUluT3V0LCBAMSk7CiAgICAgfQogICAgIHwgQ0VOVFJPSUQgewogICAg
ICAgICBFUzNfT1JfTkVXRVIoImNlbnRyb2lkIiwgQDEsICJzdG9yYWdlIHF1YWxpZmllciIpOwot
ICAgICAgICAkJCA9IEV2cUNlbnRyb2lkOworICAgICAgICAkJCA9IG5ldyBUU3RvcmFnZVF1YWxp
ZmllcldyYXBwZXIoRXZxQ2VudHJvaWQsIEAxKTsKICAgICB9CiAgICAgfCBVTklGT1JNIHsKICAg
ICAgICAgY29udGV4dC0+Y2hlY2tJc0F0R2xvYmFsTGV2ZWwoQDEsICJ1bmlmb3JtIik7Ci0gICAg
ICAgICQkID0gRXZxVW5pZm9ybTsKKyAgICAgICAgJCQgPSBuZXcgVFN0b3JhZ2VRdWFsaWZpZXJX
cmFwcGVyKEV2cVVuaWZvcm0sIEAxKTsKKyAgICB9CisgICAgfCBSRUFET05MWSB7CisgICAgICAg
ICQkID0gbmV3IFRNZW1vcnlRdWFsaWZpZXJXcmFwcGVyKEV2cVJlYWRPbmx5LCBAMSk7CisgICAg
fQorICAgIHwgV1JJVEVPTkxZIHsKKyAgICAgICAgJCQgPSBuZXcgVE1lbW9yeVF1YWxpZmllcldy
YXBwZXIoRXZxV3JpdGVPbmx5LCBAMSk7CisgICAgfQorICAgIHwgQ09IRVJFTlQgeworICAgICAg
ICAkJCA9IG5ldyBUTWVtb3J5UXVhbGlmaWVyV3JhcHBlcihFdnFDb2hlcmVudCwgQDEpOworICAg
IH0KKyAgICB8IFJFU1RSSUNUIHsKKyAgICAgICAgJCQgPSBuZXcgVE1lbW9yeVF1YWxpZmllcldy
YXBwZXIoRXZxUmVzdHJpY3QsIEAxKTsKKyAgICB9CisgICAgfCBWT0xBVElMRSB7CisgICAgICAg
ICQkID0gbmV3IFRNZW1vcnlRdWFsaWZpZXJXcmFwcGVyKEV2cVZvbGF0aWxlLCBAMSk7CisgICAg
fQorICAgIHwgU0hBUkVEIHsKKyAgICAgICAgY29udGV4dC0+Y2hlY2tJc0F0R2xvYmFsTGV2ZWwo
QDEsICJzaGFyZWQiKTsKKyAgICAgICAgQ09NUFVURV9PTkxZKCJzaGFyZWQiLCBAMSk7CisgICAg
ICAgICQkID0gbmV3IFRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlcihFdnFTaGFyZWQsIEAxKTsKICAg
ICB9CiAgICAgOwogCiB0eXBlX3NwZWNpZmllcgogICAgIDogdHlwZV9zcGVjaWZpZXJfbm9fcHJl
YyB7CiAgICAgICAgICQkID0gJDE7Ci0KLSAgICAgICAgaWYgKCQkLnByZWNpc2lvbiA9PSBFYnBV
bmRlZmluZWQpIHsKLSAgICAgICAgICAgICQkLnByZWNpc2lvbiA9IGNvbnRleHQtPnN5bWJvbFRh
YmxlLmdldERlZmF1bHRQcmVjaXNpb24oJDEuZ2V0QmFzaWNUeXBlKCkpOwotICAgICAgICB9Cisg
ICAgICAgICQkLnByZWNpc2lvbiA9IGNvbnRleHQtPnN5bWJvbFRhYmxlLmdldERlZmF1bHRQcmVj
aXNpb24oJDEuZ2V0QmFzaWNUeXBlKCkpOwogICAgIH0KICAgICA7CiAKQEAgLTEwMDAsNiArMTAx
Niw5IEBAIGxheW91dF9xdWFsaWZpZXJfaWQKICAgICB8IElERU5USUZJRVIgRVFVQUwgVUlOVENP
TlNUQU5UIHsKICAgICAgICAgJCQgPSBjb250ZXh0LT5wYXJzZUxheW91dFF1YWxpZmllcigqJDEu
c3RyaW5nLCBAMSwgJDMuaSwgQDMpOwogICAgIH0KKyAgICB8IFNIQVJFRCB7CisgICAgICAgICQk
ID0gY29udGV4dC0+cGFyc2VMYXlvdXRRdWFsaWZpZXIoInNoYXJlZCIsIEAxKTsKKyAgICB9CiAg
ICAgOwogCiB0eXBlX3NwZWNpZmllcl9ub19wcmVjCkBAIC0xMTIxLDYgKzExNDAsMTIgQEAgdHlw
ZV9zcGVjaWZpZXJfbm9uYXJyYXkKICAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRGbG9hdCwgQDEp
OwogICAgICAgICAkJC5zZXRNYXRyaXgoNCwgMyk7CiAgICAgfQorICAgIHwgWVVWQ1NDU1RBTkRB
UkRFWFQgeworICAgICAgICBpZiAoIWNvbnRleHQtPmlzRXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhU
X1lVVl90YXJnZXQiKSkgeworICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDEsICJ1bnN1cHBv
cnRlZCB0eXBlIiwgInl1dkNzY1N0YW5kYXJkRVhUIik7CisgICAgICAgIH0KKyAgICAgICAgJCQu
aW5pdGlhbGl6ZShFYnRZdXZDc2NTdGFuZGFyZEVYVCwgQDEpOworICAgIH0KICAgICB8IFNBTVBM
RVIyRCB7CiAgICAgICAgICQkLmluaXRpYWxpemUoRWJ0U2FtcGxlcjJELCBAMSk7CiAgICAgfQpA
QCAtMTEzMyw2ICsxMTU4LDkgQEAgdHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkKICAgICB8IFNBTVBM
RVIyREFSUkFZIHsKICAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRTYW1wbGVyMkRBcnJheSwgQDEp
OwogICAgIH0KKyAgICB8IFNBTVBMRVIyRE1TIHsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRT
YW1wbGVyMkRNUywgQDEpOworICAgIH0KICAgICB8IElTQU1QTEVSMkQgewogICAgICAgICAkJC5p
bml0aWFsaXplKEVidElTYW1wbGVyMkQsIEAxKTsKICAgICB9CkBAIC0xMTQ1LDYgKzExNzMsOSBA
QCB0eXBlX3NwZWNpZmllcl9ub25hcnJheQogICAgIHwgSVNBTVBMRVIyREFSUkFZIHsKICAgICAg
ICAgJCQuaW5pdGlhbGl6ZShFYnRJU2FtcGxlcjJEQXJyYXksIEAxKTsKICAgICB9CisgICAgfCBJ
U0FNUExFUjJETVMgeworICAgICAgICAkJC5pbml0aWFsaXplKEVidElTYW1wbGVyMkRNUywgQDEp
OworICAgIH0KICAgICB8IFVTQU1QTEVSMkQgewogICAgICAgICAkJC5pbml0aWFsaXplKEVidFVT
YW1wbGVyMkQsIEAxKTsKICAgICB9CkBAIC0xMTU3LDYgKzExODgsOSBAQCB0eXBlX3NwZWNpZmll
cl9ub25hcnJheQogICAgIHwgVVNBTVBMRVIyREFSUkFZIHsKICAgICAgICAgJCQuaW5pdGlhbGl6
ZShFYnRVU2FtcGxlcjJEQXJyYXksIEAxKTsKICAgICB9CisgICAgfCBVU0FNUExFUjJETVMgewor
ICAgICAgICAkJC5pbml0aWFsaXplKEVidFVTYW1wbGVyMkRNUywgQDEpOworICAgIH0KICAgICB8
IFNBTVBMRVIyRFNIQURPVyB7CiAgICAgICAgICQkLmluaXRpYWxpemUoRWJ0U2FtcGxlcjJEU2hh
ZG93LCBAMSk7CiAgICAgfQpAQCAtMTE3Myw2ICsxMjA3LDEyIEBAIHR5cGVfc3BlY2lmaWVyX25v
bmFycmF5CiAgICAgICAgIH0KICAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRTYW1wbGVyRXh0ZXJu
YWxPRVMsIEAxKTsKICAgICB9CisgICAgfCBTQU1QTEVSRVhURVJOQUwyRFkyWUVYVCB7CisgICAg
ICAgIGlmICghY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKCJHTF9FWFRfWVVWX3RhcmdldCIp
KSB7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcihAMSwgInVuc3VwcG9ydGVkIHR5cGUiLCAi
X19zYW1wbGVyRXh0ZXJuYWwyRFkyWUVYVCIpOworICAgICAgICB9CisgICAgICAgICQkLmluaXRp
YWxpemUoRWJ0U2FtcGxlckV4dGVybmFsMkRZMllFWFQsIEAxKTsKKyAgICB9CiAgICAgfCBTQU1Q
TEVSMkRSRUNUIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBwb3J0c0V4dGVuc2lvbigiR0xf
QVJCX3RleHR1cmVfcmVjdGFuZ2xlIikpIHsKICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKEAx
LCAidW5zdXBwb3J0ZWQgdHlwZSIsICJzYW1wbGVyMkRSZWN0Iik7CkBAIC0xMTgyLDYgKzEyMjIs
NDIgQEAgdHlwZV9zcGVjaWZpZXJfbm9uYXJyYXkKICAgICB8IHN0cnVjdF9zcGVjaWZpZXIgewog
ICAgICAgICAkJCA9ICQxOwogICAgIH0KKyAgICB8IElNQUdFMkQgeworICAgICAgICAkJC5pbml0
aWFsaXplKEVidEltYWdlMkQsIEAxKTsKKyAgICB9CisgICAgfCBJSU1BR0UyRCB7CisgICAgICAg
ICQkLmluaXRpYWxpemUoRWJ0SUltYWdlMkQsIEAxKTsKKyAgICB9CisgICAgfCBVSU1BR0UyRCB7
CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0VUltYWdlMkQsIEAxKTsKKyAgICB9CisgICAgfCBJ
TUFHRTNEIHsKKyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRJbWFnZTNELCBAMSk7CisgICAgfQor
ICAgIHwgSUlNQUdFM0QgeworICAgICAgICAkJC5pbml0aWFsaXplKEVidElJbWFnZTNELCBAMSk7
CisgICAgfQorICAgIHwgVUlNQUdFM0QgeworICAgICAgICAkJC5pbml0aWFsaXplKEVidFVJbWFn
ZTNELCBAMSk7CisgICAgfQorICAgIHwgSU1BR0UyREFSUkFZIHsKKyAgICAgICAgJCQuaW5pdGlh
bGl6ZShFYnRJbWFnZTJEQXJyYXksIEAxKTsKKyAgICB9CisgICAgfCBJSU1BR0UyREFSUkFZIHsK
KyAgICAgICAgJCQuaW5pdGlhbGl6ZShFYnRJSW1hZ2UyREFycmF5LCBAMSk7CisgICAgfQorICAg
IHwgVUlNQUdFMkRBUlJBWSB7CisgICAgICAgICQkLmluaXRpYWxpemUoRWJ0VUltYWdlMkRBcnJh
eSwgQDEpOworICAgIH0KKyAgICB8IElNQUdFQ1VCRSB7CisgICAgICAgICQkLmluaXRpYWxpemUo
RWJ0SW1hZ2VDdWJlLCBAMSk7CisgICAgfQorICAgIHwgSUlNQUdFQ1VCRSB7CisgICAgICAgICQk
LmluaXRpYWxpemUoRWJ0SUltYWdlQ3ViZSwgQDEpOworICAgIH0KKyAgICB8IFVJTUFHRUNVQkUg
eworICAgICAgICAkJC5pbml0aWFsaXplKEVidFVJbWFnZUN1YmUsIEAxKTsKKyAgICB9CiAgICAg
fCBUWVBFX05BTUUgewogICAgICAgICAvLwogICAgICAgICAvLyBUaGlzIGlzIGZvciB1c2VyIGRl
ZmluZWQgdHlwZSBuYW1lcy4gIFRoZSBsZXhpY2FsIHBoYXNlIGxvb2tlZCB1cCB0aGUKQEAgLTEy
MDcsMTYgKzEyODMsNyBAQCBzdHJ1Y3RfZGVjbGFyYXRpb25fbGlzdAogICAgICAgICAkJCA9ICQx
OwogICAgIH0KICAgICB8IHN0cnVjdF9kZWNsYXJhdGlvbl9saXN0IHN0cnVjdF9kZWNsYXJhdGlv
biB7Ci0gICAgICAgICQkID0gJDE7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgJDIt
PnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBURmllbGQqIGZpZWxkID0gKCokMilbaV07Ci0g
ICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8ICQkLT5zaXplKCk7ICsraikgewotICAg
ICAgICAgICAgICAgIGlmICgoKiQkKVtqXS0+bmFtZSgpID09IGZpZWxkLT5uYW1lKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoQDIsICJkdXBsaWNhdGUgZmllbGQgbmFt
ZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsIGZpZWxkLT5uYW1lKCkuY19zdHIoKSk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgJCQtPnB1c2hfYmFjayhm
aWVsZCk7Ci0gICAgICAgIH0KKyAgICAgICAgJCQgPSBjb250ZXh0LT5jb21iaW5lU3RydWN0Rmll
bGRMaXN0cygkMSwgJDIsIEAyKTsKICAgICB9CiAgICAgOwogCkBAIC0xMzc0LDEwICsxNDQxLDEw
IEBAIGNvbmRpdGlvbgogICAgICAgICBjb250ZXh0LT5jaGVja0lzU2NhbGFyQm9vbCgkMS0+Z2V0
TGluZSgpLCAkMSk7CiAgICAgfQogICAgIHwgZnVsbHlfc3BlY2lmaWVkX3R5cGUgaWRlbnRpZmll
ciBFUVVBTCBpbml0aWFsaXplciB7Ci0gICAgICAgIFRJbnRlcm1Ob2RlICppbnRlcm1Ob2RlOwor
ICAgICAgICBUSW50ZXJtQmluYXJ5ICppbml0Tm9kZSA9IG51bGxwdHI7CiAgICAgICAgIGNvbnRl
eHQtPmNoZWNrSXNTY2FsYXJCb29sKEAyLCAkMSk7CiAKLSAgICAgICAgaWYgKCFjb250ZXh0LT5l
eGVjdXRlSW5pdGlhbGl6ZXIoQDIsICokMi5zdHJpbmcsICQxLCAkNCwgJmludGVybU5vZGUpKQor
ICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXplcihAMiwgKiQyLnN0cmluZywg
JDEsICQ0LCAmaW5pdE5vZGUpKQogICAgICAgICAgICAgJCQgPSAkNDsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAkJCA9IDA7CkBAIC0xNDc3LDEwICsxNTQ0LDEwIEBAIGV4dGVybmFsX2Rl
Y2xhcmF0aW9uCiAKIGZ1bmN0aW9uX2RlZmluaXRpb24KICAgICA6IGZ1bmN0aW9uX3Byb3RvdHlw
ZSB7Ci0gICAgICAgIGNvbnRleHQtPnBhcnNlRnVuY3Rpb25EZWZpbml0aW9uSGVhZGVyKEAxLCAm
KCQxLmZ1bmN0aW9uKSwgJiQxLmludGVybUFnZ3JlZ2F0ZSk7CisgICAgICAgIGNvbnRleHQtPnBh
cnNlRnVuY3Rpb25EZWZpbml0aW9uSGVhZGVyKEAxLCAmKCQxLmZ1bmN0aW9uKSwgJigkMS5pbnRl
cm1GdW5jdGlvblByb3RvdHlwZSkpOwogICAgIH0KICAgICBjb21wb3VuZF9zdGF0ZW1lbnRfbm9f
bmV3X3Njb3BlIHsKLSAgICAgICAgJCQgPSBjb250ZXh0LT5hZGRGdW5jdGlvbkRlZmluaXRpb24o
KigkMS5mdW5jdGlvbiksICQxLmludGVybUFnZ3JlZ2F0ZSwgJDMsIEAxKTsKKyAgICAgICAgJCQg
PSBjb250ZXh0LT5hZGRGdW5jdGlvbkRlZmluaXRpb24oJDEuaW50ZXJtRnVuY3Rpb25Qcm90b3R5
cGUsICQzLCBAMSk7CiAgICAgfQogICAgIDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ19sZXguY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ19sZXguY3Bw
CmluZGV4IDhhZDdiMTQ2NGQ0Li42ZDAwNzExZDE5MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ19sZXguY3BwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdf
bGV4LmNwcApAQCAtNyw2ICs3LDggQEAKIAogLy8gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlX3BhcnNlci5zaC4gRE8gTk9UIEVESVQhCiAKKy8qIGNsYW5nLWZvcm1hdCBv
ZmYgKi8KKwogLy8gSWdub3JlIGVycm9ycyBpbiBhdXRvLWdlbmVyYXRlZCBjb2RlLgogI2lmIGRl
ZmluZWQoX19HTlVDX18pCiAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2Vk
LWZ1bmN0aW9uIgpAQCAtMjQsNyArMjYsNyBAQAogCiAKIAotI2xpbmUgMjggIi4vZ2xzbGFuZ19s
ZXguY3BwIgorI2xpbmUgMzAgIi4vZ2xzbGFuZ19sZXguY3BwIgogCiAjZGVmaW5lICBZWV9JTlRf
QUxJR05FRCBzaG9ydCBpbnQKIApAQCAtMjIwLDcgKzIyMiw3IEBAIHR5cGVkZWYgc2l6ZV90IHl5
X3NpemVfdDsKICAgICAjZGVmaW5lICBZWV9MRVNTX0xJTkVOTyhuKSBcCiAgICAgICAgICAgICBk
byB7IFwKICAgICAgICAgICAgICAgICB5eV9zaXplX3QgeXlsO1wKLSAgICAgICAgICAgICAgICBm
b3IgKCB5eWwgPSBuOyB5eWwgPCB5eWxlbmc7ICsreXlsIClcCisgICAgICAgICAgICAgICAgZm9y
ICggeXlsID0gbjsgeXlsIDwgc3RhdGljX2Nhc3Q8eXlfc2l0ZV90Pih5eWxlbmcpOyArK3l5bCAp
XAogICAgICAgICAgICAgICAgICAgICBpZiAoIHl5dGV4dFt5eWxdID09ICdcbicgKVwKICAgICAg
ICAgICAgICAgICAgICAgICAgIC0teXlsaW5lbm87XAogICAgICAgICAgICAgfXdoaWxlKDApCkBA
IC0zOTUsMTMgKzM5NywxMyBAQCBzdGF0aWMgdm9pZCB5eV9mYXRhbF9lcnJvciAoeXljb25zdCBj
aGFyIG1zZ1tdICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKICAqLwogI2RlZmluZSBZWV9ET19CRUZP
UkVfQUNUSU9OIFwKIAl5eWctPnl5dGV4dF9wdHIgPSB5eV9icDsgXAotCXl5bGVuZyA9ICh5eV9z
aXplX3QpICh5eV9jcCAtIHl5X2JwKTsgXAorCXl5bGVuZyA9IChzaXplX3QpICh5eV9jcCAtIHl5
X2JwKTsgXAogCXl5Zy0+eXlfaG9sZF9jaGFyID0gKnl5X2NwOyBcCiAJKnl5X2NwID0gJ1wwJzsg
XAogCXl5Zy0+eXlfY19idWZfcCA9IHl5X2NwOwogCi0jZGVmaW5lIFlZX05VTV9SVUxFUyAyNDAK
LSNkZWZpbmUgWVlfRU5EX09GX0JVRkZFUiAyNDEKKyNkZWZpbmUgWVlfTlVNX1JVTEVTIDI0Ngor
I2RlZmluZSBZWV9FTkRfT0ZfQlVGRkVSIDI0NwogLyogVGhpcyBzdHJ1Y3QgaXMgbm90IHVzZWQg
aW4gdGhpcyBzY2FubmVyLAogICAgYnV0IGl0cyBwcmVzZW5jZSBpcyBuZWNlc3NhcnkuICovCiBz
dHJ1Y3QgeXlfdHJhbnNfaW5mbwpAQCAtNDA5LDk4ICs0MTEsMTA1IEBAIHN0cnVjdCB5eV90cmFu
c19pbmZvCiAJZmxleF9pbnQzMl90IHl5X3ZlcmlmeTsKIAlmbGV4X2ludDMyX3QgeXlfbnh0Owog
CX07Ci1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfYWNjZXB0WzgyMF0gPQorc3RhdGlj
IHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2FjY2VwdFs4ODZdID0KICAgICB7ICAgMCwKLSAgICAg
ICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDI0MSwgIDIzOSwgIDIzOCwgIDIzOCwgIDIyMiwgIDIy
OCwKLSAgICAgIDIzMywgIDIxNywgIDIxOCwgIDIyNiwgIDIyNSwgIDIxNCwgIDIyMywgIDIyMSwg
IDIyNywgIDE4MCwKLSAgICAgIDE4MCwgIDIxNSwgIDIxMSwgIDIyOSwgIDIxNiwgIDIzMCwgIDIz
NCwgIDE3NywgIDIxOSwgIDIyMCwKLSAgICAgIDIzMiwgIDE3NywgIDE3NywgIDE3NywgIDE3Nywg
IDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKLSAgICAgIDE3NywgIDE3NywgIDE3NywgIDE3
NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKLSAgICAgIDE3NywgIDIxMiwg
IDIzMSwgIDIxMywgIDIyNCwgIDIzNywgIDIzNiwgIDI0MCwgIDIzNSwgIDIwOCwKLSAgICAgIDE5
NCwgIDIxMywgIDIwMiwgIDE5NywgIDE5MiwgIDIwMCwgIDE5MCwgIDIwMSwgIDE5MSwgIDE4NiwK
LSAgICAgIDE5MywgIDE4NSwgIDE3OSwgIDE4MCwgICAgMCwgIDE4MywgICAgMCwgIDIyMCwgIDIx
MiwgIDIxOSwKLSAgICAgIDIwOSwgIDIwNSwgIDIwNywgIDIwNiwgIDIxMCwgIDE3NywgIDE5OCwg
IDIwNCwgIDE3NywgIDE3NywKLSAgICAgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3
NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKLQotICAgICAgIDEyLCAgMTc3LCAgMTc3LCAgMTc3
LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAg
MTc3LCAgMTc3LCAgIDE1LCAgMTc3LCAgMTc3LCAgIDIzLCAgMTc3LCAgMTc3LAotICAgICAgMTc3
LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAot
ICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3
LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTk5LCAgMjAzLCAgMjM1LCAgICAwLCAgMTg5
LCAgMTg1LCAgICAwLCAgMTg4LCAgMTgyLAotICAgICAgICAwLCAgMTg0LCAgMTc4LCAgMTk1LCAg
MTk2LCAgMTc3LCAgMTM2LCAgMTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3
LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAg
MTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAotICAg
ICAgIDEzLCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTc3LAotCi0gICAgICAxNzcsICAgMjcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAx
NzcsICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAxNzcsICAxNzcsICAgMjQsICAxNzcsICAxNzcs
ICAxNzcsICAxNzcsICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAx
NzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAxNzcsICAxNzcs
ICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAx
NzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAgIDAsICAxODYsCi0gICAg
ICAgIDAsICAxODUsICAxODcsICAxODEsICAxNzcsICAxNzcsICAxNzcsICAgMzAsICAxNzcsICAx
NzcsCi0gICAgICAgMTgsICAxNzQsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcs
ICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAxNzcsICAgMTYsICAxMzksICAxNzcsICAxNzcsICAx
NzcsICAxNzcsICAgMjEsICAxNzcsCi0gICAgICAxNzcsICAxNDMsICAxNTUsICAxNzcsICAxNzcs
ICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAxNzcsICAxNzcsICAx
NzcsICAxNzcsICAxNTIsICAgIDQsICAgMzUsICAgMzYsICAgMzcsCi0KLSAgICAgIDE3NywgIDE3
NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKLSAgICAg
IDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3
NywKLSAgICAgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE0MiwgICAzMSwgIDE3NywgIDE3Nywg
ICAyOCwgIDE3NywKLSAgICAgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgICA0
NywgICA0OCwgICA0OSwgICAyOSwKLSAgICAgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3Nywg
IDE3NywgICAxMCwgICA1MywgICA1NCwgICA1NSwKLSAgICAgIDE3NywgIDEzNywgIDE3NywgIDE3
NywgICAgNywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE2NCwKLSAgICAgIDE2NSwgIDE2Niwg
IDE3NywgICAzMiwgIDE3NywgIDE1NiwgICAyNiwgIDE2NywgIDE2OCwgIDE2OSwKLSAgICAgICAg
MiwgIDE2MSwgIDE2MiwgIDE2MywgIDE3NywgIDE3NywgIDE3NywgICAyNSwgIDE1OSwgIDE3NywK
LSAgICAgIDE3NywgIDE3NywgICA1MCwgICA1MSwgICA1MiwgIDE3NywgIDE3NywgIDE3NywgIDE3
NywgIDE3NywKLSAgICAgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgICA4Niwg
IDE3NywgIDE3NywgIDE3NywKLQotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTUzLCAg
MTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3
LCAgMTc3LCAgMTc3LCAgMTM4LCAgMTc3LCAgMTc3LCAgMTc2LAotICAgICAgIDU2LCAgIDU3LCAg
IDU4LCAgMTc3LCAgMTc3LCAgIDE0LCAgMTc3LCAgIDkxLCAgMTc3LCAgMTc3LAotICAgICAgMTc3
LCAgMTc3LCAgIDg5LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTU0LCAgMTQ5LCAgIDkyLCAgMTc3LAot
ICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTQ0LCAgMTc3LCAgMTc3LCAgMTc3
LCAgIDc4LAotICAgICAgIDM4LCAgIDQxLCAgIDQzLCAgIDQyLCAgIDM5LCAgIDQ1LCAgIDQ0LCAg
IDQ2LCAgIDQwLCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTYwLCAgMTM1LCAgMTc3
LCAgMTc3LCAgMTQ3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgIDM0LCAgIDg3LCAgMTczLCAg
IDIyLCAgMTQ4LCAgIDc3LCAgMTc3LCAgMTU4LCAgIDE3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3
LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAg
MTc3LCAgMTc3LCAgMTc3LCAgIDE5LCAgIDMzLCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAotCi0g
ICAgICAxNzcsICAxNzcsICAgOTMsICAgOTQsICAgOTUsICAxNzcsICAxNzcsICAxNzcsICAxNzcs
ICAxNzcsCi0gICAgICAgIDMsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAx
NzcsICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAxNzcsICAxNDAsICAxNzcsICAxNzcsICAxNzcs
ICAxNzcsICAxNzcsICAgIDgsICAxNzcsCi0gICAgICAxNzcsICAgIDksICAxNzcsICAxNzcsICAx
NzcsICAxNzcsICAgMjAsICAgNzksICAgMTEsICAxNTAsCi0gICAgICAgOTcsICAgOTgsICAgOTks
ICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsCi0gICAgICAxNzcsICAx
NzcsICAxNzcsICAxNzcsICAxNzcsICAxNDUsICAxNzcsICAxNzcsICAxNzcsICAgODEsCi0gICAg
ICAgODMsICAgODAsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAx
NDEsCi0gICAgICAxMDEsICAxMDIsICAxMDMsICAxNzcsICAxNzcsICAxNTcsICAxNzcsICAxNDYs
ICAxNzcsICAxNzcsCi0gICAgICAgIDYsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAxNzcsICAx
NzcsICAxNzcsICAxNzcsICAxNzcsCi0gICAgICAgOTYsICAxNTEsICAgIDEsICAxNzcsICAxNzcs
ICAxNzcsICAxNzcsICAxNzcsICAxNzUsICAxNzcsCi0KLSAgICAgICA5MCwgICAgNSwgIDE3MCwg
ICA1OSwgICA2MiwgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKLSAgICAgIDE3NywgIDE3
NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgICA4MiwgIDE3NywKLSAgICAg
IDE3NywgIDE3NywgIDE3NywgIDEwMCwgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDEy
MCwKLSAgICAgICA2NiwgICA2NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3Nywg
IDE3NywgIDE3NywKLSAgICAgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgICA4OCwgIDE3
NywgIDE3NywgIDE3NywgIDEwNCwKLSAgICAgIDEyMiwgICA3MCwgICA3MSwgIDE3NywgIDE3Nywg
ICA4NCwgIDE3NywgIDE3NywgIDE3NywgIDE3NywKLSAgICAgIDE3NywgIDE3NywgIDE3NywgIDEx
NSwgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywKLSAgICAgIDE3NywgIDE3Nywg
IDE3NywgIDE3NywgIDEyOSwgIDE3NywgIDE3NywgIDE3NywgIDE3NywgICA2MCwKLSAgICAgIDE3
NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywgIDE3NywK
LSAgICAgIDE3NywgIDE3NywgIDExNiwgIDEwNSwgIDE3NywgIDEwNiwgIDE3NywgIDE3NywgIDE3
NywgIDEzMCwKLQotICAgICAgMTc3LCAgMTc3LCAgIDY4LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3
LCAgMTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTc3LCAgMTE3LCAgMTc3LCAgMTc3LCAgMTMxLAotICAgICAgMTc3LCAgMTc3LCAgIDcyLCAgMTA3
LCAgMTA4LCAgMTc3LCAgMTExLCAgMTc3LCAgMTEyLCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAg
MTc3LCAgMTc3LCAgIDg1LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgIDY0LAotICAgICAgMTc3
LCAgIDYzLCAgMTI2LCAgMTc3LCAgMTc3LCAgMTA5LCAgMTEwLCAgMTc3LCAgMTc3LCAgMTc3LAot
ICAgICAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTI0LCAgMTI3
LCAgMTE4LAotICAgICAgMTc3LCAgIDY1LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAg
MTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTI1LCAgMTI4LCAgMTc3LCAgMTc3LCAgMTIxLCAgIDY5
LCAgMTc3LCAgMTc3LCAgMTcxLCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgIDc0LCAgMTc3LCAg
MTc3LCAgMTIzLCAgIDczLCAgMTc3LCAgMTc3LCAgMTc3LAotICAgICAgMTc3LCAgMTc3LCAgMTc3
LCAgMTMyLCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LCAgMTc3LAotCi0gICAgICAxMzMs
ICAxNzcsICAxNzcsICAxNzcsICAgNzUsICAxNzcsICAxMzQsICAxMTMsICAxMTQsICAxNzcsCi0g
ICAgICAxNzcsICAxNzcsICAgNjEsICAxNzcsICAxNzcsICAxNzIsICAxMTksICAgNzYsICAgIDAK
KyAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDI0NywgIDI0NSwgIDI0NCwgIDI0NCwgIDIy
OCwgIDIzNCwKKyAgICAgIDIzOSwgIDIyMywgIDIyNCwgIDIzMiwgIDIzMSwgIDIyMCwgIDIyOSwg
IDIyNywgIDIzMywgIDE4NiwKKyAgICAgIDE4NiwgIDIyMSwgIDIxNywgIDIzNSwgIDIyMiwgIDIz
NiwgIDI0MCwgIDE4MywgIDIyNSwgIDIyNiwKKyAgICAgIDIzOCwgIDE4MywgIDE4MywgIDE4Mywg
IDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywKKyAgICAgIDE4MywgIDE4MywgIDE4
MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywKKyAgICAgIDE4Mywg
IDE4MywgIDE4MywgIDIxOCwgIDIzNywgIDIxOSwgIDIzMCwgIDI0MywgIDI0MiwgIDI0NiwKKyAg
ICAgIDI0MSwgIDIxNCwgIDIwMCwgIDIxOSwgIDIwOCwgIDIwMywgIDE5OCwgIDIwNiwgIDE5Niwg
IDIwNywKKyAgICAgIDE5NywgIDE5MiwgIDE5OSwgIDE5MSwgIDE4NSwgIDE4NiwgICAgMCwgIDE4
OSwgICAgMCwgIDIyNiwKKyAgICAgIDIxOCwgIDIyNSwgIDIxNSwgIDIxMSwgIDIxMywgIDIxMiwg
IDIxNiwgIDE4MywgIDIwNCwgIDIxMCwKKyAgICAgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4
MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywKKworICAgICAgMTgzLCAgMTgzLCAgMTgz
LCAgIDEyLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLAorICAgICAgMTgzLCAg
MTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgIDE1LCAgMTgzLCAgMTgzLAorICAg
ICAgIDIzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAg
MTgzLAorICAgICAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgz
LCAgMTgzLCAgMTgzLAorICAgICAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAg
MTgzLCAgMTgzLCAgMTgzLCAgMTgzLAorICAgICAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgz
LCAgMTgzLCAgMjA1LCAgMjA5LCAgMjQxLCAgICAwLAorICAgICAgMTk1LCAgMTkxLCAgICAwLCAg
MTk0LCAgMTg4LCAgICAwLCAgMTkwLCAgMTg0LCAgMjAxLCAgMjAyLAorICAgICAgMTgzLCAgMTgz
LCAgMTQzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLAorICAgICAg
MTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgz
LAorICAgICAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgIDEzLCAgMTgzLCAg
MTgzLCAgMTgzLAorCisgICAgICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAx
ODMsICAgMjgsICAxODMsICAxODMsCisgICAgICAxODMsICAxODMsICAxODMsICAxODMsICAxODMs
ICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsCisgICAgICAgMjQsICAxODMsICAxODMsICAx
ODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsCisgICAgICAxODMsICAxODMs
ICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsCisgICAgICAx
ODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMs
CisgICAgICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAgIDAsICAx
OTIsICAgIDAsCisgICAgICAxOTEsICAxOTMsICAxODcsICAxODMsICAxODMsICAxODMsICAxODMs
ICAgMzEsICAxODMsICAxODMsCisgICAgICAgMTgsICAxODAsICAxODMsICAxODMsICAxODMsICAx
ODMsICAxODMsICAxODMsICAxODMsICAxODMsCisgICAgICAxODMsICAxODMsICAgMTYsICAxNDYs
ICAxODMsICAxODMsICAxODMsICAxODMsICAgMjEsICAxODMsCisgICAgICAxODMsICAxNTAsICAx
NjEsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsCisKKyAgICAgIDE4
MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE1OCwgICAgNCwgICAzNiwgICAzNywK
KyAgICAgICAzOCwgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4
MywgIDE4MywKKyAgICAgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4Mywg
IDE4MywgIDE4MywgIDE4MywKKyAgICAgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4
MywgIDE0OSwgICAzMiwgIDE4MywgIDE4MywKKyAgICAgICAyOSwgIDE4MywgIDE4MywgIDE4Mywg
IDE4MywgIDE4MywgIDE4MywgIDE4MywgICA0OCwgICA0OSwKKyAgICAgICA1MCwgICAzMCwgIDE4
MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywKKyAgICAgICAxMCwg
ICA1NCwgICA1NSwgICA1NiwgIDE4MywgIDE0NCwgIDE4MywgIDE4MywgICAgNywgIDE4MywKKyAg
ICAgIDE4MywgIDE4MywgIDE4MywgIDE3MCwgIDE3MSwgIDE3MiwgIDE4MywgICAzMywgIDE4Mywg
IDE2MiwKKyAgICAgICAyNywgIDE3MywgIDE3NCwgIDE3NSwgICAgMiwgIDE2NywgIDE2OCwgIDE2
OSwgIDE4MywgIDE4MywKKyAgICAgIDE4MywgICAyNSwgIDE2NSwgIDE4MywgIDE4MywgIDE4Mywg
IDE4MywgIDE4MywgICA1MSwgICA1MiwKKworICAgICAgIDUzLCAgMTgzLCAgMTgzLCAgMTgzLCAg
MTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLAorICAgICAgMTgzLCAgMTgzLCAgMTA4
LCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLAorICAgICAgMTgzLCAg
MTU5LCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLAorICAg
ICAgMTgzLCAgMTgzLCAgMTgzLCAgMTQ1LCAgMTgzLCAgMTgzLCAgMTgyLCAgIDU3LCAgIDU4LCAg
IDU5LAorICAgICAgMTgzLCAgMTgzLCAgIDE0LCAgMTgzLCAgMTgzLCAgMTgzLCAgMTEzLCAgMTgz
LCAgMTgzLCAgMTgzLAorICAgICAgMTgzLCAgMTExLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTYwLCAg
MTU1LCAgMTE0LCAgMTgzLCAgMTgzLAorICAgICAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTUx
LCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLAorICAgICAgIDgzLCAgIDM5LCAgIDQyLCAg
IDQ0LCAgIDQzLCAgIDQwLCAgIDQ2LCAgIDQ1LCAgIDQ3LCAgIDQxLAorICAgICAgMTgzLCAgMTgz
LCAgMTgzLCAgMTgzLCAgMTY2LCAgMTQyLCAgMTgzLCAgMTgzLCAgMTUzLCAgMTgzLAorICAgICAg
MTgzLCAgMTgzLCAgIDM1LCAgMTA5LCAgIDI2LCAgMTc5LCAgIDIyLCAgMTU0LCAgIDgyLCAgMTgz
LAorCisgICAgICAxNjQsICAgMTcsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMs
ICAxODMsICAxODMsCisgICAgICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAx
ODMsICAxODMsICAgMTksICAgMzQsCisgICAgICAxODMsICAxODMsICAxODMsICAxODMsICAxODMs
ICAxODMsICAxMTUsICAgODgsICAgOTQsICAxODMsCisgICAgICAxODMsICAxODMsICAxODMsICAx
ODMsICAgODUsICAgODcsICAgIDMsICAxODMsICAxODMsICAxODMsCisgICAgICAxODMsICAxODMs
ICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxNDcsICAxODMsCisgICAgICAx
ODMsICAxODMsICAxODMsICAxODMsICAgIDgsICAxODMsICAxODMsICAgIDksICAxODMsICAxODMs
CisgICAgICAxODMsICAxODMsICAxODMsICAxODMsICAgMjAsICAxMDIsICAgMTEsICAxNTYsICAx
MTYsICAgODksCisgICAgICAgOTYsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMs
ICAxODMsICAxODMsICAxODMsCisgICAgICAxODMsICAxODMsICAxODMsICAxODMsICAxNTIsICAx
ODMsICAxODMsICAxODMsICAxMDAsICAxMDUsCisgICAgICAxMDMsICAxODMsICAxODMsICAxODMs
ICAxODMsICAxODMsICAxODMsICAxODMsICAxNDgsICAxMTcsCisKKyAgICAgICA5MCwgICA5NSwg
IDE4MywgIDE4MywgIDE2MywgIDE4MywgIDEwNCwgIDE4MywgIDE4MywgIDE4MywKKyAgICAgIDE4
MywgICAgNiwgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywK
KyAgICAgIDE4MywgICA5OSwgIDE1NywgICAgMSwgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4
MywgIDE4MywKKyAgICAgIDE4MSwgIDE4MywgIDExMiwgICAgNSwgIDE3NiwgICA2MCwgICA2Mywg
IDE4MywgIDE4MywgIDE4MywKKyAgICAgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4
MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywKKyAgICAgIDEwMSwgIDE4MywgIDE4MywgIDE4Mywg
IDE4MywgIDE4MywgIDE4MywgICA5NywgIDE4MywgIDE4MywKKyAgICAgIDE4MywgIDE4MywgIDE4
MywgIDEzMCwgICA2OCwgICA2OSwgIDE4MywgIDE4MywgIDE4MywgIDE4MywKKyAgICAgIDE4Mywg
IDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4MywKKyAg
ICAgIDExMCwgIDE4MywgIDE4MywgIDE4MywgICA5OCwgIDEzMiwgICA3MywgICA3NCwgIDE4Mywg
IDE4MywKKyAgICAgIDE4MywgIDE4MywgIDEwNiwgIDE4MywgIDE4MywgIDE4MywgIDE4MywgIDE4
MywgIDE4MywgIDE4MywKKworICAgICAgMTI1LCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgz
LCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLAorICAgICAgMTgzLCAgMTgzLCAgIDY3LCAgMTgzLCAg
MTgzLCAgMTgzLCAgMTgzLCAgIDYxLCAgMTgzLCAgMTgzLAorICAgICAgMTgzLCAgMTgzLCAgMTgz
LCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLAorICAgICAgMTgzLCAg
MTgzLCAgMTI2LCAgMTE4LCAgMTgzLCAgIDkxLCAgMTgzLCAgMTgzLCAgMTgzLCAgIDcyLAorICAg
ICAgMTgzLCAgMTgzLCAgIDcwLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAg
MTgzLAorICAgICAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTI3
LCAgMTgzLCAgMTgzLAorICAgICAgIDc3LCAgMTgzLCAgMTgzLCAgIDc1LCAgMTgzLCAgMTgzLCAg
MTE5LCAgIDkyLCAgMTgzLCAgMTIxLAorICAgICAgMTgzLCAgMTIyLCAgMTgzLCAgMTgzLCAgMTgz
LCAgMTgzLCAgMTgzLCAgMTgzLCAgMTA3LCAgMTgzLAorICAgICAgMTgzLCAgMTgzLCAgMTgzLCAg
IDY1LCAgMTgzLCAgIDY0LCAgMTM2LCAgMTgzLCAgMTgzLCAgMTIwLAorICAgICAgIDkzLCAgMTgz
LCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLCAgMTgzLAorCisgICAg
ICAxODMsICAxODMsICAxODMsICAxMzQsICAxMzcsICAxODMsICAxMjgsICAxODMsICAgNjYsICAx
ODMsCisgICAgICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxODMsICAxMzUs
ICAxMzgsICAxODMsCisgICAgICAxODMsICAxODMsICAxODMsICAxMzEsICAgNzEsICAxODMsICAx
ODMsICAxODMsICAxNzcsICAxODMsCisgICAgICAxODMsICAxODMsICAgNzgsICAxODMsICAxODMs
ICAxMzMsICAgNzYsICAxODMsICAxODMsICAxODMsCisgICAgICAxODMsICAxODMsICAxODMsICAx
ODMsICAxODMsICAxODMsICAxMzksICAxODMsICAxODMsICAxODMsCisgICAgICAxODMsICAxODMs
ICAxODMsICAxODMsICAxODMsICAxNDAsICAxODMsICAxODMsICAxODMsICAxODMsCisgICAgICAg
NzksICAxODMsICAxNDEsICAgODQsICAxODMsICAxMjMsICAxMjQsICAgODYsICAxODMsICAxODMs
CisgICAgICAxODMsICAgNjIsICAxODMsICAxODMsICAxODMsICAxNzgsICAxODMsICAxMjksICAg
ODAsICAxODMsCisgICAgICAxODMsICAxODMsICAxODMsICAgODEsICAgIDAKICAgICB9IDsKIAog
c3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQpAQCAtNTEwLDE1ICs1MTks
MTUgQEAgc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQogICAgICAgICAx
LCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLAog
ICAgICAgICAxLCAgICAyLCAgICA0LCAgICAxLCAgICAxLCAgICAxLCAgICA1LCAgICA2LCAgICAx
LCAgICA3LAogICAgICAgICA4LCAgICA5LCAgIDEwLCAgIDExLCAgIDEyLCAgIDEzLCAgIDE0LCAg
IDE1LCAgIDE2LCAgIDE3LAotICAgICAgIDE4LCAgIDE5LCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIx
LCAgIDIxLCAgIDIyLCAgIDIzLCAgIDI0LAotICAgICAgIDI1LCAgIDI2LCAgIDI3LCAgICAxLCAg
IDI4LCAgIDI5LCAgIDMwLCAgIDMxLCAgIDMyLCAgIDMzLAotICAgICAgIDM0LCAgIDM0LCAgIDM0
LCAgIDM0LCAgIDM0LCAgIDM0LCAgIDM1LCAgIDM0LCAgIDM2LCAgIDM0LAotICAgICAgIDM0LCAg
IDM3LCAgIDM4LCAgIDM0LCAgIDM5LCAgIDM0LCAgIDM0LCAgIDQwLCAgIDM0LCAgIDM0LAotICAg
ICAgIDQxLCAgICAxLCAgIDQyLCAgIDQzLCAgIDQ0LCAgICAxLCAgIDQ1LCAgIDQ2LCAgIDQ3LCAg
IDQ4LAotCi0gICAgICAgNDksICAgNTAsICAgNTEsICAgNTIsICAgNTMsICAgMzQsICAgNTQsICAg
NTUsICAgNTYsICAgNTcsCi0gICAgICAgNTgsICAgNTksICAgMzQsICAgNjAsICAgNjEsICAgNjIs
ICAgNjMsICAgNjQsICAgNjUsICAgNjYsCi0gICAgICAgNjcsICAgNjgsICAgNjksICAgNzAsICAg
NzEsICAgNzIsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCisgICAgICAgMTgsICAgMTksICAgMjAs
ICAgMjEsICAgMjIsICAgMjMsICAgMjQsICAgMjUsICAgMjYsICAgMjcsCisgICAgICAgMjgsICAg
MjksICAgMzAsICAgIDEsICAgMzEsICAgMzIsICAgMzMsICAgMzQsICAgMzUsICAgMzYsCisgICAg
ICAgMzcsICAgMzcsICAgMzcsICAgMzcsICAgMzcsICAgMzcsICAgMzgsICAgMzcsICAgMzksICAg
MzcsCisgICAgICAgMzcsICAgNDAsICAgNDEsICAgNDIsICAgNDMsICAgMzcsICAgMzcsICAgNDQs
ICAgNDUsICAgMzcsCisgICAgICAgNDYsICAgIDEsICAgNDcsICAgNDgsICAgNDksICAgIDEsICAg
NTAsICAgNTEsICAgNTIsICAgNTMsCisKKyAgICAgICA1NCwgICA1NSwgICA1NiwgICA1NywgICA1
OCwgICAzNywgICA1OSwgICA2MCwgICA2MSwgICA2MiwKKyAgICAgICA2MywgICA2NCwgICAzNywg
ICA2NSwgICA2NiwgICA2NywgICA2OCwgICA2OSwgICA3MCwgICA3MSwKKyAgICAgICA3MiwgICA3
MywgICA3NCwgICA3NSwgICA3NiwgICA3NywgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwKQEAgLTUzNSwzMzIgKzU0NCwzNTcgQEAgc3RhdGljIHl5Y29u
c3QgZmxleF9pbnQzMl90IHl5X2VjWzI1Nl0gPQogICAgICAgICAxLCAgICAxLCAgICAxLCAgICAx
LCAgICAxCiAgICAgfSA7CiAKLXN0YXRpYyB5eWNvbnN0IGZsZXhfaW50MzJfdCB5eV9tZXRhWzcz
XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfbWV0YVs3OF0gPQogICAgIHsgICAw
LAotICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLAotICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAyLCAgICAyLCAgICAy
LCAgICAyLCAgICAyLCAgICAyLAotICAgICAgICAyLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAg
ICAxLCAgICAxLCAgICAzLCAgICAzLCAgICAzLAotICAgICAgICAzLCAgICAyLCAgICAyLCAgICA0
LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LAotICAgICAgICAxLCAgICAxLCAg
ICAxLCAgICA0LCAgICAzLCAgICAzLCAgICAzLCAgICAzLCAgICAyLCAgICAyLAotICAgICAgICA0
LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LAot
ICAgICAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICA0LCAgICAx
LCAgICAxLAotICAgICAgICAxLCAgICAxCisgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDIsCisgICAgICAgIDEsICAgIDIsICAgIDMs
ICAgIDEsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsICAgIDQsCisgICAgICAgIDQsICAg
IDQsICAgIDQsICAgIDQsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCisgICAg
ICAgIDUsICAgIDUsICAgIDUsICAgIDUsICAgIDYsICAgIDcsICAgIDgsICAgIDgsICAgIDgsICAg
IDgsCisgICAgICAgIDgsICAgIDgsICAgIDksICAgIDgsICAgIDgsICAgIDEsICAgIDEsICAgIDEs
ICAgIDgsICAgIDUsCisgICAgICAgIDUsICAgIDUsICAgIDUsICAgIDYsICAgIDcsICAgIDgsICAg
IDgsICAgIDgsICAgIDgsICAgIDgsCisgICAgICAgIDgsICAgIDgsICAgIDgsICAgIDgsICAgIDgs
ICAgIDgsICAgIDgsICAgIDksICAgIDgsICAgIDgsCisgICAgICAgIDgsICAgIDgsICAgIDgsICAg
IDEsICAgIDEsICAgIDEsICAgIDEKICAgICB9IDsKIAotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQx
Nl90IHl5X2Jhc2VbODI1XSA9CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfYmFzZVs4
OTVdID0KICAgICB7ICAgMCwKLSAgICAgICAgMCwgICAgMCwgICA3MiwgICAgMCwgMTAxNiwgMTAx
NywgMTAxNywgMTAxNywgIDk5MCwgIDEyMCwKLSAgICAgIDE0MSwgMTAxNywgMTAxNywgIDk4OSwg
IDEzOCwgMTAxNywgIDEzNywgIDEzNSwgIDk4OCwgIDE1NCwKLSAgICAgIDIwOCwgIDk4NiwgMTAx
NywgIDE1NCwgIDk4NiwgIDEzMiwgMTAxNywgICAgMCwgMTAxNywgMTAxNywKLSAgICAgIDEzOSwg
IDEzMCwgIDEyMywgIDE0MCwgIDE0NywgIDEzMywgIDE3NywgIDk1MiwgIDE4NiwgIDE1MSwKLSAg
ICAgIDEzOSwgIDExNiwgIDE2MSwgIDk0NiwgIDE3MywgIDk1OSwgIDE5MywgIDE5OSwgIDIwOCwg
IDIxNSwKLSAgICAgIDEwOCwgMTAxNywgIDE4NCwgMTAxNywgMTAxNywgMTAxNywgMTAxNywgMTAx
NywgICAgMCwgMTAxNywKLSAgICAgMTAxNywgMTAxNywgMTAxNywgMTAxNywgMTAxNywgMTAxNywg
MTAxNywgMTAxNywgMTAxNywgIDIzMCwKLSAgICAgMTAxNywgIDIzNSwgIDIzNSwgICAgMCwgIDI3
MSwgMTAxNywgICAgMCwgMTAxNywgMTAxNywgMTAxNywKLSAgICAgIDk4MiwgMTAxNywgMTAxNywg
MTAxNywgIDk4MSwgICAgMCwgMTAxNywgMTAxNywgIDk0MywgIDk0OCwKLSAgICAgIDE1MiwgIDk0
NSwgIDk1MywgIDk1MiwgIDkzOSwgIDk0MiwgIDk1MywgIDI0MywgIDk0NywgIDkzNSwKLQotICAg
ICAgOTMyLCAgOTQ1LCAgOTMyLCAgOTI5LCAgOTI5LCAgOTM1LCAgMTQ3LCAgMjQ4LCAgOTI5LCAg
OTM5LAotICAgICAgOTI1LCAgOTMxLCAgOTM0LCAgOTM1LCAgICAwLCAgOTI3LCAgOTM3LCAgMjQ5
LCAgOTM2LCAgOTMxLAotICAgICAgOTEyLCAgMTc3LCAgOTE2LCAgOTI5LCAgOTIwLCAgMTg0LCAg
OTEzLCAgMjUwLCAgOTI1LCAgOTI3LAotICAgICAgMjU3LCAgOTE2LCAgOTEzLCAgOTAyLCAgOTEx
LCAgMjQ5LCAgMjU3LCAgOTE1LCAgOTExLCAgOTEzLAotICAgICAgOTAyLCAgOTA1LCAgMTk2LCAg
MjE3LCAgMjY5LCAgOTE0LCAgOTAyLCAgOTE0LCAgMjYyLCAgOTA3LAotICAgICAgOTA2LCAxMDE3
LCAxMDE3LCAgICAwLCAgMzExLCAxMDE3LCAgMjkyLCAgMzI4LCAxMDE3LCAxMDE3LAotICAgICAg
MzM1LCAgMzQyLCAgMjU3LCAxMDE3LCAxMDE3LCAgOTA1LCAgICAwLCAgOTAxLCAgODk2LCAgOTAw
LAotICAgICAgOTA5LCAgOTA2LCAgMzE1LCAgODkwLCAgODkwLCAgOTAxLCAgODkzLCAgMjE1LCAg
OTAzLCAgOTAwLAotICAgICAgOTAwLCAgODk4LCAgODk1LCAgODg3LCAgODkzLCAgODgwLCAgODc4
LCAgODkwLCAgODc2LCAgODkyLAotICAgICAgICAwLCAgODg5LCAgODc3LCAgODg0LCAgODgxLCAg
ODg1LCAgODg2LCAgODc5LCAgODc2LCAgODY1LAotCi0gICAgICA4NjQsICA4NzcsICA4ODAsICA4
NjgsICA4NzYsICA4NjQsICA4NzAsICA4NjEsICAzMTYsICA4NjYsCi0gICAgICA4NjksICA4NjAs
ICA4NjcsICA4NTYsICA4NjAsICA4NTEsICA4NjUsICA4NjQsICA4NTUsICA4NjEsCi0gICAgICAz
MDcsICA4NDUsICA4NDgsICA4NDYsICA4NTYsICA4NDYsICA4NDEsICA4MzksICA4NDEsICA4NTEs
Ci0gICAgICA4MzcsICA4MzksICA4MzYsICA4NDcsICA4NDYsICA4NDksICA4MzEsICAzMTYsICA4
MzksICA4MzUsCi0gICAgICA4MzMsICA4NDIsICA4MjEsICAzNTMsICA4MzksICA4NDEsICA4MzAs
ICA4MjIsICAzNjMsICAzNzAsCi0gICAgICAzNzgsICAzODksIDEwMTcsIDEwMTcsICA4MTksICA4
MjksICA4MjgsICAgIDAsICA4MjYsICAzODMsCi0gICAgICAgIDAsICAgIDAsICA4MTksICA4MTcs
ICA4MTcsICA4MTgsICA4MTMsICA4MjEsICA4MTAsICA4MjcsCi0gICAgICA4MTYsICAzOTQsICAg
IDAsICAgIDAsICA4MTAsICA4MjAsICA4MTksICA4MTksICAgIDAsICA4MDQsCi0gICAgICAzOTcs
ICAgIDAsICAgIDAsICA4MDYsICA0MDAsICA4MTMsICA4MTQsICA4MDUsICA3OTksICA3OTgsCi0g
ICAgICA3OTksICA3OTgsICA3OTgsICA0MDYsICA3OTMsICAgIDAsICAgIDAsICA3ODksICA3ODgs
ICA3ODcsCi0KLSAgICAgIDc4OSwgIDc5MCwgIDc5NSwgIDc4OSwgIDc4NSwgIDc5OCwgIDc5Mywg
IDc5MywgIDc5MSwgIDc5MCwKLSAgICAgIDc4NCwgIDc3OCwgIDc4MCwgIDc3OSwgIDc4MywgIDc3
NSwgIDc3OCwgIDc3MywgIDc4MSwgIDc4NiwKLSAgICAgIDc3NCwgIDc3MSwgIDc4MywgIDc3NCwg
ICAgMCwgICAgMCwgIDc4MCwgIDc3NiwgICAgMCwgIDc2OCwKLSAgICAgIDc2OCwgIDc3MywgIDc2
NCwgIDc3MSwgIDQwOSwgIDc2OCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwKLSAgICAgIDc1OCwg
IDc3MCwgIDc2OSwgIDc2OCwgIDc2OSwgIDc2OSwgICAgMCwgICAgMCwgICAgMCwgICAgMCwKLSAg
ICAgIDc1NiwgICAgMCwgIDc2NCwgIDc1NSwgICAgMCwgIDc1NCwgIDc1NSwgIDc0OSwgIDc1OSwg
ICAgMCwKLSAgICAgICAgMCwgICAgMCwgIDc1MCwgICAgMCwgIDc0NiwgICAgMCwgICAgMCwgICAg
MCwgICAgMCwgICAgMCwKLSAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgIDc1NiwgIDQxMywg
IDc1NSwgICAgMCwgICAgMCwgIDc1MywKLSAgICAgIDc0OSwgIDc0NiwgICAgMCwgICAgMCwgICAg
MCwgIDczOCwgIDQxNSwgIDQxOCwgIDQyNywgIDc0MywKLSAgICAgIDczOSwgIDc0NCwgIDczNSwg
IDczMywgIDc0NiwgIDczMSwgICAgMCwgIDczMSwgIDc0NCwgIDczMywKLQotICAgICAgNzI5LCAg
NzM1LCAgNzMwLCAgNzM3LCAgICAwLCAgNzM1LCAgNzMyLCAgNzM2LCAgNzIwLCAgNzE4LAotICAg
ICAgNzIxLCAgNzI3LCAgNzMzLCAgNzI4LCAgNzI3LCAgNzE1LCAgICAwLCAgNzE3LCAgNzE4LCAg
ICAwLAotICAgICAgICAwLCAgICAwLCAgICAwLCAgNzE1LCAgNzE4LCAgICAwLCAgNzEyLCAgICAw
LCAgNzI1LCAgNzA1LAotICAgICAgNzE0LCAgNzA5LCAgICAwLCAgNzAyLCAgNzAyLCAgNzE1LCAg
ICAwLCAgNzE3LCAgICAwLCAgNDMxLAotICAgICAgNzMwLCAgNzI5LCAgNzI4LCAgNjk1LCAgNjk0
LCAgICAwLCAgNzExLCAgNzEwLCAgNzA1LCAgICAwLAotICAgICAgICAwLCAgICAwLCAgICAwLCAg
ICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgNjk0LAotICAgICAgNzA3LCAgNjk0
LCAgNjkxLCAgICAwLCAgICAwLCAgNjk2LCAgNjk1LCAgICAwLCAgNjkyLCAgNjk5LAotICAgICAg
Njk4LCAgICAwLCAgNjg0LCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgNjgxLCAgICAwLCAgICAw
LAotICAgICAgNjgwLCAgNjkxLCAgNDM0LCAgNjg0LCAgNjkwLCAgNjg5LCAgNjg2LCAgNjgxLCAg
Njc4LCAgNjcxLAotICAgICAgNjcxLCAgNjg0LCAgNjY5LCAgNjgxLCAgICAwLCAgICAwLCAgNjc0
LCAgNjk3LCAgNjk2LCAgNjk1LAotCi0gICAgICA2NjIsICA2NjEsICA0MjcsICA0MjgsICAgIDAs
ICA2NzMsICA2NzYsICA2NzQsICA2NjMsICA2NTksCi0gICAgICAgIDAsICA2NzEsICA2NjgsICA2
NjcsICA2NTcsICA2NTYsICA2NDYsICA2NjMsICA2NDksICA0NDEsCi0gICAgICA2NTcsICA2NjAs
ICAgIDAsICA2NzcsICA2NzYsICA2NzUsICA2NDIsICA2NDEsICAgIDAsICA2NTUsCi0gICAgICA2
NDIsICAgIDAsICA2NTIsICA2NDUsICA2NDYsICA2NDksICAgIDAsICAgIDAsICAgIDAsICAgIDAs
Ci0gICAgICA2NjksICA2NjgsICAgIDAsICA2NDUsICA2NDgsICA2MzMsICA2NDAsICA2MzEsICA2
MzgsICA2MzksCi0gICAgICA2MzksICA2MzgsICA2MjQsICA0NTEsICA2MzYsICAgIDAsICA2Mzcs
ICA2MjYsICA2MjUsICAgIDAsCi0gICAgICAgIDAsICAgIDAsICA2NTAsICA2NDksICA2NDgsICA2
MTUsICA2MTQsICA2MTAsICA2MTgsICAgIDAsCi0gICAgICA2NDYsICA2NDUsICAgIDAsICA2MjIs
ICA2MjUsICAgIDAsICA0NTgsICAgIDAsICA2MDMsICA2MTIsCi0gICAgICAgIDAsICA2MDgsICA2
MDcsICA2MTYsICA2MTYsICA2MDQsICA2MTgsICA2MDIsICA2MTYsICA2MTEsCi0gICAgICAgIDAs
ICAgIDAsICAgIDAsICA2MjgsICA2MjcsICA2MjYsICA1OTMsICA1OTIsICAgIDAsICA1OTIsCi0K
LSAgICAgICAgMCwgICAgMCwgIDQzNCwgIDQ1NCwgIDYxNiwgIDYwMiwgIDYwNSwgIDU4OCwgIDYw
MCwgIDU4OCwKLSAgICAgIDU4NywgIDU5NiwgIDU5NiwgIDYxMywgIDYxMiwgIDYxMSwgIDU3OCwg
IDU3NywgICAgMCwgIDU3NywKLSAgICAgIDU3OCwgIDU3NywgIDU4NywgICAgMCwgIDU5MCwgIDU4
NiwgIDU4OCwgIDU4NCwgIDU3MSwgIDYwMiwKLSAgICAgIDQ0OSwgICAgMCwgIDU3OSwgIDU4Miwg
IDU3NCwgIDU2NiwgIDU3MywgIDU2NCwgIDU4NSwgIDU3MywKLSAgICAgIDU2OSwgIDU3MSwgIDU2
OSwgIDU2OSwgIDU2OCwgICAgMCwgIDU1NiwgIDU1NSwgIDU2NSwgICAgMCwKLSAgICAgIDU4NSwg
IDQ2MiwgICAgMCwgIDU2MiwgIDU2NSwgICAgMCwgIDU2NSwgIDU2NCwgIDU0OCwgIDU0MCwKLSAg
ICAgIDU0OCwgIDUzOCwgIDU0NiwgICAgMCwgIDU0MywgIDU0MiwgIDU2MywgIDU1MSwgIDU0OSwg
IDU0OSwKLSAgICAgIDUzMywgIDUzNiwgIDU1MCwgIDUzNCwgIDU2NSwgIDU0NSwgIDU0NiwgIDU0
MywgIDU0MCwgIDU1MCwKLSAgICAgIDUyNywgIDU0MSwgIDU0MCwgIDUyNCwgIDUyMywgIDUyMiwg
IDU0MywgIDUzMSwgIDUyOSwgIDUyOSwKLSAgICAgIDUxMCwgIDUwOSwgICAgMCwgIDUzNywgIDUw
OSwgIDUzNSwgIDUwNywgIDUxMSwgIDUxMCwgIDU0MSwKLQotICAgICAgNTIxLCAgNTE4LCAgICAw
LCAgNTE3LCAgNTIwLCAgNTE2LCAgNTE4LCAgNTAyLCAgNDk5LCAgNTEyLAotICAgICAgNDk3LCAg
NDk4LCAgNTA1LCAgNDk5LCAgNDg4LCAgNDg3LCAgICAwLCAgNDkzLCAgNDkyLCAgNTIzLAotICAg
ICAgNTAzLCAgNTAwLCAgICAwLCAgICAwLCAgICAwLCAgNDk2LCAgICAwLCAgNDk1LCAgICAwLCAg
NTAxLAotICAgICAgNTAwLCAgNDg0LCAgNDgxLCAgNDgyLCAgICAwLCAgNDc0LCAgNDgyLCAgNDcy
LCAgNDc4LCAgNDk5LAotICAgICAgNDc4LCAgICAwLCAgICAwLCAgNDkwLCAgNDg5LCAgICAwLCAg
ICAwLCAgNDg4LCAgNDg3LCAgNDcxLAotICAgICAgNDY4LCAgNDY5LCAgNDgzLCAgNDgyLCAgNDU5
LCAgNDU4LCAgNDY0LCAgICAwLCAgICAwLCAgNDg1LAotICAgICAgNDU3LCAgNDgzLCAgNDc1LCAg
NDY3LCAgNDUzLCAgMTMyLCAgMTYxLCAgMTc3LCAgMjE1LCAgMjQ1LAotICAgICAgICAwLCAgICAw
LCAgMjg4LCAgMjg5LCAgICAwLCAgICAwLCAgMjk0LCAgMzE1LCAgICAwLCAgMzE2LAotICAgICAg
MzA2LCAgMzMxLCAgICAwLCAgMzYzLCAgNDAyLCAgICAwLCAgICAwLCAgMzk1LCAgMzgzLCAgMzk1
LAotICAgICAgMzg3LCAgNDMzLCAgNDM0LCAgICAwLCAgNDM1LCAgNDIwLCAgNDYxLCAgNDI3LCAg
NDMwLCAgNDMxLAotCi0gICAgICAgIDAsICA0NTAsICA0NTIsICA0NDMsICAgIDAsICA0NjQsICAg
IDAsICAgIDAsICAgIDAsICA0NDUsCi0gICAgICA0NDYsICA0NDAsICAgIDAsICA0NDEsICA0NDIs
ICAgIDAsICAgIDAsICAgIDAsIDEwMTcsICA1MDYsCi0gICAgICA1MDksICA1MTIsICA1MTMsICA1
MTQKKyAgICAgICAgMCwgICAgMCwgICA3NywgICAgMCwgMTA4OSwgMTA5MCwgMTA5MCwgMTA5MCwg
MTA2MCwgIDEyNywKKyAgICAgIDE1MSwgMTA5MCwgMTA5MCwgMTA1OSwgIDE0OCwgMTA5MCwgIDE0
NywgIDE0NSwgMTA1OCwgIDE2NywKKyAgICAgIDE1OCwgMTA1NiwgMTA5MCwgIDE2NywgMTA1Niwg
IDE0NSwgMTA5MCwgICAgMCwgMTA5MCwgMTA5MCwKKyAgICAgIDE0OSwgMTAzNCwgIDE0NywgIDEz
NSwgIDE1NSwgIDE2MiwgIDE0NiwgIDE3NCwgMTAxOSwgIDE3MiwKKyAgICAgIDE3OCwgIDE3OSwg
IDE1MywgIDE5NiwgMTAxMywgIDE5OCwgMTAyNiwgIDIwMCwgIDE5NywgIDIxMywKKyAgICAgIDIw
MiwgIDExMywgMTAxMSwgMTA5MCwgIDE1MywgMTA5MCwgMTA5MCwgMTA5MCwgMTA5MCwgMTA5MCwK
KyAgICAgICAgMCwgMTA5MCwgMTA5MCwgMTA5MCwgMTA5MCwgMTA5MCwgMTA5MCwgMTA5MCwgMTA5
MCwgMTA5MCwKKyAgICAgMTA5MCwgIDIzNywgMTA5MCwgIDI0MSwgIDIzNywgIDI3MSwgIDI0Mywg
MTA5MCwgICAgMCwgMTA5MCwKKyAgICAgMTA5MCwgMTA5MCwgMTA1MCwgMTA5MCwgMTA5MCwgMTA5
MCwgMTA0OSwgICAgMCwgMTA5MCwgMTA5MCwKKyAgICAgMTAxMCwgMTAwOCwgMTAxMywgIDE1Niwg
MTAxMCwgMTAxOCwgMTAxNywgMTAwNCwgMTAwNywgMTAxOCwKKworICAgICAgMjI2LCAxMDEyLCAx
MDAwLCAgOTk3LCAxMDEwLCAgOTk3LCAgOTk0LCAgOTk0LCAxMDAwLCAgMTg5LAorICAgICAgMjM1
LCAgOTk0LCAxMDA0LCAgOTkwLCAgOTk2LCAgOTk5LCAxMDAwLCAgICAwLCAgOTkyLCAxMDAyLAor
ICAgICAgMjMwLCAxMDAxLCAgOTgyLCAgOTk1LCAgOTc2LCAgMjE2LCAgOTgwLCAgOTkzLCAgOTg0
LCAgMjQzLAorICAgICAgOTc3LCAgMjM3LCAgOTg5LCAgOTkxLCAgMjUwLCAgOTgwLCAgMjU5LCAg
OTY3LCAgOTc2LCAgMjUzLAorICAgICAgMjU5LCAgOTgwLCAgOTc2LCAgOTc4LCAgOTY3LCAgOTcw
LCAgMjUwLCAgMjU1LCAgMjY5LCAgOTc5LAorICAgICAgOTY3LCAgOTc5LCAgMjY2LCAgOTcyLCAg
OTcxLCAgOTU5LCAxMDkwLCAxMDkwLCAgICAwLCAgMzE4LAorICAgICAxMDkwLCAgMjk2LCAgMzIz
LCAxMDkwLCAxMDkwLCAgMzI1LCAgMzI0LCAgMjg2LCAxMDkwLCAxMDkwLAorICAgICAgOTc3LCAg
OTY4LCAgICAwLCAgOTY0LCAgOTU5LCAgOTYzLCAgOTcyLCAgOTY5LCAgMjk4LCAgOTUzLAorICAg
ICAgOTUzLCAgOTY0LCAgOTU2LCAgMjcxLCAgOTY2LCAgOTYzLCAgOTYzLCAgOTYxLCAgOTU4LCAg
OTUwLAorICAgICAgOTU2LCAgOTQzLCAgOTQxLCAgOTUzLCAgOTM5LCAgOTU1LCAgICAwLCAgOTUy
LCAgOTQwLCAgOTQ3LAorCisgICAgICA5NDQsICA5NDgsICA5NDksICA5NDIsICA5MzksICA5Mjgs
ICA5MjcsICA5NDAsICA5NDMsICA5MzEsCisgICAgICA5NDIsICA5MzgsICA5MjYsICA5MzIsICA5
MjMsICAzMzgsICA5MjgsICA5MzEsICA5MjIsICA5MjksCisgICAgICA5MTgsICA5MjIsICA5MTMs
ICA5MjcsICA5MjYsICA5MTcsICA5MjMsICAyOTUsICA5MDcsICA5MTAsCisgICAgICA5MDgsICA5
MDcsICA5MTcsICA5MDcsICA5MDIsICA5MDAsICA5MDIsICA5MTIsICA4OTgsICA5MDAsCisgICAg
ICA4OTcsICA5MDgsICA5MDcsICA5MTAsICA4OTIsICAyOTgsICA5MDAsICA4OTYsICA4OTQsICA5
MDMsCisgICAgICA4ODIsICAzNDksICA5MDAsICA5MDIsICA4OTEsICA4ODMsICA5MTYsICAzNTQs
ICAzNzAsICAzNjgsCisgICAgICAzODMsIDEwOTAsIDEwOTAsICA4ODcsICA4NzgsICA4ODgsICA4
ODcsICAgIDAsICA4ODUsICAzNzksCisgICAgICAgIDAsICAgIDAsICA4NzgsICA4NzYsICA4NzYs
ICA4NzcsICA4NzIsICA4ODAsICA4NjksICA4ODYsCisgICAgICA4NzUsICAzODIsICAgIDAsICAg
IDAsICA4NjksICA4NzksICA4NzgsICA4NzgsICAgIDAsICA4NjMsCisgICAgICAzODUsICAgIDAs
ICAgIDAsICA4NjUsICAzOTAsICA4NzIsICA4NzMsICA4NjQsICA4NTgsICA4NTcsCisKKyAgICAg
IDg1OCwgIDg1NywgIDg1NywgIDM0MiwgIDM5MywgIDg1MiwgICAgMCwgICAgMCwgIDg0OCwgIDg0
NywKKyAgICAgIDg0NiwgIDg0OCwgIDg0OSwgIDg1NCwgIDg0OCwgIDg0NCwgIDg1NywgIDg1Miwg
IDg1MiwgIDg1MCwKKyAgICAgIDg0OSwgIDg0MywgIDgzNywgIDgzOSwgIDgzOCwgIDg0MiwgIDg0
NywgIDgzMywgIDgzNiwgIDgzMSwKKyAgICAgIDgzOSwgIDg0NCwgIDgzMiwgIDgyOSwgIDg0MSwg
IDgzMiwgICAgMCwgICAgMCwgIDgzOCwgIDgzNCwKKyAgICAgICAgMCwgIDgyNiwgIDgyNiwgIDgz
MSwgIDgyMiwgIDgyOSwgIDM5NiwgIDgyNiwgICAgMCwgICAgMCwKKyAgICAgICAgMCwgICAgMCwg
IDgxNiwgIDgyOCwgIDgyNywgIDgxNCwgIDgxNSwgIDgyNCwgIDgyNSwgIDgyNSwKKyAgICAgICAg
MCwgICAgMCwgICAgMCwgICAgMCwgIDgxMiwgICAgMCwgIDgyMCwgIDgxMSwgICAgMCwgIDgxMCwK
KyAgICAgIDgxMSwgIDgwNSwgIDgxNSwgICAgMCwgICAgMCwgICAgMCwgIDgwNiwgICAgMCwgIDgw
MiwgICAgMCwKKyAgICAgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwgICAgMCwg
ICAgMCwgIDgxMiwgIDQwMCwKKyAgICAgIDgxMSwgICAgMCwgICAgMCwgIDgwOSwgIDgwNSwgIDgw
MiwgIDg0NiwgIDg0NSwgICAgMCwgICAgMCwKKworICAgICAgICAwLCAgNzkyLCAgNDAzLCAgNDA5
LCAgNDEyLCAgNzk3LCAgNzkzLCAgNzk4LCAgNzg5LCAgNzg3LAorICAgICAgODAwLCAgNzg1LCAg
ICAwLCAgNzg1LCAgNzk4LCAgNzg3LCAgNzgzLCAgNzg5LCAgNzg0LCAgNzkxLAorICAgICAgNzkx
LCAgICAwLCAgNzg4LCAgNzg1LCAgNzg5LCAgNzczLCAgNzcxLCAgNzc0LCAgNzgwLCAgNzg2LAor
ICAgICAgNzgxLCAgNzgwLCAgNzY4LCAgICAwLCAgNzcwLCAgNzcxLCAgICAwLCAgICAwLCAgICAw
LCAgICAwLAorICAgICAgNzY4LCAgNzcxLCAgICAwLCAgNzY1LCAgNzc1LCAgNzY2LCAgICAwLCAg
Nzc2LCAgNzU2LCAgNzY1LAorICAgICAgNzYwLCAgICAwLCAgNzUzLCAgNzUzLCAgNzY2LCAgICAw
LCAgNzY4LCAgICAwLCAgNDE4LCAgNzgzLAorICAgICAgNzgyLCAgNzgxLCAgNzQ2LCAgNzQ1LCAg
ICAwLCAgNzYyLCAgNzYxLCAgNzU2LCAgNzkzLCAgNzg0LAorICAgICAgICAwLCAgICAwLCAgICAw
LCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLAorICAgICAgNzQzLCAg
NzU2LCAgNzQzLCAgNzQwLCAgICAwLCAgICAwLCAgNzQ1LCAgNzQ0LCAgICAwLCAgNzQxLAorICAg
ICAgNzQ4LCAgNzQ3LCAgICAwLCAgNzMzLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAg
NzMwLAorCisgICAgICAgIDAsICAgIDAsICA3MjksICA3NDAsICA0MjMsICA3MzMsICA3MzksICA3
MzgsICA3MzUsICA3MzAsCisgICAgICA3MjcsICA3NDcsICA3MzMsICA3MTgsICA3MTgsICA3MzEs
ICA3MTYsICA3MjgsICAgIDAsICAgIDAsCisgICAgICA3MjEsICA3NDYsICA3NDUsICA3NDQsICA3
MDksICA3MDgsICAyMzMsICA0MDYsICAgIDAsICA3MjAsCisgICAgICA3MjMsICA3MjEsICA3MTAs
ICA3MDYsICA3MjEsICAgIDAsICAgIDAsICA3MTcsICA3MTQsICA3MTMsCisgICAgICA3MDMsICA3
MDIsICA2OTIsICA3MDksICA2OTUsICA0MjYsICA3MDMsICA3MDYsICAgIDAsICA3MjUsCisgICAg
ICA3MjQsICA3MjMsICA2ODgsICA2ODcsICAgIDAsICA3MDEsICA2ODgsICAgIDAsICA2OTgsICA2
OTEsCisgICAgICA2ODMsICA2ODQsICA2OTAsICA2OTMsICAgIDAsICAgIDAsICAgIDAsICAgIDAs
ICA3MTUsICA3MTQsCisgICAgICAgIDAsICA2ODksICA2OTIsICA2NzcsICA2ODQsICA2NzUsICA2
ODIsICA2ODMsICA2ODMsICA2ODIsCisgICAgICA2NjgsICA0MzYsICA2NzksICA2NzksICAgIDAs
ICA2ODAsICA2NjksICA2NjgsICAgIDAsICAgIDAsCisgICAgICAgIDAsICA2OTUsICA2OTQsICA2
OTMsICA2NTgsICA2NTcsICA2NTMsICA2NjEsICAgIDAsICA2OTEsCisKKyAgICAgIDY5MCwgICAg
MCwgIDY2NSwgIDY2OCwgICAgMCwgIDQ0NiwgICAgMCwgIDY0NiwgIDY2NywgIDY4MSwKKyAgICAg
IDY1MywgICAgMCwgIDY0OSwgIDY0OCwgIDY1NywgIDY1NywgIDY0NSwgIDY1OSwgIDY0MywgIDY1
NywKKyAgICAgIDY1MiwgICAgMCwgICAgMCwgICAgMCwgIDY3MSwgIDY3MCwgIDY2OSwgIDYzNCwg
IDYzMywgIDYzMiwKKyAgICAgICAgMCwgIDYzMiwgICAgMCwgICAgMCwgIDQyNiwgIDQzNCwgIDY1
OCwgIDY0MiwgIDY0NSwgIDYyOCwKKyAgICAgIDY0MCwgIDYyOCwgIDYyNywgIDYzNiwgIDYzNiwg
IDY1NSwgIDY1NCwgIDY1MywgIDYxOCwgIDYxNywKKyAgICAgICAgMCwgIDYyMiwgIDYxMiwgIDYx
NSwgIDYxNiwgIDYxNSwgIDYyNSwgICAgMCwgIDYyOCwgIDYyNCwKKyAgICAgIDYyNiwgIDYyMiwg
IDYwOSwgIDY0MiwgIDQ0MiwgICAgMCwgIDYxNywgIDYyMCwgIDYxMCwgIDYxMSwKKyAgICAgIDYw
MywgIDYxMCwgIDYwMSwgIDYyNCwgIDYxMCwgIDYwNiwgIDYwOCwgIDYwNiwgIDYwNiwgIDYwNSwK
KyAgICAgICAgMCwgIDU5MywgIDU5MiwgIDYwMiwgICAgMCwgIDYyNCwgIDQ0NSwgICAgMCwgIDU5
OSwgIDYwMiwKKyAgICAgIDU5OSwgIDU4NCwgICAgMCwgIDYwMCwgIDU5OSwgIDU4MywgIDU3NSwg
IDU4MywgIDU3MywgIDU4MSwKKworICAgICAgICAwLCAgNTc4LCAgNTc3LCAgNjAwLCAgNTg2LCAg
NTg0LCAgNTg0LCAgNTc3LCAgNTY3LCAgNTcwLAorICAgICAgNTg0LCAgNTY4LCAgNjAxLCAgNTc5
LCAgNTgwLCAgNTc3LCAgNTc0LCAgNTg2LCAgNTYxLCAgNTc1LAorICAgICAgNTc0LCAgNTU4LCAg
NTU3LCAgNTU2LCAgNTc5LCAgNTY1LCAgNTYzLCAgNTYzLCAgNTY2LCAgNTYxLAorICAgICAgNTQy
LCAgNTQxLCAgICAwLCAgNTcxLCAgNTQxLCAgNTY5LCAgNTM5LCAgNTQzLCAgNTQyLCAgNTc1LAor
ICAgICAgNTUzLCAgNTUwLCAgICAwLCAgNTU0LCAgNTQ4LCAgNTUxLCAgNTQ3LCAgNTQ5LCAgNTMy
LCAgNTI3LAorICAgICAgNTM0LCAgNTE2LCAgNTE0LCAgNTA3LCAgNTAxLCAgNDg5LCAgMTI0LCAg
ICAwLCAgMTYyLCAgMjUwLAorICAgICAgMjg5LCAgMzA3LCAgMzI3LCAgICAwLCAgMzI5LCAgMzQw
LCAgICAwLCAgICAwLCAgMzY2LCAgICAwLAorICAgICAgMzY3LCAgICAwLCAgMzk1LCAgMzk2LCAg
MzgzLCAgMzgyLCAgMzk1LCAgNDAxLCAgICAwLCAgMzk4LAorICAgICAgNDA4LCAgNDA1LCAgNDE2
LCAgNDQzLCAgNDIzLCAgICAwLCAgICAwLCAgNDM3LCAgNDM4LCAgICAwLAorICAgICAgICAwLCAg
NDM5LCAgNDQwLCAgNDI2LCAgNDI1LCAgNDI4LCAgNDQxLCAgNDMzLCAgNDQ2LCAgNDQ3LAorCisg
ICAgICA0MjYsICA0MjcsICA0MzUsICAgIDAsICAgIDAsICA0NTEsICA0NjEsICA0MzMsICA0NjMs
ICA0NTUsCisgICAgICA0NDksICA0MzcsICA0NTUsICA0NDksICA0MzgsICA0MzksICA0NDcsICAg
IDAsICAgIDAsICA0NzgsCisgICAgICA0NjQsICA0NjIsICA0NjMsICAgIDAsICAgIDAsICA0Njcs
ICA0NTYsICA0NjIsICAgIDAsICA0NjMsCisgICAgICA0NDksICA0NzIsICAgIDAsICA0NjAsICA0
ODUsICAgIDAsICAgIDAsICA0NzUsICA0ODIsICA0NjcsCisgICAgICA0NjUsICA0NjYsICA0NTgs
ICA0NzUsICA0ODIsICA0ODMsICAgIDAsICA0ODEsICA0NjUsICA1MDEsCisgICAgICA0NjUsICA0
OTYsICA1MjIsICA0NzAsICA0NzEsICAgIDAsICA0ODgsICA0OTAsICA0OTEsICA0ODIsCisgICAg
ICAgIDAsICA1MDUsICAgIDAsICAgIDAsICA1MTMsICAgIDAsICAgIDAsICAgIDAsICA0ODUsICA0
ODYsCisgICAgICA0ODAsICAgIDAsICA1MDYsICA0ODIsICA0ODMsICAgIDAsICA1MzcsICAgIDAs
ICAgIDAsICA1MTAsCisgICAgICA1MjEsICA1MTMsICA1MTYsICAgIDAsIDEwOTAsICA1NTYsICA1
NjIsICA1NjgsICA1NzQsICA1NzgsCisgICAgICA1ODQsICA1ODUsICA1OTEsICA1OTQKKwogICAg
IH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfZGVmWzgyNV0gPQorc3RhdGlj
IHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2RlZls4OTVdID0KICAgICB7ICAgMCwKLSAgICAgIDgx
OSwgICAgMSwgIDgxOSwgICAgMywgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwK
LSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwg
IDgyMCwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgxOSwgIDgx
OSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgyMSwgIDgxOSwKLSAgICAgIDgxOSwg
IDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgyMiwKLSAg
ICAgIDgxOSwgIDgyMywgICAyMCwgICAyMSwgIDgxOSwgIDgxOSwgIDgyNCwgIDgxOSwgIDgxOSwg
IDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgyMCwgIDgxOSwgIDgx
OSwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLQotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAg
ICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODE5LCAgODE5LCAgODIxLCAgODE5LCAgODE5LCAg
ODIzLCAgODE5LCAgODE5LCAgODE5LAotICAgICAgODE5LCAgODE5LCAgODI0LCAgODE5LCAgODE5
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LAotCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MTksICA4MTksCi0gICAgICA4
MTksICA4MTksICA4MTksICA4MTksICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
Ci0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0KLSAgICAgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwK
LSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAg
ICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwKLQotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAg
ICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotCi0gICAg
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
Ci0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAs
ICA4MjAsICA4MjAsICA4MjAsCi0gICAgICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0KLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwK
LSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwgIDgyMCwgIDgy
MCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAgICAgIDgyMCwg
IDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwKLSAg
ICAgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwgIDgyMCwg
IDgyMCwKLQotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAg
ICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIw
LCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotICAgICAgODIwLCAgODIwLCAgODIwLCAg
ODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLCAgODIwLAotCi0gICAgICA4MjAsICA4
MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsCi0gICAg
ICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICA4MjAsICAgIDAsICA4
MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTkKKyAgICAgIDg4NSwgICAgMSwgIDg4NSwg
ICAgMywgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwKKyAgICAgIDg4NSwgIDg4
NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwKKyAgICAg
IDg4NiwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NywgIDg4NSwgIDg4
NSwKKyAgICAgIDg4NSwgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4Nywg
IDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4
NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NSwgIDg4NSwg
IDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwKKyAgICAgIDg4OCwgIDg4NSwgIDg4NSwgIDg4
NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwKKyAgICAgIDg4NSwgIDg4OSwg
IDg4NSwgIDg5MCwgICAyMCwgIDg4NiwgIDg5MSwgIDg4NSwgIDg5MiwgIDg4NSwKKyAgICAgIDg4
NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NSwgIDg4NywgIDg4NSwgIDg4NSwK
KyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4
NywgIDg4NywKKworICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAg
ODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAg
ODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAor
ICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg1LCAgODg1LCAgODg4
LCAgODkzLAorICAgICAgODg1LCAgODkwLCAgODk0LCAgODg1LCAgODg1LCAgODg1LCAgODkxLCAg
ODkyLCAgODg1LCAgODg1LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAg
ODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorCisgICAgICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisg
ICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4
ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4
ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODUsICA4OTMsICA4ODUsCisgICAgICA4OTQsICA4
ODUsICA4ODUsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAg
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4
ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4
ODcsICA4ODcsICA4ODcsICA4ODcsCisKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4
NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4Nywg
IDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4
NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAg
IDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4
NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4Nywg
IDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4
NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4Nywg
IDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4
NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4Nywg
IDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4
NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywK
KworICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAg
ODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAg
ODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAg
ODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAor
ICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3
LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAg
ODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAg
ODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorCisgICAgICA4ODcsICA4ODcsICA4
ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisg
ICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4
ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4
ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4
ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAg
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4
ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsCisKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4Nywg
IDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4
NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4Nywg
IDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4
NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAg
IDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4
NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4Nywg
IDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4
NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4Nywg
IDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4NywgIDg4NywgIDg4
NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKyAgICAgIDg4NywgIDg4Nywg
IDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywgIDg4NywKKworICAgICAg
ODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3
LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAg
ODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAg
ODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAg
ODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorICAgICAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAor
ICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3
LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAg
ODg3LCAgODg3LCAgODg3LAorICAgICAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3LCAgODg3
LCAgODg3LCAgODg3LCAgODg3LCAgODg3LAorCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4
ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisg
ICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4
ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4
ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4ODcsICA4ODcs
ICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4ODcsCisgICAgICA4ODcsICA4
ODcsICA4ODcsICA4ODcsICAgIDAsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsCisgICAg
ICA4ODUsICA4ODUsICA4ODUsICA4ODUKKwogICAgIH0gOwogCi1zdGF0aWMgeXljb25zdCBmbGV4
X2ludDE2X3QgeXlfbnh0WzEwOTBdID0KK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9u
eHRbMTE2OF0gPQogICAgIHsgICAwLAogICAgICAgICA2LCAgICA3LCAgICA4LCAgICA5LCAgIDEw
LCAgIDExLCAgIDEyLCAgIDEzLCAgIDE0LCAgIDE1LAogICAgICAgIDE2LCAgIDE3LCAgIDE4LCAg
IDE5LCAgIDIwLCAgIDIxLCAgIDIxLCAgIDIxLCAgIDIxLCAgIDIxLAotICAgICAgIDIxLCAgIDIy
LCAgIDIzLCAgIDI0LCAgIDI1LCAgIDI2LCAgIDI3LCAgIDI4LCAgIDI4LCAgIDI4LAorICAgICAg
IDIxLCAgIDIxLCAgIDIxLCAgIDIxLCAgIDIyLCAgIDIzLCAgIDI0LCAgIDI1LCAgIDI2LCAgIDI3
LAogICAgICAgIDI4LCAgIDI4LCAgIDI4LCAgIDI4LCAgIDI4LCAgIDI4LCAgIDI4LCAgIDI4LCAg
IDI4LCAgIDI4LAotICAgICAgIDI5LCAgIDMwLCAgIDMxLCAgIDI4LCAgIDMyLCAgIDMzLCAgIDM0
LCAgIDM1LCAgIDM2LCAgIDM3LAotICAgICAgIDM4LCAgIDM5LCAgIDQwLCAgIDI4LCAgIDQxLCAg
IDQyLCAgIDQzLCAgIDQ0LCAgIDQ1LCAgIDQ2LAotICAgICAgIDQ3LCAgIDQ4LCAgIDQ5LCAgIDUw
LCAgIDUxLCAgIDI4LCAgIDI4LCAgIDI4LCAgIDUyLCAgIDUzLAotICAgICAgIDU0LCAgIDU1LCAg
IDU2LCAgIDU3LCAgIDU4LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LAotICAgICAgIDU2
LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LAot
ICAgICAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2LCAgIDU2
LCAgIDU5LAotCi0gICAgICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTks
ICAgNTksICAgNTksICAgNTksCi0gICAgICAgNTksICAgNTksICAgNTYsICAgNTYsICAgNTYsICAg
NTksICAgNTksICAgNTksICAgNTksICAgNTksCi0gICAgICAgNTksICAgNTksICAgNTksICAgNTks
ICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksCi0gICAgICAgNTksICAgNTksICAg
NTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksICAgNTksCi0gICAgICAgNTYs
ICAgNTYsICAgNTYsICAgNTYsICAgNjEsICAgNjIsICAgNjMsICAgNjYsICAgNjgsICAgNzAsCi0g
ICAgICAgNzAsICAgNzAsICAgNzAsICAgNzAsICAgNzAsICAgNzAsICAgODQsICAgODUsICAgNzks
ICAxNTAsCi0gICAgICAxMjMsICAgNjksICAgNjcsICAgODcsICAxMjQsICAgNjQsICAgNzIsICAx
NTEsICAgNzMsICAgNzMsCi0gICAgICAgNzMsICAgNzMsICAgNzMsICAgNzMsICAgNzQsICAgODAs
ICAgODksICAgODEsICAgODIsICA3ODQsCi0gICAgICAgOTIsICAgODgsICAgOTMsICAxMjEsICAg
OTUsICAgNzUsICAgOTQsICAxMDMsICAgOTYsICAxMDQsCi0gICAgICAgOTAsICAgOTEsICAgNzYs
ICAgNzcsICAgOTcsICAgOTksICAxMjIsICAgOTgsICAxMDUsICAxMDAsCi0KLSAgICAgIDExNSwg
IDE4NywgICA3NSwgIDExNiwgIDEwMSwgIDEyNSwgIDExNywgIDExOCwgIDE1MiwgIDE2OCwKLSAg
ICAgIDEwMiwgIDExOSwgIDE4OCwgIDE2OSwgIDEyMCwgIDc4NSwgICA3NiwgIDEyOCwgIDEyNiwg
ICA3NywKLSAgICAgICA3MiwgIDEwNiwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3NCwgICA3
NCwgICA3NCwgIDEwNywKLSAgICAgIDExMiwgIDEwOCwgIDEyOSwgIDIwNywgIDEwOSwgIDEzMCwg
IDIxMiwgIDEzMiwgIDExMywgICA3NSwKLSAgICAgIDExMCwgIDIwOCwgIDIxMywgIDc4NiwgIDEz
MywgIDEzNCwgICA3NiwgIDEzOSwgIDEzNSwgIDExNCwKLSAgICAgIDE0MCwgIDIzNiwgIDIzNywg
IDE1MywgIDEzNiwgIDEzNywgICA3NSwgIDEzOCwgIDE0MSwgIDE0NywKLSAgICAgIDE0MywgIDE1
NSwgIDE1NiwgIDE0OCwgIDE0NCwgIDE0MiwgIDE1OCwgIDE1OSwgIDE0NSwgIDIzOCwKLSAgICAg
ICA3NiwgIDE0NiwgIDE0OSwgIDE2MCwgIDgxOSwgIDI2NywgIDI2OCwgIDIzOSwgIDE1NSwgIDE1
NiwKLSAgICAgIDE2MSwgIDc4NywgIDE2MSwgIDE1OCwgIDE1OSwgIDE2MiwgIDE2MiwgIDE2Miwg
IDE2MiwgIDE2MiwKLSAgICAgIDE2MiwgIDE2MiwgIDE4OSwgIDIyNywgIDE3NiwgIDI1NCwgIDIx
NSwgIDE2MCwgIDE3NywgIDE3OCwKLQotICAgICAgODE5LCAgMjIwLCAgMjI5LCAgMTk5LCAgNzg4
LCAgMTkwLCAgMjAwLCAgMjAxLCAgMjI4LCAgMjE2LAotICAgICAgMjAyLCAgMjE3LCAgMjAzLCAg
MjQwLCAgMjQ1LCAgMjMwLCAgMjQ2LCAgMjIxLCAgMjIyLCAgMjU0LAotICAgICAgMjQ5LCAgMjQx
LCAgMjQ5LCAgMTU4LCAgMTU5LCAgMjUwLCAgMjUwLCAgMjUwLCAgMjUwLCAgMjUwLAotICAgICAg
MjUwLCAgMjUwLCAgMjk4LCAgMjk5LCAgMzAwLCAgNzg5LCAgNzkwLCAgMjUxLCAgNzkxLCAgMjUx
LAotICAgICAgMTU4LCAgMTU5LCAgMjUyLCAgMjUyLCAgMjUyLCAgMjUyLCAgMjUyLCAgMjUyLCAg
MjUyLCAgMTYyLAotICAgICAgMTYyLCAgMTYyLCAgMTYyLCAgMTYyLCAgMTYyLCAgMTYyLCAgMTYy
LCAgMTYyLCAgMTYyLCAgMTYyLAotICAgICAgMTYyLCAgMTYyLCAgMTYyLCAgMjYxLCAgMzEyLCAg
MzMwLCAgNzkyLCAgNzkzLCAgMzEzLCAgMzM3LAotICAgICAgMzM4LCAgMzM5LCAgNzk0LCAgMzMx
LCAgMjUzLCAgNzk1LCAgMjYyLCAgMjUwLCAgMjUwLCAgMjUwLAotICAgICAgMjUwLCAgMjUwLCAg
MjUwLCAgMjUwLCAgMjUwLCAgMjUwLCAgMjUwLCAgMjUwLCAgMjUwLCAgMjUwLAotICAgICAgMjUw
LCAgMjUzLCAgMjUyLCAgMjUyLCAgMjUyLCAgMjUyLCAgMjUyLCAgMjUyLCAgMjUyLCAgMzQ4LAot
Ci0gICAgICAzNDksICAzNTAsICAxNTYsICAyNTIsICAyNTIsICAyNTIsICAyNTIsICAyNTIsICAy
NTIsICAyNTIsCi0gICAgICAzNjAsICAzNjEsICAzNjIsICAzNjgsICAzNjksICAzNzAsICAzNzIs
ICAzNzMsICAzNzQsICAxNTYsCi0gICAgICA3OTYsICAxNTksICAzODMsICAzODQsICAzODUsICA0
MjEsICA0MjIsICA0MjMsICA0NDEsICA0NDIsCi0gICAgICA0NDMsICA0NTEsICA0NTIsICA0NTMs
ICA0NTQsICA0NTUsICA0NTYsICA3OTcsICAxNTksICA3OTgsCi0gICAgICA3OTksICA0NDQsICA0
NDUsICA0NTcsICA0NTgsICA0NTksICA0OTgsICA0OTksICA1MDAsICA1MjQsCi0gICAgICA1MjUs
ICA1MjYsICA4MDAsICA4MDEsICA1NDYsICA1NDgsICA1NjMsICA1NjQsICA1NjUsICA1MDEsCi0g
ICAgICA1MDIsICA2MzYsICA1MjcsICA1MjgsICA1NDcsICA1NDksICA1OTQsICA1OTUsICA1OTYs
ICA1NjYsCi0gICAgICA1NjcsICA2MzcsICA1NjgsICA2MTQsICA2MTUsICA2MTYsICA2NjYsICA4
MDIsICA4MDMsICA1OTcsCi0gICAgICA1OTgsICA2MzgsICA4MDQsICA2NjcsICA4MDUsICA2Njgs
ICA2MTcsICA2MTgsICA2MzksICA2ODYsCi0gICAgICA2NDAsICA2NDEsICA4MDYsICA4MDcsICA4
MDgsICA4MDksICA2ODcsICA4MTAsICA2ODgsICA4MTEsCi0KLSAgICAgIDgxMiwgIDgxMywgIDgx
NCwgIDgxNSwgIDgxNiwgIDgxNywgIDgxOCwgICA4NiwgICA4NiwgICA4NiwKLSAgICAgIDE1NCwg
IDE1NCwgIDE1NCwgICA3MCwgIDE1NywgIDE2MywgIDE2MywgIDc4MywgIDc4MiwgIDc4MSwKKyAg
ICAgICAyOCwgICAyOCwgICAyOCwgICAyOCwgICAyOCwgICAyOSwgICAzMCwgICAzMSwgICAzMiwg
ICAzMywKKyAgICAgICAzNCwgICAzNSwgICAzNiwgICAzNywgICAzOCwgICAzOSwgICA0MCwgICA0
MSwgICAyOCwgICA0MiwKKyAgICAgICA0MywgICA0NCwgICA0NSwgICA0NiwgICA0NywgICA0OCwg
ICA0OSwgICA1MCwgICA1MSwgICA1MiwKKyAgICAgICAyOCwgICA1MywgICAyOCwgICA1NCwgICA1
NSwgICA1NiwgICA1NywgICA1OCwgICA1OSwgICA2MCwKKyAgICAgICA1OCwgICA1OCwgICA1OCwg
ICA1OCwgICA1OCwgICA1OCwgICA1OCwgICA1OCwgICA1OCwgICA1OCwKKyAgICAgICA1OCwgICA1
OCwgICA1OCwgICA1OCwgICA1OCwgICA1OCwgICA1OCwgICA1OCwgICA1OCwgICA1OCwKKworICAg
ICAgIDU4LCAgIDU4LCAgIDU4LCAgIDU4LCAgIDU4LCAgIDU4LCAgIDU4LCAgIDYxLCAgIDYxLCAg
IDYxLAorICAgICAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYx
LCAgIDYxLCAgIDYxLAorICAgICAgIDYxLCAgIDYxLCAgIDU4LCAgIDU4LCAgIDU4LCAgIDYxLCAg
IDYxLCAgIDYxLCAgIDYxLCAgIDYxLAorICAgICAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYx
LCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLAorICAgICAgIDYxLCAgIDYxLCAgIDYxLCAg
IDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLCAgIDYxLAorICAgICAgIDU4LCAgIDU4
LCAgIDU4LCAgIDU4LCAgIDYzLCAgIDY0LCAgIDY1LCAgIDY4LCAgIDcwLCAgIDcyLAorICAgICAg
IDcyLCAgIDcyLCAgIDcyLCAgIDcyLCAgIDcyLCAgIDcyLCAgIDcyLCAgIDcyLCAgIDcyLCAgMTU0
LAorICAgICAgIDc0LCAgIDgxLCAgIDg2LCAgIDg3LCAgIDcxLCAgIDY5LCAgIDg5LCAgMTU1LCAg
IDY2LCAgIDc0LAorICAgICAgMTU3LCAgIDc1LCAgIDc1LCAgIDc1LCAgIDc1LCAgIDc1LCAgIDc1
LCAgIDc1LCAgIDc1LCAgIDc2LAorICAgICAgIDc2LCAgIDgyLCAgIDc3LCAgIDgzLCAgIDg0LCAg
NzkxLCAgIDkwLCAgIDk1LCAgIDkyLCAgIDk2LAorCisgICAgICAgNzgsICAgNzcsICAxMjcsICAg
OTcsICAgOTgsICAxMDYsICAxMjgsICAxMDcsICAgOTksICAgNzgsCisgICAgICAgNzksICAgNzcs
ICAgOTMsICAgOTQsICAxMDAsICAxMDIsICAxMDgsICAxMDEsICAxNzQsICAxMDMsCisgICAgICAg
NzcsICAxMTUsICAxNzUsICAxMDksICAxMDQsICAgNzgsICA3OTIsICAxNTgsICAxMjUsICAxMTYs
CisgICAgICAxMDUsICAxMTAsICAxMTgsICAxMTEsICAgNzgsICAxMTksICAxMTIsICAgNzksICAx
MjAsICAxMjEsCisgICAgICAxMTcsICAxMjYsICAxMTMsICAxMjIsICAxMjMsICAxMjksICAxMjQs
ICAxMzIsICAxOTMsICAxMzYsCisgICAgICAxNDMsICAxNTEsICAxNjYsICAxNDQsICAxNjYsICAx
NTIsICAxMzcsICAxMzgsICAxMzAsICAxOTQsCisgICAgICAxMzksICAxNDUsICAxMzMsICA1NzQs
ICAxNTMsICAxMzQsICAxNDAsICAxNDEsICAxNDYsICAxNDIsCisgICAgICAxNDcsICAxNjAsICAx
NjEsICA1NzUsICAxNDgsICAxNjMsICAxNjQsICAyMTQsICAxNDksICAxNjUsCisgICAgICA4ODUs
ICAxNTAsICAxODIsICAgNzQsICAxOTUsICAyMTUsICAxODMsICAxODQsICAyMjIsICAyMDUsCisg
ICAgICAxNjAsICAxNjEsICAyMDYsICAyMDcsICAxNjMsICAxNjQsICAyMDgsICAxOTYsICAyMDks
ICAyMjcsCisKKyAgICAgIDIxOSwgIDIyMywgIDIzNSwgIDIyNCwgIDE2NSwgICA3NywgIDIyMCwg
IDg4NSwgIDIzMSwgIDIzNywKKyAgICAgIDI0NCwgIDI0NSwgIDI0NiwgICA3OCwgIDc5MywgIDIy
OCwgIDIyOSwgIDIzNiwgIDI0OCwgIDc5NCwKKyAgICAgIDI0NywgIDIzMiwgIDIzOCwgIDI1Mywg
ICA3NywgIDI1NCwgIDI0OSwgIDI1OCwgIDI2MywgIDI1OCwKKyAgICAgIDE2MywgIDE2NCwgIDI2
MCwgIDg4NSwgIDI2MCwgIDg4NSwgIDI3NywgIDI3OCwgICA3OCwgIDE2NywKKyAgICAgIDE2Nywg
IDE2NywgIDE2NywgIDE2NywgIDE2NywgIDE2NywgIDE2NywgIDE2NywgIDE2NywgIDE2MywKKyAg
ICAgIDE2NCwgIDI3MSwgIDM0MiwgIDI2MywgIDMwOSwgIDMxMCwgIDMxMSwgIDMyMywgIDc5NSwg
IDI2MiwKKyAgICAgIDM0MywgIDMyNCwgIDM5NywgIDM5OCwgIDI3MiwgIDM0OSwgIDM1MCwgIDM1
MSwgIDI1OSwgIDI1OSwKKyAgICAgIDI1OSwgIDI1OSwgIDI1OSwgIDI1OSwgIDI1OSwgIDI1OSwg
IDI1OSwgIDI1OSwgIDI2MiwgIDg4NSwKKyAgICAgIDc5NiwgIDg4NSwgIDI2MSwgIDI2MSwgIDI2
MSwgIDI2MSwgIDI2MSwgIDI2MSwgIDI2MSwgIDI2MSwKKyAgICAgIDI2MSwgIDI2MSwgIDg4NSwg
IDc5NywgIDg4NSwgIDM2MiwgIDM2MywgIDM2NCwgIDM3NCwgIDM3NSwKKworICAgICAgMzc2LCAg
MzgyLCAgMzgzLCAgMzg0LCAgNzk4LCAgMTYxLCAgMzg2LCAgMzg3LCAgMzg4LCAgMzk5LAorICAg
ICAgNDAwLCAgNDAxLCAgNDM4LCAgNDM5LCAgNDQwLCAgNDYwLCAgNDYxLCAgNDYyLCAgMTY0LCAg
NDcyLAorICAgICAgNDczLCAgNDc0LCAgNzk5LCAgODAwLCAgMTYxLCAgNDc1LCAgNDc2LCAgNDc3
LCAgNDc4LCAgNDc5LAorICAgICAgNDgwLCAgNDYzLCAgNDY0LCAgNTIyLCAgNTIzLCAgNTI0LCAg
NTc2LCAgMTY0LCAgNTUwLCAgNTUxLAorICAgICAgNTUyLCAgNTkyLCAgNTkzLCAgNTk0LCAgODAx
LCAgODAyLCAgNTc3LCAgODAzLCAgODA0LCAgNTI1LAorICAgICAgNTI2LCAgNjI1LCAgNjI2LCAg
NjI3LCAgNTUzLCAgNTU0LCAgNjcxLCAgNTk1LCAgNTk2LCAgODA1LAorICAgICAgNTk3LCAgNjQ2
LCAgNjQ3LCAgNjQ4LCAgNjczLCAgODA2LCAgNjcyLCAgNjI4LCAgNjI5LCAgODA3LAorICAgICAg
ODA4LCAgNjc0LCAgNzAzLCAgNjc1LCAgNjc2LCAgNzI0LCAgODA5LCAgNjQ5LCAgNjUwLCAgNzA0
LAorICAgICAgODEwLCAgNzA1LCAgNzI1LCAgODExLCAgNzI2LCAgODEyLCAgODEzLCAgODE0LCAg
ODE1LCAgODE2LAorICAgICAgODE3LCAgODE4LCAgODE5LCAgODIwLCAgODIxLCAgODIyLCAgODIz
LCAgODI0LCAgODI1LCAgODI2LAorCisgICAgICA4MjcsICA4MjgsICA4MjksICA4MzAsICA4MzEs
ICA4MzIsICA4MzMsICA4MzQsICA4MzUsICA4MzYsCisgICAgICA4MzcsICA4MzgsICA4MzksICA4
NDAsICA4NDEsICA4NDIsICA4NDMsICA4NDQsICA4NDUsICA4NDYsCisgICAgICA4NDcsICA4NDgs
ICA4NDksICA4NTAsICA4NTEsICA4NTIsICA4NTMsICA4NTQsICA4NTUsICA4NTYsCisgICAgICA4
NTcsICA4NTgsICA4NTksICA4NjAsICA4NjEsICA4NjIsICA4NjMsICA4NjQsICA4NjUsICA4NjYs
CisgICAgICA4NjcsICA4NjgsICA4NjksICA4NzAsICA4NzEsICA4NzIsICA4NzMsICA4NzQsICA4
NzUsICA4NzYsCisgICAgICA4NzcsICA4NzgsICA4NzksICA4ODAsICA4ODEsICA4ODIsICA4ODMs
ICA4ODQsICAgNzYsICAgNzYsCisgICAgICA3OTAsICAgNzYsICA3ODksICA3ODgsICAgNzYsICAg
ODgsICAgODgsICAgODgsICAgODgsICAgODgsCisgICAgICAgODgsICAxNTksICAxNTksICAxNTks
ICAxNTksICAxNTksICAxNTksICAgNzIsICA3ODcsICAgNzIsCisgICAgICAgNzIsICAxNjIsICA3
ODYsICAxNjIsICAxNjIsICAxNjcsICA3ODUsICAxNjcsICAxNjgsICAxNjgsCisgICAgICAxNjgs
ICAxNjgsICAyNTksICA3ODQsICAyNTksICAyNjEsICA3ODMsICAyNjEsICA3ODIsICA3ODEsCisK
ICAgICAgIDc4MCwgIDc3OSwgIDc3OCwgIDc3NywgIDc3NiwgIDc3NSwgIDc3NCwgIDc3MywgIDc3
MiwgIDc3MSwKICAgICAgIDc3MCwgIDc2OSwgIDc2OCwgIDc2NywgIDc2NiwgIDc2NSwgIDc2NCwg
IDc2MywgIDc2MiwgIDc2MSwKICAgICAgIDc2MCwgIDc1OSwgIDc1OCwgIDc1NywgIDc1NiwgIDc1
NSwgIDc1NCwgIDc1MywgIDc1MiwgIDc1MSwKICAgICAgIDc1MCwgIDc0OSwgIDc0OCwgIDc0Nywg
IDc0NiwgIDc0NSwgIDc0NCwgIDc0MywgIDc0MiwgIDc0MSwKICAgICAgIDc0MCwgIDczOSwgIDcz
OCwgIDczNywgIDczNiwgIDczNSwgIDczNCwgIDczMywgIDczMiwgIDczMSwKLSAgICAgIDczMCwg
IDcyOSwgIDcyOCwgIDcyNywgIDcyNiwgIDcyNSwgIDcyNCwgIDcyMywgIDcyMiwgIDcyMSwKLSAg
ICAgIDcyMCwgIDcxOSwgIDcxOCwgIDcxNywgIDcxNiwgIDcxNSwgIDcxNCwgIDcxMywgIDcxMiwg
IDcxMSwKLSAgICAgIDcxMCwgIDcwOSwgIDcwOCwgIDcwNywgIDcwNiwgIDcwNSwgIDcwNCwgIDcw
MywgIDcwMiwgIDcwMSwKLQotICAgICAgNzAwLCAgNjk5LCAgNjk4LCAgNjk3LCAgNjk2LCAgNjk1
LCAgNjk0LCAgNjkzLCAgNjkyLCAgNjkxLAotICAgICAgNjkwLCAgNjg5LCAgNjg1LCAgNjg0LCAg
NjgzLCAgNjgyLCAgNjgxLCAgNjgwLCAgNjc5LCAgNjc4LAotICAgICAgNjc3LCAgNjc2LCAgNjc1
LCAgNjc0LCAgNjczLCAgNjcyLCAgNjcxLCAgNjcwLCAgNjY5LCAgNjY1LAotICAgICAgNjY0LCAg
NjYzLCAgNjYyLCAgNjYxLCAgNjYwLCAgNjU5LCAgNjU4LCAgNjU3LCAgNjU2LCAgNjU1LAotICAg
ICAgNjU0LCAgNjUzLCAgNjUyLCAgNjUxLCAgNjUwLCAgNjQ5LCAgNjQ4LCAgNjQ3LCAgNjQ2LCAg
NjQ1LAotICAgICAgNjQ0LCAgNjQzLCAgNjQyLCAgNjM1LCAgNjM0LCAgNjMzLCAgNjMyLCAgNjMx
LCAgNjMwLCAgNjI5LAotICAgICAgNjI4LCAgNjI3LCAgNjI2LCAgNjI1LCAgNjI0LCAgNjIzLCAg
NjIyLCAgNjIxLCAgNjIwLCAgNjE5LAotICAgICAgNjEzLCAgNjEyLCAgNjExLCAgNjEwLCAgNjA5
LCAgNjA4LCAgNjA3LCAgNjA2LCAgNjA1LCAgNjA0LAotICAgICAgNjAzLCAgNjAyLCAgNjAxLCAg
NjAwLCAgNTk5LCAgNTkzLCAgNTkyLCAgNTkxLCAgNTkwLCAgNTg5LAotICAgICAgNTg4LCAgNTg3
LCAgNTg2LCAgNTg1LCAgNTg0LCAgNTgzLCAgNTgyLCAgNTgxLCAgNTgwLCAgNTc5LAotCi0gICAg
ICA1NzgsICA1NzcsICA1NzYsICA1NzUsICA1NzQsICA1NzMsICA1NzIsICA1NzEsICA1NzAsICA1
NjksCi0gICAgICA1NjIsICA1NjEsICA1NjAsICA1NTksICA1NTgsICA1NTcsICA1NTYsICA1NTUs
ICA1NTQsICA1NTMsCi0gICAgICA1NTIsICA1NTEsICA1NTAsICA1NDUsICA1NDQsICA1NDMsICA1
NDIsICA1NDEsICA1NDAsICA1MzksCi0gICAgICA1MzgsICA1MzcsICA1MzYsICA1MzUsICA1MzQs
ICA1MzMsICA1MzIsICA1MzEsICA1MzAsICA1MjksCi0gICAgICA1MjMsICA1MjIsICA1MjEsICA1
MjAsICA1MTksICA1MTgsICA1MTcsICA1MTYsICA1MTUsICA1MTQsCi0gICAgICA1MTMsICA1MTIs
ICA1MTEsICA1MTAsICA1MDksICA1MDgsICA1MDcsICA1MDYsICA1MDUsICA1MDQsCi0gICAgICA1
MDMsICA0OTcsICA0OTYsICA0OTUsICA0OTQsICA0OTMsICA0OTIsICA0OTEsICA0OTAsICA0ODks
Ci0gICAgICA0ODgsICA0ODcsICA0ODYsICA0ODUsICA0ODQsICA0ODMsICA0ODIsICA0ODEsICA0
ODAsICA0NzksCi0gICAgICA0NzgsICA0NzcsICA0NzYsICA0NzUsICA0NzQsICA0NzMsICA0NzIs
ICA0NzEsICA0NzAsICA0NjksCi0gICAgICA0NjgsICA0NjcsICA0NjYsICA0NjUsICA0NjQsICA0
NjMsICA0NjIsICA0NjEsICA0NjAsICA0NTAsCi0KLSAgICAgIDQ0OSwgIDQ0OCwgIDQ0NywgIDQ0
NiwgIDQ0MCwgIDQzOSwgIDQzOCwgIDQzNywgIDQzNiwgIDQzNSwKLSAgICAgIDQzNCwgIDQzMywg
IDQzMiwgIDQzMSwgIDQzMCwgIDQyOSwgIDQyOCwgIDQyNywgIDQyNiwgIDQyNSwKLSAgICAgIDQy
NCwgIDQyMCwgIDQxOSwgIDQxOCwgIDQxNywgIDQxNiwgIDQxNSwgIDQxNCwgIDQxMywgIDQxMiwK
KyAgICAgIDczMCwgIDcyOSwgIDcyOCwgIDcyNywgIDcyMywgIDcyMiwgIDcyMSwgIDcyMCwgIDcx
OSwgIDcxOCwKKyAgICAgIDcxNywgIDcxNiwgIDcxNSwgIDcxNCwgIDcxMywgIDcxMiwgIDcxMSwg
IDcxMCwgIDcwOSwgIDcwOCwKKyAgICAgIDcwNywgIDcwNiwgIDcwMiwgIDcwMSwgIDcwMCwgIDY5
OSwgIDY5OCwgIDY5NywgIDY5NiwgIDY5NSwKKyAgICAgIDY5NCwgIDY5MywgIDY5MiwgIDY5MSwg
IDY5MCwgIDY4OSwgIDY4OCwgIDY4NywgIDY4NiwgIDY4NSwKKyAgICAgIDY4NCwgIDY4MywgIDY4
MiwgIDY4MSwgIDY4MCwgIDY3OSwgIDY3OCwgIDY3NywgIDY3MCwgIDY2OSwKKworICAgICAgNjY4
LCAgNjY3LCAgNjY2LCAgNjY1LCAgNjY0LCAgNjYzLCAgNjYyLCAgNjYxLCAgNjYwLCAgNjU5LAor
ICAgICAgNjU4LCAgNjU3LCAgNjU2LCAgNjU1LCAgNjU0LCAgNjUzLCAgNjUyLCAgNjUxLCAgNjQ1
LCAgNjQ0LAorICAgICAgNjQzLCAgNjQyLCAgNjQxLCAgNjQwLCAgNjM5LCAgNjM4LCAgNjM3LCAg
NjM2LCAgNjM1LCAgNjM0LAorICAgICAgNjMzLCAgNjMyLCAgNjMxLCAgNjMwLCAgNjI0LCAgNjIz
LCAgNjIyLCAgNjIxLCAgNjIwLCAgNjE5LAorICAgICAgNjE4LCAgNjE3LCAgNjE2LCAgNjE1LCAg
NjE0LCAgNjEzLCAgNjEyLCAgNjExLCAgNjEwLCAgNjA5LAorICAgICAgNjA4LCAgNjA3LCAgNjA2
LCAgNjA1LCAgNjA0LCAgNjAzLCAgNjAyLCAgNjAxLCAgNjAwLCAgNTk5LAorICAgICAgNTk4LCAg
NTkxLCAgNTkwLCAgNTg5LCAgNTg4LCAgNTg3LCAgNTg2LCAgNTg1LCAgNTg0LCAgNTgzLAorICAg
ICAgNTgyLCAgNTgxLCAgNTgwLCAgNTc5LCAgNTc4LCAgNTczLCAgNTcyLCAgNTcxLCAgNTcwLCAg
NTY5LAorICAgICAgNTY4LCAgNTY3LCAgNTY2LCAgNTY1LCAgNTY0LCAgNTYzLCAgNTYyLCAgNTYx
LCAgNTYwLCAgNTU5LAorICAgICAgNTU4LCAgNTU3LCAgNTU2LCAgNTU1LCAgNTQ5LCAgNTQ4LCAg
NTQ3LCAgNTQ2LCAgNTQ1LCAgNTQ0LAorCisgICAgICA1NDMsICA1NDIsICA1NDEsICA1NDAsICA1
MzksICA1MzgsICA1MzcsICA1MzYsICA1MzUsICA1MzQsCisgICAgICA1MzMsICA1MzIsICA1MzEs
ICA1MzAsICA1MjksICA1MjgsICA1MjcsICA1MjEsICA1MjAsICA1MTksCisgICAgICA1MTgsICA1
MTcsICA1MTYsICA1MTUsICA1MTQsICA1MTMsICA1MTIsICA1MTEsICA1MTAsICA1MDksCisgICAg
ICA1MDgsICA1MDcsICA1MDYsICA1MDUsICA1MDQsICA1MDMsICA1MDIsICA1MDEsICA1MDAsICA0
OTksCisgICAgICA0OTgsICA0OTcsICA0OTYsICA0OTUsICA0OTQsICA0OTMsICA0OTIsICA0OTEs
ICA0OTAsICA0ODksCisgICAgICA0ODgsICA0ODcsICA0ODYsICA0ODUsICA0ODQsICA0ODMsICA0
ODIsICA0ODEsICA0NzEsICA0NzAsCisgICAgICA0NjksICA0NjgsICA0NjcsICA0NjYsICA0NjUs
ICA0NTksICA0NTgsICA0NTcsICA0NTYsICA0NTUsCisgICAgICA0NTQsICA0NTMsICA0NTIsICA0
NTEsICA0NTAsICA0NDksICA0NDgsICA0NDcsICA0NDYsICA0NDUsCisgICAgICA0NDQsICA0NDMs
ICA0NDIsICA0NDEsICA0MzcsICA0MzYsICA0MzUsICA0MzQsICA0MzMsICA0MzIsCisgICAgICA0
MzEsICA0MzAsICA0MjksICA0MjgsICA0MjcsICA0MjYsICA0MjUsICA0MjQsICA0MjMsICA0MjIs
CisKKyAgICAgIDQyMSwgIDQyMCwgIDQxOSwgIDQxOCwgIDQxNywgIDQxNiwgIDQxNSwgIDQxNCwg
IDQxMywgIDQxMiwKICAgICAgIDQxMSwgIDQxMCwgIDQwOSwgIDQwOCwgIDQwNywgIDQwNiwgIDQw
NSwgIDQwNCwgIDQwMywgIDQwMiwKLSAgICAgIDQwMSwgIDQwMCwgIDM5OSwgIDM5OCwgIDM5Nywg
IDM5NiwgIDM5NSwgIDM5NCwgIDM5MywgIDM5MiwKLSAgICAgIDM5MSwgIDM5MCwgIDM4OSwgIDM4
OCwgIDM4NywgIDM4NiwgIDM4MiwgIDM4MSwgIDM4MCwgIDM3OSwKLSAgICAgIDM3OCwgIDM3Nywg
IDM3NiwgIDM3NSwgIDM3MSwgIDM2NywgIDM2NiwgIDM2NSwgIDM2NCwgIDM2MywKLSAgICAgIDM1
OSwgIDM1OCwgIDM1NywgIDM1NiwgIDM1NSwgIDM1NCwgIDM1MywgIDM1MiwgIDM1MSwgIDM0NywK
LSAgICAgIDM0NiwgIDM0NSwgIDM0NCwgIDM0MywgIDM0MiwgIDM0MSwgIDM0MCwgIDMzNiwgIDMz
NSwgIDMzNCwKLSAgICAgIDMzMywgIDMzMiwgIDMyOSwgIDMyOCwgIDMyNywgIDMyNiwgIDMyNSwg
IDMyNCwgIDMyMywgIDMyMiwKLQotICAgICAgMzIxLCAgMzIwLCAgMzE5LCAgMzE4LCAgMzE3LCAg
MzE2LCAgMzE1LCAgMzE0LCAgMzExLCAgMzEwLAotICAgICAgMzA5LCAgMzA4LCAgMzA3LCAgMzA2
LCAgMzA1LCAgMzA0LCAgMzAzLCAgMzAyLCAgMzAxLCAgMjk3LAotICAgICAgMjk2LCAgMjk1LCAg
Mjk0LCAgMjkzLCAgMjkyLCAgMjkxLCAgMjkwLCAgMjg5LCAgMjg4LCAgMjg3LAotICAgICAgMjg2
LCAgMjg1LCAgMjg0LCAgMjgzLCAgMjgyLCAgMjgxLCAgMjgwLCAgMjc5LCAgMjc4LCAgMjc3LAot
ICAgICAgMjc2LCAgMjc1LCAgMjc0LCAgMjczLCAgMjcyLCAgMjcxLCAgMjcwLCAgMjY5LCAgMjY2
LCAgMjY1LAotICAgICAgMjY0LCAgMjYzLCAgMjYwLCAgMjU5LCAgMjU4LCAgMjU3LCAgMjU2LCAg
MjU1LCAgMjQ4LCAgMjQ3LAotICAgICAgMjQ0LCAgMjQzLCAgMjQyLCAgMjM1LCAgMjM0LCAgMjMz
LCAgMjMyLCAgMjMxLCAgMjI2LCAgMjI1LAotICAgICAgMjI0LCAgMjIzLCAgMjE5LCAgMjE4LCAg
MjE0LCAgMjExLCAgMjEwLCAgMjA5LCAgMjA2LCAgMjA1LAotICAgICAgMjA0LCAgMTk4LCAgMTk3
LCAgMTk2LCAgMTk1LCAgMTk0LCAgMTkzLCAgMTkyLCAgMTkxLCAgMTg2LAotICAgICAgMTg1LCAg
MTg0LCAgMTgzLCAgMTgyLCAgMTgxLCAgMTgwLCAgMTc5LCAgMTc1LCAgMTc0LCAgMTczLAotCi0g
ICAgICAxNzIsICAxNzEsICAxNzAsICAxNjcsICAxNjYsICAxNjUsICAxNjQsICAxMzEsICAxMjcs
ICAxMTEsCi0gICAgICAgODMsICAgNzgsICAgNzEsICAgNjUsICAgNjAsICA4MTksICAgIDUsICA4
MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTks
ICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4
MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTks
ICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAgICA4MTksICA4
MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksCi0gICAg
ICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4
MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTks
ICA4MTksICA4MTksCi0gICAgICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4MTksICA4
MTksICA4MTksICA4MTkKKyAgICAgIDM5NiwgIDM5NSwgIDM5NCwgIDM5MywgIDM5MiwgIDM5MSwg
IDM5MCwgIDM4OSwgIDM4NSwgIDM4MSwKKyAgICAgIDM4MCwgIDM3OSwgIDM3OCwgIDM3NywgIDM3
MywgIDM3MiwgIDM3MSwgIDM3MCwgIDM2OSwgIDM2OCwKKyAgICAgIDM2NywgIDM2NiwgIDM2NSwg
IDM2MSwgIDM2MCwgIDM1OSwgIDM1OCwgIDM1NywgIDM1NiwgIDM1NSwKKyAgICAgIDM1NCwgIDM1
MywgIDM1MiwgIDM0OCwgIDM0NywgIDM0NiwgIDM0NSwgIDM0NCwgIDM0MSwgIDM0MCwKKyAgICAg
IDMzOSwgIDMzOCwgIDMzNywgIDMzNiwgIDMzNSwgIDMzNCwgIDMzMywgIDMzMiwgIDMzMSwgIDMz
MCwKKyAgICAgIDMyOSwgIDMyOCwgIDMyNywgIDMyNiwgIDMyNSwgIDMyMiwgIDMyMSwgIDMyMCwg
IDMxOSwgIDMxOCwKKyAgICAgIDMxNywgIDMxNiwgIDMxNSwgIDMxNCwgIDMxMywgIDMxMiwgIDMw
OCwgIDMwNywgIDMwNiwgIDMwNSwKKyAgICAgIDMwNCwgIDMwMywgIDMwMiwgIDMwMSwgIDMwMCwg
IDI5OSwgIDI5OCwgIDI5NywgIDI5NiwgIDI5NSwKKworICAgICAgMjk0LCAgMjkzLCAgMjkyLCAg
MjkxLCAgMjkwLCAgMjg5LCAgMjg4LCAgMjg3LCAgMjg2LCAgMjg1LAorICAgICAgMjg0LCAgMjgz
LCAgMjgyLCAgMjgxLCAgMjgwLCAgMjc5LCAgMjc2LCAgMjc1LCAgMjc0LCAgMjczLAorICAgICAg
MjcwLCAgMjY5LCAgMjY4LCAgMjY3LCAgMjY2LCAgMjY1LCAgMjY0LCAgMjU3LCAgMjU2LCAgMjU1
LAorICAgICAgMjUyLCAgMjUxLCAgMjUwLCAgMjQzLCAgMjQyLCAgMjQxLCAgMjQwLCAgMjM5LCAg
MjM0LCAgMjMzLAorICAgICAgMjMwLCAgMjI2LCAgMjI1LCAgMjIxLCAgMjE4LCAgMjE3LCAgMjE2
LCAgMjEzLCAgMjEyLCAgMjExLAorICAgICAgMjEwLCAgMjA0LCAgMjAzLCAgMjAyLCAgMjAxLCAg
MjAwLCAgMTk5LCAgMTk4LCAgMTk3LCAgMTkyLAorICAgICAgMTkxLCAgMTkwLCAgMTg5LCAgMTg4
LCAgMTg3LCAgMTg2LCAgMTg1LCAgMTgxLCAgMTgwLCAgMTc5LAorICAgICAgMTc4LCAgMTc3LCAg
MTc2LCAgMTczLCAgMTcyLCAgMTcxLCAgMTcwLCAgMTY5LCAgMTU2LCAgMTM1LAorICAgICAgMTMx
LCAgMTE0LCAgIDkxLCAgIDg1LCAgIDgwLCAgIDczLCAgIDY3LCAgIDYyLCAgODg1LCAgICA1LAor
ICAgICAgODg1LCAgODg1LCAgODg1LCAgODg1LCAgODg1LCAgODg1LCAgODg1LCAgODg1LCAgODg1
LCAgODg1LAorCisgICAgICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUs
ICA4ODUsICA4ODUsICA4ODUsCisgICAgICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4
ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsCisgICAgICA4ODUsICA4ODUsICA4ODUsICA4ODUs
ICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsCisgICAgICA4ODUsICA4ODUsICA4
ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsCisgICAgICA4ODUs
ICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsCisg
ICAgICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUs
ICA4ODUsCisgICAgICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUKICAg
ICB9IDsKIAotc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2Noa1sxMDkwXSA9CitzdGF0
aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzExNjhdID0KICAgICB7ICAgMCwKICAgICAg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwKQEAgLTg2OSw3ICs5MDMsNyBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2
X3QgeXlfY2hrWzEwOTBdID0KICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKICAgICAgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKLSAgICAgICAgMSwg
ICAgMSwgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywKKyAg
ICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMywgICAgMywg
ICAgMywKICAgICAgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAg
MywgICAgMywgICAgMywKICAgICAgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywg
ICAgMywgICAgMywgICAgMywgICAgMywKIApAQCAtODc3LDExNCArOTExLDEyMyBAQCBzdGF0aWMg
eXljb25zdCBmbGV4X2ludDE2X3QgeXlfY2hrWzEwOTBdID0KICAgICAgICAgMywgICAgMywgICAg
MywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywKICAgICAgICAgMywg
ICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywKICAg
ICAgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywg
ICAgMywKKyAgICAgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAgMywgICAg
MywgICAgMywgICAgMywKICAgICAgICAgMywgICAgMywgICAgMywgICAgMywgICAxMCwgICAxMCwg
ICAxMSwgICAxNSwgICAxNywgICAxOCwKLSAgICAgICAxOCwgICAxOCwgICAxOCwgICAxOCwgICAx
OCwgICAxOCwgICAyNiwgICAyNiwgICAyNCwgICA1MSwKLSAgICAgICA0MiwgICAxNywgICAxNSwg
ICAzMSwgICA0MiwgICAxMSwgICAyMCwgICA1MSwgICAyMCwgICAyMCwKLSAgICAgICAyMCwgICAy
MCwgICAyMCwgICAyMCwgICAyMCwgICAyNCwgICAzMiwgICAyNCwgICAyNCwgIDc2NiwKLSAgICAg
ICAzMywgICAzMSwgICAzMywgICA0MSwgICAzNCwgICAyMCwgICAzMywgICAzNiwgICAzNCwgICAz
NiwKLSAgICAgICAzMiwgICAzMiwgICAyMCwgICAyMCwgICAzNCwgICAzNSwgICA0MSwgICAzNCwg
ICAzNiwgICAzNSwKLQotICAgICAgIDQwLCAgMTA3LCAgIDIwLCAgIDQwLCAgIDM1LCAgIDQzLCAg
IDQwLCAgIDQwLCAgIDUzLCAgIDkxLAotICAgICAgIDM1LCAgIDQwLCAgMTA3LCAgIDkxLCAgIDQw
LCAgNzY3LCAgIDIwLCAgIDQ1LCAgIDQzLCAgIDIwLAotICAgICAgIDIxLCAgIDM3LCAgIDIxLCAg
IDIxLCAgIDIxLCAgIDIxLCAgIDIxLCAgIDIxLCAgIDIxLCAgIDM3LAotICAgICAgIDM5LCAgIDM3
LCAgIDQ1LCAgMTIyLCAgIDM3LCAgIDQ1LCAgMTI2LCAgIDQ3LCAgIDM5LCAgIDIxLAotICAgICAg
IDM3LCAgMTIyLCAgMTI2LCAgNzY4LCAgIDQ3LCAgIDQ3LCAgIDIxLCAgIDQ4LCAgIDQ3LCAgIDM5
LAotICAgICAgIDQ4LCAgMTQzLCAgMTQzLCAgIDUzLCAgIDQ3LCAgIDQ3LCAgIDIxLCAgIDQ3LCAg
IDQ4LCAgIDUwLAotICAgICAgIDQ5LCAgIDcwLCAgIDcwLCAgIDUwLCAgIDQ5LCAgIDQ4LCAgIDcy
LCAgIDcyLCAgIDQ5LCAgMTQ0LAotICAgICAgIDIxLCAgIDQ5LCAgIDUwLCAgIDczLCAgIDczLCAg
MTc4LCAgMTc4LCAgMTQ0LCAgIDcwLCAgIDcwLAotICAgICAgIDc1LCAgNzY5LCAgIDc1LCAgIDcy
LCAgIDcyLCAgIDc1LCAgIDc1LCAgIDc1LCAgIDc1LCAgIDc1LAotICAgICAgIDc1LCAgIDc1LCAg
MTA4LCAgMTM2LCAgIDk4LCAgMTYzLCAgMTI4LCAgIDczLCAgIDk4LCAgIDk4LAotCi0gICAgICAg
NzMsICAxMzEsICAxMzcsICAxMTgsICA3NzAsICAxMDgsICAxMTgsICAxMTgsICAxMzYsICAxMjgs
Ci0gICAgICAxMTgsICAxMjgsICAxMTgsICAxNDUsICAxNDksICAxMzcsICAxNDksICAxMzEsICAx
MzEsICAxNjMsCi0gICAgICAxNTUsICAxNDUsICAxNTUsICAxNTcsICAxNTcsICAxNTUsICAxNTUs
ICAxNTUsICAxNTUsICAxNTUsCi0gICAgICAxNTUsICAxNTUsICAyMDksICAyMDksICAyMDksICA3
NzMsICA3NzQsICAxNTgsICA3NzcsICAxNTgsCi0gICAgICAxNTcsICAxNTcsICAxNTgsICAxNTgs
ICAxNTgsICAxNTgsICAxNTgsICAxNTgsICAxNTgsICAxNjEsCi0gICAgICAxNjEsICAxNjEsICAx
NjEsICAxNjEsICAxNjEsICAxNjEsICAxNjIsICAxNjIsICAxNjIsICAxNjIsCi0gICAgICAxNjIs
ICAxNjIsICAxNjIsICAxNzMsICAyMjEsICAyMzgsICA3NzgsICA3ODAsICAyMjEsICAyNDQsCi0g
ICAgICAyNDQsICAyNDQsICA3ODEsICAyMzgsICAxNjIsICA3ODIsICAxNzMsICAyNDksICAyNDks
ICAyNDksCi0gICAgICAyNDksICAyNDksICAyNDksICAyNDksICAyNTAsICAyNTAsICAyNTAsICAy
NTAsICAyNTAsICAyNTAsCi0gICAgICAyNTAsICAxNjIsICAyNTEsICAyNTEsICAyNTEsICAyNTEs
ICAyNTEsICAyNTEsICAyNTEsICAyNjAsCi0KLSAgICAgIDI2MCwgIDI2MCwgIDI1MCwgIDI1Miwg
IDI1MiwgIDI1MiwgIDI1MiwgIDI1MiwgIDI1MiwgIDI1MiwKLSAgICAgIDI3MiwgIDI3MiwgIDI3
MiwgIDI4MSwgIDI4MSwgIDI4MSwgIDI4NSwgIDI4NSwgIDI4NSwgIDI1MCwKLSAgICAgIDc4NCwg
IDI1MiwgIDI5NCwgIDI5NCwgIDI5NCwgIDMzNSwgIDMzNSwgIDMzNSwgIDM3NiwgIDM3NiwKLSAg
ICAgIDM3NiwgIDM4NywgIDM4NywgIDM4NywgIDM4OCwgIDM4OCwgIDM4OCwgIDc4NSwgIDI1Miwg
IDc4OCwKLSAgICAgIDc4OSwgIDM3NiwgIDM3NiwgIDM4OSwgIDM4OSwgIDM4OSwgIDQ0MCwgIDQ0
MCwgIDQ0MCwgIDQ4MywKLSAgICAgIDQ4MywgIDQ4MywgIDc5MCwgIDc5MSwgIDUwMywgIDUwNCwg
IDUyMCwgIDUyMCwgIDUyMCwgIDQ0MCwKLSAgICAgIDQ0MCwgIDYwMywgIDQ4MywgIDQ4MywgIDUw
MywgIDUwNCwgIDU1NCwgIDU1NCwgIDU1NCwgIDUyMCwKLSAgICAgIDUyMCwgIDYwMywgIDUyMCwg
IDU3NywgIDU3NywgIDU3NywgIDYzMSwgIDc5MiwgIDc5MywgIDU1NCwKLSAgICAgIDU1NCwgIDYw
NCwgIDc5NSwgIDYzMSwgIDc5NiwgIDYzMSwgIDU3NywgIDU3NywgIDYwNCwgIDY1MiwKLSAgICAg
IDYwNCwgIDYwNCwgIDc5NywgIDc5OCwgIDc5OSwgIDgwMCwgIDY1MiwgIDgwMiwgIDY1MiwgIDgw
MywKLQotICAgICAgODA0LCAgODA2LCAgODEwLCAgODExLCAgODEyLCAgODE0LCAgODE1LCAgODIw
LCAgODIwLCAgODIwLAotICAgICAgODIxLCAgODIxLCAgODIxLCAgODIyLCAgODIzLCAgODI0LCAg
ODI0LCAgNzY1LCAgNzY0LCAgNzYzLAotICAgICAgNzYyLCAgNzYxLCAgNzYwLCAgNzU3LCAgNzU2
LCAgNzU1LCAgNzU0LCAgNzUzLCAgNzUyLCAgNzUxLAotICAgICAgNzUwLCAgNzQ5LCAgNzQ4LCAg
NzQ1LCAgNzQ0LCAgNzQxLCAgNzQwLCAgNzM5LCAgNzM4LCAgNzM3LAotICAgICAgNzM2LCAgNzM0
LCAgNzMzLCAgNzMyLCAgNzMxLCAgNzMwLCAgNzI4LCAgNzI2LCAgNzIyLCAgNzIxLAotICAgICAg
NzIwLCAgNzE5LCAgNzE4LCAgNzE2LCAgNzE1LCAgNzE0LCAgNzEzLCAgNzEyLCAgNzExLCAgNzEw
LAotICAgICAgNzA5LCAgNzA4LCAgNzA3LCAgNzA2LCAgNzA1LCAgNzA0LCAgNzAyLCAgNzAxLCAg
NzAwLCAgNjk5LAotICAgICAgNjk4LCAgNjk3LCAgNjk2LCAgNjk1LCAgNjk0LCAgNjkyLCAgNjkx
LCAgNjkwLCAgNjg5LCAgNjg4LAotICAgICAgNjg3LCAgNjg2LCAgNjg1LCAgNjg0LCAgNjgzLCAg
NjgyLCAgNjgxLCAgNjgwLCAgNjc5LCAgNjc4LAotICAgICAgNjc3LCAgNjc2LCAgNjc1LCAgNjc0
LCAgNjczLCAgNjcyLCAgNjcxLCAgNjcwLCAgNjY5LCAgNjY4LAotCi0gICAgICA2NjcsICA2NjYs
ICA2NjUsICA2NjMsICA2NjIsICA2NjEsICA2NjAsICA2NTksICA2NTgsICA2NTcsCi0gICAgICA2
NTUsICA2NTQsICA2NTEsICA2NDksICA2NDgsICA2NDcsICA2NDUsICA2NDQsICA2NDMsICA2NDIs
Ci0gICAgICA2NDEsICA2NDAsICA2MzksICA2MzgsICA2MzcsICA2MzYsICA2MzUsICA2MzQsICA2
MzMsICA2MzAsCi0gICAgICA2MjksICA2MjgsICA2MjcsICA2MjYsICA2MjUsICA2MjMsICA2MjIs
ICA2MjEsICA2MjAsICA2MTgsCi0gICAgICA2MTcsICA2MTYsICA2MTUsICA2MTQsICA2MTMsICA2
MTIsICA2MTEsICA2MTAsICA2MDksICA2MDgsCi0gICAgICA2MDcsICA2MDYsICA2MDUsICA2MDAs
ICA1OTgsICA1OTcsICA1OTYsICA1OTUsICA1OTQsICA1OTAsCi0gICAgICA1ODksICA1ODgsICA1
ODcsICA1ODYsICA1ODUsICA1ODQsICA1ODMsICA1ODIsICA1ODAsICA1NzksCi0gICAgICA1NzUs
ICA1NzQsICA1NzIsICA1NzEsICA1NjksICA1NjgsICA1NjcsICA1NjYsICA1NjUsICA1NjQsCi0g
ICAgICA1NjMsICA1NTksICA1NTgsICA1NTcsICA1NTUsICA1NTMsICA1NTIsICA1NTEsICA1NTAs
ICA1NDksCi0gICAgICA1NDgsICA1NDcsICA1NDYsICA1NDUsICA1NDQsICA1NDIsICA1NDEsICA1
MzYsICA1MzUsICA1MzQsCi0KLSAgICAgIDUzMywgIDUzMSwgIDUzMCwgIDUyOCwgIDUyNywgIDUy
NiwgIDUyNSwgIDUyNCwgIDUyMiwgIDUyMSwKLSAgICAgIDUxOSwgIDUxOCwgIDUxNywgIDUxNiwg
IDUxNSwgIDUxNCwgIDUxMywgIDUxMiwgIDUxMCwgIDUwOSwKLSAgICAgIDUwOCwgIDUwNywgIDUw
NiwgIDUwMiwgIDUwMSwgIDUwMCwgIDQ5OSwgIDQ5OCwgIDQ5NywgIDQ5NCwKLSAgICAgIDQ5Mywg
IDQ5MiwgIDQ5MSwgIDQ5MCwgIDQ4OSwgIDQ4OCwgIDQ4NywgIDQ4NiwgIDQ4NSwgIDQ4NCwKLSAg
ICAgIDQ4MiwgIDQ4MSwgIDQ3OCwgIDQ3MywgIDQ3MSwgIDQ3MCwgIDQ2OSwgIDQ2NywgIDQ2Niwg
IDQ2MywKLSAgICAgIDQ2MiwgIDQ2MSwgIDQ2MCwgIDQ0OSwgIDQ0OCwgIDQ0NywgIDQ0NSwgIDQ0
NCwgIDQ0MywgIDQ0MiwKLSAgICAgIDQ0MSwgIDQzOCwgIDQzNiwgIDQzNSwgIDQzNCwgIDQzMiwg
IDQzMSwgIDQzMCwgIDQyOSwgIDQyNywKLSAgICAgIDQyNSwgIDQyNCwgIDQxOSwgIDQxOCwgIDQx
NiwgIDQxNSwgIDQxNCwgIDQxMywgIDQxMiwgIDQxMSwKLSAgICAgIDQxMCwgIDQwOSwgIDQwOCwg
IDQwNywgIDQwNiwgIDQwNCwgIDQwMywgIDQwMiwgIDQwMSwgIDQwMCwKLSAgICAgIDM5OSwgIDM5
OCwgIDM5NiwgIDM5NSwgIDM5NCwgIDM5MywgIDM5MiwgIDM5MSwgIDM5MCwgIDM4NiwKLQotICAg
ICAgMzgyLCAgMzgxLCAgMzgwLCAgMzc3LCAgMzc1LCAgMzY1LCAgMzYzLCAgMzU5LCAgMzU4LCAg
MzU3LAotICAgICAgMzU2LCAgMzU0LCAgMzUzLCAgMzUxLCAgMzQ2LCAgMzQ1LCAgMzQ0LCAgMzQz
LCAgMzQyLCAgMzQxLAotICAgICAgMzM2LCAgMzM0LCAgMzMzLCAgMzMyLCAgMzMxLCAgMzMwLCAg
MzI4LCAgMzI3LCAgMzI0LCAgMzIzLAotICAgICAgMzIyLCAgMzIxLCAgMzIwLCAgMzE5LCAgMzE4
LCAgMzE3LCAgMzE2LCAgMzE1LCAgMzE0LCAgMzEzLAotICAgICAgMzEyLCAgMzExLCAgMzEwLCAg
MzA5LCAgMzA4LCAgMzA3LCAgMzA2LCAgMzA1LCAgMzA0LCAgMzAzLAotICAgICAgMzAyLCAgMzAx
LCAgMzAwLCAgMjk5LCAgMjk4LCAgMjk1LCAgMjkzLCAgMjkyLCAgMjkxLCAgMjkwLAotICAgICAg
Mjg5LCAgMjg4LCAgMjg3LCAgMjg2LCAgMjg0LCAgMjgwLCAgMjc4LCAgMjc3LCAgMjc2LCAgMjc1
LAotICAgICAgMjcxLCAgMjcwLCAgMjY5LCAgMjY4LCAgMjY3LCAgMjY2LCAgMjY1LCAgMjY0LCAg
MjYzLCAgMjU5LAotICAgICAgMjU3LCAgMjU2LCAgMjU1LCAgMjQ4LCAgMjQ3LCAgMjQ2LCAgMjQ1
LCAgMjQzLCAgMjQyLCAgMjQxLAotICAgICAgMjQwLCAgMjM5LCAgMjM3LCAgMjM2LCAgMjM1LCAg
MjM0LCAgMjMzLCAgMjMyLCAgMjMxLCAgMjMwLAotCi0gICAgICAyMjksICAyMjgsICAyMjcsICAy
MjYsICAyMjUsICAyMjQsICAyMjMsICAyMjIsICAyMjAsICAyMTksCi0gICAgICAyMTgsICAyMTcs
ICAyMTYsICAyMTUsICAyMTQsICAyMTMsICAyMTIsICAyMTEsICAyMTAsICAyMDgsCi0gICAgICAy
MDcsICAyMDYsICAyMDUsICAyMDQsICAyMDMsICAyMDIsICAyMDEsICAyMDAsICAxOTksICAxOTgs
Ci0gICAgICAxOTcsICAxOTYsICAxOTUsICAxOTQsICAxOTMsICAxOTIsICAxOTAsICAxODksICAx
ODgsICAxODcsCi0gICAgICAxODYsICAxODUsICAxODQsICAxODMsICAxODIsICAxODEsICAxODAs
ICAxNzksICAxNzcsICAxNzYsCi0gICAgICAxNzUsICAxNzQsICAxNzIsICAxNzEsICAxNzAsICAx
NjksICAxNjgsICAxNjYsICAxNTEsICAxNTAsCi0gICAgICAxNDgsICAxNDcsICAxNDYsICAxNDIs
ICAxNDEsICAxNDAsICAxMzksICAxMzgsICAxMzUsICAxMzQsCi0gICAgICAxMzMsICAxMzIsICAx
MzAsICAxMjksICAxMjcsICAxMjUsICAxMjQsICAxMjMsICAxMjEsICAxMjAsCi0gICAgICAxMTks
ICAxMTcsICAxMTYsICAxMTQsICAxMTMsICAxMTIsICAxMTEsICAxMTAsICAxMDksICAxMDYsCi0g
ICAgICAxMDUsICAxMDQsICAxMDMsICAxMDIsICAxMDEsICAxMDAsICAgOTksICAgOTcsICAgOTYs
ICAgOTUsCi0KLSAgICAgICA5NCwgICA5MywgICA5MiwgICA5MCwgICA4OSwgICA4NSwgICA4MSwg
ICA0NiwgICA0NCwgICAzOCwKLSAgICAgICAyNSwgICAyMiwgICAxOSwgICAxNCwgICAgOSwgICAg
NSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwg
IDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwg
IDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAg
ICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwg
IDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwg
IDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwKLSAgICAgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgx
OSwgIDgxOSwgIDgxOSwgIDgxOSwgIDgxOQorICAgICAgIDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAg
IDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDE4LCAgIDUyLAorICAgICAgIDIxLCAgIDI0LCAgIDI2
LCAgIDI2LCAgIDE3LCAgIDE1LCAgIDMxLCAgIDUyLCAgIDExLCAgIDIwLAorICAgICAgIDU1LCAg
IDIwLCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIwLCAgIDIwLAorICAg
ICAgIDIwLCAgIDI0LCAgIDIxLCAgIDI0LCAgIDI0LCAgNzU3LCAgIDMxLCAgIDM0LCAgIDMzLCAg
IDM0LAorCisgICAgICAgMjEsICAgMjAsICAgNDMsICAgMzQsICAgMzUsICAgMzcsICAgNDMsICAg
MzcsICAgMzUsICAgMjAsCisgICAgICAgMjAsICAgMjEsICAgMzMsICAgMzMsICAgMzUsICAgMzYs
ICAgMzcsICAgMzUsICAgOTQsICAgMzYsCisgICAgICAgMjAsICAgNDAsICAgOTQsICAgMzgsICAg
MzYsICAgMjEsICA3NTksICAgNTUsICAgNDIsICAgNDAsCisgICAgICAgMzYsICAgMzgsICAgNDEs
ICAgMzgsICAgMjAsICAgNDEsICAgMzgsICAgMjAsICAgNDEsICAgNDEsCisgICAgICAgNDAsICAg
NDIsICAgMzgsICAgNDEsICAgNDEsICAgNDQsICAgNDEsICAgNDYsICAxMTAsICAgNDgsCisgICAg
ICAgNDksICAgNTEsICAgNzcsICAgNDksICAgNzcsICAgNTEsICAgNDgsICAgNDgsICAgNDQsICAx
MTAsCisgICAgICAgNDgsICAgNDksICAgNDYsICA1MjcsICAgNTEsICAgNDYsICAgNDgsICAgNDgs
ICAgNDksICAgNDgsCisgICAgICAgNTAsICAgNzIsICAgNzIsICA1MjcsICAgNTAsICAgNzQsICAg
NzQsICAxMjYsICAgNTAsICAgNzUsCisgICAgICAgNzUsICAgNTAsICAxMDEsICAgNzYsICAxMTEs
ICAxMjYsICAxMDEsICAxMDEsICAxMzIsICAxMjEsCisgICAgICAgNzIsICAgNzIsICAxMjEsICAx
MjEsICAgNzQsICAgNzQsICAxMjEsICAxMTEsICAxMjEsICAxMzUsCisKKyAgICAgIDEzMCwgIDEz
MiwgIDE0MCwgIDEzMiwgICA3NSwgICA3NiwgIDEzMCwgICA3NSwgIDEzNywgIDE0MSwKKyAgICAg
IDE0NywgIDE0NywgIDE0OCwgICA3NiwgIDc2MCwgIDEzNSwgIDEzNSwgIDE0MCwgIDE0OSwgIDc2
MSwKKyAgICAgIDE0OCwgIDEzNywgIDE0MSwgIDE1MywgICA3NiwgIDE1MywgIDE0OSwgIDE2MCwg
IDE2OCwgIDE2MCwKKyAgICAgIDE2MiwgIDE2MiwgIDE2MywgIDE2NywgIDE2MywgIDE2NywgIDE4
NCwgIDE4NCwgICA3NiwgIDE2NiwKKyAgICAgIDE2NiwgIDE2NiwgIDE2NiwgIDE2NiwgIDE2Niwg
IDE2NiwgIDE2NiwgIDE2NiwgIDE2NiwgIDE2MiwKKyAgICAgIDE2MiwgIDE3OSwgIDI0NiwgIDE2
OCwgIDIxNiwgIDIxNiwgIDIxNiwgIDIyOCwgIDc2MiwgIDE2NywKKyAgICAgIDI0NiwgIDIyOCwg
IDMwNCwgIDMwNCwgIDE3OSwgIDI1MiwgIDI1MiwgIDI1MiwgIDI1OCwgIDI1OCwKKyAgICAgIDI1
OCwgIDI1OCwgIDI1OCwgIDI1OCwgIDI1OCwgIDI1OCwgIDI1OCwgIDI1OCwgIDE2NywgIDI1OSwK
KyAgICAgIDc2MywgIDI1OSwgIDI2MCwgIDI2MCwgIDI2MCwgIDI2MCwgIDI2MCwgIDI2MCwgIDI2
MCwgIDI2MCwKKyAgICAgIDI2MCwgIDI2MCwgIDI2MSwgIDc2NSwgIDI2MSwgIDI3MCwgIDI3MCwg
IDI3MCwgIDI4MiwgIDI4MiwKKworICAgICAgMjgyLCAgMjkxLCAgMjkxLCAgMjkxLCAgNzY2LCAg
MjU5LCAgMjk1LCAgMjk1LCAgMjk1LCAgMzA1LAorICAgICAgMzA1LCAgMzA1LCAgMzQ3LCAgMzQ3
LCAgMzQ3LCAgMzkwLCAgMzkwLCAgMzkwLCAgMjYxLCAgNDAzLAorICAgICAgNDAzLCAgNDAzLCAg
NzY5LCAgNzcxLCAgMjU5LCAgNDA0LCAgNDA0LCAgNDA0LCAgNDA1LCAgNDA1LAorICAgICAgNDA1
LCAgMzkwLCAgMzkwLCAgNDU5LCAgNDU5LCAgNDU5LCAgNTI4LCAgMjYxLCAgNTA1LCAgNTA1LAor
ICAgICAgNTA1LCAgNTQ2LCAgNTQ2LCAgNTQ2LCAgNzczLCAgNzc0LCAgNTI4LCAgNzc1LCAgNzc2
LCAgNDU5LAorICAgICAgNDU5LCAgNTgyLCAgNTgyLCAgNTgyLCAgNTA1LCAgNTA1LCAgNjM1LCAg
NTQ2LCAgNTQ2LCAgNzc3LAorICAgICAgNTQ2LCAgNjA2LCAgNjA2LCAgNjA2LCAgNjM2LCAgNzc4
LCAgNjM1LCAgNTgyLCAgNTgyLCAgNzgwLAorICAgICAgNzgxLCAgNjM2LCAgNjY1LCAgNjM2LCAg
NjM2LCAgNjg3LCAgNzgyLCAgNjA2LCAgNjA2LCAgNjY1LAorICAgICAgNzgzLCAgNjY1LCAgNjg3
LCAgNzg0LCAgNjg3LCAgNzg1LCAgNzg4LCAgNzg5LCAgNzkyLCAgNzkzLAorICAgICAgNzk0LCAg
Nzk1LCAgNzk2LCAgNzk3LCAgNzk4LCAgNzk5LCAgODAwLCAgODAxLCAgODAyLCAgODAzLAorCisg
ICAgICA4MDYsICA4MDcsICA4MDgsICA4MDksICA4MTAsICA4MTEsICA4MTIsICA4MTMsICA4MTQs
ICA4MTUsCisgICAgICA4MTYsICA4MTcsICA4MjAsICA4MjEsICA4MjIsICA4MjMsICA4MjYsICA4
MjcsICA4MjgsICA4MzAsCisgICAgICA4MzEsICA4MzIsICA4MzQsICA4MzUsICA4MzgsICA4Mzks
ICA4NDAsICA4NDEsICA4NDIsICA4NDMsCisgICAgICA4NDQsICA4NDUsICA4NDYsICA4NDgsICA4
NDksICA4NTAsICA4NTEsICA4NTIsICA4NTMsICA4NTQsCisgICAgICA4NTUsICA4NTcsICA4NTgs
ICA4NTksICA4NjAsICA4NjIsICA4NjUsICA4NjksICA4NzAsICA4NzEsCisgICAgICA4NzMsICA4
NzQsICA4NzUsICA4NzcsICA4ODAsICA4ODEsICA4ODIsICA4ODMsICA4ODYsICA4ODYsCisgICAg
ICA3NTYsICA4ODYsICA3NTUsICA3NTQsICA4ODYsICA4ODcsICA4ODcsICA4ODcsICA4ODcsICA4
ODcsCisgICAgICA4ODcsICA4ODgsICA4ODgsICA4ODgsICA4ODgsICA4ODgsICA4ODgsICA4ODks
ICA3NTMsICA4ODksCisgICAgICA4ODksICA4OTAsICA3NTIsICA4OTAsICA4OTAsICA4OTEsICA3
NTEsICA4OTEsICA4OTIsICA4OTIsCisgICAgICA4OTIsICA4OTIsICA4OTMsICA3NTAsICA4OTMs
ICA4OTQsICA3NDksICA4OTQsICA3NDgsICA3NDcsCisKKyAgICAgIDc0NiwgIDc0NSwgIDc0NCwg
IDc0MiwgIDc0MSwgIDc0MCwgIDczOSwgIDczOCwgIDczNywgIDczNiwKKyAgICAgIDczNSwgIDcz
NCwgIDczMiwgIDczMSwgIDczMCwgIDcyOSwgIDcyOCwgIDcyNywgIDcyNiwgIDcyNSwKKyAgICAg
IDcyNCwgIDcyMywgIDcyMiwgIDcyMSwgIDcyMCwgIDcxOSwgIDcxOCwgIDcxNywgIDcxNiwgIDcx
NSwKKyAgICAgIDcxNCwgIDcxMywgIDcxMiwgIDcxMSwgIDcxMCwgIDcwOSwgIDcwOCwgIDcwNywg
IDcwNiwgIDcwNSwKKyAgICAgIDcwNCwgIDcwMywgIDcwMiwgIDcwMCwgIDY5OSwgIDY5OCwgIDY5
NywgIDY5NiwgIDY5NSwgIDY5NCwKKyAgICAgIDY5MiwgIDY5MSwgIDY5MCwgIDY4OSwgIDY4Niwg
IDY4NCwgIDY4MywgIDY4MiwgIDY4MCwgIDY3OSwKKyAgICAgIDY3OCwgIDY3NywgIDY3NiwgIDY3
NSwgIDY3NCwgIDY3MywgIDY3MiwgIDY3MSwgIDY3MCwgIDY2OSwKKyAgICAgIDY2OCwgIDY2Nywg
IDY2NCwgIDY2MywgIDY2MiwgIDY2MSwgIDY2MCwgIDY1OSwgIDY1NywgIDY1NiwKKyAgICAgIDY1
NSwgIDY1NCwgIDY1MywgIDY1MiwgIDY1MCwgIDY0OSwgIDY0OCwgIDY0NywgIDY0NiwgIDY0NSwK
KyAgICAgIDY0NCwgIDY0MywgIDY0MiwgIDY0MSwgIDY0MCwgIDYzOSwgIDYzOCwgIDYzNywgIDYz
MiwgIDYzMCwKKworICAgICAgNjI5LCAgNjI4LCAgNjI3LCAgNjI2LCAgNjI1LCAgNjIxLCAgNjIw
LCAgNjE5LCAgNjE4LCAgNjE3LAorICAgICAgNjE2LCAgNjE1LCAgNjE0LCAgNjEzLCAgNjExLCAg
NjEwLCAgNjA5LCAgNjA4LCAgNjA0LCAgNjAzLAorICAgICAgNjAxLCAgNjAwLCAgNTk4LCAgNTk3
LCAgNTk2LCAgNTk1LCAgNTk0LCAgNTkzLCAgNTkyLCAgNTg4LAorICAgICAgNTg3LCAgNTg2LCAg
NTg0LCAgNTgzLCAgNTgxLCAgNTgwLCAgNTc5LCAgNTc4LCAgNTc3LCAgNTc2LAorICAgICAgNTc1
LCAgNTc0LCAgNTczLCAgNTcyLCAgNTcwLCAgNTY5LCAgNTY0LCAgNTYzLCAgNTYyLCAgNTYxLAor
ICAgICAgNTYwLCAgNTU5LCAgNTU3LCAgNTU2LCAgNTU0LCAgNTUzLCAgNTUyLCAgNTUxLCAgNTUw
LCAgNTQ4LAorICAgICAgNTQ3LCAgNTQ1LCAgNTQ0LCAgNTQzLCAgNTQyLCAgNTQxLCAgNTQwLCAg
NTM5LCAgNTM4LCAgNTM1LAorICAgICAgNTM0LCAgNTMzLCAgNTMyLCAgNTMxLCAgNTMwLCAgNTI2
LCAgNTI1LCAgNTI0LCAgNTIzLCAgNTIyLAorICAgICAgNTIxLCAgNTE4LCAgNTE3LCAgNTE2LCAg
NTE1LCAgNTE0LCAgNTEzLCAgNTEyLCAgNTExLCAgNTEwLAorICAgICAgNTA5LCAgNTA4LCAgNTA3
LCAgNTA2LCAgNTA0LCAgNTAzLCAgNTAwLCAgNDk0LCAgNDkyLCAgNDkxLAorCisgICAgICA0OTAs
ICA0ODgsICA0ODcsICA0ODQsICA0ODMsICA0ODIsICA0ODEsICA0NzAsICA0NjksICA0NjgsCisg
ICAgICA0NjcsICA0NjYsICA0NjQsICA0NjMsICA0NjIsICA0NjEsICA0NjAsICA0NTcsICA0NTUs
ICA0NTQsCisgICAgICA0NTMsICA0NTEsICA0NTAsICA0NDksICA0NDgsICA0NDYsICA0NDUsICA0
NDQsICA0NDIsICA0NDEsCisgICAgICA0MzYsICA0MzUsICA0MzMsICA0MzIsICA0MzEsICA0MzAs
ICA0MjksICA0MjgsICA0MjcsICA0MjYsCisgICAgICA0MjUsICA0MjQsICA0MjMsICA0MjEsICA0
MjAsICA0MTksICA0MTgsICA0MTcsICA0MTYsICA0MTUsCisgICAgICA0MTQsICA0MTIsICA0MTEs
ICA0MTAsICA0MDksICA0MDgsICA0MDcsICA0MDYsICA0MDIsICAzOTgsCisgICAgICAzOTcsICAz
OTYsICAzOTUsICAzOTQsICAzOTEsICAzODksICAzNzksICAzNzcsICAzNzMsICAzNzIsCisgICAg
ICAzNzEsICAzNzAsICAzNjgsICAzNjcsICAzNjUsICAzNjAsICAzNTksICAzNTgsICAzNTcsICAz
NTYsCisgICAgICAzNTUsICAzNTQsICAzNTMsICAzNDgsICAzNDYsICAzNDUsICAzNDQsICAzNDMs
ICAzNDIsICAzNDAsCisgICAgICAzMzksICAzMzYsICAzMzUsICAzMzQsICAzMzMsICAzMzIsICAz
MzEsICAzMzAsICAzMjksICAzMjgsCisKKyAgICAgIDMyNywgIDMyNiwgIDMyNSwgIDMyNCwgIDMy
MywgIDMyMiwgIDMyMSwgIDMyMCwgIDMxOSwgIDMxOCwKKyAgICAgIDMxNywgIDMxNiwgIDMxNSwg
IDMxNCwgIDMxMywgIDMxMiwgIDMxMSwgIDMxMCwgIDMwOSwgIDMwNiwKKyAgICAgIDMwMywgIDMw
MiwgIDMwMSwgIDMwMCwgIDI5OSwgIDI5OCwgIDI5NywgIDI5NiwgIDI5NCwgIDI5MCwKKyAgICAg
IDI4OCwgIDI4NywgIDI4NiwgIDI4NSwgIDI4MSwgIDI4MCwgIDI3OSwgIDI3OCwgIDI3NywgIDI3
NiwKKyAgICAgIDI3NSwgIDI3NCwgIDI3MywgIDI2OSwgIDI2NywgIDI2NiwgIDI2NSwgIDI2NCwg
IDI1NywgIDI1NiwKKyAgICAgIDI1NSwgIDI1NCwgIDI1MywgIDI1MSwgIDI1MCwgIDI0OSwgIDI0
OCwgIDI0NywgIDI0NSwgIDI0NCwKKyAgICAgIDI0MywgIDI0MiwgIDI0MSwgIDI0MCwgIDIzOSwg
IDIzOCwgIDIzNywgIDIzNiwgIDIzNSwgIDIzNCwKKyAgICAgIDIzMywgIDIzMiwgIDIzMSwgIDIz
MCwgIDIyOSwgIDIyNywgIDIyNiwgIDIyNSwgIDIyNCwgIDIyMywKKyAgICAgIDIyMiwgIDIyMSwg
IDIyMCwgIDIxOSwgIDIxOCwgIDIxNywgIDIxNSwgIDIxNCwgIDIxMywgIDIxMiwKKyAgICAgIDIx
MSwgIDIxMCwgIDIwOSwgIDIwOCwgIDIwNywgIDIwNiwgIDIwNSwgIDIwNCwgIDIwMywgIDIwMiwK
KworICAgICAgMjAxLCAgMjAwLCAgMTk5LCAgMTk4LCAgMTk2LCAgMTk1LCAgMTk0LCAgMTkzLCAg
MTkyLCAgMTkxLAorICAgICAgMTkwLCAgMTg5LCAgMTg4LCAgMTg3LCAgMTg2LCAgMTg1LCAgMTgz
LCAgMTgyLCAgMTgxLCAgMTgwLAorICAgICAgMTc4LCAgMTc3LCAgMTc2LCAgMTc1LCAgMTc0LCAg
MTcyLCAgMTcxLCAgMTU2LCAgMTU1LCAgMTU0LAorICAgICAgMTUyLCAgMTUxLCAgMTUwLCAgMTQ2
LCAgMTQ1LCAgMTQ0LCAgMTQzLCAgMTQyLCAgMTM5LCAgMTM4LAorICAgICAgMTM2LCAgMTM0LCAg
MTMzLCAgMTMxLCAgMTI5LCAgMTI4LCAgMTI3LCAgMTI1LCAgMTI0LCAgMTIzLAorICAgICAgMTIy
LCAgMTIwLCAgMTE5LCAgMTE3LCAgMTE2LCAgMTE1LCAgMTE0LCAgMTEzLCAgMTEyLCAgMTA5LAor
ICAgICAgMTA4LCAgMTA3LCAgMTA2LCAgMTA1LCAgMTA0LCAgMTAzLCAgMTAyLCAgMTAwLCAgIDk5
LCAgIDk4LAorICAgICAgIDk3LCAgIDk2LCAgIDk1LCAgIDkzLCAgIDkyLCAgIDkxLCAgIDg3LCAg
IDgzLCAgIDUzLCAgIDQ3LAorICAgICAgIDQ1LCAgIDM5LCAgIDMyLCAgIDI1LCAgIDIyLCAgIDE5
LCAgIDE0LCAgICA5LCAgICA1LCAgODg1LAorICAgICAgODg1LCAgODg1LCAgODg1LCAgODg1LCAg
ODg1LCAgODg1LCAgODg1LCAgODg1LCAgODg1LCAgODg1LAorCisgICAgICA4ODUsICA4ODUsICA4
ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsCisgICAgICA4ODUs
ICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsCisg
ICAgICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUs
ICA4ODUsCisgICAgICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4
ODUsICA4ODUsICA4ODUsCisgICAgICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUs
ICA4ODUsICA4ODUsICA4ODUsICA4ODUsCisgICAgICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4
ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsICA4ODUsCisgICAgICA4ODUsICA4ODUsICA4ODUs
ICA4ODUsICA4ODUsICA4ODUsICA4ODUKICAgICB9IDsKIAogLyogVGFibGUgb2YgYm9vbGVhbnMs
IHRydWUgaWYgcnVsZSBjb3VsZCBtYXRjaCBlb2wuICovCi1zdGF0aWMgeXljb25zdCBmbGV4X2lu
dDMyX3QgeXlfcnVsZV9jYW5fbWF0Y2hfZW9sWzI0MV0gPQorc3RhdGljIHl5Y29uc3QgZmxleF9p
bnQzMl90IHl5X3J1bGVfY2FuX21hdGNoX2VvbFsyNDddID0KICAgICB7ICAgMCwKIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IApAQCAtOTk3LDggKzEwNDAsOCBAQCBzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfcnVs
ZV9jYW5fbWF0Y2hfZW9sWzI0MV0gPQogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAs
IAotICAgIDAsICAgICB9OworICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEsIDAsIDAsICAgICB9
OwogCiAvKiBUaGUgaW50ZW50IGJlaGluZCB0aGlzIGRlZmluaXRpb24gaXMgdGhhdCBpdCdsbCBj
YXRjaAogICogYW55IHVzZXMgb2YgUkVKRUNUIHdoaWNoIGZsZXggbWlzc2VkLgpAQCAtMTAyNyw2
ICsxMDcwLDkgQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIExFWEVSIChnbHNsYW5nX2xl
eC5jcHApLgogI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgogI2luY2x1
ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvdXRpbC5oIgogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5z
bGF0b3IvbGVuZ3RoX2xpbWl0cy5oIgorCit1c2luZyBuYW1lc3BhY2Ugc2g7CisKICNpbmNsdWRl
ICJnbHNsYW5nX3RhYi5oIgogCiAvKiB3aW5kb3dzIG9ubHkgcHJhZ21hICovCkBAIC0xMDU0LDEw
ICsxMTAwLDE1IEBAIHN0YXRpYyBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNjYW5fdCB5eXNjYW5uZXIp
Owogc3RhdGljIGludCBFUzJfcmVzZXJ2ZWRfRVMzX2tleXdvcmQoVFBhcnNlQ29udGV4dCAqY29u
dGV4dCwgaW50IHRva2VuKTsKIHN0YXRpYyBpbnQgRVMyX2tleXdvcmRfRVMzX3Jlc2VydmVkKFRQ
YXJzZUNvbnRleHQgKmNvbnRleHQsIGludCB0b2tlbik7CiBzdGF0aWMgaW50IEVTMl9pZGVudF9F
UzNfa2V5d29yZChUUGFyc2VDb250ZXh0ICpjb250ZXh0LCBpbnQgdG9rZW4pOworc3RhdGljIGlu
dCBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tleXdvcmQoVFBhcnNlQ29udGV4dCAqY29u
dGV4dCwgaW50IHRva2VuKTsKK3N0YXRpYyBpbnQgRVMyX2FuZF9FUzNfcmVzZXJ2ZWRfRVMzXzFf
a2V5d29yZChUUGFyc2VDb250ZXh0ICpjb250ZXh0LCBpbnQgdG9rZW4pOworc3RhdGljIGludCBF
UzJfYW5kX0VTM19pZGVudF9FUzNfMV9rZXl3b3JkKFRQYXJzZUNvbnRleHQgKmNvbnRleHQsIGlu
dCB0b2tlbik7CitzdGF0aWMgaW50IEVTM19leHRlbnNpb25fa2V5d29yZF9lbHNlX2lkZW50KFRQ
YXJzZUNvbnRleHQgKmNvbnRleHQsIGNvbnN0IGNoYXIgKmV4dGVuc2lvbiwgaW50IHRva2VuKTsK
IHN0YXRpYyBpbnQgdWludF9jb25zdGFudChUUGFyc2VDb250ZXh0ICpjb250ZXh0KTsKIHN0YXRp
YyBpbnQgaW50X2NvbnN0YW50KFRQYXJzZUNvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIGludCBm
bG9hdF9jb25zdGFudCh5eXNjYW5fdCB5eXNjYW5uZXIpOwogc3RhdGljIGludCBmbG9hdHN1ZmZp
eF9jaGVjayhUUGFyc2VDb250ZXh0KiBjb250ZXh0KTsKK3N0YXRpYyBpbnQgeXV2Y3Njc3RhbmRh
cmRleHRfY29uc3RhbnQoVFBhcnNlQ29udGV4dCAqY29udGV4dCk7CiAKICNkZWZpbmUgSU5JVElB
TCAwCiAjZGVmaW5lIEZJRUxEUyAxCkBAIC0xMzUwLDEzICsxNDAxLDEzIEBAIHl5X21hdGNoOgog
CQkJd2hpbGUgKCB5eV9jaGtbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArIHl5X2NdICE9IHl5
X2N1cnJlbnRfc3RhdGUgKQogCQkJCXsKIAkJCQl5eV9jdXJyZW50X3N0YXRlID0gKGludCkgeXlf
ZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4MjAg
KQorCQkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSA4ODYgKQogCQkJCQl5eV9jID0geXlfbWV0
YVsodW5zaWduZWQgaW50KSB5eV9jXTsKIAkJCQl9CiAJCQl5eV9jdXJyZW50X3N0YXRlID0geXlf
bnh0W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50KSB5eV9jXTsKIAkJ
CSsreXlfY3A7CiAJCQl9Ci0JCXdoaWxlICggeXlfY3VycmVudF9zdGF0ZSAhPSA4MTkgKTsKKwkJ
d2hpbGUgKCB5eV9jdXJyZW50X3N0YXRlICE9IDg4NSApOwogCQl5eV9jcCA9IHl5Zy0+eXlfbGFz
dF9hY2NlcHRpbmdfY3BvczsKIAkJeXlfY3VycmVudF9zdGF0ZSA9IHl5Zy0+eXlfbGFzdF9hY2Nl
cHRpbmdfc3RhdGU7CiAKQEAgLTEzNjgsNyArMTQxOSw3IEBAIHl5X2ZpbmRfYWN0aW9uOgogCQlp
ZiAoIHl5X2FjdCAhPSBZWV9FTkRfT0ZfQlVGRkVSICYmIHl5X3J1bGVfY2FuX21hdGNoX2VvbFt5
eV9hY3RdICkKIAkJCXsKIAkJCXl5X3NpemVfdCB5eWw7Ci0JCQlmb3IgKCB5eWwgPSAwOyB5eWwg
PCB5eWxlbmc7ICsreXlsICkKKwkJCWZvciAoIHl5bCA9IDA7IHl5bCA8IHN0YXRpY19jYXN0PHl5
X3NpemVfdD4oeXlsZW5nKTsgKyt5eWwgKQogCQkJCWlmICggeXl0ZXh0W3l5bF0gPT0gJ1xuJyAp
CiAJCQkJCSAgIAogICAgIGRveyB5eWxpbmVubysrOwpAQCAtMTQ5MCwyNDMgKzE1NDEsMzIxIEBA
IFlZX1JVTEVfU0VUVVAKIAlZWV9CUkVBSwogY2FzZSAyNjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0
dXJuIEZMT0FUX1RZUEU7IH0KK3sgcmV0dXJuIEVTMl9hbmRfRVMzX2lkZW50X0VTM18xX2tleXdv
cmQoY29udGV4dCwgU0hBUkVEKTsgfQogCVlZX0JSRUFLCiBjYXNlIDI3OgogWVlfUlVMRV9TRVRV
UAoteyByZXR1cm4gSU5UX1RZUEU7IH0KK3sgcmV0dXJuIEZMT0FUX1RZUEU7IH0KIAlZWV9CUkVB
SwogY2FzZSAyODoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29y
ZChjb250ZXh0LCBVSU5UX1RZUEUpOyB9Cit7IHJldHVybiBJTlRfVFlQRTsgfQogCVlZX0JSRUFL
CiBjYXNlIDI5OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gVk9JRF9UWVBFOyB9Cit7IHJldHVy
biBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgVUlOVF9UWVBFKTsgfQogCVlZX0JSRUFL
CiBjYXNlIDMwOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gQk9PTF9UWVBFOyB9Cit7IHJldHVy
biBWT0lEX1RZUEU7IH0KIAlZWV9CUkVBSwogY2FzZSAzMToKIFlZX1JVTEVfU0VUVVAKLXsgeXls
dmFsLT5sZXguYiA9IHRydWU7ICByZXR1cm4gQk9PTENPTlNUQU5UOyB9Cit7IHJldHVybiBCT09M
X1RZUEU7IH0KIAlZWV9CUkVBSwogY2FzZSAzMjoKIFlZX1JVTEVfU0VUVVAKLXsgeXlsdmFsLT5s
ZXguYiA9IGZhbHNlOyByZXR1cm4gQk9PTENPTlNUQU5UOyB9Cit7IHl5bHZhbC0+bGV4LmIgPSB0
cnVlOyAgcmV0dXJuIEJPT0xDT05TVEFOVDsgfQogCVlZX0JSRUFLCiBjYXNlIDMzOgogWVlfUlVM
RV9TRVRVUAoteyByZXR1cm4gRElTQ0FSRDsgfQoreyB5eWx2YWwtPmxleC5iID0gZmFsc2U7IHJl
dHVybiBCT09MQ09OU1RBTlQ7IH0KIAlZWV9CUkVBSwogY2FzZSAzNDoKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuIFJFVFVSTjsgfQoreyByZXR1cm4gRElTQ0FSRDsgfQogCVlZX0JSRUFLCiBjYXNl
IDM1OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gTUFUUklYMjsgfQoreyByZXR1cm4gUkVUVVJO
OyB9CiAJWVlfQlJFQUsKIGNhc2UgMzY6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBNQVRSSVgz
OyB9Cit7IHJldHVybiBNQVRSSVgyOyB9CiAJWVlfQlJFQUsKIGNhc2UgMzc6CiBZWV9SVUxFX1NF
VFVQCi17IHJldHVybiBNQVRSSVg0OyB9Cit7IHJldHVybiBNQVRSSVgzOyB9CiAJWVlfQlJFQUsK
IGNhc2UgMzg6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQo
Y29udGV4dCwgTUFUUklYMik7IH0KK3sgcmV0dXJuIE1BVFJJWDQ7IH0KIAlZWV9CUkVBSwogY2Fz
ZSAzOToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250
ZXh0LCBNQVRSSVgzKTsgfQoreyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3b3JkKGNvbnRleHQs
IE1BVFJJWDIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDA6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVy
biBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgTUFUUklYNCk7IH0KK3sgcmV0dXJuIEVT
Ml9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBNQVRSSVgzKTsgfQogCVlZX0JSRUFLCiBjYXNl
IDQxOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3b3JkKGNvbnRl
eHQsIE1BVFJJWDJ4Myk7IH0KK3sgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0
LCBNQVRSSVg0KTsgfQogCVlZX0JSRUFLCiBjYXNlIDQyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1
cm4gRVMyX2lkZW50X0VTM19rZXl3b3JkKGNvbnRleHQsIE1BVFJJWDN4Mik7IH0KK3sgcmV0dXJu
IEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBNQVRSSVgyeDMpOyB9CiAJWVlfQlJFQUsK
IGNhc2UgNDM6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQo
Y29udGV4dCwgTUFUUklYMng0KTsgfQoreyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3b3JkKGNv
bnRleHQsIE1BVFJJWDN4Mik7IH0KIAlZWV9CUkVBSwogY2FzZSA0NDoKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBNQVRSSVg0eDIpOyB9Cit7
IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgTUFUUklYMng0KTsgfQogCVlZ
X0JSRUFLCiBjYXNlIDQ1OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gRVMyX2lkZW50X0VTM19r
ZXl3b3JkKGNvbnRleHQsIE1BVFJJWDN4NCk7IH0KK3sgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5
d29yZChjb250ZXh0LCBNQVRSSVg0eDIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDY6CiBZWV9SVUxF
X1NFVFVQCi17IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgTUFUUklYNHgz
KTsgfQoreyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3b3JkKGNvbnRleHQsIE1BVFJJWDN4NCk7
IH0KIAlZWV9CUkVBSwogY2FzZSA0NzoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIFZFQzI7IH0K
K3sgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBNQVRSSVg0eDMpOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgNDg6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBWRUMzOyB9Cit7IHJl
dHVybiBWRUMyOyB9CiAJWVlfQlJFQUsKIGNhc2UgNDk6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVy
biBWRUM0OyB9Cit7IHJldHVybiBWRUMzOyB9CiAJWVlfQlJFQUsKIGNhc2UgNTA6CiBZWV9SVUxF
X1NFVFVQCi17IHJldHVybiBJVkVDMjsgfQoreyByZXR1cm4gVkVDNDsgfQogCVlZX0JSRUFLCiBj
YXNlIDUxOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gSVZFQzM7IH0KK3sgcmV0dXJuIElWRUMy
OyB9CiAJWVlfQlJFQUsKIGNhc2UgNTI6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBJVkVDNDsg
fQoreyByZXR1cm4gSVZFQzM7IH0KIAlZWV9CUkVBSwogY2FzZSA1MzoKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuIEJWRUMyOyB9Cit7IHJldHVybiBJVkVDNDsgfQogCVlZX0JSRUFLCiBjYXNlIDU0
OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gQlZFQzM7IH0KK3sgcmV0dXJuIEJWRUMyOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgNTU6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBCVkVDNDsgfQoreyBy
ZXR1cm4gQlZFQzM7IH0KIAlZWV9CUkVBSwogY2FzZSA1NjoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0
dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBVVkVDMik7IH0KK3sgcmV0dXJuIEJW
RUM0OyB9CiAJWVlfQlJFQUsKIGNhc2UgNTc6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBFUzJf
aWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgVVZFQzMpOyB9Cit7IHJldHVybiBFUzJfaWRlbnRf
RVMzX2tleXdvcmQoY29udGV4dCwgVVZFQzIpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNTg6CiBZWV9S
VUxFX1NFVFVQCi17IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgVVZFQzQp
OyB9Cit7IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgVVZFQzMpOyB9CiAJ
WVlfQlJFQUsKIGNhc2UgNTk6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBTQU1QTEVSMkQ7IH0K
K3sgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBVVkVDNCk7IH0KIAlZWV9C
UkVBSwogY2FzZSA2MDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIFNBTVBMRVJDVUJFOyB9Cit7
IHJldHVybiBTQU1QTEVSMkQ7IH0KIAlZWV9CUkVBSwogY2FzZSA2MToKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuIFNBTVBMRVJfRVhURVJOQUxfT0VTOyB9Cit7IHJldHVybiBTQU1QTEVSQ1VCRTsg
fQogCVlZX0JSRUFLCiBjYXNlIDYyOgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gRVMyX3Jlc2Vy
dmVkX0VTM19rZXl3b3JkKGNvbnRleHQsIFNBTVBMRVIzRCk7IH0KK3sgcmV0dXJuIFNBTVBMRVJf
RVhURVJOQUxfT0VTOyB9CiAJWVlfQlJFQUsKIGNhc2UgNjM6CiBZWV9SVUxFX1NFVFVQCi17IHJl
dHVybiBFUzJfcmVzZXJ2ZWRfRVMzX2tleXdvcmQoY29udGV4dCwgU0FNUExFUjNEUkVDVCk7IH0K
K3sgcmV0dXJuIEVTMl9yZXNlcnZlZF9FUzNfa2V5d29yZChjb250ZXh0LCBTQU1QTEVSM0QpOyB9
CiAJWVlfQlJFQUsKIGNhc2UgNjQ6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBTQU1QTEVSMkRS
RUNUOyB9Cit7IHJldHVybiBFUzJfcmVzZXJ2ZWRfRVMzX2tleXdvcmQoY29udGV4dCwgU0FNUExF
UjNEUkVDVCk7IH0KIAlZWV9CUkVBSwogY2FzZSA2NToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJu
IEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBTQU1QTEVSMkRBUlJBWSk7IH0KK3sgcmV0
dXJuIFNBTVBMRVIyRFJFQ1Q7IH0KIAlZWV9CUkVBSwogY2FzZSA2NjoKIFlZX1JVTEVfU0VUVVAK
LXsgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBJU0FNUExFUjJEKTsgfQor
eyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3b3JkKGNvbnRleHQsIFNBTVBMRVIyREFSUkFZKTsg
fQogCVlZX0JSRUFLCiBjYXNlIDY3OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gRVMyX2lkZW50
X0VTM19rZXl3b3JkKGNvbnRleHQsIElTQU1QTEVSM0QpOyB9Cit7IHJldHVybiBFUzJfaWRlbnRf
RVMzX3Jlc2VydmVkX0VTM18xX2tleXdvcmQoY29udGV4dCwgU0FNUExFUjJETVMpOyB9CiAJWVlf
QlJFQUsKIGNhc2UgNjg6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBFUzJfaWRlbnRfRVMzX2tl
eXdvcmQoY29udGV4dCwgSVNBTVBMRVJDVUJFKTsgfQoreyByZXR1cm4gRVMyX2lkZW50X0VTM19r
ZXl3b3JkKGNvbnRleHQsIElTQU1QTEVSMkQpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNjk6CiBZWV9S
VUxFX1NFVFVQCi17IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgSVNBTVBM
RVIyREFSUkFZKTsgfQoreyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3b3JkKGNvbnRleHQsIElT
QU1QTEVSM0QpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNzA6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVy
biBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgVVNBTVBMRVIyRCk7IH0KK3sgcmV0dXJu
IEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBJU0FNUExFUkNVQkUpOyB9CiAJWVlfQlJF
QUsKIGNhc2UgNzE6CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdv
cmQoY29udGV4dCwgVVNBTVBMRVIzRCk7IH0KK3sgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29y
ZChjb250ZXh0LCBJU0FNUExFUjJEQVJSQVkpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNzI6CiBZWV9S
VUxFX1NFVFVQCi17IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgVVNBTVBM
RVJDVUJFKTsgfQoreyByZXR1cm4gRVMyX2lkZW50X0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3b3Jk
KGNvbnRleHQsIElTQU1QTEVSMkRNUyk7IH0KIAlZWV9CUkVBSwogY2FzZSA3MzoKIFlZX1JVTEVf
U0VUVVAKLXsgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5d29yZChjb250ZXh0LCBVU0FNUExFUjJE
QVJSQVkpOyB9Cit7IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgVVNBTVBM
RVIyRCk7IH0KIAlZWV9CUkVBSwogY2FzZSA3NDoKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIEVT
Ml9yZXNlcnZlZF9FUzNfa2V5d29yZChjb250ZXh0LCBTQU1QTEVSMkRTSEFET1cpOyB9Cit7IHJl
dHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgVVNBTVBMRVIzRCk7IH0KIAlZWV9C
UkVBSwogY2FzZSA3NToKIFlZX1JVTEVfU0VUVVAKLXsgcmV0dXJuIEVTMl9pZGVudF9FUzNfa2V5
d29yZChjb250ZXh0LCBTQU1QTEVSQ1VCRVNIQURPVyk7IH0KK3sgcmV0dXJuIEVTMl9pZGVudF9F
UzNfa2V5d29yZChjb250ZXh0LCBVU0FNUExFUkNVQkUpOyB9CiAJWVlfQlJFQUsKIGNhc2UgNzY6
CiBZWV9SVUxFX1NFVFVQCi17IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwg
U0FNUExFUjJEQVJSQVlTSEFET1cpOyB9Cit7IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQo
Y29udGV4dCwgVVNBTVBMRVIyREFSUkFZKTsgfQogCVlZX0JSRUFLCiBjYXNlIDc3OgogWVlfUlVM
RV9TRVRVUAoteyByZXR1cm4gU1RSVUNUOyB9Cit7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2Vy
dmVkX0VTM18xX2tleXdvcmQoY29udGV4dCwgVVNBTVBMRVIyRE1TKTsgfQogCVlZX0JSRUFLCiBj
YXNlIDc4OgogWVlfUlVMRV9TRVRVUAoteyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3b3JkKGNv
bnRleHQsIExBWU9VVCk7IH0KK3sgcmV0dXJuIEVTMl9yZXNlcnZlZF9FUzNfa2V5d29yZChjb250
ZXh0LCBTQU1QTEVSMkRTSEFET1cpOyB9CiAJWVlfQlJFQUsKLS8qIFJlc2VydmVkIGtleXdvcmRz
IGZvciBHTFNMIEVTIDMuMDAgdGhhdCBhcmUgbm90IHJlc2VydmVkIGZvciBHTFNMIEVTIDEuMDAg
Ki8KIGNhc2UgNzk6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdv
cmQoY29udGV4dCwgU0FNUExFUkNVQkVTSEFET1cpOyB9CisJWVlfQlJFQUsKIGNhc2UgODA6CitZ
WV9SVUxFX1NFVFVQCit7IHJldHVybiBFUzJfaWRlbnRfRVMzX2tleXdvcmQoY29udGV4dCwgU0FN
UExFUjJEQVJSQVlTSEFET1cpOyB9CisJWVlfQlJFQUsKIGNhc2UgODE6CitZWV9SVUxFX1NFVFVQ
Cit7IHJldHVybiBFUzNfZXh0ZW5zaW9uX2tleXdvcmRfZWxzZV9pZGVudChjb250ZXh0LCAiR0xf
RVhUX1lVVl90YXJnZXQiLCBTQU1QTEVSRVhURVJOQUwyRFkyWUVYVCk7IH0KKwlZWV9CUkVBSwog
Y2FzZSA4MjoKK1lZX1JVTEVfU0VUVVAKK3sgcmV0dXJuIFNUUlVDVDsgfQorCVlZX0JSRUFLCiBj
YXNlIDgzOgorWVlfUlVMRV9TRVRVUAoreyByZXR1cm4gRVMyX2lkZW50X0VTM19rZXl3b3JkKGNv
bnRleHQsIExBWU9VVCk7IH0KKwlZWV9CUkVBSwogY2FzZSA4NDoKK1lZX1JVTEVfU0VUVVAKK3sg
cmV0dXJuIEVTM19leHRlbnNpb25fa2V5d29yZF9lbHNlX2lkZW50KGNvbnRleHQsICJHTF9FWFRf
WVVWX3RhcmdldCIsIFlVVkNTQ1NUQU5EQVJERVhUKTsgfQorCVlZX0JSRUFLCiBjYXNlIDg1Ogor
WVlfUlVMRV9TRVRVUAoreyByZXR1cm4geXV2Y3Njc3RhbmRhcmRleHRfY29uc3RhbnQoY29udGV4
dCk7IH0KKwlZWV9CUkVBSwogY2FzZSA4NjoKK1lZX1JVTEVfU0VUVVAKK3sgcmV0dXJuIHl1dmNz
Y3N0YW5kYXJkZXh0X2NvbnN0YW50KGNvbnRleHQpOyB9CisJWVlfQlJFQUsKIGNhc2UgODc6CitZ
WV9SVUxFX1NFVFVQCit7IHJldHVybiB5dXZjc2NzdGFuZGFyZGV4dF9jb25zdGFudChjb250ZXh0
KTsgfQorCVlZX0JSRUFLCiBjYXNlIDg4OgorWVlfUlVMRV9TRVRVUAoreyByZXR1cm4gRVMyX2lk
ZW50X0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRleHQsIElNQUdFMkQpOyB9CisJWVlf
QlJFQUsKIGNhc2UgODk6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jl
c2VydmVkX0VTM18xX2tleXdvcmQoY29udGV4dCwgSUlNQUdFMkQpOyB9CisJWVlfQlJFQUsKIGNh
c2UgOTA6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VT
M18xX2tleXdvcmQoY29udGV4dCwgVUlNQUdFMkQpOyB9CisJWVlfQlJFQUsKIGNhc2UgOTE6CitZ
WV9SVUxFX1NFVFVQCit7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tleXdv
cmQoY29udGV4dCwgSU1BR0UyREFSUkFZKTsgfQorCVlZX0JSRUFLCiBjYXNlIDkyOgorWVlfUlVM
RV9TRVRVUAoreyByZXR1cm4gRVMyX2lkZW50X0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNv
bnRleHQsIElJTUFHRTJEQVJSQVkpOyB9CisJWVlfQlJFQUsKIGNhc2UgOTM6CitZWV9SVUxFX1NF
VFVQCit7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VTM18xX2tleXdvcmQoY29udGV4
dCwgVUlNQUdFMkRBUlJBWSk7IH0KKwlZWV9CUkVBSwogY2FzZSA5NDoKK1lZX1JVTEVfU0VUVVAK
K3sgcmV0dXJuIEVTMl9pZGVudF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChjb250ZXh0LCBJ
TUFHRTNEKTsgfQorCVlZX0JSRUFLCiBjYXNlIDk1OgorWVlfUlVMRV9TRVRVUAoreyByZXR1cm4g
RVMyX2lkZW50X0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRleHQsIFVJTUFHRTNEKTsg
fQorCVlZX0JSRUFLCiBjYXNlIDk2OgorWVlfUlVMRV9TRVRVUAoreyByZXR1cm4gRVMyX2lkZW50
X0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRleHQsIElJTUFHRTNEKTsgfQorCVlZX0JS
RUFLCiBjYXNlIDk3OgorWVlfUlVMRV9TRVRVUAoreyByZXR1cm4gRVMyX2lkZW50X0VTM19yZXNl
cnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRleHQsIElJTUFHRUNVQkUpOyB9CisJWVlfQlJFQUsKIGNh
c2UgOTg6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybiBFUzJfaWRlbnRfRVMzX3Jlc2VydmVkX0VT
M18xX2tleXdvcmQoY29udGV4dCwgVUlNQUdFQ1VCRSk7IH0KKwlZWV9CUkVBSwogY2FzZSA5OToK
K1lZX1JVTEVfU0VUVVAKK3sgcmV0dXJuIEVTMl9pZGVudF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5
d29yZChjb250ZXh0LCBJTUFHRUNVQkUpOyB9CisJWVlfQlJFQUsKIGNhc2UgMTAwOgorWVlfUlVM
RV9TRVRVUAoreyByZXR1cm4gRVMyX2lkZW50X0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNv
bnRleHQsIFJFQURPTkxZKTsgfQorCVlZX0JSRUFLCiBjYXNlIDEwMToKK1lZX1JVTEVfU0VUVVAK
K3sgcmV0dXJuIEVTMl9pZGVudF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChjb250ZXh0LCBX
UklURU9OTFkpOyB9CisJWVlfQlJFQUsKIGNhc2UgMTAyOgorWVlfUlVMRV9TRVRVUAoreyByZXR1
cm4gRVMyX2lkZW50X0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRleHQsIENPSEVSRU5U
KTsgfQorCVlZX0JSRUFLCiBjYXNlIDEwMzoKK1lZX1JVTEVfU0VUVVAKK3sgcmV0dXJuIEVTMl9p
ZGVudF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChjb250ZXh0LCBSRVNUUklDVCk7IH0KKwlZ
WV9CUkVBSwogY2FzZSAxMDQ6CitZWV9SVUxFX1NFVFVQCit7IHJldHVybiBFUzJfYW5kX0VTM19y
ZXNlcnZlZF9FUzNfMV9rZXl3b3JkKGNvbnRleHQsIFZPTEFUSUxFKTsgfQorCVlZX0JSRUFLCisv
KiBSZXNlcnZlZCBrZXl3b3JkcyBmb3IgR0xTTCBFUyAzLjAwIHRoYXQgYXJlIG5vdCByZXNlcnZl
ZCBmb3IgR0xTTCBFUyAxLjAwICovCiBjYXNlIDEwNToKIGNhc2UgMTA2OgogY2FzZSAxMDc6CkBA
IC0xNzU3LDYgKzE4ODYsMTMgQEAgY2FzZSAxMzE6CiBjYXNlIDEzMjoKIGNhc2UgMTMzOgogY2Fz
ZSAxMzQ6CitjYXNlIDEzNToKK2Nhc2UgMTM2OgorY2FzZSAxMzc6CitjYXNlIDEzODoKK2Nhc2Ug
MTM5OgorY2FzZSAxNDA6CitjYXNlIDE0MToKIFlZX1JVTEVfU0VUVVAKIHsgCiAgICAgaWYgKGNv
bnRleHQtPmdldFNoYWRlclZlcnNpb24oKSA8IDMwMCkgewpAQCAtMTc2Nyw3ICsxOTAzLDcgQEAg
WVlfUlVMRV9TRVRVUAogfQogCVlZX0JSRUFLCiAvKiBSZXNlcnZlZCBrZXl3b3JkcyBpbiBHTFNM
IEVTIDEuMDAgdGhhdCBhcmUgbm90IHJlc2VydmVkIGluIEdMU0wgRVMgMy4wMCAqLwotY2FzZSAx
MzU6CitjYXNlIDE0MjoKIFlZX1JVTEVfU0VUVVAKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0U2hh
ZGVyVmVyc2lvbigpID49IDMwMCkKQEAgLTE3ODAsMTMgKzE5MTYsNiBAQCBZWV9SVUxFX1NFVFVQ
CiB9CiAJWVlfQlJFQUsKIC8qIFJlc2VydmVkIGtleXdvcmRzICovCi1jYXNlIDEzNjoKLWNhc2Ug
MTM3OgotY2FzZSAxMzg6Ci1jYXNlIDEzOToKLWNhc2UgMTQwOgotY2FzZSAxNDE6Ci1jYXNlIDE0
MjoKIGNhc2UgMTQzOgogY2FzZSAxNDQ6CiBjYXNlIDE0NToKQEAgLTE4MjEsMjQ1ICsxOTUwLDI1
MSBAQCBjYXNlIDE3MzoKIGNhc2UgMTc0OgogY2FzZSAxNzU6CiBjYXNlIDE3NjoKK2Nhc2UgMTc3
OgorY2FzZSAxNzg6CitjYXNlIDE3OToKK2Nhc2UgMTgwOgorY2FzZSAxODE6CitjYXNlIDE4MjoK
IFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuIHJlc2VydmVkX3dvcmQoeXlzY2FubmVyKTsgfQogCVlZ
X0JSRUFLCi1jYXNlIDE3NzoKK2Nhc2UgMTgzOgogWVlfUlVMRV9TRVRVUAogewogICAgeXlsdmFs
LT5sZXguc3RyaW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0KTsgCiAgICByZXR1cm4gY2hlY2tf
dHlwZSh5eXNjYW5uZXIpOwogfQogCVlZX0JSRUFLCi1jYXNlIDE3ODoKK2Nhc2UgMTg0OgogWVlf
UlVMRV9TRVRVUAogeyByZXR1cm4gaW50X2NvbnN0YW50KGNvbnRleHQpOyB9CiAJWVlfQlJFQUsK
LWNhc2UgMTc5OgorY2FzZSAxODU6CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybiBpbnRfY29uc3Rh
bnQoY29udGV4dCk7IH0KIAlZWV9CUkVBSwotY2FzZSAxODA6CitjYXNlIDE4NjoKIFlZX1JVTEVf
U0VUVVAKIHsgcmV0dXJuIGludF9jb25zdGFudChjb250ZXh0KTsgfQogCVlZX0JSRUFLCi1jYXNl
IDE4MToKK2Nhc2UgMTg3OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gdWludF9jb25zdGFudChj
b250ZXh0KTsgfQogCVlZX0JSRUFLCi1jYXNlIDE4MjoKK2Nhc2UgMTg4OgogWVlfUlVMRV9TRVRV
UAogeyByZXR1cm4gdWludF9jb25zdGFudChjb250ZXh0KTsgfQogCVlZX0JSRUFLCi1jYXNlIDE4
MzoKK2Nhc2UgMTg5OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gdWludF9jb25zdGFudChjb250
ZXh0KTsgfQogCVlZX0JSRUFLCi1jYXNlIDE4NDoKK2Nhc2UgMTkwOgogWVlfUlVMRV9TRVRVUAog
eyByZXR1cm4gZmxvYXRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQogCVlZX0JSRUFLCi1jYXNlIDE4
NToKK2Nhc2UgMTkxOgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gZmxvYXRfY29uc3RhbnQoeXlz
Y2FubmVyKTsgfQogCVlZX0JSRUFLCi1jYXNlIDE4NjoKK2Nhc2UgMTkyOgogWVlfUlVMRV9TRVRV
UAogeyByZXR1cm4gZmxvYXRfY29uc3RhbnQoeXlzY2FubmVyKTsgfQogCVlZX0JSRUFLCi1jYXNl
IDE4NzoKK2Nhc2UgMTkzOgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gZmxvYXRzdWZmaXhfY2hl
Y2soY29udGV4dCk7IH0KIAlZWV9CUkVBSwotY2FzZSAxODg6CitjYXNlIDE5NDoKIFlZX1JVTEVf
U0VUVVAKIHsgcmV0dXJuIGZsb2F0c3VmZml4X2NoZWNrKGNvbnRleHQpOyB9CiAJWVlfQlJFQUsK
LWNhc2UgMTg5OgorY2FzZSAxOTU6CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybiBmbG9hdHN1ZmZp
eF9jaGVjayhjb250ZXh0KTsgfQogCVlZX0JSRUFLCi1jYXNlIDE5MDoKK2Nhc2UgMTk2OgogWVlf
UlVMRV9TRVRVUAogeyByZXR1cm4gQUREX0FTU0lHTjsgfQogCVlZX0JSRUFLCi1jYXNlIDE5MToK
K2Nhc2UgMTk3OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gU1VCX0FTU0lHTjsgfQogCVlZX0JS
RUFLCi1jYXNlIDE5MjoKK2Nhc2UgMTk4OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gTVVMX0FT
U0lHTjsgfQogCVlZX0JSRUFLCi1jYXNlIDE5MzoKK2Nhc2UgMTk5OgogWVlfUlVMRV9TRVRVUAog
eyByZXR1cm4gRElWX0FTU0lHTjsgfQogCVlZX0JSRUFLCi1jYXNlIDE5NDoKK2Nhc2UgMjAwOgog
WVlfUlVMRV9TRVRVUAogeyByZXR1cm4gTU9EX0FTU0lHTjsgfQogCVlZX0JSRUFLCi1jYXNlIDE5
NToKK2Nhc2UgMjAxOgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gTEVGVF9BU1NJR047IH0KIAlZ
WV9CUkVBSwotY2FzZSAxOTY6CitjYXNlIDIwMjoKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuIFJJ
R0hUX0FTU0lHTjsgfQogCVlZX0JSRUFLCi1jYXNlIDE5NzoKK2Nhc2UgMjAzOgogWVlfUlVMRV9T
RVRVUAogeyByZXR1cm4gQU5EX0FTU0lHTjsgfQogCVlZX0JSRUFLCi1jYXNlIDE5ODoKK2Nhc2Ug
MjA0OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gWE9SX0FTU0lHTjsgfQogCVlZX0JSRUFLCi1j
YXNlIDE5OToKK2Nhc2UgMjA1OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gT1JfQVNTSUdOOyB9
CiAJWVlfQlJFQUsKLWNhc2UgMjAwOgorY2FzZSAyMDY6CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVy
biBJTkNfT1A7IH0KIAlZWV9CUkVBSwotY2FzZSAyMDE6CitjYXNlIDIwNzoKIFlZX1JVTEVfU0VU
VVAKIHsgcmV0dXJuIERFQ19PUDsgfQogCVlZX0JSRUFLCi1jYXNlIDIwMjoKK2Nhc2UgMjA4Ogog
WVlfUlVMRV9TRVRVUAogeyByZXR1cm4gQU5EX09QOyB9CiAJWVlfQlJFQUsKLWNhc2UgMjAzOgor
Y2FzZSAyMDk6CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybiBPUl9PUDsgfQogCVlZX0JSRUFLCi1j
YXNlIDIwNDoKK2Nhc2UgMjEwOgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gWE9SX09QOyB9CiAJ
WVlfQlJFQUsKLWNhc2UgMjA1OgorY2FzZSAyMTE6CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybiBM
RV9PUDsgfQogCVlZX0JSRUFLCi1jYXNlIDIwNjoKK2Nhc2UgMjEyOgogWVlfUlVMRV9TRVRVUAog
eyByZXR1cm4gR0VfT1A7IH0KIAlZWV9CUkVBSwotY2FzZSAyMDc6CitjYXNlIDIxMzoKIFlZX1JV
TEVfU0VUVVAKIHsgcmV0dXJuIEVRX09QOyB9CiAJWVlfQlJFQUsKLWNhc2UgMjA4OgorY2FzZSAy
MTQ6CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybiBORV9PUDsgfQogCVlZX0JSRUFLCi1jYXNlIDIw
OToKK2Nhc2UgMjE1OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gTEVGVF9PUDsgfQogCVlZX0JS
RUFLCi1jYXNlIDIxMDoKK2Nhc2UgMjE2OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gUklHSFRf
T1A7IH0KIAlZWV9CUkVBSwotY2FzZSAyMTE6CitjYXNlIDIxNzoKIFlZX1JVTEVfU0VUVVAKIHsg
cmV0dXJuIFNFTUlDT0xPTjsgfQogCVlZX0JSRUFLCi1jYXNlIDIxMjoKK2Nhc2UgMjE4OgogWVlf
UlVMRV9TRVRVUAogeyByZXR1cm4gTEVGVF9CUkFDRTsgfQogCVlZX0JSRUFLCi1jYXNlIDIxMzoK
K2Nhc2UgMjE5OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gUklHSFRfQlJBQ0U7IH0KIAlZWV9C
UkVBSwotY2FzZSAyMTQ6CitjYXNlIDIyMDoKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuIENPTU1B
OyB9CiAJWVlfQlJFQUsKLWNhc2UgMjE1OgorY2FzZSAyMjE6CiBZWV9SVUxFX1NFVFVQCiB7IHJl
dHVybiBDT0xPTjsgfQogCVlZX0JSRUFLCi1jYXNlIDIxNjoKK2Nhc2UgMjIyOgogWVlfUlVMRV9T
RVRVUAogeyByZXR1cm4gRVFVQUw7IH0KIAlZWV9CUkVBSwotY2FzZSAyMTc6CitjYXNlIDIyMzoK
IFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuIExFRlRfUEFSRU47IH0KIAlZWV9CUkVBSwotY2FzZSAy
MTg6CitjYXNlIDIyNDoKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuIFJJR0hUX1BBUkVOOyB9CiAJ
WVlfQlJFQUsKLWNhc2UgMjE5OgorY2FzZSAyMjU6CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybiBM
RUZUX0JSQUNLRVQ7IH0KIAlZWV9CUkVBSwotY2FzZSAyMjA6CitjYXNlIDIyNjoKIFlZX1JVTEVf
U0VUVVAKIHsgcmV0dXJuIFJJR0hUX0JSQUNLRVQ7IH0KIAlZWV9CUkVBSwotY2FzZSAyMjE6Citj
YXNlIDIyNzoKIFlZX1JVTEVfU0VUVVAKIHsgQkVHSU4oRklFTERTKTsgcmV0dXJuIERPVDsgfQog
CVlZX0JSRUFLCi1jYXNlIDIyMjoKK2Nhc2UgMjI4OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4g
QkFORzsgfQogCVlZX0JSRUFLCi1jYXNlIDIyMzoKK2Nhc2UgMjI5OgogWVlfUlVMRV9TRVRVUAog
eyByZXR1cm4gREFTSDsgfQogCVlZX0JSRUFLCi1jYXNlIDIyNDoKK2Nhc2UgMjMwOgogWVlfUlVM
RV9TRVRVUAogeyByZXR1cm4gVElMREU7IH0KIAlZWV9CUkVBSwotY2FzZSAyMjU6CitjYXNlIDIz
MToKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuIFBMVVM7IH0KIAlZWV9CUkVBSwotY2FzZSAyMjY6
CitjYXNlIDIzMjoKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuIFNUQVI7IH0KIAlZWV9CUkVBSwot
Y2FzZSAyMjc6CitjYXNlIDIzMzoKIFlZX1JVTEVfU0VUVVAKIHsgcmV0dXJuIFNMQVNIOyB9CiAJ
WVlfQlJFQUsKLWNhc2UgMjI4OgorY2FzZSAyMzQ6CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybiBQ
RVJDRU5UOyB9CiAJWVlfQlJFQUsKLWNhc2UgMjI5OgorY2FzZSAyMzU6CiBZWV9SVUxFX1NFVFVQ
CiB7IHJldHVybiBMRUZUX0FOR0xFOyB9CiAJWVlfQlJFQUsKLWNhc2UgMjMwOgorY2FzZSAyMzY6
CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybiBSSUdIVF9BTkdMRTsgfQogCVlZX0JSRUFLCi1jYXNl
IDIzMToKK2Nhc2UgMjM3OgogWVlfUlVMRV9TRVRVUAogeyByZXR1cm4gVkVSVElDQUxfQkFSOyB9
CiAJWVlfQlJFQUsKLWNhc2UgMjMyOgorY2FzZSAyMzg6CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVy
biBDQVJFVDsgfQogCVlZX0JSRUFLCi1jYXNlIDIzMzoKK2Nhc2UgMjM5OgogWVlfUlVMRV9TRVRV
UAogeyByZXR1cm4gQU1QRVJTQU5EOyB9CiAJWVlfQlJFQUsKLWNhc2UgMjM0OgorY2FzZSAyNDA6
CiBZWV9SVUxFX1NFVFVQCiB7IHJldHVybiBRVUVTVElPTjsgfQogCVlZX0JSRUFLCi1jYXNlIDIz
NToKK2Nhc2UgMjQxOgogWVlfUlVMRV9TRVRVUAogewogICAgIEJFR0lOKElOSVRJQUwpOwpAQCAt
MjA2NywxOSArMjIwMiwxOSBAQCBZWV9SVUxFX1NFVFVQCiAgICAgcmV0dXJuIEZJRUxEX1NFTEVD
VElPTjsKIH0KIAlZWV9CUkVBSwotY2FzZSAyMzY6CitjYXNlIDI0MjoKIFlZX1JVTEVfU0VUVVAK
IHt9CiAJWVlfQlJFQUsKLWNhc2UgMjM3OgorY2FzZSAyNDM6CiBZWV9SVUxFX1NFVFVQCiB7Ci0g
ICAgeXlleHRyYS0+ZXJyb3IoKnl5bGxvYywgIklsbGVnYWwgY2hhcmFjdGVyIGF0IGZpZWxkbmFt
ZSBzdGFydCIsIHl5dGV4dCwgIiIpOworICAgIHl5ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJbGxl
Z2FsIGNoYXJhY3RlciBhdCBmaWVsZG5hbWUgc3RhcnQiLCB5eXRleHQpOwogICAgIHJldHVybiAw
OwogfQogCVlZX0JSRUFLCi1jYXNlIDIzODoKLS8qIHJ1bGUgMjM4IGNhbiBtYXRjaCBlb2wgKi8K
K2Nhc2UgMjQ0OgorLyogcnVsZSAyNDQgY2FuIG1hdGNoIGVvbCAqLwogWVlfUlVMRV9TRVRVUAog
eyB9CiAJWVlfQlJFQUsKQEAgLTIwODcsMTEgKzIyMjIsMTEgQEAgY2FzZSBZWV9TVEFURV9FT0Yo
SU5JVElBTCk6CiBjYXNlIFlZX1NUQVRFX0VPRihGSUVMRFMpOgogeyB5eXRlcm1pbmF0ZSgpOyB9
CiAJWVlfQlJFQUsKLWNhc2UgMjM5OgorY2FzZSAyNDU6CiBZWV9SVUxFX1NFVFVQCiB7IGFzc2Vy
dChmYWxzZSk7IHJldHVybiAwOyB9CiAJWVlfQlJFQUsKLWNhc2UgMjQwOgorY2FzZSAyNDY6CiBZ
WV9SVUxFX1NFVFVQCiBFQ0hPOwogCVlZX0JSRUFLCkBAIC0yMzE3LDcgKzI0NTIsNyBAQCBzdGF0
aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2FubmVyKQogCQkJeXlnLT55
eV9jX2J1Zl9wID0gJmItPnl5X2NoX2J1Zlt5eV9jX2J1Zl9wX29mZnNldF07CiAKIAkJCW51bV90
b19yZWFkID0gWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtCi0JCQkJCQlu
dW1iZXJfdG9fbW92ZSAtIDE7CisJCQkJCQlzdGF0aWNfY2FzdDxpbnQ+KG51bWJlcl90b19tb3Zl
KSAtIDE7CiAKIAkJCX0KIApAQCAtMjMyNSw4ICsyNDYwLDEwIEBAIHN0YXRpYyBpbnQgeXlfZ2V0
X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCiAJCQludW1fdG9fcmVhZCA9IFlZX1JF
QURfQlVGX1NJWkU7CiAKIAkJLyogUmVhZCBpbiBtb3JlIGRhdGEuICovCisgICAgICAgIHNpemVf
dCByZXN1bHQgPSAwOwogCQlZWV9JTlBVVCggKCZZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5
X2NoX2J1ZltudW1iZXJfdG9fbW92ZV0pLAotCQkJeXlnLT55eV9uX2NoYXJzLCBudW1fdG9fcmVh
ZCApOworICAgICAgICAgICAgcmVzdWx0LCBudW1fdG9fcmVhZCApOworICAgICAgICB5eWctPnl5
X25fY2hhcnMgPSBzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdCk7CiAKIAkJWVlfQ1VSUkVOVF9CVUZG
RVJfTFZBTFVFLT55eV9uX2NoYXJzID0geXlnLT55eV9uX2NoYXJzOwogCQl9CkBAIC0yMzg4LDcg
KzI1MjUsNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2Fu
bmVyKQogCQl3aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgeXlfY10g
IT0geXlfY3VycmVudF9zdGF0ZSApCiAJCQl7CiAJCQl5eV9jdXJyZW50X3N0YXRlID0gKGludCkg
eXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwotCQkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDgy
MCApCisJCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUgPj0gODg2ICkKIAkJCQl5eV9jID0geXlfbWV0
YVsodW5zaWduZWQgaW50KSB5eV9jXTsKIAkJCX0KIAkJeXlfY3VycmVudF9zdGF0ZSA9IHl5X254
dFt5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgKHVuc2lnbmVkIGludCkgeXlfY107CkBAIC0y
NDE3LDExICsyNTU0LDExIEBAIHN0YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5f
dCB5eXNjYW5uZXIpCiAJd2hpbGUgKCB5eV9jaGtbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSAr
IHl5X2NdICE9IHl5X2N1cnJlbnRfc3RhdGUgKQogCQl7CiAJCXl5X2N1cnJlbnRfc3RhdGUgPSAo
aW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07Ci0JCWlmICggeXlfY3VycmVudF9zdGF0ZSA+
PSA4MjAgKQorCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUgPj0gODg2ICkKIAkJCXl5X2MgPSB5eV9t
ZXRhWyh1bnNpZ25lZCBpbnQpIHl5X2NdOwogCQl9CiAJeXlfY3VycmVudF9zdGF0ZSA9IHl5X254
dFt5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgKHVuc2lnbmVkIGludCkgeXlfY107Ci0JeXlf
aXNfamFtID0gKHl5X2N1cnJlbnRfc3RhdGUgPT0gODE5KTsKKwl5eV9pc19qYW0gPSAoeXlfY3Vy
cmVudF9zdGF0ZSA9PSA4ODUpOwogCiAJKHZvaWQpeXlnOwogCXJldHVybiB5eV9pc19qYW0gPyAw
IDogeXlfY3VycmVudF9zdGF0ZTsKQEAgLTI3NjcsNyArMjkwNCw3IEBAIHN0YXRpYyB2b2lkIHl5
ZW5zdXJlX2J1ZmZlcl9zdGFjayAoeXlzY2FuX3QgeXlzY2FubmVyKQogCQkvKiBJbmNyZWFzZSB0
aGUgYnVmZmVyIHRvIHByZXBhcmUgZm9yIGEgcG9zc2libGUgcHVzaC4gKi8KIAkJaW50IGdyb3df
c2l6ZSA9IDggLyogYXJiaXRyYXJ5IGdyb3cgc2l6ZSAqLzsKIAotCQludW1fdG9fYWxsb2MgPSB5
eWctPnl5X2J1ZmZlcl9zdGFja19tYXggKyBncm93X3NpemU7CisJCW51bV90b19hbGxvYyA9IHN0
YXRpY19jYXN0PGludD4oeXlnLT55eV9idWZmZXJfc3RhY2tfbWF4ICsgZ3Jvd19zaXplKTsKIAkJ
eXlnLT55eV9idWZmZXJfc3RhY2sgPSAoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSoqKXl5cmVhbGxv
YwogCQkJCQkJCQkoeXlnLT55eV9idWZmZXJfc3RhY2ssCiAJCQkJCQkJCW51bV90b19hbGxvYyAq
IHNpemVvZihzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlKikKQEAgLTI4MDEsNyArMjkzOCw3IEBAIFlZ
X0JVRkZFUl9TVEFURSB5eV9zY2FuX2J1ZmZlciAgKGNoYXIgKiBiYXNlLCB5eV9zaXplX3QgIHNp
emUgLCB5eXNjYW5fdCB5eXNjYW5uCiAJaWYgKCAhIGIgKQogCQlZWV9GQVRBTF9FUlJPUiggIm91
dCBvZiBkeW5hbWljIG1lbW9yeSBpbiB5eV9zY2FuX2J1ZmZlcigpIiApOwogCi0JYi0+eXlfYnVm
X3NpemUgPSBzaXplIC0gMjsJLyogIi0gMiIgdG8gdGFrZSBjYXJlIG9mIEVPQidzICovCisJYi0+
eXlfYnVmX3NpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KHNpemUpIC0gMjsJLyogIi0gMiIgdG8gdGFr
ZSBjYXJlIG9mIEVPQidzICovCiAJYi0+eXlfYnVmX3BvcyA9IGItPnl5X2NoX2J1ZiA9IGJhc2U7
CiAJYi0+eXlfaXNfb3VyX2J1ZmZlciA9IDA7CiAJYi0+eXlfaW5wdXRfZmlsZSA9IDA7CkBAIC0y
ODUwLDcgKzI5ODcsNyBAQCBZWV9CVUZGRVJfU1RBVEUgeXlfc2Nhbl9ieXRlcyAgKHl5Y29uc3Qg
Y2hhciAqIHl5Ynl0ZXMsIHl5X3NpemVfdCAgX3l5Ynl0ZXNfbGVuCiAJaWYgKCAhIGJ1ZiApCiAJ
CVlZX0ZBVEFMX0VSUk9SKCAib3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIHl5X3NjYW5fYnl0ZXMo
KSIgKTsKIAotCWZvciAoIGkgPSAwOyBpIDwgX3l5Ynl0ZXNfbGVuOyArK2kgKQorCWZvciAoIGkg
PSAwOyBpIDwgc3RhdGljX2Nhc3Q8eXlfc2l6ZV90PihfeXlieXRlc19sZW4pOyArK2kgKQogCQli
dWZbaV0gPSB5eWJ5dGVzW2ldOwogCiAJYnVmW195eWJ5dGVzX2xlbl0gPSBidWZbX3l5Ynl0ZXNf
bGVuKzFdID0gWVlfRU5EX09GX0JVRkZFUl9DSEFSOwpAQCAtMzI3Myw3ICszNDEwLDcgQEAgaW50
IGNoZWNrX3R5cGUoeXlzY2FuX3QgeXlzY2FubmVyKSB7CiBpbnQgcmVzZXJ2ZWRfd29yZCh5eXNj
YW5fdCB5eXNjYW5uZXIpIHsKICAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXln
dXRzX3QqKSB5eXNjYW5uZXI7CiAKLSAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAiSWxsZWdh
bCB1c2Ugb2YgcmVzZXJ2ZWQgd29yZCIsIHl5dGV4dCwgIiIpOworICAgIHl5ZXh0cmEtPmVycm9y
KCp5eWxsb2MsICJJbGxlZ2FsIHVzZSBvZiByZXNlcnZlZCB3b3JkIiwgeXl0ZXh0KTsKICAgICBy
ZXR1cm4gMDsKIH0KIApAQCAtMzMwMSw2ICszNDM4LDI0IEBAIGludCBFUzJfa2V5d29yZF9FUzNf
cmVzZXJ2ZWQoVFBhcnNlQ29udGV4dCAqY29udGV4dCwgaW50IHRva2VuKQogICAgIHJldHVybiB0
b2tlbjsKIH0KIAoraW50IEVTMl9pZGVudF9FUzNfcmVzZXJ2ZWRfRVMzXzFfa2V5d29yZChUUGFy
c2VDb250ZXh0ICpjb250ZXh0LCBpbnQgdG9rZW4pCit7CisgICAgc3RydWN0IHl5Z3V0c190KiB5
eWcgPSAoc3RydWN0IHl5Z3V0c190KikgY29udGV4dC0+Z2V0U2Nhbm5lcigpOworICAgIHl5c2Nh
bl90IHl5c2Nhbm5lciA9ICh5eXNjYW5fdCkgY29udGV4dC0+Z2V0U2Nhbm5lcigpOworCisgICAg
aWYgKGNvbnRleHQtPmdldFNoYWRlclZlcnNpb24oKSA8IDMwMCkKKyAgICB7CisgICAgICAgIHl5
bHZhbC0+bGV4LnN0cmluZyA9IE5ld1Bvb2xUU3RyaW5nKHl5dGV4dCk7CisgICAgICAgIHJldHVy
biBjaGVja190eXBlKHl5c2Nhbm5lcik7CisgICAgfQorICAgIGVsc2UgaWYgKGNvbnRleHQtPmdl
dFNoYWRlclZlcnNpb24oKSA9PSAzMDApCisgICAgeworICAgICAgICByZXR1cm4gcmVzZXJ2ZWRf
d29yZCh5eXNjYW5uZXIpOworICAgIH0KKworICAgIHJldHVybiB0b2tlbjsKK30KKwogaW50IEVT
Ml9pZGVudF9FUzNfa2V5d29yZChUUGFyc2VDb250ZXh0ICpjb250ZXh0LCBpbnQgdG9rZW4pCiB7
CiAgICAgc3RydWN0IHl5Z3V0c190KiB5eWcgPSAoc3RydWN0IHl5Z3V0c190KikgY29udGV4dC0+
Z2V0U2Nhbm5lcigpOwpAQCAtMzMxNiwxOCArMzQ3MSw2MCBAQCBpbnQgRVMyX2lkZW50X0VTM19r
ZXl3b3JkKFRQYXJzZUNvbnRleHQgKmNvbnRleHQsIGludCB0b2tlbikKICAgICByZXR1cm4gdG9r
ZW47CiB9CiAKK2ludCBFUzJfYW5kX0VTM19yZXNlcnZlZF9FUzNfMV9rZXl3b3JkKFRQYXJzZUNv
bnRleHQgKmNvbnRleHQsIGludCB0b2tlbikKK3sKKyAgICB5eXNjYW5fdCB5eXNjYW5uZXIgPSAo
eXlzY2FuX3QpIGNvbnRleHQtPmdldFNjYW5uZXIoKTsKKworICAgIGlmIChjb250ZXh0LT5nZXRT
aGFkZXJWZXJzaW9uKCkgPCAzMTApCisgICAgeworICAgICAgICByZXR1cm4gcmVzZXJ2ZWRfd29y
ZCh5eXNjYW5uZXIpOworICAgIH0KKworICAgIHJldHVybiB0b2tlbjsKK30KKworaW50IEVTMl9h
bmRfRVMzX2lkZW50X0VTM18xX2tleXdvcmQoVFBhcnNlQ29udGV4dCAqY29udGV4dCwgaW50IHRv
a2VuKQoreworICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIGNv
bnRleHQtPmdldFNjYW5uZXIoKTsKKyAgICB5eXNjYW5fdCB5eXNjYW5uZXIgPSAoeXlzY2FuX3Qp
IGNvbnRleHQtPmdldFNjYW5uZXIoKTsKKworICAgIC8vIG5vdCBhIHJlc2VydmVkIHdvcmQgaW4g
R0xTTCBFUyAxLjAwIGFuZCBHTFNMIEVTIDMuMDAsIHNvIGNvdWxkIGJlIHVzZWQgYXMgYW4gaWRl
bnRpZmllci90eXBlIG5hbWUKKyAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVmVyc2lvbigpIDwg
MzEwKQorICAgIHsKKyAgICAgICAgeXlsdmFsLT5sZXguc3RyaW5nID0gTmV3UG9vbFRTdHJpbmco
eXl0ZXh0KTsKKyAgICAgICAgcmV0dXJuIGNoZWNrX3R5cGUoeXlzY2FubmVyKTsKKyAgICB9CisK
KyAgICByZXR1cm4gdG9rZW47Cit9CisKK2ludCBFUzNfZXh0ZW5zaW9uX2tleXdvcmRfZWxzZV9p
ZGVudChUUGFyc2VDb250ZXh0ICpjb250ZXh0LCBjb25zdCBjaGFyKiBleHRlbnNpb24sIGludCB0
b2tlbikKK3sKKyAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKSBj
b250ZXh0LT5nZXRTY2FubmVyKCk7CisgICAgeXlzY2FuX3QgeXlzY2FubmVyID0gKHl5c2Nhbl90
KSBjb250ZXh0LT5nZXRTY2FubmVyKCk7CisKKyAgICAvLyBhIHJlc2VydmVkIHdvcmQgaW4gR0xT
TCBFUyAzLjAwIHdpdGggZW5hYmxlZCBleHRlbnNpb24sIG90aGVyd2lzZSBjb3VsZCBiZSB1c2Vk
IGFzIGFuIGlkZW50aWZpZXIvdHlwZSBuYW1lCisgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclZl
cnNpb24oKSA+PSAzMDAgJiYgY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVkKGV4dGVuc2lvbikp
CisgICAgeworICAgICAgICByZXR1cm4gdG9rZW47CisgICAgfQorCisgICAgeXlsdmFsLT5sZXgu
c3RyaW5nID0gTmV3UG9vbFRTdHJpbmcoeXl0ZXh0KTsKKyAgICByZXR1cm4gY2hlY2tfdHlwZSh5
eXNjYW5uZXIpOworfQorCiBpbnQgdWludF9jb25zdGFudChUUGFyc2VDb250ZXh0ICpjb250ZXh0
KQogewogICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIGNvbnRl
eHQtPmdldFNjYW5uZXIoKTsKIAogICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXJWZXJzaW9uKCkg
PCAzMDApCiAgICAgewotICAgICAgICBjb250ZXh0LT5lcnJvcigqeXlsbG9jLCAiVW5zaWduZWQg
aW50ZWdlcnMgYXJlIHVuc3VwcG9ydGVkIHByaW9yIHRvIEdMU0wgRVMgMy4wMCIsIHl5dGV4dCwg
IiIpOworICAgICAgICBjb250ZXh0LT5lcnJvcigqeXlsbG9jLCAiVW5zaWduZWQgaW50ZWdlcnMg
YXJlIHVuc3VwcG9ydGVkIHByaW9yIHRvIEdMU0wgRVMgMy4wMCIsIHl5dGV4dCk7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAogICAgIGlmICghYXRvaV9jbGFtcCh5eXRleHQsICYoeXlsdmFs
LT5sZXgudSkpKQotICAgICAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAiSW50ZWdlciBvdmVy
ZmxvdyIsIHl5dGV4dCwgIiIpOworICAgICAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAiSW50
ZWdlciBvdmVyZmxvdyIsIHl5dGV4dCk7CiAKICAgICByZXR1cm4gVUlOVENPTlNUQU5UOwogfQpA
QCAtMzM0NSw3ICszNTQyLDcgQEAgaW50IGZsb2F0c3VmZml4X2NoZWNrKFRQYXJzZUNvbnRleHQq
IGNvbnRleHQpCiAgICAgc3RkOjpzdHJpbmcgdGV4dCA9IHl5dGV4dDsKICAgICB0ZXh0LnJlc2l6
ZSh0ZXh0LnNpemUoKSAtIDEpOwogICAgIGlmICghc3RydG9mX2NsYW1wKHRleHQsICYoeXlsdmFs
LT5sZXguZikpKQotICAgICAgICB5eWV4dHJhLT53YXJuaW5nKCp5eWxsb2MsICJGbG9hdCBvdmVy
ZmxvdyIsIHl5dGV4dCwgIiIpOworICAgICAgICB5eWV4dHJhLT53YXJuaW5nKCp5eWxsb2MsICJG
bG9hdCBvdmVyZmxvdyIsIHl5dGV4dCk7CiAKICAgICByZXR1cm4oRkxPQVRDT05TVEFOVCk7CiB9
CkBAIC0zMzYxLDkgKzM1NTgsOSBAQCBpbnQgaW50X2NvbnN0YW50KFRQYXJzZUNvbnRleHQgKmNv
bnRleHQpIHsKICAgICBpZiAoIWF0b2lfY2xhbXAoeXl0ZXh0LCAmdSkpCiAgICAgewogICAgICAg
ICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVmVyc2lvbigpID49IDMwMCkKLSAgICAgICAgICAgIHl5
ZXh0cmEtPmVycm9yKCp5eWxsb2MsICJJbnRlZ2VyIG92ZXJmbG93IiwgeXl0ZXh0LCAiIik7Cisg
ICAgICAgICAgICB5eWV4dHJhLT5lcnJvcigqeXlsbG9jLCAiSW50ZWdlciBvdmVyZmxvdyIsIHl5
dGV4dCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHl5ZXh0cmEtPndhcm5pbmcoKnl5bGxv
YywgIkludGVnZXIgb3ZlcmZsb3ciLCB5eXRleHQsICIiKTsKKyAgICAgICAgICAgIHl5ZXh0cmEt
Pndhcm5pbmcoKnl5bGxvYywgIkludGVnZXIgb3ZlcmZsb3ciLCB5eXRleHQpOwogICAgIH0KICAg
ICB5eWx2YWwtPmxleC5pID0gc3RhdGljX2Nhc3Q8aW50Pih1KTsKICAgICByZXR1cm4gSU5UQ09O
U1RBTlQ7CkBAIC0zMzczLDEwICszNTcwLDI2IEBAIGludCBmbG9hdF9jb25zdGFudCh5eXNjYW5f
dCB5eXNjYW5uZXIpIHsKICAgICBzdHJ1Y3QgeXlndXRzX3QqIHl5ZyA9IChzdHJ1Y3QgeXlndXRz
X3QqKSB5eXNjYW5uZXI7CiAKICAgICBpZiAoIXN0cnRvZl9jbGFtcCh5eXRleHQsICYoeXlsdmFs
LT5sZXguZikpKQotICAgICAgICB5eWV4dHJhLT53YXJuaW5nKCp5eWxsb2MsICJGbG9hdCBvdmVy
ZmxvdyIsIHl5dGV4dCwgIiIpOworICAgICAgICB5eWV4dHJhLT53YXJuaW5nKCp5eWxsb2MsICJG
bG9hdCBvdmVyZmxvdyIsIHl5dGV4dCk7CiAgICAgcmV0dXJuIEZMT0FUQ09OU1RBTlQ7CiB9CiAK
K2ludCB5dXZjc2NzdGFuZGFyZGV4dF9jb25zdGFudChUUGFyc2VDb250ZXh0ICpjb250ZXh0KQor
eworICAgIHN0cnVjdCB5eWd1dHNfdCogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopIGNvbnRleHQt
PmdldFNjYW5uZXIoKTsKKyAgICB5eXNjYW5fdCB5eXNjYW5uZXIgPSAoeXlzY2FuX3QpIGNvbnRl
eHQtPmdldFNjYW5uZXIoKTsKKworICAgIC8vIGEgcmVzZXJ2ZWQgd29yZCBpbiBHTFNMIEVTIDMu
MDAgd2l0aCBlbmFibGVkIGV4dGVuc2lvbiwgb3RoZXJ3aXNlIGNvdWxkIGJlIHVzZWQgYXMgYW4g
aWRlbnRpZmllci90eXBlIG5hbWUKKyAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVmVyc2lvbigp
ID49IDMwMCAmJiBjb250ZXh0LT5pc0V4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9ZVVZfdGFyZ2V0
IikpCisgICAgeworICAgICAgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5
eXRleHQpOworICAgICAgICByZXR1cm4gWVVWQ1NDU1RBTkRBUkRFWFRDT05TVEFOVDsKKyAgICB9
CisKKyAgICB5eWx2YWwtPmxleC5zdHJpbmcgPSBOZXdQb29sVFN0cmluZyh5eXRleHQpOworICAg
IHJldHVybiBjaGVja190eXBlKHl5c2Nhbm5lcik7Cit9CisKIGludCBnbHNsYW5nX2luaXRpYWxp
emUoVFBhcnNlQ29udGV4dCogY29udGV4dCkgewogICAgIHl5c2Nhbl90IHNjYW5uZXIgPSBOVUxM
OwogICAgIGlmICh5eWxleF9pbml0X2V4dHJhKGNvbnRleHQsJnNjYW5uZXIpKQpAQCAtMzQxNyw3
ICszNjMwLDcgQEAgaW50IGdsc2xhbmdfc2NhbihzaXplX3QgY291bnQsIGNvbnN0IGNoYXIqIGNv
bnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10sCiAgICAgaWYgKGNvbnRleHQtPmdldEZy
YWdtZW50UHJlY2lzaW9uSGlnaCgpKQogICAgICAgICBwcmVwcm9jZXNzb3ItPnByZWRlZmluZU1h
Y3JvKCJHTF9GUkFHTUVOVF9QUkVDSVNJT05fSElHSCIsIDEpOwogCi0gICAgcHJlcHJvY2Vzc29y
LT5zZXRNYXhUb2tlblNpemUoR2V0R2xvYmFsTWF4VG9rZW5TaXplKGNvbnRleHQtPmdldFNoYWRl
clNwZWMoKSkpOworICAgIHByZXByb2Nlc3Nvci0+c2V0TWF4VG9rZW5TaXplKHNoOjpHZXRHbG9i
YWxNYXhUb2tlblNpemUoY29udGV4dC0+Z2V0U2hhZGVyU3BlYygpKSk7CiAKICAgICByZXR1cm4g
MDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL2dsc2xhbmdfdGFiLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdfdGFiLmNwcAppbmRleCAzZTUwZmJjNGI1Mi4uMDQ4
NGU5ZjUyMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci90cmFuc2xhdG9yL2dsc2xhbmdfdGFiLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX3RhYi5jcHAKQEAgLTYwLDEyICs2MCw4
IEBACiAvKiBQdWxsIHBhcnNlcnMuICAqLwogI2RlZmluZSBZWVBVTEwgMQogCi0KLQotCiAvKiBD
b3B5IHRoZSBmaXJzdCBwYXJ0IG9mIHVzZXIgZGVjbGFyYXRpb25zLiAgKi8KIAotCiAvLwogLy8g
Q29weXJpZ2h0IChjKSAyMDAyLTIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKQEAgLTk4LDYgKzk0LDggQEAKIAogI2Rl
ZmluZSBZWUVOQUJMRV9OTFMgMAogCit1c2luZyBuYW1lc3BhY2Ugc2g7CisKIAogCiAKQEAgLTE5
Miw4MCArMTkwLDEwNCBAQCBleHRlcm4gaW50IHl5ZGVidWc7CiAgICAgQ0VOVFJPSUQgPSAzMDYs
CiAgICAgRkxBVCA9IDMwNywKICAgICBTTU9PVEggPSAzMDgsCi0gICAgU1RSVUNUID0gMzA5LAot
ICAgIFZPSURfVFlQRSA9IDMxMCwKLSAgICBXSElMRSA9IDMxMSwKLSAgICBTQU1QTEVSMkQgPSAz
MTIsCi0gICAgU0FNUExFUkNVQkUgPSAzMTMsCi0gICAgU0FNUExFUl9FWFRFUk5BTF9PRVMgPSAz
MTQsCi0gICAgU0FNUExFUjJEUkVDVCA9IDMxNSwKLSAgICBTQU1QTEVSMkRBUlJBWSA9IDMxNiwK
LSAgICBJU0FNUExFUjJEID0gMzE3LAotICAgIElTQU1QTEVSM0QgPSAzMTgsCi0gICAgSVNBTVBM
RVJDVUJFID0gMzE5LAotICAgIElTQU1QTEVSMkRBUlJBWSA9IDMyMCwKLSAgICBVU0FNUExFUjJE
ID0gMzIxLAotICAgIFVTQU1QTEVSM0QgPSAzMjIsCi0gICAgVVNBTVBMRVJDVUJFID0gMzIzLAot
ICAgIFVTQU1QTEVSMkRBUlJBWSA9IDMyNCwKLSAgICBTQU1QTEVSM0QgPSAzMjUsCi0gICAgU0FN
UExFUjNEUkVDVCA9IDMyNiwKLSAgICBTQU1QTEVSMkRTSEFET1cgPSAzMjcsCi0gICAgU0FNUExF
UkNVQkVTSEFET1cgPSAzMjgsCi0gICAgU0FNUExFUjJEQVJSQVlTSEFET1cgPSAzMjksCi0gICAg
TEFZT1VUID0gMzMwLAotICAgIElERU5USUZJRVIgPSAzMzEsCi0gICAgVFlQRV9OQU1FID0gMzMy
LAotICAgIEZMT0FUQ09OU1RBTlQgPSAzMzMsCi0gICAgSU5UQ09OU1RBTlQgPSAzMzQsCi0gICAg
VUlOVENPTlNUQU5UID0gMzM1LAotICAgIEJPT0xDT05TVEFOVCA9IDMzNiwKLSAgICBGSUVMRF9T
RUxFQ1RJT04gPSAzMzcsCi0gICAgTEVGVF9PUCA9IDMzOCwKLSAgICBSSUdIVF9PUCA9IDMzOSwK
LSAgICBJTkNfT1AgPSAzNDAsCi0gICAgREVDX09QID0gMzQxLAotICAgIExFX09QID0gMzQyLAot
ICAgIEdFX09QID0gMzQzLAotICAgIEVRX09QID0gMzQ0LAotICAgIE5FX09QID0gMzQ1LAotICAg
IEFORF9PUCA9IDM0NiwKLSAgICBPUl9PUCA9IDM0NywKLSAgICBYT1JfT1AgPSAzNDgsCi0gICAg
TVVMX0FTU0lHTiA9IDM0OSwKLSAgICBESVZfQVNTSUdOID0gMzUwLAotICAgIEFERF9BU1NJR04g
PSAzNTEsCi0gICAgTU9EX0FTU0lHTiA9IDM1MiwKLSAgICBMRUZUX0FTU0lHTiA9IDM1MywKLSAg
ICBSSUdIVF9BU1NJR04gPSAzNTQsCi0gICAgQU5EX0FTU0lHTiA9IDM1NSwKLSAgICBYT1JfQVNT
SUdOID0gMzU2LAotICAgIE9SX0FTU0lHTiA9IDM1NywKLSAgICBTVUJfQVNTSUdOID0gMzU4LAot
ICAgIExFRlRfUEFSRU4gPSAzNTksCi0gICAgUklHSFRfUEFSRU4gPSAzNjAsCi0gICAgTEVGVF9C
UkFDS0VUID0gMzYxLAotICAgIFJJR0hUX0JSQUNLRVQgPSAzNjIsCi0gICAgTEVGVF9CUkFDRSA9
IDM2MywKLSAgICBSSUdIVF9CUkFDRSA9IDM2NCwKLSAgICBET1QgPSAzNjUsCi0gICAgQ09NTUEg
PSAzNjYsCi0gICAgQ09MT04gPSAzNjcsCi0gICAgRVFVQUwgPSAzNjgsCi0gICAgU0VNSUNPTE9O
ID0gMzY5LAotICAgIEJBTkcgPSAzNzAsCi0gICAgREFTSCA9IDM3MSwKLSAgICBUSUxERSA9IDM3
MiwKLSAgICBQTFVTID0gMzczLAotICAgIFNUQVIgPSAzNzQsCi0gICAgU0xBU0ggPSAzNzUsCi0g
ICAgUEVSQ0VOVCA9IDM3NiwKLSAgICBMRUZUX0FOR0xFID0gMzc3LAotICAgIFJJR0hUX0FOR0xF
ID0gMzc4LAotICAgIFZFUlRJQ0FMX0JBUiA9IDM3OSwKLSAgICBDQVJFVCA9IDM4MCwKLSAgICBB
TVBFUlNBTkQgPSAzODEsCi0gICAgUVVFU1RJT04gPSAzODIKKyAgICBSRUFET05MWSA9IDMwOSwK
KyAgICBXUklURU9OTFkgPSAzMTAsCisgICAgQ09IRVJFTlQgPSAzMTEsCisgICAgUkVTVFJJQ1Qg
PSAzMTIsCisgICAgVk9MQVRJTEUgPSAzMTMsCisgICAgU0hBUkVEID0gMzE0LAorICAgIFNUUlVD
VCA9IDMxNSwKKyAgICBWT0lEX1RZUEUgPSAzMTYsCisgICAgV0hJTEUgPSAzMTcsCisgICAgU0FN
UExFUjJEID0gMzE4LAorICAgIFNBTVBMRVJDVUJFID0gMzE5LAorICAgIFNBTVBMRVJfRVhURVJO
QUxfT0VTID0gMzIwLAorICAgIFNBTVBMRVIyRFJFQ1QgPSAzMjEsCisgICAgU0FNUExFUjJEQVJS
QVkgPSAzMjIsCisgICAgSVNBTVBMRVIyRCA9IDMyMywKKyAgICBJU0FNUExFUjNEID0gMzI0LAor
ICAgIElTQU1QTEVSQ1VCRSA9IDMyNSwKKyAgICBJU0FNUExFUjJEQVJSQVkgPSAzMjYsCisgICAg
VVNBTVBMRVIyRCA9IDMyNywKKyAgICBVU0FNUExFUjNEID0gMzI4LAorICAgIFVTQU1QTEVSQ1VC
RSA9IDMyOSwKKyAgICBVU0FNUExFUjJEQVJSQVkgPSAzMzAsCisgICAgU0FNUExFUjJETVMgPSAz
MzEsCisgICAgSVNBTVBMRVIyRE1TID0gMzMyLAorICAgIFVTQU1QTEVSMkRNUyA9IDMzMywKKyAg
ICBTQU1QTEVSM0QgPSAzMzQsCisgICAgU0FNUExFUjNEUkVDVCA9IDMzNSwKKyAgICBTQU1QTEVS
MkRTSEFET1cgPSAzMzYsCisgICAgU0FNUExFUkNVQkVTSEFET1cgPSAzMzcsCisgICAgU0FNUExF
UjJEQVJSQVlTSEFET1cgPSAzMzgsCisgICAgU0FNUExFUkVYVEVSTkFMMkRZMllFWFQgPSAzMzks
CisgICAgSU1BR0UyRCA9IDM0MCwKKyAgICBJSU1BR0UyRCA9IDM0MSwKKyAgICBVSU1BR0UyRCA9
IDM0MiwKKyAgICBJTUFHRTNEID0gMzQzLAorICAgIElJTUFHRTNEID0gMzQ0LAorICAgIFVJTUFH
RTNEID0gMzQ1LAorICAgIElNQUdFMkRBUlJBWSA9IDM0NiwKKyAgICBJSU1BR0UyREFSUkFZID0g
MzQ3LAorICAgIFVJTUFHRTJEQVJSQVkgPSAzNDgsCisgICAgSU1BR0VDVUJFID0gMzQ5LAorICAg
IElJTUFHRUNVQkUgPSAzNTAsCisgICAgVUlNQUdFQ1VCRSA9IDM1MSwKKyAgICBMQVlPVVQgPSAz
NTIsCisgICAgWVVWQ1NDU1RBTkRBUkRFWFQgPSAzNTMsCisgICAgWVVWQ1NDU1RBTkRBUkRFWFRD
T05TVEFOVCA9IDM1NCwKKyAgICBJREVOVElGSUVSID0gMzU1LAorICAgIFRZUEVfTkFNRSA9IDM1
NiwKKyAgICBGTE9BVENPTlNUQU5UID0gMzU3LAorICAgIElOVENPTlNUQU5UID0gMzU4LAorICAg
IFVJTlRDT05TVEFOVCA9IDM1OSwKKyAgICBCT09MQ09OU1RBTlQgPSAzNjAsCisgICAgRklFTERf
U0VMRUNUSU9OID0gMzYxLAorICAgIExFRlRfT1AgPSAzNjIsCisgICAgUklHSFRfT1AgPSAzNjMs
CisgICAgSU5DX09QID0gMzY0LAorICAgIERFQ19PUCA9IDM2NSwKKyAgICBMRV9PUCA9IDM2NiwK
KyAgICBHRV9PUCA9IDM2NywKKyAgICBFUV9PUCA9IDM2OCwKKyAgICBORV9PUCA9IDM2OSwKKyAg
ICBBTkRfT1AgPSAzNzAsCisgICAgT1JfT1AgPSAzNzEsCisgICAgWE9SX09QID0gMzcyLAorICAg
IE1VTF9BU1NJR04gPSAzNzMsCisgICAgRElWX0FTU0lHTiA9IDM3NCwKKyAgICBBRERfQVNTSUdO
ID0gMzc1LAorICAgIE1PRF9BU1NJR04gPSAzNzYsCisgICAgTEVGVF9BU1NJR04gPSAzNzcsCisg
ICAgUklHSFRfQVNTSUdOID0gMzc4LAorICAgIEFORF9BU1NJR04gPSAzNzksCisgICAgWE9SX0FT
U0lHTiA9IDM4MCwKKyAgICBPUl9BU1NJR04gPSAzODEsCisgICAgU1VCX0FTU0lHTiA9IDM4MiwK
KyAgICBMRUZUX1BBUkVOID0gMzgzLAorICAgIFJJR0hUX1BBUkVOID0gMzg0LAorICAgIExFRlRf
QlJBQ0tFVCA9IDM4NSwKKyAgICBSSUdIVF9CUkFDS0VUID0gMzg2LAorICAgIExFRlRfQlJBQ0Ug
PSAzODcsCisgICAgUklHSFRfQlJBQ0UgPSAzODgsCisgICAgRE9UID0gMzg5LAorICAgIENPTU1B
ID0gMzkwLAorICAgIENPTE9OID0gMzkxLAorICAgIEVRVUFMID0gMzkyLAorICAgIFNFTUlDT0xP
TiA9IDM5MywKKyAgICBCQU5HID0gMzk0LAorICAgIERBU0ggPSAzOTUsCisgICAgVElMREUgPSAz
OTYsCisgICAgUExVUyA9IDM5NywKKyAgICBTVEFSID0gMzk4LAorICAgIFNMQVNIID0gMzk5LAor
ICAgIFBFUkNFTlQgPSA0MDAsCisgICAgTEVGVF9BTkdMRSA9IDQwMSwKKyAgICBSSUdIVF9BTkdM
RSA9IDQwMiwKKyAgICBWRVJUSUNBTF9CQVIgPSA0MDMsCisgICAgQ0FSRVQgPSA0MDQsCisgICAg
QU1QRVJTQU5EID0gNDA1LAorICAgIFFVRVNUSU9OID0gNDA2CiAgIH07CiAjZW5kaWYKIApAQCAt
Mjg5LDEzICszMTEsMTYgQEAgdW5pb24gWVlTVFlQRQogICAgIHN0cnVjdCB7CiAgICAgICAgIFRP
cGVyYXRvciBvcDsKICAgICAgICAgdW5pb24gewotICAgICAgICAgICAgVEludGVybU5vZGUqIGlu
dGVybU5vZGU7CisgICAgICAgICAgICBUSW50ZXJtTm9kZSAqaW50ZXJtTm9kZTsKICAgICAgICAg
ICAgIFRJbnRlcm1Ob2RlUGFpciBub2RlUGFpcjsKLSAgICAgICAgICAgIFRJbnRlcm1UeXBlZCog
aW50ZXJtVHlwZWROb2RlOwotICAgICAgICAgICAgVEludGVybUFnZ3JlZ2F0ZSogaW50ZXJtQWdn
cmVnYXRlOwotICAgICAgICAgICAgVEludGVybUJsb2NrKiBpbnRlcm1CbG9jazsKLSAgICAgICAg
ICAgIFRJbnRlcm1Td2l0Y2gqIGludGVybVN3aXRjaDsKLSAgICAgICAgICAgIFRJbnRlcm1DYXNl
KiBpbnRlcm1DYXNlOworICAgICAgICAgICAgVEludGVybUZ1bmN0aW9uQ2FsbE9yTWV0aG9kIGNh
bGxPck1ldGhvZFBhaXI7CisgICAgICAgICAgICBUSW50ZXJtVHlwZWQgKmludGVybVR5cGVkTm9k
ZTsKKyAgICAgICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmludGVybUFnZ3JlZ2F0ZTsKKyAgICAg
ICAgICAgIFRJbnRlcm1CbG9jayAqaW50ZXJtQmxvY2s7CisgICAgICAgICAgICBUSW50ZXJtRGVj
bGFyYXRpb24gKmludGVybURlY2xhcmF0aW9uOworICAgICAgICAgICAgVEludGVybUZ1bmN0aW9u
UHJvdG90eXBlICppbnRlcm1GdW5jdGlvblByb3RvdHlwZTsKKyAgICAgICAgICAgIFRJbnRlcm1T
d2l0Y2ggKmludGVybVN3aXRjaDsKKyAgICAgICAgICAgIFRJbnRlcm1DYXNlICppbnRlcm1DYXNl
OwogICAgICAgICB9OwogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBUVHlwZVNwZWNpZmll
ck5vbkFycmF5IHR5cGVTcGVjaWZpZXJOb25BcnJheTsKQEAgLTMwMywxMiArMzI4LDEyIEBAIHVu
aW9uIFlZU1RZUEUKICAgICAgICAgICAgIFRQcmVjaXNpb24gcHJlY2lzaW9uOwogICAgICAgICAg
ICAgVExheW91dFF1YWxpZmllciBsYXlvdXRRdWFsaWZpZXI7CiAgICAgICAgICAgICBUUXVhbGlm
aWVyIHF1YWxpZmllcjsKLSAgICAgICAgICAgIFRGdW5jdGlvbiogZnVuY3Rpb247CisgICAgICAg
ICAgICBURnVuY3Rpb24gKmZ1bmN0aW9uOwogICAgICAgICAgICAgVFBhcmFtZXRlciBwYXJhbTsK
LSAgICAgICAgICAgIFRGaWVsZCogZmllbGQ7Ci0gICAgICAgICAgICBURmllbGRMaXN0KiBmaWVs
ZExpc3Q7Ci0gICAgICAgICAgICBUUXVhbGlmaWVyV3JhcHBlckJhc2UqIHF1YWxpZmllcldyYXBw
ZXI7Ci0gICAgICAgICAgICBUVHlwZVF1YWxpZmllckJ1aWxkZXIqIHR5cGVRdWFsaWZpZXJCdWls
ZGVyOworICAgICAgICAgICAgVEZpZWxkICpmaWVsZDsKKyAgICAgICAgICAgIFRGaWVsZExpc3Qg
KmZpZWxkTGlzdDsKKyAgICAgICAgICAgIFRRdWFsaWZpZXJXcmFwcGVyQmFzZSAqcXVhbGlmaWVy
V3JhcHBlcjsKKyAgICAgICAgICAgIFRUeXBlUXVhbGlmaWVyQnVpbGRlciAqdHlwZVF1YWxpZmll
ckJ1aWxkZXI7CiAgICAgICAgIH07CiAgICAgfSBpbnRlcm07CiAKQEAgLTY0NiwyMyArNjcxLDIz
IEBAIHVuaW9uIHl5YWxsb2MKICNlbmRpZiAvKiAhWVlDT1BZX05FRURFRCAqLwogCiAvKiBZWUZJ
TkFMIC0tIFN0YXRlIG51bWJlciBvZiB0aGUgdGVybWluYXRpb24gc3RhdGUuICAqLwotI2RlZmlu
ZSBZWUZJTkFMICAxMDkKKyNkZWZpbmUgWVlGSU5BTCAgMTMyCiAvKiBZWUxBU1QgLS0gTGFzdCBp
bmRleCBpbiBZWVRBQkxFLiAgKi8KLSNkZWZpbmUgWVlMQVNUICAgMjQzMgorI2RlZmluZSBZWUxB
U1QgICAyOTkzCiAKIC8qIFlZTlRPS0VOUyAtLSBOdW1iZXIgb2YgdGVybWluYWxzLiAgKi8KLSNk
ZWZpbmUgWVlOVE9LRU5TICAxMjgKKyNkZWZpbmUgWVlOVE9LRU5TICAxNTIKIC8qIFlZTk5UUyAt
LSBOdW1iZXIgb2Ygbm9udGVybWluYWxzLiAgKi8KICNkZWZpbmUgWVlOTlRTICA5NAogLyogWVlO
UlVMRVMgLS0gTnVtYmVyIG9mIHJ1bGVzLiAgKi8KLSNkZWZpbmUgWVlOUlVMRVMgIDI2OQorI2Rl
ZmluZSBZWU5SVUxFUyAgMjk0CiAvKiBZWU5TVEFURVMgLS0gTnVtYmVyIG9mIHN0YXRlcy4gICov
Ci0jZGVmaW5lIFlZTlNUQVRFUyAgNDA1CisjZGVmaW5lIFlZTlNUQVRFUyAgNDMwCiAKIC8qIFlZ
VFJBTlNMQVRFW1lZWF0gLS0gU3ltYm9sIG51bWJlciBjb3JyZXNwb25kaW5nIHRvIFlZWCBhcyBy
ZXR1cm5lZAogICAgYnkgeXlsZXgsIHdpdGggb3V0LW9mLWJvdW5kcyBjaGVja2luZy4gICovCiAj
ZGVmaW5lIFlZVU5ERUZUT0sgIDIKLSNkZWZpbmUgWVlNQVhVVE9LICAgMzgyCisjZGVmaW5lIFlZ
TUFYVVRPSyAgIDQwNgogCiAjZGVmaW5lIFlZVFJBTlNMQVRFKFlZWCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICgodW5zaWduZWQgaW50KSAoWVlY
KSA8PSBZWU1BWFVUT0sgPyB5eXRyYW5zbGF0ZVtZWVhdIDogWVlVTkRFRlRPSykKQEAgLTcwOSw0
MCArNzM0LDQ1IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXl0cmFuc2xhdGVbXSA9CiAg
ICAgICA5NSwgICAgOTYsICAgIDk3LCAgICA5OCwgICAgOTksICAgMTAwLCAgIDEwMSwgICAxMDIs
ICAgMTAzLCAgIDEwNCwKICAgICAgMTA1LCAgIDEwNiwgICAxMDcsICAgMTA4LCAgIDEwOSwgICAx
MTAsICAgMTExLCAgIDExMiwgICAxMTMsICAgMTE0LAogICAgICAxMTUsICAgMTE2LCAgIDExNywg
ICAxMTgsICAgMTE5LCAgIDEyMCwgICAxMjEsICAgMTIyLCAgIDEyMywgICAxMjQsCi0gICAgIDEy
NSwgICAxMjYsICAgMTI3CisgICAgIDEyNSwgICAxMjYsICAgMTI3LCAgIDEyOCwgICAxMjksICAg
MTMwLCAgIDEzMSwgICAxMzIsICAgMTMzLCAgIDEzNCwKKyAgICAgMTM1LCAgIDEzNiwgICAxMzcs
ICAgMTM4LCAgIDEzOSwgICAxNDAsICAgMTQxLCAgIDE0MiwgICAxNDMsICAgMTQ0LAorICAgICAx
NDUsICAgMTQ2LCAgIDE0NywgICAxNDgsICAgMTQ5LCAgIDE1MCwgICAxNTEKIH07CiAKICNpZiBZ
WURFQlVHCiAgIC8qIFlZUkxJTkVbWVlOXSAtLSBTb3VyY2UgbGluZSB3aGVyZSBydWxlIG51bWJl
ciBZWU4gd2FzIGRlZmluZWQuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXlybGlu
ZVtdID0KIHsKLSAgICAgICAwLCAgIDIzNywgICAyMzcsICAgMjM4LCAgIDI0MSwgICAyNTEsICAg
MjU0LCAgIDI1OSwgICAyNjQsICAgMjY5LAotICAgICAyNzQsICAgMjgwLCAgIDI4MywgICAyODYs
ICAgMjg5LCAgIDI5MiwgICAyOTUsICAgMzAxLCAgIDMwOCwgICAzMTksCi0gICAgIDMyMywgICAz
MzEsICAgMzM0LCAgIDM0MCwgICAzNDQsICAgMzUxLCAgIDM1NywgICAzNjYsICAgMzc0LCAgIDM4
MCwKLSAgICAgMzg2LCAgIDM5NSwgICAzOTgsICAgNDAxLCAgIDQwNCwgICA0MTQsICAgNDE1LCAg
IDQxNiwgICA0MTcsICAgNDI1LAotICAgICA0MjYsICAgNDI5LCAgIDQzMiwgICA0MzksICAgNDQw
LCAgIDQ0MywgICA0NDksICAgNDUwLCAgIDQ1NCwgICA0NjEsCi0gICAgIDQ2MiwgICA0NjUsICAg
NDY4LCAgIDQ3MSwgICA0NzcsICAgNDc4LCAgIDQ4MSwgICA0ODcsICAgNDg4LCAgIDQ5NSwKLSAg
ICAgNDk2LCAgIDUwMywgICA1MDQsICAgNTExLCAgIDUxMiwgICA1MTgsICAgNTE5LCAgIDUyNSwg
ICA1MjYsICAgNTMyLAotICAgICA1MzMsICAgNTM5LCAgIDU0MCwgICA1NDcsICAgNTQ4LCAgIDU0
OSwgICA1NTAsICAgNTU0LCAgIDU1NSwgICA1NTYsCi0gICAgIDU2MCwgICA1NjQsICAgNTY4LCAg
IDU3MiwgICA1NzksICAgNTgyLCAgIDU4OCwgICA1OTUsICAgNjAyLCAgIDYwNSwKLSAgICAgNjEx
LCAgIDYyMCwgICA2MjQsICAgNjI4LCAgIDYzMiwgICA2MzYsICAgNjQzLCAgIDY1MCwgICA2NTMs
ICAgNjYwLAotICAgICA2NjgsICAgNjg4LCAgIDY5OCwgICA3MDYsICAgNzMxLCAgIDczNSwgICA3
MzksICAgNzQzLCAgIDc1MCwgICA3NTcsCi0gICAgIDc2MCwgICA3NjQsICAgNzY4LCAgIDc3Mywg
ICA3NzgsICAgNzg1LCAgIDc4OSwgICA3OTMsICAgNzk3LCAgIDgwMiwKLSAgICAgODA3LCAgIDgx
NCwgICA4MjQsICAgODMwLCAgIDgzMywgICA4MzksICAgODQzLCAgIDg1MCwgICA4NTYsICAgODYz
LAotICAgICA4NjcsICAgODcwLCAgIDg3MywgICA4ODIsICAgODg4LCAgIDg5NiwgICA4OTksICAg
OTE5LCAgIDkzOCwgICA5NDUsCi0gICAgIDk0OSwgICA5NTYsICAgOTY2LCAgIDk2OSwgICA5NzIs
ICAgOTc4LCAgIDk4NSwgICA5ODgsICAgOTk0LCAgIDk5NywKLSAgICAxMDAwLCAgMTAwNiwgIDEw
MDksICAxMDE0LCAgMTAyNSwgIDEwMjgsICAxMDMxLCAgMTAzNCwgIDEwMzcsICAxMDQwLAotICAg
IDEwNDQsICAxMDQ4LCAgMTA1MiwgIDEwNTYsICAxMDYwLCAgMTA2NCwgIDEwNjgsICAxMDcyLCAg
MTA3NiwgIDEwODAsCi0gICAgMTA4NCwgIDEwODgsICAxMDkyLCAgMTA5NiwgIDExMDAsICAxMTA0
LCAgMTEwOCwgIDExMTIsICAxMTE2LCAgMTEyMCwKLSAgICAxMTI0LCAgMTEyNywgIDExMzAsICAx
MTMzLCAgMTEzNiwgIDExMzksICAxMTQyLCAgMTE0NSwgIDExNDgsICAxMTUxLAotICAgIDExNTQs
ICAxMTU3LCAgMTE2MCwgIDExNjMsICAxMTY2LCAgMTE2OSwgIDExNzYsICAxMTgyLCAgMTE4NSwg
IDExOTcsCi0gICAgMTE5NywgIDEyMDAsICAxMjAwLCAgMTIwNiwgIDEyMDksICAxMjI0LCAgMTIy
NywgIDEyMzQsICAxMjM4LCAgMTI0NCwKLSAgICAxMjUwLCAgMTI2MiwgIDEyNjYsICAxMjcwLCAg
MTI3MSwgIDEyNzcsICAxMjc4LCAgMTI3OSwgIDEyODAsICAxMjgxLAotICAgIDEyODIsICAxMjgz
LCAgMTI4NywgIDEyODgsICAxMjg4LCAgMTI4OCwgIDEyOTcsICAxMjk4LCAgMTMwMiwgIDEzMDIs
Ci0gICAgMTMwMywgIDEzMDMsICAxMzA4LCAgMTMxMSwgIDEzMjAsICAxMzI1LCAgMTMzMiwgIDEz
MzMsICAxMzM3LCAgMTM0NCwKLSAgICAxMzQ4LCAgMTM1NSwgIDEzNTUsICAxMzYyLCAgMTM2NSwg
IDEzNzIsICAxMzc2LCAgMTM4OSwgIDEzODksICAxMzk0LAotICAgIDEzOTQsICAxNDAwLCAgMTQw
MCwgIDE0MDgsICAxNDExLCAgMTQxNywgIDE0MjAsICAxNDI2LCAgMTQzMCwgIDE0MzcsCi0gICAg
MTQ0MCwgIDE0NDMsICAxNDQ2LCAgMTQ0OSwgIDE0NTgsICAxNDY0LCAgMTQ3MCwgIDE0NzMsICAx
NDc5LCAgMTQ3OQorICAgICAgIDAsICAgMjQ4LCAgIDI0OCwgICAyNDksICAgMjUyLCAgIDI2Miwg
ICAyNjUsICAgMjcwLCAgIDI3NSwgICAyODAsCisgICAgIDI4NSwgICAyOTMsICAgMjk5LCAgIDMw
MiwgICAzMDUsICAgMzA4LCAgIDMxMSwgICAzMTQsICAgMzIwLCAgIDMyNywKKyAgICAgMzMzLCAg
IDMzNywgICAzNDUsICAgMzQ4LCAgIDM1NCwgICAzNTgsICAgMzY1LCAgIDM3MCwgICAzNzcsICAg
Mzg1LAorICAgICAzOTEsICAgMzk3LCAgIDQwNiwgICA0MDksICAgNDEyLCAgIDQxNSwgICA0MjUs
ICAgNDI2LCAgIDQyNywgICA0MjgsCisgICAgIDQzNiwgICA0MzcsICAgNDQwLCAgIDQ0MywgICA0
NTAsICAgNDUxLCAgIDQ1NCwgICA0NjAsICAgNDYxLCAgIDQ2NSwKKyAgICAgNDcyLCAgIDQ3Mywg
ICA0NzYsICAgNDc5LCAgIDQ4MiwgICA0ODgsICAgNDg5LCAgIDQ5MiwgICA0OTgsICAgNDk5LAor
ICAgICA1MDYsICAgNTA3LCAgIDUxNCwgICA1MTUsICAgNTIyLCAgIDUyMywgICA1MjksICAgNTMw
LCAgIDUzNiwgICA1MzcsCisgICAgIDU0MywgICA1NDQsICAgNTUwLCAgIDU1MSwgICA1NTgsICAg
NTU5LCAgIDU2MCwgICA1NjEsICAgNTY1LCAgIDU2NiwKKyAgICAgNTY3LCAgIDU3MSwgICA1NzUs
ICAgNTc5LCAgIDU4MywgICA1OTAsICAgNTkzLCAgIDU5OSwgICA2MDYsICAgNjEzLAorICAgICA2
MTYsICAgNjE5LCAgIDYyOCwgICA2MzIsICAgNjM2LCAgIDY0MCwgICA2NDQsICAgNjUxLCAgIDY1
OCwgICA2NjEsCisgICAgIDY2OCwgICA2NzYsICAgNjk2LCAgIDcwNiwgICA3MTQsICAgNzM5LCAg
IDc0MywgICA3NDcsICAgNzUxLCAgIDc1OCwKKyAgICAgNzY1LCAgIDc2OCwgICA3NzIsICAgNzc2
LCAgIDc4MSwgICA3ODYsICAgNzkzLCAgIDc5NywgICA4MDEsICAgODA1LAorICAgICA4MTAsICAg
ODE1LCAgIDgyMiwgICA4MjYsICAgODMyLCAgIDgzNSwgICA4NDEsICAgODQ1LCAgIDg1MiwgICA4
NTgsCisgICAgIDg2MiwgICA4NjYsICAgODY5LCAgIDg3MiwgICA4ODEsICAgODg3LCAgIDg5NSwg
ICA4OTgsICAgOTE4LCAgIDkzNywKKyAgICAgOTQ0LCAgIDk0OCwgICA5NTIsICAgOTU1LCAgIDk1
OCwgICA5NjEsICAgOTY0LCAgIDk2NywgICA5NzUsICAgOTgyLAorICAgICA5ODUsICAgOTg4LCAg
IDk5NCwgIDEwMDEsICAxMDA0LCAgMTAxMCwgIDEwMTMsICAxMDE2LCAgMTAxOSwgIDEwMjUsCisg
ICAgMTAyOCwgIDEwMzMsICAxMDQ0LCAgMTA0NywgIDEwNTAsICAxMDUzLCAgMTA1NiwgIDEwNTks
ICAxMDYzLCAgMTA2NywKKyAgICAxMDcxLCAgMTA3NSwgIDEwNzksICAxMDgzLCAgMTA4NywgIDEw
OTEsICAxMDk1LCAgMTA5OSwgIDExMDMsICAxMTA3LAorICAgIDExMTEsICAxMTE1LCAgMTExOSwg
IDExMjMsICAxMTI3LCAgMTEzMSwgIDExMzUsICAxMTM5LCAgMTE0MywgIDExNDksCisgICAgMTE1
MiwgIDExNTUsICAxMTU4LCAgMTE2MSwgIDExNjQsICAxMTY3LCAgMTE3MCwgIDExNzMsICAxMTc2
LCAgMTE3OSwKKyAgICAxMTgyLCAgMTE4NSwgIDExODgsICAxMTkxLCAgMTE5NCwgIDExOTcsICAx
MjAwLCAgMTIwMywgIDEyMTAsICAxMjE2LAorICAgIDEyMjIsICAxMjI1LCAgMTIyOCwgIDEyMzEs
ICAxMjM0LCAgMTIzNywgIDEyNDAsICAxMjQzLCAgMTI0NiwgIDEyNDksCisgICAgMTI1MiwgIDEy
NTUsICAxMjU4LCAgMTI2MSwgIDEyNzMsICAxMjczLCAgMTI3NiwgIDEyNzYsICAxMjgyLCAgMTI4
NSwKKyAgICAxMjkxLCAgMTI5NCwgIDEzMDEsICAxMzA1LCAgMTMxMSwgIDEzMTcsICAxMzI5LCAg
MTMzMywgIDEzMzcsICAxMzM4LAorICAgIDEzNDQsICAxMzQ1LCAgMTM0NiwgIDEzNDcsICAxMzQ4
LCAgMTM0OSwgIDEzNTAsICAxMzU0LCAgMTM1NSwgIDEzNTUsCisgICAgMTM1NSwgIDEzNjQsICAx
MzY1LCAgMTM2OSwgIDEzNjksICAxMzcwLCAgMTM3MCwgIDEzNzUsICAxMzc4LCAgMTM4NywKKyAg
ICAxMzkyLCAgMTM5OSwgIDE0MDAsICAxNDA0LCAgMTQxMSwgIDE0MTUsICAxNDIyLCAgMTQyMiwg
IDE0MjksICAxNDMyLAorICAgIDE0MzksICAxNDQzLCAgMTQ1NiwgIDE0NTYsICAxNDYxLCAgMTQ2
MSwgIDE0NjcsICAxNDY3LCAgMTQ3NSwgIDE0NzgsCisgICAgMTQ4NCwgIDE0ODcsICAxNDkzLCAg
MTQ5NywgIDE1MDQsICAxNTA3LCAgMTUxMCwgIDE1MTMsICAxNTE2LCAgMTUyNSwKKyAgICAxNTMx
LCAgMTUzNywgIDE1NDAsICAxNTQ2LCAgMTU0NgogfTsKICNlbmRpZgogCkBAIC03NTksMjUgKzc4
OSwzMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgeXl0bmFtZVtdID0KICAgIklWRUM0Iiwg
IlZFQzIiLCAiVkVDMyIsICJWRUM0IiwgIlVWRUMyIiwgIlVWRUMzIiwgIlVWRUM0IiwgIk1BVFJJ
WDIiLAogICAiTUFUUklYMyIsICJNQVRSSVg0IiwgIklOX1FVQUwiLCAiT1VUX1FVQUwiLCAiSU5P
VVRfUVVBTCIsICJVTklGT1JNIiwKICAgIlZBUllJTkciLCAiTUFUUklYMngzIiwgIk1BVFJJWDN4
MiIsICJNQVRSSVgyeDQiLCAiTUFUUklYNHgyIiwKLSAgIk1BVFJJWDN4NCIsICJNQVRSSVg0eDMi
LCAiQ0VOVFJPSUQiLCAiRkxBVCIsICJTTU9PVEgiLCAiU1RSVUNUIiwKKyAgIk1BVFJJWDN4NCIs
ICJNQVRSSVg0eDMiLCAiQ0VOVFJPSUQiLCAiRkxBVCIsICJTTU9PVEgiLCAiUkVBRE9OTFkiLAor
ICAiV1JJVEVPTkxZIiwgIkNPSEVSRU5UIiwgIlJFU1RSSUNUIiwgIlZPTEFUSUxFIiwgIlNIQVJF
RCIsICJTVFJVQ1QiLAogICAiVk9JRF9UWVBFIiwgIldISUxFIiwgIlNBTVBMRVIyRCIsICJTQU1Q
TEVSQ1VCRSIsICJTQU1QTEVSX0VYVEVSTkFMX09FUyIsCiAgICJTQU1QTEVSMkRSRUNUIiwgIlNB
TVBMRVIyREFSUkFZIiwgIklTQU1QTEVSMkQiLCAiSVNBTVBMRVIzRCIsCiAgICJJU0FNUExFUkNV
QkUiLCAiSVNBTVBMRVIyREFSUkFZIiwgIlVTQU1QTEVSMkQiLCAiVVNBTVBMRVIzRCIsCi0gICJV
U0FNUExFUkNVQkUiLCAiVVNBTVBMRVIyREFSUkFZIiwgIlNBTVBMRVIzRCIsICJTQU1QTEVSM0RS
RUNUIiwKLSAgIlNBTVBMRVIyRFNIQURPVyIsICJTQU1QTEVSQ1VCRVNIQURPVyIsICJTQU1QTEVS
MkRBUlJBWVNIQURPVyIsICJMQVlPVVQiLAotICAiSURFTlRJRklFUiIsICJUWVBFX05BTUUiLCAi
RkxPQVRDT05TVEFOVCIsICJJTlRDT05TVEFOVCIsCi0gICJVSU5UQ09OU1RBTlQiLCAiQk9PTENP
TlNUQU5UIiwgIkZJRUxEX1NFTEVDVElPTiIsICJMRUZUX09QIiwgIlJJR0hUX09QIiwKLSAgIklO
Q19PUCIsICJERUNfT1AiLCAiTEVfT1AiLCAiR0VfT1AiLCAiRVFfT1AiLCAiTkVfT1AiLCAiQU5E
X09QIiwKLSAgIk9SX09QIiwgIlhPUl9PUCIsICJNVUxfQVNTSUdOIiwgIkRJVl9BU1NJR04iLCAi
QUREX0FTU0lHTiIsCi0gICJNT0RfQVNTSUdOIiwgIkxFRlRfQVNTSUdOIiwgIlJJR0hUX0FTU0lH
TiIsICJBTkRfQVNTSUdOIiwgIlhPUl9BU1NJR04iLAotICAiT1JfQVNTSUdOIiwgIlNVQl9BU1NJ
R04iLCAiTEVGVF9QQVJFTiIsICJSSUdIVF9QQVJFTiIsICJMRUZUX0JSQUNLRVQiLAotICAiUklH
SFRfQlJBQ0tFVCIsICJMRUZUX0JSQUNFIiwgIlJJR0hUX0JSQUNFIiwgIkRPVCIsICJDT01NQSIs
ICJDT0xPTiIsCi0gICJFUVVBTCIsICJTRU1JQ09MT04iLCAiQkFORyIsICJEQVNIIiwgIlRJTERF
IiwgIlBMVVMiLCAiU1RBUiIsICJTTEFTSCIsCi0gICJQRVJDRU5UIiwgIkxFRlRfQU5HTEUiLCAi
UklHSFRfQU5HTEUiLCAiVkVSVElDQUxfQkFSIiwgIkNBUkVUIiwKLSAgIkFNUEVSU0FORCIsICJR
VUVTVElPTiIsICIkYWNjZXB0IiwgImlkZW50aWZpZXIiLCAidmFyaWFibGVfaWRlbnRpZmllciIs
Ci0gICJwcmltYXJ5X2V4cHJlc3Npb24iLCAicG9zdGZpeF9leHByZXNzaW9uIiwgImludGVnZXJf
ZXhwcmVzc2lvbiIsCi0gICJmdW5jdGlvbl9jYWxsIiwgImZ1bmN0aW9uX2NhbGxfb3JfbWV0aG9k
IiwgImZ1bmN0aW9uX2NhbGxfZ2VuZXJpYyIsCi0gICJmdW5jdGlvbl9jYWxsX2hlYWRlcl9ub19w
YXJhbWV0ZXJzIiwKKyAgIlVTQU1QTEVSQ1VCRSIsICJVU0FNUExFUjJEQVJSQVkiLCAiU0FNUExF
UjJETVMiLCAiSVNBTVBMRVIyRE1TIiwKKyAgIlVTQU1QTEVSMkRNUyIsICJTQU1QTEVSM0QiLCAi
U0FNUExFUjNEUkVDVCIsICJTQU1QTEVSMkRTSEFET1ciLAorICAiU0FNUExFUkNVQkVTSEFET1ci
LCAiU0FNUExFUjJEQVJSQVlTSEFET1ciLCAiU0FNUExFUkVYVEVSTkFMMkRZMllFWFQiLAorICAi
SU1BR0UyRCIsICJJSU1BR0UyRCIsICJVSU1BR0UyRCIsICJJTUFHRTNEIiwgIklJTUFHRTNEIiwg
IlVJTUFHRTNEIiwKKyAgIklNQUdFMkRBUlJBWSIsICJJSU1BR0UyREFSUkFZIiwgIlVJTUFHRTJE
QVJSQVkiLCAiSU1BR0VDVUJFIiwKKyAgIklJTUFHRUNVQkUiLCAiVUlNQUdFQ1VCRSIsICJMQVlP
VVQiLCAiWVVWQ1NDU1RBTkRBUkRFWFQiLAorICAiWVVWQ1NDU1RBTkRBUkRFWFRDT05TVEFOVCIs
ICJJREVOVElGSUVSIiwgIlRZUEVfTkFNRSIsICJGTE9BVENPTlNUQU5UIiwKKyAgIklOVENPTlNU
QU5UIiwgIlVJTlRDT05TVEFOVCIsICJCT09MQ09OU1RBTlQiLCAiRklFTERfU0VMRUNUSU9OIiwK
KyAgIkxFRlRfT1AiLCAiUklHSFRfT1AiLCAiSU5DX09QIiwgIkRFQ19PUCIsICJMRV9PUCIsICJH
RV9PUCIsICJFUV9PUCIsCisgICJORV9PUCIsICJBTkRfT1AiLCAiT1JfT1AiLCAiWE9SX09QIiwg
Ik1VTF9BU1NJR04iLCAiRElWX0FTU0lHTiIsCisgICJBRERfQVNTSUdOIiwgIk1PRF9BU1NJR04i
LCAiTEVGVF9BU1NJR04iLCAiUklHSFRfQVNTSUdOIiwgIkFORF9BU1NJR04iLAorICAiWE9SX0FT
U0lHTiIsICJPUl9BU1NJR04iLCAiU1VCX0FTU0lHTiIsICJMRUZUX1BBUkVOIiwgIlJJR0hUX1BB
UkVOIiwKKyAgIkxFRlRfQlJBQ0tFVCIsICJSSUdIVF9CUkFDS0VUIiwgIkxFRlRfQlJBQ0UiLCAi
UklHSFRfQlJBQ0UiLCAiRE9UIiwKKyAgIkNPTU1BIiwgIkNPTE9OIiwgIkVRVUFMIiwgIlNFTUlD
T0xPTiIsICJCQU5HIiwgIkRBU0giLCAiVElMREUiLCAiUExVUyIsCisgICJTVEFSIiwgIlNMQVNI
IiwgIlBFUkNFTlQiLCAiTEVGVF9BTkdMRSIsICJSSUdIVF9BTkdMRSIsICJWRVJUSUNBTF9CQVIi
LAorICAiQ0FSRVQiLCAiQU1QRVJTQU5EIiwgIlFVRVNUSU9OIiwgIiRhY2NlcHQiLCAiaWRlbnRp
ZmllciIsCisgICJ2YXJpYWJsZV9pZGVudGlmaWVyIiwgInByaW1hcnlfZXhwcmVzc2lvbiIsICJw
b3N0Zml4X2V4cHJlc3Npb24iLAorICAiaW50ZWdlcl9leHByZXNzaW9uIiwgImZ1bmN0aW9uX2Nh
bGwiLCAiZnVuY3Rpb25fY2FsbF9vcl9tZXRob2QiLAorICAiZnVuY3Rpb25fY2FsbF9nZW5lcmlj
IiwgImZ1bmN0aW9uX2NhbGxfaGVhZGVyX25vX3BhcmFtZXRlcnMiLAogICAiZnVuY3Rpb25fY2Fs
bF9oZWFkZXJfd2l0aF9wYXJhbWV0ZXJzIiwgImZ1bmN0aW9uX2NhbGxfaGVhZGVyIiwKICAgImZ1
bmN0aW9uX2lkZW50aWZpZXIiLCAidW5hcnlfZXhwcmVzc2lvbiIsICJ1bmFyeV9vcGVyYXRvciIs
CiAgICJtdWx0aXBsaWNhdGl2ZV9leHByZXNzaW9uIiwgImFkZGl0aXZlX2V4cHJlc3Npb24iLCAi
c2hpZnRfZXhwcmVzc2lvbiIsCkBAIC04MjcsMTYgKzg2MiwxOSBAQCBzdGF0aWMgY29uc3QgeXl0
eXBlX3VpbnQxNiB5eXRva251bVtdID0KICAgICAgMzQ1LCAgIDM0NiwgICAzNDcsICAgMzQ4LCAg
IDM0OSwgICAzNTAsICAgMzUxLCAgIDM1MiwgICAzNTMsICAgMzU0LAogICAgICAzNTUsICAgMzU2
LCAgIDM1NywgICAzNTgsICAgMzU5LCAgIDM2MCwgICAzNjEsICAgMzYyLCAgIDM2MywgICAzNjQs
CiAgICAgIDM2NSwgICAzNjYsICAgMzY3LCAgIDM2OCwgICAzNjksICAgMzcwLCAgIDM3MSwgICAz
NzIsICAgMzczLCAgIDM3NCwKLSAgICAgMzc1LCAgIDM3NiwgICAzNzcsICAgMzc4LCAgIDM3OSwg
ICAzODAsICAgMzgxLCAgIDM4MgorICAgICAzNzUsICAgMzc2LCAgIDM3NywgICAzNzgsICAgMzc5
LCAgIDM4MCwgICAzODEsICAgMzgyLCAgIDM4MywgICAzODQsCisgICAgIDM4NSwgICAzODYsICAg
Mzg3LCAgIDM4OCwgICAzODksICAgMzkwLCAgIDM5MSwgICAzOTIsICAgMzkzLCAgIDM5NCwKKyAg
ICAgMzk1LCAgIDM5NiwgICAzOTcsICAgMzk4LCAgIDM5OSwgICA0MDAsICAgNDAxLCAgIDQwMiwg
ICA0MDMsICAgNDA0LAorICAgICA0MDUsICAgNDA2CiB9OwogIyBlbmRpZgogCi0jZGVmaW5lIFlZ
UEFDVF9OSU5GIC0zNDgKKyNkZWZpbmUgWVlQQUNUX05JTkYgLTM2OAogCiAjZGVmaW5lIHl5cGFj
dF92YWx1ZV9pc19kZWZhdWx0KFl5c3RhdGUpIFwKLSAgKCEhKChZeXN0YXRlKSA9PSAoLTM0OCkp
KQorICAoISEoKFl5c3RhdGUpID09ICgtMzY4KSkpCiAKLSNkZWZpbmUgWVlUQUJMRV9OSU5GIC0y
MjkKKyNkZWZpbmUgWVlUQUJMRV9OSU5GIC0yNTQKIAogI2RlZmluZSB5eXRhYmxlX3ZhbHVlX2lz
X2Vycm9yKFl5dGFibGVfdmFsdWUpIFwKICAgMApAQCAtODQ1LDQ3ICs4ODMsNDkgQEAgc3RhdGlj
IGNvbnN0IHl5dHlwZV91aW50MTYgeXl0b2tudW1bXSA9CiAgICAgIFNUQVRFLU5VTS4gICovCiBz
dGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5cGFjdFtdID0KIHsKLSAgICAyMTQ0LCAgLTM0OCwg
IC0zNDgsICAtMzQ4LCAgLTM0OCwgICAxNDQsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LAot
ICAgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4
LCAgLTM0OCwgIC0zNDgsCi0gICAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAt
MzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwKLSAgICAtMzQ4LCAgLTM0OCwgIC0zNDgs
ICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LAotICAgIC0z
NDgsICAgLTUzLCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0
OCwgIC0zNDgsCi0gICAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAg
LTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwKLSAgICAgLTgzLCAgLTM0OCwgIC0zNDgsICAgLTg5
LCAgIC03MCwgICAtODEsICAyMjE5LCAgIC0yNiwgIC0zNDgsICAgIDYwLAotICAgIC0zNDgsICAx
MTYzLCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgICAt
NjYsCi0gICAgLTM0OCwgIDIwNjksICAtMzQ4LCAgLTM0OCwgIDIzNTUsICAtMzQ4LCAgLTM0OCwg
IC0zNDgsICAgLTQxLCAgICAtMiwKLSAgICAtMzQ4LCAgIC0zMCwgIC0zNDgsICAyMjE5LCAgLTM0
OCwgIC0zNDgsICAtMzQ4LCAgMjIxOSwgICAgODAsICAgIDgwLAotICAgIC0zNDgsICAgLTE3LCAg
IC03NSwgICAtNjUsICAtMzQ4LCAgMjIxOSwgIC0zNDgsICAtMzQ4LCAgMTIzMywgIC0zNDgsCi0g
ICAgLTM0OCwgICAtMTUsICAyMjE5LCAgLTM0OCwgICAtMTAsICAgLTg1LCAgLTM0OCwgICAzODks
ICAtMzQ4LCAgLTM0OCwKLSAgICAtMzQ4LCAgLTM0OCwgICAgIDEsICAgLTQ5LCAgLTM0OCwgIDEz
MzEsICAxNjIyLCAgLTM0OCwgIC0zNDgsICAyMjE5LAotICAgICAgODAsICAxODE0LCAgLTM0OCwg
ICAgMTksICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIDE2MjIsCi0gICAgMTYy
MiwgIDE2MjIsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4
LCAgIC0yNCwKLSAgICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAgIDM3LCAgIC0yMiwgIDE3MTcsICAg
IDY3LCAgLTM0OCwgIDE2MjIsICAgIDM0LAotICAgICAgMTQsICAgIDc2LCAgIC00NiwgICAgNzIs
ICAgIDUxLCAgICA3NSwgICAgNzgsICAgMTEyLCAgIDExMywgICAtNzcsCi0gICAgLTM0OCwgICAg
OTgsICAtMzQ4LCAgLTM0OCwgIDE4OTksICAyMjE5LCAgICA4NCwgIC0zNDgsICAgIC0yLCAgICA5
NCwKLSAgICAgIDk3LCAgLTM0OCwgICAxMDgsICAgMTA5LCAgIDEwMCwgIDE0MjksICAgMTE0LCAg
MTYyMiwgICAxMDQsICAgMTE1LAotICAgICAxMTEsICAtMzQ4LCAgLTM0OCwgICAxOTAsICAtMzQ4
LCAgLTM0OCwgICAtMTksICAtMzQ4LCAgIC04OSwgICAxMTcsCi0gICAgLTM0OCwgIC0zNDgsICAt
MzQ4LCAgLTM0OCwgICA1MDUsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwKLSAg
ICAtMzQ4LCAgMTYyMiwgIDE1MjQsICAxNjIyLCAgIDExNiwgICAxMTAsICAtMzQ4LCAgLTM0OCwg
ICAgODAsICAgMTE4LAotICAgICAgMjcsICAtMzQ4LCAgIC01OCwgIC0zNDgsICAtMzQ4LCAgLTM0
OCwgICAgLTUsICAtMzQ4LCAgLTM0OCwgIDE2MjIsCi0gICAgMjI4NywgIC0zNDgsICAtMzQ4LCAg
MTYyMiwgICAxMjEsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAxNjIyLCAgMTYyMiwKLSAgICAxNjIy
LCAgMTYyMiwgIDE2MjIsICAxNjIyLCAgMTYyMiwgIDE2MjIsICAxNjIyLCAgMTYyMiwgIDE2MjIs
ICAxNjIyLAotICAgIDE2MjIsICAxNjIyLCAgMTYyMiwgIDE2MjIsICAxNjIyLCAgMTYyMiwgIDE2
MjIsICAxNjIyLCAgLTM0OCwgIC0zNDgsCi0gICAgMTk4NCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwg
IC0zNDgsICAtMzQ4LCAgIDExOSwgIC0zNDgsICAxNjIyLCAgLTM0OCwKLSAgICAtMzQ4LCAgICAz
MiwgIDE2MjIsICAgMTIyLCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgIDYyMSwgIC0zNDgsICAtMzQ4
LAotICAgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAt
MzQ4LCAgLTM0OCwgIDE2MjIsCi0gICAgMTYyMiwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgICAxMjQs
ICAgMTIwLCAgIDEyOSwgIC0zNDgsICAxNjIyLCAgIDEyNSwKLSAgICAgIDMzLCAgMTYyMiwgICAg
ODAsICAtMzQ4LCAgIC04NywgIC0zNDgsICAtMzQ4LCAgIDEzMCwgICAxMjgsICAtMzQ4LAotICAg
ICAxMzYsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgICAgMzQsICAgIDM0LCAg
ICAxNCwgICAgMTQsCi0gICAgICA3NiwgICAgNzYsICAgIDc2LCAgICA3NiwgICAtNDYsICAgLTQ2
LCAgICA3MiwgICAgNTEsICAgIDc1LCAgICA3OCwKLSAgICAgMTEyLCAgIDExMywgICAgNTQsICAt
MzQ4LCAgIDE2NiwgICAtMzAsICAgODUzLCAgIDk2OSwgICAgLTMsICAtMzQ4LAotICAgICAgLTEs
ICAtMzQ4LCAgMTA2NiwgICA2MjEsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAxNjIyLCAgIDEzMiwg
IC0zNDgsCi0gICAgMTYyMiwgIC0zNDgsICAgMTM1LCAgLTM0OCwgIDE2MjIsICAtMzQ4LCAgLTM0
OCwgIDE2MjIsICAgMTM5LCAgLTM0OCwKLSAgICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAxMDY2LCAg
IDExOSwgIC0zNDgsICAgMTI4LCAgICA4MCwgIDIyMTksICAgMTQxLAotICAgICAxNDAsICAtMzQ4
LCAgMTYyMiwgIC0zNDgsICAtMzQ4LCAgIDE0NSwgIC0zNDgsICAxNjIyLCAgLTM0OCwgICAxMzQs
Ci0gICAgIDE0NiwgICAyMzYsICAtMzQ4LCAgIDE0NywgICAxNDMsICAgNzM3LCAgLTM0OCwgIC0z
NDgsICAgMTQ4LCAgICAxNywKLSAgICAxNjIyLCAgIDczNywgICAxMTksICAtMzQ4LCAgMTYyMiwg
IC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAgMTQ5LAotICAgICAxMjgsICAtMzQ4LCAgLTM0
OCwgIC0zNDgsICAtMzQ4CisgICAgMjYwOSwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAg
MTQyLCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwKKyAgICAtMzY4LCAgLTM2OCwgIC0zNjgs
ICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LAorICAgIC0z
NjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2
OCwgIC0zNjgsCisgICAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAg
LTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwKKyAgICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4
LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgIC04MCwgIC0zNjgsICAtMzY4LAorICAgIC0zNjgsICAt
MzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0z
NjgsCisgICAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwg
IC0zNjgsICAtMzY4LCAgLTM2OCwKKyAgICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2
OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LAorICAgIC0zNjgsICAtMzY4LCAg
IC02OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgICAtNjksICAgLTU2LCAgIC01MCwgIDI3MDgsCisg
ICAgIC05NSwgIC0zNjgsICAgLTc1LCAgLTM2OCwgIDEzNjQsICAtMzY4LCAgLTM2OCwgIC0zNjgs
ICAtMzY4LCAgLTM2OCwKKyAgICAtMzY4LCAgLTM2OCwgICAtMzcsICAtMzY4LCAgMjUxMCwgIC0z
NjgsICAtMzY4LCAgMjg5MiwgIC0zNjgsICAtMzY4LAorICAgIC0zNjgsICAgLTIyLCAgIC00Mywg
IC0zNjgsICAgLTE3LCAgLTM2OCwgIDI3MDgsICAtMzY4LCAgLTM2OCwgIC0zNjgsCisgICAgMjcw
OCwgICAgMjksICAgIDI5LCAgLTM2OCwgICAtMjAsICAtMTAzLCAgIC05NiwgIC0zNjgsICAyNzA4
LCAgLTM2OCwKKyAgICAtMzY4LCAgMTQ1OCwgIC0zNjgsICAtMzY4LCAgIC0zMiwgIDI3MDgsICAt
MzY4LCAgLTM2OCwgICAtMTUsICAgLTY1LAorICAgIC0zNjgsICAgNDIyLCAgLTM2OCwgIC0zNjgs
ICAtMzY4LCAgLTM2OCwgICAgIDksICAgLTk5LCAgLTM2OCwgIDE1ODAsCisgICAgMTk0MywgIC0z
NjgsICAtMzY4LCAgMjcwOCwgICAgMjksICAyMTgzLCAgLTM2OCwgIC0zNjgsICAgIDI0LCAgLTM2
OCwKKyAgICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgMTk0MywgIDE5NDMsICAxOTQzLCAg
LTM2OCwgIC0zNjgsICAtMzY4LAorICAgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAgLTM4
LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgICAzNSwgICAtNDgsCisgICAgMjA2MiwgICAgMjYsICAt
MzY4LCAgMTk0MywgICAgIDYsICAgLTg5LCAgICA0OSwgICAtNjcsICAgIDIzLCAgICAxOCwKKyAg
ICAgIDIyLCAgICAyNywgICAgNTcsICAgIDYwLCAgIC05MywgIC0zNjgsICAgIDQ3LCAgLTM2OCwg
IC0zNjgsICAyMjkyLAorICAgIDI3MDgsICAgIDU1LCAgLTM2OCwgICAtNDMsICAgIDQxLCAgICA0
MiwgIC0zNjgsICAgIDUzLCAgICA1NiwgICAgNDgsCisgICAgMTcwMiwgICAgNjEsICAxOTQzLCAg
ICA1MiwgICAgNjIsICAgIDUwLCAgLTM2OCwgIC0zNjgsICAgIDk4LCAgLTM2OCwKKyAgICAtMzY4
LCAgIC03MywgIC0zNjgsICAgLTY5LCAgICA2NCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgs
ICAgNTYyLAorICAgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIDE5
NDMsICAxODIxLCAgMTk0MywgICAgNTgsCisgICAgICA1NCwgIC0zNjgsICAtMzY4LCAgICAyOSwg
ICAgNjMsICAgLTUyLCAgLTM2OCwgICAtODIsICAtMzY4LCAgLTM2OCwKKyAgICAtMzY4LCAgIC00
NywgIC0zNjgsICAtMzY4LCAgMTk0MywgIDI4MDAsICAtMzY4LCAgLTM2OCwgIDE5NDMsICAgIDY3
LAorICAgIC0zNjgsICAtMzY4LCAgLTM2OCwgIDE5NDMsICAxOTQzLCAgMTk0MywgIDE5NDMsICAx
OTQzLCAgMTk0MywgIDE5NDMsCisgICAgMTk0MywgIDE5NDMsICAxOTQzLCAgMTk0MywgIDE5NDMs
ICAxOTQzLCAgMTk0MywgIDE5NDMsICAxOTQzLCAgMTk0MywKKyAgICAxOTQzLCAgMTk0MywgIDE5
NDMsICAtMzY4LCAgLTM2OCwgIDI0MDEsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LAorICAg
IC0zNjgsICAgIDY1LCAgLTM2OCwgIDE5NDMsICAtMzY4LCAgLTM2OCwgICAtNDAsICAxOTQzLCAg
ICA2NiwgIC0zNjgsCisgICAgLTM2OCwgIC0zNjgsICAgNzAyLCAgLTM2OCwgIC0zNjgsICAtMzY4
LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwKKyAgICAtMzY4LCAgLTM2OCwgIC0zNjgsICAt
MzY4LCAgMTk0MywgIDE5NDMsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAgIDcwLAorICAgICAgNjgs
ICAgIDcyLCAgLTM2OCwgIDE5NDMsICAgIDY5LCAgIC0xMiwgIDE5NDMsICAgIDI5LCAgLTM2OCwg
IC0xMDYsCisgICAgLTM2OCwgIC0zNjgsICAgIDc2LCAgICA3MywgIC0zNjgsICAgIDgzLCAgLTM2
OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwKKyAgICAtMzY4LCAgICAgNiwgICAgIDYsICAgLTg5LCAg
IC04OSwgICAgNDksICAgIDQ5LCAgICA0OSwgICAgNDksICAgLTY3LAorICAgICAtNjcsICAgIDIz
LCAgICAxOCwgICAgMjIsICAgIDI3LCAgICA1NywgICAgNjAsICAgIDI1LCAgLTM2OCwgICAxNTEs
CisgICAgIC0xNywgICA5ODIsICAxMTIyLCAgIC00NSwgIC0zNjgsICAgLTI2LCAgLTM2OCwgIDEy
NDMsICAgNzAyLCAgLTM2OCwKKyAgICAtMzY4LCAgLTM2OCwgIDE5NDMsICAgIDc4LCAgLTM2OCwg
IDE5NDMsICAtMzY4LCAgICA5NSwgIC0zNjgsICAxOTQzLAorICAgIC0zNjgsICAtMzY4LCAgMTk0
MywgICAgOTksICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgMTI0MywgICAgNjUsCisgICAg
LTM2OCwgICAgNzMsICAgIDI5LCAgMjcwOCwgICAxMDEsICAgMTAzLCAgLTM2OCwgIDE5NDMsICAt
MzY4LCAgLTM2OCwKKyAgICAgMTA2LCAgLTM2OCwgIDE5NDMsICAtMzY4LCAgICA5NCwgICAxMDks
ICAgMjIyLCAgLTM2OCwgICAxMDgsICAgMTA1LAorICAgICA4NDIsICAtMzY4LCAgLTM2OCwgICAx
MDcsICAgLTI0LCAgMTk0MywgICA4NDIsICAgIDY1LCAgLTM2OCwgIDE5NDMsCisgICAgLTM2OCwg
IC0zNjgsICAtMzY4LCAgLTM2OCwgICAxMTAsICAgIDczLCAgLTM2OCwgIC0zNjgsICAtMzY4LCAg
LTM2OAogfTsKIAogICAvKiBZWURFRkFDVFtTVEFURS1OVU1dIC0tIERlZmF1bHQgcmVkdWN0aW9u
IG51bWJlciBpbiBzdGF0ZSBTVEFURS1OVU0uCkBAIC04OTMsNzcgKzkzMyw3OSBAQCBzdGF0aWMg
Y29uc3QgeXl0eXBlX2ludDE2IHl5cGFjdFtdID0KICAgICAgbWVhbnMgdGhlIGRlZmF1bHQgaXMg
YW4gZXJyb3IuICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXlkZWZhY3RbXSA9CiB7
Ci0gICAgICAgMCwgICAxMjcsICAgMTQyLCAgIDE0MywgICAxNDQsICAgICAwLCAgIDEzMywgICAx
MzUsICAgMTU4LCAgIDE1NSwKLSAgICAgMTU2LCAgIDE1NywgICAxNjIsICAgMTYzLCAgIDE2NCwg
ICAxNjUsICAgMTY2LCAgIDE2NywgICAxNTksICAgMTYwLAotICAgICAxNjEsICAgMTY4LCAgIDE2
OSwgICAxNzAsICAgMTcxLCAgIDE3MiwgICAxNzMsICAgMTM2LCAgIDEzNywgICAxMzgsCi0gICAg
IDE0MCwgICAxMzQsICAgMTc0LCAgIDE3NSwgICAxNzYsICAgMTc3LCAgIDE3OCwgICAxNzksICAg
MTM5LCAgIDEyNCwKLSAgICAgMTIzLCAgICAgMCwgICAxNTQsICAgMTgwLCAgIDE4MiwgICAxOTUs
ICAgMTk2LCAgIDE4MywgICAxODQsICAgMTg1LAotICAgICAxODYsICAgMTg3LCAgIDE4OCwgICAx
ODksICAgMTkwLCAgIDE5MSwgICAxODEsICAgMTkyLCAgIDE5MywgICAxOTQsCi0gICAgICAgMCwg
ICAxOTgsICAgMjY3LCAgIDI2OCwgICAgIDAsICAgIDk4LCAgICA5NywgICAgIDAsICAgMTA5LCAg
IDExNSwKLSAgICAgMTMxLCAgICAgMCwgICAxMzIsICAgMTI1LCAgIDEyOCwgICAxMjEsICAgMTMw
LCAgIDEyOSwgICAxNDEsICAgMTUxLAotICAgICAxOTcsICAgICAwLCAgIDI2NCwgICAyNjYsICAg
ICAwLCAgICAgMiwgICAgIDMsICAgMjAxLCAgICAgMCwgICAgIDAsCi0gICAgICA4OCwgICAgIDAs
ICAgIDk2LCAgICAgMCwgICAxMDUsICAgIDk5LCAgIDEwNywgICAgIDAsICAgMTA4LCAgICAgMCwK
LSAgICAgIDg5LCAgICAgMiwgICAxMTYsICAgICAwLCAgICA5NCwgICAgIDAsICAgMTI2LCAgIDEy
MiwgICAgIDAsICAgICAxLAotICAgICAyNjUsICAgICAwLCAgICAgMCwgICAxOTksICAgMTQ4LCAg
ICAgMCwgICAxNDYsICAgICAwLCAgIDI2OSwgICAxMDAsCi0gICAgIDEwNCwgICAxMDYsICAgMTAy
LCAgIDExMCwgICAxMDEsICAgICAwLCAgICAgMCwgICAgODcsICAgIDk1LCAgICAgMCwKLSAgICAg
ICAwLCAgICAgMCwgICAyMDMsICAgICA0LCAgICAgOCwgICAgIDYsICAgICA3LCAgICAgOSwgICAg
MzAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgIDE1MiwgICAgMzcsICAgIDM2LCAgICAzOCwg
ICAgMzUsICAgICA1LCAgICAxMSwgICAgMzEsCi0gICAgICAxMywgICAgMTgsICAgIDE5LCAgICAg
MCwgICAgIDAsICAgIDI0LCAgICAgMCwgICAgMzksICAgICAwLCAgICA0MywKLSAgICAgIDQ2LCAg
ICA0OSwgICAgNTQsICAgIDU3LCAgICA1OSwgICAgNjEsICAgIDYzLCAgICA2NSwgICAgNjcsICAg
IDY5LAotICAgICAgODYsICAgICAwLCAgICAyOCwgICAgOTAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgMTQ1LCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAyNDksICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgMjIzLCAgIDIzMiwg
ICAyMzYsICAgIDM5LCAgICA3MSwgICAgODQsICAgICAwLCAgIDIxMiwgICAgIDAsICAgMTQxLAot
ICAgICAyMTUsICAgMjM0LCAgIDIxNCwgICAyMTMsICAgICAwLCAgIDIxNiwgICAyMTcsICAgMjE4
LCAgIDIxOSwgICAyMjAsCi0gICAgIDIyMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDIxMSwgICAxMjAsICAgICAwLCAgIDIwOSwKLSAgICAgICAwLCAgIDIwNywgICAgIDAs
ICAgMjA0LCAgICAzMiwgICAgMzMsICAgICAwLCAgICAxNSwgICAgMTYsICAgICAwLAotICAgICAg
IDAsICAgIDIyLCAgICAyMSwgICAgIDAsICAgMTU0LCAgICAyNSwgICAgMjcsICAgIDM0LCAgICAg
MCwgICAgIDAsCisgICAgICAgMCwgICAxMjgsICAgMTQ5LCAgIDE1MCwgICAxNTEsICAgICAwLCAg
IDEzNCwgICAxMzYsICAgMTY2LCAgIDE2MywKKyAgICAgMTY0LCAgIDE2NSwgICAxNzAsICAgMTcx
LCAgIDE3MiwgICAxNzMsICAgMTc0LCAgIDE3NSwgICAxNjcsICAgMTY4LAorICAgICAxNjksICAg
MTc2LCAgIDE3NywgICAxNzgsICAgMTc5LCAgIDE4MCwgICAxODEsICAgMTM3LCAgIDEzOCwgICAx
MzksCisgICAgIDE0MSwgICAxMzUsICAgMTgyLCAgIDE4MywgICAxODQsICAgMTg1LCAgIDE4Niwg
ICAxODcsICAgMTQwLCAgIDEyNSwKKyAgICAgMTI0LCAgIDE0MiwgICAxNDMsICAgMTQ0LCAgIDE0
NSwgICAxNDYsICAgMTQ3LCAgICAgMCwgICAxNjIsICAgMTg5LAorICAgICAxOTEsICAgMjA3LCAg
IDIwOSwgICAxOTIsICAgMTk0LCAgIDE5NSwgICAxOTYsICAgMTk3LCAgIDE5OSwgICAyMDAsCisg
ICAgIDIwMSwgICAyMDIsICAgMTkzLCAgIDE5OCwgICAyMDMsICAgMTkwLCAgIDIwNCwgICAyMDUs
ICAgMjA2LCAgIDIwOCwKKyAgICAgMjExLCAgIDIxMiwgICAyMTMsICAgMjE0LCAgIDIxNSwgICAy
MTYsICAgMjE3LCAgIDIxOCwgICAyMTksICAgMjIwLAorICAgICAyMjEsICAgMjIyLCAgICAgMCwg
ICAxODgsICAgMjIzLCAgIDI5MiwgICAyOTMsICAgICAwLCAgICA5OSwgICAgOTgsCisgICAgICAg
MCwgICAxMTAsICAgMTE2LCAgIDEzMiwgICAgIDAsICAgMTMzLCAgIDEyNiwgICAxMjksICAgMTIy
LCAgIDEzMSwKKyAgICAgMTMwLCAgIDE0OCwgICAxNTksICAgMjEwLCAgICAgMCwgICAyODksICAg
MjkxLCAgICAgMCwgICAgIDIsICAgICAzLAorICAgICAyMjYsICAgICAwLCAgICAgMCwgICAgODks
ICAgICAwLCAgICA5NywgICAgIDAsICAgMTA2LCAgIDEwMCwgICAxMDgsCisgICAgICAgMCwgICAx
MDksICAgICAwLCAgICA5MCwgICAgIDIsICAgMTE3LCAgICAgMCwgICAgOTUsICAgICAwLCAgIDEy
NywKKyAgICAgMTIzLCAgICAgMCwgICAgIDEsICAgMjkwLCAgICAgMCwgICAgIDAsICAgMjI0LCAg
IDE1OCwgICAxNTUsICAgICAwLAorICAgICAxNTMsICAgICAwLCAgIDI5NCwgICAxMDEsICAgMTA1
LCAgIDEwNywgICAxMDMsICAgMTExLCAgIDEwMiwgICAgIDAsCisgICAgICAgMCwgICAgODgsICAg
IDk2LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDIyOCwgICAgMTAsICAgICA0LCAgICAgOCwKKyAg
ICAgICA2LCAgICAgNywgICAgIDksICAgIDMxLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE2MCwg
ICAgMzgsICAgIDM3LAorICAgICAgMzksICAgIDM2LCAgICAgNSwgICAgMTIsICAgIDMyLCAgICAx
NCwgICAgMTksICAgIDIwLCAgICAgMCwgICAgIDAsCisgICAgICAyNSwgICAgIDAsICAgIDQwLCAg
ICAgMCwgICAgNDQsICAgIDQ3LCAgICA1MCwgICAgNTUsICAgIDU4LCAgICA2MCwKKyAgICAgIDYy
LCAgICA2NCwgICAgNjYsICAgIDY4LCAgICA3MCwgICAgODcsICAgICAwLCAgICAyOSwgICAgOTEs
ICAgICAwLAorICAgICAgIDAsICAgICAwLCAgIDE1MiwgICAgIDAsICAgICAwLCAgICAgMCwgICAy
NzQsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgMjQ4LCAgIDI1NywgICAyNjEsICAgIDQwLCAgICA3MiwKKyAgICAgIDg1LCAgICAg
MCwgICAyMzcsICAgICAwLCAgIDE0OCwgICAyNDAsICAgMjU5LCAgIDIzOSwgICAyMzgsICAgICAw
LAorICAgICAyNDEsICAgMjQyLCAgIDI0MywgICAyNDQsICAgMjQ1LCAgIDI0NiwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAyMzYsICAgMTIxLCAgICAgMCwgICAyMzQs
ICAgICAwLCAgIDIzMiwgICAgIDAsICAgMjI5LCAgICAzMywKKyAgICAgIDM0LCAgICAgMCwgICAg
MTYsICAgIDE3LCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyMiwgICAgIDAsICAgMTYyLAorICAg
ICAgMjYsICAgIDI4LCAgICAzNSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNTMsICAgMjAyLAotICAgICAgIDAs
ICAgMTQ5LCAgIDE1MCwgICAxNDcsICAgMjYwLCAgIDI1OSwgICAyMzAsICAgMjUxLCAgICAgMCwg
ICAyNjMsCi0gICAgIDI2MSwgICAgIDAsICAgICAwLCAgICAgMCwgICAyNDQsICAgMjQ3LCAgIDIy
MiwgICAgIDAsICAgIDc0LCAgICA3NSwKLSAgICAgIDc3LCAgICA3NiwgICAgNzksICAgIDgwLCAg
ICA4MSwgICAgODIsICAgIDgzLCAgICA3OCwgICAgNzMsICAgICAwLAotICAgICAgIDAsICAgMjM3
LCAgIDIzMywgICAyMzUsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTE0LCAgICAgMCwgICAxMTcs
Ci0gICAgICAgMCwgICAgIDAsICAgICAwLCAgIDIwNSwgICAgIDAsICAgIDkxLCAgICAxMCwgICAg
IDAsICAgIDE3LCAgICAyOSwKLSAgICAgIDE0LCAgICAyMCwgICAgMjYsICAgIDQwLCAgICA0MSwg
ICAgNDIsICAgIDQ1LCAgICA0NCwgICAgNDcsICAgIDQ4LAotICAgICAgNTIsICAgIDUzLCAgICA1
MCwgICAgNTEsICAgIDU1LCAgICA1NiwgICAgNTgsICAgIDYwLCAgICA2MiwgICAgNjQsCi0gICAg
ICA2NiwgICAgNjgsICAgICAwLCAgIDIwMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDI2MiwKLSAgICAgICAwLCAgIDI0MywgICAgIDAsICAgMjI0LCAgICA3MiwgICAgODUs
ICAgMTAzLCAgICAgMCwgICAxMTEsICAgMTE4LAotICAgICAgIDAsICAgMjA2LCAgICAgMCwgICAy
MDgsICAgICAwLCAgICA5MiwgICAgMTIsICAgICAwLCAgICAgMCwgICAyMjksCi0gICAgIDIzMSwg
ICAyNTQsICAgMjUzLCAgIDI1NiwgICAyMzAsICAgMjQxLCAgIDI0NSwgICAgIDAsICAgICAwLCAg
ICAgMCwKLSAgICAgICAwLCAgIDExMiwgICAgIDAsICAgMTE5LCAgIDIxMCwgICAgIDAsICAgIDcw
LCAgICAgMCwgICAyNTUsICAgICAwLAotICAgICAgIDAsICAgMjQwLCAgIDIzOCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAyMjUsICAgMTEzLCAgICAgMCwgICAgIDAsCi0gICAgIDI1NywgICAgIDAs
ICAgMjMwLCAgIDI0MiwgICAgIDAsICAgMjI3LCAgIDI0OCwgICAyMjYsICAgIDkzLCAgICAgMCwK
LSAgICAgMjU4LCAgIDI1MiwgICAyMzksICAgMjQ2LCAgIDI1MAorICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAxNjEsICAgMjI3LCAgICAgMCwgICAxNTYsICAgMTU3LCAgIDE1NCwgICAyODUsCisg
ICAgIDI4NCwgICAyNTUsICAgMjc2LCAgICAgMCwgICAyODgsICAgMjg2LCAgICAgMCwgICAgIDAs
ICAgICAwLCAgIDI2OSwKKyAgICAgMjcyLCAgIDI0NywgICAgIDAsICAgIDc1LCAgICA3NiwgICAg
NzgsICAgIDc3LCAgICA4MCwgICAgODEsICAgIDgyLAorICAgICAgODMsICAgIDg0LCAgICA3OSwg
ICAgNzQsICAgICAwLCAgICAgMCwgICAyNjIsICAgMjU4LCAgIDI2MCwgICAgIDAsCisgICAgICAg
MCwgICAgIDAsICAgMTE1LCAgICAgMCwgICAxMTgsICAgICAwLCAgICAgMCwgICAgIDAsICAgMjMw
LCAgICAgMCwKKyAgICAgIDkyLCAgICAxMSwgICAgIDAsICAgIDE4LCAgICAzMCwgICAgMTUsICAg
IDIxLCAgICAyNywgICAgNDEsICAgIDQyLAorICAgICAgNDMsICAgIDQ2LCAgICA0NSwgICAgNDgs
ICAgIDQ5LCAgICA1MywgICAgNTQsICAgIDUxLCAgICA1MiwgICAgNTYsCisgICAgICA1NywgICAg
NTksICAgIDYxLCAgICA2MywgICAgNjUsICAgIDY3LCAgICA2OSwgICAgIDAsICAgMjI1LCAgICAg
MCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDI4NywgICAgIDAsICAgMjY4LCAg
ICAgMCwgICAyNDksICAgIDczLAorICAgICAgODYsICAgMTA0LCAgICAgMCwgICAxMTIsICAgMTE5
LCAgICAgMCwgICAyMzEsICAgICAwLCAgIDIzMywgICAgIDAsCisgICAgICA5MywgICAgMTMsICAg
ICAwLCAgICAgMCwgICAyNTQsICAgMjU2LCAgIDI3OSwgICAyNzgsICAgMjgxLCAgIDI1NSwKKyAg
ICAgMjY2LCAgIDI3MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTEzLCAgICAgMCwg
ICAxMjAsICAgMjM1LAorICAgICAgIDAsICAgIDcxLCAgICAgMCwgICAyODAsICAgICAwLCAgICAg
MCwgICAyNjUsICAgMjYzLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAyNTAsICAgMTE0LCAg
ICAgMCwgICAgIDAsICAgMjgyLCAgICAgMCwgICAyNTUsICAgMjY3LCAgICAgMCwKKyAgICAgMjUy
LCAgIDI3MywgICAyNTEsICAgIDk0LCAgICAgMCwgICAyODMsICAgMjc3LCAgIDI2NCwgICAyNzEs
ICAgMjc1CiB9OwogCiAgIC8qIFlZUEdPVE9bTlRFUk0tTlVNXS4gICovCiBzdGF0aWMgY29uc3Qg
eXl0eXBlX2ludDE2IHl5cGdvdG9bXSA9CiB7Ci0gICAgLTM0OCwgICAtNDAsICAtMzQ4LCAgLTM0
OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAgIDI4LCAgLTM0OCwKLSAgICAtMzQ4LCAg
LTM0OCwgIC0zNDgsICAgLTYwLCAgLTM0OCwgICAtNzIsICAgLTcxLCAgLTEyNywgICAtNTIsICAg
ICA4LAotICAgICAgMTIsICAgIDE2LCAgICAgNywgICAgMTAsICAgIDExLCAgLTM0OCwgICAtODYs
ICAtMTIyLCAgLTM0OCwgIC0xMzMsCi0gICAgIC03OCwgIC0zNDgsICAgICA5LCAgICAxMywgIC0z
NDgsICAtMzQ4LCAgLTM0OCwgICAxNjksICAgMTc3LCAgIDE3NCwKLSAgICAtMzQ4LCAgLTM0OCwg
IC0zMjYsICAtMzQ4LCAgIC01OSwgIC0zNDgsICAgLTY5LCAgLTM0OCwgICAtNjEsICAgMjY4LAot
ICAgIC0zNDgsICAtMzQ4LCAgICA5NiwgICAgIDAsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4
LCAgLTEwMCwgIC0xMjAsCi0gICAgICA1NywgICAtMjMsICAtMTQwLCAgIC01NywgIC0xOTgsICAt
MzIyLCAgLTEwNSwgIC0zNDgsICAtMzQ4LCAgLTExMCwKLSAgICAtMzQ3LCAgLTM0OCwgIC0zNDgs
ICAgLTg4LCAgICAgNSwgICAtNDIsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LAotICAgIC0z
NDgsICAgLTY3LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0OCwgIC0zNDgsICAtMzQ4LCAgLTM0
OCwgIC0zNDgsCi0gICAgLTM0OCwgICAyMTYsICAtMzQ4LCAgLTM0OAorICAgIC0zNjgsICAgLTQ2
LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4LCAgICAtOSwgIC0zNjgs
CisgICAgLTM2OCwgIC0zNjgsICAtMzY4LCAgICA0NSwgIC0zNjgsICAtMTA0LCAgLTEwMiwgIC0x
MzksICAtMTA1LCAgIC0zMywKKyAgICAgLTI3LCAgIC0yNSwgICAtMjgsICAgLTIxLCAgIC0yOSwg
IC0zNjgsICAtMTEyLCAgLTE0MSwgIC0zNjgsICAtMTU1LAorICAgIC0xMzUsICAtMzY4LCAgICAx
MCwgICAgMTcsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAgMTM0LCAgIDEzOSwgICAxMzgsCisgICAg
LTM2OCwgIC0zNjgsICAtMzM5LCAgLTM2OCwgICAtODEsICAtMzY4LCAgIC05MCwgIC0zNjgsICAg
LTg3LCAgIDI1NiwKKyAgICAtMzY4LCAgLTM2OCwgICAgNTksICAgICAwLCAgLTM2OCwgIC0zNjgs
ICAtMzY4LCAgLTM2OCwgIC0xMjIsICAtMTQwLAorICAgICAgMjAsICAgLTYzLCAgLTIzMiwgICAt
OTcsICAtMjI0LCAgLTM0OSwgIC0xNDIsICAtMzY4LCAgLTM2OCwgIC0xNDgsCisgICAgLTM2Nywg
IC0zNjgsICAtMzY4LCAgLTExMSwgICAtMzEsICAgLTkyLCAgLTM2OCwgIC0zNjgsICAtMzY4LCAg
LTM2OCwKKyAgICAtMzY4LCAgLTExOSwgIC0zNjgsICAtMzY4LCAgLTM2OCwgIC0zNjgsICAtMzY4
LCAgLTM2OCwgIC0zNjgsICAtMzY4LAorICAgIC0zNjgsICAgMTY4LCAgLTM2OCwgIC0zNjgKIH07
CiAKICAgLyogWVlERUZHT1RPW05URVJNLU5VTV0uICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV9p
bnQxNiB5eWRlZmdvdG9bXSA9CiB7Ci0gICAgICAtMSwgICAyMTksICAgMTQ3LCAgIDE0OCwgICAx
NDksICAgMzA3LCAgIDE1MCwgICAxNTEsICAgMTUyLCAgIDE1MywKLSAgICAgMTU0LCAgIDE1NSwg
ICAxNTYsICAgMTkzLCAgIDE1OCwgICAxNTksICAgMTYwLCAgIDE2MSwgICAxNjIsICAgMTYzLAot
ICAgICAxNjQsICAgMTY1LCAgIDE2NiwgICAxNjcsICAgMTY4LCAgIDE2OSwgICAxOTQsICAgMTk1
LCAgIDI4OSwgICAxOTYsCi0gICAgIDE3MSwgICAxMDUsICAgMTk3LCAgIDE5OCwgICAgNjQsICAg
IDY1LCAgICA2NiwgICAgOTQsICAgIDk1LCAgICA5NiwKLSAgICAgIDY3LCAgICA2OCwgICAgNjks
ICAgIDcwLCAgICA3MSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LAotICAgICAg
NzcsICAgMTE1LCAgIDExNiwgICAxNzIsICAgIDc5LCAgICA4MCwgICAxNzUsICAgMTEyLCAgIDEz
MSwgICAxMzIsCi0gICAgIDIyMCwgICAyMjEsICAgMjE3LCAgIDIwMCwgICAyMDEsICAgMjAyLCAg
IDIwMywgICAyNzcsICAgMzcwLCAgIDM5NiwKLSAgICAgMzM0LCAgIDMzNSwgICAzMzYsICAgMzk3
LCAgIDIwNCwgICAyMDUsICAgMjA2LCAgIDM4MiwgICAyMDcsICAgMzgzLAotICAgICAyMDgsICAg
MzY5LCAgIDIwOSwgICAzNDIsICAgMjY2LCAgIDMzNywgICAzNjMsICAgMzc5LCAgIDM4MCwgICAy
MTAsCi0gICAgICA4MSwgICAgODIsICAgIDgzLCAgICA5MQorICAgICAgLTEsICAgMjQ0LCAgIDE3
MiwgICAxNzMsICAgMTc0LCAgIDMzMiwgICAxNzUsICAgMTc2LCAgIDE3NywgICAxNzgsCisgICAg
IDE3OSwgICAxODAsICAgMTgxLCAgIDIxOCwgICAxODMsICAgMTg0LCAgIDE4NSwgICAxODYsICAg
MTg3LCAgIDE4OCwKKyAgICAgMTg5LCAgIDE5MCwgICAxOTEsICAgMTkyLCAgIDE5MywgICAxOTQs
ICAgMjE5LCAgIDIyMCwgICAzMTQsICAgMjIxLAorICAgICAxOTYsICAgMTI4LCAgIDIyMiwgICAy
MjMsICAgIDg3LCAgICA4OCwgICAgODksICAgMTE3LCAgIDExOCwgICAxMTksCisgICAgICA5MCwg
ICAgOTEsICAgIDkyLCAgICA5MywgICAgOTQsICAgIDk1LCAgICA5NiwgICAgOTcsICAgIDk4LCAg
ICA5OSwKKyAgICAgMTAwLCAgIDEzOSwgICAxNDAsICAgMTk3LCAgIDEwMiwgICAxMDMsICAgMjAw
LCAgIDEzNSwgICAxNTUsICAgMTU2LAorICAgICAyNDUsICAgMjQ2LCAgIDI0MiwgICAyMjUsICAg
MjI2LCAgIDIyNywgICAyMjgsICAgMzAyLCAgIDM5NSwgICA0MjEsCisgICAgIDM1OSwgICAzNjAs
ICAgMzYxLCAgIDQyMiwgICAyMjksICAgMjMwLCAgIDIzMSwgICA0MDcsICAgMjMyLCAgIDQwOCwK
KyAgICAgMjMzLCAgIDM5NCwgICAyMzQsICAgMzY3LCAgIDI5MSwgICAzNjIsICAgMzg4LCAgIDQw
NCwgICA0MDUsICAgMjM1LAorICAgICAxMDQsICAgMTA1LCAgIDEwNiwgICAxMTQKIH07CiAKICAg
LyogWVlUQUJMRVtZWVBBQ1RbU1RBVEUtTlVNXV0gLS0gV2hhdCB0byBkbyBpbiBzdGF0ZSBTVEFU
RS1OVU0uICBJZgpAQCAtOTcxLDQ5OCArMTAxMyw2MTAgQEAgc3RhdGljIGNvbnN0IHl5dHlwZV9p
bnQxNiB5eWRlZmdvdG9bXSA9CiAgICAgIG51bWJlciBpcyB0aGUgb3Bwb3NpdGUuICBJZiBZWVRB
QkxFX05JTkYsIHN5bnRheCBlcnJvci4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2IHl5
dGFibGVbXSA9CiB7Ci0gICAgICA3OCwgICAgODgsICAgMTA2LCAgIDExOCwgICAyMTYsICAgIDk4
LCAgIDI5MywgICAgOTcsICAgMjI2LCAgICA2MiwKLSAgICAgMTA3LCAgIDIyMywgICAxNzQsICAg
IDYzLCAgIDM2MCwgICAyNTYsICAgMzY3LCAgIDM4MSwgICAzMDQsICAgMzU0LAotICAgICAxNzcs
ICAgIDg5LCAgIDE3MCwgICAgODUsICAgIDg2LCAgICA5MCwgICAxNzgsICAgMzU1LCAgIDEwNiwg
ICAxMDIsCi0gICAgICA5MywgICAxMjUsICAgIDk4LCAgIDIzNSwgICAgOTcsICAgIDkyLCAgICA5
OCwgICAzNjcsICAgMTI2LCAgIDE3MCwKLSAgICAgMTA4LCAgIDI0NSwgICAyNDYsICAgMTI3LCAg
IDEzMCwgICA0MDIsICAgMTI5LCAgIDIxNSwgICAxNTcsICAgMTI4LAotICAgICAyNTcsICAgMTMw
LCAgIDI3MSwgICAxMjksICAgMjIzLCAgICA4NywgICAzMDUsICAgMjEyLCAgIDEyMiwgICAxMjMs
Ci0gICAgIDEwNiwgICAyMjcsICAgMjI4LCAgIDM5NSwgICAyMTMsICAgMTU3LCAgICA3OCwgICAx
MTMsICAgMjE4LCAgIDM5NSwKLSAgICAgMTMwLCAgICA3OCwgICAxMjksICAgMjk3LCAgIDExNCwg
ICAyNjAsICAgMjQ3LCAgIDI0OCwgICAxMTcsICAgMjI0LAotICAgICAyMjUsICAgIDc4LCAgIDIy
OSwgICAyMzIsICAgMTExLCAgICA5OSwgICAyMzAsICAgMTI0LCAgIDEwMCwgICAyMzMsCi0gICAg
ICA2MiwgICAyMTYsICAgMjkwLCAgICA3OCwgICAgNjMsICAgMjkxLCAgIDMwOCwgICAgNzgsICAg
MjM3LCAgIDE3MywKLSAgICAgMzA2LCAgIDE3MCwgICAzNjQsICAgMTc2LCAgIDM2NSwgICAgNzgs
ICAgMjkwLCAgIDIxMSwgICAyOTAsICAgMjczLAotICAgICAyOTAsICAgMzEyLCAgICA3OCwgICAx
MzAsICAgMTMwLCAgIDEyOSwgICAxMjksICAgMTk5LCAgIDMyMCwgICAzMjEsCi0gICAgIDMyMiwg
ICAzMjMsICAgMzk5LCAgIC0yOSwgICAzMzIsICAgMTcwLCAgIDE3MCwgICAxNTcsICAgMjkwLCAg
ICA3OCwKLSAgICAgMjQxLCAgICA3OCwgICAyNDIsICAgMjk0LCAgIDI5NiwgICAzMzgsICAgMTAx
LCAgICA4NiwgICAzMDIsICAgMzQwLAotICAgICAyMjMsICAgMzAzLCAgIDIzMSwgICAyOTAsICAg
MzAyLCAgIDI5MywgICAzMzksICAgMzUxLCAgICAgMiwgICAgIDMsCi0gICAgICAgNCwgICAxNTcs
ICAgMTU3LCAgIDIzOCwgICAyMzksICAgMjQwLCAgICA4NSwgICAgODYsICAgMzQ5LCAgIDI0MywK
LSAgICAgMjQ0LCAgIDI0OSwgICAyNTAsICAgMjYxLCAgIDI2MiwgICAyOTAsICAgMzU3LCAgIDM0
NCwgICAzNDUsICAgMzE2LAotICAgICAzMTcsICAgMjM2LCAgIDMxOCwgICAzMTksICAgIDc4LCAg
ICA3OCwgICAyMTYsICAgMjUxLCAgIDMxMywgICAzMTQsCi0gICAgIDMxNSwgICAxNTcsICAgMTU3
LCAgIDE1NywgICAxNTcsICAgMTU3LCAgIDE1NywgICAxNTcsICAgMTU3LCAgIDE1NywKLSAgICAg
MTU3LCAgIDE1NywgICAxNTcsICAgMTU3LCAgIDE1NywgICAxNTcsICAgMTU3LCAgIDMyNCwgICAz
MjUsICAgMTMwLAotICAgICAyNTIsICAgMTI5LCAgIDI1MywgICAyNTQsICAgMTk5LCAgIDI1OCwg
ICAyNTUsICAgMzcxLCAgIDI2NCwgICAzNjYsCi0gICAgIDM3MywgICAyNjUsICAgMjY3LCAgIDI2
OCwgICAyNjksICAgMTcwLCAgIDI3NCwgICAyOTksICAgMjcyLCAgIDI3NSwKLSAgICAgMjc2LCAg
IC0yOCwgICAzNTgsICAgMzUyLCAgIDMwMSwgICAyMTYsICAgLTIzLCAgLTIyOCwgICAyMTYsICAg
Mjk4LAotICAgICAzNjYsICAgMzQ2LCAgIDM4NywgICAzNDcsICAgMzQxLCAgIDM3NiwgICAzNDgs
ICAgMzU2LCAgIDM1MCwgICAyOTAsCi0gICAgIC0zMCwgICAxNTcsICAgMzc0LCAgIDM3NywgICAz
ODksICAgMzcyLCAgIDM4NSwgICAzNTksICAgMzkwLCAgIDM4NiwKLSAgICAgMjE2LCAgIDM5MSwg
ICAzODgsICAgMzkyLCAgIDQwMywgICAxOTAsICAgMzk0LCAgIDQwMCwgICAzMTEsICAgMzI2LAot
ICAgICAgNzgsICAgMzI5LCAgIDM5OCwgICA0MDQsICAgMzI3LCAgIDMzMCwgICAxMjAsICAgMzMx
LCAgIDE3MCwgICAzMjgsCi0gICAgIDExOSwgICAxMjEsICAgMjE2LCAgICA4NCwgICAyNjMsICAg
MzAwLCAgIDM3NSwgICAxOTksICAgMzkzLCAgIDM1MywKLSAgICAgMzYxLCAgIDQwMSwgICAzNDMs
ICAgMzY4LCAgIDI3OCwgICAyNzksICAgMjgwLCAgIDI4MSwgICAyODIsICAgMjgzLAotICAgICAy
ODQsICAgMjg1LCAgIDI4NiwgICAyODcsICAgMTU3LCAgIDM2MiwgICAzNzgsICAgMTEwLCAgICAg
MCwgICAxMDYsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgIDI4OCwgICAzNjgsICAgICAwLCAg
ICAgMCwgICAxMDcsICAgICAwLCAgICAgMCwKKyAgICAgMTAxLCAgIDExMSwgICAxMjEsICAgMTQy
LCAgIDEyOSwgICAzMTgsICAgMzIyLCAgIDEzMCwgICAxMjAsICAgMjQxLAorICAgICAgODUsICAg
MjUxLCAgIDM4NSwgICAxOTksICAgMjQwLCAgIDI0OCwgICAxMzcsICAgIDg2LCAgIDMyOSwgICAx
OTUsCisgICAgIDEwOCwgICAxMDksICAgNDA2LCAgIDI4MSwgICAzNzksICAgMTI0LCAgIDEwOSwg
ICAxNDksICAgMzkyLCAgIDEyMSwKKyAgICAgMTI5LCAgIDIzNywgICAzODAsICAgMTIxLCAgIDE1
MCwgICAxMjAsICAgMTUxLCAgIDE5NSwgICAyMzgsICAgMjYwLAorICAgICAxMjIsICAgMTU0LCAg
IDE1MiwgICAxMjMsICAgMjcwLCAgIDI3MSwgICAxMjUsICAgMTUzLCAgIDE1NCwgICAzOTIsCisg
ICAgIDQyNywgICAyNjYsICAgMTEwLCAgIDI2NywgICAxNTMsICAgMjk2LCAgIDMzMCwgICAxMzgs
ICAgMjgyLCAgIDI0OCwKKyAgICAgMTEyLCAgIDQyMCwgICAzMTUsICAgMTI5LCAgIDIwMiwgICAz
MTYsICAgMjQzLCAgIDQyMCwgICAxNTQsICAgMTEzLAorICAgICAyMDMsICAgMjUyLCAgIDI1Mywg
ICAxMTUsICAgMTUzLCAgIDE0NiwgICAxNDcsICAgMjk4LCAgIDI4NSwgICAyNzIsCisgICAgIDI3
MywgICAyNTcsICAgMzMxLCAgIDMyNywgICAzODksICAgMTE2LCAgIDMyOCwgICAyNTgsICAgMzE1
LCAgIDEwMSwKKyAgICAgMzE1LCAgIDM3NCwgICAyNTQsICAgMTMxLCAgIDEwMSwgICAzMTUsICAg
MjU1LCAgIDI0MSwgICAzNjQsICAgMzMzLAorICAgICAxOTUsICAgMzE5LCAgIDMyMSwgICAzOTAs
ICAgMTAxLCAgIDQyNCwgICAxOTgsICAgMTM0LCAgIDE0OCwgICAzMTUsCisgICAgIDEzNiwgICAz
MTUsICAgMTU0LCAgIDE1NCwgICAgODUsICAgMTQxLCAgIDEwMSwgICAzMzcsICAgMTUzLCAgIDE1
MywKKyAgICAgMTAxLCAgICA4NiwgICAyMDEsICAgMzI3LCAgIDE5NSwgICAxOTUsICAgMzc2LCAg
IDM1NywgICAxMDEsICAgMTA4LAorICAgICAxMDksICAgMzQ1LCAgIDM0NiwgICAzNDcsICAgMzQ4
LCAgIDEwMSwgICAyNzQsICAgMjc1LCAgIDM2MywgICAyMzYsCisgICAgIDM5NiwgICAyMjQsICAg
MzY1LCAgIDM5OCwgICAzMTgsICAgMjQ4LCAgICAgMiwgICAgIDMsICAgICA0LCAgIDI2MywKKyAg
ICAgMjY0LCAgIDI2NSwgICAtMzAsICAgMTAxLCAgIDI2MSwgICAxMDEsICAgMjY4LCAgIDI2OSwg
ICAyODYsICAgMjg3LAorICAgICAzMTUsICAgMzgyLCAgIDM0MSwgICAzNDIsICAgMjU2LCAgIDQx
MiwgICAzNDMsICAgMzQ0LCAgIDI3NiwgICAzNDksCisgICAgIDM1MCwgICAyNzcsICAgMjc5LCAg
IDM2OSwgICAzNzAsICAgMjc4LCAgIDE4MiwgICAyODAsICAgMjgzLCAgIDI4OSwKKyAgICAgMjkw
LCAgIDI5MiwgICAyNDEsICAgMzAxLCAgIDI5MywgICAzMjQsICAgMjk0LCAgIDQyOCwgICAyOTks
ICAgMjk3LAorICAgICAzMDAsICAgMzc3LCAgIC0yOSwgICAzMjYsICAgMTgyLCAgIDMyMywgICAt
MjQsICAtMjUzLCAgIDE1NCwgICAxMDEsCisgICAgIDEwMSwgICAzNzEsICAgMzY2LCAgIDM3Mywg
ICAxNTMsICAgMzcyLCAgIDM3NSwgICAzODEsICAgMzE1LCAgIDI0OSwKKyAgICAgMjUwLCAgIC0z
MSwgICAzOTEsICAgMzgzLCAgIDE5NSwgICAzOTcsICAgMzAzLCAgIDMwNCwgICAzMDUsICAgMzA2
LAorICAgICAzMDcsICAgMzA4LCAgIDMwOSwgICAzMTAsICAgMzExLCAgIDMxMiwgICAzOTksICAg
NDAyLCAgIDI2MiwgICAyMjQsCisgICAgIDQxMCwgICAyNDEsICAgNDE1LCAgIDM5MSwgICAyNDEs
ICAgMzEzLCAgIDQxMSwgICA0MTMsICAgNDE2LCAgIDQxNywKKyAgICAgMjE1LCAgIDQwMSwgICA0
MTksICAgMzUxLCAgIDQwMCwgICA0MjMsICAgMzM2LCAgIDQxNCwgICA0MjksICAgMzg0LAorICAg
ICAzNTIsICAgMzU0LCAgIDM1NiwgICAzNTMsICAgMTQ0LCAgIDE0MywgICAyNDEsICAgMTgyLCAg
IDE0NSwgICAzNTUsCisgICAgIDQyNSwgICAxMDcsICAgMjg4LCAgIDMyNSwgICAzNzgsICAgMzg2
LCAgIDQxOCwgICAxOTUsICAgNDI2LCAgIDQwMywKKyAgICAgMzg3LCAgIDM2OCwgICAxMzMsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAyNDEsICAgICAwLAorICAgICAgIDAs
ICAgMTgyLCAgIDE4MiwgICAgIDAsICAgICAwLCAgIDEwMSwgICAzOTMsICAgICAwLCAgICAgMCwg
ICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgIDM4NCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxOTksICAgMTk5LCAgICAgMCwgICAgIDAs
Ci0gICAgICAgMCwgICAgIDAsICAgMTk5LCAgIDE5OSwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAyMjQsICAgMTI5LCAgICAgMCwg
ICAgIDAsICAgMTMwLCAgIDM5MywgICAzMzgsICAgMzM5LAorICAgICAzNDAsICAgMTgyLCAgIDE4
MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsCisgICAg
IDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAgIDAsICAg
ICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAx
OTksICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA3OCwgICAgIDAsCisgICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDQwOSwgICAgIDAsICAgICAwLCAg
ICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDE5OSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAxOTks
ICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwK
LSAgICAgICA5LCAgICAxMCwgICAgMTEsICAgMTc5LCAgIDE4MCwgICAxODEsICAgICAwLCAgIDE4
MiwgICAxODMsICAgMTg0LAotICAgICAxODUsICAgMTg2LCAgIDE4NywgICAxODgsICAgIDEyLCAg
ICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCi0gICAgICAxOCwgICAgMTksICAgIDIw
LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywKLSAgICAg
IDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAg
MzYsICAgIDM3LAotICAgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgIDE4OSwg
ICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCi0gICAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1
MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwKLSAgICAgICAwLCAg
ICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAxMzMsICAgIDYxLCAgIDEzNCwgICAxMzUsICAg
MTM2LAotICAgICAxMzcsICAgMTM4LCAgICAgMCwgICAgIDAsICAgMTM5LCAgIDE0MCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAyMjQsICAgMjI0LCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAyMjQsICAgMjI0LCAgICAgMCwKKyAgICAgICAwLCAgIDE4Miwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAor
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgIDIyNCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgIDEwMSwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAxNDEsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTkwLCAgIDE5
MSwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgIDE5MiwgICAxNDMsICAgMTQ0LCAg
IDE0NSwgICAxNDYsICAgICAxLCAgICAgMiwKLSAgICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2
LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgMTc5LAotICAgICAxODAsICAg
MTgxLCAgICAgMCwgICAxODIsICAgMTgzLCAgIDE4NCwgICAxODUsICAgMTg2LCAgIDE4NywgICAx
ODgsCi0gICAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwg
ICAgMTksICAgIDIwLCAgICAyMSwKLSAgICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAy
NiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLAotICAgICAgMzIsICAgIDMzLCAg
ICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsCi0g
ICAgICA0MiwgICAxODksICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgs
ICAgIDQ5LCAgICA1MCwKLSAgICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAg
NTYsICAgICAwLCAgICA1NywgICAgNTgsICAgIDU5LAotICAgICAgNjAsICAgMTMzLCAgICA2MSwg
ICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgMTM4LCAgICAgMCwgICAgIDAsCi0gICAgIDEz
OSwgICAxNDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgMTQxLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAxOTAs
ICAgMjkyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxOTIsCi0gICAgIDE0MywgICAx
NDQsICAgMTQ1LCAgIDE0NiwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAg
NiwKLSAgICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAxNzksICAgMTgwLCAg
IDE4MSwgICAgIDAsICAgMTgyLAotICAgICAxODMsICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3
LCAgIDE4OCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsCi0gICAgICAxNiwgICAgMTcsICAg
IDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwKLSAg
ICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywg
ICAgMzQsICAgIDM1LAotICAgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0
MSwgICAgNDIsICAgMTg5LCAgICA0MywgICAgNDQsCi0gICAgICA0NSwgICAgNDYsICAgIDQ3LCAg
ICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwKLSAgICAgIDU1
LCAgICA1NiwgICAgIDAsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgIDEzMywgICAgNjEs
ICAgMTM0LAotICAgICAxMzUsICAgMTM2LCAgIDEzNywgICAxMzgsICAgICAwLCAgICAgMCwgICAx
MzksICAgMTQwLCAgICAgMCwgICAgIDAsCisgICAgIDIyNCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgIDIyNCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgIDE4MiwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1
LAorICAgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAyMDQsICAg
MjA1LCAgIDIwNiwgICAgIDAsCisgICAgIDIwNywgICAyMDgsICAgMjA5LCAgIDIxMCwgICAyMTEs
ICAgMjEyLCAgIDIxMywgICAgMTIsICAgIDEzLCAgICAxNCwKKyAgICAgIDE1LCAgICAxNiwgICAg
MTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LAorICAg
ICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAg
ICAzMywgICAgMzQsCisgICAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQw
LCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwKKyAgICAgIDQ1LCAgICA0NiwgICAgNDcsICAg
IDQ4LCAgIDIxNCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLAorICAgICAgNTQs
ICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2Miwg
ICAgNjMsCisgICAgICA2NCwgICAgNjUsICAgICAwLCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2
OSwgICAgNzAsICAgIDcxLCAgICA3MiwKKyAgICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAg
ICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLAorICAgICAgODMsICAgMTU3
LCAgIDE1OCwgICAgODQsICAgMTU5LCAgIDE2MCwgICAxNjEsICAgMTYyLCAgIDE2MywgICAgIDAs
CisgICAgICAgMCwgICAxNjQsICAgMTY1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgIDE0MSwgICAgIDAsICAgICAwLCAgICAgMCwgICAxOTAsCi0gICAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTkyLCAgIDE0MywgICAxNDQsICAg
MTQ1LCAgIDE0NiwKLSAgICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYs
ICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLAotICAgICAgMTEsICAgMTc5LCAgIDE4MCwgICAx
ODEsICAgICAwLCAgIDE4MiwgICAxODMsICAgMTg0LCAgIDE4NSwgICAxODYsCi0gICAgIDE4Nywg
ICAxODgsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAg
ICAxOSwKLSAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2
LCAgICAyNywgICAgMjgsICAgIDI5LAotICAgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAg
IDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksCi0gICAgICA0MCwgICAgNDEs
ICAgIDQyLCAgIDE4OSwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwK
LSAgICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1
NiwgICAgIDAsICAgIDU3LAotICAgICAgNTgsICAgIDU5LCAgICA2MCwgICAxMzMsICAgIDYxLCAg
IDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAxMzgsCi0gICAgICAgMCwgICAgIDAsICAgMTM5
LCAgIDE0MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAg
MTY2LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDIxNSwgICAyMTYsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAorICAgICAyMTcsICAgMTY4LCAgIDE2OSwgICAxNzAsICAgMTcxLCAgICAgMSwg
ICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsCisgICAgICAgNiwgICAgIDcsICAgICA4LCAgICAg
OSwgICAgMTAsICAgIDExLCAgIDIwNCwgICAyMDUsICAgMjA2LCAgICAgMCwKKyAgICAgMjA3LCAg
IDIwOCwgICAyMDksICAgMjEwLCAgIDIxMSwgICAyMTIsICAgMjEzLCAgICAxMiwgICAgMTMsICAg
IDE0LAorICAgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEs
ICAgIDIyLCAgICAyMywgICAgMjQsCisgICAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAg
MjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwKKyAgICAgIDM1LCAgICAzNiwg
ICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LAor
ICAgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgMjE0LCAgICA0OSwgICAgNTAsICAgIDUx
LCAgICA1MiwgICAgNTMsCisgICAgICA1NCwgICAgNTUsICAgIDU2LCAgICA1NywgICAgNTgsICAg
IDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywKKyAgICAgIDY0LCAgICA2NSwgICAgIDAs
ICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgNzEsICAgIDcyLAorICAgICAg
NzMsICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzksICAgIDgwLCAgICA4
MSwgICAgODIsCisgICAgICA4MywgICAxNTcsICAgMTU4LCAgICA4NCwgICAxNTksICAgMTYwLCAg
IDE2MSwgICAxNjIsICAgMTYzLCAgICAgMCwKKyAgICAgICAwLCAgIDE2NCwgICAxNjUsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCi0gICAgICAgMCwgICAxNDEsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTE3LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgIDE5MiwgICAxNDMsICAgMTQ0LCAgIDE0
NSwgICAxNDYsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LAotICAgICAgIDUsICAgICA2LCAg
ICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgMTc5LCAgIDE4MCwgICAxODEsCi0g
ICAgICAgMCwgICAxODIsICAgMTgzLCAgIDE4NCwgICAxODUsICAgMTg2LCAgIDE4NywgICAxODgs
ICAgIDEyLCAgICAxMywKLSAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAg
MTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLAotICAgICAgMjQsICAgIDI1LCAgICAyNiwg
ICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsCi0gICAgICAz
NCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQy
LCAgIDE4OSwKLSAgICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAg
IDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLAotICAgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYs
ICAgICAwLCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAxMzMsCi0gICAgICA2MSwgICAx
MzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgMTM4LCAgICAgMCwgICAgIDAsICAgMTM5LCAgIDE0
MCwKKyAgICAgMTY2LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDIxNSwgICAzMTcsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAorICAgICAyMTcsICAgMTY4LCAgIDE2OSwgICAxNzAsICAgMTcx
LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsCisgICAgICAgNiwgICAgIDcsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgIDIwNCwgICAyMDUsICAgMjA2LCAgICAgMCwKKyAg
ICAgMjA3LCAgIDIwOCwgICAyMDksICAgMjEwLCAgIDIxMSwgICAyMTIsICAgMjEzLCAgICAxMiwg
ICAgMTMsICAgIDE0LAorICAgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAy
MCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsCisgICAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwKKyAgICAgIDM1
LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMs
ICAgIDQ0LAorICAgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgMjE0LCAgICA0OSwgICAg
NTAsICAgIDUxLCAgICA1MiwgICAgNTMsCisgICAgICA1NCwgICAgNTUsICAgIDU2LCAgICA1Nywg
ICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywKKyAgICAgIDY0LCAgICA2
NSwgICAgIDAsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgNzEsICAgIDcy
LAorICAgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzksICAg
IDgwLCAgICA4MSwgICAgODIsCisgICAgICA4MywgICAxNTcsICAgMTU4LCAgICA4NCwgICAxNTks
ICAgMTYwLCAgIDE2MSwgICAxNjIsICAgMTYzLCAgICAgMCwKKyAgICAgICAwLCAgIDE2NCwgICAx
NjUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAxNDEsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE5MiwgICAxNDMsICAgMTQ0LAotICAgICAxNDUs
ICAgMTQ2LCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywg
ICAgIDgsCi0gICAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LAotICAgICAgMTgsICAgIDE5
LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcs
Ci0gICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAg
MzUsICAgIDM2LCAgICAzNywKLSAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0Miwg
ICAgIDAsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LAotICAgICAgNDcsICAgIDQ4LCAgICA0
OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsCi0gICAg
ICAgMCwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgMTMzLCAgICA2MSwgICAxMzQsICAg
MTM1LCAgIDEzNiwKLSAgICAgMTM3LCAgIDEzOCwgICAgIDAsICAgICAwLCAgIDEzOSwgICAxNDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDEsCi0gICAgICAgMiwg
ICAgIDMsICAgICA0LCAgIDE0MSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAg
ICAxMSwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMTkyLCAgIDE0MywgICAxNDQsICAgMTQ1
LCAgIDE0NiwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgIDEyLCAgICAxMywgICAgMTQsICAg
IDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsCi0gICAgICAyMSwgICAgMjIs
ICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwK
LSAgICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAz
OCwgICAgMzksICAgIDQwLAotICAgICAgNDEsICAgIDQyLCAgICAgMCwgICAgNDMsICAgIDQ0LCAg
ICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksCi0gICAgICA1MCwgICAgNTEsICAgIDUy
LCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgIDAsICAgIDU3LCAgICA1OCwKLSAgICAg
IDU5LCAgICA2MCwgICAxMzMsICAgIDYxLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAx
MzgsICAgICAwLAotICAgICAgIDAsICAgMTM5LCAgIDE0MCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgIDE2NiwgICAgIDAsICAgICAwLCAgICAg
MCwgICAyMTUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgMjE3LCAg
IDE2OCwgICAxNjksICAgMTcwLCAgIDE3MSwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAg
ICA1LAorICAgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAyMDQs
ICAgMjA1LCAgIDIwNiwgICAgIDAsCisgICAgIDIwNywgICAyMDgsICAgMjA5LCAgIDIxMCwgICAy
MTEsICAgMjEyLCAgIDIxMywgICAgMTIsICAgIDEzLCAgICAxNCwKKyAgICAgIDE1LCAgICAxNiwg
ICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LAor
ICAgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMy
LCAgICAzMywgICAgMzQsCisgICAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAg
IDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwKKyAgICAgIDQ1LCAgICA0NiwgICAgNDcs
ICAgIDQ4LCAgIDIxNCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLAorICAgICAg
NTQsICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2
MiwgICAgNjMsCisgICAgICA2NCwgICAgNjUsICAgICAwLCAgICA2NiwgICAgNjcsICAgIDY4LCAg
ICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwKKyAgICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2
LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLAorICAgICAgODMsICAg
MTU3LCAgIDE1OCwgICAgODQsICAgMTU5LCAgIDE2MCwgICAxNjEsICAgMTYyLCAgIDE2MywgICAg
IDAsCisgICAgICAgMCwgICAxNjQsICAgMTY1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAxNjYsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgMTQxLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisg
ICAgIDIxNywgICAxNjgsICAgMTY5LCAgIDE3MCwgICAxNzEsICAgICAxLCAgICAgMiwgICAgIDMs
ICAgICA0LCAgICAgNSwKKyAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAg
MTEsICAgMjA0LCAgIDIwNSwgICAyMDYsICAgICAwLAorICAgICAyMDcsICAgMjA4LCAgIDIwOSwg
ICAyMTAsICAgMjExLCAgIDIxMiwgICAyMTMsICAgIDEyLCAgICAxMywgICAgMTQsCisgICAgICAx
NSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIz
LCAgICAyNCwKKyAgICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAg
IDMxLCAgICAzMiwgICAgMzMsICAgIDM0LAorICAgICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgs
ICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsCisgICAgICA0NSwgICAg
NDYsICAgIDQ3LCAgICA0OCwgICAyMTQsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1
MywKKyAgICAgIDU0LCAgICA1NSwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAg
ICA2MSwgICAgNjIsICAgIDYzLAorICAgICAgNjQsICAgIDY1LCAgICAgMCwgICAgNjYsICAgIDY3
LCAgICA2OCwgICAgNjksICAgIDcwLCAgICA3MSwgICAgNzIsCisgICAgICA3MywgICAgNzQsICAg
IDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLCAgICA4MiwKKyAg
ICAgIDgzLCAgIDE1NywgICAxNTgsICAgIDg0LCAgIDE1OSwgICAxNjAsICAgMTYxLCAgIDE2Miwg
ICAxNjMsICAgICAwLAorICAgICAgIDAsICAgMTY0LCAgIDE2NSwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgMTY2
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLAorICAgICAyMTcsICAgMTY4LCAgIDE2OSwgICAxNzAsICAgMTcxLCAgICAgMSwgICAg
IDIsICAgICAzLCAgICAgNCwgICAgIDUsCisgICAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwg
ICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMiwgICAgMTMsICAgIDE0
LAorICAgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAg
IDIyLCAgICAyMywgICAgMjQsCisgICAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjks
ICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwKKyAgICAgIDM1LCAgICAzNiwgICAg
MzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LAorICAg
ICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgICAwLCAgICA0OSwgICAgNTAsICAgIDUxLCAg
ICA1MiwgICAgNTMsCisgICAgICA1NCwgICAgNTUsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5
LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywKKyAgICAgIDY0LCAgICA2NSwgICAgIDAsICAg
IDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgNzEsICAgIDcyLAorICAgICAgNzMs
ICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzksICAgIDgwLCAgICA4MSwg
ICAgODIsCisgICAgICA4MywgICAxNTcsICAgMTU4LCAgICA4NCwgICAxNTksICAgMTYwLCAgIDE2
MSwgICAxNjIsICAgMTYzLCAgICAgMCwKKyAgICAgICAwLCAgIDE2NCwgICAxNjUsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQs
Ci0gICAgIDE0MSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAg
IDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgIDE0MywgICAxNDQsICAgMTQ1LCAgIDE0Niwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsICAgIDEzLAorICAgICAxNjYsICAgICA2LCAgICAg
NywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAg
IDIxNywgICAxNjgsICAgMTY5LCAgIDE3MCwgICAxNzEsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDEyLCAgICAxMywKICAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTks
ICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLAogICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsCi0gICAgICAzNCwg
ICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAg
ICAgMCwKLSAgICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5
LCAgICA1MCwgICAgNTEsICAgIDUyLAotICAgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAg
ICAwLCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAxMDMsCi0gICAgICA2MSwgICAgIDAs
ICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwK
LSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgMTIsICAgIDEzLAotICAgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAg
ICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsCi0gICAgICAyNCwgICAgMjUsICAgIDI2
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMDQsICAgIDMyLCAgICAzMywKLSAgICAg
IDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA0MSwgICAg
NDIsICAgICAwLAotICAgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwg
ICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsCi0gICAgICA1MywgICAgNTQsICAgIDU1LCAgICA1
NiwgICAgIDAsICAgIDU3LCAgICA1OCwgICAgNTksICAgICAwLCAgIDEzMywKLSAgICAgIDYxLCAg
IDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAxMzgsICAgICAwLCAgICAgMCwgICAxMzksICAg
MTQwLAorICAgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAs
ICAgIDQxLCAgICA0MiwgICAgNDMsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAg
NDgsICAgICAwLCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwKKyAgICAgIDUzLCAgICA1NCwg
ICAgNTUsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLAor
ICAgICAgNjMsICAgIDY0LCAgICA2NSwgICAgIDAsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5
LCAgICA3MCwgICAgNzEsCisgICAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsICAg
IDc3LCAgICA3OCwgICAgNzksICAgIDgwLCAgICA4MSwKKyAgICAgIDgyLCAgICA4MywgICAxNTcs
ICAgMTU4LCAgICA4NCwgICAxNTksICAgMTYwLCAgIDE2MSwgICAxNjIsICAgMTYzLAorICAgICAg
IDAsICAgICAwLCAgIDE2NCwgICAxNjUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDEsICAgICAyLCAgICAgMywKKyAgICAgICA0LCAgIDE2NiwgICAgIDYsICAgICA3
LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAg
ICAwLCAgIDE2OCwgICAxNjksICAgMTcwLCAgIDE3MSwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
MTIsCisgICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwg
ICAgMjAsICAgIDIxLCAgICAyMiwKKyAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAorICAgICAgMzMsICAgIDM0LCAg
ICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsCisg
ICAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICAgMCwgICAgNDks
ICAgIDUwLCAgICA1MSwKKyAgICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAg
NTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLAorICAgICAgNjIsICAgIDYzLCAgICA2NCwg
ICAgNjUsICAgICAwLCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsCisgICAgICA3
MSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5
LCAgICA4MCwKKyAgICAgIDgxLCAgICA4MiwgICAgODMsICAgICAwLCAgIDEyNiwgICAgODQsICAg
ICAwLCAgICAgMCwgICAgIDgsICAgICA5LAorICAgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAx
OCwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAg
ICAyNiwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgIDEyNywgICAgMzIsICAgIDMz
LCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDQ3LCAgICA0OCwKKyAg
ICAgICAwLCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwg
ICAgNTYsICAgIDU3LAorICAgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2
MywgICAgNjQsICAgIDY1LCAgICAgMCwgICAgNjYsCisgICAgICA2NywgICAgNjgsICAgIDY5LCAg
ICA3MCwgICAgNzEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAgICA3NiwKKyAgICAgIDc3
LCAgICA3OCwgICAgNzksICAgIDgwLCAgICA4MSwgICAgIDAsICAgIDgzLCAgIDE1NywgICAxNTgs
ICAgIDg0LAorICAgICAxNTksICAgMTYwLCAgIDE2MSwgICAxNjIsICAgMTYzLCAgICAgMCwgICAg
IDAsICAgMTY0LCAgIDE2NSwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTY2LCAgICAgMCwgICAgIDAsICAgMTY3
LAorICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsICAg
MTY4LCAgIDE2OSwgICAxNzAsCisgICAgIDE3MSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwKKyAgICAgIDE3LCAgICAxOCwgICAg
MTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LAorICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAzMiwgICAgMzMsICAgIDM0LCAg
ICAzNSwgICAgMzYsCisgICAgICAzNywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgIDQ3LCAgICA0OCwgICAgIDAsICAg
IDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LAorICAgICAgNTYs
ICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwg
ICAgNjUsCisgICAgICAgMCwgICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICA3
MSwgICAgNzIsICAgIDczLCAgICA3NCwKKyAgICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAg
ICA3OSwgICAgODAsICAgIDgxLCAgICAgMCwgICAgODMsICAgMTU3LAorICAgICAxNTgsICAgIDg0
LCAgIDE1OSwgICAxNjAsICAgMTYxLCAgIDE2MiwgICAxNjMsICAgICAwLCAgICAgMCwgICAxNjQs
CisgICAgIDE2NSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAxNjYsICAgICAwLAorICAgICAgIDAsICAgMjM5LCAgICAg
OCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNjgsCisgICAg
IDE2OSwgICAxNzAsICAgMTcxLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsICAg
IDEzLCAgICAxNCwKKyAgICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAs
ICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LAorICAgICAgMjUsICAgIDI2LCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDMyLCAgICAzMywgICAgMzQsCisgICAgICAzNSwg
ICAgMzYsICAgIDM3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgNDcsICAgIDQ4LCAgICAgMCwgICAgNDksICAgIDUw
LCAgICA1MSwgICAgNTIsICAgIDUzLAorICAgICAgNTQsICAgIDU1LCAgICA1NiwgICAgNTcsICAg
IDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsCisgICAgICA2NCwgICAgNjUs
ICAgICAwLCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwK
KyAgICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4
MCwgICAgODEsICAgICAwLAorICAgICAgODMsICAgMTU3LCAgIDE1OCwgICAgODQsICAgMTU5LCAg
IDE2MCwgICAxNjEsICAgMTYyLCAgIDE2MywgICAgIDAsCisgICAgICAgMCwgICAxNjQsICAgMTY1
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgMTQxLCAgICAgMCwgICAgIDAsCi0gICAgIDE0MiwgICAgIDgsICAgICA5LCAgICAx
MCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQzLCAgIDE0NCwKLSAgICAgMTQ1LCAg
IDE0NiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDEyLCAgICAxMywgICAgMTQsICAg
IDE1LAorICAgICAxNjYsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgIDI5NSwgICAxNjgsICAgMTY5LCAgIDE3MCwgICAx
NzEsICAgICAwLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKICAgICAgIDE2LCAgICAxNywg
ICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAog
ICAgICAgMjYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzIsICAgIDMz
LCAgICAzNCwgICAgMzUsCi0gICAgICAzNiwgICAgMzcsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDQxLCAgICA0MiwgICAgIDAsICAgIDQzLCAgICA0NCwKLSAgICAgIDQ1LCAgICA0NiwgICAgNDcs
ICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LAotICAgICAg
NTUsICAgIDU2LCAgICAgMCwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgIDAsICAgMTMzLCAgICA2
MSwgICAxMzQsCi0gICAgIDEzNSwgICAxMzYsICAgMTM3LCAgIDEzOCwgICAgIDAsICAgICAwLCAg
IDEzOSwgICAxNDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0MSwgICAgIDAsICAgICAwLCAgIDIxNCwgICAg
IDgsCi0gICAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0Mywg
ICAxNDQsICAgMTQ1LCAgIDE0NiwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAx
MiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LAotICAgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsCi0g
ICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUs
ICAgIDM2LCAgICAzNywKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgIDQxLCAgICA0MiwgICAg
IDAsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LAotICAgICAgNDcsICAgIDQ4LCAgICA0OSwg
ICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsCi0gICAgICAg
MCwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgIDAsICAgMTMzLCAgICA2MSwgICAxMzQsICAgMTM1
LCAgIDEzNiwKLSAgICAgMTM3LCAgIDEzOCwgICAgIDAsICAgICAwLCAgIDEzOSwgICAxNDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgMzYsICAgIDM3LCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAg
NDcsICAgIDQ4LCAgICAgMCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1
NCwKKyAgICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAg
ICA2MiwgICAgNjMsICAgIDY0LAorICAgICAgNjUsICAgICAwLCAgICA2NiwgICAgNjcsICAgIDY4
LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwgICAgNzMsCisgICAgICA3NCwgICAgNzUsICAg
IDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsICAgICAwLCAgICA4MywKKyAg
ICAgMTU3LCAgIDE1OCwgICAgODQsICAgMTU5LCAgIDE2MCwgICAxNjEsICAgMTYyLCAgIDE2Mywg
ICAgIDAsICAgICAwLAorICAgICAxNjQsICAgMTY1LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE2NiwKKyAgICAgICAw
LCAgICAgMCwgICAzMjAsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAs
ICAgICAwLAorICAgICAxNjgsICAgMTY5LCAgIDE3MCwgICAxNzEsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAxMiwgICAgMTMsCisgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywg
ICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIDI0LCAgICAy
NSwgICAgMjYsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzIsICAgIDMz
LAorICAgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICA0NywgICAgNDgs
ICAgICAwLCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwKKyAgICAgIDUzLCAgICA1NCwgICAg
NTUsICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLAorICAg
ICAgNjMsICAgIDY0LCAgICA2NSwgICAgIDAsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAg
ICA3MCwgICAgNzEsCisgICAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3
LCAgICA3OCwgICAgNzksICAgIDgwLCAgICA4MSwKKyAgICAgICAwLCAgICA4MywgICAxNTcsICAg
MTU4LCAgICA4NCwgICAxNTksICAgMTYwLCAgIDE2MSwgICAxNjIsICAgMTYzLAorICAgICAgIDAs
ICAgICAwLCAgIDE2NCwgICAxNjUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQxLCAg
ICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAyNzAsICAgMTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LCAgICAgMCwgICAgMTIs
Ci0gICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAg
MjAsICAgIDIxLCAgICAyMiwKLSAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDMyLAotICAgICAgMzMsICAgIDM0LCAgICAz
NSwgICAgMzYsICAgIDM3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA0MSwgICAgNDIsCi0gICAg
ICAgMCwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAg
IDUwLCAgICA1MSwKLSAgICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgIDAs
ICAgIDU3LCAgICA1OCwgICAgNTksICAgICAwLAotICAgICAxMzMsICAgIDYxLCAgIDEzNCwgICAx
MzUsICAgMTM2LCAgIDEzNywgICAxMzgsICAgICAwLCAgICAgMCwgICAxMzksCi0gICAgIDE0MCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAxNDEsICAgICAwLAotICAgICAgIDAsICAgMjk1LCAgICAgOCwgICAgIDksICAg
IDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAxNDMsCi0gICAgIDE0NCwgICAxNDUs
ICAgMTQ2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsICAgIDEzLCAgICAxNCwK
KyAgICAgICAwLCAgIDE2NiwgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgIDE2OCwgICAxNjksICAgMTcwLCAg
IDE3MSwgICAgIDAsICAgIDEyLCAgICAxMywgICAgMTQsCiAgICAgICAxNSwgICAgMTYsICAgIDE3
LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwKICAgICAg
IDI1LCAgICAyNiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAzMiwgICAg
MzMsICAgIDM0LAotICAgICAgMzUsICAgIDM2LCAgICAzNywgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgNDEsICAgIDQyLCAgICAgMCwgICAgNDMsCi0gICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0
NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywKLSAgICAgIDU0LCAg
ICA1NSwgICAgNTYsICAgICAwLCAgICA1NywgICAgNTgsICAgIDU5LCAgICAgMCwgICAxMzMsICAg
IDYxLAotICAgICAxMzQsICAgMTM1LCAgIDEzNiwgICAxMzcsICAgMTM4LCAgICAgMCwgICAgIDAs
ICAgMTM5LCAgIDE0MCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQxLCAgICAgOCwgICAgIDksICAgIDEwLAot
ICAgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQz
LCAgIDE0NCwgICAxNDUsCi0gICAgIDE0NiwgICAgIDAsICAgIDEyLCAgICAxMywgICAgMTQsICAg
IDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwKLSAgICAgIDIwLCAgICAyMSwgICAgMjIs
ICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAg
IDAsICAgICAwLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAg
MCwgICAgIDAsCi0gICAgICAgMCwgICAgNDEsICAgMjM0LCAgICAgMCwgICAgNDMsICAgIDQ0LCAg
ICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwKLSAgICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUy
LCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgIDAsICAgIDU3LAotICAgICAgNTgsICAg
IDU5LCAgICAgMCwgICAxMzMsICAgIDYxLCAgIDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAx
MzgsCi0gICAgICAgMCwgICAgIDAsICAgMTM5LCAgIDE0MCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMSwgICAgIDIsICAgICAzLAotICAgICAgIDQsICAgMTQxLCAg
ICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsCi0g
ICAgICAgMCwgICAgIDAsICAgMTQzLCAgIDE0NCwgICAxNDUsICAgMTQ2LCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAxMiwKLSAgICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAg
MTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLAotICAgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsCi0gICAgICAz
MywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQx
LCAgICA0MiwKLSAgICAgICAwLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAg
IDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLAotICAgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUs
ICAgIDU2LCAgICAgMCwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsCi0gICAgICAgMCwgICAg
NjEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwKLSAgICAgICAwLCAgICAgMCwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICAwLCAg
ICAgNiwgICAgIDcsICAgICA4LAotICAgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDIyMiwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywKLSAg
ICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwg
ICAgMjYsICAgIDI3LAotICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAz
MywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsCi0gICAgICAzOCwgICAgMzksICAgIDQwLCAg
ICA0MSwgICAgNDIsICAgICAwLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwKLSAgICAgIDQ3
LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUs
ICAgIDU2LAotICAgICAgIDAsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICAgMCwgICAg
NjEsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDEsICAgICAyLCAgICAgMywKLSAgICAgICA0LCAgICAg
MCwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAw
LAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDI1OSwgICAgMTIsCi0gICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcs
ICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwKLSAgICAgIDIzLCAgICAyNCwgICAg
MjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLAotICAg
ICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAg
ICA0MSwgICAgNDIsCi0gICAgICAgMCwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3
LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwKLSAgICAgIDUyLCAgICA1MywgICAgNTQsICAg
IDU1LCAgICA1NiwgICAgIDAsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLAotICAgICAgIDAs
ICAgIDYxLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAxMDksCi0gICAgICAgMCwgICAgIDAsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAg
NSwgICAgIDYsICAgICA3LCAgICAgOCwKLSAgICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAw
LCAgICAgMCwgICAzMzMsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcs
Ci0gICAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAg
MjUsICAgIDI2LCAgICAyNywKLSAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwg
ICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LAotICAgICAgMzgsICAgIDM5LCAgICA0
MCwgICAgNDEsICAgIDQyLCAgICAgMCwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCi0gICAg
ICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAg
IDU1LCAgICA1NiwKLSAgICAgICAwLCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgIDAs
ICAgIDYxLCAgICAgMSwgICAgIDIsICAgICAzLAotICAgICAgIDQsICAgICA1LCAgICAgNiwgICAg
IDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAxMiwKLSAgICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5
LCAgICAyMCwgICAgMjEsICAgIDIyLAotICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAg
IDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsCi0gICAgICAzMywgICAgMzQs
ICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwK
LSAgICAgICAwLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0
OSwgICAgNTAsICAgIDUxLAotICAgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2LCAg
ICAgMCwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsCi0gICAgICAgMCwgICAgNjEsICAgICAx
LCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDYsICAgICA3LCAgICAgOCwKKyAgICAg
IDM1LCAgICAzNiwgICAgMzcsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICA0NywgICAyNTksICAgICAwLCAgICA0OSwg
ICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsCisgICAgICA1NCwgICAgNTUsICAgIDU2LCAgICA1
NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywKKyAgICAgIDY0LCAg
ICA2NSwgICAgIDAsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgNzEsICAg
IDcyLAorICAgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzks
ICAgIDgwLCAgICA4MSwgICAgIDAsCisgICAgICA4MywgICAxNTcsICAgMTU4LCAgICA4NCwgICAx
NTksICAgMTYwLCAgIDE2MSwgICAxNjIsICAgMTYzLCAgICAgMCwKKyAgICAgICAwLCAgIDE2NCwg
ICAxNjUsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAor
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDEsICAgICAy
LCAgICAgMywgICAgIDQsCisgICAgIDE2NiwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAg
IDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgIDE2OCwgICAxNjks
ICAgMTcwLCAgIDE3MSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTIsICAgIDEzLAorICAgICAg
MTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAy
MiwgICAgMjMsCisgICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywKKyAgICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3
LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLAorICAgICAgNDQsICAg
IDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICAgMCwgICAgNDksICAgIDUwLCAgICA1MSwgICAg
NTIsCisgICAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwg
ICAgNjAsICAgIDYxLCAgICA2MiwKKyAgICAgIDYzLCAgICA2NCwgICAgNjUsICAgICAwLCAgICA2
NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLAorICAgICAgNzIsICAgIDczLCAg
ICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsCisg
ICAgICA4MiwgICAgODMsICAgICAwLCAgICAgMCwgICAgODQsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICAwLAorICAgICAgIDYsICAgICA3LCAgICAgOCwg
ICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDI0NywgICAgMTIsICAgIDEz
LCAgICAxNCwKKyAgICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAg
IDIxLCAgICAyMiwgICAgMjMsICAgIDI0LAorICAgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsCisgICAgICAzNSwgICAg
MzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0
NCwKKyAgICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICAgMCwgICAgNDksICAgIDUwLCAg
ICA1MSwgICAgNTIsICAgIDUzLAorICAgICAgNTQsICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4
LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsCisgICAgICA2NCwgICAgNjUsICAg
ICAwLCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwKKyAg
ICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwg
ICAgODEsICAgIDgyLAorICAgICAgODMsICAgICAwLCAgICAgMCwgICAgODQsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICAwLCAgICAgNiwKKyAgICAgICA3
LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDI4NCwgICAg
MTIsICAgIDEzLCAgICAxNCwgICAgMTUsCisgICAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwg
ICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwKKyAgICAgIDI2LCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1
LAorICAgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAg
IDQzLCAgICA0NCwgICAgNDUsCisgICAgICA0NiwgICAgNDcsICAgIDQ4LCAgICAgMCwgICAgNDks
ICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwKKyAgICAgIDU1LCAgICA1NiwgICAg
NTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LAorICAg
ICAgNjUsICAgICAwLCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAg
ICA3MiwgICAgNzMsCisgICAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5
LCAgICA4MCwgICAgODEsICAgIDgyLCAgICA4MywKKyAgICAgICAwLCAgICAgMCwgICAgODQsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAxMzIs
ICAgICAwLCAgICAgMCwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwg
ICAgIDcsCisgICAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
IDM1OCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LAorICAgICAgMTcsICAgIDE4
LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYs
CisgICAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAg
MzQsICAgIDM1LCAgICAzNiwKKyAgICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwg
ICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LAorICAgICAgNDcsICAgIDQ4LCAgICAg
MCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsCisgICAg
ICA1NiwgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAg
IDY0LCAgICA2NSwKKyAgICAgICAwLCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAs
ICAgIDcxLCAgICA3MiwgICAgNzMsICAgIDc0LAorICAgICAgNzUsICAgIDc2LCAgICA3NywgICAg
NzgsICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLCAgICA4MywgICAgIDAsCisgICAgICAgMCwg
ICAgODQsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAg
ICAgOCwKICAgICAgICA5LCAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCiAgICAgICAxOCwgICAgMTks
ICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywK
ICAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAz
NSwgICAgMzYsICAgIDM3LAotICAgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAg
ICAgMCwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCi0gICAgICA0NywgICAgNDgsICAgIDQ5
LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwKLSAgICAg
ICAwLCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAgIDAsICAgIDYxLCAgICAgOCwgICAg
IDksICAgIDEwLAotICAgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgIDEyLCAgICAx
MywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwKLSAgICAgIDIwLCAg
ICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgIDAsICAg
ICAwLAotICAgICAgIDAsICAgICAwLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYs
ICAgIDM3LCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgNDEsICAgIDQyLCAgICAgMCwgICAg
NDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwKLSAgICAgIDQ5LCAgICA1MCwg
ICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgIDAsICAgIDU3LAot
ICAgICAgNTgsICAgIDU5LCAgICAgMCwgICAzMDksICAgIDYxLCAgICAgOCwgICAgIDksICAgIDEw
LCAgICAxMSwgICAzMTAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgIDEyLCAgICAxMywgICAgMTQs
ICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLAotICAgICAg
MjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsCi0gICAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICA0MSwKLSAgICAgIDQyLCAgICAgMCwgICAgNDMsICAgIDQ0
LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLAotICAgICAgNTEsICAg
IDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgIDAsICAgIDU3LCAgICA1OCwgICAg
NTksCi0gICAgICAgMCwgICAgIDAsICAgIDYxCisgICAgICAzOCwgICAgMzksICAgIDQwLCAgICA0
MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywKKyAgICAgIDQ4LCAg
ICAgMCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAg
IDU2LAorICAgICAgNTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMs
ICAgIDY0LCAgICA2NSwgICAgIDAsCisgICAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAg
NzAsICAgIDcxLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwKKyAgICAgIDc2LCAgICA3Nywg
ICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLCAgICA4MywgICAgIDAsICAgICAwLAor
ICAgICAgODQsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDYsICAgICA3
LCAgICAgOCwgICAgIDksCisgICAgICAxMCwgICAgMTEsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LAorICAgICAg
MTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAy
NywgICAgMjgsCisgICAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAg
ICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwKKyAgICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQy
LCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAorICAgICAgIDAsICAg
IDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAg
NTcsCisgICAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwg
ICAgNjUsICAgICAwLCAgICA2NiwKKyAgICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICA3
MSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LAorICAgICAgNzcsICAgIDc4LCAg
ICA3OSwgICAgODAsICAgIDgxLCAgICA4MiwgICAgODMsICAgICAwLCAgICAgMCwgICAgODQsCisg
ICAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
MTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LAorICAgICAgMTcsICAgIDE4LCAgICAxOSwg
ICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCisgICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1
LCAgICAzNiwKKyAgICAgIDM3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgNDcsICAgIDQ4LCAgICAgMCwgICAgNDks
ICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsCisgICAgICA1NiwgICAg
NTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2
NSwKKyAgICAgICAwLCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAg
ICA3MiwgICAgNzMsICAgIDc0LAorICAgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5
LCAgICA4MCwgICAgODEsICAgICAwLCAgICA4MywgICAgIDAsCisgICAgIDMzNCwgICAgODQsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgIDMzNSwgICAgIDAsICAgICAwLCAgICAgMCwKKyAg
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMiwg
ICAgMTMsICAgIDE0LAorICAgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAy
MCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsCisgICAgICAyNSwgICAgMjYsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMzIsICAgIDMzLCAgICAzNCwKKyAgICAgIDM1
LCAgICAzNiwgICAgMzcsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICA0NywgICAgNDgsICAgICAwLCAgICA0OSwgICAg
NTAsICAgIDUxLCAgICA1MiwgICAgNTMsCisgICAgICA1NCwgICAgNTUsICAgIDU2LCAgICA1Nywg
ICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywKKyAgICAgIDY0LCAgICA2
NSwgICAgIDAsICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgNzEsICAgIDcy
LAorICAgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzksICAg
IDgwLCAgICA4MSwgICAgIDAsCisgICAgICA4MywgICAgIDAsICAgICAwLCAgICA4NAogfTsKIAog
c3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eWNoZWNrW10gPQogewotICAgICAgIDAsICAgIDQx
LCAgICA3MSwgICAgOTEsICAgMTI2LCAgICA2NiwgICAyMDQsICAgIDY2LCAgIDE0MSwgICAgIDAs
Ci0gICAgICA3MSwgICAxMzEsICAgMTEyLCAgICAgMCwgICAzMzYsICAgIDkyLCAgIDM0MiwgICAz
NjQsICAgIDc2LCAgIDEwNiwKLSAgICAgMTA1LCAgIDEwNCwgICAxMDgsICAgIDc2LCAgICA3Nywg
ICAxMTQsICAgMTExLCAgIDExNCwgICAgOTcsICAgIDY5LAotICAgICAxMTEsICAgMTA2LCAgICA5
MywgICAxNTUsICAgIDkzLCAgIDEwNSwgICAgOTcsICAgMzYzLCAgIDExMywgICAxMjUsCi0gICAg
IDEwNiwgICAgODcsICAgIDg4LCAgIDEwOCwgICAxMDUsICAgMzkyLCAgIDEwNSwgICAxMjUsICAg
MTA4LCAgIDExNCwKLSAgICAgMTI3LCAgIDExMiwgICAxODUsICAgMTEyLCAgIDE3NCwgICAxMDgs
ICAgMTE0LCAgIDEwNiwgICAgOTgsICAgIDk5LAotICAgICAxMjksICAgIDg1LCAgICA4NiwgICAz
ODUsICAgMTEzLCAgIDEyNSwgICAgNjYsICAgMTA4LCAgIDEyOSwgICAzOTEsCi0gICAgIDEzMSwg
ICAgNzEsICAgMTMxLCAgIDIxMywgICAgNzYsICAgMTc1LCAgIDEyMiwgICAxMjMsICAgMTA4LCAg
IDEzOSwKLSAgICAgMTQwLCAgICA4MSwgICAxMDYsICAgMTA1LCAgICA4NCwgICAxMTEsICAgMTEw
LCAgIDEwNCwgICAxMTQsICAgMTExLAotICAgICAgODEsICAgMjEzLCAgIDExMSwgICAgOTMsICAg
IDgxLCAgIDExNCwgICAyMjksICAgIDk3LCAgIDE1OCwgICAxMTQsCi0gICAgIDEwNSwgICAxODcs
ICAgMTA1LCAgIDExMywgICAxMDUsICAgMTA1LCAgIDExMSwgICAxMDYsICAgMTExLCAgIDE4NywK
LSAgICAgMTExLCAgIDIzMywgICAxMTIsICAgMTc0LCAgIDE3NSwgICAxNzQsICAgMTc1LCAgIDEx
NywgICAyNDUsICAgMjQ2LAotICAgICAyNDcsICAgMjQ4LCAgIDEwNSwgICAxMDQsICAgMjU3LCAg
IDIxMSwgICAyMTIsICAgMTg3LCAgIDExMSwgICAxMjksCi0gICAgIDExNiwgICAxMzEsICAgMTE4
LCAgIDIxMSwgICAyMTIsICAgMjY4LCAgICA3NiwgICAgNzcsICAgMTExLCAgIDI3MiwKLSAgICAg
MjYwLCAgIDExNCwgICAxMDUsICAgMTExLCAgIDExMSwgICAzNDMsICAgMTE0LCAgIDExNCwgICAg
IDQsICAgICA1LAotICAgICAgIDYsICAgMjExLCAgIDIxMiwgICAxMTksICAgMTIwLCAgIDEyMSwg
ICAgNzYsICAgIDc3LCAgIDI5OCwgICAgODMsCi0gICAgICA4NCwgICAgODksICAgIDkwLCAgICA3
OSwgICAgODAsICAgMTExLCAgIDExMiwgICAyODksICAgMjkwLCAgIDI0MSwKLSAgICAgMjQyLCAg
IDEwNCwgICAyNDMsICAgMjQ0LCAgIDE3NCwgICAxNzUsICAgMjk4LCAgIDEyNiwgICAyMzgsICAg
MjM5LAotICAgICAyNDAsICAgMjQxLCAgIDI0MiwgICAyNDMsICAgMjQ0LCAgIDI0NSwgICAyNDYs
ICAgMjQ3LCAgIDI0OCwgICAyNDksCi0gICAgIDI1MCwgICAyNTEsICAgMjUyLCAgIDI1MywgICAy
NTQsICAgMjU1LCAgIDI1NiwgICAyNDksICAgMjUwLCAgIDI2MCwKLSAgICAgMTI1LCAgIDI2MCwg
ICAxMjQsICAgIDkxLCAgIDIwNCwgICAxMDcsICAgIDkzLCAgIDM0NywgICAxMTQsICAgMzQyLAot
ICAgICAzNTAsICAgMTE0LCAgIDEwNCwgICAxMDQsICAgMTE0LCAgIDMwMSwgICAxMTIsICAgMTA3
LCAgIDEwNCwgICAxMDQsCi0gICAgIDEwOSwgICAxMDQsICAgIDU2LCAgIDMwMSwgICAxMDYsICAg
MzQ3LCAgIDEwNSwgICAxMDgsICAgMzUwLCAgIDExMywKLSAgICAgMzYzLCAgIDEwNywgICAzNzIs
ICAgMTEzLCAgIDExMiwgICAzNTcsICAgMTA3LCAgIDEwNywgICAxMTMsICAgMTExLAotICAgICAx
MDQsICAgMzAxLCAgIDEwNywgICAxMDQsICAgMzc3LCAgIDExMywgICAxMDUsICAgMzM1LCAgIDEx
NCwgICAxMDksCi0gICAgIDM3MiwgICAxMDUsICAgMTA3LCAgICAxNywgICAzOTQsICAgMTA4LCAg
IDExMywgICAzOTAsICAgMjMwLCAgIDI1MSwKLSAgICAgMjYwLCAgIDI1NCwgICAxMTQsICAgMTE0
LCAgIDI1MiwgICAyNTUsICAgIDk3LCAgIDI1NiwgICAzNTQsICAgMjUzLAotICAgICAgOTMsICAg
IDk3LCAgIDM5NCwgICAgIDUsICAgMTc4LCAgIDIxOCwgICAzNTQsICAgMjc3LCAgIDM4MywgICAz
MDIsCi0gICAgIDMzNywgICAzOTEsICAgMjc3LCAgIDM0MiwgICAgOTQsICAgIDk1LCAgICA5Niwg
ICAgOTcsICAgIDk4LCAgICA5OSwKLSAgICAgMTAwLCAgIDEwMSwgICAxMDIsICAgMTAzLCAgIDM1
NCwgICAzMzcsICAgMzYzLCAgICA4MSwgICAgLTEsICAgMzY4LAotICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAxMTMsICAgMzYzLCAgICAtMSwgICAgLTEsICAgMzY4LCAgICAtMSwgICAgLTEsCisg
ICAgICAgMCwgICAgNDcsICAgIDg5LCAgIDExNCwgICAgOTQsICAgMjI5LCAgIDIzOCwgICAgOTQs
ICAgIDg5LCAgIDE1MCwKKyAgICAgICAwLCAgIDE2NiwgICAzNjEsICAgMTM1LCAgIDE0OSwgICAx
NTUsICAgIDU5LCAgICAgMCwgICAxMDAsICAgMTMxLAorICAgICAxMDAsICAgMTAxLCAgIDM4OSwg
ICAxMTYsICAgMTMwLCAgIDEwMCwgICAxMDEsICAgMTMwLCAgIDM2NywgICAxMTYsCisgICAgIDEy
MCwgICAxMzAsICAgMTM4LCAgIDEyMCwgICAxMzcsICAgMTE2LCAgIDEzMiwgICAxNDksICAgMTM3
LCAgIDE4MCwKKyAgICAgMTM1LCAgIDEyOCwgICAxMzgsICAgMTM4LCAgIDExMSwgICAxMTIsICAg
IDkyLCAgIDEyOCwgICAxMzUsICAgMzg4LAorICAgICA0MTcsICAgMTQwLCAgIDEzMiwgICAxNDIs
ICAgMTM1LCAgIDIxMCwgICAxMzgsICAgMTAwLCAgIDE1MSwgICAxOTksCisgICAgIDEyOCwgICA0
MTAsICAgMTM1LCAgIDE1MywgICAxMjksICAgMTM4LCAgIDE1MywgICA0MTYsICAgMTU1LCAgIDEz
OCwKKyAgICAgMTM1LCAgIDEwOSwgICAxMTAsICAgMTI5LCAgIDE1NSwgICAxMjEsICAgMTIyLCAg
IDIxMiwgICAyMDAsICAgMTQ2LAorICAgICAxNDcsICAgMTI5LCAgIDEyOSwgICAxMzUsICAgMTI5
LCAgIDEzNSwgICAxMzgsICAgMTM1LCAgIDEzNSwgICAgODksCisgICAgIDEzNSwgICAzMjMsICAg
MTMwLCAgIDEzMCwgICAgOTQsICAgMTM1LCAgIDEzNCwgICAyMzgsICAgMTM4LCAgIDI1NCwKKyAg
ICAgMjEyLCAgIDIzNiwgICAyMzcsICAgMTI5LCAgIDEwNCwgICAxMjksICAgMTM4LCAgIDEwNywg
ICAxMjgsICAgMTM1LAorICAgICAxMzIsICAgMTM1LCAgIDE5OSwgICAyMDAsICAgMTA0LCAgIDEz
MiwgICAxMTYsICAgMjU4LCAgIDE5OSwgICAyMDAsCisgICAgIDEyMCwgICAxMDQsICAgMTM3LCAg
IDEzNSwgICAyMzYsICAgMjM3LCAgIDEzOCwgICAyODIsICAgMTI4LCAgIDEwMCwKKyAgICAgMTAx
LCAgIDI3MCwgICAyNzEsICAgMjcyLCAgIDI3MywgICAxMzUsICAgMTEzLCAgIDExNCwgICAyOTMs
ICAgMTMwLAorICAgICAzNzIsICAgMTQxLCAgIDI5NywgICAzNzUsICAgMzY4LCAgIDI4NSwgICAg
IDQsICAgICA1LCAgICAgNiwgICAxNDMsCisgICAgIDE0NCwgICAxNDUsICAgMTI4LCAgIDE1Mywg
ICAxMjgsICAgMTU1LCAgIDEwNywgICAxMDgsICAgMTAzLCAgIDEwNCwKKyAgICAgMTM1LCAgIDEz
NiwgICAyNjYsICAgMjY3LCAgIDEyOSwgICAzOTcsICAgMjY4LCAgIDI2OSwgICAxNTAsICAgMjc0
LAorICAgICAyNzUsICAgMTQ5LCAgIDExNSwgICAzMTQsICAgMzE1LCAgIDE0OCwgICAxMzEsICAg
MTE3LCAgIDEzMSwgICAxMzgsCisgICAgIDEzOCwgICAxMjgsICAgMzIzLCAgIDEzMywgICAxMjgs
ICAgMTMxLCAgIDEzOCwgICA0MTksICAgMTM2LCAgIDEyOCwKKyAgICAgMTI4LCAgIDMyNiwgICAx
MjgsICAgMTMwLCAgIDE0OSwgICAxMzcsICAgMTI5LCAgIDEzMiwgICAyODUsICAgMTk5LAorICAg
ICAyMDAsICAgMTMxLCAgIDEzNiwgICAxMzEsICAgMjg1LCAgIDEzNywgICAxMzcsICAgMTMxLCAg
IDEzNSwgICAxNjQsCisgICAgIDE2NSwgICAxMjgsICAgMzY3LCAgICA2MiwgICAzMjYsICAgMTM3
LCAgIDExOCwgICAxMTksICAgMTIwLCAgIDEyMSwKKyAgICAgMTIyLCAgIDEyMywgICAxMjQsICAg
MTI1LCAgIDEyNiwgICAxMjcsICAgMTMxLCAgIDEyOCwgICAxODMsICAgMjI5LAorICAgICAxMjks
ICAgMzcyLCAgIDEzOCwgICAzODgsICAgMzc1LCAgIDEzNywgICAxMzMsICAgMTMxLCAgIDEyOSwg
ICAgMTcsCisgICAgIDEzMiwgICAzODIsICAgMTM3LCAgIDI3NiwgICAzNzksICAgMTM4LCAgIDI1
NSwgICA0MDIsICAgMTM4LCAgIDM2MCwKKyAgICAgMjc3LCAgIDI3OSwgICAyODEsICAgMjc4LCAg
IDEyMCwgICAxMTYsICAgMzk3LCAgIDIxMiwgICAxMjAsICAgMjgwLAorICAgICA0MTUsICAgICA1
LCAgIDIwMywgICAyNDMsICAgMzI3LCAgIDM2MiwgICA0MDgsICAgMzc5LCAgIDQxNiwgICAzODgs
CisgICAgIDM2MiwgICAzMDIsICAgMTA0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgNDE5LCAgICAtMSwKKyAgICAgIC0xLCAgIDIzNiwgICAyMzcsICAgIC0xLCAgICAtMSwg
ICAyODUsICAgMzY3LCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAzNjcsICAg
IC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgMzM2LCAgIDMzNywgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgIDM0MiwgICAz
NDMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwg
ICAgLTEsICAgMzAyLCAgIDM5MywgICAgLTEsICAgIC0xLCAgIDM5MywgICAzODgsICAgMjYzLCAg
IDI2NCwKKyAgICAgMjY1LCAgIDI2NiwgICAyNjcsICAgMjY4LCAgIDI2OSwgICAyNzAsICAgMjcx
LCAgIDI3MiwgICAyNzMsICAgMjc0LAorICAgICAyNzUsICAgMjc2LCAgIDI3NywgICAyNzgsICAg
Mjc5LCAgIDI4MCwgICAyODEsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwK
LSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgMzYzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAzNjgsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAzOTIsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAzODUsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLAotICAgICAgLTEsICAgMzkxLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwg
ICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCi0gICAgICAxMSwgICAgMTIsICAgIDEzLCAgICAx
NCwgICAgMTUsICAgIDE2LCAgICAtMSwgICAgMTgsICAgIDE5LCAgICAyMCwKLSAgICAgIDIxLCAg
ICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAg
IDMwLAotICAgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcs
ICAgIDM4LCAgICAzOSwgICAgNDAsCi0gICAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAg
NDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwKLSAgICAgIDUxLCAgICA1Miwg
ICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLAot
ICAgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4
LCAgICA2OSwgICAgNzAsCi0gICAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAg
IDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwKLSAgICAgIDgxLCAgICA4MiwgICAgLTEs
ICAgIC0xLCAgICA4NSwgICAgODYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAg
LTEsICAgMzYxLCAgIDM2MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMzY3LCAgIDM2
OCwgICAgLTEsCisgICAgICAtMSwgICAzMjYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAzODgsICAgIC0xLAorICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAzOTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTA0LCAgICAt
MSwgICAgLTEsICAgIC0xLCAgIDEwOCwgICAxMDksICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAxMTQsICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgICAgMywgICAgIDQsCi0g
ICAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIs
ICAgIDEzLCAgICAxNCwKLSAgICAgIDE1LCAgICAxNiwgICAgLTEsICAgIDE4LCAgICAxOSwgICAg
MjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LAotICAgICAgMjUsICAgIDI2LCAgICAyNywg
ICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsCi0gICAgICAz
NSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQz
LCAgICA0NCwKLSAgICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAg
IDUxLCAgICA1MiwgICAgNTMsICAgIDU0LAotICAgICAgNTUsICAgIDU2LCAgICA1NywgICAgNTgs
ICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsCi0gICAgICA2NSwgICAg
NjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICAtMSwgICAgNzIsICAgIDczLCAgICA3
NCwKLSAgICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLCAg
ICA4MiwgICAgLTEsICAgIC0xLAotICAgICAgODUsICAgIDg2LCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDEwNCwKLSAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTA4LCAgIDEwOSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgMTE0LAotICAgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgICAzLCAgICAg
NCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsCi0gICAgICAgOSwgICAgMTAsICAgIDExLCAg
ICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIC0xLCAgICAxOCwKLSAgICAgIDE5
LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcs
ICAgIDI4LAotICAgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAg
MzUsICAgIDM2LCAgICAzNywgICAgMzgsCi0gICAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0Miwg
ICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwKLSAgICAgIDQ5LCAgICA1
MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4
LAotICAgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgNjUsICAg
IDY2LCAgICA2NywgICAgNjgsCi0gICAgICA2OSwgICAgNzAsICAgIC0xLCAgICA3MiwgICAgNzMs
ICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LCAgICA3OCwKLSAgICAgIDc5LCAgICA4MCwgICAg
ODEsICAgIDgyLCAgICAtMSwgICAgLTEsICAgIDg1LCAgICA4NiwgICAgLTEsICAgIC0xLAorICAg
ICA0MTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICA0MTYsICAgIC0xLCAg
ICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAzNzksICAgICAz
LCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKKyAgICAgICA4LCAgICAgOSwgICAgMTAsICAg
IDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIC0xLAorICAgICAgMTgs
ICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwg
ICAgMjcsCisgICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAz
NCwgICAgMzUsICAgIDM2LCAgICAzNywKKyAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAg
ICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LAorICAgICAgNDgsICAgIDQ5
LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgNTcs
CisgICAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAg
NjUsICAgIDY2LCAgICA2NywKKyAgICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3Miwg
ICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LAorICAgICAgNzgsICAgIDc5LCAgICAt
MSwgICAgODEsICAgIDgyLCAgICA4MywgICAgODQsICAgIDg1LCAgICA4NiwgICAgODcsCisgICAg
ICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwgICAgOTUsICAg
IDk2LCAgICA5NywKKyAgICAgIDk4LCAgICA5OSwgICAxMDAsICAgMTAxLCAgIDEwMiwgICAxMDMs
ICAgMTA0LCAgIDEwNSwgICAxMDYsICAgIC0xLAorICAgICAgLTEsICAgMTA5LCAgIDExMCwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDQsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgMTA4LAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgIDExNCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsCi0gICAgICAgMywgICAgIDQs
ICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwK
LSAgICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAtMSwgICAgMTgsICAgIDE5LCAgICAy
MCwgICAgMjEsICAgIDIyLAotICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsCi0gICAgICAzMywgICAgMzQsICAgIDM1
LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwKLSAgICAg
IDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAg
NTEsICAgIDUyLAotICAgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAgIDU3LCAgICA1OCwg
ICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsCi0gICAgICA2MywgICAgNjQsICAgIDY1LCAgICA2
NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIC0xLCAgICA3MiwKLSAgICAgIDczLCAg
ICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsICAg
IDgyLAotICAgICAgLTEsICAgIC0xLCAgICA4NSwgICAgODYsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgIDEyOCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAx
MzIsICAgMTMzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgMTM4LCAgIDEzOSwg
ICAxNDAsICAgMTQxLCAgIDE0MiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LAor
ICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1
LCAgICAxNiwgICAgLTEsCisgICAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAg
IDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywKKyAgICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LAorICAgICAg
MzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0
NiwgICAgNDcsCisgICAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAg
ICA1NCwgICAgNTUsICAgIDU2LCAgICA1NywKKyAgICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYx
LCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LAorICAgICAgNjgsICAg
IDY5LCAgICA3MCwgICAgNzEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAgICA3NiwgICAg
NzcsCisgICAgICA3OCwgICAgNzksICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgzLCAgICA4NCwg
ICAgODUsICAgIDg2LCAgICA4NywKKyAgICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICA5
MiwgICAgOTMsICAgIDk0LCAgICA5NSwgICAgOTYsICAgIDk3LAorICAgICAgOTgsICAgIDk5LCAg
IDEwMCwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAgMTA1LCAgIDEwNiwgICAgLTEsCisg
ICAgICAtMSwgICAxMDksICAgMTEwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgMTA0LCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgIDEwOCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAt
MSwgICAxMTQsICAgMTE1LCAgIDExNiwgICAxMTcsICAgMTE4LCAgICAgMywgICAgIDQsICAgICA1
LCAgICAgNiwKLSAgICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAg
IDEzLCAgICAxNCwgICAgMTUsICAgIDE2LAotICAgICAgLTEsICAgIDE4LCAgICAxOSwgICAgMjAs
ICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCi0gICAgICAyNywgICAg
MjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAz
NiwKLSAgICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAg
ICA0NCwgICAgNDUsICAgIDQ2LAotICAgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUx
LCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsCi0gICAgICA1NywgICAgNTgsICAg
IDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwKLSAg
ICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwg
ICAgNzUsICAgIDc2LAotICAgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsICAgIDgxLCAgICA4
MiwgICAgLTEsICAgIC0xLCAgICA4NSwgICAgODYsCisgICAgIDEyOCwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAxMzIsICAgMTMzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgMTM4
LCAgIDEzOSwgICAxNDAsICAgMTQxLCAgIDE0MiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYs
ICAgICA3LAorICAgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAg
MTQsICAgIDE1LCAgICAxNiwgICAgLTEsCisgICAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwg
ICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywKKyAgICAgIDI4LCAgICAy
OSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3
LAorICAgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAg
IDQ1LCAgICA0NiwgICAgNDcsCisgICAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIs
ICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2LCAgICA1NywKKyAgICAgIDU4LCAgICA1OSwgICAg
NjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LAorICAg
ICAgNjgsICAgIDY5LCAgICA3MCwgICAgNzEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAg
ICA3NiwgICAgNzcsCisgICAgICA3OCwgICAgNzksICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgz
LCAgICA4NCwgICAgODUsICAgIDg2LCAgICA4NywKKyAgICAgIDg4LCAgICA4OSwgICAgOTAsICAg
IDkxLCAgICA5MiwgICAgOTMsICAgIDk0LCAgICA5NSwgICAgOTYsICAgIDk3LAorICAgICAgOTgs
ICAgIDk5LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAgMTA1LCAgIDEwNiwg
ICAgLTEsCisgICAgICAtMSwgICAxMDksICAgMTEwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTA0LCAgICAtMSwgICAgLTEs
Ci0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAx
MTQsICAgMTE1LCAgIDExNiwKLSAgICAgMTE3LCAgIDExOCwgICAgIDMsICAgICA0LCAgICAgNSwg
ICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLAotICAgICAgMTEsICAgIDEyLCAgICAx
MywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAg
IDI5LCAgICAzMCwKLSAgICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYs
ICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLAotICAgICAgNDEsICAgIDQyLCAgICA0MywgICAg
NDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsCi0gICAgICA1MSwg
ICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIC0xLCAgICA1NywgICAgNTgsICAgIDU5LCAg
ICA2MCwKLSAgICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3
LCAgICA2OCwgICAgNjksICAgIDcwLAotICAgICAgLTEsICAgIDcyLCAgICA3MywgICAgNzQsICAg
IDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsCi0gICAgICA4MSwgICAgODIs
ICAgIC0xLCAgICAtMSwgICAgODUsICAgIDg2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwK
LSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgICAzLAotICAgICAgIDQsICAgICA1LCAgICAgNiwgICAxMDQsICAgICA4LCAg
ICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsCi0gICAgICAtMSwgICAgLTEsICAgIC0x
LCAgIDExNCwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgIC0xLCAgICAtMSwKLSAgICAg
IC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAg
MzIsICAgIDMzLAotICAgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwg
ICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsCi0gICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0
NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywKLSAgICAgIDU0LCAg
ICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAg
IDYzLAotICAgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAs
ICAgIC0xLCAgICA3MiwgICAgNzMsCi0gICAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywgICAg
NzgsICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLCAgICAtMSwKLSAgICAgIC0xLCAgICA4NSwg
ICAgODYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAor
ICAgICAxMjgsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTMyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsCisgICAgIDEzOCwgICAxMzksICAgMTQwLCAgIDE0MSwgICAxNDIsICAg
ICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywKKyAgICAgICA4LCAgICAgOSwgICAgMTAs
ICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIC0xLAorICAgICAg
MTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAy
NiwgICAgMjcsCisgICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAg
ICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywKKyAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQx
LCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LAorICAgICAgNDgsICAg
IDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAg
NTcsCisgICAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwg
ICAgNjUsICAgIDY2LCAgICA2NywKKyAgICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3
MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LAorICAgICAgNzgsICAgIDc5LCAg
ICAtMSwgICAgODEsICAgIDgyLCAgICA4MywgICAgODQsICAgIDg1LCAgICA4NiwgICAgODcsCisg
ICAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwgICAgOTUs
ICAgIDk2LCAgICA5NywKKyAgICAgIDk4LCAgICA5OSwgICAxMDAsICAgMTAxLCAgIDEwMiwgICAx
MDMsICAgMTA0LCAgIDEwNSwgICAxMDYsICAgIC0xLAorICAgICAgLTEsICAgMTA5LCAgIDExMCwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwKKyAgICAgMTI4LCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDEzMiwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAxMzgsICAgMTM5LCAgIDE0MCwgICAxNDEs
ICAgMTQyLCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsCisgICAgICAgOCwgICAg
IDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAt
MSwKKyAgICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAg
ICAyNSwgICAgMjYsICAgIDI3LAorICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMy
LCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsCisgICAgICAzOCwgICAgMzksICAg
IDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywKKyAg
ICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwg
ICAgNTYsICAgIDU3LAorICAgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2
MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsCisgICAgICA2OCwgICAgNjksICAgIDcwLCAg
ICA3MSwgICAgNzIsICAgIDczLCAgICA3NCwgICAgNzUsICAgIDc2LCAgICA3NywKKyAgICAgIDc4
LCAgICA3OSwgICAgLTEsICAgIDgxLCAgICA4MiwgICAgODMsICAgIDg0LCAgICA4NSwgICAgODYs
ICAgIDg3LAorICAgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgIDkyLCAgICA5MywgICAg
OTQsICAgIDk1LCAgICA5NiwgICAgOTcsCisgICAgICA5OCwgICAgOTksICAgMTAwLCAgIDEwMSwg
ICAxMDIsICAgMTAzLCAgIDEwNCwgICAxMDUsICAgMTA2LCAgICAtMSwKKyAgICAgIC0xLCAgIDEw
OSwgICAxMTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsCisgICAgIDEyOCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgMTM4LCAgIDEzOSwgICAx
NDAsICAgMTQxLCAgIDE0MiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LAorICAg
ICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgMjUsICAgIDI2LCAgICAyNywKKyAgICAgIDI4LCAgICAyOSwgICAgMzAsICAg
IDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LAorICAgICAgMzgs
ICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0Niwg
ICAgNDcsCisgICAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1
NCwgICAgNTUsICAgIDU2LCAgICA1NywKKyAgICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAg
ICAtMSwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LAorICAgICAgNjgsICAgIDY5
LCAgICA3MCwgICAgNzEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAgICA3NiwgICAgNzcs
CisgICAgICA3OCwgICAgNzksICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgzLCAgICA4NCwgICAg
ODUsICAgIDg2LCAgICA4NywKKyAgICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICA5Miwg
ICAgOTMsICAgIDk0LCAgICA5NSwgICAgOTYsICAgIDk3LAorICAgICAgOTgsICAgIDk5LCAgIDEw
MCwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAgMTA1LCAgIDEwNiwgICAgLTEsCisgICAg
ICAtMSwgICAxMDksICAgMTEwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LAotICAgICAxMDQsICAgICA4LCAgICAgOSwgICAg
MTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwg
ICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDI1LCAg
ICAyNiwKKyAgICAgMTI4LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEz
LCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAxMzgsICAgMTM5LCAgIDE0MCwgICAxNDEsICAg
MTQyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYsCiAgICAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwK
ICAgICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0
NCwgICAgNDUsICAgIDQ2LAotICAgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAg
ICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgLTEsCi0gICAgICA1NywgICAgNTgsICAgIDU5
LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwKLSAgICAg
IDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAg
NzUsICAgIDc2LAotICAgICAgNzcsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwg
ICAgMTMsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDI1LCAgICAyNiwKLSAgICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAg
IDM2LAotICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgMTE0LCAgICA0NSwgICAgNDYsCi0gICAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgNTQsICAgIDU1LCAgICAtMSwKLSAgICAgIDU3LCAgICA1OCwg
ICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2LAot
ICAgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIC0xLCAgICA3MiwgICAgNzMsICAgIDc0
LCAgICAtMSwgICAgNzYsCi0gICAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsICAg
IDgyLCAgICAtMSwgICAgLTEsICAgIDg1LCAgICA4NiwKKyAgICAgIDQ3LCAgICA0OCwgICAgNDks
ICAgIDUwLCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsICAgIDU2LAorICAgICAg
NTcsICAgIDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICAtMSwgICAgNjMsICAgIDY0LCAgICA2
NSwgICAgNjYsCisgICAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgNzEsICAgIDcyLCAg
ICA3MywgICAgNzQsICAgIDc1LCAgICA3NiwKKyAgICAgIDc3LCAgICA3OCwgICAgNzksICAgIC0x
LCAgICA4MSwgICAgODIsICAgIDgzLCAgICA4NCwgICAgODUsICAgIDg2LAorICAgICAgODcsICAg
IDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICA5MiwgICAgOTMsICAgIDk0LCAgICA5NSwgICAg
OTYsCisgICAgICA5NywgICAgOTgsICAgIDk5LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDEwMywg
ICAxMDQsICAgMTA1LCAgIDEwNiwKKyAgICAgIC0xLCAgICAtMSwgICAxMDksICAgMTEwLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgICAzLCAgICAgNCwgICAgIDUsCisg
ICAgICAgNiwgICAxMjgsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMs
ICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAxMzksICAgMTQwLCAgIDE0MSwgICAx
NDIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDI1LAorICAgICAgMjYsICAgIDI3LCAgICAyOCwg
ICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsCisgICAgICAz
NiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0
LCAgICA0NSwKKyAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAg
IDUyLCAgICA1MywgICAgNTQsICAgIDU1LAorICAgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTks
ICAgIDYwLCAgICA2MSwgICAgLTEsICAgIDYzLCAgICA2NCwgICAgNjUsCisgICAgICA2NiwgICAg
NjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3
NSwKKyAgICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICAtMSwgICAgODEsICAgIDgyLCAg
ICA4MywgICAgODQsICAgIDg1LAorICAgICAgODYsICAgIDg3LCAgICA4OCwgICAgODksICAgIDkw
LCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwgICAgOTUsCisgICAgICA5NiwgICAgOTcsICAg
IDk4LCAgICAtMSwgICAxMDAsICAgMTAxLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwKKyAg
ICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjUsICAgIDI2LCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsCisgICAgICAzMiwgICAgMzMsICAgIDM0LCAg
ICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIC0xLCAgICAtMSwKKyAgICAgIC0x
LCAgICAtMSwgICAxMzgsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAs
ICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICA2MCwgICAgNjEsCisgICAgICAtMSwgICAgNjMsICAgIDY0LCAgICA2NSwg
ICAgNjYsICAgIDY3LCAgICA2OCwgICAgNjksICAgIDcwLCAgICA3MSwKKyAgICAgIDcyLCAgICA3
MywgICAgNzQsICAgIDc1LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgLTEsICAgIDgx
LAorICAgICAgODIsICAgIDgzLCAgICA4NCwgICAgODUsICAgIDg2LCAgICA4NywgICAgODgsICAg
IDg5LCAgICA5MCwgICAgOTEsCisgICAgICA5MiwgICAgOTMsICAgIDk0LCAgICA5NSwgICAgOTYs
ICAgIC0xLCAgICA5OCwgICAgOTksICAgMTAwLCAgIDEwMSwKKyAgICAgMTAyLCAgIDEwMywgICAx
MDQsICAgMTA1LCAgIDEwNiwgICAgLTEsICAgIC0xLCAgIDEwOSwgICAxMTAsICAgIC0xLAorICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgIDEyOCwgICAgLTEsICAgIC0xLCAgIDEzMSwKKyAgICAgIDEwLCAgICAxMSwgICAgMTIsICAg
IDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDEzOSwgICAxNDAsICAgMTQxLAorICAgICAxNDIs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwg
ICAgMjksCisgICAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAz
NiwgICAgMzcsICAgIDM4LCAgICAzOSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LAorICAgICAgNTAsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
CisgICAgICA2MCwgICAgNjEsICAgIC0xLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAg
NjcsICAgIDY4LCAgICA2OSwKKyAgICAgIDcwLCAgICA3MSwgICAgNzIsICAgIDczLCAgICA3NCwg
ICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LAorICAgICAgLTEsICAgIDgxLCAgICA4
MiwgICAgODMsICAgIDg0LCAgICA4NSwgICAgODYsICAgIDg3LCAgICA4OCwgICAgODksCisgICAg
ICA5MCwgICAgOTEsICAgIDkyLCAgICA5MywgICAgOTQsICAgIDk1LCAgICA5NiwgICAgLTEsICAg
IDk4LCAgICA5OSwKKyAgICAgMTAwLCAgIDEwMSwgICAxMDIsICAgMTAzLCAgIDEwNCwgICAxMDUs
ICAgMTA2LCAgICAtMSwgICAgLTEsICAgMTA5LAorICAgICAxMTAsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTI4LCAg
ICAtMSwKKyAgICAgIC0xLCAgIDEzMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgMTM5LAorICAgICAxNDAsICAgMTQxLCAgIDE0MiwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIDI1LCAgICAyNiwgICAgMjcsCisgICAgICAyOCwgICAgMjks
ICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywK
KyAgICAgIDM4LCAgICAzOSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA0
NSwgICAgNDYsICAgIDQ3LAorICAgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDYw
LCAgICA2MSwgICAgLTEsICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2LCAgICA2NywKKyAgICAg
IDY4LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAg
NzYsICAgIDc3LAorICAgICAgNzgsICAgIDc5LCAgICAtMSwgICAgODEsICAgIDgyLCAgICA4Mywg
ICAgODQsICAgIDg1LCAgICA4NiwgICAgODcsCisgICAgICA4OCwgICAgODksICAgIDkwLCAgICA5
MSwgICAgOTIsICAgIDkzLCAgICA5NCwgICAgOTUsICAgIDk2LCAgICAtMSwKKyAgICAgIDk4LCAg
ICA5OSwgICAxMDAsICAgMTAxLCAgIDEwMiwgICAxMDMsICAgMTA0LCAgIDEwNSwgICAxMDYsICAg
IC0xLAorICAgICAgLTEsICAgMTA5LCAgIDExMCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDEwNCwgICAgLTEsICAgIC0xLAot
ICAgICAxMDcsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgIDExNSwgICAxMTYsCi0gICAgIDExNywgICAxMTgsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwKKyAgICAgMTI4LCAgICAxMCwgICAgMTEs
ICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAx
MzgsICAgMTM5LCAgIDE0MCwgICAxNDEsICAgMTQyLCAgICAtMSwgICAgMjUsICAgIDI2LCAgICAy
NywgICAgMjgsCiAgICAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAg
ICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwKICAgICAgIDM5LCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAotICAgICAgNDksICAg
IDUwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA1NCwgICAgNTUsICAgIC0xLCAgICA1NywgICAg
NTgsCi0gICAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwg
ICAgNjYsICAgIDY3LCAgICA2OCwKLSAgICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcyLCAgICA3
MywgICAgNzQsICAgIC0xLCAgICA3NiwgICAgNzcsICAgIDc4LAotICAgICAgNzksICAgIDgwLCAg
ICA4MSwgICAgODIsICAgIC0xLCAgICAtMSwgICAgODUsICAgIDg2LCAgICAtMSwgICAgLTEsCi0g
ICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAx
MDQsICAgIC0xLCAgICAtMSwgICAxMDcsICAgIDEwLAotICAgICAgMTEsICAgIDEyLCAgICAxMywg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsCi0gICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5
LCAgICAzMCwKLSAgICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAg
IDM3LCAgICAzOCwgICAgMzksICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsCi0gICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICA1NCwgICAgNTUsICAgIC0xLCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2
MCwKLSAgICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LCAg
ICA2OCwgICAgNjksICAgIDcwLAotICAgICAgLTEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIC0x
LCAgICA3NiwgICAgNzcsICAgIDc4LCAgICA3OSwgICAgODAsCi0gICAgICA4MSwgICAgODIsICAg
IC0xLCAgICAtMSwgICAgODUsICAgIDg2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAg
ICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIDYwLCAgICA2MSwgICAgLTEsICAgIDYzLCAgICA2
NCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgsCisgICAgICA2OSwgICAgNzAsICAgIDcxLCAg
ICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LCAgICA3OCwKKyAgICAgIDc5
LCAgICAtMSwgICAgODEsICAgIDgyLCAgICA4MywgICAgODQsICAgIDg1LCAgICA4NiwgICAgODcs
ICAgIDg4LAorICAgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwgICAg
OTUsICAgIDk2LCAgICAtMSwgICAgOTgsCisgICAgICA5OSwgICAxMDAsICAgMTAxLCAgIDEwMiwg
ICAxMDMsICAgMTA0LCAgIDEwNSwgICAxMDYsICAgIC0xLCAgICAtMSwKKyAgICAgMTA5LCAgIDEx
MCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAxMjgsCisgICAgICAtMSwgICAgLTEsICAgMTMxLCAgICAxMCwgICAgMTEs
ICAgIDEyLCAgICAxMywgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgMTM5LCAgIDE0MCwgICAx
NDEsICAgMTQyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjUsICAgIDI2LAorICAg
ICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAg
ICAzNSwgICAgMzYsCisgICAgICAzNywgICAgMzgsICAgIDM5LCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIDQ1LCAgICA0NiwKKyAgICAgIDQ3LCAgICA0OCwgICAgNDksICAg
IDUwLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgNjAsICAgIDYxLCAgICAtMSwgICAgNjMsICAgIDY0LCAgICA2NSwg
ICAgNjYsCisgICAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgNzEsICAgIDcyLCAgICA3
MywgICAgNzQsICAgIDc1LCAgICA3NiwKKyAgICAgIDc3LCAgICA3OCwgICAgNzksICAgIC0xLCAg
ICA4MSwgICAgODIsICAgIDgzLCAgICA4NCwgICAgODUsICAgIDg2LAorICAgICAgODcsICAgIDg4
LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICA5MiwgICAgOTMsICAgIDk0LCAgICA5NSwgICAgOTYs
CisgICAgICAtMSwgICAgOTgsICAgIDk5LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDEwMywgICAx
MDQsICAgMTA1LCAgIDEwNiwKKyAgICAgIC0xLCAgICAtMSwgICAxMDksICAgMTEwLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAg
ICAtMSwgICAgLTEsICAgIC0xLCAgIDEwNCwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAg
IC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTE0LCAgIDExNSwgICAxMTYs
ICAgMTE3LCAgIDExOCwgICAgLTEsICAgIDI1LAotICAgICAgMjYsICAgIDI3LCAgICAyOCwgICAg
MjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsCi0gICAgICAzNiwg
ICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICA0NSwKLSAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgNTQsICAgIDU1LAotICAgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAg
IDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgNjUsCi0gICAgICA2NiwgICAgNjcs
ICAgIDY4LCAgICA2OSwgICAgNzAsICAgIC0xLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICAtMSwK
LSAgICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLCAgICAt
MSwgICAgLTEsICAgIDg1LAotICAgICAgODYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTA0LCAgICAtMSwKLSAgICAg
IC0xLCAgIDEwNywgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgMTE1LAotICAgICAxMTYsICAgMTE3LCAgIDExOCwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDI1LCAgICAyNiwgICAgMjcsCisgICAgICAtMSwgICAxMjgsICAgIDEwLCAgICAx
MSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAg
ICAtMSwgICAxMzksICAgMTQwLCAgIDE0MSwgICAxNDIsICAgIC0xLCAgICAyNSwgICAgMjYsICAg
IDI3LAogICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQs
ICAgIDM1LCAgICAzNiwgICAgMzcsCiAgICAgICAzOCwgICAgMzksICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgNDUsICAgIDQ2LCAgICA0NywKLSAgICAgIDQ4LCAgICA0OSwg
ICAgNTAsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDU0LCAgICA1NSwgICAgLTEsICAgIDU3LAot
ICAgICAgNTgsICAgIDU5LCAgICA2MCwgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1
LCAgICA2NiwgICAgNjcsCi0gICAgICA2OCwgICAgNjksICAgIDcwLCAgICAtMSwgICAgNzIsICAg
IDczLCAgICA3NCwgICAgLTEsICAgIDc2LCAgICA3NywKLSAgICAgIDc4LCAgICA3OSwgICAgODAs
ICAgIDgxLCAgICA4MiwgICAgLTEsICAgIC0xLCAgICA4NSwgICAgODYsICAgIC0xLAotICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
IDEwNCwgICAgMTAsICAgIDExLCAgICAxMiwKLSAgICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgIDExNSwgICAxMTYsICAgMTE3LAotICAgICAxMTgsICAg
IC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAg
MzIsCi0gICAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwg
ICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgNDUsICAgIDQ2LCAgICA0
NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIDU0LCAg
ICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsCi0g
ICAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAs
ICAgIC0xLCAgICA3MiwKLSAgICAgIDczLCAgICA3NCwgICAgLTEsICAgIDc2LCAgICA3NywgICAg
NzgsICAgIDc5LCAgICA4MCwgICAgODEsICAgIDgyLAotICAgICAgLTEsICAgIC0xLCAgICA4NSwg
ICAgODYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgIDMsICAgICA0
LCAgICAgNSwKLSAgICAgICA2LCAgIDEwNCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAg
IDEyLCAgICAxMywgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgIDExNSwgICAxMTYs
ICAgMTE3LCAgIDExOCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjUsCi0gICAgICAyNiwgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAz
NSwKLSAgICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAg
ICA0MywgICAgNDQsICAgIDQ1LAotICAgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUw
LCAgICA1MSwgICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsCi0gICAgICAtMSwgICAgNTcsICAg
IDU4LCAgICA1OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwKLSAg
ICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcyLCAgICA3Mywg
ICAgNzQsICAgIDc1LAotICAgICAgLTEsICAgIDc3LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgICAzLCAg
ICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwgICAgIDgsICAgICA5LCAgICAxMCwKLSAgICAgIDEx
LCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDksICAgIDI1LCAgICAyNiwgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwg
ICAgMzUsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwKLSAgICAgIDQxLCAgICA0
MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUw
LAotICAgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICAtMSwgICAgNTcsICAg
IDU4LCAgICA1OSwgICAgNjAsCi0gICAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgNjUs
ICAgIDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwKLSAgICAgIC0xLCAgICA3MiwgICAg
NzMsICAgIDc0LCAgICA3NSwgICAgLTEsICAgIDc3LCAgICAtMSwgICAgLTEsICAgIC0xLAotICAg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgICAzLCAg
ICAgNCwgICAgIDUsCi0gICAgICAgNiwgICAgLTEsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDEx
LCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMDksICAgIDI1LAotICAgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwg
ICAgMzUsCi0gICAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0
MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKLSAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LAotICAgICAgLTEsICAgIDU3
LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgNjUs
Ci0gICAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIC0xLCAgICA3MiwgICAg
NzMsICAgIDc0LCAgICA3NSwKLSAgICAgIC0xLCAgICA3NywgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgICAwLAotICAgICAgLTEsICAgIC0xLCAgICAg
MywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCi0gICAg
ICAxMSwgICAgMTIsICAgIDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgMTA5LCAgICAyNSwgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAotICAgICAgMzEsICAgIDMyLCAgICAzMywgICAg
MzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsCi0gICAgICA0MSwg
ICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICA1MCwKLSAgICAgIDUxLCAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgLTEsICAgIDU3
LCAgICA1OCwgICAgNTksICAgIDYwLAotICAgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsICAg
IDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsCi0gICAgICAtMSwgICAgNzIs
ICAgIDczLCAgICA3NCwgICAgNzUsICAgIC0xLCAgICA3NywgICAgIDMsICAgICA0LCAgICAgNSwK
LSAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAx
MywgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjUsCi0gICAgICAyNiwgICAgMjcsICAgIDI4
LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwKLSAgICAg
IDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywgICAg
NDQsICAgIDQ1LAotICAgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA1MSwg
ICAgNTIsICAgIDUzLCAgICA1NCwgICAgNTUsCi0gICAgICAtMSwgICAgNTcsICAgIDU4LCAgICA1
OSwgICAgNjAsICAgIDYxLCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA2NSwKLSAgICAgIDY2LCAg
ICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwgICAgLTEsICAgIDcyLCAgICA3MywgICAgNzQsICAg
IDc1LAotICAgICAgLTEsICAgIDc3LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgLTEs
ICAgICA4LCAgICAgOSwgICAgMTAsCisgICAgICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwg
ICAgNjAsICAgIDYxLCAgICAtMSwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LAor
ICAgICAgNjgsICAgIDY5LCAgICA3MCwgICAgNzEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1
LCAgICA3NiwgICAgNzcsCisgICAgICA3OCwgICAgNzksICAgIC0xLCAgICA4MSwgICAgODIsICAg
IDgzLCAgICA4NCwgICAgODUsICAgIDg2LCAgICA4NywKKyAgICAgIDg4LCAgICA4OSwgICAgOTAs
ICAgIDkxLCAgICA5MiwgICAgOTMsICAgIDk0LCAgICA5NSwgICAgOTYsICAgIC0xLAorICAgICAg
OTgsICAgIDk5LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMDQsICAgMTA1LCAgIDEw
NiwgICAgLTEsCisgICAgICAtMSwgICAxMDksICAgMTEwLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LAorICAgICAxMjgsICAg
ICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgICAtMSwgICAxMzksICAgMTQwLCAgIDE0MSwgICAxNDIsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIDI1LCAgICAyNiwKKyAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAz
MSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LAorICAgICAgMzcsICAgIDM4LCAg
ICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCisg
ICAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQs
ICAgIDU1LCAgICA1NiwKKyAgICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAg
LTEsICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2LAorICAgICAgNjcsICAgIDY4LCAgICA2OSwg
ICAgNzAsICAgIDcxLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYsCisgICAgICA3
NywgICAgNzgsICAgIDc5LCAgICAtMSwgICAgODEsICAgIDgyLCAgICA4MywgICAgODQsICAgIDg1
LCAgICA4NiwKKyAgICAgIDg3LCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgOTIsICAg
IDkzLCAgICA5NCwgICAgOTUsICAgIDk2LAorICAgICAgOTcsICAgIDk4LCAgICAtMSwgICAgLTEs
ICAgMTAxLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAt
MSwKKyAgICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAxMzMsICAgIDI1LCAgICAyNiwgICAgMjcsCisgICAgICAyOCwgICAgMjksICAg
IDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywKKyAg
ICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwg
ICAgNDYsICAgIDQ3LAorICAgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsICAgIDUyLCAgICA1
MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgNTcsCisgICAgICA1OCwgICAgNTksICAgIDYwLCAg
ICA2MSwgICAgLTEsICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2LCAgICA2NywKKyAgICAgIDY4
LCAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3NSwgICAgNzYs
ICAgIDc3LAorICAgICAgNzgsICAgIDc5LCAgICAtMSwgICAgODEsICAgIDgyLCAgICA4MywgICAg
ODQsICAgIDg1LCAgICA4NiwgICAgODcsCisgICAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwg
ICAgOTIsICAgIDkzLCAgICA5NCwgICAgOTUsICAgIDk2LCAgICA5NywKKyAgICAgIDk4LCAgICAt
MSwgICAgLTEsICAgMTAxLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgICAzLCAgICAgNCwgICAgIDUsICAg
ICA2LCAgICAtMSwgICAgIDgsCisgICAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAxMzMsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAg
ICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAg
ICAzNywgICAgMzgsCisgICAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0
LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwKKyAgICAgIDQ5LCAgICA1MCwgICAgNTEsICAg
IDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LAorICAgICAgNTks
ICAgIDYwLCAgICA2MSwgICAgLTEsICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2LCAgICA2Nywg
ICAgNjgsCisgICAgICA2OSwgICAgNzAsICAgIDcxLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3
NSwgICAgNzYsICAgIDc3LCAgICA3OCwKKyAgICAgIDc5LCAgICAtMSwgICAgODEsICAgIDgyLCAg
ICA4MywgICAgODQsICAgIDg1LCAgICA4NiwgICAgODcsICAgIDg4LAorICAgICAgODksICAgIDkw
LCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwgICAgOTUsICAgIDk2LCAgICA5NywgICAgOTgs
CisgICAgICAtMSwgICAgLTEsICAgMTAxLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwKKyAgICAgICAwLCAgICAtMSwgICAgLTEsICAgICAzLCAgICAgNCwg
ICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LAorICAgICAgMTAsICAgIDExLCAgICAx
MiwgICAgMTMsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAxMzMsICAgIDI1LCAgICAyNiwgICAgMjcsICAg
IDI4LCAgICAyOSwKKyAgICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUs
ICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LAorICAgICAgNDAsICAgIDQxLCAgICA0MiwgICAg
NDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksCisgICAgICA1MCwg
ICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4LCAg
ICA1OSwKKyAgICAgIDYwLCAgICA2MSwgICAgLTEsICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2
LCAgICA2NywgICAgNjgsICAgIDY5LAorICAgICAgNzAsICAgIDcxLCAgICA3MiwgICAgNzMsICAg
IDc0LCAgICA3NSwgICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzksCisgICAgICAtMSwgICAgODEs
ICAgIDgyLCAgICA4MywgICAgODQsICAgIDg1LCAgICA4NiwgICAgODcsICAgIDg4LCAgICA4OSwK
KyAgICAgIDkwLCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwgICAgOTUsICAgIDk2LCAgICA5
NywgICAgOTgsICAgIC0xLAorICAgICAgLTEsICAgMTAxLCAgICAgMywgICAgIDQsICAgICA1LCAg
ICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsCiAgICAgICAxMSwgICAgMTIsICAgIDEz
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAg
MjksICAgIDMwLAogICAgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwg
ICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsCiAgICAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0
NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwKLSAgICAgIDUxLCAg
ICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAg
IDYwLAotICAgICAgNjEsICAgIDYyLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcs
ICAgIDY4LCAgICA2OSwgICAgNzAsCi0gICAgICAtMSwgICAgNzIsICAgIDczLCAgICA3NCwgICAg
NzUsICAgIC0xLCAgICA3NywgICAgMTAsICAgIDExLCAgICAxMiwKLSAgICAgIDEzLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAot
ICAgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LCAgICAzMSwgICAgMzIsCi0gICAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAg
IDM4LCAgICAzOSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgNDUs
ICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLAotICAgICAg
LTEsICAgIDU0LCAgICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2
MSwgICAgNjIsCi0gICAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAg
ICA2OSwgICAgNzAsICAgIC0xLCAgICA3MiwKLSAgICAgIDczLCAgICA3NCwgICAgLTEsICAgIDc2
LCAgICA3NywgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDgyLAotICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsCi0gICAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwg
ICAgMzIsICAgIDMzLCAgICAzNCwKLSAgICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAz
OSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAgNDUsICAgIDQ2LCAg
ICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNTQsCi0g
ICAgICA1NSwgICAgLTEsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIs
ICAgIDYzLCAgICA2NCwKLSAgICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAg
NzAsICAgIC0xLCAgICA3MiwgICAgNzMsICAgIDc0LAotICAgICAgLTEsICAgIC0xLCAgICA3Nwor
ICAgICAgNTEsICAgIDUyLCAgICA1MywgICAgNTQsICAgIDU1LCAgICA1NiwgICAgNTcsICAgIDU4
LCAgICA1OSwgICAgNjAsCisgICAgICA2MSwgICAgLTEsICAgIDYzLCAgICA2NCwgICAgNjUsICAg
IDY2LCAgICA2NywgICAgNjgsICAgIDY5LCAgICA3MCwKKyAgICAgIDcxLCAgICA3MiwgICAgNzMs
ICAgIDc0LCAgICA3NSwgICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzksICAgIC0xLAorICAgICAg
ODEsICAgIDgyLCAgICA4MywgICAgODQsICAgIDg1LCAgICA4NiwgICAgODcsICAgIDg4LCAgICA4
OSwgICAgOTAsCisgICAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwgICAgOTUsICAgIDk2LCAg
ICA5NywgICAgOTgsICAgIC0xLCAgICAtMSwKKyAgICAgMTAxLCAgICAgMywgICAgIDQsICAgICA1
LCAgICAgNiwgICAgLTEsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLAorICAgICAgMTIsICAg
IDEzLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwg
ICAgMjksICAgIDMwLCAgICAzMSwKKyAgICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAz
NiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLAorICAgICAgNDIsICAgIDQzLCAg
ICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgNTEsCisg
ICAgICA1MiwgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTks
ICAgIDYwLCAgICA2MSwKKyAgICAgIC0xLCAgICA2MywgICAgNjQsICAgIDY1LCAgICA2NiwgICAg
NjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcxLAorICAgICAgNzIsICAgIDczLCAgICA3NCwg
ICAgNzUsICAgIDc2LCAgICA3NywgICAgNzgsICAgIDc5LCAgICAtMSwgICAgODEsCisgICAgICA4
MiwgICAgODMsICAgIDg0LCAgICA4NSwgICAgODYsICAgIDg3LCAgICA4OCwgICAgODksICAgIDkw
LCAgICA5MSwKKyAgICAgIDkyLCAgICA5MywgICAgOTQsICAgIDk1LCAgICA5NiwgICAgOTcsICAg
IDk4LCAgICAtMSwgICAgLTEsICAgMTAxLAorICAgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAy
OSwKKyAgICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAg
ICAzNywgICAgMzgsICAgIDM5LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksCisgICAgICA1MCwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAg
ICAgIDYwLCAgICA2MSwgICAgLTEsICAgIDYzLCAgICA2NCwgICAgNjUsICAgIDY2LCAgICA2Nywg
ICAgNjgsICAgIDY5LAorICAgICAgNzAsICAgIDcxLCAgICA3MiwgICAgNzMsICAgIDc0LCAgICA3
NSwgICAgNzYsICAgIDc3LCAgICA3OCwgICAgNzksCisgICAgICAtMSwgICAgODEsICAgIDgyLCAg
ICA4MywgICAgODQsICAgIDg1LCAgICA4NiwgICAgODcsICAgIDg4LCAgICA4OSwKKyAgICAgIDkw
LCAgICA5MSwgICAgOTIsICAgIDkzLCAgICA5NCwgICAgOTUsICAgIDk2LCAgICAtMSwgICAgOTgs
ICAgIC0xLAorICAgICAxMDAsICAgMTAxLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAx
MDYsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjUsICAgIDI2LCAgICAyNywKKyAgICAgIDI4LCAgICAy
OSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3
LAorICAgICAgMzgsICAgIDM5LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDQ1LCAgICA0NiwgICAgNDcsCisgICAgICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAg
NjAsICAgIDYxLCAgICAtMSwgICAgNjMsICAgIDY0LCAgICA2NSwgICAgNjYsICAgIDY3LAorICAg
ICAgNjgsICAgIDY5LCAgICA3MCwgICAgNzEsICAgIDcyLCAgICA3MywgICAgNzQsICAgIDc1LCAg
ICA3NiwgICAgNzcsCisgICAgICA3OCwgICAgNzksICAgIC0xLCAgICA4MSwgICAgODIsICAgIDgz
LCAgICA4NCwgICAgODUsICAgIDg2LCAgICA4NywKKyAgICAgIDg4LCAgICA4OSwgICAgOTAsICAg
IDkxLCAgICA5MiwgICAgOTMsICAgIDk0LCAgICA5NSwgICAgOTYsICAgIC0xLAorICAgICAgOTgs
ICAgIC0xLCAgICAtMSwgICAxMDEKIH07CiAKICAgLyogWVlTVE9TW1NUQVRFLU5VTV0gLS0gVGhl
IChpbnRlcm5hbCBudW1iZXIgb2YgdGhlKSBhY2Nlc3NpbmcKQEAgLTE0NzMsMTA3ICsxNjI3LDEx
NSBAQCBzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5c3Rvc1tdID0KICAgICAgIDEyLCAgICAx
MywgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMy
LAogICAgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAg
IDQwLCAgICA0MSwgICAgNDIsCiAgICAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcs
ICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwKLSAgICAgIDUzLCAgICA1NCwgICAg
NTUsICAgIDU3LCAgICA1OCwgICAgNTksICAgIDYwLCAgICA2MSwgICAgNjIsICAgIDYzLAotICAg
ICAgNjQsICAgIDY1LCAgICA2NiwgICAgNjcsICAgIDY4LCAgICA2OSwgICAgNzAsICAgIDcyLCAg
ICA3MywgICAgNzQsCi0gICAgICA3NSwgICAgNzcsICAgMTYwLCAgIDE2MSwgICAxNjIsICAgMTYz
LCAgIDE2NCwgICAxNjgsICAgMTY5LCAgIDE3MCwKLSAgICAgMTcxLCAgIDE3MiwgICAxNzMsICAg
MTc0LCAgIDE3NSwgICAxNzYsICAgMTc3LCAgIDE3OCwgICAxODEsICAgMTgyLAotICAgICAxODMs
ICAgMjE4LCAgIDIxOSwgICAyMjAsICAgMTc3LCAgICA3NiwgICAgNzcsICAgMTA4LCAgIDEyOSwg
ICAxMDQsCi0gICAgIDExNCwgICAyMjEsICAgMTA1LCAgIDExMSwgICAxNjUsICAgMTY2LCAgIDE2
NywgICAxNzIsICAgMTc2LCAgIDExMSwKLSAgICAgMTE0LCAgICA3NiwgICAxMjksICAgIDc2LCAg
IDExNCwgICAxNTksICAgMTc0LCAgIDE3NiwgICAxMDYsICAgICAwLAotICAgICAyMTksICAgMTgx
LCAgIDE4NSwgICAxMDgsICAgIDc2LCAgIDE3OSwgICAxODAsICAgMTA4LCAgIDIwMSwgICAxNjYs
Ci0gICAgIDE2NSwgICAxNjcsICAgMTI5LCAgIDEyOSwgICAxMDQsICAgMTA2LCAgIDExMywgICAx
MDgsICAgMTE0LCAgIDE3MiwKLSAgICAgMTc2LCAgIDE4NiwgICAxODcsICAgIDc2LCAgICA3OCwg
ICAgNzksICAgIDgwLCAgICA4MSwgICAgODIsICAgIDg1LAotICAgICAgODYsICAgMTA0LCAgIDEw
NywgICAxMTUsICAgMTE2LCAgIDExNywgICAxMTgsICAgMTMwLCAgIDEzMSwgICAxMzIsCi0gICAg
IDEzNCwgICAxMzUsICAgMTM2LCAgIDEzNywgICAxMzgsICAgMTM5LCAgIDE0MCwgICAxNDEsICAg
MTQyLCAgIDE0MywKLSAgICAgMTQ0LCAgIDE0NSwgICAxNDYsICAgMTQ3LCAgIDE0OCwgICAxNDks
ICAgMTUwLCAgIDE1MSwgICAxNTIsICAgMTUzLAotICAgICAxNTQsICAgMTU4LCAgIDE4MSwgICAx
MTQsICAgMTg2LCAgIDE4NCwgICAxMTMsICAgMTA1LCAgIDExMSwgICAgMTQsCi0gICAgICAxNSwg
ICAgMTYsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAg
ICA1NiwKLSAgICAgMTA4LCAgIDEwOSwgICAxMTQsICAgMTQxLCAgIDE1NCwgICAxNTUsICAgMTU3
LCAgIDE2MCwgICAxNjEsICAgMTgxLAotICAgICAxOTEsICAgMTkyLCAgIDE5MywgICAxOTQsICAg
MjAyLCAgIDIwMywgICAyMDQsICAgMjA2LCAgIDIwOCwgICAyMTAsCi0gICAgIDIxNywgICAxMDYs
ICAgMTA2LCAgIDExMywgICAxMDcsICAgMTU4LCAgIDE1NSwgICAxOTAsICAgMTc2LCAgIDEyOSwK
LSAgICAgMTg4LCAgIDE4OSwgICAxMDksICAgMTg3LCAgIDE0MSwgICAxNDEsICAgMTU3LCAgICA4
NSwgICAgODYsICAgMTA2LAotICAgICAxMTAsICAgMTA1LCAgIDEwNSwgICAxMTEsICAgIDU1LCAg
IDE1NSwgICAxMDQsICAgMTQxLCAgIDExOSwgICAxMjAsCi0gICAgIDEyMSwgICAxMTYsICAgMTE4
LCAgICA4MywgICAgODQsICAgIDg3LCAgICA4OCwgICAxMjIsICAgMTIzLCAgICA4OSwKLSAgICAg
IDkwLCAgIDEyNiwgICAxMjUsICAgMTI0LCAgICA5MSwgICAgOTMsICAgIDkyLCAgIDEyNywgICAx
MDcsICAgMTA5LAotICAgICAxODYsICAgIDc5LCAgICA4MCwgICAxODAsICAgMTE0LCAgIDExNCwg
ICAyMTIsICAgMTA0LCAgIDEwNCwgICAxMTQsCi0gICAgIDExNCwgICAxNTcsICAgMTA0LCAgIDE1
OCwgICAxMTIsICAgMTA0LCAgIDEwOSwgICAxOTUsICAgIDk0LCAgICA5NSwKLSAgICAgIDk2LCAg
ICA5NywgICAgOTgsICAgIDk5LCAgIDEwMCwgICAxMDEsICAgMTAyLCAgIDEwMywgICAxMTMsICAg
MTU2LAotICAgICAxMTEsICAgMTE0LCAgIDEwOSwgICAxOTIsICAgMTU4LCAgIDEwNywgICAxNTgs
ICAgMTkwLCAgIDExMywgICAxMDcsCi0gICAgIDE4OCwgICAxMDYsICAgMTExLCAgIDExNCwgICAg
NzYsICAgMTE0LCAgIDEwNSwgICAxMzMsICAgMTU3LCAgICA3NiwKLSAgICAgIDgyLCAgIDEzNiwg
ICAxNTUsICAgMTQxLCAgIDE0MSwgICAxNDEsICAgMTQzLCAgIDE0MywgICAxNDQsICAgMTQ0LAot
ICAgICAxNDUsICAgMTQ1LCAgIDE0NSwgICAxNDUsICAgMTQ2LCAgIDE0NiwgICAxNDcsICAgMTQ4
LCAgIDE0OSwgICAxNTAsCi0gICAgIDE1MSwgICAxNTIsICAgMTU3LCAgIDEwOSwgICAxOTgsICAg
MTk5LCAgIDIwMCwgICAyMTMsICAgMTU3LCAgIDExNCwKLSAgICAgMTU3LCAgIDExMiwgICAyMTEs
ICAgMjAyLCAgIDE1NSwgICAxNTUsICAgMTA3LCAgIDExMywgICAxMDcsICAgMTkwLAotICAgICAx
MTMsICAgMTE0LCAgIDE1OCwgICAxODksICAgMTA2LCAgIDExNCwgICAxMDcsICAgMTEyLCAgICA1
NiwgICAyMDEsCi0gICAgIDE5MywgICAxOTEsICAgMjAzLCAgIDIxNCwgICAxMDUsICAgMTA1LCAg
IDE1NywgICAxNzAsICAgMTcyLCAgIDIwOSwKLSAgICAgMTk2LCAgIDE5MCwgICAxMTMsICAgMTkw
LCAgIDEwNywgICAxNTgsICAgMTU1LCAgIDEwNCwgICAyMDksICAgMjE1LAotICAgICAyMTYsICAg
MTk4LCAgIDIwNSwgICAyMDcsICAgMTI5LCAgIDEwNSwgICAxMDksICAgMTkwLCAgIDEwNywgICAx
NTcsCi0gICAgIDExNCwgICAxMDUsICAgIDE3LCAgIDE5NCwgICAxMTMsICAgMTkzLCAgIDE5Nywg
ICAyMDEsICAgMTE0LCAgIDEwNSwKLSAgICAgMTU3LCAgIDE5NywgICAxOTgsICAgMTkwLCAgIDEx
NAorICAgICAgNTMsICAgIDU0LCAgICA1NSwgICAgNTYsICAgIDU3LCAgICA1OCwgICAgNTksICAg
IDYwLCAgICA2MSwgICAgNjMsCisgICAgICA2NCwgICAgNjUsICAgIDY2LCAgICA2NywgICAgNjgs
ICAgIDY5LCAgICA3MCwgICAgNzEsICAgIDcyLCAgICA3MywKKyAgICAgIDc0LCAgICA3NSwgICAg
NzYsICAgIDc3LCAgICA3OCwgICAgNzksICAgIDgxLCAgICA4MiwgICAgODMsICAgIDg0LAorICAg
ICAgODUsICAgIDg2LCAgICA4NywgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgIDkyLCAg
ICA5MywgICAgOTQsCisgICAgICA5NSwgICAgOTYsICAgIDk3LCAgICA5OCwgICAxMDEsICAgMTg0
LCAgIDE4NSwgICAxODYsICAgMTg3LCAgIDE4OCwKKyAgICAgMTkyLCAgIDE5MywgICAxOTQsICAg
MTk1LCAgIDE5NiwgICAxOTcsICAgMTk4LCAgIDE5OSwgICAyMDAsICAgMjAxLAorICAgICAyMDIs
ICAgMjA1LCAgIDIwNiwgICAyMDcsICAgMjQyLCAgIDI0MywgICAyNDQsICAgMjAxLCAgIDEwMCwg
ICAxMDEsCisgICAgIDEzMiwgICAxNTMsICAgMTI4LCAgIDEzOCwgICAyNDUsICAgMTI5LCAgIDEz
NSwgICAxODksICAgMTkwLCAgIDE5MSwKKyAgICAgMTk2LCAgIDIwMCwgICAxMzUsICAgMTM4LCAg
IDEwMCwgICAxNTMsICAgMTAwLCAgIDEzOCwgICAxODMsICAgMTk4LAorICAgICAyMDAsICAgMTMw
LCAgICAgMCwgICAyNDMsICAgMjA1LCAgIDIwOSwgICAxMzIsICAgIDU5LCAgIDEwMCwgICAyMDMs
CisgICAgIDIwNCwgICAxMzIsICAgMjI1LCAgIDE5MCwgICAxODksICAgMTkxLCAgIDE1MywgICAx
NTMsICAgMTI4LCAgIDEzMCwKKyAgICAgMTM3LCAgIDEzMiwgICAxMzgsICAgMTk2LCAgIDIwMCwg
ICAyMTAsICAgMjExLCAgICA5OSwgICAxMDAsICAgMTAyLAorICAgICAxMDMsICAgMTA0LCAgIDEw
NSwgICAxMDYsICAgMTA5LCAgIDExMCwgICAxMjgsICAgMTMxLCAgIDEzOSwgICAxNDAsCisgICAg
IDE0MSwgICAxNDIsICAgMTU0LCAgIDE1NSwgICAxNTYsICAgMTU4LCAgIDE1OSwgICAxNjAsICAg
MTYxLCAgIDE2MiwKKyAgICAgMTYzLCAgIDE2NCwgICAxNjUsICAgMTY2LCAgIDE2NywgICAxNjgs
ICAgMTY5LCAgIDE3MCwgICAxNzEsICAgMTcyLAorICAgICAxNzMsICAgMTc0LCAgIDE3NSwgICAx
NzYsICAgMTc3LCAgIDE3OCwgICAxODIsICAgMjA1LCAgIDEzOCwgICAyMTAsCisgICAgIDIwOCwg
ICAxMzcsICAgMTI5LCAgIDEzNSwgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTgsICAgIDE5LCAg
ICAyMCwKKyAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICA2MiwgICAxMzIsICAgMTMz
LCAgIDEzOCwgICAxNjUsICAgMTc4LAorICAgICAxNzksICAgMTgxLCAgIDE4NCwgICAxODUsICAg
MjA1LCAgIDIxNSwgICAyMTYsICAgMjE3LCAgIDIxOCwgICAyMjYsCisgICAgIDIyNywgICAyMjgs
ICAgMjMwLCAgIDIzMiwgICAyMzQsICAgMjQxLCAgIDEzMCwgICAxMzAsICAgMTM3LCAgIDEzMSwK
KyAgICAgMTgyLCAgIDE3OSwgICAyMTQsICAgMjAwLCAgIDE1MywgICAyMTIsICAgMjEzLCAgIDEz
MywgICAyMTEsICAgMTY1LAorICAgICAxNjUsICAgMTgxLCAgIDEwOSwgICAxMTAsICAgMTMwLCAg
IDEzNCwgICAxMjksICAgMTI5LCAgIDEzNSwgICAgNjEsCisgICAgIDE3OSwgICAxMjgsICAgMTY1
LCAgIDE0MywgICAxNDQsICAgMTQ1LCAgIDE0MCwgICAxNDIsICAgMTA3LCAgIDEwOCwKKyAgICAg
MTExLCAgIDExMiwgICAxNDYsICAgMTQ3LCAgIDExMywgICAxMTQsICAgMTUwLCAgIDE0OSwgICAx
NDgsICAgMTE1LAorICAgICAxMTcsICAgMTE2LCAgIDE1MSwgICAxMzEsICAgMTMzLCAgIDIxMCwg
ICAxMDMsICAgMTA0LCAgIDIwNCwgICAxMzgsCisgICAgIDEzOCwgICAyMzYsICAgMTI4LCAgIDEy
OCwgICAxMzgsICAgMTM4LCAgIDE4MSwgICAxMjgsICAgMTgyLCAgIDEzNiwKKyAgICAgMTI4LCAg
IDEzMywgICAyMTksICAgMTE4LCAgIDExOSwgICAxMjAsICAgMTIxLCAgIDEyMiwgICAxMjMsICAg
MTI0LAorICAgICAxMjUsICAgMTI2LCAgIDEyNywgICAxMzcsICAgMTgwLCAgIDEzNSwgICAxMzgs
ICAgMTMzLCAgIDIxNiwgICAxODIsCisgICAgIDEzMSwgICAxODIsICAgMjE0LCAgIDEzNywgICAx
MzEsICAgMjEyLCAgIDEzMCwgICAxMzUsICAgMTM4LCAgIDEwMCwKKyAgICAgMTM4LCAgIDEyOSwg
ICAxNTcsICAgMTgxLCAgIDEwMCwgICAxMDYsICAgMTYwLCAgIDE3OSwgICAxNjUsICAgMTY1LAor
ICAgICAxNjUsICAgMTY3LCAgIDE2NywgICAxNjgsICAgMTY4LCAgIDE2OSwgICAxNjksICAgMTY5
LCAgIDE2OSwgICAxNzAsCisgICAgIDE3MCwgICAxNzEsICAgMTcyLCAgIDE3MywgICAxNzQsICAg
MTc1LCAgIDE3NiwgICAxODEsICAgMTMzLCAgIDIyMiwKKyAgICAgMjIzLCAgIDIyNCwgICAyMzcs
ICAgMTgxLCAgIDEzOCwgICAxODEsICAgMTM2LCAgIDIzNSwgICAyMjYsICAgMTc5LAorICAgICAx
NzksICAgMTMxLCAgIDEzNywgICAxMzEsICAgMjE0LCAgIDEzNywgICAxMzgsICAgMTgyLCAgIDIx
MywgICAxMzAsCisgICAgIDEzOCwgICAxMzEsICAgMTM2LCAgICA2MiwgICAyMjUsICAgMjE3LCAg
IDIxNSwgICAyMjcsICAgMjM4LCAgIDEyOSwKKyAgICAgMTI5LCAgIDE4MSwgICAxOTQsICAgMTk2
LCAgIDIzMywgICAyMjAsICAgMjE0LCAgIDEzNywgICAyMTQsICAgMTMxLAorICAgICAxODIsICAg
MTc5LCAgIDEyOCwgICAyMzMsICAgMjM5LCAgIDI0MCwgICAyMjIsICAgMjI5LCAgIDIzMSwgICAx
NTMsCisgICAgIDEyOSwgICAxMzMsICAgMjE0LCAgIDEzMSwgICAxODEsICAgMTM4LCAgIDEyOSwg
ICAgMTcsICAgMjE4LCAgIDEzNywKKyAgICAgMjE3LCAgIDIyMSwgICAyMjUsICAgMTM4LCAgIDEy
OSwgICAxODEsICAgMjIxLCAgIDIyMiwgICAyMTQsICAgMTM4CiB9OwogCiAgIC8qIFlZUjFbWVlO
XSAtLSBTeW1ib2wgbnVtYmVyIG9mIHN5bWJvbCB0aGF0IHJ1bGUgWVlOIGRlcml2ZXMuICAqLwog
c3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXIxW10gPQogewotICAgICAgIDAsICAgMTI4LCAg
IDEyOSwgICAxMjksICAgMTMwLCAgIDEzMSwgICAxMzEsICAgMTMxLCAgIDEzMSwgICAxMzEsCi0g
ICAgIDEzMSwgICAxMzIsICAgMTMyLCAgIDEzMiwgICAxMzIsICAgMTMyLCAgIDEzMiwgICAxMzMs
ICAgMTM0LCAgIDEzNSwKLSAgICAgMTM1LCAgIDEzNiwgICAxMzYsICAgMTM3LCAgIDEzNywgICAx
MzgsICAgMTM4LCAgIDEzOSwgICAxNDAsICAgMTQwLAotICAgICAxNDAsICAgMTQxLCAgIDE0MSwg
ICAxNDEsICAgMTQxLCAgIDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDMsCi0gICAgIDE0
MywgICAxNDMsICAgMTQzLCAgIDE0NCwgICAxNDQsICAgMTQ0LCAgIDE0NSwgICAxNDUsICAgMTQ1
LCAgIDE0NiwKLSAgICAgMTQ2LCAgIDE0NiwgICAxNDYsICAgMTQ2LCAgIDE0NywgICAxNDcsICAg
MTQ3LCAgIDE0OCwgICAxNDgsICAgMTQ5LAotICAgICAxNDksICAgMTUwLCAgIDE1MCwgICAxNTEs
ICAgMTUxLCAgIDE1MiwgICAxNTIsICAgMTUzLCAgIDE1MywgICAxNTQsCi0gICAgIDE1NCwgICAx
NTUsICAgMTU1LCAgIDE1NiwgICAxNTYsICAgMTU2LCAgIDE1NiwgICAxNTYsICAgMTU2LCAgIDE1
NiwKLSAgICAgMTU2LCAgIDE1NiwgICAxNTYsICAgMTU2LCAgIDE1NywgICAxNTcsICAgMTU4LCAg
IDE1OSwgICAxNjAsICAgMTYwLAotICAgICAxNjAsICAgMTYwLCAgIDE2MCwgICAxNjAsICAgMTYw
LCAgIDE2MCwgICAxNjEsICAgMTYyLCAgIDE2MiwgICAxNjMsCi0gICAgIDE2MywgICAxNjQsICAg
MTY1LCAgIDE2NSwgICAxNjYsICAgMTY2LCAgIDE2NiwgICAxNjYsICAgMTY3LCAgIDE2OCwKLSAg
ICAgMTY4LCAgIDE2OCwgICAxNjgsICAgMTY4LCAgIDE2OCwgICAxNjksICAgMTY5LCAgIDE2OSwg
ICAxNjksICAgMTY5LAotICAgICAxNjksICAgMTcwLCAgIDE3MCwgICAxNzEsICAgMTcxLCAgIDE3
MiwgICAxNzIsICAgMTczLCAgIDE3NCwgICAxNzQsCi0gICAgIDE3NCwgICAxNzQsICAgMTc0LCAg
IDE3NSwgICAxNzUsICAgMTc1LCAgIDE3NSwgICAxNzUsICAgMTc1LCAgIDE3NSwKLSAgICAgMTc1
LCAgIDE3NiwgICAxNzcsICAgMTc3LCAgIDE3NywgICAxNzgsICAgMTc5LCAgIDE3OSwgICAxODAs
ICAgMTgwLAotICAgICAxODAsICAgMTgxLCAgIDE4MSwgICAxODEsICAgMTgyLCAgIDE4MiwgICAx
ODIsICAgMTgyLCAgIDE4MiwgICAxODIsCi0gICAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4Miwg
ICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwKLSAgICAgMTgyLCAgIDE4
MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgy
LAotICAgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIsICAg
MTgyLCAgIDE4MiwgICAxODIsCi0gICAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4MiwgICAxODIs
ICAgMTgyLCAgIDE4MiwgICAxODIsICAgMTgyLCAgIDE4NCwKLSAgICAgMTgzLCAgIDE4NSwgICAx
ODMsICAgMTg2LCAgIDE4NiwgICAxODcsICAgMTg3LCAgIDE4OCwgICAxODgsICAgMTg5LAotICAg
ICAxODksICAgMTkwLCAgIDE5MSwgICAxOTIsICAgMTkyLCAgIDE5MywgICAxOTMsICAgMTkzLCAg
IDE5MywgICAxOTMsCi0gICAgIDE5MywgICAxOTMsICAgMTk0LCAgIDE5NSwgICAxOTYsICAgMTk0
LCAgIDE5NywgICAxOTcsICAgMTk5LCAgIDE5OCwKLSAgICAgMjAwLCAgIDE5OCwgICAyMDEsICAg
MjAxLCAgIDIwMiwgICAyMDIsICAgMjAzLCAgIDIwMywgICAyMDQsICAgMjA1LAotICAgICAyMDUs
ICAgMjA3LCAgIDIwNiwgICAyMDgsICAgMjA4LCAgIDIwOSwgICAyMDksICAgMjExLCAgIDIxMCwg
ICAyMTIsCi0gICAgIDIxMCwgICAyMTMsICAgMjEwLCAgIDIxNCwgICAyMTQsICAgMjE1LCAgIDIx
NSwgICAyMTYsICAgMjE2LCAgIDIxNywKLSAgICAgMjE3LCAgIDIxNywgICAyMTcsICAgMjE3LCAg
IDIxOCwgICAyMTgsICAgMjE5LCAgIDIxOSwgICAyMjEsICAgMjIwCisgICAgICAgMCwgICAxNTIs
ICAgMTUzLCAgIDE1MywgICAxNTQsICAgMTU1LCAgIDE1NSwgICAxNTUsICAgMTU1LCAgIDE1NSwK
KyAgICAgMTU1LCAgIDE1NSwgICAxNTYsICAgMTU2LCAgIDE1NiwgICAxNTYsICAgMTU2LCAgIDE1
NiwgICAxNTcsICAgMTU4LAorICAgICAxNTksICAgMTU5LCAgIDE2MCwgICAxNjAsICAgMTYxLCAg
IDE2MSwgICAxNjIsICAgMTYyLCAgIDE2MywgICAxNjQsCisgICAgIDE2NCwgICAxNjQsICAgMTY1
LCAgIDE2NSwgICAxNjUsICAgMTY1LCAgIDE2NiwgICAxNjYsICAgMTY2LCAgIDE2NiwKKyAgICAg
MTY3LCAgIDE2NywgICAxNjcsICAgMTY3LCAgIDE2OCwgICAxNjgsICAgMTY4LCAgIDE2OSwgICAx
NjksICAgMTY5LAorICAgICAxNzAsICAgMTcwLCAgIDE3MCwgICAxNzAsICAgMTcwLCAgIDE3MSwg
ICAxNzEsICAgMTcxLCAgIDE3MiwgICAxNzIsCisgICAgIDE3MywgICAxNzMsICAgMTc0LCAgIDE3
NCwgICAxNzUsICAgMTc1LCAgIDE3NiwgICAxNzYsICAgMTc3LCAgIDE3NywKKyAgICAgMTc4LCAg
IDE3OCwgICAxNzksICAgMTc5LCAgIDE4MCwgICAxODAsICAgMTgwLCAgIDE4MCwgICAxODAsICAg
MTgwLAorICAgICAxODAsICAgMTgwLCAgIDE4MCwgICAxODAsICAgMTgwLCAgIDE4MSwgICAxODEs
ICAgMTgyLCAgIDE4MywgICAxODQsCisgICAgIDE4NCwgICAxODQsICAgMTg0LCAgIDE4NCwgICAx
ODQsICAgMTg0LCAgIDE4NCwgICAxODUsICAgMTg2LCAgIDE4NiwKKyAgICAgMTg3LCAgIDE4Nywg
ICAxODgsICAgMTg5LCAgIDE4OSwgICAxOTAsICAgMTkwLCAgIDE5MCwgICAxOTAsICAgMTkxLAor
ICAgICAxOTIsICAgMTkyLCAgIDE5MiwgICAxOTIsICAgMTkyLCAgIDE5MiwgICAxOTMsICAgMTkz
LCAgIDE5MywgICAxOTMsCisgICAgIDE5MywgICAxOTMsICAgMTk0LCAgIDE5NCwgICAxOTUsICAg
MTk1LCAgIDE5NiwgICAxOTYsICAgMTk3LCAgIDE5OCwKKyAgICAgMTk4LCAgIDE5OCwgICAxOTgs
ICAgMTk4LCAgIDE5OSwgICAxOTksICAgMTk5LCAgIDE5OSwgICAxOTksICAgMTk5LAorICAgICAx
OTksICAgMTk5LCAgIDE5OSwgICAxOTksICAgMTk5LCAgIDE5OSwgICAxOTksICAgMTk5LCAgIDIw
MCwgICAyMDEsCisgICAgIDIwMSwgICAyMDEsICAgMjAyLCAgIDIwMywgICAyMDMsICAgMjA0LCAg
IDIwNCwgICAyMDQsICAgMjA0LCAgIDIwNSwKKyAgICAgMjA1LCAgIDIwNSwgICAyMDYsICAgMjA2
LCAgIDIwNiwgICAyMDYsICAgMjA2LCAgIDIwNiwgICAyMDYsICAgMjA2LAorICAgICAyMDYsICAg
MjA2LCAgIDIwNiwgICAyMDYsICAgMjA2LCAgIDIwNiwgICAyMDYsICAgMjA2LCAgIDIwNiwgICAy
MDYsCisgICAgIDIwNiwgICAyMDYsICAgMjA2LCAgIDIwNiwgICAyMDYsICAgMjA2LCAgIDIwNiwg
ICAyMDYsICAgMjA2LCAgIDIwNiwKKyAgICAgMjA2LCAgIDIwNiwgICAyMDYsICAgMjA2LCAgIDIw
NiwgICAyMDYsICAgMjA2LCAgIDIwNiwgICAyMDYsICAgMjA2LAorICAgICAyMDYsICAgMjA2LCAg
IDIwNiwgICAyMDYsICAgMjA2LCAgIDIwNiwgICAyMDYsICAgMjA2LCAgIDIwNiwgICAyMDYsCisg
ICAgIDIwNiwgICAyMDYsICAgMjA2LCAgIDIwNiwgICAyMDYsICAgMjA2LCAgIDIwNiwgICAyMDYs
ICAgMjA2LCAgIDIwNiwKKyAgICAgMjA2LCAgIDIwNiwgICAyMDYsICAgMjA2LCAgIDIwOCwgICAy
MDcsICAgMjA5LCAgIDIwNywgICAyMTAsICAgMjEwLAorICAgICAyMTEsICAgMjExLCAgIDIxMiwg
ICAyMTIsICAgMjEzLCAgIDIxMywgICAyMTQsICAgMjE1LCAgIDIxNiwgICAyMTYsCisgICAgIDIx
NywgICAyMTcsICAgMjE3LCAgIDIxNywgICAyMTcsICAgMjE3LCAgIDIxNywgICAyMTgsICAgMjE5
LCAgIDIyMCwKKyAgICAgMjE4LCAgIDIyMSwgICAyMjEsICAgMjIzLCAgIDIyMiwgICAyMjQsICAg
MjIyLCAgIDIyNSwgICAyMjUsICAgMjI2LAorICAgICAyMjYsICAgMjI3LCAgIDIyNywgICAyMjgs
ICAgMjI5LCAgIDIyOSwgICAyMzEsICAgMjMwLCAgIDIzMiwgICAyMzIsCisgICAgIDIzMywgICAy
MzMsICAgMjM1LCAgIDIzNCwgICAyMzYsICAgMjM0LCAgIDIzNywgICAyMzQsICAgMjM4LCAgIDIz
OCwKKyAgICAgMjM5LCAgIDIzOSwgICAyNDAsICAgMjQwLCAgIDI0MSwgICAyNDEsICAgMjQxLCAg
IDI0MSwgICAyNDEsICAgMjQyLAorICAgICAyNDIsICAgMjQzLCAgIDI0MywgICAyNDUsICAgMjQ0
CiB9OwogCiAgIC8qIFlZUjJbWVlOXSAtLSBOdW1iZXIgb2Ygc3ltYm9scyBvbiB0aGUgcmlnaHQg
aGFuZCBzaWRlIG9mIHJ1bGUgWVlOLiAgKi8KIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXly
MltdID0KIHsKICAgICAgICAwLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLAotICAgICAgIDMsICAgICAxLCAgICAgNCwgICAgIDEs
ICAgICAzLCAgICAgMiwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsCi0gICAgICAgMywgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMywgICAgIDIsICAgICAxLCAgICAg
MSwKLSAgICAgICAxLCAgICAgMSwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAxLAotICAgICAgIDMsICAgICAzLCAgICAgMywgICAgIDEsICAgICAz
LCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMywgICAgIDEsCi0gICAgICAgMywgICAgIDMsICAg
ICAzLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwKLSAg
ICAgICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwg
ICAgIDMsICAgICAxLAotICAgICAgIDUsICAgICAxLCAgICAgMywgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCi0gICAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDIsICAgICAyLCAgICAgMiwKLSAgICAgICA0
LCAgICAgNSwgICAgIDYsICAgICA5LCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMSwgICAgIDEs
ICAgICAyLAotICAgICAgIDMsICAgICAzLCAgICAgMiwgICAgIDUsICAgICAyLCAgICAgMSwgICAg
IDIsICAgICAxLCAgICAgMSwgICAgIDEsCi0gICAgICAgMywgICAgIDYsICAgICA3LCAgICAgOCwg
ICAgIDUsICAgICAxLCAgICAgMiwgICAgIDUsICAgICA2LCAgICAgNywKLSAgICAgICA0LCAgICAg
MSwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEsICAgICAx
LAorICAgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDQsICAgICAxLCAgICAgMywgICAgIDIsICAg
ICAyLCAgICAgMSwgICAgIDEsCisgICAgICAgMSwgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAxLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMSwKKyAgICAgICAxLCAgICAgMSwgICAg
IDEsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAorICAg
ICAgIDEsICAgICAzLCAgICAgMywgICAgIDMsICAgICAxLCAgICAgMywgICAgIDMsICAgICAxLCAg
ICAgMywgICAgIDMsCisgICAgICAgMSwgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAx
LCAgICAgMywgICAgIDMsICAgICAxLCAgICAgMywKKyAgICAgICAxLCAgICAgMywgICAgIDEsICAg
ICAzLCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMywgICAgIDEsICAgICAzLAorICAgICAgIDEs
ICAgICA1LCAgICAgMSwgICAgIDMsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsCisgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MywgICAgIDEsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgNCwgICAgIDUsICAgICA2LCAg
ICAgOSwgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDEsICAgICAxLAorICAgICAgIDIsICAgICAz
LCAgICAgMywgICAgIDIsICAgICA1LCAgICAgMiwgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDEs
CisgICAgICAgMSwgICAgIDMsICAgICA2LCAgICAgNywgICAgIDgsICAgICA1LCAgICAgMSwgICAg
IDIsICAgICA1LCAgICAgNiwKKyAgICAgICA3LCAgICAgNCwgICAgIDEsICAgICAyLCAgICAgMSwg
ICAgIDEsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAxLAorICAgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCisgICAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAg
ICAxLCAgICAgMSwKKyAgICAgICAxLCAgICAgMSwgICAgIDQsICAgICAxLCAgICAgMywgICAgIDEs
ICAgICAzLCAgICAgMywgICAgIDEsICAgICAxLAorICAgICAgIDMsICAgICA0LCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCiAgICAgICAgMSwg
ICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwKLSAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDQsICAgICAx
LCAgICAgMywgICAgIDEsICAgICAzLAotICAgICAgIDMsICAgICAxLCAgICAgMywgICAgIDQsICAg
ICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCiAgICAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwK
ICAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLAogICAgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCi0gICAgICAgMSwgICAgIDEsICAgICAx
LCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMCwKLSAgICAg
ICA2LCAgICAgMCwgICAgIDUsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMSwgICAg
IDMsICAgICAxLAotICAgICAgIDQsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCi0gICAgICAgMSwgICAgIDEsICAgICAyLCAgICAg
MCwgICAgIDAsICAgICA1LCAgICAgMSwgICAgIDEsICAgICAwLCAgICAgMiwKLSAgICAgICAwLCAg
ICAgMiwgICAgIDIsICAgICAzLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDUsICAg
ICAzLAotICAgICAgIDEsICAgICAwLCAgICAgNiwgICAgIDMsICAgICAyLCAgICAgMSwgICAgIDQs
ICAgICAwLCAgICAgNiwgICAgIDAsCi0gICAgICAgOCwgICAgIDAsICAgICA3LCAgICAgMSwgICAg
IDEsICAgICAxLCAgICAgMCwgICAgIDIsICAgICAzLCAgICAgMiwKLSAgICAgICAyLCAgICAgMiwg
ICAgIDMsICAgICAyLCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDAsICAgICAzCisg
ICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwKKyAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMCwgICAg
IDYsICAgICAwLCAgICAgNSwgICAgIDEsICAgICAyLAorICAgICAgIDMsICAgICA0LCAgICAgMSwg
ICAgIDMsICAgICAxLCAgICAgNCwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsCisgICAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAw
LCAgICAgMCwKKyAgICAgICA1LCAgICAgMSwgICAgIDEsICAgICAwLCAgICAgMiwgICAgIDAsICAg
ICAyLCAgICAgMiwgICAgIDMsICAgICAxLAorICAgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDUs
ICAgICAzLCAgICAgMSwgICAgIDAsICAgICA2LCAgICAgMywgICAgIDIsCisgICAgICAgMSwgICAg
IDQsICAgICAwLCAgICAgNiwgICAgIDAsICAgICA4LCAgICAgMCwgICAgIDcsICAgICAxLCAgICAg
MSwKKyAgICAgICAxLCAgICAgMCwgICAgIDIsICAgICAzLCAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMywgICAgIDIsICAgICAxLAorICAgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDAsICAgICAz
CiB9OwogCiAKQEAgLTI0MTUsNyArMjU3NywxMiBAQCB5eXJlZHVjZToKICAgY2FzZSAxMDoKIAog
ICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWy0x
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5pc0V4dGVu
c2lvbkVuYWJsZWQoIkdMX0VYVF9ZVVZfdGFyZ2V0IikpIHsKKyAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5bHNwWzBdKSwgInVuc3VwcG9ydGVkIHZhbHVlIiwgKHl5dnNwWzBdLmxleCkuc3Ry
aW5nLT5jX3N0cigpKTsKKyAgICAgICAgfQorICAgICAgICBUQ29uc3RhbnRVbmlvbiAqdW5pb25B
cnJheSA9IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsKKyAgICAgICAgdW5pb25BcnJheS0+c2V0WXV2
Q3NjU3RhbmRhcmRFWFRDb25zdChnZXRZdXZDc2NTdGFuZGFyZEVYVCgoeXl2c3BbMF0ubGV4KS5z
dHJpbmctPmNfc3RyKCkpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZENvbnN0YW50VW5pb24odW5pb25BcnJheSwgVFR5
cGUoRWJ0WXV2Q3NjU3RhbmRhcmRFWFQsIEVicFVuZGVmaW5lZCwgRXZxQ29uc3QpLCAoeXlsc3Bb
MF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTI0MjMsNyArMjU5MCw3IEBAIHl5cmVkdWNl
OgogICBjYXNlIDExOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CisgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFstMV0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0yNDMxLDcgKzI1OTgsNyBAQCB5eXJlZHVj
ZToKICAgY2FzZSAxMjoKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpID0gY29udGV4dC0+YWRkSW5kZXhFeHByZXNzaW9uKCh5eXZzcFstM10uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eWxzcFstMl0pLCAoeXl2c3BbLTFdLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNw
WzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMjQz
OSw3ICsyNjA2LDcgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTM6CiAKICAgICB7Ci0gICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4
dC0+YWRkSW5kZXhFeHByZXNzaW9uKCh5eXZzcFstM10uaW50ZXJtLmludGVybVR5cGVkTm9kZSks
ICh5eWxzcFstMl0pLCAoeXl2c3BbLTFdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKICAgICB9
CiAKICAgICBicmVhazsKQEAgLTI0NDcsNyArMjYxNCw3IEBAIHl5cmVkdWNlOgogICBjYXNlIDE0
OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250
ZXh0LT5hZGRGaWVsZFNlbGVjdGlvbkV4cHJlc3Npb24oKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5bHNwWy0xXSksICooeXl2c3BbMF0ubGV4KS5zdHJpbmcsICh5eWxzcFsw
XSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbMF0u
aW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0yNDU1LDcg
KzI2MjIsNyBAQCB5eXJlZHVjZToKICAgY2FzZSAxNToKIAogICAgIHsKLSAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkVW5hcnlNYXRoTFZhbHVlKEVP
cFBvc3RJbmNyZW1lbnQsICh5eXZzcFstMV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxz
cFswXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0
LT5hZGRGaWVsZFNlbGVjdGlvbkV4cHJlc3Npb24oKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSwgKHl5bHNwWy0xXSksICooeXl2c3BbMF0ubGV4KS5zdHJpbmcsICh5eWxzcFswXSkp
OwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMjQ2Myw3ICsyNjMwLDcgQEAgeXlyZWR1Y2U6CiAg
IGNhc2UgMTY6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9IGNvbnRleHQtPmFkZFVuYXJ5TWF0aExWYWx1ZShFT3BQb3N0RGVjcmVtZW50LCAoeXl2c3Bb
LTFdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkVW5hcnlNYXRoTFZhbHVlKEVP
cFBvc3RJbmNyZW1lbnQsICh5eXZzcFstMV0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxz
cFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMjQ3MSw4ICsyNjM4LDcgQEAgeXlyZWR1
Y2U6CiAgIGNhc2UgMTc6CiAKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPmNoZWNrSXNTY2FsYXJJ
bnRlZ2VyKCh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgIltdIik7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29u
dGV4dC0+YWRkVW5hcnlNYXRoTFZhbHVlKEVPcFBvc3REZWNyZW1lbnQsICh5eXZzcFstMV0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpA
QCAtMjQ4MCwxMiArMjY0Niw4IEBAIHl5cmVkdWNlOgogICBjYXNlIDE4OgogCiAgICAgewotICAg
ICAgICBib29sIGZhdGFsRXJyb3IgPSBmYWxzZTsKLSAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkRnVuY3Rpb25DYWxsT3JNZXRob2QoKHl5dnNwWzBd
LmludGVybSkuZnVuY3Rpb24sICh5eXZzcFswXS5pbnRlcm0pLm5vZGVQYWlyLm5vZGUxLCAoeXl2
c3BbMF0uaW50ZXJtKS5ub2RlUGFpci5ub2RlMiwgKHl5bHNwWzBdKSwgJmZhdGFsRXJyb3IpOwot
ICAgICAgICBpZiAoZmF0YWxFcnJvcikKLSAgICAgICAgewotICAgICAgICAgICAgWVlFUlJPUjsK
LSAgICAgICAgfQorICAgICAgICBjb250ZXh0LT5jaGVja0lzU2NhbGFySW50ZWdlcigoeXl2c3Bb
MF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICJbXSIpOworICAgICAgICAoeXl2YWwuaW50ZXJt
LmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CiAg
ICAgfQogCiAgICAgYnJlYWs7CkBAIC0yNDkzLDggKzI2NTUsNyBAQCB5eXJlZHVjZToKICAgY2Fz
ZSAxOToKIAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbMF0uaW50ZXJt
KTsKLSAgICAgICAgKHl5dmFsLmludGVybSkubm9kZVBhaXIubm9kZTIgPSBudWxscHRyOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRGdW5jdGlv
bkNhbGxPck1ldGhvZCgoeXl2c3BbMF0uaW50ZXJtKS5mdW5jdGlvbiwgKHl5dnNwWzBdLmludGVy
bSkuY2FsbE9yTWV0aG9kUGFpci5hcmd1bWVudHMsICh5eXZzcFswXS5pbnRlcm0pLmNhbGxPck1l
dGhvZFBhaXIudGhpc05vZGUsICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAt
MjUwMiw5ICsyNjYzLDggQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMjA6CiAKICAgICB7Ci0gICAgICAg
IEVTM19PUl9ORVdFUigiIiwgKHl5bHNwWzBdKSwgIm1ldGhvZHMiKTsKICAgICAgICAgKHl5dmFs
LmludGVybSkgPSAoeXl2c3BbMF0uaW50ZXJtKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkubm9k
ZVBhaXIubm9kZTIgPSAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOworICAgICAg
ICAoeXl2YWwuaW50ZXJtKS5jYWxsT3JNZXRob2RQYWlyLnRoaXNOb2RlID0gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBicmVhazsKQEAgLTI1MTIsNyArMjY3Miw5IEBAIHl5cmVkdWNlOgogICBjYXNl
IDIxOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFstMV0uaW50ZXJt
KTsKKyAgICAgICAgRVMzX09SX05FV0VSKCIiLCAoeXlsc3BbMF0pLCAibWV0aG9kcyIpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFswXS5pbnRlcm0pOworICAgICAgICAoeXl2YWwu
aW50ZXJtKS5jYWxsT3JNZXRob2RQYWlyLnRoaXNOb2RlID0gKHl5dnNwWy0yXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTI1MjgsOCArMjY5MCw3IEBA
IHl5cmVkdWNlOgogICBjYXNlIDIzOgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtKS5m
dW5jdGlvbiA9ICh5eXZzcFstMV0uaW50ZXJtLmZ1bmN0aW9uKTsKLSAgICAgICAgKHl5dmFsLmlu
dGVybSkubm9kZVBhaXIubm9kZTEgPSBudWxscHRyOworICAgICAgICAoeXl2YWwuaW50ZXJtKSA9
ICh5eXZzcFstMV0uaW50ZXJtKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTI1MzcsOCArMjY5
OCw4IEBAIHl5cmVkdWNlOgogICBjYXNlIDI0OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50
ZXJtKS5mdW5jdGlvbiA9ICh5eXZzcFswXS5pbnRlcm0uZnVuY3Rpb24pOwotICAgICAgICAoeXl2
YWwuaW50ZXJtKS5ub2RlUGFpci5ub2RlMSA9IG51bGxwdHI7CisgICAgICAgICh5eXZhbC5pbnRl
cm0pLmZ1bmN0aW9uID0gKHl5dnNwWy0xXS5pbnRlcm0uZnVuY3Rpb24pOworICAgICAgICAoeXl2
YWwuaW50ZXJtKS5jYWxsT3JNZXRob2RQYWlyLmFyZ3VtZW50cyA9IGNvbnRleHQtPmNyZWF0ZUVt
cHR5QXJndW1lbnRzTGlzdCgpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMjU0NiwxMCArMjcw
Nyw4IEBAIHl5cmVkdWNlOgogICBjYXNlIDI1OgogCiAgICAgewotICAgICAgICBjb25zdCBUVHlw
ZSAqdHlwZSA9IG5ldyBUVHlwZSgoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSktPmdl
dFR5cGUoKSk7Ci0gICAgICAgICh5eXZzcFstMV0uaW50ZXJtLmZ1bmN0aW9uKS0+YWRkUGFyYW1l
dGVyKFRDb25zdFBhcmFtZXRlcih0eXBlKSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0
aW9uID0gKHl5dnNwWy0xXS5pbnRlcm0uZnVuY3Rpb24pOwotICAgICAgICAoeXl2YWwuaW50ZXJt
KS5ub2RlUGFpci5ub2RlMSA9IFRJbnRlcm1lZGlhdGU6Ok1ha2VBZ2dyZWdhdGUoKHl5dnNwWzBd
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgKHl5dmFsLmlu
dGVybSkuZnVuY3Rpb24gPSAoeXl2c3BbMF0uaW50ZXJtLmZ1bmN0aW9uKTsKKyAgICAgICAgKHl5
dmFsLmludGVybSkuY2FsbE9yTWV0aG9kUGFpci5hcmd1bWVudHMgPSBjb250ZXh0LT5jcmVhdGVF
bXB0eUFyZ3VtZW50c0xpc3QoKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTI1NTcsMTAgKzI3
MTYsOSBAQCB5eXJlZHVjZToKICAgY2FzZSAyNjoKIAogICAgIHsKLSAgICAgICAgY29uc3QgVFR5
cGUgKnR5cGUgPSBuZXcgVFR5cGUoKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLT5n
ZXRUeXBlKCkpOwotICAgICAgICAoeXl2c3BbLTJdLmludGVybSkuZnVuY3Rpb24tPmFkZFBhcmFt
ZXRlcihUQ29uc3RQYXJhbWV0ZXIodHlwZSkpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5mdW5j
dGlvbiA9ICh5eXZzcFstMl0uaW50ZXJtKS5mdW5jdGlvbjsKLSAgICAgICAgKHl5dmFsLmludGVy
bSkubm9kZVBhaXIubm9kZTEgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgo
eXl2c3BbLTJdLmludGVybSkuaW50ZXJtTm9kZSwgKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBl
ZE5vZGUpLCAoeXlsc3BbLTFdKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmNhbGxPck1ldGhv
ZFBhaXIuYXJndW1lbnRzID0gY29udGV4dC0+Y3JlYXRlRW1wdHlBcmd1bWVudHNMaXN0KCk7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0gKHl5dnNwWy0xXS5pbnRlcm0uZnVuY3Rp
b24pOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5jYWxsT3JNZXRob2RQYWlyLmFyZ3VtZW50cy0+
cHVzaF9iYWNrKCh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7CiAgICAgfQogCiAg
ICAgYnJlYWs7CkBAIC0yNTY4LDcgKzI3MjYsOCBAQCB5eXJlZHVjZToKICAgY2FzZSAyNzoKIAog
ICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSAoeXl2c3BbLTFdLmludGVy
bS5mdW5jdGlvbik7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmZ1bmN0aW9uID0gKHl5dnNwWy0y
XS5pbnRlcm0pLmZ1bmN0aW9uOworICAgICAgICAoeXl2YWwuaW50ZXJtKS5jYWxsT3JNZXRob2RQ
YWlyLmFyZ3VtZW50cy0+cHVzaF9iYWNrKCh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSk7CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0yNTc2LDEwICsyNzM1LDcgQEAgeXlyZWR1Y2U6
CiAgIGNhc2UgMjg6CiAKICAgICB7Ci0gICAgICAgIGlmICgoeXl2c3BbMF0uaW50ZXJtLnR5cGUp
LmFycmF5KSB7Ci0gICAgICAgICAgICBFUzNfT1JfTkVXRVIoIltdIiwgKHl5bHNwWzBdKSwgImFy
cmF5IGNvbnN0cnVjdG9yIik7Ci0gICAgICAgIH0KLSAgICAgICAgKHl5dmFsLmludGVybS5mdW5j
dGlvbikgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3RvckZ1bmMoKHl5dnNwWzBdLmludGVybS50eXBl
KSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0uZnVuY3Rpb24pID0gKHl5dnNwWy0xXS5pbnRlcm0u
ZnVuY3Rpb24pOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMjU4Nyw3ICsyNzQzLDE4IEBAIHl5
cmVkdWNlOgogICBjYXNlIDI5OgogCiAgICAgewotICAgICAgICBjb250ZXh0LT5jaGVja0lzTm90
UmVzZXJ2ZWQoKHl5bHNwWzBdKSwgKih5eXZzcFswXS5sZXgpLnN0cmluZyk7CisgICAgICAgIGlm
ICgoeXl2c3BbMF0uaW50ZXJtLnR5cGUpLmFycmF5KSB7CisgICAgICAgICAgICBFUzNfT1JfTkVX
RVIoIltdIiwgKHl5bHNwWzBdKSwgImFycmF5IGNvbnN0cnVjdG9yIik7CisgICAgICAgIH0KKyAg
ICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSBjb250ZXh0LT5hZGRDb25zdHJ1Y3RvckZ1
bmMoKHl5dnNwWzBdLmludGVybS50eXBlKSk7CisgICAgfQorCisgICAgYnJlYWs7CisKKyAgY2Fz
ZSAzMDoKKworICAgIHsKKyAgICAgICAgY29udGV4dC0+Y2hlY2tJc05vdFJlc2VydmVkKCh5eWxz
cFswXSksICooeXl2c3BbMF0ubGV4KS5zdHJpbmcpOwogICAgICAgICBjb25zdCBUVHlwZSAqdHlw
ZSA9IFRDYWNoZTo6Z2V0VHlwZShFYnRWb2lkLCBFYnBVbmRlZmluZWQpOwogICAgICAgICBURnVu
Y3Rpb24gKmZ1bmN0aW9uID0gbmV3IFRGdW5jdGlvbigoeXl2c3BbMF0ubGV4KS5zdHJpbmcsIHR5
cGUpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLmZ1bmN0aW9uKSA9IGZ1bmN0aW9uOwpAQCAtMjU5
NSw3ICsyNzYyLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDMwOgorICBj
YXNlIDMxOgogCiAgICAgewogICAgICAgICBjb250ZXh0LT5jaGVja0lzTm90UmVzZXJ2ZWQoKHl5
bHNwWzBdKSwgKih5eXZzcFswXS5sZXgpLnN0cmluZyk7CkBAIC0yNjA2LDcgKzI3NzMsNyBAQCB5
eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMzE6CisgIGNhc2UgMzI6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFswXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsKQEAgLTI2MTQsNyArMjc4MSw3IEBAIHl5cmVkdWNlOgogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAzMjoKKyAgY2FzZSAzMzoKIAogICAgIHsKICAgICAgICAgKHl5
dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkVW5hcnlNYXRoTFZhbHVl
KEVPcFByZUluY3JlbWVudCwgKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXls
c3BbLTFdKSk7CkBAIC0yNjIyLDcgKzI3ODksNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMzM6CisgIGNhc2UgMzQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0u
aW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZFVuYXJ5TWF0aExWYWx1ZShFT3BQcmVEZWNy
ZW1lbnQsICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0xXSkpOwpA
QCAtMjYzMCw3ICsyNzk3LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDM0
OgorICBjYXNlIDM1OgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWy0xXS5pbnRlcm0pLm9w
ICE9IEVPcE51bGwpIHsKQEAgLTI2NDEsMjUgKzI4MDgsMjUgQEAgeXlyZWR1Y2U6CiAKICAgICBi
cmVhazsKIAotICBjYXNlIDM1OgorICBjYXNlIDM2OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtKS5v
cCA9IEVPcFBvc2l0aXZlOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDM2OgorICBjYXNlIDM3
OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcE5lZ2F0aXZlOyB9CiAKICAgICBicmVh
azsKIAotICBjYXNlIDM3OgorICBjYXNlIDM4OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtKS5vcCA9
IEVPcExvZ2ljYWxOb3Q7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMzg6CisgIGNhc2UgMzk6
CiAKICAgICB7CiAgICAgICAgIEVTM19PUl9ORVdFUigifiIsICh5eWxvYyksICJiaXQtd2lzZSBv
cGVyYXRvciIpOwpAQCAtMjY2OCwxMyArMjgzNSwxMyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFr
OwogCi0gIGNhc2UgMzk6CisgIGNhc2UgNDA6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSA0MDoKKyAgY2FzZSA0MToKIAogICAgIHsKICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQmluYXJ5TWF0aChFT3BNdWws
ICh5eXZzcFstMl0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFswXS5pbnRlcm0uaW50
ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0xXSkpOwpAQCAtMjY4Miw3ICsyODQ5LDcgQEAgeXlyZWR1
Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDQxOgorICBjYXNlIDQyOgogCiAgICAgewogICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRCaW5hcnlN
YXRoKEVPcERpdiwgKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWzBd
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTFdKSk7CkBAIC0yNjkwLDcgKzI4NTcs
NyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgNDI6CisgIGNhc2UgNDM6CiAK
ICAgICB7CiAgICAgICAgIEVTM19PUl9ORVdFUigiJSIsICh5eWxzcFstMV0pLCAiaW50ZWdlciBt
b2R1bHVzIG9wZXJhdG9yIik7CkBAIC0yNjk5LDEzICsyODY2LDEzIEBAIHl5cmVkdWNlOgogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSA0MzoKKyAgY2FzZSA0NDoKIAogICAgIHsgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9
CiAKICAgICBicmVhazsKIAotICBjYXNlIDQ0OgorICBjYXNlIDQ1OgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRCaW5hcnlNYXRo
KEVPcEFkZCwgKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWzBdLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTFdKSk7CkBAIC0yNzEzLDcgKzI4ODAsNyBA
QCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgNDU6CisgIGNhc2UgNDY6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFk
ZEJpbmFyeU1hdGgoRU9wU3ViLCAoeXl2c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAo
eXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFstMV0pKTsKQEAgLTI3MjEs
MTMgKzI4ODgsMTMgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDQ2OgorICBj
YXNlIDQ3OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3Bb
MF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgNDc6
CisgIGNhc2UgNDg6CiAKICAgICB7CiAgICAgICAgIEVTM19PUl9ORVdFUigiPDwiLCAoeXlsc3Bb
LTFdKSwgImJpdC13aXNlIG9wZXJhdG9yIik7CkBAIC0yNzM2LDcgKzI5MDMsNyBAQCB5eXJlZHVj
ZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgNDg6CisgIGNhc2UgNDk6CiAKICAgICB7CiAgICAg
ICAgIEVTM19PUl9ORVdFUigiPj4iLCAoeXlsc3BbLTFdKSwgImJpdC13aXNlIG9wZXJhdG9yIik7
CkBAIC0yNzQ1LDEzICsyOTEyLDEzIEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSA0OToKKyAgY2FzZSA1MDoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAKICAgICBicmVhazsKIAot
ICBjYXNlIDUwOgorICBjYXNlIDUxOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRCaW5hcnlNYXRoQm9vbGVhblJlc3VsdChFT3BM
ZXNzVGhhbiwgKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWzBdLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTFdKSk7CkBAIC0yNzU5LDcgKzI5MjYsNyBA
QCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgNTE6CisgIGNhc2UgNTI6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFk
ZEJpbmFyeU1hdGhCb29sZWFuUmVzdWx0KEVPcEdyZWF0ZXJUaGFuLCAoeXl2c3BbLTJdLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5
eWxzcFstMV0pKTsKQEAgLTI3NjcsNyArMjkzNCw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA1MjoKKyAgY2FzZSA1MzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQmluYXJ5TWF0aEJvb2xlYW5SZXN1bHQo
RU9wTGVzc1RoYW5FcXVhbCwgKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5
dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTFdKSk7CkBAIC0yNzc1LDcg
KzI5NDIsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgNTM6CisgIGNhc2Ug
NTQ6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNv
bnRleHQtPmFkZEJpbmFyeU1hdGhCb29sZWFuUmVzdWx0KEVPcEdyZWF0ZXJUaGFuRXF1YWwsICh5
eXZzcFstMl0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJt
VHlwZWROb2RlKSwgKHl5bHNwWy0xXSkpOwpAQCAtMjc4MywxMyArMjk1MCwxMyBAQCB5eXJlZHVj
ZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgNTQ6CisgIGNhc2UgNTU6CiAKICAgICB7ICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1NToKKyAgY2FzZSA1NjoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+YWRkQmlu
YXJ5TWF0aEJvb2xlYW5SZXN1bHQoRU9wRXF1YWwsICh5eXZzcFstMl0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0xXSkp
OwpAQCAtMjc5Nyw3ICsyOTY0LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNl
IDU2OgorICBjYXNlIDU3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5
cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRCaW5hcnlNYXRoQm9vbGVhblJlc3VsdChFT3BOb3RFcXVh
bCwgKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWzBdLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTFdKSk7CkBAIC0yODA1LDEzICsyOTcyLDEzIEBAIHl5
cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA1NzoKKyAgY2FzZSA1ODoKIAogICAgIHsg
KHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDU4OgorICBjYXNlIDU5OgogCiAg
ICAgewogICAgICAgICBFUzNfT1JfTkVXRVIoIiYiLCAoeXlsc3BbLTFdKSwgImJpdC13aXNlIG9w
ZXJhdG9yIik7CkBAIC0yODIwLDEzICsyOTg3LDEzIEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7
CiAKLSAgY2FzZSA1OToKKyAgY2FzZSA2MDoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1U
eXBlZE5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAKICAgICBi
cmVhazsKIAotICBjYXNlIDYwOgorICBjYXNlIDYxOgogCiAgICAgewogICAgICAgICBFUzNfT1Jf
TkVXRVIoIl4iLCAoeXlsc3BbLTFdKSwgImJpdC13aXNlIG9wZXJhdG9yIik7CkBAIC0yODM1LDEz
ICszMDAyLDEzIEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA2MToKKyAgY2Fz
ZSA2MjoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWzBd
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDYyOgor
ICBjYXNlIDYzOgogCiAgICAgewogICAgICAgICBFUzNfT1JfTkVXRVIoInwiLCAoeXlsc3BbLTFd
KSwgImJpdC13aXNlIG9wZXJhdG9yIik7CkBAIC0yODUwLDEzICszMDE3LDEzIEBAIHl5cmVkdWNl
OgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA2MzoKKyAgY2FzZSA2NDoKIAogICAgIHsgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDY0OgorICBjYXNlIDY1OgogCiAgICAgewog
ICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSBjb250ZXh0LT5hZGRCaW5h
cnlNYXRoQm9vbGVhblJlc3VsdChFT3BMb2dpY2FsQW5kLCAoeXl2c3BbLTJdLmludGVybS5pbnRl
cm1UeXBlZE5vZGUpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFst
MV0pKTsKQEAgLTI4NjQsMTMgKzMwMzEsMTMgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAot
ICBjYXNlIDY1OgorICBjYXNlIDY2OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7IH0KIAogICAgIGJyZWFr
OwogCi0gIGNhc2UgNjY6CisgIGNhc2UgNjc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZEJpbmFyeU1hdGhCb29sZWFuUmVzdWx0
KEVPcExvZ2ljYWxYb3IsICh5eXZzcFstMl0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZz
cFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0xXSkpOwpAQCAtMjg3OCwxMyAr
MzA0NSwxMyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgNjc6CisgIGNhc2Ug
Njg6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFswXS5p
bnRlcm0uaW50ZXJtVHlwZWROb2RlKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA2ODoKKyAg
Y2FzZSA2OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
ID0gY29udGV4dC0+YWRkQmluYXJ5TWF0aEJvb2xlYW5SZXN1bHQoRU9wTG9naWNhbE9yLCAoeXl2
c3BbLTJdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5
cGVkTm9kZSksICh5eWxzcFstMV0pKTsKQEAgLTI4OTIsMTMgKzMwNTksMTMgQEAgeXlyZWR1Y2U6
CiAKICAgICBicmVhazsKIAotICBjYXNlIDY5OgorICBjYXNlIDcwOgogCiAgICAgeyAoeXl2YWwu
aW50ZXJtLmludGVybVR5cGVkTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgNzA6CisgIGNhc2UgNzE6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IGNvbnRleHQtPmFkZFRlcm5h
cnlTZWxlY3Rpb24oKHl5dnNwWy00XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWy0y
XS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpLCAoeXlsc3BbLTNdKSk7CkBAIC0yOTA2LDEzICszMDczLDEzIEBAIHl5cmVkdWNlOgogCiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSA3MToKKyAgY2FzZSA3MjoKIAogICAgIHsgKHl5dmFsLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpOyB9
CiAKICAgICBicmVhazsKIAotICBjYXNlIDcyOgorICBjYXNlIDczOgogCiAgICAgewogICAgICAg
ICBjb250ZXh0LT5jaGVja0NhbkJlTFZhbHVlKCh5eWxzcFstMV0pLCAiYXNzaWduIiwgKHl5dnNw
Wy0yXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7CkBAIC0yOTIxLDI1ICszMDg4LDI1IEBAIHl5
cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3MzoKKyAgY2FzZSA3NDoKIAogICAgIHsg
KHl5dmFsLmludGVybSkub3AgPSBFT3BBc3NpZ247IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2Ug
NzQ6CisgIGNhc2UgNzU6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0pLm9wID0gRU9wTXVsQXNzaWdu
OyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDc1OgorICBjYXNlIDc2OgogCiAgICAgeyAoeXl2
YWwuaW50ZXJtKS5vcCA9IEVPcERpdkFzc2lnbjsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA3
NjoKKyAgY2FzZSA3NzoKIAogICAgIHsKICAgICAgICAgRVMzX09SX05FV0VSKCIlPSIsICh5eWxv
YyksICJpbnRlZ2VyIG1vZHVsdXMgb3BlcmF0b3IiKTsKQEAgLTI5NDgsMTkgKzMxMTUsMTkgQEAg
eXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDc3OgorICBjYXNlIDc4OgogCiAgICAg
eyAoeXl2YWwuaW50ZXJtKS5vcCA9IEVPcEFkZEFzc2lnbjsgfQogCiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSA3ODoKKyAgY2FzZSA3OToKIAogICAgIHsgKHl5dmFsLmludGVybSkub3AgPSBFT3BTdWJB
c3NpZ247IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgNzk6CisgIGNhc2UgODA6CiAKICAgICB7
CiAgICAgICAgIEVTM19PUl9ORVdFUigiPDw9IiwgKHl5bG9jKSwgImJpdC13aXNlIG9wZXJhdG9y
Iik7CkBAIC0yOTY5LDcgKzMxMzYsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNh
c2UgODA6CisgIGNhc2UgODE6CiAKICAgICB7CiAgICAgICAgIEVTM19PUl9ORVdFUigiPj49Iiwg
KHl5bG9jKSwgImJpdC13aXNlIG9wZXJhdG9yIik7CkBAIC0yOTc4LDcgKzMxNDUsNyBAQCB5eXJl
ZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgODE6CisgIGNhc2UgODI6CiAKICAgICB7CiAg
ICAgICAgIEVTM19PUl9ORVdFUigiJj0iLCAoeXlsb2MpLCAiYml0LXdpc2Ugb3BlcmF0b3IiKTsK
QEAgLTI5ODcsNyArMzE1NCw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4
MjoKKyAgY2FzZSA4MzoKIAogICAgIHsKICAgICAgICAgRVMzX09SX05FV0VSKCJePSIsICh5eWxv
YyksICJiaXQtd2lzZSBvcGVyYXRvciIpOwpAQCAtMjk5Niw3ICszMTYzLDcgQEAgeXlyZWR1Y2U6
CiAKICAgICBicmVhazsKIAotICBjYXNlIDgzOgorICBjYXNlIDg0OgogCiAgICAgewogICAgICAg
ICBFUzNfT1JfTkVXRVIoInw9IiwgKHl5bG9jKSwgImJpdC13aXNlIG9wZXJhdG9yIik7CkBAIC0z
MDA1LDcgKzMxNzIsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgODQ6Cisg
IGNhc2UgODU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2Rl
KSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKQEAgLTMwMTMsNyArMzE4MCw3
IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA4NToKKyAgY2FzZSA4NjoKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gY29udGV4dC0+
YWRkQ29tbWEoKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dnNwWzBdLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3BbLTFdKSk7CkBAIC0zMDIxLDcgKzMxODgsNyBA
QCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgODY6CisgIGNhc2UgODc6CiAKICAg
ICB7CiAgICAgICAgIGNvbnRleHQtPmNoZWNrSXNDb25zdCgoeXl2c3BbMF0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkpOwpAQCAtMzAzMCw3ICszMTk3LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVh
azsKIAotICBjYXNlIDg3OgorICBjYXNlIDg4OgogCiAgICAgewogICAgICAgICBjb250ZXh0LT5l
bnRlclN0cnVjdERlY2xhcmF0aW9uKCh5eWxzcFstMV0pLCAqKHl5dnNwWy0xXS5sZXgpLnN0cmlu
Zyk7CkBAIC0zMDM5LDcgKzMyMDYsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNh
c2UgODg6CisgIGNhc2UgODk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSBjb250ZXh0LT5hZGRGdW5jdGlvblByb3RvdHlwZURlY2xhcmF0aW9uKCooKHl5dnNw
Wy0xXS5pbnRlcm0pLmZ1bmN0aW9uKSwgKHl5bHNwWy0xXSkpOwpAQCAtMzA0NywxOCArMzIxNCwx
NSBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgODk6CisgIGNhc2UgOTA6CiAK
ICAgICB7Ci0gICAgICAgIFRJbnRlcm1BZ2dyZWdhdGUgKmFnZ05vZGUgPSAoeXl2c3BbLTFdLmlu
dGVybSkuaW50ZXJtQWdncmVnYXRlOwotICAgICAgICBpZiAoYWdnTm9kZSAmJiBhZ2dOb2RlLT5n
ZXRPcCgpID09IEVPcE51bGwpCi0gICAgICAgICAgICBhZ2dOb2RlLT5zZXRPcChFT3BEZWNsYXJh
dGlvbik7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBhZ2dOb2RlOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWy0xXS5pbnRlcm0pLmludGVy
bURlY2xhcmF0aW9uOwogICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgOTA6CisgIGNhc2Ug
OTE6CiAKICAgICB7CiAgICAgICAgIGlmICgoKHl5dnNwWy0yXS5pbnRlcm0ucHJlY2lzaW9uKSA9
PSBFYnBIaWdoKSAmJiAoY29udGV4dC0+Z2V0U2hhZGVyVHlwZSgpID09IEdMX0ZSQUdNRU5UX1NI
QURFUikgJiYgIWNvbnRleHQtPmdldEZyYWdtZW50UHJlY2lzaW9uSGlnaCgpKSB7CkBAIC0zMDcy
LDcgKzMyMzYsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgOTE6CisgIGNh
c2UgOTI6CiAKICAgICB7CiAgICAgICAgIEVTM19PUl9ORVdFUigoeXl2c3BbLTNdLmxleCkuc3Ry
aW5nLT5jX3N0cigpLCAoeXlsc3BbLTRdKSwgImludGVyZmFjZSBibG9ja3MiKTsKQEAgLTMwODEs
NyArMzI0NSw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5MjoKKyAgY2Fz
ZSA5MzoKIAogICAgIHsKICAgICAgICAgRVMzX09SX05FV0VSKCh5eXZzcFstNF0ubGV4KS5zdHJp
bmctPmNfc3RyKCksICh5eWxzcFstNV0pLCAiaW50ZXJmYWNlIGJsb2NrcyIpOwpAQCAtMzA5MCw3
ICszMjU0LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDkzOgorICBjYXNl
IDk0OgogCiAgICAgewogICAgICAgICBFUzNfT1JfTkVXRVIoKHl5dnNwWy03XS5sZXgpLnN0cmlu
Zy0+Y19zdHIoKSwgKHl5bHNwWy04XSksICJpbnRlcmZhY2UgYmxvY2tzIik7CkBAIC0zMDk5LDcg
KzMyNjMsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgOTQ6CisgIGNhc2Ug
OTU6CiAKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnBhcnNlR2xvYmFsTGF5b3V0UXVhbGlmaWVy
KCooeXl2c3BbLTFdLmludGVybS50eXBlUXVhbGlmaWVyQnVpbGRlcikpOwpAQCAtMzEwOCw3ICsz
MjcyLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDk1OgorICBjYXNlIDk2
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+
cGFyc2VJbnZhcmlhbnREZWNsYXJhdGlvbigqKHl5dnNwWy0yXS5pbnRlcm0udHlwZVF1YWxpZmll
ckJ1aWxkZXIpLCAoeXlsc3BbLTFdKSwgKHl5dnNwWy0xXS5sZXgpLnN0cmluZywgKHl5dnNwWy0x
XS5sZXgpLnN5bWJvbCk7CkBAIC0zMTE2LDcgKzMyODAsNyBAQCB5eXJlZHVjZToKIAogICAgIGJy
ZWFrOwogCi0gIGNhc2UgOTY6CisgIGNhc2UgOTc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0pLmZ1bmN0aW9uID0gY29udGV4dC0+cGFyc2VGdW5jdGlvbkRlY2xhcmF0b3IoKHl5bHNw
WzBdKSwgKHl5dnNwWy0xXS5pbnRlcm0uZnVuY3Rpb24pKTsKQEAgLTMxMjUsNyArMzI4OSw3IEBA
IHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5NzoKKyAgY2FzZSA5ODoKIAogICAg
IHsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSAoeXl2c3BbMF0uaW50ZXJtLmZ1
bmN0aW9uKTsKQEAgLTMxMzMsNyArMzI5Nyw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAK
LSAgY2FzZSA5ODoKKyAgY2FzZSA5OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5m
dW5jdGlvbikgPSAoeXl2c3BbMF0uaW50ZXJtLmZ1bmN0aW9uKTsKQEAgLTMxNDEsNyArMzMwNSw3
IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSA5OToKKyAgY2FzZSAxMDA6CiAK
ICAgICB7CiAgICAgICAgIC8vIEFkZCB0aGUgcGFyYW1ldGVyCkBAIC0zMTU0LDcgKzMzMTgsNyBA
QCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTAwOgorICBjYXNlIDEwMToKIAog
ICAgIHsKICAgICAgICAgLy8KQEAgLTMxNzYsNyArMzM0MCw3IEBAIHl5cmVkdWNlOgogCiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxMDE6CisgIGNhc2UgMTAyOgogCiAgICAgewogICAgICAgICAoeXl2
YWwuaW50ZXJtLmZ1bmN0aW9uKSA9IGNvbnRleHQtPnBhcnNlRnVuY3Rpb25IZWFkZXIoKHl5dnNw
Wy0yXS5pbnRlcm0udHlwZSksICh5eXZzcFstMV0ubGV4KS5zdHJpbmcsICh5eWxzcFstMV0pKTsK
QEAgLTMxODcsNyArMzM1MSw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
MDI6CisgIGNhc2UgMTAzOgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWy0xXS5pbnRlcm0u
dHlwZSkuZ2V0QmFzaWNUeXBlKCkgPT0gRWJ0Vm9pZCkgewpAQCAtMzIwMCw3ICszMzY0LDcgQEAg
eXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDEwMzoKKyAgY2FzZSAxMDQ6CiAKICAg
ICB7CiAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgY2FuIG1ha2UgYW4gYXJyYXkgb3V0IG9mIHRo
aXMgdHlwZQpAQCAtMzIxOSw3ICszMzgzLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAot
ICBjYXNlIDEwNDoKKyAgY2FzZSAxMDU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0p
ID0gKHl5dnNwWzBdLmludGVybSk7CkBAIC0zMjI4LDcgKzMzOTIsNyBAQCB5eXJlZHVjZToKIAog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTA1OgorICBjYXNlIDEwNjoKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybSkgPSAoeXl2c3BbMF0uaW50ZXJtKTsKQEAgLTMyMzcsNyArMzQwMSw3IEBA
IHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMDY6CisgIGNhc2UgMTA3OgogCiAg
ICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZzcFswXS5pbnRlcm0pOwpAQCAtMzI0
Niw3ICszNDEwLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDEwNzoKKyAg
Y2FzZSAxMDg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNwWzBdLmlu
dGVybSk7CkBAIC0zMjU1LDcgKzM0MTksNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTA4OgorICBjYXNlIDEwOToKIAogICAgIHsKICAgICAgICAgVFBhcmFtZXRlciBwYXJh
bSA9IHsgMCwgbmV3IFRUeXBlKCh5eXZzcFswXS5pbnRlcm0udHlwZSkpIH07CkBAIC0zMjY0LDcg
KzM0MjgsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTA5OgorICBjYXNl
IDExMDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbMF0uaW50ZXJt
KTsKQEAgLTMyNzIsMTI1ICszNDM2LDExOSBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTEwOgorICBjYXNlIDExMToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkg
PSAoeXl2c3BbLTJdLmludGVybSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3Jl
Z2F0ZSA9IGNvbnRleHQtPnBhcnNlRGVjbGFyYXRvcigoeXl2YWwuaW50ZXJtKS50eXBlLCAoeXl2
c3BbLTJdLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCAoeXlsc3BbMF0pLCAqKHl5dnNwWzBdLmxl
eCkuc3RyaW5nKTsKKyAgICAgICAgY29udGV4dC0+cGFyc2VEZWNsYXJhdG9yKCh5eXZhbC5pbnRl
cm0pLnR5cGUsICh5eWxzcFswXSksICooeXl2c3BbMF0ubGV4KS5zdHJpbmcsICh5eXZhbC5pbnRl
cm0pLmludGVybURlY2xhcmF0aW9uKTsKICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDEx
MToKKyAgY2FzZSAxMTI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0pID0gKHl5dnNw
Wy01XS5pbnRlcm0pOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBj
b250ZXh0LT5wYXJzZUFycmF5RGVjbGFyYXRvcigoeXl2YWwuaW50ZXJtKS50eXBlLCAoeXl2c3Bb
LTVdLmludGVybSkuaW50ZXJtQWdncmVnYXRlLCAoeXlsc3BbLTNdKSwgKih5eXZzcFstM10ubGV4
KS5zdHJpbmcsICh5eWxzcFstMl0pLCAoeXl2c3BbLTFdLmludGVybS5pbnRlcm1UeXBlZE5vZGUp
KTsKKyAgICAgICAgY29udGV4dC0+cGFyc2VBcnJheURlY2xhcmF0b3IoKHl5dmFsLmludGVybSku
dHlwZSwgKHl5bHNwWy0zXSksICooeXl2c3BbLTNdLmxleCkuc3RyaW5nLCAoeXlsc3BbLTJdKSwg
KHl5dnNwWy0xXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dmFsLmludGVybSkuaW50ZXJt
RGVjbGFyYXRpb24pOwogICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTEyOgorICBjYXNl
IDExMzoKIAogICAgIHsKICAgICAgICAgRVMzX09SX05FV0VSKCJbXSIsICh5eWxzcFstNF0pLCAi
aW1wbGljaXRseSBzaXplZCBhcnJheSIpOwogICAgICAgICAoeXl2YWwuaW50ZXJtKSA9ICh5eXZz
cFstNl0uaW50ZXJtKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0g
Y29udGV4dC0+cGFyc2VBcnJheUluaXREZWNsYXJhdG9yKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5
eXZzcFstNl0uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsICh5eWxzcFstNF0pLCAqKHl5dnNwWy00
XS5sZXgpLnN0cmluZywgKHl5bHNwWy0zXSksIG51bGxwdHIsICh5eWxzcFstMV0pLCAoeXl2c3Bb
MF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOworICAgICAgICBjb250ZXh0LT5wYXJzZUFycmF5
SW5pdERlY2xhcmF0b3IoKHl5dmFsLmludGVybSkudHlwZSwgKHl5bHNwWy00XSksICooeXl2c3Bb
LTRdLmxleCkuc3RyaW5nLCAoeXlsc3BbLTNdKSwgbnVsbHB0ciwgKHl5bHNwWy0xXSksICh5eXZz
cFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dmFsLmludGVybSkuaW50ZXJtRGVjbGFy
YXRpb24pOwogICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTEzOgorICBjYXNlIDExNDoK
IAogICAgIHsKICAgICAgICAgRVMzX09SX05FV0VSKCI9IiwgKHl5bHNwWy0xXSksICJmaXJzdC1j
bGFzcyBhcnJheXMgKGFycmF5IGluaXRpYWxpemVyKSIpOwogICAgICAgICAoeXl2YWwuaW50ZXJt
KSA9ICh5eXZzcFstN10uaW50ZXJtKTsKLSAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdn
cmVnYXRlID0gY29udGV4dC0+cGFyc2VBcnJheUluaXREZWNsYXJhdG9yKCh5eXZhbC5pbnRlcm0p
LnR5cGUsICh5eXZzcFstN10uaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUsICh5eWxzcFstNV0pLCAq
KHl5dnNwWy01XS5sZXgpLnN0cmluZywgKHl5bHNwWy00XSksICh5eXZzcFstM10uaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSksICh5eWxzcFstMV0pLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkpOworICAgICAgICBjb250ZXh0LT5wYXJzZUFycmF5SW5pdERlY2xhcmF0b3IoKHl5dmFs
LmludGVybSkudHlwZSwgKHl5bHNwWy01XSksICooeXl2c3BbLTVdLmxleCkuc3RyaW5nLCAoeXls
c3BbLTRdKSwgKHl5dnNwWy0zXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5bHNwWy0xXSks
ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwgKHl5dmFsLmludGVybSkuaW50ZXJt
RGVjbGFyYXRpb24pOwogICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTE0OgorICBjYXNl
IDExNToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybSkgPSAoeXl2c3BbLTRdLmludGVy
bSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBh
cnNlSW5pdERlY2xhcmF0b3IoKHl5dmFsLmludGVybSkudHlwZSwgKHl5dnNwWy00XS5pbnRlcm0p
LmludGVybUFnZ3JlZ2F0ZSwgKHl5bHNwWy0yXSksICooeXl2c3BbLTJdLmxleCkuc3RyaW5nLCAo
eXlsc3BbLTFdKSwgKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKKyAgICAgICAg
Y29udGV4dC0+cGFyc2VJbml0RGVjbGFyYXRvcigoeXl2YWwuaW50ZXJtKS50eXBlLCAoeXlsc3Bb
LTJdKSwgKih5eXZzcFstMl0ubGV4KS5zdHJpbmcsICh5eWxzcFstMV0pLCAoeXl2c3BbMF0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSksICh5eXZhbC5pbnRlcm0pLmludGVybURlY2xhcmF0aW9uKTsK
ICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDExNToKKyAgY2FzZSAxMTY6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbMF0uaW50ZXJtLnR5cGUpOwot
ICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZVNp
bmdsZURlY2xhcmF0aW9uKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5eWxzcFswXSksICIiKTsKKyAg
ICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtRGVjbGFyYXRpb24gPSBjb250ZXh0LT5wYXJzZVNp
bmdsZURlY2xhcmF0aW9uKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5eWxzcFswXSksICIiKTsKICAg
ICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDExNjoKKyAgY2FzZSAxMTc6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUgPSAoeXl2c3BbLTFdLmludGVybS50eXBlKTsKLSAg
ICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtQWdncmVnYXRlID0gY29udGV4dC0+cGFyc2VTaW5n
bGVEZWNsYXJhdGlvbigoeXl2YWwuaW50ZXJtKS50eXBlLCAoeXlsc3BbMF0pLCAqKHl5dnNwWzBd
LmxleCkuc3RyaW5nKTsKKyAgICAgICAgKHl5dmFsLmludGVybSkuaW50ZXJtRGVjbGFyYXRpb24g
PSBjb250ZXh0LT5wYXJzZVNpbmdsZURlY2xhcmF0aW9uKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5
eWxzcFswXSksICooeXl2c3BbMF0ubGV4KS5zdHJpbmcpOwogICAgIH0KIAogICAgIGJyZWFrOwog
Ci0gIGNhc2UgMTE3OgorICBjYXNlIDExODoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVy
bSkudHlwZSA9ICh5eXZzcFstNF0uaW50ZXJtLnR5cGUpOwotICAgICAgICAoeXl2YWwuaW50ZXJt
KS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5wYXJzZVNpbmdsZUFycmF5RGVjbGFyYXRpb24o
KHl5dmFsLmludGVybSkudHlwZSwgKHl5bHNwWy0zXSksICooeXl2c3BbLTNdLmxleCkuc3RyaW5n
LCAoeXlsc3BbLTJdKSwgKHl5dnNwWy0xXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0pLmludGVybURlY2xhcmF0aW9uID0gY29udGV4dC0+cGFyc2VTaW5n
bGVBcnJheURlY2xhcmF0aW9uKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5eWxzcFstM10pLCAqKHl5
dnNwWy0zXS5sZXgpLnN0cmluZywgKHl5bHNwWy0yXSksICh5eXZzcFstMV0uaW50ZXJtLmludGVy
bVR5cGVkTm9kZSkpOwogICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTE4OgorICBjYXNl
IDExOToKIAogICAgIHsKICAgICAgICAgRVMzX09SX05FV0VSKCJbXSIsICh5eWxzcFstM10pLCAi
aW1wbGljaXRseSBzaXplZCBhcnJheSIpOwogICAgICAgICAoeXl2YWwuaW50ZXJtKS50eXBlID0g
KHl5dnNwWy01XS5pbnRlcm0udHlwZSk7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFn
Z3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlU2luZ2xlQXJyYXlJbml0RGVjbGFyYXRpb24oKHl5dmFs
LmludGVybSkudHlwZSwgKHl5bHNwWy00XSksICooeXl2c3BbLTRdLmxleCkuc3RyaW5nLCAoeXls
c3BbLTNdKSwgbnVsbHB0ciwgKHl5bHNwWy0xXSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybURlY2xhcmF0aW9uID0gY29u
dGV4dC0+cGFyc2VTaW5nbGVBcnJheUluaXREZWNsYXJhdGlvbigoeXl2YWwuaW50ZXJtKS50eXBl
LCAoeXlsc3BbLTRdKSwgKih5eXZzcFstNF0ubGV4KS5zdHJpbmcsICh5eWxzcFstM10pLCBudWxs
cHRyLCAoeXlsc3BbLTFdKSwgKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKICAg
ICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDExOToKKyAgY2FzZSAxMjA6CiAKICAgICB7CiAg
ICAgICAgIEVTM19PUl9ORVdFUigiPSIsICh5eWxzcFstMV0pLCAiZmlyc3QtY2xhc3MgYXJyYXlz
IChhcnJheSBpbml0aWFsaXplcikiKTsKICAgICAgICAgKHl5dmFsLmludGVybSkudHlwZSA9ICh5
eXZzcFstNl0uaW50ZXJtLnR5cGUpOwotICAgICAgICAoeXl2YWwuaW50ZXJtKS5pbnRlcm1BZ2dy
ZWdhdGUgPSBjb250ZXh0LT5wYXJzZVNpbmdsZUFycmF5SW5pdERlY2xhcmF0aW9uKCh5eXZhbC5p
bnRlcm0pLnR5cGUsICh5eWxzcFstNV0pLCAqKHl5dnNwWy01XS5sZXgpLnN0cmluZywgKHl5bHNw
Wy00XSksICh5eXZzcFstM10uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICh5eWxzcFstMV0pLCAo
eXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOworICAgICAgICAoeXl2YWwuaW50ZXJt
KS5pbnRlcm1EZWNsYXJhdGlvbiA9IGNvbnRleHQtPnBhcnNlU2luZ2xlQXJyYXlJbml0RGVjbGFy
YXRpb24oKHl5dmFsLmludGVybSkudHlwZSwgKHl5bHNwWy01XSksICooeXl2c3BbLTVdLmxleCku
c3RyaW5nLCAoeXlsc3BbLTRdKSwgKHl5dnNwWy0zXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSwg
KHl5bHNwWy0xXSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7CiAgICAgfQog
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMjA6CisgIGNhc2UgMTIxOgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtKS50eXBlID0gKHl5dnNwWy0zXS5pbnRlcm0udHlwZSk7Ci0gICAgICAg
ICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPnBhcnNlU2luZ2xlSW5p
dERlY2xhcmF0aW9uKCh5eXZhbC5pbnRlcm0pLnR5cGUsICh5eWxzcFstMl0pLCAqKHl5dnNwWy0y
XS5sZXgpLnN0cmluZywgKHl5bHNwWy0xXSksICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKSk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybURlY2xhcmF0aW9uID0gY29udGV4
dC0+cGFyc2VTaW5nbGVJbml0RGVjbGFyYXRpb24oKHl5dmFsLmludGVybSkudHlwZSwgKHl5bHNw
Wy0yXSksICooeXl2c3BbLTJdLmxleCkuc3RyaW5nLCAoeXlsc3BbLTFdKSwgKHl5dnNwWzBdLmlu
dGVybS5pbnRlcm1UeXBlZE5vZGUpKTsKICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDEy
MToKKyAgY2FzZSAxMjI6CiAKICAgICB7CisgICAgICAgIGNvbnRleHQtPmFkZEZ1bGx5U3BlY2lm
aWVkVHlwZSgmKHl5dnNwWzBdLmludGVybS50eXBlKSk7CiAgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZSkgPSAoeXl2c3BbMF0uaW50ZXJtLnR5cGUpOwotCi0gICAgICAgIGlmICgoeXl2c3BbMF0u
aW50ZXJtLnR5cGUpLmFycmF5KSB7Ci0gICAgICAgICAgICBFUzNfT1JfTkVXRVIoIltdIiwgKHl5
bHNwWzBdKSwgImZpcnN0LWNsYXNzLWFycmF5Iik7Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+
Z2V0U2hhZGVyVmVyc2lvbigpICE9IDMwMCkgewotICAgICAgICAgICAgICAgICh5eXZzcFswXS5p
bnRlcm0udHlwZSkuY2xlYXJBcnJheW5lc3MoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQog
ICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTIyOgorICBjYXNlIDEyMzoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS50eXBlKSA9IGNvbnRleHQtPmFkZEZ1bGx5U3BlY2lmaWVk
VHlwZSgqKHl5dnNwWy0xXS5pbnRlcm0udHlwZVF1YWxpZmllckJ1aWxkZXIpLCAoeXl2c3BbMF0u
aW50ZXJtLnR5cGUpKTsKQEAgLTMzOTgsNyArMzU1Niw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxMjM6CisgIGNhc2UgMTI0OgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtLnF1YWxpZmllcikgPSBFdnFTbW9vdGg7CkBAIC0zNDA2LDcgKzM1NjQsNyBAQCB5eXJl
ZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTI0OgorICBjYXNlIDEyNToKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxRmxhdDsKQEAgLTM0MTQsNyAr
MzU3Miw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMjU6CisgIGNhc2Ug
MTI2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVRdWFsaWZpZXJCdWlsZGVy
KSA9IGNvbnRleHQtPmNyZWF0ZVR5cGVRdWFsaWZpZXJCdWlsZGVyKCh5eWxzcFswXSkpOwpAQCAt
MzQyMyw3ICszNTgxLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDEyNjoK
KyAgY2FzZSAxMjc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVF1YWxpZmll
ckJ1aWxkZXIpID0gKHl5dnNwWy0xXS5pbnRlcm0udHlwZVF1YWxpZmllckJ1aWxkZXIpOwpAQCAt
MzQzMiw3ICszNTkwLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDEyNzoK
KyAgY2FzZSAxMjg6CiAKICAgICB7CiAgICAgICAgIC8vIGVtcHR5CkBAIC0zNDQwLDE5ICszNTk4
LDE2IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxMjg6CisgIGNhc2UgMTI5
OgogCiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPmRlY2xhcmluZ0Z1bmN0aW9uKCkgJiYg
KHl5dnNwWzBdLmludGVybS5xdWFsaWZpZXIpICE9IEV2cUNvbnN0ICYmICFjb250ZXh0LT5zeW1i
b2xUYWJsZS5hdEdsb2JhbExldmVsKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmVycm9yKCh5eWxzcFswXSksICJMb2NhbCB2YXJpYWJsZXMgY2FuIG9ubHkgdXNlIHRoZSBjb25z
dCBzdG9yYWdlIHF1YWxpZmllci4iLCBnZXRRdWFsaWZpZXJTdHJpbmcoKHl5dnNwWzBdLmludGVy
bS5xdWFsaWZpZXIpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZp
ZXJXcmFwcGVyKSA9IG5ldyBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIoKHl5dnNwWzBdLmludGVy
bS5xdWFsaWZpZXIpLCAoeXlsc3BbMF0pKTsKKyAgICAgICAgY29udGV4dC0+Y2hlY2tMb2NhbFZh
cmlhYmxlQ29uc3RTdG9yYWdlUXVhbGlmaWVyKCooeXl2c3BbMF0uaW50ZXJtLnF1YWxpZmllcldy
YXBwZXIpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXJXcmFwcGVyKSA9ICh5eXZz
cFswXS5pbnRlcm0ucXVhbGlmaWVyV3JhcHBlcik7CiAgICAgfQogCiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxMjk6CisgIGNhc2UgMTMwOgogCiAgICAgewogICAgICAgICBjb250ZXh0LT5jaGVja0lz
QXRHbG9iYWxMZXZlbCgoeXlsc3BbMF0pLCAibGF5b3V0Iik7CkBAIC0zNDYxLDcgKzM2MTYsNyBA
QCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTMwOgorICBjYXNlIDEzMToKIAog
ICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXJXcmFwcGVyKSA9IG5ldyBUUHJl
Y2lzaW9uUXVhbGlmaWVyV3JhcHBlcigoeXl2c3BbMF0uaW50ZXJtLnByZWNpc2lvbiksICh5eWxz
cFswXSkpOwpAQCAtMzQ2OSw3ICszNjI0LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAot
ICBjYXNlIDEzMToKKyAgY2FzZSAxMzI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0u
cXVhbGlmaWVyV3JhcHBlcikgPSBuZXcgVEludGVycG9sYXRpb25RdWFsaWZpZXJXcmFwcGVyKCh5
eXZzcFswXS5pbnRlcm0ucXVhbGlmaWVyKSwgKHl5bHNwWzBdKSk7CkBAIC0zNDc3LDcgKzM2MzIs
NyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTMyOgorICBjYXNlIDEzMzoK
IAogICAgIHsKICAgICAgICAgY29udGV4dC0+Y2hlY2tJc0F0R2xvYmFsTGV2ZWwoKHl5bHNwWzBd
KSwgImludmFyaWFudCIpOwpAQCAtMzQ4Niw2OSArMzY0MSw2OSBAQCB5eXJlZHVjZToKIAogICAg
IGJyZWFrOwogCi0gIGNhc2UgMTMzOgorICBjYXNlIDEzNDoKIAogICAgIHsKICAgICAgICAgVkVS
VEVYX09OTFkoImF0dHJpYnV0ZSIsICh5eWxzcFswXSkpOwogICAgICAgICBFUzJfT05MWSgiYXR0
cmlidXRlIiwgKHl5bHNwWzBdKSk7CiAgICAgICAgIGNvbnRleHQtPmNoZWNrSXNBdEdsb2JhbExl
dmVsKCh5eWxzcFswXSksICJhdHRyaWJ1dGUiKTsKLSAgICAgICAgKHl5dmFsLmludGVybS5xdWFs
aWZpZXIpID0gRXZxQXR0cmlidXRlOworICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcldy
YXBwZXIpID0gbmV3IFRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlcihFdnFBdHRyaWJ1dGUsICh5eWxz
cFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM0OgorICBjYXNlIDEzNToK
IAogICAgIHsKICAgICAgICAgRVMyX09OTFkoInZhcnlpbmciLCAoeXlsc3BbMF0pKTsKICAgICAg
ICAgY29udGV4dC0+Y2hlY2tJc0F0R2xvYmFsTGV2ZWwoKHl5bHNwWzBdKSwgInZhcnlpbmciKTsK
ICAgICAgICAgaWYgKGNvbnRleHQtPmdldFNoYWRlclR5cGUoKSA9PSBHTF9WRVJURVhfU0hBREVS
KQotICAgICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxVmFyeWluZ091dDsK
KyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyV3JhcHBlcikgPSBuZXcgVFN0b3Jh
Z2VRdWFsaWZpZXJXcmFwcGVyKEV2cVZhcnlpbmdPdXQsICh5eWxzcFswXSkpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBFdnFWYXJ5aW5nSW47
CisgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcldyYXBwZXIpID0gbmV3IFRTdG9y
YWdlUXVhbGlmaWVyV3JhcHBlcihFdnFWYXJ5aW5nSW4sICh5eWxzcFswXSkpOwogICAgIH0KIAog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTM1OgorICBjYXNlIDEzNjoKIAogICAgIHsKLSAgICAgICAg
KHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxQ29uc3Q7CisgICAgICAgICh5eXZhbC5pbnRl
cm0ucXVhbGlmaWVyV3JhcHBlcikgPSBuZXcgVFN0b3JhZ2VRdWFsaWZpZXJXcmFwcGVyKEV2cUNv
bnN0LCAoeXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDEzNjoKKyAg
Y2FzZSAxMzc6CiAKICAgICB7CiAgICAgICAgIGlmIChjb250ZXh0LT5kZWNsYXJpbmdGdW5jdGlv
bigpKQogICAgICAgICB7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikgPSBF
dnFJbjsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyV3JhcHBlcikgPSBuZXcg
VFN0b3JhZ2VRdWFsaWZpZXJXcmFwcGVyKEV2cUluLCAoeXlsc3BbMF0pKTsKICAgICAgICAgfQog
ICAgICAgICBlbHNlIGlmIChjb250ZXh0LT5nZXRTaGFkZXJUeXBlKCkgPT0gR0xfRlJBR01FTlRf
U0hBREVSKQogICAgICAgICB7CiAgICAgICAgICAgICBFUzNfT1JfTkVXRVIoImluIiwgKHl5bHNw
WzBdKSwgInN0b3JhZ2UgcXVhbGlmaWVyIik7Ci0gICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnF1
YWxpZmllcikgPSBFdnFGcmFnbWVudEluOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5xdWFs
aWZpZXJXcmFwcGVyKSA9IG5ldyBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIoRXZxRnJhZ21lbnRJ
biwgKHl5bHNwWzBdKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoY29udGV4dC0+Z2V0
U2hhZGVyVHlwZSgpID09IEdMX1ZFUlRFWF9TSEFERVIpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEVTM19PUl9ORVdFUigiaW4iLCAoeXlsc3BbMF0pLCAic3RvcmFnZSBxdWFsaWZpZXIiKTsKLSAg
ICAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cVZlcnRleEluOworICAgICAg
ICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXJXcmFwcGVyKSA9IG5ldyBUU3RvcmFnZVF1YWxp
ZmllcldyYXBwZXIoRXZxVmVydGV4SW4sICh5eWxzcFswXSkpOwogICAgICAgICB9CiAgICAgICAg
IGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0g
RXZxQ29tcHV0ZUluOworICAgICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXJXcmFwcGVy
KSA9IG5ldyBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIoRXZxQ29tcHV0ZUluLCAoeXlsc3BbMF0p
KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTM3OgorICBjYXNl
IDEzODoKIAogICAgIHsKICAgICAgICAgaWYgKGNvbnRleHQtPmRlY2xhcmluZ0Z1bmN0aW9uKCkp
CiAgICAgICAgIHsKLSAgICAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyKSA9IEV2cU91
dDsKKyAgICAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyV3JhcHBlcikgPSBuZXcgVFN0
b3JhZ2VRdWFsaWZpZXJXcmFwcGVyKEV2cU91dCwgKHl5bHNwWzBdKSk7CiAgICAgICAgIH0KICAg
ICAgICAgZWxzZQogICAgICAgICB7CkBAIC0zNTU2LDM0ICszNzExLDI1IEBAIHl5cmVkdWNlOgog
ICAgICAgICAgICAgTk9OX0NPTVBVVEVfT05MWSgib3V0IiwgKHl5bHNwWzBdKSk7CiAgICAgICAg
ICAgICBpZiAoY29udGV4dC0+Z2V0U2hhZGVyVHlwZSgpID09IEdMX0ZSQUdNRU5UX1NIQURFUikK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcikg
PSBFdnFGcmFnbWVudE91dDsKKyAgICAgICAgICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmll
cldyYXBwZXIpID0gbmV3IFRTdG9yYWdlUXVhbGlmaWVyV3JhcHBlcihFdnFGcmFnbWVudE91dCwg
KHl5bHNwWzBdKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXIpID0gRXZxVmVydGV4
T3V0OworICAgICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyV3JhcHBlcikgPSBu
ZXcgVFN0b3JhZ2VRdWFsaWZpZXJXcmFwcGVyKEV2cVZlcnRleE91dCwgKHl5bHNwWzBdKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDEz
ODoKKyAgY2FzZSAxMzk6CiAKICAgICB7CiAgICAgICAgIGlmICghY29udGV4dC0+ZGVjbGFyaW5n
RnVuY3Rpb24oKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZXJyb3IoKHl5bHNw
WzBdKSwgImludmFsaWQgaW5vdXQgcXVhbGlmaWVyIiwgIidpbm91dCcgY2FuIGJlIG9ubHkgdXNl
ZCB3aXRoIGZ1bmN0aW9uIHBhcmFtZXRlcnMiKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCh5eWxzcFswXSksICJpbnZhbGlkIHF1YWxpZmllcjogY2FuIGJlIG9ubHkgdXNlZCB3aXRoIGZ1
bmN0aW9uIHBhcmFtZXRlcnMiLCAiaW5vdXQiKTsKICAgICAgICAgfQotICAgICAgICAoeXl2YWwu
aW50ZXJtLnF1YWxpZmllcikgPSBFdnFJbk91dDsKLSAgICB9Ci0KLSAgICBicmVhazsKLQotICBj
YXNlIDEzOToKLQotICAgIHsKLSAgICAgICAgRVMzX09SX05FV0VSKCJjZW50cm9pZCIsICh5eWxz
cFswXSksICJzdG9yYWdlIHF1YWxpZmllciIpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxp
ZmllcikgPSBFdnFDZW50cm9pZDsKKyAgICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXJXcmFw
cGVyKSA9IG5ldyBUU3RvcmFnZVF1YWxpZmllcldyYXBwZXIoRXZxSW5PdXQsICh5eWxzcFswXSkp
OwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzU5MSw4ICszNzM3LDggQEAgeXlyZWR1Y2U6CiAg
IGNhc2UgMTQwOgogCiAgICAgewotICAgICAgICBjb250ZXh0LT5jaGVja0lzQXRHbG9iYWxMZXZl
bCgoeXlsc3BbMF0pLCAidW5pZm9ybSIpOwotICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmll
cikgPSBFdnFVbmlmb3JtOworICAgICAgICBFUzNfT1JfTkVXRVIoImNlbnRyb2lkIiwgKHl5bHNw
WzBdKSwgInN0b3JhZ2UgcXVhbGlmaWVyIik7CisgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlm
aWVyV3JhcHBlcikgPSBuZXcgVFN0b3JhZ2VRdWFsaWZpZXJXcmFwcGVyKEV2cUNlbnRyb2lkLCAo
eXlsc3BbMF0pKTsKICAgICB9CiAKICAgICBicmVhazsKQEAgLTM2MDAsMTEgKzM3NDYsOCBAQCB5
eXJlZHVjZToKICAgY2FzZSAxNDE6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkgPSAoeXl2c3BbMF0uaW50ZXJtLnR5cGUpOwotCi0gICAgICAgIGlmICgoeXl2YWwuaW50ZXJt
LnR5cGUpLnByZWNpc2lvbiA9PSBFYnBVbmRlZmluZWQpIHsKLSAgICAgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZSkucHJlY2lzaW9uID0gY29udGV4dC0+c3ltYm9sVGFibGUuZ2V0RGVmYXVsdFBy
ZWNpc2lvbigoeXl2c3BbMF0uaW50ZXJtLnR5cGUpLmdldEJhc2ljVHlwZSgpKTsKLSAgICAgICAg
fQorICAgICAgICBjb250ZXh0LT5jaGVja0lzQXRHbG9iYWxMZXZlbCgoeXlsc3BbMF0pLCAidW5p
Zm9ybSIpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnF1YWxpZmllcldyYXBwZXIpID0gbmV3IFRT
dG9yYWdlUXVhbGlmaWVyV3JhcHBlcihFdnFVbmlmb3JtLCAoeXlsc3BbMF0pKTsKICAgICB9CiAK
ICAgICBicmVhazsKQEAgLTM2MTIsNyArMzc1NSw3IEBAIHl5cmVkdWNlOgogICBjYXNlIDE0MjoK
IAogICAgIHsKLSAgICAgICAgKHl5dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwSGlnaDsKKyAg
ICAgICAgKHl5dmFsLmludGVybS5xdWFsaWZpZXJXcmFwcGVyKSA9IG5ldyBUTWVtb3J5UXVhbGlm
aWVyV3JhcHBlcihFdnFSZWFkT25seSwgKHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7
CkBAIC0zNjIwLDcgKzM3NjMsNyBAQCB5eXJlZHVjZToKICAgY2FzZSAxNDM6CiAKICAgICB7Ci0g
ICAgICAgICh5eXZhbC5pbnRlcm0ucHJlY2lzaW9uKSA9IEVicE1lZGl1bTsKKyAgICAgICAgKHl5
dmFsLmludGVybS5xdWFsaWZpZXJXcmFwcGVyKSA9IG5ldyBUTWVtb3J5UXVhbGlmaWVyV3JhcHBl
cihFdnFXcml0ZU9ubHksICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzYy
OCw3ICszNzcxLDcgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTQ0OgogCiAgICAgewotICAgICAgICAo
eXl2YWwuaW50ZXJtLnByZWNpc2lvbikgPSBFYnBMb3c7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
cXVhbGlmaWVyV3JhcHBlcikgPSBuZXcgVE1lbW9yeVF1YWxpZmllcldyYXBwZXIoRXZxQ29oZXJl
bnQsICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzYzNiw4ICszNzc5LDcg
QEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTQ1OgogCiAgICAgewotICAgICAgICBFUzNfT1JfTkVXRVIo
ImxheW91dCIsICh5eWxzcFstM10pLCAicXVhbGlmaWVyIik7Ci0gICAgICAgICh5eXZhbC5pbnRl
cm0ubGF5b3V0UXVhbGlmaWVyKSA9ICh5eXZzcFstMV0uaW50ZXJtLmxheW91dFF1YWxpZmllcik7
CisgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyV3JhcHBlcikgPSBuZXcgVE1lbW9yeVF1
YWxpZmllcldyYXBwZXIoRXZxUmVzdHJpY3QsICh5eWxzcFswXSkpOwogICAgIH0KIAogICAgIGJy
ZWFrOwpAQCAtMzY0NSw3ICszNzg3LDcgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTQ2OgogCiAgICAg
ewotICAgICAgICAoeXl2YWwuaW50ZXJtLmxheW91dFF1YWxpZmllcikgPSAoeXl2c3BbMF0uaW50
ZXJtLmxheW91dFF1YWxpZmllcik7CisgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyV3Jh
cHBlcikgPSBuZXcgVE1lbW9yeVF1YWxpZmllcldyYXBwZXIoRXZxVm9sYXRpbGUsICh5eWxzcFsw
XSkpOwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzY1Myw3ICszNzk1LDkgQEAgeXlyZWR1Y2U6
CiAgIGNhc2UgMTQ3OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmxheW91dFF1YWxp
ZmllcikgPSBjb250ZXh0LT5qb2luTGF5b3V0UXVhbGlmaWVycygoeXl2c3BbLTJdLmludGVybS5s
YXlvdXRRdWFsaWZpZXIpLCAoeXl2c3BbMF0uaW50ZXJtLmxheW91dFF1YWxpZmllciksICh5eWxz
cFswXSkpOworICAgICAgICBjb250ZXh0LT5jaGVja0lzQXRHbG9iYWxMZXZlbCgoeXlsc3BbMF0p
LCAic2hhcmVkIik7CisgICAgICAgIENPTVBVVEVfT05MWSgic2hhcmVkIiwgKHl5bHNwWzBdKSk7
CisgICAgICAgICh5eXZhbC5pbnRlcm0ucXVhbGlmaWVyV3JhcHBlcikgPSBuZXcgVFN0b3JhZ2VR
dWFsaWZpZXJXcmFwcGVyKEV2cVNoYXJlZCwgKHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAgYnJl
YWs7CkBAIC0zNjYxLDcgKzM4MDUsOCBAQCB5eXJlZHVjZToKICAgY2FzZSAxNDg6CiAKICAgICB7
Ci0gICAgICAgICh5eXZhbC5pbnRlcm0ubGF5b3V0UXVhbGlmaWVyKSA9IGNvbnRleHQtPnBhcnNl
TGF5b3V0UXVhbGlmaWVyKCooeXl2c3BbMF0ubGV4KS5zdHJpbmcsICh5eWxzcFswXSkpOworICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpID0gKHl5dnNwWzBdLmludGVybS50eXBlKTsKKyAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlKS5wcmVjaXNpb24gPSBjb250ZXh0LT5zeW1ib2xUYWJsZS5n
ZXREZWZhdWx0UHJlY2lzaW9uKCh5eXZzcFswXS5pbnRlcm0udHlwZSkuZ2V0QmFzaWNUeXBlKCkp
OwogICAgIH0KIAogICAgIGJyZWFrOwpAQCAtMzY2OSw3ICszODE0LDcgQEAgeXlyZWR1Y2U6CiAg
IGNhc2UgMTQ5OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmxheW91dFF1YWxpZmll
cikgPSBjb250ZXh0LT5wYXJzZUxheW91dFF1YWxpZmllcigqKHl5dnNwWy0yXS5sZXgpLnN0cmlu
ZywgKHl5bHNwWy0yXSksICh5eXZzcFswXS5sZXgpLmksICh5eWxzcFswXSkpOworICAgICAgICAo
eXl2YWwuaW50ZXJtLnByZWNpc2lvbikgPSBFYnBIaWdoOwogICAgIH0KIAogICAgIGJyZWFrOwpA
QCAtMzY3Nyw3ICszODIyLDcgQEAgeXlyZWR1Y2U6CiAgIGNhc2UgMTUwOgogCiAgICAgewotICAg
ICAgICAoeXl2YWwuaW50ZXJtLmxheW91dFF1YWxpZmllcikgPSBjb250ZXh0LT5wYXJzZUxheW91
dFF1YWxpZmllcigqKHl5dnNwWy0yXS5sZXgpLnN0cmluZywgKHl5bHNwWy0yXSksICh5eXZzcFsw
XS5sZXgpLmksICh5eWxzcFswXSkpOworICAgICAgICAoeXl2YWwuaW50ZXJtLnByZWNpc2lvbikg
PSBFYnBNZWRpdW07CiAgICAgfQogCiAgICAgYnJlYWs7CkBAIC0zNjg1LDcgKzM4MzAsNyBAQCB5
eXJlZHVjZToKICAgY2FzZSAxNTE6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0udHlw
ZSkuaW5pdGlhbGl6ZSgoeXl2c3BbMF0uaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSksIChj
b250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFHbG9iYWwgOiBFdnFUZW1w
b3JhcnkpKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5wcmVjaXNpb24pID0gRWJwTG93OwogICAg
IH0KIAogICAgIGJyZWFrOwpAQCAtMzY5Myw2ICszODM4LDcxIEBAIHl5cmVkdWNlOgogICBjYXNl
IDE1MjoKIAogICAgIHsKKyAgICAgICAgRVMzX09SX05FV0VSKCJsYXlvdXQiLCAoeXlsc3BbLTNd
KSwgInF1YWxpZmllciIpOworICAgICAgICAoeXl2YWwuaW50ZXJtLmxheW91dFF1YWxpZmllcikg
PSAoeXl2c3BbLTFdLmludGVybS5sYXlvdXRRdWFsaWZpZXIpOworICAgIH0KKworICAgIGJyZWFr
OworCisgIGNhc2UgMTUzOgorCisgICAgeworICAgICAgICAoeXl2YWwuaW50ZXJtLmxheW91dFF1
YWxpZmllcikgPSAoeXl2c3BbMF0uaW50ZXJtLmxheW91dFF1YWxpZmllcik7CisgICAgfQorCisg
ICAgYnJlYWs7CisKKyAgY2FzZSAxNTQ6CisKKyAgICB7CisgICAgICAgICh5eXZhbC5pbnRlcm0u
bGF5b3V0UXVhbGlmaWVyKSA9IGNvbnRleHQtPmpvaW5MYXlvdXRRdWFsaWZpZXJzKCh5eXZzcFst
Ml0uaW50ZXJtLmxheW91dFF1YWxpZmllciksICh5eXZzcFswXS5pbnRlcm0ubGF5b3V0UXVhbGlm
aWVyKSwgKHl5bHNwWzBdKSk7CisgICAgfQorCisgICAgYnJlYWs7CisKKyAgY2FzZSAxNTU6CisK
KyAgICB7CisgICAgICAgICh5eXZhbC5pbnRlcm0ubGF5b3V0UXVhbGlmaWVyKSA9IGNvbnRleHQt
PnBhcnNlTGF5b3V0UXVhbGlmaWVyKCooeXl2c3BbMF0ubGV4KS5zdHJpbmcsICh5eWxzcFswXSkp
OworICAgIH0KKworICAgIGJyZWFrOworCisgIGNhc2UgMTU2OgorCisgICAgeworICAgICAgICAo
eXl2YWwuaW50ZXJtLmxheW91dFF1YWxpZmllcikgPSBjb250ZXh0LT5wYXJzZUxheW91dFF1YWxp
ZmllcigqKHl5dnNwWy0yXS5sZXgpLnN0cmluZywgKHl5bHNwWy0yXSksICh5eXZzcFswXS5sZXgp
LmksICh5eWxzcFswXSkpOworICAgIH0KKworICAgIGJyZWFrOworCisgIGNhc2UgMTU3OgorCisg
ICAgeworICAgICAgICAoeXl2YWwuaW50ZXJtLmxheW91dFF1YWxpZmllcikgPSBjb250ZXh0LT5w
YXJzZUxheW91dFF1YWxpZmllcigqKHl5dnNwWy0yXS5sZXgpLnN0cmluZywgKHl5bHNwWy0yXSks
ICh5eXZzcFswXS5sZXgpLmksICh5eWxzcFswXSkpOworICAgIH0KKworICAgIGJyZWFrOworCisg
IGNhc2UgMTU4OgorCisgICAgeworICAgICAgICAoeXl2YWwuaW50ZXJtLmxheW91dFF1YWxpZmll
cikgPSBjb250ZXh0LT5wYXJzZUxheW91dFF1YWxpZmllcigic2hhcmVkIiwgKHl5bHNwWzBdKSk7
CisgICAgfQorCisgICAgYnJlYWs7CisKKyAgY2FzZSAxNTk6CisKKyAgICB7CisgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZSkuaW5pdGlhbGl6ZSgoeXl2c3BbMF0uaW50ZXJtLnR5cGVTcGVjaWZp
ZXJOb25BcnJheSksIChjb250ZXh0LT5zeW1ib2xUYWJsZS5hdEdsb2JhbExldmVsKCkgPyBFdnFH
bG9iYWwgOiBFdnFUZW1wb3JhcnkpKTsKKyAgICB9CisKKyAgICBicmVhazsKKworICBjYXNlIDE2
MDoKKworICAgIHsKICAgICAgICAgRVMzX09SX05FV0VSKCJbXSIsICh5eWxzcFstMV0pLCAiaW1w
bGljaXRseSBzaXplZCBhcnJheSIpOwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLmluaXRp
YWxpemUoKHl5dnNwWy0yXS5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KSwgKGNvbnRleHQt
PnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeSkp
OwogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLnNldEFycmF5U2l6ZSgwKTsKQEAgLTM3MDAs
NyArMzkxMCw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNTM6CisgIGNh
c2UgMTYxOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGUpLmluaXRpYWxpemUo
KHl5dnNwWy0zXS5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KSwgKGNvbnRleHQtPnN5bWJv
bFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSA/IEV2cUdsb2JhbCA6IEV2cVRlbXBvcmFyeSkpOwpAQCAt
MzcxMyw3ICszOTIzLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE1NDoK
KyAgY2FzZSAxNjI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmll
ck5vbkFycmF5KS5pbml0aWFsaXplKEVidFZvaWQsICh5eWxzcFswXSkpOwpAQCAtMzcyMSw3ICsz
OTMxLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE1NToKKyAgY2FzZSAx
NjM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5
KS5pbml0aWFsaXplKEVidEZsb2F0LCAoeXlsc3BbMF0pKTsKQEAgLTM3MjksNyArMzkzOSw3IEBA
IHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNTY6CisgIGNhc2UgMTY0OgogCiAg
ICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlh
bGl6ZShFYnRJbnQsICh5eWxzcFswXSkpOwpAQCAtMzczNyw3ICszOTQ3LDcgQEAgeXlyZWR1Y2U6
CiAKICAgICBicmVhazsKIAotICBjYXNlIDE1NzoKKyAgY2FzZSAxNjU6CiAKICAgICB7CiAgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidFVJ
bnQsICh5eWxzcFswXSkpOwpAQCAtMzc0NSw3ICszOTU1LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBi
cmVhazsKIAotICBjYXNlIDE1ODoKKyAgY2FzZSAxNjY6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEJvb2wsICh5eWxz
cFswXSkpOwpAQCAtMzc1Myw3ICszOTYzLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAot
ICBjYXNlIDE1OToKKyAgY2FzZSAxNjc6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0u
dHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEZsb2F0LCAoeXlsc3BbMF0pKTsK
QEAgLTM3NjIsNyArMzk3Miw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
NjA6CisgIGNhc2UgMTY4OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVj
aWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRGbG9hdCwgKHl5bHNwWzBdKSk7CkBAIC0zNzcx
LDcgKzM5ODEsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTYxOgorICBj
YXNlIDE2OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9u
QXJyYXkpLmluaXRpYWxpemUoRWJ0RmxvYXQsICh5eWxzcFswXSkpOwpAQCAtMzc4MCw3ICszOTkw
LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE2MjoKKyAgY2FzZSAxNzA6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5p
bml0aWFsaXplKEVidEJvb2wsICh5eWxzcFswXSkpOwpAQCAtMzc4OSw3ICszOTk5LDcgQEAgeXly
ZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE2MzoKKyAgY2FzZSAxNzE6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXpl
KEVidEJvb2wsICh5eWxzcFswXSkpOwpAQCAtMzc5OCw3ICs0MDA4LDcgQEAgeXlyZWR1Y2U6CiAK
ICAgICBicmVhazsKIAotICBjYXNlIDE2NDoKKyAgY2FzZSAxNzI6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEJvb2ws
ICh5eWxzcFswXSkpOwpAQCAtMzgwNyw3ICs0MDE3LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVh
azsKIAotICBjYXNlIDE2NToKKyAgY2FzZSAxNzM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEludCwgKHl5bHNwWzBd
KSk7CkBAIC0zODE2LDcgKzQwMjYsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTY2OgorICBjYXNlIDE3NDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBl
U3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0SW50LCAoeXlsc3BbMF0pKTsKQEAgLTM4
MjUsNyArNDAzNSw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjc6Cisg
IGNhc2UgMTc1OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJO
b25BcnJheSkuaW5pdGlhbGl6ZShFYnRJbnQsICh5eWxzcFswXSkpOwpAQCAtMzgzNCw3ICs0MDQ0
LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE2ODoKKyAgY2FzZSAxNzY6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5p
bml0aWFsaXplKEVidFVJbnQsICh5eWxzcFswXSkpOwpAQCAtMzg0Myw3ICs0MDUzLDcgQEAgeXly
ZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE2OToKKyAgY2FzZSAxNzc6CiAKICAgICB7
CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXpl
KEVidFVJbnQsICh5eWxzcFswXSkpOwpAQCAtMzg1Miw3ICs0MDYyLDcgQEAgeXlyZWR1Y2U6CiAK
ICAgICBicmVhazsKIAotICBjYXNlIDE3MDoKKyAgY2FzZSAxNzg6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidFVJbnQs
ICh5eWxzcFswXSkpOwpAQCAtMzg2MSw3ICs0MDcxLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVh
azsKIAotICBjYXNlIDE3MToKKyAgY2FzZSAxNzk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEZsb2F0LCAoeXlsc3Bb
MF0pKTsKQEAgLTM4NzAsNyArNDA4MCw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAxNzI6CisgIGNhc2UgMTgwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5
cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRGbG9hdCwgKHl5bHNwWzBdKSk7CkBA
IC0zODc5LDcgKzQwODksNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTcz
OgorICBjYXNlIDE4MToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lm
aWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0RmxvYXQsICh5eWxzcFswXSkpOwpAQCAtMzg4OCw3
ICs0MDk4LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE3NDoKKyAgY2Fz
ZSAxODI6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFy
cmF5KS5pbml0aWFsaXplKEVidEZsb2F0LCAoeXlsc3BbMF0pKTsKQEAgLTM4OTcsNyArNDEwNyw3
IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzU6CisgIGNhc2UgMTgzOgog
CiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5p
dGlhbGl6ZShFYnRGbG9hdCwgKHl5bHNwWzBdKSk7CkBAIC0zOTA2LDcgKzQxMTYsNyBAQCB5eXJl
ZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTc2OgorICBjYXNlIDE4NDoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUo
RWJ0RmxvYXQsICh5eWxzcFswXSkpOwpAQCAtMzkxNSw3ICs0MTI1LDcgQEAgeXlyZWR1Y2U6CiAK
ICAgICBicmVhazsKIAotICBjYXNlIDE3NzoKKyAgY2FzZSAxODU6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEZsb2F0
LCAoeXlsc3BbMF0pKTsKQEAgLTM5MjQsNyArNDEzNCw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAxNzg6CisgIGNhc2UgMTg2OgogCiAgICAgewogICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRGbG9hdCwgKHl5bHNw
WzBdKSk7CkBAIC0zOTMzLDcgKzQxNDMsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTc5OgorICBjYXNlIDE4NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS50
eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0RmxvYXQsICh5eWxzcFswXSkpOwpA
QCAtMzk0Miw3ICs0MTUyLDE4IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
ODA6CisgIGNhc2UgMTg4OgorCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPmlzRXh0ZW5z
aW9uRW5hYmxlZCgiR0xfRVhUX1lVVl90YXJnZXQiKSkgeworICAgICAgICAgICAgY29udGV4dC0+
ZXJyb3IoKHl5bHNwWzBdKSwgInVuc3VwcG9ydGVkIHR5cGUiLCAieXV2Q3NjU3RhbmRhcmRFWFQi
KTsKKyAgICAgICAgfQorICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJh
eSkuaW5pdGlhbGl6ZShFYnRZdXZDc2NTdGFuZGFyZEVYVCwgKHl5bHNwWzBdKSk7CisgICAgfQor
CisgICAgYnJlYWs7CisKKyAgY2FzZSAxODk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidFNhbXBsZXIyRCwgKHl5bHNw
WzBdKSk7CkBAIC0zOTUwLDcgKzQxNzEsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTgxOgorICBjYXNlIDE5MDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS50
eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0U2FtcGxlcjNELCAoeXlsc3BbMF0p
KTsKQEAgLTM5NTgsNyArNDE3OSw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxODI6CisgIGNhc2UgMTkxOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVT
cGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRTYW1wbGVyQ3ViZSwgKHl5bHNwWzBdKSk7
CkBAIC0zOTY2LDcgKzQxODcsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MTgzOgorICBjYXNlIDE5MjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3Bl
Y2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0U2FtcGxlcjJEQXJyYXksICh5eWxzcFswXSkp
OwpAQCAtMzk3NCw3ICs0MTk1LDE1IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxODQ6CisgIGNhc2UgMTkzOgorCisgICAgeworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVT
cGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRTYW1wbGVyMkRNUywgKHl5bHNwWzBdKSk7
CisgICAgfQorCisgICAgYnJlYWs7CisKKyAgY2FzZSAxOTQ6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidElTYW1wbGVy
MkQsICh5eWxzcFswXSkpOwpAQCAtMzk4Miw3ICs0MjExLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBi
cmVhazsKIAotICBjYXNlIDE4NToKKyAgY2FzZSAxOTU6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidElTYW1wbGVyM0Qs
ICh5eWxzcFswXSkpOwpAQCAtMzk5MCw3ICs0MjE5LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVh
azsKIAotICBjYXNlIDE4NjoKKyAgY2FzZSAxOTY6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidElTYW1wbGVyQ3ViZSwg
KHl5bHNwWzBdKSk7CkBAIC0zOTk4LDcgKzQyMjcsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFr
OwogCi0gIGNhc2UgMTg3OgorICBjYXNlIDE5NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0SVNhbXBsZXIyREFycmF5
LCAoeXlsc3BbMF0pKTsKQEAgLTQwMDYsNyArNDIzNSwxNSBAQCB5eXJlZHVjZToKIAogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMTg4OgorICBjYXNlIDE5ODoKKworICAgIHsKKyAgICAgICAgKHl5dmFs
LmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0SVNhbXBsZXIyRE1T
LCAoeXlsc3BbMF0pKTsKKyAgICB9CisKKyAgICBicmVhazsKKworICBjYXNlIDE5OToKIAogICAg
IHsKICAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxp
emUoRWJ0VVNhbXBsZXIyRCwgKHl5bHNwWzBdKSk7CkBAIC00MDE0LDcgKzQyNTEsNyBAQCB5eXJl
ZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg5OgorICBjYXNlIDIwMDoKIAogICAgIHsK
ICAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUo
RWJ0VVNhbXBsZXIzRCwgKHl5bHNwWzBdKSk7CkBAIC00MDIyLDcgKzQyNTksNyBAQCB5eXJlZHVj
ZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMTkwOgorICBjYXNlIDIwMToKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0
VVNhbXBsZXJDdWJlLCAoeXlsc3BbMF0pKTsKQEAgLTQwMzAsNyArNDI2Nyw3IEBAIHl5cmVkdWNl
OgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTE6CisgIGNhc2UgMjAyOgogCiAgICAgewogICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRV
U2FtcGxlcjJEQXJyYXksICh5eWxzcFswXSkpOwpAQCAtNDAzOCw3ICs0Mjc1LDE1IEBAIHl5cmVk
dWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTI6CisgIGNhc2UgMjAzOgorCisgICAgewor
ICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShF
YnRVU2FtcGxlcjJETVMsICh5eWxzcFswXSkpOworICAgIH0KKworICAgIGJyZWFrOworCisgIGNh
c2UgMjA0OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25B
cnJheSkuaW5pdGlhbGl6ZShFYnRTYW1wbGVyMkRTaGFkb3csICh5eWxzcFswXSkpOwpAQCAtNDA0
Niw3ICs0MjkxLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE5MzoKKyAg
Y2FzZSAyMDU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5v
bkFycmF5KS5pbml0aWFsaXplKEVidFNhbXBsZXJDdWJlU2hhZG93LCAoeXlsc3BbMF0pKTsKQEAg
LTQwNTQsNyArNDI5OSw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTQ6
CisgIGNhc2UgMjA2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZp
ZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRTYW1wbGVyMkRBcnJheVNoYWRvdywgKHl5bHNwWzBd
KSk7CkBAIC00MDYyLDcgKzQzMDcsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTk1OgorICBjYXNlIDIwNzoKIAogICAgIHsKICAgICAgICAgaWYgKCFjb250ZXh0LT5zdXBw
b3J0c0V4dGVuc2lvbigiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCIpICYmCkBAIC00MDc0LDcg
KzQzMTksMTggQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE5NjoKKyAgY2Fz
ZSAyMDg6CisKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+aXNFeHRlbnNpb25FbmFibGVk
KCJHTF9FWFRfWVVWX3RhcmdldCIpKSB7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXls
c3BbMF0pLCAidW5zdXBwb3J0ZWQgdHlwZSIsICJfX3NhbXBsZXJFeHRlcm5hbDJEWTJZRVhUIik7
CisgICAgICAgIH0KKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkp
LmluaXRpYWxpemUoRWJ0U2FtcGxlckV4dGVybmFsMkRZMllFWFQsICh5eWxzcFswXSkpOworICAg
IH0KKworICAgIGJyZWFrOworCisgIGNhc2UgMjA5OgogCiAgICAgewogICAgICAgICBpZiAoIWNv
bnRleHQtPnN1cHBvcnRzRXh0ZW5zaW9uKCJHTF9BUkJfdGV4dHVyZV9yZWN0YW5nbGUiKSkgewpA
QCAtNDA4NSw3ICs0MzQxLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE5
NzoKKyAgY2FzZSAyMTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNp
Zmllck5vbkFycmF5KSA9ICh5eXZzcFswXS5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KTsK
QEAgLTQwOTMsNyArNDM0OSwxMDMgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNl
IDE5ODoKKyAgY2FzZSAyMTE6CisKKyAgICB7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNw
ZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidEltYWdlMkQsICh5eWxzcFswXSkpOworICAg
IH0KKworICAgIGJyZWFrOworCisgIGNhc2UgMjEyOgorCisgICAgeworICAgICAgICAoeXl2YWwu
aW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRJSW1hZ2UyRCwgKHl5
bHNwWzBdKSk7CisgICAgfQorCisgICAgYnJlYWs7CisKKyAgY2FzZSAyMTM6CisKKyAgICB7Cisg
ICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVi
dFVJbWFnZTJELCAoeXlsc3BbMF0pKTsKKyAgICB9CisKKyAgICBicmVhazsKKworICBjYXNlIDIx
NDoKKworICAgIHsKKyAgICAgICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkp
LmluaXRpYWxpemUoRWJ0SW1hZ2UzRCwgKHl5bHNwWzBdKSk7CisgICAgfQorCisgICAgYnJlYWs7
CisKKyAgY2FzZSAyMTU6CisKKyAgICB7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNp
Zmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidElJbWFnZTNELCAoeXlsc3BbMF0pKTsKKyAgICB9
CisKKyAgICBicmVhazsKKworICBjYXNlIDIxNjoKKworICAgIHsKKyAgICAgICAgKHl5dmFsLmlu
dGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0VUltYWdlM0QsICh5eWxz
cFswXSkpOworICAgIH0KKworICAgIGJyZWFrOworCisgIGNhc2UgMjE3OgorCisgICAgeworICAg
ICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRJ
bWFnZTJEQXJyYXksICh5eWxzcFswXSkpOworICAgIH0KKworICAgIGJyZWFrOworCisgIGNhc2Ug
MjE4OgorCisgICAgeworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVjaWZpZXJOb25BcnJh
eSkuaW5pdGlhbGl6ZShFYnRJSW1hZ2UyREFycmF5LCAoeXlsc3BbMF0pKTsKKyAgICB9CisKKyAg
ICBicmVhazsKKworICBjYXNlIDIxOToKKworICAgIHsKKyAgICAgICAgKHl5dmFsLmludGVybS50
eXBlU3BlY2lmaWVyTm9uQXJyYXkpLmluaXRpYWxpemUoRWJ0VUltYWdlMkRBcnJheSwgKHl5bHNw
WzBdKSk7CisgICAgfQorCisgICAgYnJlYWs7CisKKyAgY2FzZSAyMjA6CisKKyAgICB7CisgICAg
ICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5pbml0aWFsaXplKEVidElt
YWdlQ3ViZSwgKHl5bHNwWzBdKSk7CisgICAgfQorCisgICAgYnJlYWs7CisKKyAgY2FzZSAyMjE6
CisKKyAgICB7CisgICAgICAgICh5eXZhbC5pbnRlcm0udHlwZVNwZWNpZmllck5vbkFycmF5KS5p
bml0aWFsaXplKEVidElJbWFnZUN1YmUsICh5eWxzcFswXSkpOworICAgIH0KKworICAgIGJyZWFr
OworCisgIGNhc2UgMjIyOgorCisgICAgeworICAgICAgICAoeXl2YWwuaW50ZXJtLnR5cGVTcGVj
aWZpZXJOb25BcnJheSkuaW5pdGlhbGl6ZShFYnRVSW1hZ2VDdWJlLCAoeXlsc3BbMF0pKTsKKyAg
ICB9CisKKyAgICBicmVhazsKKworICBjYXNlIDIyMzoKIAogICAgIHsKICAgICAgICAgLy8KQEAg
LTQxMDcsMTMgKzQ0NTksMTMgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDE5
OToKKyAgY2FzZSAyMjQ6CiAKICAgICB7IGNvbnRleHQtPmVudGVyU3RydWN0RGVjbGFyYXRpb24o
KHl5bHNwWy0xXSksICooeXl2c3BbLTFdLmxleCkuc3RyaW5nKTsgfQogCiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAyMDA6CisgIGNhc2UgMjI1OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
LnR5cGVTcGVjaWZpZXJOb25BcnJheSkgPSBjb250ZXh0LT5hZGRTdHJ1Y3R1cmUoKHl5bHNwWy01
XSksICh5eWxzcFstNF0pLCAoeXl2c3BbLTRdLmxleCkuc3RyaW5nLCAoeXl2c3BbLTFdLmludGVy
bS5maWVsZExpc3QpKTsKQEAgLTQxMjEsMTMgKzQ0NzMsMTMgQEAgeXlyZWR1Y2U6CiAKICAgICBi
cmVhazsKIAotICBjYXNlIDIwMToKKyAgY2FzZSAyMjY6CiAKICAgICB7IGNvbnRleHQtPmVudGVy
U3RydWN0RGVjbGFyYXRpb24oKHl5bHNwWzBdKSwgKih5eXZzcFswXS5sZXgpLnN0cmluZyk7IH0K
IAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjAyOgorICBjYXNlIDIyNzoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS50eXBlU3BlY2lmaWVyTm9uQXJyYXkpID0gY29udGV4dC0+YWRkU3Ry
dWN0dXJlKCh5eWxzcFstNF0pLCAoeXlsb2MpLCBOZXdQb29sVFN0cmluZygiIiksICh5eXZzcFst
MV0uaW50ZXJtLmZpZWxkTGlzdCkpOwpAQCAtNDEzNSw3ICs0NDg3LDcgQEAgeXlyZWR1Y2U6CiAK
ICAgICBicmVhazsKIAotICBjYXNlIDIwMzoKKyAgY2FzZSAyMjg6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uZmllbGRMaXN0KSA9ICh5eXZzcFswXS5pbnRlcm0uZmllbGRMaXN0KTsK
QEAgLTQxNDMsMjQgKzQ0OTUsMTUgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNl
IDIwNDoKKyAgY2FzZSAyMjk6CiAKICAgICB7Ci0gICAgICAgICh5eXZhbC5pbnRlcm0uZmllbGRM
aXN0KSA9ICh5eXZzcFstMV0uaW50ZXJtLmZpZWxkTGlzdCk7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgKHl5dnNwWzBdLmludGVybS5maWVsZExpc3QpLT5zaXplKCk7ICsraSkgewot
ICAgICAgICAgICAgVEZpZWxkKiBmaWVsZCA9ICgqKHl5dnNwWzBdLmludGVybS5maWVsZExpc3Qp
KVtpXTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgKHl5dmFsLmludGVybS5m
aWVsZExpc3QpLT5zaXplKCk7ICsraikgewotICAgICAgICAgICAgICAgIGlmICgoKih5eXZhbC5p
bnRlcm0uZmllbGRMaXN0KSlbal0tPm5hbWUoKSA9PSBmaWVsZC0+bmFtZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmVycm9yKCh5eWxzcFswXSksICJkdXBsaWNhdGUgZmllbGQg
bmFtZSBpbiBzdHJ1Y3R1cmU6IiwgInN0cnVjdCIsIGZpZWxkLT5uYW1lKCkuY19zdHIoKSk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgKHl5dmFsLmludGVy
bS5maWVsZExpc3QpLT5wdXNoX2JhY2soZmllbGQpOwotICAgICAgICB9CisgICAgICAgICh5eXZh
bC5pbnRlcm0uZmllbGRMaXN0KSA9IGNvbnRleHQtPmNvbWJpbmVTdHJ1Y3RGaWVsZExpc3RzKCh5
eXZzcFstMV0uaW50ZXJtLmZpZWxkTGlzdCksICh5eXZzcFswXS5pbnRlcm0uZmllbGRMaXN0KSwg
KHl5bHNwWzBdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMDU6CisgIGNhc2Ug
MjMwOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCkgPSBjb250ZXh0
LT5hZGRTdHJ1Y3REZWNsYXJhdG9yTGlzdCgoeXl2c3BbLTJdLmludGVybS50eXBlKSwgKHl5dnNw
Wy0xXS5pbnRlcm0uZmllbGRMaXN0KSk7CkBAIC00MTY4LDcgKzQ1MTEsNyBAQCB5eXJlZHVjZToK
IAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjA2OgorICBjYXNlIDIzMToKIAogICAgIHsKICAgICAg
ICAgLy8gRVMzIE9ubHksIGJ1dCBlcnJvcnMgc2hvdWxkIGJlIGhhbmRsZWQgZWxzZXdoZXJlCkBA
IC00MTc3LDcgKzQ1MjAsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjA3
OgorICBjYXNlIDIzMjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5maWVsZExpc3Qp
ID0gTmV3UG9vbFRGaWVsZExpc3QoKTsKQEAgLTQxODYsNyArNDUyOSw3IEBAIHl5cmVkdWNlOgog
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMDg6CisgIGNhc2UgMjMzOgogCiAgICAgewogICAgICAg
ICAoeXl2YWwuaW50ZXJtLmZpZWxkTGlzdCktPnB1c2hfYmFjaygoeXl2c3BbMF0uaW50ZXJtLmZp
ZWxkKSk7CkBAIC00MTk0LDcgKzQ1MzcsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0g
IGNhc2UgMjA5OgorICBjYXNlIDIzNDoKIAogICAgIHsKICAgICAgICAgY29udGV4dC0+Y2hlY2tJ
c05vdFJlc2VydmVkKCh5eWxzcFswXSksICooeXl2c3BbMF0ubGV4KS5zdHJpbmcpOwpAQCAtNDIw
NSw3ICs0NTQ4LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDIxMDoKKyAg
Y2FzZSAyMzU6CiAKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmNoZWNrSXNOb3RSZXNlcnZlZCgo
eXlsc3BbLTNdKSwgKih5eXZzcFstM10ubGV4KS5zdHJpbmcpOwpAQCAtNDIxOSw5MSArNDU2Miw5
MSBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjExOgorICBjYXNlIDIzNjoK
IAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWzBdLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDIxMjoKKyAgY2Fz
ZSAyMzc6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50
ZXJtLmludGVybU5vZGUpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDIxMzoKKyAgY2FzZSAy
Mzg6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJt
LmludGVybUJsb2NrKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMTQ6CisgIGNhc2UgMjM5
OgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5p
bnRlcm1Ob2RlKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMTU6CisgIGNhc2UgMjQwOgog
CiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRl
cm1Ob2RlKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMTY6CisgIGNhc2UgMjQxOgogCiAg
ICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1O
b2RlKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMTc6CisgIGNhc2UgMjQyOgogCiAgICAg
eyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2Rl
KTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMTg6CisgIGNhc2UgMjQzOgogCiAgICAgeyAo
eXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1Td2l0Y2gp
OyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDIxOToKKyAgY2FzZSAyNDQ6CiAKICAgICB7ICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybUNhc2UpOyB9
CiAKICAgICBicmVhazsKIAotICBjYXNlIDIyMDoKKyAgY2FzZSAyNDU6CiAKICAgICB7ICh5eXZh
bC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAK
ICAgICBicmVhazsKIAotICBjYXNlIDIyMToKKyAgY2FzZSAyNDY6CiAKICAgICB7ICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybU5vZGUpOyB9CiAKICAg
ICBicmVhazsKIAotICBjYXNlIDIyMjoKKyAgY2FzZSAyNDc6CiAKICAgICB7ICh5eXZhbC5pbnRl
cm0uaW50ZXJtQmxvY2spID0gMDsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMjM6CisgIGNh
c2UgMjQ4OgogCiAgICAgeyBjb250ZXh0LT5zeW1ib2xUYWJsZS5wdXNoKCk7IH0KIAogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMjI0OgorICBjYXNlIDI0OToKIAogICAgIHsgY29udGV4dC0+c3ltYm9s
VGFibGUucG9wKCk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjI1OgorICBjYXNlIDI1MDoK
IAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFstMl0uaW50ZXJtLmludGVybUJsb2NrKSAhPSAw
KSB7CkBAIC00MzE0LDQzICs0NjU3LDQzIEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAyMjY6CisgIGNhc2UgMjUxOgogCiAgICAgeyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUp
ID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1CbG9jayk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNh
c2UgMjI3OgorICBjYXNlIDI1MjoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtTm9kZSk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2Ug
MjI4OgorICBjYXNlIDI1MzoKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyB9
CiAKICAgICBicmVhazsKIAotICBjYXNlIDIyOToKKyAgY2FzZSAyNTQ6CiAKICAgICB7IGNvbnRl
eHQtPnN5bWJvbFRhYmxlLnBvcCgpOyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNw
WzBdLmludGVybS5pbnRlcm1CbG9jayk7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjMwOgor
ICBjYXNlIDI1NToKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyB9CiAKICAg
ICBicmVhazsKIAotICBjYXNlIDIzMToKKyAgY2FzZSAyNTY6CiAKICAgICB7IGNvbnRleHQtPnN5
bWJvbFRhYmxlLnBvcCgpOyAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gKHl5dnNwWzBdLmlu
dGVybS5pbnRlcm1Ob2RlKTsgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyMzI6CisgIGNhc2Ug
MjU3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUJsb2NrKSA9IDA7CkBA
IC00MzU4LDcgKzQ3MDEsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjMz
OgorICBjYXNlIDI1ODoKIAogICAgIHsKICAgICAgICAgaWYgKCh5eXZzcFstMV0uaW50ZXJtLmlu
dGVybUJsb2NrKSkgewpAQCAtNDM2OSw3ICs0NzEyLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVh
azsKIAotICBjYXNlIDIzNDoKKyAgY2FzZSAyNTk6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtQmxvY2spID0gbmV3IFRJbnRlcm1CbG9jaygpOwpAQCAtNDM3OSw3ICs0NzIy
LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDIzNToKKyAgY2FzZSAyNjA6
CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQmxvY2spID0gKHl5dnNwWy0x
XS5pbnRlcm0uaW50ZXJtQmxvY2spOwpAQCAtNDM4OCwxOSArNDczMSwxOSBAQCB5eXJlZHVjZToK
IAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjM2OgorICBjYXNlIDI2MToKIAogICAgIHsgKHl5dmFs
LmludGVybS5pbnRlcm1Ob2RlKSA9IDA7IH0KIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjM3Ogor
ICBjYXNlIDI2MjoKIAogICAgIHsgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IHN0YXRpY19j
YXN0PFRJbnRlcm1Ob2RlKj4oKHl5dnNwWy0xXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSk7IH0K
IAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjM4OgorICBjYXNlIDI2MzoKIAogICAgIHsKICAgICAg
ICAgY29udGV4dC0+Y2hlY2tJc1NjYWxhckJvb2woKHl5bHNwWy00XSksICh5eXZzcFstMl0uaW50
ZXJtLmludGVybVR5cGVkTm9kZSkpOwpAQCAtNDQwOSw3ICs0NzUyLDcgQEAgeXlyZWR1Y2U6CiAK
ICAgICBicmVhazsKIAotICBjYXNlIDIzOToKKyAgY2FzZSAyNjQ6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWy0yXS5pbnRlcm0uaW50ZXJt
Tm9kZSk7CkBAIC00NDE4LDcgKzQ3NjEsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0g
IGNhc2UgMjQwOgorICBjYXNlIDI2NToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5u
b2RlUGFpcikubm9kZTEgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybU5vZGUpOwpAQCAtNDQyNywx
MyArNDc3MCwxMyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjQxOgorICBj
YXNlIDI2NjoKIAogICAgIHsgY29udGV4dC0+aW5jclN3aXRjaE5lc3RpbmdMZXZlbCgpOyB9CiAK
ICAgICBicmVhazsKIAotICBjYXNlIDI0MjoKKyAgY2FzZSAyNjc6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0uaW50ZXJtU3dpdGNoKSA9IGNvbnRleHQtPmFkZFN3aXRjaCgoeXl2c3Bb
LTNdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybUJsb2Nr
KSwgKHl5bHNwWy01XSkpOwpAQCAtNDQ0Miw3ICs0Nzg1LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBi
cmVhazsKIAotICBjYXNlIDI0MzoKKyAgY2FzZSAyNjg6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtQ2FzZSkgPSBjb250ZXh0LT5hZGRDYXNlKCh5eXZzcFstMV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSksICh5eWxzcFstMl0pKTsKQEAgLTQ0NTAsNyArNDc5Myw3IEBAIHl5
cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDQ6CisgIGNhc2UgMjY5OgogCiAgICAg
ewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybUNhc2UpID0gY29udGV4dC0+YWRkRGVmYXVs
dCgoeXlsc3BbLTFdKSk7CkBAIC00NDU4LDcgKzQ4MDEsNyBAQCB5eXJlZHVjZToKIAogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMjQ1OgorICBjYXNlIDI3MDoKIAogICAgIHsKICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpOwpAQCAtNDQ2NywxMyArNDgxMCwxMyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0g
IGNhc2UgMjQ2OgorICBjYXNlIDI3MToKIAogICAgIHsKLSAgICAgICAgVEludGVybU5vZGUgKmlu
dGVybU5vZGU7CisgICAgICAgIFRJbnRlcm1CaW5hcnkgKmluaXROb2RlID0gbnVsbHB0cjsKICAg
ICAgICAgY29udGV4dC0+Y2hlY2tJc1NjYWxhckJvb2woKHl5bHNwWy0yXSksICh5eXZzcFstM10u
aW50ZXJtLnR5cGUpKTsKIAotICAgICAgICBpZiAoIWNvbnRleHQtPmV4ZWN1dGVJbml0aWFsaXpl
cigoeXlsc3BbLTJdKSwgKih5eXZzcFstMl0ubGV4KS5zdHJpbmcsICh5eXZzcFstM10uaW50ZXJt
LnR5cGUpLCAoeXl2c3BbMF0uaW50ZXJtLmludGVybVR5cGVkTm9kZSksICZpbnRlcm1Ob2RlKSkK
KyAgICAgICAgaWYgKCFjb250ZXh0LT5leGVjdXRlSW5pdGlhbGl6ZXIoKHl5bHNwWy0yXSksICoo
eXl2c3BbLTJdLmxleCkuc3RyaW5nLCAoeXl2c3BbLTNdLmludGVybS50eXBlKSwgKHl5dnNwWzBd
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAmaW5pdE5vZGUpKQogICAgICAgICAgICAgKHl5dmFs
LmludGVybS5pbnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWzBdLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSA9IDA7CkBAIC00NDgyLDEzICs0ODI1LDEzIEBAIHl5cmVkdWNlOgogCiAgICAgYnJl
YWs7CiAKLSAgY2FzZSAyNDc6CisgIGNhc2UgMjcyOgogCiAgICAgeyBjb250ZXh0LT5zeW1ib2xU
YWJsZS5wdXNoKCk7IGNvbnRleHQtPmluY3JMb29wTmVzdGluZ0xldmVsKCk7IH0KIAogICAgIGJy
ZWFrOwogCi0gIGNhc2UgMjQ4OgorICBjYXNlIDI3MzoKIAogICAgIHsKICAgICAgICAgY29udGV4
dC0+c3ltYm9sVGFibGUucG9wKCk7CkBAIC00NDk4LDEzICs0ODQxLDEzIEBAIHl5cmVkdWNlOgog
CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNDk6CisgIGNhc2UgMjc0OgogCiAgICAgeyBjb250ZXh0
LT5pbmNyTG9vcE5lc3RpbmdMZXZlbCgpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDI1MDoK
KyAgY2FzZSAyNzU6CiAKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmNoZWNrSXNTY2FsYXJCb29s
KCh5eWxzcFswXSksICh5eXZzcFstMl0uaW50ZXJtLmludGVybVR5cGVkTm9kZSkpOwpAQCAtNDUx
NSwxMyArNDg1OCwxMyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjUxOgor
ICBjYXNlIDI3NjoKIAogICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucHVzaCgpOyBjb250ZXh0
LT5pbmNyTG9vcE5lc3RpbmdMZXZlbCgpOyB9CiAKICAgICBicmVhazsKIAotICBjYXNlIDI1MjoK
KyAgY2FzZSAyNzc6CiAKICAgICB7CiAgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgp
OwpAQCAtNDUzMSw3ICs0ODc0LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNl
IDI1MzoKKyAgY2FzZSAyNzg6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJt
Tm9kZSkgPSAoeXl2c3BbMF0uaW50ZXJtLmludGVybU5vZGUpOwpAQCAtNDUzOSw3ICs0ODgyLDcg
QEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDI1NDoKKyAgY2FzZSAyNzk6CiAK
ICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbMF0uaW50
ZXJtLmludGVybU5vZGUpOwpAQCAtNDU0Nyw3ICs0ODkwLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBi
cmVhazsKIAotICBjYXNlIDI1NToKKyAgY2FzZSAyODA6CiAKICAgICB7CiAgICAgICAgICh5eXZh
bC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtVHlwZWRO
b2RlKTsKQEAgLTQ1NTUsNyArNDg5OCw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAg
Y2FzZSAyNTY6CisgIGNhc2UgMjgxOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmlu
dGVybVR5cGVkTm9kZSkgPSAwOwpAQCAtNDU2Myw3ICs0OTA2LDcgQEAgeXlyZWR1Y2U6CiAKICAg
ICBicmVhazsKIAotICBjYXNlIDI1NzoKKyAgY2FzZSAyODI6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWy0xXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKTsKQEAgLTQ1NzIsNyArNDkxNSw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAK
LSAgY2FzZSAyNTg6CisgIGNhc2UgMjgzOgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJt
Lm5vZGVQYWlyKS5ub2RlMSA9ICh5eXZzcFstMl0uaW50ZXJtLmludGVybVR5cGVkTm9kZSk7CkBA
IC00NTgxLDcgKzQ5MjQsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjU5
OgorICBjYXNlIDI4NDoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2Rl
KSA9IGNvbnRleHQtPmFkZEJyYW5jaChFT3BDb250aW51ZSwgKHl5bHNwWy0xXSkpOwpAQCAtNDU4
OSw3ICs0OTMyLDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDI2MDoKKyAg
Y2FzZSAyODU6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBj
b250ZXh0LT5hZGRCcmFuY2goRU9wQnJlYWssICh5eWxzcFstMV0pKTsKQEAgLTQ1OTcsNyArNDk0
MCw3IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNjE6CisgIGNhc2UgMjg2
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+
YWRkQnJhbmNoKEVPcFJldHVybiwgKHl5bHNwWy0xXSkpOwpAQCAtNDYwNSw3ICs0OTQ4LDcgQEAg
eXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDI2MjoKKyAgY2FzZSAyODc6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5hZGRCcmFu
Y2goRU9wUmV0dXJuLCAoeXl2c3BbLTFdLmludGVybS5pbnRlcm1UeXBlZE5vZGUpLCAoeXlsc3Bb
LTJdKSk7CkBAIC00NjEzLDcgKzQ5NTYsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0g
IGNhc2UgMjYzOgorICBjYXNlIDI4ODoKIAogICAgIHsKICAgICAgICAgRlJBR19PTkxZKCJkaXNj
YXJkIiwgKHl5bHNwWy0xXSkpOwpAQCAtNDYyMiw3ICs0OTY1LDcgQEAgeXlyZWR1Y2U6CiAKICAg
ICBicmVhazsKIAotICBjYXNlIDI2NDoKKyAgY2FzZSAyODk6CiAKICAgICB7CiAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtQmxvY2spID0gbmV3IFRJbnRlcm1CbG9jaygpOwpAQCAtNDYzMyw3
ICs0OTc2LDcgQEAgeXlyZWR1Y2U6CiAKICAgICBicmVhazsKIAotICBjYXNlIDI2NToKKyAgY2Fz
ZSAyOTA6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQmxvY2spLT5hcHBl
bmRTdGF0ZW1lbnQoKHl5dnNwWzBdLmludGVybS5pbnRlcm1Ob2RlKSk7CkBAIC00NjQxLDcgKzQ5
ODQsNyBAQCB5eXJlZHVjZToKIAogICAgIGJyZWFrOwogCi0gIGNhc2UgMjY2OgorICBjYXNlIDI5
MToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsw
XS5pbnRlcm0uaW50ZXJtTm9kZSk7CkBAIC00NjQ5LDcgKzQ5OTIsNyBAQCB5eXJlZHVjZToKIAog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMjY3OgorICBjYXNlIDI5MjoKIAogICAgIHsKICAgICAgICAg
KHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtTm9kZSk7
CkBAIC00NjU3LDE4ICs1MDAwLDE4IEBAIHl5cmVkdWNlOgogCiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAyNjg6CisgIGNhc2UgMjkzOgogCiAgICAgewotICAgICAgICBjb250ZXh0LT5wYXJzZUZ1bmN0
aW9uRGVmaW5pdGlvbkhlYWRlcigoeXlsc3BbMF0pLCAmKCh5eXZzcFswXS5pbnRlcm0pLmZ1bmN0
aW9uKSwgJih5eXZzcFswXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSk7CisgICAgICAgIGNvbnRl
eHQtPnBhcnNlRnVuY3Rpb25EZWZpbml0aW9uSGVhZGVyKCh5eWxzcFswXSksICYoKHl5dnNwWzBd
LmludGVybSkuZnVuY3Rpb24pLCAmKCh5eXZzcFswXS5pbnRlcm0pLmludGVybUZ1bmN0aW9uUHJv
dG90eXBlKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CiAKLSAgY2FzZSAyNjk6CisgIGNhc2UgMjk0
OgogCiAgICAgewotICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+
YWRkRnVuY3Rpb25EZWZpbml0aW9uKCooKHl5dnNwWy0yXS5pbnRlcm0pLmZ1bmN0aW9uKSwgKHl5
dnNwWy0yXS5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSwgKHl5dnNwWzBdLmludGVybS5pbnRlcm1C
bG9jayksICh5eWxzcFstMl0pKTsKKyAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9
IGNvbnRleHQtPmFkZEZ1bmN0aW9uRGVmaW5pdGlvbigoeXl2c3BbLTJdLmludGVybSkuaW50ZXJt
RnVuY3Rpb25Qcm90b3R5cGUsICh5eXZzcFswXS5pbnRlcm0uaW50ZXJtQmxvY2spLCAoeXlsc3Bb
LTJdKSk7CiAgICAgfQogCiAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9nbHNsYW5nX3RhYi5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ190YWIuaAppbmRl
eCA3NGE1NmRhMDRhZi4uZGVmMDkyMTFhNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2dsc2xhbmdfdGFiLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvZ2xzbGFuZ190YWIuaApA
QCAtMzMsMTYzICszMywxODMgQEAKICAgIHZlcnNpb24gMi4yIG9mIEJpc29uLiAgKi8KIAogI2lm
bmRlZiBZWV9ZWV9HTFNMQU5HX1RBQl9IX0lOQ0xVREVECi0jIGRlZmluZSBZWV9ZWV9HTFNMQU5H
X1RBQl9IX0lOQ0xVREVECisjZGVmaW5lIFlZX1lZX0dMU0xBTkdfVEFCX0hfSU5DTFVERUQKIC8q
IERlYnVnIHRyYWNlcy4gICovCiAjaWZuZGVmIFlZREVCVUcKLSMgZGVmaW5lIFlZREVCVUcgMAor
I2RlZmluZSBZWURFQlVHIDAKICNlbmRpZgogI2lmIFlZREVCVUcKIGV4dGVybiBpbnQgeXlkZWJ1
ZzsKICNlbmRpZgogLyogIiVjb2RlIHJlcXVpcmVzIiBibG9ja3MuICAqLwogCi0KICNkZWZpbmUg
WVlMVFlQRSBUU291cmNlTG9jCiAjZGVmaW5lIFlZTFRZUEVfSVNfREVDTEFSRUQgMQogCi0KLQog
LyogVG9rZW4gdHlwZS4gICovCiAjaWZuZGVmIFlZVE9LRU5UWVBFCi0jIGRlZmluZSBZWVRPS0VO
VFlQRQotICBlbnVtIHl5dG9rZW50eXBlCi0gIHsKLSAgICBJTlZBUklBTlQgPSAyNTgsCi0gICAg
SElHSF9QUkVDSVNJT04gPSAyNTksCi0gICAgTUVESVVNX1BSRUNJU0lPTiA9IDI2MCwKLSAgICBM
T1dfUFJFQ0lTSU9OID0gMjYxLAotICAgIFBSRUNJU0lPTiA9IDI2MiwKLSAgICBBVFRSSUJVVEUg
PSAyNjMsCi0gICAgQ09OU1RfUVVBTCA9IDI2NCwKLSAgICBCT09MX1RZUEUgPSAyNjUsCi0gICAg
RkxPQVRfVFlQRSA9IDI2NiwKLSAgICBJTlRfVFlQRSA9IDI2NywKLSAgICBVSU5UX1RZUEUgPSAy
NjgsCi0gICAgQlJFQUsgPSAyNjksCi0gICAgQ09OVElOVUUgPSAyNzAsCi0gICAgRE8gPSAyNzEs
Ci0gICAgRUxTRSA9IDI3MiwKLSAgICBGT1IgPSAyNzMsCi0gICAgSUYgPSAyNzQsCi0gICAgRElT
Q0FSRCA9IDI3NSwKLSAgICBSRVRVUk4gPSAyNzYsCi0gICAgU1dJVENIID0gMjc3LAotICAgIENB
U0UgPSAyNzgsCi0gICAgREVGQVVMVCA9IDI3OSwKLSAgICBCVkVDMiA9IDI4MCwKLSAgICBCVkVD
MyA9IDI4MSwKLSAgICBCVkVDNCA9IDI4MiwKLSAgICBJVkVDMiA9IDI4MywKLSAgICBJVkVDMyA9
IDI4NCwKLSAgICBJVkVDNCA9IDI4NSwKLSAgICBWRUMyID0gMjg2LAotICAgIFZFQzMgPSAyODcs
Ci0gICAgVkVDNCA9IDI4OCwKLSAgICBVVkVDMiA9IDI4OSwKLSAgICBVVkVDMyA9IDI5MCwKLSAg
ICBVVkVDNCA9IDI5MSwKLSAgICBNQVRSSVgyID0gMjkyLAotICAgIE1BVFJJWDMgPSAyOTMsCi0g
ICAgTUFUUklYNCA9IDI5NCwKLSAgICBJTl9RVUFMID0gMjk1LAotICAgIE9VVF9RVUFMID0gMjk2
LAotICAgIElOT1VUX1FVQUwgPSAyOTcsCi0gICAgVU5JRk9STSA9IDI5OCwKLSAgICBWQVJZSU5H
ID0gMjk5LAotICAgIE1BVFJJWDJ4MyA9IDMwMCwKLSAgICBNQVRSSVgzeDIgPSAzMDEsCi0gICAg
TUFUUklYMng0ID0gMzAyLAotICAgIE1BVFJJWDR4MiA9IDMwMywKLSAgICBNQVRSSVgzeDQgPSAz
MDQsCi0gICAgTUFUUklYNHgzID0gMzA1LAotICAgIENFTlRST0lEID0gMzA2LAotICAgIEZMQVQg
PSAzMDcsCi0gICAgU01PT1RIID0gMzA4LAotICAgIFNUUlVDVCA9IDMwOSwKLSAgICBWT0lEX1RZ
UEUgPSAzMTAsCi0gICAgV0hJTEUgPSAzMTEsCi0gICAgU0FNUExFUjJEID0gMzEyLAotICAgIFNB
TVBMRVJDVUJFID0gMzEzLAotICAgIFNBTVBMRVJfRVhURVJOQUxfT0VTID0gMzE0LAotICAgIFNB
TVBMRVIyRFJFQ1QgPSAzMTUsCi0gICAgU0FNUExFUjJEQVJSQVkgPSAzMTYsCi0gICAgSVNBTVBM
RVIyRCA9IDMxNywKLSAgICBJU0FNUExFUjNEID0gMzE4LAotICAgIElTQU1QTEVSQ1VCRSA9IDMx
OSwKLSAgICBJU0FNUExFUjJEQVJSQVkgPSAzMjAsCi0gICAgVVNBTVBMRVIyRCA9IDMyMSwKLSAg
ICBVU0FNUExFUjNEID0gMzIyLAotICAgIFVTQU1QTEVSQ1VCRSA9IDMyMywKLSAgICBVU0FNUExF
UjJEQVJSQVkgPSAzMjQsCi0gICAgU0FNUExFUjNEID0gMzI1LAotICAgIFNBTVBMRVIzRFJFQ1Qg
PSAzMjYsCi0gICAgU0FNUExFUjJEU0hBRE9XID0gMzI3LAotICAgIFNBTVBMRVJDVUJFU0hBRE9X
ID0gMzI4LAotICAgIFNBTVBMRVIyREFSUkFZU0hBRE9XID0gMzI5LAotICAgIExBWU9VVCA9IDMz
MCwKLSAgICBJREVOVElGSUVSID0gMzMxLAotICAgIFRZUEVfTkFNRSA9IDMzMiwKLSAgICBGTE9B
VENPTlNUQU5UID0gMzMzLAotICAgIElOVENPTlNUQU5UID0gMzM0LAotICAgIFVJTlRDT05TVEFO
VCA9IDMzNSwKLSAgICBCT09MQ09OU1RBTlQgPSAzMzYsCi0gICAgRklFTERfU0VMRUNUSU9OID0g
MzM3LAotICAgIExFRlRfT1AgPSAzMzgsCi0gICAgUklHSFRfT1AgPSAzMzksCi0gICAgSU5DX09Q
ID0gMzQwLAotICAgIERFQ19PUCA9IDM0MSwKLSAgICBMRV9PUCA9IDM0MiwKLSAgICBHRV9PUCA9
IDM0MywKLSAgICBFUV9PUCA9IDM0NCwKLSAgICBORV9PUCA9IDM0NSwKLSAgICBBTkRfT1AgPSAz
NDYsCi0gICAgT1JfT1AgPSAzNDcsCi0gICAgWE9SX09QID0gMzQ4LAotICAgIE1VTF9BU1NJR04g
PSAzNDksCi0gICAgRElWX0FTU0lHTiA9IDM1MCwKLSAgICBBRERfQVNTSUdOID0gMzUxLAotICAg
IE1PRF9BU1NJR04gPSAzNTIsCi0gICAgTEVGVF9BU1NJR04gPSAzNTMsCi0gICAgUklHSFRfQVNT
SUdOID0gMzU0LAotICAgIEFORF9BU1NJR04gPSAzNTUsCi0gICAgWE9SX0FTU0lHTiA9IDM1NiwK
LSAgICBPUl9BU1NJR04gPSAzNTcsCi0gICAgU1VCX0FTU0lHTiA9IDM1OCwKLSAgICBMRUZUX1BB
UkVOID0gMzU5LAotICAgIFJJR0hUX1BBUkVOID0gMzYwLAotICAgIExFRlRfQlJBQ0tFVCA9IDM2
MSwKLSAgICBSSUdIVF9CUkFDS0VUID0gMzYyLAotICAgIExFRlRfQlJBQ0UgPSAzNjMsCi0gICAg
UklHSFRfQlJBQ0UgPSAzNjQsCi0gICAgRE9UID0gMzY1LAotICAgIENPTU1BID0gMzY2LAotICAg
IENPTE9OID0gMzY3LAotICAgIEVRVUFMID0gMzY4LAotICAgIFNFTUlDT0xPTiA9IDM2OSwKLSAg
ICBCQU5HID0gMzcwLAotICAgIERBU0ggPSAzNzEsCi0gICAgVElMREUgPSAzNzIsCi0gICAgUExV
UyA9IDM3MywKLSAgICBTVEFSID0gMzc0LAotICAgIFNMQVNIID0gMzc1LAotICAgIFBFUkNFTlQg
PSAzNzYsCi0gICAgTEVGVF9BTkdMRSA9IDM3NywKLSAgICBSSUdIVF9BTkdMRSA9IDM3OCwKLSAg
ICBWRVJUSUNBTF9CQVIgPSAzNzksCi0gICAgQ0FSRVQgPSAzODAsCi0gICAgQU1QRVJTQU5EID0g
MzgxLAotICAgIFFVRVNUSU9OID0gMzgyCi0gIH07CisjZGVmaW5lIFlZVE9LRU5UWVBFCitlbnVt
IHl5dG9rZW50eXBlCit7CisgICAgSU5WQVJJQU5UICAgICAgICAgICAgICAgICA9IDI1OCwKKyAg
ICBISUdIX1BSRUNJU0lPTiAgICAgICAgICAgID0gMjU5LAorICAgIE1FRElVTV9QUkVDSVNJT04g
ICAgICAgICAgPSAyNjAsCisgICAgTE9XX1BSRUNJU0lPTiAgICAgICAgICAgICA9IDI2MSwKKyAg
ICBQUkVDSVNJT04gICAgICAgICAgICAgICAgID0gMjYyLAorICAgIEFUVFJJQlVURSAgICAgICAg
ICAgICAgICAgPSAyNjMsCisgICAgQ09OU1RfUVVBTCAgICAgICAgICAgICAgICA9IDI2NCwKKyAg
ICBCT09MX1RZUEUgICAgICAgICAgICAgICAgID0gMjY1LAorICAgIEZMT0FUX1RZUEUgICAgICAg
ICAgICAgICAgPSAyNjYsCisgICAgSU5UX1RZUEUgICAgICAgICAgICAgICAgICA9IDI2NywKKyAg
ICBVSU5UX1RZUEUgICAgICAgICAgICAgICAgID0gMjY4LAorICAgIEJSRUFLICAgICAgICAgICAg
ICAgICAgICAgPSAyNjksCisgICAgQ09OVElOVUUgICAgICAgICAgICAgICAgICA9IDI3MCwKKyAg
ICBETyAgICAgICAgICAgICAgICAgICAgICAgID0gMjcxLAorICAgIEVMU0UgICAgICAgICAgICAg
ICAgICAgICAgPSAyNzIsCisgICAgRk9SICAgICAgICAgICAgICAgICAgICAgICA9IDI3MywKKyAg
ICBJRiAgICAgICAgICAgICAgICAgICAgICAgID0gMjc0LAorICAgIERJU0NBUkQgICAgICAgICAg
ICAgICAgICAgPSAyNzUsCisgICAgUkVUVVJOICAgICAgICAgICAgICAgICAgICA9IDI3NiwKKyAg
ICBTV0lUQ0ggICAgICAgICAgICAgICAgICAgID0gMjc3LAorICAgIENBU0UgICAgICAgICAgICAg
ICAgICAgICAgPSAyNzgsCisgICAgREVGQVVMVCAgICAgICAgICAgICAgICAgICA9IDI3OSwKKyAg
ICBCVkVDMiAgICAgICAgICAgICAgICAgICAgID0gMjgwLAorICAgIEJWRUMzICAgICAgICAgICAg
ICAgICAgICAgPSAyODEsCisgICAgQlZFQzQgICAgICAgICAgICAgICAgICAgICA9IDI4MiwKKyAg
ICBJVkVDMiAgICAgICAgICAgICAgICAgICAgID0gMjgzLAorICAgIElWRUMzICAgICAgICAgICAg
ICAgICAgICAgPSAyODQsCisgICAgSVZFQzQgICAgICAgICAgICAgICAgICAgICA9IDI4NSwKKyAg
ICBWRUMyICAgICAgICAgICAgICAgICAgICAgID0gMjg2LAorICAgIFZFQzMgICAgICAgICAgICAg
ICAgICAgICAgPSAyODcsCisgICAgVkVDNCAgICAgICAgICAgICAgICAgICAgICA9IDI4OCwKKyAg
ICBVVkVDMiAgICAgICAgICAgICAgICAgICAgID0gMjg5LAorICAgIFVWRUMzICAgICAgICAgICAg
ICAgICAgICAgPSAyOTAsCisgICAgVVZFQzQgICAgICAgICAgICAgICAgICAgICA9IDI5MSwKKyAg
ICBNQVRSSVgyICAgICAgICAgICAgICAgICAgID0gMjkyLAorICAgIE1BVFJJWDMgICAgICAgICAg
ICAgICAgICAgPSAyOTMsCisgICAgTUFUUklYNCAgICAgICAgICAgICAgICAgICA9IDI5NCwKKyAg
ICBJTl9RVUFMICAgICAgICAgICAgICAgICAgID0gMjk1LAorICAgIE9VVF9RVUFMICAgICAgICAg
ICAgICAgICAgPSAyOTYsCisgICAgSU5PVVRfUVVBTCAgICAgICAgICAgICAgICA9IDI5NywKKyAg
ICBVTklGT1JNICAgICAgICAgICAgICAgICAgID0gMjk4LAorICAgIFZBUllJTkcgICAgICAgICAg
ICAgICAgICAgPSAyOTksCisgICAgTUFUUklYMngzICAgICAgICAgICAgICAgICA9IDMwMCwKKyAg
ICBNQVRSSVgzeDIgICAgICAgICAgICAgICAgID0gMzAxLAorICAgIE1BVFJJWDJ4NCAgICAgICAg
ICAgICAgICAgPSAzMDIsCisgICAgTUFUUklYNHgyICAgICAgICAgICAgICAgICA9IDMwMywKKyAg
ICBNQVRSSVgzeDQgICAgICAgICAgICAgICAgID0gMzA0LAorICAgIE1BVFJJWDR4MyAgICAgICAg
ICAgICAgICAgPSAzMDUsCisgICAgQ0VOVFJPSUQgICAgICAgICAgICAgICAgICA9IDMwNiwKKyAg
ICBGTEFUICAgICAgICAgICAgICAgICAgICAgID0gMzA3LAorICAgIFNNT09USCAgICAgICAgICAg
ICAgICAgICAgPSAzMDgsCisgICAgUkVBRE9OTFkgICAgICAgICAgICAgICAgICA9IDMwOSwKKyAg
ICBXUklURU9OTFkgICAgICAgICAgICAgICAgID0gMzEwLAorICAgIENPSEVSRU5UICAgICAgICAg
ICAgICAgICAgPSAzMTEsCisgICAgUkVTVFJJQ1QgICAgICAgICAgICAgICAgICA9IDMxMiwKKyAg
ICBWT0xBVElMRSAgICAgICAgICAgICAgICAgID0gMzEzLAorICAgIFNIQVJFRCAgICAgICAgICAg
ICAgICAgICAgPSAzMTQsCisgICAgU1RSVUNUICAgICAgICAgICAgICAgICAgICA9IDMxNSwKKyAg
ICBWT0lEX1RZUEUgICAgICAgICAgICAgICAgID0gMzE2LAorICAgIFdISUxFICAgICAgICAgICAg
ICAgICAgICAgPSAzMTcsCisgICAgU0FNUExFUjJEICAgICAgICAgICAgICAgICA9IDMxOCwKKyAg
ICBTQU1QTEVSQ1VCRSAgICAgICAgICAgICAgID0gMzE5LAorICAgIFNBTVBMRVJfRVhURVJOQUxf
T0VTICAgICAgPSAzMjAsCisgICAgU0FNUExFUjJEUkVDVCAgICAgICAgICAgICA9IDMyMSwKKyAg
ICBTQU1QTEVSMkRBUlJBWSAgICAgICAgICAgID0gMzIyLAorICAgIElTQU1QTEVSMkQgICAgICAg
ICAgICAgICAgPSAzMjMsCisgICAgSVNBTVBMRVIzRCAgICAgICAgICAgICAgICA9IDMyNCwKKyAg
ICBJU0FNUExFUkNVQkUgICAgICAgICAgICAgID0gMzI1LAorICAgIElTQU1QTEVSMkRBUlJBWSAg
ICAgICAgICAgPSAzMjYsCisgICAgVVNBTVBMRVIyRCAgICAgICAgICAgICAgICA9IDMyNywKKyAg
ICBVU0FNUExFUjNEICAgICAgICAgICAgICAgID0gMzI4LAorICAgIFVTQU1QTEVSQ1VCRSAgICAg
ICAgICAgICAgPSAzMjksCisgICAgVVNBTVBMRVIyREFSUkFZICAgICAgICAgICA9IDMzMCwKKyAg
ICBTQU1QTEVSMkRNUyAgICAgICAgICAgICAgID0gMzMxLAorICAgIElTQU1QTEVSMkRNUyAgICAg
ICAgICAgICAgPSAzMzIsCisgICAgVVNBTVBMRVIyRE1TICAgICAgICAgICAgICA9IDMzMywKKyAg
ICBTQU1QTEVSM0QgICAgICAgICAgICAgICAgID0gMzM0LAorICAgIFNBTVBMRVIzRFJFQ1QgICAg
ICAgICAgICAgPSAzMzUsCisgICAgU0FNUExFUjJEU0hBRE9XICAgICAgICAgICA9IDMzNiwKKyAg
ICBTQU1QTEVSQ1VCRVNIQURPVyAgICAgICAgID0gMzM3LAorICAgIFNBTVBMRVIyREFSUkFZU0hB
RE9XICAgICAgPSAzMzgsCisgICAgU0FNUExFUkVYVEVSTkFMMkRZMllFWFQgICA9IDMzOSwKKyAg
ICBJTUFHRTJEICAgICAgICAgICAgICAgICAgID0gMzQwLAorICAgIElJTUFHRTJEICAgICAgICAg
ICAgICAgICAgPSAzNDEsCisgICAgVUlNQUdFMkQgICAgICAgICAgICAgICAgICA9IDM0MiwKKyAg
ICBJTUFHRTNEICAgICAgICAgICAgICAgICAgID0gMzQzLAorICAgIElJTUFHRTNEICAgICAgICAg
ICAgICAgICAgPSAzNDQsCisgICAgVUlNQUdFM0QgICAgICAgICAgICAgICAgICA9IDM0NSwKKyAg
ICBJTUFHRTJEQVJSQVkgICAgICAgICAgICAgID0gMzQ2LAorICAgIElJTUFHRTJEQVJSQVkgICAg
ICAgICAgICAgPSAzNDcsCisgICAgVUlNQUdFMkRBUlJBWSAgICAgICAgICAgICA9IDM0OCwKKyAg
ICBJTUFHRUNVQkUgICAgICAgICAgICAgICAgID0gMzQ5LAorICAgIElJTUFHRUNVQkUgICAgICAg
ICAgICAgICAgPSAzNTAsCisgICAgVUlNQUdFQ1VCRSAgICAgICAgICAgICAgICA9IDM1MSwKKyAg
ICBMQVlPVVQgICAgICAgICAgICAgICAgICAgID0gMzUyLAorICAgIFlVVkNTQ1NUQU5EQVJERVhU
ICAgICAgICAgPSAzNTMsCisgICAgWVVWQ1NDU1RBTkRBUkRFWFRDT05TVEFOVCA9IDM1NCwKKyAg
ICBJREVOVElGSUVSICAgICAgICAgICAgICAgID0gMzU1LAorICAgIFRZUEVfTkFNRSAgICAgICAg
ICAgICAgICAgPSAzNTYsCisgICAgRkxPQVRDT05TVEFOVCAgICAgICAgICAgICA9IDM1NywKKyAg
ICBJTlRDT05TVEFOVCAgICAgICAgICAgICAgID0gMzU4LAorICAgIFVJTlRDT05TVEFOVCAgICAg
ICAgICAgICAgPSAzNTksCisgICAgQk9PTENPTlNUQU5UICAgICAgICAgICAgICA9IDM2MCwKKyAg
ICBGSUVMRF9TRUxFQ1RJT04gICAgICAgICAgID0gMzYxLAorICAgIExFRlRfT1AgICAgICAgICAg
ICAgICAgICAgPSAzNjIsCisgICAgUklHSFRfT1AgICAgICAgICAgICAgICAgICA9IDM2MywKKyAg
ICBJTkNfT1AgICAgICAgICAgICAgICAgICAgID0gMzY0LAorICAgIERFQ19PUCAgICAgICAgICAg
ICAgICAgICAgPSAzNjUsCisgICAgTEVfT1AgICAgICAgICAgICAgICAgICAgICA9IDM2NiwKKyAg
ICBHRV9PUCAgICAgICAgICAgICAgICAgICAgID0gMzY3LAorICAgIEVRX09QICAgICAgICAgICAg
ICAgICAgICAgPSAzNjgsCisgICAgTkVfT1AgICAgICAgICAgICAgICAgICAgICA9IDM2OSwKKyAg
ICBBTkRfT1AgICAgICAgICAgICAgICAgICAgID0gMzcwLAorICAgIE9SX09QICAgICAgICAgICAg
ICAgICAgICAgPSAzNzEsCisgICAgWE9SX09QICAgICAgICAgICAgICAgICAgICA9IDM3MiwKKyAg
ICBNVUxfQVNTSUdOICAgICAgICAgICAgICAgID0gMzczLAorICAgIERJVl9BU1NJR04gICAgICAg
ICAgICAgICAgPSAzNzQsCisgICAgQUREX0FTU0lHTiAgICAgICAgICAgICAgICA9IDM3NSwKKyAg
ICBNT0RfQVNTSUdOICAgICAgICAgICAgICAgID0gMzc2LAorICAgIExFRlRfQVNTSUdOICAgICAg
ICAgICAgICAgPSAzNzcsCisgICAgUklHSFRfQVNTSUdOICAgICAgICAgICAgICA9IDM3OCwKKyAg
ICBBTkRfQVNTSUdOICAgICAgICAgICAgICAgID0gMzc5LAorICAgIFhPUl9BU1NJR04gICAgICAg
ICAgICAgICAgPSAzODAsCisgICAgT1JfQVNTSUdOICAgICAgICAgICAgICAgICA9IDM4MSwKKyAg
ICBTVUJfQVNTSUdOICAgICAgICAgICAgICAgID0gMzgyLAorICAgIExFRlRfUEFSRU4gICAgICAg
ICAgICAgICAgPSAzODMsCisgICAgUklHSFRfUEFSRU4gICAgICAgICAgICAgICA9IDM4NCwKKyAg
ICBMRUZUX0JSQUNLRVQgICAgICAgICAgICAgID0gMzg1LAorICAgIFJJR0hUX0JSQUNLRVQgICAg
ICAgICAgICAgPSAzODYsCisgICAgTEVGVF9CUkFDRSAgICAgICAgICAgICAgICA9IDM4NywKKyAg
ICBSSUdIVF9CUkFDRSAgICAgICAgICAgICAgID0gMzg4LAorICAgIERPVCAgICAgICAgICAgICAg
ICAgICAgICAgPSAzODksCisgICAgQ09NTUEgICAgICAgICAgICAgICAgICAgICA9IDM5MCwKKyAg
ICBDT0xPTiAgICAgICAgICAgICAgICAgICAgID0gMzkxLAorICAgIEVRVUFMICAgICAgICAgICAg
ICAgICAgICAgPSAzOTIsCisgICAgU0VNSUNPTE9OICAgICAgICAgICAgICAgICA9IDM5MywKKyAg
ICBCQU5HICAgICAgICAgICAgICAgICAgICAgID0gMzk0LAorICAgIERBU0ggICAgICAgICAgICAg
ICAgICAgICAgPSAzOTUsCisgICAgVElMREUgICAgICAgICAgICAgICAgICAgICA9IDM5NiwKKyAg
ICBQTFVTICAgICAgICAgICAgICAgICAgICAgID0gMzk3LAorICAgIFNUQVIgICAgICAgICAgICAg
ICAgICAgICAgPSAzOTgsCisgICAgU0xBU0ggICAgICAgICAgICAgICAgICAgICA9IDM5OSwKKyAg
ICBQRVJDRU5UICAgICAgICAgICAgICAgICAgID0gNDAwLAorICAgIExFRlRfQU5HTEUgICAgICAg
ICAgICAgICAgPSA0MDEsCisgICAgUklHSFRfQU5HTEUgICAgICAgICAgICAgICA9IDQwMiwKKyAg
ICBWRVJUSUNBTF9CQVIgICAgICAgICAgICAgID0gNDAzLAorICAgIENBUkVUICAgICAgICAgICAg
ICAgICAgICAgPSA0MDQsCisgICAgQU1QRVJTQU5EICAgICAgICAgICAgICAgICA9IDQwNSwKKyAg
ICBRVUVTVElPTiAgICAgICAgICAgICAgICAgID0gNDA2Cit9OwogI2VuZGlmCiAKIC8qIFZhbHVl
IHR5cGUuICAqLwotI2lmICEgZGVmaW5lZCBZWVNUWVBFICYmICEgZGVmaW5lZCBZWVNUWVBFX0lT
X0RFQ0xBUkVECi0KLXVuaW9uIFlZU1RZUEUKLXsKKyNpZiAhZGVmaW5lZCBZWVNUWVBFICYmICFk
ZWZpbmVkIFlZU1RZUEVfSVNfREVDTEFSRUQKIAordW5pb24gWVlTVFlQRSB7CiAKLSAgICBzdHJ1
Y3QgeworICAgIHN0cnVjdAorICAgIHsKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgVFN0
cmluZyAqc3RyaW5nOwogICAgICAgICAgICAgZmxvYXQgZjsKQEAgLTE5NywxNyArMjE3LDIyIEBA
IHVuaW9uIFlZU1RZUEUKICAgICAgICAgICAgIHVuc2lnbmVkIGludCB1OwogICAgICAgICAgICAg
Ym9vbCBiOwogICAgICAgICB9OwotICAgICAgICBUU3ltYm9sKiBzeW1ib2w7CisgICAgICAgIFRT
eW1ib2wgKnN5bWJvbDsKICAgICB9IGxleDsKLSAgICBzdHJ1Y3QgeworICAgIHN0cnVjdAorICAg
IHsKICAgICAgICAgVE9wZXJhdG9yIG9wOwogICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICBU
SW50ZXJtTm9kZSogaW50ZXJtTm9kZTsKKyAgICAgICAgICAgIFRJbnRlcm1Ob2RlICppbnRlcm1O
b2RlOwogICAgICAgICAgICAgVEludGVybU5vZGVQYWlyIG5vZGVQYWlyOwotICAgICAgICAgICAg
VEludGVybVR5cGVkKiBpbnRlcm1UeXBlZE5vZGU7Ci0gICAgICAgICAgICBUSW50ZXJtQWdncmVn
YXRlKiBpbnRlcm1BZ2dyZWdhdGU7Ci0gICAgICAgICAgICBUSW50ZXJtU3dpdGNoKiBpbnRlcm1T
d2l0Y2g7Ci0gICAgICAgICAgICBUSW50ZXJtQ2FzZSogaW50ZXJtQ2FzZTsKKyAgICAgICAgICAg
IFRJbnRlcm1GdW5jdGlvbkNhbGxPck1ldGhvZCBjYWxsT3JNZXRob2RQYWlyOworICAgICAgICAg
ICAgVEludGVybVR5cGVkICppbnRlcm1UeXBlZE5vZGU7CisgICAgICAgICAgICBUSW50ZXJtQWdn
cmVnYXRlICppbnRlcm1BZ2dyZWdhdGU7CisgICAgICAgICAgICBUSW50ZXJtQmxvY2sgKmludGVy
bUJsb2NrOworICAgICAgICAgICAgVEludGVybURlY2xhcmF0aW9uICppbnRlcm1EZWNsYXJhdGlv
bjsKKyAgICAgICAgICAgIFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAqaW50ZXJtRnVuY3Rpb25Q
cm90b3R5cGU7CisgICAgICAgICAgICBUSW50ZXJtU3dpdGNoICppbnRlcm1Td2l0Y2g7CisgICAg
ICAgICAgICBUSW50ZXJtQ2FzZSAqaW50ZXJtQ2FzZTsKICAgICAgICAgfTsKICAgICAgICAgdW5p
b24gewogICAgICAgICAgICAgVFR5cGVTcGVjaWZpZXJOb25BcnJheSB0eXBlU3BlY2lmaWVyTm9u
QXJyYXk7CkBAIC0yMTUsMzkgKzI0MCwzNSBAQCB1bmlvbiBZWVNUWVBFCiAgICAgICAgICAgICBU
UHJlY2lzaW9uIHByZWNpc2lvbjsKICAgICAgICAgICAgIFRMYXlvdXRRdWFsaWZpZXIgbGF5b3V0
UXVhbGlmaWVyOwogICAgICAgICAgICAgVFF1YWxpZmllciBxdWFsaWZpZXI7Ci0gICAgICAgICAg
ICBURnVuY3Rpb24qIGZ1bmN0aW9uOworICAgICAgICAgICAgVEZ1bmN0aW9uICpmdW5jdGlvbjsK
ICAgICAgICAgICAgIFRQYXJhbWV0ZXIgcGFyYW07Ci0gICAgICAgICAgICBURmllbGQqIGZpZWxk
OwotICAgICAgICAgICAgVEZpZWxkTGlzdCogZmllbGRMaXN0OworICAgICAgICAgICAgVEZpZWxk
ICpmaWVsZDsKKyAgICAgICAgICAgIFRGaWVsZExpc3QgKmZpZWxkTGlzdDsKICAgICAgICAgICAg
IFRRdWFsaWZpZXJXcmFwcGVyQmFzZSAqcXVhbGlmaWVyV3JhcHBlcjsKICAgICAgICAgICAgIFRU
eXBlUXVhbGlmaWVyQnVpbGRlciAqdHlwZVF1YWxpZmllckJ1aWxkZXI7CiAgICAgICAgIH07CiAg
ICAgfSBpbnRlcm07Ci0KLQogfTsKIAogdHlwZWRlZiB1bmlvbiBZWVNUWVBFIFlZU1RZUEU7Ci0j
IGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQotIyBkZWZpbmUgWVlTVFlQRV9JU19ERUNMQVJF
RCAxCisjZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCisjZGVmaW5lIFlZU1RZUEVfSVNfREVD
TEFSRUQgMQogI2VuZGlmCiAKIC8qIExvY2F0aW9uIHR5cGUuICAqLwotI2lmICEgZGVmaW5lZCBZ
WUxUWVBFICYmICEgZGVmaW5lZCBZWUxUWVBFX0lTX0RFQ0xBUkVECisjaWYgIWRlZmluZWQgWVlM
VFlQRSAmJiAhZGVmaW5lZCBZWUxUWVBFX0lTX0RFQ0xBUkVECiB0eXBlZGVmIHN0cnVjdCBZWUxU
WVBFIFlZTFRZUEU7CiBzdHJ1Y3QgWVlMVFlQRQogewotICBpbnQgZmlyc3RfbGluZTsKLSAgaW50
IGZpcnN0X2NvbHVtbjsKLSAgaW50IGxhc3RfbGluZTsKLSAgaW50IGxhc3RfY29sdW1uOworICAg
IGludCBmaXJzdF9saW5lOworICAgIGludCBmaXJzdF9jb2x1bW47CisgICAgaW50IGxhc3RfbGlu
ZTsKKyAgICBpbnQgbGFzdF9jb2x1bW47CiB9OwotIyBkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJF
RCAxCi0jIGRlZmluZSBZWUxUWVBFX0lTX1RSSVZJQUwgMQorI2RlZmluZSBZWUxUWVBFX0lTX0RF
Q0xBUkVEIDEKKyNkZWZpbmUgWVlMVFlQRV9JU19UUklWSUFMIDEKICNlbmRpZgogCi0KLQotaW50
IHl5cGFyc2UgKFRQYXJzZUNvbnRleHQqIGNvbnRleHQsIHZvaWQgKnNjYW5uZXIpOworaW50IHl5
cGFyc2UoVFBhcnNlQ29udGV4dCAqY29udGV4dCwgdm9pZCAqc2Nhbm5lcik7CiAKICNlbmRpZiAv
KiAhWVlfWVlfR0xTTEFOR19UQUJfSF9JTkNMVURFRCAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2ludGVybU91dC5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9pbnRlcm1PdXQu
Y3BwCmluZGV4IDM1MmZkZTM1YTUzLi4yYjcxZWZhMGVhYSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvaW50ZXJtT3V0LmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9pbnRlcm1P
dXQuY3BwCkBAIC03LDYgKzcsOSBAQAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW50
ZXJtZWRpYXRlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xUYWJsZS5o
IgogCituYW1lc3BhY2Ugc2gKK3sKKwogbmFtZXNwYWNlCiB7CiAKQEAgLTE0LDcgKzE3LDcgQEAg
dm9pZCBPdXRwdXRGdW5jdGlvbihUSW5mb1NpbmtCYXNlICZvdXQsIGNvbnN0IGNoYXIgKnN0ciwg
VEZ1bmN0aW9uU3ltYm9sSW5mbyAqaW4KIHsKICAgICBjb25zdCBjaGFyICppbnRlcm5hbCA9IGlu
Zm8tPmdldE5hbWVPYmooKS5pc0ludGVybmFsKCkgPyAiIChpbnRlcm5hbCBmdW5jdGlvbikiIDog
IiI7CiAgICAgb3V0IDw8IHN0ciA8PCBpbnRlcm5hbCA8PCAiOiAiIDw8IGluZm8tPmdldE5hbWVP
YmooKS5nZXRTdHJpbmcoKSA8PCAiIChzeW1ib2wgaWQgIgotICAgICAgICA8PCBpbmZvLT5nZXRJ
ZCgpIDw8ICIpIjsKKyAgICAgICAgPDwgaW5mby0+Z2V0SWQoKS5nZXQoKSA8PCAiKSI7CiB9CiAK
IC8vCkBAIC0zMywxMiArMzYsOCBAQCB2b2lkIE91dHB1dEZ1bmN0aW9uKFRJbmZvU2lua0Jhc2Ug
Jm91dCwgY29uc3QgY2hhciAqc3RyLCBURnVuY3Rpb25TeW1ib2xJbmZvICppbgogY2xhc3MgVE91
dHB1dFRyYXZlcnNlciA6IHB1YmxpYyBUSW50ZXJtVHJhdmVyc2VyCiB7CiAgIHB1YmxpYzoKLSAg
ICBUT3V0cHV0VHJhdmVyc2VyKFRJbmZvU2lua0Jhc2UgJmkpCi0gICAgICAgIDogVEludGVybVRy
YXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLAotICAgICAgICAgIHNpbmsoaSkKLSAgICB7Ci0g
ICAgfQotICAgIFRJbmZvU2lua0Jhc2UmIHNpbms7CisgICAgVE91dHB1dFRyYXZlcnNlcihUSW5m
b1NpbmtCYXNlICZpKSA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwgc2lu
ayhpKSB7fQorICAgIFRJbmZvU2lua0Jhc2UgJnNpbms7CiAKICAgcHJvdGVjdGVkOgogICAgIHZv
aWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCAqKSBvdmVycmlkZTsKQEAgLTUwLDkgKzQ5LDEy
IEBAIGNsYXNzIFRPdXRwdXRUcmF2ZXJzZXIgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAg
IGJvb2wgdmlzaXRJZkVsc2UoVmlzaXQgdmlzaXQsIFRJbnRlcm1JZkVsc2UgKm5vZGUpIG92ZXJy
aWRlOwogICAgIGJvb2wgdmlzaXRTd2l0Y2goVmlzaXQgdmlzaXQsIFRJbnRlcm1Td2l0Y2ggKm5v
ZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRDYXNlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQ2Fz
ZSAqbm9kZSkgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdEZ1bmN0aW9uUHJvdG90eXBlKFZpc2l0
IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25Qcm90b3R5cGUgKm5vZGUpIG92ZXJyaWRlOwogICAgIGJv
b2wgdmlzaXRGdW5jdGlvbkRlZmluaXRpb24oVmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvbkRl
ZmluaXRpb24gKm5vZGUpIG92ZXJyaWRlOwogICAgIGJvb2wgdmlzaXRBZ2dyZWdhdGUoVmlzaXQg
dmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKikgb3ZlcnJpZGU7CiAgICAgYm9vbCB2aXNpdEJsb2Nr
KFZpc2l0IHZpc2l0LCBUSW50ZXJtQmxvY2sgKikgb3ZlcnJpZGU7CisgICAgYm9vbCB2aXNpdElu
dmFyaWFudERlY2xhcmF0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtSW52YXJpYW50RGVjbGFyYXRp
b24gKm5vZGUpIG92ZXJyaWRlOworICAgIGJvb2wgdmlzaXREZWNsYXJhdGlvbihWaXNpdCB2aXNp
dCwgVEludGVybURlY2xhcmF0aW9uICpub2RlKSBvdmVycmlkZTsKICAgICBib29sIHZpc2l0TG9v
cChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AgKikgb3ZlcnJpZGU7CiAgICAgYm9vbCB2aXNpdEJy
YW5jaChWaXNpdCB2aXNpdCwgVEludGVybUJyYW5jaCAqKSBvdmVycmlkZTsKIH07CkBAIC02NCw3
ICs2Niw3IEBAIHZvaWQgT3V0cHV0VHJlZVRleHQoVEluZm9TaW5rQmFzZSAmc2luaywgVEludGVy
bU5vZGUgKm5vZGUsIGNvbnN0IGludCBkZXB0aCkKIHsKICAgICBpbnQgaTsKIAotICAgIHNpbmsu
bG9jYXRpb24obm9kZS0+Z2V0TGluZSgpKTsKKyAgICBzaW5rLmxvY2F0aW9uKG5vZGUtPmdldExp
bmUoKS5maXJzdF9maWxlLCBub2RlLT5nZXRMaW5lKCkuZmlyc3RfbGluZSk7CiAKICAgICBmb3Ig
KGkgPSAwOyBpIDwgZGVwdGg7ICsraSkKICAgICAgICAgc2luayA8PCAiICAiOwpAQCAtOTMsMTMg
Kzk1LDE4IEBAIGJvb2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRTd2l6emxlKFZpc2l0IHZpc2l0
LCBUSW50ZXJtU3dpenpsZSAqbm9kZSkKIHsKICAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBzaW5r
OwogICAgIE91dHB1dFRyZWVUZXh0KG91dCwgbm9kZSwgbURlcHRoKTsKLSAgICBvdXQgPDwgInZl
Y3RvciBzd2l6emxlIjsKKyAgICBvdXQgPDwgInZlY3RvciBzd2l6emxlICgiOworICAgIG5vZGUt
PndyaXRlT2Zmc2V0c0FzWFlaVygmb3V0KTsKKyAgICBvdXQgPDwgIikiOworCisgICAgb3V0IDw8
ICIgKCIgPDwgbm9kZS0+Z2V0Q29tcGxldGVTdHJpbmcoKSA8PCAiKSI7CisgICAgb3V0IDw8ICJc
biI7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRC
aW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpCiB7Ci0gICAgVEluZm9TaW5r
QmFzZSYgb3V0ID0gc2luazsKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBzaW5rOwogCiAgICAg
T3V0cHV0VHJlZVRleHQob3V0LCBub2RlLCBtRGVwdGgpOwogCkBAIC0yNTYsOCArMjYzLDcgQEAg
Ym9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEJpbmFyeShWaXNpdCB2aXNpdCwgVEludGVybUJp
bmFyeSAqbm9kZSkKICAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIGZvciBkaXJlY3QgaW5kZXhlcy4g
QmVjYXVzZSBjb25zdGFudAogICAgIC8vIHVuaW9ucyBhcmUgbm90IGF3YXJlIHRoZXkgYXJlIHN0
cnVjdCBpbmRleGVzLCB0cmVhdCB0aGVtCiAgICAgLy8gaGVyZSB3aGVyZSB3ZSBoYXZlIHRoYXQg
Y29udGV4dHVhbCBrbm93bGVkZ2UuCi0gICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wSW5kZXhE
aXJlY3RTdHJ1Y3QgfHwKLSAgICAgICAgbm9kZS0+Z2V0T3AoKSA9PSBFT3BJbmRleERpcmVjdElu
dGVyZmFjZUJsb2NrKQorICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcEluZGV4RGlyZWN0U3Ry
dWN0IHx8IG5vZGUtPmdldE9wKCkgPT0gRU9wSW5kZXhEaXJlY3RJbnRlcmZhY2VCbG9jaykKICAg
ICB7CiAgICAgICAgIG1EZXB0aCsrOwogICAgICAgICBub2RlLT5nZXRMZWZ0KCktPnRyYXZlcnNl
KHRoaXMpOwpAQCAtMjY5LDggKzI3NSw4IEBAIGJvb2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRC
aW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1CaW5hcnkgKm5vZGUpCiAgICAgICAgIE91dHB1dFRy
ZWVUZXh0KG91dCwgaW50ZXJtQ29uc3RhbnRVbmlvbiwgbURlcHRoICsgMSk7CiAKICAgICAgICAg
Ly8gVGhlIGZvbGxvd2luZyBjb2RlIGZpbmRzIHRoZSBmaWVsZCBuYW1lIGZyb20gdGhlIGNvbnN0
YW50IHVuaW9uCi0gICAgICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICpjb25zdGFudFVuaW9uID0g
aW50ZXJtQ29uc3RhbnRVbmlvbi0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKTsKLSAgICAgICAgY29u
c3QgVFN0cnVjdHVyZSAqc3RydWN0dXJlID0gbm9kZS0+Z2V0TGVmdCgpLT5nZXRUeXBlKCkuZ2V0
U3RydWN0KCk7CisgICAgICAgIGNvbnN0IFRDb25zdGFudFVuaW9uICpjb25zdGFudFVuaW9uICAg
PSBpbnRlcm1Db25zdGFudFVuaW9uLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpOworICAgICAgICBj
b25zdCBUU3RydWN0dXJlICpzdHJ1Y3R1cmUgICAgICAgICAgID0gbm9kZS0+Z2V0TGVmdCgpLT5n
ZXRUeXBlKCkuZ2V0U3RydWN0KCk7CiAgICAgICAgIGNvbnN0IFRJbnRlcmZhY2VCbG9jayAqaW50
ZXJmYWNlQmxvY2sgPSBub2RlLT5nZXRMZWZ0KCktPmdldFR5cGUoKS5nZXRJbnRlcmZhY2VCbG9j
aygpOwogICAgICAgICBBU1NFUlQoc3RydWN0dXJlIHx8IGludGVyZmFjZUJsb2NrKTsKIApAQCAt
Mjg4LDg2ICsyOTQsNDcgQEAgYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEJpbmFyeShWaXNp
dCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkKIAogYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2
aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVW5hcnkgKm5vZGUpCiB7Ci0gICAgVEluZm9T
aW5rQmFzZSYgb3V0ID0gc2luazsKKyAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBzaW5rOwogCiAg
ICAgT3V0cHV0VHJlZVRleHQob3V0LCBub2RlLCBtRGVwdGgpOwogCiAgICAgc3dpdGNoIChub2Rl
LT5nZXRPcCgpKQogICAgIHsKLSAgICAgIGNhc2UgRU9wTmVnYXRpdmU6ICAgICAgIG91dCA8PCAi
TmVnYXRlIHZhbHVlIjsgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wUG9zaXRpdmU6ICAg
ICAgIG91dCA8PCAiUG9zaXRpdmUgc2lnbiI7ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9w
VmVjdG9yTG9naWNhbE5vdDoKLSAgICAgIGNhc2UgRU9wTG9naWNhbE5vdDogICAgIG91dCA8PCAi
TmVnYXRlIGNvbmRpdGlvbmFsIjsgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQml0d2lzZU5vdDog
ICAgIG91dCA8PCAiYml0LXdpc2Ugbm90IjsgICAgICAgICBicmVhazsKLQotICAgICAgY2FzZSBF
T3BQb3N0SW5jcmVtZW50OiAgb3V0IDw8ICJQb3N0LUluY3JlbWVudCI7ICAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSBFT3BQb3N0RGVjcmVtZW50OiAgb3V0IDw8ICJQb3N0LURlY3JlbWVudCI7ICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BQcmVJbmNyZW1lbnQ6ICAgb3V0IDw8ICJQcmUtSW5j
cmVtZW50IjsgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BQcmVEZWNyZW1lbnQ6ICAgb3V0
IDw8ICJQcmUtRGVjcmVtZW50IjsgICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcFJhZGlh
bnM6ICAgICAgICBvdXQgPDwgInJhZGlhbnMiOyAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEVPcERlZ3JlZXM6ICAgICAgICBvdXQgPDwgImRlZ3JlZXMiOyAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcFNpbjogICAgICAgICAgICBvdXQgPDwgInNpbmUiOyAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcENvczogICAgICAgICAgICBvdXQgPDwgImNv
c2luZSI7ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFRhbjogICAgICAgICAg
ICBvdXQgPDwgInRhbmdlbnQiOyAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEFz
aW46ICAgICAgICAgICBvdXQgPDwgImFyYyBzaW5lIjsgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcEFjb3M6ICAgICAgICAgICBvdXQgPDwgImFyYyBjb3NpbmUiOyAgICAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIEVPcEF0YW46ICAgICAgICAgICBvdXQgPDwgImFyYyB0YW5nZW50
IjsgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRU9wU2luaDogICAgICAgICAgIG91dCA8
PCAiaHlwZXJib2xpYyBzaW5lIjsgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ29zaDogICAg
ICAgICAgIG91dCA8PCAiaHlwZXJib2xpYyBjb3NpbmUiOyAgICBicmVhazsKLSAgICAgIGNhc2Ug
RU9wVGFuaDogICAgICAgICAgIG91dCA8PCAiaHlwZXJib2xpYyB0YW5nZW50IjsgICBicmVhazsK
LSAgICAgIGNhc2UgRU9wQXNpbmg6ICAgICAgICAgIG91dCA8PCAiYXJjIGh5cGVyYm9saWMgc2lu
ZSI7ICBicmVhazsKLSAgICAgIGNhc2UgRU9wQWNvc2g6ICAgICAgICAgIG91dCA8PCAiYXJjIGh5
cGVyYm9saWMgY29zaW5lIjsgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEF0YW5oOiAgICAgICAgICBv
dXQgPDwgImFyYyBoeXBlcmJvbGljIHRhbmdlbnQiOyBicmVhazsKLQotICAgICAgY2FzZSBFT3BF
eHA6ICAgICAgICAgICAgb3V0IDw8ICJleHAiOyAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBFT3BMb2c6ICAgICAgICAgICAgb3V0IDw8ICJsb2ciOyAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgY2FzZSBFT3BFeHAyOiAgICAgICAgICAgb3V0IDw8ICJleHAyIjsgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BMb2cyOiAgICAgICAgICAgb3V0IDw8
ICJsb2cyIjsgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BTcXJ0OiAgICAg
ICAgICAgb3V0IDw8ICJzcXJ0IjsgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBF
T3BJbnZlcnNlU3FydDogICAgb3V0IDw8ICJpbnZlcnNlIHNxcnQiOyAgICAgICAgIGJyZWFrOwot
Ci0gICAgICBjYXNlIEVPcEFiczogICAgICAgICAgICBvdXQgPDwgIkFic29sdXRlIHZhbHVlIjsg
ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFNpZ246ICAgICAgICAgICBvdXQgPDwgIlNpZ24i
OyAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEZsb29yOiAgICAgICAgICBv
dXQgPDwgIkZsb29yIjsgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFRydW5j
OiAgICAgICAgICBvdXQgPDwgIlRydW5jYXRlIjsgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBj
YXNlIEVPcFJvdW5kOiAgICAgICAgICBvdXQgPDwgIlJvdW5kIjsgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcFJvdW5kRXZlbjogICAgICBvdXQgPDwgIlJvdW5kIGhhbGYgZXZl
biI7ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcENlaWw6ICAgICAgICAgICBvdXQgPDwgIkNl
aWxpbmciOyAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEZyYWN0OiAgICAgICAg
ICBvdXQgPDwgIkZyYWN0aW9uIjsgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcElz
TmFuOiAgICAgICAgICBvdXQgPDwgIklzIG5vdCBhIG51bWJlciI7ICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcElzSW5mOiAgICAgICAgICBvdXQgPDwgIklzIGluZmluaXR5IjsgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgIGNhc2UgRU9wRmxvYXRCaXRzVG9JbnQ6IG91dCA8PCAiZmxvYXQgYml0
cyB0byBpbnQiOyAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wRmxvYXRCaXRzVG9VaW50OiBvdXQg
PDwgImZsb2F0IGJpdHMgdG8gdWludCI7ICBicmVhazsKLSAgICAgIGNhc2UgRU9wSW50Qml0c1Rv
RmxvYXQ6IG91dCA8PCAiaW50IGJpdHMgdG8gZmxvYXQiOyAgICBicmVhazsKLSAgICAgIGNhc2Ug
RU9wVWludEJpdHNUb0Zsb2F0OiBvdXQgPDwgInVpbnQgYml0cyB0byBmbG9hdCI7ICBicmVhazsK
LQotICAgICAgY2FzZSBFT3BQYWNrU25vcm0yeDE2OiAgb3V0IDw8ICJwYWNrIFNub3JtIDJ4MTYi
OyAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BQYWNrVW5vcm0yeDE2OiAgb3V0IDw8ICJwYWNr
IFVub3JtIDJ4MTYiOyAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BQYWNrSGFsZjJ4MTY6ICAg
b3V0IDw8ICJwYWNrIGhhbGYgMngxNiI7ICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcFVu
cGFja1Nub3JtMngxNjogb3V0IDw8ICJ1bnBhY2sgU25vcm0gMngxNiI7ICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcFVucGFja1Vub3JtMngxNjogb3V0IDw8ICJ1bnBhY2sgVW5vcm0gMngxNiI7ICAg
YnJlYWs7Ci0gICAgICBjYXNlIEVPcFVucGFja0hhbGYyeDE2OiAgb3V0IDw8ICJ1bnBhY2sgaGFs
ZiAyeDE2IjsgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRU9wTGVuZ3RoOiAgICAgICAgIG91dCA8
PCAibGVuZ3RoIjsgICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wTm9ybWFsaXpl
OiAgICAgIG91dCA8PCAibm9ybWFsaXplIjsgICAgICAgICAgICBicmVhazsKLSAgICAgIC8vIGNh
c2UgRU9wRFBkeDogICAgICAgICAgIG91dCA8PCAiZFBkeCI7ICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgIC8vIGNhc2UgRU9wRFBkeTogICAgICAgICAgIG91dCA8PCAiZFBkeSI7ICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgIC8vIGNhc2UgRU9wRndpZHRoOiAgICAgICAgIG91dCA8
PCAiZndpZHRoIjsgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgY2FzZSBFT3BEZXRlcm1p
bmFudDogICAgb3V0IDw8ICJkZXRlcm1pbmFudCI7ICAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BUcmFuc3Bvc2U6ICAgICAgb3V0IDw8ICJ0cmFuc3Bvc2UiOyAgICAgICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBFT3BJbnZlcnNlOiAgICAgICAgb3V0IDw8ICJpbnZlcnNlIjsgICAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcEFueTogICAgICAgICAgICBvdXQgPDwgImFu
eSI7ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEFsbDogICAgICAgICAg
ICBvdXQgPDwgImFsbCI7ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgIG91dC5wcmVmaXgoRVByZWZpeEVycm9yKTsKLSAgICAgICAgb3V0IDw8ICJCYWQg
dW5hcnkgb3AiOworICAgICAgICAvLyBHaXZlIHZlcmJvc2UgbmFtZXMgZm9yIG9wcyB0aGF0IGhh
dmUgc3BlY2lhbCBzeW50YXggYW5kIHNvbWUgYnVpbHQtaW4gZnVuY3Rpb25zIHRoYXQgYXJlCisg
ICAgICAgIC8vIGVhc3kgdG8gY29uZnVzZSB3aXRoIG90aGVycywgYnV0IG1vc3RseSB1c2UgR0xT
TCBuYW1lcyBmb3IgZnVuY3Rpb25zLgorICAgICAgICBjYXNlIEVPcE5lZ2F0aXZlOgorICAgICAg
ICAgICAgb3V0IDw8ICJOZWdhdGUgdmFsdWUiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wUG9zaXRpdmU6CisgICAgICAgICAgICBvdXQgPDwgIlBvc2l0aXZlIHNpZ24iOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wTG9naWNhbE5vdDoKKyAgICAgICAg
ICAgIG91dCA8PCAibmVnYXRpb24iOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
RU9wQml0d2lzZU5vdDoKKyAgICAgICAgICAgIG91dCA8PCAiYml0LXdpc2Ugbm90IjsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRU9wUG9zdEluY3JlbWVudDoKKyAgICAgICAg
ICAgIG91dCA8PCAiUG9zdC1JbmNyZW1lbnQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRU9wUG9zdERlY3JlbWVudDoKKyAgICAgICAgICAgIG91dCA8PCAiUG9zdC1EZWNyZW1l
bnQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wUHJlSW5jcmVtZW50Ogor
ICAgICAgICAgICAgb3V0IDw8ICJQcmUtSW5jcmVtZW50IjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEVPcFByZURlY3JlbWVudDoKKyAgICAgICAgICAgIG91dCA8PCAiUHJlLURl
Y3JlbWVudCI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEVPcExvZ2ljYWxO
b3RDb21wb25lbnRXaXNlOgorICAgICAgICAgICAgb3V0IDw8ICJjb21wb25lbnQtd2lzZSBub3Qi
OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIG91
dCA8PCBHZXRPcGVyYXRvclN0cmluZyhub2RlLT5nZXRPcCgpKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgIH0KIAogICAgIG91dCA8PCAiICgiIDw8IG5vZGUtPmdldENvbXBsZXRlU3RyaW5nKCkg
PDwgIikiOwpAQCAtMzgxLDggKzM0OCwyOCBAQCBib29sIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0
RnVuY3Rpb25EZWZpbml0aW9uKFZpc2l0IHZpc2l0LCBUSW50ZXJtRnVuY3Rpb25EZWZpbgogewog
ICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IHNpbms7CiAgICAgT3V0cHV0VHJlZVRleHQob3V0LCBu
b2RlLCBtRGVwdGgpOwotICAgIE91dHB1dEZ1bmN0aW9uKG91dCwgIkZ1bmN0aW9uIERlZmluaXRp
b24iLCBub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKSk7CisgICAgb3V0IDw8ICJGdW5jdGlv
biBEZWZpbml0aW9uOlxuIjsKKyAgICBvdXQgPDwgIlxuIjsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdEludmFyaWFudERlY2xhcmF0aW9uKFZpc2l0
IHZpc2l0LCBUSW50ZXJtSW52YXJpYW50RGVjbGFyYXRpb24gKm5vZGUpCit7CisgICAgVEluZm9T
aW5rQmFzZSAmb3V0ID0gc2luazsKKyAgICBPdXRwdXRUcmVlVGV4dChvdXQsIG5vZGUsIG1EZXB0
aCk7CisgICAgb3V0IDw8ICJJbnZhcmlhbnQgRGVjbGFyYXRpb246XG4iOworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIFRPdXRwdXRUcmF2ZXJzZXI6OnZpc2l0RnVuY3Rpb25Qcm90b3R5cGUo
VmlzaXQgdmlzaXQsIFRJbnRlcm1GdW5jdGlvblByb3RvdHlwZSAqbm9kZSkKK3sKKyAgICBUSW5m
b1NpbmtCYXNlICZvdXQgPSBzaW5rOworCisgICAgT3V0cHV0VHJlZVRleHQob3V0LCBub2RlLCBt
RGVwdGgpOworICAgIE91dHB1dEZ1bmN0aW9uKG91dCwgIkZ1bmN0aW9uIFByb3RvdHlwZSIsIG5v
ZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5mbygpKTsKKyAgICBvdXQgPDwgIiAoIiA8PCBub2RlLT5n
ZXRDb21wbGV0ZVN0cmluZygpIDw8ICIpIjsKICAgICBvdXQgPDwgIlxuIjsKKwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0zOTQsODkgKzM4MSw3NSBAQCBib29sIFRPdXRwdXRUcmF2ZXJzZXI6
OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpub2RlKQogCiAg
ICAgaWYgKG5vZGUtPmdldE9wKCkgPT0gRU9wTnVsbCkKICAgICB7Ci0gICAgICAgIG91dC5wcmVm
aXgoRVByZWZpeEVycm9yKTsKKyAgICAgICAgb3V0LnByZWZpeChTSF9FUlJPUik7CiAgICAgICAg
IG91dCA8PCAibm9kZSBpcyBzdGlsbCBFT3BOdWxsIVxuIjsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCi0KLSAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCisgICAgaWYgKG5vZGUtPmlz
Q29uc3RydWN0b3IoKSkKKyAgICB7CisgICAgICAgIGlmIChub2RlLT5nZXRPcCgpID09IEVPcENv
bnN0cnVjdFN0cnVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgb3V0IDw8ICJDb25zdHJ1Y3Qg
c3RydWN0dXJlIjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG91dCA8PCAiQ29uc3RydWN0ICIgPDwgR2V0T3BlcmF0b3JTdHJpbmcobm9kZS0+Z2V0T3Ao
KSk7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQogICAgIHsKLSAgICAgIGNhc2UgRU9wRnVu
Y3Rpb25DYWxsOgotICAgICAgICAgIE91dHB1dEZ1bmN0aW9uKG91dCwgIkZ1bmN0aW9uIENhbGwi
LCBub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKSk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcFBhcmFtZXRlcnM6ICAgIG91dCA8PCAiRnVuY3Rpb24gUGFyYW1ldGVyczogIjsg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BQcm90b3R5cGU6Ci0gICAgICAgICAg
T3V0cHV0RnVuY3Rpb24ob3V0LCAiRnVuY3Rpb24gUHJvdG90eXBlIiwgbm9kZS0+Z2V0RnVuY3Rp
b25TeW1ib2xJbmZvKCkpOwotICAgICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcENvbnN0
cnVjdEZsb2F0OiBvdXQgPDwgIkNvbnN0cnVjdCBmbG9hdCI7IGJyZWFrOwotICAgICAgY2FzZSBF
T3BDb25zdHJ1Y3RWZWMyOiAgb3V0IDw8ICJDb25zdHJ1Y3QgdmVjMiI7ICBicmVhazsKLSAgICAg
IGNhc2UgRU9wQ29uc3RydWN0VmVjMzogIG91dCA8PCAiQ29uc3RydWN0IHZlYzMiOyAgYnJlYWs7
Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdFZlYzQ6ICBvdXQgPDwgIkNvbnN0cnVjdCB2ZWM0Ijsg
IGJyZWFrOwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCb29sOiAgb3V0IDw8ICJDb25zdHJ1Y3Qg
Ym9vbCI7ICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0QlZlYzI6IG91dCA8PCAiQ29u
c3RydWN0IGJ2ZWMyIjsgYnJlYWs7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdEJWZWMzOiBvdXQg
PDwgIkNvbnN0cnVjdCBidmVjMyI7IGJyZWFrOwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RCVmVj
NDogb3V0IDw8ICJDb25zdHJ1Y3QgYnZlYzQiOyBicmVhazsKLSAgICAgIGNhc2UgRU9wQ29uc3Ry
dWN0SW50OiAgIG91dCA8PCAiQ29uc3RydWN0IGludCI7ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVP
cENvbnN0cnVjdElWZWMyOiBvdXQgPDwgIkNvbnN0cnVjdCBpdmVjMiI7IGJyZWFrOwotICAgICAg
Y2FzZSBFT3BDb25zdHJ1Y3RJVmVjMzogb3V0IDw8ICJDb25zdHJ1Y3QgaXZlYzMiOyBicmVhazsK
LSAgICAgIGNhc2UgRU9wQ29uc3RydWN0SVZlYzQ6IG91dCA8PCAiQ29uc3RydWN0IGl2ZWM0Ijsg
YnJlYWs7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdFVJbnQ6ICBvdXQgPDwgIkNvbnN0cnVjdCB1
aW50IjsgIGJyZWFrOwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RVVmVjMjogb3V0IDw8ICJDb25z
dHJ1Y3QgdXZlYzIiOyBicmVhazsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0VVZlYzM6IG91dCA8
PCAiQ29uc3RydWN0IHV2ZWMzIjsgYnJlYWs7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdFVWZWM0
OiBvdXQgPDwgIkNvbnN0cnVjdCB1dmVjNCI7IGJyZWFrOwotICAgICAgY2FzZSBFT3BDb25zdHJ1
Y3RNYXQyOiAgb3V0IDw8ICJDb25zdHJ1Y3QgbWF0MiI7ICBicmVhazsKLSAgICAgIGNhc2UgRU9w
Q29uc3RydWN0TWF0MngzOiAgb3V0IDw8ICJDb25zdHJ1Y3QgbWF0MngzIjsgIGJyZWFrOwotICAg
ICAgY2FzZSBFT3BDb25zdHJ1Y3RNYXQyeDQ6ICBvdXQgPDwgIkNvbnN0cnVjdCBtYXQyeDQiOyAg
YnJlYWs7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4MjogIG91dCA8PCAiQ29uc3RydWN0
IG1hdDN4MiI7ICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ29uc3RydWN0TWF0MzogIG91dCA8PCAi
Q29uc3RydWN0IG1hdDMiOyAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDN4NDog
IG91dCA8PCAiQ29uc3RydWN0IG1hdDN4NCI7ICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ29uc3Ry
dWN0TWF0NHgyOiAgb3V0IDw8ICJDb25zdHJ1Y3QgbWF0NHgyIjsgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BDb25zdHJ1Y3RNYXQ0eDM6ICBvdXQgPDwgIkNvbnN0cnVjdCBtYXQ0eDMiOyAgYnJlYWs7
Ci0gICAgICBjYXNlIEVPcENvbnN0cnVjdE1hdDQ6ICBvdXQgPDwgIkNvbnN0cnVjdCBtYXQ0Ijsg
IGJyZWFrOwotICAgICAgY2FzZSBFT3BDb25zdHJ1Y3RTdHJ1Y3Q6ICBvdXQgPDwgIkNvbnN0cnVj
dCBzdHJ1Y3R1cmUiOyAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRU9wTGVzc1RoYW46ICAgICAgICAg
b3V0IDw8ICJDb21wYXJlIExlc3MgVGhhbiI7ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BHcmVhdGVyVGhhbjogICAgICBvdXQgPDwgIkNvbXBhcmUgR3JlYXRlciBUaGFuIjsgICAg
ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcExlc3NUaGFuRXF1YWw6ICAgIG91dCA8PCAiQ29t
cGFyZSBMZXNzIFRoYW4gb3IgRXF1YWwiOyAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wR3JlYXRl
clRoYW5FcXVhbDogb3V0IDw8ICJDb21wYXJlIEdyZWF0ZXIgVGhhbiBvciBFcXVhbCI7IGJyZWFr
OwotICAgICAgY2FzZSBFT3BWZWN0b3JFcXVhbDogICAgICBvdXQgPDwgIkVxdWFsIjsgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFZlY3Rvck5vdEVxdWFsOiAg
IG91dCA8PCAiTm90RXF1YWwiOyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAg
Y2FzZSBFT3BNb2Q6ICAgICAgICAgICBvdXQgPDwgIm1vZCI7ICAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVPcE1vZGY6ICAgICAgICAgIG91dCA8PCAibW9kZiI7ICAgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgRU9wUG93OiAgICAgICAgICAgb3V0IDw8ICJwb3ciOyAgICAgICAgIGJyZWFrOwot
Ci0gICAgICBjYXNlIEVPcEF0YW46ICAgICAgICAgIG91dCA8PCAiYXJjIHRhbmdlbnQiOyBicmVh
azsKLQotICAgICAgY2FzZSBFT3BNaW46ICAgICAgICAgICBvdXQgPDwgIm1pbiI7ICAgICAgICAg
YnJlYWs7Ci0gICAgICBjYXNlIEVPcE1heDogICAgICAgICAgIG91dCA8PCAibWF4IjsgICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ2xhbXA6ICAgICAgICAgb3V0IDw8ICJjbGFtcCI7ICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BNaXg6ICAgICAgICAgICBvdXQgPDwgIm1peCI7ICAg
ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcFN0ZXA6ICAgICAgICAgIG91dCA8PCAic3RlcCI7
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wU21vb3RoU3RlcDogICAgb3V0IDw8ICJzbW9v
dGhzdGVwIjsgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcERpc3RhbmNlOiAgICAgIG91dCA8PCAi
ZGlzdGFuY2UiOyAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wRG90OiAgICAg
ICAgICAgb3V0IDw8ICJkb3QtcHJvZHVjdCI7ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFT3BDcm9zczogICAgICAgICBvdXQgPDwgImNyb3NzLXByb2R1Y3QiOyAgICAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVPcEZhY2VGb3J3YXJkOiAgIG91dCA8PCAiZmFjZS1mb3J3YXJkIjsg
ICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wUmVmbGVjdDogICAgICAgb3V0IDw8ICJy
ZWZsZWN0IjsgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFT3BSZWZyYWN0OiAg
ICAgICBvdXQgPDwgInJlZnJhY3QiOyAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IEVPcE11bDogICAgICAgICAgIG91dCA8PCAiY29tcG9uZW50LXdpc2UgbXVsdGlwbHkiOyBicmVh
azsKLQotICAgICAgY2FzZSBFT3BPdXRlclByb2R1Y3Q6ICBvdXQgPDwgIm91dGVyIHByb2R1Y3Qi
OyAgIGJyZWFrOwotCi0gICAgICBjYXNlIEVPcERlY2xhcmF0aW9uOiAgIG91dCA8PCAiRGVjbGFy
YXRpb246ICI7ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVPcEludmFyaWFudERlY2xhcmF0aW9uOiBv
dXQgPDwgIkludmFyaWFudCBEZWNsYXJhdGlvbjogIjsgYnJlYWs7Ci0KLSAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgIG91dC5wcmVmaXgoRVByZWZpeEVycm9yKTsKLSAgICAgICAgb3V0IDw8ICJCYWQg
YWdncmVnYXRpb24gb3AiOworICAgICAgICAvLyBHaXZlIHZlcmJvc2UgbmFtZXMgZm9yIHNvbWUg
YnVpbHQtaW4gZnVuY3Rpb25zIHRoYXQgYXJlIGVhc3kgdG8gY29uZnVzZSB3aXRoIG90aGVycywg
YnV0CisgICAgICAgIC8vIG1vc3RseSB1c2UgR0xTTCBuYW1lcyBmb3IgZnVuY3Rpb25zLgorICAg
ICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2Ug
RU9wQ2FsbEZ1bmN0aW9uSW5BU1Q6CisgICAgICAgICAgICAgICAgT3V0cHV0RnVuY3Rpb24ob3V0
LCAiQ2FsbCBhbiB1c2VyLWRlZmluZWQgZnVuY3Rpb24iLCBub2RlLT5nZXRGdW5jdGlvblN5bWJv
bEluZm8oKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVPcENh
bGxJbnRlcm5hbFJhd0Z1bmN0aW9uOgorICAgICAgICAgICAgICAgIE91dHB1dEZ1bmN0aW9uKG91
dCwgIkNhbGwgYW4gaW50ZXJuYWwgZnVuY3Rpb24gd2l0aCByYXcgaW1wbGVtZW50YXRpb24iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmdldEZ1bmN0aW9uU3ltYm9sSW5m
bygpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRU9wQ2FsbEJ1
aWx0SW5GdW5jdGlvbjoKKyAgICAgICAgICAgICAgICBPdXRwdXRGdW5jdGlvbihvdXQsICJDYWxs
IGEgYnVpbHQtaW4gZnVuY3Rpb24iLCBub2RlLT5nZXRGdW5jdGlvblN5bWJvbEluZm8oKSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgRU9wRXF1YWxDb21wb25l
bnRXaXNlOgorICAgICAgICAgICAgICAgIG91dCA8PCAiY29tcG9uZW50LXdpc2UgZXF1YWwiOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFT3BOb3RFcXVhbENvbXBv
bmVudFdpc2U6CisgICAgICAgICAgICAgICAgb3V0IDw8ICJjb21wb25lbnQtd2lzZSBub3QgZXF1
YWwiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFT3BMZXNzVGhh
bkNvbXBvbmVudFdpc2U6CisgICAgICAgICAgICAgICAgb3V0IDw8ICJjb21wb25lbnQtd2lzZSBs
ZXNzIHRoYW4iOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFT3BH
cmVhdGVyVGhhbkNvbXBvbmVudFdpc2U6CisgICAgICAgICAgICAgICAgb3V0IDw8ICJjb21wb25l
bnQtd2lzZSBncmVhdGVyIHRoYW4iOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBFT3BMZXNzVGhhbkVxdWFsQ29tcG9uZW50V2lzZToKKyAgICAgICAgICAgICAgICBv
dXQgPDwgImNvbXBvbmVudC13aXNlIGxlc3MgdGhhbiBvciBlcXVhbCI7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVPcEdyZWF0ZXJUaGFuRXF1YWxDb21wb25lbnRX
aXNlOgorICAgICAgICAgICAgICAgIG91dCA8PCAiY29tcG9uZW50LXdpc2UgZ3JlYXRlciB0aGFu
IG9yIGVxdWFsIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBF
T3BEb3Q6CisgICAgICAgICAgICAgICAgb3V0IDw8ICJkb3QgcHJvZHVjdCI7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVPcENyb3NzOgorICAgICAgICAgICAgICAg
IG91dCA8PCAiY3Jvc3MgcHJvZHVjdCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIEVPcE11bE1hdHJpeENvbXBvbmVudFdpc2U6CisgICAgICAgICAgICAgICAgb3V0
IDw8ICJjb21wb25lbnQtd2lzZSBtdWx0aXBseSI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgb3V0IDw8IEdldE9wZXJhdG9y
U3RyaW5nKG5vZGUtPmdldE9wKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgfQogCi0gICAgaWYgKG5vZGUtPmdldE9wKCkgIT0gRU9wUGFyYW1ldGVycykKLSAgICAg
ICAgb3V0IDw8ICIgKCIgPDwgbm9kZS0+Z2V0Q29tcGxldGVTdHJpbmcoKSA8PCAiKSI7CisgICAg
b3V0IDw8ICIgKCIgPDwgbm9kZS0+Z2V0Q29tcGxldGVTdHJpbmcoKSA8PCAiKSI7CiAKICAgICBv
dXQgPDwgIlxuIjsKIApAQCAtNDkzLDYgKzQ2NiwxNiBAQCBib29sIFRPdXRwdXRUcmF2ZXJzZXI6
OnZpc2l0QmxvY2soVmlzaXQgdmlzaXQsIFRJbnRlcm1CbG9jayAqbm9kZSkKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorYm9vbCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdERlY2xhcmF0aW9uKFZpc2l0
IHZpc2l0LCBUSW50ZXJtRGVjbGFyYXRpb24gKm5vZGUpCit7CisgICAgVEluZm9TaW5rQmFzZSAm
b3V0ID0gc2luazsKKworICAgIE91dHB1dFRyZWVUZXh0KG91dCwgbm9kZSwgbURlcHRoKTsKKyAg
ICBvdXQgPDwgIkRlY2xhcmF0aW9uXG4iOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wg
VE91dHB1dFRyYXZlcnNlcjo6dmlzaXRUZXJuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVGVybmFy
eSAqbm9kZSkKIHsKICAgICBUSW5mb1NpbmtCYXNlICZvdXQgPSBzaW5rOwpAQCAtNjAzLDMwICs1
ODYsMzggQEAgdm9pZCBUT3V0cHV0VHJhdmVyc2VyOjp2aXNpdENvbnN0YW50VW5pb24oVEludGVy
bUNvbnN0YW50VW5pb24gKm5vZGUpCiAgICAgICAgIE91dHB1dFRyZWVUZXh0KG91dCwgbm9kZSwg
bURlcHRoKTsKICAgICAgICAgc3dpdGNoIChub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpW2ld
LmdldFR5cGUoKSkKICAgICAgICAgewotICAgICAgICAgIGNhc2UgRWJ0Qm9vbDoKLSAgICAgICAg
ICAgIGlmIChub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpW2ldLmdldEJDb25zdCgpKQotICAg
ICAgICAgICAgICAgIG91dCA8PCAidHJ1ZSI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgb3V0IDw8ICJmYWxzZSI7Ci0KLSAgICAgICAgICAgIG91dCA8PCAiICgiIDw8ICJjb25z
dCBib29sIiA8PCAiKSI7Ci0gICAgICAgICAgICBvdXQgPDwgIlxuIjsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgIGNhc2UgRWJ0RmxvYXQ6Ci0gICAgICAgICAgICBvdXQgPDwgbm9kZS0+
Z2V0VW5pb25BcnJheVBvaW50ZXIoKVtpXS5nZXRGQ29uc3QoKTsKLSAgICAgICAgICAgIG91dCA8
PCAiIChjb25zdCBmbG9hdClcbiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNl
IEVidEludDoKLSAgICAgICAgICAgIG91dCA8PCBub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigp
W2ldLmdldElDb25zdCgpOwotICAgICAgICAgICAgb3V0IDw8ICIgKGNvbnN0IGludClcbiI7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEVidFVJbnQ6Ci0gICAgICAgICAgICBv
dXQgPDwgbm9kZS0+Z2V0VW5pb25BcnJheVBvaW50ZXIoKVtpXS5nZXRVQ29uc3QoKTsKLSAgICAg
ICAgICAgIG91dCA8PCAiIChjb25zdCB1aW50KVxuIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBvdXQubWVzc2FnZShFUHJlZml4SW50ZXJuYWxF
cnJvciwgbm9kZS0+Z2V0TGluZSgpLCAiVW5rbm93biBjb25zdGFudCIpOwotICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIEVidEJvb2w6CisgICAgICAgICAgICAgICAgaWYgKG5v
ZGUtPmdldFVuaW9uQXJyYXlQb2ludGVyKClbaV0uZ2V0QkNvbnN0KCkpCisgICAgICAgICAgICAg
ICAgICAgIG91dCA8PCAidHJ1ZSI7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBvdXQgPDwgImZhbHNlIjsKKworICAgICAgICAgICAgICAgIG91dCA8PCAiICgiCisg
ICAgICAgICAgICAgICAgICAgIDw8ICJjb25zdCBib29sIgorICAgICAgICAgICAgICAgICAgICA8
PCAiKSI7CisgICAgICAgICAgICAgICAgb3V0IDw8ICJcbiI7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIEVidEZsb2F0OgorICAgICAgICAgICAgICAgIG91dCA8PCBu
b2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpW2ldLmdldEZDb25zdCgpOworICAgICAgICAgICAg
ICAgIG91dCA8PCAiIChjb25zdCBmbG9hdClcbiI7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIEVidEludDoKKyAgICAgICAgICAgICAgICBvdXQgPDwgbm9kZS0+Z2V0
VW5pb25BcnJheVBvaW50ZXIoKVtpXS5nZXRJQ29uc3QoKTsKKyAgICAgICAgICAgICAgICBvdXQg
PDwgIiAoY29uc3QgaW50KVxuIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgRWJ0VUludDoKKyAgICAgICAgICAgICAgICBvdXQgPDwgbm9kZS0+Z2V0VW5pb25BcnJh
eVBvaW50ZXIoKVtpXS5nZXRVQ29uc3QoKTsKKyAgICAgICAgICAgICAgICBvdXQgPDwgIiAoY29u
c3QgdWludClcbiI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEVi
dFl1dkNzY1N0YW5kYXJkRVhUOgorICAgICAgICAgICAgICAgIG91dCA8PCBnZXRZdXZDc2NTdGFu
ZGFyZEVYVFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgbm9kZS0+Z2V0VW5pb25BcnJheVBv
aW50ZXIoKVtpXS5nZXRZdXZDc2NTdGFuZGFyZEVYVENvbnN0KCkpOworICAgICAgICAgICAgICAg
IG91dCA8PCAiIChjb25zdCB5dXZDc2NTdGFuZGFyZEVYVClcbiI7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIG91dC5wcmVmaXgo
U0hfRVJST1IpOworICAgICAgICAgICAgICAgIG91dCA8PCAiVW5rbm93biBjb25zdGFudFxuIjsK
KyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTY4NiwxMSAr
Njc3LDIxIEBAIGJvb2wgVE91dHB1dFRyYXZlcnNlcjo6dmlzaXRCcmFuY2goVmlzaXQgdmlzaXQs
IFRJbnRlcm1CcmFuY2ggKm5vZGUpCiAKICAgICBzd2l0Y2ggKG5vZGUtPmdldEZsb3dPcCgpKQog
ICAgIHsKLSAgICAgIGNhc2UgRU9wS2lsbDogICAgICBvdXQgPDwgIkJyYW5jaDogS2lsbCI7ICAg
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQnJlYWs6ICAgICBvdXQgPDwgIkJyYW5jaDog
QnJlYWsiOyAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ29udGludWU6ICBvdXQgPDwg
IkJyYW5jaDogQ29udGludWUiOyAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wUmV0dXJuOiAg
ICBvdXQgPDwgIkJyYW5jaDogUmV0dXJuIjsgICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6
ICAgICAgICAgICBvdXQgPDwgIkJyYW5jaDogVW5rbm93biBCcmFuY2giOyBicmVhazsKKyAgICAg
ICAgY2FzZSBFT3BLaWxsOgorICAgICAgICAgICAgb3V0IDw8ICJCcmFuY2g6IEtpbGwiOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wQnJlYWs6CisgICAgICAgICAgICBvdXQg
PDwgIkJyYW5jaDogQnJlYWsiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9w
Q29udGludWU6CisgICAgICAgICAgICBvdXQgPDwgIkJyYW5jaDogQ29udGludWUiOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRU9wUmV0dXJuOgorICAgICAgICAgICAgb3V0IDw8
ICJCcmFuY2g6IFJldHVybiI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIG91dCA8PCAiQnJhbmNoOiBVbmtub3duIEJyYW5jaCI7CisgICAgICAgICAg
ICBicmVhazsKICAgICB9CiAKICAgICBpZiAobm9kZS0+Z2V0RXhwcmVzc2lvbigpKQpAQCAtNzIx
LDMgKzcyMiw1IEBAIHZvaWQgVEludGVybWVkaWF0ZTo6b3V0cHV0VHJlZShUSW50ZXJtTm9kZSAq
cm9vdCwgVEluZm9TaW5rQmFzZSAmaW5mb1NpbmspCiAKICAgICByb290LT50cmF2ZXJzZSgmaXQp
OwogfQorCit9ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2xlbmd0aF9saW1pdHMuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2xlbmd0aF9saW1pdHMuaApp
bmRleCA4ODYzNDM4MWZhZi4uZmNkYTYzOWQ3MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL2xlbmd0aF9saW1pdHMuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9sZW5ndGhfbGlt
aXRzLmgKQEAgLTE2LDYgKzE2LDExIEBACiAvLyBUaGVzZSBjb25zdGFudHMgYXJlIGZhY3RvcmVk
IG91dCBmcm9tIHRoZSByZXN0IG9mIHRoZSBoZWFkZXJzIHRvCiAvLyBtYWtlIGl0IGVhc2llciB0
byByZWZlcmVuY2UgdGhlbSBmcm9tIHRoZSBjb21waWxlciBzb3VyY2VzLgogCituYW1lc3BhY2Ug
c2gKK3sKKwogc2l6ZV90IEdldEdsb2JhbE1heFRva2VuU2l6ZShTaFNoYWRlclNwZWMgc3BlYyk7
CiAKLSNlbmRpZiAvLyBDT01QSUxFUl9UUkFOU0xBVE9SX0xFTkdUSExJTUlUU19IXworfSAgLy8g
bmFtZXNwYWNlIHNoCisKKyNlbmRpZiAgLy8gQ09NUElMRVJfVFJBTlNMQVRPUl9MRU5HVEhMSU1J
VFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90
cmFuc2xhdG9yL3V0aWwuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3RyYW5zbGF0b3IvdXRpbC5jcHAKaW5kZXggNTg0ZDY1Mzc3YjguLjZhMmY5ZmFhODkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci91
dGlsLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNs
YXRvci91dGlsLmNwcApAQCAtOCwxNyArOCw5IEBACiAKICNpbmNsdWRlIDxsaW1pdHM+CiAKKyNp
bmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vz
c29yL251bWVyaWNfbGV4LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9TeW1ib2xU
YWJsZS5oIgotI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKLQotYm9vbCBzdHJ0b2ZfY2xh
bXAoY29uc3Qgc3RkOjpzdHJpbmcgJnN0ciwgZmxvYXQgKnZhbHVlKQotewotICAgIGJvb2wgc3Vj
Y2VzcyA9IHBwOjpudW1lcmljX2xleF9mbG9hdChzdHIsIHZhbHVlKTsKLSAgICBpZiAoIXN1Y2Nl
c3MpCi0gICAgICAgICp2YWx1ZSA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptYXgoKTsK
LSAgICByZXR1cm4gc3VjY2VzczsKLX0KIAogYm9vbCBhdG9pX2NsYW1wKGNvbnN0IGNoYXIgKnN0
ciwgdW5zaWduZWQgaW50ICp2YWx1ZSkKIHsKQEAgLTMxLDYgKzIzLDE2NSBAQCBib29sIGF0b2lf
Y2xhbXAoY29uc3QgY2hhciAqc3RyLCB1bnNpZ25lZCBpbnQgKnZhbHVlKQogbmFtZXNwYWNlIHNo
CiB7CiAKK2Zsb2F0IE51bWVyaWNMZXhGbG9hdDMyT3V0T2ZSYW5nZVRvSW5maW5pdHkoY29uc3Qg
c3RkOjpzdHJpbmcgJnN0cikKK3sKKyAgICAvLyBQYXJzZXMgYSBkZWNpbWFsIHN0cmluZyB1c2lu
ZyBzY2llbnRpZmljIG5vdGF0aW9uIGludG8gYSBmbG9hdGluZyBwb2ludCBudW1iZXIuCisgICAg
Ly8gT3V0LW9mLXJhbmdlIHZhbHVlcyBhcmUgY29udmVydGVkIHRvIGluZmluaXR5LiBWYWx1ZXMg
dGhhdCBhcmUgdG9vIHNtYWxsIHRvIGJlCisgICAgLy8gcmVwcmVzZW50ZWQgYXJlIGNvbnZlcnRl
ZCB0byB6ZXJvLgorCisgICAgLy8gVGhlIG1hbnRpc3NhIGluIGRlY2ltYWwgc2NpZW50aWZpYyBu
b3RhdGlvbi4gVGhlIG1hZ25pdHVkZSBvZiB0aGUgbWFudGlzc2EgaW50ZWdlciBkb2VzIG5vdAor
ICAgIC8vIG1hdHRlci4KKyAgICB1bnNpZ25lZCBpbnQgZGVjaW1hbE1hbnRpc3NhID0gMDsKKyAg
ICBzaXplX3QgaSAgICAgICAgICAgICAgICAgICAgID0gMDsKKyAgICBib29sIGRlY2ltYWxQb2lu
dFNlZW4gICAgICAgID0gZmFsc2U7CisgICAgYm9vbCBub25aZXJvU2VlbkluTWFudGlzc2EgICA9
IGZhbHNlOworCisgICAgLy8gVGhlIGV4cG9uZW50IG9mZnNldCByZWZsZWN0cyB0aGUgcG9zaXRp
b24gb2YgdGhlIGRlY2ltYWwgcG9pbnQuCisgICAgaW50IGV4cG9uZW50T2Zmc2V0ID0gLTE7Cisg
ICAgd2hpbGUgKGkgPCBzdHIubGVuZ3RoKCkpCisgICAgeworICAgICAgICBjb25zdCBjaGFyIGMg
PSBzdHJbaV07CisgICAgICAgIGlmIChjID09ICdlJyB8fCBjID09ICdFJykKKyAgICAgICAgewor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGMgPT0gJy4nKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWNpbWFsUG9pbnRTZWVuID0gdHJ1ZTsKKyAgICAgICAgICAg
ICsraTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgdW5zaWdu
ZWQgaW50IGRpZ2l0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihjIC0gJzAnKTsKKyAgICAg
ICAgQVNTRVJUKGRpZ2l0IDwgMTB1KTsKKyAgICAgICAgaWYgKGRpZ2l0ICE9IDB1KQorICAgICAg
ICB7CisgICAgICAgICAgICBub25aZXJvU2VlbkluTWFudGlzc2EgPSB0cnVlOworICAgICAgICB9
CisgICAgICAgIGlmIChub25aZXJvU2VlbkluTWFudGlzc2EpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIC8vIEFkZCBiaXRzIHRvIHRoZSBtYW50aXNzYSB1bnRpbCBzcGFjZSBydW5zIG91dCBpbiAz
Mi1iaXQgaW50LiBUaGlzIHNob3VsZCBiZQorICAgICAgICAgICAgLy8gZW5vdWdoIHByZWNpc2lv
biB0byBtYWtlIHRoZSByZXN1bHRpbmcgYmluYXJ5IG1hbnRpc3NhIGFjY3VyYXRlIHRvIDEgVUxQ
LgorICAgICAgICAgICAgaWYgKGRlY2ltYWxNYW50aXNzYSA8PSAoc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZCBpbnQ+OjptYXgoKSAtIDl1KSAvIDEwdSkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBkZWNpbWFsTWFudGlzc2EgPSBkZWNpbWFsTWFudGlzc2EgKiAxMHUgKyBkaWdp
dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghZGVjaW1hbFBvaW50U2VlbikKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICArK2V4cG9uZW50T2Zmc2V0OworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGRlY2ltYWxQb2ludFNlZW4pCisgICAg
ICAgIHsKKyAgICAgICAgICAgIC0tZXhwb25lbnRPZmZzZXQ7CisgICAgICAgIH0KKyAgICAgICAg
KytpOworICAgIH0KKyAgICBpZiAoZGVjaW1hbE1hbnRpc3NhID09IDApCisgICAgeworICAgICAg
ICByZXR1cm4gMC4wZjsKKyAgICB9CisgICAgaW50IGV4cG9uZW50ID0gMDsKKyAgICBpZiAoaSA8
IHN0ci5sZW5ndGgoKSkKKyAgICB7CisgICAgICAgIEFTU0VSVChzdHJbaV0gPT0gJ2UnIHx8IHN0
cltpXSA9PSAnRScpOworICAgICAgICArK2k7CisgICAgICAgIGJvb2wgZXhwb25lbnRPdXRPZlJh
bmdlID0gZmFsc2U7CisgICAgICAgIGJvb2wgbmVnYXRpdmVFeHBvbmVudCAgID0gZmFsc2U7Cisg
ICAgICAgIGlmIChzdHJbaV0gPT0gJy0nKQorICAgICAgICB7CisgICAgICAgICAgICBuZWdhdGl2
ZUV4cG9uZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfQorICAgICAgICBl
bHNlIGlmIChzdHJbaV0gPT0gJysnKQorICAgICAgICB7CisgICAgICAgICAgICArK2k7CisgICAg
ICAgIH0KKyAgICAgICAgd2hpbGUgKGkgPCBzdHIubGVuZ3RoKCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNvbnN0IGNoYXIgYyAgICAgICA9IHN0cltpXTsKKyAgICAgICAgICAgIHVuc2lnbmVk
IGludCBkaWdpdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oYyAtICcwJyk7CisgICAgICAg
ICAgICBBU1NFUlQoZGlnaXQgPCAxMHUpOworICAgICAgICAgICAgaWYgKGV4cG9uZW50IDw9IChz
dGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpIC0gOSkgLyAxMCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBleHBvbmVudCA9IGV4cG9uZW50ICogMTAgKyBkaWdpdDsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBleHBvbmVudE91dE9mUmFuZ2UgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
KytpOworICAgICAgICB9CisgICAgICAgIGlmIChuZWdhdGl2ZUV4cG9uZW50KQorICAgICAgICB7
CisgICAgICAgICAgICBleHBvbmVudCA9IC1leHBvbmVudDsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoZXhwb25lbnRPdXRPZlJhbmdlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobmVnYXRp
dmVFeHBvbmVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMC4wZjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46OmluZmluaXR5KCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgLy8gRG8gdGhlIGNhbGN1bGF0aW9u
IGluIDY0LWJpdCB0byBhdm9pZCBvdmVyZmxvdy4KKyAgICBsb25nIGxvbmcgZXhwb25lbnRMb25n
ID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihleHBvbmVudCkgKyBzdGF0aWNfY2Fz
dDxsb25nIGxvbmc+KGV4cG9uZW50T2Zmc2V0KTsKKyAgICBpZiAoZXhwb25lbnRMb25nID4gc3Rk
OjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heF9leHBvbmVudDEwKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOworICAgIH0KKyAg
ICBlbHNlIGlmIChleHBvbmVudExvbmcgPCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWlu
X2V4cG9uZW50MTApCisgICAgeworICAgICAgICByZXR1cm4gMC4wZjsKKyAgICB9CisgICAgLy8g
VGhlIGV4cG9uZW50IGlzIGluIHJhbmdlLCBzbyB3ZSBuZWVkIHRvIGFjdHVhbGx5IGV2YWx1YXRl
IHRoZSBmbG9hdC4KKyAgICBleHBvbmVudCAgICAgPSBzdGF0aWNfY2FzdDxpbnQ+KGV4cG9uZW50
TG9uZyk7CisgICAgZG91YmxlIHZhbHVlID0gZGVjaW1hbE1hbnRpc3NhOworCisgICAgLy8gQ2Fs
Y3VsYXRlIHRoZSBleHBvbmVudCBvZmZzZXQgdG8gbm9ybWFsaXplIHRoZSBtYW50aXNzYS4KKyAg
ICBpbnQgbm9ybWFsaXphdGlvbkV4cG9uZW50T2Zmc2V0ID0gMDsKKyAgICB3aGlsZSAoZGVjaW1h
bE1hbnRpc3NhID49IDEwdSkKKyAgICB7CisgICAgICAgIC0tbm9ybWFsaXphdGlvbkV4cG9uZW50
T2Zmc2V0OworICAgICAgICBkZWNpbWFsTWFudGlzc2EgLz0gMTB1OworICAgIH0KKyAgICAvLyBB
cHBseSB0aGUgZXhwb25lbnQuCisgICAgdmFsdWUgKj0gc3RkOjpwb3coMTAuMCwgc3RhdGljX2Nh
c3Q8ZG91YmxlPihleHBvbmVudCArIG5vcm1hbGl6YXRpb25FeHBvbmVudE9mZnNldCkpOworICAg
IGlmICh2YWx1ZSA+IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxmbG9h
dD46Om1heCgpKSkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGZs
b2F0Pjo6aW5maW5pdHkoKTsKKyAgICB9CisgICAgaWYgKHZhbHVlIDwgc3RhdGljX2Nhc3Q8ZG91
YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWluKCkpKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIDAuMGY7CisgICAgfQorICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUp
OworfQorCitib29sIHN0cnRvZl9jbGFtcChjb25zdCBzdGQ6OnN0cmluZyAmc3RyLCBmbG9hdCAq
dmFsdWUpCit7CisgICAgLy8gVHJ5IHRoZSBzdGFuZGFyZCBmbG9hdCBwYXJzaW5nIHBhdGggZmly
c3QuCisgICAgYm9vbCBzdWNjZXNzID0gcHA6Om51bWVyaWNfbGV4X2Zsb2F0KHN0ciwgdmFsdWUp
OworCisgICAgLy8gSWYgdGhlIHN0YW5kYXJkIHBhdGggZG9lc24ndCBzdWNjZWVkLCB0YWtlIHRo
ZSBwYXRoIHRoYXQgY2FuIGhhbmRsZSB0aGUgZm9sbG93aW5nIGNvcm5lcgorICAgIC8vIGNhc2Vz
OgorICAgIC8vICAgMS4gVGhlIGRlY2ltYWwgbWFudGlzc2EgaXMgdmVyeSBzbWFsbCBidXQgdGhl
IGV4cG9uZW50IGlzIHZlcnkgbGFyZ2UsIHB1dHRpbmcgdGhlIHJlc3VsdGluZworICAgIC8vICAg
bnVtYmVyIGluc2lkZSB0aGUgZmxvYXQgcmFuZ2UuCisgICAgLy8gICAyLiBUaGUgZGVjaW1hbCBt
YW50aXNzYSBpcyB2ZXJ5IGxhcmdlIGJ1dCB0aGUgZXhwb25lbnQgaXMgdmVyeSBzbWFsbCwgcHV0
dGluZyB0aGUgcmVzdWx0aW5nCisgICAgLy8gICBudW1iZXIgaW5zaWRlIHRoZSBmbG9hdCByYW5n
ZS4KKyAgICAvLyAgIDMuIFRoZSB2YWx1ZSBpcyBvdXQtb2YtcmFuZ2UgYW5kIHNob3VsZCBiZSBl
dmFsdWF0ZWQgYXMgaW5maW5pdHkuCisgICAgLy8gICA0LiBUaGUgdmFsdWUgaXMgdG9vIHNtYWxs
IGFuZCBzaG91bGQgYmUgZXZhbHVhdGVkIGFzIHplcm8uCisgICAgLy8gU2VlIEVTU0wgMy4wMC42
IHNlY3Rpb24gNC4xLjQgZm9yIHRoZSByZWxldmFudCBzcGVjaWZpY2F0aW9uLgorICAgIGlmICgh
c3VjY2VzcykKKyAgICAgICAgKnZhbHVlID0gTnVtZXJpY0xleEZsb2F0MzJPdXRPZlJhbmdlVG9J
bmZpbml0eShzdHIpOworICAgIHJldHVybiAhZ2w6OmlzSW5mKCp2YWx1ZSk7Cit9CisKIEdMZW51
bSBHTFZhcmlhYmxlVHlwZShjb25zdCBUVHlwZSAmdHlwZSkKIHsKICAgICBpZiAodHlwZS5nZXRC
YXNpY1R5cGUoKSA9PSBFYnRGbG9hdCkKQEAgLTQzLDQ3ICsxOTQsNjUgQEAgR0xlbnVtIEdMVmFy
aWFibGVUeXBlKGNvbnN0IFRUeXBlICZ0eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0
Y2ggKHR5cGUuZ2V0Tm9taW5hbFNpemUoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
Y2FzZSAyOiByZXR1cm4gR0xfRkxPQVRfVkVDMjsKLSAgICAgICAgICAgICAgY2FzZSAzOiByZXR1
cm4gR0xfRkxPQVRfVkVDMzsKLSAgICAgICAgICAgICAgY2FzZSA0OiByZXR1cm4gR0xfRkxPQVRf
VkVDNDsKLSAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAg
ICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9GTE9BVF9WRUMyOwor
ICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZM
T0FUX1ZFQzM7CisgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gR0xfRkxPQVRfVkVDNDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIGVsc2UgaWYgKHR5cGUuaXNNYXRyaXgoKSkKICAgICAgICAgewogICAgICAgICAgICAgc3dp
dGNoICh0eXBlLmdldENvbHMoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSAy
OgotICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZS5nZXRSb3dzKCkpCi0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gR0xfRkxPQVRfTUFUMjsKLSAg
ICAgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIEdMX0ZMT0FUX01BVDJ4MzsKLSAgICAgICAg
ICAgICAgICAgIGNhc2UgNDogcmV0dXJuIEdMX0ZMT0FUX01BVDJ4NDsKLSAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlLmdldFJvd3Mo
KSkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAy
OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9GTE9BVF9NQVQyOworICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBHTF9GTE9BVF9NQVQyeDM7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZMT0FUX01BVDJ4NDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAg
IGNhc2UgMzoKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0Um93cygpKQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIEdMX0ZMT0FUX01B
VDN4MjsKLSAgICAgICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIEdMX0ZMT0FUX01BVDM7Ci0g
ICAgICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBHTF9GTE9BVF9NQVQzeDQ7Ci0gICAgICAg
ICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOwotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZS5n
ZXRSb3dzKCkpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfRkxPQVRfTUFU
M3gyOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBHTF9GTE9BVF9NQVQzOworICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSA0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9GTE9BVF9NQVQz
eDQ7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlLmdldFJvd3MoKSkK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBjYXNlIDI6IHJldHVybiBHTF9G
TE9BVF9NQVQ0eDI7Ci0gICAgICAgICAgICAgICAgICBjYXNlIDM6IHJldHVybiBHTF9GTE9BVF9N
QVQ0eDM7Ci0gICAgICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBHTF9GTE9BVF9NQVQ0Owot
ICAgICAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KHR5cGUuZ2V0Um93cygpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZM
T0FUX01BVDR4MjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gR0xfRkxPQVRfTUFUNHgzOworICAgICAgICAgICAgICAg
ICAgICAgICAgY2FzZSA0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9G
TE9BVF9NQVQ0OworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9CiAgICAgZWxzZSBpZiAodHlwZS5nZXRC
YXNpY1R5cGUoKSA9PSBFYnRJbnQpCiAgICAgewpAQCAtOTUsMTMgKzI2NCwxOCBAQCBHTGVudW0g
R0xWYXJpYWJsZVR5cGUoY29uc3QgVFR5cGUgJnR5cGUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHN3aXRjaCAodHlwZS5nZXROb21pbmFsU2l6ZSgpKQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICBjYXNlIDI6IHJldHVybiBHTF9JTlRfVkVDMjsKLSAgICAgICAgICAgICAgY2FzZSAzOiBy
ZXR1cm4gR0xfSU5UX1ZFQzM7Ci0gICAgICAgICAgICAgIGNhc2UgNDogcmV0dXJuIEdMX0lOVF9W
RUM0OwotICAgICAgICAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAg
ICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0lOVF9WRUMyOworICAg
ICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0lOVF9W
RUMzOworICAgICAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEdMX0lOVF9WRUM0OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxz
ZSBVTlJFQUNIQUJMRSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OwogICAgIH0KICAgICBlbHNlIGlmICh0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFVJbnQpCiAg
ICAgewpAQCAtMTEzLDEzICsyODcsMTggQEAgR0xlbnVtIEdMVmFyaWFibGVUeXBlKGNvbnN0IFRU
eXBlICZ0eXBlKQogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0Tm9taW5h
bFNpemUoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSAyOiByZXR1cm4gR0xf
VU5TSUdORURfSU5UX1ZFQzI7Ci0gICAgICAgICAgICAgIGNhc2UgMzogcmV0dXJuIEdMX1VOU0lH
TkVEX0lOVF9WRUMzOwotICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVybiBHTF9VTlNJR05FRF9J
TlRfVkVDNDsKLSAgICAgICAgICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9J
TlRfVkVDMjsKKyAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBHTF9VTlNJR05FRF9JTlRfVkVDMzsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlRfVkVDNDsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9CiAgICAgZWxzZSBpZiAodHlw
ZS5nZXRCYXNpY1R5cGUoKSA9PSBFYnRCb29sKQogICAgIHsKQEAgLTEzMSwzNSArMzEwLDkwIEBA
IEdMZW51bSBHTFZhcmlhYmxlVHlwZShjb25zdCBUVHlwZSAmdHlwZSkKICAgICAgICAgewogICAg
ICAgICAgICAgc3dpdGNoICh0eXBlLmdldE5vbWluYWxTaXplKCkpCiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgIGNhc2UgMjogcmV0dXJuIEdMX0JPT0xfVkVDMjsKLSAgICAgICAgICAgICAg
Y2FzZSAzOiByZXR1cm4gR0xfQk9PTF9WRUMzOwotICAgICAgICAgICAgICBjYXNlIDQ6IHJldHVy
biBHTF9CT09MX1ZFQzQ7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfQk9P
TF9WRUMyOworICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEdMX0JPT0xfVkVDMzsKKyAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBHTF9CT09MX1ZFQzQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgICAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CiAgICAgfQogCiAgICAgc3dpdGNoICh0eXBlLmdldEJhc2ljVHlwZSgp
KQogICAgIHsKLSAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEOiAgICAgICAgICAgIHJldHVybiBHTF9T
QU1QTEVSXzJEOwotICAgICAgY2FzZSBFYnRTYW1wbGVyM0Q6ICAgICAgICAgICAgcmV0dXJuIEdM
X1NBTVBMRVJfM0Q7Ci0gICAgICBjYXNlIEVidFNhbXBsZXJDdWJlOiAgICAgICAgICByZXR1cm4g
R0xfU0FNUExFUl9DVUJFOwotICAgICAgY2FzZSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVM6ICAgcmV0
dXJuIEdMX1NBTVBMRVJfRVhURVJOQUxfT0VTOwotICAgICAgY2FzZSBFYnRTYW1wbGVyMkRSZWN0
OiAgICAgICAgcmV0dXJuIEdMX1NBTVBMRVJfMkRfUkVDVF9BUkI7Ci0gICAgICBjYXNlIEVidFNh
bXBsZXIyREFycmF5OiAgICAgICByZXR1cm4gR0xfU0FNUExFUl8yRF9BUlJBWTsKLSAgICAgIGNh
c2UgRWJ0SVNhbXBsZXIyRDogICAgICAgICAgIHJldHVybiBHTF9JTlRfU0FNUExFUl8yRDsKLSAg
ICAgIGNhc2UgRWJ0SVNhbXBsZXIzRDogICAgICAgICAgIHJldHVybiBHTF9JTlRfU0FNUExFUl8z
RDsKLSAgICAgIGNhc2UgRWJ0SVNhbXBsZXJDdWJlOiAgICAgICAgIHJldHVybiBHTF9JTlRfU0FN
UExFUl9DVUJFOwotICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEQXJyYXk6ICAgICAgcmV0dXJuIEdM
X0lOVF9TQU1QTEVSXzJEX0FSUkFZOwotICAgICAgY2FzZSBFYnRVU2FtcGxlcjJEOiAgICAgICAg
ICAgcmV0dXJuIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzJEOwotICAgICAgY2FzZSBFYnRVU2Ft
cGxlcjNEOiAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzNEOwotICAg
ICAgY2FzZSBFYnRVU2FtcGxlckN1YmU6ICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX0lOVF9T
QU1QTEVSX0NVQkU7Ci0gICAgICBjYXNlIEVidFVTYW1wbGVyMkRBcnJheTogICAgICByZXR1cm4g
R0xfVU5TSUdORURfSU5UX1NBTVBMRVJfMkRfQVJSQVk7Ci0gICAgICBjYXNlIEVidFNhbXBsZXIy
RFNoYWRvdzogICAgICByZXR1cm4gR0xfU0FNUExFUl8yRF9TSEFET1c7Ci0gICAgICBjYXNlIEVi
dFNhbXBsZXJDdWJlU2hhZG93OiAgICByZXR1cm4gR0xfU0FNUExFUl9DVUJFX1NIQURPVzsKLSAg
ICAgIGNhc2UgRWJ0U2FtcGxlcjJEQXJyYXlTaGFkb3c6IHJldHVybiBHTF9TQU1QTEVSXzJEX0FS
UkFZX1NIQURPVzsKLSAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgIGNhc2Ug
RWJ0U2FtcGxlcjJEOgorICAgICAgICAgICAgcmV0dXJuIEdMX1NBTVBMRVJfMkQ7CisgICAgICAg
IGNhc2UgRWJ0U2FtcGxlcjNEOgorICAgICAgICAgICAgcmV0dXJuIEdMX1NBTVBMRVJfM0Q7Cisg
ICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6CisgICAgICAgICAgICByZXR1cm4gR0xfU0FNUExF
Ul9DVUJFOworICAgICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbE9FUzoKKyAgICAgICAgICAg
IHJldHVybiBHTF9TQU1QTEVSX0VYVEVSTkFMX09FUzsKKyAgICAgICAgY2FzZSBFYnRTYW1wbGVy
RXh0ZXJuYWwyRFkyWUVYVDoKKyAgICAgICAgICAgIHJldHVybiBHTF9TQU1QTEVSX0VYVEVSTkFM
XzJEX1kyWV9FWFQ7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEUmVjdDoKKyAgICAgICAgICAg
IHJldHVybiBHTF9TQU1QTEVSXzJEX1JFQ1RfQVJCOworICAgICAgICBjYXNlIEVidFNhbXBsZXIy
REFycmF5OgorICAgICAgICAgICAgcmV0dXJuIEdMX1NBTVBMRVJfMkRfQVJSQVk7CisgICAgICAg
IGNhc2UgRWJ0U2FtcGxlcjJETVM6CisgICAgICAgICAgICByZXR1cm4gR0xfU0FNUExFUl8yRF9N
VUxUSVNBTVBMRTsKKyAgICAgICAgY2FzZSBFYnRJU2FtcGxlcjJEOgorICAgICAgICAgICAgcmV0
dXJuIEdMX0lOVF9TQU1QTEVSXzJEOworICAgICAgICBjYXNlIEVidElTYW1wbGVyM0Q6CisgICAg
ICAgICAgICByZXR1cm4gR0xfSU5UX1NBTVBMRVJfM0Q7CisgICAgICAgIGNhc2UgRWJ0SVNhbXBs
ZXJDdWJlOgorICAgICAgICAgICAgcmV0dXJuIEdMX0lOVF9TQU1QTEVSX0NVQkU7CisgICAgICAg
IGNhc2UgRWJ0SVNhbXBsZXIyREFycmF5OgorICAgICAgICAgICAgcmV0dXJuIEdMX0lOVF9TQU1Q
TEVSXzJEX0FSUkFZOworICAgICAgICBjYXNlIEVidElTYW1wbGVyMkRNUzoKKyAgICAgICAgICAg
IHJldHVybiBHTF9JTlRfU0FNUExFUl8yRF9NVUxUSVNBTVBMRTsKKyAgICAgICAgY2FzZSBFYnRV
U2FtcGxlcjJEOgorICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzJE
OworICAgICAgICBjYXNlIEVidFVTYW1wbGVyM0Q6CisgICAgICAgICAgICByZXR1cm4gR0xfVU5T
SUdORURfSU5UX1NBTVBMRVJfM0Q7CisgICAgICAgIGNhc2UgRWJ0VVNhbXBsZXJDdWJlOgorICAg
ICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSX0NVQkU7CisgICAgICAgIGNh
c2UgRWJ0VVNhbXBsZXIyREFycmF5OgorICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX0lO
VF9TQU1QTEVSXzJEX0FSUkFZOworICAgICAgICBjYXNlIEVidFVTYW1wbGVyMkRNUzoKKyAgICAg
ICAgICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl8yRF9NVUxUSVNBTVBMRTsKKyAg
ICAgICAgY2FzZSBFYnRTYW1wbGVyMkRTaGFkb3c6CisgICAgICAgICAgICByZXR1cm4gR0xfU0FN
UExFUl8yRF9TSEFET1c7CisgICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmVTaGFkb3c6CisgICAg
ICAgICAgICByZXR1cm4gR0xfU0FNUExFUl9DVUJFX1NIQURPVzsKKyAgICAgICAgY2FzZSBFYnRT
YW1wbGVyMkRBcnJheVNoYWRvdzoKKyAgICAgICAgICAgIHJldHVybiBHTF9TQU1QTEVSXzJEX0FS
UkFZX1NIQURPVzsKKyAgICAgICAgY2FzZSBFYnRJbWFnZTJEOgorICAgICAgICAgICAgcmV0dXJu
IEdMX0lNQUdFXzJEOworICAgICAgICBjYXNlIEVidElJbWFnZTJEOgorICAgICAgICAgICAgcmV0
dXJuIEdMX0lOVF9JTUFHRV8yRDsKKyAgICAgICAgY2FzZSBFYnRVSW1hZ2UyRDoKKyAgICAgICAg
ICAgIHJldHVybiBHTF9VTlNJR05FRF9JTlRfSU1BR0VfMkQ7CisgICAgICAgIGNhc2UgRWJ0SW1h
Z2UyREFycmF5OgorICAgICAgICAgICAgcmV0dXJuIEdMX0lNQUdFXzJEX0FSUkFZOworICAgICAg
ICBjYXNlIEVidElJbWFnZTJEQXJyYXk6CisgICAgICAgICAgICByZXR1cm4gR0xfSU5UX0lNQUdF
XzJEX0FSUkFZOworICAgICAgICBjYXNlIEVidFVJbWFnZTJEQXJyYXk6CisgICAgICAgICAgICBy
ZXR1cm4gR0xfVU5TSUdORURfSU5UX0lNQUdFXzJEX0FSUkFZOworICAgICAgICBjYXNlIEVidElt
YWdlM0Q6CisgICAgICAgICAgICByZXR1cm4gR0xfSU1BR0VfM0Q7CisgICAgICAgIGNhc2UgRWJ0
SUltYWdlM0Q6CisgICAgICAgICAgICByZXR1cm4gR0xfSU5UX0lNQUdFXzNEOworICAgICAgICBj
YXNlIEVidFVJbWFnZTNEOgorICAgICAgICAgICAgcmV0dXJuIEdMX1VOU0lHTkVEX0lOVF9JTUFH
RV8zRDsKKyAgICAgICAgY2FzZSBFYnRJbWFnZUN1YmU6CisgICAgICAgICAgICByZXR1cm4gR0xf
SU1BR0VfQ1VCRTsKKyAgICAgICAgY2FzZSBFYnRJSW1hZ2VDdWJlOgorICAgICAgICAgICAgcmV0
dXJuIEdMX0lOVF9JTUFHRV9DVUJFOworICAgICAgICBjYXNlIEVidFVJbWFnZUN1YmU6CisgICAg
ICAgICAgICByZXR1cm4gR0xfVU5TSUdORURfSU5UX0lNQUdFX0NVQkU7CisgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgIH0KIAogICAgIHJldHVybiBHTF9O
T05FOwpAQCAtMTcxLDMyICs0MDUsMzIgQEAgR0xlbnVtIEdMVmFyaWFibGVQcmVjaXNpb24oY29u
c3QgVFR5cGUgJnR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0UHJlY2lzaW9u
KCkpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIEVicEhpZ2g6Ci0gICAgICAgICAgICByZXR1
cm4gR0xfSElHSF9GTE9BVDsKLSAgICAgICAgICBjYXNlIEVicE1lZGl1bToKLSAgICAgICAgICAg
IHJldHVybiBHTF9NRURJVU1fRkxPQVQ7Ci0gICAgICAgICAgY2FzZSBFYnBMb3c6Ci0gICAgICAg
ICAgICByZXR1cm4gR0xfTE9XX0ZMT0FUOwotICAgICAgICAgIGNhc2UgRWJwVW5kZWZpbmVkOgot
ICAgICAgICAgIC8vIFNob3VsZCBiZSBkZWZpbmVkIGFzIHRoZSBkZWZhdWx0IHByZWNpc2lvbiBi
eSB0aGUgcGFyc2VyCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICBjYXNlIEVicEhpZ2g6CisgICAgICAgICAgICAgICAgcmV0dXJuIEdM
X0hJR0hfRkxPQVQ7CisgICAgICAgICAgICBjYXNlIEVicE1lZGl1bToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gR0xfTUVESVVNX0ZMT0FUOworICAgICAgICAgICAgY2FzZSBFYnBMb3c6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIEdMX0xPV19GTE9BVDsKKyAgICAgICAgICAgIGNhc2UgRWJwVW5k
ZWZpbmVkOgorICAgICAgICAgICAgLy8gU2hvdWxkIGJlIGRlZmluZWQgYXMgdGhlIGRlZmF1bHQg
cHJlY2lzaW9uIGJ5IHRoZSBwYXJzZXIKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIGlmICh0eXBl
LmdldEJhc2ljVHlwZSgpID09IEVidEludCB8fCB0eXBlLmdldEJhc2ljVHlwZSgpID09IEVidFVJ
bnQpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUuZ2V0UHJlY2lzaW9uKCkpCiAgICAgICAg
IHsKLSAgICAgICAgICBjYXNlIEVicEhpZ2g6Ci0gICAgICAgICAgICByZXR1cm4gR0xfSElHSF9J
TlQ7Ci0gICAgICAgICAgY2FzZSBFYnBNZWRpdW06Ci0gICAgICAgICAgICByZXR1cm4gR0xfTUVE
SVVNX0lOVDsKLSAgICAgICAgICBjYXNlIEVicExvdzoKLSAgICAgICAgICAgIHJldHVybiBHTF9M
T1dfSU5UOwotICAgICAgICAgIGNhc2UgRWJwVW5kZWZpbmVkOgotICAgICAgICAgIC8vIFNob3Vs
ZCBiZSBkZWZpbmVkIGFzIHRoZSBkZWZhdWx0IHByZWNpc2lvbiBieSB0aGUgcGFyc2VyCi0gICAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBj
YXNlIEVicEhpZ2g6CisgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0hJR0hfSU5UOworICAgICAg
ICAgICAgY2FzZSBFYnBNZWRpdW06CisgICAgICAgICAgICAgICAgcmV0dXJuIEdMX01FRElVTV9J
TlQ7CisgICAgICAgICAgICBjYXNlIEVicExvdzoKKyAgICAgICAgICAgICAgICByZXR1cm4gR0xf
TE9XX0lOVDsKKyAgICAgICAgICAgIGNhc2UgRWJwVW5kZWZpbmVkOgorICAgICAgICAgICAgLy8g
U2hvdWxkIGJlIGRlZmluZWQgYXMgdGhlIGRlZmF1bHQgcHJlY2lzaW9uIGJ5IHRoZSBwYXJzZXIK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMjE4LDE0ICs0NTIsMTUgQEAgYm9vbCBJc1ZhcnlpbmdPdXQo
VFF1YWxpZmllciBxdWFsaWZpZXIpCiB7CiAgICAgc3dpdGNoIChxdWFsaWZpZXIpCiAgICAgewot
ICAgICAgY2FzZSBFdnFWYXJ5aW5nT3V0OgotICAgICAgY2FzZSBFdnFTbW9vdGhPdXQ6Ci0gICAg
ICBjYXNlIEV2cUZsYXRPdXQ6Ci0gICAgICBjYXNlIEV2cUNlbnRyb2lkT3V0OgotICAgICAgY2Fz
ZSBFdnFWZXJ0ZXhPdXQ6Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICBkZWZhdWx0OiBi
cmVhazsKKyAgICAgICAgY2FzZSBFdnFWYXJ5aW5nT3V0OgorICAgICAgICBjYXNlIEV2cVNtb290
aE91dDoKKyAgICAgICAgY2FzZSBFdnFGbGF0T3V0OgorICAgICAgICBjYXNlIEV2cUNlbnRyb2lk
T3V0OgorICAgICAgICBjYXNlIEV2cVZlcnRleE91dDoKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0yMzUsMTQgKzQ3MCwxNSBAQCBib29sIElzVmFyeWluZ0luKFRRdWFs
aWZpZXIgcXVhbGlmaWVyKQogewogICAgIHN3aXRjaCAocXVhbGlmaWVyKQogICAgIHsKLSAgICAg
IGNhc2UgRXZxVmFyeWluZ0luOgotICAgICAgY2FzZSBFdnFTbW9vdGhJbjoKLSAgICAgIGNhc2Ug
RXZxRmxhdEluOgotICAgICAgY2FzZSBFdnFDZW50cm9pZEluOgotICAgICAgY2FzZSBFdnFGcmFn
bWVudEluOgotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgZGVmYXVsdDogYnJlYWs7Cisg
ICAgICAgIGNhc2UgRXZxVmFyeWluZ0luOgorICAgICAgICBjYXNlIEV2cVNtb290aEluOgorICAg
ICAgICBjYXNlIEV2cUZsYXRJbjoKKyAgICAgICAgY2FzZSBFdnFDZW50cm9pZEluOgorICAgICAg
ICBjYXNlIEV2cUZyYWdtZW50SW46CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMjU3LDQ2ICs0OTMsMjYgQEAgSW50ZXJwb2xhdGlvblR5cGUgR2V0SW50ZXJwb2xhdGlv
blR5cGUoVFF1YWxpZmllciBxdWFsaWZpZXIpCiB7CiAgICAgc3dpdGNoIChxdWFsaWZpZXIpCiAg
ICAgewotICAgICAgY2FzZSBFdnFGbGF0SW46Ci0gICAgICBjYXNlIEV2cUZsYXRPdXQ6Ci0gICAg
ICAgIHJldHVybiBJTlRFUlBPTEFUSU9OX0ZMQVQ7Ci0KLSAgICAgIGNhc2UgRXZxU21vb3RoSW46
Ci0gICAgICBjYXNlIEV2cVNtb290aE91dDoKLSAgICAgIGNhc2UgRXZxVmVydGV4T3V0OgotICAg
ICAgY2FzZSBFdnFGcmFnbWVudEluOgotICAgICAgY2FzZSBFdnFWYXJ5aW5nSW46Ci0gICAgICBj
YXNlIEV2cVZhcnlpbmdPdXQ6Ci0gICAgICAgIHJldHVybiBJTlRFUlBPTEFUSU9OX1NNT09USDsK
LQotICAgICAgY2FzZSBFdnFDZW50cm9pZEluOgotICAgICAgY2FzZSBFdnFDZW50cm9pZE91dDoK
LSAgICAgICAgcmV0dXJuIElOVEVSUE9MQVRJT05fQ0VOVFJPSUQ7Ci0KLSAgICAgIGRlZmF1bHQ6
IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIHJldHVybiBJTlRFUlBPTEFUSU9OX1NNT09USDsKLSAg
ICB9Ci19CisgICAgICAgIGNhc2UgRXZxRmxhdEluOgorICAgICAgICBjYXNlIEV2cUZsYXRPdXQ6
CisgICAgICAgICAgICByZXR1cm4gSU5URVJQT0xBVElPTl9GTEFUOworCisgICAgICAgIGNhc2Ug
RXZxU21vb3RoSW46CisgICAgICAgIGNhc2UgRXZxU21vb3RoT3V0OgorICAgICAgICBjYXNlIEV2
cVZlcnRleE91dDoKKyAgICAgICAgY2FzZSBFdnFGcmFnbWVudEluOgorICAgICAgICBjYXNlIEV2
cVZhcnlpbmdJbjoKKyAgICAgICAgY2FzZSBFdnFWYXJ5aW5nT3V0OgorICAgICAgICAgICAgcmV0
dXJuIElOVEVSUE9MQVRJT05fU01PT1RIOworCisgICAgICAgIGNhc2UgRXZxQ2VudHJvaWRJbjoK
KyAgICAgICAgY2FzZSBFdnFDZW50cm9pZE91dDoKKyAgICAgICAgICAgIHJldHVybiBJTlRFUlBP
TEFUSU9OX0NFTlRST0lEOwogCi1UVHlwZSBHZXRJbnRlcmZhY2VCbG9ja1R5cGUoY29uc3Qgc2g6
OkludGVyZmFjZUJsb2NrICZibG9jaykKLXsKLSAgICBUVHlwZSB0eXBlOwotICAgIFRGaWVsZExp
c3QgKmZpZWxkcyA9IG5ldyBURmllbGRMaXN0OwotICAgIFRTb3VyY2VMb2MgbG9jOwotICAgIGZv
ciAoY29uc3QgYXV0byAmZmllbGQgOiBibG9jay5maWVsZHMpCi0gICAgewotICAgICAgICBUVHlw
ZSAqZmllbGRUeXBlID0gbmV3IFRUeXBlKEdldFNoYWRlclZhcmlhYmxlVHlwZShmaWVsZCkpOwot
ICAgICAgICBmaWVsZHMtPnB1c2hfYmFjayhuZXcgVEZpZWxkKGZpZWxkVHlwZSwgbmV3IFRTdHJp
bmcoZmllbGQubmFtZS5jX3N0cigpKSwgbG9jKSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIElOVEVSUE9MQVRJT05fU01P
T1RIOwogICAgIH0KLQotICAgIFRJbnRlcmZhY2VCbG9jayAqaW50ZXJmYWNlQmxvY2sgPSBuZXcg
VEludGVyZmFjZUJsb2NrKAotICAgICAgICBuZXcgVFN0cmluZyhibG9jay5uYW1lLmNfc3RyKCkp
LCBmaWVsZHMsIG5ldyBUU3RyaW5nKGJsb2NrLmluc3RhbmNlTmFtZS5jX3N0cigpKSwKLSAgICAg
ICAgYmxvY2suYXJyYXlTaXplLCBUTGF5b3V0UXVhbGlmaWVyOjpjcmVhdGUoKSk7Ci0KLSAgICB0
eXBlLnNldEJhc2ljVHlwZShFYnRJbnRlcmZhY2VCbG9jayk7Ci0gICAgdHlwZS5zZXRJbnRlcmZh
Y2VCbG9jayhpbnRlcmZhY2VCbG9jayk7Ci0gICAgdHlwZS5zZXRBcnJheVNpemUoYmxvY2suYXJy
YXlTaXplKTsKLSAgICByZXR1cm4gdHlwZTsKIH0KIAogVFR5cGUgR2V0U2hhZGVyVmFyaWFibGVC
YXNpY1R5cGUoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXIpCkBAIC0zNTksMzUgKzU3NSw2
IEBAIFRUeXBlIEdldFNoYWRlclZhcmlhYmxlQmFzaWNUeXBlKGNvbnN0IHNoOjpTaGFkZXJWYXJp
YWJsZSAmdmFyKQogICAgIH0KIH0KIAotVFR5cGUgR2V0U2hhZGVyVmFyaWFibGVUeXBlKGNvbnN0
IHNoOjpTaGFkZXJWYXJpYWJsZSAmdmFyKQotewotICAgIFRUeXBlIHR5cGU7Ci0gICAgaWYgKHZh
ci5pc1N0cnVjdCgpKQotICAgIHsKLSAgICAgICAgVEZpZWxkTGlzdCAqZmllbGRzID0gbmV3IFRG
aWVsZExpc3Q7Ci0gICAgICAgIFRTb3VyY2VMb2MgbG9jOwotICAgICAgICBmb3IgKGNvbnN0IGF1
dG8gJmZpZWxkIDogdmFyLmZpZWxkcykKLSAgICAgICAgewotICAgICAgICAgICAgVFR5cGUgKmZp
ZWxkVHlwZSA9IG5ldyBUVHlwZShHZXRTaGFkZXJWYXJpYWJsZVR5cGUoZmllbGQpKTsKLSAgICAg
ICAgICAgIGZpZWxkcy0+cHVzaF9iYWNrKG5ldyBURmllbGQoZmllbGRUeXBlLCBuZXcgVFN0cmlu
ZyhmaWVsZC5uYW1lLmNfc3RyKCkpLCBsb2MpKTsKLSAgICAgICAgfQotICAgICAgICBUU3RydWN0
dXJlICpzdHJ1Y3R1cmUgPSBuZXcgVFN0cnVjdHVyZShuZXcgVFN0cmluZyh2YXIuc3RydWN0TmFt
ZS5jX3N0cigpKSwgZmllbGRzKTsKLQotICAgICAgICB0eXBlLnNldEJhc2ljVHlwZShFYnRTdHJ1
Y3QpOwotICAgICAgICB0eXBlLnNldFN0cnVjdChzdHJ1Y3R1cmUpOwotICAgIH0KLSAgICBlbHNl
Ci0gICAgewotICAgICAgICB0eXBlID0gR2V0U2hhZGVyVmFyaWFibGVCYXNpY1R5cGUodmFyKTsK
LSAgICB9Ci0KLSAgICBpZiAodmFyLmlzQXJyYXkoKSkKLSAgICB7Ci0gICAgICAgIHR5cGUuc2V0
QXJyYXlTaXplKHZhci5lbGVtZW50Q291bnQoKSk7Ci0gICAgfQotICAgIHJldHVybiB0eXBlOwot
fQotCiBUT3BlcmF0b3IgVHlwZVRvQ29uc3RydWN0b3JPcGVyYXRvcihjb25zdCBUVHlwZSAmdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUuZ2V0QmFzaWNUeXBlKCkpCkBAIC01MTYsODUgKzcwMyw2
IEBAIFRPcGVyYXRvciBUeXBlVG9Db25zdHJ1Y3Rvck9wZXJhdG9yKGNvbnN0IFRUeXBlICZ0eXBl
KQogICAgIHJldHVybiBFT3BOdWxsOwogfQogCi1HZXRWYXJpYWJsZVRyYXZlcnNlcjo6R2V0VmFy
aWFibGVUcmF2ZXJzZXIoY29uc3QgVFN5bWJvbFRhYmxlICZzeW1ib2xUYWJsZSkKLSAgICA6IG1T
eW1ib2xUYWJsZShzeW1ib2xUYWJsZSkKLXsKLX0KLQotdGVtcGxhdGUgdm9pZCBHZXRWYXJpYWJs
ZVRyYXZlcnNlcjo6c2V0VHlwZVNwZWNpZmljSW5mbygKLSAgICBjb25zdCBUVHlwZSAmdHlwZSwg
Y29uc3QgVFN0cmluZyYgbmFtZSwgSW50ZXJmYWNlQmxvY2tGaWVsZCAqdmFyaWFibGUpOwotdGVt
cGxhdGUgdm9pZCBHZXRWYXJpYWJsZVRyYXZlcnNlcjo6c2V0VHlwZVNwZWNpZmljSW5mbygKLSAg
ICBjb25zdCBUVHlwZSAmdHlwZSwgY29uc3QgVFN0cmluZyYgbmFtZSwgU2hhZGVyVmFyaWFibGUg
KnZhcmlhYmxlKTsKLXRlbXBsYXRlIHZvaWQgR2V0VmFyaWFibGVUcmF2ZXJzZXI6OnNldFR5cGVT
cGVjaWZpY0luZm8oCi0gICAgY29uc3QgVFR5cGUgJnR5cGUsIGNvbnN0IFRTdHJpbmcmIG5hbWUs
IFVuaWZvcm0gKnZhcmlhYmxlKTsKLQotdGVtcGxhdGU8Pgotdm9pZCBHZXRWYXJpYWJsZVRyYXZl
cnNlcjo6c2V0VHlwZVNwZWNpZmljSW5mbygKLSAgICBjb25zdCBUVHlwZSAmdHlwZSwgY29uc3Qg
VFN0cmluZyYgbmFtZSwgVmFyeWluZyAqdmFyaWFibGUpCi17Ci0gICAgQVNTRVJUKHZhcmlhYmxl
KTsKLSAgICBzd2l0Y2ggKHR5cGUuZ2V0UXVhbGlmaWVyKCkpCi0gICAgewotICAgICAgY2FzZSBF
dnFWYXJ5aW5nSW46Ci0gICAgICBjYXNlIEV2cVZhcnlpbmdPdXQ6Ci0gICAgICBjYXNlIEV2cVZl
cnRleE91dDoKLSAgICAgIGNhc2UgRXZxU21vb3RoT3V0OgotICAgICAgY2FzZSBFdnFGbGF0T3V0
OgotICAgICAgY2FzZSBFdnFDZW50cm9pZE91dDoKLSAgICAgICAgaWYgKG1TeW1ib2xUYWJsZS5p
c1ZhcnlpbmdJbnZhcmlhbnQoc3RkOjpzdHJpbmcobmFtZS5jX3N0cigpKSkgfHwgdHlwZS5pc0lu
dmFyaWFudCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXJpYWJsZS0+aXNJbnZhcmlhbnQg
PSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgdmFyaWFibGUtPmludGVycG9sYXRpb24gPSBHZXRJbnRl
cnBvbGF0aW9uVHlwZSh0eXBlLmdldFF1YWxpZmllcigpKTsKLX0KLQotdGVtcGxhdGUgPHR5cGVu
YW1lIFZhclQ+Ci12b2lkIEdldFZhcmlhYmxlVHJhdmVyc2VyOjp0cmF2ZXJzZShjb25zdCBUVHlw
ZSAmdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJp
bmcgJm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3Rv
cjxWYXJUPiAqb3V0cHV0KQotewotICAgIGNvbnN0IFRTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IHR5
cGUuZ2V0U3RydWN0KCk7Ci0KLSAgICBWYXJUIHZhcmlhYmxlOwotICAgIHZhcmlhYmxlLm5hbWUg
PSBuYW1lLmNfc3RyKCk7Ci0gICAgdmFyaWFibGUuYXJyYXlTaXplID0gdHlwZS5nZXRBcnJheVNp
emUoKTsKLQotICAgIGlmICghc3RydWN0dXJlKQotICAgIHsKLSAgICAgICAgdmFyaWFibGUudHlw
ZSA9IEdMVmFyaWFibGVUeXBlKHR5cGUpOwotICAgICAgICB2YXJpYWJsZS5wcmVjaXNpb24gPSBH
TFZhcmlhYmxlUHJlY2lzaW9uKHR5cGUpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAg
ICAvLyBOb3RlOiB0aGlzIGVudW0gdmFsdWUgaXMgbm90IGV4cG9zZWQgb3V0c2lkZSBBTkdMRQot
ICAgICAgICB2YXJpYWJsZS50eXBlID0gR0xfU1RSVUNUX0FOR0xFWDsKLSAgICAgICAgdmFyaWFi
bGUuc3RydWN0TmFtZSA9IHN0cnVjdHVyZS0+bmFtZSgpLmNfc3RyKCk7Ci0KLSAgICAgICAgY29u
c3QgVEZpZWxkTGlzdCAmZmllbGRzID0gc3RydWN0dXJlLT5maWVsZHMoKTsKLQotICAgICAgICBm
b3IgKHNpemVfdCBmaWVsZEluZGV4ID0gMDsgZmllbGRJbmRleCA8IGZpZWxkcy5zaXplKCk7IGZp
ZWxkSW5kZXgrKykKLSAgICAgICAgewotICAgICAgICAgICAgVEZpZWxkICpmaWVsZCA9IGZpZWxk
c1tmaWVsZEluZGV4XTsKLSAgICAgICAgICAgIHRyYXZlcnNlKCpmaWVsZC0+dHlwZSgpLCBmaWVs
ZC0+bmFtZSgpLCAmdmFyaWFibGUuZmllbGRzKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBzZXRU
eXBlU3BlY2lmaWNJbmZvKHR5cGUsIG5hbWUsICZ2YXJpYWJsZSk7Ci0gICAgdmlzaXRWYXJpYWJs
ZSgmdmFyaWFibGUpOwotCi0gICAgQVNTRVJUKG91dHB1dCk7Ci0gICAgb3V0cHV0LT5wdXNoX2Jh
Y2sodmFyaWFibGUpOwotfQotCi10ZW1wbGF0ZSB2b2lkIEdldFZhcmlhYmxlVHJhdmVyc2VyOjp0
cmF2ZXJzZShjb25zdCBUVHlwZSAmLCBjb25zdCBUU3RyaW5nICYsIHN0ZDo6dmVjdG9yPEludGVy
ZmFjZUJsb2NrRmllbGQ+ICopOwotdGVtcGxhdGUgdm9pZCBHZXRWYXJpYWJsZVRyYXZlcnNlcjo6
dHJhdmVyc2UoY29uc3QgVFR5cGUgJiwgY29uc3QgVFN0cmluZyAmLCBzdGQ6OnZlY3RvcjxTaGFk
ZXJWYXJpYWJsZT4gKik7Ci10ZW1wbGF0ZSB2b2lkIEdldFZhcmlhYmxlVHJhdmVyc2VyOjp0cmF2
ZXJzZShjb25zdCBUVHlwZSAmLCBjb25zdCBUU3RyaW5nICYsIHN0ZDo6dmVjdG9yPFVuaWZvcm0+
ICopOwotdGVtcGxhdGUgdm9pZCBHZXRWYXJpYWJsZVRyYXZlcnNlcjo6dHJhdmVyc2UoY29uc3Qg
VFR5cGUgJiwgY29uc3QgVFN0cmluZyAmLCBzdGQ6OnZlY3RvcjxWYXJ5aW5nPiAqKTsKLQogLy8g
R0xTTCBFUyAxLjAuMTcgNC42LjEgVGhlIEludmFyaWFudCBRdWFsaWZpZXIKIGJvb2wgQ2FuQmVJ
bnZhcmlhbnRFU1NMMShUUXVhbGlmaWVyIHF1YWxpZmllcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3V0aWwuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3V0aWwuaAppbmRleCBi
NTI2ODkxNjUxZi4uMzVkYjg4YjFmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci90cmFuc2xhdG9yL3V0aWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci91dGlsLmgKQEAgLTE1LDIwICsxNSwyMyBA
QAogI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvT3BlcmF0b3IuaCIKICNpbmNsdWRlICJj
b21waWxlci90cmFuc2xhdG9yL1R5cGVzLmgiCiAKLS8vIHN0cnRvZl9jbGFtcCBpcyBsaWtlIHN0
cnRvZiBidXQKLS8vICAgMS4gaXQgZm9yY2VzIEMgbG9jYWxlLCBpLmUuIGZvcmNpbmcgJy4nIGFz
IGRlY2ltYWwgcG9pbnQuCi0vLyAgIDIuIGl0IGNsYW1wcyB0aGUgdmFsdWUgdG8gLUZMVF9NQVgg
b3IgRkxUX01BWCBpZiBvdmVyZmxvdyBoYXBwZW5zLgotLy8gUmV0dXJuIGZhbHNlIGlmIG92ZXJm
bG93IGhhcHBlbnMuCi1ib29sIHN0cnRvZl9jbGFtcChjb25zdCBzdGQ6OnN0cmluZyAmc3RyLCBm
bG9hdCAqdmFsdWUpOwotCiAvLyBJZiBvdmVyZmxvdyBoYXBwZW5zLCBjbGFtcCB0aGUgdmFsdWUg
dG8gVUlOVF9NSU4gb3IgVUlOVF9NQVguCiAvLyBSZXR1cm4gZmFsc2UgaWYgb3ZlcmZsb3cgaGFw
cGVucy4KIGJvb2wgYXRvaV9jbGFtcChjb25zdCBjaGFyICpzdHIsIHVuc2lnbmVkIGludCAqdmFs
dWUpOwogCi1jbGFzcyBUU3ltYm9sVGFibGU7Ci0KIG5hbWVzcGFjZSBzaAogeworY2xhc3MgVFN5
bWJvbFRhYmxlOworCitmbG9hdCBOdW1lcmljTGV4RmxvYXQzMk91dE9mUmFuZ2VUb0luZmluaXR5
KGNvbnN0IHN0ZDo6c3RyaW5nICZzdHIpOworCisvLyBzdHJ0b2ZfY2xhbXAgaXMgbGlrZSBzdHJ0
b2YgYnV0CisvLyAgIDEuIGl0IGZvcmNlcyBDIGxvY2FsZSwgaS5lLiBmb3JjaW5nICcuJyBhcyBk
ZWNpbWFsIHBvaW50LgorLy8gICAyLiBpdCBzZXRzIHRoZSB2YWx1ZSB0byBpbmZpbml0eSBpZiBv
dmVyZmxvdyBoYXBwZW5zLgorLy8gICAzLiBzdHIgc2hvdWxkIGJlIGd1YXJhbnRlZWQgdG8gYmUg
aW4gdGhlIHZhbGlkIGZvcm1hdCBmb3IgYSBmbG9hdGluZyBwb2ludCBudW1iZXIgYXMgZGVmaW5l
ZAorLy8gICAgICBieSB0aGUgZ3JhbW1hciBpbiB0aGUgRVNTTCAzLjAwLjYgc3BlYyBzZWN0aW9u
IDQuMS40LgorLy8gUmV0dXJuIGZhbHNlIGlmIG92ZXJmbG93IGhhcHBlbnMuCitib29sIHN0cnRv
Zl9jbGFtcChjb25zdCBzdGQ6OnN0cmluZyAmc3RyLCBmbG9hdCAqdmFsdWUpOwogCiBHTGVudW0g
R0xWYXJpYWJsZVR5cGUoY29uc3QgVFR5cGUgJnR5cGUpOwogR0xlbnVtIEdMVmFyaWFibGVQcmVj
aXNpb24oY29uc3QgVFR5cGUgJnR5cGUpOwpAQCAtMzgsMzkgKzQxLDE0IEBAIGJvb2wgSXNWYXJ5
aW5nKFRRdWFsaWZpZXIgcXVhbGlmaWVyKTsKIEludGVycG9sYXRpb25UeXBlIEdldEludGVycG9s
YXRpb25UeXBlKFRRdWFsaWZpZXIgcXVhbGlmaWVyKTsKIFRTdHJpbmcgQXJyYXlTdHJpbmcoY29u
c3QgVFR5cGUgJnR5cGUpOwogCi1UVHlwZSBHZXRJbnRlcmZhY2VCbG9ja1R5cGUoY29uc3Qgc2g6
OkludGVyZmFjZUJsb2NrICZibG9jayk7CiBUVHlwZSBHZXRTaGFkZXJWYXJpYWJsZUJhc2ljVHlw
ZShjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJnZhcik7Ci1UVHlwZSBHZXRTaGFkZXJWYXJpYWJs
ZVR5cGUoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXIpOwogCiBUT3BlcmF0b3IgVHlwZVRv
Q29uc3RydWN0b3JPcGVyYXRvcihjb25zdCBUVHlwZSAmdHlwZSk7CiAKLWNsYXNzIEdldFZhcmlh
YmxlVHJhdmVyc2VyIDogYW5nbGU6Ok5vbkNvcHlhYmxlCi17Ci0gIHB1YmxpYzoKLSAgICBHZXRW
YXJpYWJsZVRyYXZlcnNlcihjb25zdCBUU3ltYm9sVGFibGUgJnN5bWJvbFRhYmxlKTsKLSAgICB2
aXJ0dWFsIH5HZXRWYXJpYWJsZVRyYXZlcnNlcigpIHt9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVmFyVD4KLSAgICB2b2lkIHRyYXZlcnNlKGNvbnN0IFRUeXBlICZ0eXBlLCBjb25zdCBUU3Ry
aW5nICZuYW1lLCBzdGQ6OnZlY3RvcjxWYXJUPiAqb3V0cHV0KTsKLQotICBwcm90ZWN0ZWQ6Ci0g
ICAgLy8gTWF5IGJlIG92ZXJsb2FkZWQKLSAgICB2aXJ0dWFsIHZvaWQgdmlzaXRWYXJpYWJsZShT
aGFkZXJWYXJpYWJsZSAqbmV3VmFyKSB7fQotCi0gIHByaXZhdGU6Ci0gICAgLy8gSGVscGVyIGZ1
bmN0aW9uIGNhbGxlZCBieSB0cmF2ZXJzZSgpIHRvIGZpbGwgc3BlY2lmaWMgZmllbGRzCi0gICAg
Ly8gZm9yIGF0dHJpYnV0ZXMvdmFyeWluZ3MvdW5pZm9ybXMuCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFZhclQ+Ci0gICAgdm9pZCBzZXRUeXBlU3BlY2lmaWNJbmZvKAotICAgICAgICBjb25zdCBU
VHlwZSAmdHlwZSwgY29uc3QgVFN0cmluZyAmbmFtZSwgVmFyVCAqdmFyaWFibGUpIHt9Ci0KLSAg
ICBjb25zdCBUU3ltYm9sVGFibGUgJm1TeW1ib2xUYWJsZTsKLX07Ci0KIGJvb2wgSXNCdWlsdGlu
T3V0cHV0VmFyaWFibGUoVFF1YWxpZmllciBxdWFsaWZpZXIpOwogYm9vbCBJc0J1aWx0aW5GcmFn
bWVudElucHV0VmFyaWFibGUoVFF1YWxpZmllciBxdWFsaWZpZXIpOwogYm9vbCBDYW5CZUludmFy
aWFudEVTU0wxKFRRdWFsaWZpZXIgcXVhbGlmaWVyKTsKIGJvb2wgQ2FuQmVJbnZhcmlhbnRFU1NM
M09yR3JlYXRlcihUUXVhbGlmaWVyIHF1YWxpZmllcik7Ci19Cit9ICAvLyBuYW1lc3BhY2Ugc2gK
IAotI2VuZGlmIC8vIENPTVBJTEVSX1RSQU5TTEFUT1JfVVRJTF9IXworI2VuZGlmICAvLyBDT01Q
SUxFUl9UUkFOU0xBVE9SX1VUSUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm8uY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRkMzg0YzY2ZDc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mby5jcHAKQEAg
LTAsMCArMSwxNTkgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNyBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN5c3RlbUluZm8uY3BwOiBp
bXBsZW1lbnRhdGlvbiBvZiB0aGUgc3lzdGVtLWFnbm9zdGljIHBhcnRzIG9mIFN5c3RlbUluZm8u
aAorCisjaW5jbHVkZSAiZ3B1X2luZm9fdXRpbC9TeXN0ZW1JbmZvLmgiCisKKyNpbmNsdWRlIDxj
c3RyaW5nPgorI2luY2x1ZGUgPHNzdHJlYW0+CisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIK
KyNpbmNsdWRlICJjb21tb24vc3RyaW5nX3V0aWxzLmgiCisKK25hbWVzcGFjZSBhbmdsZQorewor
Citib29sIElzQU1EKFZlbmRvcklEIHZlbmRvcklkKQoreworICAgIHJldHVybiB2ZW5kb3JJZCA9
PSBrVmVuZG9ySURfQU1EOworfQorCitib29sIElzSW50ZWwoVmVuZG9ySUQgdmVuZG9ySWQpCit7
CisgICAgcmV0dXJuIHZlbmRvcklkID09IGtWZW5kb3JJRF9JbnRlbDsKK30KKworYm9vbCBJc052
aWRpYShWZW5kb3JJRCB2ZW5kb3JJZCkKK3sKKyAgICByZXR1cm4gdmVuZG9ySWQgPT0ga1ZlbmRv
cklEX052aWRpYTsKK30KKworYm9vbCBJc1F1YWxjb21tKFZlbmRvcklEIHZlbmRvcklkKQorewor
ICAgIHJldHVybiB2ZW5kb3JJZCA9PSBrVmVuZG9ySURfUXVhbGNvbW07Cit9CisKK2Jvb2wgUGFy
c2VBTURCcmFobWFEcml2ZXJWZXJzaW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZjb250ZW50LCBzdGQ6
OnN0cmluZyAqdmVyc2lvbikKK3sKKyAgICBjb25zdCBzaXplX3QgYmVnaW4gPSBjb250ZW50LmZp
bmRfZmlyc3Rfb2YoIjAxMjM0NTY3ODkiKTsKKyAgICBpZiAoYmVnaW4gPT0gc3RkOjpzdHJpbmc6
Om5wb3MpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3Qg
c2l6ZV90IGVuZCA9IGNvbnRlbnQuZmluZF9maXJzdF9ub3Rfb2YoIjAxMjM0NTY3ODkuIiwgYmVn
aW4pOworICAgIGlmIChlbmQgPT0gc3RkOjpzdHJpbmc6Om5wb3MpCisgICAgeworICAgICAgICAq
dmVyc2lvbiA9IGNvbnRlbnQuc3Vic3RyKGJlZ2luKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsK
KyAgICAgICAgKnZlcnNpb24gPSBjb250ZW50LnN1YnN0cihiZWdpbiwgZW5kIC0gYmVnaW4pOwor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQYXJzZUFNRENhdGFseXN0RHJpdmVy
VmVyc2lvbihjb25zdCBzdGQ6OnN0cmluZyAmY29udGVudCwgc3RkOjpzdHJpbmcgKnZlcnNpb24p
Cit7CisgICAgc3RkOjppc3RyaW5nc3RyZWFtIHN0cmVhbShjb250ZW50KTsKKworICAgIHN0ZDo6
c3RyaW5nIGxpbmU7CisgICAgd2hpbGUgKHN0ZDo6Z2V0bGluZShzdHJlYW0sIGxpbmUpKQorICAg
IHsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIga1JlbGVhc2VWZXJzaW9uW10gPSAiUmVsZWFz
ZVZlcnNpb249IjsKKyAgICAgICAgaWYgKGxpbmUuY29tcGFyZSgwLCBzdGQ6OnN0cmxlbihrUmVs
ZWFzZVZlcnNpb24pLCBrUmVsZWFzZVZlcnNpb24pICE9IDApCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKFBhcnNlQU1EQnJhaG1hRHJp
dmVyVmVyc2lvbihsaW5lLCB2ZXJzaW9uKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFBh
cnNlTWFjTWFjaGluZU1vZGVsKGNvbnN0IHN0ZDo6c3RyaW5nICZpZGVudGlmaWVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50MzJfdCAqbWFqb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMy
X3QgKm1pbm9yKQoreworICAgIHNpemVfdCBudW1iZXJMb2MgPSBpZGVudGlmaWVyLmZpbmRfZmly
c3Rfb2YoIjAxMjM0NTY3ODkiKTsKKyAgICBpZiAobnVtYmVyTG9jID09IHN0ZDo6c3RyaW5nOjpu
cG9zKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHNpemVfdCBj
b21tYUxvYyA9IGlkZW50aWZpZXIuZmluZCgnLCcsIG51bWJlckxvYyk7CisgICAgaWYgKGNvbW1h
TG9jID09IHN0ZDo6c3RyaW5nOjpucG9zIHx8IGNvbW1hTG9jID49IGlkZW50aWZpZXIuc2l6ZSgp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IGNoYXIg
Km51bWJlclB0ciA9ICZpZGVudGlmaWVyW251bWJlckxvY107CisgICAgY29uc3QgY2hhciAqY29t
bWFQdHIgID0gJmlkZW50aWZpZXJbY29tbWFMb2MgKyAxXTsKKyAgICBjaGFyICplbmRQdHIgICAg
ICAgICAgPSBudWxscHRyOworCisgICAgaW50MzJfdCBtYWpvclRtcCA9IHN0ZDo6c3RydG9sKG51
bWJlclB0ciwgJmVuZFB0ciwgMTApOworICAgIGlmIChlbmRQdHIgPT0gbnVtYmVyUHRyKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGludDMyX3QgbWlub3JUbXAg
PSBzdGQ6OnN0cnRvbChjb21tYVB0ciwgJmVuZFB0ciwgMTApOworICAgIGlmIChlbmRQdHIgPT0g
Y29tbWFQdHIpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgKm1h
am9yID0gbWFqb3JUbXA7CisgICAgKm1pbm9yID0gbWlub3JUbXA7CisgICAgKnR5cGUgID0gaWRl
bnRpZmllci5zdWJzdHIoMCwgbnVtYmVyTG9jKTsKKworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIENNRGV2aWNlSURUb0RldmljZUFuZFZlbmRvcklEKGNvbnN0IHN0ZDo6c3RyaW5nICZpZCwg
dWludDMyX3QgKnZlbmRvcklkLCB1aW50MzJfdCAqZGV2aWNlSWQpCit7CisgICAgdW5zaWduZWQg
aW50IHZlbmRvciA9IDA7CisgICAgdW5zaWduZWQgaW50IGRldmljZSA9IDA7CisKKyAgICBib29s
IHN1Y2Nlc3MgPSBpZC5sZW5ndGgoKSA+PSAyMSAmJiBIZXhTdHJpbmdUb1VJbnQoaWQuc3Vic3Ry
KDgsIDQpLCAmdmVuZG9yKSAmJgorICAgICAgICAgICAgICAgICAgIEhleFN0cmluZ1RvVUludChp
ZC5zdWJzdHIoMTcsIDQpLCAmZGV2aWNlKTsKKworICAgICp2ZW5kb3JJZCA9IHZlbmRvcjsKKyAg
ICAqZGV2aWNlSWQgPSBkZXZpY2U7CisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKK3ZvaWQgRmlu
ZFByaW1hcnlHUFUoU3lzdGVtSW5mbyAqaW5mbykKK3sKKyAgICBBU1NFUlQoIWluZm8tPmdwdXMu
ZW1wdHkoKSk7CisKKyAgICAvLyBPbiBkdWFsLUdQVSBzeXN0ZW1zIHdlIGFzc3VtZSB0aGUgbm9u
LUludGVsIEdQVSBpcyB0aGUgcHJpbWFyeSBvbmUuCisgICAgaW50IHByaW1hcnkgICA9IDA7Cisg
ICAgYm9vbCBoYXNJbnRlbCA9IGZhbHNlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5m
by0+Z3B1cy5zaXplKCk7ICsraSkKKyAgICB7CisgICAgICAgIGlmIChJc0ludGVsKGluZm8tPmdw
dXNbaV0udmVuZG9ySWQpKQorICAgICAgICB7CisgICAgICAgICAgICBoYXNJbnRlbCA9IHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKElzSW50ZWwoaW5mby0+Z3B1c1twcmltYXJ5XS52ZW5k
b3JJZCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHByaW1hcnkgPSBzdGF0aWNfY2FzdDxpbnQ+
KGkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gQXNzdW1lIHRoYXQgYSBjb21iaW5hdGlv
biBvZiBBTUQgb3IgTnZpZGlhIHdpdGggSW50ZWwgbWVhbnMgT3B0aW11cyBvciBBTUQgU3dpdGNo
YWJsZQorICAgIGluZm8tPnByaW1hcnlHUFVJbmRleCA9IHByaW1hcnk7CisgICAgaW5mby0+aXNP
cHRpbXVzICAgICAgID0gaGFzSW50ZWwgJiYgSXNOdmlkaWEoaW5mby0+Z3B1c1twcmltYXJ5XS52
ZW5kb3JJZCk7CisgICAgaW5mby0+aXNBTURTd2l0Y2hhYmxlID0gaGFzSW50ZWwgJiYgSXNBTUQo
aW5mby0+Z3B1c1twcmltYXJ5XS52ZW5kb3JJZCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmds
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwv
U3lzdGVtSW5mby5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwv
U3lzdGVtSW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42YmRh
NWM5YWFkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9n
cHVfaW5mb191dGlsL1N5c3RlbUluZm8uaApAQCAtMCwwICsxLDU5IEBACisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDEzLTIwMTcgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworCisvLyBTeXN0ZW1JbmZvLmg6IGdhdGhlcnMgaW5mb3JtYXRpb24gYXZhaWxhYmxlIHdp
dGhvdXQgc3RhcnRpbmcgYSBHUFUgZHJpdmVyLgorCisjaWZuZGVmIEdQVV9JTkZPX1VUSUxfU1lT
VEVNX0lORk9fSF8KKyNkZWZpbmUgR1BVX0lORk9fVVRJTF9TWVNURU1fSU5GT19IXworCisjaW5j
bHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8dmVjdG9yPgorCitu
YW1lc3BhY2UgYW5nbGUKK3sKKwordXNpbmcgVmVuZG9ySUQgPSB1aW50MzJfdDsKK3VzaW5nIERl
dmljZUlEID0gdWludDMyX3Q7CisKK2NvbnN0ZXhwciBWZW5kb3JJRCBrVmVuZG9ySURfQU1EICAg
ICAgPSAweDEwMDI7Citjb25zdGV4cHIgVmVuZG9ySUQga1ZlbmRvcklEX0ludGVsICAgID0gMHg4
MDg2OworY29uc3RleHByIFZlbmRvcklEIGtWZW5kb3JJRF9OdmlkaWEgICA9IDB4MTBERTsKK2Nv
bnN0ZXhwciBWZW5kb3JJRCBrVmVuZG9ySURfUXVhbGNvbW0gPSAweDUxNDM7CisKK3N0cnVjdCBH
UFVEZXZpY2VJbmZvCit7CisgICAgVmVuZG9ySUQgdmVuZG9ySWQgPSAwOworICAgIERldmljZUlE
IGRldmljZUlkID0gMDsKKworICAgIHN0ZDo6c3RyaW5nIGRyaXZlclZlbmRvcjsKKyAgICBzdGQ6
OnN0cmluZyBkcml2ZXJWZXJzaW9uOworICAgIHN0ZDo6c3RyaW5nIGRyaXZlckRhdGU7Cit9Owor
CitzdHJ1Y3QgU3lzdGVtSW5mbworeworICAgIHN0ZDo6dmVjdG9yPEdQVURldmljZUluZm8+IGdw
dXM7CisgICAgaW50IHByaW1hcnlHUFVJbmRleCA9IC0xOworICAgIGludCBhY3RpdmVHUFVJbmRl
eCAgPSAtMTsKKworICAgIGJvb2wgaXNPcHRpbXVzICAgICAgID0gZmFsc2U7CisgICAgYm9vbCBp
c0FNRFN3aXRjaGFibGUgPSBmYWxzZTsKKworICAgIHN0ZDo6c3RyaW5nIG1hY2hpbmVNb2RlbE5h
bWU7CisgICAgc3RkOjpzdHJpbmcgbWFjaGluZU1vZGVsVmVyc2lvbjsKK307CisKK2Jvb2wgR2V0
U3lzdGVtSW5mbyhTeXN0ZW1JbmZvICppbmZvKTsKKworYm9vbCBJc0FNRChWZW5kb3JJRCB2ZW5k
b3JJZCk7Citib29sIElzSW50ZWwoVmVuZG9ySUQgdmVuZG9ySWQpOworYm9vbCBJc052aWRpYShW
ZW5kb3JJRCB2ZW5kb3JJZCk7Citib29sIElzUXVhbGNvbW0oVmVuZG9ySUQgdmVuZG9ySWQpOwor
Cit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKKworI2VuZGlmICAvLyBHUFVfSU5GT19VVElMX1NZU1RF
TV9JTkZPX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvZ3B1X2lu
Zm9fdXRpbC9TeXN0ZW1JbmZvX2ludGVybmFsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvZ3B1X2luZm9fdXRpbC9TeXN0ZW1JbmZvX2ludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQyZjYxMjQ2NjIxCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb19pbnRlcm5h
bC5oCkBAIC0wLDAgKzEsMzggQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNyBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN5c3RlbUluZm9f
aW50ZXJuYWwuaDogRnVuY3Rpb25zIHVzZWQgYnkgdGhlIFN5c3RlbUluZm9fKiBmaWxlcyBhbmQg
dW5pdHRlc3RzCisKKyNpZm5kZWYgR1BVX0lORk9fVVRJTF9TWVNURU1fSU5GT19JTlRFUk5BTF9I
XworI2RlZmluZSBHUFVfSU5GT19VVElMX1NZU1RFTV9JTkZPX0lOVEVSTkFMX0hfCisKKyNpbmNs
dWRlICJncHVfaW5mb191dGlsL1N5c3RlbUluZm8uaCIKKworbmFtZXNwYWNlIGFuZ2xlCit7CisK
Ky8vIERlZmluZWQgaW4gU3lzdGVtSW5mb19saWJwY2kgd2hlbiBHUFVfSU5GT19VU0VfTElCUENJ
IGlzIGRlZmluZWQuCitib29sIEdldFBDSURldmljZXNXaXRoTGliUENJKHN0ZDo6dmVjdG9yPEdQ
VURldmljZUluZm8+ICpkZXZpY2VzKTsKKy8vIERlZmluZWQgaW4gU3lzdGVtSW5mb194MTEgd2hl
biBHUFVfSU5GT19VU0VfWDExIGlzIGRlZmluZWQuCitib29sIEdldE52aWRpYURyaXZlclZlcnNp
b25XaXRoWE5WQ3RybChzdGQ6OnN0cmluZyAqdmVyc2lvbik7CisKKy8vIFRhcmdldCBzcGVjaWZp
YyBoZWxwZXIgZnVuY3Rpb25zIHRoYXQgY2FuIGJlIGNvbXBpbGVkIG9uIGFsbCB0YXJnZXRzCisv
LyBMaXZlIGluIFN5c3RlbUluZm8uY3BwCitib29sIFBhcnNlQU1EQnJhaG1hRHJpdmVyVmVyc2lv
bihjb25zdCBzdGQ6OnN0cmluZyAmY29udGVudCwgc3RkOjpzdHJpbmcgKnZlcnNpb24pOworYm9v
bCBQYXJzZUFNRENhdGFseXN0RHJpdmVyVmVyc2lvbihjb25zdCBzdGQ6OnN0cmluZyAmY29udGVu
dCwgc3RkOjpzdHJpbmcgKnZlcnNpb24pOworYm9vbCBQYXJzZU1hY01hY2hpbmVNb2RlbChjb25z
dCBzdGQ6OnN0cmluZyAmaWRlbnRpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
OjpzdHJpbmcgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgKm1ham9y
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICptaW5vcik7Citib29sIENNRGV2
aWNlSURUb0RldmljZUFuZFZlbmRvcklEKGNvbnN0IHN0ZDo6c3RyaW5nICZpZCwgdWludDMyX3Qg
KnZlbmRvcklkLCB1aW50MzJfdCAqZGV2aWNlSWQpOworCisvLyBJbiB0aGUgY2FzZSB0aGVyZSBh
cmUgbXVsdGlwbGUgR1BVcywgdGhpcyBmaW5kcyB0aGUgcHJpbWFyeSBvbmUgYW5kIHNldHMgT3B0
aW11cyBvciBBTUQKKy8vIFN3aXRjaGFibGUKK3ZvaWQgRmluZFByaW1hcnlHUFUoU3lzdGVtSW5m
byAqaW5mbyk7CisKK30gIC8vIG5hbWVzcGFjZSBhbmdsZQorCisjZW5kaWYgIC8vIEdQVV9JTkZP
X1VUSUxfU1lTVEVNX0lORk9fSU5URVJOQUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm9fbGlicGNpLmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm9fbGlicGNpLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGVmODlkNjFiZWUKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvZ3B1X2luZm9fdXRp
bC9TeXN0ZW1JbmZvX2xpYnBjaS5jcHAKQEAgLTAsMCArMSwxMzIgQEAKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMTMtMjAxNyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisKKy8vIFN5c3RlbUluZm9fbGlicGNpLmNwcDogaW1wbGVtZW50YXRpb24gb2YgdGhlIGxp
YlBDSS1zcGVjaWZpYyBwYXJ0cyBvZiBTeXN0ZW1JbmZvLmgKKworI2luY2x1ZGUgImdwdV9pbmZv
X3V0aWwvU3lzdGVtSW5mb19pbnRlcm5hbC5oIgorCisjaW5jbHVkZSA8ZGxmY24uaD4KKyNpbmNs
dWRlIDxwY2kvcGNpLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlICJjb21tb24v
YW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorCisjaWYgIWRlZmluZWQo
R1BVX0lORk9fVVNFX0xJQlBDSSkKKyNlcnJvciBTeXN0ZW1JbmZvX2xpYnBjaS5jcHAgY29tcGls
ZWQgd2l0aG91dCBHUFVfSU5GT19VU0VfTElCUENJCisjZW5kaWYKKworbmFtZXNwYWNlIGFuZ2xl
Cit7CisKK25hbWVzcGFjZQoreworCitzdHJ1Y3QgTGliUENJIDogYW5nbGU6Ok5vbkNvcHlhYmxl
Cit7CisgICAgTGliUENJKCkKKyAgICB7CisgICAgICAgIGlmIChhY2Nlc3MoIi9zeXMvYnVzL3Bj
aS8iLCBGX09LKSAhPSAwICYmIGFjY2VzcygiL3N5cy9icy9wY2lfZXhwcmVzcy8iLCBGX09LKSAh
PSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBtSGFuZGxlID0gZGxvcGVuKCJsaWJwY2kuc28uMyIsIFJUTERfTEFaWSk7CisKKyAgICAgICAg
aWYgKG1IYW5kbGUgPT0gbnVsbHB0cikKKyAgICAgICAgeworICAgICAgICAgICAgbUhhbmRsZSA9
IGRsb3BlbigibGlicGNpLnNvIiwgUlRMRF9MQVpZKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChtSGFuZGxlID09IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIG1WYWxpZCA9CisgICAgICAgICAgICAoQWxsb2MgPSByZWludGVy
cHJldF9jYXN0PGRlY2x0eXBlKEFsbG9jKT4oZGxzeW0obUhhbmRsZSwgInBjaV9hbGxvYyIpKSkg
IT0gbnVsbHB0ciAmJgorICAgICAgICAgICAgKEluaXQgPSByZWludGVycHJldF9jYXN0PGRlY2x0
eXBlKEluaXQpPihkbHN5bShtSGFuZGxlLCAicGNpX2luaXQiKSkpICE9IG51bGxwdHIgJiYKKyAg
ICAgICAgICAgIChDbGVhbnVwID0gcmVpbnRlcnByZXRfY2FzdDxkZWNsdHlwZShDbGVhbnVwKT4o
ZGxzeW0obUhhbmRsZSwgInBjaV9jbGVhbnVwIikpKSAhPQorICAgICAgICAgICAgICAgIG51bGxw
dHIgJiYKKyAgICAgICAgICAgIChTY2FuQnVzID0gcmVpbnRlcnByZXRfY2FzdDxkZWNsdHlwZShT
Y2FuQnVzKT4oZGxzeW0obUhhbmRsZSwgInBjaV9zY2FuX2J1cyIpKSkgIT0KKyAgICAgICAgICAg
ICAgICBudWxscHRyICYmCisgICAgICAgICAgICAoRmlsbEluZm8gPSByZWludGVycHJldF9jYXN0
PGRlY2x0eXBlKEZpbGxJbmZvKT4oZGxzeW0obUhhbmRsZSwgInBjaV9maWxsX2luZm8iKSkpICE9
CisgICAgICAgICAgICAgICAgbnVsbHB0ciAmJgorICAgICAgICAgICAgKExvb2t1cE5hbWUgPSBy
ZWludGVycHJldF9jYXN0PGRlY2x0eXBlKExvb2t1cE5hbWUpPigKKyAgICAgICAgICAgICAgICAg
ZGxzeW0obUhhbmRsZSwgInBjaV9sb29rdXBfbmFtZSIpKSkgIT0gbnVsbHB0cjsKKyAgICB9CisK
KyAgICBib29sIElzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtVmFsaWQ7IH0KKworICAgIH5MaWJQ
Q0koKQorICAgIHsKKyAgICAgICAgaWYgKG1IYW5kbGUgIT0gbnVsbHB0cikKKyAgICAgICAgewor
ICAgICAgICAgICAgZGxjbG9zZShtSGFuZGxlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRl
Y2x0eXBlKCY6OnBjaV9hbGxvYykgQWxsb2MgICAgICAgICAgICA9IG51bGxwdHI7CisgICAgZGVj
bHR5cGUoJjo6cGNpX2luaXQpIEluaXQgICAgICAgICAgICAgID0gbnVsbHB0cjsKKyAgICBkZWNs
dHlwZSgmOjpwY2lfY2xlYW51cCkgQ2xlYW51cCAgICAgICAgPSBudWxscHRyOworICAgIGRlY2x0
eXBlKCY6OnBjaV9zY2FuX2J1cykgU2NhbkJ1cyAgICAgICA9IG51bGxwdHI7CisgICAgZGVjbHR5
cGUoJjo6cGNpX2ZpbGxfaW5mbykgRmlsbEluZm8gICAgID0gbnVsbHB0cjsKKyAgICBkZWNsdHlw
ZSgmOjpwY2lfbG9va3VwX25hbWUpIExvb2t1cE5hbWUgPSBudWxscHRyOworCisgIHByaXZhdGU6
CisgICAgdm9pZCAqbUhhbmRsZSA9IG51bGxwdHI7CisgICAgYm9vbCBtVmFsaWQgICA9IGZhbHNl
OworfTsKKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCisvLyBBZGRzIGFuIGVudHJ5IHBl
ciBQQ0kgR1BVIGZvdW5kIGFuZCBmaWxscyB0aGUgZGV2aWNlIGFuZCB2ZW5kb3IgSUQuCitib29s
IEdldFBDSURldmljZXNXaXRoTGliUENJKHN0ZDo6dmVjdG9yPEdQVURldmljZUluZm8+ICpkZXZp
Y2VzKQoreworICAgIExpYlBDSSBwY2k7CisgICAgaWYgKCFwY2kuSXNWYWxpZCgpKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHBjaV9hY2Nlc3MgKmFjY2VzcyA9
IHBjaS5BbGxvYygpOworICAgIEFTU0VSVChhY2Nlc3MgIT0gbnVsbHB0cik7CisgICAgcGNpLklu
aXQoYWNjZXNzKTsKKyAgICBwY2kuU2NhbkJ1cyhhY2Nlc3MpOworCisgICAgZm9yIChwY2lfZGV2
ICpkZXZpY2UgPSBhY2Nlc3MtPmRldmljZXM7IGRldmljZSAhPSBudWxscHRyOyBkZXZpY2UgPSBk
ZXZpY2UtPm5leHQpCisgICAgeworICAgICAgICBwY2kuRmlsbEluZm8oZGV2aWNlLCBQQ0lfRklM
TF9JREVOVCB8IFBDSV9GSUxMX0NMQVNTKTsKKworICAgICAgICAvLyBTa2lwIG5vbi1HUFUgZGV2
aWNlcworICAgICAgICBzd2l0Y2ggKGRldmljZS0+ZGV2aWNlX2NsYXNzKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjYXNlIFBDSV9DTEFTU19ESVNQTEFZX1ZHQToKKyAgICAgICAgICAgIGNhc2Ug
UENJX0NMQVNTX0RJU1BMQVlfWEdBOgorICAgICAgICAgICAgY2FzZSBQQ0lfQ0xBU1NfRElTUExB
WV8zRDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBTa2lwIHVua25v
d24gZGV2aWNlcworICAgICAgICBpZiAoZGV2aWNlLT52ZW5kb3JfaWQgPT0gMCB8fCBkZXZpY2Ut
PmRldmljZV9pZCA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgfQorCisgICAgICAgIEdQVURldmljZUluZm8gaW5mbzsKKyAgICAgICAgaW5mby52ZW5kb3JJ
ZCA9IGRldmljZS0+dmVuZG9yX2lkOworICAgICAgICBpbmZvLmRldmljZUlkID0gZGV2aWNlLT5k
ZXZpY2VfaWQ7CisKKyAgICAgICAgZGV2aWNlcy0+cHVzaF9iYWNrKGluZm8pOworICAgIH0KKwor
ICAgIHBjaS5DbGVhbnVwKGFjY2Vzcyk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUlu
Zm9fbGludXguY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwv
U3lzdGVtSW5mb19saW51eC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjk4ZjAwMGIwNjk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb19saW51eC5jcHAKQEAgLTAsMCArMSwxNDQg
QEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNyBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN5c3RlbUluZm9fbGludXguY3BwOiBpbXBsZW1l
bnRhdGlvbiBvZiB0aGUgTGludXgtc3BlY2lmaWMgcGFydHMgb2YgU3lzdGVtSW5mby5oCisKKyNp
bmNsdWRlICJncHVfaW5mb191dGlsL1N5c3RlbUluZm9faW50ZXJuYWwuaCIKKworI2luY2x1ZGUg
PGNzdHJpbmc+CisjaW5jbHVkZSA8ZnN0cmVhbT4KKworI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0
aWxzLmgiCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisKK25hbWVzcGFjZSBhbmdsZQorewor
CituYW1lc3BhY2UKK3sKKworYm9vbCBSZWFkV2hvbGVGaWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1l
LCBzdGQ6OnN0cmluZyAqY29udGVudCkKK3sKKyAgICBzdGQ6Omlmc3RyZWFtIGZpbGUoZmlsZW5h
bWUpOworCisgICAgaWYgKCFmaWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgICpjb250ZW50ID0gc3RkOjpzdHJpbmcoc3RkOjppc3RyZWFtYnVmX2l0ZXJhdG9y
PGNoYXI+KGZpbGUpLCBzdGQ6OmlzdHJlYW1idWZfaXRlcmF0b3I8Y2hhcj4oKSk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKKy8vIFNjYW4gL3N5cy9tb2R1bGUvYW1kZ3B1L3ZlcnNpb24uCitib29s
IEdldEFNREJyYWhtYURyaXZlclZlcnNpb24oc3RkOjpzdHJpbmcgKnZlcnNpb24pCit7CisgICAg
KnZlcnNpb24gPSAiIjsKKyAgICBzdGQ6OnN0cmluZyBjb250ZW50OworCisgICAgcmV0dXJuIFJl
YWRXaG9sZUZpbGUoIi9zeXMvbW9kdWxlL2FtZGdwdS92ZXJzaW9uIiwgJmNvbnRlbnQpICYmCisg
ICAgICAgICAgIFBhcnNlQU1EQnJhaG1hRHJpdmVyVmVyc2lvbihjb250ZW50LCB2ZXJzaW9uKTsK
K30KKworLy8gU2NhbiAvZXRjL2F0aS9hbWRwY3NkYi5kZWZhdWx0IGZvciAiUmVsZWFzZVZlcnNp
b24iLgorYm9vbCBHZXRBTURDYXRhbHlzdERyaXZlclZlcnNpb24oc3RkOjpzdHJpbmcgKnZlcnNp
b24pCit7CisgICAgKnZlcnNpb24gPSAiIjsKKyAgICBzdGQ6OnN0cmluZyBjb250ZW50OworCisg
ICAgcmV0dXJuIFJlYWRXaG9sZUZpbGUoIi9ldGMvYXRpL2FtZHBjc2RiLmRlZmF1bHQiLCAmY29u
dGVudCkgJiYKKyAgICAgICAgICAgUGFyc2VBTURDYXRhbHlzdERyaXZlclZlcnNpb24oY29udGVu
dCwgdmVyc2lvbik7Cit9CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKworI2lmICFkZWZp
bmVkKEdQVV9JTkZPX1VTRV9YMTEpCitib29sIEdldE52aWRpYURyaXZlclZlcnNpb25XaXRoWE5W
Q3RybChzdGQ6OnN0cmluZyAqdmVyc2lvbikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5k
aWYKKworI2lmICFkZWZpbmVkKEdQVV9JTkZPX1VTRV9MSUJQQ0kpCitib29sIEdldFBDSURldmlj
ZXNXaXRoTGliUENJKHN0ZDo6dmVjdG9yPEdQVURldmljZUluZm8+ICpkZXZpY2VzKQoreworICAg
IHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCitib29sIEdldFN5c3RlbUluZm8oU3lzdGVtSW5m
byAqaW5mbykKK3sKKyAgICBpZiAoIUdldFBDSURldmljZXNXaXRoTGliUENJKCYoaW5mby0+Z3B1
cykpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChpbmZv
LT5ncHVzLnNpemUoKSA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIEZpbmRQcmltYXJ5R1BVKGluZm8pOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBpbmZvLT5ncHVzLnNpemUoKTsgKytpKQorICAgIHsKKyAgICAgICAgR1BVRGV2aWNlSW5mbyAq
Z3B1ID0gJmluZm8tPmdwdXNbaV07CisKKyAgICAgICAgLy8gTmV3IEdQVXMgbWlnaHQgYmUgYWRk
ZWQgaW5zaWRlIHRoaXMgbG9vcCwgZG9uJ3QgcXVlcnkgZm9yIHRoZWlyIGRyaXZlciB2ZXJzaW9u
IGFnYWluCisgICAgICAgIGlmICghZ3B1LT5kcml2ZXJWZW5kb3IuZW1wdHkoKSkKKyAgICAgICAg
eworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoSXNBTUQo
Z3B1LT52ZW5kb3JJZCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0ZDo6c3RyaW5nIHZlcnNp
b247CisgICAgICAgICAgICBpZiAoR2V0QU1EQnJhaG1hRHJpdmVyVmVyc2lvbigmdmVyc2lvbikp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ3B1LT5kcml2ZXJWZW5kb3IgID0gIkFN
RCAoQnJhaG1hKSI7CisgICAgICAgICAgICAgICAgZ3B1LT5kcml2ZXJWZXJzaW9uID0gc3RkOjpt
b3ZlKHZlcnNpb24pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoR2V0QU1E
Q2F0YWx5c3REcml2ZXJWZXJzaW9uKCZ2ZXJzaW9uKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBncHUtPmRyaXZlclZlbmRvciAgPSAiQU1EIChDYXRhbHlzdCkiOworICAgICAgICAg
ICAgICAgIGdwdS0+ZHJpdmVyVmVyc2lvbiA9IHN0ZDo6bW92ZSh2ZXJzaW9uKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChJc052aWRpYShncHUtPnZlbmRvcklkKSkK
KyAgICAgICAgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgdmVyc2lvbjsKKyAgICAgICAgICAg
IGlmIChHZXROdmlkaWFEcml2ZXJWZXJzaW9uV2l0aFhOVkN0cmwoJnZlcnNpb24pKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGdwdS0+ZHJpdmVyVmVuZG9yICA9ICJOdmlkaWEiOwor
ICAgICAgICAgICAgICAgIGdwdS0+ZHJpdmVyVmVyc2lvbiA9IHN0ZDo6bW92ZSh2ZXJzaW9uKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEluIGR1YWwtR1BVIGNhc2Vz
IHRoZSBQQ0kgc2NhbiBzb21ldGltZXMgb25seSBnaXZlcyB1cyB0aGUgSW50ZWwgR1BVLgorICAg
ICAgICAvLyBJZiB3ZSBhcmUgYWJsZSB0byBxdWVyeSBmb3IgdGhlIE52aWRpYSBkcml2ZXIgdmVy
c2lvbiwgaXQgbWVhbnMgdGhlcmUKKyAgICAgICAgLy8gd2FzIGhpZGRlbiBOdmlkaWEgR1BVLCBz
byB3ZSBhZGQgaXQgdG8gdGhlIGxpc3QgYW5kIG1ha2UgaXQgcHJpbWFyeS4KKyAgICAgICAgaWYg
KElzSW50ZWwoZ3B1LT52ZW5kb3JJZCkgJiYgaW5mby0+Z3B1cy5zaXplKCkgPT0gMSkKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RkOjpzdHJpbmcgdmVyc2lvbjsKKyAgICAgICAgICAgIGlmIChH
ZXROdmlkaWFEcml2ZXJWZXJzaW9uV2l0aFhOVkN0cmwoJnZlcnNpb24pKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIEdQVURldmljZUluZm8gbnZpZGlhSW5mbzsKKyAgICAgICAgICAg
ICAgICBudmlkaWFJbmZvLnZlbmRvcklkID0ga1ZlbmRvcklEX052aWRpYTsKKyAgICAgICAgICAg
ICAgICBudmlkaWFJbmZvLmRldmljZUlkID0gMDsKKyAgICAgICAgICAgICAgICBncHUtPmRyaXZl
clZlbmRvciAgID0gIk52aWRpYSI7CisgICAgICAgICAgICAgICAgZ3B1LT5kcml2ZXJWZXJzaW9u
ICA9IHN0ZDo6bW92ZSh2ZXJzaW9uKTsKKworICAgICAgICAgICAgICAgIGluZm8tPmdwdXMuZW1w
bGFjZV9iYWNrKHN0ZDo6bW92ZShudmlkaWFJbmZvKSk7CisgICAgICAgICAgICAgICAgaW5mby0+
aXNPcHRpbXVzID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm9fbWFjLm1t
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb19t
YWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdhN2E2MmQxNzBm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZv
X3V0aWwvU3lzdGVtSW5mb19tYWMubW0KQEAgLTAsMCArMSwxNzAgQEAKKy8vCisvLyBDb3B5cmln
aHQgKGMpIDIwMTcgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
CisvLyBTeXN0ZW1JbmZvX21hYy5jcHA6IGltcGxlbWVudGF0aW9uIG9mIHRoZSBNYWMtc3BlY2lm
aWMgcGFydHMgb2YgU3lzdGVtSW5mby5oCisKKyNpbmNsdWRlICJncHVfaW5mb191dGlsL1N5c3Rl
bUluZm9faW50ZXJuYWwuaCIKKworI2ltcG9ydCA8Q29jb2EvQ29jb2EuaD4KKyNpbXBvcnQgPElP
S2l0L0lPS2l0TGliLmg+CisKK25hbWVzcGFjZSBhbmdsZQoreworCituYW1lc3BhY2UKK3sKKwor
c3RkOjpzdHJpbmcgR2V0TWFjaGluZU1vZGVsKCkKK3sKKyAgICBpb19zZXJ2aWNlX3QgcGxhdGZv
cm1FeHBlcnQgPSBJT1NlcnZpY2VHZXRNYXRjaGluZ1NlcnZpY2UoCisgICAgICAgIGtJT01hc3Rl
clBvcnREZWZhdWx0LCBJT1NlcnZpY2VNYXRjaGluZygiSU9QbGF0Zm9ybUV4cGVydERldmljZSIp
KTsKKworICAgIGlmIChwbGF0Zm9ybUV4cGVydCA9PSBJT19PQkpFQ1RfTlVMTCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiAiIjsKKyAgICB9CisKKyAgICBDRkRhdGFSZWYgbW9kZWxEYXRhID0gc3Rh
dGljX2Nhc3Q8Q0ZEYXRhUmVmPigKKyAgICAgICAgSU9SZWdpc3RyeUVudHJ5Q3JlYXRlQ0ZQcm9w
ZXJ0eShwbGF0Zm9ybUV4cGVydCwgQ0ZTVFIoIm1vZGVsIiksIGtDRkFsbG9jYXRvckRlZmF1bHQs
IDApKTsKKyAgICBpZiAobW9kZWxEYXRhID09IG51bGxwdHIpCisgICAgeworICAgICAgICBJT09i
amVjdFJlbGVhc2UocGxhdGZvcm1FeHBlcnQpOworICAgICAgICByZXR1cm4gIiI7CisgICAgfQor
CisgICAgc3RkOjpzdHJpbmcgcmVzdWx0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+
KENGRGF0YUdldEJ5dGVQdHIobW9kZWxEYXRhKSk7CisKKyAgICBJT09iamVjdFJlbGVhc2UocGxh
dGZvcm1FeHBlcnQpOworICAgIENGUmVsZWFzZShtb2RlbERhdGEpOworCisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworLy8gRXh0cmFjdHMgb25lIGludGVnZXIgcHJvcGVydHkgZnJvbSBhIHJlZ2lz
dHJ5IGVudHJ5LgorYm9vbCBHZXRFbnRyeVByb3BlcnR5KGlvX3JlZ2lzdHJ5X2VudHJ5X3QgZW50
cnksIENGU3RyaW5nUmVmIG5hbWUsIHVpbnQzMl90ICp2YWx1ZSkKK3sKKyAgICAqdmFsdWUgPSAw
OworCisgICAgQ0ZEYXRhUmVmIGRhdGEgPSBzdGF0aWNfY2FzdDxDRkRhdGFSZWY+KAorICAgICAg
ICBJT1JlZ2lzdHJ5RW50cnlTZWFyY2hDRlByb3BlcnR5KGVudHJ5LCBrSU9TZXJ2aWNlUGxhbmUs
IG5hbWUsIGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAga0lPUmVnaXN0cnlJdGVyYXRlUmVjdXJzaXZlbHkgfCBrSU9SZWdpc3RyeUl0
ZXJhdGVQYXJlbnRzKSk7CisKKyAgICBpZiAoZGF0YSA9PSBudWxscHRyKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IHVpbnQzMl90ICp2YWx1ZVB0ciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QgKj4oQ0ZEYXRhR2V0Qnl0ZVB0cihkYXRh
KSk7CisKKyAgICBpZiAodmFsdWVQdHIgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIENGUmVs
ZWFzZShkYXRhKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgICp2YWx1ZSA9
ICp2YWx1ZVB0cjsKKyAgICBDRlJlbGVhc2UoZGF0YSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
Ky8vIENHRGlzcGxheUlPU2VydmljZVBvcnQgaXMgZGVwcmVjYXRlZCBhcyBvZiBtYWNPUyAxMC45
LCBidXQgaGFzIG5vIHJlcGxhY2VtZW50LCBzZWUKKy8vIGh0dHBzOi8vY3JidWcuY29tLzY1MDgz
NworI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgorCisvLyBGaW5kIHRoZSBpbmZv
IG9mIHRoZSBjdXJyZW50IEdQVS4KK2Jvb2wgR2V0QWN0aXZlR1BVKFZlbmRvcklEICp2ZW5kb3JJ
ZCwgRGV2aWNlSUQgKmRldmljZUlkKQoreworICAgIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgcG9ydCA9
IENHRGlzcGxheUlPU2VydmljZVBvcnQoa0NHRGlyZWN0TWFpbkRpc3BsYXkpOworCisgICAgcmV0
dXJuIEdldEVudHJ5UHJvcGVydHkocG9ydCwgQ0ZTVFIoInZlbmRvci1pZCIpLCB2ZW5kb3JJZCkg
JiYKKyAgICAgICAgICAgR2V0RW50cnlQcm9wZXJ0eShwb3J0LCBDRlNUUigiZGV2aWNlLWlkIiks
IGRldmljZUlkKTsKK30KKworI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorCisvLyBHYXRo
ZXJzIHRoZSB2ZW5kb3IgYW5kIGRldmljZSBJRHMgZm9yIHRoZSBQQ0kgR1BVcworYm9vbCBHZXRQ
Q0lEZXZpY2VzKHN0ZDo6dmVjdG9yPEdQVURldmljZUluZm8+ICpkZXZpY2VzKQoreworICAgIC8v
IG1hdGNoRGljdGlvbmFyeSB3aWxsIGJlIGNvbnN1bWVkIGJ5IElPU2VydmljZUdldE1hdGNoaW5n
U2VydmljZXMsIG5vIG5lZWQgdG8gcmVsZWFzZSBpdC4KKyAgICBDRk11dGFibGVEaWN0aW9uYXJ5
UmVmIG1hdGNoRGljdGlvbmFyeSA9IElPU2VydmljZU1hdGNoaW5nKCJJT1BDSURldmljZSIpOwor
CisgICAgaW9faXRlcmF0b3JfdCBlbnRyeUl0ZXJhdG9yOworICAgIGlmIChJT1NlcnZpY2VHZXRN
YXRjaGluZ1NlcnZpY2VzKGtJT01hc3RlclBvcnREZWZhdWx0LCBtYXRjaERpY3Rpb25hcnksICZl
bnRyeUl0ZXJhdG9yKSAhPQorICAgICAgICBrSU9SZXR1cm5TdWNjZXNzKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlvX3JlZ2lzdHJ5X2VudHJ5X3QgZW50cnkg
PSBJT19PQkpFQ1RfTlVMTDsKKworICAgIHdoaWxlICgoZW50cnkgPSBJT0l0ZXJhdG9yTmV4dChl
bnRyeUl0ZXJhdG9yKSkgIT0gSU9fT0JKRUNUX05VTEwpCisgICAgeworICAgICAgICBjb25zdGV4
cHIgdWludDMyX3Qga0NsYXNzQ29kZURpc3BsYXlWR0EgPSAweDMwMDAwOworICAgICAgICB1aW50
MzJfdCBjbGFzc0NvZGU7CisgICAgICAgIEdQVURldmljZUluZm8gaW5mbzsKKworICAgICAgICBp
ZiAoR2V0RW50cnlQcm9wZXJ0eShlbnRyeSwgQ0ZTVFIoImNsYXNzLWNvZGUiKSwgJmNsYXNzQ29k
ZSkgJiYKKyAgICAgICAgICAgIGNsYXNzQ29kZSA9PSBrQ2xhc3NDb2RlRGlzcGxheVZHQSAmJgor
ICAgICAgICAgICAgR2V0RW50cnlQcm9wZXJ0eShlbnRyeSwgQ0ZTVFIoInZlbmRvci1pZCIpLCAm
aW5mby52ZW5kb3JJZCkgJiYKKyAgICAgICAgICAgIEdldEVudHJ5UHJvcGVydHkoZW50cnksIENG
U1RSKCJkZXZpY2UtaWQiKSwgJmluZm8uZGV2aWNlSWQpKQorICAgICAgICB7CisgICAgICAgICAg
ICBkZXZpY2VzLT5wdXNoX2JhY2soaW5mbyk7CisgICAgICAgIH0KKworICAgICAgICBJT09iamVj
dFJlbGVhc2UoZW50cnkpOworICAgIH0KKyAgICBJT09iamVjdFJlbGVhc2UoZW50cnlJdGVyYXRv
cik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQor
Citib29sIEdldFN5c3RlbUluZm8oU3lzdGVtSW5mbyAqaW5mbykKK3sKKyAgICB7CisgICAgICAg
IGludDMyX3QgbWFqb3IgPSAwOworICAgICAgICBpbnQzMl90IG1pbm9yID0gMDsKKyAgICAgICAg
UGFyc2VNYWNNYWNoaW5lTW9kZWwoR2V0TWFjaGluZU1vZGVsKCksICZpbmZvLT5tYWNoaW5lTW9k
ZWxOYW1lLCAmbWFqb3IsICZtaW5vcik7CisgICAgICAgIGluZm8tPm1hY2hpbmVNb2RlbFZlcnNp
b24gPSBzdGQ6OnRvX3N0cmluZyhtYWpvcikgKyAiLiIgKyBzdGQ6OnRvX3N0cmluZyhtaW5vcik7
CisgICAgfQorCisgICAgaWYgKCFHZXRQQ0lEZXZpY2VzKCYoaW5mby0+Z3B1cykpKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChpbmZvLT5ncHVzLmVtcHR5
KCkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gRmluZCB0
aGUgYWN0aXZlIEdQVQorICAgIHsKKyAgICAgICAgVmVuZG9ySUQgYWN0aXZlVmVuZG9yOworICAg
ICAgICBEZXZpY2VJRCBhY3RpdmVEZXZpY2U7CisgICAgICAgIGlmICghR2V0QWN0aXZlR1BVKCZh
Y3RpdmVWZW5kb3IsICZhY3RpdmVEZXZpY2UpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlu
Zm8tPmdwdXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpbmZvLT5n
cHVzW2ldLnZlbmRvcklkID09IGFjdGl2ZVZlbmRvciAmJiBpbmZvLT5ncHVzW2ldLmRldmljZUlk
ID09IGFjdGl2ZURldmljZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbmZvLT5h
Y3RpdmVHUFVJbmRleCA9IGk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBGaW5kUHJpbWFyeUdQVShpbmZvKTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm9fdW5pdHRlc3Qu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5m
b191bml0dGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM3
ZDEzODQ1ZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb191bml0dGVzdC5jcHAKQEAgLTAsMCArMSwxMzEgQEAK
Ky8vCisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KKy8vCisvLyBTeXN0ZW1JbmZvX3VuaXR0ZXN0LmNwcDogVW5pdCB0ZXN0cyBmb3IgU3lz
dGVtSW5mbyogaGVscGVyIGZ1bmN0aW9ucy4KKy8vCisKKyNpbmNsdWRlICJncHVfaW5mb191dGls
L1N5c3RlbUluZm9faW50ZXJuYWwuaCIKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBhbmdsZTsKKworbmFtZXNwYWNlCit7CisKKy8vIFRlc3QgQU1EIEJyYWht
YSBkcml2ZXIgdmVyc2lvbiBwYXJzaW5nCitURVNUKFN5c3RlbUluZm9UZXN0LCBBTURCcmFobWFW
ZXJzaW9uUGFyc2luZykKK3sKKyAgICBzdGQ6OnN0cmluZyB2ZXJzaW9uOworCisgICAgLy8gQ2hl
Y2sgcGFyc2luZyBmYWlscyB3aGVuIG5vIHZlcnNpb24gc3RyaW5nIGlzIHByZXNlbnQuCisgICAg
QVNTRVJUX0ZBTFNFKFBhcnNlQU1EQnJhaG1hRHJpdmVyVmVyc2lvbigiSSBhbSBhIGx1bWJlcmph
Y2suIiwgJnZlcnNpb24pKTsKKyAgICBBU1NFUlRfRVEoIiIsIHZlcnNpb24pOworCisgICAgLy8g
Q2hlY2sgcGFyc2luZyB3aGVuIHRoZSBzdHJpbmcgaXMganVzdCB0aGUgdmVyc2lvbiBzdHJpbmcs
IHdpdGggYW5kIHdpdGhvdXQgZG90cworICAgIEFTU0VSVF9UUlVFKFBhcnNlQU1EQnJhaG1hRHJp
dmVyVmVyc2lvbigiNDIiLCAmdmVyc2lvbikpOworICAgIEFTU0VSVF9FUSgiNDIiLCB2ZXJzaW9u
KTsKKyAgICBBU1NFUlRfVFJVRShQYXJzZUFNREJyYWhtYURyaXZlclZlcnNpb24oIjQyLjAuNTYi
LCAmdmVyc2lvbikpOworICAgIEFTU0VSVF9FUSgiNDIuMC41NiIsIHZlcnNpb24pOworCisgICAg
Ly8gQ2hlY2sgcGFyc2luZyB3aXRoIHByZWZpeCAvIHN1ZmZpeAorICAgIEFTU0VSVF9UUlVFKFBh
cnNlQU1EQnJhaG1hRHJpdmVyVmVyc2lvbigiVmVyc2lvbj00Mi4wLjU2IiwgJnZlcnNpb24pKTsK
KyAgICBBU1NFUlRfRVEoIjQyLjAuNTYiLCB2ZXJzaW9uKTsKKyAgICBBU1NFUlRfVFJVRShQYXJz
ZUFNREJyYWhtYURyaXZlclZlcnNpb24oIjQyLjAuNTYgaXMgdGhlIHZlcnNpb24iLCAmdmVyc2lv
bikpOworICAgIEFTU0VSVF9FUSgiNDIuMC41NiIsIHZlcnNpb24pOworICAgIEFTU0VSVF9UUlVF
KFBhcnNlQU1EQnJhaG1hRHJpdmVyVmVyc2lvbigiNDIuMC41NiBpcyB0aGUgdmVyc2lvbiwgMTEx
IiwgJnZlcnNpb24pKTsKKyAgICBBU1NFUlRfRVEoIjQyLjAuNTYiLCB2ZXJzaW9uKTsKK30KKwor
Ly8gVGVzdCBBTUQgQ2F0YWx5c3QgdmVyc2lvbiBwYXJzaW5nCitURVNUKFN5c3RlbUluZm9UZXN0
LCBBTURDYXRhbHlzdFZlcnNpb25QYXJzaW5nKQoreworICAgIHN0ZDo6c3RyaW5nIHZlcnNpb247
CisKKyAgICAvLyBDaGVjayBwYXJzaW5nIGZhaWxzIHdoZW4gbm8gdmVyc2lvbiBzdHJpbmcgaXMg
cHJlc2VudC4KKyAgICBBU1NFUlRfRkFMU0UoUGFyc2VBTURDYXRhbHlzdERyaXZlclZlcnNpb24o
IkkgYW0gYSBsdW1iZXJqYWNrLlxuUmVsZWFzZVZlcnNpb249IiwgJnZlcnNpb24pKTsKKyAgICBB
U1NFUlRfRVEoIiIsIHZlcnNpb24pOworCisgICAgLy8gQ2hlY2sgcGFyc2luZyBmYWlscyB3aGVu
IFJlbGVhc2VWZXJzaW9uPSBpcyBwcmVzZW50IGJ1dCBubyBudW1iZXIgYXBwZWFycyBpbiB0aGUg
bGluZQorICAgIEFTU0VSVF9GQUxTRShQYXJzZUFNRENhdGFseXN0RHJpdmVyVmVyc2lvbigiMTFc
blJlbGVhc2VWZXJzaW9uPVxuMTIiLCAmdmVyc2lvbikpOworICAgIEFTU0VSVF9FUSgiIiwgdmVy
c2lvbik7CisKKyAgICAvLyBDaGVjayBwYXJzaW5nIHdvcmtzIG9uIHRoZSBzaW1wbGUgY2FzZQor
ICAgIEFTU0VSVF9UUlVFKFBhcnNlQU1EQ2F0YWx5c3REcml2ZXJWZXJzaW9uKCJSZWxlYXNlVmVy
c2lvbj00Mi4wLjU2IiwgJnZlcnNpb24pKTsKKyAgICBBU1NFUlRfRVEoIjQyLjAuNTYiLCB2ZXJz
aW9uKTsKKworICAgIC8vIENoZWNrIHBhcnNpbmcgd29ya3MgaWYgdGhlcmUgYXJlIG90aGVyIGxp
bmVzCisgICAgQVNTRVJUX1RSVUUoUGFyc2VBTURDYXRhbHlzdERyaXZlclZlcnNpb24oIjExXG5S
ZWxlYXNlVmVyc2lvbj00Mi4wLjU2XG4xMiIsICZ2ZXJzaW9uKSk7CisgICAgQVNTRVJUX0VRKCI0
Mi4wLjU2IiwgdmVyc2lvbik7CisKKyAgICAvLyBDaGVjayBwYXJzaW5nIGdldCB0aGUgZmlyc3Qg
dmVyc2lvbiBzdHJpbmcKKyAgICBBU1NFUlRfVFJVRSgKKyAgICAgICAgUGFyc2VBTURDYXRhbHlz
dERyaXZlclZlcnNpb24oIlJlbGVhc2VWZXJzaW9uPTQyLjAuNTZcblJlbGVhc2VWZXJzaW9uPTAi
LCAmdmVyc2lvbikpOworICAgIEFTU0VSVF9FUSgiNDIuMC41NiIsIHZlcnNpb24pOworCisgICAg
Ly8gQ2hlY2sgcGFyc2luZyB3aXRoIHByZWZpeCAvIHN1ZmZpeAorICAgIEFTU0VSVF9UUlVFKFBh
cnNlQU1EQ2F0YWx5c3REcml2ZXJWZXJzaW9uKCJSZWxlYXNlVmVyc2lvbj12ZXJzaW9uIGlzIDQy
LjAuNTYiLCAmdmVyc2lvbikpOworICAgIEFTU0VSVF9FUSgiNDIuMC41NiIsIHZlcnNpb24pOwor
ICAgIEFTU0VSVF9UUlVFKFBhcnNlQU1EQ2F0YWx5c3REcml2ZXJWZXJzaW9uKCJSZWxlYXNlVmVy
c2lvbj00Mi4wLjU2IGlzIHRoZSB2ZXJzaW9uIiwgJnZlcnNpb24pKTsKKyAgICBBU1NFUlRfRVEo
IjQyLjAuNTYiLCB2ZXJzaW9uKTsKK30KKworLy8gVGVzdCBNYWMgbWFjaGluZSBtb2RlbCBwYXJz
aW5nCitURVNUKFN5c3RlbUluZm9UZXN0LCBNYWNNYWNoaW5lTW9kZWxQYXJzaW5nKQoreworICAg
IHN0ZDo6c3RyaW5nIG1vZGVsOworICAgIGludDMyX3QgbWFqb3IgPSAxLCBtaW5vciA9IDI7CisK
KyAgICAvLyBUZXN0IG9uIHRoZSBlbXB0eSBzdHJpbmcsIHRoYXQgaXMgcmV0dXJuZWQgYnkgR2V0
TWFjaGluZU1vZGVsIG9uIGFuIGVycm9yCisgICAgRVhQRUNUX0ZBTFNFKFBhcnNlTWFjTWFjaGlu
ZU1vZGVsKCIiLCAmbW9kZWwsICZtYWpvciwgJm1pbm9yKSk7CisgICAgRVhQRUNUX0VRKDBVLCBt
b2RlbC5sZW5ndGgoKSk7CisgICAgRVhQRUNUX0VRKDEsIG1ham9yKTsKKyAgICBFWFBFQ1RfRVEo
MiwgbWlub3IpOworCisgICAgLy8gVGVzdCBvbiBhbiBpbnZhbGlkIHN0cmluZworICAgIEVYUEVD
VF9GQUxTRShQYXJzZU1hY01hY2hpbmVNb2RlbCgiRm9vQmFyIiwgJm1vZGVsLCAmbWFqb3IsICZt
aW5vcikpOworCisgICAgLy8gVGVzdCBvbiBhIE1hY1BybyBtb2RlbAorICAgIEVYUEVDVF9UUlVF
KFBhcnNlTWFjTWFjaGluZU1vZGVsKCJNYWNQcm80LDEiLCAmbW9kZWwsICZtYWpvciwgJm1pbm9y
KSk7CisgICAgRVhQRUNUX0VRKCJNYWNQcm8iLCBtb2RlbCk7CisgICAgRVhQRUNUX0VRKDQsIG1h
am9yKTsKKyAgICBFWFBFQ1RfRVEoMSwgbWlub3IpOworCisgICAgLy8gVGVzdCBvbiBhIE1hY0Jv
b2tQcm8gbW9kZWwKKyAgICBFWFBFQ1RfVFJVRShQYXJzZU1hY01hY2hpbmVNb2RlbCgiTWFjQm9v
a1BybzYsMiIsICZtb2RlbCwgJm1ham9yLCAmbWlub3IpKTsKKyAgICBFWFBFQ1RfRVEoIk1hY0Jv
b2tQcm8iLCBtb2RlbCk7CisgICAgRVhQRUNUX0VRKDYsIG1ham9yKTsKKyAgICBFWFBFQ1RfRVEo
MiwgbWlub3IpOworfQorCisvLyBUZXN0IFdpbmRvd3MgQ00gRGV2aWNlIElEIHBhcnNpbmcKK1RF
U1QoU3lzdGVtSW5mb1Rlc3QsIENNRGV2aWNlSURUb0RldmljZUFuZFZlbmRvcklEKQoreworICAg
IHVpbnQzMl90IHZlbmRvciA9IDA7CisgICAgdWludDMyX3QgZGV2aWNlID0gMDsKKworICAgIC8v
IFRlc3Qgb24gYSByZWFsLWxpZmUgQ00gRGV2aWNlIElECisgICAgRVhQRUNUX1RSVUUoQ01EZXZp
Y2VJRFRvRGV2aWNlQW5kVmVuZG9ySUQoCisgICAgICAgICJQQ0lcXFZFTl8xMERFJkRFVl8wRkZB
JlNVQlNZU18wOTRCMTBERSZSRVZfQTFcXDQmOTU2NzNDJjAmMDAxOCIsICZ2ZW5kb3IsICZkZXZp
Y2UpKTsKKyAgICBFWFBFQ1RfRVEoMHgxMGRldSwgdmVuZG9yKTsKKyAgICBFWFBFQ1RfRVEoMHgw
ZmZhdSwgZGV2aWNlKTsKKworICAgIC8vIFRlc3Qgb24gYSBzdHJpcHBlZC1kb3duIGJ1dCB2YWxp
ZCBDTSBEZXZpY2UgSUQgc3RyaW5nCisgICAgRVhQRUNUX1RSVUUoQ01EZXZpY2VJRFRvRGV2aWNl
QW5kVmVuZG9ySUQoIlBDSVxcVkVOXzEwREUmREVWXzBGRkEiLCAmdmVuZG9yLCAmZGV2aWNlKSk7
CisgICAgRVhQRUNUX0VRKDB4MTBkZXUsIHZlbmRvcik7CisgICAgRVhQRUNUX0VRKDB4MGZmYXUs
IGRldmljZSk7CisKKyAgICAvLyBUZXN0IG9uIGEgc3RyaW5nIHRoYXQgaXMgdG9vIHNtYWxsCisg
ICAgRVhQRUNUX0ZBTFNFKENNRGV2aWNlSURUb0RldmljZUFuZFZlbmRvcklEKCJcXFZFTl8xMERF
JkRFVl8wRkZBIiwgJnZlbmRvciwgJmRldmljZSkpOworICAgIEVYUEVDVF9FUSgwdSwgdmVuZG9y
KTsKKyAgICBFWFBFQ1RfRVEoMHUsIGRldmljZSk7CisKKyAgICAvLyBUZXN0IHdpdGggaW52YWxp
ZCBudW1iZXIKKyAgICBFWFBFQ1RfRkFMU0UoQ01EZXZpY2VJRFRvRGV2aWNlQW5kVmVuZG9ySUQo
IlBDSVxcVkVOX1hYWFgmREVWX1hYWFgiLCAmdmVuZG9yLCAmZGV2aWNlKSk7CisgICAgRVhQRUNU
X0VRKDB1LCB2ZW5kb3IpOworICAgIEVYUEVDVF9FUSgwdSwgZGV2aWNlKTsKK30KKworfSAgLy8g
YW5vbnltb3VzIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb193aW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2dwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb193aW4uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zMDczODIyNGJmMgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm9fd2lu
LmNwcApAQCAtMCwwICsxLDIwNCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMy0yMDE3IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gU3lzdGVtSW5m
b193aW4uY3BwOiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgV2luZG93cy1zcGVjaWZpYyBwYXJ0cyBv
ZiBTeXN0ZW1JbmZvLmgKKworI2luY2x1ZGUgImdwdV9pbmZvX3V0aWwvU3lzdGVtSW5mb19pbnRl
cm5hbC5oIgorCisvLyBXaW5kb3dzLmggbmVlZHMgdG8gYmUgaW5jbHVkZWQgZmlyc3QKKyNpbmNs
dWRlIDx3aW5kb3dzLmg+CisKKyNpZiBkZWZpbmVkKEdQVV9JTkZPX1VTRV9TRVRVUEFQSSkKKyNp
bmNsdWRlIDxjZmdtZ3IzMi5oPgorI2luY2x1ZGUgPHNldHVwYXBpLmg+CisjZWxpZiBkZWZpbmVk
KEdQVV9JTkZPX1VTRV9EWEdJKQorI2luY2x1ZGUgPGR4Z2kuaD4KKyNpbmNsdWRlIDxkM2QxMC5o
PgorI2Vsc2UKKyNlcnJvciAiU3lzdGVtSW5mb193aW4gbmVlZHMgYXQgbGVhc3QgR1BVX0lORk9f
VVNFX1NFVFVQQVBJIG9yIEdQVV9JTkZPX1VTRV9EWEdJIGRlZmluZWQiCisjZW5kaWYKKworI2lu
Y2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPHNzdHJlYW0+CisKK25hbWVzcGFjZSBhbmdsZQorewor
CituYW1lc3BhY2UKK3sKKworI2lmIGRlZmluZWQoR1BVX0lORk9fVVNFX1NFVFVQQVBJKQorCitz
dGQ6OnN0cmluZyBHZXRSZWdpc3RyeVN0cmluZ1ZhbHVlKEhLRVkga2V5LCBjb25zdCBjaGFyICp2
YWx1ZU5hbWUpCit7CisgICAgc3RkOjphcnJheTxjaGFyLCAyNTU+IHZhbHVlOworICAgIERXT1JE
IHZhbHVlU2l6ZSA9IHNpemVvZih2YWx1ZSk7CisgICAgaWYgKFJlZ1F1ZXJ5VmFsdWVFeEEoa2V5
LCB2YWx1ZU5hbWUsIG51bGxwdHIsIG51bGxwdHIsIHJlaW50ZXJwcmV0X2Nhc3Q8TFBCWVRFPih2
YWx1ZS5kYXRhKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWx1ZVNpemUpID09IEVS
Uk9SX1NVQ0NFU1MpCisgICAgeworICAgICAgICByZXR1cm4gdmFsdWUuZGF0YSgpOworICAgIH0K
KyAgICByZXR1cm4gIiI7Cit9CisKKy8vIEdhdGhlcnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRl
dmljZXMgZnJvbSB0aGUgcmVnaXN0cnkuIFRoZSByZWFzb24gd2h5IHdlIGFyZW4ndCB1c2luZwor
Ly8gYSBkZWRpY2F0ZWQgQVBJIHN1Y2ggYXMgRFhHSSBpcyB0aGF0IHdlIG5lZWQgaW5mb3JtYXRp
b24gbGlrZSB0aGUgZHJpdmVyIHZlbmRvciBhbmQgZGF0ZS4KKy8vIERYR0kgZG9lc24ndCBwcm92
aWRlIGEgd2F5IHRvIGtub3cgdGhlIGRldmljZSByZWdpc3RyeSBrZXkgZnJvbSBhbiBJRFhHSUFk
YXB0ZXIuCitib29sIEdldERldmljZXNGcm9tUmVnaXN0cnkoc3RkOjp2ZWN0b3I8R1BVRGV2aWNl
SW5mbz4gKmRldmljZXMpCit7CisgICAgLy8gRGlzcGxheSBhZGFwdGVyIGNsYXNzIEdVSUQgZnJv
bQorICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93
cy9oYXJkd2FyZS9mZjU1MzQyNiUyOHY9dnMuODUlMjkuYXNweAorICAgIEdVSUQgZGlzcGxheUNs
YXNzID0geworICAgICAgICAweDRkMzZlOTY4LCAweGUzMjUsIDB4MTFjZSwgezB4YmYsIDB4YzEs
IDB4MDgsIDB4MDAsIDB4MmIsIDB4ZTEsIDB4MDMsIDB4MTh9fTsKKworICAgIEhERVZJTkZPIGRl
dmljZUluZm8gPSBTZXR1cERpR2V0Q2xhc3NEZXZzVygmZGlzcGxheUNsYXNzLCBudWxscHRyLCBu
dWxscHRyLCBESUdDRl9QUkVTRU5UKTsKKworICAgIGlmIChkZXZpY2VJbmZvID09IElOVkFMSURf
SEFORExFX1ZBTFVFKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IC8vIFRoaXMgaXRlcmF0ZXMgb3ZlciB0aGUgZGV2aWNlcyBvZiB0aGUgIkRpc3BsYXkgYWRhcHRl
ciIgY2xhc3MKKyAgICBEV09SRCBkZXZpY2VJbmRleCA9IDA7CisgICAgU1BfREVWSU5GT19EQVRB
IGRldmljZURhdGE7CisgICAgZGV2aWNlRGF0YS5jYlNpemUgPSBzaXplb2YoZGV2aWNlRGF0YSk7
CisgICAgd2hpbGUgKFNldHVwRGlFbnVtRGV2aWNlSW5mbyhkZXZpY2VJbmZvLCBkZXZpY2VJbmRl
eCsrLCAmZGV2aWNlRGF0YSkpCisgICAgeworICAgICAgICAvLyBUaGUgZGV2aWNlIGFuZCB2ZW5k
b3IgSURzIGNhbiBiZSBnYXRoZXJlZCBkaXJlY3RseSwgYnV0IGluZm9ybWF0aW9uIGFib3V0IHRo
ZSBkcml2ZXIKKyAgICAgICAgLy8gcmVxdWlyZXMgc29tZSByZWdpc3RyeSBkaWdnaW5nCisgICAg
ICAgIGNoYXIgZnVsbERldmljZUlEW01BWF9ERVZJQ0VfSURfTEVOXTsKKyAgICAgICAgaWYgKENN
X0dldF9EZXZpY2VfSURBKGRldmljZURhdGEuRGV2SW5zdCwgZnVsbERldmljZUlELCBNQVhfREVW
SUNFX0lEX0xFTiwgMCkgIT0gQ1JfU1VDQ0VTUykKKyAgICAgICAgeworICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgIH0KKworICAgICAgICBHUFVEZXZpY2VJbmZvIGRldmljZTsKKworICAg
ICAgICBpZiAoIUNNRGV2aWNlSURUb0RldmljZUFuZFZlbmRvcklEKGZ1bGxEZXZpY2VJRCwgJmRl
dmljZS52ZW5kb3JJZCwgJmRldmljZS5kZXZpY2VJZCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gVGhlIGRyaXZlciBrZXkgd2lsbCBl
bmQgd2l0aCBzb21ldGhpbmcgbGlrZSB7PGRpc3BsYXlDbGFzcz59Lzw0IGRpZ2l0IG51bWJlcj4u
CisgICAgICAgIHN0ZDo6YXJyYXk8V0NIQVIsIDI1NT4gdmFsdWU7CisgICAgICAgIGlmICghU2V0
dXBEaUdldERldmljZVJlZ2lzdHJ5UHJvcGVydHlXKGRldmljZUluZm8sICZkZXZpY2VEYXRhLCBT
UERSUF9EUklWRVIsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEJZVEU+KHZhbHVlLmRhdGEoKSksIHNpemVv
Zih2YWx1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
CisgICAgICAgIHN0ZDo6d3N0cmluZyBkcml2ZXJLZXkgPSBMIlN5c3RlbVxcQ3VycmVudENvbnRy
b2xTZXRcXENvbnRyb2xcXENsYXNzXFwiOworICAgICAgICBkcml2ZXJLZXkgKz0gdmFsdWUuZGF0
YSgpOworCisgICAgICAgIEhLRVkga2V5OworICAgICAgICBpZiAoUmVnT3BlbktleUV4VyhIS0VZ
X0xPQ0FMX01BQ0hJTkUsIGRyaXZlcktleS5jX3N0cigpLCAwLCBLRVlfUVVFUllfVkFMVUUsICZr
ZXkpICE9CisgICAgICAgICAgICBFUlJPUl9TVUNDRVNTKQorICAgICAgICB7CisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGRldmljZS5kcml2ZXJWZXJzaW9uID0g
R2V0UmVnaXN0cnlTdHJpbmdWYWx1ZShrZXksICJEcml2ZXJWZXJzaW9uIik7CisgICAgICAgIGRl
dmljZS5kcml2ZXJEYXRlICAgID0gR2V0UmVnaXN0cnlTdHJpbmdWYWx1ZShrZXksICJEcml2ZXJE
YXRlIik7CisgICAgICAgIGRldmljZS5kcml2ZXJWZW5kb3IgID0gR2V0UmVnaXN0cnlTdHJpbmdW
YWx1ZShrZXksICJQcm92aWRlck5hbWUiKTsKKworICAgICAgICBSZWdDbG9zZUtleShrZXkpOwor
CisgICAgICAgIGRldmljZXMtPnB1c2hfYmFjayhkZXZpY2UpOworICAgIH0KKworICAgIFNldHVw
RGlEZXN0cm95RGV2aWNlSW5mb0xpc3QoZGV2aWNlSW5mbyk7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworI2VsaWYgZGVmaW5lZChHUFVfSU5GT19VU0VfRFhHSSkKKworYm9vbCBHZXREZXZpY2Vz
RnJvbURYR0koc3RkOjp2ZWN0b3I8R1BVRGV2aWNlSW5mbz4gKmRldmljZXMpCit7CisgICAgSURY
R0lGYWN0b3J5ICpmYWN0b3J5OworICAgIGlmICghU1VDQ0VFREVEKENyZWF0ZURYR0lGYWN0b3J5
KF9fdXVpZG9mKElEWEdJRmFjdG9yeSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqKj4oJmZhY3Rv
cnkpKSkpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgVUlOVCBp
ICAgICAgICAgICAgICAgID0gMDsKKyAgICBJRFhHSUFkYXB0ZXIgKmFkYXB0ZXIgPSBudWxscHRy
OworICAgIHdoaWxlIChmYWN0b3J5LT5FbnVtQWRhcHRlcnMoaSsrLCAmYWRhcHRlcikgIT0gRFhH
SV9FUlJPUl9OT1RfRk9VTkQpCisgICAgeworICAgICAgICBEWEdJX0FEQVBURVJfREVTQyBkZXNj
OworICAgICAgICBhZGFwdGVyLT5HZXREZXNjKCZkZXNjKTsKKworICAgICAgICBMQVJHRV9JTlRF
R0VSIHVtZFZlcnNpb247CisgICAgICAgIGlmIChhZGFwdGVyLT5DaGVja0ludGVyZmFjZVN1cHBv
cnQoX191dWlkb2YoSUQzRDEwRGV2aWNlKSwgJnVtZFZlcnNpb24pID09CisgICAgICAgICAgICBE
WEdJX0VSUk9SX1VOU1VQUE9SVEVEKQorICAgICAgICB7CisgICAgICAgICAgICBhZGFwdGVyLT5S
ZWxlYXNlKCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IFRoZSBVTUQgZHJpdmVyIHZlcnNpb24gaGVyZSBpcyB0aGUgc2FtZSBhcyBpbiB0aGUgcmVnaXN0
cnkgZXhjZXB0IGZvciB0aGUgbGFzdCBudW1iZXIuCisgICAgICAgIHVpbnQ2NF90IGludFZlcnNp
b24gPSB1bWRWZXJzaW9uLlF1YWRQYXJ0OworICAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gbzsK
KworICAgICAgICBjb25zdCB1aW50NjRfdCBrTWFzayA9IDB4RkY7CisgICAgICAgIG8gPDwgKChp
bnRWZXJzaW9uID4+IDQ4KSAmIGtNYXNrKSA8PCAiLiI7CisgICAgICAgIG8gPDwgKChpbnRWZXJz
aW9uID4+IDMyKSAmIGtNYXNrKSA8PCAiLiI7CisgICAgICAgIG8gPDwgKChpbnRWZXJzaW9uID4+
IDE2KSAmIGtNYXNrKSA8PCAiLiI7CisgICAgICAgIG8gPDwgKGludFZlcnNpb24gJiBrTWFzayk7
CisKKyAgICAgICAgR1BVRGV2aWNlSW5mbyBkZXZpY2U7CisgICAgICAgIGRldmljZS52ZW5kb3JJ
ZCAgICAgID0gZGVzYy5WZW5kb3JJZDsKKyAgICAgICAgZGV2aWNlLmRldmljZUlkICAgICAgPSBk
ZXNjLkRldmljZUlkOworICAgICAgICBkZXZpY2UuZHJpdmVyVmVyc2lvbiA9IG8uc3RyKCk7CisK
KyAgICAgICAgZGV2aWNlcy0+cHVzaF9iYWNrKGRldmljZSk7CisKKyAgICAgICAgYWRhcHRlci0+
UmVsZWFzZSgpOworICAgIH0KKworICAgIGZhY3RvcnktPlJlbGVhc2UoKTsKKworICAgIHJldHVy
biB0cnVlOworfQorCisjZWxzZQorI2Vycm9yCisjZW5kaWYKKworfSAgLy8gYW5vbnltb3VzIG5h
bWVzcGFjZQorCitib29sIEdldFN5c3RlbUluZm8oU3lzdGVtSW5mbyAqaW5mbykKK3sKKyNpZiBk
ZWZpbmVkKEdQVV9JTkZPX1VTRV9TRVRVUEFQSSkKKyAgICBpZiAoIUdldERldmljZXNGcm9tUmVn
aXN0cnkoJmluZm8tPmdwdXMpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyNlbGlmIGRlZmluZWQoR1BVX0lORk9fVVNFX0RYR0kpCisgICAgaWYgKCFHZXREZXZpY2VzRnJv
bURYR0koJmluZm8tPmdwdXMpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyNlbHNlCisjZXJyb3IKKyNlbmRpZgorCisgICAgaWYgKGluZm8tPmdwdXMuc2l6ZSgpID09IDAp
CisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgRmluZFByaW1hcnlH
UFUoaW5mbyk7CisKKyAgICAvLyBudmQzZDl3cmFwLmRsbCBpcyBsb2FkZWQgaW50byBhbGwgcHJv
Y2Vzc2VzIHdoZW4gT3B0aW11cyBpcyBlbmFibGVkLgorICAgIEhNT0RVTEUgbnZkM2Q5d3JhcCA9
IEdldE1vZHVsZUhhbmRsZVcoTCJudmQzZDl3cmFwLmRsbCIpOworICAgIGluZm8tPmlzT3B0aW11
cyAgICA9IG52ZDNkOXdyYXAgIT0gbnVsbHB0cjsKKworICAgIHJldHVybiB0cnVlOworfQorCit9
ICAvLyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm9feDExLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9ncHVfaW5mb191dGlsL1N5c3RlbUluZm9feDExLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGNjZGNlYWE2ODAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvZ3B1X2luZm9fdXRpbC9TeXN0ZW1JbmZvX3gx
MS5jcHAKQEAgLTAsMCArMSw1MyBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMy0yMDE3IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gU3lzdGVtSW5m
b194MTEuY3BwOiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgWDExLXNwZWNpZmljIHBhcnRzIG9mIFN5
c3RlbUluZm8uaAorCisjaW5jbHVkZSAiZ3B1X2luZm9fdXRpbC9TeXN0ZW1JbmZvX2ludGVybmFs
LmgiCisKKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorCisjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgi
CisjaW5jbHVkZSAidGhpcmRfcGFydHkvbGliWE5WQ3RybC9OVkN0cmwuaCIKKyNpbmNsdWRlICJ0
aGlyZF9wYXJ0eS9saWJYTlZDdHJsL05WQ3RybExpYi5oIgorCisjaWYgIWRlZmluZWQoR1BVX0lO
Rk9fVVNFX1gxMSkKKyNlcnJvciBTeXN0ZW1JbmZvX3gxMS5jcHAgY29tcGlsZWQgd2l0aG91dCBH
UFVfSU5GT19VU0VfWDExCisjZW5kaWYKKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK2Jvb2wgR2V0
TnZpZGlhRHJpdmVyVmVyc2lvbldpdGhYTlZDdHJsKHN0ZDo6c3RyaW5nICp2ZXJzaW9uKQorewor
ICAgICp2ZXJzaW9uID0gIiI7CisKKyAgICBpbnQgZXZlbnRCYXNlID0gMDsKKyAgICBpbnQgZXJy
b3JCYXNlID0gMDsKKworICAgIERpc3BsYXkgKmRpc3BsYXkgPSBYT3BlbkRpc3BsYXkoTlVMTCk7
CisKKyAgICBpZiAoWE5WQ1RSTFF1ZXJ5RXh0ZW5zaW9uKGRpc3BsYXksICZldmVudEJhc2UsICZl
cnJvckJhc2UpKQorICAgIHsKKyAgICAgICAgaW50IHNjcmVlbkNvdW50ID0gU2NyZWVuQ291bnQo
ZGlzcGxheSk7CisgICAgICAgIGZvciAoaW50IHNjcmVlbiA9IDA7IHNjcmVlbiA8IHNjcmVlbkNv
dW50OyArK3NjcmVlbikKKyAgICAgICAgeworICAgICAgICAgICAgY2hhciAqYnVmZmVyID0gbnVs
bHB0cjsKKyAgICAgICAgICAgIGlmIChYTlZDVFJMSXNOdlNjcmVlbihkaXNwbGF5LCBzY3JlZW4p
ICYmCisgICAgICAgICAgICAgICAgWE5WQ1RSTFF1ZXJ5U3RyaW5nQXR0cmlidXRlKGRpc3BsYXks
IHNjcmVlbiwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TlZfQ1RSTF9TVFJJTkdfTlZJRElBX0RSSVZFUl9WRVJTSU9OLCAmYnVmZmVyKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYnVmZmVyICE9IG51bGxwdHIpOworICAgICAg
ICAgICAgICAgICp2ZXJzaW9uID0gYnVmZmVyOworICAgICAgICAgICAgICAgIFhGcmVlKGJ1ZmZl
cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2xvYWRpbWFnZS5oCmluZGV4IDU5OGU4NTJmMTg1
Li4zZThhYWM3OWMyMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2lt
YWdlX3V0aWwvbG9hZGltYWdlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2lt
YWdlX3V0aWwvbG9hZGltYWdlLmgKQEAgLTU2MSw2ICs1NjEsMTYgQEAgdm9pZCBMb2FkRVRDMlJH
QjhUb1JHQkE4KHNpemVfdCB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
b3V0cHV0Um93UGl0Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERl
cHRoUGl0Y2gpOwogCit2b2lkIExvYWRFVEMyUkdCOFRvQkMxKHNpemVfdCB3aWR0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91
dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0RGVwdGhQ
aXRjaCk7CisKIHZvaWQgTG9hZEVUQzJTUkdCOFRvUkdCQTgoc2l6ZV90IHdpZHRoLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgZGVwdGgsCkBAIC01NzEsNiArNTgxLDE2IEBAIHZvaWQgTG9hZEVUQzJTUkdC
OFRvUkdCQTgoc2l6ZV90IHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
b3V0cHV0Um93UGl0Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRE
ZXB0aFBpdGNoKTsKIAordm9pZCBMb2FkRVRDMlNSR0I4VG9CQzEoc2l6ZV90IHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXREZXB0aFBpdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91
dHB1dERlcHRoUGl0Y2gpOworCiB2b2lkIExvYWRFVEMyUkdCOEExVG9SR0JBOChzaXplX3Qgd2lk
dGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLApAQCAtNTgxLDYgKzYwMSwxNiBAQCB2b2lk
IExvYWRFVEMyUkdCOEExVG9SR0JBOChzaXplX3Qgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CiAKK3ZvaWQgTG9hZEVUQzJSR0I4QTFUb0JDMShz
aXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0
RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKTsKKwogdm9pZCBMb2FkRVRD
MlNSR0I4QTFUb1JHQkE4KHNpemVfdCB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaGVpZ2h0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0
aCwKQEAgLTU5MSw2ICs2MjEsMTYgQEAgdm9pZCBMb2FkRVRDMlNSR0I4QTFUb1JHQkE4KHNpemVf
dCB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0
Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gp
OwogCit2b2lkIExvYWRFVEMyU1JHQjhBMVRvQkMxKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpp
bnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0Um93UGl0Y2gsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dERlcHRoUGl0Y2gsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgb3V0cHV0RGVwdGhQaXRjaCk7CisKIHZvaWQgTG9hZEVUQzJSR0JBOFRvUkdCQTgoc2l6
ZV90IHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvaW1hZ2VfdXRpbC9sb2FkaW1hZ2VfZXRjLmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9pbWFnZV91dGlsL2xvYWRpbWFnZV9ldGMuY3BwCmluZGV4
IGIwODgxZjcyODc4Li43YzdlOGRkNWU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2ltYWdlX3V0aWwvbG9hZGltYWdlX2V0Yy5jcHAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2ltYWdlX3V0aWwvbG9hZGltYWdlX2V0Yy5jcHAKQEAgLTUyOCw4ICs1
MjgsOSBAQCBzdHJ1Y3QgRVRDMkJsb2NrCiAgICAgICAgIGludCBiMiA9IGV4dGVuZF80dG84Yml0
cyhibG9jay5IQjIpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgZGlzdGFuY2VbOF0gPSB7
MywgNiwgMTEsIDE2LCAyMywgMzIsIDQxLCA2NH07Ci0gICAgICAgIGNvbnN0IGludCBkICAgICAg
ICAgICAgICAgICAgPSBkaXN0YW5jZVsoYmxvY2suSGRhIDw8IDIpIHwgKGJsb2NrLkhkYiA8PCAx
KSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyMSA8PCAxNiB8IGcxIDw8IDgg
fCBiMSkgPj0gKHIyIDw8IDE2IHwgZzIgPDwgOCB8IGIyKSA/IDEgOiAwKV07CisgICAgICAgIGNv
bnN0IGludCBvcmRlcmluZ1RyaWNrQml0ID0KKyAgICAgICAgICAgICgocjEgPDwgMTYgfCBnMSA8
PCA4IHwgYjEpID49IChyMiA8PCAxNiB8IGcyIDw8IDggfCBiMikgPyAxIDogMCk7CisgICAgICAg
IGNvbnN0IGludCBkID0gZGlzdGFuY2VbKGJsb2NrLkhkYSA8PCAyKSB8IChibG9jay5IZGIgPDwg
MSkgfCBvcmRlcmluZ1RyaWNrQml0XTsKIAogICAgICAgICBjb25zdCBSOEc4QjhBOCBwYWludENv
bG9yc1s0XSA9IHsKICAgICAgICAgICAgIGNyZWF0ZVJHQkEocjEgKyBkLCBnMSArIGQsIGIxICsg
ZCksIGNyZWF0ZVJHQkEocjEgLSBkLCBnMSAtIGQsIGIxIC0gZCksCkBAIC0xMTI5LDggKzExMzAs
NDggQEAgc3RydWN0IEVUQzJCbG9jawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxwaGEpIGNvbnN0CiAgICAgewotICAgICAg
ICAvLyBUT0RPIChtZ29uZyk6IFdpbGwgYmUgaW1wbGVtZW50ZWQgc29vbgotICAgICAgICBVTklN
UExFTUVOVEVEKCk7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga051bUNvbG9ycyA9IDQ7
CisKKyAgICAgICAgLy8gVGFibGUgQy44LCBkaXN0YW5jZSBpbmRleCBmb3IgVCBhbmQgSCBtb2Rl
cworICAgICAgICBjb25zdCBhdXRvICZibG9jayA9IHUuaWRodC5tb2RlLnRtOworCisgICAgICAg
IGludCByMSA9IGV4dGVuZF80dG84Yml0cyhibG9jay5UUjFhIDw8IDIgfCBibG9jay5UUjFiKTsK
KyAgICAgICAgaW50IGcxID0gZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLlRHMSk7CisgICAgICAgIGlu
dCBiMSA9IGV4dGVuZF80dG84Yml0cyhibG9jay5UQjEpOworICAgICAgICBpbnQgcjIgPSBleHRl
bmRfNHRvOGJpdHMoYmxvY2suVFIyKTsKKyAgICAgICAgaW50IGcyID0gZXh0ZW5kXzR0bzhiaXRz
KGJsb2NrLlRHMik7CisgICAgICAgIGludCBiMiA9IGV4dGVuZF80dG84Yml0cyhibG9jay5UQjIp
OworCisgICAgICAgIHN0YXRpYyBpbnQgZGlzdGFuY2VbOF0gPSB7MywgNiwgMTEsIDE2LCAyMywg
MzIsIDQxLCA2NH07CisgICAgICAgIGNvbnN0IGludCBkICAgICAgICAgICAgPSBkaXN0YW5jZVti
bG9jay5UZGEgPDwgMSB8IGJsb2NrLlRkYl07CisKKyAgICAgICAgLy8gSW4gRVRDIG9wYXF1ZSBw
dW5jaCB0aHJvdWdoIGZvcm1hdHMsIGluZGV4ID09IDIgbWVhbnMgdHJhbnNwYXJlbnQgcGl4ZWwu
CisgICAgICAgIC8vIFRodXMgd2UgZG9uJ3QgbmVlZCB0byBjb21wdXRlIGl0cyBjb2xvciwganVz
dCBhc3NpZ24gaXQgYXMgYmxhY2suCisgICAgICAgIGNvbnN0IFI4RzhCOEE4IHBhaW50Q29sb3Jz
W2tOdW1Db2xvcnNdID0geworICAgICAgICAgICAgY3JlYXRlUkdCQShyMSwgZzEsIGIxKSwgY3Jl
YXRlUkdCQShyMiArIGQsIGcyICsgZCwgYjIgKyBkKSwKKyAgICAgICAgICAgIG5vbk9wYXF1ZVB1
bmNoVGhyb3VnaEFscGhhID8gY3JlYXRlUkdCQSgwLCAwLCAwLCAwKSA6IGNyZWF0ZVJHQkEocjIs
IGcyLCBiMiksCisgICAgICAgICAgICBjcmVhdGVSR0JBKHIyIC0gZCwgZzIgLSBkLCBiMiAtIGQp
LAorICAgICAgICB9OworCisgICAgICAgIGludCBwaXhlbEluZGljZXNba051bVBpeGVsc0luQmxv
Y2tdOworICAgICAgICBpbnQgcGl4ZWxJbmRleENvdW50c1trTnVtQ29sb3JzXSA9IHswfTsKKyAg
ICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCA0OyBqKyspCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGludCAqcm93ID0gJnBpeGVsSW5kaWNlc1tqICogNF07CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IDQ7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
b25zdCBzaXplX3QgcGl4ZWxJbmRleCA9IGdldEluZGV4KGksIGopOworICAgICAgICAgICAgICAg
IHJvd1tpXSAgICAgICAgICAgICAgICAgID0gc3RhdGljX2Nhc3Q8aW50PihwaXhlbEluZGV4KTsK
KyAgICAgICAgICAgICAgICBwaXhlbEluZGV4Q291bnRzW3BpeGVsSW5kZXhdKys7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpbnQgbWluQ29sb3JJbmRleCwgbWF4Q29sb3JJ
bmRleDsKKyAgICAgICAgc2VsZWN0RW5kUG9pbnRQQ0EocGl4ZWxJbmRleENvdW50cywgcGFpbnRD
b2xvcnMsIGtOdW1Db2xvcnMsICZtaW5Db2xvckluZGV4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAmbWF4Q29sb3JJbmRleCk7CisKKyAgICAgICAgcGFja0JDMShkZXN0LCBwaXhlbEluZGlj
ZXMsIHBpeGVsSW5kZXhDb3VudHMsIHBhaW50Q29sb3JzLCBrTnVtQ29sb3JzLCBtaW5Db2xvcklu
ZGV4LAorICAgICAgICAgICAgICAgIG1heENvbG9ySW5kZXgsIG5vbk9wYXF1ZVB1bmNoVGhyb3Vn
aEFscGhhKTsKICAgICB9CiAKICAgICB2b2lkIHRyYW5zY29kZUhCbG9ja1RvQkMxKHVpbnQ4X3Qg
KmRlc3QsCkBAIC0xMTQxLDggKzExODIsNTEgQEAgc3RydWN0IEVUQzJCbG9jawogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCBhbHBoYVZhbHVlc1s0XVs0XSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9uT3BhcXVlUHVuY2hUaHJvdWdoQWxw
aGEpIGNvbnN0CiAgICAgewotICAgICAgICAvLyBUT0RPIChtZ29uZyk6IFdpbGwgYmUgaW1wbGVt
ZW50ZWQgc29vbgotICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgIHN0YXRpYyBjb25z
dCBzaXplX3Qga051bUNvbG9ycyA9IDQ7CisKKyAgICAgICAgLy8gVGFibGUgQy44LCBkaXN0YW5j
ZSBpbmRleCBmb3IgVCBhbmQgSCBtb2RlcworICAgICAgICBjb25zdCBhdXRvICZibG9jayA9IHUu
aWRodC5tb2RlLmhtOworCisgICAgICAgIGludCByMSA9IGV4dGVuZF80dG84Yml0cyhibG9jay5I
UjEpOworICAgICAgICBpbnQgZzEgPSBleHRlbmRfNHRvOGJpdHMoYmxvY2suSEcxYSA8PCAxIHwg
YmxvY2suSEcxYik7CisgICAgICAgIGludCBiMSA9IGV4dGVuZF80dG84Yml0cyhibG9jay5IQjFh
IDw8IDMgfCBibG9jay5IQjFiIDw8IDEgfCBibG9jay5IQjFjKTsKKyAgICAgICAgaW50IHIyID0g
ZXh0ZW5kXzR0bzhiaXRzKGJsb2NrLkhSMik7CisgICAgICAgIGludCBnMiA9IGV4dGVuZF80dG84
Yml0cyhibG9jay5IRzJhIDw8IDEgfCBibG9jay5IRzJiKTsKKyAgICAgICAgaW50IGIyID0gZXh0
ZW5kXzR0bzhiaXRzKGJsb2NrLkhCMik7CisKKyAgICAgICAgc3RhdGljIGNvbnN0IGludCBkaXN0
YW5jZVs4XSA9IHszLCA2LCAxMSwgMTYsIDIzLCAzMiwgNDEsIDY0fTsKKyAgICAgICAgY29uc3Qg
aW50IG9yZGVyaW5nVHJpY2tCaXQgPQorICAgICAgICAgICAgKChyMSA8PCAxNiB8IGcxIDw8IDgg
fCBiMSkgPj0gKHIyIDw8IDE2IHwgZzIgPDwgOCB8IGIyKSA/IDEgOiAwKTsKKyAgICAgICAgY29u
c3QgaW50IGQgPSBkaXN0YW5jZVsoYmxvY2suSGRhIDw8IDIpIHwgKGJsb2NrLkhkYiA8PCAxKSB8
IG9yZGVyaW5nVHJpY2tCaXRdOworCisgICAgICAgIC8vIEluIEVUQyBvcGFxdWUgcHVuY2ggdGhy
b3VnaCBmb3JtYXRzLCBpbmRleCA9PSAyIG1lYW5zIHRyYW5zcGFyZW50IHBpeGVsLgorICAgICAg
ICAvLyBUaHVzIHdlIGRvbid0IG5lZWQgdG8gY29tcHV0ZSBpdHMgY29sb3IsIGp1c3QgYXNzaWdu
IGl0IGFzIGJsYWNrLgorICAgICAgICBjb25zdCBSOEc4QjhBOCBwYWludENvbG9yc1trTnVtQ29s
b3JzXSA9IHsKKyAgICAgICAgICAgIGNyZWF0ZVJHQkEocjEgKyBkLCBnMSArIGQsIGIxICsgZCks
IGNyZWF0ZVJHQkEocjEgLSBkLCBnMSAtIGQsIGIxIC0gZCksCisgICAgICAgICAgICBub25PcGFx
dWVQdW5jaFRocm91Z2hBbHBoYSA/IGNyZWF0ZVJHQkEoMCwgMCwgMCwgMCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY3JlYXRlUkdCQShyMiArIGQsIGcyICsgZCwg
YjIgKyBkKSwKKyAgICAgICAgICAgIGNyZWF0ZVJHQkEocjIgLSBkLCBnMiAtIGQsIGIyIC0gZCks
CisgICAgICAgIH07CisKKyAgICAgICAgaW50IHBpeGVsSW5kaWNlc1trTnVtUGl4ZWxzSW5CbG9j
a107CisgICAgICAgIGludCBwaXhlbEluZGV4Q291bnRzW2tOdW1Db2xvcnNdID0gezB9OworICAg
ICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IDQ7IGorKykKKyAgICAgICAgeworICAgICAgICAg
ICAgaW50ICpyb3cgPSAmcGl4ZWxJbmRpY2VzW2ogKiA0XTsKKyAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgNDsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNv
bnN0IHNpemVfdCBwaXhlbEluZGV4ID0gZ2V0SW5kZXgoaSwgaik7CisgICAgICAgICAgICAgICAg
cm93W2ldICAgICAgICAgICAgICAgICAgPSBzdGF0aWNfY2FzdDxpbnQ+KHBpeGVsSW5kZXgpOwor
ICAgICAgICAgICAgICAgIHBpeGVsSW5kZXhDb3VudHNbcGl4ZWxJbmRleF0rKzsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGludCBtaW5Db2xvckluZGV4LCBtYXhDb2xvcklu
ZGV4OworICAgICAgICBzZWxlY3RFbmRQb2ludFBDQShwaXhlbEluZGV4Q291bnRzLCBwYWludENv
bG9ycywga051bUNvbG9ycywgJm1pbkNvbG9ySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICZtYXhDb2xvckluZGV4KTsKKworICAgICAgICBwYWNrQkMxKGRlc3QsIHBpeGVsSW5kaWNl
cywgcGl4ZWxJbmRleENvdW50cywgcGFpbnRDb2xvcnMsIGtOdW1Db2xvcnMsIG1pbkNvbG9ySW5k
ZXgsCisgICAgICAgICAgICAgICAgbWF4Q29sb3JJbmRleCwgbm9uT3BhcXVlUHVuY2hUaHJvdWdo
QWxwaGEpOwogICAgIH0KIAogICAgIHZvaWQgdHJhbnNjb2RlUGxhbmFyQmxvY2tUb0JDMSh1aW50
OF90ICpkZXN0LApAQCAtMTE1Miw4ICsxMjM2LDIyIEBAIHN0cnVjdCBFVEMyQmxvY2sKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgYWxwaGFWYWx1ZXNbNF1bNF0pIGNvbnN0
CiAgICAgewotICAgICAgICAvLyBUT0RPIChtZ29uZyk6IFdpbGwgYmUgaW1wbGVtZW50ZWQgc29v
bgotICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
a051bUNvbG9ycyA9IGtOdW1QaXhlbHNJbkJsb2NrOworCisgICAgICAgIFI4RzhCOEE4IHJnYmFC
bG9ja1trTnVtQ29sb3JzXTsKKyAgICAgICAgZGVjb2RlUGxhbmFyQmxvY2socmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90ICo+KHJnYmFCbG9jayksIHgsIHksIHcsIGgsIHNpemVvZihSOEc4QjhBOCkg
KiA0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYVZhbHVlcyk7CisKKyAgICAgICAg
Ly8gUGxhbmFyIGJsb2NrIGRvZXNuJ3QgaGF2ZSBhIGNvbG9yIHRhYmxlLCBmaWxsIGluZGljZXMg
YXMgZnVsbAorICAgICAgICBpbnQgcGl4ZWxJbmRpY2VzW2tOdW1QaXhlbHNJbkJsb2NrXSA9IHsw
LCAxLCAyLCAgMywgIDQsICA1LCAgNiwgIDcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTV9OworICAgICAg
ICBpbnQgcGl4ZWxJbmRleENvdW50c1trTnVtQ29sb3JzXSA9IHsxLCAxLCAxLCAxLCAxLCAxLCAx
LCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxfTsKKworICAgICAgICBpbnQgbWluQ29sb3JJbmRl
eCwgbWF4Q29sb3JJbmRleDsKKyAgICAgICAgc2VsZWN0RW5kUG9pbnRQQ0EocGl4ZWxJbmRleENv
dW50cywgcmdiYUJsb2NrLCBrTnVtQ29sb3JzLCAmbWluQ29sb3JJbmRleCwgJm1heENvbG9ySW5k
ZXgpOworCisgICAgICAgIHBhY2tCQzEoZGVzdCwgcGl4ZWxJbmRpY2VzLCBwaXhlbEluZGV4Q291
bnRzLCByZ2JhQmxvY2ssIGtOdW1Db2xvcnMsIG1pbkNvbG9ySW5kZXgsCisgICAgICAgICAgICAg
ICAgbWF4Q29sb3JJbmRleCwgZmFsc2UpOwogICAgIH0KIAogICAgIC8vIFNpbmdsZSBjaGFubmVs
IHV0aWxpdHkgZnVuY3Rpb25zCkBAIC0xNDk5LDYgKzE1OTcsMjAgQEAgdm9pZCBMb2FkRVRDMlJH
QjhUb1JHQkE4KHNpemVfdCB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFJv
d1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoLCBmYWxzZSk7CiB9CiAKK3ZvaWQgTG9hZEVUQzJSR0I4
VG9CQzEoc2l6ZV90IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0
LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW5wdXRSb3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVw
dGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIExvYWRFVEMyUkdCOFRvQkMx
KHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBp
dGNoLCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0Y2gsIG91dHB1
dERlcHRoUGl0Y2gsIGZhbHNlKTsKK30KKwogdm9pZCBMb2FkRVRDMlNSR0I4VG9SR0JBOChzaXpl
X3Qgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKQEAgLTE1MTMsNiArMTYyNSwyMCBA
QCB2b2lkIExvYWRFVEMyU1JHQjhUb1JHQkE4KHNpemVfdCB3aWR0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIG91dHB1dFJvd1BpdGNoLCBvdXRwdXREZXB0aFBpdGNoLCBmYWxzZSk7CiB9CiAK
K3ZvaWQgTG9hZEVUQzJTUkdCOFRvQkMxKHNpemVfdCB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVw
dGgsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICppbnB1dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnB1dFJvd1BpdGNoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQ4X3QgKm91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRS
b3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNo
KQoreworICAgIExvYWRFVEMyUkdCOFRvQkMxKHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1dCwg
aW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0aFBpdGNoLCBvdXRwdXQsCisgICAgICAgICAgICAgICAg
ICAgICAgb3V0cHV0Um93UGl0Y2gsIG91dHB1dERlcHRoUGl0Y2gsIGZhbHNlKTsKK30KKwogdm9p
ZCBMb2FkRVRDMlJHQjhBMVRvUkdCQTgoc2l6ZV90IHdpZHRoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGhlaWdodCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBkZXB0aCwKQEAgLTE1MjcsNiArMTY1MywyMCBAQCB2b2lkIExvYWRFVEMyUkdCOEExVG9SR0JB
OChzaXplX3Qgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwg
b3V0cHV0RGVwdGhQaXRjaCwgdHJ1ZSk7CiB9CiAKK3ZvaWQgTG9hZEVUQzJSR0I4QTFUb0JDMShz
aXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGlucHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0
RGVwdGhQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG91dHB1dFJvd1BpdGNoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIExvYWRFVEMy
UkdCOFRvQkMxKHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5w
dXREZXB0aFBpdGNoLCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0
Y2gsIG91dHB1dERlcHRoUGl0Y2gsIHRydWUpOworfQorCiB2b2lkIExvYWRFVEMyU1JHQjhBMVRv
UkdCQTgoc2l6ZV90IHdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBo
ZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLApAQCAtMTU0
MSw2ICsxNjgxLDIwIEBAIHZvaWQgTG9hZEVUQzJTUkdCOEExVG9SR0JBOChzaXplX3Qgd2lkdGgs
CiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRSb3dQaXRjaCwgb3V0cHV0RGVwdGhQaXRj
aCwgdHJ1ZSk7CiB9CiAKK3ZvaWQgTG9hZEVUQzJTUkdCOEExVG9CQzEoc2l6ZV90IHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaGVpZ2h0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVpbnQ4X3QgKmlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW5wdXRS
b3dQaXRjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0RGVwdGhQaXRj
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvdXRwdXREZXB0aFBpdGNoKQoreworICAgIExvYWRFVEMyUkdCOFRv
QkMxKHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBpbnB1dCwgaW5wdXRSb3dQaXRjaCwgaW5wdXREZXB0
aFBpdGNoLCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0Um93UGl0Y2gsIG91
dHB1dERlcHRoUGl0Y2gsIHRydWUpOworfQorCiB2b2lkIExvYWRFVEMyUkdCQThUb1JHQkE4KHNp
emVfdCB3aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlcHRoLApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0F0dHJpYnV0ZU1hcC5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQXR0cmlidXRlTWFwLmNwcAppbmRleCA3M2Q5
NDkyNGQzMy4uZGM0NTBiODFiYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9BdHRyaWJ1dGVNYXAuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9BdHRyaWJ1dGVNYXAuY3BwCkBAIC0yNSwxNCArMjUsMTMgQEAgYm9v
bCBBdHRyaWJ1dGVNYXA6OmNvbnRhaW5zKEVHTEF0dHJpYiBrZXkpIGNvbnN0CiAKIEVHTEF0dHJp
YiBBdHRyaWJ1dGVNYXA6OmdldChFR0xBdHRyaWIga2V5LCBFR0xBdHRyaWIgZGVmYXVsdFZhbHVl
KSBjb25zdAogewotICAgIHN0ZDo6bWFwPEVHTEF0dHJpYiwgRUdMQXR0cmliPjo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IG1BdHRyaWJ1dGVzLmZpbmQoa2V5KTsKKyAgICBhdXRvIGl0ZXIgPSBtQXR0
cmlidXRlcy5maW5kKGtleSk7CiAgICAgcmV0dXJuIChtQXR0cmlidXRlcy5maW5kKGtleSkgIT0g
bUF0dHJpYnV0ZXMuZW5kKCkpID8gaXRlci0+c2Vjb25kIDogZGVmYXVsdFZhbHVlOwogfQogCiBF
R0xpbnQgQXR0cmlidXRlTWFwOjpnZXRBc0ludChFR0xBdHRyaWIga2V5LCBFR0xpbnQgZGVmYXVs
dFZhbHVlKSBjb25zdAogewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFR0xpbnQ+KAotICAgICAg
ICBnZXQoc3RhdGljX2Nhc3Q8RUdMQXR0cmliPihrZXkpLCBzdGF0aWNfY2FzdDxFR0xBdHRyaWI+
KGRlZmF1bHRWYWx1ZSkpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RUdMaW50PihnZXQoa2V5
LCBzdGF0aWNfY2FzdDxFR0xBdHRyaWI+KGRlZmF1bHRWYWx1ZSkpKTsKIH0KIAogYm9vbCBBdHRy
aWJ1dGVNYXA6OmlzRW1wdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL0J1ZmZlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvQnVmZmVyLmNwcAppbmRleCA3ZmQ1MjQ0MjdmYy4uYmIyZjlmZGFlZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9CdWZmZXIuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9CdWZmZXIuY3BwCkBA
IC05LDExMCArOSwxNDggQEAKIC8vIFtPcGVuR0wgRVMgMi4wLjI0XSBzZWN0aW9uIDIuOSBwYWdl
IDIxLgogCiAjaW5jbHVkZSAibGliQU5HTEUvQnVmZmVyLmgiCisKKyNpbmNsdWRlICJsaWJBTkdM
RS9Db250ZXh0LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvQnVmZmVySW1wbC5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0dMSW1wbEZhY3RvcnkuaCIKIAogbmFtZXNwYWNl
IGdsCiB7CiAKLUJ1ZmZlcjo6QnVmZmVyKHJ4OjpCdWZmZXJJbXBsICppbXBsLCBHTHVpbnQgaWQp
Ci0gICAgOiBSZWZDb3VudE9iamVjdChpZCksCi0gICAgICBtQnVmZmVyKGltcGwpLAotICAgICAg
bUxhYmVsKCksCitCdWZmZXJTdGF0ZTo6QnVmZmVyU3RhdGUoKQorICAgIDogbUxhYmVsKCksCiAg
ICAgICBtVXNhZ2UoR0xfU1RBVElDX0RSQVcpLAogICAgICAgbVNpemUoMCksCiAgICAgICBtQWNj
ZXNzRmxhZ3MoMCksCiAgICAgICBtQWNjZXNzKEdMX1dSSVRFX09OTFlfT0VTKSwKICAgICAgIG1N
YXBwZWQoR0xfRkFMU0UpLAotICAgICAgbU1hcFBvaW50ZXIoTlVMTCksCisgICAgICBtTWFwUG9p
bnRlcihudWxscHRyKSwKICAgICAgIG1NYXBPZmZzZXQoMCksCiAgICAgICBtTWFwTGVuZ3RoKDAp
CiB7CiB9CiAKK0J1ZmZlclN0YXRlOjp+QnVmZmVyU3RhdGUoKQoreworfQorCitCdWZmZXI6OkJ1
ZmZlcihyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50IGlkKQorICAgIDogUmVmQ291
bnRPYmplY3QoaWQpLCBtSW1wbChmYWN0b3J5LT5jcmVhdGVCdWZmZXIobVN0YXRlKSkKK3sKK30K
KwogQnVmZmVyOjp+QnVmZmVyKCkKIHsKLSAgICBTYWZlRGVsZXRlKG1CdWZmZXIpOworICAgIFNh
ZmVEZWxldGUobUltcGwpOworfQorCit2b2lkIEJ1ZmZlcjo6ZGVzdHJveShjb25zdCBDb250ZXh0
ICpjb250ZXh0KQoreworICAgIC8vIEluIHRlc3RzLCBtSW1wbCBtaWdodCBiZSBudWxsLgorICAg
IGlmIChtSW1wbCkKKyAgICAgICAgbUltcGwtPmRlc3Ryb3kocng6OlNhZmVHZXRJbXBsKGNvbnRl
eHQpKTsKIH0KIAogdm9pZCBCdWZmZXI6OnNldExhYmVsKGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJl
bCkKIHsKLSAgICBtTGFiZWwgPSBsYWJlbDsKKyAgICBtU3RhdGUubUxhYmVsID0gbGFiZWw7CiB9
CiAKIGNvbnN0IHN0ZDo6c3RyaW5nICZCdWZmZXI6OmdldExhYmVsKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbUxhYmVsOworICAgIHJldHVybiBtU3RhdGUubUxhYmVsOwogfQogCi1FcnJvciBCdWZm
ZXI6OmJ1ZmZlckRhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgR0xzaXplaXB0
ciBzaXplLCBHTGVudW0gdXNhZ2UpCitFcnJvciBCdWZmZXI6OmJ1ZmZlckRhdGEoY29uc3QgQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB1c2FnZSkKIHsKLSAgICBBTkdMRV9UUlkobUJ1ZmZlci0+c2V0RGF0YSh0YXJnZXQsIGRh
dGEsIHNpemUsIHVzYWdlKSk7CisgICAgY29uc3Qgdm9pZCAqZGF0YUZvckltcGwgPSBkYXRhOwor
CisgICAgLy8gSWYgd2UgYXJlIHVzaW5nIHJvYnVzdCByZXNvdXJjZSBpbml0LCBtYWtlIHN1cmUg
dGhlIGJ1ZmZlciBzdGFydHMgY2xlYXJlZC4KKyAgICAvLyBUT0RPKGptYWRpbGwpOiBJbnZlc3Rp
Z2F0ZSBsYXppZXIgY2xlYXJpbmcuCisgICAgaWYgKGNvbnRleHQgJiYgY29udGV4dC0+Z2V0R0xT
dGF0ZSgpLmlzUm9idXN0UmVzb3VyY2VJbml0RW5hYmxlZCgpICYmIGRhdGEgPT0gbnVsbHB0cikK
KyAgICB7CisgICAgICAgIGFuZ2xlOjpNZW1vcnlCdWZmZXIgKnNjcmF0Y2hCdWZmZXIgPSBudWxs
cHRyOworICAgICAgICBBTkdMRV9UUlkoY29udGV4dC0+Z2V0U2NyYXRjaEJ1ZmZlcihzdGF0aWNf
Y2FzdDxzaXplX3Q+KHNpemUpLCAmc2NyYXRjaEJ1ZmZlcikpOworICAgICAgICBzdGQ6OmZpbGwo
c2NyYXRjaEJ1ZmZlci0+ZGF0YSgpLCBzY3JhdGNoQnVmZmVyLT5kYXRhKCkgKyBzaXplLCBzdGF0
aWNfY2FzdDx1aW50OF90PigwKSk7CisgICAgICAgIGRhdGFGb3JJbXBsID0gc2NyYXRjaEJ1ZmZl
ci0+ZGF0YSgpOworICAgIH0KKworICAgIEFOR0xFX1RSWShtSW1wbC0+c2V0RGF0YShyeDo6U2Fm
ZUdldEltcGwoY29udGV4dCksIHRhcmdldCwgZGF0YUZvckltcGwsIHNpemUsIHVzYWdlKSk7CiAK
ICAgICBtSW5kZXhSYW5nZUNhY2hlLmNsZWFyKCk7Ci0gICAgbVVzYWdlID0gdXNhZ2U7Ci0gICAg
bVNpemUgPSBzaXplOworICAgIG1TdGF0ZS5tVXNhZ2UgPSB1c2FnZTsKKyAgICBtU3RhdGUubVNp
emUgID0gc2l6ZTsKIAogICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKLUVycm9yIEJ1ZmZlcjo6
YnVmZmVyU3ViRGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpkYXRhLCBHTHNpemVpcHRy
IHNpemUsIEdMaW50cHRyIG9mZnNldCkKK0Vycm9yIEJ1ZmZlcjo6YnVmZmVyU3ViRGF0YShjb25z
dCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0KQogewotICAgIEFOR0xFX1RSWShtQnVmZmVy
LT5zZXRTdWJEYXRhKHRhcmdldCwgZGF0YSwgc2l6ZSwgb2Zmc2V0KSk7CisgICAgQU5HTEVfVFJZ
KG1JbXBsLT5zZXRTdWJEYXRhKHJ4OjpTYWZlR2V0SW1wbChjb250ZXh0KSwgdGFyZ2V0LCBkYXRh
LCBzaXplLCBvZmZzZXQpKTsKIAogICAgIG1JbmRleFJhbmdlQ2FjaGUuaW52YWxpZGF0ZVJhbmdl
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4ob2Zmc2V0KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50PihzaXplKSk7CiAKICAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCi1FcnJvciBCdWZmZXI6
OmNvcHlCdWZmZXJTdWJEYXRhKEJ1ZmZlciogc291cmNlLCBHTGludHB0ciBzb3VyY2VPZmZzZXQs
IEdMaW50cHRyIGRlc3RPZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSkKK0Vycm9yIEJ1ZmZlcjo6Y29w
eUJ1ZmZlclN1YkRhdGEoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQnVmZmVyICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50cHRyIHNvdXJjZU9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnRwdHIgZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaXB0ciBzaXplKQogewotICAgIEFOR0xFX1RSWShtQnVmZmVyLT5jb3B5U3ViRGF0
YShzb3VyY2UtPmdldEltcGxlbWVudGF0aW9uKCksIHNvdXJjZU9mZnNldCwgZGVzdE9mZnNldCwg
c2l6ZSkpOworICAgIEFOR0xFX1RSWShtSW1wbC0+Y29weVN1YkRhdGEocng6OlNhZmVHZXRJbXBs
KGNvbnRleHQpLCBzb3VyY2UtPmdldEltcGxlbWVudGF0aW9uKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzb3VyY2VPZmZzZXQsIGRlc3RPZmZzZXQsIHNpemUpKTsKIAogICAg
IG1JbmRleFJhbmdlQ2FjaGUuaW52YWxpZGF0ZVJhbmdlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGlu
dD4oZGVzdE9mZnNldCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc2l6ZSkpOwogCiAgICAg
cmV0dXJuIE5vRXJyb3IoKTsKIH0KIAotRXJyb3IgQnVmZmVyOjptYXAoR0xlbnVtIGFjY2VzcykK
K0Vycm9yIEJ1ZmZlcjo6bWFwKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBhY2Nlc3Mp
CiB7Ci0gICAgQVNTRVJUKCFtTWFwcGVkKTsKKyAgICBBU1NFUlQoIW1TdGF0ZS5tTWFwcGVkKTsK
IAotICAgIEVycm9yIGVycm9yID0gbUJ1ZmZlci0+bWFwKGFjY2VzcywgJm1NYXBQb2ludGVyKTsK
LSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgbU1hcFBvaW50ZXIgPSBO
VUxMOwotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIG1TdGF0ZS5tTWFwUG9pbnRl
ciA9IG51bGxwdHI7CisgICAgQU5HTEVfVFJZKG1JbXBsLT5tYXAocng6OlNhZmVHZXRJbXBsKGNv
bnRleHQpLCBhY2Nlc3MsICZtU3RhdGUubU1hcFBvaW50ZXIpKTsKIAogICAgIEFTU0VSVChhY2Nl
c3MgPT0gR0xfV1JJVEVfT05MWV9PRVMpOwogCi0gICAgbU1hcHBlZCA9IEdMX1RSVUU7Ci0gICAg
bU1hcE9mZnNldCA9IDA7Ci0gICAgbU1hcExlbmd0aCA9IG1TaXplOwotICAgIG1BY2Nlc3MgPSBh
Y2Nlc3M7Ci0gICAgbUFjY2Vzc0ZsYWdzID0gR0xfTUFQX1dSSVRFX0JJVDsKKyAgICBtU3RhdGUu
bU1hcHBlZCAgICAgID0gR0xfVFJVRTsKKyAgICBtU3RhdGUubU1hcE9mZnNldCAgID0gMDsKKyAg
ICBtU3RhdGUubU1hcExlbmd0aCAgID0gbVN0YXRlLm1TaXplOworICAgIG1TdGF0ZS5tQWNjZXNz
ICAgICAgPSBhY2Nlc3M7CisgICAgbVN0YXRlLm1BY2Nlc3NGbGFncyA9IEdMX01BUF9XUklURV9C
SVQ7CiAgICAgbUluZGV4UmFuZ2VDYWNoZS5jbGVhcigpOwogCi0gICAgcmV0dXJuIGVycm9yOwor
ICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKLUVycm9yIEJ1ZmZlcjo6bWFwUmFuZ2UoR0xpbnRw
dHIgb2Zmc2V0LCBHTHNpemVpcHRyIGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nlc3MpCitFcnJvciBC
dWZmZXI6Om1hcFJhbmdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0
ciBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgYWNjZXNzKQogewot
ICAgIEFTU0VSVCghbU1hcHBlZCk7Ci0gICAgQVNTRVJUKG9mZnNldCArIGxlbmd0aCA8PSBtU2l6
ZSk7CisgICAgQVNTRVJUKCFtU3RhdGUubU1hcHBlZCk7CisgICAgQVNTRVJUKG9mZnNldCArIGxl
bmd0aCA8PSBtU3RhdGUubVNpemUpOwogCi0gICAgRXJyb3IgZXJyb3IgPSBtQnVmZmVyLT5tYXBS
YW5nZShvZmZzZXQsIGxlbmd0aCwgYWNjZXNzLCAmbU1hcFBvaW50ZXIpOwotICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICBtTWFwUG9pbnRlciA9IE5VTEw7Ci0gICAgICAg
IHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgbVN0YXRlLm1NYXBQb2ludGVyID0gbnVsbHB0cjsK
KyAgICBBTkdMRV9UUlkoCisgICAgICAgIG1JbXBsLT5tYXBSYW5nZShyeDo6U2FmZUdldEltcGwo
Y29udGV4dCksIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MsICZtU3RhdGUubU1hcFBvaW50ZXIpKTsK
IAotICAgIG1NYXBwZWQgPSBHTF9UUlVFOwotICAgIG1NYXBPZmZzZXQgPSBzdGF0aWNfY2FzdDxH
TGludDY0PihvZmZzZXQpOwotICAgIG1NYXBMZW5ndGggPSBzdGF0aWNfY2FzdDxHTGludDY0Pihs
ZW5ndGgpOwotICAgIG1BY2Nlc3MgPSBHTF9XUklURV9PTkxZX09FUzsKLSAgICBtQWNjZXNzRmxh
Z3MgPSBhY2Nlc3M7CisgICAgbVN0YXRlLm1NYXBwZWQgICAgICA9IEdMX1RSVUU7CisgICAgbVN0
YXRlLm1NYXBPZmZzZXQgICA9IHN0YXRpY19jYXN0PEdMaW50NjQ+KG9mZnNldCk7CisgICAgbVN0
YXRlLm1NYXBMZW5ndGggICA9IHN0YXRpY19jYXN0PEdMaW50NjQ+KGxlbmd0aCk7CisgICAgbVN0
YXRlLm1BY2Nlc3MgICAgICA9IEdMX1dSSVRFX09OTFlfT0VTOworICAgIG1TdGF0ZS5tQWNjZXNz
RmxhZ3MgPSBhY2Nlc3M7CiAKICAgICAvLyBUaGUgT0VTX21hcGJ1ZmZlciBleHRlbnNpb24gc3Rh
dGVzIHRoYXQgR0xfV1JJVEVfT05MWV9PRVMgaXMgdGhlIG9ubHkgdmFsaWQKICAgICAvLyB2YWx1
ZSBmb3IgR0xfQlVGRkVSX0FDQ0VTU19PRVMgYmVjYXVzZSBpdCB3YXMgd3JpdHRlbiBhZ2FpbnN0
IEVTMi4gIFNpbmNlIHRoZXJlIGlzCkBAIC0xMjQsMjggKzE2MiwyNCBAQCBFcnJvciBCdWZmZXI6
Om1hcFJhbmdlKEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBsZW5ndGgsIEdMYml0ZmllbGQg
YWNjZXNzKQogICAgICAgICBtSW5kZXhSYW5nZUNhY2hlLmludmFsaWRhdGVSYW5nZShzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBpbnQ+KG9mZnNldCksIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obGVu
Z3RoKSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGVycm9yOworICAgIHJldHVybiBOb0Vycm9yKCk7
CiB9CiAKLUVycm9yIEJ1ZmZlcjo6dW5tYXAoR0xib29sZWFuICpyZXN1bHQpCitFcnJvciBCdWZm
ZXI6OnVubWFwKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMYm9vbGVhbiAqcmVzdWx0KQogewot
ICAgIEFTU0VSVChtTWFwcGVkKTsKKyAgICBBU1NFUlQobVN0YXRlLm1NYXBwZWQpOwogCi0gICAg
RXJyb3IgZXJyb3IgPSBtQnVmZmVyLT51bm1hcChyZXN1bHQpOwotICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgewotICAgICAgICAqcmVzdWx0ID0gR0xfRkFMU0U7Ci0gICAgICAgIHJldHVy
biBlcnJvcjsKLSAgICB9CisgICAgKnJlc3VsdCA9IEdMX0ZBTFNFOworICAgIEFOR0xFX1RSWSht
SW1wbC0+dW5tYXAocng6OlNhZmVHZXRJbXBsKGNvbnRleHQpLCByZXN1bHQpKTsKIAotICAgIG1N
YXBwZWQgPSBHTF9GQUxTRTsKLSAgICBtTWFwUG9pbnRlciA9IE5VTEw7Ci0gICAgbU1hcE9mZnNl
dCA9IDA7Ci0gICAgbU1hcExlbmd0aCA9IDA7Ci0gICAgbUFjY2VzcyA9IEdMX1dSSVRFX09OTFlf
T0VTOwotICAgIG1BY2Nlc3NGbGFncyA9IDA7CisgICAgbVN0YXRlLm1NYXBwZWQgICAgICA9IEdM
X0ZBTFNFOworICAgIG1TdGF0ZS5tTWFwUG9pbnRlciAgPSBudWxscHRyOworICAgIG1TdGF0ZS5t
TWFwT2Zmc2V0ICAgPSAwOworICAgIG1TdGF0ZS5tTWFwTGVuZ3RoICAgPSAwOworICAgIG1TdGF0
ZS5tQWNjZXNzICAgICAgPSBHTF9XUklURV9PTkxZX09FUzsKKyAgICBtU3RhdGUubUFjY2Vzc0Zs
YWdzID0gMDsKIAotICAgIHJldHVybiBlcnJvcjsKKyAgICByZXR1cm4gTm9FcnJvcigpOwogfQog
CiB2b2lkIEJ1ZmZlcjo6b25UcmFuc2Zvcm1GZWVkYmFjaygpCkBAIC0xNjksNyArMjAzLDcgQEAg
RXJyb3IgQnVmZmVyOjpnZXRJbmRleFJhbmdlKEdMZW51bSB0eXBlLAogICAgICAgICByZXR1cm4g
Tm9FcnJvcigpOwogICAgIH0KIAotICAgIEFOR0xFX1RSWShtQnVmZmVyLT5nZXRJbmRleFJhbmdl
KHR5cGUsIG9mZnNldCwgY291bnQsIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkLCBvdXRSYW5nZSkp
OworICAgIEFOR0xFX1RSWShtSW1wbC0+Z2V0SW5kZXhSYW5nZSh0eXBlLCBvZmZzZXQsIGNvdW50
LCBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCwgb3V0UmFuZ2UpKTsKIAogICAgIG1JbmRleFJhbmdl
Q2FjaGUuYWRkUmFuZ2UodHlwZSwgb2Zmc2V0LCBjb3VudCwgcHJpbWl0aXZlUmVzdGFydEVuYWJs
ZWQsICpvdXRSYW5nZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9CdWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9CdWZmZXIuaAppbmRleCBhZDVmMmU5MTkzMy4uZWQ5ODBkZTc2NTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9CdWZmZXIuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQnVmZmVyLmgKQEAgLTIwLDM1ICsyMCwyMSBA
QAogbmFtZXNwYWNlIHJ4CiB7CiBjbGFzcyBCdWZmZXJJbXBsOworY2xhc3MgR0xJbXBsRmFjdG9y
eTsKIH07CiAKIG5hbWVzcGFjZSBnbAogeworY2xhc3MgQnVmZmVyOworY2xhc3MgQ29udGV4dDsK
IAotY2xhc3MgQnVmZmVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50T2JqZWN0LCBwdWJsaWMgTGFi
ZWxlZE9iamVjdAorY2xhc3MgQnVmZmVyU3RhdGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUK
IHsKICAgcHVibGljOgotICAgIEJ1ZmZlcihyeDo6QnVmZmVySW1wbCAqaW1wbCwgR0x1aW50IGlk
KTsKLSAgICB2aXJ0dWFsIH5CdWZmZXIoKTsKLQotICAgIHZvaWQgc2V0TGFiZWwoY29uc3Qgc3Rk
OjpzdHJpbmcgJmxhYmVsKSBvdmVycmlkZTsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZ2V0TGFi
ZWwoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIEVycm9yIGJ1ZmZlckRhdGEoR0xlbnVtIHRhcmdl
dCwgY29uc3Qgdm9pZCAqZGF0YSwgR0xzaXplaXB0ciBzaXplLCBHTGVudW0gdXNhZ2UpOwotICAg
IEVycm9yIGJ1ZmZlclN1YkRhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgR0xz
aXplaXB0ciBzaXplLCBHTGludHB0ciBvZmZzZXQpOwotICAgIEVycm9yIGNvcHlCdWZmZXJTdWJE
YXRhKEJ1ZmZlciogc291cmNlLCBHTGludHB0ciBzb3VyY2VPZmZzZXQsIEdMaW50cHRyIGRlc3RP
ZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSk7Ci0gICAgRXJyb3IgbWFwKEdMZW51bSBhY2Nlc3MpOwot
ICAgIEVycm9yIG1hcFJhbmdlKEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBsZW5ndGgsIEdM
Yml0ZmllbGQgYWNjZXNzKTsKLSAgICBFcnJvciB1bm1hcChHTGJvb2xlYW4gKnJlc3VsdCk7Cisg
ICAgQnVmZmVyU3RhdGUoKTsKKyAgICB+QnVmZmVyU3RhdGUoKTsKIAotICAgIHZvaWQgb25UcmFu
c2Zvcm1GZWVkYmFjaygpOwotICAgIHZvaWQgb25QaXhlbFVucGFjaygpOwotCi0gICAgRXJyb3Ig
Z2V0SW5kZXhSYW5nZShHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBib29sIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgSW5kZXhSYW5nZSAqb3V0UmFuZ2UpIGNvbnN0OworICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZnZXRMYWJlbCgpOwogCiAgICAgR0xlbnVtIGdldFVzYWdlKCkgY29uc3QgeyBy
ZXR1cm4gbVVzYWdlOyB9CiAgICAgR0xiaXRmaWVsZCBnZXRBY2Nlc3NGbGFncygpIGNvbnN0IHsg
cmV0dXJuIG1BY2Nlc3NGbGFnczsgfQpAQCAtNTksMTAgKzQ1LDggQEAgY2xhc3MgQnVmZmVyIGZp
bmFsIDogcHVibGljIFJlZkNvdW50T2JqZWN0LCBwdWJsaWMgTGFiZWxlZE9iamVjdAogICAgIEdM
aW50NjQgZ2V0TWFwTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbU1hcExlbmd0aDsgfQogICAgIEdM
aW50NjQgZ2V0U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1TaXplOyB9CiAKLSAgICByeDo6QnVmZmVy
SW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtQnVmZmVyOyB9Ci0KICAg
cHJpdmF0ZToKLSAgICByeDo6QnVmZmVySW1wbCAqbUJ1ZmZlcjsKKyAgICBmcmllbmQgY2xhc3Mg
QnVmZmVyOwogCiAgICAgc3RkOjpzdHJpbmcgbUxhYmVsOwogCkBAIC03NCwxMCArNTgsNjQgQEAg
Y2xhc3MgQnVmZmVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50T2JqZWN0LCBwdWJsaWMgTGFiZWxl
ZE9iamVjdAogICAgIEdMdm9pZCAqbU1hcFBvaW50ZXI7CiAgICAgR0xpbnQ2NCBtTWFwT2Zmc2V0
OwogICAgIEdMaW50NjQgbU1hcExlbmd0aDsKK307CisKK2NsYXNzIEJ1ZmZlciBmaW5hbCA6IHB1
YmxpYyBSZWZDb3VudE9iamVjdCwgcHVibGljIExhYmVsZWRPYmplY3QKK3sKKyAgcHVibGljOgor
ICAgIEJ1ZmZlcihyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50IGlkKTsKKyAgICB+
QnVmZmVyKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkZXN0cm95KGNvbnN0IENvbnRleHQgKmNvbnRl
eHQpIG92ZXJyaWRlOworCisgICAgdm9pZCBzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAmbGFi
ZWwpIG92ZXJyaWRlOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRMYWJlbCgpIGNvbnN0IG92
ZXJyaWRlOworCisgICAgRXJyb3IgYnVmZmVyRGF0YShjb25zdCBDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUs
CisgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdXNhZ2UpOworICAgIEVycm9yIGJ1ZmZlclN1
YkRhdGEoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0KTsKKyAgICBFcnJvciBjb3B5QnVmZmVyU3ViRGF0YShj
b25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZl
ciAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIHNvdXJjZU9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBkZXN0T2Zmc2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSk7CisgICAgRXJyb3Ig
bWFwKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBhY2Nlc3MpOworICAgIEVycm9yIG1h
cFJhbmdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0
ciBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzKTsKKyAgICBFcnJvciB1bm1hcChjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBHTGJvb2xlYW4gKnJlc3VsdCk7CisKKyAgICB2b2lkIG9uVHJhbnNmb3Jt
RmVlZGJhY2soKTsKKyAgICB2b2lkIG9uUGl4ZWxVbnBhY2soKTsKKworICAgIEVycm9yIGdldElu
ZGV4UmFuZ2UoR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBwcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEluZGV4UmFuZ2UgKm91dFJhbmdlKSBjb25zdDsKKworICAgIEdMZW51bSBnZXRV
c2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5tVXNhZ2U7IH0KKyAgICBHTGJpdGZpZWxkIGdl
dEFjY2Vzc0ZsYWdzKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLm1BY2Nlc3NGbGFnczsgfQorICAg
IEdMZW51bSBnZXRBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBtU3RhdGUubUFjY2VzczsgfQorICAg
IEdMYm9vbGVhbiBpc01hcHBlZCgpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5tTWFwcGVkOyB9Cisg
ICAgR0x2b2lkICpnZXRNYXBQb2ludGVyKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLm1NYXBQb2lu
dGVyOyB9CisgICAgR0xpbnQ2NCBnZXRNYXBPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtU3RhdGUu
bU1hcE9mZnNldDsgfQorICAgIEdMaW50NjQgZ2V0TWFwTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
bVN0YXRlLm1NYXBMZW5ndGg7IH0KKyAgICBHTGludDY0IGdldFNpemUoKSBjb25zdCB7IHJldHVy
biBtU3RhdGUubVNpemU7IH0KKworICAgIHJ4OjpCdWZmZXJJbXBsICpnZXRJbXBsZW1lbnRhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1JbXBsOyB9CisKKyAgcHJpdmF0ZToKKyAgICBCdWZmZXJTdGF0
ZSBtU3RhdGU7CisgICAgcng6OkJ1ZmZlckltcGwgKm1JbXBsOwogCiAgICAgbXV0YWJsZSBJbmRl
eFJhbmdlQ2FjaGUgbUluZGV4UmFuZ2VDYWNoZTsKIH07CiAKLX0KK30gIC8vIG5hbWVzcGFjZSBn
bAogCiAjZW5kaWYgICAvLyBMSUJBTkdMRV9CVUZGRVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9DYXBzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9DYXBzLmNwcAppbmRleCA3NjY4MzFmZDBkNS4uN2NhODE4OTQ5
NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9DYXBz
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ2Fwcy5jcHAK
QEAgLTUsOSArNSwxMiBAQAogLy8KIAogI2luY2x1ZGUgImxpYkFOR0xFL0NhcHMuaCIKKwogI2lu
Y2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCiAK
KyNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5oIgorCiAjaW5jbHVkZSAiYW5nbGVfZ2wu
aCIKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTU2LDYgKzU5LDIyIEBAIEdMdWludCBUZXh0
dXJlQ2Fwczo6Z2V0TmVhcmVzdFNhbXBsZXMoR0x1aW50IHJlcXVlc3RlZFNhbXBsZXMpIGNvbnN0
CiAgICAgcmV0dXJuIDA7CiB9CiAKK1RleHR1cmVDYXBzIEdlbmVyYXRlTWluaW11bVRleHR1cmVD
YXBzKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnNpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zKQorewor
ICAgIFRleHR1cmVDYXBzIGNhcHM7CisKKyAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAmaW50ZXJu
YWxGb3JtYXRJbmZvID0gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0KTsKKyAg
ICBjYXBzLnRleHR1cmFibGUgPSBpbnRlcm5hbEZvcm1hdEluZm8udGV4dHVyZVN1cHBvcnQoY2xp
ZW50VmVyc2lvbiwgZXh0ZW5zaW9ucyk7CisgICAgY2Fwcy5yZW5kZXJhYmxlID0gaW50ZXJuYWxG
b3JtYXRJbmZvLnJlbmRlclN1cHBvcnQoY2xpZW50VmVyc2lvbiwgZXh0ZW5zaW9ucyk7CisgICAg
Y2Fwcy5maWx0ZXJhYmxlID0gaW50ZXJuYWxGb3JtYXRJbmZvLmZpbHRlclN1cHBvcnQoY2xpZW50
VmVyc2lvbiwgZXh0ZW5zaW9ucyk7CisKKyAgICBjYXBzLnNhbXBsZUNvdW50cy5pbnNlcnQoMCk7
CisKKyAgICByZXR1cm4gY2FwczsKK30KKwogdm9pZCBUZXh0dXJlQ2Fwc01hcDo6aW5zZXJ0KEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgVGV4dHVyZUNhcHMgJmNhcHMpCiB7CiAgICAgbUNh
cHNNYXBbaW50ZXJuYWxGb3JtYXRdID0gY2FwczsKQEAgLTc3LDEwICs5Niw4IEBAIHZvaWQgVGV4
dHVyZUNhcHNNYXA6OmNsZWFyKCkKIAogY29uc3QgVGV4dHVyZUNhcHMgJlRleHR1cmVDYXBzTWFw
OjpnZXQoR0xlbnVtIGludGVybmFsRm9ybWF0KSBjb25zdAogewotI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4aXQtdGlt
ZS1kZXN0cnVjdG9ycyIKICAgICBzdGF0aWMgVGV4dHVyZUNhcHMgZGVmYXVsdFVuc3VwcG9ydGVk
VGV4dHVyZTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKwogICAgIEludGVybmFsRm9y
bWF0VG9DYXBzTWFwOjpjb25zdF9pdGVyYXRvciBpdGVyID0gbUNhcHNNYXAuZmluZChpbnRlcm5h
bEZvcm1hdCk7CiAgICAgcmV0dXJuIChpdGVyICE9IG1DYXBzTWFwLmVuZCgpKSA/IGl0ZXItPnNl
Y29uZCA6IGRlZmF1bHRVbnN1cHBvcnRlZFRleHR1cmU7CiB9CkBAIC0xMDAsNiArMTE3LDIwIEBA
IHNpemVfdCBUZXh0dXJlQ2Fwc01hcDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1DYXBzTWFw
LnNpemUoKTsKIH0KIAorVGV4dHVyZUNhcHNNYXAgR2VuZXJhdGVNaW5pbXVtVGV4dHVyZUNhcHNN
YXAoY29uc3QgVmVyc2lvbiAmY2xpZW50VmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMpCit7Cisg
ICAgVGV4dHVyZUNhcHNNYXAgY2Fwc01hcDsKKworICAgIGZvciAoR0xlbnVtIGludGVybmFsRm9y
bWF0IDogR2V0QWxsU2l6ZWRJbnRlcm5hbEZvcm1hdHMoKSkKKyAgICB7CisgICAgICAgIGNhcHNN
YXAuaW5zZXJ0KGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0
ZU1pbmltdW1UZXh0dXJlQ2FwcyhpbnRlcm5hbEZvcm1hdCwgY2xpZW50VmVyc2lvbiwgZXh0ZW5z
aW9ucykpOworICAgIH0KKworICAgIHJldHVybiBjYXBzTWFwOworfQorCiBFeHRlbnNpb25zOjpF
eHRlbnNpb25zKCkKICAgICA6IGVsZW1lbnRJbmRleFVpbnQoZmFsc2UpLAogICAgICAgcGFja2Vk
RGVwdGhTdGVuY2lsKGZhbHNlKSwKQEAgLTExOSwxNiArMTUwLDE4IEBAIEV4dGVuc2lvbnM6OkV4
dGVuc2lvbnMoKQogICAgICAgdGV4dHVyZUNvbXByZXNzaW9uRFhUMShmYWxzZSksCiAgICAgICB0
ZXh0dXJlQ29tcHJlc3Npb25EWFQzKGZhbHNlKSwKICAgICAgIHRleHR1cmVDb21wcmVzc2lvbkRY
VDUoZmFsc2UpLAorICAgICAgdGV4dHVyZUNvbXByZXNzaW9uUzNUQ3NSR0IoZmFsc2UpLAogICAg
ICAgdGV4dHVyZUNvbXByZXNzaW9uQVNUQ0hEUihmYWxzZSksCiAgICAgICB0ZXh0dXJlQ29tcHJl
c3Npb25BU1RDTERSKGZhbHNlKSwKICAgICAgIGNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmUoZmFs
c2UpLAorICAgICAgc1JHQihmYWxzZSksCiAgICAgICBkZXB0aFRleHR1cmVzKGZhbHNlKSwKICAg
ICAgIGRlcHRoMzIoZmFsc2UpLAogICAgICAgdGV4dHVyZVN0b3JhZ2UoZmFsc2UpLAogICAgICAg
dGV4dHVyZU5QT1QoZmFsc2UpLAogICAgICAgZHJhd0J1ZmZlcnMoZmFsc2UpLAogICAgICAgdGV4
dHVyZUZpbHRlckFuaXNvdHJvcGljKGZhbHNlKSwKLSAgICAgIG1heFRleHR1cmVBbmlzb3Ryb3B5
KGZhbHNlKSwKKyAgICAgIG1heFRleHR1cmVBbmlzb3Ryb3B5KDAuMGYpLAogICAgICAgb2NjbHVz
aW9uUXVlcnlCb29sZWFuKGZhbHNlKSwKICAgICAgIGZlbmNlKGZhbHNlKSwKICAgICAgIHRpbWVy
UXVlcnkoZmFsc2UpLApAQCAtMTcxLDEzICsyMDQsMTkgQEAgRXh0ZW5zaW9uczo6RXh0ZW5zaW9u
cygpCiAgICAgICBjb3B5VGV4dHVyZShmYWxzZSksCiAgICAgICBjb3B5Q29tcHJlc3NlZFRleHR1
cmUoZmFsc2UpLAogICAgICAgd2ViZ2xDb21wYXRpYmlsaXR5KGZhbHNlKSwKKyAgICAgIHJlcXVl
c3RFeHRlbnNpb24oZmFsc2UpLAogICAgICAgYmluZEdlbmVyYXRlc1Jlc291cmNlKGZhbHNlKSwK
ICAgICAgIHJvYnVzdENsaWVudE1lbW9yeShmYWxzZSksCisgICAgICB0ZXh0dXJlU1JHQkRlY29k
ZShmYWxzZSksCisgICAgICBzUkdCV3JpdGVDb250cm9sKGZhbHNlKSwKICAgICAgIGNvbG9yQnVm
ZmVyRmxvYXQoZmFsc2UpLAogICAgICAgbXVsdGlzYW1wbGVDb21wYXRpYmlsaXR5KGZhbHNlKSwK
ICAgICAgIGZyYW1lYnVmZmVyTWl4ZWRTYW1wbGVzKGZhbHNlKSwKICAgICAgIHRleHR1cmVOb3Jt
MTYoZmFsc2UpLAotICAgICAgcGF0aFJlbmRlcmluZyhmYWxzZSkKKyAgICAgIHBhdGhSZW5kZXJp
bmcoZmFsc2UpLAorICAgICAgc3VyZmFjZWxlc3NDb250ZXh0KGZhbHNlKSwKKyAgICAgIGNsaWVu
dEFycmF5cyhmYWxzZSksCisgICAgICByb2J1c3RSZXNvdXJjZUluaXRpYWxpemF0aW9uKGZhbHNl
KQogewogfQogCkBAIC0zNjIsNiArNDAxLDE4IEBAIHN0YXRpYyBib29sIERldGVybWluZURYVDVU
ZXh0dXJlU3VwcG9ydChjb25zdCBUZXh0dXJlQ2Fwc01hcCAmdGV4dHVyZUNhcHMpCiAgICAgcmV0
dXJuIEdldEZvcm1hdFN1cHBvcnQodGV4dHVyZUNhcHMsIHJlcXVpcmVkRm9ybWF0cywgdHJ1ZSwg
dHJ1ZSwgZmFsc2UpOwogfQogCisvLyBDaGVjayBmb3IgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Np
b25fczN0Y19zcmdiCitzdGF0aWMgYm9vbCBEZXRlcm1pbmVTM1RDc1JHQlRleHR1cmVTdXBwb3J0
KGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcykKK3sKKyAgICBzdGQ6OnZlY3RvcjxH
TGVudW0+IHJlcXVpcmVkRm9ybWF0czsKKyAgICByZXF1aXJlZEZvcm1hdHMucHVzaF9iYWNrKEdM
X0NPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhUKTsKKyAgICByZXF1aXJlZEZvcm1hdHMucHVz
aF9iYWNrKEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUKTsKKyAgICByZXF1
aXJlZEZvcm1hdHMucHVzaF9iYWNrKEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNf
RVhUKTsKKyAgICByZXF1aXJlZEZvcm1hdHMucHVzaF9iYWNrKEdMX0NPTVBSRVNTRURfU1JHQl9B
TFBIQV9TM1RDX0RYVDVfRVhUKTsKKworICAgIHJldHVybiBHZXRGb3JtYXRTdXBwb3J0KHRleHR1
cmVDYXBzLCByZXF1aXJlZEZvcm1hdHMsIHRydWUsIHRydWUsIGZhbHNlKTsKK30KKwogLy8gQ2hl
Y2sgZm9yIEdMX0tIUl90ZXh0dXJlX2NvbXByZXNzaW9uX2FzdGNfaGRyIGFuZCBHTF9LSFJfdGV4
dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkcgogc3RhdGljIGJvb2wgRGV0ZXJtaW5lQVNUQ1RleHR1
cmVTdXBwb3J0KGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcykKIHsKQEAgLTQ5Miw2
ICs1NDMsNyBAQCB2b2lkIEV4dGVuc2lvbnM6OnNldFRleHR1cmVFeHRlbnNpb25TdXBwb3J0KGNv
bnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcykKICAgICB0ZXh0dXJlQ29tcHJlc3Npb25E
WFQxID0gRGV0ZXJtaW5lRFhUMVRleHR1cmVTdXBwb3J0KHRleHR1cmVDYXBzKTsKICAgICB0ZXh0
dXJlQ29tcHJlc3Npb25EWFQzID0gRGV0ZXJtaW5lRFhUM1RleHR1cmVTdXBwb3J0KHRleHR1cmVD
YXBzKTsKICAgICB0ZXh0dXJlQ29tcHJlc3Npb25EWFQ1ID0gRGV0ZXJtaW5lRFhUNVRleHR1cmVT
dXBwb3J0KHRleHR1cmVDYXBzKTsKKyAgICB0ZXh0dXJlQ29tcHJlc3Npb25TM1RDc1JHQiA9IERl
dGVybWluZVMzVENzUkdCVGV4dHVyZVN1cHBvcnQodGV4dHVyZUNhcHMpOwogICAgIHRleHR1cmVD
b21wcmVzc2lvbkFTVENIRFIgPSBEZXRlcm1pbmVBU1RDVGV4dHVyZVN1cHBvcnQodGV4dHVyZUNh
cHMpOwogICAgIHRleHR1cmVDb21wcmVzc2lvbkFTVENMRFIgPSB0ZXh0dXJlQ29tcHJlc3Npb25B
U1RDSERSOwogICAgIGNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmUgPSBEZXRlcm1pbmVFVEMxUkdC
OFRleHR1cmVTdXBwb3J0KHRleHR1cmVDYXBzKTsKQEAgLTUwNyw3ICs1NTksNyBAQCBjb25zdCBF
eHRlbnNpb25JbmZvTWFwICZHZXRFeHRlbnNpb25JbmZvTWFwKCkKICAgICBhdXRvIGJ1aWxkRXh0
ZW5zaW9uSW5mb01hcCA9IFtdKCkgewogICAgICAgICBhdXRvIGVuYWJsZWFibGVFeHRlbnNpb24g
PSBbXShFeHRlbnNpb25JbmZvOjpFeHRlbnNpb25Cb29sIG1lbWJlcikgewogICAgICAgICAgICAg
RXh0ZW5zaW9uSW5mbyBpbmZvOwotICAgICAgICAgICAgaW5mby5FbmFibGVhYmxlICAgICAgID0g
dHJ1ZTsKKyAgICAgICAgICAgIGluZm8uUmVxdWVzdGFibGUgICAgICA9IHRydWU7CiAgICAgICAg
ICAgICBpbmZvLkV4dGVuc2lvbnNNZW1iZXIgPSBtZW1iZXI7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfTsKQEAgLTUzOCw2ICs1OTAsNyBAQCBjb25zdCBFeHRlbnNpb25JbmZv
TWFwICZHZXRFeHRlbnNpb25JbmZvTWFwKCkKICAgICAgICAgbWFwWyJHTF9FWFRfdGV4dHVyZV9j
b21wcmVzc2lvbl9keHQxIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnRleHR1cmVD
b21wcmVzc2lvbkRYVDEpOwogICAgICAgICBtYXBbIkdMX0FOR0xFX3RleHR1cmVfY29tcHJlc3Np
b25fZHh0MyJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Np
b25EWFQzKTsKICAgICAgICAgbWFwWyJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUi
XSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uRFhUNSk7
CisgICAgICAgIG1hcFsiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fczN0Y19zcmdiIl0gPSBl
c09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvblMzVENzUkdCKTsK
ICAgICAgICAgbWFwWyJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2hkciJdID0gZXNP
bmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25BU1RDSERSKTsKICAg
ICAgICAgbWFwWyJHTF9LSFJfdGV4dHVyZV9jb21wcmVzc2lvbl9hc3RjX2xkciJdID0gZXNPbmx5
RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25BU1RDTERSKTsKICAgICAg
ICAgbWFwWyJHTF9PRVNfY29tcHJlc3NlZF9FVEMxX1JHQjhfdGV4dHVyZSJdID0gZXNPbmx5RXh0
ZW5zaW9uKCZFeHRlbnNpb25zOjpjb21wcmVzc2VkRVRDMVJHQjhUZXh0dXJlKTsKQEAgLTU0NSw5
ICs1OTgsOSBAQCBjb25zdCBFeHRlbnNpb25JbmZvTWFwICZHZXRFeHRlbnNpb25JbmZvTWFwKCkK
ICAgICAgICAgbWFwWyJHTF9BTkdMRV9kZXB0aF90ZXh0dXJlIl0gPSBlc09ubHlFeHRlbnNpb24o
JkV4dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXMpOwogICAgICAgICBtYXBbIkdMX09FU19kZXB0aDMy
Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OmRlcHRoMzIpOwogICAgICAgICBtYXBb
IkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6
dGV4dHVyZVN0b3JhZ2UpOwotICAgICAgICBtYXBbIkdMX09FU190ZXh0dXJlX25wb3QiXSA9IGVz
T25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6dGV4dHVyZU5QT1QpOwotICAgICAgICBtYXBbIkdM
X0VYVF9kcmF3X2J1ZmZlcnMiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6ZHJhd0J1
ZmZlcnMpOwotICAgICAgICBtYXBbIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyJd
ID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlRmlsdGVyQW5pc290cm9waWMp
OworICAgICAgICBtYXBbIkdMX09FU190ZXh0dXJlX25wb3QiXSA9IGVuYWJsZWFibGVFeHRlbnNp
b24oJkV4dGVuc2lvbnM6OnRleHR1cmVOUE9UKTsKKyAgICAgICAgbWFwWyJHTF9FWFRfZHJhd19i
dWZmZXJzIl0gPSBlbmFibGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpkcmF3QnVmZmVycyk7
CisgICAgICAgIG1hcFsiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIl0gPSBlbmFi
bGVhYmxlRXh0ZW5zaW9uKCZFeHRlbnNpb25zOjp0ZXh0dXJlRmlsdGVyQW5pc290cm9waWMpOwog
ICAgICAgICBtYXBbIkdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiJdID0gZXNPbmx5RXh0
ZW5zaW9uKCZFeHRlbnNpb25zOjpvY2NsdXNpb25RdWVyeUJvb2xlYW4pOwogICAgICAgICBtYXBb
IkdMX05WX2ZlbmNlIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OmZlbmNlKTsKICAg
ICAgICAgbWFwWyJHTF9BTkdMRV90aW1lcl9xdWVyeSJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRl
bnNpb25zOjp0aW1lclF1ZXJ5KTsKQEAgLTU4Niw1NiArNjM5LDU4IEBAIGNvbnN0IEV4dGVuc2lv
bkluZm9NYXAgJkdldEV4dGVuc2lvbkluZm9NYXAoKQogICAgICAgICBtYXBbIkdMX0NIUk9NSVVN
X2NvcHlfdGV4dHVyZSJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpjb3B5VGV4dHVy
ZSk7CiAgICAgICAgIG1hcFsiR0xfQ0hST01JVU1fY29weV9jb21wcmVzc2VkX3RleHR1cmUiXSA9
IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6Y29weUNvbXByZXNzZWRUZXh0dXJlKTsKICAg
ICAgICAgbWFwWyJHTF9BTkdMRV93ZWJnbF9jb21wYXRpYmlsaXR5Il0gPSBlc09ubHlFeHRlbnNp
b24oJkV4dGVuc2lvbnM6OndlYmdsQ29tcGF0aWJpbGl0eSk7CisgICAgICAgIG1hcFsiR0xfQU5H
TEVfcmVxdWVzdF9leHRlbnNpb24iXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6cmVx
dWVzdEV4dGVuc2lvbik7CiAgICAgICAgIG1hcFsiR0xfQ0hST01JVU1fYmluZF9nZW5lcmF0ZXNf
cmVzb3VyY2UiXSA9IGVzT25seUV4dGVuc2lvbigmRXh0ZW5zaW9uczo6YmluZEdlbmVyYXRlc1Jl
c291cmNlKTsKICAgICAgICAgbWFwWyJHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeSJdID0g
ZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpyb2J1c3RDbGllbnRNZW1vcnkpOworICAgICAg
ICBtYXBbIkdMX0VYVF90ZXh0dXJlX3NSR0JfZGVjb2RlIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4
dGVuc2lvbnM6OnRleHR1cmVTUkdCRGVjb2RlKTsKKyAgICAgICAgbWFwWyJHTF9FWFRfc1JHQl93
cml0ZV9jb250cm9sIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnNSR0JXcml0ZUNv
bnRyb2wpOwogICAgICAgICBtYXBbIkdMX0VYVF9tdWx0aXNhbXBsZV9jb21wYXRpYmlsaXR5Il0g
PSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6Om11bHRpc2FtcGxlQ29tcGF0aWJpbGl0eSk7
CiAgICAgICAgIG1hcFsiR0xfQ0hST01JVU1fZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcyJdID0g
ZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpmcmFtZWJ1ZmZlck1peGVkU2FtcGxlcyk7CiAg
ICAgICAgIG1hcFsiR0xfRVhUX3RleHR1cmVfbm9ybTE2Il0gPSBlc09ubHlFeHRlbnNpb24oJkV4
dGVuc2lvbnM6OnRleHR1cmVOb3JtMTYpOwogICAgICAgICBtYXBbIkdMX0NIUk9NSVVNX3BhdGhf
cmVuZGVyaW5nIl0gPSBlc09ubHlFeHRlbnNpb24oJkV4dGVuc2lvbnM6OnBhdGhSZW5kZXJpbmcp
OworICAgICAgICBtYXBbIkdMX09FU19zdXJmYWNlbGVzc19jb250ZXh0Il0gPSBlc09ubHlFeHRl
bnNpb24oJkV4dGVuc2lvbnM6OnN1cmZhY2VsZXNzQ29udGV4dCk7CisgICAgICAgIG1hcFsiR0xf
QU5HTEVfY2xpZW50X2FycmF5cyJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpjbGll
bnRBcnJheXMpOworICAgICAgICBtYXBbIkdMX0FOR0xFX3JvYnVzdF9yZXNvdXJjZV9pbml0aWFs
aXphdGlvbiJdID0gZXNPbmx5RXh0ZW5zaW9uKCZFeHRlbnNpb25zOjpyb2J1c3RSZXNvdXJjZUlu
aXRpYWxpemF0aW9uKTsKICAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9uCiAKICAgICAgICAgcmV0
dXJuIG1hcDsKICAgICB9OwogCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgogICAg
IHN0YXRpYyBjb25zdCBFeHRlbnNpb25JbmZvTWFwIGV4dGVuc2lvbkluZm8gPSBidWlsZEV4dGVu
c2lvbkluZm9NYXAoKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKICAgICByZXR1cm4g
ZXh0ZW5zaW9uSW5mbzsKIH0KIAotVHlwZVByZWNpc2lvbjo6VHlwZVByZWNpc2lvbigpCitUeXBl
UHJlY2lzaW9uOjpUeXBlUHJlY2lzaW9uKCkgOiByYW5nZSh7ezAsIDB9fSksIHByZWNpc2lvbigw
KQogewotICAgIHJhbmdlWzBdID0gMDsKLSAgICByYW5nZVsxXSA9IDA7Ci0gICAgcHJlY2lzaW9u
ID0gMDsKIH0KIAogdm9pZCBUeXBlUHJlY2lzaW9uOjpzZXRJRUVFRmxvYXQoKQogewotICAgIHJh
bmdlWzBdID0gMTI3OwotICAgIHJhbmdlWzFdID0gMTI3OworICAgIHJhbmdlICAgICA9IHt7MTI3
LCAxMjd9fTsKICAgICBwcmVjaXNpb24gPSAyMzsKIH0KIAogdm9pZCBUeXBlUHJlY2lzaW9uOjpz
ZXRUd29zQ29tcGxlbWVudEludCh1bnNpZ25lZCBpbnQgYml0cykKIHsKLSAgICByYW5nZVswXSA9
IEdMaW50KGJpdHMpIC0gMTsKLSAgICByYW5nZVsxXSA9IEdMaW50KGJpdHMpIC0gMjsKKyAgICBy
YW5nZSAgICAgPSB7e3N0YXRpY19jYXN0PEdMaW50PihiaXRzKSAtIDEsIHN0YXRpY19jYXN0PEdM
aW50PihiaXRzKSAtIDJ9fTsKICAgICBwcmVjaXNpb24gPSAwOwogfQogCit2b2lkIFR5cGVQcmVj
aXNpb246OnNldFNpbXVsYXRlZEZsb2F0KHVuc2lnbmVkIGludCByLCB1bnNpZ25lZCBpbnQgcCkK
K3sKKyAgICByYW5nZSAgICAgPSB7e3N0YXRpY19jYXN0PEdMaW50PihyKSwgc3RhdGljX2Nhc3Q8
R0xpbnQ+KHIpfX07CisgICAgcHJlY2lzaW9uID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KHApOworfQor
CiB2b2lkIFR5cGVQcmVjaXNpb246OnNldFNpbXVsYXRlZEludCh1bnNpZ25lZCBpbnQgcikKIHsK
LSAgICByYW5nZVswXSA9IEdMaW50KHIpOwotICAgIHJhbmdlWzFdID0gR0xpbnQocik7CisgICAg
cmFuZ2UgICAgID0ge3tzdGF0aWNfY2FzdDxHTGludD4ociksIHN0YXRpY19jYXN0PEdMaW50Pihy
KX19OwogICAgIHByZWNpc2lvbiA9IDA7CiB9CiAKIHZvaWQgVHlwZVByZWNpc2lvbjo6Z2V0KEdM
aW50ICpyZXR1cm5SYW5nZSwgR0xpbnQgKnJldHVyblByZWNpc2lvbikgY29uc3QKIHsKLSAgICBy
ZXR1cm5SYW5nZVswXSA9IHJhbmdlWzBdOwotICAgIHJldHVyblJhbmdlWzFdID0gcmFuZ2VbMV07
CisgICAgc3RkOjpjb3B5KHJhbmdlLmJlZ2luKCksIHJhbmdlLmVuZCgpLCByZXR1cm5SYW5nZSk7
CiAgICAgKnJldHVyblByZWNpc2lvbiA9IHByZWNpc2lvbjsKIH0KIApAQCAtNzUzLDYgKzgwOCwx
OTUgQEAgQ2Fwczo6Q2FwcygpCiAgICAgfQogfQogCitDYXBzIEdlbmVyYXRlTWluaW11bUNhcHMo
Y29uc3QgVmVyc2lvbiAmY2xpZW50VmVyc2lvbikKK3sKKyAgICBDYXBzIGNhcHM7CisKKyAgICBp
ZiAoY2xpZW50VmVyc2lvbiA+PSBWZXJzaW9uKDIsIDApKQorICAgIHsKKyAgICAgICAgLy8gVGFi
bGUgNi4xOAorICAgICAgICBjYXBzLm1heDJEVGV4dHVyZVNpemUgICAgICA9IDY0OworICAgICAg
ICBjYXBzLm1heEN1YmVNYXBUZXh0dXJlU2l6ZSA9IDE2OworICAgICAgICBjYXBzLm1heFZpZXdw
b3J0V2lkdGggICAgICA9IGNhcHMubWF4MkRUZXh0dXJlU2l6ZTsKKyAgICAgICAgY2Fwcy5tYXhW
aWV3cG9ydEhlaWdodCAgICAgPSBjYXBzLm1heDJEVGV4dHVyZVNpemU7CisgICAgICAgIGNhcHMu
bWluQWxpYXNlZFBvaW50U2l6ZSAgID0gMTsKKyAgICAgICAgY2Fwcy5tYXhBbGlhc2VkUG9pbnRT
aXplICAgPSAxOworICAgICAgICBjYXBzLm1pbkFsaWFzZWRMaW5lV2lkdGggICA9IDE7CisgICAg
ICAgIGNhcHMubWF4QWxpYXNlZExpbmVXaWR0aCAgID0gMTsKKworICAgICAgICAvLyBUYWJsZSA2
LjE5CisgICAgICAgIGNhcHMudmVydGV4SGlnaHBGbG9hdC5zZXRTaW11bGF0ZWRGbG9hdCg2Miwg
MTYpOworICAgICAgICBjYXBzLnZlcnRleE1lZGl1bXBGbG9hdC5zZXRTaW11bGF0ZWRGbG9hdCgx
NCwgMTApOworICAgICAgICBjYXBzLnZlcnRleExvd3BGbG9hdC5zZXRTaW11bGF0ZWRGbG9hdCgx
LCA4KTsKKyAgICAgICAgY2Fwcy52ZXJ0ZXhIaWdocEludC5zZXRTaW11bGF0ZWRJbnQoMTYpOwor
ICAgICAgICBjYXBzLnZlcnRleE1lZGl1bXBJbnQuc2V0U2ltdWxhdGVkSW50KDEwKTsKKyAgICAg
ICAgY2Fwcy52ZXJ0ZXhMb3dwSW50LnNldFNpbXVsYXRlZEludCg4KTsKKyAgICAgICAgY2Fwcy5m
cmFnbWVudEhpZ2hwRmxvYXQuc2V0U2ltdWxhdGVkRmxvYXQoNjIsIDE2KTsKKyAgICAgICAgY2Fw
cy5mcmFnbWVudE1lZGl1bXBGbG9hdC5zZXRTaW11bGF0ZWRGbG9hdCgxNCwgMTApOworICAgICAg
ICBjYXBzLmZyYWdtZW50TG93cEZsb2F0LnNldFNpbXVsYXRlZEZsb2F0KDEsIDgpOworICAgICAg
ICBjYXBzLmZyYWdtZW50SGlnaHBJbnQuc2V0U2ltdWxhdGVkSW50KDE2KTsKKyAgICAgICAgY2Fw
cy5mcmFnbWVudE1lZGl1bXBJbnQuc2V0U2ltdWxhdGVkSW50KDEwKTsKKyAgICAgICAgY2Fwcy5m
cmFnbWVudExvd3BJbnQuc2V0U2ltdWxhdGVkSW50KDgpOworCisgICAgICAgIC8vIFRhYmxlIDYu
MjAKKyAgICAgICAgY2Fwcy5tYXhWZXJ0ZXhBdHRyaWJ1dGVzICAgICAgICAgID0gODsKKyAgICAg
ICAgY2Fwcy5tYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyAgICAgID0gMTI4OworICAgICAgICBjYXBz
Lm1heFZhcnlpbmdWZWN0b3JzICAgICAgICAgICAgPSA4OworICAgICAgICBjYXBzLm1heENvbWJp
bmVkVGV4dHVyZUltYWdlVW5pdHMgPSA4OworICAgICAgICBjYXBzLm1heFRleHR1cmVJbWFnZVVu
aXRzICAgICAgICAgPSA4OworICAgICAgICBjYXBzLm1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMg
ICAgPSAxNjsKKyAgICAgICAgY2Fwcy5tYXhSZW5kZXJidWZmZXJTaXplICAgICAgICAgID0gMTsK
KyAgICB9CisKKyAgICBpZiAoY2xpZW50VmVyc2lvbiA+PSBWZXJzaW9uKDMsIDApKQorICAgIHsK
KyAgICAgICAgLy8gVGFibGUgNi4yOAorICAgICAgICBjYXBzLm1heEVsZW1lbnRJbmRleCAgICAg
ICA9ICgxIDw8IDI0KSAtIDE7CisgICAgICAgIGNhcHMubWF4M0RUZXh0dXJlU2l6ZSAgICAgID0g
MjU2OworICAgICAgICBjYXBzLm1heDJEVGV4dHVyZVNpemUgICAgICA9IDIwNDg7CisgICAgICAg
IGNhcHMubWF4QXJyYXlUZXh0dXJlTGF5ZXJzID0gMjU2OworICAgICAgICBjYXBzLm1heExPREJp
YXMgICAgICAgICAgICA9IDIuMGY7CisgICAgICAgIGNhcHMubWF4Q3ViZU1hcFRleHR1cmVTaXpl
ID0gMjA0ODsKKyAgICAgICAgY2Fwcy5tYXhSZW5kZXJidWZmZXJTaXplICAgPSAyMDQ4OworICAg
ICAgICBjYXBzLm1heERyYXdCdWZmZXJzICAgICAgICA9IDQ7CisgICAgICAgIGNhcHMubWF4Q29s
b3JBdHRhY2htZW50cyAgID0gNDsKKyAgICAgICAgY2Fwcy5tYXhWaWV3cG9ydFdpZHRoICAgICAg
PSBjYXBzLm1heDJEVGV4dHVyZVNpemU7CisgICAgICAgIGNhcHMubWF4Vmlld3BvcnRIZWlnaHQg
ICAgID0gY2Fwcy5tYXgyRFRleHR1cmVTaXplOworCisgICAgICAgIC8vIFRhYmxlIDYuMjkKKyAg
ICAgICAgY2Fwcy5jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMucHVzaF9iYWNrKEdMX0NPTVBSRVNT
RURfUjExX0VBQyk7CisgICAgICAgIGNhcHMuY29tcHJlc3NlZFRleHR1cmVGb3JtYXRzLnB1c2hf
YmFjayhHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDKTsKKyAgICAgICAgY2Fwcy5jb21wcmVz
c2VkVGV4dHVyZUZvcm1hdHMucHVzaF9iYWNrKEdMX0NPTVBSRVNTRURfUkcxMV9FQUMpOworICAg
ICAgICBjYXBzLmNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5wdXNoX2JhY2soR0xfQ09NUFJFU1NF
RF9TSUdORURfUkcxMV9FQUMpOworICAgICAgICBjYXBzLmNvbXByZXNzZWRUZXh0dXJlRm9ybWF0
cy5wdXNoX2JhY2soR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIpOworICAgICAgICBjYXBzLmNvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0cy5wdXNoX2JhY2soR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyKTsK
KyAgICAgICAgY2Fwcy5jb21wcmVzc2VkVGV4dHVyZUZvcm1hdHMucHVzaF9iYWNrKEdMX0NPTVBS
RVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIpOworICAgICAgICBjYXBzLmNvbXBy
ZXNzZWRUZXh0dXJlRm9ybWF0cy5wdXNoX2JhY2soR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRI
Uk9VR0hfQUxQSEExX0VUQzIpOworICAgICAgICBjYXBzLmNvbXByZXNzZWRUZXh0dXJlRm9ybWF0
cy5wdXNoX2JhY2soR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMyX0VBQyk7CisgICAgICAgIGNhcHMu
Y29tcHJlc3NlZFRleHR1cmVGb3JtYXRzLnB1c2hfYmFjayhHTF9DT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9FVEMyX0VBQyk7CisgICAgICAgIGNhcHMudmVydGV4SGlnaHBGbG9hdC5zZXRJRUVFRmxv
YXQoKTsKKyAgICAgICAgY2Fwcy52ZXJ0ZXhIaWdocEludC5zZXRUd29zQ29tcGxlbWVudEludCgz
Mik7CisgICAgICAgIGNhcHMudmVydGV4TWVkaXVtcEludC5zZXRUd29zQ29tcGxlbWVudEludCgx
Nik7CisgICAgICAgIGNhcHMudmVydGV4TG93cEludC5zZXRUd29zQ29tcGxlbWVudEludCg4KTsK
KyAgICAgICAgY2Fwcy5mcmFnbWVudEhpZ2hwRmxvYXQuc2V0SUVFRUZsb2F0KCk7CisgICAgICAg
IGNhcHMuZnJhZ21lbnRIaWdocEludC5zZXRTaW11bGF0ZWRJbnQoMzIpOworICAgICAgICBjYXBz
LmZyYWdtZW50TWVkaXVtcEludC5zZXRUd29zQ29tcGxlbWVudEludCgxNik7CisgICAgICAgIGNh
cHMuZnJhZ21lbnRMb3dwSW50LnNldFR3b3NDb21wbGVtZW50SW50KDgpOworICAgICAgICBjYXBz
Lm1heFNlcnZlcldhaXRUaW1lb3V0ID0gMDsKKworICAgICAgICAvLyBUYWJsZSA2LjMxCisgICAg
ICAgIGNhcHMubWF4VmVydGV4QXR0cmlidXRlcyAgICAgICAgPSAxNjsKKyAgICAgICAgY2Fwcy5t
YXhWZXJ0ZXhVbmlmb3JtQ29tcG9uZW50cyA9IDEwMjQ7CisgICAgICAgIGNhcHMubWF4VmVydGV4
VW5pZm9ybVZlY3RvcnMgICAgPSAyNTY7CisgICAgICAgIGNhcHMubWF4VmVydGV4VW5pZm9ybUJs
b2NrcyAgICAgPSAxMjsKKyAgICAgICAgY2Fwcy5tYXhWZXJ0ZXhPdXRwdXRDb21wb25lbnRzICA9
IDY0OworICAgICAgICBjYXBzLm1heFZlcnRleFRleHR1cmVJbWFnZVVuaXRzID0gMTY7CisKKyAg
ICAgICAgLy8gVGFibGUgNi4zMgorICAgICAgICBjYXBzLm1heEZyYWdtZW50VW5pZm9ybUNvbXBv
bmVudHMgPSA4OTY7CisgICAgICAgIGNhcHMubWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyAgICA9
IDIyNDsKKyAgICAgICAgY2Fwcy5tYXhGcmFnbWVudFVuaWZvcm1CbG9ja3MgICAgID0gMTI7Cisg
ICAgICAgIGNhcHMubWF4RnJhZ21lbnRJbnB1dENvbXBvbmVudHMgICA9IDYwOworICAgICAgICBj
YXBzLm1heFRleHR1cmVJbWFnZVVuaXRzICAgICAgICAgPSAxNjsKKyAgICAgICAgY2Fwcy5taW5Q
cm9ncmFtVGV4ZWxPZmZzZXQgICAgICAgID0gLTg7CisgICAgICAgIGNhcHMubWF4UHJvZ3JhbVRl
eGVsT2Zmc2V0ICAgICAgICA9IDc7CisKKyAgICAgICAgLy8gVGFibGUgNi4zMworICAgICAgICBj
YXBzLm1heFVuaWZvcm1CdWZmZXJCaW5kaW5ncyAgICAgPSAyNDsKKyAgICAgICAgY2Fwcy5tYXhV
bmlmb3JtQmxvY2tTaXplICAgICAgICAgID0gMTYzODQ7CisgICAgICAgIGNhcHMudW5pZm9ybUJ1
ZmZlck9mZnNldEFsaWdubWVudCA9IDI1NjsKKyAgICAgICAgY2Fwcy5tYXhDb21iaW5lZFVuaWZv
cm1CbG9ja3MgICAgID0gMjQ7CisgICAgICAgIGNhcHMubWF4Q29tYmluZWRWZXJ0ZXhVbmlmb3Jt
Q29tcG9uZW50cyA9CisgICAgICAgICAgICBjYXBzLm1heFZlcnRleFVuaWZvcm1CbG9ja3MgKiAo
Y2Fwcy5tYXhVbmlmb3JtQmxvY2tTaXplIC8gNCkgKworICAgICAgICAgICAgY2Fwcy5tYXhWZXJ0
ZXhVbmlmb3JtQ29tcG9uZW50czsKKyAgICAgICAgY2Fwcy5tYXhDb21iaW5lZEZyYWdtZW50VW5p
Zm9ybUNvbXBvbmVudHMgPQorICAgICAgICAgICAgY2Fwcy5tYXhGcmFnbWVudFVuaWZvcm1CbG9j
a3MgKiAoY2Fwcy5tYXhVbmlmb3JtQmxvY2tTaXplIC8gNCkgKworICAgICAgICAgICAgY2Fwcy5t
YXhGcmFnbWVudFVuaWZvcm1Db21wb25lbnRzOworICAgICAgICBjYXBzLm1heFZhcnlpbmdDb21w
b25lbnRzICAgICAgICAgPSA2MDsKKyAgICAgICAgY2Fwcy5tYXhWYXJ5aW5nVmVjdG9ycyAgICAg
ICAgICAgID0gMTU7CisgICAgICAgIGNhcHMubWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyA9
IDMyOworCisgICAgICAgIC8vIFRhYmxlIDYuMzQKKyAgICAgICAgY2Fwcy5tYXhUcmFuc2Zvcm1G
ZWVkYmFja0ludGVybGVhdmVkQ29tcG9uZW50cyA9IDY0OworICAgICAgICBjYXBzLm1heFRyYW5z
Zm9ybUZlZWRiYWNrU2VwYXJhdGVBdHRyaWJ1dGVzICAgID0gNDsKKyAgICAgICAgY2Fwcy5tYXhU
cmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRlQ29tcG9uZW50cyAgICA9IDQ7CisKKyAgICAgICAgLy8g
VGFibGUgMy4zNQorICAgICAgICBjYXBzLm1heFNhbXBsZXMgPSA0OworICAgIH0KKworICAgIGlm
IChjbGllbnRWZXJzaW9uID49IFZlcnNpb24oMywgMSkpCisgICAgeworICAgICAgICAvLyBUYWJs
ZSAyMC40MAorICAgICAgICBjYXBzLm1heEZyYW1lYnVmZmVyV2lkdGggICAgPSAyMDQ4OworICAg
ICAgICBjYXBzLm1heEZyYW1lYnVmZmVySGVpZ2h0ICAgPSAyMDQ4OworICAgICAgICBjYXBzLm1h
eEZyYW1lYnVmZmVyU2FtcGxlcyAgPSA0OworICAgICAgICBjYXBzLm1heFNhbXBsZU1hc2tXb3Jk
cyAgICAgPSAxOworICAgICAgICBjYXBzLm1heENvbG9yVGV4dHVyZVNhbXBsZXMgPSAxOworICAg
ICAgICBjYXBzLm1heERlcHRoVGV4dHVyZVNhbXBsZXMgPSAxOworICAgICAgICBjYXBzLm1heElu
dGVnZXJTYW1wbGVzICAgICAgPSAxOworCisgICAgICAgIC8vIFRhYmxlIDIwLjQxCisgICAgICAg
IGNhcHMubWF4VmVydGV4QXR0cmliUmVsYXRpdmVPZmZzZXQgPSAyMDQ3OworICAgICAgICBjYXBz
Lm1heFZlcnRleEF0dHJpYkJpbmRpbmdzICAgICAgID0gMTY7CisgICAgICAgIGNhcHMubWF4VmVy
dGV4QXR0cmliU3RyaWRlICAgICAgICAgPSAyMDQ4OworCisgICAgICAgIC8vIFRhYmxlIDIwLjQz
CisgICAgICAgIGNhcHMubWF4VmVydGV4QXRvbWljQ291bnRlckJ1ZmZlcnMgPSAwOworICAgICAg
ICBjYXBzLm1heFZlcnRleEF0b21pY0NvdW50ZXJzICAgICAgID0gMDsKKyAgICAgICAgY2Fwcy5t
YXhWZXJ0ZXhJbWFnZVVuaWZvcm1zICAgICAgICA9IDA7CisgICAgICAgIGNhcHMubWF4VmVydGV4
U2hhZGVyU3RvcmFnZUJsb2NrcyAgPSAwOworCisgICAgICAgIC8vIFRhYmxlIDIwLjQ0CisgICAg
ICAgIGNhcHMubWF4RnJhZ21lbnRVbmlmb3JtQ29tcG9uZW50cyAgICA9IDEwMjQ7CisgICAgICAg
IGNhcHMubWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyAgICAgICA9IDI1NjsKKyAgICAgICAgY2Fw
cy5tYXhGcmFnbWVudEF0b21pY0NvdW50ZXJCdWZmZXJzID0gMDsKKyAgICAgICAgY2Fwcy5tYXhG
cmFnbWVudEF0b21pY0NvdW50ZXJzICAgICAgID0gMDsKKyAgICAgICAgY2Fwcy5tYXhGcmFnbWVu
dEltYWdlVW5pZm9ybXMgICAgICAgID0gMDsKKyAgICAgICAgY2Fwcy5tYXhGcmFnbWVudFNoYWRl
clN0b3JhZ2VCbG9ja3MgID0gMDsKKyAgICAgICAgY2Fwcy5taW5Qcm9ncmFtVGV4dHVyZUdhdGhl
ck9mZnNldCAgID0gMDsKKyAgICAgICAgY2Fwcy5tYXhQcm9ncmFtVGV4dHVyZUdhdGhlck9mZnNl
dCAgID0gMDsKKworICAgICAgICAvLyBUYWJsZSAyMC40NQorICAgICAgICBjYXBzLm1heENvbXB1
dGVXb3JrR3JvdXBDb3VudCAgICAgICA9IHt7NjU1MzUsIDY1NTM1LCA2NTUzNX19OworICAgICAg
ICBjYXBzLm1heENvbXB1dGVXb3JrR3JvdXBTaXplICAgICAgICA9IHt7MTI4LCAxMjgsIDY0fX07
CisgICAgICAgIGNhcHMubWF4Q29tcHV0ZVdvcmtHcm91cEludm9jYXRpb25zID0gMTI7CisgICAg
ICAgIGNhcHMubWF4Q29tcHV0ZVVuaWZvcm1CbG9ja3MgICAgICAgID0gMTI7CisgICAgICAgIGNh
cHMubWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzICAgID0gMTY7CisgICAgICAgIGNhcHMubWF4
Q29tcHV0ZVNoYXJlZE1lbW9yeVNpemUgICAgID0gMTYzODQ7CisgICAgICAgIGNhcHMubWF4Q29t
cHV0ZVVuaWZvcm1Db21wb25lbnRzICAgID0gMTAyNDsKKyAgICAgICAgY2Fwcy5tYXhDb21wdXRl
QXRvbWljQ291bnRlckJ1ZmZlcnMgPSAxOworICAgICAgICBjYXBzLm1heENvbXB1dGVBdG9taWND
b3VudGVycyAgICAgICA9IDg7CisgICAgICAgIGNhcHMubWF4Q29tcHV0ZUltYWdlVW5pZm9ybXMg
ICAgICAgID0gNDsKKyAgICAgICAgY2Fwcy5tYXhDb21iaW5lZENvbXB1dGVVbmlmb3JtQ29tcG9u
ZW50cyA9CisgICAgICAgICAgICBjYXBzLm1heENvbXB1dGVVbmlmb3JtQmxvY2tzICogc3RhdGlj
X2Nhc3Q8R0x1aW50PihjYXBzLm1heFVuaWZvcm1CbG9ja1NpemUgLyA0KSArCisgICAgICAgICAg
ICBjYXBzLm1heENvbXB1dGVVbmlmb3JtQ29tcG9uZW50czsKKyAgICAgICAgY2Fwcy5tYXhDb21w
dXRlU2hhZGVyU3RvcmFnZUJsb2NrcyA9IDQ7CisKKyAgICAgICAgLy8gVGFibGUgMjAuNDYKKyAg
ICAgICAgY2Fwcy5tYXhVbmlmb3JtQnVmZmVyQmluZGluZ3MgPSAzNjsKKyAgICAgICAgY2Fwcy5t
YXhDb21iaW5lZEZyYWdtZW50VW5pZm9ybUNvbXBvbmVudHMgPQorICAgICAgICAgICAgY2Fwcy5t
YXhGcmFnbWVudFVuaWZvcm1CbG9ja3MgKiAoY2Fwcy5tYXhVbmlmb3JtQmxvY2tTaXplIC8gNCkg
KworICAgICAgICAgICAgY2Fwcy5tYXhGcmFnbWVudFVuaWZvcm1Db21wb25lbnRzOworICAgICAg
ICBjYXBzLm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMgICAgID0gNDg7CisgICAgICAgIGNh
cHMubWF4Q29tYmluZWRTaGFkZXJPdXRwdXRSZXNvdXJjZXMgPSA0OworCisgICAgICAgIC8vIFRh
YmxlIDIwLjQ3CisgICAgICAgIGNhcHMubWF4VW5pZm9ybUxvY2F0aW9ucyAgICAgICAgICAgICAg
ICA9IDEwMjQ7CisgICAgICAgIGNhcHMubWF4QXRvbWljQ291bnRlckJ1ZmZlckJpbmRpbmdzICAg
ICA9IDE7CisgICAgICAgIGNhcHMubWF4QXRvbWljQ291bnRlckJ1ZmZlclNpemUgICAgICAgICA9
IDMyOworICAgICAgICBjYXBzLm1heENvbWJpbmVkQXRvbWljQ291bnRlckJ1ZmZlcnMgICAgPSAx
OworICAgICAgICBjYXBzLm1heENvbWJpbmVkQXRvbWljQ291bnRlcnMgICAgICAgICAgPSA4Owor
ICAgICAgICBjYXBzLm1heEltYWdlVW5pdHMgICAgICAgICAgICAgICAgICAgICAgPSA0OworICAg
ICAgICBjYXBzLm1heENvbWJpbmVkSW1hZ2VVbmlmb3JtcyAgICAgICAgICAgPSA0OworICAgICAg
ICBjYXBzLm1heFNoYWRlclN0b3JhZ2VCdWZmZXJCaW5kaW5ncyAgICAgPSA0OworICAgICAgICBj
YXBzLm1heFNoYWRlclN0b3JhZ2VCbG9ja1NpemUgICAgICAgICAgPSAxIDw8IDI3OworICAgICAg
ICBjYXBzLm1heENvbWJpbmVkU2hhZGVyU3RvcmFnZUJsb2NrcyAgICAgPSA0OworICAgICAgICBj
YXBzLnNoYWRlclN0b3JhZ2VCdWZmZXJPZmZzZXRBbGlnbm1lbnQgPSAyNTY7CisgICAgfQorCisg
ICAgcmV0dXJuIGNhcHM7Cit9CiB9CiAKIG5hbWVzcGFjZSBlZ2wKQEAgLTc2Niw2ICsxMDEwLDcg
QEAgQ2Fwczo6Q2FwcygpCiBEaXNwbGF5RXh0ZW5zaW9uczo6RGlzcGxheUV4dGVuc2lvbnMoKQog
ICAgIDogY3JlYXRlQ29udGV4dFJvYnVzdG5lc3MoZmFsc2UpLAogICAgICAgZDNkU2hhcmVIYW5k
bGVDbGllbnRCdWZmZXIoZmFsc2UpLAorICAgICAgZDNkVGV4dHVyZUNsaWVudEJ1ZmZlcihmYWxz
ZSksCiAgICAgICBzdXJmYWNlRDNEVGV4dHVyZTJEU2hhcmVIYW5kbGUoZmFsc2UpLAogICAgICAg
cXVlcnlTdXJmYWNlUG9pbnRlcihmYWxzZSksCiAgICAgICB3aW5kb3dGaXhlZFNpemUoZmFsc2Up
LApAQCAtNzkxLDcgKzEwMzYsMTMgQEAgRGlzcGxheUV4dGVuc2lvbnM6OkRpc3BsYXlFeHRlbnNp
b25zKCkKICAgICAgIHN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTIoZmFsc2UpLAogICAgICAg
Y3JlYXRlQ29udGV4dFdlYkdMQ29tcGF0aWJpbGl0eShmYWxzZSksCiAgICAgICBjcmVhdGVDb250
ZXh0QmluZEdlbmVyYXRlc1Jlc291cmNlKGZhbHNlKSwKLSAgICAgIGdldFN5bmNWYWx1ZXMoZmFs
c2UpCisgICAgICBnZXRTeW5jVmFsdWVzKGZhbHNlKSwKKyAgICAgIHN3YXBCdWZmZXJzV2l0aERh
bWFnZShmYWxzZSksCisgICAgICBwaXhlbEZvcm1hdEZsb2F0KGZhbHNlKSwKKyAgICAgIHN1cmZh
Y2VsZXNzQ29udGV4dChmYWxzZSksCisgICAgICBkaXNwbGF5VGV4dHVyZVNoYXJlR3JvdXAoZmFs
c2UpLAorICAgICAgY3JlYXRlQ29udGV4dENsaWVudEFycmF5cyhmYWxzZSksCisgICAgICBjcmVh
dGVDb250ZXh0Um9idXN0UmVzb3VyY2VJbml0aWFsaXphdGlvbihmYWxzZSkKIHsKIH0KIApAQCAt
ODAzLDYgKzEwNTQsNyBAQCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gRGlzcGxheUV4dGVuc2lv
bnM6OmdldFN0cmluZ3MoKSBjb25zdAogICAgIC8vICAgICAgICAgICAgICAgICAgIHwgRXh0ZW5z
aW9uIG5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFN1cHBvcnRl
ZCBmbGFnICAgICAgICAgICAgICAgICAgICB8IE91dHB1dCB2ZWN0b3IgICB8CiAgICAgSW5zZXJ0
RXh0ZW5zaW9uU3RyaW5nKCJFR0xfRVhUX2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3MiLCAgICAg
ICAgICAgICAgICAgICBjcmVhdGVDb250ZXh0Um9idXN0bmVzcywgICAgICAgICAgICAmZXh0ZW5z
aW9uU3RyaW5ncyk7CiAgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfZDNkX3No
YXJlX2hhbmRsZV9jbGllbnRfYnVmZmVyIiwgICAgICAgICAgICBkM2RTaGFyZUhhbmRsZUNsaWVu
dEJ1ZmZlciwgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CisgICAgSW5zZXJ0RXh0ZW5zaW9u
U3RyaW5nKCJFR0xfQU5HTEVfZDNkX3RleHR1cmVfY2xpZW50X2J1ZmZlciIsICAgICAgICAgICAg
ICAgICBkM2RUZXh0dXJlQ2xpZW50QnVmZmVyLCAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5n
cyk7CiAgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfc3VyZmFjZV9kM2RfdGV4
dHVyZV8yZF9zaGFyZV9oYW5kbGUiLCAgICAgICBzdXJmYWNlRDNEVGV4dHVyZTJEU2hhcmVIYW5k
bGUsICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJF
R0xfQU5HTEVfcXVlcnlfc3VyZmFjZV9wb2ludGVyIiwgICAgICAgICAgICAgICAgICAgICBxdWVy
eVN1cmZhY2VQb2ludGVyLCAgICAgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAg
SW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfd2luZG93X2ZpeGVkX3NpemUiLCAgICAg
ICAgICAgICAgICAgICAgICAgICB3aW5kb3dGaXhlZFNpemUsICAgICAgICAgICAgICAgICAgICAm
ZXh0ZW5zaW9uU3RyaW5ncyk7CkBAIC04MjgsNiArMTA4MCwxMiBAQCBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4gRGlzcGxheUV4dGVuc2lvbnM6OmdldFN0cmluZ3MoKSBjb25zdAogICAgIEluc2Vy
dEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX2NyZWF0ZV9jb250ZXh0X3dlYmdsX2NvbXBhdGli
aWxpdHkiLCAgICAgICAgY3JlYXRlQ29udGV4dFdlYkdMQ29tcGF0aWJpbGl0eSwgICAgJmV4dGVu
c2lvblN0cmluZ3MpOwogICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0NIUk9NSVVNX2Ny
ZWF0ZV9jb250ZXh0X2JpbmRfZ2VuZXJhdGVzX3Jlc291cmNlIiwgY3JlYXRlQ29udGV4dEJpbmRH
ZW5lcmF0ZXNSZXNvdXJjZSwgJmV4dGVuc2lvblN0cmluZ3MpOwogICAgIEluc2VydEV4dGVuc2lv
blN0cmluZygiRUdMX0NIUk9NSVVNX3N5bmNfY29udHJvbCIsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2V0U3luY1ZhbHVlcywgICAgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmlu
Z3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0VYVF9zd2FwX2J1ZmZlcnNfd2l0
aF9kYW1hZ2UiLCAgICAgICAgICAgICAgICAgICAgc3dhcEJ1ZmZlcnNXaXRoRGFtYWdlLCAgICAg
ICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygi
RUdMX0VYVF9waXhlbF9mb3JtYXRfZmxvYXQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgcGl4
ZWxGb3JtYXRGbG9hdCwgICAgICAgICAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAg
IEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0tIUl9zdXJmYWNlbGVzc19jb250ZXh0IiwgICAg
ICAgICAgICAgICAgICAgICAgICAgc3VyZmFjZWxlc3NDb250ZXh0LCAgICAgICAgICAgICAgICAg
JmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xF
X2Rpc3BsYXlfdGV4dHVyZV9zaGFyZV9ncm91cCIsICAgICAgICAgICAgICAgZGlzcGxheVRleHR1
cmVTaGFyZUdyb3VwLCAgICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAgIEluc2VydEV4
dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX2NyZWF0ZV9jb250ZXh0X2NsaWVudF9hcnJheXMiLCAg
ICAgICAgICAgICAgY3JlYXRlQ29udGV4dENsaWVudEFycmF5cywgICAgICAgICAgJmV4dGVuc2lv
blN0cmluZ3MpOworICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX2NyZWF0ZV9j
b250ZXh0X3JvYnVzdF9yZXNvdXJjZV9pbml0aWFsaXphdGlvbiIsIGNyZWF0ZUNvbnRleHRSb2J1
c3RSZXNvdXJjZUluaXRpYWxpemF0aW9uLCAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAgLy8gVE9E
TyhqbWFkaWxsKTogRW5hYmxlIHRoaXMgd2hlbiBjb21wbGV0ZS4KICAgICAvL0luc2VydEV4dGVu
c2lvblN0cmluZygiS0hSX2NyZWF0ZV9jb250ZXh0X25vX2Vycm9yIiwgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZUNvbnRleHROb0Vycm9yLCAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJp
bmdzKTsKICAgICAvLyBjbGFuZy1mb3JtYXQgb24KQEAgLTg1Nyw2ICsxMTE1LDcgQEAgQ2xpZW50
RXh0ZW5zaW9uczo6Q2xpZW50RXh0ZW5zaW9ucygpCiAgICAgICBwbGF0Zm9ybUFOR0xFKGZhbHNl
KSwKICAgICAgIHBsYXRmb3JtQU5HTEVEM0QoZmFsc2UpLAogICAgICAgcGxhdGZvcm1BTkdMRU9w
ZW5HTChmYWxzZSksCisgICAgICBwbGF0Zm9ybUFOR0xFVnVsa2FuKGZhbHNlKSwKICAgICAgIGRl
dmljZUNyZWF0aW9uKGZhbHNlKSwKICAgICAgIGRldmljZUNyZWF0aW9uRDNEMTEoZmFsc2UpLAog
ICAgICAgeDExVmlzdWFsKGZhbHNlKSwKQEAgLTg3OCw2ICsxMTM3LDcgQEAgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+IENsaWVudEV4dGVuc2lvbnM6OmdldFN0cmluZ3MoKSBjb25zdAogICAgIElu
c2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX2QzZCIsICAgICAg
ICAgIHBsYXRmb3JtQU5HTEVEM0QsICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKICAgICBJ
bnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9vcGVuZ2wiLCAg
ICAgICBwbGF0Zm9ybUFOR0xFT3BlbkdMLCAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAgICAg
SW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfbnVsbCIsICAg
ICAgICAgcGxhdGZvcm1BTkdMRU5VTEwsICAgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOworICAg
IEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX3BsYXRmb3JtX2FuZ2xlX3Z1bGthbiIs
ICAgICAgIHBsYXRmb3JtQU5HTEVWdWxrYW4sICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsKICAg
ICBJbnNlcnRFeHRlbnNpb25TdHJpbmcoIkVHTF9BTkdMRV9kZXZpY2VfY3JlYXRpb24iLCAgICAg
ICAgICAgICBkZXZpY2VDcmVhdGlvbiwgICAgICAgICAgICAmZXh0ZW5zaW9uU3RyaW5ncyk7CiAg
ICAgSW5zZXJ0RXh0ZW5zaW9uU3RyaW5nKCJFR0xfQU5HTEVfZGV2aWNlX2NyZWF0aW9uX2QzZDEx
IiwgICAgICAgZGV2aWNlQ3JlYXRpb25EM0QxMSwgICAgICAgJmV4dGVuc2lvblN0cmluZ3MpOwog
ICAgIEluc2VydEV4dGVuc2lvblN0cmluZygiRUdMX0FOR0xFX3gxMV92aXN1YWwiLCAgICAgICAg
ICAgICAgICAgIHgxMVZpc3VhbCwgICAgICAgICAgICAgICAgICZleHRlbnNpb25TdHJpbmdzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9DYXBzLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ2Fwcy5oCmluZGV4IGMxY2Ew
Mzk2OWU5Li44N2NkZGZjZGEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0NhcHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvQ2Fwcy5oCkBAIC05LDYgKzksNyBAQAogCiAjaW5jbHVkZSAiYW5nbGVfZ2wuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvVmVyc2lv
bi5oIgogCiAjaW5jbHVkZSA8bWFwPgogI2luY2x1ZGUgPHNldD4KQEAgLTE5LDYgKzIwLDggQEAK
IG5hbWVzcGFjZSBnbAogewogCitzdHJ1Y3QgRXh0ZW5zaW9uczsKKwogdHlwZWRlZiBzdGQ6OnNl
dDxHTHVpbnQ+IFN1cHBvcnRlZFNhbXBsZVNldDsKIAogc3RydWN0IFRleHR1cmVDYXBzCkBAIC00
NSw2ICs0OCwxMCBAQCBzdHJ1Y3QgVGV4dHVyZUNhcHMKICAgICBHTHVpbnQgZ2V0TmVhcmVzdFNh
bXBsZXMoR0x1aW50IHJlcXVlc3RlZFNhbXBsZXMpIGNvbnN0OwogfTsKIAorVGV4dHVyZUNhcHMg
R2VuZXJhdGVNaW5pbXVtVGV4dHVyZUNhcHMoR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVyc2lvbiAmY2xpZW50VmVy
c2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4dGVu
c2lvbnMgJmV4dGVuc2lvbnMpOworCiBjbGFzcyBUZXh0dXJlQ2Fwc01hcAogewogICBwdWJsaWM6
CkBAIC02Niw2ICs3Myw5IEBAIGNsYXNzIFRleHR1cmVDYXBzTWFwCiAgICAgSW50ZXJuYWxGb3Jt
YXRUb0NhcHNNYXAgbUNhcHNNYXA7CiB9OwogCitUZXh0dXJlQ2Fwc01hcCBHZW5lcmF0ZU1pbmlt
dW1UZXh0dXJlQ2Fwc01hcChjb25zdCBWZXJzaW9uICZjbGllbnRWZXJzaW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRXh0ZW5zaW9ucyAmZXh0
ZW5zaW9ucyk7CisKIHN0cnVjdCBFeHRlbnNpb25zCiB7CiAgICAgRXh0ZW5zaW9ucygpOwpAQCAt
MTQ0LDEyICsxNTQsMTggQEAgc3RydWN0IEV4dGVuc2lvbnMKICAgICBib29sIHRleHR1cmVSRzsK
IAogICAgIC8vIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEsIEdMX0FOR0xFX3RleHR1
cmVfY29tcHJlc3Npb25fZHh0MyBhbmQgR0xfQU5HTEVfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQ1
Ci0gICAgLy8gSW1wbGllcyB0aGF0IFRleHR1cmVDYXBzIGZvciBHTF9DT01QUkVTU0VEX1JHQl9T
M1RDX0RYVDFfRVhULCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVAorICAgIC8vIElt
cGxpZXMgdGhhdCBUZXh0dXJlQ2FwcyBleGlzdCBmb3IgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19E
WFQxX0VYVCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQKICAgICAvLyBHTF9DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFIGFuZCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19E
WFQ1X0FOR0xFCiAgICAgYm9vbCB0ZXh0dXJlQ29tcHJlc3Npb25EWFQxOwogICAgIGJvb2wgdGV4
dHVyZUNvbXByZXNzaW9uRFhUMzsKICAgICBib29sIHRleHR1cmVDb21wcmVzc2lvbkRYVDU7CiAK
KyAgICAvLyBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9zM3RjX3NyZ2IKKyAgICAvLyBJbXBs
aWVzIHRoYXQgVGV4dHVyZUNhcHMgZXhpc3QgZm9yIEdMX0NPTVBSRVNTRURfU1JHQl9TM1RDX0RY
VDFfRVhULAorICAgIC8vIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhULCBH
TF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVCwgYW5kCisgICAgLy8gR0xfQ09N
UFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQKKyAgICBib29sIHRleHR1cmVDb21wcmVz
c2lvblMzVENzUkdCOworCiAgICAgLy8gR0xfS0hSX3RleHR1cmVfY29tcHJlc3Npb25fYXN0Y19o
ZHIKICAgICBib29sIHRleHR1cmVDb21wcmVzc2lvbkFTVENIRFI7CiAKQEAgLTI5OSwxMiArMzE1
LDIxIEBAIHN0cnVjdCBFeHRlbnNpb25zCiAgICAgLy8gR0xfQU5HTEVfd2ViZ2xfY29tcGF0aWJp
bGl0eQogICAgIGJvb2wgd2ViZ2xDb21wYXRpYmlsaXR5OwogCisgICAgLy8gR0xfQU5HTEVfcmVx
dWVzdF9leHRlbnNpb24KKyAgICBib29sIHJlcXVlc3RFeHRlbnNpb247CisKICAgICAvLyBHTF9D
SFJPTUlVTV9iaW5kX2dlbmVyYXRlc19yZXNvdXJjZQogICAgIGJvb2wgYmluZEdlbmVyYXRlc1Jl
c291cmNlOwogCiAgICAgLy8gR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkKICAgICBib29s
IHJvYnVzdENsaWVudE1lbW9yeTsKIAorICAgIC8vIEdMX0VYVF90ZXh0dXJlX3NSR0JfZGVjb2Rl
CisgICAgYm9vbCB0ZXh0dXJlU1JHQkRlY29kZTsKKworICAgIC8vIEdMX0VYVF9zUkdCX3dyaXRl
X2NvbnRyb2wKKyAgICBib29sIHNSR0JXcml0ZUNvbnRyb2w7CisKICAgICAvLyBFUzMgRXh0ZW5z
aW9uIHN1cHBvcnQKIAogICAgIC8vIEdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQKQEAgLTMyMywx
MiArMzQ4LDIxIEBAIHN0cnVjdCBFeHRlbnNpb25zCiAKICAgICAvLyBHTF9DSFJPTUlVTV9wYXRo
X3JlbmRlcmluZwogICAgIGJvb2wgcGF0aFJlbmRlcmluZzsKKworICAgIC8vIEdMX09FU19zdXJm
YWNlbGVzc19jb250ZXh0CisgICAgYm9vbCBzdXJmYWNlbGVzc0NvbnRleHQ7CisKKyAgICAvLyBH
TF9BTkdMRV9jbGllbnRfYXJyYXlzCisgICAgYm9vbCBjbGllbnRBcnJheXM7CisKKyAgICAvLyBH
TF9BTkdMRV9yb2J1c3RfcmVzb3VyY2VfaW5pdGlhbGl6YXRpb24KKyAgICBib29sIHJvYnVzdFJl
c291cmNlSW5pdGlhbGl6YXRpb247CiB9OwogCiBzdHJ1Y3QgRXh0ZW5zaW9uSW5mbwogewotICAg
IC8vIElmIHRoaXMgZXh0ZW5zaW9uIGNhbiBiZSBlbmFibGVkIHdpdGggZ2xFbmFibGVFeHRlbnNp
b24gKEdMX0FOR0xFX3dlYmdsX2NvbXBhdGliaWxpdHkpCi0gICAgYm9vbCBFbmFibGVhYmxlID0g
ZmFsc2U7CisgICAgLy8gSWYgdGhpcyBleHRlbnNpb24gY2FuIGJlIGVuYWJsZWQgd2l0aCBnbFJl
cXVlc3RFeHRlbnNpb24gKEdMX0FOR0xFX3JlcXVlc3RfZXh0ZW5zaW9uKQorICAgIGJvb2wgUmVx
dWVzdGFibGUgPSBmYWxzZTsKIAogICAgIC8vIFBvaW50ZXIgdG8gYSBib29sZWFuIG1lbWJlciBv
ZiB0aGUgRXh0ZW5zaW9ucyBzdHJ1Y3QKICAgICB0eXBlZGVmIGJvb2woRXh0ZW5zaW9uczo6KkV4
dGVuc2lvbkJvb2wpOwpAQCAtMzY4LDExICs0MDIsMTIgQEAgc3RydWN0IFR5cGVQcmVjaXNpb24K
IAogICAgIHZvaWQgc2V0SUVFRUZsb2F0KCk7CiAgICAgdm9pZCBzZXRUd29zQ29tcGxlbWVudElu
dCh1bnNpZ25lZCBpbnQgYml0cyk7CisgICAgdm9pZCBzZXRTaW11bGF0ZWRGbG9hdCh1bnNpZ25l
ZCBpbnQgcmFuZ2UsIHVuc2lnbmVkIGludCBwcmVjaXNpb24pOwogICAgIHZvaWQgc2V0U2ltdWxh
dGVkSW50KHVuc2lnbmVkIGludCByYW5nZSk7CiAKICAgICB2b2lkIGdldChHTGludCAqcmV0dXJu
UmFuZ2UsIEdMaW50ICpyZXR1cm5QcmVjaXNpb24pIGNvbnN0OwogCi0gICAgR0xpbnQgcmFuZ2Vb
Ml07CisgICAgc3RkOjphcnJheTxHTGludCwgMj4gcmFuZ2U7CiAgICAgR0xpbnQgcHJlY2lzaW9u
OwogfTsKIApAQCAtNDA5LDcgKzQ0NCw3IEBAIHN0cnVjdCBDYXBzCiAKICAgICAvLyBFUyAzLjEg
KEFwcmlsIDI5LCAyMDE1KSBUYWJsZSAyMC40MTogSW1wbGVtZW50YXRpb24gZGVwZW5kZW50IHZh
bHVlcyAoY29udC4pCiAgICAgR0xpbnQgbWF4VmVydGV4QXR0cmliUmVsYXRpdmVPZmZzZXQ7Ci0g
ICAgR0xpbnQgbWF4VmVydGV4QXR0cmliQmluZGluZ3M7CisgICAgR0x1aW50IG1heFZlcnRleEF0
dHJpYkJpbmRpbmdzOwogICAgIEdMaW50IG1heFZlcnRleEF0dHJpYlN0cmlkZTsKICAgICBHTHVp
bnQgbWF4RWxlbWVudHNJbmRpY2VzOwogICAgIEdMdWludCBtYXhFbGVtZW50c1ZlcnRpY2VzOwpA
QCAtNTA0LDYgKzUzOSw3IEBAIHN0cnVjdCBDYXBzCiAgICAgR0x1aW50IG1heFNhbXBsZXM7CiB9
OwogCitDYXBzIEdlbmVyYXRlTWluaW11bUNhcHMoY29uc3QgVmVyc2lvbiAmY2xpZW50VmVyc2lv
bik7CiB9CiAKIG5hbWVzcGFjZSBlZ2wKQEAgLTUzMCw2ICs1NjYsOSBAQCBzdHJ1Y3QgRGlzcGxh
eUV4dGVuc2lvbnMKICAgICAvLyBFR0xfQU5HTEVfZDNkX3NoYXJlX2hhbmRsZV9jbGllbnRfYnVm
ZmVyCiAgICAgYm9vbCBkM2RTaGFyZUhhbmRsZUNsaWVudEJ1ZmZlcjsKIAorICAgIC8vIEVHTF9B
TkdMRV9kM2RfdGV4dHVyZV9jbGllbnRfYnVmZmVyCisgICAgYm9vbCBkM2RUZXh0dXJlQ2xpZW50
QnVmZmVyOworCiAgICAgLy8gRUdMX0FOR0xFX3N1cmZhY2VfZDNkX3RleHR1cmVfMmRfc2hhcmVf
aGFuZGxlCiAgICAgYm9vbCBzdXJmYWNlRDNEVGV4dHVyZTJEU2hhcmVIYW5kbGU7CiAKQEAgLTYw
Nyw2ICs2NDYsMjQgQEAgc3RydWN0IERpc3BsYXlFeHRlbnNpb25zCiAKICAgICAvLyBFR0xfQ0hS
T01JVU1fZ2V0X3N5bmNfdmFsdWVzCiAgICAgYm9vbCBnZXRTeW5jVmFsdWVzOworCisgICAgLy8g
RUdMX0VYVF9zd2FwX2J1ZmZlcnNfd2l0aF9kYW1hZ2UKKyAgICBib29sIHN3YXBCdWZmZXJzV2l0
aERhbWFnZTsKKworICAgIC8vIEVHTF9FWFRfcGl4ZWxfZm9ybWF0X2Zsb2F0CisgICAgYm9vbCBw
aXhlbEZvcm1hdEZsb2F0OworCisgICAgLy8gRUdMX0tIUl9zdXJmYWNlbGVzc19jb250ZXh0Cisg
ICAgYm9vbCBzdXJmYWNlbGVzc0NvbnRleHQ7CisKKyAgICAvLyBFR0xfQU5HTEVfZGlzcGxheV90
ZXh0dXJlX3NoYXJlX2dyb3VwCisgICAgYm9vbCBkaXNwbGF5VGV4dHVyZVNoYXJlR3JvdXA7CisK
KyAgICAvLyBFR0xfQU5HTEVfY3JlYXRlX2NvbnRleHRfY2xpZW50X2FycmF5cworICAgIGJvb2wg
Y3JlYXRlQ29udGV4dENsaWVudEFycmF5czsKKworICAgIC8vIEVHTF9BTkdMRV9jcmVhdGVfY29u
dGV4dF9yb2J1c3RfcmVzb3VyY2VfaW5pdGlhbGl6YXRpb24KKyAgICBib29sIGNyZWF0ZUNvbnRl
eHRSb2J1c3RSZXNvdXJjZUluaXRpYWxpemF0aW9uOwogfTsKIAogc3RydWN0IERldmljZUV4dGVu
c2lvbnMKQEAgLTY0OCw2ICs3MDUsOSBAQCBzdHJ1Y3QgQ2xpZW50RXh0ZW5zaW9ucwogICAgIC8v
IEVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9udWxsCiAgICAgYm9vbCBwbGF0Zm9ybUFOR0xFTlVM
TDsKIAorICAgIC8vIEVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV92dWxrYW4KKyAgICBib29sIHBs
YXRmb3JtQU5HTEVWdWxrYW47CisKICAgICAvLyBFR0xfQU5HTEVfZGV2aWNlX2NyZWF0aW9uCiAg
ICAgYm9vbCBkZXZpY2VDcmVhdGlvbjsKIApAQCAtNjY0LDYgKzcyNCw2IEBAIHN0cnVjdCBDbGll
bnRFeHRlbnNpb25zCiAgICAgYm9vbCBjbGllbnRHZXRBbGxQcm9jQWRkcmVzc2VzOwogfTsKIAot
fQorfSAgLy8gbmFtZXNwYWNlIGVnbAogCiAjZW5kaWYgLy8gTElCQU5HTEVfQ0FQU19IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbXBpbGVyLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db21waWxlci5jcHAKaW5k
ZXggYjc0NTg4OGYyNzUuLjIzODU0ZDJlNDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9Db21waWxlci5jcHAKQEAgLTE5LDMxICsxOSwzMyBAQCBuYW1l
c3BhY2UgZ2wKIG5hbWVzcGFjZQogewogCi0vLyBHbG9iYWwgY291bnQgb2YgYWN0aXZlIHNoYWRl
ciBjb21waWxlciBoYW5kbGVzLiBOZWVkZWQgdG8ga25vdyB3aGVuIHRvIGNhbGwgU2hJbml0aWFs
aXplIGFuZAotLy8gU2hGaW5hbGl6ZS4KKy8vIEdsb2JhbCBjb3VudCBvZiBhY3RpdmUgc2hhZGVy
IGNvbXBpbGVyIGhhbmRsZXMuIE5lZWRlZCB0byBrbm93IHdoZW4gdG8gY2FsbCBzaDo6SW5pdGlh
bGl6ZSBhbmQKKy8vIHNoOjpGaW5hbGl6ZS4KIHNpemVfdCBhY3RpdmVDb21waWxlckhhbmRsZXMg
PSAwOwogCi1TaFNoYWRlclNwZWMgU2VsZWN0U2hhZGVyU3BlYyhHTGludCBtYWpvclZlcnNpb24s
IEdMaW50IG1pbm9yVmVyc2lvbikKK1NoU2hhZGVyU3BlYyBTZWxlY3RTaGFkZXJTcGVjKEdMaW50
IG1ham9yVmVyc2lvbiwgR0xpbnQgbWlub3JWZXJzaW9uLCBib29sIGlzV2ViR0wpCiB7CiAgICAg
aWYgKG1ham9yVmVyc2lvbiA+PSAzKQogICAgIHsKICAgICAgICAgaWYgKG1pbm9yVmVyc2lvbiA9
PSAxKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU0hfR0xFUzNfMV9TUEVDOworICAg
ICAgICAgICAgcmV0dXJuIGlzV2ViR0wgPyBTSF9XRUJHTDNfU1BFQyA6IFNIX0dMRVMzXzFfU1BF
QzsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBTSF9HTEVTM19TUEVDOworICAgICAgICAgICAgcmV0dXJuIGlzV2ViR0wgPyBTSF9XRUJHTDJf
U1BFQyA6IFNIX0dMRVMzX1NQRUM7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIFNIX0dM
RVMyX1NQRUM7CisgICAgcmV0dXJuIGlzV2ViR0wgPyBTSF9XRUJHTF9TUEVDIDogU0hfR0xFUzJf
U1BFQzsKIH0KIAogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCiBDb21waWxlcjo6Q29tcGls
ZXIocng6OkdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LCBjb25zdCBDb250ZXh0U3RhdGUgJnN0
YXRlKQogICAgIDogbUltcGxlbWVudGF0aW9uKGltcGxGYWN0b3J5LT5jcmVhdGVDb21waWxlcigp
KSwKLSAgICAgIG1TcGVjKFNlbGVjdFNoYWRlclNwZWMoc3RhdGUuZ2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCksIHN0YXRlLmdldENsaWVudE1pbm9yVmVyc2lvbigpKSksCisgICAgICBtU3BlYyhTZWxl
Y3RTaGFkZXJTcGVjKHN0YXRlLmdldENsaWVudE1ham9yVmVyc2lvbigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0ZS5nZXRDbGllbnRNaW5vclZlcnNpb24oKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZ2V0RXh0ZW5zaW9ucygpLndlYmdsQ29tcGF0aWJp
bGl0eSkpLAogICAgICAgbU91dHB1dFR5cGUobUltcGxlbWVudGF0aW9uLT5nZXRUcmFuc2xhdG9y
T3V0cHV0VHlwZSgpKSwKICAgICAgIG1SZXNvdXJjZXMoKSwKICAgICAgIG1GcmFnbWVudENvbXBp
bGVyKG51bGxwdHIpLApAQCAtNTUsNyArNTcsNyBAQCBDb21waWxlcjo6Q29tcGlsZXIocng6OkdM
SW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LCBjb25zdCBDb250ZXh0U3RhdGUgJnN0YXRlKQogICAg
IGNvbnN0IGdsOjpDYXBzICZjYXBzICAgICAgICAgICAgID0gc3RhdGUuZ2V0Q2FwcygpOwogICAg
IGNvbnN0IGdsOjpFeHRlbnNpb25zICZleHRlbnNpb25zID0gc3RhdGUuZ2V0RXh0ZW5zaW9ucygp
OwogCi0gICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmbVJlc291cmNlcyk7CisgICAgc2g6Oklu
aXRCdWlsdEluUmVzb3VyY2VzKCZtUmVzb3VyY2VzKTsKICAgICBtUmVzb3VyY2VzLk1heFZlcnRl
eEF0dHJpYnMgICAgICAgICAgICAgPSBjYXBzLm1heFZlcnRleEF0dHJpYnV0ZXM7CiAgICAgbVJl
c291cmNlcy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyAgICAgID0gY2Fwcy5tYXhWZXJ0ZXhVbmlm
b3JtVmVjdG9yczsKICAgICBtUmVzb3VyY2VzLk1heFZhcnlpbmdWZWN0b3JzICAgICAgICAgICAg
PSBjYXBzLm1heFZhcnlpbmdWZWN0b3JzOwpAQCAtODAsMTMgKzgyLDE0IEBAIENvbXBpbGVyOjpD
b21waWxlcihyeDo6R0xJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksIGNvbnN0IENvbnRleHRTdGF0
ZSAmc3RhdGUpCiAgICAgbVJlc291cmNlcy5NaW5Qcm9ncmFtVGV4ZWxPZmZzZXQgICA9IGNhcHMu
bWluUHJvZ3JhbVRleGVsT2Zmc2V0OwogICAgIG1SZXNvdXJjZXMuTWF4UHJvZ3JhbVRleGVsT2Zm
c2V0ICAgPSBjYXBzLm1heFByb2dyYW1UZXhlbE9mZnNldDsKIAotICAgIC8vIEdMU0wgRVMgMy4x
IGNvbXB1dGUgc2hhZGVyIGNvbnN0YW50cworICAgIC8vIEdMU0wgRVMgMy4xIGNvbnN0YW50cwog
ICAgIG1SZXNvdXJjZXMuTWF4SW1hZ2VVbml0cyAgICAgICAgICAgICAgICAgICAgPSBjYXBzLm1h
eEltYWdlVW5pdHM7CiAgICAgbVJlc291cmNlcy5NYXhWZXJ0ZXhJbWFnZVVuaWZvcm1zICAgICAg
ICAgICA9IGNhcHMubWF4VmVydGV4SW1hZ2VVbmlmb3JtczsKICAgICBtUmVzb3VyY2VzLk1heEZy
YWdtZW50SW1hZ2VVbmlmb3JtcyAgICAgICAgID0gY2Fwcy5tYXhGcmFnbWVudEltYWdlVW5pZm9y
bXM7CiAgICAgbVJlc291cmNlcy5NYXhDb21wdXRlSW1hZ2VVbmlmb3JtcyAgICAgICAgICA9IGNh
cHMubWF4Q29tcHV0ZUltYWdlVW5pZm9ybXM7CiAgICAgbVJlc291cmNlcy5NYXhDb21iaW5lZElt
YWdlVW5pZm9ybXMgICAgICAgICA9IGNhcHMubWF4Q29tYmluZWRJbWFnZVVuaWZvcm1zOwogICAg
IG1SZXNvdXJjZXMuTWF4Q29tYmluZWRTaGFkZXJPdXRwdXRSZXNvdXJjZXMgPSBjYXBzLm1heENv
bWJpbmVkU2hhZGVyT3V0cHV0UmVzb3VyY2VzOworICAgIG1SZXNvdXJjZXMuTWF4VW5pZm9ybUxv
Y2F0aW9ucyAgICAgICAgICAgICAgPSBjYXBzLm1heFVuaWZvcm1Mb2NhdGlvbnM7CiAKICAgICBm
b3IgKHNpemVfdCBpbmRleCA9IDB1OyBpbmRleCA8IDN1OyArK2luZGV4KQogICAgIHsKQEAgLTEw
OCw2ICsxMTEsMTEgQEAgQ29tcGlsZXI6OkNvbXBpbGVyKHJ4OjpHTEltcGxGYWN0b3J5ICppbXBs
RmFjdG9yeSwgY29uc3QgQ29udGV4dFN0YXRlICZzdGF0ZSkKICAgICBtUmVzb3VyY2VzLk1heEZy
YWdtZW50QXRvbWljQ291bnRlckJ1ZmZlcnMgPSBjYXBzLm1heEZyYWdtZW50QXRvbWljQ291bnRl
ckJ1ZmZlcnM7CiAgICAgbVJlc291cmNlcy5NYXhDb21iaW5lZEF0b21pY0NvdW50ZXJCdWZmZXJz
ID0gY2Fwcy5tYXhDb21iaW5lZEF0b21pY0NvdW50ZXJCdWZmZXJzOwogICAgIG1SZXNvdXJjZXMu
TWF4QXRvbWljQ291bnRlckJ1ZmZlclNpemUgICAgICA9IGNhcHMubWF4QXRvbWljQ291bnRlckJ1
ZmZlclNpemU7CisKKyAgICBpZiAoc3RhdGUuZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPT0gMiAm
JiAhZXh0ZW5zaW9ucy5kcmF3QnVmZmVycykKKyAgICB7CisgICAgICAgIG1SZXNvdXJjZXMuTWF4
RHJhd0J1ZmZlcnMgPSAxOworICAgIH0KIH0KIAogQ29tcGlsZXI6On5Db21waWxlcigpCkBAIC0x
MjAsNyArMTI4LDcgQEAgRXJyb3IgQ29tcGlsZXI6OnJlbGVhc2UoKQogewogICAgIGlmIChtRnJh
Z21lbnRDb21waWxlcikKICAgICB7Ci0gICAgICAgIFNoRGVzdHJ1Y3QobUZyYWdtZW50Q29tcGls
ZXIpOworICAgICAgICBzaDo6RGVzdHJ1Y3QobUZyYWdtZW50Q29tcGlsZXIpOwogICAgICAgICBt
RnJhZ21lbnRDb21waWxlciA9IG51bGxwdHI7CiAKICAgICAgICAgQVNTRVJUKGFjdGl2ZUNvbXBp
bGVySGFuZGxlcyA+IDApOwpAQCAtMTI5LDcgKzEzNyw3IEBAIEVycm9yIENvbXBpbGVyOjpyZWxl
YXNlKCkKIAogICAgIGlmIChtVmVydGV4Q29tcGlsZXIpCiAgICAgewotICAgICAgICBTaERlc3Ry
dWN0KG1WZXJ0ZXhDb21waWxlcik7CisgICAgICAgIHNoOjpEZXN0cnVjdChtVmVydGV4Q29tcGls
ZXIpOwogICAgICAgICBtVmVydGV4Q29tcGlsZXIgPSBudWxscHRyOwogCiAgICAgICAgIEFTU0VS
VChhY3RpdmVDb21waWxlckhhbmRsZXMgPiAwKTsKQEAgLTEzOCw3ICsxNDYsNyBAQCBFcnJvciBD
b21waWxlcjo6cmVsZWFzZSgpCiAKICAgICBpZiAobUNvbXB1dGVDb21waWxlcikKICAgICB7Ci0g
ICAgICAgIFNoRGVzdHJ1Y3QobUNvbXB1dGVDb21waWxlcik7CisgICAgICAgIHNoOjpEZXN0cnVj
dChtQ29tcHV0ZUNvbXBpbGVyKTsKICAgICAgICAgbUNvbXB1dGVDb21waWxlciA9IG51bGxwdHI7
CiAKICAgICAgICAgQVNTRVJUKGFjdGl2ZUNvbXBpbGVySGFuZGxlcyA+IDApOwpAQCAtMTQ3LDEy
ICsxNTUsMTIgQEAgRXJyb3IgQ29tcGlsZXI6OnJlbGVhc2UoKQogCiAgICAgaWYgKGFjdGl2ZUNv
bXBpbGVySGFuZGxlcyA9PSAwKQogICAgIHsKLSAgICAgICAgU2hGaW5hbGl6ZSgpOworICAgICAg
ICBzaDo6RmluYWxpemUoKTsKICAgICB9CiAKICAgICBtSW1wbGVtZW50YXRpb24tPnJlbGVhc2Uo
KTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCiBTaEhhbmRsZSBDb21waWxlcjo6Z2V0Q29tcGlsZXJIYW5kbGUoR0xl
bnVtIHR5cGUpCkBAIC0xNzksMTAgKzE4NywxMSBAQCBTaEhhbmRsZSBDb21waWxlcjo6Z2V0Q29t
cGlsZXJIYW5kbGUoR0xlbnVtIHR5cGUpCiAgICAgewogICAgICAgICBpZiAoYWN0aXZlQ29tcGls
ZXJIYW5kbGVzID09IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIFNoSW5pdGlhbGl6ZSgpOwor
ICAgICAgICAgICAgc2g6OkluaXRpYWxpemUoKTsKICAgICAgICAgfQogCi0gICAgICAgICpjb21w
aWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIodHlwZSwgbVNwZWMsIG1PdXRwdXRUeXBlLCAmbVJl
c291cmNlcyk7CisgICAgICAgICpjb21waWxlciA9IHNoOjpDb25zdHJ1Y3RDb21waWxlcih0eXBl
LCBtU3BlYywgbU91dHB1dFR5cGUsICZtUmVzb3VyY2VzKTsKKyAgICAgICAgQVNTRVJUKCpjb21w
aWxlcik7CiAgICAgICAgIGFjdGl2ZUNvbXBpbGVySGFuZGxlcysrOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbmZpZy5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29uZmlnLmNwcAppbmRleCA4MjI1
MThlZjYxNS4uZTAyNjhkMDM4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9Db25maWcuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9Db25maWcuY3BwCkBAIC01OCw3ICs1OCw4IEBAIENvbmZpZzo6Q29uZmlnKCkK
ICAgICAgIHRyYW5zcGFyZW50UmVkVmFsdWUoMCksCiAgICAgICB0cmFuc3BhcmVudEdyZWVuVmFs
dWUoMCksCiAgICAgICB0cmFuc3BhcmVudEJsdWVWYWx1ZSgwKSwKLSAgICAgIG9wdGltYWxPcmll
bnRhdGlvbigwKQorICAgICAgb3B0aW1hbE9yaWVudGF0aW9uKDApLAorICAgICAgY29sb3JDb21w
b25lbnRUeXBlKEVHTF9DT0xPUl9DT01QT05FTlRfVFlQRV9GSVhFRF9FWFQpCiB7CiB9CiAKQEAg
LTEzNCw2ICsxMzUsMTAgQEAgY2xhc3MgQ29uZmlnU29ydGVyCiAgICAgICAgIHN0YXRpY19hc3Nl
cnQoRUdMX05PTkUgPCBFR0xfU0xPV19DT05GSUcgJiYgRUdMX1NMT1dfQ09ORklHIDwgRUdMX05P
Tl9DT05GT1JNQU5UX0NPTkZJRywgIlVuZXhwZWN0ZWQgRUdMIGVudW0gdmFsdWUuIik7CiAgICAg
ICAgIFNPUlQoY29uZmlnQ2F2ZWF0KTsKIAorICAgICAgICBzdGF0aWNfYXNzZXJ0KEVHTF9DT0xP
Ul9DT01QT05FTlRfVFlQRV9GSVhFRF9FWFQgPCBFR0xfQ09MT1JfQ09NUE9ORU5UX1RZUEVfRkxP
QVRfRVhULAorICAgICAgICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIG9yZGVyIG9mIEVHTCBl
bnVtcy4iKTsKKyAgICAgICAgU09SVChjb2xvckNvbXBvbmVudFR5cGUpOworCiAgICAgICAgIHN0
YXRpY19hc3NlcnQoRUdMX1JHQl9CVUZGRVIgPCBFR0xfTFVNSU5BTkNFX0JVRkZFUiwgIlVuZXhw
ZWN0ZWQgRUdMIGVudW0gdmFsdWUuIik7CiAgICAgICAgIFNPUlQoY29sb3JCdWZmZXJUeXBlKTsK
IApAQCAtMjU1LDYgKzI2MCw5IEBAIHN0ZDo6dmVjdG9yPGNvbnN0IENvbmZpZyo+IENvbmZpZ1Nl
dDo6ZmlsdGVyKGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlidXRlTWFwKSBjCiAgICAgICAgICAg
ICAgIGNhc2UgRUdMX09QVElNQUxfU1VSRkFDRV9PUklFTlRBVElPTl9BTkdMRToKICAgICAgICAg
ICAgICAgICAgIG1hdGNoID0gY29uZmlnLm9wdGltYWxPcmllbnRhdGlvbiA9PSBhdHRyaWJ1dGVW
YWx1ZTsKICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEVHTF9D
T0xPUl9DT01QT05FTlRfVFlQRV9FWFQ6CisgICAgICAgICAgICAgICAgICBtYXRjaCA9IGNvbmZp
Zy5jb2xvckNvbXBvbmVudFR5cGUgPT0gc3RhdGljX2Nhc3Q8RUdMZW51bT4oYXR0cmlidXRlVmFs
dWUpOworICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGRlZmF1bHQ6IFVO
UkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db25maWcuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9Db25maWcuaAppbmRleCAwMGY1NjczYjU5Ni4uZmIwMTQ3ZTY5OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db25maWcuaAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29uZmlnLmgKQEAgLTY1
LDYgKzY1LDcgQEAgc3RydWN0IENvbmZpZwogICAgIEVHTGludCB0cmFuc3BhcmVudEdyZWVuVmFs
dWU7ICAgLy8gVHJhbnNwYXJlbnQgZ3JlZW4gdmFsdWUKICAgICBFR0xpbnQgdHJhbnNwYXJlbnRC
bHVlVmFsdWU7ICAgIC8vIFRyYW5zcGFyZW50IGJsdWUgdmFsdWUKICAgICBFR0xpbnQgb3B0aW1h
bE9yaWVudGF0aW9uOyAgICAgIC8vIE9wdGltYWwgd2luZG93IHN1cmZhY2Ugb3JpZW50YXRpb24K
KyAgICBFR0xlbnVtIGNvbG9yQ29tcG9uZW50VHlwZTsgICAgIC8vIENvbG9yIGNvbXBvbmVudCB0
eXBlCiB9OwogCiBjbGFzcyBDb25maWdTZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9Db25zdGFudHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9Db25zdGFudHMuaAppbmRleCBkYzhmOTU1NWI4My4uZjlhMDI3OTk3M2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db25zdGFu
dHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29uc3RhbnRz
LmgKQEAgLTE0LDMxICsxNCwzMyBAQCBuYW1lc3BhY2UgZ2wKIAogZW51bQogewotICAgIE1BWF9W
RVJURVhfQVRUUklCUyA9IDE2LAorICAgIE1BWF9WRVJURVhfQVRUUklCUyAgICAgICAgID0gMTYs
CisgICAgTUFYX1ZFUlRFWF9BVFRSSUJfQklORElOR1MgPSAxNiwKIAogICAgIC8vIEltcGxlbWVu
dGF0aW9uIHVwcGVyIGxpbWl0cywgcmVhbCBtYXhpbXVtcyBkZXBlbmQgb24gdGhlIGhhcmR3YXJl
CiAgICAgSU1QTEVNRU5UQVRJT05fTUFYX1ZBUllJTkdfVkVDVE9SUyA9IDMyLAotICAgIElNUExF
TUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlMgPSA4LAotICAgIElNUExFTUVOVEFUSU9OX01BWF9G
UkFNRUJVRkZFUl9BVFRBQ0hNRU5UUyA9IElNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlMg
KyAyLCAvLyAyIGV4dHJhIGZvciBkZXB0aCBhbmQvb3Igc3RlbmNpbCBidWZmZXJzCisgICAgSU1Q
TEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUyAgICA9IDgsCisgICAgSU1QTEVNRU5UQVRJT05f
TUFYX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRTID0KKyAgICAgICAgSU1QTEVNRU5UQVRJT05fTUFY
X0RSQVdfQlVGRkVSUyArIDIsICAvLyAyIGV4dHJhIGZvciBkZXB0aCBhbmQvb3Igc3RlbmNpbCBi
dWZmZXJzCiAKLSAgICBJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1NIQURFUl9VTklGT1JNX0JV
RkZFUlMgPSAxNiwKKyAgICBJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1NIQURFUl9VTklGT1JN
X0JVRkZFUlMgICA9IDE2LAogICAgIElNUExFTUVOVEFUSU9OX01BWF9GUkFHTUVOVF9TSEFERVJf
VU5JRk9STV9CVUZGRVJTID0gMTYsCi0gICAgSU1QTEVNRU5UQVRJT05fTUFYX0NPTUJJTkVEX1NI
QURFUl9VTklGT1JNX0JVRkZFUlMgPSBJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1NIQURFUl9V
TklGT1JNX0JVRkZFUlMgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgSU1QTEVNRU5UQVRJT05fTUFYX0ZSQUdNRU5UX1NIQURFUl9VTklG
T1JNX0JVRkZFUlMsCisgICAgSU1QTEVNRU5UQVRJT05fTUFYX0NPTUJJTkVEX1NIQURFUl9VTklG
T1JNX0JVRkZFUlMgPQorICAgICAgICBJTVBMRU1FTlRBVElPTl9NQVhfVkVSVEVYX1NIQURFUl9V
TklGT1JNX0JVRkZFUlMgKworICAgICAgICBJTVBMRU1FTlRBVElPTl9NQVhfRlJBR01FTlRfU0hB
REVSX1VOSUZPUk1fQlVGRkVSUywKIAogICAgIElNUExFTUVOVEFUSU9OX01BWF9UUkFOU0ZPUk1f
RkVFREJBQ0tfQlVGRkVSUyA9IDQsCiAKICAgICAvLyBUaGVzZSBhcmUgdGhlIG1heGltdW1zIHRo
ZSBpbXBsZW1lbnRhdGlvbiBjYW4gc3VwcG9ydAogICAgIC8vIFRoZSBhY3R1YWwgR0wgY2FwcyBh
cmUgbGltaXRlZCBieSB0aGUgZGV2aWNlIGNhcHMKICAgICAvLyBhbmQgc2hvdWxkIGJlIHF1ZXJp
ZWQgZnJvbSB0aGUgQ29udGV4dAotICAgIElNUExFTUVOVEFUSU9OX01BWF8yRF9URVhUVVJFX1NJ
WkUgPSAxNjM4NCwKLSAgICBJTVBMRU1FTlRBVElPTl9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpF
ID0gMTYzODQsCi0gICAgSU1QTEVNRU5UQVRJT05fTUFYXzNEX1RFWFRVUkVfU0laRSA9IDIwNDgs
CisgICAgSU1QTEVNRU5UQVRJT05fTUFYXzJEX1RFWFRVUkVfU0laRSAgICAgICAgID0gMTYzODQs
CisgICAgSU1QTEVNRU5UQVRJT05fTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRSAgID0gMTYzODQs
CisgICAgSU1QTEVNRU5UQVRJT05fTUFYXzNEX1RFWFRVUkVfU0laRSAgICAgICAgID0gMjA0OCwK
ICAgICBJTVBMRU1FTlRBVElPTl9NQVhfMkRfQVJSQVlfVEVYVFVSRV9MQVlFUlMgPSAyMDQ4LAog
Ci0gICAgSU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTID0gMTUgICAvLyAxK2xvZzIg
b2YgTUFYX1RFWFRVUkVfU0laRQorICAgIElNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX0xFVkVM
UyA9IDE1ICAvLyAxK2xvZzIgb2YgTUFYX1RFWFRVUkVfU0laRQogfTsKLQogfQogCiAjZW5kaWYg
Ly8gTElCQU5HTEVfQ09OU1RBTlRTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvQ29udGV4dC5jcHAKaW5kZXggYTZhYjQ3MmViMzEuLmY1OTliMDc1OTAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dC5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHQuY3Bw
CkBAIC0xNywxNSArMTcsMTYgQEAKICNpbmNsdWRlICJjb21tb24vbWF0cml4X3V0aWxzLmgiCiAj
aW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCiAjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5o
IgorI2luY2x1ZGUgImNvbW1vbi92ZXJzaW9uLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQnVmZmVy
LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ29tcGlsZXIuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9E
aXNwbGF5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRmVuY2UuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9GcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVu
dC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1BhdGguaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Qcm9n
cmFtLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUXVlcnkuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9x
dWVyeXV0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUmVuZGVyYnVmZmVyLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvU2FtcGxl
ci5oIgpAQCAtNDUsNyArNDYsNyBAQCBuYW1lc3BhY2UKIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci1zdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiBHYXRoZXJQYXRocyhnbDo6UmVzb3VyY2VNYW5h
Z2VyICZyZXNvdXJjZU1hbmFnZXIsCitzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiBHYXRoZXJQYXRo
cyhnbDo6UGF0aE1hbmFnZXIgJnJlc291cmNlTWFuYWdlciwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgbnVtUGF0aHMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRocywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBwYXRoQmFzZSkKQEAgLTY1LDcgKzY2LDcgQEAgc3RkOjp2ZWN0
b3I8Z2w6OlBhdGggKj4gR2F0aGVyUGF0aHMoZ2w6OlJlc291cmNlTWFuYWdlciAmcmVzb3VyY2VN
YW5hZ2VyLAogICAgIHJldHVybiByZXQ7CiB9CiAKLXN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+IEdh
dGhlclBhdGhzKGdsOjpSZXNvdXJjZU1hbmFnZXIgJnJlc291cmNlTWFuYWdlciwKK3N0ZDo6dmVj
dG9yPGdsOjpQYXRoICo+IEdhdGhlclBhdGhzKGdsOjpQYXRoTWFuYWdlciAmcmVzb3VyY2VNYW5h
Z2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1QYXRo
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwYXRoTmFtZVR5
cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwYXRo
cywKQEAgLTE0OSw2ICsxNTAsMTEgQEAgRUdMaW50IEdldENsaWVudE1pbm9yVmVyc2lvbihjb25z
dCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RUdM
aW50PihhdHRyaWJzLmdldChFR0xfQ09OVEVYVF9NSU5PUl9WRVJTSU9OLCAwKSk7CiB9CiAKK2ds
OjpWZXJzaW9uIEdldENsaWVudFZlcnNpb24oY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJp
YnMpCit7CisgICAgcmV0dXJuIGdsOjpWZXJzaW9uKEdldENsaWVudE1ham9yVmVyc2lvbihhdHRy
aWJzKSwgR2V0Q2xpZW50TWlub3JWZXJzaW9uKGF0dHJpYnMpKTsKK30KKwogR0xlbnVtIEdldFJl
c2V0U3RyYXRlZ3koY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7CiAgICAgRUdM
QXR0cmliIGF0dHJpYiA9IGF0dHJpYnMuZ2V0KEVHTF9DT05URVhUX09QRU5HTF9SRVNFVF9OT1RJ
RklDQVRJT05fU1RSQVRFR1lfRVhULApAQCAtMTY3LDEyICsxNzMsMTUgQEAgR0xlbnVtIEdldFJl
c2V0U3RyYXRlZ3koY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiAKIGJvb2wgR2V0
Um9idXN0QWNjZXNzKGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewotICAgIHJl
dHVybiAoYXR0cmlicy5nZXQoRUdMX0NPTlRFWFRfT1BFTkdMX1JPQlVTVF9BQ0NFU1NfRVhULCBF
R0xfRkFMU0UpID09IEVHTF9UUlVFKTsKKyAgICByZXR1cm4gKGF0dHJpYnMuZ2V0KEVHTF9DT05U
RVhUX09QRU5HTF9ST0JVU1RfQUNDRVNTX0VYVCwgRUdMX0ZBTFNFKSA9PSBFR0xfVFJVRSkgfHwK
KyAgICAgICAgICAgKChhdHRyaWJzLmdldChFR0xfQ09OVEVYVF9GTEFHU19LSFIsIDApICYgRUdM
X0NPTlRFWFRfT1BFTkdMX1JPQlVTVF9BQ0NFU1NfQklUX0tIUikgIT0KKyAgICAgICAgICAgIDAp
OwogfQogCiBib29sIEdldERlYnVnKGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQog
ewotICAgIHJldHVybiAoYXR0cmlicy5nZXQoRUdMX0NPTlRFWFRfT1BFTkdMX0RFQlVHLCBFR0xf
RkFMU0UpID09IEVHTF9UUlVFKTsKKyAgICByZXR1cm4gKGF0dHJpYnMuZ2V0KEVHTF9DT05URVhU
X09QRU5HTF9ERUJVRywgRUdMX0ZBTFNFKSA9PSBFR0xfVFJVRSkgfHwKKyAgICAgICAgICAgKChh
dHRyaWJzLmdldChFR0xfQ09OVEVYVF9GTEFHU19LSFIsIDApICYgRUdMX0NPTlRFWFRfT1BFTkdM
X0RFQlVHX0JJVF9LSFIpICE9IDApOwogfQogCiBib29sIEdldE5vRXJyb3IoY29uc3QgZWdsOjpB
dHRyaWJ1dGVNYXAgJmF0dHJpYnMpCkBAIC0xOTAsNiArMTk5LDE2IEBAIGJvb2wgR2V0QmluZEdl
bmVyYXRlc1Jlc291cmNlKGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogICAgIHJl
dHVybiAoYXR0cmlicy5nZXQoRUdMX0NPTlRFWFRfQklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hS
T01JVU0sIEVHTF9UUlVFKSA9PSBFR0xfVFJVRSk7CiB9CiAKK2Jvb2wgR2V0Q2xpZW50QXJyYXlz
RW5hYmxlZChjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKK3sKKyAgICByZXR1cm4g
KGF0dHJpYnMuZ2V0KEVHTF9DT05URVhUX0NMSUVOVF9BUlJBWVNfRU5BQkxFRF9BTkdMRSwgRUdM
X1RSVUUpID09IEVHTF9UUlVFKTsKK30KKworYm9vbCBHZXRSb2J1c3RSZXNvdXJjZUluaXQoY29u
c3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCit7CisgICAgcmV0dXJuIChhdHRyaWJzLmdl
dChFR0xfQ09OVEVYVF9ST0JVU1RfUkVTT1VSQ0VfSU5JVElBTElaQVRJT05fQU5HTEUsIEVHTF9G
QUxTRSkgPT0gRUdMX1RSVUUpOworfQorCiBzdGQ6OnN0cmluZyBHZXRPYmplY3RMYWJlbEZyb21Q
b2ludGVyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKmxhYmVsKQogewogICAgIHN0ZDo6
c3RyaW5nIGxhYmVsTmFtZTsKQEAgLTIyOCwyMSArMjQ3LDIxIEBAIG5hbWVzcGFjZSBnbAogQ29u
dGV4dDo6Q29udGV4dChyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAogICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAogICAgICAgICAgICAgICAgICBjb25z
dCBDb250ZXh0ICpzaGFyZUNvbnRleHQsCi0gICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0
cmlidXRlTWFwICZhdHRyaWJzKQorICAgICAgICAgICAgICAgICBUZXh0dXJlTWFuYWdlciAqc2hh
cmVUZXh0dXJlcywKKyAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0
dHJpYnMsCisgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgJmRp
c3BsYXlFeHRlbnNpb25zKQogCi0gICAgOiBWYWxpZGF0aW9uQ29udGV4dChHZXRDbGllbnRNYWpv
clZlcnNpb24oYXR0cmlicyksCi0gICAgICAgICAgICAgICAgICAgICAgICBHZXRDbGllbnRNaW5v
clZlcnNpb24oYXR0cmlicyksCisgICAgOiBWYWxpZGF0aW9uQ29udGV4dChzaGFyZUNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZVRleHR1cmVzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgR2V0Q2xpZW50VmVyc2lvbihhdHRyaWJzKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICZtR0xTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIG1DYXBzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgbVRleHR1cmVDYXBzLAogICAgICAgICAgICAgICAgICAgICAgICAgbUV4
dGVuc2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgbUxpbWl0YXRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgR2V0Tm9F
cnJvcihhdHRyaWJzKSksCiAgICAgICBtSW1wbGVtZW50YXRpb24oaW1wbEZhY3RvcnktPmNyZWF0
ZUNvbnRleHQobVN0YXRlKSksCiAgICAgICBtQ29tcGlsZXIobnVsbHB0ciksCi0gICAgICBtQ2xp
ZW50TWFqb3JWZXJzaW9uKEdldENsaWVudE1ham9yVmVyc2lvbihhdHRyaWJzKSksCi0gICAgICBt
Q2xpZW50TWlub3JWZXJzaW9uKEdldENsaWVudE1pbm9yVmVyc2lvbihhdHRyaWJzKSksCiAgICAg
ICBtQ29uZmlnKGNvbmZpZyksCiAgICAgICBtQ2xpZW50VHlwZShFR0xfT1BFTkdMX0VTX0FQSSks
CiAgICAgICBtSGFzQmVlbkN1cnJlbnQoZmFsc2UpLApAQCAtMjUyLDMwICsyNzEsMjQgQEAgQ29u
dGV4dDo6Q29udGV4dChyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAogICAgICAgbVJl
c2V0U3RyYXRlZ3koR2V0UmVzZXRTdHJhdGVneShhdHRyaWJzKSksCiAgICAgICBtUm9idXN0QWNj
ZXNzKEdldFJvYnVzdEFjY2VzcyhhdHRyaWJzKSksCiAgICAgICBtQ3VycmVudFN1cmZhY2UobnVs
bHB0ciksCi0gICAgICBtUmVzb3VyY2VNYW5hZ2VyKG51bGxwdHIpCisgICAgICBtU3VyZmFjZWxl
c3NGcmFtZWJ1ZmZlcihudWxscHRyKSwKKyAgICAgIG1XZWJHTENvbnRleHQoR2V0V2ViR0xDb250
ZXh0KGF0dHJpYnMpKSwKKyAgICAgIG1TY3JhdGNoQnVmZmVyKDEwMDB1KQogewotICAgIEFTU0VS
VCghbVJvYnVzdEFjY2Vzcyk7ICAvLyBVbmltcGxlbWVudGVkCisgICAgaWYgKG1Sb2J1c3RBY2Nl
c3MpCisgICAgeworICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQogCi0gICAgaW5pdENh
cHMoR2V0V2ViR0xDb250ZXh0KGF0dHJpYnMpKTsKKyAgICBpbml0Q2FwcyhkaXNwbGF5RXh0ZW5z
aW9ucyk7CiAgICAgaW5pdFdvcmthcm91bmRzKCk7CiAKLSAgICBtR0xTdGF0ZS5pbml0aWFsaXpl
KG1DYXBzLCBtRXh0ZW5zaW9ucywgbUNsaWVudE1ham9yVmVyc2lvbiwgR2V0RGVidWcoYXR0cmli
cyksCi0gICAgICAgICAgICAgICAgICAgICAgICBHZXRCaW5kR2VuZXJhdGVzUmVzb3VyY2UoYXR0
cmlicykpOworICAgIG1HTFN0YXRlLmluaXRpYWxpemUobUNhcHMsIG1FeHRlbnNpb25zLCBnZXRD
bGllbnRWZXJzaW9uKCksIEdldERlYnVnKGF0dHJpYnMpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgR2V0QmluZEdlbmVyYXRlc1Jlc291cmNlKGF0dHJpYnMpLCBHZXRDbGllbnRBcnJheXNFbmFi
bGVkKGF0dHJpYnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgR2V0Um9idXN0UmVzb3VyY2VJ
bml0KGF0dHJpYnMpKTsKIAogICAgIG1GZW5jZU5WSGFuZGxlQWxsb2NhdG9yLnNldEJhc2VIYW5k
bGUoMCk7CiAKLSAgICBpZiAoc2hhcmVDb250ZXh0ICE9IG51bGxwdHIpCi0gICAgewotICAgICAg
ICBtUmVzb3VyY2VNYW5hZ2VyID0gc2hhcmVDb250ZXh0LT5tUmVzb3VyY2VNYW5hZ2VyOwotICAg
ICAgICBtUmVzb3VyY2VNYW5hZ2VyLT5hZGRSZWYoKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsK
LSAgICAgICAgbVJlc291cmNlTWFuYWdlciA9IG5ldyBSZXNvdXJjZU1hbmFnZXIoKTsKLSAgICB9
Ci0KLSAgICBtU3RhdGUubVJlc291cmNlTWFuYWdlciA9IG1SZXNvdXJjZU1hbmFnZXI7Ci0KICAg
ICAvLyBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiAzLjcgcGFnZSA4MzoKICAgICAvLyBJbiB0
aGUgaW5pdGlhbCBzdGF0ZSwgVEVYVFVSRV8yRCBhbmQgVEVYVFVSRV9DVUJFX01BUCBoYXZlIHR3
b2RpbWVuc2lvbmFsCiAgICAgLy8gYW5kIGN1YmUgbWFwIHRleHR1cmUgc3RhdGUgdmVjdG9ycyBy
ZXNwZWN0aXZlbHkgYXNzb2NpYXRlZCB3aXRoIHRoZW0uCkBAIC0yODgsNyArMzAxLDcgQEAgQ29u
dGV4dDo6Q29udGV4dChyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAogICAgIFRleHR1
cmUgKnplcm9UZXh0dXJlQ3ViZSA9IG5ldyBUZXh0dXJlKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwg
MCwgR0xfVEVYVFVSRV9DVUJFX01BUCk7CiAgICAgbVplcm9UZXh0dXJlc1tHTF9URVhUVVJFX0NV
QkVfTUFQXS5zZXQoemVyb1RleHR1cmVDdWJlKTsKIAotICAgIGlmIChtQ2xpZW50TWFqb3JWZXJz
aW9uID49IDMpCisgICAgaWYgKGdldENsaWVudFZlcnNpb24oKSA+PSBWZXJzaW9uKDMsIDApKQog
ICAgIHsKICAgICAgICAgLy8gVE9ETzogVGhlc2UgY291bGQgYWxzbyBiZSBlbmFibGVkIHZpYSBl
eHRlbnNpb24KICAgICAgICAgVGV4dHVyZSAqemVyb1RleHR1cmUzRCA9IG5ldyBUZXh0dXJlKG1J
bXBsZW1lbnRhdGlvbi5nZXQoKSwgMCwgR0xfVEVYVFVSRV8zRCk7CkBAIC0yOTcsNiArMzEwLDI0
IEBAIENvbnRleHQ6OkNvbnRleHQocng6OkVHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwKICAg
ICAgICAgVGV4dHVyZSAqemVyb1RleHR1cmUyREFycmF5ID0gbmV3IFRleHR1cmUobUltcGxlbWVu
dGF0aW9uLmdldCgpLCAwLCBHTF9URVhUVVJFXzJEX0FSUkFZKTsKICAgICAgICAgbVplcm9UZXh0
dXJlc1tHTF9URVhUVVJFXzJEX0FSUkFZXS5zZXQoemVyb1RleHR1cmUyREFycmF5KTsKICAgICB9
CisgICAgaWYgKGdldENsaWVudFZlcnNpb24oKSA+PSBWZXJzaW9uKDMsIDEpKQorICAgIHsKKyAg
ICAgICAgVGV4dHVyZSAqemVyb1RleHR1cmUyRE11bHRpc2FtcGxlID0KKyAgICAgICAgICAgIG5l
dyBUZXh0dXJlKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgMCwgR0xfVEVYVFVSRV8yRF9NVUxUSVNB
TVBMRSk7CisgICAgICAgIG1aZXJvVGV4dHVyZXNbR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRV0u
c2V0KHplcm9UZXh0dXJlMkRNdWx0aXNhbXBsZSk7CisKKyAgICAgICAgYmluZEdlbmVyaWNBdG9t
aWNDb3VudGVyQnVmZmVyKDApOworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IG1DYXBzLm1heEF0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5nczsgaSsrKQorICAgICAgICB7Cisg
ICAgICAgICAgICBiaW5kSW5kZXhlZEF0b21pY0NvdW50ZXJCdWZmZXIoMCwgaSwgMCwgMCk7Cisg
ICAgICAgIH0KKworICAgICAgICBiaW5kR2VuZXJpY1NoYWRlclN0b3JhZ2VCdWZmZXIoMCk7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbUNhcHMubWF4U2hhZGVyU3RvcmFn
ZUJ1ZmZlckJpbmRpbmdzOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGJpbmRJbmRleGVk
U2hhZGVyU3RvcmFnZUJ1ZmZlcigwLCBpLCAwLCAwKTsKKyAgICAgICAgfQorICAgIH0KIAogICAg
IGlmIChtRXh0ZW5zaW9ucy5lZ2xJbWFnZUV4dGVybmFsIHx8IG1FeHRlbnNpb25zLmVnbFN0cmVh
bUNvbnN1bWVyRXh0ZXJuYWwpCiAgICAgewpAQCAtMzA5LDEyICszNDAsMTMgQEAgQ29udGV4dDo6
Q29udGV4dChyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAogCiAgICAgYmluZFZlcnRl
eEFycmF5KDApOwogICAgIGJpbmRBcnJheUJ1ZmZlcigwKTsKKyAgICBiaW5kRHJhd0luZGlyZWN0
QnVmZmVyKDApOwogICAgIGJpbmRFbGVtZW50QXJyYXlCdWZmZXIoMCk7CiAKLSAgICBiaW5kUmVu
ZGVyYnVmZmVyKDApOworICAgIGJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCAwKTsK
IAogICAgIGJpbmRHZW5lcmljVW5pZm9ybUJ1ZmZlcigwKTsKLSAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMDsgaSA8IG1DYXBzLm1heENvbWJpbmVkVW5pZm9ybUJsb2NrczsgaSsrKQorICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbUNhcHMubWF4VW5pZm9ybUJ1ZmZlckJpbmRpbmdz
OyBpKyspCiAgICAgewogICAgICAgICBiaW5kSW5kZXhlZFVuaWZvcm1CdWZmZXIoMCwgaSwgMCwg
LTEpOwogICAgIH0KQEAgLTMyNCw3ICszNTYsNyBAQCBDb250ZXh0OjpDb250ZXh0KHJ4OjpFR0xJ
bXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksCiAgICAgYmluZFBpeGVsUGFja0J1ZmZlcigwKTsKICAg
ICBiaW5kUGl4ZWxVbnBhY2tCdWZmZXIoMCk7CiAKLSAgICBpZiAobUNsaWVudE1ham9yVmVyc2lv
biA+PSAzKQorICAgIGlmIChnZXRDbGllbnRWZXJzaW9uKCkgPj0gVmVyc2lvbigzLCAwKSkKICAg
ICB7CiAgICAgICAgIC8vIFtPcGVuR0wgRVMgMy4wLjJdIHNlY3Rpb24gMi4xNC4xIHBnIDg1Ogog
ICAgICAgICAvLyBJbiB0aGUgaW5pdGlhbCBzdGF0ZSwgYSBkZWZhdWx0IHRyYW5zZm9ybSBmZWVk
YmFjayBvYmplY3QgaXMgYm91bmQgYW5kIHRyZWF0ZWQgYXMKQEAgLTM3MCwyNCArNDAyLDE2IEBA
IENvbnRleHQ6OkNvbnRleHQocng6OkVHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwKIAogICAg
IG1CbGl0RGlydHlCaXRzLnNldChTdGF0ZTo6RElSVFlfQklUX1NDSVNTT1JfVEVTVF9FTkFCTEVE
KTsKICAgICBtQmxpdERpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9TQ0lTU09SKTsKKyAg
ICBtQmxpdERpcnR5Qml0cy5zZXQoU3RhdGU6OkRJUlRZX0JJVF9GUkFNRUJVRkZFUl9TUkdCKTsK
ICAgICBtQmxpdERpcnR5T2JqZWN0cy5zZXQoU3RhdGU6OkRJUlRZX09CSkVDVF9SRUFEX0ZSQU1F
QlVGRkVSKTsKICAgICBtQmxpdERpcnR5T2JqZWN0cy5zZXQoU3RhdGU6OkRJUlRZX09CSkVDVF9E
UkFXX0ZSQU1FQlVGRkVSKTsKIAogICAgIGhhbmRsZUVycm9yKG1JbXBsZW1lbnRhdGlvbi0+aW5p
dGlhbGl6ZSgpKTsKIH0KIAotQ29udGV4dDo6fkNvbnRleHQoKQordm9pZCBDb250ZXh0OjpkZXN0
cm95KGVnbDo6RGlzcGxheSAqZGlzcGxheSkKIHsKLSAgICBtR0xTdGF0ZS5yZXNldCgpOwotCi0g
ICAgZm9yIChhdXRvIGZyYW1lYnVmZmVyIDogbUZyYW1lYnVmZmVyTWFwKQotICAgIHsKLSAgICAg
ICAgLy8gRGVmYXVsdCBmcmFtZWJ1ZmZlciBhcmUgb3duZWQgYnkgdGhlaXIgcmVzcGVjdGl2ZSBT
dXJmYWNlCi0gICAgICAgIGlmIChmcmFtZWJ1ZmZlci5zZWNvbmQgIT0gbnVsbHB0ciAmJiBmcmFt
ZWJ1ZmZlci5zZWNvbmQtPmlkKCkgIT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgU2FmZURl
bGV0ZShmcmFtZWJ1ZmZlci5zZWNvbmQpOwotICAgICAgICB9Ci0gICAgfQorICAgIG1HTFN0YXRl
LnJlc2V0KHRoaXMpOwogCiAgICAgZm9yIChhdXRvIGZlbmNlIDogbUZlbmNlTlZNYXApCiAgICAg
ewpAQCAtNDExLDcgKzQzNSw3IEBAIENvbnRleHQ6On5Db250ZXh0KCkKICAgICB7CiAgICAgICAg
IGlmICh0cmFuc2Zvcm1GZWVkYmFjay5zZWNvbmQgIT0gbnVsbHB0cikKICAgICAgICAgewotICAg
ICAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2suc2Vjb25kLT5yZWxlYXNlKCk7CisgICAgICAgICAg
ICB0cmFuc2Zvcm1GZWVkYmFjay5zZWNvbmQtPnJlbGVhc2UodGhpcyk7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTQyMSwzMCArNDQ1LDQ0IEBAIENvbnRleHQ6On5Db250ZXh0KCkKICAgICB9CiAg
ICAgbVplcm9UZXh0dXJlcy5jbGVhcigpOwogCi0gICAgaWYgKG1DdXJyZW50U3VyZmFjZSAhPSBu
dWxscHRyKQotICAgIHsKLSAgICAgICAgcmVsZWFzZVN1cmZhY2UoKTsKLSAgICB9CisgICAgU2Fm
ZURlbGV0ZShtU3VyZmFjZWxlc3NGcmFtZWJ1ZmZlcik7CiAKLSAgICBpZiAobVJlc291cmNlTWFu
YWdlcikKLSAgICB7Ci0gICAgICAgIG1SZXNvdXJjZU1hbmFnZXItPnJlbGVhc2UoKTsKLSAgICB9
CisgICAgcmVsZWFzZVN1cmZhY2UoZGlzcGxheSk7CiAKICAgICBTYWZlRGVsZXRlKG1Db21waWxl
cik7CisKKyAgICBtU3RhdGUubUJ1ZmZlcnMtPnJlbGVhc2UodGhpcyk7CisgICAgbVN0YXRlLm1T
aGFkZXJQcm9ncmFtcy0+cmVsZWFzZSh0aGlzKTsKKyAgICBtU3RhdGUubVRleHR1cmVzLT5yZWxl
YXNlKHRoaXMpOworICAgIG1TdGF0ZS5tUmVuZGVyYnVmZmVycy0+cmVsZWFzZSh0aGlzKTsKKyAg
ICBtU3RhdGUubVNhbXBsZXJzLT5yZWxlYXNlKHRoaXMpOworICAgIG1TdGF0ZS5tRmVuY2VTeW5j
cy0+cmVsZWFzZSh0aGlzKTsKKyAgICBtU3RhdGUubVBhdGhzLT5yZWxlYXNlKHRoaXMpOworICAg
IG1TdGF0ZS5tRnJhbWVidWZmZXJzLT5yZWxlYXNlKHRoaXMpOwogfQogCi12b2lkIENvbnRleHQ6
Om1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKK0NvbnRleHQ6On5Db250ZXh0KCkK
IHsKLSAgICBBU1NFUlQoc3VyZmFjZSAhPSBudWxscHRyKTsKK30KIAordm9pZCBDb250ZXh0Ojpt
YWtlQ3VycmVudChlZ2w6OkRpc3BsYXkgKmRpc3BsYXksIGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkK
K3sKICAgICBpZiAoIW1IYXNCZWVuQ3VycmVudCkKICAgICB7CiAgICAgICAgIGluaXRSZW5kZXJl
clN0cmluZygpOworICAgICAgICBpbml0VmVyc2lvblN0cmluZ3MoKTsKICAgICAgICAgaW5pdEV4
dGVuc2lvblN0cmluZ3MoKTsKIAotICAgICAgICBtR0xTdGF0ZS5zZXRWaWV3cG9ydFBhcmFtcygw
LCAwLCBzdXJmYWNlLT5nZXRXaWR0aCgpLCBzdXJmYWNlLT5nZXRIZWlnaHQoKSk7Ci0gICAgICAg
IG1HTFN0YXRlLnNldFNjaXNzb3JQYXJhbXMoMCwgMCwgc3VyZmFjZS0+Z2V0V2lkdGgoKSwgc3Vy
ZmFjZS0+Z2V0SGVpZ2h0KCkpOworICAgICAgICBpbnQgd2lkdGggID0gMDsKKyAgICAgICAgaW50
IGhlaWdodCA9IDA7CisgICAgICAgIGlmIChzdXJmYWNlICE9IG51bGxwdHIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHdpZHRoICA9IHN1cmZhY2UtPmdldFdpZHRoKCk7CisgICAgICAgICAgICBo
ZWlnaHQgPSBzdXJmYWNlLT5nZXRIZWlnaHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1HTFN0
YXRlLnNldFZpZXdwb3J0UGFyYW1zKDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBtR0xT
dGF0ZS5zZXRTY2lzc29yUGFyYW1zKDAsIDAsIHdpZHRoLCBoZWlnaHQpOwogCiAgICAgICAgIG1I
YXNCZWVuQ3VycmVudCA9IHRydWU7CiAgICAgfQpAQCAtNDUyLDE3ICs0OTAsMjggQEAgdm9pZCBD
b250ZXh0OjptYWtlQ3VycmVudChlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCiAgICAgLy8gVE9ETyhq
bWFkaWxsKTogUmV3b3JrIHRoaXMgd2hlbiB3ZSBzdXBwb3J0IENvbnRleHRJbXBsCiAgICAgbUdM
U3RhdGUuc2V0QWxsRGlydHlCaXRzKCk7CiAKLSAgICBpZiAobUN1cnJlbnRTdXJmYWNlKQorICAg
IHJlbGVhc2VTdXJmYWNlKGRpc3BsYXkpOworCisgICAgRnJhbWVidWZmZXIgKm5ld0RlZmF1bHQg
PSBudWxscHRyOworICAgIGlmIChzdXJmYWNlICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBz
dXJmYWNlLT5zZXRJc0N1cnJlbnQoZGlzcGxheSwgdHJ1ZSk7CisgICAgICAgIG1DdXJyZW50U3Vy
ZmFjZSA9IHN1cmZhY2U7CisgICAgICAgIG5ld0RlZmF1bHQgICAgICA9IHN1cmZhY2UtPmdldERl
ZmF1bHRGcmFtZWJ1ZmZlcigpOworICAgIH0KKyAgICBlbHNlCiAgICAgewotICAgICAgICByZWxl
YXNlU3VyZmFjZSgpOworICAgICAgICBpZiAobVN1cmZhY2VsZXNzRnJhbWVidWZmZXIgPT0gbnVs
bHB0cikKKyAgICAgICAgeworICAgICAgICAgICAgbVN1cmZhY2VsZXNzRnJhbWVidWZmZXIgPSBu
ZXcgRnJhbWVidWZmZXIobUltcGxlbWVudGF0aW9uLmdldCgpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIG5ld0RlZmF1bHQgPSBtU3VyZmFjZWxlc3NGcmFtZWJ1ZmZlcjsKICAgICB9Ci0gICAgc3Vy
ZmFjZS0+c2V0SXNDdXJyZW50KHRydWUpOwotICAgIG1DdXJyZW50U3VyZmFjZSA9IHN1cmZhY2U7
CiAKICAgICAvLyBVcGRhdGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciwgdGhlIGJpbmRpbmcgb2YgdGhl
IHByZXZpb3VzIGRlZmF1bHQKICAgICAvLyBmcmFtZWJ1ZmZlciAob3IgbGFjayBvZikgd2lsbCBo
YXZlIGEgbnVsbHB0ci4KICAgICB7Ci0gICAgICAgIEZyYW1lYnVmZmVyICpuZXdEZWZhdWx0ID0g
c3VyZmFjZS0+Z2V0RGVmYXVsdEZyYW1lYnVmZmVyKCk7CiAgICAgICAgIGlmIChtR0xTdGF0ZS5n
ZXRSZWFkRnJhbWVidWZmZXIoKSA9PSBudWxscHRyKQogICAgICAgICB7CiAgICAgICAgICAgICBt
R0xTdGF0ZS5zZXRSZWFkRnJhbWVidWZmZXJCaW5kaW5nKG5ld0RlZmF1bHQpOwpAQCAtNDcxLDcx
ICs1MjAsNzggQEAgdm9pZCBDb250ZXh0OjptYWtlQ3VycmVudChlZ2w6OlN1cmZhY2UgKnN1cmZh
Y2UpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1HTFN0YXRlLnNldERyYXdGcmFtZWJ1ZmZlckJp
bmRpbmcobmV3RGVmYXVsdCk7CiAgICAgICAgIH0KLSAgICAgICAgbUZyYW1lYnVmZmVyTWFwWzBd
ID0gbmV3RGVmYXVsdDsKKyAgICAgICAgbVN0YXRlLm1GcmFtZWJ1ZmZlcnMtPnNldERlZmF1bHRG
cmFtZWJ1ZmZlcihuZXdEZWZhdWx0KTsKICAgICB9CiAKICAgICAvLyBOb3RpZnkgdGhlIHJlbmRl
cmVyIG9mIGEgY29udGV4dCBzd2l0Y2gKICAgICBtSW1wbGVtZW50YXRpb24tPm9uTWFrZUN1cnJl
bnQobVN0YXRlKTsKIH0KIAotdm9pZCBDb250ZXh0OjpyZWxlYXNlU3VyZmFjZSgpCit2b2lkIENv
bnRleHQ6OnJlbGVhc2VTdXJmYWNlKGVnbDo6RGlzcGxheSAqZGlzcGxheSkKIHsKLSAgICBBU1NF
UlQobUN1cnJlbnRTdXJmYWNlICE9IG51bGxwdHIpOwotCiAgICAgLy8gUmVtb3ZlIHRoZSBkZWZh
dWx0IGZyYW1lYnVmZmVyCisgICAgRnJhbWVidWZmZXIgKmN1cnJlbnREZWZhdWx0ID0gbnVsbHB0
cjsKKyAgICBpZiAobUN1cnJlbnRTdXJmYWNlICE9IG51bGxwdHIpCiAgICAgewotICAgICAgICBG
cmFtZWJ1ZmZlciAqY3VycmVudERlZmF1bHQgPSBtQ3VycmVudFN1cmZhY2UtPmdldERlZmF1bHRG
cmFtZWJ1ZmZlcigpOwotICAgICAgICBpZiAobUdMU3RhdGUuZ2V0UmVhZEZyYW1lYnVmZmVyKCkg
PT0gY3VycmVudERlZmF1bHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1HTFN0YXRlLnNldFJl
YWRGcmFtZWJ1ZmZlckJpbmRpbmcobnVsbHB0cik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1H
TFN0YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpID09IGN1cnJlbnREZWZhdWx0KQotICAgICAgICB7
Ci0gICAgICAgICAgICBtR0xTdGF0ZS5zZXREcmF3RnJhbWVidWZmZXJCaW5kaW5nKG51bGxwdHIp
OwotICAgICAgICB9Ci0gICAgICAgIG1GcmFtZWJ1ZmZlck1hcC5lcmFzZSgwKTsKKyAgICAgICAg
Y3VycmVudERlZmF1bHQgPSBtQ3VycmVudFN1cmZhY2UtPmdldERlZmF1bHRGcmFtZWJ1ZmZlcigp
OworICAgIH0KKyAgICBlbHNlIGlmIChtU3VyZmFjZWxlc3NGcmFtZWJ1ZmZlciAhPSBudWxscHRy
KQorICAgIHsKKyAgICAgICAgY3VycmVudERlZmF1bHQgPSBtU3VyZmFjZWxlc3NGcmFtZWJ1ZmZl
cjsKKyAgICB9CisKKyAgICBpZiAobUdMU3RhdGUuZ2V0UmVhZEZyYW1lYnVmZmVyKCkgPT0gY3Vy
cmVudERlZmF1bHQpCisgICAgeworICAgICAgICBtR0xTdGF0ZS5zZXRSZWFkRnJhbWVidWZmZXJC
aW5kaW5nKG51bGxwdHIpOwogICAgIH0KKyAgICBpZiAobUdMU3RhdGUuZ2V0RHJhd0ZyYW1lYnVm
ZmVyKCkgPT0gY3VycmVudERlZmF1bHQpCisgICAgeworICAgICAgICBtR0xTdGF0ZS5zZXREcmF3
RnJhbWVidWZmZXJCaW5kaW5nKG51bGxwdHIpOworICAgIH0KKyAgICBtU3RhdGUubUZyYW1lYnVm
ZmVycy0+c2V0RGVmYXVsdEZyYW1lYnVmZmVyKG51bGxwdHIpOwogCi0gICAgbUN1cnJlbnRTdXJm
YWNlLT5zZXRJc0N1cnJlbnQoZmFsc2UpOwotICAgIG1DdXJyZW50U3VyZmFjZSA9IG51bGxwdHI7
CisgICAgaWYgKG1DdXJyZW50U3VyZmFjZSkKKyAgICB7CisgICAgICAgIG1DdXJyZW50U3VyZmFj
ZS0+c2V0SXNDdXJyZW50KGRpc3BsYXksIGZhbHNlKTsKKyAgICAgICAgbUN1cnJlbnRTdXJmYWNl
ID0gbnVsbHB0cjsKKyAgICB9CiB9CiAKIEdMdWludCBDb250ZXh0OjpjcmVhdGVCdWZmZXIoKQog
ewotICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVCdWZmZXIoKTsKKyAgICByZXR1
cm4gbVN0YXRlLm1CdWZmZXJzLT5jcmVhdGVCdWZmZXIoKTsKIH0KIAogR0x1aW50IENvbnRleHQ6
OmNyZWF0ZVByb2dyYW0oKQogewotICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVQ
cm9ncmFtKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSk7CisgICAgcmV0dXJuIG1TdGF0ZS5tU2hhZGVy
UHJvZ3JhbXMtPmNyZWF0ZVByb2dyYW0obUltcGxlbWVudGF0aW9uLmdldCgpKTsKIH0KIAogR0x1
aW50IENvbnRleHQ6OmNyZWF0ZVNoYWRlcihHTGVudW0gdHlwZSkKIHsKLSAgICByZXR1cm4gbVJl
c291cmNlTWFuYWdlci0+Y3JlYXRlU2hhZGVyKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1JbXBsZW1lbnRhdGlvbi0+Z2V0
TmF0aXZlTGltaXRhdGlvbnMoKSwgdHlwZSk7CisgICAgcmV0dXJuIG1TdGF0ZS5tU2hhZGVyUHJv
Z3JhbXMtPmNyZWF0ZVNoYWRlcihtSW1wbGVtZW50YXRpb24uZ2V0KCksIG1MaW1pdGF0aW9ucywg
dHlwZSk7CiB9CiAKIEdMdWludCBDb250ZXh0OjpjcmVhdGVUZXh0dXJlKCkKIHsKLSAgICByZXR1
cm4gbVJlc291cmNlTWFuYWdlci0+Y3JlYXRlVGV4dHVyZSgpOworICAgIHJldHVybiBtU3RhdGUu
bVRleHR1cmVzLT5jcmVhdGVUZXh0dXJlKCk7CiB9CiAKIEdMdWludCBDb250ZXh0OjpjcmVhdGVS
ZW5kZXJidWZmZXIoKQogewotICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVSZW5k
ZXJidWZmZXIoKTsKKyAgICByZXR1cm4gbVN0YXRlLm1SZW5kZXJidWZmZXJzLT5jcmVhdGVSZW5k
ZXJidWZmZXIoKTsKIH0KIAogR0xzeW5jIENvbnRleHQ6OmNyZWF0ZUZlbmNlU3luYygpCiB7Ci0g
ICAgR0x1aW50IGhhbmRsZSA9IG1SZXNvdXJjZU1hbmFnZXItPmNyZWF0ZUZlbmNlU3luYyhtSW1w
bGVtZW50YXRpb24uZ2V0KCkpOworICAgIEdMdWludCBoYW5kbGUgPSBtU3RhdGUubUZlbmNlU3lu
Y3MtPmNyZWF0ZUZlbmNlU3luYyhtSW1wbGVtZW50YXRpb24uZ2V0KCkpOwogCiAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8R0xzeW5jPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGhhbmRsZSkp
OwogfQogCiBHTHVpbnQgQ29udGV4dDo6Y3JlYXRlUGF0aHMoR0xzaXplaSByYW5nZSkKIHsKLSAg
ICBhdXRvIHJlc3VsdE9yRXJyb3IgPSBtUmVzb3VyY2VNYW5hZ2VyLT5jcmVhdGVQYXRocyhtSW1w
bGVtZW50YXRpb24uZ2V0KCksIHJhbmdlKTsKKyAgICBhdXRvIHJlc3VsdE9yRXJyb3IgPSBtU3Rh
dGUubVBhdGhzLT5jcmVhdGVQYXRocyhtSW1wbGVtZW50YXRpb24uZ2V0KCksIHJhbmdlKTsKICAg
ICBpZiAocmVzdWx0T3JFcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAgICAgICBoYW5kbGVFcnJv
cihyZXN1bHRPckVycm9yLmdldEVycm9yKCkpOwpAQCAtNTUzLDcgKzYwOSw3IEBAIEdMdWludCBD
b250ZXh0OjpjcmVhdGVWZXJ0ZXhBcnJheSgpCiAKIEdMdWludCBDb250ZXh0OjpjcmVhdGVTYW1w
bGVyKCkKIHsKLSAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Y3JlYXRlU2FtcGxlcigpOwor
ICAgIHJldHVybiBtU3RhdGUubVNhbXBsZXJzLT5jcmVhdGVTYW1wbGVyKCk7CiB9CiAKIEdMdWlu
dCBDb250ZXh0OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCkBAIC01NjYsMTEgKzYyMiw3IEBA
IEdMdWludCBDb250ZXh0OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCiAvLyBSZXR1cm5zIGFu
IHVudXNlZCBmcmFtZWJ1ZmZlciBuYW1lCiBHTHVpbnQgQ29udGV4dDo6Y3JlYXRlRnJhbWVidWZm
ZXIoKQogewotICAgIEdMdWludCBoYW5kbGUgPSBtRnJhbWVidWZmZXJIYW5kbGVBbGxvY2F0b3Iu
YWxsb2NhdGUoKTsKLQotICAgIG1GcmFtZWJ1ZmZlck1hcFtoYW5kbGVdID0gTlVMTDsKLQotICAg
IHJldHVybiBoYW5kbGU7CisgICAgcmV0dXJuIG1TdGF0ZS5tRnJhbWVidWZmZXJzLT5jcmVhdGVG
cmFtZWJ1ZmZlcigpOwogfQogCiBHTHVpbnQgQ29udGV4dDo6Y3JlYXRlRmVuY2VOVigpCkBAIC01
OTQsNDIgKzY0Niw0MiBAQCBHTHVpbnQgQ29udGV4dDo6Y3JlYXRlUXVlcnkoKQogCiB2b2lkIENv
bnRleHQ6OmRlbGV0ZUJ1ZmZlcihHTHVpbnQgYnVmZmVyKQogewotICAgIGlmIChtUmVzb3VyY2VN
YW5hZ2VyLT5nZXRCdWZmZXIoYnVmZmVyKSkKKyAgICBpZiAobVN0YXRlLm1CdWZmZXJzLT5nZXRC
dWZmZXIoYnVmZmVyKSkKICAgICB7CiAgICAgICAgIGRldGFjaEJ1ZmZlcihidWZmZXIpOwogICAg
IH0KIAotICAgIG1SZXNvdXJjZU1hbmFnZXItPmRlbGV0ZUJ1ZmZlcihidWZmZXIpOworICAgIG1T
dGF0ZS5tQnVmZmVycy0+ZGVsZXRlT2JqZWN0KHRoaXMsIGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29u
dGV4dDo6ZGVsZXRlU2hhZGVyKEdMdWludCBzaGFkZXIpCiB7Ci0gICAgbVJlc291cmNlTWFuYWdl
ci0+ZGVsZXRlU2hhZGVyKHNoYWRlcik7CisgICAgbVN0YXRlLm1TaGFkZXJQcm9ncmFtcy0+ZGVs
ZXRlU2hhZGVyKHRoaXMsIHNoYWRlcik7CiB9CiAKIHZvaWQgQ29udGV4dDo6ZGVsZXRlUHJvZ3Jh
bShHTHVpbnQgcHJvZ3JhbSkKIHsKLSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5kZWxldGVQcm9ncmFt
KHByb2dyYW0pOworICAgIG1TdGF0ZS5tU2hhZGVyUHJvZ3JhbXMtPmRlbGV0ZVByb2dyYW0odGhp
cywgcHJvZ3JhbSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6ZGVsZXRlVGV4dHVyZShHTHVpbnQgdGV4
dHVyZSkKIHsKLSAgICBpZiAobVJlc291cmNlTWFuYWdlci0+Z2V0VGV4dHVyZSh0ZXh0dXJlKSkK
KyAgICBpZiAobVN0YXRlLm1UZXh0dXJlcy0+Z2V0VGV4dHVyZSh0ZXh0dXJlKSkKICAgICB7CiAg
ICAgICAgIGRldGFjaFRleHR1cmUodGV4dHVyZSk7CiAgICAgfQogCi0gICAgbVJlc291cmNlTWFu
YWdlci0+ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICBtU3RhdGUubVRleHR1cmVzLT5kZWxl
dGVPYmplY3QodGhpcywgdGV4dHVyZSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6ZGVsZXRlUmVuZGVy
YnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIpCiB7Ci0gICAgaWYgKG1SZXNvdXJjZU1hbmFnZXIt
PmdldFJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpKQorICAgIGlmIChtU3RhdGUubVJlbmRlcmJ1
ZmZlcnMtPmdldFJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpKQogICAgIHsKICAgICAgICAgZGV0
YWNoUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CiAgICAgfQogCi0gICAgbVJlc291cmNlTWFu
YWdlci0+ZGVsZXRlUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CisgICAgbVN0YXRlLm1SZW5k
ZXJidWZmZXJzLT5kZWxldGVPYmplY3QodGhpcywgcmVuZGVyYnVmZmVyKTsKIH0KIAogdm9pZCBD
b250ZXh0OjpkZWxldGVGZW5jZVN5bmMoR0xzeW5jIGZlbmNlU3luYykKQEAgLTYzOCwxNyArNjkw
LDE4IEBAIHZvaWQgQ29udGV4dDo6ZGVsZXRlRmVuY2VTeW5jKEdMc3luYyBmZW5jZVN5bmMpCiAg
ICAgLy8gd2FpdCBjb21tYW5kcyBmaW5pc2guIEhvd2V2ZXIsIHNpbmNlIHRoZSBuYW1lIGJlY29t
ZXMgaW52YWxpZCwgd2UgY2Fubm90IHF1ZXJ5IHRoZSBmZW5jZSwKICAgICAvLyBhbmQgc2luY2Ug
b3VyIEFQSSBpcyBjdXJyZW50bHkgZGVzaWduZWQgZm9yIGJlaW5nIGNhbGxlZCBmcm9tIGEgc2lu
Z2xlIHRocmVhZCwgd2UgY2FuIGRlbGV0ZQogICAgIC8vIHRoZSBmZW5jZSBpbW1lZGlhdGVseS4K
LSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5kZWxldGVGZW5jZVN5bmMoc3RhdGljX2Nhc3Q8R0x1aW50
PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZmVuY2VTeW5jKSkpOworICAgIG1TdGF0ZS5t
RmVuY2VTeW5jcy0+ZGVsZXRlT2JqZWN0KHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJf
dD4oZmVuY2VTeW5jKSkpOwogfQogCiB2b2lkIENvbnRleHQ6OmRlbGV0ZVBhdGhzKEdMdWludCBm
aXJzdCwgR0xzaXplaSByYW5nZSkKIHsKLSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5kZWxldGVQYXRo
cyhmaXJzdCwgcmFuZ2UpOworICAgIG1TdGF0ZS5tUGF0aHMtPmRlbGV0ZVBhdGhzKGZpcnN0LCBy
YW5nZSk7CiB9CiAKIGJvb2wgQ29udGV4dDo6aGFzUGF0aERhdGEoR0x1aW50IHBhdGgpIGNvbnN0
CiB7Ci0gICAgY29uc3QgYXV0byAqcGF0aE9iaiA9IG1SZXNvdXJjZU1hbmFnZXItPmdldFBhdGgo
cGF0aCk7CisgICAgY29uc3QgYXV0byAqcGF0aE9iaiA9IG1TdGF0ZS5tUGF0aHMtPmdldFBhdGgo
cGF0aCk7CiAgICAgaWYgKHBhdGhPYmogPT0gbnVsbHB0cikKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCkBAIC02NTcsNyArNzEwLDcgQEAgYm9vbCBDb250ZXh0OjpoYXNQYXRoRGF0YShHTHVpbnQg
cGF0aCkgY29uc3QKIAogYm9vbCBDb250ZXh0OjpoYXNQYXRoKEdMdWludCBwYXRoKSBjb25zdAog
ewotICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5oYXNQYXRoKHBhdGgpOworICAgIHJldHVy
biBtU3RhdGUubVBhdGhzLT5oYXNQYXRoKHBhdGgpOwogfQogCiB2b2lkIENvbnRleHQ6OnNldFBh
dGhDb21tYW5kcyhHTHVpbnQgcGF0aCwKQEAgLTY2NywxNCArNzIwLDE0IEBAIHZvaWQgQ29udGV4
dDo6c2V0UGF0aENvbW1hbmRzKEdMdWludCBwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGNvb3JkVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHZvaWQgKmNvb3JkcykKIHsKLSAgICBhdXRvICpwYXRoT2JqZWN0ID0gbVJlc291cmNlTWFu
YWdlci0+Z2V0UGF0aChwYXRoKTsKKyAgICBhdXRvICpwYXRoT2JqZWN0ID0gbVN0YXRlLm1QYXRo
cy0+Z2V0UGF0aChwYXRoKTsKIAogICAgIGhhbmRsZUVycm9yKHBhdGhPYmplY3QtPnNldENvbW1h
bmRzKG51bUNvbW1hbmRzLCBjb21tYW5kcywgbnVtQ29vcmRzLCBjb29yZFR5cGUsIGNvb3Jkcykp
OwogfQogCiB2b2lkIENvbnRleHQ6OnNldFBhdGhQYXJhbWV0ZXJmKEdMdWludCBwYXRoLCBHTGVu
dW0gcG5hbWUsIEdMZmxvYXQgdmFsdWUpCiB7Ci0gICAgYXV0byAqcGF0aE9iaiA9IG1SZXNvdXJj
ZU1hbmFnZXItPmdldFBhdGgocGF0aCk7CisgICAgYXV0byAqcGF0aE9iaiA9IG1TdGF0ZS5tUGF0
aHMtPmdldFBhdGgocGF0aCk7CiAKICAgICBzd2l0Y2ggKHBuYW1lKQogICAgIHsKQEAgLTcwMSw3
ICs3NTQsNyBAQCB2b2lkIENvbnRleHQ6OnNldFBhdGhQYXJhbWV0ZXJmKEdMdWludCBwYXRoLCBH
TGVudW0gcG5hbWUsIEdMZmxvYXQgdmFsdWUpCiAKIHZvaWQgQ29udGV4dDo6Z2V0UGF0aFBhcmFt
ZXRlcmZ2KEdMdWludCBwYXRoLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnZhbHVlKSBjb25zdAog
ewotICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRQYXRoKHBh
dGgpOworICAgIGNvbnN0IGF1dG8gKnBhdGhPYmogPSBtU3RhdGUubVBhdGhzLT5nZXRQYXRoKHBh
dGgpOwogCiAgICAgc3dpdGNoIChwbmFtZSkKICAgICB7CkBAIC03NTAsMTYgKzgwMywyMSBAQCB2
b2lkIENvbnRleHQ6OmRlbGV0ZVZlcnRleEFycmF5KEdMdWludCB2ZXJ0ZXhBcnJheSkKIAogdm9p
ZCBDb250ZXh0OjpkZWxldGVTYW1wbGVyKEdMdWludCBzYW1wbGVyKQogewotICAgIGlmIChtUmVz
b3VyY2VNYW5hZ2VyLT5nZXRTYW1wbGVyKHNhbXBsZXIpKQorICAgIGlmIChtU3RhdGUubVNhbXBs
ZXJzLT5nZXRTYW1wbGVyKHNhbXBsZXIpKQogICAgIHsKICAgICAgICAgZGV0YWNoU2FtcGxlcihz
YW1wbGVyKTsKICAgICB9CiAKLSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5kZWxldGVTYW1wbGVyKHNh
bXBsZXIpOworICAgIG1TdGF0ZS5tU2FtcGxlcnMtPmRlbGV0ZU9iamVjdCh0aGlzLCBzYW1wbGVy
KTsKIH0KIAogdm9pZCBDb250ZXh0OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhHTHVpbnQgdHJh
bnNmb3JtRmVlZGJhY2spCiB7CisgICAgaWYgKHRyYW5zZm9ybUZlZWRiYWNrID09IDApCisgICAg
eworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgYXV0byBpdGVyID0gbVRyYW5zZm9ybUZl
ZWRiYWNrTWFwLmZpbmQodHJhbnNmb3JtRmVlZGJhY2spOwogICAgIGlmIChpdGVyICE9IG1UcmFu
c2Zvcm1GZWVkYmFja01hcC5lbmQoKSkKICAgICB7CkBAIC03NjcsNyArODI1LDcgQEAgdm9pZCBD
b250ZXh0OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayhHTHVpbnQgdHJhbnNmb3JtRmVlZGJhY2sp
CiAgICAgICAgIGlmICh0cmFuc2Zvcm1GZWVkYmFja09iamVjdCAhPSBudWxscHRyKQogICAgICAg
ICB7CiAgICAgICAgICAgICBkZXRhY2hUcmFuc2Zvcm1GZWVkYmFjayh0cmFuc2Zvcm1GZWVkYmFj
ayk7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1GZWVkYmFja09iamVjdC0+cmVsZWFzZSgpOworICAg
ICAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2tPYmplY3QtPnJlbGVhc2UodGhpcyk7CiAgICAgICAg
IH0KIAogICAgICAgICBtVHJhbnNmb3JtRmVlZGJhY2tNYXAuZXJhc2UoaXRlcik7CkBAIC03Nzcs
MTYgKzgzNSwxMiBAQCB2b2lkIENvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKEdMdWlu
dCB0cmFuc2Zvcm1GZWVkYmFjaykKIAogdm9pZCBDb250ZXh0OjpkZWxldGVGcmFtZWJ1ZmZlcihH
THVpbnQgZnJhbWVidWZmZXIpCiB7Ci0gICAgYXV0byBmcmFtZWJ1ZmZlck9iamVjdCA9IG1GcmFt
ZWJ1ZmZlck1hcC5maW5kKGZyYW1lYnVmZmVyKTsKLQotICAgIGlmIChmcmFtZWJ1ZmZlck9iamVj
dCAhPSBtRnJhbWVidWZmZXJNYXAuZW5kKCkpCisgICAgaWYgKG1TdGF0ZS5tRnJhbWVidWZmZXJz
LT5nZXRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcikpCiAgICAgewogICAgICAgICBkZXRhY2hGcmFt
ZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7Ci0KLSAgICAgICAgbUZyYW1lYnVmZmVySGFuZGxlQWxsb2Nh
dG9yLnJlbGVhc2UoZnJhbWVidWZmZXJPYmplY3QtPmZpcnN0KTsKLSAgICAgICAgZGVsZXRlIGZy
YW1lYnVmZmVyT2JqZWN0LT5zZWNvbmQ7Ci0gICAgICAgIG1GcmFtZWJ1ZmZlck1hcC5lcmFzZShm
cmFtZWJ1ZmZlck9iamVjdCk7CiAgICAgfQorCisgICAgbVN0YXRlLm1GcmFtZWJ1ZmZlcnMtPmRl
bGV0ZU9iamVjdCh0aGlzLCBmcmFtZWJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29udGV4dDo6ZGVsZXRl
RmVuY2VOVihHTHVpbnQgZmVuY2UpCkBAIC04MTcsMjIgKzg3MSwyMyBAQCB2b2lkIENvbnRleHQ6
OmRlbGV0ZVF1ZXJ5KEdMdWludCBxdWVyeSkKIAogQnVmZmVyICpDb250ZXh0OjpnZXRCdWZmZXIo
R0x1aW50IGhhbmRsZSkgY29uc3QKIHsKLSAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Z2V0
QnVmZmVyKGhhbmRsZSk7CisgICAgcmV0dXJuIG1TdGF0ZS5tQnVmZmVycy0+Z2V0QnVmZmVyKGhh
bmRsZSk7CiB9CiAKIFRleHR1cmUgKkNvbnRleHQ6OmdldFRleHR1cmUoR0x1aW50IGhhbmRsZSkg
Y29uc3QKIHsKLSAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+Z2V0VGV4dHVyZShoYW5kbGUp
OworICAgIHJldHVybiBtU3RhdGUubVRleHR1cmVzLT5nZXRUZXh0dXJlKGhhbmRsZSk7CiB9CiAK
IFJlbmRlcmJ1ZmZlciAqQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyKEdMdWludCBoYW5kbGUpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1SZXNvdXJjZU1hbmFnZXItPmdldFJlbmRlcmJ1ZmZlcihoYW5k
bGUpOworICAgIHJldHVybiBtU3RhdGUubVJlbmRlcmJ1ZmZlcnMtPmdldFJlbmRlcmJ1ZmZlciho
YW5kbGUpOwogfQogCiBGZW5jZVN5bmMgKkNvbnRleHQ6OmdldEZlbmNlU3luYyhHTHN5bmMgaGFu
ZGxlKSBjb25zdAogewotICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRGZW5jZVN5bmMo
c3RhdGljX2Nhc3Q8R0x1aW50PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaGFuZGxlKSkp
OworICAgIHJldHVybiBtU3RhdGUubUZlbmNlU3luY3MtPmdldEZlbmNlU3luYygKKyAgICAgICAg
c3RhdGljX2Nhc3Q8R0x1aW50PihyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaGFuZGxlKSkp
OwogfQogCiBWZXJ0ZXhBcnJheSAqQ29udGV4dDo6Z2V0VmVydGV4QXJyYXkoR0x1aW50IGhhbmRs
ZSkgY29uc3QKQEAgLTg0Myw3ICs4OTgsNyBAQCBWZXJ0ZXhBcnJheSAqQ29udGV4dDo6Z2V0VmVy
dGV4QXJyYXkoR0x1aW50IGhhbmRsZSkgY29uc3QKIAogU2FtcGxlciAqQ29udGV4dDo6Z2V0U2Ft
cGxlcihHTHVpbnQgaGFuZGxlKSBjb25zdAogewotICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2Vy
LT5nZXRTYW1wbGVyKGhhbmRsZSk7CisgICAgcmV0dXJuIG1TdGF0ZS5tU2FtcGxlcnMtPmdldFNh
bXBsZXIoaGFuZGxlKTsKIH0KIAogVHJhbnNmb3JtRmVlZGJhY2sgKkNvbnRleHQ6OmdldFRyYW5z
Zm9ybUZlZWRiYWNrKEdMdWludCBoYW5kbGUpIGNvbnN0CkBAIC05MzIsMTkgKzk4NywyNSBAQCB2
b2lkIENvbnRleHQ6OmdldE9iamVjdFB0ckxhYmVsKGNvbnN0IHZvaWQgKnB0ciwKIAogYm9vbCBD
b250ZXh0Ojppc1NhbXBsZXIoR0x1aW50IHNhbXBsZXJOYW1lKSBjb25zdAogewotICAgIHJldHVy
biBtUmVzb3VyY2VNYW5hZ2VyLT5pc1NhbXBsZXIoc2FtcGxlck5hbWUpOworICAgIHJldHVybiBt
U3RhdGUubVNhbXBsZXJzLT5pc1NhbXBsZXIoc2FtcGxlck5hbWUpOwogfQogCiB2b2lkIENvbnRl
eHQ6OmJpbmRBcnJheUJ1ZmZlcihHTHVpbnQgYnVmZmVySGFuZGxlKQogewotICAgIEJ1ZmZlciAq
YnVmZmVyID0gbVJlc291cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKG1JbXBsZW1l
bnRhdGlvbi5nZXQoKSwgYnVmZmVySGFuZGxlKTsKKyAgICBCdWZmZXIgKmJ1ZmZlciA9IG1TdGF0
ZS5tQnVmZmVycy0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwg
YnVmZmVySGFuZGxlKTsKICAgICBtR0xTdGF0ZS5zZXRBcnJheUJ1ZmZlckJpbmRpbmcoYnVmZmVy
KTsKIH0KIAordm9pZCBDb250ZXh0OjpiaW5kRHJhd0luZGlyZWN0QnVmZmVyKEdMdWludCBidWZm
ZXJIYW5kbGUpCit7CisgICAgQnVmZmVyICpidWZmZXIgPSBtU3RhdGUubUJ1ZmZlcnMtPmNoZWNr
QnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7Cisg
ICAgbUdMU3RhdGUuc2V0RHJhd0luZGlyZWN0QnVmZmVyQmluZGluZyhidWZmZXIpOworfQorCiB2
b2lkIENvbnRleHQ6OmJpbmRFbGVtZW50QXJyYXlCdWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSkK
IHsKLSAgICBCdWZmZXIgKmJ1ZmZlciA9IG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxs
b2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7Ci0gICAgbUdMU3Rh
dGUuZ2V0VmVydGV4QXJyYXkoKS0+c2V0RWxlbWVudEFycmF5QnVmZmVyKGJ1ZmZlcik7CisgICAg
QnVmZmVyICpidWZmZXIgPSBtU3RhdGUubUJ1ZmZlcnMtPmNoZWNrQnVmZmVyQWxsb2NhdGlvbiht
SW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7CisgICAgbUdMU3RhdGUuc2V0RWxl
bWVudEFycmF5QnVmZmVyKGJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29udGV4dDo6YmluZFRleHR1cmUo
R0xlbnVtIHRhcmdldCwgR0x1aW50IGhhbmRsZSkKQEAgLTk1Nyw3ICsxMDE4LDcgQEAgdm9pZCBD
b250ZXh0OjpiaW5kVGV4dHVyZShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaGFuZGxlKQogICAgIH0K
ICAgICBlbHNlCiAgICAgewotICAgICAgICB0ZXh0dXJlID0gbVJlc291cmNlTWFuYWdlci0+Y2hl
Y2tUZXh0dXJlQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGhhbmRsZSwgdGFyZ2V0
KTsKKyAgICAgICAgdGV4dHVyZSA9IG1TdGF0ZS5tVGV4dHVyZXMtPmNoZWNrVGV4dHVyZUFsbG9j
YXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBoYW5kbGUsIHRhcmdldCk7CiAgICAgfQogCiAg
ICAgQVNTRVJUKHRleHR1cmUpOwpAQCAtOTY2LDQwICsxMDI3LDQ0IEBAIHZvaWQgQ29udGV4dDo6
YmluZFRleHR1cmUoR0xlbnVtIHRhcmdldCwgR0x1aW50IGhhbmRsZSkKIAogdm9pZCBDb250ZXh0
OjpiaW5kUmVhZEZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlckhhbmRsZSkKIHsKLSAgICBG
cmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjaGVja0ZyYW1lYnVmZmVyQWxsb2NhdGlvbihmcmFt
ZWJ1ZmZlckhhbmRsZSk7CisgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbVN0YXRlLm1G
cmFtZWJ1ZmZlcnMtPmNoZWNrRnJhbWVidWZmZXJBbGxvY2F0aW9uKAorICAgICAgICBtSW1wbGVt
ZW50YXRpb24uZ2V0KCksIG1DYXBzLCBmcmFtZWJ1ZmZlckhhbmRsZSk7CiAgICAgbUdMU3RhdGUu
c2V0UmVhZEZyYW1lYnVmZmVyQmluZGluZyhmcmFtZWJ1ZmZlcik7CiB9CiAKIHZvaWQgQ29udGV4
dDo6YmluZERyYXdGcmFtZWJ1ZmZlcihHTHVpbnQgZnJhbWVidWZmZXJIYW5kbGUpCiB7Ci0gICAg
RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gY2hlY2tGcmFtZWJ1ZmZlckFsbG9jYXRpb24oZnJh
bWVidWZmZXJIYW5kbGUpOworICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IG1TdGF0ZS5t
RnJhbWVidWZmZXJzLT5jaGVja0ZyYW1lYnVmZmVyQWxsb2NhdGlvbigKKyAgICAgICAgbUltcGxl
bWVudGF0aW9uLmdldCgpLCBtQ2FwcywgZnJhbWVidWZmZXJIYW5kbGUpOwogICAgIG1HTFN0YXRl
LnNldERyYXdGcmFtZWJ1ZmZlckJpbmRpbmcoZnJhbWVidWZmZXIpOwogfQogCi12b2lkIENvbnRl
eHQ6OmJpbmRSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlckhhbmRsZSkKLXsKLSAgICBS
ZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciA9Ci0gICAgICAgIG1SZXNvdXJjZU1hbmFnZXItPmNo
ZWNrUmVuZGVyYnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIHJlbmRlcmJ1
ZmZlckhhbmRsZSk7Ci0gICAgbUdMU3RhdGUuc2V0UmVuZGVyYnVmZmVyQmluZGluZyhyZW5kZXJi
dWZmZXIpOwotfQotCiB2b2lkIENvbnRleHQ6OmJpbmRWZXJ0ZXhBcnJheShHTHVpbnQgdmVydGV4
QXJyYXlIYW5kbGUpCiB7CiAgICAgVmVydGV4QXJyYXkgKnZlcnRleEFycmF5ID0gY2hlY2tWZXJ0
ZXhBcnJheUFsbG9jYXRpb24odmVydGV4QXJyYXlIYW5kbGUpOwogICAgIG1HTFN0YXRlLnNldFZl
cnRleEFycmF5QmluZGluZyh2ZXJ0ZXhBcnJheSk7CiB9CiAKK3ZvaWQgQ29udGV4dDo6YmluZFZl
cnRleEJ1ZmZlcihHTHVpbnQgYmluZGluZ0luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMdWludCBidWZmZXJIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnRwdHIgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgc3RyaWRlKQoreworICAgIEJ1ZmZlciAqYnVmZmVyID0gbVN0YXRlLm1CdWZmZXJzLT5jaGVj
a0J1ZmZlckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZmZXJIYW5kbGUpOwor
ICAgIG1HTFN0YXRlLmJpbmRWZXJ0ZXhCdWZmZXIoYmluZGluZ0luZGV4LCBidWZmZXIsIG9mZnNl
dCwgc3RyaWRlKTsKK30KKwogdm9pZCBDb250ZXh0OjpiaW5kU2FtcGxlcihHTHVpbnQgdGV4dHVy
ZVVuaXQsIEdMdWludCBzYW1wbGVySGFuZGxlKQogewogICAgIEFTU0VSVCh0ZXh0dXJlVW5pdCA8
IG1DYXBzLm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOwogICAgIFNhbXBsZXIgKnNhbXBs
ZXIgPQotICAgICAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja1NhbXBsZXJBbGxvY2F0aW9uKG1J
bXBsZW1lbnRhdGlvbi5nZXQoKSwgc2FtcGxlckhhbmRsZSk7CisgICAgICAgIG1TdGF0ZS5tU2Ft
cGxlcnMtPmNoZWNrU2FtcGxlckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBzYW1w
bGVySGFuZGxlKTsKICAgICBtR0xTdGF0ZS5zZXRTYW1wbGVyQmluZGluZyh0ZXh0dXJlVW5pdCwg
c2FtcGxlcik7CiB9CiAKIHZvaWQgQ29udGV4dDo6YmluZEdlbmVyaWNVbmlmb3JtQnVmZmVyKEdM
dWludCBidWZmZXJIYW5kbGUpCiB7Ci0gICAgQnVmZmVyICpidWZmZXIgPSBtUmVzb3VyY2VNYW5h
Z2VyLT5jaGVja0J1ZmZlckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZmZXJI
YW5kbGUpOworICAgIEJ1ZmZlciAqYnVmZmVyID0gbVN0YXRlLm1CdWZmZXJzLT5jaGVja0J1ZmZl
ckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZmZXJIYW5kbGUpOwogICAgIG1H
TFN0YXRlLnNldEdlbmVyaWNVbmlmb3JtQnVmZmVyQmluZGluZyhidWZmZXIpOwogfQogCkBAIC0x
MDA4LDEzICsxMDczLDEzIEBAIHZvaWQgQ29udGV4dDo6YmluZEluZGV4ZWRVbmlmb3JtQnVmZmVy
KEdMdWludCBidWZmZXJIYW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludHB0ciBvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpcHRyIHNpemUpCiB7Ci0gICAgQnVmZmVyICpidWZmZXIgPSBtUmVzb3VyY2VN
YW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZm
ZXJIYW5kbGUpOworICAgIEJ1ZmZlciAqYnVmZmVyID0gbVN0YXRlLm1CdWZmZXJzLT5jaGVja0J1
ZmZlckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZmZXJIYW5kbGUpOwogICAg
IG1HTFN0YXRlLnNldEluZGV4ZWRVbmlmb3JtQnVmZmVyQmluZGluZyhpbmRleCwgYnVmZmVyLCBv
ZmZzZXQsIHNpemUpOwogfQogCiB2b2lkIENvbnRleHQ6OmJpbmRHZW5lcmljVHJhbnNmb3JtRmVl
ZGJhY2tCdWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSkKIHsKLSAgICBCdWZmZXIgKmJ1ZmZlciA9
IG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24u
Z2V0KCksIGJ1ZmZlckhhbmRsZSk7CisgICAgQnVmZmVyICpidWZmZXIgPSBtU3RhdGUubUJ1ZmZl
cnMtPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhh
bmRsZSk7CiAgICAgbUdMU3RhdGUuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCktPmJpbmRH
ZW5lcmljQnVmZmVyKGJ1ZmZlcik7CiB9CiAKQEAgLTEwMjMsMzcgKzEwODgsNjcgQEAgdm9pZCBD
b250ZXh0OjpiaW5kSW5kZXhlZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKEdMdWludCBidWZmZXJI
YW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnRwdHIgb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSkKIHsKLSAgICBCdWZmZXIgKmJ1ZmZlciA9IG1SZXNv
dXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCks
IGJ1ZmZlckhhbmRsZSk7CisgICAgQnVmZmVyICpidWZmZXIgPSBtU3RhdGUubUJ1ZmZlcnMtPmNo
ZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7
CiAgICAgbUdMU3RhdGUuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCktPmJpbmRJbmRleGVk
QnVmZmVyKGluZGV4LCBidWZmZXIsIG9mZnNldCwgc2l6ZSk7CiB9CiAKK3ZvaWQgQ29udGV4dDo6
YmluZEdlbmVyaWNBdG9taWNDb3VudGVyQnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUpCit7Cisg
ICAgQnVmZmVyICpidWZmZXIgPSBtU3RhdGUubUJ1ZmZlcnMtPmNoZWNrQnVmZmVyQWxsb2NhdGlv
bihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7CisgICAgbUdMU3RhdGUuc2V0
R2VuZXJpY0F0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5nKGJ1ZmZlcik7Cit9CisKK3ZvaWQgQ29u
dGV4dDo6YmluZEluZGV4ZWRBdG9taWNDb3VudGVyQnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0
ciBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpcHRyIHNpemUpCit7CisgICAgQnVmZmVyICpidWZmZXIgPSBtU3RhdGUubUJ1ZmZlcnMt
PmNoZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRs
ZSk7CisgICAgbUdMU3RhdGUuc2V0SW5kZXhlZEF0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5nKGlu
ZGV4LCBidWZmZXIsIG9mZnNldCwgc2l6ZSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6YmluZEdlbmVy
aWNTaGFkZXJTdG9yYWdlQnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUpCit7CisgICAgQnVmZmVy
ICpidWZmZXIgPSBtU3RhdGUubUJ1ZmZlcnMtPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1wbGVt
ZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7CisgICAgbUdMU3RhdGUuc2V0R2VuZXJpY1No
YWRlclN0b3JhZ2VCdWZmZXJCaW5kaW5nKGJ1ZmZlcik7Cit9CisKK3ZvaWQgQ29udGV4dDo6Ymlu
ZEluZGV4ZWRTaGFkZXJTdG9yYWdlQnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRy
IHNpemUpCit7CisgICAgQnVmZmVyICpidWZmZXIgPSBtU3RhdGUubUJ1ZmZlcnMtPmNoZWNrQnVm
ZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7CisgICAg
bUdMU3RhdGUuc2V0SW5kZXhlZFNoYWRlclN0b3JhZ2VCdWZmZXJCaW5kaW5nKGluZGV4LCBidWZm
ZXIsIG9mZnNldCwgc2l6ZSk7Cit9CisKIHZvaWQgQ29udGV4dDo6YmluZENvcHlSZWFkQnVmZmVy
KEdMdWludCBidWZmZXJIYW5kbGUpCiB7Ci0gICAgQnVmZmVyICpidWZmZXIgPSBtUmVzb3VyY2VN
YW5hZ2VyLT5jaGVja0J1ZmZlckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZm
ZXJIYW5kbGUpOworICAgIEJ1ZmZlciAqYnVmZmVyID0gbVN0YXRlLm1CdWZmZXJzLT5jaGVja0J1
ZmZlckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBidWZmZXJIYW5kbGUpOwogICAg
IG1HTFN0YXRlLnNldENvcHlSZWFkQnVmZmVyQmluZGluZyhidWZmZXIpOwogfQogCiB2b2lkIENv
bnRleHQ6OmJpbmRDb3B5V3JpdGVCdWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSkKIHsKLSAgICBC
dWZmZXIgKmJ1ZmZlciA9IG1SZXNvdXJjZU1hbmFnZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlvbiht
SW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7CisgICAgQnVmZmVyICpidWZmZXIg
PSBtU3RhdGUubUJ1ZmZlcnMtPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24u
Z2V0KCksIGJ1ZmZlckhhbmRsZSk7CiAgICAgbUdMU3RhdGUuc2V0Q29weVdyaXRlQnVmZmVyQmlu
ZGluZyhidWZmZXIpOwogfQogCiB2b2lkIENvbnRleHQ6OmJpbmRQaXhlbFBhY2tCdWZmZXIoR0x1
aW50IGJ1ZmZlckhhbmRsZSkKIHsKLSAgICBCdWZmZXIgKmJ1ZmZlciA9IG1SZXNvdXJjZU1hbmFn
ZXItPmNoZWNrQnVmZmVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhh
bmRsZSk7CisgICAgQnVmZmVyICpidWZmZXIgPSBtU3RhdGUubUJ1ZmZlcnMtPmNoZWNrQnVmZmVy
QWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIGJ1ZmZlckhhbmRsZSk7CiAgICAgbUdM
U3RhdGUuc2V0UGl4ZWxQYWNrQnVmZmVyQmluZGluZyhidWZmZXIpOwogfQogCiB2b2lkIENvbnRl
eHQ6OmJpbmRQaXhlbFVucGFja0J1ZmZlcihHTHVpbnQgYnVmZmVySGFuZGxlKQogewotICAgIEJ1
ZmZlciAqYnVmZmVyID0gbVJlc291cmNlTWFuYWdlci0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKG1J
bXBsZW1lbnRhdGlvbi5nZXQoKSwgYnVmZmVySGFuZGxlKTsKKyAgICBCdWZmZXIgKmJ1ZmZlciA9
IG1TdGF0ZS5tQnVmZmVycy0+Y2hlY2tCdWZmZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlvbi5n
ZXQoKSwgYnVmZmVySGFuZGxlKTsKICAgICBtR0xTdGF0ZS5zZXRQaXhlbFVucGFja0J1ZmZlckJp
bmRpbmcoYnVmZmVyKTsKIH0KIAogdm9pZCBDb250ZXh0Ojp1c2VQcm9ncmFtKEdMdWludCBwcm9n
cmFtKQogewotICAgIG1HTFN0YXRlLnNldFByb2dyYW0oZ2V0UHJvZ3JhbShwcm9ncmFtKSk7Cisg
ICAgbUdMU3RhdGUuc2V0UHJvZ3JhbSh0aGlzLCBnZXRQcm9ncmFtKHByb2dyYW0pKTsKIH0KIAog
dm9pZCBDb250ZXh0OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2soR0x1aW50IHRyYW5zZm9ybUZlZWRi
YWNrSGFuZGxlKQpAQCAtMTA3OCw3ICsxMTczLDcgQEAgRXJyb3IgQ29udGV4dDo6YmVnaW5RdWVy
eShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgcXVlcnkpCiAgICAgLy8gc2V0IHF1ZXJ5IGFzIGFjdGl2
ZSBmb3Igc3BlY2lmaWVkIHRhcmdldCBvbmx5IGlmIGJlZ2luIHN1Y2NlZWRlZAogICAgIG1HTFN0
YXRlLnNldEFjdGl2ZVF1ZXJ5KHRhcmdldCwgcXVlcnlPYmplY3QpOwogCi0gICAgcmV0dXJuIEVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCiBFcnJvciBDb250
ZXh0OjplbmRRdWVyeShHTGVudW0gdGFyZ2V0KQpAQCAtMTE1MiwxMCArMTI0Nyw5IEBAIHZvaWQg
Q29udGV4dDo6Z2V0UXVlcnlPYmplY3R1aTY0dihHTHVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1
aW50NjQgKnBhcmFtcykKICAgICBoYW5kbGVFcnJvcihHZXRRdWVyeU9iamVjdFBhcmFtZXRlcihn
ZXRRdWVyeShpZCksIHBuYW1lLCBwYXJhbXMpKTsKIH0KIAotRnJhbWVidWZmZXIgKkNvbnRleHQ6
OmdldEZyYW1lYnVmZmVyKHVuc2lnbmVkIGludCBoYW5kbGUpIGNvbnN0CitGcmFtZWJ1ZmZlciAq
Q29udGV4dDo6Z2V0RnJhbWVidWZmZXIoR0x1aW50IGhhbmRsZSkgY29uc3QKIHsKLSAgICBhdXRv
IGZyYW1lYnVmZmVySXQgPSBtRnJhbWVidWZmZXJNYXAuZmluZChoYW5kbGUpOwotICAgIHJldHVy
biAoKGZyYW1lYnVmZmVySXQgPT0gbUZyYW1lYnVmZmVyTWFwLmVuZCgpKSA/IG51bGxwdHIgOiBm
cmFtZWJ1ZmZlckl0LT5zZWNvbmQpOworICAgIHJldHVybiBtU3RhdGUubUZyYW1lYnVmZmVycy0+
Z2V0RnJhbWVidWZmZXIoaGFuZGxlKTsKIH0KIAogRmVuY2VOViAqQ29udGV4dDo6Z2V0RmVuY2VO
Vih1bnNpZ25lZCBpbnQgaGFuZGxlKQpAQCAtMTIxMyw3ICsxMzA3LDcgQEAgQ29tcGlsZXIgKkNv
bnRleHQ6OmdldENvbXBpbGVyKCkgY29uc3QKICAgICByZXR1cm4gbUNvbXBpbGVyOwogfQogCi12
b2lkIENvbnRleHQ6OmdldEJvb2xlYW52KEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpwYXJhbXMp
Cit2b2lkIENvbnRleHQ6OmdldEJvb2xlYW52SW1wbChHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAq
cGFyYW1zKQogewogICAgIHN3aXRjaCAocG5hbWUpCiAgICAgewpAQCAtMTIyNSw3ICsxMzE5LDcg
QEAgdm9pZCBDb250ZXh0OjpnZXRCb29sZWFudihHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqcGFy
YW1zKQogICAgIH0KIH0KIAotdm9pZCBDb250ZXh0OjpnZXRGbG9hdHYoR0xlbnVtIHBuYW1lLCBH
TGZsb2F0ICpwYXJhbXMpCit2b2lkIENvbnRleHQ6OmdldEZsb2F0dkltcGwoR0xlbnVtIHBuYW1l
LCBHTGZsb2F0ICpwYXJhbXMpCiB7CiAgICAgLy8gUXVlcmllcyBhYm91dCBjb250ZXh0IGNhcGFi
aWxpdGllcyBhbmQgbWF4aW11bXMgYXJlIGFuc3dlcmVkIGJ5IENvbnRleHQuCiAgICAgLy8gUXVl
cmllcyBhYm91dCBjdXJyZW50IEdMIHN0YXRlIHZhbHVlcyBhcmUgYW5zd2VyZWQgYnkgU3RhdGUu
CkBAIC0xMjYyLDcgKzEzNTYsNyBAQCB2b2lkIENvbnRleHQ6OmdldEZsb2F0dihHTGVudW0gcG5h
bWUsIEdMZmxvYXQgKnBhcmFtcykKICAgICB9CiB9CiAKLXZvaWQgQ29udGV4dDo6Z2V0SW50ZWdl
cnYoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQordm9pZCBDb250ZXh0OjpnZXRJbnRlZ2Vy
dkltcGwoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogewogICAgIC8vIFF1ZXJpZXMgYWJv
dXQgY29udGV4dCBjYXBhYmlsaXRpZXMgYW5kIG1heGltdW1zIGFyZSBhbnN3ZXJlZCBieSBDb250
ZXh0LgogICAgIC8vIFF1ZXJpZXMgYWJvdXQgY3VycmVudCBHTCBzdGF0ZSB2YWx1ZXMgYXJlIGFu
c3dlcmVkIGJ5IFN0YXRlLgpAQCAtMTI5OCwxMCArMTM5MiwxMCBAQCB2b2lkIENvbnRleHQ6Omdl
dEludGVnZXJ2KEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKICAgICAgIGNhc2UgR0xfTUlO
X1BST0dSQU1fVEVYRUxfT0ZGU0VUOiAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IG1DYXBzLm1p
blByb2dyYW1UZXhlbE9mZnNldDsgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgY2FzZSBHTF9NQVhfUFJPR1JBTV9URVhFTF9PRkZTRVQ6ICAgICAgICAgICAgICAgICAqcGFy
YW1zID0gbUNhcHMubWF4UHJvZ3JhbVRleGVsT2Zmc2V0OyAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX01BSk9SX1ZFUlNJT046Ci0gICAgICAgICAgKnBhcmFt
cyA9IG1DbGllbnRNYWpvclZlcnNpb247CisgICAgICAgICAgKnBhcmFtcyA9IGdldENsaWVudFZl
cnNpb24oKS5tYWpvcjsKICAgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfTUlOT1JfVkVS
U0lPTjoKLSAgICAgICAgICAqcGFyYW1zID0gbUNsaWVudE1pbm9yVmVyc2lvbjsKKyAgICAgICAg
ICAqcGFyYW1zID0gZ2V0Q2xpZW50VmVyc2lvbigpLm1pbm9yOwogICAgICAgICAgIGJyZWFrOwog
ICAgICAgY2FzZSBHTF9NQVhfRUxFTUVOVFNfSU5ESUNFUzogICAgICAgICAgICAgICAgICAgICAq
cGFyYW1zID0gbUNhcHMubWF4RWxlbWVudHNJbmRpY2VzOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX01BWF9FTEVNRU5UU19WRVJUSUNFUzogICAgICAg
ICAgICAgICAgICAgICpwYXJhbXMgPSBtQ2Fwcy5tYXhFbGVtZW50c1ZlcnRpY2VzOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTE0ODIsNyArMTU3Niw3IEBAIHZvaWQgQ29u
dGV4dDo6Z2V0SW50ZWdlcnYoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogICAgICAgICAg
ICpwYXJhbXMgPSBtQ2Fwcy5zaGFkZXJTdG9yYWdlQnVmZmVyT2Zmc2V0QWxpZ25tZW50OwogICAg
ICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDoKLSAgICAgICAgICBtR0xTdGF0ZS5nZXRJbnRl
Z2VydihtU3RhdGUsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICAgIG1HTFN0YXRlLmdldEludGVn
ZXJ2KHRoaXMsIHBuYW1lLCBwYXJhbXMpOwogICAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAg
LTE1MzYsNyArMTYzMCw2IEBAIHZvaWQgQ29udGV4dDo6Z2V0SW50ZWdlcmlfdihHTGVudW0gdGFy
Z2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50ICpkYXRhKQogICAgIEdMZW51bSBuYXRpdmVUeXBlOwog
ICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXM7CiAgICAgYm9vbCBxdWVyeVN0YXR1cyA9IGdldElu
ZGV4ZWRRdWVyeVBhcmFtZXRlckluZm8odGFyZ2V0LCAmbmF0aXZlVHlwZSwgJm51bVBhcmFtcyk7
Ci0gICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShxdWVyeVN0YXR1cyk7CiAgICAgQVNTRVJU
KHF1ZXJ5U3RhdHVzKTsKIAogICAgIGlmIChuYXRpdmVUeXBlID09IEdMX0lOVCkKQEAgLTE1Njks
NyArMTY2Miw2IEBAIHZvaWQgQ29udGV4dDo6Z2V0SW50ZWdlcjY0aV92KEdMZW51bSB0YXJnZXQs
IEdMdWludCBpbmRleCwgR0xpbnQ2NCAqZGF0YSkKICAgICBHTGVudW0gbmF0aXZlVHlwZTsKICAg
ICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zOwogICAgIGJvb2wgcXVlcnlTdGF0dXMgPSBnZXRJbmRl
eGVkUXVlcnlQYXJhbWV0ZXJJbmZvKHRhcmdldCwgJm5hdGl2ZVR5cGUsICZudW1QYXJhbXMpOwot
ICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUocXVlcnlTdGF0dXMpOwogICAgIEFTU0VSVChx
dWVyeVN0YXR1cyk7CiAKICAgICBpZiAobmF0aXZlVHlwZSA9PSBHTF9JTlRfNjRfQU5HTEVYKQpA
QCAtMTU5MCw3ICsxNjgyLDYgQEAgdm9pZCBDb250ZXh0OjpnZXRCb29sZWFuaV92KEdMZW51bSB0
YXJnZXQsIEdMdWludCBpbmRleCwgR0xib29sZWFuICpkYXRhKQogICAgIEdMZW51bSBuYXRpdmVU
eXBlOwogICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXM7CiAgICAgYm9vbCBxdWVyeVN0YXR1cyA9
IGdldEluZGV4ZWRRdWVyeVBhcmFtZXRlckluZm8odGFyZ2V0LCAmbmF0aXZlVHlwZSwgJm51bVBh
cmFtcyk7Ci0gICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShxdWVyeVN0YXR1cyk7CiAgICAg
QVNTRVJUKHF1ZXJ5U3RhdHVzKTsKIAogICAgIGlmIChuYXRpdmVUeXBlID09IEdMX0JPT0wpCkBA
IC0xNjAzLDY2ICsxNjk0LDEzOSBAQCB2b2lkIENvbnRleHQ6OmdldEJvb2xlYW5pX3YoR0xlbnVt
IHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGJvb2xlYW4gKmRhdGEpCiAgICAgfQogfQogCi1FcnJv
ciBDb250ZXh0OjpkcmF3QXJyYXlzKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBj
b3VudCkKK3ZvaWQgQ29udGV4dDo6Z2V0QnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIEJ1ZmZlciAqYnVmZmVyID0gbUdM
U3RhdGUuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CisgICAgUXVlcnlCdWZmZXJQYXJhbWV0ZXJp
dihidWZmZXIsIHBuYW1lLCBwYXJhbXMpOworfQorCit2b2lkIENvbnRleHQ6OmdldEZyYW1lYnVm
ZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5h
bWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50ICpwYXJhbXMpCit7CisgICAgY29uc3QgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbUdM
U3RhdGUuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsKKyAgICBRdWVyeUZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2KGZyYW1lYnVmZmVyLCBhdHRhY2htZW50LCBwbmFtZSwgcGFy
YW1zKTsKK30KKwordm9pZCBDb250ZXh0OjpnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAgUmVuZGVyYnVm
ZmVyICpyZW5kZXJidWZmZXIgPSBtR0xTdGF0ZS5nZXRDdXJyZW50UmVuZGVyYnVmZmVyKCk7Cisg
ICAgUXVlcnlSZW5kZXJidWZmZXJpdih0aGlzLCByZW5kZXJidWZmZXIsIHBuYW1lLCBwYXJhbXMp
OworfQorCit2b2lkIENvbnRleHQ6OmdldFRleFBhcmFtZXRlcmZ2KEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKQoreworICAgIFRleHR1cmUgKnRleHR1cmUgPSBn
ZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7CisgICAgUXVlcnlUZXhQYXJhbWV0ZXJmdih0ZXh0dXJl
LCBwbmFtZSwgcGFyYW1zKTsKK30KKwordm9pZCBDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXJpdihH
TGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAgVGV4dHVy
ZSAqdGV4dHVyZSA9IGdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKKyAgICBRdWVyeVRleFBhcmFt
ZXRlcml2KHRleHR1cmUsIHBuYW1lLCBwYXJhbXMpOworfQordm9pZCBDb250ZXh0Ojp0ZXhQYXJh
bWV0ZXJmKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKK3sKKyAg
ICBUZXh0dXJlICp0ZXh0dXJlID0gZ2V0VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOworICAgIFNldFRl
eFBhcmFtZXRlcmYodGV4dHVyZSwgcG5hbWUsIHBhcmFtKTsKK30KKwordm9pZCBDb250ZXh0Ojp0
ZXhQYXJhbWV0ZXJmdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMZmxvYXQg
KnBhcmFtcykKK3sKKyAgICBUZXh0dXJlICp0ZXh0dXJlID0gZ2V0VGFyZ2V0VGV4dHVyZSh0YXJn
ZXQpOworICAgIFNldFRleFBhcmFtZXRlcmZ2KHRleHR1cmUsIHBuYW1lLCBwYXJhbXMpOworfQor
Cit2b2lkIENvbnRleHQ6OnRleFBhcmFtZXRlcmkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1l
LCBHTGludCBwYXJhbSkKK3sKKyAgICBUZXh0dXJlICp0ZXh0dXJlID0gZ2V0VGFyZ2V0VGV4dHVy
ZSh0YXJnZXQpOworICAgIFNldFRleFBhcmFtZXRlcmkodGV4dHVyZSwgcG5hbWUsIHBhcmFtKTsK
K30KKwordm9pZCBDb250ZXh0Ojp0ZXhQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0g
cG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbXMpCit7CisgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGdl
dFRhcmdldFRleHR1cmUodGFyZ2V0KTsKKyAgICBTZXRUZXhQYXJhbWV0ZXJpdih0ZXh0dXJlLCBw
bmFtZSwgcGFyYW1zKTsKK30KKwordm9pZCBDb250ZXh0OjpkcmF3QXJyYXlzKEdMZW51bSBtb2Rl
LCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCkKIHsKICAgICBzeW5jUmVuZGVyZXJTdGF0ZSgp
OwotICAgIEFOR0xFX1RSWShtSW1wbGVtZW50YXRpb24tPmRyYXdBcnJheXMobW9kZSwgZmlyc3Qs
IGNvdW50KSk7Ci0gICAgTWFya1RyYW5zZm9ybUZlZWRiYWNrQnVmZmVyVXNhZ2UobUdMU3RhdGUu
Z2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCkpOworICAgIGF1dG8gZXJyb3IgPSBtSW1wbGVt
ZW50YXRpb24tPmRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsKKyAgICBoYW5kbGVFcnJv
cihlcnJvcik7CisgICAgaWYgKCFlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBNYXJr
VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJVc2FnZShtR0xTdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3Jt
RmVlZGJhY2soKSk7CisgICAgfQorfQogCi0gICAgcmV0dXJuIE5vRXJyb3IoKTsKK3ZvaWQgQ29u
dGV4dDo6ZHJhd0FycmF5c0luc3RhbmNlZChHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6
ZWkgY291bnQsIEdMc2l6ZWkgaW5zdGFuY2VDb3VudCkKK3sKKyAgICBzeW5jUmVuZGVyZXJTdGF0
ZSgpOworICAgIGF1dG8gZXJyb3IgPSBtSW1wbGVtZW50YXRpb24tPmRyYXdBcnJheXNJbnN0YW5j
ZWQobW9kZSwgZmlyc3QsIGNvdW50LCBpbnN0YW5jZUNvdW50KTsKKyAgICBoYW5kbGVFcnJvcihl
cnJvcik7CisgICAgaWYgKCFlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICBNYXJrVHJh
bnNmb3JtRmVlZGJhY2tCdWZmZXJVc2FnZShtR0xTdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVl
ZGJhY2soKSk7CisgICAgfQogfQogCi1FcnJvciBDb250ZXh0OjpkcmF3QXJyYXlzSW5zdGFuY2Vk
KEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5j
ZUNvdW50KQordm9pZCBDb250ZXh0OjpkcmF3RWxlbWVudHMoR0xlbnVtIG1vZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZv
aWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbmRleFJhbmdl
ICZpbmRleFJhbmdlKQogewogICAgIHN5bmNSZW5kZXJlclN0YXRlKCk7Ci0gICAgQU5HTEVfVFJZ
KG1JbXBsZW1lbnRhdGlvbi0+ZHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQs
IGluc3RhbmNlQ291bnQpKTsKLSAgICBNYXJrVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJVc2FnZSht
R0xTdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKSk7CisgICAgaGFuZGxlRXJyb3Io
bUltcGxlbWVudGF0aW9uLT5kcmF3RWxlbWVudHMobW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMs
IGluZGV4UmFuZ2UpKTsKK30KIAotICAgIHJldHVybiBOb0Vycm9yKCk7Cit2b2lkIENvbnRleHQ6
OmRyYXdFbGVtZW50c0luc3RhbmNlZChHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgSW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKK3sKKyAgICBzeW5jUmVuZGVyZXJT
dGF0ZSgpOworICAgIGhhbmRsZUVycm9yKAorICAgICAgICBtSW1wbGVtZW50YXRpb24tPmRyYXdF
bGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgaW5zdGFuY2VzLCBp
bmRleFJhbmdlKSk7CiB9CiAKLUVycm9yIENvbnRleHQ6OmRyYXdFbGVtZW50cyhHTGVudW0gbW9k
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBJbmRleFJhbmdlICZpbmRleFJhbmdlKQordm9pZCBDb250ZXh0OjpkcmF3UmFuZ2VFbGVt
ZW50cyhHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZW5kLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBJbmRleFJhbmdlICZpbmRleFJhbmdlKQogewogICAgIHN5bmNSZW5kZXJl
clN0YXRlKCk7Ci0gICAgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbi0+ZHJhd0VsZW1lbnRzKG1vZGUs
IGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbmRleFJhbmdlKTsKKyAgICBoYW5kbGVFcnJvcigKKyAg
ICAgICAgbUltcGxlbWVudGF0aW9uLT5kcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5k
LCBjb3VudCwgdHlwZSwgaW5kaWNlcywgaW5kZXhSYW5nZSkpOwogfQogCi1FcnJvciBDb250ZXh0
OjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkKK3ZvaWQgQ29udGV4dDo6
ZHJhd0FycmF5c0luZGlyZWN0KEdMZW51bSBtb2RlLCBjb25zdCBHTHZvaWQgKmluZGlyZWN0KQog
ewogICAgIHN5bmNSZW5kZXJlclN0YXRlKCk7Ci0gICAgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbi0+
ZHJhd0VsZW1lbnRzSW5zdGFuY2VkKG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBpbnN0YW5j
ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
ZGV4UmFuZ2UpOworICAgIGhhbmRsZUVycm9yKG1JbXBsZW1lbnRhdGlvbi0+ZHJhd0FycmF5c0lu
ZGlyZWN0KG1vZGUsIGluZGlyZWN0KSk7CiB9CiAKLUVycm9yIENvbnRleHQ6OmRyYXdSYW5nZUVs
ZW1lbnRzKEdMZW51bSBtb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVuZCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpCit2b2lkIENvbnRl
eHQ6OmRyYXdFbGVtZW50c0luZGlyZWN0KEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgY29uc3Qg
R0x2b2lkICppbmRpcmVjdCkKIHsKICAgICBzeW5jUmVuZGVyZXJTdGF0ZSgpOwotICAgIHJldHVy
biBtSW1wbGVtZW50YXRpb24tPmRyYXdSYW5nZUVsZW1lbnRzKG1vZGUsIHN0YXJ0LCBlbmQsIGNv
dW50LCB0eXBlLCBpbmRpY2VzLCBpbmRleFJhbmdlKTsKKyAgICBoYW5kbGVFcnJvcihtSW1wbGVt
ZW50YXRpb24tPmRyYXdFbGVtZW50c0luZGlyZWN0KG1vZGUsIHR5cGUsIGluZGlyZWN0KSk7CiB9
CiAKLUVycm9yIENvbnRleHQ6OmZsdXNoKCkKK3ZvaWQgQ29udGV4dDo6Zmx1c2goKQogewotICAg
IHJldHVybiBtSW1wbGVtZW50YXRpb24tPmZsdXNoKCk7CisgICAgaGFuZGxlRXJyb3IobUltcGxl
bWVudGF0aW9uLT5mbHVzaCgpKTsKIH0KIAotRXJyb3IgQ29udGV4dDo6ZmluaXNoKCkKK3ZvaWQg
Q29udGV4dDo6ZmluaXNoKCkKIHsKLSAgICByZXR1cm4gbUltcGxlbWVudGF0aW9uLT5maW5pc2go
KTsKKyAgICBoYW5kbGVFcnJvcihtSW1wbGVtZW50YXRpb24tPmZpbmlzaCgpKTsKIH0KIAogdm9p
ZCBDb250ZXh0OjppbnNlcnRFdmVudE1hcmtlcihHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAq
bWFya2VyKQpAQCAtMTcxMSw3ICsxODc1LDcgQEAgdm9pZCBDb250ZXh0Ojpsb2FkUGF0aFJlbmRl
cmluZ0lkZW50aXR5TWF0cml4KEdMZW51bSBtYXRyaXhNb2RlKQogCiB2b2lkIENvbnRleHQ6OnN0
ZW5jaWxGaWxsUGF0aChHTHVpbnQgcGF0aCwgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQgbWFzaykK
IHsKLSAgICBjb25zdCBhdXRvICpwYXRoT2JqID0gbVJlc291cmNlTWFuYWdlci0+Z2V0UGF0aChw
YXRoKTsKKyAgICBjb25zdCBhdXRvICpwYXRoT2JqID0gbVN0YXRlLm1QYXRocy0+Z2V0UGF0aChw
YXRoKTsKICAgICBpZiAoIXBhdGhPYmopCiAgICAgICAgIHJldHVybjsKIApAQCAtMTcyMyw3ICsx
ODg3LDcgQEAgdm9pZCBDb250ZXh0OjpzdGVuY2lsRmlsbFBhdGgoR0x1aW50IHBhdGgsIEdMZW51
bSBmaWxsTW9kZSwgR0x1aW50IG1hc2spCiAKIHZvaWQgQ29udGV4dDo6c3RlbmNpbFN0cm9rZVBh
dGgoR0x1aW50IHBhdGgsIEdMaW50IHJlZmVyZW5jZSwgR0x1aW50IG1hc2spCiB7Ci0gICAgY29u
c3QgYXV0byAqcGF0aE9iaiA9IG1SZXNvdXJjZU1hbmFnZXItPmdldFBhdGgocGF0aCk7CisgICAg
Y29uc3QgYXV0byAqcGF0aE9iaiA9IG1TdGF0ZS5tUGF0aHMtPmdldFBhdGgocGF0aCk7CiAgICAg
aWYgKCFwYXRoT2JqKQogICAgICAgICByZXR1cm47CiAKQEAgLTE3MzUsNyArMTg5OSw3IEBAIHZv
aWQgQ29udGV4dDo6c3RlbmNpbFN0cm9rZVBhdGgoR0x1aW50IHBhdGgsIEdMaW50IHJlZmVyZW5j
ZSwgR0x1aW50IG1hc2spCiAKIHZvaWQgQ29udGV4dDo6Y292ZXJGaWxsUGF0aChHTHVpbnQgcGF0
aCwgR0xlbnVtIGNvdmVyTW9kZSkKIHsKLSAgICBjb25zdCBhdXRvICpwYXRoT2JqID0gbVJlc291
cmNlTWFuYWdlci0+Z2V0UGF0aChwYXRoKTsKKyAgICBjb25zdCBhdXRvICpwYXRoT2JqID0gbVN0
YXRlLm1QYXRocy0+Z2V0UGF0aChwYXRoKTsKICAgICBpZiAoIXBhdGhPYmopCiAgICAgICAgIHJl
dHVybjsKIApAQCAtMTc0Nyw3ICsxOTExLDcgQEAgdm9pZCBDb250ZXh0Ojpjb3ZlckZpbGxQYXRo
KEdMdWludCBwYXRoLCBHTGVudW0gY292ZXJNb2RlKQogCiB2b2lkIENvbnRleHQ6OmNvdmVyU3Ry
b2tlUGF0aChHTHVpbnQgcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkKIHsKLSAgICBjb25zdCBhdXRv
ICpwYXRoT2JqID0gbVJlc291cmNlTWFuYWdlci0+Z2V0UGF0aChwYXRoKTsKKyAgICBjb25zdCBh
dXRvICpwYXRoT2JqID0gbVN0YXRlLm1QYXRocy0+Z2V0UGF0aChwYXRoKTsKICAgICBpZiAoIXBh
dGhPYmopCiAgICAgICAgIHJldHVybjsKIApAQCAtMTc1OSw3ICsxOTIzLDcgQEAgdm9pZCBDb250
ZXh0Ojpjb3ZlclN0cm9rZVBhdGgoR0x1aW50IHBhdGgsIEdMZW51bSBjb3Zlck1vZGUpCiAKIHZv
aWQgQ29udGV4dDo6c3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoKEdMdWludCBwYXRoLCBHTGVudW0g
ZmlsbE1vZGUsIEdMdWludCBtYXNrLCBHTGVudW0gY292ZXJNb2RlKQogewotICAgIGNvbnN0IGF1
dG8gKnBhdGhPYmogPSBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRQYXRoKHBhdGgpOworICAgIGNvbnN0
IGF1dG8gKnBhdGhPYmogPSBtU3RhdGUubVBhdGhzLT5nZXRQYXRoKHBhdGgpOwogICAgIGlmICgh
cGF0aE9iaikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzc0LDcgKzE5MzgsNyBAQCB2b2lkIENv
bnRleHQ6OnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoKEdMdWludCBwYXRoLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkKIHsKLSAgICBj
b25zdCBhdXRvICpwYXRoT2JqID0gbVJlc291cmNlTWFuYWdlci0+Z2V0UGF0aChwYXRoKTsKKyAg
ICBjb25zdCBhdXRvICpwYXRoT2JqID0gbVN0YXRlLm1QYXRocy0+Z2V0UGF0aChwYXRoKTsKICAg
ICBpZiAoIXBhdGhPYmopCiAgICAgICAgIHJldHVybjsKIApAQCAtMTc5Miw4ICsxOTU2LDcgQEAg
dm9pZCBDb250ZXh0Ojpjb3ZlckZpbGxQYXRoSW5zdGFuY2VkKEdMc2l6ZWkgbnVtUGF0aHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJh
bnNmb3JtVmFsdWVzKQogewotICAgIGNvbnN0IGF1dG8gJnBhdGhPYmplY3RzID0KLSAgICAgICAg
R2F0aGVyUGF0aHMoKm1SZXNvdXJjZU1hbmFnZXIsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBh
dGhzLCBwYXRoQmFzZSk7CisgICAgY29uc3QgYXV0byAmcGF0aE9iamVjdHMgPSBHYXRoZXJQYXRo
cygqbVN0YXRlLm1QYXRocywgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNl
KTsKIAogICAgIC8vIFRPRE8oc3ZhaXNhbmVuQG52aWRpYS5jb20pOiBtYXliZSBzeW5jIG9ubHkg
c3RhdGUgcmVxdWlyZWQgZm9yIHBhdGggcmVuZGVyaW5nPwogICAgIHN5bmNSZW5kZXJlclN0YXRl
KCk7CkBAIC0xODA5LDggKzE5NzIsNyBAQCB2b2lkIENvbnRleHQ6OmNvdmVyU3Ryb2tlUGF0aElu
c3RhbmNlZChHTHNpemVpIG51bVBhdGhzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCiB7Ci0gICAgY29u
c3QgYXV0byAmcGF0aE9iamVjdHMgPQotICAgICAgICBHYXRoZXJQYXRocygqbVJlc291cmNlTWFu
YWdlciwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlKTsKKyAgICBjb25z
dCBhdXRvICZwYXRoT2JqZWN0cyA9IEdhdGhlclBhdGhzKCptU3RhdGUubVBhdGhzLCBudW1QYXRo
cywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UpOwogCiAgICAgLy8gVE9ETyhzdmFpc2Fu
ZW5AbnZpZGlhLmNvbSk6IG1heWJlIHN5bmMgb25seSBzdGF0ZSByZXF1aXJlZCBmb3IgcGF0aCBy
ZW5kZXJpbmc/CiAgICAgc3luY1JlbmRlcmVyU3RhdGUoKTsKQEAgLTE4MjgsOCArMTk5MCw3IEBA
IHZvaWQgQ29udGV4dDo6c3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkKEdMc2l6ZWkgbnVtUGF0aHMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3Jt
VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxv
YXQgKnRyYW5zZm9ybVZhbHVlcykKIHsKLSAgICBjb25zdCBhdXRvICZwYXRoT2JqZWN0cyA9Ci0g
ICAgICAgIEdhdGhlclBhdGhzKCptUmVzb3VyY2VNYW5hZ2VyLCBudW1QYXRocywgcGF0aE5hbWVU
eXBlLCBwYXRocywgcGF0aEJhc2UpOworICAgIGNvbnN0IGF1dG8gJnBhdGhPYmplY3RzID0gR2F0
aGVyUGF0aHMoKm1TdGF0ZS5tUGF0aHMsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBw
YXRoQmFzZSk7CiAKICAgICAvLyBUT0RPKHN2YWlzYW5lbkBudmlkaWEuY29tKTogbWF5YmUgc3lu
YyBvbmx5IHN0YXRlIHJlcXVpcmVkIGZvciBwYXRoIHJlbmRlcmluZz8KICAgICBzeW5jUmVuZGVy
ZXJTdGF0ZSgpOwpAQCAtMTg0Nyw4ICsyMDA4LDcgQEAgdm9pZCBDb250ZXh0OjpzdGVuY2lsU3Ry
b2tlUGF0aEluc3RhbmNlZChHTHNpemVpIG51bVBhdGhzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVz
KQogewotICAgIGNvbnN0IGF1dG8gJnBhdGhPYmplY3RzID0KLSAgICAgICAgR2F0aGVyUGF0aHMo
Km1SZXNvdXJjZU1hbmFnZXIsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFz
ZSk7CisgICAgY29uc3QgYXV0byAmcGF0aE9iamVjdHMgPSBHYXRoZXJQYXRocygqbVN0YXRlLm1Q
YXRocywgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhCYXNlKTsKIAogICAgIC8v
IFRPRE8oc3ZhaXNhbmVuQG52aWRpYS5jb20pOiBtYXliZSBzeW5jIG9ubHkgc3RhdGUgcmVxdWly
ZWQgZm9yIHBhdGggcmVuZGVyaW5nPwogICAgIHN5bmNSZW5kZXJlclN0YXRlKCk7CkBAIC0xODY3
LDggKzIwMjcsNyBAQCB2b2lkIENvbnRleHQ6OnN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3Rh
bmNlZChHTHNpemVpIG51bVBhdGhzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1
ZXMpCiB7Ci0gICAgY29uc3QgYXV0byAmcGF0aE9iamVjdHMgPQotICAgICAgICBHYXRoZXJQYXRo
cygqbVJlc291cmNlTWFuYWdlciwgbnVtUGF0aHMsIHBhdGhOYW1lVHlwZSwgcGF0aHMsIHBhdGhC
YXNlKTsKKyAgICBjb25zdCBhdXRvICZwYXRoT2JqZWN0cyA9IEdhdGhlclBhdGhzKCptU3RhdGUu
bVBhdGhzLCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRocywgcGF0aEJhc2UpOwogCiAgICAg
Ly8gVE9ETyhzdmFpc2FuZW5AbnZpZGlhLmNvbSk6IG1heWJlIHN5bmMgb25seSBzdGF0ZSByZXF1
aXJlZCBmb3IgcGF0aCByZW5kZXJpbmc/CiAgICAgc3luY1JlbmRlcmVyU3RhdGUoKTsKQEAgLTE4
ODcsOCArMjA0Niw3IEBAIHZvaWQgQ29udGV4dDo6c3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJ
bnN0YW5jZWQoR0xzaXplaSBudW1QYXRocywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5z
Zm9ybVZhbHVlcykKIHsKLSAgICBjb25zdCBhdXRvICZwYXRoT2JqZWN0cyA9Ci0gICAgICAgIEdh
dGhlclBhdGhzKCptUmVzb3VyY2VNYW5hZ2VyLCBudW1QYXRocywgcGF0aE5hbWVUeXBlLCBwYXRo
cywgcGF0aEJhc2UpOworICAgIGNvbnN0IGF1dG8gJnBhdGhPYmplY3RzID0gR2F0aGVyUGF0aHMo
Km1TdGF0ZS5tUGF0aHMsIG51bVBhdGhzLCBwYXRoTmFtZVR5cGUsIHBhdGhzLCBwYXRoQmFzZSk7
CiAKICAgICAvLyBUT0RPKHN2YWlzYW5lbkBudmlkaWEuY29tKTogbWF5YmUgc3luYyBvbmx5IHN0
YXRlIHJlcXVpcmVkIGZvciBwYXRoIHJlbmRlcmluZz8KICAgICBzeW5jUmVuZGVyZXJTdGF0ZSgp
OwpAQCAtMTkxNSw2ICsyMDczLDIzIEBAIHZvaWQgQ29udGV4dDo6cHJvZ3JhbVBhdGhGcmFnbWVu
dElucHV0R2VuKEdMdWludCBwcm9ncmFtLAogICAgIHByb2dyYW1PYmplY3QtPnBhdGhGcmFnbWVu
dElucHV0R2VuKGxvY2F0aW9uLCBnZW5Nb2RlLCBjb21wb25lbnRzLCBjb2VmZnMpOwogfQogCitH
THVpbnQgQ29udGV4dDo6Z2V0UHJvZ3JhbVJlc291cmNlSW5kZXgoR0x1aW50IHByb2dyYW0sIEdM
ZW51bSBwcm9ncmFtSW50ZXJmYWNlLCBjb25zdCBHTGNoYXIgKm5hbWUpCit7CisgICAgY29uc3Qg
YXV0byAqcHJvZ3JhbU9iamVjdCA9IGdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgcmV0dXJuIFF1
ZXJ5UHJvZ3JhbVJlc291cmNlSW5kZXgocHJvZ3JhbU9iamVjdCwgcHJvZ3JhbUludGVyZmFjZSwg
bmFtZSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6Z2V0UHJvZ3JhbVJlc291cmNlTmFtZShHTHVpbnQg
cHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJv
Z3JhbUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxl
bmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm5hbWUp
Cit7CisgICAgY29uc3QgYXV0byAqcHJvZ3JhbU9iamVjdCA9IGdldFByb2dyYW0ocHJvZ3JhbSk7
CisgICAgUXVlcnlQcm9ncmFtUmVzb3VyY2VOYW1lKHByb2dyYW1PYmplY3QsIHByb2dyYW1JbnRl
cmZhY2UsIGluZGV4LCBidWZTaXplLCBsZW5ndGgsIG5hbWUpOworfQorCiB2b2lkIENvbnRleHQ6
OmhhbmRsZUVycm9yKGNvbnN0IEVycm9yICZlcnJvcikKIHsKICAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQpAQCAtMjAyNSwxOSArMjIwMCwxNSBAQCBFR0xlbnVtIENvbnRleHQ6OmdldENsaWVudFR5
cGUoKSBjb25zdAogCiBFR0xlbnVtIENvbnRleHQ6OmdldFJlbmRlckJ1ZmZlcigpIGNvbnN0CiB7
Ci0gICAgYXV0byBmcmFtZWJ1ZmZlckl0ID0gbUZyYW1lYnVmZmVyTWFwLmZpbmQoMCk7Ci0gICAg
aWYgKGZyYW1lYnVmZmVySXQgIT0gbUZyYW1lYnVmZmVyTWFwLmVuZCgpKQotICAgIHsKLSAgICAg
ICAgY29uc3QgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyICAgICAgICAgICAgICA9IGZyYW1lYnVm
ZmVySXQtPnNlY29uZDsKLSAgICAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpiYWNr
QXR0YWNobWVudCA9IGZyYW1lYnVmZmVyLT5nZXRBdHRhY2htZW50KEdMX0JBQ0spOwotCi0gICAg
ICAgIEFTU0VSVChiYWNrQXR0YWNobWVudCAhPSBudWxscHRyKTsKLSAgICAgICAgcmV0dXJuIGJh
Y2tBdHRhY2htZW50LT5nZXRTdXJmYWNlKCktPmdldFJlbmRlckJ1ZmZlcigpOwotICAgIH0KLSAg
ICBlbHNlCisgICAgY29uc3QgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbVN0YXRlLm1GcmFt
ZWJ1ZmZlcnMtPmdldEZyYW1lYnVmZmVyKDApOworICAgIGlmIChmcmFtZWJ1ZmZlciA9PSBudWxs
cHRyKQogICAgIHsKICAgICAgICAgcmV0dXJuIEVHTF9OT05FOwogICAgIH0KKworICAgIGNvbnN0
IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqYmFja0F0dGFjaG1lbnQgPSBmcmFtZWJ1ZmZlci0+Z2V0
QXR0YWNobWVudChHTF9CQUNLKTsKKyAgICBBU1NFUlQoYmFja0F0dGFjaG1lbnQgIT0gbnVsbHB0
cik7CisgICAgcmV0dXJuIGJhY2tBdHRhY2htZW50LT5nZXRTdXJmYWNlKCktPmdldFJlbmRlckJ1
ZmZlcigpOwogfQogCiBWZXJ0ZXhBcnJheSAqQ29udGV4dDo6Y2hlY2tWZXJ0ZXhBcnJheUFsbG9j
YXRpb24oR0x1aW50IHZlcnRleEFycmF5SGFuZGxlKQpAQCAtMjA0Niw3ICsyMjE3LDggQEAgVmVy
dGV4QXJyYXkgKkNvbnRleHQ6OmNoZWNrVmVydGV4QXJyYXlBbGxvY2F0aW9uKEdMdWludCB2ZXJ0
ZXhBcnJheUhhbmRsZSkKICAgICBWZXJ0ZXhBcnJheSAqdmVydGV4QXJyYXkgPSBnZXRWZXJ0ZXhB
cnJheSh2ZXJ0ZXhBcnJheUhhbmRsZSk7CiAgICAgaWYgKCF2ZXJ0ZXhBcnJheSkKICAgICB7Ci0g
ICAgICAgIHZlcnRleEFycmF5ID0gbmV3IFZlcnRleEFycmF5KG1JbXBsZW1lbnRhdGlvbi5nZXQo
KSwgdmVydGV4QXJyYXlIYW5kbGUsIE1BWF9WRVJURVhfQVRUUklCUyk7CisgICAgICAgIHZlcnRl
eEFycmF5ID0gbmV3IFZlcnRleEFycmF5KG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgdmVydGV4QXJy
YXlIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1DYXBzLm1h
eFZlcnRleEF0dHJpYnV0ZXMsIG1DYXBzLm1heFZlcnRleEF0dHJpYkJpbmRpbmdzKTsKIAogICAg
ICAgICBtVmVydGV4QXJyYXlNYXBbdmVydGV4QXJyYXlIYW5kbGVdID0gdmVydGV4QXJyYXk7CiAg
ICAgfQpAQCAtMjA2OSw0OCArMjI0MSw2IEBAIFRyYW5zZm9ybUZlZWRiYWNrICpDb250ZXh0Ojpj
aGVja1RyYW5zZm9ybUZlZWRiYWNrQWxsb2NhdGlvbihHTHVpbnQgdHJhbnNmb3JtRmVlCiAgICAg
cmV0dXJuIHRyYW5zZm9ybUZlZWRiYWNrOwogfQogCi1GcmFtZWJ1ZmZlciAqQ29udGV4dDo6Y2hl
Y2tGcmFtZWJ1ZmZlckFsbG9jYXRpb24oR0x1aW50IGZyYW1lYnVmZmVyKQotewotICAgIC8vIENh
biBiZSBjYWxsZWQgZnJvbSBCaW5kIHdpdGhvdXQgYSBwcmlvciBjYWxsIHRvIEdlbi4KLSAgICBh
dXRvIGZyYW1lYnVmZmVySXQgPSBtRnJhbWVidWZmZXJNYXAuZmluZChmcmFtZWJ1ZmZlcik7Ci0g
ICAgYm9vbCBuZXZlckNyZWF0ZWQgPSBmcmFtZWJ1ZmZlckl0ID09IG1GcmFtZWJ1ZmZlck1hcC5l
bmQoKTsKLSAgICBpZiAobmV2ZXJDcmVhdGVkIHx8IGZyYW1lYnVmZmVySXQtPnNlY29uZCA9PSBu
dWxscHRyKQotICAgIHsKLSAgICAgICAgRnJhbWVidWZmZXIgKm5ld0ZCTyA9IG5ldyBGcmFtZWJ1
ZmZlcihtQ2FwcywgbUltcGxlbWVudGF0aW9uLmdldCgpLCBmcmFtZWJ1ZmZlcik7Ci0gICAgICAg
IGlmIChuZXZlckNyZWF0ZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1GcmFtZWJ1ZmZlckhh
bmRsZUFsbG9jYXRvci5yZXNlcnZlKGZyYW1lYnVmZmVyKTsKLSAgICAgICAgICAgIG1GcmFtZWJ1
ZmZlck1hcFtmcmFtZWJ1ZmZlcl0gPSBuZXdGQk87Ci0gICAgICAgICAgICByZXR1cm4gbmV3RkJP
OwotICAgICAgICB9Ci0KLSAgICAgICAgZnJhbWVidWZmZXJJdC0+c2Vjb25kID0gbmV3RkJPOwot
ICAgIH0KLQotICAgIHJldHVybiBmcmFtZWJ1ZmZlckl0LT5zZWNvbmQ7Ci19Ci0KLWJvb2wgQ29u
dGV4dDo6aXNUZXh0dXJlR2VuZXJhdGVkKEdMdWludCB0ZXh0dXJlKSBjb25zdAotewotICAgIHJl
dHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5pc1RleHR1cmVHZW5lcmF0ZWQodGV4dHVyZSk7Ci19Ci0K
LWJvb2wgQ29udGV4dDo6aXNCdWZmZXJHZW5lcmF0ZWQoR0x1aW50IGJ1ZmZlcikgY29uc3QKLXsK
LSAgICByZXR1cm4gbVJlc291cmNlTWFuYWdlci0+aXNCdWZmZXJHZW5lcmF0ZWQoYnVmZmVyKTsK
LX0KLQotYm9vbCBDb250ZXh0Ojppc1JlbmRlcmJ1ZmZlckdlbmVyYXRlZChHTHVpbnQgcmVuZGVy
YnVmZmVyKSBjb25zdAotewotICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5pc1JlbmRlcmJ1
ZmZlckdlbmVyYXRlZChyZW5kZXJidWZmZXIpOwotfQotCi1ib29sIENvbnRleHQ6OmlzRnJhbWVi
dWZmZXJHZW5lcmF0ZWQoR0x1aW50IGZyYW1lYnVmZmVyKSBjb25zdAotewotICAgIEFTU0VSVCht
RnJhbWVidWZmZXJNYXAuZmluZCgwKSAhPSBtRnJhbWVidWZmZXJNYXAuZW5kKCkpOwotICAgIHJl
dHVybiBtRnJhbWVidWZmZXJNYXAuZmluZChmcmFtZWJ1ZmZlcikgIT0gbUZyYW1lYnVmZmVyTWFw
LmVuZCgpOwotfQotCiBib29sIENvbnRleHQ6OmlzVmVydGV4QXJyYXlHZW5lcmF0ZWQoR0x1aW50
IHZlcnRleEFycmF5KQogewogICAgIEFTU0VSVChtVmVydGV4QXJyYXlNYXAuZmluZCgwKSAhPSBt
VmVydGV4QXJyYXlNYXAuZW5kKCkpOwpAQCAtMjEyOSw3ICsyMjU5LDcgQEAgdm9pZCBDb250ZXh0
OjpkZXRhY2hUZXh0dXJlKEdMdWludCB0ZXh0dXJlKQogICAgIC8vIGFsbG9jYXRpb24gbWFwIG1h
bmFnZW1lbnQgZWl0aGVyIGhlcmUgb3IgaW4gdGhlIHJlc291cmNlIG1hbmFnZXIgYXQgZGV0YWNo
IHRpbWUuCiAgICAgLy8gWmVybyB0ZXh0dXJlcyBhcmUgaGVsZCBieSB0aGUgQ29udGV4dCwgYW5k
IHdlIGRvbid0IGF0dGVtcHQgdG8gcmVxdWVzdCB0aGVtIGZyb20KICAgICAvLyB0aGUgU3RhdGUu
Ci0gICAgbUdMU3RhdGUuZGV0YWNoVGV4dHVyZShtWmVyb1RleHR1cmVzLCB0ZXh0dXJlKTsKKyAg
ICBtR0xTdGF0ZS5kZXRhY2hUZXh0dXJlKHRoaXMsIG1aZXJvVGV4dHVyZXMsIHRleHR1cmUpOwog
fQogCiB2b2lkIENvbnRleHQ6OmRldGFjaEJ1ZmZlcihHTHVpbnQgYnVmZmVyKQpAQCAtMjE2OCw3
ICsyMjk4LDcgQEAgdm9pZCBDb250ZXh0OjpkZXRhY2hGcmFtZWJ1ZmZlcihHTHVpbnQgZnJhbWVi
dWZmZXIpCiAKIHZvaWQgQ29udGV4dDo6ZGV0YWNoUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJi
dWZmZXIpCiB7Ci0gICAgbUdMU3RhdGUuZGV0YWNoUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7
CisgICAgbUdMU3RhdGUuZGV0YWNoUmVuZGVyYnVmZmVyKHRoaXMsIHJlbmRlcmJ1ZmZlcik7CiB9
CiAKIHZvaWQgQ29udGV4dDo6ZGV0YWNoVmVydGV4QXJyYXkoR0x1aW50IHZlcnRleEFycmF5KQpA
QCAtMjIxNCw1MiArMjM0NCw0OSBAQCB2b2lkIENvbnRleHQ6OnNldFZlcnRleEF0dHJpYkRpdmlz
b3IoR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcikKIHZvaWQgQ29udGV4dDo6c2FtcGxlclBh
cmFtZXRlcmkoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCiB7CiAg
ICAgU2FtcGxlciAqc2FtcGxlck9iamVjdCA9Ci0gICAgICAgIG1SZXNvdXJjZU1hbmFnZXItPmNo
ZWNrU2FtcGxlckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBzYW1wbGVyKTsKKyAg
ICAgICAgbVN0YXRlLm1TYW1wbGVycy0+Y2hlY2tTYW1wbGVyQWxsb2NhdGlvbihtSW1wbGVtZW50
YXRpb24uZ2V0KCksIHNhbXBsZXIpOwogICAgIFNldFNhbXBsZXJQYXJhbWV0ZXJpKHNhbXBsZXJP
YmplY3QsIHBuYW1lLCBwYXJhbSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6c2FtcGxlclBhcmFtZXRl
cml2KEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5hbWUsIGNvbnN0IEdMaW50ICpwYXJhbSkKIHsK
ICAgICBTYW1wbGVyICpzYW1wbGVyT2JqZWN0ID0KLSAgICAgICAgbVJlc291cmNlTWFuYWdlci0+
Y2hlY2tTYW1wbGVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIHNhbXBsZXIpOwor
ICAgICAgICBtU3RhdGUubVNhbXBsZXJzLT5jaGVja1NhbXBsZXJBbGxvY2F0aW9uKG1JbXBsZW1l
bnRhdGlvbi5nZXQoKSwgc2FtcGxlcik7CiAgICAgU2V0U2FtcGxlclBhcmFtZXRlcml2KHNhbXBs
ZXJPYmplY3QsIHBuYW1lLCBwYXJhbSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6c2FtcGxlclBhcmFt
ZXRlcmYoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBwYXJhbSkKIHsKICAg
ICBTYW1wbGVyICpzYW1wbGVyT2JqZWN0ID0KLSAgICAgICAgbVJlc291cmNlTWFuYWdlci0+Y2hl
Y2tTYW1wbGVyQWxsb2NhdGlvbihtSW1wbGVtZW50YXRpb24uZ2V0KCksIHNhbXBsZXIpOworICAg
ICAgICBtU3RhdGUubVNhbXBsZXJzLT5jaGVja1NhbXBsZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRh
dGlvbi5nZXQoKSwgc2FtcGxlcik7CiAgICAgU2V0U2FtcGxlclBhcmFtZXRlcmYoc2FtcGxlck9i
amVjdCwgcG5hbWUsIHBhcmFtKTsKIH0KIAogdm9pZCBDb250ZXh0OjpzYW1wbGVyUGFyYW1ldGVy
ZnYoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYW0pCiB7
CiAgICAgU2FtcGxlciAqc2FtcGxlck9iamVjdCA9Ci0gICAgICAgIG1SZXNvdXJjZU1hbmFnZXIt
PmNoZWNrU2FtcGxlckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBzYW1wbGVyKTsK
KyAgICAgICAgbVN0YXRlLm1TYW1wbGVycy0+Y2hlY2tTYW1wbGVyQWxsb2NhdGlvbihtSW1wbGVt
ZW50YXRpb24uZ2V0KCksIHNhbXBsZXIpOwogICAgIFNldFNhbXBsZXJQYXJhbWV0ZXJmdihzYW1w
bGVyT2JqZWN0LCBwbmFtZSwgcGFyYW0pOwogfQogCiB2b2lkIENvbnRleHQ6OmdldFNhbXBsZXJQ
YXJhbWV0ZXJpdihHTHVpbnQgc2FtcGxlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQog
ewogICAgIGNvbnN0IFNhbXBsZXIgKnNhbXBsZXJPYmplY3QgPQotICAgICAgICBtUmVzb3VyY2VN
YW5hZ2VyLT5jaGVja1NhbXBsZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlvbi5nZXQoKSwgc2Ft
cGxlcik7CisgICAgICAgIG1TdGF0ZS5tU2FtcGxlcnMtPmNoZWNrU2FtcGxlckFsbG9jYXRpb24o
bUltcGxlbWVudGF0aW9uLmdldCgpLCBzYW1wbGVyKTsKICAgICBRdWVyeVNhbXBsZXJQYXJhbWV0
ZXJpdihzYW1wbGVyT2JqZWN0LCBwbmFtZSwgcGFyYW1zKTsKIH0KIAogdm9pZCBDb250ZXh0Ojpn
ZXRTYW1wbGVyUGFyYW1ldGVyZnYoR0x1aW50IHNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xmbG9h
dCAqcGFyYW1zKQogewogICAgIGNvbnN0IFNhbXBsZXIgKnNhbXBsZXJPYmplY3QgPQotICAgICAg
ICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja1NhbXBsZXJBbGxvY2F0aW9uKG1JbXBsZW1lbnRhdGlv
bi5nZXQoKSwgc2FtcGxlcik7CisgICAgICAgIG1TdGF0ZS5tU2FtcGxlcnMtPmNoZWNrU2FtcGxl
ckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCBzYW1wbGVyKTsKICAgICBRdWVyeVNh
bXBsZXJQYXJhbWV0ZXJmdihzYW1wbGVyT2JqZWN0LCBwbmFtZSwgcGFyYW1zKTsKIH0KIAogdm9p
ZCBDb250ZXh0Ojpwcm9ncmFtUGFyYW1ldGVyaShHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1l
LCBHTGludCB2YWx1ZSkKIHsKICAgICBnbDo6UHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGdldFBy
b2dyYW0ocHJvZ3JhbSk7Ci0gICAgQVNTRVJUKHByb2dyYW1PYmplY3QgIT0gbnVsbHB0cik7Ci0K
LSAgICBBU1NFUlQocG5hbWUgPT0gR0xfUFJPR1JBTV9CSU5BUllfUkVUUklFVkFCTEVfSElOVCk7
Ci0gICAgcHJvZ3JhbU9iamVjdC0+c2V0QmluYXJ5UmV0cmlldmFibGVIaW50KHZhbHVlICE9IEdM
X0ZBTFNFKTsKKyAgICBTZXRQcm9ncmFtUGFyYW1ldGVyaShwcm9ncmFtT2JqZWN0LCBwbmFtZSwg
dmFsdWUpOwogfQogCiB2b2lkIENvbnRleHQ6OmluaXRSZW5kZXJlclN0cmluZygpCkBAIC0yMjcy
LDMyICsyMzk5LDk2IEBAIHZvaWQgQ29udGV4dDo6aW5pdFJlbmRlcmVyU3RyaW5nKCkKICAgICBt
UmVuZGVyZXJTdHJpbmcgPSBNYWtlU3RhdGljU3RyaW5nKHJlbmRlcmVyU3RyaW5nLnN0cigpKTsK
IH0KIAotY29uc3QgY2hhciAqQ29udGV4dDo6Z2V0UmVuZGVyZXJTdHJpbmcoKSBjb25zdAordm9p
ZCBDb250ZXh0Ojppbml0VmVyc2lvblN0cmluZ3MoKQogewotICAgIHJldHVybiBtUmVuZGVyZXJT
dHJpbmc7CisgICAgY29uc3QgVmVyc2lvbiAmY2xpZW50VmVyc2lvbiA9IGdldENsaWVudFZlcnNp
b24oKTsKKworICAgIHN0ZDo6b3N0cmluZ3N0cmVhbSB2ZXJzaW9uU3RyaW5nOworICAgIHZlcnNp
b25TdHJpbmcgPDwgIk9wZW5HTCBFUyAiIDw8IGNsaWVudFZlcnNpb24ubWFqb3IgPDwgIi4iIDw8
IGNsaWVudFZlcnNpb24ubWlub3IgPDwgIiAoQU5HTEUgIgorICAgICAgICAgICAgICAgICAgPDwg
QU5HTEVfVkVSU0lPTl9TVFJJTkcgPDwgIikiOworICAgIG1WZXJzaW9uU3RyaW5nID0gTWFrZVN0
YXRpY1N0cmluZyh2ZXJzaW9uU3RyaW5nLnN0cigpKTsKKworICAgIHN0ZDo6b3N0cmluZ3N0cmVh
bSBzaGFkaW5nTGFuZ3VhZ2VWZXJzaW9uU3RyaW5nOworICAgIHNoYWRpbmdMYW5ndWFnZVZlcnNp
b25TdHJpbmcgPDwgIk9wZW5HTCBFUyBHTFNMIEVTICIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8IChjbGllbnRWZXJzaW9uLm1ham9yID09IDIgPyAxIDogY2xpZW50VmVyc2lv
bi5tYWpvcikgPDwgIi4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBjbGll
bnRWZXJzaW9uLm1pbm9yIDw8ICIwIChBTkdMRSAiIDw8IEFOR0xFX1ZFUlNJT05fU1RSSU5HCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiKSI7CisgICAgbVNoYWRpbmdMYW5n
dWFnZVN0cmluZyA9IE1ha2VTdGF0aWNTdHJpbmcoc2hhZGluZ0xhbmd1YWdlVmVyc2lvblN0cmlu
Zy5zdHIoKSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6aW5pdEV4dGVuc2lvblN0cmluZ3MoKQogewor
ICAgIGF1dG8gbWVyZ2VFeHRlbnNpb25TdHJpbmdzID0gW10oY29uc3Qgc3RkOjp2ZWN0b3I8Y29u
c3QgY2hhciAqPiAmc3RyaW5ncykgeworICAgICAgICBzdGQ6Om9zdHJpbmdzdHJlYW0gY29tYmlu
ZWRTdHJpbmdTdHJlYW07CisgICAgICAgIHN0ZDo6Y29weShzdHJpbmdzLmJlZ2luKCksIHN0cmlu
Z3MuZW5kKCksCisgICAgICAgICAgICAgICAgICBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8Y29uc3Qg
Y2hhciAqPihjb21iaW5lZFN0cmluZ1N0cmVhbSwgIiAiKSk7CisgICAgICAgIHJldHVybiBNYWtl
U3RhdGljU3RyaW5nKGNvbWJpbmVkU3RyaW5nU3RyZWFtLnN0cigpKTsKKyAgICB9OworCisgICAg
bUV4dGVuc2lvblN0cmluZ3MuY2xlYXIoKTsKICAgICBmb3IgKGNvbnN0IGF1dG8gJmV4dGVuc2lv
blN0cmluZyA6IG1FeHRlbnNpb25zLmdldFN0cmluZ3MoKSkKICAgICB7CiAgICAgICAgIG1FeHRl
bnNpb25TdHJpbmdzLnB1c2hfYmFjayhNYWtlU3RhdGljU3RyaW5nKGV4dGVuc2lvblN0cmluZykp
OwogICAgIH0KKyAgICBtRXh0ZW5zaW9uU3RyaW5nID0gbWVyZ2VFeHRlbnNpb25TdHJpbmdzKG1F
eHRlbnNpb25TdHJpbmdzKTsKKworICAgIGNvbnN0IGdsOjpFeHRlbnNpb25zICZuYXRpdmVFeHRl
bnNpb25zID0gbUltcGxlbWVudGF0aW9uLT5nZXROYXRpdmVFeHRlbnNpb25zKCk7CiAKLSAgICBz
dGQ6Om9zdHJpbmdzdHJlYW0gY29tYmluZWRTdHJpbmdTdHJlYW07Ci0gICAgc3RkOjpjb3B5KG1F
eHRlbnNpb25TdHJpbmdzLmJlZ2luKCksIG1FeHRlbnNpb25TdHJpbmdzLmVuZCgpLAotICAgICAg
ICAgICAgICBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8Y29uc3QgY2hhciAqPihjb21iaW5lZFN0cmlu
Z1N0cmVhbSwgIiAiKSk7Ci0gICAgbUV4dGVuc2lvblN0cmluZyA9IE1ha2VTdGF0aWNTdHJpbmco
Y29tYmluZWRTdHJpbmdTdHJlYW0uc3RyKCkpOworICAgIG1SZXF1ZXN0YWJsZUV4dGVuc2lvblN0
cmluZ3MuY2xlYXIoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJmV4dGVuc2lvbkluZm8gOiBHZXRF
eHRlbnNpb25JbmZvTWFwKCkpCisgICAgeworICAgICAgICBpZiAoZXh0ZW5zaW9uSW5mby5zZWNv
bmQuUmVxdWVzdGFibGUgJiYKKyAgICAgICAgICAgICEobUV4dGVuc2lvbnMuKihleHRlbnNpb25J
bmZvLnNlY29uZC5FeHRlbnNpb25zTWVtYmVyKSkgJiYKKyAgICAgICAgICAgIG5hdGl2ZUV4dGVu
c2lvbnMuKihleHRlbnNpb25JbmZvLnNlY29uZC5FeHRlbnNpb25zTWVtYmVyKSkKKyAgICAgICAg
eworICAgICAgICAgICAgbVJlcXVlc3RhYmxlRXh0ZW5zaW9uU3RyaW5ncy5wdXNoX2JhY2soTWFr
ZVN0YXRpY1N0cmluZyhleHRlbnNpb25JbmZvLmZpcnN0KSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgbVJlcXVlc3RhYmxlRXh0ZW5zaW9uU3RyaW5nID0gbWVyZ2VFeHRlbnNpb25TdHJpbmdzKG1S
ZXF1ZXN0YWJsZUV4dGVuc2lvblN0cmluZ3MpOwogfQogCi1jb25zdCBjaGFyICpDb250ZXh0Ojpn
ZXRFeHRlbnNpb25TdHJpbmcoKSBjb25zdAorY29uc3QgR0x1Ynl0ZSAqQ29udGV4dDo6Z2V0U3Ry
aW5nKEdMZW51bSBuYW1lKSBjb25zdAogewotICAgIHJldHVybiBtRXh0ZW5zaW9uU3RyaW5nOwor
ICAgIHN3aXRjaCAobmFtZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVkVORE9SOgorICAgICAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSAqPigiR29vZ2xlIElu
Yy4iKTsKKworICAgICAgICBjYXNlIEdMX1JFTkRFUkVSOgorICAgICAgICAgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSAqPihtUmVuZGVyZXJTdHJpbmcpOworCisgICAg
ICAgIGNhc2UgR0xfVkVSU0lPTjoKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0
PGNvbnN0IEdMdWJ5dGUgKj4obVZlcnNpb25TdHJpbmcpOworCisgICAgICAgIGNhc2UgR0xfU0hB
RElOR19MQU5HVUFHRV9WRVJTSU9OOgorICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0x1Ynl0ZSAqPihtU2hhZGluZ0xhbmd1YWdlU3RyaW5nKTsKKworICAgICAgICBj
YXNlIEdMX0VYVEVOU0lPTlM6CisgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBHTHVieXRlICo+KG1FeHRlbnNpb25TdHJpbmcpOworCisgICAgICAgIGNhc2UgR0xfUkVR
VUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRToKKyAgICAgICAgICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PGNvbnN0IEdMdWJ5dGUgKj4obVJlcXVlc3RhYmxlRXh0ZW5zaW9uU3RyaW5nKTsKKwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgIH0KIH0KIAotY29uc3QgY2hhciAqQ29udGV4dDo6Z2V0RXh0
ZW5zaW9uU3RyaW5nKHNpemVfdCBpZHgpIGNvbnN0Citjb25zdCBHTHVieXRlICpDb250ZXh0Ojpn
ZXRTdHJpbmdpKEdMZW51bSBuYW1lLCBHTHVpbnQgaW5kZXgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1FeHRlbnNpb25TdHJpbmdzW2lkeF07CisgICAgc3dpdGNoIChuYW1lKQorICAgIHsKKyAgICAg
ICAgY2FzZSBHTF9FWFRFTlNJT05TOgorICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgR0x1Ynl0ZSAqPihtRXh0ZW5zaW9uU3RyaW5nc1tpbmRleF0pOworCisgICAgICAg
IGNhc2UgR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRToKKyAgICAgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUgKj4obVJlcXVlc3RhYmxlRXh0ZW5zaW9u
U3RyaW5nc1tpbmRleF0pOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNI
QUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogfQogCiBzaXplX3Qg
Q29udGV4dDo6Z2V0RXh0ZW5zaW9uU3RyaW5nQ291bnQoKSBjb25zdApAQCAtMjMwNSwxMyArMjQ5
Niw1MCBAQCBzaXplX3QgQ29udGV4dDo6Z2V0RXh0ZW5zaW9uU3RyaW5nQ291bnQoKSBjb25zdAog
ICAgIHJldHVybiBtRXh0ZW5zaW9uU3RyaW5ncy5zaXplKCk7CiB9CiAKK3ZvaWQgQ29udGV4dDo6
cmVxdWVzdEV4dGVuc2lvbihjb25zdCBjaGFyICpuYW1lKQoreworICAgIGNvbnN0IEV4dGVuc2lv
bkluZm9NYXAgJmV4dGVuc2lvbkluZm9zID0gR2V0RXh0ZW5zaW9uSW5mb01hcCgpOworICAgIEFT
U0VSVChleHRlbnNpb25JbmZvcy5maW5kKG5hbWUpICE9IGV4dGVuc2lvbkluZm9zLmVuZCgpKTsK
KyAgICBjb25zdCBhdXRvICZleHRlbnNpb24gPSBleHRlbnNpb25JbmZvcy5hdChuYW1lKTsKKyAg
ICBBU1NFUlQoZXh0ZW5zaW9uLlJlcXVlc3RhYmxlKTsKKworICAgIGlmIChtRXh0ZW5zaW9ucy4q
KGV4dGVuc2lvbi5FeHRlbnNpb25zTWVtYmVyKSkKKyAgICB7CisgICAgICAgIC8vIEV4dGVuc2lv
biBhbHJlYWR5IGVuYWJsZWQKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1FeHRlbnNp
b25zLiooZXh0ZW5zaW9uLkV4dGVuc2lvbnNNZW1iZXIpID0gdHJ1ZTsKKyAgICB1cGRhdGVDYXBz
KCk7CisgICAgaW5pdEV4dGVuc2lvblN0cmluZ3MoKTsKKworICAgIC8vIFJlLWNyZWF0ZSB0aGUg
Y29tcGlsZXIgd2l0aCB0aGUgcmVxdWVzdGVkIGV4dGVuc2lvbnMgZW5hYmxlZC4KKyAgICBTYWZl
RGVsZXRlKG1Db21waWxlcik7CisgICAgbUNvbXBpbGVyID0gbmV3IENvbXBpbGVyKG1JbXBsZW1l
bnRhdGlvbi5nZXQoKSwgbVN0YXRlKTsKKworICAgIC8vIEludmFsaWRhdGUgYWxsIGNhY2hlZCBj
b21wbGV0ZW5lc3NlcyBmb3IgdGV4dHVyZXMgYW5kIGZyYW1lYnVmZmVyLiBTb21lIGV4dGVuc2lv
bnMgbWFrZSBuZXcKKyAgICAvLyBmb3JtYXRzIHJlbmRlcmFibGUgb3Igc2FtcGxlYWJsZS4KKyAg
ICBtU3RhdGUubVRleHR1cmVzLT5pbnZhbGlkYXRlVGV4dHVyZUNvbXBsZW5lc3NDYWNoZSgpOwor
ICAgIGZvciAoYXV0byAmemVyb1RleHR1cmUgOiBtWmVyb1RleHR1cmVzKQorICAgIHsKKyAgICAg
ICAgemVyb1RleHR1cmUuc2Vjb25kLT5pbnZhbGlkYXRlQ29tcGxldGVuZXNzQ2FjaGUoKTsKKyAg
ICB9CisKKyAgICBtU3RhdGUubUZyYW1lYnVmZmVycy0+aW52YWxpZGF0ZUZyYW1lYnVmZmVyQ29t
cGxlbmVzc0NhY2hlKCk7Cit9CisKK3NpemVfdCBDb250ZXh0OjpnZXRSZXF1ZXN0YWJsZUV4dGVu
c2lvblN0cmluZ0NvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJlcXVlc3RhYmxlRXh0ZW5z
aW9uU3RyaW5ncy5zaXplKCk7Cit9CisKIHZvaWQgQ29udGV4dDo6YmVnaW5UcmFuc2Zvcm1GZWVk
YmFjayhHTGVudW0gcHJpbWl0aXZlTW9kZSkKIHsKICAgICBUcmFuc2Zvcm1GZWVkYmFjayAqdHJh
bnNmb3JtRmVlZGJhY2sgPSBtR0xTdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKTsK
ICAgICBBU1NFUlQodHJhbnNmb3JtRmVlZGJhY2sgIT0gbnVsbHB0cik7CiAgICAgQVNTRVJUKCF0
cmFuc2Zvcm1GZWVkYmFjay0+aXNQYXVzZWQoKSk7CiAKLSAgICB0cmFuc2Zvcm1GZWVkYmFjay0+
YmVnaW4ocHJpbWl0aXZlTW9kZSwgbUdMU3RhdGUuZ2V0UHJvZ3JhbSgpKTsKKyAgICB0cmFuc2Zv
cm1GZWVkYmFjay0+YmVnaW4odGhpcywgcHJpbWl0aXZlTW9kZSwgbUdMU3RhdGUuZ2V0UHJvZ3Jh
bSgpKTsKIH0KIAogYm9vbCBDb250ZXh0OjpoYXNBY3RpdmVUcmFuc2Zvcm1GZWVkYmFjayhHTHVp
bnQgcHJvZ3JhbSkgY29uc3QKQEAgLTIzMjYsNyArMjU1NCw3IEBAIGJvb2wgQ29udGV4dDo6aGFz
QWN0aXZlVHJhbnNmb3JtRmVlZGJhY2soR0x1aW50IHByb2dyYW0pIGNvbnN0CiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIENvbnRleHQ6OmluaXRDYXBzKGJvb2wgd2ViR0xDb250ZXh0KQor
dm9pZCBDb250ZXh0Ojppbml0Q2Fwcyhjb25zdCBlZ2w6OkRpc3BsYXlFeHRlbnNpb25zICZkaXNw
bGF5RXh0ZW5zaW9ucykKIHsKICAgICBtQ2FwcyA9IG1JbXBsZW1lbnRhdGlvbi0+Z2V0TmF0aXZl
Q2FwcygpOwogCkBAIC0yMzM0LDcgKzI1NjIsNyBAQCB2b2lkIENvbnRleHQ6OmluaXRDYXBzKGJv
b2wgd2ViR0xDb250ZXh0KQogCiAgICAgbUxpbWl0YXRpb25zID0gbUltcGxlbWVudGF0aW9uLT5n
ZXROYXRpdmVMaW1pdGF0aW9ucygpOwogCi0gICAgaWYgKG1DbGllbnRNYWpvclZlcnNpb24gPCAz
KQorICAgIGlmIChnZXRDbGllbnRWZXJzaW9uKCkgPCBWZXJzaW9uKDMsIDApKQogICAgIHsKICAg
ICAgICAgLy8gRGlzYWJsZSBFUzMrIGV4dGVuc2lvbnMKICAgICAgICAgbUV4dGVuc2lvbnMuY29s
b3JCdWZmZXJGbG9hdCA9IGZhbHNlOwpAQCAtMjM0Miw3ICsyNTcwLDcgQEAgdm9pZCBDb250ZXh0
Ojppbml0Q2Fwcyhib29sIHdlYkdMQ29udGV4dCkKICAgICAgICAgbUV4dGVuc2lvbnMudGV4dHVy
ZU5vcm0xNiAgICAgICAgID0gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKG1DbGllbnRNYWpvclZl
cnNpb24gPiAyKQorICAgIGlmIChnZXRDbGllbnRWZXJzaW9uKCkgPiBWZXJzaW9uKDIsIDApKQog
ICAgIHsKICAgICAgICAgLy8gRklYTUUoZ2VvZmZsYW5nKTogRG9uJ3Qgc3VwcG9ydCBFWFRfc1JH
QiBpbiBub24tRVMyIGNvbnRleHRzCiAgICAgICAgIC8vbUV4dGVuc2lvbnMuc1JHQiA9IGZhbHNl
OwpAQCAtMjM1MiwxMCArMjU4MCwxNSBAQCB2b2lkIENvbnRleHQ6OmluaXRDYXBzKGJvb2wgd2Vi
R0xDb250ZXh0KQogICAgIG1FeHRlbnNpb25zLmJpbmRVbmlmb3JtTG9jYXRpb24gPSB0cnVlOwog
ICAgIG1FeHRlbnNpb25zLnZlcnRleEFycmF5T2JqZWN0ICAgPSB0cnVlOwogICAgIG1FeHRlbnNp
b25zLmJpbmRHZW5lcmF0ZXNSZXNvdXJjZSA9IHRydWU7CisgICAgbUV4dGVuc2lvbnMuY2xpZW50
QXJyYXlzICAgICAgICAgID0gdHJ1ZTsKKyAgICBtRXh0ZW5zaW9ucy5yZXF1ZXN0RXh0ZW5zaW9u
ICAgICAgPSB0cnVlOwogCiAgICAgLy8gRW5hYmxlIHRoZSBubyBlcnJvciBleHRlbnNpb24gaWYg
dGhlIGNvbnRleHQgd2FzIGNyZWF0ZWQgd2l0aCB0aGUgZmxhZy4KICAgICBtRXh0ZW5zaW9ucy5u
b0Vycm9yID0gbVNraXBWYWxpZGF0aW9uOwogCisgICAgLy8gRW5hYmxlIHN1cmZhY2VsZXNzIHRv
IGFkdmVydGlzZSB3ZSdsbCBoYXZlIHRoZSBjb3JyZWN0IGJlaGF2aW9yIHdoZW4gdGhlcmUgaXMg
bm8gZGVmYXVsdCBGQk8KKyAgICBtRXh0ZW5zaW9ucy5zdXJmYWNlbGVzc0NvbnRleHQgPSBkaXNw
bGF5RXh0ZW5zaW9ucy5zdXJmYWNlbGVzc0NvbnRleHQ7CisKICAgICAvLyBFeHBsaWNpdGx5IGVu
YWJsZSBHTF9LSFJfZGVidWcKICAgICBtRXh0ZW5zaW9ucy5kZWJ1ZyAgICAgICAgICAgICAgICAg
ICA9IHRydWU7CiAgICAgbUV4dGVuc2lvbnMubWF4RGVidWdNZXNzYWdlTGVuZ3RoICAgPSAxMDI0
OwpAQCAtMjM2NiwxOSArMjU5OSwyOCBAQCB2b2lkIENvbnRleHQ6OmluaXRDYXBzKGJvb2wgd2Vi
R0xDb250ZXh0KQogICAgIC8vIEV4cGxpY2l0bHkgZW5hYmxlIEdMX0FOR0xFX3JvYnVzdF9jbGll
bnRfbWVtb3J5CiAgICAgbUV4dGVuc2lvbnMucm9idXN0Q2xpZW50TWVtb3J5ID0gdHJ1ZTsKIAor
ICAgIC8vIERldGVybWluZSByb2J1c3QgcmVzb3VyY2UgaW5pdCBhdmFpbGFiaWxpdHkgZnJvbSBF
R0wuCisgICAgbUV4dGVuc2lvbnMucm9idXN0UmVzb3VyY2VJbml0aWFsaXphdGlvbiA9CisgICAg
ICAgIGRpc3BsYXlFeHRlbnNpb25zLmNyZWF0ZUNvbnRleHRSb2J1c3RSZXNvdXJjZUluaXRpYWxp
emF0aW9uOworCiAgICAgLy8gQXBwbHkgaW1wbGVtZW50YXRpb24gbGltaXRzCiAgICAgbUNhcHMu
bWF4VmVydGV4QXR0cmlidXRlcyA9IHN0ZDo6bWluPEdMdWludD4obUNhcHMubWF4VmVydGV4QXR0
cmlidXRlcywgTUFYX1ZFUlRFWF9BVFRSSUJTKTsKKyAgICBtQ2Fwcy5tYXhWZXJ0ZXhBdHRyaWJC
aW5kaW5ncyA9CisgICAgICAgIGdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMQorICAgICAgICAg
ICAgPyBtQ2Fwcy5tYXhWZXJ0ZXhBdHRyaWJ1dGVzCisgICAgICAgICAgICA6IHN0ZDo6bWluPEdM
dWludD4obUNhcHMubWF4VmVydGV4QXR0cmliQmluZGluZ3MsIE1BWF9WRVJURVhfQVRUUklCX0JJ
TkRJTkdTKTsKKwogICAgIG1DYXBzLm1heFZlcnRleFVuaWZvcm1CbG9ja3MgPSBzdGQ6Om1pbjxH
THVpbnQ+KG1DYXBzLm1heFZlcnRleFVuaWZvcm1CbG9ja3MsIElNUExFTUVOVEFUSU9OX01BWF9W
RVJURVhfU0hBREVSX1VOSUZPUk1fQlVGRkVSUyk7CiAgICAgbUNhcHMubWF4VmVydGV4T3V0cHV0
Q29tcG9uZW50cyA9IHN0ZDo6bWluPEdMdWludD4obUNhcHMubWF4VmVydGV4T3V0cHV0Q29tcG9u
ZW50cywgSU1QTEVNRU5UQVRJT05fTUFYX1ZBUllJTkdfVkVDVE9SUyAqIDQpOwogCiAgICAgbUNh
cHMubWF4RnJhZ21lbnRJbnB1dENvbXBvbmVudHMgPSBzdGQ6Om1pbjxHTHVpbnQ+KG1DYXBzLm1h
eEZyYWdtZW50SW5wdXRDb21wb25lbnRzLCBJTVBMRU1FTlRBVElPTl9NQVhfVkFSWUlOR19WRUNU
T1JTICogNCk7CiAKICAgICAvLyBXZWJHTCBjb21wYXRpYmlsaXR5Ci0gICAgbUV4dGVuc2lvbnMu
d2ViZ2xDb21wYXRpYmlsaXR5ID0gd2ViR0xDb250ZXh0OworICAgIG1FeHRlbnNpb25zLndlYmds
Q29tcGF0aWJpbGl0eSA9IG1XZWJHTENvbnRleHQ7CiAgICAgZm9yIChjb25zdCBhdXRvICZleHRl
bnNpb25JbmZvIDogR2V0RXh0ZW5zaW9uSW5mb01hcCgpKQogICAgIHsKICAgICAgICAgLy8gSWYg
dGhpcyBjb250ZXh0IGlzIGZvciBXZWJHTCwgZGlzYWJsZSBhbGwgZW5hYmxlYWJsZSBleHRlbnNp
b25zCi0gICAgICAgIGlmICh3ZWJHTENvbnRleHQgJiYgZXh0ZW5zaW9uSW5mby5zZWNvbmQuRW5h
YmxlYWJsZSkKKyAgICAgICAgaWYgKG1XZWJHTENvbnRleHQgJiYgZXh0ZW5zaW9uSW5mby5zZWNv
bmQuUmVxdWVzdGFibGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1FeHRlbnNpb25zLiooZXh0
ZW5zaW9uSW5mby5zZWNvbmQuRXh0ZW5zaW9uc01lbWJlcikgPSBmYWxzZTsKICAgICAgICAgfQpA
QCAtMjM5MywxMSArMjYzNSwxMCBAQCB2b2lkIENvbnRleHQ6OnVwZGF0ZUNhcHMoKQogICAgIG1D
YXBzLmNvbXByZXNzZWRUZXh0dXJlRm9ybWF0cy5jbGVhcigpOwogICAgIG1UZXh0dXJlQ2Fwcy5j
bGVhcigpOwogCi0gICAgY29uc3QgVGV4dHVyZUNhcHNNYXAgJnJlbmRlcmVyRm9ybWF0cyA9IG1J
bXBsZW1lbnRhdGlvbi0+Z2V0TmF0aXZlVGV4dHVyZUNhcHMoKTsKLSAgICBmb3IgKFRleHR1cmVD
YXBzTWFwOjpjb25zdF9pdGVyYXRvciBpID0gcmVuZGVyZXJGb3JtYXRzLmJlZ2luKCk7IGkgIT0g
cmVuZGVyZXJGb3JtYXRzLmVuZCgpOyBpKyspCisgICAgZm9yIChhdXRvIGNhcHNJdCA6IG1JbXBs
ZW1lbnRhdGlvbi0+Z2V0TmF0aXZlVGV4dHVyZUNhcHMoKSkKICAgICB7Ci0gICAgICAgIEdMZW51
bSBmb3JtYXQgPSBpLT5maXJzdDsKLSAgICAgICAgVGV4dHVyZUNhcHMgZm9ybWF0Q2FwcyA9IGkt
PnNlY29uZDsKKyAgICAgICAgR0xlbnVtIGZvcm1hdCAgICAgICAgICA9IGNhcHNJdC5maXJzdDsK
KyAgICAgICAgVGV4dHVyZUNhcHMgZm9ybWF0Q2FwcyA9IGNhcHNJdC5zZWNvbmQ7CiAKICAgICAg
ICAgY29uc3QgSW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBHZXRJbnRlcm5hbEZvcm1hdElu
Zm8oZm9ybWF0KTsKIApAQCAtMjQwNSwxNCArMjY0NiwxNyBAQCB2b2lkIENvbnRleHQ6OnVwZGF0
ZUNhcHMoKQogICAgICAgICAvLyBDYXBzIGFyZSBBTkQnZCB3aXRoIHRoZSByZW5kZXJlciBjYXBz
IGJlY2F1c2Ugc29tZSBjb3JlIGZvcm1hdHMgYXJlIHN0aWxsIHVuc3VwcG9ydGVkIGluCiAgICAg
ICAgIC8vIEVTMy4KICAgICAgICAgZm9ybWF0Q2Fwcy50ZXh0dXJhYmxlID0KLSAgICAgICAgICAg
IGZvcm1hdENhcHMudGV4dHVyYWJsZSAmJiBmb3JtYXRJbmZvLnRleHR1cmVTdXBwb3J0KG1DbGll
bnRNYWpvclZlcnNpb24sIG1FeHRlbnNpb25zKTsKKyAgICAgICAgICAgIGZvcm1hdENhcHMudGV4
dHVyYWJsZSAmJiBmb3JtYXRJbmZvLnRleHR1cmVTdXBwb3J0KGdldENsaWVudFZlcnNpb24oKSwg
bUV4dGVuc2lvbnMpOwogICAgICAgICBmb3JtYXRDYXBzLnJlbmRlcmFibGUgPQotICAgICAgICAg
ICAgZm9ybWF0Q2Fwcy5yZW5kZXJhYmxlICYmIGZvcm1hdEluZm8ucmVuZGVyU3VwcG9ydChtQ2xp
ZW50TWFqb3JWZXJzaW9uLCBtRXh0ZW5zaW9ucyk7CisgICAgICAgICAgICBmb3JtYXRDYXBzLnJl
bmRlcmFibGUgJiYgZm9ybWF0SW5mby5yZW5kZXJTdXBwb3J0KGdldENsaWVudFZlcnNpb24oKSwg
bUV4dGVuc2lvbnMpOwogICAgICAgICBmb3JtYXRDYXBzLmZpbHRlcmFibGUgPQotICAgICAgICAg
ICAgZm9ybWF0Q2Fwcy5maWx0ZXJhYmxlICYmIGZvcm1hdEluZm8uZmlsdGVyU3VwcG9ydChtQ2xp
ZW50TWFqb3JWZXJzaW9uLCBtRXh0ZW5zaW9ucyk7CisgICAgICAgICAgICBmb3JtYXRDYXBzLmZp
bHRlcmFibGUgJiYgZm9ybWF0SW5mby5maWx0ZXJTdXBwb3J0KGdldENsaWVudFZlcnNpb24oKSwg
bUV4dGVuc2lvbnMpOwogCi0gICAgICAgIC8vIE9wZW5HTCBFUyBkb2VzIG5vdCBzdXBwb3J0IG11
bHRpc2FtcGxpbmcgd2l0aCBpbnRlZ2VyIGZvcm1hdHMKLSAgICAgICAgaWYgKCFmb3JtYXRJbmZv
LnJlbmRlclN1cHBvcnQgfHwgZm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX0lOVCB8fCBm
b3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfVU5TSUdORURfSU5UKQorICAgICAgICAvLyBP
cGVuR0wgRVMgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXNhbXBsaW5nIHdpdGggbm9uLXJlbmRlcmVy
YWJsZSBmb3JtYXRzCisgICAgICAgIC8vIE9wZW5HTCBFUyAzLjAgb3IgcHJpb3IgZG9lcyBub3Qg
c3VwcG9ydCBtdWx0aXNhbXBsaW5nIHdpdGggaW50ZWdlciBmb3JtYXRzCisgICAgICAgIGlmICgh
Zm9ybWF0SW5mby5yZW5kZXJTdXBwb3J0IHx8CisgICAgICAgICAgICAoZ2V0Q2xpZW50VmVyc2lv
bigpIDwgRVNfM18xICYmCisgICAgICAgICAgICAgKGZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9
PSBHTF9JTlQgfHwgZm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX1VOU0lHTkVEX0lOVCkp
KQogICAgICAgICB7CiAgICAgICAgICAgICBmb3JtYXRDYXBzLnNhbXBsZUNvdW50cy5jbGVhcigp
OwogICAgICAgICB9CkBAIC0yNDM2LDE5ICsyNjgwLDE4IEBAIHZvaWQgQ29udGV4dDo6aW5pdFdv
cmthcm91bmRzKCkKIHZvaWQgQ29udGV4dDo6c3luY1JlbmRlcmVyU3RhdGUoKQogewogICAgIGNv
bnN0IFN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cyA9IG1HTFN0YXRlLmdldERpcnR5Qml0cygp
OwotICAgIG1JbXBsZW1lbnRhdGlvbi0+c3luY1N0YXRlKG1HTFN0YXRlLCBkaXJ0eUJpdHMpOwor
ICAgIG1JbXBsZW1lbnRhdGlvbi0+c3luY1N0YXRlKGRpcnR5Qml0cyk7CiAgICAgbUdMU3RhdGUu
Y2xlYXJEaXJ0eUJpdHMoKTsKLSAgICBtR0xTdGF0ZS5zeW5jRGlydHlPYmplY3RzKCk7CisgICAg
bUdMU3RhdGUuc3luY0RpcnR5T2JqZWN0cyh0aGlzKTsKIH0KIAogdm9pZCBDb250ZXh0OjpzeW5j
UmVuZGVyZXJTdGF0ZShjb25zdCBTdGF0ZTo6RGlydHlCaXRzICZiaXRNYXNrLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdGF0ZTo6RGlydHlPYmplY3RzICZvYmplY3RN
YXNrKQogewogICAgIGNvbnN0IFN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cyA9IChtR0xTdGF0
ZS5nZXREaXJ0eUJpdHMoKSAmIGJpdE1hc2spOwotICAgIG1JbXBsZW1lbnRhdGlvbi0+c3luY1N0
YXRlKG1HTFN0YXRlLCBkaXJ0eUJpdHMpOworICAgIG1JbXBsZW1lbnRhdGlvbi0+c3luY1N0YXRl
KGRpcnR5Qml0cyk7CiAgICAgbUdMU3RhdGUuY2xlYXJEaXJ0eUJpdHMoZGlydHlCaXRzKTsKLQot
ICAgIG1HTFN0YXRlLnN5bmNEaXJ0eU9iamVjdHMob2JqZWN0TWFzayk7CisgICAgbUdMU3RhdGUu
c3luY0RpcnR5T2JqZWN0cyh0aGlzLCBvYmplY3RNYXNrKTsKIH0KIAogdm9pZCBDb250ZXh0Ojpi
bGl0RnJhbWVidWZmZXIoR0xpbnQgc3JjWDAsCkBAIC0yNTQ5LDE0ICsyNzkyLDE0IEBAIHZvaWQg
Q29udGV4dDo6Y29weVRleEltYWdlMkQoR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgYm9yZGVyKQogewogICAgIC8vIE9ubHkgc3luYyB0aGUgcmVhZCBG
Qk8KLSAgICBtR0xTdGF0ZS5zeW5jRGlydHlPYmplY3QoR0xfUkVBRF9GUkFNRUJVRkZFUik7Cisg
ICAgbUdMU3RhdGUuc3luY0RpcnR5T2JqZWN0KHRoaXMsIEdMX1JFQURfRlJBTUVCVUZGRVIpOwog
CiAgICAgUmVjdGFuZ2xlIHNvdXJjZUFyZWEoeCwgeSwgd2lkdGgsIGhlaWdodCk7CiAKICAgICBj
b25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBtR0xTdGF0ZS5nZXRSZWFkRnJhbWVidWZm
ZXIoKTsKICAgICBUZXh0dXJlICp0ZXh0dXJlID0KICAgICAgICAgZ2V0VGFyZ2V0VGV4dHVyZShJ
c0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkgPyBHTF9URVhUVVJFX0NVQkVfTUFQIDogdGFy
Z2V0KTsKLSAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5jb3B5SW1hZ2UodGFyZ2V0LCBsZXZlbCwg
c291cmNlQXJlYSwgaW50ZXJuYWxmb3JtYXQsIGZyYW1lYnVmZmVyKSk7CisgICAgaGFuZGxlRXJy
b3IodGV4dHVyZS0+Y29weUltYWdlKHRoaXMsIHRhcmdldCwgbGV2ZWwsIHNvdXJjZUFyZWEsIGlu
dGVybmFsZm9ybWF0LCBmcmFtZWJ1ZmZlcikpOwogfQogCiB2b2lkIENvbnRleHQ6OmNvcHlUZXhT
dWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsCkBAIC0yNTc0LDcgKzI4MTcsNyBAQCB2b2lkIENvbnRl
eHQ6OmNvcHlUZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsCiAgICAgfQogCiAgICAgLy8gT25s
eSBzeW5jIHRoZSByZWFkIEZCTwotICAgIG1HTFN0YXRlLnN5bmNEaXJ0eU9iamVjdChHTF9SRUFE
X0ZSQU1FQlVGRkVSKTsKKyAgICBtR0xTdGF0ZS5zeW5jRGlydHlPYmplY3QodGhpcywgR0xfUkVB
RF9GUkFNRUJVRkZFUik7CiAKICAgICBPZmZzZXQgZGVzdE9mZnNldCh4b2Zmc2V0LCB5b2Zmc2V0
LCAwKTsKICAgICBSZWN0YW5nbGUgc291cmNlQXJlYSh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKQEAg
LTI1ODIsNyArMjgyNSw3IEBAIHZvaWQgQ29udGV4dDo6Y29weVRleFN1YkltYWdlMkQoR0xlbnVt
IHRhcmdldCwKICAgICBjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBtR0xTdGF0ZS5n
ZXRSZWFkRnJhbWVidWZmZXIoKTsKICAgICBUZXh0dXJlICp0ZXh0dXJlID0KICAgICAgICAgZ2V0
VGFyZ2V0VGV4dHVyZShJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkgPyBHTF9URVhUVVJF
X0NVQkVfTUFQIDogdGFyZ2V0KTsKLSAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5jb3B5U3ViSW1h
Z2UodGFyZ2V0LCBsZXZlbCwgZGVzdE9mZnNldCwgc291cmNlQXJlYSwgZnJhbWVidWZmZXIpKTsK
KyAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5jb3B5U3ViSW1hZ2UodGhpcywgdGFyZ2V0LCBsZXZl
bCwgZGVzdE9mZnNldCwgc291cmNlQXJlYSwgZnJhbWVidWZmZXIpKTsKIH0KIAogdm9pZCBDb250
ZXh0Ojpjb3B5VGV4U3ViSW1hZ2UzRChHTGVudW0gdGFyZ2V0LApAQCAtMjYwMSwxNCArMjg0NCwx
NCBAQCB2b2lkIENvbnRleHQ6OmNvcHlUZXhTdWJJbWFnZTNEKEdMZW51bSB0YXJnZXQsCiAgICAg
fQogCiAgICAgLy8gT25seSBzeW5jIHRoZSByZWFkIEZCTwotICAgIG1HTFN0YXRlLnN5bmNEaXJ0
eU9iamVjdChHTF9SRUFEX0ZSQU1FQlVGRkVSKTsKKyAgICBtR0xTdGF0ZS5zeW5jRGlydHlPYmpl
Y3QodGhpcywgR0xfUkVBRF9GUkFNRUJVRkZFUik7CiAKICAgICBPZmZzZXQgZGVzdE9mZnNldCh4
b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0KTsKICAgICBSZWN0YW5nbGUgc291cmNlQXJlYSh4LCB5
LCB3aWR0aCwgaGVpZ2h0KTsKIAogICAgIGNvbnN0IEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9
IG1HTFN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigpOwogICAgIFRleHR1cmUgKnRleHR1cmUgICAg
ICAgICAgICAgICA9IGdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKLSAgICBoYW5kbGVFcnJvcih0
ZXh0dXJlLT5jb3B5U3ViSW1hZ2UodGFyZ2V0LCBsZXZlbCwgZGVzdE9mZnNldCwgc291cmNlQXJl
YSwgZnJhbWVidWZmZXIpKTsKKyAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5jb3B5U3ViSW1hZ2Uo
dGhpcywgdGFyZ2V0LCBsZXZlbCwgZGVzdE9mZnNldCwgc291cmNlQXJlYSwgZnJhbWVidWZmZXIp
KTsKIH0KIAogdm9pZCBDb250ZXh0OjpmcmFtZWJ1ZmZlclRleHR1cmUyRChHTGVudW0gdGFyZ2V0
LApAQCAtMjYzMCwxNyArMjg3MywyMiBAQCB2b2lkIENvbnRleHQ6OmZyYW1lYnVmZmVyVGV4dHVy
ZTJEKEdMZW51bSB0YXJnZXQsCiAgICAgICAgIHsKICAgICAgICAgICAgIGluZGV4ID0gSW1hZ2VJ
bmRleDo6TWFrZTJEKGxldmVsKTsKICAgICAgICAgfQorICAgICAgICBlbHNlIGlmICh0ZXh0YXJn
ZXQgPT0gR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRSkKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKGxldmVsID09IDApOworICAgICAgICAgICAgaW5kZXggPSBJbWFnZUluZGV4OjpNYWtl
MkRNdWx0aXNhbXBsZSgpOworICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAg
ICAgICAgICAgQVNTRVJUKElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGV4dGFyZ2V0KSk7CiAgICAg
ICAgICAgICBpbmRleCA9IEltYWdlSW5kZXg6Ok1ha2VDdWJlKHRleHRhcmdldCwgbGV2ZWwpOwog
ICAgICAgICB9CiAKLSAgICAgICAgZnJhbWVidWZmZXItPnNldEF0dGFjaG1lbnQoR0xfVEVYVFVS
RSwgYXR0YWNobWVudCwgaW5kZXgsIHRleHR1cmVPYmopOworICAgICAgICBmcmFtZWJ1ZmZlci0+
c2V0QXR0YWNobWVudCh0aGlzLCBHTF9URVhUVVJFLCBhdHRhY2htZW50LCBpbmRleCwgdGV4dHVy
ZU9iaik7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIGZyYW1lYnVmZmVyLT5yZXNl
dEF0dGFjaG1lbnQoYXR0YWNobWVudCk7CisgICAgICAgIGZyYW1lYnVmZmVyLT5yZXNldEF0dGFj
aG1lbnQodGhpcywgYXR0YWNobWVudCk7CiAgICAgfQogCiAgICAgbUdMU3RhdGUuc2V0T2JqZWN0
RGlydHkodGFyZ2V0KTsKQEAgLTI2NTcsMTIgKzI5MDUsMTMgQEAgdm9pZCBDb250ZXh0OjpmcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0LAogICAgIGlmIChyZW5kZXJidWZmZXIg
IT0gMCkKICAgICB7CiAgICAgICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyT2JqZWN0ID0g
Z2V0UmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgIGZyYW1lYnVmZmVyLT5zZXRB
dHRhY2htZW50KEdMX1JFTkRFUkJVRkZFUiwgYXR0YWNobWVudCwgZ2w6OkltYWdlSW5kZXg6Ok1h
a2VJbnZhbGlkKCksCisKKyAgICAgICAgZnJhbWVidWZmZXItPnNldEF0dGFjaG1lbnQodGhpcywg
R0xfUkVOREVSQlVGRkVSLCBhdHRhY2htZW50LCBnbDo6SW1hZ2VJbmRleDo6TWFrZUludmFsaWQo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyYnVmZmVyT2JqZWN0
KTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgZnJhbWVidWZmZXItPnJlc2V0QXR0
YWNobWVudChhdHRhY2htZW50KTsKKyAgICAgICAgZnJhbWVidWZmZXItPnJlc2V0QXR0YWNobWVu
dCh0aGlzLCBhdHRhY2htZW50KTsKICAgICB9CiAKICAgICBtR0xTdGF0ZS5zZXRPYmplY3REaXJ0
eSh0YXJnZXQpOwpAQCAtMjY5MywxMSArMjk0MiwxMSBAQCB2b2lkIENvbnRleHQ6OmZyYW1lYnVm
ZmVyVGV4dHVyZUxheWVyKEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICBpbmRleCA9IEltYWdl
SW5kZXg6Ok1ha2UyREFycmF5KGxldmVsLCBsYXllcik7CiAgICAgICAgIH0KIAotICAgICAgICBm
cmFtZWJ1ZmZlci0+c2V0QXR0YWNobWVudChHTF9URVhUVVJFLCBhdHRhY2htZW50LCBpbmRleCwg
dGV4dHVyZU9iamVjdCk7CisgICAgICAgIGZyYW1lYnVmZmVyLT5zZXRBdHRhY2htZW50KHRoaXMs
IEdMX1RFWFRVUkUsIGF0dGFjaG1lbnQsIGluZGV4LCB0ZXh0dXJlT2JqZWN0KTsKICAgICB9CiAg
ICAgZWxzZQogICAgIHsKLSAgICAgICAgZnJhbWVidWZmZXItPnJlc2V0QXR0YWNobWVudChhdHRh
Y2htZW50KTsKKyAgICAgICAgZnJhbWVidWZmZXItPnJlc2V0QXR0YWNobWVudCh0aGlzLCBhdHRh
Y2htZW50KTsKICAgICB9CiAKICAgICBtR0xTdGF0ZS5zZXRPYmplY3REaXJ0eSh0YXJnZXQpOwpA
QCAtMjcyMSw3ICsyOTcwLDcgQEAgdm9pZCBDb250ZXh0OjpyZWFkQnVmZmVyKEdMZW51bSBtb2Rl
KQogdm9pZCBDb250ZXh0OjpkaXNjYXJkRnJhbWVidWZmZXIoR0xlbnVtIHRhcmdldCwgR0xzaXpl
aSBudW1BdHRhY2htZW50cywgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykKIHsKICAgICAvLyBP
bmx5IHN5bmMgdGhlIEZCTwotICAgIG1HTFN0YXRlLnN5bmNEaXJ0eU9iamVjdCh0YXJnZXQpOwor
ICAgIG1HTFN0YXRlLnN5bmNEaXJ0eU9iamVjdCh0aGlzLCB0YXJnZXQpOwogCiAgICAgRnJhbWVi
dWZmZXIgKmZyYW1lYnVmZmVyID0gbUdMU3RhdGUuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0
KTsKICAgICBBU1NFUlQoZnJhbWVidWZmZXIpOwpAQCAtMjczNiwxMiArMjk4NSwxMiBAQCB2b2lk
IENvbnRleHQ6OmludmFsaWRhdGVGcmFtZWJ1ZmZlcihHTGVudW0gdGFyZ2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykKIHsK
ICAgICAvLyBPbmx5IHN5bmMgdGhlIEZCTwotICAgIG1HTFN0YXRlLnN5bmNEaXJ0eU9iamVjdCh0
YXJnZXQpOworICAgIG1HTFN0YXRlLnN5bmNEaXJ0eU9iamVjdCh0aGlzLCB0YXJnZXQpOwogCiAg
ICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbUdMU3RhdGUuZ2V0VGFyZ2V0RnJhbWVidWZm
ZXIodGFyZ2V0KTsKICAgICBBU1NFUlQoZnJhbWVidWZmZXIpOwogCi0gICAgaWYgKGZyYW1lYnVm
ZmVyLT5jaGVja1N0YXR1cyhtU3RhdGUpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAg
IGlmIChmcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXModGhpcykgIT0gR0xfRlJBTUVCVUZGRVJfQ09N
UExFVEUpCiAgICAgewogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjc1OCwxMiArMzAwNywx
MiBAQCB2b2lkIENvbnRleHQ6OmludmFsaWRhdGVTdWJGcmFtZWJ1ZmZlcihHTGVudW0gdGFyZ2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQp
CiB7CiAgICAgLy8gT25seSBzeW5jIHRoZSBGQk8KLSAgICBtR0xTdGF0ZS5zeW5jRGlydHlPYmpl
Y3QodGFyZ2V0KTsKKyAgICBtR0xTdGF0ZS5zeW5jRGlydHlPYmplY3QodGhpcywgdGFyZ2V0KTsK
IAogICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IG1HTFN0YXRlLmdldFRhcmdldEZyYW1l
YnVmZmVyKHRhcmdldCk7CiAgICAgQVNTRVJUKGZyYW1lYnVmZmVyKTsKIAotICAgIGlmIChmcmFt
ZWJ1ZmZlci0+Y2hlY2tTdGF0dXMobVN0YXRlKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkK
KyAgICBpZiAoZnJhbWVidWZmZXItPmNoZWNrU3RhdHVzKHRoaXMpICE9IEdMX0ZSQU1FQlVGRkVS
X0NPTVBMRVRFKQogICAgIHsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI3ODcsOCArMzAz
Niw4IEBAIHZvaWQgQ29udGV4dDo6dGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LAogICAgIEV4dGVu
dHMgc2l6ZSh3aWR0aCwgaGVpZ2h0LCAxKTsKICAgICBUZXh0dXJlICp0ZXh0dXJlID0KICAgICAg
ICAgZ2V0VGFyZ2V0VGV4dHVyZShJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkgPyBHTF9U
RVhUVVJFX0NVQkVfTUFQIDogdGFyZ2V0KTsKLSAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5zZXRJ
bWFnZShtR0xTdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZv
cm1hdCwgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIHR5
cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihwaXhlbHMpKSk7CisgICAgaGFu
ZGxlRXJyb3IodGV4dHVyZS0+c2V0SW1hZ2UodGhpcywgbUdMU3RhdGUuZ2V0VW5wYWNrU3RhdGUo
KSwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZSwgZm9ybWF0LCB0eXBlLCByZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QgKj4ocGl4ZWxzKSkpOwogfQogCiB2b2lkIENvbnRleHQ6OnRleEltYWdlM0QoR0xlbnVt
IHRhcmdldCwKQEAgLTI4MDYsOCArMzA1NSw4IEBAIHZvaWQgQ29udGV4dDo6dGV4SW1hZ2UzRChH
TGVudW0gdGFyZ2V0LAogCiAgICAgRXh0ZW50cyBzaXplKHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsK
ICAgICBUZXh0dXJlICp0ZXh0dXJlID0gZ2V0VGFyZ2V0VGV4dHVyZSh0YXJnZXQpOwotICAgIGhh
bmRsZUVycm9yKHRleHR1cmUtPnNldEltYWdlKG1HTFN0YXRlLmdldFVucGFja1N0YXRlKCksIHRh
cmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCBzaXplLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvcm1hdCwgdHlwZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
ICo+KHBpeGVscykpKTsKKyAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5zZXRJbWFnZSh0aGlzLCBt
R0xTdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLCBmb3JtYXQsIHR5cGUsIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihwaXhlbHMpKSk7CiB9CiAKIHZvaWQgQ29u
dGV4dDo6dGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0LApAQCAtMjgzMSw4ICszMDgwLDggQEAg
dm9pZCBDb250ZXh0Ojp0ZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsCiAgICAgQm94IGFyZWEo
eG9mZnNldCwgeW9mZnNldCwgMCwgd2lkdGgsIGhlaWdodCwgMSk7CiAgICAgVGV4dHVyZSAqdGV4
dHVyZSA9CiAgICAgICAgIGdldFRhcmdldFRleHR1cmUoSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0
YXJnZXQpID8gR0xfVEVYVFVSRV9DVUJFX01BUCA6IHRhcmdldCk7Ci0gICAgaGFuZGxlRXJyb3Io
dGV4dHVyZS0+c2V0U3ViSW1hZ2UobUdMU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFyZ2V0LCBs
ZXZlbCwgYXJlYSwgZm9ybWF0LCB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihwaXhlbHMpKSk7CisgICAg
aGFuZGxlRXJyb3IodGV4dHVyZS0+c2V0U3ViSW1hZ2UodGhpcywgbUdMU3RhdGUuZ2V0VW5wYWNr
U3RhdGUoKSwgdGFyZ2V0LCBsZXZlbCwgYXJlYSwgZm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHR5cGUsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAq
PihwaXhlbHMpKSk7CiB9CiAKIHZvaWQgQ29udGV4dDo6dGV4U3ViSW1hZ2UzRChHTGVudW0gdGFy
Z2V0LApAQCAtMjg1Nyw4ICszMTA2LDggQEAgdm9pZCBDb250ZXh0Ojp0ZXhTdWJJbWFnZTNEKEdM
ZW51bSB0YXJnZXQsCiAKICAgICBCb3ggYXJlYSh4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3
aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CiAgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGdldFRhcmdldFRl
eHR1cmUodGFyZ2V0KTsKLSAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5zZXRTdWJJbWFnZShtR0xT
dGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQsIGxldmVsLCBhcmVhLCBmb3JtYXQsIHR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90ICo+KHBpeGVscykpKTsKKyAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5zZXRT
dWJJbWFnZSh0aGlzLCBtR0xTdGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQsIGxldmVsLCBh
cmVhLCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KHBpeGVscykpKTsKIH0KIAogdm9pZCBD
b250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0LApAQCAtMjg3NSw3ICsz
MTI0LDcgQEAgdm9pZCBDb250ZXh0Ojpjb21wcmVzc2VkVGV4SW1hZ2UyRChHTGVudW0gdGFyZ2V0
LAogICAgIEV4dGVudHMgc2l6ZSh3aWR0aCwgaGVpZ2h0LCAxKTsKICAgICBUZXh0dXJlICp0ZXh0
dXJlID0KICAgICAgICAgZ2V0VGFyZ2V0VGV4dHVyZShJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRh
cmdldCkgPyBHTF9URVhUVVJFX0NVQkVfTUFQIDogdGFyZ2V0KTsKLSAgICBoYW5kbGVFcnJvcih0
ZXh0dXJlLT5zZXRDb21wcmVzc2VkSW1hZ2UobUdMU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFy
Z2V0LCBsZXZlbCwKKyAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5zZXRDb21wcmVzc2VkSW1hZ2Uo
dGhpcywgbUdMU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFyZ2V0LCBsZXZlbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxmb3JtYXQsIHNpemUs
IGltYWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KGRhdGEpKSk7CiB9CkBAIC0yODk0LDcg
KzMxNDMsNyBAQCB2b2lkIENvbnRleHQ6OmNvbXByZXNzZWRUZXhJbWFnZTNEKEdMZW51bSB0YXJn
ZXQsCiAKICAgICBFeHRlbnRzIHNpemUod2lkdGgsIGhlaWdodCwgZGVwdGgpOwogICAgIFRleHR1
cmUgKnRleHR1cmUgPSBnZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7Ci0gICAgaGFuZGxlRXJyb3Io
dGV4dHVyZS0+c2V0Q29tcHJlc3NlZEltYWdlKG1HTFN0YXRlLmdldFVucGFja1N0YXRlKCksIHRh
cmdldCwgbGV2ZWwsCisgICAgaGFuZGxlRXJyb3IodGV4dHVyZS0+c2V0Q29tcHJlc3NlZEltYWdl
KHRoaXMsIG1HTFN0YXRlLmdldFVucGFja1N0YXRlKCksIHRhcmdldCwgbGV2ZWwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsZm9ybWF0LCBzaXpl
LCBpbWFnZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihkYXRhKSkpOwogfQpAQCAtMjkxNCw3
ICszMTYzLDcgQEAgdm9pZCBDb250ZXh0Ojpjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTGVudW0g
dGFyZ2V0LAogICAgIEJveCBhcmVhKHhvZmZzZXQsIHlvZmZzZXQsIDAsIHdpZHRoLCBoZWlnaHQs
IDEpOwogICAgIFRleHR1cmUgKnRleHR1cmUgPQogICAgICAgICBnZXRUYXJnZXRUZXh0dXJlKElz
Q3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSA/IEdMX1RFWFRVUkVfQ1VCRV9NQVAgOiB0YXJn
ZXQpOwotICAgIGhhbmRsZUVycm9yKHRleHR1cmUtPnNldENvbXByZXNzZWRTdWJJbWFnZShtR0xT
dGF0ZS5nZXRVbnBhY2tTdGF0ZSgpLCB0YXJnZXQsIGxldmVsLCBhcmVhLAorICAgIGhhbmRsZUVy
cm9yKHRleHR1cmUtPnNldENvbXByZXNzZWRTdWJJbWFnZSh0aGlzLCBtR0xTdGF0ZS5nZXRVbnBh
Y2tTdGF0ZSgpLCB0YXJnZXQsIGxldmVsLCBhcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQsIGltYWdlU2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90ICo+KGRhdGEpKSk7CiB9CkBAIC0yOTQxLDcgKzMxOTAsNyBAQCB2b2lkIENvbnRleHQ6
OmNvbXByZXNzZWRUZXhTdWJJbWFnZTNEKEdMZW51bSB0YXJnZXQsCiAKICAgICBCb3ggYXJlYSh4
b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCk7CiAgICAgVGV4
dHVyZSAqdGV4dHVyZSA9IGdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKLSAgICBoYW5kbGVFcnJv
cih0ZXh0dXJlLT5zZXRDb21wcmVzc2VkU3ViSW1hZ2UobUdMU3RhdGUuZ2V0VW5wYWNrU3RhdGUo
KSwgdGFyZ2V0LCBsZXZlbCwgYXJlYSwKKyAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5zZXRDb21w
cmVzc2VkU3ViSW1hZ2UodGhpcywgbUdMU3RhdGUuZ2V0VW5wYWNrU3RhdGUoKSwgdGFyZ2V0LCBs
ZXZlbCwgYXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9ybWF0LCBpbWFnZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihkYXRhKSkpOwog
fQpAQCAtMjk0OSw1NCArMzE5OCwzNCBAQCB2b2lkIENvbnRleHQ6OmNvbXByZXNzZWRUZXhTdWJJ
bWFnZTNEKEdMZW51bSB0YXJnZXQsCiB2b2lkIENvbnRleHQ6OmdlbmVyYXRlTWlwbWFwKEdMZW51
bSB0YXJnZXQpCiB7CiAgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGdldFRhcmdldFRleHR1cmUodGFy
Z2V0KTsKLSAgICBoYW5kbGVFcnJvcih0ZXh0dXJlLT5nZW5lcmF0ZU1pcG1hcCgpKTsKKyAgICBo
YW5kbGVFcnJvcih0ZXh0dXJlLT5nZW5lcmF0ZU1pcG1hcCh0aGlzKSk7CiB9CiAKLUdMYm9vbGVh
biBDb250ZXh0OjplbmFibGVFeHRlbnNpb24oY29uc3QgY2hhciAqbmFtZSkKK3ZvaWQgQ29udGV4
dDo6Y29weVRleHR1cmVDSFJPTUlVTShHTHVpbnQgc291cmNlSWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgc291cmNlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGRlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBkZXN0TGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGRlc3RUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB1bnBhY2tGbGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gdW5wYWNrVW5tdWx0aXBseUFscGhhKQogewotICAgIGNvbnN0IEV4
dGVuc2lvbkluZm9NYXAgJmV4dGVuc2lvbkluZm9zID0gR2V0RXh0ZW5zaW9uSW5mb01hcCgpOwot
ICAgIEFTU0VSVChleHRlbnNpb25JbmZvcy5maW5kKG5hbWUpICE9IGV4dGVuc2lvbkluZm9zLmVu
ZCgpKTsKLSAgICBjb25zdCBhdXRvICZleHRlbnNpb24gPSBleHRlbnNpb25JbmZvcy5hdChuYW1l
KTsKLSAgICBBU1NFUlQoZXh0ZW5zaW9uLkVuYWJsZWFibGUpOwotCi0gICAgaWYgKG1FeHRlbnNp
b25zLiooZXh0ZW5zaW9uLkV4dGVuc2lvbnNNZW1iZXIpKQotICAgIHsKLSAgICAgICAgLy8gRXh0
ZW5zaW9uIGFscmVhZHkgZW5hYmxlZAotICAgICAgICByZXR1cm4gR0xfVFJVRTsKLSAgICB9Ci0K
LSAgICBjb25zdCBhdXRvICZuYXRpdmVFeHRlbnNpb25zID0gbUltcGxlbWVudGF0aW9uLT5nZXRO
YXRpdmVFeHRlbnNpb25zKCk7Ci0gICAgaWYgKCEobmF0aXZlRXh0ZW5zaW9ucy4qKGV4dGVuc2lv
bi5FeHRlbnNpb25zTWVtYmVyKSkpCi0gICAgewotICAgICAgICAvLyBVbmRlcmx5aW5nIGltcGxl
bWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgdGhpcyB2YWxpZCBleHRlbnNpb24KLSAgICAgICAg
cmV0dXJuIEdMX0ZBTFNFOwotICAgIH0KLQotICAgIG1FeHRlbnNpb25zLiooZXh0ZW5zaW9uLkV4
dGVuc2lvbnNNZW1iZXIpID0gdHJ1ZTsKLSAgICB1cGRhdGVDYXBzKCk7Ci0gICAgaW5pdEV4dGVu
c2lvblN0cmluZ3MoKTsKLSAgICByZXR1cm4gR0xfVFJVRTsKLX0KLQotdm9pZCBDb250ZXh0Ojpj
b3B5VGV4dHVyZUNIUk9NSVVNKEdMdWludCBzb3VyY2VJZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgZGVzdElkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBkZXN0VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdW5wYWNrRmxpcFksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1VubXVsdGlwbHlBbHBoYSkKLXsKLSAgICBz
eW5jU3RhdGVGb3JUZXhJbWFnZSgpOworICAgIHN5bmNTdGF0ZUZvclRleEltYWdlKCk7CiAKICAg
ICBnbDo6VGV4dHVyZSAqc291cmNlVGV4dHVyZSA9IGdldFRleHR1cmUoc291cmNlSWQpOwogICAg
IGdsOjpUZXh0dXJlICpkZXN0VGV4dHVyZSAgID0gZ2V0VGV4dHVyZShkZXN0SWQpOwotICAgIGhh
bmRsZUVycm9yKGRlc3RUZXh0dXJlLT5jb3B5VGV4dHVyZShpbnRlcm5hbEZvcm1hdCwgZGVzdFR5
cGUsIHVucGFja0ZsaXBZID09IEdMX1RSVUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVucGFja1ByZW11bHRpcGx5QWxwaGEgPT0gR0xfVFJVRSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wYWNrVW5tdWx0aXBseUFscGhhID09
IEdMX1RSVUUsIHNvdXJjZVRleHR1cmUpKTsKKyAgICBoYW5kbGVFcnJvcihkZXN0VGV4dHVyZS0+
Y29weVRleHR1cmUoCisgICAgICAgIHRoaXMsIGRlc3RUYXJnZXQsIGRlc3RMZXZlbCwgaW50ZXJu
YWxGb3JtYXQsIGRlc3RUeXBlLCBzb3VyY2VMZXZlbCwgdW5wYWNrRmxpcFkgPT0gR0xfVFJVRSwK
KyAgICAgICAgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSA9PSBHTF9UUlVFLCB1bnBhY2tVbm11bHRp
cGx5QWxwaGEgPT0gR0xfVFJVRSwgc291cmNlVGV4dHVyZSkpOwogfQogCiB2b2lkIENvbnRleHQ6
OmNvcHlTdWJUZXh0dXJlQ0hST01JVU0oR0x1aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNvdXJjZUxldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0VGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBkZXN0SWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgZGVzdExldmVsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCB4LApAQCAtMzAxOSw5ICszMjQ4LDkgQEAgdm9pZCBDb250ZXh0Ojpjb3B5
U3ViVGV4dHVyZUNIUk9NSVVNKEdMdWludCBzb3VyY2VJZCwKICAgICBnbDo6VGV4dHVyZSAqZGVz
dFRleHR1cmUgICA9IGdldFRleHR1cmUoZGVzdElkKTsKICAgICBPZmZzZXQgb2Zmc2V0KHhvZmZz
ZXQsIHlvZmZzZXQsIDApOwogICAgIFJlY3RhbmdsZSBhcmVhKHgsIHksIHdpZHRoLCBoZWlnaHQp
OwotICAgIGhhbmRsZUVycm9yKGRlc3RUZXh0dXJlLT5jb3B5U3ViVGV4dHVyZShvZmZzZXQsIGFy
ZWEsIHVucGFja0ZsaXBZID09IEdMX1RSVUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVucGFja1ByZW11bHRpcGx5QWxwaGEgPT0gR0xfVFJVRSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wYWNrVW5tdWx0aXBseUFs
cGhhID09IEdMX1RSVUUsIHNvdXJjZVRleHR1cmUpKTsKKyAgICBoYW5kbGVFcnJvcihkZXN0VGV4
dHVyZS0+Y29weVN1YlRleHR1cmUoCisgICAgICAgIHRoaXMsIGRlc3RUYXJnZXQsIGRlc3RMZXZl
bCwgb2Zmc2V0LCBzb3VyY2VMZXZlbCwgYXJlYSwgdW5wYWNrRmxpcFkgPT0gR0xfVFJVRSwKKyAg
ICAgICAgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSA9PSBHTF9UUlVFLCB1bnBhY2tVbm11bHRpcGx5
QWxwaGEgPT0gR0xfVFJVRSwgc291cmNlVGV4dHVyZSkpOwogfQogCiB2b2lkIENvbnRleHQ6OmNv
bXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNKEdMdWludCBzb3VyY2VJZCwgR0x1aW50IGRlc3RJ
ZCkKQEAgLTMwMzAsNyArMzI1OSw3IEBAIHZvaWQgQ29udGV4dDo6Y29tcHJlc3NlZENvcHlUZXh0
dXJlQ0hST01JVU0oR0x1aW50IHNvdXJjZUlkLCBHTHVpbnQgZGVzdElkKQogCiAgICAgZ2w6OlRl
eHR1cmUgKnNvdXJjZVRleHR1cmUgPSBnZXRUZXh0dXJlKHNvdXJjZUlkKTsKICAgICBnbDo6VGV4
dHVyZSAqZGVzdFRleHR1cmUgICA9IGdldFRleHR1cmUoZGVzdElkKTsKLSAgICBoYW5kbGVFcnJv
cihkZXN0VGV4dHVyZS0+Y29weUNvbXByZXNzZWRUZXh0dXJlKHNvdXJjZVRleHR1cmUpKTsKKyAg
ICBoYW5kbGVFcnJvcihkZXN0VGV4dHVyZS0+Y29weUNvbXByZXNzZWRUZXh0dXJlKHRoaXMsIHNv
dXJjZVRleHR1cmUpKTsKIH0KIAogdm9pZCBDb250ZXh0OjpnZXRCdWZmZXJQb2ludGVydihHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMpCkBAIC0zMDQ2LDcgKzMyNzUs
NyBAQCBHTHZvaWQgKkNvbnRleHQ6Om1hcEJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTGVudW0gYWNj
ZXNzKQogICAgIEJ1ZmZlciAqYnVmZmVyID0gbUdMU3RhdGUuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdl
dCk7CiAgICAgQVNTRVJUKGJ1ZmZlcik7CiAKLSAgICBFcnJvciBlcnJvciA9IGJ1ZmZlci0+bWFw
KGFjY2Vzcyk7CisgICAgRXJyb3IgZXJyb3IgPSBidWZmZXItPm1hcCh0aGlzLCBhY2Nlc3MpOwog
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAgICAgICBoYW5kbGVFcnJvcihlcnJv
cik7CkBAIC0zMDYyLDcgKzMyOTEsNyBAQCBHTGJvb2xlYW4gQ29udGV4dDo6dW5tYXBCdWZmZXIo
R0xlbnVtIHRhcmdldCkKICAgICBBU1NFUlQoYnVmZmVyKTsKIAogICAgIEdMYm9vbGVhbiByZXN1
bHQ7Ci0gICAgRXJyb3IgZXJyb3IgPSBidWZmZXItPnVubWFwKCZyZXN1bHQpOworICAgIEVycm9y
IGVycm9yID0gYnVmZmVyLT51bm1hcCh0aGlzLCAmcmVzdWx0KTsKICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQogICAgIHsKICAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IpOwpAQCAtMzA4MCw3ICsz
MzA5LDcgQEAgR0x2b2lkICpDb250ZXh0OjptYXBCdWZmZXJSYW5nZShHTGVudW0gdGFyZ2V0LAog
ICAgIEJ1ZmZlciAqYnVmZmVyID0gbUdMU3RhdGUuZ2V0VGFyZ2V0QnVmZmVyKHRhcmdldCk7CiAg
ICAgQVNTRVJUKGJ1ZmZlcik7CiAKLSAgICBFcnJvciBlcnJvciA9IGJ1ZmZlci0+bWFwUmFuZ2Uo
b2Zmc2V0LCBsZW5ndGgsIGFjY2Vzcyk7CisgICAgRXJyb3IgZXJyb3IgPSBidWZmZXItPm1hcFJh
bmdlKHRoaXMsIG9mZnNldCwgbGVuZ3RoLCBhY2Nlc3MpOwogICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCiAgICAgewogICAgICAgICBoYW5kbGVFcnJvcihlcnJvcik7CkBAIC0zMTI1LDExICszMzU0
LDIxIEBAIHZvaWQgQ29udGV4dDo6YmxlbmRDb2xvcihHTGNsYW1wZiByZWQsIEdMY2xhbXBmIGdy
ZWVuLCBHTGNsYW1wZiBibHVlLCBHTGNsYW1wZiBhCiAgICAgbUdMU3RhdGUuc2V0QmxlbmRDb2xv
cihjbGFtcDAxKHJlZCksIGNsYW1wMDEoZ3JlZW4pLCBjbGFtcDAxKGJsdWUpLCBjbGFtcDAxKGFs
cGhhKSk7CiB9CiAKK3ZvaWQgQ29udGV4dDo6YmxlbmRFcXVhdGlvbihHTGVudW0gbW9kZSkKK3sK
KyAgICBtR0xTdGF0ZS5zZXRCbGVuZEVxdWF0aW9uKG1vZGUsIG1vZGUpOworfQorCiB2b2lkIENv
bnRleHQ6OmJsZW5kRXF1YXRpb25TZXBhcmF0ZShHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVB
bHBoYSkKIHsKICAgICBtR0xTdGF0ZS5zZXRCbGVuZEVxdWF0aW9uKG1vZGVSR0IsIG1vZGVBbHBo
YSk7CiB9CiAKK3ZvaWQgQ29udGV4dDo6YmxlbmRGdW5jKEdMZW51bSBzZmFjdG9yLCBHTGVudW0g
ZGZhY3RvcikKK3sKKyAgICBtR0xTdGF0ZS5zZXRCbGVuZEZhY3RvcnMoc2ZhY3RvciwgZGZhY3Rv
ciwgc2ZhY3RvciwgZGZhY3Rvcik7Cit9CisKIHZvaWQgQ29udGV4dDo6YmxlbmRGdW5jU2VwYXJh
dGUoR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhhLCBHTGVudW0g
ZHN0QWxwaGEpCiB7CiAgICAgbUdMU3RhdGUuc2V0QmxlbmRGYWN0b3JzKHNyY1JHQiwgZHN0UkdC
LCBzcmNBbHBoYSwgZHN0QWxwaGEpOwpAQCAtMzM5Nyw2ICszNjM2LDM0IEBAIHZvaWQgQ29udGV4
dDo6dmVydGV4QXR0cmliUG9pbnRlcihHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm9ybWFsaXplZCA9PSBHTF9UUlVFLCBmYWxzZSwgc3RyaWRlLCBwdHIp
OwogfQogCit2b2lkIENvbnRleHQ6OnZlcnRleEF0dHJpYkZvcm1hdChHTHVpbnQgYXR0cmliSW5k
ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCByZWxhdGl2ZU9mZnNldCkKK3sKKyAgICBtR0xTdGF0ZS5z
ZXRWZXJ0ZXhBdHRyaWJGb3JtYXQoYXR0cmliSW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQg
PT0gR0xfVFJVRSwgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
bGF0aXZlT2Zmc2V0KTsKK30KKwordm9pZCBDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJRm9ybWF0KEdM
dWludCBhdHRyaWJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCByZWxhdGl2ZU9mZnNldCkK
K3sKKyAgICBtR0xTdGF0ZS5zZXRWZXJ0ZXhBdHRyaWJGb3JtYXQoYXR0cmliSW5kZXgsIHNpemUs
IHR5cGUsIGZhbHNlLCB0cnVlLCByZWxhdGl2ZU9mZnNldCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6
dmVydGV4QXR0cmliQmluZGluZyhHTHVpbnQgYXR0cmliSW5kZXgsIEdMdWludCBiaW5kaW5nSW5k
ZXgpCit7CisgICAgbUdMU3RhdGUuc2V0VmVydGV4QXR0cmliQmluZGluZyhhdHRyaWJJbmRleCwg
YmluZGluZ0luZGV4KTsKK30KKwordm9pZCBDb250ZXh0OjpzZXRWZXJ0ZXhCaW5kaW5nRGl2aXNv
cihHTHVpbnQgYmluZGluZ0luZGV4LCBHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBtR0xTdGF0ZS5z
ZXRWZXJ0ZXhCaW5kaW5nRGl2aXNvcihiaW5kaW5nSW5kZXgsIGRpdmlzb3IpOworfQorCiB2b2lk
IENvbnRleHQ6OnZpZXdwb3J0KEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0KQogewogICAgIG1HTFN0YXRlLnNldFZpZXdwb3J0UGFyYW1zKHgsIHksIHdpZHRo
LCBoZWlnaHQpOwpAQCAtMzQzNCw2ICszNzAxLDQ4IEBAIHZvaWQgQ29udGV4dDo6dmVydGV4QXR0
cmliSTR1aXYoR0x1aW50IGluZGV4LCBjb25zdCBHTHVpbnQgKnYpCiAgICAgbUdMU3RhdGUuc2V0
VmVydGV4QXR0cmlidShpbmRleCwgdik7CiB9CiAKK3ZvaWQgQ29udGV4dDo6Z2V0VmVydGV4QXR0
cmliaXYoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCit7CisgICAg
Y29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlcyA9CisgICAg
ICAgIGdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWUoaW5kZXgpOworICAg
IGNvbnN0IFZlcnRleEFycmF5ICp2YW8gPSBnZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXJyYXkoKTsK
KyAgICBRdWVyeVZlcnRleEF0dHJpYml2KHZhby0+Z2V0VmVydGV4QXR0cmlidXRlKGluZGV4KSwg
dmFvLT5nZXRCaW5kaW5nRnJvbUF0dHJpYkluZGV4KGluZGV4KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGN1cnJlbnRWYWx1ZXMsIHBuYW1lLCBwYXJhbXMpOworfQorCit2b2lkIENvbnRleHQ6
OmdldFZlcnRleEF0dHJpYmZ2KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpw
YXJhbXMpCit7CisgICAgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVu
dFZhbHVlcyA9CisgICAgICAgIGdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFs
dWUoaW5kZXgpOworICAgIGNvbnN0IFZlcnRleEFycmF5ICp2YW8gPSBnZXRHTFN0YXRlKCkuZ2V0
VmVydGV4QXJyYXkoKTsKKyAgICBRdWVyeVZlcnRleEF0dHJpYmZ2KHZhby0+Z2V0VmVydGV4QXR0
cmlidXRlKGluZGV4KSwgdmFvLT5nZXRCaW5kaW5nRnJvbUF0dHJpYkluZGV4KGluZGV4KSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWYWx1ZXMsIHBuYW1lLCBwYXJhbXMpOworfQor
Cit2b2lkIENvbnRleHQ6OmdldFZlcnRleEF0dHJpYklpdihHTHVpbnQgaW5kZXgsIEdMZW51bSBw
bmFtZSwgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFs
dWVEYXRhICZjdXJyZW50VmFsdWVzID0KKyAgICAgICAgZ2V0R0xTdGF0ZSgpLmdldFZlcnRleEF0
dHJpYkN1cnJlbnRWYWx1ZShpbmRleCk7CisgICAgY29uc3QgVmVydGV4QXJyYXkgKnZhbyA9IGdl
dEdMU3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgpOworICAgIFF1ZXJ5VmVydGV4QXR0cmliSWl2KHZh
by0+Z2V0VmVydGV4QXR0cmlidXRlKGluZGV4KSwgdmFvLT5nZXRCaW5kaW5nRnJvbUF0dHJpYklu
ZGV4KGluZGV4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmFsdWVzLCBwbmFt
ZSwgcGFyYW1zKTsKK30KKwordm9pZCBDb250ZXh0OjpnZXRWZXJ0ZXhBdHRyaWJJdWl2KEdMdWlu
dCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcykKK3sKKyAgICBjb25zdCBWZXJ0
ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWVzID0KKyAgICAgICAgZ2V0R0xT
dGF0ZSgpLmdldFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZShpbmRleCk7CisgICAgY29uc3QgVmVy
dGV4QXJyYXkgKnZhbyA9IGdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgpOworICAgIFF1ZXJ5
VmVydGV4QXR0cmliSXVpdih2YW8tPmdldFZlcnRleEF0dHJpYnV0ZShpbmRleCksIHZhby0+Z2V0
QmluZGluZ0Zyb21BdHRyaWJJbmRleChpbmRleCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRWYWx1ZXMsIHBuYW1lLCBwYXJhbXMpOworfQorCit2b2lkIENvbnRleHQ6OmdldFZl
cnRleEF0dHJpYlBvaW50ZXJ2KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHZvaWQgKipw
b2ludGVyKQoreworICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0gZ2V0R0xTdGF0
ZSgpLmdldFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0ZShpbmRleCk7CisgICAgUXVl
cnlWZXJ0ZXhBdHRyaWJQb2ludGVydihhdHRyaWIsIHBuYW1lLCBwb2ludGVyKTsKK30KKwogdm9p
ZCBDb250ZXh0OjpkZWJ1Z01lc3NhZ2VDb250cm9sKEdMZW51bSBzb3VyY2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHNldmVyaXR5LApAQCAtMzQ5MCw3ICszNzk5LDcgQEAgdm9p
ZCBDb250ZXh0OjpidWZmZXJEYXRhKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29u
c3QgR0x2b2lkICpkYXRhLCBHTGUKIHsKICAgICBCdWZmZXIgKmJ1ZmZlciA9IG1HTFN0YXRlLmdl
dFRhcmdldEJ1ZmZlcih0YXJnZXQpOwogICAgIEFTU0VSVChidWZmZXIpOwotICAgIGhhbmRsZUVy
cm9yKGJ1ZmZlci0+YnVmZmVyRGF0YSh0YXJnZXQsIGRhdGEsIHNpemUsIHVzYWdlKSk7CisgICAg
aGFuZGxlRXJyb3IoYnVmZmVyLT5idWZmZXJEYXRhKHRoaXMsIHRhcmdldCwgZGF0YSwgc2l6ZSwg
dXNhZ2UpKTsKIH0KIAogdm9pZCBDb250ZXh0OjpidWZmZXJTdWJEYXRhKEdMZW51bSB0YXJnZXQs
IEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCBHTHZvaWQgKmRhdGEpCkBA
IC0zNTAyLDEzICszODExLDEzIEBAIHZvaWQgQ29udGV4dDo6YnVmZmVyU3ViRGF0YShHTGVudW0g
dGFyZ2V0LCBHTGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29uCiAKICAgICBCdWZm
ZXIgKmJ1ZmZlciA9IG1HTFN0YXRlLmdldFRhcmdldEJ1ZmZlcih0YXJnZXQpOwogICAgIEFTU0VS
VChidWZmZXIpOwotICAgIGhhbmRsZUVycm9yKGJ1ZmZlci0+YnVmZmVyU3ViRGF0YSh0YXJnZXQs
IGRhdGEsIHNpemUsIG9mZnNldCkpOworICAgIGhhbmRsZUVycm9yKGJ1ZmZlci0+YnVmZmVyU3Vi
RGF0YSh0aGlzLCB0YXJnZXQsIGRhdGEsIHNpemUsIG9mZnNldCkpOwogfQogCiB2b2lkIENvbnRl
eHQ6OmF0dGFjaFNoYWRlcihHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRlcikKIHsKLSAgICBh
dXRvIHByb2dyYW1PYmplY3QgPSBtUmVzb3VyY2VNYW5hZ2VyLT5nZXRQcm9ncmFtKHByb2dyYW0p
OwotICAgIGF1dG8gc2hhZGVyT2JqZWN0ICA9IG1SZXNvdXJjZU1hbmFnZXItPmdldFNoYWRlcihz
aGFkZXIpOworICAgIGF1dG8gcHJvZ3JhbU9iamVjdCA9IG1TdGF0ZS5tU2hhZGVyUHJvZ3JhbXMt
PmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgYXV0byBzaGFkZXJPYmplY3QgID0gbVN0YXRlLm1T
aGFkZXJQcm9ncmFtcy0+Z2V0U2hhZGVyKHNoYWRlcik7CiAgICAgQVNTRVJUKHByb2dyYW1PYmpl
Y3QgJiYgc2hhZGVyT2JqZWN0KTsKICAgICBwcm9ncmFtT2JqZWN0LT5hdHRhY2hTaGFkZXIoc2hh
ZGVyT2JqZWN0KTsKIH0KQEAgLTM1MTgsNCArMzgyNyw3OTMgQEAgY29uc3QgV29ya2Fyb3VuZHMg
JkNvbnRleHQ6OmdldFdvcmthcm91bmRzKCkgY29uc3QKICAgICByZXR1cm4gbVdvcmthcm91bmRz
OwogfQogCit2b2lkIENvbnRleHQ6OmNvcHlCdWZmZXJTdWJEYXRhKEdMZW51bSByZWFkVGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gd3JpdGVUYXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIHJlYWRPZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIHdyaXRlT2Zmc2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUpCit7CisgICAgLy8gaWYg
c2l6ZSBpcyB6ZXJvLCB0aGUgY29weSBpcyBhIHN1Y2Nlc3NmdWwgbm8tb3AKKyAgICBpZiAoc2l6
ZSA9PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFRPRE8oam1h
ZGlsbCk6IGNhY2hlIHRoZXNlLgorICAgIEJ1ZmZlciAqcmVhZEJ1ZmZlciAgPSBtR0xTdGF0ZS5n
ZXRUYXJnZXRCdWZmZXIocmVhZFRhcmdldCk7CisgICAgQnVmZmVyICp3cml0ZUJ1ZmZlciA9IG1H
TFN0YXRlLmdldFRhcmdldEJ1ZmZlcih3cml0ZVRhcmdldCk7CisKKyAgICBoYW5kbGVFcnJvcih3
cml0ZUJ1ZmZlci0+Y29weUJ1ZmZlclN1YkRhdGEodGhpcywgcmVhZEJ1ZmZlciwgcmVhZE9mZnNl
dCwgd3JpdGVPZmZzZXQsIHNpemUpKTsKK30KKwordm9pZCBDb250ZXh0OjpiaW5kQXR0cmliTG9j
YXRpb24oR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgY29uc3QgR0xjaGFyICpuYW1lKQor
eworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBnZXRQcm9ncmFtKHByb2dyYW0pOworICAg
IC8vIFRPRE8oam1hZGlsbCk6IFJlLXVzZSB0aGlzIGZyb20gdGhlIHZhbGlkYXRpb24gaWYgcG9z
c2libGUuCisgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOworICAgIHByb2dyYW1PYmplY3QtPmJp
bmRBdHRyaWJ1dGVMb2NhdGlvbihpbmRleCwgbmFtZSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6Ymlu
ZEJ1ZmZlcihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgYnVmZmVyKQoreworICAgIHN3aXRjaCAodGFy
Z2V0KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9BUlJBWV9CVUZGRVI6CisgICAgICAgICAgICBi
aW5kQXJyYXlCdWZmZXIoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSOgorICAgICAgICAgICAgYmluZEVsZW1lbnRBcnJheUJ1
ZmZlcihidWZmZXIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQ09QWV9S
RUFEX0JVRkZFUjoKKyAgICAgICAgICAgIGJpbmRDb3B5UmVhZEJ1ZmZlcihidWZmZXIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQ09QWV9XUklURV9CVUZGRVI6CisgICAg
ICAgICAgICBiaW5kQ29weVdyaXRlQnVmZmVyKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBHTF9QSVhFTF9QQUNLX0JVRkZFUjoKKyAgICAgICAgICAgIGJpbmRQaXhl
bFBhY2tCdWZmZXIoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdM
X1BJWEVMX1VOUEFDS19CVUZGRVI6CisgICAgICAgICAgICBiaW5kUGl4ZWxVbnBhY2tCdWZmZXIo
YnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1VOSUZPUk1fQlVG
RkVSOgorICAgICAgICAgICAgYmluZEdlbmVyaWNVbmlmb3JtQnVmZmVyKGJ1ZmZlcik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
OgorICAgICAgICAgICAgYmluZEdlbmVyaWNUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcihidWZmZXIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQVRPTUlDX0NPVU5URVJfQlVG
RkVSOgorICAgICAgICAgICAgYmluZEdlbmVyaWNBdG9taWNDb3VudGVyQnVmZmVyKGJ1ZmZlcik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9TSEFERVJfU1RPUkFHRV9CVUZG
RVI6CisgICAgICAgICAgICBiaW5kR2VuZXJpY1NoYWRlclN0b3JhZ2VCdWZmZXIoYnVmZmVyKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0RSQVdfSU5ESVJFQ1RfQlVGRkVS
OgorICAgICAgICAgICAgYmluZERyYXdJbmRpcmVjdEJ1ZmZlcihidWZmZXIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfRElTUEFUQ0hfSU5ESVJFQ1RfQlVGRkVSOgorICAg
ICAgICAgICAgaWYgKGJ1ZmZlciAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IC8vIEJpbmRpbmcgYnVmZmVycyB0byB0aGlzIGJpbmRpbmcgcG9pbnQgaXMgbm90IGltcGxlbWVu
dGVkIHlldC4KKyAgICAgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBDb250ZXh0
OjpiaW5kQnVmZmVyQmFzZShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMdWludCBidWZm
ZXIpCit7CisgICAgYmluZEJ1ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgMCwgMCk7
Cit9CisKK3ZvaWQgQ29udGV4dDo6YmluZEJ1ZmZlclJhbmdlKEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnRwdHIgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aXB0ciBzaXplKQoreworICAgIHN3aXRjaCAodGFyZ2V0KQorICAgIHsKKyAgICAgICAgY2FzZSBH
TF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSOgorICAgICAgICAgICAgYmluZEluZGV4ZWRUcmFu
c2Zvcm1GZWVkYmFja0J1ZmZlcihidWZmZXIsIGluZGV4LCBvZmZzZXQsIHNpemUpOworICAgICAg
ICAgICAgYmluZEdlbmVyaWNUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcihidWZmZXIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVU5JRk9STV9CVUZGRVI6CisgICAgICAgICAg
ICBiaW5kSW5kZXhlZFVuaWZvcm1CdWZmZXIoYnVmZmVyLCBpbmRleCwgb2Zmc2V0LCBzaXplKTsK
KyAgICAgICAgICAgIGJpbmRHZW5lcmljVW5pZm9ybUJ1ZmZlcihidWZmZXIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSOgorICAgICAg
ICAgICAgYmluZEluZGV4ZWRBdG9taWNDb3VudGVyQnVmZmVyKGJ1ZmZlciwgaW5kZXgsIG9mZnNl
dCwgc2l6ZSk7CisgICAgICAgICAgICBiaW5kR2VuZXJpY0F0b21pY0NvdW50ZXJCdWZmZXIoYnVm
ZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1NIQURFUl9TVE9SQUdF
X0JVRkZFUjoKKyAgICAgICAgICAgIGJpbmRJbmRleGVkU2hhZGVyU3RvcmFnZUJ1ZmZlcihidWZm
ZXIsIGluZGV4LCBvZmZzZXQsIHNpemUpOworICAgICAgICAgICAgYmluZEdlbmVyaWNTaGFkZXJT
dG9yYWdlQnVmZmVyKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9
Cit9CisKK3ZvaWQgQ29udGV4dDo6YmluZEZyYW1lYnVmZmVyKEdMZW51bSB0YXJnZXQsIEdMdWlu
dCBmcmFtZWJ1ZmZlcikKK3sKKyAgICBpZiAodGFyZ2V0ID09IEdMX1JFQURfRlJBTUVCVUZGRVIg
fHwgdGFyZ2V0ID09IEdMX0ZSQU1FQlVGRkVSKQorICAgIHsKKyAgICAgICAgYmluZFJlYWRGcmFt
ZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7CisgICAgfQorCisgICAgaWYgKHRhcmdldCA9PSBHTF9EUkFX
X0ZSQU1FQlVGRkVSIHx8IHRhcmdldCA9PSBHTF9GUkFNRUJVRkZFUikKKyAgICB7CisgICAgICAg
IGJpbmREcmF3RnJhbWVidWZmZXIoZnJhbWVidWZmZXIpOworICAgIH0KK30KKwordm9pZCBDb250
ZXh0OjpiaW5kUmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIp
Cit7CisgICAgQVNTRVJUKHRhcmdldCA9PSBHTF9SRU5ERVJCVUZGRVIpOworICAgIFJlbmRlcmJ1
ZmZlciAqb2JqZWN0ID0KKyAgICAgICAgbVN0YXRlLm1SZW5kZXJidWZmZXJzLT5jaGVja1JlbmRl
cmJ1ZmZlckFsbG9jYXRpb24obUltcGxlbWVudGF0aW9uLmdldCgpLCByZW5kZXJidWZmZXIpOwor
ICAgIG1HTFN0YXRlLnNldFJlbmRlcmJ1ZmZlckJpbmRpbmcob2JqZWN0KTsKK30KKwordm9pZCBD
b250ZXh0Ojp0ZXhTdG9yYWdlMkRNdWx0aXNhbXBsZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBmaXhlZHNhbXBsZWxvY2F0aW9u
cykKK3sKKyAgICBFeHRlbnRzIHNpemUod2lkdGgsIGhlaWdodCwgMSk7CisgICAgVGV4dHVyZSAq
dGV4dHVyZSA9IGdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKKyAgICBoYW5kbGVFcnJvcih0ZXh0
dXJlLT5zZXRTdG9yYWdlTXVsdGlzYW1wbGUodGhpcywgdGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5h
bGZvcm1hdCwgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZml4ZWRzYW1wbGVsb2NhdGlvbnMpKTsKK30KKwordm9pZCBDb250ZXh0OjpnZXRNdWx0
aXNhbXBsZWZ2KEdMZW51bSBwbmFtZSwgR0x1aW50IGluZGV4LCBHTGZsb2F0ICp2YWwpCit7Cisg
ICAgbUdMU3RhdGUuc3luY0RpcnR5T2JqZWN0KHRoaXMsIEdMX1JFQURfRlJBTUVCVUZGRVIpOwor
ICAgIGNvbnN0IEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IG1HTFN0YXRlLmdldFJlYWRGcmFt
ZWJ1ZmZlcigpOworCisgICAgc3dpdGNoIChwbmFtZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xf
U0FNUExFX1BPU0lUSU9OOgorICAgICAgICAgICAgaGFuZGxlRXJyb3IoZnJhbWVidWZmZXItPmdl
dFNhbXBsZVBvc2l0aW9uKGluZGV4LCB2YWwpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9Cit9CisKK3ZvaWQg
Q29udGV4dDo6cmVuZGVyYnVmZmVyU3RvcmFnZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0KQoreworICAgIC8vIEhhY2sgZm9yIHRoZSBz
cGVjaWFsIFdlYkdMIDEgIkRFUFRIX1NURU5DSUwiIGludGVybmFsIGZvcm1hdC4KKyAgICBHTGVu
dW0gY29udmVydGVkSW50ZXJuYWxGb3JtYXQgPSBnZXRDb252ZXJ0ZWRSZW5kZXJidWZmZXJGb3Jt
YXQoaW50ZXJuYWxmb3JtYXQpOworCisgICAgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIgPSBt
R0xTdGF0ZS5nZXRDdXJyZW50UmVuZGVyYnVmZmVyKCk7CisgICAgaGFuZGxlRXJyb3IocmVuZGVy
YnVmZmVyLT5zZXRTdG9yYWdlKGNvbnZlcnRlZEludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0
KSk7Cit9CisKK3ZvaWQgQ29udGV4dDo6cmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlKEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpCit7CisgICAgLy8gSGFjayBm
b3IgdGhlIHNwZWNpYWwgV2ViR0wgMSAiREVQVEhfU1RFTkNJTCIgaW50ZXJuYWwgZm9ybWF0Lgor
ICAgIEdMZW51bSBjb252ZXJ0ZWRJbnRlcm5hbEZvcm1hdCA9IGdldENvbnZlcnRlZFJlbmRlcmJ1
ZmZlckZvcm1hdChpbnRlcm5hbGZvcm1hdCk7CisKKyAgICBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1
ZmZlciA9IG1HTFN0YXRlLmdldEN1cnJlbnRSZW5kZXJidWZmZXIoKTsKKyAgICBoYW5kbGVFcnJv
cigKKyAgICAgICAgcmVuZGVyYnVmZmVyLT5zZXRTdG9yYWdlTXVsdGlzYW1wbGUoc2FtcGxlcywg
Y29udmVydGVkSW50ZXJuYWxGb3JtYXQsIHdpZHRoLCBoZWlnaHQpKTsKK30KKwordm9pZCBDb250
ZXh0OjpnZXRTeW5jaXYoR0xzeW5jIHN5bmMsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBidWZTaXpl
LCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICp2YWx1ZXMpCit7CisgICAgY29uc3QgRmVuY2VTeW5j
ICpzeW5jT2JqZWN0ID0gZ2V0RmVuY2VTeW5jKHN5bmMpOworICAgIGhhbmRsZUVycm9yKFF1ZXJ5
U3luY2l2KHN5bmNPYmplY3QsIHBuYW1lLCBidWZTaXplLCBsZW5ndGgsIHZhbHVlcykpOworfQor
Cit2b2lkIENvbnRleHQ6OmdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1
ZmZlciA9IG1HTFN0YXRlLmdldFRhcmdldEZyYW1lYnVmZmVyKHRhcmdldCk7CisgICAgUXVlcnlG
cmFtZWJ1ZmZlclBhcmFtZXRlcml2KGZyYW1lYnVmZmVyLCBwbmFtZSwgcGFyYW1zKTsKK30KKwor
dm9pZCBDb250ZXh0OjpzZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcmkoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIHBuYW1lLCBHTGludCBwYXJhbSkKK3sKKyAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIg
PSBtR0xTdGF0ZS5nZXRUYXJnZXRGcmFtZWJ1ZmZlcih0YXJnZXQpOworICAgIFNldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaShmcmFtZWJ1ZmZlciwgcG5hbWUsIHBhcmFtKTsKK30KKworRXJyb3IgQ29u
dGV4dDo6Z2V0U2NyYXRjaEJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6ZSwgYW5nbGU6Ok1lbW9y
eUJ1ZmZlciAqKnNjcmF0Y2hCdWZmZXJPdXQpIGNvbnN0Cit7CisgICAgaWYgKCFtU2NyYXRjaEJ1
ZmZlci5nZXQocmVxdWVzdGVkU2l6ZSwgc2NyYXRjaEJ1ZmZlck91dCkpCisgICAgeworICAgICAg
ICByZXR1cm4gZ2w6Ok91dE9mTWVtb3J5KCkgPDwgIkZhaWxlZCB0byBhbGxvY2F0ZSBpbnRlcm5h
bCBidWZmZXIuIjsKKyAgICB9CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK3ZvaWQg
Q29udGV4dDo6ZGlzcGF0Y2hDb21wdXRlKEdMdWludCBudW1Hcm91cHNYLCBHTHVpbnQgbnVtR3Jv
dXBzWSwgR0x1aW50IG51bUdyb3Vwc1opCit7CisgICAgaWYgKG51bUdyb3Vwc1ggPT0gMHUgfHwg
bnVtR3JvdXBzWSA9PSAwdSB8fCBudW1Hcm91cHNaID09IDB1KQorICAgIHsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIG1JbXBsZW1lbnRhdGlvbi0+ZGlzcGF0Y2hDb21wdXRlKG51bUdy
b3Vwc1gsIG51bUdyb3Vwc1ksIG51bUdyb3Vwc1opOworfQorCitHTGVudW0gQ29udGV4dDo6Y2hl
Y2tGcmFtZWJ1ZmZlclN0YXR1cyhHTGVudW0gdGFyZ2V0KQoreworICAgIEZyYW1lYnVmZmVyICpm
cmFtZWJ1ZmZlciA9IG1HTFN0YXRlLmdldFRhcmdldEZyYW1lYnVmZmVyKHRhcmdldCk7CisgICAg
QVNTRVJUKGZyYW1lYnVmZmVyKTsKKworICAgIHJldHVybiBmcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0
dXModGhpcyk7Cit9CisKK3ZvaWQgQ29udGV4dDo6Y29tcGlsZVNoYWRlcihHTHVpbnQgc2hhZGVy
KQoreworICAgIFNoYWRlciAqc2hhZGVyT2JqZWN0ID0gR2V0VmFsaWRTaGFkZXIodGhpcywgc2hh
ZGVyKTsKKyAgICBpZiAoIXNoYWRlck9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgc2hhZGVyT2JqZWN0LT5jb21waWxlKHRoaXMpOworfQorCit2b2lkIENvbnRleHQ6
OmRlbGV0ZUJ1ZmZlcnMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmJ1ZmZlcnMpCit7CisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgeworICAgICAgICBkZWxldGVCdWZmZXIo
YnVmZmVyc1tpXSk7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmRlbGV0ZUZyYW1lYnVmZmVy
cyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqZnJhbWVidWZmZXJzKQoreworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbjsgaSsrKQorICAgIHsKKyAgICAgICAgaWYgKGZyYW1lYnVmZmVyc1tpXSAh
PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBkZWxldGVGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZl
cnNbaV0pOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmRlbGV0ZVJlbmRl
cmJ1ZmZlcnMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMpCit7CisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgeworICAgICAgICBkZWxldGVSZW5kZXJi
dWZmZXIocmVuZGVyYnVmZmVyc1tpXSk7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmRlbGV0
ZVRleHR1cmVzKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICp0ZXh0dXJlcykKK3sKKyAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG47IGkrKykKKyAgICB7CisgICAgICAgIGlmICh0ZXh0dXJlc1tpXSAh
PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBkZWxldGVUZXh0dXJlKHRleHR1cmVzW2ldKTsK
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBDb250ZXh0OjpkZXRhY2hTaGFkZXIoR0x1aW50
IHByb2dyYW0sIEdMdWludCBzaGFkZXIpCit7CisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9
IGdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOworCisgICAg
U2hhZGVyICpzaGFkZXJPYmplY3QgPSBnZXRTaGFkZXIoc2hhZGVyKTsKKyAgICBBU1NFUlQoc2hh
ZGVyT2JqZWN0KTsKKworICAgIHByb2dyYW1PYmplY3QtPmRldGFjaFNoYWRlcih0aGlzLCBzaGFk
ZXJPYmplY3QpOworfQorCit2b2lkIENvbnRleHQ6OmdlbkJ1ZmZlcnMoR0xzaXplaSBuLCBHTHVp
bnQgKmJ1ZmZlcnMpCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgewor
ICAgICAgICBidWZmZXJzW2ldID0gY3JlYXRlQnVmZmVyKCk7CisgICAgfQorfQorCit2b2lkIENv
bnRleHQ6OmdlbkZyYW1lYnVmZmVycyhHTHNpemVpIG4sIEdMdWludCAqZnJhbWVidWZmZXJzKQor
eworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQorICAgIHsKKyAgICAgICAgZnJhbWVi
dWZmZXJzW2ldID0gY3JlYXRlRnJhbWVidWZmZXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4
dDo6Z2VuUmVuZGVyYnVmZmVycyhHTHNpemVpIG4sIEdMdWludCAqcmVuZGVyYnVmZmVycykKK3sK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKKyAgICB7CisgICAgICAgIHJlbmRlcmJ1
ZmZlcnNbaV0gPSBjcmVhdGVSZW5kZXJidWZmZXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgQ29udGV4
dDo6Z2VuVGV4dHVyZXMoR0xzaXplaSBuLCBHTHVpbnQgKnRleHR1cmVzKQoreworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbjsgaSsrKQorICAgIHsKKyAgICAgICAgdGV4dHVyZXNbaV0gPSBjcmVh
dGVUZXh0dXJlKCk7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmdldEFjdGl2ZUF0dHJpYihH
THVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRl
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmc2l6ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50ICpzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpu
YW1lKQoreworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBnZXRQcm9ncmFtKHByb2dyYW0p
OworICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKKyAgICBwcm9ncmFtT2JqZWN0LT5nZXRBY3Rp
dmVBdHRyaWJ1dGUoaW5kZXgsIGJ1ZnNpemUsIGxlbmd0aCwgc2l6ZSwgdHlwZSwgbmFtZSk7Cit9
CisKK3ZvaWQgQ29udGV4dDo6Z2V0QWN0aXZlVW5pZm9ybShHTHVpbnQgcHJvZ3JhbSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCAqc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKnR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lKQoreworICAgIFBy
b2dyYW0gKnByb2dyYW1PYmplY3QgPSBnZXRQcm9ncmFtKHByb2dyYW0pOworICAgIEFTU0VSVChw
cm9ncmFtT2JqZWN0KTsKKyAgICBwcm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVVbmlmb3JtKGluZGV4
LCBidWZzaXplLCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUpOworfQorCit2b2lkIENvbnRleHQ6
OmdldEF0dGFjaGVkU2hhZGVycyhHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBtYXhjb3VudCwgR0xz
aXplaSAqY291bnQsIEdMdWludCAqc2hhZGVycykKK3sKKyAgICBQcm9ncmFtICpwcm9ncmFtT2Jq
ZWN0ID0gZ2V0UHJvZ3JhbShwcm9ncmFtKTsKKyAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7Cisg
ICAgcHJvZ3JhbU9iamVjdC0+Z2V0QXR0YWNoZWRTaGFkZXJzKG1heGNvdW50LCBjb3VudCwgc2hh
ZGVycyk7Cit9CisKK0dMaW50IENvbnRleHQ6OmdldEF0dHJpYkxvY2F0aW9uKEdMdWludCBwcm9n
cmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpCit7CisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9
IGdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOworICAgIHJl
dHVybiBwcm9ncmFtT2JqZWN0LT5nZXRBdHRyaWJ1dGVMb2NhdGlvbihuYW1lKTsKK30KKwordm9p
ZCBDb250ZXh0OjpnZXRCb29sZWFudihHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1zKQor
eworICAgIEdMZW51bSBuYXRpdmVUeXBlOworICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXMgPSAw
OworICAgIGdldFF1ZXJ5UGFyYW1ldGVySW5mbyhwbmFtZSwgJm5hdGl2ZVR5cGUsICZudW1QYXJh
bXMpOworCisgICAgaWYgKG5hdGl2ZVR5cGUgPT0gR0xfQk9PTCkKKyAgICB7CisgICAgICAgIGdl
dEJvb2xlYW52SW1wbChwbmFtZSwgcGFyYW1zKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAg
ICAgICAgQ2FzdFN0YXRlVmFsdWVzKHRoaXMsIG5hdGl2ZVR5cGUsIHBuYW1lLCBudW1QYXJhbXMs
IHBhcmFtcyk7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6OmdldEZsb2F0dihHTGVudW0gcG5h
bWUsIEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICBHTGVudW0gbmF0aXZlVHlwZTsKKyAgICB1bnNp
Z25lZCBpbnQgbnVtUGFyYW1zID0gMDsKKyAgICBnZXRRdWVyeVBhcmFtZXRlckluZm8ocG5hbWUs
ICZuYXRpdmVUeXBlLCAmbnVtUGFyYW1zKTsKKworICAgIGlmIChuYXRpdmVUeXBlID09IEdMX0ZM
T0FUKQorICAgIHsKKyAgICAgICAgZ2V0RmxvYXR2SW1wbChwbmFtZSwgcGFyYW1zKTsKKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgQ2FzdFN0YXRlVmFsdWVzKHRoaXMsIG5hdGl2ZVR5
cGUsIHBuYW1lLCBudW1QYXJhbXMsIHBhcmFtcyk7CisgICAgfQorfQorCit2b2lkIENvbnRleHQ6
OmdldEludGVnZXJ2KEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBHTGVudW0g
bmF0aXZlVHlwZTsKKyAgICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zID0gMDsKKyAgICBnZXRRdWVy
eVBhcmFtZXRlckluZm8ocG5hbWUsICZuYXRpdmVUeXBlLCAmbnVtUGFyYW1zKTsKKworICAgIGlm
IChuYXRpdmVUeXBlID09IEdMX0lOVCkKKyAgICB7CisgICAgICAgIGdldEludGVnZXJ2SW1wbChw
bmFtZSwgcGFyYW1zKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgQ2FzdFN0YXRl
VmFsdWVzKHRoaXMsIG5hdGl2ZVR5cGUsIHBuYW1lLCBudW1QYXJhbXMsIHBhcmFtcyk7CisgICAg
fQorfQorCit2b2lkIENvbnRleHQ6OmdldFByb2dyYW1pdihHTHVpbnQgcHJvZ3JhbSwgR0xlbnVt
IHBuYW1lLCBHTGludCAqcGFyYW1zKQoreworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBn
ZXRQcm9ncmFtKHByb2dyYW0pOworICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKKyAgICBRdWVy
eVByb2dyYW1pdihwcm9ncmFtT2JqZWN0LCBwbmFtZSwgcGFyYW1zKTsKK30KKwordm9pZCBDb250
ZXh0OjpnZXRJbmZvTG9nKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgR0xjaGFyICppbmZvbG9nKQoreworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3Qg
PSBnZXRQcm9ncmFtKHByb2dyYW0pOworICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKKyAgICBw
cm9ncmFtT2JqZWN0LT5nZXRJbmZvTG9nKGJ1ZnNpemUsIGxlbmd0aCwgaW5mb2xvZyk7Cit9CisK
K3ZvaWQgQ29udGV4dDo6Z2V0U2hhZGVyaXYoR0x1aW50IHNoYWRlciwgR0xlbnVtIHBuYW1lLCBH
TGludCAqcGFyYW1zKQoreworICAgIFNoYWRlciAqc2hhZGVyT2JqZWN0ID0gZ2V0U2hhZGVyKHNo
YWRlcik7CisgICAgQVNTRVJUKHNoYWRlck9iamVjdCk7CisgICAgUXVlcnlTaGFkZXJpdihzaGFk
ZXJPYmplY3QsIHBuYW1lLCBwYXJhbXMpOworfQorCit2b2lkIENvbnRleHQ6OmdldFNoYWRlcklu
Zm9Mb2coR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpICpsZW5ndGgsIEdM
Y2hhciAqaW5mb2xvZykKK3sKKyAgICBTaGFkZXIgKnNoYWRlck9iamVjdCA9IGdldFNoYWRlcihz
aGFkZXIpOworICAgIEFTU0VSVChzaGFkZXJPYmplY3QpOworICAgIHNoYWRlck9iamVjdC0+Z2V0
SW5mb0xvZyhidWZzaXplLCBsZW5ndGgsIGluZm9sb2cpOworfQorCit2b2lkIENvbnRleHQ6Omdl
dFNoYWRlclByZWNpc2lvbkZvcm1hdChHTGVudW0gc2hhZGVydHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcmVjaXNpb250eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnJhbmdlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnByZWNpc2lvbikKK3sKKyAgICAvLyBU
T0RPKGptYWRpbGwpOiBDb21wdXRlIHNoYWRlcnMuCisKKyAgICBzd2l0Y2ggKHNoYWRlcnR5cGUp
CisgICAgeworICAgICAgICBjYXNlIEdMX1ZFUlRFWF9TSEFERVI6CisgICAgICAgICAgICBzd2l0
Y2ggKHByZWNpc2lvbnR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBH
TF9MT1dfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIG1DYXBzLnZlcnRleExvd3BGbG9hdC5n
ZXQocmFuZ2UsIHByZWNpc2lvbik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgR0xfTUVESVVNX0ZMT0FUOgorICAgICAgICAgICAgICAgICAgICBtQ2Fw
cy52ZXJ0ZXhNZWRpdW1wRmxvYXQuZ2V0KHJhbmdlLCBwcmVjaXNpb24pOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0hJR0hfRkxPQVQ6CisgICAg
ICAgICAgICAgICAgICAgIG1DYXBzLnZlcnRleEhpZ2hwRmxvYXQuZ2V0KHJhbmdlLCBwcmVjaXNp
b24pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2Ug
R0xfTE9XX0lOVDoKKyAgICAgICAgICAgICAgICAgICAgbUNhcHMudmVydGV4TG93cEludC5nZXQo
cmFuZ2UsIHByZWNpc2lvbik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGNhc2UgR0xfTUVESVVNX0lOVDoKKyAgICAgICAgICAgICAgICAgICAgbUNhcHMudmVy
dGV4TWVkaXVtcEludC5nZXQocmFuZ2UsIHByZWNpc2lvbik7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgR0xfSElHSF9JTlQ6CisgICAgICAgICAgICAg
ICAgICAgIG1DYXBzLnZlcnRleEhpZ2hwSW50LmdldChyYW5nZSwgcHJlY2lzaW9uKTsKKyAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0ZS
QUdNRU5UX1NIQURFUjoKKyAgICAgICAgICAgIHN3aXRjaCAocHJlY2lzaW9udHlwZSkKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0xPV19GTE9BVDoKKyAgICAgICAgICAg
ICAgICAgICAgbUNhcHMuZnJhZ21lbnRMb3dwRmxvYXQuZ2V0KHJhbmdlLCBwcmVjaXNpb24pOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX01FRElV
TV9GTE9BVDoKKyAgICAgICAgICAgICAgICAgICAgbUNhcHMuZnJhZ21lbnRNZWRpdW1wRmxvYXQu
Z2V0KHJhbmdlLCBwcmVjaXNpb24pOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIEdMX0hJR0hfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIG1DYXBz
LmZyYWdtZW50SGlnaHBGbG9hdC5nZXQocmFuZ2UsIHByZWNpc2lvbik7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBHTF9MT1dfSU5UOgorICAgICAg
ICAgICAgICAgICAgICBtQ2Fwcy5mcmFnbWVudExvd3BJbnQuZ2V0KHJhbmdlLCBwcmVjaXNpb24p
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX01F
RElVTV9JTlQ6CisgICAgICAgICAgICAgICAgICAgIG1DYXBzLmZyYWdtZW50TWVkaXVtcEludC5n
ZXQocmFuZ2UsIHByZWNpc2lvbik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgR0xfSElHSF9JTlQ6CisgICAgICAgICAgICAgICAgICAgIG1DYXBzLmZy
YWdtZW50SGlnaHBJbnQuZ2V0KHJhbmdlLCBwcmVjaXNpb24pOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBV
TlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwordm9pZCBDb250
ZXh0OjpnZXRTaGFkZXJTb3VyY2UoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNp
emVpICpsZW5ndGgsIEdMY2hhciAqc291cmNlKQoreworICAgIFNoYWRlciAqc2hhZGVyT2JqZWN0
ID0gZ2V0U2hhZGVyKHNoYWRlcik7CisgICAgQVNTRVJUKHNoYWRlck9iamVjdCk7CisgICAgc2hh
ZGVyT2JqZWN0LT5nZXRTb3VyY2UoYnVmc2l6ZSwgbGVuZ3RoLCBzb3VyY2UpOworfQorCit2b2lk
IENvbnRleHQ6OmdldFVuaWZvcm1mdihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdM
ZmxvYXQgKnBhcmFtcykKK3sKKyAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gZ2V0UHJvZ3Jh
bShwcm9ncmFtKTsKKyAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CisgICAgcHJvZ3JhbU9iamVj
dC0+Z2V0VW5pZm9ybWZ2KGxvY2F0aW9uLCBwYXJhbXMpOworfQorCit2b2lkIENvbnRleHQ6Omdl
dFVuaWZvcm1pdihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50ICpwYXJhbXMp
Cit7CisgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGdldFByb2dyYW0ocHJvZ3JhbSk7Cisg
ICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOworICAgIHByb2dyYW1PYmplY3QtPmdldFVuaWZvcm1p
dihsb2NhdGlvbiwgcGFyYW1zKTsKK30KKworR0xpbnQgQ29udGV4dDo6Z2V0VW5pZm9ybUxvY2F0
aW9uKEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpCit7CisgICAgUHJvZ3JhbSAq
cHJvZ3JhbU9iamVjdCA9IGdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgQVNTRVJUKHByb2dyYW1P
YmplY3QpOworICAgIHJldHVybiBwcm9ncmFtT2JqZWN0LT5nZXRVbmlmb3JtTG9jYXRpb24obmFt
ZSk7Cit9CisKK0dMYm9vbGVhbiBDb250ZXh0Ojppc0J1ZmZlcihHTHVpbnQgYnVmZmVyKQorewor
ICAgIGlmIChidWZmZXIgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9GQUxTRTsKKyAg
ICB9CisKKyAgICByZXR1cm4gKGdldEJ1ZmZlcihidWZmZXIpID8gR0xfVFJVRSA6IEdMX0ZBTFNF
KTsKK30KKworR0xib29sZWFuIENvbnRleHQ6OmlzRW5hYmxlZChHTGVudW0gY2FwKQoreworICAg
IHJldHVybiBtR0xTdGF0ZS5nZXRFbmFibGVGZWF0dXJlKGNhcCk7Cit9CisKK0dMYm9vbGVhbiBD
b250ZXh0Ojppc0ZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlcikKK3sKKyAgICBpZiAoZnJh
bWVidWZmZXIgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9GQUxTRTsKKyAgICB9CisK
KyAgICByZXR1cm4gKGdldEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKSA/IEdMX1RSVUUgOiBHTF9G
QUxTRSk7Cit9CisKK0dMYm9vbGVhbiBDb250ZXh0Ojppc1Byb2dyYW0oR0x1aW50IHByb2dyYW0p
Cit7CisgICAgaWYgKHByb2dyYW0gPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9GQUxT
RTsKKyAgICB9CisKKyAgICByZXR1cm4gKGdldFByb2dyYW0ocHJvZ3JhbSkgPyBHTF9UUlVFIDog
R0xfRkFMU0UpOworfQorCitHTGJvb2xlYW4gQ29udGV4dDo6aXNSZW5kZXJidWZmZXIoR0x1aW50
IHJlbmRlcmJ1ZmZlcikKK3sKKyAgICBpZiAocmVuZGVyYnVmZmVyID09IDApCisgICAgeworICAg
ICAgICByZXR1cm4gR0xfRkFMU0U7CisgICAgfQorCisgICAgcmV0dXJuIChnZXRSZW5kZXJidWZm
ZXIocmVuZGVyYnVmZmVyKSA/IEdMX1RSVUUgOiBHTF9GQUxTRSk7Cit9CisKK0dMYm9vbGVhbiBD
b250ZXh0Ojppc1NoYWRlcihHTHVpbnQgc2hhZGVyKQoreworICAgIGlmIChzaGFkZXIgPT0gMCkK
KyAgICB7CisgICAgICAgIHJldHVybiBHTF9GQUxTRTsKKyAgICB9CisKKyAgICByZXR1cm4gKGdl
dFNoYWRlcihzaGFkZXIpID8gR0xfVFJVRSA6IEdMX0ZBTFNFKTsKK30KKworR0xib29sZWFuIENv
bnRleHQ6OmlzVGV4dHVyZShHTHVpbnQgdGV4dHVyZSkKK3sKKyAgICBpZiAodGV4dHVyZSA9PSAw
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOworICAgIH0KKworICAgIHJldHVybiAo
Z2V0VGV4dHVyZSh0ZXh0dXJlKSA/IEdMX1RSVUUgOiBHTF9GQUxTRSk7Cit9CisKK3ZvaWQgQ29u
dGV4dDo6bGlua1Byb2dyYW0oR0x1aW50IHByb2dyYW0pCit7CisgICAgUHJvZ3JhbSAqcHJvZ3Jh
bU9iamVjdCA9IGdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgQVNTRVJUKHByb2dyYW1PYmplY3Qp
OworICAgIGhhbmRsZUVycm9yKHByb2dyYW1PYmplY3QtPmxpbmsodGhpcykpOworfQorCit2b2lk
IENvbnRleHQ6OnJlbGVhc2VTaGFkZXJDb21waWxlcigpCit7CisgICAgaGFuZGxlRXJyb3IobUNv
bXBpbGVyLT5yZWxlYXNlKCkpOworfQorCit2b2lkIENvbnRleHQ6OnNoYWRlckJpbmFyeShHTHNp
emVpIG4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnNoYWRlcnMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmluYXJ5Zm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpiaW5hcnksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCkKK3sKKyAgICAvLyBObyBiaW5hcnkgc2hhZGVy
IGZvcm1hdHMgYXJlIHN1cHBvcnRlZC4KKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK3ZvaWQg
Q29udGV4dDo6c2hhZGVyU291cmNlKEdMdWludCBzaGFkZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xjaGFyICpjb25zdCAqc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xpbnQgKmxlbmd0aCkKK3sKKyAgICBTaGFkZXIgKnNoYWRlck9iamVjdCA9IGdldFNoYWRlcihz
aGFkZXIpOworICAgIEFTU0VSVChzaGFkZXJPYmplY3QpOworICAgIHNoYWRlck9iamVjdC0+c2V0
U291cmNlKGNvdW50LCBzdHJpbmcsIGxlbmd0aCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6c3RlbmNp
bEZ1bmMoR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spCit7CisgICAgc3RlbmNp
bEZ1bmNTZXBhcmF0ZShHTF9GUk9OVF9BTkRfQkFDSywgZnVuYywgcmVmLCBtYXNrKTsKK30KKwor
dm9pZCBDb250ZXh0OjpzdGVuY2lsTWFzayhHTHVpbnQgbWFzaykKK3sKKyAgICBzdGVuY2lsTWFz
a1NlcGFyYXRlKEdMX0ZST05UX0FORF9CQUNLLCBtYXNrKTsKK30KKwordm9pZCBDb250ZXh0Ojpz
dGVuY2lsT3AoR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKQoreworICAg
IHN0ZW5jaWxPcFNlcGFyYXRlKEdMX0ZST05UX0FORF9CQUNLLCBmYWlsLCB6ZmFpbCwgenBhc3Mp
OworfQorCit2b2lkIENvbnRleHQ6OnVuaWZvcm0xZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4
KQoreworICAgIFByb2dyYW0gKnByb2dyYW0gPSBtR0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAg
cHJvZ3JhbS0+c2V0VW5pZm9ybTFmdihsb2NhdGlvbiwgMSwgJngpOworfQorCit2b2lkIENvbnRl
eHQ6OnVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxv
YXQgKnYpCit7CisgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IG1HTFN0YXRlLmdldFByb2dyYW0oKTsK
KyAgICBwcm9ncmFtLT5zZXRVbmlmb3JtMWZ2KGxvY2F0aW9uLCBjb3VudCwgdik7Cit9CisKK3Zv
aWQgQ29udGV4dDo6dW5pZm9ybTFpKEdMaW50IGxvY2F0aW9uLCBHTGludCB4KQoreworICAgIFBy
b2dyYW0gKnByb2dyYW0gPSBtR0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0
VW5pZm9ybTFpdihsb2NhdGlvbiwgMSwgJngpOworfQorCit2b2lkIENvbnRleHQ6OnVuaWZvcm0x
aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQoreworICAg
IFByb2dyYW0gKnByb2dyYW0gPSBtR0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+
c2V0VW5pZm9ybTFpdihsb2NhdGlvbiwgY291bnQsIHYpOworfQorCit2b2lkIENvbnRleHQ6OnVu
aWZvcm0yZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpCit7CisgICAgR0xm
bG9hdCB4eVsyXSAgICA9IHt4LCB5fTsKKyAgICBQcm9ncmFtICpwcm9ncmFtID0gbUdMU3RhdGUu
Z2V0UHJvZ3JhbSgpOworICAgIHByb2dyYW0tPnNldFVuaWZvcm0yZnYobG9jYXRpb24sIDEsIHh5
KTsKK30KKwordm9pZCBDb250ZXh0Ojp1bmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQoreworICAgIFByb2dyYW0gKnByb2dyYW0gPSBtR0xT
dGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTJmdihsb2NhdGlvbiwg
Y291bnQsIHYpOworfQorCit2b2lkIENvbnRleHQ6OnVuaWZvcm0yaShHTGludCBsb2NhdGlvbiwg
R0xpbnQgeCwgR0xpbnQgeSkKK3sKKyAgICBHTGludCB4eVsyXSAgICAgID0ge3gsIHl9OworICAg
IFByb2dyYW0gKnByb2dyYW0gPSBtR0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+
c2V0VW5pZm9ybTJpdihsb2NhdGlvbiwgMSwgeHkpOworfQorCit2b2lkIENvbnRleHQ6OnVuaWZv
cm0yaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQorewor
ICAgIFByb2dyYW0gKnByb2dyYW0gPSBtR0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3Jh
bS0+c2V0VW5pZm9ybTJpdihsb2NhdGlvbiwgY291bnQsIHYpOworfQorCit2b2lkIENvbnRleHQ6
OnVuaWZvcm0zZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQg
eikKK3sKKyAgICBHTGZsb2F0IHh5elszXSAgID0ge3gsIHksIHp9OworICAgIFByb2dyYW0gKnBy
b2dyYW0gPSBtR0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTNm
dihsb2NhdGlvbiwgMSwgeHl6KTsKK30KKwordm9pZCBDb250ZXh0Ojp1bmlmb3JtM2Z2KEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQoreworICAgIFByb2dy
YW0gKnByb2dyYW0gPSBtR0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5p
Zm9ybTNmdihsb2NhdGlvbiwgY291bnQsIHYpOworfQorCit2b2lkIENvbnRleHQ6OnVuaWZvcm0z
aShHTGludCBsb2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeikKK3sKKyAgICBHTGlu
dCB4eXpbM10gICAgID0ge3gsIHksIHp9OworICAgIFByb2dyYW0gKnByb2dyYW0gPSBtR0xTdGF0
ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTNpdihsb2NhdGlvbiwgMSwg
eHl6KTsKK30KKwordm9pZCBDb250ZXh0Ojp1bmlmb3JtM2l2KEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGludCAqdikKK3sKKyAgICBQcm9ncmFtICpwcm9ncmFtID0gbUdM
U3RhdGUuZ2V0UHJvZ3JhbSgpOworICAgIHByb2dyYW0tPnNldFVuaWZvcm0zaXYobG9jYXRpb24s
IGNvdW50LCB2KTsKK30KKwordm9pZCBDb250ZXh0Ojp1bmlmb3JtNGYoR0xpbnQgbG9jYXRpb24s
IEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdykKK3sKKyAgICBHTGZs
b2F0IHh5endbNF0gID0ge3gsIHksIHosIHd9OworICAgIFByb2dyYW0gKnByb2dyYW0gPSBtR0xT
dGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTRmdihsb2NhdGlvbiwg
MSwgeHl6dyk7Cit9CisKK3ZvaWQgQ29udGV4dDo6dW5pZm9ybTRmdihHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKK3sKKyAgICBQcm9ncmFtICpwcm9ncmFt
ID0gbUdMU3RhdGUuZ2V0UHJvZ3JhbSgpOworICAgIHByb2dyYW0tPnNldFVuaWZvcm00ZnYobG9j
YXRpb24sIGNvdW50LCB2KTsKK30KKwordm9pZCBDb250ZXh0Ojp1bmlmb3JtNGkoR0xpbnQgbG9j
YXRpb24sIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcpCit7CisgICAgR0xpbnQg
eHl6d1s0XSAgICA9IHt4LCB5LCB6LCB3fTsKKyAgICBQcm9ncmFtICpwcm9ncmFtID0gbUdMU3Rh
dGUuZ2V0UHJvZ3JhbSgpOworICAgIHByb2dyYW0tPnNldFVuaWZvcm00aXYobG9jYXRpb24sIDEs
IHh5encpOworfQorCit2b2lkIENvbnRleHQ6OnVuaWZvcm00aXYoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQoreworICAgIFByb2dyYW0gKnByb2dyYW0gPSBt
R0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybTRpdihsb2NhdGlv
biwgY291bnQsIHYpOworfQorCit2b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXgyZnYoR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAg
IFByb2dyYW0gKnByb2dyYW0gPSBtR0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+
c2V0VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwor
fQorCit2b2lkIENvbnRleHQ6OnVuaWZvcm1NYXRyaXgzZnYoR0xpbnQgbG9jYXRpb24sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIFByb2dyYW0gKnByb2dy
YW0gPSBtR0xTdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJp
eDNmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworfQorCit2b2lkIENvbnRl
eHQ6OnVuaWZvcm1NYXRyaXg0ZnYoR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAgIFByb2dyYW0gKnByb2dyYW0gPSBtR0xTdGF0ZS5n
ZXRQcm9ncmFtKCk7CisgICAgcHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwg
Y291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworfQorCit2b2lkIENvbnRleHQ6OnZhbGlkYXRlUHJv
Z3JhbShHTHVpbnQgcHJvZ3JhbSkKK3sKKyAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gZ2V0
UHJvZ3JhbShwcm9ncmFtKTsKKyAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CisgICAgcHJvZ3Jh
bU9iamVjdC0+dmFsaWRhdGUobUNhcHMpOworfQorCiB9ICAvLyBuYW1lc3BhY2UgZ2wKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0LmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dC5oCmluZGV4IDhlMzlh
YjU1MjFiLi5mMzk5MzA0NzE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0NvbnRleHQuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvQ29udGV4dC5oCkBAIC0xNCwxMyArMTQsMTQgQEAKICNpbmNsdWRlIDxzdHJpbmc+
CiAKICNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUgImNvbW1vbi9NZW1vcnlCdWZmZXIu
aCIKICNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgotI2luY2x1ZGUgImxpYkFOR0xFL1Jl
ZkNvdW50T2JqZWN0LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL0NvbnN0YW50cy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHRTdGF0ZS5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL0Vycm9yLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvSGFuZGxlQWxs
b2NhdG9yLmgiCisjaW5jbHVkZSAibGliQU5HTEUvUmVmQ291bnRPYmplY3QuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Xb3JrYXJv
dW5kcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKQEAgLTQ5LDcgKzUwLDYg
QEAgY2xhc3MgUmVuZGVyYnVmZmVyOwogY2xhc3MgRmVuY2VOVjsKIGNsYXNzIEZlbmNlU3luYzsK
IGNsYXNzIFF1ZXJ5OwotY2xhc3MgUmVzb3VyY2VNYW5hZ2VyOwogY2xhc3MgQnVmZmVyOwogc3Ry
dWN0IFZlcnRleEF0dHJpYnV0ZTsKIGNsYXNzIFZlcnRleEFycmF5OwpAQCAtNjIsMTIgKzYyLDE1
IEBAIGNsYXNzIENvbnRleHQgZmluYWwgOiBwdWJsaWMgVmFsaWRhdGlvbkNvbnRleHQKICAgICBD
b250ZXh0KHJ4OjpFR0xJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksCiAgICAgICAgICAgICBjb25z
dCBlZ2w6OkNvbmZpZyAqY29uZmlnLAogICAgICAgICAgICAgY29uc3QgQ29udGV4dCAqc2hhcmVD
b250ZXh0LAotICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpOwor
ICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXIgKnNoYXJlVGV4dHVyZXMsCisgICAgICAgICAgICBj
b25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicywKKyAgICAgICAgICAgIGNvbnN0IGVnbDo6
RGlzcGxheUV4dGVuc2lvbnMgJmRpc3BsYXlFeHRlbnNpb25zKTsKIAotICAgIHZpcnR1YWwgfkNv
bnRleHQoKTsKKyAgICB2b2lkIGRlc3Ryb3koZWdsOjpEaXNwbGF5ICpkaXNwbGF5KTsKKyAgICB+
Q29udGV4dCgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBtYWtlQ3VycmVudChlZ2w6OlN1cmZhY2Ug
KnN1cmZhY2UpOwotICAgIHZvaWQgcmVsZWFzZVN1cmZhY2UoKTsKKyAgICB2b2lkIG1ha2VDdXJy
ZW50KGVnbDo6RGlzcGxheSAqZGlzcGxheSwgZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKKyAgICB2
b2lkIHJlbGVhc2VTdXJmYWNlKGVnbDo6RGlzcGxheSAqZGlzcGxheSk7CiAKICAgICAvLyBUaGVz
ZSBjcmVhdGUgIGFuZCBkZXN0cm95IG1ldGhvZHMgYXJlIG1lcmVseSBwYXNzLXRocm91Z2hzIHRv
CiAgICAgLy8gUmVzb3VyY2VNYW5hZ2VyLCB3aGljaCBvd25zIHRoZXNlIG9iamVjdCB0eXBlcwpA
QCAtMTI1LDggKzEyOCwxMSBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIFZhbGlkYXRp
b25Db250ZXh0CiAgICAgdm9pZCBiaW5kVGV4dHVyZShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaGFu
ZGxlKTsKICAgICB2b2lkIGJpbmRSZWFkRnJhbWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVySGFu
ZGxlKTsKICAgICB2b2lkIGJpbmREcmF3RnJhbWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVySGFu
ZGxlKTsKLSAgICB2b2lkIGJpbmRSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlckhhbmRs
ZSk7CiAgICAgdm9pZCBiaW5kVmVydGV4QXJyYXkoR0x1aW50IHZlcnRleEFycmF5SGFuZGxlKTsK
KyAgICB2b2lkIGJpbmRWZXJ0ZXhCdWZmZXIoR0x1aW50IGJpbmRpbmdJbmRleCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1ZmZlckhhbmRsZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnRwdHIgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHN0cmlkZSk7CiAgICAgdm9pZCBiaW5kU2FtcGxlcihHTHVpbnQgdGV4dHVyZVVuaXQsIEdM
dWludCBzYW1wbGVySGFuZGxlKTsKICAgICB2b2lkIGJpbmRHZW5lcmljVW5pZm9ybUJ1ZmZlcihH
THVpbnQgYnVmZmVySGFuZGxlKTsKICAgICB2b2lkIGJpbmRJbmRleGVkVW5pZm9ybUJ1ZmZlcihH
THVpbnQgYnVmZmVySGFuZGxlLApAQCAtMTM4LDEyICsxNDQsMjMgQEAgY2xhc3MgQ29udGV4dCBm
aW5hbCA6IHB1YmxpYyBWYWxpZGF0aW9uQ29udGV4dAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKTsKKyAgICB2b2lkIGJp
bmRHZW5lcmljQXRvbWljQ291bnRlckJ1ZmZlcihHTHVpbnQgYnVmZmVySGFuZGxlKTsKKyAgICB2
b2lkIGJpbmRJbmRleGVkQXRvbWljQ291bnRlckJ1ZmZlcihHTHVpbnQgYnVmZmVySGFuZGxlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKTsK
KyAgICB2b2lkIGJpbmRHZW5lcmljU2hhZGVyU3RvcmFnZUJ1ZmZlcihHTHVpbnQgYnVmZmVySGFu
ZGxlKTsKKyAgICB2b2lkIGJpbmRJbmRleGVkU2hhZGVyU3RvcmFnZUJ1ZmZlcihHTHVpbnQgYnVm
ZmVySGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0
ciBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aXB0ciBzaXplKTsKICAgICB2b2lkIGJpbmRDb3B5UmVhZEJ1ZmZlcihHTHVpbnQgYnVmZmVySGFu
ZGxlKTsKICAgICB2b2lkIGJpbmRDb3B5V3JpdGVCdWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSk7
CiAgICAgdm9pZCBiaW5kUGl4ZWxQYWNrQnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUpOwogICAg
IHZvaWQgYmluZFBpeGVsVW5wYWNrQnVmZmVyKEdMdWludCBidWZmZXJIYW5kbGUpOwogICAgIHZv
aWQgdXNlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSk7CiAgICAgdm9pZCBiaW5kVHJhbnNmb3JtRmVl
ZGJhY2soR0x1aW50IHRyYW5zZm9ybUZlZWRiYWNrSGFuZGxlKTsKKyAgICB2b2lkIGJpbmREcmF3
SW5kaXJlY3RCdWZmZXIoR0x1aW50IGJ1ZmZlckhhbmRsZSk7CiAKICAgICBFcnJvciBiZWdpblF1
ZXJ5KEdMZW51bSB0YXJnZXQsIEdMdWludCBxdWVyeSk7CiAgICAgRXJyb3IgZW5kUXVlcnkoR0xl
bnVtIHRhcmdldCk7CkBAIC0xNTUsNiArMTcyLDIxIEBAIGNsYXNzIENvbnRleHQgZmluYWwgOiBw
dWJsaWMgVmFsaWRhdGlvbkNvbnRleHQKICAgICB2b2lkIGdldFF1ZXJ5T2JqZWN0dWk2NHYoR0x1
aW50IGlkLCBHTGVudW0gcG5hbWUsIEdMdWludDY0ICpwYXJhbXMpOwogCiAgICAgdm9pZCBzZXRW
ZXJ0ZXhBdHRyaWJEaXZpc29yKEdMdWludCBpbmRleCwgR0x1aW50IGRpdmlzb3IpOworICAgIHZv
aWQgc2V0VmVydGV4QmluZGluZ0Rpdmlzb3IoR0x1aW50IGJpbmRpbmdJbmRleCwgR0x1aW50IGRp
dmlzb3IpOworCisgICAgdm9pZCBnZXRCdWZmZXJQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBH
TGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0RnJhbWVidWZmZXJBdHRh
Y2htZW50UGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7CisgICAgdm9p
ZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs
IEdMaW50ICpwYXJhbXMpOworCisgICAgdm9pZCBnZXRUZXhQYXJhbWV0ZXJmdihHTGVudW0gdGFy
Z2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CisgICAgdm9pZCBnZXRUZXhQYXJh
bWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworICAg
IHZvaWQgdGV4UGFyYW1ldGVyZihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQg
cGFyYW0pOworICAgIHZvaWQgdGV4UGFyYW1ldGVyZnYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBu
YW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOworICAgIHZvaWQgdGV4UGFyYW1ldGVyaShHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKKyAgICB2b2lkIHRleFBhcmFt
ZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7
CiAKICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpKEdMdWludCBzYW1wbGVyLCBHTGVudW0gcG5h
bWUsIEdMaW50IHBhcmFtKTsKICAgICB2b2lkIHNhbXBsZXJQYXJhbWV0ZXJpdihHTHVpbnQgc2Ft
cGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW0pOwpAQCAtMTY2LDYgKzE5OCwx
NCBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIFZhbGlkYXRpb25Db250ZXh0CiAKICAg
ICB2b2lkIHByb2dyYW1QYXJhbWV0ZXJpKEdMdWludCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdM
aW50IHZhbHVlKTsKIAorICAgIEdMdWludCBnZXRQcm9ncmFtUmVzb3VyY2VJbmRleChHTHVpbnQg
cHJvZ3JhbSwgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsIGNvbnN0IEdMY2hhciAqbmFtZSk7Cisg
ICAgdm9pZCBnZXRQcm9ncmFtUmVzb3VyY2VOYW1lKEdMdWludCBwcm9ncmFtLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xjaGFyICpuYW1lKTsKKwogICAgIEJ1ZmZlciAqZ2V0QnVmZmVyKEdMdWludCBoYW5kbGUpIGNv
bnN0OwogICAgIEZlbmNlTlYgKmdldEZlbmNlTlYoR0x1aW50IGhhbmRsZSk7CiAgICAgRmVuY2VT
eW5jICpnZXRGZW5jZVN5bmMoR0xzeW5jIGhhbmRsZSkgY29uc3Q7CkBAIC0xOTMsMTYgKzIzMywx
NSBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIFZhbGlkYXRpb25Db250ZXh0CiAKICAg
ICBib29sIGlzU2FtcGxlcihHTHVpbnQgc2FtcGxlck5hbWUpIGNvbnN0OwogCi0gICAgYm9vbCBp
c1RleHR1cmVHZW5lcmF0ZWQoR0x1aW50IHRleHR1cmUpIGNvbnN0OwotICAgIGJvb2wgaXNCdWZm
ZXJHZW5lcmF0ZWQoR0x1aW50IGJ1ZmZlcikgY29uc3Q7Ci0gICAgYm9vbCBpc1JlbmRlcmJ1ZmZl
ckdlbmVyYXRlZChHTHVpbnQgcmVuZGVyYnVmZmVyKSBjb25zdDsKLSAgICBib29sIGlzRnJhbWVi
dWZmZXJHZW5lcmF0ZWQoR0x1aW50IGZyYW1lYnVmZmVyKSBjb25zdDsKICAgICBib29sIGlzVmVy
dGV4QXJyYXlHZW5lcmF0ZWQoR0x1aW50IHZlcnRleEFycmF5KTsKICAgICBib29sIGlzVHJhbnNm
b3JtRmVlZGJhY2tHZW5lcmF0ZWQoR0x1aW50IHZlcnRleEFycmF5KTsKIAogICAgIHZvaWQgZ2V0
Qm9vbGVhbnYoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnBhcmFtcyk7CisgICAgdm9pZCBnZXRC
b29sZWFudkltcGwoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnBhcmFtcyk7CiAgICAgdm9pZCBn
ZXRGbG9hdHYoR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0Rmxv
YXR2SW1wbChHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CiAgICAgdm9pZCBnZXRJbnRl
Z2VydihHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0SW50ZWdlcnZJ
bXBsKEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CiAgICAgdm9pZCBnZXRJbnRlZ2VyNjR2
KEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAqcGFyYW1zKTsKICAgICB2b2lkIGdldFBvaW50ZXJ2KEdM
ZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcykgY29uc3Q7CiAgICAgdm9pZCBnZXRCb29sZWFuaV92
KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xib29sZWFuICpkYXRhKTsKQEAgLTIxMSw3
ICsyNTAsOSBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIFZhbGlkYXRpb25Db250ZXh0
CiAKICAgICB2b2lkIGFjdGl2ZVRleHR1cmUoR0xlbnVtIHRleHR1cmUpOwogICAgIHZvaWQgYmxl
bmRDb2xvcihHTGNsYW1wZiByZWQsIEdMY2xhbXBmIGdyZWVuLCBHTGNsYW1wZiBibHVlLCBHTGNs
YW1wZiBhbHBoYSk7CisgICAgdm9pZCBibGVuZEVxdWF0aW9uKEdMZW51bSBtb2RlKTsKICAgICB2
b2lkIGJsZW5kRXF1YXRpb25TZXBhcmF0ZShHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBo
YSk7CisgICAgdm9pZCBibGVuZEZ1bmMoR0xlbnVtIHNmYWN0b3IsIEdMZW51bSBkZmFjdG9yKTsK
ICAgICB2b2lkIGJsZW5kRnVuY1NlcGFyYXRlKEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0Is
IEdMZW51bSBzcmNBbHBoYSwgR0xlbnVtIGRzdEFscGhhKTsKICAgICB2b2lkIGNsZWFyQ29sb3Io
R0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwgR0xjbGFtcGYgYWxw
aGEpOwogICAgIHZvaWQgY2xlYXJEZXB0aGYoR0xjbGFtcGYgZGVwdGgpOwpAQCAtMjQzLDIzICsy
ODQsMzUgQEAgY2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBWYWxpZGF0aW9uQ29udGV4dAog
ICAgIHZvaWQgdmVydGV4QXR0cmliM2Z2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdmFs
dWVzKTsKICAgICB2b2lkIHZlcnRleEF0dHJpYjRmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBH
TGZsb2F0IHksIEdMZmxvYXQgeiwgR0xmbG9hdCB3KTsKICAgICB2b2lkIHZlcnRleEF0dHJpYjRm
dihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcyk7CisgICAgdm9pZCB2ZXJ0ZXhB
dHRyaWJGb3JtYXQoR0x1aW50IGF0dHJpYkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIG5vcm1hbGl6ZWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJlbGF0aXZlT2Zmc2V0KTsKKyAgICB2b2lk
IHZlcnRleEF0dHJpYklGb3JtYXQoR0x1aW50IGF0dHJpYkluZGV4LCBHTGludCBzaXplLCBHTGVu
dW0gdHlwZSwgR0x1aW50IHJlbGF0aXZlT2Zmc2V0KTsKKyAgICB2b2lkIHZlcnRleEF0dHJpYkJp
bmRpbmcoR0x1aW50IGF0dHJpYkluZGV4LCBHTHVpbnQgYmluZGluZ0luZGV4KTsKICAgICB2b2lk
IHZlcnRleEF0dHJpYlBvaW50ZXIoR0x1aW50IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIG5vcm1hbGl6ZWQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnB0cik7Ci0gICAgdm9pZCB2aWV3cG9y
dChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Ci0KICAg
ICB2b2lkIHZlcnRleEF0dHJpYklQb2ludGVyKEdMdWludCBpbmRleCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3Ry
aWRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwb2ludGVy
KTsKKyAgICB2b2lkIHZpZXdwb3J0KEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdM
c2l6ZWkgaGVpZ2h0KTsKKwogICAgIHZvaWQgdmVydGV4QXR0cmliSTRpKEdMdWludCBpbmRleCwg
R0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeiwgR0xpbnQgdyk7CiAgICAgdm9pZCB2ZXJ0ZXhBdHRy
aWJJNHVpKEdMdWludCBpbmRleCwgR0x1aW50IHgsIEdMdWludCB5LCBHTHVpbnQgeiwgR0x1aW50
IHcpOwogICAgIHZvaWQgdmVydGV4QXR0cmliSTRpdihHTHVpbnQgaW5kZXgsIGNvbnN0IEdMaW50
ICp2KTsKICAgICB2b2lkIHZlcnRleEF0dHJpYkk0dWl2KEdMdWludCBpbmRleCwgY29uc3QgR0x1
aW50ICp2KTsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYml2KEdMdWludCBpbmRleCwgR0xlbnVt
IHBuYW1lLCBHTGludCAqcGFyYW1zKTsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYmZ2KEdMdWlu
dCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0VmVy
dGV4QXR0cmliSWl2KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsK
KyAgICB2b2lkIGdldFZlcnRleEF0dHJpYkl1aXYoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUs
IEdMdWludCAqcGFyYW1zKTsKKyAgICB2b2lkIGdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KEdMdWlu
dCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTHZvaWQgKipwb2ludGVyKTsKIAogICAgIHZvaWQgZGVi
dWdNZXNzYWdlQ29udHJvbChHTGVudW0gc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSwKQEAgLTI5MSwyNyArMzQ0LDI5IEBAIGNsYXNzIENvbnRleHQgZmlu
YWwgOiBwdWJsaWMgVmFsaWRhdGlvbkNvbnRleHQKICAgICB2b2lkIGNsZWFyQnVmZmVyaXYoR0xl
bnVtIGJ1ZmZlciwgR0xpbnQgZHJhd2J1ZmZlciwgY29uc3QgR0xpbnQgKnZhbHVlcyk7CiAgICAg
dm9pZCBjbGVhckJ1ZmZlcmZpKEdMZW51bSBidWZmZXIsIEdMaW50IGRyYXdidWZmZXIsIEdMZmxv
YXQgZGVwdGgsIEdMaW50IHN0ZW5jaWwpOwogCi0gICAgRXJyb3IgZHJhd0FycmF5cyhHTGVudW0g
bW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpOwotICAgIEVycm9yIGRyYXdBcnJheXNJ
bnN0YW5jZWQoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVp
IGluc3RhbmNlQ291bnQpOwotCi0gICAgRXJyb3IgZHJhd0VsZW1lbnRzKEdMZW51bSBtb2RlLAot
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpp
bmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbmRleFJhbmdlICZpbmRleFJh
bmdlKTsKLSAgICBFcnJvciBkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgaW5zdGFuY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBJbmRleFJhbmdlICZpbmRleFJhbmdlKTsKLSAgICBFcnJvciBkcmF3UmFuZ2VFbGVt
ZW50cyhHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3Rh
cnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGVuZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9p
ZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbmRleFJhbmdl
ICZpbmRleFJhbmdlKTsKKyAgICB2b2lkIGRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMaW50IGZp
cnN0LCBHTHNpemVpIGNvdW50KTsKKyAgICB2b2lkIGRyYXdBcnJheXNJbnN0YW5jZWQoR0xlbnVt
IG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlQ291bnQp
OworCisgICAgdm9pZCBkcmF3RWxlbWVudHMoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgSW5kZXhSYW5nZSAmaW5kZXhSYW5nZSk7CisgICAgdm9pZCBkcmF3
RWxlbWVudHNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmlu
ZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW5kZXhSYW5nZSAmaW5kZXhS
YW5nZSk7CisgICAgdm9pZCBkcmF3UmFuZ2VFbGVtZW50cyhHTGVudW0gbW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBJbmRleFJhbmdlICZpbmRleFJhbmdlKTsKKyAgICB2b2lkIGRyYXdBcnJh
eXNJbmRpcmVjdChHTGVudW0gbW9kZSwgY29uc3QgR0x2b2lkICppbmRpcmVjdCk7CisgICAgdm9p
ZCBkcmF3RWxlbWVudHNJbmRpcmVjdChHTGVudW0gbW9kZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdM
dm9pZCAqaW5kaXJlY3QpOwogCiAgICAgdm9pZCBibGl0RnJhbWVidWZmZXIoR0xpbnQgc3JjWDAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3JjWTAsCkBAIC00NjcsMTQgKzUyMiwy
MCBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIFZhbGlkYXRpb25Db250ZXh0CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGltYWdlU2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqZGF0YSk7CiAgICAgdm9pZCBj
b3B5VGV4dHVyZUNIUk9NSVVNKEdMdWludCBzb3VyY2VJZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgc291cmNlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBkZXN0VGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
ZGVzdElkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkZXN0TGV2ZWwsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsRm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFR5cGUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tGbGlwWSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xib29sZWFuIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB1bnBhY2tVbm11bHRpcGx5QWxwaGEpOwogICAgIHZv
aWQgY29weVN1YlRleHR1cmVDSFJPTUlVTShHTHVpbnQgc291cmNlSWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHNvdXJjZUxldmVsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZGVzdFRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGRlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgZGVzdExldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4
b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LApAQCAtNDg4LDEwICs1NDks
OCBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIFZhbGlkYXRpb25Db250ZXh0CiAKICAg
ICB2b2lkIGdlbmVyYXRlTWlwbWFwKEdMZW51bSB0YXJnZXQpOwogCi0gICAgR0xib29sZWFuIGVu
YWJsZUV4dGVuc2lvbihjb25zdCBjaGFyICpuYW1lKTsKLQotICAgIEVycm9yIGZsdXNoKCk7Ci0g
ICAgRXJyb3IgZmluaXNoKCk7CisgICAgdm9pZCBmbHVzaCgpOworICAgIHZvaWQgZmluaXNoKCk7
CiAKICAgICB2b2lkIGdldEJ1ZmZlclBvaW50ZXJ2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgdm9pZCAqKnBhcmFtcyk7CiAgICAgR0x2b2lkICptYXBCdWZmZXIoR0xlbnVtIHRhcmdldCwg
R0xlbnVtIGFjY2Vzcyk7CkBAIC01MDgsNiArNTY3LDE0IEBAIGNsYXNzIENvbnRleHQgZmluYWwg
OiBwdWJsaWMgVmFsaWRhdGlvbkNvbnRleHQKICAgICB2b2lkIHBvcEdyb3VwTWFya2VyKCk7CiAK
ICAgICB2b2lkIGJpbmRVbmlmb3JtTG9jYXRpb24oR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0
aW9uLCBjb25zdCBHTGNoYXIgKm5hbWUpOworICAgIHZvaWQgcmVuZGVyYnVmZmVyU3RvcmFnZShH
TGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0KTsKKyAgICB2b2lkIHJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGhlaWdodCk7CisKKyAgICB2b2lkIGdldFN5bmNpdihHTHN5bmMgc3luYywgR0xl
bnVtIHBuYW1lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xpbnQgKnZhbHVl
cyk7CiAKICAgICAvLyBDSFJPTUlVTV9mcmFtZWJ1ZmZlcl9taXhlZF9zYW1wbGVzCiAgICAgdm9p
ZCBzZXRDb3ZlcmFnZU1vZHVsYXRpb24oR0xlbnVtIGNvbXBvbmVudHMpOwpAQCAtNTc5LDYgKzY0
NiwxMTIgQEAgY2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBWYWxpZGF0aW9uQ29udGV4dAog
ICAgIHZvaWQgYnVmZmVyRGF0YShHTGVudW0gdGFyZ2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0
IEdMdm9pZCAqZGF0YSwgR0xlbnVtIHVzYWdlKTsKICAgICB2b2lkIGJ1ZmZlclN1YkRhdGEoR0xl
bnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IEdMdm9p
ZCAqZGF0YSk7CiAgICAgdm9pZCBhdHRhY2hTaGFkZXIoR0x1aW50IHByb2dyYW0sIEdMdWludCBz
aGFkZXIpOworICAgIHZvaWQgYmluZEF0dHJpYkxvY2F0aW9uKEdMdWludCBwcm9ncmFtLCBHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMY2hhciAqbmFtZSk7CisgICAgdm9pZCBiaW5kQnVmZmVyKEdMZW51
bSB0YXJnZXQsIEdMdWludCBidWZmZXIpOworICAgIHZvaWQgYmluZEJ1ZmZlckJhc2UoR0xlbnVt
IHRhcmdldCwgR0x1aW50IGluZGV4LCBHTHVpbnQgYnVmZmVyKTsKKyAgICB2b2lkIGJpbmRCdWZm
ZXJSYW5nZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBp
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYnVmZmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpcHRyIHNpemUpOworICAgIHZvaWQgYmluZEZyYW1lYnVmZmVyKEdMZW51bSB0YXJn
ZXQsIEdMdWludCBmcmFtZWJ1ZmZlcik7CisgICAgdm9pZCBiaW5kUmVuZGVyYnVmZmVyKEdMZW51
bSB0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpOworCisgICAgdm9pZCB0ZXhTdG9yYWdlMkRN
dWx0aXNhbXBsZShHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVp
Z2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGZpeGVkc2Ft
cGxlbG9jYXRpb25zKTsKKworICAgIHZvaWQgZ2V0TXVsdGlzYW1wbGVmdihHTGVudW0gcG5hbWUs
IEdMdWludCBpbmRleCwgR0xmbG9hdCAqdmFsKTsKKworICAgIHZvaWQgY29weUJ1ZmZlclN1YkRh
dGEoR0xlbnVtIHJlYWRUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
d3JpdGVUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciByZWFkT2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgd3JpdGVPZmZzZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUpOworCisgICAgR0xlbnVt
IGNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xlbnVtIHRhcmdldCk7CisgICAgdm9pZCBjb21waWxl
U2hhZGVyKEdMdWludCBzaGFkZXIpOworICAgIHZvaWQgZGVsZXRlQnVmZmVycyhHTHNpemVpIG4s
IGNvbnN0IEdMdWludCAqYnVmZmVycyk7CisgICAgdm9pZCBkZWxldGVGcmFtZWJ1ZmZlcnMoR0xz
aXplaSBuLCBjb25zdCBHTHVpbnQgKmZyYW1lYnVmZmVycyk7CisgICAgdm9pZCBkZWxldGVSZW5k
ZXJidWZmZXJzKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpyZW5kZXJidWZmZXJzKTsKKyAgICB2
b2lkIGRlbGV0ZVRleHR1cmVzKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICp0ZXh0dXJlcyk7Cisg
ICAgdm9pZCBkZXRhY2hTaGFkZXIoR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIpOworICAg
IHZvaWQgZ2VuQnVmZmVycyhHTHNpemVpIG4sIEdMdWludCAqYnVmZmVycyk7CisgICAgdm9pZCBn
ZW5GcmFtZWJ1ZmZlcnMoR0xzaXplaSBuLCBHTHVpbnQgKmZyYW1lYnVmZmVycyk7CisgICAgdm9p
ZCBnZW5SZW5kZXJidWZmZXJzKEdMc2l6ZWkgbiwgR0x1aW50ICpyZW5kZXJidWZmZXJzKTsKKyAg
ICB2b2lkIGdlblRleHR1cmVzKEdMc2l6ZWkgbiwgR0x1aW50ICp0ZXh0dXJlcyk7CisgICAgdm9p
ZCBnZXRBY3RpdmVBdHRyaWIoR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmc2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgKnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbmFtZSk7CisgICAg
dm9pZCBnZXRBY3RpdmVVbmlmb3JtKEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
YnVmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm5h
bWUpOworICAgIHZvaWQgZ2V0QXR0YWNoZWRTaGFkZXJzKEdMdWludCBwcm9ncmFtLCBHTHNpemVp
IG1heGNvdW50LCBHTHNpemVpICpjb3VudCwgR0x1aW50ICpzaGFkZXJzKTsKKyAgICBHTGludCBn
ZXRBdHRyaWJMb2NhdGlvbihHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyICpuYW1lKTsKKyAg
ICB2b2lkIGdldFByb2dyYW1pdihHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCAq
cGFyYW1zKTsKKyAgICB2b2lkIGdldEluZm9Mb2coR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVm
c2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmluZm9sb2cpOworICAgIHZvaWQgZ2V0U2hh
ZGVyaXYoR0x1aW50IHNoYWRlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKKyAgICB2
b2lkIGdldFNoYWRlckluZm9Mb2coR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNp
emVpICpsZW5ndGgsIEdMY2hhciAqaW5mb2xvZyk7CisgICAgdm9pZCBnZXRTaGFkZXJQcmVjaXNp
b25Gb3JtYXQoR0xlbnVtIHNoYWRlcnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHByZWNpc2lvbnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKnJhbmdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50ICpwcmVjaXNpb24pOworICAgIHZvaWQgZ2V0U2hhZGVyU291cmNlKEdMdWludCBzaGFkZXIs
IEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKnNvdXJjZSk7CisgICAg
dm9pZCBnZXRVbmlmb3JtZnYoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0
ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0VW5pZm9ybWl2KEdMdWludCBwcm9ncmFtLCBHTGludCBs
b2NhdGlvbiwgR0xpbnQgKnBhcmFtcyk7CisgICAgR0xpbnQgZ2V0VW5pZm9ybUxvY2F0aW9uKEdM
dWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpOworICAgIEdMYm9vbGVhbiBpc0J1ZmZl
cihHTHVpbnQgYnVmZmVyKTsKKyAgICBHTGJvb2xlYW4gaXNFbmFibGVkKEdMZW51bSBjYXApOwor
ICAgIEdMYm9vbGVhbiBpc0ZyYW1lYnVmZmVyKEdMdWludCBmcmFtZWJ1ZmZlcik7CisgICAgR0xi
b29sZWFuIGlzUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSk7CisgICAgR0xib29sZWFuIGlzUmVuZGVy
YnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIpOworICAgIEdMYm9vbGVhbiBpc1NoYWRlcihHTHVp
bnQgc2hhZGVyKTsKKyAgICBHTGJvb2xlYW4gaXNUZXh0dXJlKEdMdWludCB0ZXh0dXJlKTsKKyAg
ICB2b2lkIGxpbmtQcm9ncmFtKEdMdWludCBwcm9ncmFtKTsKKyAgICB2b2lkIHJlbGVhc2VTaGFk
ZXJDb21waWxlcigpOworICAgIHZvaWQgc2hhZGVyQmluYXJ5KEdMc2l6ZWkgbiwKKyAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBHTHVpbnQgKnNoYWRlcnMsCisgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGJpbmFyeWZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZv
aWQgKmJpbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCk7CisgICAg
dm9pZCBzaGFkZXJTb3VyY2UoR0x1aW50IHNoYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqY29uc3Qg
KnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqbGVuZ3RoKTsKKyAg
ICB2b2lkIHN0ZW5jaWxGdW5jKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKTsK
KyAgICB2b2lkIHN0ZW5jaWxNYXNrKEdMdWludCBtYXNrKTsKKyAgICB2b2lkIHN0ZW5jaWxPcChH
TGVudW0gZmFpbCwgR0xlbnVtIHpmYWlsLCBHTGVudW0genBhc3MpOworICAgIHZvaWQgdW5pZm9y
bTFmKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgpOworICAgIHZvaWQgdW5pZm9ybTFmdihHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7CisgICAgdm9pZCB1
bmlmb3JtMWkoR0xpbnQgbG9jYXRpb24sIEdMaW50IHgpOworICAgIHZvaWQgdW5pZm9ybTFpdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOworICAgIHZvaWQg
dW5pZm9ybTJmKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSk7CisgICAgdm9p
ZCB1bmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0
ICp2KTsKKyAgICB2b2lkIHVuaWZvcm0yaShHTGludCBsb2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQg
eSk7CisgICAgdm9pZCB1bmlmb3JtMml2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGludCAqdik7CisgICAgdm9pZCB1bmlmb3JtM2YoR0xpbnQgbG9jYXRpb24sIEdMZmxv
YXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHopOworICAgIHZvaWQgdW5pZm9ybTNmdihHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7CisgICAgdm9pZCB1bmlm
b3JtM2koR0xpbnQgbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHopOworICAgIHZv
aWQgdW5pZm9ybTNpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQg
KnYpOworICAgIHZvaWQgdW5pZm9ybTRmKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxv
YXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpOworICAgIHZvaWQgdW5pZm9ybTRmdihHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdik7CisgICAgdm9pZCB1bmlm
b3JtNGkoR0xpbnQgbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHksIEdMaW50IHosIEdMaW50IHcp
OworICAgIHZvaWQgdW5pZm9ybTRpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xpbnQgKnYpOworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDJmdihHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUp
OworICAgIHZvaWQgdW5pZm9ybU1hdHJpeDNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworICAgIHZvaWQg
dW5pZm9ybU1hdHJpeDRmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFu
IHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOworICAgIHZvaWQgdmFsaWRhdGVQcm9n
cmFtKEdMdWludCBwcm9ncmFtKTsKIAogICAgIHZvaWQgaGFuZGxlRXJyb3IoY29uc3QgRXJyb3Ig
JmVycm9yKSBvdmVycmlkZTsKIApAQCAtNTkyLDE1ICs3NjUsMjQgQEAgY2xhc3MgQ29udGV4dCBm
aW5hbCA6IHB1YmxpYyBWYWxpZGF0aW9uQ29udGV4dAogICAgIEVHTGVudW0gZ2V0Q2xpZW50VHlw
ZSgpIGNvbnN0OwogICAgIEVHTGVudW0gZ2V0UmVuZGVyQnVmZmVyKCkgY29uc3Q7CiAKLSAgICBj
b25zdCBjaGFyICpnZXRSZW5kZXJlclN0cmluZygpIGNvbnN0OworICAgIGNvbnN0IEdMdWJ5dGUg
KmdldFN0cmluZyhHTGVudW0gbmFtZSkgY29uc3Q7CisgICAgY29uc3QgR0x1Ynl0ZSAqZ2V0U3Ry
aW5naShHTGVudW0gbmFtZSwgR0x1aW50IGluZGV4KSBjb25zdDsKIAotICAgIGNvbnN0IGNoYXIg
KmdldEV4dGVuc2lvblN0cmluZygpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIgKmdldEV4dGVuc2lv
blN0cmluZyhzaXplX3QgaWR4KSBjb25zdDsKICAgICBzaXplX3QgZ2V0RXh0ZW5zaW9uU3RyaW5n
Q291bnQoKSBjb25zdDsKIAorICAgIHZvaWQgcmVxdWVzdEV4dGVuc2lvbihjb25zdCBjaGFyICpu
YW1lKTsKKyAgICBzaXplX3QgZ2V0UmVxdWVzdGFibGVFeHRlbnNpb25TdHJpbmdDb3VudCgpIGNv
bnN0OworCiAgICAgcng6OkNvbnRleHRJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1JbXBsZW1lbnRhdGlvbi5nZXQoKTsgfQogICAgIGNvbnN0IFdvcmthcm91bmRzICZn
ZXRXb3JrYXJvdW5kcygpIGNvbnN0OwogCisgICAgdm9pZCBnZXRGcmFtZWJ1ZmZlclBhcmFtZXRl
cml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7CisgICAgdm9p
ZCBzZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcmkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBH
TGludCBwYXJhbSk7CisKKyAgICBFcnJvciBnZXRTY3JhdGNoQnVmZmVyKHNpemVfdCByZXF1ZXN0
ZWRTaXplLCBhbmdsZTo6TWVtb3J5QnVmZmVyICoqc2NyYXRjaEJ1ZmZlck91dCkgY29uc3Q7CisK
KyAgICB2b2lkIGRpc3BhdGNoQ29tcHV0ZShHTHVpbnQgbnVtR3JvdXBzWCwgR0x1aW50IG51bUdy
b3Vwc1ksIEdMdWludCBudW1Hcm91cHNaKTsKKwogICBwcml2YXRlOgogICAgIHZvaWQgc3luY1Jl
bmRlcmVyU3RhdGUoKTsKICAgICB2b2lkIHN5bmNSZW5kZXJlclN0YXRlKGNvbnN0IFN0YXRlOjpE
aXJ0eUJpdHMgJmJpdE1hc2ssIGNvbnN0IFN0YXRlOjpEaXJ0eU9iamVjdHMgJm9iamVjdE1hc2sp
OwpAQCAtNjEwLDcgKzc5Miw2IEBAIGNsYXNzIENvbnRleHQgZmluYWwgOiBwdWJsaWMgVmFsaWRh
dGlvbkNvbnRleHQKICAgICB2b2lkIHN5bmNTdGF0ZUZvckJsaXQoKTsKICAgICBWZXJ0ZXhBcnJh
eSAqY2hlY2tWZXJ0ZXhBcnJheUFsbG9jYXRpb24oR0x1aW50IHZlcnRleEFycmF5SGFuZGxlKTsK
ICAgICBUcmFuc2Zvcm1GZWVkYmFjayAqY2hlY2tUcmFuc2Zvcm1GZWVkYmFja0FsbG9jYXRpb24o
R0x1aW50IHRyYW5zZm9ybUZlZWRiYWNrKTsKLSAgICBGcmFtZWJ1ZmZlciAqY2hlY2tGcmFtZWJ1
ZmZlckFsbG9jYXRpb24oR0x1aW50IGZyYW1lYnVmZmVySGFuZGxlKTsKIAogICAgIHZvaWQgZGV0
YWNoQnVmZmVyKEdMdWludCBidWZmZXIpOwogICAgIHZvaWQgZGV0YWNoVGV4dHVyZShHTHVpbnQg
dGV4dHVyZSk7CkBAIC02MjEsOSArODAyLDEwIEBAIGNsYXNzIENvbnRleHQgZmluYWwgOiBwdWJs
aWMgVmFsaWRhdGlvbkNvbnRleHQKICAgICB2b2lkIGRldGFjaFNhbXBsZXIoR0x1aW50IHNhbXBs
ZXIpOwogCiAgICAgdm9pZCBpbml0UmVuZGVyZXJTdHJpbmcoKTsKKyAgICB2b2lkIGluaXRWZXJz
aW9uU3RyaW5ncygpOwogICAgIHZvaWQgaW5pdEV4dGVuc2lvblN0cmluZ3MoKTsKIAotICAgIHZv
aWQgaW5pdENhcHMoYm9vbCB3ZWJHTENvbnRleHQpOworICAgIHZvaWQgaW5pdENhcHMoY29uc3Qg
ZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAmZGlzcGxheUV4dGVuc2lvbnMpOwogICAgIHZvaWQgdXBk
YXRlQ2FwcygpOwogICAgIHZvaWQgaW5pdFdvcmthcm91bmRzKCk7CiAKQEAgLTY0MywxNyArODI1
LDExIEBAIGNsYXNzIENvbnRleHQgZmluYWwgOiBwdWJsaWMgVmFsaWRhdGlvbkNvbnRleHQKIAog
ICAgIFN0YXRlIG1HTFN0YXRlOwogCi0gICAgaW50IG1DbGllbnRNYWpvclZlcnNpb247Ci0gICAg
aW50IG1DbGllbnRNaW5vclZlcnNpb247Ci0KICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqbUNvbmZp
ZzsKICAgICBFR0xlbnVtIG1DbGllbnRUeXBlOwogCiAgICAgVGV4dHVyZU1hcCBtWmVyb1RleHR1
cmVzOwogCi0gICAgUmVzb3VyY2VNYXA8RnJhbWVidWZmZXI+IG1GcmFtZWJ1ZmZlck1hcDsKLSAg
ICBIYW5kbGVBbGxvY2F0b3IgbUZyYW1lYnVmZmVySGFuZGxlQWxsb2NhdG9yOwotCiAgICAgUmVz
b3VyY2VNYXA8RmVuY2VOVj4gbUZlbmNlTlZNYXA7CiAgICAgSGFuZGxlQWxsb2NhdG9yIG1GZW5j
ZU5WSGFuZGxlQWxsb2NhdG9yOwogCkBAIC02NjYsOSArODQyLDEzIEBAIGNsYXNzIENvbnRleHQg
ZmluYWwgOiBwdWJsaWMgVmFsaWRhdGlvbkNvbnRleHQKICAgICBSZXNvdXJjZU1hcDxUcmFuc2Zv
cm1GZWVkYmFjaz4gbVRyYW5zZm9ybUZlZWRiYWNrTWFwOwogICAgIEhhbmRsZUFsbG9jYXRvciBt
VHJhbnNmb3JtRmVlZGJhY2tBbGxvY2F0b3I7CiAKKyAgICBjb25zdCBjaGFyICptVmVyc2lvblN0
cmluZzsKKyAgICBjb25zdCBjaGFyICptU2hhZGluZ0xhbmd1YWdlU3RyaW5nOwogICAgIGNvbnN0
IGNoYXIgKm1SZW5kZXJlclN0cmluZzsKICAgICBjb25zdCBjaGFyICptRXh0ZW5zaW9uU3RyaW5n
OwogICAgIHN0ZDo6dmVjdG9yPGNvbnN0IGNoYXIgKj4gbUV4dGVuc2lvblN0cmluZ3M7CisgICAg
Y29uc3QgY2hhciAqbVJlcXVlc3RhYmxlRXh0ZW5zaW9uU3RyaW5nOworICAgIHN0ZDo6dmVjdG9y
PGNvbnN0IGNoYXIgKj4gbVJlcXVlc3RhYmxlRXh0ZW5zaW9uU3RyaW5nczsKIAogICAgIC8vIFJl
Y29yZGVkIGVycm9ycwogICAgIHR5cGVkZWYgc3RkOjpzZXQ8R0xlbnVtPiBFcnJvclNldDsKQEAg
LTY4Miw4ICs4NjIsOCBAQCBjbGFzcyBDb250ZXh0IGZpbmFsIDogcHVibGljIFZhbGlkYXRpb25D
b250ZXh0CiAgICAgR0xlbnVtIG1SZXNldFN0cmF0ZWd5OwogICAgIGJvb2wgbVJvYnVzdEFjY2Vz
czsKICAgICBlZ2w6OlN1cmZhY2UgKm1DdXJyZW50U3VyZmFjZTsKLQotICAgIFJlc291cmNlTWFu
YWdlciAqbVJlc291cmNlTWFuYWdlcjsKKyAgICBGcmFtZWJ1ZmZlciAqbVN1cmZhY2VsZXNzRnJh
bWVidWZmZXI7CisgICAgYm9vbCBtV2ViR0xDb250ZXh0OwogCiAgICAgU3RhdGU6OkRpcnR5Qml0
cyBtVGV4SW1hZ2VEaXJ0eUJpdHM7CiAgICAgU3RhdGU6OkRpcnR5T2JqZWN0cyBtVGV4SW1hZ2VE
aXJ0eU9iamVjdHM7CkBAIC02OTUsNiArODc1LDkgQEAgY2xhc3MgQ29udGV4dCBmaW5hbCA6IHB1
YmxpYyBWYWxpZGF0aW9uQ29udGV4dAogICAgIFN0YXRlOjpEaXJ0eU9iamVjdHMgbUJsaXREaXJ0
eU9iamVjdHM7CiAKICAgICBXb3JrYXJvdW5kcyBtV29ya2Fyb3VuZHM7CisKKyAgICAvLyBOb3Qg
cmVhbGx5IGEgcHJvcGVydHkgb2YgY29udGV4dCBzdGF0ZS4gVGhlIHNpemUgYW5kIGNvbnRleHRz
IGNoYW5nZSBwZXItYXBpLWNhbGwuCisgICAgbXV0YWJsZSBhbmdsZTo6U2NyYXRjaEJ1ZmZlciBt
U2NyYXRjaEJ1ZmZlcjsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSBnbApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0NvbnRleHRTdGF0ZS5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvQ29udGV4dFN0YXRlLmNwcAppbmRleCBk
YWUzMTljMDhmMy4uNDUwZTBlZjcyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9Db250ZXh0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0U3RhdGUuY3BwCkBAIC0xNCwyOCArMTQsOTMgQEAK
IG5hbWVzcGFjZSBnbAogewogCi1Db250ZXh0U3RhdGU6OkNvbnRleHRTdGF0ZSh1aW50cHRyX3Qg
Y29udGV4dEluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgY2xpZW50TWFqb3JW
ZXJzaW9uSW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjbGllbnRNaW5vclZl
cnNpb25JbiwKK25hbWVzcGFjZQoreworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KK3VzaW5nIENv
bnRleHRTdGF0ZU1lbWJlciA9IFQgKihDb250ZXh0U3RhdGU6OiopOworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK1QgKkFsbG9jYXRlT3JHZXRTaGFyZWRSZXNvdXJjZU1hbmFnZXIoY29uc3QgQ29u
dGV4dFN0YXRlICpzaGFyZUNvbnRleHRTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ29udGV4dFN0YXRlTWVtYmVyPFQ+IG1lbWJlcikKK3sKKyAgICBpZiAoc2hh
cmVDb250ZXh0U3RhdGUpCisgICAgeworICAgICAgICBUICpyZXNvdXJjZU1hbmFnZXIgPSAoKnNo
YXJlQ29udGV4dFN0YXRlKS4qbWVtYmVyOworICAgICAgICByZXNvdXJjZU1hbmFnZXItPmFkZFJl
ZigpOworICAgICAgICByZXR1cm4gcmVzb3VyY2VNYW5hZ2VyOworICAgIH0KKyAgICBlbHNlCisg
ICAgeworICAgICAgICByZXR1cm4gbmV3IFQoKTsKKyAgICB9Cit9CisKK1RleHR1cmVNYW5hZ2Vy
ICpBbGxvY2F0ZU9yR2V0U2hhcmVkVGV4dHVyZU1hbmFnZXIoY29uc3QgQ29udGV4dFN0YXRlICpz
aGFyZUNvbnRleHRTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXIgKnNoYXJlVGV4dHVyZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRTdGF0ZU1lbWJlcjxU
ZXh0dXJlTWFuYWdlcj4gbWVtYmVyKQoreworICAgIGlmIChzaGFyZUNvbnRleHRTdGF0ZSkKKyAg
ICB7CisgICAgICAgIFRleHR1cmVNYW5hZ2VyICp0ZXh0dXJlTWFuYWdlciA9ICgqc2hhcmVDb250
ZXh0U3RhdGUpLiptZW1iZXI7CisgICAgICAgIEFTU0VSVChzaGFyZVRleHR1cmVzID09IG51bGxw
dHIgfHwgdGV4dHVyZU1hbmFnZXIgPT0gc2hhcmVUZXh0dXJlcyk7CisgICAgICAgIHRleHR1cmVN
YW5hZ2VyLT5hZGRSZWYoKTsKKyAgICAgICAgcmV0dXJuIHRleHR1cmVNYW5hZ2VyOworICAgIH0K
KyAgICBlbHNlIGlmIChzaGFyZVRleHR1cmVzKQorICAgIHsKKyAgICAgICAgVGV4dHVyZU1hbmFn
ZXIgKnRleHR1cmVNYW5hZ2VyID0gc2hhcmVUZXh0dXJlczsKKyAgICAgICAgdGV4dHVyZU1hbmFn
ZXItPmFkZFJlZigpOworICAgICAgICByZXR1cm4gdGV4dHVyZU1hbmFnZXI7CisgICAgfQorICAg
IGVsc2UKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgVGV4dHVyZU1hbmFnZXIoKTsKKyAgICB9
Cit9CisKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKworQ29udGV4dFN0YXRlOjpDb250ZXh0
U3RhdGUoQ29udGV4dElEIGNvbnRleHRJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IENvbnRleHRTdGF0ZSAqc2hhcmVDb250ZXh0U3RhdGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXh0dXJlTWFuYWdlciAqc2hhcmVUZXh0dXJlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnNpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTdGF0ZSAqc3RhdGVJbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IENhcHMgJmNhcHNJbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1
cmVDYXBzTWFwICZ0ZXh0dXJlQ2Fwc0luLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9uc0luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUmVzb3VyY2VNYW5hZ2VyICpyZXNvdXJjZU1hbmFnZXJJbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IExpbWl0YXRpb25zICZsaW1pdGF0aW9uc0luKQotICAgIDogbUdM
VmVyc2lvbihjbGllbnRNYWpvclZlcnNpb25JbiwgY2xpZW50TWlub3JWZXJzaW9uSW4pLAorICAg
IDogbUNsaWVudFZlcnNpb24oY2xpZW50VmVyc2lvbiksCiAgICAgICBtQ29udGV4dChjb250ZXh0
SW4pLAogICAgICAgbVN0YXRlKHN0YXRlSW4pLAogICAgICAgbUNhcHMoY2Fwc0luKSwKICAgICAg
IG1UZXh0dXJlQ2Fwcyh0ZXh0dXJlQ2Fwc0luKSwKICAgICAgIG1FeHRlbnNpb25zKGV4dGVuc2lv
bnNJbiksCi0gICAgICBtUmVzb3VyY2VNYW5hZ2VyKHJlc291cmNlTWFuYWdlckluKSwKLSAgICAg
IG1MaW1pdGF0aW9ucyhsaW1pdGF0aW9uc0luKQorICAgICAgbUxpbWl0YXRpb25zKGxpbWl0YXRp
b25zSW4pLAorICAgICAgbUJ1ZmZlcnMoQWxsb2NhdGVPckdldFNoYXJlZFJlc291cmNlTWFuYWdl
cihzaGFyZUNvbnRleHRTdGF0ZSwgJkNvbnRleHRTdGF0ZTo6bUJ1ZmZlcnMpKSwKKyAgICAgIG1T
aGFkZXJQcm9ncmFtcygKKyAgICAgICAgICBBbGxvY2F0ZU9yR2V0U2hhcmVkUmVzb3VyY2VNYW5h
Z2VyKHNoYXJlQ29udGV4dFN0YXRlLCAmQ29udGV4dFN0YXRlOjptU2hhZGVyUHJvZ3JhbXMpKSwK
KyAgICAgIG1UZXh0dXJlcyhBbGxvY2F0ZU9yR2V0U2hhcmVkVGV4dHVyZU1hbmFnZXIoc2hhcmVD
b250ZXh0U3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNoYXJlVGV4dHVyZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZDb250ZXh0U3RhdGU6Om1UZXh0dXJlcykpLAorICAgICAgbVJlbmRl
cmJ1ZmZlcnMoCisgICAgICAgICAgQWxsb2NhdGVPckdldFNoYXJlZFJlc291cmNlTWFuYWdlcihz
aGFyZUNvbnRleHRTdGF0ZSwgJkNvbnRleHRTdGF0ZTo6bVJlbmRlcmJ1ZmZlcnMpKSwKKyAgICAg
IG1TYW1wbGVycyhBbGxvY2F0ZU9yR2V0U2hhcmVkUmVzb3VyY2VNYW5hZ2VyKHNoYXJlQ29udGV4
dFN0YXRlLCAmQ29udGV4dFN0YXRlOjptU2FtcGxlcnMpKSwKKyAgICAgIG1GZW5jZVN5bmNzKAor
ICAgICAgICAgIEFsbG9jYXRlT3JHZXRTaGFyZWRSZXNvdXJjZU1hbmFnZXIoc2hhcmVDb250ZXh0
U3RhdGUsICZDb250ZXh0U3RhdGU6Om1GZW5jZVN5bmNzKSksCisgICAgICBtUGF0aHMoQWxsb2Nh
dGVPckdldFNoYXJlZFJlc291cmNlTWFuYWdlcihzaGFyZUNvbnRleHRTdGF0ZSwgJkNvbnRleHRT
dGF0ZTo6bVBhdGhzKSksCisgICAgICBtRnJhbWVidWZmZXJzKG5ldyBGcmFtZWJ1ZmZlck1hbmFn
ZXIoKSkKIHsKIH0KIAogQ29udGV4dFN0YXRlOjp+Q29udGV4dFN0YXRlKCkKIHsKKyAgICAvLyBI
YW5kbGVzIGFyZSByZWxlYXNlZCBieSB0aGUgQ29udGV4dC4KK30KKworYm9vbCBDb250ZXh0U3Rh
dGU6OmlzV2ViR0wxKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKG1FeHRlbnNpb25zLndlYmdsQ29t
cGF0aWJpbGl0eSAmJiBtQ2xpZW50VmVyc2lvbi5tYWpvciA9PSAyKTsKIH0KIAogY29uc3QgVGV4
dHVyZUNhcHMgJkNvbnRleHRTdGF0ZTo6Z2V0VGV4dHVyZUNhcChHTGVudW0gaW50ZXJuYWxGb3Jt
YXQpIGNvbnN0CkBAIC00MywzNyArMTA4LDMxIEBAIGNvbnN0IFRleHR1cmVDYXBzICZDb250ZXh0
U3RhdGU6OmdldFRleHR1cmVDYXAoR0xlbnVtIGludGVybmFsRm9ybWF0KSBjb25zdAogICAgIHJl
dHVybiBtVGV4dHVyZUNhcHMuZ2V0KGludGVybmFsRm9ybWF0KTsKIH0KIAotVmFsaWRhdGlvbkNv
bnRleHQ6OlZhbGlkYXRpb25Db250ZXh0KEdMaW50IGNsaWVudE1ham9yVmVyc2lvbiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjbGllbnRNaW5vclZlcnNpb24s
CitWYWxpZGF0aW9uQ29udGV4dDo6VmFsaWRhdGlvbkNvbnRleHQoY29uc3QgVmFsaWRhdGlvbkNv
bnRleHQgKnNoYXJlQ29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBUZXh0dXJlTWFuYWdlciAqc2hhcmVUZXh0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBWZXJzaW9uICZjbGllbnRWZXJzaW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlICpzdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBDYXBzICZjYXBzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJlQ2FwcywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFeHRlbnNpb25zICZleHRl
bnNpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291
cmNlTWFuYWdlciAqcmVzb3VyY2VNYW5hZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IExpbWl0YXRpb25zICZsaW1pdGF0aW9ucywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHNraXBWYWxpZGF0aW9uKQotICAgIDogbVN0YXRl
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSwKLSAgICAgICAgICAgICBjbGllbnRN
YWpvclZlcnNpb24sCi0gICAgICAgICAgICAgY2xpZW50TWlub3JWZXJzaW9uLAorICAgIDogbVN0
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Q29udGV4dElEPih0aGlzKSwKKyAgICAgICAgICAgICBzaGFy
ZUNvbnRleHQgPyAmc2hhcmVDb250ZXh0LT5tU3RhdGUgOiBudWxscHRyLAorICAgICAgICAgICAg
IHNoYXJlVGV4dHVyZXMsCisgICAgICAgICAgICAgY2xpZW50VmVyc2lvbiwKICAgICAgICAgICAg
ICBzdGF0ZSwKICAgICAgICAgICAgICBjYXBzLAogICAgICAgICAgICAgIHRleHR1cmVDYXBzLAog
ICAgICAgICAgICAgIGV4dGVuc2lvbnMsCi0gICAgICAgICAgICAgcmVzb3VyY2VNYW5hZ2VyLAog
ICAgICAgICAgICAgIGxpbWl0YXRpb25zKSwKLSAgICAgIG1Ta2lwVmFsaWRhdGlvbihza2lwVmFs
aWRhdGlvbikKKyAgICAgIG1Ta2lwVmFsaWRhdGlvbihza2lwVmFsaWRhdGlvbiksCisgICAgICBt
RGlzcGxheVRleHR1cmVTaGFyZUdyb3VwKHNoYXJlVGV4dHVyZXMgIT0gbnVsbHB0cikKIHsKIH0K
IAogYm9vbCBWYWxpZGF0aW9uQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXJJbmZvKEdMZW51bSBw
bmFtZSwgR0xlbnVtICp0eXBlLCB1bnNpZ25lZCBpbnQgKm51bVBhcmFtcykKIHsKLSAgICBpZiAo
cG5hbWUgPj0gR0xfRFJBV19CVUZGRVIwX0VYVCAmJiBwbmFtZSA8PSBHTF9EUkFXX0JVRkZFUjE1
X0VYVCkKLSAgICB7Ci0gICAgICAgICp0eXBlICAgICAgPSBHTF9JTlQ7Ci0gICAgICAgICpudW1Q
YXJhbXMgPSAxOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KICAgICAvLyBQbGVhc2Ug
bm90ZTogdGhlIHF1ZXJ5IHR5cGUgcmV0dXJuZWQgZm9yIERFUFRIX0NMRUFSX1ZBTFVFIGluIHRo
aXMgaW1wbGVtZW50YXRpb24KICAgICAvLyBpcyBGTE9BVCByYXRoZXIgdGhhbiBJTlQsIGFzIHdv
dWxkIGJlIHN1Z2dlc3RlZCBieSB0aGUgR0wgRVMgMi4wIHNwZWMuIFRoaXMgaXMgZHVlCiAgICAg
Ly8gdG8gdGhlIGZhY3QgdGhhdCBpdCBpcyBzdG9yZWQgaW50ZXJuYWxseSBhcyBhIGZsb2F0LCBh
bmQgc28gd291bGQgcmVxdWlyZSBjb252ZXJzaW9uCkBAIC0xMTAsOCArMTY5LDYgQEAgYm9vbCBW
YWxpZGF0aW9uQ29udGV4dDo6Z2V0UXVlcnlQYXJhbWV0ZXJJbmZvKEdMZW51bSBwbmFtZSwgR0xl
bnVtICp0eXBlLCB1bnNpZ24KICAgICAgICAgY2FzZSBHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklU
UzoKICAgICAgICAgY2FzZSBHTF9NQVhfRlJBR01FTlRfVU5JRk9STV9WRUNUT1JTOgogICAgICAg
ICBjYXNlIEdMX01BWF9SRU5ERVJCVUZGRVJfU0laRToKLSAgICAgICAgY2FzZSBHTF9NQVhfQ09M
T1JfQVRUQUNITUVOVFNfRVhUOgotICAgICAgICBjYXNlIEdMX01BWF9EUkFXX0JVRkZFUlNfRVhU
OgogICAgICAgICBjYXNlIEdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFM6CiAgICAgICAgIGNh
c2UgR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTOgogICAgICAgICBjYXNlIEdMX0FS
UkFZX0JVRkZFUl9CSU5ESU5HOgpAQCAtMTczLDkgKzIzMCwxMCBAQCBib29sIFZhbGlkYXRpb25D
b250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlckluZm8oR0xlbnVtIHBuYW1lLCBHTGVudW0gKnR5cGUs
IHVuc2lnbgogICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7CiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQotICAgICAgICBjYXNlIEdMX01BWF9TQU1QTEVTX0FOR0xFOgorICAg
ICAgICBjYXNlIEdMX01BWF9EUkFXX0JVRkZFUlNfRVhUOgorICAgICAgICBjYXNlIEdMX01BWF9D
T0xPUl9BVFRBQ0hNRU5UU19FWFQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghZ2V0RXh0
ZW5zaW9ucygpLmZyYW1lYnVmZmVyTXVsdGlzYW1wbGUpCisgICAgICAgICAgICBpZiAoKGdldENs
aWVudE1ham9yVmVyc2lvbigpIDwgMykgJiYgIWdldEV4dGVuc2lvbnMoKS5kcmF3QnVmZmVycykK
ICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB9CkBAIC0yNDcsNyArMzA1LDcgQEAgYm9vbCBWYWxpZGF0aW9uQ29udGV4dDo6Z2V0UXVlcnlQ
YXJhbWV0ZXJJbmZvKEdMZW51bSBwbmFtZSwgR0xlbnVtICp0eXBlLCB1bnNpZ24KICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfTUFYX1RFWFRVUkVf
TUFYX0FOSVNPVFJPUFlfRVhUOgotICAgICAgICAgICAgaWYgKCFnZXRFeHRlbnNpb25zKCkubWF4
VGV4dHVyZUFuaXNvdHJvcHkpCisgICAgICAgICAgICBpZiAoIWdldEV4dGVuc2lvbnMoKS50ZXh0
dXJlRmlsdGVyQW5pc290cm9waWMpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgfQpAQCAtMzQ2LDYgKzQwNCwzNiBAQCBib29sIFZhbGlk
YXRpb25Db250ZXh0OjpnZXRRdWVyeVBhcmFtZXRlckluZm8oR0xlbnVtIHBuYW1lLCBHTGVudW0g
KnR5cGUsIHVuc2lnbgogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKGdldEV4dGVuc2lvbnMo
KS5jbGllbnRBcnJheXMpCisgICAgeworICAgICAgICBzd2l0Y2ggKHBuYW1lKQorICAgICAgICB7
CisgICAgICAgICAgICBjYXNlIEdMX0NMSUVOVF9BUlJBWVNfQU5HTEU6CisgICAgICAgICAgICAg
ICAgKnR5cGUgICAgICA9IEdMX0JPT0w7CisgICAgICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp
ZiAoZ2V0RXh0ZW5zaW9ucygpLnNSR0JXcml0ZUNvbnRyb2wpCisgICAgeworICAgICAgICBzd2l0
Y2ggKHBuYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX1NS
R0JfRVhUOgorICAgICAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9CT09MOworICAgICAgICAg
ICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICB9CisgICAgfQorCisgICAgaWYgKGdldEV4dGVuc2lvbnMoKS5yb2J1c3RSZXNvdXJjZUlu
aXRpYWxpemF0aW9uICYmCisgICAgICAgIHBuYW1lID09IEdMX0NPTlRFWFRfUk9CVVNUX1JFU09V
UkNFX0lOSVRJQUxJWkFUSU9OX0FOR0xFKQorICAgIHsKKyAgICAgICAgKnR5cGUgICAgICA9IEdM
X0JPT0w7CisgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKICAgICAvLyBDaGVjayBmb3IgRVMzLjArIHBhcmFtZXRlciBuYW1lcyB3aGljaCBhcmUg
YWxzbyBleHBvc2VkIGFzIEVTMiBleHRlbnNpb25zCiAgICAgc3dpdGNoIChwbmFtZSkKICAgICB7
CkBAIC0zODYsMTEgKzQ3NCwzMiBAQCBib29sIFZhbGlkYXRpb25Db250ZXh0OjpnZXRRdWVyeVBh
cmFtZXRlckluZm8oR0xlbnVtIHBuYW1lLCBHTGVudW0gKnR5cGUsIHVuc2lnbgogICAgICAgICAg
ICAgKnR5cGUgICAgICA9IEdMX0lOVDsKICAgICAgICAgICAgICpudW1QYXJhbXMgPSAxOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNhc2UgR0xfTUFYX1NBTVBMRVM6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpY19hc3NlcnQoR0xfTUFYX1NBTVBMRVNfQU5HTEUgPT0g
R0xfTUFYX1NBTVBMRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJHTF9NQVhfU0FNUExF
U19BTkdMRSBub3QgZXF1YWwgdG8gR0xfTUFYX1NBTVBMRVMiKTsKKyAgICAgICAgICAgIGlmICgo
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKSAmJiAhZ2V0RXh0ZW5zaW9ucygpLmZyYW1lYnVm
ZmVyTXVsdGlzYW1wbGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKnR5cGUgICAgICA9IEdMX0lOVDsKKyAg
ICAgICAgICAgICpudW1QYXJhbXMgPSAxOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KICAgICB9CiAKLSAgICBjb25zdCBHTFZlcnNpb24gJmdsVmVyc2lvbiA9IG1TdGF0ZS5n
ZXRHTFZlcnNpb24oKTsKKyAgICBpZiAocG5hbWUgPj0gR0xfRFJBV19CVUZGRVIwX0VYVCAmJiBw
bmFtZSA8PSBHTF9EUkFXX0JVRkZFUjE1X0VYVCkKKyAgICB7CisgICAgICAgIGlmICgoZ2V0Q2xp
ZW50VmVyc2lvbigpIDwgVmVyc2lvbigzLCAwKSkgJiYgIWdldEV4dGVuc2lvbnMoKS5kcmF3QnVm
ZmVycykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgICAgICp0eXBlICAgICAgPSBHTF9JTlQ7CisgICAgICAgICpudW1QYXJhbXMgPSAxOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKLSAgICBpZiAoIWdsVmVyc2lvbi5pc0VTM09yR3Jl
YXRlcigpKQorICAgIGlmIChnZXRDbGllbnRWZXJzaW9uKCkgPCBWZXJzaW9uKDMsIDApKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTQ2NiwxMyArNTc1LDI2IEBAIGJv
b2wgVmFsaWRhdGlvbkNvbnRleHQ6OmdldFF1ZXJ5UGFyYW1ldGVySW5mbyhHTGVudW0gcG5hbWUs
IEdMZW51bSAqdHlwZSwgdW5zaWduCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIWdsVmVy
c2lvbi5pc0VTMzEoKSkKKyAgICBpZiAoZ2V0RXh0ZW5zaW9ucygpLnJlcXVlc3RFeHRlbnNpb24p
CisgICAgeworICAgICAgICBzd2l0Y2ggKHBuYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBj
YXNlIEdMX05VTV9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFOgorICAgICAgICAgICAgICAg
ICp0eXBlICAgICAgPSBHTF9JTlQ7CisgICAgICAgICAgICAgICAgKm51bVBhcmFtcyA9IDE7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAo
Z2V0Q2xpZW50VmVyc2lvbigpIDwgVmVyc2lvbigzLCAxKSkKICAgICB7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICBzd2l0Y2ggKHBuYW1lKQogICAgIHsKKyAgICAgICAgY2Fz
ZSBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElORzoKKyAgICAgICAgY2FzZSBHTF9EUkFX
X0lORElSRUNUX0JVRkZFUl9CSU5ESU5HOgogICAgICAgICBjYXNlIEdMX01BWF9GUkFNRUJVRkZF
Ul9XSURUSDoKICAgICAgICAgY2FzZSBHTF9NQVhfRlJBTUVCVUZGRVJfSEVJR0hUOgogICAgICAg
ICBjYXNlIEdMX01BWF9GUkFNRUJVRkZFUl9TQU1QTEVTOgpAQCAtNTEzLDYgKzYzNSw3IEBAIGJv
b2wgVmFsaWRhdGlvbkNvbnRleHQ6OmdldFF1ZXJ5UGFyYW1ldGVySW5mbyhHTGVudW0gcG5hbWUs
IEdMZW51bSAqdHlwZSwgdW5zaWduCiAgICAgICAgIGNhc2UgR0xfTUFYX0NPTUJJTkVEX0lNQUdF
X1VOSUZPUk1TOgogICAgICAgICBjYXNlIEdMX01BWF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklO
RElOR1M6CiAgICAgICAgIGNhc2UgR0xfTUFYX0NPTUJJTkVEX1NIQURFUl9TVE9SQUdFX0JMT0NL
UzoKKyAgICAgICAgY2FzZSBHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfQklORElORzoKICAgICAg
ICAgY2FzZSBHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVDoKICAgICAg
ICAgICAgICp0eXBlICAgICAgPSBHTF9JTlQ7CiAgICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsK
QEAgLTUzMCw5ICs2NTMsNyBAQCBib29sIFZhbGlkYXRpb25Db250ZXh0OjpnZXRJbmRleGVkUXVl
cnlQYXJhbWV0ZXJJbmZvKEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqdHlwZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpudW1Q
YXJhbXMpCiB7Ci0KLSAgICBjb25zdCBHTFZlcnNpb24gJmdsVmVyc2lvbiA9IG1TdGF0ZS5nZXRH
TFZlcnNpb24oKTsKLSAgICBpZiAoIWdsVmVyc2lvbi5pc0VTM09yR3JlYXRlcigpKQorICAgIGlm
IChnZXRDbGllbnRWZXJzaW9uKCkgPCBWZXJzaW9uKDMsIDApKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KQEAgLTU1Nyw3ICs2NzgsNyBAQCBib29sIFZhbGlkYXRpb25Db250
ZXh0OjpnZXRJbmRleGVkUXVlcnlQYXJhbWV0ZXJJbmZvKEdMZW51bSB0YXJnZXQsCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBpZiAoIWdsVmVyc2lvbi5pc0VTMzEoKSkKKyAgICBpZiAoZ2V0Q2xp
ZW50VmVyc2lvbigpIDwgVmVyc2lvbigzLCAxKSkKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CkBAIC01NjYsMTEgKzY4NywyNiBAQCBib29sIFZhbGlkYXRpb25Db250ZXh0Ojpn
ZXRJbmRleGVkUXVlcnlQYXJhbWV0ZXJJbmZvKEdMZW51bSB0YXJnZXQsCiAgICAgewogICAgICAg
ICBjYXNlIEdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfQ09VTlQ6CiAgICAgICAgIGNhc2UgR0xf
TUFYX0NPTVBVVEVfV09SS19HUk9VUF9TSVpFOgorICAgICAgICBjYXNlIEdMX0FUT01JQ19DT1VO
VEVSX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICBjYXNlIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZF
Ul9CSU5ESU5HOgorICAgICAgICBjYXNlIEdMX1ZFUlRFWF9CSU5ESU5HX0JVRkZFUjoKKyAgICAg
ICAgY2FzZSBHTF9WRVJURVhfQklORElOR19ESVZJU09SOgorICAgICAgICBjYXNlIEdMX1ZFUlRF
WF9CSU5ESU5HX09GRlNFVDoKKyAgICAgICAgY2FzZSBHTF9WRVJURVhfQklORElOR19TVFJJREU6
CiAgICAgICAgIHsKICAgICAgICAgICAgICp0eXBlICAgICAgPSBHTF9JTlQ7CiAgICAgICAgICAg
ICAqbnVtUGFyYW1zID0gMTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Cisg
ICAgICAgIGNhc2UgR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NUQVJUOgorICAgICAgICBjYXNl
IEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFOgorICAgICAgICBjYXNlIEdMX1NIQURFUl9T
VE9SQUdFX0JVRkZFUl9TVEFSVDoKKyAgICAgICAgY2FzZSBHTF9TSEFERVJfU1RPUkFHRV9CVUZG
RVJfU0laRToKKyAgICAgICAgeworICAgICAgICAgICAgKnR5cGUgICAgICA9IEdMX0lOVF82NF9B
TkdMRVg7CisgICAgICAgICAgICAqbnVtUGFyYW1zID0gMTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTc4LDEyICs3
MTQsNDUgQEAgYm9vbCBWYWxpZGF0aW9uQ29udGV4dDo6Z2V0SW5kZXhlZFF1ZXJ5UGFyYW1ldGVy
SW5mbyhHTGVudW0gdGFyZ2V0LAogCiBQcm9ncmFtICpWYWxpZGF0aW9uQ29udGV4dDo6Z2V0UHJv
Z3JhbShHTHVpbnQgaGFuZGxlKSBjb25zdAogewotICAgIHJldHVybiBtU3RhdGUubVJlc291cmNl
TWFuYWdlci0+Z2V0UHJvZ3JhbShoYW5kbGUpOworICAgIHJldHVybiBtU3RhdGUubVNoYWRlclBy
b2dyYW1zLT5nZXRQcm9ncmFtKGhhbmRsZSk7CiB9CiAKIFNoYWRlciAqVmFsaWRhdGlvbkNvbnRl
eHQ6OmdldFNoYWRlcihHTHVpbnQgaGFuZGxlKSBjb25zdAogewotICAgIHJldHVybiBtU3RhdGUu
bVJlc291cmNlTWFuYWdlci0+Z2V0U2hhZGVyKGhhbmRsZSk7CisgICAgcmV0dXJuIG1TdGF0ZS5t
U2hhZGVyUHJvZ3JhbXMtPmdldFNoYWRlcihoYW5kbGUpOworfQorCitib29sIFZhbGlkYXRpb25D
b250ZXh0Ojppc1RleHR1cmVHZW5lcmF0ZWQoR0x1aW50IHRleHR1cmUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1TdGF0ZS5tVGV4dHVyZXMtPmlzVGV4dHVyZUdlbmVyYXRlZCh0ZXh0dXJlKTsKK30K
KworYm9vbCBWYWxpZGF0aW9uQ29udGV4dDo6aXNCdWZmZXJHZW5lcmF0ZWQoR0x1aW50IGJ1ZmZl
cikgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRlLm1CdWZmZXJzLT5pc0J1ZmZlckdlbmVyYXRl
ZChidWZmZXIpOworfQorCitib29sIFZhbGlkYXRpb25Db250ZXh0Ojppc1JlbmRlcmJ1ZmZlckdl
bmVyYXRlZChHTHVpbnQgcmVuZGVyYnVmZmVyKSBjb25zdAoreworICAgIHJldHVybiBtU3RhdGUu
bVJlbmRlcmJ1ZmZlcnMtPmlzUmVuZGVyYnVmZmVyR2VuZXJhdGVkKHJlbmRlcmJ1ZmZlcik7Cit9
CisKK2Jvb2wgVmFsaWRhdGlvbkNvbnRleHQ6OmlzRnJhbWVidWZmZXJHZW5lcmF0ZWQoR0x1aW50
IGZyYW1lYnVmZmVyKSBjb25zdAoreworICAgIHJldHVybiBtU3RhdGUubUZyYW1lYnVmZmVycy0+
aXNGcmFtZWJ1ZmZlckdlbmVyYXRlZChmcmFtZWJ1ZmZlcik7Cit9CisKK2Jvb2wgVmFsaWRhdGlv
bkNvbnRleHQ6OnVzaW5nRGlzcGxheVRleHR1cmVTaGFyZUdyb3VwKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbURpc3BsYXlUZXh0dXJlU2hhcmVHcm91cDsKK30KKworR0xlbnVtIFZhbGlkYXRpb25D
b250ZXh0OjpnZXRDb252ZXJ0ZWRSZW5kZXJidWZmZXJGb3JtYXQoR0xlbnVtIGludGVybmFsZm9y
bWF0KSBjb25zdAoreworICAgIHJldHVybiBtU3RhdGUubUV4dGVuc2lvbnMud2ViZ2xDb21wYXRp
YmlsaXR5ICYmIG1TdGF0ZS5tQ2xpZW50VmVyc2lvbi5tYWpvciA9PSAyICYmCisgICAgICAgICAg
ICAgICAgICAgaW50ZXJuYWxmb3JtYXQgPT0gR0xfREVQVEhfU1RFTkNJTAorICAgICAgICAgICAg
ICAgPyBHTF9ERVBUSDI0X1NURU5DSUw4CisgICAgICAgICAgICAgICA6IGludGVybmFsZm9ybWF0
OwogfQogCiB9ICAvLyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9Db250ZXh0U3RhdGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9Db250ZXh0U3RhdGUuaAppbmRleCAyNGY2Y2U5YzM3Mi4uNGM1MGI1
OTY3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9D
b250ZXh0U3RhdGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
Q29udGV4dFN0YXRlLmgKQEAgLTExLDg0ICsxMSw4OSBAQAogCiAjaW5jbHVkZSAiY29tbW9uL2Fu
Z2xldXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9TdGF0ZS5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL1ZlcnNpb24uaCIKIAogbmFtZXNwYWNlIGdsCiB7Ci1jbGFzcyBWYWxpZGF0aW9uQ29udGV4
dDsKK2NsYXNzIEJ1ZmZlck1hbmFnZXI7CiBjbGFzcyBDb250ZXh0U3RhdGU7CitjbGFzcyBGZW5j
ZVN5bmNNYW5hZ2VyOworY2xhc3MgRnJhbWVidWZmZXJNYW5hZ2VyOworY2xhc3MgUGF0aE1hbmFn
ZXI7CitjbGFzcyBSZW5kZXJidWZmZXJNYW5hZ2VyOworY2xhc3MgU2FtcGxlck1hbmFnZXI7Citj
bGFzcyBTaGFkZXJQcm9ncmFtTWFuYWdlcjsKK2NsYXNzIFRleHR1cmVNYW5hZ2VyOworY2xhc3Mg
VmFsaWRhdGlvbkNvbnRleHQ7CiAKLWNsYXNzIEdMVmVyc2lvbiBmaW5hbCA6IGFuZ2xlOjpOb25D
b3B5YWJsZQotewotICBwdWJsaWM6Ci0gICAgR0xWZXJzaW9uKEdMaW50IGNsaWVudE1ham9yVmVy
c2lvbiwgR0xpbnQgY2xpZW50TWlub3JWZXJzaW9uKQotICAgICAgICA6IG1DbGllbnRNYWpvclZl
cnNpb24oY2xpZW50TWFqb3JWZXJzaW9uKSwgbUNsaWVudE1pbm9yVmVyc2lvbihjbGllbnRNaW5v
clZlcnNpb24pCi0gICAgewotICAgIH0KLQotICAgIEdMaW50IGdldENsaWVudE1ham9yVmVyc2lv
bigpIGNvbnN0IHsgcmV0dXJuIG1DbGllbnRNYWpvclZlcnNpb247IH0KLSAgICBHTGludCBnZXRD
bGllbnRNaW5vclZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtQ2xpZW50TWlub3JWZXJzaW9uOyB9
Ci0KLSAgICBib29sIGlzRVMyKCkgY29uc3QgeyByZXR1cm4gbUNsaWVudE1ham9yVmVyc2lvbiA9
PSAyOyB9Ci0gICAgYm9vbCBpc0VTMygpIGNvbnN0IHsgcmV0dXJuIG1DbGllbnRNYWpvclZlcnNp
b24gPT0gMyAmJiBtQ2xpZW50TWlub3JWZXJzaW9uID09IDA7IH0KLSAgICBib29sIGlzRVMzMSgp
IGNvbnN0IHsgcmV0dXJuIG1DbGllbnRNYWpvclZlcnNpb24gPT0gMyAmJiBtQ2xpZW50TWlub3JW
ZXJzaW9uID09IDE7IH0KLSAgICBib29sIGlzRVMzT3JHcmVhdGVyKCkgY29uc3QgeyByZXR1cm4g
bUNsaWVudE1ham9yVmVyc2lvbiA+PSAzOyB9CitzdGF0aWMgY29uc3RleHByIFZlcnNpb24gRVNf
Ml8wID0gVmVyc2lvbigyLCAwKTsKK3N0YXRpYyBjb25zdGV4cHIgVmVyc2lvbiBFU18zXzAgPSBW
ZXJzaW9uKDMsIDApOworc3RhdGljIGNvbnN0ZXhwciBWZXJzaW9uIEVTXzNfMSA9IFZlcnNpb24o
MywgMSk7CiAKLSAgcHJpdmF0ZToKLSAgICBHTGludCBtQ2xpZW50TWFqb3JWZXJzaW9uOwotICAg
IEdMaW50IG1DbGllbnRNaW5vclZlcnNpb247Ci19OwordXNpbmcgQ29udGV4dElEID0gdWludHB0
cl90OwogCiBjbGFzcyBDb250ZXh0U3RhdGUgZmluYWwgOiBwdWJsaWMgYW5nbGU6Ok5vbkNvcHlh
YmxlCiB7CiAgIHB1YmxpYzoKLSAgICBDb250ZXh0U3RhdGUodWludHB0cl90IGNvbnRleHQsCi0g
ICAgICAgICAgICAgICAgIEdMaW50IGNsaWVudE1ham9yVmVyc2lvbiwKLSAgICAgICAgICAgICAg
ICAgR0xpbnQgY2xpZW50TWlub3JWZXJzaW9uLAorICAgIENvbnRleHRTdGF0ZShDb250ZXh0SUQg
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgY29uc3QgQ29udGV4dFN0YXRlICpzaGFyZUNvbnRl
eHRTdGF0ZSwKKyAgICAgICAgICAgICAgICAgVGV4dHVyZU1hbmFnZXIgKnNoYXJlVGV4dHVyZXMs
CisgICAgICAgICAgICAgICAgIGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnNpb24sCiAgICAgICAg
ICAgICAgICAgIFN0YXRlICpzdGF0ZSwKICAgICAgICAgICAgICAgICAgY29uc3QgQ2FwcyAmY2Fw
cywKICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZUNhcHNNYXAgJnRleHR1cmVDYXBzLAog
ICAgICAgICAgICAgICAgICBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zLAotICAgICAgICAg
ICAgICAgICBjb25zdCBSZXNvdXJjZU1hbmFnZXIgKnJlc291cmNlTWFuYWdlciwKICAgICAgICAg
ICAgICAgICAgY29uc3QgTGltaXRhdGlvbnMgJmxpbWl0YXRpb25zKTsKICAgICB+Q29udGV4dFN0
YXRlKCk7CiAKLSAgICB1aW50cHRyX3QgZ2V0Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1Db250
ZXh0OyB9Ci0gICAgR0xpbnQgZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4g
bUdMVmVyc2lvbi5nZXRDbGllbnRNYWpvclZlcnNpb24oKTsgfQotICAgIEdMaW50IGdldENsaWVu
dE1pbm9yVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1HTFZlcnNpb24uZ2V0Q2xpZW50TWlub3JW
ZXJzaW9uKCk7IH0KLSAgICBjb25zdCBHTFZlcnNpb24gJmdldEdMVmVyc2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1HTFZlcnNpb247IH0KKyAgICBDb250ZXh0SUQgZ2V0Q29udGV4dElEKCkgY29uc3Qg
eyByZXR1cm4gbUNvbnRleHQ7IH0KKyAgICBHTGludCBnZXRDbGllbnRNYWpvclZlcnNpb24oKSBj
b25zdCB7IHJldHVybiBtQ2xpZW50VmVyc2lvbi5tYWpvcjsgfQorICAgIEdMaW50IGdldENsaWVu
dE1pbm9yVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1DbGllbnRWZXJzaW9uLm1pbm9yOyB9Cisg
ICAgY29uc3QgVmVyc2lvbiAmZ2V0Q2xpZW50VmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1DbGll
bnRWZXJzaW9uOyB9CiAgICAgY29uc3QgU3RhdGUgJmdldFN0YXRlKCkgY29uc3QgeyByZXR1cm4g
Km1TdGF0ZTsgfQogICAgIGNvbnN0IENhcHMgJmdldENhcHMoKSBjb25zdCB7IHJldHVybiBtQ2Fw
czsgfQogICAgIGNvbnN0IFRleHR1cmVDYXBzTWFwICZnZXRUZXh0dXJlQ2FwcygpIGNvbnN0IHsg
cmV0dXJuIG1UZXh0dXJlQ2FwczsgfQogICAgIGNvbnN0IEV4dGVuc2lvbnMgJmdldEV4dGVuc2lv
bnMoKSBjb25zdCB7IHJldHVybiBtRXh0ZW5zaW9uczsgfQotICAgIGNvbnN0IFJlc291cmNlTWFu
YWdlciAmZ2V0UmVzb3VyY2VNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gKm1SZXNvdXJjZU1hbmFn
ZXI7IH0KICAgICBjb25zdCBMaW1pdGF0aW9ucyAmZ2V0TGltaXRhdGlvbnMoKSBjb25zdCB7IHJl
dHVybiBtTGltaXRhdGlvbnM7IH0KIAogICAgIGNvbnN0IFRleHR1cmVDYXBzICZnZXRUZXh0dXJl
Q2FwKEdMZW51bSBpbnRlcm5hbEZvcm1hdCkgY29uc3Q7CiAKKyAgICBib29sIHVzaW5nRGlzcGxh
eVRleHR1cmVTaGFyZUdyb3VwKCkgY29uc3Q7CisKKyAgICBib29sIGlzV2ViR0wxKCkgY29uc3Q7
CisKICAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgQ29udGV4dDsKICAgICBmcmllbmQgY2xh
c3MgVmFsaWRhdGlvbkNvbnRleHQ7CiAKLSAgICBHTFZlcnNpb24gbUdMVmVyc2lvbjsKLSAgICB1
aW50cHRyX3QgbUNvbnRleHQ7CisgICAgVmVyc2lvbiBtQ2xpZW50VmVyc2lvbjsKKyAgICBDb250
ZXh0SUQgbUNvbnRleHQ7CiAgICAgU3RhdGUgKm1TdGF0ZTsKICAgICBjb25zdCBDYXBzICZtQ2Fw
czsKICAgICBjb25zdCBUZXh0dXJlQ2Fwc01hcCAmbVRleHR1cmVDYXBzOwogICAgIGNvbnN0IEV4
dGVuc2lvbnMgJm1FeHRlbnNpb25zOwotICAgIGNvbnN0IFJlc291cmNlTWFuYWdlciAqbVJlc291
cmNlTWFuYWdlcjsKICAgICBjb25zdCBMaW1pdGF0aW9ucyAmbUxpbWl0YXRpb25zOworCisgICAg
QnVmZmVyTWFuYWdlciAqbUJ1ZmZlcnM7CisgICAgU2hhZGVyUHJvZ3JhbU1hbmFnZXIgKm1TaGFk
ZXJQcm9ncmFtczsKKyAgICBUZXh0dXJlTWFuYWdlciAqbVRleHR1cmVzOworICAgIFJlbmRlcmJ1
ZmZlck1hbmFnZXIgKm1SZW5kZXJidWZmZXJzOworICAgIFNhbXBsZXJNYW5hZ2VyICptU2FtcGxl
cnM7CisgICAgRmVuY2VTeW5jTWFuYWdlciAqbUZlbmNlU3luY3M7CisgICAgUGF0aE1hbmFnZXIg
Km1QYXRoczsKKyAgICBGcmFtZWJ1ZmZlck1hbmFnZXIgKm1GcmFtZWJ1ZmZlcnM7CiB9OwogCiBj
bGFzcyBWYWxpZGF0aW9uQ29udGV4dCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6
Ci0gICAgVmFsaWRhdGlvbkNvbnRleHQoR0xpbnQgY2xpZW50TWFqb3JWZXJzaW9uLAotICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGNsaWVudE1pbm9yVmVyc2lvbiwKKyAgICBWYWxpZGF0aW9u
Q29udGV4dChjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqc2hhcmVDb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgIFRleHR1cmVNYW5hZ2VyICpzaGFyZVRleHR1cmVzLAorICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFZlcnNpb24gJmNsaWVudFZlcnNpb24sCiAgICAgICAgICAgICAgICAg
ICAgICAgU3RhdGUgKnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhcHMgJmNh
cHMsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZUNhcHNNYXAgJnRleHR1cmVD
YXBzLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMs
Ci0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VNYW5hZ2VyICpyZXNvdXJjZU1h
bmFnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGltaXRhdGlvbnMgJmxpbWl0YXRp
b25zLAogICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2tpcFZhbGlkYXRpb24pOwogICAgIHZp
cnR1YWwgflZhbGlkYXRpb25Db250ZXh0KCkge30KQEAgLTk2LDkgKzEwMSw5IEBAIGNsYXNzIFZh
bGlkYXRpb25Db250ZXh0IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdmlydHVhbCB2b2lkIGhh
bmRsZUVycm9yKGNvbnN0IEVycm9yICZlcnJvcikgPSAwOwogCiAgICAgY29uc3QgQ29udGV4dFN0
YXRlICZnZXRDb250ZXh0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtU3RhdGU7IH0KLSAgICBpbnQg
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLmdldENsaWVudE1h
am9yVmVyc2lvbigpOyB9Ci0gICAgaW50IGdldENsaWVudE1pbm9yVmVyc2lvbigpIGNvbnN0IHsg
cmV0dXJuIG1TdGF0ZS5nZXRDbGllbnRNaW5vclZlcnNpb24oKTsgfQotICAgIGNvbnN0IEdMVmVy
c2lvbiAmZ2V0R0xWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLm1HTFZlcnNpb247IH0K
KyAgICBHTGludCBnZXRDbGllbnRNYWpvclZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtU3RhdGUu
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCk7IH0KKyAgICBHTGludCBnZXRDbGllbnRNaW5vclZlcnNp
b24oKSBjb25zdCB7IHJldHVybiBtU3RhdGUuZ2V0Q2xpZW50TWlub3JWZXJzaW9uKCk7IH0KKyAg
ICBjb25zdCBWZXJzaW9uICZnZXRDbGllbnRWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbVN0YXRl
LmdldENsaWVudFZlcnNpb24oKTsgfQogICAgIGNvbnN0IFN0YXRlICZnZXRHTFN0YXRlKCkgY29u
c3QgeyByZXR1cm4gbVN0YXRlLmdldFN0YXRlKCk7IH0KICAgICBjb25zdCBDYXBzICZnZXRDYXBz
KCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLmdldENhcHMoKTsgfQogICAgIGNvbnN0IFRleHR1cmVD
YXBzTWFwICZnZXRUZXh0dXJlQ2FwcygpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5nZXRUZXh0dXJl
Q2FwcygpOyB9CkBAIC0xMTMsOSArMTE4LDIyIEBAIGNsYXNzIFZhbGlkYXRpb25Db250ZXh0IDog
YW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgUHJvZ3JhbSAqZ2V0UHJvZ3JhbShHTHVpbnQgaGFuZGxl
KSBjb25zdDsKICAgICBTaGFkZXIgKmdldFNoYWRlcihHTHVpbnQgaGFuZGxlKSBjb25zdDsKIAor
ICAgIGJvb2wgaXNUZXh0dXJlR2VuZXJhdGVkKEdMdWludCB0ZXh0dXJlKSBjb25zdDsKKyAgICBi
b29sIGlzQnVmZmVyR2VuZXJhdGVkKEdMdWludCBidWZmZXIpIGNvbnN0OworICAgIGJvb2wgaXNS
ZW5kZXJidWZmZXJHZW5lcmF0ZWQoR0x1aW50IHJlbmRlcmJ1ZmZlcikgY29uc3Q7CisgICAgYm9v
bCBpc0ZyYW1lYnVmZmVyR2VuZXJhdGVkKEdMdWludCBmcmFtZWJ1ZmZlcikgY29uc3Q7CisKKyAg
ICBib29sIHVzaW5nRGlzcGxheVRleHR1cmVTaGFyZUdyb3VwKCkgY29uc3Q7CisKKyAgICAvLyBI
YWNrIGZvciB0aGUgc3BlY2lhbCBXZWJHTCAxICJERVBUSF9TVEVOQ0lMIiBpbnRlcm5hbCBmb3Jt
YXQuCisgICAgR0xlbnVtIGdldENvbnZlcnRlZFJlbmRlcmJ1ZmZlckZvcm1hdChHTGVudW0gaW50
ZXJuYWxmb3JtYXQpIGNvbnN0OworCisgICAgYm9vbCBpc1dlYkdMMSgpIGNvbnN0IHsgcmV0dXJu
IG1TdGF0ZS5pc1dlYkdMMSgpOyB9CisKICAgcHJvdGVjdGVkOgogICAgIENvbnRleHRTdGF0ZSBt
U3RhdGU7CiAgICAgYm9vbCBtU2tpcFZhbGlkYXRpb247CisgICAgYm9vbCBtRGlzcGxheVRleHR1
cmVTaGFyZUdyb3VwOwogfTsKIH0gIC8vIG5hbWVzcGFjZSBnbAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGV2aWNlLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9EZXZpY2UuY3BwCmluZGV4IDlhNjJmODIwZTY2Li5l
YjMwYjIwMjNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL0RldmljZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L0RldmljZS5jcHAKQEAgLTM4LDEwICszOCw3IEBAIHN0YXRpYyBzdGQ6OnN0cmluZyBHZW5lcmF0
ZUV4dGVuc2lvbnNTdHJpbmcoY29uc3QgVCAmZXh0ZW5zaW9ucykKIHR5cGVkZWYgc3RkOjpzZXQ8
ZWdsOjpEZXZpY2UgKj4gRGV2aWNlU2V0Owogc3RhdGljIERldmljZVNldCAqR2V0RGV2aWNlU2V0
KCkKIHsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCiAgICAgc3RhdGljIERldmlj
ZVNldCBkZXZpY2VzOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogICAgIHJldHVybiAm
ZGV2aWNlczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL0Rpc3BsYXkuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L0Rpc3BsYXkuY3BwCmluZGV4IDg3MDJkYTI1YmQ3Li4zMDIzYTI5ZGY4OCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Rpc3BsYXkuY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9EaXNwbGF5LmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgImxpYkFOR0xFL0ltYWdlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
U3VyZmFjZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1N0cmVhbS5oIgorI2luY2x1ZGUgImxpYkFO
R0xFL1Jlc291cmNlTWFuYWdlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0Rpc3Bs
YXlJbXBsLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvSW1hZ2VJbXBsLmgiCiAjaW5j
bHVkZSAidGhpcmRfcGFydHkvdHJhY2VfZXZlbnQvdHJhY2VfZXZlbnQuaCIKQEAgLTU1LDcgKzU2
LDExIEBACiAKICNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9OVUxMKQogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL251bGwvRGlzcGxheU5VTEwuaCIKLSNlbmRpZgorI2VuZGlmICAvLyBkZWZp
bmVkKEFOR0xFX0VOQUJMRV9OVUxMKQorCisjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfVlVMS0FO
KQorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5VmsuaCIKKyNlbmRp
ZiAgLy8gZGVmaW5lZChBTkdMRV9FTkFCTEVfVlVMS0FOKQogCiBuYW1lc3BhY2UgZWdsCiB7CkBA
IC02Myw2MSArNjgsMzAgQEAgbmFtZXNwYWNlIGVnbAogbmFtZXNwYWNlCiB7CiAKLWNsYXNzIERl
ZmF1bHRQbGF0Zm9ybSA6IHB1YmxpYyBhbmdsZTo6UGxhdGZvcm0KLXsKLXB1YmxpYzoKLSAgICBE
ZWZhdWx0UGxhdGZvcm0oKSB7fQotICAgIH5EZWZhdWx0UGxhdGZvcm0oKSBvdmVycmlkZSB7fQot
fTsKLQotRGVmYXVsdFBsYXRmb3JtICpkZWZhdWx0UGxhdGZvcm0gPSBudWxscHRyOwotCi12b2lk
IEluaXREZWZhdWx0UGxhdGZvcm1JbXBsKCkKLXsKLSAgICBpZiAoQU5HTEVQbGF0Zm9ybUN1cnJl
bnQoKSA9PSBudWxscHRyKQotICAgIHsKLSAgICAgICAgaWYgKGRlZmF1bHRQbGF0Zm9ybSA9PSBu
dWxscHRyKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZWZhdWx0UGxhdGZvcm0gPSBuZXcgRGVm
YXVsdFBsYXRmb3JtKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBBTkdMRVBsYXRmb3JtSW5pdGlh
bGl6ZShkZWZhdWx0UGxhdGZvcm0pOwotICAgIH0KLX0KLQogdHlwZWRlZiBzdGQ6Om1hcDxFR0xO
YXRpdmVXaW5kb3dUeXBlLCBTdXJmYWNlKj4gV2luZG93U3VyZmFjZU1hcDsKIC8vIEdldCBhIG1h
cCBvZiBhbGwgRUdMIHdpbmRvdyBzdXJmYWNlcyB0byB2YWxpZGF0ZSB0aGF0IG5vIHdpbmRvdyBo
YXMgbW9yZSB0aGFuIG9uZSBFR0wgc3VyZmFjZQogLy8gYXNzb2NpYXRlZCB3aXRoIGl0Lgogc3Rh
dGljIFdpbmRvd1N1cmZhY2VNYXAgKkdldFdpbmRvd1N1cmZhY2VzKCkKIHsKLSNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdl
eGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCiAgICAgc3RhdGljIFdpbmRvd1N1cmZhY2VNYXAgd2luZG93
U3VyZmFjZXM7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAgICAgcmV0dXJuICZ3aW5k
b3dTdXJmYWNlczsKIH0KIAogdHlwZWRlZiBzdGQ6Om1hcDxFR0xOYXRpdmVEaXNwbGF5VHlwZSwg
RGlzcGxheSAqPiBBTkdMRVBsYXRmb3JtRGlzcGxheU1hcDsKIHN0YXRpYyBBTkdMRVBsYXRmb3Jt
RGlzcGxheU1hcCAqR2V0QU5HTEVQbGF0Zm9ybURpc3BsYXlNYXAoKQogewotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4
aXQtdGltZS1kZXN0cnVjdG9ycyIKICAgICBzdGF0aWMgQU5HTEVQbGF0Zm9ybURpc3BsYXlNYXAg
ZGlzcGxheXM7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAgICAgcmV0dXJuICZkaXNw
bGF5czsKIH0KIAogdHlwZWRlZiBzdGQ6Om1hcDxEZXZpY2UgKiwgRGlzcGxheSAqPiBEZXZpY2VQ
bGF0Zm9ybURpc3BsYXlNYXA7CiBzdGF0aWMgRGV2aWNlUGxhdGZvcm1EaXNwbGF5TWFwICpHZXRE
ZXZpY2VQbGF0Zm9ybURpc3BsYXlNYXAoKQogewotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1
c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVj
dG9ycyIKICAgICBzdGF0aWMgRGV2aWNlUGxhdGZvcm1EaXNwbGF5TWFwIGRpc3BsYXlzOwotI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogICAgIHJldHVybiAmZGlzcGxheXM7CiB9CiAKLXJ4
OjpEaXNwbGF5SW1wbCAqQ3JlYXRlRGlzcGxheUZyb21EZXZpY2UoRGV2aWNlICplZ2xEZXZpY2Up
CityeDo6RGlzcGxheUltcGwgKkNyZWF0ZURpc3BsYXlGcm9tRGV2aWNlKERldmljZSAqZWdsRGV2
aWNlLCBjb25zdCBEaXNwbGF5U3RhdGUgJnN0YXRlKQogewogICAgIHJ4OjpEaXNwbGF5SW1wbCAq
aW1wbCA9IG51bGxwdHI7CiAKQEAgLTEyNSw3ICs5OSw3IEBAIHJ4OjpEaXNwbGF5SW1wbCAqQ3Jl
YXRlRGlzcGxheUZyb21EZXZpY2UoRGV2aWNlICplZ2xEZXZpY2UpCiAgICAgewogI2lmIGRlZmlu
ZWQoQU5HTEVfRU5BQkxFX0QzRDExKQogICAgICAgICBjYXNlIEVHTF9EM0QxMV9ERVZJQ0VfQU5H
TEU6Ci0gICAgICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5RDNEKCk7CisgICAgICAgICAg
ICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5RDNEKHN0YXRlKTsKICAgICAgICAgICAgIGJyZWFrOwog
I2VuZGlmCiAjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNEOSkKQEAgLTE0OCwxMDcgKzEyMiwx
NDcgQEAgcng6OkRpc3BsYXlJbXBsICpDcmVhdGVEaXNwbGF5RnJvbURldmljZShEZXZpY2UgKmVn
bERldmljZSkKICAgICByZXR1cm4gaW1wbDsKIH0KIAotcng6OkRpc3BsYXlJbXBsICpDcmVhdGVE
aXNwbGF5RnJvbUF0dHJpYnMoY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJNYXApCityeDo6RGlz
cGxheUltcGwgKkNyZWF0ZURpc3BsYXlGcm9tQXR0cmlicyhjb25zdCBBdHRyaWJ1dGVNYXAgJmF0
dHJpYk1hcCwgY29uc3QgRGlzcGxheVN0YXRlICZzdGF0ZSkKIHsKICAgICByeDo6RGlzcGxheUlt
cGwgKmltcGwgPSBudWxscHRyOwogICAgIEVHTEF0dHJpYiBkaXNwbGF5VHlwZSA9CiAgICAgICAg
IGF0dHJpYk1hcC5nZXQoRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUsIEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX0RFRkFVTFRfQU5HTEUpOwogICAgIHN3aXRjaCAoZGlzcGxheVR5cGUpCiAg
ICAgewotICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xFOgor
ICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0RFRkFVTFRfQU5HTEU6CiAjaWYg
ZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNEOSkgfHwgZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNEMTEp
Ci0gICAgICAgIC8vIERlZmF1bHQgdG8gRDNEIGRpc3BsYXlzCi0gICAgICAgIGltcGwgPSBuZXcg
cng6OkRpc3BsYXlEM0QoKTsKKyAgICAgICAgICAgIC8vIERlZmF1bHQgdG8gRDNEIGRpc3BsYXlz
CisgICAgICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5RDNEKHN0YXRlKTsKICNlbGlmIGRl
ZmluZWQoQU5HTEVfVVNFX1gxMSkKLSAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheUdMWCgp
OworICAgICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheUdMWChzdGF0ZSk7CiAjZWxpZiBk
ZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FQUExFKQotICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNw
bGF5Q0dMKCk7CisgICAgICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5Q0dMKHN0YXRlKTsK
ICNlbGlmIGRlZmluZWQoQU5HTEVfVVNFX09aT05FKQotICAgICAgICBpbXBsID0gbmV3IHJ4OjpE
aXNwbGF5T3pvbmUoKTsKKyAgICAgICAgICAgIGltcGwgPSBuZXcgcng6OkRpc3BsYXlPem9uZShz
dGF0ZSk7CiAjZWxpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FORFJPSUQpCi0gICAgICAgIGlt
cGwgPSBuZXcgcng6OkRpc3BsYXlBbmRyb2lkKCk7CisgICAgICAgICAgICBpbXBsID0gbmV3IHJ4
OjpEaXNwbGF5QW5kcm9pZChzdGF0ZSk7CiAjZWxzZQotICAgICAgICAvLyBObyBkaXNwbGF5IGF2
YWlsYWJsZQotICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgLy8gTm8gZGlzcGxh
eSBhdmFpbGFibGUKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAjZW5kaWYKLSAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBicmVhazsKIAotICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9EM0Q5X0FOR0xFOgotICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9E
M0QxMV9BTkdMRToKKyAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FO
R0xFOgorICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFOgog
I2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX0QzRDkpIHx8IGRlZmluZWQoQU5HTEVfRU5BQkxFX0Qz
RDExKQotICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5RDNEKCk7CisgICAgICAgICAgICBp
bXBsID0gbmV3IHJ4OjpEaXNwbGF5RDNEKHN0YXRlKTsKICNlbHNlCi0gICAgICAgIC8vIEEgRDNE
IGRpc3BsYXkgd2FzIHJlcXVlc3RlZCBvbiBhIHBsYXRmb3JtIHRoYXQgZG9lc24ndCBzdXBwb3J0
IGl0Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAvLyBBIEQzRCBkaXNwbGF5
IHdhcyByZXF1ZXN0ZWQgb24gYSBwbGF0Zm9ybSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBpdAorICAg
ICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICNlbmRpZgotICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9B
TkdMRToKKyAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEU6
CiAjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfT1BFTkdMKQogI2lmIGRlZmluZWQoQU5HTEVfUExB
VEZPUk1fV0lORE9XUykKLSAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheVdHTCgpOworICAg
ICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheVdHTChzdGF0ZSk7CiAjZWxpZiBkZWZpbmVk
KEFOR0xFX1VTRV9YMTEpCi0gICAgICAgIGltcGwgPSBuZXcgcng6OkRpc3BsYXlHTFgoKTsKKyAg
ICAgICAgICAgIGltcGwgPSBuZXcgcng6OkRpc3BsYXlHTFgoc3RhdGUpOwogI2VsaWYgZGVmaW5l
ZChBTkdMRV9QTEFURk9STV9BUFBMRSkKLSAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheUNH
TCgpOworICAgICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheUNHTChzdGF0ZSk7CiAjZWxp
ZiBkZWZpbmVkKEFOR0xFX1VTRV9PWk9ORSkKLSAgICAgICAgLy8gVGhpcyBtaWdodCB3b3JrIGJ1
dCBoYXMgbmV2ZXIgYmVlbiB0cmllZCwgc28gZGlzYWxsb3cgZm9yIG5vdy4KLSAgICAgICAgaW1w
bCA9IG51bGxwdHI7CisgICAgICAgICAgICAvLyBUaGlzIG1pZ2h0IHdvcmsgYnV0IGhhcyBuZXZl
ciBiZWVuIHRyaWVkLCBzbyBkaXNhbGxvdyBmb3Igbm93LgorICAgICAgICAgICAgaW1wbCA9IG51
bGxwdHI7CiAjZWxpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FORFJPSUQpCi0gICAgICAgIC8v
IE5vIEdMIHN1cHBvcnQgb24gdGhpcyBwbGF0Zm9ybSwgZmFpbCBkaXNwbGF5IGNyZWF0aW9uLgot
ICAgICAgICBpbXBsID0gbnVsbHB0cjsKKyAgICAgICAgICAgIC8vIE5vIEdMIHN1cHBvcnQgb24g
dGhpcyBwbGF0Zm9ybSwgZmFpbCBkaXNwbGF5IGNyZWF0aW9uLgorICAgICAgICAgICAgaW1wbCA9
IG51bGxwdHI7CiAjZWxzZQogI2Vycm9yIFVuc3VwcG9ydGVkIE9wZW5HTCBwbGF0Zm9ybS4KICNl
bmRpZgogI2Vsc2UKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSNlbmRpZgotICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIC8vIE5vIGRpc3BsYXkgYXZhaWxhYmxlCisgICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOworI2VuZGlmICAvLyBkZWZpbmVkKEFOR0xFX0VOQUJMRV9PUEVOR0wpCisgICAg
ICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09Q
RU5HTEVTX0FOR0xFOgogI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX09QRU5HTCkKLSAgICAgIGNh
c2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEU6CiAjaWYgZGVmaW5lZChB
TkdMRV9QTEFURk9STV9XSU5ET1dTKQotICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5V0dM
KCk7CisgICAgICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5V0dMKHN0YXRlKTsKICNlbGlm
IGRlZmluZWQoQU5HTEVfVVNFX1gxMSkKLSAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheUdM
WCgpOworICAgICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheUdMWChzdGF0ZSk7CiAjZWxp
ZiBkZWZpbmVkKEFOR0xFX1VTRV9PWk9ORSkKLSAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxh
eU96b25lKCk7CisgICAgICAgICAgICBpbXBsID0gbmV3IHJ4OjpEaXNwbGF5T3pvbmUoc3RhdGUp
OwogI2VsaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9BTkRST0lEKQotICAgICAgICBpbXBsID0g
bmV3IHJ4OjpEaXNwbGF5QW5kcm9pZCgpOworICAgICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlz
cGxheUFuZHJvaWQoc3RhdGUpOwogI2Vsc2UKLSAgICAgICAgLy8gTm8gR0xFUyBzdXBwb3J0IG9u
IHRoaXMgcGxhdGZvcm0sIGZhaWwgZGlzcGxheSBjcmVhdGlvbi4KLSAgICAgICAgaW1wbCA9IG51
bGxwdHI7Ci0jZW5kaWYKLSAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvLyBObyBHTEVTIHN1
cHBvcnQgb24gdGhpcyBwbGF0Zm9ybSwgZmFpbCBkaXNwbGF5IGNyZWF0aW9uLgorICAgICAgICAg
ICAgaW1wbCA9IG51bGxwdHI7CiAjZW5kaWYKKyNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9FTkFC
TEVfT1BFTkdMKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9WVUxLQU5fQU5HTEU6CisjaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfVlVM
S0FOKQorICAgICAgICAgICAgaW1wbCA9IG5ldyByeDo6RGlzcGxheVZrKHN0YXRlKTsKKyNlbHNl
CisgICAgICAgICAgICAvLyBObyBkaXNwbGF5IGF2YWlsYWJsZQorICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyNlbmRpZiAgLy8gZGVmaW5lZChBTkdMRV9FTkFCTEVfVlVMS0FOKQorICAgICAg
ICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9OVUxM
X0FOR0xFOgogI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX05VTEwpCi0gICAgICBjYXNlIEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX05VTExfQU5HTEU6Ci0gICAgICAgICAgaW1wbCA9IG5ldyByeDo6
RGlzcGxheU5VTEwoKTsKLSAgICAgICAgICBicmVhazsKLSNlbmRpZgorICAgICAgICAgICAgaW1w
bCA9IG5ldyByeDo6RGlzcGxheU5VTEwoc3RhdGUpOworI2Vsc2UKKyAgICAgICAgICAgIC8vIE5v
IGRpc3BsYXkgYXZhaWxhYmxlCisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworI2VuZGlmICAv
LyBkZWZpbmVkKEFOR0xFX0VOQUJMRV9OVUxMKQorICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFr
OwogICAgIH0KIAogICAgIHJldHVybiBpbXBsOwogfQogCit2b2lkIERpc3BsYXlfbG9nRXJyb3Io
YW5nbGU6OlBsYXRmb3JtTWV0aG9kcyAqcGxhdGZvcm0sIGNvbnN0IGNoYXIgKmVycm9yTWVzc2Fn
ZSkKK3sKKyAgICBnbDo6VHJhY2UoZ2w6OkxPR19FUlIsIGVycm9yTWVzc2FnZSk7CiB9CiAKLURp
c3BsYXkgKkRpc3BsYXk6OkdldERpc3BsYXlGcm9tQXR0cmlicyh2b2lkICpuYXRpdmVfZGlzcGxh
eSwgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJNYXApCit2b2lkIERpc3BsYXlfbG9nV2Fybmlu
ZyhhbmdsZTo6UGxhdGZvcm1NZXRob2RzICpwbGF0Zm9ybSwgY29uc3QgY2hhciAqd2FybmluZ01l
c3NhZ2UpCiB7Ci0gICAgLy8gSW5pdGlhbGl6ZSB0aGUgZ2xvYmFsIHBsYXRmb3JtIGlmIG5vdCBh
bHJlYWR5Ci0gICAgSW5pdERlZmF1bHRQbGF0Zm9ybUltcGwoKTsKKyAgICBnbDo6VHJhY2UoZ2w6
OkxPR19XQVJOLCB3YXJuaW5nTWVzc2FnZSk7Cit9CiAKLSAgICBEaXNwbGF5ICpkaXNwbGF5ID0g
bnVsbHB0cjsKK3ZvaWQgRGlzcGxheV9sb2dJbmZvKGFuZ2xlOjpQbGF0Zm9ybU1ldGhvZHMgKnBs
YXRmb3JtLCBjb25zdCBjaGFyICppbmZvTWVzc2FnZSkKK3sKKyAgICAvLyBVbmNvbW1lbnQgdG8g
Z2V0IGluZm8gc3BhbQorICAgIC8vIGdsOjpUcmFjZShnbDo6TE9HX1dBUk4sIGluZm9NZXNzYWdl
KTsKK30KKwordm9pZCBBTkdMRVNldERlZmF1bHREaXNwbGF5UGxhdGZvcm0oYW5nbGU6OkVHTERp
c3BsYXlUeXBlIGRpc3BsYXkpCit7CisgICAgYW5nbGU6OlBsYXRmb3JtTWV0aG9kcyAqcGxhdGZv
cm1NZXRob2RzID0gQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKTsKKyAgICBpZiAocGxhdGZvcm1NZXRo
b2RzLT5sb2dFcnJvciAhPSBhbmdsZTo6QU5HTEVfbG9nRXJyb3IpCisgICAgeworICAgICAgICAv
LyBEb24ndCByZXNldCBwcmUtc2V0IFBsYXRmb3JtIHRvIERlZmF1bHQKKyAgICAgICAgcmV0dXJu
OworICAgIH0KIAotICAgIEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRpc3BsYXlJZCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8RUdMTmF0aXZlRGlzcGxheVR5cGU+KG5hdGl2ZV9kaXNwbGF5KTsKKyAgICBBTkdM
RVJlc2V0RGlzcGxheVBsYXRmb3JtKGRpc3BsYXkpOworICAgIHBsYXRmb3JtTWV0aG9kcy0+bG9n
RXJyb3IgICA9IERpc3BsYXlfbG9nRXJyb3I7CisgICAgcGxhdGZvcm1NZXRob2RzLT5sb2dXYXJu
aW5nID0gRGlzcGxheV9sb2dXYXJuaW5nOworICAgIHBsYXRmb3JtTWV0aG9kcy0+bG9nSW5mbyAg
ICA9IERpc3BsYXlfbG9nSW5mbzsKK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitE
aXNwbGF5ICpEaXNwbGF5OjpHZXREaXNwbGF5RnJvbU5hdGl2ZURpc3BsYXkoRUdMTmF0aXZlRGlz
cGxheVR5cGUgbmF0aXZlRGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYk1hcCkKK3sKKyAgICBEaXNw
bGF5ICpkaXNwbGF5ID0gbnVsbHB0cjsKIAogICAgIEFOR0xFUGxhdGZvcm1EaXNwbGF5TWFwICpk
aXNwbGF5cyAgICAgICAgICAgID0gR2V0QU5HTEVQbGF0Zm9ybURpc3BsYXlNYXAoKTsKLSAgICBB
TkdMRVBsYXRmb3JtRGlzcGxheU1hcDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IGRpc3BsYXlzLT5m
aW5kKGRpc3BsYXlJZCk7CisgICAgQU5HTEVQbGF0Zm9ybURpc3BsYXlNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ZXIgPSBkaXNwbGF5cy0+ZmluZChuYXRpdmVEaXNwbGF5KTsKICAgICBpZiAoaXRlciAh
PSBkaXNwbGF5cy0+ZW5kKCkpCiAgICAgewogICAgICAgICBkaXNwbGF5ID0gaXRlci0+c2Vjb25k
OwpAQCAtMjU3LDE5ICsyNzEsMTkgQEAgRGlzcGxheSAqRGlzcGxheTo6R2V0RGlzcGxheUZyb21B
dHRyaWJzKHZvaWQgKm5hdGl2ZV9kaXNwbGF5LCBjb25zdCBBdHRyaWJ1dGVNYXAKICAgICBpZiAo
ZGlzcGxheSA9PSBudWxscHRyKQogICAgIHsKICAgICAgICAgLy8gVmFsaWRhdGUgdGhlIG5hdGl2
ZSBkaXNwbGF5Ci0gICAgICAgIGlmICghRGlzcGxheTo6aXNWYWxpZE5hdGl2ZURpc3BsYXkoZGlz
cGxheUlkKSkKKyAgICAgICAgaWYgKCFEaXNwbGF5Ojppc1ZhbGlkTmF0aXZlRGlzcGxheShuYXRp
dmVEaXNwbGF5KSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAg
IH0KIAotICAgICAgICBkaXNwbGF5ID0gbmV3IERpc3BsYXkoRUdMX1BMQVRGT1JNX0FOR0xFX0FO
R0xFLCBkaXNwbGF5SWQsIG51bGxwdHIpOwotICAgICAgICBkaXNwbGF5cy0+aW5zZXJ0KHN0ZDo6
bWFrZV9wYWlyKGRpc3BsYXlJZCwgZGlzcGxheSkpOworICAgICAgICBkaXNwbGF5ID0gbmV3IERp
c3BsYXkoRUdMX1BMQVRGT1JNX0FOR0xFX0FOR0xFLCBuYXRpdmVEaXNwbGF5LCBudWxscHRyKTsK
KyAgICAgICAgZGlzcGxheXMtPmluc2VydChzdGQ6Om1ha2VfcGFpcihuYXRpdmVEaXNwbGF5LCBk
aXNwbGF5KSk7CiAgICAgfQogCiAgICAgLy8gQXBwbHkgbmV3IGF0dHJpYnV0ZXMgaWYgdGhlIGRp
c3BsYXkgaXMgbm90IGluaXRpYWxpemVkIHlldC4KICAgICBpZiAoIWRpc3BsYXktPmlzSW5pdGlh
bGl6ZWQoKSkKICAgICB7Ci0gICAgICAgIHJ4OjpEaXNwbGF5SW1wbCAqaW1wbCA9IENyZWF0ZURp
c3BsYXlGcm9tQXR0cmlicyhhdHRyaWJNYXApOworICAgICAgICByeDo6RGlzcGxheUltcGwgKmlt
cGwgPSBDcmVhdGVEaXNwbGF5RnJvbUF0dHJpYnMoYXR0cmliTWFwLCBkaXNwbGF5LT5nZXRTdGF0
ZSgpKTsKICAgICAgICAgaWYgKGltcGwgPT0gbnVsbHB0cikKICAgICAgICAgewogICAgICAgICAg
ICAgLy8gTm8gdmFsaWQgZGlzcGxheSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlc2UgYXR0cmlidXRl
cwpAQCAtMjgyLDE1ICsyOTYsMTEgQEAgRGlzcGxheSAqRGlzcGxheTo6R2V0RGlzcGxheUZyb21B
dHRyaWJzKHZvaWQgKm5hdGl2ZV9kaXNwbGF5LCBjb25zdCBBdHRyaWJ1dGVNYXAKICAgICByZXR1
cm4gZGlzcGxheTsKIH0KIAotRGlzcGxheSAqRGlzcGxheTo6R2V0RGlzcGxheUZyb21EZXZpY2Uo
dm9pZCAqbmF0aXZlX2Rpc3BsYXkpCitEaXNwbGF5ICpEaXNwbGF5OjpHZXREaXNwbGF5RnJvbURl
dmljZShEZXZpY2UgKmRldmljZSkKIHsKLSAgICAvLyBJbml0aWFsaXplIHRoZSBnbG9iYWwgcGxh
dGZvcm0gaWYgbm90IGFscmVhZHkKLSAgICBJbml0RGVmYXVsdFBsYXRmb3JtSW1wbCgpOwotCiAg
ICAgRGlzcGxheSAqZGlzcGxheSA9IG51bGxwdHI7CiAKLSAgICBEZXZpY2UgKmVnbERldmljZSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8RGV2aWNlICo+KG5hdGl2ZV9kaXNwbGF5KTsKLSAgICBBU1NFUlQo
RGV2aWNlOjpJc1ZhbGlkRGV2aWNlKGVnbERldmljZSkpOworICAgIEFTU0VSVChEZXZpY2U6Oklz
VmFsaWREZXZpY2UoZGV2aWNlKSk7CiAKICAgICBBTkdMRVBsYXRmb3JtRGlzcGxheU1hcCAqYW5n
bGVQbGF0Zm9ybURpc3BsYXlzICAgPSBHZXRBTkdMRVBsYXRmb3JtRGlzcGxheU1hcCgpOwogICAg
IERldmljZVBsYXRmb3JtRGlzcGxheU1hcCAqZGV2aWNlUGxhdGZvcm1EaXNwbGF5cyA9IEdldERl
dmljZVBsYXRmb3JtRGlzcGxheU1hcCgpOwpAQCAtMjk5LDcgKzMwOSw3IEBAIERpc3BsYXkgKkRp
c3BsYXk6OkdldERpc3BsYXlGcm9tRGV2aWNlKHZvaWQgKm5hdGl2ZV9kaXNwbGF5KQogICAgIGZv
ciAoYXV0byAmZGlzcGxheU1hcEVudHJ5IDogKmFuZ2xlUGxhdGZvcm1EaXNwbGF5cykKICAgICB7
CiAgICAgICAgIGVnbDo6RGlzcGxheSAqaXRlckRpc3BsYXkgPSBkaXNwbGF5TWFwRW50cnkuc2Vj
b25kOwotICAgICAgICBpZiAoaXRlckRpc3BsYXktPmdldERldmljZSgpID09IGVnbERldmljZSkK
KyAgICAgICAgaWYgKGl0ZXJEaXNwbGF5LT5nZXREZXZpY2UoKSA9PSBkZXZpY2UpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGRpc3BsYXkgPSBpdGVyRGlzcGxheTsKICAgICAgICAgfQpAQCAtMzA4
LDcgKzMxOCw3IEBAIERpc3BsYXkgKkRpc3BsYXk6OkdldERpc3BsYXlGcm9tRGV2aWNlKHZvaWQg
Km5hdGl2ZV9kaXNwbGF5KQogICAgIGlmIChkaXNwbGF5ID09IG51bGxwdHIpCiAgICAgewogICAg
ICAgICAvLyBTZWUgaWYgdGhlIGVnbERldmljZSBpcyBpbiB1c2UgYnkgYSBEaXNwbGF5IGNyZWF0
ZWQgdXNpbmcgdGhlIERFVklDRSBwbGF0Zm9ybQotICAgICAgICBEZXZpY2VQbGF0Zm9ybURpc3Bs
YXlNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBkZXZpY2VQbGF0Zm9ybURpc3BsYXlzLT5maW5k
KGVnbERldmljZSk7CisgICAgICAgIERldmljZVBsYXRmb3JtRGlzcGxheU1hcDo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IGRldmljZVBsYXRmb3JtRGlzcGxheXMtPmZpbmQoZGV2aWNlKTsKICAgICAg
ICAgaWYgKGl0ZXIgIT0gZGV2aWNlUGxhdGZvcm1EaXNwbGF5cy0+ZW5kKCkpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGRpc3BsYXkgPSBpdGVyLT5zZWNvbmQ7CkBAIC0zMTgsMTQgKzMyOCwxNCBA
QCBEaXNwbGF5ICpEaXNwbGF5OjpHZXREaXNwbGF5RnJvbURldmljZSh2b2lkICpuYXRpdmVfZGlz
cGxheSkKICAgICBpZiAoZGlzcGxheSA9PSBudWxscHRyKQogICAgIHsKICAgICAgICAgLy8gT3Ro
ZXJ3aXNlIGNyZWF0ZSBhIG5ldyBEaXNwbGF5Ci0gICAgICAgIGRpc3BsYXkgPSBuZXcgRGlzcGxh
eShFR0xfUExBVEZPUk1fREVWSUNFX0VYVCwgMCwgZWdsRGV2aWNlKTsKLSAgICAgICAgZGV2aWNl
UGxhdGZvcm1EaXNwbGF5cy0+aW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKGVnbERldmljZSwgZGlzcGxh
eSkpOworICAgICAgICBkaXNwbGF5ID0gbmV3IERpc3BsYXkoRUdMX1BMQVRGT1JNX0RFVklDRV9F
WFQsIDAsIGRldmljZSk7CisgICAgICAgIGRldmljZVBsYXRmb3JtRGlzcGxheXMtPmluc2VydChz
dGQ6Om1ha2VfcGFpcihkZXZpY2UsIGRpc3BsYXkpKTsKICAgICB9CiAKICAgICAvLyBBcHBseSBu
ZXcgYXR0cmlidXRlcyBpZiB0aGUgZGlzcGxheSBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LgogICAg
IGlmICghZGlzcGxheS0+aXNJbml0aWFsaXplZCgpKQogICAgIHsKLSAgICAgICAgcng6OkRpc3Bs
YXlJbXBsICppbXBsID0gQ3JlYXRlRGlzcGxheUZyb21EZXZpY2UoZWdsRGV2aWNlKTsKKyAgICAg
ICAgcng6OkRpc3BsYXlJbXBsICppbXBsID0gQ3JlYXRlRGlzcGxheUZyb21EZXZpY2UoZGV2aWNl
LCBkaXNwbGF5LT5nZXRTdGF0ZSgpKTsKICAgICAgICAgZGlzcGxheS0+c2V0QXR0cmlidXRlcyhp
bXBsLCBlZ2w6OkF0dHJpYnV0ZU1hcCgpKTsKICAgICB9CiAKQEAgLTM0Niw3ICszNTYsOSBAQCBE
aXNwbGF5OjpEaXNwbGF5KEVHTGVudW0gcGxhdGZvcm0sIEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRp
c3BsYXlJZCwgRGV2aWNlICplZ2xEZQogICAgICAgbURpc3BsYXlFeHRlbnNpb25TdHJpbmcoKSwK
ICAgICAgIG1WZW5kb3JTdHJpbmcoKSwKICAgICAgIG1EZXZpY2UoZWdsRGV2aWNlKSwKLSAgICAg
IG1QbGF0Zm9ybShwbGF0Zm9ybSkKKyAgICAgIG1QbGF0Zm9ybShwbGF0Zm9ybSksCisgICAgICBt
VGV4dHVyZU1hbmFnZXIobnVsbHB0ciksCisgICAgICBtR2xvYmFsVGV4dHVyZVNoYXJlR3JvdXBV
c2VycygwKQogewogfQogCkBAIC0zOTQsOCArNDA2LDEwIEBAIHZvaWQgRGlzcGxheTo6c2V0QXR0
cmlidXRlcyhyeDo6RGlzcGxheUltcGwgKmltcGwsIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmli
TWFwCiAKIEVycm9yIERpc3BsYXk6OmluaXRpYWxpemUoKQogewotICAgIC8vIFJlLWluaXRpYWxp
emUgZGVmYXVsdCBwbGF0Zm9ybSBpZiBpdCdzIG5lZWRlZAotICAgIEluaXREZWZhdWx0UGxhdGZv
cm1JbXBsKCk7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogU3RvcmUgUGxhdGZvcm0gaW4gRGlzcGxh
eSBhbmQgaW5pdCBoZXJlLgorICAgIEFOR0xFU2V0RGVmYXVsdERpc3BsYXlQbGF0Zm9ybSh0aGlz
KTsKKworICAgIGdsOjpJbml0aWFsaXplRGVidWdBbm5vdGF0aW9ucygmbUFubm90YXRvcik7CiAK
ICAgICBTQ09QRURfQU5HTEVfSElTVE9HUkFNX1RJTUVSKCJHUFUuQU5HTEUuRGlzcGxheUluaXRp
YWxpemVNUyIpOwogICAgIFRSQUNFX0VWRU5UMCgiZ3B1LmFuZ2xlIiwgImVnbDo6RGlzcGxheTo6
aW5pdGlhbGl6ZSIpOwpAQCAtNDExLDEwICs0MjUsNyBAQCBFcnJvciBEaXNwbGF5Ojppbml0aWFs
aXplKCkKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKICAgICAgICAgLy8gTG9nIGV4
dGVuZGVkIGVycm9yIG1lc3NhZ2UgaGVyZQotICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBlcnJv
clN0cmVhbTsKLSAgICAgICAgZXJyb3JTdHJlYW0gPDwgIkFOR0xFIERpc3BsYXk6OmluaXRpYWxp
emUgZXJyb3IgIiA8PCBlcnJvci5nZXRJRCgpIDw8ICI6ICIKLSAgICAgICAgICAgICAgICAgICAg
PDwgZXJyb3IuZ2V0TWVzc2FnZSgpOwotICAgICAgICBBTkdMRVBsYXRmb3JtQ3VycmVudCgpLT5s
b2dFcnJvcihlcnJvclN0cmVhbS5zdHIoKS5jX3N0cigpKTsKKyAgICAgICAgRVJSKCkgPDwgIkFO
R0xFIERpc3BsYXk6OmluaXRpYWxpemUgZXJyb3IgIiA8PCBlcnJvci5nZXRJRCgpIDw8ICI6ICIg
PDwgZXJyb3IuZ2V0TWVzc2FnZSgpOwogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQogCkBA
IC00NjUsNiArNDc2LDkgQEAgdm9pZCBEaXNwbGF5Ojp0ZXJtaW5hdGUoKQogICAgICAgICBkZXN0
cm95Q29udGV4dCgqbUNvbnRleHRTZXQuYmVnaW4oKSk7CiAgICAgfQogCisgICAgLy8gVGhlIGds
b2JhbCB0ZXh0dXJlIG1hbmFnZXIgc2hvdWxkIGJlIGRlbGV0ZWQgd2l0aCB0aGUgbGFzdCBjb250
ZXh0IHRoYXQgdXNlcyBpdC4KKyAgICBBU1NFUlQobUdsb2JhbFRleHR1cmVTaGFyZUdyb3VwVXNl
cnMgPT0gMCAmJiBtVGV4dHVyZU1hbmFnZXIgPT0gbnVsbHB0cik7CisKICAgICB3aGlsZSAoIW1J
bWFnZVNldC5lbXB0eSgpKQogICAgIHsKICAgICAgICAgZGVzdHJveUltYWdlKCptSW1hZ2VTZXQu
YmVnaW4oKSk7CkBAIC00NzUsOSArNDg5LDkgQEAgdm9pZCBEaXNwbGF5Ojp0ZXJtaW5hdGUoKQog
ICAgICAgICBkZXN0cm95U3RyZWFtKCptU3RyZWFtU2V0LmJlZ2luKCkpOwogICAgIH0KIAotICAg
IHdoaWxlICghbUltcGxlbWVudGF0aW9uLT5nZXRTdXJmYWNlU2V0KCkuZW1wdHkoKSkKKyAgICB3
aGlsZSAoIW1TdGF0ZS5zdXJmYWNlU2V0LmVtcHR5KCkpCiAgICAgewotICAgICAgICBkZXN0cm95
U3VyZmFjZSgqbUltcGxlbWVudGF0aW9uLT5nZXRTdXJmYWNlU2V0KCkuYmVnaW4oKSk7CisgICAg
ICAgIGRlc3Ryb3lTdXJmYWNlKCptU3RhdGUuc3VyZmFjZVNldC5iZWdpbigpKTsKICAgICB9CiAK
ICAgICBtQ29uZmlnU2V0LmNsZWFyKCk7CkBAIC00OTEsOSArNTA1LDE0IEBAIHZvaWQgRGlzcGxh
eTo6dGVybWluYXRlKCkKIAogICAgIG1JbXBsZW1lbnRhdGlvbi0+dGVybWluYXRlKCk7CiAKKyAg
ICBtRGV2aWNlTG9zdCA9IGZhbHNlOworCiAgICAgbUluaXRpYWxpemVkID0gZmFsc2U7CiAKLSAg
ICAvLyBOZXZlciBkZS1pbml0IGRlZmF1bHQgcGxhdGZvcm0uLiB0ZXJtaW5hdGUgaXMgbm90IHRo
YXQgZmluYWwuCisgICAgZ2w6OlVuaW5pdGlhbGl6ZURlYnVnQW5ub3RhdGlvbnMoKTsKKworICAg
IC8vIFRPRE8oam1hZGlsbCk6IFN0b3JlIFBsYXRmb3JtIGluIERpc3BsYXkgYW5kIGRlaW5pdCBo
ZXJlLgorICAgIEFOR0xFUmVzZXREaXNwbGF5UGxhdGZvcm0odGhpcyk7CiB9CiAKIHN0ZDo6dmVj
dG9yPGNvbnN0IENvbmZpZyo+IERpc3BsYXk6OmdldENvbmZpZ3MoY29uc3QgZWdsOjpBdHRyaWJ1
dGVNYXAgJmF0dHJpYnMpIGNvbnN0CkBAIC01MDEsNTkgKzUyMCw2IEBAIHN0ZDo6dmVjdG9yPGNv
bnN0IENvbmZpZyo+IERpc3BsYXk6OmdldENvbmZpZ3MoY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAg
JmF0dHJpYnMpCiAgICAgcmV0dXJuIG1Db25maWdTZXQuZmlsdGVyKGF0dHJpYnMpOwogfQogCi1i
b29sIERpc3BsYXk6OmdldENvbmZpZ0F0dHJpYihjb25zdCBDb25maWcgKmNvbmZpZ3VyYXRpb24s
IEVHTGludCBhdHRyaWJ1dGUsIEVHTGludCAqdmFsdWUpCi17Ci0gICAgc3dpdGNoIChhdHRyaWJ1
dGUpCi0gICAgewotICAgICAgY2FzZSBFR0xfQlVGRkVSX1NJWkU6ICAgICAgICAgICAgICAgKnZh
bHVlID0gY29uZmlndXJhdGlvbi0+YnVmZmVyU2l6ZTsgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEVHTF9BTFBIQV9TSVpFOiAgICAgICAgICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0
aW9uLT5hbHBoYVNpemU7ICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRUdMX0JMVUVf
U0laRTogICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPmJsdWVTaXplOyAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfR1JFRU5fU0laRTogICAgICAgICAg
ICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+Z3JlZW5TaXplOyAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICBjYXNlIEVHTF9SRURfU0laRTogICAgICAgICAgICAgICAgICAqdmFsdWUgPSBj
b25maWd1cmF0aW9uLT5yZWRTaXplOyAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ug
RUdMX0RFUFRIX1NJWkU6ICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPmRl
cHRoU2l6ZTsgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfU1RFTkNJTF9TSVpF
OiAgICAgICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+c3RlbmNpbFNpemU7ICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVHTF9DT05GSUdfQ0FWRUFUOiAgICAgICAgICAgICAq
dmFsdWUgPSBjb25maWd1cmF0aW9uLT5jb25maWdDYXZlYXQ7ICAgICAgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgRUdMX0NPTkZJR19JRDogICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3Vy
YXRpb24tPmNvbmZpZ0lEOyAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfTEVW
RUw6ICAgICAgICAgICAgICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bGV2ZWw7ICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVHTF9OQVRJVkVfUkVOREVSQUJMRTog
ICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5uYXRpdmVSZW5kZXJhYmxlOyAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgRUdMX05BVElWRV9WSVNVQUxfSUQ6ICAgICAgICAgICp2YWx1ZSA9
IGNvbmZpZ3VyYXRpb24tPm5hdGl2ZVZpc3VhbElEOyAgICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBFR0xfTkFUSVZFX1ZJU1VBTF9UWVBFOiAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+
bmF0aXZlVmlzdWFsVHlwZTsgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVHTF9TQU1QTEVTOiAg
ICAgICAgICAgICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5zYW1wbGVzOyAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRUdMX1NBTVBMRV9CVUZGRVJTOiAgICAgICAgICAg
ICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPnNhbXBsZUJ1ZmZlcnM7ICAgICAgICAgIGJyZWFrOwot
ICAgICAgY2FzZSBFR0xfU1VSRkFDRV9UWVBFOiAgICAgICAgICAgICAgKnZhbHVlID0gY29uZmln
dXJhdGlvbi0+c3VyZmFjZVR5cGU7ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVHTF9U
UkFOU1BBUkVOVF9UWVBFOiAgICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT50cmFuc3Bh
cmVudFR5cGU7ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRUdMX1RSQU5TUEFSRU5UX0JMVUVf
VkFMVUU6ICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPnRyYW5zcGFyZW50Qmx1ZVZhbHVlOyAg
IGJyZWFrOwotICAgICAgY2FzZSBFR0xfVFJBTlNQQVJFTlRfR1JFRU5fVkFMVUU6ICAgKnZhbHVl
ID0gY29uZmlndXJhdGlvbi0+dHJhbnNwYXJlbnRHcmVlblZhbHVlOyAgYnJlYWs7Ci0gICAgICBj
YXNlIEVHTF9UUkFOU1BBUkVOVF9SRURfVkFMVUU6ICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9u
LT50cmFuc3BhcmVudFJlZFZhbHVlOyAgICBicmVhazsKLSAgICAgIGNhc2UgRUdMX0JJTkRfVE9f
VEVYVFVSRV9SR0I6ICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPmJpbmRUb1RleHR1cmVS
R0I7ICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfQklORF9UT19URVhUVVJFX1JHQkE6ICAg
ICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+YmluZFRvVGV4dHVyZVJHQkE7ICAgICAgYnJlYWs7
Ci0gICAgICBjYXNlIEVHTF9NSU5fU1dBUF9JTlRFUlZBTDogICAgICAgICAqdmFsdWUgPSBjb25m
aWd1cmF0aW9uLT5taW5Td2FwSW50ZXJ2YWw7ICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRUdM
X01BWF9TV0FQX0lOVEVSVkFMOiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1heFN3
YXBJbnRlcnZhbDsgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfTFVNSU5BTkNFX1NJWkU6
ICAgICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bHVtaW5hbmNlU2l6ZTsgICAgICAg
ICAgYnJlYWs7Ci0gICAgICBjYXNlIEVHTF9BTFBIQV9NQVNLX1NJWkU6ICAgICAgICAgICAqdmFs
dWUgPSBjb25maWd1cmF0aW9uLT5hbHBoYU1hc2tTaXplOyAgICAgICAgICBicmVhazsKLSAgICAg
IGNhc2UgRUdMX0NPTE9SX0JVRkZFUl9UWVBFOiAgICAgICAgICp2YWx1ZSA9IGNvbmZpZ3VyYXRp
b24tPmNvbG9yQnVmZmVyVHlwZTsgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfUkVOREVS
QUJMRV9UWVBFOiAgICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+cmVuZGVyYWJsZVR5
cGU7ICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVHTF9NQVRDSF9OQVRJVkVfUElYTUFQOiAg
ICAgICAqdmFsdWUgPSBmYWxzZTsgVU5JTVBMRU1FTlRFRCgpOyAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgRUdMX0NPTkZPUk1BTlQ6ICAgICAgICAgICAgICAgICp2YWx1ZSA9IGNv
bmZpZ3VyYXRpb24tPmNvbmZvcm1hbnQ7ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBF
R0xfTUFYX1BCVUZGRVJfV0lEVEg6ICAgICAgICAgKnZhbHVlID0gY29uZmlndXJhdGlvbi0+bWF4
UEJ1ZmZlcldpZHRoOyAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVHTF9NQVhfUEJVRkZFUl9I
RUlHSFQ6ICAgICAgICAqdmFsdWUgPSBjb25maWd1cmF0aW9uLT5tYXhQQnVmZmVySGVpZ2h0OyAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgRUdMX01BWF9QQlVGRkVSX1BJWEVMUzogICAgICAgICp2
YWx1ZSA9IGNvbmZpZ3VyYXRpb24tPm1heFBCdWZmZXJQaXhlbHM7ICAgICAgIGJyZWFrOwotCi0g
ICAgICBjYXNlIEVHTF9PUFRJTUFMX1NVUkZBQ0VfT1JJRU5UQVRJT05fQU5HTEU6Ci0gICAgICAg
ICAgaWYgKCFnZXRFeHRlbnNpb25zKCkuc3VyZmFjZU9yaWVudGF0aW9uKQotICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLSAgICAgICAgICAqdmFs
dWUgPSBjb25maWd1cmF0aW9uLT5vcHRpbWFsT3JpZW50YXRpb247Ci0gICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQogRXJyb3IgRGlzcGxheTo6Y3JlYXRlV2luZG93U3VyZmFjZShjb25z
dCBDb25maWcgKmNvbmZpZ3VyYXRpb24sIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBjb25z
dCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFN1cmZhY2UgKipvdXRTdXJmYWNlKQogewpAQCAtNTY0LDExICs1MzAsMTEgQEAgRXJyb3Ig
RGlzcGxheTo6Y3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBDb25maWcgKmNvbmZpZ3VyYXRpb24s
IEVHTE5hdGl2ZVdpbmRvd1QKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTdXJmYWNlPiBzdXJmYWNl
KAogICAgICAgICBuZXcgV2luZG93U3VyZmFjZShtSW1wbGVtZW50YXRpb24sIGNvbmZpZ3VyYXRp
b24sIHdpbmRvdywgYXR0cmlicykpOwotICAgIEFOR0xFX1RSWShzdXJmYWNlLT5pbml0aWFsaXpl
KCkpOworICAgIEFOR0xFX1RSWShzdXJmYWNlLT5pbml0aWFsaXplKCp0aGlzKSk7CiAKICAgICBB
U1NFUlQob3V0U3VyZmFjZSAhPSBudWxscHRyKTsKICAgICAqb3V0U3VyZmFjZSA9IHN1cmZhY2Uu
cmVsZWFzZSgpOwotICAgIG1JbXBsZW1lbnRhdGlvbi0+Z2V0U3VyZmFjZVNldCgpLmluc2VydCgq
b3V0U3VyZmFjZSk7CisgICAgbVN0YXRlLnN1cmZhY2VTZXQuaW5zZXJ0KCpvdXRTdXJmYWNlKTsK
IAogICAgIFdpbmRvd1N1cmZhY2VNYXAgKndpbmRvd1N1cmZhY2VzID0gR2V0V2luZG93U3VyZmFj
ZXMoKTsKICAgICBBU1NFUlQod2luZG93U3VyZmFjZXMgJiYgd2luZG93U3VyZmFjZXMtPmZpbmQo
d2luZG93KSA9PSB3aW5kb3dTdXJmYWNlcy0+ZW5kKCkpOwpAQCAtNTg3LDE3ICs1NTMsMjAgQEAg
RXJyb3IgRGlzcGxheTo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgQ29uZmlnICpjb25maWd1
cmF0aW9uLCBjb25zdCBBdHRyaWJ1dGUKICAgICB9CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3Vy
ZmFjZT4gc3VyZmFjZShuZXcgUGJ1ZmZlclN1cmZhY2UobUltcGxlbWVudGF0aW9uLCBjb25maWd1
cmF0aW9uLCBhdHRyaWJzKSk7Ci0gICAgQU5HTEVfVFJZKHN1cmZhY2UtPmluaXRpYWxpemUoKSk7
CisgICAgQU5HTEVfVFJZKHN1cmZhY2UtPmluaXRpYWxpemUoKnRoaXMpKTsKIAogICAgIEFTU0VS
VChvdXRTdXJmYWNlICE9IG51bGxwdHIpOwogICAgICpvdXRTdXJmYWNlID0gc3VyZmFjZS5yZWxl
YXNlKCk7Ci0gICAgbUltcGxlbWVudGF0aW9uLT5nZXRTdXJmYWNlU2V0KCkuaW5zZXJ0KCpvdXRT
dXJmYWNlKTsKKyAgICBtU3RhdGUuc3VyZmFjZVNldC5pbnNlcnQoKm91dFN1cmZhY2UpOwogCiAg
ICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCi1FcnJvciBEaXNwbGF5Ojpj
cmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBDb25maWcgKmNvbmZpZ3VyYXRpb24s
IEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlicywgU3VyZmFjZSAq
Km91dFN1cmZhY2UpCitFcnJvciBEaXNwbGF5OjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZl
cihjb25zdCBDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmli
dXRlTWFwICZhdHRyaWJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU3VyZmFjZSAqKm91dFN1cmZhY2UpCiB7CiAgICAgQVNTRVJUKGlzSW5pdGlhbGl6ZWQo
KSk7CiAKQEAgLTYwNywxMiArNTc2LDEyIEBAIEVycm9yIERpc3BsYXk6OmNyZWF0ZVBidWZmZXJG
cm9tQ2xpZW50QnVmZmVyKGNvbnN0IENvbmZpZyAqY29uZmlndXJhdGlvbiwgRUdMQ2xpCiAgICAg
fQogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFN1cmZhY2U+IHN1cmZhY2UoCi0gICAgICAgIG5ldyBQ
YnVmZmVyU3VyZmFjZShtSW1wbGVtZW50YXRpb24sIGNvbmZpZ3VyYXRpb24sIHNoYXJlSGFuZGxl
LCBhdHRyaWJzKSk7Ci0gICAgQU5HTEVfVFJZKHN1cmZhY2UtPmluaXRpYWxpemUoKSk7CisgICAg
ICAgIG5ldyBQYnVmZmVyU3VyZmFjZShtSW1wbGVtZW50YXRpb24sIGNvbmZpZ3VyYXRpb24sIGJ1
ZnR5cGUsIGNsaWVudEJ1ZmZlciwgYXR0cmlicykpOworICAgIEFOR0xFX1RSWShzdXJmYWNlLT5p
bml0aWFsaXplKCp0aGlzKSk7CiAKICAgICBBU1NFUlQob3V0U3VyZmFjZSAhPSBudWxscHRyKTsK
ICAgICAqb3V0U3VyZmFjZSA9IHN1cmZhY2UucmVsZWFzZSgpOwotICAgIG1JbXBsZW1lbnRhdGlv
bi0+Z2V0U3VyZmFjZVNldCgpLmluc2VydCgqb3V0U3VyZmFjZSk7CisgICAgbVN0YXRlLnN1cmZh
Y2VTZXQuaW5zZXJ0KCpvdXRTdXJmYWNlKTsKIAogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9T
VUNDRVNTKTsKIH0KQEAgLTYyOSwxMSArNTk4LDExIEBAIEVycm9yIERpc3BsYXk6OmNyZWF0ZVBp
eG1hcFN1cmZhY2UoY29uc3QgQ29uZmlnICpjb25maWd1cmF0aW9uLCBOYXRpdmVQaXhtYXBUeXBl
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U3VyZmFjZT4gc3VyZmFjZSgKICAgICAgICAgbmV3IFBp
eG1hcFN1cmZhY2UobUltcGxlbWVudGF0aW9uLCBjb25maWd1cmF0aW9uLCBuYXRpdmVQaXhtYXAs
IGF0dHJpYnMpKTsKLSAgICBBTkdMRV9UUlkoc3VyZmFjZS0+aW5pdGlhbGl6ZSgpKTsKKyAgICBB
TkdMRV9UUlkoc3VyZmFjZS0+aW5pdGlhbGl6ZSgqdGhpcykpOwogCiAgICAgQVNTRVJUKG91dFN1
cmZhY2UgIT0gbnVsbHB0cik7CiAgICAgKm91dFN1cmZhY2UgPSBzdXJmYWNlLnJlbGVhc2UoKTsK
LSAgICBtSW1wbGVtZW50YXRpb24tPmdldFN1cmZhY2VTZXQoKS5pbnNlcnQoKm91dFN1cmZhY2Up
OworICAgIG1TdGF0ZS5zdXJmYWNlU2V0Lmluc2VydCgqb3V0U3VyZmFjZSk7CiAKICAgICByZXR1
cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CkBAIC03MDgsNyArNjc3LDI1IEBAIEVycm9y
IERpc3BsYXk6OmNyZWF0ZUNvbnRleHQoY29uc3QgQ29uZmlnICpjb25maWd1cmF0aW9uLCBnbDo6
Q29udGV4dCAqc2hhcmVDb250CiAgICAgICAgIEFOR0xFX1RSWShyZXN0b3JlTG9zdERldmljZSgp
KTsKICAgICB9CiAKLSAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IG5ldyBnbDo6Q29udGV4dCht
SW1wbGVtZW50YXRpb24sIGNvbmZpZ3VyYXRpb24sIHNoYXJlQ29udGV4dCwgYXR0cmlicyk7Cisg
ICAgLy8gVGhpcyBkaXNwbGF5IHRleHR1cmUgc2hhcmluZyB3aWxsIGFsbG93IHRoZSBmaXJzdCBj
b250ZXh0IHRvIGNyZWF0ZSB0aGUgdGV4dHVyZSBzaGFyZSBncm91cC4KKyAgICBib29sIHVzaW5n
RGlzcGxheVRleHR1cmVTaGFyZUdyb3VwID0KKyAgICAgICAgYXR0cmlicy5nZXQoRUdMX0RJU1BM
QVlfVEVYVFVSRV9TSEFSRV9HUk9VUF9BTkdMRSwgRUdMX0ZBTFNFKSA9PSBFR0xfVFJVRTsKKyAg
ICBnbDo6VGV4dHVyZU1hbmFnZXIgKnNoYXJlVGV4dHVyZXMgPSBudWxscHRyOworCisgICAgaWYg
KHVzaW5nRGlzcGxheVRleHR1cmVTaGFyZUdyb3VwKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCht
VGV4dHVyZU1hbmFnZXIgPT0gbnVsbHB0cikgPT0gKG1HbG9iYWxUZXh0dXJlU2hhcmVHcm91cFVz
ZXJzID09IDApKTsKKyAgICAgICAgaWYgKG1UZXh0dXJlTWFuYWdlciA9PSBudWxscHRyKQorICAg
ICAgICB7CisgICAgICAgICAgICBtVGV4dHVyZU1hbmFnZXIgPSBuZXcgZ2w6OlRleHR1cmVNYW5h
Z2VyKCk7CisgICAgICAgIH0KKworICAgICAgICBtR2xvYmFsVGV4dHVyZVNoYXJlR3JvdXBVc2Vy
cysrOworICAgICAgICBzaGFyZVRleHR1cmVzID0gbVRleHR1cmVNYW5hZ2VyOworICAgIH0KKwor
ICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gbmV3IGdsOjpDb250ZXh0KG1JbXBsZW1lbnRhdGlv
biwgY29uZmlndXJhdGlvbiwgc2hhcmVDb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNoYXJlVGV4dHVyZXMsIGF0dHJpYnMsIG1EaXNwbGF5RXh0ZW5z
aW9ucyk7CiAKICAgICBBU1NFUlQoY29udGV4dCAhPSBudWxscHRyKTsKICAgICBtQ29udGV4dFNl
dC5pbnNlcnQoY29udGV4dCk7CkBAIC03MjIsMTAgKzcwOSwxMCBAQCBFcnJvciBEaXNwbGF5Ojpt
YWtlQ3VycmVudChlZ2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLCBlZ2w6OlN1cmZhY2UgKnJlYWRT
dXJmYWNlLAogewogICAgIEFOR0xFX1RSWShtSW1wbGVtZW50YXRpb24tPm1ha2VDdXJyZW50KGRy
YXdTdXJmYWNlLCByZWFkU3VyZmFjZSwgY29udGV4dCkpOwogCi0gICAgaWYgKGNvbnRleHQgIT0g
bnVsbHB0ciAmJiBkcmF3U3VyZmFjZSAhPSBudWxscHRyKQorICAgIGlmIChjb250ZXh0ICE9IG51
bGxwdHIpCiAgICAgewogICAgICAgICBBU1NFUlQocmVhZFN1cmZhY2UgPT0gZHJhd1N1cmZhY2Up
OwotICAgICAgICBjb250ZXh0LT5tYWtlQ3VycmVudChkcmF3U3VyZmFjZSk7CisgICAgICAgIGNv
bnRleHQtPm1ha2VDdXJyZW50KHRoaXMsIGRyYXdTdXJmYWNlKTsKICAgICB9CiAKICAgICByZXR1
cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CkBAIC03NjQsMTAgKzc1MSwxMCBAQCB2b2lkIERp
c3BsYXk6OmRlc3Ryb3lTdXJmYWNlKFN1cmZhY2UgKnN1cmZhY2UpCiAgICAgICAgIH0KIAogICAg
ICAgICBBU1NFUlQoc3VyZmFjZVJlbW92ZWQpOwotICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZB
UklBQkxFKHN1cmZhY2VSZW1vdmVkKTsKICAgICB9CiAKLSAgICBtSW1wbGVtZW50YXRpb24tPmRl
c3Ryb3lTdXJmYWNlKHN1cmZhY2UpOworICAgIG1TdGF0ZS5zdXJmYWNlU2V0LmVyYXNlKHN1cmZh
Y2UpOworICAgIHN1cmZhY2UtPm9uRGVzdHJveSh0aGlzKTsKIH0KIAogdm9pZCBEaXNwbGF5Ojpk
ZXN0cm95SW1hZ2UoZWdsOjpJbWFnZSAqaW1hZ2UpCkBAIC03ODYsNiArNzczLDIwIEBAIHZvaWQg
RGlzcGxheTo6ZGVzdHJveVN0cmVhbShlZ2w6OlN0cmVhbSAqc3RyZWFtKQogCiB2b2lkIERpc3Bs
YXk6OmRlc3Ryb3lDb250ZXh0KGdsOjpDb250ZXh0ICpjb250ZXh0KQogeworICAgIGlmIChjb250
ZXh0LT51c2luZ0Rpc3BsYXlUZXh0dXJlU2hhcmVHcm91cCgpKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1HbG9iYWxUZXh0dXJlU2hhcmVHcm91cFVzZXJzID49IDEgJiYgbVRleHR1cmVNYW5hZ2Vy
ICE9IG51bGxwdHIpOworICAgICAgICBpZiAobUdsb2JhbFRleHR1cmVTaGFyZUdyb3VwVXNlcnMg
PT0gMSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgbGFzdCBjb250
ZXh0IHVzaW5nIHRoZSBnbG9iYWwgc2hhcmUgZ3JvdXAsIGRlc3Ryb3kgdGhlIGdsb2JhbCB0ZXh0
dXJlCisgICAgICAgICAgICAvLyBtYW5hZ2VyIHNvIHRoYXQgdGhlIHRleHR1cmVzIGNhbiBiZSBk
ZXN0cm95ZWQgd2hpbGUgYSBjb250ZXh0IHN0aWxsIGV4aXN0cworICAgICAgICAgICAgbVRleHR1
cmVNYW5hZ2VyLT5yZWxlYXNlKGNvbnRleHQpOworICAgICAgICAgICAgbVRleHR1cmVNYW5hZ2Vy
ID0gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAgICBtR2xvYmFsVGV4dHVyZVNoYXJlR3JvdXBV
c2Vycy0tOworICAgIH0KKworICAgIGNvbnRleHQtPmRlc3Ryb3kodGhpcyk7CiAgICAgbUNvbnRl
eHRTZXQuZXJhc2UoY29udGV4dCk7CiAgICAgU2FmZURlbGV0ZShjb250ZXh0KTsKIH0KQEAgLTg0
OCwxNCArODQ5LDE0IEBAIGJvb2wgRGlzcGxheTo6aXNWYWxpZENvbmZpZyhjb25zdCBDb25maWcg
KmNvbmZpZykgY29uc3QKICAgICByZXR1cm4gbUNvbmZpZ1NldC5jb250YWlucyhjb25maWcpOwog
fQogCi1ib29sIERpc3BsYXk6OmlzVmFsaWRDb250ZXh0KGdsOjpDb250ZXh0ICpjb250ZXh0KSBj
b25zdAorYm9vbCBEaXNwbGF5Ojppc1ZhbGlkQ29udGV4dChjb25zdCBnbDo6Q29udGV4dCAqY29u
dGV4dCkgY29uc3QKIHsKLSAgICByZXR1cm4gbUNvbnRleHRTZXQuZmluZChjb250ZXh0KSAhPSBt
Q29udGV4dFNldC5lbmQoKTsKKyAgICByZXR1cm4gbUNvbnRleHRTZXQuZmluZChjb25zdF9jYXN0
PGdsOjpDb250ZXh0ICo+KGNvbnRleHQpKSAhPSBtQ29udGV4dFNldC5lbmQoKTsKIH0KIAotYm9v
bCBEaXNwbGF5Ojppc1ZhbGlkU3VyZmFjZShTdXJmYWNlICpzdXJmYWNlKSBjb25zdAorYm9vbCBE
aXNwbGF5Ojppc1ZhbGlkU3VyZmFjZShjb25zdCBTdXJmYWNlICpzdXJmYWNlKSBjb25zdAogewot
ICAgIHJldHVybiBtSW1wbGVtZW50YXRpb24tPmdldFN1cmZhY2VTZXQoKS5maW5kKHN1cmZhY2Up
ICE9IG1JbXBsZW1lbnRhdGlvbi0+Z2V0U3VyZmFjZVNldCgpLmVuZCgpOworICAgIHJldHVybiBt
U3RhdGUuc3VyZmFjZVNldC5maW5kKGNvbnN0X2Nhc3Q8U3VyZmFjZSAqPihzdXJmYWNlKSkgIT0g
bVN0YXRlLnN1cmZhY2VTZXQuZW5kKCk7CiB9CiAKIGJvb2wgRGlzcGxheTo6aXNWYWxpZEltYWdl
KGNvbnN0IEltYWdlICppbWFnZSkgY29uc3QKQEAgLTkwMyw2ICs5MDQsMTAgQEAgc3RhdGljIENs
aWVudEV4dGVuc2lvbnMgR2VuZXJhdGVDbGllbnRFeHRlbnNpb25zKCkKICAgICBleHRlbnNpb25z
LmV4cGVyaW1lbnRhbFByZXNlbnRQYXRoID0gdHJ1ZTsKICNlbmRpZgogCisjaWYgZGVmaW5lZChB
TkdMRV9FTkFCTEVfVlVMS0FOKQorICAgIGV4dGVuc2lvbnMucGxhdGZvcm1BTkdMRVZ1bGthbiA9
IHRydWU7CisjZW5kaWYKKwogI2lmIGRlZmluZWQoQU5HTEVfVVNFX1gxMSkKICAgICBleHRlbnNp
b25zLngxMVZpc3VhbCA9IHRydWU7CiAjZW5kaWYKQEAgLTkzMCwxMCArOTM1LDcgQEAgY29uc3Qg
Q2xpZW50RXh0ZW5zaW9ucyAmRGlzcGxheTo6Z2V0Q2xpZW50RXh0ZW5zaW9ucygpCiAKIGNvbnN0
IHN0ZDo6c3RyaW5nICZEaXNwbGF5OjpnZXRDbGllbnRFeHRlbnNpb25TdHJpbmcoKQogewotI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9ycyIKICAgICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJp
bmcgY2xpZW50RXh0ZW5zaW9uc1N0cmluZyA9IEdlbmVyYXRlRXh0ZW5zaW9uc1N0cmluZyhnZXRD
bGllbnRFeHRlbnNpb25zKCkpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogICAgIHJl
dHVybiBjbGllbnRFeHRlbnNpb25zU3RyaW5nOwogfQogCkBAIC05NDYsNiArOTQ4LDggQEAgdm9p
ZCBEaXNwbGF5Ojppbml0RGlzcGxheUV4dGVuc2lvbnMoKQogICAgIG1EaXNwbGF5RXh0ZW5zaW9u
cy5jcmVhdGVDb250ZXh0Tm9FcnJvciA9IHRydWU7CiAgICAgbURpc3BsYXlFeHRlbnNpb25zLmNy
ZWF0ZUNvbnRleHRXZWJHTENvbXBhdGliaWxpdHkgPSB0cnVlOwogICAgIG1EaXNwbGF5RXh0ZW5z
aW9ucy5jcmVhdGVDb250ZXh0QmluZEdlbmVyYXRlc1Jlc291cmNlID0gdHJ1ZTsKKyAgICBtRGlz
cGxheUV4dGVuc2lvbnMuY3JlYXRlQ29udGV4dENsaWVudEFycmF5cyAgICAgICAgICA9IHRydWU7
CisgICAgbURpc3BsYXlFeHRlbnNpb25zLnBpeGVsRm9ybWF0RmxvYXQgICAgICAgICAgICAgICAg
ICAgPSB0cnVlOwogCiAgICAgLy8gRm9yY2UgRUdMX0tIUl9nZXRfYWxsX3Byb2NfYWRkcmVzc2Vz
IG9uLgogICAgIG1EaXNwbGF5RXh0ZW5zaW9ucy5nZXRBbGxQcm9jQWRkcmVzc2VzID0gdHJ1ZTsK
QEAgLTk1OCw2ICs5NjIsMTQgQEAgYm9vbCBEaXNwbGF5Ojppc1ZhbGlkTmF0aXZlV2luZG93KEVH
TE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSBjb25zdAogICAgIHJldHVybiBtSW1wbGVtZW50YXRp
b24tPmlzVmFsaWROYXRpdmVXaW5kb3cod2luZG93KTsKIH0KIAorRXJyb3IgRGlzcGxheTo6dmFs
aWRhdGVDbGllbnRCdWZmZXIoY29uc3QgQ29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0
cmlicykKK3sKKyAgICByZXR1cm4gbUltcGxlbWVudGF0aW9uLT52YWxpZGF0ZUNsaWVudEJ1ZmZl
cihjb25maWd1cmF0aW9uLCBidWZ0eXBlLCBjbGllbnRCdWZmZXIsIGF0dHJpYnMpOworfQorCiBi
b29sIERpc3BsYXk6OmlzVmFsaWREaXNwbGF5KGNvbnN0IGVnbDo6RGlzcGxheSAqZGlzcGxheSkK
IHsKICAgICBjb25zdCBBTkdMRVBsYXRmb3JtRGlzcGxheU1hcCAqYW5nbGVQbGF0Zm9ybURpc3Bs
YXlNYXAgPSBHZXRBTkdMRVBsYXRmb3JtRGlzcGxheU1hcCgpOwpAQCAtMTAzMSw0ICsxMDQzLDQg
QEAgZ2w6OlZlcnNpb24gRGlzcGxheTo6Z2V0TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbUltcGxlbWVudGF0aW9uLT5nZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24o
KTsKIH0KLX0KK30gIC8vIG5hbWVzcGFjZSBlZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9EaXNwbGF5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvRGlzcGxheS5oCmluZGV4IGMwZGFmYjkwZjNiLi40ZmJmNTQxY2EyYiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Rpc3BsYXku
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRGlzcGxheS5oCkBA
IC0xOCwxMSArMTgsMTMgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9DYXBzLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvQ29uZmlnLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRXJyb3IuaCIKKyNpbmNsdWRl
ICJsaWJBTkdMRS9Mb2dnaW5nQW5ub3RhdG9yLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvVmVyc2lv
bi5oIgogCiBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENvbnRleHQ7CitjbGFzcyBUZXh0dXJlTWFu
YWdlcjsKIH0KIAogbmFtZXNwYWNlIHJ4CkBAIC0zNyw2ICszOSwxMyBAQCBjbGFzcyBJbWFnZTsK
IGNsYXNzIFN1cmZhY2U7CiBjbGFzcyBTdHJlYW07CiAKK3VzaW5nIFN1cmZhY2VTZXQgPSBzdGQ6
OnNldDxTdXJmYWNlICo+OworCitzdHJ1Y3QgRGlzcGxheVN0YXRlIGZpbmFsIDogYW5nbGU6Ok5v
bkNvcHlhYmxlCit7CisgICAgU3VyZmFjZVNldCBzdXJmYWNlU2V0OworfTsKKwogY2xhc3MgRGlz
cGxheSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6CkBAIC00NSwxOSAr
NTQsMjIgQEAgY2xhc3MgRGlzcGxheSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIEVy
cm9yIGluaXRpYWxpemUoKTsKICAgICB2b2lkIHRlcm1pbmF0ZSgpOwogCi0gICAgc3RhdGljIGVn
bDo6RGlzcGxheSAqR2V0RGlzcGxheUZyb21EZXZpY2Uodm9pZCAqbmF0aXZlX2Rpc3BsYXkpOwot
ICAgIHN0YXRpYyBlZ2w6OkRpc3BsYXkgKkdldERpc3BsYXlGcm9tQXR0cmlicyh2b2lkICpuYXRp
dmVfZGlzcGxheSwgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJNYXApOworICAgIHN0YXRpYyBl
Z2w6OkRpc3BsYXkgKkdldERpc3BsYXlGcm9tRGV2aWNlKERldmljZSAqZGV2aWNlKTsKKyAgICBz
dGF0aWMgZWdsOjpEaXNwbGF5ICpHZXREaXNwbGF5RnJvbU5hdGl2ZURpc3BsYXkoRUdMTmF0aXZl
RGlzcGxheVR5cGUgbmF0aXZlRGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJNYXApOwog
CiAgICAgc3RhdGljIGNvbnN0IENsaWVudEV4dGVuc2lvbnMgJmdldENsaWVudEV4dGVuc2lvbnMo
KTsKICAgICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgJmdldENsaWVudEV4dGVuc2lvblN0cmlu
ZygpOwogCiAgICAgc3RkOjp2ZWN0b3I8Y29uc3QgQ29uZmlnKj4gZ2V0Q29uZmlncyhjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgY29uc3Q7Ci0gICAgYm9vbCBnZXRDb25maWdBdHRy
aWIoY29uc3QgQ29uZmlnICpjb25maWd1cmF0aW9uLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQg
KnZhbHVlKTsKIAogICAgIEVycm9yIGNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgQ29uZmlnICpj
b25maWd1cmF0aW9uLCBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgY29uc3QgQXR0cmlidXRl
TWFwICZhdHRyaWJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VyZmFjZSAqKm91
dFN1cmZhY2UpOwogICAgIEVycm9yIGNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IENvbmZpZyAq
Y29uZmlndXJhdGlvbiwgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJzLCBTdXJmYWNlICoqb3V0
U3VyZmFjZSk7Ci0gICAgRXJyb3IgY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3Qg
Q29uZmlnICpjb25maWd1cmF0aW9uLCBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsIGNvbnN0
IEF0dHJpYnV0ZU1hcCAmYXR0cmlicywKKyAgICBFcnJvciBjcmVhdGVQYnVmZmVyRnJvbUNsaWVu
dEJ1ZmZlcihjb25zdCBDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZh
dHRyaWJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1cmZhY2Ug
KipvdXRTdXJmYWNlKTsKICAgICBFcnJvciBjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IENvbmZp
ZyAqY29uZmlndXJhdGlvbiwgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVQaXhtYXAsIGNvbnN0IEF0
dHJpYnV0ZU1hcCAmYXR0cmlicywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1cmZh
Y2UgKipvdXRTdXJmYWNlKTsKQEAgLTgyLDEyICs5NCwxNyBAQCBjbGFzcyBEaXNwbGF5IGZpbmFs
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICBib29sIGlzSW5pdGlhbGl6ZWQoKSBjb25zdDsK
ICAgICBib29sIGlzVmFsaWRDb25maWcoY29uc3QgQ29uZmlnICpjb25maWcpIGNvbnN0OwotICAg
IGJvb2wgaXNWYWxpZENvbnRleHQoZ2w6OkNvbnRleHQgKmNvbnRleHQpIGNvbnN0OwotICAgIGJv
b2wgaXNWYWxpZFN1cmZhY2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKSBjb25zdDsKKyAgICBib29s
IGlzVmFsaWRDb250ZXh0KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KSBjb25zdDsKKyAgICBi
b29sIGlzVmFsaWRTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkgY29uc3Q7CiAg
ICAgYm9vbCBpc1ZhbGlkSW1hZ2UoY29uc3QgSW1hZ2UgKmltYWdlKSBjb25zdDsKICAgICBib29s
IGlzVmFsaWRTdHJlYW0oY29uc3QgU3RyZWFtICpzdHJlYW0pIGNvbnN0OwogICAgIGJvb2wgaXNW
YWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29uc3Q7CiAKKyAg
ICBFcnJvciB2YWxpZGF0ZUNsaWVudEJ1ZmZlcihjb25zdCBDb25maWcgKmNvbmZpZ3VyYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJz
KTsKKwogICAgIHN0YXRpYyBib29sIGlzVmFsaWREaXNwbGF5KGNvbnN0IGVnbDo6RGlzcGxheSAq
ZGlzcGxheSk7CiAgICAgc3RhdGljIGJvb2wgaXNWYWxpZE5hdGl2ZURpc3BsYXkoRUdMTmF0aXZl
RGlzcGxheVR5cGUgZGlzcGxheSk7CiAgICAgc3RhdGljIGJvb2wgaGFzRXhpc3RpbmdXaW5kb3dT
dXJmYWNlKEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KTsKQEAgLTEwOCwxMiArMTI1LDE0IEBA
IGNsYXNzIERpc3BsYXkgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBjb25zdCBBdHRy
aWJ1dGVNYXAgJmdldEF0dHJpYnV0ZU1hcCgpIGNvbnN0IHsgcmV0dXJuIG1BdHRyaWJ1dGVNYXA7
IH0KICAgICBFR0xOYXRpdmVEaXNwbGF5VHlwZSBnZXROYXRpdmVEaXNwbGF5SWQoKSBjb25zdCB7
IHJldHVybiBtRGlzcGxheUlkOyB9CiAKLSAgICByeDo6RGlzcGxheUltcGwgKmdldEltcGxlbWVu
dGF0aW9uKCkgeyByZXR1cm4gbUltcGxlbWVudGF0aW9uOyB9CisgICAgcng6OkRpc3BsYXlJbXBs
ICpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbjsgfQog
ICAgIERldmljZSAqZ2V0RGV2aWNlKCkgY29uc3Q7CiAgICAgRUdMZW51bSBnZXRQbGF0Zm9ybSgp
IGNvbnN0IHsgcmV0dXJuIG1QbGF0Zm9ybTsgfQogCiAgICAgZ2w6OlZlcnNpb24gZ2V0TWF4U3Vw
cG9ydGVkRVNWZXJzaW9uKCkgY29uc3Q7CiAKKyAgICBjb25zdCBEaXNwbGF5U3RhdGUgJmdldFN0
YXRlKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlOyB9CisKICAgcHJpdmF0ZToKICAgICBEaXNwbGF5
KEVHTGVudW0gcGxhdGZvcm0sIEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRpc3BsYXlJZCwgRGV2aWNl
ICplZ2xEZXZpY2UpOwogCkBAIC0xMjQsNiArMTQzLDcgQEAgY2xhc3MgRGlzcGxheSBmaW5hbCA6
IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHZvaWQgaW5pdERpc3BsYXlFeHRlbnNpb25zKCk7CiAg
ICAgdm9pZCBpbml0VmVuZG9yU3RyaW5nKCk7CiAKKyAgICBEaXNwbGF5U3RhdGUgbVN0YXRlOwog
ICAgIHJ4OjpEaXNwbGF5SW1wbCAqbUltcGxlbWVudGF0aW9uOwogCiAgICAgRUdMTmF0aXZlRGlz
cGxheVR5cGUgbURpc3BsYXlJZDsKQEAgLTE1Miw4ICsxNzIsMTIgQEAgY2xhc3MgRGlzcGxheSBm
aW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgRGV2aWNlICptRGV2aWNlOwogICAgIEVH
TGVudW0gbVBsYXRmb3JtOworICAgIGFuZ2xlOjpMb2dnaW5nQW5ub3RhdG9yIG1Bbm5vdGF0b3I7
CisKKyAgICBnbDo6VGV4dHVyZU1hbmFnZXIgKm1UZXh0dXJlTWFuYWdlcjsKKyAgICBzaXplX3Qg
bUdsb2JhbFRleHR1cmVTaGFyZUdyb3VwVXNlcnM7CiB9OwogCi19Cit9ICAvLyBuYW1lc3BhY2Ug
ZWdsCiAKICNlbmRpZiAgIC8vIExJQkFOR0xFX0RJU1BMQVlfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9FcnJvci5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRXJyb3IuY3BwCmluZGV4IGZlZDE1OTQ5NzJjLi4zM2Nh
Yjk4NDg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L0Vycm9yLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRXJy
b3IuY3BwCkBAIC0xMCwxMiArMTAsMTggQEAKICNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5oIgog
CiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKKyNpbmNsdWRlICJjb21tb24vZGVidWcu
aCIKIAogI2luY2x1ZGUgPGNzdGRhcmc+CiAKIG5hbWVzcGFjZSBnbAogewogCitFcnJvcjo6RXJy
b3IoR0xlbnVtIGVycm9yQ29kZSwgc3RkOjpzdHJpbmcgJiZtZXNzYWdlKQorICAgIDogbUNvZGUo
ZXJyb3JDb2RlKSwgbUlEKGVycm9yQ29kZSksIG1NZXNzYWdlKG5ldyBzdGQ6OnN0cmluZyhzdGQ6
Om1vdmUobWVzc2FnZSkpKQoreworfQorCiBFcnJvcjo6RXJyb3IoR0xlbnVtIGVycm9yQ29kZSwg
Y29uc3QgY2hhciAqbXNnLCAuLi4pIDogbUNvZGUoZXJyb3JDb2RlKSwgbUlEKGVycm9yQ29kZSkK
IHsKICAgICB2YV9saXN0IHZhcmFyZzsKQEAgLTY0LDggKzcwLDMyIEBAIGJvb2wgRXJyb3I6Om9w
ZXJhdG9yIT0oY29uc3QgRXJyb3IgJm90aGVyKSBjb25zdAogewogICAgIHJldHVybiAhKCp0aGlz
ID09IG90aGVyKTsKIH0KKworc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAm
b3MsIGNvbnN0IEVycm9yICZlcnIpCit7CisgICAgcmV0dXJuIGdsOjpGbXRIZXhTaG9ydChvcywg
ZXJyLmdldENvZGUoKSk7Cit9CisKK25hbWVzcGFjZSBwcml2Cit7Cit0ZW1wbGF0ZSA8R0xlbnVt
IEVudW1UPgorRXJyb3JTdHJlYW08RW51bVQ+OjpFcnJvclN0cmVhbSgpCit7Cit9CisKK3RlbXBs
YXRlIDxHTGVudW0gRW51bVQ+CitFcnJvclN0cmVhbTxFbnVtVD46Om9wZXJhdG9yIGdsOjpFcnJv
cigpCit7CisgICAgcmV0dXJuIEVycm9yKEVudW1ULCBtRXJyb3JTdHJlYW0uc3RyKCkuY19zdHIo
KSk7CiB9CiAKK3RlbXBsYXRlIGNsYXNzIEVycm9yU3RyZWFtPEdMX09VVF9PRl9NRU1PUlk+Owor
dGVtcGxhdGUgY2xhc3MgRXJyb3JTdHJlYW08R0xfSU5WQUxJRF9PUEVSQVRJT04+OworCit9ICAv
LyBuYW1lc3BhY2UgcHJpdgorCit9ICAvLyBuYW1lc3BhY2UgZ2wKKwogbmFtZXNwYWNlIGVnbAog
ewogCkBAIC04Nyw2ICsxMTcsMTEgQEAgRXJyb3I6OkVycm9yKEVHTGludCBlcnJvckNvZGUsIEVH
TGludCBpZCwgY29uc3QgY2hhciAqbXNnLCAuLi4pIDogbUNvZGUoZXJyb3JDb2QKICAgICB2YV9l
bmQodmFyYXJnKTsKIH0KIAorRXJyb3I6OkVycm9yKEVHTGludCBlcnJvckNvZGUsIEVHTGludCBp
ZCwgY29uc3Qgc3RkOjpzdHJpbmcgJm1zZykKKyAgICA6IG1Db2RlKGVycm9yQ29kZSksIG1JRChp
ZCksIG1NZXNzYWdlKG5ldyBzdGQ6OnN0cmluZyhtc2cpKQoreworfQorCiB2b2lkIEVycm9yOjpj
cmVhdGVNZXNzYWdlU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAoIW1NZXNzYWdlKQpAQCAtMTAx
LDQgKzEzNiw4IEBAIGNvbnN0IHN0ZDo6c3RyaW5nICZFcnJvcjo6Z2V0TWVzc2FnZSgpIGNvbnN0
CiAgICAgcmV0dXJuICptTWVzc2FnZTsKIH0KIAorc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0
ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IEVycm9yICZlcnIpCit7CisgICAgcmV0dXJuIGdsOjpGbXRI
ZXhTaG9ydChvcywgZXJyLmdldENvZGUoKSk7Cit9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRXJyb3IuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9FcnJvci5oCmluZGV4IGRlM2E1MGViMDMwLi5iY2U0Y2QyZjY1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Vycm9yLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0Vycm9yLmgKQEAgLTEw
LDEwICsxMCwzNyBAQAogI2RlZmluZSBMSUJBTkdMRV9FUlJPUl9IXwogCiAjaW5jbHVkZSAiYW5n
bGVfZ2wuaCIKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgPEVHTC9l
Z2wuaD4KIAotI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVkZSA8
b3N0cmVhbT4KKyNpbmNsdWRlIDxzdHJpbmc+CisKK25hbWVzcGFjZSBhbmdsZQorewordGVtcGxh
dGUgPHR5cGVuYW1lIEVycm9yVCwgdHlwZW5hbWUgUmVzdWx0VCwgdHlwZW5hbWUgRXJyb3JCYXNl
VCwgRXJyb3JCYXNlVCBOb0Vycm9yVmFsPgorY2xhc3MgRXJyb3JPclJlc3VsdEJhc2UKK3sKKyAg
cHVibGljOgorICAgIEVycm9yT3JSZXN1bHRCYXNlKGNvbnN0IEVycm9yVCAmZXJyb3IpIDogbUVy
cm9yKGVycm9yKSB7fQorICAgIEVycm9yT3JSZXN1bHRCYXNlKEVycm9yVCAmJmVycm9yKSA6IG1F
cnJvcihzdGQ6Om1vdmUoZXJyb3IpKSB7fQorCisgICAgRXJyb3JPclJlc3VsdEJhc2UoUmVzdWx0
VCAmJnJlc3VsdCkgOiBtRXJyb3IoTm9FcnJvclZhbCksIG1SZXN1bHQoc3RkOjpmb3J3YXJkPFJl
c3VsdFQ+KHJlc3VsdCkpCisgICAgeworICAgIH0KKworICAgIEVycm9yT3JSZXN1bHRCYXNlKGNv
bnN0IFJlc3VsdFQgJnJlc3VsdCkgOiBtRXJyb3IoTm9FcnJvclZhbCksIG1SZXN1bHQocmVzdWx0
KSB7fQorCisgICAgYm9vbCBpc0Vycm9yKCkgY29uc3QgeyByZXR1cm4gbUVycm9yLmlzRXJyb3Io
KTsgfQorICAgIGNvbnN0IEVycm9yVCAmZ2V0RXJyb3IoKSBjb25zdCB7IHJldHVybiBtRXJyb3I7
IH0KKyAgICBSZXN1bHRUICYmZ2V0UmVzdWx0KCkgeyByZXR1cm4gc3RkOjptb3ZlKG1SZXN1bHQp
OyB9CisKKyAgcHJpdmF0ZToKKyAgICBFcnJvclQgbUVycm9yOworICAgIFJlc3VsdFQgbVJlc3Vs
dDsKK307Cit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKIAogbmFtZXNwYWNlIGdsCiB7CkBAIC0yMiw2
ICs0OSw3IEBAIGNsYXNzIEVycm9yIGZpbmFsCiB7CiAgIHB1YmxpYzoKICAgICBleHBsaWNpdCBp
bmxpbmUgRXJyb3IoR0xlbnVtIGVycm9yQ29kZSk7CisgICAgRXJyb3IoR0xlbnVtIGVycm9yQ29k
ZSwgc3RkOjpzdHJpbmcgJiZtc2cpOwogICAgIEVycm9yKEdMZW51bSBlcnJvckNvZGUsIGNvbnN0
IGNoYXIgKm1zZywgLi4uKTsKICAgICBFcnJvcihHTGVudW0gZXJyb3JDb2RlLCBHTHVpbnQgaWQs
IGNvbnN0IGNoYXIgKm1zZywgLi4uKTsKICAgICBpbmxpbmUgRXJyb3IoY29uc3QgRXJyb3IgJm90
aGVyKTsKQEAgLTQzLDM3ICs3MSw3MyBAQCBjbGFzcyBFcnJvciBmaW5hbAogICBwcml2YXRlOgog
ICAgIHZvaWQgY3JlYXRlTWVzc2FnZVN0cmluZygpIGNvbnN0OwogCisgICAgZnJpZW5kIHN0ZDo6
b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBFcnJvciAmZXJyKTsK
KwogICAgIEdMZW51bSBtQ29kZTsKICAgICBHTHVpbnQgbUlEOwogICAgIG11dGFibGUgc3RkOjp1
bmlxdWVfcHRyPHN0ZDo6c3RyaW5nPiBtTWVzc2FnZTsKIH07CiAKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgotY2xhc3MgRXJyb3JPclJlc3VsdAordGVtcGxhdGUgPHR5cGVuYW1lIFJlc3VsdFQ+Cit1
c2luZyBFcnJvck9yUmVzdWx0ID0gYW5nbGU6OkVycm9yT3JSZXN1bHRCYXNlPEVycm9yLCBSZXN1
bHRULCBHTGVudW0sIEdMX05PX0VSUk9SPjsKKworbmFtZXNwYWNlIHByaXYKK3sKK3RlbXBsYXRl
IDxHTGVudW0gRW51bVQ+CitjbGFzcyBFcnJvclN0cmVhbSA6IGFuZ2xlOjpOb25Db3B5YWJsZQog
ewogICBwdWJsaWM6Ci0gICAgRXJyb3JPclJlc3VsdChjb25zdCBnbDo6RXJyb3IgJmVycm9yKSA6
IG1FcnJvcihlcnJvcikge30KLSAgICBFcnJvck9yUmVzdWx0KGdsOjpFcnJvciAmJmVycm9yKSA6
IG1FcnJvcihzdGQ6Om1vdmUoZXJyb3IpKSB7fQorICAgIEVycm9yU3RyZWFtKCk7CiAKLSAgICBF
cnJvck9yUmVzdWx0KFQgJiZyZXN1bHQpCi0gICAgICAgIDogbUVycm9yKEdMX05PX0VSUk9SKSwg
bVJlc3VsdChzdGQ6OmZvcndhcmQ8VD4ocmVzdWx0KSkKLSAgICB7Ci0gICAgfQorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICAgIEVycm9yU3RyZWFtICZvcGVyYXRvcjw8KFQgdmFsdWUpOwog
Ci0gICAgRXJyb3JPclJlc3VsdChjb25zdCBUICZyZXN1bHQpCi0gICAgICAgIDogbUVycm9yKEdM
X05PX0VSUk9SKSwgbVJlc3VsdChyZXN1bHQpCisgICAgb3BlcmF0b3IgRXJyb3IoKTsKKworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIG9wZXJhdG9yIEVycm9yT3JSZXN1bHQ8VD4oKQog
ICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVycm9yPigqdGhpcyk7CiAgICAgfQog
Ci0gICAgYm9vbCBpc0Vycm9yKCkgY29uc3QgeyByZXR1cm4gbUVycm9yLmlzRXJyb3IoKTsgfQot
ICAgIGNvbnN0IGdsOjpFcnJvciAmZ2V0RXJyb3IoKSBjb25zdCB7IHJldHVybiBtRXJyb3I7IH0K
LSAgICBUICYmZ2V0UmVzdWx0KCkgeyByZXR1cm4gc3RkOjptb3ZlKG1SZXN1bHQpOyB9Ci0KICAg
cHJpdmF0ZToKLSAgICBFcnJvciBtRXJyb3I7Ci0gICAgVCBtUmVzdWx0OworICAgIHN0ZDo6b3N0
cmluZ3N0cmVhbSBtRXJyb3JTdHJlYW07CiB9OwogCisvLyBUaGVzZSBjb252aWVuY2UgbWV0aG9k
cyBmb3IgSFJFU1VMVFMgKHJlYWxseSBsb25nKSBhcmUgdXNlZCBhbGwgb3ZlciB0aGUgcGxhY2Ug
aW4gdGhlIEQzRAorLy8gYmFjay1lbmRzLgorI2lmIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fV0lO
RE9XUykKK3RlbXBsYXRlIDw+Cit0ZW1wbGF0ZSA8PgoraW5saW5lIEVycm9yU3RyZWFtPEdMX09V
VF9PRl9NRU1PUlk+ICZFcnJvclN0cmVhbTxHTF9PVVRfT0ZfTUVNT1JZPjo6b3BlcmF0b3I8PChI
UkVTVUxUIGhyZXN1bHQpCit7CisgICAgbUVycm9yU3RyZWFtIDw8ICJIUkVTVUxUOiAweCIgPDwg
c3RkOjppb3M6OmhleCA8PCBocmVzdWx0OworICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxh
dGUgPD4KK3RlbXBsYXRlIDw+CitpbmxpbmUgRXJyb3JTdHJlYW08R0xfSU5WQUxJRF9PUEVSQVRJ
T04+ICZFcnJvclN0cmVhbTxHTF9JTlZBTElEX09QRVJBVElPTj46Om9wZXJhdG9yPDwoCisgICAg
SFJFU1VMVCBocmVzdWx0KQoreworICAgIG1FcnJvclN0cmVhbSA8PCAiSFJFU1VMVDogMHgiIDw8
IHN0ZDo6aW9zOjpoZXggPDwgaHJlc3VsdDsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisjZW5kaWYg
IC8vIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fV0lORE9XUykKKwordGVtcGxhdGUgPEdMZW51bSBF
bnVtVD4KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorRXJyb3JTdHJlYW08RW51bVQ+ICZFcnJvclN0
cmVhbTxFbnVtVD46Om9wZXJhdG9yPDwoVCB2YWx1ZSkKK3sKKyAgICBtRXJyb3JTdHJlYW0gPDwg
dmFsdWU7CisgICAgcmV0dXJuICp0aGlzOworfQorCit9ICAvLyBuYW1lc3BhY2UgcHJpdgorCit1
c2luZyBPdXRPZk1lbW9yeSAgID0gcHJpdjo6RXJyb3JTdHJlYW08R0xfT1VUX09GX01FTU9SWT47
Cit1c2luZyBJbnRlcm5hbEVycm9yID0gcHJpdjo6RXJyb3JTdHJlYW08R0xfSU5WQUxJRF9PUEVS
QVRJT04+OworCiBpbmxpbmUgRXJyb3IgTm9FcnJvcigpCiB7CiAgICAgcmV0dXJuIEVycm9yKEdM
X05PX0VSUk9SKTsKQEAgLTkwLDYgKzE1NCw3IEBAIGNsYXNzIEVycm9yIGZpbmFsCiAgICAgZXhw
bGljaXQgaW5saW5lIEVycm9yKEVHTGludCBlcnJvckNvZGUpOwogICAgIEVycm9yKEVHTGludCBl
cnJvckNvZGUsIGNvbnN0IGNoYXIgKm1zZywgLi4uKTsKICAgICBFcnJvcihFR0xpbnQgZXJyb3JD
b2RlLCBFR0xpbnQgaWQsIGNvbnN0IGNoYXIgKm1zZywgLi4uKTsKKyAgICBFcnJvcihFR0xpbnQg
ZXJyb3JDb2RlLCBFR0xpbnQgaWQsIGNvbnN0IHN0ZDo6c3RyaW5nICZtc2cpOwogICAgIGlubGlu
ZSBFcnJvcihjb25zdCBFcnJvciAmb3RoZXIpOwogICAgIGlubGluZSBFcnJvcihFcnJvciAmJm90
aGVyKTsKIApAQCAtMTA1LDExICsxNzAsMjEgQEAgY2xhc3MgRXJyb3IgZmluYWwKICAgcHJpdmF0
ZToKICAgICB2b2lkIGNyZWF0ZU1lc3NhZ2VTdHJpbmcoKSBjb25zdDsKIAorICAgIGZyaWVuZCBz
dGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgY29uc3QgRXJyb3IgJmVy
cik7CisKICAgICBFR0xpbnQgbUNvZGU7CiAgICAgRUdMaW50IG1JRDsKICAgICBtdXRhYmxlIHN0
ZDo6dW5pcXVlX3B0cjxzdGQ6OnN0cmluZz4gbU1lc3NhZ2U7CiB9OwogCitpbmxpbmUgRXJyb3Ig
Tm9FcnJvcigpCit7CisgICAgcmV0dXJuIEVycm9yKEVHTF9TVUNDRVNTKTsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFJlc3VsdFQ+Cit1c2luZyBFcnJvck9yUmVzdWx0ID0gYW5nbGU6OkVycm9y
T3JSZXN1bHRCYXNlPEVycm9yLCBSZXN1bHRULCBFR0xpbnQsIEVHTF9TVUNDRVNTPjsKKwogfSAg
Ly8gbmFtZXNwYWNlIGVnbAogCiAjZGVmaW5lIEFOR0xFX0NPTkNBVDEoeCwgeSkgeCMjeQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZlbmNlLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GZW5jZS5jcHAKaW5kZXggZTVm
M2JhNjlhMmYuLjJlMWM1OTAzZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvRmVuY2UuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9GZW5jZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgRXJyb3IgRmVuY2VOVjo6c2V0
KEdMZW51bSBjb25kaXRpb24pCiAgICAgbVN0YXR1cyA9IEdMX0ZBTFNFOwogICAgIG1Jc1NldCA9
IHRydWU7CiAKLSAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBOb0Vy
cm9yKCk7CiB9CiAKIEVycm9yIEZlbmNlTlY6OnRlc3QoR0xib29sZWFuICpvdXRSZXN1bHQpCkBA
IC01Niw3ICs1Niw3IEBAIEVycm9yIEZlbmNlTlY6OnRlc3QoR0xib29sZWFuICpvdXRSZXN1bHQp
CiAgICAgfQogCiAgICAgKm91dFJlc3VsdCA9IG1TdGF0dXM7Ci0gICAgcmV0dXJuIEVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCiBFcnJvciBGZW5jZU5WOjpm
aW5pc2goKQpAQCAtNzEsMTEgKzcxLDExIEBAIEVycm9yIEZlbmNlTlY6OmZpbmlzaCgpCiAKICAg
ICBtU3RhdHVzID0gR0xfVFJVRTsKIAotICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7Cisg
ICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0KIAogRmVuY2VTeW5jOjpGZW5jZVN5bmMocng6OkZlbmNl
U3luY0ltcGwgKmltcGwsIEdMdWludCBpZCkKLSAgICA6IFJlZkNvdW50T2JqZWN0KGlkKSwgbUZl
bmNlKGltcGwpLCBtTGFiZWwoKSwgbUNvbmRpdGlvbihHTF9OT05FKSwgbUZsYWdzKDApCisgICAg
OiBSZWZDb3VudE9iamVjdChpZCksIG1GZW5jZShpbXBsKSwgbUxhYmVsKCksIG1Db25kaXRpb24o
R0xfU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUpLCBtRmxhZ3MoMCkKIHsKIH0KIApAQCAtMTA0
LDcgKzEwNCw3IEBAIEVycm9yIEZlbmNlU3luYzo6c2V0KEdMZW51bSBjb25kaXRpb24sIEdMYml0
ZmllbGQgZmxhZ3MpCiAKICAgICBtQ29uZGl0aW9uID0gY29uZGl0aW9uOwogICAgIG1GbGFncyA9
IGZsYWdzOwotICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIE5vRXJy
b3IoKTsKIH0KIAogRXJyb3IgRmVuY2VTeW5jOjpjbGllbnRXYWl0KEdMYml0ZmllbGQgZmxhZ3Ms
IEdMdWludDY0IHRpbWVvdXQsIEdMZW51bSAqb3V0UmVzdWx0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZlbmNlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvRmVuY2UuaAppbmRleCBiMmRhZWQ2ZjBlOS4uM2IyNTBhMjVh
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GZW5j
ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GZW5jZS5oCkBA
IC01NCw2ICs1NCw4IEBAIGNsYXNzIEZlbmNlU3luYyBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudE9i
amVjdCwgcHVibGljIExhYmVsZWRPYmplY3QKICAgICBGZW5jZVN5bmMocng6OkZlbmNlU3luY0lt
cGwgKmltcGwsIEdMdWludCBpZCk7CiAgICAgdmlydHVhbCB+RmVuY2VTeW5jKCk7CiAKKyAgICB2
b2lkIGRlc3Ryb3koY29uc3QgQ29udGV4dCAqY29udGV4dCkgb3ZlcnJpZGUge30KKwogICAgIHZv
aWQgc2V0TGFiZWwoY29uc3Qgc3RkOjpzdHJpbmcgJmxhYmVsKSBvdmVycmlkZTsKICAgICBjb25z
dCBzdGQ6OnN0cmluZyAmZ2V0TGFiZWwoKSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZlbmNlX3VuaXR0ZXN0LmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GZW5jZV91bml0dGVzdC5jcHAK
aW5kZXggMzdiM2U2ZjU2M2IuLmY3ZmQyMTVlNTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRmVuY2VfdW5pdHRlc3QuY3BwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GZW5jZV91bml0dGVzdC5jcHAKQEAgLTY3LDE4
ICs2NywxNCBAQCBURVNUX0YoRmVuY2VOVlRlc3QsIERlc3RydWN0aW9uRGVsZXRlc0ltcGwpCiAK
IFRFU1RfRihGZW5jZU5WVGVzdCwgU2V0QW5kVGVzdEJlaGF2aW9yKQogewotICAgIEVYUEVDVF9D
QUxMKCptSW1wbCwgc2V0KF8pKQotICAgICAgICAuV2lsbE9uY2UoUmV0dXJuKGdsOjpFcnJvcihH
TF9OT19FUlJPUikpKQotICAgICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOworICAgIEVYUEVD
VF9DQUxMKCptSW1wbCwgc2V0KF8pKS5XaWxsT25jZShSZXR1cm4oZ2w6Ok5vRXJyb3IoKSkpLlJl
dGlyZXNPblNhdHVyYXRpb24oKTsKICAgICBFWFBFQ1RfRkFMU0UobUZlbmNlLT5pc1NldCgpKTsK
ICAgICBtRmVuY2UtPnNldChHTF9BTExfQ09NUExFVEVEX05WKTsKICAgICBFWFBFQ1RfVFJVRSht
RmVuY2UtPmlzU2V0KCkpOwogICAgIC8vIEZha2UgdGhlIGJlaGF2aW9yIG9mIHRlc3RpbmcgdGhl
IGZlbmNlIGJlZm9yZSBhbmQgYWZ0ZXIgaXQncyBwYXNzZWQuCiAgICAgRVhQRUNUX0NBTEwoKm1J
bXBsLCB0ZXN0KF8pKQotICAgICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0QXJndW1lbnRQb2ludGVl
PDA+KEdMX0ZBTFNFKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybihnbDo6RXJyb3Io
R0xfTk9fRVJST1IpKSkpCi0gICAgICAgIC5XaWxsT25jZShEb0FsbChTZXRBcmd1bWVudFBvaW50
ZWU8MD4oR0xfVFJVRSksCi0gICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4oZ2w6OkVycm9y
KEdMX05PX0VSUk9SKSkpKQorICAgICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0QXJndW1lbnRQb2lu
dGVlPDA+KEdMX0ZBTFNFKSwgUmV0dXJuKGdsOjpOb0Vycm9yKCkpKSkKKyAgICAgICAgLldpbGxP
bmNlKERvQWxsKFNldEFyZ3VtZW50UG9pbnRlZTwwPihHTF9UUlVFKSwgUmV0dXJuKGdsOjpOb0Vy
cm9yKCkpKSkKICAgICAgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKICAgICBHTGJvb2xlYW4g
b3V0OwogICAgIG1GZW5jZS0+dGVzdCgmb3V0KTsKQEAgLTE0MSwxNyArMTM3LDEzIEBAIFRFU1Rf
RihGZW5jZVN5bmNUZXN0LCBEZXN0cnVjdGlvbkRlbGV0ZXNJbXBsKQogCiBURVNUX0YoRmVuY2VT
eW5jVGVzdCwgU2V0QW5kR2V0U3RhdHVzQmVoYXZpb3IpCiB7Ci0gICAgRVhQRUNUX0NBTEwoKm1J
bXBsLCBzZXQoXywgXykpCi0gICAgICAgIC5XaWxsT25jZShSZXR1cm4oZ2w6OkVycm9yKEdMX05P
X0VSUk9SKSkpCi0gICAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CisgICAgRVhQRUNUX0NB
TEwoKm1JbXBsLCBzZXQoXywgXykpLldpbGxPbmNlKFJldHVybihnbDo6Tm9FcnJvcigpKSkuUmV0
aXJlc09uU2F0dXJhdGlvbigpOwogICAgIG1GZW5jZS0+c2V0KEdMX1NZTkNfR1BVX0NPTU1BTkRT
X0NPTVBMRVRFLCAwKTsKICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0xlbnVtPihHTF9TWU5D
X0dQVV9DT01NQU5EU19DT01QTEVURSksIG1GZW5jZS0+Z2V0Q29uZGl0aW9uKCkpOwogICAgIC8v
IEZha2UgdGhlIGJlaGF2aW9yIG9mIHRlc3RpbmcgdGhlIGZlbmNlIGJlZm9yZSBhbmQgYWZ0ZXIg
aXQncyBwYXNzZWQuCiAgICAgRVhQRUNUX0NBTEwoKm1JbXBsLCBnZXRTdGF0dXMoXykpCi0gICAg
ICAgIC5XaWxsT25jZShEb0FsbChTZXRBcmd1bWVudFBvaW50ZWU8MD4oR0xfVU5TSUdOQUxFRCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4oZ2w6OkVycm9yKEdMX05PX0VSUk9SKSkp
KQotICAgICAgICAuV2lsbE9uY2UoRG9BbGwoU2V0QXJndW1lbnRQb2ludGVlPDA+KEdMX1NJR05B
TEVEKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJldHVybihnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpKSkpCisgICAgICAgIC5XaWxsT25jZShEb0FsbChTZXRBcmd1bWVudFBvaW50ZWU8MD4oR0xf
VU5TSUdOQUxFRCksIFJldHVybihnbDo6Tm9FcnJvcigpKSkpCisgICAgICAgIC5XaWxsT25jZShE
b0FsbChTZXRBcmd1bWVudFBvaW50ZWU8MD4oR0xfU0lHTkFMRUQpLCBSZXR1cm4oZ2w6Ok5vRXJy
b3IoKSkpKQogICAgICAgICAuUmV0aXJlc09uU2F0dXJhdGlvbigpOwogICAgIEdMaW50IG91dDsK
ICAgICBtRmVuY2UtPmdldFN0YXR1cygmb3V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZmZXIuY3BwCmluZGV4IDRiYjIxMzg1NDkxLi5i
N2Q1ZmM1MWVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL0ZyYW1lYnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvRnJhbWVidWZmZXIuY3BwCkBAIC05LDEwICs5LDEyIEBACiAKICNpbmNsdWRlICJsaWJB
TkdMRS9GcmFtZWJ1ZmZlci5oIgogCisjaW5jbHVkZSAiY29tbW9uL2JpdHNldF91dGlscy5oIgog
I2luY2x1ZGUgImNvbW1vbi9PcHRpb25hbC5oIgogI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9Db25maWcuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Db250
ZXh0LmgiCisjaW5jbHVkZSAibGliQU5HTEUvRGlzcGxheS5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1JlbmRlcmJ1ZmZl
ci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKQEAgLTMyLDI3ICszNCw0MCBAQCBu
YW1lc3BhY2UgZ2wKIG5hbWVzcGFjZQogewogCi12b2lkIEJpbmRSZXNvdXJjZUNoYW5uZWwoQ2hh
bm5lbEJpbmRpbmcgKmJpbmRpbmcsIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdCAqcmVzb3Vy
Y2UpCit2b2lkIEJpbmRSZXNvdXJjZUNoYW5uZWwoT25BdHRhY2htZW50RGlydHlCaW5kaW5nICpi
aW5kaW5nLCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3QgKnJlc291cmNlKQogewogICAgIGJp
bmRpbmctPmJpbmQocmVzb3VyY2UgPyByZXNvdXJjZS0+Z2V0RGlydHlDaGFubmVsKCkgOiBudWxs
cHRyKTsKIH0KIAogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCisvLyBUaGlzIGNvbnN0cnVj
dG9yIGlzIG9ubHkgdXNlZCBmb3IgZGVmYXVsdCBmcmFtZWJ1ZmZlcnMuCiBGcmFtZWJ1ZmZlclN0
YXRlOjpGcmFtZWJ1ZmZlclN0YXRlKCkKICAgICA6IG1MYWJlbCgpLAogICAgICAgbUNvbG9yQXR0
YWNobWVudHMoMSksCi0gICAgICBtRHJhd0J1ZmZlclN0YXRlcygxLCBHTF9OT05FKSwKLSAgICAg
IG1SZWFkQnVmZmVyU3RhdGUoR0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUKQorICAgICAgbURyYXdC
dWZmZXJTdGF0ZXMoSU1QTEVNRU5UQVRJT05fTUFYX0RSQVdfQlVGRkVSUywgR0xfTk9ORSksCisg
ICAgICBtUmVhZEJ1ZmZlclN0YXRlKEdMX0JBQ0spLAorICAgICAgbURlZmF1bHRXaWR0aCgwKSwK
KyAgICAgIG1EZWZhdWx0SGVpZ2h0KDApLAorICAgICAgbURlZmF1bHRTYW1wbGVzKDApLAorICAg
ICAgbURlZmF1bHRGaXhlZFNhbXBsZUxvY2F0aW9ucyhHTF9GQUxTRSksCisgICAgICBtV2ViR0xE
ZXB0aFN0ZW5jaWxDb25zaXN0ZW50KHRydWUpCiB7Ci0gICAgbURyYXdCdWZmZXJTdGF0ZXNbMF0g
PSBHTF9DT0xPUl9BVFRBQ0hNRU5UMF9FWFQ7CisgICAgQVNTRVJUKG1EcmF3QnVmZmVyU3RhdGVz
LnNpemUoKSA+IDApOworICAgIG1EcmF3QnVmZmVyU3RhdGVzWzBdID0gR0xfQkFDSzsKKyAgICBt
RW5hYmxlZERyYXdCdWZmZXJzLnNldCgwKTsKIH0KIAogRnJhbWVidWZmZXJTdGF0ZTo6RnJhbWVi
dWZmZXJTdGF0ZShjb25zdCBDYXBzICZjYXBzKQogICAgIDogbUxhYmVsKCksCiAgICAgICBtQ29s
b3JBdHRhY2htZW50cyhjYXBzLm1heENvbG9yQXR0YWNobWVudHMpLAogICAgICAgbURyYXdCdWZm
ZXJTdGF0ZXMoY2Fwcy5tYXhEcmF3QnVmZmVycywgR0xfTk9ORSksCi0gICAgICBtUmVhZEJ1ZmZl
clN0YXRlKEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVCkKKyAgICAgIG1SZWFkQnVmZmVyU3RhdGUo
R0xfQ09MT1JfQVRUQUNITUVOVDBfRVhUKSwKKyAgICAgIG1EZWZhdWx0V2lkdGgoMCksCisgICAg
ICBtRGVmYXVsdEhlaWdodCgwKSwKKyAgICAgIG1EZWZhdWx0U2FtcGxlcygwKSwKKyAgICAgIG1E
ZWZhdWx0Rml4ZWRTYW1wbGVMb2NhdGlvbnMoR0xfRkFMU0UpLAorICAgICAgbVdlYkdMRGVwdGhT
dGVuY2lsQ29uc2lzdGVudCh0cnVlKQogewogICAgIEFTU0VSVChtRHJhd0J1ZmZlclN0YXRlcy5z
aXplKCkgPiAwKTsKICAgICBtRHJhd0J1ZmZlclN0YXRlc1swXSA9IEdMX0NPTE9SX0FUVEFDSE1F
TlQwX0VYVDsKQEAgLTk2LDEyICsxMTEsMjYgQEAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50
ICpGcmFtZWJ1ZmZlclN0YXRlOjpnZXRBdHRhY2htZW50KEdMZW51bSBhdHRhY2htZW50KQogCiBj
b25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKkZyYW1lYnVmZmVyU3RhdGU6OmdldFJlYWRBdHRh
Y2htZW50KCkgY29uc3QKIHsKKyAgICBpZiAobVJlYWRCdWZmZXJTdGF0ZSA9PSBHTF9OT05FKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogICAgIEFTU0VSVChtUmVhZEJ1
ZmZlclN0YXRlID09IEdMX0JBQ0sgfHwgKG1SZWFkQnVmZmVyU3RhdGUgPj0gR0xfQ09MT1JfQVRU
QUNITUVOVDAgJiYgbVJlYWRCdWZmZXJTdGF0ZSA8PSBHTF9DT0xPUl9BVFRBQ0hNRU5UMTUpKTsK
ICAgICBzaXplX3QgcmVhZEluZGV4ID0gKG1SZWFkQnVmZmVyU3RhdGUgPT0gR0xfQkFDSyA/IDAg
OiBzdGF0aWNfY2FzdDxzaXplX3Q+KG1SZWFkQnVmZmVyU3RhdGUgLSBHTF9DT0xPUl9BVFRBQ0hN
RU5UMCkpOwogICAgIEFTU0VSVChyZWFkSW5kZXggPCBtQ29sb3JBdHRhY2htZW50cy5zaXplKCkp
OwogICAgIHJldHVybiBtQ29sb3JBdHRhY2htZW50c1tyZWFkSW5kZXhdLmlzQXR0YWNoZWQoKSA/
ICZtQ29sb3JBdHRhY2htZW50c1tyZWFkSW5kZXhdIDogbnVsbHB0cjsKIH0KIAorY29uc3QgRnJh
bWVidWZmZXJBdHRhY2htZW50ICpGcmFtZWJ1ZmZlclN0YXRlOjpnZXRGaXJzdE5vbk51bGxBdHRh
Y2htZW50KCkgY29uc3QKK3sKKyAgICBhdXRvICpjb2xvckF0dGFjaG1lbnQgPSBnZXRGaXJzdENv
bG9yQXR0YWNobWVudCgpOworICAgIGlmIChjb2xvckF0dGFjaG1lbnQpCisgICAgeworICAgICAg
ICByZXR1cm4gY29sb3JBdHRhY2htZW50OworICAgIH0KKyAgICByZXR1cm4gZ2V0RGVwdGhPclN0
ZW5jaWxBdHRhY2htZW50KCk7Cit9CisKIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqRnJh
bWVidWZmZXJTdGF0ZTo6Z2V0Rmlyc3RDb2xvckF0dGFjaG1lbnQoKSBjb25zdAogewogICAgIGZv
ciAoY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICZjb2xvckF0dGFjaG1lbnQgOiBtQ29sb3JB
dHRhY2htZW50cykKQEAgLTEyOCw2ICsxNTcsMTUgQEAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2ht
ZW50ICpGcmFtZWJ1ZmZlclN0YXRlOjpnZXREZXB0aE9yU3RlbmNpbEF0dGFjaG1lbnQoKSBjb24K
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAorY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpG
cmFtZWJ1ZmZlclN0YXRlOjpnZXRTdGVuY2lsT3JEZXB0aFN0ZW5jaWxBdHRhY2htZW50KCkgY29u
c3QKK3sKKyAgICBpZiAobVN0ZW5jaWxBdHRhY2htZW50LmlzQXR0YWNoZWQoKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiAmbVN0ZW5jaWxBdHRhY2htZW50OworICAgIH0KKyAgICByZXR1cm4gZ2V0
RGVwdGhTdGVuY2lsQXR0YWNobWVudCgpOworfQorCiBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQgKkZyYW1lYnVmZmVyU3RhdGU6OmdldENvbG9yQXR0YWNobWVudChzaXplX3QgY29sb3JBdHRh
Y2htZW50KSBjb25zdAogewogICAgIEFTU0VSVChjb2xvckF0dGFjaG1lbnQgPCBtQ29sb3JBdHRh
Y2htZW50cy5zaXplKCkpOwpAQCAtMTUxLDggKzE4OSw3IEBAIGNvbnN0IEZyYW1lYnVmZmVyQXR0
YWNobWVudCAqRnJhbWVidWZmZXJTdGF0ZTo6Z2V0RGVwdGhTdGVuY2lsQXR0YWNobWVudCgpIGNv
bnN0CiAgICAgLy8gQSB2YWxpZCBkZXB0aC1zdGVuY2lsIGF0dGFjaG1lbnQgaGFzIHRoZSBzYW1l
IHJlc291cmNlIGJvdW5kIHRvIGJvdGggdGhlCiAgICAgLy8gZGVwdGggYW5kIHN0ZW5jaWwgYXR0
YWNobWVudCBwb2ludHMuCiAgICAgaWYgKG1EZXB0aEF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpICYm
IG1TdGVuY2lsQXR0YWNobWVudC5pc0F0dGFjaGVkKCkgJiYKLSAgICAgICAgbURlcHRoQXR0YWNo
bWVudC50eXBlKCkgPT0gbVN0ZW5jaWxBdHRhY2htZW50LnR5cGUoKSAmJgotICAgICAgICBtRGVw
dGhBdHRhY2htZW50LmlkKCkgPT0gbVN0ZW5jaWxBdHRhY2htZW50LmlkKCkpCisgICAgICAgIG1E
ZXB0aEF0dGFjaG1lbnQgPT0gbVN0ZW5jaWxBdHRhY2htZW50KQogICAgIHsKICAgICAgICAgcmV0
dXJuICZtRGVwdGhBdHRhY2htZW50OwogICAgIH0KQEAgLTI2MSwyNCArMjk4LDQ3IEBAIEZyYW1l
YnVmZmVyOjpGcmFtZWJ1ZmZlcihjb25zdCBDYXBzICZjYXBzLCByeDo6R0xJbXBsRmFjdG9yeSAq
ZmFjdG9yeSwgR0x1aW50IGlkCiAgICAgQVNTRVJUKG1JbXBsICE9IG51bGxwdHIpOwogICAgIEFT
U0VSVChtU3RhdGUubUNvbG9yQXR0YWNobWVudHMuc2l6ZSgpID09IHN0YXRpY19jYXN0PHNpemVf
dD4oY2Fwcy5tYXhDb2xvckF0dGFjaG1lbnRzKSk7CiAKLSAgICBmb3IgKHNpemVfdCBjb2xvcklu
ZGV4ID0gMDsgY29sb3JJbmRleCA8IG1TdGF0ZS5tQ29sb3JBdHRhY2htZW50cy5zaXplKCk7ICsr
Y29sb3JJbmRleCkKKyAgICBmb3IgKHVpbnQzMl90IGNvbG9ySW5kZXggPSAwOworICAgICAgICAg
Y29sb3JJbmRleCA8IHN0YXRpY19jYXN0PHVpbnQzMl90PihtU3RhdGUubUNvbG9yQXR0YWNobWVu
dHMuc2l6ZSgpKTsgKytjb2xvckluZGV4KQogICAgIHsKLSAgICAgICAgbURpcnR5Q29sb3JBdHRh
Y2htZW50QmluZGluZ3MucHVzaF9iYWNrKENoYW5uZWxCaW5kaW5nKAotICAgICAgICAgICAgdGhp
cywgc3RhdGljX2Nhc3Q8U2lnbmFsVG9rZW4+KERJUlRZX0JJVF9DT0xPUl9BVFRBQ0hNRU5UXzAg
KyBjb2xvckluZGV4KSkpOworICAgICAgICBtRGlydHlDb2xvckF0dGFjaG1lbnRCaW5kaW5ncy5l
bXBsYWNlX2JhY2sodGhpcywgRElSVFlfQklUX0NPTE9SX0FUVEFDSE1FTlRfMCArIGNvbG9ySW5k
ZXgpOwogICAgIH0KIH0KIAotRnJhbWVidWZmZXI6OkZyYW1lYnVmZmVyKHJ4OjpTdXJmYWNlSW1w
bCAqc3VyZmFjZSkKK0ZyYW1lYnVmZmVyOjpGcmFtZWJ1ZmZlcihlZ2w6OlN1cmZhY2UgKnN1cmZh
Y2UpCiAgICAgOiBtU3RhdGUoKSwKLSAgICAgIG1JbXBsKHN1cmZhY2UtPmNyZWF0ZURlZmF1bHRG
cmFtZWJ1ZmZlcihtU3RhdGUpKSwKKyAgICAgIG1JbXBsKHN1cmZhY2UtPmdldEltcGxlbWVudGF0
aW9uKCktPmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihtU3RhdGUpKSwKICAgICAgIG1JZCgwKSwK
ICAgICAgIG1DYWNoZWRTdGF0dXMoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpLAogICAgICAgbURp
cnR5RGVwdGhBdHRhY2htZW50QmluZGluZyh0aGlzLCBESVJUWV9CSVRfREVQVEhfQVRUQUNITUVO
VCksCiAgICAgICBtRGlydHlTdGVuY2lsQXR0YWNobWVudEJpbmRpbmcodGhpcywgRElSVFlfQklU
X1NURU5DSUxfQVRUQUNITUVOVCkKIHsKICAgICBBU1NFUlQobUltcGwgIT0gbnVsbHB0cik7Ci0g
ICAgbURpcnR5Q29sb3JBdHRhY2htZW50QmluZGluZ3MucHVzaF9iYWNrKAotICAgICAgICBDaGFu
bmVsQmluZGluZyh0aGlzLCBzdGF0aWNfY2FzdDxTaWduYWxUb2tlbj4oRElSVFlfQklUX0NPTE9S
X0FUVEFDSE1FTlRfMCkpKTsKKyAgICBtRGlydHlDb2xvckF0dGFjaG1lbnRCaW5kaW5ncy5lbXBs
YWNlX2JhY2sodGhpcywgRElSVFlfQklUX0NPTE9SX0FUVEFDSE1FTlRfMCk7CisKKyAgICBzZXRB
dHRhY2htZW50SW1wbChHTF9GUkFNRUJVRkZFUl9ERUZBVUxULCBHTF9CQUNLLCBnbDo6SW1hZ2VJ
bmRleDo6TWFrZUludmFsaWQoKSwgc3VyZmFjZSk7CisKKyAgICBpZiAoc3VyZmFjZS0+Z2V0Q29u
ZmlnKCktPmRlcHRoU2l6ZSA+IDApCisgICAgeworICAgICAgICBzZXRBdHRhY2htZW50SW1wbChH
TF9GUkFNRUJVRkZFUl9ERUZBVUxULCBHTF9ERVBUSCwgZ2w6OkltYWdlSW5kZXg6Ok1ha2VJbnZh
bGlkKCksIHN1cmZhY2UpOworICAgIH0KKworICAgIGlmIChzdXJmYWNlLT5nZXRDb25maWcoKS0+
c3RlbmNpbFNpemUgPiAwKQorICAgIHsKKyAgICAgICAgc2V0QXR0YWNobWVudEltcGwoR0xfRlJB
TUVCVUZGRVJfREVGQVVMVCwgR0xfU1RFTkNJTCwgZ2w6OkltYWdlSW5kZXg6Ok1ha2VJbnZhbGlk
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cmZhY2UpOworICAgIH0KK30KKworRnJh
bWVidWZmZXI6OkZyYW1lYnVmZmVyKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5KQorICAgIDog
bVN0YXRlKCksCisgICAgICBtSW1wbChmYWN0b3J5LT5jcmVhdGVGcmFtZWJ1ZmZlcihtU3RhdGUp
KSwKKyAgICAgIG1JZCgwKSwKKyAgICAgIG1DYWNoZWRTdGF0dXMoR0xfRlJBTUVCVUZGRVJfVU5E
RUZJTkVEX09FUyksCisgICAgICBtRGlydHlEZXB0aEF0dGFjaG1lbnRCaW5kaW5nKHRoaXMsIERJ
UlRZX0JJVF9ERVBUSF9BVFRBQ0hNRU5UKSwKKyAgICAgIG1EaXJ0eVN0ZW5jaWxBdHRhY2htZW50
QmluZGluZyh0aGlzLCBESVJUWV9CSVRfU1RFTkNJTF9BVFRBQ0hNRU5UKQoreworICAgIG1EaXJ0
eUNvbG9yQXR0YWNobWVudEJpbmRpbmdzLmVtcGxhY2VfYmFjayh0aGlzLCBESVJUWV9CSVRfQ09M
T1JfQVRUQUNITUVOVF8wKTsKIH0KIAogRnJhbWVidWZmZXI6On5GcmFtZWJ1ZmZlcigpCkBAIC0y
ODYsNiArMzQ2LDE2IEBAIEZyYW1lYnVmZmVyOjp+RnJhbWVidWZmZXIoKQogICAgIFNhZmVEZWxl
dGUobUltcGwpOwogfQogCit2b2lkIEZyYW1lYnVmZmVyOjpkZXN0cm95KGNvbnN0IENvbnRleHQg
KmNvbnRleHQpCit7CisgICAgbUltcGwtPmRlc3Ryb3kocng6OlNhZmVHZXRJbXBsKGNvbnRleHQp
KTsKK30KKwordm9pZCBGcmFtZWJ1ZmZlcjo6ZGVzdHJveURlZmF1bHQoY29uc3QgZWdsOjpEaXNw
bGF5ICpkaXNwbGF5KQoreworICAgIG1JbXBsLT5kZXN0cm95RGVmYXVsdChyeDo6U2FmZUdldElt
cGwoZGlzcGxheSkpOworfQorCiB2b2lkIEZyYW1lYnVmZmVyOjpzZXRMYWJlbChjb25zdCBzdGQ6
OnN0cmluZyAmbGFiZWwpCiB7CiAgICAgbVN0YXRlLm1MYWJlbCA9IGxhYmVsOwpAQCAtMjk2LDE3
ICszNjYsMTcgQEAgY29uc3Qgc3RkOjpzdHJpbmcgJkZyYW1lYnVmZmVyOjpnZXRMYWJlbCgpIGNv
bnN0CiAgICAgcmV0dXJuIG1TdGF0ZS5tTGFiZWw7CiB9CiAKLXZvaWQgRnJhbWVidWZmZXI6OmRl
dGFjaFRleHR1cmUoR0x1aW50IHRleHR1cmVJZCkKK3ZvaWQgRnJhbWVidWZmZXI6OmRldGFjaFRl
eHR1cmUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHRleHR1cmVJZCkKIHsKLSAgICBk
ZXRhY2hSZXNvdXJjZUJ5SWQoR0xfVEVYVFVSRSwgdGV4dHVyZUlkKTsKKyAgICBkZXRhY2hSZXNv
dXJjZUJ5SWQoY29udGV4dCwgR0xfVEVYVFVSRSwgdGV4dHVyZUlkKTsKIH0KIAotdm9pZCBGcmFt
ZWJ1ZmZlcjo6ZGV0YWNoUmVuZGVyYnVmZmVyKEdMdWludCByZW5kZXJidWZmZXJJZCkKK3ZvaWQg
RnJhbWVidWZmZXI6OmRldGFjaFJlbmRlcmJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBH
THVpbnQgcmVuZGVyYnVmZmVySWQpCiB7Ci0gICAgZGV0YWNoUmVzb3VyY2VCeUlkKEdMX1JFTkRF
UkJVRkZFUiwgcmVuZGVyYnVmZmVySWQpOworICAgIGRldGFjaFJlc291cmNlQnlJZChjb250ZXh0
LCBHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcklkKTsKIH0KIAotdm9pZCBGcmFtZWJ1ZmZl
cjo6ZGV0YWNoUmVzb3VyY2VCeUlkKEdMZW51bSByZXNvdXJjZVR5cGUsIEdMdWludCByZXNvdXJj
ZUlkKQordm9pZCBGcmFtZWJ1ZmZlcjo6ZGV0YWNoUmVzb3VyY2VCeUlkKGNvbnN0IENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSByZXNvdXJjZVR5cGUsIEdMdWludCByZXNvdXJjZUlkKQogewogICAg
IGZvciAoc2l6ZV90IGNvbG9ySW5kZXggPSAwOyBjb2xvckluZGV4IDwgbVN0YXRlLm1Db2xvckF0
dGFjaG1lbnRzLnNpemUoKTsgKytjb2xvckluZGV4KQogICAgIHsKQEAgLTMxNCwxMCArMzg0LDI3
IEBAIHZvaWQgRnJhbWVidWZmZXI6OmRldGFjaFJlc291cmNlQnlJZChHTGVudW0gcmVzb3VyY2VU
eXBlLCBHTHVpbnQgcmVzb3VyY2VJZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERJUlRZX0JJVF9DT0xPUl9BVFRBQ0hNRU5UXzAgKyBjb2xvckluZGV4KTsKICAgICB9CiAKLSAg
ICBkZXRhY2hNYXRjaGluZ0F0dGFjaG1lbnQoJm1TdGF0ZS5tRGVwdGhBdHRhY2htZW50LCByZXNv
dXJjZVR5cGUsIHJlc291cmNlSWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIERJUlRZ
X0JJVF9ERVBUSF9BVFRBQ0hNRU5UKTsKLSAgICBkZXRhY2hNYXRjaGluZ0F0dGFjaG1lbnQoJm1T
dGF0ZS5tU3RlbmNpbEF0dGFjaG1lbnQsIHJlc291cmNlVHlwZSwgcmVzb3VyY2VJZCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRElSVFlfQklUX1NURU5DSUxfQVRUQUNITUVOVCk7Cisg
ICAgaWYgKGNvbnRleHQtPmlzV2ViR0wxKCkpCisgICAgeworICAgICAgICBjb25zdCBzdGQ6OmFy
cmF5PEZyYW1lYnVmZmVyQXR0YWNobWVudCAqLCAzPiBhdHRhY2htZW50cyA9IHsKKyAgICAgICAg
ICAgIHsmbVN0YXRlLm1XZWJHTERlcHRoU3RlbmNpbEF0dGFjaG1lbnQsICZtU3RhdGUubVdlYkdM
RGVwdGhBdHRhY2htZW50LAorICAgICAgICAgICAgICZtU3RhdGUubVdlYkdMU3RlbmNpbEF0dGFj
aG1lbnR9fTsKKyAgICAgICAgZm9yIChGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1lbnQg
OiBhdHRhY2htZW50cykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQtPmlz
QXR0YWNoZWQoKSAmJiBhdHRhY2htZW50LT50eXBlKCkgPT0gcmVzb3VyY2VUeXBlICYmCisgICAg
ICAgICAgICAgICAgYXR0YWNobWVudC0+aWQoKSA9PSByZXNvdXJjZUlkKQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJlc2V0QXR0YWNobWVudChjb250ZXh0LCBhdHRhY2htZW50LT5n
ZXRCaW5kaW5nKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIGRldGFjaE1hdGNoaW5nQXR0YWNobWVudCgmbVN0YXRlLm1EZXB0aEF0
dGFjaG1lbnQsIHJlc291cmNlVHlwZSwgcmVzb3VyY2VJZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERJUlRZX0JJVF9ERVBUSF9BVFRBQ0hNRU5UKTsKKyAgICAgICAgZGV0YWNo
TWF0Y2hpbmdBdHRhY2htZW50KCZtU3RhdGUubVN0ZW5jaWxBdHRhY2htZW50LCByZXNvdXJjZVR5
cGUsIHJlc291cmNlSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBESVJUWV9C
SVRfU1RFTkNJTF9BVFRBQ0hNRU5UKTsKKyAgICB9CiB9CiAKIHZvaWQgRnJhbWVidWZmZXI6OmRl
dGFjaE1hdGNoaW5nQXR0YWNobWVudChGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1lbnQs
CkBAIC0zNTcsNiArNDQ0LDExIEBAIGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqRnJhbWVi
dWZmZXI6OmdldERlcHRoT3JTdGVuY2lsYnVmZmVyKCkgY29uc3QKICAgICByZXR1cm4gbVN0YXRl
LmdldERlcHRoT3JTdGVuY2lsQXR0YWNobWVudCgpOwogfQogCitjb25zdCBGcmFtZWJ1ZmZlckF0
dGFjaG1lbnQgKkZyYW1lYnVmZmVyOjpnZXRTdGVuY2lsT3JEZXB0aFN0ZW5jaWxBdHRhY2htZW50
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRlLmdldFN0ZW5jaWxPckRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQoKTsKK30KKwogY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpGcmFtZWJ1ZmZl
cjo6Z2V0UmVhZENvbG9yYnVmZmVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbVN0YXRlLmdldFJl
YWRBdHRhY2htZW50KCk7CkBAIC00MDIsNiArNDk0LDE1IEBAIHZvaWQgRnJhbWVidWZmZXI6OnNl
dERyYXdCdWZmZXJzKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICpidWZmZXJzKQogICAgIHN0
ZDo6Y29weShidWZmZXJzLCBidWZmZXJzICsgY291bnQsIGRyYXdTdGF0ZXMuYmVnaW4oKSk7CiAg
ICAgc3RkOjpmaWxsKGRyYXdTdGF0ZXMuYmVnaW4oKSArIGNvdW50LCBkcmF3U3RhdGVzLmVuZCgp
LCBHTF9OT05FKTsKICAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfRFJBV19CVUZGRVJTKTsK
KworICAgIG1TdGF0ZS5tRW5hYmxlZERyYXdCdWZmZXJzLnJlc2V0KCk7CisgICAgZm9yIChzaXpl
X3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyArK2luZGV4KQorICAgIHsKKyAgICAgICAgaWYg
KGRyYXdTdGF0ZXNbaW5kZXhdICE9IEdMX05PTkUgJiYgbVN0YXRlLm1Db2xvckF0dGFjaG1lbnRz
W2luZGV4XS5pc0F0dGFjaGVkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1TdGF0ZS5tRW5h
YmxlZERyYXdCdWZmZXJzLnNldChpbmRleCk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIGNvbnN0
IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqRnJhbWVidWZmZXI6OmdldERyYXdCdWZmZXIoc2l6ZV90
IGRyYXdCdWZmZXIpIGNvbnN0CkBAIC00NjUsMzAgKzU2Niw0NiBAQCBib29sIEZyYW1lYnVmZmVy
Ojp1c2luZ0V4dGVuZGVkRHJhd0J1ZmZlcnMoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotR0xlbnVtIEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1cyhjb25zdCBDb250ZXh0U3RhdGUgJnN0
YXRlKQordm9pZCBGcmFtZWJ1ZmZlcjo6aW52YWxpZGF0ZUNvbXBsZXRlbmVzc0NhY2hlKCkKIHsK
LSAgICAvLyBUaGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciAqbXVzdCogYWx3YXlzIGJlIGNvbXBsZXRl
LCB0aG91Z2ggaXQgbWF5IG5vdCBiZQotICAgIC8vIHN1YmplY3QgdG8gdGhlIHNhbWUgcnVsZXMg
YXMgYXBwbGljYXRpb24gRkJPcy4gaWUsIGl0IGNvdWxkIGhhdmUgMHgwIHNpemUuCisgICAgaWYg
KG1JZCAhPSAwKQorICAgIHsKKyAgICAgICAgbUNhY2hlZFN0YXR1cy5yZXNldCgpOworICAgIH0K
K30KKworR0xlbnVtIEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1cyhjb25zdCBDb250ZXh0ICpjb250
ZXh0KQoreworICAgIC8vIFRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGlzIGFsd2F5cyBjb21wbGV0
ZSBleGNlcHQgd2hlbiBpdCBpcyBzdXJmYWNlbGVzcyBpbiB3aGljaAorICAgIC8vIGNhc2UgaXQg
aXMgYWx3YXlzIHVuc3VwcG9ydGVkLiBXZSByZXR1cm4gZWFybHkgYmVjYXVzZSB0aGUgZGVmYXVs
dCBmcmFtZWJ1ZmZlciBtYXkKKyAgICAvLyBub3QgYmUgc3ViamVjdCB0byB0aGUgc2FtZSBydWxl
cyBhcyBhcHBsaWNhdGlvbiBGQk9zLiBpZSwgaXQgY291bGQgaGF2ZSAweDAgc2l6ZS4KICAgICBp
ZiAobUlkID09IDApCiAgICAgewotICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfQ09NUExF
VEU7CisgICAgICAgIEFTU0VSVChtQ2FjaGVkU3RhdHVzLnZhbGlkKCkpOworICAgICAgICBBU1NF
UlQobUNhY2hlZFN0YXR1cy52YWx1ZSgpID09IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFIHx8Cisg
ICAgICAgICAgICAgICBtQ2FjaGVkU3RhdHVzLnZhbHVlKCkgPT0gR0xfRlJBTUVCVUZGRVJfVU5E
RUZJTkVEX09FUyk7CisgICAgICAgIHJldHVybiBtQ2FjaGVkU3RhdHVzLnZhbHVlKCk7CiAgICAg
fQogCiAgICAgaWYgKGhhc0FueURpcnR5Qml0KCkgfHwgIW1DYWNoZWRTdGF0dXMudmFsaWQoKSkK
ICAgICB7Ci0gICAgICAgIG1DYWNoZWRTdGF0dXMgPSBjaGVja1N0YXR1c0ltcGwoc3RhdGUpOwor
ICAgICAgICBtQ2FjaGVkU3RhdHVzID0gY2hlY2tTdGF0dXNJbXBsKGNvbnRleHQpOwogICAgIH0K
IAogICAgIHJldHVybiBtQ2FjaGVkU3RhdHVzLnZhbHVlKCk7CiB9CiAKLUdMZW51bSBGcmFtZWJ1
ZmZlcjo6Y2hlY2tTdGF0dXNJbXBsKGNvbnN0IENvbnRleHRTdGF0ZSAmc3RhdGUpCitHTGVudW0g
RnJhbWVidWZmZXI6OmNoZWNrU3RhdHVzSW1wbChjb25zdCBDb250ZXh0ICpjb250ZXh0KQogewor
ICAgIGNvbnN0IENvbnRleHRTdGF0ZSAmc3RhdGUgPSBjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUo
KTsKKwogICAgIEFTU0VSVChtSWQgIT0gMCk7CiAKICAgICB1bnNpZ25lZCBpbnQgY29sb3JidWZm
ZXJTaXplID0gMDsKICAgICBpbnQgc2FtcGxlcyA9IC0xOwogICAgIGJvb2wgbWlzc2luZ0F0dGFj
aG1lbnQgPSB0cnVlOworICAgIE9wdGlvbmFsPEdMYm9vbGVhbj4gZml4ZWRTYW1wbGVMb2NhdGlv
bnM7CisgICAgYm9vbCBoYXNSZW5kZXJidWZmZXIgPSBmYWxzZTsKIAogICAgIGZvciAoY29uc3Qg
RnJhbWVidWZmZXJBdHRhY2htZW50ICZjb2xvckF0dGFjaG1lbnQgOiBtU3RhdGUubUNvbG9yQXR0
YWNobWVudHMpCiAgICAgewpAQCAtNTMwLDkgKzY0NywyMyBAQCBHTGVudW0gRnJhbWVidWZmZXI6
OmNoZWNrU3RhdHVzSW1wbChjb25zdCBDb250ZXh0U3RhdGUgJnN0YXRlKQogICAgICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExF
VEVfQVRUQUNITUVOVDsKICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBF
UzMuMSAoc2VjdGlvbiA5LjQpIHJlcXVpcmVzIHRoYXQgdGhlIHZhbHVlIG9mIFRFWFRVUkVfRklY
RURfU0FNUExFX0xPQ0FUSU9OUworICAgICAgICAgICAgICAgIC8vIHNob3VsZCBiZSB0aGUgc2Ft
ZSBmb3IgYWxsIGF0dGFjaGVkIHRleHR1cmVzLgorICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBm
aXhlZFNhbXBsZWxvYyA9IGNvbG9yQXR0YWNobWVudC5nZXRUZXh0dXJlKCktPmdldEZpeGVkU2Ft
cGxlTG9jYXRpb25zKAorICAgICAgICAgICAgICAgICAgICBjb2xvckF0dGFjaG1lbnQuZ2V0VGV4
dHVyZUltYWdlSW5kZXgoKS50eXBlLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAoZml4ZWRTYW1w
bGVMb2NhdGlvbnMudmFsaWQoKSAmJiBmaXhlZFNhbXBsZWxvYyAhPSBmaXhlZFNhbXBsZUxvY2F0
aW9ucy52YWx1ZSgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEU7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIGZpeGVkU2FtcGxlTG9jYXRpb25zID0gZml4ZWRTYW1wbGVsb2M7CisgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoY29sb3JBdHRh
Y2htZW50LnR5cGUoKSA9PSBHTF9SRU5ERVJCVUZGRVIpCiAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgaGFzUmVuZGVyYnVmZmVyID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBpZiAoIWZv
cm1hdENhcHMucmVuZGVyYWJsZSB8fCBmb3JtYXQuaW5mby0+ZGVwdGhCaXRzID4gMCB8fAogICAg
ICAgICAgICAgICAgICAgICBmb3JtYXQuaW5mby0+c3RlbmNpbEJpdHMgPiAwKQogICAgICAgICAg
ICAgICAgIHsKQEAgLTU2MSw3ICs2OTIsNyBAQCBHTGVudW0gRnJhbWVidWZmZXI6OmNoZWNrU3Rh
dHVzSW1wbChjb25zdCBDb250ZXh0U3RhdGUgJnN0YXRlKQogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHNhbXBsZXMgPSBjb2xv
ckF0dGFjaG1lbnQuZ2V0U2FtcGxlcygpOworICAgICAgICAgICAgICAgIHNhbXBsZXMgICAgICAg
ICAgID0gY29sb3JBdHRhY2htZW50LmdldFNhbXBsZXMoKTsKICAgICAgICAgICAgICAgICBjb2xv
cmJ1ZmZlclNpemUgICA9IGZvcm1hdC5pbmZvLT5waXhlbEJ5dGVzOwogICAgICAgICAgICAgICAg
IG1pc3NpbmdBdHRhY2htZW50ID0gZmFsc2U7CiAgICAgICAgICAgICB9CkBAIC01ODEsMTIgKzcx
Miw2IEBAIEdMZW51bSBGcmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0dXNJbXBsKGNvbnN0IENvbnRleHRT
dGF0ZSAmc3RhdGUpCiAgICAgICAgIGNvbnN0IFRleHR1cmVDYXBzICZmb3JtYXRDYXBzID0gc3Rh
dGUuZ2V0VGV4dHVyZUNhcChmb3JtYXQuYXNTaXplZCgpKTsKICAgICAgICAgaWYgKGRlcHRoQXR0
YWNobWVudC50eXBlKCkgPT0gR0xfVEVYVFVSRSkKICAgICAgICAgewotICAgICAgICAgICAgLy8g
ZGVwdGggdGV4dHVyZSBhdHRhY2htZW50cyByZXF1aXJlIE9FUy9BTkdMRV9kZXB0aF90ZXh0dXJl
Ci0gICAgICAgICAgICBpZiAoIXN0YXRlLmdldEV4dGVuc2lvbnMoKS5kZXB0aFRleHR1cmVzKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9JTkNP
TVBMRVRFX0FUVEFDSE1FTlQ7Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIGlmICghZm9y
bWF0Q2Fwcy5yZW5kZXJhYmxlKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJldHVy
biBHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CkBAIC02MzksMTMgKzc2NCw2
IEBAIEdMZW51bSBGcmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0dXNJbXBsKGNvbnN0IENvbnRleHRTdGF0
ZSAmc3RhdGUpCiAgICAgICAgIGNvbnN0IFRleHR1cmVDYXBzICZmb3JtYXRDYXBzID0gc3RhdGUu
Z2V0VGV4dHVyZUNhcChmb3JtYXQuYXNTaXplZCgpKTsKICAgICAgICAgaWYgKHN0ZW5jaWxBdHRh
Y2htZW50LnR5cGUoKSA9PSBHTF9URVhUVVJFKQogICAgICAgICB7Ci0gICAgICAgICAgICAvLyB0
ZXh0dXJlIHN0ZW5jaWwgYXR0YWNobWVudHMgY29tZSBhbG9uZyBhcyBwYXJ0Ci0gICAgICAgICAg
ICAvLyBvZiBPRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwgKyBPRVMvQU5HTEVfZGVwdGhfdGV4dHVy
ZQotICAgICAgICAgICAgaWYgKCFzdGF0ZS5nZXRFeHRlbnNpb25zKCkuZGVwdGhUZXh0dXJlcykK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5D
T01QTEVURV9BVFRBQ0hNRU5UOwotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBpZiAoIWZv
cm1hdENhcHMucmVuZGVyYWJsZSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1
cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOwpAQCAtNjkwLDggKzgwOCw0
MiBAQCBHTGVudW0gRnJhbWVidWZmZXI6OmNoZWNrU3RhdHVzSW1wbChjb25zdCBDb250ZXh0U3Rh
dGUgJnN0YXRlKQogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gd2UgbmVlZCB0byBoYXZlIGF0
IGxlYXN0IG9uZSBhdHRhY2htZW50IHRvIGJlIGNvbXBsZXRlCi0gICAgaWYgKG1pc3NpbmdBdHRh
Y2htZW50KQorICAgIC8vIFNwZWNpYWwgYWRkaXRpb25hbCB2YWxpZGF0aW9uIGZvciBXZWJHTCAx
IERFUFRIL1NURU5DSUwvREVQVEhfU1RFTkNJTC4KKyAgICBpZiAoc3RhdGUuaXNXZWJHTDEoKSkK
KyAgICB7CisgICAgICAgIGlmICghbVN0YXRlLm1XZWJHTERlcHRoU3RlbmNpbENvbnNpc3RlbnQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRF
RDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtU3RhdGUubVdlYkdMRGVwdGhTdGVuY2lsQXR0
YWNobWVudC5pc0F0dGFjaGVkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChtU3RhdGUu
bVdlYkdMRGVwdGhTdGVuY2lsQXR0YWNobWVudC5nZXREZXB0aFNpemUoKSA9PSAwIHx8CisgICAg
ICAgICAgICAgICAgbVN0YXRlLm1XZWJHTERlcHRoU3RlbmNpbEF0dGFjaG1lbnQuZ2V0U3RlbmNp
bFNpemUoKSA9PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBHTF9G
UkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgZWxzZSBpZiAobVN0YXRlLm1TdGVuY2lsQXR0YWNobWVudC5pc0F0dGFjaGVk
KCkgJiYKKyAgICAgICAgICAgICAgICAgbVN0YXRlLm1TdGVuY2lsQXR0YWNobWVudC5nZXREZXB0
aFNpemUoKSA+IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBHTF9GUkFNRUJVRkZF
Ul9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobVN0
YXRlLm1EZXB0aEF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpICYmCisgICAgICAgICAgICAgICAgIG1T
dGF0ZS5tRGVwdGhBdHRhY2htZW50LmdldFN0ZW5jaWxTaXplKCkgPiAwKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOwor
ICAgICAgICB9CisgICAgfQorCisgICAgLy8gRVMzLjEoc2VjdGlvbiA5LjQpIHJlcXVpcmVzIHRo
YXQgaWYgbm8gaW1hZ2UgaXMgYXR0YWNoZWQgdG8gdGhlCisgICAgLy8gZnJhbWVidWZmZXIsIGFu
ZCBlaXRoZXIgdGhlIHZhbHVlIG9mIHRoZSBmcmFtZWJ1ZmZlcidzIEZSQU1FQlVGRkVSX0RFRkFV
TFRfV0lEVEgKKyAgICAvLyBvciBGUkFNRUJVRkZFUl9ERUZBVUxUX0hFSUdIVCBwYXJhbWV0ZXJz
IGlzIHplcm8sIHRoZSBmcmFtZWJ1ZmZlciBpcworICAgIC8vIGNvbnNpZGVyZWQgaW5jb21wbGV0
ZS4KKyAgICBHTGludCBkZWZhdWx0V2lkdGggID0gbVN0YXRlLmdldERlZmF1bHRXaWR0aCgpOwor
ICAgIEdMaW50IGRlZmF1bHRIZWlnaHQgPSBtU3RhdGUuZ2V0RGVmYXVsdEhlaWdodCgpOworCisg
ICAgaWYgKG1pc3NpbmdBdHRhY2htZW50ICYmIChkZWZhdWx0V2lkdGggPT0gMCB8fCBkZWZhdWx0
SGVpZ2h0ID09IDApKQogICAgIHsKICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09N
UExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UOwogICAgIH0KQEAgLTcwMyw3ICs4NTUsMTUgQEAgR0xl
bnVtIEZyYW1lYnVmZmVyOjpjaGVja1N0YXR1c0ltcGwoY29uc3QgQ29udGV4dFN0YXRlICZzdGF0
ZSkKICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUzsK
ICAgICB9CiAKLSAgICBzeW5jU3RhdGUoKTsKKyAgICAvLyBFUzMuMShzZWN0aW9uIDkuNCkgcmVx
dWlyZXMgdGhhdCBpZiB0aGUgYXR0YWNoZWQgaW1hZ2VzIGFyZSBhIG1peCBvZiByZW5kZXJidWZm
ZXJzCisgICAgLy8gYW5kIHRleHR1cmVzLCB0aGUgdmFsdWUgb2YgVEVYVFVSRV9GSVhFRF9TQU1Q
TEVfTE9DQVRJT05TIG11c3QgYmUgVFJVRSBmb3IgYWxsCisgICAgLy8gYXR0YWNoZWQgdGV4dHVy
ZXMuCisgICAgaWYgKGZpeGVkU2FtcGxlTG9jYXRpb25zLnZhbGlkKCkgJiYgaGFzUmVuZGVyYnVm
ZmVyICYmICFmaXhlZFNhbXBsZUxvY2F0aW9ucy52YWx1ZSgpKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEU7CisgICAgfQorCisgICAg
c3luY1N0YXRlKGNvbnRleHQpOwogICAgIGlmICghbUltcGwtPmNoZWNrU3RhdHVzKCkpCiAgICAg
ewogICAgICAgICByZXR1cm4gR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ7CkBAIC04MjMsMTIg
Kzk4MywzNiBAQCBFcnJvciBGcmFtZWJ1ZmZlcjo6YmxpdChyeDo6Q29udGV4dEltcGwgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIG1hc2ssCiAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyKQogewotICAgIHJldHVybiBtSW1wbC0+YmxpdChj
b250ZXh0LCBzb3VyY2VBcmVhLCBkZXN0QXJlYSwgbWFzaywgZmlsdGVyKTsKKyAgICBHTGJpdGZp
ZWxkIGJsaXRNYXNrID0gbWFzazsKKworICAgIC8vIE5vdGUgdGhhdCBibGl0dGluZyBpcyBjYWxs
ZWQgYWdhaW5zdCBkcmF3IGZyYW1lYnVmZmVyLgorICAgIC8vIFNlZSB0aGUgY29kZSBpbiBnbDo6
Q29udGV4dDo6YmxpdEZyYW1lYnVmZmVyLgorICAgIGlmICgobWFzayAmIEdMX0NPTE9SX0JVRkZF
Ul9CSVQpICYmICFoYXNFbmFibGVkRHJhd0J1ZmZlcigpKQorICAgIHsKKyAgICAgICAgYmxpdE1h
c2sgJj0gfkdMX0NPTE9SX0JVRkZFUl9CSVQ7CisgICAgfQorCisgICAgaWYgKChtYXNrICYgR0xf
U1RFTkNJTF9CVUZGRVJfQklUKSAmJiBtU3RhdGUuZ2V0U3RlbmNpbEF0dGFjaG1lbnQoKSA9PSBu
dWxscHRyKQorICAgIHsKKyAgICAgICAgYmxpdE1hc2sgJj0gfkdMX1NURU5DSUxfQlVGRkVSX0JJ
VDsKKyAgICB9CisKKyAgICBpZiAoKG1hc2sgJiBHTF9ERVBUSF9CVUZGRVJfQklUKSAmJiBtU3Rh
dGUuZ2V0RGVwdGhBdHRhY2htZW50KCkgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIGJsaXRN
YXNrICY9IH5HTF9ERVBUSF9CVUZGRVJfQklUOworICAgIH0KKworICAgIGlmICghYmxpdE1hc2sp
CisgICAgeworICAgICAgICByZXR1cm4gTm9FcnJvcigpOworICAgIH0KKworICAgIHJldHVybiBt
SW1wbC0+YmxpdChjb250ZXh0LCBzb3VyY2VBcmVhLCBkZXN0QXJlYSwgYmxpdE1hc2ssIGZpbHRl
cik7CiB9CiAKLWludCBGcmFtZWJ1ZmZlcjo6Z2V0U2FtcGxlcyhjb25zdCBDb250ZXh0U3RhdGUg
JnN0YXRlKQoraW50IEZyYW1lYnVmZmVyOjpnZXRTYW1wbGVzKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQpCiB7Ci0gICAgaWYgKGNvbXBsZXRlKHN0YXRlKSkKKyAgICBpZiAoY29tcGxldGUoY29udGV4
dCkpCiAgICAgewogICAgICAgICAvLyBGb3IgYSBjb21wbGV0ZSBmcmFtZWJ1ZmZlciwgYWxsIGF0
dGFjaG1lbnRzIG11c3QgaGF2ZSB0aGUgc2FtZSBzYW1wbGUgY291bnQuCiAgICAgICAgIC8vIElu
IHRoaXMgY2FzZSByZXR1cm4gdGhlIGZpcnN0IG5vbnplcm8gc2FtcGxlIHNpemUuCkBAIC04NDMs
MTYgKzEwMjcsMTIxIEBAIGludCBGcmFtZWJ1ZmZlcjo6Z2V0U2FtcGxlcyhjb25zdCBDb250ZXh0
U3RhdGUgJnN0YXRlKQogICAgIHJldHVybiAwOwogfQogCitFcnJvciBGcmFtZWJ1ZmZlcjo6Z2V0
U2FtcGxlUG9zaXRpb24oc2l6ZV90IGluZGV4LCBHTGZsb2F0ICp4eSkgY29uc3QKK3sKKyAgICBB
TkdMRV9UUlkobUltcGwtPmdldFNhbXBsZVBvc2l0aW9uKGluZGV4LCB4eSkpOworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOworfQorCiBib29sIEZyYW1lYnVmZmVyOjpoYXNWYWxpZERlcHRoU3Rl
bmNpbCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1TdGF0ZS5nZXREZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50KCkgIT0gbnVsbHB0cjsKIH0KIAotdm9pZCBGcmFtZWJ1ZmZlcjo6c2V0QXR0YWNobWVudChH
TGVudW0gdHlwZSwKK3ZvaWQgRnJhbWVidWZmZXI6OnNldEF0dGFjaG1lbnQoY29uc3QgQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBiaW5kaW5nLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBJbWFnZUluZGV4ICZ0ZXh0dXJlSW5kZXgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudE9i
amVjdCAqcmVzb3VyY2UpCiB7CisgICAgLy8gQ29udGV4dCBtYXkgYmUgbnVsbCBpbiB1bml0IHRl
c3RzLgorICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+aXNXZWJHTDEoKSkKKyAgICB7Cisg
ICAgICAgIHNldEF0dGFjaG1lbnRJbXBsKHR5cGUsIGJpbmRpbmcsIHRleHR1cmVJbmRleCwgcmVz
b3VyY2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3dpdGNoIChiaW5kaW5nKQor
ICAgIHsKKyAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMOgorICAgICAgICBjYXNlIEdMX0RF
UFRIX1NURU5DSUxfQVRUQUNITUVOVDoKKyAgICAgICAgICAgIG1TdGF0ZS5tV2ViR0xEZXB0aFN0
ZW5jaWxBdHRhY2htZW50LmF0dGFjaCh0eXBlLCBiaW5kaW5nLCB0ZXh0dXJlSW5kZXgsIHJlc291
cmNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0RFUFRIOgorICAgICAg
ICBjYXNlIEdMX0RFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICBtU3RhdGUubVdlYkdMRGVw
dGhBdHRhY2htZW50LmF0dGFjaCh0eXBlLCBiaW5kaW5nLCB0ZXh0dXJlSW5kZXgsIHJlc291cmNl
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1NURU5DSUw6CisgICAgICAg
IGNhc2UgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgbVN0YXRlLm1XZWJHTFN0
ZW5jaWxBdHRhY2htZW50LmF0dGFjaCh0eXBlLCBiaW5kaW5nLCB0ZXh0dXJlSW5kZXgsIHJlc291
cmNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
c2V0QXR0YWNobWVudEltcGwodHlwZSwgYmluZGluZywgdGV4dHVyZUluZGV4LCByZXNvdXJjZSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29tbWl0V2ViR0wxRGVwdGhTdGVu
Y2lsSWZDb25zaXN0ZW50KCk7Cit9CisKK3ZvaWQgRnJhbWVidWZmZXI6OmNvbW1pdFdlYkdMMURl
cHRoU3RlbmNpbElmQ29uc2lzdGVudCgpCit7CisgICAgaW50IGNvdW50ID0gMDsKKworICAgIHN0
ZDo6YXJyYXk8RnJhbWVidWZmZXJBdHRhY2htZW50ICosIDM+IGF0dGFjaG1lbnRzID0ge3smbVN0
YXRlLm1XZWJHTERlcHRoU3RlbmNpbEF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtU3RhdGUubVdlYkdMRGVwdGhB
dHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAmbVN0YXRlLm1XZWJHTFN0ZW5jaWxBdHRhY2htZW50fX07CisgICAgZm9y
IChGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1lbnQgOiBhdHRhY2htZW50cykKKyAgICB7
CisgICAgICAgIGlmIChhdHRhY2htZW50LT5pc0F0dGFjaGVkKCkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNvdW50Kys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtU3RhdGUubVdlYkdMRGVw
dGhTdGVuY2lsQ29uc2lzdGVudCA9IChjb3VudCA8PSAxKTsKKyAgICBpZiAoIW1TdGF0ZS5tV2Vi
R0xEZXB0aFN0ZW5jaWxDb25zaXN0ZW50KQorICAgIHsKKyAgICAgICAgLy8gSW5jb25zaXN0ZW50
LgorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYXV0byBnZXRJbWFnZUluZGV4SWZUZXh0
dXJlQXR0YWNobWVudCA9IFtdKGNvbnN0IEZyYW1lYnVmZmVyQXR0YWNobWVudCAmYXR0YWNobWVu
dCkgeworICAgICAgICBpZiAoYXR0YWNobWVudC50eXBlKCkgPT0gR0xfVEVYVFVSRSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnQuZ2V0VGV4dHVyZUltYWdlSW5kZXgo
KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBJbWFnZUluZGV4OjpNYWtlSW52YWxpZCgpOworICAgICAgICB9CisgICAgfTsKKworICAgIGlm
IChtU3RhdGUubVdlYkdMRGVwdGhBdHRhY2htZW50LmlzQXR0YWNoZWQoKSkKKyAgICB7CisgICAg
ICAgIGNvbnN0IGF1dG8gJmRlcHRoID0gbVN0YXRlLm1XZWJHTERlcHRoQXR0YWNobWVudDsKKyAg
ICAgICAgc2V0QXR0YWNobWVudEltcGwoZGVwdGgudHlwZSgpLCBHTF9ERVBUSF9BVFRBQ0hNRU5U
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRJbWFnZUluZGV4SWZUZXh0dXJlQXR0YWNo
bWVudChkZXB0aCksIGRlcHRoLmdldFJlc291cmNlKCkpOworICAgICAgICBzZXRBdHRhY2htZW50
SW1wbChHTF9OT05FLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEltYWdlSW5kZXg6Ok1ha2VJbnZh
bGlkKCksIG51bGxwdHIpOworICAgIH0KKyAgICBlbHNlIGlmIChtU3RhdGUubVdlYkdMU3RlbmNp
bEF0dGFjaG1lbnQuaXNBdHRhY2hlZCgpKQorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byAmc3Rl
bmNpbCA9IG1TdGF0ZS5tV2ViR0xTdGVuY2lsQXR0YWNobWVudDsKKyAgICAgICAgc2V0QXR0YWNo
bWVudEltcGwoR0xfTk9ORSwgR0xfREVQVEhfQVRUQUNITUVOVCwgSW1hZ2VJbmRleDo6TWFrZUlu
dmFsaWQoKSwgbnVsbHB0cik7CisgICAgICAgIHNldEF0dGFjaG1lbnRJbXBsKHN0ZW5jaWwudHlw
ZSgpLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGdl
dEltYWdlSW5kZXhJZlRleHR1cmVBdHRhY2htZW50KHN0ZW5jaWwpLCBzdGVuY2lsLmdldFJlc291
cmNlKCkpOworICAgIH0KKyAgICBlbHNlIGlmIChtU3RhdGUubVdlYkdMRGVwdGhTdGVuY2lsQXR0
YWNobWVudC5pc0F0dGFjaGVkKCkpCisgICAgeworICAgICAgICBjb25zdCBhdXRvICZkZXB0aFN0
ZW5jaWwgPSBtU3RhdGUubVdlYkdMRGVwdGhTdGVuY2lsQXR0YWNobWVudDsKKyAgICAgICAgc2V0
QXR0YWNobWVudEltcGwoZGVwdGhTdGVuY2lsLnR5cGUoKSwgR0xfREVQVEhfQVRUQUNITUVOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW1hZ2VJbmRleElmVGV4dHVyZUF0dGFjaG1l
bnQoZGVwdGhTdGVuY2lsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhTdGVuY2ls
LmdldFJlc291cmNlKCkpOworICAgICAgICBzZXRBdHRhY2htZW50SW1wbChkZXB0aFN0ZW5jaWwu
dHlwZSgpLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IGdldEltYWdlSW5kZXhJZlRleHR1cmVBdHRhY2htZW50KGRlcHRoU3RlbmNpbCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlcHRoU3RlbmNpbC5nZXRSZXNvdXJjZSgpKTsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgc2V0QXR0YWNobWVudEltcGwoR0xfTk9ORSwgR0xfREVQ
VEhfQVRUQUNITUVOVCwgSW1hZ2VJbmRleDo6TWFrZUludmFsaWQoKSwgbnVsbHB0cik7CisgICAg
ICAgIHNldEF0dGFjaG1lbnRJbXBsKEdMX05PTkUsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgSW1h
Z2VJbmRleDo6TWFrZUludmFsaWQoKSwgbnVsbHB0cik7CisgICAgfQorfQorCit2b2lkIEZyYW1l
YnVmZmVyOjpzZXRBdHRhY2htZW50SW1wbChHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBiaW5kaW5nLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgSW1hZ2VJbmRleCAmdGV4dHVyZUluZGV4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0ICpy
ZXNvdXJjZSkKK3sKICAgICBpZiAoYmluZGluZyA9PSBHTF9ERVBUSF9TVEVOQ0lMIHx8IGJpbmRp
bmcgPT0gR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKQogICAgIHsKICAgICAgICAgLy8gZW5z
dXJlIHRoaXMgaXMgYSBsZWdpdGltYXRlIGRlcHRoK3N0ZW5jaWwgZm9ybWF0CkBAIC04NzQsNjUg
KzExNjMsMjEzIEBAIHZvaWQgRnJhbWVidWZmZXI6OnNldEF0dGFjaG1lbnQoR0xlbnVtIHR5cGUs
CiAgICAgICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9TVEVOQ0lMX0FUVEFDSE1FTlQpOwog
ICAgICAgICBCaW5kUmVzb3VyY2VDaGFubmVsKCZtRGlydHlEZXB0aEF0dGFjaG1lbnRCaW5kaW5n
LCByZXNvdXJjZSk7CiAgICAgICAgIEJpbmRSZXNvdXJjZUNoYW5uZWwoJm1EaXJ0eVN0ZW5jaWxB
dHRhY2htZW50QmluZGluZywgcmVzb3VyY2UpOworICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGVsc2UKKworICAgIHN3aXRjaCAoYmluZGluZykKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoYmlu
ZGluZykKLSAgICAgICAgewotICAgICAgICAgICAgY2FzZSBHTF9ERVBUSDoKLSAgICAgICAgICAg
IGNhc2UgR0xfREVQVEhfQVRUQUNITUVOVDoKLSAgICAgICAgICAgICAgICBtU3RhdGUubURlcHRo
QXR0YWNobWVudC5hdHRhY2godHlwZSwgYmluZGluZywgdGV4dHVyZUluZGV4LCByZXNvdXJjZSk7
Ci0gICAgICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0RFUFRIX0FUVEFDSE1F
TlQpOwotICAgICAgICAgICAgICAgIEJpbmRSZXNvdXJjZUNoYW5uZWwoJm1EaXJ0eURlcHRoQXR0
YWNobWVudEJpbmRpbmcsIHJlc291cmNlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGNhc2UgR0xfU1RFTkNJTDoKLSAgICAgICAgICAgIGNhc2UgR0xfU1RFTkNJTF9BVFRB
Q0hNRU5UOgotICAgICAgICAgICAgICAgIG1TdGF0ZS5tU3RlbmNpbEF0dGFjaG1lbnQuYXR0YWNo
KHR5cGUsIGJpbmRpbmcsIHRleHR1cmVJbmRleCwgcmVzb3VyY2UpOwotICAgICAgICAgICAgICAg
IG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9TVEVOQ0lMX0FUVEFDSE1FTlQpOwotICAgICAgICAg
ICAgICAgIEJpbmRSZXNvdXJjZUNoYW5uZWwoJm1EaXJ0eVN0ZW5jaWxBdHRhY2htZW50QmluZGlu
ZywgcmVzb3VyY2UpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBH
TF9CQUNLOgotICAgICAgICAgICAgICAgIG1TdGF0ZS5tQ29sb3JBdHRhY2htZW50c1swXS5hdHRh
Y2godHlwZSwgYmluZGluZywgdGV4dHVyZUluZGV4LCByZXNvdXJjZSk7Ci0gICAgICAgICAgICAg
ICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0NPTE9SX0FUVEFDSE1FTlRfMCk7Ci0gICAgICAg
ICAgICAgICAgLy8gTm8gbmVlZCBmb3IgYSByZXNvdXJjZSBiaW5kaW5nIGZvciB0aGUgZGVmYXVs
dCBGQk8sIGl0J3MgYWx3YXlzIGNvbXBsZXRlLgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzaXplX3Qg
Y29sb3JJbmRleCA9IGJpbmRpbmcgLSBHTF9DT0xPUl9BVFRBQ0hNRU5UMDsKLSAgICAgICAgICAg
ICAgICBBU1NFUlQoY29sb3JJbmRleCA8IG1TdGF0ZS5tQ29sb3JBdHRhY2htZW50cy5zaXplKCkp
OwotICAgICAgICAgICAgICAgIG1TdGF0ZS5tQ29sb3JBdHRhY2htZW50c1tjb2xvckluZGV4XS5h
dHRhY2godHlwZSwgYmluZGluZywgdGV4dHVyZUluZGV4LCByZXNvdXJjZSk7Ci0gICAgICAgICAg
ICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0NPTE9SX0FUVEFDSE1FTlRfMCArIGNvbG9y
SW5kZXgpOwotICAgICAgICAgICAgICAgIEJpbmRSZXNvdXJjZUNoYW5uZWwoJm1EaXJ0eUNvbG9y
QXR0YWNobWVudEJpbmRpbmdzW2NvbG9ySW5kZXhdLCByZXNvdXJjZSk7Ci0gICAgICAgICAgICB9
CisgICAgICAgIGNhc2UgR0xfREVQVEg6CisgICAgICAgIGNhc2UgR0xfREVQVEhfQVRUQUNITUVO
VDoKKyAgICAgICAgICAgIG1TdGF0ZS5tRGVwdGhBdHRhY2htZW50LmF0dGFjaCh0eXBlLCBiaW5k
aW5nLCB0ZXh0dXJlSW5kZXgsIHJlc291cmNlKTsKKyAgICAgICAgICAgIG1EaXJ0eUJpdHMuc2V0
KERJUlRZX0JJVF9ERVBUSF9BVFRBQ0hNRU5UKTsKKyAgICAgICAgICAgIEJpbmRSZXNvdXJjZUNo
YW5uZWwoJm1EaXJ0eURlcHRoQXR0YWNobWVudEJpbmRpbmcsIHJlc291cmNlKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1NURU5DSUw6CisgICAgICAgIGNhc2UgR0xfU1RF
TkNJTF9BVFRBQ0hNRU5UOgorICAgICAgICAgICAgbVN0YXRlLm1TdGVuY2lsQXR0YWNobWVudC5h
dHRhY2godHlwZSwgYmluZGluZywgdGV4dHVyZUluZGV4LCByZXNvdXJjZSk7CisgICAgICAgICAg
ICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfU1RFTkNJTF9BVFRBQ0hNRU5UKTsKKyAgICAgICAg
ICAgIEJpbmRSZXNvdXJjZUNoYW5uZWwoJm1EaXJ0eVN0ZW5jaWxBdHRhY2htZW50QmluZGluZywg
cmVzb3VyY2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfQkFDSzoKKyAg
ICAgICAgICAgIG1TdGF0ZS5tQ29sb3JBdHRhY2htZW50c1swXS5hdHRhY2godHlwZSwgYmluZGlu
ZywgdGV4dHVyZUluZGV4LCByZXNvdXJjZSk7CisgICAgICAgICAgICBtRGlydHlCaXRzLnNldChE
SVJUWV9CSVRfQ09MT1JfQVRUQUNITUVOVF8wKTsKKyAgICAgICAgICAgIC8vIE5vIG5lZWQgZm9y
IGEgcmVzb3VyY2UgYmluZGluZyBmb3IgdGhlIGRlZmF1bHQgRkJPLCBpdCdzIGFsd2F5cyBjb21w
bGV0ZS4KICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICB7Cisg
ICAgICAgICAgICBzaXplX3QgY29sb3JJbmRleCA9IGJpbmRpbmcgLSBHTF9DT0xPUl9BVFRBQ0hN
RU5UMDsKKyAgICAgICAgICAgIEFTU0VSVChjb2xvckluZGV4IDwgbVN0YXRlLm1Db2xvckF0dGFj
aG1lbnRzLnNpemUoKSk7CisgICAgICAgICAgICBtU3RhdGUubUNvbG9yQXR0YWNobWVudHNbY29s
b3JJbmRleF0uYXR0YWNoKHR5cGUsIGJpbmRpbmcsIHRleHR1cmVJbmRleCwgcmVzb3VyY2UpOwor
ICAgICAgICAgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0NPTE9SX0FUVEFDSE1FTlRfMCAr
IGNvbG9ySW5kZXgpOworICAgICAgICAgICAgQmluZFJlc291cmNlQ2hhbm5lbCgmbURpcnR5Q29s
b3JBdHRhY2htZW50QmluZGluZ3NbY29sb3JJbmRleF0sIHJlc291cmNlKTsKKworICAgICAgICAg
ICAgYm9vbCBlbmFibGVkID0gKHR5cGUgIT0gR0xfTk9ORSAmJiBnZXREcmF3QnVmZmVyU3RhdGUo
Y29sb3JJbmRleCkgIT0gR0xfTk9ORSk7CisgICAgICAgICAgICBtU3RhdGUubUVuYWJsZWREcmF3
QnVmZmVycy5zZXQoY29sb3JJbmRleCwgZW5hYmxlZCk7CiAgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CiAgICAgfQogfQogCi12b2lkIEZyYW1lYnVmZmVyOjpyZXNldEF0dGFjaG1lbnQoR0xlbnVt
IGJpbmRpbmcpCit2b2lkIEZyYW1lYnVmZmVyOjpyZXNldEF0dGFjaG1lbnQoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIGJpbmRpbmcpCiB7Ci0gICAgc2V0QXR0YWNobWVudChHTF9OT05F
LCBiaW5kaW5nLCBJbWFnZUluZGV4OjpNYWtlSW52YWxpZCgpLCBudWxscHRyKTsKKyAgICBzZXRB
dHRhY2htZW50KGNvbnRleHQsIEdMX05PTkUsIGJpbmRpbmcsIEltYWdlSW5kZXg6Ok1ha2VJbnZh
bGlkKCksIG51bGxwdHIpOwogfQogCi12b2lkIEZyYW1lYnVmZmVyOjpzeW5jU3RhdGUoKQordm9p
ZCBGcmFtZWJ1ZmZlcjo6c3luY1N0YXRlKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7CiAgICAg
aWYgKG1EaXJ0eUJpdHMuYW55KCkpCiAgICAgewotICAgICAgICBtSW1wbC0+c3luY1N0YXRlKG1E
aXJ0eUJpdHMpOworICAgICAgICBtSW1wbC0+c3luY1N0YXRlKHJ4OjpTYWZlR2V0SW1wbChjb250
ZXh0KSwgbURpcnR5Qml0cyk7CiAgICAgICAgIG1EaXJ0eUJpdHMucmVzZXQoKTsKLSAgICAgICAg
bUNhY2hlZFN0YXR1cy5yZXNldCgpOworICAgICAgICBpZiAobUlkICE9IDApCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1DYWNoZWRTdGF0dXMucmVzZXQoKTsKKyAgICAgICAgfQogICAgIH0KIH0K
IAotdm9pZCBGcmFtZWJ1ZmZlcjo6c2lnbmFsKFNpZ25hbFRva2VuIHRva2VuKQordm9pZCBGcmFt
ZWJ1ZmZlcjo6c2lnbmFsKHVpbnQzMl90IHRva2VuKQogewogICAgIC8vIFRPT0Qoam1hZGlsbCk6
IE1ha2UgdGhpcyBvbmx5IHVwZGF0ZSBpbmRpdmlkdWFsIGF0dGFjaG1lbnRzIHRvIGRvIGxlc3Mg
d29yay4KICAgICBtQ2FjaGVkU3RhdHVzLnJlc2V0KCk7CiB9CiAKLWJvb2wgRnJhbWVidWZmZXI6
OmNvbXBsZXRlKGNvbnN0IENvbnRleHRTdGF0ZSAmc3RhdGUpCitib29sIEZyYW1lYnVmZmVyOjpj
b21wbGV0ZShjb25zdCBDb250ZXh0ICpjb250ZXh0KQoreworICAgIHJldHVybiAoY2hlY2tTdGF0
dXMoY29udGV4dCkgPT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpOworfQorCitib29sIEZyYW1l
YnVmZmVyOjpjYWNoZWRDb21wbGV0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtQ2FjaGVkU3Rh
dHVzLnZhbGlkKCkgJiYgbUNhY2hlZFN0YXR1cyA9PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSk7
Cit9CisKK2Jvb2wgRnJhbWVidWZmZXI6OmZvcm1zUmVuZGVyaW5nRmVlZGJhY2tMb29wV2l0aChj
b25zdCBTdGF0ZSAmc3RhdGUpIGNvbnN0Cit7CisgICAgY29uc3QgUHJvZ3JhbSAqcHJvZ3JhbSA9
IHN0YXRlLmdldFByb2dyYW0oKTsKKworICAgIC8vIFRPRE8oam1hZGlsbCk6IERlZmF1bHQgZnJh
bWVidWZmZXIgZmVlZGJhY2sgbG9vcHMuCisgICAgaWYgKG1JZCA9PSAwKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFRoZSBiaXRzZXQgd2lsbCBza2lwIGlu
YWN0aXZlIGRyYXcgYnVmZmVycy4KKyAgICBmb3IgKHNpemVfdCBkcmF3SW5kZXggOiBhbmdsZTo6
SXRlcmF0ZUJpdFNldChtU3RhdGUubUVuYWJsZWREcmF3QnVmZmVycykpCisgICAgeworICAgICAg
ICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1lbnQgPSBnZXREcmF3QnVmZmVy
KGRyYXdJbmRleCk7CisgICAgICAgIGlmIChhdHRhY2htZW50ICYmIGF0dGFjaG1lbnQtPnR5cGUo
KSA9PSBHTF9URVhUVVJFKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBWYWxpZGF0ZSB0aGUg
ZmVlZGJhY2sgbG9vcC4KKyAgICAgICAgICAgIGlmIChwcm9ncmFtLT5zYW1wbGVzRnJvbVRleHR1
cmUoc3RhdGUsIGF0dGFjaG1lbnQtPmlkKCkpKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
Ly8gVmFsaWRhdGUgZGVwdGgtc3RlbmNpbCBmZWVkYmFjayBsb29wLgorICAgIGNvbnN0IGF1dG8g
JmRzU3RhdGUgPSBzdGF0ZS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgpOworCisgICAgLy8gV2UgY2Fu
IHNraXAgdGhlIGZlZWRiYWNrIGxvb3AgY2hlY2tzIGlmIGRlcHRoL3N0ZW5jaWwgaXMgbWFza2Vk
IG91dCBvciBkaXNhYmxlZC4KKyAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmRlcHRo
ID0gZ2V0RGVwdGhidWZmZXIoKTsKKyAgICBpZiAoZGVwdGggJiYgZGVwdGgtPnR5cGUoKSA9PSBH
TF9URVhUVVJFICYmIGRzU3RhdGUuZGVwdGhUZXN0ICYmIGRzU3RhdGUuZGVwdGhNYXNrKQorICAg
IHsKKyAgICAgICAgaWYgKHByb2dyYW0tPnNhbXBsZXNGcm9tVGV4dHVyZShzdGF0ZSwgZGVwdGgt
PmlkKCkpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIC8vIE5vdGU6IHdlIGFzc3VtZSB0aGUgZnJvbnQgYW5kIGJhY2sgbWFza3Mg
YXJlIHRoZSBzYW1lIGZvciBXZWJHTC4KKyAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQg
KnN0ZW5jaWwgPSBnZXRTdGVuY2lsYnVmZmVyKCk7CisgICAgQVNTRVJUKGRzU3RhdGUuc3RlbmNp
bEJhY2tXcml0ZW1hc2sgPT0gZHNTdGF0ZS5zdGVuY2lsV3JpdGVtYXNrKTsKKyAgICBpZiAoc3Rl
bmNpbCAmJiBzdGVuY2lsLT50eXBlKCkgPT0gR0xfVEVYVFVSRSAmJiBkc1N0YXRlLnN0ZW5jaWxU
ZXN0ICYmCisgICAgICAgIGRzU3RhdGUuc3RlbmNpbFdyaXRlbWFzayAhPSAwKQorICAgIHsKKyAg
ICAgICAgLy8gU2tpcCB0aGUgZmVlZGJhY2sgbG9vcCBjaGVjayBpZiBkZXB0aC9zdGVuY2lsIHBv
aW50IHRvIHRoZSBzYW1lIHJlc291cmNlLgorICAgICAgICBpZiAoIWRlcHRoIHx8ICpzdGVuY2ls
ICE9ICpkZXB0aCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHByb2dyYW0tPnNhbXBsZXNG
cm9tVGV4dHVyZShzdGF0ZSwgc3RlbmNpbC0+aWQoKSkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgRnJhbWVidWZmZXI6OmZvcm1zQ29weWluZ0Zl
ZWRiYWNrTG9vcFdpdGgoR0x1aW50IGNvcHlUZXh0dXJlSUQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvcHlUZXh0dXJlTGV2ZWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGNvcHlUZXh0
dXJlTGF5ZXIpIGNvbnN0Cit7CisgICAgaWYgKG1JZCA9PSAwKQorICAgIHsKKyAgICAgICAgLy8g
SXQgc2VlbXMgaW1wb3NzaWJsZSB0byBmb3JtIGEgdGV4dHVyZSBjb3B5aW5nIGZlZWRiYWNrIGxv
b3Agd2l0aCB0aGUgZGVmYXVsdCBGQk8uCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnJlYWRBdHRhY2htZW50ID0gZ2V0UmVh
ZENvbG9yYnVmZmVyKCk7CisgICAgQVNTRVJUKHJlYWRBdHRhY2htZW50KTsKKworICAgIGlmIChy
ZWFkQXR0YWNobWVudC0+aXNUZXh0dXJlV2l0aElkKGNvcHlUZXh0dXJlSUQpKQorICAgIHsKKyAg
ICAgICAgY29uc3QgYXV0byAmaW1hZ2VJbmRleCA9IHJlYWRBdHRhY2htZW50LT5nZXRUZXh0dXJl
SW1hZ2VJbmRleCgpOworICAgICAgICBpZiAoaW1hZ2VJbmRleC5taXBJbmRleCA9PSBjb3B5VGV4
dHVyZUxldmVsKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBDaGVjayAzRC9BcnJheSB0ZXh0
dXJlIGxheWVycy4KKyAgICAgICAgICAgIHJldHVybiBpbWFnZUluZGV4LmxheWVySW5kZXggPT0g
SW1hZ2VJbmRleDo6RU5USVJFX0xFVkVMIHx8CisgICAgICAgICAgICAgICAgICAgY29weVRleHR1
cmVMYXllciA9PSBJbWFnZUluZGV4OjpFTlRJUkVfTEVWRUwgfHwKKyAgICAgICAgICAgICAgICAg
ICBpbWFnZUluZGV4LmxheWVySW5kZXggPT0gY29weVRleHR1cmVMYXllcjsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0dMaW50IEZyYW1lYnVmZmVyOjpnZXREZWZh
dWx0V2lkdGgoKSBjb25zdAoreworICAgIHJldHVybiBtU3RhdGUuZ2V0RGVmYXVsdFdpZHRoKCk7
Cit9CisKK0dMaW50IEZyYW1lYnVmZmVyOjpnZXREZWZhdWx0SGVpZ2h0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbVN0YXRlLmdldERlZmF1bHRIZWlnaHQoKTsKK30KKworR0xpbnQgRnJhbWVidWZm
ZXI6OmdldERlZmF1bHRTYW1wbGVzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRlLmdldERl
ZmF1bHRTYW1wbGVzKCk7Cit9CisKK0dMYm9vbGVhbiBGcmFtZWJ1ZmZlcjo6Z2V0RGVmYXVsdEZp
eGVkU2FtcGxlTG9jYXRpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVN0YXRlLmdldERlZmF1
bHRGaXhlZFNhbXBsZUxvY2F0aW9ucygpOworfQorCit2b2lkIEZyYW1lYnVmZmVyOjpzZXREZWZh
dWx0V2lkdGgoR0xpbnQgZGVmYXVsdFdpZHRoKQoreworICAgIG1TdGF0ZS5tRGVmYXVsdFdpZHRo
ID0gZGVmYXVsdFdpZHRoOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9ERUZBVUxUX1dJ
RFRIKTsKK30KKwordm9pZCBGcmFtZWJ1ZmZlcjo6c2V0RGVmYXVsdEhlaWdodChHTGludCBkZWZh
dWx0SGVpZ2h0KQoreworICAgIG1TdGF0ZS5tRGVmYXVsdEhlaWdodCA9IGRlZmF1bHRIZWlnaHQ7
CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0RFRkFVTFRfSEVJR0hUKTsKK30KKwordm9p
ZCBGcmFtZWJ1ZmZlcjo6c2V0RGVmYXVsdFNhbXBsZXMoR0xpbnQgZGVmYXVsdFNhbXBsZXMpCit7
CisgICAgbVN0YXRlLm1EZWZhdWx0U2FtcGxlcyA9IGRlZmF1bHRTYW1wbGVzOworICAgIG1EaXJ0
eUJpdHMuc2V0KERJUlRZX0JJVF9ERUZBVUxUX1NBTVBMRVMpOworfQorCit2b2lkIEZyYW1lYnVm
ZmVyOjpzZXREZWZhdWx0Rml4ZWRTYW1wbGVMb2NhdGlvbnMoR0xib29sZWFuIGRlZmF1bHRGaXhl
ZFNhbXBsZUxvY2F0aW9ucykKK3sKKyAgICBtU3RhdGUubURlZmF1bHRGaXhlZFNhbXBsZUxvY2F0
aW9ucyA9IGRlZmF1bHRGaXhlZFNhbXBsZUxvY2F0aW9uczsKKyAgICBtRGlydHlCaXRzLnNldChE
SVJUWV9CSVRfREVGQVVMVF9GSVhFRF9TQU1QTEVfTE9DQVRJT05TKTsKK30KKworLy8gVE9ETyhq
bWFkaWxsKTogUmVtb3ZlIHRoaXMga2x1ZGdlLgorR0xlbnVtIEZyYW1lYnVmZmVyOjpjaGVja1N0
YXR1cyhjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCkKK3sKKyAgICByZXR1cm4gY2hl
Y2tTdGF0dXMoc3RhdGljX2Nhc3Q8Y29uc3QgQ29udGV4dCAqPihjb250ZXh0KSk7Cit9CisKK2lu
dCBGcmFtZWJ1ZmZlcjo6Z2V0U2FtcGxlcyhjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4
dCkKIHsKLSAgICByZXR1cm4gKGNoZWNrU3RhdHVzKHN0YXRlKSA9PSBHTF9GUkFNRUJVRkZFUl9D
T01QTEVURSk7CisgICAgcmV0dXJuIGdldFNhbXBsZXMoc3RhdGljX2Nhc3Q8Y29uc3QgQ29udGV4
dCAqPihjb250ZXh0KSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBnbApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZmZXIuaAppbmRleCBkYjBkNjIx
NWYzNy4uYzRjYWNmOTk5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9GcmFtZWJ1ZmZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9GcmFtZWJ1ZmZlci5oCkBAIC0zMiwxOSArMzIsMjEgQEAgY2xhc3MgU3VyZmFj
ZUltcGw7CiAKIG5hbWVzcGFjZSBlZ2wKIHsKK2NsYXNzIERpc3BsYXk7CiBjbGFzcyBTdXJmYWNl
OwogfQogCiBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENvbnRleHQ7CitjbGFzcyBDb250ZXh0U3Rh
dGU7CiBjbGFzcyBGcmFtZWJ1ZmZlcjsKIGNsYXNzIFJlbmRlcmJ1ZmZlcjsKIGNsYXNzIFN0YXRl
OwogY2xhc3MgVGV4dHVyZTsKIGNsYXNzIFRleHR1cmVDYXBzTWFwOworY2xhc3MgVmFsaWRhdGlv
bkNvbnRleHQ7CiBzdHJ1Y3QgQ2FwczsKLWNsYXNzIENvbnRleHRTdGF0ZTsKIHN0cnVjdCBFeHRl
bnNpb25zOwogc3RydWN0IEltYWdlSW5kZXg7CiBzdHJ1Y3QgUmVjdGFuZ2xlOwpAQCAtNjAsOCAr
NjIsMTAgQEAgY2xhc3MgRnJhbWVidWZmZXJTdGF0ZSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQogCiAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXRBdHRhY2htZW50KEdMZW51
bSBhdHRhY2htZW50KSBjb25zdDsKICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmdl
dFJlYWRBdHRhY2htZW50KCkgY29uc3Q7CisgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50
ICpnZXRGaXJzdE5vbk51bGxBdHRhY2htZW50KCkgY29uc3Q7CiAgICAgY29uc3QgRnJhbWVidWZm
ZXJBdHRhY2htZW50ICpnZXRGaXJzdENvbG9yQXR0YWNobWVudCgpIGNvbnN0OwogICAgIGNvbnN0
IEZyYW1lYnVmZmVyQXR0YWNobWVudCAqZ2V0RGVwdGhPclN0ZW5jaWxBdHRhY2htZW50KCkgY29u
c3Q7CisgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXRTdGVuY2lsT3JEZXB0aFN0
ZW5jaWxBdHRhY2htZW50KCkgY29uc3Q7CiAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50
ICpnZXRDb2xvckF0dGFjaG1lbnQoc2l6ZV90IGNvbG9yQXR0YWNobWVudCkgY29uc3Q7CiAgICAg
Y29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXREZXB0aEF0dGFjaG1lbnQoKSBjb25zdDsK
ICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmdldFN0ZW5jaWxBdHRhY2htZW50KCkg
Y29uc3Q7CkBAIC04MCw2ICs4NCwxMSBAQCBjbGFzcyBGcmFtZWJ1ZmZlclN0YXRlIGZpbmFsIDog
YW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXRE
cmF3QnVmZmVyKHNpemVfdCBkcmF3QnVmZmVySWR4KSBjb25zdDsKICAgICBzaXplX3QgZ2V0RHJh
d0J1ZmZlckNvdW50KCkgY29uc3Q7CiAKKyAgICBHTGludCBnZXREZWZhdWx0V2lkdGgoKSBjb25z
dCB7IHJldHVybiBtRGVmYXVsdFdpZHRoOyB9OworICAgIEdMaW50IGdldERlZmF1bHRIZWlnaHQo
KSBjb25zdCB7IHJldHVybiBtRGVmYXVsdEhlaWdodDsgfTsKKyAgICBHTGludCBnZXREZWZhdWx0
U2FtcGxlcygpIGNvbnN0IHsgcmV0dXJuIG1EZWZhdWx0U2FtcGxlczsgfTsKKyAgICBHTGJvb2xl
YW4gZ2V0RGVmYXVsdEZpeGVkU2FtcGxlTG9jYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbURlZmF1
bHRGaXhlZFNhbXBsZUxvY2F0aW9uczsgfTsKKwogICBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFz
cyBGcmFtZWJ1ZmZlcjsKIApAQCAtOTEsMTQgKzEwMCwzNyBAQCBjbGFzcyBGcmFtZWJ1ZmZlclN0
YXRlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAgICBzdGQ6OnZlY3RvcjxHTGVudW0+
IG1EcmF3QnVmZmVyU3RhdGVzOwogICAgIEdMZW51bSBtUmVhZEJ1ZmZlclN0YXRlOworICAgIHN0
ZDo6Yml0c2V0PElNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlM+IG1FbmFibGVkRHJhd0J1
ZmZlcnM7CisKKyAgICBHTGludCBtRGVmYXVsdFdpZHRoOworICAgIEdMaW50IG1EZWZhdWx0SGVp
Z2h0OworICAgIEdMaW50IG1EZWZhdWx0U2FtcGxlczsKKyAgICBHTGJvb2xlYW4gbURlZmF1bHRG
aXhlZFNhbXBsZUxvY2F0aW9uczsKKworICAgIC8vIEl0J3MgbmVjZXNzYXJ5IHRvIHN0b3JlIGFs
bCB0aGlzIGV4dHJhIHN0YXRlIHNvIHdlIGNhbiByZXN0b3JlIGF0dGFjaG1lbnRzCisgICAgLy8g
d2hlbiBERVBUSF9TVEVOQ0lML0RFUFRIL1NURU5DSUwgaXMgdW5ib3VuZCBpbiBXZWJHTCAxLgor
ICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudCBtV2ViR0xEZXB0aFN0ZW5jaWxBdHRhY2htZW50Owor
ICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudCBtV2ViR0xEZXB0aEF0dGFjaG1lbnQ7CisgICAgRnJh
bWVidWZmZXJBdHRhY2htZW50IG1XZWJHTFN0ZW5jaWxBdHRhY2htZW50OworICAgIGJvb2wgbVdl
YkdMRGVwdGhTdGVuY2lsQ29uc2lzdGVudDsKIH07CiAKLWNsYXNzIEZyYW1lYnVmZmVyIGZpbmFs
IDogcHVibGljIExhYmVsZWRPYmplY3QsIHB1YmxpYyBhbmdsZTo6U2lnbmFsUmVjZWl2ZXIKK3Vz
aW5nIE9uQXR0YWNobWVudERpcnR5UmVjZWl2ZXIgPSBhbmdsZTo6U2lnbmFsUmVjZWl2ZXI8PjsK
K3VzaW5nIE9uQXR0YWNobWVudERpcnR5QmluZGluZyAgPSBhbmdsZTo6Q2hhbm5lbEJpbmRpbmc8
PjsKKworY2xhc3MgRnJhbWVidWZmZXIgZmluYWwgOiBwdWJsaWMgTGFiZWxlZE9iamVjdCwgcHVi
bGljIE9uQXR0YWNobWVudERpcnR5UmVjZWl2ZXIKIHsKICAgcHVibGljOgorICAgIC8vIENvbnN0
cnVjdG9yIHRvIGJ1aWxkIGFwcGxpY2F0aW9uLWRlZmluZWQgZnJhbWVidWZmZXJzCiAgICAgRnJh
bWVidWZmZXIoY29uc3QgQ2FwcyAmY2Fwcywgcng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksIEdM
dWludCBpZCk7Ci0gICAgRnJhbWVidWZmZXIocng6OlN1cmZhY2VJbXBsICpzdXJmYWNlKTsKKyAg
ICAvLyBDb25zdHJ1Y3RvciB0byBidWlsZCBkZWZhdWx0IGZyYW1lYnVmZmVycyBmb3IgYSBzdXJm
YWNlCisgICAgRnJhbWVidWZmZXIoZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKKyAgICAvLyBDb25z
dHJ1Y3RvciB0byBidWlsZCBhIGZha2UgZGVmYXVsdCBmcmFtZWJ1ZmZlciB3aGVuIHN1cmZhY2Vs
ZXNzCisgICAgRnJhbWVidWZmZXIocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnkpOworCiAgICAg
dmlydHVhbCB+RnJhbWVidWZmZXIoKTsKKyAgICB2b2lkIGRlc3Ryb3koY29uc3QgQ29udGV4dCAq
Y29udGV4dCk7CisgICAgdm9pZCBkZXN0cm95RGVmYXVsdChjb25zdCBlZ2w6OkRpc3BsYXkgKmRp
c3BsYXkpOwogCiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAmbGFiZWwpIG92
ZXJyaWRlOwogICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRMYWJlbCgpIGNvbnN0IG92ZXJyaWRl
OwpAQCAtMTA3LDIwICsxMzksMjIgQEAgY2xhc3MgRnJhbWVidWZmZXIgZmluYWwgOiBwdWJsaWMg
TGFiZWxlZE9iamVjdCwgcHVibGljIGFuZ2xlOjpTaWduYWxSZWNlaXZlcgogCiAgICAgR0x1aW50
IGlkKCkgY29uc3QgeyByZXR1cm4gbUlkOyB9CiAKLSAgICB2b2lkIHNldEF0dGFjaG1lbnQoR0xl
bnVtIHR5cGUsCisgICAgdm9pZCBzZXRBdHRhY2htZW50KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gYmluZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW1hZ2VJ
bmRleCAmdGV4dHVyZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRPYmplY3QgKnJlc291cmNlKTsKLSAgICB2b2lkIHJlc2V0QXR0YWNobWVudChHTGVu
dW0gYmluZGluZyk7CisgICAgdm9pZCByZXNldEF0dGFjaG1lbnQoY29uc3QgQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIGJpbmRpbmcpOwogCi0gICAgdm9pZCBkZXRhY2hUZXh0dXJlKEdMdWludCB0
ZXh0dXJlKTsKLSAgICB2b2lkIGRldGFjaFJlbmRlcmJ1ZmZlcihHTHVpbnQgcmVuZGVyYnVmZmVy
KTsKKyAgICB2b2lkIGRldGFjaFRleHR1cmUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IHRleHR1cmUpOworICAgIHZvaWQgZGV0YWNoUmVuZGVyYnVmZmVyKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsIEdMdWludCByZW5kZXJidWZmZXIpOwogCiAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRh
Y2htZW50ICpnZXRDb2xvcmJ1ZmZlcihzaXplX3QgY29sb3JBdHRhY2htZW50KSBjb25zdDsKICAg
ICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmdldERlcHRoYnVmZmVyKCkgY29uc3Q7CiAg
ICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXRTdGVuY2lsYnVmZmVyKCkgY29uc3Q7
CiAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXREZXB0aFN0ZW5jaWxCdWZmZXIo
KSBjb25zdDsKICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmdldERlcHRoT3JTdGVu
Y2lsYnVmZmVyKCkgY29uc3Q7CisgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpnZXRT
dGVuY2lsT3JEZXB0aFN0ZW5jaWxBdHRhY2htZW50KCkgY29uc3Q7CiAgICAgY29uc3QgRnJhbWVi
dWZmZXJBdHRhY2htZW50ICpnZXRSZWFkQ29sb3JidWZmZXIoKSBjb25zdDsKICAgICBHTGVudW0g
Z2V0UmVhZENvbG9yYnVmZmVyVHlwZSgpIGNvbnN0OwogICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0
YWNobWVudCAqZ2V0Rmlyc3RDb2xvcmJ1ZmZlcigpIGNvbnN0OwpAQCAtMTQ0LDExICsxNzgsMzAg
QEAgY2xhc3MgRnJhbWVidWZmZXIgZmluYWwgOiBwdWJsaWMgTGFiZWxlZE9iamVjdCwgcHVibGlj
IGFuZ2xlOjpTaWduYWxSZWNlaXZlcgogICAgIGJvb2wgdXNpbmdFeHRlbmRlZERyYXdCdWZmZXJz
KCkgY29uc3Q7CiAKICAgICAvLyBUaGlzIG1ldGhvZCBjYWxscyBjaGVja1N0YXR1cy4KLSAgICBp
bnQgZ2V0U2FtcGxlcyhjb25zdCBDb250ZXh0U3RhdGUgJnN0YXRlKTsKLSAgICBHTGVudW0gY2hl
Y2tTdGF0dXMoY29uc3QgQ29udGV4dFN0YXRlICZzdGF0ZSk7CisgICAgaW50IGdldFNhbXBsZXMo
Y29uc3QgQ29udGV4dCAqY29udGV4dCk7CisKKyAgICBFcnJvciBnZXRTYW1wbGVQb3NpdGlvbihz
aXplX3QgaW5kZXgsIEdMZmxvYXQgKnh5KSBjb25zdDsKKworICAgIEdMaW50IGdldERlZmF1bHRX
aWR0aCgpIGNvbnN0OworICAgIEdMaW50IGdldERlZmF1bHRIZWlnaHQoKSBjb25zdDsKKyAgICBH
TGludCBnZXREZWZhdWx0U2FtcGxlcygpIGNvbnN0OworICAgIEdMYm9vbGVhbiBnZXREZWZhdWx0
Rml4ZWRTYW1wbGVMb2NhdGlvbnMoKSBjb25zdDsKKyAgICB2b2lkIHNldERlZmF1bHRXaWR0aChH
TGludCBkZWZhdWx0V2lkdGgpOworICAgIHZvaWQgc2V0RGVmYXVsdEhlaWdodChHTGludCBkZWZh
dWx0SGVpZ2h0KTsKKyAgICB2b2lkIHNldERlZmF1bHRTYW1wbGVzKEdMaW50IGRlZmF1bHRTYW1w
bGVzKTsKKyAgICB2b2lkIHNldERlZmF1bHRGaXhlZFNhbXBsZUxvY2F0aW9ucyhHTGJvb2xlYW4g
ZGVmYXVsdEZpeGVkU2FtcGxlTG9jYXRpb25zKTsKKworICAgIHZvaWQgaW52YWxpZGF0ZUNvbXBs
ZXRlbmVzc0NhY2hlKCk7CisKKyAgICBHTGVudW0gY2hlY2tTdGF0dXMoY29uc3QgQ29udGV4dCAq
Y29udGV4dCk7CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBSZW1vdmUgdGhpcyBrbHVkZ2UuCisg
ICAgR0xlbnVtIGNoZWNrU3RhdHVzKGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0KTsK
KyAgICBpbnQgZ2V0U2FtcGxlcyhjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCk7CiAK
ICAgICAvLyBIZWxwZXIgZm9yIGNoZWNrU3RhdHVzID09IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRF
LgotICAgIGJvb2wgY29tcGxldGUoY29uc3QgQ29udGV4dFN0YXRlICZzdGF0ZSk7CisgICAgYm9v
bCBjb21wbGV0ZShjb25zdCBDb250ZXh0ICpjb250ZXh0KTsKKyAgICBib29sIGNhY2hlZENvbXBs
ZXRlKCkgY29uc3Q7CiAKICAgICBib29sIGhhc1ZhbGlkRGVwdGhTdGVuY2lsKCkgY29uc3Q7CiAK
QEAgLTE4OSw3ICsyNDIsNyBAQCBjbGFzcyBGcmFtZWJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBMYWJl
bGVkT2JqZWN0LCBwdWJsaWMgYW5nbGU6OlNpZ25hbFJlY2VpdmVyCiAgICAgICAgICAgICAgICBH
TGJpdGZpZWxkIG1hc2ssCiAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyKTsKIAotICAgIGVu
dW0gRGlydHlCaXRUeXBlCisgICAgZW51bSBEaXJ0eUJpdFR5cGUgOiB1aW50MzJfdAogICAgIHsK
ICAgICAgICAgRElSVFlfQklUX0NPTE9SX0FUVEFDSE1FTlRfMCwKICAgICAgICAgRElSVFlfQklU
X0NPTE9SX0FUVEFDSE1FTlRfTUFYID0KQEAgLTE5OCwzNCArMjUxLDQ5IEBAIGNsYXNzIEZyYW1l
YnVmZmVyIGZpbmFsIDogcHVibGljIExhYmVsZWRPYmplY3QsIHB1YmxpYyBhbmdsZTo6U2lnbmFs
UmVjZWl2ZXIKICAgICAgICAgRElSVFlfQklUX1NURU5DSUxfQVRUQUNITUVOVCwKICAgICAgICAg
RElSVFlfQklUX0RSQVdfQlVGRkVSUywKICAgICAgICAgRElSVFlfQklUX1JFQURfQlVGRkVSLAor
ICAgICAgICBESVJUWV9CSVRfREVGQVVMVF9XSURUSCwKKyAgICAgICAgRElSVFlfQklUX0RFRkFV
TFRfSEVJR0hULAorICAgICAgICBESVJUWV9CSVRfREVGQVVMVF9TQU1QTEVTLAorICAgICAgICBE
SVJUWV9CSVRfREVGQVVMVF9GSVhFRF9TQU1QTEVfTE9DQVRJT05TLAogICAgICAgICBESVJUWV9C
SVRfVU5LTk9XTiwKLSAgICAgICAgRElSVFlfQklUX01BWCA9IERJUlRZX0JJVF9VTktOT1dOLAor
ICAgICAgICBESVJUWV9CSVRfTUFYID0gRElSVFlfQklUX1VOS05PV04KICAgICB9OwogCiAgICAg
dHlwZWRlZiBzdGQ6OmJpdHNldDxESVJUWV9CSVRfTUFYPiBEaXJ0eUJpdHM7CiAgICAgYm9vbCBo
YXNBbnlEaXJ0eUJpdCgpIGNvbnN0IHsgcmV0dXJuIG1EaXJ0eUJpdHMuYW55KCk7IH0KIAotICAg
IHZvaWQgc3luY1N0YXRlKCk7CisgICAgdm9pZCBzeW5jU3RhdGUoY29uc3QgQ29udGV4dCAqY29u
dGV4dCk7CiAKICAgICAvLyBhbmdsZTo6U2lnbmFsUmVjZWl2ZXIgaW1wbGVtZW50YXRpb24KLSAg
ICB2b2lkIHNpZ25hbChhbmdsZTo6U2lnbmFsVG9rZW4gdG9rZW4pIG92ZXJyaWRlOworICAgIHZv
aWQgc2lnbmFsKHVpbnQzMl90IHRva2VuKSBvdmVycmlkZTsKKworICAgIGJvb2wgZm9ybXNSZW5k
ZXJpbmdGZWVkYmFja0xvb3BXaXRoKGNvbnN0IFN0YXRlICZzdGF0ZSkgY29uc3Q7CisgICAgYm9v
bCBmb3Jtc0NvcHlpbmdGZWVkYmFja0xvb3BXaXRoKEdMdWludCBjb3B5VGV4dHVyZUlELAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb3B5VGV4dHVyZUxldmVs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBjb3B5VGV4dHVy
ZUxheWVyKSBjb25zdDsKIAogICBwcml2YXRlOgotICAgIHZvaWQgZGV0YWNoUmVzb3VyY2VCeUlk
KEdMZW51bSByZXNvdXJjZVR5cGUsIEdMdWludCByZXNvdXJjZUlkKTsKKyAgICB2b2lkIGRldGFj
aFJlc291cmNlQnlJZChjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gcmVzb3VyY2VUeXBl
LCBHTHVpbnQgcmVzb3VyY2VJZCk7CiAgICAgdm9pZCBkZXRhY2hNYXRjaGluZ0F0dGFjaG1lbnQo
RnJhbWVidWZmZXJBdHRhY2htZW50ICphdHRhY2htZW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBtYXRjaFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IG1hdGNoSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGRpcnR5Qml0KTsKLSAgICBHTGVudW0gY2hlY2tTdGF0dXNJbXBsKGNvbnN0IENv
bnRleHRTdGF0ZSAmc3RhdGUpOworICAgIEdMZW51bSBjaGVja1N0YXR1c0ltcGwoY29uc3QgQ29u
dGV4dCAqY29udGV4dCk7CisgICAgdm9pZCBjb21taXRXZWJHTDFEZXB0aFN0ZW5jaWxJZkNvbnNp
c3RlbnQoKTsKKworICAgIHZvaWQgc2V0QXR0YWNobWVudEltcGwoR0xlbnVtIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmluZGluZywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEltYWdlSW5kZXggJnRleHR1cmVJbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdCAqcmVzb3VyY2UpOwogCiAg
ICAgRnJhbWVidWZmZXJTdGF0ZSBtU3RhdGU7CiAgICAgcng6OkZyYW1lYnVmZmVySW1wbCAqbUlt
cGw7CiAgICAgR0x1aW50IG1JZDsKIAogICAgIE9wdGlvbmFsPEdMZW51bT4gbUNhY2hlZFN0YXR1
czsKLSAgICBzdGQ6OnZlY3RvcjxhbmdsZTo6Q2hhbm5lbEJpbmRpbmc+IG1EaXJ0eUNvbG9yQXR0
YWNobWVudEJpbmRpbmdzOwotICAgIGFuZ2xlOjpDaGFubmVsQmluZGluZyBtRGlydHlEZXB0aEF0
dGFjaG1lbnRCaW5kaW5nOwotICAgIGFuZ2xlOjpDaGFubmVsQmluZGluZyBtRGlydHlTdGVuY2ls
QXR0YWNobWVudEJpbmRpbmc7CisgICAgc3RkOjp2ZWN0b3I8T25BdHRhY2htZW50RGlydHlCaW5k
aW5nPiBtRGlydHlDb2xvckF0dGFjaG1lbnRCaW5kaW5nczsKKyAgICBPbkF0dGFjaG1lbnREaXJ0
eUJpbmRpbmcgbURpcnR5RGVwdGhBdHRhY2htZW50QmluZGluZzsKKyAgICBPbkF0dGFjaG1lbnRE
aXJ0eUJpbmRpbmcgbURpcnR5U3RlbmNpbEF0dGFjaG1lbnRCaW5kaW5nOwogCiAgICAgRGlydHlC
aXRzIG1EaXJ0eUJpdHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvRnJhbWVidWZmZXJBdHRhY2htZW50LmNwcAppbmRleCAzN2Fm
MjU0ZjI0MS4uZDhlZWU1NTY0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1lbnQuY3BwCkBAIC05
OSwxNyArOTksMjEgQEAgdm9pZCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OmF0dGFjaChHTGVudW0g
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW1hZ2VJbmRl
eCAmdGV4dHVyZUluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3QgKnJlc291cmNlKQogeworICAgIGlmIChyZXNvdXJjZSA9
PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgZGV0YWNoKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBtVHlwZSA9IHR5cGU7CiAgICAgbVRhcmdldCA9IFRhcmdldChiaW5kaW5nLCB0
ZXh0dXJlSW5kZXgpOworICAgIHJlc291cmNlLT5vbkF0dGFjaCgpOwogCi0gICAgaWYgKHJlc291
cmNlKQotICAgIHsKLSAgICAgICAgcmVzb3VyY2UtPm9uQXR0YWNoKCk7Ci0gICAgfQogICAgIGlm
IChtUmVzb3VyY2UgIT0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIG1SZXNvdXJjZS0+b25EZXRh
Y2goKTsKICAgICB9CisKICAgICBtUmVzb3VyY2UgPSByZXNvdXJjZTsKIH0KIApAQCAtMjA2LDYg
KzIxMCwxMSBAQCBjb25zdCBlZ2w6OlN1cmZhY2UgKkZyYW1lYnVmZmVyQXR0YWNobWVudDo6Z2V0
U3VyZmFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIHJ4OjpHZXRBczxlZ2w6OlN1cmZhY2U+KG1SZXNv
dXJjZSk7CiB9CiAKK0ZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdCAqRnJhbWVidWZmZXJBdHRh
Y2htZW50OjpnZXRSZXNvdXJjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1SZXNvdXJjZTsKK30K
KwogYm9vbCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6Om9wZXJhdG9yPT0oY29uc3QgRnJhbWVidWZm
ZXJBdHRhY2htZW50ICZvdGhlcikgY29uc3QKIHsKICAgICBpZiAobVJlc291cmNlICE9IG90aGVy
Lm1SZXNvdXJjZSB8fCBtVHlwZSAhPSBvdGhlci5tVHlwZSkKQEAgLTIzMyw3ICsyNDIsNyBAQCBF
cnJvciBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3Q6OmdldEF0dGFjaG1lbnRSZW5kZXJUYXJn
ZXQoCiAgICAgcmV0dXJuIGdldEF0dGFjaG1lbnRJbXBsKCktPmdldEF0dGFjaG1lbnRSZW5kZXJU
YXJnZXQodGFyZ2V0LCBydE91dCk7CiB9CiAKLWFuZ2xlOjpCcm9hZGNhc3RDaGFubmVsICpGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3Q6OmdldERpcnR5Q2hhbm5lbCgpCithbmdsZTo6QnJvYWRj
YXN0Q2hhbm5lbDw+ICpGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3Q6OmdldERpcnR5Q2hhbm5l
bCgpCiB7CiAgICAgcmV0dXJuICZtRGlydHlDaGFubmVsOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVu
dC5oCmluZGV4IDQxNTAyNzM3ZGU5Li41ZTI4ZmI5OWNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ZyYW1lYnVmZmVyQXR0YWNobWVudC5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1l
bnQuaApAQCAtMTI2LDIzICsxMjYsMjMgQEAgY2xhc3MgRnJhbWVidWZmZXJBdHRhY2htZW50IGZp
bmFsCiAgICAgUmVuZGVyYnVmZmVyICpnZXRSZW5kZXJidWZmZXIoKSBjb25zdDsKICAgICBUZXh0
dXJlICpnZXRUZXh0dXJlKCkgY29uc3Q7CiAgICAgY29uc3QgZWdsOjpTdXJmYWNlICpnZXRTdXJm
YWNlKCkgY29uc3Q7CisgICAgRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0ICpnZXRSZXNvdXJj
ZSgpIGNvbnN0OwogCiAgICAgLy8gIlQiIG11c3QgYmUgc3RhdGljX2Nhc3RhYmxlIGZyb20gRnJh
bWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiAgICAgZ2w6OkVycm9yIGdldFJlbmRlclRhcmdldChUICoqcnRPdXQpIGNvbnN0CiAgICAgewot
ICAgICAgICAvLyBDYXN0IHRocm91Z2ggdGhlIHBvaW50ZXItdG8tcG9pbnRlciB0eXBlCi0gICAg
ICAgIHJ4OjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKnJ0UHRyID0gbnVsbHB0
cjsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZ2V0UmVuZGVyVGFyZ2V0KCZydFB0cik7Ci0g
ICAgICAgICpydE91dCA9IHN0YXRpY19jYXN0PFQqPihydFB0cik7Ci0gICAgICAgIHJldHVybiBl
cnJvcjsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX2Jhc2Vfb2Y8cng6OkZyYW1lYnVm
ZmVyQXR0YWNobWVudFJlbmRlclRhcmdldCwgVD4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAi
SW52YWxpZCBSZW5kZXJUYXJnZXQgY2xhc3MuIik7CisgICAgICAgIHJldHVybiBnZXRSZW5kZXJU
YXJnZXRJbXBsKAorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxyeDo6RnJhbWVidWZmZXJB
dHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqPihydE91dCkpOwogICAgIH0KIAogICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJm90aGVyKSBjb25zdDsKICAgICBi
b29sIG9wZXJhdG9yIT0oY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICZvdGhlcikgY29uc3Q7
CiAKICAgcHJpdmF0ZToKLSAgICBnbDo6RXJyb3IgZ2V0UmVuZGVyVGFyZ2V0KHJ4OjpGcmFtZWJ1
ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkgY29uc3Q7CisgICAgZ2w6OkVycm9y
IGdldFJlbmRlclRhcmdldEltcGwocng6OkZyYW1lYnVmZmVyQXR0YWNobWVudFJlbmRlclRhcmdl
dCAqKnJ0T3V0KSBjb25zdDsKIAogICAgIEdMZW51bSBtVHlwZTsKICAgICBUYXJnZXQgbVRhcmdl
dDsKQEAgLTE2OCwzMSArMTY4LDM2IEBAIGNsYXNzIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVj
dAogICAgIEVycm9yIGdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQoY29uc3QgRnJhbWVidWZmZXJB
dHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJ4OjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkgY29u
c3Q7CiAKLSAgICBhbmdsZTo6QnJvYWRjYXN0Q2hhbm5lbCAqZ2V0RGlydHlDaGFubmVsKCk7Cisg
ICAgYW5nbGU6OkJyb2FkY2FzdENoYW5uZWw8PiAqZ2V0RGlydHlDaGFubmVsKCk7CiAKICAgcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgcng6OkZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdEltcGwg
KmdldEF0dGFjaG1lbnRJbXBsKCkgY29uc3QgPSAwOwogCi0gICAgYW5nbGU6OkJyb2FkY2FzdENo
YW5uZWwgbURpcnR5Q2hhbm5lbDsKKyAgICBhbmdsZTo6QnJvYWRjYXN0Q2hhbm5lbDw+IG1EaXJ0
eUNoYW5uZWw7CiB9OwogCiBpbmxpbmUgRXh0ZW50cyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6Omdl
dFNpemUoKSBjb25zdAogeworICAgIEFTU0VSVChtUmVzb3VyY2UpOwogICAgIHJldHVybiBtUmVz
b3VyY2UtPmdldEF0dGFjaG1lbnRTaXplKG1UYXJnZXQpOwogfQogCiBpbmxpbmUgY29uc3QgRm9y
bWF0ICZGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OmdldEZvcm1hdCgpIGNvbnN0CiB7CisgICAgQVNT
RVJUKG1SZXNvdXJjZSk7CiAgICAgcmV0dXJuIG1SZXNvdXJjZS0+Z2V0QXR0YWNobWVudEZvcm1h
dChtVGFyZ2V0KTsKIH0KIAogaW5saW5lIEdMc2l6ZWkgRnJhbWVidWZmZXJBdHRhY2htZW50Ojpn
ZXRTYW1wbGVzKCkgY29uc3QKIHsKKyAgICBBU1NFUlQobVJlc291cmNlKTsKICAgICByZXR1cm4g
bVJlc291cmNlLT5nZXRBdHRhY2htZW50U2FtcGxlcyhtVGFyZ2V0KTsKIH0KIAotaW5saW5lIGds
OjpFcnJvciBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OmdldFJlbmRlclRhcmdldChyeDo6RnJhbWVi
dWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpIGNvbnN0CitpbmxpbmUgZ2w6OkVy
cm9yIEZyYW1lYnVmZmVyQXR0YWNobWVudDo6Z2V0UmVuZGVyVGFyZ2V0SW1wbCgKKyAgICByeDo6
RnJhbWVidWZmZXJBdHRhY2htZW50UmVuZGVyVGFyZ2V0ICoqcnRPdXQpIGNvbnN0CiB7CisgICAg
QVNTRVJUKG1SZXNvdXJjZSk7CiAgICAgcmV0dXJuIG1SZXNvdXJjZS0+Z2V0QXR0YWNobWVudFJl
bmRlclRhcmdldChtVGFyZ2V0LCBydE91dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9IYW5kbGVSYW5nZUFsbG9jYXRvci5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3IuY3Bw
CmluZGV4IDM4MzFhY2ExMzM3Li41MDBhNzk2MjljZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9yLmNwcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSGFuZGxlUmFuZ2VBbGxvY2F0b3Iu
Y3BwCkBAIC00OSw3ICs0OSw2IEBAIEdMdWludCBIYW5kbGVSYW5nZUFsbG9jYXRvcjo6YWxsb2Nh
dGVBdE9yQWJvdmUoR0x1aW50IHdhbnRlZCkKICAgICB9CiAKICAgICBHTHVpbnQgZmlyc3RJZCA9
IGN1cnJlbnQtPmZpcnN0OwotICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUoZmlyc3RJZCk7
CiAgICAgR0x1aW50IGxhc3RJZCA9IGN1cnJlbnQtPnNlY29uZDsKICAgICBBU1NFUlQod2FudGVk
ID49IGZpcnN0SWQpOwogCkBAIC0yMjMsNCArMjIyLDQgQEAgYm9vbCBIYW5kbGVSYW5nZUFsbG9j
YXRvcjo6aXNVc2VkKEdMdWludCBoYW5kbGUpIGNvbnN0CiAgICAgcmV0dXJuIGN1cnJlbnQtPnNl
Y29uZCA+PSBoYW5kbGU7CiB9CiAKLX0gIC8vIG5hbWVzcGFjZSBnbAorfSAgLy8gbmFtZXNwYWNl
IGdsClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdlLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9JbWFnZS5jcHAKaW5kZXggODI4Zjg2MjM4OTUuLjcxODQ4MGIyYmFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9JbWFnZS5jcHAK
QEAgLTY1LDcgKzY1LDcgQEAgZ2w6OkVycm9yIEltYWdlU2libGluZzo6b3JwaGFuSW1hZ2VzKCkK
ICAgICAgICAgbVNvdXJjZXNPZi5jbGVhcigpOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2b2lkIElt
YWdlU2libGluZzo6YWRkSW1hZ2VTb3VyY2UoZWdsOjpJbWFnZSAqaW1hZ2VTb3VyY2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2VJbmRleC5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2VJbmRleC5jcHAK
aW5kZXggZjc0Y2UxOWQ5MGQuLjIzMTg1NDFkOTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2VJbmRleC5jcHAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdlSW5kZXguY3BwCkBAIC0xLDMgKzEsNCBAQAor
I2luY2x1ZGUgIkltYWdlSW5kZXguaCIKIC8vCiAvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQpA
QCAtNjIsNiArNjMsMTEgQEAgSW1hZ2VJbmRleCBJbWFnZUluZGV4OjpNYWtlR2VuZXJpYyhHTGVu
dW0gdGFyZ2V0LCBHTGludCBtaXBJbmRleCkKICAgICByZXR1cm4gSW1hZ2VJbmRleCh0YXJnZXQs
IG1pcEluZGV4LCBsYXllckluZGV4KTsKIH0KIAorSW1hZ2VJbmRleCBJbWFnZUluZGV4OjpNYWtl
MkRNdWx0aXNhbXBsZSgpCit7CisgICAgcmV0dXJuIEltYWdlSW5kZXgoR0xfVEVYVFVSRV8yRF9N
VUxUSVNBTVBMRSwgMCwgRU5USVJFX0xFVkVMKTsKK30KKwogSW1hZ2VJbmRleCBJbWFnZUluZGV4
OjpNYWtlSW52YWxpZCgpCiB7CiAgICAgcmV0dXJuIEltYWdlSW5kZXgoR0xfTk9ORSwgLTEsIC0x
KTsKQEAgLTEwMiwxOCArMTA4LDIxIEBAIEltYWdlSW5kZXg6OkltYWdlSW5kZXgoR0xlbnVtIHR5
cGVJbiwgR0xpbnQgbWlwSW5kZXhJbiwgR0xpbnQgbGF5ZXJJbmRleEluKQogSW1hZ2VJbmRleEl0
ZXJhdG9yIEltYWdlSW5kZXhJdGVyYXRvcjo6TWFrZTJEKEdMaW50IG1pbk1pcCwgR0xpbnQgbWF4
TWlwKQogewogICAgIHJldHVybiBJbWFnZUluZGV4SXRlcmF0b3IoR0xfVEVYVFVSRV8yRCwgUmFu
Z2U8R0xpbnQ+KG1pbk1pcCwgbWF4TWlwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJhbmdlPEdMaW50PihJbWFnZUluZGV4OjpFTlRJUkVfTEVWRUwsIEltYWdlSW5kZXg6OkVOVElS
RV9MRVZFTCksIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2U8R0xp
bnQ+KEltYWdlSW5kZXg6OkVOVElSRV9MRVZFTCwgSW1hZ2VJbmRleDo6RU5USVJFX0xFVkVMKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogfQogCiBJbWFnZUluZGV4
SXRlcmF0b3IgSW1hZ2VJbmRleEl0ZXJhdG9yOjpNYWtlQ3ViZShHTGludCBtaW5NaXAsIEdMaW50
IG1heE1pcCkKIHsKLSAgICByZXR1cm4gSW1hZ2VJbmRleEl0ZXJhdG9yKEdMX1RFWFRVUkVfQ1VC
RV9NQVAsIFJhbmdlPEdMaW50PihtaW5NaXAsIG1heE1pcCksIFJhbmdlPEdMaW50PigwLCA2KSwg
TlVMTCk7CisgICAgcmV0dXJuIEltYWdlSW5kZXhJdGVyYXRvcihHTF9URVhUVVJFX0NVQkVfTUFQ
LCBSYW5nZTxHTGludD4obWluTWlwLCBtYXhNaXApLCBSYW5nZTxHTGludD4oMCwgNiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKIH0KIAogSW1hZ2VJbmRleEl0ZXJh
dG9yIEltYWdlSW5kZXhJdGVyYXRvcjo6TWFrZTNEKEdMaW50IG1pbk1pcCwgR0xpbnQgbWF4TWlw
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IG1p
bkxheWVyLCBHTGludCBtYXhMYXllcikKIHsKLSAgICByZXR1cm4gSW1hZ2VJbmRleEl0ZXJhdG9y
KEdMX1RFWFRVUkVfM0QsIFJhbmdlPEdMaW50PihtaW5NaXAsIG1heE1pcCksIFJhbmdlPEdMaW50
PihtaW5MYXllciwgbWF4TGF5ZXIpLCBOVUxMKTsKKyAgICByZXR1cm4gSW1hZ2VJbmRleEl0ZXJh
dG9yKEdMX1RFWFRVUkVfM0QsIFJhbmdlPEdMaW50PihtaW5NaXAsIG1heE1pcCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSYW5nZTxHTGludD4obWluTGF5ZXIsIG1heExheWVyKSwg
bnVsbHB0cik7CiB9CiAKIEltYWdlSW5kZXhJdGVyYXRvciBJbWFnZUluZGV4SXRlcmF0b3I6Ok1h
a2UyREFycmF5KEdMaW50IG1pbk1pcCwgR0xpbnQgbWF4TWlwLApAQCAtMTIzLDYgKzEzMiwxMyBA
QCBJbWFnZUluZGV4SXRlcmF0b3IgSW1hZ2VJbmRleEl0ZXJhdG9yOjpNYWtlMkRBcnJheShHTGlu
dCBtaW5NaXAsIEdMaW50IG1heE1pcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJh
bmdlPEdMaW50PigwLCBJTVBMRU1FTlRBVElPTl9NQVhfMkRfQVJSQVlfVEVYVFVSRV9MQVlFUlMp
LCBsYXllckNvdW50cyk7CiB9CiAKK0ltYWdlSW5kZXhJdGVyYXRvciBJbWFnZUluZGV4SXRlcmF0
b3I6Ok1ha2UyRE11bHRpc2FtcGxlKCkKK3sKKyAgICByZXR1cm4gSW1hZ2VJbmRleEl0ZXJhdG9y
KEdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUsIFJhbmdlPEdMaW50PigwLCAwKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJhbmdlPEdMaW50PihJbWFnZUluZGV4OjpFTlRJUkVfTEVW
RUwsIEltYWdlSW5kZXg6OkVOVElSRV9MRVZFTCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKK30KKwogSW1hZ2VJbmRleEl0ZXJhdG9yOjpJbWFnZUluZGV4SXRlcmF0
b3IoR0xlbnVtIHR5cGUsIGNvbnN0IFJhbmdlPEdMaW50PiAmbWlwUmFuZ2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSYW5nZTxHTGludD4gJmxheWVyUmFu
Z2UsIGNvbnN0IEdMc2l6ZWkgKmxheWVyQ291bnRzKQogICAgIDogbVR5cGUodHlwZSksCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2VJbmRleC5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdlSW5kZXguaAppbmRl
eCA1OTYxZjBjYjA0Ni4uNTk5Mjc4NDQ1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9JbWFnZUluZGV4LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdlSW5kZXguaApAQCAtMzUsNiArMzUsNyBAQCBzdHJ1Y3Qg
SW1hZ2VJbmRleAogICAgIHN0YXRpYyBJbWFnZUluZGV4IE1ha2UyREFycmF5KEdMaW50IG1pcElu
ZGV4LCBHTGludCBsYXllckluZGV4KTsKICAgICBzdGF0aWMgSW1hZ2VJbmRleCBNYWtlM0QoR0xp
bnQgbWlwSW5kZXgsIEdMaW50IGxheWVySW5kZXggPSBFTlRJUkVfTEVWRUwpOwogICAgIHN0YXRp
YyBJbWFnZUluZGV4IE1ha2VHZW5lcmljKEdMZW51bSB0YXJnZXQsIEdMaW50IG1pcEluZGV4KTsK
KyAgICBzdGF0aWMgSW1hZ2VJbmRleCBNYWtlMkRNdWx0aXNhbXBsZSgpOwogCiAgICAgc3RhdGlj
IEltYWdlSW5kZXggTWFrZUludmFsaWQoKTsKIApAQCAtNTcsNiArNTgsNyBAQCBjbGFzcyBJbWFn
ZUluZGV4SXRlcmF0b3IKICAgICBzdGF0aWMgSW1hZ2VJbmRleEl0ZXJhdG9yIE1ha2VDdWJlKEdM
aW50IG1pbk1pcCwgR0xpbnQgbWF4TWlwKTsKICAgICBzdGF0aWMgSW1hZ2VJbmRleEl0ZXJhdG9y
IE1ha2UzRChHTGludCBtaW5NaXAsIEdMaW50IG1heE1pcCwgR0xpbnQgbWluTGF5ZXIsIEdMaW50
IG1heExheWVyKTsKICAgICBzdGF0aWMgSW1hZ2VJbmRleEl0ZXJhdG9yIE1ha2UyREFycmF5KEdM
aW50IG1pbk1pcCwgR0xpbnQgbWF4TWlwLCBjb25zdCBHTHNpemVpICpsYXllckNvdW50cyk7Cisg
ICAgc3RhdGljIEltYWdlSW5kZXhJdGVyYXRvciBNYWtlMkRNdWx0aXNhbXBsZSgpOwogCiAgICAg
SW1hZ2VJbmRleCBuZXh0KCk7CiAgICAgSW1hZ2VJbmRleCBjdXJyZW50KCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvSW1hZ2VfdW5pdHRl
c3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdlX3VuaXR0
ZXN0LmNwcAppbmRleCAwOTc4YWM2Nzg0MC4uMWI4NDNiZTRmMGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9JbWFnZV91bml0dGVzdC5jcHAKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0ltYWdlX3VuaXR0ZXN0LmNwcApA
QCAtNDcsNyArNDcsNyBAQCBURVNUKEltYWdlVGVzdCwgUmVmQ291bnRpbmcpCiAgICAgcmVuZGVy
YnVmZmVyLT5hZGRSZWYoKTsKIAogICAgIEVYUEVDVF9DQUxMKCpyZW5kZXJidWZmZXJJbXBsLCBz
ZXRTdG9yYWdlRUdMSW1hZ2VUYXJnZXQoXykpCi0gICAgICAgIC5XaWxsT25jZShSZXR1cm4oZ2w6
OkVycm9yKEdMX05PX0VSUk9SKSkpCisgICAgICAgIC5XaWxsT25jZShSZXR1cm4oZ2w6Ok5vRXJy
b3IoKSkpCiAgICAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CiAgICAgcmVuZGVyYnVmZmVy
LT5zZXRTdG9yYWdlRUdMSW1hZ2VUYXJnZXQoaW1hZ2UpOwogCkBAIC03Myw5ICs3Myw3IEBAIFRF
U1QoSW1hZ2VUZXN0LCBSZWZDb3VudGluZykKIAogICAgIC8vIFNpbXVsYXRlIGRlbGV0aW9uIG9m
IHRoZSByZW5kZXJidWZmZXIgYW5kIHZlcmlmeSB0aGF0IHRoZSBkZWxldGlvbiBjYXNjYWRlcyB0
byBhbGwgb2JqZWN0cwogICAgIEVYUEVDVF9DQUxMKCppbWFnZUltcGwsIGRlc3RydWN0b3IoKSku
VGltZXMoMSkuUmV0aXJlc09uU2F0dXJhdGlvbigpOwotICAgIEVYUEVDVF9DQUxMKCppbWFnZUlt
cGwsIG9ycGhhbihfKSkKLSAgICAgICAgLldpbGxPbmNlKFJldHVybihnbDo6RXJyb3IoR0xfTk9f
RVJST1IpKSkKLSAgICAgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKKyAgICBFWFBFQ1RfQ0FM
TCgqaW1hZ2VJbXBsLCBvcnBoYW4oXykpLldpbGxPbmNlKFJldHVybihnbDo6Tm9FcnJvcigpKSku
UmV0aXJlc09uU2F0dXJhdGlvbigpOwogCiAgICAgRVhQRUNUX0NBTEwoKnRleHR1cmVJbXBsLCBk
ZXN0cnVjdG9yKCkpLlRpbWVzKDEpLlJldGlyZXNPblNhdHVyYXRpb24oKTsKICAgICBFWFBFQ1Rf
Q0FMTCgqcmVuZGVyYnVmZmVySW1wbCwgZGVzdHJ1Y3RvcigpKS5UaW1lcygxKS5SZXRpcmVzT25T
YXR1cmF0aW9uKCk7CkBAIC05NSwxMSArOTMsMTEgQEAgVEVTVChJbWFnZVRlc3QsIFJlc3BlY2lm
aWNhdGlvblJlbGVhc2VzUmVmZXJlbmNlcykKIAogICAgIGdsOjpQaXhlbFVucGFja1N0YXRlIGRl
ZmF1bHRVbnBhY2tTdGF0ZTsKIAotICAgIEVYUEVDVF9DQUxMKCp0ZXh0dXJlSW1wbCwgc2V0SW1h
Z2UoXywgXywgXywgXywgXywgXywgXywgXykpCi0gICAgICAgIC5XaWxsT25jZShSZXR1cm4oZ2w6
OkVycm9yKEdMX05PX0VSUk9SKSkpCisgICAgRVhQRUNUX0NBTEwoKnRleHR1cmVJbXBsLCBzZXRJ
bWFnZShfLCBfLCBfLCBfLCBfLCBfLCBfLCBfLCBfKSkKKyAgICAgICAgLldpbGxPbmNlKFJldHVy
bihnbDo6Tm9FcnJvcigpKSkKICAgICAgICAgLlJldGlyZXNPblNhdHVyYXRpb24oKTsKLSAgICB0
ZXh0dXJlLT5zZXRJbWFnZShkZWZhdWx0VW5wYWNrU3RhdGUsIEdMX1RFWFRVUkVfMkQsIDAsIEdM
X1JHQkE4LCBnbDo6RXh0ZW50cygxLCAxLCAxKSwgR0xfUkdCQSwKLSAgICAgICAgICAgICAgICAg
ICAgICBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKyAgICB0ZXh0dXJlLT5zZXRJbWFnZShu
dWxscHRyLCBkZWZhdWx0VW5wYWNrU3RhdGUsIEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkE4LCBn
bDo6RXh0ZW50cygxLCAxLCAxKSwKKyAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLCBudWxscHRyKTsKIAogICAgIHJ4OjpNb2NrSW1hZ2VJbXBsICppbWFnZUlt
cGwgPSBuZXcgcng6Ok1vY2tJbWFnZUltcGwoKTsKICAgICBlZ2w6OkltYWdlICppbWFnZSA9IG5l
dyBlZ2w6OkltYWdlKGltYWdlSW1wbCwgRUdMX0dMX1RFWFRVUkVfMkQsIHRleHR1cmUsIGVnbDo6
QXR0cmlidXRlTWFwKCkpOwpAQCAtMTExLDE1ICsxMDksMTMgQEAgVEVTVChJbWFnZVRlc3QsIFJl
c3BlY2lmaWNhdGlvblJlbGVhc2VzUmVmZXJlbmNlcykKICAgICBFWFBFQ1RfRVEoaW1hZ2UtPmdl
dFJlZkNvdW50KCksIDF1KTsKIAogICAgIC8vIFJlc3BlY2lmeSB0aGUgdGV4dHVyZSBhbmQgdmVy
aWZ5IHRoYXQgdGhlIGltYWdlIHJlbGVhc2VzIGl0cyByZWZlcmVuY2UKLSAgICBFWFBFQ1RfQ0FM
TCgqaW1hZ2VJbXBsLCBvcnBoYW4oXykpCi0gICAgICAgIC5XaWxsT25jZShSZXR1cm4oZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKSkpCi0gICAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7Ci0gICAg
RVhQRUNUX0NBTEwoKnRleHR1cmVJbXBsLCBzZXRJbWFnZShfLCBfLCBfLCBfLCBfLCBfLCBfLCBf
KSkKLSAgICAgICAgLldpbGxPbmNlKFJldHVybihnbDo6RXJyb3IoR0xfTk9fRVJST1IpKSkKKyAg
ICBFWFBFQ1RfQ0FMTCgqaW1hZ2VJbXBsLCBvcnBoYW4oXykpLldpbGxPbmNlKFJldHVybihnbDo6
Tm9FcnJvcigpKSkuUmV0aXJlc09uU2F0dXJhdGlvbigpOworICAgIEVYUEVDVF9DQUxMKCp0ZXh0
dXJlSW1wbCwgc2V0SW1hZ2UoXywgXywgXywgXywgXywgXywgXywgXywgXykpCisgICAgICAgIC5X
aWxsT25jZShSZXR1cm4oZ2w6Ok5vRXJyb3IoKSkpCiAgICAgICAgIC5SZXRpcmVzT25TYXR1cmF0
aW9uKCk7CiAKLSAgICB0ZXh0dXJlLT5zZXRJbWFnZShkZWZhdWx0VW5wYWNrU3RhdGUsIEdMX1RF
WFRVUkVfMkQsIDAsIEdMX1JHQkE4LCBnbDo6RXh0ZW50cygxLCAxLCAxKSwgR0xfUkdCQSwKLSAg
ICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKKyAgICB0ZXh0
dXJlLT5zZXRJbWFnZShudWxscHRyLCBkZWZhdWx0VW5wYWNrU3RhdGUsIEdMX1RFWFRVUkVfMkQs
IDAsIEdMX1JHQkE4LCBnbDo6RXh0ZW50cygxLCAxLCAxKSwKKyAgICAgICAgICAgICAgICAgICAg
ICBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKIAogICAgIEVYUEVDVF9FUSh0
ZXh0dXJlLT5nZXRSZWZDb3VudCgpLCAxdSk7CiAgICAgRVhQRUNUX0VRKGltYWdlLT5nZXRSZWZD
b3VudCgpLCAxdSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvTG9nZ2luZ0Fubm90YXRvci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvTG9nZ2luZ0Fubm90YXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLjRhNzljZTA3Njk2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL0xvZ2dpbmdBbm5vdGF0b3IuY3BwCkBAIC0wLDAgKzEs
MzkgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNyBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisvLyBMb2dnaW5nQW5ub3RhdG9yLmNwcDogRGVidWdBbm5vdGF0b3Ig
aW1wbGVtZW50aW5nIGxvZ2dpbmcKKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9Mb2dnaW5nQW5u
b3RhdG9yLmgiCisKKyNpbmNsdWRlIDxwbGF0Zm9ybS9QbGF0Zm9ybS5oPgorCituYW1lc3BhY2Ug
YW5nbGUKK3sKKwordm9pZCBMb2dnaW5nQW5ub3RhdG9yOjpsb2dNZXNzYWdlKGNvbnN0IGdsOjpM
b2dNZXNzYWdlICZtc2cpIGNvbnN0Cit7CisgICAgYXV0byAqcGxhdCA9IEFOR0xFUGxhdGZvcm1D
dXJyZW50KCk7CisgICAgaWYgKHBsYXQgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHN3aXRj
aCAobXNnLmdldFNldmVyaXR5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgZ2w6OkxP
R19FUlI6CisgICAgICAgICAgICAgICAgcGxhdC0+bG9nRXJyb3IocGxhdCwgbXNnLmdldE1lc3Nh
Z2UoKS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ug
Z2w6OkxPR19XQVJOOgorICAgICAgICAgICAgICAgIHBsYXQtPmxvZ1dhcm5pbmcocGxhdCwgbXNn
LmdldE1lc3NhZ2UoKS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBnbDo6VHJhY2UobXNnLmdldFNldmVyaXR5
KCksIG1zZy5nZXRNZXNzYWdlKCkuY19zdHIoKSk7CisgICAgfQorfQorCit9ICAvLyBuYW1lc3Bh
Y2UgYW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9Mb2dnaW5nQW5ub3RhdG9yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvTG9nZ2luZ0Fubm90YXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi4zNjE3ZGQ1YjAyZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9Mb2dnaW5nQW5ub3RhdG9yLmgKQEAgLTAsMCArMSwzMSBAQAorLy8K
Ky8vIENvcHlyaWdodCAyMDE3IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgorLy8KKy8vIExvZ2dpbmdBbm5vdGF0b3IuaDogRGVidWdBbm5vdGF0b3IgaW1wbGVtZW50aW5n
IGxvZ2dpbmcKKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfTE9HR0lOR0FOTk9UQVRPUl9IXworI2Rl
ZmluZSBMSUJBTkdMRV9MT0dHSU5HQU5OT1RBVE9SX0hfCisKKyNpbmNsdWRlICJjb21tb24vZGVi
dWcuaCIKKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK2NsYXNzIExvZ2dpbmdBbm5vdGF0b3IgOiBw
dWJsaWMgZ2w6OkRlYnVnQW5ub3RhdG9yCit7CisgIHB1YmxpYzoKKyAgICBMb2dnaW5nQW5ub3Rh
dG9yKCl7fTsKKyAgICB+TG9nZ2luZ0Fubm90YXRvcigpIG92ZXJyaWRle307CisgICAgdm9pZCBi
ZWdpbkV2ZW50KGNvbnN0IHdjaGFyX3QgKmV2ZW50TmFtZSkgb3ZlcnJpZGUge30KKyAgICB2b2lk
IGVuZEV2ZW50KCkgb3ZlcnJpZGUge30KKyAgICB2b2lkIHNldE1hcmtlcihjb25zdCB3Y2hhcl90
ICptYXJrZXJOYW1lKSBvdmVycmlkZSB7fQorICAgIGJvb2wgZ2V0U3RhdHVzKCkgb3ZlcnJpZGUg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIGxvZ01lc3NhZ2UoY29uc3QgZ2w6OkxvZ01lc3Nh
Z2UgJm1zZykgY29uc3Qgb3ZlcnJpZGU7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5nbGUKKwor
I2VuZGlmICAvLyBMSUJBTkdMRV9MT0dHSU5HQU5OT1RBVE9SX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUGF0aC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL1BhdGguaAppbmRleCA4NWY0OWMxNTYyMi4uYjEwM2M4NDYw
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9QYXRo
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1BhdGguaApAQCAt
NjgsNCArNjgsNCBAQCBjbGFzcyBQYXRoIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKIH0g
IC8vIG5hbWVzcGFjZSBnbAogCi0jZW5kaWYgIC8vIExJQkFOR0xFX1BBVEhfSF8KKyNlbmRpZiAg
Ly8gTElCQU5HTEVfUEFUSF9IXwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9QbGF0Zm9ybS5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUGxhdGZvcm0uY3BwCmluZGV4IGJm
Y2RiMTQ5NGVhLi42Y2JiZDFlODBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1BsYXRmb3JtLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvUGxhdGZvcm0uY3BwCkBAIC04LDI4ICs4LDU4IEBACiAKICNpbmNsdWRl
IDxwbGF0Zm9ybS9QbGF0Zm9ybS5oPgogCisjaW5jbHVkZSA8Y3N0cmluZz4KKwogI2luY2x1ZGUg
ImNvbW1vbi9kZWJ1Zy5oIgogCiBuYW1lc3BhY2UKIHsKLWFuZ2xlOjpQbGF0Zm9ybSAqY3VycmVu
dFBsYXRmb3JtID0gbnVsbHB0cjsKLX0KKy8vIFRPRE8oam1hZGlsbCk6IE1ha2UgbWV0aG9kcyBv
d25lZCBieSBlZ2w6OkRpc3BsYXkuCithbmdsZTo6UGxhdGZvcm1NZXRob2RzIGdfcGxhdGZvcm1N
ZXRob2RzOworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi0vLyBzdGF0aWMKLWFuZ2xlOjpQ
bGF0Zm9ybSAqQU5HTEVfQVBJRU5UUlkgQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKQorYW5nbGU6OlBs
YXRmb3JtTWV0aG9kcyAqQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKQogewotICAgIHJldHVybiBjdXJy
ZW50UGxhdGZvcm07CisgICAgcmV0dXJuICZnX3BsYXRmb3JtTWV0aG9kczsKIH0KIAotLy8gc3Rh
dGljCi12b2lkIEFOR0xFX0FQSUVOVFJZIEFOR0xFUGxhdGZvcm1Jbml0aWFsaXplKGFuZ2xlOjpQ
bGF0Zm9ybSAqcGxhdGZvcm1JbXBsKQorYm9vbCBBTkdMRV9BUElFTlRSWSBBTkdMRUdldERpc3Bs
YXlQbGF0Zm9ybShhbmdsZTo6RUdMRGlzcGxheVR5cGUgZGlzcGxheSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29uc3QgbWV0aG9kTmFt
ZXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IG1ldGhvZE5hbWVDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdm9pZCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAqcGxhdGZvcm1NZXRob2RzKQogewotICAgIEFTU0VSVChwbGF0
Zm9ybUltcGwgIT0gbnVsbHB0cik7Ci0gICAgY3VycmVudFBsYXRmb3JtID0gcGxhdGZvcm1JbXBs
OworICAgIGFuZ2xlOjpQbGF0Zm9ybU1ldGhvZHMgKipwbGF0Zm9ybU1ldGhvZHNPdXQgPQorICAg
ICAgICByZWludGVycHJldF9jYXN0PGFuZ2xlOjpQbGF0Zm9ybU1ldGhvZHMgKio+KHBsYXRmb3Jt
TWV0aG9kcyk7CisKKyAgICAvLyBXZSBhbGxvdyBmb3IgYSBsb3dlciBpbnB1dCBjb3VudCBvZiBp
bXBsIHBsYXRmb3JtIG1ldGhvZHMgaWYgdGhlIHN1YnNldCBpcyBjb3JyZWN0LgorICAgIGlmICht
ZXRob2ROYW1lQ291bnQgPiBhbmdsZTo6Z19OdW1QbGF0Zm9ybU1ldGhvZHMpCisgICAgeworICAg
ICAgICBFUlIoKSA8PCAiSW52YWxpZCBwbGF0Zm9ybSBtZXRob2QgY291bnQ6ICIgPDwgbWV0aG9k
TmFtZUNvdW50IDw8ICIsIGV4cGVjdGVkICIKKyAgICAgICAgICAgICAgPDwgYW5nbGU6OmdfTnVt
UGxhdGZvcm1NZXRob2RzIDw8ICIuIjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGZvciAodW5zaWduZWQgaW50IG5hbWVJbmRleCA9IDA7IG5hbWVJbmRleCA8IG1ldGhvZE5h
bWVDb3VudDsgKytuYW1lSW5kZXgpCisgICAgeworICAgICAgICBjb25zdCBjaGFyICpleHBlY3Rl
ZE5hbWUgPSBhbmdsZTo6Z19QbGF0Zm9ybU1ldGhvZE5hbWVzW25hbWVJbmRleF07CisgICAgICAg
IGNvbnN0IGNoYXIgKmFjdHVhbE5hbWUgICA9IG1ldGhvZE5hbWVzW25hbWVJbmRleF07CisgICAg
ICAgIGlmIChzdHJjbXAoZXhwZWN0ZWROYW1lLCBhY3R1YWxOYW1lKSAhPSAwKQorICAgICAgICB7
CisgICAgICAgICAgICBFUlIoKSA8PCAiSW52YWxpZCBwbGF0Zm9ybSBtZXRob2QgbmFtZTogIiA8
PCBhY3R1YWxOYW1lIDw8ICIsIGV4cGVjdGVkICIgPDwgZXhwZWN0ZWROYW1lCisgICAgICAgICAg
ICAgICAgICA8PCAiLiI7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBTdG9yZSBwbGF0Zm9ybSBtZXRob2RzIGluIGRp
c3BsYXkuCisgICAgZ19wbGF0Zm9ybU1ldGhvZHMuY29udGV4dCA9IGNvbnRleHQ7CisgICAgKnBs
YXRmb3JtTWV0aG9kc091dCAgICAgICA9ICZnX3BsYXRmb3JtTWV0aG9kczsKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotLy8gc3RhdGljCi12b2lkIEFOR0xFX0FQSUVOVFJZIEFOR0xFUGxhdGZvcm1T
aHV0ZG93bigpCit2b2lkIEFOR0xFX0FQSUVOVFJZIEFOR0xFUmVzZXREaXNwbGF5UGxhdGZvcm0o
YW5nbGU6OkVHTERpc3BsYXlUeXBlIGRpc3BsYXkpCiB7Ci0gICAgY3VycmVudFBsYXRmb3JtID0g
bnVsbHB0cjsKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBTdG9yZSBwbGF0Zm9ybSBtZXRob2RzIGlu
IGRpc3BsYXkuCisgICAgZ19wbGF0Zm9ybU1ldGhvZHMgPSBhbmdsZTo6UGxhdGZvcm1NZXRob2Rz
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
UHJvZ3JhbS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUHJvZ3Jh
bS5jcHAKaW5kZXggMzYyOWYwNWU3ZjQuLjI2ODA3NDFkMTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUHJvZ3JhbS5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dyYW0uY3BwCkBAIC0xMSwxOSArMTEsMjEg
QEAKIAogI2luY2x1ZGUgPGFsZ29yaXRobT4KIAotI2luY2x1ZGUgImNvbW1vbi9CaXRTZXRJdGVy
YXRvci5oIgorI2luY2x1ZGUgImNvbW1vbi9iaXRzZXRfdXRpbHMuaCIKICNpbmNsdWRlICJjb21t
b24vZGVidWcuaCIKICNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0uaCIKICNpbmNsdWRlICJjb21t
b24vdXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiY29tbW9uL3ZlcnNpb24uaCIKICNpbmNsdWRlICJj
b21waWxlci90cmFuc2xhdG9yL2Jsb2NrbGF5b3V0LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvQ29u
dGV4dFN0YXRlLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL1Jlc291cmNlTWFuYWdlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL2ZlYXR1cmVzLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvR0xJbXBsRmFjdG9yeS5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsLmgiCisjaW5jbHVkZSAibGliQU5HTEUvVmFy
eWluZ1BhY2tpbmcuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9xdWVyeWNvbnZlcnNpb25zLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvVW5pZm9ybS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1VuaWZvcm1M
aW5rZXIuaCIKIAogbmFtZXNwYWNlIGdsCiB7CkBAIC0xMjQsMTQgKzEyNiw5MSBAQCB2b2lkIFVu
aWZvcm1TdGF0ZVF1ZXJ5Q2FzdExvb3AoRGVzdFQgKmRhdGFPdXQsIGNvbnN0IHVpbnQ4X3QgKnNy
Y1BvaW50ZXIsIGludCBjbwogICAgIH0KIH0KIAotYm9vbCBVbmlmb3JtSW5MaXN0KGNvbnN0IHN0
ZDo6dmVjdG9yPExpbmtlZFVuaWZvcm0+ICZsaXN0LCBjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkK
Ky8vIHRydWUgaWYgdmFyeWluZyB4IGhhcyBhIGhpZ2hlciBwcmlvcml0eSBpbiBwYWNraW5nIHRo
YW4geQorYm9vbCBDb21wYXJlUGFja2VkVmFyeWluZyhjb25zdCBQYWNrZWRWYXJ5aW5nICZ4LCBj
b25zdCBQYWNrZWRWYXJ5aW5nICZ5KQogewotICAgIGZvciAoY29uc3QgTGlua2VkVW5pZm9ybSAm
dW5pZm9ybSA6IGxpc3QpCisgICAgLy8gSWYgdGhlIFBhY2tlZFZhcnlpbmcgJ3gnIG9yICd5JyB0
byBiZSBjb21wYXJlZCBpcyBhbiBhcnJheSBlbGVtZW50LCB0aGlzIGNsb25lcyBhbiBlcXVpdmFs
ZW50CisgICAgLy8gbm9uLWFycmF5IHNoYWRlciB2YXJpYWJsZSAndngnIG9yICd2eScgZm9yIGFj
dHVhbCBjb21wYXJpc29uIGluc3RlYWQuCisgICAgc2g6OlNoYWRlclZhcmlhYmxlIHZ4LCB2eTsK
KyAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgKnB4LCAqcHk7CisgICAgaWYgKHguaXNBcnJh
eUVsZW1lbnQoKSkKICAgICB7Ci0gICAgICAgIGlmICh1bmlmb3JtLm5hbWUgPT0gbmFtZSkKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB2eCAgICAgICAgICAgPSAqeC52YXJ5aW5n
OworICAgICAgICB2eC5hcnJheVNpemUgPSAwOworICAgICAgICBweCAgICAgICAgICAgPSAmdng7
CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHB4ID0geC52YXJ5aW5nOworICAgIH0K
KworICAgIGlmICh5LmlzQXJyYXlFbGVtZW50KCkpCisgICAgeworICAgICAgICB2eSAgICAgICAg
ICAgPSAqeS52YXJ5aW5nOworICAgICAgICB2eS5hcnJheVNpemUgPSAwOworICAgICAgICBweSAg
ICAgICAgICAgPSAmdnk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHB5ID0geS52
YXJ5aW5nOworICAgIH0KKworICAgIHJldHVybiBnbDo6Q29tcGFyZVNoYWRlclZhcigqcHgsICpw
eSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBWYXJUPgorR0x1aW50IEdldFJlc291cmNlSW5k
ZXhGcm9tTmFtZShjb25zdCBzdGQ6OnZlY3RvcjxWYXJUPiAmbGlzdCwgY29uc3Qgc3RkOjpzdHJp
bmcgJm5hbWUpCit7CisgICAgc2l6ZV90IHN1YnNjcmlwdCAgICAgPSBHTF9JTlZBTElEX0lOREVY
OworICAgIHN0ZDo6c3RyaW5nIGJhc2VOYW1lID0gUGFyc2VSZXNvdXJjZU5hbWUobmFtZSwgJnN1
YnNjcmlwdCk7CisKKyAgICAvLyBUaGUgYXBwIGlzIG5vdCBhbGxvd2VkIHRvIHNwZWNpZnkgYXJy
YXkgaW5kaWNlcyBvdGhlciB0aGFuIDAgZm9yIGFycmF5cyBvZiBiYXNpYyB0eXBlcworICAgIGlm
IChzdWJzY3JpcHQgIT0gMCAmJiBzdWJzY3JpcHQgIT0gR0xfSU5WQUxJRF9JTkRFWCkKKyAgICB7
CisgICAgICAgIHJldHVybiBHTF9JTlZBTElEX0lOREVYOworICAgIH0KKworICAgIGZvciAoc2l6
ZV90IGluZGV4ID0gMDsgaW5kZXggPCBsaXN0LnNpemUoKTsgaW5kZXgrKykKKyAgICB7CisgICAg
ICAgIGNvbnN0IFZhclQgJnJlc291cmNlID0gbGlzdFtpbmRleF07CisgICAgICAgIGlmIChyZXNv
dXJjZS5uYW1lID09IGJhc2VOYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAocmVzb3Vy
Y2UuaXNBcnJheSgpIHx8IHN1YnNjcmlwdCA9PSBHTF9JTlZBTElEX0lOREVYKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTHVpbnQ+KGluZGV4KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBHTF9JTlZBTElE
X0lOREVYOworfQorCit2b2lkIENvcHlTdHJpbmdUb0J1ZmZlcihHTGNoYXIgKmJ1ZmZlciwgY29u
c3Qgc3RkOjpzdHJpbmcgJnN0cmluZywgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgp
Cit7CisgICAgQVNTRVJUKGJ1ZlNpemUgPiAwKTsKKyAgICBzdHJuY3B5KGJ1ZmZlciwgc3RyaW5n
LmNfc3RyKCksIGJ1ZlNpemUpOworICAgIGJ1ZmZlcltidWZTaXplIC0gMV0gPSAnXDAnOworCisg
ICAgaWYgKGxlbmd0aCkKKyAgICB7CisgICAgICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDxHTHNp
emVpPihzdHJsZW4oYnVmZmVyKSk7CiAgICAgfQorfQogCitib29sIEluY2x1ZGVTYW1lQXJyYXlF
bGVtZW50KGNvbnN0IHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiAmbmFtZVNldCwgY29uc3Qgc3RkOjpz
dHJpbmcgJm5hbWUpCit7CisgICAgc2l6ZV90IHN1YnNjcmlwdCAgICAgPSBHTF9JTlZBTElEX0lO
REVYOworICAgIHN0ZDo6c3RyaW5nIGJhc2VOYW1lID0gUGFyc2VSZXNvdXJjZU5hbWUobmFtZSwg
JnN1YnNjcmlwdCk7CisgICAgZm9yIChhdXRvIGl0ID0gbmFtZVNldC5iZWdpbigpOyBpdCAhPSBu
YW1lU2V0LmVuZCgpOyArK2l0KQorICAgIHsKKyAgICAgICAgc2l6ZV90IGFycmF5SW5kZXggICAg
ID0gR0xfSU5WQUxJRF9JTkRFWDsKKyAgICAgICAgc3RkOjpzdHJpbmcgYXJyYXlOYW1lID0gUGFy
c2VSZXNvdXJjZU5hbWUoKml0LCAmYXJyYXlJbmRleCk7CisgICAgICAgIGlmIChiYXNlTmFtZSA9
PSBhcnJheU5hbWUgJiYgKHN1YnNjcmlwdCA9PSBHTF9JTlZBTElEX0lOREVYIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5SW5kZXggPT0gR0xfSU5WQUxJRF9J
TkRFWCB8fCBzdWJzY3JpcHQgPT0gYXJyYXlJbmRleCkpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIApA
QCAtMjM5LDYgKzMxOCw3IEBAIFByb2dyYW1TdGF0ZTo6UHJvZ3JhbVN0YXRlKCkKICAgICAgIG1B
dHRhY2hlZFZlcnRleFNoYWRlcihudWxscHRyKSwKICAgICAgIG1BdHRhY2hlZENvbXB1dGVTaGFk
ZXIobnVsbHB0ciksCiAgICAgICBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKEdMX0lOVEVS
TEVBVkVEX0FUVFJJQlMpLAorICAgICAgbVNhbXBsZXJVbmlmb3JtUmFuZ2UoMCwgMCksCiAgICAg
ICBtQmluYXJ5UmV0cmlldmVhYmxlSGludChmYWxzZSkKIHsKICAgICBtQ29tcHV0ZVNoYWRlckxv
Y2FsU2l6ZS5maWxsKDEpOwpAQCAtMjQ2LDIwICszMjYsNyBAQCBQcm9ncmFtU3RhdGU6OlByb2dy
YW1TdGF0ZSgpCiAKIFByb2dyYW1TdGF0ZTo6flByb2dyYW1TdGF0ZSgpCiB7Ci0gICAgaWYgKG1B
dHRhY2hlZFZlcnRleFNoYWRlciAhPSBudWxscHRyKQotICAgIHsKLSAgICAgICAgbUF0dGFjaGVk
VmVydGV4U2hhZGVyLT5yZWxlYXNlKCk7Ci0gICAgfQotCi0gICAgaWYgKG1BdHRhY2hlZEZyYWdt
ZW50U2hhZGVyICE9IG51bGxwdHIpCi0gICAgewotICAgICAgICBtQXR0YWNoZWRGcmFnbWVudFNo
YWRlci0+cmVsZWFzZSgpOwotICAgIH0KLQotICAgIGlmIChtQXR0YWNoZWRDb21wdXRlU2hhZGVy
ICE9IG51bGxwdHIpCi0gICAgewotICAgICAgICBtQXR0YWNoZWRDb21wdXRlU2hhZGVyLT5yZWxl
YXNlKCk7Ci0gICAgfQorICAgIEFTU0VSVCghbUF0dGFjaGVkVmVydGV4U2hhZGVyICYmICFtQXR0
YWNoZWRGcmFnbWVudFNoYWRlciAmJiAhbUF0dGFjaGVkQ29tcHV0ZVNoYWRlcik7CiB9CiAKIGNv
bnN0IHN0ZDo6c3RyaW5nICZQcm9ncmFtU3RhdGU6OmdldExhYmVsKCkKQEAgLTI2NywyMyArMzM0
LDEwIEBAIGNvbnN0IHN0ZDo6c3RyaW5nICZQcm9ncmFtU3RhdGU6OmdldExhYmVsKCkKICAgICBy
ZXR1cm4gbUxhYmVsOwogfQogCi1jb25zdCBMaW5rZWRVbmlmb3JtICpQcm9ncmFtU3RhdGU6Omdl
dFVuaWZvcm1CeU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0Ci17Ci0gICAgZm9y
IChjb25zdCBMaW5rZWRVbmlmb3JtICZsaW5rZWRVbmlmb3JtIDogbVVuaWZvcm1zKQotICAgIHsK
LSAgICAgICAgaWYgKGxpbmtlZFVuaWZvcm0ubmFtZSA9PSBuYW1lKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gJmxpbmtlZFVuaWZvcm07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBy
ZXR1cm4gbnVsbHB0cjsKLX0KLQogR0xpbnQgUHJvZ3JhbVN0YXRlOjpnZXRVbmlmb3JtTG9jYXRp
b24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHN1YnNjcmlw
dCAgICAgPSBHTF9JTlZBTElEX0lOREVYOwotICAgIHN0ZDo6c3RyaW5nIGJhc2VOYW1lID0gZ2w6
OlBhcnNlVW5pZm9ybU5hbWUobmFtZSwgJnN1YnNjcmlwdCk7CisgICAgc3RkOjpzdHJpbmcgYmFz
ZU5hbWUgPSBQYXJzZVJlc291cmNlTmFtZShuYW1lLCAmc3Vic2NyaXB0KTsKIAogICAgIGZvciAo
c2l6ZV90IGxvY2F0aW9uID0gMDsgbG9jYXRpb24gPCBtVW5pZm9ybUxvY2F0aW9ucy5zaXplKCk7
ICsrbG9jYXRpb24pCiAgICAgewpAQCAtMzE4LDQxICszNzIsNDcgQEAgR0xpbnQgUHJvZ3JhbVN0
YXRlOjpnZXRVbmlmb3JtTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0CiAg
ICAgcmV0dXJuIC0xOwogfQogCi1HTHVpbnQgUHJvZ3JhbVN0YXRlOjpnZXRVbmlmb3JtSW5kZXgo
Y29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0CitHTHVpbnQgUHJvZ3JhbVN0YXRlOjpnZXRV
bmlmb3JtSW5kZXhGcm9tTmFtZShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29uc3QKIHsKLSAg
ICBzaXplX3Qgc3Vic2NyaXB0ICAgICA9IEdMX0lOVkFMSURfSU5ERVg7Ci0gICAgc3RkOjpzdHJp
bmcgYmFzZU5hbWUgPSBnbDo6UGFyc2VVbmlmb3JtTmFtZShuYW1lLCAmc3Vic2NyaXB0KTsKKyAg
ICByZXR1cm4gR2V0UmVzb3VyY2VJbmRleEZyb21OYW1lKG1Vbmlmb3JtcywgbmFtZSk7Cit9CiAK
LSAgICAvLyBUaGUgYXBwIGlzIG5vdCBhbGxvd2VkIHRvIHNwZWNpZnkgYXJyYXkgaW5kaWNlcyBv
dGhlciB0aGFuIDAgZm9yIGFycmF5cyBvZiBiYXNpYyB0eXBlcwotICAgIGlmIChzdWJzY3JpcHQg
IT0gMCAmJiBzdWJzY3JpcHQgIT0gR0xfSU5WQUxJRF9JTkRFWCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBHTF9JTlZBTElEX0lOREVYOwotICAgIH0KK0dMdWludCBQcm9ncmFtU3RhdGU6OmdldFVu
aWZvcm1JbmRleEZyb21Mb2NhdGlvbihHTGludCBsb2NhdGlvbikgY29uc3QKK3sKKyAgICBBU1NF
UlQobG9jYXRpb24gPj0gMCAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KGxvY2F0aW9uKSA8IG1Vbmlm
b3JtTG9jYXRpb25zLnNpemUoKSk7CisgICAgcmV0dXJuIG1Vbmlmb3JtTG9jYXRpb25zW2xvY2F0
aW9uXS5pbmRleDsKK30KIAotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBtVW5p
Zm9ybXMuc2l6ZSgpOyBpbmRleCsrKQorT3B0aW9uYWw8R0x1aW50PiBQcm9ncmFtU3RhdGU6Omdl
dFNhbXBsZXJJbmRleChHTGludCBsb2NhdGlvbikgY29uc3QKK3sKKyAgICBHTHVpbnQgaW5kZXgg
PSBnZXRVbmlmb3JtSW5kZXhGcm9tTG9jYXRpb24obG9jYXRpb24pOworICAgIGlmICghaXNTYW1w
bGVyVW5pZm9ybUluZGV4KGluZGV4KSkKICAgICB7Ci0gICAgICAgIGNvbnN0IExpbmtlZFVuaWZv
cm0gJnVuaWZvcm0gPSBtVW5pZm9ybXNbaW5kZXhdOwotICAgICAgICBpZiAodW5pZm9ybS5uYW1l
ID09IGJhc2VOYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAodW5pZm9ybS5pc0FycmF5
KCkgfHwgc3Vic2NyaXB0ID09IEdMX0lOVkFMSURfSU5ERVgpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMdWludD4oaW5kZXgpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9CisgICAgICAgIHJldHVybiBPcHRpb25hbDxHTHVpbnQ+OjpJbnZhbGlk
KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIEdMX0lOVkFMSURfSU5ERVg7CisgICAgcmV0dXJuIGdl
dFNhbXBsZXJJbmRleEZyb21Vbmlmb3JtSW5kZXgoaW5kZXgpOwogfQogCi1Qcm9ncmFtOjpQcm9n
cmFtKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIs
IEdMdWludCBoYW5kbGUpCitib29sIFByb2dyYW1TdGF0ZTo6aXNTYW1wbGVyVW5pZm9ybUluZGV4
KEdMdWludCBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gaW5kZXggPj0gbVNhbXBsZXJVbmlm
b3JtUmFuZ2Uuc3RhcnQgJiYgaW5kZXggPCBtU2FtcGxlclVuaWZvcm1SYW5nZS5lbmQ7Cit9CisK
K0dMdWludCBQcm9ncmFtU3RhdGU6OmdldFNhbXBsZXJJbmRleEZyb21Vbmlmb3JtSW5kZXgoR0x1
aW50IHVuaWZvcm1JbmRleCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNTYW1wbGVyVW5pZm9ybUlu
ZGV4KHVuaWZvcm1JbmRleCkpOworICAgIHJldHVybiB1bmlmb3JtSW5kZXggLSBtU2FtcGxlclVu
aWZvcm1SYW5nZS5zdGFydDsKK30KKworUHJvZ3JhbTo6UHJvZ3JhbShyeDo6R0xJbXBsRmFjdG9y
eSAqZmFjdG9yeSwgU2hhZGVyUHJvZ3JhbU1hbmFnZXIgKm1hbmFnZXIsIEdMdWludCBoYW5kbGUp
CiAgICAgOiBtUHJvZ3JhbShmYWN0b3J5LT5jcmVhdGVQcm9ncmFtKG1TdGF0ZSkpLAogICAgICAg
bVZhbGlkYXRlZChmYWxzZSksCiAgICAgICBtTGlua2VkKGZhbHNlKSwKICAgICAgIG1EZWxldGVT
dGF0dXMoZmFsc2UpLAogICAgICAgbVJlZkNvdW50KDApLAogICAgICAgbVJlc291cmNlTWFuYWdl
cihtYW5hZ2VyKSwKLSAgICAgIG1IYW5kbGUoaGFuZGxlKSwKLSAgICAgIG1TYW1wbGVyVW5pZm9y
bVJhbmdlKDAsIDApCisgICAgICBtSGFuZGxlKGhhbmRsZSkKIHsKICAgICBBU1NFUlQobVByb2dy
YW0pOwogCkBAIC0zNjIsMTEgKzQyMiwzNCBAQCBQcm9ncmFtOjpQcm9ncmFtKHJ4OjpHTEltcGxG
YWN0b3J5ICpmYWN0b3J5LCBSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIsIEdMdWludCBoYQogCiBQ
cm9ncmFtOjp+UHJvZ3JhbSgpCiB7Ci0gICAgdW5saW5rKHRydWUpOwotCisgICAgQVNTRVJUKCFt
U3RhdGUubUF0dGFjaGVkVmVydGV4U2hhZGVyICYmICFtU3RhdGUubUF0dGFjaGVkRnJhZ21lbnRT
aGFkZXIgJiYKKyAgICAgICAgICAgIW1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVyKTsKICAg
ICBTYWZlRGVsZXRlKG1Qcm9ncmFtKTsKIH0KIAordm9pZCBQcm9ncmFtOjpkZXN0cm95KGNvbnN0
IENvbnRleHQgKmNvbnRleHQpCit7CisgICAgaWYgKG1TdGF0ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFk
ZXIgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIG1TdGF0ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFk
ZXItPnJlbGVhc2UoY29udGV4dCk7CisgICAgICAgIG1TdGF0ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFk
ZXIgPSBudWxscHRyOworICAgIH0KKworICAgIGlmIChtU3RhdGUubUF0dGFjaGVkRnJhZ21lbnRT
aGFkZXIgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIG1TdGF0ZS5tQXR0YWNoZWRGcmFnbWVu
dFNoYWRlci0+cmVsZWFzZShjb250ZXh0KTsKKyAgICAgICAgbVN0YXRlLm1BdHRhY2hlZEZyYWdt
ZW50U2hhZGVyID0gbnVsbHB0cjsKKyAgICB9CisKKyAgICBpZiAobVN0YXRlLm1BdHRhY2hlZENv
bXB1dGVTaGFkZXIgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIG1TdGF0ZS5tQXR0YWNoZWRD
b21wdXRlU2hhZGVyLT5yZWxlYXNlKGNvbnRleHQpOworICAgICAgICBtU3RhdGUubUF0dGFjaGVk
Q29tcHV0ZVNoYWRlciA9IG51bGxwdHI7CisgICAgfQorCisgICAgbVByb2dyYW0tPmRlc3Ryb3ko
cng6OlNhZmVHZXRJbXBsKGNvbnRleHQpKTsKK30KKwogdm9pZCBQcm9ncmFtOjpzZXRMYWJlbChj
b25zdCBzdGQ6OnN0cmluZyAmbGFiZWwpCiB7CiAgICAgbVN0YXRlLm1MYWJlbCA9IGxhYmVsOwpA
QCAtNDA3LDQ4ICs0OTAsMzQgQEAgdm9pZCBQcm9ncmFtOjphdHRhY2hTaGFkZXIoU2hhZGVyICpz
aGFkZXIpCiAgICAgfQogfQogCi1ib29sIFByb2dyYW06OmRldGFjaFNoYWRlcihTaGFkZXIgKnNo
YWRlcikKK3ZvaWQgUHJvZ3JhbTo6ZGV0YWNoU2hhZGVyKGNvbnN0IENvbnRleHQgKmNvbnRleHQs
IFNoYWRlciAqc2hhZGVyKQogewogICAgIHN3aXRjaCAoc2hhZGVyLT5nZXRUeXBlKCkpCiAgICAg
ewogICAgICAgICBjYXNlIEdMX1ZFUlRFWF9TSEFERVI6CiAgICAgICAgIHsKLSAgICAgICAgICAg
IGlmIChtU3RhdGUubUF0dGFjaGVkVmVydGV4U2hhZGVyICE9IHNoYWRlcikKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIHNoYWRlci0+cmVsZWFzZSgpOworICAgICAgICAgICAgQVNTRVJUKG1TdGF0ZS5tQXR0
YWNoZWRWZXJ0ZXhTaGFkZXIgPT0gc2hhZGVyKTsKKyAgICAgICAgICAgIHNoYWRlci0+cmVsZWFz
ZShjb250ZXh0KTsKICAgICAgICAgICAgIG1TdGF0ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXIgPSBu
dWxscHRyOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9G
UkFHTUVOVF9TSEFERVI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtU3RhdGUubUF0dGFj
aGVkRnJhZ21lbnRTaGFkZXIgIT0gc2hhZGVyKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc2hhZGVyLT5y
ZWxlYXNlKCk7CisgICAgICAgICAgICBBU1NFUlQobVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hh
ZGVyID09IHNoYWRlcik7CisgICAgICAgICAgICBzaGFkZXItPnJlbGVhc2UoY29udGV4dCk7CiAg
ICAgICAgICAgICBtU3RhdGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXIgPSBudWxscHRyOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01QVVRFX1NIQURF
UjoKICAgICAgICAgewotICAgICAgICAgICAgaWYgKG1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hh
ZGVyICE9IHNoYWRlcikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHNoYWRlci0+cmVsZWFzZSgpOworICAg
ICAgICAgICAgQVNTRVJUKG1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVyID09IHNoYWRlcik7
CisgICAgICAgICAgICBzaGFkZXItPnJlbGVhc2UoY29udGV4dCk7CiAgICAgICAgICAgICBtU3Rh
dGUubUF0dGFjaGVkQ29tcHV0ZVNoYWRlciA9IG51bGxwdHI7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
ICAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogaW50IFByb2dyYW06OmdldEF0dGFjaGVk
U2hhZGVyc0NvdW50KCkgY29uc3QKQEAgLTQ2NSw3ICs1MzQsNyBAQCB2b2lkIFByb2dyYW06OmJp
bmRBdHRyaWJ1dGVMb2NhdGlvbihHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUpCiB2b2lk
IFByb2dyYW06OmJpbmRVbmlmb3JtTG9jYXRpb24oR0x1aW50IGluZGV4LCBjb25zdCBjaGFyICpu
YW1lKQogewogICAgIC8vIEJpbmQgdGhlIGJhc2UgdW5pZm9ybSBuYW1lIG9ubHkgc2luY2UgYXJy
YXkgaW5kaWNlcyBvdGhlciB0aGFuIDAgY2Fubm90IGJlIGJvdW5kCi0gICAgbVVuaWZvcm1CaW5k
aW5ncy5iaW5kTG9jYXRpb24oaW5kZXgsIFBhcnNlVW5pZm9ybU5hbWUobmFtZSwgbnVsbHB0cikp
OworICAgIG1Vbmlmb3JtTG9jYXRpb25CaW5kaW5ncy5iaW5kTG9jYXRpb24oaW5kZXgsIFBhcnNl
UmVzb3VyY2VOYW1lKG5hbWUsIG51bGxwdHIpKTsKIH0KIAogdm9pZCBQcm9ncmFtOjpiaW5kRnJh
Z21lbnRJbnB1dExvY2F0aW9uKEdMaW50IGluZGV4LCBjb25zdCBjaGFyICpuYW1lKQpAQCAtNTQ3
LDE4ICs2MTYsMjMgQEAgdm9pZCBQcm9ncmFtOjpwYXRoRnJhZ21lbnRJbnB1dEdlbihHTGludCBp
bmRleCwKIC8vIFRoZSBhdHRhY2hlZCBzaGFkZXJzIGFyZSBjaGVja2VkIGZvciBsaW5raW5nIGVy
cm9ycyBieSBtYXRjaGluZyB1cCB0aGVpciB2YXJpYWJsZXMuCiAvLyBVbmlmb3JtLCBpbnB1dCBh
bmQgb3V0cHV0IHZhcmlhYmxlcyBnZXQgY29sbGVjdGVkLgogLy8gVGhlIGNvZGUgZ2V0cyBjb21w
aWxlZCBpbnRvIGJpbmFyaWVzLgotRXJyb3IgUHJvZ3JhbTo6bGluayhjb25zdCBDb250ZXh0U3Rh
dGUgJmRhdGEpCitFcnJvciBQcm9ncmFtOjpsaW5rKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0
KQogewotICAgIHVubGluayhmYWxzZSk7CisgICAgY29uc3QgYXV0byAmZGF0YSA9IGNvbnRleHQt
PmdldENvbnRleHRTdGF0ZSgpOworCisgICAgdW5saW5rKCk7CiAKICAgICBtSW5mb0xvZy5yZXNl
dCgpOwogICAgIHJlc2V0VW5pZm9ybUJsb2NrQmluZGluZ3MoKTsKIAogICAgIGNvbnN0IENhcHMg
JmNhcHMgPSBkYXRhLmdldENhcHMoKTsKIAotICAgIGJvb2wgaXNDb21wdXRlU2hhZGVyQXR0YWNo
ZWQgPSAobVN0YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXIgIT0gbnVsbHB0cik7Ci0gICAgYm9v
bCBub25Db21wdXRlU2hhZGVyc0F0dGFjaGVkID0KLSAgICAgICAgKG1TdGF0ZS5tQXR0YWNoZWRW
ZXJ0ZXhTaGFkZXIgIT0gbnVsbHB0ciB8fCBtU3RhdGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXIg
IT0gbnVsbHB0cik7CisgICAgYXV0byB2ZXJ0ZXhTaGFkZXIgICA9IG1TdGF0ZS5tQXR0YWNoZWRW
ZXJ0ZXhTaGFkZXI7CisgICAgYXV0byBmcmFnbWVudFNoYWRlciA9IG1TdGF0ZS5tQXR0YWNoZWRG
cmFnbWVudFNoYWRlcjsKKyAgICBhdXRvIGNvbXB1dGVTaGFkZXIgID0gbVN0YXRlLm1BdHRhY2hl
ZENvbXB1dGVTaGFkZXI7CisKKyAgICBib29sIGlzQ29tcHV0ZVNoYWRlckF0dGFjaGVkICAgPSAo
Y29tcHV0ZVNoYWRlciAhPSBudWxscHRyKTsKKyAgICBib29sIG5vbkNvbXB1dGVTaGFkZXJzQXR0
YWNoZWQgPSAodmVydGV4U2hhZGVyICE9IG51bGxwdHIgfHwgZnJhZ21lbnRTaGFkZXIgIT0gbnVs
bHB0cik7CiAgICAgLy8gQ2hlY2sgd2hldGhlciB3ZSBib3RoIGhhdmUgYSBjb21wdXRlIGFuZCBu
b24tY29tcHV0ZSBzaGFkZXJzIGF0dGFjaGVkLgogICAgIC8vIElmIHRoZXJlIGFyZSBvZiBib3Ro
IHR5cGVzIGF0dGFjaGVkLCB0aGVuIGxpbmtpbmcgc2hvdWxkIGZhaWwuCiAgICAgLy8gT3BlbkdM
IEVTIDMuMTAsIDcuMyBQcm9ncmFtIE9iamVjdHMsIHVuZGVyIExpbmtQcm9ncmFtCkBAIC01Njgs
MTYgKzY0MiwxNiBAQCBFcnJvciBQcm9ncmFtOjpsaW5rKGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0
YSkKICAgICAgICAgcmV0dXJuIE5vRXJyb3IoKTsKICAgICB9CiAKLSAgICBpZiAobVN0YXRlLm1B
dHRhY2hlZENvbXB1dGVTaGFkZXIpCisgICAgaWYgKGNvbXB1dGVTaGFkZXIpCiAgICAgewotICAg
ICAgICBpZiAoIW1TdGF0ZS5tQXR0YWNoZWRDb21wdXRlU2hhZGVyLT5pc0NvbXBpbGVkKCkpCisg
ICAgICAgIGlmICghY29tcHV0ZVNoYWRlci0+aXNDb21waWxlZCgpKQogICAgICAgICB7CiAgICAg
ICAgICAgICBtSW5mb0xvZyA8PCAiQXR0YWNoZWQgY29tcHV0ZSBzaGFkZXIgaXMgbm90IGNvbXBp
bGVkLiI7CiAgICAgICAgICAgICByZXR1cm4gTm9FcnJvcigpOwogICAgICAgICB9Ci0gICAgICAg
IEFTU0VSVChtU3RhdGUubUF0dGFjaGVkQ29tcHV0ZVNoYWRlci0+Z2V0VHlwZSgpID09IEdMX0NP
TVBVVEVfU0hBREVSKTsKKyAgICAgICAgQVNTRVJUKGNvbXB1dGVTaGFkZXItPmdldFR5cGUoKSA9
PSBHTF9DT01QVVRFX1NIQURFUik7CiAKLSAgICAgICAgbVN0YXRlLm1Db21wdXRlU2hhZGVyTG9j
YWxTaXplID0gbVN0YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXItPmdldFdvcmtHcm91cFNpemUo
KTsKKyAgICAgICAgbVN0YXRlLm1Db21wdXRlU2hhZGVyTG9jYWxTaXplID0gY29tcHV0ZVNoYWRl
ci0+Z2V0V29ya0dyb3VwU2l6ZSgpOwogCiAgICAgICAgIC8vIEdMU0wgRVMgMy4xMCwgNC40LjEu
MSBDb21wdXRlIFNoYWRlciBJbnB1dHMKICAgICAgICAgLy8gSWYgdGhlIHdvcmsgZ3JvdXAgc2l6
ZSBpcyBub3Qgc3BlY2lmaWVkLCBhIGxpbmsgdGltZSBlcnJvciBzaG91bGQgb2NjdXIuCkBAIC01
ODcsNyArNjYxLDcgQEAgRXJyb3IgUHJvZ3JhbTo6bGluayhjb25zdCBDb250ZXh0U3RhdGUgJmRh
dGEpCiAgICAgICAgICAgICByZXR1cm4gTm9FcnJvcigpOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKCFsaW5rVW5pZm9ybXMobUluZm9Mb2csIGNhcHMsIG1Vbmlmb3JtQmluZGluZ3MpKQorICAg
ICAgICBpZiAoIWxpbmtVbmlmb3JtcyhtSW5mb0xvZywgY2FwcywgbVVuaWZvcm1Mb2NhdGlvbkJp
bmRpbmdzKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIE5vRXJyb3IoKTsKICAgICAg
ICAgfQpAQCAtNTk3LDQ1ICs2NzEsNDUgQEAgRXJyb3IgUHJvZ3JhbTo6bGluayhjb25zdCBDb250
ZXh0U3RhdGUgJmRhdGEpCiAgICAgICAgICAgICByZXR1cm4gTm9FcnJvcigpOwogICAgICAgICB9
CiAKLSAgICAgICAgcng6OkxpbmtSZXN1bHQgcmVzdWx0ID0gbVByb2dyYW0tPmxpbmsoZGF0YSwg
bUluZm9Mb2cpOwotCi0gICAgICAgIGlmIChyZXN1bHQuZXJyb3IuaXNFcnJvcigpIHx8ICFyZXN1
bHQubGlua1N1Y2Nlc3MpCisgICAgICAgIGdsOjpWYXJ5aW5nUGFja2luZyBub1BhY2tpbmcoMCwg
UGFja01vZGU6OkFOR0xFX1JFTEFYRUQpOworICAgICAgICBBTkdMRV9UUllfUkVTVUxUKG1Qcm9n
cmFtLT5saW5rKGNvbnRleHQtPmdldEltcGxlbWVudGF0aW9uKCksIG5vUGFja2luZywgbUluZm9M
b2cpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1MaW5rZWQpOworICAgICAgICBpZiAoIW1M
aW5rZWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQuZXJyb3I7CisgICAg
ICAgICAgICByZXR1cm4gTm9FcnJvcigpOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAg
ICB7Ci0gICAgICAgIGlmICghbVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyIHx8ICFtU3Rh
dGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXItPmlzQ29tcGlsZWQoKSkKKyAgICAgICAgaWYgKCFm
cmFnbWVudFNoYWRlciB8fCAhZnJhZ21lbnRTaGFkZXItPmlzQ29tcGlsZWQoKSkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIE5vRXJyb3IoKTsKICAgICAgICAgfQotICAgICAgICBBU1NF
UlQobVN0YXRlLm1BdHRhY2hlZEZyYWdtZW50U2hhZGVyLT5nZXRUeXBlKCkgPT0gR0xfRlJBR01F
TlRfU0hBREVSKTsKKyAgICAgICAgQVNTRVJUKGZyYWdtZW50U2hhZGVyLT5nZXRUeXBlKCkgPT0g
R0xfRlJBR01FTlRfU0hBREVSKTsKIAotICAgICAgICBpZiAoIW1TdGF0ZS5tQXR0YWNoZWRWZXJ0
ZXhTaGFkZXIgfHwgIW1TdGF0ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXItPmlzQ29tcGlsZWQoKSkK
KyAgICAgICAgaWYgKCF2ZXJ0ZXhTaGFkZXIgfHwgIXZlcnRleFNoYWRlci0+aXNDb21waWxlZCgp
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gTm9FcnJvcigpOwogICAgICAgICB9Ci0g
ICAgICAgIEFTU0VSVChtU3RhdGUubUF0dGFjaGVkVmVydGV4U2hhZGVyLT5nZXRUeXBlKCkgPT0g
R0xfVkVSVEVYX1NIQURFUik7CisgICAgICAgIEFTU0VSVCh2ZXJ0ZXhTaGFkZXItPmdldFR5cGUo
KSA9PSBHTF9WRVJURVhfU0hBREVSKTsKIAotICAgICAgICBpZiAobVN0YXRlLm1BdHRhY2hlZEZy
YWdtZW50U2hhZGVyLT5nZXRTaGFkZXJWZXJzaW9uKCkgIT0KLSAgICAgICAgICAgIG1TdGF0ZS5t
QXR0YWNoZWRWZXJ0ZXhTaGFkZXItPmdldFNoYWRlclZlcnNpb24oKSkKKyAgICAgICAgaWYgKGZy
YWdtZW50U2hhZGVyLT5nZXRTaGFkZXJWZXJzaW9uKCkgIT0gdmVydGV4U2hhZGVyLT5nZXRTaGFk
ZXJWZXJzaW9uKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIG1JbmZvTG9nIDw8ICJGcmFnbWVu
dCBzaGFkZXIgdmVyc2lvbiBkb2VzIG5vdCBtYXRjaCB2ZXJ0ZXggc2hhZGVyIHZlcnNpb24uIjsK
ICAgICAgICAgICAgIHJldHVybiBOb0Vycm9yKCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
IWxpbmtBdHRyaWJ1dGVzKGRhdGEsIG1JbmZvTG9nLCBtQXR0cmlidXRlQmluZGluZ3MsIG1TdGF0
ZS5tQXR0YWNoZWRWZXJ0ZXhTaGFkZXIpKQorICAgICAgICBpZiAoIWxpbmtBdHRyaWJ1dGVzKGRh
dGEsIG1JbmZvTG9nKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIE5vRXJyb3IoKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmICghbGlua1ZhcnlpbmdzKG1JbmZvTG9nLCBtU3RhdGUu
bUF0dGFjaGVkVmVydGV4U2hhZGVyLCBtU3RhdGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXIpKQor
ICAgICAgICBpZiAoIWxpbmtWYXJ5aW5ncyhtSW5mb0xvZykpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBOb0Vycm9yKCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoIWxpbmtVbmlm
b3JtcyhtSW5mb0xvZywgY2FwcywgbVVuaWZvcm1CaW5kaW5ncykpCisgICAgICAgIGlmICghbGlu
a1VuaWZvcm1zKG1JbmZvTG9nLCBjYXBzLCBtVW5pZm9ybUxvY2F0aW9uQmluZGluZ3MpKQogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gTm9FcnJvcigpOwogICAgICAgICB9CkBAIC02NDcs
NjAgKzcyMSw1NyBAQCBFcnJvciBQcm9ncmFtOjpsaW5rKGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0
YSkKIAogICAgICAgICBjb25zdCBhdXRvICZtZXJnZWRWYXJ5aW5ncyA9IGdldE1lcmdlZFZhcnlp
bmdzKCk7CiAKLSAgICAgICAgaWYgKCFsaW5rVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFjayhtSW5m
b0xvZywgbWVyZ2VkVmFyeWluZ3MsIGNhcHMpKQorICAgICAgICBpZiAoIWxpbmtWYWxpZGF0ZVRy
YW5zZm9ybUZlZWRiYWNrKGNvbnRleHQsIG1JbmZvTG9nLCBtZXJnZWRWYXJ5aW5ncywgY2Fwcykp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBOb0Vycm9yKCk7CiAgICAgICAgIH0KIAog
ICAgICAgICBsaW5rT3V0cHV0VmFyaWFibGVzKCk7CiAKLSAgICAgICAgcng6OkxpbmtSZXN1bHQg
cmVzdWx0ID0gbVByb2dyYW0tPmxpbmsoZGF0YSwgbUluZm9Mb2cpOwotICAgICAgICBpZiAocmVz
dWx0LmVycm9yLmlzRXJyb3IoKSB8fCAhcmVzdWx0LmxpbmtTdWNjZXNzKQorICAgICAgICAvLyBW
YWxpZGF0ZSB3ZSBjYW4gcGFjayB0aGUgdmFyeWluZ3MuCisgICAgICAgIHN0ZDo6dmVjdG9yPFBh
Y2tlZFZhcnlpbmc+IHBhY2tlZFZhcnlpbmdzID0gZ2V0UGFja2VkVmFyeWluZ3MobWVyZ2VkVmFy
eWluZ3MpOworCisgICAgICAgIC8vIE1hcCB0aGUgdmFyeWluZ3MgdG8gdGhlIHJlZ2lzdGVyIGZp
bGUKKyAgICAgICAgLy8gSW4gV2ViR0wsIHdlIHVzZSBhIHNsaWdodGx5IGRpZmZlcmVudCBoYW5k
bGluZyBmb3IgcGFja2luZyB2YXJpYWJsZXMuCisgICAgICAgIGF1dG8gcGFja01vZGUgPSBkYXRh
LmdldEV4dGVuc2lvbnMoKS53ZWJnbENvbXBhdGliaWxpdHkgPyBQYWNrTW9kZTo6V0VCR0xfU1RS
SUNUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgOiBQYWNrTW9kZTo6QU5HTEVfUkVMQVhFRDsKKyAgICAgICAgVmFyeWluZ1Bh
Y2tpbmcgdmFyeWluZ1BhY2tpbmcoZGF0YS5nZXRDYXBzKCkubWF4VmFyeWluZ1ZlY3RvcnMsIHBh
Y2tNb2RlKTsKKyAgICAgICAgaWYgKCF2YXJ5aW5nUGFja2luZy5wYWNrVXNlclZhcnlpbmdzKG1J
bmZvTG9nLCBwYWNrZWRWYXJ5aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1TdGF0ZS5nZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lcygpKSkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdC5lcnJvcjsKKyAgICAgICAgICAg
IHJldHVybiBOb0Vycm9yKCk7CisgICAgICAgIH0KKworICAgICAgICBBTkdMRV9UUllfUkVTVUxU
KG1Qcm9ncmFtLT5saW5rKGNvbnRleHQtPmdldEltcGxlbWVudGF0aW9uKCksIHZhcnlpbmdQYWNr
aW5nLCBtSW5mb0xvZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgbUxpbmtlZCk7CisgICAg
ICAgIGlmICghbUxpbmtlZCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIE5vRXJyb3Io
KTsKICAgICAgICAgfQogCiAgICAgICAgIGdhdGhlclRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Mo
bWVyZ2VkVmFyeWluZ3MpOwogICAgIH0KIAorICAgIHNldFVuaWZvcm1WYWx1ZXNGcm9tQmluZGlu
Z1F1YWxpZmllcnMoKTsKKwogICAgIGdhdGhlckludGVyZmFjZUJsb2NrSW5mbygpOwogCi0gICAg
bUxpbmtlZCA9IHRydWU7CiAgICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0KIAogLy8gUmV0dXJucyB0
aGUgcHJvZ3JhbSBvYmplY3QgdG8gYW4gdW5saW5rZWQgc3RhdGUsIGJlZm9yZSByZS1saW5raW5n
LCBvciBhdCBkZXN0cnVjdGlvbgotdm9pZCBQcm9ncmFtOjp1bmxpbmsoYm9vbCBkZXN0cm95KQor
dm9pZCBQcm9ncmFtOjp1bmxpbmsoKQogewotICAgIGlmIChkZXN0cm95KSAgIC8vIE9iamVjdCBi
ZWluZyBkZXN0cnVjdGVkCi0gICAgewotICAgICAgICBpZiAobVN0YXRlLm1BdHRhY2hlZEZyYWdt
ZW50U2hhZGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICBtU3RhdGUubUF0dGFjaGVkRnJhZ21l
bnRTaGFkZXItPnJlbGVhc2UoKTsKLSAgICAgICAgICAgIG1TdGF0ZS5tQXR0YWNoZWRGcmFnbWVu
dFNoYWRlciA9IG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobVN0YXRlLm1BdHRh
Y2hlZFZlcnRleFNoYWRlcikKLSAgICAgICAgewotICAgICAgICAgICAgbVN0YXRlLm1BdHRhY2hl
ZFZlcnRleFNoYWRlci0+cmVsZWFzZSgpOwotICAgICAgICAgICAgbVN0YXRlLm1BdHRhY2hlZFZl
cnRleFNoYWRlciA9IG51bGxwdHI7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobVN0YXRlLm1B
dHRhY2hlZENvbXB1dGVTaGFkZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1TdGF0ZS5tQXR0
YWNoZWRDb21wdXRlU2hhZGVyLT5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBtU3RhdGUubUF0dGFj
aGVkQ29tcHV0ZVNoYWRlciA9IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBtU3Rh
dGUubUF0dHJpYnV0ZXMuY2xlYXIoKTsKICAgICBtU3RhdGUubUFjdGl2ZUF0dHJpYkxvY2F0aW9u
c01hc2sucmVzZXQoKTsKLSAgICBtU3RhdGUubVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ1ZhcnMu
Y2xlYXIoKTsKKyAgICBtU3RhdGUubUxpbmtlZFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MuY2xl
YXIoKTsKICAgICBtU3RhdGUubVVuaWZvcm1zLmNsZWFyKCk7CiAgICAgbVN0YXRlLm1Vbmlmb3Jt
TG9jYXRpb25zLmNsZWFyKCk7CiAgICAgbVN0YXRlLm1Vbmlmb3JtQmxvY2tzLmNsZWFyKCk7CiAg
ICAgbVN0YXRlLm1PdXRwdXRWYXJpYWJsZXMuY2xlYXIoKTsKKyAgICBtU3RhdGUubU91dHB1dExv
Y2F0aW9ucy5jbGVhcigpOwogICAgIG1TdGF0ZS5tQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZS5maWxs
KDEpOworICAgIG1TdGF0ZS5tU2FtcGxlckJpbmRpbmdzLmNsZWFyKCk7CiAKICAgICBtVmFsaWRh
dGVkID0gZmFsc2U7CiAKQEAgLTcxMiwzNiArNzgzLDQxIEBAIGJvb2wgUHJvZ3JhbTo6aXNMaW5r
ZWQoKSBjb25zdAogICAgIHJldHVybiBtTGlua2VkOwogfQogCi1FcnJvciBQcm9ncmFtOjpsb2Fk
QmluYXJ5KEdMZW51bSBiaW5hcnlGb3JtYXQsIGNvbnN0IHZvaWQgKmJpbmFyeSwgR0xzaXplaSBs
ZW5ndGgpCitFcnJvciBQcm9ncmFtOjpsb2FkQmluYXJ5KGNvbnN0IENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBiaW5hcnlGb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJpbmFyeSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBsZW5ndGgpCiB7Ci0gICAgdW5saW5rKGZhbHNlKTsKKyAgICB1bmxp
bmsoKTsKIAogI2lmIEFOR0xFX1BST0dSQU1fQklOQVJZX0xPQUQgIT0gQU5HTEVfRU5BQkxFRAot
ICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKICNl
bHNlCiAgICAgQVNTRVJUKGJpbmFyeUZvcm1hdCA9PSBHTF9QUk9HUkFNX0JJTkFSWV9BTkdMRSk7
CiAgICAgaWYgKGJpbmFyeUZvcm1hdCAhPSBHTF9QUk9HUkFNX0JJTkFSWV9BTkdMRSkKICAgICB7
CiAgICAgICAgIG1JbmZvTG9nIDw8ICJJbnZhbGlkIHByb2dyYW0gYmluYXJ5IGZvcm1hdC4iOwot
ICAgICAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gTm9FcnJv
cigpOwogICAgIH0KIAogICAgIEJpbmFyeUlucHV0U3RyZWFtIHN0cmVhbShiaW5hcnksIGxlbmd0
aCk7CiAKLSAgICBpbnQgbWFqb3JWZXJzaW9uID0gc3RyZWFtLnJlYWRJbnQ8aW50PigpOwotICAg
IGludCBtaW5vclZlcnNpb24gPSBzdHJlYW0ucmVhZEludDxpbnQ+KCk7Ci0gICAgaWYgKG1ham9y
VmVyc2lvbiAhPSBBTkdMRV9NQUpPUl9WRVJTSU9OIHx8IG1pbm9yVmVyc2lvbiAhPSBBTkdMRV9N
SU5PUl9WRVJTSU9OKQorICAgIHVuc2lnbmVkIGNoYXIgY29tbWl0U3RyaW5nW0FOR0xFX0NPTU1J
VF9IQVNIX1NJWkVdOworICAgIHN0cmVhbS5yZWFkQnl0ZXMoY29tbWl0U3RyaW5nLCBBTkdMRV9D
T01NSVRfSEFTSF9TSVpFKTsKKyAgICBpZiAobWVtY21wKGNvbW1pdFN0cmluZywgQU5HTEVfQ09N
TUlUX0hBU0gsIHNpemVvZih1bnNpZ25lZCBjaGFyKSAqIEFOR0xFX0NPTU1JVF9IQVNIX1NJWkUp
ICE9CisgICAgICAgIDApCiAgICAgewogICAgICAgICBtSW5mb0xvZyA8PCAiSW52YWxpZCBwcm9n
cmFtIGJpbmFyeSB2ZXJzaW9uLiI7Ci0gICAgICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7
CisgICAgICAgIHJldHVybiBOb0Vycm9yKCk7CiAgICAgfQogCi0gICAgdW5zaWduZWQgY2hhciBj
b21taXRTdHJpbmdbQU5HTEVfQ09NTUlUX0hBU0hfU0laRV07Ci0gICAgc3RyZWFtLnJlYWRCeXRl
cyhjb21taXRTdHJpbmcsIEFOR0xFX0NPTU1JVF9IQVNIX1NJWkUpOwotICAgIGlmIChtZW1jbXAo
Y29tbWl0U3RyaW5nLCBBTkdMRV9DT01NSVRfSEFTSCwgc2l6ZW9mKHVuc2lnbmVkIGNoYXIpICog
QU5HTEVfQ09NTUlUX0hBU0hfU0laRSkgIT0gMCkKKyAgICBpbnQgbWFqb3JWZXJzaW9uID0gc3Ry
ZWFtLnJlYWRJbnQ8aW50PigpOworICAgIGludCBtaW5vclZlcnNpb24gPSBzdHJlYW0ucmVhZElu
dDxpbnQ+KCk7CisgICAgaWYgKG1ham9yVmVyc2lvbiAhPSBjb250ZXh0LT5nZXRDbGllbnRNYWpv
clZlcnNpb24oKSB8fAorICAgICAgICBtaW5vclZlcnNpb24gIT0gY29udGV4dC0+Z2V0Q2xpZW50
TWlub3JWZXJzaW9uKCkpCiAgICAgewotICAgICAgICBtSW5mb0xvZyA8PCAiSW52YWxpZCBwcm9n
cmFtIGJpbmFyeSB2ZXJzaW9uLiI7Ci0gICAgICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7
CisgICAgICAgIG1JbmZvTG9nIDw8ICJDYW5ub3QgbG9hZCBwcm9ncmFtIGJpbmFyaWVzIGFjcm9z
cyBkaWZmZXJlbnQgRVMgY29udGV4dCB2ZXJzaW9ucy4iOworICAgICAgICByZXR1cm4gTm9FcnJv
cigpOwogICAgIH0KIAogICAgIG1TdGF0ZS5tQ29tcHV0ZVNoYWRlckxvY2FsU2l6ZVswXSA9IHN0
cmVhbS5yZWFkSW50PGludD4oKTsKQEAgLTgxNSw4ICs4OTEsMTYgQEAgRXJyb3IgUHJvZ3JhbTo6
bG9hZEJpbmFyeShHTGVudW0gYmluYXJ5Rm9ybWF0LCBjb25zdCB2b2lkICpiaW5hcnksIEdMc2l6
ZWkgbGVuZ3QKICAgICAgICAgbVN0YXRlLm1Vbmlmb3JtQmxvY2tzLnB1c2hfYmFjayh1bmlmb3Jt
QmxvY2spOwogICAgIH0KIAorICAgIGZvciAoR0x1aW50IGJpbmRpbmdJbmRleCA9IDA7IGJpbmRp
bmdJbmRleCA8IG1TdGF0ZS5tVW5pZm9ybUJsb2NrQmluZGluZ3Muc2l6ZSgpOworICAgICAgICAg
KytiaW5kaW5nSW5kZXgpCisgICAgeworICAgICAgICBzdHJlYW0ucmVhZEludCgmbVN0YXRlLm1V
bmlmb3JtQmxvY2tCaW5kaW5nc1tiaW5kaW5nSW5kZXhdKTsKKyAgICAgICAgbVN0YXRlLm1BY3Rp
dmVVbmlmb3JtQmxvY2tCaW5kaW5ncy5zZXQoYmluZGluZ0luZGV4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUubVVuaWZvcm1CbG9ja0JpbmRp
bmdzW2JpbmRpbmdJbmRleF0gIT0gMCk7CisgICAgfQorCiAgICAgdW5zaWduZWQgaW50IHRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ0NvdW50ID0gc3RyZWFtLnJlYWRJbnQ8dW5zaWduZWQgaW50Pigp
OwotICAgIEFTU0VSVChtU3RhdGUubVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ1ZhcnMuZW1wdHko
KSk7CisgICAgQVNTRVJUKG1TdGF0ZS5tTGlua2VkVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncy5l
bXB0eSgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdJ
bmRleCA9IDA7CiAgICAgICAgIHRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ0luZGV4IDwgdHJhbnNm
b3JtRmVlZGJhY2tWYXJ5aW5nQ291bnQ7CiAgICAgICAgICsrdHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5nSW5kZXgpCkBAIC04MjYsMTEgKzkxMCwyMyBAQCBFcnJvciBQcm9ncmFtOjpsb2FkQmluYXJ5
KEdMZW51bSBiaW5hcnlGb3JtYXQsIGNvbnN0IHZvaWQgKmJpbmFyeSwgR0xzaXplaSBsZW5ndAog
ICAgICAgICBzdHJlYW0ucmVhZEludCgmdmFyeWluZy50eXBlKTsKICAgICAgICAgc3RyZWFtLnJl
YWRTdHJpbmcoJnZhcnlpbmcubmFtZSk7CiAKLSAgICAgICAgbVN0YXRlLm1UcmFuc2Zvcm1GZWVk
YmFja1ZhcnlpbmdWYXJzLnB1c2hfYmFjayh2YXJ5aW5nKTsKKyAgICAgICAgR0x1aW50IGFycmF5
SW5kZXggPSBzdHJlYW0ucmVhZEludDxHTHVpbnQ+KCk7CisKKyAgICAgICAgbVN0YXRlLm1MaW5r
ZWRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLmVtcGxhY2VfYmFjayh2YXJ5aW5nLCBhcnJheUlu
ZGV4KTsKICAgICB9CiAKICAgICBzdHJlYW0ucmVhZEludCgmbVN0YXRlLm1UcmFuc2Zvcm1GZWVk
YmFja0J1ZmZlck1vZGUpOwogCisgICAgdW5zaWduZWQgaW50IG91dHB1dENvdW50ID0gc3RyZWFt
LnJlYWRJbnQ8dW5zaWduZWQgaW50PigpOworICAgIEFTU0VSVChtU3RhdGUubU91dHB1dFZhcmlh
Ymxlcy5lbXB0eSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBvdXRwdXRJbmRleCA9IDA7IG91
dHB1dEluZGV4IDwgb3V0cHV0Q291bnQ7ICsrb3V0cHV0SW5kZXgpCisgICAgeworICAgICAgICBz
aDo6T3V0cHV0VmFyaWFibGUgb3V0cHV0OworICAgICAgICBMb2FkU2hhZGVyVmFyKCZzdHJlYW0s
ICZvdXRwdXQpOworICAgICAgICBvdXRwdXQubG9jYXRpb24gPSBzdHJlYW0ucmVhZEludDxpbnQ+
KCk7CisgICAgICAgIG1TdGF0ZS5tT3V0cHV0VmFyaWFibGVzLnB1c2hfYmFjayhvdXRwdXQpOwor
ICAgIH0KKwogICAgIHVuc2lnbmVkIGludCBvdXRwdXRWYXJDb3VudCA9IHN0cmVhbS5yZWFkSW50
PHVuc2lnbmVkIGludD4oKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBvdXRwdXRJbmRleCA9IDA7
IG91dHB1dEluZGV4IDwgb3V0cHV0VmFyQ291bnQ7ICsrb3V0cHV0SW5kZXgpCiAgICAgewpAQCAt
ODM5LDI0ICs5MzUsMzEgQEAgRXJyb3IgUHJvZ3JhbTo6bG9hZEJpbmFyeShHTGVudW0gYmluYXJ5
Rm9ybWF0LCBjb25zdCB2b2lkICpiaW5hcnksIEdMc2l6ZWkgbGVuZ3QKICAgICAgICAgc3RyZWFt
LnJlYWRJbnQoJmxvY2F0aW9uRGF0YS5lbGVtZW50KTsKICAgICAgICAgc3RyZWFtLnJlYWRJbnQo
JmxvY2F0aW9uRGF0YS5pbmRleCk7CiAgICAgICAgIHN0cmVhbS5yZWFkU3RyaW5nKCZsb2NhdGlv
bkRhdGEubmFtZSk7Ci0gICAgICAgIG1TdGF0ZS5tT3V0cHV0VmFyaWFibGVzW2xvY2F0aW9uSW5k
ZXhdID0gbG9jYXRpb25EYXRhOworICAgICAgICBtU3RhdGUubU91dHB1dExvY2F0aW9uc1tsb2Nh
dGlvbkluZGV4XSA9IGxvY2F0aW9uRGF0YTsKICAgICB9CiAKLSAgICBzdHJlYW0ucmVhZEludCgm
bVNhbXBsZXJVbmlmb3JtUmFuZ2Uuc3RhcnQpOwotICAgIHN0cmVhbS5yZWFkSW50KCZtU2FtcGxl
clVuaWZvcm1SYW5nZS5lbmQpOworICAgIHN0cmVhbS5yZWFkSW50KCZtU3RhdGUubVNhbXBsZXJV
bmlmb3JtUmFuZ2Uuc3RhcnQpOworICAgIHN0cmVhbS5yZWFkSW50KCZtU3RhdGUubVNhbXBsZXJV
bmlmb3JtUmFuZ2UuZW5kKTsKIAotICAgIHJ4OjpMaW5rUmVzdWx0IHJlc3VsdCA9IG1Qcm9ncmFt
LT5sb2FkKG1JbmZvTG9nLCAmc3RyZWFtKTsKLSAgICBpZiAocmVzdWx0LmVycm9yLmlzRXJyb3Io
KSB8fCAhcmVzdWx0LmxpbmtTdWNjZXNzKQorICAgIHVuc2lnbmVkIGludCBzYW1wbGVyQ291bnQg
PSBzdHJlYW0ucmVhZEludDx1bnNpZ25lZCBpbnQ+KCk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQg
c2FtcGxlckluZGV4ID0gMDsgc2FtcGxlckluZGV4IDwgc2FtcGxlckNvdW50OyArK3NhbXBsZXJJ
bmRleCkKICAgICB7Ci0gICAgICAgIHJldHVybiByZXN1bHQuZXJyb3I7CisgICAgICAgIEdMZW51
bSB0ZXh0dXJlVHlwZSAgPSBzdHJlYW0ucmVhZEludDxHTGVudW0+KCk7CisgICAgICAgIHNpemVf
dCBiaW5kaW5nQ291bnQgPSBzdHJlYW0ucmVhZEludDxzaXplX3Q+KCk7CisgICAgICAgIG1TdGF0
ZS5tU2FtcGxlckJpbmRpbmdzLmVtcGxhY2VfYmFjayhTYW1wbGVyQmluZGluZyh0ZXh0dXJlVHlw
ZSwgYmluZGluZ0NvdW50KSk7CiAgICAgfQogCi0gICAgbUxpbmtlZCA9IHRydWU7Ci0gICAgcmV0
dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKLSNlbmRpZiAvLyAjaWYgQU5HTEVfUFJPR1JBTV9CSU5B
UllfTE9BRCA9PSBBTkdMRV9FTkFCTEVECisgICAgQU5HTEVfVFJZX1JFU1VMVChtUHJvZ3JhbS0+
bG9hZChjb250ZXh0LT5nZXRJbXBsZW1lbnRhdGlvbigpLCBtSW5mb0xvZywgJnN0cmVhbSksIG1M
aW5rZWQpOworCisgICAgcmV0dXJuIE5vRXJyb3IoKTsKKyNlbmRpZiAgLy8gI2lmIEFOR0xFX1BS
T0dSQU1fQklOQVJZX0xPQUQgPT0gQU5HTEVfRU5BQkxFRAogfQogCi1FcnJvciBQcm9ncmFtOjpz
YXZlQmluYXJ5KEdMZW51bSAqYmluYXJ5Rm9ybWF0LCB2b2lkICpiaW5hcnksIEdMc2l6ZWkgYnVm
U2l6ZSwgR0xzaXplaSAqbGVuZ3RoKSBjb25zdAorRXJyb3IgUHJvZ3JhbTo6c2F2ZUJpbmFyeShj
b25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
KmJpbmFyeUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYmluYXJ5LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCkgY29uc3QKIHsKICAgICBpZiAoYmluYXJ5Rm9y
bWF0KQogICAgIHsKQEAgLTg2NSwxMCArOTY4LDIwIEBAIEVycm9yIFByb2dyYW06OnNhdmVCaW5h
cnkoR0xlbnVtICpiaW5hcnlGb3JtYXQsIHZvaWQgKmJpbmFyeSwgR0xzaXplaSBidWZTaXplLCBH
CiAKICAgICBCaW5hcnlPdXRwdXRTdHJlYW0gc3RyZWFtOwogCi0gICAgc3RyZWFtLndyaXRlSW50
KEFOR0xFX01BSk9SX1ZFUlNJT04pOwotICAgIHN0cmVhbS53cml0ZUludChBTkdMRV9NSU5PUl9W
RVJTSU9OKTsKICAgICBzdHJlYW0ud3JpdGVCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVu
c2lnbmVkIGNoYXIqPihBTkdMRV9DT01NSVRfSEFTSCksIEFOR0xFX0NPTU1JVF9IQVNIX1NJWkUp
OwogCisgICAgLy8gbnVsbHB0ciBjb250ZXh0IGlzIHN1cHBvcnRlZCB3aGVuIGNvbXB1dGluZyBi
aW5hcnkgbGVuZ3RoLgorICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgc3RyZWFtLndy
aXRlSW50KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKS5tYWpvcik7CisgICAgICAgIHN0cmVh
bS53cml0ZUludChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkubWlub3IpOworICAgIH0KKyAg
ICBlbHNlCisgICAgeworICAgICAgICBzdHJlYW0ud3JpdGVJbnQoMik7CisgICAgICAgIHN0cmVh
bS53cml0ZUludCgwKTsKKyAgICB9CisKICAgICBzdHJlYW0ud3JpdGVJbnQobVN0YXRlLm1Db21w
dXRlU2hhZGVyTG9jYWxTaXplWzBdKTsKICAgICBzdHJlYW0ud3JpdGVJbnQobVN0YXRlLm1Db21w
dXRlU2hhZGVyTG9jYWxTaXplWzFdKTsKICAgICBzdHJlYW0ud3JpdGVJbnQobVN0YXRlLm1Db21w
dXRlU2hhZGVyTG9jYWxTaXplWzJdKTsKQEAgLTg4Myw3ICs5OTYsNyBAQCBFcnJvciBQcm9ncmFt
OjpzYXZlQmluYXJ5KEdMZW51bSAqYmluYXJ5Rm9ybWF0LCB2b2lkICpiaW5hcnksIEdMc2l6ZWkg
YnVmU2l6ZSwgRwogICAgIH0KIAogICAgIHN0cmVhbS53cml0ZUludChtU3RhdGUubVVuaWZvcm1z
LnNpemUoKSk7Ci0gICAgZm9yIChjb25zdCBnbDo6TGlua2VkVW5pZm9ybSAmdW5pZm9ybSA6IG1T
dGF0ZS5tVW5pZm9ybXMpCisgICAgZm9yIChjb25zdCBMaW5rZWRVbmlmb3JtICZ1bmlmb3JtIDog
bVN0YXRlLm1Vbmlmb3JtcykKICAgICB7CiAgICAgICAgIFdyaXRlU2hhZGVyVmFyKCZzdHJlYW0s
IHVuaWZvcm0pOwogCkBAIC05MjQsMTggKzEwMzcsMzIgQEAgRXJyb3IgUHJvZ3JhbTo6c2F2ZUJp
bmFyeShHTGVudW0gKmJpbmFyeUZvcm1hdCwgdm9pZCAqYmluYXJ5LCBHTHNpemVpIGJ1ZlNpemUs
IEcKICAgICAgICAgfQogICAgIH0KIAotICAgIHN0cmVhbS53cml0ZUludChtU3RhdGUubVRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ1ZhcnMuc2l6ZSgpKTsKLSAgICBmb3IgKGNvbnN0IHNoOjpWYXJ5
aW5nICZ2YXJ5aW5nIDogbVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJzKQorICAg
IGZvciAoR0x1aW50IGJpbmRpbmcgOiBtU3RhdGUubVVuaWZvcm1CbG9ja0JpbmRpbmdzKQorICAg
IHsKKyAgICAgICAgc3RyZWFtLndyaXRlSW50KGJpbmRpbmcpOworICAgIH0KKworICAgIHN0cmVh
bS53cml0ZUludChtU3RhdGUubUxpbmtlZFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Muc2l6ZSgp
KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8gJnZhciA6IG1TdGF0ZS5tTGlua2VkVHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5ncykKICAgICB7Ci0gICAgICAgIHN0cmVhbS53cml0ZUludCh2YXJ5aW5nLmFy
cmF5U2l6ZSk7Ci0gICAgICAgIHN0cmVhbS53cml0ZUludCh2YXJ5aW5nLnR5cGUpOwotICAgICAg
ICBzdHJlYW0ud3JpdGVTdHJpbmcodmFyeWluZy5uYW1lKTsKKyAgICAgICAgc3RyZWFtLndyaXRl
SW50KHZhci5hcnJheVNpemUpOworICAgICAgICBzdHJlYW0ud3JpdGVJbnQodmFyLnR5cGUpOwor
ICAgICAgICBzdHJlYW0ud3JpdGVTdHJpbmcodmFyLm5hbWUpOworCisgICAgICAgIHN0cmVhbS53
cml0ZUludE9yTmVnT25lKHZhci5hcnJheUluZGV4KTsKICAgICB9CiAKICAgICBzdHJlYW0ud3Jp
dGVJbnQobVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUpOwogCiAgICAgc3RyZWFt
LndyaXRlSW50KG1TdGF0ZS5tT3V0cHV0VmFyaWFibGVzLnNpemUoKSk7Ci0gICAgZm9yIChjb25z
dCBhdXRvICZvdXRwdXRQYWlyIDogbVN0YXRlLm1PdXRwdXRWYXJpYWJsZXMpCisgICAgZm9yIChj
b25zdCBzaDo6T3V0cHV0VmFyaWFibGUgJm91dHB1dCA6IG1TdGF0ZS5tT3V0cHV0VmFyaWFibGVz
KQorICAgIHsKKyAgICAgICAgV3JpdGVTaGFkZXJWYXIoJnN0cmVhbSwgb3V0cHV0KTsKKyAgICAg
ICAgc3RyZWFtLndyaXRlSW50KG91dHB1dC5sb2NhdGlvbik7CisgICAgfQorCisgICAgc3RyZWFt
LndyaXRlSW50KG1TdGF0ZS5tT3V0cHV0TG9jYXRpb25zLnNpemUoKSk7CisgICAgZm9yIChjb25z
dCBhdXRvICZvdXRwdXRQYWlyIDogbVN0YXRlLm1PdXRwdXRMb2NhdGlvbnMpCiAgICAgewogICAg
ICAgICBzdHJlYW0ud3JpdGVJbnQob3V0cHV0UGFpci5maXJzdCk7CiAgICAgICAgIHN0cmVhbS53
cml0ZUludE9yTmVnT25lKG91dHB1dFBhaXIuc2Vjb25kLmVsZW1lbnQpOwpAQCAtOTQzLDE1ICsx
MDcwLDE4IEBAIEVycm9yIFByb2dyYW06OnNhdmVCaW5hcnkoR0xlbnVtICpiaW5hcnlGb3JtYXQs
IHZvaWQgKmJpbmFyeSwgR0xzaXplaSBidWZTaXplLCBHCiAgICAgICAgIHN0cmVhbS53cml0ZVN0
cmluZyhvdXRwdXRQYWlyLnNlY29uZC5uYW1lKTsKICAgICB9CiAKLSAgICBzdHJlYW0ud3JpdGVJ
bnQobVNhbXBsZXJVbmlmb3JtUmFuZ2Uuc3RhcnQpOwotICAgIHN0cmVhbS53cml0ZUludChtU2Ft
cGxlclVuaWZvcm1SYW5nZS5lbmQpOworICAgIHN0cmVhbS53cml0ZUludChtU3RhdGUubVNhbXBs
ZXJVbmlmb3JtUmFuZ2Uuc3RhcnQpOworICAgIHN0cmVhbS53cml0ZUludChtU3RhdGUubVNhbXBs
ZXJVbmlmb3JtUmFuZ2UuZW5kKTsKIAotICAgIGdsOjpFcnJvciBlcnJvciA9IG1Qcm9ncmFtLT5z
YXZlKCZzdHJlYW0pOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgc3RyZWFtLndyaXRl
SW50KG1TdGF0ZS5tU2FtcGxlckJpbmRpbmdzLnNpemUoKSk7CisgICAgZm9yIChjb25zdCBhdXRv
ICZzYW1wbGVyQmluZGluZyA6IG1TdGF0ZS5tU2FtcGxlckJpbmRpbmdzKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGVycm9yOworICAgICAgICBzdHJlYW0ud3JpdGVJbnQoc2FtcGxlckJpbmRpbmcu
dGV4dHVyZVR5cGUpOworICAgICAgICBzdHJlYW0ud3JpdGVJbnQoc2FtcGxlckJpbmRpbmcuYm91
bmRUZXh0dXJlVW5pdHMuc2l6ZSgpKTsKICAgICB9CiAKKyAgICBBTkdMRV9UUlkobVByb2dyYW0t
PnNhdmUoJnN0cmVhbSkpOworCiAgICAgR0xzaXplaSBzdHJlYW1MZW5ndGggICA9IHN0YXRpY19j
YXN0PEdMc2l6ZWk+KHN0cmVhbS5sZW5ndGgoKSk7CiAgICAgY29uc3Qgdm9pZCAqc3RyZWFtU3Rh
dGUgPSBzdHJlYW0uZGF0YSgpOwogCkBAIC05ODMsMTMgKzExMTMsMTMgQEAgRXJyb3IgUHJvZ3Jh
bTo6c2F2ZUJpbmFyeShHTGVudW0gKmJpbmFyeUZvcm1hdCwgdm9pZCAqYmluYXJ5LCBHTHNpemVp
IGJ1ZlNpemUsIEcKICAgICAgICAgKmxlbmd0aCA9IHN0cmVhbUxlbmd0aDsKICAgICB9CiAKLSAg
ICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAK
IEdMaW50IFByb2dyYW06OmdldEJpbmFyeUxlbmd0aCgpIGNvbnN0CiB7CiAgICAgR0xpbnQgbGVu
Z3RoOwotICAgIEVycm9yIGVycm9yID0gc2F2ZUJpbmFyeShudWxscHRyLCBudWxscHRyLCBzdGQ6
Om51bWVyaWNfbGltaXRzPEdMaW50Pjo6bWF4KCksICZsZW5ndGgpOworICAgIEVycm9yIGVycm9y
ID0gc2F2ZUJpbmFyeShudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPEdMaW50Pjo6bWF4KCksICZsZW5ndGgpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAg
ICAgewogICAgICAgICByZXR1cm4gMDsKQEAgLTEwMTAsMTMgKzExNDAsMjggQEAgYm9vbCBQcm9n
cmFtOjpnZXRCaW5hcnlSZXRyaWV2YWJsZUhpbnQoKSBjb25zdAogICAgIHJldHVybiBtU3RhdGUu
bUJpbmFyeVJldHJpZXZlYWJsZUhpbnQ7CiB9CiAKLXZvaWQgUHJvZ3JhbTo6cmVsZWFzZSgpCit2
b2lkIFByb2dyYW06OnNldFNlcGFyYWJsZShib29sIHNlcGFyYWJsZSkKK3sKKyAgICAvLyBUT0RP
KHl1bmNoYW8pIDogcmVwbGFjZSB3aXRoIGRpcnR5IGJpdHMKKyAgICBpZiAobVN0YXRlLm1TZXBh
cmFibGUgIT0gc2VwYXJhYmxlKQorICAgIHsKKyAgICAgICAgbVByb2dyYW0tPnNldFNlcGFyYWJs
ZShzZXBhcmFibGUpOworICAgICAgICBtU3RhdGUubVNlcGFyYWJsZSA9IHNlcGFyYWJsZTsKKyAg
ICB9Cit9CisKK2Jvb2wgUHJvZ3JhbTo6aXNTZXBhcmFibGUoKSBjb25zdAoreworICAgIHJldHVy
biBtU3RhdGUubVNlcGFyYWJsZTsKK30KKwordm9pZCBQcm9ncmFtOjpyZWxlYXNlKGNvbnN0IENv
bnRleHQgKmNvbnRleHQpCiB7CiAgICAgbVJlZkNvdW50LS07CiAKICAgICBpZiAobVJlZkNvdW50
ID09IDAgJiYgbURlbGV0ZVN0YXR1cykKICAgICB7Ci0gICAgICAgIG1SZXNvdXJjZU1hbmFnZXIt
PmRlbGV0ZVByb2dyYW0obUhhbmRsZSk7CisgICAgICAgIG1SZXNvdXJjZU1hbmFnZXItPmRlbGV0
ZVByb2dyYW0oY29udGV4dCwgbUhhbmRsZSk7CiAgICAgfQogfQogCkBAIC0xMDgxLDcgKzEyMjYs
NyBAQCBHTHVpbnQgUHJvZ3JhbTo6Z2V0QXR0cmlidXRlTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJp
bmcgJm5hbWUpIGNvbnN0CiB7CiAgICAgZm9yIChjb25zdCBzaDo6QXR0cmlidXRlICZhdHRyaWJ1
dGUgOiBtU3RhdGUubUF0dHJpYnV0ZXMpCiAgICAgewotICAgICAgICBpZiAoYXR0cmlidXRlLm5h
bWUgPT0gbmFtZSAmJiBhdHRyaWJ1dGUuc3RhdGljVXNlKQorICAgICAgICBpZiAoYXR0cmlidXRl
Lm5hbWUgPT0gbmFtZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS5s
b2NhdGlvbjsKICAgICAgICAgfQpAQCAtMTA5Niw3ICsxMjQxLDEyIEBAIGJvb2wgUHJvZ3JhbTo6
aXNBdHRyaWJMb2NhdGlvbkFjdGl2ZShzaXplX3QgYXR0cmliTG9jYXRpb24pIGNvbnN0CiAgICAg
cmV0dXJuIG1TdGF0ZS5tQWN0aXZlQXR0cmliTG9jYXRpb25zTWFza1thdHRyaWJMb2NhdGlvbl07
CiB9CiAKLXZvaWQgUHJvZ3JhbTo6Z2V0QWN0aXZlQXR0cmlidXRlKEdMdWludCBpbmRleCwgR0xz
aXplaSBidWZzaXplLCBHTHNpemVpICpsZW5ndGgsIEdMaW50ICpzaXplLCBHTGVudW0gKnR5cGUs
IEdMY2hhciAqbmFtZSkKK3ZvaWQgUHJvZ3JhbTo6Z2V0QWN0aXZlQXR0cmlidXRlKEdMdWludCBp
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmc2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpzaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtICp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xjaGFyICpuYW1lKSBjb25zdAogewogICAgIGlmICghbUxpbmtlZCkKICAgICB7
CkBAIC0xMTE1LDM1ICsxMjY1LDEyIEBAIHZvaWQgUHJvZ3JhbTo6Z2V0QWN0aXZlQXR0cmlidXRl
KEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpICpsZW5ndGgsCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBzaXplX3QgYXR0cmlidXRlSW5kZXggPSAwOwotCi0gICAg
Zm9yIChjb25zdCBzaDo6QXR0cmlidXRlICZhdHRyaWJ1dGUgOiBtU3RhdGUubUF0dHJpYnV0ZXMp
Ci0gICAgewotICAgICAgICAvLyBTa2lwIG92ZXIgaW5hY3RpdmUgYXR0cmlidXRlcwotICAgICAg
ICBpZiAoYXR0cmlidXRlLnN0YXRpY1VzZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHN0
YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpID09IGF0dHJpYnV0ZUluZGV4KQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYXR0
cmlidXRlSW5kZXgrKzsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEFTU0VSVChpbmRleCA9PSBh
dHRyaWJ1dGVJbmRleCAmJiBhdHRyaWJ1dGVJbmRleCA8IG1TdGF0ZS5tQXR0cmlidXRlcy5zaXpl
KCkpOwotICAgIGNvbnN0IHNoOjpBdHRyaWJ1dGUgJmF0dHJpYiA9IG1TdGF0ZS5tQXR0cmlidXRl
c1thdHRyaWJ1dGVJbmRleF07CisgICAgQVNTRVJUKGluZGV4IDwgbVN0YXRlLm1BdHRyaWJ1dGVz
LnNpemUoKSk7CisgICAgY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmliID0gbVN0YXRlLm1BdHRy
aWJ1dGVzW2luZGV4XTsKIAogICAgIGlmIChidWZzaXplID4gMCkKICAgICB7Ci0gICAgICAgIGNv
bnN0IGNoYXIgKnN0cmluZyA9IGF0dHJpYi5uYW1lLmNfc3RyKCk7Ci0KLSAgICAgICAgc3RybmNw
eShuYW1lLCBzdHJpbmcsIGJ1ZnNpemUpOwotICAgICAgICBuYW1lW2J1ZnNpemUgLSAxXSA9ICdc
MCc7Ci0KLSAgICAgICAgaWYgKGxlbmd0aCkKLSAgICAgICAgewotICAgICAgICAgICAgKmxlbmd0
aCA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KHN0cmxlbihuYW1lKSk7Ci0gICAgICAgIH0KKyAgICAg
ICAgQ29weVN0cmluZ1RvQnVmZmVyKG5hbWUsIGF0dHJpYi5uYW1lLCBidWZzaXplLCBsZW5ndGgp
OwogICAgIH0KIAogICAgIC8vIEFsd2F5cyBhIHNpbmdsZSAndHlwZScgaW5zdGFuY2UKQEAgLTEx
NTgsMTQgKzEyODUsNyBAQCBHTGludCBQcm9ncmFtOjpnZXRBY3RpdmVBdHRyaWJ1dGVDb3VudCgp
IGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIEdMaW50IGNvdW50ID0gMDsK
LQotICAgIGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmliIDogbVN0YXRlLm1BdHRyaWJ1
dGVzKQotICAgIHsKLSAgICAgICAgY291bnQgKz0gKGF0dHJpYi5zdGF0aWNVc2UgPyAxIDogMCk7
Ci0gICAgfQotCi0gICAgcmV0dXJuIGNvdW50OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGlu
dD4obVN0YXRlLm1BdHRyaWJ1dGVzLnNpemUoKSk7CiB9CiAKIEdMaW50IFByb2dyYW06OmdldEFj
dGl2ZUF0dHJpYnV0ZU1heExlbmd0aCgpIGNvbnN0CkBAIC0xMTc5LDIwICsxMjk5LDc5IEBAIEdM
aW50IFByb2dyYW06OmdldEFjdGl2ZUF0dHJpYnV0ZU1heExlbmd0aCgpIGNvbnN0CiAKICAgICBm
b3IgKGNvbnN0IHNoOjpBdHRyaWJ1dGUgJmF0dHJpYiA6IG1TdGF0ZS5tQXR0cmlidXRlcykKICAg
ICB7Ci0gICAgICAgIGlmIChhdHRyaWIuc3RhdGljVXNlKQorICAgICAgICBtYXhMZW5ndGggPSBz
dGQ6Om1heChhdHRyaWIubmFtZS5sZW5ndGgoKSArIDEsIG1heExlbmd0aCk7CisgICAgfQorCisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMaW50PihtYXhMZW5ndGgpOworfQorCitHTHVpbnQgUHJv
Z3JhbTo6Z2V0SW5wdXRSZXNvdXJjZUluZGV4KGNvbnN0IEdMY2hhciAqbmFtZSkgY29uc3QKK3sK
KyAgICBmb3IgKEdMdWludCBhdHRyaWJ1dGVJbmRleCA9IDA7IGF0dHJpYnV0ZUluZGV4IDwgbVN0
YXRlLm1BdHRyaWJ1dGVzLnNpemUoKTsgKythdHRyaWJ1dGVJbmRleCkKKyAgICB7CisgICAgICAg
IGNvbnN0IHNoOjpBdHRyaWJ1dGUgJmF0dHJpYnV0ZSA9IG1TdGF0ZS5tQXR0cmlidXRlc1thdHRy
aWJ1dGVJbmRleF07CisgICAgICAgIGlmIChhdHRyaWJ1dGUubmFtZSA9PSBuYW1lKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBtYXhMZW5ndGggPSBzdGQ6Om1heChhdHRyaWIubmFtZS5sZW5ndGgo
KSArIDEsIG1heExlbmd0aCk7CisgICAgICAgICAgICByZXR1cm4gYXR0cmlidXRlSW5kZXg7CiAg
ICAgICAgIH0KICAgICB9CisgICAgcmV0dXJuIEdMX0lOVkFMSURfSU5ERVg7Cit9CiAKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KG1heExlbmd0aCk7CitHTHVpbnQgUHJvZ3JhbTo6Z2V0
T3V0cHV0UmVzb3VyY2VJbmRleChjb25zdCBHTGNoYXIgKm5hbWUpIGNvbnN0Cit7CisgICAgcmV0
dXJuIEdldFJlc291cmNlSW5kZXhGcm9tTmFtZShtU3RhdGUubU91dHB1dFZhcmlhYmxlcywgc3Rk
OjpzdHJpbmcobmFtZSkpOworfQorCitzaXplX3QgUHJvZ3JhbTo6Z2V0T3V0cHV0UmVzb3VyY2VD
b3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtTGlua2VkID8gbVN0YXRlLm1PdXRwdXRWYXJp
YWJsZXMuc2l6ZSgpIDogMCk7Cit9CisKK3ZvaWQgUHJvZ3JhbTo6Z2V0SW5wdXRSZXNvdXJjZU5h
bWUoR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpuYW1l
KSBjb25zdAoreworICAgIEdMaW50IHNpemU7CisgICAgR0xlbnVtIHR5cGU7CisgICAgZ2V0QWN0
aXZlQXR0cmlidXRlKGluZGV4LCBidWZTaXplLCBsZW5ndGgsICZzaXplLCAmdHlwZSwgbmFtZSk7
Cit9CisKK3ZvaWQgUHJvZ3JhbTo6Z2V0T3V0cHV0UmVzb3VyY2VOYW1lKEdMdWludCBpbmRleCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbmFtZSkgY29uc3QKK3sKKyAg
ICBpZiAobGVuZ3RoKQorICAgIHsKKyAgICAgICAgKmxlbmd0aCA9IDA7CisgICAgfQorCisgICAg
aWYgKCFtTGlua2VkKQorICAgIHsKKyAgICAgICAgaWYgKGJ1ZlNpemUgPiAwKQorICAgICAgICB7
CisgICAgICAgICAgICBuYW1lWzBdID0gJ1wwJzsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47
CisgICAgfQorICAgIEFTU0VSVChpbmRleCA8IG1TdGF0ZS5tT3V0cHV0VmFyaWFibGVzLnNpemUo
KSk7CisgICAgY29uc3QgYXV0byAmb3V0cHV0ID0gbVN0YXRlLm1PdXRwdXRWYXJpYWJsZXNbaW5k
ZXhdOworCisgICAgaWYgKGJ1ZlNpemUgPiAwKQorICAgIHsKKyAgICAgICAgc3RkOjpzdHJpbmcg
bmFtZVdpdGhBcnJheSA9IChvdXRwdXQuaXNBcnJheSgpID8gb3V0cHV0Lm5hbWUgKyAiWzBdIiA6
IG91dHB1dC5uYW1lKTsKKworICAgICAgICBDb3B5U3RyaW5nVG9CdWZmZXIobmFtZSwgbmFtZVdp
dGhBcnJheSwgYnVmU2l6ZSwgbGVuZ3RoKTsKKyAgICB9CiB9CiAKIEdMaW50IFByb2dyYW06Omdl
dEZyYWdEYXRhTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0CiB7CiAgICAg
c3RkOjpzdHJpbmcgYmFzZU5hbWUobmFtZSk7CiAgICAgdW5zaWduZWQgaW50IGFycmF5SW5kZXgg
PSBQYXJzZUFuZFN0cmlwQXJyYXlJbmRleCgmYmFzZU5hbWUpOwotICAgIGZvciAoYXV0byBvdXRw
dXRQYWlyIDogbVN0YXRlLm1PdXRwdXRWYXJpYWJsZXMpCisgICAgZm9yIChhdXRvIG91dHB1dFBh
aXIgOiBtU3RhdGUubU91dHB1dExvY2F0aW9ucykKICAgICB7CiAgICAgICAgIGNvbnN0IFZhcmlh
YmxlTG9jYXRpb24gJm91dHB1dFZhcmlhYmxlID0gb3V0cHV0UGFpci5zZWNvbmQ7CiAgICAgICAg
IGlmIChvdXRwdXRWYXJpYWJsZS5uYW1lID09IGJhc2VOYW1lICYmIChhcnJheUluZGV4ID09IEdM
X0lOVkFMSURfSU5ERVggfHwgYXJyYXlJbmRleCA9PSBvdXRwdXRWYXJpYWJsZS5lbGVtZW50KSkK
QEAgLTEyMjMsMTQgKzE0MDIsNyBAQCB2b2lkIFByb2dyYW06OmdldEFjdGl2ZVVuaWZvcm0oR0x1
aW50IGluZGV4LAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHN0cmluZyArPSAiWzBd
IjsKICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgc3RybmNweShuYW1lLCBzdHJpbmcuY19z
dHIoKSwgYnVmc2l6ZSk7Ci0gICAgICAgICAgICBuYW1lW2J1ZnNpemUgLSAxXSA9ICdcMCc7Ci0K
LSAgICAgICAgICAgIGlmIChsZW5ndGgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
Kmxlbmd0aCA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KHN0cmxlbihuYW1lKSk7Ci0gICAgICAgICAg
ICB9CisgICAgICAgICAgICBDb3B5U3RyaW5nVG9CdWZmZXIobmFtZSwgc3RyaW5nLCBidWZzaXpl
LCBsZW5ndGgpOwogICAgICAgICB9CiAKICAgICAgICAgKnNpemUgPSB1bmlmb3JtLmVsZW1lbnRD
b3VudCgpOwpAQCAtMTI5MSw3ICsxNDYzLDcgQEAgR0xpbnQgUHJvZ3JhbTo6Z2V0QWN0aXZlVW5p
Zm9ybU1heExlbmd0aCgpIGNvbnN0CiBHTGludCBQcm9ncmFtOjpnZXRBY3RpdmVVbmlmb3JtaShH
THVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSkgY29uc3QKIHsKICAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8c2l6ZV90PihpbmRleCkgPCBtU3RhdGUubVVuaWZvcm1zLnNpemUoKSk7Ci0gICAgY29uc3Qg
Z2w6OkxpbmtlZFVuaWZvcm0gJnVuaWZvcm0gPSBtU3RhdGUubVVuaWZvcm1zW2luZGV4XTsKKyAg
ICBjb25zdCBMaW5rZWRVbmlmb3JtICZ1bmlmb3JtID0gbVN0YXRlLm1Vbmlmb3Jtc1tpbmRleF07
CiAgICAgc3dpdGNoIChwbmFtZSkKICAgICB7CiAgICAgICBjYXNlIEdMX1VOSUZPUk1fVFlQRTog
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xpbnQ+KHVuaWZvcm0udHlwZSk7CkBAIC0xMzE2
LDE1NSArMTQ4OCwxNjMgQEAgYm9vbCBQcm9ncmFtOjppc1ZhbGlkVW5pZm9ybUxvY2F0aW9uKEdM
aW50IGxvY2F0aW9uKSBjb25zdAogICAgICAgICAgICAgbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25z
W3N0YXRpY19jYXN0PHNpemVfdD4obG9jYXRpb24pXS51c2VkKTsKIH0KIAotYm9vbCBQcm9ncmFt
Ojppc0lnbm9yZWRVbmlmb3JtTG9jYXRpb24oR0xpbnQgbG9jYXRpb24pIGNvbnN0Ci17Ci0gICAg
Ly8gTG9jYXRpb24gaXMgaWdub3JlZCBpZiBpdCBpcyAtMSBvciBpdCB3YXMgYm91bmQgYnV0IG5v
bi1leGlzdGFudCBpbiB0aGUgc2hhZGVyIG9yIG9wdGltaXplZAotICAgIC8vIG91dAotICAgIHJl
dHVybiBsb2NhdGlvbiA9PSAtMSB8fAotICAgICAgICAgICAobG9jYXRpb24gPj0gMCAmJiBzdGF0
aWNfY2FzdDxzaXplX3Q+KGxvY2F0aW9uKSA8IG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9ucy5zaXpl
KCkgJiYKLSAgICAgICAgICAgIG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tzdGF0aWNfY2FzdDxz
aXplX3Q+KGxvY2F0aW9uKV0uaWdub3JlZCk7Ci19Ci0KIGNvbnN0IExpbmtlZFVuaWZvcm0gJlBy
b2dyYW06OmdldFVuaWZvcm1CeUxvY2F0aW9uKEdMaW50IGxvY2F0aW9uKSBjb25zdAogewogICAg
IEFTU0VSVChsb2NhdGlvbiA+PSAwICYmIHN0YXRpY19jYXN0PHNpemVfdD4obG9jYXRpb24pIDwg
bVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zLnNpemUoKSk7Ci0gICAgcmV0dXJuIG1TdGF0ZS5tVW5p
Zm9ybXNbbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zW2xvY2F0aW9uXS5pbmRleF07CisgICAgcmV0
dXJuIG1TdGF0ZS5tVW5pZm9ybXNbbVN0YXRlLmdldFVuaWZvcm1JbmRleEZyb21Mb2NhdGlvbihs
b2NhdGlvbildOwogfQogCi1HTGludCBQcm9ncmFtOjpnZXRVbmlmb3JtTG9jYXRpb24oY29uc3Qg
c3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0Citjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZQcm9ncmFt
OjpnZXRVbmlmb3JtTG9jYXRpb24oR0xpbnQgbG9jYXRpb24pIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1TdGF0ZS5nZXRVbmlmb3JtTG9jYXRpb24obmFtZSk7CisgICAgQVNTRVJUKGxvY2F0aW9uID49
IDAgJiYgc3RhdGljX2Nhc3Q8c2l6ZV90Pihsb2NhdGlvbikgPCBtU3RhdGUubVVuaWZvcm1Mb2Nh
dGlvbnMuc2l6ZSgpKTsKKyAgICByZXR1cm4gbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zW2xvY2F0
aW9uXTsKIH0KIAotR0x1aW50IFByb2dyYW06OmdldFVuaWZvcm1JbmRleChjb25zdCBzdGQ6OnN0
cmluZyAmbmFtZSkgY29uc3QKK2NvbnN0IHN0ZDo6dmVjdG9yPFZhcmlhYmxlTG9jYXRpb24+ICZQ
cm9ncmFtOjpnZXRVbmlmb3JtTG9jYXRpb25zKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbVN0YXRl
LmdldFVuaWZvcm1JbmRleChuYW1lKTsKKyAgICByZXR1cm4gbVN0YXRlLm1Vbmlmb3JtTG9jYXRp
b25zOwogfQogCi12b2lkIFByb2dyYW06OnNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCitjb25zdCBMaW5rZWRVbmlmb3JtICZQcm9n
cmFtOjpnZXRVbmlmb3JtQnlJbmRleChHTHVpbnQgaW5kZXgpIGNvbnN0CiB7Ci0gICAgc2V0VW5p
Zm9ybUludGVybmFsKGxvY2F0aW9uLCBjb3VudCAqIDEsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRV
bmlmb3JtMWZ2KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAgQVNTRVJUKGluZGV4IDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90PihtU3RhdGUubVVuaWZvcm1zLnNpemUoKSkpOworICAgIHJldHVybiBtU3Rh
dGUubVVuaWZvcm1zW2luZGV4XTsKK30KKworR0xpbnQgUHJvZ3JhbTo6Z2V0VW5pZm9ybUxvY2F0
aW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdAoreworICAgIHJldHVybiBtU3RhdGUu
Z2V0VW5pZm9ybUxvY2F0aW9uKG5hbWUpOworfQorCitHTHVpbnQgUHJvZ3JhbTo6Z2V0VW5pZm9y
bUluZGV4KGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKSBjb25zdAoreworICAgIHJldHVybiBtU3Rh
dGUuZ2V0VW5pZm9ybUluZGV4RnJvbU5hbWUobmFtZSk7Cit9CisKK3ZvaWQgUHJvZ3JhbTo6c2V0
VW5pZm9ybTFmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAq
dikKK3sKKyAgICBHTHNpemVpIGNsYW1wZWRDb3VudCA9IHNldFVuaWZvcm1JbnRlcm5hbChsb2Nh
dGlvbiwgY291bnQsIDEsIHYpOworICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtMWZ2KGxvY2F0aW9u
LCBjbGFtcGVkQ291bnQsIHYpOwogfQogCiB2b2lkIFByb2dyYW06OnNldFVuaWZvcm0yZnYoR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCiB7Ci0gICAgc2V0
VW5pZm9ybUludGVybmFsKGxvY2F0aW9uLCBjb3VudCAqIDIsIHYpOwotICAgIG1Qcm9ncmFtLT5z
ZXRVbmlmb3JtMmZ2KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAgR0xzaXplaSBjbGFtcGVkQ291
bnQgPSBzZXRVbmlmb3JtSW50ZXJuYWwobG9jYXRpb24sIGNvdW50LCAyLCB2KTsKKyAgICBtUHJv
Z3JhbS0+c2V0VW5pZm9ybTJmdihsb2NhdGlvbiwgY2xhbXBlZENvdW50LCB2KTsKIH0KIAogdm9p
ZCBQcm9ncmFtOjpzZXRVbmlmb3JtM2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGZsb2F0ICp2KQogewotICAgIHNldFVuaWZvcm1JbnRlcm5hbChsb2NhdGlvbiwgY291
bnQgKiAzLCB2KTsKLSAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTNmdihsb2NhdGlvbiwgY291bnQs
IHYpOworICAgIEdMc2l6ZWkgY2xhbXBlZENvdW50ID0gc2V0VW5pZm9ybUludGVybmFsKGxvY2F0
aW9uLCBjb3VudCwgMywgdik7CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm0zZnYobG9jYXRpb24s
IGNsYW1wZWRDb3VudCwgdik7CiB9CiAKIHZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTRmdihHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKIHsKLSAgICBzZXRV
bmlmb3JtSW50ZXJuYWwobG9jYXRpb24sIGNvdW50ICogNCwgdik7Ci0gICAgbVByb2dyYW0tPnNl
dFVuaWZvcm00ZnYobG9jYXRpb24sIGNvdW50LCB2KTsKKyAgICBHTHNpemVpIGNsYW1wZWRDb3Vu
dCA9IHNldFVuaWZvcm1JbnRlcm5hbChsb2NhdGlvbiwgY291bnQsIDQsIHYpOworICAgIG1Qcm9n
cmFtLT5zZXRVbmlmb3JtNGZ2KGxvY2F0aW9uLCBjbGFtcGVkQ291bnQsIHYpOwogfQogCiB2b2lk
IFByb2dyYW06OnNldFVuaWZvcm0xaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNv
bnN0IEdMaW50ICp2KQogewotICAgIHNldFVuaWZvcm1JbnRlcm5hbChsb2NhdGlvbiwgY291bnQg
KiAxLCB2KTsKLSAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTFpdihsb2NhdGlvbiwgY291bnQsIHYp
OworICAgIEdMc2l6ZWkgY2xhbXBlZENvdW50ID0gc2V0VW5pZm9ybUludGVybmFsKGxvY2F0aW9u
LCBjb3VudCwgMSwgdik7CisgICAgbVByb2dyYW0tPnNldFVuaWZvcm0xaXYobG9jYXRpb24sIGNs
YW1wZWRDb3VudCwgdik7CiB9CiAKIHZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTJpdihHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCiB7Ci0gICAgc2V0VW5pZm9y
bUludGVybmFsKGxvY2F0aW9uLCBjb3VudCAqIDIsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRVbmlm
b3JtMml2KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAgR0xzaXplaSBjbGFtcGVkQ291bnQgPSBz
ZXRVbmlmb3JtSW50ZXJuYWwobG9jYXRpb24sIGNvdW50LCAyLCB2KTsKKyAgICBtUHJvZ3JhbS0+
c2V0VW5pZm9ybTJpdihsb2NhdGlvbiwgY2xhbXBlZENvdW50LCB2KTsKIH0KIAogdm9pZCBQcm9n
cmFtOjpzZXRVbmlmb3JtM2l2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBH
TGludCAqdikKIHsKLSAgICBzZXRVbmlmb3JtSW50ZXJuYWwobG9jYXRpb24sIGNvdW50ICogMywg
dik7Ci0gICAgbVByb2dyYW0tPnNldFVuaWZvcm0zaXYobG9jYXRpb24sIGNvdW50LCB2KTsKKyAg
ICBHTHNpemVpIGNsYW1wZWRDb3VudCA9IHNldFVuaWZvcm1JbnRlcm5hbChsb2NhdGlvbiwgY291
bnQsIDMsIHYpOworICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtM2l2KGxvY2F0aW9uLCBjbGFtcGVk
Q291bnQsIHYpOwogfQogCiB2b2lkIFByb2dyYW06OnNldFVuaWZvcm00aXYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQogewotICAgIHNldFVuaWZvcm1JbnRl
cm5hbChsb2NhdGlvbiwgY291bnQgKiA0LCB2KTsKLSAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTRp
dihsb2NhdGlvbiwgY291bnQsIHYpOworICAgIEdMc2l6ZWkgY2xhbXBlZENvdW50ID0gc2V0VW5p
Zm9ybUludGVybmFsKGxvY2F0aW9uLCBjb3VudCwgNCwgdik7CisgICAgbVByb2dyYW0tPnNldFVu
aWZvcm00aXYobG9jYXRpb24sIGNsYW1wZWRDb3VudCwgdik7CiB9CiAKIHZvaWQgUHJvZ3JhbTo6
c2V0VW5pZm9ybTF1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWlu
dCAqdikKIHsKLSAgICBzZXRVbmlmb3JtSW50ZXJuYWwobG9jYXRpb24sIGNvdW50ICogMSwgdik7
Ci0gICAgbVByb2dyYW0tPnNldFVuaWZvcm0xdWl2KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAg
R0xzaXplaSBjbGFtcGVkQ291bnQgPSBzZXRVbmlmb3JtSW50ZXJuYWwobG9jYXRpb24sIGNvdW50
LCAxLCB2KTsKKyAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTF1aXYobG9jYXRpb24sIGNsYW1wZWRD
b3VudCwgdik7CiB9CiAKIHZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTJ1aXYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikKIHsKLSAgICBzZXRVbmlmb3JtSW50
ZXJuYWwobG9jYXRpb24sIGNvdW50ICogMiwgdik7Ci0gICAgbVByb2dyYW0tPnNldFVuaWZvcm0y
dWl2KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAgR0xzaXplaSBjbGFtcGVkQ291bnQgPSBzZXRV
bmlmb3JtSW50ZXJuYWwobG9jYXRpb24sIGNvdW50LCAyLCB2KTsKKyAgICBtUHJvZ3JhbS0+c2V0
VW5pZm9ybTJ1aXYobG9jYXRpb24sIGNsYW1wZWRDb3VudCwgdik7CiB9CiAKIHZvaWQgUHJvZ3Jh
bTo6c2V0VW5pZm9ybTN1aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
dWludCAqdikKIHsKLSAgICBzZXRVbmlmb3JtSW50ZXJuYWwobG9jYXRpb24sIGNvdW50ICogMywg
dik7Ci0gICAgbVByb2dyYW0tPnNldFVuaWZvcm0zdWl2KGxvY2F0aW9uLCBjb3VudCwgdik7Cisg
ICAgR0xzaXplaSBjbGFtcGVkQ291bnQgPSBzZXRVbmlmb3JtSW50ZXJuYWwobG9jYXRpb24sIGNv
dW50LCAzLCB2KTsKKyAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybTN1aXYobG9jYXRpb24sIGNsYW1w
ZWRDb3VudCwgdik7CiB9CiAKIHZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybTR1aXYoR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikKIHsKLSAgICBzZXRVbmlmb3Jt
SW50ZXJuYWwobG9jYXRpb24sIGNvdW50ICogNCwgdik7Ci0gICAgbVByb2dyYW0tPnNldFVuaWZv
cm00dWl2KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAgR0xzaXplaSBjbGFtcGVkQ291bnQgPSBz
ZXRVbmlmb3JtSW50ZXJuYWwobG9jYXRpb24sIGNvdW50LCA0LCB2KTsKKyAgICBtUHJvZ3JhbS0+
c2V0VW5pZm9ybTR1aXYobG9jYXRpb24sIGNsYW1wZWRDb3VudCwgdik7CiB9CiAKIHZvaWQgUHJv
Z3JhbTo6c2V0VW5pZm9ybU1hdHJpeDJmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwg
R0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdikKIHsKLSAgICBzZXRNYXRyaXhV
bmlmb3JtSW50ZXJuYWw8MiwgMj4obG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHYpOwotICAg
IG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3Nl
LCB2KTsKKyAgICBHTHNpemVpIGNsYW1wZWRDb3VudCA9IHNldE1hdHJpeFVuaWZvcm1JbnRlcm5h
bDwyLCAyPihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdik7CisgICAgbVByb2dyYW0tPnNl
dFVuaWZvcm1NYXRyaXgyZnYobG9jYXRpb24sIGNsYW1wZWRDb3VudCwgdHJhbnNwb3NlLCB2KTsK
IH0KIAogdm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4M2Z2KEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2KQogewot
ICAgIHNldE1hdHJpeFVuaWZvcm1JbnRlcm5hbDwzLCAzPihsb2NhdGlvbiwgY291bnQsIHRyYW5z
cG9zZSwgdik7Ci0gICAgbVByb2dyYW0tPnNldFVuaWZvcm1NYXRyaXgzZnYobG9jYXRpb24sIGNv
dW50LCB0cmFuc3Bvc2UsIHYpOworICAgIEdMc2l6ZWkgY2xhbXBlZENvdW50ID0gc2V0TWF0cml4
VW5pZm9ybUludGVybmFsPDMsIDM+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKKyAg
ICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgY2xhbXBlZENvdW50LCB0
cmFuc3Bvc2UsIHYpOwogfQogCiB2b2lkIFByb2dyYW06OnNldFVuaWZvcm1NYXRyaXg0ZnYoR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdM
ZmxvYXQgKnYpCiB7Ci0gICAgc2V0TWF0cml4VW5pZm9ybUludGVybmFsPDQsIDQ+KGxvY2F0aW9u
LCBjb3VudCwgdHJhbnNwb3NlLCB2KTsKLSAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDRm
dihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdik7CisgICAgR0xzaXplaSBjbGFtcGVkQ291
bnQgPSBzZXRNYXRyaXhVbmlmb3JtSW50ZXJuYWw8NCwgND4obG9jYXRpb24sIGNvdW50LCB0cmFu
c3Bvc2UsIHYpOworICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBj
bGFtcGVkQ291bnQsIHRyYW5zcG9zZSwgdik7CiB9CiAKIHZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9y
bU1hdHJpeDJ4M2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJh
bnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2KQogewotICAgIHNldE1hdHJpeFVuaWZvcm1JbnRlcm5h
bDwyLCAzPihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdik7Ci0gICAgbVByb2dyYW0tPnNl
dFVuaWZvcm1NYXRyaXgyeDNmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdik7CisgICAg
R0xzaXplaSBjbGFtcGVkQ291bnQgPSBzZXRNYXRyaXhVbmlmb3JtSW50ZXJuYWw8MiwgMz4obG9j
YXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHYpOworICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0
cml4MngzZnYobG9jYXRpb24sIGNsYW1wZWRDb3VudCwgdHJhbnNwb3NlLCB2KTsKIH0KIAogdm9p
ZCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4Mng0ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnYpCiB7Ci0gICAgc2V0
TWF0cml4VW5pZm9ybUludGVybmFsPDIsIDQ+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2
KTsKLSAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDJ4NGZ2KGxvY2F0aW9uLCBjb3VudCwg
dHJhbnNwb3NlLCB2KTsKKyAgICBHTHNpemVpIGNsYW1wZWRDb3VudCA9IHNldE1hdHJpeFVuaWZv
cm1JbnRlcm5hbDwyLCA0Pihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdik7CisgICAgbVBy
b2dyYW0tPnNldFVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbiwgY2xhbXBlZENvdW50LCB0cmFu
c3Bvc2UsIHYpOwogfQogCiB2b2lkIFByb2dyYW06OnNldFVuaWZvcm1NYXRyaXgzeDJmdihHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xm
bG9hdCAqdikKIHsKLSAgICBzZXRNYXRyaXhVbmlmb3JtSW50ZXJuYWw8MywgMj4obG9jYXRpb24s
IGNvdW50LCB0cmFuc3Bvc2UsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4M3gy
ZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHYpOworICAgIEdMc2l6ZWkgY2xhbXBlZENv
dW50ID0gc2V0TWF0cml4VW5pZm9ybUludGVybmFsPDMsIDI+KGxvY2F0aW9uLCBjb3VudCwgdHJh
bnNwb3NlLCB2KTsKKyAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDN4MmZ2KGxvY2F0aW9u
LCBjbGFtcGVkQ291bnQsIHRyYW5zcG9zZSwgdik7CiB9CiAKIHZvaWQgUHJvZ3JhbTo6c2V0VW5p
Zm9ybU1hdHJpeDN4NGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2KQogewotICAgIHNldE1hdHJpeFVuaWZvcm1JbnRl
cm5hbDwzLCA0Pihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdik7Ci0gICAgbVByb2dyYW0t
PnNldFVuaWZvcm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdik7Cisg
ICAgR0xzaXplaSBjbGFtcGVkQ291bnQgPSBzZXRNYXRyaXhVbmlmb3JtSW50ZXJuYWw8MywgND4o
bG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHYpOworICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3Jt
TWF0cml4M3g0ZnYobG9jYXRpb24sIGNsYW1wZWRDb3VudCwgdHJhbnNwb3NlLCB2KTsKIH0KIAog
dm9pZCBQcm9ncmFtOjpzZXRVbmlmb3JtTWF0cml4NHgyZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnYpCiB7Ci0gICAg
c2V0TWF0cml4VW5pZm9ybUludGVybmFsPDQsIDI+KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3Nl
LCB2KTsKLSAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDR4MmZ2KGxvY2F0aW9uLCBjb3Vu
dCwgdHJhbnNwb3NlLCB2KTsKKyAgICBHTHNpemVpIGNsYW1wZWRDb3VudCA9IHNldE1hdHJpeFVu
aWZvcm1JbnRlcm5hbDw0LCAyPihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdik7CisgICAg
bVByb2dyYW0tPnNldFVuaWZvcm1NYXRyaXg0eDJmdihsb2NhdGlvbiwgY2xhbXBlZENvdW50LCB0
cmFuc3Bvc2UsIHYpOwogfQogCiB2b2lkIFByb2dyYW06OnNldFVuaWZvcm1NYXRyaXg0eDNmdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3Qg
R0xmbG9hdCAqdikKIHsKLSAgICBzZXRNYXRyaXhVbmlmb3JtSW50ZXJuYWw8NCwgMz4obG9jYXRp
b24sIGNvdW50LCB0cmFuc3Bvc2UsIHYpOwotICAgIG1Qcm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4
NHgzZnYobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHYpOworICAgIEdMc2l6ZWkgY2xhbXBl
ZENvdW50ID0gc2V0TWF0cml4VW5pZm9ybUludGVybmFsPDQsIDM+KGxvY2F0aW9uLCBjb3VudCwg
dHJhbnNwb3NlLCB2KTsKKyAgICBtUHJvZ3JhbS0+c2V0VW5pZm9ybU1hdHJpeDR4M2Z2KGxvY2F0
aW9uLCBjbGFtcGVkQ291bnQsIHRyYW5zcG9zZSwgdik7CiB9CiAKIHZvaWQgUHJvZ3JhbTo6Z2V0
VW5pZm9ybWZ2KEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0ICp2KSBjb25zdApAQCAtMTUyNywyMiAr
MTcwNywxMiBAQCBib29sIFByb2dyYW06OnZhbGlkYXRlU2FtcGxlcnMoSW5mb0xvZyAqaW5mb0xv
ZywgY29uc3QgQ2FwcyAmY2FwcykKICAgICAvLyBpZiBhbnkgdHdvIGFjdGl2ZSBzYW1wbGVycyBp
biBhIHByb2dyYW0gYXJlIG9mIGRpZmZlcmVudCB0eXBlcywgYnV0IHJlZmVyIHRvIHRoZSBzYW1l
CiAgICAgLy8gdGV4dHVyZSBpbWFnZSB1bml0LCBhbmQgdGhpcyBpcyB0aGUgY3VycmVudCBwcm9n
cmFtLCB0aGVuIFZhbGlkYXRlUHJvZ3JhbSB3aWxsIGZhaWwsIGFuZAogICAgIC8vIERyYXdBcnJh
eXMgYW5kIERyYXdFbGVtZW50cyB3aWxsIGlzc3VlIHRoZSBJTlZBTElEX09QRVJBVElPTiBlcnJv
ci4KLSAgICBmb3IgKHVuc2lnbmVkIGludCBzYW1wbGVySW5kZXggPSBtU2FtcGxlclVuaWZvcm1S
YW5nZS5zdGFydDsKLSAgICAgICAgIHNhbXBsZXJJbmRleCA8IG1TYW1wbGVyVW5pZm9ybVJhbmdl
LmVuZDsgKytzYW1wbGVySW5kZXgpCisgICAgZm9yIChjb25zdCBhdXRvICZzYW1wbGVyQmluZGlu
ZyA6IG1TdGF0ZS5tU2FtcGxlckJpbmRpbmdzKQogICAgIHsKLSAgICAgICAgY29uc3QgTGlua2Vk
VW5pZm9ybSAmdW5pZm9ybSA9IG1TdGF0ZS5tVW5pZm9ybXNbc2FtcGxlckluZGV4XTsKLSAgICAg
ICAgQVNTRVJUKHVuaWZvcm0uaXNTYW1wbGVyKCkpOwotCi0gICAgICAgIGlmICghdW5pZm9ybS5z
dGF0aWNVc2UpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgR0xlbnVtIHRleHR1cmVU
eXBlID0gc2FtcGxlckJpbmRpbmcudGV4dHVyZVR5cGU7CiAKLSAgICAgICAgY29uc3QgR0x1aW50
ICpkYXRhUHRyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVpbnQgKj4odW5pZm9ybS5nZXRE
YXRhUHRyVG9FbGVtZW50KDApKTsKLSAgICAgICAgR0xlbnVtIHRleHR1cmVUeXBlICAgID0gU2Ft
cGxlclR5cGVUb1RleHR1cmVUeXBlKHVuaWZvcm0udHlwZSk7Ci0KLSAgICAgICAgZm9yICh1bnNp
Z25lZCBpbnQgYXJyYXlFbGVtZW50ID0gMDsgYXJyYXlFbGVtZW50IDwgdW5pZm9ybS5lbGVtZW50
Q291bnQoKTsgKythcnJheUVsZW1lbnQpCisgICAgICAgIGZvciAoR0x1aW50IHRleHR1cmVVbml0
IDogc2FtcGxlckJpbmRpbmcuYm91bmRUZXh0dXJlVW5pdHMpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIEdMdWludCB0ZXh0dXJlVW5pdCA9IGRhdGFQdHJbYXJyYXlFbGVtZW50XTsKLQogICAgICAg
ICAgICAgaWYgKHRleHR1cmVVbml0ID49IGNhcHMubWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0
cykKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAoaW5mb0xvZykKQEAgLTE2MDgs
MTQgKzE3NzgsNyBAQCB2b2lkIFByb2dyYW06OmdldEFjdGl2ZVVuaWZvcm1CbG9ja05hbWUoR0x1
aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHTHNpemVpIGJ1ZlNpegogICAgICAgICB7CiAgICAgICAg
ICAgICBzdHJpbmcgKz0gQXJyYXlTdHJpbmcodW5pZm9ybUJsb2NrLmFycmF5RWxlbWVudCk7CiAg
ICAgICAgIH0KLQotICAgICAgICBzdHJuY3B5KHVuaWZvcm1CbG9ja05hbWUsIHN0cmluZy5jX3N0
cigpLCBidWZTaXplKTsKLSAgICAgICAgdW5pZm9ybUJsb2NrTmFtZVtidWZTaXplIC0gMV0gPSAn
XDAnOwotCi0gICAgICAgIGlmIChsZW5ndGgpCi0gICAgICAgIHsKLSAgICAgICAgICAgICpsZW5n
dGggPSBzdGF0aWNfY2FzdDxHTHNpemVpPihzdHJsZW4odW5pZm9ybUJsb2NrTmFtZSkpOwotICAg
ICAgICB9CisgICAgICAgIENvcHlTdHJpbmdUb0J1ZmZlcih1bmlmb3JtQmxvY2tOYW1lLCBzdHJp
bmcsIGJ1ZlNpemUsIGxlbmd0aCk7CiAgICAgfQogfQogCkBAIC0xNjQ3LDEyICsxODEwLDEyIEBA
IEdMaW50IFByb2dyYW06OmdldEFjdGl2ZVVuaWZvcm1CbG9ja01heExlbmd0aCgpIGNvbnN0CiBH
THVpbnQgUHJvZ3JhbTo6Z2V0VW5pZm9ybUJsb2NrSW5kZXgoY29uc3Qgc3RkOjpzdHJpbmcgJm5h
bWUpIGNvbnN0CiB7CiAgICAgc2l6ZV90IHN1YnNjcmlwdCAgICAgPSBHTF9JTlZBTElEX0lOREVY
OwotICAgIHN0ZDo6c3RyaW5nIGJhc2VOYW1lID0gZ2w6OlBhcnNlVW5pZm9ybU5hbWUobmFtZSwg
JnN1YnNjcmlwdCk7CisgICAgc3RkOjpzdHJpbmcgYmFzZU5hbWUgPSBQYXJzZVJlc291cmNlTmFt
ZShuYW1lLCAmc3Vic2NyaXB0KTsKIAogICAgIHVuc2lnbmVkIGludCBudW1Vbmlmb3JtQmxvY2tz
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtU3RhdGUubVVuaWZvcm1CbG9ja3Muc2l6ZSgp
KTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG51
bVVuaWZvcm1CbG9ja3M7IGJsb2NrSW5kZXgrKykKICAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpV
bmlmb3JtQmxvY2sgJnVuaWZvcm1CbG9jayA9IG1TdGF0ZS5tVW5pZm9ybUJsb2Nrc1tibG9ja0lu
ZGV4XTsKKyAgICAgICAgY29uc3QgVW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxvY2sgPSBtU3RhdGUu
bVVuaWZvcm1CbG9ja3NbYmxvY2tJbmRleF07CiAgICAgICAgIGlmICh1bmlmb3JtQmxvY2submFt
ZSA9PSBiYXNlTmFtZSkKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgYm9vbCBhcnJheUVs
ZW1lbnRaZXJvID0KQEAgLTE2NzcsNiArMTg0MCw3IEBAIGNvbnN0IFVuaWZvcm1CbG9jayAmUHJv
Z3JhbTo6Z2V0VW5pZm9ybUJsb2NrQnlJbmRleChHTHVpbnQgaW5kZXgpIGNvbnN0CiB2b2lkIFBy
b2dyYW06OmJpbmRVbmlmb3JtQmxvY2soR0x1aW50IHVuaWZvcm1CbG9ja0luZGV4LCBHTHVpbnQg
dW5pZm9ybUJsb2NrQmluZGluZykKIHsKICAgICBtU3RhdGUubVVuaWZvcm1CbG9ja0JpbmRpbmdz
W3VuaWZvcm1CbG9ja0luZGV4XSA9IHVuaWZvcm1CbG9ja0JpbmRpbmc7CisgICAgbVN0YXRlLm1B
Y3RpdmVVbmlmb3JtQmxvY2tCaW5kaW5ncy5zZXQodW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1C
bG9ja0JpbmRpbmcgIT0gMCk7CiAgICAgbVByb2dyYW0tPnNldFVuaWZvcm1CbG9ja0JpbmRpbmco
dW5pZm9ybUJsb2NrSW5kZXgsIHVuaWZvcm1CbG9ja0JpbmRpbmcpOwogfQogCkBAIC0xNzA5LDI0
ICsxODczLDI1IEBAIHZvaWQgUHJvZ3JhbTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nKEdM
dWludCBpbmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpCiB7CiAgICAgaWYgKG1MaW5rZWQp
CiAgICAgewotICAgICAgICBBU1NFUlQoaW5kZXggPCBtU3RhdGUubVRyYW5zZm9ybUZlZWRiYWNr
VmFyeWluZ1ZhcnMuc2l6ZSgpKTsKLSAgICAgICAgY29uc3Qgc2g6OlZhcnlpbmcgJnZhcnlpbmcg
PSBtU3RhdGUubVRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ1ZhcnNbaW5kZXhdOwotICAgICAgICBH
THNpemVpIGxhc3ROYW1lSWR4ID0gc3RkOjptaW4oYnVmU2l6ZSAtIDEsIHN0YXRpY19jYXN0PEdM
c2l6ZWk+KHZhcnlpbmcubmFtZS5sZW5ndGgoKSkpOworICAgICAgICBBU1NFUlQoaW5kZXggPCBt
U3RhdGUubUxpbmtlZFRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3Muc2l6ZSgpKTsKKyAgICAgICAg
Y29uc3QgYXV0byAmdmFyICAgICA9IG1TdGF0ZS5tTGlua2VkVHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5nc1tpbmRleF07CisgICAgICAgIHN0ZDo6c3RyaW5nIHZhck5hbWUgPSB2YXIubmFtZVdpdGhB
cnJheUluZGV4KCk7CisgICAgICAgIEdMc2l6ZWkgbGFzdE5hbWVJZHggPSBzdGQ6Om1pbihidWZT
aXplIC0gMSwgc3RhdGljX2Nhc3Q8R0xzaXplaT4odmFyTmFtZS5sZW5ndGgoKSkpOwogICAgICAg
ICBpZiAobGVuZ3RoKQogICAgICAgICB7CiAgICAgICAgICAgICAqbGVuZ3RoID0gbGFzdE5hbWVJ
ZHg7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHNpemUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
ICpzaXplID0gdmFyeWluZy5lbGVtZW50Q291bnQoKTsKKyAgICAgICAgICAgICpzaXplID0gdmFy
LnNpemUoKTsKICAgICAgICAgfQogICAgICAgICBpZiAodHlwZSkKICAgICAgICAgewotICAgICAg
ICAgICAgKnR5cGUgPSB2YXJ5aW5nLnR5cGU7CisgICAgICAgICAgICAqdHlwZSA9IHZhci50eXBl
OwogICAgICAgICB9CiAgICAgICAgIGlmIChuYW1lKQogICAgICAgICB7Ci0gICAgICAgICAgICBt
ZW1jcHkobmFtZSwgdmFyeWluZy5uYW1lLmNfc3RyKCksIGxhc3ROYW1lSWR4KTsKKyAgICAgICAg
ICAgIG1lbWNweShuYW1lLCB2YXJOYW1lLmNfc3RyKCksIGxhc3ROYW1lSWR4KTsKICAgICAgICAg
ICAgIG5hbWVbbGFzdE5hbWVJZHhdID0gJ1wwJzsKICAgICAgICAgfQogICAgIH0KQEAgLTE3MzYs
NyArMTkwMSw3IEBAIEdMc2l6ZWkgUHJvZ3JhbTo6Z2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5n
Q291bnQoKSBjb25zdAogewogICAgIGlmIChtTGlua2VkKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1TdGF0ZS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFy
cy5zaXplKCkpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8R0xzaXplaT4obVN0YXRlLm1M
aW5rZWRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLnNpemUoKSk7CiAgICAgfQogICAgIGVsc2UK
ICAgICB7CkBAIC0xNzQ5LDkgKzE5MTQsMTAgQEAgR0xzaXplaSBQcm9ncmFtOjpnZXRUcmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdNYXhMZW5ndGgoKSBjb25zdAogICAgIGlmIChtTGlua2VkKQogICAg
IHsKICAgICAgICAgR0xzaXplaSBtYXhTaXplID0gMDsKLSAgICAgICAgZm9yIChjb25zdCBzaDo6
VmFyeWluZyAmdmFyeWluZyA6IG1TdGF0ZS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFycykK
KyAgICAgICAgZm9yIChjb25zdCBhdXRvICZ2YXIgOiBtU3RhdGUubUxpbmtlZFRyYW5zZm9ybUZl
ZWRiYWNrVmFyeWluZ3MpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1heFNpemUgPSBzdGQ6Om1h
eChtYXhTaXplLCBzdGF0aWNfY2FzdDxHTHNpemVpPih2YXJ5aW5nLm5hbWUubGVuZ3RoKCkgKyAx
KSk7CisgICAgICAgICAgICBtYXhTaXplID0KKyAgICAgICAgICAgICAgICBzdGQ6Om1heChtYXhT
aXplLCBzdGF0aWNfY2FzdDxHTHNpemVpPih2YXIubmFtZVdpdGhBcnJheUluZGV4KCkubGVuZ3Ro
KCkgKyAxKSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbWF4U2l6ZTsKQEAgLTE3Njcs
MTAgKzE5MzMsMTEgQEAgR0xlbnVtIFByb2dyYW06OmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVy
TW9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1TdGF0ZS5tVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJN
b2RlOwogfQogCi1ib29sIFByb2dyYW06OmxpbmtWYXJ5aW5ncyhJbmZvTG9nICZpbmZvTG9nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVyICp2ZXJ0ZXhTaGFkZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTaGFkZXIgKmZyYWdtZW50U2hhZGVyKSBj
b25zdAorYm9vbCBQcm9ncmFtOjpsaW5rVmFyeWluZ3MoSW5mb0xvZyAmaW5mb0xvZykgY29uc3QK
IHsKKyAgICBjb25zdCBTaGFkZXIgKnZlcnRleFNoYWRlciAgID0gbVN0YXRlLm1BdHRhY2hlZFZl
cnRleFNoYWRlcjsKKyAgICBjb25zdCBTaGFkZXIgKmZyYWdtZW50U2hhZGVyID0gbVN0YXRlLm1B
dHRhY2hlZEZyYWdtZW50U2hhZGVyOworCiAgICAgQVNTRVJUKHZlcnRleFNoYWRlci0+Z2V0U2hh
ZGVyVmVyc2lvbigpID09IGZyYWdtZW50U2hhZGVyLT5nZXRTaGFkZXJWZXJzaW9uKCkpOwogCiAg
ICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+ICZ2ZXJ0ZXhWYXJ5aW5ncyAgID0gdmVy
dGV4U2hhZGVyLT5nZXRWYXJ5aW5ncygpOwpAQCAtMTgzNSwxNTkgKzIwMDIsNTIgQEAgYm9vbCBQ
cm9ncmFtOjpsaW5rVmFyeWluZ3MoSW5mb0xvZyAmaW5mb0xvZywKICAgICAgICAgfQogICAgIH0K
IAotICAgIC8vIFRPRE8oam1hZGlsbCk6IHZlcmlmeSBubyB1bm1hdGNoZWQgdmVydGV4IHZhcnlp
bmdzPwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgUHJvZ3JhbTo6dmFsaWRhdGVWZXJ0
ZXhBbmRGcmFnbWVudFVuaWZvcm1zKEluZm9Mb2cgJmluZm9Mb2cpIGNvbnN0Ci17Ci0gICAgLy8g
Q2hlY2sgdGhhdCB1bmlmb3JtcyBkZWZpbmVkIGluIHRoZSB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNo
YWRlcnMgYXJlIGlkZW50aWNhbAotICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBMaW5rZWRVbmlm
b3JtPiBsaW5rZWRVbmlmb3JtczsKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6VW5pZm9ybT4g
JnZlcnRleFVuaWZvcm1zID0gbVN0YXRlLm1BdHRhY2hlZFZlcnRleFNoYWRlci0+Z2V0VW5pZm9y
bXMoKTsKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6VW5pZm9ybT4gJmZyYWdtZW50VW5pZm9y
bXMgPQotICAgICAgICBtU3RhdGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXItPmdldFVuaWZvcm1z
KCk7Ci0KLSAgICBmb3IgKGNvbnN0IHNoOjpVbmlmb3JtICZ2ZXJ0ZXhVbmlmb3JtIDogdmVydGV4
VW5pZm9ybXMpCisgICAgaWYgKCFsaW5rVmFsaWRhdGVCdWlsdEluVmFyeWluZ3MoaW5mb0xvZykp
CiAgICAgewotICAgICAgICBsaW5rZWRVbmlmb3Jtc1t2ZXJ0ZXhVbmlmb3JtLm5hbWVdID0gTGlu
a2VkVW5pZm9ybSh2ZXJ0ZXhVbmlmb3JtKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGZvciAoY29uc3Qgc2g6OlVuaWZvcm0gJmZyYWdtZW50VW5pZm9ybSA6IGZyYWdtZW50
VW5pZm9ybXMpCi0gICAgewotICAgICAgICBhdXRvIGVudHJ5ID0gbGlua2VkVW5pZm9ybXMuZmlu
ZChmcmFnbWVudFVuaWZvcm0ubmFtZSk7Ci0gICAgICAgIGlmIChlbnRyeSAhPSBsaW5rZWRVbmlm
b3Jtcy5lbmQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgTGlua2VkVW5pZm9ybSAqdmVydGV4
VW5pZm9ybSAgID0gJmVudHJ5LT5zZWNvbmQ7Ci0gICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmdW5pZm9ybU5hbWUgPSAidW5pZm9ybSAnIiArIHZlcnRleFVuaWZvcm0tPm5hbWUgKyAiJyI7
Ci0gICAgICAgICAgICBpZiAoIWxpbmtWYWxpZGF0ZVVuaWZvcm1zKGluZm9Mb2csIHVuaWZvcm1O
YW1lLCAqdmVydGV4VW5pZm9ybSwgZnJhZ21lbnRVbmlmb3JtKSkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9CisgICAgLy8gVE9ETyhqbWFkaWxsKTogdmVyaWZ5IG5vIHVubWF0Y2hlZCB2ZXJ0ZXggdmFy
eWluZ3M/CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBQcm9ncmFtOjpsaW5rVW5pZm9y
bXMoZ2w6OkluZm9Mb2cgJmluZm9Mb2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6Q2FwcyAmY2FwcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJpbmRp
bmdzICZ1bmlmb3JtQmluZGluZ3MpCitib29sIFByb2dyYW06OmxpbmtVbmlmb3JtcyhJbmZvTG9n
ICZpbmZvTG9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2FwcyAmY2FwcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJpbmRpbmdzICZ1bmlmb3JtTG9jYXRp
b25CaW5kaW5ncykKIHsKLSAgICBpZiAobVN0YXRlLm1BdHRhY2hlZFZlcnRleFNoYWRlciAmJiBt
U3RhdGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXIpCi0gICAgewotICAgICAgICBBU1NFUlQobVN0
YXRlLm1BdHRhY2hlZENvbXB1dGVTaGFkZXIgPT0gbnVsbHB0cik7Ci0gICAgICAgIGlmICghdmFs
aWRhdGVWZXJ0ZXhBbmRGcmFnbWVudFVuaWZvcm1zKGluZm9Mb2cpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBGbGF0dGVu
IHRoZSB1bmlmb3JtcyBsaXN0IChuZXN0ZWQgZmllbGRzKSBpbnRvIGEgc2ltcGxlIGxpc3QgKG5v
IG5lc3RpbmcpLgotICAgIC8vIEFsc28gY2hlY2sgdGhlIG1heGltdW0gdW5pZm9ybSB2ZWN0b3Ig
YW5kIHNhbXBsZXIgY291bnRzLgotICAgIGlmICghZmxhdHRlblVuaWZvcm1zQW5kQ2hlY2tDYXBz
KGNhcHMsIGluZm9Mb2cpKQorICAgIFVuaWZvcm1MaW5rZXIgbGlua2VyKG1TdGF0ZSk7CisgICAg
aWYgKCFsaW5rZXIubGluayhpbmZvTG9nLCBjYXBzLCB1bmlmb3JtTG9jYXRpb25CaW5kaW5ncykp
CiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFpbmRleFVu
aWZvcm1zKGluZm9Mb2csIGNhcHMsIHVuaWZvcm1CaW5kaW5ncykpCi0gICAgewotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGxpbmtlci5nZXRSZXN1bHRzKCZtU3RhdGUubVVuaWZv
cm1zLCAmbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zKTsKKworICAgIGxpbmtTYW1wbGVyQmluZGlu
Z3MoKTsKIAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFByb2dyYW06OmluZGV4VW5pZm9y
bXMoZ2w6OkluZm9Mb2cgJmluZm9Mb2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OkNhcHMgJmNhcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmlu
ZGluZ3MgJnVuaWZvcm1CaW5kaW5ncykKK3ZvaWQgUHJvZ3JhbTo6bGlua1NhbXBsZXJCaW5kaW5n
cygpCiB7Ci0gICAgLy8gVW5pZm9ybXMgYXdhaXRpbmcgYSBsb2NhdGlvbgotICAgIHN0ZDo6dmVj
dG9yPFZhcmlhYmxlTG9jYXRpb24+IHVuYm91bmRVbmlmb3JtczsKLSAgICBzdGQ6Om1hcDxHTHVp
bnQsIFZhcmlhYmxlTG9jYXRpb24+IGJvdW5kVW5pZm9ybXM7Ci0gICAgaW50IG1heFVuaWZvcm1M
b2NhdGlvbiA9IC0xOwotCi0gICAgLy8gR2F0aGVyIGJvdW5kIGFuZCB1bmJvdW5kIHVuaWZvcm1z
Ci0gICAgZm9yIChzaXplX3QgdW5pZm9ybUluZGV4ID0gMDsgdW5pZm9ybUluZGV4IDwgbVN0YXRl
Lm1Vbmlmb3Jtcy5zaXplKCk7IHVuaWZvcm1JbmRleCsrKQotICAgIHsKLSAgICAgICAgY29uc3Qg
Z2w6OkxpbmtlZFVuaWZvcm0gJnVuaWZvcm0gPSBtU3RhdGUubVVuaWZvcm1zW3VuaWZvcm1JbmRl
eF07Ci0KLSAgICAgICAgaWYgKHVuaWZvcm0uaXNCdWlsdEluKCkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGJpbmRpbmdMb2NhdGlv
biA9IHVuaWZvcm1CaW5kaW5ncy5nZXRCaW5kaW5nKHVuaWZvcm0ubmFtZSk7Ci0KLSAgICAgICAg
Ly8gVmVyaWZ5IHRoYXQgdGhpcyBsb2NhdGlvbiBpc24ndCBib3VuZCB0d2ljZQotICAgICAgICBp
ZiAoYmluZGluZ0xvY2F0aW9uICE9IC0xICYmIGJvdW5kVW5pZm9ybXMuZmluZChiaW5kaW5nTG9j
YXRpb24pICE9IGJvdW5kVW5pZm9ybXMuZW5kKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlu
Zm9Mb2cgPDwgIk11bHRpcGxlIHVuaWZvcm1zIGJvdW5kIHRvIGxvY2F0aW9uICIgPDwgYmluZGlu
Z0xvY2F0aW9uIDw8ICIuIjsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGFycmF5SW5kZXggPSAwOyBhcnJheUluZGV4IDwg
dW5pZm9ybS5lbGVtZW50Q291bnQoKTsgYXJyYXlJbmRleCsrKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBWYXJpYWJsZUxvY2F0aW9uIGxvY2F0aW9uKHVuaWZvcm0ubmFtZSwgYXJyYXlJbmRleCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50Pih1bmlmb3JtSW5kZXgpKTsKLQotICAgICAgICAgICAgaWYgKGFycmF5SW5kZXggPT0g
MCAmJiBiaW5kaW5nTG9jYXRpb24gIT0gLTEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgYm91bmRVbmlmb3Jtc1tiaW5kaW5nTG9jYXRpb25dID0gbG9jYXRpb247Ci0gICAgICAgICAg
ICAgICAgbWF4VW5pZm9ybUxvY2F0aW9uICAgICAgICAgICAgID0gc3RkOjptYXgobWF4VW5pZm9y
bUxvY2F0aW9uLCBiaW5kaW5nTG9jYXRpb24pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVuYm91bmRVbmlmb3Jtcy5wdXNo
X2JhY2sobG9jYXRpb24pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAg
Ly8gR2F0aGVyIHRoZSByZXNlcnZlZCBiaW5kaW5ncywgb25lcyB0aGF0IGFyZSBib3VuZCBidXQg
bm90IHJlZmVyZW5jZWQuICBPdGhlciB1bmlmb3JtcyBzaG91bGQKLSAgICAvLyBub3QgYmUgYXNz
aWduZWQgdG8gdGhvc2UgbG9jYXRpb25zLgotICAgIHN0ZDo6c2V0PEdMdWludD4gcmVzZXJ2ZWRM
b2NhdGlvbnM7Ci0gICAgZm9yIChjb25zdCBhdXRvICZiaW5kaW5nIDogdW5pZm9ybUJpbmRpbmdz
KQotICAgIHsKLSAgICAgICAgR0x1aW50IGxvY2F0aW9uID0gYmluZGluZy5zZWNvbmQ7Ci0gICAg
ICAgIGlmIChib3VuZFVuaWZvcm1zLmZpbmQobG9jYXRpb24pID09IGJvdW5kVW5pZm9ybXMuZW5k
KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJlc2VydmVkTG9jYXRpb25zLmluc2VydChsb2Nh
dGlvbik7Ci0gICAgICAgICAgICBtYXhVbmlmb3JtTG9jYXRpb24gPSBzdGQ6Om1heChtYXhVbmlm
b3JtTG9jYXRpb24sIHN0YXRpY19jYXN0PGludD4obG9jYXRpb24pKTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIC8vIE1ha2UgZW5vdWdoIHNwYWNlIGZvciBhbGwgdW5pZm9ybXMsIGJvdW5kIGFu
ZCB1bmJvdW5kCi0gICAgbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zLnJlc2l6ZSgKLSAgICAgICAg
c3RkOjptYXgodW5ib3VuZFVuaWZvcm1zLnNpemUoKSArIGJvdW5kVW5pZm9ybXMuc2l6ZSgpICsg
cmVzZXJ2ZWRMb2NhdGlvbnMuc2l6ZSgpLAotICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxz
aXplX3Q+KG1heFVuaWZvcm1Mb2NhdGlvbiArIDEpKSk7Ci0KLSAgICAvLyBBc3NpZ24gYm91bmQg
dW5pZm9ybXMKLSAgICBmb3IgKGNvbnN0IGF1dG8gJmJvdW5kVW5pZm9ybSA6IGJvdW5kVW5pZm9y
bXMpCisgICAgbVN0YXRlLm1TYW1wbGVyVW5pZm9ybVJhbmdlLmVuZCAgID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgaW50PihtU3RhdGUubVVuaWZvcm1zLnNpemUoKSk7CisgICAgbVN0YXRlLm1TYW1w
bGVyVW5pZm9ybVJhbmdlLnN0YXJ0ID0gbVN0YXRlLm1TYW1wbGVyVW5pZm9ybVJhbmdlLmVuZDsK
KyAgICBhdXRvIHNhbXBsZXJJdGVyICAgICAgICAgICAgICAgICAgPSBtU3RhdGUubVVuaWZvcm1z
LnJiZWdpbigpOworICAgIHdoaWxlIChzYW1wbGVySXRlciAhPSBtU3RhdGUubVVuaWZvcm1zLnJl
bmQoKSAmJiBzYW1wbGVySXRlci0+aXNTYW1wbGVyKCkpCiAgICAgewotICAgICAgICBtU3RhdGUu
bVVuaWZvcm1Mb2NhdGlvbnNbYm91bmRVbmlmb3JtLmZpcnN0XSA9IGJvdW5kVW5pZm9ybS5zZWNv
bmQ7CisgICAgICAgIC0tbVN0YXRlLm1TYW1wbGVyVW5pZm9ybVJhbmdlLnN0YXJ0OworICAgICAg
ICArK3NhbXBsZXJJdGVyOwogICAgIH0KLQotICAgIC8vIEFzc2lnbiByZXNlcnZlZCB1bmlmb3Jt
cwotICAgIGZvciAoY29uc3QgYXV0byAmcmVzZXJ2ZWRMb2NhdGlvbiA6IHJlc2VydmVkTG9jYXRp
b25zKQorICAgIC8vIElmIHVuaWZvcm0gaXMgYSBzYW1wbGVyIHR5cGUsIGluc2VydCBpdCBpbnRv
IHRoZSBtU2FtcGxlckJpbmRpbmdzIGFycmF5LgorICAgIGZvciAodW5zaWduZWQgaW50IHNhbXBs
ZXJJbmRleCA9IG1TdGF0ZS5tU2FtcGxlclVuaWZvcm1SYW5nZS5zdGFydDsKKyAgICAgICAgIHNh
bXBsZXJJbmRleCA8IG1TdGF0ZS5tVW5pZm9ybXMuc2l6ZSgpOyArK3NhbXBsZXJJbmRleCkKICAg
ICB7Ci0gICAgICAgIG1TdGF0ZS5tVW5pZm9ybUxvY2F0aW9uc1tyZXNlcnZlZExvY2F0aW9uXS5p
Z25vcmVkID0gdHJ1ZTsKKyAgICAgICAgY29uc3QgYXV0byAmc2FtcGxlclVuaWZvcm0gPSBtU3Rh
dGUubVVuaWZvcm1zW3NhbXBsZXJJbmRleF07CisgICAgICAgIEdMZW51bSB0ZXh0dXJlVHlwZSAg
ICAgICAgID0gU2FtcGxlclR5cGVUb1RleHR1cmVUeXBlKHNhbXBsZXJVbmlmb3JtLnR5cGUpOwor
ICAgICAgICBtU3RhdGUubVNhbXBsZXJCaW5kaW5ncy5lbXBsYWNlX2JhY2soCisgICAgICAgICAg
ICBTYW1wbGVyQmluZGluZyh0ZXh0dXJlVHlwZSwgc2FtcGxlclVuaWZvcm0uZWxlbWVudENvdW50
KCkpKTsKICAgICB9Ci0KLSAgICAvLyBBc3NpZ24gdW5ib3VuZCB1bmlmb3JtcwotICAgIHNpemVf
dCBuZXh0VW5pZm9ybUxvY2F0aW9uID0gMDsKLSAgICBmb3IgKGNvbnN0IGF1dG8gJnVuYm91bmRV
bmlmb3JtIDogdW5ib3VuZFVuaWZvcm1zKQotICAgIHsKLSAgICAgICAgd2hpbGUgKG1TdGF0ZS5t
VW5pZm9ybUxvY2F0aW9uc1tuZXh0VW5pZm9ybUxvY2F0aW9uXS51c2VkIHx8Ci0gICAgICAgICAg
ICAgICBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbmV4dFVuaWZvcm1Mb2NhdGlvbl0uaWdub3Jl
ZCkKLSAgICAgICAgewotICAgICAgICAgICAgbmV4dFVuaWZvcm1Mb2NhdGlvbisrOwotICAgICAg
ICB9Ci0KLSAgICAgICAgQVNTRVJUKG5leHRVbmlmb3JtTG9jYXRpb24gPCBtU3RhdGUubVVuaWZv
cm1Mb2NhdGlvbnMuc2l6ZSgpKTsKLSAgICAgICAgbVN0YXRlLm1Vbmlmb3JtTG9jYXRpb25zW25l
eHRVbmlmb3JtTG9jYXRpb25dID0gdW5ib3VuZFVuaWZvcm07Ci0gICAgICAgIG5leHRVbmlmb3Jt
TG9jYXRpb24rKzsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBQcm9ncmFt
OjpsaW5rVmFsaWRhdGVJbnRlcmZhY2VCbG9ja0ZpZWxkcyhJbmZvTG9nICZpbmZvTG9nLApAQCAt
MjAxMCwxMiArMjA3MCwxMSBAQCBib29sIFByb2dyYW06OmxpbmtWYWxpZGF0ZUludGVyZmFjZUJs
b2NrRmllbGRzKEluZm9Mb2cgJmluZm9Mb2csCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIERl
dGVybWluZXMgdGhlIG1hcHBpbmcgYmV0d2VlbiBHTCBhdHRyaWJ1dGVzIGFuZCBEaXJlY3QzRCA5
IHZlcnRleCBzdHJlYW0gdXNhZ2UgaW5kaWNlcwotYm9vbCBQcm9ncmFtOjpsaW5rQXR0cmlidXRl
cyhjb25zdCBDb250ZXh0U3RhdGUgJmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEluZm9Mb2cgJmluZm9Mb2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJp
bmRpbmdzICZhdHRyaWJ1dGVCaW5kaW5ncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgU2hhZGVyICp2ZXJ0ZXhTaGFkZXIpCisvLyBBc3NpZ25zIGxvY2F0aW9ucyB0byBhbGwg
YXR0cmlidXRlcyBmcm9tIHRoZSBiaW5kaW5ncyBhbmQgcHJvZ3JhbSBsb2NhdGlvbnMuCitib29s
IFByb2dyYW06OmxpbmtBdHRyaWJ1dGVzKGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0YSwgSW5mb0xv
ZyAmaW5mb0xvZykKIHsKKyAgICBjb25zdCBhdXRvICp2ZXJ0ZXhTaGFkZXIgPSBtU3RhdGUuZ2V0
QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKTsKKwogICAgIHVuc2lnbmVkIGludCB1c2VkTG9jYXRpb25z
ID0gMDsKICAgICBtU3RhdGUubUF0dHJpYnV0ZXMgICAgICAgICA9IHZlcnRleFNoYWRlci0+Z2V0
QWN0aXZlQXR0cmlidXRlcygpOwogICAgIEdMdWludCBtYXhBdHRyaWJzICAgICAgICAgID0gZGF0
YS5nZXRDYXBzKCkubWF4VmVydGV4QXR0cmlidXRlczsKQEAgLTIwMzIsMTAgKzIwOTEsNyBAQCBi
b29sIFByb2dyYW06OmxpbmtBdHRyaWJ1dGVzKGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0YSwKICAg
ICAvLyBMaW5rIGF0dHJpYnV0ZXMgdGhhdCBoYXZlIGEgYmluZGluZyBsb2NhdGlvbgogICAgIGZv
ciAoc2g6OkF0dHJpYnV0ZSAmYXR0cmlidXRlIDogbVN0YXRlLm1BdHRyaWJ1dGVzKQogICAgIHsK
LSAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogZG8gc3RhdGljVXNlIGZpbHRlcmluZyBzdGVwIGhl
cmUsIG9yIG5vdCBhdCBhbGwKLSAgICAgICAgQVNTRVJUKGF0dHJpYnV0ZS5zdGF0aWNVc2UpOwot
Ci0gICAgICAgIGludCBiaW5kaW5nTG9jYXRpb24gPSBhdHRyaWJ1dGVCaW5kaW5ncy5nZXRCaW5k
aW5nKGF0dHJpYnV0ZS5uYW1lKTsKKyAgICAgICAgaW50IGJpbmRpbmdMb2NhdGlvbiA9IG1BdHRy
aWJ1dGVCaW5kaW5ncy5nZXRCaW5kaW5nKGF0dHJpYnV0ZS5uYW1lKTsKICAgICAgICAgaWYgKGF0
dHJpYnV0ZS5sb2NhdGlvbiA9PSAtMSAmJiBiaW5kaW5nTG9jYXRpb24gIT0gLTEpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGF0dHJpYnV0ZS5sb2NhdGlvbiA9IGJpbmRpbmdMb2NhdGlvbjsKQEAg
LTIwODQsOCArMjE0MCw2IEBAIGJvb2wgUHJvZ3JhbTo6bGlua0F0dHJpYnV0ZXMoY29uc3QgQ29u
dGV4dFN0YXRlICZkYXRhLAogICAgIC8vIExpbmsgYXR0cmlidXRlcyB0aGF0IGRvbid0IGhhdmUg
YSBiaW5kaW5nIGxvY2F0aW9uCiAgICAgZm9yIChzaDo6QXR0cmlidXRlICZhdHRyaWJ1dGUgOiBt
U3RhdGUubUF0dHJpYnV0ZXMpCiAgICAgewotICAgICAgICBBU1NFUlQoYXR0cmlidXRlLnN0YXRp
Y1VzZSk7Ci0KICAgICAgICAgLy8gTm90IHNldCBieSBnbEJpbmRBdHRyaWJMb2NhdGlvbiBvciBi
eSBsb2NhdGlvbiBsYXlvdXQgcXVhbGlmaWVyCiAgICAgICAgIGlmIChhdHRyaWJ1dGUubG9jYXRp
b24gPT0gLTEpCiAgICAgICAgIHsKQEAgLTIxMDQsNyArMjE1OCw2IEBAIGJvb2wgUHJvZ3JhbTo6
bGlua0F0dHJpYnV0ZXMoY29uc3QgQ29udGV4dFN0YXRlICZkYXRhLAogCiAgICAgZm9yIChjb25z
dCBzaDo6QXR0cmlidXRlICZhdHRyaWJ1dGUgOiBtU3RhdGUubUF0dHJpYnV0ZXMpCiAgICAgewot
ICAgICAgICBBU1NFUlQoYXR0cmlidXRlLnN0YXRpY1VzZSk7CiAgICAgICAgIEFTU0VSVChhdHRy
aWJ1dGUubG9jYXRpb24gIT0gLTEpOwogICAgICAgICBpbnQgcmVncyA9IFZhcmlhYmxlUmVnaXN0
ZXJDb3VudChhdHRyaWJ1dGUudHlwZSk7CiAKQEAgLTIyMTIsNyArMjI2NSw3IEBAIGJvb2wgUHJv
Z3JhbTo6bGlua1VuaWZvcm1CbG9ja3MoSW5mb0xvZyAmaW5mb0xvZywgY29uc3QgQ2FwcyAmY2Fw
cykKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBQcm9ncmFtOjphcmVNYXRjaGluZ0ludGVy
ZmFjZUJsb2NrcyhnbDo6SW5mb0xvZyAmaW5mb0xvZywKK2Jvb2wgUHJvZ3JhbTo6YXJlTWF0Y2hp
bmdJbnRlcmZhY2VCbG9ja3MoSW5mb0xvZyAmaW5mb0xvZywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZ2ZXJ0ZXhJbnRl
cmZhY2VCbG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc2g6OkludGVyZmFjZUJsb2NrICZmcmFnbWVudEludGVyZmFjZUJsb2NrKSBjb25zdAogewpA
QCAtMjMxMCwyMiArMjM2Myw2IEBAIGJvb2wgUHJvZ3JhbTo6bGlua1ZhbGlkYXRlVmFyaWFibGVz
QmFzZShJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBzdGQ6OnN0cmluZyAmdmFyCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgUHJvZ3JhbTo6bGlua1ZhbGlkYXRlVW5pZm9ybXMoSW5mb0xvZyAm
aW5mb0xvZywgY29uc3Qgc3RkOjpzdHJpbmcgJnVuaWZvcm1OYW1lLCBjb25zdCBzaDo6VW5pZm9y
bSAmdmVydGV4VW5pZm9ybSwgY29uc3Qgc2g6OlVuaWZvcm0gJmZyYWdtZW50VW5pZm9ybSkKLXsK
LSNpZiBBTkdMRV9QUk9HUkFNX0xJTktfVkFMSURBVEVfVU5JRk9STV9QUkVDSVNJT04gPT0gQU5H
TEVfRU5BQkxFRAotICAgIGNvbnN0IGJvb2wgdmFsaWRhdGVQcmVjaXNpb24gPSB0cnVlOwotI2Vs
c2UKLSAgICBjb25zdCBib29sIHZhbGlkYXRlUHJlY2lzaW9uID0gZmFsc2U7Ci0jZW5kaWYKLQot
ICAgIGlmICghbGlua1ZhbGlkYXRlVmFyaWFibGVzQmFzZShpbmZvTG9nLCB1bmlmb3JtTmFtZSwg
dmVydGV4VW5pZm9ybSwgZnJhZ21lbnRVbmlmb3JtLCB2YWxpZGF0ZVByZWNpc2lvbikpCi0gICAg
ewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
IGJvb2wgUHJvZ3JhbTo6bGlua1ZhbGlkYXRlVmFyeWluZ3MoSW5mb0xvZyAmaW5mb0xvZywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZhcnlp
bmdOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaDo6VmFy
eWluZyAmdmVydGV4VmFyeWluZywKQEAgLTIzNTQsOCArMjM5MSw4MCBAQCBib29sIFByb2dyYW06
OmxpbmtWYWxpZGF0ZVZhcnlpbmdzKEluZm9Mb2cgJmluZm9Mb2csCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgUHJvZ3JhbTo6bGlua1ZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2soSW5mb0xv
ZyAmaW5mb0xvZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3Qgc2g6OlZhcnlpbmcgKj4gJnZhcnlpbmdzLAorYm9vbCBQ
cm9ncmFtOjpsaW5rVmFsaWRhdGVCdWlsdEluVmFyeWluZ3MoSW5mb0xvZyAmaW5mb0xvZykgY29u
c3QKK3sKKyAgICBjb25zdCBTaGFkZXIgKnZlcnRleFNoYWRlciAgICAgICAgICAgICAgICAgICAg
ICAgPSBtU3RhdGUubUF0dGFjaGVkVmVydGV4U2hhZGVyOworICAgIGNvbnN0IFNoYWRlciAqZnJh
Z21lbnRTaGFkZXIgICAgICAgICAgICAgICAgICAgICA9IG1TdGF0ZS5tQXR0YWNoZWRGcmFnbWVu
dFNoYWRlcjsKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gJnZlcnRleFZhcnlp
bmdzICAgPSB2ZXJ0ZXhTaGFkZXItPmdldFZhcnlpbmdzKCk7CisgICAgY29uc3Qgc3RkOjp2ZWN0
b3I8c2g6OlZhcnlpbmc+ICZmcmFnbWVudFZhcnlpbmdzID0gZnJhZ21lbnRTaGFkZXItPmdldFZh
cnlpbmdzKCk7CisgICAgaW50IHNoYWRlclZlcnNpb24gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gdmVydGV4U2hhZGVyLT5nZXRTaGFkZXJWZXJzaW9uKCk7CisKKyAgICBpZiAoc2hh
ZGVyVmVyc2lvbiAhPSAxMDApCisgICAgeworICAgICAgICAvLyBPbmx5IEVTU0wgMS4wIGhhcyBy
ZXN0cmljdGlvbnMgb24gbWF0Y2hpbmcgaW5wdXQgYW5kIG91dHB1dCBpbnZhcmlhbmNlCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgZ2xQb3NpdGlvbklzSW52YXJpYW50
ICAgPSBmYWxzZTsKKyAgICBib29sIGdsUG9pbnRTaXplSXNJbnZhcmlhbnQgID0gZmFsc2U7Cisg
ICAgYm9vbCBnbEZyYWdDb29yZElzSW52YXJpYW50ICA9IGZhbHNlOworICAgIGJvb2wgZ2xQb2lu
dENvb3JkSXNJbnZhcmlhbnQgPSBmYWxzZTsKKworICAgIGZvciAoY29uc3Qgc2g6OlZhcnlpbmcg
JnZhcnlpbmcgOiB2ZXJ0ZXhWYXJ5aW5ncykKKyAgICB7CisgICAgICAgIGlmICghdmFyeWluZy5p
c0J1aWx0SW4oKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHZhcnlpbmcubmFtZS5jb21wYXJlKCJnbF9Qb3NpdGlvbiIpID09IDApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGdsUG9zaXRpb25Jc0ludmFyaWFudCA9IHZhcnlpbmcuaXNJ
bnZhcmlhbnQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAodmFyeWluZy5uYW1lLmNvbXBh
cmUoImdsX1BvaW50U2l6ZSIpID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGdsUG9pbnRT
aXplSXNJbnZhcmlhbnQgPSB2YXJ5aW5nLmlzSW52YXJpYW50OworICAgICAgICB9CisgICAgfQor
CisgICAgZm9yIChjb25zdCBzaDo6VmFyeWluZyAmdmFyeWluZyA6IGZyYWdtZW50VmFyeWluZ3Mp
CisgICAgeworICAgICAgICBpZiAoIXZhcnlpbmcuaXNCdWlsdEluKCkpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmICh2YXJ5aW5nLm5hbWUu
Y29tcGFyZSgiZ2xfRnJhZ0Nvb3JkIikgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xG
cmFnQ29vcmRJc0ludmFyaWFudCA9IHZhcnlpbmcuaXNJbnZhcmlhbnQ7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZSBpZiAodmFyeWluZy5uYW1lLmNvbXBhcmUoImdsX1BvaW50Q29vcmQiKSA9PSAw
KQorICAgICAgICB7CisgICAgICAgICAgICBnbFBvaW50Q29vcmRJc0ludmFyaWFudCA9IHZhcnlp
bmcuaXNJbnZhcmlhbnQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUaGVyZSBpcyBzb21l
IGFtYmlndWl0eSBpbiBFU1NMIDEuMDAuMTcgcGFyYWdyYXBoIDQuNi40IGludGVycHJldGF0aW9u
LAorICAgIC8vIGZvciBleGFtcGxlLCBodHRwczovL2N2cy5raHJvbm9zLm9yZy9idWd6aWxsYS9z
aG93X2J1Zy5jZ2k/aWQ9MTM4NDIuCisgICAgLy8gTm90IHJlcXVpcmluZyBpbnZhcmlhbmNlIHRv
IG1hdGNoIGlzIHN1cHBvcnRlZCBieToKKyAgICAvLyBkRVFQLCBXZWJHTCBDVFMsIE5leHVzIDVY
IEdMRVMKKyAgICBpZiAoZ2xGcmFnQ29vcmRJc0ludmFyaWFudCAmJiAhZ2xQb3NpdGlvbklzSW52
YXJpYW50KQorICAgIHsKKyAgICAgICAgaW5mb0xvZyA8PCAiZ2xfRnJhZ0Nvb3JkIGNhbiBvbmx5
IGJlIGRlY2xhcmVkIGludmFyaWFudCBpZiBhbmQgb25seSBpZiBnbF9Qb3NpdGlvbiBpcyAiCisg
ICAgICAgICAgICAgICAgICAgImRlY2xhcmVkIGludmFyaWFudC4iOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorICAgIGlmIChnbFBvaW50Q29vcmRJc0ludmFyaWFudCAmJiAhZ2xQb2lu
dFNpemVJc0ludmFyaWFudCkKKyAgICB7CisgICAgICAgIGluZm9Mb2cgPDwgImdsX1BvaW50Q29v
cmQgY2FuIG9ubHkgYmUgZGVjbGFyZWQgaW52YXJpYW50IGlmIGFuZCBvbmx5IGlmIGdsX1BvaW50
U2l6ZSBpcyAiCisgICAgICAgICAgICAgICAgICAgImRlY2xhcmVkIGludmFyaWFudC4iOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
UHJvZ3JhbTo6bGlua1ZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2soY29uc3QgZ2w6OkNvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElu
Zm9Mb2cgJmluZm9Mb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFByb2dyYW06Ok1lcmdlZFZhcnlpbmdzICZ2YXJ5aW5ncywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ2FwcyAmY2FwcykgY29uc3QK
IHsKICAgICBzaXplX3QgdG90YWxDb21wb25lbnRzID0gMDsKQEAgLTIzNjUsOSArMjQ3NCwxNCBA
QCBib29sIFByb2dyYW06OmxpbmtWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNrKEluZm9Mb2cgJmlu
Zm9Mb2csCiAgICAgZm9yIChjb25zdCBzdGQ6OnN0cmluZyAmdGZWYXJ5aW5nTmFtZSA6IG1TdGF0
ZS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTmFtZXMpCiAgICAgewogICAgICAgICBib29sIGZv
dW5kID0gZmFsc2U7Ci0gICAgICAgIGZvciAoY29uc3Qgc2g6OlZhcnlpbmcgKnZhcnlpbmcgOiB2
YXJ5aW5ncykKKyAgICAgICAgc2l6ZV90IHN1YnNjcmlwdCAgICAgPSBHTF9JTlZBTElEX0lOREVY
OworICAgICAgICBzdGQ6OnN0cmluZyBiYXNlTmFtZSA9IFBhcnNlUmVzb3VyY2VOYW1lKHRmVmFy
eWluZ05hbWUsICZzdWJzY3JpcHQpOworCisgICAgICAgIGZvciAoY29uc3QgYXV0byAmcmVmIDog
dmFyeWluZ3MpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0ZlZhcnlpbmdOYW1lID09IHZh
cnlpbmctPm5hbWUpCisgICAgICAgICAgICBjb25zdCBzaDo6VmFyeWluZyAqdmFyeWluZyA9IHJl
Zi5zZWNvbmQuZ2V0KCk7CisKKyAgICAgICAgICAgIGlmIChiYXNlTmFtZSA9PSB2YXJ5aW5nLT5u
YW1lKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmICh1bmlxdWVOYW1lcy5jb3Vu
dCh0ZlZhcnlpbmdOYW1lKSA+IDApCiAgICAgICAgICAgICAgICAgewpAQCAtMjM3NSwxNiArMjQ4
OSwyOSBAQCBib29sIFByb2dyYW06OmxpbmtWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNrKEluZm9M
b2cgJmluZm9Mb2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgdGZWYXJ5aW5nTmFt
ZSA8PCAiKS4iOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHVuaXF1ZU5hbWVzLmluc2VydCh0ZlZhcnlpbmdOYW1l
KTsKLQotICAgICAgICAgICAgICAgIGlmICh2YXJ5aW5nLT5pc0FycmF5KCkpCisgICAgICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA+PSBWZXJzaW9uKDMsIDEpKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEluY2x1ZGVTYW1lQXJy
YXlFbGVtZW50KHVuaXF1ZU5hbWVzLCB0ZlZhcnlpbmdOYW1lKSkKKyAgICAgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5mb0xvZworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8ICJUd28gdHJhbnNmb3JtIGZlZWRiYWNrIHZhcnlpbmdzIGluY2x1ZGUgdGhl
IHNhbWUgYXJyYXkgZWxlbWVudCAoIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHRm
VmFyeWluZ05hbWUgPDwgIikuIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBlbHNlIGlmICh2YXJ5aW5nLT5pc0FycmF5KCkpCiAgICAgICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgICAgICBpbmZvTG9nIDw8ICJDYXB0dXJlIG9mIGFycmF5cyBpcyB1bmRlZmlu
ZWQgYW5kIG5vdCBzdXBwb3J0ZWQuIjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgIHVuaXF1ZU5hbWVzLmluc2Vy
dCh0ZlZhcnlpbmdOYW1lKTsKKwogICAgICAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IElu
dmVzdGlnYXRlIGltcGxlbWVudGF0aW9uIGxpbWl0cyBvbiBEM0QxMQotICAgICAgICAgICAgICAg
IHNpemVfdCBjb21wb25lbnRDb3VudCA9IGdsOjpWYXJpYWJsZUNvbXBvbmVudENvdW50KHZhcnlp
bmctPnR5cGUpOworICAgICAgICAgICAgICAgIHNpemVfdCBlbGVtZW50Q291bnQgPQorICAgICAg
ICAgICAgICAgICAgICAoKHZhcnlpbmctPmlzQXJyYXkoKSAmJiBzdWJzY3JpcHQgPT0gR0xfSU5W
QUxJRF9JTkRFWCkgPyB2YXJ5aW5nLT5lbGVtZW50Q291bnQoKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OiAxKTsKKyAgICAgICAgICAgICAgICBzaXplX3QgY29tcG9uZW50Q291bnQgPSBWYXJpYWJsZUNv
bXBvbmVudENvdW50KHZhcnlpbmctPnR5cGUpICogZWxlbWVudENvdW50OwogICAgICAgICAgICAg
ICAgIGlmIChtU3RhdGUubVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSA9PSBHTF9TRVBBUkFU
RV9BVFRSSUJTICYmCiAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudENvdW50ID4gY2Fwcy5t
YXhUcmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRlQ29tcG9uZW50cykKICAgICAgICAgICAgICAgICB7
CkBAIC0yMzk5LDE2ICsyNTI2LDE0IEBAIGJvb2wgUHJvZ3JhbTo6bGlua1ZhbGlkYXRlVHJhbnNm
b3JtRmVlZGJhY2soSW5mb0xvZyAmaW5mb0xvZywKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQotCi0gICAgICAgIGlmICh0ZlZhcnlpbmdOYW1lLmZpbmQo
J1snKSAhPSBzdGQ6OnN0cmluZzo6bnBvcykKKyAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVu
dFZlcnNpb24oKSA8IFZlcnNpb24oMywgMSkgJiYKKyAgICAgICAgICAgIHRmVmFyeWluZ05hbWUu
ZmluZCgnWycpICE9IHN0ZDo6c3RyaW5nOjpucG9zKQogICAgICAgICB7CiAgICAgICAgICAgICBp
bmZvTG9nIDw8ICJDYXB0dXJlIG9mIGFycmF5IGVsZW1lbnRzIGlzIHVuZGVmaW5lZCBhbmQgbm90
IHN1cHBvcnRlZC4iOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0KICAg
ICAgICAgLy8gQWxsIHRyYW5zZm9ybSBmZWVkYmFjayB2YXJ5aW5ncyBhcmUgZXhwZWN0ZWQgdG8g
ZXhpc3Qgc2luY2UgcGFja1ZhcnlpbmdzIGNoZWNrcyBmb3IgdGhlbS4KICAgICAgICAgQVNTRVJU
KGZvdW5kKTsKLSAgICAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShmb3VuZCk7CiAgICAg
fQogCiAgICAgaWYgKG1TdGF0ZS5tVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlID09IEdMX0lO
VEVSTEVBVkVEX0FUVFJJQlMgJiYKQEAgLTI0MjMsNDcgKzI1NDgsMTE2IEBAIGJvb2wgUHJvZ3Jh
bTo6bGlua1ZhbGlkYXRlVHJhbnNmb3JtRmVlZGJhY2soSW5mb0xvZyAmaW5mb0xvZywKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBQcm9ncmFtOjpnYXRoZXJUcmFuc2Zvcm1GZWVkYmFja1Zh
cnlpbmdzKGNvbnN0IHN0ZDo6dmVjdG9yPGNvbnN0IHNoOjpWYXJ5aW5nICo+ICZ2YXJ5aW5ncykK
K3ZvaWQgUHJvZ3JhbTo6Z2F0aGVyVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhjb25zdCBQcm9n
cmFtOjpNZXJnZWRWYXJ5aW5ncyAmdmFyeWluZ3MpCiB7CiAgICAgLy8gR2F0aGVyIHRoZSBsaW5r
ZWQgdmFyeWluZ3MgdGhhdCBhcmUgdXNlZCBmb3IgdHJhbnNmb3JtIGZlZWRiYWNrLCB0aGV5IHNo
b3VsZCBhbGwgZXhpc3QuCi0gICAgbVN0YXRlLm1UcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdWYXJz
LmNsZWFyKCk7CisgICAgbVN0YXRlLm1MaW5rZWRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzLmNs
ZWFyKCk7CiAgICAgZm9yIChjb25zdCBzdGQ6OnN0cmluZyAmdGZWYXJ5aW5nTmFtZSA6IG1TdGF0
ZS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTmFtZXMpCiAgICAgewotICAgICAgICBmb3IgKGNv
bnN0IHNoOjpWYXJ5aW5nICp2YXJ5aW5nIDogdmFyeWluZ3MpCisgICAgICAgIHNpemVfdCBzdWJz
Y3JpcHQgICAgID0gR0xfSU5WQUxJRF9JTkRFWDsKKyAgICAgICAgc3RkOjpzdHJpbmcgYmFzZU5h
bWUgPSBQYXJzZVJlc291cmNlTmFtZSh0ZlZhcnlpbmdOYW1lLCAmc3Vic2NyaXB0KTsKKyAgICAg
ICAgZm9yIChjb25zdCBhdXRvICZyZWYgOiB2YXJ5aW5ncykKICAgICAgICAgewotICAgICAgICAg
ICAgaWYgKHRmVmFyeWluZ05hbWUgPT0gdmFyeWluZy0+bmFtZSkKKyAgICAgICAgICAgIGNvbnN0
IHNoOjpWYXJ5aW5nICp2YXJ5aW5nID0gcmVmLnNlY29uZC5nZXQoKTsKKyAgICAgICAgICAgIGlm
IChiYXNlTmFtZSA9PSB2YXJ5aW5nLT5uYW1lKQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIG1TdGF0ZS5tVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nVmFycy5wdXNoX2JhY2soKnZhcnlp
bmcpOworICAgICAgICAgICAgICAgIG1TdGF0ZS5tTGlua2VkVHJhbnNmb3JtRmVlZGJhY2tWYXJ5
aW5ncy5lbXBsYWNlX2JhY2soCisgICAgICAgICAgICAgICAgICAgICp2YXJ5aW5nLCBzdGF0aWNf
Y2FzdDxHTHVpbnQ+KHN1YnNjcmlwdCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQogCi1zdGQ6OnZlY3Rvcjxjb25zdCBzaDo6VmFy
eWluZyAqPiBQcm9ncmFtOjpnZXRNZXJnZWRWYXJ5aW5ncygpIGNvbnN0CitQcm9ncmFtOjpNZXJn
ZWRWYXJ5aW5ncyBQcm9ncmFtOjpnZXRNZXJnZWRWYXJ5aW5ncygpIGNvbnN0CiB7Ci0gICAgc3Rk
OjpzZXQ8c3RkOjpzdHJpbmc+IHVuaXF1ZU5hbWVzOwotICAgIHN0ZDo6dmVjdG9yPGNvbnN0IHNo
OjpWYXJ5aW5nICo+IHZhcnlpbmdzOworICAgIE1lcmdlZFZhcnlpbmdzIG1lcmdlZDsKIAogICAg
IGZvciAoY29uc3Qgc2g6OlZhcnlpbmcgJnZhcnlpbmcgOiBtU3RhdGUubUF0dGFjaGVkVmVydGV4
U2hhZGVyLT5nZXRWYXJ5aW5ncygpKQogICAgIHsKLSAgICAgICAgaWYgKHVuaXF1ZU5hbWVzLmNv
dW50KHZhcnlpbmcubmFtZSkgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgdW5pcXVlTmFt
ZXMuaW5zZXJ0KHZhcnlpbmcubmFtZSk7Ci0gICAgICAgICAgICB2YXJ5aW5ncy5wdXNoX2JhY2so
JnZhcnlpbmcpOwotICAgICAgICB9CisgICAgICAgIG1lcmdlZFt2YXJ5aW5nLm5hbWVdLnZlcnRl
eCA9ICZ2YXJ5aW5nOwogICAgIH0KIAogICAgIGZvciAoY29uc3Qgc2g6OlZhcnlpbmcgJnZhcnlp
bmcgOiBtU3RhdGUubUF0dGFjaGVkRnJhZ21lbnRTaGFkZXItPmdldFZhcnlpbmdzKCkpCiAgICAg
ewotICAgICAgICBpZiAodW5pcXVlTmFtZXMuY291bnQodmFyeWluZy5uYW1lKSA9PSAwKQorICAg
ICAgICBtZXJnZWRbdmFyeWluZy5uYW1lXS5mcmFnbWVudCA9ICZ2YXJ5aW5nOworICAgIH0KKwor
ICAgIHJldHVybiBtZXJnZWQ7Cit9CisKK3N0ZDo6dmVjdG9yPFBhY2tlZFZhcnlpbmc+IFByb2dy
YW06OmdldFBhY2tlZFZhcnlpbmdzKAorICAgIGNvbnN0IFByb2dyYW06Ok1lcmdlZFZhcnlpbmdz
ICZtZXJnZWRWYXJ5aW5ncykgY29uc3QKK3sKKyAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4gJnRmVmFyeWluZ3MgPSBtU3RhdGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTmFt
ZXMoKTsKKyAgICBzdGQ6OnZlY3RvcjxQYWNrZWRWYXJ5aW5nPiBwYWNrZWRWYXJ5aW5nczsKKyAg
ICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gdW5pcXVlRnVsbE5hbWVzOworCisgICAgZm9yIChjb25z
dCBhdXRvICZyZWYgOiBtZXJnZWRWYXJ5aW5ncykKKyAgICB7CisgICAgICAgIGNvbnN0IHNoOjpW
YXJ5aW5nICppbnB1dCAgPSByZWYuc2Vjb25kLnZlcnRleDsKKyAgICAgICAgY29uc3Qgc2g6OlZh
cnlpbmcgKm91dHB1dCA9IHJlZi5zZWNvbmQuZnJhZ21lbnQ7CisKKyAgICAgICAgLy8gT25seSBw
YWNrIHZhcnlpbmdzIHRoYXQgaGF2ZSBhIG1hdGNoZWQgaW5wdXQgb3Igb3V0cHV0LCBwbHVzIHNw
ZWNpYWwgYnVpbHRpbnMuCisgICAgICAgIGlmICgoaW5wdXQgJiYgb3V0cHV0KSB8fCAob3V0cHV0
ICYmIG91dHB1dC0+aXNCdWlsdEluKCkpKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBXaWxs
IGdldCB0aGUgdmVydGV4IHNoYWRlciBpbnRlcnBvbGF0aW9uIGJ5IGRlZmF1bHQuCisgICAgICAg
ICAgICBhdXRvIGludGVycG9sYXRpb24gPSByZWYuc2Vjb25kLmdldCgpLT5pbnRlcnBvbGF0aW9u
OworCisgICAgICAgICAgICAvLyBJbnRlcnBvbGF0aW9uIHF1YWxpZmllcnMgbXVzdCBtYXRjaC4K
KyAgICAgICAgICAgIGlmIChvdXRwdXQtPmlzU3RydWN0KCkpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKCFvdXRwdXQtPmlzQXJyYXkoKSk7CisgICAgICAgICAgICAgICAg
Zm9yIChjb25zdCBhdXRvICZmaWVsZCA6IG91dHB1dC0+ZmllbGRzKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFmaWVsZC5pc1N0cnVjdCgpICYmICFmaWVs
ZC5pc0FycmF5KCkpOworICAgICAgICAgICAgICAgICAgICBwYWNrZWRWYXJ5aW5ncy5wdXNoX2Jh
Y2soUGFja2VkVmFyeWluZyhmaWVsZCwgaW50ZXJwb2xhdGlvbiwgb3V0cHV0LT5uYW1lKSk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIHBhY2tlZFZhcnlpbmdzLnB1c2hfYmFjayhQYWNrZWRW
YXJ5aW5nKCpvdXRwdXQsIGludGVycG9sYXRpb24pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gS2VlcCBUcmFuc2Zvcm0gRkIg
dmFyeWluZ3MgaW4gdGhlIG1lcmdlZCBsaXN0IGFsd2F5cy4KKyAgICAgICAgaWYgKCFpbnB1dCkK
ICAgICAgICAgewotICAgICAgICAgICAgdW5pcXVlTmFtZXMuaW5zZXJ0KHZhcnlpbmcubmFtZSk7
Ci0gICAgICAgICAgICB2YXJ5aW5ncy5wdXNoX2JhY2soJnZhcnlpbmcpOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5nICZ0
ZlZhcnlpbmcgOiB0ZlZhcnlpbmdzKQorICAgICAgICB7CisgICAgICAgICAgICBzaXplX3Qgc3Vi
c2NyaXB0ICAgICA9IEdMX0lOVkFMSURfSU5ERVg7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyBi
YXNlTmFtZSA9IFBhcnNlUmVzb3VyY2VOYW1lKHRmVmFyeWluZywgJnN1YnNjcmlwdCk7CisgICAg
ICAgICAgICBpZiAodW5pcXVlRnVsbE5hbWVzLmNvdW50KHRmVmFyeWluZykgPiAwKQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGJhc2VOYW1lID09IGlucHV0LT5uYW1lKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIC8vIFRyYW5zZm9ybSBmZWVkYmFjayBmb3IgdmFyeWluZyBzdHJ1Y3RzIGlzIHVu
ZGVyc3BlY2lmaWVkLgorICAgICAgICAgICAgICAgIC8vIFNlZSBLaHJvbm9zIGJ1ZyA5ODU2Lgor
ICAgICAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgaG93IHRvIGJlIHNw
ZWMtY29tcGxpYW50IGhlcmUuCisgICAgICAgICAgICAgICAgaWYgKCFpbnB1dC0+aXNTdHJ1Y3Qo
KSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHBhY2tlZFZhcnlpbmdz
LnB1c2hfYmFjayhQYWNrZWRWYXJ5aW5nKCppbnB1dCwgaW5wdXQtPmludGVycG9sYXRpb24pKTsK
KyAgICAgICAgICAgICAgICAgICAgcGFja2VkVmFyeWluZ3MuYmFjaygpLnZlcnRleE9ubHkgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICBwYWNrZWRWYXJ5aW5ncy5iYWNrKCkuYXJyYXlJbmRl
eCA9IHN0YXRpY19jYXN0PEdMdWludD4oc3Vic2NyaXB0KTsKKyAgICAgICAgICAgICAgICAgICAg
dW5pcXVlRnVsbE5hbWVzLmluc2VydCh0ZlZhcnlpbmcpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBpZiAoc3Vic2NyaXB0ID09IEdMX0lOVkFMSURfSU5ERVgpCisgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gdmFyeWluZ3M7
CisgICAgc3RkOjpzb3J0KHBhY2tlZFZhcnlpbmdzLmJlZ2luKCksIHBhY2tlZFZhcnlpbmdzLmVu
ZCgpLCBDb21wYXJlUGFja2VkVmFyeWluZyk7CisKKyAgICByZXR1cm4gcGFja2VkVmFyeWluZ3M7
CiB9CiAKIHZvaWQgUHJvZ3JhbTo6bGlua091dHB1dFZhcmlhYmxlcygpCkBAIC0yNDc1LDE0ICsy
NjY5LDEzIEBAIHZvaWQgUHJvZ3JhbTo6bGlua091dHB1dFZhcmlhYmxlcygpCiAgICAgaWYgKGZy
YWdtZW50U2hhZGVyLT5nZXRTaGFkZXJWZXJzaW9uKCkgPT0gMTAwKQogICAgICAgICByZXR1cm47
CiAKLSAgICBjb25zdCBhdXRvICZzaGFkZXJPdXRwdXRWYXJzID0gZnJhZ21lbnRTaGFkZXItPmdl
dEFjdGl2ZU91dHB1dFZhcmlhYmxlcygpOwotCisgICAgbVN0YXRlLm1PdXRwdXRWYXJpYWJsZXMg
PSBmcmFnbWVudFNoYWRlci0+Z2V0QWN0aXZlT3V0cHV0VmFyaWFibGVzKCk7CiAgICAgLy8gVE9E
TyhqbWFkaWxsKTogYW55IGNhcHMgdmFsaWRhdGlvbiBoZXJlPwogCi0gICAgZm9yICh1bnNpZ25l
ZCBpbnQgb3V0cHV0VmFyaWFibGVJbmRleCA9IDA7IG91dHB1dFZhcmlhYmxlSW5kZXggPCBzaGFk
ZXJPdXRwdXRWYXJzLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBvdXRwdXRWYXJpYWJs
ZUluZGV4ID0gMDsgb3V0cHV0VmFyaWFibGVJbmRleCA8IG1TdGF0ZS5tT3V0cHV0VmFyaWFibGVz
LnNpemUoKTsKICAgICAgICAgIG91dHB1dFZhcmlhYmxlSW5kZXgrKykKICAgICB7Ci0gICAgICAg
IGNvbnN0IHNoOjpPdXRwdXRWYXJpYWJsZSAmb3V0cHV0VmFyaWFibGUgPSBzaGFkZXJPdXRwdXRW
YXJzW291dHB1dFZhcmlhYmxlSW5kZXhdOworICAgICAgICBjb25zdCBzaDo6T3V0cHV0VmFyaWFi
bGUgJm91dHB1dFZhcmlhYmxlID0gbVN0YXRlLm1PdXRwdXRWYXJpYWJsZXNbb3V0cHV0VmFyaWFi
bGVJbmRleF07CiAKICAgICAgICAgLy8gRG9uJ3Qgc3RvcmUgb3V0cHV0cyBmb3IgZ2xfRnJhZ0Rl
cHRoLCBnbF9GcmFnQ29sb3IsIGV0Yy4KICAgICAgICAgaWYgKG91dHB1dFZhcmlhYmxlLmlzQnVp
bHRJbigpKQpAQCAtMjQ5MSwxNTggKzI2ODQsMzggQEAgdm9pZCBQcm9ncmFtOjpsaW5rT3V0cHV0
VmFyaWFibGVzKCkKICAgICAgICAgLy8gU2luY2UgbXVsdGlwbGUgb3V0cHV0IGxvY2F0aW9ucyBt
dXN0IGJlIHNwZWNpZmllZCwgdXNlIDAgZm9yIG5vbi1zcGVjaWZpZWQgbG9jYXRpb25zLgogICAg
ICAgICBpbnQgYmFzZUxvY2F0aW9uID0gKG91dHB1dFZhcmlhYmxlLmxvY2F0aW9uID09IC0xID8g
MCA6IG91dHB1dFZhcmlhYmxlLmxvY2F0aW9uKTsKIAotICAgICAgICBBU1NFUlQob3V0cHV0VmFy
aWFibGUuc3RhdGljVXNlKTsKLQogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBlbGVtZW50SW5k
ZXggPSAwOyBlbGVtZW50SW5kZXggPCBvdXRwdXRWYXJpYWJsZS5lbGVtZW50Q291bnQoKTsKICAg
ICAgICAgICAgICBlbGVtZW50SW5kZXgrKykKICAgICAgICAgewogICAgICAgICAgICAgY29uc3Qg
aW50IGxvY2F0aW9uID0gYmFzZUxvY2F0aW9uICsgZWxlbWVudEluZGV4OwotICAgICAgICAgICAg
QVNTRVJUKG1TdGF0ZS5tT3V0cHV0VmFyaWFibGVzLmNvdW50KGxvY2F0aW9uKSA9PSAwKTsKKyAg
ICAgICAgICAgIEFTU0VSVChtU3RhdGUubU91dHB1dExvY2F0aW9ucy5jb3VudChsb2NhdGlvbikg
PT0gMCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZWxlbWVudCA9IG91dHB1dFZhcmlhYmxl
LmlzQXJyYXkoKSA/IGVsZW1lbnRJbmRleCA6IEdMX0lOVkFMSURfSU5ERVg7Ci0gICAgICAgICAg
ICBtU3RhdGUubU91dHB1dFZhcmlhYmxlc1tsb2NhdGlvbl0gPQorICAgICAgICAgICAgbVN0YXRl
Lm1PdXRwdXRMb2NhdGlvbnNbbG9jYXRpb25dID0KICAgICAgICAgICAgICAgICBWYXJpYWJsZUxv
Y2F0aW9uKG91dHB1dFZhcmlhYmxlLm5hbWUsIGVsZW1lbnQsIG91dHB1dFZhcmlhYmxlSW5kZXgp
OwogICAgICAgICB9CiAgICAgfQogfQogCi1ib29sIFByb2dyYW06OmZsYXR0ZW5Vbmlmb3Jtc0Fu
ZENoZWNrQ2Fwc0ZvclNoYWRlcihjb25zdCBnbDo6U2hhZGVyICZzaGFkZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbWF4VW5pZm9y
bUNvbXBvbmVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgbWF4VGV4dHVyZUltYWdlVW5pdHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmY29tcG9u
ZW50c0Vycm9yTWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzYW1wbGVyRXJyb3JNZXNzYWdlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0
b3I8TGlua2VkVW5pZm9ybT4gJnNhbXBsZXJVbmlmb3JtcywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZm9Mb2cgJmluZm9Mb2cpCit2b2lkIFBy
b2dyYW06OnNldFVuaWZvcm1WYWx1ZXNGcm9tQmluZGluZ1F1YWxpZmllcnMoKQogewotICAgIFZl
Y3RvckFuZFNhbXBsZXJDb3VudCB2YXNDb3VudDsKLSAgICBmb3IgKGNvbnN0IHNoOjpVbmlmb3Jt
ICZ1bmlmb3JtIDogc2hhZGVyLmdldFVuaWZvcm1zKCkpCisgICAgZm9yICh1bnNpZ25lZCBpbnQg
c2FtcGxlckluZGV4ID0gbVN0YXRlLm1TYW1wbGVyVW5pZm9ybVJhbmdlLnN0YXJ0OworICAgICAg
ICAgc2FtcGxlckluZGV4IDwgbVN0YXRlLm1TYW1wbGVyVW5pZm9ybVJhbmdlLmVuZDsgKytzYW1w
bGVySW5kZXgpCiAgICAgewotICAgICAgICBpZiAodW5pZm9ybS5zdGF0aWNVc2UpCisgICAgICAg
IGNvbnN0IGF1dG8gJnNhbXBsZXJVbmlmb3JtID0gbVN0YXRlLm1Vbmlmb3Jtc1tzYW1wbGVySW5k
ZXhdOworICAgICAgICBpZiAoc2FtcGxlclVuaWZvcm0uYmluZGluZyAhPSAtMSkKICAgICAgICAg
ewotICAgICAgICAgICAgdmFzQ291bnQgKz0gZmxhdHRlblVuaWZvcm0odW5pZm9ybSwgdW5pZm9y
bS5uYW1lLCAmc2FtcGxlclVuaWZvcm1zKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICh2
YXNDb3VudC52ZWN0b3JDb3VudCA+IG1heFVuaWZvcm1Db21wb25lbnRzKQotICAgIHsKLSAgICAg
ICAgaW5mb0xvZyA8PCBjb21wb25lbnRzRXJyb3JNZXNzYWdlIDw8IG1heFVuaWZvcm1Db21wb25l
bnRzIDw8ICIpLiI7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAodmFz
Q291bnQuc2FtcGxlckNvdW50ID4gbWF4VGV4dHVyZUltYWdlVW5pdHMpCi0gICAgewotICAgICAg
ICBpbmZvTG9nIDw8IHNhbXBsZXJFcnJvck1lc3NhZ2UgPDwgbWF4VGV4dHVyZUltYWdlVW5pdHMg
PDwgIikuIjsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVl
OwotfQotCi1ib29sIFByb2dyYW06OmZsYXR0ZW5Vbmlmb3Jtc0FuZENoZWNrQ2Fwcyhjb25zdCBD
YXBzICZjYXBzLCBJbmZvTG9nICZpbmZvTG9nKQotewotICAgIHN0ZDo6dmVjdG9yPExpbmtlZFVu
aWZvcm0+IHNhbXBsZXJVbmlmb3JtczsKLQotICAgIGlmIChtU3RhdGUubUF0dGFjaGVkQ29tcHV0
ZVNoYWRlcikKLSAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpTaGFkZXIgKmNvbXB1dGVTaGFkZXIg
PSBtU3RhdGUuZ2V0QXR0YWNoZWRDb21wdXRlU2hhZGVyKCk7Ci0KLSAgICAgICAgLy8gVE9ETyAo
bXJhZGV2KTogY2hlY2sgd2hldGhlciB3ZSBuZWVkIGZpbmVyLWdyYWluZWQgY29tcG9uZW50IGNv
dW50aW5nCi0gICAgICAgIGlmICghZmxhdHRlblVuaWZvcm1zQW5kQ2hlY2tDYXBzRm9yU2hhZGVy
KAotICAgICAgICAgICAgICAgICpjb21wdXRlU2hhZGVyLCBjYXBzLm1heENvbXB1dGVVbmlmb3Jt
Q29tcG9uZW50cyAvIDQsCi0gICAgICAgICAgICAgICAgY2Fwcy5tYXhDb21wdXRlVGV4dHVyZUlt
YWdlVW5pdHMsCi0gICAgICAgICAgICAgICAgIkNvbXB1dGUgc2hhZGVyIGFjdGl2ZSB1bmlmb3Jt
cyBleGNlZWQgTUFYX0NPTVBVVEVfVU5JRk9STV9DT01QT05FTlRTICgiLAotICAgICAgICAgICAg
ICAgICJDb21wdXRlIHNoYWRlciBzYW1wbGVyIGNvdW50IGV4Y2VlZHMgTUFYX0NPTVBVVEVfVEVY
VFVSRV9JTUFHRV9VTklUUyAoIiwKLSAgICAgICAgICAgICAgICBzYW1wbGVyVW5pZm9ybXMsIGlu
Zm9Mb2cpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgY29uc3QgZ2w6OlNoYWRlciAqdmVydGV4
U2hhZGVyID0gbVN0YXRlLmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCk7Ci0KLSAgICAgICAgaWYg
KCFmbGF0dGVuVW5pZm9ybXNBbmRDaGVja0NhcHNGb3JTaGFkZXIoCi0gICAgICAgICAgICAgICAg
KnZlcnRleFNoYWRlciwgY2Fwcy5tYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycywgY2Fwcy5tYXhWZXJ0
ZXhUZXh0dXJlSW1hZ2VVbml0cywKLSAgICAgICAgICAgICAgICAiVmVydGV4IHNoYWRlciBhY3Rp
dmUgdW5pZm9ybXMgZXhjZWVkIE1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTICgiLAotICAgICAg
ICAgICAgICAgICJWZXJ0ZXggc2hhZGVyIHNhbXBsZXIgY291bnQgZXhjZWVkcyBNQVhfVkVSVEVY
X1RFWFRVUkVfSU1BR0VfVU5JVFMgKCIsCi0gICAgICAgICAgICAgICAgc2FtcGxlclVuaWZvcm1z
LCBpbmZvTG9nKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0gICAgICAgIGNvbnN0IGdsOjpTaGFkZXIgKmZyYWdtZW50U2hhZGVyID0gbVN0YXRlLmdl
dEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIoKTsKLQotICAgICAgICBpZiAoIWZsYXR0ZW5Vbmlmb3Jt
c0FuZENoZWNrQ2Fwc0ZvclNoYWRlcigKLSAgICAgICAgICAgICAgICAqZnJhZ21lbnRTaGFkZXIs
IGNhcHMubWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycywgY2Fwcy5tYXhUZXh0dXJlSW1hZ2VVbml0
cywKLSAgICAgICAgICAgICAgICAiRnJhZ21lbnQgc2hhZGVyIGFjdGl2ZSB1bmlmb3JtcyBleGNl
ZWQgTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUyAoIiwKLSAgICAgICAgICAgICAgICAiRnJh
Z21lbnQgc2hhZGVyIHNhbXBsZXIgY291bnQgZXhjZWVkcyBNQVhfVEVYVFVSRV9JTUFHRV9VTklU
UyAoIiwgc2FtcGxlclVuaWZvcm1zLAotICAgICAgICAgICAgICAgIGluZm9Mb2cpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBt
U2FtcGxlclVuaWZvcm1SYW5nZS5zdGFydCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obVN0
YXRlLm1Vbmlmb3Jtcy5zaXplKCkpOwotICAgIG1TYW1wbGVyVW5pZm9ybVJhbmdlLmVuZCA9Ci0g
ICAgICAgIG1TYW1wbGVyVW5pZm9ybVJhbmdlLnN0YXJ0ICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50PihzYW1wbGVyVW5pZm9ybXMuc2l6ZSgpKTsKLQotICAgIG1TdGF0ZS5tVW5pZm9ybXMuaW5z
ZXJ0KG1TdGF0ZS5tVW5pZm9ybXMuZW5kKCksIHNhbXBsZXJVbmlmb3Jtcy5iZWdpbigpLCBzYW1w
bGVyVW5pZm9ybXMuZW5kKCkpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVByb2dyYW06OlZl
Y3RvckFuZFNhbXBsZXJDb3VudCBQcm9ncmFtOjpmbGF0dGVuVW5pZm9ybShjb25zdCBzaDo6U2hh
ZGVyVmFyaWFibGUgJnVuaWZvcm0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZ1bGxOYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVj
dG9yPExpbmtlZFVuaWZvcm0+ICpzYW1wbGVyVW5pZm9ybXMpCi17Ci0gICAgVmVjdG9yQW5kU2Ft
cGxlckNvdW50IHZlY3RvckFuZFNhbXBsZXJDb3VudDsKLQotICAgIGlmICh1bmlmb3JtLmlzU3Ry
dWN0KCkpCi0gICAgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBlbGVtZW50SW5kZXggPSAw
OyBlbGVtZW50SW5kZXggPCB1bmlmb3JtLmVsZW1lbnRDb3VudCgpOyBlbGVtZW50SW5kZXgrKykK
LSAgICAgICAgewotICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmVsZW1lbnRTdHJpbmcg
PSAodW5pZm9ybS5pc0FycmF5KCkgPyBBcnJheVN0cmluZyhlbGVtZW50SW5kZXgpIDogIiIpOwot
Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBmaWVsZEluZGV4ID0gMDsgZmllbGRJbmRleCA8IHVu
aWZvcm0uZmllbGRzLnNpemUoKTsgZmllbGRJbmRleCsrKQorICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24gPSBtU3RhdGUuZ2V0VW5pZm9ybUxvY2F0aW9uKHNhbXBsZXJVbmlmb3JtLm5hbWUpOwor
ICAgICAgICAgICAgQVNTRVJUKGxvY2F0aW9uICE9IC0xKTsKKyAgICAgICAgICAgIHN0ZDo6dmVj
dG9yPEdMaW50PiBib3VuZFRleHR1cmVVbml0czsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aW50IGVsZW1lbnRJbmRleCA9IDA7IGVsZW1lbnRJbmRleCA8IHNhbXBsZXJVbmlmb3JtLmVsZW1l
bnRDb3VudCgpOworICAgICAgICAgICAgICAgICArK2VsZW1lbnRJbmRleCkKICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJmZpZWxkICA9IHVu
aWZvcm0uZmllbGRzW2ZpZWxkSW5kZXhdOwotICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZmaWVsZEZ1bGxOYW1lID0gKGZ1bGxOYW1lICsgZWxlbWVudFN0cmluZyArICIuIiArIGZp
ZWxkLm5hbWUpOwotCi0gICAgICAgICAgICAgICAgdmVjdG9yQW5kU2FtcGxlckNvdW50ICs9IGZs
YXR0ZW5Vbmlmb3JtKGZpZWxkLCBmaWVsZEZ1bGxOYW1lLCBzYW1wbGVyVW5pZm9ybXMpOworICAg
ICAgICAgICAgICAgIGJvdW5kVGV4dHVyZVVuaXRzLnB1c2hfYmFjayhzYW1wbGVyVW5pZm9ybS5i
aW5kaW5nICsgZWxlbWVudEluZGV4KTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNldFVu
aWZvcm0xaXYobG9jYXRpb24sIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGJvdW5kVGV4dHVyZVVuaXRz
LnNpemUoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kVGV4dHVyZVVuaXRzLmRh
dGEoKSk7CiAgICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdmVjdG9yQW5kU2FtcGxlckNvdW50
OwogICAgIH0KLQotICAgIC8vIE5vdCBhIHN0cnVjdAotICAgIGJvb2wgaXNTYW1wbGVyID0gSXNT
YW1wbGVyVHlwZSh1bmlmb3JtLnR5cGUpOwotICAgIGlmICghVW5pZm9ybUluTGlzdChtU3RhdGUu
Z2V0VW5pZm9ybXMoKSwgZnVsbE5hbWUpICYmCi0gICAgICAgICFVbmlmb3JtSW5MaXN0KCpzYW1w
bGVyVW5pZm9ybXMsIGZ1bGxOYW1lKSkKLSAgICB7Ci0gICAgICAgIGdsOjpMaW5rZWRVbmlmb3Jt
IGxpbmtlZFVuaWZvcm0odW5pZm9ybS50eXBlLCB1bmlmb3JtLnByZWNpc2lvbiwgZnVsbE5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pZm9ybS5hcnJheVNp
emUsIC0xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoOjpCbG9j
a01lbWJlckluZm86OmdldERlZmF1bHRCbG9ja0luZm8oKSk7Ci0gICAgICAgIGxpbmtlZFVuaWZv
cm0uc3RhdGljVXNlID0gdHJ1ZTsKLQotICAgICAgICAvLyBTdG9yZSBzYW1wbGVyIHVuaWZvcm1z
IHNlcGFyYXRlbHksIHNvIHdlJ2xsIGFwcGVuZCB0aGVtIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3Qu
Ci0gICAgICAgIGlmIChpc1NhbXBsZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNhbXBsZXJV
bmlmb3Jtcy0+cHVzaF9iYWNrKGxpbmtlZFVuaWZvcm0pOwotICAgICAgICB9Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgewotICAgICAgICAgICAgbVN0YXRlLm1Vbmlmb3Jtcy5wdXNoX2JhY2sobGlu
a2VkVW5pZm9ybSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBpbnQgZWxlbWVu
dENvdW50ICAgICAgICAgID0gdW5pZm9ybS5lbGVtZW50Q291bnQoKTsKLQotICAgIC8vIFNhbXBs
ZXJzIGFyZW4ndCAicmVhbCIgdW5pZm9ybXMsIHNvIHRoZXkgZG9uJ3QgY291bnQgdG93YXJkcyBy
ZWdpc3RlciB1c2FnZS4KLSAgICAvLyBMaWtld2lzZSwgZG9uJ3QgY291bnQgInJlYWwiIHVuaWZv
cm1zIHRvd2FyZHMgc2FtcGxlciBjb3VudC4KLSAgICB2ZWN0b3JBbmRTYW1wbGVyQ291bnQudmVj
dG9yQ291bnQgPQotICAgICAgICAoaXNTYW1wbGVyID8gMCA6IChWYXJpYWJsZVJlZ2lzdGVyQ291
bnQodW5pZm9ybS50eXBlKSAqIGVsZW1lbnRDb3VudCkpOwotICAgIHZlY3RvckFuZFNhbXBsZXJD
b3VudC5zYW1wbGVyQ291bnQgPSAoaXNTYW1wbGVyID8gZWxlbWVudENvdW50IDogMCk7Ci0KLSAg
ICByZXR1cm4gdmVjdG9yQW5kU2FtcGxlckNvdW50OwogfQogCiB2b2lkIFByb2dyYW06OmdhdGhl
ckludGVyZmFjZUJsb2NrSW5mbygpCkBAIC0yNjUxLDcgKzI3MjQsNyBAQCB2b2lkIFByb2dyYW06
OmdhdGhlckludGVyZmFjZUJsb2NrSW5mbygpCiAKICAgICBpZiAobVN0YXRlLm1BdHRhY2hlZENv
bXB1dGVTaGFkZXIpCiAgICAgewotICAgICAgICBjb25zdCBnbDo6U2hhZGVyICpjb21wdXRlU2hh
ZGVyID0gbVN0YXRlLmdldEF0dGFjaGVkQ29tcHV0ZVNoYWRlcigpOworICAgICAgICBjb25zdCBT
aGFkZXIgKmNvbXB1dGVTaGFkZXIgPSBtU3RhdGUuZ2V0QXR0YWNoZWRDb21wdXRlU2hhZGVyKCk7
CiAKICAgICAgICAgZm9yIChjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmNvbXB1dGVCbG9jayA6
IGNvbXB1dGVTaGFkZXItPmdldEludGVyZmFjZUJsb2NrcygpKQogICAgICAgICB7CkBAIC0yNjYw
LDcgKzI3MzMsNyBAQCB2b2lkIFByb2dyYW06OmdhdGhlckludGVyZmFjZUJsb2NrSW5mbygpCiAg
ICAgICAgICAgICBpZiAoIWNvbXB1dGVCbG9jay5zdGF0aWNVc2UgJiYgY29tcHV0ZUJsb2NrLmxh
eW91dCA9PSBzaDo6QkxPQ0tMQVlPVVRfUEFDS0VEKQogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgICAgICBmb3IgKGdsOjpVbmlmb3JtQmxvY2sgJmJsb2NrIDogbVN0YXRlLm1V
bmlmb3JtQmxvY2tzKQorICAgICAgICAgICAgZm9yIChVbmlmb3JtQmxvY2sgJmJsb2NrIDogbVN0
YXRlLm1Vbmlmb3JtQmxvY2tzKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmIChi
bG9jay5uYW1lID09IGNvbXB1dGVCbG9jay5uYW1lKQogICAgICAgICAgICAgICAgIHsKQEAgLTI2
NzUsNyArMjc0OCw3IEBAIHZvaWQgUHJvZ3JhbTo6Z2F0aGVySW50ZXJmYWNlQmxvY2tJbmZvKCkK
IAogICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiB2aXNpdGVkTGlzdDsKIAotICAgIGNvbnN0IGds
OjpTaGFkZXIgKnZlcnRleFNoYWRlciA9IG1TdGF0ZS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigp
OworICAgIGNvbnN0IFNoYWRlciAqdmVydGV4U2hhZGVyID0gbVN0YXRlLmdldEF0dGFjaGVkVmVy
dGV4U2hhZGVyKCk7CiAKICAgICBmb3IgKGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmdmVydGV4
QmxvY2sgOiB2ZXJ0ZXhTaGFkZXItPmdldEludGVyZmFjZUJsb2NrcygpKQogICAgIHsKQEAgLTI2
OTAsNyArMjc2Myw3IEBAIHZvaWQgUHJvZ3JhbTo6Z2F0aGVySW50ZXJmYWNlQmxvY2tJbmZvKCkK
ICAgICAgICAgdmlzaXRlZExpc3QuaW5zZXJ0KHZlcnRleEJsb2NrLm5hbWUpOwogICAgIH0KIAot
ICAgIGNvbnN0IGdsOjpTaGFkZXIgKmZyYWdtZW50U2hhZGVyID0gbVN0YXRlLmdldEF0dGFjaGVk
RnJhZ21lbnRTaGFkZXIoKTsKKyAgICBjb25zdCBTaGFkZXIgKmZyYWdtZW50U2hhZGVyID0gbVN0
YXRlLmdldEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIoKTsKIAogICAgIGZvciAoY29uc3Qgc2g6Oklu
dGVyZmFjZUJsb2NrICZmcmFnbWVudEJsb2NrIDogZnJhZ21lbnRTaGFkZXItPmdldEludGVyZmFj
ZUJsb2NrcygpKQogICAgIHsKQEAgLTI3MDAsNyArMjc3Myw3IEBAIHZvaWQgUHJvZ3JhbTo6Z2F0
aGVySW50ZXJmYWNlQmxvY2tJbmZvKCkKIAogICAgICAgICBpZiAodmlzaXRlZExpc3QuY291bnQo
ZnJhZ21lbnRCbG9jay5uYW1lKSA+IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoZ2w6
OlVuaWZvcm1CbG9jayAmYmxvY2sgOiBtU3RhdGUubVVuaWZvcm1CbG9ja3MpCisgICAgICAgICAg
ICBmb3IgKFVuaWZvcm1CbG9jayAmYmxvY2sgOiBtU3RhdGUubVVuaWZvcm1CbG9ja3MpCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKGJsb2NrLm5hbWUgPT0gZnJhZ21lbnRCbG9j
ay5uYW1lKQogICAgICAgICAgICAgICAgIHsKQEAgLTI3NDMsNyArMjgxNiw3IEBAIHZvaWQgUHJv
Z3JhbTo6ZGVmaW5lVW5pZm9ybUJsb2NrTWVtYmVycyhjb25zdCBzdGQ6OnZlY3RvcjxWYXJUPiAm
ZmllbGRzLAogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCi0gICAg
ICAgICAgICBMaW5rZWRVbmlmb3JtIG5ld1VuaWZvcm0oZmllbGQudHlwZSwgZmllbGQucHJlY2lz
aW9uLCBmdWxsTmFtZSwgZmllbGQuYXJyYXlTaXplLAorICAgICAgICAgICAgTGlua2VkVW5pZm9y
bSBuZXdVbmlmb3JtKGZpZWxkLnR5cGUsIGZpZWxkLnByZWNpc2lvbiwgZnVsbE5hbWUsIGZpZWxk
LmFycmF5U2l6ZSwgLTEsIC0xLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJsb2NrSW5kZXgsIG1lbWJlckluZm8pOwogCiAgICAgICAgICAgICAvLyBTaW5jZSBibG9jayB1
bmlmb3JtcyBoYXZlIG5vIGxvY2F0aW9uLCB3ZSBkb24ndCBuZWVkIHRvIHN0b3JlIHRoZW0gaW4g
dGhlIHVuaWZvcm0KQEAgLTI3NTksNyArMjgzMiwxMyBAQCB2b2lkIFByb2dyYW06OmRlZmluZVVu
aWZvcm1CbG9jayhjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmludGVyZmFjZUJsb2NrLCBHTGVu
dQogICAgIHNpemVfdCBibG9ja1NpemUgPSAwOwogCiAgICAgLy8gRG9uJ3QgZGVmaW5lIHRoaXMg
YmxvY2sgYXQgYWxsIGlmIGl0J3Mgbm90IGFjdGl2ZSBpbiB0aGUgaW1wbGVtZW50YXRpb24uCi0g
ICAgaWYgKCFtUHJvZ3JhbS0+Z2V0VW5pZm9ybUJsb2NrU2l6ZShpbnRlcmZhY2VCbG9jay5uYW1l
LCAmYmxvY2tTaXplKSkKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBibG9ja05hbWVTdHI7CisgICAg
YmxvY2tOYW1lU3RyIDw8IGludGVyZmFjZUJsb2NrLm5hbWU7CisgICAgaWYgKGludGVyZmFjZUJs
b2NrLmFycmF5U2l6ZSA+IDApCisgICAgeworICAgICAgICBibG9ja05hbWVTdHIgPDwgIlswXSI7
CisgICAgfQorICAgIGlmICghbVByb2dyYW0tPmdldFVuaWZvcm1CbG9ja1NpemUoYmxvY2tOYW1l
U3RyLnN0cigpLCAmYmxvY2tTaXplKSkKICAgICB7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0yODA1LDE1ICsyODg0LDEwIEBAIHZvaWQgUHJvZ3JhbTo6ZGVmaW5lVW5pZm9ybUJsb2NrKGNv
bnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmaW50ZXJmYWNlQmxvY2ssIEdMZW51CiAgICAgICAgICAg
ICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8v
IFRPRE8oam1hZGlsbCk6IERldGVybWluZSBpZiB3ZSBjYW4gZXZlciBoYXZlIGFuIGluYWN0aXZl
IGFycmF5IGVsZW1lbnQgYmxvY2suCi0gICAgICAgICAgICBzaXplX3QgYmxvY2tFbGVtZW50U2l6
ZSA9IDA7Ci0gICAgICAgICAgICBpZiAoIW1Qcm9ncmFtLT5nZXRVbmlmb3JtQmxvY2tTaXplKGJs
b2NrLm5hbWVXaXRoQXJyYXlJbmRleCgpLCAmYmxvY2tFbGVtZW50U2l6ZSkpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIEFTU0VSVChibG9ja0VsZW1lbnRTaXplID09IGJsb2NrU2l6ZSk7Ci0gICAgICAgICAgICBi
bG9jay5kYXRhU2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oYmxvY2tFbGVtZW50U2l6
ZSk7CisgICAgICAgICAgICAvLyBTaW5jZSBhbGwgYmxvY2sgZWxlbWVudHMgaW4gYW4gYXJyYXkg
c2hhcmUgdGhlIHNhbWUgYWN0aXZlIHVuaWZvcm1zLCB0aGV5IHdpbGwgYWxsIGJlCisgICAgICAg
ICAgICAvLyBhY3RpdmUgb25jZSBhbnkgdW5pZm9ybSBtZW1iZXIgaXMgdXNlZC4gU28sIHNpbmNl
IGludGVyZmFjZUJsb2NrLm5hbWVbMF0gd2FzIGFjdGl2ZSwKKyAgICAgICAgICAgIC8vIGhlcmUg
d2Ugd2lsbCBhZGQgZXZlcnkgYmxvY2sgZWxlbWVudCBpbiB0aGUgYXJyYXkuCisgICAgICAgICAg
ICBibG9jay5kYXRhU2l6ZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oYmxvY2tTaXplKTsK
ICAgICAgICAgICAgIG1TdGF0ZS5tVW5pZm9ybUJsb2Nrcy5wdXNoX2JhY2soYmxvY2spOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMjg0OCw1MiArMjkyMiw5NSBAQCB2b2lkIFByb2dyYW06OmRlZmlu
ZVVuaWZvcm1CbG9jayhjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmludGVyZmFjZUJsb2NrLCBH
TGVudQogICAgIH0KIH0KIAordGVtcGxhdGUgPD4KK3ZvaWQgUHJvZ3JhbTo6dXBkYXRlU2FtcGxl
clVuaWZvcm0oY29uc3QgVmFyaWFibGVMb2NhdGlvbiAmbG9jYXRpb25JbmZvLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpkZXN0UG9pbnRlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjbGFtcGVkQ291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2KQoreworICAg
IC8vIEludmFsaWRhdGUgdGhlIHZhbGlkYXRpb24gY2FjaGUgb25seSBpZiB3ZSBtb2RpZnkgdGhl
IHNhbXBsZXIgZGF0YS4KKyAgICBpZiAobVN0YXRlLmlzU2FtcGxlclVuaWZvcm1JbmRleChsb2Nh
dGlvbkluZm8uaW5kZXgpICYmCisgICAgICAgIG1lbWNtcChkZXN0UG9pbnRlciwgdiwgc2l6ZW9m
KEdMaW50KSAqIGNsYW1wZWRDb3VudCkgIT0gMCkKKyAgICB7CisgICAgICAgIEdMdWludCBzYW1w
bGVySW5kZXggPSBtU3RhdGUuZ2V0U2FtcGxlckluZGV4RnJvbVVuaWZvcm1JbmRleChsb2NhdGlv
bkluZm8uaW5kZXgpOworICAgICAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+ICpib3VuZFRleHR1cmVV
bml0cyA9CisgICAgICAgICAgICAmbVN0YXRlLm1TYW1wbGVyQmluZGluZ3Nbc2FtcGxlckluZGV4
XS5ib3VuZFRleHR1cmVVbml0czsKKworICAgICAgICBzdGQ6OmNvcHkodiwgdiArIGNsYW1wZWRD
b3VudCwgYm91bmRUZXh0dXJlVW5pdHMtPmJlZ2luKCkgKyBsb2NhdGlvbkluZm8uZWxlbWVudCk7
CisgICAgICAgIG1DYWNoZWRWYWxpZGF0ZVNhbXBsZXJzUmVzdWx0LnJlc2V0KCk7CisgICAgfQor
fQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgUHJvZ3JhbTo6c2V0VW5pZm9ybUludGVy
bmFsKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBUICp2KQordm9pZCBQcm9n
cmFtOjp1cGRhdGVTYW1wbGVyVW5pZm9ybShjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZsb2NhdGlv
bkluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3Qg
KmRlc3RQb2ludGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNsYW1wZWRDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VCAqdikKK3sKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitHTHNpemVpIFByb2dyYW06OnNl
dFVuaWZvcm1JbnRlcm5hbChHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudEluLCBpbnQgdmVj
dG9yU2l6ZSwgY29uc3QgVCAqdikKIHsKICAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZsb2Nh
dGlvbkluZm8gPSBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb25dOwogICAgIExpbmtl
ZFVuaWZvcm0gKmxpbmtlZFVuaWZvcm0gICAgICAgICA9ICZtU3RhdGUubVVuaWZvcm1zW2xvY2F0
aW9uSW5mby5pbmRleF07CiAgICAgdWludDhfdCAqZGVzdFBvaW50ZXIgICAgICAgICAgICAgICAg
ID0gbGlua2VkVW5pZm9ybS0+Z2V0RGF0YVB0clRvRWxlbWVudChsb2NhdGlvbkluZm8uZWxlbWVu
dCk7CiAKKyAgICAvLyBPcGVuR0wgRVMgMy4wLjQgc3BlYyBwZyA2NzogIlZhbHVlcyBmb3IgYW55
IGFycmF5IGVsZW1lbnQgdGhhdCBleGNlZWRzIHRoZSBoaWdoZXN0IGFycmF5CisgICAgLy8gZWxl
bWVudCBpbmRleCB1c2VkLCBhcyByZXBvcnRlZCBieSBHZXRBY3RpdmVVbmlmb3JtLCB3aWxsIGJl
IGlnbm9yZWQgYnkgdGhlIEdMLiIKKyAgICB1bnNpZ25lZCBpbnQgcmVtYWluaW5nRWxlbWVudHMg
PSBsaW5rZWRVbmlmb3JtLT5lbGVtZW50Q291bnQoKSAtIGxvY2F0aW9uSW5mby5lbGVtZW50Owor
ICAgIEdMc2l6ZWkgbWF4RWxlbWVudENvdW50ID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8R0xzaXpl
aT4ocmVtYWluaW5nRWxlbWVudHMgKiBsaW5rZWRVbmlmb3JtLT5nZXRFbGVtZW50Q29tcG9uZW50
cygpKTsKKworICAgIEdMc2l6ZWkgY291bnQgICAgICAgID0gY291bnRJbjsKKyAgICBHTHNpemVp
IGNsYW1wZWRDb3VudCA9IGNvdW50ICogdmVjdG9yU2l6ZTsKKyAgICBpZiAoY2xhbXBlZENvdW50
ID4gbWF4RWxlbWVudENvdW50KQorICAgIHsKKyAgICAgICAgY2xhbXBlZENvdW50ID0gbWF4RWxl
bWVudENvdW50OworICAgICAgICBjb3VudCAgICAgICAgPSBtYXhFbGVtZW50Q291bnQgLyB2ZWN0
b3JTaXplOworICAgIH0KKwogICAgIGlmIChWYXJpYWJsZUNvbXBvbmVudFR5cGUobGlua2VkVW5p
Zm9ybS0+dHlwZSkgPT0gR0xfQk9PTCkKICAgICB7CiAgICAgICAgIC8vIERvIGEgY2FzdCBjb252
ZXJzaW9uIGZvciBib29sZWFuIHR5cGVzLiBGcm9tIHRoZSBzcGVjOgogICAgICAgICAvLyAiVGhl
IHVuaWZvcm0gaXMgc2V0IHRvIEZBTFNFIGlmIHRoZSBpbnB1dCB2YWx1ZSBpcyAwIG9yIDAuMGYs
IGFuZCBzZXQgdG8gVFJVRSBvdGhlcndpc2UuIgogICAgICAgICBHTGludCAqZGVzdEFzSW50ID0g
cmVpbnRlcnByZXRfY2FzdDxHTGludCAqPihkZXN0UG9pbnRlcik7Ci0gICAgICAgIGZvciAoR0xz
aXplaSBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCBjb3VudDsgKytjb21wb25lbnQpCisgICAg
ICAgIGZvciAoR0xzaXplaSBjb21wb25lbnQgPSAwOyBjb21wb25lbnQgPCBjbGFtcGVkQ291bnQ7
ICsrY29tcG9uZW50KQogICAgICAgICB7CiAgICAgICAgICAgICBkZXN0QXNJbnRbY29tcG9uZW50
XSA9ICh2W2NvbXBvbmVudF0gIT0gc3RhdGljX2Nhc3Q8VD4oMCkgPyBHTF9UUlVFIDogR0xfRkFM
U0UpOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIC8vIEludmFs
aWRlIHRoZSB2YWxpZGF0aW9uIGNhY2hlIGlmIHdlIG1vZGlmeSB0aGUgc2FtcGxlciBkYXRhLgot
ICAgICAgICBpZiAobGlua2VkVW5pZm9ybS0+aXNTYW1wbGVyKCkgJiYgbWVtY21wKGRlc3RQb2lu
dGVyLCB2LCBzaXplb2YoVCkgKiBjb3VudCkgIT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAg
bUNhY2hlZFZhbGlkYXRlU2FtcGxlcnNSZXN1bHQucmVzZXQoKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIG1lbWNweShkZXN0UG9pbnRlciwgdiwgc2l6ZW9mKFQpICogY291bnQpOworICAgICAgICB1
cGRhdGVTYW1wbGVyVW5pZm9ybShsb2NhdGlvbkluZm8sIGRlc3RQb2ludGVyLCBjbGFtcGVkQ291
bnQsIHYpOworICAgICAgICBtZW1jcHkoZGVzdFBvaW50ZXIsIHYsIHNpemVvZihUKSAqIGNsYW1w
ZWRDb3VudCk7CiAgICAgfQorCisgICAgcmV0dXJuIGNvdW50OwogfQogCiB0ZW1wbGF0ZSA8c2l6
ZV90IGNvbHMsIHNpemVfdCByb3dzLCB0eXBlbmFtZSBUPgotdm9pZCBQcm9ncmFtOjpzZXRNYXRy
aXhVbmlmb3JtSW50ZXJuYWwoR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFQgKnYpCitHTHNpemVpIFByb2dyYW06OnNldE1hdHJp
eFVuaWZvcm1JbnRlcm5hbChHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCAqdikKIHsKICAgICBpZiAoIXRyYW5z
cG9zZSkKICAgICB7Ci0gICAgICAgIHNldFVuaWZvcm1JbnRlcm5hbChsb2NhdGlvbiwgY291bnQg
KiBjb2xzICogcm93cywgdik7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIHNldFVu
aWZvcm1JbnRlcm5hbChsb2NhdGlvbiwgY291bnQsIGNvbHMgKiByb3dzLCB2KTsKICAgICB9CiAK
ICAgICAvLyBQZXJmb3JtIGEgdHJhbnNwb3NpbmcgY29weS4KICAgICBjb25zdCBWYXJpYWJsZUxv
Y2F0aW9uICZsb2NhdGlvbkluZm8gPSBtU3RhdGUubVVuaWZvcm1Mb2NhdGlvbnNbbG9jYXRpb25d
OwogICAgIExpbmtlZFVuaWZvcm0gKmxpbmtlZFVuaWZvcm0gICAgICAgICA9ICZtU3RhdGUubVVu
aWZvcm1zW2xvY2F0aW9uSW5mby5pbmRleF07CiAgICAgVCAqZGVzdFB0ciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8VCAqPihsaW5rZWRVbmlmb3JtLT5nZXREYXRhUHRyVG9FbGVtZW50KGxvY2F0aW9uSW5m
by5lbGVtZW50KSk7Ci0gICAgZm9yIChHTHNpemVpIGVsZW1lbnQgPSAwOyBlbGVtZW50IDwgY291
bnQ7ICsrZWxlbWVudCkKKworICAgIC8vIE9wZW5HTCBFUyAzLjAuNCBzcGVjIHBnIDY3OiAiVmFs
dWVzIGZvciBhbnkgYXJyYXkgZWxlbWVudCB0aGF0IGV4Y2VlZHMgdGhlIGhpZ2hlc3QgYXJyYXkK
KyAgICAvLyBlbGVtZW50IGluZGV4IHVzZWQsIGFzIHJlcG9ydGVkIGJ5IEdldEFjdGl2ZVVuaWZv
cm0sIHdpbGwgYmUgaWdub3JlZCBieSB0aGUgR0wuIgorICAgIHVuc2lnbmVkIGludCByZW1haW5p
bmdFbGVtZW50cyA9IGxpbmtlZFVuaWZvcm0tPmVsZW1lbnRDb3VudCgpIC0gbG9jYXRpb25JbmZv
LmVsZW1lbnQ7CisgICAgR0xzaXplaSBjbGFtcGVkQ291bnQgICAgICAgICAgID0gc3RkOjptaW4o
Y291bnQsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHJlbWFpbmluZ0VsZW1lbnRzKSk7CisKKyAgICBm
b3IgKEdMc2l6ZWkgZWxlbWVudCA9IDA7IGVsZW1lbnQgPCBjbGFtcGVkQ291bnQ7ICsrZWxlbWVu
dCkKICAgICB7CiAgICAgICAgIHNpemVfdCBlbGVtZW50T2Zmc2V0ID0gZWxlbWVudCAqIHJvd3Mg
KiBjb2xzOwogCkBAIC0yOTA1LDYgKzMwMjIsOCBAQCB2b2lkIFByb2dyYW06OnNldE1hdHJpeFVu
aWZvcm1JbnRlcm5hbChHTGludCBsb2NhdGlvbiwKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KKworICAgIHJldHVybiBjbGFtcGVkQ291bnQ7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBEZXN0VD4KQEAgLTI5NDIsNCArMzA2MSwyNyBAQCB2b2lkIFByb2dyYW06OmdldFVuaWZvcm1J
bnRlcm5hbChHTGludCBsb2NhdGlvbiwgRGVzdFQgKmRhdGFPdXQpIGNvbnN0CiAgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOwogICAgIH0KIH0KKworYm9vbCBQcm9ncmFtOjpzYW1wbGVzRnJvbVRl
eHR1cmUoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgR0x1aW50IHRleHR1cmVJRCkgY29uc3QKK3sK
KyAgICAvLyBNdXN0IGJlIGNhbGxlZCBhZnRlciBzYW1wbGVycyBhcmUgdmFsaWRhdGVkLgorICAg
IEFTU0VSVChtQ2FjaGVkVmFsaWRhdGVTYW1wbGVyc1Jlc3VsdC52YWxpZCgpICYmIG1DYWNoZWRW
YWxpZGF0ZVNhbXBsZXJzUmVzdWx0LnZhbHVlKCkpOworCisgICAgZm9yIChjb25zdCBhdXRvICZi
aW5kaW5nIDogbVN0YXRlLm1TYW1wbGVyQmluZGluZ3MpCisgICAgeworICAgICAgICBHTGVudW0g
dGV4dHVyZVR5cGUgPSBiaW5kaW5nLnRleHR1cmVUeXBlOworICAgICAgICBmb3IgKGNvbnN0IGF1
dG8gJnVuaXQgOiBiaW5kaW5nLmJvdW5kVGV4dHVyZVVuaXRzKQorICAgICAgICB7CisgICAgICAg
ICAgICBHTGVudW0gcHJvZ3JhbVRleHR1cmVJRCA9IHN0YXRlLmdldFNhbXBsZXJUZXh0dXJlSWQo
dW5pdCwgdGV4dHVyZVR5cGUpOworICAgICAgICAgICAgaWYgKHByb2dyYW1UZXh0dXJlSUQgPT0g
dGV4dHVyZUlEKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFRPRE8oam1hZGls
bCk6IENoZWNrIGZvciBhcHByb3ByaWF0ZSBvdmVybGFwLgorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGZh
bHNlOwogfQorCit9ICAvLyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Qcm9ncmFtLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvUHJvZ3JhbS5oCmluZGV4IDVhMTdlOTJlM2E2Li4xOWRmYzU3YWExNyAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Byb2dyYW0u
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUHJvZ3JhbS5oCkBA
IC0xMSw4ICsxMSwxMCBAQAogI2RlZmluZSBMSUJBTkdMRV9QUk9HUkFNX0hfCiAKICNpbmNsdWRl
IDxHTEVTMi9nbDIuaD4KLSNpbmNsdWRlIDxHTFNMQU5HL1NoYWRlckxhbmcuaD4KKyNpbmNsdWRl
IDxHTFNMQU5HL1NoYWRlclZhcnMuaD4KIAorI2luY2x1ZGUgPGFycmF5PgorI2luY2x1ZGUgPG1h
cD4KICNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8c3N0cmVhbT4KICNpbmNsdWRlIDxzdHJpbmc+
CkBAIC0zOCwxNCArNDAsMTcgQEAgc3RydWN0IFRyYW5zbGF0ZWRBdHRyaWJ1dGU7CiBuYW1lc3Bh
Y2UgZ2wKIHsKIHN0cnVjdCBDYXBzOworY2xhc3MgQ29udGV4dDsKIGNsYXNzIENvbnRleHRTdGF0
ZTsKLWNsYXNzIFJlc291cmNlTWFuYWdlcjsKIGNsYXNzIFNoYWRlcjsKK2NsYXNzIFNoYWRlclBy
b2dyYW1NYW5hZ2VyOworY2xhc3MgU3RhdGU7CiBjbGFzcyBJbmZvTG9nOwogY2xhc3MgQnVmZmVy
OwogY2xhc3MgRnJhbWVidWZmZXI7CiBzdHJ1Y3QgVW5pZm9ybUJsb2NrOwogc3RydWN0IExpbmtl
ZFVuaWZvcm07CitzdHJ1Y3QgUGFja2VkVmFyeWluZzsKIAogZXh0ZXJuIGNvbnN0IGNoYXIgKiBj
b25zdCBnX2Zha2VwYXRoOwogCkBAIC0xNTUsNiArMTYwLDQ0IEBAIHN0cnVjdCBCaW5kaW5nSW5m
bwogICAgIGJvb2wgdmFsaWQ7CiB9OwogCisvLyBUaGlzIHNtYWxsIHN0cnVjdHVyZSBlbmNhcHN1
bGF0ZXMgYmluZGluZyBzYW1wbGVyIHVuaWZvcm1zIHRvIGFjdGl2ZSBHTCB0ZXh0dXJlcy4KK3N0
cnVjdCBTYW1wbGVyQmluZGluZworeworICAgIFNhbXBsZXJCaW5kaW5nKEdMZW51bSB0ZXh0dXJl
VHlwZUluLCBzaXplX3QgZWxlbWVudENvdW50KQorICAgICAgICA6IHRleHR1cmVUeXBlKHRleHR1
cmVUeXBlSW4pLCBib3VuZFRleHR1cmVVbml0cyhlbGVtZW50Q291bnQsIDApCisgICAgeworICAg
IH0KKworICAgIC8vIE5lY2Vzc2FyeSBmb3IgcmV0cmlldmluZyBhY3RpdmUgdGV4dHVyZXMgZnJv
bSB0aGUgR0wgc3RhdGUuCisgICAgR0xlbnVtIHRleHR1cmVUeXBlOworCisgICAgLy8gTGlzdCBv
ZiBhbGwgdGV4dHVyZXMgYm91bmQgdG8gdGhpcyBzYW1wbGVyLCBvZiB0eXBlIHRleHR1cmVUeXBl
LgorICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gYm91bmRUZXh0dXJlVW5pdHM7Cit9OworCisvLyBB
IHZhcnlpbmcgd2l0aCB0cmFuZm9ybSBmZWVkYmFjayBlbmFibGVkLiBJZiBpdCdzIGFuIGFycmF5
LCBlaXRoZXIgdGhlIHdob2xlIGFycmF5IG9yIG9uZSBvZiBpdHMKKy8vIGVsZW1lbnRzIHNwZWNp
ZmllZCBieSAnYXJyYXlJbmRleCcgY2FuIHNldCB0byBiZSBlbmFibGVkLgorc3RydWN0IFRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZyA6IHB1YmxpYyBzaDo6VmFyeWluZworeworICAgIFRyYW5zZm9y
bUZlZWRiYWNrVmFyeWluZyhjb25zdCBzaDo6VmFyeWluZyAmdmFyeWluZ0luLCBHTHVpbnQgaW5k
ZXgpCisgICAgICAgIDogc2g6OlZhcnlpbmcodmFyeWluZ0luKSwgYXJyYXlJbmRleChpbmRleCkK
KyAgICB7CisgICAgfQorICAgIHN0ZDo6c3RyaW5nIG5hbWVXaXRoQXJyYXlJbmRleCgpIGNvbnN0
CisgICAgeworICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBmdWxsTmFtZVN0cjsKKyAgICAgICAg
ZnVsbE5hbWVTdHIgPDwgbmFtZTsKKyAgICAgICAgaWYgKGFycmF5SW5kZXggIT0gR0xfSU5WQUxJ
RF9JTkRFWCkKKyAgICAgICAgeworICAgICAgICAgICAgZnVsbE5hbWVTdHIgPDwgIlsiIDw8IGFy
cmF5SW5kZXggPDwgIl0iOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmdWxsTmFtZVN0ci5z
dHIoKTsKKyAgICB9CisgICAgR0xzaXplaSBzaXplKCkgY29uc3QgeyByZXR1cm4gKGFycmF5SW5k
ZXggPT0gR0xfSU5WQUxJRF9JTkRFWCA/IGVsZW1lbnRDb3VudCgpIDogMSk7IH0KKworICAgIEdM
dWludCBhcnJheUluZGV4OworfTsKKwogY2xhc3MgUHJvZ3JhbVN0YXRlIGZpbmFsIDogYW5nbGU6
Ok5vbkNvcHlhYmxlCiB7CiAgIHB1YmxpYzoKQEAgLTE4NSwxNCArMjI4LDE4IEBAIGNsYXNzIFBy
b2dyYW1TdGF0ZSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHsKICAgICAgICAgcmV0
dXJuIG1BY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrOwogICAgIH0KLSAgICBjb25zdCBzdGQ6Om1h
cDxpbnQsIFZhcmlhYmxlTG9jYXRpb24+ICZnZXRPdXRwdXRWYXJpYWJsZXMoKSBjb25zdCB7IHJl
dHVybiBtT3V0cHV0VmFyaWFibGVzOyB9CisgICAgY29uc3Qgc3RkOjptYXA8aW50LCBWYXJpYWJs
ZUxvY2F0aW9uPiAmZ2V0T3V0cHV0TG9jYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbU91dHB1dExv
Y2F0aW9uczsgfQogICAgIGNvbnN0IHN0ZDo6dmVjdG9yPExpbmtlZFVuaWZvcm0+ICZnZXRVbmlm
b3JtcygpIGNvbnN0IHsgcmV0dXJuIG1Vbmlmb3JtczsgfQogICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PFZhcmlhYmxlTG9jYXRpb24+ICZnZXRVbmlmb3JtTG9jYXRpb25zKCkgY29uc3QgeyByZXR1cm4g
bVVuaWZvcm1Mb2NhdGlvbnM7IH0KICAgICBjb25zdCBzdGQ6OnZlY3RvcjxVbmlmb3JtQmxvY2s+
ICZnZXRVbmlmb3JtQmxvY2tzKCkgY29uc3QgeyByZXR1cm4gbVVuaWZvcm1CbG9ja3M7IH0KKyAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxTYW1wbGVyQmluZGluZz4gJmdldFNhbXBsZXJCaW5kaW5ncygp
IGNvbnN0IHsgcmV0dXJuIG1TYW1wbGVyQmluZGluZ3M7IH0KIAotICAgIGNvbnN0IExpbmtlZFVu
aWZvcm0gKmdldFVuaWZvcm1CeU5hbWUoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0Owog
ICAgIEdMaW50IGdldFVuaWZvcm1Mb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkgY29u
c3Q7Ci0gICAgR0x1aW50IGdldFVuaWZvcm1JbmRleChjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkg
Y29uc3Q7CisgICAgR0x1aW50IGdldFVuaWZvcm1JbmRleEZyb21OYW1lKGNvbnN0IHN0ZDo6c3Ry
aW5nICZuYW1lKSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0VW5pZm9ybUluZGV4RnJvbUxvY2F0aW9u
KEdMaW50IGxvY2F0aW9uKSBjb25zdDsKKyAgICBPcHRpb25hbDxHTHVpbnQ+IGdldFNhbXBsZXJJ
bmRleChHTGludCBsb2NhdGlvbikgY29uc3Q7CisgICAgYm9vbCBpc1NhbXBsZXJVbmlmb3JtSW5k
ZXgoR0x1aW50IGluZGV4KSBjb25zdDsKKyAgICBHTHVpbnQgZ2V0U2FtcGxlckluZGV4RnJvbVVu
aWZvcm1JbmRleChHTHVpbnQgdW5pZm9ybUluZGV4KSBjb25zdDsKIAogICBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBQcm9ncmFtOwpAQCAtMjA2LDEwICsyNTMsMTAgQEAgY2xhc3MgUHJvZ3Jh
bVN0YXRlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgU2hhZGVyICptQXR0YWNoZWRD
b21wdXRlU2hhZGVyOwogCiAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IG1UcmFuc2Zvcm1G
ZWVkYmFja1ZhcnlpbmdOYW1lczsKLSAgICBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gbVRyYW5z
Zm9ybUZlZWRiYWNrVmFyeWluZ1ZhcnM7CisgICAgc3RkOjp2ZWN0b3I8VHJhbnNmb3JtRmVlZGJh
Y2tWYXJ5aW5nPiBtTGlua2VkVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nczsKICAgICBHTGVudW0g
bVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZTsKIAotICAgIEdMdWludCBtVW5pZm9ybUJsb2Nr
QmluZGluZ3NbSU1QTEVNRU5UQVRJT05fTUFYX0NPTUJJTkVEX1NIQURFUl9VTklGT1JNX0JVRkZF
UlNdOworICAgIHN0ZDo6YXJyYXk8R0x1aW50LCBJTVBMRU1FTlRBVElPTl9NQVhfQ09NQklORURf
U0hBREVSX1VOSUZPUk1fQlVGRkVSUz4gbVVuaWZvcm1CbG9ja0JpbmRpbmdzOwogICAgIFVuaWZv
cm1CbG9ja0JpbmRpbmdNYXNrIG1BY3RpdmVVbmlmb3JtQmxvY2tCaW5kaW5nczsKIAogICAgIHN0
ZDo6dmVjdG9yPHNoOjpBdHRyaWJ1dGU+IG1BdHRyaWJ1dGVzOwpAQCAtMjIzLDE4ICsyNzAsMjUg
QEAgY2xhc3MgUHJvZ3JhbVN0YXRlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgc3Rk
Ojp2ZWN0b3I8TGlua2VkVW5pZm9ybT4gbVVuaWZvcm1zOwogICAgIHN0ZDo6dmVjdG9yPFZhcmlh
YmxlTG9jYXRpb24+IG1Vbmlmb3JtTG9jYXRpb25zOwogICAgIHN0ZDo6dmVjdG9yPFVuaWZvcm1C
bG9jaz4gbVVuaWZvcm1CbG9ja3M7CisgICAgUmFuZ2VVSSBtU2FtcGxlclVuaWZvcm1SYW5nZTsK
IAorICAgIC8vIEFuIGFycmF5IG9mIHRoZSBzYW1wbGVycyB0aGF0IGFyZSB1c2VkIGJ5IHRoZSBw
cm9ncmFtCisgICAgc3RkOjp2ZWN0b3I8Z2w6OlNhbXBsZXJCaW5kaW5nPiBtU2FtcGxlckJpbmRp
bmdzOworCisgICAgc3RkOjp2ZWN0b3I8c2g6Ok91dHB1dFZhcmlhYmxlPiBtT3V0cHV0VmFyaWFi
bGVzOwogICAgIC8vIFRPRE8oam1hZGlsbCk6IHVzZSB1bm9yZGVyZWQvaGFzaCBtYXAgd2hlbiBh
dmFpbGFibGUKLSAgICBzdGQ6Om1hcDxpbnQsIFZhcmlhYmxlTG9jYXRpb24+IG1PdXRwdXRWYXJp
YWJsZXM7CisgICAgc3RkOjptYXA8aW50LCBWYXJpYWJsZUxvY2F0aW9uPiBtT3V0cHV0TG9jYXRp
b25zOwogCiAgICAgYm9vbCBtQmluYXJ5UmV0cmlldmVhYmxlSGludDsKKyAgICBib29sIG1TZXBh
cmFibGU7CiB9OwogCiBjbGFzcyBQcm9ncmFtIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBw
dWJsaWMgTGFiZWxlZE9iamVjdAogewogICBwdWJsaWM6Ci0gICAgUHJvZ3JhbShyeDo6R0xJbXBs
RmFjdG9yeSAqZmFjdG9yeSwgUmVzb3VyY2VNYW5hZ2VyICptYW5hZ2VyLCBHTHVpbnQgaGFuZGxl
KTsKKyAgICBQcm9ncmFtKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBTaGFkZXJQcm9ncmFt
TWFuYWdlciAqbWFuYWdlciwgR0x1aW50IGhhbmRsZSk7CiAgICAgflByb2dyYW0oKTsKKyAgICB2
b2lkIGRlc3Ryb3koY29uc3QgQ29udGV4dCAqY29udGV4dCk7CiAKICAgICBHTHVpbnQgaWQoKSBj
b25zdCB7IHJldHVybiBtSGFuZGxlOyB9CiAKQEAgLTI0NCw3ICsyOTgsNyBAQCBjbGFzcyBQcm9n
cmFtIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVjdAogICAg
IHJ4OjpQcm9ncmFtSW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtUHJv
Z3JhbTsgfQogCiAgICAgdm9pZCBhdHRhY2hTaGFkZXIoU2hhZGVyICpzaGFkZXIpOwotICAgIGJv
b2wgZGV0YWNoU2hhZGVyKFNoYWRlciAqc2hhZGVyKTsKKyAgICB2b2lkIGRldGFjaFNoYWRlcihj
b25zdCBDb250ZXh0ICpjb250ZXh0LCBTaGFkZXIgKnNoYWRlcik7CiAgICAgaW50IGdldEF0dGFj
aGVkU2hhZGVyc0NvdW50KCkgY29uc3Q7CiAKICAgICBjb25zdCBTaGFkZXIgKmdldEF0dGFjaGVk
VmVydGV4U2hhZGVyKCkgY29uc3QgeyByZXR1cm4gbVN0YXRlLm1BdHRhY2hlZFZlcnRleFNoYWRl
cjsgfQpAQCAtMjYyLDE1ICszMTYsMjUgQEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFuZ2xlOjpO
b25Db3B5YWJsZSwgcHVibGljIExhYmVsZWRPYmplY3QKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGNvbXBvbmVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICpjb2VmZnMpOwogCi0gICAgRXJyb3IgbGluayhjb25zdCBDb250ZXh0U3Rh
dGUgJmRhdGEpOworICAgIEVycm9yIGxpbmsoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpOwog
ICAgIGJvb2wgaXNMaW5rZWQoKSBjb25zdDsKIAotICAgIEVycm9yIGxvYWRCaW5hcnkoR0xlbnVt
IGJpbmFyeUZvcm1hdCwgY29uc3Qgdm9pZCAqYmluYXJ5LCBHTHNpemVpIGxlbmd0aCk7Ci0gICAg
RXJyb3Igc2F2ZUJpbmFyeShHTGVudW0gKmJpbmFyeUZvcm1hdCwgdm9pZCAqYmluYXJ5LCBHTHNp
emVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCkgY29uc3Q7CisgICAgRXJyb3IgbG9hZEJpbmFy
eShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJp
bmFyeUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJpbmFyeSwKKyAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoKTsKKyAgICBFcnJvciBzYXZlQmluYXJ5
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKmJp
bmFyeUZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmJpbmFyeSwKKyAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgKmxlbmd0aCkgY29uc3Q7CiAgICAgR0xpbnQgZ2V0QmluYXJ5TGVuZ3RoKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXRCaW5hcnlSZXRyaWV2YWJsZUhpbnQoYm9vbCByZXRyaWV2YWJsZSk7CiAgICAg
Ym9vbCBnZXRCaW5hcnlSZXRyaWV2YWJsZUhpbnQoKSBjb25zdDsKIAorICAgIHZvaWQgc2V0U2Vw
YXJhYmxlKGJvb2wgc2VwYXJhYmxlKTsKKyAgICBib29sIGlzU2VwYXJhYmxlKCkgY29uc3Q7CisK
ICAgICBpbnQgZ2V0SW5mb0xvZ0xlbmd0aCgpIGNvbnN0OwogICAgIHZvaWQgZ2V0SW5mb0xvZyhH
THNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqaW5mb0xvZykgY29uc3Q7CiAg
ICAgdm9pZCBnZXRBdHRhY2hlZFNoYWRlcnMoR0xzaXplaSBtYXhDb3VudCwgR0xzaXplaSAqY291
bnQsIEdMdWludCAqc2hhZGVycykgY29uc3Q7CkBAIC0yNzgsMTIgKzM0MiwxOCBAQCBjbGFzcyBQ
cm9ncmFtIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVjdAog
ICAgIEdMdWludCBnZXRBdHRyaWJ1dGVMb2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSkg
Y29uc3Q7CiAgICAgYm9vbCBpc0F0dHJpYkxvY2F0aW9uQWN0aXZlKHNpemVfdCBhdHRyaWJMb2Nh
dGlvbikgY29uc3Q7CiAKLSAgICB2b2lkIGdldEFjdGl2ZUF0dHJpYnV0ZShHTHVpbnQgaW5kZXgs
IEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGludCAqc2l6ZSwgR0xlbnVtICp0
eXBlLCBHTGNoYXIgKm5hbWUpOworICAgIHZvaWQgZ2V0QWN0aXZlQXR0cmlidXRlKEdMdWludCBp
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZnNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50ICpzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSAqdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm5hbWUpIGNv
bnN0OwogICAgIEdMaW50IGdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KCkgY29uc3Q7CiAgICAgR0xp
bnQgZ2V0QWN0aXZlQXR0cmlidXRlTWF4TGVuZ3RoKCkgY29uc3Q7CiAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8c2g6OkF0dHJpYnV0ZT4gJmdldEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtU3Rh
dGUubUF0dHJpYnV0ZXM7IH0KIAogICAgIEdMaW50IGdldEZyYWdEYXRhTG9jYXRpb24oY29uc3Qg
c3RkOjpzdHJpbmcgJm5hbWUpIGNvbnN0OworICAgIHNpemVfdCBnZXRPdXRwdXRSZXNvdXJjZUNv
dW50KCkgY29uc3Q7CiAKICAgICB2b2lkIGdldEFjdGl2ZVVuaWZvcm0oR0x1aW50IGluZGV4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZnNpemUsCkBAIC0yOTUsOCArMzY1
LDEwIEBAIGNsYXNzIFByb2dyYW0gZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBM
YWJlbGVkT2JqZWN0CiAgICAgR0xpbnQgZ2V0QWN0aXZlVW5pZm9ybU1heExlbmd0aCgpIGNvbnN0
OwogICAgIEdMaW50IGdldEFjdGl2ZVVuaWZvcm1pKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1l
KSBjb25zdDsKICAgICBib29sIGlzVmFsaWRVbmlmb3JtTG9jYXRpb24oR0xpbnQgbG9jYXRpb24p
IGNvbnN0OwotICAgIGJvb2wgaXNJZ25vcmVkVW5pZm9ybUxvY2F0aW9uKEdMaW50IGxvY2F0aW9u
KSBjb25zdDsKICAgICBjb25zdCBMaW5rZWRVbmlmb3JtICZnZXRVbmlmb3JtQnlMb2NhdGlvbihH
TGludCBsb2NhdGlvbikgY29uc3Q7CisgICAgY29uc3QgVmFyaWFibGVMb2NhdGlvbiAmZ2V0VW5p
Zm9ybUxvY2F0aW9uKEdMaW50IGxvY2F0aW9uKSBjb25zdDsKKyAgICBjb25zdCBzdGQ6OnZlY3Rv
cjxWYXJpYWJsZUxvY2F0aW9uPiAmZ2V0VW5pZm9ybUxvY2F0aW9ucygpIGNvbnN0OworICAgIGNv
bnN0IExpbmtlZFVuaWZvcm0gJmdldFVuaWZvcm1CeUluZGV4KEdMdWludCBpbmRleCkgY29uc3Q7
CiAKICAgICBHTGludCBnZXRVbmlmb3JtTG9jYXRpb24oY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUp
IGNvbnN0OwogICAgIEdMdWludCBnZXRVbmlmb3JtSW5kZXgoY29uc3Qgc3RkOjpzdHJpbmcgJm5h
bWUpIGNvbnN0OwpAQCAtMzQzLDExICs0MTUsMTAgQEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFu
Z2xlOjpOb25Db3B5YWJsZSwgcHVibGljIExhYmVsZWRPYmplY3QKICAgICBHTHNpemVpIGdldFRy
YW5zZm9ybUZlZWRiYWNrVmFyeWluZ01heExlbmd0aCgpIGNvbnN0OwogICAgIEdMZW51bSBnZXRU
cmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSBjb25zdDsKIAotICAgIHN0YXRpYyBib29sIGxp
bmtWYWxpZGF0ZVVuaWZvcm1zKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IHN0ZDo6c3RyaW5nICZ1
bmlmb3JtTmFtZSwgY29uc3Qgc2g6OlVuaWZvcm0gJnZlcnRleFVuaWZvcm0sIGNvbnN0IHNoOjpV
bmlmb3JtICZmcmFnbWVudFVuaWZvcm0pOwogICAgIHN0YXRpYyBib29sIGxpbmtWYWxpZGF0ZUlu
dGVyZmFjZUJsb2NrRmllbGRzKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IHN0ZDo6c3RyaW5nICZ1
bmlmb3JtTmFtZSwgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrRmllbGQgJnZlcnRleFVuaWZvcm0s
IGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9ja0ZpZWxkICZmcmFnbWVudFVuaWZvcm0pOwogCiAgICAg
dm9pZCBhZGRSZWYoKTsKLSAgICB2b2lkIHJlbGVhc2UoKTsKKyAgICB2b2lkIHJlbGVhc2UoY29u
c3QgQ29udGV4dCAqY29udGV4dCk7CiAgICAgdW5zaWduZWQgaW50IGdldFJlZkNvdW50KCkgY29u
c3Q7CiAgICAgdm9pZCBmbGFnRm9yRGVsZXRpb24oKTsKICAgICBib29sIGlzRmxhZ2dlZEZvckRl
bGV0aW9uKCkgY29uc3Q7CkBAIC0zNTUsMTMgKzQyNiwzMCBAQCBjbGFzcyBQcm9ncmFtIGZpbmFs
IDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVjdAogICAgIHZvaWQgdmFs
aWRhdGUoY29uc3QgQ2FwcyAmY2Fwcyk7CiAgICAgYm9vbCB2YWxpZGF0ZVNhbXBsZXJzKEluZm9M
b2cgKmluZm9Mb2csIGNvbnN0IENhcHMgJmNhcHMpOwogICAgIGJvb2wgaXNWYWxpZGF0ZWQoKSBj
b25zdDsKKyAgICBib29sIHNhbXBsZXNGcm9tVGV4dHVyZShjb25zdCBnbDo6U3RhdGUgJnN0YXRl
LCBHTHVpbnQgdGV4dHVyZUlEKSBjb25zdDsKIAogICAgIGNvbnN0IEF0dHJpYnV0ZXNNYXNrICZn
ZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVy
biBtU3RhdGUubUFjdGl2ZUF0dHJpYkxvY2F0aW9uc01hc2s7CiAgICAgfQogCi0gIHByaXZhdGU6
CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8U2FtcGxlckJpbmRpbmc+ICZnZXRTYW1wbGVyQmluZGlu
Z3MoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1TdGF0ZS5tU2FtcGxlckJpbmRpbmdz
OworICAgIH0KKyAgICBjb25zdCBQcm9ncmFtU3RhdGUgJmdldFN0YXRlKCkgY29uc3QgeyByZXR1
cm4gbVN0YXRlOyB9CisKKyAgICBzdGF0aWMgYm9vbCBsaW5rVmFsaWRhdGVWYXJpYWJsZXNCYXNl
KEluZm9Mb2cgJmluZm9Mb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmFyaWFibGVOYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2ZXJ0ZXhW
YXJpYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHNoOjpTaGFkZXJWYXJpYWJsZSAmZnJhZ21lbnRWYXJpYWJsZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdmFsaWRhdGVQcmVjaXNpb24pOworCisgICAg
R0x1aW50IGdldElucHV0UmVzb3VyY2VJbmRleChjb25zdCBHTGNoYXIgKm5hbWUpIGNvbnN0Owor
ICAgIEdMdWludCBnZXRPdXRwdXRSZXNvdXJjZUluZGV4KGNvbnN0IEdMY2hhciAqbmFtZSkgY29u
c3Q7CisgICAgdm9pZCBnZXRJbnB1dFJlc291cmNlTmFtZShHTHVpbnQgaW5kZXgsIEdMc2l6ZWkg
YnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKm5hbWUpIGNvbnN0OworICAgIHZvaWQg
Z2V0T3V0cHV0UmVzb3VyY2VOYW1lKEdMdWludCBpbmRleCwgR0xzaXplaSBidWZTaXplLCBHTHNp
emVpICpsZW5ndGgsIEdMY2hhciAqbmFtZSkgY29uc3Q7CisKICAgICBjbGFzcyBCaW5kaW5ncyBm
aW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHsKICAgICAgIHB1YmxpYzoKQEAgLTM3Niwx
MyArNDY0LDIxIEBAIGNsYXNzIFByb2dyYW0gZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUsIHB1
YmxpYyBMYWJlbGVkT2JqZWN0CiAgICAgICAgIHN0ZDo6dW5vcmRlcmVkX21hcDxzdGQ6OnN0cmlu
ZywgR0x1aW50PiBtQmluZGluZ3M7CiAgICAgfTsKIAotICAgIHZvaWQgdW5saW5rKGJvb2wgZGVz
dHJveSA9IGZhbHNlKTsKKyAgcHJpdmF0ZToKKyAgICBzdHJ1Y3QgVmFyeWluZ1JlZgorICAgIHsK
KyAgICAgICAgY29uc3Qgc2g6OlZhcnlpbmcgKmdldCgpIGNvbnN0IHsgcmV0dXJuIHZlcnRleCA/
IHZlcnRleCA6IGZyYWdtZW50OyB9CisKKyAgICAgICAgY29uc3Qgc2g6OlZhcnlpbmcgKnZlcnRl
eCAgID0gbnVsbHB0cjsKKyAgICAgICAgY29uc3Qgc2g6OlZhcnlpbmcgKmZyYWdtZW50ID0gbnVs
bHB0cjsKKyAgICB9OworCisgICAgdXNpbmcgTWVyZ2VkVmFyeWluZ3MgPSBzdGQ6Om1hcDxzdGQ6
OnN0cmluZywgVmFyeWluZ1JlZj47CisKKyAgICB2b2lkIHVubGluaygpOwogICAgIHZvaWQgcmVz
ZXRVbmlmb3JtQmxvY2tCaW5kaW5ncygpOwogCi0gICAgYm9vbCBsaW5rQXR0cmlidXRlcyhjb25z
dCBDb250ZXh0U3RhdGUgJmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICBJbmZvTG9nICZp
bmZvTG9nLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmluZGluZ3MgJmF0dHJpYnV0
ZUJpbmRpbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hhZGVyICp2ZXJ0ZXhT
aGFkZXIpOworICAgIGJvb2wgbGlua0F0dHJpYnV0ZXMoY29uc3QgQ29udGV4dFN0YXRlICZkYXRh
LCBJbmZvTG9nICZpbmZvTG9nKTsKICAgICBib29sIHZhbGlkYXRlVW5pZm9ybUJsb2Nrc0NvdW50
KEdMdWludCBtYXhVbmlmb3JtQmxvY2tzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPiAmYmxvY2ssCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZXJyb3JN
ZXNzYWdlLApAQCAtMzkyLDY1ICs0ODgsMzMgQEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFuZ2xl
OjpOb25Db3B5YWJsZSwgcHVibGljIExhYmVsZWRPYmplY3QKICAgICAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8c2g6OkludGVyZmFjZUJsb2NrPiAmZnJhZ21lbnRJbnRlcmZhY2VCbG9ja3MsCiAgICAg
ICAgIEluZm9Mb2cgJmluZm9Mb2cpIGNvbnN0OwogICAgIGJvb2wgbGlua1VuaWZvcm1CbG9ja3Mo
SW5mb0xvZyAmaW5mb0xvZywgY29uc3QgQ2FwcyAmY2Fwcyk7Ci0gICAgYm9vbCBsaW5rVmFyeWlu
Z3MoSW5mb0xvZyAmaW5mb0xvZywgY29uc3QgU2hhZGVyICp2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFNo
YWRlciAqZnJhZ21lbnRTaGFkZXIpIGNvbnN0OwotICAgIGJvb2wgdmFsaWRhdGVWZXJ0ZXhBbmRG
cmFnbWVudFVuaWZvcm1zKEluZm9Mb2cgJmluZm9Mb2cpIGNvbnN0OwotICAgIGJvb2wgbGlua1Vu
aWZvcm1zKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBjb25zdCBnbDo6Q2FwcyAmY2FwcywgY29uc3Qg
QmluZGluZ3MgJnVuaWZvcm1CaW5kaW5ncyk7Ci0gICAgYm9vbCBpbmRleFVuaWZvcm1zKGdsOjpJ
bmZvTG9nICZpbmZvTG9nLCBjb25zdCBnbDo6Q2FwcyAmY2FwcywgY29uc3QgQmluZGluZ3MgJnVu
aWZvcm1CaW5kaW5ncyk7Ci0gICAgYm9vbCBhcmVNYXRjaGluZ0ludGVyZmFjZUJsb2NrcyhnbDo6
SW5mb0xvZyAmaW5mb0xvZywKKyAgICBib29sIGxpbmtWYXJ5aW5ncyhJbmZvTG9nICZpbmZvTG9n
KSBjb25zdDsKKworICAgIGJvb2wgbGlua1VuaWZvcm1zKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0
IENhcHMgJmNhcHMsIGNvbnN0IEJpbmRpbmdzICZ1bmlmb3JtTG9jYXRpb25CaW5kaW5ncyk7Cisg
ICAgdm9pZCBsaW5rU2FtcGxlckJpbmRpbmdzKCk7CisKKyAgICBib29sIGFyZU1hdGNoaW5nSW50
ZXJmYWNlQmxvY2tzKEluZm9Mb2cgJmluZm9Mb2csCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJnZlcnRleEludGVyZmFjZUJsb2Nr
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2g6OkludGVyZmFj
ZUJsb2NrICZmcmFnbWVudEludGVyZmFjZUJsb2NrKSBjb25zdDsKIAotICAgIHN0YXRpYyBib29s
IGxpbmtWYWxpZGF0ZVZhcmlhYmxlc0Jhc2UoSW5mb0xvZyAmaW5mb0xvZywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2YXJpYWJs
ZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
aDo6U2hhZGVyVmFyaWFibGUgJnZlcnRleFZhcmlhYmxlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZmcmFnbWVudFZh
cmlhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB2
YWxpZGF0ZVByZWNpc2lvbik7Ci0KICAgICBzdGF0aWMgYm9vbCBsaW5rVmFsaWRhdGVWYXJ5aW5n
cyhJbmZvTG9nICZpbmZvTG9nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZ2YXJ5aW5nTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzaDo6VmFyeWluZyAmdmVydGV4VmFyeWluZywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaDo6VmFyeWluZyAmZnJhZ21lbnRW
YXJ5aW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzaGFkZXJW
ZXJzaW9uKTsKLSAgICBib29sIGxpbmtWYWxpZGF0ZVRyYW5zZm9ybUZlZWRiYWNrKEluZm9Mb2cg
JmluZm9Mb2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnZlY3Rvcjxjb25zdCBzaDo6VmFyeWluZyAqPiAmbGlua2VkVmFyeWluZ3MsCisgICAgYm9v
bCBsaW5rVmFsaWRhdGVCdWlsdEluVmFyeWluZ3MoSW5mb0xvZyAmaW5mb0xvZykgY29uc3Q7Cisg
ICAgYm9vbCBsaW5rVmFsaWRhdGVUcmFuc2Zvcm1GZWVkYmFjayhjb25zdCBnbDo6Q29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZm9Mb2cg
JmluZm9Mb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBN
ZXJnZWRWYXJ5aW5ncyAmbGlua2VkVmFyeWluZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBDYXBzICZjYXBzKSBjb25zdDsKIAotICAgIHZvaWQgZ2F0aGVy
VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhjb25zdCBzdGQ6OnZlY3Rvcjxjb25zdCBzaDo6VmFy
eWluZyAqPiAmdmFyeWluZ3MpOwotICAgIGJvb2wgYXNzaWduVW5pZm9ybUJsb2NrUmVnaXN0ZXIo
SW5mb0xvZyAmaW5mb0xvZywgVW5pZm9ybUJsb2NrICp1bmlmb3JtQmxvY2ssIEdMZW51bSBzaGFk
ZXIsIHVuc2lnbmVkIGludCByZWdpc3RlckluZGV4LCBjb25zdCBDYXBzICZjYXBzKTsKLSAgICB2
b2lkIGRlZmluZU91dHB1dFZhcmlhYmxlcyhTaGFkZXIgKmZyYWdtZW50U2hhZGVyKTsKKyAgICB2
b2lkIGdhdGhlclRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoY29uc3QgTWVyZ2VkVmFyeWluZ3Mg
JnZhcnlpbmdzKTsKIAotICAgIHN0ZDo6dmVjdG9yPGNvbnN0IHNoOjpWYXJ5aW5nICo+IGdldE1l
cmdlZFZhcnlpbmdzKCkgY29uc3Q7CisgICAgTWVyZ2VkVmFyeWluZ3MgZ2V0TWVyZ2VkVmFyeWlu
Z3MoKSBjb25zdDsKKyAgICBzdGQ6OnZlY3RvcjxQYWNrZWRWYXJ5aW5nPiBnZXRQYWNrZWRWYXJ5
aW5ncyhjb25zdCBNZXJnZWRWYXJ5aW5ncyAmbWVyZ2VkVmFyeWluZ3MpIGNvbnN0OwogICAgIHZv
aWQgbGlua091dHB1dFZhcmlhYmxlcygpOwogCi0gICAgYm9vbCBmbGF0dGVuVW5pZm9ybXNBbmRD
aGVja0NhcHNGb3JTaGFkZXIoY29uc3QgZ2w6OlNoYWRlciAmc2hhZGVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXhVbmlmb3JtQ29tcG9u
ZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgbWF4VGV4dHVyZUltYWdlVW5pdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmNvbXBvbmVudHNFcnJvck1lc3NhZ2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNhbXBsZXJFcnJvck1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8TGlua2VkVW5pZm9ybT4gJnNhbXBsZXJV
bmlmb3JtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
bmZvTG9nICZpbmZvTG9nKTsKLSAgICBib29sIGZsYXR0ZW5Vbmlmb3Jtc0FuZENoZWNrQ2Fwcyhj
b25zdCBDYXBzICZjYXBzLCBJbmZvTG9nICZpbmZvTG9nKTsKLQotICAgIHN0cnVjdCBWZWN0b3JB
bmRTYW1wbGVyQ291bnQKLSAgICB7Ci0gICAgICAgIFZlY3RvckFuZFNhbXBsZXJDb3VudCgpIDog
dmVjdG9yQ291bnQoMCksIHNhbXBsZXJDb3VudCgwKSB7fQotICAgICAgICBWZWN0b3JBbmRTYW1w
bGVyQ291bnQoY29uc3QgVmVjdG9yQW5kU2FtcGxlckNvdW50ICZvdGhlcikgPSBkZWZhdWx0Owot
ICAgICAgICBWZWN0b3JBbmRTYW1wbGVyQ291bnQgJm9wZXJhdG9yPShjb25zdCBWZWN0b3JBbmRT
YW1wbGVyQ291bnQgJm90aGVyKSA9IGRlZmF1bHQ7Ci0KLSAgICAgICAgVmVjdG9yQW5kU2FtcGxl
ckNvdW50ICZvcGVyYXRvcis9KGNvbnN0IFZlY3RvckFuZFNhbXBsZXJDb3VudCAmb3RoZXIpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHZlY3RvckNvdW50ICs9IG90aGVyLnZlY3RvckNvdW50Owot
ICAgICAgICAgICAgc2FtcGxlckNvdW50ICs9IG90aGVyLnNhbXBsZXJDb3VudDsKLSAgICAgICAg
ICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIHVuc2lnbmVkIGludCB2ZWN0
b3JDb3VudDsKLSAgICAgICAgdW5zaWduZWQgaW50IHNhbXBsZXJDb3VudDsKLSAgICB9OwotCi0g
ICAgVmVjdG9yQW5kU2FtcGxlckNvdW50IGZsYXR0ZW5Vbmlmb3JtKGNvbnN0IHNoOjpTaGFkZXJW
YXJpYWJsZSAmdW5pZm9ybSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZ1bGxOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxMaW5rZWRVbmlmb3JtPiAqc2FtcGxlclVuaWZv
cm1zKTsKKyAgICB2b2lkIHNldFVuaWZvcm1WYWx1ZXNGcm9tQmluZGluZ1F1YWxpZmllcnMoKTsK
IAogICAgIHZvaWQgZ2F0aGVySW50ZXJmYWNlQmxvY2tJbmZvKCk7CiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFZhclQ+CkBAIC00NjAsMTEgKzUyNCwyMCBAQCBjbGFzcyBQcm9ncmFtIGZpbmFsIDog
YW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVjdAogCiAgICAgdm9pZCBkZWZp
bmVVbmlmb3JtQmxvY2soY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZpbnRlcmZhY2VCbG9jaywg
R0xlbnVtIHNoYWRlclR5cGUpOwogCisgICAgLy8gQm90aCB0aGVzZSBmdW5jdGlvbiB1cGRhdGUg
dGhlIGNhY2hlZCB1bmlmb3JtIHZhbHVlcyBhbmQgcmV0dXJuIGEgbW9kaWZpZWQgImNvdW50Igor
ICAgIC8vIHNvIHRoYXQgdGhlIHVuaWZvcm0gdXBkYXRlIGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIHVu
aWZvcm0uCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBzZXRVbmlmb3JtSW50
ZXJuYWwoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IFQgKnYpOwotCisgICAg
R0xzaXplaSBzZXRVbmlmb3JtSW50ZXJuYWwoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGludCB2ZWN0b3JTaXplLCBjb25zdCBUICp2KTsKICAgICB0ZW1wbGF0ZSA8c2l6ZV90IGNvbHMs
IHNpemVfdCByb3dzLCB0eXBlbmFtZSBUPgotICAgIHZvaWQgc2V0TWF0cml4VW5pZm9ybUludGVy
bmFsKEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBj
b25zdCBUICp2KTsKKyAgICBHTHNpemVpIHNldE1hdHJpeFVuaWZvcm1JbnRlcm5hbChHTGludCBs
b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVCAqdik7
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCB1cGRhdGVTYW1wbGVyVW5pZm9y
bShjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZsb2NhdGlvbkluZm8sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpkZXN0UG9pbnRlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY2xhbXBlZENvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVCAqdik7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVzdFQ+
CiAgICAgdm9pZCBnZXRVbmlmb3JtSW50ZXJuYWwoR0xpbnQgbG9jYXRpb24sIERlc3RUICpkYXRh
T3V0KSBjb25zdDsKQEAgLTQ3NSw3ICs1NDgsMTAgQEAgY2xhc3MgUHJvZ3JhbSBmaW5hbCA6IGFu
Z2xlOjpOb25Db3B5YWJsZSwgcHVibGljIExhYmVsZWRPYmplY3QKICAgICBib29sIG1WYWxpZGF0
ZWQ7CiAKICAgICBCaW5kaW5ncyBtQXR0cmlidXRlQmluZGluZ3M7Ci0gICAgQmluZGluZ3MgbVVu
aWZvcm1CaW5kaW5nczsKKworICAgIC8vIE5vdGUgdGhhdCB0aGlzIGhhcyBub3RoaW5nIHRvIGRv
IHdpdGggYmluZGluZyBsYXlvdXQgcXVhbGlmaWVycyB0aGF0IGNhbiBiZSBzZXQgZm9yIHNvbWUK
KyAgICAvLyB1bmlmb3JtcyBpbiBHTEVTMy4xKy4gSXQgaXMgdXNlZCB0byBwcmUtc2V0IHRoZSBs
b2NhdGlvbiBvZiB1bmlmb3Jtcy4KKyAgICBCaW5kaW5ncyBtVW5pZm9ybUxvY2F0aW9uQmluZGlu
Z3M7CiAKICAgICAvLyBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZwogICAgIEJpbmRpbmdzIG1GcmFn
bWVudElucHV0QmluZGluZ3M7CkBAIC00ODUsNyArNTYxLDcgQEAgY2xhc3MgUHJvZ3JhbSBmaW5h
bCA6IGFuZ2xlOjpOb25Db3B5YWJsZSwgcHVibGljIExhYmVsZWRPYmplY3QKIAogICAgIHVuc2ln
bmVkIGludCBtUmVmQ291bnQ7CiAKLSAgICBSZXNvdXJjZU1hbmFnZXIgKm1SZXNvdXJjZU1hbmFn
ZXI7CisgICAgU2hhZGVyUHJvZ3JhbU1hbmFnZXIgKm1SZXNvdXJjZU1hbmFnZXI7CiAgICAgY29u
c3QgR0x1aW50IG1IYW5kbGU7CiAKICAgICBJbmZvTG9nIG1JbmZvTG9nOwpAQCAtNDkzLDggKzU2
OSw3IEBAIGNsYXNzIFByb2dyYW0gZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBM
YWJlbGVkT2JqZWN0CiAgICAgLy8gQ2FjaGUgZm9yIHNhbXBsZXIgdmFsaWRhdGlvbgogICAgIE9w
dGlvbmFsPGJvb2w+IG1DYWNoZWRWYWxpZGF0ZVNhbXBsZXJzUmVzdWx0OwogICAgIHN0ZDo6dmVj
dG9yPEdMZW51bT4gbVRleHR1cmVVbml0VHlwZXNDYWNoZTsKLSAgICBSYW5nZVVJIG1TYW1wbGVy
VW5pZm9ybVJhbmdlOwogfTsKLX0KK30gIC8vIG5hbWVzcGFjZSBnbAogCiAjZW5kaWYgICAvLyBM
SUJBTkdMRV9QUk9HUkFNX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvUmVmQ291bnRPYmplY3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9SZWZDb3VudE9iamVjdC5oCmluZGV4IDg2ZTZkNzg4YjUxLi4xMTIzMTJlNzVh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1JlZkNv
dW50T2JqZWN0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Jl
ZkNvdW50T2JqZWN0LmgKQEAgLTE4LDEwICsxOCwxNSBAQAogCiAjaW5jbHVkZSA8Y3N0ZGRlZj4K
IAotY2xhc3MgUmVmQ291bnRPYmplY3QgOiBhbmdsZTo6Tm9uQ29weWFibGUKK25hbWVzcGFjZSBn
bAoreworY2xhc3MgQ29udGV4dDsKK30KKworY2xhc3MgUmVmQ291bnRPYmplY3ROb0lEIDogYW5n
bGU6Ok5vbkNvcHlhYmxlCiB7CiAgIHB1YmxpYzoKLSAgICBleHBsaWNpdCBSZWZDb3VudE9iamVj
dChHTHVpbnQgaWQpIDogbUlkKGlkKSwgbVJlZkNvdW50KDApIHt9CisgICAgUmVmQ291bnRPYmpl
Y3ROb0lEKCkgOiBtUmVmQ291bnQoMCkge30KIAogICAgIHZvaWQgYWRkUmVmKCkgY29uc3QgeyAr
K21SZWZDb3VudDsgfQogCkBAIC0zNSwxOSArNDAsNDEgQEAgY2xhc3MgUmVmQ291bnRPYmplY3Qg
OiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgfQogICAgIH0KIAotICAgIEdMdWludCBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1JZDsgfQorICAgIC8vIEEgc3BlY2lhbGl6ZWQgcmVsZWFzZSBtZXRo
b2QgZm9yIG9iamVjdHMgd2hpY2ggbmVlZCBhIGRlc3Ryb3kgY29udGV4dC4KKyAgICB2b2lkIHJl
bGVhc2UoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQpCisgICAgeworICAgICAgICBBU1NFUlQo
bVJlZkNvdW50ID4gMCk7CisgICAgICAgIGlmICgtLW1SZWZDb3VudCA9PSAwKQorICAgICAgICB7
CisgICAgICAgICAgICBkZXN0cm95KGNvbnRleHQpOworICAgICAgICAgICAgZGVsZXRlIHRoaXM7
CisgICAgICAgIH0KKyAgICB9CiAKICAgICBzaXplX3QgZ2V0UmVmQ291bnQoKSBjb25zdCB7IHJl
dHVybiBtUmVmQ291bnQ7IH0KIAogICBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+UmVmQ291bnRP
YmplY3QoKSB7IEFTU0VSVChtUmVmQ291bnQgPT0gMCk7IH0KKyAgICB2aXJ0dWFsIH5SZWZDb3Vu
dE9iamVjdE5vSUQoKSB7IEFTU0VSVChtUmVmQ291bnQgPT0gMCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGVzdHJveShjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkge30KIAogICBwcml2YXRlOgot
ICAgIEdMdWludCBtSWQ7Ci0KICAgICBtdXRhYmxlIHN0ZDo6c2l6ZV90IG1SZWZDb3VudDsKIH07
CiAKK2NsYXNzIFJlZkNvdW50T2JqZWN0IDogcHVibGljIFJlZkNvdW50T2JqZWN0Tm9JRAorewor
ICBwdWJsaWM6CisgICAgZXhwbGljaXQgUmVmQ291bnRPYmplY3QoR0x1aW50IGlkKSA6IG1JZChp
ZCkge30KKworICAgIEdMdWludCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1JZDsgfQorCisgIHByb3Rl
Y3RlZDoKKyAgICB+UmVmQ291bnRPYmplY3QoKSBvdmVycmlkZSB7fQorCisgIHByaXZhdGU6Cisg
ICAgR0x1aW50IG1JZDsKK307CisKIHRlbXBsYXRlIDxjbGFzcyBPYmplY3RUeXBlPgogY2xhc3Mg
QmluZGluZ1BvaW50ZXIKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9SZW5kZXJidWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9SZW5kZXJidWZmZXIuaAppbmRleCA1N2NjMDgyNzk5OC4uMmJmNWJlZGRhM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZW5kZXJidWZm
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVuZGVyYnVm
ZmVyLmgKQEAgLTM1LDYgKzM1LDggQEAgY2xhc3MgUmVuZGVyYnVmZmVyIGZpbmFsIDogcHVibGlj
IGVnbDo6SW1hZ2VTaWJsaW5nLAogICAgIFJlbmRlcmJ1ZmZlcihyeDo6UmVuZGVyYnVmZmVySW1w
bCAqaW1wbCwgR0x1aW50IGlkKTsKICAgICB2aXJ0dWFsIH5SZW5kZXJidWZmZXIoKTsKIAorICAg
IHZvaWQgZGVzdHJveShjb25zdCBDb250ZXh0ICpjb250ZXh0KSBvdmVycmlkZSB7fQorCiAgICAg
dm9pZCBzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAmbGFiZWwpIG92ZXJyaWRlOwogICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZnZXRMYWJlbCgpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIu
Y3BwCmluZGV4IGQzZGMxMDIzY2M1Li5mNTFiZWQyMThjMyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5jcHAKQEAg
LTEsMTEgKzEsMTEgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMyBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAy
MDAyLTIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
IC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwogCi0v
LyBSZXNvdXJjZU1hbmFnZXIuY3BwOiBJbXBsZW1lbnRzIHRoZSBnbDo6UmVzb3VyY2VNYW5hZ2Vy
IGNsYXNzLCB3aGljaCB0cmFja3MgYW5kCi0vLyByZXRyaWV2ZXMgb2JqZWN0cyB3aGljaCBtYXkg
YmUgc2hhcmVkIGJ5IG11bHRpcGxlIENvbnRleHRzLgorLy8gUmVzb3VyY2VNYW5hZ2VyLmNwcDog
SW1wbGVtZW50cyB0aGUgdGhlIFJlc291cmNlTWFuYWdlciBjbGFzc2VzLCB3aGljaCBoYW5kbGUg
YWxsb2NhdGlvbiBhbmQKKy8vIGxpZmV0aW1lIG9mIEdMIG9iamVjdHMuCiAKICNpbmNsdWRlICJs
aWJBTkdMRS9SZXNvdXJjZU1hbmFnZXIuaCIKIApAQCAtMjEsNTQyICsyMSw1MDIgQEAKIAogbmFt
ZXNwYWNlIGdsCiB7Ci1SZXNvdXJjZU1hbmFnZXI6OlJlc291cmNlTWFuYWdlcigpIDogbVJlZkNv
dW50KDEpCi17Ci19CiAKLVJlc291cmNlTWFuYWdlcjo6flJlc291cmNlTWFuYWdlcigpCituYW1l
c3BhY2UKIHsKLSAgICB3aGlsZSAoIW1CdWZmZXJNYXAuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAg
IGRlbGV0ZUJ1ZmZlcihtQnVmZmVyTWFwLmJlZ2luKCktPmZpcnN0KTsKLSAgICB9Ci0KLSAgICB3
aGlsZSAoIW1Qcm9ncmFtTWFwLmVtcHR5KCkpCi0gICAgewotICAgICAgICBkZWxldGVQcm9ncmFt
KG1Qcm9ncmFtTWFwLmJlZ2luKCktPmZpcnN0KTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoIW1TaGFk
ZXJNYXAuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZVNoYWRlcihtU2hhZGVyTWFwLmJl
Z2luKCktPmZpcnN0KTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoIW1SZW5kZXJidWZmZXJNYXAuZW1w
dHkoKSkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZVJlbmRlcmJ1ZmZlcihtUmVuZGVyYnVmZmVyTWFw
LmJlZ2luKCktPmZpcnN0KTsKLSAgICB9CiAKLSAgICB3aGlsZSAoIW1UZXh0dXJlTWFwLmVtcHR5
KCkpCi0gICAgewotICAgICAgICBkZWxldGVUZXh0dXJlKG1UZXh0dXJlTWFwLmJlZ2luKCktPmZp
cnN0KTsKLSAgICB9Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgUmVzb3VyY2VUeXBlPgorR0x1aW50IEFs
bG9jYXRlRW1wdHlPYmplY3QoSGFuZGxlQWxsb2NhdG9yICpoYW5kbGVBbGxvY2F0b3IsIFJlc291
cmNlTWFwPFJlc291cmNlVHlwZT4gKm9iamVjdE1hcCkKK3sKKyAgICBHTHVpbnQgaGFuZGxlICAg
ICAgICA9IGhhbmRsZUFsbG9jYXRvci0+YWxsb2NhdGUoKTsKKyAgICAoKm9iamVjdE1hcClbaGFu
ZGxlXSA9IG51bGxwdHI7CisgICAgcmV0dXJuIGhhbmRsZTsKK30KIAotICAgIHdoaWxlICghbVNh
bXBsZXJNYXAuZW1wdHkoKSkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZVNhbXBsZXIobVNhbXBsZXJN
YXAuYmVnaW4oKS0+Zmlyc3QpOwotICAgIH0KK3RlbXBsYXRlIDx0eXBlbmFtZSBSZXNvdXJjZVR5
cGU+CitSZXNvdXJjZVR5cGUgKkdldE9iamVjdChjb25zdCBSZXNvdXJjZU1hcDxSZXNvdXJjZVR5
cGU+ICZvYmplY3RNYXAsIEdMdWludCBoYW5kbGUpCit7CisgICAgYXV0byBpdGVyID0gb2JqZWN0
TWFwLmZpbmQoaGFuZGxlKTsKKyAgICByZXR1cm4gaXRlciAhPSBvYmplY3RNYXAuZW5kKCkgPyBp
dGVyLT5zZWNvbmQgOiBudWxscHRyOworfQogCi0gICAgd2hpbGUgKCFtRmVuY2VTeW5jTWFwLmVt
cHR5KCkpCi0gICAgewotICAgICAgICBkZWxldGVGZW5jZVN5bmMobUZlbmNlU3luY01hcC5iZWdp
bigpLT5maXJzdCk7Ci0gICAgfQorfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi0gICAgZm9y
IChhdXRvIGl0ID0gbVBhdGhNYXAuYmVnaW4oKTsgaXQgIT0gbVBhdGhNYXAuZW5kKCk7ICsraXQp
Ci0gICAgewotICAgICAgICBjb25zdCBhdXRvICpwID0gaXQtPnNlY29uZDsKLSAgICAgICAgZGVs
ZXRlIHA7Ci0gICAgfQordGVtcGxhdGUgPHR5cGVuYW1lIEhhbmRsZUFsbG9jYXRvclR5cGU+CitS
ZXNvdXJjZU1hbmFnZXJCYXNlPEhhbmRsZUFsbG9jYXRvclR5cGU+OjpSZXNvdXJjZU1hbmFnZXJC
YXNlKCkgOiBtUmVmQ291bnQoMSkKK3sKIH0KIAotdm9pZCBSZXNvdXJjZU1hbmFnZXI6OmFkZFJl
ZigpCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFuZGxlQWxsb2NhdG9yVHlwZT4KK3ZvaWQgUmVzb3Vy
Y2VNYW5hZ2VyQmFzZTxIYW5kbGVBbGxvY2F0b3JUeXBlPjo6YWRkUmVmKCkKIHsKICAgICBtUmVm
Q291bnQrKzsKIH0KIAotdm9pZCBSZXNvdXJjZU1hbmFnZXI6OnJlbGVhc2UoKQordGVtcGxhdGUg
PHR5cGVuYW1lIEhhbmRsZUFsbG9jYXRvclR5cGU+Cit2b2lkIFJlc291cmNlTWFuYWdlckJhc2U8
SGFuZGxlQWxsb2NhdG9yVHlwZT46OnJlbGVhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCkKIHsK
ICAgICBpZiAoLS1tUmVmQ291bnQgPT0gMCkKICAgICB7CisgICAgICAgIHJlc2V0KGNvbnRleHQp
OwogICAgICAgICBkZWxldGUgdGhpczsKICAgICB9CiB9CiAKLS8vIFJldHVybnMgYW4gdW51c2Vk
IGJ1ZmZlciBuYW1lCi1HTHVpbnQgUmVzb3VyY2VNYW5hZ2VyOjpjcmVhdGVCdWZmZXIoKQordGVt
cGxhdGUgPHR5cGVuYW1lIFJlc291cmNlVHlwZSwgdHlwZW5hbWUgSGFuZGxlQWxsb2NhdG9yVHlw
ZSwgdHlwZW5hbWUgSW1wbFQ+CitUeXBlZFJlc291cmNlTWFuYWdlcjxSZXNvdXJjZVR5cGUsIEhh
bmRsZUFsbG9jYXRvclR5cGUsIEltcGxUPjo6flR5cGVkUmVzb3VyY2VNYW5hZ2VyKCkKIHsKLSAg
ICBHTHVpbnQgaGFuZGxlID0gbUJ1ZmZlckhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOwotCi0g
ICAgbUJ1ZmZlck1hcFtoYW5kbGVdID0gbnVsbHB0cjsKLQotICAgIHJldHVybiBoYW5kbGU7Cisg
ICAgQVNTRVJUKG1PYmplY3RNYXAuZW1wdHkoKSk7CiB9CiAKLS8vIFJldHVybnMgYW4gdW51c2Vk
IHNoYWRlci9wcm9ncmFtIG5hbWUKLUdMdWludCBSZXNvdXJjZU1hbmFnZXI6OmNyZWF0ZVNoYWRl
cihyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6TGltaXRhdGlvbnMgJnJlbmRlcmVyTGltaXRhdGlvbnMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUpCit0ZW1wbGF0
ZSA8dHlwZW5hbWUgUmVzb3VyY2VUeXBlLCB0eXBlbmFtZSBIYW5kbGVBbGxvY2F0b3JUeXBlLCB0
eXBlbmFtZSBJbXBsVD4KK3ZvaWQgVHlwZWRSZXNvdXJjZU1hbmFnZXI8UmVzb3VyY2VUeXBlLCBI
YW5kbGVBbGxvY2F0b3JUeXBlLCBJbXBsVD46OnJlc2V0KGNvbnN0IENvbnRleHQgKmNvbnRleHQp
CiB7Ci0gICAgQVNTRVJUKHR5cGUgPT0gR0xfVkVSVEVYX1NIQURFUiB8fCB0eXBlID09IEdMX0ZS
QUdNRU5UX1NIQURFUiB8fCB0eXBlID09IEdMX0NPTVBVVEVfU0hBREVSKTsKLSAgICBHTHVpbnQg
aGFuZGxlID0gbVByb2dyYW1TaGFkZXJIYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKLQotICAg
IG1TaGFkZXJNYXBbaGFuZGxlXSA9IG5ldyBTaGFkZXIodGhpcywgZmFjdG9yeSwgcmVuZGVyZXJM
aW1pdGF0aW9ucywgdHlwZSwgaGFuZGxlKTsKLQotICAgIHJldHVybiBoYW5kbGU7CisgICAgd2hp
bGUgKCFtT2JqZWN0TWFwLmVtcHR5KCkpCisgICAgeworICAgICAgICBkZWxldGVPYmplY3QoY29u
dGV4dCwgbU9iamVjdE1hcC5iZWdpbigpLT5maXJzdCk7CisgICAgfQorICAgIG1PYmplY3RNYXAu
Y2xlYXIoKTsKIH0KIAotLy8gUmV0dXJucyBhbiB1bnVzZWQgcHJvZ3JhbS9zaGFkZXIgbmFtZQot
R0x1aW50IFJlc291cmNlTWFuYWdlcjo6Y3JlYXRlUHJvZ3JhbShyeDo6R0xJbXBsRmFjdG9yeSAq
ZmFjdG9yeSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZXNvdXJjZVR5cGUsIHR5cGVuYW1lIEhhbmRs
ZUFsbG9jYXRvclR5cGUsIHR5cGVuYW1lIEltcGxUPgordm9pZCBUeXBlZFJlc291cmNlTWFuYWdl
cjxSZXNvdXJjZVR5cGUsIEhhbmRsZUFsbG9jYXRvclR5cGUsIEltcGxUPjo6ZGVsZXRlT2JqZWN0
KAorICAgIGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgR0x1aW50IGhhbmRsZSkKIHsKLSAg
ICBHTHVpbnQgaGFuZGxlID0gbVByb2dyYW1TaGFkZXJIYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUo
KTsKKyAgICBhdXRvIG9iamVjdEl0ZXIgPSBtT2JqZWN0TWFwLmZpbmQoaGFuZGxlKTsKKyAgICBp
ZiAob2JqZWN0SXRlciA9PSBtT2JqZWN0TWFwLmVuZCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KIAotICAgIG1Qcm9ncmFtTWFwW2hhbmRsZV0gPSBuZXcgUHJvZ3JhbShmYWN0b3J5
LCB0aGlzLCBoYW5kbGUpOworICAgIGlmIChvYmplY3RJdGVyLT5zZWNvbmQgIT0gbnVsbHB0cikK
KyAgICB7CisgICAgICAgIG9iamVjdEl0ZXItPnNlY29uZC0+ZGVzdHJveShjb250ZXh0KTsKKyAg
ICAgICAgSW1wbFQ6OkRlbGV0ZU9iamVjdChvYmplY3RJdGVyLT5zZWNvbmQpOworICAgIH0KIAot
ICAgIHJldHVybiBoYW5kbGU7CisgICAgLy8gUmVxdWlyZXMgYW4gZXhwbGljaXQgdGhpcy0+IGJl
Y2F1c2Ugb2YgQysrIHRlbXBsYXRlIHJ1bGVzLgorICAgIHRoaXMtPm1IYW5kbGVBbGxvY2F0b3Iu
cmVsZWFzZShvYmplY3RJdGVyLT5maXJzdCk7CisgICAgbU9iamVjdE1hcC5lcmFzZShvYmplY3RJ
dGVyKTsKIH0KIAotLy8gUmV0dXJucyBhbiB1bnVzZWQgdGV4dHVyZSBuYW1lCi1HTHVpbnQgUmVz
b3VyY2VNYW5hZ2VyOjpjcmVhdGVUZXh0dXJlKCkKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZXNvdXJj
ZVR5cGUsIHR5cGVuYW1lIEhhbmRsZUFsbG9jYXRvclR5cGUsIHR5cGVuYW1lIEltcGxUPgordGVt
cGxhdGUgPHR5cGVuYW1lLi4uIEFyZ1R5cGVzPgorUmVzb3VyY2VUeXBlICpUeXBlZFJlc291cmNl
TWFuYWdlcjxSZXNvdXJjZVR5cGUsIEhhbmRsZUFsbG9jYXRvclR5cGUsIEltcGxUPjo6YWxsb2Nh
dGVPYmplY3QoCisgICAgdHlwZW5hbWUgUmVzb3VyY2VNYXA8UmVzb3VyY2VUeXBlPjo6aXRlcmF0
b3IgJm9iamVjdE1hcEl0ZXIsCisgICAgcng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksCisgICAg
R0x1aW50IGhhbmRsZSwKKyAgICBBcmdUeXBlcy4uLiBhcmdzKQogewotICAgIEdMdWludCBoYW5k
bGUgPSBtVGV4dHVyZUhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOwotCi0gICAgbVRleHR1cmVN
YXBbaGFuZGxlXSA9IG51bGxwdHI7CisgICAgUmVzb3VyY2VUeXBlICpvYmplY3QgPSBJbXBsVDo6
QWxsb2NhdGVOZXdPYmplY3QoZmFjdG9yeSwgaGFuZGxlLCBhcmdzLi4uKTsKIAotICAgIHJldHVy
biBoYW5kbGU7CisgICAgaWYgKG9iamVjdE1hcEl0ZXIgIT0gbU9iamVjdE1hcC5lbmQoKSkKKyAg
ICB7CisgICAgICAgIG9iamVjdE1hcEl0ZXItPnNlY29uZCA9IG9iamVjdDsKKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgdGhpcy0+bUhhbmRsZUFsbG9jYXRvci5yZXNlcnZlKGhhbmRs
ZSk7CisgICAgICAgIG1PYmplY3RNYXBbaGFuZGxlXSA9IG9iamVjdDsKKyAgICB9CisKKyAgICBy
ZXR1cm4gb2JqZWN0OworfQorCit0ZW1wbGF0ZSBjbGFzcyBSZXNvdXJjZU1hbmFnZXJCYXNlPEhh
bmRsZUFsbG9jYXRvcj47Cit0ZW1wbGF0ZSBjbGFzcyBSZXNvdXJjZU1hbmFnZXJCYXNlPEhhbmRs
ZVJhbmdlQWxsb2NhdG9yPjsKK3RlbXBsYXRlIGNsYXNzIFR5cGVkUmVzb3VyY2VNYW5hZ2VyPEJ1
ZmZlciwgSGFuZGxlQWxsb2NhdG9yLCBCdWZmZXJNYW5hZ2VyPjsKK3RlbXBsYXRlIEJ1ZmZlciAq
VHlwZWRSZXNvdXJjZU1hbmFnZXI8QnVmZmVyLCBIYW5kbGVBbGxvY2F0b3IsIEJ1ZmZlck1hbmFn
ZXI+OjphbGxvY2F0ZU9iamVjdCgKKyAgICBSZXNvdXJjZU1hcDxCdWZmZXI+OjppdGVyYXRvciAm
LAorICAgIHJ4OjpHTEltcGxGYWN0b3J5ICosCisgICAgR0x1aW50KTsKK3RlbXBsYXRlIGNsYXNz
IFR5cGVkUmVzb3VyY2VNYW5hZ2VyPFRleHR1cmUsIEhhbmRsZUFsbG9jYXRvciwgVGV4dHVyZU1h
bmFnZXI+OwordGVtcGxhdGUgVGV4dHVyZSAqVHlwZWRSZXNvdXJjZU1hbmFnZXI8VGV4dHVyZSwg
SGFuZGxlQWxsb2NhdG9yLCBUZXh0dXJlTWFuYWdlcj46OmFsbG9jYXRlT2JqZWN0KAorICAgIFJl
c291cmNlTWFwPFRleHR1cmU+OjppdGVyYXRvciAmLAorICAgIHJ4OjpHTEltcGxGYWN0b3J5ICos
CisgICAgR0x1aW50LAorICAgIEdMZW51bSk7Cit0ZW1wbGF0ZSBjbGFzcyBUeXBlZFJlc291cmNl
TWFuYWdlcjxSZW5kZXJidWZmZXIsIEhhbmRsZUFsbG9jYXRvciwgUmVuZGVyYnVmZmVyTWFuYWdl
cj47Cit0ZW1wbGF0ZSBSZW5kZXJidWZmZXIgKgorVHlwZWRSZXNvdXJjZU1hbmFnZXI8UmVuZGVy
YnVmZmVyLCBIYW5kbGVBbGxvY2F0b3IsIFJlbmRlcmJ1ZmZlck1hbmFnZXI+OjphbGxvY2F0ZU9i
amVjdCgKKyAgICBSZXNvdXJjZU1hcDxSZW5kZXJidWZmZXI+OjppdGVyYXRvciAmLAorICAgIHJ4
OjpHTEltcGxGYWN0b3J5ICosCisgICAgR0x1aW50KTsKK3RlbXBsYXRlIGNsYXNzIFR5cGVkUmVz
b3VyY2VNYW5hZ2VyPFNhbXBsZXIsIEhhbmRsZUFsbG9jYXRvciwgU2FtcGxlck1hbmFnZXI+Owor
dGVtcGxhdGUgU2FtcGxlciAqVHlwZWRSZXNvdXJjZU1hbmFnZXI8U2FtcGxlciwgSGFuZGxlQWxs
b2NhdG9yLCBTYW1wbGVyTWFuYWdlcj46OmFsbG9jYXRlT2JqZWN0KAorICAgIFJlc291cmNlTWFw
PFNhbXBsZXI+OjppdGVyYXRvciAmLAorICAgIHJ4OjpHTEltcGxGYWN0b3J5ICosCisgICAgR0x1
aW50KTsKK3RlbXBsYXRlIGNsYXNzIFR5cGVkUmVzb3VyY2VNYW5hZ2VyPEZlbmNlU3luYywgSGFu
ZGxlQWxsb2NhdG9yLCBGZW5jZVN5bmNNYW5hZ2VyPjsKK3RlbXBsYXRlIGNsYXNzIFR5cGVkUmVz
b3VyY2VNYW5hZ2VyPEZyYW1lYnVmZmVyLCBIYW5kbGVBbGxvY2F0b3IsIEZyYW1lYnVmZmVyTWFu
YWdlcj47Cit0ZW1wbGF0ZSBGcmFtZWJ1ZmZlciAqCitUeXBlZFJlc291cmNlTWFuYWdlcjxGcmFt
ZWJ1ZmZlciwgSGFuZGxlQWxsb2NhdG9yLCBGcmFtZWJ1ZmZlck1hbmFnZXI+OjphbGxvY2F0ZU9i
amVjdCgKKyAgICBSZXNvdXJjZU1hcDxGcmFtZWJ1ZmZlcj46Oml0ZXJhdG9yICYsCisgICAgcng6
OkdMSW1wbEZhY3RvcnkgKiwKKyAgICBHTHVpbnQsCisgICAgY29uc3QgQ2FwcyAmKTsKKworLy8g
QnVmZmVyTWFuYWdlciBJbXBsZW1lbnRhdGlvbi4KKworLy8gc3RhdGljCitCdWZmZXIgKkJ1ZmZl
ck1hbmFnZXI6OkFsbG9jYXRlTmV3T2JqZWN0KHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBH
THVpbnQgaGFuZGxlKQoreworICAgIEJ1ZmZlciAqYnVmZmVyID0gbmV3IEJ1ZmZlcihmYWN0b3J5
LCBoYW5kbGUpOworICAgIGJ1ZmZlci0+YWRkUmVmKCk7CisgICAgcmV0dXJuIGJ1ZmZlcjsKIH0K
IAotLy8gUmV0dXJucyBhbiB1bnVzZWQgcmVuZGVyYnVmZmVyIG5hbWUKLUdMdWludCBSZXNvdXJj
ZU1hbmFnZXI6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCisvLyBzdGF0aWMKK3ZvaWQgQnVmZmVyTWFu
YWdlcjo6RGVsZXRlT2JqZWN0KEJ1ZmZlciAqYnVmZmVyKQogewotICAgIEdMdWludCBoYW5kbGUg
PSBtUmVuZGVyYnVmZmVySGFuZGxlQWxsb2NhdG9yLmFsbG9jYXRlKCk7Ci0KLSAgICBtUmVuZGVy
YnVmZmVyTWFwW2hhbmRsZV0gPSBudWxscHRyOwotCi0gICAgcmV0dXJuIGhhbmRsZTsKKyAgICBi
dWZmZXItPnJlbGVhc2UoKTsKIH0KIAotLy8gUmV0dXJucyBhbiB1bnVzZWQgc2FtcGxlciBuYW1l
Ci1HTHVpbnQgUmVzb3VyY2VNYW5hZ2VyOjpjcmVhdGVTYW1wbGVyKCkKK0dMdWludCBCdWZmZXJN
YW5hZ2VyOjpjcmVhdGVCdWZmZXIoKQogewotICAgIEdMdWludCBoYW5kbGUgPSBtU2FtcGxlckhh
bmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOwotCi0gICAgbVNhbXBsZXJNYXBbaGFuZGxlXSA9IG51
bGxwdHI7Ci0KLSAgICByZXR1cm4gaGFuZGxlOworICAgIHJldHVybiBBbGxvY2F0ZUVtcHR5T2Jq
ZWN0KCZtSGFuZGxlQWxsb2NhdG9yLCAmbU9iamVjdE1hcCk7CiB9CiAKLS8vIFJldHVybnMgdGhl
IG5leHQgdW51c2VkIGZlbmNlIG5hbWUsIGFuZCBhbGxvY2F0ZXMgdGhlIGZlbmNlCi1HTHVpbnQg
UmVzb3VyY2VNYW5hZ2VyOjpjcmVhdGVGZW5jZVN5bmMocng6OkdMSW1wbEZhY3RvcnkgKmZhY3Rv
cnkpCitCdWZmZXIgKkJ1ZmZlck1hbmFnZXI6OmdldEJ1ZmZlcihHTHVpbnQgaGFuZGxlKSBjb25z
dAogewotICAgIEdMdWludCBoYW5kbGUgPSBtRmVuY2VTeW5jSGFuZGxlQWxsb2NhdG9yLmFsbG9j
YXRlKCk7Ci0KLSAgICBGZW5jZVN5bmMgKmZlbmNlU3luYyA9IG5ldyBGZW5jZVN5bmMoZmFjdG9y
eS0+Y3JlYXRlRmVuY2VTeW5jKCksIGhhbmRsZSk7Ci0gICAgZmVuY2VTeW5jLT5hZGRSZWYoKTsK
LSAgICBtRmVuY2VTeW5jTWFwW2hhbmRsZV0gPSBmZW5jZVN5bmM7Ci0KLSAgICByZXR1cm4gaGFu
ZGxlOworICAgIHJldHVybiBHZXRPYmplY3QobU9iamVjdE1hcCwgaGFuZGxlKTsKIH0KIAotRXJy
b3JPclJlc3VsdDxHTHVpbnQ+IFJlc291cmNlTWFuYWdlcjo6Y3JlYXRlUGF0aHMocng6OkdMSW1w
bEZhY3RvcnkgKmZhY3RvcnksIEdMc2l6ZWkgcmFuZ2UpCitib29sIEJ1ZmZlck1hbmFnZXI6Omlz
QnVmZmVyR2VuZXJhdGVkKEdMdWludCBidWZmZXIpIGNvbnN0CiB7Ci0gICAgLy8gQWxsb2NhdGUg
Y2xpZW50IHNpZGUgaGFuZGxlcy4KLSAgICBjb25zdCBHTHVpbnQgY2xpZW50ID0gbVBhdGhIYW5k
bGVBbGxvY2F0b3IuYWxsb2NhdGVSYW5nZShzdGF0aWNfY2FzdDxHTHVpbnQ+KHJhbmdlKSk7Ci0g
ICAgaWYgKGNsaWVudCA9PSBIYW5kbGVSYW5nZUFsbG9jYXRvcjo6a0ludmFsaWRIYW5kbGUpCi0g
ICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBhbGxv
Y2F0ZSBwYXRoIGhhbmRsZSByYW5nZS4iKTsKLQotICAgIGNvbnN0IGF1dG8gJnBhdGhzID0gZmFj
dG9yeS0+Y3JlYXRlUGF0aHMocmFuZ2UpOwotICAgIGlmIChwYXRocy5lbXB0eSgpKQotICAgIHsK
LSAgICAgICAgbVBhdGhIYW5kbGVBbGxvY2F0b3IucmVsZWFzZVJhbmdlKGNsaWVudCwgcmFuZ2Up
OwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8g
YWxsb2NhdGUgcGF0aCBvYmplY3RzLiIpOwotICAgIH0KKyAgICByZXR1cm4gYnVmZmVyID09IDAg
fHwgbU9iamVjdE1hcC5maW5kKGJ1ZmZlcikgIT0gbU9iamVjdE1hcC5lbmQoKTsKK30KIAotICAg
IGF1dG8gaGludCA9IG1QYXRoTWFwLmJlZ2luKCk7CisvLyBTaGFkZXJQcm9ncmFtTWFuYWdlciBJ
bXBsZW1lbnRhdGlvbi4KIAotICAgIGZvciAoR0xzaXplaSBpID0gMDsgaSA8IHJhbmdlOyArK2kp
Ci0gICAgewotICAgICAgICBjb25zdCBhdXRvIGltcGwgPSBwYXRoc1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oaSldOwotICAgICAgICBjb25zdCBhdXRvIGlkICAgPSBjbGllbnQgKyBpOwotICAgICAg
ICBoaW50ICAgICAgICAgICAgPSBtUGF0aE1hcC5pbnNlcnQoaGludCwgc3RkOjptYWtlX3BhaXIo
aWQsIG5ldyBQYXRoKGltcGwpKSk7Ci0gICAgfQotICAgIHJldHVybiBjbGllbnQ7CitTaGFkZXJQ
cm9ncmFtTWFuYWdlcjo6flNoYWRlclByb2dyYW1NYW5hZ2VyKCkKK3sKKyAgICBBU1NFUlQobVBy
b2dyYW1zLmVtcHR5KCkpOworICAgIEFTU0VSVChtU2hhZGVycy5lbXB0eSgpKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZU1hbmFnZXI6OmRlbGV0ZUJ1ZmZlcihHTHVpbnQgYnVmZmVyKQordm9pZCBTaGFk
ZXJQcm9ncmFtTWFuYWdlcjo6cmVzZXQoY29uc3QgQ29udGV4dCAqY29udGV4dCkKIHsKLSAgICBh
dXRvIGJ1ZmZlck9iamVjdCA9IG1CdWZmZXJNYXAuZmluZChidWZmZXIpOwotCi0gICAgaWYgKGJ1
ZmZlck9iamVjdCAhPSBtQnVmZmVyTWFwLmVuZCgpKQorICAgIHdoaWxlICghbVByb2dyYW1zLmVt
cHR5KCkpCiAgICAgewotICAgICAgICBtQnVmZmVySGFuZGxlQWxsb2NhdG9yLnJlbGVhc2UoYnVm
ZmVyT2JqZWN0LT5maXJzdCk7Ci0gICAgICAgIGlmIChidWZmZXJPYmplY3QtPnNlY29uZCkgYnVm
ZmVyT2JqZWN0LT5zZWNvbmQtPnJlbGVhc2UoKTsKLSAgICAgICAgbUJ1ZmZlck1hcC5lcmFzZShi
dWZmZXJPYmplY3QpOworICAgICAgICBkZWxldGVQcm9ncmFtKGNvbnRleHQsIG1Qcm9ncmFtcy5i
ZWdpbigpLT5maXJzdCk7CiAgICAgfQotfQotCi12b2lkIFJlc291cmNlTWFuYWdlcjo6ZGVsZXRl
U2hhZGVyKEdMdWludCBzaGFkZXIpCi17Ci0gICAgYXV0byBzaGFkZXJPYmplY3QgPSBtU2hhZGVy
TWFwLmZpbmQoc2hhZGVyKTsKLQotICAgIGlmIChzaGFkZXJPYmplY3QgIT0gbVNoYWRlck1hcC5l
bmQoKSkKKyAgICBtUHJvZ3JhbXMuY2xlYXIoKTsKKyAgICB3aGlsZSAoIW1TaGFkZXJzLmVtcHR5
KCkpCiAgICAgewotICAgICAgICBpZiAoc2hhZGVyT2JqZWN0LT5zZWNvbmQtPmdldFJlZkNvdW50
KCkgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgbVByb2dyYW1TaGFkZXJIYW5kbGVBbGxv
Y2F0b3IucmVsZWFzZShzaGFkZXJPYmplY3QtPmZpcnN0KTsKLSAgICAgICAgICAgIGRlbGV0ZSBz
aGFkZXJPYmplY3QtPnNlY29uZDsKLSAgICAgICAgICAgIG1TaGFkZXJNYXAuZXJhc2Uoc2hhZGVy
T2JqZWN0KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHNoYWRlck9iamVjdC0+c2Vjb25kLT5mbGFnRm9yRGVsZXRpb24oKTsKLSAgICAgICAgfQorICAg
ICAgICBkZWxldGVTaGFkZXIoY29udGV4dCwgbVNoYWRlcnMuYmVnaW4oKS0+Zmlyc3QpOwogICAg
IH0KKyAgICBtU2hhZGVycy5jbGVhcigpOwogfQogCi12b2lkIFJlc291cmNlTWFuYWdlcjo6ZGVs
ZXRlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKK0dMdWludCBTaGFkZXJQcm9ncmFtTWFuYWdlcjo6
Y3JlYXRlU2hhZGVyKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkxpbWl0YXRpb25zICZyZW5kZXJl
ckxpbWl0YXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUpCiB7Ci0gICAgYXV0byBwcm9ncmFtT2JqZWN0ID0gbVByb2dyYW1NYXAuZmlu
ZChwcm9ncmFtKTsKLQotICAgIGlmIChwcm9ncmFtT2JqZWN0ICE9IG1Qcm9ncmFtTWFwLmVuZCgp
KQotICAgIHsKLSAgICAgICAgaWYgKHByb2dyYW1PYmplY3QtPnNlY29uZC0+Z2V0UmVmQ291bnQo
KSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBtUHJvZ3JhbVNoYWRlckhhbmRsZUFsbG9j
YXRvci5yZWxlYXNlKHByb2dyYW1PYmplY3QtPmZpcnN0KTsKLSAgICAgICAgICAgIGRlbGV0ZSBw
cm9ncmFtT2JqZWN0LT5zZWNvbmQ7Ci0gICAgICAgICAgICBtUHJvZ3JhbU1hcC5lcmFzZShwcm9n
cmFtT2JqZWN0KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHByb2dyYW1PYmplY3QtPnNlY29uZC0+ZmxhZ0ZvckRlbGV0aW9uKCk7Ci0gICAgICAgIH0K
LSAgICB9CisgICAgQVNTRVJUKHR5cGUgPT0gR0xfVkVSVEVYX1NIQURFUiB8fCB0eXBlID09IEdM
X0ZSQUdNRU5UX1NIQURFUiB8fCB0eXBlID09IEdMX0NPTVBVVEVfU0hBREVSKTsKKyAgICBHTHVp
bnQgaGFuZGxlICAgID0gbUhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOworICAgIG1TaGFkZXJz
W2hhbmRsZV0gPSBuZXcgU2hhZGVyKHRoaXMsIGZhY3RvcnksIHJlbmRlcmVyTGltaXRhdGlvbnMs
IHR5cGUsIGhhbmRsZSk7CisgICAgcmV0dXJuIGhhbmRsZTsKIH0KIAotdm9pZCBSZXNvdXJjZU1h
bmFnZXI6OmRlbGV0ZVRleHR1cmUoR0x1aW50IHRleHR1cmUpCit2b2lkIFNoYWRlclByb2dyYW1N
YW5hZ2VyOjpkZWxldGVTaGFkZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHNoYWRl
cikKIHsKLSAgICBhdXRvIHRleHR1cmVPYmplY3QgPSBtVGV4dHVyZU1hcC5maW5kKHRleHR1cmUp
OwotCi0gICAgaWYgKHRleHR1cmVPYmplY3QgIT0gbVRleHR1cmVNYXAuZW5kKCkpCi0gICAgewot
ICAgICAgICBtVGV4dHVyZUhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKHRleHR1cmVPYmplY3QtPmZp
cnN0KTsKLSAgICAgICAgaWYgKHRleHR1cmVPYmplY3QtPnNlY29uZCkgdGV4dHVyZU9iamVjdC0+
c2Vjb25kLT5yZWxlYXNlKCk7Ci0gICAgICAgIG1UZXh0dXJlTWFwLmVyYXNlKHRleHR1cmVPYmpl
Y3QpOwotICAgIH0KKyAgICBkZWxldGVPYmplY3QoY29udGV4dCwgJm1TaGFkZXJzLCBzaGFkZXIp
OwogfQogCi12b2lkIFJlc291cmNlTWFuYWdlcjo6ZGVsZXRlUmVuZGVyYnVmZmVyKEdMdWludCBy
ZW5kZXJidWZmZXIpCitTaGFkZXIgKlNoYWRlclByb2dyYW1NYW5hZ2VyOjpnZXRTaGFkZXIoR0x1
aW50IGhhbmRsZSkgY29uc3QKIHsKLSAgICBhdXRvIHJlbmRlcmJ1ZmZlck9iamVjdCA9IG1SZW5k
ZXJidWZmZXJNYXAuZmluZChyZW5kZXJidWZmZXIpOwotCi0gICAgaWYgKHJlbmRlcmJ1ZmZlck9i
amVjdCAhPSBtUmVuZGVyYnVmZmVyTWFwLmVuZCgpKQotICAgIHsKLSAgICAgICAgbVJlbmRlcmJ1
ZmZlckhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKHJlbmRlcmJ1ZmZlck9iamVjdC0+Zmlyc3QpOwot
ICAgICAgICBpZiAocmVuZGVyYnVmZmVyT2JqZWN0LT5zZWNvbmQpIHJlbmRlcmJ1ZmZlck9iamVj
dC0+c2Vjb25kLT5yZWxlYXNlKCk7Ci0gICAgICAgIG1SZW5kZXJidWZmZXJNYXAuZXJhc2UocmVu
ZGVyYnVmZmVyT2JqZWN0KTsKLSAgICB9CisgICAgcmV0dXJuIEdldE9iamVjdChtU2hhZGVycywg
aGFuZGxlKTsKIH0KIAotdm9pZCBSZXNvdXJjZU1hbmFnZXI6OmRlbGV0ZVNhbXBsZXIoR0x1aW50
IHNhbXBsZXIpCitHTHVpbnQgU2hhZGVyUHJvZ3JhbU1hbmFnZXI6OmNyZWF0ZVByb2dyYW0ocng6
OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnkpCiB7Ci0gICAgYXV0byBzYW1wbGVyT2JqZWN0ID0gbVNh
bXBsZXJNYXAuZmluZChzYW1wbGVyKTsKLQotICAgIGlmIChzYW1wbGVyT2JqZWN0ICE9IG1TYW1w
bGVyTWFwLmVuZCgpKQotICAgIHsKLSAgICAgICAgbVNhbXBsZXJIYW5kbGVBbGxvY2F0b3IucmVs
ZWFzZShzYW1wbGVyT2JqZWN0LT5maXJzdCk7Ci0gICAgICAgIGlmIChzYW1wbGVyT2JqZWN0LT5z
ZWNvbmQpIHNhbXBsZXJPYmplY3QtPnNlY29uZC0+cmVsZWFzZSgpOwotICAgICAgICBtU2FtcGxl
ck1hcC5lcmFzZShzYW1wbGVyT2JqZWN0KTsKLSAgICB9CisgICAgR0x1aW50IGhhbmRsZSAgICAg
PSBtSGFuZGxlQWxsb2NhdG9yLmFsbG9jYXRlKCk7CisgICAgbVByb2dyYW1zW2hhbmRsZV0gPSBu
ZXcgUHJvZ3JhbShmYWN0b3J5LCB0aGlzLCBoYW5kbGUpOworICAgIHJldHVybiBoYW5kbGU7CiB9
CiAKLXZvaWQgUmVzb3VyY2VNYW5hZ2VyOjpkZWxldGVGZW5jZVN5bmMoR0x1aW50IGZlbmNlU3lu
YykKK3ZvaWQgU2hhZGVyUHJvZ3JhbU1hbmFnZXI6OmRlbGV0ZVByb2dyYW0oY29uc3QgZ2w6OkNv
bnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtKQogewotICAgIGF1dG8gZmVuY2VPYmplY3RJ
dCA9IG1GZW5jZVN5bmNNYXAuZmluZChmZW5jZVN5bmMpOwotCi0gICAgaWYgKGZlbmNlT2JqZWN0
SXQgIT0gbUZlbmNlU3luY01hcC5lbmQoKSkKLSAgICB7Ci0gICAgICAgIG1GZW5jZVN5bmNIYW5k
bGVBbGxvY2F0b3IucmVsZWFzZShmZW5jZU9iamVjdEl0LT5maXJzdCk7Ci0gICAgICAgIGlmIChm
ZW5jZU9iamVjdEl0LT5zZWNvbmQpIGZlbmNlT2JqZWN0SXQtPnNlY29uZC0+cmVsZWFzZSgpOwot
ICAgICAgICBtRmVuY2VTeW5jTWFwLmVyYXNlKGZlbmNlT2JqZWN0SXQpOwotICAgIH0KKyAgICBk
ZWxldGVPYmplY3QoY29udGV4dCwgJm1Qcm9ncmFtcywgcHJvZ3JhbSk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VNYW5hZ2VyOjpkZWxldGVQYXRocyhHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgcmFuZ2UpCitQ
cm9ncmFtICpTaGFkZXJQcm9ncmFtTWFuYWdlcjo6Z2V0UHJvZ3JhbShHTHVpbnQgaGFuZGxlKSBj
b25zdAogewotICAgIGZvciAoR0xzaXplaSBpID0gMDsgaSA8IHJhbmdlOyArK2kpCi0gICAgewot
ICAgICAgICBjb25zdCBhdXRvIGlkID0gZmlyc3QgKyBpOwotICAgICAgICBjb25zdCBhdXRvIGl0
ID0gbVBhdGhNYXAuZmluZChpZCk7Ci0gICAgICAgIGlmIChpdCA9PSBtUGF0aE1hcC5lbmQoKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBQYXRoICpwID0gaXQtPnNlY29uZDsKLSAg
ICAgICAgZGVsZXRlIHA7Ci0gICAgICAgIG1QYXRoTWFwLmVyYXNlKGl0KTsKLSAgICB9Ci0gICAg
bVBhdGhIYW5kbGVBbGxvY2F0b3IucmVsZWFzZVJhbmdlKGZpcnN0LCBzdGF0aWNfY2FzdDxHTHVp
bnQ+KHJhbmdlKSk7CisgICAgcmV0dXJuIEdldE9iamVjdChtUHJvZ3JhbXMsIGhhbmRsZSk7CiB9
CiAKLUJ1ZmZlciAqUmVzb3VyY2VNYW5hZ2VyOjpnZXRCdWZmZXIodW5zaWduZWQgaW50IGhhbmRs
ZSkKK3RlbXBsYXRlIDx0eXBlbmFtZSBPYmplY3RUeXBlPgordm9pZCBTaGFkZXJQcm9ncmFtTWFu
YWdlcjo6ZGVsZXRlT2JqZWN0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VNYXA8T2JqZWN0VHlwZT4gKm9iamVj
dE1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQp
CiB7Ci0gICAgYXV0byBidWZmZXIgPSBtQnVmZmVyTWFwLmZpbmQoaGFuZGxlKTsKLQotICAgIGlm
IChidWZmZXIgPT0gbUJ1ZmZlck1hcC5lbmQoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIH0KLSAgICBlbHNlCisgICAgYXV0byBpdGVyID0gb2JqZWN0TWFwLT5maW5kKGlk
KTsKKyAgICBpZiAoaXRlciA9PSBvYmplY3RNYXAtPmVuZCgpKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGJ1ZmZlci0+c2Vjb25kOworICAgICAgICByZXR1cm47CiAgICAgfQotfQotCi1TaGFkZXIg
KlJlc291cmNlTWFuYWdlcjo6Z2V0U2hhZGVyKHVuc2lnbmVkIGludCBoYW5kbGUpIGNvbnN0Ci17
Ci0gICAgYXV0byBzaGFkZXIgPSBtU2hhZGVyTWFwLmZpbmQoaGFuZGxlKTsKIAotICAgIGlmIChz
aGFkZXIgPT0gbVNoYWRlck1hcC5lbmQoKSkKKyAgICBhdXRvIG9iamVjdCA9IGl0ZXItPnNlY29u
ZDsKKyAgICBpZiAob2JqZWN0LT5nZXRSZWZDb3VudCgpID09IDApCiAgICAgewotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgbUhhbmRsZUFsbG9jYXRvci5yZWxlYXNlKGlkKTsKKyAg
ICAgICAgb2JqZWN0LT5kZXN0cm95KGNvbnRleHQpOworICAgICAgICBTYWZlRGVsZXRlKG9iamVj
dCk7CisgICAgICAgIG9iamVjdE1hcC0+ZXJhc2UoaXRlcik7CiAgICAgfQogICAgIGVsc2UKICAg
ICB7Ci0gICAgICAgIHJldHVybiBzaGFkZXItPnNlY29uZDsKKyAgICAgICAgb2JqZWN0LT5mbGFn
Rm9yRGVsZXRpb24oKTsKICAgICB9CiB9CiAKLVRleHR1cmUgKlJlc291cmNlTWFuYWdlcjo6Z2V0
VGV4dHVyZSh1bnNpZ25lZCBpbnQgaGFuZGxlKQotewotICAgIGlmIChoYW5kbGUgPT0gMCkKLSAg
ICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBhdXRvIHRleHR1cmUgPSBtVGV4dHVyZU1hcC5m
aW5kKGhhbmRsZSk7CisvLyBUZXh0dXJlTWFuYWdlciBJbXBsZW1lbnRhdGlvbi4KIAotICAgIGlm
ICh0ZXh0dXJlID09IG1UZXh0dXJlTWFwLmVuZCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiB0ZXh0dXJlLT5z
ZWNvbmQ7Ci0gICAgfQorLy8gc3RhdGljCitUZXh0dXJlICpUZXh0dXJlTWFuYWdlcjo6QWxsb2Nh
dGVOZXdPYmplY3Qocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBoYW5kbGUsIEdM
ZW51bSB0YXJnZXQpCit7CisgICAgVGV4dHVyZSAqdGV4dHVyZSA9IG5ldyBUZXh0dXJlKGZhY3Rv
cnksIGhhbmRsZSwgdGFyZ2V0KTsKKyAgICB0ZXh0dXJlLT5hZGRSZWYoKTsKKyAgICByZXR1cm4g
dGV4dHVyZTsKIH0KIAotUHJvZ3JhbSAqUmVzb3VyY2VNYW5hZ2VyOjpnZXRQcm9ncmFtKHVuc2ln
bmVkIGludCBoYW5kbGUpIGNvbnN0CisvLyBzdGF0aWMKK3ZvaWQgVGV4dHVyZU1hbmFnZXI6OkRl
bGV0ZU9iamVjdChUZXh0dXJlICp0ZXh0dXJlKQogewotICAgIGF1dG8gcHJvZ3JhbSA9IG1Qcm9n
cmFtTWFwLmZpbmQoaGFuZGxlKTsKLQotICAgIGlmIChwcm9ncmFtID09IG1Qcm9ncmFtTWFwLmVu
ZCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotICAgIGVsc2UKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBwcm9ncmFtLT5zZWNvbmQ7Ci0gICAgfQorICAgIHRleHR1cmUt
PnJlbGVhc2UoKTsKIH0KIAotUmVuZGVyYnVmZmVyICpSZXNvdXJjZU1hbmFnZXI6OmdldFJlbmRl
cmJ1ZmZlcih1bnNpZ25lZCBpbnQgaGFuZGxlKQorR0x1aW50IFRleHR1cmVNYW5hZ2VyOjpjcmVh
dGVUZXh0dXJlKCkKIHsKLSAgICBhdXRvIHJlbmRlcmJ1ZmZlciA9IG1SZW5kZXJidWZmZXJNYXAu
ZmluZChoYW5kbGUpOworICAgIHJldHVybiBBbGxvY2F0ZUVtcHR5T2JqZWN0KCZtSGFuZGxlQWxs
b2NhdG9yLCAmbU9iamVjdE1hcCk7Cit9CiAKLSAgICBpZiAocmVuZGVyYnVmZmVyID09IG1SZW5k
ZXJidWZmZXJNYXAuZW5kKCkpCi0gICAgewotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9
Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlbmRlcmJ1ZmZlci0+c2Vjb25kOwot
ICAgIH0KK1RleHR1cmUgKlRleHR1cmVNYW5hZ2VyOjpnZXRUZXh0dXJlKEdMdWludCBoYW5kbGUp
IGNvbnN0Cit7CisgICAgQVNTRVJUKEdldE9iamVjdChtT2JqZWN0TWFwLCAwKSA9PSBudWxscHRy
KTsKKyAgICByZXR1cm4gR2V0T2JqZWN0KG1PYmplY3RNYXAsIGhhbmRsZSk7CiB9CiAKLVNhbXBs
ZXIgKlJlc291cmNlTWFuYWdlcjo6Z2V0U2FtcGxlcih1bnNpZ25lZCBpbnQgaGFuZGxlKQorYm9v
bCBUZXh0dXJlTWFuYWdlcjo6aXNUZXh0dXJlR2VuZXJhdGVkKEdMdWludCB0ZXh0dXJlKSBjb25z
dAogewotICAgIGF1dG8gc2FtcGxlciA9IG1TYW1wbGVyTWFwLmZpbmQoaGFuZGxlKTsKKyAgICBy
ZXR1cm4gdGV4dHVyZSA9PSAwIHx8IG1PYmplY3RNYXAuZmluZCh0ZXh0dXJlKSAhPSBtT2JqZWN0
TWFwLmVuZCgpOworfQogCi0gICAgaWYgKHNhbXBsZXIgPT0gbVNhbXBsZXJNYXAuZW5kKCkpCi0g
ICAgewotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0gICAgZWxzZQordm9pZCBUZXh0
dXJlTWFuYWdlcjo6aW52YWxpZGF0ZVRleHR1cmVDb21wbGVuZXNzQ2FjaGUoKQoreworICAgIGZv
ciAoYXV0byAmdGV4dHVyZSA6IG1PYmplY3RNYXApCiAgICAgewotICAgICAgICByZXR1cm4gc2Ft
cGxlci0+c2Vjb25kOworICAgICAgICBpZiAodGV4dHVyZS5zZWNvbmQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHRleHR1cmUuc2Vjb25kLT5pbnZhbGlkYXRlQ29tcGxldGVuZXNzQ2FjaGUoKTsK
KyAgICAgICAgfQogICAgIH0KIH0KIAotRmVuY2VTeW5jICpSZXNvdXJjZU1hbmFnZXI6OmdldEZl
bmNlU3luYyh1bnNpZ25lZCBpbnQgaGFuZGxlKQorLy8gUmVuZGVyYnVmZmVyTWFuYWdlciBJbXBs
ZW1lbnRhdGlvbi4KKworLy8gc3RhdGljCitSZW5kZXJidWZmZXIgKlJlbmRlcmJ1ZmZlck1hbmFn
ZXI6OkFsbG9jYXRlTmV3T2JqZWN0KHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQg
aGFuZGxlKQogewotICAgIGF1dG8gZmVuY2VPYmplY3RJdCA9IG1GZW5jZVN5bmNNYXAuZmluZCho
YW5kbGUpOworICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyID0gbmV3IFJlbmRlcmJ1ZmZl
cihmYWN0b3J5LT5jcmVhdGVSZW5kZXJidWZmZXIoKSwgaGFuZGxlKTsKKyAgICByZW5kZXJidWZm
ZXItPmFkZFJlZigpOworICAgIHJldHVybiByZW5kZXJidWZmZXI7Cit9CiAKLSAgICBpZiAoZmVu
Y2VPYmplY3RJdCA9PSBtRmVuY2VTeW5jTWFwLmVuZCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiBmZW5jZU9i
amVjdEl0LT5zZWNvbmQ7Ci0gICAgfQorLy8gc3RhdGljCit2b2lkIFJlbmRlcmJ1ZmZlck1hbmFn
ZXI6OkRlbGV0ZU9iamVjdChSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlcikKK3sKKyAgICByZW5k
ZXJidWZmZXItPnJlbGVhc2UoKTsKIH0KIAotY29uc3QgUGF0aCAqUmVzb3VyY2VNYW5hZ2VyOjpn
ZXRQYXRoKEdMdWludCBoYW5kbGUpIGNvbnN0CitHTHVpbnQgUmVuZGVyYnVmZmVyTWFuYWdlcjo6
Y3JlYXRlUmVuZGVyYnVmZmVyKCkKIHsKLSAgICBhdXRvIGl0ID0gbVBhdGhNYXAuZmluZChoYW5k
bGUpOwotICAgIGlmIChpdCA9PSBzdGQ6OmVuZChtUGF0aE1hcCkpCi0gICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIHJldHVybiBpdC0+c2Vjb25kOworICAgIHJldHVybiBBbGxvY2F0ZUVtcHR5
T2JqZWN0KCZtSGFuZGxlQWxsb2NhdG9yLCAmbU9iamVjdE1hcCk7CiB9CiAKLVBhdGggKlJlc291
cmNlTWFuYWdlcjo6Z2V0UGF0aChHTHVpbnQgaGFuZGxlKQorUmVuZGVyYnVmZmVyICpSZW5kZXJi
dWZmZXJNYW5hZ2VyOjpnZXRSZW5kZXJidWZmZXIoR0x1aW50IGhhbmRsZSkKIHsKLSAgICBhdXRv
IGl0ID0gbVBhdGhNYXAuZmluZChoYW5kbGUpOwotICAgIGlmIChpdCA9PSBzdGQ6OmVuZChtUGF0
aE1hcCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBHZXRPYmplY3QobU9i
amVjdE1hcCwgaGFuZGxlKTsKK30KIAotICAgIHJldHVybiBpdC0+c2Vjb25kOworYm9vbCBSZW5k
ZXJidWZmZXJNYW5hZ2VyOjppc1JlbmRlcmJ1ZmZlckdlbmVyYXRlZChHTHVpbnQgcmVuZGVyYnVm
ZmVyKSBjb25zdAoreworICAgIHJldHVybiByZW5kZXJidWZmZXIgPT0gMCB8fCBtT2JqZWN0TWFw
LmZpbmQocmVuZGVyYnVmZmVyKSAhPSBtT2JqZWN0TWFwLmVuZCgpOwogfQogCi1ib29sIFJlc291
cmNlTWFuYWdlcjo6aGFzUGF0aChHTHVpbnQgaGFuZGxlKSBjb25zdAorLy8gU2FtcGxlck1hbmFn
ZXIgSW1wbGVtZW50YXRpb24uCisKKy8vIHN0YXRpYworU2FtcGxlciAqU2FtcGxlck1hbmFnZXI6
OkFsbG9jYXRlTmV3T2JqZWN0KHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgaGFu
ZGxlKQogewotICAgIHJldHVybiBtUGF0aEhhbmRsZUFsbG9jYXRvci5pc1VzZWQoaGFuZGxlKTsK
KyAgICBTYW1wbGVyICpzYW1wbGVyID0gbmV3IFNhbXBsZXIoZmFjdG9yeSwgaGFuZGxlKTsKKyAg
ICBzYW1wbGVyLT5hZGRSZWYoKTsKKyAgICByZXR1cm4gc2FtcGxlcjsKIH0KIAotdm9pZCBSZXNv
dXJjZU1hbmFnZXI6OnNldFJlbmRlcmJ1ZmZlcihHTHVpbnQgaGFuZGxlLCBSZW5kZXJidWZmZXIg
KmJ1ZmZlcikKKy8vIHN0YXRpYwordm9pZCBTYW1wbGVyTWFuYWdlcjo6RGVsZXRlT2JqZWN0KFNh
bXBsZXIgKnNhbXBsZXIpCiB7Ci0gICAgbVJlbmRlcmJ1ZmZlck1hcFtoYW5kbGVdID0gYnVmZmVy
OworICAgIHNhbXBsZXItPnJlbGVhc2UoKTsKIH0KIAotQnVmZmVyICpSZXNvdXJjZU1hbmFnZXI6
OmNoZWNrQnVmZmVyQWxsb2NhdGlvbihyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50
IGhhbmRsZSkKK0dMdWludCBTYW1wbGVyTWFuYWdlcjo6Y3JlYXRlU2FtcGxlcigpCiB7Ci0gICAg
aWYgKGhhbmRsZSA9PSAwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQor
ICAgIHJldHVybiBBbGxvY2F0ZUVtcHR5T2JqZWN0KCZtSGFuZGxlQWxsb2NhdG9yLCAmbU9iamVj
dE1hcCk7Cit9CiAKLSAgICBhdXRvIGJ1ZmZlck1hcEl0ICAgICA9IG1CdWZmZXJNYXAuZmluZCho
YW5kbGUpOwotICAgIGJvb2wgaGFuZGxlQWxsb2NhdGVkID0gKGJ1ZmZlck1hcEl0ICE9IG1CdWZm
ZXJNYXAuZW5kKCkpOworU2FtcGxlciAqU2FtcGxlck1hbmFnZXI6OmdldFNhbXBsZXIoR0x1aW50
IGhhbmRsZSkKK3sKKyAgICByZXR1cm4gR2V0T2JqZWN0KG1PYmplY3RNYXAsIGhhbmRsZSk7Cit9
CiAKLSAgICBpZiAoaGFuZGxlQWxsb2NhdGVkICYmIGJ1ZmZlck1hcEl0LT5zZWNvbmQgIT0gbnVs
bHB0cikKLSAgICB7Ci0gICAgICAgIHJldHVybiBidWZmZXJNYXBJdC0+c2Vjb25kOwotICAgIH0K
K2Jvb2wgU2FtcGxlck1hbmFnZXI6OmlzU2FtcGxlcihHTHVpbnQgc2FtcGxlcikKK3sKKyAgICBy
ZXR1cm4gbU9iamVjdE1hcC5maW5kKHNhbXBsZXIpICE9IG1PYmplY3RNYXAuZW5kKCk7Cit9CiAK
LSAgICBCdWZmZXIgKmJ1ZmZlciA9IG5ldyBCdWZmZXIoZmFjdG9yeS0+Y3JlYXRlQnVmZmVyKCks
IGhhbmRsZSk7Ci0gICAgYnVmZmVyLT5hZGRSZWYoKTsKKy8vIEZlbmNlU3luY01hbmFnZXIgSW1w
bGVtZW50YXRpb24uCiAKLSAgICBpZiAoaGFuZGxlQWxsb2NhdGVkKQotICAgIHsKLSAgICAgICAg
YnVmZmVyTWFwSXQtPnNlY29uZCA9IGJ1ZmZlcjsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAg
ICAgICAgbUJ1ZmZlckhhbmRsZUFsbG9jYXRvci5yZXNlcnZlKGhhbmRsZSk7Ci0gICAgICAgIG1C
dWZmZXJNYXBbaGFuZGxlXSA9IGJ1ZmZlcjsKLSAgICB9CisvLyBzdGF0aWMKK3ZvaWQgRmVuY2VT
eW5jTWFuYWdlcjo6RGVsZXRlT2JqZWN0KEZlbmNlU3luYyAqZmVuY2VTeW5jKQoreworICAgIGZl
bmNlU3luYy0+cmVsZWFzZSgpOworfQogCi0gICAgcmV0dXJuIGJ1ZmZlcjsKK0dMdWludCBGZW5j
ZVN5bmNNYW5hZ2VyOjpjcmVhdGVGZW5jZVN5bmMocng6OkdMSW1wbEZhY3RvcnkgKmZhY3Rvcnkp
Cit7CisgICAgR0x1aW50IGhhbmRsZSAgICAgICAgPSBtSGFuZGxlQWxsb2NhdG9yLmFsbG9jYXRl
KCk7CisgICAgRmVuY2VTeW5jICpmZW5jZVN5bmMgPSBuZXcgRmVuY2VTeW5jKGZhY3RvcnktPmNy
ZWF0ZUZlbmNlU3luYygpLCBoYW5kbGUpOworICAgIGZlbmNlU3luYy0+YWRkUmVmKCk7CisgICAg
bU9iamVjdE1hcFtoYW5kbGVdID0gZmVuY2VTeW5jOworICAgIHJldHVybiBoYW5kbGU7CiB9CiAK
LVRleHR1cmUgKlJlc291cmNlTWFuYWdlcjo6Y2hlY2tUZXh0dXJlQWxsb2NhdGlvbihyeDo6R0xJ
bXBsRmFjdG9yeSAqZmFjdG9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgaGFuZGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlKQorRmVuY2VTeW5jICpGZW5jZVN5bmNN
YW5hZ2VyOjpnZXRGZW5jZVN5bmMoR0x1aW50IGhhbmRsZSkKIHsKLSAgICBpZiAoaGFuZGxlID09
IDApCi0gICAgewotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgcmV0dXJuIEdl
dE9iamVjdChtT2JqZWN0TWFwLCBoYW5kbGUpOworfQogCi0gICAgYXV0byB0ZXh0dXJlTWFwSXQg
ICAgPSBtVGV4dHVyZU1hcC5maW5kKGhhbmRsZSk7Ci0gICAgYm9vbCBoYW5kbGVBbGxvY2F0ZWQg
PSAodGV4dHVyZU1hcEl0ICE9IG1UZXh0dXJlTWFwLmVuZCgpKTsKKy8vIFBhdGhNYW5hZ2VyIElt
cGxlbWVudGF0aW9uLgogCi0gICAgaWYgKGhhbmRsZUFsbG9jYXRlZCAmJiB0ZXh0dXJlTWFwSXQt
PnNlY29uZCAhPSBudWxscHRyKQorRXJyb3JPclJlc3VsdDxHTHVpbnQ+IFBhdGhNYW5hZ2VyOjpj
cmVhdGVQYXRocyhyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0xzaXplaSByYW5nZSkKK3sK
KyAgICAvLyBBbGxvY2F0ZSBjbGllbnQgc2lkZSBoYW5kbGVzLgorICAgIGNvbnN0IEdMdWludCBj
bGllbnQgPSBtSGFuZGxlQWxsb2NhdG9yLmFsbG9jYXRlUmFuZ2Uoc3RhdGljX2Nhc3Q8R0x1aW50
PihyYW5nZSkpOworICAgIGlmIChjbGllbnQgPT0gSGFuZGxlUmFuZ2VBbGxvY2F0b3I6OmtJbnZh
bGlkSGFuZGxlKQorICAgICAgICByZXR1cm4gRXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxl
ZCB0byBhbGxvY2F0ZSBwYXRoIGhhbmRsZSByYW5nZS4iKTsKKworICAgIGNvbnN0IGF1dG8gJnBh
dGhzID0gZmFjdG9yeS0+Y3JlYXRlUGF0aHMocmFuZ2UpOworICAgIGlmIChwYXRocy5lbXB0eSgp
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRleHR1cmVNYXBJdC0+c2Vjb25kOworICAgICAgICBt
SGFuZGxlQWxsb2NhdG9yLnJlbGVhc2VSYW5nZShjbGllbnQsIHJhbmdlKTsKKyAgICAgICAgcmV0
dXJuIEVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gYWxsb2NhdGUgcGF0aCBvYmpl
Y3RzLiIpOwogICAgIH0KIAotICAgIFRleHR1cmUgKnRleHR1cmUgPSBuZXcgVGV4dHVyZShmYWN0
b3J5LCBoYW5kbGUsIHR5cGUpOwotICAgIHRleHR1cmUtPmFkZFJlZigpOworICAgIGF1dG8gaGlu
dCA9IG1QYXRocy5iZWdpbigpOwogCi0gICAgaWYgKGhhbmRsZUFsbG9jYXRlZCkKLSAgICB7Ci0g
ICAgICAgIHRleHR1cmVNYXBJdC0+c2Vjb25kID0gdGV4dHVyZTsKLSAgICB9Ci0gICAgZWxzZQor
ICAgIGZvciAoR0xzaXplaSBpID0gMDsgaSA8IHJhbmdlOyArK2kpCiAgICAgewotICAgICAgICBt
VGV4dHVyZUhhbmRsZUFsbG9jYXRvci5yZXNlcnZlKGhhbmRsZSk7Ci0gICAgICAgIG1UZXh0dXJl
TWFwW2hhbmRsZV0gPSB0ZXh0dXJlOworICAgICAgICBjb25zdCBhdXRvIGltcGwgPSBwYXRoc1tz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oaSldOworICAgICAgICBjb25zdCBhdXRvIGlkICAgPSBjbGll
bnQgKyBpOworICAgICAgICBoaW50ICAgICAgICAgICAgPSBtUGF0aHMuaW5zZXJ0KGhpbnQsIHN0
ZDo6bWFrZV9wYWlyKGlkLCBuZXcgUGF0aChpbXBsKSkpOwogICAgIH0KLQotICAgIHJldHVybiB0
ZXh0dXJlOworICAgIHJldHVybiBjbGllbnQ7CiB9CiAKLVJlbmRlcmJ1ZmZlciAqUmVzb3VyY2VN
YW5hZ2VyOjpjaGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24ocng6OkdMSW1wbEZhY3RvcnkgKmZh
Y3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBoYW5kbGUpCit2b2lkIFBhdGhNYW5hZ2VyOjpkZWxldGVQYXRocyhH
THVpbnQgZmlyc3QsIEdMc2l6ZWkgcmFuZ2UpCiB7Ci0gICAgaWYgKGhhbmRsZSA9PSAwKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgYXV0byByZW5kZXJidWZm
ZXJNYXBJdCA9IG1SZW5kZXJidWZmZXJNYXAuZmluZChoYW5kbGUpOwotICAgIGJvb2wgaGFuZGxl
QWxsb2NhdGVkICAgPSAocmVuZGVyYnVmZmVyTWFwSXQgIT0gbVJlbmRlcmJ1ZmZlck1hcC5lbmQo
KSk7Ci0KLSAgICBpZiAoaGFuZGxlQWxsb2NhdGVkICYmIHJlbmRlcmJ1ZmZlck1hcEl0LT5zZWNv
bmQgIT0gbnVsbHB0cikKKyAgICBmb3IgKEdMc2l6ZWkgaSA9IDA7IGkgPCByYW5nZTsgKytpKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIHJlbmRlcmJ1ZmZlck1hcEl0LT5zZWNvbmQ7CisgICAgICAg
IGNvbnN0IGF1dG8gaWQgPSBmaXJzdCArIGk7CisgICAgICAgIGNvbnN0IGF1dG8gaXQgPSBtUGF0
aHMuZmluZChpZCk7CisgICAgICAgIGlmIChpdCA9PSBtUGF0aHMuZW5kKCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgUGF0aCAqcCA9IGl0LT5zZWNvbmQ7CisgICAgICAgIGRlbGV0
ZSBwOworICAgICAgICBtUGF0aHMuZXJhc2UoaXQpOwogICAgIH0KKyAgICBtSGFuZGxlQWxsb2Nh
dG9yLnJlbGVhc2VSYW5nZShmaXJzdCwgc3RhdGljX2Nhc3Q8R0x1aW50PihyYW5nZSkpOworfQog
Ci0gICAgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIgPSBuZXcgUmVuZGVyYnVmZmVyKGZhY3Rv
cnktPmNyZWF0ZVJlbmRlcmJ1ZmZlcigpLCBoYW5kbGUpOwotICAgIHJlbmRlcmJ1ZmZlci0+YWRk
UmVmKCk7CitQYXRoICpQYXRoTWFuYWdlcjo6Z2V0UGF0aChHTHVpbnQgaGFuZGxlKSBjb25zdAor
eworICAgIGF1dG8gaXRlciA9IG1QYXRocy5maW5kKGhhbmRsZSk7CisgICAgcmV0dXJuIGl0ZXIg
IT0gbVBhdGhzLmVuZCgpID8gaXRlci0+c2Vjb25kIDogbnVsbHB0cjsKK30KIAotICAgIGlmICho
YW5kbGVBbGxvY2F0ZWQpCi0gICAgewotICAgICAgICByZW5kZXJidWZmZXJNYXBJdC0+c2Vjb25k
ID0gcmVuZGVyYnVmZmVyOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBtUmVuZGVy
YnVmZmVySGFuZGxlQWxsb2NhdG9yLnJlc2VydmUoaGFuZGxlKTsKLSAgICAgICAgbVJlbmRlcmJ1
ZmZlck1hcFtoYW5kbGVdID0gcmVuZGVyYnVmZmVyOwotICAgIH0KK2Jvb2wgUGF0aE1hbmFnZXI6
Omhhc1BhdGgoR0x1aW50IGhhbmRsZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbUhhbmRsZUFsbG9j
YXRvci5pc1VzZWQoaGFuZGxlKTsKK30KIAotICAgIHJldHVybiByZW5kZXJidWZmZXI7CitQYXRo
TWFuYWdlcjo6flBhdGhNYW5hZ2VyKCkKK3sKKyAgICBBU1NFUlQobVBhdGhzLmVtcHR5KCkpOwog
fQogCi1TYW1wbGVyICpSZXNvdXJjZU1hbmFnZXI6OmNoZWNrU2FtcGxlckFsbG9jYXRpb24ocng6
OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBzYW1wbGVySGFuZGxlKQordm9pZCBQYXRo
TWFuYWdlcjo6cmVzZXQoY29uc3QgQ29udGV4dCAqY29udGV4dCkKIHsKLSAgICAvLyBTYW1wbGVy
cyBjYW5ub3QgYmUgY3JlYXRlZCB2aWEgQmluZAotICAgIGlmIChzYW1wbGVySGFuZGxlID09IDAp
CisgICAgZm9yIChhdXRvIHBhdGggOiBtUGF0aHMpCiAgICAgewotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICAgICAgU2FmZURlbGV0ZShwYXRoLnNlY29uZCk7CiAgICAgfQorICAgIG1QYXRo
cy5jbGVhcigpOworfQogCi0gICAgU2FtcGxlciAqc2FtcGxlciA9IGdldFNhbXBsZXIoc2FtcGxl
ckhhbmRsZSk7CisvLyBGcmFtZWJ1ZmZlck1hbmFnZXIgSW1wbGVtZW50YXRpb24uCiAKLSAgICBp
ZiAoIXNhbXBsZXIpCisvLyBzdGF0aWMKK0ZyYW1lYnVmZmVyICpGcmFtZWJ1ZmZlck1hbmFnZXI6
OkFsbG9jYXRlTmV3T2JqZWN0KHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGhhbmRsZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IENhcHMgJmNhcHMpCit7CisgICAgcmV0dXJuIG5ldyBGcmFtZWJ1ZmZlcihjYXBzLCBmYWN0b3J5
LCBoYW5kbGUpOworfQorCisvLyBzdGF0aWMKK3ZvaWQgRnJhbWVidWZmZXJNYW5hZ2VyOjpEZWxl
dGVPYmplY3QoRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyKQoreworICAgIC8vIERlZmF1bHQgZnJh
bWVidWZmZXIgYXJlIG93bmVkIGJ5IHRoZWlyIHJlc3BlY3RpdmUgU3VyZmFjZQorICAgIGlmIChm
cmFtZWJ1ZmZlci0+aWQoKSAhPSAwKQogICAgIHsKLSAgICAgICAgc2FtcGxlciAgICAgICAgICAg
ICAgICAgICAgPSBuZXcgU2FtcGxlcihmYWN0b3J5LCBzYW1wbGVySGFuZGxlKTsKLSAgICAgICAg
bVNhbXBsZXJNYXBbc2FtcGxlckhhbmRsZV0gPSBzYW1wbGVyOwotICAgICAgICBzYW1wbGVyLT5h
ZGRSZWYoKTsKKyAgICAgICAgZGVsZXRlIGZyYW1lYnVmZmVyOwogICAgIH0KK30KIAotICAgIHJl
dHVybiBzYW1wbGVyOworR0x1aW50IEZyYW1lYnVmZmVyTWFuYWdlcjo6Y3JlYXRlRnJhbWVidWZm
ZXIoKQoreworICAgIHJldHVybiBBbGxvY2F0ZUVtcHR5T2JqZWN0KCZtSGFuZGxlQWxsb2NhdG9y
LCAmbU9iamVjdE1hcCk7CiB9CiAKLWJvb2wgUmVzb3VyY2VNYW5hZ2VyOjppc1NhbXBsZXIoR0x1
aW50IHNhbXBsZXIpCitGcmFtZWJ1ZmZlciAqRnJhbWVidWZmZXJNYW5hZ2VyOjpnZXRGcmFtZWJ1
ZmZlcihHTHVpbnQgaGFuZGxlKSBjb25zdAogewotICAgIHJldHVybiBtU2FtcGxlck1hcC5maW5k
KHNhbXBsZXIpICE9IG1TYW1wbGVyTWFwLmVuZCgpOworICAgIHJldHVybiBHZXRPYmplY3QobU9i
amVjdE1hcCwgaGFuZGxlKTsKIH0KIAotYm9vbCBSZXNvdXJjZU1hbmFnZXI6OmlzVGV4dHVyZUdl
bmVyYXRlZChHTHVpbnQgdGV4dHVyZSkgY29uc3QKK3ZvaWQgRnJhbWVidWZmZXJNYW5hZ2VyOjpz
ZXREZWZhdWx0RnJhbWVidWZmZXIoRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyKQogewotICAgIHJl
dHVybiB0ZXh0dXJlID09IDAgfHwgbVRleHR1cmVNYXAuZmluZCh0ZXh0dXJlKSAhPSBtVGV4dHVy
ZU1hcC5lbmQoKTsKKyAgICBBU1NFUlQoZnJhbWVidWZmZXIgPT0gbnVsbHB0ciB8fCBmcmFtZWJ1
ZmZlci0+aWQoKSA9PSAwKTsKKyAgICBtT2JqZWN0TWFwWzBdID0gZnJhbWVidWZmZXI7CiB9CiAK
LWJvb2wgUmVzb3VyY2VNYW5hZ2VyOjppc0J1ZmZlckdlbmVyYXRlZChHTHVpbnQgYnVmZmVyKSBj
b25zdAorYm9vbCBGcmFtZWJ1ZmZlck1hbmFnZXI6OmlzRnJhbWVidWZmZXJHZW5lcmF0ZWQoR0x1
aW50IGZyYW1lYnVmZmVyKQogewotICAgIHJldHVybiBidWZmZXIgPT0gMCB8fCBtQnVmZmVyTWFw
LmZpbmQoYnVmZmVyKSAhPSBtQnVmZmVyTWFwLmVuZCgpOworICAgIEFTU0VSVChtT2JqZWN0TWFw
LmZpbmQoMCkgIT0gbU9iamVjdE1hcC5lbmQoKSk7CisgICAgcmV0dXJuIG1PYmplY3RNYXAuZmlu
ZChmcmFtZWJ1ZmZlcikgIT0gbU9iamVjdE1hcC5lbmQoKTsKIH0KIAotYm9vbCBSZXNvdXJjZU1h
bmFnZXI6OmlzUmVuZGVyYnVmZmVyR2VuZXJhdGVkKEdMdWludCByZW5kZXJidWZmZXIpIGNvbnN0
Cit2b2lkIEZyYW1lYnVmZmVyTWFuYWdlcjo6aW52YWxpZGF0ZUZyYW1lYnVmZmVyQ29tcGxlbmVz
c0NhY2hlKCkKIHsKLSAgICByZXR1cm4gcmVuZGVyYnVmZmVyID09IDAgfHwgbVJlbmRlcmJ1ZmZl
ck1hcC5maW5kKHJlbmRlcmJ1ZmZlcikgIT0gbVJlbmRlcmJ1ZmZlck1hcC5lbmQoKTsKKyAgICBm
b3IgKGF1dG8gJmZyYW1lYnVmZmVyIDogbU9iamVjdE1hcCkKKyAgICB7CisgICAgICAgIGlmIChm
cmFtZWJ1ZmZlci5zZWNvbmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZyYW1lYnVmZmVyLnNl
Y29uZC0+aW52YWxpZGF0ZUNvbXBsZXRlbmVzc0NhY2hlKCk7CisgICAgICAgIH0KKyAgICB9CiB9
CiAKIH0gIC8vIG5hbWVzcGFjZSBnbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlci5oCmluZGV4IGY2YTAwMDJlZDE4Li44MmQy
MzA3OTJmOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L1Jlc291cmNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9SZXNvdXJjZU1hbmFnZXIuaApAQCAtMSwxMSArMSwxMSBAQAogLy8KLS8vIENvcHlyaWdo
dCAoYykgMjAwMi0yMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KIC8vCiAKLS8vIFJlc291cmNlTWFuYWdlci5oIDogRGVmaW5lcyB0
aGUgUmVzb3VyY2VNYW5hZ2VyIGNsYXNzLCB3aGljaCB0cmFja3Mgb2JqZWN0cwotLy8gc2hhcmVk
IGJ5IG11bHRpcGxlIEdMIGNvbnRleHRzLgorLy8gUmVzb3VyY2VNYW5hZ2VyLmggOiBEZWZpbmVz
IHRoZSBSZXNvdXJjZU1hbmFnZXIgY2xhc3Nlcywgd2hpY2ggaGFuZGxlIGFsbG9jYXRpb24gYW5k
IGxpZmV0aW1lIG9mCisvLyBHTCBvYmplY3RzLgogCiAjaWZuZGVmIExJQkFOR0xFX1JFU09VUkNF
TUFOQUdFUl9IXwogI2RlZmluZSBMSUJBTkdMRV9SRVNPVVJDRU1BTkFHRVJfSF8KQEAgLTI1LDcg
KzI1LDEwIEBAIGNsYXNzIEdMSW1wbEZhY3Rvcnk7CiBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIEJ1
ZmZlcjsKK3N0cnVjdCBDYXBzOworY2xhc3MgQ29udGV4dDsKIGNsYXNzIEZlbmNlU3luYzsKK2Ns
YXNzIEZyYW1lYnVmZmVyOwogc3RydWN0IExpbWl0YXRpb25zOwogY2xhc3MgUGF0aDsKIGNsYXNz
IFByb2dyYW07CkBAIC0zNCw4OSArMzcsMjI1IEBAIGNsYXNzIFNhbXBsZXI7CiBjbGFzcyBTaGFk
ZXI7CiBjbGFzcyBUZXh0dXJlOwogCi1jbGFzcyBSZXNvdXJjZU1hbmFnZXIgOiBhbmdsZTo6Tm9u
Q29weWFibGUKK3RlbXBsYXRlIDx0eXBlbmFtZSBIYW5kbGVBbGxvY2F0b3JUeXBlPgorY2xhc3Mg
UmVzb3VyY2VNYW5hZ2VyQmFzZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6Ci0g
ICAgUmVzb3VyY2VNYW5hZ2VyKCk7Ci0gICAgflJlc291cmNlTWFuYWdlcigpOworICAgIFJlc291
cmNlTWFuYWdlckJhc2UoKTsKIAogICAgIHZvaWQgYWRkUmVmKCk7Ci0gICAgdm9pZCByZWxlYXNl
KCk7CisgICAgdm9pZCByZWxlYXNlKGNvbnN0IENvbnRleHQgKmNvbnRleHQpOwogCisgIHByb3Rl
Y3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoY29uc3QgQ29udGV4dCAqY29udGV4dCkgPSAw
OworICAgIHZpcnR1YWwgflJlc291cmNlTWFuYWdlckJhc2UoKSB7fQorCisgICAgSGFuZGxlQWxs
b2NhdG9yVHlwZSBtSGFuZGxlQWxsb2NhdG9yOworCisgIHByaXZhdGU6CisgICAgc2l6ZV90IG1S
ZWZDb3VudDsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBSZXNvdXJjZVR5cGUsIHR5cGVuYW1l
IEhhbmRsZUFsbG9jYXRvclR5cGUsIHR5cGVuYW1lIEltcGxUPgorY2xhc3MgVHlwZWRSZXNvdXJj
ZU1hbmFnZXIgOiBwdWJsaWMgUmVzb3VyY2VNYW5hZ2VyQmFzZTxIYW5kbGVBbGxvY2F0b3JUeXBl
PgoreworICBwdWJsaWM6CisgICAgVHlwZWRSZXNvdXJjZU1hbmFnZXIoKSB7fQorCisgICAgdm9p
ZCBkZWxldGVPYmplY3QoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGhhbmRsZSk7CisK
KyAgcHJvdGVjdGVkOgorICAgIH5UeXBlZFJlc291cmNlTWFuYWdlcigpIG92ZXJyaWRlOworCisg
ICAgLy8gSW5saW5lZCBpbiB0aGUgaGVhZGVyIGZvciBwZXJmb3JtYW5jZS4KKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUuLi4gQXJnVHlwZXM+CisgICAgUmVzb3VyY2VUeXBlICpjaGVja09iamVjdEFs
bG9jYXRpb24ocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBoYW5kbGUsIEFyZ1R5
cGVzLi4uIGFyZ3MpCisgICAgeworICAgICAgICBhdXRvIG9iamVjdE1hcEl0ZXIgPSBtT2JqZWN0
TWFwLmZpbmQoaGFuZGxlKTsKKworICAgICAgICBpZiAob2JqZWN0TWFwSXRlciAhPSBtT2JqZWN0
TWFwLmVuZCgpICYmIG9iamVjdE1hcEl0ZXItPnNlY29uZCAhPSBudWxscHRyKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0TWFwSXRlci0+c2Vjb25kOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGhhbmRsZSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBhbGxvY2F0ZU9iamVjdDxBcmdU
eXBlcy4uLj4ob2JqZWN0TWFwSXRlciwgZmFjdG9yeSwgaGFuZGxlLCBhcmdzLi4uKTsKKyAgICB9
CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUuLi4gQXJnVHlwZXM+CisgICAgUmVzb3VyY2VUeXBl
ICphbGxvY2F0ZU9iamVjdCh0eXBlbmFtZSBSZXNvdXJjZU1hcDxSZXNvdXJjZVR5cGU+OjppdGVy
YXRvciAmb2JqZWN0TWFwSXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ4
OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IGhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyZ1R5
cGVzLi4uIGFyZ3MpOworCisgICAgdm9pZCByZXNldChjb25zdCBDb250ZXh0ICpjb250ZXh0KSBv
dmVycmlkZTsKKworICAgIFJlc291cmNlTWFwPFJlc291cmNlVHlwZT4gbU9iamVjdE1hcDsKK307
CisKK2NsYXNzIEJ1ZmZlck1hbmFnZXIgOiBwdWJsaWMgVHlwZWRSZXNvdXJjZU1hbmFnZXI8QnVm
ZmVyLCBIYW5kbGVBbGxvY2F0b3IsIEJ1ZmZlck1hbmFnZXI+Cit7CisgIHB1YmxpYzoKICAgICBH
THVpbnQgY3JlYXRlQnVmZmVyKCk7CisgICAgQnVmZmVyICpnZXRCdWZmZXIoR0x1aW50IGhhbmRs
ZSkgY29uc3Q7CisgICAgYm9vbCBpc0J1ZmZlckdlbmVyYXRlZChHTHVpbnQgYnVmZmVyKSBjb25z
dDsKKworICAgIEJ1ZmZlciAqY2hlY2tCdWZmZXJBbGxvY2F0aW9uKHJ4OjpHTEltcGxGYWN0b3J5
ICpmYWN0b3J5LCBHTHVpbnQgaGFuZGxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNoZWNrT2Jq
ZWN0QWxsb2NhdGlvbihmYWN0b3J5LCBoYW5kbGUpOworICAgIH0KKworICAgIC8vIFRPRE8oam1h
ZGlsbCk6IEludmVzdGlnYXRlIGRlc2lnbiB3aGljaCBkb2Vzbid0IGV4cG9zZSB0aGVzZSBtZXRo
b2RzIHB1YmxpY2x5LgorICAgIHN0YXRpYyBCdWZmZXIgKkFsbG9jYXRlTmV3T2JqZWN0KHJ4OjpH
TEltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgaGFuZGxlKTsKKyAgICBzdGF0aWMgdm9pZCBE
ZWxldGVPYmplY3QoQnVmZmVyICpidWZmZXIpOworCisgIHByb3RlY3RlZDoKKyAgICB+QnVmZmVy
TWFuYWdlcigpIG92ZXJyaWRlIHt9Cit9OworCitjbGFzcyBTaGFkZXJQcm9ncmFtTWFuYWdlciA6
IHB1YmxpYyBSZXNvdXJjZU1hbmFnZXJCYXNlPEhhbmRsZUFsbG9jYXRvcj4KK3sKKyAgcHVibGlj
OgogICAgIEdMdWludCBjcmVhdGVTaGFkZXIocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6TGltaXRhdGlvbnMgJnJlbmRlcmVyTGlt
aXRhdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBMaW1pdGF0aW9ucyAmcmVu
ZGVyZXJMaW1pdGF0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlKTsK
KyAgICB2b2lkIGRlbGV0ZVNoYWRlcihjb25zdCBDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgc2hh
ZGVyKTsKKyAgICBTaGFkZXIgKmdldFNoYWRlcihHTHVpbnQgaGFuZGxlKSBjb25zdDsKKwogICAg
IEdMdWludCBjcmVhdGVQcm9ncmFtKHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5KTsKKyAgICB2
b2lkIGRlbGV0ZVByb2dyYW0oY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0p
OworICAgIFByb2dyYW0gKmdldFByb2dyYW0oR0x1aW50IGhhbmRsZSkgY29uc3Q7CisKKyAgcHJv
dGVjdGVkOgorICAgIH5TaGFkZXJQcm9ncmFtTWFuYWdlcigpIG92ZXJyaWRlOworCisgIHByaXZh
dGU6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE9iamVjdFR5cGU+CisgICAgdm9pZCBkZWxldGVP
YmplY3QoY29uc3QgQ29udGV4dCAqY29udGV4dCwgUmVzb3VyY2VNYXA8T2JqZWN0VHlwZT4gKm9i
amVjdE1hcCwgR0x1aW50IGlkKTsKKworICAgIHZvaWQgcmVzZXQoY29uc3QgQ29udGV4dCAqY29u
dGV4dCkgb3ZlcnJpZGU7CisKKyAgICBSZXNvdXJjZU1hcDxTaGFkZXI+IG1TaGFkZXJzOworICAg
IFJlc291cmNlTWFwPFByb2dyYW0+IG1Qcm9ncmFtczsKK307CisKK2NsYXNzIFRleHR1cmVNYW5h
Z2VyIDogcHVibGljIFR5cGVkUmVzb3VyY2VNYW5hZ2VyPFRleHR1cmUsIEhhbmRsZUFsbG9jYXRv
ciwgVGV4dHVyZU1hbmFnZXI+Cit7CisgIHB1YmxpYzoKICAgICBHTHVpbnQgY3JlYXRlVGV4dHVy
ZSgpOwotICAgIEdMdWludCBjcmVhdGVSZW5kZXJidWZmZXIoKTsKLSAgICBHTHVpbnQgY3JlYXRl
U2FtcGxlcigpOwotICAgIEdMdWludCBjcmVhdGVGZW5jZVN5bmMocng6OkdMSW1wbEZhY3Rvcnkg
KmZhY3RvcnkpOwotICAgIEVycm9yT3JSZXN1bHQ8R0x1aW50PiBjcmVhdGVQYXRocyhyeDo6R0xJ
bXBsRmFjdG9yeSAqZmFjdG9yeSwgR0xzaXplaSByYW5nZSk7CisgICAgVGV4dHVyZSAqZ2V0VGV4
dHVyZShHTHVpbnQgaGFuZGxlKSBjb25zdDsKKyAgICBib29sIGlzVGV4dHVyZUdlbmVyYXRlZChH
THVpbnQgdGV4dHVyZSkgY29uc3Q7CiAKLSAgICB2b2lkIGRlbGV0ZUJ1ZmZlcihHTHVpbnQgYnVm
ZmVyKTsKLSAgICB2b2lkIGRlbGV0ZVNoYWRlcihHTHVpbnQgc2hhZGVyKTsKLSAgICB2b2lkIGRl
bGV0ZVByb2dyYW0oR0x1aW50IHByb2dyYW0pOwotICAgIHZvaWQgZGVsZXRlVGV4dHVyZShHTHVp
bnQgdGV4dHVyZSk7Ci0gICAgdm9pZCBkZWxldGVSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1
ZmZlcik7Ci0gICAgdm9pZCBkZWxldGVTYW1wbGVyKEdMdWludCBzYW1wbGVyKTsKLSAgICB2b2lk
IGRlbGV0ZUZlbmNlU3luYyhHTHVpbnQgZmVuY2VTeW5jKTsKLSAgICB2b2lkIGRlbGV0ZVBhdGhz
KEdMdWludCBmaXJzdCwgR0xzaXplaSByYW5nZSk7CisgICAgdm9pZCBpbnZhbGlkYXRlVGV4dHVy
ZUNvbXBsZW5lc3NDYWNoZSgpOwogCi0gICAgQnVmZmVyICpnZXRCdWZmZXIoR0x1aW50IGhhbmRs
ZSk7Ci0gICAgU2hhZGVyICpnZXRTaGFkZXIoR0x1aW50IGhhbmRsZSkgY29uc3Q7Ci0gICAgUHJv
Z3JhbSAqZ2V0UHJvZ3JhbShHTHVpbnQgaGFuZGxlKSBjb25zdDsKLSAgICBUZXh0dXJlICpnZXRU
ZXh0dXJlKEdMdWludCBoYW5kbGUpOworICAgIFRleHR1cmUgKmNoZWNrVGV4dHVyZUFsbG9jYXRp
b24ocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBoYW5kbGUsIEdMZW51bSB0YXJn
ZXQpCisgICAgeworICAgICAgICByZXR1cm4gY2hlY2tPYmplY3RBbGxvY2F0aW9uKGZhY3Rvcnks
IGhhbmRsZSwgdGFyZ2V0KTsKKyAgICB9CisKKyAgICBzdGF0aWMgVGV4dHVyZSAqQWxsb2NhdGVO
ZXdPYmplY3Qocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBoYW5kbGUsIEdMZW51
bSB0YXJnZXQpOworICAgIHN0YXRpYyB2b2lkIERlbGV0ZU9iamVjdChUZXh0dXJlICp0ZXh0dXJl
KTsKKworICBwcm90ZWN0ZWQ6CisgICAgflRleHR1cmVNYW5hZ2VyKCkgb3ZlcnJpZGUge30KK307
CisKK2NsYXNzIFJlbmRlcmJ1ZmZlck1hbmFnZXIKKyAgICA6IHB1YmxpYyBUeXBlZFJlc291cmNl
TWFuYWdlcjxSZW5kZXJidWZmZXIsIEhhbmRsZUFsbG9jYXRvciwgUmVuZGVyYnVmZmVyTWFuYWdl
cj4KK3sKKyAgcHVibGljOgorICAgIEdMdWludCBjcmVhdGVSZW5kZXJidWZmZXIoKTsKICAgICBS
ZW5kZXJidWZmZXIgKmdldFJlbmRlcmJ1ZmZlcihHTHVpbnQgaGFuZGxlKTsKLSAgICBTYW1wbGVy
ICpnZXRTYW1wbGVyKEdMdWludCBoYW5kbGUpOwotICAgIEZlbmNlU3luYyAqZ2V0RmVuY2VTeW5j
KEdMdWludCBoYW5kbGUpOworICAgIGJvb2wgaXNSZW5kZXJidWZmZXJHZW5lcmF0ZWQoR0x1aW50
IHJlbmRlcmJ1ZmZlcikgY29uc3Q7CiAKLSAgICAvLyBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZwot
ICAgIGNvbnN0IFBhdGggKmdldFBhdGgoR0x1aW50IHBhdGgpIGNvbnN0OwotICAgIFBhdGggKmdl
dFBhdGgoR0x1aW50IHBhdGgpOwotICAgIGJvb2wgaGFzUGF0aChHTHVpbnQgcGF0aCkgY29uc3Q7
CisgICAgUmVuZGVyYnVmZmVyICpjaGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24ocng6OkdMSW1w
bEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBoYW5kbGUpCisgICAgeworICAgICAgICByZXR1cm4g
Y2hlY2tPYmplY3RBbGxvY2F0aW9uKGZhY3RvcnksIGhhbmRsZSk7CisgICAgfQogCi0gICAgdm9p
ZCBzZXRSZW5kZXJidWZmZXIoR0x1aW50IGhhbmRsZSwgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZm
ZXIpOworICAgIHN0YXRpYyBSZW5kZXJidWZmZXIgKkFsbG9jYXRlTmV3T2JqZWN0KHJ4OjpHTElt
cGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgaGFuZGxlKTsKKyAgICBzdGF0aWMgdm9pZCBEZWxl
dGVPYmplY3QoUmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIpOwogCi0gICAgQnVmZmVyICpjaGVj
a0J1ZmZlckFsbG9jYXRpb24ocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBoYW5k
bGUpOwotICAgIFRleHR1cmUgKmNoZWNrVGV4dHVyZUFsbG9jYXRpb24ocng6OkdMSW1wbEZhY3Rv
cnkgKmZhY3RvcnksIEdMdWludCBoYW5kbGUsIEdMZW51bSB0eXBlKTsKLSAgICBSZW5kZXJidWZm
ZXIgKmNoZWNrUmVuZGVyYnVmZmVyQWxsb2NhdGlvbihyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9y
eSwgR0x1aW50IGhhbmRsZSk7Ci0gICAgU2FtcGxlciAqY2hlY2tTYW1wbGVyQWxsb2NhdGlvbihy
eDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50IHNhbXBsZXJIYW5kbGUpOworICBwcm90
ZWN0ZWQ6CisgICAgflJlbmRlcmJ1ZmZlck1hbmFnZXIoKSBvdmVycmlkZSB7fQorfTsKIAorY2xh
c3MgU2FtcGxlck1hbmFnZXIgOiBwdWJsaWMgVHlwZWRSZXNvdXJjZU1hbmFnZXI8U2FtcGxlciwg
SGFuZGxlQWxsb2NhdG9yLCBTYW1wbGVyTWFuYWdlcj4KK3sKKyAgcHVibGljOgorICAgIEdMdWlu
dCBjcmVhdGVTYW1wbGVyKCk7CisgICAgU2FtcGxlciAqZ2V0U2FtcGxlcihHTHVpbnQgaGFuZGxl
KTsKICAgICBib29sIGlzU2FtcGxlcihHTHVpbnQgc2FtcGxlcik7CiAKLSAgICAvLyBHTF9DSFJP
TUlVTV9iaW5kX2dlbmVyYXRlc19yZXNvdXJjZQotICAgIGJvb2wgaXNUZXh0dXJlR2VuZXJhdGVk
KEdMdWludCB0ZXh0dXJlKSBjb25zdDsKLSAgICBib29sIGlzQnVmZmVyR2VuZXJhdGVkKEdMdWlu
dCBidWZmZXIpIGNvbnN0OwotICAgIGJvb2wgaXNSZW5kZXJidWZmZXJHZW5lcmF0ZWQoR0x1aW50
IHJlbmRlcmJ1ZmZlcikgY29uc3Q7CisgICAgU2FtcGxlciAqY2hlY2tTYW1wbGVyQWxsb2NhdGlv
bihyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50IGhhbmRsZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBjaGVja09iamVjdEFsbG9jYXRpb24oZmFjdG9yeSwgaGFuZGxlKTsKKyAgICB9
CiAKLSAgcHJpdmF0ZToKLSAgICB2b2lkIGNyZWF0ZVRleHR1cmVJbnRlcm5hbChHTHVpbnQgaGFu
ZGxlKTsKKyAgICBzdGF0aWMgU2FtcGxlciAqQWxsb2NhdGVOZXdPYmplY3Qocng6OkdMSW1wbEZh
Y3RvcnkgKmZhY3RvcnksIEdMdWludCBoYW5kbGUpOworICAgIHN0YXRpYyB2b2lkIERlbGV0ZU9i
amVjdChTYW1wbGVyICpzYW1wbGVyKTsKIAotICAgIHN0ZDo6c2l6ZV90IG1SZWZDb3VudDsKKyAg
cHJvdGVjdGVkOgorICAgIH5TYW1wbGVyTWFuYWdlcigpIG92ZXJyaWRlIHt9Cit9OwogCi0gICAg
UmVzb3VyY2VNYXA8QnVmZmVyPiBtQnVmZmVyTWFwOwotICAgIEhhbmRsZUFsbG9jYXRvciBtQnVm
ZmVySGFuZGxlQWxsb2NhdG9yOworY2xhc3MgRmVuY2VTeW5jTWFuYWdlciA6IHB1YmxpYyBUeXBl
ZFJlc291cmNlTWFuYWdlcjxGZW5jZVN5bmMsIEhhbmRsZUFsbG9jYXRvciwgRmVuY2VTeW5jTWFu
YWdlcj4KK3sKKyAgcHVibGljOgorICAgIEdMdWludCBjcmVhdGVGZW5jZVN5bmMocng6OkdMSW1w
bEZhY3RvcnkgKmZhY3RvcnkpOworICAgIEZlbmNlU3luYyAqZ2V0RmVuY2VTeW5jKEdMdWludCBo
YW5kbGUpOwogCi0gICAgUmVzb3VyY2VNYXA8U2hhZGVyPiBtU2hhZGVyTWFwOworICAgIHN0YXRp
YyB2b2lkIERlbGV0ZU9iamVjdChGZW5jZVN5bmMgKmZlbmNlU3luYyk7CiAKLSAgICBSZXNvdXJj
ZU1hcDxQcm9ncmFtPiBtUHJvZ3JhbU1hcDsKLSAgICBIYW5kbGVBbGxvY2F0b3IgbVByb2dyYW1T
aGFkZXJIYW5kbGVBbGxvY2F0b3I7CisgIHByb3RlY3RlZDoKKyAgICB+RmVuY2VTeW5jTWFuYWdl
cigpIG92ZXJyaWRlIHt9Cit9OwogCi0gICAgUmVzb3VyY2VNYXA8VGV4dHVyZT4gbVRleHR1cmVN
YXA7Ci0gICAgSGFuZGxlQWxsb2NhdG9yIG1UZXh0dXJlSGFuZGxlQWxsb2NhdG9yOworY2xhc3Mg
UGF0aE1hbmFnZXIgOiBwdWJsaWMgUmVzb3VyY2VNYW5hZ2VyQmFzZTxIYW5kbGVSYW5nZUFsbG9j
YXRvcj4KK3sKKyAgcHVibGljOgorICAgIEVycm9yT3JSZXN1bHQ8R0x1aW50PiBjcmVhdGVQYXRo
cyhyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0xzaXplaSByYW5nZSk7CisgICAgdm9pZCBk
ZWxldGVQYXRocyhHTHVpbnQgZmlyc3QsIEdMc2l6ZWkgcmFuZ2UpOworICAgIFBhdGggKmdldFBh
dGgoR0x1aW50IGhhbmRsZSkgY29uc3Q7CisgICAgYm9vbCBoYXNQYXRoKEdMdWludCBoYW5kbGUp
IGNvbnN0OworCisgIHByb3RlY3RlZDoKKyAgICB+UGF0aE1hbmFnZXIoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHJlc2V0KGNvbnN0IENvbnRleHQgKmNvbnRleHQpIG92ZXJyaWRlOworCisgIHByaXZh
dGU6CisgICAgUmVzb3VyY2VNYXA8UGF0aD4gbVBhdGhzOworfTsKKworY2xhc3MgRnJhbWVidWZm
ZXJNYW5hZ2VyCisgICAgOiBwdWJsaWMgVHlwZWRSZXNvdXJjZU1hbmFnZXI8RnJhbWVidWZmZXIs
IEhhbmRsZUFsbG9jYXRvciwgRnJhbWVidWZmZXJNYW5hZ2VyPgoreworICBwdWJsaWM6CisgICAg
R0x1aW50IGNyZWF0ZUZyYW1lYnVmZmVyKCk7CisgICAgRnJhbWVidWZmZXIgKmdldEZyYW1lYnVm
ZmVyKEdMdWludCBoYW5kbGUpIGNvbnN0OworICAgIHZvaWQgc2V0RGVmYXVsdEZyYW1lYnVmZmVy
KEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlcik7CisgICAgYm9vbCBpc0ZyYW1lYnVmZmVyR2VuZXJh
dGVkKEdMdWludCBmcmFtZWJ1ZmZlcik7CiAKLSAgICBSZXNvdXJjZU1hcDxSZW5kZXJidWZmZXI+
IG1SZW5kZXJidWZmZXJNYXA7Ci0gICAgSGFuZGxlQWxsb2NhdG9yIG1SZW5kZXJidWZmZXJIYW5k
bGVBbGxvY2F0b3I7CisgICAgdm9pZCBpbnZhbGlkYXRlRnJhbWVidWZmZXJDb21wbGVuZXNzQ2Fj
aGUoKTsKIAotICAgIFJlc291cmNlTWFwPFNhbXBsZXI+IG1TYW1wbGVyTWFwOwotICAgIEhhbmRs
ZUFsbG9jYXRvciBtU2FtcGxlckhhbmRsZUFsbG9jYXRvcjsKKyAgICBGcmFtZWJ1ZmZlciAqY2hl
Y2tGcmFtZWJ1ZmZlckFsbG9jYXRpb24ocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhcHMgJmNhcHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBoYW5k
bGUpCisgICAgeworICAgICAgICByZXR1cm4gY2hlY2tPYmplY3RBbGxvY2F0aW9uPGNvbnN0IENh
cHMgJj4oZmFjdG9yeSwgaGFuZGxlLCBjYXBzKTsKKyAgICB9CiAKLSAgICBSZXNvdXJjZU1hcDxG
ZW5jZVN5bmM+IG1GZW5jZVN5bmNNYXA7Ci0gICAgSGFuZGxlQWxsb2NhdG9yIG1GZW5jZVN5bmNI
YW5kbGVBbGxvY2F0b3I7CisgICAgc3RhdGljIEZyYW1lYnVmZmVyICpBbGxvY2F0ZU5ld09iamVj
dChyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBoYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBDYXBzICZjYXBzKTsKKyAgICBzdGF0aWMgdm9pZCBEZWxl
dGVPYmplY3QoRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyKTsKIAotICAgIFJlc291cmNlTWFwPFBh
dGg+IG1QYXRoTWFwOwotICAgIEhhbmRsZVJhbmdlQWxsb2NhdG9yIG1QYXRoSGFuZGxlQWxsb2Nh
dG9yOworICBwcm90ZWN0ZWQ6CisgICAgfkZyYW1lYnVmZmVyTWFuYWdlcigpIG92ZXJyaWRlIHt9
CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9SZXNvdXJjZU1hbmFnZXJfdW5pdHRlc3QuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Jlc291cmNlTWFuYWdlcl91bml0dGVzdC5j
cHAKaW5kZXggZGVkMmRjNTM4OWMuLjAzY2E5NGE1N2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyX3VuaXR0ZXN0LmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvUmVzb3VyY2VNYW5hZ2Vy
X3VuaXR0ZXN0LmNwcApAQCAtMjUsMzMgKzI1LDM5IEBAIGNsYXNzIFJlc291cmNlTWFuYWdlclRl
c3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAogICBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBTZXRVcCgp
IG92ZXJyaWRlCiAgICAgewotICAgICAgICBtUmVzb3VyY2VNYW5hZ2VyID0gbmV3IFJlc291cmNl
TWFuYWdlcigpOworICAgICAgICBtVGV4dHVyZU1hbmFnZXIgICAgICA9IG5ldyBUZXh0dXJlTWFu
YWdlcigpOworICAgICAgICBtQnVmZmVyTWFuYWdlciAgICAgICA9IG5ldyBCdWZmZXJNYW5hZ2Vy
KCk7CisgICAgICAgIG1SZW5kZXJidWZmZXJtYW5hZ2VyID0gbmV3IFJlbmRlcmJ1ZmZlck1hbmFn
ZXIoKTsKICAgICB9CiAKICAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKICAgICB7Ci0gICAg
ICAgIFNhZmVEZWxldGUobVJlc291cmNlTWFuYWdlcik7CisgICAgICAgIG1UZXh0dXJlTWFuYWdl
ci0+cmVsZWFzZShudWxscHRyKTsKKyAgICAgICAgbUJ1ZmZlck1hbmFnZXItPnJlbGVhc2UobnVs
bHB0cik7CisgICAgICAgIG1SZW5kZXJidWZmZXJtYW5hZ2VyLT5yZWxlYXNlKG51bGxwdHIpOwog
ICAgIH0KIAogICAgIE1vY2tHTEZhY3RvcnkgbU1vY2tGYWN0b3J5OwotICAgIFJlc291cmNlTWFu
YWdlciAqbVJlc291cmNlTWFuYWdlcjsKKyAgICBUZXh0dXJlTWFuYWdlciAqbVRleHR1cmVNYW5h
Z2VyOworICAgIEJ1ZmZlck1hbmFnZXIgKm1CdWZmZXJNYW5hZ2VyOworICAgIFJlbmRlcmJ1ZmZl
ck1hbmFnZXIgKm1SZW5kZXJidWZmZXJtYW5hZ2VyOwogfTsKIAogVEVTVF9GKFJlc291cmNlTWFu
YWdlclRlc3QsIFJlYWxsb2NhdGVCb3VuZFRleHR1cmUpCiB7CiAgICAgRVhQRUNUX0NBTEwobU1v
Y2tGYWN0b3J5LCBjcmVhdGVUZXh0dXJlKF8pKS5UaW1lcygxKS5SZXRpcmVzT25TYXR1cmF0aW9u
KCk7CiAKLSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja1RleHR1cmVBbGxvY2F0aW9uKCZtTW9j
a0ZhY3RvcnksIDEsIEdMX1RFWFRVUkVfMkQpOwotICAgIEdMdWludCBuZXdUZXh0dXJlID0gbVJl
c291cmNlTWFuYWdlci0+Y3JlYXRlVGV4dHVyZSgpOworICAgIG1UZXh0dXJlTWFuYWdlci0+Y2hl
Y2tUZXh0dXJlQWxsb2NhdGlvbigmbU1vY2tGYWN0b3J5LCAxLCBHTF9URVhUVVJFXzJEKTsKKyAg
ICBHTHVpbnQgbmV3VGV4dHVyZSA9IG1UZXh0dXJlTWFuYWdlci0+Y3JlYXRlVGV4dHVyZSgpOwog
ICAgIEVYUEVDVF9ORSgxdSwgbmV3VGV4dHVyZSk7CiB9CiAKIFRFU1RfRihSZXNvdXJjZU1hbmFn
ZXJUZXN0LCBSZWFsbG9jYXRlQm91bmRCdWZmZXIpCiB7Ci0gICAgRVhQRUNUX0NBTEwobU1vY2tG
YWN0b3J5LCBjcmVhdGVCdWZmZXIoKSkuVGltZXMoMSkuUmV0aXJlc09uU2F0dXJhdGlvbigpOwor
ICAgIEVYUEVDVF9DQUxMKG1Nb2NrRmFjdG9yeSwgY3JlYXRlQnVmZmVyKF8pKS5UaW1lcygxKS5S
ZXRpcmVzT25TYXR1cmF0aW9uKCk7CiAKLSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja0J1ZmZl
ckFsbG9jYXRpb24oJm1Nb2NrRmFjdG9yeSwgMSk7Ci0gICAgR0x1aW50IG5ld0J1ZmZlciA9IG1S
ZXNvdXJjZU1hbmFnZXItPmNyZWF0ZUJ1ZmZlcigpOworICAgIG1CdWZmZXJNYW5hZ2VyLT5jaGVj
a0J1ZmZlckFsbG9jYXRpb24oJm1Nb2NrRmFjdG9yeSwgMSk7CisgICAgR0x1aW50IG5ld0J1ZmZl
ciA9IG1CdWZmZXJNYW5hZ2VyLT5jcmVhdGVCdWZmZXIoKTsKICAgICBFWFBFQ1RfTkUoMXUsIG5l
d0J1ZmZlcik7CiB9CiAKQEAgLTU5LDggKzY1LDggQEAgVEVTVF9GKFJlc291cmNlTWFuYWdlclRl
c3QsIFJlYWxsb2NhdGVCb3VuZFJlbmRlcmJ1ZmZlcikKIHsKICAgICBFWFBFQ1RfQ0FMTChtTW9j
a0ZhY3RvcnksIGNyZWF0ZVJlbmRlcmJ1ZmZlcigpKS5UaW1lcygxKS5SZXRpcmVzT25TYXR1cmF0
aW9uKCk7CiAKLSAgICBtUmVzb3VyY2VNYW5hZ2VyLT5jaGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRp
b24oJm1Nb2NrRmFjdG9yeSwgMSk7Ci0gICAgR0x1aW50IG5ld1JlbmRlcmJ1ZmZlciA9IG1SZXNv
dXJjZU1hbmFnZXItPmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOworICAgIG1SZW5kZXJidWZmZXJtYW5h
Z2VyLT5jaGVja1JlbmRlcmJ1ZmZlckFsbG9jYXRpb24oJm1Nb2NrRmFjdG9yeSwgMSk7CisgICAg
R0x1aW50IG5ld1JlbmRlcmJ1ZmZlciA9IG1SZW5kZXJidWZmZXJtYW5hZ2VyLT5jcmVhdGVSZW5k
ZXJidWZmZXIoKTsKICAgICBFWFBFQ1RfTkUoMXUsIG5ld1JlbmRlcmJ1ZmZlcik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TYW1wbGVyLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TYW1wbGVyLmNwcAppbmRl
eCBlMmMwMThhY2E5My4uMzY5YzNjYmFhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9TYW1wbGVyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvU2FtcGxlci5jcHAKQEAgLTEzNSw2ICsxMzUsMTYgQEAgR0xlbnVt
IFNhbXBsZXI6OmdldENvbXBhcmVGdW5jKCkgY29uc3QKICAgICByZXR1cm4gbVNhbXBsZXJTdGF0
ZS5jb21wYXJlRnVuYzsKIH0KIAordm9pZCBTYW1wbGVyOjpzZXRTUkdCRGVjb2RlKEdMZW51bSBz
UkdCRGVjb2RlKQoreworICAgIG1TYW1wbGVyU3RhdGUuc1JHQkRlY29kZSA9IHNSR0JEZWNvZGU7
Cit9CisKK0dMZW51bSBTYW1wbGVyOjpnZXRTUkdCRGVjb2RlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbVNhbXBsZXJTdGF0ZS5zUkdCRGVjb2RlOworfQorCiBjb25zdCBTYW1wbGVyU3RhdGUgJlNh
bXBsZXI6OmdldFNhbXBsZXJTdGF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1TYW1wbGVyU3Rh
dGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU2Ft
cGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1NhbXBsZXIuaApp
bmRleCBlZTEzM2VkMmQ2ZC4uMGU1ZmY4YWRkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TYW1wbGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL1NhbXBsZXIuaApAQCAtMjksNiArMjksOCBAQCBjbGFzcyBTYW1w
bGVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50T2JqZWN0LCBwdWJsaWMgTGFiZWxlZE9iamVjdAog
ICAgIFNhbXBsZXIocng6OkdMSW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBpZCk7CiAgICAg
flNhbXBsZXIoKSBvdmVycmlkZTsKIAorICAgIHZvaWQgZGVzdHJveShjb25zdCBDb250ZXh0ICpj
b250ZXh0KSBvdmVycmlkZSB7fQorCiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmlu
ZyAmbGFiZWwpIG92ZXJyaWRlOwogICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRMYWJlbCgpIGNv
bnN0IG92ZXJyaWRlOwogCkBAIC02Miw2ICs2NCw5IEBAIGNsYXNzIFNhbXBsZXIgZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRPYmplY3QsIHB1YmxpYyBMYWJlbGVkT2JqZWN0CiAgICAgdm9pZCBzZXRD
b21wYXJlRnVuYyhHTGVudW0gY29tcGFyZUZ1bmMpOwogICAgIEdMZW51bSBnZXRDb21wYXJlRnVu
YygpIGNvbnN0OwogCisgICAgdm9pZCBzZXRTUkdCRGVjb2RlKEdMZW51bSBzUkdCRGVjb2RlKTsK
KyAgICBHTGVudW0gZ2V0U1JHQkRlY29kZSgpIGNvbnN0OworCiAgICAgY29uc3QgU2FtcGxlclN0
YXRlICZnZXRTYW1wbGVyU3RhdGUoKSBjb25zdDsKIAogICAgIHJ4OjpTYW1wbGVySW1wbCAqZ2V0
SW1wbGVtZW50YXRpb24oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9TaGFkZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1NoYWRlci5jcHAKaW5kZXggZTAwODc3MmQ3NTMuLjZiZDA3YTI4NjcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU2hhZGVyLmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU2hhZGVyLmNwcApAQCAt
MjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0dMSW1wbEZhY3Rvcnku
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9TaGFkZXJJbXBsLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5o
IgogCiBuYW1lc3BhY2UgZ2wKIHsKQEAgLTgyLDcgKzgzLDcgQEAgU2hhZGVyU3RhdGU6On5TaGFk
ZXJTdGF0ZSgpCiB7CiB9CiAKLVNoYWRlcjo6U2hhZGVyKFJlc291cmNlTWFuYWdlciAqbWFuYWdl
ciwKK1NoYWRlcjo6U2hhZGVyKFNoYWRlclByb2dyYW1NYW5hZ2VyICptYW5hZ2VyLAogICAgICAg
ICAgICAgICAgcng6OkdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAogICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkxpbWl0YXRpb25zICZyZW5kZXJlckxpbWl0YXRpb25zLAogICAgICAgICAgICAg
ICAgR0xlbnVtIHR5cGUsCkBAIC0yMjcsNyArMjI4LDcgQEAgdm9pZCBTaGFkZXI6OmdldFRyYW5z
bGF0ZWRTb3VyY2VXaXRoRGVidWdJbmZvKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3Ro
LAogICAgIGdldFNvdXJjZUltcGwoZGVidWdJbmZvLCBidWZTaXplLCBsZW5ndGgsIGJ1ZmZlcik7
CiB9CiAKLXZvaWQgU2hhZGVyOjpjb21waWxlKENvbXBpbGVyICpjb21waWxlcikKK3ZvaWQgU2hh
ZGVyOjpjb21waWxlKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgbVN0YXRlLm1UcmFu
c2xhdGVkU291cmNlLmNsZWFyKCk7CiAgICAgbUluZm9Mb2cuY2xlYXIoKTsKQEAgLTIzOCw2ICsy
MzksNyBAQCB2b2lkIFNoYWRlcjo6Y29tcGlsZShDb21waWxlciAqY29tcGlsZXIpCiAgICAgbVN0
YXRlLm1BY3RpdmVBdHRyaWJ1dGVzLmNsZWFyKCk7CiAgICAgbVN0YXRlLm1BY3RpdmVPdXRwdXRW
YXJpYWJsZXMuY2xlYXIoKTsKIAorICAgIENvbXBpbGVyICpjb21waWxlciA9IGNvbnRleHQtPmdl
dENvbXBpbGVyKCk7CiAgICAgU2hIYW5kbGUgY29tcGlsZXJIYW5kbGUgPSBjb21waWxlci0+Z2V0
Q29tcGlsZXJIYW5kbGUobVN0YXRlLm1TaGFkZXJUeXBlKTsKIAogICAgIHN0ZDo6c3RyaW5nc3Ry
ZWFtIHNvdXJjZVN0cmVhbTsKQEAgLTI0Nyw2ICsyNDksMTUgQEAgdm9pZCBTaGFkZXI6OmNvbXBp
bGUoQ29tcGlsZXIgKmNvbXBpbGVyKQogICAgICAgICBtSW1wbGVtZW50YXRpb24tPnByZXBhcmVT
b3VyY2VBbmRSZXR1cm5PcHRpb25zKCZzb3VyY2VTdHJlYW0sICZzb3VyY2VQYXRoKTsKICAgICBT
aENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zID0gKFNIX09CSkVDVF9DT0RFIHwgU0hfVkFS
SUFCTEVTIHwgYWRkaXRpb25hbE9wdGlvbnMpOwogCisgICAgLy8gQWRkIGRlZmF1bHQgb3B0aW9u
cyB0byBXZWJHTCBzaGFkZXJzIHRvIHByZXZlbnQgdW5leHBlY3RlZCBiZWhhdmlvciBkdXJpbmcg
Y29tcGlsYXRpb24uCisgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS53ZWJnbENvbXBh
dGliaWxpdHkpCisgICAgeworICAgICAgICBjb21waWxlT3B0aW9ucyB8PSBTSF9JTklUX0dMX1BP
U0lUSU9OOworICAgICAgICBjb21waWxlT3B0aW9ucyB8PSBTSF9MSU1JVF9DQUxMX1NUQUNLX0RF
UFRIOworICAgICAgICBjb21waWxlT3B0aW9ucyB8PSBTSF9MSU1JVF9FWFBSRVNTSU9OX0NPTVBM
RVhJVFk7CisgICAgICAgIGNvbXBpbGVPcHRpb25zIHw9IFNIX0VORk9SQ0VfUEFDS0lOR19SRVNU
UklDVElPTlM7CisgICAgfQorCiAgICAgLy8gU29tZSB0YXJnZXRzIChlZyBEM0QxMSBGZWF0dXJl
IExldmVsIDlfMyBhbmQgYmVsb3cpIGRvIG5vdCBzdXBwb3J0IG5vbi1jb25zdGFudCBsb29wIGlu
ZGV4ZXMKICAgICAvLyBpbiBmcmFnbWVudCBzaGFkZXJzLiBTaGFkZXIgY29tcGlsYXRpb24gd2ls
bCBmYWlsLiBUbyBwcm92aWRlIGEgYmV0dGVyIGVycm9yIG1lc3NhZ2Ugd2UgY2FuCiAgICAgLy8g
aW5zdHJ1Y3QgdGhlIGNvbXBpbGVyIHRvIHByZS12YWxpZGF0ZS4KQEAgLTI2NiwxNyArMjc3LDE3
IEBAIHZvaWQgU2hhZGVyOjpjb21waWxlKENvbXBpbGVyICpjb21waWxlcikKICAgICBzb3VyY2VD
U3RyaW5ncy5wdXNoX2JhY2soc291cmNlU3RyaW5nLmNfc3RyKCkpOwogCiAgICAgYm9vbCByZXN1
bHQgPQotICAgICAgICBTaENvbXBpbGUoY29tcGlsZXJIYW5kbGUsICZzb3VyY2VDU3RyaW5nc1sw
XSwgc291cmNlQ1N0cmluZ3Muc2l6ZSgpLCBjb21waWxlT3B0aW9ucyk7CisgICAgICAgIHNoOjpD
b21waWxlKGNvbXBpbGVySGFuZGxlLCAmc291cmNlQ1N0cmluZ3NbMF0sIHNvdXJjZUNTdHJpbmdz
LnNpemUoKSwgY29tcGlsZU9wdGlvbnMpOwogCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgewotICAg
ICAgICBtSW5mb0xvZyA9IFNoR2V0SW5mb0xvZyhjb21waWxlckhhbmRsZSk7Ci0gICAgICAgIFRS
QUNFKCJcbiVzIiwgbUluZm9Mb2cuY19zdHIoKSk7CisgICAgICAgIG1JbmZvTG9nID0gc2g6Okdl
dEluZm9Mb2coY29tcGlsZXJIYW5kbGUpOworICAgICAgICBXQVJOKCkgPDwgc3RkOjplbmRsIDw8
IG1JbmZvTG9nOwogICAgICAgICBtQ29tcGlsZWQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIG1TdGF0ZS5tVHJhbnNsYXRlZFNvdXJjZSA9IFNoR2V0T2JqZWN0Q29kZShj
b21waWxlckhhbmRsZSk7CisgICAgbVN0YXRlLm1UcmFuc2xhdGVkU291cmNlID0gc2g6OkdldE9i
amVjdENvZGUoY29tcGlsZXJIYW5kbGUpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIC8vIFByZWZp
eCB0cmFuc2xhdGVkIHNoYWRlciB3aXRoIGNvbW1lbnRlZCBvdXQgdW4tdHJhbnNsYXRlZCBzaGFk
ZXIuCkBAIC0yODUsMTUgKzI5NiwxNCBAQCB2b2lkIFNoYWRlcjo6Y29tcGlsZShDb21waWxlciAq
Y29tcGlsZXIpCiAgICAgc2hhZGVyU3RyZWFtIDw8ICIvLyBHTFNMXG4iOwogICAgIHNoYWRlclN0
cmVhbSA8PCAiLy9cbiI7CiAKLSAgICBzaXplX3QgY3VyUG9zID0gMDsKLSAgICB3aGlsZSAoY3Vy
UG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKQorICAgIHN0ZDo6aXN0cmluZ3N0cmVhbSBpbnB1dFNv
dXJjZVN0cmVhbShtU3RhdGUubVNvdXJjZSk7CisgICAgc3RkOjpzdHJpbmcgbGluZTsKKyAgICB3
aGlsZSAoc3RkOjpnZXRsaW5lKGlucHV0U291cmNlU3RyZWFtLCBsaW5lKSkKICAgICB7Ci0gICAg
ICAgIHNpemVfdCBuZXh0TGluZSA9IG1TdGF0ZS5tU291cmNlLmZpbmQoIlxuIiwgY3VyUG9zKTsK
LSAgICAgICAgc2l6ZV90IGxlbiAgICAgID0gKG5leHRMaW5lID09IHN0ZDo6c3RyaW5nOjpucG9z
KSA/IHN0ZDo6c3RyaW5nOjpucG9zIDogKG5leHRMaW5lIC0gY3VyUG9zICsgMSk7Ci0KLSAgICAg
ICAgc2hhZGVyU3RyZWFtIDw8ICIvLyAiIDw8IG1TdGF0ZS5tU291cmNlLnN1YnN0cihjdXJQb3Ms
IGxlbik7CisgICAgICAgIC8vIFJlbW92ZSBudWxsIGNoYXJhY3RlcnMgZnJvbSB0aGUgc291cmNl
IGxpbmUKKyAgICAgICAgbGluZS5lcmFzZShzdGQ6OnJlbW92ZShsaW5lLmJlZ2luKCksIGxpbmUu
ZW5kKCksICdcMCcpLCBsaW5lLmVuZCgpKTsKIAotICAgICAgICBjdXJQb3MgPSAobmV4dExpbmUg
PT0gc3RkOjpzdHJpbmc6Om5wb3MpID8gc3RkOjpzdHJpbmc6Om5wb3MgOiAobmV4dExpbmUgKyAx
KTsKKyAgICAgICAgc2hhZGVyU3RyZWFtIDw8ICIvLyAiIDw8IGxpbmU7CiAgICAgfQogICAgIHNo
YWRlclN0cmVhbSA8PCAiXG5cbiI7CiAgICAgc2hhZGVyU3RyZWFtIDw8IG1TdGF0ZS5tVHJhbnNs
YXRlZFNvdXJjZTsKQEAgLTMwMSwyMiArMzExLDIyIEBAIHZvaWQgU2hhZGVyOjpjb21waWxlKENv
bXBpbGVyICpjb21waWxlcikKICNlbmRpZgogCiAgICAgLy8gR2F0aGVyIHRoZSBzaGFkZXIgaW5m
b3JtYXRpb24KLSAgICBtU3RhdGUubVNoYWRlclZlcnNpb24gPSBTaEdldFNoYWRlclZlcnNpb24o
Y29tcGlsZXJIYW5kbGUpOworICAgIG1TdGF0ZS5tU2hhZGVyVmVyc2lvbiA9IHNoOjpHZXRTaGFk
ZXJWZXJzaW9uKGNvbXBpbGVySGFuZGxlKTsKIAotICAgIG1TdGF0ZS5tVmFyeWluZ3MgICAgICAg
ID0gR2V0U2hhZGVyVmFyaWFibGVzKFNoR2V0VmFyeWluZ3MoY29tcGlsZXJIYW5kbGUpKTsKLSAg
ICBtU3RhdGUubVVuaWZvcm1zICAgICAgICA9IEdldFNoYWRlclZhcmlhYmxlcyhTaEdldFVuaWZv
cm1zKGNvbXBpbGVySGFuZGxlKSk7Ci0gICAgbVN0YXRlLm1JbnRlcmZhY2VCbG9ja3MgPSBHZXRT
aGFkZXJWYXJpYWJsZXMoU2hHZXRJbnRlcmZhY2VCbG9ja3MoY29tcGlsZXJIYW5kbGUpKTsKKyAg
ICBtU3RhdGUubVZhcnlpbmdzICAgICAgICA9IEdldFNoYWRlclZhcmlhYmxlcyhzaDo6R2V0VmFy
eWluZ3MoY29tcGlsZXJIYW5kbGUpKTsKKyAgICBtU3RhdGUubVVuaWZvcm1zICAgICAgICA9IEdl
dFNoYWRlclZhcmlhYmxlcyhzaDo6R2V0VW5pZm9ybXMoY29tcGlsZXJIYW5kbGUpKTsKKyAgICBt
U3RhdGUubUludGVyZmFjZUJsb2NrcyA9IEdldFNoYWRlclZhcmlhYmxlcyhzaDo6R2V0SW50ZXJm
YWNlQmxvY2tzKGNvbXBpbGVySGFuZGxlKSk7CiAKICAgICBzd2l0Y2ggKG1TdGF0ZS5tU2hhZGVy
VHlwZSkKICAgICB7CiAgICAgICAgIGNhc2UgR0xfQ09NUFVURV9TSEFERVI6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIG1TdGF0ZS5tTG9jYWxTaXplID0gU2hHZXRDb21wdXRlU2hhZGVyTG9jYWxH
cm91cFNpemUoY29tcGlsZXJIYW5kbGUpOworICAgICAgICAgICAgbVN0YXRlLm1Mb2NhbFNpemUg
PSBzaDo6R2V0Q29tcHV0ZVNoYWRlckxvY2FsR3JvdXBTaXplKGNvbXBpbGVySGFuZGxlKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfVkVSVEVYX1NIQURF
UjoKICAgICAgICAgewotICAgICAgICAgICAgbVN0YXRlLm1BY3RpdmVBdHRyaWJ1dGVzID0gR2V0
QWN0aXZlU2hhZGVyVmFyaWFibGVzKFNoR2V0QXR0cmlidXRlcyhjb21waWxlckhhbmRsZSkpOwor
ICAgICAgICAgICAgbVN0YXRlLm1BY3RpdmVBdHRyaWJ1dGVzID0gR2V0QWN0aXZlU2hhZGVyVmFy
aWFibGVzKHNoOjpHZXRBdHRyaWJ1dGVzKGNvbXBpbGVySGFuZGxlKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0ZSQUdNRU5UX1NIQURFUjoKQEAgLTMy
NCw3ICszMzQsNyBAQCB2b2lkIFNoYWRlcjo6Y29tcGlsZShDb21waWxlciAqY29tcGlsZXIpCiAg
ICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IHdoeSB3ZSBvbmx5IHNvcnQg
aW4gdGhlIEZTLCBhbmQgaWYgd2UgbmVlZCB0by4KICAgICAgICAgICAgIHN0ZDo6c29ydChtU3Rh
dGUubVZhcnlpbmdzLmJlZ2luKCksIG1TdGF0ZS5tVmFyeWluZ3MuZW5kKCksIENvbXBhcmVTaGFk
ZXJWYXIpOwogICAgICAgICAgICAgbVN0YXRlLm1BY3RpdmVPdXRwdXRWYXJpYWJsZXMgPQotICAg
ICAgICAgICAgICAgIEdldEFjdGl2ZVNoYWRlclZhcmlhYmxlcyhTaEdldE91dHB1dFZhcmlhYmxl
cyhjb21waWxlckhhbmRsZSkpOworICAgICAgICAgICAgICAgIEdldEFjdGl2ZVNoYWRlclZhcmlh
YmxlcyhzaDo6R2V0T3V0cHV0VmFyaWFibGVzKGNvbXBpbGVySGFuZGxlKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBkZWZhdWx0OgpAQCAtMzQxLDEzICszNTEsMTMg
QEAgdm9pZCBTaGFkZXI6OmFkZFJlZigpCiAgICAgbVJlZkNvdW50Kys7CiB9CiAKLXZvaWQgU2hh
ZGVyOjpyZWxlYXNlKCkKK3ZvaWQgU2hhZGVyOjpyZWxlYXNlKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQpCiB7CiAgICAgbVJlZkNvdW50LS07CiAKICAgICBpZiAobVJlZkNvdW50ID09IDAgJiYgbURl
bGV0ZVN0YXR1cykKICAgICB7Ci0gICAgICAgIG1SZXNvdXJjZU1hbmFnZXItPmRlbGV0ZVNoYWRl
cihtSGFuZGxlKTsKKyAgICAgICAgbVJlc291cmNlTWFuYWdlci0+ZGVsZXRlU2hhZGVyKGNvbnRl
eHQsIG1IYW5kbGUpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL1NoYWRlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1NoYWRlci5oCmluZGV4IDdhNjc0YTg4ZjA5Li4zOWY3Yjk0YzFjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1NoYWRlci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TaGFkZXIuaApAQCAtMzUsNyAr
MzUsOCBAQCBuYW1lc3BhY2UgZ2wKIGNsYXNzIENvbXBpbGVyOwogY2xhc3MgQ29udGV4dFN0YXRl
Owogc3RydWN0IExpbWl0YXRpb25zOwotY2xhc3MgUmVzb3VyY2VNYW5hZ2VyOworY2xhc3MgU2hh
ZGVyUHJvZ3JhbU1hbmFnZXI7CitjbGFzcyBDb250ZXh0OwogCiBjbGFzcyBTaGFkZXJTdGF0ZSBm
aW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewpAQCAtODIsMTIgKzgzLDEzIEBAIGNsYXNzIFNo
YWRlclN0YXRlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiBjbGFzcyBTaGFkZXIgZmluYWwg
OiBhbmdsZTo6Tm9uQ29weWFibGUsIHB1YmxpYyBMYWJlbGVkT2JqZWN0CiB7CiAgIHB1YmxpYzoK
LSAgICBTaGFkZXIoUmVzb3VyY2VNYW5hZ2VyICptYW5hZ2VyLAorICAgIFNoYWRlcihTaGFkZXJQ
cm9ncmFtTWFuYWdlciAqbWFuYWdlciwKICAgICAgICAgICAgcng6OkdMSW1wbEZhY3RvcnkgKmlt
cGxGYWN0b3J5LAogICAgICAgICAgICBjb25zdCBnbDo6TGltaXRhdGlvbnMgJnJlbmRlcmVyTGlt
aXRhdGlvbnMsCiAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICBHTHVpbnQgaGFu
ZGxlKTsKIAorICAgIHZvaWQgZGVzdHJveShjb25zdCBDb250ZXh0ICpjb250ZXh0KSB7fQogICAg
IHZpcnR1YWwgflNoYWRlcigpOwogCiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmlu
ZyAmbGFiZWwpIG92ZXJyaWRlOwpAQCAtMTEwLDExICsxMTIsMTEgQEAgY2xhc3MgU2hhZGVyIGZp
bmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMgTGFiZWxlZE9iamVjdAogICAgIHZvaWQg
Z2V0VHJhbnNsYXRlZFNvdXJjZShHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hh
ciAqYnVmZmVyKSBjb25zdDsKICAgICB2b2lkIGdldFRyYW5zbGF0ZWRTb3VyY2VXaXRoRGVidWdJ
bmZvKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpidWZmZXIpIGNvbnN0
OwogCi0gICAgdm9pZCBjb21waWxlKENvbXBpbGVyICpjb21waWxlcik7CisgICAgdm9pZCBjb21w
aWxlKGNvbnN0IENvbnRleHQgKmNvbnRleHQpOwogICAgIGJvb2wgaXNDb21waWxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1Db21waWxlZDsgfQogCiAgICAgdm9pZCBhZGRSZWYoKTsKLSAgICB2b2lkIHJl
bGVhc2UoKTsKKyAgICB2b2lkIHJlbGVhc2UoY29uc3QgQ29udGV4dCAqY29udGV4dCk7CiAgICAg
dW5zaWduZWQgaW50IGdldFJlZkNvdW50KCkgY29uc3Q7CiAgICAgYm9vbCBpc0ZsYWdnZWRGb3JE
ZWxldGlvbigpIGNvbnN0OwogICAgIHZvaWQgZmxhZ0ZvckRlbGV0aW9uKCk7CkBAIC0xNDQsNyAr
MTQ2LDcgQEAgY2xhc3MgU2hhZGVyIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlLCBwdWJsaWMg
TGFiZWxlZE9iamVjdAogICAgIGJvb2wgbUNvbXBpbGVkOyAgICAgICAgICAgICAvLyBJbmRpY2F0
ZXMgaWYgdGhpcyBzaGFkZXIgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvbXBpbGVkCiAgICAgc3Rk
OjpzdHJpbmcgbUluZm9Mb2c7CiAKLSAgICBSZXNvdXJjZU1hbmFnZXIgKm1SZXNvdXJjZU1hbmFn
ZXI7CisgICAgU2hhZGVyUHJvZ3JhbU1hbmFnZXIgKm1SZXNvdXJjZU1hbmFnZXI7CiB9OwogCiBi
b29sIENvbXBhcmVTaGFkZXJWYXIoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ4LCBjb25zdCBz
aDo6U2hhZGVyVmFyaWFibGUgJnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1N0YXRlLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9TdGF0ZS5jcHAKaW5kZXggZjdkNDg1MDlmM2QuLjQwOGFhMjZiOGI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3RhdGUuY3BwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdGF0ZS5jcHAKQEAgLTExLDcg
KzExLDcgQEAKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKLSNpbmNs
dWRlICJjb21tb24vQml0U2V0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJjb21tb24vYml0c2V0X3V0
aWxzLmgiCiAjaW5jbHVkZSAiY29tbW9uL21hdHJpeF91dGlscy5oIgogI2luY2x1ZGUgImNvbW1v
bi9tYXRodXRpbC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKQEAgLTUxLDYgKzUx
LDcgQEAgU3RhdGU6OlN0YXRlKCkKICAgICAgIG1HZW5lcmF0ZU1pcG1hcEhpbnQoR0xfTk9ORSks
CiAgICAgICBtRnJhZ21lbnRTaGFkZXJEZXJpdmF0aXZlSGludChHTF9OT05FKSwKICAgICAgIG1C
aW5kR2VuZXJhdGVzUmVzb3VyY2UodHJ1ZSksCisgICAgICBtQ2xpZW50QXJyYXlzRW5hYmxlZCh0
cnVlKSwKICAgICAgIG1OZWFyWigwKSwKICAgICAgIG1GYXJaKDApLAogICAgICAgbVJlYWRGcmFt
ZWJ1ZmZlcihudWxscHRyKSwKQEAgLTYwLDIwICs2MSwyMyBAQCBTdGF0ZTo6U3RhdGUoKQogICAg
ICAgbUFjdGl2ZVNhbXBsZXIoMCksCiAgICAgICBtUHJpbWl0aXZlUmVzdGFydChmYWxzZSksCiAg
ICAgICBtTXVsdGlTYW1wbGluZyhmYWxzZSksCi0gICAgICBtU2FtcGxlQWxwaGFUb09uZShmYWxz
ZSkKKyAgICAgIG1TYW1wbGVBbHBoYVRvT25lKGZhbHNlKSwKKyAgICAgIG1GcmFtZWJ1ZmZlclNS
R0IodHJ1ZSksCisgICAgICBtUm9idXN0UmVzb3VyY2VJbml0KGZhbHNlKQogewogfQogCiBTdGF0
ZTo6flN0YXRlKCkKIHsKLSAgICByZXNldCgpOwogfQogCiB2b2lkIFN0YXRlOjppbml0aWFsaXpl
KGNvbnN0IENhcHMgJmNhcHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4dGVuc2lv
bnMgJmV4dGVuc2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBjbGllbnRWZXJz
aW9uLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZXJzaW9uICZjbGllbnRWZXJzaW9u
LAogICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlYnVnLAotICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGJpbmRHZW5lcmF0ZXNSZXNvdXJjZSkKKyAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBiaW5kR2VuZXJhdGVzUmVzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
Y2xpZW50QXJyYXlzRW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByb2J1c3RS
ZXNvdXJjZUluaXQpCiB7CiAgICAgbU1heERyYXdCdWZmZXJzID0gY2Fwcy5tYXhEcmF3QnVmZmVy
czsKICAgICBtTWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyA9IGNhcHMubWF4Q29tYmluZWRU
ZXh0dXJlSW1hZ2VVbml0czsKQEAgLTE0MCw2ICsxNDQsNyBAQCB2b2lkIFN0YXRlOjppbml0aWFs
aXplKGNvbnN0IENhcHMgJmNhcHMsCiAgICAgbUZyYWdtZW50U2hhZGVyRGVyaXZhdGl2ZUhpbnQg
PSBHTF9ET05UX0NBUkU7CiAKICAgICBtQmluZEdlbmVyYXRlc1Jlc291cmNlID0gYmluZEdlbmVy
YXRlc1Jlc291cmNlOworICAgIG1DbGllbnRBcnJheXNFbmFibGVkICAgPSBjbGllbnRBcnJheXNF
bmFibGVkOwogCiAgICAgbUxpbmVXaWR0aCA9IDEuMGY7CiAKQEAgLTE1OSwxNiArMTY0LDIzIEBA
IHZvaWQgU3RhdGU6OmluaXRpYWxpemUoY29uc3QgQ2FwcyAmY2FwcywKIAogICAgIG1WZXJ0ZXhB
dHRyaWJDdXJyZW50VmFsdWVzLnJlc2l6ZShjYXBzLm1heFZlcnRleEF0dHJpYnV0ZXMpOwogCi0g
ICAgbVVuaWZvcm1CdWZmZXJzLnJlc2l6ZShjYXBzLm1heENvbWJpbmVkVW5pZm9ybUJsb2Nrcyk7
CisgICAgbVVuaWZvcm1CdWZmZXJzLnJlc2l6ZShjYXBzLm1heFVuaWZvcm1CdWZmZXJCaW5kaW5n
cyk7CiAKICAgICBtU2FtcGxlclRleHR1cmVzW0dMX1RFWFRVUkVfMkRdLnJlc2l6ZShjYXBzLm1h
eENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOwogICAgIG1TYW1wbGVyVGV4dHVyZXNbR0xfVEVY
VFVSRV9DVUJFX01BUF0ucmVzaXplKGNhcHMubWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cyk7
Ci0gICAgaWYgKGNsaWVudFZlcnNpb24gPj0gMykKKyAgICBpZiAoY2xpZW50VmVyc2lvbiA+PSBW
ZXJzaW9uKDMsIDApKQogICAgIHsKICAgICAgICAgLy8gVE9ETzogVGhlc2UgY291bGQgYWxzbyBi
ZSBlbmFibGVkIHZpYSBleHRlbnNpb24KICAgICAgICAgbVNhbXBsZXJUZXh0dXJlc1tHTF9URVhU
VVJFXzJEX0FSUkFZXS5yZXNpemUoY2Fwcy5tYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsK
ICAgICAgICAgbVNhbXBsZXJUZXh0dXJlc1tHTF9URVhUVVJFXzNEXS5yZXNpemUoY2Fwcy5tYXhD
b21iaW5lZFRleHR1cmVJbWFnZVVuaXRzKTsKICAgICB9CisgICAgaWYgKGNsaWVudFZlcnNpb24g
Pj0gVmVyc2lvbigzLCAxKSkKKyAgICB7CisgICAgICAgIG1TYW1wbGVyVGV4dHVyZXNbR0xfVEVY
VFVSRV8yRF9NVUxUSVNBTVBMRV0ucmVzaXplKGNhcHMubWF4Q29tYmluZWRUZXh0dXJlSW1hZ2VV
bml0cyk7CisKKyAgICAgICAgbUF0b21pY0NvdW50ZXJCdWZmZXJzLnJlc2l6ZShjYXBzLm1heEF0
b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5ncyk7CisgICAgICAgIG1TaGFkZXJTdG9yYWdlQnVmZmVy
cy5yZXNpemUoY2Fwcy5tYXhTaGFkZXJTdG9yYWdlQnVmZmVyQmluZGluZ3MpOworICAgIH0KICAg
ICBpZiAoZXh0ZW5zaW9ucy5lZ2xJbWFnZUV4dGVybmFsIHx8IGV4dGVuc2lvbnMuZWdsU3RyZWFt
Q29uc3VtZXJFeHRlcm5hbCkKICAgICB7CiAgICAgICAgIG1TYW1wbGVyVGV4dHVyZXNbR0xfVEVY
VFVSRV9FWFRFUk5BTF9PRVNdLnJlc2l6ZShjYXBzLm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5p
dHMpOwpAQCAtMjA1LDkgKzIxNywxMSBAQCB2b2lkIFN0YXRlOjppbml0aWFsaXplKGNvbnN0IENh
cHMgJmNhcHMsCiAgICAgbVBhdGhTdGVuY2lsRnVuYyA9IEdMX0FMV0FZUzsKICAgICBtUGF0aFN0
ZW5jaWxSZWYgID0gMDsKICAgICBtUGF0aFN0ZW5jaWxNYXNrID0gc3RkOjpudW1lcmljX2xpbWl0
czxHTHVpbnQ+OjptYXgoKTsKKworICAgIG1Sb2J1c3RSZXNvdXJjZUluaXQgPSByb2J1c3RSZXNv
dXJjZUluaXQ7CiB9CiAKLXZvaWQgU3RhdGU6OnJlc2V0KCkKK3ZvaWQgU3RhdGU6OnJlc2V0KGNv
bnN0IENvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgZm9yIChUZXh0dXJlQmluZGluZ01hcDo6aXRl
cmF0b3IgYmluZGluZ1ZlYyA9IG1TYW1wbGVyVGV4dHVyZXMuYmVnaW4oKTsgYmluZGluZ1ZlYyAh
PSBtU2FtcGxlclRleHR1cmVzLmVuZCgpOyBiaW5kaW5nVmVjKyspCiAgICAgewpAQCAtMjIzLDEx
ICsyMzcsMTIgQEAgdm9pZCBTdGF0ZTo6cmVzZXQoKQogICAgIH0KIAogICAgIG1BcnJheUJ1ZmZl
ci5zZXQoTlVMTCk7CisgICAgbURyYXdJbmRpcmVjdEJ1ZmZlci5zZXQoTlVMTCk7CiAgICAgbVJl
bmRlcmJ1ZmZlci5zZXQoTlVMTCk7CiAKICAgICBpZiAobVByb2dyYW0pCiAgICAgewotICAgICAg
ICBtUHJvZ3JhbS0+cmVsZWFzZSgpOworICAgICAgICBtUHJvZ3JhbS0+cmVsZWFzZShjb250ZXh0
KTsKICAgICB9CiAgICAgbVByb2dyYW0gPSBOVUxMOwogCkBAIC0yNTAsNiArMjY1LDE4IEBAIHZv
aWQgU3RhdGU6OnJlc2V0KCkKICAgICBtUGFjay5waXhlbEJ1ZmZlci5zZXQoTlVMTCk7CiAgICAg
bVVucGFjay5waXhlbEJ1ZmZlci5zZXQoTlVMTCk7CiAKKyAgICBtR2VuZXJpY0F0b21pY0NvdW50
ZXJCdWZmZXIuc2V0KG51bGxwdHIpOworICAgIGZvciAoYXV0byAmYnVmIDogbUF0b21pY0NvdW50
ZXJCdWZmZXJzKQorICAgIHsKKyAgICAgICAgYnVmLnNldChudWxscHRyKTsKKyAgICB9CisKKyAg
ICBtR2VuZXJpY1NoYWRlclN0b3JhZ2VCdWZmZXIuc2V0KG51bGxwdHIpOworICAgIGZvciAoYXV0
byAmYnVmIDogbVNoYWRlclN0b3JhZ2VCdWZmZXJzKQorICAgIHsKKyAgICAgICAgYnVmLnNldChu
dWxscHRyKTsKKyAgICB9CisKICAgICBtUHJvZ3JhbSA9IE5VTEw7CiAKICAgICBhbmdsZTo6TWF0
cml4PEdMZmxvYXQ+OjpzZXRUb0lkZW50aXR5KG1QYXRoTWF0cml4UHJvaik7CkBAIC02MzEsMTIg
KzY1OCwyMiBAQCB2b2lkIFN0YXRlOjpzZXRFbmFibGVGZWF0dXJlKEdMZW51bSBmZWF0dXJlLCBi
b29sIGVuYWJsZWQpCiAgICAgICBjYXNlIEdMX0RJVEhFUjogICAgICAgICAgICAgICAgICAgICAg
ICBzZXREaXRoZXIoZW5hYmxlZCk7ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBH
TF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWDogc2V0UHJpbWl0aXZlUmVzdGFydChlbmFi
bGVkKTsgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfUkFTVEVSSVpFUl9ESVNDQVJEOiAgICAg
ICAgICAgIHNldFJhc3Rlcml6ZXJEaXNjYXJkKGVuYWJsZWQpOyAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX1NBTVBMRV9NQVNLOgorICAgICAgICAgIGlmIChlbmFibGVkKQorICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgLy8gRW5hYmxpbmcgdGhpcyBmZWF0dXJlIGlzIG5vdCBpbXBsZW1lbnRl
ZCB5ZXQuCisgICAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICB9CisgICAg
ICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUzoKICAg
ICAgICAgICBtRGVidWcuc2V0T3V0cHV0U3luY2hyb25vdXMoZW5hYmxlZCk7CiAgICAgICAgICAg
YnJlYWs7CiAgICAgICBjYXNlIEdMX0RFQlVHX09VVFBVVDoKICAgICAgICAgICBtRGVidWcuc2V0
T3V0cHV0RW5hYmxlZChlbmFibGVkKTsKICAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xf
RlJBTUVCVUZGRVJfU1JHQl9FWFQ6CisgICAgICAgICAgc2V0RnJhbWVidWZmZXJTUkdCKGVuYWJs
ZWQpOworICAgICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9CiB9CkBAIC02NTgsMTIgKzY5NSwyMSBA
QCBib29sIFN0YXRlOjpnZXRFbmFibGVGZWF0dXJlKEdMZW51bSBmZWF0dXJlKSBjb25zdAogICAg
ICAgY2FzZSBHTF9ESVRIRVI6ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzRGl0aGVy
RW5hYmxlZCgpOwogICAgICAgY2FzZSBHTF9QUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWDog
cmV0dXJuIGlzUHJpbWl0aXZlUmVzdGFydEVuYWJsZWQoKTsKICAgICAgIGNhc2UgR0xfUkFTVEVS
SVpFUl9ESVNDQVJEOiAgICAgICAgICAgIHJldHVybiBpc1Jhc3Rlcml6ZXJEaXNjYXJkRW5hYmxl
ZCgpOworICAgICAgY2FzZSBHTF9TQU1QTEVfTUFTSzoKKyAgICAgICAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgY2FzZSBHTF9ERUJVR19PVVRQVVRf
U1lOQ0hST05PVVM6CiAgICAgICAgICAgcmV0dXJuIG1EZWJ1Zy5pc091dHB1dFN5bmNocm9ub3Vz
KCk7CiAgICAgICBjYXNlIEdMX0RFQlVHX09VVFBVVDoKICAgICAgICAgICByZXR1cm4gbURlYnVn
LmlzT3V0cHV0RW5hYmxlZCgpOwogICAgICAgY2FzZSBHTF9CSU5EX0dFTkVSQVRFU19SRVNPVVJD
RV9DSFJPTUlVTToKICAgICAgICAgICByZXR1cm4gaXNCaW5kR2VuZXJhdGVzUmVzb3VyY2VFbmFi
bGVkKCk7CisgICAgICBjYXNlIEdMX0NMSUVOVF9BUlJBWVNfQU5HTEU6CisgICAgICAgICAgcmV0
dXJuIGFyZUNsaWVudEFycmF5c0VuYWJsZWQoKTsKKyAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJf
U1JHQl9FWFQ6CisgICAgICAgICAgcmV0dXJuIGdldEZyYW1lYnVmZmVyU1JHQigpOworICAgICAg
Y2FzZSBHTF9DT05URVhUX1JPQlVTVF9SRVNPVVJDRV9JTklUSUFMSVpBVElPTl9BTkdMRToKKyAg
ICAgICAgICByZXR1cm4gbVJvYnVzdFJlc291cmNlSW5pdDsKICAgICAgIGRlZmF1bHQ6ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7IHJldHVybiBmYWxzZTsKICAg
ICB9CiB9CkBAIC02OTksNiArNzQ1LDExIEBAIGJvb2wgU3RhdGU6OmlzQmluZEdlbmVyYXRlc1Jl
c291cmNlRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1CaW5kR2VuZXJhdGVzUmVzb3VyY2U7
CiB9CiAKK2Jvb2wgU3RhdGU6OmFyZUNsaWVudEFycmF5c0VuYWJsZWQoKSBjb25zdAoreworICAg
IHJldHVybiBtQ2xpZW50QXJyYXlzRW5hYmxlZDsKK30KKwogdm9pZCBTdGF0ZTo6c2V0Vmlld3Bv
cnRQYXJhbXMoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
CiB7CiAgICAgbVZpZXdwb3J0LnggPSB4OwpAQCAtNzQ5LDcgKzgwMCw3IEBAIEdMdWludCBTdGF0
ZTo6Z2V0U2FtcGxlclRleHR1cmVJZCh1bnNpZ25lZCBpbnQgc2FtcGxlciwgR0xlbnVtIHR5cGUp
IGNvbnN0CiAgICAgcmV0dXJuIGl0LT5zZWNvbmRbc2FtcGxlcl0uaWQoKTsKIH0KIAotdm9pZCBT
dGF0ZTo6ZGV0YWNoVGV4dHVyZShjb25zdCBUZXh0dXJlTWFwICZ6ZXJvVGV4dHVyZXMsIEdMdWlu
dCB0ZXh0dXJlKQordm9pZCBTdGF0ZTo6ZGV0YWNoVGV4dHVyZShjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBjb25zdCBUZXh0dXJlTWFwICZ6ZXJvVGV4dHVyZXMsIEdMdWludCB0ZXh0dXJlKQogewog
ICAgIC8vIFRleHR1cmVzIGhhdmUgYSBkZXRhY2ggbWV0aG9kIG9uIFN0YXRlIHJhdGhlciB0aGFu
IGEgc2ltcGxlCiAgICAgLy8gcmVtb3ZlQmluZGluZywgYmVjYXVzZSB0aGUgemVyby9udWxsIHRl
eHR1cmUgb2JqZWN0cyBhcmUgbWFuYWdlZApAQCAtNzg0LDEyICs4MzUsMTIgQEAgdm9pZCBTdGF0
ZTo6ZGV0YWNoVGV4dHVyZShjb25zdCBUZXh0dXJlTWFwICZ6ZXJvVGV4dHVyZXMsIEdMdWludCB0
ZXh0dXJlKQogCiAgICAgaWYgKG1SZWFkRnJhbWVidWZmZXIpCiAgICAgewotICAgICAgICBtUmVh
ZEZyYW1lYnVmZmVyLT5kZXRhY2hUZXh0dXJlKHRleHR1cmUpOworICAgICAgICBtUmVhZEZyYW1l
YnVmZmVyLT5kZXRhY2hUZXh0dXJlKGNvbnRleHQsIHRleHR1cmUpOwogICAgIH0KIAogICAgIGlm
IChtRHJhd0ZyYW1lYnVmZmVyKQogICAgIHsKLSAgICAgICAgbURyYXdGcmFtZWJ1ZmZlci0+ZGV0
YWNoVGV4dHVyZSh0ZXh0dXJlKTsKKyAgICAgICAgbURyYXdGcmFtZWJ1ZmZlci0+ZGV0YWNoVGV4
dHVyZShjb250ZXh0LCB0ZXh0dXJlKTsKICAgICB9CiB9CiAKQEAgLTg1Myw3ICs5MDQsNyBAQCBS
ZW5kZXJidWZmZXIgKlN0YXRlOjpnZXRDdXJyZW50UmVuZGVyYnVmZmVyKCkgY29uc3QKICAgICBy
ZXR1cm4gbVJlbmRlcmJ1ZmZlci5nZXQoKTsKIH0KIAotdm9pZCBTdGF0ZTo6ZGV0YWNoUmVuZGVy
YnVmZmVyKEdMdWludCByZW5kZXJidWZmZXIpCit2b2lkIFN0YXRlOjpkZXRhY2hSZW5kZXJidWZm
ZXIoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHJlbmRlcmJ1ZmZlcikKIHsKICAgICAv
LyBbT3BlbkdMIEVTIDIuMC4yNF0gc2VjdGlvbiA0LjQgcGFnZSAxMDk6CiAgICAgLy8gSWYgYSBy
ZW5kZXJidWZmZXIgdGhhdCBpcyBjdXJyZW50bHkgYm91bmQgdG8gUkVOREVSQlVGRkVSIGlzIGRl
bGV0ZWQsIGl0IGlzIGFzIHRob3VnaCBCaW5kUmVuZGVyYnVmZmVyCkBAIC04NzQsMTIgKzkyNSwx
MiBAQCB2b2lkIFN0YXRlOjpkZXRhY2hSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcikK
IAogICAgIGlmIChyZWFkRnJhbWVidWZmZXIpCiAgICAgewotICAgICAgICByZWFkRnJhbWVidWZm
ZXItPmRldGFjaFJlbmRlcmJ1ZmZlcihyZW5kZXJidWZmZXIpOworICAgICAgICByZWFkRnJhbWVi
dWZmZXItPmRldGFjaFJlbmRlcmJ1ZmZlcihjb250ZXh0LCByZW5kZXJidWZmZXIpOwogICAgIH0K
IAogICAgIGlmIChkcmF3RnJhbWVidWZmZXIgJiYgZHJhd0ZyYW1lYnVmZmVyICE9IHJlYWRGcmFt
ZWJ1ZmZlcikKICAgICB7Ci0gICAgICAgIGRyYXdGcmFtZWJ1ZmZlci0+ZGV0YWNoUmVuZGVyYnVm
ZmVyKHJlbmRlcmJ1ZmZlcik7CisgICAgICAgIGRyYXdGcmFtZWJ1ZmZlci0+ZGV0YWNoUmVuZGVy
YnVmZmVyKGNvbnRleHQsIHJlbmRlcmJ1ZmZlcik7CiAgICAgfQogCiB9CkBAIC05OTcsMTMgKzEw
NDgsNTIgQEAgYm9vbCBTdGF0ZTo6cmVtb3ZlVmVydGV4QXJyYXlCaW5kaW5nKEdMdWludCB2ZXJ0
ZXhBcnJheSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU3RhdGU6OnNldFByb2dyYW0o
UHJvZ3JhbSAqbmV3UHJvZ3JhbSkKK3ZvaWQgU3RhdGU6OnNldEVsZW1lbnRBcnJheUJ1ZmZlcihC
dWZmZXIgKmJ1ZmZlcikKK3sKKyAgICBnZXRWZXJ0ZXhBcnJheSgpLT5zZXRFbGVtZW50QXJyYXlC
dWZmZXIoYnVmZmVyKTsKKyAgICBtRGlydHlPYmplY3RzLnNldChESVJUWV9PQkpFQ1RfVkVSVEVY
X0FSUkFZKTsKK30KKwordm9pZCBTdGF0ZTo6YmluZFZlcnRleEJ1ZmZlcihHTHVpbnQgYmluZGlu
Z0luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIgKmJvdW5kQnVmZmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlKQoreworICAgIGdldFZlcnRleEFy
cmF5KCktPmJpbmRWZXJ0ZXhCdWZmZXIoYmluZGluZ0luZGV4LCBib3VuZEJ1ZmZlciwgb2Zmc2V0
LCBzdHJpZGUpOworICAgIG1EaXJ0eU9iamVjdHMuc2V0KERJUlRZX09CSkVDVF9WRVJURVhfQVJS
QVkpOworfQorCit2b2lkIFN0YXRlOjpzZXRWZXJ0ZXhBdHRyaWJCaW5kaW5nKEdMdWludCBhdHRy
aWJJbmRleCwgR0x1aW50IGJpbmRpbmdJbmRleCkKK3sKKyAgICBnZXRWZXJ0ZXhBcnJheSgpLT5z
ZXRWZXJ0ZXhBdHRyaWJCaW5kaW5nKGF0dHJpYkluZGV4LCBiaW5kaW5nSW5kZXgpOworICAgIG1E
aXJ0eU9iamVjdHMuc2V0KERJUlRZX09CSkVDVF9WRVJURVhfQVJSQVkpOworfQorCit2b2lkIFN0
YXRlOjpzZXRWZXJ0ZXhBdHRyaWJGb3JtYXQoR0x1aW50IGF0dHJpYkluZGV4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBub3JtYWxpemVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgcHVyZUludGVnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IHJlbGF0aXZlT2Zmc2V0KQoreworICAgIGdldFZlcnRleEFycmF5KCktPnNldFZlcnRleEF0
dHJpYkZvcm1hdChhdHRyaWJJbmRleCwgc2l6ZSwgdHlwZSwgbm9ybWFsaXplZCwgcHVyZUludGVn
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aXZl
T2Zmc2V0KTsKKyAgICBtRGlydHlPYmplY3RzLnNldChESVJUWV9PQkpFQ1RfVkVSVEVYX0FSUkFZ
KTsKK30KKwordm9pZCBTdGF0ZTo6c2V0VmVydGV4QmluZGluZ0Rpdmlzb3IoR0x1aW50IGJpbmRp
bmdJbmRleCwgR0x1aW50IGRpdmlzb3IpCit7CisgICAgZ2V0VmVydGV4QXJyYXkoKS0+c2V0VmVy
dGV4QmluZGluZ0Rpdmlzb3IoYmluZGluZ0luZGV4LCBkaXZpc29yKTsKKyAgICBtRGlydHlPYmpl
Y3RzLnNldChESVJUWV9PQkpFQ1RfVkVSVEVYX0FSUkFZKTsKK30KKwordm9pZCBTdGF0ZTo6c2V0
UHJvZ3JhbShjb25zdCBDb250ZXh0ICpjb250ZXh0LCBQcm9ncmFtICpuZXdQcm9ncmFtKQogewog
ICAgIGlmIChtUHJvZ3JhbSAhPSBuZXdQcm9ncmFtKQogICAgIHsKICAgICAgICAgaWYgKG1Qcm9n
cmFtKQogICAgICAgICB7Ci0gICAgICAgICAgICBtUHJvZ3JhbS0+cmVsZWFzZSgpOworICAgICAg
ICAgICAgbVByb2dyYW0tPnJlbGVhc2UoY29udGV4dCk7CiAgICAgICAgIH0KIAogICAgICAgICBt
UHJvZ3JhbSA9IG5ld1Byb2dyYW07CkBAIC0xMTA1LDYgKzExOTUsMTIgQEAgR0x1aW50IFN0YXRl
OjpnZXRBcnJheUJ1ZmZlcklkKCkgY29uc3QKICAgICByZXR1cm4gbUFycmF5QnVmZmVyLmlkKCk7
CiB9CiAKK3ZvaWQgU3RhdGU6OnNldERyYXdJbmRpcmVjdEJ1ZmZlckJpbmRpbmcoQnVmZmVyICpi
dWZmZXIpCit7CisgICAgbURyYXdJbmRpcmVjdEJ1ZmZlci5zZXQoYnVmZmVyKTsKKyAgICBtRGly
dHlCaXRzLnNldChESVJUWV9CSVRfRFJBV19JTkRJUkVDVF9CVUZGRVJfQklORElORyk7Cit9CisK
IHZvaWQgU3RhdGU6OnNldEdlbmVyaWNVbmlmb3JtQnVmZmVyQmluZGluZyhCdWZmZXIgKmJ1ZmZl
cikKIHsKICAgICBtR2VuZXJpY1VuaWZvcm1CdWZmZXIuc2V0KGJ1ZmZlcik7CkBAIC0xMTIxLDYg
KzEyMTcsNDYgQEAgY29uc3QgT2Zmc2V0QmluZGluZ1BvaW50ZXI8QnVmZmVyPiAmU3RhdGU6Omdl
dEluZGV4ZWRVbmlmb3JtQnVmZmVyKHNpemVfdCBpbmRleCkKICAgICByZXR1cm4gbVVuaWZvcm1C
dWZmZXJzW2luZGV4XTsKIH0KIAordm9pZCBTdGF0ZTo6c2V0R2VuZXJpY0F0b21pY0NvdW50ZXJC
dWZmZXJCaW5kaW5nKEJ1ZmZlciAqYnVmZmVyKQoreworICAgIG1HZW5lcmljQXRvbWljQ291bnRl
ckJ1ZmZlci5zZXQoYnVmZmVyKTsKK30KKwordm9pZCBTdGF0ZTo6c2V0SW5kZXhlZEF0b21pY0Nv
dW50ZXJCdWZmZXJCaW5kaW5nKEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIgKmJ1ZmZlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBz
aXplKQoreworICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1BdG9taWND
b3VudGVyQnVmZmVycy5zaXplKCkpOworICAgIG1BdG9taWNDb3VudGVyQnVmZmVyc1tpbmRleF0u
c2V0KGJ1ZmZlciwgb2Zmc2V0LCBzaXplKTsKK30KKworY29uc3QgT2Zmc2V0QmluZGluZ1BvaW50
ZXI8QnVmZmVyPiAmU3RhdGU6OmdldEluZGV4ZWRBdG9taWNDb3VudGVyQnVmZmVyKHNpemVfdCBp
bmRleCkgY29uc3QKK3sKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBt
QXRvbWljQ291bnRlckJ1ZmZlcnMuc2l6ZSgpKTsKKyAgICByZXR1cm4gbUF0b21pY0NvdW50ZXJC
dWZmZXJzW2luZGV4XTsKK30KKwordm9pZCBTdGF0ZTo6c2V0R2VuZXJpY1NoYWRlclN0b3JhZ2VC
dWZmZXJCaW5kaW5nKEJ1ZmZlciAqYnVmZmVyKQoreworICAgIG1HZW5lcmljU2hhZGVyU3RvcmFn
ZUJ1ZmZlci5zZXQoYnVmZmVyKTsKK30KKwordm9pZCBTdGF0ZTo6c2V0SW5kZXhlZFNoYWRlclN0
b3JhZ2VCdWZmZXJCaW5kaW5nKEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIgKmJ1ZmZlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBz
aXplKQoreworICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1TaGFkZXJT
dG9yYWdlQnVmZmVycy5zaXplKCkpOworICAgIG1TaGFkZXJTdG9yYWdlQnVmZmVyc1tpbmRleF0u
c2V0KGJ1ZmZlciwgb2Zmc2V0LCBzaXplKTsKK30KKworY29uc3QgT2Zmc2V0QmluZGluZ1BvaW50
ZXI8QnVmZmVyPiAmU3RhdGU6OmdldEluZGV4ZWRTaGFkZXJTdG9yYWdlQnVmZmVyKHNpemVfdCBp
bmRleCkgY29uc3QKK3sKKyAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBt
U2hhZGVyU3RvcmFnZUJ1ZmZlcnMuc2l6ZSgpKTsKKyAgICByZXR1cm4gbVNoYWRlclN0b3JhZ2VC
dWZmZXJzW2luZGV4XTsKK30KKwogdm9pZCBTdGF0ZTo6c2V0Q29weVJlYWRCdWZmZXJCaW5kaW5n
KEJ1ZmZlciAqYnVmZmVyKQogewogICAgIG1Db3B5UmVhZEJ1ZmZlci5zZXQoYnVmZmVyKTsKQEAg
LTExNTUsMTUgKzEyOTEsMjIgQEAgQnVmZmVyICpTdGF0ZTo6Z2V0VGFyZ2V0QnVmZmVyKEdMZW51
bSB0YXJnZXQpIGNvbnN0CiAgICAgICBjYXNlIEdMX1BJWEVMX1VOUEFDS19CVUZGRVI6ICAgICAg
IHJldHVybiBtVW5wYWNrLnBpeGVsQnVmZmVyLmdldCgpOwogICAgICAgY2FzZSBHTF9UUkFOU0ZP
Uk1fRkVFREJBQ0tfQlVGRkVSOiByZXR1cm4gbVRyYW5zZm9ybUZlZWRiYWNrLT5nZXRHZW5lcmlj
QnVmZmVyKCkuZ2V0KCk7CiAgICAgICBjYXNlIEdMX1VOSUZPUk1fQlVGRkVSOiAgICAgICAgICAg
IHJldHVybiBtR2VuZXJpY1VuaWZvcm1CdWZmZXIuZ2V0KCk7CisgICAgICBjYXNlIEdMX0FUT01J
Q19DT1VOVEVSX0JVRkZFUjoKKyAgICAgICAgICByZXR1cm4gbUdlbmVyaWNBdG9taWNDb3VudGVy
QnVmZmVyLmdldCgpOworICAgICAgY2FzZSBHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVI6CisgICAg
ICAgICAgcmV0dXJuIG1HZW5lcmljU2hhZGVyU3RvcmFnZUJ1ZmZlci5nZXQoKTsKKyAgICAgIGNh
c2UgR0xfRFJBV19JTkRJUkVDVF9CVUZGRVI6CisgICAgICAgICAgcmV0dXJuIG1EcmF3SW5kaXJl
Y3RCdWZmZXIuZ2V0KCk7CiAgICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgICAgICAg
IHJldHVybiBOVUxMOwogICAgIH0KIH0KIAogdm9pZCBTdGF0ZTo6ZGV0YWNoQnVmZmVyKEdMdWlu
dCBidWZmZXJOYW1lKQogewotICAgIEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gKmJ1ZmZlcnNbXSA9
IHsmbUFycmF5QnVmZmVyLCAgICAgICAgJm1Db3B5UmVhZEJ1ZmZlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1Db3B5V3JpdGVCdWZmZXIsICAgICZtUGFjay5w
aXhlbEJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1V
bnBhY2sucGl4ZWxCdWZmZXIsICZtR2VuZXJpY1VuaWZvcm1CdWZmZXJ9OworICAgIEJpbmRpbmdQ
b2ludGVyPEJ1ZmZlcj4gKmJ1ZmZlcnNbXSA9IHsKKyAgICAgICAgJm1BcnJheUJ1ZmZlciwgICAg
ICAgICZtR2VuZXJpY0F0b21pY0NvdW50ZXJCdWZmZXIsICZtQ29weVJlYWRCdWZmZXIsCisgICAg
ICAgICZtQ29weVdyaXRlQnVmZmVyLCAgICAmbURyYXdJbmRpcmVjdEJ1ZmZlciwgICAgICAgICAm
bVBhY2sucGl4ZWxCdWZmZXIsCisgICAgICAgICZtVW5wYWNrLnBpeGVsQnVmZmVyLCAmbUdlbmVy
aWNVbmlmb3JtQnVmZmVyLCAgICAgICAmbUdlbmVyaWNTaGFkZXJTdG9yYWdlQnVmZmVyfTsKICAg
ICBmb3IgKGF1dG8gYnVmZmVyIDogYnVmZmVycykKICAgICB7CiAgICAgICAgIGlmIChidWZmZXIt
PmlkKCkgPT0gYnVmZmVyTmFtZSkKQEAgLTE0NTYsNiArMTU5OSwxNyBAQCBHTHVpbnQgU3RhdGU6
OmdldFBhdGhTdGVuY2lsTWFzaygpIGNvbnN0CiAgICAgcmV0dXJuIG1QYXRoU3RlbmNpbE1hc2s7
CiB9CiAKK3ZvaWQgU3RhdGU6OnNldEZyYW1lYnVmZmVyU1JHQihib29sIHNSR0IpCit7CisgICAg
bUZyYW1lYnVmZmVyU1JHQiA9IHNSR0I7CisgICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0ZS
QU1FQlVGRkVSX1NSR0IpOworfQorCitib29sIFN0YXRlOjpnZXRGcmFtZWJ1ZmZlclNSR0IoKSBj
b25zdAoreworICAgIHJldHVybiBtRnJhbWVidWZmZXJTUkdCOworfQorCiB2b2lkIFN0YXRlOjpn
ZXRCb29sZWFudihHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1zKQogewogICAgIHN3aXRj
aCAocG5hbWUpCkBAIC0xNTAwLDYgKzE2NTQsMTUgQEAgdm9pZCBTdGF0ZTo6Z2V0Qm9vbGVhbnYo
R0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnBhcmFtcykKICAgICAgIGNhc2UgR0xfQklORF9HRU5F
UkFURVNfUkVTT1VSQ0VfQ0hST01JVU06CiAgICAgICAgICAgKnBhcmFtcyA9IGlzQmluZEdlbmVy
YXRlc1Jlc291cmNlRW5hYmxlZCgpID8gR0xfVFJVRSA6IEdMX0ZBTFNFOwogICAgICAgICAgIGJy
ZWFrOworICAgICAgY2FzZSBHTF9DTElFTlRfQVJSQVlTX0FOR0xFOgorICAgICAgICAgICpwYXJh
bXMgPSBhcmVDbGllbnRBcnJheXNFbmFibGVkKCkgPyBHTF9UUlVFIDogR0xfRkFMU0U7CisgICAg
ICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX1NSR0JfRVhUOgorICAgICAg
ICAgICpwYXJhbXMgPSBnZXRGcmFtZWJ1ZmZlclNSR0IoKSA/IEdMX1RSVUUgOiBHTF9GQUxTRTsK
KyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfQ09OVEVYVF9ST0JVU1RfUkVTT1VSQ0Vf
SU5JVElBTElaQVRJT05fQU5HTEU6CisgICAgICAgICAgKnBhcmFtcyA9IG1Sb2J1c3RSZXNvdXJj
ZUluaXQgPyBHTF9UUlVFIDogR0xfRkFMU0U7CisgICAgICAgICAgYnJlYWs7CiAgICAgICBkZWZh
dWx0OgogICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICBicmVhazsKQEAgLTE1NDksNyAr
MTcxMiw3IEBAIHZvaWQgU3RhdGU6OmdldEZsb2F0dihHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBh
cmFtcykKICAgICB9CiB9CiAKLXZvaWQgU3RhdGU6OmdldEludGVnZXJ2KGNvbnN0IENvbnRleHRT
dGF0ZSAmZGF0YSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQordm9pZCBTdGF0ZTo6Z2V0
SW50ZWdlcnYoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFy
YW1zKQogewogICAgIGlmIChwbmFtZSA+PSBHTF9EUkFXX0JVRkZFUjBfRVhUICYmIHBuYW1lIDw9
IEdMX0RSQVdfQlVGRkVSMTVfRVhUKQogICAgIHsKQEAgLTE1NjgsNiArMTczMSw5IEBAIHZvaWQg
U3RhdGU6OmdldEludGVnZXJ2KGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0YSwgR0xlbnVtIHBuYW1l
LCBHTGludCAqcGFyYW1zKQogICAgIHN3aXRjaCAocG5hbWUpCiAgICAgewogICAgICAgY2FzZSBH
TF9BUlJBWV9CVUZGRVJfQklORElORzogICAgICAgICAgICAgICAgICAgICAqcGFyYW1zID0gbUFy
cmF5QnVmZmVyLmlkKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSX0JJTkRJTkc6CisgICAgICAgICAgKnBhcmFt
cyA9IG1EcmF3SW5kaXJlY3RCdWZmZXIuaWQoKTsKKyAgICAgICAgICBicmVhazsKICAgICAgIGNh
c2UgR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORzogICAgICAgICAgICAgKnBhcmFtcyA9
IGdldFZlcnRleEFycmF5KCktPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpLmlkKCk7IGJyZWFrOwog
ICAgICAgICAvL2Nhc2UgR0xfRlJBTUVCVUZGRVJfQklORElORzogICAgICAgICAgICAgICAgICAg
IC8vIG5vdyBlcXVpdmFsZW50IHRvIEdMX0RSQVdfRlJBTUVCVUZGRVJfQklORElOR19BTkdMRQog
ICAgICAgY2FzZSBHTF9EUkFXX0ZSQU1FQlVGRkVSX0JJTkRJTkdfQU5HTEU6ICAgICAgICAgICAq
cGFyYW1zID0gbURyYXdGcmFtZWJ1ZmZlci0+aWQoKTsgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CkBAIC0xNjMzLDE0ICsxNzk5LDE0IEBAIHZvaWQgU3RhdGU6OmdldEludGVnZXJ2KGNv
bnN0IENvbnRleHRTdGF0ZSAmZGF0YSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogICAg
ICAgY2FzZSBHTF9TQU1QTEVTOgogICAgICAgICB7CiAgICAgICAgICAgICBnbDo6RnJhbWVidWZm
ZXIgKmZyYW1lYnVmZmVyID0gbURyYXdGcmFtZWJ1ZmZlcjsKLSAgICAgICAgICAgIGlmIChmcmFt
ZWJ1ZmZlci0+Y2hlY2tTdGF0dXMoZGF0YSkgPT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisg
ICAgICAgICAgICBpZiAoZnJhbWVidWZmZXItPmNoZWNrU3RhdHVzKGNvbnRleHQpID09IEdMX0ZS
QU1FQlVGRkVSX0NPTVBMRVRFKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHN3aXRj
aCAocG5hbWUpCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgY2FzZSBHTF9T
QU1QTEVfQlVGRkVSUzoKLSAgICAgICAgICAgICAgICAgICAgaWYgKGZyYW1lYnVmZmVyLT5nZXRT
YW1wbGVzKGRhdGEpICE9IDApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICpwYXJhbXMgPSAxOworICAgICAgICAgICAgICAgICAgICAgIGlmIChmcmFtZWJ1
ZmZlci0+Z2V0U2FtcGxlcyhjb250ZXh0KSAhPSAwKQorICAgICAgICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IDE7CiAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICB7CkBA
IC0xNjQ4LDggKzE4MTQsOCBAQCB2b2lkIFN0YXRlOjpnZXRJbnRlZ2Vydihjb25zdCBDb250ZXh0
U3RhdGUgJmRhdGEsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgIGNh
c2UgR0xfU0FNUExFUzoKLSAgICAgICAgICAgICAgICAgICAgKnBhcmFtcyA9IGZyYW1lYnVmZmVy
LT5nZXRTYW1wbGVzKGRhdGEpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgICAqcGFyYW1zID0gZnJhbWVidWZmZXItPmdldFNhbXBsZXMoY29udGV4dCk7
CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgZWxzZQpAQCAtMTc5NCw2ICsxOTYwLDEyIEBAIHZvaWQgU3Rh
dGU6OmdldEludGVnZXJ2KGNvbnN0IENvbnRleHRTdGF0ZSAmZGF0YSwgR0xlbnVtIHBuYW1lLCBH
TGludCAqcGFyYW1zKQogICAgICAgY2FzZSBHTF9DT1ZFUkFHRV9NT0RVTEFUSU9OX0NIUk9NSVVN
OgogICAgICAgICAgICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxHTGludD4obUNvdmVyYWdlTW9kdWxh
dGlvbik7CiAgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0FUT01JQ19DT1VOVEVSX0JV
RkZFUl9CSU5ESU5HOgorICAgICAgICAgICpwYXJhbXMgPSBtR2VuZXJpY0F0b21pY0NvdW50ZXJC
dWZmZXIuaWQoKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU0hBREVSX1NUT1JB
R0VfQlVGRkVSX0JJTkRJTkc6CisgICAgICAgICAgKnBhcmFtcyA9IG1HZW5lcmljU2hhZGVyU3Rv
cmFnZUJ1ZmZlci5pZCgpOworICAgICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDoKICAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKICAgICAgICAgYnJlYWs7CkBAIC0xODIxLDE3ICsxOTkzLDM3IEBA
IHZvaWQgU3RhdGU6OmdldEludGVnZXJpX3YoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBH
TGludCAqZGF0YSkKICAgICBzd2l0Y2ggKHRhcmdldCkKICAgICB7CiAgICAgICBjYXNlIEdMX1RS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVJfQklORElORzoKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0
PHNpemVfdD4oaW5kZXgpIDwgbVRyYW5zZm9ybUZlZWRiYWNrLT5nZXRJbmRleGVkQnVmZmVyQ291
bnQoKSkKLSAgICAgICAgewotICAgICAgICAgICAgKmRhdGEgPSBtVHJhbnNmb3JtRmVlZGJhY2st
PmdldEluZGV4ZWRCdWZmZXIoaW5kZXgpLmlkKCk7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7
CisgICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpIDwgbVRyYW5zZm9y
bUZlZWRiYWNrLT5nZXRJbmRleGVkQnVmZmVyQ291bnQoKSk7CisgICAgICAgICAgKmRhdGEgPSBt
VHJhbnNmb3JtRmVlZGJhY2stPmdldEluZGV4ZWRCdWZmZXIoaW5kZXgpLmlkKCk7CisgICAgICAg
ICAgYnJlYWs7CiAgICAgICBjYXNlIEdMX1VOSUZPUk1fQlVGRkVSX0JJTkRJTkc6Ci0gICAgICAg
IGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1Vbmlmb3JtQnVmZmVycy5zaXplKCkp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgICpkYXRhID0gbVVuaWZvcm1CdWZmZXJzW2luZGV4XS5p
ZCgpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgIEFTU0VSVChzdGF0aWNf
Y2FzdDxzaXplX3Q+KGluZGV4KSA8IG1Vbmlmb3JtQnVmZmVycy5zaXplKCkpOworICAgICAgICAg
ICpkYXRhID0gbVVuaWZvcm1CdWZmZXJzW2luZGV4XS5pZCgpOworICAgICAgICAgIGJyZWFrOwor
ICAgICAgY2FzZSBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVJfQklORElORzoKKyAgICAgICAgICBB
U1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtQXRvbWljQ291bnRlckJ1ZmZlcnMu
c2l6ZSgpKTsKKyAgICAgICAgICAqZGF0YSA9IG1BdG9taWNDb3VudGVyQnVmZmVyc1tpbmRleF0u
aWQoKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfU0hBREVSX1NUT1JBR0VfQlVG
RkVSX0JJTkRJTkc6CisgICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgp
IDwgbVNoYWRlclN0b3JhZ2VCdWZmZXJzLnNpemUoKSk7CisgICAgICAgICAgKmRhdGEgPSBtU2hh
ZGVyU3RvcmFnZUJ1ZmZlcnNbaW5kZXhdLmlkKCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICBj
YXNlIEdMX1ZFUlRFWF9CSU5ESU5HX0JVRkZFUjoKKyAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nh
c3Q8c2l6ZV90PihpbmRleCkgPCBtVmVydGV4QXJyYXktPmdldE1heEJpbmRpbmdzKCkpOworICAg
ICAgICAgICpkYXRhID0gbVZlcnRleEFycmF5LT5nZXRWZXJ0ZXhCaW5kaW5nKGluZGV4KS5idWZm
ZXIuaWQoKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgR0xfVkVSVEVYX0JJTkRJTkdf
RElWSVNPUjoKKyAgICAgICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBt
VmVydGV4QXJyYXktPmdldE1heEJpbmRpbmdzKCkpOworICAgICAgICAgICpkYXRhID0gbVZlcnRl
eEFycmF5LT5nZXRWZXJ0ZXhCaW5kaW5nKGluZGV4KS5kaXZpc29yOworICAgICAgICAgIGJyZWFr
OworICAgICAgY2FzZSBHTF9WRVJURVhfQklORElOR19PRkZTRVQ6CisgICAgICAgICAgQVNTRVJU
KHN0YXRpY19jYXN0PHNpemVfdD4oaW5kZXgpIDwgbVZlcnRleEFycmF5LT5nZXRNYXhCaW5kaW5n
cygpKTsKKyAgICAgICAgICAqZGF0YSA9IHN0YXRpY19jYXN0PEdMdWludD4obVZlcnRleEFycmF5
LT5nZXRWZXJ0ZXhCaW5kaW5nKGluZGV4KS5vZmZzZXQpOworICAgICAgICAgIGJyZWFrOworICAg
ICAgY2FzZSBHTF9WRVJURVhfQklORElOR19TVFJJREU6CisgICAgICAgICAgQVNTRVJUKHN0YXRp
Y19jYXN0PHNpemVfdD4oaW5kZXgpIDwgbVZlcnRleEFycmF5LT5nZXRNYXhCaW5kaW5ncygpKTsK
KyAgICAgICAgICAqZGF0YSA9IG1WZXJ0ZXhBcnJheS0+Z2V0VmVydGV4QmluZGluZyhpbmRleCku
c3RyaWRlOworICAgICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDoKICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOwogICAgICAgICAgIGJyZWFrOwpAQCAtMTg0MywyOSArMjAzNSwzNyBAQCB2b2lk
IFN0YXRlOjpnZXRJbnRlZ2VyNjRpX3YoR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTGlu
dDY0ICpkYXRhKQogICAgIHN3aXRjaCAodGFyZ2V0KQogICAgIHsKICAgICAgIGNhc2UgR0xfVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVDoKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNp
emVfdD4oaW5kZXgpIDwgbVRyYW5zZm9ybUZlZWRiYWNrLT5nZXRJbmRleGVkQnVmZmVyQ291bnQo
KSkKLSAgICAgICAgewotICAgICAgICAgICAgKmRhdGEgPSBtVHJhbnNmb3JtRmVlZGJhY2stPmdl
dEluZGV4ZWRCdWZmZXIoaW5kZXgpLmdldE9mZnNldCgpOwotICAgICAgICB9Ci0gICAgICAgIGJy
ZWFrOworICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1UcmFu
c2Zvcm1GZWVkYmFjay0+Z2V0SW5kZXhlZEJ1ZmZlckNvdW50KCkpOworICAgICAgICAgICpkYXRh
ID0gbVRyYW5zZm9ybUZlZWRiYWNrLT5nZXRJbmRleGVkQnVmZmVyKGluZGV4KS5nZXRPZmZzZXQo
KTsKKyAgICAgICAgICBicmVhazsKICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUl9TSVpFOgotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtVHJh
bnNmb3JtRmVlZGJhY2stPmdldEluZGV4ZWRCdWZmZXJDb3VudCgpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICAqZGF0YSA9IG1UcmFuc2Zvcm1GZWVkYmFjay0+Z2V0SW5kZXhlZEJ1ZmZlcihpbmRl
eCkuZ2V0U2l6ZSgpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgIEFTU0VS
VChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8IG1UcmFuc2Zvcm1GZWVkYmFjay0+Z2V0SW5k
ZXhlZEJ1ZmZlckNvdW50KCkpOworICAgICAgICAgICpkYXRhID0gbVRyYW5zZm9ybUZlZWRiYWNr
LT5nZXRJbmRleGVkQnVmZmVyKGluZGV4KS5nZXRTaXplKCk7CisgICAgICAgICAgYnJlYWs7CiAg
ICAgICBjYXNlIEdMX1VOSUZPUk1fQlVGRkVSX1NUQVJUOgotICAgICAgICBpZiAoc3RhdGljX2Nh
c3Q8c2l6ZV90PihpbmRleCkgPCBtVW5pZm9ybUJ1ZmZlcnMuc2l6ZSgpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICAqZGF0YSA9IG1Vbmlmb3JtQnVmZmVyc1tpbmRleF0uZ2V0T2Zmc2V0KCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgYnJlYWs7CisgICAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNp
emVfdD4oaW5kZXgpIDwgbVVuaWZvcm1CdWZmZXJzLnNpemUoKSk7CisgICAgICAgICAgKmRhdGEg
PSBtVW5pZm9ybUJ1ZmZlcnNbaW5kZXhdLmdldE9mZnNldCgpOworICAgICAgICAgIGJyZWFrOwog
ICAgICAgY2FzZSBHTF9VTklGT1JNX0JVRkZFUl9TSVpFOgotICAgICAgICBpZiAoc3RhdGljX2Nh
c3Q8c2l6ZV90PihpbmRleCkgPCBtVW5pZm9ybUJ1ZmZlcnMuc2l6ZSgpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICAqZGF0YSA9IG1Vbmlmb3JtQnVmZmVyc1tpbmRleF0uZ2V0U2l6ZSgpOwotICAg
ICAgICB9Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXpl
X3Q+KGluZGV4KSA8IG1Vbmlmb3JtQnVmZmVycy5zaXplKCkpOworICAgICAgICAgICpkYXRhID0g
bVVuaWZvcm1CdWZmZXJzW2luZGV4XS5nZXRTaXplKCk7CisgICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9TVEFSVDoKKyAgICAgICAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtQXRvbWljQ291bnRlckJ1ZmZlcnMuc2l6ZSgp
KTsKKyAgICAgICAgICAqZGF0YSA9IG1BdG9taWNDb3VudGVyQnVmZmVyc1tpbmRleF0uZ2V0T2Zm
c2V0KCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX0FUT01JQ19DT1VOVEVSX0JV
RkZFUl9TSVpFOgorICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8
IG1BdG9taWNDb3VudGVyQnVmZmVycy5zaXplKCkpOworICAgICAgICAgICpkYXRhID0gbUF0b21p
Y0NvdW50ZXJCdWZmZXJzW2luZGV4XS5nZXRTaXplKCk7CisgICAgICAgICAgYnJlYWs7CisgICAg
ICBjYXNlIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TVEFSVDoKKyAgICAgICAgICBBU1NFUlQo
c3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCkgPCBtU2hhZGVyU3RvcmFnZUJ1ZmZlcnMuc2l6ZSgp
KTsKKyAgICAgICAgICAqZGF0YSA9IG1TaGFkZXJTdG9yYWdlQnVmZmVyc1tpbmRleF0uZ2V0T2Zm
c2V0KCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEdMX1NIQURFUl9TVE9SQUdFX0JV
RkZFUl9TSVpFOgorICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4KSA8
IG1TaGFkZXJTdG9yYWdlQnVmZmVycy5zaXplKCkpOworICAgICAgICAgICpkYXRhID0gbVNoYWRl
clN0b3JhZ2VCdWZmZXJzW2luZGV4XS5nZXRTaXplKCk7CisgICAgICAgICAgYnJlYWs7CiAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgYnJlYWs7CkBA
IC0xODgxLDEzICsyMDgxLDE0IEBAIGJvb2wgU3RhdGU6Omhhc01hcHBlZEJ1ZmZlcihHTGVudW0g
dGFyZ2V0KSBjb25zdAogewogICAgIGlmICh0YXJnZXQgPT0gR0xfQVJSQVlfQlVGRkVSKQogICAg
IHsKLSAgICAgICAgY29uc3QgVmVydGV4QXJyYXkgKnZhbyA9IGdldFZlcnRleEFycmF5KCk7Cisg
ICAgICAgIGNvbnN0IFZlcnRleEFycmF5ICp2YW8gICAgID0gZ2V0VmVydGV4QXJyYXkoKTsKICAg
ICAgICAgY29uc3QgYXV0byAmdmVydGV4QXR0cmlicyA9IHZhby0+Z2V0VmVydGV4QXR0cmlidXRl
cygpOworICAgICAgICBjb25zdCBhdXRvICZ2ZXJ0ZXhCaW5kaW5ncyA9IHZhby0+Z2V0VmVydGV4
QmluZGluZ3MoKTsKICAgICAgICAgc2l6ZV90IG1heEVuYWJsZWRBdHRyaWIgPSB2YW8tPmdldE1h
eEVuYWJsZWRBdHRyaWJ1dGUoKTsKICAgICAgICAgZm9yIChzaXplX3QgYXR0cmliSW5kZXggPSAw
OyBhdHRyaWJJbmRleCA8IG1heEVuYWJsZWRBdHRyaWI7IGF0dHJpYkluZGV4KyspCiAgICAgICAg
IHsKICAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJnZlcnRleEF0dHJpYiA9
IHZlcnRleEF0dHJpYnNbYXR0cmliSW5kZXhdOwotICAgICAgICAgICAgZ2w6OkJ1ZmZlciAqYm91
bmRCdWZmZXIgPSB2ZXJ0ZXhBdHRyaWIuYnVmZmVyLmdldCgpOworICAgICAgICAgICAgYXV0byAq
Ym91bmRCdWZmZXIgPSB2ZXJ0ZXhCaW5kaW5nc1t2ZXJ0ZXhBdHRyaWIuYmluZGluZ0luZGV4XS5i
dWZmZXIuZ2V0KCk7CiAgICAgICAgICAgICBpZiAodmVydGV4QXR0cmliLmVuYWJsZWQgJiYgYm91
bmRCdWZmZXIgJiYgYm91bmRCdWZmZXItPmlzTWFwcGVkKCkpCiAgICAgICAgICAgICB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xOTAzLDE1ICsyMTA0LDE1IEBAIGJvb2wgU3Rh
dGU6Omhhc01hcHBlZEJ1ZmZlcihHTGVudW0gdGFyZ2V0KSBjb25zdAogICAgIH0KIH0KIAotdm9p
ZCBTdGF0ZTo6c3luY0RpcnR5T2JqZWN0cygpCit2b2lkIFN0YXRlOjpzeW5jRGlydHlPYmplY3Rz
KGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgaWYgKCFtRGlydHlPYmplY3RzLmFueSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBzeW5jRGlydHlPYmplY3RzKG1EaXJ0eU9iamVjdHMp
OworICAgIHN5bmNEaXJ0eU9iamVjdHMoY29udGV4dCwgbURpcnR5T2JqZWN0cyk7CiB9CiAKLXZv
aWQgU3RhdGU6OnN5bmNEaXJ0eU9iamVjdHMoY29uc3QgRGlydHlPYmplY3RzICZiaXRzZXQpCit2
b2lkIFN0YXRlOjpzeW5jRGlydHlPYmplY3RzKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIGNvbnN0
IERpcnR5T2JqZWN0cyAmYml0c2V0KQogewogICAgIGZvciAoYXV0byBkaXJ0eU9iamVjdCA6IGFu
Z2xlOjpJdGVyYXRlQml0U2V0KGJpdHNldCkpCiAgICAgewpAQCAtMTkxOSwxNSArMjEyMCwxNSBA
QCB2b2lkIFN0YXRlOjpzeW5jRGlydHlPYmplY3RzKGNvbnN0IERpcnR5T2JqZWN0cyAmYml0c2V0
KQogICAgICAgICB7CiAgICAgICAgICAgICBjYXNlIERJUlRZX09CSkVDVF9SRUFEX0ZSQU1FQlVG
RkVSOgogICAgICAgICAgICAgICAgIEFTU0VSVChtUmVhZEZyYW1lYnVmZmVyKTsKLSAgICAgICAg
ICAgICAgICBtUmVhZEZyYW1lYnVmZmVyLT5zeW5jU3RhdGUoKTsKKyAgICAgICAgICAgICAgICBt
UmVhZEZyYW1lYnVmZmVyLT5zeW5jU3RhdGUoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIERJUlRZX09CSkVDVF9EUkFXX0ZSQU1FQlVGRkVSOgogICAg
ICAgICAgICAgICAgIEFTU0VSVChtRHJhd0ZyYW1lYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBt
RHJhd0ZyYW1lYnVmZmVyLT5zeW5jU3RhdGUoKTsKKyAgICAgICAgICAgICAgICBtRHJhd0ZyYW1l
YnVmZmVyLT5zeW5jU3RhdGUoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIERJUlRZX09CSkVDVF9WRVJURVhfQVJSQVk6CiAgICAgICAgICAgICAgICAg
QVNTRVJUKG1WZXJ0ZXhBcnJheSk7Ci0gICAgICAgICAgICAgICAgbVZlcnRleEFycmF5LT5zeW5j
SW1wbFN0YXRlKCk7CisgICAgICAgICAgICAgICAgbVZlcnRleEFycmF5LT5zeW5jSW1wbFN0YXRl
KGNvbnRleHQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBESVJU
WV9PQkpFQ1RfUFJPR1JBTToKICAgICAgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBpbXBs
ZW1lbnQgdGhpcwpAQCAtMTk0MSw3ICsyMTQyLDcgQEAgdm9pZCBTdGF0ZTo6c3luY0RpcnR5T2Jq
ZWN0cyhjb25zdCBEaXJ0eU9iamVjdHMgJmJpdHNldCkKICAgICBtRGlydHlPYmplY3RzICY9IH5i
aXRzZXQ7CiB9CiAKLXZvaWQgU3RhdGU6OnN5bmNEaXJ0eU9iamVjdChHTGVudW0gdGFyZ2V0KQor
dm9pZCBTdGF0ZTo6c3luY0RpcnR5T2JqZWN0KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0YXJnZXQpCiB7CiAgICAgRGlydHlPYmplY3RzIGxvY2FsU2V0OwogCkBAIC0xOTY1LDcgKzIx
NjYsNyBAQCB2b2lkIFN0YXRlOjpzeW5jRGlydHlPYmplY3QoR0xlbnVtIHRhcmdldCkKICAgICAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHN5bmNEaXJ0eU9iamVjdHMobG9jYWxTZXQpOwor
ICAgIHN5bmNEaXJ0eU9iamVjdHMoY29udGV4dCwgbG9jYWxTZXQpOwogfQogCiB2b2lkIFN0YXRl
OjpzZXRPYmplY3REaXJ0eShHTGVudW0gdGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N0YXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvU3RhdGUuaAppbmRleCA1ZWZmZjE4MWJmNS4uYzdlNjk0YmEwZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdGF0ZS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9TdGF0ZS5oCkBAIC0yMSw2
ICsyMSw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvU2FtcGxlci5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL1RleHR1cmUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9UcmFuc2Zvcm1GZWVkYmFjay5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL1ZlcnNpb24uaCIKICNpbmNsdWRlICJsaWJBTkdMRS9WZXJ0ZXhB
dHRyaWJ1dGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5cGVzLmgiCiAKQEAgLTQxLDEw
ICs0MiwxMiBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgdm9pZCBp
bml0aWFsaXplKGNvbnN0IENhcHMgJmNhcHMsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4
dGVuc2lvbnMgJmV4dGVuc2lvbnMsCi0gICAgICAgICAgICAgICAgICAgIEdMdWludCBjbGllbnRW
ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBWZXJzaW9uICZjbGllbnRWZXJzaW9u
LAogICAgICAgICAgICAgICAgICAgICBib29sIGRlYnVnLAotICAgICAgICAgICAgICAgICAgICBi
b29sIGJpbmRHZW5lcmF0ZXNSZXNvdXJjZSk7Ci0gICAgdm9pZCByZXNldCgpOworICAgICAgICAg
ICAgICAgICAgICBib29sIGJpbmRHZW5lcmF0ZXNSZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAg
ICAgYm9vbCBjbGllbnRBcnJheXNFbmFibGVkLAorICAgICAgICAgICAgICAgICAgICBib29sIHJv
YnVzdFJlc291cmNlSW5pdCk7CisgICAgdm9pZCByZXNldChjb25zdCBDb250ZXh0ICpjb250ZXh0
KTsKIAogICAgIC8vIFN0YXRlIGNodW5rIGdldHRlcnMKICAgICBjb25zdCBSYXN0ZXJpemVyU3Rh
dGUgJmdldFJhc3Rlcml6ZXJTdGF0ZSgpIGNvbnN0OwpAQCAtMTUxLDYgKzE1NCw5IEBAIGNsYXNz
IFN0YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgLy8gR0xfQ0hST01JVU1fYmluZF9nZW5l
cmF0ZXNfcmVzb3VyY2UKICAgICBib29sIGlzQmluZEdlbmVyYXRlc1Jlc291cmNlRW5hYmxlZCgp
IGNvbnN0OwogCisgICAgLy8gR0xfQU5HTEVfY2xpZW50X2FycmF5cworICAgIGJvb2wgYXJlQ2xp
ZW50QXJyYXlzRW5hYmxlZCgpIGNvbnN0OworCiAgICAgLy8gVmlld3BvcnQgc3RhdGUgc2V0dGVy
L2dldHRlcgogICAgIHZvaWQgc2V0Vmlld3BvcnRQYXJhbXMoR0xpbnQgeCwgR0xpbnQgeSwgR0xz
aXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwogICAgIGNvbnN0IFJlY3RhbmdsZSAmZ2V0Vmll
d3BvcnQoKSBjb25zdDsKQEAgLTE2Miw3ICsxNjgsNyBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpO
b25Db3B5YWJsZQogICAgIFRleHR1cmUgKmdldFRhcmdldFRleHR1cmUoR0xlbnVtIHRhcmdldCkg
Y29uc3Q7CiAgICAgVGV4dHVyZSAqZ2V0U2FtcGxlclRleHR1cmUodW5zaWduZWQgaW50IHNhbXBs
ZXIsIEdMZW51bSB0eXBlKSBjb25zdDsKICAgICBHTHVpbnQgZ2V0U2FtcGxlclRleHR1cmVJZCh1
bnNpZ25lZCBpbnQgc2FtcGxlciwgR0xlbnVtIHR5cGUpIGNvbnN0OwotICAgIHZvaWQgZGV0YWNo
VGV4dHVyZShjb25zdCBUZXh0dXJlTWFwICZ6ZXJvVGV4dHVyZXMsIEdMdWludCB0ZXh0dXJlKTsK
KyAgICB2b2lkIGRldGFjaFRleHR1cmUoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgVGV4
dHVyZU1hcCAmemVyb1RleHR1cmVzLCBHTHVpbnQgdGV4dHVyZSk7CiAgICAgdm9pZCBpbml0aWFs
aXplWmVyb1RleHR1cmVzKGNvbnN0IFRleHR1cmVNYXAgJnplcm9UZXh0dXJlcyk7CiAKICAgICAv
LyBTYW1wbGVyIG9iamVjdCBiaW5kaW5nIG1hbmlwdWxhdGlvbgpAQCAtMTc1LDcgKzE4MSw3IEBA
IGNsYXNzIFN0YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdm9pZCBzZXRSZW5kZXJidWZm
ZXJCaW5kaW5nKFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyKTsKICAgICBHTHVpbnQgZ2V0UmVu
ZGVyYnVmZmVySWQoKSBjb25zdDsKICAgICBSZW5kZXJidWZmZXIgKmdldEN1cnJlbnRSZW5kZXJi
dWZmZXIoKSBjb25zdDsKLSAgICB2b2lkIGRldGFjaFJlbmRlcmJ1ZmZlcihHTHVpbnQgcmVuZGVy
YnVmZmVyKTsKKyAgICB2b2lkIGRldGFjaFJlbmRlcmJ1ZmZlcihjb25zdCBDb250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKTsKIAogICAgIC8vIEZyYW1lYnVmZmVyIGJpbmRpbmcg
bWFuaXB1bGF0aW9uCiAgICAgdm9pZCBzZXRSZWFkRnJhbWVidWZmZXJCaW5kaW5nKEZyYW1lYnVm
ZmVyICpmcmFtZWJ1ZmZlcik7CkBAIC0xOTMsNyArMTk5LDcgQEAgY2xhc3MgU3RhdGUgOiBhbmds
ZTo6Tm9uQ29weWFibGUKICAgICBib29sIHJlbW92ZVZlcnRleEFycmF5QmluZGluZyhHTHVpbnQg
dmVydGV4QXJyYXkpOwogCiAgICAgLy8gUHJvZ3JhbSBiaW5kaW5nIG1hbmlwdWxhdGlvbgotICAg
IHZvaWQgc2V0UHJvZ3JhbShQcm9ncmFtICpuZXdQcm9ncmFtKTsKKyAgICB2b2lkIHNldFByb2dy
YW0oY29uc3QgQ29udGV4dCAqY29udGV4dCwgUHJvZ3JhbSAqbmV3UHJvZ3JhbSk7CiAgICAgUHJv
Z3JhbSAqZ2V0UHJvZ3JhbSgpIGNvbnN0OwogCiAgICAgLy8gVHJhbnNmb3JtIGZlZWRiYWNrIG9i
amVjdCAobm90IGJ1ZmZlcikgYmluZGluZyBtYW5pcHVsYXRpb24KQEAgLTIxNCwxMSArMjIwLDMw
IEBAIGNsYXNzIFN0YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdm9pZCBzZXRBcnJheUJ1
ZmZlckJpbmRpbmcoQnVmZmVyICpidWZmZXIpOwogICAgIEdMdWludCBnZXRBcnJheUJ1ZmZlcklk
KCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldERyYXdJbmRpcmVjdEJ1ZmZlckJpbmRpbmcoQnVmZmVy
ICpidWZmZXIpOworICAgIEJ1ZmZlciAqZ2V0RHJhd0luZGlyZWN0QnVmZmVyKCkgY29uc3QgeyBy
ZXR1cm4gbURyYXdJbmRpcmVjdEJ1ZmZlci5nZXQoKTsgfQorCiAgICAgLy8gR0xfVU5JRk9STV9C
VUZGRVIgLSBCb3RoIGluZGV4ZWQgYW5kIGdlbmVyaWMgdGFyZ2V0cwogICAgIHZvaWQgc2V0R2Vu
ZXJpY1VuaWZvcm1CdWZmZXJCaW5kaW5nKEJ1ZmZlciAqYnVmZmVyKTsKICAgICB2b2lkIHNldElu
ZGV4ZWRVbmlmb3JtQnVmZmVyQmluZGluZyhHTHVpbnQgaW5kZXgsIEJ1ZmZlciAqYnVmZmVyLCBH
TGludHB0ciBvZmZzZXQsIEdMc2l6ZWlwdHIgc2l6ZSk7CiAgICAgY29uc3QgT2Zmc2V0QmluZGlu
Z1BvaW50ZXI8QnVmZmVyPiAmZ2V0SW5kZXhlZFVuaWZvcm1CdWZmZXIoc2l6ZV90IGluZGV4KSBj
b25zdDsKIAorICAgIC8vIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUiAtIEJvdGggaW5kZXhlZCBh
bmQgZ2VuZXJpYyB0YXJnZXRzCisgICAgdm9pZCBzZXRHZW5lcmljQXRvbWljQ291bnRlckJ1ZmZl
ckJpbmRpbmcoQnVmZmVyICpidWZmZXIpOworICAgIHZvaWQgc2V0SW5kZXhlZEF0b21pY0NvdW50
ZXJCdWZmZXJCaW5kaW5nKEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBCdWZmZXIgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKTsKKyAgICBj
b25zdCBPZmZzZXRCaW5kaW5nUG9pbnRlcjxCdWZmZXI+ICZnZXRJbmRleGVkQXRvbWljQ291bnRl
ckJ1ZmZlcihzaXplX3QgaW5kZXgpIGNvbnN0OworCisgICAgLy8gR0xfU0hBREVSX1NUT1JBR0Vf
QlVGRkVSIC0gQm90aCBpbmRleGVkIGFuZCBnZW5lcmljIHRhcmdldHMKKyAgICB2b2lkIHNldEdl
bmVyaWNTaGFkZXJTdG9yYWdlQnVmZmVyQmluZGluZyhCdWZmZXIgKmJ1ZmZlcik7CisgICAgdm9p
ZCBzZXRJbmRleGVkU2hhZGVyU3RvcmFnZUJ1ZmZlckJpbmRpbmcoR0x1aW50IGluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlciAqYnVmZmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRy
IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpcHRyIHNpemUpOworICAgIGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4g
JmdldEluZGV4ZWRTaGFkZXJTdG9yYWdlQnVmZmVyKHNpemVfdCBpbmRleCkgY29uc3Q7CisKICAg
ICAvLyBHTF9DT1BZX1tSRUFEL1dSSVRFXV9CVUZGRVIKICAgICB2b2lkIHNldENvcHlSZWFkQnVm
ZmVyQmluZGluZyhCdWZmZXIgKmJ1ZmZlcik7CiAgICAgdm9pZCBzZXRDb3B5V3JpdGVCdWZmZXJC
aW5kaW5nKEJ1ZmZlciAqYnVmZmVyKTsKQEAgLTIzNCw2ICsyNTksNyBAQCBjbGFzcyBTdGF0ZSA6
IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgLy8gVmVydGV4IGF0dHJpYiBtYW5pcHVsYXRpb24K
ICAgICB2b2lkIHNldEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2lnbmVkIGludCBhdHRyaWJO
dW0sIGJvb2wgZW5hYmxlZCk7CisgICAgdm9pZCBzZXRFbGVtZW50QXJyYXlCdWZmZXIoQnVmZmVy
ICpidWZmZXIpOwogICAgIHZvaWQgc2V0VmVydGV4QXR0cmliZihHTHVpbnQgaW5kZXgsIGNvbnN0
IEdMZmxvYXQgdmFsdWVzWzRdKTsKICAgICB2b2lkIHNldFZlcnRleEF0dHJpYnUoR0x1aW50IGlu
ZGV4LCBjb25zdCBHTHVpbnQgdmFsdWVzWzRdKTsKICAgICB2b2lkIHNldFZlcnRleEF0dHJpYmko
R0x1aW50IGluZGV4LCBjb25zdCBHTGludCB2YWx1ZXNbNF0pOwpAQCAtMjQyLDYgKzI2OCwxOCBA
QCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIHZvaWQgc2V0VmVydGV4QXR0
cmliRGl2aXNvcihHTHVpbnQgaW5kZXgsIEdMdWludCBkaXZpc29yKTsKICAgICBjb25zdCBWZXJ0
ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZnZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWUodW5z
aWduZWQgaW50IGF0dHJpYk51bSkgY29uc3Q7CiAgICAgY29uc3Qgdm9pZCAqZ2V0VmVydGV4QXR0
cmliUG9pbnRlcih1bnNpZ25lZCBpbnQgYXR0cmliTnVtKSBjb25zdDsKKyAgICB2b2lkIGJpbmRW
ZXJ0ZXhCdWZmZXIoR0x1aW50IGJpbmRpbmdJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgQnVmZmVyICpib3VuZEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRw
dHIgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSk7Cisg
ICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJGb3JtYXQoR0x1aW50IGF0dHJpYkluZGV4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBub3JtYWxpemVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHVy
ZUludGVnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJlbGF0aXZl
T2Zmc2V0KTsKKyAgICB2b2lkIHNldFZlcnRleEF0dHJpYkJpbmRpbmcoR0x1aW50IGF0dHJpYklu
ZGV4LCBHTHVpbnQgYmluZGluZ0luZGV4KTsKKyAgICB2b2lkIHNldFZlcnRleEJpbmRpbmdEaXZp
c29yKEdMdWludCBiaW5kaW5nSW5kZXgsIEdMdWludCBkaXZpc29yKTsKIAogICAgIC8vIFBpeGVs
IHBhY2sgc3RhdGUgbWFuaXB1bGF0aW9uCiAgICAgdm9pZCBzZXRQYWNrQWxpZ25tZW50KEdMaW50
IGFsaWdubWVudCk7CkBAIC0yOTAsMTYgKzMyOCwyMSBAQCBjbGFzcyBTdGF0ZSA6IGFuZ2xlOjpO
b25Db3B5YWJsZQogICAgIEdMaW50IGdldFBhdGhTdGVuY2lsUmVmKCkgY29uc3Q7CiAgICAgR0x1
aW50IGdldFBhdGhTdGVuY2lsTWFzaygpIGNvbnN0OwogCisgICAgLy8gR0xfRVhUX3NSR0Jfd3Jp
dGVfY29udHJvbAorICAgIHZvaWQgc2V0RnJhbWVidWZmZXJTUkdCKGJvb2wgc1JHQik7CisgICAg
Ym9vbCBnZXRGcmFtZWJ1ZmZlclNSR0IoKSBjb25zdDsKKwogICAgIC8vIFN0YXRlIHF1ZXJ5IGZ1
bmN0aW9ucwogICAgIHZvaWQgZ2V0Qm9vbGVhbnYoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnBh
cmFtcyk7CiAgICAgdm9pZCBnZXRGbG9hdHYoR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMp
OwotICAgIHZvaWQgZ2V0SW50ZWdlcnYoY29uc3QgQ29udGV4dFN0YXRlICZkYXRhLCBHTGVudW0g
cG5hbWUsIEdMaW50ICpwYXJhbXMpOworICAgIHZvaWQgZ2V0SW50ZWdlcnYoY29uc3QgQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKICAgICB2b2lkIGdldFBv
aW50ZXJ2KEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcykgY29uc3Q7CiAgICAgdm9pZCBnZXRJ
bnRlZ2VyaV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQgKmRhdGEpOwogICAg
IHZvaWQgZ2V0SW50ZWdlcjY0aV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBpbmRleCwgR0xpbnQ2
NCAqZGF0YSk7CiAgICAgdm9pZCBnZXRCb29sZWFuaV92KEdMZW51bSB0YXJnZXQsIEdMdWludCBp
bmRleCwgR0xib29sZWFuICpkYXRhKTsKIAogICAgIGJvb2wgaGFzTWFwcGVkQnVmZmVyKEdMZW51
bSB0YXJnZXQpIGNvbnN0OworICAgIGJvb2wgaXNSb2J1c3RSZXNvdXJjZUluaXRFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbVJvYnVzdFJlc291cmNlSW5pdDsgfQogCiAgICAgZW51bSBEaXJ0eUJp
dFR5cGUKICAgICB7CkBAIC0zNTYsNiArMzk5LDcgQEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9u
Q29weWFibGUKICAgICAgICAgRElSVFlfQklUX0RSQVdfRlJBTUVCVUZGRVJfQklORElORywKICAg
ICAgICAgRElSVFlfQklUX1JFTkRFUkJVRkZFUl9CSU5ESU5HLAogICAgICAgICBESVJUWV9CSVRf
VkVSVEVYX0FSUkFZX0JJTkRJTkcsCisgICAgICAgIERJUlRZX0JJVF9EUkFXX0lORElSRUNUX0JV
RkZFUl9CSU5ESU5HLAogICAgICAgICBESVJUWV9CSVRfUFJPR1JBTV9CSU5ESU5HLAogICAgICAg
ICBESVJUWV9CSVRfTVVMVElTQU1QTElORywKICAgICAgICAgRElSVFlfQklUX1NBTVBMRV9BTFBI
QV9UT19PTkUsCkBAIC0zNjMsNiArNDA3LDcgQEAgY2xhc3MgU3RhdGUgOiBhbmdsZTo6Tm9uQ29w
eWFibGUKICAgICAgICAgRElSVFlfQklUX1BBVEhfUkVOREVSSU5HX01BVFJJWF9NViwgICAgLy8g
Q0hST01JVU1fcGF0aF9yZW5kZXJpbmcgcGF0aCBtb2RlbCB2aWV3IG1hdHJpeAogICAgICAgICBE
SVJUWV9CSVRfUEFUSF9SRU5ERVJJTkdfTUFUUklYX1BST0osICAvLyBDSFJPTUlVTV9wYXRoX3Jl
bmRlcmluZyBwYXRoIHByb2plY3Rpb24gbWF0cml4CiAgICAgICAgIERJUlRZX0JJVF9QQVRIX1JF
TkRFUklOR19TVEVOQ0lMX1NUQVRFLAorICAgICAgICBESVJUWV9CSVRfRlJBTUVCVUZGRVJfU1JH
QiwgIC8vIEdMX0VYVF9zUkdCX3dyaXRlX2NvbnRyb2wKICAgICAgICAgRElSVFlfQklUX0NVUlJF
TlRfVkFMVUVfMCwKICAgICAgICAgRElSVFlfQklUX0NVUlJFTlRfVkFMVUVfTUFYID0gRElSVFlf
QklUX0NVUlJFTlRfVkFMVUVfMCArIE1BWF9WRVJURVhfQVRUUklCUywKICAgICAgICAgRElSVFlf
QklUX0lOVkFMSUQgICAgICAgICAgID0gRElSVFlfQklUX0NVUlJFTlRfVkFMVUVfTUFYLApAQCAt
Mzg5LDkgKzQzNCw5IEBAIGNsYXNzIFN0YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdHlw
ZWRlZiBzdGQ6OmJpdHNldDxESVJUWV9PQkpFQ1RfTUFYPiBEaXJ0eU9iamVjdHM7CiAgICAgdm9p
ZCBjbGVhckRpcnR5T2JqZWN0cygpIHsgbURpcnR5T2JqZWN0cy5yZXNldCgpOyB9CiAgICAgdm9p
ZCBzZXRBbGxEaXJ0eU9iamVjdHMoKSB7IG1EaXJ0eU9iamVjdHMuc2V0KCk7IH0KLSAgICB2b2lk
IHN5bmNEaXJ0eU9iamVjdHMoKTsKLSAgICB2b2lkIHN5bmNEaXJ0eU9iamVjdHMoY29uc3QgRGly
dHlPYmplY3RzICZiaXRzZXQpOwotICAgIHZvaWQgc3luY0RpcnR5T2JqZWN0KEdMZW51bSB0YXJn
ZXQpOworICAgIHZvaWQgc3luY0RpcnR5T2JqZWN0cyhjb25zdCBDb250ZXh0ICpjb250ZXh0KTsK
KyAgICB2b2lkIHN5bmNEaXJ0eU9iamVjdHMoY29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3Qg
RGlydHlPYmplY3RzICZiaXRzZXQpOworICAgIHZvaWQgc3luY0RpcnR5T2JqZWN0KGNvbnN0IENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpOwogICAgIHZvaWQgc2V0T2JqZWN0RGlydHko
R0xlbnVtIHRhcmdldCk7CiAKICAgcHJpdmF0ZToKQEAgLTQyMywxMiArNDY4LDE0IEBAIGNsYXNz
IFN0YXRlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgR0xlbnVtIG1GcmFnbWVudFNoYWRlckRl
cml2YXRpdmVIaW50OwogCiAgICAgYm9vbCBtQmluZEdlbmVyYXRlc1Jlc291cmNlOworICAgIGJv
b2wgbUNsaWVudEFycmF5c0VuYWJsZWQ7CiAKICAgICBSZWN0YW5nbGUgbVZpZXdwb3J0OwogICAg
IGZsb2F0IG1OZWFyWjsKICAgICBmbG9hdCBtRmFyWjsKIAogICAgIEJpbmRpbmdQb2ludGVyPEJ1
ZmZlcj4gbUFycmF5QnVmZmVyOworICAgIEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gbURyYXdJbmRp
cmVjdEJ1ZmZlcjsKICAgICBGcmFtZWJ1ZmZlciAqbVJlYWRGcmFtZWJ1ZmZlcjsKICAgICBGcmFt
ZWJ1ZmZlciAqbURyYXdGcmFtZWJ1ZmZlcjsKICAgICBCaW5kaW5nUG9pbnRlcjxSZW5kZXJidWZm
ZXI+IG1SZW5kZXJidWZmZXI7CkBAIC00NTcsNiArNTA0LDEyIEBAIGNsYXNzIFN0YXRlIDogYW5n
bGU6Ok5vbkNvcHlhYmxlCiAKICAgICBCaW5kaW5nUG9pbnRlcjxUcmFuc2Zvcm1GZWVkYmFjaz4g
bVRyYW5zZm9ybUZlZWRiYWNrOwogCisgICAgQmluZGluZ1BvaW50ZXI8QnVmZmVyPiBtR2VuZXJp
Y0F0b21pY0NvdW50ZXJCdWZmZXI7CisgICAgQnVmZmVyVmVjdG9yIG1BdG9taWNDb3VudGVyQnVm
ZmVyczsKKworICAgIEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gbUdlbmVyaWNTaGFkZXJTdG9yYWdl
QnVmZmVyOworICAgIEJ1ZmZlclZlY3RvciBtU2hhZGVyU3RvcmFnZUJ1ZmZlcnM7CisKICAgICBC
aW5kaW5nUG9pbnRlcjxCdWZmZXI+IG1Db3B5UmVhZEJ1ZmZlcjsKICAgICBCaW5kaW5nUG9pbnRl
cjxCdWZmZXI+IG1Db3B5V3JpdGVCdWZmZXI7CiAKQEAgLTQ3OSw2ICs1MzIsMTIgQEAgY2xhc3Mg
U3RhdGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBHTGludCBtUGF0aFN0ZW5jaWxSZWY7CiAg
ICAgR0x1aW50IG1QYXRoU3RlbmNpbE1hc2s7CiAKKyAgICAvLyBHTF9FWFRfc1JHQl93cml0ZV9j
b250cm9sCisgICAgYm9vbCBtRnJhbWVidWZmZXJTUkdCOworCisgICAgLy8gR0xfQU5HTEVfcm9i
dXN0X3Jlc291cmNlX2ludGlhbGl6YXRpb24KKyAgICBib29sIG1Sb2J1c3RSZXNvdXJjZUluaXQ7
CisKICAgICBEaXJ0eUJpdHMgbURpcnR5Qml0czsKICAgICBEaXJ0eU9iamVjdHMgbURpcnR5T2Jq
ZWN0czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvU3VyZmFjZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3Vy
ZmFjZS5jcHAKaW5kZXggODY4ZGQ4ZGY4NWUuLmU2YTk0OWM0MTNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3VyZmFjZS5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N1cmZhY2UuY3BwCkBAIC0xNSw2ICsxNSw3
IEBACiAjaW5jbHVkZSA8aW9zdHJlYW0+CiAKICNpbmNsdWRlICJsaWJBTkdMRS9Db25maWcuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9EaXNwbGF5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVi
dWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9UZXh0dXJlLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvZm9ybWF0dXRpbHMuaCIKQEAgLTIzLDE3ICsyNCwxOCBAQAogbmFtZXNwYWNlIGVnbAogewog
Ci1TdXJmYWNlU3RhdGU6OlN1cmZhY2VTdGF0ZSgpIDogZGVmYXVsdEZyYW1lYnVmZmVyKG51bGxw
dHIpCitTdXJmYWNlU3RhdGU6OlN1cmZhY2VTdGF0ZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmln
SW4pCisgICAgOiBkZWZhdWx0RnJhbWVidWZmZXIobnVsbHB0ciksIGNvbmZpZyhjb25maWdJbikK
IHsKIH0KIAogU3VyZmFjZTo6U3VyZmFjZShFR0xpbnQgc3VyZmFjZVR5cGUsIGNvbnN0IGVnbDo6
Q29uZmlnICpjb25maWcsIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlidXRlcykKICAgICA6IEZy
YW1lYnVmZmVyQXR0YWNobWVudE9iamVjdCgpLAorICAgICAgbVN0YXRlKGNvbmZpZyksCiAgICAg
ICBtSW1wbGVtZW50YXRpb24obnVsbHB0ciksCiAgICAgICBtQ3VycmVudENvdW50KDApLAogICAg
ICAgbURlc3Ryb3llZChmYWxzZSksCiAgICAgICBtVHlwZShzdXJmYWNlVHlwZSksCi0gICAgICBt
Q29uZmlnKGNvbmZpZyksCiAgICAgICBtUG9zdFN1YkJ1ZmZlclJlcXVlc3RlZChmYWxzZSksCiAg
ICAgICBtRml4ZWRTaXplKGZhbHNlKSwKICAgICAgIG1GaXhlZFdpZHRoKDApLApAQCAtODcsOSAr
ODksMjIgQEAgU3VyZmFjZTo6flN1cmZhY2UoKQogICAgIFNhZmVEZWxldGUobUltcGxlbWVudGF0
aW9uKTsKIH0KIAotRXJyb3IgU3VyZmFjZTo6aW5pdGlhbGl6ZSgpCit2b2lkIFN1cmZhY2U6OmRl
c3Ryb3koY29uc3QgRGlzcGxheSAqZGlzcGxheSkKIHsKLSAgICBBTkdMRV9UUlkobUltcGxlbWVu
dGF0aW9uLT5pbml0aWFsaXplKCkpOworICAgIGlmIChtU3RhdGUuZGVmYXVsdEZyYW1lYnVmZmVy
KQorICAgIHsKKyAgICAgICAgbVN0YXRlLmRlZmF1bHRGcmFtZWJ1ZmZlci0+ZGVzdHJveURlZmF1
bHQoZGlzcGxheSk7CisgICAgfQorICAgIGlmIChtSW1wbGVtZW50YXRpb24pCisgICAgeworICAg
ICAgICBtSW1wbGVtZW50YXRpb24tPmRlc3Ryb3kocng6OlNhZmVHZXRJbXBsKGRpc3BsYXkpKTsK
KyAgICB9CisgICAgZGVsZXRlIHRoaXM7Cit9CisKK0Vycm9yIFN1cmZhY2U6OmluaXRpYWxpemUo
Y29uc3QgRGlzcGxheSAmZGlzcGxheSkKK3sKKyAgICBBTkdMRV9UUlkobUltcGxlbWVudGF0aW9u
LT5pbml0aWFsaXplKGRpc3BsYXkuZ2V0SW1wbGVtZW50YXRpb24oKSkpOwogCiAgICAgLy8gSW5p
dGlhbGl6ZWQgaGVyZSBzaW5jZSBpbXBsIGlzIG51bGxwdHIgaW4gdGhlIGNvbnN0cnVjdG9yLgog
ICAgIC8vIE11c3QgaGFwcGVuIGFmdGVyIGltcGxlbWVudGF0aW9uIGluaXRpYWxpemUgZm9yIEFu
ZHJvaWQuCkBAIC0xMDIsMjkgKzExNywyOCBAQCBFcnJvciBTdXJmYWNlOjppbml0aWFsaXplKCkK
ICAgICByZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCi12b2lkIFN1cmZhY2U6OnNldElz
Q3VycmVudChib29sIGlzQ3VycmVudCkKK3ZvaWQgU3VyZmFjZTo6c2V0SXNDdXJyZW50KERpc3Bs
YXkgKmRpc3BsYXksIGJvb2wgaXNDdXJyZW50KQogewogICAgIGlmIChpc0N1cnJlbnQpCiAgICAg
ewogICAgICAgICBtQ3VycmVudENvdW50Kys7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
ZWxzZQorCisgICAgQVNTRVJUKG1DdXJyZW50Q291bnQgPiAwKTsKKyAgICBtQ3VycmVudENvdW50
LS07CisgICAgaWYgKG1DdXJyZW50Q291bnQgPT0gMCAmJiBtRGVzdHJveWVkKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1DdXJyZW50Q291bnQgPiAwKTsKLSAgICAgICAgbUN1cnJlbnRDb3VudC0t
OwotICAgICAgICBpZiAobUN1cnJlbnRDb3VudCA9PSAwICYmIG1EZXN0cm95ZWQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGRlbGV0ZSB0aGlzOwotICAgICAgICB9CisgICAgICAgIGRlc3Ryb3ko
ZGlzcGxheSk7CiAgICAgfQogfQogCi12b2lkIFN1cmZhY2U6Om9uRGVzdHJveSgpCit2b2lkIFN1
cmZhY2U6Om9uRGVzdHJveShEaXNwbGF5ICpkaXNwbGF5KQogewogICAgIG1EZXN0cm95ZWQgPSB0
cnVlOwogICAgIGlmIChtQ3VycmVudENvdW50ID09IDApCiAgICAgewotICAgICAgICBkZWxldGUg
dGhpczsKKyAgICAgICAgZGVzdHJveShkaXNwbGF5KTsKICAgICB9CiB9CiAKQEAgLTEzMyw5ICsx
NDcsMTQgQEAgRUdMaW50IFN1cmZhY2U6OmdldFR5cGUoKSBjb25zdAogICAgIHJldHVybiBtVHlw
ZTsKIH0KIAotRXJyb3IgU3VyZmFjZTo6c3dhcCgpCitFcnJvciBTdXJmYWNlOjpzd2FwKGNvbnN0
IERpc3BsYXkgJmRpc3BsYXkpCit7CisgICAgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbi0+c3dhcChk
aXNwbGF5LmdldEltcGxlbWVudGF0aW9uKCkpOworfQorCitFcnJvciBTdXJmYWNlOjpzd2FwV2l0
aERhbWFnZShFR0xpbnQgKnJlY3RzLCBFR0xpbnQgbl9yZWN0cykKIHsKLSAgICByZXR1cm4gbUlt
cGxlbWVudGF0aW9uLT5zd2FwKCk7CisgICAgcmV0dXJuIG1JbXBsZW1lbnRhdGlvbi0+c3dhcFdp
dGhEYW1hZ2UocmVjdHMsIG5fcmVjdHMpOwogfQogCiBFcnJvciBTdXJmYWNlOjpwb3N0U3ViQnVm
ZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KQpAQCAt
MTYwLDcgKzE3OSw3IEBAIHZvaWQgU3VyZmFjZTo6c2V0U3dhcEludGVydmFsKEVHTGludCBpbnRl
cnZhbCkKIAogY29uc3QgQ29uZmlnICpTdXJmYWNlOjpnZXRDb25maWcoKSBjb25zdAogewotICAg
IHJldHVybiBtQ29uZmlnOworICAgIHJldHVybiBtU3RhdGUuY29uZmlnOwogfQogCiBFR0xpbnQg
U3VyZmFjZTo6Z2V0UGl4ZWxBc3BlY3RSYXRpbygpIGNvbnN0CkBAIC0yMDYsMTkgKzIyNSwyMyBA
QCBFR0xpbnQgU3VyZmFjZTo6Z2V0SGVpZ2h0KCkgY29uc3QKIEVycm9yIFN1cmZhY2U6OmJpbmRU
ZXhJbWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50IGJ1ZmZlcikKIHsKICAgICBBU1NF
UlQoIW1UZXh0dXJlLmdldCgpKTsKKyAgICBBTkdMRV9UUlkobUltcGxlbWVudGF0aW9uLT5iaW5k
VGV4SW1hZ2UodGV4dHVyZSwgYnVmZmVyKSk7CiAKICAgICB0ZXh0dXJlLT5iaW5kVGV4SW1hZ2VG
cm9tU3VyZmFjZSh0aGlzKTsKICAgICBtVGV4dHVyZS5zZXQodGV4dHVyZSk7Ci0gICAgcmV0dXJu
IG1JbXBsZW1lbnRhdGlvbi0+YmluZFRleEltYWdlKHRleHR1cmUsIGJ1ZmZlcik7CisKKyAgICBy
ZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCiBFcnJvciBTdXJmYWNlOjpyZWxlYXNlVGV4
SW1hZ2UoRUdMaW50IGJ1ZmZlcikKIHsKKyAgICBBTkdMRV9UUlkobUltcGxlbWVudGF0aW9uLT5y
ZWxlYXNlVGV4SW1hZ2UoYnVmZmVyKSk7CisKICAgICBBU1NFUlQobVRleHR1cmUuZ2V0KCkpOwog
ICAgIG1UZXh0dXJlLT5yZWxlYXNlVGV4SW1hZ2VGcm9tU3VyZmFjZSgpOwogICAgIG1UZXh0dXJl
LnNldChudWxscHRyKTsKIAotICAgIHJldHVybiBtSW1wbGVtZW50YXRpb24tPnJlbGVhc2VUZXhJ
bWFnZShidWZmZXIpOworICAgIHJldHVybiBFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKIEVycm9y
IFN1cmZhY2U6OmdldFN5bmNWYWx1ZXMoRUdMdWludDY0S0hSICp1c3QsIEVHTHVpbnQ2NEtIUiAq
bXNjLCBFR0x1aW50NjRLSFIgKnNiYykKQEAgLTI1NiwyOCArMjc5LDcgQEAgR0x1aW50IFN1cmZh
Y2U6OmdldElkKCkgY29uc3QKIAogZ2w6OkZyYW1lYnVmZmVyICpTdXJmYWNlOjpjcmVhdGVEZWZh
dWx0RnJhbWVidWZmZXIoKQogewotICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBu
ZXcgZ2w6OkZyYW1lYnVmZmVyKG1JbXBsZW1lbnRhdGlvbik7Ci0KLSAgICBHTGVudW0gZHJhd0J1
ZmZlclN0YXRlID0gR0xfQkFDSzsKLSAgICBmcmFtZWJ1ZmZlci0+c2V0RHJhd0J1ZmZlcnMoMSwg
JmRyYXdCdWZmZXJTdGF0ZSk7Ci0gICAgZnJhbWVidWZmZXItPnNldFJlYWRCdWZmZXIoR0xfQkFD
Syk7Ci0KLSAgICBmcmFtZWJ1ZmZlci0+c2V0QXR0YWNobWVudChHTF9GUkFNRUJVRkZFUl9ERUZB
VUxULCBHTF9CQUNLLCBnbDo6SW1hZ2VJbmRleDo6TWFrZUludmFsaWQoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzKTsKLQotICAgIGlmIChtQ29uZmlnLT5kZXB0aFNpemUg
PiAwKQotICAgIHsKLSAgICAgICAgZnJhbWVidWZmZXItPnNldEF0dGFjaG1lbnQoR0xfRlJBTUVC
VUZGRVJfREVGQVVMVCwgR0xfREVQVEgsIGdsOjpJbWFnZUluZGV4OjpNYWtlSW52YWxpZCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzKTsKLSAgICB9Ci0KLSAgICBp
ZiAobUNvbmZpZy0+c3RlbmNpbFNpemUgPiAwKQotICAgIHsKLSAgICAgICAgZnJhbWVidWZmZXIt
PnNldEF0dGFjaG1lbnQoR0xfRlJBTUVCVUZGRVJfREVGQVVMVCwgR0xfU1RFTkNJTCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkltYWdlSW5kZXg6Ok1ha2VJbnZhbGlk
KCksIHRoaXMpOwotICAgIH0KLQotICAgIHJldHVybiBmcmFtZWJ1ZmZlcjsKKyAgICByZXR1cm4g
bmV3IGdsOjpGcmFtZWJ1ZmZlcih0aGlzKTsKIH0KIAogV2luZG93U3VyZmFjZTo6V2luZG93U3Vy
ZmFjZShyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LApAQCAtMjg2LDcgKzI4OCw3IEBA
IFdpbmRvd1N1cmZhY2U6OldpbmRvd1N1cmZhY2Uocng6OkVHTEltcGxGYWN0b3J5ICppbXBsRmFj
dG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZh
dHRyaWJzKQogICAgIDogU3VyZmFjZShFR0xfV0lORE9XX0JJVCwgY29uZmlnLCBhdHRyaWJzKQog
ewotICAgIG1JbXBsZW1lbnRhdGlvbiA9IGltcGxGYWN0b3J5LT5jcmVhdGVXaW5kb3dTdXJmYWNl
KG1TdGF0ZSwgY29uZmlnLCB3aW5kb3csIGF0dHJpYnMpOworICAgIG1JbXBsZW1lbnRhdGlvbiA9
IGltcGxGYWN0b3J5LT5jcmVhdGVXaW5kb3dTdXJmYWNlKG1TdGF0ZSwgd2luZG93LCBhdHRyaWJz
KTsKIH0KIAogV2luZG93U3VyZmFjZTo6fldpbmRvd1N1cmZhY2UoKQpAQCAtMjk4LDE3ICszMDAs
MTggQEAgUGJ1ZmZlclN1cmZhY2U6OlBidWZmZXJTdXJmYWNlKHJ4OjpFR0xJbXBsRmFjdG9yeSAq
aW1wbEZhY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmli
dXRlTWFwICZhdHRyaWJzKQogICAgIDogU3VyZmFjZShFR0xfUEJVRkZFUl9CSVQsIGNvbmZpZywg
YXR0cmlicykKIHsKLSAgICBtSW1wbGVtZW50YXRpb24gPSBpbXBsRmFjdG9yeS0+Y3JlYXRlUGJ1
ZmZlclN1cmZhY2UobVN0YXRlLCBjb25maWcsIGF0dHJpYnMpOworICAgIG1JbXBsZW1lbnRhdGlv
biA9IGltcGxGYWN0b3J5LT5jcmVhdGVQYnVmZmVyU3VyZmFjZShtU3RhdGUsIGF0dHJpYnMpOwog
fQogCiBQYnVmZmVyU3VyZmFjZTo6UGJ1ZmZlclN1cmZhY2Uocng6OkVHTEltcGxGYWN0b3J5ICpp
bXBsRmFjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb25maWcg
KmNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIg
c2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGll
bnRCdWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0cmlidXRl
TWFwICZhdHRyaWJzKQogICAgIDogU3VyZmFjZShFR0xfUEJVRkZFUl9CSVQsIGNvbmZpZywgYXR0
cmlicykKIHsKICAgICBtSW1wbGVtZW50YXRpb24gPQotICAgICAgICBpbXBsRmFjdG9yeS0+Y3Jl
YXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIobVN0YXRlLCBjb25maWcsIHNoYXJlSGFuZGxlLCBh
dHRyaWJzKTsKKyAgICAgICAgaW1wbEZhY3RvcnktPmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVm
ZmVyKG1TdGF0ZSwgYnVmdHlwZSwgY2xpZW50QnVmZmVyLCBhdHRyaWJzKTsKIH0KIAogUGJ1ZmZl
clN1cmZhY2U6On5QYnVmZmVyU3VyZmFjZSgpCkBAIC0zMjEsNyArMzI0LDcgQEAgUGl4bWFwU3Vy
ZmFjZTo6UGl4bWFwU3VyZmFjZShyeDo6RUdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiAg
ICAgOiBTdXJmYWNlKEVHTF9QSVhNQVBfQklULCBjb25maWcsIGF0dHJpYnMpCiB7Ci0gICAgbUlt
cGxlbWVudGF0aW9uID0gaW1wbEZhY3RvcnktPmNyZWF0ZVBpeG1hcFN1cmZhY2UobVN0YXRlLCBj
b25maWcsIG5hdGl2ZVBpeG1hcCwgYXR0cmlicyk7CisgICAgbUltcGxlbWVudGF0aW9uID0gaW1w
bEZhY3RvcnktPmNyZWF0ZVBpeG1hcFN1cmZhY2UobVN0YXRlLCBuYXRpdmVQaXhtYXAsIGF0dHJp
YnMpOwogfQogCiBQaXhtYXBTdXJmYWNlOjp+UGl4bWFwU3VyZmFjZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvU3VyZmFjZS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1N1cmZhY2UuaAppbmRleCAxYmMzMWQxYTliYS4u
ODhiNGQwZjFmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9TdXJmYWNlLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L1N1cmZhY2UuaApAQCAtMzksOSArMzksMTAgQEAgc3RydWN0IENvbmZpZzsKIAogc3RydWN0IFN1
cmZhY2VTdGF0ZSBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewotICAgIFN1cmZhY2VTdGF0
ZSgpOworICAgIFN1cmZhY2VTdGF0ZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnSW4pOwogCiAg
ICAgZ2w6OkZyYW1lYnVmZmVyICpkZWZhdWx0RnJhbWVidWZmZXI7CisgICAgY29uc3QgZWdsOjpD
b25maWcgKmNvbmZpZzsKIH07CiAKIGNsYXNzIFN1cmZhY2UgOiBwdWJsaWMgZ2w6OkZyYW1lYnVm
ZmVyQXR0YWNobWVudE9iamVjdApAQCAtNTMsOCArNTQsOSBAQCBjbGFzcyBTdXJmYWNlIDogcHVi
bGljIGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3QKIAogICAgIEVHTGludCBnZXRUeXBl
KCkgY29uc3Q7CiAKLSAgICBFcnJvciBpbml0aWFsaXplKCk7Ci0gICAgRXJyb3Igc3dhcCgpOwor
ICAgIEVycm9yIGluaXRpYWxpemUoY29uc3QgRGlzcGxheSAmZGlzcGxheSk7CisgICAgRXJyb3Ig
c3dhcChjb25zdCBEaXNwbGF5ICZkaXNwbGF5KTsKKyAgICBFcnJvciBzd2FwV2l0aERhbWFnZShF
R0xpbnQgKnJlY3RzLCBFR0xpbnQgbl9yZWN0cyk7CiAgICAgRXJyb3IgcG9zdFN1YkJ1ZmZlcihF
R0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCk7CiAgICAgRXJy
b3IgcXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTGludCBhdHRyaWJ1dGUsIHZvaWQgKip2YWx1
ZSk7CiAgICAgRXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQg
YnVmZmVyKTsKQEAgLTY1LDggKzY3LDggQEAgY2xhc3MgU3VyZmFjZSA6IHB1YmxpYyBnbDo6RnJh
bWVidWZmZXJBdHRhY2htZW50T2JqZWN0CiAgICAgRUdMaW50IGlzUG9zdFN1YkJ1ZmZlclN1cHBv
cnRlZCgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFs
KTsKLSAgICB2b2lkIHNldElzQ3VycmVudChib29sIGlzQ3VycmVudCk7Ci0gICAgdm9pZCBvbkRl
c3Ryb3koKTsKKyAgICB2b2lkIHNldElzQ3VycmVudChEaXNwbGF5ICpkaXNwbGF5LCBib29sIGlz
Q3VycmVudCk7CisgICAgdm9pZCBvbkRlc3Ryb3koRGlzcGxheSAqZGlzcGxheSk7CiAKICAgICBj
b25zdCBDb25maWcgKmdldENvbmZpZygpIGNvbnN0OwogCkBAIC0xMTksOCArMTIxLDYgQEAgY2xh
c3MgU3VyZmFjZSA6IHB1YmxpYyBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0CiAKICAg
ICBFR0xpbnQgbVR5cGU7CiAKLSAgICBjb25zdCBlZ2w6OkNvbmZpZyAqbUNvbmZpZzsKLQogICAg
IGJvb2wgbVBvc3RTdWJCdWZmZXJSZXF1ZXN0ZWQ7CiAgICAgYm9vbCBtRmxleGlibGVTdXJmYWNl
Q29tcGF0aWJpbGl0eVJlcXVlc3RlZDsKIApAQCAtMTQzLDYgKzE0Myw5IEBAIGNsYXNzIFN1cmZh
Y2UgOiBwdWJsaWMgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdAogCiAgICAgZ2w6OkZv
cm1hdCBtQmFja0Zvcm1hdDsKICAgICBnbDo6Rm9ybWF0IG1EU0Zvcm1hdDsKKworICBwcml2YXRl
OgorICAgIHZvaWQgZGVzdHJveShjb25zdCBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpOwogfTsKIAog
Y2xhc3MgV2luZG93U3VyZmFjZSBmaW5hbCA6IHB1YmxpYyBTdXJmYWNlCkBAIC0xNjMsNyArMTY2
LDggQEAgY2xhc3MgUGJ1ZmZlclN1cmZhY2UgZmluYWwgOiBwdWJsaWMgU3VyZmFjZQogICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlicyk7CiAgICAgUGJ1ZmZlclN1
cmZhY2Uocng6OkVHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwKICAgICAgICAgICAgICAgICAg
ICBjb25zdCBDb25maWcgKmNvbmZpZywKLSAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZm
ZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAg
ICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCiAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQXR0cmlidXRlTWFwICZhdHRyaWJzKTsKICAgICB+UGJ1ZmZlclN1cmZh
Y2UoKSBvdmVycmlkZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvU3VyZmFjZV91bml0dGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvU3VyZmFjZV91bml0dGVzdC5jcHAKaW5kZXggMmI3ZmIwYTJiMmIuLjdl
YWZmNTk5MTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvU3VyZmFjZV91bml0dGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1N1cmZhY2VfdW5pdHRlc3QuY3BwCkBAIC0yNSwxMiArMjUsMTQgQEAgbmFtZXNw
YWNlCiBjbGFzcyBNb2NrU3VyZmFjZUltcGwgOiBwdWJsaWMgcng6OlN1cmZhY2VJbXBsCiB7CiAg
IHB1YmxpYzoKLSAgICBNb2NrU3VyZmFjZUltcGwoKSA6IFN1cmZhY2VJbXBsKG1vY2tTdGF0ZSkg
e30KLSAgICB2aXJ0dWFsIH5Nb2NrU3VyZmFjZUltcGwoKSB7IGRlc3Ryb3koKTsgfQorICAgIE1v
Y2tTdXJmYWNlSW1wbCgpIDogU3VyZmFjZUltcGwobW9ja1N0YXRlKSwgbW9ja1N0YXRlKG51bGxw
dHIpIHt9CisgICAgdmlydHVhbCB+TW9ja1N1cmZhY2VJbXBsKCkgeyBkZXN0cnVjdG9yKCk7IH0K
IAotICAgIE1PQ0tfTUVUSE9EMChpbml0aWFsaXplLCBlZ2w6OkVycm9yKCkpOworICAgIE1PQ0tf
TUVUSE9EMShkZXN0cm95LCB2b2lkKGNvbnN0IERpc3BsYXlJbXBsICopKTsKKyAgICBNT0NLX01F
VEhPRDEoaW5pdGlhbGl6ZSwgZWdsOjpFcnJvcihjb25zdCBEaXNwbGF5SW1wbCAqKSk7CiAgICAg
TU9DS19NRVRIT0QxKGNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlciwgcng6OkZyYW1lYnVmZmVySW1w
bCAqKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZkYXRhKSk7Ci0gICAgTU9DS19NRVRIT0Qw
KHN3YXAsIGVnbDo6RXJyb3IoKSk7CisgICAgTU9DS19NRVRIT0QxKHN3YXAsIGVnbDo6RXJyb3Io
Y29uc3QgRGlzcGxheUltcGwgKikpOworICAgIE1PQ0tfTUVUSE9EMihzd2FwV2l0aERhbWFnZSwg
ZWdsOjpFcnJvcihFR0xpbnQgKiwgRUdMaW50KSk7CiAgICAgTU9DS19NRVRIT0Q0KHBvc3RTdWJC
dWZmZXIsIGVnbDo6RXJyb3IoRUdMaW50LCBFR0xpbnQsIEVHTGludCwgRUdMaW50KSk7CiAgICAg
TU9DS19NRVRIT0QyKHF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRSwgZWdsOjpFcnJvcihFR0xpbnQs
IHZvaWQqKikpOwogICAgIE1PQ0tfTUVUSE9EMihiaW5kVGV4SW1hZ2UsIGVnbDo6RXJyb3IoZ2w6
OlRleHR1cmUqLCBFR0xpbnQpKTsKQEAgLTQzLDcgKzQ1LDcgQEAgY2xhc3MgTW9ja1N1cmZhY2VJ
bXBsIDogcHVibGljIHJ4OjpTdXJmYWNlSW1wbAogICAgIE1PQ0tfQ09OU1RfTUVUSE9EMChnZXRT
d2FwQmVoYXZpb3IsIEVHTGludCh2b2lkKSk7CiAgICAgTU9DS19NRVRIT0QyKGdldEF0dGFjaG1l
bnRSZW5kZXJUYXJnZXQsIGdsOjpFcnJvcihjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50
OjpUYXJnZXQgJiwgcng6OkZyYW1lYnVmZmVyQXR0YWNobWVudFJlbmRlclRhcmdldCAqKikpOwog
Ci0gICAgTU9DS19NRVRIT0QwKGRlc3Ryb3ksIHZvaWQoKSk7CisgICAgTU9DS19NRVRIT0QwKGRl
c3RydWN0b3IsIHZvaWQoKSk7CiAKICAgICBlZ2w6OlN1cmZhY2VTdGF0ZSBtb2NrU3RhdGU7CiB9
OwpAQCAtNTMsMTUgKzU1LDE2IEBAIFRFU1QoU3VyZmFjZVRlc3QsIERlc3RydWN0aW9uRGVsZXRl
c0ltcGwpCiAgICAgTmljZU1vY2s8TW9ja0VHTEZhY3Rvcnk+IGZhY3Rvcnk7CiAKICAgICBNb2Nr
U3VyZmFjZUltcGwgKmltcGwgPSBuZXcgTW9ja1N1cmZhY2VJbXBsOwotICAgIEVYUEVDVF9DQUxM
KGZhY3RvcnksIGNyZWF0ZVdpbmRvd1N1cmZhY2UoXywgXywgXywgXykpLldpbGxPbmNlKFJldHVy
bihpbXBsKSk7CisgICAgRVhQRUNUX0NBTEwoZmFjdG9yeSwgY3JlYXRlV2luZG93U3VyZmFjZShf
LCBfLCBfKSkuV2lsbE9uY2UoUmV0dXJuKGltcGwpKTsKIAogICAgIGVnbDo6Q29uZmlnIGNvbmZp
ZzsKICAgICBlZ2w6OlN1cmZhY2UgKnN1cmZhY2UgPSBuZXcgZWdsOjpXaW5kb3dTdXJmYWNlKAog
ICAgICAgICAmZmFjdG9yeSwgJmNvbmZpZywgc3RhdGljX2Nhc3Q8RUdMTmF0aXZlV2luZG93VHlw
ZT4oMCksIGVnbDo6QXR0cmlidXRlTWFwKCkpOwogCi0gICAgRVhQRUNUX0NBTEwoKmltcGwsIGRl
c3Ryb3koKSkuVGltZXMoMSkuUmV0aXJlc09uU2F0dXJhdGlvbigpOworICAgIEVYUEVDVF9DQUxM
KCppbXBsLCBkZXN0cm95KF8pKS5UaW1lcygxKS5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CisgICAg
RVhQRUNUX0NBTEwoKmltcGwsIGRlc3RydWN0b3IoKSkuVGltZXMoMSkuUmV0aXJlc09uU2F0dXJh
dGlvbigpOwogCi0gICAgc3VyZmFjZS0+b25EZXN0cm95KCk7CisgICAgc3VyZmFjZS0+b25EZXN0
cm95KG51bGxwdHIpOwogCiAgICAgLy8gT25seSBuZWVkZWQgYmVjYXVzZSB0aGUgbW9jayBpcyBs
ZWFrZWQgaWYgYnVncyBhcmUgcHJlc2VudCwKICAgICAvLyB3aGljaCBsb2dzIGFuIGVycm9yLCBi
dXQgZG9lcyBub3QgY2F1c2UgdGhlIHRlc3QgdG8gZmFpbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UZXh0dXJlLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UZXh0dXJlLmNwcAppbmRleCAzMmE2ZTQyNDZjMS4uZjZk
YWJhMjIwYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9UZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
VGV4dHVyZS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAgbmFtZXNwYWNlIGdsCiAKIG5hbWVzcGFjZQog
ewotYm9vbCBJc1BvaW50U2FtcGxlZChjb25zdCBnbDo6U2FtcGxlclN0YXRlICZzYW1wbGVyU3Rh
dGUpCitib29sIElzUG9pbnRTYW1wbGVkKGNvbnN0IFNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRl
KQogewogICAgIHJldHVybiAoc2FtcGxlclN0YXRlLm1hZ0ZpbHRlciA9PSBHTF9ORUFSRVNUICYm
CiAgICAgICAgICAgICAoc2FtcGxlclN0YXRlLm1pbkZpbHRlciA9PSBHTF9ORUFSRVNUIHx8CkBA
IC0zOCwyMCArMzgsMjEgQEAgc2l6ZV90IEdldEltYWdlRGVzY0luZGV4KEdMZW51bSB0YXJnZXQs
IHNpemVfdCBsZXZlbCkKIH0KIH0gIC8vIG5hbWVzcGFjZQogCi1ib29sIElzTWlwbWFwRmlsdGVy
ZWQoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKQorYm9vbCBJc01pcG1hcEZp
bHRlcmVkKGNvbnN0IFNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKQogewogICAgIHN3aXRjaCAo
c2FtcGxlclN0YXRlLm1pbkZpbHRlcikKICAgICB7Ci0gICAgICBjYXNlIEdMX05FQVJFU1Q6Ci0g
ICAgICBjYXNlIEdMX0xJTkVBUjoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgY2FzZSBH
TF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUOgotICAgICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQX05F
QVJFU1Q6Ci0gICAgICBjYXNlIEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUjoKLSAgICAgIGNhc2Ug
R0xfTElORUFSX01JUE1BUF9MSU5FQVI6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZGVm
YXVsdDogVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjYXNl
IEdMX05FQVJFU1Q6CisgICAgICAgIGNhc2UgR0xfTElORUFSOgorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBjYXNlIEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1Q6CisgICAgICAg
IGNhc2UgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUOgorICAgICAgICBjYXNlIEdMX05FQVJFU1Rf
TUlQTUFQX0xJTkVBUjoKKyAgICAgICAgY2FzZSBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUjoKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9CiAKQEAgLTkx
LDYgKzkyLDcgQEAgVGV4dHVyZVN0YXRlOjpUZXh0dXJlU3RhdGUoR0xlbnVtIHRhcmdldCkKICAg
ICAgIG1TYW1wbGVyU3RhdGUoU2FtcGxlclN0YXRlOjpDcmVhdGVEZWZhdWx0Rm9yVGFyZ2V0KHRh
cmdldCkpLAogICAgICAgbUJhc2VMZXZlbCgwKSwKICAgICAgIG1NYXhMZXZlbCgxMDAwKSwKKyAg
ICAgIG1EZXB0aFN0ZW5jaWxUZXh0dXJlTW9kZShHTF9ERVBUSF9DT01QT05FTlQpLAogICAgICAg
bUltbXV0YWJsZUZvcm1hdChmYWxzZSksCiAgICAgICBtSW1tdXRhYmxlTGV2ZWxzKDApLAogICAg
ICAgbVVzYWdlKEdMX05PTkUpLApAQCAtMTE2LDcgKzExOCw3IEBAIEdMdWludCBUZXh0dXJlU3Rh
dGU6OmdldEVmZmVjdGl2ZUJhc2VMZXZlbCgpIGNvbnN0CiAgICAgLy8gZWZmZWN0aXZlIGJhc2Ug
bGV2ZWwgdG8gbWF4IGxldmVscyB0aGVzZSBhcnJheXMgbmVlZCBqdXN0IG9uZSBleHRyYSBpdGVt
IHRvIHN0b3JlIHByb3BlcnRpZXMKICAgICAvLyB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBmb3Ig
YWxsIG91dC1vZi1yYW5nZSBiYXNlIGxldmVsIHZhbHVlcywgaW5zdGVhZCBvZiBuZWVkaW5nIHNw
ZWNpYWwKICAgICAvLyBoYW5kbGluZyBmb3Igb3V0LW9mLXJhbmdlIGJhc2UgbGV2ZWxzLgotICAg
IHJldHVybiBzdGQ6Om1pbihtQmFzZUxldmVsLCBzdGF0aWNfY2FzdDxHTHVpbnQ+KGdsOjpJTVBM
RU1FTlRBVElPTl9NQVhfVEVYVFVSRV9MRVZFTFMpKTsKKyAgICByZXR1cm4gc3RkOjptaW4obUJh
c2VMZXZlbCwgc3RhdGljX2Nhc3Q8R0x1aW50PihJTVBMRU1FTlRBVElPTl9NQVhfVEVYVFVSRV9M
RVZFTFMpKTsKIH0KIAogR0x1aW50IFRleHR1cmVTdGF0ZTo6Z2V0RWZmZWN0aXZlTWF4TGV2ZWwo
KSBjb25zdApAQCAtMTM0LDcgKzEzNiw3IEBAIEdMdWludCBUZXh0dXJlU3RhdGU6OmdldEVmZmVj
dGl2ZU1heExldmVsKCkgY29uc3QKIEdMdWludCBUZXh0dXJlU3RhdGU6OmdldE1pcG1hcE1heExl
dmVsKCkgY29uc3QKIHsKICAgICBjb25zdCBJbWFnZURlc2MgJmJhc2VJbWFnZURlc2MgPSBnZXRJ
bWFnZURlc2MoZ2V0QmFzZUltYWdlVGFyZ2V0KCksIGdldEVmZmVjdGl2ZUJhc2VMZXZlbCgpKTsK
LSAgICBHTHVpbnQgZXhwZWN0ZWRNaXBMZXZlbHMgPSAwOworICAgIEdMdWludCBleHBlY3RlZE1p
cExldmVscyAgICAgICA9IDA7CiAgICAgaWYgKG1UYXJnZXQgPT0gR0xfVEVYVFVSRV8zRCkKICAg
ICB7CiAgICAgICAgIGNvbnN0IGludCBtYXhEaW0gPSBzdGQ6Om1heChzdGQ6Om1heChiYXNlSW1h
Z2VEZXNjLnNpemUud2lkdGgsIGJhc2VJbWFnZURlc2Muc2l6ZS5oZWlnaHQpLApAQCAtMTU0LDgg
KzE1Niw4IEBAIGJvb2wgVGV4dHVyZVN0YXRlOjpzZXRCYXNlTGV2ZWwoR0x1aW50IGJhc2VMZXZl
bCkKIHsKICAgICBpZiAobUJhc2VMZXZlbCAhPSBiYXNlTGV2ZWwpCiAgICAgewotICAgICAgICBt
QmFzZUxldmVsICAgICAgICAgICAgICAgICAgICA9IGJhc2VMZXZlbDsKLSAgICAgICAgbUNvbXBs
ZXRlbmVzc0NhY2hlLmNhY2hlVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgbUJhc2VMZXZlbCA9IGJh
c2VMZXZlbDsKKyAgICAgICAgaW52YWxpZGF0ZUNvbXBsZXRlbmVzc0NhY2hlKCk7CiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNjUsOCArMTY3LDgg
QEAgdm9pZCBUZXh0dXJlU3RhdGU6OnNldE1heExldmVsKEdMdWludCBtYXhMZXZlbCkKIHsKICAg
ICBpZiAobU1heExldmVsICE9IG1heExldmVsKQogICAgIHsKLSAgICAgICAgbU1heExldmVsICAg
ICAgICAgICAgICAgICAgICAgPSBtYXhMZXZlbDsKLSAgICAgICAgbUNvbXBsZXRlbmVzc0NhY2hl
LmNhY2hlVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgbU1heExldmVsID0gbWF4TGV2ZWw7CisgICAg
ICAgIGludmFsaWRhdGVDb21wbGV0ZW5lc3NDYWNoZSgpOwogICAgIH0KIH0KIApAQCAtMTk4LDIx
ICsyMDAsMzAgQEAgYm9vbCBUZXh0dXJlU3RhdGU6OmlzQ3ViZUNvbXBsZXRlKCkgY29uc3QKIGJv
b2wgVGV4dHVyZVN0YXRlOjppc1NhbXBsZXJDb21wbGV0ZShjb25zdCBTYW1wbGVyU3RhdGUgJnNh
bXBsZXJTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBD
b250ZXh0U3RhdGUgJmRhdGEpIGNvbnN0CiB7Ci0gICAgY29uc3QgSW1hZ2VEZXNjICZiYXNlSW1h
Z2VEZXNjID0gZ2V0SW1hZ2VEZXNjKGdldEJhc2VJbWFnZVRhcmdldCgpLCBnZXRFZmZlY3RpdmVC
YXNlTGV2ZWwoKSk7Ci0gICAgY29uc3QgVGV4dHVyZUNhcHMgJnRleHR1cmVDYXBzID0gZGF0YS5n
ZXRUZXh0dXJlQ2FwKGJhc2VJbWFnZURlc2MuZm9ybWF0LmFzU2l6ZWQoKSk7Ci0gICAgaWYgKCFt
Q29tcGxldGVuZXNzQ2FjaGUuY2FjaGVWYWxpZCB8fCBtQ29tcGxldGVuZXNzQ2FjaGUuc2FtcGxl
clN0YXRlICE9IHNhbXBsZXJTdGF0ZSB8fAotICAgICAgICBtQ29tcGxldGVuZXNzQ2FjaGUuZmls
dGVyYWJsZSAhPSB0ZXh0dXJlQ2Fwcy5maWx0ZXJhYmxlIHx8Ci0gICAgICAgIG1Db21wbGV0ZW5l
c3NDYWNoZS5jbGllbnRWZXJzaW9uICE9IGRhdGEuZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgfHwK
LSAgICAgICAgbUNvbXBsZXRlbmVzc0NhY2hlLnN1cHBvcnRzTlBPVCAhPSBkYXRhLmdldEV4dGVu
c2lvbnMoKS50ZXh0dXJlTlBPVCkKKyAgICBib29sIG5ld0VudHJ5ICA9IGZhbHNlOworICAgIGF1
dG8gY2FjaGVJdGVyID0gbUNvbXBsZXRlbmVzc0NhY2hlLmZpbmQoZGF0YS5nZXRDb250ZXh0SUQo
KSk7CisgICAgaWYgKGNhY2hlSXRlciA9PSBtQ29tcGxldGVuZXNzQ2FjaGUuZW5kKCkpCisgICAg
eworICAgICAgICAvLyBBZGQgYSBuZXcgY2FjaGUgZW50cnkKKyAgICAgICAgY2FjaGVJdGVyID0g
bUNvbXBsZXRlbmVzc0NhY2hlCisgICAgICAgICAgICAgICAgICAgICAgICAuaW5zZXJ0KHN0ZDo6
bWFrZV9wYWlyKGRhdGEuZ2V0Q29udGV4dElEKCksIFNhbXBsZXJDb21wbGV0ZW5lc3NDYWNoZSgp
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5maXJzdDsKKyAgICAgICAgbmV3RW50cnkgPSB0
cnVlOworICAgIH0KKworICAgIFNhbXBsZXJDb21wbGV0ZW5lc3NDYWNoZSAqY2FjaGVFbnRyeSA9
ICZjYWNoZUl0ZXItPnNlY29uZDsKKyAgICBpZiAobmV3RW50cnkgfHwgY2FjaGVFbnRyeS0+c2Ft
cGxlclN0YXRlICE9IHNhbXBsZXJTdGF0ZSkKICAgICB7Ci0gICAgICAgIG1Db21wbGV0ZW5lc3ND
YWNoZS5jYWNoZVZhbGlkICAgICAgPSB0cnVlOwotICAgICAgICBtQ29tcGxldGVuZXNzQ2FjaGUu
c2FtcGxlclN0YXRlICAgID0gc2FtcGxlclN0YXRlOwotICAgICAgICBtQ29tcGxldGVuZXNzQ2Fj
aGUuZmlsdGVyYWJsZSAgICAgID0gdGV4dHVyZUNhcHMuZmlsdGVyYWJsZTsKLSAgICAgICAgbUNv
bXBsZXRlbmVzc0NhY2hlLmNsaWVudFZlcnNpb24gICA9IGRhdGEuZ2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCk7Ci0gICAgICAgIG1Db21wbGV0ZW5lc3NDYWNoZS5zdXBwb3J0c05QT1QgICAgPSBkYXRh
LmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlTlBPVDsKLSAgICAgICAgbUNvbXBsZXRlbmVzc0NhY2hl
LnNhbXBsZXJDb21wbGV0ZSA9IGNvbXB1dGVTYW1wbGVyQ29tcGxldGVuZXNzKHNhbXBsZXJTdGF0
ZSwgZGF0YSk7CisgICAgICAgIGNhY2hlRW50cnktPnNhbXBsZXJTdGF0ZSAgICA9IHNhbXBsZXJT
dGF0ZTsKKyAgICAgICAgY2FjaGVFbnRyeS0+c2FtcGxlckNvbXBsZXRlID0gY29tcHV0ZVNhbXBs
ZXJDb21wbGV0ZW5lc3Moc2FtcGxlclN0YXRlLCBkYXRhKTsKICAgICB9Ci0gICAgcmV0dXJuIG1D
b21wbGV0ZW5lc3NDYWNoZS5zYW1wbGVyQ29tcGxldGU7CisKKyAgICByZXR1cm4gY2FjaGVFbnRy
eS0+c2FtcGxlckNvbXBsZXRlOworfQorCit2b2lkIFRleHR1cmVTdGF0ZTo6aW52YWxpZGF0ZUNv
bXBsZXRlbmVzc0NhY2hlKCkKK3sKKyAgICBtQ29tcGxldGVuZXNzQ2FjaGUuY2xlYXIoKTsKIH0K
IAogYm9vbCBUZXh0dXJlU3RhdGU6OmNvbXB1dGVTYW1wbGVyQ29tcGxldGVuZXNzKGNvbnN0IFNh
bXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlLApAQCAtMjMwLDcgKzI0MSw3IEBAIGJvb2wgVGV4dHVy
ZVN0YXRlOjpjb21wdXRlU2FtcGxlckNvbXBsZXRlbmVzcyhjb25zdCBTYW1wbGVyU3RhdGUgJnNh
bXBsZXJTdGF0ZSwKICAgICB9CiAgICAgLy8gVGhlIGNhc2VzIHdoZXJlIHRoZSB0ZXh0dXJlIGlz
IGluY29tcGxldGUgYmVjYXVzZSBiYXNlIGxldmVsIGlzIG91dCBvZiByYW5nZSBzaG91bGQgYmUK
ICAgICAvLyBoYW5kbGVkIGJ5IHRoZSBhYm92ZSBjb25kaXRpb24uCi0gICAgQVNTRVJUKG1CYXNl
TGV2ZWwgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1RFWFRVUkVfTEVWRUxTIHx8IG1JbW11dGFi
bGVGb3JtYXQpOworICAgIEFTU0VSVChtQmFzZUxldmVsIDwgSU1QTEVNRU5UQVRJT05fTUFYX1RF
WFRVUkVfTEVWRUxTIHx8IG1JbW11dGFibGVGb3JtYXQpOwogCiAgICAgaWYgKG1UYXJnZXQgPT0g
R0xfVEVYVFVSRV9DVUJFX01BUCAmJiBiYXNlSW1hZ2VEZXNjLnNpemUud2lkdGggIT0gYmFzZUlt
YWdlRGVzYy5zaXplLmhlaWdodCkKICAgICB7CkBAIC0yNDUsOCArMjU2LDggQEAgYm9vbCBUZXh0
dXJlU3RhdGU6OmNvbXB1dGVTYW1wbGVyQ29tcGxldGVuZXNzKGNvbnN0IFNhbXBsZXJTdGF0ZSAm
c2FtcGxlclN0YXRlLAogICAgIGJvb2wgbnBvdFN1cHBvcnQgPSBkYXRhLmdldEV4dGVuc2lvbnMo
KS50ZXh0dXJlTlBPVCB8fCBkYXRhLmdldENsaWVudE1ham9yVmVyc2lvbigpID49IDM7CiAgICAg
aWYgKCFucG90U3VwcG9ydCkKICAgICB7Ci0gICAgICAgIGlmICgoc2FtcGxlclN0YXRlLndyYXBT
ICE9IEdMX0NMQU1QX1RPX0VER0UgJiYgIWdsOjppc1BvdzIoYmFzZUltYWdlRGVzYy5zaXplLndp
ZHRoKSkgfHwKLSAgICAgICAgICAgIChzYW1wbGVyU3RhdGUud3JhcFQgIT0gR0xfQ0xBTVBfVE9f
RURHRSAmJiAhZ2w6OmlzUG93MihiYXNlSW1hZ2VEZXNjLnNpemUuaGVpZ2h0KSkpCisgICAgICAg
IGlmICgoc2FtcGxlclN0YXRlLndyYXBTICE9IEdMX0NMQU1QX1RPX0VER0UgJiYgIWlzUG93Mihi
YXNlSW1hZ2VEZXNjLnNpemUud2lkdGgpKSB8fAorICAgICAgICAgICAgKHNhbXBsZXJTdGF0ZS53
cmFwVCAhPSBHTF9DTEFNUF9UT19FREdFICYmICFpc1BvdzIoYmFzZUltYWdlRGVzYy5zaXplLmhl
aWdodCkpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
QEAgLTI1Niw3ICsyNjcsNyBAQCBib29sIFRleHR1cmVTdGF0ZTo6Y29tcHV0ZVNhbXBsZXJDb21w
bGV0ZW5lc3MoY29uc3QgU2FtcGxlclN0YXRlICZzYW1wbGVyU3RhdGUsCiAgICAgewogICAgICAg
ICBpZiAoIW5wb3RTdXBwb3J0KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIWdsOjppc1Bv
dzIoYmFzZUltYWdlRGVzYy5zaXplLndpZHRoKSB8fCAhZ2w6OmlzUG93MihiYXNlSW1hZ2VEZXNj
LnNpemUuaGVpZ2h0KSkKKyAgICAgICAgICAgIGlmICghaXNQb3cyKGJhc2VJbWFnZURlc2Muc2l6
ZS53aWR0aCkgfHwgIWlzUG93MihiYXNlSW1hZ2VEZXNjLnNpemUuaGVpZ2h0KSkKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CkBAIC00
MTIsMTEgKzQyMywyMCBAQCBHTGVudW0gVGV4dHVyZVN0YXRlOjpnZXRCYXNlSW1hZ2VUYXJnZXQo
KSBjb25zdAogICAgIHJldHVybiBtVGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgPyBGaXJz
dEN1YmVNYXBUZXh0dXJlVGFyZ2V0IDogbVRhcmdldDsKIH0KIAotSW1hZ2VEZXNjOjpJbWFnZURl
c2MoKSA6IEltYWdlRGVzYyhFeHRlbnRzKDAsIDAsIDApLCBGb3JtYXQ6OkludmFsaWQoKSkKK0lt
YWdlRGVzYzo6SW1hZ2VEZXNjKCkgOiBJbWFnZURlc2MoRXh0ZW50cygwLCAwLCAwKSwgRm9ybWF0
OjpJbnZhbGlkKCksIDAsIEdMX1RSVUUpCiB7CiB9CiAKLUltYWdlRGVzYzo6SW1hZ2VEZXNjKGNv
bnN0IEV4dGVudHMgJnNpemUsIGNvbnN0IEZvcm1hdCAmZm9ybWF0KSA6IHNpemUoc2l6ZSksIGZv
cm1hdChmb3JtYXQpCitJbWFnZURlc2M6OkltYWdlRGVzYyhjb25zdCBFeHRlbnRzICZzaXplLCBj
b25zdCBGb3JtYXQgJmZvcm1hdCkKKyAgICA6IHNpemUoc2l6ZSksIGZvcm1hdChmb3JtYXQpLCBz
YW1wbGVzKDApLCBmaXhlZFNhbXBsZUxvY2F0aW9ucyhHTF9UUlVFKQoreworfQorCitJbWFnZURl
c2M6OkltYWdlRGVzYyhjb25zdCBFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgRm9ybWF0ICZmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHNpemVp
IHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGJvb2xlYW4gZml4ZWRTYW1w
bGVMb2NhdGlvbnMpCisgICAgOiBzaXplKHNpemUpLCBmb3JtYXQoZm9ybWF0KSwgc2FtcGxlcyhz
YW1wbGVzKSwgZml4ZWRTYW1wbGVMb2NhdGlvbnMoZml4ZWRTYW1wbGVMb2NhdGlvbnMpCiB7CiB9
CiAKQEAgLTQzMSw4ICs0NTEsOCBAQCB2b2lkIFRleHR1cmVTdGF0ZTo6c2V0SW1hZ2VEZXNjKEdM
ZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgSW1hZ2VEZXNjICZkZQogewogICAgIHNp
emVfdCBkZXNjSW5kZXggPSBHZXRJbWFnZURlc2NJbmRleCh0YXJnZXQsIGxldmVsKTsKICAgICBB
U1NFUlQoZGVzY0luZGV4IDwgbUltYWdlRGVzY3Muc2l6ZSgpKTsKLSAgICBtSW1hZ2VEZXNjc1tk
ZXNjSW5kZXhdICAgICAgICA9IGRlc2M7Ci0gICAgbUNvbXBsZXRlbmVzc0NhY2hlLmNhY2hlVmFs
aWQgPSBmYWxzZTsKKyAgICBtSW1hZ2VEZXNjc1tkZXNjSW5kZXhdID0gZGVzYzsKKyAgICBpbnZh
bGlkYXRlQ29tcGxldGVuZXNzQ2FjaGUoKTsKIH0KIAogdm9pZCBUZXh0dXJlU3RhdGU6OnNldElt
YWdlRGVzY0NoYWluKEdMdWludCBiYXNlTGV2ZWwsCkBAIC00NjQsNiArNDg0LDE2IEBAIHZvaWQg
VGV4dHVyZVN0YXRlOjpzZXRJbWFnZURlc2NDaGFpbihHTHVpbnQgYmFzZUxldmVsLAogICAgIH0K
IH0KIAordm9pZCBUZXh0dXJlU3RhdGU6OnNldEltYWdlRGVzY0NoYWluTXVsdGlzYW1wbGUoRXh0
ZW50cyBiYXNlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEZvcm1hdCAmZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGZpeGVkU2FtcGxlTG9jYXRp
b25zKQoreworICAgIEFTU0VSVChtVGFyZ2V0ID09IEdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUp
OworICAgIEltYWdlRGVzYyBsZXZlbEluZm8oYmFzZVNpemUsIGZvcm1hdCwgc2FtcGxlcywgZml4
ZWRTYW1wbGVMb2NhdGlvbnMpOworICAgIHNldEltYWdlRGVzYyhtVGFyZ2V0LCAwLCBsZXZlbElu
Zm8pOworfQorCiB2b2lkIFRleHR1cmVTdGF0ZTo6Y2xlYXJJbWFnZURlc2MoR0xlbnVtIHRhcmdl
dCwgc2l6ZV90IGxldmVsKQogewogICAgIHNldEltYWdlRGVzYyh0YXJnZXQsIGxldmVsLCBJbWFn
ZURlc2MoKSk7CkBAIC00NzUsMTYgKzUwNSwxMSBAQCB2b2lkIFRleHR1cmVTdGF0ZTo6Y2xlYXJJ
bWFnZURlc2NzKCkKICAgICB7CiAgICAgICAgIG1JbWFnZURlc2NzW2Rlc2NJbmRleF0gPSBJbWFn
ZURlc2MoKTsKICAgICB9Ci0gICAgbUNvbXBsZXRlbmVzc0NhY2hlLmNhY2hlVmFsaWQgPSBmYWxz
ZTsKKyAgICBpbnZhbGlkYXRlQ29tcGxldGVuZXNzQ2FjaGUoKTsKIH0KIAogVGV4dHVyZVN0YXRl
OjpTYW1wbGVyQ29tcGxldGVuZXNzQ2FjaGU6OlNhbXBsZXJDb21wbGV0ZW5lc3NDYWNoZSgpCi0g
ICAgOiBjYWNoZVZhbGlkKGZhbHNlKSwKLSAgICAgIHNhbXBsZXJTdGF0ZSgpLAotICAgICAgZmls
dGVyYWJsZShmYWxzZSksCi0gICAgICBjbGllbnRWZXJzaW9uKDApLAotICAgICAgc3VwcG9ydHNO
UE9UKGZhbHNlKSwKLSAgICAgIHNhbXBsZXJDb21wbGV0ZShmYWxzZSkKKyAgICA6IHNhbXBsZXJT
dGF0ZSgpLCBzYW1wbGVyQ29tcGxldGUoZmFsc2UpCiB7CiB9CiAKQEAgLTY4Myw2ICs3MDgsMTcg
QEAgR0xlbnVtIFRleHR1cmU6OmdldENvbXBhcmVGdW5jKCkgY29uc3QKICAgICByZXR1cm4gbVN0
YXRlLm1TYW1wbGVyU3RhdGUuY29tcGFyZUZ1bmM7CiB9CiAKK3ZvaWQgVGV4dHVyZTo6c2V0U1JH
QkRlY29kZShHTGVudW0gc1JHQkRlY29kZSkKK3sKKyAgICBtU3RhdGUubVNhbXBsZXJTdGF0ZS5z
UkdCRGVjb2RlID0gc1JHQkRlY29kZTsKKyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfU1JH
Ql9ERUNPREUpOworfQorCitHTGVudW0gVGV4dHVyZTo6Z2V0U1JHQkRlY29kZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1TdGF0ZS5tU2FtcGxlclN0YXRlLnNSR0JEZWNvZGU7Cit9CisKIGNvbnN0
IFNhbXBsZXJTdGF0ZSAmVGV4dHVyZTo6Z2V0U2FtcGxlclN0YXRlKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbVN0YXRlLm1TYW1wbGVyU3RhdGU7CkBAIC03MTMsNiArNzQ5LDIzIEBAIEdMdWludCBU
ZXh0dXJlOjpnZXRNYXhMZXZlbCgpIGNvbnN0CiAgICAgcmV0dXJuIG1TdGF0ZS5tTWF4TGV2ZWw7
CiB9CiAKK3ZvaWQgVGV4dHVyZTo6c2V0RGVwdGhTdGVuY2lsVGV4dHVyZU1vZGUoR0xlbnVtIG1v
ZGUpCit7CisgICAgaWYgKG1vZGUgIT0gbVN0YXRlLm1EZXB0aFN0ZW5jaWxUZXh0dXJlTW9kZSkK
KyAgICB7CisgICAgICAgIC8vIENoYW5naW5nIHRoZSBtb2RlIGZyb20gdGhlIGRlZmF1bHQgc3Rh
dGUgKEdMX0RFUFRIX0NPTVBPTkVOVCkgaXMgbm90IGltcGxlbWVudGVkIHlldAorICAgICAgICBV
TklNUExFTUVOVEVEKCk7CisgICAgfQorCisgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBhZGQgZGly
dHkgYml0cworICAgIG1TdGF0ZS5tRGVwdGhTdGVuY2lsVGV4dHVyZU1vZGUgPSBtb2RlOworfQor
CitHTGVudW0gVGV4dHVyZTo6Z2V0RGVwdGhTdGVuY2lsVGV4dHVyZU1vZGUoKSBjb25zdAorewor
ICAgIHJldHVybiBtU3RhdGUubURlcHRoU3RlbmNpbFRleHR1cmVNb2RlOworfQorCiBib29sIFRl
eHR1cmU6OmdldEltbXV0YWJsZUZvcm1hdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1TdGF0ZS5t
SW1tdXRhYmxlRm9ybWF0OwpAQCAtNzY3LDYgKzgyMCwyMCBAQCBjb25zdCBGb3JtYXQgJlRleHR1
cmU6OmdldEZvcm1hdChHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNvbnN0CiAgICAgcmV0
dXJuIG1TdGF0ZS5nZXRJbWFnZURlc2ModGFyZ2V0LCBsZXZlbCkuZm9ybWF0OwogfQogCitHTHNp
emVpIFRleHR1cmU6OmdldFNhbXBsZXMoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsKSBjb25z
dAoreworICAgIEFTU0VSVCh0YXJnZXQgPT0gbVN0YXRlLm1UYXJnZXQgfHwKKyAgICAgICAgICAg
KG1TdGF0ZS5tVGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFwVGV4dHVy
ZVRhcmdldCh0YXJnZXQpKSk7CisgICAgcmV0dXJuIG1TdGF0ZS5nZXRJbWFnZURlc2ModGFyZ2V0
LCBsZXZlbCkuc2FtcGxlczsKK30KKworR0xib29sZWFuIFRleHR1cmU6OmdldEZpeGVkU2FtcGxl
TG9jYXRpb25zKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3QKK3sKKyAgICBBU1NF
UlQodGFyZ2V0ID09IG1TdGF0ZS5tVGFyZ2V0IHx8CisgICAgICAgICAgIChtU3RhdGUubVRhcmdl
dCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQICYmIElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0
KSkpOworICAgIHJldHVybiBtU3RhdGUuZ2V0SW1hZ2VEZXNjKHRhcmdldCwgbGV2ZWwpLmZpeGVk
U2FtcGxlTG9jYXRpb25zOworfQorCiBib29sIFRleHR1cmU6OmlzTWlwbWFwQ29tcGxldGUoKSBj
b25zdAogewogICAgIHJldHVybiBtU3RhdGUuY29tcHV0ZU1pcG1hcENvbXBsZXRlbmVzcygpOwpA
QCAtNzgyLDcgKzg0OSwxNCBAQCBlZ2w6OlN0cmVhbSAqVGV4dHVyZTo6Z2V0Qm91bmRTdHJlYW0o
KSBjb25zdAogICAgIHJldHVybiBtQm91bmRTdHJlYW07CiB9CiAKLUVycm9yIFRleHR1cmU6OnNl
dEltYWdlKGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFja1N0YXRlLAordm9pZCBUZXh0dXJl
OjppbnZhbGlkYXRlQ29tcGxldGVuZXNzQ2FjaGUoKQoreworICAgIG1TdGF0ZS5pbnZhbGlkYXRl
Q29tcGxldGVuZXNzQ2FjaGUoKTsKKyAgICBtRGlydHlDaGFubmVsLnNpZ25hbCgpOworfQorCitF
cnJvciBUZXh0dXJlOjpzZXRJbWFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrU3RhdGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFs
Rm9ybWF0LApAQCAtNzk4LDggKzg3Miw4IEBAIEVycm9yIFRleHR1cmU6OnNldEltYWdlKGNvbnN0
IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFja1N0YXRlLAogICAgIHJlbGVhc2VUZXhJbWFnZUludGVy
bmFsKCk7CiAgICAgb3JwaGFuSW1hZ2VzKCk7CiAKLSAgICBBTkdMRV9UUlkoCi0gICAgICAgIG1U
ZXh0dXJlLT5zZXRJbWFnZSh0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwgc2l6ZSwgZm9y
bWF0LCB0eXBlLCB1bnBhY2tTdGF0ZSwgcGl4ZWxzKSk7CisgICAgQU5HTEVfVFJZKG1UZXh0dXJl
LT5zZXRJbWFnZShyeDo6U2FmZUdldEltcGwoY29udGV4dCksIHRhcmdldCwgbGV2ZWwsIGludGVy
bmFsRm9ybWF0LCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0
LCB0eXBlLCB1bnBhY2tTdGF0ZSwgcGl4ZWxzKSk7CiAKICAgICBtU3RhdGUuc2V0SW1hZ2VEZXNj
KHRhcmdldCwgbGV2ZWwsIEltYWdlRGVzYyhzaXplLCBGb3JtYXQoaW50ZXJuYWxGb3JtYXQsIGZv
cm1hdCwgdHlwZSkpKTsKICAgICBtRGlydHlDaGFubmVsLnNpZ25hbCgpOwpAQCAtODA3LDcgKzg4
MSw4IEBAIEVycm9yIFRleHR1cmU6OnNldEltYWdlKGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVu
cGFja1N0YXRlLAogICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKLUVycm9yIFRleHR1cmU6OnNl
dFN1YkltYWdlKGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFja1N0YXRlLAorRXJyb3IgVGV4
dHVyZTo6c2V0U3ViSW1hZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFja1N0YXRlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJv
eCAmYXJlYSwKQEAgLTgxNywxMCArODkyLDEyIEBAIEVycm9yIFRleHR1cmU6OnNldFN1YkltYWdl
KGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFja1N0YXRlLAogewogICAgIEFTU0VSVCh0YXJn
ZXQgPT0gbVN0YXRlLm1UYXJnZXQgfHwKICAgICAgICAgICAgKG1TdGF0ZS5tVGFyZ2V0ID09IEdM
X1RFWFRVUkVfQ1VCRV9NQVAgJiYgSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpKSk7Ci0g
ICAgcmV0dXJuIG1UZXh0dXJlLT5zZXRTdWJJbWFnZSh0YXJnZXQsIGxldmVsLCBhcmVhLCBmb3Jt
YXQsIHR5cGUsIHVucGFja1N0YXRlLCBwaXhlbHMpOworICAgIHJldHVybiBtVGV4dHVyZS0+c2V0
U3ViSW1hZ2Uocng6OlNhZmVHZXRJbXBsKGNvbnRleHQpLCB0YXJnZXQsIGxldmVsLCBhcmVhLCBm
b3JtYXQsIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tTdGF0
ZSwgcGl4ZWxzKTsKIH0KIAotRXJyb3IgVGV4dHVyZTo6c2V0Q29tcHJlc3NlZEltYWdlKGNvbnN0
IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFja1N0YXRlLAorRXJyb3IgVGV4dHVyZTo6c2V0Q29tcHJl
c3NlZEltYWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgUGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrU3RhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LApAQCAtODM1LDggKzkxMiw4IEBAIEVy
cm9yIFRleHR1cmU6OnNldENvbXByZXNzZWRJbWFnZShjb25zdCBQaXhlbFVucGFja1N0YXRlICZ1
bnBhY2tTdGF0ZSwKICAgICByZWxlYXNlVGV4SW1hZ2VJbnRlcm5hbCgpOwogICAgIG9ycGhhbklt
YWdlcygpOwogCi0gICAgQU5HTEVfVFJZKG1UZXh0dXJlLT5zZXRDb21wcmVzc2VkSW1hZ2UodGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxGb3JtYXQsIHNpemUsIHVucGFja1N0YXRlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlU2l6ZSwgcGl4ZWxzKSk7Cisg
ICAgQU5HTEVfVFJZKG1UZXh0dXJlLT5zZXRDb21wcmVzc2VkSW1hZ2Uocng6OlNhZmVHZXRJbXBs
KGNvbnRleHQpLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLCB1bnBhY2tTdGF0ZSwgaW1hZ2VTaXpl
LCBwaXhlbHMpKTsKIAogICAgIG1TdGF0ZS5zZXRJbWFnZURlc2ModGFyZ2V0LCBsZXZlbCwgSW1h
Z2VEZXNjKHNpemUsIEZvcm1hdChpbnRlcm5hbEZvcm1hdCkpKTsKICAgICBtRGlydHlDaGFubmVs
LnNpZ25hbCgpOwpAQCAtODQ0LDcgKzkyMSw4IEBAIEVycm9yIFRleHR1cmU6OnNldENvbXByZXNz
ZWRJbWFnZShjb25zdCBQaXhlbFVucGFja1N0YXRlICZ1bnBhY2tTdGF0ZSwKICAgICByZXR1cm4g
Tm9FcnJvcigpOwogfQogCi1FcnJvciBUZXh0dXJlOjpzZXRDb21wcmVzc2VkU3ViSW1hZ2UoY29u
c3QgUGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrU3RhdGUsCitFcnJvciBUZXh0dXJlOjpzZXRDb21w
cmVzc2VkU3ViSW1hZ2UoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBQaXhlbFVucGFja1N0YXRlICZ1bnBhY2tTdGF0ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCb3ggJmFyZWEsCkBAIC04NTUsMTEg
KzkzMywxNSBAQCBFcnJvciBUZXh0dXJlOjpzZXRDb21wcmVzc2VkU3ViSW1hZ2UoY29uc3QgUGl4
ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrU3RhdGUsCiAgICAgQVNTRVJUKHRhcmdldCA9PSBtU3RhdGUu
bVRhcmdldCB8fAogICAgICAgICAgICAobVN0YXRlLm1UYXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJF
X01BUCAmJiBJc0N1YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkpKTsKIAotICAgIHJldHVybiBt
VGV4dHVyZS0+c2V0Q29tcHJlc3NlZFN1YkltYWdlKHRhcmdldCwgbGV2ZWwsIGFyZWEsIGZvcm1h
dCwgdW5wYWNrU3RhdGUsIGltYWdlU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwaXhlbHMpOworICAgIHJldHVybiBtVGV4dHVyZS0+c2V0Q29tcHJlc3Nl
ZFN1YkltYWdlKHJ4OjpTYWZlR2V0SW1wbChjb250ZXh0KSwgdGFyZ2V0LCBsZXZlbCwgYXJlYSwg
Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGFj
a1N0YXRlLCBpbWFnZVNpemUsIHBpeGVscyk7CiB9CiAKLUVycm9yIFRleHR1cmU6OmNvcHlJbWFn
ZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IFJlY3RhbmdsZSAmc291cmNlQXJl
YSwgR0xlbnVtIGludGVybmFsRm9ybWF0LAorRXJyb3IgVGV4dHVyZTo6Y29weUltYWdlKGNvbnN0
IENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgUmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBGcmFtZWJ1ZmZlciAqc291cmNlKQogewogICAgIEFTU0VSVCh0YXJnZXQgPT0gbVN0
YXRlLm1UYXJnZXQgfHwKQEAgLTg2OSw3ICs5NTEsOCBAQCBFcnJvciBUZXh0dXJlOjpjb3B5SW1h
Z2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBSZWN0YW5nbGUgJnNvdXJjZUFy
ZQogICAgIHJlbGVhc2VUZXhJbWFnZUludGVybmFsKCk7CiAgICAgb3JwaGFuSW1hZ2VzKCk7CiAK
LSAgICBBTkdMRV9UUlkobVRleHR1cmUtPmNvcHlJbWFnZSh0YXJnZXQsIGxldmVsLCBzb3VyY2VB
cmVhLCBpbnRlcm5hbEZvcm1hdCwgc291cmNlKSk7CisgICAgQU5HTEVfVFJZKG1UZXh0dXJlLT5j
b3B5SW1hZ2Uocng6OlNhZmVHZXRJbXBsKGNvbnRleHQpLCB0YXJnZXQsIGxldmVsLCBzb3VyY2VB
cmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsRm9ybWF0LCBz
b3VyY2UpKTsKIAogICAgIGNvbnN0IEdMZW51bSBzaXplZEZvcm1hdCA9IEdldFNpemVkSW50ZXJu
YWxGb3JtYXQoaW50ZXJuYWxGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUpOwogICAgIG1TdGF0ZS5z
ZXRJbWFnZURlc2ModGFyZ2V0LCBsZXZlbCwgSW1hZ2VEZXNjKEV4dGVudHMoc291cmNlQXJlYS53
aWR0aCwgc291cmNlQXJlYS5oZWlnaHQsIDEpLApAQCAtODc5LDU1ICs5NjIsNzYgQEAgRXJyb3Ig
VGV4dHVyZTo6Y29weUltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgUmVj
dGFuZ2xlICZzb3VyY2VBcmUKICAgICByZXR1cm4gTm9FcnJvcigpOwogfQogCi1FcnJvciBUZXh0
dXJlOjpjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBPZmZz
ZXQgJmRlc3RPZmZzZXQsIGNvbnN0IFJlY3RhbmdsZSAmc291cmNlQXJlYSwKK0Vycm9yIFRleHR1
cmU6OmNvcHlTdWJJbWFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE9mZnNldCAm
ZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWN0YW5nbGUg
JnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnJhbWVidWZm
ZXIgKnNvdXJjZSkKIHsKICAgICBBU1NFUlQodGFyZ2V0ID09IG1TdGF0ZS5tVGFyZ2V0IHx8CiAg
ICAgICAgICAgIChtU3RhdGUubVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQICYmIElzQ3Vi
ZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSkpOwogCi0gICAgcmV0dXJuIG1UZXh0dXJlLT5jb3B5
U3ViSW1hZ2UodGFyZ2V0LCBsZXZlbCwgZGVzdE9mZnNldCwgc291cmNlQXJlYSwgc291cmNlKTsK
KyAgICByZXR1cm4gbVRleHR1cmUtPmNvcHlTdWJJbWFnZShyeDo6U2FmZUdldEltcGwoY29udGV4
dCksIHRhcmdldCwgbGV2ZWwsIGRlc3RPZmZzZXQsIHNvdXJjZUFyZWEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc291cmNlKTsKIH0KIAotRXJyb3IgVGV4dHVyZTo6Y29weVRl
eHR1cmUoR0xlbnVtIGludGVybmFsRm9ybWF0LAorRXJyb3IgVGV4dHVyZTo6Y29weVRleHR1cmUo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBzb3VyY2VMZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5w
YWNrRmxpcFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1ByZW11bHRp
cGx5QWxwaGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1VubXVsdGlw
bHlBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmUgKnNvdXJj
ZSkKIHsKKyAgICBBU1NFUlQodGFyZ2V0ID09IG1TdGF0ZS5tVGFyZ2V0IHx8CisgICAgICAgICAg
IChtU3RhdGUubVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQICYmIElzQ3ViZU1hcFRleHR1
cmVUYXJnZXQodGFyZ2V0KSkpOworCiAgICAgLy8gUmVsZWFzZSBmcm9tIHByZXZpb3VzIGNhbGxz
IHRvIGVnbEJpbmRUZXhJbWFnZSwgdG8gYXZvaWQgY2FsbGluZyB0aGUgSW1wbCBhZnRlcgogICAg
IHJlbGVhc2VUZXhJbWFnZUludGVybmFsKCk7CiAgICAgb3JwaGFuSW1hZ2VzKCk7CiAKLSAgICBB
TkdMRV9UUlkobVRleHR1cmUtPmNvcHlUZXh0dXJlKGludGVybmFsRm9ybWF0LCB0eXBlLCB1bnBh
Y2tGbGlwWSwgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICBBTkdMRV9UUlkobVRleHR1cmUt
PmNvcHlUZXh0dXJlKHJ4OjpTYWZlR2V0SW1wbChjb250ZXh0KSwgdGFyZ2V0LCBsZXZlbCwgaW50
ZXJuYWxGb3JtYXQsIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
b3VyY2VMZXZlbCwgdW5wYWNrRmxpcFksIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tVbm11bHRpcGx5QWxwaGEsIHNvdXJj
ZSkpOwogCiAgICAgY29uc3QgYXV0byAmc291cmNlRGVzYyAgID0gc291cmNlLT5tU3RhdGUuZ2V0
SW1hZ2VEZXNjKHNvdXJjZS0+Z2V0VGFyZ2V0KCksIDApOwogICAgIGNvbnN0IEdMZW51bSBzaXpl
ZEZvcm1hdCA9IEdldFNpemVkSW50ZXJuYWxGb3JtYXQoaW50ZXJuYWxGb3JtYXQsIHR5cGUpOwot
ICAgIG1TdGF0ZS5zZXRJbWFnZURlc2MoZ2V0VGFyZ2V0KCksIDAsIEltYWdlRGVzYyhzb3VyY2VE
ZXNjLnNpemUsIEZvcm1hdChzaXplZEZvcm1hdCkpKTsKKyAgICBtU3RhdGUuc2V0SW1hZ2VEZXNj
KHRhcmdldCwgbGV2ZWwsIEltYWdlRGVzYyhzb3VyY2VEZXNjLnNpemUsIEZvcm1hdChzaXplZEZv
cm1hdCkpKTsKICAgICBtRGlydHlDaGFubmVsLnNpZ25hbCgpOwogCiAgICAgcmV0dXJuIE5vRXJy
b3IoKTsKIH0KIAotRXJyb3IgVGV4dHVyZTo6Y29weVN1YlRleHR1cmUoY29uc3QgT2Zmc2V0ICZk
ZXN0T2Zmc2V0LAorRXJyb3IgVGV4dHVyZTo6Y29weVN1YlRleHR1cmUoY29uc3QgQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgc291cmNlTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIHVucGFja0ZsaXBZLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBUZXh0dXJlICpzb3VyY2UpCiB7Ci0gICAgcmV0dXJuIG1UZXh0dXJl
LT5jb3B5U3ViVGV4dHVyZShkZXN0T2Zmc2V0LCBzb3VyY2VBcmVhLCB1bnBhY2tGbGlwWSwgdW5w
YWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICBBU1NFUlQodGFyZ2V0ID09IG1TdGF0ZS5tVGFyZ2V0
IHx8CisgICAgICAgICAgIChtU3RhdGUubVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQICYm
IElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSkpOworCisgICAgcmV0dXJuIG1UZXh0dXJl
LT5jb3B5U3ViVGV4dHVyZShyeDo6U2FmZUdldEltcGwoY29udGV4dCksIHRhcmdldCwgbGV2ZWws
IGRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VM
ZXZlbCwgc291cmNlQXJlYSwgdW5wYWNrRmxpcFksIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tVbm11bHRpcGx5QWxwaGEs
IHNvdXJjZSk7CiB9CiAKLUVycm9yIFRleHR1cmU6OmNvcHlDb21wcmVzc2VkVGV4dHVyZShjb25z
dCBUZXh0dXJlICpzb3VyY2UpCitFcnJvciBUZXh0dXJlOjpjb3B5Q29tcHJlc3NlZFRleHR1cmUo
Y29uc3QgQ29udGV4dCAqY29udGV4dCwgY29uc3QgVGV4dHVyZSAqc291cmNlKQogewogICAgIC8v
IFJlbGVhc2UgZnJvbSBwcmV2aW91cyBjYWxscyB0byBlZ2xCaW5kVGV4SW1hZ2UsIHRvIGF2b2lk
IGNhbGxpbmcgdGhlIEltcGwgYWZ0ZXIKICAgICByZWxlYXNlVGV4SW1hZ2VJbnRlcm5hbCgpOwog
ICAgIG9ycGhhbkltYWdlcygpOwogCi0gICAgQU5HTEVfVFJZKG1UZXh0dXJlLT5jb3B5Q29tcHJl
c3NlZFRleHR1cmUoc291cmNlKSk7CisgICAgQU5HTEVfVFJZKG1UZXh0dXJlLT5jb3B5Q29tcHJl
c3NlZFRleHR1cmUocng6OlNhZmVHZXRJbXBsKGNvbnRleHQpLCBzb3VyY2UpKTsKIAogICAgIEFT
U0VSVChzb3VyY2UtPmdldFRhcmdldCgpICE9IEdMX1RFWFRVUkVfQ1VCRV9NQVAgJiYgZ2V0VGFy
Z2V0KCkgIT0gR0xfVEVYVFVSRV9DVUJFX01BUCk7CiAgICAgY29uc3QgYXV0byAmc291cmNlRGVz
YyA9IHNvdXJjZS0+bVN0YXRlLmdldEltYWdlRGVzYyhzb3VyY2UtPmdldFRhcmdldCgpLCAwKTsK
QEAgLTkzNiw3ICsxMDQwLDExIEBAIEVycm9yIFRleHR1cmU6OmNvcHlDb21wcmVzc2VkVGV4dHVy
ZShjb25zdCBUZXh0dXJlICpzb3VyY2UpCiAgICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0KIAotRXJy
b3IgVGV4dHVyZTo6c2V0U3RvcmFnZShHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxldmVscywgR0xl
bnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBFeHRlbnRzICZzaXplKQorRXJyb3IgVGV4dHVyZTo6
c2V0U3RvcmFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxl
dmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFeHRlbnRzICZzaXplKQogewogICAgIEFT
U0VSVCh0YXJnZXQgPT0gbVN0YXRlLm1UYXJnZXQpOwogCkBAIC05NDQsNyArMTA1Miw3IEBAIEVy
cm9yIFRleHR1cmU6OnNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBsZXZlbHMsIEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICByZWxlYXNlVGV4SW1hZ2VJbnRlcm5hbCgpOwogICAg
IG9ycGhhbkltYWdlcygpOwogCi0gICAgQU5HTEVfVFJZKG1UZXh0dXJlLT5zZXRTdG9yYWdlKHRh
cmdldCwgbGV2ZWxzLCBpbnRlcm5hbEZvcm1hdCwgc2l6ZSkpOworICAgIEFOR0xFX1RSWShtVGV4
dHVyZS0+c2V0U3RvcmFnZShyeDo6U2FmZUdldEltcGwoY29udGV4dCksIHRhcmdldCwgbGV2ZWxz
LCBpbnRlcm5hbEZvcm1hdCwgc2l6ZSkpOwogCiAgICAgbVN0YXRlLm1JbW11dGFibGVGb3JtYXQg
PSB0cnVlOwogICAgIG1TdGF0ZS5tSW1tdXRhYmxlTGV2ZWxzID0gc3RhdGljX2Nhc3Q8R0x1aW50
PihsZXZlbHMpOwpAQCAtOTYzLDcgKzEwNzEsMzQgQEAgRXJyb3IgVGV4dHVyZTo6c2V0U3RvcmFn
ZShHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxldmVscywgR0xlbnVtIGludGVybmFsRm9ybWF0LAog
ICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKLUVycm9yIFRleHR1cmU6OmdlbmVyYXRlTWlwbWFw
KCkKK0Vycm9yIFRleHR1cmU6OnNldFN0b3JhZ2VNdWx0aXNhbXBsZShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsRm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEV4dGVudHMg
JnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGZp
eGVkU2FtcGxlTG9jYXRpb25zKQoreworICAgIEFTU0VSVCh0YXJnZXQgPT0gbVN0YXRlLm1UYXJn
ZXQpOworCisgICAgLy8gUmVsZWFzZSBmcm9tIHByZXZpb3VzIGNhbGxzIHRvIGVnbEJpbmRUZXhJ
bWFnZSwgdG8gYXZvaWQgY2FsbGluZyB0aGUgSW1wbCBhZnRlcgorICAgIHJlbGVhc2VUZXhJbWFn
ZUludGVybmFsKCk7CisgICAgb3JwaGFuSW1hZ2VzKCk7CisKKyAgICBBTkdMRV9UUlkobVRleHR1
cmUtPnNldFN0b3JhZ2VNdWx0aXNhbXBsZShyeDo6U2FmZUdldEltcGwoY29udGV4dCksIHRhcmdl
dCwgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnRlcm5hbEZvcm1hdCwgc2l6ZSwgZml4ZWRTYW1wbGVMb2NhdGlvbnMpKTsKKworICAgIG1T
dGF0ZS5tSW1tdXRhYmxlRm9ybWF0ID0gdHJ1ZTsKKyAgICBtU3RhdGUubUltbXV0YWJsZUxldmVs
cyA9IHN0YXRpY19jYXN0PEdMdWludD4oMSk7CisgICAgbVN0YXRlLmNsZWFySW1hZ2VEZXNjcygp
OworICAgIG1TdGF0ZS5zZXRJbWFnZURlc2NDaGFpbk11bHRpc2FtcGxlKHNpemUsIEZvcm1hdChp
bnRlcm5hbEZvcm1hdCksIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZml4ZWRTYW1wbGVMb2NhdGlvbnMpOworCisgICAgbURpcnR5Q2hhbm5lbC5zaWdu
YWwoKTsKKworICAgIHJldHVybiBOb0Vycm9yKCk7Cit9CisKK0Vycm9yIFRleHR1cmU6OmdlbmVy
YXRlTWlwbWFwKGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgLy8gUmVsZWFzZSBmcm9t
IHByZXZpb3VzIGNhbGxzIHRvIGVnbEJpbmRUZXhJbWFnZSwgdG8gYXZvaWQgY2FsbGluZyB0aGUg
SW1wbCBhZnRlcgogICAgIHJlbGVhc2VUZXhJbWFnZUludGVybmFsKCk7CkBAIC05ODEsNyArMTEx
Niw3IEBAIEVycm9yIFRleHR1cmU6OmdlbmVyYXRlTWlwbWFwKCkKICAgICBpZiAobWF4TGV2ZWwg
PiBiYXNlTGV2ZWwpCiAgICAgewogICAgICAgICBzeW5jSW1wbFN0YXRlKCk7Ci0gICAgICAgIEFO
R0xFX1RSWShtVGV4dHVyZS0+Z2VuZXJhdGVNaXBtYXAoKSk7CisgICAgICAgIEFOR0xFX1RSWSht
VGV4dHVyZS0+Z2VuZXJhdGVNaXBtYXAocng6OlNhZmVHZXRJbXBsKGNvbnRleHQpKSk7CiAKICAg
ICAgICAgY29uc3QgSW1hZ2VEZXNjICZiYXNlSW1hZ2VJbmZvID0KICAgICAgICAgICAgIG1TdGF0
ZS5nZXRJbWFnZURlc2MobVN0YXRlLmdldEJhc2VJbWFnZVRhcmdldCgpLCBiYXNlTGV2ZWwpOwpA
QCAtMTA5OCwyMCArMTIzMywxOSBAQCBFcnJvciBUZXh0dXJlOjpzZXRFR0xJbWFnZVRhcmdldChH
TGVudW0gdGFyZ2V0LCBlZ2w6OkltYWdlICppbWFnZVRhcmdldCkKICAgICByZXR1cm4gTm9FcnJv
cigpOwogfQogCi1FeHRlbnRzIFRleHR1cmU6OmdldEF0dGFjaG1lbnRTaXplKGNvbnN0IGdsOjpG
cmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0KSBjb25zdAorRXh0ZW50cyBUZXh0
dXJlOjpnZXRBdHRhY2htZW50U2l6ZShjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdl
dCAmdGFyZ2V0KSBjb25zdAogewogICAgIHJldHVybiBtU3RhdGUuZ2V0SW1hZ2VEZXNjKHRhcmdl
dC50ZXh0dXJlSW5kZXgoKS50eXBlLCB0YXJnZXQudGV4dHVyZUluZGV4KCkubWlwSW5kZXgpLnNp
emU7CiB9CiAKLWNvbnN0IEZvcm1hdCAmVGV4dHVyZTo6Z2V0QXR0YWNobWVudEZvcm1hdChjb25z
dCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCkgY29uc3QKK2NvbnN0
IEZvcm1hdCAmVGV4dHVyZTo6Z2V0QXR0YWNobWVudEZvcm1hdChjb25zdCBGcmFtZWJ1ZmZlckF0
dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0KSBjb25zdAogewogICAgIHJldHVybiBnZXRGb3JtYXQo
dGFyZ2V0LnRleHR1cmVJbmRleCgpLnR5cGUsIHRhcmdldC50ZXh0dXJlSW5kZXgoKS5taXBJbmRl
eCk7CiB9CiAKLUdMc2l6ZWkgVGV4dHVyZTo6Z2V0QXR0YWNobWVudFNhbXBsZXMoY29uc3QgZ2w6
OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICYvKnRhcmdldCovKSBjb25zdAorR0xzaXpl
aSBUZXh0dXJlOjpnZXRBdHRhY2htZW50U2FtcGxlcyhjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1l
bnQ6OlRhcmdldCAmdGFyZ2V0KSBjb25zdAogewotICAgIC8vIE11bHRpc2FtcGxlIHRleHR1cmVz
IG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGdldFNh
bXBsZXModGFyZ2V0LnRleHR1cmVJbmRleCgpLnR5cGUsIDApOwogfQogCiB2b2lkIFRleHR1cmU6
Om9uQXR0YWNoKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9UZXh0dXJlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVGV4
dHVyZS5oCmluZGV4IDQ2NjU1ZWJlOTVmLi43YWRkZGU3OGY2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RleHR1cmUuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVGV4dHVyZS5oCkBAIC00OSwxMiArNDksMTggQEAg
c3RydWN0IEltYWdlRGVzYyBmaW5hbAogewogICAgIEltYWdlRGVzYygpOwogICAgIEltYWdlRGVz
Yyhjb25zdCBFeHRlbnRzICZzaXplLCBjb25zdCBGb3JtYXQgJmZvcm1hdCk7CisgICAgSW1hZ2VE
ZXNjKGNvbnN0IEV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgIGNvbnN0IEZvcm1hdCAmZm9y
bWF0LAorICAgICAgICAgICAgICBjb25zdCBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAg
IGNvbnN0IEdMYm9vbGVhbiBmaXhlZFNhbXBsZUxvY2F0aW9ucyk7CiAKICAgICBJbWFnZURlc2Mo
Y29uc3QgSW1hZ2VEZXNjICZvdGhlcikgPSBkZWZhdWx0OwogICAgIEltYWdlRGVzYyAmb3BlcmF0
b3I9KGNvbnN0IEltYWdlRGVzYyAmb3RoZXIpID0gZGVmYXVsdDsKIAogICAgIEV4dGVudHMgc2l6
ZTsKICAgICBGb3JtYXQgZm9ybWF0OworICAgIEdMc2l6ZWkgc2FtcGxlczsKKyAgICBHTGJvb2xl
YW4gZml4ZWRTYW1wbGVMb2NhdGlvbnM7CiB9OwogCiBzdHJ1Y3QgU3dpenpsZVN0YXRlIGZpbmFs
CkBAIC05NCw2ICsxMDAsOCBAQCBzdHJ1Y3QgVGV4dHVyZVN0YXRlIGZpbmFsIDogcHVibGljIGFu
Z2xlOjpOb25Db3B5YWJsZQogICAgIGJvb2wgaXNDdWJlQ29tcGxldGUoKSBjb25zdDsKICAgICBi
b29sIGlzU2FtcGxlckNvbXBsZXRlKGNvbnN0IFNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlLCBj
b25zdCBDb250ZXh0U3RhdGUgJmRhdGEpIGNvbnN0OwogCisgICAgdm9pZCBpbnZhbGlkYXRlQ29t
cGxldGVuZXNzQ2FjaGUoKTsKKwogICAgIGNvbnN0IEltYWdlRGVzYyAmZ2V0SW1hZ2VEZXNjKEdM
ZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3Q7CiAKICAgICBHTGVudW0gZ2V0VGFyZ2V0
KCkgY29uc3QgeyByZXR1cm4gbVRhcmdldDsgfQpAQCAtMTIwLDYgKzEyOCwxMSBAQCBzdHJ1Y3Qg
VGV4dHVyZVN0YXRlIGZpbmFsIDogcHVibGljIGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IG1heExldmVsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRXh0ZW50cyBiYXNlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEZvcm1hdCAmZm9ybWF0KTsKKyAgICB2b2lkIHNldEltYWdlRGVzY0NoYWluTXVsdGlzYW1wbGUo
RXh0ZW50cyBiYXNlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgRm9ybWF0ICZmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIGZpeGVkU2FtcGxlTG9jYXRpb25zKTsKKwogICAgIHZvaWQgY2xlYXJJbWFn
ZURlc2MoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsKTsKICAgICB2b2lkIGNsZWFySW1hZ2VE
ZXNjcygpOwogCkBAIC0xMzIsNiArMTQ1LDggQEAgc3RydWN0IFRleHR1cmVTdGF0ZSBmaW5hbCA6
IHB1YmxpYyBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBHTHVpbnQgbUJhc2VMZXZlbDsKICAgICBH
THVpbnQgbU1heExldmVsOwogCisgICAgR0xlbnVtIG1EZXB0aFN0ZW5jaWxUZXh0dXJlTW9kZTsK
KwogICAgIGJvb2wgbUltbXV0YWJsZUZvcm1hdDsKICAgICBHTHVpbnQgbUltbXV0YWJsZUxldmVs
czsKIApAQCAtMTQ0LDE5ICsxNTksMTUgQEAgc3RydWN0IFRleHR1cmVTdGF0ZSBmaW5hbCA6IHB1
YmxpYyBhbmdsZTo6Tm9uQ29weWFibGUKICAgICB7CiAgICAgICAgIFNhbXBsZXJDb21wbGV0ZW5l
c3NDYWNoZSgpOwogCi0gICAgICAgIGJvb2wgY2FjaGVWYWxpZDsKLQogICAgICAgICAvLyBBbGwg
dmFsdWVzIHRoYXQgYWZmZWN0IHNhbXBsZXIgY29tcGxldGVuZXNzIHRoYXQgYXJlIG5vdCBzdG9y
ZWQgd2l0aGluCiAgICAgICAgIC8vIHRoZSB0ZXh0dXJlIGl0c2VsZgogICAgICAgICBTYW1wbGVy
U3RhdGUgc2FtcGxlclN0YXRlOwotICAgICAgICBib29sIGZpbHRlcmFibGU7Ci0gICAgICAgIEdM
aW50IGNsaWVudFZlcnNpb247Ci0gICAgICAgIGJvb2wgc3VwcG9ydHNOUE9UOwogCiAgICAgICAg
IC8vIFJlc3VsdCBvZiB0aGUgc2FtcGxlciBjb21wbGV0ZW5lc3Mgd2l0aCB0aGUgYWJvdmUgcGFy
YW1ldGVycwogICAgICAgICBib29sIHNhbXBsZXJDb21wbGV0ZTsKICAgICB9OwotICAgIG11dGFi
bGUgU2FtcGxlckNvbXBsZXRlbmVzc0NhY2hlIG1Db21wbGV0ZW5lc3NDYWNoZTsKKworICAgIG11
dGFibGUgc3RkOjp1bm9yZGVyZWRfbWFwPENvbnRleHRJRCwgU2FtcGxlckNvbXBsZXRlbmVzc0Nh
Y2hlPiBtQ29tcGxldGVuZXNzQ2FjaGU7CiB9OwogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4
dHVyZVN0YXRlICZhLCBjb25zdCBUZXh0dXJlU3RhdGUgJmIpOwpAQCAtMTcwLDYgKzE4MSw4IEBA
IGNsYXNzIFRleHR1cmUgZmluYWwgOiBwdWJsaWMgZWdsOjpJbWFnZVNpYmxpbmcsCiAgICAgVGV4
dHVyZShyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50IGlkLCBHTGVudW0gdGFyZ2V0
KTsKICAgICB+VGV4dHVyZSgpIG92ZXJyaWRlOwogCisgICAgdm9pZCBkZXN0cm95KGNvbnN0IENv
bnRleHQgKmNvbnRleHQpIG92ZXJyaWRlIHt9CisKICAgICB2b2lkIHNldExhYmVsKGNvbnN0IHN0
ZDo6c3RyaW5nICZsYWJlbCkgb3ZlcnJpZGU7CiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmdldExh
YmVsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTIxNyw2ICsyMzAsOSBAQCBjbGFzcyBUZXh0dXJl
IGZpbmFsIDogcHVibGljIGVnbDo6SW1hZ2VTaWJsaW5nLAogICAgIHZvaWQgc2V0Q29tcGFyZUZ1
bmMoR0xlbnVtIGNvbXBhcmVGdW5jKTsKICAgICBHTGVudW0gZ2V0Q29tcGFyZUZ1bmMoKSBjb25z
dDsKIAorICAgIHZvaWQgc2V0U1JHQkRlY29kZShHTGVudW0gc1JHQkRlY29kZSk7CisgICAgR0xl
bnVtIGdldFNSR0JEZWNvZGUoKSBjb25zdDsKKwogICAgIGNvbnN0IFNhbXBsZXJTdGF0ZSAmZ2V0
U2FtcGxlclN0YXRlKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldEJhc2VMZXZlbChHTHVpbnQgYmFz
ZUxldmVsKTsKQEAgLTIyNSw2ICsyNDEsOSBAQCBjbGFzcyBUZXh0dXJlIGZpbmFsIDogcHVibGlj
IGVnbDo6SW1hZ2VTaWJsaW5nLAogICAgIHZvaWQgc2V0TWF4TGV2ZWwoR0x1aW50IG1heExldmVs
KTsKICAgICBHTHVpbnQgZ2V0TWF4TGV2ZWwoKSBjb25zdDsKIAorICAgIHZvaWQgc2V0RGVwdGhT
dGVuY2lsVGV4dHVyZU1vZGUoR0xlbnVtIG1vZGUpOworICAgIEdMZW51bSBnZXREZXB0aFN0ZW5j
aWxUZXh0dXJlTW9kZSgpIGNvbnN0OworCiAgICAgYm9vbCBnZXRJbW11dGFibGVGb3JtYXQoKSBj
b25zdDsKIAogICAgIEdMdWludCBnZXRJbW11dGFibGVMZXZlbHMoKSBjb25zdDsKQEAgLTIzNywx
MSArMjU2LDE0IEBAIGNsYXNzIFRleHR1cmUgZmluYWwgOiBwdWJsaWMgZWdsOjpJbWFnZVNpYmxp
bmcsCiAgICAgc2l6ZV90IGdldFdpZHRoKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29u
c3Q7CiAgICAgc2l6ZV90IGdldEhlaWdodChHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNv
bnN0OwogICAgIHNpemVfdCBnZXREZXB0aChHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwpIGNv
bnN0OworICAgIEdMc2l6ZWkgZ2V0U2FtcGxlcyhHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwp
IGNvbnN0OworICAgIEdMYm9vbGVhbiBnZXRGaXhlZFNhbXBsZUxvY2F0aW9ucyhHTGVudW0gdGFy
Z2V0LCBzaXplX3QgbGV2ZWwpIGNvbnN0OwogICAgIGNvbnN0IEZvcm1hdCAmZ2V0Rm9ybWF0KEdM
ZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCkgY29uc3Q7CiAKICAgICBib29sIGlzTWlwbWFwQ29t
cGxldGUoKSBjb25zdDsKIAotICAgIEVycm9yIHNldEltYWdlKGNvbnN0IFBpeGVsVW5wYWNrU3Rh
dGUgJnVucGFja1N0YXRlLAorICAgIEVycm9yIHNldEltYWdlKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgY29uc3QgUGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrU3Rh
dGUsCiAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0
LApAQCAtMjQ5LDcgKzI3MSw4IEBAIGNsYXNzIFRleHR1cmUgZmluYWwgOiBwdWJsaWMgZWdsOjpJ
bWFnZVNpYmxpbmcsCiAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90
ICpwaXhlbHMpOwotICAgIEVycm9yIHNldFN1YkltYWdlKGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUg
JnVucGFja1N0YXRlLAorICAgIEVycm9yIHNldFN1YkltYWdlKGNvbnN0IENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNr
U3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQm94
ICZhcmVhLApAQCAtMjU3LDE0ICsyODAsMTYgQEAgY2xhc3MgVGV4dHVyZSBmaW5hbCA6IHB1Ymxp
YyBlZ2w6OkltYWdlU2libGluZywKICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpOwogCi0gICAgRXJy
b3Igc2V0Q29tcHJlc3NlZEltYWdlKGNvbnN0IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFja1N0YXRl
LAorICAgIEVycm9yIHNldENvbXByZXNzZWRJbWFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQaXhlbFVucGFja1N0YXRlICZ1bnBh
Y2tTdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEV4dGVudHMgJnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbWFnZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHVpbnQ4X3QgKnBpeGVscyk7Ci0gICAgRXJyb3Igc2V0Q29tcHJlc3NlZFN1YkltYWdlKGNvbnN0
IFBpeGVsVW5wYWNrU3RhdGUgJnVucGFja1N0YXRlLAorICAgIEVycm9yIHNldENvbXByZXNzZWRT
dWJJbWFnZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBQaXhlbFVucGFja1N0YXRlICZ1bnBhY2tTdGF0ZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBCb3ggJmFyZWEsCkBAIC0yNzIsNDAgKzI5Nyw2MyBAQCBjbGFzcyBUZXh0dXJlIGZp
bmFsIDogcHVibGljIGVnbDo6SW1hZ2VTaWJsaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICpwaXhlbHMpOwogCi0gICAgRXJyb3IgY29weUltYWdlKEdMZW51bSB0
YXJnZXQsCisgICAgRXJyb3IgY29weUltYWdlKGNvbnN0IENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVjdGFuZ2xlICZzb3VyY2VBcmVh
LAogICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyICpzb3VyY2UpOwotICAgIEVycm9yIGNvcHlTdWJJ
bWFnZShHTGVudW0gdGFyZ2V0LAorICAgIEVycm9yIGNvcHlTdWJJbWFnZShjb25zdCBDb250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IE9mZnNldCAmZGVzdE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVj
dGFuZ2xlICZzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1
ZmZlciAqc291cmNlKTsKIAotICAgIEVycm9yIGNvcHlUZXh0dXJlKEdMZW51bSBpbnRlcm5hbEZv
cm1hdCwKKyAgICBFcnJvciBjb3B5VGV4dHVyZShjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1h
dCwKICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3Qgc291cmNlTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBh
Y2tGbGlwWSwKICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1ByZW11bHRpcGx5QWxw
aGEsCiAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEsCiAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZSAqc291cmNlKTsKLSAgICBFcnJvciBj
b3B5U3ViVGV4dHVyZShjb25zdCBPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgRXJyb3IgY29weVN1
YlRleHR1cmUoY29uc3QgQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNvdXJjZUxldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFJlY3RhbmdsZSAmc291cmNlQXJlYSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHVucGFja0ZsaXBZLAogICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
dW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVu
cGFja1VubXVsdGlwbHlBbHBoYSwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZXh0
dXJlICpzb3VyY2UpOwotICAgIEVycm9yIGNvcHlDb21wcmVzc2VkVGV4dHVyZShjb25zdCBUZXh0
dXJlICpzb3VyY2UpOworICAgIEVycm9yIGNvcHlDb21wcmVzc2VkVGV4dHVyZShjb25zdCBDb250
ZXh0ICpjb250ZXh0LCBjb25zdCBUZXh0dXJlICpzb3VyY2UpOwogCi0gICAgRXJyb3Igc2V0U3Rv
cmFnZShHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxldmVscywgR0xlbnVtIGludGVybmFsRm9ybWF0
LCBjb25zdCBFeHRlbnRzICZzaXplKTsKKyAgICBFcnJvciBzZXRTdG9yYWdlKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBsZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBFeHRlbnRzICZz
aXplKTsKKworICAgIEVycm9yIHNldFN0b3JhZ2VNdWx0aXNhbXBsZShjb25zdCBDb250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGludGVybmFsZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFeHRlbnRzICZzaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlvbnMpOwogCiAg
ICAgRXJyb3Igc2V0RUdMSW1hZ2VUYXJnZXQoR0xlbnVtIHRhcmdldCwgZWdsOjpJbWFnZSAqaW1h
Z2VUYXJnZXQpOwogCi0gICAgRXJyb3IgZ2VuZXJhdGVNaXBtYXAoKTsKKyAgICBFcnJvciBnZW5l
cmF0ZU1pcG1hcChjb25zdCBDb250ZXh0ICpjb250ZXh0KTsKIAogICAgIGVnbDo6U3VyZmFjZSAq
Z2V0Qm91bmRTdXJmYWNlKCkgY29uc3Q7CiAgICAgZWdsOjpTdHJlYW0gKmdldEJvdW5kU3RyZWFt
KCkgY29uc3Q7CiAKKyAgICB2b2lkIGludmFsaWRhdGVDb21wbGV0ZW5lc3NDYWNoZSgpOworCiAg
ICAgcng6OlRleHR1cmVJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1U
ZXh0dXJlOyB9CiAKICAgICAvLyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3QgaW1wbGVtZW50
YXRpb24KQEAgLTMzMCw2ICszNzgsNyBAQCBjbGFzcyBUZXh0dXJlIGZpbmFsIDogcHVibGljIGVn
bDo6SW1hZ2VTaWJsaW5nLAogICAgICAgICBESVJUWV9CSVRfTUFYX0xPRCwKICAgICAgICAgRElS
VFlfQklUX0NPTVBBUkVfTU9ERSwKICAgICAgICAgRElSVFlfQklUX0NPTVBBUkVfRlVOQywKKyAg
ICAgICAgRElSVFlfQklUX1NSR0JfREVDT0RFLAogCiAgICAgICAgIC8vIFRleHR1cmUgc3RhdGUK
ICAgICAgICAgRElSVFlfQklUX1NXSVpaTEVfUkVELApAQCAtMzkxLDQgKzQ0MCw0IEBAIGlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgVGV4dHVyZVN0YXRlICZhLCBjb25zdCBUZXh0dXJlU3Rh
dGUgJmIpCiB9CiB9CiAKLSNlbmRpZiAgIC8vIExJQkFOR0xFX1RFWFRVUkVfSF8KKyNlbmRpZiAg
Ly8gTElCQU5HTEVfVEVYVFVSRV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1RocmVhZC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvVGhyZWFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MC4uMWFiZjQ0OWNlMjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvVGhyZWFkLmNwcApAQCAtMCwwICsxLDg4IEBACisvLworLy8gQ29weXJp
Z2h0KGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLwor
CisvLyBUaHJlYWQuY3BwIDogRGVmaW5lcyB0aGUgVGhyZWFkIGNsYXNzIHdoaWNoIHJlcHJlc2Vu
dHMgYSBnbG9iYWwgRUdMIHRocmVhZC4KKworI2luY2x1ZGUgImxpYkFOR0xFL1RocmVhZC5oIgor
CisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0Vycm9y
LmgiCisKK25hbWVzcGFjZSBlZ2wKK3sKK1RocmVhZDo6VGhyZWFkKCkKKyAgICA6IG1FcnJvcihF
R0xfU1VDQ0VTUyksCisgICAgICBtQVBJKEVHTF9PUEVOR0xfRVNfQVBJKSwKKyAgICAgIG1EaXNw
bGF5KHN0YXRpY19jYXN0PGVnbDo6RGlzcGxheSAqPihFR0xfTk9fRElTUExBWSkpLAorICAgICAg
bURyYXdTdXJmYWNlKHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSAqPihFR0xfTk9fU1VSRkFDRSkp
LAorICAgICAgbVJlYWRTdXJmYWNlKHN0YXRpY19jYXN0PGVnbDo6U3VyZmFjZSAqPihFR0xfTk9f
U1VSRkFDRSkpLAorICAgICAgbUNvbnRleHQoc3RhdGljX2Nhc3Q8Z2w6OkNvbnRleHQgKj4oRUdM
X05PX0NPTlRFWFQpKQoreworfQorCit2b2lkIFRocmVhZDo6c2V0RXJyb3IoY29uc3QgRXJyb3Ig
JmVycm9yKQoreworICAgIG1FcnJvciA9IGVycm9yLmdldENvZGUoKTsKK30KKworRUdMaW50IFRo
cmVhZDo6Z2V0RXJyb3IoKSBjb25zdAoreworICAgIHJldHVybiBtRXJyb3I7Cit9CisKK3ZvaWQg
VGhyZWFkOjpzZXRBUEkoRUdMZW51bSBhcGkpCit7CisgICAgbUFQSSA9IGFwaTsKK30KKworRUdM
ZW51bSBUaHJlYWQ6OmdldEFQSSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1BUEk7Cit9CisKK3Zv
aWQgVGhyZWFkOjpzZXRDdXJyZW50KERpc3BsYXkgKmRpc3BsYXksCisgICAgICAgICAgICAgICAg
ICAgICAgICBTdXJmYWNlICpkcmF3U3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN1
cmZhY2UgKnJlYWRTdXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQg
KmNvbnRleHQpCit7CisgICAgbURpc3BsYXkgICAgID0gZGlzcGxheTsKKyAgICBtRHJhd1N1cmZh
Y2UgPSBkcmF3U3VyZmFjZTsKKyAgICBtUmVhZFN1cmZhY2UgPSByZWFkU3VyZmFjZTsKKyAgICBt
Q29udGV4dCAgICAgPSBjb250ZXh0OworfQorCitEaXNwbGF5ICpUaHJlYWQ6OmdldERpc3BsYXko
KSBjb25zdAoreworICAgIHJldHVybiBtRGlzcGxheTsKK30KKworU3VyZmFjZSAqVGhyZWFkOjpn
ZXREcmF3U3VyZmFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1EcmF3U3VyZmFjZTsKK30KKwor
U3VyZmFjZSAqVGhyZWFkOjpnZXRSZWFkU3VyZmFjZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1S
ZWFkU3VyZmFjZTsKK30KKworZ2w6OkNvbnRleHQgKlRocmVhZDo6Z2V0Q29udGV4dCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1Db250ZXh0OworfQorCitnbDo6Q29udGV4dCAqVGhyZWFkOjpnZXRW
YWxpZENvbnRleHQoKSBjb25zdAoreworICAgIGlmIChtQ29udGV4dCAmJiBtQ29udGV4dC0+aXND
b250ZXh0TG9zdCgpKQorICAgIHsKKyAgICAgICAgbUNvbnRleHQtPmhhbmRsZUVycm9yKGdsOjpF
cnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiQ29udGV4dCBoYXMgYmVlbiBsb3N0LiIpKTsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgcmV0dXJuIG1Db250ZXh0OworfQorCit9
ICAvLyBuYW1lc3BhY2UgZWdsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvVGhyZWFkLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvVGhyZWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdhNjdk
YzYyYjUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL1RocmVhZC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8vCisvLyBDb3B5cmlnaHQoYykgMjAx
NiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFRocmVh
ZC5oIDogRGVmaW5lcyB0aGUgVGhyZWFkIGNsYXNzIHdoaWNoIHJlcHJlc2VudHMgYSBnbG9iYWwg
RUdMIHRocmVhZC4KKworI2lmbmRlZiBMSUJBTkdMRV9USFJFQURfSF8KKyNkZWZpbmUgTElCQU5H
TEVfVEhSRUFEX0hfCisKKyNpbmNsdWRlIDxFR0wvZWdsLmg+CisKK25hbWVzcGFjZSBnbAorewor
Y2xhc3MgQ29udGV4dDsKK30gIC8vIG5hbWVzcGFjZSBnbAorCituYW1lc3BhY2UgZWdsCit7Citj
bGFzcyBFcnJvcjsKK2NsYXNzIERpc3BsYXk7CitjbGFzcyBTdXJmYWNlOworCitjbGFzcyBUaHJl
YWQKK3sKKyAgcHVibGljOgorICAgIFRocmVhZCgpOworCisgICAgdm9pZCBzZXRFcnJvcihjb25z
dCBFcnJvciAmZXJyb3IpOworICAgIEVHTGludCBnZXRFcnJvcigpIGNvbnN0OworCisgICAgdm9p
ZCBzZXRBUEkoRUdMZW51bSBhcGkpOworICAgIEVHTGVudW0gZ2V0QVBJKCkgY29uc3Q7CisKKyAg
ICB2b2lkIHNldEN1cnJlbnQoRGlzcGxheSAqZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAg
U3VyZmFjZSAqZHJhd1N1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgIFN1cmZhY2UgKnJlYWRT
dXJmYWNlLAorICAgICAgICAgICAgICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCk7CisgICAg
RGlzcGxheSAqZ2V0RGlzcGxheSgpIGNvbnN0OworICAgIFN1cmZhY2UgKmdldERyYXdTdXJmYWNl
KCkgY29uc3Q7CisgICAgU3VyZmFjZSAqZ2V0UmVhZFN1cmZhY2UoKSBjb25zdDsKKyAgICBnbDo6
Q29udGV4dCAqZ2V0Q29udGV4dCgpIGNvbnN0OworICAgIGdsOjpDb250ZXh0ICpnZXRWYWxpZENv
bnRleHQoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIEVHTGludCBtRXJyb3I7CisgICAgRUdM
ZW51bSBtQVBJOworICAgIGVnbDo6RGlzcGxheSAqbURpc3BsYXk7CisgICAgZWdsOjpTdXJmYWNl
ICptRHJhd1N1cmZhY2U7CisgICAgZWdsOjpTdXJmYWNlICptUmVhZFN1cmZhY2U7CisgICAgZ2w6
OkNvbnRleHQgKm1Db250ZXh0OworfTsKKworfSAgLy8gbmFtZXNwYWNlIGVnbAorCisjZW5kaWYg
IC8vIExJQkFOR0xFX1RIUkVBRF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNrLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9UcmFuc2Zvcm1GZWVkYmFjay5jcHAKaW5kZXggMjkzYzkxYjMx
MzIuLjcwYTEyY2Q1YzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvVHJhbnNmb3JtRmVlZGJhY2suY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9UcmFuc2Zvcm1GZWVkYmFjay5jcHAKQEAgLTUwLDEzICs1MCwxOCBA
QCBUcmFuc2Zvcm1GZWVkYmFjazo6VHJhbnNmb3JtRmVlZGJhY2socng6OkdMSW1wbEZhY3Rvcnkg
KmltcGxGYWN0b3J5LCBHTHVpbnQgaWQsCiAgICAgQVNTRVJUKG1JbXBsZW1lbnRhdGlvbiAhPSBu
dWxscHRyKTsKIH0KIAotVHJhbnNmb3JtRmVlZGJhY2s6On5UcmFuc2Zvcm1GZWVkYmFjaygpCit2
b2lkIFRyYW5zZm9ybUZlZWRiYWNrOjpkZXN0cm95KGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7
CiAgICAgaWYgKG1TdGF0ZS5tUHJvZ3JhbSkKICAgICB7Ci0gICAgICAgIG1TdGF0ZS5tUHJvZ3Jh
bS0+cmVsZWFzZSgpOworICAgICAgICBtU3RhdGUubVByb2dyYW0tPnJlbGVhc2UoY29udGV4dCk7
CiAgICAgICAgIG1TdGF0ZS5tUHJvZ3JhbSA9IG51bGxwdHI7CiAgICAgfQorfQorCitUcmFuc2Zv
cm1GZWVkYmFjazo6flRyYW5zZm9ybUZlZWRiYWNrKCkKK3sKKyAgICBBU1NFUlQoIW1TdGF0ZS5t
UHJvZ3JhbSk7CiAgICAgbVN0YXRlLm1HZW5lcmljQnVmZmVyLnNldChudWxscHRyKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1TdGF0ZS5tSW5kZXhlZEJ1ZmZlcnMuc2l6ZSgpOyBpKysp
CiAgICAgewpAQCAtNzYsMTYgKzgxLDE2IEBAIGNvbnN0IHN0ZDo6c3RyaW5nICZUcmFuc2Zvcm1G
ZWVkYmFjazo6Z2V0TGFiZWwoKSBjb25zdAogICAgIHJldHVybiBtU3RhdGUubUxhYmVsOwogfQog
Ci12b2lkIFRyYW5zZm9ybUZlZWRiYWNrOjpiZWdpbihHTGVudW0gcHJpbWl0aXZlTW9kZSwgUHJv
Z3JhbSAqcHJvZ3JhbSkKK3ZvaWQgVHJhbnNmb3JtRmVlZGJhY2s6OmJlZ2luKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBwcmltaXRpdmVNb2RlLCBQcm9ncmFtICpwcm9ncmFtKQogewog
ICAgIG1TdGF0ZS5tQWN0aXZlICAgICAgICA9IHRydWU7CiAgICAgbVN0YXRlLm1QcmltaXRpdmVN
b2RlID0gcHJpbWl0aXZlTW9kZTsKICAgICBtU3RhdGUubVBhdXNlZCAgICAgICAgPSBmYWxzZTsK
ICAgICBtSW1wbGVtZW50YXRpb24tPmJlZ2luKHByaW1pdGl2ZU1vZGUpOwotICAgIGJpbmRQcm9n
cmFtKHByb2dyYW0pOworICAgIGJpbmRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pOwogfQogCi12
b2lkIFRyYW5zZm9ybUZlZWRiYWNrOjplbmQoKQordm9pZCBUcmFuc2Zvcm1GZWVkYmFjazo6ZW5k
KGNvbnN0IENvbnRleHQgKmNvbnRleHQpCiB7CiAgICAgbVN0YXRlLm1BY3RpdmUgICAgICAgID0g
ZmFsc2U7CiAgICAgbVN0YXRlLm1QcmltaXRpdmVNb2RlID0gR0xfTk9ORTsKQEAgLTkzLDcgKzk4
LDcgQEAgdm9pZCBUcmFuc2Zvcm1GZWVkYmFjazo6ZW5kKCkKICAgICBtSW1wbGVtZW50YXRpb24t
PmVuZCgpOwogICAgIGlmIChtU3RhdGUubVByb2dyYW0pCiAgICAgewotICAgICAgICBtU3RhdGUu
bVByb2dyYW0tPnJlbGVhc2UoKTsKKyAgICAgICAgbVN0YXRlLm1Qcm9ncmFtLT5yZWxlYXNlKGNv
bnRleHQpOwogICAgICAgICBtU3RhdGUubVByb2dyYW0gPSBudWxscHRyOwogICAgIH0KIH0KQEAg
LTEyNSwxMyArMTMwLDEzIEBAIEdMZW51bSBUcmFuc2Zvcm1GZWVkYmFjazo6Z2V0UHJpbWl0aXZl
TW9kZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1TdGF0ZS5tUHJpbWl0aXZlTW9kZTsKIH0KIAotdm9p
ZCBUcmFuc2Zvcm1GZWVkYmFjazo6YmluZFByb2dyYW0oUHJvZ3JhbSAqcHJvZ3JhbSkKK3ZvaWQg
VHJhbnNmb3JtRmVlZGJhY2s6OmJpbmRQcm9ncmFtKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFBy
b2dyYW0gKnByb2dyYW0pCiB7CiAgICAgaWYgKG1TdGF0ZS5tUHJvZ3JhbSAhPSBwcm9ncmFtKQog
ICAgIHsKICAgICAgICAgaWYgKG1TdGF0ZS5tUHJvZ3JhbSAhPSBudWxscHRyKQogICAgICAgICB7
Ci0gICAgICAgICAgICBtU3RhdGUubVByb2dyYW0tPnJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1T
dGF0ZS5tUHJvZ3JhbS0+cmVsZWFzZShjb250ZXh0KTsKICAgICAgICAgfQogICAgICAgICBtU3Rh
dGUubVByb2dyYW0gPSBwcm9ncmFtOwogICAgICAgICBpZiAobVN0YXRlLm1Qcm9ncmFtICE9IG51
bGxwdHIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
VHJhbnNmb3JtRmVlZGJhY2suaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9UcmFuc2Zvcm1GZWVkYmFjay5oCmluZGV4IDViMWViMzRiZmY2Li43MzAzODlkYTI5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RyYW5zZm9ybUZl
ZWRiYWNrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1RyYW5z
Zm9ybUZlZWRiYWNrLmgKQEAgLTI0LDYgKzI0LDcgQEAgbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBC
dWZmZXI7CiBzdHJ1Y3QgQ2FwczsKK2NsYXNzIENvbnRleHQ7CiBjbGFzcyBQcm9ncmFtOwogCiBj
bGFzcyBUcmFuc2Zvcm1GZWVkYmFja1N0YXRlIGZpbmFsIDogcHVibGljIGFuZ2xlOjpOb25Db3B5
YWJsZQpAQCAtNTUsMTIgKzU2LDEzIEBAIGNsYXNzIFRyYW5zZm9ybUZlZWRiYWNrIGZpbmFsIDog
cHVibGljIFJlZkNvdW50T2JqZWN0LCBwdWJsaWMgTGFiZWxlZE9iamVjdAogICBwdWJsaWM6CiAg
ICAgVHJhbnNmb3JtRmVlZGJhY2socng6OkdMSW1wbEZhY3RvcnkgKmltcGxGYWN0b3J5LCBHTHVp
bnQgaWQsIGNvbnN0IENhcHMgJmNhcHMpOwogICAgIHZpcnR1YWwgflRyYW5zZm9ybUZlZWRiYWNr
KCk7CisgICAgdm9pZCBkZXN0cm95KGNvbnN0IENvbnRleHQgKmNvbnRleHQpIG92ZXJyaWRlOwog
CiAgICAgdm9pZCBzZXRMYWJlbChjb25zdCBzdGQ6OnN0cmluZyAmbGFiZWwpIG92ZXJyaWRlOwog
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRMYWJlbCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
dm9pZCBiZWdpbihHTGVudW0gcHJpbWl0aXZlTW9kZSwgUHJvZ3JhbSAqcHJvZ3JhbSk7Ci0gICAg
dm9pZCBlbmQoKTsKKyAgICB2b2lkIGJlZ2luKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51
bSBwcmltaXRpdmVNb2RlLCBQcm9ncmFtICpwcm9ncmFtKTsKKyAgICB2b2lkIGVuZChjb25zdCBD
b250ZXh0ICpjb250ZXh0KTsKICAgICB2b2lkIHBhdXNlKCk7CiAgICAgdm9pZCByZXN1bWUoKTsK
IApAQCAtODMsNyArODUsNyBAQCBjbGFzcyBUcmFuc2Zvcm1GZWVkYmFjayBmaW5hbCA6IHB1Ymxp
YyBSZWZDb3VudE9iamVjdCwgcHVibGljIExhYmVsZWRPYmplY3QKICAgICBjb25zdCByeDo6VHJh
bnNmb3JtRmVlZGJhY2tJbXBsICpnZXRJbXBsZW1lbnRhdGlvbigpIGNvbnN0OwogCiAgIHByaXZh
dGU6Ci0gICAgdm9pZCBiaW5kUHJvZ3JhbShQcm9ncmFtICpwcm9ncmFtKTsKKyAgICB2b2lkIGJp
bmRQcm9ncmFtKGNvbnN0IENvbnRleHQgKmNvbnRleHQsIFByb2dyYW0gKnByb2dyYW0pOwogCiAg
ICAgVHJhbnNmb3JtRmVlZGJhY2tTdGF0ZSBtU3RhdGU7CiAgICAgcng6OlRyYW5zZm9ybUZlZWRi
YWNrSW1wbCogbUltcGxlbWVudGF0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNrX3VuaXR0ZXN0LmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UcmFuc2Zvcm1GZWVkYmFja191bml0dGVz
dC5jcHAKaW5kZXggMDdhMDk1OWUyYzkuLjk0NmRiNmJhMTY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVHJhbnNmb3JtRmVlZGJhY2tfdW5pdHRlc3Qu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9UcmFuc2Zvcm1G
ZWVkYmFja191bml0dGVzdC5jcHAKQEAgLTcyLDExICs3MiwxMSBAQCBURVNUX0YoVHJhbnNmb3Jt
RmVlZGJhY2tUZXN0LCBTaWRlRWZmZWN0c09mU3RhcnRBbmRTdG9wKQogCiAgICAgRVhQRUNUX0ZB
TFNFKG1GZWVkYmFjay0+aXNBY3RpdmUoKSk7CiAgICAgRVhQRUNUX0NBTEwoKm1JbXBsLCBiZWdp
bihHTF9UUklBTkdMRVMpKTsKLSAgICBtRmVlZGJhY2stPmJlZ2luKEdMX1RSSUFOR0xFUywgbnVs
bHB0cik7CisgICAgbUZlZWRiYWNrLT5iZWdpbihudWxscHRyLCBHTF9UUklBTkdMRVMsIG51bGxw
dHIpOwogICAgIEVYUEVDVF9UUlVFKG1GZWVkYmFjay0+aXNBY3RpdmUoKSk7CiAgICAgRVhQRUNU
X0VRKHN0YXRpY19jYXN0PEdMZW51bT4oR0xfVFJJQU5HTEVTKSwgbUZlZWRiYWNrLT5nZXRQcmlt
aXRpdmVNb2RlKCkpOwogICAgIEVYUEVDVF9DQUxMKCptSW1wbCwgZW5kKCkpOwotICAgIG1GZWVk
YmFjay0+ZW5kKCk7CisgICAgbUZlZWRiYWNrLT5lbmQobnVsbHB0cik7CiAgICAgRVhQRUNUX0ZB
TFNFKG1GZWVkYmFjay0+aXNBY3RpdmUoKSk7CiB9CiAKQEAgLTg2LDcgKzg2LDcgQEAgVEVTVF9G
KFRyYW5zZm9ybUZlZWRiYWNrVGVzdCwgU2lkZUVmZmVjdHNPZlBhdXNlQW5kUmVzdW1lKQogCiAg
ICAgRVhQRUNUX0ZBTFNFKG1GZWVkYmFjay0+aXNBY3RpdmUoKSk7CiAgICAgRVhQRUNUX0NBTEwo
Km1JbXBsLCBiZWdpbihHTF9UUklBTkdMRVMpKTsKLSAgICBtRmVlZGJhY2stPmJlZ2luKEdMX1RS
SUFOR0xFUywgbnVsbHB0cik7CisgICAgbUZlZWRiYWNrLT5iZWdpbihudWxscHRyLCBHTF9UUklB
TkdMRVMsIG51bGxwdHIpOwogICAgIEVYUEVDVF9GQUxTRShtRmVlZGJhY2stPmlzUGF1c2VkKCkp
OwogICAgIEVYUEVDVF9DQUxMKCptSW1wbCwgcGF1c2UoKSk7CiAgICAgbUZlZWRiYWNrLT5wYXVz
ZSgpOwpAQCAtOTUsMTUgKzk1LDIyIEBAIFRFU1RfRihUcmFuc2Zvcm1GZWVkYmFja1Rlc3QsIFNp
ZGVFZmZlY3RzT2ZQYXVzZUFuZFJlc3VtZSkKICAgICBtRmVlZGJhY2stPnJlc3VtZSgpOwogICAg
IEVYUEVDVF9GQUxTRShtRmVlZGJhY2stPmlzUGF1c2VkKCkpOwogICAgIEVYUEVDVF9DQUxMKCpt
SW1wbCwgZW5kKCkpOwotICAgIG1GZWVkYmFjay0+ZW5kKCk7CisgICAgbUZlZWRiYWNrLT5lbmQo
bnVsbHB0cik7CiB9CiAKIFRFU1RfRihUcmFuc2Zvcm1GZWVkYmFja1Rlc3QsIEJ1ZmZlckJpbmRp
bmcpCiB7CiAgICAgcng6Ok1vY2tCdWZmZXJJbXBsICpidWZmZXJJbXBsID0gbmV3IHJ4OjpNb2Nr
QnVmZmVySW1wbDsKLSAgICBnbDo6QnVmZmVyICpidWZmZXIgPSBuZXcgZ2w6OkJ1ZmZlcihidWZm
ZXJJbXBsLCAxKTsKICAgICBFWFBFQ1RfQ0FMTCgqYnVmZmVySW1wbCwgZGVzdHJ1Y3RvcigpKS5U
aW1lcygxKS5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CiAKKyAgICByeDo6TW9ja0dMRmFjdG9yeSBt
b2NrR0xGYWN0b3J5OworICAgIEVYUEVDVF9DQUxMKG1vY2tHTEZhY3RvcnksIGNyZWF0ZUJ1ZmZl
cihfKSkKKyAgICAgICAgLlRpbWVzKDEpCisgICAgICAgIC5XaWxsT25jZShSZXR1cm4oYnVmZmVy
SW1wbCkpCisgICAgICAgIC5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CisKKyAgICBnbDo6QnVmZmVy
ICpidWZmZXIgPSBuZXcgZ2w6OkJ1ZmZlcigmbW9ja0dMRmFjdG9yeSwgMSk7CisKICAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IGJpbmRJbmRleCA9IDA7CiAKICAgICBFWFBFQ1RfRVEobUZlZWRiYWNr
LT5nZXRJbmRleGVkQnVmZmVyQ291bnQoKSwgbUNhcHMubWF4VHJhbnNmb3JtRmVlZGJhY2tTZXBh
cmF0ZUF0dHJpYnV0ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1VuaWZvcm0uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL1VuaWZvcm0uY3BwCmluZGV4IDliNGI0N2FhMjkwLi5hNTMxMTU5MDNiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1VuaWZvcm0uY3BwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Vbmlmb3JtLmNwcApAQCAtMjIs
NiArMjIsOCBAQCBMaW5rZWRVbmlmb3JtOjpMaW5rZWRVbmlmb3JtKEdMZW51bSB0eXBlSW4sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwcmVjaXNpb25JbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWVJbiwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGFycmF5U2l6ZUluLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgYmluZGluZ0luLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBpbnQgbG9jYXRpb25JbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgaW50IGJsb2NrSW5kZXhJbiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc2g6OkJsb2NrTWVtYmVySW5mbyAmYmxvY2tJbmZvSW4pCiAgICAgOiBibG9j
a0luZGV4KGJsb2NrSW5kZXhJbiksIGJsb2NrSW5mbyhibG9ja0luZm9JbikKQEAgLTMwLDYgKzMy
LDggQEAgTGlua2VkVW5pZm9ybTo6TGlua2VkVW5pZm9ybShHTGVudW0gdHlwZUluLAogICAgIHBy
ZWNpc2lvbiA9IHByZWNpc2lvbkluOwogICAgIG5hbWUgICAgICA9IG5hbWVJbjsKICAgICBhcnJh
eVNpemUgPSBhcnJheVNpemVJbjsKKyAgICBiaW5kaW5nICAgPSBiaW5kaW5nSW47CisgICAgbG9j
YXRpb24gID0gbG9jYXRpb25JbjsKIH0KIAogTGlua2VkVW5pZm9ybTo6TGlua2VkVW5pZm9ybShj
b25zdCBzaDo6VW5pZm9ybSAmdW5pZm9ybSkKQEAgLTk5LDYgKzEwMywxMSBAQCBib29sIExpbmtl
ZFVuaWZvcm06OmlzU2FtcGxlcigpIGNvbnN0CiAgICAgcmV0dXJuIElzU2FtcGxlclR5cGUodHlw
ZSk7CiB9CiAKK2Jvb2wgTGlua2VkVW5pZm9ybTo6aXNJbWFnZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIElzSW1hZ2VUeXBlKHR5cGUpOworfQorCiBib29sIExpbmtlZFVuaWZvcm06OmlzRmllbGQo
KSBjb25zdAogewogICAgIHJldHVybiBuYW1lLmZpbmQoJy4nKSAhPSBzdGQ6OnN0cmluZzo6bnBv
czsKQEAgLTEwOSwxMCArMTE4LDE1IEBAIHNpemVfdCBMaW5rZWRVbmlmb3JtOjpnZXRFbGVtZW50
U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIFZhcmlhYmxlRXh0ZXJuYWxTaXplKHR5cGUpOwogfQog
CitzaXplX3QgTGlua2VkVW5pZm9ybTo6Z2V0RWxlbWVudENvbXBvbmVudHMoKSBjb25zdAorewor
ICAgIHJldHVybiBWYXJpYWJsZUNvbXBvbmVudENvdW50KHR5cGUpOworfQorCiB1aW50OF90ICpM
aW5rZWRVbmlmb3JtOjpnZXREYXRhUHRyVG9FbGVtZW50KHNpemVfdCBlbGVtZW50SW5kZXgpCiB7
CiAgICAgQVNTRVJUKCghaXNBcnJheSgpICYmIGVsZW1lbnRJbmRleCA9PSAwKSB8fCAoaXNBcnJh
eSgpICYmIGVsZW1lbnRJbmRleCA8IGFycmF5U2l6ZSkpOwotICAgIHJldHVybiBkYXRhKCkgKyBn
ZXRFbGVtZW50U2l6ZSgpICogZWxlbWVudEluZGV4OworICAgIHJldHVybiBkYXRhKCkgKyAoZWxl
bWVudEluZGV4ID4gMCA/IChnZXRFbGVtZW50U2l6ZSgpICogZWxlbWVudEluZGV4KSA6IDB1KTsK
IH0KIAogY29uc3QgdWludDhfdCAqTGlua2VkVW5pZm9ybTo6Z2V0RGF0YVB0clRvRWxlbWVudChz
aXplX3QgZWxlbWVudEluZGV4KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL1VuaWZvcm0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9Vbmlmb3JtLmgKaW5kZXggNGQ3ZDI0ZTNiYzAuLmNmYmE2OGVhZWM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVW5pZm9ybS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9Vbmlmb3JtLmgKQEAgLTIz
LDcgKzIzLDE0IEBAIG5hbWVzcGFjZSBnbAogc3RydWN0IExpbmtlZFVuaWZvcm0gOiBwdWJsaWMg
c2g6OlVuaWZvcm0KIHsKICAgICBMaW5rZWRVbmlmb3JtKCk7Ci0gICAgTGlua2VkVW5pZm9ybShH
TGVudW0gdHlwZSwgR0xlbnVtIHByZWNpc2lvbiwgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIHVu
c2lnbmVkIGludCBhcnJheVNpemUsIGNvbnN0IGludCBibG9ja0luZGV4LCBjb25zdCBzaDo6Qmxv
Y2tNZW1iZXJJbmZvICZibG9ja0luZm8pOworICAgIExpbmtlZFVuaWZvcm0oR0xlbnVtIHR5cGUs
CisgICAgICAgICAgICAgICAgICBHTGVudW0gcHJlY2lzaW9uLAorICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsCisgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
YXJyYXlTaXplLAorICAgICAgICAgICAgICAgICAgY29uc3QgaW50IGJpbmRpbmcsCisgICAgICAg
ICAgICAgICAgICBjb25zdCBpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICBjb25zdCBp
bnQgYmxvY2tJbmRleCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHNoOjpCbG9ja01lbWJlcklu
Zm8gJmJsb2NrSW5mbyk7CiAgICAgTGlua2VkVW5pZm9ybShjb25zdCBzaDo6VW5pZm9ybSAmdW5p
Zm9ybSk7CiAgICAgTGlua2VkVW5pZm9ybShjb25zdCBMaW5rZWRVbmlmb3JtICZ1bmlmb3JtKTsK
ICAgICBMaW5rZWRVbmlmb3JtICZvcGVyYXRvcj0oY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9y
bSk7CkBAIC0zMyw5ICs0MCwxMSBAQCBzdHJ1Y3QgTGlua2VkVW5pZm9ybSA6IHB1YmxpYyBzaDo6
VW5pZm9ybQogICAgIHVpbnQ4X3QgKmRhdGEoKTsKICAgICBjb25zdCB1aW50OF90ICpkYXRhKCkg
Y29uc3Q7CiAgICAgYm9vbCBpc1NhbXBsZXIoKSBjb25zdDsKKyAgICBib29sIGlzSW1hZ2UoKSBj
b25zdDsKICAgICBib29sIGlzSW5EZWZhdWx0QmxvY2soKSBjb25zdDsKICAgICBib29sIGlzRmll
bGQoKSBjb25zdDsKICAgICBzaXplX3QgZ2V0RWxlbWVudFNpemUoKSBjb25zdDsKKyAgICBzaXpl
X3QgZ2V0RWxlbWVudENvbXBvbmVudHMoKSBjb25zdDsKICAgICB1aW50OF90ICpnZXREYXRhUHRy
VG9FbGVtZW50KHNpemVfdCBlbGVtZW50SW5kZXgpOwogICAgIGNvbnN0IHVpbnQ4X3QgKmdldERh
dGFQdHJUb0VsZW1lbnQoc2l6ZV90IGVsZW1lbnRJbmRleCkgY29uc3Q7CiAKQEAgLTQzLDcgKzUy
LDcgQEAgc3RydWN0IExpbmtlZFVuaWZvcm0gOiBwdWJsaWMgc2g6OlVuaWZvcm0KICAgICBzaDo6
QmxvY2tNZW1iZXJJbmZvIGJsb2NrSW5mbzsKIAogICBwcml2YXRlOgotICAgIG11dGFibGUgcng6
Ok1lbW9yeUJ1ZmZlciBtTGF6eURhdGE7CisgICAgbXV0YWJsZSBhbmdsZTo6TWVtb3J5QnVmZmVy
IG1MYXp5RGF0YTsKIH07CiAKIC8vIEhlbHBlciBzdHJ1Y3QgcmVwcmVzZW50aW5nIGEgc2luZ2xl
IHNoYWRlciB1bmlmb3JtIGJsb2NrCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvVW5pZm9ybUxpbmtlci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvVW5pZm9ybUxpbmtlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjhiNzM1YzRjMDAzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1VuaWZvcm1MaW5rZXIuY3BwCkBAIC0wLDAgKzEs
NDkxIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE3IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gVW5pZm9ybUxpbmtlci5jcHA6IGltcGxlbWVudHMg
bGluay10aW1lIGNoZWNrcyBmb3IgZGVmYXVsdCBibG9jayB1bmlmb3JtcywgYW5kIGdlbmVyYXRl
cyB1bmlmb3JtCisvLyBsb2NhdGlvbnMuIFBvcHVsYXRlcyBkYXRhIHN0cnVjdHVyZXMgcmVsYXRl
ZCB0byB1bmlmb3JtcyBzbyB0aGF0IHRoZXkgY2FuIGJlIHN0b3JlZCBpbiBwcm9ncmFtCisvLyBz
dGF0ZS4KKworI2luY2x1ZGUgImxpYkFOR0xFL1VuaWZvcm1MaW5rZXIuaCIKKworI2luY2x1ZGUg
ImNvbW1vbi91dGlsaXRpZXMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9DYXBzLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvU2hhZGVyLmgiCisjaW5jbHVkZSAibGliQU5HTEUvZmVhdHVyZXMuaCIKKwor
bmFtZXNwYWNlIGdsCit7CisKK25hbWVzcGFjZQoreworCitMaW5rZWRVbmlmb3JtICpGaW5kVW5p
Zm9ybShzdGQ6OnZlY3RvcjxMaW5rZWRVbmlmb3JtPiAmbGlzdCwgY29uc3Qgc3RkOjpzdHJpbmcg
Jm5hbWUpCit7CisgICAgZm9yIChMaW5rZWRVbmlmb3JtICZ1bmlmb3JtIDogbGlzdCkKKyAgICB7
CisgICAgICAgIGlmICh1bmlmb3JtLm5hbWUgPT0gbmFtZSkKKyAgICAgICAgICAgIHJldHVybiAm
dW5pZm9ybTsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworfSAgLy8gYW5vbnlt
b3VzZSBuYW1lc3BhY2UKKworVW5pZm9ybUxpbmtlcjo6VW5pZm9ybUxpbmtlcihjb25zdCBQcm9n
cmFtU3RhdGUgJnN0YXRlKSA6IG1TdGF0ZShzdGF0ZSkKK3sKK30KKwordm9pZCBVbmlmb3JtTGlu
a2VyOjpnZXRSZXN1bHRzKHN0ZDo6dmVjdG9yPExpbmtlZFVuaWZvcm0+ICp1bmlmb3JtcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxWYXJpYWJsZUxvY2F0aW9u
PiAqdW5pZm9ybUxvY2F0aW9ucykKK3sKKyAgICB1bmlmb3Jtcy0+c3dhcChtVW5pZm9ybXMpOwor
ICAgIHVuaWZvcm1Mb2NhdGlvbnMtPnN3YXAobVVuaWZvcm1Mb2NhdGlvbnMpOworfQorCitib29s
IFVuaWZvcm1MaW5rZXI6OmxpbmsoSW5mb0xvZyAmaW5mb0xvZywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBDYXBzICZjYXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFByb2dyYW06OkJpbmRpbmdzICZ1bmlmb3JtTG9jYXRpb25CaW5kaW5ncykKK3sKKyAgICBpZiAo
bVN0YXRlLmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCkgJiYgbVN0YXRlLmdldEF0dGFjaGVkRnJh
Z21lbnRTaGFkZXIoKSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtU3RhdGUuZ2V0QXR0YWNoZWRD
b21wdXRlU2hhZGVyKCkgPT0gbnVsbHB0cik7CisgICAgICAgIGlmICghdmFsaWRhdGVWZXJ0ZXhB
bmRGcmFnbWVudFVuaWZvcm1zKGluZm9Mb2cpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBGbGF0dGVuIHRoZSB1bmlmb3Jt
cyBsaXN0IChuZXN0ZWQgZmllbGRzKSBpbnRvIGEgc2ltcGxlIGxpc3QgKG5vIG5lc3RpbmcpLgor
ICAgIC8vIEFsc28gY2hlY2sgdGhlIG1heGltdW0gdW5pZm9ybSB2ZWN0b3IgYW5kIHNhbXBsZXIg
Y291bnRzLgorICAgIGlmICghZmxhdHRlblVuaWZvcm1zQW5kQ2hlY2tDYXBzKGNhcHMsIGluZm9M
b2cpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghaW5k
ZXhVbmlmb3JtcyhpbmZvTG9nLCB1bmlmb3JtTG9jYXRpb25CaW5kaW5ncykpCisgICAgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
VW5pZm9ybUxpbmtlcjo6dmFsaWRhdGVWZXJ0ZXhBbmRGcmFnbWVudFVuaWZvcm1zKEluZm9Mb2cg
JmluZm9Mb2cpIGNvbnN0Cit7CisgICAgLy8gQ2hlY2sgdGhhdCB1bmlmb3JtcyBkZWZpbmVkIGlu
IHRoZSB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMgYXJlIGlkZW50aWNhbAorICAgIHN0ZDo6
bWFwPHN0ZDo6c3RyaW5nLCBMaW5rZWRVbmlmb3JtPiBsaW5rZWRVbmlmb3JtczsKKyAgICBjb25z
dCBzdGQ6OnZlY3RvcjxzaDo6VW5pZm9ybT4gJnZlcnRleFVuaWZvcm1zID0KKyAgICAgICAgbVN0
YXRlLmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCktPmdldFVuaWZvcm1zKCk7CisgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8c2g6OlVuaWZvcm0+ICZmcmFnbWVudFVuaWZvcm1zID0KKyAgICAgICAgbVN0
YXRlLmdldEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIoKS0+Z2V0VW5pZm9ybXMoKTsKKworICAgIGZv
ciAoY29uc3Qgc2g6OlVuaWZvcm0gJnZlcnRleFVuaWZvcm0gOiB2ZXJ0ZXhVbmlmb3JtcykKKyAg
ICB7CisgICAgICAgIGxpbmtlZFVuaWZvcm1zW3ZlcnRleFVuaWZvcm0ubmFtZV0gPSBMaW5rZWRV
bmlmb3JtKHZlcnRleFVuaWZvcm0pOworICAgIH0KKworICAgIGZvciAoY29uc3Qgc2g6OlVuaWZv
cm0gJmZyYWdtZW50VW5pZm9ybSA6IGZyYWdtZW50VW5pZm9ybXMpCisgICAgeworICAgICAgICBh
dXRvIGVudHJ5ID0gbGlua2VkVW5pZm9ybXMuZmluZChmcmFnbWVudFVuaWZvcm0ubmFtZSk7Cisg
ICAgICAgIGlmIChlbnRyeSAhPSBsaW5rZWRVbmlmb3Jtcy5lbmQoKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgTGlua2VkVW5pZm9ybSAqbGlua2VkVW5pZm9ybSAgID0gJmVudHJ5LT5zZWNvbmQ7
CisgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmdW5pZm9ybU5hbWUgPSAidW5pZm9ybSAn
IiArIGxpbmtlZFVuaWZvcm0tPm5hbWUgKyAiJyI7CisgICAgICAgICAgICBpZiAoIWxpbmtWYWxp
ZGF0ZVVuaWZvcm1zKGluZm9Mb2csIHVuaWZvcm1OYW1lLCAqbGlua2VkVW5pZm9ybSwgZnJhZ21l
bnRVbmlmb3JtKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisK
Ky8vIEdMU0wgRVMgU3BlYyAzLjAwLjMsIHNlY3Rpb24gNC4zLjUuCitib29sIFVuaWZvcm1MaW5r
ZXI6OmxpbmtWYWxpZGF0ZVVuaWZvcm1zKEluZm9Mb2cgJmluZm9Mb2csCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ1bmlmb3JtTmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2g6OlVu
aWZvcm0gJnZlcnRleFVuaWZvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHNoOjpVbmlmb3JtICZmcmFnbWVudFVuaWZvcm0pCit7CisjaWYgQU5HTEVf
UFJPR1JBTV9MSU5LX1ZBTElEQVRFX1VOSUZPUk1fUFJFQ0lTSU9OID09IEFOR0xFX0VOQUJMRUQK
KyAgICBjb25zdCBib29sIHZhbGlkYXRlUHJlY2lzaW9uID0gdHJ1ZTsKKyNlbHNlCisgICAgY29u
c3QgYm9vbCB2YWxpZGF0ZVByZWNpc2lvbiA9IGZhbHNlOworI2VuZGlmCisKKyAgICBpZiAoIVBy
b2dyYW06OmxpbmtWYWxpZGF0ZVZhcmlhYmxlc0Jhc2UoaW5mb0xvZywgdW5pZm9ybU5hbWUsIHZl
cnRleFVuaWZvcm0sIGZyYWdtZW50VW5pZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmFsaWRhdGVQcmVjaXNpb24pKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIEdMU0wgRVMgU3BlYyAzLjEwLjQsIHNlY3Rpb24g
NC40LjUuCisgICAgaWYgKHZlcnRleFVuaWZvcm0uYmluZGluZyAhPSAtMSAmJiBmcmFnbWVudFVu
aWZvcm0uYmluZGluZyAhPSAtMSAmJgorICAgICAgICB2ZXJ0ZXhVbmlmb3JtLmJpbmRpbmcgIT0g
ZnJhZ21lbnRVbmlmb3JtLmJpbmRpbmcpCisgICAgeworICAgICAgICBpbmZvTG9nIDw8ICJCaW5k
aW5nIGxheW91dCBxdWFsaWZpZXJzIGZvciAiIDw8IHVuaWZvcm1OYW1lCisgICAgICAgICAgICAg
ICAgPDwgIiBkaWZmZXIgYmV0d2VlbiB2ZXJ0ZXggYW5kIGZyYWdtZW50IHNoYWRlcnMuIjsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIEdMU0wgRVMgU3BlYyAzLjEwLjQs
IHNlY3Rpb24gOS4yLjEuCisgICAgaWYgKHZlcnRleFVuaWZvcm0ubG9jYXRpb24gIT0gLTEgJiYg
ZnJhZ21lbnRVbmlmb3JtLmxvY2F0aW9uICE9IC0xICYmCisgICAgICAgIHZlcnRleFVuaWZvcm0u
bG9jYXRpb24gIT0gZnJhZ21lbnRVbmlmb3JtLmxvY2F0aW9uKQorICAgIHsKKyAgICAgICAgaW5m
b0xvZyA8PCAiTG9jYXRpb24gbGF5b3V0IHF1YWxpZmllcnMgZm9yICIgPDwgdW5pZm9ybU5hbWUK
KyAgICAgICAgICAgICAgICA8PCAiIGRpZmZlciBiZXR3ZWVuIHZlcnRleCBhbmQgZnJhZ21lbnQg
c2hhZGVycy4iOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgVW5pZm9ybUxpbmtlcjo6aW5kZXhVbmlmb3JtcyhJbmZvTG9nICZpbmZv
TG9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFByb2dyYW06OkJp
bmRpbmdzICZ1bmlmb3JtTG9jYXRpb25CaW5kaW5ncykKK3sKKyAgICAvLyBBbGwgdGhlIGxvY2F0
aW9ucyB3aGVyZSBhbm90aGVyIHVuaWZvcm0gY2FuJ3QgYmUgbG9jYXRlZC4KKyAgICBzdGQ6OnNl
dDxHTHVpbnQ+IHJlc2VydmVkTG9jYXRpb25zOworICAgIC8vIExvY2F0aW9ucyB3aGljaCBoYXZl
IGJlZW4gYWxsb2NhdGVkIGZvciBhbiB1bnVzZWQgdW5pZm9ybS4KKyAgICBzdGQ6OnNldDxHTHVp
bnQ+IGlnbm9yZWRMb2NhdGlvbnM7CisKKyAgICBpbnQgbWF4VW5pZm9ybUxvY2F0aW9uID0gLTE7
CisKKyAgICAvLyBHYXRoZXIgdW5pZm9ybSBsb2NhdGlvbnMgdGhhdCBoYXZlIGJlZW4gc2V0IGVp
dGhlciB1c2luZyB0aGUgYmluZFVuaWZvcm1Mb2NhdGlvbiBBUEkgb3IgYnkKKyAgICAvLyB1c2lu
ZyBhIGxvY2F0aW9uIGxheW91dCBxdWFsaWZpZXIgYW5kIGNoZWNrIGNvbmZsaWN0cyBiZXR3ZWVu
IHRoZW0uCisgICAgaWYgKCFnYXRoZXJVbmlmb3JtTG9jYXRpb25zQW5kQ2hlY2tDb25mbGljdHMo
aW5mb0xvZywgdW5pZm9ybUxvY2F0aW9uQmluZGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlc2VydmVkTG9jYXRpb25zLCAmaWdub3JlZExv
Y2F0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmbWF4VW5pZm9ybUxvY2F0aW9uKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICAvLyBDb25mbGljdHMgaGF2ZSBiZWVuIGNoZWNrZWQsIG5vdyB3ZSBjYW4gcHJ1
bmUgbm9uLXN0YXRpY2FsbHkgdXNlZCB1bmlmb3Jtcy4gQ29kZSBmdXJ0aGVyIGRvd24KKyAgICAv
LyB0aGUgbGluZSByZWxpZXMgb24gb25seSBoYXZpbmcgc3RhdGljYWxseSB1c2VkIHVuaWZvcm1z
IGluIG1Vbmlmb3Jtcy4KKyAgICBwcnVuZVVudXNlZFVuaWZvcm1zKCk7CisKKyAgICAvLyBHYXRo
ZXIgdW5pZm9ybXMgdGhhdCBoYXZlIHRoZWlyIGxvY2F0aW9uIHByZS1zZXQgYW5kIHVuaWZvcm1z
IHRoYXQgZG9uJ3QgeWV0IGhhdmUgYSBsb2NhdGlvbi4KKyAgICBzdGQ6OnZlY3RvcjxWYXJpYWJs
ZUxvY2F0aW9uPiB1bmxvY2F0ZWRVbmlmb3JtczsKKyAgICBzdGQ6Om1hcDxHTHVpbnQsIFZhcmlh
YmxlTG9jYXRpb24+IHByZUxvY2F0ZWRVbmlmb3JtczsKKworICAgIGZvciAoc2l6ZV90IHVuaWZv
cm1JbmRleCA9IDA7IHVuaWZvcm1JbmRleCA8IG1Vbmlmb3Jtcy5zaXplKCk7IHVuaWZvcm1JbmRl
eCsrKQorICAgIHsKKyAgICAgICAgY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9ybSA9IG1Vbmlm
b3Jtc1t1bmlmb3JtSW5kZXhdOworCisgICAgICAgIGlmICh1bmlmb3JtLmlzQnVpbHRJbigpKQor
ICAgICAgICB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlu
dCBwcmVTZXRMb2NhdGlvbiA9IHVuaWZvcm1Mb2NhdGlvbkJpbmRpbmdzLmdldEJpbmRpbmcodW5p
Zm9ybS5uYW1lKTsKKyAgICAgICAgaW50IHNoYWRlckxvY2F0aW9uID0gdW5pZm9ybS5sb2NhdGlv
bjsKKworICAgICAgICBpZiAoc2hhZGVyTG9jYXRpb24gIT0gLTEpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHByZVNldExvY2F0aW9uID0gc2hhZGVyTG9jYXRpb247CisgICAgICAgIH0KKworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGludCBhcnJheUluZGV4ID0gMDsgYXJyYXlJbmRleCA8IHVuaWZv
cm0uZWxlbWVudENvdW50KCk7IGFycmF5SW5kZXgrKykKKyAgICAgICAgeworICAgICAgICAgICAg
VmFyaWFibGVMb2NhdGlvbiBsb2NhdGlvbih1bmlmb3JtLm5hbWUsIGFycmF5SW5kZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGlu
dD4odW5pZm9ybUluZGV4KSk7CisKKyAgICAgICAgICAgIGlmICgoYXJyYXlJbmRleCA9PSAwICYm
IHByZVNldExvY2F0aW9uICE9IC0xKSB8fCBzaGFkZXJMb2NhdGlvbiAhPSAtMSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgZWxlbWVudExvY2F0aW9uICAgICAgICAgICAgICAg
ICA9IHByZVNldExvY2F0aW9uICsgYXJyYXlJbmRleDsKKyAgICAgICAgICAgICAgICBwcmVMb2Nh
dGVkVW5pZm9ybXNbZWxlbWVudExvY2F0aW9uXSA9IGxvY2F0aW9uOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVubG9jYXRl
ZFVuaWZvcm1zLnB1c2hfYmFjayhsb2NhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyBNYWtlIGVub3VnaCBzcGFjZSBmb3IgYWxsIHVuaWZvcm1zLCB3aXRo
IHByZS1zZXQgbG9jYXRpb25zIG9yIG5vdC4KKyAgICBtVW5pZm9ybUxvY2F0aW9ucy5yZXNpemUo
CisgICAgICAgIHN0ZDo6bWF4KHVubG9jYXRlZFVuaWZvcm1zLnNpemUoKSArIHByZUxvY2F0ZWRV
bmlmb3Jtcy5zaXplKCkgKyBpZ25vcmVkTG9jYXRpb25zLnNpemUoKSwKKyAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8c2l6ZV90PihtYXhVbmlmb3JtTG9jYXRpb24gKyAxKSkpOworCisgICAg
Ly8gQXNzaWduIHVuaWZvcm1zIHdpdGggcHJlLXNldCBsb2NhdGlvbnMKKyAgICBmb3IgKGNvbnN0
IGF1dG8gJnVuaWZvcm0gOiBwcmVMb2NhdGVkVW5pZm9ybXMpCisgICAgeworICAgICAgICBtVW5p
Zm9ybUxvY2F0aW9uc1t1bmlmb3JtLmZpcnN0XSA9IHVuaWZvcm0uc2Vjb25kOworICAgIH0KKwor
ICAgIC8vIEFzc2lnbiBpZ25vcmVkIHVuaWZvcm1zCisgICAgZm9yIChjb25zdCBhdXRvICZpZ25v
cmVkTG9jYXRpb24gOiBpZ25vcmVkTG9jYXRpb25zKQorICAgIHsKKyAgICAgICAgbVVuaWZvcm1M
b2NhdGlvbnNbaWdub3JlZExvY2F0aW9uXS5pZ25vcmVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICAv
LyBBdXRvbWF0aWNhbGx5IGFzc2lnbiBsb2NhdGlvbnMgZm9yIHRoZSByZXN0IG9mIHRoZSB1bmlm
b3JtcworICAgIHNpemVfdCBuZXh0VW5pZm9ybUxvY2F0aW9uID0gMDsKKyAgICBmb3IgKGNvbnN0
IGF1dG8gJnVubG9jYXRlZFVuaWZvcm0gOiB1bmxvY2F0ZWRVbmlmb3JtcykKKyAgICB7CisgICAg
ICAgIHdoaWxlIChtVW5pZm9ybUxvY2F0aW9uc1tuZXh0VW5pZm9ybUxvY2F0aW9uXS51c2VkIHx8
CisgICAgICAgICAgICAgICBtVW5pZm9ybUxvY2F0aW9uc1tuZXh0VW5pZm9ybUxvY2F0aW9uXS5p
Z25vcmVkKQorICAgICAgICB7CisgICAgICAgICAgICBuZXh0VW5pZm9ybUxvY2F0aW9uKys7Cisg
ICAgICAgIH0KKworICAgICAgICBBU1NFUlQobmV4dFVuaWZvcm1Mb2NhdGlvbiA8IG1Vbmlmb3Jt
TG9jYXRpb25zLnNpemUoKSk7CisgICAgICAgIG1Vbmlmb3JtTG9jYXRpb25zW25leHRVbmlmb3Jt
TG9jYXRpb25dID0gdW5sb2NhdGVkVW5pZm9ybTsKKyAgICAgICAgbmV4dFVuaWZvcm1Mb2NhdGlv
bisrOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFVuaWZvcm1MaW5rZXI6
OmdhdGhlclVuaWZvcm1Mb2NhdGlvbnNBbmRDaGVja0NvbmZsaWN0cygKKyAgICBJbmZvTG9nICZp
bmZvTG9nLAorICAgIGNvbnN0IFByb2dyYW06OkJpbmRpbmdzICZ1bmlmb3JtTG9jYXRpb25CaW5k
aW5ncywKKyAgICBzdGQ6OnNldDxHTHVpbnQ+ICpyZXNlcnZlZExvY2F0aW9ucywKKyAgICBzdGQ6
OnNldDxHTHVpbnQ+ICppZ25vcmVkTG9jYXRpb25zLAorICAgIGludCAqbWF4VW5pZm9ybUxvY2F0
aW9uKQoreworICAgIGZvciAoY29uc3QgTGlua2VkVW5pZm9ybSAmdW5pZm9ybSA6IG1Vbmlmb3Jt
cykKKyAgICB7CisgICAgICAgIGlmICh1bmlmb3JtLmlzQnVpbHRJbigpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBhcGlCb3VuZExv
Y2F0aW9uID0gdW5pZm9ybUxvY2F0aW9uQmluZGluZ3MuZ2V0QmluZGluZyh1bmlmb3JtLm5hbWUp
OworICAgICAgICBpbnQgc2hhZGVyTG9jYXRpb24gICA9IHVuaWZvcm0ubG9jYXRpb247CisKKyAg
ICAgICAgaWYgKHNoYWRlckxvY2F0aW9uICE9IC0xKQorICAgICAgICB7CisgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGludCBhcnJheUluZGV4ID0gMDsgYXJyYXlJbmRleCA8IHVuaWZvcm0uZWxl
bWVudENvdW50KCk7IGFycmF5SW5kZXgrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAvLyBHTFNMIEVTIDMuMTAgc2VjdGlvbiA0LjQuMworICAgICAgICAgICAgICAgIGludCBlbGVt
ZW50TG9jYXRpb24gPSBzaGFkZXJMb2NhdGlvbiArIGFycmF5SW5kZXg7CisgICAgICAgICAgICAg
ICAgKm1heFVuaWZvcm1Mb2NhdGlvbiA9IHN0ZDo6bWF4KCptYXhVbmlmb3JtTG9jYXRpb24sIGVs
ZW1lbnRMb2NhdGlvbik7CisgICAgICAgICAgICAgICAgaWYgKHJlc2VydmVkTG9jYXRpb25zLT5m
aW5kKGVsZW1lbnRMb2NhdGlvbikgIT0gcmVzZXJ2ZWRMb2NhdGlvbnMtPmVuZCgpKQorICAgICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaW5mb0xvZyA8PCAiTXVsdGlwbGUgdW5p
Zm9ybXMgYm91bmQgdG8gbG9jYXRpb24gIiA8PCBlbGVtZW50TG9jYXRpb24gPDwgIi4iOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHJlc2VydmVkTG9jYXRpb25zLT5pbnNlcnQoZWxlbWVudExvY2F0aW9uKTsKKyAg
ICAgICAgICAgICAgICBpZiAoIXVuaWZvcm0uc3RhdGljVXNlKQorICAgICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAgICAgaWdub3JlZExvY2F0aW9ucy0+aW5zZXJ0KGVsZW1lbnRMb2Nh
dGlvbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGVsc2UgaWYgKGFwaUJvdW5kTG9jYXRpb24gIT0gLTEgJiYgdW5pZm9ybS5zdGF0aWNVc2Up
CisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIE9ubHkgdGhlIGZpcnN0IGxvY2F0aW9uIGlzIHJl
c2VydmVkIGV2ZW4gaWYgdGhlIHVuaWZvcm0gaXMgYW4gYXJyYXkuCisgICAgICAgICAgICAqbWF4
VW5pZm9ybUxvY2F0aW9uID0gc3RkOjptYXgoKm1heFVuaWZvcm1Mb2NhdGlvbiwgYXBpQm91bmRM
b2NhdGlvbik7CisgICAgICAgICAgICBpZiAocmVzZXJ2ZWRMb2NhdGlvbnMtPmZpbmQoYXBpQm91
bmRMb2NhdGlvbikgIT0gcmVzZXJ2ZWRMb2NhdGlvbnMtPmVuZCgpKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGluZm9Mb2cgPDwgIk11bHRpcGxlIHVuaWZvcm1zIGJvdW5kIHRvIGxv
Y2F0aW9uICIgPDwgYXBpQm91bmRMb2NhdGlvbiA8PCAiLiI7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzZXJ2ZWRMb2NhdGlvbnMt
Pmluc2VydChhcGlCb3VuZExvY2F0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFJl
Y29yZCB0aGUgdW5pZm9ybSBsb2NhdGlvbnMgdGhhdCB3ZXJlIGJvdW5kIHVzaW5nIHRoZSBBUEkg
Zm9yIHVuaWZvcm1zIHRoYXQgd2VyZSBub3QgZm91bmQKKyAgICAvLyBmcm9tIHRoZSBzaGFkZXIu
IE90aGVyIHVuaWZvcm1zIHNob3VsZCBub3QgYmUgYXNzaWduZWQgdG8gdGhvc2UgbG9jYXRpb25z
LgorICAgIGZvciAoY29uc3QgYXV0byAmbG9jYXRpb25CaW5kaW5nIDogdW5pZm9ybUxvY2F0aW9u
QmluZGluZ3MpCisgICAgeworICAgICAgICBHTHVpbnQgbG9jYXRpb24gPSBsb2NhdGlvbkJpbmRp
bmcuc2Vjb25kOworICAgICAgICBpZiAocmVzZXJ2ZWRMb2NhdGlvbnMtPmZpbmQobG9jYXRpb24p
ID09IHJlc2VydmVkTG9jYXRpb25zLT5lbmQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgaWdu
b3JlZExvY2F0aW9ucy0+aW5zZXJ0KGxvY2F0aW9uKTsKKyAgICAgICAgICAgICptYXhVbmlmb3Jt
TG9jYXRpb24gPSBzdGQ6Om1heCgqbWF4VW5pZm9ybUxvY2F0aW9uLCBzdGF0aWNfY2FzdDxpbnQ+
KGxvY2F0aW9uKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
dm9pZCBVbmlmb3JtTGlua2VyOjpwcnVuZVVudXNlZFVuaWZvcm1zKCkKK3sKKyAgICBhdXRvIHVu
aWZvcm1JdGVyID0gbVVuaWZvcm1zLmJlZ2luKCk7CisgICAgd2hpbGUgKHVuaWZvcm1JdGVyICE9
IG1Vbmlmb3Jtcy5lbmQoKSkKKyAgICB7CisgICAgICAgIGlmICh1bmlmb3JtSXRlci0+c3RhdGlj
VXNlKQorICAgICAgICB7CisgICAgICAgICAgICArK3VuaWZvcm1JdGVyOworICAgICAgICB9Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgdW5pZm9ybUl0ZXIgPSBtVW5pZm9y
bXMuZXJhc2UodW5pZm9ybUl0ZXIpOworICAgICAgICB9CisgICAgfQorfQorCitib29sIFVuaWZv
cm1MaW5rZXI6OmZsYXR0ZW5Vbmlmb3Jtc0FuZENoZWNrQ2Fwc0ZvclNoYWRlcigKKyAgICBjb25z
dCBTaGFkZXIgJnNoYWRlciwKKyAgICBHTHVpbnQgbWF4VW5pZm9ybUNvbXBvbmVudHMsCisgICAg
R0x1aW50IG1heFRleHR1cmVJbWFnZVVuaXRzLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZjb21w
b25lbnRzRXJyb3JNZXNzYWdlLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzYW1wbGVyRXJyb3JN
ZXNzYWdlLAorICAgIHN0ZDo6dmVjdG9yPExpbmtlZFVuaWZvcm0+ICZzYW1wbGVyVW5pZm9ybXMs
CisgICAgSW5mb0xvZyAmaW5mb0xvZykKK3sKKyAgICBWZWN0b3JBbmRTYW1wbGVyQ291bnQgdmFz
Q291bnQ7CisgICAgZm9yIChjb25zdCBzaDo6VW5pZm9ybSAmdW5pZm9ybSA6IHNoYWRlci5nZXRV
bmlmb3JtcygpKQorICAgIHsKKyAgICAgICAgdmFzQ291bnQgKz0gZmxhdHRlblVuaWZvcm0odW5p
Zm9ybSwgJnNhbXBsZXJVbmlmb3Jtcyk7CisgICAgfQorCisgICAgaWYgKHZhc0NvdW50LnZlY3Rv
ckNvdW50ID4gbWF4VW5pZm9ybUNvbXBvbmVudHMpCisgICAgeworICAgICAgICBpbmZvTG9nIDw8
IGNvbXBvbmVudHNFcnJvck1lc3NhZ2UgPDwgbWF4VW5pZm9ybUNvbXBvbmVudHMgPDwgIikuIjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICh2YXNDb3VudC5zYW1wbGVy
Q291bnQgPiBtYXhUZXh0dXJlSW1hZ2VVbml0cykKKyAgICB7CisgICAgICAgIGluZm9Mb2cgPDwg
c2FtcGxlckVycm9yTWVzc2FnZSA8PCBtYXhUZXh0dXJlSW1hZ2VVbml0cyA8PCAiKS4iOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
VW5pZm9ybUxpbmtlcjo6ZmxhdHRlblVuaWZvcm1zQW5kQ2hlY2tDYXBzKGNvbnN0IENhcHMgJmNh
cHMsIEluZm9Mb2cgJmluZm9Mb2cpCit7CisgICAgc3RkOjp2ZWN0b3I8TGlua2VkVW5pZm9ybT4g
c2FtcGxlclVuaWZvcm1zOworCisgICAgaWYgKG1TdGF0ZS5nZXRBdHRhY2hlZENvbXB1dGVTaGFk
ZXIoKSkKKyAgICB7CisgICAgICAgIGNvbnN0IFNoYWRlciAqY29tcHV0ZVNoYWRlciA9IG1TdGF0
ZS5nZXRBdHRhY2hlZENvbXB1dGVTaGFkZXIoKTsKKworICAgICAgICAvLyBUT0RPIChtcmFkZXYp
OiBjaGVjayB3aGV0aGVyIHdlIG5lZWQgZmluZXItZ3JhaW5lZCBjb21wb25lbnQgY291bnRpbmcK
KyAgICAgICAgaWYgKCFmbGF0dGVuVW5pZm9ybXNBbmRDaGVja0NhcHNGb3JTaGFkZXIoCisgICAg
ICAgICAgICAgICAgKmNvbXB1dGVTaGFkZXIsIGNhcHMubWF4Q29tcHV0ZVVuaWZvcm1Db21wb25l
bnRzIC8gNCwKKyAgICAgICAgICAgICAgICBjYXBzLm1heENvbXB1dGVUZXh0dXJlSW1hZ2VVbml0
cywKKyAgICAgICAgICAgICAgICAiQ29tcHV0ZSBzaGFkZXIgYWN0aXZlIHVuaWZvcm1zIGV4Y2Vl
ZCBNQVhfQ09NUFVURV9VTklGT1JNX0NPTVBPTkVOVFMgKCIsCisgICAgICAgICAgICAgICAgIkNv
bXB1dGUgc2hhZGVyIHNhbXBsZXIgY291bnQgZXhjZWVkcyBNQVhfQ09NUFVURV9URVhUVVJFX0lN
QUdFX1VOSVRTICgiLAorICAgICAgICAgICAgICAgIHNhbXBsZXJVbmlmb3JtcywgaW5mb0xvZykp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBlbHNlCisgICAgeworICAgICAgICBjb25zdCBTaGFkZXIgKnZlcnRleFNoYWRlciA9IG1T
dGF0ZS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpOworCisgICAgICAgIGlmICghZmxhdHRlblVu
aWZvcm1zQW5kQ2hlY2tDYXBzRm9yU2hhZGVyKAorICAgICAgICAgICAgICAgICp2ZXJ0ZXhTaGFk
ZXIsIGNhcHMubWF4VmVydGV4VW5pZm9ybVZlY3RvcnMsIGNhcHMubWF4VmVydGV4VGV4dHVyZUlt
YWdlVW5pdHMsCisgICAgICAgICAgICAgICAgIlZlcnRleCBzaGFkZXIgYWN0aXZlIHVuaWZvcm1z
IGV4Y2VlZCBNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUyAoIiwKKyAgICAgICAgICAgICAgICAi
VmVydGV4IHNoYWRlciBzYW1wbGVyIGNvdW50IGV4Y2VlZHMgTUFYX1ZFUlRFWF9URVhUVVJFX0lN
QUdFX1VOSVRTICgiLAorICAgICAgICAgICAgICAgIHNhbXBsZXJVbmlmb3JtcywgaW5mb0xvZykp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAg
ICBjb25zdCBTaGFkZXIgKmZyYWdtZW50U2hhZGVyID0gbVN0YXRlLmdldEF0dGFjaGVkRnJhZ21l
bnRTaGFkZXIoKTsKKworICAgICAgICBpZiAoIWZsYXR0ZW5Vbmlmb3Jtc0FuZENoZWNrQ2Fwc0Zv
clNoYWRlcigKKyAgICAgICAgICAgICAgICAqZnJhZ21lbnRTaGFkZXIsIGNhcHMubWF4RnJhZ21l
bnRVbmlmb3JtVmVjdG9ycywgY2Fwcy5tYXhUZXh0dXJlSW1hZ2VVbml0cywKKyAgICAgICAgICAg
ICAgICAiRnJhZ21lbnQgc2hhZGVyIGFjdGl2ZSB1bmlmb3JtcyBleGNlZWQgTUFYX0ZSQUdNRU5U
X1VOSUZPUk1fVkVDVE9SUyAoIiwKKyAgICAgICAgICAgICAgICAiRnJhZ21lbnQgc2hhZGVyIHNh
bXBsZXIgY291bnQgZXhjZWVkcyBNQVhfVEVYVFVSRV9JTUFHRV9VTklUUyAoIiwgc2FtcGxlclVu
aWZvcm1zLAorICAgICAgICAgICAgICAgIGluZm9Mb2cpKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtVW5pZm9ybXMuaW5zZXJ0
KG1Vbmlmb3Jtcy5lbmQoKSwgc2FtcGxlclVuaWZvcm1zLmJlZ2luKCksIHNhbXBsZXJVbmlmb3Jt
cy5lbmQoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1VuaWZvcm1MaW5rZXI6OlZlY3RvckFu
ZFNhbXBsZXJDb3VudCBVbmlmb3JtTGlua2VyOjpmbGF0dGVuVW5pZm9ybSgKKyAgICBjb25zdCBz
aDo6VW5pZm9ybSAmdW5pZm9ybSwKKyAgICBzdGQ6OnZlY3RvcjxMaW5rZWRVbmlmb3JtPiAqc2Ft
cGxlclVuaWZvcm1zKQoreworICAgIGludCBsb2NhdGlvbiAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSB1bmlmb3JtLmxvY2F0aW9uOworICAgIFZlY3RvckFuZFNhbXBsZXJDb3VudCB1bmlmb3Jt
VmFzQ291bnQgPSBmbGF0dGVuVW5pZm9ybUltcGwoCisgICAgICAgIHVuaWZvcm0sIHVuaWZvcm0u
bmFtZSwgc2FtcGxlclVuaWZvcm1zLCB1bmlmb3JtLnN0YXRpY1VzZSwgdW5pZm9ybS5iaW5kaW5n
LCAmbG9jYXRpb24pOworICAgIGlmICh1bmlmb3JtLnN0YXRpY1VzZSkKKyAgICB7CisgICAgICAg
IHJldHVybiB1bmlmb3JtVmFzQ291bnQ7CisgICAgfQorICAgIHJldHVybiBWZWN0b3JBbmRTYW1w
bGVyQ291bnQoKTsKK30KKworVW5pZm9ybUxpbmtlcjo6VmVjdG9yQW5kU2FtcGxlckNvdW50IFVu
aWZvcm1MaW5rZXI6OmZsYXR0ZW5Vbmlmb3JtSW1wbCgKKyAgICBjb25zdCBzaDo6U2hhZGVyVmFy
aWFibGUgJnVuaWZvcm0sCisgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZ1bGxOYW1lLAorICAgIHN0
ZDo6dmVjdG9yPExpbmtlZFVuaWZvcm0+ICpzYW1wbGVyVW5pZm9ybXMsCisgICAgYm9vbCBtYXJr
U3RhdGljVXNlLAorICAgIGludCBiaW5kaW5nLAorICAgIGludCAqbG9jYXRpb24pCit7CisgICAg
QVNTRVJUKGxvY2F0aW9uKTsKKyAgICBWZWN0b3JBbmRTYW1wbGVyQ291bnQgdmVjdG9yQW5kU2Ft
cGxlckNvdW50OworCisgICAgaWYgKHVuaWZvcm0uaXNTdHJ1Y3QoKSkKKyAgICB7CisgICAgICAg
IGZvciAodW5zaWduZWQgaW50IGVsZW1lbnRJbmRleCA9IDA7IGVsZW1lbnRJbmRleCA8IHVuaWZv
cm0uZWxlbWVudENvdW50KCk7IGVsZW1lbnRJbmRleCsrKQorICAgICAgICB7CisgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmZWxlbWVudFN0cmluZyA9ICh1bmlmb3JtLmlzQXJyYXkoKSA/
IEFycmF5U3RyaW5nKGVsZW1lbnRJbmRleCkgOiAiIik7CisKKyAgICAgICAgICAgIGZvciAoc2l6
ZV90IGZpZWxkSW5kZXggPSAwOyBmaWVsZEluZGV4IDwgdW5pZm9ybS5maWVsZHMuc2l6ZSgpOyBm
aWVsZEluZGV4KyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3Qgc2g6OlNo
YWRlclZhcmlhYmxlICZmaWVsZCAgPSB1bmlmb3JtLmZpZWxkc1tmaWVsZEluZGV4XTsKKyAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZmllbGRGdWxsTmFtZSA9IChmdWxsTmFtZSAr
IGVsZW1lbnRTdHJpbmcgKyAiLiIgKyBmaWVsZC5uYW1lKTsKKworICAgICAgICAgICAgICAgIHZl
Y3RvckFuZFNhbXBsZXJDb3VudCArPSBmbGF0dGVuVW5pZm9ybUltcGwoZmllbGQsIGZpZWxkRnVs
bE5hbWUsIHNhbXBsZXJVbmlmb3JtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtTdGF0aWNVc2UsIC0xLCBsb2NhdGlvbik7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdmVjdG9yQW5kU2Ft
cGxlckNvdW50OworICAgIH0KKworICAgIC8vIE5vdCBhIHN0cnVjdAorICAgIGJvb2wgaXNTYW1w
bGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBJc1NhbXBsZXJUeXBlKHVuaWZvcm0u
dHlwZSk7CisgICAgc3RkOjp2ZWN0b3I8Z2w6OkxpbmtlZFVuaWZvcm0+ICp1bmlmb3JtTGlzdCA9
ICZtVW5pZm9ybXM7CisgICAgaWYgKGlzU2FtcGxlcikKKyAgICB7CisgICAgICAgIC8vIFN0b3Jl
IHNhbXBsZXIgdW5pZm9ybXMgc2VwYXJhdGVseSwgc28gd2UnbGwgYXBwZW5kIHRoZW0gdG8gdGhl
IGVuZCBvZiB0aGUgbGlzdC4KKyAgICAgICAgdW5pZm9ybUxpc3QgPSBzYW1wbGVyVW5pZm9ybXM7
CisgICAgfQorICAgIExpbmtlZFVuaWZvcm0gKmV4aXN0aW5nVW5pZm9ybSA9IEZpbmRVbmlmb3Jt
KCp1bmlmb3JtTGlzdCwgZnVsbE5hbWUpOworICAgIGlmIChleGlzdGluZ1VuaWZvcm0pCisgICAg
eworICAgICAgICBpZiAoYmluZGluZyAhPSAtMSkKKyAgICAgICAgeworICAgICAgICAgICAgZXhp
c3RpbmdVbmlmb3JtLT5iaW5kaW5nID0gYmluZGluZzsKKyAgICAgICAgfQorICAgICAgICBpZiAo
KmxvY2F0aW9uICE9IC0xKQorICAgICAgICB7CisgICAgICAgICAgICBleGlzdGluZ1VuaWZvcm0t
PmxvY2F0aW9uID0gKmxvY2F0aW9uOworICAgICAgICB9CisgICAgICAgIGlmIChtYXJrU3RhdGlj
VXNlKQorICAgICAgICB7CisgICAgICAgICAgICBleGlzdGluZ1VuaWZvcm0tPnN0YXRpY1VzZSA9
IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgTGlua2Vk
VW5pZm9ybSBsaW5rZWRVbmlmb3JtKHVuaWZvcm0udHlwZSwgdW5pZm9ybS5wcmVjaXNpb24sIGZ1
bGxOYW1lLCB1bmlmb3JtLmFycmF5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJpbmRpbmcsICpsb2NhdGlvbiwgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaDo6QmxvY2tNZW1iZXJJbmZvOjpnZXREZWZhdWx0QmxvY2tJbmZvKCkpOwor
ICAgICAgICBsaW5rZWRVbmlmb3JtLnN0YXRpY1VzZSA9IG1hcmtTdGF0aWNVc2U7CisgICAgICAg
IHVuaWZvcm1MaXN0LT5wdXNoX2JhY2sobGlua2VkVW5pZm9ybSk7CisgICAgfQorCisgICAgdW5z
aWduZWQgaW50IGVsZW1lbnRDb3VudCA9IHVuaWZvcm0uZWxlbWVudENvdW50KCk7CisKKyAgICAv
LyBTYW1wbGVycyBhcmVuJ3QgInJlYWwiIHVuaWZvcm1zLCBzbyB0aGV5IGRvbid0IGNvdW50IHRv
d2FyZHMgcmVnaXN0ZXIgdXNhZ2UuCisgICAgLy8gTGlrZXdpc2UsIGRvbid0IGNvdW50ICJyZWFs
IiB1bmlmb3JtcyB0b3dhcmRzIHNhbXBsZXIgY291bnQuCisgICAgdmVjdG9yQW5kU2FtcGxlckNv
dW50LnZlY3RvckNvdW50ID0KKyAgICAgICAgKGlzU2FtcGxlciA/IDAgOiAoVmFyaWFibGVSZWdp
c3RlckNvdW50KHVuaWZvcm0udHlwZSkgKiBlbGVtZW50Q291bnQpKTsKKyAgICB2ZWN0b3JBbmRT
YW1wbGVyQ291bnQuc2FtcGxlckNvdW50ID0gKGlzU2FtcGxlciA/IGVsZW1lbnRDb3VudCA6IDAp
OworCisgICAgaWYgKCpsb2NhdGlvbiAhPSAtMSkKKyAgICB7CisgICAgICAgICpsb2NhdGlvbiAr
PSBlbGVtZW50Q291bnQ7CisgICAgfQorCisgICAgcmV0dXJuIHZlY3RvckFuZFNhbXBsZXJDb3Vu
dDsKK30KKworfSAgLy8gbmFtZXNwYWNlIGdsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvVW5pZm9ybUxpbmtlci5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL1VuaWZvcm1MaW5rZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uODY5ZGE1MmNlNDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVW5pZm9ybUxpbmtlci5oCkBAIC0wLDAgKzEs
OTEgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTcgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBVbmlmb3JtTGlua2VyLmg6IGltcGxlbWVudHMgbGlu
ay10aW1lIGNoZWNrcyBmb3IgZGVmYXVsdCBibG9jayB1bmlmb3JtcywgYW5kIGdlbmVyYXRlcyB1
bmlmb3JtCisvLyBsb2NhdGlvbnMuIFBvcHVsYXRlcyBkYXRhIHN0cnVjdHVyZXMgcmVsYXRlZCB0
byB1bmlmb3JtcyBzbyB0aGF0IHRoZXkgY2FuIGJlIHN0b3JlZCBpbiBwcm9ncmFtCisvLyBzdGF0
ZS4KKworI2lmbmRlZiBMSUJBTkdMRV9VTklGT1JNTElOS0VSX0hfCisjZGVmaW5lIExJQkFOR0xF
X1VOSUZPUk1MSU5LRVJfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIKKyNpbmNs
dWRlICJsaWJBTkdMRS9Vbmlmb3JtLmgiCisKK25hbWVzcGFjZSBnbAoreworCitjbGFzcyBVbmlm
b3JtTGlua2VyCit7CisgIHB1YmxpYzoKKyAgICBVbmlmb3JtTGlua2VyKGNvbnN0IFByb2dyYW1T
dGF0ZSAmc3RhdGUpOworCisgICAgYm9vbCBsaW5rKEluZm9Mb2cgJmluZm9Mb2csIGNvbnN0IENh
cHMgJmNhcHMsIGNvbnN0IFByb2dyYW06OkJpbmRpbmdzICZ1bmlmb3JtTG9jYXRpb25CaW5kaW5n
cyk7CisKKyAgICB2b2lkIGdldFJlc3VsdHMoc3RkOjp2ZWN0b3I8TGlua2VkVW5pZm9ybT4gKnVu
aWZvcm1zLAorICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxWYXJpYWJsZUxvY2F0aW9u
PiAqdW5pZm9ybUxvY2F0aW9ucyk7CisKKyAgcHJpdmF0ZToKKyAgICBzdHJ1Y3QgVmVjdG9yQW5k
U2FtcGxlckNvdW50CisgICAgeworICAgICAgICBWZWN0b3JBbmRTYW1wbGVyQ291bnQoKSA6IHZl
Y3RvckNvdW50KDApLCBzYW1wbGVyQ291bnQoMCkge30KKyAgICAgICAgVmVjdG9yQW5kU2FtcGxl
ckNvdW50KGNvbnN0IFZlY3RvckFuZFNhbXBsZXJDb3VudCAmb3RoZXIpID0gZGVmYXVsdDsKKyAg
ICAgICAgVmVjdG9yQW5kU2FtcGxlckNvdW50ICZvcGVyYXRvcj0oY29uc3QgVmVjdG9yQW5kU2Ft
cGxlckNvdW50ICZvdGhlcikgPSBkZWZhdWx0OworCisgICAgICAgIFZlY3RvckFuZFNhbXBsZXJD
b3VudCAmb3BlcmF0b3IrPShjb25zdCBWZWN0b3JBbmRTYW1wbGVyQ291bnQgJm90aGVyKQorICAg
ICAgICB7CisgICAgICAgICAgICB2ZWN0b3JDb3VudCArPSBvdGhlci52ZWN0b3JDb3VudDsKKyAg
ICAgICAgICAgIHNhbXBsZXJDb3VudCArPSBvdGhlci5zYW1wbGVyQ291bnQ7CisgICAgICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBpbnQgdmVjdG9y
Q291bnQ7CisgICAgICAgIHVuc2lnbmVkIGludCBzYW1wbGVyQ291bnQ7CisgICAgfTsKKworICAg
IGJvb2wgdmFsaWRhdGVWZXJ0ZXhBbmRGcmFnbWVudFVuaWZvcm1zKEluZm9Mb2cgJmluZm9Mb2cp
IGNvbnN0OworCisgICAgc3RhdGljIGJvb2wgbGlua1ZhbGlkYXRlVW5pZm9ybXMoSW5mb0xvZyAm
aW5mb0xvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyAmdW5pZm9ybU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc2g6OlVuaWZvcm0gJnZlcnRleFVuaWZvcm0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc2g6OlVuaWZvcm0gJmZyYWdtZW50VW5pZm9ybSk7CisK
KyAgICBib29sIGZsYXR0ZW5Vbmlmb3Jtc0FuZENoZWNrQ2Fwc0ZvclNoYWRlcihjb25zdCBTaGFk
ZXIgJnNoYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbWF4VW5pZm9ybUNvbXBvbmVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1heFRleHR1cmVJbWFnZVVuaXRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZjb21wb25lbnRzRXJyb3JNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzYW1wbGVyRXJyb3JNZXNzYWdlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9y
PExpbmtlZFVuaWZvcm0+ICZzYW1wbGVyVW5pZm9ybXMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSW5mb0xvZyAmaW5mb0xvZyk7CisgICAgYm9vbCBmbGF0
dGVuVW5pZm9ybXNBbmRDaGVja0NhcHMoY29uc3QgQ2FwcyAmY2FwcywgSW5mb0xvZyAmaW5mb0xv
Zyk7CisKKyAgICBWZWN0b3JBbmRTYW1wbGVyQ291bnQgZmxhdHRlblVuaWZvcm0oY29uc3Qgc2g6
OlVuaWZvcm0gJnVuaWZvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ZDo6dmVjdG9yPExpbmtlZFVuaWZvcm0+ICpzYW1wbGVyVW5pZm9ybXMpOworCisgICAg
Ly8gbWFya1N0YXRpY1VzZSBpcyBnaXZlbiBhcyBhIHNlcGFyYXRlIHBhcmFtZXRlciBiZWNhdXNl
IGl0IGlzIHRyYWNrZWQgaGVyZSBhdCBzdHJ1Y3QKKyAgICAvLyBncmFudWxhcml0eS4KKyAgICBW
ZWN0b3JBbmRTYW1wbGVyQ291bnQgZmxhdHRlblVuaWZvcm1JbXBsKGNvbnN0IHNoOjpTaGFkZXJW
YXJpYWJsZSAmdW5pZm9ybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmdWxsTmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPExpbmtlZFVuaWZvcm0+ICpzYW1w
bGVyVW5pZm9ybXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIG1hcmtTdGF0aWNVc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgYmluZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCAqbG9jYXRpb24pOworCisgICAgYm9vbCBpbmRleFVuaWZvcm1zKElu
Zm9Mb2cgJmluZm9Mb2csIGNvbnN0IFByb2dyYW06OkJpbmRpbmdzICZ1bmlmb3JtTG9jYXRpb25C
aW5kaW5ncyk7CisgICAgYm9vbCBnYXRoZXJVbmlmb3JtTG9jYXRpb25zQW5kQ2hlY2tDb25mbGlj
dHMoSW5mb0xvZyAmaW5mb0xvZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtOjpCaW5kaW5ncyAmdW5pZm9ybUxvY2F0aW9uQmlu
ZGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RkOjpzZXQ8R0x1aW50PiAqcmVzZXJ2ZWRMb2NhdGlvbnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzZXQ8R0x1aW50PiAqaWdub3JlZExv
Y2F0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnQgKm1heFVuaWZvcm1Mb2NhdGlvbik7CisgICAgdm9pZCBwcnVuZVVudXNlZFVuaWZvcm1z
KCk7CisKKyAgICBjb25zdCBQcm9ncmFtU3RhdGUgJm1TdGF0ZTsKKyAgICBzdGQ6OnZlY3RvcjxM
aW5rZWRVbmlmb3JtPiBtVW5pZm9ybXM7CisgICAgc3RkOjp2ZWN0b3I8VmFyaWFibGVMb2NhdGlv
bj4gbVVuaWZvcm1Mb2NhdGlvbnM7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgZ2wKKworI2VuZGlm
ICAvLyBMSUJBTkdMRV9VTklGT1JNTElOS0VSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZhcnlpbmdQYWNraW5nLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WYXJ5aW5nUGFja2luZy5jcHAK
c2ltaWxhcml0eSBpbmRleCA2NSUKcmVuYW1lIGZyb20gU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WYXJ5aW5nUGFja2luZy5jcHAKcmVuYW1lIHRvIFNv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WYXJ5aW5nUGFja2luZy5jcHAKaW5k
ZXggYThmZTQ2ZGVkMWYuLjI4YWZiMjIxNDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZhcnlpbmdQYWNraW5nLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmFyeWluZ1BhY2tpbmcuY3Bw
CkBAIC00LDQ3ICs0LDIyIEBACiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KIC8v
IFZhcnlpbmdQYWNraW5nOgotLy8gICBDbGFzcyB3aGljaCBkZXNjcmliZXMgYSBtYXBwaW5nIGZy
b20gdmFyeWluZ3MgdG8gcmVnaXN0ZXJzIGluIEQzRAotLy8gICBmb3IgbGlua2luZyBiZXR3ZWVu
IHNoYWRlciBzdGFnZXMuCisvLyAgIENsYXNzIHdoaWNoIGRlc2NyaWJlcyBhIG1hcHBpbmcgZnJv
bSB2YXJ5aW5ncyB0byByZWdpc3RlcnMsIGFjY29yZGluZworLy8gICB0byB0aGUgc3BlYywgb3Ig
dXNpbmcgY3VzdG9tIHBhY2tpbmcgYWxnb3JpdGhtcy4gV2UgYWxzbyBrZWVwIGEgcmVnaXN0ZXIK
Ky8vICAgYWxsb2NhdGlvbiBsaXN0IGZvciB0aGUgRDNEIHJlbmRlcmVyLgogLy8KIAotI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9WYXJ5aW5nUGFja2luZy5oIgorI2luY2x1ZGUgImxp
YkFOR0xFL1ZhcnlpbmdQYWNraW5nLmgiCiAKICNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgi
Ci0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9ibG9ja2xheW91dEhMU0wuaCIKLSNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvRHluYW1pY0hMU0wuaCIKLSNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dy
YW0uaCIKIAotbmFtZXNwYWNlIHJ4CituYW1lc3BhY2UgZ2wKIHsKIAotLy8gSW1wbGVtZW50YXRp
b24gb2YgVmFyeWluZ1BhY2tpbmc6OkJ1aWx0aW5WYXJ5aW5nCi1WYXJ5aW5nUGFja2luZzo6QnVp
bHRpblZhcnlpbmc6OkJ1aWx0aW5WYXJ5aW5nKCkgOiBlbmFibGVkKGZhbHNlKSwgaW5kZXgoMCks
IHN5c3RlbVZhbHVlKGZhbHNlKQotewotfQotCi1zdGQ6OnN0cmluZyBWYXJ5aW5nUGFja2luZzo6
QnVpbHRpblZhcnlpbmc6OnN0cigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChzeXN0ZW1WYWx1ZSA/
IHNlbWFudGljIDogKHNlbWFudGljICsgU3RyKGluZGV4KSkpOwotfQotCi12b2lkIFZhcnlpbmdQ
YWNraW5nOjpCdWlsdGluVmFyeWluZzo6ZW5hYmxlU3lzdGVtKGNvbnN0IHN0ZDo6c3RyaW5nICZz
eXN0ZW1WYWx1ZVNlbWFudGljKQotewotICAgIGVuYWJsZWQgICAgID0gdHJ1ZTsKLSAgICBzZW1h
bnRpYyAgICA9IHN5c3RlbVZhbHVlU2VtYW50aWM7Ci0gICAgc3lzdGVtVmFsdWUgPSB0cnVlOwot
fQotCi12b2lkIFZhcnlpbmdQYWNraW5nOjpCdWlsdGluVmFyeWluZzo6ZW5hYmxlKGNvbnN0IHN0
ZDo6c3RyaW5nICZzZW1hbnRpY1ZhbCwgdW5zaWduZWQgaW50IGluZGV4VmFsKQotewotICAgIGVu
YWJsZWQgID0gdHJ1ZTsKLSAgICBzZW1hbnRpYyA9IHNlbWFudGljVmFsOwotICAgIGluZGV4ICAg
ID0gaW5kZXhWYWw7Ci19Ci0KIC8vIEltcGxlbWVudGF0aW9uIG9mIFZhcnlpbmdQYWNraW5nCi1W
YXJ5aW5nUGFja2luZzo6VmFyeWluZ1BhY2tpbmcoR0x1aW50IG1heFZhcnlpbmdWZWN0b3JzKQot
ICAgIDogbVJlZ2lzdGVyTWFwKG1heFZhcnlpbmdWZWN0b3JzKSwgbUJ1aWx0aW5JbmZvKFNIQURF
Ul9UWVBFX01BWCkKK1ZhcnlpbmdQYWNraW5nOjpWYXJ5aW5nUGFja2luZyhHTHVpbnQgbWF4VmFy
eWluZ1ZlY3RvcnMsIFBhY2tNb2RlIHBhY2tNb2RlKQorICAgIDogbVJlZ2lzdGVyTWFwKG1heFZh
cnlpbmdWZWN0b3JzKSwgbVBhY2tNb2RlKHBhY2tNb2RlKQogewogfQogCkBAIC01NCwyNSArMjks
MzUgQEAgVmFyeWluZ1BhY2tpbmc6OlZhcnlpbmdQYWNraW5nKEdMdWludCBtYXhWYXJ5aW5nVmVj
dG9ycykKIC8vIFJldHVybnMgZmFsc2UgaWYgdW5zdWNjZXNzZnVsLgogYm9vbCBWYXJ5aW5nUGFj
a2luZzo6cGFja1ZhcnlpbmcoY29uc3QgUGFja2VkVmFyeWluZyAmcGFja2VkVmFyeWluZykKIHsK
LSAgICB1bnNpZ25lZCBpbnQgdmFyeWluZ1Jvd3MgICAgPSAwOwotICAgIHVuc2lnbmVkIGludCB2
YXJ5aW5nQ29sdW1ucyA9IDA7Ci0KICAgICBjb25zdCBhdXRvICZ2YXJ5aW5nID0gKnBhY2tlZFZh
cnlpbmcudmFyeWluZzsKIAogICAgIC8vICJOb24gLSBzcXVhcmUgbWF0cmljZXMgb2YgdHlwZSBt
YXRDeFIgY29uc3VtZSB0aGUgc2FtZSBzcGFjZSBhcyBhIHNxdWFyZSBtYXRyaXggb2YgdHlwZSBt
YXROCi0gICAgLy8gd2hlcmUgTiBpcyB0aGUgZ3JlYXRlciBvZiBDIGFuZCBSLlZhcmlhYmxlcyBv
ZiB0eXBlIG1hdDIgb2NjdXBpZXMgMiBjb21wbGV0ZSByb3dzLiIKKyAgICAvLyB3aGVyZSBOIGlz
IHRoZSBncmVhdGVyIG9mIEMgYW5kIFIuIgogICAgIC8vIEhlcmUgd2UgYXJlIGEgYml0IG1vcmUg
Y29uc2VydmF0aXZlIGFuZCBhbGxvdyBwYWNraW5nIG5vbi1zcXVhcmUgbWF0cmljZXMgbW9yZSB0
aWdodGx5LgogICAgIC8vIE1ha2Ugc3VyZSB3ZSB1c2UgdHJhbnNwb3NlZCBtYXRyaXggdHlwZXMg
dG8gY291bnQgcmVnaXN0ZXJzIGNvcnJlY3RseS4KICAgICBBU1NFUlQoIXZhcnlpbmcuaXNTdHJ1
Y3QoKSk7Ci0gICAgR0xlbnVtIHRyYW5zcG9zZWRUeXBlID0gZ2w6OlRyYW5zcG9zZU1hdHJpeFR5
cGUodmFyeWluZy50eXBlKTsKLSAgICB2YXJ5aW5nUm93cyAgICAgICAgICAgPSBnbDo6VmFyaWFi
bGVSb3dDb3VudCh0cmFuc3Bvc2VkVHlwZSk7Ci0gICAgdmFyeWluZ0NvbHVtbnMgICAgICAgID0g
Z2w6OlZhcmlhYmxlQ29sdW1uQ291bnQodHJhbnNwb3NlZFR5cGUpOworICAgIEdMZW51bSB0cmFu
c3Bvc2VkVHlwZSAgICAgICA9IGdsOjpUcmFuc3Bvc2VNYXRyaXhUeXBlKHZhcnlpbmcudHlwZSk7
CisgICAgdW5zaWduZWQgaW50IHZhcnlpbmdSb3dzICAgID0gZ2w6OlZhcmlhYmxlUm93Q291bnQo
dHJhbnNwb3NlZFR5cGUpOworICAgIHVuc2lnbmVkIGludCB2YXJ5aW5nQ29sdW1ucyA9IGdsOjpW
YXJpYWJsZUNvbHVtbkNvdW50KHRyYW5zcG9zZWRUeXBlKTsKKworICAgIC8vICJWYXJpYWJsZXMg
b2YgdHlwZSBtYXQyIG9jY3VwaWVzIDIgY29tcGxldGUgcm93cy4iCisgICAgLy8gRm9yIG5vbi1X
ZWJHTCBjb250ZXh0cywgd2UgYWxsb3cgbWF0MiB0byBvY2N1cHkgb25seSB0d28gY29sdW1ucyBw
ZXIgcm93LgorICAgIGlmIChtUGFja01vZGUgPT0gUGFja01vZGU6OldFQkdMX1NUUklDVCAmJiB2
YXJ5aW5nLnR5cGUgPT0gR0xfRkxPQVRfTUFUMikKKyAgICB7CisgICAgICAgIHZhcnlpbmdDb2x1
bW5zID0gNDsKKyAgICB9CiAKICAgICAvLyAiQXJyYXlzIG9mIHNpemUgTiBhcmUgYXNzdW1lZCB0
byB0YWtlIE4gdGltZXMgdGhlIHNpemUgb2YgdGhlIGJhc2UgdHlwZSIKLSAgICB2YXJ5aW5nUm93
cyAqPSB2YXJ5aW5nLmVsZW1lbnRDb3VudCgpOworICAgIHZhcnlpbmdSb3dzICo9IChwYWNrZWRW
YXJ5aW5nLmlzQXJyYXlFbGVtZW50KCkgPyAxIDogdmFyeWluZy5lbGVtZW50Q291bnQoKSk7CiAK
ICAgICB1bnNpZ25lZCBpbnQgbWF4VmFyeWluZ1ZlY3RvcnMgPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBpbnQ+KG1SZWdpc3Rlck1hcC5zaXplKCkpOwogCisgICAgLy8gRmFpbCBpZiB3ZSBhcmUgcGFj
a2luZyBhIHNpbmdsZSBvdmVyLWxhcmdlIHZhcnlpbmcuCisgICAgaWYgKHZhcnlpbmdSb3dzID4g
bWF4VmFyeWluZ1ZlY3RvcnMpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CiAgICAgLy8gIkZvciAyLCAzIGFuZCA0IGNvbXBvbmVudCB2YXJpYWJsZXMgcGFja2luZyBpcyBz
dGFydGVkIHVzaW5nIHRoZSAxc3QgY29sdW1uIG9mIHRoZSAxc3Qgcm93LgogICAgIC8vIFZhcmlh
YmxlcyBhcmUgdGhlbiBhbGxvY2F0ZWQgdG8gc3VjY2Vzc2l2ZSByb3dzLCBhbGlnbmluZyB0aGVt
IHRvIHRoZSAxc3QgY29sdW1uLiIKICAgICBpZiAodmFyeWluZ0NvbHVtbnMgPj0gMiAmJiB2YXJ5
aW5nQ29sdW1ucyA8PSA0KQpAQCAtMTU3LDkgKzE0MiwxNSBAQCBib29sIFZhcnlpbmdQYWNraW5n
OjpwYWNrVmFyeWluZyhjb25zdCBQYWNrZWRWYXJ5aW5nICZwYWNrZWRWYXJ5aW5nKQogICAgICAg
ICAgICAgICAgICAgICByZWdpc3RlckluZm8ucGFja2VkVmFyeWluZyAgICAgPSAmcGFja2VkVmFy
eWluZzsKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJJbmZvLnJlZ2lzdGVyUm93ICAgICAg
ID0gcm93ICsgYXJyYXlJbmRleDsKICAgICAgICAgICAgICAgICAgICAgcmVnaXN0ZXJJbmZvLnJl
Z2lzdGVyQ29sdW1uICAgID0gYmVzdENvbHVtbjsKLSAgICAgICAgICAgICAgICAgICAgcmVnaXN0
ZXJJbmZvLnZhcnlpbmdBcnJheUluZGV4ID0gYXJyYXlJbmRleDsKLSAgICAgICAgICAgICAgICAg
ICAgcmVnaXN0ZXJJbmZvLnZhcnlpbmdSb3dJbmRleCA9IDA7Ci0gICAgICAgICAgICAgICAgICAg
IG1SZWdpc3Rlckxpc3QucHVzaF9iYWNrKHJlZ2lzdGVySW5mbyk7CisgICAgICAgICAgICAgICAg
ICAgIHJlZ2lzdGVySW5mby52YXJ5aW5nQXJyYXlJbmRleCA9CisgICAgICAgICAgICAgICAgICAg
ICAgICAocGFja2VkVmFyeWluZy5pc0FycmF5RWxlbWVudCgpID8gcGFja2VkVmFyeWluZy5hcnJh
eUluZGV4IDogYXJyYXlJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVySW5mby52
YXJ5aW5nUm93SW5kZXggICA9IDA7CisgICAgICAgICAgICAgICAgICAgIC8vIERvIG5vdCByZWNv
cmQgcmVnaXN0ZXIgaW5mbyBmb3IgYnVpbHRpbnMuCisgICAgICAgICAgICAgICAgICAgIC8vIFRP
RE8oam1hZGlsbCk6IENsZWFuIHRoaXMgdXAuCisgICAgICAgICAgICAgICAgICAgIGlmICghcGFj
a2VkVmFyeWluZy52YXJ5aW5nLT5pc0J1aWx0SW4oKSkKKyAgICAgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICAgICAgbVJlZ2lzdGVyTGlzdC5wdXNoX2JhY2socmVnaXN0ZXJJ
bmZvKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBtUmVnaXN0
ZXJNYXBbcm93ICsgYXJyYXlJbmRleF1bYmVzdENvbHVtbl0gPSB0cnVlOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIxMSwxMiArMjAyLDIxIEBAIHZvaWQg
VmFyeWluZ1BhY2tpbmc6Omluc2VydCh1bnNpZ25lZCBpbnQgcmVnaXN0ZXJSb3csCiAKICAgICBm
b3IgKHVuc2lnbmVkIGludCBhcnJheUVsZW1lbnQgPSAwOyBhcnJheUVsZW1lbnQgPCB2YXJ5aW5n
LmVsZW1lbnRDb3VudCgpOyArK2FycmF5RWxlbWVudCkKICAgICB7CisgICAgICAgIGlmIChwYWNr
ZWRWYXJ5aW5nLmlzQXJyYXlFbGVtZW50KCkgJiYgYXJyYXlFbGVtZW50ICE9IHBhY2tlZFZhcnlp
bmcuYXJyYXlJbmRleCkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgdmFyeWluZ1JvdyA9IDA7IHZhcnlpbmdSb3cg
PCB2YXJ5aW5nUm93czsgKyt2YXJ5aW5nUm93KQogICAgICAgICB7Ci0gICAgICAgICAgICByZWdp
c3RlckluZm8ucmVnaXN0ZXJSb3cgICAgICAgPSByZWdpc3RlclJvdyArIChhcnJheUVsZW1lbnQg
KiB2YXJ5aW5nUm93cykgKyB2YXJ5aW5nUm93OwotICAgICAgICAgICAgcmVnaXN0ZXJJbmZvLnZh
cnlpbmdSb3dJbmRleCAgID0gdmFyeWluZ1JvdzsKKyAgICAgICAgICAgIHJlZ2lzdGVySW5mby5y
ZWdpc3RlclJvdyAgICAgPSByZWdpc3RlclJvdyArIChhcnJheUVsZW1lbnQgKiB2YXJ5aW5nUm93
cykgKyB2YXJ5aW5nUm93OworICAgICAgICAgICAgcmVnaXN0ZXJJbmZvLnZhcnlpbmdSb3dJbmRl
eCA9IHZhcnlpbmdSb3c7CiAgICAgICAgICAgICByZWdpc3RlckluZm8udmFyeWluZ0FycmF5SW5k
ZXggPSBhcnJheUVsZW1lbnQ7Ci0gICAgICAgICAgICBtUmVnaXN0ZXJMaXN0LnB1c2hfYmFjayhy
ZWdpc3RlckluZm8pOworICAgICAgICAgICAgLy8gRG8gbm90IHJlY29yZCByZWdpc3RlciBpbmZv
IGZvciBidWlsdGlucy4KKyAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IENsZWFuIHRoaXMg
dXAuCisgICAgICAgICAgICBpZiAoIXBhY2tlZFZhcnlpbmcudmFyeWluZy0+aXNCdWlsdEluKCkp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbVJlZ2lzdGVyTGlzdC5wdXNoX2JhY2so
cmVnaXN0ZXJJbmZvKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgY29sdW1uSW5kZXggPSAwOyBjb2x1bW5JbmRleCA8IHZhcnlpbmdDb2x1bW5zOyArK2Nv
bHVtbkluZGV4KQogICAgICAgICAgICAgewpAQCAtMjI3LDkgKzIyNyw5IEBAIHZvaWQgVmFyeWlu
Z1BhY2tpbmc6Omluc2VydCh1bnNpZ25lZCBpbnQgcmVnaXN0ZXJSb3csCiB9CiAKIC8vIFNlZSBj
b21tZW50IG9uIHBhY2tWYXJ5aW5nLgotYm9vbCBWYXJ5aW5nUGFja2luZzo6cGFja1Zhcnlpbmdz
KGdsOjpJbmZvTG9nICZpbmZvTG9nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6dmVjdG9yPFBhY2tlZFZhcnlpbmc+ICZwYWNrZWRWYXJ5aW5ncywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmlu
Zz4gJnRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MpCitib29sIFZhcnlpbmdQYWNraW5nOjpwYWNr
VXNlclZhcnlpbmdzKGdsOjpJbmZvTG9nICZpbmZvTG9nLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxQYWNrZWRWYXJ5aW5nPiAmcGFja2Vk
VmFyeWluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiAmdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncykKIHsKICAg
ICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gdW5pcXVlVmFyeWluZ05hbWVzOwogCkBAIC0yNDAsMjEg
KzI0MCwyMSBAQCBib29sIFZhcnlpbmdQYWNraW5nOjpwYWNrVmFyeWluZ3MoZ2w6OkluZm9Mb2cg
JmluZm9Mb2csCiAgICAgICAgIGNvbnN0IGF1dG8gJnZhcnlpbmcgPSAqcGFja2VkVmFyeWluZy52
YXJ5aW5nOwogCiAgICAgICAgIC8vIERvIG5vdCBhc3NpZ24gcmVnaXN0ZXJzIHRvIGJ1aWx0LWlu
IG9yIHVucmVmZXJlbmNlZCB2YXJ5aW5ncwotICAgICAgICBpZiAodmFyeWluZy5pc0J1aWx0SW4o
KSB8fCAoIXZhcnlpbmcuc3RhdGljVXNlICYmICFwYWNrZWRWYXJ5aW5nLmlzU3RydWN0RmllbGQo
KSkpCisgICAgICAgIGlmICghdmFyeWluZy5zdGF0aWNVc2UgJiYgIXBhY2tlZFZhcnlpbmcuaXNT
dHJ1Y3RGaWVsZCgpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQogCiAgICAgICAgIEFTU0VSVCghdmFyeWluZy5pc1N0cnVjdCgpKTsKLSAgICAgICAgQVNTRVJU
KHVuaXF1ZVZhcnlpbmdOYW1lcy5jb3VudCh2YXJ5aW5nLm5hbWUpID09IDApOworICAgICAgICBB
U1NFUlQodW5pcXVlVmFyeWluZ05hbWVzLmNvdW50KHBhY2tlZFZhcnlpbmcubmFtZVdpdGhBcnJh
eUluZGV4KCkpID09IDApOwogCiAgICAgICAgIGlmIChwYWNrVmFyeWluZyhwYWNrZWRWYXJ5aW5n
KSkKICAgICAgICAgewotICAgICAgICAgICAgdW5pcXVlVmFyeWluZ05hbWVzLmluc2VydCh2YXJ5
aW5nLm5hbWUpOworICAgICAgICAgICAgdW5pcXVlVmFyeWluZ05hbWVzLmluc2VydChwYWNrZWRW
YXJ5aW5nLm5hbWVXaXRoQXJyYXlJbmRleCgpKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGluZm9Mb2cgPDwgIkNvdWxkIG5vdCBwYWNrIHZhcnlpbmcg
IiA8PCB2YXJ5aW5nLm5hbWU7CisgICAgICAgICAgICBpbmZvTG9nIDw8ICJDb3VsZCBub3QgcGFj
ayB2YXJ5aW5nICIgPDwgcGFja2VkVmFyeWluZy5uYW1lV2l0aEFycmF5SW5kZXgoKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTI3MSwyMiArMjcxLDI1
IEBAIGJvb2wgVmFyeWluZ1BhY2tpbmc6OnBhY2tWYXJ5aW5ncyhnbDo6SW5mb0xvZyAmaW5mb0xv
ZywKICAgICAgICAgZm9yIChjb25zdCBQYWNrZWRWYXJ5aW5nICZwYWNrZWRWYXJ5aW5nIDogcGFj
a2VkVmFyeWluZ3MpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnN0IGF1dG8gJnZhcnlpbmcg
PSAqcGFja2VkVmFyeWluZy52YXJ5aW5nOworICAgICAgICAgICAgc2l6ZV90IHN1YnNjcmlwdCAg
ICAgPSBHTF9JTlZBTElEX0lOREVYOworICAgICAgICAgICAgc3RkOjpzdHJpbmcgYmFzZU5hbWUg
PSBQYXJzZVJlc291cmNlTmFtZSh0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lLCAmc3Vic2Ny
aXB0KTsKIAogICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRyYW5zZm9ybSBmZWVkYmFjayB2YXJ5
aW5ncyBhcmVuJ3Qgb3B0aW1pemVkIG91dC4KLSAgICAgICAgICAgIGlmICh1bmlxdWVWYXJ5aW5n
TmFtZXMuY291bnQodHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTmFtZSkgPiAwKQorICAgICAgICAg
ICAgaWYgKHVuaXF1ZVZhcnlpbmdOYW1lcy5jb3VudCh0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdO
YW1lKSA+IDAgfHwKKyAgICAgICAgICAgICAgICB1bmlxdWVWYXJ5aW5nTmFtZXMuY291bnQoYmFz
ZU5hbWUpID4gMCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlm
ICh0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdOYW1lID09IHZhcnlpbmcubmFtZSkKKyAgICAgICAg
ICAgIGlmIChiYXNlTmFtZSA9PSB2YXJ5aW5nLm5hbWUpCiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgaWYgKCFwYWNrVmFyeWluZyhwYWNrZWRWYXJ5aW5nKSkKICAgICAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgICAgIGluZm9Mb2cgPDwgIkNvdWxkIG5vdCBwYWNrIHZhcnlp
bmcgIiA8PCB2YXJ5aW5nLm5hbWU7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgICAgICB9Ci0KKyAgICAgICAgICAgICAgICB1bmlxdWVWYXJ5aW5nTmFtZXMu
aW5zZXJ0KHBhY2tlZFZhcnlpbmcubmFtZVdpdGhBcnJheUluZGV4KCkpOwogICAgICAgICAgICAg
ICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
QEAgLTMyNSw3NyArMzI4LDcgQEAgdW5zaWduZWQgaW50IFZhcnlpbmdQYWNraW5nOjpnZXRSZWdp
c3RlckNvdW50KCkgY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtQnVpbHRpbklu
Zm9bU0hBREVSX1BJWEVMXS5nbEZyYWdDb29yZC5lbmFibGVkKQotICAgIHsKLSAgICAgICAgKytj
b3VudDsKLSAgICB9Ci0KLSAgICBpZiAobUJ1aWx0aW5JbmZvW1NIQURFUl9QSVhFTF0uZ2xQb2lu
dENvb3JkLmVuYWJsZWQpCi0gICAgewotICAgICAgICArK2NvdW50OwotICAgIH0KLQogICAgIHJl
dHVybiBjb3VudDsKIH0KIAotdm9pZCBWYXJ5aW5nUGFja2luZzo6ZW5hYmxlQnVpbHRpbnMoU2hh
ZGVyVHlwZSBzaGFkZXJUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgUHJvZ3JhbUQzRE1ldGFkYXRhICZwcm9ncmFtTWV0YWRhdGEpCi17Ci0gICAgaW50IG1h
am9yU2hhZGVyTW9kZWwgPSBwcm9ncmFtTWV0YWRhdGEuZ2V0UmVuZGVyZXJNYWpvclNoYWRlck1v
ZGVsKCk7Ci0gICAgYm9vbCBwb3NpdGlvbiAgICAgICAgPSBwcm9ncmFtTWV0YWRhdGEudXNlc1Ry
YW5zZm9ybUZlZWRiYWNrR0xQb3NpdGlvbigpOwotICAgIGJvb2wgZnJhZ0Nvb3JkICAgICAgID0g
cHJvZ3JhbU1ldGFkYXRhLnVzZXNGcmFnQ29vcmQoKTsKLSAgICBib29sIHBvaW50Q29vcmQgPSBz
aGFkZXJUeXBlID09IFNIQURFUl9WRVJURVggPyBwcm9ncmFtTWV0YWRhdGEuYWRkc1BvaW50Q29v
cmRUb1ZlcnRleFNoYWRlcigpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDogcHJvZ3JhbU1ldGFkYXRhLnVzZXNQb2ludENvb3JkKCk7Ci0gICAgYm9v
bCBwb2ludFNpemUgICAgICAgICAgICAgICAgICA9IHByb2dyYW1NZXRhZGF0YS51c2VzU3lzdGVt
VmFsdWVQb2ludFNpemUoKTsKLSAgICBib29sIGhsc2w0ICAgICAgICAgICAgICAgICAgICAgID0g
KG1ham9yU2hhZGVyTW9kZWwgPj0gNCk7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnVzZXJTZW1h
bnRpYyA9IEdldFZhcnlpbmdTZW1hbnRpYyhtYWpvclNoYWRlck1vZGVsLCBwb2ludFNpemUpOwot
Ci0gICAgdW5zaWduZWQgaW50IHJlc2VydmVkU2VtYW50aWNJbmRleCA9IGdldE1heFNlbWFudGlj
SW5kZXgoKTsKLQotICAgIEJ1aWx0aW5JbmZvICpidWlsdGlucyA9ICZtQnVpbHRpbkluZm9bc2hh
ZGVyVHlwZV07Ci0KLSAgICBpZiAoaGxzbDQpCi0gICAgewotICAgICAgICBidWlsdGlucy0+ZHhQ
b3NpdGlvbi5lbmFibGVTeXN0ZW0oIlNWX1Bvc2l0aW9uIik7Ci0gICAgfQotICAgIGVsc2UgaWYg
KHNoYWRlclR5cGUgPT0gU0hBREVSX1BJWEVMKQotICAgIHsKLSAgICAgICAgYnVpbHRpbnMtPmR4
UG9zaXRpb24uZW5hYmxlU3lzdGVtKCJWUE9TIik7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0g
ICAgICAgIGJ1aWx0aW5zLT5keFBvc2l0aW9uLmVuYWJsZVN5c3RlbSgiUE9TSVRJT04iKTsKLSAg
ICB9Ci0KLSAgICBpZiAocG9zaXRpb24pCi0gICAgewotICAgICAgICBidWlsdGlucy0+Z2xQb3Np
dGlvbi5lbmFibGUodXNlclNlbWFudGljLCByZXNlcnZlZFNlbWFudGljSW5kZXgrKyk7Ci0gICAg
fQotCi0gICAgaWYgKGZyYWdDb29yZCkKLSAgICB7Ci0gICAgICAgIGJ1aWx0aW5zLT5nbEZyYWdD
b29yZC5lbmFibGUodXNlclNlbWFudGljLCByZXNlcnZlZFNlbWFudGljSW5kZXgrKyk7Ci0gICAg
fQotCi0gICAgaWYgKHBvaW50Q29vcmQpCi0gICAgewotICAgICAgICAvLyBTTTMgcmVzZXJ2ZXMg
dGhlIFRFWENPT1JEIHNlbWFudGljIGZvciBwb2ludCBzcHJpdGUgdGV4Y29vcmRzIChnbF9Qb2lu
dENvb3JkKQotICAgICAgICAvLyBJbiBEM0QxMSB3ZSBtYW51YWxseSBjb21wdXRlIGdsX1BvaW50
Q29vcmQgaW4gdGhlIEdTLgotICAgICAgICBpZiAoaGxzbDQpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGJ1aWx0aW5zLT5nbFBvaW50Q29vcmQuZW5hYmxlKHVzZXJTZW1hbnRpYywgcmVzZXJ2ZWRT
ZW1hbnRpY0luZGV4KyspOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAg
ICAgICAgICAgYnVpbHRpbnMtPmdsUG9pbnRDb29yZC5lbmFibGUoIlRFWENPT1JEIiwgMCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBTcGVjaWFsIGNhc2U6IGRvIG5vdCBpbmNsdWRlIFBT
SVpFIHNlbWFudGljIGluIEhMU0wgMyBwaXhlbCBzaGFkZXJzCi0gICAgaWYgKHBvaW50U2l6ZSAm
JiAoc2hhZGVyVHlwZSAhPSBTSEFERVJfUElYRUwgfHwgaGxzbDQpKQotICAgIHsKLSAgICAgICAg
YnVpbHRpbnMtPmdsUG9pbnRTaXplLmVuYWJsZVN5c3RlbSgiUFNJWkUiKTsKLSAgICB9Ci19Ci0K
IH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WYXJ5aW5nUGFja2luZy5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZhcnlpbmdQYWNraW5nLmgKc2ltaWxhcml0eSBpbmRl
eCA2OCUKcmVuYW1lIGZyb20gU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9WYXJ5aW5nUGFja2luZy5oCnJlbmFtZSB0byBTb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvVmFyeWluZ1BhY2tpbmcuaAppbmRleCBjYTQ2NDBiMDAwMi4uNmIy
ZjA0MzU1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvVmFyeWluZ1BhY2tpbmcuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvVmFyeWluZ1BhY2tpbmcuaApAQCAtNCwyMyArNCwyNyBAQAogLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCiAvLyBWYXJ5aW5nUGFja2luZzoKLS8vICAg
Q2xhc3Mgd2hpY2ggZGVzY3JpYmVzIGEgbWFwcGluZyBmcm9tIHZhcnlpbmdzIHRvIHJlZ2lzdGVy
cyBpbiBEM0QKLS8vICAgZm9yIGxpbmtpbmcgYmV0d2VlbiBzaGFkZXIgc3RhZ2VzLgorLy8gICBD
bGFzcyB3aGljaCBkZXNjcmliZXMgYSBtYXBwaW5nIGZyb20gdmFyeWluZ3MgdG8gcmVnaXN0ZXJz
LCBhY2NvcmRpbmcKKy8vICAgdG8gdGhlIHNwZWMsIG9yIHVzaW5nIGN1c3RvbSBwYWNraW5nIGFs
Z29yaXRobXMuIFdlIGFsc28ga2VlcCBhIHJlZ2lzdGVyCisvLyAgIGFsbG9jYXRpb24gbGlzdCBm
b3IgdGhlIEQzRCByZW5kZXJlci4KIC8vCiAKLSNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfRDNE
X1ZBUllJTkdQQUNLSU5HX0hfCi0jZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9WQVJZSU5H
UEFDS0lOR19IXworI2lmbmRlZiBMSUJBTkdMRV9WQVJZSU5HUEFDS0lOR19IXworI2RlZmluZSBM
SUJBTkdMRV9WQVJZSU5HUEFDS0lOR19IXwogCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
ZDNkL1JlbmRlcmVyRDNELmgiCisjaW5jbHVkZSA8R0xTTEFORy9TaGFkZXJWYXJzLmg+CiAKLW5h
bWVzcGFjZSByeAorI2luY2x1ZGUgImFuZ2xlX2dsLmgiCisjaW5jbHVkZSAiY29tbW9uL2FuZ2xl
dXRpbHMuaCIKKworbmFtZXNwYWNlIGdsCiB7Ci1jbGFzcyBQcm9ncmFtRDNETWV0YWRhdGE7Citj
bGFzcyBJbmZvTG9nOwogCiBzdHJ1Y3QgUGFja2VkVmFyeWluZwogewogICAgIFBhY2tlZFZhcnlp
bmcoY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZ2YXJ5aW5nSW4sIHNoOjpJbnRlcnBvbGF0aW9u
VHlwZSBpbnRlcnBvbGF0aW9uSW4pCi0gICAgICAgIDogdmFyeWluZygmdmFyeWluZ0luKSwgdmVy
dGV4T25seShmYWxzZSksIGludGVycG9sYXRpb24oaW50ZXJwb2xhdGlvbkluKQorICAgICAgICA6
IFBhY2tlZFZhcnlpbmcodmFyeWluZ0luLCBpbnRlcnBvbGF0aW9uSW4sICIiKQogICAgIHsKICAg
ICB9CiAgICAgUGFja2VkVmFyeWluZyhjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgJnZhcnlpbmdJ
biwKQEAgLTI5LDEyICszMywyNiBAQCBzdHJ1Y3QgUGFja2VkVmFyeWluZwogICAgICAgICA6IHZh
cnlpbmcoJnZhcnlpbmdJbiksCiAgICAgICAgICAgdmVydGV4T25seShmYWxzZSksCiAgICAgICAg
ICAgaW50ZXJwb2xhdGlvbihpbnRlcnBvbGF0aW9uSW4pLAotICAgICAgICAgIHBhcmVudFN0cnVj
dE5hbWUocGFyZW50U3RydWN0TmFtZUluKQorICAgICAgICAgIHBhcmVudFN0cnVjdE5hbWUocGFy
ZW50U3RydWN0TmFtZUluKSwKKyAgICAgICAgICBhcnJheUluZGV4KEdMX0lOVkFMSURfSU5ERVgp
CiAgICAgewogICAgIH0KIAogICAgIGJvb2wgaXNTdHJ1Y3RGaWVsZCgpIGNvbnN0IHsgcmV0dXJu
ICFwYXJlbnRTdHJ1Y3ROYW1lLmVtcHR5KCk7IH0KIAorICAgIGJvb2wgaXNBcnJheUVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBhcnJheUluZGV4ICE9IEdMX0lOVkFMSURfSU5ERVg7IH0KKworICAg
IHN0ZDo6c3RyaW5nIG5hbWVXaXRoQXJyYXlJbmRleCgpIGNvbnN0CisgICAgeworICAgICAgICBz
dGQ6OnN0cmluZ3N0cmVhbSBmdWxsTmFtZVN0cjsKKyAgICAgICAgZnVsbE5hbWVTdHIgPDwgdmFy
eWluZy0+bmFtZTsKKyAgICAgICAgaWYgKGFycmF5SW5kZXggIT0gR0xfSU5WQUxJRF9JTkRFWCkK
KyAgICAgICAgeworICAgICAgICAgICAgZnVsbE5hbWVTdHIgPDwgIlsiIDw8IGFycmF5SW5kZXgg
PDwgIl0iOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmdWxsTmFtZVN0ci5zdHIoKTsKKyAg
ICB9CisKICAgICBjb25zdCBzaDo6U2hhZGVyVmFyaWFibGUgKnZhcnlpbmc7CiAKICAgICAvLyBU
cmFuc2Zvcm0gZmVlZGJhY2sgdmFyeWluZ3MgY2FuIGJlIG9ubHkgcmVmZXJlbmNlZCBpbiB0aGUg
VlMuCkBAIC00NSw2ICs2Myw4IEBAIHN0cnVjdCBQYWNrZWRWYXJ5aW5nCiAKICAgICAvLyBTdHJ1
Y3QgbmFtZQogICAgIHN0ZDo6c3RyaW5nIHBhcmVudFN0cnVjdE5hbWU7CisKKyAgICBHTHVpbnQg
YXJyYXlJbmRleDsKIH07CiAKIHN0cnVjdCBQYWNrZWRWYXJ5aW5nUmVnaXN0ZXIgZmluYWwKQEAg
LTk2LDE0ICsxMTYsMjQgQEAgc3RydWN0IFBhY2tlZFZhcnlpbmdSZWdpc3RlciBmaW5hbAogICAg
IHN0ZDo6c3RyaW5nIHN0cnVjdEZpZWxkTmFtZTsKIH07CiAKKy8vIFN1cHBvcnRlZCBwYWNraW5n
IG1vZGVzOgorZW51bSBjbGFzcyBQYWNrTW9kZQoreworICAgIC8vIFdlIHRyZWF0IG1hdDIgYXJy
YXlzIGFzIHRha2luZyB0d28gZnVsbCByb3dzLgorICAgIFdFQkdMX1NUUklDVCwKKworICAgIC8v
IFdlIGFsbG93IG1hdDIgdG8gdGFrZSBhIDJ4MiBjaHVuay4KKyAgICBBTkdMRV9SRUxBWEVELAor
fTsKKwogY2xhc3MgVmFyeWluZ1BhY2tpbmcgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsK
ICAgcHVibGljOgotICAgIFZhcnlpbmdQYWNraW5nKEdMdWludCBtYXhWYXJ5aW5nVmVjdG9ycyk7
CisgICAgVmFyeWluZ1BhY2tpbmcoR0x1aW50IG1heFZhcnlpbmdWZWN0b3JzLCBQYWNrTW9kZSBw
YWNrTW9kZSk7CiAKLSAgICBib29sIHBhY2tWYXJ5aW5ncyhnbDo6SW5mb0xvZyAmaW5mb0xvZywK
LSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxQYWNrZWRWYXJ5aW5nPiAm
cGFja2VkVmFyeWluZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
c3RkOjpzdHJpbmc+ICZ0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKTsKKyAgICBib29sIHBhY2tV
c2VyVmFyeWluZ3MoZ2w6OkluZm9Mb2cgJmluZm9Mb2csCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFBhY2tlZFZhcnlpbmc+ICZwYWNrZWRWYXJ5aW5ncywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+ICZ0
cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKTsKIAogICAgIHN0cnVjdCBSZWdpc3RlcgogICAgIHsK
QEAgLTEyNCwzNSArMTU0LDcgQEAgY2xhc3MgVmFyeWluZ1BhY2tpbmcgZmluYWwgOiBhbmdsZTo6
Tm9uQ29weWFibGUKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obVJl
Z2lzdGVyTGlzdC5zaXplKCkpOwogICAgIH0KICAgICB1bnNpZ25lZCBpbnQgZ2V0UmVnaXN0ZXJD
b3VudCgpIGNvbnN0OwotCi0gICAgdm9pZCBlbmFibGVCdWlsdGlucyhTaGFkZXJUeXBlIHNoYWRl
clR5cGUsIGNvbnN0IFByb2dyYW1EM0RNZXRhZGF0YSAmcHJvZ3JhbU1ldGFkYXRhKTsKLQotICAg
IHN0cnVjdCBCdWlsdGluVmFyeWluZyBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQotICAgIHsK
LSAgICAgICAgQnVpbHRpblZhcnlpbmcoKTsKLQotICAgICAgICBzdGQ6OnN0cmluZyBzdHIoKSBj
b25zdDsKLSAgICAgICAgdm9pZCBlbmFibGVTeXN0ZW0oY29uc3Qgc3RkOjpzdHJpbmcgJnN5c3Rl
bVZhbHVlU2VtYW50aWMpOwotICAgICAgICB2b2lkIGVuYWJsZShjb25zdCBzdGQ6OnN0cmluZyAm
c2VtYW50aWNWYWwsIHVuc2lnbmVkIGludCBpbmRleFZhbCk7Ci0KLSAgICAgICAgYm9vbCBlbmFi
bGVkOwotICAgICAgICBzdGQ6OnN0cmluZyBzZW1hbnRpYzsKLSAgICAgICAgdW5zaWduZWQgaW50
IGluZGV4OwotICAgICAgICBib29sIHN5c3RlbVZhbHVlOwotICAgIH07Ci0KLSAgICBzdHJ1Y3Qg
QnVpbHRpbkluZm8KLSAgICB7Ci0gICAgICAgIEJ1aWx0aW5WYXJ5aW5nIGR4UG9zaXRpb247Ci0g
ICAgICAgIEJ1aWx0aW5WYXJ5aW5nIGdsUG9zaXRpb247Ci0gICAgICAgIEJ1aWx0aW5WYXJ5aW5n
IGdsRnJhZ0Nvb3JkOwotICAgICAgICBCdWlsdGluVmFyeWluZyBnbFBvaW50Q29vcmQ7Ci0gICAg
ICAgIEJ1aWx0aW5WYXJ5aW5nIGdsUG9pbnRTaXplOwotICAgIH07Ci0KLSAgICBjb25zdCBCdWls
dGluSW5mbyAmYnVpbHRpbnMoU2hhZGVyVHlwZSBzaGFkZXJUeXBlKSBjb25zdCB7IHJldHVybiBt
QnVpbHRpbkluZm9bc2hhZGVyVHlwZV07IH0KLQotICAgIGJvb2wgdXNlc1BvaW50U2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1CdWlsdGluSW5mb1tTSEFERVJfVkVSVEVYXS5nbFBvaW50U2l6ZS5lbmFi
bGVkOyB9CisgICAgc2l6ZV90IGdldFJlZ2lzdGVyTWFwU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1S
ZWdpc3Rlck1hcC5zaXplKCk7IH0KIAogICBwcml2YXRlOgogICAgIGJvb2wgcGFja1Zhcnlpbmco
Y29uc3QgUGFja2VkVmFyeWluZyAmcGFja2VkVmFyeWluZyk7CkBAIC0xNjcsOSArMTY5LDkgQEAg
Y2xhc3MgVmFyeWluZ1BhY2tpbmcgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBzdGQ6
OnZlY3RvcjxSZWdpc3Rlcj4gbVJlZ2lzdGVyTWFwOwogICAgIHN0ZDo6dmVjdG9yPFBhY2tlZFZh
cnlpbmdSZWdpc3Rlcj4gbVJlZ2lzdGVyTGlzdDsKIAotICAgIHN0ZDo6dmVjdG9yPEJ1aWx0aW5J
bmZvPiBtQnVpbHRpbkluZm87CisgICAgUGFja01vZGUgbVBhY2tNb2RlOwogfTsKIAotfSAgLy8g
bmFtZXNwYWNlIHJ4Cit9ICAvLyBuYW1lc3BhY2UgZ2wKIAotI2VuZGlmICAvLyBMSUJBTkdMRV9S
RU5ERVJFUl9EM0RfVkFSWUlOR1BBQ0tJTkdfSF8KKyNlbmRpZiAgLy8gTElCQU5HTEVfVkFSWUlO
R1BBQ0tJTkdfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9WYXJ5aW5nUGFja2luZ191bml0dGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvVmFyeWluZ1BhY2tpbmdfdW5pdHRlc3QuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zYWVlZjgyY2JmZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WYXJ5aW5nUGFja2luZ191bml0
dGVzdC5jcHAKQEAgLTAsMCArMSwxNjAgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBWYXJ5aW5nUGFja2luZ191
bml0dGVzdC5jcHA6CisvLyAgIFRlc3RzIGZvciBBTkdMRSdzIGludGVybmFsIHZhcnlpbmcgcGFj
a2luZyBhbGdvcml0aG0uCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvVmFyeWluZ1BhY2tpbmcu
aCIKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKKyNpbmNsdWRlICJsaWJBTkdMRS9Qcm9n
cmFtLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBnbDsKKworbmFtZXNwYWNlCit7CisKK2NsYXNzIFZh
cnlpbmdQYWNraW5nVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08R0x1aW50
PgoreworICBwcm90ZWN0ZWQ6CisgICAgVmFyeWluZ1BhY2tpbmdUZXN0KCkge30KKworICAgIGJv
b2wgdGVzdFZhcnlpbmdQYWNraW5nKGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpWYXJ5aW5nPiAmc2hW
YXJ5aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYXJ5aW5nUGFja2luZyAqdmFy
eWluZ1BhY2tpbmcpCisgICAgeworICAgICAgICBzdGQ6OnZlY3RvcjxQYWNrZWRWYXJ5aW5nPiBw
YWNrZWRWYXJ5aW5nczsKKyAgICAgICAgZm9yIChjb25zdCBhdXRvICZzaFZhcnlpbmcgOiBzaFZh
cnlpbmdzKQorICAgICAgICB7CisgICAgICAgICAgICBwYWNrZWRWYXJ5aW5ncy5wdXNoX2JhY2so
UGFja2VkVmFyeWluZyhzaFZhcnlpbmcsIHNoVmFyeWluZy5pbnRlcnBvbGF0aW9uKSk7CisgICAg
ICAgIH0KKworICAgICAgICBJbmZvTG9nIGluZm9Mb2c7CisgICAgICAgIHN0ZDo6dmVjdG9yPHN0
ZDo6c3RyaW5nPiB0cmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzOworCisgICAgICAgIHJldHVybiB2
YXJ5aW5nUGFja2luZy0+cGFja1VzZXJWYXJ5aW5ncyhpbmZvTG9nLCBwYWNrZWRWYXJ5aW5ncywg
dHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyk7CisgICAgfQorCisgICAgLy8gVXNlcyB0aGUgInJl
bGF4ZWQiIEFOR0xFIHBhY2tpbmcgbW9kZS4KKyAgICBib29sIHBhY2tWYXJ5aW5ncyhHTHVpbnQg
bWF4VmFyeWluZ3MsIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpWYXJ5aW5nPiAmc2hWYXJ5aW5ncykK
KyAgICB7CisgICAgICAgIFZhcnlpbmdQYWNraW5nIHZhcnlpbmdQYWNraW5nKG1heFZhcnlpbmdz
LCBQYWNrTW9kZTo6QU5HTEVfUkVMQVhFRCk7CisgICAgICAgIHJldHVybiB0ZXN0VmFyeWluZ1Bh
Y2tpbmcoc2hWYXJ5aW5ncywgJnZhcnlpbmdQYWNraW5nKTsKKyAgICB9CisKKyAgICAvLyBVc2Vz
IHRoZSBzdHJpY3RlciBXZWJHTCBzdHlsZSBwYWNraW5nIHJ1bGVzLgorICAgIGJvb2wgcGFja1Zh
cnlpbmdzU3RyaWN0KEdMdWludCBtYXhWYXJ5aW5ncywgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlZh
cnlpbmc+ICZzaFZhcnlpbmdzKQorICAgIHsKKyAgICAgICAgVmFyeWluZ1BhY2tpbmcgdmFyeWlu
Z1BhY2tpbmcobWF4VmFyeWluZ3MsIFBhY2tNb2RlOjpXRUJHTF9TVFJJQ1QpOworICAgICAgICBy
ZXR1cm4gdGVzdFZhcnlpbmdQYWNraW5nKHNoVmFyeWluZ3MsICZ2YXJ5aW5nUGFja2luZyk7Cisg
ICAgfQorCisgICAgY29uc3QgaW50IGtNYXhWYXJ5aW5ncyA9IEdldFBhcmFtKCk7Cit9OworCitz
dGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gTWFrZVZhcnlpbmdzKEdMZW51bSB0eXBlLCBzaXplX3Qg
Y291bnQsIHNpemVfdCBhcnJheVNpemUpCit7CisgICAgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+
IHZhcnlpbmdzOworCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNvdW50OyAr
K2luZGV4KQorICAgIHsKKyAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3Ryc3RyOworICAgICAg
ICBzdHJzdHIgPDwgdHlwZSA8PCBpbmRleDsKKworICAgICAgICBzaDo6VmFyeWluZyB2YXJ5aW5n
OworICAgICAgICB2YXJ5aW5nLnR5cGUgICAgICAgICAgPSB0eXBlOworICAgICAgICB2YXJ5aW5n
LnByZWNpc2lvbiAgICAgPSBHTF9NRURJVU1fRkxPQVQ7CisgICAgICAgIHZhcnlpbmcubmFtZSAg
ICAgICAgICA9IHN0cnN0ci5zdHIoKTsKKyAgICAgICAgdmFyeWluZy5tYXBwZWROYW1lICAgID0g
c3Ryc3RyLnN0cigpOworICAgICAgICB2YXJ5aW5nLmFycmF5U2l6ZSAgICAgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KGFycmF5U2l6ZSk7CisgICAgICAgIHZhcnlpbmcuc3RhdGljVXNlICAg
ICA9IHRydWU7CisgICAgICAgIHZhcnlpbmcuaW50ZXJwb2xhdGlvbiA9IHNoOjpJTlRFUlBPTEFU
SU9OX0ZMQVQ7CisgICAgICAgIHZhcnlpbmcuaXNJbnZhcmlhbnQgICA9IGZhbHNlOworCisgICAg
ICAgIHZhcnlpbmdzLnB1c2hfYmFjayh2YXJ5aW5nKTsKKyAgICB9CisKKyAgICByZXR1cm4gdmFy
eWluZ3M7Cit9CisKK3ZvaWQgQWRkVmFyeWluZ3Moc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+ICp2
YXJ5aW5ncywgR0xlbnVtIHR5cGUsIHNpemVfdCBjb3VudCwgc2l6ZV90IGFycmF5U2l6ZSkKK3sK
KyAgICBjb25zdCBhdXRvICZuZXdWYXJ5aW5ncyA9IE1ha2VWYXJ5aW5ncyh0eXBlLCBjb3VudCwg
YXJyYXlTaXplKTsKKyAgICB2YXJ5aW5ncy0+aW5zZXJ0KHZhcnlpbmdzLT5lbmQoKSwgbmV3VmFy
eWluZ3MuYmVnaW4oKSwgbmV3VmFyeWluZ3MuZW5kKCkpOworfQorCisvLyBUZXN0IHRoYXQgYSBz
aW5nbGUgdmFyeWluZyBjYW4ndCBvdmVyZmxvdyB0aGUgcGFja2luZy4KK1RFU1RfUChWYXJ5aW5n
UGFja2luZ1Rlc3QsIE9uZVZhcnlpbmdMYXJnZXJUaGFuTWF4KQoreworICAgIEFTU0VSVF9GQUxT
RShwYWNrVmFyeWluZ3MoMSwgTWFrZVZhcnlpbmdzKEdMX0ZMT0FUX01BVDQsIDEsIDApKSk7Cit9
CisKKy8vIFRoaXMgd2lsbCBvdmVyZmxvdyB0aGUgYXZhaWxhYmxlIHZhcnlpbmcgc3BhY2UuCitU
RVNUX1AoVmFyeWluZ1BhY2tpbmdUZXN0LCBNYXhQbHVzT25lVmFyeWluZ1ZlYzMpCit7CisgICAg
QVNTRVJUX0ZBTFNFKHBhY2tWYXJ5aW5ncyhrTWF4VmFyeWluZ3MsIE1ha2VWYXJ5aW5ncyhHTF9G
TE9BVF9WRUMzLCBrTWF4VmFyeWluZ3MgKyAxLCAwKSkpOworfQorCisvLyBUaGlzIHdpbGwgb3Zl
cmZsb3cgdGhlIGF2YWlsYWJsZSB2YXJ5aW5nIHNwYWNlLgorVEVTVF9QKFZhcnlpbmdQYWNraW5n
VGVzdCwgTWF4UGx1c09uZVZhcnlpbmdWZWMzQXJyYXkpCit7CisgICAgQVNTRVJUX0ZBTFNFKHBh
Y2tWYXJ5aW5ncyhrTWF4VmFyeWluZ3MsIE1ha2VWYXJ5aW5ncyhHTF9GTE9BVF9WRUMzLCBrTWF4
VmFyeWluZ3MgLyAyICsgMSwgMikpKTsKK30KKworLy8gVGhpcyB3aWxsIG92ZXJmbG93IHRoZSBh
dmFpbGFibGUgdmFyeWluZyBzcGFjZS4KK1RFU1RfUChWYXJ5aW5nUGFja2luZ1Rlc3QsIE1heFZh
cnlpbmdWZWMzQW5kT25lVmVjMikKK3sKKyAgICBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gdmFy
eWluZ3MgPSBNYWtlVmFyeWluZ3MoR0xfRkxPQVRfVkVDMywga01heFZhcnlpbmdzLCAwKTsKKyAg
ICBBZGRWYXJ5aW5ncygmdmFyeWluZ3MsIEdMX0ZMT0FUX1ZFQzIsIDEsIDApOworICAgIEFTU0VS
VF9GQUxTRShwYWNrVmFyeWluZ3Moa01heFZhcnlpbmdzLCB2YXJ5aW5ncykpOworfQorCisvLyBU
aGlzIHNob3VsZCB3b3JrIHNpbmNlIHR3byB2ZWMycyBhcmUgcGFja2VkIGluIGEgc2luZ2xlIHJl
Z2lzdGVyLgorVEVTVF9QKFZhcnlpbmdQYWNraW5nVGVzdCwgTWF4UGx1c09uZVZhcnlpbmdWZWMy
KQoreworICAgIEFTU0VSVF9UUlVFKHBhY2tWYXJ5aW5ncyhrTWF4VmFyeWluZ3MsIE1ha2VWYXJ5
aW5ncyhHTF9GTE9BVF9WRUMyLCBrTWF4VmFyeWluZ3MgKyAxLCAwKSkpOworfQorCisvLyBTYW1l
IGZvciB0aGlzIG9uZSBhcyBhYm92ZS4KK1RFU1RfUChWYXJ5aW5nUGFja2luZ1Rlc3QsIFR3aWNl
TWF4VmFyeWluZ1ZlYzIpCit7CisgICAgQVNTRVJUX1RSVUUocGFja1ZhcnlpbmdzKGtNYXhWYXJ5
aW5ncywgTWFrZVZhcnlpbmdzKEdMX0ZMT0FUX1ZFQzIsIGtNYXhWYXJ5aW5ncyAqIDIsIDApKSk7
Cit9CisKKy8vIFRoaXMgc2hvdWxkIG5vdCB3b3JrIHNpbmNlIGl0IG92ZXJmbG93cyBhdmFpbGFi
bGUgdmFyeWluZyBzcGFjZS4KK1RFU1RfUChWYXJ5aW5nUGFja2luZ1Rlc3QsIFRvb01hbnlWYXJ5
aW5nVmVjMikKK3sKKyAgICBBU1NFUlRfRkFMU0UocGFja1ZhcnlpbmdzKGtNYXhWYXJ5aW5ncywg
TWFrZVZhcnlpbmdzKEdMX0ZMT0FUX1ZFQzIsIGtNYXhWYXJ5aW5ncyAqIDIgKyAxLCAwKSkpOwor
fQorCisvLyBUaGlzIHNob3VsZCB3b3JrIGFjY29yZGluZyB0byB0aGUgZXhhbXBsZSBHTCBwYWNr
aW5nIHJ1bGVzIC0gdGhlIGZsb2F0IHZhcnlpbmdzIGFyZSBzbG90dGVkCisvLyBpbnRvIHRoZSBl
bmQgb2YgdGhlIHZlYzMgdmFyeWluZyBhcnJheXMuCitURVNUX1AoVmFyeWluZ1BhY2tpbmdUZXN0
LCBNYXhWYXJ5aW5nVmVjM0FycmF5QW5kRmxvYXRBcnJheXMpCit7CisgICAgc3RkOjp2ZWN0b3I8
c2g6OlZhcnlpbmc+IHZhcnlpbmdzID0gTWFrZVZhcnlpbmdzKEdMX0ZMT0FUX1ZFQzMsIGtNYXhW
YXJ5aW5ncyAvIDIsIDIpOworICAgIEFkZFZhcnlpbmdzKCZ2YXJ5aW5ncywgR0xfRkxPQVQsIGtN
YXhWYXJ5aW5ncyAvIDIsIDIpOworICAgIEFTU0VSVF9UUlVFKHBhY2tWYXJ5aW5ncyhrTWF4VmFy
eWluZ3MsIHZhcnlpbmdzKSk7Cit9CisKKy8vIFRoaXMgc2hvdWxkIG5vdCB3b3JrIC0gaXQgaGFz
IG9uZSB0b28gbWFueSBmbG9hdCBhcnJheXMuCitURVNUX1AoVmFyeWluZ1BhY2tpbmdUZXN0LCBN
YXhWYXJ5aW5nVmVjM0FycmF5QW5kTWF4UGx1c09uZUZsb2F0QXJyYXkpCit7CisgICAgc3RkOjp2
ZWN0b3I8c2g6OlZhcnlpbmc+IHZhcnlpbmdzID0gTWFrZVZhcnlpbmdzKEdMX0ZMT0FUX1ZFQzMs
IGtNYXhWYXJ5aW5ncyAvIDIsIDIpOworICAgIEFkZFZhcnlpbmdzKCZ2YXJ5aW5ncywgR0xfRkxP
QVQsIGtNYXhWYXJ5aW5ncyAvIDIgKyAxLCAyKTsKKyAgICBBU1NFUlRfRkFMU0UocGFja1Zhcnlp
bmdzKGtNYXhWYXJ5aW5ncywgdmFyeWluZ3MpKTsKK30KKworLy8gV2ViR0wgc2hvdWxkIGZhaWwg
dG8gcGFjayBtYXgrMSB2ZWMyIGFycmF5cywgdW5saWtlIG91ciBtb3JlIHJlbGF4ZWQgcGFja2lu
Zy4KK1RFU1RfUChWYXJ5aW5nUGFja2luZ1Rlc3QsIE1heFBsdXNPbmVNYXQyVmFyeWluZ3NGYWls
c1dlYkdMKQoreworICAgIGF1dG8gdmFyeWluZ3MgPSBNYWtlVmFyeWluZ3MoR0xfRkxPQVRfTUFU
Miwga01heFZhcnlpbmdzIC8gMiArIDEsIDApOworICAgIEFTU0VSVF9GQUxTRShwYWNrVmFyeWlu
Z3NTdHJpY3Qoa01heFZhcnlpbmdzLCB2YXJ5aW5ncykpOworfQorCisvLyBNYWtlcyBzZXBhcmF0
ZSB0ZXN0cyBmb3IgZGlmZmVyZW50IHZhbHVlcyBvZiBrTWF4VmFyeWluZ3MuCitJTlNUQU5USUFU
RV9URVNUX0NBU0VfUCgsIFZhcnlpbmdQYWNraW5nVGVzdCwgOjp0ZXN0aW5nOjpWYWx1ZXMoMSwg
NCwgOCkpOworCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVyc2lvbi5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnNpb24uaAppbmRleCA2Mjk4NWQwZGE4OC4uNGM5NzMw
YzdiZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9W
ZXJzaW9uLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnNp
b24uaApAQCAtMTYsOCArMTYsOCBAQCBuYW1lc3BhY2UgZ2wKIAogc3RydWN0IFZlcnNpb24KIHsK
LSAgICBWZXJzaW9uKCk7Ci0gICAgVmVyc2lvbihHTHVpbnQgbWFqb3IsIEdMdWludCBtaW5vcik7
CisgICAgY29uc3RleHByIFZlcnNpb24oKTsKKyAgICBjb25zdGV4cHIgVmVyc2lvbihHTHVpbnQg
bWFqb3IsIEdMdWludCBtaW5vcik7CiAKICAgICBHTHVpbnQgbWFqb3I7CiAgICAgR0x1aW50IG1p
bm9yOwpAQCAtMjYsOCArMjYsOSBAQCBzdHJ1Y3QgVmVyc2lvbgogYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFZlcnNpb24gJmEsIGNvbnN0IFZlcnNpb24gJmIpOwogYm9vbCBvcGVyYXRvciE9KGNvbnN0
IFZlcnNpb24gJmEsIGNvbnN0IFZlcnNpb24gJmIpOwogYm9vbCBvcGVyYXRvcj49KGNvbnN0IFZl
cnNpb24gJmEsIGNvbnN0IFZlcnNpb24gJmIpOworYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFZlcnNp
b24gJmEsIGNvbnN0IFZlcnNpb24gJmIpOwogYm9vbCBvcGVyYXRvcjwoY29uc3QgVmVyc2lvbiAm
YSwgY29uc3QgVmVyc2lvbiAmYik7Ci0KK2Jvb2wgb3BlcmF0b3I+KGNvbnN0IFZlcnNpb24gJmEs
IGNvbnN0IFZlcnNpb24gJmIpOwogfQogCiAjaW5jbHVkZSAiVmVyc2lvbi5pbmwiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVyc2lvbi5pbmwgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVyc2lvbi5pbmwKaW5kZXggNDI3
ZjZjYTE3ODguLjQ5NTIwOTcyMDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvVmVyc2lvbi5pbmwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL1ZlcnNpb24uaW5sCkBAIC02LDM4ICs2LDU0IEBACiAKIC8vIFZlcnNpb24u
aW5sOiBFbmNhcHN1bGF0aW9uIG9mIGEgR0wgdmVyc2lvbi4KIAorI2luY2x1ZGUgPHR1cGxlPgor
CiBuYW1lc3BhY2UgZ2wKIHsKIAotaW5saW5lIFZlcnNpb246OlZlcnNpb24oKQorY29uc3RleHBy
IFZlcnNpb246OlZlcnNpb24oKQogICAgIDogVmVyc2lvbigwLCAwKQogewogfQogCi1pbmxpbmUg
VmVyc2lvbjo6VmVyc2lvbihHTHVpbnQgbWFqb3JfLCBHTHVpbnQgbWlub3JfKQorLy8gQXZvaWQg
Y29uZmxpY3RzIHdpdGggbGludXggc3lzdGVtIGRlZmluZXMKKyN1bmRlZiBtYWpvcgorI3VuZGVm
IG1pbm9yCisKK2NvbnN0ZXhwciBWZXJzaW9uOjpWZXJzaW9uKEdMdWludCBtYWpvcl8sIEdMdWlu
dCBtaW5vcl8pCisgICAgOiBtYWpvcihtYWpvcl8pLAorICAgICAgbWlub3IobWlub3JfKQogewot
ICAgIG1ham9yID0gbWFqb3JfOwotICAgIG1pbm9yID0gbWlub3JfOwogfQogCiBpbmxpbmUgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IFZlcnNpb24gJmEsIGNvbnN0IFZlcnNpb24gJmIpCiB7Ci0gICAg
cmV0dXJuIGEubWFqb3IgPT0gYi5tYWpvciAmJiBhLm1pbm9yID09IGIubWlub3I7CisgICAgcmV0
dXJuIHN0ZDo6dGllKGEubWFqb3IsIGEubWlub3IpID09IHN0ZDo6dGllKGIubWFqb3IsIGIubWlu
b3IpOwogfQogCiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZlcnNpb24gJmEsIGNvbnN0
IFZlcnNpb24gJmIpCiB7Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKKyAgICByZXR1cm4gc3RkOjp0
aWUoYS5tYWpvciwgYS5taW5vcikgIT0gc3RkOjp0aWUoYi5tYWpvciwgYi5taW5vcik7CiB9CiAK
IGlubGluZSBib29sIG9wZXJhdG9yPj0oY29uc3QgVmVyc2lvbiAmYSwgY29uc3QgVmVyc2lvbiAm
YikKIHsKLSAgICByZXR1cm4gYS5tYWpvciA+IGIubWFqb3IgfHwgKGEubWFqb3IgPT0gYi5tYWpv
ciAmJiBhLm1pbm9yID49IGIubWlub3IpOworICAgIHJldHVybiBzdGQ6OnRpZShhLm1ham9yLCBh
Lm1pbm9yKSA+PSBzdGQ6OnRpZShiLm1ham9yLCBiLm1pbm9yKTsKK30KKworaW5saW5lIGJvb2wg
b3BlcmF0b3I8PShjb25zdCBWZXJzaW9uICZhLCBjb25zdCBWZXJzaW9uICZiKQoreworICAgIHJl
dHVybiBzdGQ6OnRpZShhLm1ham9yLCBhLm1pbm9yKSA8PSBzdGQ6OnRpZShiLm1ham9yLCBiLm1p
bm9yKTsKIH0KIAogaW5saW5lIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFZlcnNpb24gJmEsIGNvbnN0
IFZlcnNpb24gJmIpCiB7Ci0gICAgcmV0dXJuICEoYSA+PSBiKTsKKyAgICByZXR1cm4gc3RkOjp0
aWUoYS5tYWpvciwgYS5taW5vcikgPCBzdGQ6OnRpZShiLm1ham9yLCBiLm1pbm9yKTsKK30KKwor
aW5saW5lIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFZlcnNpb24gJmEsIGNvbnN0IFZlcnNpb24gJmIp
Cit7CisgICAgcmV0dXJuIHN0ZDo6dGllKGEubWFqb3IsIGEubWlub3IpID4gc3RkOjp0aWUoYi5t
YWpvciwgYi5taW5vcik7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9WZXJ0ZXhBcnJheS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvVmVydGV4QXJyYXkuY3BwCmluZGV4IDBiOGZjYjYzZGY4Li42YWJlODhl
NTQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1Zl
cnRleEFycmF5LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
VmVydGV4QXJyYXkuY3BwCkBAIC04LDI4ICs4LDQwIEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9W
ZXJ0ZXhBcnJheS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0J1ZmZlci5oIgorI2luY2x1ZGUgImxp
YkFOR0xFL0NvbnRleHQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9HTEltcGxGYWN0
b3J5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvVmVydGV4QXJyYXlJbXBsLmgiCiAK
IG5hbWVzcGFjZSBnbAogewogCi1WZXJ0ZXhBcnJheVN0YXRlOjpWZXJ0ZXhBcnJheVN0YXRlKHNp
emVfdCBtYXhBdHRyaWJzKQotICAgIDogbUxhYmVsKCksIG1WZXJ0ZXhBdHRyaWJ1dGVzKG1heEF0
dHJpYnMpLCBtTWF4RW5hYmxlZEF0dHJpYnV0ZSgwKQorVmVydGV4QXJyYXlTdGF0ZTo6VmVydGV4
QXJyYXlTdGF0ZShzaXplX3QgbWF4QXR0cmlicywgc2l6ZV90IG1heEF0dHJpYkJpbmRpbmdzKQor
ICAgIDogbUxhYmVsKCksIG1WZXJ0ZXhCaW5kaW5ncyhtYXhBdHRyaWJCaW5kaW5ncyksIG1NYXhF
bmFibGVkQXR0cmlidXRlKDApCiB7CisgICAgQVNTRVJUKG1heEF0dHJpYnMgPD0gbWF4QXR0cmli
QmluZGluZ3MpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtYXhBdHRyaWJzOyBpKysp
CisgICAgeworICAgICAgICBtVmVydGV4QXR0cmlidXRlcy5lbXBsYWNlX2JhY2soc3RhdGljX2Nh
c3Q8R0x1aW50PihpKSk7CisgICAgfQogfQogCiBWZXJ0ZXhBcnJheVN0YXRlOjp+VmVydGV4QXJy
YXlTdGF0ZSgpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBnZXRNYXhBdHRyaWJzKCk7
IGkrKykKKyAgICBmb3IgKGF1dG8gJmJpbmRpbmcgOiBtVmVydGV4QmluZGluZ3MpCiAgICAgewot
ICAgICAgICBtVmVydGV4QXR0cmlidXRlc1tpXS5idWZmZXIuc2V0KG51bGxwdHIpOworICAgICAg
ICBiaW5kaW5nLmJ1ZmZlci5zZXQobnVsbHB0cik7CiAgICAgfQogICAgIG1FbGVtZW50QXJyYXlC
dWZmZXIuc2V0KG51bGxwdHIpOwogfQogCi1WZXJ0ZXhBcnJheTo6VmVydGV4QXJyYXkocng6OkdM
SW1wbEZhY3RvcnkgKmZhY3RvcnksIEdMdWludCBpZCwgc2l6ZV90IG1heEF0dHJpYnMpCi0gICAg
OiBtSWQoaWQpLCBtU3RhdGUobWF4QXR0cmlicyksIG1WZXJ0ZXhBcnJheShmYWN0b3J5LT5jcmVh
dGVWZXJ0ZXhBcnJheShtU3RhdGUpKQorVmVydGV4QXJyYXk6OlZlcnRleEFycmF5KHJ4OjpHTElt
cGxGYWN0b3J5ICpmYWN0b3J5LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWF4QXR0cmlicywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbWF4QXR0cmliQmluZGluZ3MpCisgICAgOiBtSWQoaWQpLAor
ICAgICAgbVN0YXRlKG1heEF0dHJpYnMsIG1heEF0dHJpYkJpbmRpbmdzKSwKKyAgICAgIG1WZXJ0
ZXhBcnJheShmYWN0b3J5LT5jcmVhdGVWZXJ0ZXhBcnJheShtU3RhdGUpKQogewogfQogCkBAIC01
NSwxMSArNjcsMTEgQEAgY29uc3Qgc3RkOjpzdHJpbmcgJlZlcnRleEFycmF5OjpnZXRMYWJlbCgp
IGNvbnN0CiAKIHZvaWQgVmVydGV4QXJyYXk6OmRldGFjaEJ1ZmZlcihHTHVpbnQgYnVmZmVyTmFt
ZSkKIHsKLSAgICBmb3IgKHNpemVfdCBhdHRyaWJ1dGUgPSAwOyBhdHRyaWJ1dGUgPCBnZXRNYXhB
dHRyaWJzKCk7IGF0dHJpYnV0ZSsrKQorICAgIGZvciAoYXV0byAmYmluZGluZyA6IG1TdGF0ZS5t
VmVydGV4QmluZGluZ3MpCiAgICAgewotICAgICAgICBpZiAobVN0YXRlLm1WZXJ0ZXhBdHRyaWJ1
dGVzW2F0dHJpYnV0ZV0uYnVmZmVyLmlkKCkgPT0gYnVmZmVyTmFtZSkKKyAgICAgICAgaWYgKGJp
bmRpbmcuYnVmZmVyLmlkKCkgPT0gYnVmZmVyTmFtZSkKICAgICAgICAgewotICAgICAgICAgICAg
bVN0YXRlLm1WZXJ0ZXhBdHRyaWJ1dGVzW2F0dHJpYnV0ZV0uYnVmZmVyLnNldChudWxscHRyKTsK
KyAgICAgICAgICAgIGJpbmRpbmcuYnVmZmVyLnNldChudWxscHRyKTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtNjksMzEgKzgxLDk3IEBAIHZvaWQgVmVydGV4QXJyYXk6OmRldGFjaEJ1ZmZlcihH
THVpbnQgYnVmZmVyTmFtZSkKICAgICB9CiB9CiAKLWNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmVmVy
dGV4QXJyYXk6OmdldFZlcnRleEF0dHJpYnV0ZShzaXplX3QgYXR0cmlidXRlSW5kZXgpIGNvbnN0
Citjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJlZlcnRleEFycmF5OjpnZXRWZXJ0ZXhBdHRyaWJ1dGUo
c2l6ZV90IGF0dHJpYkluZGV4KSBjb25zdAoreworICAgIEFTU0VSVChhdHRyaWJJbmRleCA8IGdl
dE1heEF0dHJpYnMoKSk7CisgICAgcmV0dXJuIG1TdGF0ZS5tVmVydGV4QXR0cmlidXRlc1thdHRy
aWJJbmRleF07Cit9CisKK2NvbnN0IFZlcnRleEJpbmRpbmcgJlZlcnRleEFycmF5OjpnZXRWZXJ0
ZXhCaW5kaW5nKHNpemVfdCBiaW5kaW5nSW5kZXgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGJpbmRp
bmdJbmRleCA8IGdldE1heEJpbmRpbmdzKCkpOworICAgIHJldHVybiBtU3RhdGUubVZlcnRleEJp
bmRpbmdzW2JpbmRpbmdJbmRleF07Cit9CisKK3NpemVfdCBWZXJ0ZXhBcnJheTo6R2V0QXR0cmli
SW5kZXgodW5zaWduZWQgbG9uZyBkaXJ0eUJpdCkKIHsKLSAgICBBU1NFUlQoYXR0cmlidXRlSW5k
ZXggPCBnZXRNYXhBdHRyaWJzKCkpOwotICAgIHJldHVybiBtU3RhdGUubVZlcnRleEF0dHJpYnV0
ZXNbYXR0cmlidXRlSW5kZXhdOworICAgIHN0YXRpY19hc3NlcnQoZ2w6Ok1BWF9WRVJURVhfQVRU
UklCUyA9PSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJfQklORElOR1MsCisgICAgICAgICAgICAgICAg
ICAiVGhlIHN0cmlkZSBvZiB2ZXJ0ZXggYXR0cmlidXRlcyBzaG91bGQgZXF1YWwgdG8gdGhhdCBv
ZiB2ZXJ0ZXggYmluZGluZ3MuIik7CisgICAgQVNTRVJUKGRpcnR5Qml0ID4gRElSVFlfQklUX0VM
RU1FTlRfQVJSQVlfQlVGRkVSKTsKKyAgICByZXR1cm4gKGRpcnR5Qml0IC0gRElSVFlfQklUX0FU
VFJJQl8wX0VOQUJMRUQpICUgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUzsKK30KKwordm9pZCBWZXJ0
ZXhBcnJheTo6YmluZFZlcnRleEJ1ZmZlcihzaXplX3QgYmluZGluZ0luZGV4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIgKmJvdW5kQnVmZmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlKQoreworICAgIEFTU0VSVChiaW5k
aW5nSW5kZXggPCBnZXRNYXhCaW5kaW5ncygpKTsKKworICAgIFZlcnRleEJpbmRpbmcgKmJpbmRp
bmcgPSAmbVN0YXRlLm1WZXJ0ZXhCaW5kaW5nc1tiaW5kaW5nSW5kZXhdOworCisgICAgYmluZGlu
Zy0+YnVmZmVyLnNldChib3VuZEJ1ZmZlcik7CisgICAgYmluZGluZy0+b2Zmc2V0ID0gb2Zmc2V0
OworICAgIGJpbmRpbmctPnN0cmlkZSA9IHN0cmlkZTsKKyAgICBtRGlydHlCaXRzLnNldChESVJU
WV9CSVRfQklORElOR18wX0JVRkZFUiArIGJpbmRpbmdJbmRleCk7Cit9CisKK3ZvaWQgVmVydGV4
QXJyYXk6OnNldFZlcnRleEF0dHJpYkJpbmRpbmcoc2l6ZV90IGF0dHJpYkluZGV4LCBzaXplX3Qg
YmluZGluZ0luZGV4KQoreworICAgIEFTU0VSVChhdHRyaWJJbmRleCA8IGdldE1heEF0dHJpYnMo
KSAmJiBiaW5kaW5nSW5kZXggPCBnZXRNYXhCaW5kaW5ncygpKTsKKworICAgIG1TdGF0ZS5tVmVy
dGV4QXR0cmlidXRlc1thdHRyaWJJbmRleF0uYmluZGluZ0luZGV4ID0gc3RhdGljX2Nhc3Q8R0x1
aW50PihiaW5kaW5nSW5kZXgpOworICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9BVFRSSUJf
MF9CSU5ESU5HICsgYXR0cmliSW5kZXgpOworfQorCit2b2lkIFZlcnRleEFycmF5OjpzZXRWZXJ0
ZXhCaW5kaW5nRGl2aXNvcihzaXplX3QgYmluZGluZ0luZGV4LCBHTHVpbnQgZGl2aXNvcikKK3sK
KyAgICBBU1NFUlQoYmluZGluZ0luZGV4IDwgZ2V0TWF4QmluZGluZ3MoKSk7CisKKyAgICBtU3Rh
dGUubVZlcnRleEJpbmRpbmdzW2JpbmRpbmdJbmRleF0uZGl2aXNvciA9IGRpdmlzb3I7CisgICAg
bURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0JJTkRJTkdfMF9ESVZJU09SICsgYmluZGluZ0luZGV4
KTsKK30KKwordm9pZCBWZXJ0ZXhBcnJheTo6c2V0VmVydGV4QXR0cmliRm9ybWF0KHNpemVfdCBh
dHRyaWJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9ybWFs
aXplZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHB1cmVJ
bnRlZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRy
IHJlbGF0aXZlT2Zmc2V0KQoreworICAgIEFTU0VSVChhdHRyaWJJbmRleCA8IGdldE1heEF0dHJp
YnMoKSk7CisKKyAgICBWZXJ0ZXhBdHRyaWJ1dGUgKmF0dHJpYiA9ICZtU3RhdGUubVZlcnRleEF0
dHJpYnV0ZXNbYXR0cmliSW5kZXhdOworCisgICAgYXR0cmliLT5zaXplICAgICAgICAgICA9IHNp
emU7CisgICAgYXR0cmliLT50eXBlICAgICAgICAgICA9IHR5cGU7CisgICAgYXR0cmliLT5ub3Jt
YWxpemVkICAgICA9IG5vcm1hbGl6ZWQ7CisgICAgYXR0cmliLT5wdXJlSW50ZWdlciAgICA9IHB1
cmVJbnRlZ2VyOworICAgIGF0dHJpYi0+cmVsYXRpdmVPZmZzZXQgPSByZWxhdGl2ZU9mZnNldDsK
KyAgICBtRGlydHlCaXRzLnNldChESVJUWV9CSVRfQVRUUklCXzBfRk9STUFUICsgYXR0cmliSW5k
ZXgpOwogfQogCiB2b2lkIFZlcnRleEFycmF5OjpzZXRWZXJ0ZXhBdHRyaWJEaXZpc29yKHNpemVf
dCBpbmRleCwgR0x1aW50IGRpdmlzb3IpCiB7CiAgICAgQVNTRVJUKGluZGV4IDwgZ2V0TWF4QXR0
cmlicygpKTsKLSAgICBtU3RhdGUubVZlcnRleEF0dHJpYnV0ZXNbaW5kZXhdLmRpdmlzb3IgPSBk
aXZpc29yOwotICAgIG1EaXJ0eUJpdHMuc2V0KERJUlRZX0JJVF9BVFRSSUJfMF9ESVZJU09SICsg
aW5kZXgpOworCisgICAgc2V0VmVydGV4QXR0cmliQmluZGluZyhpbmRleCwgaW5kZXgpOworICAg
IHNldFZlcnRleEJpbmRpbmdEaXZpc29yKGluZGV4LCBkaXZpc29yKTsKIH0KIAotdm9pZCBWZXJ0
ZXhBcnJheTo6ZW5hYmxlQXR0cmlidXRlKHNpemVfdCBhdHRyaWJ1dGVJbmRleCwgYm9vbCBlbmFi
bGVkU3RhdGUpCit2b2lkIFZlcnRleEFycmF5OjplbmFibGVBdHRyaWJ1dGUoc2l6ZV90IGF0dHJp
YkluZGV4LCBib29sIGVuYWJsZWRTdGF0ZSkKIHsKLSAgICBBU1NFUlQoYXR0cmlidXRlSW5kZXgg
PCBnZXRNYXhBdHRyaWJzKCkpOwotICAgIG1TdGF0ZS5tVmVydGV4QXR0cmlidXRlc1thdHRyaWJ1
dGVJbmRleF0uZW5hYmxlZCA9IGVuYWJsZWRTdGF0ZTsKLSAgICBtRGlydHlCaXRzLnNldChESVJU
WV9CSVRfQVRUUklCXzBfRU5BQkxFRCArIGF0dHJpYnV0ZUluZGV4KTsKKyAgICBBU1NFUlQoYXR0
cmliSW5kZXggPCBnZXRNYXhBdHRyaWJzKCkpOworCisgICAgbVN0YXRlLm1WZXJ0ZXhBdHRyaWJ1
dGVzW2F0dHJpYkluZGV4XS5lbmFibGVkID0gZW5hYmxlZFN0YXRlOworICAgIG1EaXJ0eUJpdHMu
c2V0KERJUlRZX0JJVF9BVFRSSUJfMF9FTkFCTEVEICsgYXR0cmliSW5kZXgpOwogCiAgICAgLy8g
VXBkYXRlIHN0YXRlIGNhY2hlCiAgICAgaWYgKGVuYWJsZWRTdGF0ZSkKICAgICB7Ci0gICAgICAg
IG1TdGF0ZS5tTWF4RW5hYmxlZEF0dHJpYnV0ZSA9IHN0ZDo6bWF4KGF0dHJpYnV0ZUluZGV4ICsg
MSwgbVN0YXRlLm1NYXhFbmFibGVkQXR0cmlidXRlKTsKKyAgICAgICAgbVN0YXRlLm1NYXhFbmFi
bGVkQXR0cmlidXRlID0gc3RkOjptYXgoYXR0cmliSW5kZXggKyAxLCBtU3RhdGUubU1heEVuYWJs
ZWRBdHRyaWJ1dGUpOwogICAgIH0KLSAgICBlbHNlIGlmIChtU3RhdGUubU1heEVuYWJsZWRBdHRy
aWJ1dGUgPT0gYXR0cmlidXRlSW5kZXggKyAxKQorICAgIGVsc2UgaWYgKG1TdGF0ZS5tTWF4RW5h
YmxlZEF0dHJpYnV0ZSA9PSBhdHRyaWJJbmRleCArIDEpCiAgICAgewogICAgICAgICB3aGlsZSAo
bVN0YXRlLm1NYXhFbmFibGVkQXR0cmlidXRlID4gMCAmJgogICAgICAgICAgICAgICAgIW1TdGF0
ZS5tVmVydGV4QXR0cmlidXRlc1ttU3RhdGUubU1heEVuYWJsZWRBdHRyaWJ1dGUgLSAxXS5lbmFi
bGVkKQpAQCAtMTAzLDIxICsxODEsMzEgQEAgdm9pZCBWZXJ0ZXhBcnJheTo6ZW5hYmxlQXR0cmli
dXRlKHNpemVfdCBhdHRyaWJ1dGVJbmRleCwgYm9vbCBlbmFibGVkU3RhdGUpCiAgICAgfQogfQog
Ci12b2lkIFZlcnRleEFycmF5OjpzZXRBdHRyaWJ1dGVTdGF0ZShzaXplX3QgYXR0cmlidXRlSW5k
ZXgsIGdsOjpCdWZmZXIgKmJvdW5kQnVmZmVyLCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbm9ybWFsaXplZCwgYm9vbCBw
dXJlSW50ZWdlciwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQgKnBvaW50ZXIpCit2b2lkIFZl
cnRleEFycmF5OjpzZXRBdHRyaWJ1dGVTdGF0ZShzaXplX3QgYXR0cmliSW5kZXgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6QnVmZmVyICpib3VuZEJ1ZmZlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgbm9ybWFsaXplZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgcHVyZUludGVnZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZvaWQgKnBvaW50ZXIpCiB7Ci0gICAgQVNTRVJUKGF0dHJpYnV0ZUlu
ZGV4IDwgZ2V0TWF4QXR0cmlicygpKTsKKyAgICBBU1NFUlQoYXR0cmliSW5kZXggPCBnZXRNYXhB
dHRyaWJzKCkpOwogCi0gICAgVmVydGV4QXR0cmlidXRlICphdHRyaWIgPSAmbVN0YXRlLm1WZXJ0
ZXhBdHRyaWJ1dGVzW2F0dHJpYnV0ZUluZGV4XTsKKyAgICBHTGludHB0ciBvZmZzZXQgPSBib3Vu
ZEJ1ZmZlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnRwdHI+KHBvaW50ZXIpIDogMDsKIAotICAg
IGF0dHJpYi0+YnVmZmVyLnNldChib3VuZEJ1ZmZlcik7Ci0gICAgYXR0cmliLT5zaXplID0gc2l6
ZTsKLSAgICBhdHRyaWItPnR5cGUgPSB0eXBlOwotICAgIGF0dHJpYi0+bm9ybWFsaXplZCA9IG5v
cm1hbGl6ZWQ7Ci0gICAgYXR0cmliLT5wdXJlSW50ZWdlciA9IHB1cmVJbnRlZ2VyOwotICAgIGF0
dHJpYi0+c3RyaWRlID0gc3RyaWRlOwotICAgIGF0dHJpYi0+cG9pbnRlciA9IHBvaW50ZXI7Ci0g
ICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0FUVFJJQl8wX1BPSU5URVIgKyBhdHRyaWJ1dGVJ
bmRleCk7CisgICAgc2V0VmVydGV4QXR0cmliRm9ybWF0KGF0dHJpYkluZGV4LCBzaXplLCB0eXBl
LCBub3JtYWxpemVkLCBwdXJlSW50ZWdlciwgMCk7CisgICAgc2V0VmVydGV4QXR0cmliQmluZGlu
ZyhhdHRyaWJJbmRleCwgYXR0cmliSW5kZXgpOworCisgICAgVmVydGV4QXR0cmlidXRlICZhdHRy
aWIgPSBtU3RhdGUubVZlcnRleEF0dHJpYnV0ZXNbYXR0cmliSW5kZXhdOworICAgIEdMc2l6ZWkg
ZWZmZWN0aXZlU3RyaWRlID0KKyAgICAgICAgc3RyaWRlICE9IDAgPyBzdHJpZGUgOiBzdGF0aWNf
Y2FzdDxHTHNpemVpPihDb21wdXRlVmVydGV4QXR0cmlidXRlVHlwZVNpemUoYXR0cmliKSk7Cisg
ICAgYXR0cmliLnBvaW50ZXIgICAgICAgICAgICAgICAgID0gcG9pbnRlcjsKKyAgICBhdHRyaWIu
dmVydGV4QXR0cmliQXJyYXlTdHJpZGUgPSBzdHJpZGU7CisKKyAgICBiaW5kVmVydGV4QnVmZmVy
KGF0dHJpYkluZGV4LCBib3VuZEJ1ZmZlciwgb2Zmc2V0LCBlZmZlY3RpdmVTdHJpZGUpOworCisg
ICAgbURpcnR5Qml0cy5zZXQoRElSVFlfQklUX0FUVFJJQl8wX1BPSU5URVIgKyBhdHRyaWJJbmRl
eCk7CiB9CiAKIHZvaWQgVmVydGV4QXJyYXk6OnNldEVsZW1lbnRBcnJheUJ1ZmZlcihCdWZmZXIg
KmJ1ZmZlcikKQEAgLTEyNiwxMyArMjE0LDEzIEBAIHZvaWQgVmVydGV4QXJyYXk6OnNldEVsZW1l
bnRBcnJheUJ1ZmZlcihCdWZmZXIgKmJ1ZmZlcikKICAgICBtRGlydHlCaXRzLnNldChESVJUWV9C
SVRfRUxFTUVOVF9BUlJBWV9CVUZGRVIpOwogfQogCi12b2lkIFZlcnRleEFycmF5OjpzeW5jSW1w
bFN0YXRlKCkKK3ZvaWQgVmVydGV4QXJyYXk6OnN5bmNJbXBsU3RhdGUoY29uc3QgQ29udGV4dCAq
Y29udGV4dCkKIHsKICAgICBpZiAobURpcnR5Qml0cy5hbnkoKSkKICAgICB7Ci0gICAgICAgIG1W
ZXJ0ZXhBcnJheS0+c3luY1N0YXRlKG1EaXJ0eUJpdHMpOworICAgICAgICBtVmVydGV4QXJyYXkt
PnN5bmNTdGF0ZShyeDo6U2FmZUdldEltcGwoY29udGV4dCksIG1EaXJ0eUJpdHMpOwogICAgICAg
ICBtRGlydHlCaXRzLnJlc2V0KCk7CiAgICAgfQogfQogCi19Cit9ICAvLyBuYW1lc3BhY2UgZ2wK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJ0ZXhB
cnJheS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnRleEFycmF5
LmgKaW5kZXggNjVjNjJmMWJhN2QuLjQ4OWMxODBmOTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVydGV4QXJyYXkuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVydGV4QXJyYXkuaApAQCAtMjUsNyArMjUsNyBA
QCBuYW1lc3BhY2UgcngKIHsKIGNsYXNzIEdMSW1wbEZhY3Rvcnk7CiBjbGFzcyBWZXJ0ZXhBcnJh
eUltcGw7Ci19Cit9ICAvLyBuYW1lc3BhY2UgcngKIAogbmFtZXNwYWNlIGdsCiB7CkBAIC0zNCwx
OCArMzQsMzIgQEAgY2xhc3MgQnVmZmVyOwogY2xhc3MgVmVydGV4QXJyYXlTdGF0ZSBmaW5hbCA6
IHB1YmxpYyBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAgcHVibGljOgotICAgIGV4cGxpY2l0IFZl
cnRleEFycmF5U3RhdGUoc2l6ZV90IG1heEF0dHJpYnMpOworICAgIFZlcnRleEFycmF5U3RhdGUo
c2l6ZV90IG1heEF0dHJpYnMsIHNpemVfdCBtYXhCaW5kaW5ncyk7CiAgICAgflZlcnRleEFycmF5
U3RhdGUoKTsKIAogICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnZXRMYWJlbCgpIGNvbnN0IHsgcmV0
dXJuIG1MYWJlbDsgfQogCiAgICAgY29uc3QgQmluZGluZ1BvaW50ZXI8QnVmZmVyPiAmZ2V0RWxl
bWVudEFycmF5QnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbUVsZW1lbnRBcnJheUJ1ZmZlcjsgfQog
ICAgIHNpemVfdCBnZXRNYXhBdHRyaWJzKCkgY29uc3QgeyByZXR1cm4gbVZlcnRleEF0dHJpYnV0
ZXMuc2l6ZSgpOyB9CisgICAgc2l6ZV90IGdldE1heEJpbmRpbmdzKCkgY29uc3QgeyByZXR1cm4g
bVZlcnRleEJpbmRpbmdzLnNpemUoKTsgfQogICAgIHNpemVfdCBnZXRNYXhFbmFibGVkQXR0cmli
dXRlKCkgY29uc3QgeyByZXR1cm4gbU1heEVuYWJsZWRBdHRyaWJ1dGU7IH0KICAgICBjb25zdCBz
dGQ6OnZlY3RvcjxWZXJ0ZXhBdHRyaWJ1dGU+ICZnZXRWZXJ0ZXhBdHRyaWJ1dGVzKCkgY29uc3Qg
eyByZXR1cm4gbVZlcnRleEF0dHJpYnV0ZXM7IH0KLSAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUg
JmdldFZlcnRleEF0dHJpYnV0ZShzaXplX3QgaW5kZXgpIGNvbnN0CisgICAgY29uc3QgVmVydGV4
QXR0cmlidXRlICZnZXRWZXJ0ZXhBdHRyaWJ1dGUoc2l6ZV90IGF0dHJpYkluZGV4KSBjb25zdAog
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1WZXJ0ZXhBdHRyaWJ1dGVzW2luZGV4XTsKKyAgICAgICAg
cmV0dXJuIG1WZXJ0ZXhBdHRyaWJ1dGVzW2F0dHJpYkluZGV4XTsKKyAgICB9CisgICAgY29uc3Qg
c3RkOjp2ZWN0b3I8VmVydGV4QmluZGluZz4gJmdldFZlcnRleEJpbmRpbmdzKCkgY29uc3QgeyBy
ZXR1cm4gbVZlcnRleEJpbmRpbmdzOyB9CisgICAgY29uc3QgVmVydGV4QmluZGluZyAmZ2V0VmVy
dGV4QmluZGluZyhzaXplX3QgYmluZGluZ0luZGV4KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1WZXJ0ZXhCaW5kaW5nc1tiaW5kaW5nSW5kZXhdOworICAgIH0KKyAgICBjb25zdCBWZXJ0
ZXhCaW5kaW5nICZnZXRCaW5kaW5nRnJvbUF0dHJpYkluZGV4KHNpemVfdCBhdHRyaWJJbmRleCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtVmVydGV4QmluZGluZ3NbbVZlcnRleEF0dHJp
YnV0ZXNbYXR0cmliSW5kZXhdLmJpbmRpbmdJbmRleF07CisgICAgfQorICAgIHNpemVfdCBnZXRC
aW5kaW5nSW5kZXhGcm9tQXR0cmliSW5kZXgoc2l6ZV90IGF0dHJpYkluZGV4KSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1WZXJ0ZXhBdHRyaWJ1dGVzW2F0dHJpYkluZGV4XS5iaW5kaW5n
SW5kZXg7CiAgICAgfQogCiAgIHByaXZhdGU6CkBAIC01MywxMyArNjcsMTQgQEAgY2xhc3MgVmVy
dGV4QXJyYXlTdGF0ZSBmaW5hbCA6IHB1YmxpYyBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBzdGQ6
OnN0cmluZyBtTGFiZWw7CiAgICAgc3RkOjp2ZWN0b3I8VmVydGV4QXR0cmlidXRlPiBtVmVydGV4
QXR0cmlidXRlczsKICAgICBCaW5kaW5nUG9pbnRlcjxCdWZmZXI+IG1FbGVtZW50QXJyYXlCdWZm
ZXI7CisgICAgc3RkOjp2ZWN0b3I8VmVydGV4QmluZGluZz4gbVZlcnRleEJpbmRpbmdzOwogICAg
IHNpemVfdCBtTWF4RW5hYmxlZEF0dHJpYnV0ZTsKIH07CiAKIGNsYXNzIFZlcnRleEFycmF5IGZp
bmFsIDogcHVibGljIExhYmVsZWRPYmplY3QKIHsKICAgcHVibGljOgotICAgIFZlcnRleEFycmF5
KHJ4OjpHTEltcGxGYWN0b3J5ICpmYWN0b3J5LCBHTHVpbnQgaWQsIHNpemVfdCBtYXhBdHRyaWJz
KTsKKyAgICBWZXJ0ZXhBcnJheShyeDo6R0xJbXBsRmFjdG9yeSAqZmFjdG9yeSwgR0x1aW50IGlk
LCBzaXplX3QgbWF4QXR0cmlicywgc2l6ZV90IG1heEF0dHJpYkJpbmRpbmdzKTsKICAgICB+VmVy
dGV4QXJyYXkoKTsKIAogICAgIEdMdWludCBpZCgpIGNvbnN0OwpAQCAtNjcsMTMgKzgyLDM2IEBA
IGNsYXNzIFZlcnRleEFycmF5IGZpbmFsIDogcHVibGljIExhYmVsZWRPYmplY3QKICAgICB2b2lk
IHNldExhYmVsKGNvbnN0IHN0ZDo6c3RyaW5nICZsYWJlbCkgb3ZlcnJpZGU7CiAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgJmdldExhYmVsKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBjb25zdCBWZXJ0
ZXhBdHRyaWJ1dGUgJmdldFZlcnRleEF0dHJpYnV0ZShzaXplX3QgYXR0cmlidXRlSW5kZXgpIGNv
bnN0OworICAgIGNvbnN0IFZlcnRleEJpbmRpbmcgJmdldFZlcnRleEJpbmRpbmcoc2l6ZV90IGJp
bmRpbmdJbmRleCkgY29uc3Q7CisgICAgY29uc3QgVmVydGV4QXR0cmlidXRlICZnZXRWZXJ0ZXhB
dHRyaWJ1dGUoc2l6ZV90IGF0dHJpYkluZGV4KSBjb25zdDsKKyAgICBjb25zdCBWZXJ0ZXhCaW5k
aW5nICZnZXRCaW5kaW5nRnJvbUF0dHJpYkluZGV4KHNpemVfdCBhdHRyaWJJbmRleCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtU3RhdGUuZ2V0QmluZGluZ0Zyb21BdHRyaWJJbmRleChh
dHRyaWJJbmRleCk7CisgICAgfQogCiAgICAgdm9pZCBkZXRhY2hCdWZmZXIoR0x1aW50IGJ1ZmZl
ck5hbWUpOwogICAgIHZvaWQgc2V0VmVydGV4QXR0cmliRGl2aXNvcihzaXplX3QgaW5kZXgsIEdM
dWludCBkaXZpc29yKTsKLSAgICB2b2lkIGVuYWJsZUF0dHJpYnV0ZShzaXplX3QgYXR0cmlidXRl
SW5kZXgsIGJvb2wgZW5hYmxlZFN0YXRlKTsKLSAgICB2b2lkIHNldEF0dHJpYnV0ZVN0YXRlKHNp
emVfdCBhdHRyaWJ1dGVJbmRleCwgZ2w6OkJ1ZmZlciAqYm91bmRCdWZmZXIsIEdMaW50IHNpemUs
IEdMZW51bSB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBub3JtYWxpemVk
LCBib29sIHB1cmVJbnRlZ2VyLCBHTHNpemVpIHN0cmlkZSwgY29uc3Qgdm9pZCAqcG9pbnRlcik7
CisgICAgdm9pZCBlbmFibGVBdHRyaWJ1dGUoc2l6ZV90IGF0dHJpYkluZGV4LCBib29sIGVuYWJs
ZWRTdGF0ZSk7CisgICAgdm9pZCBzZXRBdHRyaWJ1dGVTdGF0ZShzaXplX3QgYXR0cmliSW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIgKmJvdW5kQnVmZmVyLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBub3JtYWxp
emVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwdXJlSW50ZWdlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgdm9pZCAqcG9pbnRlcik7CisgICAgdm9pZCBzZXRWZXJ0ZXhBdHRyaWJG
b3JtYXQoc2l6ZV90IGF0dHJpYkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBub3JtYWxpemVkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHVyZUludGVnZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgcmVsYXRpdmVPZmZzZXQpOworICAgIHZvaWQgYmlu
ZFZlcnRleEJ1ZmZlcihzaXplX3QgYmluZGluZ0luZGV4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBCdWZmZXIgKmJvdW5kQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dHB0ciBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlKTsK
KyAgICB2b2lkIHNldFZlcnRleEF0dHJpYkJpbmRpbmcoc2l6ZV90IGF0dHJpYkluZGV4LCBzaXpl
X3QgYmluZGluZ0luZGV4KTsKKyAgICB2b2lkIHNldFZlcnRleEJpbmRpbmdEaXZpc29yKHNpemVf
dCBiaW5kaW5nSW5kZXgsIEdMdWludCBkaXZpc29yKTsKIAogICAgIHZvaWQgc2V0RWxlbWVudEFy
cmF5QnVmZmVyKEJ1ZmZlciAqYnVmZmVyKTsKIApAQCAtODEsMTEgKzExOSwxNyBAQCBjbGFzcyBW
ZXJ0ZXhBcnJheSBmaW5hbCA6IHB1YmxpYyBMYWJlbGVkT2JqZWN0CiAgICAgewogICAgICAgICBy
ZXR1cm4gbVN0YXRlLmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpOwogICAgIH0KLSAgICBzaXplX3Qg
Z2V0TWF4QXR0cmlicygpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5nZXRWZXJ0ZXhBdHRyaWJ1dGVz
KCkuc2l6ZSgpOyB9CisgICAgc2l6ZV90IGdldE1heEF0dHJpYnMoKSBjb25zdCB7IHJldHVybiBt
U3RhdGUuZ2V0TWF4QXR0cmlicygpOyB9CisgICAgc2l6ZV90IGdldE1heEJpbmRpbmdzKCkgY29u
c3QgeyByZXR1cm4gbVN0YXRlLmdldE1heEJpbmRpbmdzKCk7IH0KKwogICAgIGNvbnN0IHN0ZDo6
dmVjdG9yPFZlcnRleEF0dHJpYnV0ZT4gJmdldFZlcnRleEF0dHJpYnV0ZXMoKSBjb25zdAogICAg
IHsKICAgICAgICAgcmV0dXJuIG1TdGF0ZS5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7CiAgICAgfQor
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZlcnRleEJpbmRpbmc+ICZnZXRWZXJ0ZXhCaW5kaW5ncygp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbVN0YXRlLmdldFZlcnRleEJpbmRpbmdzKCk7
CisgICAgfQogCiAgICAgcng6OlZlcnRleEFycmF5SW1wbCAqZ2V0SW1wbGVtZW50YXRpb24oKSBj
b25zdCB7IHJldHVybiBtVmVydGV4QXJyYXk7IH0KIApAQCAtMTAzLDE3ICsxNDcsMzIgQEAgY2xh
c3MgVmVydGV4QXJyYXkgZmluYWwgOiBwdWJsaWMgTGFiZWxlZE9iamVjdAogICAgICAgICBESVJU
WV9CSVRfQVRUUklCXzBfUE9JTlRFUiAgID0gRElSVFlfQklUX0FUVFJJQl9NQVhfRU5BQkxFRCwK
ICAgICAgICAgRElSVFlfQklUX0FUVFJJQl9NQVhfUE9JTlRFUiA9IERJUlRZX0JJVF9BVFRSSUJf
MF9QT0lOVEVSICsgZ2w6Ok1BWF9WRVJURVhfQVRUUklCUywKIAotICAgICAgICAvLyBSZXNlcnZl
IGJpdHMgZm9yIGRpdmlzb3JzCi0gICAgICAgIERJUlRZX0JJVF9BVFRSSUJfMF9ESVZJU09SICAg
PSBESVJUWV9CSVRfQVRUUklCX01BWF9QT0lOVEVSLAotICAgICAgICBESVJUWV9CSVRfQVRUUklC
X01BWF9ESVZJU09SID0gRElSVFlfQklUX0FUVFJJQl8wX0RJVklTT1IgKyBnbDo6TUFYX1ZFUlRF
WF9BVFRSSUJTLAorICAgICAgICAvLyBSZXNlcnZlIGJpdHMgZm9yIGNoYW5nZXMgdG8gVmVydGV4
QXR0cmliRm9ybWF0CisgICAgICAgIERJUlRZX0JJVF9BVFRSSUJfMF9GT1JNQVQgICA9IERJUlRZ
X0JJVF9BVFRSSUJfTUFYX1BPSU5URVIsCisgICAgICAgIERJUlRZX0JJVF9BVFRSSUJfTUFYX0ZP
Uk1BVCA9IERJUlRZX0JJVF9BVFRSSUJfMF9GT1JNQVQgKyBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJT
LAorCisgICAgICAgIC8vIFJlc2VydmUgYml0cyBmb3IgY2hhbmdlcyB0byBWZXJ0ZXhBdHRyaWJC
aW5kaW5nCisgICAgICAgIERJUlRZX0JJVF9BVFRSSUJfMF9CSU5ESU5HICAgPSBESVJUWV9CSVRf
QVRUUklCX01BWF9GT1JNQVQsCisgICAgICAgIERJUlRZX0JJVF9BVFRSSUJfTUFYX0JJTkRJTkcg
PSBESVJUWV9CSVRfQVRUUklCXzBfQklORElORyArIGdsOjpNQVhfVkVSVEVYX0FUVFJJQlMsCiAK
LSAgICAgICAgRElSVFlfQklUX1VOS05PV04gPSBESVJUWV9CSVRfQVRUUklCX01BWF9ESVZJU09S
LAorICAgICAgICAvLyBSZXNlcnZlIGJpdHMgZm9yIGNoYW5nZXMgdG8gQmluZFZlcnRleEJ1ZmZl
cgorICAgICAgICBESVJUWV9CSVRfQklORElOR18wX0JVRkZFUiAgID0gRElSVFlfQklUX0FUVFJJ
Ql9NQVhfQklORElORywKKyAgICAgICAgRElSVFlfQklUX0JJTkRJTkdfTUFYX0JVRkZFUiA9IERJ
UlRZX0JJVF9CSU5ESU5HXzBfQlVGRkVSICsgZ2w6Ok1BWF9WRVJURVhfQVRUUklCX0JJTkRJTkdT
LAorCisgICAgICAgIC8vIFJlc2VydmUgYml0cyBmb3IgYmluZGluZyBkaXZpc29ycworICAgICAg
ICBESVJUWV9CSVRfQklORElOR18wX0RJVklTT1IgPSBESVJUWV9CSVRfQklORElOR19NQVhfQlVG
RkVSLAorICAgICAgICBESVJUWV9CSVRfQklORElOR19NQVhfRElWSVNPUiA9CisgICAgICAgICAg
ICBESVJUWV9CSVRfQklORElOR18wX0RJVklTT1IgKyBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJfQklO
RElOR1MsCisKKyAgICAgICAgRElSVFlfQklUX1VOS05PV04gPSBESVJUWV9CSVRfQklORElOR19N
QVhfRElWSVNPUiwKICAgICAgICAgRElSVFlfQklUX01BWCAgICAgPSBESVJUWV9CSVRfVU5LTk9X
TiwKICAgICB9OwogCiAgICAgdHlwZWRlZiBzdGQ6OmJpdHNldDxESVJUWV9CSVRfTUFYPiBEaXJ0
eUJpdHM7CiAKLSAgICB2b2lkIHN5bmNJbXBsU3RhdGUoKTsKKyAgICBzdGF0aWMgc2l6ZV90IEdl
dEF0dHJpYkluZGV4KHVuc2lnbmVkIGxvbmcgZGlydHlCaXQpOworCisgICAgdm9pZCBzeW5jSW1w
bFN0YXRlKGNvbnN0IENvbnRleHQgKmNvbnRleHQpOwogICAgIGJvb2wgaGFzQW55RGlydHlCaXQo
KSBjb25zdCB7IHJldHVybiBtRGlydHlCaXRzLmFueSgpOyB9CiAKICAgcHJpdmF0ZToKQEAgLTEy
NSw2ICsxODQsNiBAQCBjbGFzcyBWZXJ0ZXhBcnJheSBmaW5hbCA6IHB1YmxpYyBMYWJlbGVkT2Jq
ZWN0CiAgICAgcng6OlZlcnRleEFycmF5SW1wbCAqbVZlcnRleEFycmF5OwogfTsKIAotfQorfSAg
Ly8gbmFtZXNwYWNlIGdsCiAKICNlbmRpZiAvLyBMSUJBTkdMRV9WRVJURVhBUlJBWV9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnRleEFycmF5
X3VuaXR0ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJ0
ZXhBcnJheV91bml0dGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjZkOWEwOWJiMjcyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL1ZlcnRleEFycmF5X3VuaXR0ZXN0LmNwcApAQCAtMCwwICsxLDU5IEBA
CisvLworLy8gQ29weXJpZ2h0IDIwMTcgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCisvLworLy8gVW5pdCB0ZXN0cyBmb3IgVmVydGV4QXJyYXkgYW5kIHJlbGF0ZWQgY2xh
c3Nlcy4KKy8vCisKKyNpbmNsdWRlICJnbW9jay9nbW9jay5oIgorI2luY2x1ZGUgImd0ZXN0L2d0
ZXN0LmgiCisKKyNpbmNsdWRlICJjb21tb24vYml0c2V0X3V0aWxzLmgiCisjaW5jbHVkZSAiY29t
bW9uL3V0aWxpdGllcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1ZlcnRleEFycmF5LmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBnbDsKKworLy8gVGVzdHMgdGhhdCBmdW5jdGlvbiBHZXRBdHRyaWJJbmRl
eCBjb21wdXRlcyB0aGUgaW5kZXggcHJvcGVybHkuCitURVNUKFZlcnRleEFycmF5VGVzdCwgVmVy
aWZ5R2V0QXR0cmliSW5kZXgpCit7CisgICAgVmVydGV4QXJyYXk6OkRpcnR5Qml0cyBkaXJ0eUJp
dHM7CisgICAgc2l6ZV90IGJpdHNbXSA9IHsxLCA0LCA5LCAxNiwgMjUsIDM2LCA0OSwgNjQsIDgx
LCA5MH07CisgICAgaW50IGNvdW50ICAgICA9IHNpemVvZihiaXRzKSAvIHNpemVvZihzaXplX3Qp
OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICB7CisgICAgICAgIGRp
cnR5Qml0cy5zZXQoYml0c1tpXSk7CisgICAgfQorCisgICAgZm9yICh1bnNpZ25lZCBsb25nIGRp
cnR5Qml0IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQoZGlydHlCaXRzKSkKKyAgICB7CisgICAgICAg
IHNpemVfdCBpbmRleCA9IFZlcnRleEFycmF5OjpHZXRBdHRyaWJJbmRleChkaXJ0eUJpdCk7Cisg
ICAgICAgIGlmIChkaXJ0eUJpdCA8IFZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRUUklCX01BWF9F
TkFCTEVEKQorICAgICAgICB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZGlydHlCaXQgLSBWZXJ0
ZXhBcnJheTo6RElSVFlfQklUX0FUVFJJQl8wX0VOQUJMRUQsIGluZGV4KTsKKyAgICAgICAgfQor
ICAgICAgICBlbHNlIGlmIChkaXJ0eUJpdCA8IFZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRUUklC
X01BWF9QT0lOVEVSKQorICAgICAgICB7CisgICAgICAgICAgICBFWFBFQ1RfRVEoZGlydHlCaXQg
LSBWZXJ0ZXhBcnJheTo6RElSVFlfQklUX0FUVFJJQl8wX1BPSU5URVIsIGluZGV4KTsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlIGlmIChkaXJ0eUJpdCA8IFZlcnRleEFycmF5OjpESVJUWV9CSVRf
QVRUUklCX01BWF9GT1JNQVQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVYUEVDVF9FUShkaXJ0
eUJpdCAtIFZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRUUklCXzBfRk9STUFULCBpbmRleCk7Cisg
ICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZGlydHlCaXQgPCBWZXJ0ZXhBcnJheTo6RElSVFlf
QklUX0FUVFJJQl9NQVhfQklORElORykKKyAgICAgICAgeworICAgICAgICAgICAgRVhQRUNUX0VR
KGRpcnR5Qml0IC0gVmVydGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJfMF9CSU5ESU5HLCBpbmRl
eCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZGlydHlCaXQgPCBWZXJ0ZXhBcnJheTo6
RElSVFlfQklUX0JJTkRJTkdfTUFYX0JVRkZFUikKKyAgICAgICAgeworICAgICAgICAgICAgRVhQ
RUNUX0VRKGRpcnR5Qml0IC0gVmVydGV4QXJyYXk6OkRJUlRZX0JJVF9CSU5ESU5HXzBfQlVGRkVS
LCBpbmRleCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZGlydHlCaXQgPCBWZXJ0ZXhB
cnJheTo6RElSVFlfQklUX0JJTkRJTkdfTUFYX0RJVklTT1IpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEVYUEVDVF9FUShkaXJ0eUJpdCAtIFZlcnRleEFycmF5OjpESVJUWV9CSVRfQklORElOR18w
X0RJVklTT1IsIGluZGV4KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBB
U1NFUlRfVFJVRShmYWxzZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnRleEF0dHJpYnV0ZS5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVydGV4QXR0cmlidXRlLmNwcAppbmRleCAxM2Q3OGZk
MTNjMS4uMTYyMTA3NWE2OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuY3BwCkBAIC0zLDcgKzMsNyBAQAogLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCi0vLyBJbXBs
ZW1lbnRhdGlvbiBvZiB0aGUgc3RhdGUgY2xhc3MgZm9yIG1hbmFuZ2luZyBHTEVTIDMgVmVydGV4
IEFycmF5IE9iamVjdHMuCisvLyBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3RhdGUgY2xhc3NlcyBm
b3IgbWFuYW5naW5nIEdMRVMgMy4xIFZlcnRleCBBcnJheSBPYmplY3RzLgogLy8KIAogI2luY2x1
ZGUgImxpYkFOR0xFL1ZlcnRleEF0dHJpYnV0ZS5oIgpAQCAtMTEsMTggKzExLDc0IEBACiBuYW1l
c3BhY2UgZ2wKIHsKIAotVmVydGV4QXR0cmlidXRlOjpWZXJ0ZXhBdHRyaWJ1dGUoKQorLy8gW09w
ZW5HTCBFUyAzLjFdIChOb3ZlbWJlciAzLCAyMDE2KSBTZWN0aW9uIDIwIFBhZ2UgMzYxCisvLyBU
YWJsZSAyMC4yOiBWZXJ0ZXggQXJyYXkgT2JqZWN0IFN0YXRlCitWZXJ0ZXhCaW5kaW5nOjpWZXJ0
ZXhCaW5kaW5nKCkgOiBzdHJpZGUoMTZ1KSwgZGl2aXNvcigwKSwgb2Zmc2V0KDApCit7Cit9CisK
K1ZlcnRleEJpbmRpbmc6OlZlcnRleEJpbmRpbmcoVmVydGV4QmluZGluZyAmJmJpbmRpbmcpCit7
CisgICAgKnRoaXMgPSBzdGQ6Om1vdmUoYmluZGluZyk7Cit9CisKK1ZlcnRleEJpbmRpbmcgJlZl
cnRleEJpbmRpbmc6Om9wZXJhdG9yPShWZXJ0ZXhCaW5kaW5nICYmYmluZGluZykKK3sKKyAgICBp
ZiAodGhpcyAhPSAmYmluZGluZykKKyAgICB7CisgICAgICAgIHN0cmlkZSAgPSBiaW5kaW5nLnN0
cmlkZTsKKyAgICAgICAgZGl2aXNvciA9IGJpbmRpbmcuZGl2aXNvcjsKKyAgICAgICAgb2Zmc2V0
ICA9IGJpbmRpbmcub2Zmc2V0OworCisgICAgICAgIGJ1ZmZlci5zZXQoYmluZGluZy5idWZmZXIu
Z2V0KCkpOworICAgICAgICBiaW5kaW5nLmJ1ZmZlci5zZXQobnVsbHB0cik7CisgICAgfQorICAg
IHJldHVybiAqdGhpczsKK30KKworVmVydGV4QXR0cmlidXRlOjpWZXJ0ZXhBdHRyaWJ1dGUoR0x1
aW50IGJpbmRpbmdJbmRleCkKICAgICA6IGVuYWJsZWQoZmFsc2UpLAogICAgICAgdHlwZShHTF9G
TE9BVCksCi0gICAgICBzaXplKDQpLAorICAgICAgc2l6ZSg0dSksCiAgICAgICBub3JtYWxpemVk
KGZhbHNlKSwKICAgICAgIHB1cmVJbnRlZ2VyKGZhbHNlKSwKLSAgICAgIHN0cmlkZSgwKSwKLSAg
ICAgIHBvaW50ZXIoTlVMTCksCi0gICAgICBkaXZpc29yKDApCisgICAgICBwb2ludGVyKG51bGxw
dHIpLAorICAgICAgcmVsYXRpdmVPZmZzZXQoMCksCisgICAgICB2ZXJ0ZXhBdHRyaWJBcnJheVN0
cmlkZSgwKSwKKyAgICAgIGJpbmRpbmdJbmRleChiaW5kaW5nSW5kZXgpCiB7CiB9CiAKK1ZlcnRl
eEF0dHJpYnV0ZTo6VmVydGV4QXR0cmlidXRlKFZlcnRleEF0dHJpYnV0ZSAmJmF0dHJpYikKKyAg
ICA6IGVuYWJsZWQoYXR0cmliLmVuYWJsZWQpLAorICAgICAgdHlwZShhdHRyaWIudHlwZSksCisg
ICAgICBzaXplKGF0dHJpYi5zaXplKSwKKyAgICAgIG5vcm1hbGl6ZWQoYXR0cmliLm5vcm1hbGl6
ZWQpLAorICAgICAgcHVyZUludGVnZXIoYXR0cmliLnB1cmVJbnRlZ2VyKSwKKyAgICAgIHBvaW50
ZXIoYXR0cmliLnBvaW50ZXIpLAorICAgICAgcmVsYXRpdmVPZmZzZXQoYXR0cmliLnJlbGF0aXZl
T2Zmc2V0KSwKKyAgICAgIHZlcnRleEF0dHJpYkFycmF5U3RyaWRlKGF0dHJpYi52ZXJ0ZXhBdHRy
aWJBcnJheVN0cmlkZSksCisgICAgICBiaW5kaW5nSW5kZXgoYXR0cmliLmJpbmRpbmdJbmRleCkK
K3sKK30KKworVmVydGV4QXR0cmlidXRlICZWZXJ0ZXhBdHRyaWJ1dGU6Om9wZXJhdG9yPShWZXJ0
ZXhBdHRyaWJ1dGUgJiZhdHRyaWIpCit7CisgICAgaWYgKHRoaXMgIT0gJmF0dHJpYikKKyAgICB7
CisgICAgICAgIGVuYWJsZWQgICAgICAgICAgICAgICAgID0gYXR0cmliLmVuYWJsZWQ7CisgICAg
ICAgIHR5cGUgICAgICAgICAgICAgICAgICAgID0gYXR0cmliLnR5cGU7CisgICAgICAgIHNpemUg
ICAgICAgICAgICAgICAgICAgID0gYXR0cmliLnNpemU7CisgICAgICAgIG5vcm1hbGl6ZWQgICAg
ICAgICAgICAgID0gYXR0cmliLm5vcm1hbGl6ZWQ7CisgICAgICAgIHB1cmVJbnRlZ2VyICAgICAg
ICAgICAgID0gYXR0cmliLnB1cmVJbnRlZ2VyOworICAgICAgICBwb2ludGVyICAgICAgICAgICAg
ICAgICA9IGF0dHJpYi5wb2ludGVyOworICAgICAgICByZWxhdGl2ZU9mZnNldCAgICAgICAgICA9
IGF0dHJpYi5yZWxhdGl2ZU9mZnNldDsKKyAgICAgICAgdmVydGV4QXR0cmliQXJyYXlTdHJpZGUg
PSBhdHRyaWIudmVydGV4QXR0cmliQXJyYXlTdHJpZGU7CisgICAgICAgIGJpbmRpbmdJbmRleCAg
ICAgICAgICAgID0gYXR0cmliLmJpbmRpbmdJbmRleDsKKyAgICB9CisgICAgcmV0dXJuICp0aGlz
OworfQorCiBzaXplX3QgQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVR5cGVTaXplKGNvbnN0IFZlcnRl
eEF0dHJpYnV0ZSYgYXR0cmliKQogewogICAgIEdMdWludCBzaXplID0gYXR0cmliLnNpemU7CkBA
IC00MywzMiArOTksMzcgQEAgc2l6ZV90IENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVUeXBlU2l6ZShj
b25zdCBWZXJ0ZXhBdHRyaWJ1dGUmIGF0dHJpYikKICAgICB9CiB9CiAKLXNpemVfdCBDb21wdXRl
VmVydGV4QXR0cmlidXRlU3RyaWRlKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSYgYXR0cmliKQorc2l6
ZV90IENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJpZGUoY29uc3QgVmVydGV4QXR0cmlidXRlICZh
dHRyaWIsIGNvbnN0IFZlcnRleEJpbmRpbmcgJmJpbmRpbmcpCiB7Ci0gICAgaWYgKCFhdHRyaWIu
ZW5hYmxlZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAxNjsKLSAgICB9Ci0gICAgcmV0dXJuIGF0
dHJpYi5zdHJpZGUgPyBhdHRyaWIuc3RyaWRlIDogQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVR5cGVT
aXplKGF0dHJpYik7CisgICAgLy8gSW4gRVMgMy4xLCBWZXJ0ZXhBdHRyaWJQb2ludGVyIHdpbGwg
c3RvcmUgdGhlIHR5cGUgc2l6ZSBpbiB0aGUgYmluZGluZyBzdHJpZGUuCisgICAgLy8gSGVuY2Us
IHJlbmRlcmluZyBhbHdheXMgdXNlcyB0aGUgYmluZGluZydzIHN0cmlkZS4KKyAgICByZXR1cm4g
YXR0cmliLmVuYWJsZWQgPyBiaW5kaW5nLnN0cmlkZSA6IDE2dTsKK30KKworLy8gV2FybmluZzog
eW91IHNob3VsZCBlbnN1cmUgYmluZGluZyByZWFsbHkgbWF0Y2hlcyBhdHRyaWIuYmluZGluZ0lu
ZGV4IGJlZm9yZSB1c2luZyB0aGlzIGZ1bmN0aW9uLgorR0xpbnRwdHIgQ29tcHV0ZVZlcnRleEF0
dHJpYnV0ZU9mZnNldChjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgY29uc3QgVmVydGV4
QmluZGluZyAmYmluZGluZykKK3sKKyAgICByZXR1cm4gYXR0cmliLnJlbGF0aXZlT2Zmc2V0ICsg
YmluZGluZy5vZmZzZXQ7CiB9CiAKLXNpemVfdCBDb21wdXRlVmVydGV4QXR0cmlidXRlRWxlbWVu
dENvdW50KGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRyYXdDb3VudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnN0YW5jZUNvdW50KQorc2l6ZV90
IENvbXB1dGVWZXJ0ZXhCaW5kaW5nRWxlbWVudENvdW50KGNvbnN0IFZlcnRleEJpbmRpbmcgJmJp
bmRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRy
YXdDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
aW5zdGFuY2VDb3VudCkKIHsKICAgICAvLyBGb3IgaW5zdGFuY2VkIHJlbmRlcmluZywgd2UgZHJh
dyAiaW5zdGFuY2VEcmF3Q291bnQiIHNldHMgb2YgInZlcnRleERyYXdDb3VudCIgdmVydGljZXMu
CiAgICAgLy8KICAgICAvLyBBIHZlcnRleCBhdHRyaWJ1dGUgd2l0aCBhIHBvc2l0aXZlIGRpdmlz
b3IgbG9hZHMgb25lIGluc3RhbmNlZCB2ZXJ0ZXggZm9yIGV2ZXJ5IHNldCBvZgogICAgIC8vIG5v
bi1pbnN0YW5jZWQgdmVydGljZXMsIGFuZCB0aGUgaW5zdGFuY2VkIHZlcnRleCBpbmRleCBhZHZh
bmNlcyBvbmNlIGV2ZXJ5ICJtRGl2aXNvciIKICAgICAvLyBpbnN0YW5jZXMuCi0gICAgaWYgKGlu
c3RhbmNlQ291bnQgPiAwICYmIGF0dHJpYi5kaXZpc29yID4gMCkKKyAgICBpZiAoaW5zdGFuY2VD
b3VudCA+IDAgJiYgYmluZGluZy5kaXZpc29yID4gMCkKICAgICB7CiAgICAgICAgIC8vIFdoZW4g
aW5zdGFuY2VEcmF3Q291bnQgaXMgbm90IGEgbXVsdGlwbGUgYXR0cmliLmRpdmlzb3IsIHRoZSBk
aXZpc2lvbiBtdXN0IHJvdW5kIHVwLgogICAgICAgICAvLyBGb3IgaW5zdGFuY2UsIHdpdGggNSBu
b24taW5zdGFuY2VkIHZlcnRpY2VzIGFuZCBhIGRpdmlzb3IgZXF1YWwgdG8gMywgd2UgbmVlZCAy
IGluc3RhbmNlZAogICAgICAgICAvLyB2ZXJ0aWNlcy4KLSAgICAgICAgcmV0dXJuIChpbnN0YW5j
ZUNvdW50ICsgYXR0cmliLmRpdmlzb3IgLSAxdSkgLyBhdHRyaWIuZGl2aXNvcjsKKyAgICAgICAg
cmV0dXJuIChpbnN0YW5jZUNvdW50ICsgYmluZGluZy5kaXZpc29yIC0gMXUpIC8gYmluZGluZy5k
aXZpc29yOwogICAgIH0KIAogICAgIHJldHVybiBkcmF3Q291bnQ7CiB9Ci19CisKK30gIC8vIG5h
bWVzcGFjZSBnbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL1ZlcnRleEF0dHJpYnV0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL1ZlcnRleEF0dHJpYnV0ZS5oCmluZGV4IGE4Y2M4NTczYjM1Li40MjA4YmE3NGNiZiAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1ZlcnRleEF0dHJp
YnV0ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9WZXJ0ZXhB
dHRyaWJ1dGUuaApAQCAtMyw3ICszLDcgQEAKIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCiAvLwotLy8gSGVscGVyIHN0cnVjdHVyZSBkZXNjcmliaW5nIGEg
c2luZ2xlIHZlcnRleCBhdHRyaWJ1dGUKKy8vIEhlbHBlciBzdHJ1Y3R1cmVzIGFib3V0IEdlbmVy
aWMgVmVydGV4IEF0dHJpYnV0ZS4KIC8vCiAKICNpZm5kZWYgTElCQU5HTEVfVkVSVEVYQVRUUklC
VVRFX0hfCkBAIC0xMywzNyArMTMsNjIgQEAKIAogbmFtZXNwYWNlIGdsCiB7CitjbGFzcyBWZXJ0
ZXhBcnJheTsKIAotc3RydWN0IFZlcnRleEF0dHJpYnV0ZQorLy8KKy8vIEltcGxlbWVudGF0aW9u
IG9mIEdlbmVyaWMgVmVydGV4IEF0dHJpYnV0ZSBCaW5kaW5ncyBmb3IgRVMzLjEKKy8vCitzdHJ1
Y3QgVmVydGV4QmluZGluZyBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICAgIFZlcnRl
eEJpbmRpbmcoKTsKKyAgICBleHBsaWNpdCBWZXJ0ZXhCaW5kaW5nKFZlcnRleEJpbmRpbmcgJiZi
aW5kaW5nKTsKKyAgICBWZXJ0ZXhCaW5kaW5nICZvcGVyYXRvcj0oVmVydGV4QmluZGluZyAmJmJp
bmRpbmcpOworCisgICAgR0x1aW50IHN0cmlkZTsKKyAgICBHTHVpbnQgZGl2aXNvcjsKKyAgICBH
TGludHB0ciBvZmZzZXQ7CisKKyAgICBCaW5kaW5nUG9pbnRlcjxCdWZmZXI+IGJ1ZmZlcjsKK307
CisKKy8vCisvLyBJbXBsZW1lbnRhdGlvbiBvZiBHZW5lcmljIFZlcnRleCBBdHRyaWJ1dGVzIGZv
ciBFUzMuMQorLy8KK3N0cnVjdCBWZXJ0ZXhBdHRyaWJ1dGUgZmluYWwgOiBhbmdsZTo6Tm9uQ29w
eWFibGUKIHsKLSAgICBib29sIGVuYWJsZWQ7IC8vIEZyb20gZ2xFbmFibGUvRGlzYWJsZVZlcnRl
eEF0dHJpYkFycmF5CisgICAgZXhwbGljaXQgVmVydGV4QXR0cmlidXRlKEdMdWludCBiaW5kaW5n
SW5kZXgpOworICAgIGV4cGxpY2l0IFZlcnRleEF0dHJpYnV0ZShWZXJ0ZXhBdHRyaWJ1dGUgJiZh
dHRyaWIpOworICAgIFZlcnRleEF0dHJpYnV0ZSAmb3BlcmF0b3I9KFZlcnRleEF0dHJpYnV0ZSAm
JmF0dHJpYik7CiAKKyAgICBib29sIGVuYWJsZWQ7ICAvLyBGb3IgZ2xFbmFibGUvRGlzYWJsZVZl
cnRleEF0dHJpYkFycmF5CiAgICAgR0xlbnVtIHR5cGU7CiAgICAgR0x1aW50IHNpemU7CiAgICAg
Ym9vbCBub3JtYWxpemVkOwogICAgIGJvb2wgcHVyZUludGVnZXI7Ci0gICAgR0x1aW50IHN0cmlk
ZTsgLy8gMCBtZWFucyBuYXR1cmFsIHN0cmlkZQogCi0gICAgdW5pb24KLSAgICB7Ci0gICAgICAg
IGNvbnN0IEdMdm9pZCAqcG9pbnRlcjsKLSAgICAgICAgR0xpbnRwdHIgb2Zmc2V0OwotICAgIH07
Ci0gICAgQmluZGluZ1BvaW50ZXI8QnVmZmVyPiBidWZmZXI7IC8vIENhcHR1cmVkIHdoZW4gZ2xW
ZXJ0ZXhBdHRyaWJQb2ludGVyIGlzIGNhbGxlZC4KKyAgICBjb25zdCBHTHZvaWQgKnBvaW50ZXI7
CisgICAgR0xpbnRwdHIgcmVsYXRpdmVPZmZzZXQ7CiAKLSAgICBHTHVpbnQgZGl2aXNvcjsKLQot
ICAgIFZlcnRleEF0dHJpYnV0ZSgpOworICAgIEdMdWludCB2ZXJ0ZXhBdHRyaWJBcnJheVN0cmlk
ZTsgIC8vIE9OTFkgZm9yIHF1ZXJpZXMgb2YgVkVSVEVYX0FUVFJJQl9BUlJBWV9TVFJJREUKKyAg
ICBHTHVpbnQgYmluZGluZ0luZGV4OwogfTsKIAogYm9vbCBvcGVyYXRvcj09KGNvbnN0IFZlcnRl
eEF0dHJpYnV0ZSAmYSwgY29uc3QgVmVydGV4QXR0cmlidXRlICZiKTsKIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmEsIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYik7Citi
b29sIG9wZXJhdG9yPT0oY29uc3QgVmVydGV4QmluZGluZyAmYSwgY29uc3QgVmVydGV4QmluZGlu
ZyAmYik7Citib29sIG9wZXJhdG9yIT0oY29uc3QgVmVydGV4QmluZGluZyAmYSwgY29uc3QgVmVy
dGV4QmluZGluZyAmYik7CisKK3NpemVfdCBDb21wdXRlVmVydGV4QXR0cmlidXRlVHlwZVNpemUo
Y29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIpOworCisvLyBXYXJuaW5nOiB5b3Ugc2hvdWxk
IGVuc3VyZSBiaW5kaW5nIHJlYWxseSBtYXRjaGVzIGF0dHJpYi5iaW5kaW5nSW5kZXggYmVmb3Jl
IHVzaW5nIHRoaXMgZnVuY3Rpb24uCitzaXplX3QgQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlk
ZShjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgY29uc3QgVmVydGV4QmluZGluZyAmYmlu
ZGluZyk7CisKKy8vIFdhcm5pbmc6IHlvdSBzaG91bGQgZW5zdXJlIGJpbmRpbmcgcmVhbGx5IG1h
dGNoZXMgYXR0cmliLmJpbmRpbmdJbmRleCBiZWZvcmUgdXNpbmcgdGhpcyBmdW5jdGlvbi4KK0dM
aW50cHRyIENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVPZmZzZXQoY29uc3QgVmVydGV4QXR0cmlidXRl
ICZhdHRyaWIsIGNvbnN0IFZlcnRleEJpbmRpbmcgJmJpbmRpbmcpOwogCi1zaXplX3QgQ29tcHV0
ZVZlcnRleEF0dHJpYnV0ZVR5cGVTaXplKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSYgYXR0cmliKTsK
LXNpemVfdCBDb21wdXRlVmVydGV4QXR0cmlidXRlU3RyaWRlKGNvbnN0IFZlcnRleEF0dHJpYnV0
ZSYgYXR0cmliKTsKLXNpemVfdCBDb21wdXRlVmVydGV4QXR0cmlidXRlRWxlbWVudENvdW50KGNv
bnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGRyYXdDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbnN0YW5jZUNvdW50KTsKK3NpemVfdCBDb21wdXRl
VmVydGV4QmluZGluZ0VsZW1lbnRDb3VudChjb25zdCBWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkcmF3Q291bnQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGluc3RhbmNl
Q291bnQpOwogCiBzdHJ1Y3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YQogewpAQCAtNjUs
NyArOTAsNyBAQCBzdHJ1Y3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YQogYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmEsIGNvbnN0IFZlcnRl
eEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmIpOwogYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZlcnRl
eEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmEsIGNvbnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1
ZURhdGEgJmIpOwogCi19Cit9ICAvLyBuYW1lc3BhY2UgZ2wKIAogI2luY2x1ZGUgIlZlcnRleEF0
dHJpYnV0ZS5pbmwiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9WZXJ0ZXhBdHRyaWJ1dGUuaW5sIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL1ZlcnRleEF0dHJpYnV0ZS5pbmwKaW5kZXggYTFmODhmMzE3N2YuLmMwZDI2ODBm
OTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvVmVy
dGV4QXR0cmlidXRlLmlubAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvVmVydGV4QXR0cmlidXRlLmlubApAQCAtOSw2ICs5LDE5IEBACiBuYW1lc3BhY2UgZ2wKIHsK
IAoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWZXJ0ZXhCaW5kaW5nICZhLCBjb25zdCBW
ZXJ0ZXhCaW5kaW5nICZiKQoreworICAgIHJldHVybiBhLnN0cmlkZSA9PSBiLnN0cmlkZSAmJgor
ICAgICAgICAgICBhLmRpdmlzb3IgPT0gYi5kaXZpc29yICYmCisgICAgICAgICAgIGEub2Zmc2V0
ID09IGIub2Zmc2V0ICYmCisgICAgICAgICAgIGEuYnVmZmVyLmdldCgpID09IGIuYnVmZmVyLmdl
dCgpOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZlcnRleEJpbmRpbmcgJmEs
IGNvbnN0IFZlcnRleEJpbmRpbmcgJmIpCit7CisgICAgcmV0dXJuICEoYSA9PSBiKTsKK30KKwog
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmEsIGNvbnN0IFZl
cnRleEF0dHJpYnV0ZSAmYikKIHsKICAgICByZXR1cm4gYS5lbmFibGVkID09IGIuZW5hYmxlZCAm
JgpAQCAtMTYsMTAgKzI5LDEwIEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVmVydGV4
QXR0cmlidXRlICZhLCBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmIpCiAgICAgICAgICAgIGEuc2l6
ZSA9PSBiLnNpemUgJiYKICAgICAgICAgICAgYS5ub3JtYWxpemVkID09IGIubm9ybWFsaXplZCAm
JgogICAgICAgICAgICBhLnB1cmVJbnRlZ2VyID09IGIucHVyZUludGVnZXIgJiYKLSAgICAgICAg
ICAgYS5zdHJpZGUgPT0gYi5zdHJpZGUgJiYKICAgICAgICAgICAgYS5wb2ludGVyID09IGIucG9p
bnRlciAmJgotICAgICAgICAgICBhLmJ1ZmZlci5nZXQoKSA9PSBiLmJ1ZmZlci5nZXQoKSAmJgot
ICAgICAgICAgICBhLmRpdmlzb3IgPT0gYi5kaXZpc29yOworICAgICAgICAgICBhLnJlbGF0aXZl
T2Zmc2V0ID09IGIucmVsYXRpdmVPZmZzZXQgJiYKKyAgICAgICAgICAgYS52ZXJ0ZXhBdHRyaWJB
cnJheVN0cmlkZSA9PSBiLnZlcnRleEF0dHJpYkFycmF5U3RyaWRlICYmCisgICAgICAgICAgIGEu
YmluZGluZ0luZGV4ID09IGIuYmluZGluZ0luZGV4OwogfQogCiBpbmxpbmUgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYSwgY29uc3QgVmVydGV4QXR0cmlidXRlICZiKQpA
QCAtNzMsNCArODYsNCBAQCBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFZlcnRleEF0dHJp
YkN1cnJlbnRWYWx1ZURhdGEgJmEsIGNvbnN0IFZlcnRleEF0dHJpYgogICAgIHJldHVybiAhKGEg
PT0gYik7CiB9CiAKLX0KK30gIC8vIG5hbWVzcGFjZSBnbApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1dvcmtlclRocmVhZC5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvV29ya2VyVGhyZWFkLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjVkNzg5ZWY5MzYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvV29ya2VyVGhyZWFkLmNwcApA
QCAtMCwwICsxLDE1NyBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIFdvcmtlclRocmVhZDoKKy8vICAgVGFzayBy
dW5uaW5nIHRocmVhZCBmb3IgQU5HTEUsIHNpbWlsYXIgdG8gYSBUYXNrUnVubmVyIGluIENocm9t
aXVtLgorLy8gICBNaWdodCBiZSBpbXBsZW1lbnRlZCBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24g
cGxhdGZvcm0uCisvLworCisjaW5jbHVkZSAibGliQU5HTEUvV29ya2VyVGhyZWFkLmgiCisKK25h
bWVzcGFjZSBhbmdsZQoreworCituYW1lc3BhY2UgcHJpdgoreworLy8gU2luZ2xlVGhyZWFkZWRX
b3JrZXJQb29sIGltcGxlbWVudGF0aW9uLgorU2luZ2xlVGhyZWFkZWRXb3JrZXJQb29sOjpTaW5n
bGVUaHJlYWRlZFdvcmtlclBvb2woc2l6ZV90IG1heFRocmVhZHMpCisgICAgOiBXb3JrZXJUaHJl
YWRQb29sQmFzZShtYXhUaHJlYWRzKQoreworfQorCitTaW5nbGVUaHJlYWRlZFdvcmtlclBvb2w6
On5TaW5nbGVUaHJlYWRlZFdvcmtlclBvb2woKQoreworfQorCitTaW5nbGVUaHJlYWRlZFdhaXRh
YmxlRXZlbnQgU2luZ2xlVGhyZWFkZWRXb3JrZXJQb29sOjpwb3N0V29ya2VyVGFza0ltcGwoQ2xv
c3VyZSAqdGFzaykKK3sKKyAgICAoKnRhc2spKCk7CisgICAgcmV0dXJuIFNpbmdsZVRocmVhZGVk
V2FpdGFibGVFdmVudChFdmVudFJlc2V0UG9saWN5OjpBdXRvbWF0aWMsIEV2ZW50SW5pdGlhbFN0
YXRlOjpTaWduYWxlZCk7Cit9CisKKy8vIFNpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudCBpbXBs
ZW1lbnRhdGlvbi4KK1NpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudDo6U2luZ2xlVGhyZWFkZWRX
YWl0YWJsZUV2ZW50KCkKKyAgICA6IFNpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudChFdmVudFJl
c2V0UG9saWN5OjpBdXRvbWF0aWMsIEV2ZW50SW5pdGlhbFN0YXRlOjpOb25TaWduYWxlZCkKK3sK
K30KKworU2luZ2xlVGhyZWFkZWRXYWl0YWJsZUV2ZW50OjpTaW5nbGVUaHJlYWRlZFdhaXRhYmxl
RXZlbnQoRXZlbnRSZXNldFBvbGljeSByZXNldFBvbGljeSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50SW5pdGlhbFN0YXRlIGlu
aXRpYWxTdGF0ZSkKKyAgICA6IFdhaXRhYmxlRXZlbnRCYXNlKHJlc2V0UG9saWN5LCBpbml0aWFs
U3RhdGUpCit7Cit9CisKK1NpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudDo6flNpbmdsZVRocmVh
ZGVkV2FpdGFibGVFdmVudCgpCit7Cit9CisKK1NpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudDo6
U2luZ2xlVGhyZWFkZWRXYWl0YWJsZUV2ZW50KFNpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudCAm
Jm90aGVyKQorICAgIDogV2FpdGFibGVFdmVudEJhc2Uoc3RkOjptb3ZlKG90aGVyKSkKK3sKK30K
KworU2luZ2xlVGhyZWFkZWRXYWl0YWJsZUV2ZW50ICZTaW5nbGVUaHJlYWRlZFdhaXRhYmxlRXZl
bnQ6Om9wZXJhdG9yPSgKKyAgICBTaW5nbGVUaHJlYWRlZFdhaXRhYmxlRXZlbnQgJiZvdGhlcikK
K3sKKyAgICByZXR1cm4gY29weUJhc2Uoc3RkOjptb3ZlKG90aGVyKSk7Cit9CisKK3ZvaWQgU2lu
Z2xlVGhyZWFkZWRXYWl0YWJsZUV2ZW50OjpyZXNldEltcGwoKQoreworICAgIG1TaWduYWxlZCA9
IGZhbHNlOworfQorCit2b2lkIFNpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudDo6d2FpdEltcGwo
KQoreworfQorCit2b2lkIFNpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudDo6c2lnbmFsSW1wbCgp
Cit7CisgICAgbVNpZ25hbGVkID0gdHJ1ZTsKK30KKworI2lmIChBTkdMRV9TVERfQVNZTkNfV09S
S0VSUyA9PSBBTkdMRV9FTkFCTEVEKQorLy8gQXN5bmNXb3JrZXJQb29sIGltcGxlbWVudGF0aW9u
LgorQXN5bmNXb3JrZXJQb29sOjpBc3luY1dvcmtlclBvb2woc2l6ZV90IG1heFRocmVhZHMpIDog
V29ya2VyVGhyZWFkUG9vbEJhc2UobWF4VGhyZWFkcykKK3sKK30KKworQXN5bmNXb3JrZXJQb29s
Ojp+QXN5bmNXb3JrZXJQb29sKCkKK3sKK30KKworQXN5bmNXYWl0YWJsZUV2ZW50IEFzeW5jV29y
a2VyUG9vbDo6cG9zdFdvcmtlclRhc2tJbXBsKENsb3N1cmUgKnRhc2spCit7CisgICAgYXV0byBm
dXR1cmUgPSBzdGQ6OmFzeW5jKHN0ZDo6bGF1bmNoOjphc3luYywgW3Rhc2tdIHsgKCp0YXNrKSgp
OyB9KTsKKworICAgIEFzeW5jV2FpdGFibGVFdmVudCB3YWl0YWJsZShFdmVudFJlc2V0UG9saWN5
OjpBdXRvbWF0aWMsIEV2ZW50SW5pdGlhbFN0YXRlOjpOb25TaWduYWxlZCk7CisKKyAgICB3YWl0
YWJsZS5zZXRGdXR1cmUoc3RkOjptb3ZlKGZ1dHVyZSkpOworCisgICAgcmV0dXJuIHdhaXRhYmxl
OworfQorCisvLyBBc3luY1dhaXRhYmxlRXZlbnQgaW1wbGVtZW50YXRpb24uCitBc3luY1dhaXRh
YmxlRXZlbnQ6OkFzeW5jV2FpdGFibGVFdmVudCgpCisgICAgOiBBc3luY1dhaXRhYmxlRXZlbnQo
RXZlbnRSZXNldFBvbGljeTo6QXV0b21hdGljLCBFdmVudEluaXRpYWxTdGF0ZTo6Tm9uU2lnbmFs
ZWQpCit7Cit9CisKK0FzeW5jV2FpdGFibGVFdmVudDo6QXN5bmNXYWl0YWJsZUV2ZW50KEV2ZW50
UmVzZXRQb2xpY3kgcmVzZXRQb2xpY3ksIEV2ZW50SW5pdGlhbFN0YXRlIGluaXRpYWxTdGF0ZSkK
KyAgICA6IFdhaXRhYmxlRXZlbnRCYXNlKHJlc2V0UG9saWN5LCBpbml0aWFsU3RhdGUpCit7Cit9
CisKK0FzeW5jV2FpdGFibGVFdmVudDo6fkFzeW5jV2FpdGFibGVFdmVudCgpCit7Cit9CisKK0Fz
eW5jV2FpdGFibGVFdmVudDo6QXN5bmNXYWl0YWJsZUV2ZW50KEFzeW5jV2FpdGFibGVFdmVudCAm
Jm90aGVyKQorICAgIDogV2FpdGFibGVFdmVudEJhc2Uoc3RkOjptb3ZlKG90aGVyKSksIG1GdXR1
cmUoc3RkOjptb3ZlKG90aGVyLm1GdXR1cmUpKQoreworfQorCitBc3luY1dhaXRhYmxlRXZlbnQg
JkFzeW5jV2FpdGFibGVFdmVudDo6b3BlcmF0b3I9KEFzeW5jV2FpdGFibGVFdmVudCAmJm90aGVy
KQoreworICAgIHN0ZDo6c3dhcChtRnV0dXJlLCBvdGhlci5tRnV0dXJlKTsKKyAgICByZXR1cm4g
Y29weUJhc2Uoc3RkOjptb3ZlKG90aGVyKSk7Cit9CisKK3ZvaWQgQXN5bmNXYWl0YWJsZUV2ZW50
OjpzZXRGdXR1cmUoc3RkOjpmdXR1cmU8dm9pZD4gJiZmdXR1cmUpCit7CisgICAgbUZ1dHVyZSA9
IHN0ZDo6bW92ZShmdXR1cmUpOworfQorCit2b2lkIEFzeW5jV2FpdGFibGVFdmVudDo6cmVzZXRJ
bXBsKCkKK3sKKyAgICBtU2lnbmFsZWQgPSBmYWxzZTsKKyAgICBtRnV0dXJlICAgPSBzdGQ6OmZ1
dHVyZTx2b2lkPigpOworfQorCit2b2lkIEFzeW5jV2FpdGFibGVFdmVudDo6d2FpdEltcGwoKQor
eworICAgIGlmIChtU2lnbmFsZWQgfHwgIW1GdXR1cmUudmFsaWQoKSkKKyAgICB7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtRnV0dXJlLndhaXQoKTsKKyAgICBzaWduYWwoKTsKK30K
Kwordm9pZCBBc3luY1dhaXRhYmxlRXZlbnQ6OnNpZ25hbEltcGwoKQoreworICAgIG1TaWduYWxl
ZCA9IHRydWU7CisKKyAgICBpZiAobVJlc2V0UG9saWN5ID09IEV2ZW50UmVzZXRQb2xpY3k6OkF1
dG9tYXRpYykKKyAgICB7CisgICAgICAgIHJlc2V0KCk7CisgICAgfQorfQorI2VuZGlmICAvLyAo
QU5HTEVfU1REX0FTWU5DX1dPUktFUlMgPT0gQU5HTEVfRU5BQkxFRCkKKworfSAgLy8gbmFtZXNw
YWNlIHByaXYKKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvV29ya2VyVGhyZWFkLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvV29ya2VyVGhyZWFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmY2YjgxZGNlMjEyCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1dvcmtlclRocmVhZC5oCkBAIC0wLDAg
KzEsMjg0IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworLy8gV29ya2VyVGhyZWFkOgorLy8gICBBc3ljaHJvbm91cyB0
YXNrcy90aHJlYWRzIGZvciBBTkdMRSwgc2ltaWxhciB0byBhIFRhc2tSdW5uZXIgaW4gQ2hyb21p
dW0uCisvLyAgIENhbiBiZSBpbXBsZW1lbnRlZCBhcyBkaWZmZXJlbnQgdGFyZ2V0cywgZGVwZW5k
aW5nIG9uIHBsYXRmb3JtLgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9XT1JLRVJfVEhSRUFEX0hf
CisjZGVmaW5lIExJQkFOR0xFX1dPUktFUl9USFJFQURfSF8KKworI2luY2x1ZGUgPGFycmF5Pgor
I2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL2ZlYXR1cmVzLmgiCisKKyNpZiAoQU5HTEVfU1REX0FTWU5DX1dPUktFUlMgPT0g
QU5HTEVfRU5BQkxFRCkKKyNpbmNsdWRlIDxmdXR1cmU+CisjZW5kaWYgIC8vIChBTkdMRV9TVERf
QVNZTkNfV09SS0VSUyA9PSBBTkdMRV9FTkFCTEVEKQorCituYW1lc3BhY2UgYW5nbGUKK3sKKy8v
IEluZGljYXRlcyB3aGV0aGVyIGEgV2FpdGFibGVFdmVudCBzaG91bGQgYXV0b21hdGljYWxseSBy
ZXNldCB0aGUgZXZlbnQgc3RhdGUgYWZ0ZXIgYSBzaW5nbGUKKy8vIHdhaXRpbmcgdGhyZWFkIGhh
cyBiZWVuIHJlbGVhc2VkIG9yIHJlbWFpbiBzaWduYWxlZCB1bnRpbCByZXNldCgpIGlzIG1hbnVh
bGx5IGludm9rZWQuCitlbnVtIGNsYXNzIEV2ZW50UmVzZXRQb2xpY3kKK3sKKyAgICBNYW51YWws
CisgICAgQXV0b21hdGljCit9OworCisvLyBTcGVjaWZ5IHRoZSBpbml0aWFsIHN0YXRlIG9uIGNy
ZWF0aW9uLgorZW51bSBjbGFzcyBFdmVudEluaXRpYWxTdGF0ZQoreworICAgIE5vblNpZ25hbGVk
LAorICAgIFNpZ25hbGVkCit9OworCisvLyBBIGNhbGxiYWNrIGZ1bmN0aW9uIHdpdGggbm8gcmV0
dXJuIHZhbHVlIGFuZCBubyBhcmd1bWVudHMuCitjbGFzcyBDbG9zdXJlCit7CisgIHB1YmxpYzoK
KyAgICB2aXJ0dWFsIH5DbG9zdXJlKCkgICAgICAgID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIHZv
aWQgb3BlcmF0b3IoKSgpID0gMDsKK307CisKK25hbWVzcGFjZSBwcml2Cit7CisvLyBBbiBldmVu
dCB0aGF0IHdlIGNhbiB3YWl0IG9uLCB1c2VmdWwgZm9yIGpvaW5pbmcgd29ya2VyIHRocmVhZHMu
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW1wbD4KK2NsYXNzIFdhaXRhYmxlRXZlbnRCYXNlIDogYW5n
bGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBXYWl0YWJsZUV2ZW50QmFzZShFdmVu
dFJlc2V0UG9saWN5IHJlc2V0UG9saWN5LCBFdmVudEluaXRpYWxTdGF0ZSBpbml0aWFsU3RhdGUp
OworCisgICAgV2FpdGFibGVFdmVudEJhc2UoV2FpdGFibGVFdmVudEJhc2UgJiZvdGhlcik7CisK
KyAgICAvLyBQdXRzIHRoZSBldmVudCBpbiB0aGUgdW4tc2lnbmFsZWQgc3RhdGUuCisgICAgdm9p
ZCByZXNldCgpOworCisgICAgLy8gV2FpdHMgaW5kZWZpbml0ZWx5IGZvciB0aGUgZXZlbnQgdG8g
YmUgc2lnbmFsZWQuCisgICAgdm9pZCB3YWl0KCk7CisKKyAgICAvLyBQdXRzIHRoZSBldmVudCBp
biB0aGUgc2lnbmFsZWQgc3RhdGUsIGNhdXNpbmcgYW55IHRocmVhZCBibG9ja2VkIG9uIFdhaXQg
dG8gYmUgd29rZW4gdXAuCisgICAgLy8gVGhlIGV2ZW50IHN0YXRlIGlzIHJlc2V0IHRvIG5vbi1z
aWduYWxlZCBhZnRlciBhIHdhaXRpbmcgdGhyZWFkIGhhcyBiZWVuIHJlbGVhc2VkLgorICAgIHZv
aWQgc2lnbmFsKCk7CisKKyAgcHJvdGVjdGVkOgorICAgIEltcGwgJmNvcHlCYXNlKEltcGwgJiZv
dGhlcik7CisKKyAgICB0ZW1wbGF0ZSA8c2l6ZV90IENvdW50PgorICAgIHN0YXRpYyBzaXplX3Qg
V2FpdE1hbnlCYXNlKHN0ZDo6YXJyYXk8SW1wbCwgQ291bnQ+ICp3YWl0YWJsZXMpOworCisgICAg
RXZlbnRSZXNldFBvbGljeSBtUmVzZXRQb2xpY3k7CisgICAgYm9vbCBtU2lnbmFsZWQ7Cit9Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW1wbD4KK1dhaXRhYmxlRXZlbnRCYXNlPEltcGw+OjpXYWl0
YWJsZUV2ZW50QmFzZShFdmVudFJlc2V0UG9saWN5IHJlc2V0UG9saWN5LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50SW5pdGlhbFN0YXRlIGluaXRpYWxT
dGF0ZSkKKyAgICA6IG1SZXNldFBvbGljeShyZXNldFBvbGljeSksIG1TaWduYWxlZChpbml0aWFs
U3RhdGUgPT0gRXZlbnRJbml0aWFsU3RhdGU6OlNpZ25hbGVkKQoreworfQorCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgSW1wbD4KK1dhaXRhYmxlRXZlbnRCYXNlPEltcGw+OjpXYWl0YWJsZUV2ZW50QmFz
ZShXYWl0YWJsZUV2ZW50QmFzZSAmJm90aGVyKQorICAgIDogbVJlc2V0UG9saWN5KG90aGVyLm1S
ZXNldFBvbGljeSksIG1TaWduYWxlZChvdGhlci5tU2lnbmFsZWQpCit7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBJbXBsPgordm9pZCBXYWl0YWJsZUV2ZW50QmFzZTxJbXBsPjo6cmVzZXQoKQor
eworICAgIHN0YXRpY19jYXN0PEltcGwgKj4odGhpcyktPnJlc2V0SW1wbCgpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgSW1wbD4KK3ZvaWQgV2FpdGFibGVFdmVudEJhc2U8SW1wbD46OndhaXQo
KQoreworICAgIHN0YXRpY19jYXN0PEltcGwgKj4odGhpcyktPndhaXRJbXBsKCk7Cit9CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBJbXBsPgordm9pZCBXYWl0YWJsZUV2ZW50QmFzZTxJbXBsPjo6c2ln
bmFsKCkKK3sKKyAgICBzdGF0aWNfY2FzdDxJbXBsICo+KHRoaXMpLT5zaWduYWxJbXBsKCk7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbXBsPgordGVtcGxhdGUgPHNpemVfdCBDb3VudD4KKy8v
IHN0YXRpYworc2l6ZV90IFdhaXRhYmxlRXZlbnRCYXNlPEltcGw+OjpXYWl0TWFueUJhc2Uoc3Rk
OjphcnJheTxJbXBsLCBDb3VudD4gKndhaXRhYmxlcykKK3sKKyAgICBBU1NFUlQoQ291bnQgPiAw
KTsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBDb3VudDsgKytpbmRleCkK
KyAgICB7CisgICAgICAgICgqd2FpdGFibGVzKVtpbmRleF0ud2FpdCgpOworICAgIH0KKworICAg
IHJldHVybiAwOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSW1wbD4KK0ltcGwgJldhaXRhYmxl
RXZlbnRCYXNlPEltcGw+Ojpjb3B5QmFzZShJbXBsICYmb3RoZXIpCit7CisgICAgc3RkOjpzd2Fw
KG1TaWduYWxlZCwgb3RoZXIubVNpZ25hbGVkKTsKKyAgICBzdGQ6OnN3YXAobVJlc2V0UG9saWN5
LCBvdGhlci5tUmVzZXRQb2xpY3kpOworICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8SW1wbCAqPih0
aGlzKTsKK30KKworY2xhc3MgU2luZ2xlVGhyZWFkZWRXYWl0YWJsZUV2ZW50IDogcHVibGljIFdh
aXRhYmxlRXZlbnRCYXNlPFNpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudD4KK3sKKyAgcHVibGlj
OgorICAgIFNpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudCgpOworICAgIFNpbmdsZVRocmVhZGVk
V2FpdGFibGVFdmVudChFdmVudFJlc2V0UG9saWN5IHJlc2V0UG9saWN5LCBFdmVudEluaXRpYWxT
dGF0ZSBpbml0aWFsU3RhdGUpOworICAgIH5TaW5nbGVUaHJlYWRlZFdhaXRhYmxlRXZlbnQoKTsK
KworICAgIFNpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudChTaW5nbGVUaHJlYWRlZFdhaXRhYmxl
RXZlbnQgJiZvdGhlcik7CisgICAgU2luZ2xlVGhyZWFkZWRXYWl0YWJsZUV2ZW50ICZvcGVyYXRv
cj0oU2luZ2xlVGhyZWFkZWRXYWl0YWJsZUV2ZW50ICYmb3RoZXIpOworCisgICAgdm9pZCByZXNl
dEltcGwoKTsKKyAgICB2b2lkIHdhaXRJbXBsKCk7CisgICAgdm9pZCBzaWduYWxJbXBsKCk7CisK
KyAgICAvLyBXYWl0LCBzeW5jaHJvbm91c2x5LCBvbiBtdWx0aXBsZSBldmVudHMuCisgICAgLy8g
cmV0dXJucyB0aGUgaW5kZXggb2YgYSBXYWl0YWJsZUV2ZW50IHdoaWNoIGhhcyBiZWVuIHNpZ25h
bGVkLgorICAgIHRlbXBsYXRlIDxzaXplX3QgQ291bnQ+CisgICAgc3RhdGljIHNpemVfdCBXYWl0
TWFueShzdGQ6OmFycmF5PFNpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudCwgQ291bnQ+ICp3YWl0
YWJsZXMpOworfTsKKwordGVtcGxhdGUgPHNpemVfdCBDb3VudD4KKy8vIHN0YXRpYworc2l6ZV90
IFNpbmdsZVRocmVhZGVkV2FpdGFibGVFdmVudDo6V2FpdE1hbnkoCisgICAgc3RkOjphcnJheTxT
aW5nbGVUaHJlYWRlZFdhaXRhYmxlRXZlbnQsIENvdW50PiAqd2FpdGFibGVzKQoreworICAgIHJl
dHVybiBXYWl0YWJsZUV2ZW50QmFzZTxTaW5nbGVUaHJlYWRlZFdhaXRhYmxlRXZlbnQ+OjpXYWl0
TWFueUJhc2Uod2FpdGFibGVzKTsKK30KKworI2lmIChBTkdMRV9TVERfQVNZTkNfV09SS0VSUyA9
PSBBTkdMRV9FTkFCTEVEKQorY2xhc3MgQXN5bmNXYWl0YWJsZUV2ZW50IDogcHVibGljIFdhaXRh
YmxlRXZlbnRCYXNlPEFzeW5jV2FpdGFibGVFdmVudD4KK3sKKyAgcHVibGljOgorICAgIEFzeW5j
V2FpdGFibGVFdmVudCgpOworICAgIEFzeW5jV2FpdGFibGVFdmVudChFdmVudFJlc2V0UG9saWN5
IHJlc2V0UG9saWN5LCBFdmVudEluaXRpYWxTdGF0ZSBpbml0aWFsU3RhdGUpOworICAgIH5Bc3lu
Y1dhaXRhYmxlRXZlbnQoKTsKKworICAgIEFzeW5jV2FpdGFibGVFdmVudChBc3luY1dhaXRhYmxl
RXZlbnQgJiZvdGhlcik7CisgICAgQXN5bmNXYWl0YWJsZUV2ZW50ICZvcGVyYXRvcj0oQXN5bmNX
YWl0YWJsZUV2ZW50ICYmb3RoZXIpOworCisgICAgdm9pZCByZXNldEltcGwoKTsKKyAgICB2b2lk
IHdhaXRJbXBsKCk7CisgICAgdm9pZCBzaWduYWxJbXBsKCk7CisKKyAgICAvLyBXYWl0LCBzeW5j
aHJvbm91c2x5LCBvbiBtdWx0aXBsZSBldmVudHMuCisgICAgLy8gcmV0dXJucyB0aGUgaW5kZXgg
b2YgYSBXYWl0YWJsZUV2ZW50IHdoaWNoIGhhcyBiZWVuIHNpZ25hbGVkLgorICAgIHRlbXBsYXRl
IDxzaXplX3QgQ291bnQ+CisgICAgc3RhdGljIHNpemVfdCBXYWl0TWFueShzdGQ6OmFycmF5PEFz
eW5jV2FpdGFibGVFdmVudCwgQ291bnQ+ICp3YWl0YWJsZXMpOworCisgIHByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIEFzeW5jV29ya2VyUG9vbDsKKyAgICB2b2lkIHNldEZ1dHVyZShzdGQ6OmZ1
dHVyZTx2b2lkPiAmJmZ1dHVyZSk7CisKKyAgICBzdGQ6OmZ1dHVyZTx2b2lkPiBtRnV0dXJlOwor
fTsKKwordGVtcGxhdGUgPHNpemVfdCBDb3VudD4KKy8vIHN0YXRpYworc2l6ZV90IEFzeW5jV2Fp
dGFibGVFdmVudDo6V2FpdE1hbnkoc3RkOjphcnJheTxBc3luY1dhaXRhYmxlRXZlbnQsIENvdW50
PiAqd2FpdGFibGVzKQoreworICAgIHJldHVybiBXYWl0YWJsZUV2ZW50QmFzZTxBc3luY1dhaXRh
YmxlRXZlbnQ+OjpXYWl0TWFueUJhc2Uod2FpdGFibGVzKTsKK30KKyNlbmRpZiAgLy8gKEFOR0xF
X1NURF9BU1lOQ19XT1JLRVJTID09IEFOR0xFX0VOQUJMRUQpCisKKy8vIFRoZSB0cmFpdHMgY2xh
c3MgYWxsb3dzIHRoZSB0aGUgdGhyZWFkIHBvb2wgdG8gcmV0dXJuIHRoZSAiVHlwZWQiIHdhaXRh
YmxlIGV2ZW50IGZyb20gcG9zdFRhc2suCisvLyBPdGhlcndpc2UgcG9zdFRhc2sgd291bGQgYWx3
YXlzIHRoaW5rIGl0IHJldHVybnMgdGhlIGN1cnJlbnQgYWN0aXZlIHR5cGUsIHNvIHRoZSB1bml0
IHRlc3RzCisvLyBjb3VsZCBub3QgcnVuIG9uIG11bHRpcGxlIHdvcmtlciB0eXBlcyBpbiB0aGUg
c2FtZSBjb21waWxhdGlvbi4KK3RlbXBsYXRlIDx0eXBlbmFtZSBJbXBsPgorc3RydWN0IFdvcmtl
clRocmVhZFBvb2xUcmFpdHM7CisKK2NsYXNzIFNpbmdsZVRocmVhZGVkV29ya2VyUG9vbDsKK3Rl
bXBsYXRlIDw+CitzdHJ1Y3QgV29ya2VyVGhyZWFkUG9vbFRyYWl0czxTaW5nbGVUaHJlYWRlZFdv
cmtlclBvb2w+Cit7CisgICAgdXNpbmcgV2FpdGFibGVFdmVudFR5cGUgPSBTaW5nbGVUaHJlYWRl
ZFdhaXRhYmxlRXZlbnQ7Cit9OworCisjaWYgKEFOR0xFX1NURF9BU1lOQ19XT1JLRVJTID09IEFO
R0xFX0VOQUJMRUQpCitjbGFzcyBBc3luY1dvcmtlclBvb2w7Cit0ZW1wbGF0ZSA8Pgorc3RydWN0
IFdvcmtlclRocmVhZFBvb2xUcmFpdHM8QXN5bmNXb3JrZXJQb29sPgoreworICAgIHVzaW5nIFdh
aXRhYmxlRXZlbnRUeXBlID0gQXN5bmNXYWl0YWJsZUV2ZW50OworfTsKKyNlbmRpZiAgLy8gKEFO
R0xFX1NURF9BU1lOQ19XT1JLRVJTID09IEFOR0xFX0VOQUJMRUQpCisKKy8vIFJlcXVlc3QgV29y
a2VyVGhyZWFkcyBmcm9tIHRoZSBXb3JrZXJUaHJlYWRQb29sLiBFYWNoIHBvb2wgY2FuIGtlZXAg
d29ya2VyIHRocmVhZHMgYXJvdW5kIHNvCisvLyB3ZSBhdm9pZCB0aGUgY29zdGx5IHNwaW4gdXAg
YW5kIHNwaW4gZG93biB0aW1lLgordGVtcGxhdGUgPHR5cGVuYW1lIEltcGw+CitjbGFzcyBXb3Jr
ZXJUaHJlYWRQb29sQmFzZSA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6CisgICAg
V29ya2VyVGhyZWFkUG9vbEJhc2Uoc2l6ZV90IG1heFRocmVhZHMpOworICAgIH5Xb3JrZXJUaHJl
YWRQb29sQmFzZSgpOworCisgICAgdXNpbmcgV2FpdGFibGVFdmVudFR5cGUgPSB0eXBlbmFtZSBX
b3JrZXJUaHJlYWRQb29sVHJhaXRzPEltcGw+OjpXYWl0YWJsZUV2ZW50VHlwZTsKKworICAgIC8v
IFJldHVybnMgYW4gZXZlbnQgdG8gd2FpdCBvbiBmb3IgdGhlIHRhc2sgdG8gZmluaXNoLgorICAg
IC8vIElmIHRoZSBwb29sIGZhaWxzIHRvIGNyZWF0ZSB0aGUgdGFzaywgcmV0dXJucyBudWxsLgor
ICAgIFdhaXRhYmxlRXZlbnRUeXBlIHBvc3RXb3JrZXJUYXNrKENsb3N1cmUgKnRhc2spOworfTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIEltcGw+CitXb3JrZXJUaHJlYWRQb29sQmFzZTxJbXBsPjo6
V29ya2VyVGhyZWFkUG9vbEJhc2Uoc2l6ZV90IG1heFRocmVhZHMpCit7Cit9CisKK3RlbXBsYXRl
IDx0eXBlbmFtZSBJbXBsPgorV29ya2VyVGhyZWFkUG9vbEJhc2U8SW1wbD46On5Xb3JrZXJUaHJl
YWRQb29sQmFzZSgpCit7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBJbXBsPgordHlwZW5hbWUg
V29ya2VyVGhyZWFkUG9vbEJhc2U8SW1wbD46OldhaXRhYmxlRXZlbnRUeXBlIFdvcmtlclRocmVh
ZFBvb2xCYXNlPEltcGw+Ojpwb3N0V29ya2VyVGFzaygKKyAgICBDbG9zdXJlICp0YXNrKQorewor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbXBsICo+KHRoaXMpLT5wb3N0V29ya2VyVGFza0ltcGwo
dGFzayk7Cit9CisKK2NsYXNzIFNpbmdsZVRocmVhZGVkV29ya2VyUG9vbCA6IHB1YmxpYyBXb3Jr
ZXJUaHJlYWRQb29sQmFzZTxTaW5nbGVUaHJlYWRlZFdvcmtlclBvb2w+Cit7CisgIHB1YmxpYzoK
KyAgICBTaW5nbGVUaHJlYWRlZFdvcmtlclBvb2woc2l6ZV90IG1heFRocmVhZHMpOworICAgIH5T
aW5nbGVUaHJlYWRlZFdvcmtlclBvb2woKTsKKworICAgIFNpbmdsZVRocmVhZGVkV2FpdGFibGVF
dmVudCBwb3N0V29ya2VyVGFza0ltcGwoQ2xvc3VyZSAqdGFzayk7Cit9OworCisjaWYgKEFOR0xF
X1NURF9BU1lOQ19XT1JLRVJTID09IEFOR0xFX0VOQUJMRUQpCitjbGFzcyBBc3luY1dvcmtlclBv
b2wgOiBwdWJsaWMgV29ya2VyVGhyZWFkUG9vbEJhc2U8QXN5bmNXb3JrZXJQb29sPgoreworICBw
dWJsaWM6CisgICAgQXN5bmNXb3JrZXJQb29sKHNpemVfdCBtYXhUaHJlYWRzKTsKKyAgICB+QXN5
bmNXb3JrZXJQb29sKCk7CisKKyAgICBBc3luY1dhaXRhYmxlRXZlbnQgcG9zdFdvcmtlclRhc2tJ
bXBsKENsb3N1cmUgKnRhc2spOworfTsKKyNlbmRpZiAgLy8gKEFOR0xFX1NURF9BU1lOQ19XT1JL
RVJTID09IEFOR0xFX0VOQUJMRUQpCisKK30gIC8vIG5hbWVzcGFjZSBwcml2CisKKyNpZiAoQU5H
TEVfU1REX0FTWU5DX1dPUktFUlMgPT0gQU5HTEVfRU5BQkxFRCkKK3VzaW5nIFdhaXRhYmxlRXZl
bnQgICAgPSBwcml2OjpBc3luY1dhaXRhYmxlRXZlbnQ7Cit1c2luZyBXb3JrZXJUaHJlYWRQb29s
ID0gcHJpdjo6QXN5bmNXb3JrZXJQb29sOworI2Vsc2UKK3VzaW5nIFdhaXRhYmxlRXZlbnQgICAg
PSBwcml2OjpTaW5nbGVUaHJlYWRlZFdhaXRhYmxlRXZlbnQ7Cit1c2luZyBXb3JrZXJUaHJlYWRQ
b29sID0gcHJpdjo6U2luZ2xlVGhyZWFkZWRXb3JrZXJQb29sOworI2VuZGlmICAvLyAoQU5HTEVf
U1REX0FTWU5DX1dPUktFUlMgPT0gQU5HTEVfRU5BQkxFRCkKKworfSAgLy8gbmFtZXNwYWNlIGFu
Z2xlCisKKyNlbmRpZiAgLy8gTElCQU5HTEVfV09SS0VSX1RIUkVBRF9IXwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL1dvcmtlclRocmVhZF91bml0dGVz
dC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvV29ya2VyVGhyZWFk
X3VuaXR0ZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYTVi
NTY2ZDU4ODcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvV29ya2VyVGhyZWFkX3VuaXR0ZXN0LmNwcApAQCAtMCwwICsxLDU5IEBACisvLwor
Ly8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
CisvLworLy8gV29ya2VyVGhyZWFkX3VuaXR0ZXN0OgorLy8gICBTaW1wbGUgdGVzdHMgZm9yIHRo
ZSB3b3JrZXIgdGhyZWFkIGNsYXNzLgorCisjaW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKworI2luY2x1ZGUgImxpYkFOR0xFL1dvcmtlclRocmVhZC5oIgorCit1c2lu
ZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFjZQoreworCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK2NsYXNzIFdvcmtlclBvb2xUZXN0IDogcHVibGljIDo6dGVzdGluZzo6VGVzdAoreworICBw
dWJsaWM6CisgICAgVCB3b3JrZXJQb29sID0gezR9OworfTsKKworI2lmIChBTkdMRV9TVERfQVNZ
TkNfV09SS0VSUyA9PSBBTkdMRV9FTkFCTEVEKQordXNpbmcgV29ya2VyUG9vbFR5cGVzID0gOjp0
ZXN0aW5nOjpUeXBlczxwcml2OjpBc3luY1dvcmtlclBvb2wsIHByaXY6OlNpbmdsZVRocmVhZGVk
V29ya2VyUG9vbD47CisjZWxzZQordXNpbmcgV29ya2VyUG9vbFR5cGVzID0gOjp0ZXN0aW5nOjpU
eXBlczxwcml2OjpTaW5nbGVUaHJlYWRlZFdvcmtlclBvb2w+OworI2VuZGlmICAvLyAoQU5HTEVf
U1REX0FTWU5DX1dPUktFUlMgPT0gQU5HTEVfRU5BQkxFRCkKKworVFlQRURfVEVTVF9DQVNFKFdv
cmtlclBvb2xUZXN0LCBXb3JrZXJQb29sVHlwZXMpOworCisvLyBUZXN0cyBzaW1wbGUgd29ya2Vy
IHBvb2wgYXBwbGljYXRpb24uCitUWVBFRF9URVNUKFdvcmtlclBvb2xUZXN0LCBTaW1wbGVUYXNr
KQoreworICAgIGNsYXNzIFRlc3RUYXNrIDogcHVibGljIENsb3N1cmUKKyAgICB7CisgICAgICBw
dWJsaWM6CisgICAgICAgIHZvaWQgb3BlcmF0b3IoKSgpIG92ZXJyaWRlIHsgZmlyZWQgPSB0cnVl
OyB9CisKKyAgICAgICAgYm9vbCBmaXJlZCA9IGZhbHNlOworICAgIH07CisKKyAgICBzdGQ6OmFy
cmF5PFRlc3RUYXNrLCA0PiB0YXNrczsKKyAgICBzdGQ6OmFycmF5PHR5cGVuYW1lIFR5cGVQYXJh
bTo6V2FpdGFibGVFdmVudFR5cGUsIDQ+IHdhaXRhYmxlcyA9IHt7CisgICAgICAgIHRoaXMtPndv
cmtlclBvb2wucG9zdFdvcmtlclRhc2soJnRhc2tzWzBdKSwgdGhpcy0+d29ya2VyUG9vbC5wb3N0
V29ya2VyVGFzaygmdGFza3NbMV0pLAorICAgICAgICB0aGlzLT53b3JrZXJQb29sLnBvc3RXb3Jr
ZXJUYXNrKCZ0YXNrc1syXSksIHRoaXMtPndvcmtlclBvb2wucG9zdFdvcmtlclRhc2soJnRhc2tz
WzNdKSwKKyAgICB9fTsKKworICAgIFR5cGVQYXJhbTo6V2FpdGFibGVFdmVudFR5cGU6OldhaXRN
YW55KCZ3YWl0YWJsZXMpOworCisgICAgZm9yIChjb25zdCBhdXRvICZ0YXNrIDogdGFza3MpCisg
ICAgeworICAgICAgICBFWFBFQ1RfVFJVRSh0YXNrLmZpcmVkKTsKKyAgICB9Cit9CisKK30gIC8v
IGFub255bW91cyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9hbmdsZXR5cGVzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9hbmdsZXR5cGVzLmNwcAppbmRleCAwY2Q2OTk2M2U4Zi4uNzBhM2FlNjQ1YmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9hbmdsZXR5
cGVzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvYW5nbGV0
eXBlcy5jcHAKQEAgLTQ5LDcgKzQ5LDggQEAgU2FtcGxlclN0YXRlOjpTYW1wbGVyU3RhdGUoKQog
ICAgICAgbWluTG9kKC0xMDAwLjBmKSwKICAgICAgIG1heExvZCgxMDAwLjBmKSwKICAgICAgIGNv
bXBhcmVNb2RlKEdMX05PTkUpLAotICAgICAgY29tcGFyZUZ1bmMoR0xfTEVRVUFMKQorICAgICAg
Y29tcGFyZUZ1bmMoR0xfTEVRVUFMKSwKKyAgICAgIHNSR0JEZWNvZGUoR0xfREVDT0RFX0VYVCkK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L2FuZ2xldHlwZXMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9hbmds
ZXR5cGVzLmgKaW5kZXggMzQ5MGIwM2I0Y2EuLjU0ZGQ5MTI3NmYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvYW5nbGV0eXBlcy5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9hbmdsZXR5cGVzLmgKQEAgLTIwLDEwICsy
MCw2IEBACiBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIEJ1ZmZlcjsKLWNsYXNzIFN0YXRlOwotY2xh
c3MgUHJvZ3JhbTsKLXN0cnVjdCBWZXJ0ZXhBdHRyaWJ1dGU7Ci1zdHJ1Y3QgVmVydGV4QXR0cmli
Q3VycmVudFZhbHVlRGF0YTsKIAogZW51bSBQcmltaXRpdmVUeXBlCiB7CkBAIC00Miw3ICszOCw4
IEBAIFByaW1pdGl2ZVR5cGUgR2V0UHJpbWl0aXZlVHlwZShHTGVudW0gZHJhd01vZGUpOwogZW51
bSBTYW1wbGVyVHlwZQogewogICAgIFNBTVBMRVJfUElYRUwsCi0gICAgU0FNUExFUl9WRVJURVgK
KyAgICBTQU1QTEVSX1ZFUlRFWCwKKyAgICBTQU1QTEVSX0NPTVBVVEUKIH07CiAKIHN0cnVjdCBS
ZWN0YW5nbGUKQEAgLTE3MSw2ICsxNjgsMjcgQEAgc3RydWN0IERlcHRoU3RlbmNpbFN0YXRlCiAg
ICAgR0x1aW50IHN0ZW5jaWxCYWNrV3JpdGVtYXNrOwogfTsKIAorc3RydWN0IERyYXdBcnJheXNJ
bmRpcmVjdENvbW1hbmQKK3sKKyAgICBHTHVpbnQgY291bnQ7CisgICAgR0x1aW50IGluc3RhbmNl
Q291bnQ7CisgICAgR0x1aW50IGZpcnN0OworICAgIEdMdWludCBiYXNlSW5zdGFuY2U7Cit9Owor
c3RhdGljX2Fzc2VydChzaXplb2YoRHJhd0FycmF5c0luZGlyZWN0Q29tbWFuZCkgPT0gMTYsCisg
ICAgICAgICAgICAgICJVbmV4cGVjdGVkIHNpemUgb2YgRHJhd0FycmF5c0luZGlyZWN0Q29tbWFu
ZCIpOworCitzdHJ1Y3QgRHJhd0VsZW1lbnRzSW5kaXJlY3RDb21tYW5kCit7CisgICAgR0x1aW50
IGNvdW50OworICAgIEdMdWludCBwcmltQ291bnQ7CisgICAgR0x1aW50IGZpcnN0SW5kZXg7Cisg
ICAgR0xpbnQgYmFzZVZlcnRleDsKKyAgICBHTHVpbnQgYmFzZUluc3RhbmNlOworfTsKK3N0YXRp
Y19hc3NlcnQoc2l6ZW9mKERyYXdFbGVtZW50c0luZGlyZWN0Q29tbWFuZCkgPT0gMjAsCisgICAg
ICAgICAgICAgICJVbmV4cGVjdGVkIHNpemUgb2YgRHJhd0VsZW1lbnRzSW5kaXJlY3RDb21tYW5k
Iik7CisKIC8vIFN0YXRlIGZyb20gVGFibGUgNi4xMCAoc3RhdGUgcGVyIHNhbXBsZXIgb2JqZWN0
KQogc3RydWN0IFNhbXBsZXJTdGF0ZQogewpAQCAtMTkyLDYgKzIxMCw4IEBAIHN0cnVjdCBTYW1w
bGVyU3RhdGUKIAogICAgIEdMZW51bSBjb21wYXJlTW9kZTsKICAgICBHTGVudW0gY29tcGFyZUZ1
bmM7CisKKyAgICBHTGVudW0gc1JHQkRlY29kZTsKIH07CiAKIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTYW1wbGVyU3RhdGUgJmEsIGNvbnN0IFNhbXBsZXJTdGF0ZSAmYik7CkBAIC0yNDIsMjEgKzI2
MiwxMiBAQCB0eXBlZGVmIHN0ZDo6Yml0c2V0PElNUExFTUVOVEFUSU9OX01BWF9DT01CSU5FRF9T
SEFERVJfVU5JRk9STV9CVUZGRVJTPiBVbmlmb3JtQgogLy8gQ2xpZW50IGNvZGUgc2hvdWxkIHRy
ZWF0IGl0IGFzIGEgc3RkOjptYXAuCiB0ZW1wbGF0ZSA8Y2xhc3MgUmVzb3VyY2VUPgogdXNpbmcg
UmVzb3VyY2VNYXAgPSBzdGQ6OnVub3JkZXJlZF9tYXA8R0x1aW50LCBSZXNvdXJjZVQgKj47CisK
K3VzaW5nIENvbnRleHRJRCA9IHVpbnRwdHJfdDsKIH0KIAogbmFtZXNwYWNlIHJ4CiB7Ci1lbnVt
IFZlbmRvcklEIDogdWludDMyX3QKLXsKLSAgICBWRU5ET1JfSURfVU5LTk9XTiAgPSAweDAsCi0g
ICAgVkVORE9SX0lEX0FNRCAgICAgID0gMHgxMDAyLAotICAgIFZFTkRPUl9JRF9JTlRFTCAgICA9
IDB4ODA4NiwKLSAgICBWRU5ET1JfSURfTlZJRElBICAgPSAweDEwREUsCi0gICAgLy8gVGhpcyBp
cyBRdWFsY29tbSBQQ0kgVmVuZG9yIElELgotICAgIC8vIEFuZHJvaWQgZG9lc24ndCBoYXZlIGEg
UENJIGJ1cywgYnV0IGFsbCB3ZSBuZWVkIGlzIGEgdW5pcXVlIGlkLgotICAgIFZFTkRPUl9JRF9R
VUFMQ09NTSA9IDB4NTE0MywKLX07Ci0KIC8vIEEgbWFjcm8gdGhhdCBkZXRlcm1pbmVzIHdoZXRo
ZXIgYW4gb2JqZWN0IGhhcyBhIGdpdmVuIHJ1bnRpbWUgdHlwZS4KICNpZiBkZWZpbmVkKF9fY2xh
bmdfXykKICNpZiBfX2hhc19mZWF0dXJlKGN4eF9ydHRpKQpAQCAtMjk3LDggKzMwOCwyMSBAQCBp
bmxpbmUgRGVzdFQgKkdldEltcGxBcyhTcmNUICpzcmMpCiAgICAgcmV0dXJuIEdldEFzPERlc3RU
PihzcmMtPmdldEltcGxlbWVudGF0aW9uKCkpOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVz
dFQsIHR5cGVuYW1lIFNyY1Q+CitpbmxpbmUgRGVzdFQgKlNhZmVHZXRJbXBsQXMoU3JjVCAqc3Jj
KQoreworICAgIHJldHVybiBzcmMgIT0gbnVsbHB0ciA/IEdldEFzPERlc3RUPihzcmMtPmdldElt
cGxlbWVudGF0aW9uKCkpIDogbnVsbHB0cjsKK30KKworLy8gSW4gc29tZSBjYXNlcyB3ZSB3YW50
IHRvIHJldHJpZXZlIGFuIEltcGwgb2JqZWN0LCB3aGlsZSBoYW5kbGluZyBudWxscHRyIGNhc2Vz
IHRyaXZpYWxseS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBPYmpUPgorYXV0byBTYWZlR2V0SW1wbChP
YmpUICpzcmMpIC0+IGRlY2x0eXBlKHNyYy0+Z2V0SW1wbGVtZW50YXRpb24oKSkKK3sKKyAgICBy
ZXR1cm4gc3JjID8gc3JjLT5nZXRJbXBsZW1lbnRhdGlvbigpIDogbnVsbHB0cjsKIH0KIAorfSAg
Ly8gbmFtZXNwYWNlIHJ4CisKICNpbmNsdWRlICJhbmdsZXR5cGVzLmlubCIKIAogbmFtZXNwYWNl
IGFuZ2xlCkBAIC0zNDUsNiArMzY5LDExIEBAIGlubGluZSBHTGVudW0gRnJhbWVidWZmZXJCaW5k
aW5nVG9FbnVtKEZyYW1lYnVmZmVyQmluZGluZyBiaW5kaW5nKQogICAgICAgICAgICAgcmV0dXJu
IEdMX05PTkU7CiAgICAgfQogfQotfQorfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCisKK25hbWVzcGFj
ZSBnbAoreworY2xhc3MgQ29udGV4dFN0YXRlOworfSAgLy8gbmFtZXNwYWNlIGdsCiAKICNlbmRp
ZiAvLyBMSUJBTkdMRV9BTkdMRVRZUEVTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvZXMzX2NvcHlfY29udmVyc2lvbl9mb3JtYXRzLmpzb24gYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZXMzX2NvcHlfY29udmVyc2lvbl9m
b3JtYXRzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjM5Yjcx
ZmQ5M2E3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL2VzM19jb3B5X2NvbnZlcnNpb25fZm9ybWF0cy5qc29uCkBAIC0wLDAgKzEsNDQgQEAK
K3sKKyAgICAiRnJvbSBFUyAzLjAuMSBzcGVjLCB0YWJsZSAzLjE1IjoKKyAgICBbCisgICAgICAg
IFsgIkdMX0FMUEhBIiwgIkdMX1JHQkEiIF0sCisgICAgICAgIFsgIkdMX0xVTUlOQU5DRSIsICJH
TF9SRUQiIF0sCisgICAgICAgIFsgIkdMX0xVTUlOQU5DRSIsICJHTF9SRyIgXSwKKyAgICAgICAg
WyAiR0xfTFVNSU5BTkNFIiwgIkdMX1JHQiIgXSwKKyAgICAgICAgWyAiR0xfTFVNSU5BTkNFIiwg
IkdMX1JHQkEiIF0sCisgICAgICAgIFsgIkdMX0xVTUlOQU5DRV9BTFBIQSIsICJHTF9SR0JBIiBd
LAorICAgICAgICBbICJHTF9SRUQiLCAiR0xfUkVEIiBdLAorICAgICAgICBbICJHTF9SRUQiLCAi
R0xfUkciIF0sCisgICAgICAgIFsgIkdMX1JFRCIsICJHTF9SR0IiIF0sCisgICAgICAgIFsgIkdM
X1JFRCIsICJHTF9SR0JBIiBdLAorICAgICAgICBbICJHTF9SRyIsICJHTF9SRyIgXSwKKyAgICAg
ICAgWyAiR0xfUkciLCAiR0xfUkdCIiBdLAorICAgICAgICBbICJHTF9SRyIsICJHTF9SR0JBIiBd
LAorICAgICAgICBbICJHTF9SR0IiLCAiR0xfUkdCIiBdLAorICAgICAgICBbICJHTF9SR0IiLCAi
R0xfUkdCQSIgXSwKKyAgICAgICAgWyAiR0xfUkdCQSIsICJHTF9SR0JBIiBdCisgICAgXSwKKwor
ICAgICJOZWNlc3NhcnkgZm9yIEFOR0xFIGJhY2stYnVmZmVycyI6CisgICAgWworICAgICAgICBb
ICJHTF9BTFBIQSIsICJHTF9CR1JBX0VYVCIgXSwKKyAgICAgICAgWyAiR0xfTFVNSU5BTkNFIiwg
IkdMX0JHUkFfRVhUIiBdLAorICAgICAgICBbICJHTF9MVU1JTkFOQ0VfQUxQSEEiLCAiR0xfQkdS
QV9FWFQiIF0sCisgICAgICAgIFsgIkdMX1JFRCIsICJHTF9CR1JBX0VYVCIgXSwKKyAgICAgICAg
WyAiR0xfUkciLCAiR0xfQkdSQV9FWFQiIF0sCisgICAgICAgIFsgIkdMX1JHQiIsICJHTF9CR1JB
X0VYVCIgXSwKKyAgICAgICAgWyAiR0xfUkdCQSIsICJHTF9CR1JBX0VYVCIgXSwKKyAgICAgICAg
WyAiR0xfQkdSQV9FWFQiLCAiR0xfQkdSQV9FWFQiIF0sCisKKyAgICAgICAgWyAiR0xfUkVEX0lO
VEVHRVIiLCAiR0xfUkVEX0lOVEVHRVIiIF0sCisgICAgICAgIFsgIkdMX1JFRF9JTlRFR0VSIiwg
IkdMX1JHX0lOVEVHRVIiIF0sCisgICAgICAgIFsgIkdMX1JFRF9JTlRFR0VSIiwgIkdMX1JHQl9J
TlRFR0VSIiBdLAorICAgICAgICBbICJHTF9SRURfSU5URUdFUiIsICJHTF9SR0JBX0lOVEVHRVIi
IF0sCisgICAgICAgIFsgIkdMX1JHX0lOVEVHRVIiLCAiR0xfUkdfSU5URUdFUiIgXSwKKyAgICAg
ICAgWyAiR0xfUkdfSU5URUdFUiIsICJHTF9SR0JfSU5URUdFUiIgXSwKKyAgICAgICAgWyAiR0xf
UkdfSU5URUdFUiIsICJHTF9SR0JBX0lOVEVHRVIiIF0sCisgICAgICAgIFsgIkdMX1JHQl9JTlRF
R0VSIiwgIkdMX1JHQl9JTlRFR0VSIiBdLAorICAgICAgICBbICJHTF9SR0JfSU5URUdFUiIsICJH
TF9SR0JBX0lOVEVHRVIiIF0sCisgICAgICAgIFsgIkdMX1JHQkFfSU5URUdFUiIsICJHTF9SR0JB
X0lOVEVHRVIiIF0KKyAgICBdCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvZXMzX2NvcHlfY29udmVyc2lvbl90YWJsZV9hdXRvZ2VuLmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9lczNfY29weV9jb252ZXJzaW9uX3Rh
YmxlX2F1dG9nZW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4z
NjQ3NDQ1YzUwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9lczNfY29weV9jb252ZXJzaW9uX3RhYmxlX2F1dG9nZW4uY3BwCkBAIC0wLDAg
KzEsMTcxIEBACisvLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgorLy8gR2VuZXJhdGVk
IGJ5IGdlbl9jb3B5X2NvbnZlcnNpb25fdGFibGUucHkgdXNpbmcgZGF0YSBmcm9tIGVzM19jb3B5
X2NvbnZlcnNpb25fZm9ybWF0cy5qc29uLgorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIGZvcm1hdF9tYXA6CisvLyAg
IERldGVybWluaW5nIHRoZSBzaXplZCBpbnRlcm5hbCBmb3JtYXQgZnJvbSBhIChmb3JtYXQsdHlw
ZSkgcGFpci4KKy8vICAgQWxzbyBjaGVjayBlczMgZm9ybWF0IGNvbWJpbmF0aW9ucyBmb3IgdmFs
aWRpdHkuCisKKyNpbmNsdWRlICJhbmdsZV9nbC5oIgorI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5o
IgorCituYW1lc3BhY2UgZ2wKK3sKKworYm9vbCBWYWxpZEVTM0NvcHlDb252ZXJzaW9uKEdMZW51
bSB0ZXh0dXJlRm9ybWF0LCBHTGVudW0gZnJhbWVidWZmZXJGb3JtYXQpCit7CisgICAgc3dpdGNo
ICh0ZXh0dXJlRm9ybWF0KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9BTFBIQToKKyAgICAgICAg
ICAgIHN3aXRjaCAoZnJhbWVidWZmZXJGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkE6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgICAgIHN3aXRjaCAo
ZnJhbWVidWZmZXJGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBH
TF9CR1JBX0VYVDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAg
ICAgICAgIHN3aXRjaCAoZnJhbWVidWZmZXJGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1JFRDoK
KyAgICAgICAgICAgICAgICBjYXNlIEdMX1JHOgorICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdC
OgorICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCQToKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IEdMX0xVTUlOQU5DRV9BTFBIQToKKyAgICAgICAgICAgIHN3aXRjaCAoZnJhbWVidWZmZXJGb3Jt
YXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9CR1JBX0VYVDoKKyAg
ICAgICAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9S
RUQ6CisgICAgICAgICAgICBzd2l0Y2ggKGZyYW1lYnVmZmVyRm9ybWF0KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6CisgICAgICAgICAgICAgICAgY2Fz
ZSBHTF9SRUQ6CisgICAgICAgICAgICAgICAgY2FzZSBHTF9SRzoKKyAgICAgICAgICAgICAgICBj
YXNlIEdMX1JHQjoKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBHTF9SRURfSU5URUdFUjoKKyAgICAgICAgICAgIHN3aXRjaCAoZnJhbWVidWZm
ZXJGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9SRURfSU5U
RUdFUjoKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkFfSU5URUdFUjoKKyAgICAgICAgICAg
ICAgICBjYXNlIEdMX1JHQl9JTlRFR0VSOgorICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdfSU5U
RUdFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1JHOgorICAgICAgICAgICAgc3dpdGNo
IChmcmFtZWJ1ZmZlckZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNl
IEdMX0JHUkFfRVhUOgorICAgICAgICAgICAgICAgIGNhc2UgR0xfUkc6CisgICAgICAgICAgICAg
ICAgY2FzZSBHTF9SR0I6CisgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0JBOgorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgR0xfUkdCOgorICAgICAgICAgICAgc3dpdGNoIChmcmFtZWJ1ZmZlckZv
cm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0JHUkFfRVhUOgor
ICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdCOgorICAgICAgICAgICAgICAgIGNhc2UgR0xfUkdC
QToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICBzd2l0Y2gg
KGZyYW1lYnVmZmVyRm9ybWF0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2Ug
R0xfQkdSQV9FWFQ6CisgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0JBOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgR0xfUkdCQV9JTlRFR0VSOgorICAgICAgICAgICAgc3dpdGNoIChmcmFtZWJ1
ZmZlckZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1JHQkFf
SU5URUdFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX1JHQl9JTlRFR0VSOgorICAgICAg
ICAgICAgc3dpdGNoIChmcmFtZWJ1ZmZlckZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIEdMX1JHQkFfSU5URUdFUjoKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1JH
Ql9JTlRFR0VSOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfUkdfSU5URUdFUjoKKyAgICAg
ICAgICAgIHN3aXRjaCAoZnJhbWVidWZmZXJGb3JtYXQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY2FzZSBHTF9SR0JBX0lOVEVHRVI6CisgICAgICAgICAgICAgICAgY2FzZSBHTF9S
R0JfSU5URUdFUjoKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1JHX0lOVEVHRVI6CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJl
dHVybiBmYWxzZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGdsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZmVhdHVyZXMuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mZWF0dXJlcy5oCmluZGV4IGVjZjQ4NmRjZjdkLi40OGEx
OTRmZjBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L2ZlYXR1cmVzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zl
YXR1cmVzLmgKQEAgLTcsNiArNyw4IEBACiAjaWZuZGVmIExJQkFOR0xFX0ZFQVRVUkVTX0hfCiAj
ZGVmaW5lIExJQkFOR0xFX0ZFQVRVUkVTX0hfCiAKKyNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0u
aCIKKwogI2RlZmluZSBBTkdMRV9ESVNBQkxFRCAwCiAjZGVmaW5lIEFOR0xFX0VOQUJMRUQgMQog
CkBAIC01MCw0ICs1MiwxNCBAQAogI2RlZmluZSBBTkdMRV9QUk9HUkFNX0xJTktfVkFMSURBVEVf
VU5JRk9STV9QUkVDSVNJT04gQU5HTEVfRU5BQkxFRAogI2VuZGlmCiAKKy8vIENvbnRyb2xzIGlm
IG91ciB0aHJlYWRpbmcgY29kZSB1c2VzIHN0ZDo6YXN5bmMgb3IgZmFsbHMgYmFjayB0byBzaW5n
bGUtdGhyZWFkZWQgb3BlcmF0aW9ucy4KKy8vIFRPRE8oam1hZGlsbCk6IEVuYWJsZSBvbiBMaW51
eCBvbmNlIFNUTCBjaHJvbm8gaGVhZGVycyBhcmUgdXBkYXRlZC4KKyNpZiAhZGVmaW5lZChBTkdM
RV9TVERfQVNZTkNfV09SS0VSUykKKyNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1dJTkRPV1Mp
CisjZGVmaW5lIEFOR0xFX1NURF9BU1lOQ19XT1JLRVJTIEFOR0xFX0VOQUJMRUQKKyNlbHNlCisj
ZGVmaW5lIEFOR0xFX1NURF9BU1lOQ19XT1JLRVJTIEFOR0xFX0RJU0FCTEVECisjZW5kaWYgIC8v
IGRlZmluZWQoQU5HTEVfUExBVEZPUk1fV0lORE9XUykKKyNlbmRpZiAgLy8gIWRlZmluZWQoQU5H
TEVfU1REX0FTWU5DX1dPUktFUlMpCisKICNlbmRpZiAvLyBMSUJBTkdMRV9GRUFUVVJFU19IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zvcm1hdF9t
YXBfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9y
bWF0X21hcF9hdXRvZ2VuLmNwcAppbmRleCA3MDdkMzg0MjY4NC4uNjg5OTcwNmU1NDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXRfbWFwX2F1
dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3Jt
YXRfbWFwX2F1dG9nZW4uY3BwCkBAIC05Miw2ICs5Miw0NiBAQCBHTGVudW0gR2V0U2l6ZWRGb3Jt
YXRJbnRlcm5hbChHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSkKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhB
X1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQ7CisgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURf
U1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUOgorICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNf
RVhUOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVDoKKyAgICAgICAgICAgIHN3aXRjaCAo
dHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZ
VEU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFf
UzNUQ19EWFQ1X0VYVDsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgICBzd2l0
Y2ggKHR5cGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9CWVRFOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gR0xfQ09NUFJFU1NFRF9TUkdCX1Mz
VENfRFhUMV9FWFQ7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBj
YXNlIEdMX0RFUFRIX0NPTVBPTkVOVDoKICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKICAgICAg
ICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9mb3JtYXRfbWFwX2RhdGEuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9mb3JtYXRfbWFwX2RhdGEuanNvbgppbmRleCAzZDZhZDZjM2NkZS4uYTRmMWM5OGI0ZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXRf
bWFwX2RhdGEuanNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
Zm9ybWF0X21hcF9kYXRhLmpzb24KQEAgLTExNSw2ICsxMTUsMTggQEAKICAgICAiR0xfQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSI6IHsKICAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUi
OiAiR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSIKICAgICB9LAorICAgICJHTF9D
T01QUkVTU0VEX1NSR0JfUzNUQ19EWFQxX0VYVCI6IHsKKyAgICAgICAgIkdMX1VOU0lHTkVEX0JZ
VEUiOiAiR0xfQ09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQiCisgICAgfSwKKyAgICAiR0xf
Q09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQiOiB7CisgICAgICAgICJHTF9VTlNJ
R05FRF9CWVRFIjogIkdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUIgorICAg
IH0sCisgICAgIkdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUIjogeworICAg
ICAgICAiR0xfVU5TSUdORURfQllURSI6ICJHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19E
WFQzX0VYVCIKKyAgICB9LAorICAgICJHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1
X0VYVCI6IHsKKyAgICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiR0xfQ09NUFJFU1NFRF9TUkdC
X0FMUEhBX1MzVENfRFhUNV9FWFQiCisgICAgfSwKICAgICAiR0xfREVQVEhfQ09NUE9ORU5UIjog
ewogICAgICAgICAiR0xfVU5TSUdORURfU0hPUlQiOiAiR0xfREVQVEhfQ09NUE9ORU5UMTYiLAog
ICAgICAgICAiR0xfVU5TSUdORURfSU5UIjogIkdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUyIsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvZm9ybWF0dXRp
bHMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxz
LmNwcAppbmRleCBhZTFhMGVhYmU3ZS4uZGJhNjk5OTIzMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXR1dGlscy5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2Zvcm1hdHV0aWxzLmNwcApAQCAtNiw4ICs2
LDkgQEAKIAogLy8gZm9ybWF0dXRpbHMuY3BwOiBRdWVyaWVzIGZvciBHTCBpbWFnZSBmb3JtYXRz
LgogCi0jaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvZm9y
bWF0dXRpbHMuaCIKKworI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgogI2luY2x1ZGUgImxp
YkFOR0xFL0NvbnRleHQuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgogCkBA
IC03MSwyMCArNzIsMjAgQEAgYm9vbCBvcGVyYXRvcjwoY29uc3QgVHlwZSYgYSwgY29uc3QgVHlw
ZSYgYikKIH0KIAogLy8gSW5mb3JtYXRpb24gYWJvdXQgaW50ZXJuYWwgZm9ybWF0cwotc3RhdGlj
IGJvb2wgQWx3YXlzU3VwcG9ydGVkKEdMdWludCwgY29uc3QgRXh0ZW5zaW9ucyAmKQorc3RhdGlj
IGJvb2wgQWx3YXlzU3VwcG9ydGVkKGNvbnN0IFZlcnNpb24gJiwgY29uc3QgRXh0ZW5zaW9ucyAm
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgYm9vbCBOZXZlclN1cHBvcnRlZChH
THVpbnQsIGNvbnN0IEV4dGVuc2lvbnMgJikKK3N0YXRpYyBib29sIE5ldmVyU3VwcG9ydGVkKGNv
bnN0IFZlcnNpb24gJiwgY29uc3QgRXh0ZW5zaW9ucyAmKQogewogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdGVtcGxhdGUgPEdMdWludCBtaW5Db3JlR0xWZXJzaW9uPgotc3RhdGljIGJvb2wgUmVx
dWlyZUVTKEdMdWludCBjbGllbnRWZXJzaW9uLCBjb25zdCBFeHRlbnNpb25zICYpCit0ZW1wbGF0
ZSA8R0x1aW50IG1pbkNvcmVHTE1ham9yVmVyc2lvbiwgR0x1aW50IG1pbkNvcmVHTE1pbm9yVmVy
c2lvbj4KK3N0YXRpYyBib29sIFJlcXVpcmVFUyhjb25zdCBWZXJzaW9uICZjbGllbnRWZXJzaW9u
LCBjb25zdCBFeHRlbnNpb25zICYpCiB7Ci0gICAgcmV0dXJuIGNsaWVudFZlcnNpb24gPj0gbWlu
Q29yZUdMVmVyc2lvbjsKKyAgICByZXR1cm4gY2xpZW50VmVyc2lvbiA+PSBWZXJzaW9uKG1pbkNv
cmVHTE1ham9yVmVyc2lvbiwgbWluQ29yZUdMTWlub3JWZXJzaW9uKTsKIH0KIAogLy8gUG9pbnRl
ciB0byBhIGJvb2xlYW4gbWVtZWJlciBvZiB0aGUgRXh0ZW5zaW9ucyBzdHJ1Y3QKQEAgLTkyLDky
ICs5MywxMDEgQEAgdHlwZWRlZiBib29sKEV4dGVuc2lvbnM6OipFeHRlbnNpb25Cb29sKTsKIAog
Ly8gQ2hlY2sgc3VwcG9ydCBmb3IgYSBzaW5nbGUgZXh0ZW5zaW9uCiB0ZW1wbGF0ZSA8RXh0ZW5z
aW9uQm9vbCBib29sMT4KLXN0YXRpYyBib29sIFJlcXVpcmVFeHQoR0x1aW50LCBjb25zdCBFeHRl
bnNpb25zICYgZXh0ZW5zaW9ucykKK3N0YXRpYyBib29sIFJlcXVpcmVFeHQoY29uc3QgVmVyc2lv
biAmLCBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zKQogewogICAgIHJldHVybiBleHRlbnNp
b25zLipib29sMTsKIH0KIAogLy8gQ2hlY2sgZm9yIGEgbWluaW11bSBjbGllbnQgdmVyc2lvbiBv
ciBhIHNpbmdsZSBleHRlbnNpb24KLXRlbXBsYXRlIDxHTHVpbnQgbWluQ29yZUdMVmVyc2lvbiwg
RXh0ZW5zaW9uQm9vbCBib29sMT4KLXN0YXRpYyBib29sIFJlcXVpcmVFU09yRXh0KEdMdWludCBj
bGllbnRWZXJzaW9uLCBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zKQordGVtcGxhdGUgPEdM
dWludCBtaW5Db3JlR0xNYWpvclZlcnNpb24sIEdMdWludCBtaW5Db3JlR0xNaW5vclZlcnNpb24s
IEV4dGVuc2lvbkJvb2wgYm9vbDE+CitzdGF0aWMgYm9vbCBSZXF1aXJlRVNPckV4dChjb25zdCBW
ZXJzaW9uICZjbGllbnRWZXJzaW9uLCBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zKQogewot
ICAgIHJldHVybiBjbGllbnRWZXJzaW9uID49IG1pbkNvcmVHTFZlcnNpb24gfHwgZXh0ZW5zaW9u
cy4qYm9vbDE7CisgICAgcmV0dXJuIGNsaWVudFZlcnNpb24gPj0gVmVyc2lvbihtaW5Db3JlR0xN
YWpvclZlcnNpb24sIG1pbkNvcmVHTE1pbm9yVmVyc2lvbikgfHwKKyAgICAgICAgICAgZXh0ZW5z
aW9ucy4qYm9vbDE7CiB9CiAKIC8vIENoZWNrIGZvciBhIG1pbmltdW0gY2xpZW50IHZlcnNpb24g
b3IgdHdvIGV4dGVuc2lvbnMKLXRlbXBsYXRlIDxHTHVpbnQgbWluQ29yZUdMVmVyc2lvbiwgRXh0
ZW5zaW9uQm9vbCBib29sMSwgRXh0ZW5zaW9uQm9vbCBib29sMj4KLXN0YXRpYyBib29sIFJlcXVp
cmVFU09yRXh0QW5kRXh0KEdMdWludCBjbGllbnRWZXJzaW9uLCBjb25zdCBFeHRlbnNpb25zICZl
eHRlbnNpb25zKQordGVtcGxhdGUgPEdMdWludCBtaW5Db3JlR0xNYWpvclZlcnNpb24sCisgICAg
ICAgICAgR0x1aW50IG1pbkNvcmVHTE1pbm9yVmVyc2lvbiwKKyAgICAgICAgICBFeHRlbnNpb25C
b29sIGJvb2wxLAorICAgICAgICAgIEV4dGVuc2lvbkJvb2wgYm9vbDI+CitzdGF0aWMgYm9vbCBS
ZXF1aXJlRVNPckV4dEFuZEV4dChjb25zdCBWZXJzaW9uICZjbGllbnRWZXJzaW9uLCBjb25zdCBF
eHRlbnNpb25zICZleHRlbnNpb25zKQogewotICAgIHJldHVybiBjbGllbnRWZXJzaW9uID49IG1p
bkNvcmVHTFZlcnNpb24gfHwgKGV4dGVuc2lvbnMuKmJvb2wxICYmIGV4dGVuc2lvbnMuKmJvb2wy
KTsKKyAgICByZXR1cm4gY2xpZW50VmVyc2lvbiA+PSBWZXJzaW9uKG1pbkNvcmVHTE1ham9yVmVy
c2lvbiwgbWluQ29yZUdMTWlub3JWZXJzaW9uKSB8fAorICAgICAgICAgICAoZXh0ZW5zaW9ucy4q
Ym9vbDEgJiYgZXh0ZW5zaW9ucy4qYm9vbDIpOwogfQogCiAvLyBDaGVjayBmb3IgYSBtaW5pbXVt
IGNsaWVudCB2ZXJzaW9uIG9yIGF0IGxlYXN0IG9uZSBvZiB0d28gZXh0ZW5zaW9ucwotdGVtcGxh
dGUgPEdMdWludCBtaW5Db3JlR0xWZXJzaW9uLCBFeHRlbnNpb25Cb29sIGJvb2wxLCBFeHRlbnNp
b25Cb29sIGJvb2wyPgotc3RhdGljIGJvb2wgUmVxdWlyZUVTT3JFeHRPckV4dChHTHVpbnQgY2xp
ZW50VmVyc2lvbiwgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucykKK3RlbXBsYXRlIDxHTHVp
bnQgbWluQ29yZUdMTWFqb3JWZXJzaW9uLAorICAgICAgICAgIEdMdWludCBtaW5Db3JlR0xNaW5v
clZlcnNpb24sCisgICAgICAgICAgRXh0ZW5zaW9uQm9vbCBib29sMSwKKyAgICAgICAgICBFeHRl
bnNpb25Cb29sIGJvb2wyPgorc3RhdGljIGJvb2wgUmVxdWlyZUVTT3JFeHRPckV4dChjb25zdCBW
ZXJzaW9uICZjbGllbnRWZXJzaW9uLCBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zKQogewot
ICAgIHJldHVybiBjbGllbnRWZXJzaW9uID49IG1pbkNvcmVHTFZlcnNpb24gfHwgZXh0ZW5zaW9u
cy4qYm9vbDEgfHwgZXh0ZW5zaW9ucy4qYm9vbDI7CisgICAgcmV0dXJuIGNsaWVudFZlcnNpb24g
Pj0gVmVyc2lvbihtaW5Db3JlR0xNYWpvclZlcnNpb24sIG1pbkNvcmVHTE1pbm9yVmVyc2lvbikg
fHwKKyAgICAgICAgICAgZXh0ZW5zaW9ucy4qYm9vbDEgfHwgZXh0ZW5zaW9ucy4qYm9vbDI7CiB9
CiAKIC8vIENoZWNrIHN1cHBvcnQgZm9yIHR3byBleHRlbnNpb25zCiB0ZW1wbGF0ZSA8RXh0ZW5z
aW9uQm9vbCBib29sMSwgRXh0ZW5zaW9uQm9vbCBib29sMj4KLXN0YXRpYyBib29sIFJlcXVpcmVF
eHRBbmRFeHQoR0x1aW50LCBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zKQorc3RhdGljIGJv
b2wgUmVxdWlyZUV4dEFuZEV4dChjb25zdCBWZXJzaW9uICYsIGNvbnN0IEV4dGVuc2lvbnMgJmV4
dGVuc2lvbnMpCiB7CiAgICAgcmV0dXJuIGV4dGVuc2lvbnMuKmJvb2wxICYmIGV4dGVuc2lvbnMu
KmJvb2wyOwogfQogCiAvLyBDaGVjayBzdXBwb3J0IGZvciBlaXRoZXIgb2YgdHdvIGV4dGVuc2lv
bnMKIHRlbXBsYXRlIDxFeHRlbnNpb25Cb29sIGJvb2wxLCBFeHRlbnNpb25Cb29sIGJvb2wyPgot
c3RhdGljIGJvb2wgUmVxdWlyZUV4dE9yRXh0KEdMdWludCwgY29uc3QgRXh0ZW5zaW9ucyAmZXh0
ZW5zaW9ucykKK3N0YXRpYyBib29sIFJlcXVpcmVFeHRPckV4dChjb25zdCBWZXJzaW9uICYsIGNv
bnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMpCiB7CiAgICAgcmV0dXJuIGV4dGVuc2lvbnMuKmJv
b2wxIHx8IGV4dGVuc2lvbnMuKmJvb2wyOwogfQogCiAvLyBTcGVjaWFsIGZ1bmN0aW9uIGZvciBo
YWxmIGZsb2F0IGZvcm1hdHMgd2l0aCB0aHJlZSBvciBmb3VyIGNoYW5uZWxzLgotc3RhdGljIGJv
b2wgSGFsZkZsb2F0U3VwcG9ydChHTHVpbnQgY2xpZW50VmVyc2lvbiwgY29uc3QgRXh0ZW5zaW9u
cyAmZXh0ZW5zaW9ucykKK3N0YXRpYyBib29sIEhhbGZGbG9hdFN1cHBvcnQoY29uc3QgVmVyc2lv
biAmY2xpZW50VmVyc2lvbiwgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucykKIHsKLSAgICBy
ZXR1cm4gY2xpZW50VmVyc2lvbiA+PSAzIHx8IGV4dGVuc2lvbnMudGV4dHVyZUhhbGZGbG9hdDsK
KyAgICByZXR1cm4gY2xpZW50VmVyc2lvbiA+PSBWZXJzaW9uKDMsIDApIHx8IGV4dGVuc2lvbnMu
dGV4dHVyZUhhbGZGbG9hdDsKIH0KIAotc3RhdGljIGJvb2wgSGFsZkZsb2F0UmVuZGVyYWJsZVN1
cHBvcnQoR0x1aW50IGNsaWVudFZlcnNpb24sIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMp
CitzdGF0aWMgYm9vbCBIYWxmRmxvYXRSZW5kZXJhYmxlU3VwcG9ydChjb25zdCBWZXJzaW9uICZj
bGllbnRWZXJzaW9uLCBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zKQogewogICAgIHJldHVy
biBIYWxmRmxvYXRTdXBwb3J0KGNsaWVudFZlcnNpb24sIGV4dGVuc2lvbnMpICYmIGV4dGVuc2lv
bnMuY29sb3JCdWZmZXJIYWxmRmxvYXQ7CiB9CiAKIC8vIFNwZWNpYWwgZnVuY3Rpb24gZm9yIGhh
bGYgZmxvYXQgZm9ybWF0cyB3aXRoIG9uZSBvciB0d28gY2hhbm5lbHMuCi1zdGF0aWMgYm9vbCBI
YWxmRmxvYXRTdXBwb3J0UkcoR0x1aW50IGNsaWVudFZlcnNpb24sIGNvbnN0IEV4dGVuc2lvbnMg
JmV4dGVuc2lvbnMpCitzdGF0aWMgYm9vbCBIYWxmRmxvYXRTdXBwb3J0UkcoY29uc3QgVmVyc2lv
biAmY2xpZW50VmVyc2lvbiwgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucykKIHsKLSAgICBy
ZXR1cm4gY2xpZW50VmVyc2lvbiA+PSAzIHx8IChleHRlbnNpb25zLnRleHR1cmVIYWxmRmxvYXQg
JiYgZXh0ZW5zaW9ucy50ZXh0dXJlUkcpOworICAgIHJldHVybiBjbGllbnRWZXJzaW9uID49IFZl
cnNpb24oMywgMCkgfHwgKGV4dGVuc2lvbnMudGV4dHVyZUhhbGZGbG9hdCAmJiBleHRlbnNpb25z
LnRleHR1cmVSRyk7CiB9CiAKLXN0YXRpYyBib29sIEhhbGZGbG9hdFJlbmRlcmFibGVTdXBwb3J0
UkcoR0x1aW50IGNsaWVudFZlcnNpb24sIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMpCitz
dGF0aWMgYm9vbCBIYWxmRmxvYXRSZW5kZXJhYmxlU3VwcG9ydFJHKGNvbnN0IFZlcnNpb24gJmNs
aWVudFZlcnNpb24sIGNvbnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMpCiB7CiAgICAgcmV0dXJu
IEhhbGZGbG9hdFN1cHBvcnRSRyhjbGllbnRWZXJzaW9uLCBleHRlbnNpb25zKSAmJiBleHRlbnNp
b25zLmNvbG9yQnVmZmVySGFsZkZsb2F0OwogfQogCiAvLyBTcGVjaWFsIGZ1bmN0aW9uIGZvciBm
bG9hdCBmb3JtYXRzIHdpdGggdGhyZWUgb3IgZm91ciBjaGFubmVscy4KLXN0YXRpYyBib29sIEZs
b2F0U3VwcG9ydChHTHVpbnQgY2xpZW50VmVyc2lvbiwgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5z
aW9ucykKK3N0YXRpYyBib29sIEZsb2F0U3VwcG9ydChjb25zdCBWZXJzaW9uICZjbGllbnRWZXJz
aW9uLCBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25zKQogewotICAgIHJldHVybiBjbGllbnRW
ZXJzaW9uID49IDMgfHwgZXh0ZW5zaW9ucy50ZXh0dXJlRmxvYXQ7CisgICAgcmV0dXJuIGNsaWVu
dFZlcnNpb24gPj0gVmVyc2lvbigzLCAwKSB8fCBleHRlbnNpb25zLnRleHR1cmVGbG9hdDsKIH0K
IAotc3RhdGljIGJvb2wgRmxvYXRSZW5kZXJhYmxlU3VwcG9ydChHTHVpbnQgY2xpZW50VmVyc2lv
biwgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucykKK3N0YXRpYyBib29sIEZsb2F0UmVuZGVy
YWJsZVN1cHBvcnQoY29uc3QgVmVyc2lvbiAmY2xpZW50VmVyc2lvbiwgY29uc3QgRXh0ZW5zaW9u
cyAmZXh0ZW5zaW9ucykKIHsKICAgICAvLyBXZSBkb24ndCBleHBvc2UgY29sb3JCdWZmZXJGbG9h
dCBpbiBFUzIsIGJ1dCB3ZSBzaWxlbnRseSBzdXBwb3J0IHJlbmRlcmluZyB0byBmbG9hdC4KICAg
ICByZXR1cm4gRmxvYXRTdXBwb3J0KGNsaWVudFZlcnNpb24sIGV4dGVuc2lvbnMpICYmCi0gICAg
ICAgICAgIChleHRlbnNpb25zLmNvbG9yQnVmZmVyRmxvYXQgfHwgY2xpZW50VmVyc2lvbiA9PSAy
KTsKKyAgICAgICAgICAgKGV4dGVuc2lvbnMuY29sb3JCdWZmZXJGbG9hdCB8fCBjbGllbnRWZXJz
aW9uID09IFZlcnNpb24oMiwgMCkpOwogfQogCiAvLyBTcGVjaWFsIGZ1bmN0aW9uIGZvciBmbG9h
dCBmb3JtYXRzIHdpdGggb25lIG9yIHR3byBjaGFubmVscy4KLXN0YXRpYyBib29sIEZsb2F0U3Vw
cG9ydFJHKEdMdWludCBjbGllbnRWZXJzaW9uLCBjb25zdCBFeHRlbnNpb25zICZleHRlbnNpb25z
KQorc3RhdGljIGJvb2wgRmxvYXRTdXBwb3J0UkcoY29uc3QgVmVyc2lvbiAmY2xpZW50VmVyc2lv
biwgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5zaW9ucykKIHsKLSAgICByZXR1cm4gY2xpZW50VmVy
c2lvbiA+PSAzIHx8IChleHRlbnNpb25zLnRleHR1cmVGbG9hdCAmJiBleHRlbnNpb25zLnRleHR1
cmVSRyk7CisgICAgcmV0dXJuIGNsaWVudFZlcnNpb24gPj0gVmVyc2lvbigzLCAwKSB8fCAoZXh0
ZW5zaW9ucy50ZXh0dXJlRmxvYXQgJiYgZXh0ZW5zaW9ucy50ZXh0dXJlUkcpOwogfQogCi1zdGF0
aWMgYm9vbCBGbG9hdFJlbmRlcmFibGVTdXBwb3J0UkcoR0x1aW50IGNsaWVudFZlcnNpb24sIGNv
bnN0IEV4dGVuc2lvbnMgJmV4dGVuc2lvbnMpCitzdGF0aWMgYm9vbCBGbG9hdFJlbmRlcmFibGVT
dXBwb3J0UkcoY29uc3QgVmVyc2lvbiAmY2xpZW50VmVyc2lvbiwgY29uc3QgRXh0ZW5zaW9ucyAm
ZXh0ZW5zaW9ucykKIHsKICAgICAvLyBXZSBkb24ndCBleHBvc2UgY29sb3JCdWZmZXJGbG9hdCBp
biBFUzIsIGJ1dCB3ZSBzaWxlbnRseSBzdXBwb3J0IHJlbmRlcmluZyB0byBmbG9hdC4KICAgICBy
ZXR1cm4gRmxvYXRTdXBwb3J0UkcoY2xpZW50VmVyc2lvbiwgZXh0ZW5zaW9ucykgJiYKLSAgICAg
ICAgICAgKGV4dGVuc2lvbnMuY29sb3JCdWZmZXJGbG9hdCB8fCBjbGllbnRWZXJzaW9uID09IDIp
OworICAgICAgICAgICAoZXh0ZW5zaW9ucy5jb2xvckJ1ZmZlckZsb2F0IHx8IGNsaWVudFZlcnNp
b24gPT0gVmVyc2lvbigyLCAwKSk7CiB9CiAKIEludGVybmFsRm9ybWF0OjpJbnRlcm5hbEZvcm1h
dCgpCkBAIC0yNzcsNiArMjg3LDEyIEBAIEZvcm1hdCBGb3JtYXQ6OkludmFsaWQoKQogICAgIHJl
dHVybiBpbnZhbGlkOwogfQogCitzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFt
ICZvcywgY29uc3QgRm9ybWF0ICZmbXQpCit7CisgICAgLy8gVE9ETyh5bm92aWtvdik6IHJldHVy
biBzdHJpbmcgcmVwcmVzZW50YXRpb24gd2hlbiBhdmFpbGFibGUKKyAgICByZXR1cm4gRm10SGV4
U2hvcnQob3MsIGZtdC5hc1NpemVkKCkpOworfQorCiBib29sIEludGVybmFsRm9ybWF0OjpvcGVy
YXRvcj09KGNvbnN0IEludGVybmFsRm9ybWF0ICZvdGhlcikgY29uc3QKIHsKICAgICAvLyBXZSBh
c3N1bWUgdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZXMuCkBAIC00MjUsNDggKzQ0MSw0OCBAQCBzdGF0
aWMgSW50ZXJuYWxGb3JtYXRJbmZvTWFwIEJ1aWxkSW50ZXJuYWxGb3JtYXRJbmZvTWFwKCkKIAog
ICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKIAotICAgIC8vICAgICAgICAgICAgICAgICB8IEludGVy
bmFsIGZvcm1hdCAgICAgfCBSIHwgRyB8IEIgfCBBIHxTIHwgRm9ybWF0ICAgICAgICAgfCBUeXBl
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb21wb25lbnQgdHlwZSAgICAgICAgfCBTUkdC
IHwgVGV4dHVyZSBzdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICB8IFJlbmRlcmFibGUg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGaWx0ZXJhYmxlICAgIHwKLSAgICBBZGRS
R0JBRm9ybWF0KCZtYXAsIEdMX1I4LCAgICAgICAgICAgICAgICAgOCwgIDAsICAwLCAgMCwgMCwg
R0xfUkVELCAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJ
R05FRF9OT1JNQUxJWkVELCBmYWxzZSwgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnRl
eHR1cmVSRz4sIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjp0ZXh0dXJlUkc+LCBBbHdh
eXNTdXBwb3J0ZWQpOwotICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUjhfU05PUk0sICAgICAg
ICAgICA4LCAgMCwgIDAsICAwLCAwLCBHTF9SRUQsICAgICAgICAgIEdMX0JZVEUsICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELCAgIGZhbHNlLCBSZXF1aXJlRVM8
Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7Ci0gICAgQWRkUkdCQUZvcm1hdCgm
bWFwLCBHTF9SRzgsICAgICAgICAgICAgICAgIDgsICA4LCAgMCwgIDAsIDAsIEdMX1JHLCAgICAg
ICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFM
SVpFRCwgZmFsc2UsIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjp0ZXh0dXJlUkc+LCBS
ZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6dGV4dHVyZVJHPiwgQWx3YXlzU3VwcG9ydGVk
KTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHOF9TTk9STSwgICAgICAgICAgOCwgIDgs
ICAwLCAgMCwgMCwgR0xfUkcsICAgICAgICAgICBHTF9CWVRFLCAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOwotICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdC
OCwgICAgICAgICAgICAgICA4LCAgOCwgIDgsICAwLCAwLCBHTF9SR0IsICAgICAgICAgIEdMX1VO
U0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIGZhbHNl
LCBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6cmdiOHJnYmE4PiwgUmVxdWlyZUVTT3JF
eHQ8MywgJkV4dGVuc2lvbnM6OnJnYjhyZ2JhOD4sIEFsd2F5c1N1cHBvcnRlZCk7Ci0gICAgQWRk
UkdCQUZvcm1hdCgmbWFwLCBHTF9SR0I4X1NOT1JNLCAgICAgICAgIDgsICA4LCAgOCwgIDAsIDAs
IEdMX1JHQiwgICAgICAgICAgR0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU0lH
TkVEX05PUk1BTElaRUQsICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3
YXlzU3VwcG9ydGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQjU2NSwgICAgICAg
ICAgICAgNSwgIDYsICA1LCAgMCwgMCwgR0xfUkdCLCAgICAgICAgICBHTF9VTlNJR05FRF9TSE9S
VF81XzZfNSwgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxzZSwgUmVxdWlyZUVT
PDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwyPiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOwotICAgIEFkZFJHQkFGb3JtYXQo
Jm1hcCwgR0xfUkdCQTQsICAgICAgICAgICAgICA0LCAgNCwgIDQsICA0LCAwLCBHTF9SR0JBLCAg
ICAgICAgIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQsICAgICAgIEdMX1VOU0lHTkVEX05PUk1B
TElaRUQsIGZhbHNlLCBSZXF1aXJlRVM8Mj4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRl
ZCk7Ci0gICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0I1X0ExLCAgICAgICAgICAgIDUsICA1
LCAgNSwgIDEsIDAsIEdMX1JHQkEsICAgICAgICAgR0xfVU5TSUdORURfU0hPUlRfNV81XzVfMSwg
ICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVFUzwyPiwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mj4sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JH
QkE4LCAgICAgICAgICAgICAgOCwgIDgsICA4LCAgOCwgMCwgR0xfUkdCQSwgICAgICAgICBHTF9V
TlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxz
ZSwgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnJnYjhyZ2JhOD4sIFJlcXVpcmVFU09y
RXh0PDMsICZFeHRlbnNpb25zOjpyZ2I4cmdiYTg+LCBBbHdheXNTdXBwb3J0ZWQpOwotICAgIEFk
ZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCQThfU05PUk0sICAgICAgICA4LCAgOCwgIDgsICA4LCAw
LCBHTF9SR0JBLCAgICAgICAgIEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NJ
R05FRF9OT1JNQUxJWkVELCAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
d2F5c1N1cHBvcnRlZCk7Ci0gICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0IxMF9BMiwgICAg
ICAgICAgMTAsIDEwLCAxMCwgIDIsIDAsIEdMX1JHQkEsICAgICAgICAgR0xfVU5TSUdORURfSU5U
XzJfMTBfMTBfMTBfUkVWLCAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVF
UzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0
KCZtYXAsIEdMX1JHQjEwX0EyVUksICAgICAgICAxMCwgMTAsIDEwLCAgMiwgMCwgR0xfUkdCQV9J
TlRFR0VSLCBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYsICBHTF9VTlNJR05FRF9JTlQs
ICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRl
ZCk7Ci0gICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9TUkdCOCwgICAgICAgICAgICAgIDgsICA4
LCAgOCwgIDAsIDAsIEdMX1JHQiwgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAg
ICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgdHJ1ZSwgIFJlcXVpcmVFU09yRXh0PDMsICZF
eHRlbnNpb25zOjpzUkdCPiwgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1NS
R0I4X0FMUEhBOCwgICAgICAgOCwgIDgsICA4LCAgOCwgMCwgR0xfUkdCQSwgICAgICAgICBHTF9V
TlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCB0cnVl
LCAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnNSR0I+LCAgICAgIFJlcXVpcmVFU09y
RXh0PDMsICZFeHRlbnNpb25zOjpzUkdCPiwgICAgICBBbHdheXNTdXBwb3J0ZWQpOwotICAgIEFk
ZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCOV9FNSwgICAgICAgICAgICA5LCAgOSwgIDksICAwLCA1
LCBHTF9SR0IsICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVF81XzlfOV85X1JFViwgICAgIEdMX0ZM
T0FULCAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFs
d2F5c1N1cHBvcnRlZCk7Ci0gICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SOEksICAgICAgICAg
ICAgICAgIDgsICAwLCAgMCwgIDAsIDAsIEdMX1JFRF9JTlRFR0VSLCAgR0xfQllURSwgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVF
UzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZFJHQkFGb3JtYXQo
Jm1hcCwgR0xfUjhVSSwgICAgICAgICAgICAgICA4LCAgMCwgIDAsICAwLCAwLCBHTF9SRURfSU5U
RUdFUiwgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwg
ICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVk
KTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1IxNkksICAgICAgICAgICAgICAxNiwgIDAs
ICAwLCAgMCwgMCwgR0xfUkVEX0lOVEVHRVIsICBHTF9TSE9SVCwgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SMTZV
SSwgICAgICAgICAgICAgMTYsICAwLCAgMCwgIDAsIDAsIEdMX1JFRF9JTlRFR0VSLCAgR0xfVU5T
SUdORURfU0hPUlQsICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2Us
IFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4s
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZFJH
QkFGb3JtYXQoJm1hcCwgR0xfUjMySSwgICAgICAgICAgICAgIDMyLCAgMCwgIDAsICAwLCAwLCBH
TF9SRURfSU5URUdFUiwgIEdMX0lOVCwgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwg
ICAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVy
U3VwcG9ydGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1IzMlVJLCAgICAgICAgICAg
ICAzMiwgIDAsICAwLCAgMCwgMCwgR0xfUkVEX0lOVEVHRVIsICBHTF9VTlNJR05FRF9JTlQsICAg
ICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkUkdCQUZvcm1hdCgmbWFw
LCBHTF9SRzhJLCAgICAgICAgICAgICAgIDgsICA4LCAgMCwgIDAsIDAsIEdMX1JHX0lOVEVHRVIs
ICAgR0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAg
ICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1
aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwot
ICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkc4VUksICAgICAgICAgICAgICA4LCAgOCwgIDAs
ICAwLCAwLCBHTF9SR19JTlRFR0VSLCAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHMTZJLCAg
ICAgICAgICAgICAxNiwgMTYsICAwLCAgMCwgMCwgR0xfUkdfSU5URUdFUiwgICBHTF9TSE9SVCwg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVx
dWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkUkdCQUZv
cm1hdCgmbWFwLCBHTF9SRzE2VUksICAgICAgICAgICAgMTYsIDE2LCAgMCwgIDAsIDAsIEdMX1JH
X0lOVEVHRVIsICAgR0xfVU5TSUdORURfU0hPUlQsICAgICAgICAgICAgICAgR0xfVU5TSUdORURf
SU5ULCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBw
b3J0ZWQpOwotICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkczMkksICAgICAgICAgICAgIDMy
LCAzMiwgIDAsICAwLCAwLCBHTF9SR19JTlRFR0VSLCAgIEdMX0lOVCwgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdM
X1IxMUZfRzExRl9CMTBGLCAgICAxMSwgMTEsIDEwLCAgMCwgMCwgR0xfUkdCLCAgICAgICAgICBH
TF9VTlNJR05FRF9JTlRfMTBGXzExRl8xMUZfUkVWLCBHTF9GTE9BVCwgICAgICAgICAgICAgICBm
YWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVF
eHQ8JkV4dGVuc2lvbnM6OmNvbG9yQnVmZmVyRmxvYXQ+LCBBbHdheXNTdXBwb3J0ZWQpOwotICAg
IEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkczMlVJLCAgICAgICAgICAgIDMyLCAzMiwgIDAsICAw
LCAwLCBHTF9SR19JTlRFR0VSLCAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAgICAgICAgIEdM
X1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQjhJLCAgICAg
ICAgICAgICAgOCwgIDgsICA4LCAgMCwgMCwgR0xfUkdCX0lOVEVHRVIsICBHTF9CWVRFLCAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVxdWly
ZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRkUkdCQUZvcm1h
dCgmbWFwLCBHTF9SR0I4VUksICAgICAgICAgICAgIDgsICA4LCAgOCwgIDAsIDAsIEdMX1JHQl9J
TlRFR0VSLCAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5U
LCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0
ZWQpOwotICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCMTZJLCAgICAgICAgICAgIDE2LCAx
NiwgMTYsICAwLCAwLCBHTF9SR0JfSU5URUdFUiwgIEdMX1NIT1JULCAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JH
QjE2VUksICAgICAgICAgICAxNiwgMTYsIDE2LCAgMCwgMCwgR0xfUkdCX0lOVEVHRVIsICBHTF9V
TlNJR05FRF9TSE9SVCwgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxz
ZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9y
dGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Ci0gICAgQWRk
UkdCQUZvcm1hdCgmbWFwLCBHTF9SR0IzMkksICAgICAgICAgICAgMzIsIDMyLCAzMiwgIDAsIDAs
IEdMX1JHQl9JTlRFR0VSLCAgR0xfSU5ULCAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5U
LCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2
ZXJTdXBwb3J0ZWQpOwotICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCMzJVSSwgICAgICAg
ICAgIDMyLCAzMiwgMzIsICAwLCAwLCBHTF9SR0JfSU5URUdFUiwgIEdMX1VOU0lHTkVEX0lOVCwg
ICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8
Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGRSR0JBRm9ybWF0KCZt
YXAsIEdMX1JHQkE4SSwgICAgICAgICAgICAgOCwgIDgsICA4LCAgOCwgMCwgR0xfUkdCQV9JTlRF
R0VSLCBHTF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAg
ICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl
cXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7
Ci0gICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0JBOFVJLCAgICAgICAgICAgIDgsICA4LCAg
OCwgIDgsIDAsIEdMX1JHQkFfSU5URUdFUiwgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAg
ICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCQTE2
SSwgICAgICAgICAgIDE2LCAxNiwgMTYsIDE2LCAwLCBHTF9SR0JBX0lOVEVHRVIsIEdMX1NIT1JU
LCAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZhbHNlLCBS
ZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDM+LCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKLSAgICBBZGRSR0JB
Rm9ybWF0KCZtYXAsIEdMX1JHQkExNlVJLCAgICAgICAgICAxNiwgMTYsIDE2LCAxNiwgMCwgR0xf
UkdCQV9JTlRFR0VSLCBHTF9VTlNJR05FRF9TSE9SVCwgICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1
cHBvcnRlZCk7Ci0gICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0JBMzJJLCAgICAgICAgICAg
MzIsIDMyLCAzMiwgMzIsIDAsIEdMX1JHQkFfSU5URUdFUiwgR0xfSU5ULCAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzPiwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwotICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwg
R0xfUkdCQTMyVUksICAgICAgICAgIDMyLCAzMiwgMzIsIDMyLCAwLCBHTF9SR0JBX0lOVEVHRVIs
IEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAg
IGZhbHNlLCBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWly
ZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAg
ICAvLyAgICAgICAgICAgICAgICAgfCBJbnRlcm5hbCBmb3JtYXQgICAgIHwgUiB8IEcgfCBCIHwg
QSB8UyB8IEZvcm1hdCAgICAgICAgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
Q29tcG9uZW50IHR5cGUgICAgICAgIHwgU1JHQiB8IFRleHR1cmUgc3VwcG9ydGVkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCBSZW5kZXJhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgRmlsdGVyYWJsZSAgICB8CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SOCwg
ICAgICAgICAgICAgICAgIDgsICAwLCAgMCwgIDAsIDAsIEdMX1JFRCwgICAgICAgICAgR0xfVU5T
SUdORURfQllURSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFsc2Us
IFJlcXVpcmVFU09yRXh0PDMsIDAsICZFeHRlbnNpb25zOjp0ZXh0dXJlUkc+LCBSZXF1aXJlRVNP
ckV4dDwzLCAwLCAmRXh0ZW5zaW9uczo6dGV4dHVyZVJHPiwgQWx3YXlzU3VwcG9ydGVkKTsKKyAg
ICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1I4X1NOT1JNLCAgICAgICAgICAgOCwgIDAsICAwLCAg
MCwgMCwgR0xfUkVELCAgICAgICAgICBHTF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9TSUdORURfTk9STUFMSVpFRCwgICBmYWxzZSwgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkc4
LCAgICAgICAgICAgICAgICA4LCAgOCwgIDAsICAwLCAwLCBHTF9SRywgICAgICAgICAgIEdMX1VO
U0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIGZhbHNl
LCBSZXF1aXJlRVNPckV4dDwzLCAwLCAmRXh0ZW5zaW9uczo6dGV4dHVyZVJHPiwgUmVxdWlyZUVT
T3JFeHQ8MywgMCwgJkV4dGVuc2lvbnM6OnRleHR1cmVSRz4sIEFsd2F5c1N1cHBvcnRlZCk7Cisg
ICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SRzhfU05PUk0sICAgICAgICAgIDgsICA4LCAgMCwg
IDAsIDAsIEdMX1JHLCAgICAgICAgICAgR0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfU0lHTkVEX05PUk1BTElaRUQsICAgZmFsc2UsIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JH
QjgsICAgICAgICAgICAgICAgOCwgIDgsICA4LCAgMCwgMCwgR0xfUkdCLCAgICAgICAgICBHTF9V
TlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxz
ZSwgUmVxdWlyZUVTT3JFeHQ8MywgMCwgJkV4dGVuc2lvbnM6OnJnYjhyZ2JhOD4sIFJlcXVpcmVF
U09yRXh0PDMsIDAsICZFeHRlbnNpb25zOjpyZ2I4cmdiYTg+LCBBbHdheXNTdXBwb3J0ZWQpOwor
ICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCOF9TTk9STSwgICAgICAgICA4LCAgOCwgIDgs
ICAwLCAwLCBHTF9SR0IsICAgICAgICAgIEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1NJR05FRF9OT1JNQUxJWkVELCAgIGZhbHNlLCBSZXF1aXJlRVM8MywgMD4sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9S
R0I1NjUsICAgICAgICAgICAgIDUsICA2LCAgNSwgIDAsIDAsIEdMX1JHQiwgICAgICAgICAgR0xf
VU5TSUdORURfU0hPUlRfNV82XzUsICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFs
c2UsIFJlcXVpcmVFUzwyLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJl
RVM8MiwgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsK
KyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQkE0LCAgICAgICAgICAgICAgNCwgIDQsICA0
LCAgNCwgMCwgR0xfUkdCQSwgICAgICAgICBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80LCAgICAg
ICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBmYWxzZSwgUmVxdWlyZUVTPDIsIDA+LCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwyLCAwPiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xf
UkdCNV9BMSwgICAgICAgICAgICA1LCAgNSwgIDUsICAxLCAwLCBHTF9SR0JBLCAgICAgICAgIEdM
X1VOU0lHTkVEX1NIT1JUXzVfNV81XzEsICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIGZh
bHNlLCBSZXF1aXJlRVM8MiwgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWly
ZUVTPDIsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7
CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0JBOCwgICAgICAgICAgICAgIDgsICA4LCAg
OCwgIDgsIDAsIEdMX1JHQkEsICAgICAgICAgR0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAg
ICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgZmFsc2UsIFJlcXVpcmVFU09yRXh0PDMsIDAsICZF
eHRlbnNpb25zOjpyZ2I4cmdiYTg+LCBSZXF1aXJlRVNPckV4dDwzLCAwLCAmRXh0ZW5zaW9uczo6
cmdiOHJnYmE4PiwgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdM
X1JHQkE4X1NOT1JNLCAgICAgICAgOCwgIDgsICA4LCAgOCwgMCwgR0xfUkdCQSwgICAgICAgICBH
TF9CWVRFLCAgICAgICAgICAgICAgICAgICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwgICBm
YWxzZSwgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVy
U3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQp
OworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCMTBfQTIsICAgICAgICAgIDEwLCAxMCwg
MTAsICAyLCAwLCBHTF9SR0JBLCAgICAgICAgIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JF
ViwgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIGZhbHNlLCBSZXF1aXJlRVM8MywgMD4sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBH
TF9SR0IxMF9BMlVJLCAgICAgICAgMTAsIDEwLCAxMCwgIDIsIDAsIEdMX1JHQkFfSU5URUdFUiwg
R0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWLCAgR0xfVU5TSUdORURfSU5ULCAgICAgICAg
ZmFsc2UsIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1
aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQp
OworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfU1JHQjgsICAgICAgICAgICAgICA4LCAgOCwg
IDgsICAwLCAwLCBHTF9SR0IsICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICAgICAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIHRydWUsICBSZXF1aXJlRVNPckV4dDwzLCAwLCAm
RXh0ZW5zaW9uczo6c1JHQj4sICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBH
TF9TUkdCOF9BTFBIQTgsICAgICAgIDgsICA4LCAgOCwgIDgsIDAsIEdMX1JHQkEsICAgICAgICAg
R0xfVU5TSUdORURfQllURSwgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwg
dHJ1ZSwgIFJlcXVpcmVFU09yRXh0PDMsIDAsICZFeHRlbnNpb25zOjpzUkdCPiwgICAgICBSZXF1
aXJlRVNPckV4dDwzLCAwLCAmRXh0ZW5zaW9uczo6c1JHQj4sICAgICAgQWx3YXlzU3VwcG9ydGVk
KTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQjlfRTUsICAgICAgICAgICAgOSwgIDks
ICA5LCAgMCwgNSwgR0xfUkdCLCAgICAgICAgICBHTF9VTlNJR05FRF9JTlRfNV85XzlfOV9SRVYs
ICAgICBHTF9GTE9BVCwgICAgICAgICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDMsIDA+LCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwg
R0xfUjhJLCAgICAgICAgICAgICAgICA4LCAgMCwgIDAsICAwLCAwLCBHTF9SRURfSU5URUdFUiwg
IEdMX0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAg
IGZhbHNlLCBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVx
dWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVk
KTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1I4VUksICAgICAgICAgICAgICAgOCwgIDAs
ICAwLCAgMCwgMCwgR0xfUkVEX0lOVEVHRVIsICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAg
ICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDMsIDA+LCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBH
TF9SMTZJLCAgICAgICAgICAgICAgMTYsICAwLCAgMCwgIDAsIDAsIEdMX1JFRF9JTlRFR0VSLCAg
R0xfU0hPUlQsICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAg
ZmFsc2UsIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1
aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQp
OworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUjE2VUksICAgICAgICAgICAgIDE2LCAgMCwg
IDAsICAwLCAwLCBHTF9SRURfSU5URUdFUiwgIEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8MywgMD4sICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdM
X1IzMkksICAgICAgICAgICAgICAzMiwgIDAsICAwLCAgMCwgMCwgR0xfUkVEX0lOVEVHRVIsICBH
TF9JTlQsICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBm
YWxzZSwgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVp
cmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7
CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SMzJVSSwgICAgICAgICAgICAgMzIsICAwLCAg
MCwgIDAsIDAsIEdMX1JFRF9JTlRFR0VSLCAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgICAgICAg
ICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzLCAwPiwgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xf
Ukc4SSwgICAgICAgICAgICAgICA4LCAgOCwgIDAsICAwLCAwLCBHTF9SR19JTlRFR0VSLCAgIEdM
X0JZVEUsICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwgICAgICAgICAgICAgICAgIGZh
bHNlLCBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWly
ZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsK
KyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHOFVJLCAgICAgICAgICAgICAgOCwgIDgsICAw
LCAgMCwgMCwgR0xfUkdfSU5URUdFUiwgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAg
ICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9S
RzE2SSwgICAgICAgICAgICAgMTYsIDE2LCAgMCwgIDAsIDAsIEdMX1JHX0lOVEVHRVIsICAgR0xf
U0hPUlQsICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULCAgICAgICAgICAgICAgICAgZmFs
c2UsIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJl
RVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOwor
ICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkcxNlVJLCAgICAgICAgICAgIDE2LCAxNiwgIDAs
ICAwLCAwLCBHTF9SR19JTlRFR0VSLCAgIEdMX1VOU0lHTkVEX1NIT1JULCAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8MywgMD4sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JH
MzJJLCAgICAgICAgICAgICAzMiwgMzIsICAwLCAgMCwgMCwgR0xfUkdfSU5URUdFUiwgICBHTF9J
TlQsICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsICAgICAgICAgICAgICAgICBmYWxz
ZSwgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVF
UzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Cisg
ICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SMTFGX0cxMUZfQjEwRiwgICAgMTEsIDExLCAxMCwg
IDAsIDAsIEdMX1JHQiwgICAgICAgICAgR0xfVU5TSUdORURfSU5UXzEwRl8xMUZfMTFGX1JFViwg
R0xfRkxPQVQsICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjpjb2xvckJ1ZmZlckZs
b2F0PiwgICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JH
MzJVSSwgICAgICAgICAgICAzMiwgMzIsICAwLCAgMCwgMCwgR0xfUkdfSU5URUdFUiwgICBHTF9V
TlNJR05FRF9JTlQsICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxz
ZSwgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVF
UzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7Cisg
ICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0I4SSwgICAgICAgICAgICAgIDgsICA4LCAgOCwg
IDAsIDAsIEdMX1JHQl9JTlRFR0VSLCAgR0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfSU5ULCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdC
OFVJLCAgICAgICAgICAgICA4LCAgOCwgIDgsICAwLCAwLCBHTF9SR0JfSU5URUdFUiwgIEdMX1VO
U0lHTkVEX0JZVEUsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNl
LCBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBw
b3J0ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAg
ICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQjE2SSwgICAgICAgICAgICAxNiwgMTYsIDE2LCAg
MCwgMCwgR0xfUkdCX0lOVEVHRVIsICBHTF9TSE9SVCwgICAgICAgICAgICAgICAgICAgICAgICBH
TF9JTlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0Ix
NlVJLCAgICAgICAgICAgMTYsIDE2LCAxNiwgIDAsIDAsIEdMX1JHQl9JTlRFR0VSLCAgR0xfVU5T
SUdORURfU0hPUlQsICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2Us
IFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBv
cnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAg
IEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCMzJJLCAgICAgICAgICAgIDMyLCAzMiwgMzIsICAw
LCAwLCBHTF9SR0JfSU5URUdFUiwgIEdMX0lOVCwgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0lOVCwgICAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQjMy
VUksICAgICAgICAgICAzMiwgMzIsIDMyLCAgMCwgMCwgR0xfUkdCX0lOVEVHRVIsICBHTF9VTlNJ
R05FRF9JTlQsICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxzZSwg
UmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9y
dGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAg
QWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0JBOEksICAgICAgICAgICAgIDgsICA4LCAgOCwgIDgs
IDAsIEdMX1JHQkFfSU5URUdFUiwgR0xfQllURSwgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
SU5ULCAgICAgICAgICAgICAgICAgZmFsc2UsIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCQThV
SSwgICAgICAgICAgICA4LCAgOCwgIDgsICA4LCAwLCBHTF9SR0JBX0lOVEVHRVIsIEdMX1VOU0lH
TkVEX0JZVEUsICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgIGZhbHNlLCBS
ZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDMs
IDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBB
ZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQkExNkksICAgICAgICAgICAxNiwgMTYsIDE2LCAxNiwg
MCwgR0xfUkdCQV9JTlRFR0VSLCBHTF9TSE9SVCwgICAgICAgICAgICAgICAgICAgICAgICBHTF9J
TlQsICAgICAgICAgICAgICAgICBmYWxzZSwgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOZXZlclN1cHBvcnRlZCk7CisgICAgQWRkUkdCQUZvcm1hdCgmbWFwLCBHTF9SR0JBMTZV
SSwgICAgICAgICAgMTYsIDE2LCAxNiwgMTYsIDAsIEdMX1JHQkFfSU5URUdFUiwgR0xfVU5TSUdO
RURfU0hPUlQsICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCAgICAgICAgZmFsc2UsIFJl
cXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mywg
MD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQpOworICAgIEFk
ZFJHQkFGb3JtYXQoJm1hcCwgR0xfUkdCQTMySSwgICAgICAgICAgIDMyLCAzMiwgMzIsIDMyLCAw
LCBHTF9SR0JBX0lOVEVHRVIsIEdMX0lOVCwgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lO
VCwgICAgICAgICAgICAgICAgIGZhbHNlLCBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5ldmVyU3VwcG9ydGVkKTsKKyAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdMX1JHQkEzMlVJ
LCAgICAgICAgICAzMiwgMzIsIDMyLCAzMiwgMCwgR0xfUkdCQV9JTlRFR0VSLCBHTF9VTlNJR05F
RF9JTlQsICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsICAgICAgICBmYWxzZSwgUmVx
dWlyZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFUzwzLCAw
PiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCk7CiAKICAgICBB
ZGRSR0JBRm9ybWF0KCZtYXAsIEdMX0JHUkE4X0VYVCwgICAgICAgICAgOCwgIDgsICA4LCAgOCwg
MCwgR0xfQkdSQV9FWFQsICAgICBHTF9VTlNJR05FRF9CWVRFLCAgICAgICAgICAgICAgICAgIEdM
X1VOU0lHTkVEX05PUk1BTElaRUQsIGZhbHNlLCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0
dXJlRm9ybWF0QkdSQTg4ODg+LCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlRm9ybWF0
QkdSQTg4ODg+LCBBbHdheXNTdXBwb3J0ZWQpOwogICAgIEFkZFJHQkFGb3JtYXQoJm1hcCwgR0xf
QkdSQTRfQU5HTEVYLCAgICAgICA0LCAgNCwgIDQsICA0LCAwLCBHTF9CR1JBX0VYVCwgICAgIEdM
X1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0VYVCwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwg
ZmFsc2UsIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVGb3JtYXRCR1JBODg4OD4sIFJl
cXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVGb3JtYXRCR1JBODg4OD4sIEFsd2F5c1N1cHBv
cnRlZCk7CkBAIC00ODgsMTMgKzUwNCwxMyBAQCBzdGF0aWMgSW50ZXJuYWxGb3JtYXRJbmZvTWFw
IEJ1aWxkSW50ZXJuYWxGb3JtYXRJbmZvTWFwKCkKICAgICBBZGRSR0JBRm9ybWF0KCZtYXAsIEdM
X1JHQkEzMkYsICAgICAgICAgICAzMiwgMzIsIDMyLCAzMiwgMCwgR0xfUkdCQSwgICAgICAgICBH
TF9GTE9BVCwgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwgZmFsc2UsIEZsb2F0U3Vw
cG9ydCwgICAgICAgRmxvYXRSZW5kZXJhYmxlU3VwcG9ydCwgICAgICAgUmVxdWlyZUV4dDwmRXh0
ZW5zaW9uczo6dGV4dHVyZUZsb2F0TGluZWFyPiAgICApOwogCiAgICAgLy8gRGVwdGggc3RlbmNp
bCBmb3JtYXRzCi0gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlcm5hbCBmb3Jt
YXQgICAgICAgICB8IEQgfFMgfCBYIHwgRm9ybWF0ICAgICAgICAgICAgfCBUeXBlICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IENvbXBvbmVudCB0eXBlICAgICAgICB8IFN1cHBvcnRlZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVuZGVyYWJsZSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IEZpbHRlcmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAg
IEFkZERlcHRoU3RlbmNpbEZvcm1hdCgmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQxNiwgICAgIDE2
LCAwLCAgMCwgR0xfREVQVEhfQ09NUE9ORU5ULCBHTF9VTlNJR05FRF9TSE9SVCwgICAgICAgICAg
ICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVF
U09yRXh0PDMsICZFeHRlbnNpb25zOjpkZXB0aFRleHR1cmVzPik7Ci0gICAgQWRkRGVwdGhTdGVu
Y2lsRm9ybWF0KCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVDI0LCAgICAgMjQsIDAsICAwLCBHTF9E
RVBUSF9DT01QT05FTlQsIEdMX1VOU0lHTkVEX0lOVCwgICAgICAgICAgICAgICAgICAgR0xfVU5T
SUdORURfTk9STUFMSVpFRCwgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4
dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXM+KTsKLSAgICBBZGREZXB0aFN0ZW5jaWxGb3JtYXQoJm1h
cCwgR0xfREVQVEhfQ09NUE9ORU5UMzJGLCAgICAzMiwgMCwgIDAsIEdMX0RFUFRIX0NPTVBPTkVO
VCwgR0xfRkxPQVQsICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwgICAgICAgICAg
ICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVp
cmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6ZGVw
dGhUZXh0dXJlcz4pOwotICAgIEFkZERlcHRoU3RlbmNpbEZvcm1hdCgmbWFwLCBHTF9ERVBUSF9D
T01QT05FTlQzMl9PRVMsIDMyLCAwLCAgMCwgR0xfREVQVEhfQ09NUE9ORU5ULCBHTF9VTlNJR05F
RF9JTlQsICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIFJlcXVpcmVF
eHRPckV4dDwmRXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcywgJkV4dGVuc2lvbnM6OmRlcHRoMzI+
LCBSZXF1aXJlRXh0T3JFeHQ8JkV4dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXMsICZFeHRlbnNpb25z
OjpkZXB0aDMyPiwgQWx3YXlzU3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7
Ci0gICAgQWRkRGVwdGhTdGVuY2lsRm9ybWF0KCZtYXAsIEdMX0RFUFRIMjRfU1RFTkNJTDgsICAg
ICAgMjQsIDgsICAwLCBHTF9ERVBUSF9TVEVOQ0lMLCAgIEdMX1VOU0lHTkVEX0lOVF8yNF84LCAg
ICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgUmVxdWlyZUVTT3JFeHQ8MywgJkV4
dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXM+LCBSZXF1aXJlRVNPckV4dE9yRXh0PDMsICZFeHRlbnNp
b25zOjpkZXB0aFRleHR1cmVzLCAmRXh0ZW5zaW9uczo6cGFja2VkRGVwdGhTdGVuY2lsPiwgQWx3
YXlzU3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICBBZGREZXB0
aFN0ZW5jaWxGb3JtYXQoJm1hcCwgR0xfREVQVEgzMkZfU1RFTkNJTDgsICAgICAzMiwgOCwgMjQs
IEdMX0RFUFRIX1NURU5DSUwsICAgR0xfRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWLCBH
TF9GTE9BVCwgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mz4sICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgIC8vICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgSW50ZXJuYWwgZm9ybWF0ICAgICAgICAgfCBEIHxTIHwgWCB8IEZvcm1hdCAgICAg
ICAgICAgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb21wb25lbnQgdHlw
ZSAgICAgICAgfCBTdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IFJlbmRlcmFibGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGaWx0ZXJhYmxlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICBBZGREZXB0aFN0ZW5jaWxGb3JtYXQoJm1hcCwg
R0xfREVQVEhfQ09NUE9ORU5UMTYsICAgICAxNiwgMCwgIDAsIEdMX0RFUFRIX0NPTVBPTkVOVCwg
R0xfVU5TSUdORURfU0hPUlQsICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVE
LCBSZXF1aXJlRVM8MiwgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVp
cmVFUzwyLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVNPckV4dDwzLCAwLCAmRXh0ZW5zaW9u
czo6ZGVwdGhUZXh0dXJlcz4pOworICAgIEFkZERlcHRoU3RlbmNpbEZvcm1hdCgmbWFwLCBHTF9E
RVBUSF9DT01QT05FTlQyNCwgICAgIDI0LCAwLCAgMCwgR0xfREVQVEhfQ09NUE9ORU5ULCBHTF9V
TlNJR05FRF9JTlQsICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIFJl
cXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVT
PDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVFU09yRXh0PDMsIDAsICZFeHRlbnNpb25zOjpk
ZXB0aFRleHR1cmVzPik7CisgICAgQWRkRGVwdGhTdGVuY2lsRm9ybWF0KCZtYXAsIEdMX0RFUFRI
X0NPTVBPTkVOVDMyRiwgICAgMzIsIDAsICAwLCBHTF9ERVBUSF9DT01QT05FTlQsIEdMX0ZMT0FU
LCAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsICAgICAgICAgICAgICAgUmVxdWly
ZUVTPDMsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mywg
MD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTT3JFeHQ8MywgMCwgJkV4dGVuc2lvbnM6OmRlcHRo
VGV4dHVyZXM+KTsKKyAgICBBZGREZXB0aFN0ZW5jaWxGb3JtYXQoJm1hcCwgR0xfREVQVEhfQ09N
UE9ORU5UMzJfT0VTLCAzMiwgMCwgIDAsIEdMX0RFUFRIX0NPTVBPTkVOVCwgR0xfVU5TSUdORURf
SU5ULCAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCBSZXF1aXJlRXh0
T3JFeHQ8JkV4dGVuc2lvbnM6OmRlcHRoVGV4dHVyZXMsICZFeHRlbnNpb25zOjpkZXB0aDMyPiwg
UmVxdWlyZUV4dE9yRXh0PCZFeHRlbnNpb25zOjpkZXB0aFRleHR1cmVzLCAmRXh0ZW5zaW9uczo6
ZGVwdGgzMj4sICAgICBBbHdheXNTdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICApOworICAgIEFkZERlcHRoU3RlbmNpbEZvcm1hdCgmbWFwLCBHTF9ERVBUSDI0X1NURU5D
SUw4LCAgICAgIDI0LCA4LCAgMCwgR0xfREVQVEhfU1RFTkNJTCwgICBHTF9VTlNJR05FRF9JTlRf
MjRfOCwgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIFJlcXVpcmVFU09yRXh0
PDMsIDAsICZFeHRlbnNpb25zOjpkZXB0aFRleHR1cmVzPiwgUmVxdWlyZUVTT3JFeHRPckV4dDwz
LCAwLCAmRXh0ZW5zaW9uczo6ZGVwdGhUZXh0dXJlcywgJkV4dGVuc2lvbnM6OnBhY2tlZERlcHRo
U3RlbmNpbD4sIEFsd2F5c1N1cHBvcnRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICk7CisgICAgQWRkRGVwdGhTdGVuY2lsRm9ybWF0KCZtYXAsIEdMX0RFUFRIMzJGX1NURU5DSUw4
LCAgICAgMzIsIDgsIDI0LCBHTF9ERVBUSF9TVEVOQ0lMLCAgIEdMX0ZMT0FUXzMyX1VOU0lHTkVE
X0lOVF8yNF84X1JFViwgR0xfRkxPQVQsICAgICAgICAgICAgICAgUmVxdWlyZUVTPDMsIDA+LCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8MywgMD4sICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQWx3YXlzU3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsK
ICAgICAvLyBTVEVOQ0lMX0lOREVYOCBpcyBzcGVjaWFsLWNhc2VkLCBzZWUgYXJvdW5kIHRoZSBi
b3R0b20gb2YgdGhlIGxpc3QuCiAKICAgICAvLyBMdW1pbmFuY2UgYWxwaGEgZm9ybWF0cwpAQCAt
NTEwLDM2ICs1MjYsMzYgQEAgc3RhdGljIEludGVybmFsRm9ybWF0SW5mb01hcCBCdWlsZEludGVy
bmFsRm9ybWF0SW5mb01hcCgpCiAgICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWly
KEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQsIExVTUFGb3JtYXQoMTYsIDE2LCBHTF9MVU1JTkFO
Q0VfQUxQSEEsIEdMX0hBTEZfRkxPQVQsICAgIEdMX0ZMT0FULCAgICAgICAgICAgICAgIFJlcXVp
cmVFeHRBbmRFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVTdG9yYWdlLCAmRXh0ZW5zaW9uczo6dGV4
dHVyZUhhbGZGbG9hdD4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CiAKICAg
ICAvLyBVbnNpemVkIGZvcm1hdHMKLSAgICAvLyAgICAgICAgICAgICAgICAgICAgfCBJbnRlcm5h
bCBmb3JtYXQgICB8IEZvcm1hdCAgICAgICAgICAgIHwgU3VwcG9ydGVkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJlbmRlcmFibGUgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCBGaWx0ZXJhYmxlICAgIHwKLSAgICBBZGRVbnNpemVkRm9y
bWF0KCZtYXAsIEdMX0FMUEhBLCAgICAgICAgICAgR0xfQUxQSEEsICAgICAgICAgICBSZXF1aXJl
RVM8Mj4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0
ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7
Ci0gICAgQWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9MVU1JTkFOQ0UsICAgICAgIEdMX0xVTUlO
QU5DRSwgICAgICAgUmVxdWlyZUVTPDI+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBbHdheXNTdXBwb3J0ZWQpOwotICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfTFVNSU5B
TkNFX0FMUEhBLCBHTF9MVU1JTkFOQ0VfQUxQSEEsIFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKLSAgICBBZGRVbnNpemVkRm9y
bWF0KCZtYXAsIEdMX1JFRCwgICAgICAgICAgICAgR0xfUkVELCAgICAgICAgICAgICBSZXF1aXJl
RVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6dGV4dHVyZVJHPiwgICAgICAgICAgTmV2ZXJTdXBwb3J0
ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7
Ci0gICAgQWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9SRywgICAgICAgICAgICAgIEdMX1JHLCAg
ICAgICAgICAgICAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnRleHR1cmVSRz4sICAg
ICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBBbHdheXNTdXBwb3J0ZWQpOwotICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfUkdCLCAg
ICAgICAgICAgICBHTF9SR0IsICAgICAgICAgICAgIFJlcXVpcmVFUzwyPiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlRVM8Mj4sICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKLSAgICBBZGRVbnNpemVkRm9y
bWF0KCZtYXAsIEdMX1JHQkEsICAgICAgICAgICAgR0xfUkdCQSwgICAgICAgICAgICBSZXF1aXJl
RVM8Mj4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDI+
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7
Ci0gICAgQWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9SRURfSU5URUdFUiwgICAgIEdMX1JFRF9J
TlRFR0VSLCAgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOZXZlclN1cHBvcnRlZCApOwotICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfUkdfSU5U
RUdFUiwgICAgICBHTF9SR19JTlRFR0VSLCAgICAgIFJlcXVpcmVFUzwzPiwgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQgKTsKLSAgICBBZGRVbnNpemVkRm9y
bWF0KCZtYXAsIEdMX1JHQl9JTlRFR0VSLCAgICAgR0xfUkdCX0lOVEVHRVIsICAgICBSZXF1aXJl
RVM8Mz4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0
ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkICk7
Ci0gICAgQWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9SR0JBX0lOVEVHRVIsICAgIEdMX1JHQkFf
SU5URUdFUiwgICAgUmVxdWlyZUVTPDM+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOZXZlclN1cHBvcnRlZCApOwotICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfQkdSQV9F
WFQsICAgICAgICBHTF9CR1JBX0VYVCwgICAgICAgIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRl
eHR1cmVGb3JtYXRCR1JBODg4OD4sICAgICBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJl
Rm9ybWF0QkdSQTg4ODg+LCAgICAgQWx3YXlzU3VwcG9ydGVkKTsKLSAgICBBZGRVbnNpemVkRm9y
bWF0KCZtYXAsIEdMX0RFUFRIX0NPTVBPTkVOVCwgR0xfREVQVEhfQ09NUE9ORU5ULCBSZXF1aXJl
RVM8Mj4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDI+
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7
Ci0gICAgQWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9ERVBUSF9TVEVOQ0lMLCAgIEdMX0RFUFRI
X1NURU5DSUwsICAgUmVxdWlyZUVTT3JFeHQ8MywgJkV4dGVuc2lvbnM6OnBhY2tlZERlcHRoU3Rl
bmNpbD4sIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNpb25zOjpwYWNrZWREZXB0aFN0ZW5jaWw+
LCBBbHdheXNTdXBwb3J0ZWQpOwotICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfU1JHQl9F
WFQsICAgICAgICBHTF9SR0IsICAgICAgICAgICAgIFJlcXVpcmVFU09yRXh0PDMsICZFeHRlbnNp
b25zOjpzUkdCPiwgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKLSAgICBBZGRVbnNpemVkRm9y
bWF0KCZtYXAsIEdMX1NSR0JfQUxQSEFfRVhULCAgR0xfUkdCQSwgICAgICAgICAgICBSZXF1aXJl
RVNPckV4dDwzLCAmRXh0ZW5zaW9uczo6c1JHQj4sICAgICAgICAgICAgICAgUmVxdWlyZUVTT3JF
eHQ8MywgJkV4dGVuc2lvbnM6OnNSR0I+LCAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7
CisgICAgLy8gICAgICAgICAgICAgICAgICAgIHwgSW50ZXJuYWwgZm9ybWF0ICAgfCBGb3JtYXQg
ICAgICAgICAgICB8IFN1cHBvcnRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCBSZW5kZXJhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgRmlsdGVyYWJsZSAgICB8CisgICAgQWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9B
TFBIQSwgICAgICAgICAgIEdMX0FMUEhBLCAgICAgICAgICAgUmVxdWlyZUVTPDIsIDA+LCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOworICAgIEFk
ZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfTFVNSU5BTkNFLCAgICAgICBHTF9MVU1JTkFOQ0UsICAg
ICAgIFJlcXVpcmVFUzwyLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRVbnNpemVkRm9ybWF0KCZtYXAsIEdMX0xVTUlOQU5D
RV9BTFBIQSwgR0xfTFVNSU5BTkNFX0FMUEhBLCBSZXF1aXJlRVM8MiwgMD4sICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkVW5zaXpl
ZEZvcm1hdCgmbWFwLCBHTF9SRUQsICAgICAgICAgICAgIEdMX1JFRCwgICAgICAgICAgICAgUmVx
dWlyZUVTT3JFeHQ8MywgMCwgJkV4dGVuc2lvbnM6OnRleHR1cmVSRz4sICAgICAgICAgIE5ldmVy
U3VwcG9ydGVkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNT
dXBwb3J0ZWQpOworICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfUkcsICAgICAgICAgICAg
ICBHTF9SRywgICAgICAgICAgICAgIFJlcXVpcmVFU09yRXh0PDMsIDAsICZFeHRlbnNpb25zOjp0
ZXh0dXJlUkc+LCAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRVbnNpemVkRm9ybWF0
KCZtYXAsIEdMX1JHQiwgICAgICAgICAgICAgR0xfUkdCLCAgICAgICAgICAgICBSZXF1aXJlRVM8
MiwgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZUVTPDIs
IDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRl
ZCk7CisgICAgQWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9SR0JBLCAgICAgICAgICAgIEdMX1JH
QkEsICAgICAgICAgICAgUmVxdWlyZUVTPDIsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlcXVpcmVFUzwyLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOworICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwg
R0xfUkVEX0lOVEVHRVIsICAgICBHTF9SRURfSU5URUdFUiwgICAgIFJlcXVpcmVFUzwzLCAwPiwg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCwgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQgKTsKKyAg
ICBBZGRVbnNpemVkRm9ybWF0KCZtYXAsIEdMX1JHX0lOVEVHRVIsICAgICAgR0xfUkdfSU5URUdF
UiwgICAgICBSZXF1aXJlRVM8MywgMD4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTmV2ZXJTdXBwb3J0ZWQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5ldmVyU3VwcG9ydGVkICk7CisgICAgQWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9SR0Jf
SU5URUdFUiwgICAgIEdMX1JHQl9JTlRFR0VSLCAgICAgUmVxdWlyZUVTPDMsIDA+LCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldmVyU3VwcG9ydGVkLCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXZlclN1cHBvcnRlZCApOworICAgIEFkZFVu
c2l6ZWRGb3JtYXQoJm1hcCwgR0xfUkdCQV9JTlRFR0VSLCAgICBHTF9SR0JBX0lOVEVHRVIsICAg
IFJlcXVpcmVFUzwzLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
ZXZlclN1cHBvcnRlZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV2
ZXJTdXBwb3J0ZWQgKTsKKyAgICBBZGRVbnNpemVkRm9ybWF0KCZtYXAsIEdMX0JHUkFfRVhULCAg
ICAgICAgR0xfQkdSQV9FWFQsICAgICAgICBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJl
Rm9ybWF0QkdSQTg4ODg+LCAgICAgICAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUZv
cm1hdEJHUkE4ODg4PiwgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7CisgICAgQWRkVW5zaXplZEZv
cm1hdCgmbWFwLCBHTF9ERVBUSF9DT01QT05FTlQsIEdMX0RFUFRIX0NPTVBPTkVOVCwgUmVxdWly
ZUVTPDIsIDA+LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVF
UzwyLCAwPiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbHdheXNTdXBw
b3J0ZWQpOworICAgIEFkZFVuc2l6ZWRGb3JtYXQoJm1hcCwgR0xfREVQVEhfU1RFTkNJTCwgICBH
TF9ERVBUSF9TVEVOQ0lMLCAgIFJlcXVpcmVFU09yRXh0PDMsIDAsICZFeHRlbnNpb25zOjpwYWNr
ZWREZXB0aFN0ZW5jaWw+LCBSZXF1aXJlRVNPckV4dDwzLCAwLCAmRXh0ZW5zaW9uczo6cGFja2Vk
RGVwdGhTdGVuY2lsPiwgQWx3YXlzU3VwcG9ydGVkKTsKKyAgICBBZGRVbnNpemVkRm9ybWF0KCZt
YXAsIEdMX1NSR0JfRVhULCAgICAgICAgR0xfUkdCLCAgICAgICAgICAgICBSZXF1aXJlRVNPckV4
dDwzLCAwLCAmRXh0ZW5zaW9uczo6c1JHQj4sICAgICAgICAgICAgICAgTmV2ZXJTdXBwb3J0ZWQs
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsd2F5c1N1cHBvcnRlZCk7
CisgICAgQWRkVW5zaXplZEZvcm1hdCgmbWFwLCBHTF9TUkdCX0FMUEhBX0VYVCwgIEdMX1JHQkEs
ICAgICAgICAgICAgUmVxdWlyZUVTT3JFeHQ8MywgMCwgJkV4dGVuc2lvbnM6OnNSR0I+LCAgICAg
ICAgICAgICAgIFJlcXVpcmVFU09yRXh0PDMsIDAsICZFeHRlbnNpb25zOjpzUkdCPiwgICAgICAg
ICAgICAgICBBbHdheXNTdXBwb3J0ZWQpOwogCiAgICAgLy8gQ29tcHJlc3NlZCBmb3JtYXRzLCBG
cm9tIEVTIDMuMC4xIHNwZWMsIHRhYmxlIDMuMTYKLSAgICAvLyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8IEludGVybmFsIGZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICAgICAgICAgICAgICB8VyB8SCB8IEJTIHxDQ3wgRm9ybWF0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgICAgICAgICB8IFNSR0IgfCBTdXBwb3J0ZWQg
ICB8IFJlbmRlcmFibGUgICAgfCBGaWx0ZXJhYmxlICAgIHwKLSAgICBtYXAuaW5zZXJ0KEludGVy
bmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9SMTFfRUFDLCAgICAgICAgICAgICAgICAg
ICAgICAgIENvbXByZXNzZWRGb3JtYXQoNCwgNCwgIDY0LCAxLCBHTF9DT01QUkVTU0VEX1IxMV9F
QUMsICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIFJlcXVp
cmVFUzwzPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5z
ZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQywg
ICAgICAgICAgICAgICAgIENvbXByZXNzZWRGb3JtYXQoNCwgNCwgIDY0LCAxLCBHTF9DT01QUkVT
U0VEX1NJR05FRF9SMTFfRUFDLCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgZmFs
c2UsIFJlcXVpcmVFUzwzPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAg
ICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9SRzExX0VB
QywgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWRGb3JtYXQoNCwgNCwgMTI4LCAyLCBH
TF9DT01QUkVTU0VEX1JHMTFfRUFDLCAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURf
QllURSwgZmFsc2UsIFJlcXVpcmVFUzwzPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRl
ZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NF
RF9TSUdORURfUkcxMV9FQUMsICAgICAgICAgICAgICAgIENvbXByZXNzZWRGb3JtYXQoNCwgNCwg
MTI4LCAyLCBHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQywgICAgICAgICAgICAgICAgR0xf
VU5TSUdORURfQllURSwgZmFsc2UsIFJlcXVpcmVFUzwzPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5
c1N1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xf
Q09NUFJFU1NFRF9SR0I4X0VUQzIsICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWRGb3Jt
YXQoNCwgNCwgIDY0LCAzLCBHTF9DT01QUkVTU0VEX1JHQjhfRVRDMiwgICAgICAgICAgICAgICAg
ICAgICAgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIFJlcXVpcmVFUzwzPiwgTmV2ZXJTdXBwb3J0
ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5m
b1BhaXIoR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLCAgICAgICAgICAgICAgICAgICAgIENvbXBy
ZXNzZWRGb3JtYXQoNCwgNCwgIDY0LCAzLCBHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIsICAgICAg
ICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgdHJ1ZSwgIFJlcXVpcmVFUzwzPiwgTmV2
ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFs
Rm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRD
MiwgIENvbXByZXNzZWRGb3JtYXQoNCwgNCwgIDY0LCAzLCBHTF9DT01QUkVTU0VEX1JHQjhfUFVO
Q0hUSFJPVUdIX0FMUEhBMV9FVEMyLCAgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIFJlcXVpcmVF
UzwzPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAgICBtYXAuaW5zZXJ0
KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hf
QUxQSEExX0VUQzIsIENvbXByZXNzZWRGb3JtYXQoNCwgNCwgIDY0LCAzLCBHTF9DT01QUkVTU0VE
X1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiwgR0xfVU5TSUdORURfQllURSwgdHJ1ZSwg
IFJlcXVpcmVFUzwzPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKLSAgICBt
YXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9SR0JBOF9FVEMy
X0VBQywgICAgICAgICAgICAgICAgIENvbXByZXNzZWRGb3JtYXQoNCwgNCwgMTI4LCA0LCBHTF9D
T01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllU
RSwgZmFsc2UsIFJlcXVpcmVFUzwzPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkp
KTsKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfRVRDMl9FQUMsICAgICAgICAgIENvbXByZXNzZWRGb3JtYXQoNCwgNCwgMTI4
LCA0LCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQywgICAgICAgICAgR0xfVU5T
SUdORURfQllURSwgdHJ1ZSwgIFJlcXVpcmVFUzwzPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1
cHBvcnRlZCkpKTsKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEludGVy
bmFsIGZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8
VyB8SCB8IEJTIHxDQ3wgRm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IFR5cGUgICAgICAgICAgICB8IFNSR0IgfCBTdXBwb3J0ZWQgICAgICB8IFJlbmRlcmFibGUg
ICAgfCBGaWx0ZXJhYmxlICAgIHwKKyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1Bh
aXIoR0xfQ09NUFJFU1NFRF9SMTFfRUFDLCAgICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNz
ZWRGb3JtYXQoNCwgNCwgIDY0LCAxLCBHTF9DT01QUkVTU0VEX1IxMV9FQUMsICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIFJlcXVpcmVFUzwzLCAwPiwgTmV2
ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKKyAgICBtYXAuaW5zZXJ0KEludGVybmFs
Rm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQywgICAgICAgICAgICAg
ICAgIENvbXByZXNzZWRGb3JtYXQoNCwgNCwgIDY0LCAxLCBHTF9DT01QUkVTU0VEX1NJR05FRF9S
MTFfRUFDLCAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIFJlcXVpcmVF
UzwzLCAwPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKKyAgICBtYXAuaW5z
ZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9SRzExX0VBQywgICAgICAg
ICAgICAgICAgICAgICAgIENvbXByZXNzZWRGb3JtYXQoNCwgNCwgMTI4LCAyLCBHTF9DT01QUkVT
U0VEX1JHMTFfRUFDLCAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgZmFs
c2UsIFJlcXVpcmVFUzwzLCAwPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsK
KyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9TSUdO
RURfUkcxMV9FQUMsICAgICAgICAgICAgICAgIENvbXByZXNzZWRGb3JtYXQoNCwgNCwgMTI4LCAy
LCBHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQywgICAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfQllURSwgZmFsc2UsIFJlcXVpcmVFUzwzLCAwPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1
cHBvcnRlZCkpKTsKKyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09N
UFJFU1NFRF9SR0I4X0VUQzIsICAgICAgICAgICAgICAgICAgICAgIENvbXByZXNzZWRGb3JtYXQo
NCwgNCwgIDY0LCAzLCBHTF9DT01QUkVTU0VEX1JHQjhfRVRDMiwgICAgICAgICAgICAgICAgICAg
ICAgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIFJlcXVpcmVFUzwzLCAwPiwgTmV2ZXJTdXBwb3J0
ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKKyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5m
b1BhaXIoR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLCAgICAgICAgICAgICAgICAgICAgIENvbXBy
ZXNzZWRGb3JtYXQoNCwgNCwgIDY0LCAzLCBHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzIsICAgICAg
ICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgdHJ1ZSwgIFJlcXVpcmVFUzwzLCAwPiwg
TmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKKyAgICBtYXAuaW5zZXJ0KEludGVy
bmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFf
RVRDMiwgIENvbXByZXNzZWRGb3JtYXQoNCwgNCwgIDY0LCAzLCBHTF9DT01QUkVTU0VEX1JHQjhf
UFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLCAgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIFJlcXVp
cmVFUzwzLCAwPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKKyAgICBtYXAu
aW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRI
Uk9VR0hfQUxQSEExX0VUQzIsIENvbXByZXNzZWRGb3JtYXQoNCwgNCwgIDY0LCAzLCBHTF9DT01Q
UkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiwgR0xfVU5TSUdORURfQllURSwg
dHJ1ZSwgIFJlcXVpcmVFUzwzLCAwPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkp
KTsKKyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9S
R0JBOF9FVEMyX0VBQywgICAgICAgICAgICAgICAgIENvbXByZXNzZWRGb3JtYXQoNCwgNCwgMTI4
LCA0LCBHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCAgICAgICAgICAgICAgICAgR0xfVU5T
SUdORURfQllURSwgZmFsc2UsIFJlcXVpcmVFUzwzLCAwPiwgTmV2ZXJTdXBwb3J0ZWQsIEFsd2F5
c1N1cHBvcnRlZCkpKTsKKyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xf
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUMsICAgICAgICAgIENvbXByZXNzZWRGb3Jt
YXQoNCwgNCwgMTI4LCA0LCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQywgICAg
ICAgICAgR0xfVU5TSUdORURfQllURSwgdHJ1ZSwgIFJlcXVpcmVFUzwzLCAwPiwgTmV2ZXJTdXBw
b3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKIAogICAgIC8vIEZyb20gR0xfRVhUX3RleHR1cmVf
Y29tcHJlc3Npb25fZHh0MQogICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
SW50ZXJuYWwgZm9ybWF0ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgfFcgfEgg
fCBCUyB8Q0N8IEZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFR5cGUgICAgICAg
ICAgICB8IFNSR0IgfCBTdXBwb3J0ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgUmVuZGVyYWJsZSAgICB8IEZpbHRlcmFibGUgICAgfApAQCAtNTU1LDYgKzU3MSwx
MyBAQCBzdGF0aWMgSW50ZXJuYWxGb3JtYXRJbmZvTWFwIEJ1aWxkSW50ZXJuYWxGb3JtYXRJbmZv
TWFwKCkKICAgICAvLyBGcm9tIEdMX09FU19jb21wcmVzc2VkX0VUQzFfUkdCOF90ZXh0dXJlCiAg
ICAgbWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0VUQzFfUkdCOF9PRVMsICAg
ICAgICAgICAgICAgICAgIENvbXByZXNzZWRGb3JtYXQoNCwgNCwgIDY0LCAzLCBHTF9FVEMxX1JH
QjhfT0VTLCAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSwgUmVxdWly
ZUV4dDwmRXh0ZW5zaW9uczo6Y29tcHJlc3NlZEVUQzFSR0I4VGV4dHVyZT4sIE5ldmVyU3VwcG9y
dGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CiAKKyAgICAvLyBGcm9tIEdMX0VYVF90ZXh0dXJlX2Nv
bXByZXNzaW9uX3MzdGNfc3JnYgorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgSW50ZXJuYWwgZm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAg
IHxXIHxIIHwgQlMgfENDfCBGb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
VHlwZSAgICAgICAgICAgIHwgU1JHQiB8IFN1cHBvcnRlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCBSZW5kZXJhYmxlICAgIHwgRmlsdGVyYWJsZSAgICB8CisgICAg
bWFwLmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU1JHQl9TM1RD
X0RYVDFfRVhULCAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsICA2NCwgMywgR0xfQ09NUFJF
U1NFRF9TUkdCX1MzVENfRFhUMV9FWFQsICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIHRydWUsIFJl
cXVpcmVFeHQ8JkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvblMzVENzUkdCPiwgTmV2ZXJT
dXBwb3J0ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKKyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9y
bWF0SW5mb1BhaXIoR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQsIENvbXBy
ZXNzZWRGb3JtYXQoNCwgNCwgIDY0LCA0LCBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19E
WFQxX0VYVCwgR0xfVU5TSUdORURfQllURSwgdHJ1ZSwgUmVxdWlyZUV4dDwmRXh0ZW5zaW9uczo6
dGV4dHVyZUNvbXByZXNzaW9uUzNUQ3NSR0I+LCBOZXZlclN1cHBvcnRlZCwgQWx3YXlzU3VwcG9y
dGVkKSkpOworICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9DT01QUkVT
U0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVCwgQ29tcHJlc3NlZEZvcm1hdCg0LCA0LCAxMjgs
IDQsIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhULCBHTF9VTlNJR05FRF9C
WVRFLCB0cnVlLCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjp0ZXh0dXJlQ29tcHJlc3Npb25TM1RD
c1JHQj4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmluc2Vy
dChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RY
VDVfRVhULCBDb21wcmVzc2VkRm9ybWF0KDQsIDQsIDEyOCwgNCwgR0xfQ09NUFJFU1NFRF9TUkdC
X0FMUEhBX1MzVENfRFhUNV9FWFQsIEdMX1VOU0lHTkVEX0JZVEUsIHRydWUsIFJlcXVpcmVFeHQ8
JkV4dGVuc2lvbnM6OnRleHR1cmVDb21wcmVzc2lvblMzVENzUkdCPiwgTmV2ZXJTdXBwb3J0ZWQs
IEFsd2F5c1N1cHBvcnRlZCkpKTsKKwogICAgIC8vIEZyb20gS0hSX3RleHR1cmVfY29tcHJlc3Np
b25fYXN0Y19oZHIKICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEludGVy
bmFsIGZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICB8IFcg
fCBIIHwgQlMgfENDfCBGb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
VHlwZSAgICAgICAgICAgIHwgU1JHQiB8IFN1cHBvcnRlZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8IFJlbmRlcmFibGUgICAgIHwgRmlsdGVyYWJsZSAgICB8CiAgICAgbWFwLmluc2VydChJ
bnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFIsICAg
ICAgICAgICBDb21wcmVzc2VkRm9ybWF0KCA0LCAgNCwgMTI4LCA0LCBHTF9DT01QUkVTU0VEX1JH
QkFfQVNUQ180eDRfS0hSLCAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgZmFsc2UsIFJlcXVp
cmVFeHRPckV4dDwmRXh0ZW5zaW9uczo6dGV4dHVyZUNvbXByZXNzaW9uQVNUQ0hEUiwgJkV4dGVu
c2lvbnM6OnRleHR1cmVDb21wcmVzc2lvbkFTVENMRFI+LCBOZXZlclN1cHBvcnRlZCwgQWx3YXlz
U3VwcG9ydGVkKSkpOwpAQCAtNTkxLDExICs2MTQsMTYgQEAgc3RhdGljIEludGVybmFsRm9ybWF0
SW5mb01hcCBCdWlsZEludGVybmFsRm9ybWF0SW5mb01hcCgpCiAgICAgLy8gLSBNdWx0aXNhbXBs
ZWQgYnVmZmVyIGFyZSBkaXNhbGxvd2VkIGZvciBub24tbm9ybWFsaXplZCBpbnRlZ2VyIGNvbXBv
bmVudCB0eXBlcyBhbmQgd2Ugd2FudCB0byBzdXBwb3J0IGl0IGZvciBTVEVOQ0lMX0lOREVYOAog
ICAgIC8vIC0gQWxsIG90aGVyIHN0ZW5jaWwgZm9ybWF0cyAoYWxsIGRlcHRoLXN0ZW5jaWwpIGFy
ZSBlaXRoZXIgZmxvYXQgb3Igbm9ybWFsaXplZAogICAgIC8vIC0gSXQgYWZmZWN0cyBvbmx5IHZh
bGlkYXRpb24gb2YgaW50ZXJuYWxmb3JtYXQgaW4gUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2Ft
cGxlLgotICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIHwgSW50ZXJuYWwgZm9ybWF0ICB8
RCB8UyB8WCB8IEZvcm1hdCAgICB8IFR5cGUgICAgICAgICAgICB8IENvbXBvbmVudCB0eXBlICAg
ICAgICB8IFN1cHBvcnRlZCAgIHwgUmVuZGVyYWJsZSAgfCBGaWx0ZXJhYmxlICAgfAotICAgIEFk
ZERlcHRoU3RlbmNpbEZvcm1hdCgmbWFwLCBHTF9TVEVOQ0lMX0lOREVYOCwgMCwgOCwgMCwgR0xf
U1RFTkNJTCwgR0xfVU5TSUdORURfQllURSwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgUmVxdWly
ZUVTPDI+LCBSZXF1aXJlRVM8Mj4sIE5ldmVyU3VwcG9ydGVkKTsKKyAgICAvLyAgICAgICAgICAg
ICAgICAgICAgICAgICB8IEludGVybmFsIGZvcm1hdCAgfEQgfFMgfFggfCBGb3JtYXQgICAgfCBU
eXBlICAgICAgICAgICAgfCBDb21wb25lbnQgdHlwZSAgICAgICAgfCBTdXBwb3J0ZWQgICAgICB8
IFJlbmRlcmFibGUgICAgIHwgRmlsdGVyYWJsZSAgIHwKKyAgICBBZGREZXB0aFN0ZW5jaWxGb3Jt
YXQoJm1hcCwgR0xfU1RFTkNJTF9JTkRFWDgsIDAsIDgsIDAsIEdMX1NURU5DSUwsIEdMX1VOU0lH
TkVEX0JZVEUsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIFJlcXVpcmVFUzwyLCAwPiwgUmVxdWly
ZUVTPDIsIDA+LCBOZXZlclN1cHBvcnRlZCk7CiAKICAgICAvLyBGcm9tIEdMX0FOR0xFX2xvc3N5
X2V0Y19kZWNvZGUKLSAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5mb1BhaXIoR0xfRVRD
MV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRSwgQ29tcHJlc3NlZEZvcm1hdCg0LCA0LCA2NCwgMywg
R0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRSwgR0xfVU5TSUdORURfQllURSwgZmFsc2Us
IFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6Omxvc3N5RVRDRGVjb2RlPiwgTmV2ZXJTdXBwb3J0ZWQs
IEFsd2F5c1N1cHBvcnRlZCkpKTsKKyAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8IEludGVybmFsIGZvcm1hdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHwgICAgICAgICAgICAgICAgfFcgfEggfEJTIHxDQ3wgRm9ybWF0ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUeXBlICAg
ICAgICAgICAgfCBTUkdCIHwgU3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg
UmVuZGVyYWJsZSAgICAgfCBGaWx0ZXJhYmxlICAgIHwKKyAgICBtYXAuaW5zZXJ0KEludGVybmFs
Rm9ybWF0SW5mb1BhaXIoR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRSwgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsIDY0LCAzLCBHTF9F
VEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjpsb3Nz
eUVUQ0RlY29kZT4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFw
Lmluc2VydChJbnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfUkdCOF9MT1NTWV9E
RUNPREVfRVRDMl9BTkdMRSwgICAgICAgICAgICAgICAgICAgICAgQ29tcHJlc3NlZEZvcm1hdCg0
LCA0LCA2NCwgMywgR0xfQ09NUFJFU1NFRF9SR0I4X0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFLCAg
ICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSwgUmVxdWlyZUV4dDwm
RXh0ZW5zaW9uczo6bG9zc3lFVENEZWNvZGU+LCBOZXZlclN1cHBvcnRlZCwgQWx3YXlzU3VwcG9y
dGVkKSkpOworICAgIG1hcC5pbnNlcnQoSW50ZXJuYWxGb3JtYXRJbmZvUGFpcihHTF9DT01QUkVT
U0VEX1NSR0I4X0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFLCAgICAgICAgICAgICAgICAgICAgIENv
bXByZXNzZWRGb3JtYXQoNCwgNCwgNjQsIDMsIEdMX0NPTVBSRVNTRURfU1JHQjhfTE9TU1lfREVD
T0RFX0VUQzJfQU5HTEUsICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgdHJ1
ZSwgIFJlcXVpcmVFeHQ8JkV4dGVuc2lvbnM6Omxvc3N5RVRDRGVjb2RlPiwgTmV2ZXJTdXBwb3J0
ZWQsIEFsd2F5c1N1cHBvcnRlZCkpKTsKKyAgICBtYXAuaW5zZXJ0KEludGVybmFsRm9ybWF0SW5m
b1BhaXIoR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfTE9TU1lfREVDT0RF
X0VUQzJfQU5HTEUsICBDb21wcmVzc2VkRm9ybWF0KDQsIDQsIDY0LCAzLCBHTF9DT01QUkVTU0VE
X1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9MT1NTWV9ERUNPREVfRVRDMl9BTkdMRSwgIEdMX1VO
U0lHTkVEX0JZVEUsIGZhbHNlLCBSZXF1aXJlRXh0PCZFeHRlbnNpb25zOjpsb3NzeUVUQ0RlY29k
ZT4sIE5ldmVyU3VwcG9ydGVkLCBBbHdheXNTdXBwb3J0ZWQpKSk7CisgICAgbWFwLmluc2VydChJ
bnRlcm5hbEZvcm1hdEluZm9QYWlyKEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FM
UEhBMV9MT1NTWV9ERUNPREVfRVRDMl9BTkdMRSwgQ29tcHJlc3NlZEZvcm1hdCg0LCA0LCA2NCwg
MywgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0xPU1NZX0RFQ09ERV9F
VEMyX0FOR0xFLCBHTF9VTlNJR05FRF9CWVRFLCB0cnVlLCAgUmVxdWlyZUV4dDwmRXh0ZW5zaW9u
czo6bG9zc3lFVENEZWNvZGU+LCBOZXZlclN1cHBvcnRlZCwgQWx3YXlzU3VwcG9ydGVkKSkpOwog
CiAgICAgLy8gRnJvbSBHTF9FWFRfdGV4dHVyZV9ub3JtMTYKICAgICAvLyAgICAgICAgICAgICAg
ICAgfCBJbnRlcm5hbCBmb3JtYXQgICAgIHwgUiB8IEcgfCBCIHwgQSB8UyB8IEZvcm1hdCAgICAg
ICAgIHwgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29tcG9uZW50IHR5cGUgICAg
ICAgIHwgU1JHQiB8IFRleHR1cmUgc3VwcG9ydGVkICAgICAgICAgICAgICAgICAgICAgICAgfCBS
ZW5kZXJhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRmlsdGVyYWJsZSAgICB8
CkBAIC02MTUsMTAgKzY0Myw3IEBAIHN0YXRpYyBJbnRlcm5hbEZvcm1hdEluZm9NYXAgQnVpbGRJ
bnRlcm5hbEZvcm1hdEluZm9NYXAoKQogCiBzdGF0aWMgY29uc3QgSW50ZXJuYWxGb3JtYXRJbmZv
TWFwICZHZXRJbnRlcm5hbEZvcm1hdE1hcCgpCiB7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZXhpdC10aW1lLWRlc3Ry
dWN0b3JzIgogICAgIHN0YXRpYyBjb25zdCBJbnRlcm5hbEZvcm1hdEluZm9NYXAgZm9ybWF0TWFw
ID0gQnVpbGRJbnRlcm5hbEZvcm1hdEluZm9NYXAoKTsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwb3AKICAgICByZXR1cm4gZm9ybWF0TWFwOwogfQogCkBAIC04NjIsMTAgKzg4Nyw3IEBAIEdM
ZW51bSBHZXRTaXplZEludGVybmFsRm9ybWF0KEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgR0xlbnVt
IHR5cGUpCiAKIGNvbnN0IEZvcm1hdFNldCAmR2V0QWxsU2l6ZWRJbnRlcm5hbEZvcm1hdHMoKQog
ewotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9ycyIKICAgICBzdGF0aWMgRm9ybWF0U2V0
IGZvcm1hdFNldCA9IEJ1aWxkQWxsU2l6ZWRJbnRlcm5hbEZvcm1hdFNldCgpOwotI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHBvcAogICAgIHJldHVybiBmb3JtYXRTZXQ7CiB9CiAKQEAgLTE2NTEs
NiArMTY3MywxMjMgQEAgY29uc3QgVmVydGV4Rm9ybWF0ICZHZXRWZXJ0ZXhGb3JtYXRGcm9tVHlw
ZShWZXJ0ZXhGb3JtYXRUeXBlIHZlcnRleEZvcm1hdFR5cGUpCiAgICAgfQogfQogCitzaXplX3Qg
R2V0VmVydGV4Rm9ybWF0VHlwZVNpemUoVmVydGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBl
KQoreworICAgIHN3aXRjaCAodmVydGV4Rm9ybWF0VHlwZSkKKyAgICB7CisgICAgICAgIGNhc2Ug
VkVSVEVYX0ZPUk1BVF9TQllURTE6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TQllURTFf
Tk9STToKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1VCWVRFMToKKyAgICAgICAgY2FzZSBW
RVJURVhfRk9STUFUX1VCWVRFMV9OT1JNOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0JZ
VEUxX0lOVDoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1VCWVRFMV9JTlQ6CisgICAgICAg
ICAgICByZXR1cm4gMTsKKworICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0JZVEUyOgorICAg
ICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0JZVEUyX05PUk06CisgICAgICAgIGNhc2UgVkVSVEVY
X0ZPUk1BVF9VQllURTI6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VQllURTJfTk9STToK
KyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NCWVRFMl9JTlQ6CisgICAgICAgIGNhc2UgVkVS
VEVYX0ZPUk1BVF9VQllURTJfSU5UOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU1NIT1JU
MToKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NTSE9SVDFfTk9STToKKyAgICAgICAgY2Fz
ZSBWRVJURVhfRk9STUFUX1VTSE9SVDE6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VU0hP
UlQxX05PUk06CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TU0hPUlQxX0lOVDoKKyAgICAg
ICAgY2FzZSBWRVJURVhfRk9STUFUX1VTSE9SVDFfSU5UOgorICAgICAgICBjYXNlIFZFUlRFWF9G
T1JNQVRfSEFMRjE6CisgICAgICAgICAgICByZXR1cm4gMjsKKworICAgICAgICBjYXNlIFZFUlRF
WF9GT1JNQVRfU0JZVEUzOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0JZVEUzX05PUk06
CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VQllURTM6CisgICAgICAgIGNhc2UgVkVSVEVY
X0ZPUk1BVF9VQllURTNfTk9STToKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NCWVRFM19J
TlQ6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VQllURTNfSU5UOgorICAgICAgICAgICAg
cmV0dXJuIDM7CisKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NCWVRFNDoKKyAgICAgICAg
Y2FzZSBWRVJURVhfRk9STUFUX1NCWVRFNF9OT1JNOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JN
QVRfVUJZVEU0OgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfVUJZVEU0X05PUk06CisgICAg
ICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TQllURTRfSU5UOgorICAgICAgICBjYXNlIFZFUlRFWF9G
T1JNQVRfVUJZVEU0X0lOVDoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NTSE9SVDI6Cisg
ICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TU0hPUlQyX05PUk06CisgICAgICAgIGNhc2UgVkVS
VEVYX0ZPUk1BVF9VU0hPUlQyOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfVVNIT1JUMl9O
T1JNOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU1NIT1JUMl9JTlQ6CisgICAgICAgIGNh
c2UgVkVSVEVYX0ZPUk1BVF9VU0hPUlQyX0lOVDoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFU
X1NJTlQxOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0lOVDFfTk9STToKKyAgICAgICAg
Y2FzZSBWRVJURVhfRk9STUFUX1VJTlQxOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfVUlO
VDFfTk9STToKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NJTlQxX0lOVDoKKyAgICAgICAg
Y2FzZSBWRVJURVhfRk9STUFUX1VJTlQxX0lOVDoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFU
X0hBTEYyOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfRklYRUQxOgorICAgICAgICBjYXNl
IFZFUlRFWF9GT1JNQVRfRkxPQVQxOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0lOVDIx
MDoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1VJTlQyMTA6CisgICAgICAgIGNhc2UgVkVS
VEVYX0ZPUk1BVF9TSU5UMjEwX05PUk06CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VSU5U
MjEwX05PUk06CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TSU5UMjEwX0lOVDoKKyAgICAg
ICAgY2FzZSBWRVJURVhfRk9STUFUX1VJTlQyMTBfSU5UOgorICAgICAgICAgICAgcmV0dXJuIDQ7
CisKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NTSE9SVDM6CisgICAgICAgIGNhc2UgVkVS
VEVYX0ZPUk1BVF9TU0hPUlQzX05PUk06CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9VU0hP
UlQzOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfVVNIT1JUM19OT1JNOgorICAgICAgICBj
YXNlIFZFUlRFWF9GT1JNQVRfU1NIT1JUM19JTlQ6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1B
VF9VU0hPUlQzX0lOVDoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX0hBTEYzOgorICAgICAg
ICAgICAgcmV0dXJuIDY7CisKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NTSE9SVDQ6Cisg
ICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TU0hPUlQ0X05PUk06CisgICAgICAgIGNhc2UgVkVS
VEVYX0ZPUk1BVF9VU0hPUlQ0OgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfVVNIT1JUNF9O
T1JNOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU1NIT1JUNF9JTlQ6CisgICAgICAgIGNh
c2UgVkVSVEVYX0ZPUk1BVF9VU0hPUlQ0X0lOVDoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFU
X1NJTlQyOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0lOVDJfTk9STToKKyAgICAgICAg
Y2FzZSBWRVJURVhfRk9STUFUX1VJTlQyOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfVUlO
VDJfTk9STToKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NJTlQyX0lOVDoKKyAgICAgICAg
Y2FzZSBWRVJURVhfRk9STUFUX1VJTlQyX0lOVDoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFU
X0hBTEY0OgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfRklYRUQyOgorICAgICAgICBjYXNl
IFZFUlRFWF9GT1JNQVRfRkxPQVQyOgorICAgICAgICAgICAgcmV0dXJuIDg7CisKKyAgICAgICAg
Y2FzZSBWRVJURVhfRk9STUFUX1NJTlQzOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0lO
VDNfTk9STToKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1VJTlQzOgorICAgICAgICBjYXNl
IFZFUlRFWF9GT1JNQVRfVUlOVDNfTk9STToKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1NJ
TlQzX0lOVDoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX1VJTlQzX0lOVDoKKyAgICAgICAg
Y2FzZSBWRVJURVhfRk9STUFUX0ZJWEVEMzoKKyAgICAgICAgY2FzZSBWRVJURVhfRk9STUFUX0ZM
T0FUMzoKKyAgICAgICAgICAgIHJldHVybiAxMjsKKworICAgICAgICBjYXNlIFZFUlRFWF9GT1JN
QVRfU0lOVDQ6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9TSU5UNF9OT1JNOgorICAgICAg
ICBjYXNlIFZFUlRFWF9GT1JNQVRfVUlOVDQ6CisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9V
SU5UNF9OT1JNOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfU0lOVDRfSU5UOgorICAgICAg
ICBjYXNlIFZFUlRFWF9GT1JNQVRfVUlOVDRfSU5UOgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JN
QVRfRklYRUQ0OgorICAgICAgICBjYXNlIFZFUlRFWF9GT1JNQVRfRkxPQVQ0OgorICAgICAgICAg
ICAgcmV0dXJuIDE2OworCisgICAgICAgIGNhc2UgVkVSVEVYX0ZPUk1BVF9JTlZBTElEOgorICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgIH0KK30KKwogVmVydGV4Rm9ybWF0OjpWZXJ0ZXhGb3JtYXQoR0xlbnVtIHR5
cGVJbiwgR0xib29sZWFuIG5vcm1hbGl6ZWRJbiwgR0x1aW50IGNvbXBvbmVudHNJbiwgYm9vbCBw
dXJlSW50ZWdlckluKQogICAgIDogdHlwZSh0eXBlSW4pLAogICAgICAgbm9ybWFsaXplZChub3Jt
YWxpemVkSW4pLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL2Zvcm1hdHV0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
Zm9ybWF0dXRpbHMuaAppbmRleCA4NDNkNTQxOGQ5Ny4uMDRkNjc2OWMwYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXR1dGlscy5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9mb3JtYXR1dGlscy5oCkBAIC0x
MCwxNSArMTAsMTggQEAKICNkZWZpbmUgTElCQU5HTEVfRk9STUFUVVRJTFNfSF8KIAogI2luY2x1
ZGUgPGNzdGRkZWY+CisjaW5jbHVkZSA8b3N0cmVhbT4KICNpbmNsdWRlIDxzdGRpbnQuaD4KIAog
I2luY2x1ZGUgImFuZ2xlX2dsLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL0Vycm9yLmgiCisjaW5jbHVkZSAibGliQU5HTEUvVmVyc2lvbi5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKIAogbmFtZXNwYWNlIGdsCiB7CitzdHJ1Y3Qg
VmVydGV4QXR0cmlidXRlOwogCiBzdHJ1Y3QgRm9ybWF0VHlwZSBmaW5hbAogewpAQCAtMTExLDcg
KzExNCw3IEBAIHN0cnVjdCBJbnRlcm5hbEZvcm1hdAogICAgIEdMZW51bSBjb21wb25lbnRUeXBl
OwogICAgIEdMZW51bSBjb2xvckVuY29kaW5nOwogCi0gICAgdHlwZWRlZiBib29sICgqU3VwcG9y
dENoZWNrRnVuY3Rpb24pKEdMdWludCwgY29uc3QgRXh0ZW5zaW9ucyAmKTsKKyAgICB0eXBlZGVm
IGJvb2wgKCpTdXBwb3J0Q2hlY2tGdW5jdGlvbikoY29uc3QgVmVyc2lvbiAmLCBjb25zdCBFeHRl
bnNpb25zICYpOwogICAgIFN1cHBvcnRDaGVja0Z1bmN0aW9uIHRleHR1cmVTdXBwb3J0OwogICAg
IFN1cHBvcnRDaGVja0Z1bmN0aW9uIHJlbmRlclN1cHBvcnQ7CiAgICAgU3VwcG9ydENoZWNrRnVu
Y3Rpb24gZmlsdGVyU3VwcG9ydDsKQEAgLTEzNiw2ICsxMzksOCBAQCBzdHJ1Y3QgRm9ybWF0CiAg
ICAgc3RhdGljIEZvcm1hdCBJbnZhbGlkKCk7CiAgICAgc3RhdGljIGJvb2wgU2FtZVNpemVkKGNv
bnN0IEZvcm1hdCAmYSwgY29uc3QgRm9ybWF0ICZiKTsKIAorICAgIGZyaWVuZCBzdGQ6Om9zdHJl
YW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgY29uc3QgRm9ybWF0ICZmbXQpOworCiAg
ICAgLy8gVGhpcyBpcyB0aGUgc2l6ZWQgaW5mby4KICAgICBjb25zdCBJbnRlcm5hbEZvcm1hdCAq
aW5mbzsKICAgICBHTGVudW0gZm9ybWF0OwpAQCAtMjkyLDEyICsyOTcsMTYgQEAgVmVydGV4Rm9y
bWF0VHlwZSBHZXRWZXJ0ZXhGb3JtYXRUeXBlKEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFs
aXplZCwgR0x1aW50IGMKIFZlcnRleEZvcm1hdFR5cGUgR2V0VmVydGV4Rm9ybWF0VHlwZShjb25z
dCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYik7CiBWZXJ0ZXhGb3JtYXRUeXBlIEdldFZlcnRleEZv
cm1hdFR5cGUoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIsIEdMZW51bSBjdXJyZW50VmFs
dWVUeXBlKTsKIGNvbnN0IFZlcnRleEZvcm1hdCAmR2V0VmVydGV4Rm9ybWF0RnJvbVR5cGUoVmVy
dGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBlKTsKK3NpemVfdCBHZXRWZXJ0ZXhGb3JtYXRU
eXBlU2l6ZShWZXJ0ZXhGb3JtYXRUeXBlIHZlcnRleEZvcm1hdFR5cGUpOwogCiAvLyBJbXBsZW1l
bnRlZCBpbiBmb3JtYXRfbWFwX2F1dG9nZW4uY3BwCiBib29sIFZhbGlkRVMzRm9ybWF0KEdMZW51
bSBmb3JtYXQpOwogYm9vbCBWYWxpZEVTM1R5cGUoR0xlbnVtIHR5cGUpOwogYm9vbCBWYWxpZEVT
M0Zvcm1hdENvbWJpbmF0aW9uKEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTGVudW0gaW50
ZXJuYWxGb3JtYXQpOwogCisvLyBJbXBsZW1lbnRlZCBpbiBlczNfY29weV9jb252ZXJzaW9uX3Rh
YmxlX2F1dG9nZW4uY3BwCitib29sIFZhbGlkRVMzQ29weUNvbnZlcnNpb24oR0xlbnVtIHRleHR1
cmVGb3JtYXQsIEdMZW51bSBmcmFtZWJ1ZmZlckZvcm1hdCk7CisKIH0gIC8vIG5hbWVzcGFjZSBn
bAogCiAjZW5kaWYgLy8gTElCQU5HTEVfRk9STUFUVVRJTFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9nZW5fY29weV9jb252ZXJzaW9uX3RhYmxl
LnB5IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL2dlbl9jb3B5X2NvbnZl
cnNpb25fdGFibGUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmYy
Yzk2MDNkNTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL2dlbl9jb3B5X2NvbnZlcnNpb25fdGFibGUucHkKQEAgLTAsMCArMSw5MSBAQAor
IyEvdXNyL2Jpbi9weXRob24KKyMgQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgorIworIyBnZW5fY29weV9jb252ZXJzaW9uX3RhYmxlLnB5OgorIyAg
Q29kZSBnZW5lcmF0aW9uIGZvciBFUzMgdmFsaWQgY29weSBjb252ZXJzaW9ucyB0YWJsZSBmb3Jt
YXQgbWFwLgorCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRlCitpbXBvcnQgc3lzCisKK3N5cy5w
YXRoLmFwcGVuZCgncmVuZGVyZXInKQoraW1wb3J0IGFuZ2xlX2Zvcm1hdAorCit0ZW1wbGF0ZV9j
cHAgPSAiIiIvLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgorLy8gR2VuZXJhdGVkIGJ5
IHtzY3JpcHRfbmFtZX0gdXNpbmcgZGF0YSBmcm9tIHtkYXRhX3NvdXJjZV9uYW1lfS4KKy8vCisv
LyBDb3B5cmlnaHQge2NvcHlyaWdodF95ZWFyfSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KKy8vCisvLyBmb3JtYXRfbWFwOgorLy8gICBEZXRlcm1pbmluZyB0aGUgc2l6
ZWQgaW50ZXJuYWwgZm9ybWF0IGZyb20gYSAoZm9ybWF0LHR5cGUpIHBhaXIuCisvLyAgIEFsc28g
Y2hlY2sgZXMzIGZvcm1hdCBjb21iaW5hdGlvbnMgZm9yIHZhbGlkaXR5LgorCisjaW5jbHVkZSAi
YW5nbGVfZ2wuaCIKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworbmFtZXNwYWNlIGdsCit7
eworCitib29sIFZhbGlkRVMzQ29weUNvbnZlcnNpb24oR0xlbnVtIHRleHR1cmVGb3JtYXQsIEdM
ZW51bSBmcmFtZWJ1ZmZlckZvcm1hdCkKK3t7CisgICAgc3dpdGNoICh0ZXh0dXJlRm9ybWF0KQor
ICAgIHt7Cit7dGV4dHVyZV9mb3JtYXRfY2FzZXN9ICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgfX0KKworICAgIHJldHVybiBmYWxzZTsKK319CisKK319ICAvLyBuYW1l
c3BhY2UgZ2wKKyIiIgorCit0ZW1wbGF0ZV9mb3JtYXRfY2FzZSA9ICIiIiAgICAgICAgY2FzZSB7
dGV4dHVyZV9mb3JtYXR9OgorICAgICAgICAgICAgc3dpdGNoIChmcmFtZWJ1ZmZlckZvcm1hdCkK
KyAgICAgICAgICAgIHt7Cit7ZnJhbWVidWZmZXJfZm9ybWF0X2Nhc2VzfSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9fQorICAgICAgICAgICAgYnJlYWs7CisKKyIi
IgorCit0ZW1wbGF0ZV9zaW1wbGVfY2FzZSA9ICIiIiAgICAgICAgICAgICAgICBjYXNlIHtrZXl9
OgorIiIiCisKK2RlZiBwYXJzZV90ZXh0dXJlX2Zvcm1hdF9jYXNlKHRleHR1cmVfZm9ybWF0LCBm
cmFtZWJ1ZmZlcl9mb3JtYXRzKToKKyAgICBmcmFtZWJ1ZmZlcl9mb3JtYXRfY2FzZXMgPSAiIgor
ICAgIGZvciBmcmFtZWJ1ZmZlcl9mb3JtYXQgaW4gc29ydGVkKGZyYW1lYnVmZmVyX2Zvcm1hdHMp
OgorICAgICAgICBmcmFtZWJ1ZmZlcl9mb3JtYXRfY2FzZXMgKz0gdGVtcGxhdGVfc2ltcGxlX2Nh
c2UuZm9ybWF0KGtleSA9IGZyYW1lYnVmZmVyX2Zvcm1hdCkKKyAgICByZXR1cm4gdGVtcGxhdGVf
Zm9ybWF0X2Nhc2UuZm9ybWF0KAorICAgICAgICB0ZXh0dXJlX2Zvcm1hdCA9IHRleHR1cmVfZm9y
bWF0LCBmcmFtZWJ1ZmZlcl9mb3JtYXRfY2FzZXMgPSBmcmFtZWJ1ZmZlcl9mb3JtYXRfY2FzZXMp
CisKK2RhdGFfc291cmNlX25hbWUgPSAnZXMzX2NvcHlfY29udmVyc2lvbl9mb3JtYXRzLmpzb24n
CisKK2pzb25fZGF0YSA9IGFuZ2xlX2Zvcm1hdC5sb2FkX2pzb24oZGF0YV9zb3VyY2VfbmFtZSkK
KworZm9ybWF0X21hcCA9IHt9CisKK2ZvciBkZXNjcmlwdGlvbiwgZGF0YSBpbiBqc29uX2RhdGEu
aXRlcml0ZW1zKCk6CisgICAgZm9yIHRleHR1cmVfZm9ybWF0LCBmcmFtZWJ1ZmZlcl9mb3JtYXQg
aW4gZGF0YToKKyAgICAgICAgaWYgdGV4dHVyZV9mb3JtYXQgbm90IGluIGZvcm1hdF9tYXA6Cisg
ICAgICAgICAgICBmb3JtYXRfbWFwW3RleHR1cmVfZm9ybWF0XSA9IFtdCisgICAgICAgIGZvcm1h
dF9tYXBbdGV4dHVyZV9mb3JtYXRdICs9IFsgZnJhbWVidWZmZXJfZm9ybWF0IF0KKwordGV4dHVy
ZV9mb3JtYXRfY2FzZXMgPSAiIgorCitmb3IgdGV4dHVyZV9mb3JtYXQsIGZyYW1lYnVmZmVyX2Zv
cm1hdHMgaW4gc29ydGVkKGZvcm1hdF9tYXAuaXRlcml0ZW1zKCkpOgorICAgIHRleHR1cmVfZm9y
bWF0X2Nhc2VzICs9IHBhcnNlX3RleHR1cmVfZm9ybWF0X2Nhc2UodGV4dHVyZV9mb3JtYXQsIGZy
YW1lYnVmZmVyX2Zvcm1hdHMpCisKK3dpdGggb3BlbignZXMzX2NvcHlfY29udmVyc2lvbl90YWJs
ZV9hdXRvZ2VuLmNwcCcsICd3dCcpIGFzIG91dF9maWxlOgorICAgIG91dHB1dF9jcHAgPSB0ZW1w
bGF0ZV9jcHAuZm9ybWF0KAorICAgICAgICBzY3JpcHRfbmFtZSA9IHN5cy5hcmd2WzBdLAorICAg
ICAgICBkYXRhX3NvdXJjZV9uYW1lID0gZGF0YV9zb3VyY2VfbmFtZSwKKyAgICAgICAgY29weXJp
Z2h0X3llYXIgPSBkYXRlLnRvZGF5KCkueWVhciwKKyAgICAgICAgdGV4dHVyZV9mb3JtYXRfY2Fz
ZXMgPSB0ZXh0dXJlX2Zvcm1hdF9jYXNlcykKKyAgICBvdXRfZmlsZS53cml0ZShvdXRwdXRfY3Bw
KQorICAgIG91dF9maWxlLmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9oaXN0b2dyYW1fbWFjcm9zLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvaGlzdG9ncmFtX21hY3Jvcy5oCmluZGV4IGQxYzk1MmE2YmQzLi43
MzNiMTEzMDRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL2hpc3RvZ3JhbV9tYWNyb3MuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvaGlzdG9ncmFtX21hY3Jvcy5oCkBAIC00MSwxOCArNDEsMTkgQEAKICNkZWZpbmUg
QU5HTEVfSElTVE9HUkFNX0NPVU5UU18xMDAwMChuYW1lLCBzYW1wbGUpIFwKICAgICBBTkdMRV9I
SVNUT0dSQU1fQ1VTVE9NX0NPVU5UUyhuYW1lLCBzYW1wbGUsIDEsIDEwMDAwLCA1MCkKIAotI2Rl
ZmluZSBBTkdMRV9ISVNUT0dSQU1fQ1VTVE9NX0NPVU5UUyhuYW1lLCBzYW1wbGUsIG1pbiwgbWF4
LCBidWNrZXRfY291bnQpIFwKLSAgICBBTkdMRVBsYXRmb3JtQ3VycmVudCgpLT5oaXN0b2dyYW1D
dXN0b21Db3VudHMoXAotICAgICAgbmFtZSwgc2FtcGxlLCBtaW4sIG1heCwgYnVja2V0X2NvdW50
KQorI2RlZmluZSBBTkdMRV9ISVNUT0dSQU1fQ1VTVE9NX0NPVU5UUyhuYW1lLCBzYW1wbGUsIG1p
biwgbWF4LCBidWNrZXRfY291bnQpICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQU5HTEVQ
bGF0Zm9ybUN1cnJlbnQoKS0+aGlzdG9ncmFtQ3VzdG9tQ291bnRzKEFOR0xFUGxhdGZvcm1DdXJy
ZW50KCksIG5hbWUsIHNhbXBsZSwgbWluLCBtYXgsIFwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVja2V0X2NvdW50KQogCiAjZGVmaW5lIEFOR0xF
X0hJU1RPR1JBTV9QRVJDRU5UQUdFKG5hbWUsIHVuZGVyX29uZV9odW5kcmVkKSBcCiAgICAgQU5H
TEVfSElTVE9HUkFNX0VOVU1FUkFUSU9OKG5hbWUsIHVuZGVyX29uZV9odW5kcmVkLCAxMDEpCiAK
ICNkZWZpbmUgQU5HTEVfSElTVE9HUkFNX0JPT0xFQU4obmFtZSwgc2FtcGxlKSBcCi0gICAgQU5H
TEVQbGF0Zm9ybUN1cnJlbnQoKS0+aGlzdG9ncmFtQm9vbGVhbihuYW1lLCBzYW1wbGUpCisgICAg
QU5HTEVQbGF0Zm9ybUN1cnJlbnQoKS0+aGlzdG9ncmFtQm9vbGVhbihBTkdMRVBsYXRmb3JtQ3Vy
cmVudCgpLCBuYW1lLCBzYW1wbGUpCiAKLSNkZWZpbmUgQU5HTEVfSElTVE9HUkFNX0VOVU1FUkFU
SU9OKG5hbWUsIHNhbXBsZSwgYm91bmRhcnlfdmFsdWUpIFwKLSAgICBBTkdMRVBsYXRmb3JtQ3Vy
cmVudCgpLT5oaXN0b2dyYW1FbnVtZXJhdGlvbihuYW1lLCBzYW1wbGUsIGJvdW5kYXJ5X3ZhbHVl
KQorI2RlZmluZSBBTkdMRV9ISVNUT0dSQU1fRU5VTUVSQVRJT04obmFtZSwgc2FtcGxlLCBib3Vu
ZGFyeV92YWx1ZSkgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEFOR0xFUGxhdGZvcm1DdXJy
ZW50KCktPmhpc3RvZ3JhbUVudW1lcmF0aW9uKEFOR0xFUGxhdGZvcm1DdXJyZW50KCksIG5hbWUs
IHNhbXBsZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvdW5kYXJ5X3ZhbHVlKQogCiAjZGVmaW5lIEFOR0xFX0hJU1RPR1JBTV9NRU1PUllfS0Io
bmFtZSwgc2FtcGxlKSBBTkdMRV9ISVNUT0dSQU1fQ1VTVE9NX0NPVU5UUyggXAogICAgIG5hbWUs
IHNhbXBsZSwgMTAwMCwgNTAwMDAwLCA1MCkKQEAgLTYxLDcgKzYyLDcgQEAKICAgICBuYW1lLCBz
YW1wbGUsIDEsIDEwMDAsIDUwKQogCiAjZGVmaW5lIEFOR0xFX0hJU1RPR1JBTV9TUEFSU0VfU0xP
V0xZKG5hbWUsIHNhbXBsZSkgXAotICAgIEFOR0xFUGxhdGZvcm1DdXJyZW50KCktPmhpc3RvZ3Jh
bVNwYXJzZShuYW1lLCBzYW1wbGUpCisgICAgQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKS0+aGlzdG9n
cmFtU3BhcnNlKEFOR0xFUGxhdGZvcm1DdXJyZW50KCksIG5hbWUsIHNhbXBsZSkKIAogLy8gU2Nv
cGVkIGNsYXNzIHdoaWNoIGxvZ3MgaXRzIHRpbWUgb24gdGhpcyBlYXJ0aCBhcyBhIFVNQSBzdGF0
aXN0aWMuIFRoaXMgaXMKIC8vIHJlY29tbWVuZGVkIGZvciB3aGVuIHlvdSB3YW50IGEgaGlzdG9n
cmFtIHdoaWNoIG1lYXN1cmVzIHRoZSB0aW1lIGl0IHRha2VzCkBAIC03OSwyOSArODAsMzMgQEAK
ICNkZWZpbmUgU0NPUEVEX0FOR0xFX0hJU1RPR1JBTV9USU1FUl9FWFBBTkRFUihuYW1lLCBpc19s
b25nLCBrZXkpIFwKICAgICBTQ09QRURfQU5HTEVfSElTVE9HUkFNX1RJTUVSX1VOSVFVRShuYW1l
LCBpc19sb25nLCBrZXkpCiAKLSNkZWZpbmUgU0NPUEVEX0FOR0xFX0hJU1RPR1JBTV9USU1FUl9V
TklRVUUobmFtZSwgaXNfbG9uZywga2V5KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICBjbGFzcyBTY29wZWRIaXN0b2dyYW1UaW1lciMja2V5ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHB1YmxpYzogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKLSAgICAgICAgU2NvcGVkSGlzdG9ncmFtVGltZXIjI2tleSgpIDogY29uc3RydWN0ZWRfKEFO
R0xFUGxhdGZvcm1DdXJyZW50KCktPmN1cnJlbnRUaW1lKCkpIHt9IFwKLSAgICAgICAgflNjb3Bl
ZEhpc3RvZ3JhbVRpbWVyIyNrZXkoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgICAgIGlmIChjb25zdHJ1Y3RlZF8gPT0gMCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAg
ICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGRvdWJsZSBlbGFwc2VkID0g
QU5HTEVQbGF0Zm9ybUN1cnJlbnQoKS0+Y3VycmVudFRpbWUoKSAtIGNvbnN0cnVjdGVkXzsgICAg
ICAgICAgIFwKLSAgICAgICAgICAgIGludCBlbGFwc2VkTVMgPSBzdGF0aWNfY2FzdDxpbnQ+KGVs
YXBzZWQgKiAxMDAwLjApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAg
ICAgIGlmIChpc19sb25nKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBBTkdMRV9ISVNUT0dSQU1fTE9OR19USU1FU18x
MDAobmFtZSwgZWxhcHNlZE1TKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGVsc2UgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgICAgICAgICBBTkdMRV9ISVNUT0dSQU1fVElNRVMobmFtZSwgZWxhcHNlZE1TKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIHByaXZhdGU6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZG91YmxlIGNvbnN0cnVjdGVkXzsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyNkZWZpbmUgU0NPUEVEX0FOR0xFX0hJU1RPR1JBTV9USU1FUl9VTklRVUUobmFtZSwgaXNf
bG9uZywga2V5KSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgY2xhc3MgU2NvcGVkSGlz
dG9ncmFtVGltZXIjI2tleSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIHB1
YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFNjb3BlZEhpc3RvZ3JhbVRpbWVyIyNr
ZXkoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgOiBjb25zdHJ1Y3RlZF8oQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKS0+Y3Vy
cmVudFRpbWUoQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKSkpIFwKKyAgICAgICAgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB+
U2NvcGVkSGlzdG9ncmFtVGltZXIjI2tleSgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICBpZiAoY29uc3RydWN0ZWRfID09IDApICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHJldHVy
bjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgIGF1dG8gKnBsYXRmb3JtID0gQU5HTEVQbGF0Zm9ybUN1
cnJlbnQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICBkb3VibGUgZWxhcHNlZCA9IHBsYXRmb3JtLT5jdXJyZW50VGltZShwbGF0Zm9ybSkgLSBjb25z
dHJ1Y3RlZF87ICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50IGVsYXBzZWRNUyAgPSBzdGF0
aWNfY2FzdDxpbnQ+KGVsYXBzZWQgKiAxMDAwLjApOyAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgIGlmIChpc19sb25nKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgICAgIEFOR0xFX0hJU1RPR1JBTV9MT05HX1RJTUVTXzEw
MChuYW1lLCBlbGFwc2VkTVMpOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBBTkdMRV9I
SVNUT0dSQU1fVElNRVMobmFtZSwgZWxhcHNlZE1TKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICBwcml2YXRlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBkb3VibGUgY29uc3RydWN0
ZWRfOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICB9IHNjb3BlZF9oaXN0b2dyYW1fdGltZXJfIyNrZXkKIAogI2VuZGlmICAv
LyBCQVNFX01FVFJJQ1NfSElTVE9HUkFNX01BQ1JPU19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3F1ZXJ5Y29udmVyc2lvbnMuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3F1ZXJ5Y29udmVyc2lvbnMuY3BwCmluZGV4
IDYxMWZiYzRiYTgwLi41YmViODA5NGI0MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3F1ZXJ5Y29udmVyc2lvbnMuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeWNvbnZlcnNpb25zLmNwcApAQCAtOTMsNyAr
OTMsNyBAQCB2b2lkIENhc3RTdGF0ZVZhbHVlcyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbmF0
aXZlVHlwZSwgR0xlbnVtIHBuYW1lLAogICAgIGlmIChuYXRpdmVUeXBlID09IEdMX0lOVCkKICAg
ICB7CiAgICAgICAgIHN0ZDo6dmVjdG9yPEdMaW50PiBpbnRQYXJhbXMobnVtUGFyYW1zLCAwKTsK
LSAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsIGludFBhcmFtcy5kYXRhKCkpOwor
ICAgICAgICBjb250ZXh0LT5nZXRJbnRlZ2VydkltcGwocG5hbWUsIGludFBhcmFtcy5kYXRhKCkp
OwogCiAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnVtUGFyYW1zOyArK2kp
CiAgICAgICAgIHsKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIENhc3RTdGF0ZVZhbHVlcyhDb250
ZXh0ICpjb250ZXh0LCBHTGVudW0gbmF0aXZlVHlwZSwgR0xlbnVtIHBuYW1lLAogICAgIGVsc2Ug
aWYgKG5hdGl2ZVR5cGUgPT0gR0xfQk9PTCkKICAgICB7CiAgICAgICAgIHN0ZDo6dmVjdG9yPEdM
Ym9vbGVhbj4gYm9vbFBhcmFtcyhudW1QYXJhbXMsIEdMX0ZBTFNFKTsKLSAgICAgICAgY29udGV4
dC0+Z2V0Qm9vbGVhbnYocG5hbWUsIGJvb2xQYXJhbXMuZGF0YSgpKTsKKyAgICAgICAgY29udGV4
dC0+Z2V0Qm9vbGVhbnZJbXBsKHBuYW1lLCBib29sUGFyYW1zLmRhdGEoKSk7CiAKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBudW1QYXJhbXM7ICsraSkKICAgICAgICAgewpA
QCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgQ2FzdFN0YXRlVmFsdWVzKENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSBuYXRpdmVUeXBlLCBHTGVudW0gcG5hbWUsCiAgICAgZWxzZSBpZiAobmF0aXZlVHlw
ZSA9PSBHTF9GTE9BVCkKICAgICB7CiAgICAgICAgIHN0ZDo6dmVjdG9yPEdMZmxvYXQ+IGZsb2F0
UGFyYW1zKG51bVBhcmFtcywgMC4wZik7Ci0gICAgICAgIGNvbnRleHQtPmdldEZsb2F0dihwbmFt
ZSwgZmxvYXRQYXJhbXMuZGF0YSgpKTsKKyAgICAgICAgY29udGV4dC0+Z2V0RmxvYXR2SW1wbChw
bmFtZSwgZmxvYXRQYXJhbXMuZGF0YSgpKTsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBp
ID0gMDsgaSA8IG51bVBhcmFtczsgKytpKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnl1dGlscy5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnl1dGlscy5jcHAKaW5kZXggMTMyNTBkNThj
Y2QuLjVkMTRmNTdkMGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcXVlcnl1dGlscy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3F1ZXJ5dXRpbHMuY3BwCkBAIC0xMSw2ICsxMSw5IEBACiAjaW5jbHVkZSAiY29t
bW9uL3V0aWxpdGllcy5oIgogCiAjaW5jbHVkZSAibGliQU5HTEUvQnVmZmVyLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvQ29uZmlnLmgiCisjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgorI2lu
Y2x1ZGUgImxpYkFOR0xFL0ZlbmNlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXIu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9Qcm9ncmFtLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUmVu
ZGVyYnVmZmVyLmgiCkBAIC0yNiw2ICsyOSw4NiBAQCBuYW1lc3BhY2UgZ2wKIG5hbWVzcGFjZQog
ewogdGVtcGxhdGUgPHR5cGVuYW1lIFBhcmFtVHlwZT4KK3ZvaWQgUXVlcnlUZXhMZXZlbFBhcmFt
ZXRlckJhc2UoY29uc3QgVGV4dHVyZSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1UeXBlICpwYXJhbXMpCit7
CisgICAgQVNTRVJUKHRleHR1cmUgIT0gbnVsbHB0cik7CisgICAgY29uc3QgSW50ZXJuYWxGb3Jt
YXQgKmluZm8gPSB0ZXh0dXJlLT5nZXRUZXh0dXJlU3RhdGUoKS5nZXRJbWFnZURlc2ModGFyZ2V0
LCBsZXZlbCkuZm9ybWF0LmluZm87CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX1JFRF9UWVBFOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZl
cnRGcm9tR0xlbnVtPFBhcmFtVHlwZT4oaW5mby0+cmVkQml0cyA/IGluZm8tPmNvbXBvbmVudFR5
cGUgOiBHTF9OT05FKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfR1JFRU5fVFlQRToKKyAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJvbUdMZW51bTxQ
YXJhbVR5cGU+KGluZm8tPmdyZWVuQml0cyA/IGluZm8tPmNvbXBvbmVudFR5cGUgOiBHTF9OT05F
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQkxVRV9UWVBF
OgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xlbnVtPFBhcmFtVHlwZT4oaW5m
by0+Ymx1ZUJpdHMgPyBpbmZvLT5jb21wb25lbnRUeXBlIDogR0xfTk9ORSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0FMUEhBX1RZUEU6CisgICAgICAgICAg
ICAqcGFyYW1zID0gQ29udmVydEZyb21HTGVudW08UGFyYW1UeXBlPihpbmZvLT5hbHBoYUJpdHMg
PyBpbmZvLT5jb21wb25lbnRUeXBlIDogR0xfTk9ORSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX0RFUFRIX1RZUEU6CisgICAgICAgICAgICAqcGFyYW1zID0g
Q29udmVydEZyb21HTGVudW08UGFyYW1UeXBlPihpbmZvLT5kZXB0aEJpdHMgPyBpbmZvLT5jb21w
b25lbnRUeXBlIDogR0xfTk9ORSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBH
TF9URVhUVVJFX1JFRF9TSVpFOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0x1
aW50PFBhcmFtVHlwZT4oaW5mby0+cmVkQml0cyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX0dSRUVOX1NJWkU6CisgICAgICAgICAgICAqcGFyYW1zID0gQ29u
dmVydEZyb21HTHVpbnQ8UGFyYW1UeXBlPihpbmZvLT5ncmVlbkJpdHMpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9CTFVFX1NJWkU6CisgICAgICAgICAgICAq
cGFyYW1zID0gQ29udmVydEZyb21HTHVpbnQ8UGFyYW1UeXBlPihpbmZvLT5ibHVlQml0cyk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0FMUEhBX1NJWkU6Cisg
ICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTHVpbnQ8UGFyYW1UeXBlPihpbmZvLT5h
bHBoYUJpdHMpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9E
RVBUSF9TSVpFOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0x1aW50PFBhcmFt
VHlwZT4oaW5mby0+ZGVwdGhCaXRzKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfU1RFTkNJTF9TSVpFOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRG
cm9tR0x1aW50PFBhcmFtVHlwZT4oaW5mby0+c3RlbmNpbEJpdHMpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TSEFSRURfU0laRToKKyAgICAgICAgICAgICpw
YXJhbXMgPSBDb252ZXJ0RnJvbUdMdWludDxQYXJhbVR5cGU+KGluZm8tPnNoYXJlZEJpdHMpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JN
QVQ6CisgICAgICAgICAgICAqcGFyYW1zID0KKyAgICAgICAgICAgICAgICBDb252ZXJ0RnJvbUdM
ZW51bTxQYXJhbVR5cGU+KGluZm8tPmludGVybmFsRm9ybWF0ID8gaW5mby0+aW50ZXJuYWxGb3Jt
YXQgOiBHTF9SR0JBKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfV0lEVEg6CisgICAgICAgICAgICAqcGFyYW1zID0KKyAgICAgICAgICAgICAgICBDb252ZXJ0
RnJvbUdMaW50PFBhcmFtVHlwZT4oc3RhdGljX2Nhc3Q8R0xpbnQ+KHRleHR1cmUtPmdldFdpZHRo
KHRhcmdldCwgbGV2ZWwpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9U
RVhUVVJFX0hFSUdIVDoKKyAgICAgICAgICAgICpwYXJhbXMgPQorICAgICAgICAgICAgICAgIENv
bnZlcnRGcm9tR0xpbnQ8UGFyYW1UeXBlPihzdGF0aWNfY2FzdDxHTGludD4odGV4dHVyZS0+Z2V0
SGVpZ2h0KHRhcmdldCwgbGV2ZWwpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX0RFUFRIOgorICAgICAgICAgICAgKnBhcmFtcyA9CisgICAgICAgICAgICAg
ICAgQ29udmVydEZyb21HTGludDxQYXJhbVR5cGU+KHN0YXRpY19jYXN0PEdMaW50Pih0ZXh0dXJl
LT5nZXREZXB0aCh0YXJnZXQsIGxldmVsKSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV9TQU1QTEVTOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRG
cm9tR0xpbnQ8UGFyYW1UeXBlPih0ZXh0dXJlLT5nZXRTYW1wbGVzKHRhcmdldCwgbGV2ZWwpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfRklYRURfU0FNUExF
X0xPQ0FUSU9OUzoKKyAgICAgICAgICAgICpwYXJhbXMgPQorICAgICAgICAgICAgICAgIENvbnZl
cnRGcm9tR0xib29sZWFuPFBhcmFtVHlwZT4odGV4dHVyZS0+Z2V0Rml4ZWRTYW1wbGVMb2NhdGlv
bnModGFyZ2V0LCBsZXZlbCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9DT01QUkVTU0VEOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xi
b29sZWFuPFBhcmFtVHlwZT4oaW5mby0+Y29tcHJlc3NlZCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBQYXJhbVR5cGU+CiB2b2lk
IFF1ZXJ5VGV4UGFyYW1ldGVyQmFzZShjb25zdCBUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5h
bWUsIFBhcmFtVHlwZSAqcGFyYW1zKQogewogICAgIEFTU0VSVCh0ZXh0dXJlICE9IG51bGxwdHIp
OwpAQCAtODksNiArMTcyLDkgQEAgdm9pZCBRdWVyeVRleFBhcmFtZXRlckJhc2UoY29uc3QgVGV4
dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBQYXJhbVR5cGUgKnBhcmEKICAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQzoKICAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0
RnJvbUdMZW51bTxQYXJhbVR5cGU+KHRleHR1cmUtPmdldENvbXBhcmVGdW5jKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TUkdCX0RFQ09ERV9FWFQ6Cisg
ICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGVudW08UGFyYW1UeXBlPih0ZXh0dXJl
LT5nZXRTUkdCRGVjb2RlKCkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTMs
NiArMjM5LDEyIEBAIHZvaWQgU2V0VGV4UGFyYW1ldGVyQmFzZShUZXh0dXJlICp0ZXh0dXJlLCBH
TGVudW0gcG5hbWUsIGNvbnN0IFBhcmFtVHlwZSAqcGFyYW1zCiAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9NQVhfTE9EOgogICAgICAgICAgICAgdGV4dHVyZS0+c2V0TWF4TG9kKENvbnZlcnRUb0dM
ZmxvYXQocGFyYW1zWzBdKSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9E
RVBUSF9TVEVOQ0lMX1RFWFRVUkVfTU9ERToKKyAgICAgICAgICAgIHRleHR1cmUtPnNldERlcHRo
U3RlbmNpbFRleHR1cmVNb2RlKENvbnZlcnRUb0dMZW51bShwYXJhbXNbMF0pKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhUOgorICAg
ICAgICAgICAgdGV4dHVyZS0+c2V0U1JHQkRlY29kZShDb252ZXJ0VG9HTGVudW0ocGFyYW1zWzBd
KSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVO
UkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE5NCw2ICsyODYsOSBAQCB2b2lk
IFF1ZXJ5U2FtcGxlclBhcmFtZXRlckJhc2UoY29uc3QgU2FtcGxlciAqc2FtcGxlciwgR0xlbnVt
IHBuYW1lLCBQYXJhbVR5cGUgKgogICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5D
OgogICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xlbnVtPFBhcmFtVHlwZT4oc2Ft
cGxlci0+Z2V0Q29tcGFyZUZ1bmMoKSk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX1NSR0JfREVDT0RFX0VYVDoKKyAgICAgICAgICAgICpwYXJhbXMgPSBDb252
ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KHNhbXBsZXItPmdldFNSR0JEZWNvZGUoKSk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTIzNSw2ICszMzAsOSBAQCB2b2lkIFNldFNhbXBs
ZXJQYXJhbWV0ZXJCYXNlKFNhbXBsZXIgKnNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3QgUGFy
YW1UeXBlICpwYQogICAgICAgICBjYXNlIEdMX1RFWFRVUkVfTUFYX0xPRDoKICAgICAgICAgICAg
IHNhbXBsZXItPnNldE1heExvZChDb252ZXJ0VG9HTGZsb2F0KHBhcmFtc1swXSkpOwogICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TUkdCX0RFQ09ERV9FWFQ6Cisg
ICAgICAgICAgICBzYW1wbGVyLT5zZXRTUkdCRGVjb2RlKENvbnZlcnRUb0dMZW51bShwYXJhbXNb
MF0pKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjUzLDggKzM1MSwxMCBAQCBH
TGludCBDb252ZXJ0Q3VycmVudFZhbHVlKEdMZmxvYXQgY3VycmVudFZhbHVlKQogICAgIHJldHVy
biBpcm91bmQ8R0xpbnQ+KGN1cnJlbnRWYWx1ZSk7CiB9CiAKKy8vIFdhcm5pbmc6IHlvdSBzaG91
bGQgZW5zdXJlIGJpbmRpbmcgcmVhbGx5IG1hdGNoZXMgYXR0cmliLmJpbmRpbmdJbmRleCBiZWZv
cmUgdXNpbmcgdGhpcyBmdW5jdGlvbi4KIHRlbXBsYXRlIDx0eXBlbmFtZSBQYXJhbVR5cGUsIHR5
cGVuYW1lIEN1cnJlbnREYXRhVHlwZSwgc2l6ZV90IEN1cnJlbnRWYWx1ZUNvdW50Pgogdm9pZCBR
dWVyeVZlcnRleEF0dHJpYkJhc2UoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ3VycmVudERhdGFUeXBlICgmY3VycmVudFZh
bHVlRGF0YSlbQ3VycmVudFZhbHVlQ291bnRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW1UeXBlICpwYXJh
bXMpCkBAIC0yNzQsNyArMzc0LDcgQEAgdm9pZCBRdWVyeVZlcnRleEF0dHJpYkJhc2UoY29uc3Qg
VmVydGV4QXR0cmlidXRlICZhdHRyaWIsCiAgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZy
b21HTHVpbnQ8UGFyYW1UeXBlPihhdHRyaWIuc2l6ZSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERToKLSAgICAgICAgICAgICpw
YXJhbXMgPSBDb252ZXJ0RnJvbUdMdWludDxQYXJhbVR5cGU+KGF0dHJpYi5zdHJpZGUpOworICAg
ICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0x1aW50PFBhcmFtVHlwZT4oYXR0cmliLnZl
cnRleEF0dHJpYkFycmF5U3RyaWRlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRToKICAgICAgICAgICAgICpwYXJhbXMgPSBDb252
ZXJ0RnJvbUdMZW51bTxQYXJhbVR5cGU+KGF0dHJpYi50eXBlKTsKQEAgLTI4MywxNCArMzgzLDIz
IEBAIHZvaWQgUXVlcnlWZXJ0ZXhBdHRyaWJCYXNlKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0
cmliLAogICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9tR0xib29sZWFuPFBhcmFtVHlw
ZT4oYXR0cmliLm5vcm1hbGl6ZWQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
R0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9CVUZGRVJfQklORElORzoKLSAgICAgICAgICAgICpwYXJh
bXMgPSBDb252ZXJ0RnJvbUdMdWludDxQYXJhbVR5cGU+KGF0dHJpYi5idWZmZXIuaWQoKSk7Cisg
ICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTHVpbnQ8UGFyYW1UeXBlPihiaW5kaW5n
LmJ1ZmZlci5pZCgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdMX1ZFUlRF
WF9BVFRSSUJfQVJSQVlfRElWSVNPUjoKLSAgICAgICAgICAgICpwYXJhbXMgPSBDb252ZXJ0RnJv
bUdMdWludDxQYXJhbVR5cGU+KGF0dHJpYi5kaXZpc29yKTsKKyAgICAgICAgICAgICpwYXJhbXMg
PSBDb252ZXJ0RnJvbUdMdWludDxQYXJhbVR5cGU+KGJpbmRpbmcuZGl2aXNvcik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX0FSUkFZX0lOVEVHRVI6
CiAgICAgICAgICAgICAqcGFyYW1zID0gQ29udmVydEZyb21HTGJvb2xlYW48UGFyYW1UeXBlPihh
dHRyaWIucHVyZUludGVnZXIpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xf
VkVSVEVYX0FUVFJJQl9CSU5ESU5HOgorICAgICAgICAgICAgKnBhcmFtcyA9IENvbnZlcnRGcm9t
R0x1aW50PFBhcmFtVHlwZT4oYXR0cmliLmJpbmRpbmdJbmRleCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRUUklCX1JFTEFUSVZFX09GRlNFVDoKKyAgICAg
ICAgICAgIC8vIGF0dHJpYi5yZWxhdGl2ZU9mZnNldCBzaG91bGQgbm90IGJlIG5lZ2F0aXZlIG9y
IGdyZWF0ZXIgdGhhbiBtYXggR0xpbnQKKyAgICAgICAgICAgIEFTU0VSVChhdHRyaWIucmVsYXRp
dmVPZmZzZXQgPj0gMCAmJgorICAgICAgICAgICAgICAgICAgIGF0dHJpYi5yZWxhdGl2ZU9mZnNl
dCA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMaW50Pjo6bWF4KCkpOworICAgICAgICAgICAgKnBh
cmFtcyA9IENvbnZlcnRGcm9tR0xpbnQ8UGFyYW1UeXBlPihzdGF0aWNfY2FzdDxHTGludD4oYXR0
cmliLnJlbGF0aXZlT2Zmc2V0KSk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTUw
NiwxMyArNjE1LDE5IEBAIHZvaWQgUXVlcnlQcm9ncmFtaXYoY29uc3QgUHJvZ3JhbSAqcHJvZ3Jh
bSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQogICAgICAgICBjYXNlIEdMX1BST0dSQU1f
QklOQVJZX1JFVFJJRVZBQkxFX0hJTlQ6CiAgICAgICAgICAgICAqcGFyYW1zID0gcHJvZ3JhbS0+
Z2V0QmluYXJ5UmV0cmlldmFibGVIaW50KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHTF9QUk9HUkFNX1NFUEFSQUJMRToKKyAgICAgICAgICAgICpwYXJhbXMgPSBwcm9ncmFt
LT5pc1NlcGFyYWJsZSgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogfQog
Ci12b2lkIFF1ZXJ5UmVuZGVyYnVmZmVyaXYoY29uc3QgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZm
ZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKK3ZvaWQgUXVlcnlSZW5kZXJidWZmZXJp
dihjb25zdCBDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQogewog
ICAgIEFTU0VSVChyZW5kZXJidWZmZXIgIT0gbnVsbHB0cik7CiAKQEAgLTUyNSw3ICs2NDAsMTYg
QEAgdm9pZCBRdWVyeVJlbmRlcmJ1ZmZlcml2KGNvbnN0IFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVm
ZmVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICoKICAgICAgICAgICAgICpwYXJhbXMgPSByZW5kZXJi
dWZmZXItPmdldEhlaWdodCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xf
UkVOREVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVDoKLSAgICAgICAgICAgICpwYXJhbXMgPSByZW5k
ZXJidWZmZXItPmdldEZvcm1hdCgpLmluZm8tPmludGVybmFsRm9ybWF0OworICAgICAgICAgICAg
Ly8gU3BlY2lhbCBjYXNlIHRoZSBXZWJHTCAxIERFUFRIX1NURU5DSUwgZm9ybWF0LgorICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmlzV2ViR0wxKCkgJiYKKyAgICAgICAgICAgICAgICByZW5kZXJi
dWZmZXItPmdldEZvcm1hdCgpLmluZm8tPmludGVybmFsRm9ybWF0ID09IEdMX0RFUFRIMjRfU1RF
TkNJTDgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IEdMX0RFUFRI
X1NURU5DSUw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgKnBhcmFtcyA9IHJlbmRlcmJ1ZmZlci0+Z2V0Rm9ybWF0KCkuaW5m
by0+aW50ZXJuYWxGb3JtYXQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVJfUkVEX1NJWkU6CiAgICAgICAgICAgICAqcGFyYW1z
ID0gcmVuZGVyYnVmZmVyLT5nZXRSZWRTaXplKCk7CkBAIC01ODQsNiArNzA4LDI0IEBAIHZvaWQg
UXVlcnlTaGFkZXJpdihjb25zdCBTaGFkZXIgKnNoYWRlciwgR0xlbnVtIHBuYW1lLCBHTGludCAq
cGFyYW1zKQogICAgIH0KIH0KIAordm9pZCBRdWVyeVRleExldmVsUGFyYW1ldGVyZnYoY29uc3Qg
VGV4dHVyZSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZmxvYXQgKnBhcmFtcykKK3sKKyAgICBRdWVyeVRleExldmVsUGFyYW1l
dGVyQmFzZSh0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBwbmFtZSwgcGFyYW1zKTsKK30KKwordm9p
ZCBRdWVyeVRleExldmVsUGFyYW1ldGVyaXYoY29uc3QgVGV4dHVyZSAqdGV4dHVyZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpwYXJh
bXMpCit7CisgICAgUXVlcnlUZXhMZXZlbFBhcmFtZXRlckJhc2UodGV4dHVyZSwgdGFyZ2V0LCBs
ZXZlbCwgcG5hbWUsIHBhcmFtcyk7Cit9CisKIHZvaWQgUXVlcnlUZXhQYXJhbWV0ZXJmdihjb25z
dCBUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykKIHsKICAg
ICBRdWVyeVRleFBhcmFtZXRlckJhc2UodGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7CkBAIC02MDUs
MTkgKzc0NywyMSBAQCB2b2lkIFF1ZXJ5U2FtcGxlclBhcmFtZXRlcml2KGNvbnN0IFNhbXBsZXIg
KnNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcwogfQogCiB2b2lkIFF1ZXJ5VmVy
dGV4QXR0cmliZnYoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgVmVydGV4QmluZGluZyAmYmluZGluZywKICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFs
dWVEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0ICpwYXJhbXMpCiB7Ci0gICAgUXVlcnlWZXJ0ZXhBdHRy
aWJCYXNlKGF0dHJpYiwgY3VycmVudFZhbHVlRGF0YS5GbG9hdFZhbHVlcywgcG5hbWUsIHBhcmFt
cyk7CisgICAgUXVlcnlWZXJ0ZXhBdHRyaWJCYXNlKGF0dHJpYiwgYmluZGluZywgY3VycmVudFZh
bHVlRGF0YS5GbG9hdFZhbHVlcywgcG5hbWUsIHBhcmFtcyk7CiB9CiAKIHZvaWQgUXVlcnlWZXJ0
ZXhBdHRyaWJpdihjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nLAogICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1
ZURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50ICpwYXJhbXMpCiB7Ci0gICAgUXVlcnlWZXJ0ZXhBdHRyaWJC
YXNlKGF0dHJpYiwgY3VycmVudFZhbHVlRGF0YS5GbG9hdFZhbHVlcywgcG5hbWUsIHBhcmFtcyk7
CisgICAgUXVlcnlWZXJ0ZXhBdHRyaWJCYXNlKGF0dHJpYiwgYmluZGluZywgY3VycmVudFZhbHVl
RGF0YS5GbG9hdFZhbHVlcywgcG5hbWUsIHBhcmFtcyk7CiB9CiAKIHZvaWQgUXVlcnlWZXJ0ZXhB
dHRyaWJQb2ludGVydihjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgR0xlbnVtIHBuYW1l
LCBHTHZvaWQgKipwb2ludGVyKQpAQCAtNjM1LDE5ICs3NzksMjEgQEAgdm9pZCBRdWVyeVZlcnRl
eEF0dHJpYlBvaW50ZXJ2KGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBHTGVudW0gcG5h
bWUsIEdMdm8KIH0KIAogdm9pZCBRdWVyeVZlcnRleEF0dHJpYklpdihjb25zdCBWZXJ0ZXhBdHRy
aWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVydGV4Qmlu
ZGluZyAmYmluZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVydGV4QXR0
cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlRGF0YSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAq
cGFyYW1zKQogewotICAgIFF1ZXJ5VmVydGV4QXR0cmliQmFzZShhdHRyaWIsIGN1cnJlbnRWYWx1
ZURhdGEuSW50VmFsdWVzLCBwbmFtZSwgcGFyYW1zKTsKKyAgICBRdWVyeVZlcnRleEF0dHJpYkJh
c2UoYXR0cmliLCBiaW5kaW5nLCBjdXJyZW50VmFsdWVEYXRhLkludFZhbHVlcywgcG5hbWUsIHBh
cmFtcyk7CiB9CiAKIHZvaWQgUXVlcnlWZXJ0ZXhBdHRyaWJJdWl2KGNvbnN0IFZlcnRleEF0dHJp
YnV0ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVydGV4Qmlu
ZGluZyAmYmluZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlcnRleEF0
dHJpYkN1cnJlbnRWYWx1ZURhdGEgJmN1cnJlbnRWYWx1ZURhdGEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgKnBhcmFtcykKIHsKLSAgICBRdWVyeVZlcnRleEF0dHJpYkJhc2UoYXR0cmliLCBjdXJyZW50
VmFsdWVEYXRhLlVuc2lnbmVkSW50VmFsdWVzLCBwbmFtZSwgcGFyYW1zKTsKKyAgICBRdWVyeVZl
cnRleEF0dHJpYkJhc2UoYXR0cmliLCBiaW5kaW5nLCBjdXJyZW50VmFsdWVEYXRhLlVuc2lnbmVk
SW50VmFsdWVzLCBwbmFtZSwgcGFyYW1zKTsKIH0KIAogdm9pZCBRdWVyeUFjdGl2ZVVuaWZvcm1C
bG9ja2l2KGNvbnN0IFByb2dyYW0gKnByb2dyYW0sCkBAIC03MTgsNiArODY0LDc2IEBAIHZvaWQg
UXVlcnlJbnRlcm5hbEZvcm1hdGl2KGNvbnN0IFRleHR1cmVDYXBzICZmb3JtYXQsIEdMZW51bSBw
bmFtZSwgR0xzaXplaSBidWZTCiAgICAgfQogfQogCit2b2lkIFF1ZXJ5RnJhbWVidWZmZXJQYXJh
bWV0ZXJpdihjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIEdMZW51bSBwbmFtZSwgR0xp
bnQgKnBhcmFtcykKK3sKKyAgICBBU1NFUlQoZnJhbWVidWZmZXIpOworCisgICAgc3dpdGNoIChw
bmFtZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfREVGQVVMVF9XSURUSDoK
KyAgICAgICAgICAgICpwYXJhbXMgPSBmcmFtZWJ1ZmZlci0+Z2V0RGVmYXVsdFdpZHRoKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9ERUZBVUxUX0hF
SUdIVDoKKyAgICAgICAgICAgICpwYXJhbXMgPSBmcmFtZWJ1ZmZlci0+Z2V0RGVmYXVsdEhlaWdo
dCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfREVG
QVVMVF9TQU1QTEVTOgorICAgICAgICAgICAgKnBhcmFtcyA9IGZyYW1lYnVmZmVyLT5nZXREZWZh
dWx0U2FtcGxlcygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfRlJBTUVC
VUZGRVJfREVGQVVMVF9GSVhFRF9TQU1QTEVfTE9DQVRJT05TOgorICAgICAgICAgICAgKnBhcmFt
cyA9IGZyYW1lYnVmZmVyLT5nZXREZWZhdWx0Rml4ZWRTYW1wbGVMb2NhdGlvbnMoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKworRXJyb3IgUXVlcnlTeW5jaXYoY29u
c3QgRmVuY2VTeW5jICpzeW5jLAorICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgR0xzaXpl
aSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgR0xpbnQgKnZhbHVlcykKK3sKKyAgICBBU1NF
UlQoc3luYyk7CisKKyAgICAvLyBBbGwgcXVlcmllcyByZXR1cm4gb25lIHZhbHVlLCBleGl0IGVh
cmx5IGlmIHRoZSBidWZmZXIgY2FuJ3QgZml0IGFueXRoaW5nLgorICAgIGlmIChidWZTaXplIDwg
MSkKKyAgICB7CisgICAgICAgIGlmIChsZW5ndGggIT0gbnVsbHB0cikKKyAgICAgICAgeworICAg
ICAgICAgICAgKmxlbmd0aCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE5vRXJyb3Io
KTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9P
QkpFQ1RfVFlQRToKKyAgICAgICAgICAgICp2YWx1ZXMgPSBDb252ZXJ0VG9HTGludChHTF9TWU5D
X0ZFTkNFKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1NZTkNfQ09ORElU
SU9OOgorICAgICAgICAgICAgKnZhbHVlcyA9IENvbnZlcnRUb0dMaW50KHN5bmMtPmdldENvbmRp
dGlvbigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1NZTkNfRkxBR1M6
CisgICAgICAgICAgICAqdmFsdWVzID0gQ29udmVydFRvR0xpbnQoc3luYy0+Z2V0RmxhZ3MoKSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9TWU5DX1NUQVRVUzoKKyAgICAg
ICAgICAgIEFOR0xFX1RSWShzeW5jLT5nZXRTdGF0dXModmFsdWVzKSk7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChsZW5ndGggIT0gbnVsbHB0cikKKyAg
ICB7CisgICAgICAgICpsZW5ndGggPSAxOworICAgIH0KKworICAgIHJldHVybiBOb0Vycm9yKCk7
Cit9CisKIHZvaWQgU2V0VGV4UGFyYW1ldGVyZihUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5h
bWUsIEdMZmxvYXQgcGFyYW0pCiB7CiAgICAgU2V0VGV4UGFyYW1ldGVyQmFzZSh0ZXh0dXJlLCBw
bmFtZSwgJnBhcmFtKTsKQEAgLTc1Nyw0ICs5NzMsMjI3IEBAIHZvaWQgU2V0U2FtcGxlclBhcmFt
ZXRlcml2KFNhbXBsZXIgKnNhbXBsZXIsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFt
cykKIHsKICAgICBTZXRTYW1wbGVyUGFyYW1ldGVyQmFzZShzYW1wbGVyLCBwbmFtZSwgcGFyYW1z
KTsKIH0KKwordm9pZCBTZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcmkoRnJhbWVidWZmZXIgKmZyYW1l
YnVmZmVyLCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQoreworICAgIEFTU0VSVChmcmFtZWJ1
ZmZlcik7CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9GUkFN
RUJVRkZFUl9ERUZBVUxUX1dJRFRIOgorICAgICAgICAgICAgZnJhbWVidWZmZXItPnNldERlZmF1
bHRXaWR0aChwYXJhbSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9GUkFN
RUJVRkZFUl9ERUZBVUxUX0hFSUdIVDoKKyAgICAgICAgICAgIGZyYW1lYnVmZmVyLT5zZXREZWZh
dWx0SGVpZ2h0KHBhcmFtKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX0ZS
QU1FQlVGRkVSX0RFRkFVTFRfU0FNUExFUzoKKyAgICAgICAgICAgIGZyYW1lYnVmZmVyLT5zZXRE
ZWZhdWx0U2FtcGxlcyhwYXJhbSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBH
TF9GUkFNRUJVRkZFUl9ERUZBVUxUX0ZJWEVEX1NBTVBMRV9MT0NBVElPTlM6CisgICAgICAgICAg
ICBmcmFtZWJ1ZmZlci0+c2V0RGVmYXVsdEZpeGVkU2FtcGxlTG9jYXRpb25zKHN0YXRpY19jYXN0
PEdMYm9vbGVhbj4ocGFyYW0pKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0K
K30KKwordm9pZCBTZXRQcm9ncmFtUGFyYW1ldGVyaShQcm9ncmFtICpwcm9ncmFtLCBHTGVudW0g
cG5hbWUsIEdMaW50IHZhbHVlKQoreworICAgIEFTU0VSVChwcm9ncmFtKTsKKworICAgIHN3aXRj
aCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX1BST0dSQU1fQklOQVJZX1JFVFJJRVZB
QkxFX0hJTlQ6CisgICAgICAgICAgICBwcm9ncmFtLT5zZXRCaW5hcnlSZXRyaWV2YWJsZUhpbnQo
dmFsdWUgIT0gR0xfRkFMU0UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xf
UFJPR1JBTV9TRVBBUkFCTEU6CisgICAgICAgICAgICBwcm9ncmFtLT5zZXRTZXBhcmFibGUodmFs
dWUgIT0gR0xfRkFMU0UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgfQogfQor
CitHTHVpbnQgUXVlcnlQcm9ncmFtUmVzb3VyY2VJbmRleChjb25zdCBQcm9ncmFtICpwcm9ncmFt
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZh
Y2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIgKm5hbWUp
Cit7CisgICAgc3dpdGNoIChwcm9ncmFtSW50ZXJmYWNlKQorICAgIHsKKyAgICAgICAgY2FzZSBH
TF9QUk9HUkFNX0lOUFVUOgorICAgICAgICAgICAgcmV0dXJuIHByb2dyYW0tPmdldElucHV0UmVz
b3VyY2VJbmRleChuYW1lKTsKKworICAgICAgICBjYXNlIEdMX1BST0dSQU1fT1VUUFVUOgorICAg
ICAgICAgICAgcmV0dXJuIHByb2dyYW0tPmdldE91dHB1dFJlc291cmNlSW5kZXgobmFtZSk7CisK
KyAgICAgICAgLy8gVE9ETyhKaWUpOiBtb3JlIGludGVyZmFjZXMuCisgICAgICAgIGNhc2UgR0xf
VU5JRk9STToKKyAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLOgorICAgICAgICBjYXNlIEdM
X1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HOgorICAgICAgICBjYXNlIEdMX0JVRkZFUl9WQVJJ
QUJMRToKKyAgICAgICAgY2FzZSBHTF9TSEFERVJfU1RPUkFHRV9CTE9DSzoKKyAgICAgICAgICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJldHVybiBHTF9JTlZBTElEX0lOREVYOwor
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAg
ICAgcmV0dXJuIEdMX0lOVkFMSURfSU5ERVg7CisgICAgfQorfQorCit2b2lkIFF1ZXJ5UHJvZ3Jh
bVJlc291cmNlTmFtZShjb25zdCBQcm9ncmFtICpwcm9ncmFtLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm5hbWUpCit7Cisg
ICAgc3dpdGNoIChwcm9ncmFtSW50ZXJmYWNlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9QUk9H
UkFNX0lOUFVUOgorICAgICAgICAgICAgcHJvZ3JhbS0+Z2V0SW5wdXRSZXNvdXJjZU5hbWUoaW5k
ZXgsIGJ1ZlNpemUsIGxlbmd0aCwgbmFtZSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIEdMX1BST0dSQU1fT1VUUFVUOgorICAgICAgICAgICAgcHJvZ3JhbS0+Z2V0T3V0cHV0
UmVzb3VyY2VOYW1lKGluZGV4LCBidWZTaXplLCBsZW5ndGgsIG5hbWUpOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgLy8gVE9ETyhKaWUpOiBtb3JlIGludGVyZmFjZXMuCisgICAgICAg
IGNhc2UgR0xfVU5JRk9STToKKyAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLOgorICAgICAg
ICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19WQVJZSU5HOgorICAgICAgICBjYXNlIEdMX0JV
RkZFUl9WQVJJQUJMRToKKyAgICAgICAgY2FzZSBHTF9TSEFERVJfU1RPUkFHRV9CTE9DSzoKKyAg
ICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgIH0KK30KKworfSAgLy8g
bmFtZXNwYWNlIGdsCisKK25hbWVzcGFjZSBlZ2wKK3sKKwordm9pZCBRdWVyeUNvbmZpZ0F0dHJp
Yihjb25zdCBDb25maWcgKmNvbmZpZywgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50ICp2YWx1ZSkK
K3sKKyAgICBBU1NFUlQoY29uZmlnICE9IG51bGxwdHIpOworICAgIHN3aXRjaCAoYXR0cmlidXRl
KQorICAgIHsKKyAgICAgICAgY2FzZSBFR0xfQlVGRkVSX1NJWkU6CisgICAgICAgICAgICAqdmFs
dWUgPSBjb25maWctPmJ1ZmZlclNpemU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBFR0xfQUxQSEFfU0laRToKKyAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZy0+YWxwaGFTaXpl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdMX0JMVUVfU0laRToKKyAgICAg
ICAgICAgICp2YWx1ZSA9IGNvbmZpZy0+Ymx1ZVNpemU7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBFR0xfR1JFRU5fU0laRToKKyAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZy0+
Z3JlZW5TaXplOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdMX1JFRF9TSVpF
OgorICAgICAgICAgICAgKnZhbHVlID0gY29uZmlnLT5yZWRTaXplOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgRUdMX0RFUFRIX1NJWkU6CisgICAgICAgICAgICAqdmFsdWUgPSBj
b25maWctPmRlcHRoU2l6ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVHTF9T
VEVOQ0lMX1NJWkU6CisgICAgICAgICAgICAqdmFsdWUgPSBjb25maWctPnN0ZW5jaWxTaXplOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdMX0NPTkZJR19DQVZFQVQ6CisgICAg
ICAgICAgICAqdmFsdWUgPSBjb25maWctPmNvbmZpZ0NhdmVhdDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEVHTF9DT05GSUdfSUQ6CisgICAgICAgICAgICAqdmFsdWUgPSBjb25m
aWctPmNvbmZpZ0lEOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdMX0xFVkVM
OgorICAgICAgICAgICAgKnZhbHVlID0gY29uZmlnLT5sZXZlbDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEVHTF9OQVRJVkVfUkVOREVSQUJMRToKKyAgICAgICAgICAgICp2YWx1
ZSA9IGNvbmZpZy0+bmF0aXZlUmVuZGVyYWJsZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEVHTF9OQVRJVkVfVklTVUFMX0lEOgorICAgICAgICAgICAgKnZhbHVlID0gY29uZmln
LT5uYXRpdmVWaXN1YWxJRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVHTF9O
QVRJVkVfVklTVUFMX1RZUEU6CisgICAgICAgICAgICAqdmFsdWUgPSBjb25maWctPm5hdGl2ZVZp
c3VhbFR5cGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFR0xfU0FNUExFUzoK
KyAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZy0+c2FtcGxlczsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEVHTF9TQU1QTEVfQlVGRkVSUzoKKyAgICAgICAgICAgICp2YWx1ZSA9
IGNvbmZpZy0+c2FtcGxlQnVmZmVyczsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEVHTF9TVVJGQUNFX1RZUEU6CisgICAgICAgICAgICAqdmFsdWUgPSBjb25maWctPnN1cmZhY2VU
eXBlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdMX1RSQU5TUEFSRU5UX1RZ
UEU6CisgICAgICAgICAgICAqdmFsdWUgPSBjb25maWctPnRyYW5zcGFyZW50VHlwZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVHTF9UUkFOU1BBUkVOVF9CTFVFX1ZBTFVFOgor
ICAgICAgICAgICAgKnZhbHVlID0gY29uZmlnLT50cmFuc3BhcmVudEJsdWVWYWx1ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVHTF9UUkFOU1BBUkVOVF9HUkVFTl9WQUxVRToK
KyAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZy0+dHJhbnNwYXJlbnRHcmVlblZhbHVlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdMX1RSQU5TUEFSRU5UX1JFRF9WQUxVRToK
KyAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZy0+dHJhbnNwYXJlbnRSZWRWYWx1ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVHTF9CSU5EX1RPX1RFWFRVUkVfUkdCOgorICAg
ICAgICAgICAgKnZhbHVlID0gY29uZmlnLT5iaW5kVG9UZXh0dXJlUkdCOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgRUdMX0JJTkRfVE9fVEVYVFVSRV9SR0JBOgorICAgICAgICAg
ICAgKnZhbHVlID0gY29uZmlnLT5iaW5kVG9UZXh0dXJlUkdCQTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEVHTF9NSU5fU1dBUF9JTlRFUlZBTDoKKyAgICAgICAgICAgICp2YWx1
ZSA9IGNvbmZpZy0+bWluU3dhcEludGVydmFsOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgRUdMX01BWF9TV0FQX0lOVEVSVkFMOgorICAgICAgICAgICAgKnZhbHVlID0gY29uZmln
LT5tYXhTd2FwSW50ZXJ2YWw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFR0xf
TFVNSU5BTkNFX1NJWkU6CisgICAgICAgICAgICAqdmFsdWUgPSBjb25maWctPmx1bWluYW5jZVNp
emU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFR0xfQUxQSEFfTUFTS19TSVpF
OgorICAgICAgICAgICAgKnZhbHVlID0gY29uZmlnLT5hbHBoYU1hc2tTaXplOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdMX0NPTE9SX0JVRkZFUl9UWVBFOgorICAgICAgICAg
ICAgKnZhbHVlID0gY29uZmlnLT5jb2xvckJ1ZmZlclR5cGU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFR0xfUkVOREVSQUJMRV9UWVBFOgorICAgICAgICAgICAgKnZhbHVlID0g
Y29uZmlnLT5yZW5kZXJhYmxlVHlwZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEVHTF9NQVRDSF9OQVRJVkVfUElYTUFQOgorICAgICAgICAgICAgKnZhbHVlID0gZmFsc2U7Cisg
ICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBFR0xfQ09ORk9STUFOVDoKKyAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZy0+Y29uZm9y
bWFudDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEVHTF9NQVhfUEJVRkZFUl9X
SURUSDoKKyAgICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZy0+bWF4UEJ1ZmZlcldpZHRoOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRUdMX01BWF9QQlVGRkVSX0hFSUdIVDoKKyAg
ICAgICAgICAgICp2YWx1ZSA9IGNvbmZpZy0+bWF4UEJ1ZmZlckhlaWdodDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEVHTF9NQVhfUEJVRkZFUl9QSVhFTFM6CisgICAgICAgICAg
ICAqdmFsdWUgPSBjb25maWctPm1heFBCdWZmZXJQaXhlbHM7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBFR0xfT1BUSU1BTF9TVVJGQUNFX09SSUVOVEFUSU9OX0FOR0xFOgorICAg
ICAgICAgICAgKnZhbHVlID0gY29uZmlnLT5vcHRpbWFsT3JpZW50YXRpb247CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBFR0xfQ09MT1JfQ09NUE9ORU5UX1RZUEVfRVhUOgorICAg
ICAgICAgICAgKnZhbHVlID0gY29uZmlnLT5jb2xvckNvbXBvbmVudFR5cGU7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZSBlZ2wKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9xdWVyeXV0aWxzLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcXVlcnl1dGlscy5oCmluZGV4
IDI4YTg0YjNiZDI4Li40MGM3ZDgyYzZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3F1ZXJ5dXRpbHMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcXVlcnl1dGlscy5oCkBAIC0xMiw5ICsxMiwxNCBAQAogI2luY2x1
ZGUgImFuZ2xlX2dsLmgiCiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKIAorI2luY2x1
ZGUgPEVHTC9lZ2wuaD4KKwogbmFtZXNwYWNlIGdsCiB7CiBjbGFzcyBCdWZmZXI7CitjbGFzcyBD
b250ZXh0OworY2xhc3MgRXJyb3I7CitjbGFzcyBGZW5jZVN5bmM7CiBjbGFzcyBGcmFtZWJ1ZmZl
cjsKIGNsYXNzIFByb2dyYW07CiBjbGFzcyBSZW5kZXJidWZmZXI7CkBAIC0yNCw2ICsyOSw3IEBA
IGNsYXNzIFRleHR1cmU7CiBzdHJ1Y3QgVGV4dHVyZUNhcHM7CiBzdHJ1Y3QgVW5pZm9ybUJsb2Nr
Owogc3RydWN0IFZlcnRleEF0dHJpYnV0ZTsKK3N0cnVjdCBWZXJ0ZXhCaW5kaW5nOwogc3RydWN0
IFZlcnRleEF0dHJpYkN1cnJlbnRWYWx1ZURhdGE7CiAKIHZvaWQgUXVlcnlGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRQYXJhbWV0ZXJpdihjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCkBAIC0z
NCwyNiArNDAsNTAgQEAgdm9pZCBRdWVyeUJ1ZmZlclBhcmFtZXRlcml2KGNvbnN0IEJ1ZmZlciAq
YnVmZmVyLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwogdm9pZCBRdWVyeUJ1ZmZlclBh
cmFtZXRlcmk2NHYoY29uc3QgQnVmZmVyICpidWZmZXIsIEdMZW51bSBwbmFtZSwgR0xpbnQ2NCAq
cGFyYW1zKTsKIHZvaWQgUXVlcnlCdWZmZXJQb2ludGVydihjb25zdCBCdWZmZXIgKmJ1ZmZlciwg
R0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKTsKIHZvaWQgUXVlcnlQcm9ncmFtaXYoY29uc3Qg
UHJvZ3JhbSAqcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKLXZvaWQgUXVl
cnlSZW5kZXJidWZmZXJpdihjb25zdCBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciwgR0xlbnVt
IHBuYW1lLCBHTGludCAqcGFyYW1zKTsKK3ZvaWQgUXVlcnlSZW5kZXJidWZmZXJpdihjb25zdCBD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlbmRlcmJ1
ZmZlciAqcmVuZGVyYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKIHZvaWQgUXVlcnlT
aGFkZXJpdihjb25zdCBTaGFkZXIgKnNoYWRlciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1z
KTsKK3ZvaWQgUXVlcnlUZXhMZXZlbFBhcmFtZXRlcmZ2KGNvbnN0IFRleHR1cmUgKnRleHR1cmUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZs
b2F0ICpwYXJhbXMpOwordm9pZCBRdWVyeVRleExldmVsUGFyYW1ldGVyaXYoY29uc3QgVGV4dHVy
ZSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50ICpwYXJhbXMpOwogdm9pZCBRdWVyeVRleFBhcmFtZXRlcmZ2KGNvbnN0IFRl
eHR1cmUgKnRleHR1cmUsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKTsKIHZvaWQgUXVl
cnlUZXhQYXJhbWV0ZXJpdihjb25zdCBUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIEdM
aW50ICpwYXJhbXMpOwogdm9pZCBRdWVyeVNhbXBsZXJQYXJhbWV0ZXJmdihjb25zdCBTYW1wbGVy
ICpzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcyk7CiB2b2lkIFF1ZXJ5U2Ft
cGxlclBhcmFtZXRlcml2KGNvbnN0IFNhbXBsZXIgKnNhbXBsZXIsIEdMZW51bSBwbmFtZSwgR0xp
bnQgKnBhcmFtcyk7CisKKy8vIFdhcm5pbmc6IHlvdSBzaG91bGQgZW5zdXJlIGJpbmRpbmcgcmVh
bGx5IG1hdGNoZXMgYXR0cmliLmJpbmRpbmdJbmRleCBiZWZvcmUgdXNpbmcgdGhlIGZvbGxvd2lu
ZworLy8gZnVuY3Rpb25zLgogdm9pZCBRdWVyeVZlcnRleEF0dHJpYmZ2KGNvbnN0IFZlcnRleEF0
dHJpYnV0ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlcnRleEJp
bmRpbmcgJmJpbmRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVydGV4QXR0
cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlRGF0YSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAq
cGFyYW1zKTsKKwogdm9pZCBRdWVyeVZlcnRleEF0dHJpYml2KGNvbnN0IFZlcnRleEF0dHJpYnV0
ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZlcnRleEJpbmRpbmcg
JmJpbmRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVydGV4QXR0cmliQ3Vy
cmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7
CisKIHZvaWQgUXVlcnlWZXJ0ZXhBdHRyaWJQb2ludGVydihjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUg
JmF0dHJpYiwgR0xlbnVtIHBuYW1lLCBHTHZvaWQgKipwb2ludGVyKTsKKwogdm9pZCBRdWVyeVZl
cnRleEF0dHJpYklpdihjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVmVydGV4QmluZGluZyAmYmluZGluZywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVu
dFZhbHVlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKTsKKwogdm9pZCBRdWVyeVZlcnRl
eEF0dHJpYkl1aXYoY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVu
dFZhbHVlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKTsKQEAgLTY1LDYgKzk1LDE0
IEBAIHZvaWQgUXVlcnlBY3RpdmVVbmlmb3JtQmxvY2tpdihjb25zdCBQcm9ncmFtICpwcm9ncmFt
LAogCiB2b2lkIFF1ZXJ5SW50ZXJuYWxGb3JtYXRpdihjb25zdCBUZXh0dXJlQ2FwcyAmZm9ybWF0
LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xpbnQgKnBhcmFtcyk7CiAKK3ZvaWQg
UXVlcnlGcmFtZWJ1ZmZlclBhcmFtZXRlcml2KGNvbnN0IEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZl
ciwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKKworRXJyb3IgUXVlcnlTeW5jaXYoY29u
c3QgRmVuY2VTeW5jICpzeW5jLAorICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgR0xzaXpl
aSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgR0xpbnQgKnZhbHVlcyk7CisKIHZvaWQgU2V0
VGV4UGFyYW1ldGVyZihUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFy
YW0pOwogdm9pZCBTZXRUZXhQYXJhbWV0ZXJmdihUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gcG5h
bWUsIGNvbnN0IEdMZmxvYXQgKnBhcmFtcyk7CiB2b2lkIFNldFRleFBhcmFtZXRlcmkoVGV4dHVy
ZSAqdGV4dHVyZSwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7CkBAIC03NCw2ICsxMTIsMzAg
QEAgdm9pZCBTZXRTYW1wbGVyUGFyYW1ldGVyZihTYW1wbGVyICpzYW1wbGVyLCBHTGVudW0gcG5h
bWUsIEdMZmxvYXQgcGFyYW0pOwogdm9pZCBTZXRTYW1wbGVyUGFyYW1ldGVyZnYoU2FtcGxlciAq
c2FtcGxlciwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpOwogdm9pZCBTZXRT
YW1wbGVyUGFyYW1ldGVyaShTYW1wbGVyICpzYW1wbGVyLCBHTGVudW0gcG5hbWUsIEdMaW50IHBh
cmFtKTsKIHZvaWQgU2V0U2FtcGxlclBhcmFtZXRlcml2KFNhbXBsZXIgKnNhbXBsZXIsIEdMZW51
bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcyk7Ci19CisKK3ZvaWQgU2V0RnJhbWVidWZmZXJQ
YXJhbWV0ZXJpKEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgR0xlbnVtIHBuYW1lLCBHTGludCBw
YXJhbSk7CisKK3ZvaWQgU2V0UHJvZ3JhbVBhcmFtZXRlcmkoUHJvZ3JhbSAqcHJvZ3JhbSwgR0xl
bnVtIHBuYW1lLCBHTGludCB2YWx1ZSk7CisKK0dMdWludCBRdWVyeVByb2dyYW1SZXNvdXJjZUlu
ZGV4KGNvbnN0IFByb2dyYW0gKnByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7CisKK3ZvaWQgUXVlcnlQcm9ncmFtUmVzb3VyY2VO
YW1lKGNvbnN0IFByb2dyYW0gKnByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVm
U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbmFtZSk7CisKK30gIC8vIG5hbWVz
cGFjZSBnbAorCituYW1lc3BhY2UgZWdsCit7CitzdHJ1Y3QgQ29uZmlnOworCit2b2lkIFF1ZXJ5
Q29uZmlnQXR0cmliKGNvbnN0IENvbmZpZyAqY29uZmlnLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xp
bnQgKnZhbHVlKTsKKworfSAgLy8gbmFtZXNwYWNlIGVnbAogCiAjZW5kaWYgIC8vIExJQkFOR0xF
X1FVRVJZVVRJTFNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9CdWZmZXJJbXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvQnVmZmVySW1wbC5oCmluZGV4IDg5MDRiZjMxZWJlLi5mMmI0
NWJiYTU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL0J1ZmZlckltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvQnVmZmVySW1wbC5oCkBAIC0xNSwyOSArMTUsNTMgQEAKIAogI2lu
Y2x1ZGUgPHN0ZGludC5oPgogCituYW1lc3BhY2UgZ2wKK3sKK2NsYXNzIEJ1ZmZlclN0YXRlOwor
fQorCiBuYW1lc3BhY2UgcngKIHsKK2NsYXNzIENvbnRleHRJbXBsOwogCiBjbGFzcyBCdWZmZXJJ
bXBsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7CiAgIHB1YmxpYzoKKyAgICBCdWZmZXJJbXBsKGNv
bnN0IGdsOjpCdWZmZXJTdGF0ZSAmc3RhdGUpIDogbVN0YXRlKHN0YXRlKSB7fQogICAgIHZpcnR1
YWwgfkJ1ZmZlckltcGwoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveShDb250ZXh0SW1w
bCAqY29udGV4dEltcGwpIHt9CiAKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBzZXREYXRhKEdMZW51
bSB0YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBHTGVudW0gdXNhZ2UpICAg
ICA9IDA7Ci0gICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0U3ViRGF0YShHTGVudW0gdGFyZ2V0LCBj
b25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG9mZnNldCkgPSAwOwotICAgIHZp
cnR1YWwgZ2w6OkVycm9yIGNvcHlTdWJEYXRhKEJ1ZmZlckltcGwgKnNvdXJjZSwKKyAgICB2aXJ0
dWFsIGdsOjpFcnJvciBzZXREYXRhKENvbnRleHRJbXBsICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB1c2FnZSkg
PSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldFN1YkRhdGEoQ29udGV4dEltcGwgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCkgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9y
IGNvcHlTdWJEYXRhKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCdWZmZXJJbXBsICpzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnRwdHIgc291cmNlT2Zmc2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50cHRyIGRlc3RPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplKSA9IDA7Ci0gICAgdmlydHVhbCBnbDo6RXJy
b3IgbWFwKEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikgPSAwOwotICAgIHZpcnR1YWwg
Z2w6OkVycm9yIG1hcFJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgsIEdMYml0Zmll
bGQgYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpID0gMDsKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciB1
bm1hcChHTGJvb2xlYW4gKnJlc3VsdCkgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIG1hcChD
b250ZXh0SW1wbCAqY29udGV4dEltcGwsIEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikg
PSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIG1hcFJhbmdlKENvbnRleHRJbXBsICpjb250ZXh0
SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x2b2lkICoqbWFwUHRyKSA9IDA7CisgICAgdmlydHVhbCBnbDo6RXJyb3Ig
dW5tYXAoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLCBHTGJvb2xlYW4gKnJlc3VsdCkgPSAwOwog
CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgZ2V0SW5kZXhSYW5nZShHTGVudW0gdHlwZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBib29sIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkluZGV4UmFuZ2UgKm91dFJhbmdlKSA9
IDA7CisKKyAgcHJvdGVjdGVkOgorICAgIGNvbnN0IGdsOjpCdWZmZXJTdGF0ZSAmbVN0YXRlOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL0J1ZmZlckltcGxfbW9jay5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL0J1ZmZlckltcGxfbW9jay5oCmluZGV4IDQ2ZTA3YjQ3MDgxLi4y
ZTFmMDUwMjdkZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL0J1ZmZlckltcGxfbW9jay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9CdWZmZXJJbXBsX21vY2suaApAQCAtMTEsMjYgKzEx
LDMyIEBACiAKICNpbmNsdWRlICJnbW9jay9nbW9jay5oIgogCisjaW5jbHVkZSAibGliQU5HTEUv
QnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvQnVmZmVySW1wbC5oIgogCiBu
YW1lc3BhY2UgcngKIHsKLQogY2xhc3MgTW9ja0J1ZmZlckltcGwgOiBwdWJsaWMgQnVmZmVySW1w
bAogewogICBwdWJsaWM6CisgICAgTW9ja0J1ZmZlckltcGwoKSA6IEJ1ZmZlckltcGwobU1vY2tT
dGF0ZSkge30KICAgICB+TW9ja0J1ZmZlckltcGwoKSB7IGRlc3RydWN0b3IoKTsgfQogCi0gICAg
TU9DS19NRVRIT0Q0KHNldERhdGEsIGdsOjpFcnJvcihHTGVudW0sIGNvbnN0IHZvaWQgKiwgc2l6
ZV90LCBHTGVudW0pKTsKLSAgICBNT0NLX01FVEhPRDQoc2V0U3ViRGF0YSwgZ2w6OkVycm9yKEdM
ZW51bSwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCkpOwotICAgIE1PQ0tfTUVUSE9ENChj
b3B5U3ViRGF0YSwgZ2w6OkVycm9yKEJ1ZmZlckltcGwgKiwgR0xpbnRwdHIsIEdMaW50cHRyLCBH
THNpemVpcHRyKSk7Ci0gICAgTU9DS19NRVRIT0QyKG1hcCwgZ2w6OkVycm9yKEdMZW51bSwgR0x2
b2lkICoqKSk7Ci0gICAgTU9DS19NRVRIT0Q0KG1hcFJhbmdlLCBnbDo6RXJyb3Ioc2l6ZV90LCBz
aXplX3QsIEdMYml0ZmllbGQsIEdMdm9pZCAqKikpOwotICAgIE1PQ0tfTUVUSE9EMSh1bm1hcCwg
Z2w6OkVycm9yKEdMYm9vbGVhbiAqcmVzdWx0KSk7CisgICAgTU9DS19NRVRIT0Q1KHNldERhdGEs
IGdsOjpFcnJvcihDb250ZXh0SW1wbCAqLCBHTGVudW0sIGNvbnN0IHZvaWQgKiwgc2l6ZV90LCBH
TGVudW0pKTsKKyAgICBNT0NLX01FVEhPRDUoc2V0U3ViRGF0YSwgZ2w6OkVycm9yKENvbnRleHRJ
bXBsICosIEdMZW51bSwgY29uc3Qgdm9pZCAqLCBzaXplX3QsIHNpemVfdCkpOworICAgIE1PQ0tf
TUVUSE9ENShjb3B5U3ViRGF0YSwKKyAgICAgICAgICAgICAgICAgZ2w6OkVycm9yKENvbnRleHRJ
bXBsICpjb250ZXh0SW1wbCwgQnVmZmVySW1wbCAqLCBHTGludHB0ciwgR0xpbnRwdHIsIEdMc2l6
ZWlwdHIpKTsKKyAgICBNT0NLX01FVEhPRDMobWFwLCBnbDo6RXJyb3IoQ29udGV4dEltcGwgKmNv
bnRleHRJbXBsLCBHTGVudW0sIEdMdm9pZCAqKikpOworICAgIE1PQ0tfTUVUSE9ENShtYXBSYW5n
ZSwKKyAgICAgICAgICAgICAgICAgZ2w6OkVycm9yKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwg
c2l6ZV90LCBzaXplX3QsIEdMYml0ZmllbGQsIEdMdm9pZCAqKikpOworICAgIE1PQ0tfTUVUSE9E
Mih1bm1hcCwgZ2w6OkVycm9yKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwgR0xib29sZWFuICpy
ZXN1bHQpKTsKIAogICAgIE1PQ0tfTUVUSE9ENShnZXRJbmRleFJhbmdlLCBnbDo6RXJyb3IoR0xl
bnVtLCBzaXplX3QsIHNpemVfdCwgYm9vbCwgZ2w6OkluZGV4UmFuZ2UgKikpOwogCiAgICAgTU9D
S19NRVRIT0QwKGRlc3RydWN0b3IsIHZvaWQoKSk7CisKKyAgcHJvdGVjdGVkOgorICAgIGdsOjpC
dWZmZXJTdGF0ZSBtTW9ja1N0YXRlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0NvbnRleHRJbXBsLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvQ29udGV4dEltcGwuaAppbmRl
eCAzZmM5ZGI1OTM3My4uYjAxZDkwM2FiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Db250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Db250ZXh0SW1wbC5oCkBAIC02
MSw2ICs2MSw5IEBAIGNsYXNzIENvbnRleHRJbXBsIDogcHVibGljIEdMSW1wbEZhY3RvcnkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGlj
ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Oklu
ZGV4UmFuZ2UgJmluZGV4UmFuZ2UpID0gMDsKIAorICAgIHZpcnR1YWwgZ2w6OkVycm9yIGRyYXdB
cnJheXNJbmRpcmVjdChHTGVudW0gbW9kZSwgY29uc3QgR0x2b2lkICppbmRpcmVjdCkgPSAwOwor
ICAgIHZpcnR1YWwgZ2w6OkVycm9yIGRyYXdFbGVtZW50c0luZGlyZWN0KEdMZW51bSBtb2RlLCBH
TGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpcmVjdCkgPSAwOworCiAgICAgLy8gQ0hST01J
VU1fcGF0aF9yZW5kZXJpbmcgcGF0aCBkcmF3aW5nIG1ldGhvZHMuCiAgICAgdmlydHVhbCB2b2lk
IHN0ZW5jaWxGaWxsUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xlbnVtIGZpbGxNb2RlLCBH
THVpbnQgbWFzayk7CiAgICAgdmlydHVhbCB2b2lkIHN0ZW5jaWxTdHJva2VQYXRoKGNvbnN0IGds
OjpQYXRoICpwYXRoLCBHTGludCByZWZlcmVuY2UsIEdMdWludCBtYXNrKTsKQEAgLTEyMCw3ICsx
MjMsNyBAQCBjbGFzcyBDb250ZXh0SW1wbCA6IHB1YmxpYyBHTEltcGxGYWN0b3J5CiAgICAgdmly
dHVhbCB2b2lkIHBvcEdyb3VwTWFya2VyKCkgPSAwOwogCiAgICAgLy8gU3RhdGUgc3luYyB3aXRo
IGRpcnR5IGJpdHMuCi0gICAgdmlydHVhbCB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUg
JnN0YXRlLCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlC
aXRzKSA9IDA7CiAKICAgICAvLyBEaXNqb2ludCB0aW1lciBxdWVyaWVzCiAgICAgdmlydHVhbCBH
TGludCBnZXRHUFVEaXNqb2ludCgpID0gMDsKQEAgLTEzNSw2ICsxMzgsOCBAQCBjbGFzcyBDb250
ZXh0SW1wbCA6IHB1YmxpYyBHTEltcGxGYWN0b3J5CiAgICAgdmlydHVhbCBjb25zdCBnbDo6RXh0
ZW5zaW9ucyAmZ2V0TmF0aXZlRXh0ZW5zaW9ucygpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNv
bnN0IGdsOjpMaW1pdGF0aW9ucyAmZ2V0TmF0aXZlTGltaXRhdGlvbnMoKSBjb25zdCA9IDA7CiAK
KyAgICB2aXJ0dWFsIGdsOjpFcnJvciBkaXNwYXRjaENvbXB1dGUoR0x1aW50IG51bUdyb3Vwc1gs
IEdMdWludCBudW1Hcm91cHNZLCBHTHVpbnQgbnVtR3JvdXBzWikgPSAwOworCiAgICAgY29uc3Qg
Z2w6OkNvbnRleHRTdGF0ZSAmZ2V0Q29udGV4dFN0YXRlKCkgeyByZXR1cm4gbVN0YXRlOyB9CiAg
ICAgaW50IGdldENsaWVudE1ham9yVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1TdGF0ZS5nZXRD
bGllbnRNYWpvclZlcnNpb24oKTsgfQogICAgIGludCBnZXRDbGllbnRNaW5vclZlcnNpb24oKSBj
b25zdCB7IHJldHVybiBtU3RhdGUuZ2V0Q2xpZW50TWlub3JWZXJzaW9uKCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9EaXNwbGF5
SW1wbC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
RGlzcGxheUltcGwuY3BwCmluZGV4IDgwNjExODlmMGE3Li4wODBhZjM3YzdmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Rpc3BsYXlJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvRGlzcGxheUltcGwuY3BwCkBAIC04LDI2ICs4LDIwIEBACiAKICNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9EaXNwbGF5SW1wbC5oIgogCisjaW5jbHVkZSAibGliQU5HTEUvRGlzcGxheS5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CiAKLURp
c3BsYXlJbXBsOjpEaXNwbGF5SW1wbCgpCi0gICAgOiBtRXh0ZW5zaW9uc0luaXRpYWxpemVkKGZh
bHNlKSwKLSAgICAgIG1DYXBzSW5pdGlhbGl6ZWQoZmFsc2UpCitEaXNwbGF5SW1wbDo6RGlzcGxh
eUltcGwoY29uc3QgZWdsOjpEaXNwbGF5U3RhdGUgJnN0YXRlKQorICAgIDogbVN0YXRlKHN0YXRl
KSwgbUV4dGVuc2lvbnNJbml0aWFsaXplZChmYWxzZSksIG1DYXBzSW5pdGlhbGl6ZWQoZmFsc2Up
CiB7CiB9CiAKIERpc3BsYXlJbXBsOjp+RGlzcGxheUltcGwoKQogewotICAgIEFTU0VSVChtU3Vy
ZmFjZVNldC5lbXB0eSgpKTsKLX0KLQotdm9pZCBEaXNwbGF5SW1wbDo6ZGVzdHJveVN1cmZhY2Uo
ZWdsOjpTdXJmYWNlICpzdXJmYWNlKQotewotICAgIG1TdXJmYWNlU2V0LmVyYXNlKHN1cmZhY2Up
OwotICAgIHN1cmZhY2UtPm9uRGVzdHJveSgpOworICAgIEFTU0VSVChtU3RhdGUuc3VyZmFjZVNl
dC5lbXB0eSgpKTsKIH0KIAogY29uc3QgZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAmRGlzcGxheUlt
cGw6OmdldEV4dGVuc2lvbnMoKSBjb25zdApAQCAtNDEsNiArMzUsMTUgQEAgY29uc3QgZWdsOjpE
aXNwbGF5RXh0ZW5zaW9ucyAmRGlzcGxheUltcGw6OmdldEV4dGVuc2lvbnMoKSBjb25zdAogICAg
IHJldHVybiBtRXh0ZW5zaW9uczsKIH0KIAorZWdsOjpFcnJvciBEaXNwbGF5SW1wbDo6dmFsaWRh
dGVDbGllbnRCdWZmZXIoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZm
ZXIgY2xpZW50QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIGNvbnN0Cit7CisgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0RJU1BMQVksICJEaXNw
bGF5SW1wbDo6dmFsaWRhdGVDbGllbnRCdWZmZXIgdW5pbXBsZW1lbnRlZC4iKTsKK30KKwogY29u
c3QgZWdsOjpDYXBzICZEaXNwbGF5SW1wbDo6Z2V0Q2FwcygpIGNvbnN0CiB7CiAgICAgaWYgKCFt
Q2Fwc0luaXRpYWxpemVkKQpAQCAtNTIsNCArNTUsNCBAQCBjb25zdCBlZ2w6OkNhcHMgJkRpc3Bs
YXlJbXBsOjpnZXRDYXBzKCkgY29uc3QKICAgICByZXR1cm4gbUNhcHM7CiB9CiAKLX0KK30gIC8v
IG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL0Rpc3BsYXlJbXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvRGlzcGxheUltcGwuaAppbmRleCA2NTI0ODZlZGJkOC4uMGIz
Njc1ODE0OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9EaXNwbGF5SW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9EaXNwbGF5SW1wbC5oCkBAIC0yNCw2ICsyNCw3IEBAIG5hbWVz
cGFjZSBlZ2wKIHsKIGNsYXNzIEF0dHJpYnV0ZU1hcDsKIGNsYXNzIERpc3BsYXk7CitzdHJ1Y3Qg
RGlzcGxheVN0YXRlOwogc3RydWN0IENvbmZpZzsKIGNsYXNzIFN1cmZhY2U7CiBjbGFzcyBJbWFn
ZVNpYmxpbmc7CkBAIC00NSw3ICs0Niw3IEBAIGNsYXNzIFN0cmVhbVByb2R1Y2VySW1wbDsKIGNs
YXNzIERpc3BsYXlJbXBsIDogcHVibGljIEVHTEltcGxGYWN0b3J5CiB7CiAgIHB1YmxpYzoKLSAg
ICBEaXNwbGF5SW1wbCgpOworICAgIERpc3BsYXlJbXBsKGNvbnN0IGVnbDo6RGlzcGxheVN0YXRl
ICZzdGF0ZSk7CiAgICAgdmlydHVhbCB+RGlzcGxheUltcGwoKTsKIAogICAgIHZpcnR1YWwgZWds
OjpFcnJvciBpbml0aWFsaXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkgPSAwOwpAQCAtNTksNiAr
NjAsMTAgQEAgY2xhc3MgRGlzcGxheUltcGwgOiBwdWJsaWMgRUdMSW1wbEZhY3RvcnkKICAgICB2
aXJ0dWFsIGVnbDo6RXJyb3IgcmVzdG9yZUxvc3REZXZpY2UoKSA9IDA7CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdykgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgZWdsOjpFcnJvciB2YWxpZGF0ZUNsaWVudEJ1ZmZlcihjb25z
dCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJp
YnV0ZU1hcCAmYXR0cmlicykgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIGdldFZl
bmRvclN0cmluZygpIGNvbnN0ID0gMDsKIApAQCAtNzEsMTggKzc2LDEwIEBAIGNsYXNzIERpc3Bs
YXlJbXBsIDogcHVibGljIEVHTEltcGxGYWN0b3J5CiAgICAgdmlydHVhbCBnbDo6VmVyc2lvbiBn
ZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdCAgICAgICAgICAgPSAwOwogICAgIGNvbnN0
IGVnbDo6Q2FwcyAmZ2V0Q2FwcygpIGNvbnN0OwogCi0gICAgdHlwZWRlZiBzdGQ6OnNldDxlZ2w6
OlN1cmZhY2UqPiBTdXJmYWNlU2V0OwotICAgIGNvbnN0IFN1cmZhY2VTZXQgJmdldFN1cmZhY2VT
ZXQoKSBjb25zdCB7IHJldHVybiBtU3VyZmFjZVNldDsgfQotICAgIFN1cmZhY2VTZXQgJmdldFN1
cmZhY2VTZXQoKSB7IHJldHVybiBtU3VyZmFjZVNldDsgfQotCi0gICAgdm9pZCBkZXN0cm95U3Vy
ZmFjZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpOwotCiAgICAgY29uc3QgZWdsOjpEaXNwbGF5RXh0
ZW5zaW9ucyAmZ2V0RXh0ZW5zaW9ucygpIGNvbnN0OwogCiAgIHByb3RlY3RlZDoKLSAgICAvLyBQ
bGFjZSB0aGUgc3VyZmFjZSBzZXQgaGVyZSBzbyBpdCBjYW4gYmUgYWNjZXNzaWJsZSBmb3IgaGFu
ZGxpbmcKLSAgICAvLyBjb250ZXh0IGxvc3MgZXZlbnRzLiAoSXQgaXMgc2hhcmVkIGJldHdlZW4g
dGhlIERpc3BsYXkgYW5kIEltcGwuKQotICAgIFN1cmZhY2VTZXQgbVN1cmZhY2VTZXQ7CisgICAg
Y29uc3QgZWdsOjpEaXNwbGF5U3RhdGUgJm1TdGF0ZTsKIAogICBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBnZW5lcmF0ZUV4dGVuc2lvbnMoZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0
ZW5zaW9ucykgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL0VHTEltcGxGYWN0b3J5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRUdMSW1wbEZhY3RvcnkuaAppbmRleCBiMmM4
NzcxY2MxYy4uMGVjOGZhOGIwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9FR0xJbXBsRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9FR0xJbXBsRmFjdG9yeS5oCkBAIC0z
OSwxOCArMzksMTUgQEAgY2xhc3MgRUdMSW1wbEZhY3RvcnkgOiBhbmdsZTo6Tm9uQ29weWFibGUK
ICAgICB2aXJ0dWFsIH5FR0xJbXBsRmFjdG9yeSgpIHt9CiAKICAgICB2aXJ0dWFsIFN1cmZhY2VJ
bXBsICpjcmVhdGVXaW5kb3dTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6
Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0
cmlicykgPSAwOwogICAgIHZpcnR1YWwgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJTdXJmYWNl
KGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6
OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgPSAwOwogICAgIHZpcnR1YWwgU3VyZmFjZUltcGwgKmNy
ZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVI
YW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpID0gMDsKICAgICB2aXJ0dWFsIFN1cmZhY2VJbXBs
ICpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29u
ZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVQaXhtYXAsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0
cmlicykgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvRm9ybWF0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9Gb3JtYXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAyNDQzZDMzNzU3ZC4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MCAr
MCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCi0vLwotLy8gRm9ybWF0OgotLy8gICBBIHVuaXZlcnNhbCBkZXNjcmlwdGlv
biBvZiB0ZXh0dXJlIHN0b3JhZ2UuIEFjcm9zcyBtdWx0aXBsZQotLy8gICByZW5kZXJlciBiYWNr
LWVuZHMsIHRoZXJlIGFyZSBjb21tb24gZm9ybWF0cyBhbmQgc29tZSBkaXN0aW5jdAotLy8gICBw
ZXJtdXRhdGlvbnMsIHRoaXMgZW51bSBlbmNhcHN1bGF0ZXMgdGhlbSBhbGwuCi0KLSNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9Gb3JtYXQuaCIKLQotI2luY2x1ZGUgImltYWdlX3V0aWwvY29w
eWltYWdlLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSByeDsKLQotbmFtZXNwYWNlIGFuZ2xlCi17Ci0K
LW5hbWVzcGFjZQotewotCi1jb25zdCBGYXN0Q29weUZ1bmN0aW9uTWFwICZHZXRGYXN0Q29weUZ1
bmN0aW9uc01hcChGb3JtYXQ6OklEIGZvcm1hdElEKQotewotICAgIHN3aXRjaCAoZm9ybWF0SUQp
Ci0gICAgewotICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OkI4RzhSOEE4X1VOT1JNOgotICAgICAg
ICB7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1XZXhpdC10aW1lLWRlc3RydWN0b3JzIgotICAgICAgICAgICAgc3RhdGlj
IEZhc3RDb3B5RnVuY3Rpb25NYXAgZmFzdENvcHlNYXA7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcG9wCi0gICAgICAgICAgICBpZiAoZmFzdENvcHlNYXAuZW1wdHkoKSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBmYXN0Q29weU1hcFtnbDo6Rm9ybWF0VHlwZShHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFKV0gPSBDb3B5QkdSQThUb1JHQkE4OwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgcmV0dXJuIGZhc3RDb3B5TWFwOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgIHsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCi0gICAgICAgICAg
ICBzdGF0aWMgRmFzdENvcHlGdW5jdGlvbk1hcCBlbXB0eU1hcDsKLSNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwb3AKLSAgICAgICAgICAgIHJldHVybiBlbXB0eU1hcDsKLSAgICAgICAgfQotICAg
IH0KLX0KLQotfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi1Gb3JtYXQ6OkZvcm1hdChJRCBp
ZCwKLSAgICAgICAgICAgICAgIEdMZW51bSBnbEZvcm1hdCwKLSAgICAgICAgICAgICAgIEdMZW51
bSBmYm9Gb3JtYXQsCi0gICAgICAgICAgICAgICBNaXBHZW5lcmF0aW9uRnVuY3Rpb24gbWlwR2Vu
LAotICAgICAgICAgICAgICAgQ29sb3JSZWFkRnVuY3Rpb24gY29sb3JSZWFkLAotICAgICAgICAg
ICAgICAgR0xlbnVtIGNvbXBvbmVudFR5cGUsCi0gICAgICAgICAgICAgICBHTHVpbnQgcmVkQml0
cywKLSAgICAgICAgICAgICAgIEdMdWludCBncmVlbkJpdHMsCi0gICAgICAgICAgICAgICBHTHVp
bnQgYmx1ZUJpdHMsCi0gICAgICAgICAgICAgICBHTHVpbnQgYWxwaGFCaXRzLAotICAgICAgICAg
ICAgICAgR0x1aW50IGRlcHRoQml0cywKLSAgICAgICAgICAgICAgIEdMdWludCBzdGVuY2lsQml0
cykKLSAgICA6IGlkKGlkKSwKLSAgICAgIGdsSW50ZXJuYWxGb3JtYXQoZ2xGb3JtYXQpLAotICAg
ICAgZmJvSW1wbGVtZW50YXRpb25JbnRlcm5hbEZvcm1hdChmYm9Gb3JtYXQpLAotICAgICAgbWlw
R2VuZXJhdGlvbkZ1bmN0aW9uKG1pcEdlbiksCi0gICAgICBjb2xvclJlYWRGdW5jdGlvbihjb2xv
clJlYWQpLAotICAgICAgZmFzdENvcHlGdW5jdGlvbnMoR2V0RmFzdENvcHlGdW5jdGlvbnNNYXAo
aWQpKSwKLSAgICAgIGNvbXBvbmVudFR5cGUoY29tcG9uZW50VHlwZSksCi0gICAgICByZWRCaXRz
KHJlZEJpdHMpLAotICAgICAgZ3JlZW5CaXRzKGdyZWVuQml0cyksCi0gICAgICBibHVlQml0cyhi
bHVlQml0cyksCi0gICAgICBhbHBoYUJpdHMoYWxwaGFCaXRzKSwKLSAgICAgIGRlcHRoQml0cyhk
ZXB0aEJpdHMpLAotICAgICAgc3RlbmNpbEJpdHMoc3RlbmNpbEJpdHMpCi17Ci19Ci0KLX0gIC8v
IG5hbWVzcGFjZSBhbmdsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oCmluZGV4IDg4N2FmNjBlMmI3Li41YzZlN2UxZmU0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL0Zvcm1hdC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9Gb3JtYXQuaApAQCAtMjIsMTggKzIyLDE5IEBAIHN0cnVjdCBGb3JtYXQgZmluYWwg
OiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKICAgICBlbnVtIGNsYXNzIElEOwogCi0gICAgRm9ybWF0
KElEIGlkLAotICAgICAgICAgICBHTGVudW0gZ2xGb3JtYXQsCi0gICAgICAgICAgIEdMZW51bSBm
Ym9Gb3JtYXQsCi0gICAgICAgICAgIHJ4OjpNaXBHZW5lcmF0aW9uRnVuY3Rpb24gbWlwR2VuLAot
ICAgICAgICAgICByeDo6Q29sb3JSZWFkRnVuY3Rpb24gY29sb3JSZWFkLAotICAgICAgICAgICBH
TGVudW0gY29tcG9uZW50VHlwZSwKLSAgICAgICAgICAgR0x1aW50IHJlZEJpdHMsCi0gICAgICAg
ICAgIEdMdWludCBncmVlbkJpdHMsCi0gICAgICAgICAgIEdMdWludCBibHVlQml0cywKLSAgICAg
ICAgICAgR0x1aW50IGFscGhhQml0cywKLSAgICAgICAgICAgR0x1aW50IGRlcHRoQml0cywKLSAg
ICAgICAgICAgR0x1aW50IHN0ZW5jaWxCaXRzKTsKKyAgICBjb25zdGV4cHIgRm9ybWF0KElEIGlk
LAorICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGdsRm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGZib0Zvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgIHJ4OjpNaXBHZW5l
cmF0aW9uRnVuY3Rpb24gbWlwR2VuLAorICAgICAgICAgICAgICAgICAgICAgY29uc3Qgcng6OkZh
c3RDb3B5RnVuY3Rpb25NYXAgJmZhc3RDb3B5RnVuY3Rpb25zLAorICAgICAgICAgICAgICAgICAg
ICAgcng6OkNvbG9yUmVhZEZ1bmN0aW9uIGNvbG9yUmVhZCwKKyAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBjb21wb25lbnRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHJlZEJp
dHMsCisgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZ3JlZW5CaXRzLAorICAgICAgICAgICAg
ICAgICAgICAgR0x1aW50IGJsdWVCaXRzLAorICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGFs
cGhhQml0cywKKyAgICAgICAgICAgICAgICAgICAgIEdMdWludCBkZXB0aEJpdHMsCisgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgc3RlbmNpbEJpdHMpOwogCiAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCAmR2V0KElEIGlkKTsKIApAQCAtNTIsNyArNTMsNyBAQCBzdHJ1Y3QgRm9ybWF0IGZpbmFs
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgcng6OkNvbG9yUmVhZEZ1bmN0aW9uIGNvbG9yUmVh
ZEZ1bmN0aW9uOwogCiAgICAgLy8gQSBtYXAgZnJvbSBhIGdsOjpGb3JtYXRUeXBlIHRvIGEgZmFz
dCBwaXhlbCBjb3B5IGZ1bmN0aW9uIGZvciB0aGlzIGZvcm1hdC4KLSAgICByeDo6RmFzdENvcHlG
dW5jdGlvbk1hcCBmYXN0Q29weUZ1bmN0aW9uczsKKyAgICBjb25zdCByeDo6RmFzdENvcHlGdW5j
dGlvbk1hcCAmZmFzdENvcHlGdW5jdGlvbnM7CiAKICAgICBHTGVudW0gY29tcG9uZW50VHlwZTsK
IApAQCAtNjQsNiArNjUsMzUgQEAgc3RydWN0IEZvcm1hdCBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5
YWJsZQogICAgIEdMdWludCBzdGVuY2lsQml0czsKIH07CiAKK2NvbnN0ZXhwciBGb3JtYXQ6OkZv
cm1hdChJRCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZ2xGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZib0Zvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICByeDo6TWlwR2VuZXJhdGlvbkZ1bmN0aW9uIG1pcEdlbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCByeDo6RmFzdENvcHlGdW5jdGlvbk1hcCAmZmFzdENvcHlGdW5j
dGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgcng6OkNvbG9yUmVhZEZ1bmN0aW9uIGNv
bG9yUmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY29tcG9uZW50VHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcmVkQml0cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgZ3JlZW5CaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBibHVlQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYWxwaGFCaXRz
LAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBkZXB0aEJpdHMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHN0ZW5jaWxCaXRzKQorICAgIDogaWQoaWQpLAorICAgICAg
Z2xJbnRlcm5hbEZvcm1hdChnbEZvcm1hdCksCisgICAgICBmYm9JbXBsZW1lbnRhdGlvbkludGVy
bmFsRm9ybWF0KGZib0Zvcm1hdCksCisgICAgICBtaXBHZW5lcmF0aW9uRnVuY3Rpb24obWlwR2Vu
KSwKKyAgICAgIGNvbG9yUmVhZEZ1bmN0aW9uKGNvbG9yUmVhZCksCisgICAgICBmYXN0Q29weUZ1
bmN0aW9ucyhmYXN0Q29weUZ1bmN0aW9ucyksCisgICAgICBjb21wb25lbnRUeXBlKGNvbXBvbmVu
dFR5cGUpLAorICAgICAgcmVkQml0cyhyZWRCaXRzKSwKKyAgICAgIGdyZWVuQml0cyhncmVlbkJp
dHMpLAorICAgICAgYmx1ZUJpdHMoYmx1ZUJpdHMpLAorICAgICAgYWxwaGFCaXRzKGFscGhhQml0
cyksCisgICAgICBkZXB0aEJpdHMoZGVwdGhCaXRzKSwKKyAgICAgIHN0ZW5jaWxCaXRzKHN0ZW5j
aWxCaXRzKQoreworfQorCiB9ICAvLyBuYW1lc3BhY2UgYW5nbGUKIAogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL0Zvcm1hdF9JRF9hdXRvZ2VuLmlubCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9Gb3JtYXRfSURfYXV0b2dlbi5p
bmwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0
X0lEX2F1dG9nZW4uaW5sCmluZGV4IGRlZWUxZmVhMTAwLi41YzAxYjUwMGY1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdF9J
RF9hdXRvZ2VuLmlubAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvRm9ybWF0X0lEX2F1dG9nZW4uaW5sCkBAIC01MCw5ICs1MCwxMyBAQCBlbnVtIGNs
YXNzIEZvcm1hdDo6SUQKICAgICBCOEc4UjhBOF9VTk9STSwKICAgICBCOEc4UjhYOF9VTk9STSwK
ICAgICBCQzFfUkdCQV9VTk9STV9CTE9DSywKKyAgICBCQzFfUkdCQV9VTk9STV9TUkdCX0JMT0NL
LAogICAgIEJDMV9SR0JfVU5PUk1fQkxPQ0ssCisgICAgQkMxX1JHQl9VTk9STV9TUkdCX0JMT0NL
LAogICAgIEJDMl9SR0JBX1VOT1JNX0JMT0NLLAorICAgIEJDMl9SR0JBX1VOT1JNX1NSR0JfQkxP
Q0ssCiAgICAgQkMzX1JHQkFfVU5PUk1fQkxPQ0ssCisgICAgQkMzX1JHQkFfVU5PUk1fU1JHQl9C
TE9DSywKICAgICBEMTZfVU5PUk0sCiAgICAgRDI0X1VOT1JNLAogICAgIEQyNF9VTk9STV9TOF9V
SU5ULApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL0Zvcm1hdF9hdXRvZ2VuLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9Gb3JtYXRfYXV0b2dlbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDZjYjUxOThhOGNmLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0X2F1dG9nZW4uY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTM3MiArMCwwIEBACi0vLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElU
LgotLy8gR2VuZXJhdGVkIGJ5IGdlbl9hbmdsZV9mb3JtYXRfdGFibGUucHkgdXNpbmcgZGF0YSBm
cm9tIGFuZ2xlX2Zvcm1hdF9kYXRhLmpzb24KLS8vCi0vLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBBTkdMRSBGb3JtYXQgdGFi
bGU6Ci0vLyAgIFF1ZXJpZXMgZm9yIHR5cGVkIGZvcm1hdCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBB
TkdMRSBmb3JtYXQgZW51bS4KLQotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5o
IgotCi0jaW5jbHVkZSAiaW1hZ2VfdXRpbC9jb3B5aW1hZ2UuaCIKLSNpbmNsdWRlICJpbWFnZV91
dGlsL2dlbmVyYXRlbWlwLmgiCi0jaW5jbHVkZSAiaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaCIKLQot
bmFtZXNwYWNlIGFuZ2xlCi17Ci0KLS8vIHN0YXRpYwotY29uc3QgRm9ybWF0ICZGb3JtYXQ6Okdl
dChJRCBpZCkKLXsKLSAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0jcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZXhpdC10aW1l
LWRlc3RydWN0b3JzIgotICAgIHN3aXRjaCAoaWQpCi0gICAgewotICAgICAgICBjYXNlIElEOjpB
MTZfRkxPQVQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhJRDo6QTE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0FMUEhBMTZGX0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9B
TFBIQTE2Rl9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJh
dGVNaXA8QTE2Rj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENv
bG9yPEExNkYsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAs
IDE2LCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgSUQ6OkEzMl9GTE9BVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBpbmZvKElEOjpBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfQUxQSEEzMkZfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0FMUEhBMzJGX0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHZW5lcmF0ZU1pcDxBMzJGPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZWFkQ29sb3I8QTMyRiwgR0xmbG9hdD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwgMCwgMCwgMzIsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBJRDo6QThfVU5PUk06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfQUxQSEE4X0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9BTFBIQThfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdlbmVyYXRlTWlwPEE4PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBSZWFkQ29sb3I8QTgsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgOCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4g
aW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpBU1RDXzEweDEwX1NSR0JfQkxPQ0s6
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNU
Q18xMHgxMF9TUkdCX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4MTBfS0hSLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENf
MTB4MTBfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOwotICAg
ICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6QVNUQ18x
MHgxMF9VTk9STV9CTE9DSzoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKElEOjpBU1RDXzEweDEwX1VOT1JNX0JMT0NLLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFfQVNU
Q18xMHgxMF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7Ci0g
ICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpBU1RD
XzEweDVfU1JHQl9CTE9DSzoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKElEOjpBU1RDXzEweDVfU1JHQl9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hS
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTB4NV9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05P
Uk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwg
MCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIElEOjpBU1RDXzEweDVfVU5PUk1fQkxPQ0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ18xMHg1X1VOT1JNX0JMT0NLLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEw
eDVfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNT
RURfUkdCQV9BU1RDXzEweDVfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JN
QUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAs
IDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBJRDo6QVNUQ18xMHg2X1NSR0JfQkxPQ0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ18xMHg2X1NSR0JfQkxPQ0ssCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q18xMHg2X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBJRDo6QVNUQ18xMHg2X1VOT1JNX0JMT0NLOgotICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfMTB4Nl9VTk9STV9CTE9D
SywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JH
QkFfQVNUQ18xMHg2X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg2X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5T
SUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
LCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgSUQ6OkFTVENfMTB4OF9TUkdCX0JMT0NLOgotICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfMTB4OF9TUkdCX0JMT0NLLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhf
QUxQSEE4X0FTVENfMTB4OF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwot
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OkFTVENfMTB4OF9VTk9STV9CTE9DSzoKLSAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzEweDhf
VU5PUk1fQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09N
UFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIElEOjpBU1RDXzEyeDEwX1NSR0JfQkxPQ0s6Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ18xMngxMF9T
UkdCX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hS
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAg
cmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6QVNUQ18xMngxMF9VTk9S
TV9CTE9DSzoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZv
KElEOjpBU1RDXzEyeDEwX1VOT1JNX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9L
SFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAg
ICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpBU1RDXzEyeDEyX1NS
R0JfQkxPQ0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhJRDo6QVNUQ18xMngxMl9TUkdCX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hSLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTJ4MTJfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJ
WkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAsIDAsIDAs
IDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJ
RDo6QVNUQ18xMngxMl9VTk9STV9CTE9DSzoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzEyeDEyX1VOT1JNX0JMT0NLLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEy
X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VE
X1JHQkFfQVNUQ18xMngxMl9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1B
TElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwg
MCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IElEOjpBU1RDXzR4NF9TUkdCX0JMT0NLOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfNHg0X1NSR0JfQkxPQ0ssCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180
eDRfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAw
LCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgSUQ6OkFTVENfNHg0X1VOT1JNX0JMT0NLOgotICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfNHg0X1VOT1JNX0JMT0NLLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RD
XzR4NF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJF
U1NFRF9SR0JBX0FTVENfNHg0X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAw
LCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgSUQ6OkFTVENfNXg0X1NSR0JfQkxPQ0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ181eDRfU1JHQl9CTE9DSywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzV4NF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJ
R05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs
IDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBJRDo6QVNUQ181eDRfVU5PUk1fQkxPQ0s6Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ181eDRfVU5PUk1fQkxPQ0ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FT
VENfNXg0X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01Q
UkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9O
T1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIDAs
IDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBJRDo6QVNUQ181eDVfU1JHQl9CTE9DSzoKLSAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzV4NV9TUkdCX0JMT0NLLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfNXg1X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NV9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VO
U0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIElEOjpBU1RDXzV4NV9VTk9STV9CTE9DSzoKLSAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzV4NV9VTk9STV9CTE9DSywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JHQkFf
QVNUQ181eDVfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NP
TVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVE
X05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwg
MCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIElEOjpBU1RDXzZ4NV9TUkdCX0JMT0NLOgotICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfNng1X1NSR0JfQkxPQ0ssCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ182eDVfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
VU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgSUQ6OkFTVENfNng1X1VOT1JNX0JMT0NLOgotICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfNng1X1VOT1JNX0JMT0NL
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdC
QV9BU1RDXzZ4NV9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Q09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAw
LCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgSUQ6OkFTVENfNng2X1NSR0JfQkxPQ0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ182eDZfU1JHQl9CTE9DSywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhB
OF9BU1RDXzZ4Nl9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBJRDo6QVNUQ182eDZfVU5PUk1fQkxPQ0s6Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ182eDZfVU5PUk1fQkxP
Q0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9S
R0JBX0FTVENfNng2X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJ
R05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs
IDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBJRDo6QVNUQ184eDVfU1JHQl9CTE9DSzoKLSAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzh4NV9TUkdCX0JMT0NLLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfOHg1X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9LSFIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIElEOjpBU1RDXzh4NV9VTk9STV9CTE9DSzoKLSAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpBU1RDXzh4NV9VTk9STV9C
TE9DSywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VE
X1JHQkFfQVNUQ184eDVfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VO
U0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIElEOjpBU1RDXzh4Nl9TUkdCX0JMT0NLOgotICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfOHg2X1NSR0JfQkxPQ0ssCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ184eDZfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OkFTVENfOHg2X1VOT1JNX0JMT0NLOgotICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkFTVENfOHg2X1VOT1JN
X0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNT
RURfUkdCQV9BU1RDXzh4Nl9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
VU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAwLCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgSUQ6OkFTVENfOHg4X1NSR0JfQkxPQ0s6Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ184eDhfU1JHQl9CTE9DSywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NSR0I4
X0FMUEhBOF9BU1RDXzh4OF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6QVNUQ184eDhfVU5PUk1fQkxPQ0s6Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QVNUQ184eDhfVU5P
Uk1fQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJF
U1NFRF9SR0JBX0FTVENfOHg4X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBJRDo6QjRHNFI0QTRfVU5PUk06Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QjRHNFI0QTRfVU5PUk0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQkdSQTRfQU5HTEVYLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEE0UjRHNEI0PiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8QTRSNEc0QjQsIEdMZmxvYXQ+LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCwgNCwgNCwgNCwgMCwgMCk7
Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpC
NUc1UjVBMV9VTk9STToKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1h
dCBpbmZvKElEOjpCNUc1UjVBMV9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9CR1I1X0ExX0FOR0xFWCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9SR0I1X0ExLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdlbmVyYXRlTWlwPEExUjVHNUI1PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZWFkQ29sb3I8QTFSNUc1QjUsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgNSwgNSwgNSwgMSwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1
cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpCNUc2UjVfVU5PUk06Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6QjVHNlI1X1VO
T1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0JHUjU2NV9BTkdM
RVgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCNTY1LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEI1RzZSNT4sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPEI1RzZSNSwgR0xm
bG9hdD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURf
Tk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LCA2LCA1
LCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgSUQ6OkI4RzhSOEE4X1VOT1JNOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oSUQ6OkI4RzhSOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0JHUkE4X0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9CR1JBOF9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2VuZXJhdGVNaXA8QjhHOFI4QTg+LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlYWRDb2xvcjxCOEc4UjhBOCwgR0xmbG9hdD4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCA4LCA4LCA4LCAwLCAwKTsKLSAgICAgICAg
ICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OkI4RzhSOFg4X1VO
T1JNOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6
OkI4RzhSOFg4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0JHUkE4X0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9CR1JB
OF9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8
QjhHOFI4WDg+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xv
cjxCOEc4UjhYOCwgR0xmbG9hdD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA4LCA4LCA4LCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OkJDMV9SR0JBX1VOT1JNX0JMT0NLOgotICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkJDMV9SR0JBX1VOT1JN
X0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDFfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBJRDo6QkMxX1JHQl9VTk9STV9CTE9DSzoKLSAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpCQzFfUkdCX1VOT1JNX0JMT0NL
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdC
X1MzVENfRFhUMV9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Q09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAw
LCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgSUQ6OkJDMl9SR0JBX1VOT1JNX0JMT0NLOgotICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkJDMl9SR0JBX1VOT1JNX0JMT0NLLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDNfQU5HTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAw
LCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgSUQ6OkJDM19SR0JBX1VOT1JNX0JMT0NLOgotICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkJDM19SR0JBX1VOT1JNX0JMT0NLLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDVfQU5HTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAw
LCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgSUQ6OkQxNl9VTk9STToKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IEZvcm1hdCBpbmZvKElEOjpEMTZfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfREVQVEhfQ09NUE9ORU5UMTYsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfREVQVEhfQ09NUE9ORU5UMTYsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMCwgMCwgMCwgMCwgMTYsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBJRDo6RDI0X1VOT1JNOgotICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkQyNF9VTk9STSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9ERVBUSF9DT01QT05FTlQyNCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9ERVBUSF9DT01QT05FTlQyNCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCAwLCAwLCAwLCAyNCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpEMjRfVU5PUk1fUzhfVUlOVDoKLSAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpEMjRfVU5PUk1fUzhf
VUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ERVBUSDI0X1NU
RU5DSUw4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RFUFRIMjRf
U1RFTkNJTDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMjQsIDgpOwotICAg
ICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6RDMyX0ZM
T0FUOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6
OkQzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ERVBU
SF9DT01QT05FTlQzMkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
REVQVEhfQ09NUE9ORU5UMzJGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAzMiwgMCk7Ci0gICAgICAg
ICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpEMzJfRkxPQVRf
UzhYMjRfVUlOVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBp
bmZvKElEOjpEMzJfRkxPQVRfUzhYMjRfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9ERVBUSDMyRl9TVEVOQ0lMOCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9ERVBUSDMyRl9TVEVOQ0lMOCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
RkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwg
MzIsIDgpOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBJRDo6RDMyX1VOT1JNOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oSUQ6OkQzMl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsIDAsIDAsIDAsIDMyLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgSUQ6OkVBQ19SMTFHMTFfU05PUk1fQkxPQ0s6Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6RUFDX1IxMUcxMV9TTk9S
TV9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVT
U0VEX1NJR05FRF9SRzExX0VBQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU0lH
TkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEs
IDExLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgSUQ6OkVBQ19SMTFHMTFfVU5PUk1fQkxPQ0s6Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6RUFDX1IxMUcxMV9VTk9STV9CTE9D
SywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JH
MTFfRUFDLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNT
RURfUkcxMV9FQUMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTEsIDExLCAwLCAwLCAwLCAwKTsK
LSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OkVB
Q19SMTFfU05PUk1fQkxPQ0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBG
b3JtYXQgaW5mbyhJRDo6RUFDX1IxMV9TTk9STV9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NJR05FRF9SMTFfRUFDLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDExLCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJl
dHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OkVBQ19SMTFfVU5PUk1fQkxP
Q0s6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6
RUFDX1IxMV9VTk9STV9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9DT01QUkVTU0VEX1IxMV9FQUMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfQ09NUFJFU1NFRF9SMTFfRUFDLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLCAw
LCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgSUQ6OkVUQzJfUjhHOEI4QTFfU1JHQl9CTE9DSzoKLSAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpFVEMyX1I4RzhCOEExX1NSR0JfQkxP
Q0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9T
UkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOCwgOCwgOCwgMSwgMCwgMCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpFVEMyX1I4RzhCOEExX1VO
T1JNX0JMT0NLOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGlu
Zm8oSUQ6OkVUQzJfUjhHOEI4QTFfVU5PUk1fQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRD
MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1JH
QjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgs
IDgsIDEsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBJRDo6RVRDMl9SOEc4QjhBOF9TUkdCX0JMT0NLOgotICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkVUQzJfUjhHOEI4QThfU1JHQl9CTE9D
SywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9FVEMyX0VBQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA4LCA4LCA4LCA4LCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgSUQ6OkVUQzJfUjhHOEI4QThfVU5PUk1fQkxPQ0s6Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6RVRDMl9SOEc4QjhB
OF9VTk9STV9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9D
T01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOCwgOCwgOCwgOCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIElEOjpFVEMyX1I4RzhCOF9TUkdCX0JMT0NLOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkVUQzJfUjhHOEI4X1NSR0Jf
QkxPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09NUFJFU1NF
RF9TUkdCOF9FVEMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NP
TVBSRVNTRURfU1JHQjhfRVRDMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFM
SVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCA4LCA4LCAwLCAw
LCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
SUQ6OkVUQzJfUjhHOEI4X1VOT1JNX0JMT0NLOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OkVUQzJfUjhHOEI4X1VOT1JNX0JMT0NLLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTVBSRVNTRURfUkdCOF9F
VEMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDgsIDAsIDAsIDApOwotICAgICAgICAg
ICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6TDE2QTE2X0ZMT0FU
OgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6Okwx
NkExNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9MVU1J
TkFOQ0VfQUxQSEExNkZfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2VuZXJhdGVNaXA8TDE2QTE2Rj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmVhZENvbG9yPEwxNkExNkYsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsIDAsIDAsIDE2LCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZv
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OkwxNl9GTE9BVDoKLSAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpMMTZfRkxPQVQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTFVNSU5BTkNFMTZGX0VYVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9MVU1JTkFOQ0UxNkZfRVhULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEwxNkY+LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxMMTZGLCBHTGZsb2F0
PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwKTsKLSAgICAg
ICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OkwzMkEzMl9G
TE9BVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElE
OjpMMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
TFVNSU5BTkNFX0FMUEhBMzJGX0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEwzMkEzMkY+LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxMMzJBMzJGLCBHTGZsb2F0PiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAwLCAwLCAzMiwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4g
aW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpMMzJfRkxPQVQ6Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6TDMyX0ZMT0FULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0xVTUlOQU5DRTMyRl9FWFQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTFVNSU5BTkNFMzJGX0VYVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxMMzJGPiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8TDMyRiwgR0xm
bG9hdD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgMCk7Ci0g
ICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpMOEE4
X1VOT1JNOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8o
SUQ6Okw4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
TFVNSU5BTkNFOF9BTFBIQThfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0xVTUlOQU5DRThfQUxQSEE4X0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHZW5lcmF0ZU1pcDxMOEE4PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZWFkQ29sb3I8TDhBOCwgR0xmbG9hdD4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLCAwLCAwLCA4LCAwLCAwKTsKLSAgICAgICAgICAgIHJl
dHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6Okw4X1VOT1JNOgotICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6Okw4X1VOT1JNLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0xVTUlOQU5DRThfRVhULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0xVTUlOQU5DRThfRVhULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPEw4PiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8TDgsIEdMZmxvYXQ+
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1B
TElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwg
MCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IElEOjpOT05FOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGlu
Zm8oSUQ6Ok5PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9O
RSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBJRDo6UjEwRzEwQjEwQTJfVUlOVDoKLSAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMTBHMTBCMTBBMl9VSU5ULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjEwX0EyVUksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCMTBfQTJVSSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTBHMTBCMTBBMj4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxMEcxMEIxMEEyLCBHTHVp
bnQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lO
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMCwgMTAsIDEwLCAyLCAw
LCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
SUQ6OlIxMEcxMEIxMEEyX1VOT1JNOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGluZm8oSUQ6OlIxMEcxMEIxMEEyX1VOT1JNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHQjEwX0EyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQjEwX0EyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdlbmVyYXRlTWlwPFIxMEcxMEIxMEEyPiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSZWFkQ29sb3I8UjEwRzEwQjEwQTIsIEdMZmxvYXQ+LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAsIDEwLCAxMCwgMiwgMCwgMCk7Ci0g
ICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSMTFH
MTFCMTBfRkxPQVQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyhJRDo6UjExRzExQjEwX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1IxMUZfRzExRl9CMTBGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1IxMUZfRzExRl9CMTBGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdlbmVyYXRlTWlwPFIxMUcxMUIxMEY+LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTFHMTFCMTBGLCBHTGZsb2F0PiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxMSwgMTEsIDEwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVy
biBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlIxNkcxNkIxNkExNl9GTE9BVDoK
LSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMTZH
MTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQTE2RiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZG
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcx
NkIxNkExNkY+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xv
cjxSMTZHMTZCMTZBMTZGLCBHTGZsb2F0PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAx
NiwgMTYsIDE2LCAxNiwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIElEOjpSMTZHMTZCMTZBMTZfU0lOVDoKLSAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMTZHMTZCMTZBMTZfU0lOVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZJLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2QjE2QTE2Uz4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNkcxNkIxNkExNlMsIEdM
aW50PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDE2LCAxNiwgMTYsIDAsIDApOwot
ICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjE2
RzE2QjE2QTE2X1NOT1JNOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oSUQ6OlIxNkcxNkIxNkExNl9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBMTZfU05PUk1fRVhULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1JHQkExNl9TTk9STV9FWFQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2QjE2QTE2Uz4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNkcxNkIxNkExNlMsIEdMZmxv
YXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NJR05FRF9OT1JN
QUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LCAxNiwgMTYs
IDE2LCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgSUQ6OlIxNkcxNkIxNkExNl9VSU5UOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcxNkIxNkExNl9VSU5ULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNlVJLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNlVJLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNkIxNkExNj4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNkcxNkIxNkExNiwgR0x1aW50PiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDE2LCAxNiwgMTYsIDAsIDApOwot
ICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjE2
RzE2QjE2QTE2X1VOT1JNOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oSUQ6OlIxNkcxNkIxNkExNl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBMTZfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQkExNl9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2QjE2QTE2PiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2RzE2QjE2QTE2LCBHTGZsb2F0PiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LCAxNiwgMTYsIDE2LCAwLCAwKTsK
LSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlIx
NkcxNkIxNl9GTE9BVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1h
dCBpbmZvKElEOjpSMTZHMTZCMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfUkdCMTZGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1JHQjE2RiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0
ZU1pcDxSMTZHMTZCMTZGPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS
ZWFkQ29sb3I8UjE2RzE2QjE2RiwgR0xmbG9hdD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTYsIDE2LCAxNiwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIElEOjpSMTZHMTZCMTZfU0lOVDoKLSAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMTZHMTZCMTZfU0lOVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0IxNkksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCMTZJLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNkIxNlM+LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZHMTZCMTZTLCBHTGludD4sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDE2LCAxNiwgMTYsIDAsIDAsIDApOwotICAgICAgICAgICAg
cmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjE2RzE2QjE2X1NOT1JN
OgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIx
NkcxNkIxNl9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0IxNl9TTk9STV9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCMTZfU05PUk1fRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdl
bmVyYXRlTWlwPFIxNkcxNkIxNlM+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlYWRDb2xvcjxSMTZHMTZCMTZTLCBHTGZsb2F0PiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAxNiwgMTYsIDE2LCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJl
dHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlIxNkcxNkIxNl9VSU5UOgot
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcx
NkIxNl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjE2
VUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCMTZVSSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTZCMTY+
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZHMTZC
MTYsIEdMdWludD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5T
SUdORURfSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LCAxNiwg
MTYsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBJRDo6UjE2RzE2QjE2X1VOT1JNOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcxNkIxNl9VTk9STSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0IxNl9FWFQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfUkdCMTZfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkcxNkIxNj4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNkcxNkIxNiwgR0xmbG9hdD4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiwgMTYsIDE2LCAwLCAwLCAwKTsK
LSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlIx
NkcxNl9GTE9BVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBp
bmZvKElEOjpSMTZHMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkcxNkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkcx
NkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2
RzE2Rj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIx
NkcxNkYsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LCAxNiwgMCwg
MCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIElEOjpSMTZHMTZfU0lOVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBpbmZvKElEOjpSMTZHMTZfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9SRzE2SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SRzE2SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0
ZU1pcDxSMTZHMTZTPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFk
Q29sb3I8UjE2RzE2UywgR0xpbnQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiwgMTYs
IDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBJRDo6UjE2RzE2X1NOT1JNOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcxNl9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SRzE2X1NOT1JNX0VYVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SRzE2X1NOT1JNX0VYVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMTZHMTZTPiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2RzE2UywgR0xmbG9hdD4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDE2LCAwLCAwLCAwLCAwKTsKLSAg
ICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlIxNkcx
Nl9VSU5UOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8o
SUQ6OlIxNkcxNl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1JHMTZVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzE2VUks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2RzE2
PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2RzE2
LCBHTHVpbnQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lH
TkVEX0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNiwgMTYsIDAs
IDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBJRDo6UjE2RzE2X1VOT1JNOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGluZm8oSUQ6OlIxNkcxNl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SRzE2X0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9SRzE2X0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHZW5lcmF0ZU1pcDxSMTZHMTY+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlYWRDb2xvcjxSMTZHMTYsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMTYsIDE2LCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVy
biBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlIxNl9GTE9BVDoKLSAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMTZfRkxPQVQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjE2RiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SMTZGLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNkY+LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMTZGLCBHTGZsb2F0PiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxNiwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5m
bzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSMTZfU0lOVDoKLSAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMTZfU0lOVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SMTZJLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1IxNkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR2VuZXJhdGVNaXA8UjE2Uz4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVhZENvbG9yPFIxNlMsIEdMaW50PiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9JTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTYsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBJRDo6UjE2X1NOT1JNOgotICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNl9TTk9STSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SMTZfU05PUk1fRVhULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1IxNl9TTk9STV9FWFQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2Uz4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNlMsIEdMZmxvYXQ+LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAg
ICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlIxNl9VSU5UOgot
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNl9V
SU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IxNlVJLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IxNlVJLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIxNj4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIxNiwgR0x1aW50PiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAg
ICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjE2X1VOT1JNOgot
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIxNl9V
Tk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SMTZfRVhULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IxNl9FWFQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjE2PiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjE2LCBHTGZsb2F0PiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVE
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LCAwLCAwLCAwLCAwLCAw
KTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6
OlIzMkczMkIzMkEzMl9GTE9BVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBpbmZvKElEOjpSMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9SR0JBMzJGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdlbmVyYXRlTWlwPFIzMkczMkIzMkEzMkY+LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFJlYWRDb2xvcjxSMzJHMzJCMzJBMzJGLCBHTGZsb2F0PiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAzMiwgMzIsIDMyLCAzMiwgMCwgMCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSMzJHMzJCMzJBMzJfU0lO
VDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpS
MzJHMzJCMzJBMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SR0JBMzJJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEz
MkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMy
RzMyQjMyQTMyUz4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENv
bG9yPFIzMkczMkIzMkEzMlMsIEdMaW50PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9JTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIs
IDMyLCAzMiwgMzIsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBJRDo6UjMyRzMyQjMyQTMyX1VJTlQ6Ci0gICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjMyRzMyQjMyQTMyX1VJTlQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyVUksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyVUksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyRzMyQjMyQTMyPiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjMyRzMyQjMyQTMyLCBHTHVp
bnQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lO
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMiwgMzIsIDMyLCAzMiwg
MCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IElEOjpSMzJHMzJCMzJfRkxPQVQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBGb3JtYXQgaW5mbyhJRDo6UjMyRzMyQjMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1JHQjMyRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9SR0IzMkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R2VuZXJhdGVNaXA8UjMyRzMyQjMyRj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVhZENvbG9yPFIzMkczMkIzMkYsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDMyLCAzMiwgMzIsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjMyRzMyQjMyX1NJTlQ6Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjMyRzMyQjMyX1NJTlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCMzJJLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjMySSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSMzJHMzJCMzJTPiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjMyRzMyQjMyUywgR0xpbnQ+
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMiwgMzIsIDMyLCAwLCAwLCAwKTsKLSAgICAg
ICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlIzMkczMkIz
Ml9VSU5UOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8o
SUQ6OlIzMkczMkIzMl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1JHQjMyVUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdC
MzJVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxS
MzJHMzJCMzI+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xv
cjxSMzJHMzJCMzIsIEdMdWludD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfVU5TSUdORURfSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDMyLCAzMiwgMzIsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBJRDo6UjMyRzMyX0ZMT0FUOgotICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIzMkczMl9GTE9BVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzMyRiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SRzMyRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHZW5lcmF0ZU1pcDxSMzJHMzJGPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZWFkQ29sb3I8UjMyRzMyRiwgR0xmbG9hdD4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMzIsIDMyLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZv
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlIzMkczMl9TSU5UOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlIzMkczMl9TSU5ULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHMzJJLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHMzJJLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMkczMlM+LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMzJHMzJTLCBHTGludD4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDMyLCAzMiwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4g
aW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSMzJHMzJfVUlOVDoKLSAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMzJHMzJfVUlOVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzMyVUksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkczMlVJLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMkczMj4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIzMkczMiwgR0x1aW50PiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzIsIDMyLCAwLCAwLCAwLCAwKTsKLSAgICAg
ICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlIzMl9GTE9B
VDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpS
MzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjMyRiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SMzJGLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFIzMkY+LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSMzJGLCBHTGZsb2F0PiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAzMiwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAg
ICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSMzJfU0lOVDoKLSAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSMzJfU0lO
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SMzJJLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1IzMkksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyUz4sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFIzMlMsIEdMaW50PiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9JTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMzIsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGlu
Zm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjMyX1VJTlQ6Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjMyX1VJTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjMyVUksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUjMyVUksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjMyPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZWFkQ29sb3I8UjMyLCBHTHVpbnQ+LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAzMiwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5m
bzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSNEc0QjRBNF9VTk9STToKLSAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSNEc0QjRBNF9VTk9S
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBNCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBNCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmF0ZU1pcDxSNEc0QjRBND4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI0RzRCNEE0LCBHTGZsb2F0PiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJ
WkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQsIDQsIDQsIDQsIDAs
IDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJ
RDo6UjVHNUI1QTFfVU5PUk06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBG
b3JtYXQgaW5mbyhJRDo6UjVHNUI1QTFfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUkdCNV9BMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9SR0I1X0ExLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdl
bmVyYXRlTWlwPFI1RzVCNUExPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSZWFkQ29sb3I8UjVHNUI1QTEsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgNSwgNSwgNSwgMSwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4g
aW5mbzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSNUc2QjVfVU5PUk06Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjVHNkI1X1VOT1JN
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjU2NSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0I1NjUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjVHNkI1PiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjVHNkI1LCBHTGZsb2F0PiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVE
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDUsIDYsIDUsIDAsIDAsIDAp
OwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6
UjhHOEI4QThfU0lOVDoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1h
dCBpbmZvKElEOjpSOEc4QjhBOF9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1JHQkE4SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SR0JBOEksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVN
aXA8UjhHOEI4QThTPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFk
Q29sb3I8UjhHOEI4QThTLCBHTGludD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgs
IDgsIDgsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBJRDo6UjhHOEI4QThfU05PUk06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjhHOEI4QThfU05PUk0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThfU05PUk0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfUkdCQThfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOEI4QThTPiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOEI4QThTLCBHTGZsb2F0PiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9TSUdORURfTk9STUFMSVpFRCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCA4LCA4LCA4LCAwLCAwKTsKLSAg
ICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlI4RzhC
OEE4X1VJTlQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhJRDo6UjhHOEI4QThfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SR0JBOFVJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JH
QkE4VUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8
UjhHOEI4QTg+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xv
cjxSOEc4QjhBOCwgR0x1aW50PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9VTlNJR05FRF9JTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
OCwgOCwgOCwgOCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5mbzsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIElEOjpSOEc4QjhBOF9VTk9STToKLSAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4QjhBOD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmVhZENvbG9yPFI4RzhCOEE4LCBHTGZsb2F0PiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDgsIDgsIDAsIDApOwotICAgICAgICAg
ICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjhHOEI4QThfVU5P
Uk1fU1JHQjoKLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZv
KElEOjpSOEc4QjhBOF9VTk9STV9TUkdCLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1NSR0I4X0FMUEhBOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9TUkdCOF9BTFBIQTgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2VuZXJhdGVNaXA8UjhHOEI4QTg+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlYWRDb2xvcjxSOEc4QjhBOCwgR0xmbG9hdD4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA4LCA4LCA4LCA4LCAwLCAwKTsKLSAgICAgICAgICAgIHJl
dHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlI4RzhCOF9TSU5UOgotICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlI4RzhCOF9T
SU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjhJLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjhJLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4RzhCOFM+LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRDb2xvcjxSOEc4QjhTLCBHTGludD4sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5ULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDgsIDAsIDAsIDApOwotICAgICAgICAgICAg
cmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjhHOEI4X1NOT1JNOgot
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlI4RzhC
OF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0I4X1NO
T1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjhfU05PUk0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOEI4
Uz4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZENvbG9yPFI4RzhC
OFMsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NJ
R05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgs
IDgsIDgsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBJRDo6UjhHOEI4X1VJTlQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjhHOEI4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfUkdCOFVJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQjhVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHZW5lcmF0ZU1pcDxSOEc4Qjg+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlYWRDb2xvcjxSOEc4QjgsIEdMdWludD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDgsIDgsIDgsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0g
ICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjhHOEI4X1VOT1JNOgotICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlI4RzhCOF9VTk9STSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0I4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQjgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhHOEI4PiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhHOEI4LCBHTGZsb2F0PiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDgsIDgsIDgsIDAsIDAsIDApOwotICAgICAgICAg
ICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjhHOEI4X1VOT1JN
X1NSR0I6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJ
RDo6UjhHOEI4X1VOT1JNX1NSR0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfU1JHQjgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU1JH
QjgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGVNaXA8UjhH
OEI4PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjhH
OEI4LCBHTGZsb2F0PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDgsIDgsIDgsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBJRDo6UjhHOF9TSU5UOgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlI4RzhfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SRzhJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1JHOEksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2Vu
ZXJhdGVNaXA8UjhHOFM+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl
YWRDb2xvcjxSOEc4UywgR0xpbnQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LCA4LCAw
LCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgSUQ6OlI4RzhfU05PUk06Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBGb3JtYXQgaW5mbyhJRDo6UjhHOF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9SRzhfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfUkc4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdlbmVyYXRlTWlwPFI4RzhTPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBSZWFkQ29sb3I8UjhHOFMsIEdMZmxvYXQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1NJR05FRF9OT1JNQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDgsIDgsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjhHOF9VSU5UOgotICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlI4RzhfVUlOVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRzhVSSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SRzhVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZWFkQ29sb3I8UjhHOCwgR0x1aW50PiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOCwgOCwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5m
bzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSOEc4X1VOT1JNOgotICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlI4RzhfVU5PUk0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkc4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1JHOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHZW5lcmF0ZU1pcDxSOEc4PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBSZWFkQ29sb3I8UjhHOCwgR0xmbG9hdD4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA4LCA4LCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJl
dHVybiBpbmZvOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgSUQ6OlI4X1NJTlQ6Ci0gICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjhfU0lOVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SOEksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjhJLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI4Uz4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUmVhZENvbG9yPFI4UywgR0xpbnQ+LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA4LCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgSUQ6OlI4X1NOT1JNOgotICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlI4X1NOT1JNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1I4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1I4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdlbmVyYXRlTWlwPFI4Uz4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUmVhZENvbG9yPFI4UywgR0xmbG9hdD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOCwgMCwgMCwgMCwgMCwgMCk7Ci0gICAgICAgICAgICByZXR1cm4gaW5m
bzsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElEOjpSOF9VSU5UOgotICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oSUQ6OlI4X1VJTlQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUjhVSSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SOFVJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdlbmVyYXRlTWlwPFI4PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSZWFkQ29sb3I8UjgsIEdMdWludD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfVU5TSUdORURfSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDgsIDAsIDAsIDAsIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UjhfVU5PUk06Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6UjhfVU5PUk0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUjgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfUjgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2Vu
ZXJhdGVNaXA8Ujg+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRD
b2xvcjxSOCwgR0xmbG9hdD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfVU5TSUdORURfTk9STUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA4LCAwLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgICAgIHJldHVybiBpbmZvOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgSUQ6OlI5RzlCOUU1X1NIQVJFREVYUDoKLSAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpSOUc5QjlFNV9TSEFSRURFWFAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCOV9FNSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0I5X0U1LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlTWlwPFI5RzlCOUU1PiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkQ29sb3I8UjlHOUI5RTUsIEdMZmxvYXQ+
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0ZMT0FULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDksIDksIDksIDAsIDAsIDApOwotICAgICAg
ICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBJRDo6UzhfVUlOVDoK
LSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKElEOjpTOF9V
SU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NURU5DSUxfSU5E
RVg4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NURU5DSUxfSU5E
RVg4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwgMCwgMCwgMCwgMCwgOCk7Ci0gICAgICAgICAgICByZXR1
cm4gaW5mbzsKLSAgICAgICAgfQotCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBVTlJF
QUNIQUJMRSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIC8vIGNsYW5nLWZvcm1h
dCBvbgotCi0gICAgc3RhdGljIGNvbnN0IEZvcm1hdCBub25lSW5mbyhJRDo6Tk9ORSwgR0xfTk9O
RSwgR0xfTk9ORSwgbnVsbHB0ciwgbnVsbHB0ciwgR0xfTk9ORSwgMCwgMCwgMCwgMCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDApOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHBvcAotICAgIHJldHVybiBub25lSW5mbzsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGFuZ2xl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvRm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmIzMDY0MjRlOTQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRm9ybWF0X3Rh
YmxlX2F1dG9nZW4uY3BwCkBAIC0wLDAgKzEsMTYxIEBACisvLyBHRU5FUkFURUQgRklMRSAtIERP
IE5PVCBFRElULgorLy8gR2VuZXJhdGVkIGJ5IGdlbl9hbmdsZV9mb3JtYXRfdGFibGUucHkgdXNp
bmcgZGF0YSBmcm9tIGFuZ2xlX2Zvcm1hdF9kYXRhLmpzb24KKy8vCisvLyBDb3B5cmlnaHQgMjAx
NiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBBTkdMRSBG
b3JtYXQgdGFibGU6CisvLyAgIFF1ZXJpZXMgZm9yIHR5cGVkIGZvcm1hdCBpbmZvcm1hdGlvbiBm
cm9tIHRoZSBBTkdMRSBmb3JtYXQgZW51bS4KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L0Zvcm1hdC5oIgorCisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9jb3B5aW1hZ2UuaCIKKyNpbmNsdWRl
ICJpbWFnZV91dGlsL2dlbmVyYXRlbWlwLmgiCisjaW5jbHVkZSAiaW1hZ2VfdXRpbC9sb2FkaW1h
Z2UuaCIKKworbmFtZXNwYWNlIGFuZ2xlCit7CisKK3N0YXRpYyBjb25zdGV4cHIgcng6OkZhc3RD
b3B5RnVuY3Rpb25NYXA6OkVudHJ5IEJHUkFFbnRyeSA9IHtHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIENvcHlCR1JBOFRvUkdCQTh9Oworc3RhdGljIGNvbnN0ZXhwciByeDo6RmFzdENv
cHlGdW5jdGlvbk1hcCBCR1JBQ29weUZ1bmN0aW9ucyA9IHsmQkdSQUVudHJ5LCAxfTsKK3N0YXRp
YyBjb25zdGV4cHIgcng6OkZhc3RDb3B5RnVuY3Rpb25NYXAgTm9Db3B5RnVuY3Rpb25zOworCitj
b25zdGV4cHIgRm9ybWF0IGdfZm9ybWF0SW5mb1RhYmxlW10gPSB7CisgICAgLy8gY2xhbmctZm9y
bWF0IG9mZgorICAgIHsgRm9ybWF0OjpJRDo6Tk9ORSwgR0xfTk9ORSwgR0xfTk9ORSwgbnVsbHB0
ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBHTF9OT05FLCAwLCAwLCAwLCAwLCAwLCAwIH0s
CisgICAgeyBGb3JtYXQ6OklEOjpBMTZfRkxPQVQsIEdMX0FMUEhBMTZGX0VYVCwgR0xfQUxQSEEx
NkZfRVhULCBHZW5lcmF0ZU1pcDxBMTZGPiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8QTE2
RiwgR0xmbG9hdD4sIEdMX0ZMT0FULCAwLCAwLCAwLCAxNiwgMCwgMCB9LAorICAgIHsgRm9ybWF0
OjpJRDo6QTMyX0ZMT0FULCBHTF9BTFBIQTMyRl9FWFQsIEdMX0FMUEhBMzJGX0VYVCwgR2VuZXJh
dGVNaXA8QTMyRj4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPEEzMkYsIEdMZmxvYXQ+LCBH
TF9GTE9BVCwgMCwgMCwgMCwgMzIsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OkE4X1VOT1JN
LCBHTF9BTFBIQThfRVhULCBHTF9BTFBIQThfRVhULCBHZW5lcmF0ZU1pcDxBOD4sIE5vQ29weUZ1
bmN0aW9ucywgUmVhZENvbG9yPEE4LCBHTGZsb2F0PiwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwg
MCwgMCwgMCwgOCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ18xMHgxMF9TUkdCX0JM
T0NLLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUiwgR0xfQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9u
cywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAor
ICAgIHsgRm9ybWF0OjpJRDo6QVNUQ18xMHgxMF9VTk9STV9CTE9DSywgR0xfQ09NUFJFU1NFRF9S
R0JBX0FTVENfMTB4MTBfS0hSLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFIsIG51
bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwg
MCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ18xMHg1X1NSR0JfQkxP
Q0ssIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIsIEdMX0NPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywg
bnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAg
IHsgRm9ybWF0OjpJRDo6QVNUQ18xMHg1X1VOT1JNX0JMT0NLLCBHTF9DT01QUkVTU0VEX1JHQkFf
QVNUQ18xMHg1X0tIUiwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4NV9LSFIsIG51bGxwdHIs
IE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwg
MCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ18xMHg2X1NSR0JfQkxPQ0ssIEdM
X0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFIsIEdMX0NPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTB4Nl9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0
ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9y
bWF0OjpJRDo6QVNUQ18xMHg2X1VOT1JNX0JMT0NLLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18x
MHg2X0tIUiwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIsIG51bGxwdHIsIE5vQ29w
eUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwg
MCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ18xMHg4X1NSR0JfQkxPQ0ssIEdMX0NPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFIsIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfMTB4OF9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xf
VU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJ
RDo6QVNUQ18xMHg4X1VOT1JNX0JMT0NLLCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tI
UiwgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4OF9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0
aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9
LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ18xMngxMF9TUkdCX0JMT0NLLCBHTF9DT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUiwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ18xMngxMF9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5T
SUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6
QVNUQ18xMngxMF9VTk9STV9CTE9DSywgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hS
LCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0
aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9
LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ18xMngxMl9TUkdCX0JMT0NLLCBHTF9DT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEyX0tIUiwgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ18xMngxMl9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5T
SUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6
QVNUQ18xMngxMl9VTk9STV9CTE9DSywgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTJ4MTJfS0hS
LCBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0
aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9
LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ180eDRfU1JHQl9CTE9DSywgR0xfQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ180eDRfS0hSLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RD
XzR4NF9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURf
Tk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ180
eDRfVU5PUk1fQkxPQ0ssIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFIsIEdMX0NPTVBS
RVNTRURfUkdCQV9BU1RDXzR4NF9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0
ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9y
bWF0OjpJRDo6QVNUQ181eDRfU1JHQl9CTE9DSywgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ181eDRfS0hSLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIsIG51
bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwg
MCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ181eDRfVU5PUk1fQkxP
Q0ssIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NF9LSFIsIEdMX0NPTVBSRVNTRURfUkdCQV9B
U1RDXzV4NF9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdO
RURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNU
Q181eDVfU1JHQl9CTE9DSywgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hS
LCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NV9LSFIsIG51bGxwdHIsIE5vQ29w
eUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwg
MCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ181eDVfVU5PUk1fQkxPQ0ssIEdMX0NPTVBS
RVNTRURfUkdCQV9BU1RDXzV4NV9LSFIsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIs
IG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpF
RCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ182eDVfU1JHQl9C
TE9DSywgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSLCBHTF9DT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4NV9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywg
bnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAg
IHsgRm9ybWF0OjpJRDo6QVNUQ182eDVfVU5PUk1fQkxPQ0ssIEdMX0NPTVBSRVNTRURfUkdCQV9B
U1RDXzZ4NV9LSFIsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFIsIG51bGxwdHIsIE5v
Q29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwg
MCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ182eDZfU1JHQl9CTE9DSywgR0xfQ09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzZ4Nl9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xf
VU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJ
RDo6QVNUQ182eDZfVU5PUk1fQkxPQ0ssIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFIs
IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4Nl9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9u
cywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAor
ICAgIHsgRm9ybWF0OjpJRDo6QVNUQ184eDVfU1JHQl9CTE9DSywgR0xfQ09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ184eDVfS0hSLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4
NV9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9S
TUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ184eDVf
VU5PUk1fQkxPQ0ssIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIsIEdMX0NPTVBSRVNT
RURfUkdCQV9BU1RDXzh4NV9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwg
R0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0
OjpJRDo6QVNUQ184eDZfU1JHQl9CTE9DSywgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNU
Q184eDZfS0hSLCBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4Nl9LSFIsIG51bGxw
dHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwg
MCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ184eDZfVU5PUk1fQkxPQ0ss
IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFIsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RD
Xzh4Nl9LSFIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURf
Tk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ184
eDhfU1JHQl9CTE9DSywgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSLCBH
TF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIsIG51bGxwdHIsIE5vQ29weUZ1
bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMCwg
MCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QVNUQ184eDhfVU5PUk1fQkxPQ0ssIEdMX0NPTVBSRVNT
RURfUkdCQV9BU1RDXzh4OF9LSFIsIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9LSFIsIG51
bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwg
MCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QjRHNFI0QTRfVU5PUk0sIEdM
X0JHUkE0X0FOR0xFWCwgR0xfUkdCQTQsIEdlbmVyYXRlTWlwPEE0UjRHNEI0PiwgTm9Db3B5RnVu
Y3Rpb25zLCBSZWFkQ29sb3I8QTRSNEc0QjQsIEdMZmxvYXQ+LCBHTF9VTlNJR05FRF9OT1JNQUxJ
WkVELCA0LCA0LCA0LCA0LCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpCNUc1UjVBMV9VTk9S
TSwgR0xfQkdSNV9BMV9BTkdMRVgsIEdMX1JHQjVfQTEsIEdlbmVyYXRlTWlwPEExUjVHNUI1Piwg
Tm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8QTFSNUc1QjUsIEdMZmxvYXQ+LCBHTF9VTlNJR05F
RF9OT1JNQUxJWkVELCA1LCA1LCA1LCAxLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpCNUc2
UjVfVU5PUk0sIEdMX0JHUjU2NV9BTkdMRVgsIEdMX1JHQjU2NSwgR2VuZXJhdGVNaXA8QjVHNlI1
PiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8QjVHNlI1LCBHTGZsb2F0PiwgR0xfVU5TSUdO
RURfTk9STUFMSVpFRCwgNSwgNiwgNSwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6QjhH
OFI4QThfVU5PUk0sIEdMX0JHUkE4X0VYVCwgR0xfQkdSQThfRVhULCBHZW5lcmF0ZU1pcDxCOEc4
UjhBOD4sIEJHUkFDb3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8QjhHOFI4QTgsIEdMZmxvYXQ+LCBH
TF9VTlNJR05FRF9OT1JNQUxJWkVELCA4LCA4LCA4LCA4LCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6
OklEOjpCOEc4UjhYOF9VTk9STSwgR0xfQkdSQThfRVhULCBHTF9CR1JBOF9FWFQsIEdlbmVyYXRl
TWlwPEI4RzhSOFg4PiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8QjhHOFI4WDgsIEdMZmxv
YXQ+LCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCA4LCA4LCA4LCAwLCAwLCAwIH0sCisgICAgeyBG
b3JtYXQ6OklEOjpCQzFfUkdCQV9VTk9STV9CTE9DSywgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUMV9FWFQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBudWxscHRyLCBOb0Nv
cHlGdW5jdGlvbnMsIG51bGxwdHIsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDAsIDAsIDAsIDAs
IDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OkJDMV9SR0JBX1VOT1JNX1NSR0JfQkxPQ0ssIEdM
X0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhULCBHTF9DT01QUkVTU0VEX1NSR0Jf
QUxQSEFfUzNUQ19EWFQxX0VYVCwgbnVsbHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBH
TF9VTlNJR05FRF9OT1JNQUxJWkVELCAwLCAwLCAwLCAwLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6
OklEOjpCQzFfUkdCX1VOT1JNX0JMT0NLLCBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhU
LCBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULCBudWxscHRyLCBOb0NvcHlGdW5jdGlv
bnMsIG51bGxwdHIsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDAsIDAsIDAsIDAsIDAsIDAgfSwK
KyAgICB7IEZvcm1hdDo6SUQ6OkJDMV9SR0JfVU5PUk1fU1JHQl9CTE9DSywgR0xfQ09NUFJFU1NF
RF9TUkdCX1MzVENfRFhUMV9FWFQsIEdMX0NPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhULCBu
dWxscHRyLCBOb0NvcHlGdW5jdGlvbnMsIG51bGxwdHIsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQs
IDAsIDAsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OkJDMl9SR0JBX1VOT1JNX0JM
T0NLLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFLCBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQzX0FOR0xFLCBudWxscHRyLCBOb0NvcHlGdW5jdGlvbnMsIG51bGxwdHIsIEdM
X1VOU0lHTkVEX05PUk1BTElaRUQsIDAsIDAsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6
SUQ6OkJDMl9SR0JBX1VOT1JNX1NSR0JfQkxPQ0ssIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9T
M1RDX0RYVDNfRVhULCBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVCwgbnVs
bHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCAw
LCAwLCAwLCAwLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpCQzNfUkdCQV9VTk9STV9CTE9D
SywgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSwgR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUNV9BTkdMRSwgbnVsbHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELCAwLCAwLCAwLCAwLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklE
OjpCQzNfUkdCQV9VTk9STV9TUkdCX0JMT0NLLCBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNU
Q19EWFQ1X0VYVCwgR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQsIG51bGxw
dHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwg
MCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6RDE2X1VOT1JNLCBHTF9ERVBUSF9D
T01QT05FTlQxNiwgR0xfREVQVEhfQ09NUE9ORU5UMTYsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9u
cywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMCwgMCwgMCwgMCwgMTYsIDAgfSwK
KyAgICB7IEZvcm1hdDo6SUQ6OkQyNF9VTk9STSwgR0xfREVQVEhfQ09NUE9ORU5UMjQsIEdMX0RF
UFRIX0NPTVBPTkVOVDI0LCBudWxscHRyLCBOb0NvcHlGdW5jdGlvbnMsIG51bGxwdHIsIEdMX1VO
U0lHTkVEX05PUk1BTElaRUQsIDAsIDAsIDAsIDAsIDI0LCAwIH0sCisgICAgeyBGb3JtYXQ6OklE
OjpEMjRfVU5PUk1fUzhfVUlOVCwgR0xfREVQVEgyNF9TVEVOQ0lMOCwgR0xfREVQVEgyNF9TVEVO
Q0lMOCwgbnVsbHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBHTF9VTlNJR05FRF9OT1JN
QUxJWkVELCAwLCAwLCAwLCAwLCAyNCwgOCB9LAorICAgIHsgRm9ybWF0OjpJRDo6RDMyX0ZMT0FU
LCBHTF9ERVBUSF9DT01QT05FTlQzMkYsIEdMX0RFUFRIX0NPTVBPTkVOVDMyRiwgbnVsbHB0ciwg
Tm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBHTF9GTE9BVCwgMCwgMCwgMCwgMCwgMzIsIDAgfSwK
KyAgICB7IEZvcm1hdDo6SUQ6OkQzMl9GTE9BVF9TOFgyNF9VSU5ULCBHTF9ERVBUSDMyRl9TVEVO
Q0lMOCwgR0xfREVQVEgzMkZfU1RFTkNJTDgsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVs
bHB0ciwgR0xfRkxPQVQsIDAsIDAsIDAsIDAsIDMyLCA4IH0sCisgICAgeyBGb3JtYXQ6OklEOjpE
MzJfVU5PUk0sIEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUywgR0xfREVQVEhfQ09NUE9ORU5UMzJf
T0VTLCBudWxscHRyLCBOb0NvcHlGdW5jdGlvbnMsIG51bGxwdHIsIEdMX1VOU0lHTkVEX05PUk1B
TElaRUQsIDAsIDAsIDAsIDAsIDMyLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpFQUNfUjExRzEx
X1NOT1JNX0JMT0NLLCBHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQywgR0xfQ09NUFJFU1NF
RF9TSUdORURfUkcxMV9FQUMsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xf
U0lHTkVEX05PUk1BTElaRUQsIDExLCAxMSwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJ
RDo6RUFDX1IxMUcxMV9VTk9STV9CTE9DSywgR0xfQ09NUFJFU1NFRF9SRzExX0VBQywgR0xfQ09N
UFJFU1NFRF9SRzExX0VBQywgbnVsbHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELCAxMSwgMTEsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6
SUQ6OkVBQ19SMTFfU05PUk1fQkxPQ0ssIEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMsIEdM
X0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVs
bHB0ciwgR0xfU0lHTkVEX05PUk1BTElaRUQsIDExLCAwLCAwLCAwLCAwLCAwIH0sCisgICAgeyBG
b3JtYXQ6OklEOjpFQUNfUjExX1VOT1JNX0JMT0NLLCBHTF9DT01QUkVTU0VEX1IxMV9FQUMsIEdM
X0NPTVBSRVNTRURfUjExX0VBQywgbnVsbHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBH
TF9VTlNJR05FRF9OT1JNQUxJWkVELCAxMSwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0
OjpJRDo6RVRDMl9SOEc4QjhBMV9TUkdCX0JMT0NLLCBHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNI
VEhST1VHSF9BTFBIQTFfRVRDMiwgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQ
SEExX0VUQzIsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURf
Tk9STUFMSVpFRCwgOCwgOCwgOCwgMSwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6RVRDMl9S
OEc4QjhBMV9VTk9STV9CTE9DSywgR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBI
QTFfRVRDMiwgR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiwgbnVs
bHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRyLCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCA4
LCA4LCA4LCAxLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpFVEMyX1I4RzhCOEE4X1NSR0Jf
QkxPQ0ssIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDLCBHTF9DT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9FVEMyX0VBQywgbnVsbHB0ciwgTm9Db3B5RnVuY3Rpb25zLCBudWxscHRy
LCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCA4LCA4LCA4LCA4LCAwLCAwIH0sCisgICAgeyBGb3Jt
YXQ6OklEOjpFVEMyX1I4RzhCOEE4X1VOT1JNX0JMT0NLLCBHTF9DT01QUkVTU0VEX1JHQkE4X0VU
QzJfRUFDLCBHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLCBudWxscHRyLCBOb0NvcHlGdW5j
dGlvbnMsIG51bGxwdHIsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDgsIDgsIDgsIDgsIDAsIDAg
fSwKKyAgICB7IEZvcm1hdDo6SUQ6OkVUQzJfUjhHOEI4X1NSR0JfQkxPQ0ssIEdMX0NPTVBSRVNT
RURfU1JHQjhfRVRDMiwgR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLCBudWxscHRyLCBOb0NvcHlG
dW5jdGlvbnMsIG51bGxwdHIsIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDgsIDgsIDgsIDAsIDAs
IDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OkVUQzJfUjhHOEI4X1VOT1JNX0JMT0NLLCBHTF9DT01Q
UkVTU0VEX1JHQjhfRVRDMiwgR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIsIG51bGxwdHIsIE5vQ29w
eUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgOCwgOCwgOCwgMCwg
MCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6TDE2QTE2X0ZMT0FULCBHTF9MVU1JTkFOQ0VfQUxQ
SEExNkZfRVhULCBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhULCBHZW5lcmF0ZU1pcDxMMTZBMTZG
PiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8TDE2QTE2RiwgR0xmbG9hdD4sIEdMX0ZMT0FU
LCAwLCAwLCAwLCAxNiwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6TDE2X0ZMT0FULCBHTF9M
VU1JTkFOQ0UxNkZfRVhULCBHTF9MVU1JTkFOQ0UxNkZfRVhULCBHZW5lcmF0ZU1pcDxMMTZGPiwg
Tm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8TDE2RiwgR0xmbG9hdD4sIEdMX0ZMT0FULCAwLCAw
LCAwLCAwLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpMMzJBMzJfRkxPQVQsIEdMX0xVTUlO
QU5DRV9BTFBIQTMyRl9FWFQsIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQsIEdlbmVyYXRlTWlw
PEwzMkEzMkY+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxMMzJBMzJGLCBHTGZsb2F0Piwg
R0xfRkxPQVQsIDAsIDAsIDAsIDMyLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpMMzJfRkxP
QVQsIEdMX0xVTUlOQU5DRTMyRl9FWFQsIEdMX0xVTUlOQU5DRTMyRl9FWFQsIEdlbmVyYXRlTWlw
PEwzMkY+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxMMzJGLCBHTGZsb2F0PiwgR0xfRkxP
QVQsIDAsIDAsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6Okw4QThfVU5PUk0sIEdM
X0xVTUlOQU5DRThfQUxQSEE4X0VYVCwgR0xfTFVNSU5BTkNFOF9BTFBIQThfRVhULCBHZW5lcmF0
ZU1pcDxMOEE4PiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8TDhBOCwgR0xmbG9hdD4sIEdM
X1VOU0lHTkVEX05PUk1BTElaRUQsIDAsIDAsIDAsIDgsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6
SUQ6Okw4X1VOT1JNLCBHTF9MVU1JTkFOQ0U4X0VYVCwgR0xfTFVNSU5BTkNFOF9FWFQsIEdlbmVy
YXRlTWlwPEw4PiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8TDgsIEdMZmxvYXQ+LCBHTF9V
TlNJR05FRF9OT1JNQUxJWkVELCAwLCAwLCAwLCAwLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklE
OjpSMTBHMTBCMTBBMl9VSU5ULCBHTF9SR0IxMF9BMlVJLCBHTF9SR0IxMF9BMlVJLCBHZW5lcmF0
ZU1pcDxSMTBHMTBCMTBBMj4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFIxMEcxMEIxMEEy
LCBHTHVpbnQ+LCBHTF9VTlNJR05FRF9JTlQsIDEwLCAxMCwgMTAsIDIsIDAsIDAgfSwKKyAgICB7
IEZvcm1hdDo6SUQ6OlIxMEcxMEIxMEEyX1VOT1JNLCBHTF9SR0IxMF9BMiwgR0xfUkdCMTBfQTIs
IEdlbmVyYXRlTWlwPFIxMEcxMEIxMEEyPiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjEw
RzEwQjEwQTIsIEdMZmxvYXQ+LCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELCAxMCwgMTAsIDEwLCAy
LCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpSMTFHMTFCMTBfRkxPQVQsIEdMX1IxMUZfRzEx
Rl9CMTBGLCBHTF9SMTFGX0cxMUZfQjEwRiwgR2VuZXJhdGVNaXA8UjExRzExQjEwRj4sIE5vQ29w
eUZ1bmN0aW9ucywgUmVhZENvbG9yPFIxMUcxMUIxMEYsIEdMZmxvYXQ+LCBHTF9GTE9BVCwgMTEs
IDExLCAxMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X0ZMT0FU
LCBHTF9SR0JBMTZGLCBHTF9SR0JBMTZGLCBHZW5lcmF0ZU1pcDxSMTZHMTZCMTZBMTZGPiwgTm9D
b3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjE2RzE2QjE2QTE2RiwgR0xmbG9hdD4sIEdMX0ZMT0FU
LCAxNiwgMTYsIDE2LCAxNiwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2
X1NJTlQsIEdMX1JHQkExNkksIEdMX1JHQkExNkksIEdlbmVyYXRlTWlwPFIxNkcxNkIxNkExNlM+
LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxSMTZHMTZCMTZBMTZTLCBHTGludD4sIEdMX0lO
VCwgMTYsIDE2LCAxNiwgMTYsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlIxNkcxNkIxNkEx
Nl9TTk9STSwgR0xfUkdCQTE2X1NOT1JNX0VYVCwgR0xfUkdCQTE2X1NOT1JNX0VYVCwgR2VuZXJh
dGVNaXA8UjE2RzE2QjE2QTE2Uz4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFIxNkcxNkIx
NkExNlMsIEdMZmxvYXQ+LCBHTF9TSUdORURfTk9STUFMSVpFRCwgMTYsIDE2LCAxNiwgMTYsIDAs
IDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9VSU5ULCBHTF9SR0JBMTZVSSwg
R0xfUkdCQTE2VUksIEdlbmVyYXRlTWlwPFIxNkcxNkIxNkExNj4sIE5vQ29weUZ1bmN0aW9ucywg
UmVhZENvbG9yPFIxNkcxNkIxNkExNiwgR0x1aW50PiwgR0xfVU5TSUdORURfSU5ULCAxNiwgMTYs
IDE2LCAxNiwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X1VOT1JNLCBH
TF9SR0JBMTZfRVhULCBHTF9SR0JBMTZfRVhULCBHZW5lcmF0ZU1pcDxSMTZHMTZCMTZBMTY+LCBO
b0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxSMTZHMTZCMTZBMTYsIEdMZmxvYXQ+LCBHTF9VTlNJ
R05FRF9OT1JNQUxJWkVELCAxNiwgMTYsIDE2LCAxNiwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJ
RDo6UjE2RzE2QjE2X0ZMT0FULCBHTF9SR0IxNkYsIEdMX1JHQjE2RiwgR2VuZXJhdGVNaXA8UjE2
RzE2QjE2Rj4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFIxNkcxNkIxNkYsIEdMZmxvYXQ+
LCBHTF9GTE9BVCwgMTYsIDE2LCAxNiwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjE2
RzE2QjE2X1NJTlQsIEdMX1JHQjE2SSwgR0xfUkdCMTZJLCBHZW5lcmF0ZU1pcDxSMTZHMTZCMTZT
PiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjE2RzE2QjE2UywgR0xpbnQ+LCBHTF9JTlQs
IDE2LCAxNiwgMTYsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlIxNkcxNkIxNl9TTk9S
TSwgR0xfUkdCMTZfU05PUk1fRVhULCBHTF9SR0IxNl9TTk9STV9FWFQsIEdlbmVyYXRlTWlwPFIx
NkcxNkIxNlM+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxSMTZHMTZCMTZTLCBHTGZsb2F0
PiwgR0xfU0lHTkVEX05PUk1BTElaRUQsIDE2LCAxNiwgMTYsIDAsIDAsIDAgfSwKKyAgICB7IEZv
cm1hdDo6SUQ6OlIxNkcxNkIxNl9VSU5ULCBHTF9SR0IxNlVJLCBHTF9SR0IxNlVJLCBHZW5lcmF0
ZU1pcDxSMTZHMTZCMTY+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxSMTZHMTZCMTYsIEdM
dWludD4sIEdMX1VOU0lHTkVEX0lOVCwgMTYsIDE2LCAxNiwgMCwgMCwgMCB9LAorICAgIHsgRm9y
bWF0OjpJRDo6UjE2RzE2QjE2X1VOT1JNLCBHTF9SR0IxNl9FWFQsIEdMX1JHQjE2X0VYVCwgR2Vu
ZXJhdGVNaXA8UjE2RzE2QjE2PiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjE2RzE2QjE2
LCBHTGZsb2F0PiwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgMTYsIDE2LCAxNiwgMCwgMCwgMCB9
LAorICAgIHsgRm9ybWF0OjpJRDo6UjE2RzE2X0ZMT0FULCBHTF9SRzE2RiwgR0xfUkcxNkYsIEdl
bmVyYXRlTWlwPFIxNkcxNkY+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxSMTZHMTZGLCBH
TGZsb2F0PiwgR0xfRkxPQVQsIDE2LCAxNiwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJ
RDo6UjE2RzE2X1NJTlQsIEdMX1JHMTZJLCBHTF9SRzE2SSwgR2VuZXJhdGVNaXA8UjE2RzE2Uz4s
IE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFIxNkcxNlMsIEdMaW50PiwgR0xfSU5ULCAxNiwg
MTYsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlIxNkcxNl9TTk9STSwgR0xfUkcx
Nl9TTk9STV9FWFQsIEdMX1JHMTZfU05PUk1fRVhULCBHZW5lcmF0ZU1pcDxSMTZHMTZTPiwgTm9D
b3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjE2RzE2UywgR0xmbG9hdD4sIEdMX1NJR05FRF9OT1JN
QUxJWkVELCAxNiwgMTYsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlIxNkcxNl9V
SU5ULCBHTF9SRzE2VUksIEdMX1JHMTZVSSwgR2VuZXJhdGVNaXA8UjE2RzE2PiwgTm9Db3B5RnVu
Y3Rpb25zLCBSZWFkQ29sb3I8UjE2RzE2LCBHTHVpbnQ+LCBHTF9VTlNJR05FRF9JTlQsIDE2LCAx
NiwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjE2RzE2X1VOT1JNLCBHTF9SRzE2
X0VYVCwgR0xfUkcxNl9FWFQsIEdlbmVyYXRlTWlwPFIxNkcxNj4sIE5vQ29weUZ1bmN0aW9ucywg
UmVhZENvbG9yPFIxNkcxNiwgR0xmbG9hdD4sIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDE2LCAx
NiwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjE2X0ZMT0FULCBHTF9SMTZGLCBH
TF9SMTZGLCBHZW5lcmF0ZU1pcDxSMTZGPiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjE2
RiwgR0xmbG9hdD4sIEdMX0ZMT0FULCAxNiwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0
OjpJRDo6UjE2X1NJTlQsIEdMX1IxNkksIEdMX1IxNkksIEdlbmVyYXRlTWlwPFIxNlM+LCBOb0Nv
cHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxSMTZTLCBHTGludD4sIEdMX0lOVCwgMTYsIDAsIDAsIDAs
IDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlIxNl9TTk9STSwgR0xfUjE2X1NOT1JNX0VYVCwg
R0xfUjE2X1NOT1JNX0VYVCwgR2VuZXJhdGVNaXA8UjE2Uz4sIE5vQ29weUZ1bmN0aW9ucywgUmVh
ZENvbG9yPFIxNlMsIEdMZmxvYXQ+LCBHTF9TSUdORURfTk9STUFMSVpFRCwgMTYsIDAsIDAsIDAs
IDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlIxNl9VSU5ULCBHTF9SMTZVSSwgR0xfUjE2VUks
IEdlbmVyYXRlTWlwPFIxNj4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFIxNiwgR0x1aW50
PiwgR0xfVU5TSUdORURfSU5ULCAxNiwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJ
RDo6UjE2X1VOT1JNLCBHTF9SMTZfRVhULCBHTF9SMTZfRVhULCBHZW5lcmF0ZU1pcDxSMTY+LCBO
b0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxSMTYsIEdMZmxvYXQ+LCBHTF9VTlNJR05FRF9OT1JN
QUxJWkVELCAxNiwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjMyRzMyQjMy
QTMyX0ZMT0FULCBHTF9SR0JBMzJGLCBHTF9SR0JBMzJGLCBHZW5lcmF0ZU1pcDxSMzJHMzJCMzJB
MzJGPiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjMyRzMyQjMyQTMyRiwgR0xmbG9hdD4s
IEdMX0ZMT0FULCAzMiwgMzIsIDMyLCAzMiwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjMy
RzMyQjMyQTMyX1NJTlQsIEdMX1JHQkEzMkksIEdMX1JHQkEzMkksIEdlbmVyYXRlTWlwPFIzMkcz
MkIzMkEzMlM+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxSMzJHMzJCMzJBMzJTLCBHTGlu
dD4sIEdMX0lOVCwgMzIsIDMyLCAzMiwgMzIsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlIz
MkczMkIzMkEzMl9VSU5ULCBHTF9SR0JBMzJVSSwgR0xfUkdCQTMyVUksIEdlbmVyYXRlTWlwPFIz
MkczMkIzMkEzMj4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFIzMkczMkIzMkEzMiwgR0x1
aW50PiwgR0xfVU5TSUdORURfSU5ULCAzMiwgMzIsIDMyLCAzMiwgMCwgMCB9LAorICAgIHsgRm9y
bWF0OjpJRDo6UjMyRzMyQjMyX0ZMT0FULCBHTF9SR0IzMkYsIEdMX1JHQjMyRiwgR2VuZXJhdGVN
aXA8UjMyRzMyQjMyRj4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFIzMkczMkIzMkYsIEdM
ZmxvYXQ+LCBHTF9GTE9BVCwgMzIsIDMyLCAzMiwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJ
RDo6UjMyRzMyQjMyX1NJTlQsIEdMX1JHQjMySSwgR0xfUkdCMzJJLCBHZW5lcmF0ZU1pcDxSMzJH
MzJCMzJTPiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjMyRzMyQjMyUywgR0xpbnQ+LCBH
TF9JTlQsIDMyLCAzMiwgMzIsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlIzMkczMkIz
Ml9VSU5ULCBHTF9SR0IzMlVJLCBHTF9SR0IzMlVJLCBHZW5lcmF0ZU1pcDxSMzJHMzJCMzI+LCBO
b0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxSMzJHMzJCMzIsIEdMdWludD4sIEdMX1VOU0lHTkVE
X0lOVCwgMzIsIDMyLCAzMiwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjMyRzMyX0ZM
T0FULCBHTF9SRzMyRiwgR0xfUkczMkYsIEdlbmVyYXRlTWlwPFIzMkczMkY+LCBOb0NvcHlGdW5j
dGlvbnMsIFJlYWRDb2xvcjxSMzJHMzJGLCBHTGZsb2F0PiwgR0xfRkxPQVQsIDMyLCAzMiwgMCwg
MCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjMyRzMyX1NJTlQsIEdMX1JHMzJJLCBHTF9S
RzMySSwgR2VuZXJhdGVNaXA8UjMyRzMyUz4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFIz
MkczMlMsIEdMaW50PiwgR0xfSU5ULCAzMiwgMzIsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1h
dDo6SUQ6OlIzMkczMl9VSU5ULCBHTF9SRzMyVUksIEdMX1JHMzJVSSwgR2VuZXJhdGVNaXA8UjMy
RzMyPiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjMyRzMyLCBHTHVpbnQ+LCBHTF9VTlNJ
R05FRF9JTlQsIDMyLCAzMiwgMCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjMyX0ZM
T0FULCBHTF9SMzJGLCBHTF9SMzJGLCBHZW5lcmF0ZU1pcDxSMzJGPiwgTm9Db3B5RnVuY3Rpb25z
LCBSZWFkQ29sb3I8UjMyRiwgR0xmbG9hdD4sIEdMX0ZMT0FULCAzMiwgMCwgMCwgMCwgMCwgMCB9
LAorICAgIHsgRm9ybWF0OjpJRDo6UjMyX1NJTlQsIEdMX1IzMkksIEdMX1IzMkksIEdlbmVyYXRl
TWlwPFIzMlM+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxSMzJTLCBHTGludD4sIEdMX0lO
VCwgMzIsIDAsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlIzMl9VSU5ULCBHTF9S
MzJVSSwgR0xfUjMyVUksIEdlbmVyYXRlTWlwPFIzMj4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENv
bG9yPFIzMiwgR0x1aW50PiwgR0xfVU5TSUdORURfSU5ULCAzMiwgMCwgMCwgMCwgMCwgMCB9LAor
ICAgIHsgRm9ybWF0OjpJRDo6UjRHNEI0QTRfVU5PUk0sIEdMX1JHQkE0LCBHTF9SR0JBNCwgR2Vu
ZXJhdGVNaXA8UjRHNEI0QTQ+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxSNEc0QjRBNCwg
R0xmbG9hdD4sIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDQsIDQsIDQsIDQsIDAsIDAgfSwKKyAg
ICB7IEZvcm1hdDo6SUQ6OlI1RzVCNUExX1VOT1JNLCBHTF9SR0I1X0ExLCBHTF9SR0I1X0ExLCBH
ZW5lcmF0ZU1pcDxSNUc1QjVBMT4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFI1RzVCNUEx
LCBHTGZsb2F0PiwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgNSwgNSwgNSwgMSwgMCwgMCB9LAor
ICAgIHsgRm9ybWF0OjpJRDo6UjVHNkI1X1VOT1JNLCBHTF9SR0I1NjUsIEdMX1JHQjU2NSwgR2Vu
ZXJhdGVNaXA8UjVHNkI1PiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjVHNkI1LCBHTGZs
b2F0PiwgR0xfVU5TSUdORURfTk9STUFMSVpFRCwgNSwgNiwgNSwgMCwgMCwgMCB9LAorICAgIHsg
Rm9ybWF0OjpJRDo6UjhHOEI4QThfU0lOVCwgR0xfUkdCQThJLCBHTF9SR0JBOEksIEdlbmVyYXRl
TWlwPFI4RzhCOEE4Uz4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFI4RzhCOEE4UywgR0xp
bnQ+LCBHTF9JTlQsIDgsIDgsIDgsIDgsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlI4RzhC
OEE4X1NOT1JNLCBHTF9SR0JBOF9TTk9STSwgR0xfUkdCQThfU05PUk0sIEdlbmVyYXRlTWlwPFI4
RzhCOEE4Uz4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFI4RzhCOEE4UywgR0xmbG9hdD4s
IEdMX1NJR05FRF9OT1JNQUxJWkVELCA4LCA4LCA4LCA4LCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6
OklEOjpSOEc4QjhBOF9VSU5ULCBHTF9SR0JBOFVJLCBHTF9SR0JBOFVJLCBHZW5lcmF0ZU1pcDxS
OEc4QjhBOD4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFI4RzhCOEE4LCBHTHVpbnQ+LCBH
TF9VTlNJR05FRF9JTlQsIDgsIDgsIDgsIDgsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlI4
RzhCOEE4X1VOT1JNLCBHTF9SR0JBOCwgR0xfUkdCQTgsIEdlbmVyYXRlTWlwPFI4RzhCOEE4Piwg
Tm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjhHOEI4QTgsIEdMZmxvYXQ+LCBHTF9VTlNJR05F
RF9OT1JNQUxJWkVELCA4LCA4LCA4LCA4LCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpSOEc4
QjhBOF9VTk9STV9TUkdCLCBHTF9TUkdCOF9BTFBIQTgsIEdMX1NSR0I4X0FMUEhBOCwgR2VuZXJh
dGVNaXA8UjhHOEI4QTg+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxSOEc4QjhBOCwgR0xm
bG9hdD4sIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDgsIDgsIDgsIDgsIDAsIDAgfSwKKyAgICB7
IEZvcm1hdDo6SUQ6OlI4RzhCOF9TSU5ULCBHTF9SR0I4SSwgR0xfUkdCOEksIEdlbmVyYXRlTWlw
PFI4RzhCOFM+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxSOEc4QjhTLCBHTGludD4sIEdM
X0lOVCwgOCwgOCwgOCwgMCwgMCwgMCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjhHOEI4X1NOT1JN
LCBHTF9SR0I4X1NOT1JNLCBHTF9SR0I4X1NOT1JNLCBHZW5lcmF0ZU1pcDxSOEc4QjhTPiwgTm9D
b3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjhHOEI4UywgR0xmbG9hdD4sIEdMX1NJR05FRF9OT1JN
QUxJWkVELCA4LCA4LCA4LCAwLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpSOEc4QjhfVUlO
VCwgR0xfUkdCOFVJLCBHTF9SR0I4VUksIEdlbmVyYXRlTWlwPFI4RzhCOD4sIE5vQ29weUZ1bmN0
aW9ucywgUmVhZENvbG9yPFI4RzhCOCwgR0x1aW50PiwgR0xfVU5TSUdORURfSU5ULCA4LCA4LCA4
LCAwLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpSOEc4QjhfVU5PUk0sIEdMX1JHQjgsIEdM
X1JHQjgsIEdlbmVyYXRlTWlwPFI4RzhCOD4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFI4
RzhCOCwgR0xmbG9hdD4sIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDgsIDgsIDgsIDAsIDAsIDAg
fSwKKyAgICB7IEZvcm1hdDo6SUQ6OlI4RzhCOF9VTk9STV9TUkdCLCBHTF9TUkdCOCwgR0xfU1JH
QjgsIEdlbmVyYXRlTWlwPFI4RzhCOD4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFI4RzhC
OCwgR0xmbG9hdD4sIEdMX1VOU0lHTkVEX05PUk1BTElaRUQsIDgsIDgsIDgsIDAsIDAsIDAgfSwK
KyAgICB7IEZvcm1hdDo6SUQ6OlI4RzhfU0lOVCwgR0xfUkc4SSwgR0xfUkc4SSwgR2VuZXJhdGVN
aXA8UjhHOFM+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxSOEc4UywgR0xpbnQ+LCBHTF9J
TlQsIDgsIDgsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlI4RzhfU05PUk0sIEdM
X1JHOF9TTk9STSwgR0xfUkc4X1NOT1JNLCBHZW5lcmF0ZU1pcDxSOEc4Uz4sIE5vQ29weUZ1bmN0
aW9ucywgUmVhZENvbG9yPFI4RzhTLCBHTGZsb2F0PiwgR0xfU0lHTkVEX05PUk1BTElaRUQsIDgs
IDgsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlI4RzhfVUlOVCwgR0xfUkc4VUks
IEdMX1JHOFVJLCBHZW5lcmF0ZU1pcDxSOEc4PiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8
UjhHOCwgR0x1aW50PiwgR0xfVU5TSUdORURfSU5ULCA4LCA4LCAwLCAwLCAwLCAwIH0sCisgICAg
eyBGb3JtYXQ6OklEOjpSOEc4X1VOT1JNLCBHTF9SRzgsIEdMX1JHOCwgR2VuZXJhdGVNaXA8UjhH
OD4sIE5vQ29weUZ1bmN0aW9ucywgUmVhZENvbG9yPFI4RzgsIEdMZmxvYXQ+LCBHTF9VTlNJR05F
RF9OT1JNQUxJWkVELCA4LCA4LCAwLCAwLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpSOF9T
SU5ULCBHTF9SOEksIEdMX1I4SSwgR2VuZXJhdGVNaXA8UjhTPiwgTm9Db3B5RnVuY3Rpb25zLCBS
ZWFkQ29sb3I8UjhTLCBHTGludD4sIEdMX0lOVCwgOCwgMCwgMCwgMCwgMCwgMCB9LAorICAgIHsg
Rm9ybWF0OjpJRDo6UjhfU05PUk0sIEdMX1I4X1NOT1JNLCBHTF9SOF9TTk9STSwgR2VuZXJhdGVN
aXA8UjhTPiwgTm9Db3B5RnVuY3Rpb25zLCBSZWFkQ29sb3I8UjhTLCBHTGZsb2F0PiwgR0xfU0lH
TkVEX05PUk1BTElaRUQsIDgsIDAsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlI4
X1VJTlQsIEdMX1I4VUksIEdMX1I4VUksIEdlbmVyYXRlTWlwPFI4PiwgTm9Db3B5RnVuY3Rpb25z
LCBSZWFkQ29sb3I8UjgsIEdMdWludD4sIEdMX1VOU0lHTkVEX0lOVCwgOCwgMCwgMCwgMCwgMCwg
MCB9LAorICAgIHsgRm9ybWF0OjpJRDo6UjhfVU5PUk0sIEdMX1I4LCBHTF9SOCwgR2VuZXJhdGVN
aXA8Ujg+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxSOCwgR0xmbG9hdD4sIEdMX1VOU0lH
TkVEX05PUk1BTElaRUQsIDgsIDAsIDAsIDAsIDAsIDAgfSwKKyAgICB7IEZvcm1hdDo6SUQ6OlI5
RzlCOUU1X1NIQVJFREVYUCwgR0xfUkdCOV9FNSwgR0xfUkdCOV9FNSwgR2VuZXJhdGVNaXA8UjlH
OUI5RTU+LCBOb0NvcHlGdW5jdGlvbnMsIFJlYWRDb2xvcjxSOUc5QjlFNSwgR0xmbG9hdD4sIEdM
X0ZMT0FULCA5LCA5LCA5LCAwLCAwLCAwIH0sCisgICAgeyBGb3JtYXQ6OklEOjpTOF9VSU5ULCBH
TF9TVEVOQ0lMX0lOREVYOCwgR0xfU1RFTkNJTF9JTkRFWDgsIG51bGxwdHIsIE5vQ29weUZ1bmN0
aW9ucywgbnVsbHB0ciwgR0xfVU5TSUdORURfSU5ULCAwLCAwLCAwLCAwLCAwLCA4IH0sCisgICAg
Ly8gY2xhbmctZm9ybWF0IG9uCit9OworCisvLyBzdGF0aWMKK2NvbnN0IEZvcm1hdCAmRm9ybWF0
OjpHZXQoSUQgaWQpCit7CisgICAgcmV0dXJuIGdfZm9ybWF0SW5mb1RhYmxlW3N0YXRpY19jYXN0
PHNpemVfdD4oaWQpXTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJJ
bXBsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRnJh
bWVidWZmZXJJbXBsLmgKaW5kZXggYTYxZGJiYTUzNWUuLjY3YjJkOTVhYzZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZm
ZXJJbXBsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL0ZyYW1lYnVmZmVySW1wbC5oCkBAIC0yNCwxMiArMjQsMTUgQEAgc3RydWN0IFJlY3Rhbmds
ZTsKIAogbmFtZXNwYWNlIHJ4CiB7CitjbGFzcyBEaXNwbGF5SW1wbDsKIAogY2xhc3MgRnJhbWVi
dWZmZXJJbXBsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7CiAgIHB1YmxpYzoKICAgICBleHBsaWNp
dCBGcmFtZWJ1ZmZlckltcGwoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKSA6IG1T
dGF0ZShzdGF0ZSkge30KICAgICB2aXJ0dWFsIH5GcmFtZWJ1ZmZlckltcGwoKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGVzdHJveShDb250ZXh0SW1wbCAqY29udGV4dEltcGwpIHt9CisgICAgdmly
dHVhbCB2b2lkIGRlc3Ryb3lEZWZhdWx0KERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkge30KIAog
ICAgIHZpcnR1YWwgZ2w6OkVycm9yIGRpc2NhcmQoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0g
KmF0dGFjaG1lbnRzKSA9IDA7CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgaW52YWxpZGF0ZShzaXpl
X3QgY291bnQsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpID0gMDsKQEAgLTcwLDcgKzczLDEw
IEBAIGNsYXNzIEZyYW1lYnVmZmVySW1wbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgdmly
dHVhbCBib29sIGNoZWNrU3RhdHVzKCkgY29uc3QgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHN5
bmNTdGF0ZShjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHN5bmNTdGF0ZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0
cyAmZGlydHlCaXRzKSA9IDA7CisKKyAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRTYW1wbGVQb3Np
dGlvbihzaXplX3QgaW5kZXgsIEdMZmxvYXQgKnh5KSBjb25zdCA9IDA7CiAKICAgICBjb25zdCBn
bDo6RnJhbWVidWZmZXJTdGF0ZSAmZ2V0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtU3RhdGU7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL0ZyYW1lYnVmZmVySW1wbF9tb2NrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJJbXBsX21vY2suaAppbmRleCA5YmY5M2RiOTcz
NC4uN2NhNzc1NDUwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZlckltcGxfbW9jay5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZlckltcGxfbW9jay5o
CkBAIC0yMSw3ICsyMSw3IEBAIGNsYXNzIE1vY2tGcmFtZWJ1ZmZlckltcGwgOiBwdWJsaWMgcng6
OkZyYW1lYnVmZmVySW1wbAogewogICBwdWJsaWM6CiAgICAgTW9ja0ZyYW1lYnVmZmVySW1wbCgp
IDogcng6OkZyYW1lYnVmZmVySW1wbChnbDo6RnJhbWVidWZmZXJTdGF0ZSgpKSB7fQotICAgIHZp
cnR1YWwgfk1vY2tGcmFtZWJ1ZmZlckltcGwoKSB7IGRlc3Ryb3koKTsgfQorICAgIHZpcnR1YWwg
fk1vY2tGcmFtZWJ1ZmZlckltcGwoKSB7IGRlc3RydWN0b3IoKTsgfQogCiAgICAgTU9DS19NRVRI
T0QyKGRpc2NhcmQsIGdsOjpFcnJvcihzaXplX3QsIGNvbnN0IEdMZW51bSAqKSk7CiAgICAgTU9D
S19NRVRIT0QyKGludmFsaWRhdGUsIGdsOjpFcnJvcihzaXplX3QsIGNvbnN0IEdMZW51bSAqKSk7
CkBAIC0zOCwxNSArMzgsMTcgQEAgY2xhc3MgTW9ja0ZyYW1lYnVmZmVySW1wbCA6IHB1YmxpYyBy
eDo6RnJhbWVidWZmZXJJbXBsCiAgICAgTU9DS19DT05TVF9NRVRIT0Q1KHJlYWRQaXhlbHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGdsOjpFcnJvcihDb250ZXh0SW1wbCAqLCBjb25zdCBnbDo6
UmVjdGFuZ2xlICYsIEdMZW51bSwgR0xlbnVtLCBHTHZvaWQgKikpOwogCisgICAgTU9DS19DT05T
VF9NRVRIT0QyKGdldFNhbXBsZVBvc2l0aW9uLCBnbDo6RXJyb3Ioc2l6ZV90LCBHTGZsb2F0ICop
KTsKKwogICAgIE1PQ0tfTUVUSE9ENSgKICAgICAgICAgYmxpdCwKICAgICAgICAgZ2w6OkVycm9y
KENvbnRleHRJbXBsICosIGNvbnN0IGdsOjpSZWN0YW5nbGUgJiwgY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmLCBHTGJpdGZpZWxkLCBHTGVudW0pKTsKIAogICAgIE1PQ0tfQ09OU1RfTUVUSE9EMChjaGVj
a1N0YXR1cywgYm9vbCgpKTsKIAotICAgIE1PQ0tfTUVUSE9EMShzeW5jU3RhdGUsIHZvaWQoY29u
c3QgZ2w6OkZyYW1lYnVmZmVyOjpEaXJ0eUJpdHMgJikpOworICAgIE1PQ0tfTUVUSE9EMihzeW5j
U3RhdGUsIHZvaWQoQ29udGV4dEltcGwgKiwgY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEaXJ0eUJp
dHMgJikpOwogCi0gICAgTU9DS19NRVRIT0QwKGRlc3Ryb3ksIHZvaWQoKSk7CisgICAgTU9DS19N
RVRIT0QwKGRlc3RydWN0b3IsIHZvaWQoKSk7CiB9OwogCiBpbmxpbmUgOjp0ZXN0aW5nOjpOaWNl
TW9jazxNb2NrRnJhbWVidWZmZXJJbXBsPiAqTWFrZUZyYW1lYnVmZmVyTW9jaygpCkBAIC01Nyw3
ICs1OSw3IEBAIGlubGluZSA6OnRlc3Rpbmc6Ok5pY2VNb2NrPE1vY2tGcmFtZWJ1ZmZlckltcGw+
ICpNYWtlRnJhbWVidWZmZXJNb2NrKCkKICAgICBPTl9DQUxMKCpmcmFtZWJ1ZmZlckltcGwsIGNo
ZWNrU3RhdHVzKCkpLldpbGxCeURlZmF1bHQoOjp0ZXN0aW5nOjpSZXR1cm4odHJ1ZSkpOwogCiAg
ICAgLy8gV2UgbXVzdCBtb2NrIHRoZSBkZXN0cnVjdG9yIHNpbmNlIE5pY2VNb2NrIGRvZXNuJ3Qg
d29yayBmb3IgZGVzdHJ1Y3RvcnMuCi0gICAgRVhQRUNUX0NBTEwoKmZyYW1lYnVmZmVySW1wbCwg
ZGVzdHJveSgpKS5UaW1lcygxKS5SZXRpcmVzT25TYXR1cmF0aW9uKCk7CisgICAgRVhQRUNUX0NB
TEwoKmZyYW1lYnVmZmVySW1wbCwgZGVzdHJ1Y3RvcigpKS5UaW1lcygxKS5SZXRpcmVzT25TYXR1
cmF0aW9uKCk7CiAKICAgICByZXR1cm4gZnJhbWVidWZmZXJJbXBsOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0dMSW1wbEZhY3Rv
cnkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9HTElt
cGxGYWN0b3J5LmgKaW5kZXggMDlmMTRkNzI3MTcuLjIwYTQ4ZmM3MjNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvR0xJbXBsRmFjdG9y
eS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9H
TEltcGxGYWN0b3J5LmgKQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgR0xJbXBsRmFjdG9yeSA6IGFu
Z2xlOjpOb25Db3B5YWJsZQogICAgIHZpcnR1YWwgUmVuZGVyYnVmZmVySW1wbCAqY3JlYXRlUmVu
ZGVyYnVmZmVyKCkgPSAwOwogCiAgICAgLy8gQnVmZmVyIGNyZWF0aW9uCi0gICAgdmlydHVhbCBC
dWZmZXJJbXBsICpjcmVhdGVCdWZmZXIoKSA9IDA7CisgICAgdmlydHVhbCBCdWZmZXJJbXBsICpj
cmVhdGVCdWZmZXIoY29uc3QgZ2w6OkJ1ZmZlclN0YXRlICZzdGF0ZSkgPSAwOwogCiAgICAgLy8g
VmVydGV4IEFycmF5IGNyZWF0aW9uCiAgICAgdmlydHVhbCBWZXJ0ZXhBcnJheUltcGwgKmNyZWF0
ZVZlcnRleEFycmF5KGNvbnN0IGdsOjpWZXJ0ZXhBcnJheVN0YXRlICZkYXRhKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvUHJv
Z3JhbUltcGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9Qcm9ncmFtSW1wbC5oCmluZGV4IDQ1ZmYwYTA1YTE3Li4zMGE2YTI2MTgwYiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1J
bXBsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L1Byb2dyYW1JbXBsLmgKQEAgLTE3LDYgKzE3LDExIEBACiAKICNpbmNsdWRlIDxtYXA+CiAKK25h
bWVzcGFjZSBnbAoreworY2xhc3MgVmFyeWluZ1BhY2tpbmc7Cit9CisKIG5hbWVzcGFjZSBzaAog
ewogc3RydWN0IEJsb2NrTWVtYmVySW5mbzsKQEAgLTI0LDI2ICsyOSwyNyBAQCBzdHJ1Y3QgQmxv
Y2tNZW1iZXJJbmZvOwogCiBuYW1lc3BhY2UgcngKIHsKK2NsYXNzIENvbnRleHRJbXBsOwogCi1z
dHJ1Y3QgTGlua1Jlc3VsdAotewotICAgIExpbmtSZXN1bHQoYm9vbCBsaW5rU3VjY2VzcywgY29u
c3QgZ2w6OkVycm9yICZlcnJvcikgOiBsaW5rU3VjY2VzcyhsaW5rU3VjY2VzcyksIGVycm9yKGVy
cm9yKSB7fQotCi0gICAgYm9vbCBsaW5rU3VjY2VzczsKLSAgICBnbDo6RXJyb3IgZXJyb3I7Ci19
OwordXNpbmcgTGlua1Jlc3VsdCA9IGdsOjpFcnJvck9yUmVzdWx0PGJvb2w+OwogCiBjbGFzcyBQ
cm9ncmFtSW1wbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6CiAgICAgUHJvZ3Jh
bUltcGwoY29uc3QgZ2w6OlByb2dyYW1TdGF0ZSAmc3RhdGUpIDogbVN0YXRlKHN0YXRlKSB7fQog
ICAgIHZpcnR1YWwgflByb2dyYW1JbXBsKCkge30KKyAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveShj
b25zdCBDb250ZXh0SW1wbCAqY29udGV4dEltcGwpIHt9CiAKLSAgICB2aXJ0dWFsIExpbmtSZXN1
bHQgbG9hZChnbDo6SW5mb0xvZyAmaW5mb0xvZywgZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJl
YW0pID0gMDsKKyAgICB2aXJ0dWFsIExpbmtSZXN1bHQgbG9hZChjb25zdCBDb250ZXh0SW1wbCAq
Y29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkluZm9Mb2cgJmlu
Zm9Mb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkJpbmFyeUlucHV0U3RyZWFt
ICpzdHJlYW0pICA9IDA7CiAgICAgdmlydHVhbCBnbDo6RXJyb3Igc2F2ZShnbDo6QmluYXJ5T3V0
cHV0U3RyZWFtICpzdHJlYW0pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QmluYXJ5UmV0cmll
dmFibGVIaW50KGJvb2wgcmV0cmlldmFibGUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2Vw
YXJhYmxlKGJvb2wgc2VwYXJhYmxlKSAgICAgICAgICAgICAgID0gMDsKIAotICAgIHZpcnR1YWwg
TGlua1Jlc3VsdCBsaW5rKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIGdsOjpJbmZvTG9n
ICZpbmZvTG9nKSA9IDA7CisgICAgdmlydHVhbCBMaW5rUmVzdWx0IGxpbmsoQ29udGV4dEltcGwg
KmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpWYXJ5
aW5nUGFja2luZyAmcGFja2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SW5m
b0xvZyAmaW5mb0xvZykgPSAwOwogICAgIHZpcnR1YWwgR0xib29sZWFuIHZhbGlkYXRlKGNvbnN0
IGdsOjpDYXBzICZjYXBzLCBnbDo6SW5mb0xvZyAqaW5mb0xvZykgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIHNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMZmxvYXQgKnYpID0gMDsKQEAgLTkwLDYgKzk2LDYgQEAgY2xhc3MgUHJvZ3JhbUltcGwgOiBh
bmdsZTo6Tm9uQ29weWFibGUKICAgICBjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZtU3RhdGU7CiB9
OwogCi19Cit9ICAvLyBuYW1lc3BhY2UgcngKIAogI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRFUkVS
X1BST0dSQU1JTVBMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUltcGxfbW9jay5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsX21vY2suaAppbmRleCAxYmMy
MGJiZWY2YS4uOWI4MzBjMDU3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbF9tb2NrLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dyYW1JbXBsX21vY2suaApA
QCAtMjEsMTMgKzIxLDE0IEBAIGNsYXNzIE1vY2tQcm9ncmFtSW1wbCA6IHB1YmxpYyByeDo6UHJv
Z3JhbUltcGwKIHsKICAgcHVibGljOgogICAgIE1vY2tQcm9ncmFtSW1wbCgpIDogUHJvZ3JhbUlt
cGwoZ2w6OlByb2dyYW1TdGF0ZSgpKSB7fQotICAgIHZpcnR1YWwgfk1vY2tQcm9ncmFtSW1wbCgp
IHsgZGVzdHJveSgpOyB9CisgICAgdmlydHVhbCB+TW9ja1Byb2dyYW1JbXBsKCkgeyBkZXN0cnVj
dG9yKCk7IH0KIAotICAgIE1PQ0tfTUVUSE9EMihsb2FkLCBMaW5rUmVzdWx0KGdsOjpJbmZvTG9n
ICYsIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqKSk7CisgICAgTU9DS19NRVRIT0QzKGxvYWQsIExp
bmtSZXN1bHQoY29uc3QgQ29udGV4dEltcGwgKiwgZ2w6OkluZm9Mb2cgJiwgZ2w6OkJpbmFyeUlu
cHV0U3RyZWFtICopKTsKICAgICBNT0NLX01FVEhPRDEoc2F2ZSwgZ2w6OkVycm9yKGdsOjpCaW5h
cnlPdXRwdXRTdHJlYW0gKikpOwogICAgIE1PQ0tfTUVUSE9EMShzZXRCaW5hcnlSZXRyaWV2YWJs
ZUhpbnQsIHZvaWQoYm9vbCkpOworICAgIE1PQ0tfTUVUSE9EMShzZXRTZXBhcmFibGUsIHZvaWQo
Ym9vbCkpOwogCi0gICAgTU9DS19NRVRIT0QyKGxpbmssIExpbmtSZXN1bHQoY29uc3QgZ2w6OkNv
bnRleHRTdGF0ZSAmLCBnbDo6SW5mb0xvZyAmKSk7CisgICAgTU9DS19NRVRIT0QzKGxpbmssIExp
bmtSZXN1bHQoQ29udGV4dEltcGwgKiwgY29uc3QgZ2w6OlZhcnlpbmdQYWNraW5nICYsIGdsOjpJ
bmZvTG9nICYpKTsKICAgICBNT0NLX01FVEhPRDIodmFsaWRhdGUsIEdMYm9vbGVhbihjb25zdCBn
bDo6Q2FwcyAmLCBnbDo6SW5mb0xvZyAqKSk7CiAKICAgICBNT0NLX01FVEhPRDMoc2V0VW5pZm9y
bTFmdiwgdm9pZChHTGludCwgR0xzaXplaSwgY29uc3QgR0xmbG9hdCAqKSk7CkBAIC01OSw3ICs2
MCw3IEBAIGNsYXNzIE1vY2tQcm9ncmFtSW1wbCA6IHB1YmxpYyByeDo6UHJvZ3JhbUltcGwKICAg
ICBNT0NLX01FVEhPRDQoc2V0UGF0aEZyYWdtZW50SW5wdXRHZW4sCiAgICAgICAgICAgICAgICAg
IHZvaWQoY29uc3Qgc3RkOjpzdHJpbmcgJiwgR0xlbnVtLCBHTGludCwgY29uc3QgR0xmbG9hdCAq
KSk7CiAKLSAgICBNT0NLX01FVEhPRDAoZGVzdHJveSwgdm9pZCgpKTsKKyAgICBNT0NLX01FVEhP
RDAoZGVzdHJ1Y3Rvciwgdm9pZCgpKTsKIH07CiAKIGlubGluZSA6OnRlc3Rpbmc6Ok5pY2VNb2Nr
PE1vY2tQcm9ncmFtSW1wbD4gKk1ha2VQcm9ncmFtTW9jaygpCkBAIC02Nyw3ICs2OCw3IEBAIGlu
bGluZSA6OnRlc3Rpbmc6Ok5pY2VNb2NrPE1vY2tQcm9ncmFtSW1wbD4gKk1ha2VQcm9ncmFtTW9j
aygpCiAgICAgOjp0ZXN0aW5nOjpOaWNlTW9jazxNb2NrUHJvZ3JhbUltcGw+ICpwcm9ncmFtSW1w
bCA9IG5ldyA6OnRlc3Rpbmc6Ok5pY2VNb2NrPE1vY2tQcm9ncmFtSW1wbD4oKTsKICAgICAvLyBU
T0RPKGptYWRpbGwpOiBhZGQgT05fQ0FMTFMgZm9yIHJldHVybmluZyBtZXRob2RzCiAgICAgLy8g
V2UgbXVzdCBtb2NrIHRoZSBkZXN0cnVjdG9yIHNpbmNlIE5pY2VNb2NrIGRvZXNuJ3Qgd29yayBm
b3IgZGVzdHJ1Y3RvcnMuCi0gICAgRVhQRUNUX0NBTEwoKnByb2dyYW1JbXBsLCBkZXN0cm95KCkp
LlRpbWVzKDEpLlJldGlyZXNPblNhdHVyYXRpb24oKTsKKyAgICBFWFBFQ1RfQ0FMTCgqcHJvZ3Jh
bUltcGwsIGRlc3RydWN0b3IoKSkuVGltZXMoMSkuUmV0aXJlc09uU2F0dXJhdGlvbigpOwogCiAg
ICAgcmV0dXJuIHByb2dyYW1JbXBsOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1NoYWRlckltcGwuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9TaGFkZXJJbXBsLmgKaW5kZXggNzdmNmU5
YjIyNDIuLjc3ZTAyZDAyMzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvU2hhZGVySW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9TaGFkZXJJbXBsLmgKQEAgLTIxLDcgKzIxLDcg
QEAgY2xhc3MgU2hhZGVySW1wbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIFNoYWRlckltcGwo
Y29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRhKSA6IG1EYXRhKGRhdGEpIHt9CiAgICAgdmlydHVh
bCB+U2hhZGVySW1wbCgpIHsgfQogCi0gICAgLy8gUmV0dXJucyBhZGRpdGlvbmFsIFNoQ29tcGls
ZSBvcHRpb25zLgorICAgIC8vIFJldHVybnMgYWRkaXRpb25hbCBzaDo6Q29tcGlsZSBvcHRpb25z
LgogICAgIHZpcnR1YWwgU2hDb21waWxlT3B0aW9ucyBwcmVwYXJlU291cmNlQW5kUmV0dXJuT3B0
aW9ucyhzdGQ6OnN0cmluZ3N0cmVhbSAqc291cmNlU3RyZWFtLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqc291
cmNlUGF0aCkgPSAwOwogICAgIC8vIFJldHVybnMgc3VjY2VzcyBmb3IgY29tcGlsaW5nIG9uIHRo
ZSBkcml2ZXIuIFJldHVybnMgc3VjY2Vzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvU3VyZmFjZUltcGwuY3BwCmluZGV4
IDUxNzIxNGIzNjYzLi5lNGIzZDdjOGI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1N1cmZhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvU3VyZmFjZUltcGwuY3BwCkBA
IC0xOSw0ICsxOSwxMCBAQCBTdXJmYWNlSW1wbDo6flN1cmZhY2VJbXBsKCkKIHsKIH0KIAorZWds
OjpFcnJvciBTdXJmYWNlSW1wbDo6c3dhcFdpdGhEYW1hZ2UoRUdMaW50ICpyZWN0cywgRUdMaW50
IG5fcmVjdHMpCit7CisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfQkFEX1NVUkZBQ0UsICJzd2FwV2l0aERhbWFnZSBpbXBsZW1lbnRhdGlvbiBtaXNzaW5nLiIp
OworfQorCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1N1cmZhY2VJbXBsLmgKaW5kZXggNmY0
ZGZmZGM0ZTkuLjBlNGYxNzdkNjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvU3VyZmFjZUltcGwuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvU3VyZmFjZUltcGwuaApAQCAtMzEsNiAr
MzEsNyBAQCBzdHJ1Y3QgU3VyZmFjZVN0YXRlOwogCiBuYW1lc3BhY2UgcngKIHsKK2NsYXNzIERp
c3BsYXlJbXBsOwogY2xhc3MgRnJhbWVidWZmZXJJbXBsOwogCiBjbGFzcyBTdXJmYWNlSW1wbCA6
IHB1YmxpYyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBsCkBAIC0zOCwxMCArMzksMTIg
QEAgY2xhc3MgU3VyZmFjZUltcGwgOiBwdWJsaWMgRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0
SW1wbAogICBwdWJsaWM6CiAgICAgU3VyZmFjZUltcGwoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUg
JnN1cmZhY2VTdGF0ZSk7CiAgICAgdmlydHVhbCB+U3VyZmFjZUltcGwoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGVzdHJveShjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUltcGwpIHt9CiAKLSAgICB2
aXJ0dWFsIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZSgpID0gMDsKKyAgICB2aXJ0dWFsIGVnbDo6RXJy
b3IgaW5pdGlhbGl6ZShjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUltcGwpICAgICAgICAgICAg
ICAgICAgICAgICAgPSAwOwogICAgIHZpcnR1YWwgRnJhbWVidWZmZXJJbXBsICpjcmVhdGVEZWZh
dWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKSA9IDA7Ci0g
ICAgdmlydHVhbCBlZ2w6OkVycm9yIHN3YXAoKSA9IDA7CisgICAgdmlydHVhbCBlZ2w6OkVycm9y
IHN3YXAoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gMDsKKyAgICB2aXJ0dWFsIGVnbDo6RXJyb3Igc3dhcFdpdGhEYW1hZ2UoRUdM
aW50ICpyZWN0cywgRUdMaW50IG5fcmVjdHMpOwogICAgIHZpcnR1YWwgZWdsOjpFcnJvciBwb3N0
U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0
KSA9IDA7CiAgICAgdmlydHVhbCBlZ2w6OkVycm9yIHF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShF
R0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpID0gMDsKICAgICB2aXJ0dWFsIGVnbDo6RXJy
b3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVyKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvVGV4dHVyZUltcGwuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL1RleHR1cmVJbXBsLmNwcAppbmRleCBhZjQ3OTYzNzE2Zi4uNDdhNzM5MDJmMGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9UZXh0dXJlSW1wbC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsLmNwcApAQCAtMTksOCArMTksMTIgQEAgVGV4dHVyZUlt
cGw6On5UZXh0dXJlSW1wbCgpCiB7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlSW1wbDo6Y29weVRl
eHR1cmUoR0xlbnVtIGludGVybmFsRm9ybWF0LAorZ2w6OkVycm9yIFRleHR1cmVJbXBsOjpjb3B5
VGV4dHVyZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IHNvdXJjZUxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVu
cGFja0ZsaXBZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFj
a1ByZW11bHRpcGx5QWxwaGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgdW5wYWNrVW5tdWx0aXBseUFscGhhLApAQCAtMzAsNyArMzQsMTEgQEAgZ2w6OkVycm9yIFRl
eHR1cmVJbXBsOjpjb3B5VGV4dHVyZShHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNIUk9NSVVNX2NvcHlfdGV4dHVyZSBl
eHBvc2VkIGJ1dCBub3QgaW1wbGVtZW50ZWQuIik7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlSW1w
bDo6Y29weVN1YlRleHR1cmUoY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKK2dsOjpFcnJv
ciBUZXh0dXJlSW1wbDo6Y29weVN1YlRleHR1cmUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZz
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VM
ZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJl
Y3RhbmdsZSAmc291cmNlQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCB1bnBhY2tGbGlwWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLApAQCAtNDEsMTAgKzQ5LDEwIEBAIGdsOjpF
cnJvciBUZXh0dXJlSW1wbDo6Y29weVN1YlRleHR1cmUoY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9m
ZnNldCwKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ0hST01J
VU1fY29weV90ZXh0dXJlIGV4cG9zZWQgYnV0IG5vdCBpbXBsZW1lbnRlZC4iKTsKIH0KIAotZ2w6
OkVycm9yIFRleHR1cmVJbXBsOjpjb3B5Q29tcHJlc3NlZFRleHR1cmUoY29uc3QgZ2w6OlRleHR1
cmUgKnNvdXJjZSkKK2dsOjpFcnJvciBUZXh0dXJlSW1wbDo6Y29weUNvbXByZXNzZWRUZXh0dXJl
KENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwgY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSkKIHsK
ICAgICBVTlJFQUNIQUJMRSgpOwogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAiQ0hST01JVU1fY29weV9jb21wcmVzc2VkX3Rl
eHR1cmUgZXhwb3NlZCBidXQgbm90IGltcGxlbWVudGVkLiIpOwogfQotfQorfSAgLy8gbmFtZXNw
YWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvVGV4dHVyZUltcGwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbC5oCmluZGV4IDdkMGViZTJmMTE4Li4wNzc0ODVjMzQ3
MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL1RleHR1cmVJbXBsLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsLmgKQEAgLTM4LDYgKzM4LDcgQEAgc3RydWN0IFRleHR1
cmVTdGF0ZTsKIAogbmFtZXNwYWNlIHJ4CiB7CitjbGFzcyBDb250ZXh0SW1wbDsKIAogY2xhc3Mg
VGV4dHVyZUltcGwgOiBwdWJsaWMgRnJhbWVidWZmZXJBdHRhY2htZW50T2JqZWN0SW1wbAogewpA
QCAtNDUsMzcgKzQ2LDg5IEBAIGNsYXNzIFRleHR1cmVJbXBsIDogcHVibGljIEZyYW1lYnVmZmVy
QXR0YWNobWVudE9iamVjdEltcGwKICAgICBUZXh0dXJlSW1wbChjb25zdCBnbDo6VGV4dHVyZVN0
YXRlICZzdGF0ZSk7CiAgICAgdmlydHVhbCB+VGV4dHVyZUltcGwoKTsKIAotICAgIHZpcnR1YWwg
Z2w6OkVycm9yIHNldEltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVtIGlu
dGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwgR0xlbnVtIGZvcm1hdCwgR0xl
bnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVs
VW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxzKSA9IDA7Ci0gICAgdmly
dHVhbCBnbDo6RXJyb3Igc2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBj
b25zdCBnbDo6Qm94ICZhcmVhLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5w
YWNrLCBjb25zdCB1aW50OF90ICpwaXhlbHMpID0gMDsKLQotICAgIHZpcnR1YWwgZ2w6OkVycm9y
IHNldENvbXByZXNzZWRJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIEdMZW51bSBp
bnRlcm5hbEZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBh
Y2ssIHNpemVfdCBpbWFnZVNpemUsIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgPSAwOwotICAgIHZp
cnR1YWwgZ2w6OkVycm9yIHNldENvbXByZXNzZWRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXpl
X3QgbGV2ZWwsIGNvbnN0IGdsOjpCb3ggJmFyZWEsIEdMZW51bSBmb3JtYXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0
YXRlICZ1bnBhY2ssIHNpemVfdCBpbWFnZVNpemUsIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgPSAw
OwotCi0gICAgdmlydHVhbCBnbDo6RXJyb3IgY29weUltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVf
dCBsZXZlbCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwgR0xlbnVtIGludGVybmFs
Rm9ybWF0LAorICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldEltYWdlKENvbnRleHRJbXBsICpjb250
ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9y
IHNldFN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6Qm94ICZhcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVs
VW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICpwaXhlbHMpID0gMDsKKworICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldENv
bXByZXNzZWRJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVs
VW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGltYWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSA9IDA7CisgICAgdmlydHVhbCBnbDo6RXJy
b3Igc2V0Q29tcHJlc3NlZFN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94
ICZhcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpID0gMDsK
KworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNvcHlJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dElt
cGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkg
PSAwOwotICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBz
aXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgdmlydHVhbCBnbDo6RXJyb3IgY29weVN1YkltYWdlKENv
bnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkgPSAwOwogCi0gICAgdmly
dHVhbCBnbDo6RXJyb3IgY29weVRleHR1cmUoR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgIHZp
cnR1YWwgZ2w6OkVycm9yIGNvcHlUZXh0dXJlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IHNvdXJjZUxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgdW5wYWNrRmxpcFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgdW5wYWNrVW5tdWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpOwotICAgIHZpcnR1YWwg
Z2w6OkVycm9yIGNvcHlTdWJUZXh0dXJlKGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisg
ICAgdmlydHVhbCBnbDo6RXJyb3IgY29weVN1YlRleHR1cmUoQ29udGV4dEltcGwgKmNvbnRleHRJ
bXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RP
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNvdXJj
ZUxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpS
ZWN0YW5nbGUgJnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCB1bnBhY2tGbGlwWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSk7CiAKLSAgICB2
aXJ0dWFsIGdsOjpFcnJvciBjb3B5Q29tcHJlc3NlZFRleHR1cmUoY29uc3QgZ2w6OlRleHR1cmUg
KnNvdXJjZSk7CisgICAgdmlydHVhbCBnbDo6RXJyb3IgY29weUNvbXByZXNzZWRUZXh0dXJlKENv
bnRleHRJbXBsICpjb250ZXh0SW1wbCwgY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSk7CisKKyAg
ICB2aXJ0dWFsIGdsOjpFcnJvciBzZXRTdG9yYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWxzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpID0gMDsKIAotICAgIHZp
cnR1YWwgZ2w6OkVycm9yIHNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVscywg
R0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSkgPSAwOworICAg
IHZpcnR1YWwgZ2w6OkVycm9yIHNldFN0b3JhZ2VNdWx0aXNhbXBsZShDb250ZXh0SW1wbCAqY29u
dGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlv
bnMpID0gMDsKIAogICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldEVHTEltYWdlVGFyZ2V0KEdMZW51
bSB0YXJnZXQsIGVnbDo6SW1hZ2UgKmltYWdlKSA9IDA7CiAKQEAgLTgzLDcgKzEzNiw3IEBAIGNs
YXNzIFRleHR1cmVJbXBsIDogcHVibGljIEZyYW1lYnVmZmVyQXR0YWNobWVudE9iamVjdEltcGwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3RyZWFtICpzdHJl
YW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OlN0
cmVhbTo6R0xUZXh0dXJlRGVzY3JpcHRpb24gJmRlc2MpID0gMDsKIAotICAgIHZpcnR1YWwgZ2w6
OkVycm9yIGdlbmVyYXRlTWlwbWFwKCkgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdlbmVy
YXRlTWlwbWFwKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCkgPSAwOwogCiAgICAgdmlydHVhbCB2
b2lkIHNldEJhc2VMZXZlbChHTHVpbnQgYmFzZUxldmVsKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9UZXh0dXJlSW1wbF9t
b2NrLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvVGV4
dHVyZUltcGxfbW9jay5oCmluZGV4IGQ3Zjg5NmM0MTRmLi4xNDhjY2FiYzFlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJ
bXBsX21vY2suaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvVGV4dHVyZUltcGxfbW9jay5oCkBAIC0xOSwzOCArMTksMTAzIEBAIG5hbWVzcGFjZSBy
eAogY2xhc3MgTW9ja1RleHR1cmVJbXBsIDogcHVibGljIFRleHR1cmVJbXBsCiB7CiAgIHB1Ymxp
YzoKLSAgICBNb2NrVGV4dHVyZUltcGwoKSA6IFRleHR1cmVJbXBsKGdsOjpUZXh0dXJlU3RhdGUo
R0xfVEVYVFVSRV8yRCkpIHt9CisgICAgTW9ja1RleHR1cmVJbXBsKCkgOiBUZXh0dXJlSW1wbCht
TW9ja1N0YXRlKSwgbU1vY2tTdGF0ZShHTF9URVhUVVJFXzJEKSB7fQogICAgIHZpcnR1YWwgfk1v
Y2tUZXh0dXJlSW1wbCgpIHsgZGVzdHJ1Y3RvcigpOyB9Ci0gICAgTU9DS19NRVRIT0Q4KHNldElt
YWdlLCBnbDo6RXJyb3IoR0xlbnVtLCBzaXplX3QsIEdMZW51bSwgY29uc3QgZ2w6OkV4dGVudHMg
JiwgR0xlbnVtLCBHTGVudW0sIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICYsIGNvbnN0IHVp
bnQ4X3QgKikpOwotICAgIE1PQ0tfTUVUSE9ENyhzZXRTdWJJbWFnZSwgZ2w6OkVycm9yKEdMZW51
bSwgc2l6ZV90LCBjb25zdCBnbDo6Qm94ICYsIEdMZW51bSwgR0xlbnVtLCBjb25zdCBnbDo6UGl4
ZWxVbnBhY2tTdGF0ZSAmLCBjb25zdCB1aW50OF90ICopKTsKLSAgICBNT0NLX01FVEhPRDcoc2V0
Q29tcHJlc3NlZEltYWdlLCBnbDo6RXJyb3IoR0xlbnVtLCBzaXplX3QsIEdMZW51bSwgY29uc3Qg
Z2w6OkV4dGVudHMgJiwgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJiwgc2l6ZV90LCBjb25z
dCB1aW50OF90ICopKTsKLSAgICBNT0NLX01FVEhPRDcoc2V0Q29tcHJlc3NlZFN1YkltYWdlLCBn
bDo6RXJyb3IoR0xlbnVtLCBzaXplX3QsIGNvbnN0IGdsOjpCb3ggJiwgR0xlbnVtLCBjb25zdCBn
bDo6UGl4ZWxVbnBhY2tTdGF0ZSAmLCBzaXplX3QsIGNvbnN0IHVpbnQ4X3QgKikpOwotICAgIE1P
Q0tfTUVUSE9ENShjb3B5SW1hZ2UsIGdsOjpFcnJvcihHTGVudW0sIHNpemVfdCwgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmLCBHTGVudW0sIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqKSk7Ci0gICAgTU9D
S19NRVRIT0Q1KGNvcHlTdWJJbWFnZSwgZ2w6OkVycm9yKEdMZW51bSwgc2l6ZV90LCBjb25zdCBn
bDo6T2Zmc2V0ICYsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJiwgY29uc3QgZ2w6OkZyYW1lYnVmZmVy
ICopKTsKLSAgICBNT0NLX01FVEhPRDYoY29weVRleHR1cmUsIGdsOjpFcnJvcihHTGVudW0sIEdM
ZW51bSwgYm9vbCwgYm9vbCwgYm9vbCwgY29uc3QgZ2w6OlRleHR1cmUgKikpOwotICAgIE1PQ0tf
TUVUSE9ENihjb3B5U3ViVGV4dHVyZSwKLSAgICAgICAgICAgICAgICAgZ2w6OkVycm9yKGNvbnN0
IGdsOjpPZmZzZXQgJiwKKyAgICBNT0NLX01FVEhPRDkoc2V0SW1hZ2UsCisgICAgICAgICAgICAg
ICAgIGdsOjpFcnJvcihDb250ZXh0SW1wbCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OkV4dGVudHMgJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICopKTsKKyAgICBNT0NLX01FVEhPRDgoc2V0U3ViSW1hZ2UsCisgICAg
ICAgICAgICAgICAgIGdsOjpFcnJvcihDb250ZXh0SW1wbCAqLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKikpOworICAgIE1PQ0tf
TUVUSE9EOChzZXRDb21wcmVzc2VkSW1hZ2UsCisgICAgICAgICAgICAgICAgIGdsOjpFcnJvcihD
b250ZXh0SW1wbCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICopKTsKKyAgICBNT0NLX01FVEhPRDgoc2V0Q29tcHJlc3Nl
ZFN1YkltYWdlLAorICAgICAgICAgICAgICAgICBnbDo6RXJyb3IoQ29udGV4dEltcGwgKiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICYsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90
ICopKTsKKyAgICBNT0NLX01FVEhPRDYoY29weUltYWdlLAorICAgICAgICAgICAgICAgICBnbDo6
RXJyb3IoQ29udGV4dEltcGwgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib29sLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpU
ZXh0dXJlICopKTsKLSAgICBNT0NLX01FVEhPRDEoY29weUNvbXByZXNzZWRUZXh0dXJlLCBnbDo6
RXJyb3IoY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSkpOwotICAgIE1PQ0tfTUVUSE9ENChzZXRT
dG9yYWdlLCBnbDo6RXJyb3IoR0xlbnVtLCBzaXplX3QsIEdMZW51bSwgY29uc3QgZ2w6OkV4dGVu
dHMgJikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICopKTsKKyAgICBNT0NLX01FVEhP
RDYoY29weVN1YkltYWdlLAorICAgICAgICAgICAgICAgICBnbDo6RXJyb3IoQ29udGV4dEltcGwg
KiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpP
ZmZzZXQgJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqKSk7
CisgICAgTU9DS19NRVRIT0QxMChjb3B5VGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgIGdsOjpF
cnJvcihDb250ZXh0SW1wbCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlRleHR1cmUgKikpOworICAgIE1PQ0tfTUVUSE9EMTAoY29weVN1YlRleHR1cmUsCisg
ICAgICAgICAgICAgICAgICBnbDo6RXJyb3IoQ29udGV4dEltcGwgKiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpU
ZXh0dXJlICopKTsKKyAgICBNT0NLX01FVEhPRDIoY29weUNvbXByZXNzZWRUZXh0dXJlLCBnbDo6
RXJyb3IoQ29udGV4dEltcGwgKiwgY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSkpOworICAgIE1P
Q0tfTUVUSE9ENShzZXRTdG9yYWdlLCBnbDo6RXJyb3IoQ29udGV4dEltcGwgKiwgR0xlbnVtLCBz
aXplX3QsIEdMZW51bSwgY29uc3QgZ2w6OkV4dGVudHMgJikpOwogICAgIE1PQ0tfTUVUSE9EMyhz
ZXRJbWFnZUV4dGVybmFsLAogICAgICAgICAgICAgICAgICBnbDo6RXJyb3IoR0xlbnVtLCBlZ2w6
OlN0cmVhbSAqLCBjb25zdCBlZ2w6OlN0cmVhbTo6R0xUZXh0dXJlRGVzY3JpcHRpb24gJikpOwog
ICAgIE1PQ0tfTUVUSE9EMihzZXRFR0xJbWFnZVRhcmdldCwgZ2w6OkVycm9yKEdMZW51bSwgZWds
OjpJbWFnZSAqKSk7Ci0gICAgTU9DS19NRVRIT0QwKGdlbmVyYXRlTWlwbWFwLCBnbDo6RXJyb3Io
KSk7CisgICAgTU9DS19NRVRIT0QxKGdlbmVyYXRlTWlwbWFwLCBnbDo6RXJyb3IoQ29udGV4dElt
cGwgKikpOwogICAgIE1PQ0tfTUVUSE9EMShiaW5kVGV4SW1hZ2UsIHZvaWQoZWdsOjpTdXJmYWNl
ICopKTsKICAgICBNT0NLX01FVEhPRDAocmVsZWFzZVRleEltYWdlLCB2b2lkKHZvaWQpKTsKIAog
ICAgIE1PQ0tfTUVUSE9EMihnZXRBdHRhY2htZW50UmVuZGVyVGFyZ2V0LCBnbDo6RXJyb3IoY29u
c3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICYsIEZyYW1lYnVmZmVyQXR0YWNo
bWVudFJlbmRlclRhcmdldCAqKikpOwogCisgICAgTU9DS19NRVRIT0Q2KHNldFN0b3JhZ2VNdWx0
aXNhbXBsZSwKKyAgICAgICAgICAgICAgICAgZ2w6OkVycm9yKENvbnRleHRJbXBsICosIEdMZW51
bSwgR0xzaXplaSwgR0xpbnQsIGNvbnN0IGdsOjpFeHRlbnRzICYsIEdMYm9vbGVhbikpOworCiAg
ICAgTU9DS19NRVRIT0QxKHNldEJhc2VMZXZlbCwgdm9pZChHTHVpbnQpKTsKIAogICAgIE1PQ0tf
TUVUSE9EMShzeW5jU3RhdGUsIHZvaWQoY29uc3QgZ2w6OlRleHR1cmU6OkRpcnR5Qml0cyAmKSk7
CiAKICAgICBNT0NLX01FVEhPRDAoZGVzdHJ1Y3Rvciwgdm9pZCgpKTsKKworICBwcm90ZWN0ZWQ6
CisgICAgZ2w6OlRleHR1cmVTdGF0ZSBtTW9ja1N0YXRlOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1ZlcnRleEFycmF5
SW1wbC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Zl
cnRleEFycmF5SW1wbC5oCmluZGV4IGIxYmUzNjkxYWRlLi5hOTMzYmEyZjViNSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1ZlcnRleEFy
cmF5SW1wbC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9WZXJ0ZXhBcnJheUltcGwuaApAQCAtMTUsMTMgKzE1LDE0IEBACiAKIG5hbWVzcGFjZSBy
eAogeworY2xhc3MgQ29udGV4dEltcGw7CiAKIGNsYXNzIFZlcnRleEFycmF5SW1wbCA6IGFuZ2xl
OjpOb25Db3B5YWJsZQogewogICBwdWJsaWM6CiAgICAgVmVydGV4QXJyYXlJbXBsKGNvbnN0IGds
OjpWZXJ0ZXhBcnJheVN0YXRlICZkYXRhKSA6IG1EYXRhKGRhdGEpIHt9CiAgICAgdmlydHVhbCB+
VmVydGV4QXJyYXlJbXBsKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHN5bmNTdGF0ZShjb25zdCBn
bDo6VmVydGV4QXJyYXk6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSB7fQorICAgIHZpcnR1YWwgdm9p
ZCBzeW5jU3RhdGUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLCBjb25zdCBnbDo6VmVydGV4QXJy
YXk6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSB7fQogICBwcm90ZWN0ZWQ6CiAgICAgY29uc3QgZ2w6
OlZlcnRleEFycmF5U3RhdGUgJm1EYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9hbmdsZV9mb3JtYXQucHkgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvYW5nbGVfZm9ybWF0LnB5Cmlu
ZGV4IGU0NmJjN2RiYTk5Li40M2NhNjg0YzMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2FuZ2xlX2Zvcm1hdC5weQorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvYW5nbGVfZm9ybWF0LnB5
CkBAIC04LDYgKzgsNyBAQAogCiBpbXBvcnQganNvbgogaW1wb3J0IG9zCitpbXBvcnQgcmUKIAog
ZGVmIHJlamVjdF9kdXBsaWNhdGVfa2V5cyhwYWlycyk6CiAgICAgZm91bmRfa2V5cyA9IHt9CkBA
IC0zNCwxMiArMzUsMTM2IEBAIGRlZiBsb2FkX2ludmVyc2VfdGFibGUocGF0aCk6CiAgICAgcmVq
ZWN0X2R1cGxpY2F0ZV9rZXlzKHBhaXJzKQogICAgIHJldHVybiB7IGFuZ2xlOiBnbCBmb3IgZ2ws
IGFuZ2xlIGluIHBhaXJzIH0KIAotZGVmIGxvYWRfd2l0aF9vdmVycmlkZShvdmVycmlkZV9wYXRo
KToKK2RlZiBsb2FkX3dpdGhvdXRfb3ZlcnJpZGUoKToKICAgICBtYXBfcGF0aCA9IG9zLnBhdGgu
am9pbihvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpLCAnYW5nbGVf
Zm9ybWF0X21hcC5qc29uJykKLSAgICByZXN1bHRzID0gbG9hZF9mb3J3YXJkX3RhYmxlKG1hcF9w
YXRoKQorICAgIHJldHVybiBsb2FkX2ZvcndhcmRfdGFibGUobWFwX3BhdGgpCisKK2RlZiBsb2Fk
X3dpdGhfb3ZlcnJpZGUob3ZlcnJpZGVfcGF0aCk6CisgICAgcmVzdWx0cyA9IGxvYWRfd2l0aG91
dF9vdmVycmlkZSgpCiAgICAgb3ZlcnJpZGVzID0gbG9hZF9qc29uKG92ZXJyaWRlX3BhdGgpCiAK
ICAgICBmb3IgaywgdiBpbiBvdmVycmlkZXMuaXRlcml0ZW1zKCk6CiAgICAgICAgIHJlc3VsdHNb
a10gPSB2CiAKICAgICByZXR1cm4gcmVzdWx0cworCitkZWYgZ2V0X2NvbXBvbmVudF90eXBlKGZv
cm1hdF9pZCk6CisgICAgaWYgIlNOT1JNIiBpbiBmb3JtYXRfaWQ6CisgICAgICAgIHJldHVybiAi
c25vcm0iCisgICAgZWxpZiAiVU5PUk0iIGluIGZvcm1hdF9pZDoKKyAgICAgICAgcmV0dXJuICJ1
bm9ybSIKKyAgICBlbGlmICJGTE9BVCIgaW4gZm9ybWF0X2lkOgorICAgICAgICByZXR1cm4gImZs
b2F0IgorICAgIGVsaWYgIlVJTlQiIGluIGZvcm1hdF9pZDoKKyAgICAgICAgcmV0dXJuICJ1aW50
IgorICAgIGVsaWYgIlNJTlQiIGluIGZvcm1hdF9pZDoKKyAgICAgICAgcmV0dXJuICJpbnQiCisg
ICAgZWxpZiBmb3JtYXRfaWQgPT0gIk5PTkUiOgorICAgICAgICByZXR1cm4gIm5vbmUiCisgICAg
ZWxpZiAiU1JHQiIgaW4gZm9ybWF0X2lkOgorICAgICAgICByZXR1cm4gInVub3JtIgorICAgIGVs
aWYgZm9ybWF0X2lkID09ICJSOUc5QjlFNV9TSEFSRURFWFAiOgorICAgICAgICByZXR1cm4gImZs
b2F0IgorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVua25vd24gY29tcG9u
ZW50IHR5cGUgZm9yICIgKyBmb3JtYXRfaWQpCisKK2RlZiBnZXRfY2hhbm5lbF90b2tlbnMoZm9y
bWF0X2lkKToKKyAgICByID0gcmUuY29tcGlsZShyJyhbQUJER0xSU11bXGRdKyknKQorICAgIHJl
dHVybiBmaWx0ZXIoci5tYXRjaCwgci5zcGxpdChmb3JtYXRfaWQpKQorCitkZWYgZ2V0X2NoYW5u
ZWxzKGZvcm1hdF9pZCk6CisgICAgY2hhbm5lbHMgPSAnJworICAgIHRva2VucyA9IGdldF9jaGFu
bmVsX3Rva2Vucyhmb3JtYXRfaWQpCisgICAgaWYgbGVuKHRva2VucykgPT0gMDoKKyAgICAgICAg
cmV0dXJuIE5vbmUKKyAgICBmb3IgdG9rZW4gaW4gdG9rZW5zOgorICAgICAgICBjaGFubmVscyAr
PSB0b2tlblswXS5sb3dlcigpCisKKyAgICByZXR1cm4gY2hhbm5lbHMKKworZGVmIGdldF9iaXRz
KGZvcm1hdF9pZCk6CisgICAgYml0cyA9IHt9CisgICAgdG9rZW5zID0gZ2V0X2NoYW5uZWxfdG9r
ZW5zKGZvcm1hdF9pZCkKKyAgICBpZiBsZW4odG9rZW5zKSA9PSAwOgorICAgICAgICByZXR1cm4g
Tm9uZQorICAgIGZvciB0b2tlbiBpbiB0b2tlbnM6CisgICAgICAgIGJpdHNbdG9rZW5bMF1dID0g
aW50KHRva2VuWzE6XSkKKyAgICByZXR1cm4gYml0cworCitkZWYgZ2V0X2Zvcm1hdF9pbmZvKGZv
cm1hdF9pZCk6CisgICAgcmV0dXJuIGdldF9jb21wb25lbnRfdHlwZShmb3JtYXRfaWQpLCBnZXRf
Yml0cyhmb3JtYXRfaWQpLCBnZXRfY2hhbm5lbHMoZm9ybWF0X2lkKQorCisjIFRPRE8ob2V0dWFo
byk6IEV4cGFuZCB0aGlzIGNvZGUgc28gdGhhdCBpdCBjb3VsZCBnZW5lcmF0ZSB0aGUgZ2wgZm9y
bWF0IGluZm8gdGFibGVzIGFzIHdlbGwuCitkZWYgZ2xfZm9ybWF0X2NoYW5uZWxzKGludGVybmFs
X2Zvcm1hdCk6CisgICAgaWYgaW50ZXJuYWxfZm9ybWF0ID09ICdHTF9CR1I1X0ExX0FOR0xFWCc6
CisgICAgICAgIHJldHVybiAnYmdyYScKKyAgICBpZiBpbnRlcm5hbF9mb3JtYXQgPT0gJ0dMX1Ix
MUZfRzExRl9CMTBGJzoKKyAgICAgICAgcmV0dXJuICdyZ2InCisgICAgaWYgaW50ZXJuYWxfZm9y
bWF0ID09ICdHTF9SR0I1X0ExJzoKKyAgICAgICAgcmV0dXJuICdyZ2JhJworICAgIGlmIGludGVy
bmFsX2Zvcm1hdC5maW5kKCdHTF9SR0IxMF9BMicpID09IDA6CisgICAgICAgIHJldHVybiAncmdi
YScKKworICAgIGNoYW5uZWxzX3BhdHRlcm4gPSByZS5jb21waWxlKCdHTF8oQ09NUFJFU1NFRF8p
PyhTSUdORURfKT8oRVRDXGRfKT8oW0EtWl0rKScpCisgICAgbWF0Y2ggPSByZS5zZWFyY2goY2hh
bm5lbHNfcGF0dGVybiwgaW50ZXJuYWxfZm9ybWF0KQorICAgIGNoYW5uZWxzX3N0cmluZyA9IG1h
dGNoLmdyb3VwKDQpCisKKyAgICBpZiBjaGFubmVsc19zdHJpbmcgPT0gJ0FMUEhBJzoKKyAgICAg
ICAgcmV0dXJuICdhJworICAgIGlmIGNoYW5uZWxzX3N0cmluZyA9PSAnTFVNSU5BTkNFJzoKKyAg
ICAgICAgaWYgKGludGVybmFsX2Zvcm1hdC5maW5kKCdBTFBIQScpID49IDApOgorICAgICAgICAg
ICAgcmV0dXJuICdsYScKKyAgICAgICAgcmV0dXJuICdsJworICAgIGlmIGNoYW5uZWxzX3N0cmlu
ZyA9PSAnU1JHQic6CisgICAgICAgIGlmIChpbnRlcm5hbF9mb3JtYXQuZmluZCgnQUxQSEEnKSA+
PSAwKToKKyAgICAgICAgICAgIHJldHVybiAncmdiYScKKyAgICAgICAgcmV0dXJuICdyZ2InCisg
ICAgaWYgY2hhbm5lbHNfc3RyaW5nID09ICdERVBUSCc6CisgICAgICAgIGlmIChpbnRlcm5hbF9m
b3JtYXQuZmluZCgnU1RFTkNJTCcpID49IDApOgorICAgICAgICAgICAgcmV0dXJuICdkcycKKyAg
ICAgICAgcmV0dXJuICdkJworICAgIGlmIGNoYW5uZWxzX3N0cmluZyA9PSAnU1RFTkNJTCc6Cisg
ICAgICAgIHJldHVybiAncycKKyAgICByZXR1cm4gY2hhbm5lbHNfc3RyaW5nLmxvd2VyKCkKKwor
ZGVmIGdldF9pbnRlcm5hbF9mb3JtYXRfaW5pdGlhbGl6ZXIoaW50ZXJuYWxfZm9ybWF0LCBmb3Jt
YXRfaWQpOgorICAgIGdsX2NoYW5uZWxzID0gZ2xfZm9ybWF0X2NoYW5uZWxzKGludGVybmFsX2Zv
cm1hdCkKKyAgICBnbF9mb3JtYXRfbm9fYWxwaGEgPSBnbF9jaGFubmVscyA9PSAncmdiJyBvciBn
bF9jaGFubmVscyA9PSAnbCcKKyAgICBjb21wb25lbnRfdHlwZSwgYml0cywgY2hhbm5lbHMgPSBn
ZXRfZm9ybWF0X2luZm8oZm9ybWF0X2lkKQorCisgICAgaWYgbm90IGdsX2Zvcm1hdF9ub19hbHBo
YSBvciBjaGFubmVscyAhPSAncmdiYSc6CisgICAgICAgIHJldHVybiAnbnVsbHB0cicKKworICAg
IGVsaWYgJ0JDMV8nIGluIGZvcm1hdF9pZDoKKyAgICAgICAgIyBCQzEgaXMgYSBzcGVjaWFsIGNh
c2Ugc2luY2UgdGhlIHRleHR1cmUgZGF0YSBkZXRlcm1pbmVzIHdoZXRoZXIgZWFjaCBibG9jayBo
YXMgYW4gYWxwaGEgY2hhbm5lbCBvciBub3QuCisgICAgICAgICMgVGhpcyBpZiBzdGF0ZW1lbnQg
aXMgaGl0IGJ5IENPTVBSRVNTRURfUkdCX1MzVENfRFhUMSwgd2hpY2ggaXMgYSBiaXQgb2YgYSBt
ZXNzLgorICAgICAgICAjIFRPRE8ob2V0dWFobyk6IExvb2sgaW50byB3aGV0aGVyIENPTVBSRVNT
RURfUkdCX1MzVENfRFhUMSB3b3JrcyByaWdodCBpbiBnZW5lcmFsLgorICAgICAgICAjIFJlZmVy
ZW5jZTogaHR0cHM6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS9zcGVjcy9FWFQvdGV4dHVyZV9j
b21wcmVzc2lvbl9zM3RjLnR4dAorICAgICAgICByZXR1cm4gJ251bGxwdHInCisKKyAgICBlbGlm
IGNvbXBvbmVudF90eXBlID09ICd1aW50JyBhbmQgYml0c1snUiddID09IDg6CisgICAgICAgIHJl
dHVybiAnSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAsIDB4MDAsIDB4MDAs
IDB4MDE+JworICAgIGVsaWYgY29tcG9uZW50X3R5cGUgPT0gJ3Vub3JtJyBhbmQgYml0c1snUidd
ID09IDg6CisgICAgICAgIHJldHVybiAnSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUs
IDB4MDAsIDB4MDAsIDB4MDAsIDB4RkY+JworICAgIGVsaWYgY29tcG9uZW50X3R5cGUgPT0gJ3Vu
b3JtJyBhbmQgYml0c1snUiddID09IDE2OgorICAgICAgICByZXR1cm4gJ0luaXRpYWxpemU0Q29t
cG9uZW50RGF0YTxHTHVieXRlLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweEZGRkY+JworICAg
IGVsaWYgY29tcG9uZW50X3R5cGUgPT0gJ2ludCcgYW5kIGJpdHNbJ1InXSA9PSA4OgorICAgICAg
ICByZXR1cm4gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGJ5dGUsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDE+JworICAgIGVsaWYgY29tcG9uZW50X3R5cGUgPT0gJ3Nub3JtJyBhbmQgYml0c1sn
UiddID09IDg6CisgICAgICAgIHJldHVybiAnSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMYnl0
ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHg3Rj4nCisgICAgZWxpZiBjb21wb25lbnRfdHlwZSA9PSAn
c25vcm0nIGFuZCBiaXRzWydSJ10gPT0gMTY6CisgICAgICAgIHJldHVybiAnSW5pdGlhbGl6ZTRD
b21wb25lbnREYXRhPEdMdXNob3J0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweDdGRkY+Jwor
ICAgIGVsaWYgY29tcG9uZW50X3R5cGUgPT0gJ2Zsb2F0JyBhbmQgYml0c1snUiddID09IDE2Ogor
ICAgICAgICByZXR1cm4gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGhhbGYsIDB4MDAwMCwg
MHgwMDAwLCAweDAwMDAsIGdsOjpGbG9hdDE2T25lPicKKyAgICBlbGlmIGNvbXBvbmVudF90eXBl
ID09ICd1aW50JyBhbmQgYml0c1snUiddID09IDE2OgorICAgICAgICByZXR1cm4gJ0luaXRpYWxp
emU0Q29tcG9uZW50RGF0YTxHTHVzaG9ydCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAx
PicKKyAgICBlbGlmIGNvbXBvbmVudF90eXBlID09ICdpbnQnIGFuZCBiaXRzWydSJ10gPT0gMTY6
CisgICAgICAgIHJldHVybiAnSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMc2hvcnQsIDB4MDAw
MCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMT4nCisgICAgZWxpZiBjb21wb25lbnRfdHlwZSA9PSAn
ZmxvYXQnIGFuZCBiaXRzWydSJ10gPT0gMzI6CisgICAgICAgIHJldHVybiAnSW5pdGlhbGl6ZTRD
b21wb25lbnREYXRhPEdMZmxvYXQsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAs
IGdsOjpGbG9hdDMyT25lPicKKyAgICBlbGlmIGNvbXBvbmVudF90eXBlID09ICdpbnQnIGFuZCBi
aXRzWydSJ10gPT0gMzI6CisgICAgICAgIHJldHVybiAnSW5pdGlhbGl6ZTRDb21wb25lbnREYXRh
PEdMaW50LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAxPicK
KyAgICBlbGlmIGNvbXBvbmVudF90eXBlID09ICd1aW50JyBhbmQgYml0c1snUiddID09IDMyOgor
ICAgICAgICByZXR1cm4gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVpbnQsIDB4MDAwMDAw
MDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDE+JworICAgIGVsc2U6CisgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3dhcm5pbmc6IGludGVybmFsIGZvcm1hdCBpbml0aWFsaXpl
ciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkIGFuZCBtYXkgYmUgbmVlZGVkIGZvciAnICsgaW50ZXJu
YWxfZm9ybWF0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2FuZ2xlX2Zvcm1hdF9tYXAuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9hbmdsZV9mb3JtYXRfbWFwLmpzb24KaW5kZXggMDY0
YzQwMGFjZTMuLmY3YWQyYmRkNTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvYW5nbGVfZm9ybWF0X21hcC5qc29uCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9hbmdsZV9mb3JtYXRfbWFw
Lmpzb24KQEAgLTQ5LDYgKzQ5LDEwIEBACiAgIFsgIkdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4
X0VUQzJfRUFDIiwgIkVUQzJfUjhHOEI4QThfU1JHQl9CTE9DSyIgXSwKICAgWyAiR0xfQ09NUFJF
U1NFRF9TUkdCOF9FVEMyIiwgIkVUQzJfUjhHOEI4X1NSR0JfQkxPQ0siIF0sCiAgIFsgIkdMX0NP
TVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyIiwgIkVUQzJfUjhHOEI4QTFf
U1JHQl9CTE9DSyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9F
WFQiLCAiQkMxX1JHQkFfVU5PUk1fU1JHQl9CTE9DSyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9T
UkdCX0FMUEhBX1MzVENfRFhUM19FWFQiLCAiQkMyX1JHQkFfVU5PUk1fU1JHQl9CTE9DSyIgXSwK
KyAgWyAiR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUNV9FWFQiLCAiQkMzX1JHQkFf
VU5PUk1fU1JHQl9CTE9DSyIgXSwKKyAgWyAiR0xfQ09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9F
WFQiLCAiQkMxX1JHQl9VTk9STV9TUkdCX0JMT0NLIiBdLAogICBbICJHTF9ERVBUSDI0X1NURU5D
SUw4IiwgIkQyNF9VTk9STV9TOF9VSU5UIiBdLAogICBbICJHTF9ERVBUSDMyRl9TVEVOQ0lMOCIs
ICJEMzJfRkxPQVRfUzhYMjRfVUlOVCIgXSwKICAgWyAiR0xfREVQVEhfQ09NUE9ORU5UMTYiLCAi
RDE2X1VOT1JNIiBdLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9CdWZmZXJEM0QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9CdWZmZXJEM0QuY3BwCmluZGV4IDRkZGNiMzAy
NDliLi5jYjBiZDJlOTQwOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9CdWZmZXJEM0QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvQnVmZmVyRDNELmNwcApAQCAtMTks
OCArMTksOCBAQCBuYW1lc3BhY2UgcngKIAogdW5zaWduZWQgaW50IEJ1ZmZlckQzRDo6bU5leHRT
ZXJpYWwgPSAxOwogCi1CdWZmZXJEM0Q6OkJ1ZmZlckQzRChCdWZmZXJGYWN0b3J5RDNEICpmYWN0
b3J5KQotICAgIDogQnVmZmVySW1wbCgpLAorQnVmZmVyRDNEOjpCdWZmZXJEM0QoY29uc3QgZ2w6
OkJ1ZmZlclN0YXRlICZzdGF0ZSwgQnVmZmVyRmFjdG9yeUQzRCAqZmFjdG9yeSkKKyAgICA6IEJ1
ZmZlckltcGwoc3RhdGUpLAogICAgICAgbUZhY3RvcnkoZmFjdG9yeSksCiAgICAgICBtU3RhdGlj
SW5kZXhCdWZmZXIobnVsbHB0ciksCiAgICAgICBtU3RhdGljQnVmZmVyQ2FjaGVUb3RhbFNpemUo
MCksCkBAIC05MCw3ICs5MCw4IEBAIFN0YXRpY0luZGV4QnVmZmVySW50ZXJmYWNlICpCdWZmZXJE
M0Q6OmdldFN0YXRpY0luZGV4QnVmZmVyKCkKICAgICByZXR1cm4gbVN0YXRpY0luZGV4QnVmZmVy
OwogfQogCi1TdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UgKkJ1ZmZlckQzRDo6Z2V0U3RhdGlj
VmVydGV4QnVmZmVyKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSkKK1N0YXRp
Y1ZlcnRleEJ1ZmZlckludGVyZmFjZSAqQnVmZmVyRDNEOjpnZXRTdGF0aWNWZXJ0ZXhCdWZmZXIo
Y29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VmVy
dGV4QmluZGluZyAmYmluZGluZykKIHsKICAgICBpZiAobVN0YXRpY1ZlcnRleEJ1ZmZlcnMuZW1w
dHkoKSkKICAgICB7CkBAIC0xMTEsNyArMTEyLDcgQEAgU3RhdGljVmVydGV4QnVmZmVySW50ZXJm
YWNlICpCdWZmZXJEM0Q6OmdldFN0YXRpY1ZlcnRleEJ1ZmZlcihjb25zdCBnbDo6VmVydGV4QXQK
ICAgICAvLyBJZiB0aGVyZSBpcyBhIGNhY2hlZCBzdGF0aWMgYnVmZmVyIHRoYXQgYWxyZWFkeSBj
b250YWlucyB0aGUgYXR0cmlidXRlLCB0aGVuIHJldHVybiBpdAogICAgIGZvciAoY29uc3QgYXV0
byAmc3RhdGljQnVmZmVyIDogbVN0YXRpY1ZlcnRleEJ1ZmZlcnMpCiAgICAgewotICAgICAgICBp
ZiAoc3RhdGljQnVmZmVyLT5tYXRjaGVzQXR0cmlidXRlKGF0dHJpYnV0ZSkpCisgICAgICAgIGlm
IChzdGF0aWNCdWZmZXItPm1hdGNoZXNBdHRyaWJ1dGUoYXR0cmlidXRlLCBiaW5kaW5nKSkKICAg
ICAgICAgewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY0J1ZmZlci5nZXQoKTsKICAgICAgICAg
fQpAQCAtMTM0LDcgKzEzNSw3IEBAIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSAqQnVmZmVy
RDNEOjpnZXRTdGF0aWNWZXJ0ZXhCdWZmZXIoY29uc3QgZ2w6OlZlcnRleEF0CiAKICAgICAvLyBB
dCB0aGlzIHBvaW50LCB3ZSBtdXN0IGNyZWF0ZSBhIG5ldyBzdGF0aWMgYnVmZmVyIGZvciB0aGUg
YXR0cmlidXRlIGRhdGEuCiAgICAgYXV0byBuZXdTdGF0aWNCdWZmZXIgPSBuZXcgU3RhdGljVmVy
dGV4QnVmZmVySW50ZXJmYWNlKG1GYWN0b3J5KTsKLSAgICBuZXdTdGF0aWNCdWZmZXItPnNldEF0
dHJpYnV0ZShhdHRyaWJ1dGUpOworICAgIG5ld1N0YXRpY0J1ZmZlci0+c2V0QXR0cmlidXRlKGF0
dHJpYnV0ZSwgYmluZGluZyk7CiAgICAgbVN0YXRpY1ZlcnRleEJ1ZmZlcnMucHVzaF9iYWNrKHN0
ZDo6dW5pcXVlX3B0cjxTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U+KG5ld1N0YXRpY0J1ZmZl
cikpOwogICAgIHJldHVybiBuZXdTdGF0aWNCdWZmZXI7CiB9CkBAIC0xODIsNyArMTgzLDcgQEAg
Z2w6OkVycm9yIEJ1ZmZlckQzRDo6Z2V0SW5kZXhSYW5nZShHTGVudW0gdHlwZSwKICAgICBBTkdM
RV9UUlkoZ2V0RGF0YSgmZGF0YSkpOwogCiAgICAgKm91dFJhbmdlID0gZ2w6OkNvbXB1dGVJbmRl
eFJhbmdlKHR5cGUsIGRhdGEgKyBvZmZzZXQsIGNvdW50LCBwcmltaXRpdmVSZXN0YXJ0RW5hYmxl
ZCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9CdWZmZXJEM0QuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvQnVmZmVyRDNE
LmgKaW5kZXggM2M0M2MwMTY0ZmQuLmU4YWJkYzM1MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0J1ZmZlckQzRC5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvQnVmZmVy
RDNELmgKQEAgLTE1LDYgKzE1LDEyIEBACiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjaW5jbHVkZSA8
dmVjdG9yPgogCituYW1lc3BhY2UgZ2wKK3sKK3N0cnVjdCBWZXJ0ZXhBdHRyaWJ1dGU7CitzdHJ1
Y3QgVmVydGV4QmluZGluZzsKK30KKwogbmFtZXNwYWNlIHJ4CiB7CiBjbGFzcyBCdWZmZXJGYWN0
b3J5RDNEOwpAQCAtMzAsNyArMzYsNyBAQCBlbnVtIGNsYXNzIEQzREJ1ZmZlclVzYWdlCiBjbGFz
cyBCdWZmZXJEM0QgOiBwdWJsaWMgQnVmZmVySW1wbAogewogICBwdWJsaWM6Ci0gICAgQnVmZmVy
RDNEKEJ1ZmZlckZhY3RvcnlEM0QgKmZhY3RvcnkpOworICAgIEJ1ZmZlckQzRChjb25zdCBnbDo6
QnVmZmVyU3RhdGUgJnN0YXRlLCBCdWZmZXJGYWN0b3J5RDNEICpmYWN0b3J5KTsKICAgICB2aXJ0
dWFsIH5CdWZmZXJEM0QoKTsKIAogICAgIHVuc2lnbmVkIGludCBnZXRTZXJpYWwoKSBjb25zdCB7
IHJldHVybiBtU2VyaWFsOyB9CkBAIC00MCw3ICs0NiwxMCBAQCBjbGFzcyBCdWZmZXJEM0QgOiBw
dWJsaWMgQnVmZmVySW1wbAogICAgIHZpcnR1YWwgZ2w6OkVycm9yIG1hcmtUcmFuc2Zvcm1GZWVk
YmFja1VzYWdlKCkgPSAwOwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdldERhdGEoY29uc3QgdWlu
dDhfdCAqKm91dERhdGEpID0gMDsKIAotICAgIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSAq
Z2V0U3RhdGljVmVydGV4QnVmZmVyKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0
ZSk7CisgICAgLy8gV2FybmluZzogeW91IHNob3VsZCBlbnN1cmUgYmluZGluZyByZWFsbHkgbWF0
Y2hlcyBhdHRyaWIuYmluZGluZ0luZGV4IGJlZm9yZSB1c2luZyB0aGlzCisgICAgLy8gZnVuY3Rp
b24uCisgICAgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlICpnZXRTdGF0aWNWZXJ0ZXhCdWZm
ZXIoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhC
aW5kaW5nICZiaW5kaW5nKTsKICAgICBTdGF0aWNJbmRleEJ1ZmZlckludGVyZmFjZSAqZ2V0U3Rh
dGljSW5kZXhCdWZmZXIoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplU3RhdGljRGF0
YSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9Db21waWxlckQzRC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9Db21waWxlckQzRC5oCmluZGV4IDhmNDMzNDk2M2QxLi43YWQ2
ZjA3NDAwOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9Db21waWxlckQzRC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvQ29tcGlsZXJEM0QuaApAQCAtMjEsNyArMjEsNyBA
QCBjbGFzcyBDb21waWxlckQzRCA6IHB1YmxpYyBDb21waWxlckltcGwKICAgICBDb21waWxlckQz
RChTaFNoYWRlck91dHB1dCB0cmFuc2xhdG9yT3V0cHV0VHlwZSk7CiAgICAgfkNvbXBpbGVyRDNE
KCkgb3ZlcnJpZGUge30KIAotICAgIGdsOjpFcnJvciByZWxlYXNlKCkgb3ZlcnJpZGUgeyByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsgfQorICAgIGdsOjpFcnJvciByZWxlYXNlKCkgb3Zl
cnJpZGUgeyByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsgfQogICAgIFNoU2hhZGVyT3V0cHV0IGdldFRy
YW5zbGF0b3JPdXRwdXRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbVRyYW5zbGF0b3JP
dXRwdXRUeXBlOyB9CiAKICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRGlzcGxheUQzRC5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0Rpc3BsYXlEM0QuY3Bw
CmluZGV4IGY1Y2M5N2U5NTE0Li5hYjk4NzlhNDkzMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9EaXNwbGF5RDNELmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0Rpc3Bs
YXlEM0QuY3BwCkBAIC0yOSwxMCArMjksNiBAQAogIyAgIGluY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmgiCiAjZW5kaWYgLy8gQU5HTEVfRU5BQkxFX0QzRDEx
CiAKLSNpZiBkZWZpbmVkIChBTkdMRV9URVNUX0NPTkZJRykKLSMgICBkZWZpbmUgQU5HTEVfREVG
QVVMVF9EM0QxMSAxCi0jZW5kaWYKLQogI2lmICFkZWZpbmVkKEFOR0xFX0RFRkFVTFRfRDNEMTEp
CiAvLyBFbmFibGVzIHVzZSBvZiB0aGUgRGlyZWN0M0QgMTEgQVBJIGZvciBhIGRlZmF1bHQgZGlz
cGxheSwgd2hlbiBhdmFpbGFibGUKICMgICBkZWZpbmUgQU5HTEVfREVGQVVMVF9EM0QxMSAxCkBA
IC0xMTcsMTEgKzExMywxMCBAQCBlZ2w6OkVycm9yIENyZWF0ZVJlbmRlcmVyRDNEKGVnbDo6RGlz
cGxheSAqZGlzcGxheSwgUmVuZGVyZXJEM0QgKipvdXRSZW5kZXJlcikKICAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOwogICAgIH0KIAotICAgIGVnbDo6RXJyb3IgcmVzdWx0KEVHTF9OT1RfSU5JVElB
TElaRUQsICJObyBhdmFpbGFibGUgcmVuZGVyZXJzLiIpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcmVuZGVyZXJDcmVhdGlvbkZ1bmN0aW9ucy5zaXplKCk7IGkrKykKICAgICB7CiAgICAg
ICAgIFJlbmRlcmVyRDNEICpyZW5kZXJlciA9IHJlbmRlcmVyQ3JlYXRpb25GdW5jdGlvbnNbaV0o
ZGlzcGxheSk7Ci0gICAgICAgIHJlc3VsdCA9IHJlbmRlcmVyLT5pbml0aWFsaXplKCk7CisgICAg
ICAgIGVnbDo6RXJyb3IgcmVzdWx0ICAgICA9IHJlbmRlcmVyLT5pbml0aWFsaXplKCk7CiAKICMg
ICAgICAgaWYgZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNEMTEpCiAgICAgICAgICAgICBpZiAocmVu
ZGVyZXItPmdldFJlbmRlcmVyQ2xhc3MoKSA9PSBSRU5ERVJFUl9EM0QxMSkKQEAgLTE0Niw1MCAr
MTQxLDQ1IEBAIGVnbDo6RXJyb3IgQ3JlYXRlUmVuZGVyZXJEM0QoZWdsOjpEaXNwbGF5ICpkaXNw
bGF5LCBSZW5kZXJlckQzRCAqKm91dFJlbmRlcmVyKQogICAgICAgICBpZiAoIXJlc3VsdC5pc0Vy
cm9yKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgICpvdXRSZW5kZXJlciA9IHJlbmRlcmVyOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0g
ICAgICAgICAgICAvLyBGYWlsZWQgdG8gY3JlYXRlIHRoZSByZW5kZXJlciwgdHJ5IHRoZSBuZXh0
Ci0gICAgICAgICAgICBTYWZlRGVsZXRlKHJlbmRlcmVyKTsKKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgIH0KKworICAgICAgICAvLyBGYWlsZWQgdG8gY3JlYXRlIHRoZSByZW5k
ZXJlciwgdHJ5IHRoZSBuZXh0CisgICAgICAgIFNhZmVEZWxldGUocmVuZGVyZXIpOwogICAgIH0K
IAotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklU
SUFMSVpFRCwgIk5vIGF2YWlsYWJsZSByZW5kZXJlcnMuIik7CiB9CiAKLURpc3BsYXlEM0Q6OkRp
c3BsYXlEM0QoKSA6IG1SZW5kZXJlcihudWxscHRyKQorRGlzcGxheUQzRDo6RGlzcGxheUQzRChj
b25zdCBlZ2w6OkRpc3BsYXlTdGF0ZSAmc3RhdGUpIDogRGlzcGxheUltcGwoc3RhdGUpLCBtUmVu
ZGVyZXIobnVsbHB0cikKIHsKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlEM0Q6OmNyZWF0ZVdp
bmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZp
Z3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewogICAg
IEFTU0VSVChtUmVuZGVyZXIgIT0gbnVsbHB0cik7Ci0gICAgcmV0dXJuIG5ldyBXaW5kb3dTdXJm
YWNlRDNEKHN0YXRlLCBtUmVuZGVyZXIsIG1EaXNwbGF5LCBjb25maWd1cmF0aW9uLCB3aW5kb3cs
IGF0dHJpYnMpOworICAgIHJldHVybiBuZXcgV2luZG93U3VyZmFjZUQzRChzdGF0ZSwgbVJlbmRl
cmVyLCBtRGlzcGxheSwgd2luZG93LCBhdHRyaWJzKTsKIH0KIAogU3VyZmFjZUltcGwgKkRpc3Bs
YXlEM0Q6OmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKICAg
ICBBU1NFUlQobVJlbmRlcmVyICE9IG51bGxwdHIpOwotICAgIHJldHVybiBuZXcgUGJ1ZmZlclN1
cmZhY2VEM0Qoc3RhdGUsIG1SZW5kZXJlciwgbURpc3BsYXksIGNvbmZpZ3VyYXRpb24sIG51bGxw
dHIsIGF0dHJpYnMpOworICAgIHJldHVybiBuZXcgUGJ1ZmZlclN1cmZhY2VEM0Qoc3RhdGUsIG1S
ZW5kZXJlciwgbURpc3BsYXksIDAsIG51bGxwdHIsIGF0dHJpYnMpOwogfQogCiBTdXJmYWNlSW1w
bCAqRGlzcGxheUQzRDo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpT
dXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENs
aWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGNs
aWVudEJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKICAgICBBU1NF
UlQobVJlbmRlcmVyICE9IG51bGxwdHIpOwotICAgIHJldHVybiBuZXcgUGJ1ZmZlclN1cmZhY2VE
M0Qoc3RhdGUsIG1SZW5kZXJlciwgbURpc3BsYXksIGNvbmZpZ3VyYXRpb24sIHNoYXJlSGFuZGxl
LCBhdHRyaWJzKTsKKyAgICByZXR1cm4gbmV3IFBidWZmZXJTdXJmYWNlRDNEKHN0YXRlLCBtUmVu
ZGVyZXIsIG1EaXNwbGF5LCBidWZ0eXBlLCBjbGllbnRCdWZmZXIsIGF0dHJpYnMpOwogfQogCiBT
dXJmYWNlSW1wbCAqRGlzcGxheUQzRDo6Y3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1
cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0aXZlUGl4
bWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7CkBAIC0yNTYsNyArMjQ2LDcgQEAgYm9vbCBE
aXNwbGF5RDNEOjp0ZXN0RGV2aWNlTG9zdCgpCiBlZ2w6OkVycm9yIERpc3BsYXlEM0Q6OnJlc3Rv
cmVMb3N0RGV2aWNlKCkKIHsKICAgICAvLyBSZWxlYXNlIHN1cmZhY2UgcmVzb3VyY2VzIHRvIG1h
a2UgdGhlIFJlc2V0KCkgc3VjY2VlZAotICAgIGZvciAoYXV0byAmc3VyZmFjZSA6IG1TdXJmYWNl
U2V0KQorICAgIGZvciAoYXV0byAmc3VyZmFjZSA6IG1TdGF0ZS5zdXJmYWNlU2V0KQogICAgIHsK
ICAgICAgICAgaWYgKHN1cmZhY2UtPmdldEJvdW5kVGV4dHVyZSgpKQogICAgICAgICB7CkBAIC0y
NzIsNyArMjYyLDcgQEAgZWdsOjpFcnJvciBEaXNwbGF5RDNEOjpyZXN0b3JlTG9zdERldmljZSgp
CiAgICAgfQogCiAgICAgLy8gUmVzdG9yZSBhbnkgc3VyZmFjZXMgdGhhdCBtYXkgaGF2ZSBiZWVu
IGxvc3QKLSAgICBmb3IgKGNvbnN0IGF1dG8gJnN1cmZhY2UgOiBtU3VyZmFjZVNldCkKKyAgICBm
b3IgKGNvbnN0IGF1dG8gJnN1cmZhY2UgOiBtU3RhdGUuc3VyZmFjZVNldCkKICAgICB7CiAgICAg
ICAgIFN1cmZhY2VEM0QgKnN1cmZhY2VEM0QgPSBHZXRJbXBsQXM8U3VyZmFjZUQzRD4oc3VyZmFj
ZSk7CiAKQEAgLTI5MSw2ICsyODEsMjYgQEAgYm9vbCBEaXNwbGF5RDNEOjppc1ZhbGlkTmF0aXZl
V2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSBjb25zdAogICAgIHJldHVybiBtUmVu
ZGVyZXItPmlzVmFsaWROYXRpdmVXaW5kb3cod2luZG93KTsKIH0KIAorZWdsOjpFcnJvciBEaXNw
bGF5RDNEOjp2YWxpZGF0ZUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJh
dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51
bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xDbGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgY29uc3QK
K3sKKyAgICBzd2l0Y2ggKGJ1ZnR5cGUpCisgICAgeworICAgICAgICBjYXNlIEVHTF9EM0RfVEVY
VFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEU6CisgICAgICAgICAgICByZXR1cm4gbVJlbmRlcmVy
LT52YWxpZGF0ZVNoYXJlSGFuZGxlKGNvbmZpZ3VyYXRpb24sIHN0YXRpY19jYXN0PEhBTkRMRT4o
Y2xpZW50QnVmZmVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXR0cmlicyk7CisKKyAgICAgICAgY2FzZSBFR0xfRDNEX1RFWFRVUkVfQU5HTEU6
CisgICAgICAgICAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXREM0RUZXh0dXJlSW5mbyhzdGF0aWNf
Y2FzdDxJVW5rbm93biAqPihjbGllbnRCdWZmZXIpLCBudWxscHRyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbnVsbHB0cik7CisKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBEaXNwbGF5SW1wbDo6dmFsaWRhdGVD
bGllbnRCdWZmZXIoY29uZmlndXJhdGlvbiwgYnVmdHlwZSwgY2xpZW50QnVmZmVyLCBhdHRyaWJz
KTsKKyAgICB9Cit9CisKIHZvaWQgRGlzcGxheUQzRDo6Z2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6
RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0CiB7CiAgICAgbVJlbmRlcmVy
LT5nZW5lcmF0ZURpc3BsYXlFeHRlbnNpb25zKG91dEV4dGVuc2lvbnMpOwpAQCAtMzE3LDcgKzMy
Nyw3IEBAIHZvaWQgRGlzcGxheUQzRDo6Z2VuZXJhdGVDYXBzKGVnbDo6Q2FwcyAqb3V0Q2Fwcykg
Y29uc3QKIAogZWdsOjpFcnJvciBEaXNwbGF5RDNEOjp3YWl0Q2xpZW50KCkgY29uc3QKIHsKLSAg
ICBmb3IgKGF1dG8gJnN1cmZhY2UgOiBnZXRTdXJmYWNlU2V0KCkpCisgICAgZm9yIChhdXRvICZz
dXJmYWNlIDogbVN0YXRlLnN1cmZhY2VTZXQpCiAgICAgewogICAgICAgICBTdXJmYWNlRDNEICpz
dXJmYWNlRDNEID0gR2V0SW1wbEFzPFN1cmZhY2VEM0Q+KHN1cmZhY2UpOwogICAgICAgICBzdXJm
YWNlRDNELT5jaGVja0Zvck91dE9mRGF0ZVN3YXBDaGFpbigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9EaXNwbGF5RDNELmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0Rpc3Bs
YXlEM0QuaAppbmRleCAxYmQ2ZjExNjBlNi4uYTI2ZDk0NjZhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRGlzcGxheUQzRC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
RGlzcGxheUQzRC5oCkBAIC0xOSwyNSArMTksMjIgQEAgY2xhc3MgUmVuZGVyZXJEM0Q7CiBjbGFz
cyBEaXNwbGF5RDNEIDogcHVibGljIERpc3BsYXlJbXBsCiB7CiAgIHB1YmxpYzoKLSAgICBEaXNw
bGF5RDNEKCk7CisgICAgRGlzcGxheUQzRChjb25zdCBlZ2w6OkRpc3BsYXlTdGF0ZSAmc3RhdGUp
OwogCiAgICAgZWdsOjpFcnJvciBpbml0aWFsaXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZSgpIG92ZXJyaWRlOwogCiAgICAgLy8g
U3VyZmFjZSBjcmVhdGlvbgogICAgIFN1cmZhY2VJbXBsICpjcmVhdGVXaW5kb3dTdXJmYWNlKGNv
bnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1h
cCAmYXR0cmlicykgb3ZlcnJpZGU7CiAgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJTdXJm
YWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFw
ICZhdHRyaWJzKSBvdmVycmlkZTsKICAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlckZyb21D
bGllbnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29u
ZmlndXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKICAgICBTdXJmYWNlSW1wbCAq
Y3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZp
Z3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlUGl4
bWFwVHlwZSBuYXRpdmVQaXhtYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwogCkBAIC01OSw2
ICs1NiwxMCBAQCBjbGFzcyBEaXNwbGF5RDNEIDogcHVibGljIERpc3BsYXlJbXBsCiAgICAgZWds
OjpFcnJvciByZXN0b3JlTG9zdERldmljZSgpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBpc1ZhbGlk
TmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSBjb25zdCBvdmVycmlkZTsK
KyAgICBlZ2w6OkVycm9yIHZhbGlkYXRlQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6Q29uZmlnICpj
b25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51
bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50
QnVmZmVyIGNsaWVudEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IGVnbDo6RXJyb3IgZ2V0RGV2aWNlKERldmljZUltcGwgKipkZXZpY2UpIG92ZXJyaWRlOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL0R5bmFtaWNITFNMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvRHluYW1pY0hMU0wuY3BwCmluZGV4IGNiM2U1ODJkMThkLi5iNDM2NmU3
ZDYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9EeW5hbWljSExTTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9EeW5hbWljSExTTC5jcHAKQEAgLTE2LDcgKzE2LDcg
QEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJlckQzRC5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2QzZC9TaGFkZXJEM0QuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvVmFyeWluZ1BhY2tpbmcuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9WYXJ5aW5nUGFja2lu
Zy5oIgogCiB1c2luZyBuYW1lc3BhY2UgZ2w7CiAKQEAgLTExNyw2NSArMTE3LDE2IEBAIHZvaWQg
V3JpdGVBcnJheVN0cmluZyhzdGQ6OnN0cmluZ3N0cmVhbSAmc3Ryc3RyLCB1bnNpZ25lZCBpbnQg
aSkKICAgICBzdHJzdHIgPDwgIl0iOwogfQogCi1jb25zdCBzdGQ6OnN0cmluZyBWRVJURVhfQVRU
UklCVVRFX1NUVUJfU1RSSU5HID0gIkBAIFZFUlRFWCBBVFRSSUJVVEVTIEBAIjsKLWNvbnN0IHN0
ZDo6c3RyaW5nIFBJWEVMX09VVFBVVF9TVFVCX1NUUklORyAgICAgPSAiQEAgUElYRUwgT1VUUFVU
IEBAIjsKK2NvbnN0ZXhwciBjb25zdCBjaGFyICpWRVJURVhfQVRUUklCVVRFX1NUVUJfU1RSSU5H
ID0gIkBAIFZFUlRFWCBBVFRSSUJVVEVTIEBAIjsKK2NvbnN0ZXhwciBjb25zdCBjaGFyICpQSVhF
TF9PVVRQVVRfU1RVQl9TVFJJTkcgICAgID0gIkBAIFBJWEVMIE9VVFBVVCBAQCI7CiB9ICAvLyBh
bm9ueW1vdXMgbmFtZXNwYWNlCiAKLXN0ZDo6c3RyaW5nIEdldFZhcnlpbmdTZW1hbnRpYyhpbnQg
bWFqb3JTaGFkZXJNb2RlbCwgYm9vbCBwcm9ncmFtVXNlc1BvaW50U2l6ZSkKLXsKLSAgICAvLyBT
TTMgcmVzZXJ2ZXMgdGhlIFRFWENPT1JEIHNlbWFudGljIGZvciBwb2ludCBzcHJpdGUgdGV4Y29v
cmRzIChnbF9Qb2ludENvb3JkKQotICAgIC8vIEluIEQzRDExIHdlIG1hbnVhbGx5IGNvbXB1dGUg
Z2xfUG9pbnRDb29yZCBpbiB0aGUgR1MuCi0gICAgcmV0dXJuICgocHJvZ3JhbVVzZXNQb2ludFNp
emUgJiYgbWFqb3JTaGFkZXJNb2RlbCA8IDQpID8gIkNPTE9SIiA6ICJURVhDT09SRCIpOwotfQot
CiAvLyBEeW5hbWljSExTTCBpbXBsZW1lbnRhdGlvbgogCiBEeW5hbWljSExTTDo6RHluYW1pY0hM
U0woUmVuZGVyZXJEM0QgKmNvbnN0IHJlbmRlcmVyKSA6IG1SZW5kZXJlcihyZW5kZXJlcikKIHsK
IH0KIAotdm9pZCBEeW5hbWljSExTTDo6Z2VuZXJhdGVWYXJ5aW5nSExTTChjb25zdCBWYXJ5aW5n
UGFja2luZyAmdmFyeWluZ1BhY2tpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtICZobHNsU3RyZWFtKSBjb25zdAotewotICAgIHN0ZDo6
c3RyaW5nIHZhcnlpbmdTZW1hbnRpYyA9Ci0gICAgICAgIEdldFZhcnlpbmdTZW1hbnRpYyhtUmVu
ZGVyZXItPmdldE1ham9yU2hhZGVyTW9kZWwoKSwgdmFyeWluZ1BhY2tpbmcudXNlc1BvaW50U2l6
ZSgpKTsKLQotICAgIGZvciAoY29uc3QgUGFja2VkVmFyeWluZ1JlZ2lzdGVyICZyZWdpc3Rlcklu
Zm8gOiB2YXJ5aW5nUGFja2luZy5nZXRSZWdpc3Rlckxpc3QoKSkKLSAgICB7Ci0gICAgICAgIGNv
bnN0IGF1dG8gJnZhcnlpbmcgPSAqcmVnaXN0ZXJJbmZvLnBhY2tlZFZhcnlpbmctPnZhcnlpbmc7
Ci0gICAgICAgIEFTU0VSVCghdmFyeWluZy5pc1N0cnVjdCgpKTsKLQotICAgICAgICAvLyBUT0RP
OiBBZGQgY2hlY2tzIHRvIGVuc3VyZSBEM0QgaW50ZXJwb2xhdGlvbiBtb2RpZmllcnMgZG9uJ3Qg
cmVzdWx0IGluIHRvbyBtYW55Ci0gICAgICAgIC8vIHJlZ2lzdGVycyBiZWluZyB1c2VkLgotICAg
ICAgICAvLyBGb3IgZXhhbXBsZSwgaWYgdGhlcmUgYXJlIE4gcmVnaXN0ZXJzLCBhbmQgd2UgaGF2
ZSBOIHZlYzMgdmFyeWluZ3MgYW5kIDEgZmxvYXQKLSAgICAgICAgLy8gdmFyeWluZywgdGhlbiBE
M0Qgd2lsbCBwYWNrIHRoZW0gaW50byBOIHJlZ2lzdGVycy4KLSAgICAgICAgLy8gSWYgdGhlIGZs
b2F0IHZhcnlpbmcgaGFzIHRoZSAnbm9pbnRlcnBvbGF0aW9uJyBtb2RpZmllciBvbiBpdCB0aGVu
IHdlIHdvdWxkIG5lZWQKLSAgICAgICAgLy8gTiArIDEgcmVnaXN0ZXJzLCBhbmQgRDNEIGNvbXBp
bGF0aW9uIHdpbGwgZmFpbC4KLQotICAgICAgICBzd2l0Y2ggKHJlZ2lzdGVySW5mby5wYWNrZWRW
YXJ5aW5nLT5pbnRlcnBvbGF0aW9uKQotICAgICAgICB7Ci0gICAgICAgICAgICBjYXNlIHNoOjpJ
TlRFUlBPTEFUSU9OX1NNT09USDoKLSAgICAgICAgICAgICAgICBobHNsU3RyZWFtIDw8ICIgICAg
IjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ugc2g6OklOVEVSUE9M
QVRJT05fRkxBVDoKLSAgICAgICAgICAgICAgICBobHNsU3RyZWFtIDw8ICIgICAgbm9pbnRlcnBv
bGF0aW9uICI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIHNoOjpJ
TlRFUlBPTEFUSU9OX0NFTlRST0lEOgotICAgICAgICAgICAgICAgIGhsc2xTdHJlYW0gPDwgIiAg
ICBjZW50cm9pZCAiOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
R0xlbnVtIHRyYW5zcG9zZWRUeXBlID0gZ2w6OlRyYW5zcG9zZU1hdHJpeFR5cGUodmFyeWluZy50
eXBlKTsKLSAgICAgICAgR0xlbnVtIGNvbXBvbmVudFR5cGUgID0gZ2w6OlZhcmlhYmxlQ29tcG9u
ZW50VHlwZSh0cmFuc3Bvc2VkVHlwZSk7Ci0gICAgICAgIGludCBjb2x1bW5Db3VudCA9IGdsOjpW
YXJpYWJsZUNvbHVtbkNvdW50KHRyYW5zcG9zZWRUeXBlKTsKLSAgICAgICAgaGxzbFN0cmVhbSA8
PCBITFNMQ29tcG9uZW50VHlwZVN0cmluZyhjb21wb25lbnRUeXBlLCBjb2x1bW5Db3VudCk7Ci0g
ICAgICAgIHVuc2lnbmVkIGludCBzZW1hbnRpY0luZGV4ID0gcmVnaXN0ZXJJbmZvLnNlbWFudGlj
SW5kZXg7Ci0gICAgICAgIGhsc2xTdHJlYW0gPDwgIiB2IiA8PCBzZW1hbnRpY0luZGV4IDw8ICIg
OiAiIDw8IHZhcnlpbmdTZW1hbnRpYyA8PCBzZW1hbnRpY0luZGV4IDw8ICI7XG4iOwotICAgIH0K
LX0KLQogc3RkOjpzdHJpbmcgRHluYW1pY0hMU0w6OmdlbmVyYXRlVmVydGV4U2hhZGVyRm9ySW5w
dXRMYXlvdXQoCiAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNvdXJjZVNoYWRlciwKICAgICBjb25z
dCBJbnB1dExheW91dCAmaW5wdXRMYXlvdXQsCkBAIC0yOTUsNyArMjQ2LDcgQEAgc3RkOjpzdHJp
bmcgRHluYW1pY0hMU0w6OmdlbmVyYXRlVmVydGV4U2hhZGVyRm9ySW5wdXRMYXlvdXQoCiAgICAg
c3RkOjpzdHJpbmcgdmVydGV4SExTTChzb3VyY2VTaGFkZXIpOwogCiAgICAgc2l6ZV90IGNvcHlJ
bnNlcnRpb25Qb3MgPSB2ZXJ0ZXhITFNMLmZpbmQoVkVSVEVYX0FUVFJJQlVURV9TVFVCX1NUUklO
Ryk7Ci0gICAgdmVydGV4SExTTC5yZXBsYWNlKGNvcHlJbnNlcnRpb25Qb3MsIFZFUlRFWF9BVFRS
SUJVVEVfU1RVQl9TVFJJTkcubGVuZ3RoKCksIHN0cnVjdFN0cmVhbS5zdHIoKSk7CisgICAgdmVy
dGV4SExTTC5yZXBsYWNlKGNvcHlJbnNlcnRpb25Qb3MsIHN0cmxlbihWRVJURVhfQVRUUklCVVRF
X1NUVUJfU1RSSU5HKSwgc3RydWN0U3RyZWFtLnN0cigpKTsKIAogICAgIHJldHVybiB2ZXJ0ZXhI
TFNMOwogfQpAQCAtMzE2LDE2ICsyNjcsMjEgQEAgc3RkOjpzdHJpbmcgRHluYW1pY0hMU0w6Omdl
bmVyYXRlUGl4ZWxTaGFkZXJGb3JPdXRwdXRTaWduYXR1cmUoCiAgICAgZGVjbGFyYXRpb25TdHJl
YW0gPDwgInN0cnVjdCBQU19PVVRQVVRcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAie1xu
IjsKIAotICAgIGZvciAoc2l6ZV90IGxheW91dEluZGV4ID0gMDsgbGF5b3V0SW5kZXggPCBvdXRw
dXRMYXlvdXQuc2l6ZSgpOyArK2xheW91dEluZGV4KQorICAgIC8vIFdvcmthcm91bmQgZm9yIEhM
U0wgMy54OiBXZSBjYW4ndCBkbyBhIGRlcHRoL3N0ZW5jaWwgb25seSByZW5kZXIsIHRoZSBydW50
aW1lIHdpbGwgY29tcGxhaW4uCisgICAgc2l6ZV90IG51bU91dHB1dHMgPSBvdXRwdXRMYXlvdXQu
ZW1wdHkoKSA/IDF1IDogb3V0cHV0TGF5b3V0LnNpemUoKTsKKyAgICBjb25zdCBQaXhlbFNoYWRl
ck91dHB1dFZhcmlhYmxlIGRlZmF1bHRPdXRwdXQoR0xfRkxPQVRfVkVDNCwgImR1bW15IiwgImZs
b2F0NCgwLCAwLCAwLCAxKSIsIDApOworCisgICAgZm9yIChzaXplX3QgbGF5b3V0SW5kZXggPSAw
OyBsYXlvdXRJbmRleCA8IG51bU91dHB1dHM7ICsrbGF5b3V0SW5kZXgpCiAgICAgewotICAgICAg
ICBHTGVudW0gYmluZGluZyA9IG91dHB1dExheW91dFtsYXlvdXRJbmRleF07CisgICAgICAgIEdM
ZW51bSBiaW5kaW5nID0gb3V0cHV0TGF5b3V0LmVtcHR5KCkgPyBHTF9DT0xPUl9BVFRBQ0hNRU5U
MCA6IG91dHB1dExheW91dFtsYXlvdXRJbmRleF07CiAKICAgICAgICAgaWYgKGJpbmRpbmcgIT0g
R0xfTk9ORSkKICAgICAgICAgewogICAgICAgICAgICAgdW5zaWduZWQgaW50IGxvY2F0aW9uID0g
KGJpbmRpbmcgLSBHTF9DT0xPUl9BVFRBQ0hNRU5UMCk7CiAKICAgICAgICAgICAgIGNvbnN0IFBp
eGVsU2hhZGVyT3V0cHV0VmFyaWFibGUgKm91dHB1dFZhcmlhYmxlID0KLSAgICAgICAgICAgICAg
ICBGaW5kT3V0cHV0QXRMb2NhdGlvbihvdXRwdXRWYXJpYWJsZXMsIGxvY2F0aW9uKTsKKyAgICAg
ICAgICAgICAgICBvdXRwdXRMYXlvdXQuZW1wdHkoKSA/ICZkZWZhdWx0T3V0cHV0CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBGaW5kT3V0cHV0QXRMb2NhdGlvbihvdXRw
dXRWYXJpYWJsZXMsIGxvY2F0aW9uKTsKIAogICAgICAgICAgICAgLy8gT3BlbkdMIEVTIDMuMCBz
cGVjICQ0LjIuMQogICAgICAgICAgICAgLy8gSWYgWy4uLl0gbm90IGFsbCB1c2VyLWRlZmluZWQg
b3V0cHV0IHZhcmlhYmxlcyBhcmUgd3JpdHRlbiwgdGhlIHZhbHVlcyBvZiBmcmFnbWVudApAQCAt
MzYwLDUyICszMTYsODcgQEAgc3RkOjpzdHJpbmcgRHluYW1pY0hMU0w6OmdlbmVyYXRlUGl4ZWxT
aGFkZXJGb3JPdXRwdXRTaWduYXR1cmUoCiAgICAgc3RkOjpzdHJpbmcgcGl4ZWxITFNMKHNvdXJj
ZVNoYWRlcik7CiAKICAgICBzaXplX3Qgb3V0cHV0SW5zZXJ0aW9uUG9zID0gcGl4ZWxITFNMLmZp
bmQoUElYRUxfT1VUUFVUX1NUVUJfU1RSSU5HKTsKLSAgICBwaXhlbEhMU0wucmVwbGFjZShvdXRw
dXRJbnNlcnRpb25Qb3MsIFBJWEVMX09VVFBVVF9TVFVCX1NUUklORy5sZW5ndGgoKSwKKyAgICBw
aXhlbEhMU0wucmVwbGFjZShvdXRwdXRJbnNlcnRpb25Qb3MsIHN0cmxlbihQSVhFTF9PVVRQVVRf
U1RVQl9TVFJJTkcpLAogICAgICAgICAgICAgICAgICAgICAgIGRlY2xhcmF0aW9uU3RyZWFtLnN0
cigpKTsKIAogICAgIHJldHVybiBwaXhlbEhMU0w7CiB9CiAKLXZvaWQgRHluYW1pY0hMU0w6Omdl
bmVyYXRlVmFyeWluZ0xpbmtITFNMKFNoYWRlclR5cGUgc2hhZGVyVHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZhcnlpbmdQYWNraW5nICZ2YXJ5
aW5nUGFja2luZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nc3RyZWFtICZsaW5rU3RyZWFtKSBjb25zdAordm9pZCBEeW5hbWljSExTTDo6Z2Vu
ZXJhdGVWYXJ5aW5nTGlua0hMU0woY29uc3QgVmFyeWluZ1BhY2tpbmcgJnZhcnlpbmdQYWNraW5n
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQnVpbHRp
bkluZm8gJmJ1aWx0aW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBwcm9ncmFtVXNlc1BvaW50U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtICZobHNsU3RyZWFtKSBjb25zdAogewot
ICAgIGNvbnN0IGF1dG8gJmJ1aWx0aW5zID0gdmFyeWluZ1BhY2tpbmcuYnVpbHRpbnMoc2hhZGVy
VHlwZSk7CiAgICAgQVNTRVJUKGJ1aWx0aW5zLmR4UG9zaXRpb24uZW5hYmxlZCk7Ci0gICAgbGlu
a1N0cmVhbSA8PCAie1xuIgorICAgIGhsc2xTdHJlYW0gPDwgIntcbiIKICAgICAgICAgICAgICAg
IDw8ICIgICAgZmxvYXQ0IGR4X1Bvc2l0aW9uIDogIiA8PCBidWlsdGlucy5keFBvc2l0aW9uLnN0
cigpIDw8ICI7XG4iOwogCiAgICAgaWYgKGJ1aWx0aW5zLmdsUG9zaXRpb24uZW5hYmxlZCkKICAg
ICB7Ci0gICAgICAgIGxpbmtTdHJlYW0gPDwgIiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiAiIDw8
IGJ1aWx0aW5zLmdsUG9zaXRpb24uc3RyKCkgPDwgIjtcbiI7CisgICAgICAgIGhsc2xTdHJlYW0g
PDwgIiAgICBmbG9hdDQgZ2xfUG9zaXRpb24gOiAiIDw8IGJ1aWx0aW5zLmdsUG9zaXRpb24uc3Ry
KCkgPDwgIjtcbiI7CiAgICAgfQogCiAgICAgaWYgKGJ1aWx0aW5zLmdsRnJhZ0Nvb3JkLmVuYWJs
ZWQpCiAgICAgewotICAgICAgICBsaW5rU3RyZWFtIDw8ICIgICAgZmxvYXQ0IGdsX0ZyYWdDb29y
ZCA6ICIgPDwgYnVpbHRpbnMuZ2xGcmFnQ29vcmQuc3RyKCkgPDwgIjtcbiI7CisgICAgICAgIGhs
c2xTdHJlYW0gPDwgIiAgICBmbG9hdDQgZ2xfRnJhZ0Nvb3JkIDogIiA8PCBidWlsdGlucy5nbEZy
YWdDb29yZC5zdHIoKSA8PCAiO1xuIjsKICAgICB9CiAKICAgICBpZiAoYnVpbHRpbnMuZ2xQb2lu
dENvb3JkLmVuYWJsZWQpCiAgICAgewotICAgICAgICBsaW5rU3RyZWFtIDw8ICIgICAgZmxvYXQy
IGdsX1BvaW50Q29vcmQgOiAiIDw8IGJ1aWx0aW5zLmdsUG9pbnRDb29yZC5zdHIoKSA8PCAiO1xu
IjsKKyAgICAgICAgaGxzbFN0cmVhbSA8PCAiICAgIGZsb2F0MiBnbF9Qb2ludENvb3JkIDogIiA8
PCBidWlsdGlucy5nbFBvaW50Q29vcmQuc3RyKCkgPDwgIjtcbiI7CiAgICAgfQogCiAgICAgaWYg
KGJ1aWx0aW5zLmdsUG9pbnRTaXplLmVuYWJsZWQpCiAgICAgewotICAgICAgICBsaW5rU3RyZWFt
IDw8ICIgICAgZmxvYXQgZ2xfUG9pbnRTaXplIDogIiA8PCBidWlsdGlucy5nbFBvaW50U2l6ZS5z
dHIoKSA8PCAiO1xuIjsKKyAgICAgICAgaGxzbFN0cmVhbSA8PCAiICAgIGZsb2F0IGdsX1BvaW50
U2l6ZSA6ICIgPDwgYnVpbHRpbnMuZ2xQb2ludFNpemUuc3RyKCkgPDwgIjtcbiI7CiAgICAgfQog
Ci0gICAgLy8gRG8gdGhpcyBhZnRlciBnbF9Qb2ludFNpemUsIHRvIHBvdGVudGlhbGx5IGNvbWJp
bmUgZ2xfUG9pbnRDb29yZCBhbmQgZ2xfUG9pbnRTaXplIGludG8gdGhlCi0gICAgLy8gc2FtZSBy
ZWdpc3Rlci4KLSAgICBnZW5lcmF0ZVZhcnlpbmdITFNMKHZhcnlpbmdQYWNraW5nLCBsaW5rU3Ry
ZWFtKTsKKyAgICBzdGQ6OnN0cmluZyB2YXJ5aW5nU2VtYW50aWMgPQorICAgICAgICBHZXRWYXJ5
aW5nU2VtYW50aWMobVJlbmRlcmVyLT5nZXRNYWpvclNoYWRlck1vZGVsKCksIHByb2dyYW1Vc2Vz
UG9pbnRTaXplKTsKKworICAgIGZvciAoY29uc3QgUGFja2VkVmFyeWluZ1JlZ2lzdGVyICZyZWdp
c3RlckluZm8gOiB2YXJ5aW5nUGFja2luZy5nZXRSZWdpc3Rlckxpc3QoKSkKKyAgICB7CisgICAg
ICAgIGNvbnN0IGF1dG8gJnZhcnlpbmcgPSAqcmVnaXN0ZXJJbmZvLnBhY2tlZFZhcnlpbmctPnZh
cnlpbmc7CisgICAgICAgIEFTU0VSVCghdmFyeWluZy5pc1N0cnVjdCgpKTsKKworICAgICAgICAv
LyBUT0RPOiBBZGQgY2hlY2tzIHRvIGVuc3VyZSBEM0QgaW50ZXJwb2xhdGlvbiBtb2RpZmllcnMg
ZG9uJ3QgcmVzdWx0IGluIHRvbyBtYW55CisgICAgICAgIC8vIHJlZ2lzdGVycyBiZWluZyB1c2Vk
LgorICAgICAgICAvLyBGb3IgZXhhbXBsZSwgaWYgdGhlcmUgYXJlIE4gcmVnaXN0ZXJzLCBhbmQg
d2UgaGF2ZSBOIHZlYzMgdmFyeWluZ3MgYW5kIDEgZmxvYXQKKyAgICAgICAgLy8gdmFyeWluZywg
dGhlbiBEM0Qgd2lsbCBwYWNrIHRoZW0gaW50byBOIHJlZ2lzdGVycy4KKyAgICAgICAgLy8gSWYg
dGhlIGZsb2F0IHZhcnlpbmcgaGFzIHRoZSAnbm9pbnRlcnBvbGF0aW9uJyBtb2RpZmllciBvbiBp
dCB0aGVuIHdlIHdvdWxkIG5lZWQKKyAgICAgICAgLy8gTiArIDEgcmVnaXN0ZXJzLCBhbmQgRDNE
IGNvbXBpbGF0aW9uIHdpbGwgZmFpbC4KKworICAgICAgICBzd2l0Y2ggKHJlZ2lzdGVySW5mby5w
YWNrZWRWYXJ5aW5nLT5pbnRlcnBvbGF0aW9uKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNl
IHNoOjpJTlRFUlBPTEFUSU9OX1NNT09USDoKKyAgICAgICAgICAgICAgICBobHNsU3RyZWFtIDw8
ICIgICAgIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ugc2g6OklO
VEVSUE9MQVRJT05fRkxBVDoKKyAgICAgICAgICAgICAgICBobHNsU3RyZWFtIDw8ICIgICAgbm9p
bnRlcnBvbGF0aW9uICI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IHNoOjpJTlRFUlBPTEFUSU9OX0NFTlRST0lEOgorICAgICAgICAgICAgICAgIGhsc2xTdHJlYW0g
PDwgIiAgICBjZW50cm9pZCAiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CisKKyAg
ICAgICAgR0xlbnVtIHRyYW5zcG9zZWRUeXBlID0gZ2w6OlRyYW5zcG9zZU1hdHJpeFR5cGUodmFy
eWluZy50eXBlKTsKKyAgICAgICAgR0xlbnVtIGNvbXBvbmVudFR5cGUgID0gZ2w6OlZhcmlhYmxl
Q29tcG9uZW50VHlwZSh0cmFuc3Bvc2VkVHlwZSk7CisgICAgICAgIGludCBjb2x1bW5Db3VudCAg
ICAgICA9IGdsOjpWYXJpYWJsZUNvbHVtbkNvdW50KHRyYW5zcG9zZWRUeXBlKTsKKyAgICAgICAg
aGxzbFN0cmVhbSA8PCBITFNMQ29tcG9uZW50VHlwZVN0cmluZyhjb21wb25lbnRUeXBlLCBjb2x1
bW5Db3VudCk7CisgICAgICAgIHVuc2lnbmVkIGludCBzZW1hbnRpY0luZGV4ID0gcmVnaXN0ZXJJ
bmZvLnNlbWFudGljSW5kZXg7CisgICAgICAgIGhsc2xTdHJlYW0gPDwgIiB2IiA8PCBzZW1hbnRp
Y0luZGV4IDw8ICIgOiAiIDw8IHZhcnlpbmdTZW1hbnRpYyA8PCBzZW1hbnRpY0luZGV4IDw8ICI7
XG4iOworICAgIH0KIAotICAgIGxpbmtTdHJlYW0gPDwgIn07XG4iOworICAgIGhsc2xTdHJlYW0g
PDwgIn07XG4iOwogfQogCi1ib29sIER5bmFtaWNITFNMOjpnZW5lcmF0ZVNoYWRlckxpbmtITFNM
KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCit2b2lkIER5bmFtaWNITFNMOjpnZW5lcmF0
ZVNoYWRlckxpbmtITFNMKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnBy
b2dyYW1EYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBQcm9ncmFtRDNETWV0YWRhdGEgJnByb2dyYW1NZXRhZGF0YSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmFyeWluZ1BhY2tpbmcgJnZhcnlpbmdQYWNr
aW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCdWls
dGluVmFyeWluZ3NEM0QgJmJ1aWx0aW5zRDNELAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqcGl4ZWxITFNMLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqdmVydGV4SExTTCkgY29uc3QKIHsK
QEAgLTQ0MCwxMSArNDMxLDE0IEBAIGJvb2wgRHluYW1pY0hMU0w6OmdlbmVyYXRlU2hhZGVyTGlu
a0hMU0woY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICB9CiAKICAgICAvLyBBZGQg
c3R1YiBzdHJpbmcgdG8gYmUgcmVwbGFjZWQgd2hlbiBzaGFkZXIgaXMgZHluYW1pY2FsbHkgZGVm
aW5lZCBieSBpdHMgbGF5b3V0Ci0gICAgdmVydGV4U3RyZWFtIDw8ICJcbiIgPDwgVkVSVEVYX0FU
VFJJQlVURV9TVFVCX1NUUklORyArICJcbiI7CisgICAgdmVydGV4U3RyZWFtIDw8ICJcbiIgPDwg
c3RkOjpzdHJpbmcoVkVSVEVYX0FUVFJJQlVURV9TVFVCX1NUUklORykgPDwgIlxuIjsKKworICAg
IGNvbnN0IGF1dG8gJnZlcnRleEJ1aWx0aW5zID0gYnVpbHRpbnNEM0RbU0hBREVSX1ZFUlRFWF07
CiAKICAgICAvLyBXcml0ZSB0aGUgSExTTCBpbnB1dC9vdXRwdXQgZGVjbGFyYXRpb25zCiAgICAg
dmVydGV4U3RyZWFtIDw8ICJzdHJ1Y3QgVlNfT1VUUFVUXG4iOwotICAgIGdlbmVyYXRlVmFyeWlu
Z0xpbmtITFNMKFNIQURFUl9WRVJURVgsIHZhcnlpbmdQYWNraW5nLCB2ZXJ0ZXhTdHJlYW0pOwor
ICAgIGdlbmVyYXRlVmFyeWluZ0xpbmtITFNMKHZhcnlpbmdQYWNraW5nLCB2ZXJ0ZXhCdWlsdGlu
cywgYnVpbHRpbnNEM0QudXNlc1BvaW50U2l6ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZlcnRleFN0cmVhbSk7CiAgICAgdmVydGV4U3RyZWFtIDw8ICJcbiIKICAgICAgICAgICAg
ICAgICAgPDwgIlZTX09VVFBVVCBtYWluKFZTX0lOUFVUIGlucHV0KVxuIgogICAgICAgICAgICAg
ICAgICA8PCAie1xuIgpAQCAtNDU1LDggKzQ0OSw2IEBAIGJvb2wgRHluYW1pY0hMU0w6OmdlbmVy
YXRlU2hhZGVyTGlua0hMU0woY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAg
ICAgICAgICAgPDwgIlxuIgogICAgICAgICAgICAgICAgICA8PCAiICAgIFZTX09VVFBVVCBvdXRw
dXQ7XG4iOwogCi0gICAgY29uc3QgYXV0byAmdmVydGV4QnVpbHRpbnMgPSB2YXJ5aW5nUGFja2lu
Zy5idWlsdGlucyhTSEFERVJfVkVSVEVYKTsKLQogICAgIGlmICh2ZXJ0ZXhCdWlsdGlucy5nbFBv
c2l0aW9uLmVuYWJsZWQpCiAgICAgewogICAgICAgICB2ZXJ0ZXhTdHJlYW0gPDwgIiAgICBvdXRw
dXQuZ2xfUG9zaXRpb24gPSBnbF9Qb3NpdGlvbjtcbiI7CkBAIC01OTEsMTMgKzU4MywxNiBAQCBi
b29sIER5bmFtaWNITFNMOjpnZW5lcmF0ZVNoYWRlckxpbmtITFNMKGNvbnN0IGdsOjpDb250ZXh0
U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAgICAgIDw8ICIgICAgcmV0dXJuIG91dHB1dDtcbiIK
ICAgICAgICAgICAgICAgICAgPDwgIn1cbiI7CiAKKyAgICBjb25zdCBhdXRvICZwaXhlbEJ1aWx0
aW5zID0gYnVpbHRpbnNEM0RbU0hBREVSX1BJWEVMXTsKKwogICAgIHN0ZDo6c3RyaW5nc3RyZWFt
IHBpeGVsU3RyZWFtOwogICAgIHBpeGVsU3RyZWFtIDw8IGZyYWdtZW50U2hhZGVyR0wtPmdldFRy
YW5zbGF0ZWRTb3VyY2UoKTsKICAgICBwaXhlbFN0cmVhbSA8PCAic3RydWN0IFBTX0lOUFVUXG4i
OwotICAgIGdlbmVyYXRlVmFyeWluZ0xpbmtITFNMKFNIQURFUl9QSVhFTCwgdmFyeWluZ1BhY2tp
bmcsIHBpeGVsU3RyZWFtKTsKKyAgICBnZW5lcmF0ZVZhcnlpbmdMaW5rSExTTCh2YXJ5aW5nUGFj
a2luZywgcGl4ZWxCdWlsdGlucywgYnVpbHRpbnNEM0QudXNlc1BvaW50U2l6ZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBpeGVsU3RyZWFtKTsKICAgICBwaXhlbFN0cmVhbSA8PCAi
XG4iOwogCi0gICAgcGl4ZWxTdHJlYW0gPDwgUElYRUxfT1VUUFVUX1NUVUJfU1RSSU5HICsgIlxu
IjsKKyAgICBwaXhlbFN0cmVhbSA8PCBzdGQ6OnN0cmluZyhQSVhFTF9PVVRQVVRfU1RVQl9TVFJJ
TkcpIDw8ICJcbiI7CiAKICAgICBpZiAoZnJhZ21lbnRTaGFkZXItPnVzZXNGcm9udEZhY2luZygp
KQogICAgIHsKQEAgLTYxOCw4ICs2MTMsNiBAQCBib29sIER5bmFtaWNITFNMOjpnZW5lcmF0ZVNo
YWRlckxpbmtITFNMKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICAg
ICAgICAgIDw8ICJ7XG4iOwogICAgIH0KIAotICAgIGNvbnN0IGF1dG8gJnBpeGVsQnVpbHRpbnMg
PSB2YXJ5aW5nUGFja2luZy5idWlsdGlucyhTSEFERVJfUElYRUwpOwotCiAgICAgaWYgKHBpeGVs
QnVpbHRpbnMuZ2xGcmFnQ29vcmQuZW5hYmxlZCkKICAgICB7CiAgICAgICAgIHBpeGVsU3RyZWFt
IDw8ICIgICAgZmxvYXQgcmh3ID0gMS4wIC8gaW5wdXQuZ2xfRnJhZ0Nvb3JkLnc7XG4iOwpAQCAt
Nzc0LDMwICs3NjcsMTA0IEBAIGJvb2wgRHluYW1pY0hMU0w6OmdlbmVyYXRlU2hhZGVyTGlua0hM
U0woY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKIAogICAgICp2ZXJ0ZXhITFNMID0gdmVy
dGV4U3RyZWFtLnN0cigpOwogICAgICpwaXhlbEhMU0wgID0gcGl4ZWxTdHJlYW0uc3RyKCk7Cit9
CisKK3N0ZDo6c3RyaW5nIER5bmFtaWNITFNMOjpnZW5lcmF0ZUNvbXB1dGVTaGFkZXJMaW5rSExT
TChjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtRGF0YSkgY29uc3QKK3sKKyAgICBjb25z
dCBnbDo6U2hhZGVyICpjb21wdXRlU2hhZGVyR0wgPSBwcm9ncmFtRGF0YS5nZXRBdHRhY2hlZENv
bXB1dGVTaGFkZXIoKTsKKyAgICBzdGQ6OnN0cmluZ3N0cmVhbSBjb21wdXRlU3RyZWFtOworICAg
IHN0ZDo6c3RyaW5nIHRyYW5zbGF0ZWRTb3VyY2UgPSBjb21wdXRlU2hhZGVyR0wtPmdldFRyYW5z
bGF0ZWRTb3VyY2UoKTsKKyAgICBjb21wdXRlU3RyZWFtIDw8IHRyYW5zbGF0ZWRTb3VyY2U7CisK
KyAgICBib29sIHVzZXNXb3JrR3JvdXBJRCA9IHRyYW5zbGF0ZWRTb3VyY2UuZmluZCgiR0xfVVNF
U19XT1JLX0dST1VQX0lEIikgIT0gc3RkOjpzdHJpbmc6Om5wb3M7CisgICAgYm9vbCB1c2VzTG9j
YWxJbnZvY2F0aW9uSUQgPQorICAgICAgICB0cmFuc2xhdGVkU291cmNlLmZpbmQoIkdMX1VTRVNf
TE9DQUxfSU5WT0NBVElPTl9JRCIpICE9IHN0ZDo6c3RyaW5nOjpucG9zOworICAgIGJvb2wgdXNl
c0dsb2JhbEludm9jYXRpb25JRCA9CisgICAgICAgIHRyYW5zbGF0ZWRTb3VyY2UuZmluZCgiR0xf
VVNFU19HTE9CQUxfSU5WT0NBVElPTl9JRCIpICE9IHN0ZDo6c3RyaW5nOjpucG9zOworICAgIGJv
b2wgdXNlc0xvY2FsSW52b2NhdGlvbkluZGV4ID0KKyAgICAgICAgdHJhbnNsYXRlZFNvdXJjZS5m
aW5kKCJHTF9VU0VTX0xPQ0FMX0lOVk9DQVRJT05fSU5ERVgiKSAhPSBzdGQ6OnN0cmluZzo6bnBv
czsKKworICAgIGNvbXB1dGVTdHJlYW0gPDwgIlxuc3RydWN0IENTX0lOUFVUXG57XG4iOworICAg
IGlmICh1c2VzV29ya0dyb3VwSUQpCisgICAgeworICAgICAgICBjb21wdXRlU3RyZWFtIDw8ICIg
ICAgdWludDMgZHhfV29ya0dyb3VwSUQgOiAiCisgICAgICAgICAgICAgICAgICAgICAgPDwgIlNW
X0dyb3VwSUQ7XG4iOworICAgIH0KKworICAgIGlmICh1c2VzTG9jYWxJbnZvY2F0aW9uSUQpCisg
ICAgeworICAgICAgICBjb21wdXRlU3RyZWFtIDw8ICIgICAgdWludDMgZHhfTG9jYWxJbnZvY2F0
aW9uSUQgOiAiCisgICAgICAgICAgICAgICAgICAgICAgPDwgIlNWX0dyb3VwVGhyZWFkSUQ7XG4i
OworICAgIH0KKworICAgIGlmICh1c2VzR2xvYmFsSW52b2NhdGlvbklEKQorICAgIHsKKyAgICAg
ICAgY29tcHV0ZVN0cmVhbSA8PCAiICAgIHVpbnQzIGR4X0dsb2JhbEludm9jYXRpb25JRCA6ICIK
KyAgICAgICAgICAgICAgICAgICAgICA8PCAiU1ZfRGlzcGF0Y2hUaHJlYWRJRDtcbiI7CisgICAg
fQorCisgICAgaWYgKHVzZXNMb2NhbEludm9jYXRpb25JbmRleCkKKyAgICB7CisgICAgICAgIGNv
bXB1dGVTdHJlYW0gPDwgIiAgICB1aW50IGR4X0xvY2FsSW52b2NhdGlvbkluZGV4IDogIgorICAg
ICAgICAgICAgICAgICAgICAgIDw8ICJTVl9Hcm91cEluZGV4O1xuIjsKKyAgICB9CisKKyAgICBj
b21wdXRlU3RyZWFtIDw8ICJ9O1xuXG4iOworCisgICAgY29uc3Qgc2g6OldvcmtHcm91cFNpemUg
JmxvY2FsU2l6ZSA9IGNvbXB1dGVTaGFkZXJHTC0+Z2V0V29ya0dyb3VwU2l6ZSgpOworICAgIGNv
bXB1dGVTdHJlYW0gPDwgIltudW10aHJlYWRzKCIgPDwgbG9jYWxTaXplWzBdIDw8ICIsICIgPDwg
bG9jYWxTaXplWzFdIDw8ICIsICIgPDwgbG9jYWxTaXplWzJdCisgICAgICAgICAgICAgICAgICA8
PCAiKV1cbiI7CisKKyAgICBjb21wdXRlU3RyZWFtIDw8ICJ2b2lkIG1haW4oQ1NfSU5QVVQgaW5w
dXQpXG4iCisgICAgICAgICAgICAgICAgICA8PCAie1xuIjsKKworICAgIGlmICh1c2VzV29ya0dy
b3VwSUQpCisgICAgeworICAgICAgICBjb21wdXRlU3RyZWFtIDw8ICIgICAgZ2xfV29ya0dyb3Vw
SUQgPSBpbnB1dC5keF9Xb3JrR3JvdXBJRDtcbiI7CisgICAgfQorICAgIGlmICh1c2VzTG9jYWxJ
bnZvY2F0aW9uSUQpCisgICAgeworICAgICAgICBjb21wdXRlU3RyZWFtIDw8ICIgICAgZ2xfTG9j
YWxJbnZvY2F0aW9uSUQgPSBpbnB1dC5keF9Mb2NhbEludm9jYXRpb25JRDtcbiI7CisgICAgfQor
ICAgIGlmICh1c2VzR2xvYmFsSW52b2NhdGlvbklEKQorICAgIHsKKyAgICAgICAgY29tcHV0ZVN0
cmVhbSA8PCAiICAgIGdsX0dsb2JhbEludm9jYXRpb25JRCA9IGlucHV0LmR4X0dsb2JhbEludm9j
YXRpb25JRDtcbiI7CisgICAgfQorICAgIGlmICh1c2VzTG9jYWxJbnZvY2F0aW9uSW5kZXgpCisg
ICAgeworICAgICAgICBjb21wdXRlU3RyZWFtIDw8ICIgICAgZ2xfTG9jYWxJbnZvY2F0aW9uSW5k
ZXggPSBpbnB1dC5keF9Mb2NhbEludm9jYXRpb25JbmRleDtcbiI7CisgICAgfQorCisgICAgY29t
cHV0ZVN0cmVhbSA8PCAiXG4iCisgICAgICAgICAgICAgICAgICA8PCAiICAgIGdsX21haW4oKTtc
biIKKyAgICAgICAgICAgICAgICAgIDw8ICJ9XG4iOwogCi0gICAgcmV0dXJuIHRydWU7CisgICAg
cmV0dXJuIGNvbXB1dGVTdHJlYW0uc3RyKCk7CiB9CiAKLXN0ZDo6c3RyaW5nIER5bmFtaWNITFNM
OjpnZW5lcmF0ZUdlb21ldHJ5U2hhZGVyUHJlYW1ibGUoY29uc3QgVmFyeWluZ1BhY2tpbmcgJnZh
cnlpbmdQYWNraW5nKSBjb25zdAorc3RkOjpzdHJpbmcgRHluYW1pY0hMU0w6OmdlbmVyYXRlR2Vv
bWV0cnlTaGFkZXJQcmVhbWJsZShjb25zdCBWYXJ5aW5nUGFja2luZyAmdmFyeWluZ1BhY2tpbmcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEJ1aWx0aW5WYXJ5aW5nc0QzRCAmYnVpbHRpbnNEM0QpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKG1SZW5kZXJlci0+Z2V0TWFqb3JTaGFkZXJNb2RlbCgpID49IDQpOwogCiAgICAgc3RkOjpz
dHJpbmdzdHJlYW0gcHJlYW1ibGVTdHJlYW07CiAKLSAgICBjb25zdCBhdXRvICZidWlsdGlucyA9
IHZhcnlpbmdQYWNraW5nLmJ1aWx0aW5zKFNIQURFUl9WRVJURVgpOworICAgIGNvbnN0IGF1dG8g
JnZlcnRleEJ1aWx0aW5zID0gYnVpbHRpbnNEM0RbU0hBREVSX1ZFUlRFWF07CiAKICAgICBwcmVh
bWJsZVN0cmVhbSA8PCAic3RydWN0IEdTX0lOUFVUXG4iOwotICAgIGdlbmVyYXRlVmFyeWluZ0xp
bmtITFNMKFNIQURFUl9WRVJURVgsIHZhcnlpbmdQYWNraW5nLCBwcmVhbWJsZVN0cmVhbSk7Cisg
ICAgZ2VuZXJhdGVWYXJ5aW5nTGlua0hMU0wodmFyeWluZ1BhY2tpbmcsIHZlcnRleEJ1aWx0aW5z
LCBidWlsdGluc0QzRC51c2VzUG9pbnRTaXplKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHJlYW1ibGVTdHJlYW0pOwogICAgIHByZWFtYmxlU3RyZWFtIDw8ICJcbiIKICAgICAgICAg
ICAgICAgICAgICA8PCAic3RydWN0IEdTX09VVFBVVFxuIjsKLSAgICBnZW5lcmF0ZVZhcnlpbmdM
aW5rSExTTChTSEFERVJfR0VPTUVUUlksIHZhcnlpbmdQYWNraW5nLCBwcmVhbWJsZVN0cmVhbSk7
CisgICAgZ2VuZXJhdGVWYXJ5aW5nTGlua0hMU0wodmFyeWluZ1BhY2tpbmcsIGJ1aWx0aW5zRDNE
W1NIQURFUl9HRU9NRVRSWV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbnNE
M0QudXNlc1BvaW50U2l6ZSgpLCBwcmVhbWJsZVN0cmVhbSk7CiAgICAgcHJlYW1ibGVTdHJlYW0K
ICAgICAgICAgPDwgIlxuIgogICAgICAgICA8PCAidm9pZCBjb3B5VmVydGV4KGlub3V0IEdTX09V
VFBVVCBvdXRwdXQsIEdTX0lOUFVUIGlucHV0LCBHU19JTlBVVCBmbGF0aW5wdXQpXG4iCiAgICAg
ICAgIDw8ICJ7XG4iCiAgICAgICAgIDw8ICIgICAgb3V0cHV0LmdsX1Bvc2l0aW9uID0gaW5wdXQu
Z2xfUG9zaXRpb247XG4iOwogCi0gICAgaWYgKGJ1aWx0aW5zLmdsUG9pbnRTaXplLmVuYWJsZWQp
CisgICAgaWYgKHZlcnRleEJ1aWx0aW5zLmdsUG9pbnRTaXplLmVuYWJsZWQpCiAgICAgewogICAg
ICAgICBwcmVhbWJsZVN0cmVhbSA8PCAiICAgIG91dHB1dC5nbF9Qb2ludFNpemUgPSBpbnB1dC5n
bF9Qb2ludFNpemU7XG4iOwogICAgIH0KQEAgLTgxMiw3ICs4NzksNyBAQCBzdGQ6OnN0cmluZyBE
eW5hbWljSExTTDo6Z2VuZXJhdGVHZW9tZXRyeVNoYWRlclByZWFtYmxlKGNvbnN0IFZhcnlpbmdQ
YWNraW5nICZ2YQogICAgICAgICBwcmVhbWJsZVN0cmVhbSA8PCAiaW5wdXQudiIgPDwgdmFyeWlu
Z1JlZ2lzdGVyLnNlbWFudGljSW5kZXggPDwgIjsgXG4iOwogICAgIH0KIAotICAgIGlmIChidWls
dGlucy5nbEZyYWdDb29yZC5lbmFibGVkKQorICAgIGlmICh2ZXJ0ZXhCdWlsdGlucy5nbEZyYWdD
b29yZC5lbmFibGVkKQogICAgIHsKICAgICAgICAgcHJlYW1ibGVTdHJlYW0gPDwgIiAgICBvdXRw
dXQuZ2xfRnJhZ0Nvb3JkID0gaW5wdXQuZ2xfRnJhZ0Nvb3JkO1xuIjsKICAgICB9CkBAIC0xMDYz
LDcgKzExMzAsNyBAQCB2b2lkIER5bmFtaWNITFNMOjpnZXRQaXhlbFNoYWRlck91dHB1dEtleShj
b25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICBjb25zdCBhdXRvICZzaGFkZXJP
dXRwdXRWYXJzID0KICAgICAgICAgICAgIG1ldGFkYXRhLmdldEZyYWdtZW50U2hhZGVyKCktPmdl
dERhdGEoKS5nZXRBY3RpdmVPdXRwdXRWYXJpYWJsZXMoKTsKIAotICAgICAgICBmb3IgKGF1dG8g
b3V0cHV0UGFpciA6IHByb2dyYW1EYXRhLmdldE91dHB1dFZhcmlhYmxlcygpKQorICAgICAgICBm
b3IgKGF1dG8gb3V0cHV0UGFpciA6IHByb2dyYW1EYXRhLmdldE91dHB1dExvY2F0aW9ucygpKQog
ICAgICAgICB7CiAgICAgICAgICAgICBjb25zdCBWYXJpYWJsZUxvY2F0aW9uICZvdXRwdXRMb2Nh
dGlvbiAgID0gb3V0cHV0UGFpci5zZWNvbmQ7CiAgICAgICAgICAgICBjb25zdCBzaDo6U2hhZGVy
VmFyaWFibGUgJm91dHB1dFZhcmlhYmxlID0gc2hhZGVyT3V0cHV0VmFyc1tvdXRwdXRMb2NhdGlv
bi5pbmRleF07CkBAIC0xMDg0LDQgKzExNTEsOTcgQEAgdm9pZCBEeW5hbWljSExTTDo6Z2V0UGl4
ZWxTaGFkZXJPdXRwdXRLZXkoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICB9CiB9
CiAKKy8vIEJ1aWx0aW5WYXJ5aW5nIEltcGxlbWVudGF0aW9uLgorQnVpbHRpblZhcnlpbmc6OkJ1
aWx0aW5WYXJ5aW5nKCkgOiBlbmFibGVkKGZhbHNlKSwgaW5kZXgoMCksIHN5c3RlbVZhbHVlKGZh
bHNlKQoreworfQorCitzdGQ6OnN0cmluZyBCdWlsdGluVmFyeWluZzo6c3RyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gKHN5c3RlbVZhbHVlID8gc2VtYW50aWMgOiAoc2VtYW50aWMgKyBTdHIoaW5k
ZXgpKSk7Cit9CisKK3ZvaWQgQnVpbHRpblZhcnlpbmc6OmVuYWJsZVN5c3RlbShjb25zdCBzdGQ6
OnN0cmluZyAmc3lzdGVtVmFsdWVTZW1hbnRpYykKK3sKKyAgICBlbmFibGVkICAgICA9IHRydWU7
CisgICAgc2VtYW50aWMgICAgPSBzeXN0ZW1WYWx1ZVNlbWFudGljOworICAgIHN5c3RlbVZhbHVl
ID0gdHJ1ZTsKK30KKwordm9pZCBCdWlsdGluVmFyeWluZzo6ZW5hYmxlKGNvbnN0IHN0ZDo6c3Ry
aW5nICZzZW1hbnRpY1ZhbCwgdW5zaWduZWQgaW50IGluZGV4VmFsKQoreworICAgIGVuYWJsZWQg
ID0gdHJ1ZTsKKyAgICBzZW1hbnRpYyA9IHNlbWFudGljVmFsOworICAgIGluZGV4ICAgID0gaW5k
ZXhWYWw7Cit9CisKKy8vIEJ1aWx0aW5WYXJ5aW5nc0QzRCBJbXBsZW1lbnRhdGlvbi4KK0J1aWx0
aW5WYXJ5aW5nc0QzRDo6QnVpbHRpblZhcnlpbmdzRDNEKGNvbnN0IFByb2dyYW1EM0RNZXRhZGF0
YSAmbWV0YWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBWYXJ5aW5nUGFja2luZyAmcGFja2luZykKK3sKKyAgICB1cGRhdGVCdWlsdGlucyhTSEFERVJf
VkVSVEVYLCBtZXRhZGF0YSwgcGFja2luZyk7CisgICAgdXBkYXRlQnVpbHRpbnMoU0hBREVSX1BJ
WEVMLCBtZXRhZGF0YSwgcGFja2luZyk7CisgICAgaWYgKG1ldGFkYXRhLmdldFJlbmRlcmVyTWFq
b3JTaGFkZXJNb2RlbCgpID49IDQpCisgICAgeworICAgICAgICB1cGRhdGVCdWlsdGlucyhTSEFE
RVJfR0VPTUVUUlksIG1ldGFkYXRhLCBwYWNraW5nKTsKKyAgICB9Cit9CisKK3ZvaWQgQnVpbHRp
blZhcnlpbmdzRDNEOjp1cGRhdGVCdWlsdGlucyhTaGFkZXJUeXBlIHNoYWRlclR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHJvZ3JhbUQzRE1ldGFk
YXRhICZtZXRhZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBWYXJ5aW5nUGFja2luZyAmcGFja2luZykKK3sKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAm
dXNlclNlbWFudGljID0gR2V0VmFyeWluZ1NlbWFudGljKG1ldGFkYXRhLmdldFJlbmRlcmVyTWFq
b3JTaGFkZXJNb2RlbCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWV0YWRhdGEudXNlc1N5c3RlbVZhbHVlUG9pbnRTaXplKCkpOwor
CisgICAgdW5zaWduZWQgaW50IHJlc2VydmVkU2VtYW50aWNJbmRleCA9IHBhY2tpbmcuZ2V0TWF4
U2VtYW50aWNJbmRleCgpOworCisgICAgQnVpbHRpbkluZm8gKmJ1aWx0aW5zID0gJm1CdWlsdGlu
SW5mb1tzaGFkZXJUeXBlXTsKKworICAgIGlmIChtZXRhZGF0YS5nZXRSZW5kZXJlck1ham9yU2hh
ZGVyTW9kZWwoKSA+PSA0KQorICAgIHsKKyAgICAgICAgYnVpbHRpbnMtPmR4UG9zaXRpb24uZW5h
YmxlU3lzdGVtKCJTVl9Qb3NpdGlvbiIpOworICAgIH0KKyAgICBlbHNlIGlmIChzaGFkZXJUeXBl
ID09IFNIQURFUl9QSVhFTCkKKyAgICB7CisgICAgICAgIGJ1aWx0aW5zLT5keFBvc2l0aW9uLmVu
YWJsZVN5c3RlbSgiVlBPUyIpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBidWls
dGlucy0+ZHhQb3NpdGlvbi5lbmFibGVTeXN0ZW0oIlBPU0lUSU9OIik7CisgICAgfQorCisgICAg
aWYgKG1ldGFkYXRhLnVzZXNUcmFuc2Zvcm1GZWVkYmFja0dMUG9zaXRpb24oKSkKKyAgICB7Cisg
ICAgICAgIGJ1aWx0aW5zLT5nbFBvc2l0aW9uLmVuYWJsZSh1c2VyU2VtYW50aWMsIHJlc2VydmVk
U2VtYW50aWNJbmRleCsrKTsKKyAgICB9CisKKyAgICBpZiAobWV0YWRhdGEudXNlc0ZyYWdDb29y
ZCgpKQorICAgIHsKKyAgICAgICAgYnVpbHRpbnMtPmdsRnJhZ0Nvb3JkLmVuYWJsZSh1c2VyU2Vt
YW50aWMsIHJlc2VydmVkU2VtYW50aWNJbmRleCsrKTsKKyAgICB9CisKKyAgICBpZiAoc2hhZGVy
VHlwZSA9PSBTSEFERVJfVkVSVEVYID8gbWV0YWRhdGEuYWRkc1BvaW50Q29vcmRUb1ZlcnRleFNo
YWRlcigpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1ldGFkYXRhLnVz
ZXNQb2ludENvb3JkKCkpCisgICAgeworICAgICAgICAvLyBTTTMgcmVzZXJ2ZXMgdGhlIFRFWENP
T1JEIHNlbWFudGljIGZvciBwb2ludCBzcHJpdGUgdGV4Y29vcmRzIChnbF9Qb2ludENvb3JkKQor
ICAgICAgICAvLyBJbiBEM0QxMSB3ZSBtYW51YWxseSBjb21wdXRlIGdsX1BvaW50Q29vcmQgaW4g
dGhlIEdTLgorICAgICAgICBpZiAobWV0YWRhdGEuZ2V0UmVuZGVyZXJNYWpvclNoYWRlck1vZGVs
KCkgPj0gNCkKKyAgICAgICAgeworICAgICAgICAgICAgYnVpbHRpbnMtPmdsUG9pbnRDb29yZC5l
bmFibGUodXNlclNlbWFudGljLCByZXNlcnZlZFNlbWFudGljSW5kZXgrKyk7CisgICAgICAgIH0K
KyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBidWlsdGlucy0+Z2xQb2ludENv
b3JkLmVuYWJsZSgiVEVYQ09PUkQiLCAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFNw
ZWNpYWwgY2FzZTogZG8gbm90IGluY2x1ZGUgUFNJWkUgc2VtYW50aWMgaW4gSExTTCAzIHBpeGVs
IHNoYWRlcnMKKyAgICBpZiAobWV0YWRhdGEudXNlc1N5c3RlbVZhbHVlUG9pbnRTaXplKCkgJiYK
KyAgICAgICAgKHNoYWRlclR5cGUgIT0gU0hBREVSX1BJWEVMIHx8IG1ldGFkYXRhLmdldFJlbmRl
cmVyTWFqb3JTaGFkZXJNb2RlbCgpID49IDQpKQorICAgIHsKKyAgICAgICAgYnVpbHRpbnMtPmds
UG9pbnRTaXplLmVuYWJsZVN5c3RlbSgiUFNJWkUiKTsKKyAgICB9Cit9CisKIH0gIC8vIG5hbWVz
cGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9EeW5hbWljSExTTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9EeW5hbWljSExTTC5oCmluZGV4IDk4ZTYzODRlMmQxLi42
NTJhY2Y4YzVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9EeW5hbWljSExTTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRHluYW1pY0hMU0wuaApAQCAtMjksMjIgKzI5
LDc4IEBAIG5hbWVzcGFjZSBnbAogewogY2xhc3MgSW5mb0xvZzsKIHN0cnVjdCBWYXJpYWJsZUxv
Y2F0aW9uOworY2xhc3MgVmFyeWluZ1BhY2tpbmc7CiBzdHJ1Y3QgVmVydGV4QXR0cmlidXRlOwog
fQogCiBuYW1lc3BhY2UgcngKIHsKLXN0cnVjdCBQYWNrZWRWYXJ5aW5nOwogY2xhc3MgUHJvZ3Jh
bUQzRE1ldGFkYXRhOwogY2xhc3MgU2hhZGVyRDNEOwotY2xhc3MgVmFyeWluZ1BhY2tpbmc7CiAK
IHN0cnVjdCBQaXhlbFNoYWRlck91dHB1dFZhcmlhYmxlCiB7Ci0gICAgR0xlbnVtIHR5cGU7Cisg
ICAgUGl4ZWxTaGFkZXJPdXRwdXRWYXJpYWJsZSgpIHt9CisgICAgUGl4ZWxTaGFkZXJPdXRwdXRW
YXJpYWJsZShHTGVudW0gdHlwZUluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJm5hbWVJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzb3VyY2VJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvdXRwdXRJbmRleEluKQorICAgICAgICA6IHR5cGUodHlwZUluKSwgbmFtZShuYW1l
SW4pLCBzb3VyY2Uoc291cmNlSW4pLCBvdXRwdXRJbmRleChvdXRwdXRJbmRleEluKQorICAgIHsK
KyAgICB9CisKKyAgICBHTGVudW0gdHlwZSA9IEdMX05PTkU7CiAgICAgc3RkOjpzdHJpbmcgbmFt
ZTsKICAgICBzdGQ6OnN0cmluZyBzb3VyY2U7Ci0gICAgc2l6ZV90IG91dHB1dEluZGV4OworICAg
IHNpemVfdCBvdXRwdXRJbmRleCA9IDA7Cit9OworCitzdHJ1Y3QgQnVpbHRpblZhcnlpbmcgZmlu
YWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgICBCdWlsdGluVmFyeWluZygpOworCisgICAg
c3RkOjpzdHJpbmcgc3RyKCkgY29uc3Q7CisgICAgdm9pZCBlbmFibGVTeXN0ZW0oY29uc3Qgc3Rk
OjpzdHJpbmcgJnN5c3RlbVZhbHVlU2VtYW50aWMpOworICAgIHZvaWQgZW5hYmxlKGNvbnN0IHN0
ZDo6c3RyaW5nICZzZW1hbnRpY1ZhbCwgdW5zaWduZWQgaW50IGluZGV4VmFsKTsKKworICAgIGJv
b2wgZW5hYmxlZDsKKyAgICBzdGQ6OnN0cmluZyBzZW1hbnRpYzsKKyAgICB1bnNpZ25lZCBpbnQg
aW5kZXg7CisgICAgYm9vbCBzeXN0ZW1WYWx1ZTsKK307CisKK3N0cnVjdCBCdWlsdGluSW5mbwor
eworICAgIEJ1aWx0aW5WYXJ5aW5nIGR4UG9zaXRpb247CisgICAgQnVpbHRpblZhcnlpbmcgZ2xQ
b3NpdGlvbjsKKyAgICBCdWlsdGluVmFyeWluZyBnbEZyYWdDb29yZDsKKyAgICBCdWlsdGluVmFy
eWluZyBnbFBvaW50Q29vcmQ7CisgICAgQnVpbHRpblZhcnlpbmcgZ2xQb2ludFNpemU7Cit9Owor
CitpbmxpbmUgc3RkOjpzdHJpbmcgR2V0VmFyeWluZ1NlbWFudGljKGludCBtYWpvclNoYWRlck1v
ZGVsLCBib29sIHByb2dyYW1Vc2VzUG9pbnRTaXplKQoreworICAgIC8vIFNNMyByZXNlcnZlcyB0
aGUgVEVYQ09PUkQgc2VtYW50aWMgZm9yIHBvaW50IHNwcml0ZSB0ZXhjb29yZHMgKGdsX1BvaW50
Q29vcmQpCisgICAgLy8gSW4gRDNEMTEgd2UgbWFudWFsbHkgY29tcHV0ZSBnbF9Qb2ludENvb3Jk
IGluIHRoZSBHUy4KKyAgICByZXR1cm4gKChwcm9ncmFtVXNlc1BvaW50U2l6ZSAmJiBtYWpvclNo
YWRlck1vZGVsIDwgNCkgPyAiQ09MT1IiIDogIlRFWENPT1JEIik7Cit9CisKK2NsYXNzIEJ1aWx0
aW5WYXJ5aW5nc0QzRAoreworICBwdWJsaWM6CisgICAgQnVpbHRpblZhcnlpbmdzRDNEKGNvbnN0
IFByb2dyYW1EM0RNZXRhZGF0YSAmbWV0YWRhdGEsIGNvbnN0IGdsOjpWYXJ5aW5nUGFja2luZyAm
cGFja2luZyk7CisKKyAgICBib29sIHVzZXNQb2ludFNpemUoKSBjb25zdCB7IHJldHVybiBtQnVp
bHRpbkluZm9bU0hBREVSX1ZFUlRFWF0uZ2xQb2ludFNpemUuZW5hYmxlZDsgfQorCisgICAgY29u
c3QgQnVpbHRpbkluZm8gJm9wZXJhdG9yW10oU2hhZGVyVHlwZSBzaGFkZXJUeXBlKSBjb25zdCB7
IHJldHVybiBtQnVpbHRpbkluZm9bc2hhZGVyVHlwZV07IH0KKyAgICBCdWlsdGluSW5mbyAmb3Bl
cmF0b3JbXShTaGFkZXJUeXBlIHNoYWRlclR5cGUpIHsgcmV0dXJuIG1CdWlsdGluSW5mb1tzaGFk
ZXJUeXBlXTsgfQorCisgIHByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVCdWlsdGlucyhTaGFkZXJU
eXBlIHNoYWRlclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQcm9ncmFtRDNE
TWV0YWRhdGEgJm1ldGFkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZh
cnlpbmdQYWNraW5nICZwYWNraW5nKTsKKworICAgIHN0ZDo6YXJyYXk8QnVpbHRpbkluZm8sIFNI
QURFUl9UWVBFX01BWD4gbUJ1aWx0aW5JbmZvOwogfTsKIAogY2xhc3MgRHluYW1pY0hMU0wgOiBh
bmdsZTo6Tm9uQ29weWFibGUKQEAgLTYxLDE0ICsxMTcsMTcgQEAgY2xhc3MgRHluYW1pY0hMU0wg
OiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8UGl4ZWxTaGFk
ZXJPdXRwdXRWYXJpYWJsZT4gJm91dHB1dFZhcmlhYmxlcywKICAgICAgICAgYm9vbCB1c2VzRnJh
Z0RlcHRoLAogICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxHTGVudW0+ICZvdXRwdXRMYXlvdXQp
IGNvbnN0OwotICAgIGJvb2wgZ2VuZXJhdGVTaGFkZXJMaW5rSExTTChjb25zdCBnbDo6Q29udGV4
dFN0YXRlICZkYXRhLAorICAgIHZvaWQgZ2VuZXJhdGVTaGFkZXJMaW5rSExTTChjb25zdCBnbDo6
Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UHJvZ3JhbVN0YXRlICZwcm9ncmFtRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgUHJvZ3JhbUQzRE1ldGFkYXRhICZwcm9ncmFtTWV0YWRhdGEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFZhcnlpbmdQYWNraW5nICZ2YXJ5aW5n
UGFja2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZhcnlp
bmdQYWNraW5nICZ2YXJ5aW5nUGFja2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQnVpbHRpblZhcnlpbmdzRDNEICZidWlsdGluc0QzRCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnBpeGVsSExTTCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnZlcnRleEhMU0wpIGNvbnN0OworICAgIHN0
ZDo6c3RyaW5nIGdlbmVyYXRlQ29tcHV0ZVNoYWRlckxpbmtITFNMKGNvbnN0IGdsOjpQcm9ncmFt
U3RhdGUgJnByb2dyYW1EYXRhKSBjb25zdDsKIAotICAgIHN0ZDo6c3RyaW5nIGdlbmVyYXRlR2Vv
bWV0cnlTaGFkZXJQcmVhbWJsZShjb25zdCBWYXJ5aW5nUGFja2luZyAmdmFyeWluZ1BhY2tpbmcp
IGNvbnN0OworICAgIHN0ZDo6c3RyaW5nIGdlbmVyYXRlR2VvbWV0cnlTaGFkZXJQcmVhbWJsZShj
b25zdCBnbDo6VmFyeWluZ1BhY2tpbmcgJnZhcnlpbmdQYWNraW5nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCdWlsdGluVmFyeWluZ3NEM0Qg
JmJ1aWx0aW5zRDNEKSBjb25zdDsKIAogICAgIHN0ZDo6c3RyaW5nIGdlbmVyYXRlR2VvbWV0cnlT
aGFkZXJITFNMKGdsOjpQcmltaXRpdmVUeXBlIHByaW1pdGl2ZVR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0
YSwKQEAgLTg0LDExICsxNDMsMTAgQEAgY2xhc3MgRHluYW1pY0hMU0wgOiBhbmdsZTo6Tm9uQ29w
eWFibGUKICAgcHJpdmF0ZToKICAgICBSZW5kZXJlckQzRCAqY29uc3QgbVJlbmRlcmVyOwogCi0g
ICAgdm9pZCBnZW5lcmF0ZVZhcnlpbmdMaW5rSExTTChTaGFkZXJUeXBlIHNoYWRlclR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWYXJ5aW5nUGFja2luZyAmdmFy
eWluZ1BhY2tpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmlu
Z3N0cmVhbSAmbGlua1N0cmVhbSkgY29uc3Q7Ci0gICAgdm9pZCBnZW5lcmF0ZVZhcnlpbmdITFNM
KGNvbnN0IFZhcnlpbmdQYWNraW5nICZ2YXJ5aW5nUGFja2luZywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gJmhsc2xTdHJlYW0pIGNvbnN0OworICAgIHZv
aWQgZ2VuZXJhdGVWYXJ5aW5nTGlua0hMU0woY29uc3QgZ2w6OlZhcnlpbmdQYWNraW5nICZ2YXJ5
aW5nUGFja2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJ1aWx0
aW5JbmZvICZidWlsdGlucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
cHJvZ3JhbVVzZXNQb2ludFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGQ6OnN0cmluZ3N0cmVhbSAmaGxzbFN0cmVhbSkgY29uc3Q7CiAKICAgICAvLyBQcmVwZW5kIGFu
IHVuZGVyc2NvcmUKICAgICBzdGF0aWMgc3RkOjpzdHJpbmcgZGVjb3JhdGVWYXJpYWJsZShjb25z
dCBzdGQ6OnN0cmluZyAmbmFtZSk7CkBAIC05Nyw3ICsxNTUsNiBAQCBjbGFzcyBEeW5hbWljSExT
TCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZzaGFkZXJBdHRyaWIpIGNv
bnN0OwogfTsKIAotc3RkOjpzdHJpbmcgR2V0VmFyeWluZ1NlbWFudGljKGludCBtYWpvclNoYWRl
ck1vZGVsLCBib29sIHByb2dyYW1Vc2VzUG9pbnRTaXplKTsKLX0KK30gIC8vIG5hbWVzcGFjZSBy
eAogCiAjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9EWU5BTUlDSExTTF9IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9FR0xJbWFnZUQzRC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL0VHTEltYWdlRDNELmNwcAppbmRleCAzMGNjNGQ1ZmY4YS4uMTllOGY5OWFh
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvRUdMSW1hZ2VEM0QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRUdMSW1hZ2VEM0QuY3BwCkBAIC04NSw3ICs4NSw3IEBA
IGdsOjpFcnJvciBFR0xJbWFnZUQzRDo6b3JwaGFuKGVnbDo6SW1hZ2VTaWJsaW5nICpzaWJsaW5n
KQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBFR0xJbWFnZUQzRDo6
Z2V0UmVuZGVyVGFyZ2V0KFJlbmRlclRhcmdldEQzRCAqKm91dFJUKSBjb25zdApAQCAtMTAwLDEz
ICsxMDAsMTMgQEAgZ2w6OkVycm9yIEVHTEltYWdlRDNEOjpnZXRSZW5kZXJUYXJnZXQoUmVuZGVy
VGFyZ2V0RDNEICoqb3V0UlQpIGNvbnN0CiAgICAgICAgIH0KIAogICAgICAgICAqb3V0UlQgPSBz
dGF0aWNfY2FzdDxSZW5kZXJUYXJnZXREM0QgKj4ocnQpOwotICAgICAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQog
ICAgIGVsc2UKICAgICB7CiAgICAgICAgIEFTU0VSVChtUmVuZGVyVGFyZ2V0KTsKICAgICAgICAg
Km91dFJUID0gbVJlbmRlclRhcmdldDsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9G
cmFtZWJ1ZmZlckQzRC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNELmNwcAppbmRleCBmNmVlZjZmNGNkNC4uNjhiMjkx
NzNhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuY3BwCkBAIC04LDcg
KzgsNyBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNE
LmgiCiAKLSNpbmNsdWRlICJjb21tb24vQml0U2V0SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJjb21t
b24vYml0c2V0X3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1l
YnVmZmVyQXR0YWNobWVudC5oIgpAQCAtMjYzLDQwICsyNjMsMTIgQEAgZ2w6OkVycm9yIEZyYW1l
YnVmZmVyRDNEOjpibGl0KENvbnRleHRJbXBsICpjb250ZXh0LAogewogICAgIGNvbnN0IGF1dG8g
JmdsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCk7CiAg
ICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2VGcmFtZWJ1ZmZlciA9IGdsU3RhdGUuZ2V0
UmVhZEZyYW1lYnVmZmVyKCk7Ci0gICAgYm9vbCBibGl0UmVuZGVyVGFyZ2V0ID0gZmFsc2U7Ci0g
ICAgaWYgKChtYXNrICYgR0xfQ09MT1JfQlVGRkVSX0JJVCkgJiYgc291cmNlRnJhbWVidWZmZXIt
PmdldFJlYWRDb2xvcmJ1ZmZlcigpICE9IG51bGxwdHIgJiYKLSAgICAgICAgbVN0YXRlLmdldEZp
cnN0Q29sb3JBdHRhY2htZW50KCkgIT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIGJsaXRSZW5k
ZXJUYXJnZXQgPSB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgYmxpdFN0ZW5jaWwgPSBmYWxzZTsK
LSAgICBpZiAoKG1hc2sgJiBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpICYmIHNvdXJjZUZyYW1lYnVm
ZmVyLT5nZXRTdGVuY2lsYnVmZmVyKCkgIT0gbnVsbHB0ciAmJgotICAgICAgICBtU3RhdGUuZ2V0
U3RlbmNpbEF0dGFjaG1lbnQoKSAhPSBudWxscHRyKQotICAgIHsKLSAgICAgICAgYmxpdFN0ZW5j
aWwgPSB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgYmxpdERlcHRoID0gZmFsc2U7Ci0gICAgaWYg
KChtYXNrICYgR0xfREVQVEhfQlVGRkVSX0JJVCkgJiYgc291cmNlRnJhbWVidWZmZXItPmdldERl
cHRoYnVmZmVyKCkgIT0gbnVsbHB0ciAmJgotICAgICAgICBtU3RhdGUuZ2V0RGVwdGhBdHRhY2ht
ZW50KCkgIT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIGJsaXREZXB0aCA9IHRydWU7Ci0gICAg
fQorICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3IgPSBnbFN0YXRlLmlzU2Npc3NvclRl
c3RFbmFibGVkKCkgPyAmZ2xTdGF0ZS5nZXRTY2lzc29yKCkgOiBudWxscHRyOworICAgIEFOR0xF
X1RSWShibGl0SW1wbChzb3VyY2VBcmVhLCBkZXN0QXJlYSwgc2Npc3NvciwgKG1hc2sgJiBHTF9D
T0xPUl9CVUZGRVJfQklUKSAhPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAobWFzayAmIEdM
X0RFUFRIX0JVRkZFUl9CSVQpICE9IDAsIChtYXNrICYgR0xfU1RFTkNJTF9CVUZGRVJfQklUKSAh
PSAwLAorICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXIsIHNvdXJjZUZyYW1lYnVmZmVyKSk7
CiAKLSAgICBpZiAoYmxpdFJlbmRlclRhcmdldCB8fCBibGl0RGVwdGggfHwgYmxpdFN0ZW5jaWwp
Ci0gICAgewotICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICpzY2lzc29yID0KLSAgICAgICAg
ICAgIGdsU3RhdGUuaXNTY2lzc29yVGVzdEVuYWJsZWQoKSA/ICZnbFN0YXRlLmdldFNjaXNzb3Io
KSA6IG51bGxwdHI7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IGJsaXRJbXBsKHNvdXJjZUFy
ZWEsIGRlc3RBcmVhLCBzY2lzc29yLCBibGl0UmVuZGVyVGFyZ2V0LCBibGl0RGVwdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsaXRTdGVuY2lsLCBmaWx0ZXIsIHNvdXJj
ZUZyYW1lYnVmZmVyKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
IGJvb2wgRnJhbWVidWZmZXJEM0Q6OmNoZWNrU3RhdHVzKCkgY29uc3QKQEAgLTMyNCw3ICsyOTYs
OCBAQCBib29sIEZyYW1lYnVmZmVyRDNEOjpjaGVja1N0YXR1cygpIGNvbnN0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLXZvaWQgRnJhbWVidWZmZXJEM0Q6OnN5bmNTdGF0ZShjb25zdCBnbDo6RnJh
bWVidWZmZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQordm9pZCBGcmFtZWJ1ZmZlckQzRDo6c3lu
Y1N0YXRlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQogewog
ICAgIGJvb2wgaW52YWxpZGF0ZUNvbG9yQXR0YWNobWVudENhY2hlID0gZmFsc2U7CiAKQEAgLTM4
MCw0ICszNTMsOSBAQCBjb25zdCBnbDo6QXR0YWNobWVudExpc3QgJkZyYW1lYnVmZmVyRDNEOjpn
ZXRDb2xvckF0dGFjaG1lbnRzRm9yUmVuZGVyKCkgY29uc3QKICAgICByZXR1cm4gbUNvbG9yQXR0
YWNobWVudHNGb3JSZW5kZXIudmFsdWUoKTsKIH0KIAorZ2w6OkVycm9yIEZyYW1lYnVmZmVyRDNE
OjpnZXRTYW1wbGVQb3NpdGlvbihzaXplX3QgaW5kZXgsIEdMZmxvYXQgKnh5KSBjb25zdAorewor
ICAgIHJldHVybiBnbDo6SW50ZXJuYWxFcnJvcigpIDw8ICJnZXRTYW1wbGVQb3NpdGlvbiBpcyB1
bmltcGxlbWVudGVkLiI7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFtZWJ1ZmZl
ckQzRC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9GcmFtZWJ1ZmZlckQzRC5oCmluZGV4IGU1NmVlN2MwYjAxLi5jNmVhYjU2NzVmMCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9G
cmFtZWJ1ZmZlckQzRC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuaApAQCAtMzAsNyArMzAsNiBAQCBuYW1lc3Bh
Y2UgcngKIHsKIGNsYXNzIFJlbmRlcmVyRDNEOwogY2xhc3MgUmVuZGVyVGFyZ2V0RDNEOwotc3Ry
dWN0IFdvcmthcm91bmRzRDNEOwogCiBzdHJ1Y3QgQ2xlYXJQYXJhbWV0ZXJzCiB7CkBAIC05Niwx
MCArOTUsMTIgQEAgY2xhc3MgRnJhbWVidWZmZXJEM0QgOiBwdWJsaWMgRnJhbWVidWZmZXJJbXBs
CiAKICAgICBib29sIGNoZWNrU3RhdHVzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHN5
bmNTdGF0ZShjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHN5bmNTdGF0ZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsIGNvbnN0
IGdsOjpGcmFtZWJ1ZmZlcjo6RGlydHlCaXRzICZkaXJ0eUJpdHMpIG92ZXJyaWRlOwogCiAgICAg
Y29uc3QgZ2w6OkF0dGFjaG1lbnRMaXN0ICZnZXRDb2xvckF0dGFjaG1lbnRzRm9yUmVuZGVyKCkg
Y29uc3Q7CiAKKyAgICBnbDo6RXJyb3IgZ2V0U2FtcGxlUG9zaXRpb24oc2l6ZV90IGluZGV4LCBH
TGZsb2F0ICp4eSkgY29uc3Qgb3ZlcnJpZGU7CisKICAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGds
OjpFcnJvciBjbGVhckltcGwoQ29udGV4dEltcGwgKmltcGwsIGNvbnN0IENsZWFyUGFyYW1ldGVy
cyAmY2xlYXJQYXJhbXMpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9ITFNMQ29tcGlsZXIuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9ITFNMQ29tcGlsZXIuY3Bw
CmluZGV4IDMwNWI2YzRlNGFjLi4zYjRkNjM4MTdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9ITFNMQ29tcGlsZXIuY3BwCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSExT
TENvbXBpbGVyLmNwcApAQCAtMTA2LDExICsxMDYsMTEgQEAgSExTTENvbXBpbGVyOjp+SExTTENv
bXBpbGVyKCkKICAgICByZWxlYXNlKCk7CiB9CiAKLWdsOjpFcnJvciBITFNMQ29tcGlsZXI6Omlu
aXRpYWxpemUoKQorZ2w6OkVycm9yIEhMU0xDb21waWxlcjo6ZW5zdXJlSW5pdGlhbGl6ZWQoKQog
ewogICAgIGlmIChtSW5pdGlhbGl6ZWQpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAg
ICAgVFJBQ0VfRVZFTlQwKCJncHUuYW5nbGUiLCAiSExTTENvbXBpbGVyOjppbml0aWFsaXplIik7
CkBAIC0xMzYsNyArMTM2LDcgQEAgZ2w6OkVycm9yIEhMU0xDb21waWxlcjo6aW5pdGlhbGl6ZSgp
CiAKICAgICBpZiAoIW1EM0RDb21waWxlck1vZHVsZSkKICAgICB7Ci0gICAgICAgIEVSUigiRDNE
IGNvbXBpbGVyIG1vZHVsZSBub3QgZm91bmQuIik7CisgICAgICAgIEVSUigpIDw8ICJEM0QgY29t
cGlsZXIgbW9kdWxlIG5vdCBmb3VuZC4iOwogICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09V
VF9PRl9NRU1PUlksICJEM0QgY29tcGlsZXIgbW9kdWxlIG5vdCBmb3VuZC4iKTsKICAgICB9CiAK
QEAgLTE2MCw3ICsxNjAsNyBAQCBnbDo6RXJyb3IgSExTTENvbXBpbGVyOjppbml0aWFsaXplKCkK
ICAgICB9CiAKICAgICBtSW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2b2lkIEhMU0xD
b21waWxlcjo6cmVsZWFzZSgpCkBAIC0xNzksMTEgKzE3OSw3IEBAIGdsOjpFcnJvciBITFNMQ29t
cGlsZXI6OmNvbXBpbGVUb0JpbmFyeShnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3Qgc3RkOjpz
dHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnZlY3RvcjxDb21waWxlQ29uZmlnPiAmY29uZmlncywgY29uc3QgRDNEX1NIQURFUl9NQUNSTyAq
b3ZlcnJpZGVNYWNyb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SUQzREJsb2IgKipvdXRDb21waWxlZEJsb2IsIHN0ZDo6c3RyaW5nICpvdXREZWJ1Z0luZm8pCiB7
Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gaW5pdGlhbGl6ZSgpOwotICAgIGlmIChlcnJvci5pc0Vy
cm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFTU0VSVCht
SW5pdGlhbGl6ZWQpOwogCiAjaWYgIWRlZmluZWQoQU5HTEVfRU5BQkxFX1dJTkRPV1NfU1RPUkUp
CiAgICAgQVNTRVJUKG1EM0RDb21waWxlck1vZHVsZSk7CkBAIC0yMjEsOCArMjE3LDggQEAgZ2w6
OkVycm9yIEhMU0xDb21waWxlcjo6Y29tcGlsZVRvQmluYXJ5KGdsOjpJbmZvTG9nICZpbmZvTG9n
LCBjb25zdCBzdGQ6OnN0cmluZwogICAgICAgICAgICAgU2FmZVJlbGVhc2UoZXJyb3JNZXNzYWdl
KTsKIAogICAgICAgICAgICAgaW5mb0xvZy5hcHBlbmRTYW5pdGl6ZWQobWVzc2FnZS5jX3N0cigp
KTsKLSAgICAgICAgICAgIFRSQUNFKCJcbiVzIiwgaGxzbC5jX3N0cigpKTsKLSAgICAgICAgICAg
IFRSQUNFKCJcbiVzIiwgbWVzc2FnZS5jX3N0cigpKTsKKyAgICAgICAgICAgIFdBUk4oKSA8PCBz
dGQ6OmVuZGwgPDwgaGxzbDsKKyAgICAgICAgICAgIFdBUk4oKSA8PCBzdGQ6OmVuZGwgPDwgbWVz
c2FnZTsKIAogICAgICAgICAgICAgaWYgKChtZXNzYWdlLmZpbmQoImVycm9yIFgzNTMxOiIpICE9
IHN0ZDo6c3RyaW5nOjpucG9zIHx8ICAvLyAiY2FuJ3QgdW5yb2xsIGxvb3BzIG1hcmtlZCB3aXRo
IGxvb3AgYXR0cmlidXRlIgogICAgICAgICAgICAgICAgICBtZXNzYWdlLmZpbmQoImVycm9yIFg0
MDE0OiIpICE9IHN0ZDo6c3RyaW5nOjpucG9zKSAmJiAvLyAiY2Fubm90IGhhdmUgZ3JhZGllbnQg
b3BlcmF0aW9ucyBpbnNpZGUgbG9vcHMgd2l0aCBkaXZlcmdlbnQgZmxvdyBjb250cm9sIiwKQEAg
LTI3MCwxNCArMjY2LDEwIEBAIGdsOjpFcnJvciBITFNMQ29tcGlsZXI6OmNvbXBpbGVUb0JpbmFy
eShnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29uc3Qgc3RkOjpzdHJpbmcKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgc3RkOjpzdHJpbmcgZGlzYXNzZW1ibHk7Ci0gICAgICAgICAgICBlcnJv
ciA9IGRpc2Fzc2VtYmxlQmluYXJ5KGJpbmFyeSwgJmRpc2Fzc2VtYmx5KTsKLSAgICAgICAgICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgQU5HTEVfVFJZKGRpc2Fzc2Vt
YmxlQmluYXJ5KGJpbmFyeSwgJmRpc2Fzc2VtYmx5KSk7CiAgICAgICAgICAgICAoKm91dERlYnVn
SW5mbykgKz0gIlxuIiArIGRpc2Fzc2VtYmx5ICsgIlxuLy8gQVNTRU1CTFkgRU5EXG4iOwogI2Vu
ZGlmICAvLyBBTkdMRV9BUFBFTkRfQVNTRU1CTFlfVE9fU0hBREVSX0RFQlVHX0lORk8gPT0gQU5H
TEVfRU5BQkxFRAotICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cisg
ICAgICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSkKQEAgLTI5NywxNiArMjg5LDEyIEBAIGdsOjpFcnJv
ciBITFNMQ29tcGlsZXI6OmNvbXBpbGVUb0JpbmFyeShnbDo6SW5mb0xvZyAmaW5mb0xvZywgY29u
c3Qgc3RkOjpzdHJpbmcKIAogICAgIC8vIE5vbmUgb2YgdGhlIGNvbmZpZ3VyYXRpb25zIHN1Y2Nl
ZWRlZCBpbiBjb21waWxpbmcgdGhpcyBzaGFkZXIgYnV0IHRoZSBjb21waWxlciBpcyBzdGlsbCBp
bnRhY3QKICAgICAqb3V0Q29tcGlsZWRCbG9iID0gbnVsbHB0cjsKLSAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVy
cm9yIEhMU0xDb21waWxlcjo6ZGlzYXNzZW1ibGVCaW5hcnkoSUQzREJsb2IgKnNoYWRlckJpbmFy
eSwgc3RkOjpzdHJpbmcgKmRpc2Fzc2VtYmx5T3V0KQogewotICAgIGdsOjpFcnJvciBlcnJvciA9
IGluaXRpYWxpemUoKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBBTkdMRV9UUlkoZW5zdXJlSW5pdGlhbGl6ZWQoKSk7
CiAKICAgICAvLyBSZXRyaWV2ZSBkaXNhc3NlbWJseQogICAgIFVJTlQgZmxhZ3MgPSBEM0RfRElT
QVNNX0VOQUJMRV9ERUZBVUxUX1ZBTFVFX1BSSU5UUyB8IEQzRF9ESVNBU01fRU5BQkxFX0lOU1RS
VUNUSU9OX05VTUJFUklORzsKQEAgLTMyNyw3ICszMTUsNyBAQCBnbDo6RXJyb3IgSExTTENvbXBp
bGVyOjpkaXNhc3NlbWJsZUJpbmFyeShJRDNEQmxvYiAqc2hhZGVyQmluYXJ5LCBzdGQ6OnN0cmlu
ZyAqZAogCiAgICAgU2FmZVJlbGVhc2UoZGlzYXNzZW1ibHkpOwogCi0gICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIH0gIC8v
IG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9ITFNMQ29tcGlsZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSExTTENvbXBpbGVyLmgKaW5kZXggM2MwZDJh
ZGNhY2YuLmM4ZjllYWMyOTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0hMU0xDb21waWxlci5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSExTTENvbXBpbGVyLmgKQEAg
LTEsMyArMSwxMSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBITFNMQ29tcGlsZXI6IFdyYXBwZXIgZm9y
IHRoZSBEM0RDb21waWxlciBETEwuCisvLworCiAjaWZuZGVmIExJQkFOR0xFX1JFTkRFUkVSX0Qz
RF9ITFNMQ09NUElMRVJfSF8KICNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfRDNEX0hMU0xDT01Q
SUxFUl9IXwogCkBAIC00MSw5ICs0OSw5IEBAIGNsYXNzIEhMU0xDb21waWxlciA6IGFuZ2xlOjpO
b25Db3B5YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzREJsb2IgKipvdXRD
b21waWxlZEJsb2IsIHN0ZDo6c3RyaW5nICpvdXREZWJ1Z0luZm8pOwogCiAgICAgZ2w6OkVycm9y
IGRpc2Fzc2VtYmxlQmluYXJ5KElEM0RCbG9iICpzaGFkZXJCaW5hcnksIHN0ZDo6c3RyaW5nICpk
aXNhc3NlbWJseU91dCk7CisgICAgZ2w6OkVycm9yIGVuc3VyZUluaXRpYWxpemVkKCk7CiAKICAg
cHJpdmF0ZToKLSAgICBnbDo6RXJyb3IgaW5pdGlhbGl6ZSgpOwogCiAgICAgYm9vbCBtSW5pdGlh
bGl6ZWQ7CiAgICAgSE1PRFVMRSBtRDNEQ29tcGlsZXJNb2R1bGU7CkBAIC01Myw0ICs2MSw0IEBA
IGNsYXNzIEhMU0xDb21waWxlciA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiB9CiAKLSNlbmRpZiAv
LyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfSExTTENPTVBJTEVSX0hfCisjZW5kaWYgIC8vIExJQkFO
R0xFX1JFTkRFUkVSX0QzRF9ITFNMQ09NUElMRVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSW1hZ2VEM0QuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSW1hZ2VEM0QuaApp
bmRleCA5NDdhODMyOGY1Ny4uZmY2MDM2MjMwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSW1hZ2VEM0QuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0ltYWdlRDNELmgK
QEAgLTU4LDEwICs1OCwyMiBAQCBjbGFzcyBJbWFnZUQzRCA6IGFuZ2xlOjpOb25Db3B5YWJsZQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYXBwbHlTa2lwSW1hZ2VzKSA9IDA7
CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgbG9hZENvbXByZXNzZWREYXRhKGNvbnN0IGdsOjpCb3gg
JmFyZWEsIGNvbnN0IHZvaWQgKmlucHV0KSA9IDA7CiAKLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBz
ZXRNYW5hZ2VkU3VyZmFjZTJEKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBpbnQgbGV2ZWwpIHsg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7IH07Ci0gICAgdmlydHVhbCBnbDo6RXJyb3Ig
c2V0TWFuYWdlZFN1cmZhY2VDdWJlKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBpbnQgZmFjZSwg
aW50IGxldmVsKSB7IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOyB9OwotICAgIHZpcnR1
YWwgZ2w6OkVycm9yIHNldE1hbmFnZWRTdXJmYWNlM0QoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2Us
IGludCBsZXZlbCkgeyByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsgfTsKLSAgICB2aXJ0
dWFsIGdsOjpFcnJvciBzZXRNYW5hZ2VkU3VyZmFjZTJEQXJyYXkoVGV4dHVyZVN0b3JhZ2UgKnN0
b3JhZ2UsIGludCBsYXllciwgaW50IGxldmVsKSB7IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOyB9OworICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldE1hbmFnZWRTdXJmYWNlMkQoVGV4dHVy
ZVN0b3JhZ2UgKnN0b3JhZ2UsIGludCBsZXZlbCkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOworICAgIH07CisgICAgdmlydHVhbCBnbDo6RXJyb3Igc2V0TWFuYWdlZFN1cmZh
Y2VDdWJlKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBpbnQgZmFjZSwgaW50IGxldmVsKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAgfTsKKyAgICB2aXJ0dWFsIGds
OjpFcnJvciBzZXRNYW5hZ2VkU3VyZmFjZTNEKFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBpbnQg
bGV2ZWwpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICB9OworICAg
IHZpcnR1YWwgZ2w6OkVycm9yIHNldE1hbmFnZWRTdXJmYWNlMkRBcnJheShUZXh0dXJlU3RvcmFn
ZSAqc3RvcmFnZSwgaW50IGxheWVyLCBpbnQgbGV2ZWwpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKKyAgICB9OwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNvcHlUb1N0b3Jh
Z2UoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwg
Y29uc3QgZ2w6OkJveCAmcmVnaW9uKSA9IDA7CiAKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBjb3B5
RnJvbVRleFN0b3JhZ2UoY29uc3QgZ2w6OkltYWdlSW5kZXggJmltYWdlSW5kZXgsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0lu
ZGV4QnVmZmVyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvSW5kZXhCdWZmZXIuY3BwCmluZGV4IDY3N2I4YmIyNDBmLi5kZjNmYTY5MTc0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9JbmRleEJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9JbmRleEJ1ZmZlci5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgZ2w6
OkVycm9yIEluZGV4QnVmZmVySW50ZXJmYWNlOjptYXBCdWZmZXIodW5zaWduZWQgaW50IHNpemUs
IHZvaWQgKipvdXRNYXBwZWRNZW0KICAgICB9CiAKICAgICBtV3JpdGVQb3NpdGlvbiArPSBzaXpl
OwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwogfQogCiBnbDo6RXJyb3IgSW5kZXhCdWZmZXJJbnRlcmZhY2U6OnVubWFwQnVmZmVy
KCkKQEAgLTE2Miw3ICsxNjIsNyBAQCBnbDo6RXJyb3IgU3RyZWFtaW5nSW5kZXhCdWZmZXJJbnRl
cmZhY2U6OnJlc2VydmVCdWZmZXJTcGFjZSh1bnNpZ25lZCBpbnQgc2l6ZSwgRwogICAgICAgICBz
ZXRXcml0ZVBvc2l0aW9uKDApOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiAKQEAgLTE4NCw3ICsxODQs
NyBAQCBnbDo6RXJyb3IgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2U6OnJlc2VydmVCdWZmZXJT
cGFjZSh1bnNpZ25lZCBpbnQgc2l6ZSwgR0xlbgogICAgIH0KICAgICBlbHNlIGlmIChjdXJTaXpl
ID49IHNpemUgJiYgaW5kZXhUeXBlID09IGdldEluZGV4VHlwZSgpKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9JbmRleERhdGFNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSW5kZXhE
YXRhTWFuYWdlci5jcHAKaW5kZXggNDc0Yzc3ZmNlNDQuLjdhYzkxNzRjYTdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL0luZGV4
RGF0YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvSW5kZXhEYXRhTWFuYWdlci5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBn
bDo6RXJyb3IgU3RyZWFtSW5JbmRleEJ1ZmZlcihJbmRleEJ1ZmZlckludGVyZmFjZSAqYnVmZmVy
LAogICAgICAgICByZXR1cm4gZXJyb3I7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIH0gIC8vIGFub255
bW91cyBuYW1lc3BhY2UKQEAgLTEzNyw2ICsxMzcsNTIgQEAgSW5kZXhEYXRhTWFuYWdlcjo6fklu
ZGV4RGF0YU1hbmFnZXIoKQogICAgIFNhZmVEZWxldGUobVN0cmVhbWluZ0J1ZmZlckludCk7CiB9
CiAKK2Jvb2wgSW5kZXhEYXRhTWFuYWdlcjo6dXNlUHJpbWl0aXZlUmVzdGFydFdvcmthcm91bmQo
Ym9vbCBwcmltaXRpdmVSZXN0YXJ0Rml4ZWRJbmRleEVuYWJsZWQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlKQoreworICAg
IC8vIFdlIHNob3VsZCBuZXZlciBoYXZlIHRvIGRlYWwgd2l0aCBwcmltaXRpdmUgcmVzdGFydCB3
b3JrYXJvdW5kIGlzc3VlIHdpdGggR0xfVU5TSUdORURfSU5UCisgICAgLy8gaW5kaWNlcywgc2lu
Y2Ugd2UgcmVzdHJpY3QgaXQgdmlhIE1BWF9FTEVNRU5UX0lOREVYLgorICAgIHJldHVybiAoIXBy
aW1pdGl2ZVJlc3RhcnRGaXhlZEluZGV4RW5hYmxlZCAmJiB0eXBlID09IEdMX1VOU0lHTkVEX1NI
T1JUICYmCisgICAgICAgICAgICBtUmVuZGVyZXJDbGFzcyA9PSBSRU5ERVJFUl9EM0QxMSk7Cit9
CisKK2Jvb2wgSW5kZXhEYXRhTWFuYWdlcjo6aXNTdHJlYW1pbmdJbmRleERhdGEoYm9vbCBwcmlt
aXRpdmVSZXN0YXJ0V29ya2Fyb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHNyY1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsOjpCdWZmZXIgKmdsQnVmZmVyKQoreworICAgIEJ1ZmZlckQzRCAq
YnVmZmVyID0gZ2xCdWZmZXIgPyBHZXRJbXBsQXM8QnVmZmVyRDNEPihnbEJ1ZmZlcikgOiBudWxs
cHRyOworCisgICAgLy8gQ2FzZSAxOiB0aGUgaW5kaWNlcyBhcmUgcGFzc2VkIGJ5IHBvaW50ZXIs
IHdoaWNoIGZvcmNlcyB0aGUgc3RyZWFtaW5nIG9mIGluZGV4IGRhdGEKKyAgICBpZiAoZ2xCdWZm
ZXIgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IGNvbnN0IEdMZW51bSBkc3RUeXBlID0gKHNyY1R5cGUgPT0gR0xfVU5TSUdORURfSU5UIHx8IHBy
aW1pdGl2ZVJlc3RhcnRXb3JrYXJvdW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID8gR0xfVU5TSUdORURfSU5UCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBHTF9V
TlNJR05FRF9TSE9SVDsKKworICAgIC8vIENhc2UgMmE6IHRoZSBidWZmZXIgY2FuIGJlIHVzZWQg
ZGlyZWN0bHkKKyAgICBpZiAoYnVmZmVyLT5zdXBwb3J0c0RpcmVjdEJpbmRpbmcoKSAmJiBkc3RU
eXBlID09IHNyY1R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgLy8gQ2FzZSAyYjogdXNlIGEgc3RhdGljIHRyYW5zbGF0ZWQgY29weSBvciBmYWxsIGJhY2sg
dG8gc3RyZWFtaW5nCisgICAgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZhY2UgKnN0YXRpY0J1ZmZl
ciA9IGJ1ZmZlci0+Z2V0U3RhdGljSW5kZXhCdWZmZXIoKTsKKyAgICBpZiAoc3RhdGljQnVmZmVy
ID09IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBp
ZiAoKHN0YXRpY0J1ZmZlci0+Z2V0QnVmZmVyU2l6ZSgpICE9IDApICYmIChzdGF0aWNCdWZmZXIt
PmdldEluZGV4VHlwZSgpICE9IGRzdFR5cGUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiAvLyBUaGlzIGZ1bmN0aW9uIHRyYW5z
bGF0ZXMgYSBHTC1zdHlsZSBpbmRpY2VzIGludG8gRFgtc3R5bGUgaW5kaWNlcywgd2l0aCB0aGVp
ciBkZXNjcmlwdGlvbgogLy8gcmV0dXJuZWQgaW4gdHJhbnNsYXRlZC4KIC8vIEdMIGNhbiBzcGVj
aWZ5IHZlcnRleCBkYXRhIGluIGltbWVkaWF0ZSBtb2RlIChwb2ludGVyIHRvIENQVSBhcnJheSBv
ZiBpbmRpY2VzKSwgd2hpY2ggaXMgbm90CkBAIC0xNTcsOSArMjAzLDkgQEAgZ2w6OkVycm9yIElu
ZGV4RGF0YU1hbmFnZXI6OnByZXBhcmVJbmRleERhdGEoR0xlbnVtIHNyY1R5cGUsCiAgICAgYm9v
bCBoYXNQcmltaXRpdmVSZXN0YXJ0SW5kZXggPQogICAgICAgICB0cmFuc2xhdGVkLT5pbmRleFJh
bmdlLnZlcnRleEluZGV4Q291bnQgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvdW50KSB8fAogICAg
ICAgICB0cmFuc2xhdGVkLT5pbmRleFJhbmdlLmVuZCA9PSBnbDo6R2V0UHJpbWl0aXZlUmVzdGFy
dEluZGV4KHNyY1R5cGUpOwotICAgIGJvb2wgcHJpbWl0aXZlUmVzdGFydFdvcmthcm91bmQgPSBt
UmVuZGVyZXJDbGFzcyA9PSBSRU5ERVJFUl9EM0QxMSAmJgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAhcHJpbWl0aXZlUmVzdGFydEZpeGVkSW5kZXhFbmFibGVkICYmCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1ByaW1pdGl2ZVJlc3RhcnRJ
bmRleCAmJiBzcmNUeXBlID09IEdMX1VOU0lHTkVEX1NIT1JUOworICAgIGJvb2wgcHJpbWl0aXZl
UmVzdGFydFdvcmthcm91bmQgPQorICAgICAgICB1c2VQcmltaXRpdmVSZXN0YXJ0V29ya2Fyb3Vu
ZChwcmltaXRpdmVSZXN0YXJ0Rml4ZWRJbmRleEVuYWJsZWQsIHNyY1R5cGUpICYmCisgICAgICAg
IGhhc1ByaW1pdGl2ZVJlc3RhcnRJbmRleDsKIAogICAgIC8vIFdlIHNob3VsZCBuZXZlciBoYXZl
IHRvIGRlYWwgd2l0aCBNQVhfVUlOVCBpbmRpY2VzLCBzaW5jZSB3ZSByZXN0cmljdCBpdCB2aWEK
ICAgICAvLyBNQVhfRUxFTUVOVF9JTkRFWC4KQEAgLTIwMiwxNSArMjQ4LDE0IEBAIGdsOjpFcnJv
ciBJbmRleERhdGFNYW5hZ2VyOjpwcmVwYXJlSW5kZXhEYXRhKEdMZW51bSBzcmNUeXBlLAogICAg
IH0KIAogICAgIC8vIENhc2UgMmE6IHRoZSBidWZmZXIgY2FuIGJlIHVzZWQgZGlyZWN0bHkKLSAg
ICBpZiAob2Zmc2V0QWxpZ25lZCAmJiBidWZmZXItPnN1cHBvcnRzRGlyZWN0QmluZGluZygpICYm
Ci0gICAgICAgIGRzdFR5cGUgPT0gc3JjVHlwZSAmJiAhcHJpbWl0aXZlUmVzdGFydFdvcmthcm91
bmQpCisgICAgaWYgKG9mZnNldEFsaWduZWQgJiYgYnVmZmVyLT5zdXBwb3J0c0RpcmVjdEJpbmRp
bmcoKSAmJiBkc3RUeXBlID09IHNyY1R5cGUpCiAgICAgewogICAgICAgICB0cmFuc2xhdGVkLT5z
dG9yYWdlID0gYnVmZmVyOwogICAgICAgICB0cmFuc2xhdGVkLT5pbmRleEJ1ZmZlciA9IG51bGxw
dHI7CiAgICAgICAgIHRyYW5zbGF0ZWQtPnNlcmlhbCA9IGJ1ZmZlci0+Z2V0U2VyaWFsKCk7CiAg
ICAgICAgIHRyYW5zbGF0ZWQtPnN0YXJ0SW5kZXggPSAob2Zmc2V0ID4+IHNyY1R5cGVJbmZvLmJ5
dGVzU2hpZnQpOwogICAgICAgICB0cmFuc2xhdGVkLT5zdGFydE9mZnNldCA9IG9mZnNldDsKLSAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMjc3LDcgKzMyMiw3IEBAIGds
OjpFcnJvciBJbmRleERhdGFNYW5hZ2VyOjpwcmVwYXJlSW5kZXhEYXRhKEdMZW51bSBzcmNUeXBl
LAogICAgICAgICB0cmFuc2xhdGVkLT5zdGFydE9mZnNldCA9IChvZmZzZXQgPj4gc3JjVHlwZUlu
Zm8uYnl0ZXNTaGlmdCkgPDwgZHN0VHlwZUluZm8uYnl0ZXNTaGlmdDsKICAgICB9CiAKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAogZ2w6OkVycm9yIEluZGV4RGF0YU1hbmFnZXI6OnN0cmVhbUluZGV4RGF0YShjb25zdCBH
THZvaWQgKmRhdGEsCkBAIC0zMDYsNyArMzUxLDcgQEAgZ2w6OkVycm9yIEluZGV4RGF0YU1hbmFn
ZXI6OnN0cmVhbUluZGV4RGF0YShjb25zdCBHTHZvaWQgKmRhdGEsCiAgICAgdHJhbnNsYXRlZC0+
c3RhcnRJbmRleCA9IChvZmZzZXQgPj4gZHN0VHlwZUluZm8uYnl0ZXNTaGlmdCk7CiAgICAgdHJh
bnNsYXRlZC0+c3RhcnRPZmZzZXQgPSBvZmZzZXQ7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIElu
ZGV4RGF0YU1hbmFnZXI6OmdldFN0cmVhbWluZ0luZGV4QnVmZmVyKEdMZW51bSBkZXN0aW5hdGlv
bkluZGV4VHlwZSwKQEAgLTMyOCw3ICszNzMsNyBAQCBnbDo6RXJyb3IgSW5kZXhEYXRhTWFuYWdl
cjo6Z2V0U3RyZWFtaW5nSW5kZXhCdWZmZXIoR0xlbnVtIGRlc3RpbmF0aW9uSW5kZXhUeXBlLAog
ICAgICAgICB9CiAKICAgICAgICAgKm91dEJ1ZmZlciA9IG1TdHJlYW1pbmdCdWZmZXJJbnQ7Ci0g
ICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTM0Nyw3ICszOTIsNyBAQCBn
bDo6RXJyb3IgSW5kZXhEYXRhTWFuYWdlcjo6Z2V0U3RyZWFtaW5nSW5kZXhCdWZmZXIoR0xlbnVt
IGRlc3RpbmF0aW9uSW5kZXhUeXBlLAogICAgICAgICB9CiAKICAgICAgICAgKm91dEJ1ZmZlciA9
IG1TdHJlYW1pbmdCdWZmZXJTaG9ydDsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9J
bmRleERhdGFNYW5hZ2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL0luZGV4RGF0YU1hbmFnZXIuaAppbmRleCA0NGViNjhjMDcxNi4uMzIwNmM1
MmVjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvSW5kZXhEYXRhTWFuYWdlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvSW5kZXhEYXRhTWFuYWdlci5oCkBAIC02NSw2
ICs2NSwxMCBAQCBjbGFzcyBJbmRleERhdGFNYW5hZ2VyIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAg
ICAgZXhwbGljaXQgSW5kZXhEYXRhTWFuYWdlcihCdWZmZXJGYWN0b3J5RDNEICpmYWN0b3J5LCBS
ZW5kZXJlckNsYXNzIHJlbmRlcmVyQ2xhc3MpOwogICAgIHZpcnR1YWwgfkluZGV4RGF0YU1hbmFn
ZXIoKTsKIAorICAgIGJvb2wgdXNlUHJpbWl0aXZlUmVzdGFydFdvcmthcm91bmQoYm9vbCBwcmlt
aXRpdmVSZXN0YXJ0Rml4ZWRJbmRleEVuYWJsZWQsIEdMZW51bSB0eXBlKTsKKyAgICBib29sIGlz
U3RyZWFtaW5nSW5kZXhEYXRhKGJvb2wgcHJpbWl0aXZlUmVzdGFydFdvcmthcm91bmQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc3JjVHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsOjpCdWZmZXIgKmdsQnVmZmVyKTsKICAgICBnbDo6RXJyb3IgcHJl
cGFyZUluZGV4RGF0YShHTGVudW0gc3JjVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpC
dWZmZXIgKmdsQnVmZmVyLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5jcHAKaW5kZXggNWM5
NDk5NDViYzEuLjBiMmExYzkzYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0QuY3BwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5jcHAK
QEAgLTgsMjIgKzgsMjUgQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9n
cmFtRDNELmgiCiAKLSNpbmNsdWRlICJjb21tb24vQml0U2V0SXRlcmF0b3IuaCIKKyNpbmNsdWRl
ICJjb21tb24vYml0c2V0X3V0aWxzLmgiCiAjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRnJh
bWVidWZmZXJBdHRhY2htZW50LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvUHJvZ3JhbS5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL1VuaWZvcm0uaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9WYXJ5aW5nUGFj
a2luZy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1ZlcnRleEFycmF5LmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvZmVhdHVyZXMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9Db250ZXh0SW1w
bC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9EeW5hbWljSExTTC5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFtZWJ1ZmZlckQzRC5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJlckQzRC5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2QzZC9TaGFkZXJEM0QuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9k
M2QvU2hhZGVyRXhlY3V0YWJsZUQzRC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9WYXJ5aW5nUGFja2luZy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0
ZXhEYXRhTWFuYWdlci5oIgogCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKIG5hbWVzcGFjZSBy
eAogewogCkBAIC04MCw3NyArODMsNiBAQCBib29sIElzUm93TWFqb3JMYXlvdXQoY29uc3Qgc2g6
OlNoYWRlclZhcmlhYmxlICZ2YXIpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0vLyB0cnVlIGlm
IHZhcnlpbmcgeCBoYXMgYSBoaWdoZXIgcHJpb3JpdHkgaW4gcGFja2luZyB0aGFuIHkKLWJvb2wg
Q29tcGFyZVBhY2tlZFZhcnlpbmcoY29uc3QgUGFja2VkVmFyeWluZyAmeCwgY29uc3QgUGFja2Vk
VmFyeWluZyAmeSkKLXsKLSAgICByZXR1cm4gZ2w6OkNvbXBhcmVTaGFkZXJWYXIoKngudmFyeWlu
ZywgKnkudmFyeWluZyk7Ci19Ci0KLXN0ZDo6dmVjdG9yPFBhY2tlZFZhcnlpbmc+IE1lcmdlVmFy
eWluZ3MoY29uc3QgZ2w6OlNoYWRlciAmdmVydGV4U2hhZGVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6U2hhZGVyICZmcmFnbWVudFNoYWRlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0
b3I8c3RkOjpzdHJpbmc+ICZ0ZlZhcnlpbmdzKQotewotICAgIHN0ZDo6dmVjdG9yPFBhY2tlZFZh
cnlpbmc+IHBhY2tlZFZhcnlpbmdzOwotCi0gICAgZm9yIChjb25zdCBzaDo6VmFyeWluZyAmb3V0
cHV0IDogdmVydGV4U2hhZGVyLmdldFZhcnlpbmdzKCkpCi0gICAgewotICAgICAgICBib29sIHBh
Y2tlZCA9IGZhbHNlOwotCi0gICAgICAgIC8vIEJ1aWx0LWluIHZhcnlpbmdzIG9iZXkgc3BlY2lh
bCBydWxlcwotICAgICAgICBpZiAob3V0cHV0LmlzQnVpbHRJbigpKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoY29uc3Qgc2g6OlZh
cnlpbmcgJmlucHV0IDogZnJhZ21lbnRTaGFkZXIuZ2V0VmFyeWluZ3MoKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgaWYgKG91dHB1dC5uYW1lID09IGlucHV0Lm5hbWUpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgaWYgKG91dHB1dC5pc1N0cnVjdCgpKQotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFvdXRwdXQuaXNBcnJheSgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvICZmaWVsZCA6IG91dHB1dC5maWVsZHMpCi0g
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZmll
bGQuaXNTdHJ1Y3QoKSAmJiAhZmllbGQuaXNBcnJheSgpKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHBhY2tlZFZhcnlpbmdzLnB1c2hfYmFjaygKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYWNrZWRWYXJ5aW5nKGZpZWxkLCBpbnB1dC5pbnRlcnBvbGF0aW9uLCBpbnB1dC5uYW1lKSk7
Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcGFja2VkVmFy
eWluZ3MucHVzaF9iYWNrKFBhY2tlZFZhcnlpbmcoaW5wdXQsIGlucHV0LmludGVycG9sYXRpb24p
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcGFja2VkID0gdHJ1ZTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IC8vIEtlZXAgVHJhbnNmb3JtIEZCIHZhcnlpbmdzIGluIHRoZSBtZXJnZWQgbGlzdCBhbHdheXMu
Ci0gICAgICAgIGlmICghcGFja2VkKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0
IHN0ZDo6c3RyaW5nICZ0ZlZhcnlpbmcgOiB0ZlZhcnlpbmdzKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGlmICh0ZlZhcnlpbmcgPT0gb3V0cHV0Lm5hbWUpCi0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAvLyBUcmFuc2Zvcm0gZmVlZGJhY2sgZm9yIHZhcnlp
bmcgc3RydWN0cyBpcyB1bmRlcnNwZWNpZmllZC4KLSAgICAgICAgICAgICAgICAgICAgLy8gU2Vl
IEtocm9ub3MgYnVnIDk4NTYuCi0gICAgICAgICAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6
IEZpZ3VyZSBvdXQgaG93IHRvIGJlIHNwZWMtY29tcGxpYW50IGhlcmUuCi0gICAgICAgICAgICAg
ICAgICAgIGlmICghb3V0cHV0LmlzU3RydWN0KCkpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHBhY2tlZFZhcnlpbmdzLnB1c2hfYmFjayhQYWNrZWRWYXJ5
aW5nKG91dHB1dCwgb3V0cHV0LmludGVycG9sYXRpb24pKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHBhY2tlZFZhcnlpbmdzLmJhY2soKS52ZXJ0ZXhPbmx5ID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGQ6OnNvcnQocGFja2Vk
VmFyeWluZ3MuYmVnaW4oKSwgcGFja2VkVmFyeWluZ3MuZW5kKCksIENvbXBhcmVQYWNrZWRWYXJ5
aW5nKTsKLQotICAgIHJldHVybiBwYWNrZWRWYXJ5aW5nczsKLX0KLQogdGVtcGxhdGUgPHR5cGVu
YW1lIFZhclQ+CiB2b2lkIEdldFVuaWZvcm1CbG9ja0luZm8oY29uc3Qgc3RkOjp2ZWN0b3I8VmFy
VD4gJmZpZWxkcywKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAm
cHJlZml4LApAQCAtMTk3LDg0ICsxMjksNjQgQEAgc3RhdGljIGlubGluZSB2b2lkIFNldElmRGly
dHkoVCAqZGVzdCwgY29uc3QgVCAmc291cmNlLCBib29sICpkaXJ0eUZsYWcpCiAgICAgKmRlc3Qg
ICAgICA9IHNvdXJjZTsKIH0KIAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1ib29sIFRyYW5zcG9z
ZU1hdHJpeChUICp0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2
YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRXaWR0aCwKLSAgICAgICAgICAg
ICAgICAgICAgIGludCB0YXJnZXRIZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICBpbnQgc3Jj
V2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICBpbnQgc3JjSGVpZ2h0KQordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIGludCBjb2xzLCBpbnQgcm93cz4KK2Jvb2wgVHJhbnNwb3NlRXhwYW5kTWF0cml4
KFQgKnRhcmdldCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7Ci0gICAgYm9vbCBkaXJ0eSA9IGZh
bHNlOwotICAgIGludCBjb3B5V2lkdGggPSBzdGQ6Om1pbih0YXJnZXRIZWlnaHQsIHNyY1dpZHRo
KTsKLSAgICBpbnQgY29weUhlaWdodCA9IHN0ZDo6bWluKHRhcmdldFdpZHRoLCBzcmNIZWlnaHQp
OworICAgIGNvbnN0ZXhwciBpbnQgdGFyZ2V0V2lkdGggID0gNDsKKyAgICBjb25zdGV4cHIgaW50
IHRhcmdldEhlaWdodCA9IHJvd3M7CisgICAgY29uc3RleHByIGludCBzcmNXaWR0aCAgICAgPSBy
b3dzOworICAgIGNvbnN0ZXhwciBpbnQgc3JjSGVpZ2h0ICAgID0gY29sczsKKworICAgIGNvbnN0
ZXhwciBpbnQgY29weVdpZHRoICA9IHN0ZDo6bWluKHRhcmdldEhlaWdodCwgc3JjV2lkdGgpOwor
ICAgIGNvbnN0ZXhwciBpbnQgY29weUhlaWdodCA9IHN0ZDo6bWluKHRhcmdldFdpZHRoLCBzcmNI
ZWlnaHQpOworCisgICAgVCBzdGFnaW5nW3RhcmdldFdpZHRoICogdGFyZ2V0SGVpZ2h0XSA9IHsw
fTsKIAogICAgIGZvciAoaW50IHggPSAwOyB4IDwgY29weVdpZHRoOyB4KyspCiAgICAgewogICAg
ICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGNvcHlIZWlnaHQ7IHkrKykKICAgICAgICAgewotICAg
ICAgICAgICAgU2V0SWZEaXJ0eSh0YXJnZXQgKyAoeCAqIHRhcmdldFdpZHRoICsgeSksIHN0YXRp
Y19jYXN0PFQ+KHZhbHVlW3kgKiBzcmNXaWR0aCArIHhdKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgJmRpcnR5KTsKKyAgICAgICAgICAgIHN0YWdpbmdbeCAqIHRhcmdldFdpZHRoICsgeV0gPSBz
dGF0aWNfY2FzdDxUPih2YWx1ZVt5ICogc3JjV2lkdGggKyB4XSk7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgLy8gY2xlYXIgdW5maWxsZWQgcmlnaHQgc2lkZQotICAgIGZvciAoaW50IHkgPSAwOyB5
IDwgY29weVdpZHRoOyB5KyspCi0gICAgewotICAgICAgICBmb3IgKGludCB4ID0gY29weUhlaWdo
dDsgeCA8IHRhcmdldFdpZHRoOyB4KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIFNldElmRGly
dHkodGFyZ2V0ICsgKHkgKiB0YXJnZXRXaWR0aCArIHgpLCBzdGF0aWNfY2FzdDxUPigwKSwgJmRp
cnR5KTsKLSAgICAgICAgfQotICAgIH0KLSAgICAvLyBjbGVhciB1bmZpbGxlZCBib3R0b20uCi0g
ICAgZm9yIChpbnQgeSA9IGNvcHlXaWR0aDsgeSA8IHRhcmdldEhlaWdodDsgeSsrKQorCisgICAg
aWYgKG1lbWNtcCh0YXJnZXQsIHN0YWdpbmcsIHRhcmdldFdpZHRoICogdGFyZ2V0SGVpZ2h0ICog
c2l6ZW9mKFQpKSA9PSAwKQogICAgIHsKLSAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB0YXJn
ZXRXaWR0aDsgeCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBTZXRJZkRpcnR5KHRhcmdldCAr
ICh5ICogdGFyZ2V0V2lkdGggKyB4KSwgc3RhdGljX2Nhc3Q8VD4oMCksICZkaXJ0eSk7Ci0gICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiBkaXJ0eTsK
KyAgICBtZW1jcHkodGFyZ2V0LCBzdGFnaW5nLCB0YXJnZXRXaWR0aCAqIHRhcmdldEhlaWdodCAq
IHNpemVvZihUKSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotYm9vbCBFeHBhbmRNYXRyaXgoVCAqdGFyZ2V0LAotICAgICAgICAgICAgICAgICAgY29uc3Qg
R0xmbG9hdCAqdmFsdWUsCi0gICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0V2lkdGgsCi0gICAg
ICAgICAgICAgICAgICBpbnQgdGFyZ2V0SGVpZ2h0LAotICAgICAgICAgICAgICAgICAgaW50IHNy
Y1dpZHRoLAotICAgICAgICAgICAgICAgICAgaW50IHNyY0hlaWdodCkKK3RlbXBsYXRlIDx0eXBl
bmFtZSBULCBpbnQgY29scywgaW50IHJvd3M+Citib29sIEV4cGFuZE1hdHJpeChUICp0YXJnZXQs
IGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewotICAgIGJvb2wgZGlydHkgPSBmYWxzZTsKLSAgICBp
bnQgY29weVdpZHRoID0gc3RkOjptaW4odGFyZ2V0V2lkdGgsIHNyY1dpZHRoKTsKLSAgICBpbnQg
Y29weUhlaWdodCA9IHN0ZDo6bWluKHRhcmdldEhlaWdodCwgc3JjSGVpZ2h0KTsKKyAgICBjb25z
dGV4cHIgaW50IHRhcmdldFdpZHRoICA9IDQ7CisgICAgY29uc3RleHByIGludCB0YXJnZXRIZWln
aHQgPSByb3dzOworICAgIGNvbnN0ZXhwciBpbnQgc3JjV2lkdGggPSBjb2xzOworICAgIGNvbnN0
ZXhwciBpbnQgc3JjSGVpZ2h0ID0gcm93czsKKworICAgIGNvbnN0ZXhwciBpbnQgY29weVdpZHRo
ICA9IHN0ZDo6bWluKHRhcmdldFdpZHRoLCBzcmNXaWR0aCk7CisgICAgY29uc3RleHByIGludCBj
b3B5SGVpZ2h0ID0gc3RkOjptaW4odGFyZ2V0SGVpZ2h0LCBzcmNIZWlnaHQpOworCisgICAgVCBz
dGFnaW5nW3RhcmdldFdpZHRoICogdGFyZ2V0SGVpZ2h0XSA9IHswfTsKIAogICAgIGZvciAoaW50
IHkgPSAwOyB5IDwgY29weUhlaWdodDsgeSsrKQogICAgIHsKICAgICAgICAgZm9yIChpbnQgeCA9
IDA7IHggPCBjb3B5V2lkdGg7IHgrKykKICAgICAgICAgewotICAgICAgICAgICAgU2V0SWZEaXJ0
eSh0YXJnZXQgKyAoeSAqIHRhcmdldFdpZHRoICsgeCksIHN0YXRpY19jYXN0PFQ+KHZhbHVlW3kg
KiBzcmNXaWR0aCArIHhdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgJmRpcnR5KTsKLSAgICAg
ICAgfQotICAgIH0KLSAgICAvLyBjbGVhciB1bmZpbGxlZCByaWdodCBzaWRlCi0gICAgZm9yIChp
bnQgeSA9IDA7IHkgPCBjb3B5SGVpZ2h0OyB5KyspCi0gICAgewotICAgICAgICBmb3IgKGludCB4
ID0gY29weVdpZHRoOyB4IDwgdGFyZ2V0V2lkdGg7IHgrKykKLSAgICAgICAgewotICAgICAgICAg
ICAgU2V0SWZEaXJ0eSh0YXJnZXQgKyAoeSAqIHRhcmdldFdpZHRoICsgeCksIHN0YXRpY19jYXN0
PFQ+KDApLCAmZGlydHkpOworICAgICAgICAgICAgc3RhZ2luZ1t5ICogdGFyZ2V0V2lkdGggKyB4
XSA9IHN0YXRpY19jYXN0PFQ+KHZhbHVlW3kgKiBzcmNXaWR0aCArIHhdKTsKICAgICAgICAgfQog
ICAgIH0KLSAgICAvLyBjbGVhciB1bmZpbGxlZCBib3R0b20uCi0gICAgZm9yIChpbnQgeSA9IGNv
cHlIZWlnaHQ7IHkgPCB0YXJnZXRIZWlnaHQ7IHkrKykKKworICAgIGlmIChtZW1jbXAodGFyZ2V0
LCBzdGFnaW5nLCB0YXJnZXRXaWR0aCAqIHRhcmdldEhlaWdodCAqIHNpemVvZihUKSkgPT0gMCkK
ICAgICB7Ci0gICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgdGFyZ2V0V2lkdGg7IHgrKykKLSAg
ICAgICAgewotICAgICAgICAgICAgU2V0SWZEaXJ0eSh0YXJnZXQgKyAoeSAqIHRhcmdldFdpZHRo
ICsgeCksIHN0YXRpY19jYXN0PFQ+KDApLCAmZGlydHkpOwotICAgICAgICB9CisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICByZXR1cm4gZGlydHk7CisgICAgbWVtY3B5KHRhcmdl
dCwgc3RhZ2luZywgdGFyZ2V0V2lkdGggKiB0YXJnZXRIZWlnaHQgKiBzaXplb2YoVCkpOworICAg
IHJldHVybiB0cnVlOwogfQogCiBnbDo6UHJpbWl0aXZlVHlwZSBHZXRHZW9tZXRyeVNoYWRlclR5
cGVGcm9tRHJhd01vZGUoR0xlbnVtIGRyYXdNb2RlKQpAQCAtMzA2LDYgKzIxOCwyMCBAQCBnbDo6
UHJpbWl0aXZlVHlwZSBHZXRHZW9tZXRyeVNoYWRlclR5cGVGcm9tRHJhd01vZGUoR0xlbnVtIGRy
YXdNb2RlKQogICAgIH0KIH0KIAorYm9vbCBGaW5kRmxhdEludGVycG9sYXRpb25WYXJ5aW5nKGNv
bnN0IHN0ZDo6dmVjdG9yPHNoOjpWYXJ5aW5nPiAmdmFyeWluZ3MpCit7CisgICAgLy8gTm90ZTog
dGhpcyBhc3N1bWVzIG5lc3RlZCBzdHJ1Y3RzIGNhbiBvbmx5IGJlIHBhY2tlZCB3aXRoIG9uZSBp
bnRlcnBvbGF0aW9uLgorICAgIGZvciAoY29uc3QgYXV0byAmdmFyeWluZyA6IHZhcnlpbmdzKQor
ICAgIHsKKyAgICAgICAgaWYgKHZhcnlpbmcuaW50ZXJwb2xhdGlvbiA9PSBzaDo6SU5URVJQT0xB
VElPTl9GTEFUKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAgLy8gYW5vbnltb3VzIG5hbWVz
cGFjZQogCiAvLyBEM0RVbmlmb3JtIEltcGxlbWVudGF0aW9uCkBAIC0zMjEsNiArMjQ3LDcgQEAg
RDNEVW5pZm9ybTo6RDNEVW5pZm9ybShHTGVudW0gdHlwZUluLAogICAgICAgZGlydHkodHJ1ZSks
CiAgICAgICB2c1JlZ2lzdGVySW5kZXgoR0xfSU5WQUxJRF9JTkRFWCksCiAgICAgICBwc1JlZ2lz
dGVySW5kZXgoR0xfSU5WQUxJRF9JTkRFWCksCisgICAgICBjc1JlZ2lzdGVySW5kZXgoR0xfSU5W
QUxJRF9JTkRFWCksCiAgICAgICByZWdpc3RlckNvdW50KDApLAogICAgICAgcmVnaXN0ZXJFbGVt
ZW50KDApCiB7CkBAIC0zMzMsNyArMjYwLDcgQEAgRDNEVW5pZm9ybTo6RDNEVW5pZm9ybShHTGVu
dW0gdHlwZUluLAogICAgICAgICBkYXRhID0gbmV3IHVpbnQ4X3RbYnl0ZXNdOwogICAgICAgICBt
ZW1zZXQoZGF0YSwgMCwgYnl0ZXMpOwogCi0gICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IGlzIHRo
aXMgY29ycmVjdCB3aXRoIG5vbi1zcXVhcmUgbWF0cmljZXM/CisgICAgICAgIC8vIFVzZSB0aGUg
cm93IGNvdW50IGFzIHJlZ2lzdGVyIGNvdW50LCB3aWxsIHdvcmsgZm9yIG5vbi1zcXVhcmUgbWF0
cmljZXMuCiAgICAgICAgIHJlZ2lzdGVyQ291bnQgPSBnbDo6VmFyaWFibGVSb3dDb3VudCh0eXBl
KSAqIGVsZW1lbnRDb3VudCgpOwogICAgIH0KIH0KQEAgLTM1OCw2ICsyODUsMTEgQEAgYm9vbCBE
M0RVbmlmb3JtOjppc1JlZmVyZW5jZWRCeUZyYWdtZW50U2hhZGVyKCkgY29uc3QKICAgICByZXR1
cm4gcHNSZWdpc3RlckluZGV4ICE9IEdMX0lOVkFMSURfSU5ERVg7CiB9CiAKK2Jvb2wgRDNEVW5p
Zm9ybTo6aXNSZWZlcmVuY2VkQnlDb21wdXRlU2hhZGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
Y3NSZWdpc3RlckluZGV4ICE9IEdMX0lOVkFMSURfSU5ERVg7Cit9CisKIC8vIEQzRFZhcnlpbmcg
SW1wbGVtZW50YXRpb24KIAogRDNEVmFyeWluZzo6RDNEVmFyeWluZygpIDogc2VtYW50aWNJbmRl
eCgwKSwgY29tcG9uZW50Q291bnQoMCksIG91dHB1dFNsb3QoMCkKQEAgLTU2MiwxNCArNDk0LDE3
IEBAIHVuc2lnbmVkIGludCBQcm9ncmFtRDNEOjptQ3VycmVudFNlcmlhbCA9IDE7CiBQcm9ncmFt
RDNEOjpQcm9ncmFtRDNEKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnN0YXRlLCBSZW5kZXJlckQz
RCAqcmVuZGVyZXIpCiAgICAgOiBQcm9ncmFtSW1wbChzdGF0ZSksCiAgICAgICBtUmVuZGVyZXIo
cmVuZGVyZXIpLAotICAgICAgbUR5bmFtaWNITFNMKE5VTEwpLAotICAgICAgbUdlb21ldHJ5RXhl
Y3V0YWJsZXMoZ2w6OlBSSU1JVElWRV9UWVBFX01BWCwgbnVsbHB0ciksCisgICAgICBtRHluYW1p
Y0hMU0wobnVsbHB0ciksCisgICAgICBtR2VvbWV0cnlFeGVjdXRhYmxlcyhnbDo6UFJJTUlUSVZF
X1RZUEVfTUFYKSwKKyAgICAgIG1Db21wdXRlRXhlY3V0YWJsZShudWxscHRyKSwKICAgICAgIG1V
c2VzUG9pbnRTaXplKGZhbHNlKSwKICAgICAgIG1Vc2VzRmxhdEludGVycG9sYXRpb24oZmFsc2Up
LAotICAgICAgbVZlcnRleFVuaWZvcm1TdG9yYWdlKE5VTEwpLAotICAgICAgbUZyYWdtZW50VW5p
Zm9ybVN0b3JhZ2UoTlVMTCksCisgICAgICBtVmVydGV4VW5pZm9ybVN0b3JhZ2UobnVsbHB0ciks
CisgICAgICBtRnJhZ21lbnRVbmlmb3JtU3RvcmFnZShudWxscHRyKSwKKyAgICAgIG1Db21wdXRl
VW5pZm9ybVN0b3JhZ2UobnVsbHB0ciksCiAgICAgICBtVXNlZFZlcnRleFNhbXBsZXJSYW5nZSgw
KSwKICAgICAgIG1Vc2VkUGl4ZWxTYW1wbGVyUmFuZ2UoMCksCisgICAgICBtVXNlZENvbXB1dGVT
YW1wbGVyUmFuZ2UoMCksCiAgICAgICBtRGlydHlTYW1wbGVyTWFwcGluZyh0cnVlKSwKICAgICAg
IG1TZXJpYWwoaXNzdWVTZXJpYWwoKSkKIHsKQEAgLTYyNCw2ICs1NTksMTMgQEAgR0xpbnQgUHJv
Z3JhbUQzRDo6Z2V0U2FtcGxlck1hcHBpbmcoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsCiAgICAgICAg
ICAgICAgICAgbG9naWNhbFRleHR1cmVVbml0ID0gbVNhbXBsZXJzVlNbc2FtcGxlckluZGV4XS5s
b2dpY2FsVGV4dHVyZVVuaXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBnbDo6U0FNUExFUl9DT01QVVRFOgorICAgICAgICAgICAgQVNTRVJUKHNhbXBs
ZXJJbmRleCA8IGNhcHMubWF4Q29tcHV0ZVRleHR1cmVJbWFnZVVuaXRzKTsKKyAgICAgICAgICAg
IGlmIChzYW1wbGVySW5kZXggPCBtU2FtcGxlcnNDUy5zaXplKCkgJiYgbVNhbXBsZXJzQ1Nbc2Ft
cGxlckluZGV4XS5hY3RpdmUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbG9naWNh
bFRleHR1cmVVbml0ID0gbVNhbXBsZXJzQ1Nbc2FtcGxlckluZGV4XS5sb2dpY2FsVGV4dHVyZVVu
aXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQpAQCAtNjUxLDYgKzU5MywxMCBAQCBH
TGVudW0gUHJvZ3JhbUQzRDo6Z2V0U2FtcGxlclRleHR1cmVUeXBlKGdsOjpTYW1wbGVyVHlwZSB0
eXBlLCB1bnNpZ25lZCBpbnQgc2FtcAogICAgICAgICAgICAgQVNTRVJUKHNhbXBsZXJJbmRleCA8
IG1TYW1wbGVyc1ZTLnNpemUoKSk7CiAgICAgICAgICAgICBBU1NFUlQobVNhbXBsZXJzVlNbc2Ft
cGxlckluZGV4XS5hY3RpdmUpOwogICAgICAgICAgICAgcmV0dXJuIG1TYW1wbGVyc1ZTW3NhbXBs
ZXJJbmRleF0udGV4dHVyZVR5cGU7CisgICAgICAgIGNhc2UgZ2w6OlNBTVBMRVJfQ09NUFVURToK
KyAgICAgICAgICAgIEFTU0VSVChzYW1wbGVySW5kZXggPCBtU2FtcGxlcnNDUy5zaXplKCkpOwor
ICAgICAgICAgICAgQVNTRVJUKG1TYW1wbGVyc0NTW3NhbXBsZXJJbmRleF0uYWN0aXZlKTsKKyAg
ICAgICAgICAgIHJldHVybiBtU2FtcGxlcnNDU1tzYW1wbGVySW5kZXhdLnRleHR1cmVUeXBlOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9CkBAIC02
NjYsNiArNjEyLDggQEAgR0x1aW50IFByb2dyYW1EM0Q6OmdldFVzZWRTYW1wbGVyUmFuZ2UoZ2w6
OlNhbXBsZXJUeXBlIHR5cGUpIGNvbnN0CiAgICAgICAgICAgICByZXR1cm4gbVVzZWRQaXhlbFNh
bXBsZXJSYW5nZTsKICAgICAgICAgY2FzZSBnbDo6U0FNUExFUl9WRVJURVg6CiAgICAgICAgICAg
ICByZXR1cm4gbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2U7CisgICAgICAgIGNhc2UgZ2w6OlNBTVBM
RVJfQ09NUFVURToKKyAgICAgICAgICAgIHJldHVybiBtVXNlZENvbXB1dGVTYW1wbGVyUmFuZ2U7
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICAg
ICAgcmV0dXJuIDB1OwpAQCAtNzI0LDExICs2NzIsMzEgQEAgdm9pZCBQcm9ncmFtRDNEOjp1cGRh
dGVTYW1wbGVyTWFwcGluZygpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGQzZFVuaWZvcm0tPmlzUmVmZXJlbmNlZEJ5Q29tcHV0ZVNo
YWRlcigpKQorICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmlyc3RJbmRleCA9
IGQzZFVuaWZvcm0tPmNzUmVnaXN0ZXJJbmRleDsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBzYW1wbGVySW5kZXggPSBmaXJzdEluZGV4ICsgaTsKKworICAgICAgICAgICAgICAg
IGlmIChzYW1wbGVySW5kZXggPCBtU2FtcGxlcnNDUy5zaXplKCkpCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobVNhbXBsZXJzQ1Nbc2FtcGxlckluZGV4XS5h
Y3RpdmUpOworICAgICAgICAgICAgICAgICAgICBtU2FtcGxlcnNDU1tzYW1wbGVySW5kZXhdLmxv
Z2ljYWxUZXh0dXJlVW5pdCA9IHZbaV1bMF07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICB9CiAgICAgfQogfQogCi1MaW5rUmVzdWx0IFByb2dyYW1EM0Q6OmxvYWQo
Z2w6OkluZm9Mb2cgJmluZm9Mb2csIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtKQorTGlu
a1Jlc3VsdCBQcm9ncmFtRDNEOjpsb2FkKGNvbnN0IENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SW5mb0xvZyAmaW5mb0xvZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkKIHsK
KyAgICAvLyBUT0RPKGptYWRpbGwpOiBVc2UgUmVuZGVyZXIgZnJvbSBjb250ZXh0SW1wbC4KKwog
ICAgIHJlc2V0KCk7CiAKICAgICBEZXZpY2VJZGVudGlmaWVyIGJpbmFyeURldmljZUlkZW50aWZp
ZXIgPSB7MH07CkBAIC03MzksMTQgKzcwNywxNCBAQCBMaW5rUmVzdWx0IFByb2dyYW1EM0Q6Omxv
YWQoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtKQog
ICAgIGlmIChtZW1jbXAoJmlkZW50aWZpZXIsICZiaW5hcnlEZXZpY2VJZGVudGlmaWVyLCBzaXpl
b2YoRGV2aWNlSWRlbnRpZmllcikpICE9IDApCiAgICAgewogICAgICAgICBpbmZvTG9nIDw8ICJJ
bnZhbGlkIHByb2dyYW0gYmluYXJ5LCBkZXZpY2UgY29uZmlndXJhdGlvbiBoYXMgY2hhbmdlZC4i
OwotICAgICAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9S
KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpbnQgY29tcGlsZUZsYWdz
ID0gc3RyZWFtLT5yZWFkSW50PGludD4oKTsKICAgICBpZiAoY29tcGlsZUZsYWdzICE9IEFOR0xF
X0NPTVBJTEVfT1BUSU1JWkFUSU9OX0xFVkVMKQogICAgIHsKICAgICAgICAgaW5mb0xvZyA8PCAi
TWlzbWF0Y2hlZCBjb21waWxhdGlvbiBmbGFncy4iOwotICAgICAgICByZXR1cm4gTGlua1Jlc3Vs
dChmYWxzZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9SKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKICAgICBmb3IgKGludCAmaW5kZXggOiBtQXR0cmliTG9jYXRpb25Ub0QzRFNlbWFu
dGljKQpAQCAtNzczLDE0ICs3NDEsMjUgQEAgTGlua1Jlc3VsdCBQcm9ncmFtRDNEOjpsb2FkKGds
OjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkKICAgICAg
ICAgbVNhbXBsZXJzVlMucHVzaF9iYWNrKHNhbXBsZXIpOwogICAgIH0KIAorICAgIGNvbnN0IHVu
c2lnbmVkIGludCBjc1NhbXBsZXJDb3VudCA9IHN0cmVhbS0+cmVhZEludDx1bnNpZ25lZCBpbnQ+
KCk7CisgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjc1NhbXBsZXJDb3VudDsgKytp
KQorICAgIHsKKyAgICAgICAgU2FtcGxlciBzYW1wbGVyOworICAgICAgICBzdHJlYW0tPnJlYWRC
b29sKCZzYW1wbGVyLmFjdGl2ZSk7CisgICAgICAgIHN0cmVhbS0+cmVhZEludCgmc2FtcGxlci5s
b2dpY2FsVGV4dHVyZVVuaXQpOworICAgICAgICBzdHJlYW0tPnJlYWRJbnQoJnNhbXBsZXIudGV4
dHVyZVR5cGUpOworICAgICAgICBtU2FtcGxlcnNDUy5wdXNoX2JhY2soc2FtcGxlcik7CisgICAg
fQorCiAgICAgc3RyZWFtLT5yZWFkSW50KCZtVXNlZFZlcnRleFNhbXBsZXJSYW5nZSk7CiAgICAg
c3RyZWFtLT5yZWFkSW50KCZtVXNlZFBpeGVsU2FtcGxlclJhbmdlKTsKKyAgICBzdHJlYW0tPnJl
YWRJbnQoJm1Vc2VkQ29tcHV0ZVNhbXBsZXJSYW5nZSk7CiAKICAgICBjb25zdCB1bnNpZ25lZCBp
bnQgdW5pZm9ybUNvdW50ID0gc3RyZWFtLT5yZWFkSW50PHVuc2lnbmVkIGludD4oKTsKICAgICBp
ZiAoc3RyZWFtLT5lcnJvcigpKQogICAgIHsKICAgICAgICAgaW5mb0xvZyA8PCAiSW52YWxpZCBw
cm9ncmFtIGJpbmFyeS4iOwotICAgICAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBj
b25zdCBhdXRvICZsaW5rZWRVbmlmb3JtcyA9IG1TdGF0ZS5nZXRVbmlmb3JtcygpOwpAQCAtNzk0
LDYgKzc3Myw3IEBAIExpbmtSZXN1bHQgUHJvZ3JhbUQzRDo6bG9hZChnbDo6SW5mb0xvZyAmaW5m
b0xvZywgZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0pCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaW5rZWRVbmlmb3JtLmlzSW5EZWZhdWx0QmxvY2soKSk7CiAgICAgICAgIHN0cmVh
bS0+cmVhZEludCgmZDNkVW5pZm9ybS0+cHNSZWdpc3RlckluZGV4KTsKICAgICAgICAgc3RyZWFt
LT5yZWFkSW50KCZkM2RVbmlmb3JtLT52c1JlZ2lzdGVySW5kZXgpOworICAgICAgICBzdHJlYW0t
PnJlYWRJbnQoJmQzZFVuaWZvcm0tPmNzUmVnaXN0ZXJJbmRleCk7CiAgICAgICAgIHN0cmVhbS0+
cmVhZEludCgmZDNkVW5pZm9ybS0+cmVnaXN0ZXJDb3VudCk7CiAgICAgICAgIHN0cmVhbS0+cmVh
ZEludCgmZDNkVW5pZm9ybS0+cmVnaXN0ZXJFbGVtZW50KTsKIApAQCAtODA0LDcgKzc4NCw3IEBA
IExpbmtSZXN1bHQgUHJvZ3JhbUQzRDo6bG9hZChnbDo6SW5mb0xvZyAmaW5mb0xvZywgZ2w6OkJp
bmFyeUlucHV0U3RyZWFtICpzdHJlYW0pCiAgICAgaWYgKHN0cmVhbS0+ZXJyb3IoKSkKICAgICB7
CiAgICAgICAgIGluZm9Mb2cgPDwgIkludmFsaWQgcHJvZ3JhbSBiaW5hcnkuIjsKLSAgICAgICAg
cmV0dXJuIExpbmtSZXN1bHQoZmFsc2UsIGdsOjpFcnJvcihHTF9OT19FUlJPUikpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgQVNTRVJUKG1EM0RVbmlmb3JtQmxvY2tzLmVt
cHR5KCkpOwpAQCAtODEzLDYgKzc5Myw3IEBAIExpbmtSZXN1bHQgUHJvZ3JhbUQzRDo6bG9hZChn
bDo6SW5mb0xvZyAmaW5mb0xvZywgZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0pCiAgICAg
ICAgIEQzRFVuaWZvcm1CbG9jayB1bmlmb3JtQmxvY2s7CiAgICAgICAgIHN0cmVhbS0+cmVhZElu
dCgmdW5pZm9ybUJsb2NrLnBzUmVnaXN0ZXJJbmRleCk7CiAgICAgICAgIHN0cmVhbS0+cmVhZElu
dCgmdW5pZm9ybUJsb2NrLnZzUmVnaXN0ZXJJbmRleCk7CisgICAgICAgIHN0cmVhbS0+cmVhZElu
dCgmdW5pZm9ybUJsb2NrLmNzUmVnaXN0ZXJJbmRleCk7CiAgICAgICAgIG1EM0RVbmlmb3JtQmxv
Y2tzLnB1c2hfYmFjayh1bmlmb3JtQmxvY2spOwogICAgIH0KIApAQCAtODMwLDEwICs4MTEsMTAg
QEAgTGlua1Jlc3VsdCBQcm9ncmFtRDNEOjpsb2FkKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6
QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkKIAogICAgIHN0cmVhbS0+cmVhZFN0cmluZygmbVZl
cnRleEhMU0wpOwogICAgIHN0cmVhbS0+cmVhZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWdu
ZWQgY2hhciAqPigmbVZlcnRleFdvcmthcm91bmRzKSwKLSAgICAgICAgICAgICAgICAgICAgICBz
aXplb2YoRDNEQ29tcGlsZXJXb3JrYXJvdW5kcykpOworICAgICAgICAgICAgICAgICAgICAgIHNp
emVvZihhbmdsZTo6Q29tcGlsZXJXb3JrYXJvdW5kc0QzRCkpOwogICAgIHN0cmVhbS0+cmVhZFN0
cmluZygmbVBpeGVsSExTTCk7CiAgICAgc3RyZWFtLT5yZWFkQnl0ZXMocmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZCBjaGFyICo+KCZtUGl4ZWxXb3JrYXJvdW5kcyksCi0gICAgICAgICAgICAgICAg
ICAgICAgc2l6ZW9mKEQzRENvbXBpbGVyV29ya2Fyb3VuZHMpKTsKKyAgICAgICAgICAgICAgICAg
ICAgICBzaXplb2YoYW5nbGU6OkNvbXBpbGVyV29ya2Fyb3VuZHNEM0QpKTsKICAgICBzdHJlYW0t
PnJlYWRCb29sKCZtVXNlc0ZyYWdEZXB0aCk7CiAgICAgc3RyZWFtLT5yZWFkQm9vbCgmbVVzZXNQ
b2ludFNpemUpOwogICAgIHN0cmVhbS0+cmVhZEJvb2woJm1Vc2VzRmxhdEludGVycG9sYXRpb24p
OwpAQCAtODUzLDYgKzgzNCw4IEBAIExpbmtSZXN1bHQgUHJvZ3JhbUQzRDo6bG9hZChnbDo6SW5m
b0xvZyAmaW5mb0xvZywgZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0pCiAKICAgICBjb25z
dCB1bnNpZ25lZCBjaGFyICpiaW5hcnkgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVk
IGNoYXIgKj4oc3RyZWFtLT5kYXRhKCkpOwogCisgICAgYm9vbCBzZXBhcmF0ZUF0dHJpYnMgPSAo
bVN0YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSgpID09IEdMX1NFUEFSQVRFX0FU
VFJJQlMpOworCiAgICAgY29uc3QgdW5zaWduZWQgaW50IHZlcnRleFNoYWRlckNvdW50ID0gc3Ry
ZWFtLT5yZWFkSW50PHVuc2lnbmVkIGludD4oKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCB2ZXJ0
ZXhTaGFkZXJJbmRleCA9IDA7IHZlcnRleFNoYWRlckluZGV4IDwgdmVydGV4U2hhZGVyQ291bnQ7
CiAgICAgICAgICB2ZXJ0ZXhTaGFkZXJJbmRleCsrKQpAQCAtODcwLDE4ICs4NTMsMTQgQEAgTGlu
a1Jlc3VsdCBQcm9ncmFtRDNEOjpsb2FkKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6QmluYXJ5
SW5wdXRTdHJlYW0gKnN0cmVhbSkKIAogICAgICAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICpzaGFk
ZXJFeGVjdXRhYmxlID0gbnVsbHB0cjsKIAotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBtUmVu
ZGVyZXItPmxvYWRFeGVjdXRhYmxlKAotICAgICAgICAgICAgdmVydGV4U2hhZGVyRnVuY3Rpb24s
IHZlcnRleFNoYWRlclNpemUsIFNIQURFUl9WRVJURVgsIG1TdHJlYW1PdXRWYXJ5aW5ncywKLSAg
ICAgICAgICAgIChtU3RhdGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKCkgPT0gR0xf
U0VQQVJBVEVfQVRUUklCUyksICZzaGFkZXJFeGVjdXRhYmxlKTsKLSAgICAgICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIExpbmtSZXN1bHQoZmFs
c2UsIGVycm9yKTsKLSAgICAgICAgfQorICAgICAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5sb2Fk
RXhlY3V0YWJsZSh2ZXJ0ZXhTaGFkZXJGdW5jdGlvbiwgdmVydGV4U2hhZGVyU2l6ZSwgU0hBREVS
X1ZFUlRFWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0
cmVhbU91dFZhcnlpbmdzLCBzZXBhcmF0ZUF0dHJpYnMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZzaGFkZXJFeGVjdXRhYmxlKSk7CiAKICAgICAgICAgaWYg
KCFzaGFkZXJFeGVjdXRhYmxlKQogICAgICAgICB7CiAgICAgICAgICAgICBpbmZvTG9nIDw8ICJD
b3VsZCBub3QgY3JlYXRlIHZlcnRleCBzaGFkZXIuIjsKLSAgICAgICAgICAgIHJldHVybiBMaW5r
UmVzdWx0KGZhbHNlLCBnbDo6RXJyb3IoR0xfTk9fRVJST1IpKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIGdlbmVyYXRlZCBjb252ZXJ0ZWQgaW5w
dXQgbGF5b3V0CkBAIC04ODksOCArODY4LDggQEAgTGlua1Jlc3VsdCBQcm9ncmFtRDNEOjpsb2Fk
KGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkKICAg
ICAgICAgVmVydGV4RXhlY3V0YWJsZTo6Z2V0U2lnbmF0dXJlKG1SZW5kZXJlciwgaW5wdXRMYXlv
dXQsICZzaWduYXR1cmUpOwogCiAgICAgICAgIC8vIGFkZCBuZXcgYmluYXJ5Ci0gICAgICAgIG1W
ZXJ0ZXhFeGVjdXRhYmxlcy5wdXNoX2JhY2soCi0gICAgICAgICAgICBuZXcgVmVydGV4RXhlY3V0
YWJsZShpbnB1dExheW91dCwgc2lnbmF0dXJlLCBzaGFkZXJFeGVjdXRhYmxlKSk7CisgICAgICAg
IG1WZXJ0ZXhFeGVjdXRhYmxlcy5wdXNoX2JhY2soc3RkOjp1bmlxdWVfcHRyPFZlcnRleEV4ZWN1
dGFibGU+KAorICAgICAgICAgICAgbmV3IFZlcnRleEV4ZWN1dGFibGUoaW5wdXRMYXlvdXQsIHNp
Z25hdHVyZSwgc2hhZGVyRXhlY3V0YWJsZSkpKTsKIAogICAgICAgICBzdHJlYW0tPnNraXAodmVy
dGV4U2hhZGVyU2l6ZSk7CiAgICAgfQpAQCAtOTA5LDIyICs4ODgsMTkgQEAgTGlua1Jlc3VsdCBQ
cm9ncmFtRDNEOjpsb2FkKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6QmluYXJ5SW5wdXRTdHJl
YW0gKnN0cmVhbSkKICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqcGl4ZWxTaGFkZXJGdW5j
dGlvbiA9IGJpbmFyeSArIHN0cmVhbS0+b2Zmc2V0KCk7CiAgICAgICAgIFNoYWRlckV4ZWN1dGFi
bGVEM0QgKnNoYWRlckV4ZWN1dGFibGUgICAgPSBudWxscHRyOwogCi0gICAgICAgIGdsOjpFcnJv
ciBlcnJvciA9IG1SZW5kZXJlci0+bG9hZEV4ZWN1dGFibGUoCi0gICAgICAgICAgICBwaXhlbFNo
YWRlckZ1bmN0aW9uLCBwaXhlbFNoYWRlclNpemUsIFNIQURFUl9QSVhFTCwgbVN0cmVhbU91dFZh
cnlpbmdzLAotICAgICAgICAgICAgKG1TdGF0ZS5nZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1v
ZGUoKSA9PSBHTF9TRVBBUkFURV9BVFRSSUJTKSwgJnNoYWRlckV4ZWN1dGFibGUpOwotICAgICAg
ICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gTGlu
a1Jlc3VsdChmYWxzZSwgZXJyb3IpOwotICAgICAgICB9CisgICAgICAgIEFOR0xFX1RSWShtUmVu
ZGVyZXItPmxvYWRFeGVjdXRhYmxlKHBpeGVsU2hhZGVyRnVuY3Rpb24sIHBpeGVsU2hhZGVyU2l6
ZSwgU0hBREVSX1BJWEVMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtU3RyZWFtT3V0VmFyeWluZ3MsIHNlcGFyYXRlQXR0cmlicywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNoYWRlckV4ZWN1dGFibGUpKTsKIAogICAg
ICAgICBpZiAoIXNoYWRlckV4ZWN1dGFibGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIGluZm9M
b2cgPDwgIkNvdWxkIG5vdCBjcmVhdGUgcGl4ZWwgc2hhZGVyLiI7Ci0gICAgICAgICAgICByZXR1
cm4gTGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9SKSk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBhZGQgbmV3IGJpbmFyeQot
ICAgICAgICBtUGl4ZWxFeGVjdXRhYmxlcy5wdXNoX2JhY2sobmV3IFBpeGVsRXhlY3V0YWJsZShv
dXRwdXRzLCBzaGFkZXJFeGVjdXRhYmxlKSk7CisgICAgICAgIG1QaXhlbEV4ZWN1dGFibGVzLnB1
c2hfYmFjaygKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQaXhlbEV4ZWN1dGFibGU+KG5l
dyBQaXhlbEV4ZWN1dGFibGUob3V0cHV0cywgc2hhZGVyRXhlY3V0YWJsZSkpKTsKIAogICAgICAg
ICBzdHJlYW0tPnNraXAocGl4ZWxTaGFkZXJTaXplKTsKICAgICB9CkBAIC05MzUsMzIgKzkxMSw0
OSBAQCBMaW5rUmVzdWx0IFByb2dyYW1EM0Q6OmxvYWQoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGds
OjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtKQogICAgICAgICB1bnNpZ25lZCBpbnQgZ2VvbWV0
cnlTaGFkZXJTaXplID0gc3RyZWFtLT5yZWFkSW50PHVuc2lnbmVkIGludD4oKTsKICAgICAgICAg
aWYgKGdlb21ldHJ5U2hhZGVyU2l6ZSA9PSAwKQogICAgICAgICB7Ci0gICAgICAgICAgICBtR2Vv
bWV0cnlFeGVjdXRhYmxlc1tnZW9tZXRyeUV4ZUluZGV4XSA9IG51bGxwdHI7CiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmdl
b21ldHJ5U2hhZGVyRnVuY3Rpb24gPSBiaW5hcnkgKyBzdHJlYW0tPm9mZnNldCgpOwotICAgICAg
ICBib29sIHNwbGl0QXR0cmlicyAgICAgICAgICAgICAgICAgICAgICAgICAgID0gKG1TdGF0ZS5n
ZXRUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlck1vZGUoKSA9PSBHTF9TRVBBUkFURV9BVFRSSUJTKTsK
IAotICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBtUmVuZGVyZXItPmxvYWRFeGVjdXRhYmxlKAot
ICAgICAgICAgICAgZ2VvbWV0cnlTaGFkZXJGdW5jdGlvbiwgZ2VvbWV0cnlTaGFkZXJTaXplLCBT
SEFERVJfR0VPTUVUUlksIG1TdHJlYW1PdXRWYXJ5aW5ncywKLSAgICAgICAgICAgIHNwbGl0QXR0
cmlicywgJm1HZW9tZXRyeUV4ZWN1dGFibGVzW2dlb21ldHJ5RXhlSW5kZXhdKTsKLSAgICAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIExpbmtS
ZXN1bHQoZmFsc2UsIGVycm9yKTsKLSAgICAgICAgfQorICAgICAgICBTaGFkZXJFeGVjdXRhYmxl
RDNEICpnZW9tZXRyeUV4ZWN1dGFibGUgPSBudWxscHRyOworICAgICAgICBBTkdMRV9UUlkobVJl
bmRlcmVyLT5sb2FkRXhlY3V0YWJsZShnZW9tZXRyeVNoYWRlckZ1bmN0aW9uLCBnZW9tZXRyeVNo
YWRlclNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNI
QURFUl9HRU9NRVRSWSwgbVN0cmVhbU91dFZhcnlpbmdzLCBzZXBhcmF0ZUF0dHJpYnMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnZW9tZXRyeUV4ZWN1dGFi
bGUpKTsKIAotICAgICAgICBpZiAoIW1HZW9tZXRyeUV4ZWN1dGFibGVzW2dlb21ldHJ5RXhlSW5k
ZXhdKQorICAgICAgICBpZiAoIWdlb21ldHJ5RXhlY3V0YWJsZSkKICAgICAgICAgewogICAgICAg
ICAgICAgaW5mb0xvZyA8PCAiQ291bGQgbm90IGNyZWF0ZSBnZW9tZXRyeSBzaGFkZXIuIjsKLSAg
ICAgICAgICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNlLCBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorCisgICAgICAgIG1HZW9t
ZXRyeUV4ZWN1dGFibGVzW2dlb21ldHJ5RXhlSW5kZXhdLnJlc2V0KGdlb21ldHJ5RXhlY3V0YWJs
ZSk7CisKICAgICAgICAgc3RyZWFtLT5za2lwKGdlb21ldHJ5U2hhZGVyU2l6ZSk7CiAgICAgfQog
CisgICAgdW5zaWduZWQgaW50IGNvbXB1dGVTaGFkZXJTaXplID0gc3RyZWFtLT5yZWFkSW50PHVu
c2lnbmVkIGludD4oKTsKKyAgICBpZiAoY29tcHV0ZVNoYWRlclNpemUgPiAwKQorICAgIHsKKyAg
ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY29tcHV0ZVNoYWRlckZ1bmN0aW9uID0gYmluYXJ5
ICsgc3RyZWFtLT5vZmZzZXQoKTsKKworICAgICAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICpjb21w
dXRlRXhlY3V0YWJsZSA9IG51bGxwdHI7CisgICAgICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmxv
YWRFeGVjdXRhYmxlKGNvbXB1dGVTaGFkZXJGdW5jdGlvbiwgY29tcHV0ZVNoYWRlclNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQURFUl9DT01QVVRF
LCBzdGQ6OnZlY3RvcjxEM0RWYXJ5aW5nPigpLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJmNvbXB1dGVFeGVjdXRhYmxlKSk7CisKKyAgICAgICAg
aWYgKCFjb21wdXRlRXhlY3V0YWJsZSkKKyAgICAgICAgeworICAgICAgICAgICAgaW5mb0xvZyA8
PCAiQ291bGQgbm90IGNyZWF0ZSBjb21wdXRlIHNoYWRlci4iOworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgbUNvbXB1dGVFeGVjdXRhYmxlLnJlc2V0KGNv
bXB1dGVFeGVjdXRhYmxlKTsKKyAgICB9CisKICAgICBpbml0aWFsaXplVW5pZm9ybVN0b3JhZ2Uo
KTsKIAotICAgIHJldHVybiBMaW5rUmVzdWx0KHRydWUsIGdsOjpFcnJvcihHTF9OT19FUlJPUikp
OworICAgIHJldHVybiB0cnVlOwogfQogCiBnbDo6RXJyb3IgUHJvZ3JhbUQzRDo6c2F2ZShnbDo6
QmluYXJ5T3V0cHV0U3RyZWFtICpzdHJlYW0pCkBAIC05OTUsOCArOTg4LDE3IEBAIGdsOjpFcnJv
ciBQcm9ncmFtRDNEOjpzYXZlKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0cmVhbSkKICAgICAg
ICAgc3RyZWFtLT53cml0ZUludChtU2FtcGxlcnNWU1tpXS50ZXh0dXJlVHlwZSk7CiAgICAgfQog
CisgICAgc3RyZWFtLT53cml0ZUludChtU2FtcGxlcnNDUy5zaXplKCkpOworICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgbVNhbXBsZXJzQ1Muc2l6ZSgpOyArK2kpCisgICAgeworICAg
ICAgICBzdHJlYW0tPndyaXRlSW50KG1TYW1wbGVyc0NTW2ldLmFjdGl2ZSk7CisgICAgICAgIHN0
cmVhbS0+d3JpdGVJbnQobVNhbXBsZXJzQ1NbaV0ubG9naWNhbFRleHR1cmVVbml0KTsKKyAgICAg
ICAgc3RyZWFtLT53cml0ZUludChtU2FtcGxlcnNDU1tpXS50ZXh0dXJlVHlwZSk7CisgICAgfQor
CiAgICAgc3RyZWFtLT53cml0ZUludChtVXNlZFZlcnRleFNhbXBsZXJSYW5nZSk7CiAgICAgc3Ry
ZWFtLT53cml0ZUludChtVXNlZFBpeGVsU2FtcGxlclJhbmdlKTsKKyAgICBzdHJlYW0tPndyaXRl
SW50KG1Vc2VkQ29tcHV0ZVNhbXBsZXJSYW5nZSk7CiAKICAgICBzdHJlYW0tPndyaXRlSW50KG1E
M0RVbmlmb3Jtcy5zaXplKCkpOwogICAgIGZvciAoY29uc3QgRDNEVW5pZm9ybSAqdW5pZm9ybSA6
IG1EM0RVbmlmb3JtcykKQEAgLTEwMDQsMTUgKzEwMDYsMjEgQEAgZ2w6OkVycm9yIFByb2dyYW1E
M0Q6OnNhdmUoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqc3RyZWFtKQogICAgICAgICAvLyBUeXBl
LCBuYW1lIGFuZCBhcnJheVNpemUgYXJlIHJlZHVuZGFudCwgc28gYXJlbid0IHN0b3JlZCBpbiB0
aGUgYmluYXJ5LgogICAgICAgICBzdHJlYW0tPndyaXRlSW50T3JOZWdPbmUodW5pZm9ybS0+cHNS
ZWdpc3RlckluZGV4KTsKICAgICAgICAgc3RyZWFtLT53cml0ZUludE9yTmVnT25lKHVuaWZvcm0t
PnZzUmVnaXN0ZXJJbmRleCk7CisgICAgICAgIHN0cmVhbS0+d3JpdGVJbnRPck5lZ09uZSh1bmlm
b3JtLT5jc1JlZ2lzdGVySW5kZXgpOwogICAgICAgICBzdHJlYW0tPndyaXRlSW50KHVuaWZvcm0t
PnJlZ2lzdGVyQ291bnQpOwogICAgICAgICBzdHJlYW0tPndyaXRlSW50KHVuaWZvcm0tPnJlZ2lz
dGVyRWxlbWVudCk7CiAgICAgfQogCisgICAgLy8gRW5zdXJlIHdlIGluaXQgdGhlIHVuaWZvcm0g
YmxvY2sgc3RydWN0dXJlIGRhdGEgaWYgd2Ugc2hvdWxkLgorICAgIC8vIGh0dHA6Ly9hbmdsZWJ1
Zy5jb20vMTYzNworICAgIGVuc3VyZVVuaWZvcm1CbG9ja3NJbml0aWFsaXplZCgpOworCiAgICAg
c3RyZWFtLT53cml0ZUludChtRDNEVW5pZm9ybUJsb2Nrcy5zaXplKCkpOwogICAgIGZvciAoY29u
c3QgRDNEVW5pZm9ybUJsb2NrICZ1bmlmb3JtQmxvY2sgOiBtRDNEVW5pZm9ybUJsb2NrcykKICAg
ICB7CiAgICAgICAgIHN0cmVhbS0+d3JpdGVJbnRPck5lZ09uZSh1bmlmb3JtQmxvY2sucHNSZWdp
c3RlckluZGV4KTsKICAgICAgICAgc3RyZWFtLT53cml0ZUludE9yTmVnT25lKHVuaWZvcm1CbG9j
ay52c1JlZ2lzdGVySW5kZXgpOworICAgICAgICBzdHJlYW0tPndyaXRlSW50T3JOZWdPbmUodW5p
Zm9ybUJsb2NrLmNzUmVnaXN0ZXJJbmRleCk7CiAgICAgfQogCiAgICAgc3RyZWFtLT53cml0ZUlu
dChtU3RyZWFtT3V0VmFyeWluZ3Muc2l6ZSgpKTsKQEAgLTEwMjYsMTAgKzEwMzQsMTAgQEAgZ2w6
OkVycm9yIFByb2dyYW1EM0Q6OnNhdmUoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqc3RyZWFtKQog
CiAgICAgc3RyZWFtLT53cml0ZVN0cmluZyhtVmVydGV4SExTTCk7CiAgICAgc3RyZWFtLT53cml0
ZUJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgY2hhciAqPigmbVZlcnRleFdvcmthcm91
bmRzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEQzRENvbXBpbGVyV29ya2Fyb3Vu
ZHMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGFuZ2xlOjpDb21waWxlcldvcmth
cm91bmRzRDNEKSk7CiAgICAgc3RyZWFtLT53cml0ZVN0cmluZyhtUGl4ZWxITFNMKTsKICAgICBz
dHJlYW0tPndyaXRlQnl0ZXMocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBjaGFyICo+KCZtUGl4
ZWxXb3JrYXJvdW5kcyksCi0gICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihEM0RDb21waWxl
cldvcmthcm91bmRzKSk7CisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihhbmdsZTo6Q29t
cGlsZXJXb3JrYXJvdW5kc0QzRCkpOwogICAgIHN0cmVhbS0+d3JpdGVJbnQobVVzZXNGcmFnRGVw
dGgpOwogICAgIHN0cmVhbS0+d3JpdGVJbnQobVVzZXNQb2ludFNpemUpOwogICAgIHN0cmVhbS0+
d3JpdGVJbnQobVVzZXNGbGF0SW50ZXJwb2xhdGlvbik7CkBAIC0xMDUyLDcgKzEwNjAsNyBAQCBn
bDo6RXJyb3IgUHJvZ3JhbUQzRDo6c2F2ZShnbDo6QmluYXJ5T3V0cHV0U3RyZWFtICpzdHJlYW0p
CiAgICAgZm9yIChzaXplX3QgdmVydGV4RXhlY3V0YWJsZUluZGV4ID0gMDsgdmVydGV4RXhlY3V0
YWJsZUluZGV4IDwgbVZlcnRleEV4ZWN1dGFibGVzLnNpemUoKTsKICAgICAgICAgIHZlcnRleEV4
ZWN1dGFibGVJbmRleCsrKQogICAgIHsKLSAgICAgICAgVmVydGV4RXhlY3V0YWJsZSAqdmVydGV4
RXhlY3V0YWJsZSA9IG1WZXJ0ZXhFeGVjdXRhYmxlc1t2ZXJ0ZXhFeGVjdXRhYmxlSW5kZXhdOwor
ICAgICAgICBWZXJ0ZXhFeGVjdXRhYmxlICp2ZXJ0ZXhFeGVjdXRhYmxlID0gbVZlcnRleEV4ZWN1
dGFibGVzW3ZlcnRleEV4ZWN1dGFibGVJbmRleF0uZ2V0KCk7CiAKICAgICAgICAgY29uc3QgYXV0
byAmaW5wdXRMYXlvdXQgPSB2ZXJ0ZXhFeGVjdXRhYmxlLT5pbnB1dHMoKTsKICAgICAgICAgc3Ry
ZWFtLT53cml0ZUludChpbnB1dExheW91dC5zaXplKCkpOwpAQCAtMTA3Myw3ICsxMDgxLDcgQEAg
Z2w6OkVycm9yIFByb2dyYW1EM0Q6OnNhdmUoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqc3RyZWFt
KQogICAgIGZvciAoc2l6ZV90IHBpeGVsRXhlY3V0YWJsZUluZGV4ID0gMDsgcGl4ZWxFeGVjdXRh
YmxlSW5kZXggPCBtUGl4ZWxFeGVjdXRhYmxlcy5zaXplKCk7CiAgICAgICAgICBwaXhlbEV4ZWN1
dGFibGVJbmRleCsrKQogICAgIHsKLSAgICAgICAgUGl4ZWxFeGVjdXRhYmxlICpwaXhlbEV4ZWN1
dGFibGUgPSBtUGl4ZWxFeGVjdXRhYmxlc1twaXhlbEV4ZWN1dGFibGVJbmRleF07CisgICAgICAg
IFBpeGVsRXhlY3V0YWJsZSAqcGl4ZWxFeGVjdXRhYmxlID0gbVBpeGVsRXhlY3V0YWJsZXNbcGl4
ZWxFeGVjdXRhYmxlSW5kZXhdLmdldCgpOwogCiAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEdM
ZW51bT4gb3V0cHV0cyA9IHBpeGVsRXhlY3V0YWJsZS0+b3V0cHV0U2lnbmF0dXJlKCk7CiAgICAg
ICAgIHN0cmVhbS0+d3JpdGVJbnQob3V0cHV0cy5zaXplKCkpOwpAQCAtMTA4OSwyNiArMTA5Nyw0
MSBAQCBnbDo6RXJyb3IgUHJvZ3JhbUQzRDo6c2F2ZShnbDo6QmluYXJ5T3V0cHV0U3RyZWFtICpz
dHJlYW0pCiAgICAgICAgIHN0cmVhbS0+d3JpdGVCeXRlcyhwaXhlbEJsb2IsIHBpeGVsU2hhZGVy
U2l6ZSk7CiAgICAgfQogCi0gICAgZm9yIChjb25zdCBTaGFkZXJFeGVjdXRhYmxlRDNEICpnZW9t
ZXRyeUV4ZSA6IG1HZW9tZXRyeUV4ZWN1dGFibGVzKQorICAgIGZvciAoYXV0byBjb25zdCAmZ2Vv
bWV0cnlFeGVjdXRhYmxlIDogbUdlb21ldHJ5RXhlY3V0YWJsZXMpCiAgICAgewotICAgICAgICBp
ZiAoZ2VvbWV0cnlFeGUgPT0gbnVsbHB0cikKKyAgICAgICAgaWYgKCFnZW9tZXRyeUV4ZWN1dGFi
bGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHN0cmVhbS0+d3JpdGVJbnQoMCk7CiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIHNpemVfdCBnZW9tZXRyeVNoYWRl
clNpemUgPSBnZW9tZXRyeUV4ZS0+Z2V0TGVuZ3RoKCk7CisgICAgICAgIHNpemVfdCBnZW9tZXRy
eVNoYWRlclNpemUgPSBnZW9tZXRyeUV4ZWN1dGFibGUtPmdldExlbmd0aCgpOwogICAgICAgICBz
dHJlYW0tPndyaXRlSW50KGdlb21ldHJ5U2hhZGVyU2l6ZSk7Ci0gICAgICAgIHN0cmVhbS0+d3Jp
dGVCeXRlcyhnZW9tZXRyeUV4ZS0+Z2V0RnVuY3Rpb24oKSwgZ2VvbWV0cnlTaGFkZXJTaXplKTsK
KyAgICAgICAgc3RyZWFtLT53cml0ZUJ5dGVzKGdlb21ldHJ5RXhlY3V0YWJsZS0+Z2V0RnVuY3Rp
b24oKSwgZ2VvbWV0cnlTaGFkZXJTaXplKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX05PX0VSUk9SKTsKKyAgICBpZiAobUNvbXB1dGVFeGVjdXRhYmxlKQorICAgIHsKKyAgICAg
ICAgc2l6ZV90IGNvbXB1dGVTaGFkZXJTaXplID0gbUNvbXB1dGVFeGVjdXRhYmxlLT5nZXRMZW5n
dGgoKTsKKyAgICAgICAgc3RyZWFtLT53cml0ZUludChjb21wdXRlU2hhZGVyU2l6ZSk7CisgICAg
ICAgIHN0cmVhbS0+d3JpdGVCeXRlcyhtQ29tcHV0ZUV4ZWN1dGFibGUtPmdldEZ1bmN0aW9uKCks
IGNvbXB1dGVTaGFkZXJTaXplKTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc3Ry
ZWFtLT53cml0ZUludCgwKTsKKyAgICB9CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAogdm9pZCBQcm9ncmFtRDNEOjpzZXRCaW5hcnlSZXRyaWV2YWJsZUhpbnQoYm9vbCAvKiByZXRy
aWV2YWJsZSAqLykKIHsKIH0KIAordm9pZCBQcm9ncmFtRDNEOjpzZXRTZXBhcmFibGUoYm9vbCAv
KiBzZXBhcmFibGUgKi8pCit7Cit9CisKIGdsOjpFcnJvciBQcm9ncmFtRDNEOjpnZXRQaXhlbEV4
ZWN1dGFibGVGb3JGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZibywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJF
eGVjdXRhYmxlRDNEICoqb3V0RXhlY3V0YWJsZSkKIHsKQEAgLTExNDUsNyArMTE2OCw3IEBAIGds
OjpFcnJvciBQcm9ncmFtRDNEOjpnZXRQaXhlbEV4ZWN1dGFibGVGb3JPdXRwdXRMYXlvdXQoY29u
c3Qgc3RkOjp2ZWN0b3I8R0xlbnVtCiAgICAgICAgIGlmIChtUGl4ZWxFeGVjdXRhYmxlc1tleGVj
dXRhYmxlSW5kZXhdLT5tYXRjaGVzU2lnbmF0dXJlKG91dHB1dFNpZ25hdHVyZSkpCiAgICAgICAg
IHsKICAgICAgICAgICAgICpvdXRFeGVjdHVhYmxlID0gbVBpeGVsRXhlY3V0YWJsZXNbZXhlY3V0
YWJsZUluZGV4XS0+c2hhZGVyRXhlY3V0YWJsZSgpOwotICAgICAgICAgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAg
ICAgICAgfQogICAgIH0KIApAQCAtMTE1OCwyOCArMTE4MSwyNCBAQCBnbDo6RXJyb3IgUHJvZ3Jh
bUQzRDo6Z2V0UGl4ZWxFeGVjdXRhYmxlRm9yT3V0cHV0TGF5b3V0KGNvbnN0IHN0ZDo6dmVjdG9y
PEdMZW51bQogICAgIGdsOjpJbmZvTG9nIHRlbXBJbmZvTG9nOwogICAgIGdsOjpJbmZvTG9nICpj
dXJyZW50SW5mb0xvZyA9IGluZm9Mb2cgPyBpbmZvTG9nIDogJnRlbXBJbmZvTG9nOwogCi0gICAg
Z2w6OkVycm9yIGVycm9yID0gbVJlbmRlcmVyLT5jb21waWxlVG9FeGVjdXRhYmxlKAorICAgIEFO
R0xFX1RSWShtUmVuZGVyZXItPmNvbXBpbGVUb0V4ZWN1dGFibGUoCiAgICAgICAgICpjdXJyZW50
SW5mb0xvZywgZmluYWxQaXhlbEhMU0wsIFNIQURFUl9QSVhFTCwgbVN0cmVhbU91dFZhcnlpbmdz
LAogICAgICAgICAobVN0YXRlLmdldFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyTW9kZSgpID09IEdM
X1NFUEFSQVRFX0FUVFJJQlMpLCBtUGl4ZWxXb3JrYXJvdW5kcywKLSAgICAgICAgJnBpeGVsRXhl
Y3V0YWJsZSk7Ci0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBlcnJvcjsKLSAgICB9CisgICAgICAgICZwaXhlbEV4ZWN1dGFibGUpKTsKIAogICAgIGlmIChw
aXhlbEV4ZWN1dGFibGUpCiAgICAgewotICAgICAgICBtUGl4ZWxFeGVjdXRhYmxlcy5wdXNoX2Jh
Y2sobmV3IFBpeGVsRXhlY3V0YWJsZShvdXRwdXRTaWduYXR1cmUsIHBpeGVsRXhlY3V0YWJsZSkp
OworICAgICAgICBtUGl4ZWxFeGVjdXRhYmxlcy5wdXNoX2JhY2soc3RkOjp1bmlxdWVfcHRyPFBp
eGVsRXhlY3V0YWJsZT4oCisgICAgICAgICAgICBuZXcgUGl4ZWxFeGVjdXRhYmxlKG91dHB1dFNp
Z25hdHVyZSwgcGl4ZWxFeGVjdXRhYmxlKSkpOwogICAgIH0KICAgICBlbHNlIGlmICghaW5mb0xv
ZykKICAgICB7Ci0gICAgICAgIHN0ZDo6dmVjdG9yPGNoYXI+IHRlbXBDaGFyQnVmZmVyKHRlbXBJ
bmZvTG9nLmdldExlbmd0aCgpICsgMyk7Ci0gICAgICAgIHRlbXBJbmZvTG9nLmdldExvZyhzdGF0
aWNfY2FzdDxHTHNpemVpPih0ZW1wSW5mb0xvZy5nZXRMZW5ndGgoKSksIE5VTEwsICZ0ZW1wQ2hh
ckJ1ZmZlclswXSk7Ci0gICAgICAgIEVSUigiRXJyb3IgY29tcGlsaW5nIGR5bmFtaWMgcGl4ZWwg
ZXhlY3V0YWJsZTpcbiVzXG4iLCAmdGVtcENoYXJCdWZmZXJbMF0pOworICAgICAgICBFUlIoKSA8
PCAiRXJyb3IgY29tcGlsaW5nIGR5bmFtaWMgcGl4ZWwgZXhlY3V0YWJsZToiIDw8IHN0ZDo6ZW5k
bAorICAgICAgICAgICAgICA8PCB0ZW1wSW5mb0xvZy5zdHIoKSA8PCBzdGQ6OmVuZGw7CiAgICAg
fQogCiAgICAgKm91dEV4ZWN0dWFibGUgPSBwaXhlbEV4ZWN1dGFibGU7Ci0gICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGds
OjpFcnJvciBQcm9ncmFtRDNEOjpnZXRWZXJ0ZXhFeGVjdXRhYmxlRm9ySW5wdXRMYXlvdXQoY29u
c3QgZ2w6OklucHV0TGF5b3V0ICZpbnB1dExheW91dCwKQEAgLTExOTMsNyArMTIxMiw3IEBAIGds
OjpFcnJvciBQcm9ncmFtRDNEOjpnZXRWZXJ0ZXhFeGVjdXRhYmxlRm9ySW5wdXRMYXlvdXQoY29u
c3QgZ2w6OklucHV0TGF5b3V0ICZpCiAgICAgICAgIGlmIChtVmVydGV4RXhlY3V0YWJsZXNbZXhl
Y3V0YWJsZUluZGV4XS0+bWF0Y2hlc1NpZ25hdHVyZShtQ2FjaGVkVmVydGV4U2lnbmF0dXJlKSkK
ICAgICAgICAgewogICAgICAgICAgICAgKm91dEV4ZWN0dWFibGUgPSBtVmVydGV4RXhlY3V0YWJs
ZXNbZXhlY3V0YWJsZUluZGV4XS0+c2hhZGVyRXhlY3V0YWJsZSgpOwotICAgICAgICAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgICAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTIwNywyOSArMTIyNiwyNCBAQCBnbDo6RXJy
b3IgUHJvZ3JhbUQzRDo6Z2V0VmVydGV4RXhlY3V0YWJsZUZvcklucHV0TGF5b3V0KGNvbnN0IGds
OjpJbnB1dExheW91dCAmaQogICAgIGdsOjpJbmZvTG9nIHRlbXBJbmZvTG9nOwogICAgIGdsOjpJ
bmZvTG9nICpjdXJyZW50SW5mb0xvZyA9IGluZm9Mb2cgPyBpbmZvTG9nIDogJnRlbXBJbmZvTG9n
OwogCi0gICAgZ2w6OkVycm9yIGVycm9yID0gbVJlbmRlcmVyLT5jb21waWxlVG9FeGVjdXRhYmxl
KAorICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmNvbXBpbGVUb0V4ZWN1dGFibGUoCiAgICAgICAg
ICpjdXJyZW50SW5mb0xvZywgZmluYWxWZXJ0ZXhITFNMLCBTSEFERVJfVkVSVEVYLCBtU3RyZWFt
T3V0VmFyeWluZ3MsCiAgICAgICAgIChtU3RhdGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJN
b2RlKCkgPT0gR0xfU0VQQVJBVEVfQVRUUklCUyksIG1WZXJ0ZXhXb3JrYXJvdW5kcywKLSAgICAg
ICAgJnZlcnRleEV4ZWN1dGFibGUpOwotICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgewot
ICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgICAgICAmdmVydGV4RXhlY3V0YWJsZSkp
OwogCiAgICAgaWYgKHZlcnRleEV4ZWN1dGFibGUpCiAgICAgewotICAgICAgICBtVmVydGV4RXhl
Y3V0YWJsZXMucHVzaF9iYWNrKAotICAgICAgICAgICAgbmV3IFZlcnRleEV4ZWN1dGFibGUoaW5w
dXRMYXlvdXQsIG1DYWNoZWRWZXJ0ZXhTaWduYXR1cmUsIHZlcnRleEV4ZWN1dGFibGUpKTsKKyAg
ICAgICAgbVZlcnRleEV4ZWN1dGFibGVzLnB1c2hfYmFjayhzdGQ6OnVuaXF1ZV9wdHI8VmVydGV4
RXhlY3V0YWJsZT4oCisgICAgICAgICAgICBuZXcgVmVydGV4RXhlY3V0YWJsZShpbnB1dExheW91
dCwgbUNhY2hlZFZlcnRleFNpZ25hdHVyZSwgdmVydGV4RXhlY3V0YWJsZSkpKTsKICAgICB9CiAg
ICAgZWxzZSBpZiAoIWluZm9Mb2cpCiAgICAgewotICAgICAgICBzdGQ6OnZlY3RvcjxjaGFyPiB0
ZW1wQ2hhckJ1ZmZlcih0ZW1wSW5mb0xvZy5nZXRMZW5ndGgoKSArIDMpOwotICAgICAgICB0ZW1w
SW5mb0xvZy5nZXRMb2coc3RhdGljX2Nhc3Q8R0xzaXplaT4odGVtcEluZm9Mb2cuZ2V0TGVuZ3Ro
KCkpLCBOVUxMLCAmdGVtcENoYXJCdWZmZXJbMF0pOwotICAgICAgICBFUlIoIkVycm9yIGNvbXBp
bGluZyBkeW5hbWljIHZlcnRleCBleGVjdXRhYmxlOlxuJXNcbiIsICZ0ZW1wQ2hhckJ1ZmZlclsw
XSk7CisgICAgICAgIEVSUigpIDw8ICJFcnJvciBjb21waWxpbmcgZHluYW1pYyB2ZXJ0ZXggZXhl
Y3V0YWJsZToiIDw8IHN0ZDo6ZW5kbAorICAgICAgICAgICAgICA8PCB0ZW1wSW5mb0xvZy5zdHIo
KSA8PCBzdGQ6OmVuZGw7CiAgICAgfQogCiAgICAgKm91dEV4ZWN0dWFibGUgPSB2ZXJ0ZXhFeGVj
dXRhYmxlOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUHJvZ3JhbUQzRDo6Z2V0R2VvbWV0cnlFeGVj
dXRhYmxlRm9yUHJpbWl0aXZlVHlwZShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLApAQCAt
MTI0NSwxOCArMTI1OSwxOCBAQCBnbDo6RXJyb3IgUHJvZ3JhbUQzRDo6Z2V0R2VvbWV0cnlFeGVj
dXRhYmxlRm9yUHJpbWl0aXZlVHlwZShjb25zdCBnbDo6Q29udGV4dFN0YQogICAgIC8vIFJldHVy
biBhIG51bGwgc2hhZGVyIGlmIHRoZSBjdXJyZW50IHJlbmRlcmluZyBkb2Vzbid0IHVzZSBhIGdl
b21ldHJ5IHNoYWRlcgogICAgIGlmICghdXNlc0dlb21ldHJ5U2hhZGVyKGRyYXdNb2RlKSkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKICAgICBnbDo6UHJpbWl0aXZlVHlwZSBnZW9tZXRy
eVNoYWRlclR5cGUgPSBHZXRHZW9tZXRyeVNoYWRlclR5cGVGcm9tRHJhd01vZGUoZHJhd01vZGUp
OwogCi0gICAgaWYgKG1HZW9tZXRyeUV4ZWN1dGFibGVzW2dlb21ldHJ5U2hhZGVyVHlwZV0gIT0g
bnVsbHB0cikKKyAgICBpZiAobUdlb21ldHJ5RXhlY3V0YWJsZXNbZ2VvbWV0cnlTaGFkZXJUeXBl
XSkKICAgICB7CiAgICAgICAgIGlmIChvdXRFeGVjdXRhYmxlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICAqb3V0RXhlY3V0YWJsZSA9IG1HZW9tZXRyeUV4ZWN1dGFibGVzW2dlb21ldHJ5U2hhZGVy
VHlwZV07CisgICAgICAgICAgICAqb3V0RXhlY3V0YWJsZSA9IG1HZW9tZXRyeUV4ZWN1dGFibGVz
W2dlb21ldHJ5U2hhZGVyVHlwZV0uZ2V0KCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAg
IH0KIAogICAgIHN0ZDo6c3RyaW5nIGdlb21ldHJ5SExTTCA9IG1EeW5hbWljSExTTC0+Z2VuZXJh
dGVHZW9tZXRyeVNoYWRlckhMU0woCkBAIC0xMjY2LDUzICsxMjgwLDE0MCBAQCBnbDo6RXJyb3Ig
UHJvZ3JhbUQzRDo6Z2V0R2VvbWV0cnlFeGVjdXRhYmxlRm9yUHJpbWl0aXZlVHlwZShjb25zdCBn
bDo6Q29udGV4dFN0YQogICAgIGdsOjpJbmZvTG9nIHRlbXBJbmZvTG9nOwogICAgIGdsOjpJbmZv
TG9nICpjdXJyZW50SW5mb0xvZyA9IGluZm9Mb2cgPyBpbmZvTG9nIDogJnRlbXBJbmZvTG9nOwog
Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gbVJlbmRlcmVyLT5jb21waWxlVG9FeGVjdXRhYmxlKAor
ICAgIFNoYWRlckV4ZWN1dGFibGVEM0QgKmdlb21ldHJ5RXhlY3V0YWJsZSA9IG51bGxwdHI7Cisg
ICAgZ2w6OkVycm9yIGVycm9yICAgICAgICAgICAgICAgICAgICAgICAgID0gbVJlbmRlcmVyLT5j
b21waWxlVG9FeGVjdXRhYmxlKAogICAgICAgICAqY3VycmVudEluZm9Mb2csIGdlb21ldHJ5SExT
TCwgU0hBREVSX0dFT01FVFJZLCBtU3RyZWFtT3V0VmFyeWluZ3MsCi0gICAgICAgIChtU3RhdGUu
Z2V0VHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJNb2RlKCkgPT0gR0xfU0VQQVJBVEVfQVRUUklCUyks
IEQzRENvbXBpbGVyV29ya2Fyb3VuZHMoKSwKLSAgICAgICAgJm1HZW9tZXRyeUV4ZWN1dGFibGVz
W2dlb21ldHJ5U2hhZGVyVHlwZV0pOworICAgICAgICAobVN0YXRlLmdldFRyYW5zZm9ybUZlZWRi
YWNrQnVmZmVyTW9kZSgpID09IEdMX1NFUEFSQVRFX0FUVFJJQlMpLAorICAgICAgICBhbmdsZTo6
Q29tcGlsZXJXb3JrYXJvdW5kc0QzRCgpLCAmZ2VvbWV0cnlFeGVjdXRhYmxlKTsKIAogICAgIGlm
ICghaW5mb0xvZyAmJiBlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBzdGQ6OnZlY3Rv
cjxjaGFyPiB0ZW1wQ2hhckJ1ZmZlcih0ZW1wSW5mb0xvZy5nZXRMZW5ndGgoKSArIDMpOwotICAg
ICAgICB0ZW1wSW5mb0xvZy5nZXRMb2coc3RhdGljX2Nhc3Q8R0xzaXplaT4odGVtcEluZm9Mb2cu
Z2V0TGVuZ3RoKCkpLCBOVUxMLCAmdGVtcENoYXJCdWZmZXJbMF0pOwotICAgICAgICBFUlIoIkVy
cm9yIGNvbXBpbGluZyBkeW5hbWljIGdlb21ldHJ5IGV4ZWN1dGFibGU6XG4lc1xuIiwgJnRlbXBD
aGFyQnVmZmVyWzBdKTsKKyAgICAgICAgRVJSKCkgPDwgIkVycm9yIGNvbXBpbGluZyBkeW5hbWlj
IGdlb21ldHJ5IGV4ZWN1dGFibGU6IiA8PCBzdGQ6OmVuZGwKKyAgICAgICAgICAgICAgPDwgdGVt
cEluZm9Mb2cuc3RyKCkgPDwgc3RkOjplbmRsOworICAgIH0KKworICAgIGlmIChnZW9tZXRyeUV4
ZWN1dGFibGUgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIG1HZW9tZXRyeUV4ZWN1dGFibGVz
W2dlb21ldHJ5U2hhZGVyVHlwZV0ucmVzZXQoZ2VvbWV0cnlFeGVjdXRhYmxlKTsKICAgICB9CiAK
ICAgICBpZiAob3V0RXhlY3V0YWJsZSkKICAgICB7Ci0gICAgICAgICpvdXRFeGVjdXRhYmxlID0g
bUdlb21ldHJ5RXhlY3V0YWJsZXNbZ2VvbWV0cnlTaGFkZXJUeXBlXTsKKyAgICAgICAgKm91dEV4
ZWN1dGFibGUgPSBtR2VvbWV0cnlFeGVjdXRhYmxlc1tnZW9tZXRyeVNoYWRlclR5cGVdLmdldCgp
OwogICAgIH0KICAgICByZXR1cm4gZXJyb3I7CiB9CiAKLUxpbmtSZXN1bHQgUHJvZ3JhbUQzRDo6
Y29tcGlsZVByb2dyYW1FeGVjdXRhYmxlcyhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBn
bDo6SW5mb0xvZyAmaW5mb0xvZykKK2NsYXNzIFByb2dyYW1EM0Q6OkdldEV4ZWN1dGFibGVUYXNr
IDogcHVibGljIENsb3N1cmUKK3sKKyAgcHVibGljOgorICAgIEdldEV4ZWN1dGFibGVUYXNrKFBy
b2dyYW1EM0QgKnByb2dyYW0pCisgICAgICAgIDogbVByb2dyYW0ocHJvZ3JhbSksIG1FcnJvcihH
TF9OT19FUlJPUiksIG1JbmZvTG9nKCksIG1SZXN1bHQobnVsbHB0cikKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCBnbDo6RXJyb3IgcnVuKCkgPSAwOworCisgICAgdm9pZCBvcGVyYXRvcigp
KCkgb3ZlcnJpZGUgeyBtRXJyb3IgPSBydW4oKTsgfQorCisgICAgY29uc3QgZ2w6OkVycm9yICZn
ZXRFcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1FcnJvcjsgfQorICAgIGNvbnN0IGdsOjpJbmZvTG9n
ICZnZXRJbmZvTG9nKCkgY29uc3QgeyByZXR1cm4gbUluZm9Mb2c7IH0KKyAgICBTaGFkZXJFeGVj
dXRhYmxlRDNEICpnZXRSZXN1bHQoKSB7IHJldHVybiBtUmVzdWx0OyB9CisKKyAgcHJvdGVjdGVk
OgorICAgIFByb2dyYW1EM0QgKm1Qcm9ncmFtOworICAgIGdsOjpFcnJvciBtRXJyb3I7CisgICAg
Z2w6OkluZm9Mb2cgbUluZm9Mb2c7CisgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqbVJlc3VsdDsK
K307CisKK2NsYXNzIFByb2dyYW1EM0Q6OkdldFZlcnRleEV4ZWN1dGFibGVUYXNrIDogcHVibGlj
IFByb2dyYW1EM0Q6OkdldEV4ZWN1dGFibGVUYXNrCit7CisgIHB1YmxpYzoKKyAgICBHZXRWZXJ0
ZXhFeGVjdXRhYmxlVGFzayhQcm9ncmFtRDNEICpwcm9ncmFtKSA6IEdldEV4ZWN1dGFibGVUYXNr
KHByb2dyYW0pIHt9CisgICAgZ2w6OkVycm9yIHJ1bigpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBjb25zdCBhdXRvICZkZWZhdWx0SW5wdXRMYXlvdXQgPQorICAgICAgICAgICAgR2V0RGVmYXVs
dElucHV0TGF5b3V0RnJvbVNoYWRlcihtUHJvZ3JhbS0+bVN0YXRlLmdldEF0dGFjaGVkVmVydGV4
U2hhZGVyKCkpOworCisgICAgICAgIEFOR0xFX1RSWSgKKyAgICAgICAgICAgIG1Qcm9ncmFtLT5n
ZXRWZXJ0ZXhFeGVjdXRhYmxlRm9ySW5wdXRMYXlvdXQoZGVmYXVsdElucHV0TGF5b3V0LCAmbVJl
c3VsdCwgJm1JbmZvTG9nKSk7CisKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAg
fQorfTsKKworY2xhc3MgUHJvZ3JhbUQzRDo6R2V0UGl4ZWxFeGVjdXRhYmxlVGFzayA6IHB1Ymxp
YyBQcm9ncmFtRDNEOjpHZXRFeGVjdXRhYmxlVGFzawogewotICAgIGNvbnN0IGdsOjpJbnB1dExh
eW91dCAmZGVmYXVsdElucHV0TGF5b3V0ID0KLSAgICAgICAgR2V0RGVmYXVsdElucHV0TGF5b3V0
RnJvbVNoYWRlcihtU3RhdGUuZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFkZXIoKSk7Ci0gICAgU2hhZGVy
RXhlY3V0YWJsZUQzRCAqZGVmYXVsdFZlcnRleEV4ZWN1dGFibGUgPSBOVUxMOwotICAgIGdsOjpF
cnJvciBlcnJvciA9Ci0gICAgICAgIGdldFZlcnRleEV4ZWN1dGFibGVGb3JJbnB1dExheW91dChk
ZWZhdWx0SW5wdXRMYXlvdXQsICZkZWZhdWx0VmVydGV4RXhlY3V0YWJsZSwgJmluZm9Mb2cpOwot
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgIHB1YmxpYzoKKyAgICBHZXRQaXhlbEV4ZWN1dGFi
bGVUYXNrKFByb2dyYW1EM0QgKnByb2dyYW0pIDogR2V0RXhlY3V0YWJsZVRhc2socHJvZ3JhbSkg
e30KKyAgICBnbDo6RXJyb3IgcnVuKCkgb3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIHJldHVybiBM
aW5rUmVzdWx0KGZhbHNlLCBlcnJvcik7CisgICAgICAgIGNvbnN0IGF1dG8gJmRlZmF1bHRQaXhl
bE91dHB1dCA9CisgICAgICAgICAgICBHZXREZWZhdWx0T3V0cHV0TGF5b3V0RnJvbVNoYWRlciht
UHJvZ3JhbS0+Z2V0UGl4ZWxTaGFkZXJLZXkoKSk7CisKKyAgICAgICAgQU5HTEVfVFJZKAorICAg
ICAgICAgICAgbVByb2dyYW0tPmdldFBpeGVsRXhlY3V0YWJsZUZvck91dHB1dExheW91dChkZWZh
dWx0UGl4ZWxPdXRwdXQsICZtUmVzdWx0LCAmbUluZm9Mb2cpKTsKKworICAgICAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKICAgICB9Cit9OwogCi0gICAgc3RkOjp2ZWN0b3I8R0xlbnVtPiBkZWZh
dWx0UGl4ZWxPdXRwdXQgICAgICA9IEdldERlZmF1bHRPdXRwdXRMYXlvdXRGcm9tU2hhZGVyKGdl
dFBpeGVsU2hhZGVyS2V5KCkpOwotICAgIFNoYWRlckV4ZWN1dGFibGVEM0QgKmRlZmF1bHRQaXhl
bEV4ZWN1dGFibGUgPSBOVUxMOwotICAgIGVycm9yID0KLSAgICAgICAgZ2V0UGl4ZWxFeGVjdXRh
YmxlRm9yT3V0cHV0TGF5b3V0KGRlZmF1bHRQaXhlbE91dHB1dCwgJmRlZmF1bHRQaXhlbEV4ZWN1
dGFibGUsICZpbmZvTG9nKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQorY2xhc3MgUHJvZ3Jh
bUQzRDo6R2V0R2VvbWV0cnlFeGVjdXRhYmxlVGFzayA6IHB1YmxpYyBQcm9ncmFtRDNEOjpHZXRF
eGVjdXRhYmxlVGFzaworeworICBwdWJsaWM6CisgICAgR2V0R2VvbWV0cnlFeGVjdXRhYmxlVGFz
ayhQcm9ncmFtRDNEICpwcm9ncmFtLCBjb25zdCBnbDo6Q29udGV4dFN0YXRlICZjb250ZXh0U3Rh
dGUpCisgICAgICAgIDogR2V0RXhlY3V0YWJsZVRhc2socHJvZ3JhbSksIG1Db250ZXh0U3RhdGUo
Y29udGV4dFN0YXRlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIExpbmtSZXN1bHQoZmFsc2UsIGVy
cm9yKTsKICAgICB9CiAKLSAgICAvLyBBdXRvLWdlbmVyYXRlIHRoZSBnZW9tZXRyeSBzaGFkZXIg
aGVyZSwgaWYgd2UgZXhwZWN0IHRvIGJlIHVzaW5nIHBvaW50IHJlbmRlcmluZyBpbiBEM0QxMS4K
LSAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICpwb2ludEdTID0gbnVsbHB0cjsKLSAgICBpZiAodXNl
c0dlb21ldHJ5U2hhZGVyKEdMX1BPSU5UUykpCisgICAgZ2w6OkVycm9yIHJ1bigpIG92ZXJyaWRl
CiAgICAgewotICAgICAgICBnZXRHZW9tZXRyeUV4ZWN1dGFibGVGb3JQcmltaXRpdmVUeXBlKGRh
dGEsIEdMX1BPSU5UUywgJnBvaW50R1MsICZpbmZvTG9nKTsKKyAgICAgICAgLy8gQXV0by1nZW5l
cmF0ZSB0aGUgZ2VvbWV0cnkgc2hhZGVyIGhlcmUsIGlmIHdlIGV4cGVjdCB0byBiZSB1c2luZyBw
b2ludCByZW5kZXJpbmcgaW4KKyAgICAgICAgLy8gRDNEMTEuCisgICAgICAgIGlmIChtUHJvZ3Jh
bS0+dXNlc0dlb21ldHJ5U2hhZGVyKEdMX1BPSU5UUykpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEFOR0xFX1RSWShtUHJvZ3JhbS0+Z2V0R2VvbWV0cnlFeGVjdXRhYmxlRm9yUHJpbWl0aXZlVHlw
ZShtQ29udGV4dFN0YXRlLCBHTF9QT0lOVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1SZXN1bHQsICZtSW5m
b0xvZykpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAg
fQogCisgIHByaXZhdGU6CisgICAgY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmbUNvbnRleHRTdGF0
ZTsKK307CisKK0xpbmtSZXN1bHQgUHJvZ3JhbUQzRDo6Y29tcGlsZVByb2dyYW1FeGVjdXRhYmxl
cyhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZjb250ZXh0U3RhdGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkluZm9Mb2cgJmluZm9Mb2cpCit7
CisgICAgLy8gRW5zdXJlIHRoZSBjb21waWxlciBpcyBpbml0aWFsaXplZCB0byBhdm9pZCByYWNl
IGNvbmRpdGlvbnMuCisgICAgQU5HTEVfVFJZKG1SZW5kZXJlci0+ZW5zdXJlSExTTENvbXBpbGVy
SW5pdGlhbGl6ZWQoKSk7CisKKyAgICBXb3JrZXJUaHJlYWRQb29sICp3b3JrZXJQb29sID0gbVJl
bmRlcmVyLT5nZXRXb3JrZXJUaHJlYWRQb29sKCk7CisKKyAgICBHZXRWZXJ0ZXhFeGVjdXRhYmxl
VGFzayB2ZXJ0ZXhUYXNrKHRoaXMpOworICAgIEdldFBpeGVsRXhlY3V0YWJsZVRhc2sgcGl4ZWxU
YXNrKHRoaXMpOworICAgIEdldEdlb21ldHJ5RXhlY3V0YWJsZVRhc2sgZ2VvbWV0cnlUYXNrKHRo
aXMsIGNvbnRleHRTdGF0ZSk7CisKKyAgICBzdGQ6OmFycmF5PFdhaXRhYmxlRXZlbnQsIDM+IHdh
aXRFdmVudHMgPSB7e3dvcmtlclBvb2wtPnBvc3RXb3JrZXJUYXNrKCZ2ZXJ0ZXhUYXNrKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtlclBvb2wt
PnBvc3RXb3JrZXJUYXNrKCZwaXhlbFRhc2spLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd29ya2VyUG9vbC0+cG9zdFdvcmtlclRhc2soJmdlb21ldHJ5
VGFzayl9fTsKKworICAgIFdhaXRhYmxlRXZlbnQ6OldhaXRNYW55KCZ3YWl0RXZlbnRzKTsKKwor
ICAgIGluZm9Mb2cgPDwgdmVydGV4VGFzay5nZXRJbmZvTG9nKCkuc3RyKCk7CisgICAgaW5mb0xv
ZyA8PCBwaXhlbFRhc2suZ2V0SW5mb0xvZygpLnN0cigpOworICAgIGluZm9Mb2cgPDwgZ2VvbWV0
cnlUYXNrLmdldEluZm9Mb2coKS5zdHIoKTsKKworICAgIEFOR0xFX1RSWSh2ZXJ0ZXhUYXNrLmdl
dEVycm9yKCkpOworICAgIEFOR0xFX1RSWShwaXhlbFRhc2suZ2V0RXJyb3IoKSk7CisgICAgQU5H
TEVfVFJZKGdlb21ldHJ5VGFzay5nZXRFcnJvcigpKTsKKworICAgIFNoYWRlckV4ZWN1dGFibGVE
M0QgKmRlZmF1bHRWZXJ0ZXhFeGVjdXRhYmxlID0gdmVydGV4VGFzay5nZXRSZXN1bHQoKTsKKyAg
ICBTaGFkZXJFeGVjdXRhYmxlRDNEICpkZWZhdWx0UGl4ZWxFeGVjdXRhYmxlICA9IHBpeGVsVGFz
ay5nZXRSZXN1bHQoKTsKKyAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICpwb2ludEdTICAgICAgICAg
ICAgICAgICA9IGdlb21ldHJ5VGFzay5nZXRSZXN1bHQoKTsKKwogICAgIGNvbnN0IFNoYWRlckQz
RCAqdmVydGV4U2hhZGVyRDNEID0gR2V0SW1wbEFzPFNoYWRlckQzRD4obVN0YXRlLmdldEF0dGFj
aGVkVmVydGV4U2hhZGVyKCkpOwogCiAgICAgaWYgKHVzZXNHZW9tZXRyeVNoYWRlcihHTF9QT0lO
VFMpICYmIHBvaW50R1MpCkBAIC0xMzM3LDExNiArMTQzOCwxNDIgQEAgTGlua1Jlc3VsdCBQcm9n
cmFtRDNEOjpjb21waWxlUHJvZ3JhbUV4ZWN1dGFibGVzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUg
JmRhdGEsIGcKICAgICAgICAgZnJhZ21lbnRTaGFkZXJEM0QtPmFwcGVuZERlYnVnSW5mbyhkZWZh
dWx0UGl4ZWxFeGVjdXRhYmxlLT5nZXREZWJ1Z0luZm8oKSk7CiAgICAgfQogCi0gICAgYm9vbCBs
aW5rU3VjY2VzcyA9IChkZWZhdWx0VmVydGV4RXhlY3V0YWJsZSAmJiBkZWZhdWx0UGl4ZWxFeGVj
dXRhYmxlICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAoIXVzZXNHZW9tZXRyeVNoYWRlcihH
TF9QT0lOVFMpIHx8IHBvaW50R1MpKTsKLSAgICByZXR1cm4gTGlua1Jlc3VsdChsaW5rU3VjY2Vz
cywgZ2w6OkVycm9yKEdMX05PX0VSUk9SKSk7CisgICAgcmV0dXJuIChkZWZhdWx0VmVydGV4RXhl
Y3V0YWJsZSAmJiBkZWZhdWx0UGl4ZWxFeGVjdXRhYmxlICYmCisgICAgICAgICAgICAoIXVzZXNH
ZW9tZXRyeVNoYWRlcihHTF9QT0lOVFMpIHx8IHBvaW50R1MpKTsKIH0KIAotTGlua1Jlc3VsdCBQ
cm9ncmFtRDNEOjpsaW5rKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIGdsOjpJbmZvTG9n
ICZpbmZvTG9nKQorTGlua1Jlc3VsdCBQcm9ncmFtRDNEOjpjb21waWxlQ29tcHV0ZUV4ZWN1dGFi
bGUoZ2w6OkluZm9Mb2cgJmluZm9Mb2cpCiB7Ci0gICAgcmVzZXQoKTsKKyAgICAvLyBFbnN1cmUg
dGhlIGNvbXBpbGVyIGlzIGluaXRpYWxpemVkIHRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucy4KKyAg
ICBBTkdMRV9UUlkobVJlbmRlcmVyLT5lbnN1cmVITFNMQ29tcGlsZXJJbml0aWFsaXplZCgpKTsK
IAotICAgIGNvbnN0IGdsOjpTaGFkZXIgKnZlcnRleFNoYWRlciAgID0gbVN0YXRlLmdldEF0dGFj
aGVkVmVydGV4U2hhZGVyKCk7Ci0gICAgY29uc3QgZ2w6OlNoYWRlciAqZnJhZ21lbnRTaGFkZXIg
PSBtU3RhdGUuZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpOworICAgIHN0ZDo6c3RyaW5nIGNv
bXB1dGVTaGFkZXIgPSBtRHluYW1pY0hMU0wtPmdlbmVyYXRlQ29tcHV0ZVNoYWRlckxpbmtITFNM
KG1TdGF0ZSk7CiAKLSAgICBjb25zdCBTaGFkZXJEM0QgKnZlcnRleFNoYWRlckQzRCAgID0gR2V0
SW1wbEFzPFNoYWRlckQzRD4odmVydGV4U2hhZGVyKTsKLSAgICBjb25zdCBTaGFkZXJEM0QgKmZy
YWdtZW50U2hhZGVyRDNEID0gR2V0SW1wbEFzPFNoYWRlckQzRD4oZnJhZ21lbnRTaGFkZXIpOwor
ICAgIFNoYWRlckV4ZWN1dGFibGVEM0QgKmNvbXB1dGVFeGVjdXRhYmxlID0gbnVsbHB0cjsKKyAg
ICBBTkdMRV9UUlkobVJlbmRlcmVyLT5jb21waWxlVG9FeGVjdXRhYmxlKGluZm9Mb2csIGNvbXB1
dGVTaGFkZXIsIFNIQURFUl9DT01QVVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8RDNEVmFyeWluZz4oKSwgZmFsc2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Q29tcGlsZXJXb3Jr
YXJvdW5kc0QzRCgpLCAmY29tcHV0ZUV4ZWN1dGFibGUpKTsKIAotICAgIG1TYW1wbGVyc1ZTLnJl
c2l6ZShkYXRhLmdldENhcHMoKS5tYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyk7Ci0gICAgbVNh
bXBsZXJzUFMucmVzaXplKGRhdGEuZ2V0Q2FwcygpLm1heFRleHR1cmVJbWFnZVVuaXRzKTsKKyAg
ICBpZiAoY29tcHV0ZUV4ZWN1dGFibGUgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIEVSUigp
IDw8ICJFcnJvciBjb21waWxpbmcgZHluYW1pYyBjb21wdXRlIGV4ZWN1dGFibGU6IiA8PCBzdGQ6
OmVuZGwKKyAgICAgICAgICAgICAgPDwgaW5mb0xvZy5zdHIoKSA8PCBzdGQ6OmVuZGw7CisgICAg
fQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIGNvbnN0IFNoYWRlckQzRCAqY29tcHV0ZVNoYWRl
ckQzRCA9IEdldEltcGxBczxTaGFkZXJEM0Q+KG1TdGF0ZS5nZXRBdHRhY2hlZENvbXB1dGVTaGFk
ZXIoKSk7CisgICAgICAgIGNvbXB1dGVTaGFkZXJEM0QtPmFwcGVuZERlYnVnSW5mbyhjb21wdXRl
RXhlY3V0YWJsZS0+Z2V0RGVidWdJbmZvKCkpOworICAgICAgICBtQ29tcHV0ZUV4ZWN1dGFibGUu
cmVzZXQoY29tcHV0ZUV4ZWN1dGFibGUpOworICAgIH0KIAotICAgIHZlcnRleFNoYWRlckQzRC0+
Z2VuZXJhdGVXb3JrYXJvdW5kcygmbVZlcnRleFdvcmthcm91bmRzKTsKLSAgICBmcmFnbWVudFNo
YWRlckQzRC0+Z2VuZXJhdGVXb3JrYXJvdW5kcygmbVBpeGVsV29ya2Fyb3VuZHMpOworICAgIHJl
dHVybiBtQ29tcHV0ZUV4ZWN1dGFibGUuZ2V0KCkgIT0gbnVsbHB0cjsKK30KKworTGlua1Jlc3Vs
dCBQcm9ncmFtRDNEOjpsaW5rKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VmFyeWluZ1BhY2tpbmcgJnBhY2tpbmcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkluZm9Mb2cgJmluZm9Mb2cpCit7CisgICAgY29u
c3QgYXV0byAmZGF0YSA9IGNvbnRleHRJbXBsLT5nZXRDb250ZXh0U3RhdGUoKTsKIAotICAgIGlm
IChtUmVuZGVyZXItPmdldE5hdGl2ZUxpbWl0YXRpb25zKCkubm9Gcm9udEZhY2luZ1N1cHBvcnQp
CisgICAgcmVzZXQoKTsKKworICAgIGNvbnN0IGdsOjpTaGFkZXIgKmNvbXB1dGVTaGFkZXIgPSBt
U3RhdGUuZ2V0QXR0YWNoZWRDb21wdXRlU2hhZGVyKCk7CisgICAgaWYgKGNvbXB1dGVTaGFkZXIp
CiAgICAgewotICAgICAgICBpZiAoZnJhZ21lbnRTaGFkZXJEM0QtPnVzZXNGcm9udEZhY2luZygp
KQorICAgICAgICBtU2FtcGxlcnNDUy5yZXNpemUoZGF0YS5nZXRDYXBzKCkubWF4Q29tcHV0ZVRl
eHR1cmVJbWFnZVVuaXRzKTsKKworICAgICAgICBkZWZpbmVVbmlmb3Jtc0FuZEFzc2lnblJlZ2lz
dGVycygpOworCisgICAgICAgIExpbmtSZXN1bHQgcmVzdWx0ID0gY29tcGlsZUNvbXB1dGVFeGVj
dXRhYmxlKGluZm9Mb2cpOworICAgICAgICBpZiAocmVzdWx0LmlzRXJyb3IoKSkKKyAgICAgICAg
eworICAgICAgICAgICAgaW5mb0xvZyA8PCByZXN1bHQuZ2V0RXJyb3IoKS5nZXRNZXNzYWdlKCk7
CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYg
KCFyZXN1bHQuZ2V0UmVzdWx0KCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGluZm9Mb2cgPDwg
IlRoZSBjdXJyZW50IHJlbmRlcmVyIGRvZXNuJ3Qgc3VwcG9ydCBnbF9Gcm9udEZhY2luZyI7Ci0g
ICAgICAgICAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9S
KSk7CisgICAgICAgICAgICBpbmZvTG9nIDw8ICJGYWlsZWQgdG8gY3JlYXRlIEQzRCBjb21wdXRl
IHNoYWRlci4iOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQorCisgICAg
ICAgIGluaXRVbmlmb3JtQmxvY2tJbmZvKGNvbXB1dGVTaGFkZXIpOwogICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICBjb25zdCBnbDo6U2hhZGVyICp2ZXJ0ZXhTaGFkZXIgICA9IG1TdGF0
ZS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpOworICAgICAgICBjb25zdCBnbDo6U2hhZGVyICpm
cmFnbWVudFNoYWRlciA9IG1TdGF0ZS5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCk7CiAKLSAg
ICBzdGQ6OnZlY3RvcjxQYWNrZWRWYXJ5aW5nPiBwYWNrZWRWYXJ5aW5ncyA9Ci0gICAgICAgIE1l
cmdlVmFyeWluZ3MoKnZlcnRleFNoYWRlciwgKmZyYWdtZW50U2hhZGVyLCBtU3RhdGUuZ2V0VHJh
bnNmb3JtRmVlZGJhY2tWYXJ5aW5nTmFtZXMoKSk7CisgICAgICAgIGNvbnN0IFNoYWRlckQzRCAq
dmVydGV4U2hhZGVyRDNEICAgPSBHZXRJbXBsQXM8U2hhZGVyRDNEPih2ZXJ0ZXhTaGFkZXIpOwor
ICAgICAgICBjb25zdCBTaGFkZXJEM0QgKmZyYWdtZW50U2hhZGVyRDNEID0gR2V0SW1wbEFzPFNo
YWRlckQzRD4oZnJhZ21lbnRTaGFkZXIpOwogCi0gICAgLy8gTWFwIHRoZSB2YXJ5aW5ncyB0byB0
aGUgcmVnaXN0ZXIgZmlsZQotICAgIFZhcnlpbmdQYWNraW5nIHZhcnlpbmdQYWNraW5nKGRhdGEu
Z2V0Q2FwcygpLm1heFZhcnlpbmdWZWN0b3JzKTsKLSAgICBpZiAoIXZhcnlpbmdQYWNraW5nLnBh
Y2tWYXJ5aW5ncyhpbmZvTG9nLCBwYWNrZWRWYXJ5aW5ncywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0VHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nTmFtZXMo
KSkpCi0gICAgewotICAgICAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwgZ2w6OkVycm9yKEdM
X05PX0VSUk9SKSk7Ci0gICAgfQorICAgICAgICBtU2FtcGxlcnNWUy5yZXNpemUoZGF0YS5nZXRD
YXBzKCkubWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMpOworICAgICAgICBtU2FtcGxlcnNQUy5y
ZXNpemUoZGF0YS5nZXRDYXBzKCkubWF4VGV4dHVyZUltYWdlVW5pdHMpOwogCi0gICAgUHJvZ3Jh
bUQzRE1ldGFkYXRhIG1ldGFkYXRhKG1SZW5kZXJlciwgdmVydGV4U2hhZGVyRDNELCBmcmFnbWVu
dFNoYWRlckQzRCk7CisgICAgICAgIHZlcnRleFNoYWRlckQzRC0+Z2VuZXJhdGVXb3JrYXJvdW5k
cygmbVZlcnRleFdvcmthcm91bmRzKTsKKyAgICAgICAgZnJhZ21lbnRTaGFkZXJEM0QtPmdlbmVy
YXRlV29ya2Fyb3VuZHMoJm1QaXhlbFdvcmthcm91bmRzKTsKIAotICAgIHZhcnlpbmdQYWNraW5n
LmVuYWJsZUJ1aWx0aW5zKFNIQURFUl9WRVJURVgsIG1ldGFkYXRhKTsKLSAgICB2YXJ5aW5nUGFj
a2luZy5lbmFibGVCdWlsdGlucyhTSEFERVJfUElYRUwsIG1ldGFkYXRhKTsKKyAgICAgICAgaWYg
KG1SZW5kZXJlci0+Z2V0TmF0aXZlTGltaXRhdGlvbnMoKS5ub0Zyb250RmFjaW5nU3VwcG9ydCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKGZyYWdtZW50U2hhZGVyRDNELT51c2VzRnJvbnRG
YWNpbmcoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbmZvTG9nIDw8ICJUaGUg
Y3VycmVudCByZW5kZXJlciBkb2Vzbid0IHN1cHBvcnQgZ2xfRnJvbnRGYWNpbmciOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCi0gICAg
aWYgKHN0YXRpY19jYXN0PEdMdWludD4odmFyeWluZ1BhY2tpbmcuZ2V0UmVnaXN0ZXJDb3VudCgp
KSA+IGRhdGEuZ2V0Q2FwcygpLm1heFZhcnlpbmdWZWN0b3JzKQotICAgIHsKLSAgICAgICAgaW5m
b0xvZyA8PCAiTm8gdmFyeWluZyByZWdpc3RlcnMgbGVmdCB0byBzdXBwb3J0IGdsX0ZyYWdDb29y
ZC9nbF9Qb2ludENvb3JkIjsKLSAgICAgICAgcmV0dXJuIExpbmtSZXN1bHQoZmFsc2UsIGdsOjpF
cnJvcihHTF9OT19FUlJPUikpOwotICAgIH0KKyAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogSW1w
bGVtZW50IG1vcmUgc29waGlzdGljYXRlZCBjb21wb25lbnQgcGFja2luZyBpbiBEM0Q5LgorICAg
ICAgICAvLyBXZSBjYW4gZmFpbCBoZXJlIGJlY2F1c2Ugd2UgdXNlIG9uZSBzZW1hbnRpYyBwZXIg
R0xTTCB2YXJ5aW5nLiBEM0QxMSBjYW4gcGFjayB2YXJ5aW5ncworICAgICAgICAvLyBpbnRlbGxp
Z2VudGx5LCBidXQgRDNEOSBhc3N1bWVzIG9uZSBzZW1hbnRpYyBwZXIgcmVnaXN0ZXIuCisgICAg
ICAgIGlmIChtUmVuZGVyZXItPmdldFJlbmRlcmVyQ2xhc3MoKSA9PSBSRU5ERVJFUl9EM0Q5ICYm
CisgICAgICAgICAgICBwYWNraW5nLmdldE1heFNlbWFudGljSW5kZXgoKSA+IGRhdGEuZ2V0Q2Fw
cygpLm1heFZhcnlpbmdWZWN0b3JzKQorICAgICAgICB7CisgICAgICAgICAgICBpbmZvTG9nIDw8
ICJDYW5ub3QgcGFjayB0aGVzZSB2YXJ5aW5ncyBvbiBEM0Q5LiI7CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KIAotICAgIC8vIFRPRE8oam1hZGlsbCk6IEltcGxlbWVudCBt
b3JlIHNvcGhpc3RpY2F0ZWQgY29tcG9uZW50IHBhY2tpbmcgaW4gRDNEOS4KLSAgICAvLyBXZSBj
YW4gZmFpbCBoZXJlIGJlY2F1c2Ugd2UgdXNlIG9uZSBzZW1hbnRpYyBwZXIgR0xTTCB2YXJ5aW5n
LiBEM0QxMSBjYW4gcGFjayB2YXJ5aW5ncwotICAgIC8vIGludGVsbGlnZW50bHksIGJ1dCBEM0Q5
IGFzc3VtZXMgb25lIHNlbWFudGljIHBlciByZWdpc3Rlci4KLSAgICBpZiAobVJlbmRlcmVyLT5n
ZXRSZW5kZXJlckNsYXNzKCkgPT0gUkVOREVSRVJfRDNEOSAmJgotICAgICAgICB2YXJ5aW5nUGFj
a2luZy5nZXRNYXhTZW1hbnRpY0luZGV4KCkgPiBkYXRhLmdldENhcHMoKS5tYXhWYXJ5aW5nVmVj
dG9ycykKLSAgICB7Ci0gICAgICAgIGluZm9Mb2cgPDwgIkNhbm5vdCBwYWNrIHRoZXNlIHZhcnlp
bmdzIG9uIEQzRDkuIjsKLSAgICAgICAgcmV0dXJuIExpbmtSZXN1bHQoZmFsc2UsIGdsOjpFcnJv
cihHTF9OT19FUlJPUikpOwotICAgIH0KKyAgICAgICAgUHJvZ3JhbUQzRE1ldGFkYXRhIG1ldGFk
YXRhKG1SZW5kZXJlciwgdmVydGV4U2hhZGVyRDNELCBmcmFnbWVudFNoYWRlckQzRCk7CisgICAg
ICAgIEJ1aWx0aW5WYXJ5aW5nc0QzRCBidWlsdGlucyhtZXRhZGF0YSwgcGFja2luZyk7CiAKLSAg
ICBpZiAoIW1EeW5hbWljSExTTC0+Z2VuZXJhdGVTaGFkZXJMaW5rSExTTChkYXRhLCBtU3RhdGUs
IG1ldGFkYXRhLCB2YXJ5aW5nUGFja2luZywgJm1QaXhlbEhMU0wsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1WZXJ0ZXhITFNMKSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNlLCBnbDo6RXJyb3IoR0xfTk9fRVJST1IpKTsKLSAg
ICB9CisgICAgICAgIG1EeW5hbWljSExTTC0+Z2VuZXJhdGVTaGFkZXJMaW5rSExTTChkYXRhLCBt
U3RhdGUsIG1ldGFkYXRhLCBwYWNraW5nLCBidWlsdGlucywgJm1QaXhlbEhMU0wsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbVZlcnRleEhMU0wpOwogCi0g
ICAgbVVzZXNQb2ludFNpemUgPSB2ZXJ0ZXhTaGFkZXJEM0QtPnVzZXNQb2ludFNpemUoKTsKLSAg
ICBtRHluYW1pY0hMU0wtPmdldFBpeGVsU2hhZGVyT3V0cHV0S2V5KGRhdGEsIG1TdGF0ZSwgbWV0
YWRhdGEsICZtUGl4ZWxTaGFkZXJLZXkpOwotICAgIG1Vc2VzRnJhZ0RlcHRoID0gbWV0YWRhdGEu
dXNlc0ZyYWdEZXB0aCgpOworICAgICAgICBtVXNlc1BvaW50U2l6ZSA9IHZlcnRleFNoYWRlckQz
RC0+dXNlc1BvaW50U2l6ZSgpOworICAgICAgICBtRHluYW1pY0hMU0wtPmdldFBpeGVsU2hhZGVy
T3V0cHV0S2V5KGRhdGEsIG1TdGF0ZSwgbWV0YWRhdGEsICZtUGl4ZWxTaGFkZXJLZXkpOworICAg
ICAgICBtVXNlc0ZyYWdEZXB0aCA9IG1ldGFkYXRhLnVzZXNGcmFnRGVwdGgoKTsKIAotICAgIC8v
IENhY2hlIGlmIHdlIHVzZSBmbGF0IHNoYWRpbmcKLSAgICBtVXNlc0ZsYXRJbnRlcnBvbGF0aW9u
ID0gZmFsc2U7Ci0gICAgZm9yIChjb25zdCBhdXRvICZ2YXJ5aW5nIDogcGFja2VkVmFyeWluZ3Mp
Ci0gICAgewotICAgICAgICBpZiAodmFyeWluZy5pbnRlcnBvbGF0aW9uID09IHNoOjpJTlRFUlBP
TEFUSU9OX0ZMQVQpCisgICAgICAgIC8vIENhY2hlIGlmIHdlIHVzZSBmbGF0IHNoYWRpbmcKKyAg
ICAgICAgbVVzZXNGbGF0SW50ZXJwb2xhdGlvbiA9IChGaW5kRmxhdEludGVycG9sYXRpb25WYXJ5
aW5nKGZyYWdtZW50U2hhZGVyLT5nZXRWYXJ5aW5ncygpKSB8fAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZpbmRGbGF0SW50ZXJwb2xhdGlvblZhcnlpbmcodmVydGV4U2hhZGVy
LT5nZXRWYXJ5aW5ncygpKSk7CisKKyAgICAgICAgaWYgKG1SZW5kZXJlci0+Z2V0TWFqb3JTaGFk
ZXJNb2RlbCgpID49IDQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1Vc2VzRmxhdEludGVycG9s
YXRpb24gPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBtR2VvbWV0cnlT
aGFkZXJQcmVhbWJsZSA9CisgICAgICAgICAgICAgICAgbUR5bmFtaWNITFNMLT5nZW5lcmF0ZUdl
b21ldHJ5U2hhZGVyUHJlYW1ibGUocGFja2luZywgYnVpbHRpbnMpOwogICAgICAgICB9Ci0gICAg
fQogCi0gICAgaWYgKG1SZW5kZXJlci0+Z2V0TWFqb3JTaGFkZXJNb2RlbCgpID49IDQpCi0gICAg
ewotICAgICAgICB2YXJ5aW5nUGFja2luZy5lbmFibGVCdWlsdGlucyhTSEFERVJfR0VPTUVUUlks
IG1ldGFkYXRhKTsKLSAgICAgICAgbUdlb21ldHJ5U2hhZGVyUHJlYW1ibGUgPSBtRHluYW1pY0hM
U0wtPmdlbmVyYXRlR2VvbWV0cnlTaGFkZXJQcmVhbWJsZSh2YXJ5aW5nUGFja2luZyk7Ci0gICAg
fQorICAgICAgICBpbml0QXR0cmliTG9jYXRpb25zVG9EM0RTZW1hbnRpYygpOwogCi0gICAgaW5p
dEF0dHJpYkxvY2F0aW9uc1RvRDNEU2VtYW50aWMoKTsKKyAgICAgICAgZGVmaW5lVW5pZm9ybXNB
bmRBc3NpZ25SZWdpc3RlcnMoKTsKIAotICAgIGRlZmluZVVuaWZvcm1zQW5kQXNzaWduUmVnaXN0
ZXJzKCk7CisgICAgICAgIGdhdGhlclRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MocGFja2luZywg
YnVpbHRpbnNbU0hBREVSX1ZFUlRFWF0pOwogCi0gICAgZ2F0aGVyVHJhbnNmb3JtRmVlZGJhY2tW
YXJ5aW5ncyh2YXJ5aW5nUGFja2luZyk7CisgICAgICAgIExpbmtSZXN1bHQgcmVzdWx0ID0gY29t
cGlsZVByb2dyYW1FeGVjdXRhYmxlcyhkYXRhLCBpbmZvTG9nKTsKKyAgICAgICAgaWYgKHJlc3Vs
dC5pc0Vycm9yKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluZm9Mb2cgPDwgcmVzdWx0Lmdl
dEVycm9yKCkuZ2V0TWVzc2FnZSgpOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlIGlmICghcmVzdWx0LmdldFJlc3VsdCgpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpbmZvTG9nIDw8ICJGYWlsZWQgdG8gY3JlYXRlIEQzRCBzaGFkZXJzLiI7Cisg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAKLSAgICBMaW5rUmVzdWx0IHJl
c3VsdCA9IGNvbXBpbGVQcm9ncmFtRXhlY3V0YWJsZXMoZGF0YSwgaW5mb0xvZyk7Ci0gICAgaWYg
KHJlc3VsdC5lcnJvci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICBpbmZvTG9nIDw8IHJlc3Vs
dC5lcnJvci5nZXRNZXNzYWdlKCk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotICAg
IGVsc2UgaWYgKCFyZXN1bHQubGlua1N1Y2Nlc3MpCi0gICAgewotICAgICAgICBpbmZvTG9nIDw8
ICJGYWlsZWQgdG8gY3JlYXRlIEQzRCBzaGFkZXJzLiI7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgIGluaXRVbmlmb3JtQmxvY2tJbmZvKHZlcnRleFNoYWRlcik7CisgICAgICAgIGlu
aXRVbmlmb3JtQmxvY2tJbmZvKGZyYWdtZW50U2hhZGVyKTsKICAgICB9CiAKLSAgICBpbml0VW5p
Zm9ybUJsb2NrSW5mbygpOwotCi0gICAgcmV0dXJuIExpbmtSZXN1bHQodHJ1ZSwgZ2w6OkVycm9y
KEdMX05PX0VSUk9SKSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEdMYm9vbGVhbiBQcm9ncmFt
RDNEOjp2YWxpZGF0ZShjb25zdCBnbDo6Q2FwcyAmIC8qY2FwcyovLCBnbDo6SW5mb0xvZyAqIC8q
aW5mb0xvZyovKQpAQCAtMTQ1NSw0NCArMTU4MiwzNCBAQCBHTGJvb2xlYW4gUHJvZ3JhbUQzRDo6
dmFsaWRhdGUoY29uc3QgZ2w6OkNhcHMgJiAvKmNhcHMqLywgZ2w6OkluZm9Mb2cgKiAvKmluZm9M
bwogICAgIHJldHVybiBHTF9UUlVFOwogfQogCi12b2lkIFByb2dyYW1EM0Q6OmluaXRVbmlmb3Jt
QmxvY2tJbmZvKCkKK3ZvaWQgUHJvZ3JhbUQzRDo6aW5pdFVuaWZvcm1CbG9ja0luZm8oY29uc3Qg
Z2w6OlNoYWRlciAqc2hhZGVyKQogewotICAgIGNvbnN0IGdsOjpTaGFkZXIgKnZlcnRleFNoYWRl
ciA9IG1TdGF0ZS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpOwotCi0gICAgZm9yIChjb25zdCBz
aDo6SW50ZXJmYWNlQmxvY2sgJnZlcnRleEJsb2NrIDogdmVydGV4U2hhZGVyLT5nZXRJbnRlcmZh
Y2VCbG9ja3MoKSkKKyAgICBmb3IgKGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmaW50ZXJmYWNl
QmxvY2sgOiBzaGFkZXItPmdldEludGVyZmFjZUJsb2NrcygpKQogICAgIHsKLSAgICAgICAgaWYg
KCF2ZXJ0ZXhCbG9jay5zdGF0aWNVc2UgJiYgdmVydGV4QmxvY2subGF5b3V0ID09IHNoOjpCTE9D
S0xBWU9VVF9QQUNLRUQpCisgICAgICAgIGlmICghaW50ZXJmYWNlQmxvY2suc3RhdGljVXNlICYm
IGludGVyZmFjZUJsb2NrLmxheW91dCA9PSBzaDo6QkxPQ0tMQVlPVVRfUEFDS0VEKQogICAgICAg
ICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKG1CbG9ja0RhdGFTaXplcy5jb3VudCh2ZXJ0
ZXhCbG9jay5uYW1lKSA+IDApCisgICAgICAgIGlmIChtQmxvY2tEYXRhU2l6ZXMuY291bnQoaW50
ZXJmYWNlQmxvY2submFtZSkgPiAwKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAg
c2l6ZV90IGRhdGFTaXplICAgICAgICAgICAgICAgICAgID0gZ2V0VW5pZm9ybUJsb2NrSW5mbyh2
ZXJ0ZXhCbG9jayk7Ci0gICAgICAgIG1CbG9ja0RhdGFTaXplc1t2ZXJ0ZXhCbG9jay5uYW1lXSA9
IGRhdGFTaXplOwotICAgIH0KLQotICAgIGNvbnN0IGdsOjpTaGFkZXIgKmZyYWdtZW50U2hhZGVy
ID0gbVN0YXRlLmdldEF0dGFjaGVkRnJhZ21lbnRTaGFkZXIoKTsKLQotICAgIGZvciAoY29uc3Qg
c2g6OkludGVyZmFjZUJsb2NrICZmcmFnbWVudEJsb2NrIDogZnJhZ21lbnRTaGFkZXItPmdldElu
dGVyZmFjZUJsb2NrcygpKQotICAgIHsKLSAgICAgICAgaWYgKCFmcmFnbWVudEJsb2NrLnN0YXRp
Y1VzZSAmJiBmcmFnbWVudEJsb2NrLmxheW91dCA9PSBzaDo6QkxPQ0tMQVlPVVRfUEFDS0VEKQot
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKG1CbG9ja0RhdGFTaXplcy5jb3Vu
dChmcmFnbWVudEJsb2NrLm5hbWUpID4gMCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgIHNpemVfdCBkYXRhU2l6ZSAgICAgICAgICAgICAgICAgICAgID0gZ2V0VW5pZm9ybUJsb2Nr
SW5mbyhmcmFnbWVudEJsb2NrKTsKLSAgICAgICAgbUJsb2NrRGF0YVNpemVzW2ZyYWdtZW50Qmxv
Y2submFtZV0gPSBkYXRhU2l6ZTsKKyAgICAgICAgc2l6ZV90IGRhdGFTaXplICAgICAgICAgICAg
ICAgICAgICAgID0gZ2V0VW5pZm9ybUJsb2NrSW5mbyhpbnRlcmZhY2VCbG9jayk7CisgICAgICAg
IG1CbG9ja0RhdGFTaXplc1tpbnRlcmZhY2VCbG9jay5uYW1lXSA9IGRhdGFTaXplOwogICAgIH0K
IH0KIAotdm9pZCBQcm9ncmFtRDNEOjphc3NpZ25Vbmlmb3JtQmxvY2tSZWdpc3RlcnMoKQordm9p
ZCBQcm9ncmFtRDNEOjplbnN1cmVVbmlmb3JtQmxvY2tzSW5pdGlhbGl6ZWQoKQogewotICAgIG1E
M0RVbmlmb3JtQmxvY2tzLmNsZWFyKCk7CisgICAgLy8gTGF6eSBpbml0LgorICAgIGlmIChtU3Rh
dGUuZ2V0VW5pZm9ybUJsb2NrcygpLmVtcHR5KCkgfHwgIW1EM0RVbmlmb3JtQmxvY2tzLmVtcHR5
KCkpCisgICAgeworICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgLy8gQXNzaWduIHJlZ2lz
dGVycyBhbmQgdXBkYXRlIHNpemVzLgotICAgIGNvbnN0IFNoYWRlckQzRCAqdmVydGV4U2hhZGVy
RDNEICAgPSBHZXRJbXBsQXM8U2hhZGVyRDNEPihtU3RhdGUuZ2V0QXR0YWNoZWRWZXJ0ZXhTaGFk
ZXIoKSk7Ci0gICAgY29uc3QgU2hhZGVyRDNEICpmcmFnbWVudFNoYWRlckQzRCA9IEdldEltcGxB
czxTaGFkZXJEM0Q+KG1TdGF0ZS5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCkpOworICAgIGNv
bnN0IFNoYWRlckQzRCAqdmVydGV4U2hhZGVyRDNEID0gU2FmZUdldEltcGxBczxTaGFkZXJEM0Q+
KG1TdGF0ZS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpKTsKKyAgICBjb25zdCBTaGFkZXJEM0Qg
KmZyYWdtZW50U2hhZGVyRDNEID0KKyAgICAgICAgU2FmZUdldEltcGxBczxTaGFkZXJEM0Q+KG1T
dGF0ZS5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCkpOworICAgIGNvbnN0IFNoYWRlckQzRCAq
Y29tcHV0ZVNoYWRlckQzRCA9IFNhZmVHZXRJbXBsQXM8U2hhZGVyRDNEPihtU3RhdGUuZ2V0QXR0
YWNoZWRDb21wdXRlU2hhZGVyKCkpOwogCiAgICAgZm9yIChjb25zdCBnbDo6VW5pZm9ybUJsb2Nr
ICZ1bmlmb3JtQmxvY2sgOiBtU3RhdGUuZ2V0VW5pZm9ybUJsb2NrcygpKQogICAgIHsKQEAgLTE1
MDIsNiArMTYxOSw3IEBAIHZvaWQgUHJvZ3JhbUQzRDo6YXNzaWduVW5pZm9ybUJsb2NrUmVnaXN0
ZXJzKCkKIAogICAgICAgICBpZiAodW5pZm9ybUJsb2NrLnZlcnRleFN0YXRpY1VzZSkKICAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKHZlcnRleFNoYWRlckQzRCAhPSBudWxscHRyKTsKICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBiYXNlUmVnaXN0ZXIgPQogICAgICAgICAgICAgICAgIHZl
cnRleFNoYWRlckQzRC0+Z2V0SW50ZXJmYWNlQmxvY2tSZWdpc3Rlcih1bmlmb3JtQmxvY2submFt
ZSk7CiAgICAgICAgICAgICBkM2RVbmlmb3JtQmxvY2sudnNSZWdpc3RlckluZGV4ID0gYmFzZVJl
Z2lzdGVyICsgdW5pZm9ybUJsb2NrRWxlbWVudDsKQEAgLTE1MDksMTEgKzE2MjcsMjAgQEAgdm9p
ZCBQcm9ncmFtRDNEOjphc3NpZ25Vbmlmb3JtQmxvY2tSZWdpc3RlcnMoKQogCiAgICAgICAgIGlm
ICh1bmlmb3JtQmxvY2suZnJhZ21lbnRTdGF0aWNVc2UpCiAgICAgICAgIHsKKyAgICAgICAgICAg
IEFTU0VSVChmcmFnbWVudFNoYWRlckQzRCAhPSBudWxscHRyKTsKICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBiYXNlUmVnaXN0ZXIgPQogICAgICAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyRDNE
LT5nZXRJbnRlcmZhY2VCbG9ja1JlZ2lzdGVyKHVuaWZvcm1CbG9jay5uYW1lKTsKICAgICAgICAg
ICAgIGQzZFVuaWZvcm1CbG9jay5wc1JlZ2lzdGVySW5kZXggPSBiYXNlUmVnaXN0ZXIgKyB1bmlm
b3JtQmxvY2tFbGVtZW50OwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHVuaWZvcm1CbG9jay5j
b21wdXRlU3RhdGljVXNlKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoY29tcHV0ZVNo
YWRlckQzRCAhPSBudWxscHRyKTsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBiYXNlUmVnaXN0
ZXIgPQorICAgICAgICAgICAgICAgIGNvbXB1dGVTaGFkZXJEM0QtPmdldEludGVyZmFjZUJsb2Nr
UmVnaXN0ZXIodW5pZm9ybUJsb2NrLm5hbWUpOworICAgICAgICAgICAgZDNkVW5pZm9ybUJsb2Nr
LmNzUmVnaXN0ZXJJbmRleCA9IGJhc2VSZWdpc3RlciArIHVuaWZvcm1CbG9ja0VsZW1lbnQ7Cisg
ICAgICAgIH0KKwogICAgICAgICBtRDNEVW5pZm9ybUJsb2Nrcy5wdXNoX2JhY2soZDNkVW5pZm9y
bUJsb2NrKTsKICAgICB9CiB9CkBAIC0xNTIzLDYgKzE2NTAsNyBAQCB2b2lkIFByb2dyYW1EM0Q6
OmluaXRpYWxpemVVbmlmb3JtU3RvcmFnZSgpCiAgICAgLy8gQ29tcHV0ZSB0b3RhbCBkZWZhdWx0
IGJsb2NrIHNpemUKICAgICB1bnNpZ25lZCBpbnQgdmVydGV4UmVnaXN0ZXJzICAgPSAwOwogICAg
IHVuc2lnbmVkIGludCBmcmFnbWVudFJlZ2lzdGVycyA9IDA7CisgICAgdW5zaWduZWQgaW50IGNv
bXB1dGVSZWdpc3RlcnMgID0gMDsKICAgICBmb3IgKGNvbnN0IEQzRFVuaWZvcm0gKmQzZFVuaWZv
cm0gOiBtRDNEVW5pZm9ybXMpCiAgICAgewogICAgICAgICBpZiAoIWQzZFVuaWZvcm0tPmlzU2Ft
cGxlcigpKQpAQCAtMTUzNyw0MyArMTY2NSw0NCBAQCB2b2lkIFByb2dyYW1EM0Q6OmluaXRpYWxp
emVVbmlmb3JtU3RvcmFnZSgpCiAgICAgICAgICAgICAgICAgZnJhZ21lbnRSZWdpc3RlcnMgPSBz
dGQ6Om1heCgKICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRSZWdpc3RlcnMsIGQzZFVuaWZv
cm0tPnBzUmVnaXN0ZXJJbmRleCArIGQzZFVuaWZvcm0tPnJlZ2lzdGVyQ291bnQpOwogICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKGQzZFVuaWZvcm0tPmlzUmVmZXJlbmNlZEJ5Q29tcHV0
ZVNoYWRlcigpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbXB1dGVSZWdpc3Rl
cnMgPSBzdGQ6Om1heCgKKyAgICAgICAgICAgICAgICAgICAgY29tcHV0ZVJlZ2lzdGVycywgZDNk
VW5pZm9ybS0+Y3NSZWdpc3RlckluZGV4ICsgZDNkVW5pZm9ybS0+cmVnaXN0ZXJDb3VudCk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtVmVydGV4VW5pZm9ybVN0b3Jh
Z2UgICA9IG1SZW5kZXJlci0+Y3JlYXRlVW5pZm9ybVN0b3JhZ2UodmVydGV4UmVnaXN0ZXJzICog
MTZ1KTsKLSAgICBtRnJhZ21lbnRVbmlmb3JtU3RvcmFnZSA9IG1SZW5kZXJlci0+Y3JlYXRlVW5p
Zm9ybVN0b3JhZ2UoZnJhZ21lbnRSZWdpc3RlcnMgKiAxNnUpOworICAgIG1WZXJ0ZXhVbmlmb3Jt
U3RvcmFnZSA9CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxVbmlmb3JtU3RvcmFnZUQzRD4obVJl
bmRlcmVyLT5jcmVhdGVVbmlmb3JtU3RvcmFnZSh2ZXJ0ZXhSZWdpc3RlcnMgKiAxNnUpKTsKKyAg
ICBtRnJhZ21lbnRVbmlmb3JtU3RvcmFnZSA9IHN0ZDo6dW5pcXVlX3B0cjxVbmlmb3JtU3RvcmFn
ZUQzRD4oCisgICAgICAgIG1SZW5kZXJlci0+Y3JlYXRlVW5pZm9ybVN0b3JhZ2UoZnJhZ21lbnRS
ZWdpc3RlcnMgKiAxNnUpKTsKKyAgICBtQ29tcHV0ZVVuaWZvcm1TdG9yYWdlID0KKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFVuaWZvcm1TdG9yYWdlRDNEPihtUmVuZGVyZXItPmNyZWF0ZVVuaWZv
cm1TdG9yYWdlKGNvbXB1dGVSZWdpc3RlcnMgKiAxNnUpKTsKIH0KIAogZ2w6OkVycm9yIFByb2dy
YW1EM0Q6OmFwcGx5VW5pZm9ybXMoR0xlbnVtIGRyYXdNb2RlKQogewogICAgIEFTU0VSVCghbURp
cnR5U2FtcGxlck1hcHBpbmcpOwogCi0gICAgZ2w6OkVycm9yIGVycm9yID0gbVJlbmRlcmVyLT5h
cHBseVVuaWZvcm1zKCp0aGlzLCBkcmF3TW9kZSwgbUQzRFVuaWZvcm1zKTsKLSAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVycm9yOwotICAgIH0KKyAgICBB
TkdMRV9UUlkobVJlbmRlcmVyLT5hcHBseVVuaWZvcm1zKCp0aGlzLCBkcmF3TW9kZSwgbUQzRFVu
aWZvcm1zKSk7CiAKICAgICBmb3IgKEQzRFVuaWZvcm0gKmQzZFVuaWZvcm0gOiBtRDNEVW5pZm9y
bXMpCiAgICAgewogICAgICAgICBkM2RVbmlmb3JtLT5kaXJ0eSA9IGZhbHNlOwogICAgIH0KIAot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCiBnbDo6RXJyb3IgUHJvZ3JhbUQzRDo6YXBwbHlVbmlmb3JtQnVmZmVycyhjb25z
dCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKQogewogICAgIGlmIChtU3RhdGUuZ2V0VW5pZm9ybUJs
b2NrcygpLmVtcHR5KCkpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCi0gICAgLy8gTGF6
eSBpbml0LgotICAgIGlmIChtRDNEVW5pZm9ybUJsb2Nrcy5lbXB0eSgpKQotICAgIHsKLSAgICAg
ICAgYXNzaWduVW5pZm9ybUJsb2NrUmVnaXN0ZXJzKCk7Ci0gICAgfQorICAgIGVuc3VyZVVuaWZv
cm1CbG9ja3NJbml0aWFsaXplZCgpOwogCiAgICAgbVZlcnRleFVCT0NhY2hlLmNsZWFyKCk7CiAg
ICAgbUZyYWdtZW50VUJPQ2FjaGUuY2xlYXIoKTsKQEAgLTE3NzMsMjIgKzE5MDIsMzUgQEAgdm9p
ZCBQcm9ncmFtRDNEOjpzZXRVbmlmb3JtQmxvY2tCaW5kaW5nKEdMdWludCAvKnVuaWZvcm1CbG9j
a0luZGV4Ki8sCiB2b2lkIFByb2dyYW1EM0Q6OmRlZmluZVVuaWZvcm1zQW5kQXNzaWduUmVnaXN0
ZXJzKCkKIHsKICAgICBEM0RVbmlmb3JtTWFwIHVuaWZvcm1NYXA7Ci0gICAgY29uc3QgZ2w6OlNo
YWRlciAqdmVydGV4U2hhZGVyID0gbVN0YXRlLmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCk7Ci0g
ICAgZm9yIChjb25zdCBzaDo6VW5pZm9ybSAmdmVydGV4VW5pZm9ybSA6IHZlcnRleFNoYWRlci0+
Z2V0VW5pZm9ybXMoKSkKLQorICAgIGNvbnN0IGdsOjpTaGFkZXIgKmNvbXB1dGVTaGFkZXIgPSBt
U3RhdGUuZ2V0QXR0YWNoZWRDb21wdXRlU2hhZGVyKCk7CisgICAgaWYgKGNvbXB1dGVTaGFkZXIp
CiAgICAgewotICAgICAgICBpZiAodmVydGV4VW5pZm9ybS5zdGF0aWNVc2UpCisgICAgICAgIGZv
ciAoY29uc3Qgc2g6OlVuaWZvcm0gJmNvbXB1dGVVbmlmb3JtIDogY29tcHV0ZVNoYWRlci0+Z2V0
VW5pZm9ybXMoKSkKICAgICAgICAgewotICAgICAgICAgICAgZGVmaW5lVW5pZm9ybUJhc2UodmVy
dGV4U2hhZGVyLCB2ZXJ0ZXhVbmlmb3JtLCAmdW5pZm9ybU1hcCk7CisgICAgICAgICAgICBpZiAo
Y29tcHV0ZVVuaWZvcm0uc3RhdGljVXNlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGRlZmluZVVuaWZvcm1CYXNlKGNvbXB1dGVTaGFkZXIsIGNvbXB1dGVVbmlmb3JtLCAmdW5pZm9y
bU1hcCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBjb25zdCBnbDo6
U2hhZGVyICpmcmFnbWVudFNoYWRlciA9IG1TdGF0ZS5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVy
KCk7Ci0gICAgZm9yIChjb25zdCBzaDo6VW5pZm9ybSAmZnJhZ21lbnRVbmlmb3JtIDogZnJhZ21l
bnRTaGFkZXItPmdldFVuaWZvcm1zKCkpCisgICAgZWxzZQogICAgIHsKLSAgICAgICAgaWYgKGZy
YWdtZW50VW5pZm9ybS5zdGF0aWNVc2UpCisgICAgICAgIGNvbnN0IGdsOjpTaGFkZXIgKnZlcnRl
eFNoYWRlciA9IG1TdGF0ZS5nZXRBdHRhY2hlZFZlcnRleFNoYWRlcigpOworICAgICAgICBmb3Ig
KGNvbnN0IHNoOjpVbmlmb3JtICZ2ZXJ0ZXhVbmlmb3JtIDogdmVydGV4U2hhZGVyLT5nZXRVbmlm
b3JtcygpKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodmVydGV4VW5pZm9ybS5zdGF0aWNV
c2UpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZGVmaW5lVW5pZm9ybUJhc2UodmVy
dGV4U2hhZGVyLCB2ZXJ0ZXhVbmlmb3JtLCAmdW5pZm9ybU1hcCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBjb25zdCBnbDo6U2hhZGVyICpmcmFnbWVudFNoYWRlciA9IG1T
dGF0ZS5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCk7CisgICAgICAgIGZvciAoY29uc3Qgc2g6
OlVuaWZvcm0gJmZyYWdtZW50VW5pZm9ybSA6IGZyYWdtZW50U2hhZGVyLT5nZXRVbmlmb3Jtcygp
KQogICAgICAgICB7Ci0gICAgICAgICAgICBkZWZpbmVVbmlmb3JtQmFzZShmcmFnbWVudFNoYWRl
ciwgZnJhZ21lbnRVbmlmb3JtLCAmdW5pZm9ybU1hcCk7CisgICAgICAgICAgICBpZiAoZnJhZ21l
bnRVbmlmb3JtLnN0YXRpY1VzZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkZWZp
bmVVbmlmb3JtQmFzZShmcmFnbWVudFNoYWRlciwgZnJhZ21lbnRVbmlmb3JtLCAmdW5pZm9ybU1h
cCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE4MjIsNyArMTk2NCw3
IEBAIHZvaWQgUHJvZ3JhbUQzRDo6ZGVmaW5lVW5pZm9ybUJhc2UoY29uc3QgZ2w6OlNoYWRlciAq
c2hhZGVyLAogCiAgICAgdW5zaWduZWQgaW50IHN0YXJ0UmVnaXN0ZXIgPSBzaGFkZXJEM0QtPmdl
dFVuaWZvcm1SZWdpc3Rlcih1bmlmb3JtLm5hbWUpOwogICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1
dFR5cGUgPSBzaGFkZXJEM0QtPmdldENvbXBpbGVyT3V0cHV0VHlwZSgpOwotICAgIHNoOjpITFNM
QmxvY2tFbmNvZGVyIGVuY29kZXIoc2g6OkhMU0xCbG9ja0VuY29kZXI6OkdldFN0cmF0ZWd5Rm9y
KG91dHB1dFR5cGUpKTsKKyAgICBzaDo6SExTTEJsb2NrRW5jb2RlciBlbmNvZGVyKHNoOjpITFNM
QmxvY2tFbmNvZGVyOjpHZXRTdHJhdGVneUZvcihvdXRwdXRUeXBlKSwgdHJ1ZSk7CiAgICAgZW5j
b2Rlci5za2lwUmVnaXN0ZXJzKHN0YXJ0UmVnaXN0ZXIpOwogCiAgICAgZGVmaW5lVW5pZm9ybShz
aGFkZXItPmdldFR5cGUoKSwgdW5pZm9ybSwgdW5pZm9ybS5uYW1lLCAmZW5jb2RlciwgdW5pZm9y
bU1hcCk7CkBAIC0xOTE0LDExICsyMDU2LDE1IEBAIHZvaWQgUHJvZ3JhbUQzRDo6ZGVmaW5lVW5p
Zm9ybShHTGVudW0gc2hhZGVyVHlwZSwKICAgICAgICAgewogICAgICAgICAgICAgZDNkVW5pZm9y
bS0+cHNSZWdpc3RlckluZGV4ID0gcmVnOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UKKyAgICAg
ICAgZWxzZSBpZiAoc2hhZGVyVHlwZSA9PSBHTF9WRVJURVhfU0hBREVSKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBBU1NFUlQoc2hhZGVyVHlwZSA9PSBHTF9WRVJURVhfU0hBREVSKTsKICAgICAg
ICAgICAgIGQzZFVuaWZvcm0tPnZzUmVnaXN0ZXJJbmRleCA9IHJlZzsKICAgICAgICAgfQorICAg
ICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChzaGFkZXJUeXBlID09IEdM
X0NPTVBVVEVfU0hBREVSKTsKKyAgICAgICAgICAgIGQzZFVuaWZvcm0tPmNzUmVnaXN0ZXJJbmRl
eCA9IHJlZzsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIEFycmF5cyBhcmUgdHJlYXRlZCBhcyBh
Z2dyZWdhdGUgdHlwZXMKICAgICAgICAgaWYgKHVuaWZvcm0uaXNBcnJheSgpKQpAQCAtMjAyOSwx
MyArMjE3NSwxMyBAQCB2b2lkIFByb2dyYW1EM0Q6OnNldFVuaWZvcm1NYXRyaXhmdihHTGludCBs
b2NhdGlvbiwKICAgICAgICAgLy8gSW50ZXJuYWxseSBzdG9yZSBtYXRyaWNlcyBhcyB0cmFuc3Bv
c2VkIHZlcnNpb25zIHRvIGFjY29tb2RhdGUgSExTTCBtYXRyaXggaW5kZXhpbmcKICAgICAgICAg
aWYgKHRyYW5zcG9zZSA9PSBHTF9GQUxTRSkKICAgICAgICAgewotICAgICAgICAgICAgdGFyZ2V0
VW5pZm9ybS0+ZGlydHkgPSBUcmFuc3Bvc2VNYXRyaXg8R0xmbG9hdD4odGFyZ2V0LCB2YWx1ZSwg
NCwgcm93cywgcm93cywgY29scykgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGFyZ2V0VW5pZm9ybS0+ZGlydHk7CisgICAgICAgICAgICB0YXJnZXRVbmlmb3JtLT5kaXJ0
eSA9CisgICAgICAgICAgICAgICAgVHJhbnNwb3NlRXhwYW5kTWF0cml4PEdMZmxvYXQsIGNvbHMs
IHJvd3M+KHRhcmdldCwgdmFsdWUpIHx8IHRhcmdldFVuaWZvcm0tPmRpcnR5OwogICAgICAgICB9
CiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAgdGFyZ2V0VW5pZm9ybS0+ZGly
dHkgPQotICAgICAgICAgICAgICAgIEV4cGFuZE1hdHJpeDxHTGZsb2F0Pih0YXJnZXQsIHZhbHVl
LCA0LCByb3dzLCBjb2xzLCByb3dzKSB8fCB0YXJnZXRVbmlmb3JtLT5kaXJ0eTsKKyAgICAgICAg
ICAgICAgICBFeHBhbmRNYXRyaXg8R0xmbG9hdCwgY29scywgcm93cz4odGFyZ2V0LCB2YWx1ZSkg
fHwgdGFyZ2V0VW5pZm9ybS0+ZGlydHk7CiAgICAgICAgIH0KICAgICAgICAgdGFyZ2V0ICs9IHRh
cmdldE1hdHJpeFN0cmlkZTsKICAgICAgICAgdmFsdWUgKz0gY29scyAqIHJvd3M7CkBAIC0yMDQ4
LDcgKzIxOTQsNyBAQCBzaXplX3QgUHJvZ3JhbUQzRDo6Z2V0VW5pZm9ybUJsb2NrSW5mbyhjb25z
dCBzaDo6SW50ZXJmYWNlQmxvY2sgJmludGVyZmFjZUJsb2NrKQogCiAgICAgLy8gZGVmaW5lIG1l
bWJlciB1bmlmb3JtcwogICAgIHNoOjpTdGQxNDBCbG9ja0VuY29kZXIgc3RkMTQwRW5jb2RlcjsK
LSAgICBzaDo6SExTTEJsb2NrRW5jb2RlciBobHNsRW5jb2RlcihzaDo6SExTTEJsb2NrRW5jb2Rl
cjo6RU5DT0RFX1BBQ0tFRCk7CisgICAgc2g6OkhMU0xCbG9ja0VuY29kZXIgaGxzbEVuY29kZXIo
c2g6OkhMU0xCbG9ja0VuY29kZXI6OkVOQ09ERV9QQUNLRUQsIGZhbHNlKTsKICAgICBzaDo6Qmxv
Y2tMYXlvdXRFbmNvZGVyICplbmNvZGVyID0gbnVsbHB0cjsKIAogICAgIGlmIChpbnRlcmZhY2VC
bG9jay5sYXlvdXQgPT0gc2g6OkJMT0NLTEFZT1VUX1NUQU5EQVJEKQpAQCAtMjA4MCwyMiArMjIy
NiwzNyBAQCB2b2lkIFByb2dyYW1EM0Q6OmFzc2lnbkFsbFNhbXBsZXJSZWdpc3RlcnMoKQogdm9p
ZCBQcm9ncmFtRDNEOjphc3NpZ25TYW1wbGVyUmVnaXN0ZXJzKEQzRFVuaWZvcm0gKmQzZFVuaWZv
cm0pCiB7CiAgICAgQVNTRVJUKGQzZFVuaWZvcm0tPmlzU2FtcGxlcigpKTsKLSAgICBjb25zdCBT
aGFkZXJEM0QgKnZlcnRleFNoYWRlckQzRCAgID0gR2V0SW1wbEFzPFNoYWRlckQzRD4obVN0YXRl
LmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCkpOwotICAgIGNvbnN0IFNoYWRlckQzRCAqZnJhZ21l
bnRTaGFkZXJEM0QgPSBHZXRJbXBsQXM8U2hhZGVyRDNEPihtU3RhdGUuZ2V0QXR0YWNoZWRGcmFn
bWVudFNoYWRlcigpKTsKLSAgICBBU1NFUlQodmVydGV4U2hhZGVyRDNELT5oYXNVbmlmb3JtKGQz
ZFVuaWZvcm0pIHx8IGZyYWdtZW50U2hhZGVyRDNELT5oYXNVbmlmb3JtKGQzZFVuaWZvcm0pKTsK
LSAgICBpZiAodmVydGV4U2hhZGVyRDNELT5oYXNVbmlmb3JtKGQzZFVuaWZvcm0pKQorICAgIGNv
bnN0IGdsOjpTaGFkZXIgKmNvbXB1dGVTaGFkZXIgPSBtU3RhdGUuZ2V0QXR0YWNoZWRDb21wdXRl
U2hhZGVyKCk7CisgICAgaWYgKGNvbXB1dGVTaGFkZXIpCiAgICAgewotICAgICAgICBkM2RVbmlm
b3JtLT52c1JlZ2lzdGVySW5kZXggPSB2ZXJ0ZXhTaGFkZXJEM0QtPmdldFVuaWZvcm1SZWdpc3Rl
cihkM2RVbmlmb3JtLT5uYW1lKTsKLSAgICAgICAgQVNTRVJUKGQzZFVuaWZvcm0tPnZzUmVnaXN0
ZXJJbmRleCAhPSBHTF9JTlZBTElEX0lOREVYKTsKLSAgICAgICAgQXNzaWduU2FtcGxlcnMoZDNk
VW5pZm9ybS0+dnNSZWdpc3RlckluZGV4LCBkM2RVbmlmb3JtLT50eXBlLCBkM2RVbmlmb3JtLT5h
cnJheVNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgIG1TYW1wbGVyc1ZTLCAmbVVzZWRWZXJ0
ZXhTYW1wbGVyUmFuZ2UpOworICAgICAgICBjb25zdCBTaGFkZXJEM0QgKmNvbXB1dGVTaGFkZXJE
M0QgPSBHZXRJbXBsQXM8U2hhZGVyRDNEPihtU3RhdGUuZ2V0QXR0YWNoZWRDb21wdXRlU2hhZGVy
KCkpOworICAgICAgICBBU1NFUlQoY29tcHV0ZVNoYWRlckQzRC0+aGFzVW5pZm9ybShkM2RVbmlm
b3JtKSk7CisgICAgICAgIGQzZFVuaWZvcm0tPmNzUmVnaXN0ZXJJbmRleCA9IGNvbXB1dGVTaGFk
ZXJEM0QtPmdldFVuaWZvcm1SZWdpc3RlcihkM2RVbmlmb3JtLT5uYW1lKTsKKyAgICAgICAgQVNT
RVJUKGQzZFVuaWZvcm0tPmNzUmVnaXN0ZXJJbmRleCAhPSBHTF9JTlZBTElEX0lOREVYKTsKKyAg
ICAgICAgQXNzaWduU2FtcGxlcnMoZDNkVW5pZm9ybS0+Y3NSZWdpc3RlckluZGV4LCBkM2RVbmlm
b3JtLT50eXBlLCBkM2RVbmlmb3JtLT5hcnJheVNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
IG1TYW1wbGVyc0NTLCAmbVVzZWRDb21wdXRlU2FtcGxlclJhbmdlKTsKICAgICB9Ci0gICAgaWYg
KGZyYWdtZW50U2hhZGVyRDNELT5oYXNVbmlmb3JtKGQzZFVuaWZvcm0pKQorICAgIGVsc2UKICAg
ICB7Ci0gICAgICAgIGQzZFVuaWZvcm0tPnBzUmVnaXN0ZXJJbmRleCA9IGZyYWdtZW50U2hhZGVy
RDNELT5nZXRVbmlmb3JtUmVnaXN0ZXIoZDNkVW5pZm9ybS0+bmFtZSk7Ci0gICAgICAgIEFTU0VS
VChkM2RVbmlmb3JtLT5wc1JlZ2lzdGVySW5kZXggIT0gR0xfSU5WQUxJRF9JTkRFWCk7Ci0gICAg
ICAgIEFzc2lnblNhbXBsZXJzKGQzZFVuaWZvcm0tPnBzUmVnaXN0ZXJJbmRleCwgZDNkVW5pZm9y
bS0+dHlwZSwgZDNkVW5pZm9ybS0+YXJyYXlTaXplLAotICAgICAgICAgICAgICAgICAgICAgICBt
U2FtcGxlcnNQUywgJm1Vc2VkUGl4ZWxTYW1wbGVyUmFuZ2UpOworICAgICAgICBjb25zdCBTaGFk
ZXJEM0QgKnZlcnRleFNoYWRlckQzRCA9IEdldEltcGxBczxTaGFkZXJEM0Q+KG1TdGF0ZS5nZXRB
dHRhY2hlZFZlcnRleFNoYWRlcigpKTsKKyAgICAgICAgY29uc3QgU2hhZGVyRDNEICpmcmFnbWVu
dFNoYWRlckQzRCA9CisgICAgICAgICAgICBHZXRJbXBsQXM8U2hhZGVyRDNEPihtU3RhdGUuZ2V0
QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpKTsKKyAgICAgICAgQVNTRVJUKHZlcnRleFNoYWRlckQz
RC0+aGFzVW5pZm9ybShkM2RVbmlmb3JtKSB8fAorICAgICAgICAgICAgICAgZnJhZ21lbnRTaGFk
ZXJEM0QtPmhhc1VuaWZvcm0oZDNkVW5pZm9ybSkpOworICAgICAgICBpZiAodmVydGV4U2hhZGVy
RDNELT5oYXNVbmlmb3JtKGQzZFVuaWZvcm0pKQorICAgICAgICB7CisgICAgICAgICAgICBkM2RV
bmlmb3JtLT52c1JlZ2lzdGVySW5kZXggPSB2ZXJ0ZXhTaGFkZXJEM0QtPmdldFVuaWZvcm1SZWdp
c3RlcihkM2RVbmlmb3JtLT5uYW1lKTsKKyAgICAgICAgICAgIEFTU0VSVChkM2RVbmlmb3JtLT52
c1JlZ2lzdGVySW5kZXggIT0gR0xfSU5WQUxJRF9JTkRFWCk7CisgICAgICAgICAgICBBc3NpZ25T
YW1wbGVycyhkM2RVbmlmb3JtLT52c1JlZ2lzdGVySW5kZXgsIGQzZFVuaWZvcm0tPnR5cGUsIGQz
ZFVuaWZvcm0tPmFycmF5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TYW1wbGVy
c1ZTLCAmbVVzZWRWZXJ0ZXhTYW1wbGVyUmFuZ2UpOworICAgICAgICB9CisgICAgICAgIGlmIChm
cmFnbWVudFNoYWRlckQzRC0+aGFzVW5pZm9ybShkM2RVbmlmb3JtKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgZDNkVW5pZm9ybS0+cHNSZWdpc3RlckluZGV4ID0gZnJhZ21lbnRTaGFkZXJEM0Qt
PmdldFVuaWZvcm1SZWdpc3RlcihkM2RVbmlmb3JtLT5uYW1lKTsKKyAgICAgICAgICAgIEFTU0VS
VChkM2RVbmlmb3JtLT5wc1JlZ2lzdGVySW5kZXggIT0gR0xfSU5WQUxJRF9JTkRFWCk7CisgICAg
ICAgICAgICBBc3NpZ25TYW1wbGVycyhkM2RVbmlmb3JtLT5wc1JlZ2lzdGVySW5kZXgsIGQzZFVu
aWZvcm0tPnR5cGUsIGQzZFVuaWZvcm0tPmFycmF5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1TYW1wbGVyc1BTLCAmbVVzZWRQaXhlbFNhbXBsZXJSYW5nZSk7CisgICAgICAgIH0K
ICAgICB9CiB9CiAKQEAgLTIxMjIsMTkgKzIyODMsMjEgQEAgdm9pZCBQcm9ncmFtRDNEOjpBc3Np
Z25TYW1wbGVycyh1bnNpZ25lZCBpbnQgc3RhcnRTYW1wbGVySW5kZXgsCiAKIHZvaWQgUHJvZ3Jh
bUQzRDo6cmVzZXQoKQogewotICAgIFNhZmVEZWxldGVDb250YWluZXIobVZlcnRleEV4ZWN1dGFi
bGVzKTsKLSAgICBTYWZlRGVsZXRlQ29udGFpbmVyKG1QaXhlbEV4ZWN1dGFibGVzKTsKKyAgICBt
VmVydGV4RXhlY3V0YWJsZXMuY2xlYXIoKTsKKyAgICBtUGl4ZWxFeGVjdXRhYmxlcy5jbGVhcigp
OwogCi0gICAgZm9yIChhdXRvICZlbGVtZW50IDogbUdlb21ldHJ5RXhlY3V0YWJsZXMpCisgICAg
Zm9yIChhdXRvICZnZW9tZXRyeUV4ZWN1dGFibGUgOiBtR2VvbWV0cnlFeGVjdXRhYmxlcykKICAg
ICB7Ci0gICAgICAgIFNhZmVEZWxldGUoZWxlbWVudCk7CisgICAgICAgIGdlb21ldHJ5RXhlY3V0
YWJsZS5yZXNldChudWxscHRyKTsKICAgICB9CiAKKyAgICBtQ29tcHV0ZUV4ZWN1dGFibGUucmVz
ZXQobnVsbHB0cik7CisKICAgICBtVmVydGV4SExTTC5jbGVhcigpOwotICAgIG1WZXJ0ZXhXb3Jr
YXJvdW5kcyA9IEQzRENvbXBpbGVyV29ya2Fyb3VuZHMoKTsKKyAgICBtVmVydGV4V29ya2Fyb3Vu
ZHMgPSBhbmdsZTo6Q29tcGlsZXJXb3JrYXJvdW5kc0QzRCgpOwogCiAgICAgbVBpeGVsSExTTC5j
bGVhcigpOwotICAgIG1QaXhlbFdvcmthcm91bmRzID0gRDNEQ29tcGlsZXJXb3JrYXJvdW5kcygp
OworICAgIG1QaXhlbFdvcmthcm91bmRzID0gYW5nbGU6OkNvbXBpbGVyV29ya2Fyb3VuZHNEM0Qo
KTsKICAgICBtVXNlc0ZyYWdEZXB0aCA9IGZhbHNlOwogICAgIG1QaXhlbFNoYWRlcktleS5jbGVh
cigpOwogICAgIG1Vc2VzUG9pbnRTaXplID0gZmFsc2U7CkBAIC0yMTQzLDE0ICsyMzA2LDE3IEBA
IHZvaWQgUHJvZ3JhbUQzRDo6cmVzZXQoKQogICAgIFNhZmVEZWxldGVDb250YWluZXIobUQzRFVu
aWZvcm1zKTsKICAgICBtRDNEVW5pZm9ybUJsb2Nrcy5jbGVhcigpOwogCi0gICAgU2FmZURlbGV0
ZShtVmVydGV4VW5pZm9ybVN0b3JhZ2UpOwotICAgIFNhZmVEZWxldGUobUZyYWdtZW50VW5pZm9y
bVN0b3JhZ2UpOworICAgIG1WZXJ0ZXhVbmlmb3JtU3RvcmFnZS5yZXNldChudWxscHRyKTsKKyAg
ICBtRnJhZ21lbnRVbmlmb3JtU3RvcmFnZS5yZXNldChudWxscHRyKTsKKyAgICBtQ29tcHV0ZVVu
aWZvcm1TdG9yYWdlLnJlc2V0KG51bGxwdHIpOwogCiAgICAgbVNhbXBsZXJzUFMuY2xlYXIoKTsK
ICAgICBtU2FtcGxlcnNWUy5jbGVhcigpOworICAgIG1TYW1wbGVyc0NTLmNsZWFyKCk7CiAKICAg
ICBtVXNlZFZlcnRleFNhbXBsZXJSYW5nZSA9IDA7CiAgICAgbVVzZWRQaXhlbFNhbXBsZXJSYW5n
ZSAgPSAwOworICAgIG1Vc2VkQ29tcHV0ZVNhbXBsZXJSYW5nZSA9IDA7CiAgICAgbURpcnR5U2Ft
cGxlck1hcHBpbmcgICAgPSB0cnVlOwogCiAgICAgbUF0dHJpYkxvY2F0aW9uVG9EM0RTZW1hbnRp
Yy5maWxsKC0xKTsKQEAgLTIxOTMsNyArMjM1OSw3IEBAIHZvaWQgUHJvZ3JhbUQzRDo6dXBkYXRl
Q2FjaGVkSW5wdXRMYXlvdXQoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSkKICAgICBtQ2FjaGVkSW5w
dXRMYXlvdXQuY2xlYXIoKTsKICAgICBjb25zdCBhdXRvICZ2ZXJ0ZXhBdHRyaWJ1dGVzID0gc3Rh
dGUuZ2V0VmVydGV4QXJyYXkoKS0+Z2V0VmVydGV4QXR0cmlidXRlcygpOwogCi0gICAgZm9yICh1
bnNpZ25lZCBpbnQgbG9jYXRpb25JbmRleCA6IGFuZ2xlOjpJdGVyYXRlQml0U2V0KG1TdGF0ZS5n
ZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCkpKQorICAgIGZvciAodW5zaWduZWQgaW50IGxv
Y2F0aW9uSW5kZXggOiBJdGVyYXRlQml0U2V0KG1TdGF0ZS5nZXRBY3RpdmVBdHRyaWJMb2NhdGlv
bnNNYXNrKCkpKQogICAgIHsKICAgICAgICAgaW50IGQzZFNlbWFudGljID0gbUF0dHJpYkxvY2F0
aW9uVG9EM0RTZW1hbnRpY1tsb2NhdGlvbkluZGV4XTsKIApAQCAtMjIxMCwxMCArMjM3Niw5IEBA
IHZvaWQgUHJvZ3JhbUQzRDo6dXBkYXRlQ2FjaGVkSW5wdXRMYXlvdXQoY29uc3QgZ2w6OlN0YXRl
ICZzdGF0ZSkKICAgICB9CiB9CiAKLXZvaWQgUHJvZ3JhbUQzRDo6Z2F0aGVyVHJhbnNmb3JtRmVl
ZGJhY2tWYXJ5aW5ncyhjb25zdCBWYXJ5aW5nUGFja2luZyAmdmFyeWluZ1BhY2tpbmcpCit2b2lk
IFByb2dyYW1EM0Q6OmdhdGhlclRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoY29uc3QgZ2w6OlZh
cnlpbmdQYWNraW5nICZ2YXJ5aW5nUGFja2luZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCdWlsdGluSW5mbyAmYnVpbHRpbnMpCiB7Ci0g
ICAgY29uc3QgYXV0byAmYnVpbHRpbnMgPSB2YXJ5aW5nUGFja2luZy5idWlsdGlucyhTSEFERVJf
VkVSVEVYKTsKLQogICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2YXJ5aW5nU2VtYW50aWMgPQogICAg
ICAgICBHZXRWYXJ5aW5nU2VtYW50aWMobVJlbmRlcmVyLT5nZXRNYWpvclNoYWRlck1vZGVsKCks
IHVzZXNQb2ludFNpemUoKSk7CiAKQEAgLTIyNTAsNyArMjQxNSw5IEBAIHZvaWQgUHJvZ3JhbUQz
RDo6Z2F0aGVyVHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncyhjb25zdCBWYXJ5aW5nUGFja2luZyAm
dmFyeWluZ1BhCiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAg
ICBmb3IgKGNvbnN0IFBhY2tlZFZhcnlpbmdSZWdpc3RlciAmcmVnaXN0ZXJJbmZvIDogdmFyeWlu
Z1BhY2tpbmcuZ2V0UmVnaXN0ZXJMaXN0KCkpCisgICAgICAgICAgICBzaXplX3Qgc3Vic2NyaXB0
ICAgICA9IEdMX0lOVkFMSURfSU5ERVg7CisgICAgICAgICAgICBzdGQ6OnN0cmluZyBiYXNlTmFt
ZSA9IGdsOjpQYXJzZVJlc291cmNlTmFtZSh0ZlZhcnlpbmdOYW1lLCAmc3Vic2NyaXB0KTsKKyAg
ICAgICAgICAgIGZvciAoY29uc3QgYXV0byAmcmVnaXN0ZXJJbmZvIDogdmFyeWluZ1BhY2tpbmcu
Z2V0UmVnaXN0ZXJMaXN0KCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgY29uc3Qg
YXV0byAmdmFyeWluZyAgID0gKnJlZ2lzdGVySW5mby5wYWNrZWRWYXJ5aW5nLT52YXJ5aW5nOwog
ICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc3Bvc2VkVHlwZSA9IGdsOjpUcmFuc3Bvc2VNYXRy
aXhUeXBlKHZhcnlpbmcudHlwZSk7CkBAIC0yMjY1LDcgKzI0MzIsOCBAQCB2b2lkIFByb2dyYW1E
M0Q6OmdhdGhlclRyYW5zZm9ybUZlZWRiYWNrVmFyeWluZ3MoY29uc3QgVmFyeWluZ1BhY2tpbmcg
JnZhcnlpbmdQYQogCiAgICAgICAgICAgICAgICAgLy8gVGhlcmUgY2FuIGJlIG1vcmUgdGhhbiBv
bmUgcmVnaXN0ZXIgYXNzaWduZWQgdG8gYSBwYXJ0aWN1bGFyIHZhcnlpbmcsIGFuZCBlYWNoCiAg
ICAgICAgICAgICAgICAgLy8gcmVnaXN0ZXIgbmVlZHMgaXRzIG93biBzdHJlYW0gb3V0IGVudHJ5
LgotICAgICAgICAgICAgICAgIGlmICh0ZlZhcnlpbmdOYW1lID09IHZhcnlpbmcubmFtZSkKKyAg
ICAgICAgICAgICAgICBpZiAoYmFzZU5hbWUgPT0gcmVnaXN0ZXJJbmZvLnBhY2tlZFZhcnlpbmct
PnZhcnlpbmctPm5hbWUgJiYKKyAgICAgICAgICAgICAgICAgICAgKHN1YnNjcmlwdCA9PSBHTF9J
TlZBTElEX0lOREVYIHx8IHN1YnNjcmlwdCA9PSByZWdpc3RlckluZm8udmFyeWluZ0FycmF5SW5k
ZXgpKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgbVN0cmVhbU91dFZh
cnlpbmdzLnB1c2hfYmFjayhEM0RWYXJ5aW5nKAogICAgICAgICAgICAgICAgICAgICAgICAgdmFy
eWluZ1NlbWFudGljLCByZWdpc3RlckluZm8uc2VtYW50aWNJbmRleCwgY29tcG9uZW50Q291bnQs
IG91dHB1dFNsb3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvUHJvZ3JhbUQzRC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Qcm9ncmFtRDNELmgKaW5kZXggODhmZTQwMjBk
YjMuLjg0OWZiZDAwYzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1Byb2dyYW1EM0QuaApAQCAtMTcsNyAr
MTcsNyBAQAogI2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUltcGwuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvRHluYW1pY0hMU0wuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvV29y
a2Fyb3VuZHNEM0QuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9Xb3JrYXJvdW5kc0QzRC5oIgogCiBu
YW1lc3BhY2UgcngKIHsKQEAgLTQ0LDYgKzQ0LDcgQEAgc3RydWN0IEQzRFVuaWZvcm0gOiBhbmds
ZTo6Tm9uQ29weWFibGUKICAgICB1bnNpZ25lZCBpbnQgZWxlbWVudENvdW50KCkgY29uc3QgeyBy
ZXR1cm4gc3RkOjptYXgoMXUsIGFycmF5U2l6ZSk7IH0KICAgICBib29sIGlzUmVmZXJlbmNlZEJ5
VmVydGV4U2hhZGVyKCkgY29uc3Q7CiAgICAgYm9vbCBpc1JlZmVyZW5jZWRCeUZyYWdtZW50U2hh
ZGVyKCkgY29uc3Q7CisgICAgYm9vbCBpc1JlZmVyZW5jZWRCeUNvbXB1dGVTaGFkZXIoKSBjb25z
dDsKIAogICAgIC8vIER1cGxpY2F0ZWQgZnJvbSB0aGUgR0wgbGF5ZXIKICAgICBHTGVudW0gdHlw
ZTsKQEAgLTYwLDYgKzYxLDcgQEAgc3RydWN0IEQzRFVuaWZvcm0gOiBhbmdsZTo6Tm9uQ29weWFi
bGUKICAgICAvLyBSZWdpc3RlciBpbmZvcm1hdGlvbi4KICAgICB1bnNpZ25lZCBpbnQgdnNSZWdp
c3RlckluZGV4OwogICAgIHVuc2lnbmVkIGludCBwc1JlZ2lzdGVySW5kZXg7CisgICAgdW5zaWdu
ZWQgaW50IGNzUmVnaXN0ZXJJbmRleDsKICAgICB1bnNpZ25lZCBpbnQgcmVnaXN0ZXJDb3VudDsK
IAogICAgIC8vIFJlZ2lzdGVyICJlbGVtZW50cyIgYXJlIHVzZWQgZm9yIHVuaWZvcm0gc3RydWN0
cyBpbiBFUzMsIHRvIGFwcHJvcHJpYXRlbHkgaWRlbnRpZnkgc2luZ2xlCkBAIC03MCwxNCArNzIs
MjIgQEAgc3RydWN0IEQzRFVuaWZvcm0gOiBhbmdsZTo6Tm9uQ29weWFibGUKIAogc3RydWN0IEQz
RFVuaWZvcm1CbG9jawogewotICAgIEQzRFVuaWZvcm1CbG9jaygpIDogdnNSZWdpc3RlckluZGV4
KEdMX0lOVkFMSURfSU5ERVgpLCBwc1JlZ2lzdGVySW5kZXgoR0xfSU5WQUxJRF9JTkRFWCkge30K
KyAgICBEM0RVbmlmb3JtQmxvY2soKQorICAgICAgICA6IHZzUmVnaXN0ZXJJbmRleChHTF9JTlZB
TElEX0lOREVYKSwKKyAgICAgICAgICBwc1JlZ2lzdGVySW5kZXgoR0xfSU5WQUxJRF9JTkRFWCks
CisgICAgICAgICAgY3NSZWdpc3RlckluZGV4KEdMX0lOVkFMSURfSU5ERVgpCisgICAgeworICAg
IH0KIAogICAgIGJvb2wgdmVydGV4U3RhdGljVXNlKCkgY29uc3QgeyByZXR1cm4gdnNSZWdpc3Rl
ckluZGV4ICE9IEdMX0lOVkFMSURfSU5ERVg7IH0KIAogICAgIGJvb2wgZnJhZ21lbnRTdGF0aWNV
c2UoKSBjb25zdCB7IHJldHVybiBwc1JlZ2lzdGVySW5kZXggIT0gR0xfSU5WQUxJRF9JTkRFWDsg
fQogCisgICAgYm9vbCBjb21wdXRlU3RhdGljVXNlKCkgY29uc3QgeyByZXR1cm4gY3NSZWdpc3Rl
ckluZGV4ICE9IEdMX0lOVkFMSURfSU5ERVg7IH0KKwogICAgIHVuc2lnbmVkIGludCB2c1JlZ2lz
dGVySW5kZXg7CiAgICAgdW5zaWduZWQgaW50IHBzUmVnaXN0ZXJJbmRleDsKKyAgICB1bnNpZ25l
ZCBpbnQgY3NSZWdpc3RlckluZGV4OwogfTsKIAogc3RydWN0IEQzRFZhcnlpbmcgZmluYWwKQEAg
LTE0OCw5ICsxNTgsMTIgQEAgY2xhc3MgUHJvZ3JhbUQzRCA6IHB1YmxpYyBQcm9ncmFtSW1wbAog
ICAgIGJvb2wgdXNlc0dlb21ldHJ5U2hhZGVyKEdMZW51bSBkcmF3TW9kZSkgY29uc3Q7CiAgICAg
Ym9vbCB1c2VzSW5zdGFuY2VkUG9pbnRTcHJpdGVFbXVsYXRpb24oKSBjb25zdDsKIAotICAgIExp
bmtSZXN1bHQgbG9hZChnbDo6SW5mb0xvZyAmaW5mb0xvZywgZ2w6OkJpbmFyeUlucHV0U3RyZWFt
ICpzdHJlYW0pIG92ZXJyaWRlOworICAgIExpbmtSZXN1bHQgbG9hZChjb25zdCBDb250ZXh0SW1w
bCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgIGdsOjpJbmZvTG9nICZpbmZvTG9n
LAorICAgICAgICAgICAgICAgICAgICBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkgb3Zl
cnJpZGU7CiAgICAgZ2w6OkVycm9yIHNhdmUoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqc3RyZWFt
KSBvdmVycmlkZTsKICAgICB2b2lkIHNldEJpbmFyeVJldHJpZXZhYmxlSGludChib29sIHJldHJp
ZXZhYmxlKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFNlcGFyYWJsZShib29sIHNlcGFyYWJsZSkg
b3ZlcnJpZGU7CiAKICAgICBnbDo6RXJyb3IgZ2V0UGl4ZWxFeGVjdXRhYmxlRm9yRnJhbWVidWZm
ZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmYm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckV4ZWN1dGFibGVEM0QgKipvdXRFeGVjdHVhYmxl
KTsKQEAgLTE2NCw4ICsxNzcsMTMgQEAgY2xhc3MgUHJvZ3JhbUQzRCA6IHB1YmxpYyBQcm9ncmFt
SW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBkcmF3TW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICoqb3V0RXhlY3V0YWJsZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SW5mb0xv
ZyAqaW5mb0xvZyk7CisgICAgZ2w6OkVycm9yIGdldENvbXB1dGVFeGVjdXRhYmxlKGNvbnN0IGds
OjpDb250ZXh0U3RhdGUgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFNoYWRlckV4ZWN1dGFibGVEM0QgKipvdXRFeGVjdXRhYmxlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBnbDo6SW5mb0xvZyAqaW5mb0xvZyk7CiAKLSAgICBMaW5rUmVzdWx0
IGxpbmsoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgZ2w6OkluZm9Mb2cgJmluZm9Mb2cp
IG92ZXJyaWRlOworICAgIExpbmtSZXN1bHQgbGluayhDb250ZXh0SW1wbCAqY29udGV4dEltcGws
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpWYXJ5aW5nUGFja2luZyAmcGFja2luZywK
KyAgICAgICAgICAgICAgICAgICAgZ2w6OkluZm9Mb2cgJmluZm9Mb2cpIG92ZXJyaWRlOwogICAg
IEdMYm9vbGVhbiB2YWxpZGF0ZShjb25zdCBnbDo6Q2FwcyAmY2FwcywgZ2w6OkluZm9Mb2cgKmlu
Zm9Mb2cpIG92ZXJyaWRlOwogCiAgICAgYm9vbCBnZXRVbmlmb3JtQmxvY2tTaXplKGNvbnN0IHN0
ZDo6c3RyaW5nICZibG9ja05hbWUsIHNpemVfdCAqc2l6ZU91dCkgY29uc3Qgb3ZlcnJpZGU7CkBA
IC0yMzIsOCArMjUwLDE4IEBAIGNsYXNzIFByb2dyYW1EM0QgOiBwdWJsaWMgUHJvZ3JhbUltcGwK
IAogICAgIHZvaWQgc2V0VW5pZm9ybUJsb2NrQmluZGluZyhHTHVpbnQgdW5pZm9ybUJsb2NrSW5k
ZXgsIEdMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKSBvdmVycmlkZTsKIAotICAgIGNvbnN0IFVu
aWZvcm1TdG9yYWdlRDNEICZnZXRWZXJ0ZXhVbmlmb3JtU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJu
ICptVmVydGV4VW5pZm9ybVN0b3JhZ2U7IH0KLSAgICBjb25zdCBVbmlmb3JtU3RvcmFnZUQzRCAm
Z2V0RnJhZ21lbnRVbmlmb3JtU3RvcmFnZSgpIGNvbnN0IHsgcmV0dXJuICptRnJhZ21lbnRVbmlm
b3JtU3RvcmFnZTsgfQorICAgIGNvbnN0IFVuaWZvcm1TdG9yYWdlRDNEICZnZXRWZXJ0ZXhVbmlm
b3JtU3RvcmFnZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gKm1WZXJ0ZXhVbmlmb3Jt
U3RvcmFnZS5nZXQoKTsKKyAgICB9CisgICAgY29uc3QgVW5pZm9ybVN0b3JhZ2VEM0QgJmdldEZy
YWdtZW50VW5pZm9ybVN0b3JhZ2UoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICptRnJh
Z21lbnRVbmlmb3JtU3RvcmFnZS5nZXQoKTsKKyAgICB9CisgICAgY29uc3QgVW5pZm9ybVN0b3Jh
Z2VEM0QgJmdldENvbXB1dGVVbmlmb3JtU3RvcmFnZSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gKm1Db21wdXRlVW5pZm9ybVN0b3JhZ2UuZ2V0KCk7CisgICAgfQogCiAgICAgdW5zaWdu
ZWQgaW50IGdldFNlcmlhbCgpIGNvbnN0OwogCkBAIC0yNDgsNiArMjc2LDEyIEBAIGNsYXNzIFBy
b2dyYW1EM0QgOiBwdWJsaWMgUHJvZ3JhbUltcGwKICAgICBib29sIGlzU2FtcGxlck1hcHBpbmdE
aXJ0eSgpIHsgcmV0dXJuIG1EaXJ0eVNhbXBsZXJNYXBwaW5nOyB9CiAKICAgcHJpdmF0ZToKKyAg
ICAvLyBUaGVzZSBmb3J3YXJkLWRlY2xhcmVkIHRhc2tzIGFyZSB1c2VkIGZvciBtdWx0aS10aHJl
YWQgc2hhZGVyIGNvbXBpbGVzLgorICAgIGNsYXNzIEdldEV4ZWN1dGFibGVUYXNrOworICAgIGNs
YXNzIEdldFZlcnRleEV4ZWN1dGFibGVUYXNrOworICAgIGNsYXNzIEdldFBpeGVsRXhlY3V0YWJs
ZVRhc2s7CisgICAgY2xhc3MgR2V0R2VvbWV0cnlFeGVjdXRhYmxlVGFzazsKKwogICAgIGNsYXNz
IFZlcnRleEV4ZWN1dGFibGUKICAgICB7CiAgICAgICBwdWJsaWM6CkBAIC0zNDIsMzEgKzM3Niwz
NCBAQCBjbGFzcyBQcm9ncmFtRDNEIDogcHVibGljIFByb2dyYW1JbXBsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldFVuaWZvcm1UeXBlKTsKIAogICAgIExpbmtSZXN1
bHQgY29tcGlsZVByb2dyYW1FeGVjdXRhYmxlcyhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRh
LCBnbDo6SW5mb0xvZyAmaW5mb0xvZyk7CisgICAgTGlua1Jlc3VsdCBjb21waWxlQ29tcHV0ZUV4
ZWN1dGFibGUoZ2w6OkluZm9Mb2cgJmluZm9Mb2cpOwogCi0gICAgdm9pZCBnYXRoZXJUcmFuc2Zv
cm1GZWVkYmFja1ZhcnlpbmdzKGNvbnN0IFZhcnlpbmdQYWNraW5nICZ2YXJ5aW5ncyk7CisgICAg
dm9pZCBnYXRoZXJUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmdzKGNvbnN0IGdsOjpWYXJ5aW5nUGFj
a2luZyAmdmFyeWluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEJ1aWx0aW5JbmZvICZidWlsdGlucyk7CiAgICAgRDNEVW5pZm9ybSAqZ2V0RDNEVW5p
Zm9ybUJ5TmFtZShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSk7CiAgICAgRDNEVW5pZm9ybSAqZ2V0
RDNEVW5pZm9ybUZyb21Mb2NhdGlvbihHTGludCBsb2NhdGlvbik7CiAKICAgICB2b2lkIGluaXRB
dHRyaWJMb2NhdGlvbnNUb0QzRFNlbWFudGljKCk7CiAKICAgICB2b2lkIHJlc2V0KCk7Ci0gICAg
dm9pZCBhc3NpZ25Vbmlmb3JtQmxvY2tSZWdpc3RlcnMoKTsKKyAgICB2b2lkIGVuc3VyZVVuaWZv
cm1CbG9ja3NJbml0aWFsaXplZCgpOwogCi0gICAgdm9pZCBpbml0VW5pZm9ybUJsb2NrSW5mbygp
OworICAgIHZvaWQgaW5pdFVuaWZvcm1CbG9ja0luZm8oY29uc3QgZ2w6OlNoYWRlciAqc2hhZGVy
KTsKICAgICBzaXplX3QgZ2V0VW5pZm9ybUJsb2NrSW5mbyhjb25zdCBzaDo6SW50ZXJmYWNlQmxv
Y2sgJmludGVyZmFjZUJsb2NrKTsKIAogICAgIFJlbmRlcmVyRDNEICptUmVuZGVyZXI7CiAgICAg
RHluYW1pY0hMU0wgKm1EeW5hbWljSExTTDsKIAotICAgIHN0ZDo6dmVjdG9yPFZlcnRleEV4ZWN1
dGFibGUgKj4gbVZlcnRleEV4ZWN1dGFibGVzOwotICAgIHN0ZDo6dmVjdG9yPFBpeGVsRXhlY3V0
YWJsZSAqPiBtUGl4ZWxFeGVjdXRhYmxlczsKLSAgICBzdGQ6OnZlY3RvcjxTaGFkZXJFeGVjdXRh
YmxlRDNEICo+IG1HZW9tZXRyeUV4ZWN1dGFibGVzOworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxWZXJ0ZXhFeGVjdXRhYmxlPj4gbVZlcnRleEV4ZWN1dGFibGVzOworICAgIHN0ZDo6
dmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxQaXhlbEV4ZWN1dGFibGU+PiBtUGl4ZWxFeGVjdXRhYmxl
czsKKyAgICBzdGQ6OnZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8U2hhZGVyRXhlY3V0YWJsZUQzRD4+
IG1HZW9tZXRyeUV4ZWN1dGFibGVzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFkZXJFeGVjdXRh
YmxlRDNEPiBtQ29tcHV0ZUV4ZWN1dGFibGU7CiAKICAgICBzdGQ6OnN0cmluZyBtVmVydGV4SExT
TDsKLSAgICBEM0RDb21waWxlcldvcmthcm91bmRzIG1WZXJ0ZXhXb3JrYXJvdW5kczsKKyAgICBh
bmdsZTo6Q29tcGlsZXJXb3JrYXJvdW5kc0QzRCBtVmVydGV4V29ya2Fyb3VuZHM7CiAKICAgICBz
dGQ6OnN0cmluZyBtUGl4ZWxITFNMOwotICAgIEQzRENvbXBpbGVyV29ya2Fyb3VuZHMgbVBpeGVs
V29ya2Fyb3VuZHM7CisgICAgYW5nbGU6OkNvbXBpbGVyV29ya2Fyb3VuZHNEM0QgbVBpeGVsV29y
a2Fyb3VuZHM7CiAgICAgYm9vbCBtVXNlc0ZyYWdEZXB0aDsKICAgICBzdGQ6OnZlY3RvcjxQaXhl
bFNoYWRlck91dHB1dFZhcmlhYmxlPiBtUGl4ZWxTaGFkZXJLZXk7CiAKQEAgLTM3OCwxMyArNDE1
LDE2IEBAIGNsYXNzIFByb2dyYW1EM0QgOiBwdWJsaWMgUHJvZ3JhbUltcGwKICAgICBib29sIG1V
c2VzUG9pbnRTaXplOwogICAgIGJvb2wgbVVzZXNGbGF0SW50ZXJwb2xhdGlvbjsKIAotICAgIFVu
aWZvcm1TdG9yYWdlRDNEICptVmVydGV4VW5pZm9ybVN0b3JhZ2U7Ci0gICAgVW5pZm9ybVN0b3Jh
Z2VEM0QgKm1GcmFnbWVudFVuaWZvcm1TdG9yYWdlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxVbmlm
b3JtU3RvcmFnZUQzRD4gbVZlcnRleFVuaWZvcm1TdG9yYWdlOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxVbmlmb3JtU3RvcmFnZUQzRD4gbUZyYWdtZW50VW5pZm9ybVN0b3JhZ2U7CisgICAgc3RkOjp1
bmlxdWVfcHRyPFVuaWZvcm1TdG9yYWdlRDNEPiBtQ29tcHV0ZVVuaWZvcm1TdG9yYWdlOwogCiAg
ICAgc3RkOjp2ZWN0b3I8U2FtcGxlcj4gbVNhbXBsZXJzUFM7CiAgICAgc3RkOjp2ZWN0b3I8U2Ft
cGxlcj4gbVNhbXBsZXJzVlM7CisgICAgc3RkOjp2ZWN0b3I8U2FtcGxlcj4gbVNhbXBsZXJzQ1M7
CiAgICAgR0x1aW50IG1Vc2VkVmVydGV4U2FtcGxlclJhbmdlOwogICAgIEdMdWludCBtVXNlZFBp
eGVsU2FtcGxlclJhbmdlOworICAgIEdMdWludCBtVXNlZENvbXB1dGVTYW1wbGVyUmFuZ2U7CiAg
ICAgYm9vbCBtRGlydHlTYW1wbGVyTWFwcGluZzsKIAogICAgIC8vIENhY2hlIGZvciBnZXRQaXhl
bEV4ZWN1dGFibGVGb3JGcmFtZWJ1ZmZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJlckQzRC5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1JlbmRlcmVyRDNELmNw
cAppbmRleCBlN2UyMmVmYzUxNS4uYTUzNTMxNmZlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyZXJEM0QuY3BwCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvUmVu
ZGVyZXJEM0QuY3BwCkBAIC0zNSw3ICszNSw4IEBAIFJlbmRlcmVyRDNEOjpSZW5kZXJlckQzRChl
Z2w6OkRpc3BsYXkgKmRpc3BsYXkpCiAgICAgICBtQ2Fwc0luaXRpYWxpemVkKGZhbHNlKSwKICAg
ICAgIG1Xb3JrYXJvdW5kc0luaXRpYWxpemVkKGZhbHNlKSwKICAgICAgIG1EaXNqb2ludChmYWxz
ZSksCi0gICAgICBtRGV2aWNlTG9zdChmYWxzZSkKKyAgICAgIG1EZXZpY2VMb3N0KGZhbHNlKSwK
KyAgICAgIG1Xb3JrZXJUaHJlYWRQb29sKDQpCiB7CiB9CiAKQEAgLTEwNiw2ICsxMDcsOCBAQCBn
bDo6RXJyb3IgUmVuZGVyZXJEM0Q6OmFwcGx5VGV4dHVyZXMoR0xJbXBsRmFjdG9yeSAqaW1wbEZh
Y3RvcnksCiAKICAgICBBU1NFUlQoIXByb2dyYW1EM0QtPmlzU2FtcGxlck1hcHBpbmdEaXJ0eSgp
KTsKIAorICAgIC8vIFRPRE8oam1hZGlsbCk6IFVzZSB0aGUgUHJvZ3JhbSdzIHNhbXBsZXIgYmlu
ZGluZ3MuCisKICAgICB1bnNpZ25lZCBpbnQgc2FtcGxlclJhbmdlID0gcHJvZ3JhbUQzRC0+Z2V0
VXNlZFNhbXBsZXJSYW5nZShzaGFkZXJUeXBlKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBzYW1w
bGVySW5kZXggPSAwOyBzYW1wbGVySW5kZXggPCBzYW1wbGVyUmFuZ2U7IHNhbXBsZXJJbmRleCsr
KQogICAgIHsKQEAgLTE3OSwxMCArMTgyLDggQEAgYm9vbCBSZW5kZXJlckQzRDo6c2tpcERyYXco
Y29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgR0xlbnVtIGRyYXdNb2RlKQogICAgICAgICAv
LyB1bmRlZmluZWQgd2hlbiBub3Qgd3JpdHRlbiwganVzdCBza2lwIGRyYXdpbmcgdG8gYXZvaWQg
dW5leHBlY3RlZCByZXN1bHRzLgogICAgICAgICBpZiAoIXVzZXNQb2ludFNpemUgJiYgIXN0YXRl
LmlzVHJhbnNmb3JtRmVlZGJhY2tBY3RpdmVVbnBhdXNlZCgpKQogICAgICAgICB7Ci0gICAgICAg
ICAgICAvLyBUaGlzIGlzIHN0aWN0bHkgc3BlYWtpbmcgbm90IGFuIGVycm9yLCBidXQgZGV2ZWxv
cGVycyBzaG91bGQgYmUKLSAgICAgICAgICAgIC8vIG5vdGlmaWVkIG9mIHJpc2tpbmcgdW5kZWZp
bmVkIGJlaGF2aW9yLgotICAgICAgICAgICAgRVJSKCJQb2ludCByZW5kZXJpbmcgd2l0aG91dCB3
cml0aW5nIHRvIGdsX1BvaW50U2l6ZS4iKTsKLQorICAgICAgICAgICAgLy8gTm90aWZ5IGRldmVs
b3BlcnMgb2Ygcmlza2luZyB1bmRlZmluZWQgYmVoYXZpb3IuCisgICAgICAgICAgICBXQVJOKCkg
PDwgIlBvaW50IHJlbmRlcmluZyB3aXRob3V0IHdyaXRpbmcgdG8gZ2xfUG9pbnRTaXplLiI7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTI1NSwxOSArMjU2
LDE5IEBAIGdsOjpUZXh0dXJlICpSZW5kZXJlckQzRDo6Z2V0SW5jb21wbGV0ZVRleHR1cmUoR0xJ
bXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksIEdMZW51CiAgICAgICAgIC8vIFNraXAgdGhlIEFQSSBs
YXllciB0byBhdm9pZCBuZWVkaW5nIHRvIHBhc3MgdGhlIENvbnRleHQgYW5kIG1lc3Mgd2l0aCBk
aXJ0eSBiaXRzLgogICAgICAgICBnbDo6VGV4dHVyZSAqdCA9CiAgICAgICAgICAgICBuZXcgZ2w6
OlRleHR1cmUoaW1wbEZhY3RvcnksIHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCks
IGNyZWF0ZVR5cGUpOwotICAgICAgICB0LT5zZXRTdG9yYWdlKGNyZWF0ZVR5cGUsIDEsIEdMX1JH
QkE4LCBjb2xvclNpemUpOworICAgICAgICB0LT5zZXRTdG9yYWdlKG51bGxwdHIsIGNyZWF0ZVR5
cGUsIDEsIEdMX1JHQkE4LCBjb2xvclNpemUpOwogICAgICAgICBpZiAodHlwZSA9PSBHTF9URVhU
VVJFX0NVQkVfTUFQKQogICAgICAgICB7CiAgICAgICAgICAgICBmb3IgKEdMZW51bSBmYWNlID0g
R0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOyBmYWNlIDw9IEdMX1RFWFRVUkVfQ1VCRV9N
QVBfTkVHQVRJVkVfWjsgZmFjZSsrKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHQt
PmdldEltcGxlbWVudGF0aW9uKCktPnNldFN1YkltYWdlKGZhY2UsIDAsIGFyZWEsIEdMX1JHQkE4
LCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVucGFjaywgY29sb3IpOworICAgICAgICAgICAgICAgIHQtPmdldElt
cGxlbWVudGF0aW9uKCktPnNldFN1YkltYWdlKG51bGxwdHIsIGZhY2UsIDAsIGFyZWEsIEdMX1JH
QkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX0JZVEUsIHVucGFjaywgY29sb3IpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgdC0+Z2V0SW1wbGVtZW50
YXRpb24oKS0+c2V0U3ViSW1hZ2UoY3JlYXRlVHlwZSwgMCwgYXJlYSwgR0xfUkdCQTgsIEdMX1VO
U0lHTkVEX0JZVEUsIHVucGFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbG9yKTsKKyAgICAgICAgICAgIHQtPmdldEltcGxlbWVudGF0aW9uKCkt
PnNldFN1YkltYWdlKG51bGxwdHIsIGNyZWF0ZVR5cGUsIDAsIGFyZWEsIEdMX1JHQkE4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURf
QllURSwgdW5wYWNrLCBjb2xvcik7CiAgICAgICAgIH0KICAgICAgICAgbUluY29tcGxldGVUZXh0
dXJlc1t0eXBlXS5zZXQodCk7CiAgICAgfQpAQCAtMzY5LDQgKzM3MCw5IEBAIGNvbnN0IGdsOjpM
aW1pdGF0aW9ucyAmUmVuZGVyZXJEM0Q6OmdldE5hdGl2ZUxpbWl0YXRpb25zKCkgY29uc3QKICAg
ICByZXR1cm4gbU5hdGl2ZUxpbWl0YXRpb25zOwogfQogCithbmdsZTo6V29ya2VyVGhyZWFkUG9v
bCAqUmVuZGVyZXJEM0Q6OmdldFdvcmtlclRocmVhZFBvb2woKQoreworICAgIHJldHVybiAmbVdv
cmtlclRocmVhZFBvb2w7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJlckQz
RC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9S
ZW5kZXJlckQzRC5oCmluZGV4IDkwMjgyY2E2YjY0Li5kYmE1NDUzMDhiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJl
ckQzRC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvUmVuZGVyZXJEM0QuaApAQCAtOSw2ICs5LDggQEAKICNpZm5kZWYgTElCQU5HTEVfUkVO
REVSRVJfRDNEX1JFTkRFUkVSRDNEX0hfCiAjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX0QzRF9S
RU5ERVJFUkQzRF9IXwogCisjaW5jbHVkZSA8YXJyYXk+CisKICNpbmNsdWRlICJjb21tb24vZGVi
dWcuaCIKICNpbmNsdWRlICJjb21tb24vTWVtb3J5QnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvQ29udGV4dFN0YXRlLmgiCkBAIC0xNiwxMSArMTgsOSBAQAogI2luY2x1ZGUgImxpYkFOR0xF
L2Zvcm1hdHV0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleERh
dGFNYW5hZ2VyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1hdHV0aWxz
RDNELmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1dvcmthcm91bmRzRDNELmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvVmVyc2lvbi5oIgotCi0vL0ZJWE1FKGptYWRpbGwpOiBzdGQ6
OmFycmF5IGlzIGN1cnJlbnRseSBwcm9oaWJpdGVkIGJ5IENocm9taXVtIHN0eWxlIGd1aWRlCi0j
aW5jbHVkZSA8YXJyYXk+CisjaW5jbHVkZSAibGliQU5HTEUvV29ya2VyVGhyZWFkLmgiCisjaW5j
bHVkZSAicGxhdGZvcm0vV29ya2Fyb3VuZHNEM0QuaCIKIAogbmFtZXNwYWNlIGVnbAogewpAQCAt
NTUsMTQgKzU1LDYgQEAgc3RydWN0IFRyYW5zbGF0ZWRJbmRleERhdGE7CiBjbGFzcyBVbmlmb3Jt
U3RvcmFnZUQzRDsKIGNsYXNzIFZlcnRleEJ1ZmZlcjsKIAotZW51bSBTaGFkZXJUeXBlCi17Ci0g
ICAgU0hBREVSX1ZFUlRFWCwKLSAgICBTSEFERVJfUElYRUwsCi0gICAgU0hBREVSX0dFT01FVFJZ
LAotICAgIFNIQURFUl9UWVBFX01BWAotfTsKLQogc3RydWN0IERldmljZUlkZW50aWZpZXIKIHsK
ICAgICBVSU5UIFZlbmRvcklkOwpAQCAtNzgsNiArNzAsMTUgQEAgZW51bSBSZW5kZXJlckNsYXNz
CiAgICAgUkVOREVSRVJfRDNEOQogfTsKIAorZW51bSBTaGFkZXJUeXBlCit7CisgICAgU0hBREVS
X1ZFUlRFWCwKKyAgICBTSEFERVJfUElYRUwsCisgICAgU0hBREVSX0dFT01FVFJZLAorICAgIFNI
QURFUl9DT01QVVRFLAorICAgIFNIQURFUl9UWVBFX01BWAorfTsKKwogLy8gVXNlZnVsIGZvciB1
bml0IHRlc3RpbmcKIGNsYXNzIEJ1ZmZlckZhY3RvcnlEM0QgOiBhbmdsZTo6Tm9uQ29weWFibGUK
IHsKQEAgLTkxLDggKzkyLDEyIEBAIGNsYXNzIEJ1ZmZlckZhY3RvcnlEM0QgOiBhbmdsZTo6Tm9u
Q29weWFibGUKICAgICAvLyBUT0RPKGptYWRpbGwpOiBhZGQgVmVydGV4Rm9ybWF0Q2FwcwogICAg
IHZpcnR1YWwgVmVydGV4Q29udmVyc2lvblR5cGUgZ2V0VmVydGV4Q29udmVyc2lvblR5cGUoZ2w6
OlZlcnRleEZvcm1hdFR5cGUgdmVydGV4Rm9ybWF0VHlwZSkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgR0xlbnVtIGdldFZlcnRleENvbXBvbmVudFR5cGUoZ2w6OlZlcnRleEZvcm1hdFR5cGUgdmVy
dGV4Rm9ybWF0VHlwZSkgY29uc3QgPSAwOworCisgICAgLy8gV2FybmluZzogeW91IHNob3VsZCBl
bnN1cmUgYmluZGluZyByZWFsbHkgbWF0Y2hlcyBhdHRyaWIuYmluZGluZ0luZGV4IGJlZm9yZSB1
c2luZyB0aGlzCisgICAgLy8gZnVuY3Rpb24uCiAgICAgdmlydHVhbCBnbDo6RXJyb3JPclJlc3Vs
dDx1bnNpZ25lZCBpbnQ+IGdldFZlcnRleFNwYWNlUmVxdWlyZWQoCiAgICAgICAgIGNvbnN0IGds
OjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgY29uc3QgZ2w6OlZlcnRleEJpbmRp
bmcgJmJpbmRpbmcsCiAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgIEdMc2l6ZWkgaW5z
dGFuY2VzKSBjb25zdCA9IDA7CiB9OwpAQCAtMTI3LDkgKzEzMiwxNyBAQCBjbGFzcyBSZW5kZXJl
ckQzRCA6IHB1YmxpYyBCdWZmZXJGYWN0b3J5RDNECiAKICAgICB2aXJ0dWFsIFN3YXBDaGFpbkQz
RCAqY3JlYXRlU3dhcENoYWluKE5hdGl2ZVdpbmRvd0QzRCAqbmF0aXZlV2luZG93LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFIHNoYXJlSGFuZGxlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVVua25vd24gKmQzZFRl
eHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
YmFja0J1ZmZlckZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTGludCBvcmllbnRhdGlvbikgPSAwOworICAgIHZpcnR1YWwgZWds
OjpFcnJvciBnZXREM0RUZXh0dXJlSW5mbyhJVW5rbm93biAqZDNkVGV4dHVyZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50ICp3aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50ICpoZWlnaHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqZmJvRm9ybWF0KSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBlZ2w6OkVycm9yIHZhbGlkYXRlU2hhcmVIYW5kbGUoY29uc3Qg
ZWdsOjpDb25maWcgKmNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBIQU5ETEUgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIGNvbnN0ID0g
MDsKIAogICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldFNhbXBsZXJTdGF0ZShnbDo6U2FtcGxlclR5
cGUgdHlwZSwgaW50IGluZGV4LCBnbDo6VGV4dHVyZSAqdGV4dHVyZSwgY29uc3QgZ2w6OlNhbXBs
ZXJTdGF0ZSAmc2FtcGxlcikgPSAwOwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIHNldFRleHR1cmUo
Z2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgZ2w6OlRleHR1cmUgKnRleHR1cmUpID0g
MDsKQEAgLTE0Nyw3ICsxNjAsNyBAQCBjbGFzcyBSZW5kZXJlckQzRCA6IHB1YmxpYyBCdWZmZXJG
YWN0b3J5RDNECiAKICAgICB2aXJ0dWFsIGludCBnZXRNYWpvclNoYWRlck1vZGVsKCkgY29uc3Qg
PSAwOwogCi0gICAgY29uc3QgV29ya2Fyb3VuZHNEM0QgJmdldFdvcmthcm91bmRzKCkgY29uc3Q7
CisgICAgY29uc3QgYW5nbGU6Oldvcmthcm91bmRzRDNEICZnZXRXb3JrYXJvdW5kcygpIGNvbnN0
OwogCiAgICAgLy8gUGl4ZWwgb3BlcmF0aW9ucwogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGNvcHlJ
bWFnZTJEKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LApAQCAtMTY1LDYgKzE3OCw3IEBA
IGNsYXNzIFJlbmRlcmVyRDNEIDogcHVibGljIEJ1ZmZlckZhY3RvcnlEM0QKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdEZvcm1hdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0VGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRlc3RMZXZlbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja0ZsaXBZLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKQEAgLTE5MCw4
ICsyMDQsMTAgQEAgY2xhc3MgUmVuZGVyZXJEM0QgOiBwdWJsaWMgQnVmZmVyRmFjdG9yeUQzRAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hhZGVyVHlwZSB0eXBl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8RDNEVmFyeWluZz4gJnN0cmVhbU91dFZhcnlpbmdzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzZXBhcmF0ZWRPdXRwdXRCdWZmZXJzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRDNEQ29tcGlsZXJX
b3JrYXJvdW5kcyAmd29ya2Fyb3VuZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBhbmdsZTo6Q29tcGlsZXJXb3JrYXJvdW5kc0QzRCAmd29ya2Fyb3Vu
ZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJFeGVj
dXRhYmxlRDNEICoqb3V0RXhlY3R1YWJsZSkgPSAwOworICAgIHZpcnR1YWwgZ2w6OkVycm9yIGVu
c3VyZUhMU0xDb21waWxlckluaXRpYWxpemVkKCkgICAgICAgICAgICAgICAgICAgICAgICAgID0g
MDsKKwogICAgIHZpcnR1YWwgVW5pZm9ybVN0b3JhZ2VEM0QgKmNyZWF0ZVVuaWZvcm1TdG9yYWdl
KHNpemVfdCBzdG9yYWdlU2l6ZSkgPSAwOwogCiAgICAgLy8gSW1hZ2Ugb3BlcmF0aW9ucwpAQCAt
MjUyLDYgKzI2OCw4IEBAIGNsYXNzIFJlbmRlcmVyRDNEIDogcHVibGljIEJ1ZmZlckZhY3RvcnlE
M0QKIAogICAgIHZpcnR1YWwgZ2w6OlZlcnNpb24gZ2V0TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCkg
Y29uc3QgPSAwOwogCisgICAgYW5nbGU6OldvcmtlclRocmVhZFBvb2wgKmdldFdvcmtlclRocmVh
ZFBvb2woKTsKKwogICBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGdldExVSUQoTFVJRCAq
YWRhcHRlckx1aWQpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZ2VuZXJhdGVDYXBzKGds
OjpDYXBzICpvdXRDYXBzLApAQCAtMjg3LDcgKzMwNSw3IEBAIGNsYXNzIFJlbmRlcmVyRDNEIDog
cHVibGljIEJ1ZmZlckZhY3RvcnlEM0QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZyYW1lYnVmZmVyVGV4dHVyZUFycmF5ICpvdXRUZXh0dXJlQXJyYXkpOwogICAgIGds
OjpUZXh0dXJlICpnZXRJbmNvbXBsZXRlVGV4dHVyZShHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9y
eSwgR0xlbnVtIHR5cGUpOwogCi0gICAgdmlydHVhbCBXb3JrYXJvdW5kc0QzRCBnZW5lcmF0ZVdv
cmthcm91bmRzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYW5nbGU6Oldvcmthcm91bmRzRDNE
IGdlbmVyYXRlV29ya2Fyb3VuZHMoKSBjb25zdCA9IDA7CiAKICAgICBtdXRhYmxlIGJvb2wgbUNh
cHNJbml0aWFsaXplZDsKICAgICBtdXRhYmxlIGdsOjpDYXBzIG1OYXRpdmVDYXBzOwpAQCAtMjk4
LDEwICszMTYsMTIgQEAgY2xhc3MgUmVuZGVyZXJEM0QgOiBwdWJsaWMgQnVmZmVyRmFjdG9yeUQz
RAogICAgIGdsOjpUZXh0dXJlTWFwIG1JbmNvbXBsZXRlVGV4dHVyZXM7CiAKICAgICBtdXRhYmxl
IGJvb2wgbVdvcmthcm91bmRzSW5pdGlhbGl6ZWQ7Ci0gICAgbXV0YWJsZSBXb3JrYXJvdW5kc0Qz
RCBtV29ya2Fyb3VuZHM7CisgICAgbXV0YWJsZSBhbmdsZTo6V29ya2Fyb3VuZHNEM0QgbVdvcmth
cm91bmRzOwogCiAgICAgYm9vbCBtRGlzam9pbnQ7CiAgICAgYm9vbCBtRGV2aWNlTG9zdDsKKwor
ICAgIGFuZ2xlOjpXb3JrZXJUaHJlYWRQb29sIG1Xb3JrZXJUaHJlYWRQb29sOwogfTsKIAogfSAg
Ly8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRlckQzRC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRlckQzRC5jcHAKaW5kZXggMDI0ODkz
MTJjYmUuLmY1YTRiODhmMDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRlckQzRC5jcHAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TaGFkZXJEM0QuY3BwCkBAIC0y
OSw2ICsyOSw5IEBAIGNvbnN0IGNoYXIgKkdldFNoYWRlclR5cGVTdHJpbmcoR0xlbnVtIHR5cGUp
CiAgICAgICAgIGNhc2UgR0xfRlJBR01FTlRfU0hBREVSOgogICAgICAgICAgICAgcmV0dXJuICJG
UkFHTUVOVCI7CiAKKyAgICAgICAgY2FzZSBHTF9DT01QVVRFX1NIQURFUjoKKyAgICAgICAgICAg
IHJldHVybiAiQ09NUFVURSI7CisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVOUkVB
Q0hBQkxFKCk7CiAgICAgICAgICAgICByZXR1cm4gIiI7CkBAIC00MCw3ICs0Myw3IEBAIGNvbnN0
IGNoYXIgKkdldFNoYWRlclR5cGVTdHJpbmcoR0xlbnVtIHR5cGUpCiBuYW1lc3BhY2UgcngKIHsK
IAotU2hhZGVyRDNEOjpTaGFkZXJEM0QoY29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRhLCBjb25z
dCBXb3JrYXJvdW5kc0QzRCAmd29ya2Fyb3VuZHMpCitTaGFkZXJEM0Q6OlNoYWRlckQzRChjb25z
dCBnbDo6U2hhZGVyU3RhdGUgJmRhdGEsIGNvbnN0IGFuZ2xlOjpXb3JrYXJvdW5kc0QzRCAmd29y
a2Fyb3VuZHMpCiAgICAgOiBTaGFkZXJJbXBsKGRhdGEpLCBtQWRkaXRpb25hbE9wdGlvbnMoMCkK
IHsKICAgICB1bmNvbXBpbGUoKTsKQEAgLTEwMSw3ICsxMDQsNyBAQCB2b2lkIFNoYWRlckQzRDo6
dW5jb21waWxlKCkKICAgICBtRGVidWdJbmZvLmNsZWFyKCk7CiB9CiAKLXZvaWQgU2hhZGVyRDNE
OjpnZW5lcmF0ZVdvcmthcm91bmRzKEQzRENvbXBpbGVyV29ya2Fyb3VuZHMgKndvcmthcm91bmRz
KSBjb25zdAordm9pZCBTaGFkZXJEM0Q6OmdlbmVyYXRlV29ya2Fyb3VuZHMoYW5nbGU6OkNvbXBp
bGVyV29ya2Fyb3VuZHNEM0QgKndvcmthcm91bmRzKSBjb25zdAogewogICAgIGlmIChtVXNlc0Rp
c2NhcmRSZXdyaXRpbmcpCiAgICAgewpAQCAtMTkyLDcgKzE5NSw3IEBAIGJvb2wgU2hhZGVyRDNE
Ojpwb3N0VHJhbnNsYXRlQ29tcGlsZShnbDo6Q29tcGlsZXIgKmNvbXBpbGVyLCBzdGQ6OnN0cmlu
ZyAqaW5mb0xvCiAgICAgbVVzZXNQb2ludFNpemUgICAgICAgICAgICAgPSB0cmFuc2xhdGVkU291
cmNlLmZpbmQoIkdMX1VTRVNfUE9JTlRfU0laRSIpICE9IHN0ZDo6c3RyaW5nOjpucG9zOwogICAg
IG1Vc2VzUG9pbnRDb29yZCAgICAgICAgICAgID0gdHJhbnNsYXRlZFNvdXJjZS5maW5kKCJHTF9V
U0VTX1BPSU5UX0NPT1JEIikgIT0gc3RkOjpzdHJpbmc6Om5wb3M7CiAgICAgbVVzZXNEZXB0aFJh
bmdlICAgICAgICAgICAgPSB0cmFuc2xhdGVkU291cmNlLmZpbmQoIkdMX1VTRVNfREVQVEhfUkFO
R0UiKSAhPSBzdGQ6OnN0cmluZzo6bnBvczsKLSAgICBtVXNlc0ZyYWdEZXB0aCA9IHRyYW5zbGF0
ZWRTb3VyY2UuZmluZCgiR0xfVVNFU19GUkFHX0RFUFRIIikgIT0gc3RkOjpzdHJpbmc6Om5wb3M7
CisgICAgbVVzZXNGcmFnRGVwdGggICAgICAgICAgICAgPSB0cmFuc2xhdGVkU291cmNlLmZpbmQo
IkdMX1VTRVNfRlJBR19ERVBUSCIpICE9IHN0ZDo6c3RyaW5nOjpucG9zOwogICAgIG1Vc2VzRGlz
Y2FyZFJld3JpdGluZyA9CiAgICAgICAgIHRyYW5zbGF0ZWRTb3VyY2UuZmluZCgiQU5HTEVfVVNF
U19ESVNDQVJEX1JFV1JJVElORyIpICE9IHN0ZDo6c3RyaW5nOjpucG9zOwogICAgIG1Vc2VzTmVz
dGVkQnJlYWsgID0gdHJhbnNsYXRlZFNvdXJjZS5maW5kKCJBTkdMRV9VU0VTX05FU1RFRF9CUkVB
SyIpICE9IHN0ZDo6c3RyaW5nOjpucG9zOwpAQCAtMjAxLDcgKzIwNCw3IEBAIGJvb2wgU2hhZGVy
RDNEOjpwb3N0VHJhbnNsYXRlQ29tcGlsZShnbDo6Q29tcGlsZXIgKmNvbXBpbGVyLCBzdGQ6OnN0
cmluZyAqaW5mb0xvCiAKICAgICBTaEhhbmRsZSBjb21waWxlckhhbmRsZSA9IGNvbXBpbGVyLT5n
ZXRDb21waWxlckhhbmRsZShtRGF0YS5nZXRTaGFkZXJUeXBlKCkpOwogCi0gICAgbVVuaWZvcm1S
ZWdpc3Rlck1hcCA9IEdldFVuaWZvcm1SZWdpc3Rlck1hcChTaEdldFVuaWZvcm1SZWdpc3Rlck1h
cChjb21waWxlckhhbmRsZSkpOworICAgIG1Vbmlmb3JtUmVnaXN0ZXJNYXAgPSBHZXRVbmlmb3Jt
UmVnaXN0ZXJNYXAoc2g6OkdldFVuaWZvcm1SZWdpc3Rlck1hcChjb21waWxlckhhbmRsZSkpOwog
CiAgICAgZm9yIChjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2sgJmludGVyZmFjZUJsb2NrIDogbURh
dGEuZ2V0SW50ZXJmYWNlQmxvY2tzKCkpCiAgICAgewpAQCAtMjA5LDggKzIxMiw3IEBAIGJvb2wg
U2hhZGVyRDNEOjpwb3N0VHJhbnNsYXRlQ29tcGlsZShnbDo6Q29tcGlsZXIgKmNvbXBpbGVyLCBz
dGQ6OnN0cmluZyAqaW5mb0xvCiAgICAgICAgIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGludCBp
bmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oLTEpOwogICAgICAgICAgICAgYm9vbCBi
bG9ja1JlZ2lzdGVyUmVzdWx0ID0KLSAgICAgICAgICAgICAgICBTaEdldEludGVyZmFjZUJsb2Nr
UmVnaXN0ZXIoY29tcGlsZXJIYW5kbGUsIGludGVyZmFjZUJsb2NrLm5hbWUsICZpbmRleCk7Ci0g
ICAgICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKGJsb2NrUmVnaXN0ZXJSZXN1bHQp
OworICAgICAgICAgICAgICAgIHNoOjpHZXRJbnRlcmZhY2VCbG9ja1JlZ2lzdGVyKGNvbXBpbGVy
SGFuZGxlLCBpbnRlcmZhY2VCbG9jay5uYW1lLCAmaW5kZXgpOwogICAgICAgICAgICAgQVNTRVJU
KGJsb2NrUmVnaXN0ZXJSZXN1bHQpOwogCiAgICAgICAgICAgICBtSW50ZXJmYWNlQmxvY2tSZWdp
c3Rlck1hcFtpbnRlcmZhY2VCbG9jay5uYW1lXSA9IGluZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TaGFkZXJEM0QuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU2hhZGVy
RDNELmgKaW5kZXggNTg3YzEyMTczMDQuLmRjOTlhYzQ0ZjNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRlckQzRC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU2hh
ZGVyRDNELmgKQEAgLTEzLDE4ICsxMywyMiBAQAogCiAjaW5jbHVkZSA8bWFwPgogCituYW1lc3Bh
Y2UgYW5nbGUKK3sKK3N0cnVjdCBDb21waWxlcldvcmthcm91bmRzRDNEOworc3RydWN0IFdvcmth
cm91bmRzRDNEOworfQorCiBuYW1lc3BhY2UgcngKIHsKIGNsYXNzIER5bmFtaWNITFNMOwogY2xh
c3MgUmVuZGVyZXJEM0Q7Ci1zdHJ1Y3QgRDNEQ29tcGlsZXJXb3JrYXJvdW5kczsKIHN0cnVjdCBE
M0RVbmlmb3JtOwotc3RydWN0IFdvcmthcm91bmRzRDNEOwogCiBjbGFzcyBTaGFkZXJEM0QgOiBw
dWJsaWMgU2hhZGVySW1wbAogewogICBwdWJsaWM6Ci0gICAgU2hhZGVyRDNEKGNvbnN0IGdsOjpT
aGFkZXJTdGF0ZSAmZGF0YSwgY29uc3QgV29ya2Fyb3VuZHNEM0QgJndvcmthcm91bmRzKTsKKyAg
ICBTaGFkZXJEM0QoY29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRhLCBjb25zdCBhbmdsZTo6V29y
a2Fyb3VuZHNEM0QgJndvcmthcm91bmRzKTsKICAgICB2aXJ0dWFsIH5TaGFkZXJEM0QoKTsKIAog
ICAgIC8vIFNoYWRlckltcGwgaW1wbGVtZW50YXRpb24KQEAgLTQ1LDcgKzQ5LDcgQEAgY2xhc3Mg
U2hhZGVyRDNEIDogcHVibGljIFNoYWRlckltcGwKICAgICB1bnNpZ25lZCBpbnQgZ2V0SW50ZXJm
YWNlQmxvY2tSZWdpc3Rlcihjb25zdCBzdGQ6OnN0cmluZyAmYmxvY2tOYW1lKSBjb25zdDsKICAg
ICB2b2lkIGFwcGVuZERlYnVnSW5mbyhjb25zdCBzdGQ6OnN0cmluZyAmaW5mbykgY29uc3QgeyBt
RGVidWdJbmZvICs9IGluZm87IH0KIAotICAgIHZvaWQgZ2VuZXJhdGVXb3JrYXJvdW5kcyhEM0RD
b21waWxlcldvcmthcm91bmRzICp3b3JrYXJvdW5kcykgY29uc3Q7CisgICAgdm9pZCBnZW5lcmF0
ZVdvcmthcm91bmRzKGFuZ2xlOjpDb21waWxlcldvcmthcm91bmRzRDNEICp3b3JrYXJvdW5kcykg
Y29uc3Q7CiAKICAgICBib29sIHVzZXNNdWx0aXBsZVJlbmRlclRhcmdldHMoKSBjb25zdCB7IHJl
dHVybiBtVXNlc011bHRpcGxlUmVuZGVyVGFyZ2V0czsgfQogICAgIGJvb2wgdXNlc0ZyYWdDb2xv
cigpIGNvbnN0IHsgcmV0dXJuIG1Vc2VzRnJhZ0NvbG9yOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1N1cmZhY2VEM0QuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TdXJm
YWNlRDNELmNwcAppbmRleCAwOGUzZGZiNjc2NC4uNjkwZTg2YzI0N2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU3VyZmFjZUQz
RC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9TdXJmYWNlRDNELmNwcApAQCAtMjQsMzYgKzI0LDU1IEBAIG5hbWVzcGFjZSByeAogU3Vy
ZmFjZUQzRDo6U3VyZmFjZUQzRChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyRDNEICpyZW5kZXJlciwKICAgICAgICAgICAgICAg
ICAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5LAotICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRp
dmVXaW5kb3dUeXBlIHdpbmRvdywKLSAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVm
ZmVyIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQog
ICAgIDogU3VyZmFjZUltcGwoc3RhdGUpLAogICAgICAgbVJlbmRlcmVyKHJlbmRlcmVyKSwKICAg
ICAgIG1EaXNwbGF5KGRpc3BsYXkpLAogICAgICAgbUZpeGVkU2l6ZSh3aW5kb3cgPT0gbnVsbHB0
ciB8fCBhdHRyaWJzLmdldChFR0xfRklYRURfU0laRV9BTkdMRSwgRUdMX0ZBTFNFKSA9PSBFR0xf
VFJVRSksCiAgICAgICBtT3JpZW50YXRpb24oc3RhdGljX2Nhc3Q8RUdMaW50PihhdHRyaWJzLmdl
dChFR0xfU1VSRkFDRV9PUklFTlRBVElPTl9BTkdMRSwgMCkpKSwKLSAgICAgIG1SZW5kZXJUYXJn
ZXRGb3JtYXQoY29uZmlnLT5yZW5kZXJUYXJnZXRGb3JtYXQpLAotICAgICAgbURlcHRoU3RlbmNp
bEZvcm1hdChjb25maWctPmRlcHRoU3RlbmNpbEZvcm1hdCksCisgICAgICBtUmVuZGVyVGFyZ2V0
Rm9ybWF0KHN0YXRlLmNvbmZpZy0+cmVuZGVyVGFyZ2V0Rm9ybWF0KSwKKyAgICAgIG1EZXB0aFN0
ZW5jaWxGb3JtYXQoc3RhdGUuY29uZmlnLT5kZXB0aFN0ZW5jaWxGb3JtYXQpLAogICAgICAgbVN3
YXBDaGFpbihudWxscHRyKSwKICAgICAgIG1Td2FwSW50ZXJ2YWxEaXJ0eSh0cnVlKSwKLSAgICAg
IG1OYXRpdmVXaW5kb3cocmVuZGVyZXItPmNyZWF0ZU5hdGl2ZVdpbmRvdyh3aW5kb3csIGNvbmZp
ZywgYXR0cmlicykpLAorICAgICAgbU5hdGl2ZVdpbmRvdyhyZW5kZXJlci0+Y3JlYXRlTmF0aXZl
V2luZG93KHdpbmRvdywgc3RhdGUuY29uZmlnLCBhdHRyaWJzKSksCiAgICAgICBtV2lkdGgoc3Rh
dGljX2Nhc3Q8RUdMaW50PihhdHRyaWJzLmdldChFR0xfV0lEVEgsIDApKSksCiAgICAgICBtSGVp
Z2h0KHN0YXRpY19jYXN0PEVHTGludD4oYXR0cmlicy5nZXQoRUdMX0hFSUdIVCwgMCkpKSwKICAg
ICAgIG1Td2FwSW50ZXJ2YWwoMSksCi0gICAgICBtU2hhcmVIYW5kbGUocmVpbnRlcnByZXRfY2Fz
dDxIQU5ETEUgKj4oc2hhcmVIYW5kbGUpKQorICAgICAgbVNoYXJlSGFuZGxlKDApLAorICAgICAg
bUQzRFRleHR1cmUobnVsbHB0cikKIHsKICAgICBpZiAod2luZG93ICE9IG51bGxwdHIgJiYgIW1G
aXhlZFNpemUpCiAgICAgewogICAgICAgICBtV2lkdGggID0gLTE7CiAgICAgICAgIG1IZWlnaHQg
PSAtMTsKICAgICB9CisKKyAgICBzd2l0Y2ggKGJ1ZnR5cGUpCisgICAgeworICAgICAgICBjYXNl
IEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEU6CisgICAgICAgICAgICBtU2hh
cmVIYW5kbGUgPSBzdGF0aWNfY2FzdDxIQU5ETEU+KGNsaWVudEJ1ZmZlcik7CisgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICBjYXNlIEVHTF9EM0RfVEVYVFVSRV9BTkdMRToKKyAgICAgICAg
ICAgIG1EM0RUZXh0dXJlID0gc3RhdGljX2Nhc3Q8SVVua25vd24gKj4oY2xpZW50QnVmZmVyKTsK
KyAgICAgICAgICAgIEFTU0VSVChtRDNEVGV4dHVyZSAhPSBudWxscHRyKTsKKyAgICAgICAgICAg
IG1EM0RUZXh0dXJlLT5BZGRSZWYoKTsKKyAgICAgICAgICAgIG1SZW5kZXJlci0+Z2V0RDNEVGV4
dHVyZUluZm8obUQzRFRleHR1cmUsICZtV2lkdGgsICZtSGVpZ2h0LCAmbVJlbmRlclRhcmdldEZv
cm1hdCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgYnJlYWs7CisgICAgfQogfQogCiBTdXJmYWNlRDNEOjp+U3VyZmFjZUQzRCgpCiB7CiAgICAg
cmVsZWFzZVN3YXBDaGFpbigpOwogICAgIFNhZmVEZWxldGUobU5hdGl2ZVdpbmRvdyk7CisgICAg
U2FmZVJlbGVhc2UobUQzRFRleHR1cmUpOwogfQogCiB2b2lkIFN1cmZhY2VEM0Q6OnJlbGVhc2VT
d2FwQ2hhaW4oKQpAQCAtNjEsNyArODAsNyBAQCB2b2lkIFN1cmZhY2VEM0Q6OnJlbGVhc2VTd2Fw
Q2hhaW4oKQogICAgIFNhZmVEZWxldGUobVN3YXBDaGFpbik7CiB9CiAKLWVnbDo6RXJyb3IgU3Vy
ZmFjZUQzRDo6aW5pdGlhbGl6ZSgpCitlZ2w6OkVycm9yIFN1cmZhY2VEM0Q6OmluaXRpYWxpemUo
Y29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKQogewogICAgIGlmIChtTmF0aXZlV2luZG93
LT5nZXROYXRpdmVXaW5kb3coKSkKICAgICB7CkBAIC0xMjcsOCArMTQ2LDggQEAgZWdsOjpFcnJv
ciBTdXJmYWNlRDNEOjpyZXNldFN3YXBDaGFpbigpCiAgICAgICAgIGhlaWdodCA9IG1IZWlnaHQ7
CiAgICAgfQogCi0gICAgbVN3YXBDaGFpbiA9IG1SZW5kZXJlci0+Y3JlYXRlU3dhcENoYWluKG1O
YXRpdmVXaW5kb3csIG1TaGFyZUhhbmRsZSwgbVJlbmRlclRhcmdldEZvcm1hdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbURlcHRoU3RlbmNpbEZvcm1hdCwg
bU9yaWVudGF0aW9uKTsKKyAgICBtU3dhcENoYWluID0gbVJlbmRlcmVyLT5jcmVhdGVTd2FwQ2hh
aW4obU5hdGl2ZVdpbmRvdywgbVNoYXJlSGFuZGxlLCBtRDNEVGV4dHVyZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlbmRlclRhcmdldEZvcm1hdCwgbURl
cHRoU3RlbmNpbEZvcm1hdCwgbU9yaWVudGF0aW9uKTsKICAgICBpZiAoIW1Td2FwQ2hhaW4pCiAg
ICAgewogICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FMTE9DKTsKQEAgLTI2NCw3
ICsyODMsNyBAQCBib29sIFN1cmZhY2VEM0Q6OmNoZWNrRm9yT3V0T2ZEYXRlU3dhcENoYWluKCkK
ICAgICByZXR1cm4gd2FzRGlydHk7CiB9CiAKLWVnbDo6RXJyb3IgU3VyZmFjZUQzRDo6c3dhcCgp
CitlZ2w6OkVycm9yIFN1cmZhY2VEM0Q6OnN3YXAoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJ
bXBsKQogewogICAgIHJldHVybiBzd2FwUmVjdCgwLCAwLCBtV2lkdGgsIG1IZWlnaHQpOwogfQpA
QCAtMzM3LDE2ICszNTYsMjEgQEAgZ2w6OkVycm9yIFN1cmZhY2VEM0Q6OmdldEF0dGFjaG1lbnRS
ZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDoKICAgICB7CiAgICAg
ICAgICpydE91dCA9IG1Td2FwQ2hhaW4tPmdldERlcHRoU3RlbmNpbFJlbmRlclRhcmdldCgpOwog
ICAgIH0KLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAogV2luZG93U3VyZmFjZUQzRDo6V2luZG93U3VyZmFjZUQzRChjb25z
dCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlbmRlcmVyRDNEICpyZW5kZXJlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMp
Ci0gICAgOiBTdXJmYWNlRDNEKHN0YXRlLCByZW5kZXJlciwgZGlzcGxheSwgY29uZmlnLCB3aW5k
b3csIHN0YXRpY19jYXN0PEVHTENsaWVudEJ1ZmZlcj4oMCksIGF0dHJpYnMpCisgICAgOiBTdXJm
YWNlRDNEKHN0YXRlLAorICAgICAgICAgICAgICAgICByZW5kZXJlciwKKyAgICAgICAgICAgICAg
ICAgZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgd2luZG93LAorICAgICAgICAgICAgICAgICAw
LAorICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxFR0xDbGllbnRCdWZmZXI+KDApLAorICAg
ICAgICAgICAgICAgICBhdHRyaWJzKQogewogfQogCkBAIC0zNTcsMTUgKzM4MSwxNSBAQCBXaW5k
b3dTdXJmYWNlRDNEOjp+V2luZG93U3VyZmFjZUQzRCgpCiBQYnVmZmVyU3VyZmFjZUQzRDo6UGJ1
ZmZlclN1cmZhY2VEM0QoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyRDNEICpyZW5kZXJlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNv
bmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZm
ZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
ZW51bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENs
aWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiAgICAgOiBTdXJmYWNlRDNE
KHN0YXRlLAogICAgICAgICAgICAgICAgICByZW5kZXJlciwKICAgICAgICAgICAgICAgICAgZGlz
cGxheSwKLSAgICAgICAgICAgICAgICAgY29uZmlnLAogICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxFR0xOYXRpdmVXaW5kb3dUeXBlPigwKSwKLSAgICAgICAgICAgICAgICAgc2hhcmVIYW5k
bGUsCisgICAgICAgICAgICAgICAgIGJ1ZnR5cGUsCisgICAgICAgICAgICAgICAgIGNsaWVudEJ1
ZmZlciwKICAgICAgICAgICAgICAgICAgYXR0cmlicykKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU3VyZmFjZUQzRC5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TdXJm
YWNlRDNELmgKaW5kZXggMTZlYzk3MTMzMzUuLjU4YjJjZTFmOWI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1N1cmZhY2VEM0Qu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L1N1cmZhY2VEM0QuaApAQCAtMjgsMTAgKzI4LDEwIEBAIGNsYXNzIFN1cmZhY2VEM0QgOiBwdWJs
aWMgU3VyZmFjZUltcGwKICAgICB+U3VyZmFjZUQzRCgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVs
ZWFzZVN3YXBDaGFpbigpOwogCi0gICAgZWdsOjpFcnJvciBpbml0aWFsaXplKCkgb3ZlcnJpZGU7
CisgICAgZWdsOjpFcnJvciBpbml0aWFsaXplKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1w
bCkgb3ZlcnJpZGU7CiAgICAgRnJhbWVidWZmZXJJbXBsICpjcmVhdGVEZWZhdWx0RnJhbWVidWZm
ZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKIAotICAgIGVn
bDo6RXJyb3Igc3dhcCgpIG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3Igc3dhcChjb25zdCBEaXNw
bGF5SW1wbCAqZGlzcGxheUltcGwpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgcG9zdFN1YkJ1
ZmZlcihFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCkgb3Zl
cnJpZGU7CiAgICAgZWdsOjpFcnJvciBxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMaW50IGF0
dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIGJpbmRUZXhJ
bWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50IGJ1ZmZlcikgb3ZlcnJpZGU7CkBAIC02
MCw5ICs2MCw5IEBAIGNsYXNzIFN1cmZhY2VEM0QgOiBwdWJsaWMgU3VyZmFjZUltcGwKICAgICBT
dXJmYWNlRDNEKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKICAgICAgICAgICAgICAg
IFJlbmRlcmVyRDNEICpyZW5kZXJlciwKICAgICAgICAgICAgICAgIGVnbDo6RGlzcGxheSAqZGlz
cGxheSwKLSAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsCiAgICAgICAg
ICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKLSAgICAgICAgICAgICAgIEVHTENs
aWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgIEVHTGVudW0gYnVmdHlwZSwK
KyAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCiAgICAgICAgICAg
ICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicyk7CiAKICAgICBlZ2w6OkVycm9y
IHN3YXBSZWN0KEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0
KTsKQEAgLTg4LDYgKzg4LDcgQEAgY2xhc3MgU3VyZmFjZUQzRCA6IHB1YmxpYyBTdXJmYWNlSW1w
bAogICAgIEVHTGludCBtU3dhcEludGVydmFsOwogCiAgICAgSEFORExFIG1TaGFyZUhhbmRsZTsK
KyAgICBJVW5rbm93biAqbUQzRFRleHR1cmU7CiB9OwogCiBjbGFzcyBXaW5kb3dTdXJmYWNlRDNE
IDogcHVibGljIFN1cmZhY2VEM0QKQEAgLTk2LDcgKzk3LDYgQEAgY2xhc3MgV2luZG93U3VyZmFj
ZUQzRCA6IHB1YmxpYyBTdXJmYWNlRDNECiAgICAgV2luZG93U3VyZmFjZUQzRChjb25zdCBlZ2w6
OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckQzRCAq
cmVuZGVyZXIsCiAgICAgICAgICAgICAgICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXksCi0g
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAogICAgICAgICAg
ICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicyk7CiAgICAgfldpbmRvd1N1cmZh
Y2VEM0QoKSBvdmVycmlkZTsKQEAgLTEwOCw4ICsxMDgsOCBAQCBjbGFzcyBQYnVmZmVyU3VyZmFj
ZUQzRCA6IHB1YmxpYyBTdXJmYWNlRDNECiAgICAgUGJ1ZmZlclN1cmZhY2VEM0QoY29uc3QgZWds
OjpTdXJmYWNlU3RhdGUgJnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyRDNE
ICpyZW5kZXJlciwKICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXks
Ci0gICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKLSAgICAg
ICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAg
ICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgIEVHTENs
aWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWds
OjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpOwogICAgIH5QYnVmZmVyU3VyZmFjZUQzRCgpIG92ZXJy
aWRlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvU3dhcENoYWluRDNELmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU3dhcENoYWluRDNELmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGU4NTM0YzNkYTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1N3YXBD
aGFpbkQzRC5jcHAKQEAgLTAsMCArMSwzNCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFN3YXBDaGFp
bkQzRC5jcHA6IERlZmluZXMgYSBiYWNrLWVuZCBzcGVjaWZpYyBjbGFzcyB0aGF0IGhpZGVzIHRo
ZSBkZXRhaWxzIG9mIHRoZQorLy8gaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgc3dhcGNoYWluLgor
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL1N3YXBDaGFpbkQzRC5oIgorCituYW1l
c3BhY2UgcngKK3sKKworU3dhcENoYWluRDNEOjpTd2FwQ2hhaW5EM0QoSEFORExFIHNoYXJlSGFu
ZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSVVua25vd24gKmQzZFRleHR1cmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXB0aEJ1ZmZlckZvcm1hdCkKKyAgICA6IG1P
ZmZzY3JlZW5SZW5kZXJUYXJnZXRGb3JtYXQoYmFja0J1ZmZlckZvcm1hdCksCisgICAgICBtRGVw
dGhCdWZmZXJGb3JtYXQoZGVwdGhCdWZmZXJGb3JtYXQpLAorICAgICAgbVNoYXJlSGFuZGxlKHNo
YXJlSGFuZGxlKSwKKyAgICAgIG1EM0RUZXh0dXJlKGQzZFRleHR1cmUpCit7CisgICAgaWYgKG1E
M0RUZXh0dXJlKQorICAgIHsKKyAgICAgICAgbUQzRFRleHR1cmUtPkFkZFJlZigpOworICAgIH0K
K30KKworU3dhcENoYWluRDNEOjp+U3dhcENoYWluRDNEKCkKK3sKKyAgICBTYWZlUmVsZWFzZSht
RDNEVGV4dHVyZSk7Cit9Cit9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvU3dhcENoYWluRDNELmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1N3YXBD
aGFpbkQzRC5oCmluZGV4IDczNmVlMGFkOWRiLi41NDcyODY0ZWY1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9Td2FwQ2hhaW5E
M0QuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL1N3YXBDaGFpbkQzRC5oCkBAIC0yOSwxNCArMjksMTEgQEAgY2xhc3MgUmVuZGVyVGFyZ2V0
RDNEOwogY2xhc3MgU3dhcENoYWluRDNEIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiB7CiAgIHB1Ymxp
YzoKLSAgICBTd2FwQ2hhaW5EM0QoSEFORExFIHNoYXJlSGFuZGxlLCBHTGVudW0gYmFja0J1ZmZl
ckZvcm1hdCwgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KQotICAgICAgICA6IG1PZmZzY3JlZW5S
ZW5kZXJUYXJnZXRGb3JtYXQoYmFja0J1ZmZlckZvcm1hdCksCi0gICAgICAgICAgbURlcHRoQnVm
ZmVyRm9ybWF0KGRlcHRoQnVmZmVyRm9ybWF0KSwKLSAgICAgICAgICBtU2hhcmVIYW5kbGUoc2hh
cmVIYW5kbGUpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgflN3YXBDaGFpbkQzRCgpIHt9
OworICAgIFN3YXBDaGFpbkQzRChIQU5ETEUgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAg
IElVbmtub3duICpkM2RUZXh0dXJlLAorICAgICAgICAgICAgICAgICBHTGVudW0gYmFja0J1ZmZl
ckZvcm1hdCwKKyAgICAgICAgICAgICAgICAgR0xlbnVtIGRlcHRoQnVmZmVyRm9ybWF0KTsKKyAg
ICB2aXJ0dWFsIH5Td2FwQ2hhaW5EM0QoKTsKIAogICAgIHZpcnR1YWwgRUdMaW50IHJlc2l6ZShF
R0xpbnQgYmFja2J1ZmZlcldpZHRoLCBFR0xpbnQgYmFja2J1ZmZlclNpemUpID0gMDsKICAgICB2
aXJ0dWFsIEVHTGludCByZXNldChFR0xpbnQgYmFja2J1ZmZlcldpZHRoLCBFR0xpbnQgYmFja2J1
ZmZlckhlaWdodCwgRUdMaW50IHN3YXBJbnRlcnZhbCkgPSAwOwpAQCAtNTksNyArNTYsOCBAQCBj
bGFzcyBTd2FwQ2hhaW5EM0QgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICBjb25zdCBHTGVudW0g
bURlcHRoQnVmZmVyRm9ybWF0OwogCiAgICAgSEFORExFIG1TaGFyZUhhbmRsZTsKKyAgICBJVW5r
bm93biAqbUQzRFRleHR1cmU7CiB9OwogCi19Cit9ICAvLyBuYW1lc3BhY2UgcngKICNlbmRpZiAv
LyBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfU1dBUENIQUlORDNEX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVEM0Qu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9U
ZXh0dXJlRDNELmNwcAppbmRleCAwZjUzMDM4YzM0Yy4uMWQ2ZDc0MGE2MmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4dHVy
ZUQzRC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9UZXh0dXJlRDNELmNwcApAQCAtNjAsNyArNjAsNyBAQCBnbDo6RXJyb3IgR2V0VW5w
YWNrUG9pbnRlcihjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBjb25zdCB1aW50
OF90ICpwaQogICAgICAgICAqcG9pbnRlck91dCArPSBsYXllck9mZnNldDsKICAgICB9CiAKLSAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKIH0KIAogYm9vbCBJc1JlbmRlclRhcmdldFVzYWdlKEdMZW51bSB1c2FnZSkKQEAgLTE0NCw2
ICsxNDQsMTcgQEAgR0xlbnVtIFRleHR1cmVEM0Q6OmdldEJhc2VMZXZlbEludGVybmFsRm9ybWF0
KCkgY29uc3QKICAgICByZXR1cm4gKGJhc2VJbWFnZSA/IGJhc2VJbWFnZS0+Z2V0SW50ZXJuYWxG
b3JtYXQoKSA6IEdMX05PTkUpOwogfQogCitnbDo6RXJyb3IgVGV4dHVyZUQzRDo6c2V0U3RvcmFn
ZU11bHRpc2FtcGxlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4
dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiBmaXhlZFNhbXBsZUxvY2F0aW9ucykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgcmV0dXJuIGdsOjpJbnRlcm5hbEVycm9yKCkgPDwgInNldFN0b3JhZ2VNdWx0aXNhbXBs
ZSBpcyB1bmltcGxlbWVudGVkLiI7Cit9CisKIGJvb2wgVGV4dHVyZUQzRDo6c2hvdWxkVXNlU2V0
RGF0YShjb25zdCBJbWFnZUQzRCAqaW1hZ2UpIGNvbnN0CiB7CiAgICAgaWYgKCFtUmVuZGVyZXIt
PmdldFdvcmthcm91bmRzKCkuc2V0RGF0YUZhc3RlclRoYW5JbWFnZVVwbG9hZCkKQEAgLTE3Niw3
ICsxODcsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRDo6c2V0SW1hZ2VJbXBsKGNvbnN0IGdsOjpJ
bWFnZUluZGV4ICZpbmRleCwKICAgICAvLyBOby1vcAogICAgIGlmIChpbWFnZS0+Z2V0V2lkdGgo
KSA9PSAwIHx8IGltYWdlLT5nZXRIZWlnaHQoKSA9PSAwIHx8IGltYWdlLT5nZXREZXB0aCgpID09
IDApCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAgLy8gV2Ugbm8gbG9uZ2VyIG5l
ZWQgdGhlICJHTGVudW0gZm9ybWF0IiBwYXJhbWV0ZXIgdG8gVGV4SW1hZ2UgdG8gZGV0ZXJtaW5l
IHdoYXQgZGF0YSBmb3JtYXQgInBpeGVscyIgY29udGFpbnMuCkBAIC0yMjQsNyArMjM1LDcgQEAg
Z2w6OkVycm9yIFRleHR1cmVEM0Q6OnN1YkltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRl
eCwgY29uc3QgZ2w6OkJveCAmYXJlYSwKICAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKICAg
ICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVEM0Q6OnNldENvbXByZXNzZWRJbWFn
ZUltcGwoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LApAQCAtMjUzLDcgKzI2NCw3IEBAIGds
OjpFcnJvciBUZXh0dXJlRDNEOjpzZXRDb21wcmVzc2VkSW1hZ2VJbXBsKGNvbnN0IGdsOjpJbWFn
ZUluZGV4ICZpbmRleCwKICAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKICAgICB9CiAKLSAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVEM0Q6OnN1YkltYWdlQ29tcHJlc3NlZChjb25zdCBn
bDo6SW1hZ2VJbmRleCAmaW5kZXgsIGNvbnN0IGdsOjpCb3ggJmFyZWEsIEdMZW51bSBmb3JtYXQs
CkBAIC0yNzMsNyArMjg0LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0Q6OnN1YkltYWdlQ29tcHJl
c3NlZChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsIGNvbnN0IGdsOjoKICAgICAgICAgbURp
cnR5SW1hZ2VzID0gdHJ1ZTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogYm9vbCBUZXh0dXJlRDNEOjpp
c0Zhc3RVbnBhY2thYmxlKGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIEdMZW51
bSBzaXplZEludGVybmFsRm9ybWF0KQpAQCAtMjk2LDcgKzMwNyw3IEBAIGdsOjpFcnJvciBUZXh0
dXJlRDNEOjpmYXN0VW5wYWNrUGl4ZWxzKGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBh
Y2ssIGNvbnN0CiAgICAgLy8gTm8tb3AKICAgICBpZiAoZGVzdEFyZWEud2lkdGggPD0gMCAmJiBk
ZXN0QXJlYS5oZWlnaHQgPD0gMCAmJiBkZXN0QXJlYS5kZXB0aCA8PSAwKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwogICAgIH0KIAogICAgIC8vIEluIG9yZGVyIHRvIHBlcmZvcm0gdGhlIGZhc3QgY29w
eSB0aHJvdWdoIHRoZSBzaGFkZXIsIHdlIG11c3QgaGF2ZSB0aGUgcmlnaHQgZm9ybWF0LCBhbmQg
YmUgYWJsZQpAQCAtMzUxLDEyICszNjIsMTEgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0Q6OnNldElt
YWdlRXh0ZXJuYWwoR0xlbnVtIHRhcmdldCwKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0Q6OmdlbmVyYXRlTWlwbWFw
KCkKK2dsOjpFcnJvciBUZXh0dXJlRDNEOjpnZW5lcmF0ZU1pcG1hcChDb250ZXh0SW1wbCAqY29u
dGV4dEltcGwpCiB7CiAgICAgY29uc3QgR0x1aW50IGJhc2VMZXZlbCA9IG1TdGF0ZS5nZXRFZmZl
Y3RpdmVCYXNlTGV2ZWwoKTsKICAgICBjb25zdCBHTHVpbnQgbWF4TGV2ZWwgPSBtU3RhdGUuZ2V0
TWlwbWFwTWF4TGV2ZWwoKTsKICAgICBBU1NFUlQobWF4TGV2ZWwgPiBiYXNlTGV2ZWwpOyAgLy8g
U2hvdWxkIGJlIGNoZWNrZWQgYmVmb3JlIGNhbGxpbmcgdGhpcy4KLSAgICBVTlVTRURfQVNTRVJU
SU9OX1ZBUklBQkxFKGJhc2VMZXZlbCk7CiAKICAgICBpZiAobVRleFN0b3JhZ2UgJiYgbVJlbmRl
cmVyLT5nZXRXb3JrYXJvdW5kcygpLnplcm9NYXhMb2RXb3JrYXJvdW5kKQogICAgIHsKQEAgLTM4
Miw3ICszOTIsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRDo6Z2VuZXJhdGVNaXBtYXAoKQogICAg
ICAgICBBTkdMRV9UUlkoZ2VuZXJhdGVNaXBtYXBVc2luZ0ltYWdlcyhtYXhMZXZlbCkpOwogICAg
IH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZUQzRDo6Z2VuZXJhdGVNaXBtYXBVc2lu
Z0ltYWdlcyhjb25zdCBHTHVpbnQgbWF4TGV2ZWwpCkBAIC00ODAsMjcgKzQ5MCwyNiBAQCBnbDo6
RXJyb3IgVGV4dHVyZUQzRDo6ZW5zdXJlUmVuZGVyVGFyZ2V0KCkKIHsKICAgICBBTkdMRV9UUlko
aW5pdGlhbGl6ZVN0b3JhZ2UodHJ1ZSkpOwogCisgICAgLy8gaW5pdGlhbGl6ZVN0b3JhZ2UgY2Fu
IGZhaWwgd2l0aCBOb0Vycm9yIGlmIHRoZSB0ZXh0dXJlIGlzIG5vdCBjb21wbGV0ZS4gVGhpcyBp
cyBub3QKKyAgICAvLyBhbiBlcnJvciBmb3IgaW5jb21wbGV0ZSBzYW1wbGluZywgYnV0IGl0IGlz
IGEgYmlnIHByb2JsZW0gZm9yIHJlbmRlcmluZy4KKyAgICBpZiAoIW1UZXhTdG9yYWdlKQorICAg
IHsKKyAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIGdsOjpJbnRlcm5hbEVy
cm9yKCkgPDwgIkNhbm5vdCByZW5kZXIgdG8gaW5jb21wbGV0ZSB0ZXh0dXJlLiI7CisgICAgfQor
CiAgICAgaWYgKCFpc0Jhc2VJbWFnZVplcm9TaXplKCkpCiAgICAgewogICAgICAgICBBU1NFUlQo
bVRleFN0b3JhZ2UpOwogICAgICAgICBpZiAoIW1UZXhTdG9yYWdlLT5pc1JlbmRlclRhcmdldCgp
KQogICAgICAgICB7Ci0gICAgICAgICAgICBUZXh0dXJlU3RvcmFnZSAqbmV3UmVuZGVyVGFyZ2V0
U3RvcmFnZSA9IE5VTEw7CisgICAgICAgICAgICBUZXh0dXJlU3RvcmFnZSAqbmV3UmVuZGVyVGFy
Z2V0U3RvcmFnZSA9IG51bGxwdHI7CiAgICAgICAgICAgICBBTkdMRV9UUlkoY3JlYXRlQ29tcGxl
dGVTdG9yYWdlKHRydWUsICZuZXdSZW5kZXJUYXJnZXRTdG9yYWdlKSk7CiAKLSAgICAgICAgICAg
IGdsOjpFcnJvciBlcnJvciA9IG1UZXhTdG9yYWdlLT5jb3B5VG9TdG9yYWdlKG5ld1JlbmRlclRh
cmdldFN0b3JhZ2UpOwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBTYWZlRGVsZXRlKG5ld1JlbmRlclRhcmdldFN0b3JhZ2Up
OwotICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcjsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgZXJyb3IgPSBzZXRDb21wbGV0ZVRleFN0b3JhZ2UobmV3UmVuZGVyVGFyZ2V0U3RvcmFn
ZSk7Ci0gICAgICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIFNhZmVEZWxldGUobmV3UmVuZGVyVGFyZ2V0U3RvcmFnZSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGVycm9yOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFRleHR1cmVTdG9yYWdlPiBuZXdTdG9yYWdlUmVmKG5ld1JlbmRlclRhcmdldFN0
b3JhZ2UpOworICAgICAgICAgICAgQU5HTEVfVFJZKG1UZXhTdG9yYWdlLT5jb3B5VG9TdG9yYWdl
KG5ld1JlbmRlclRhcmdldFN0b3JhZ2UpKTsKKyAgICAgICAgICAgIEFOR0xFX1RSWShzZXRDb21w
bGV0ZVRleFN0b3JhZ2UobmV3UmVuZGVyVGFyZ2V0U3RvcmFnZSkpOworICAgICAgICAgICAgbmV3
U3RvcmFnZVJlZi5yZWxlYXNlKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTU3NCw2ICs1ODMs
MjAzIEBAIFRleHR1cmVEM0RfMkQ6OlRleHR1cmVEM0RfMkQoY29uc3QgZ2w6OlRleHR1cmVTdGF0
ZSAmc3RhdGUsIFJlbmRlcmVyRDNEICpyZW5kZXJlCiAgICAgfQogfQogCitUZXh0dXJlRDNEXzJE
TXVsdGlzYW1wbGU6OlRleHR1cmVEM0RfMkRNdWx0aXNhbXBsZShjb25zdCBnbDo6VGV4dHVyZVN0
YXRlICZzdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlbmRlcmVyRDNEICpyZW5kZXJlcikKKyAgICA6IFRleHR1cmVEM0Qoc3RhdGUsIHJl
bmRlcmVyKQoreworfQorCitUZXh0dXJlRDNEXzJETXVsdGlzYW1wbGU6On5UZXh0dXJlRDNEXzJE
TXVsdGlzYW1wbGUoKQoreworfQorCitJbWFnZUQzRCAqVGV4dHVyZUQzRF8yRE11bHRpc2FtcGxl
OjpnZXRJbWFnZShjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpIGNvbnN0Cit7CisgICAgVU5J
TVBMRU1FTlRFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitnbDo6RXJyb3IgVGV4dHVy
ZUQzRF8yRE11bHRpc2FtcGxlOjpzZXRJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxl
dmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5w
YWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCAqcGl4ZWxzKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6
OkludGVybmFsRXJyb3IoKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRNdWx0aXNhbXBs
ZTo6c2V0U3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpC
b3ggJmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAq
cGl4ZWxzKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkludGVybmFs
RXJyb3IoKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRNdWx0aXNhbXBsZTo6c2V0Q29t
cHJlc3NlZEltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp
bnQ4X3QgKnBpeGVscykKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpJ
bnRlcm5hbEVycm9yKCk7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzJETXVsdGlzYW1wbGU6
OnNldENvbXByZXNzZWRTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
Zm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlt
YWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgIHJldHVybiBnbDo6SW50ZXJuYWxFcnJvcigpOworfQorCitnbDo6RXJyb3IgVGV4dHVy
ZUQzRF8yRE11bHRpc2FtcGxlOjpjb3B5SW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAq
c291cmNlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkludGVybmFs
RXJyb3IoKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRNdWx0aXNhbXBsZTo6Y29weVN1
YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0
ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpz
b3VyY2UpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6SW50ZXJuYWxF
cnJvcigpOworfQorCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRE11bHRpc2FtcGxlOjpzZXRTdG9y
YWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVscywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
RXh0ZW50cyAmc2l6ZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpJ
bnRlcm5hbEVycm9yKCk7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzJETXVsdGlzYW1wbGU6
OnNldEltYWdlRXh0ZXJuYWwoR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdHJlYW0gKnN0cmVhbSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWds
OjpTdHJlYW06OkdMVGV4dHVyZURlc2NyaXB0aW9uICZkZXNjKQoreworICAgIFVOSU1QTEVNRU5U
RUQoKTsKKyAgICByZXR1cm4gZ2w6OkludGVybmFsRXJyb3IoKTsKK30KKwordm9pZCBUZXh0dXJl
RDNEXzJETXVsdGlzYW1wbGU6OmJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCit7
CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCit2b2lkIFRleHR1cmVEM0RfMkRNdWx0aXNhbXBs
ZTo6cmVsZWFzZVRleEltYWdlKCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7Cit9CisKK2dsOjpF
cnJvciBUZXh0dXJlRDNEXzJETXVsdGlzYW1wbGU6OnNldEVHTEltYWdlVGFyZ2V0KEdMZW51bSB0
YXJnZXQsIGVnbDo6SW1hZ2UgKmltYWdlKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICBy
ZXR1cm4gZ2w6OkludGVybmFsRXJyb3IoKTsKK30KKworZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRN
dWx0aXNhbXBsZTo6Z2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5k
ZXJUYXJnZXREM0QgKipvdXRSVCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJu
IGdsOjpJbnRlcm5hbEVycm9yKCk7Cit9CisKK2dsOjpJbWFnZUluZGV4SXRlcmF0b3IgVGV4dHVy
ZUQzRF8yRE11bHRpc2FtcGxlOjppbWFnZUl0ZXJhdG9yKCkgY29uc3QKK3sKKyAgICBVTklNUExF
TUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpJbWFnZUluZGV4SXRlcmF0b3I6Ok1ha2UyRE11bHRp
c2FtcGxlKCk7Cit9CisKK2dsOjpJbWFnZUluZGV4IFRleHR1cmVEM0RfMkRNdWx0aXNhbXBsZTo6
Z2V0SW1hZ2VJbmRleChHTGludCBtaXAsIEdMaW50IGxheWVyKSBjb25zdAoreworICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkltYWdlSW5kZXg6Ok1ha2UyRE11bHRpc2FtcGxl
KCk7Cit9CisKK2Jvb2wgVGV4dHVyZUQzRF8yRE11bHRpc2FtcGxlOjppc1ZhbGlkSW5kZXgoY29u
c3QgZ2w6OkltYWdlSW5kZXggJmluZGV4KSBjb25zdAoreworICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0dMc2l6ZWkgVGV4dHVyZUQzRF8yRE11bHRpc2FtcGxl
OjpnZXRMYXllckNvdW50KGludCBsZXZlbCkgY29uc3QKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgcmV0dXJuIEdMc2l6ZWkoKTsKK30KKwordm9pZCBUZXh0dXJlRDNEXzJETXVsdGlzYW1w
bGU6Om1hcmtBbGxJbWFnZXNEaXJ0eSgpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworfQorCitn
bDo6RXJyb3IgVGV4dHVyZUQzRF8yRE11bHRpc2FtcGxlOjppbml0aWFsaXplU3RvcmFnZShib29s
IHJlbmRlclRhcmdldCkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpJ
bnRlcm5hbEVycm9yKCk7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzJETXVsdGlzYW1wbGU6
OmNyZWF0ZUNvbXBsZXRlU3RvcmFnZShib29sIHJlbmRlclRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlU3RvcmFn
ZSAqKm91dFRleFN0b3JhZ2UpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJl
dHVybiBnbDo6SW50ZXJuYWxFcnJvcigpOworfQorCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRE11
bHRpc2FtcGxlOjpzZXRDb21wbGV0ZVRleFN0b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKm5ld0NvbXBs
ZXRlVGV4U3RvcmFnZSkKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpJ
bnRlcm5hbEVycm9yKCk7Cit9CisKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzJETXVsdGlzYW1wbGU6
OnVwZGF0ZVN0b3JhZ2UoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6
OkludGVybmFsRXJyb3IoKTsKK30KKwordm9pZCBUZXh0dXJlRDNEXzJETXVsdGlzYW1wbGU6Omlu
aXRNaXBtYXBJbWFnZXMoKQoreworICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKworYm9vbCBUZXh0
dXJlRDNEXzJETXVsdGlzYW1wbGU6OmlzSW1hZ2VDb21wbGV0ZShjb25zdCBnbDo6SW1hZ2VJbmRl
eCAmaW5kZXgpIGNvbnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKwogVGV4dHVyZUQzRF8yRDo6flRleHR1cmVEM0RfMkQoKQogewogICAgIC8vIERlbGV0
ZSB0aGUgSW1hZ2VzIGJlZm9yZSB0aGUgVGV4dHVyZVN0b3JhZ2UuCkBAIC01ODEsNyArNzg3LDcg
QEAgVGV4dHVyZUQzRF8yRDo6flRleHR1cmVEM0RfMkQoKQogICAgIC8vIElmIFRleHR1cmVTdG9y
YWdlIGlzIGRlbGV0ZWQgYmVmb3JlIHRoZSBJbWFnZXMsIHRoZW4gdGhlaXIgZGF0YSB3aWxsIGJl
IHdhc3RlZnVsbHkgY29waWVkIGJhY2sgZnJvbSB0aGUgR1BVIGJlZm9yZSB3ZSBkZWxldGUgdGhl
IEltYWdlcy4KICAgICBmb3IgKGludCBpID0gMDsgaSA8IGdsOjpJTVBMRU1FTlRBVElPTl9NQVhf
VEVYVFVSRV9MRVZFTFM7ICsraSkKICAgICB7Ci0gICAgICAgIGRlbGV0ZSBtSW1hZ2VBcnJheVtp
XTsKKyAgICAgICAgU2FmZURlbGV0ZShtSW1hZ2VBcnJheVtpXSk7CiAgICAgfQogCiAgICAgU2Fm
ZURlbGV0ZShtVGV4U3RvcmFnZSk7CkBAIC02MzcsNyArODQzLDggQEAgYm9vbCBUZXh0dXJlRDNE
XzJEOjppc0RlcHRoKEdMaW50IGxldmVsKSBjb25zdAogICAgIHJldHVybiBnbDo6R2V0SW50ZXJu
YWxGb3JtYXRJbmZvKGdldEludGVybmFsRm9ybWF0KGxldmVsKSkuZGVwdGhCaXRzID4gMDsKIH0K
IAotZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OnNldEltYWdlKEdMZW51bSB0YXJnZXQsCitnbDo6
RXJyb3IgVGV4dHVyZUQzRF8yRDo6c2V0SW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlTGV2ZWwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLApAQCAtNjgz
LDcgKzg5MCw4IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzJEOjpzZXRJbWFnZShHTGVudW0gdGFy
Z2V0LAogICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQz
RF8yRDo6c2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzJE
OjpzZXRTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VMZXZlbCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCkBAIC03MDksNyArOTE3LDggQEAgZ2w6
OkVycm9yIFRleHR1cmVEM0RfMkQ6OnNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQsCiAgICAgfQog
fQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6c2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0
YXJnZXQsCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6c2V0Q29tcHJlc3NlZEltYWdlKENvbnRl
eHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGltYWdlTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCkBA
IC03MjYsOCArOTM1LDE0IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzJEOjpzZXRDb21wcmVzc2Vk
SW1hZ2UoR0xlbnVtIHRhcmdldCwKICAgICByZXR1cm4gc2V0Q29tcHJlc3NlZEltYWdlSW1wbChn
bDo6SW1hZ2VJbmRleDo6TWFrZTJEKGxldmVsKSwgdW5wYWNrLCBwaXhlbHMsIDApOwogfQogCi1n
bDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6c2V0Q29tcHJlc3NlZFN1YkltYWdlKEdMZW51bSB0YXJn
ZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OkJveCAmYXJlYSwgR0xlbnVtIGZvcm1hdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBp
eGVsVW5wYWNrU3RhdGUgJnVucGFjaywgc2l6ZV90IGltYWdlU2l6ZSwgY29uc3QgdWludDhfdCAq
cGl4ZWxzKQorZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OnNldENvbXByZXNzZWRTdWJJbWFnZShD
b250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBp
eGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQogewogICAgIEFT
U0VSVCh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCAmJiBhcmVhLmRlcHRoID09IDEgJiYgYXJlYS56
ID09IDApOwogCkBAIC03MzcsNyArOTUyLDggQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OnNl
dENvbXByZXNzZWRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnMKICAg
ICByZXR1cm4gY29tbWl0UmVnaW9uKGluZGV4LCBhcmVhKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1
cmVEM0RfMkQ6OmNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LAorZ2w6OkVycm9yIFRleHR1cmVEM0Rf
MkQ6OmNvcHlJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBpbWFnZUxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCkBAIC03NzIsMTAg
Kzk4OCwxMSBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6Y29weUltYWdlKEdMZW51bSB0YXJn
ZXQsCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0Rf
MkQ6OmNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAorZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6
OmNvcHlTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZUxldmVsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3Vy
Y2VBcmVhLApAQCAtODA5LDIwICsxMDI2LDI1IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzJEOjpj
b3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQog
Ci1nbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6Y29weVRleHR1cmUoR0xlbnVtIGludGVybmFsRm9y
bWF0LAorZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OmNvcHlUZXh0dXJlKENvbnRleHRJbXBsICpj
b250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZl
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxG
b3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNvdXJjZUxldmVs
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrRmxpcFks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0
aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5w
YWNrVW5tdWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpCiB7CisgICAgQVNTRVJUKHRhcmdldCA9PSBHTF9U
RVhUVVJFXzJEKTsKKwogICAgIEdMZW51bSBzb3VyY2VUYXJnZXQgPSBzb3VyY2UtPmdldFRhcmdl
dCgpOwotICAgIEdMaW50IHNvdXJjZUxldmVsICAgPSAwOwogCi0gICAgR0xpbnQgZGVzdExldmVs
ID0gMDsKKyAgICBHTGludCBkZXN0TGV2ZWwgPSBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpOwog
CiAgICAgR0xlbnVtIHNpemVkSW50ZXJuYWxGb3JtYXQgPSBnbDo6R2V0U2l6ZWRJbnRlcm5hbEZv
cm1hdChpbnRlcm5hbEZvcm1hdCwgdHlwZSk7CiAgICAgZ2w6OkV4dGVudHMgc2l6ZShzdGF0aWNf
Y2FzdDxpbnQ+KHNvdXJjZS0+Z2V0V2lkdGgoc291cmNlVGFyZ2V0LCBzb3VyY2VMZXZlbCkpLApA
QCAtODM3LDIzICsxMDU5LDI4IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzJEOjpjb3B5VGV4dHVy
ZShHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAKICAgICBnbDo6UmVjdGFuZ2xlIHNvdXJjZVJlY3Qo
MCwgMCwgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpOwogICAgIGdsOjpPZmZzZXQgZGVzdE9mZnNl
dCgwLCAwLCAwKTsKLSAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5jb3B5VGV4dHVyZShzb3VyY2Us
IHNvdXJjZUxldmVsLCBzb3VyY2VSZWN0LAorICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmNvcHlU
ZXh0dXJlKHNvdXJjZSwgc3RhdGljX2Nhc3Q8R0xpbnQ+KHNvdXJjZUxldmVsKSwgc291cmNlUmVj
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6R2V0SW50ZXJuYWxG
b3JtYXRJbmZvKHNpemVkSW50ZXJuYWxGb3JtYXQpLmZvcm1hdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXN0T2Zmc2V0LCBtVGV4U3RvcmFnZSwgZGVzdExldmVsLCB1
bnBhY2tGbGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0T2Zm
c2V0LCBtVGV4U3RvcmFnZSwgdGFyZ2V0LCBkZXN0TGV2ZWwsIHVucGFja0ZsaXBZLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVucGFja1ByZW11bHRpcGx5QWxwaGEsIHVu
cGFja1VubXVsdGlwbHlBbHBoYSkpOwogCiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
LWdsOjpFcnJvciBUZXh0dXJlRDNEXzJEOjpjb3B5U3ViVGV4dHVyZShjb25zdCBnbDo6T2Zmc2V0
ICZkZXN0T2Zmc2V0LAorZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OmNvcHlTdWJUZXh0dXJlKENv
bnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VMZXZlbCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrRmxpcFks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVt
dWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgdW5wYWNrVW5tdWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpCiB7Ci0gICAgR0xpbnQgc291cmNl
TGV2ZWwgPSAwOwotICAgIEdMaW50IGRlc3RMZXZlbCAgID0gMDsKKyAgICBBU1NFUlQodGFyZ2V0
ID09IEdMX1RFWFRVUkVfMkQpOworCisgICAgR0xpbnQgZGVzdExldmVsID0gc3RhdGljX2Nhc3Q8
R0xpbnQ+KGxldmVsKTsKIAogICAgIEFTU0VSVChjYW5DcmVhdGVSZW5kZXJUYXJnZXRGb3JJbWFn
ZShnbDo6SW1hZ2VJbmRleDo6TWFrZTJEKGRlc3RMZXZlbCkpKTsKIApAQCAtODYxLDE1ICsxMDg4
LDE1IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzJEOjpjb3B5U3ViVGV4dHVyZShjb25zdCBnbDo6
T2Zmc2V0ICZkZXN0T2Zmc2V0LAogICAgIEFTU0VSVChpc1ZhbGlkTGV2ZWwoZGVzdExldmVsKSk7
CiAgICAgQU5HTEVfVFJZKHVwZGF0ZVN0b3JhZ2VMZXZlbChkZXN0TGV2ZWwpKTsKIAotICAgIEFO
R0xFX1RSWShtUmVuZGVyZXItPmNvcHlUZXh0dXJlKHNvdXJjZSwgc291cmNlTGV2ZWwsIHNvdXJj
ZUFyZWEsCisgICAgQU5HTEVfVFJZKG1SZW5kZXJlci0+Y29weVRleHR1cmUoc291cmNlLCBzdGF0
aWNfY2FzdDxHTGludD4oc291cmNlTGV2ZWwpLCBzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oZ2V0QmFzZUxl
dmVsSW50ZXJuYWxGb3JtYXQoKSkuZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3RPZmZzZXQsIG1UZXhTdG9yYWdlLCBkZXN0TGV2ZWwsIHVucGFja0ZsaXBZ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RPZmZzZXQsIG1UZXhT
dG9yYWdlLCB0YXJnZXQsIGRlc3RMZXZlbCwgdW5wYWNrRmxpcFksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwgdW5wYWNrVW5tdWx0
aXBseUFscGhhKSk7CiAKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9y
IFRleHR1cmVEM0RfMkQ6OmNvcHlDb21wcmVzc2VkVGV4dHVyZShjb25zdCBnbDo6VGV4dHVyZSAq
c291cmNlKQorZ2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OmNvcHlDb21wcmVzc2VkVGV4dHVyZShD
b250ZXh0SW1wbCAqY29udGV4dEltcGwsIGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpCiB7CiAg
ICAgR0xlbnVtIHNvdXJjZVRhcmdldCA9IHNvdXJjZS0+Z2V0VGFyZ2V0KCk7CiAgICAgR0xpbnQg
c291cmNlTGV2ZWwgICA9IDA7CkBAIC04ODksNyArMTExNiwxMSBAQCBnbDo6RXJyb3IgVGV4dHVy
ZUQzRF8yRDo6Y29weUNvbXByZXNzZWRUZXh0dXJlKGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2Up
CiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlRDNEXzJE
OjpzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbHMsIEdMZW51bSBpbnRlcm5h
bEZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8y
RDo6c2V0U3RvcmFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGxldmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKQogewogICAgIEFTU0VSVChHTF9U
RVhUVVJFXzJEICYmIHNpemUuZGVwdGggPT0gMSk7CiAKQEAgLTk4NCw3ICsxMjE1LDcgQEAgZ2w6
OkVycm9yIFRleHR1cmVEM0RfMkQ6OnNldEVHTEltYWdlVGFyZ2V0KEdMZW51bSB0YXJnZXQsIGVn
bDo6SW1hZ2UgKmltYWdlKQogICAgIG1UZXhTdG9yYWdlICAgICA9IG1SZW5kZXJlci0+Y3JlYXRl
VGV4dHVyZVN0b3JhZ2VFR0xJbWFnZShlZ2xJbWFnZWQzZCwgcmVuZGVyVGFyZ2V0RDNEKTsKICAg
ICBtRUdMSW1hZ2VUYXJnZXQgPSB0cnVlOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgVGV4dHVyZUQzRF8y
RDo6aW5pdE1pcG1hcEltYWdlcygpCkBAIC0xMDcxLDEzICsxMzAyLDEzIEBAIGdsOjpFcnJvciBU
ZXh0dXJlRDNEXzJEOjppbml0aWFsaXplU3RvcmFnZShib29sIHJlbmRlclRhcmdldCkKICAgICAv
LyBPbmx5IGluaXRpYWxpemUgdGhlIGZpcnN0IHRpbWUgdGhpcyB0ZXh0dXJlIGlzIHVzZWQgYXMg
YSByZW5kZXIgdGFyZ2V0IG9yIHNoYWRlciByZXNvdXJjZQogICAgIGlmIChtVGV4U3RvcmFnZSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKICAgICAvLyBkbyBub3QgYXR0ZW1wdCB0byBj
cmVhdGUgc3RvcmFnZSBmb3Igbm9uZXhpc3RhbnQgZGF0YQogICAgIGlmICghaXNMZXZlbENvbXBs
ZXRlKGdldEJhc2VMZXZlbCgpKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKICAgICBi
b29sIGNyZWF0ZVJlbmRlclRhcmdldCA9IChyZW5kZXJUYXJnZXQgfHwgSXNSZW5kZXJUYXJnZXRV
c2FnZShtU3RhdGUuZ2V0VXNhZ2UoKSkpOwpAQCAtMTA5Nyw3ICsxMzI4LDcgQEAgZ2w6OkVycm9y
IFRleHR1cmVEM0RfMkQ6OmluaXRpYWxpemVTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0KQogICAg
IC8vIGZsdXNoIGltYWdlIGRhdGEgdG8gdGhlIHN0b3JhZ2UKICAgICBBTkdMRV9UUlkodXBkYXRl
U3RvcmFnZSgpKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZUQzRF8yRDo6Y3JlYXRl
Q29tcGxldGVTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0LCBUZXh0dXJlU3RvcmFnZSAqKm91dFRl
eFN0b3JhZ2UpIGNvbnN0CkBAIC0xMTI2LDcgKzEzNTcsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZUQz
RF8yRDo6Y3JlYXRlQ29tcGxldGVTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0LCBUZXh0dXJlU3Rv
cmFnZQogICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRGV0ZXJtaW5lIGlmIHRoZSB0ZXh0dXJlIGNy
ZWF0aW9uIHN1Y2NlZWRlZAogICAgICpvdXRUZXhTdG9yYWdlID0gbVJlbmRlcmVyLT5jcmVhdGVU
ZXh0dXJlU3RvcmFnZTJEKGludGVybmFsRm9ybWF0LCByZW5kZXJUYXJnZXQsIHdpZHRoLCBoZWln
aHQsIGxldmVscywgaGludExldmVsWmVyb09ubHkpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBU
ZXh0dXJlRDNEXzJEOjpzZXRDb21wbGV0ZVRleFN0b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKm5ld0Nv
bXBsZXRlVGV4U3RvcmFnZSkKQEAgLTEyNDMsNiArMTQ3NCwxNyBAQCB2b2lkIFRleHR1cmVEM0Rf
MkQ6Om1hcmtBbGxJbWFnZXNEaXJ0eSgpCiAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKIH0KIAor
Z2w6OkVycm9yIFRleHR1cmVEM0RfMkQ6OnNldFN0b3JhZ2VNdWx0aXNhbXBsZShDb250ZXh0SW1w
bCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xl
YW4gZml4ZWRTYW1wbGVMb2NhdGlvbnMpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJl
dHVybiBnbDo6SW50ZXJuYWxFcnJvcigpIDw8ICJzZXRTdG9yYWdlTXVsdGlzYW1wbGUgaXMgdW5p
bXBsZW1lbnRlZC4iOworfQorCiBUZXh0dXJlRDNEX0N1YmU6OlRleHR1cmVEM0RfQ3ViZShjb25z
dCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0ZSwgUmVuZGVyZXJEM0QgKnJlbmRlcmVyKQogICAgIDog
VGV4dHVyZUQzRChzdGF0ZSwgcmVuZGVyZXIpCiB7CkBAIC0xMzEwLDggKzE1NTIsMTUgQEAgZ2w6
OkVycm9yIFRleHR1cmVEM0RfQ3ViZTo6c2V0RUdMSW1hZ2VUYXJnZXQoR0xlbnVtIHRhcmdldCwg
ZWdsOjpJbWFnZSAqaW1hZ2UpCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlRDNEX0N1YmU6OnNldEltYWdlKEdMZW51bSB0
YXJnZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0
ZW50cyAmc2l6ZSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBj
b25zdCB1aW50OF90ICpwaXhlbHMpCitnbDo6RXJyb3IgVGV4dHVyZUQzRF9DdWJlOjpzZXRJbWFn
ZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQogewogICAgIEFTU0VSVChzaXplLmRlcHRo
ID09IDEpOwogCkBAIC0xMzIzLDggKzE1NzIsMTQgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfQ3Vi
ZTo6c2V0SW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBHTGVudW0gaW50ZXJuYWwK
ICAgICByZXR1cm4gc2V0SW1hZ2VJbXBsKGluZGV4LCB0eXBlLCB1bnBhY2ssIHBpeGVscywgMCk7
CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlRDNEX0N1YmU6OnNldFN1YkltYWdlKEdMZW51bSB0YXJn
ZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OkJveCAmYXJlYSwgR0xlbnVtIGZvcm1hdCwgR0xl
bnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBjb25zdCB1aW50OF90ICpwaXhlbHMpCitnbDo6
RXJyb3IgVGV4dHVyZUQzRF9DdWJlOjpzZXRTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dElt
cGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJl
YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFj
a1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICpwaXhlbHMpCiB7CiAgICAgQVNTRVJUKGFyZWEuZGVwdGggPT0gMSAmJiBh
cmVhLnogPT0gMCk7CiAKQEAgLTEzMzIsOCArMTU4NywxNCBAQCBnbDo6RXJyb3IgVGV4dHVyZUQz
RF9DdWJlOjpzZXRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGds
OjpCbwogICAgIHJldHVybiBUZXh0dXJlRDNEOjpzdWJJbWFnZShpbmRleCwgYXJlYSwgZm9ybWF0
LCB0eXBlLCB1bnBhY2ssIHBpeGVscywgMCk7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlRDNEX0N1
YmU6OnNldENvbXByZXNzZWRJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIEdMZW51
bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3Rh
dGUgJnVucGFjaywgc2l6ZV90IGltYWdlU2l6ZSwgY29uc3QgdWludDhfdCAqcGl4ZWxzKQorZ2w6
OkVycm9yIFRleHR1cmVEM0RfQ3ViZTo6c2V0Q29tcHJlc3NlZEltYWdlKENvbnRleHRJbXBsICpj
b250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5w
YWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKIHsKICAgICBBU1NFUlQoc2l6
ZS5kZXB0aCA9PSAxKTsKIApAQCAtMTM0Niw4ICsxNjA3LDE0IEBAIGdsOjpFcnJvciBUZXh0dXJl
RDNEX0N1YmU6OnNldENvbXByZXNzZWRJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWws
IEdMZW51CiAgICAgcmV0dXJuIHNldENvbXByZXNzZWRJbWFnZUltcGwoaW5kZXgsIHVucGFjaywg
cGl4ZWxzLCAwKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0RfQ3ViZTo6c2V0Q29tcHJlc3Nl
ZFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OkJveCAmYXJl
YSwgR0xlbnVtIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXplX3QgaW1h
Z2VTaXplLCBjb25zdCB1aW50OF90ICpwaXhlbHMpCitnbDo6RXJyb3IgVGV4dHVyZUQzRF9DdWJl
OjpzZXRDb21wcmVzc2VkU3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGdsOjpCb3ggJmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNr
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQogewogICAgIEFTU0VSVChhcmVhLmRlcHRoID09
IDEgJiYgYXJlYS56ID09IDApOwogCkBAIC0xMzU3LDcgKzE2MjQsOCBAQCBnbDo6RXJyb3IgVGV4
dHVyZUQzRF9DdWJlOjpzZXRDb21wcmVzc2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90
IGxldmVsLCBjbwogICAgIHJldHVybiBjb21taXRSZWdpb24oaW5kZXgsIGFyZWEpOwogfQogCi1n
bDo6RXJyb3IgVGV4dHVyZUQzRF9DdWJlOjpjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwKK2dsOjpF
cnJvciBUZXh0dXJlRDNEX0N1YmU6OmNvcHlJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VMZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZz
b3VyY2VBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBp
bnRlcm5hbEZvcm1hdCwKQEAgLTEzOTYsMTAgKzE2NjQsMTEgQEAgZ2w6OkVycm9yIFRleHR1cmVE
M0RfQ3ViZTo6Y29weUltYWdlKEdMZW51bSB0YXJnZXQsCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0RfQ3ViZTo6Y29weVN1YkltYWdlKEdMZW51bSB0
YXJnZXQsCitnbDo6RXJyb3IgVGV4dHVyZUQzRF9DdWJlOjpjb3B5U3ViSW1hZ2UoQ29udGV4dElt
cGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGltYWdlTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLApAQCAtMTQz
NSwxMCArMTcwNCwxNCBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF9DdWJlOjpjb3B5U3ViSW1hZ2Uo
R0xlbnVtIHRhcmdldCwKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3Ig
VGV4dHVyZUQzRF9DdWJlOjpzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbHMs
IEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpCitnbDo6RXJy
b3IgVGV4dHVyZUQzRF9DdWJlOjpzZXRTdG9yYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVscywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAm
c2l6ZSkKIHsKICAgICBBU1NFUlQoc2l6ZS53aWR0aCA9PSBzaXplLmhlaWdodCk7CiAgICAgQVNT
RVJUKHNpemUuZGVwdGggPT0gMSk7CkBAIC0xNjA3LDcgKzE4ODAsNyBAQCBnbDo6RXJyb3IgVGV4
dHVyZUQzRF9DdWJlOjpjcmVhdGVDb21wbGV0ZVN0b3JhZ2UoYm9vbCByZW5kZXJUYXJnZXQsIFRl
eHR1cmVTdG9yYQogICAgIC8vIFRPRE8gKGdlb2ZmbGFuZyk6IGRldGVjdCBpZiBzdG9yYWdlIGNy
ZWF0aW9uIHN1Y2NlZWRlZAogICAgICpvdXRUZXhTdG9yYWdlID0gbVJlbmRlcmVyLT5jcmVhdGVU
ZXh0dXJlU3RvcmFnZUN1YmUoZ2V0QmFzZUxldmVsSW50ZXJuYWxGb3JtYXQoKSwgcmVuZGVyVGFy
Z2V0LCBzaXplLCBsZXZlbHMsIGhpbnRMZXZlbFplcm9Pbmx5KTsKIAotICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6
RXJyb3IgVGV4dHVyZUQzRF9DdWJlOjpzZXRDb21wbGV0ZVRleFN0b3JhZ2UoVGV4dHVyZVN0b3Jh
Z2UgKm5ld0NvbXBsZXRlVGV4U3RvcmFnZSkKQEAgLTE2MjgsNyArMTkwMSw3IEBAIGdsOjpFcnJv
ciBUZXh0dXJlRDNEX0N1YmU6OnNldENvbXBsZXRlVGV4U3RvcmFnZShUZXh0dXJlU3RvcmFnZSAq
bmV3Q29tcGxldGVUZXhTCiAgICAgbVRleFN0b3JhZ2UgPSBuZXdDb21wbGV0ZVRleFN0b3JhZ2U7
CiAKICAgICBtRGlydHlJbWFnZXMgPSB0cnVlOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVy
ZUQzRF9DdWJlOjp1cGRhdGVTdG9yYWdlKCkKQEAgLTE4NTksNyArMjEzMiw4IEBAIGdsOjpFcnJv
ciBUZXh0dXJlRDNEXzNEOjpzZXRFR0xJbWFnZVRhcmdldChHTGVudW0gdGFyZ2V0LCBlZ2w6Oklt
YWdlICppbWFnZSkKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
IH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0RfM0Q6OnNldEltYWdlKEdMZW51bSB0YXJnZXQsCitn
bDo6RXJyb3IgVGV4dHVyZUQzRF8zRDo6c2V0SW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlTGV2ZWwsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLApAQCAt
MTkwMSwxMCArMjE3NSwxMSBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8zRDo6c2V0SW1hZ2UoR0xl
bnVtIHRhcmdldCwKICAgICAgICAgQU5HTEVfVFJZKHNldEltYWdlSW1wbChpbmRleCwgdHlwZSwg
dW5wYWNrLCBwaXhlbHMsIDApKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05P
X0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1
cmVEM0RfM0Q6OnNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQsCitnbDo6RXJyb3IgVGV4dHVyZUQz
RF8zRDo6c2V0U3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlTGV2ZWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LApAQCAtMTkzMiw3ICsyMjA3LDgg
QEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfM0Q6OnNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQsCiAg
ICAgfQogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF8zRDo6c2V0Q29tcHJlc3NlZEltYWdlKEdM
ZW51bSB0YXJnZXQsCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8zRDo6c2V0Q29tcHJlc3NlZEltYWdl
KENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNp
emUsCkBAIC0xOTUwLDggKzIyMjYsMTQgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfM0Q6OnNldENv
bXByZXNzZWRJbWFnZShHTGVudW0gdGFyZ2V0LAogICAgIHJldHVybiBzZXRDb21wcmVzc2VkSW1h
Z2VJbXBsKGluZGV4LCB1bnBhY2ssIHBpeGVscywgMCk7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJl
RDNEXzNEOjpzZXRDb21wcmVzc2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVs
LCBjb25zdCBnbDo6Qm94ICZhcmVhLCBHTGVudW0gZm9ybWF0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAm
dW5wYWNrLCBzaXplX3QgaW1hZ2VTaXplLCBjb25zdCB1aW50OF90ICpwaXhlbHMpCitnbDo6RXJy
b3IgVGV4dHVyZUQzRF8zRDo6c2V0Q29tcHJlc3NlZFN1YkltYWdlKENvbnRleHRJbXBsICpjb250
ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAm
dW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgaW1hZ2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpCiB7CiAgICAgQVNTRVJUKHRhcmdldCA9PSBH
TF9URVhUVVJFXzNEKTsKIApAQCAtMTk2MCwxNCArMjI0MiwxOSBAQCBnbDo6RXJyb3IgVGV4dHVy
ZUQzRF8zRDo6c2V0Q29tcHJlc3NlZFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZl
bCwgY29ucwogICAgIHJldHVybiBjb21taXRSZWdpb24oaW5kZXgsIGFyZWEpOwogfQogCi1nbDo6
RXJyb3IgVGV4dHVyZUQzRF8zRDo6Y29weUltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZl
bCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwgR0xlbnVtIGludGVybmFsRm9ybWF0
LAorZ2w6OkVycm9yIFRleHR1cmVEM0RfM0Q6OmNvcHlJbWFnZShDb250ZXh0SW1wbCAqY29udGV4
dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNl
QXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFs
Rm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJh
bWVidWZmZXIgKnNvdXJjZSkKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgcmV0dXJuIGds
OjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvcHlpbmcgM0QgdGV4dHVyZXMgaXMgdW5p
bXBsZW1lbnRlZC4iKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0RfM0Q6OmNvcHlTdWJJbWFn
ZShHTGVudW0gdGFyZ2V0LAorZ2w6OkVycm9yIFRleHR1cmVEM0RfM0Q6OmNvcHlTdWJJbWFnZShD
b250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbWFnZUxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLApAQCAtMTk3
NiwyOSArMjI2MywzOCBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8zRDo6Y29weVN1YkltYWdlKEdM
ZW51bSB0YXJnZXQsCiAgICAgQVNTRVJUKHRhcmdldCA9PSBHTF9URVhUVVJFXzNEKTsKIAogICAg
IEdMaW50IGxldmVsICAgICAgICAgID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KGltYWdlTGV2ZWwpOwot
ICAgIGdsOjpJbWFnZUluZGV4IGluZGV4ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2UzRChsZXZlbCk7
CiAKLSAgICBpZiAoY2FuQ3JlYXRlUmVuZGVyVGFyZ2V0Rm9ySW1hZ2UoaW5kZXgpKQorICAgIC8v
IEN1cnJlbnRseSwgM0Qgc2luZ2xlLWxheWVyIGJsaXRzIGFyZSBicm9rZW4gYmVjYXVzZSB3ZSBk
b24ndCBrbm93IGhvdyB0byBtYWtlIGFuIFNSVgorICAgIC8vIGZvciBhIHNpbmdsZSBsYXllciBv
ZiBhIDNEIHRleHR1cmUuCisgICAgLy8gVE9ETyhqbWFkaWxsKTogSW52ZXN0aWdhdGUgM0QgYmxp
dHMgaW4gRDNEMTEuCisgICAgLy8gZ2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJbmRl
eDo6TWFrZTNEKGxldmVsKTsKKworICAgIC8vIGlmICghY2FuQ3JlYXRlUmVuZGVyVGFyZ2V0Rm9y
SW1hZ2UoaW5kZXgpKQogICAgIHsKICAgICAgICAgQU5HTEVfVFJZKG1JbWFnZUFycmF5W2xldmVs
XS0+Y29weUZyb21GcmFtZWJ1ZmZlcihkZXN0T2Zmc2V0LCBzb3VyY2VBcmVhLCBzb3VyY2UpKTsK
ICAgICAgICAgbURpcnR5SW1hZ2VzID0gdHJ1ZTsKICAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAg
ICAgICAgQU5HTEVfVFJZKGVuc3VyZVJlbmRlclRhcmdldCgpKTsKLSAgICAgICAgaWYgKGlzVmFs
aWRMZXZlbChsZXZlbCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFOR0xFX1RSWSh1cGRhdGVT
dG9yYWdlTGV2ZWwobGV2ZWwpKTsKLSAgICAgICAgICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmNv
cHlJbWFnZTNEKAotICAgICAgICAgICAgICAgIHNvdXJjZSwgc291cmNlQXJlYSwgZ2w6OkdldElu
dGVybmFsRm9ybWF0SW5mbyhnZXRCYXNlTGV2ZWxJbnRlcm5hbEZvcm1hdCgpKS5mb3JtYXQsCi0g
ICAgICAgICAgICAgICAgZGVzdE9mZnNldCwgbVRleFN0b3JhZ2UsIGxldmVsKSk7Ci0gICAgICAg
IH0KLSAgICB9CisgICAgLy8gZWxzZQorICAgIC8veworICAgIC8vICAgIEFOR0xFX1RSWShlbnN1
cmVSZW5kZXJUYXJnZXQoKSk7CisgICAgLy8gICAgaWYgKGlzVmFsaWRMZXZlbChsZXZlbCkpCisg
ICAgLy8gICAgeworICAgIC8vICAgICAgICBBTkdMRV9UUlkodXBkYXRlU3RvcmFnZUxldmVsKGxl
dmVsKSk7CisgICAgLy8gICAgICAgIEFOR0xFX1RSWShtUmVuZGVyZXItPmNvcHlJbWFnZTNEKAor
ICAgIC8vICAgICAgICAgICAgc291cmNlLCBzb3VyY2VBcmVhLAorICAgIC8vICAgICAgICAgICAg
Z2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhnZXRCYXNlTGV2ZWxJbnRlcm5hbEZvcm1hdCgpKS5m
b3JtYXQsCisgICAgLy8gICAgICAgICAgICBkZXN0T2Zmc2V0LCBtVGV4U3RvcmFnZSwgbGV2ZWwp
KTsKKyAgICAvLyAgICB9CisgICAgLy99CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVE
M0RfM0Q6OnNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVscywgR0xlbnVtIGlu
dGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSkKK2dsOjpFcnJvciBUZXh0dXJl
RDNEXzNEOjpzZXRTdG9yYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWxzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpCiB7CiAgICAgQVNTRVJU
KHRhcmdldCA9PSBHTF9URVhUVVJFXzNEKTsKIApAQCAtMjA4MiwxMyArMjM3OCwxMyBAQCBnbDo6
RXJyb3IgVGV4dHVyZUQzRF8zRDo6aW5pdGlhbGl6ZVN0b3JhZ2UoYm9vbCByZW5kZXJUYXJnZXQp
CiAgICAgLy8gT25seSBpbml0aWFsaXplIHRoZSBmaXJzdCB0aW1lIHRoaXMgdGV4dHVyZSBpcyB1
c2VkIGFzIGEgcmVuZGVyIHRhcmdldCBvciBzaGFkZXIgcmVzb3VyY2UKICAgICBpZiAobVRleFN0
b3JhZ2UpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAgLy8gZG8gbm90IGF0dGVt
cHQgdG8gY3JlYXRlIHN0b3JhZ2UgZm9yIG5vbmV4aXN0YW50IGRhdGEKICAgICBpZiAoIWlzTGV2
ZWxDb21wbGV0ZShnZXRCYXNlTGV2ZWwoKSkpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQog
CiAgICAgYm9vbCBjcmVhdGVSZW5kZXJUYXJnZXQgPSAocmVuZGVyVGFyZ2V0IHx8IElzUmVuZGVy
VGFyZ2V0VXNhZ2UobVN0YXRlLmdldFVzYWdlKCkpKTsKQEAgLTIxMjYsNyArMjQyMiw3IEBAIGds
OjpFcnJvciBUZXh0dXJlRDNEXzNEOjpjcmVhdGVDb21wbGV0ZVN0b3JhZ2UoYm9vbCByZW5kZXJU
YXJnZXQsIFRleHR1cmVTdG9yYWdlCiAgICAgLy8gVE9ETzogVmVyaWZ5IGNyZWF0aW9uIG9mIHRo
ZSBzdG9yYWdlIHN1Y2NlZWRlZAogICAgICpvdXRTdG9yYWdlID0gbVJlbmRlcmVyLT5jcmVhdGVU
ZXh0dXJlU3RvcmFnZTNEKGludGVybmFsRm9ybWF0LCByZW5kZXJUYXJnZXQsIHdpZHRoLCBoZWln
aHQsIGRlcHRoLCBsZXZlbHMpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlRDNEXzNE
OjpzZXRDb21wbGV0ZVRleFN0b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKm5ld0NvbXBsZXRlVGV4U3Rv
cmFnZSkKQEAgLTIyMzUsMTIgKzI1MzEsMTIgQEAgdm9pZCBUZXh0dXJlRDNEXzNEOjpyZWRlZmlu
ZUltYWdlKEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGNvbnN0IGdsOjoKICAg
ICBjb25zdCBpbnQgc3RvcmFnZVdpZHRoICA9IHN0ZDo6bWF4KDEsIGdldExldmVsWmVyb1dpZHRo
KCkgPj4gbGV2ZWwpOwogICAgIGNvbnN0IGludCBzdG9yYWdlSGVpZ2h0ID0gc3RkOjptYXgoMSwg
Z2V0TGV2ZWxaZXJvSGVpZ2h0KCkgPj4gbGV2ZWwpOwogICAgIGNvbnN0IGludCBzdG9yYWdlRGVw
dGggID0gc3RkOjptYXgoMSwgZ2V0TGV2ZWxaZXJvRGVwdGgoKSA+PiBsZXZlbCk7CisgICAgY29u
c3QgR0xlbnVtIHN0b3JhZ2VGb3JtYXQgPSBnZXRCYXNlTGV2ZWxJbnRlcm5hbEZvcm1hdCgpOwog
CiAgICAgbUltYWdlQXJyYXlbbGV2ZWxdLT5yZWRlZmluZShHTF9URVhUVVJFXzNELCBpbnRlcm5h
bGZvcm1hdCwgc2l6ZSwgZmFsc2UpOwogCiAgICAgaWYgKG1UZXhTdG9yYWdlKQogICAgIHsKLSAg
ICAgICAgY29uc3QgR0xlbnVtIHN0b3JhZ2VGb3JtYXQgPSBnZXRCYXNlTGV2ZWxJbnRlcm5hbEZv
cm1hdCgpOwogICAgICAgICBjb25zdCBpbnQgc3RvcmFnZUxldmVscyA9IG1UZXhTdG9yYWdlLT5n
ZXRMZXZlbENvdW50KCk7CiAKICAgICAgICAgaWYgKChsZXZlbCA+PSBzdG9yYWdlTGV2ZWxzICYm
IHN0b3JhZ2VMZXZlbHMgIT0gMCkgfHwKQEAgLTIzNTYsNyArMjY1Miw4IEBAIGdsOjpFcnJvciBU
ZXh0dXJlRDNEXzJEQXJyYXk6OnNldEVHTEltYWdlVGFyZ2V0KEdMZW51bSB0YXJnZXQsIGVnbDo6
SW1hZ2UgKmltYWdlCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6OnNldEltYWdlKEdMZW51bSB0YXJn
ZXQsCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8yREFycmF5OjpzZXRJbWFnZShDb250ZXh0SW1wbCAq
Y29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGltYWdlTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKQEAgLTIzODgsNyArMjY4NSw4IEBAIGdsOjpFcnJv
ciBUZXh0dXJlRDNEXzJEQXJyYXk6OnNldEltYWdlKEdMZW51bSB0YXJnZXQsCiAgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6OnNldFN1
YkltYWdlKEdMZW51bSB0YXJnZXQsCitnbDo6RXJyb3IgVGV4dHVyZUQzRF8yREFycmF5OjpzZXRT
dWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlTGV2ZWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKQEAgLTI0MTks
NyArMjcxNyw4IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6OnNldFN1YkltYWdlKEdM
ZW51bSB0YXJnZXQsCiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBU
ZXh0dXJlRDNEXzJEQXJyYXk6OnNldENvbXByZXNzZWRJbWFnZShHTGVudW0gdGFyZ2V0LAorZ2w6
OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6c2V0Q29tcHJlc3NlZEltYWdlKENvbnRleHRJbXBs
ICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZUxldmVsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0
ZW50cyAmc2l6ZSwKQEAgLTI0NTAsOCArMjc0OSwxNCBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF8y
REFycmF5OjpzZXRDb21wcmVzc2VkSW1hZ2UoR0xlbnVtIHRhcmdldCwKICAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6c2V0Q29tcHJl
c3NlZFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OkJveCAm
YXJlYSwgR0xlbnVtIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXpl
X3QgaW1hZ2VTaXplLCBjb25zdCB1aW50OF90ICpwaXhlbHMpCitnbDo6RXJyb3IgVGV4dHVyZUQz
RF8yREFycmF5OjpzZXRDb21wcmVzc2VkU3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxz
KQogewogICAgIEFTU0VSVCh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRF9BUlJBWSk7CiAKQEAgLTI0
NzQsMTcgKzI3NzksMjIgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6c2V0Q29tcHJl
c3NlZFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwKICAgICAgICAgQU5HTEVf
VFJZKGNvbW1pdFJlZ2lvbihpbmRleCwgbGF5ZXJBcmVhKSk7CiAgICAgfQogCi0gICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
LWdsOjpFcnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6OmNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LCBz
aXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsIEdMZW51bSBpbnRl
cm5hbEZvcm1hdCwKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6OmNvcHlJbWFnZShDb250
ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2Up
CiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04sICJDb3B5aW5nIDJEIGFycmF5IHRleHR1cmVzIGlzIHVuaW1wbGVtZW50ZWQu
Iik7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6OmNvcHlTdWJJbWFnZShHTGVu
dW0gdGFyZ2V0LAorZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6Y29weVN1YkltYWdlKENv
bnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBpbWFnZUxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAm
c291cmNlQXJlYSwKQEAgLTI0OTUsNyArMjgwNSw3IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzJE
QXJyYXk6OmNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAogICAgIEdMaW50IGxldmVsICAgICAg
ICAgID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KGltYWdlTGV2ZWwpOwogICAgIGdsOjpJbWFnZUluZGV4
IGluZGV4ID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2UyREFycmF5KGxldmVsLCBkZXN0T2Zmc2V0Lnop
OwogCi0gICAgaWYgKGNhbkNyZWF0ZVJlbmRlclRhcmdldEZvckltYWdlKGluZGV4KSkKKyAgICBp
ZiAoIWNhbkNyZWF0ZVJlbmRlclRhcmdldEZvckltYWdlKGluZGV4KSkKICAgICB7CiAgICAgICAg
IGdsOjpPZmZzZXQgZGVzdExheWVyT2Zmc2V0KGRlc3RPZmZzZXQueCwgZGVzdE9mZnNldC55LCAw
KTsKICAgICAgICAgQU5HTEVfVFJZKG1JbWFnZUFycmF5W2xldmVsXVtkZXN0T2Zmc2V0LnpdLT5j
b3B5RnJvbUZyYW1lYnVmZmVyKGRlc3RMYXllck9mZnNldCwgc291cmNlQXJlYSwKQEAgLTI1MTUs
MTAgKzI4MjUsMTQgQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfMkRBcnJheTo6Y29weVN1YkltYWdl
KEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgbVRleFN0b3JhZ2UsIGxldmVsKSk7CiAg
ICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6
OnNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVscywgR0xlbnVtIGludGVybmFs
Rm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSkKK2dsOjpFcnJvciBUZXh0dXJlRDNEXzJE
QXJyYXk6OnNldFN0b3JhZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWxzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZz
aXplKQogewogICAgIEFTU0VSVCh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRF9BUlJBWSk7CiAKQEAg
LTI3NjMsNyArMzA3Nyw3IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEXzJEQXJyYXk6OnVwZGF0ZVN0
b3JhZ2VMZXZlbChpbnQgbGV2ZWwpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogdm9p
ZCBUZXh0dXJlRDNEXzJEQXJyYXk6OmRlbGV0ZUltYWdlcygpCkBAIC0yODk5LDcgKzMyMTMsOCBA
QCBHTHNpemVpIFRleHR1cmVEM0RfRXh0ZXJuYWw6OmdldExheWVyQ291bnQoaW50IGxldmVsKSBj
b25zdAogICAgIHJldHVybiAxOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5hbDo6
c2V0SW1hZ2UoR0xlbnVtIHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjpz
ZXRJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VMZXZlbCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCkBAIC0y
OTEzLDcgKzMyMjgsOCBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5hbDo6c2V0SW1hZ2Uo
R0xlbnVtIHRhcmdldCwKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OnNldFN1YkltYWdlKEdMZW51
bSB0YXJnZXQsCitnbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5hbDo6c2V0U3ViSW1hZ2UoQ29u
dGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGltYWdlTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LApAQCAtMjkyNSw3ICszMjQx
LDggQEAgZ2w6OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OnNldFN1YkltYWdlKEdMZW51bSB0
YXJnZXQsCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAK
LWdsOjpFcnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjpzZXRDb21wcmVzc2VkSW1hZ2UoR0xlbnVt
IHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjpzZXRDb21wcmVzc2VkSW1h
Z2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VMZXZlbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVy
bmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKQEAgLTI5MzcsNyArMzI1NCw4IEBAIGdsOjpF
cnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjpzZXRDb21wcmVzc2VkSW1hZ2UoR0xlbnVtIHRhcmdl
dCwKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotZ2w6
OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OnNldENvbXByZXNzZWRTdWJJbWFnZShHTGVudW0g
dGFyZ2V0LAorZ2w6OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OnNldENvbXByZXNzZWRTdWJJ
bWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OkJveCAmYXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKQEAgLTI5NDksNyArMzI2Nyw4IEBAIGdsOjpFcnJv
ciBUZXh0dXJlRDNEX0V4dGVybmFsOjpzZXRDb21wcmVzc2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdl
dCwKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotZ2w6
OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OmNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LAorZ2w6
OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OmNvcHlJbWFnZShDb250ZXh0SW1wbCAqY29udGV4
dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBp
bWFnZUxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCkBAIC0yOTU5LDcgKzMyNzgsOCBA
QCBnbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5hbDo6Y29weUltYWdlKEdMZW51bSB0YXJnZXQs
CiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLWdsOjpF
cnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjpjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKK2ds
OjpFcnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjpjb3B5U3ViSW1hZ2UoQ29udGV4dEltcGwgKmNv
bnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgaW1hZ2VMZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJl
YSwKQEAgLTI5NjksNyArMzI4OSw4IEBAIGdsOjpFcnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjpj
b3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVEM0RfRXh0ZXJuYWw6OnNldFN0
b3JhZ2UoR0xlbnVtIHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjpzZXRT
dG9yYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWxzLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpCkBA
IC0yOTkyLDcgKzMzMTMsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5hbDo6c2V0SW1h
Z2VFeHRlcm5hbChHTGVudW0gdGFyZ2V0LAogICAgICAgICBtVGV4U3RvcmFnZSA9IG1SZW5kZXJl
ci0+Y3JlYXRlVGV4dHVyZVN0b3JhZ2VFeHRlcm5hbChzdHJlYW0sIGRlc2MpOwogICAgIH0KIAot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCiB2b2lkIFRleHR1cmVEM0RfRXh0ZXJuYWw6OmJpbmRUZXhJbWFnZShlZ2w6OlN1
cmZhY2UgKnN1cmZhY2UpCkBAIC0zMDM5LDIwICszMzYwLDIwIEBAIGdsOjpFcnJvciBUZXh0dXJl
RDNEX0V4dGVybmFsOjppbml0aWFsaXplU3RvcmFnZShib29sIHJlbmRlclRhcmdldCkKIHsKICAg
ICAvLyBUZXh0dXJlIHN0b3JhZ2UgaXMgY3JlYXRlZCB3aGVuIGFuIGV4dGVybmFsIGltYWdlIGlz
IGJvdW5kCiAgICAgQVNTRVJUKG1UZXhTdG9yYWdlKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRl
eHR1cmVEM0RfRXh0ZXJuYWw6OmNyZWF0ZUNvbXBsZXRlU3RvcmFnZShib29sIHJlbmRlclRhcmdl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGV4dHVyZVN0b3JhZ2UgKipvdXRUZXhTdG9yYWdlKSBjb25zdAogewogICAgIFVOUkVBQ0hBQkxF
KCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlRDNEX0V4dGVybmFsOjpzZXRDb21wbGV0
ZVRleFN0b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKm5ld0NvbXBsZXRlVGV4U3RvcmFnZSkKIHsKICAg
ICBVTlJFQUNIQUJMRSgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAg
IHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZUQzRF9FeHRlcm5h
bDo6dXBkYXRlU3RvcmFnZSgpCkBAIC0zMDYwLDcgKzMzODEsNyBAQCBnbDo6RXJyb3IgVGV4dHVy
ZUQzRF9FeHRlcm5hbDo6dXBkYXRlU3RvcmFnZSgpCiAgICAgLy8gVGV4dHVyZSBzdG9yYWdlIGRv
ZXMgbm90IG5lZWQgdG8gYmUgdXBkYXRlZCBzaW5jZSBpdCBpcyBhbHJlYWR5IGxvYWRlZCB3aXRo
IHRoZSBsYXRlc3QKICAgICAvLyBleHRlcm5hbCBpbWFnZQogICAgIEFTU0VSVChtVGV4U3RvcmFn
ZSk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKIGdsOjpJbWFnZUluZGV4SXRlcmF0b3IgVGV4dHVyZUQzRF9FeHRlcm5h
bDo6aW1hZ2VJdGVyYXRvcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVEM0QuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4dHVyZUQzRC5oCmluZGV4
IDk5MzQzNjMyYTk0Li4zZGE1OWUzYzRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0dXJlRDNELmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0dXJlRDNELmgK
QEAgLTQ1LDYgKzQ1LDEzIEBAIGNsYXNzIFRleHR1cmVEM0QgOiBwdWJsaWMgVGV4dHVyZUltcGwK
ICAgICBHTGludCBnZXRCYXNlTGV2ZWxIZWlnaHQoKSBjb25zdDsKICAgICBHTGVudW0gZ2V0QmFz
ZUxldmVsSW50ZXJuYWxGb3JtYXQoKSBjb25zdDsKIAorICAgIGdsOjpFcnJvciBzZXRTdG9yYWdl
TXVsdGlzYW1wbGUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlvbnMpIG92ZXJyaWRl
OworCiAgICAgYm9vbCBpc0ltbXV0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1JbW11dGFibGU7IH0K
IAogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdldFJlbmRlclRhcmdldChjb25zdCBnbDo6SW1hZ2VJ
bmRleCAmaW5kZXgsIFJlbmRlclRhcmdldEQzRCAqKm91dFJUKSA9IDA7CkBAIC02MCw3ICs2Nyw3
IEBAIGNsYXNzIFRleHR1cmVEM0QgOiBwdWJsaWMgVGV4dHVyZUltcGwKICAgICB2aXJ0dWFsIGds
OjpFcnJvciBzZXRJbWFnZUV4dGVybmFsKEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN0cmVhbSAqc3RyZWFtLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpTdHJlYW06OkdMVGV4dHVyZURl
c2NyaXB0aW9uICZkZXNjKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgZ2VuZXJhdGVNaXBtYXAo
KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZ2VuZXJhdGVNaXBtYXAoQ29udGV4dEltcGwgKmNv
bnRleHRJbXBsKSBvdmVycmlkZTsKICAgICBUZXh0dXJlU3RvcmFnZSAqZ2V0U3RvcmFnZSgpOwog
ICAgIEltYWdlRDNEICpnZXRCYXNlTGV2ZWxJbWFnZSgpIGNvbnN0OwogCkBAIC0xNDUsMzYgKzE1
Miw4MSBAQCBjbGFzcyBUZXh0dXJlRDNEXzJEIDogcHVibGljIFRleHR1cmVEM0QKICAgICBHTGVu
dW0gZ2V0SW50ZXJuYWxGb3JtYXQoR0xpbnQgbGV2ZWwpIGNvbnN0OwogICAgIGJvb2wgaXNEZXB0
aChHTGludCBsZXZlbCkgY29uc3Q7CiAKLSAgICBnbDo6RXJyb3Igc2V0SW1hZ2UoR0xlbnVtIHRh
cmdldCwgc2l6ZV90IGxldmVsLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IGdsOjpFeHRl
bnRzICZzaXplLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAq
cGl4ZWxzKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3Igc2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdl
dCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6Qm94ICZhcmVhLCBHTGVudW0gZm9ybWF0LCBHTGVu
dW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNr
U3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICBnbDo6
RXJyb3Igc2V0SW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAm
dW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92
ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dElt
cGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CiAK
LSAgICBnbDo6RXJyb3Igc2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBs
ZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRl
ICZ1bnBhY2ssIHNpemVfdCBpbWFnZVNpemUsIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJp
ZGU7Ci0gICAgZ2w6OkVycm9yIHNldENvbXByZXNzZWRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBz
aXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpCb3ggJmFyZWEsIEdMZW51bSBmb3JtYXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAm
dW5wYWNrLCBzaXplX3QgaW1hZ2VTaXplLCBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRl
OworICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJ
bXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFj
aywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92
ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkU3ViSW1hZ2UoQ29udGV4dEltcGwg
KmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZl
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFy
ZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNr
U3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1
aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwogCi0gICAgZ2w6OkVycm9yIGNvcHlJbWFnZShHTGVu
dW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEs
IEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICBnbDo6RXJyb3IgY29weUltYWdlKENvbnRleHRJ
bXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBj
b3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6T2Zmc2V0
ICZkZXN0T2Zmc2V0LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgIGdsOjpF
cnJvciBjb3B5U3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZz
ZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVj
dGFuZ2xlICZzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OkZyYW1lYnVmZmVyICpzb3VyY2UpIG92ZXJyaWRlOwogCi0gICAgZ2w6OkVycm9yIGNvcHlUZXh0
dXJlKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICBnbDo6RXJyb3IgY29weVRleHR1cmUoQ29u
dGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBzb3VyY2VMZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tGbGlw
WSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFscGhh
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1VubXVsdGlwbHlBbHBoYSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSkgb3Zl
cnJpZGU7Ci0gICAgZ2w6OkVycm9yIGNvcHlTdWJUZXh0dXJlKGNvbnN0IGdsOjpPZmZzZXQgJmRl
c3RPZmZzZXQsCisgICAgZ2w6OkVycm9yIGNvcHlTdWJUZXh0dXJlKENvbnRleHRJbXBsICpjb250
ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3Qgc291cmNlTGV2ZWwsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrRmxpcFksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpIG92ZXJyaWRlOwotICAgIGdsOjpF
cnJvciBjb3B5Q29tcHJlc3NlZFRleHR1cmUoY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSkgb3Zl
cnJpZGU7CisgICAgZ2w6OkVycm9yIGNvcHlDb21wcmVzc2VkVGV4dHVyZShDb250ZXh0SW1wbCAq
Y29udGV4dEltcGwsIGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpIG92ZXJyaWRlOwogCi0gICAg
Z2w6OkVycm9yIHNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVscywgR0xlbnVt
IGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSkgb3ZlcnJpZGU7CisgICAg
Z2w6OkVycm9yIHNldFN0b3JhZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGxldmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxG
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUp
IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGJpbmRUZXhJbWFnZShlZ2w6OlN1cmZhY2Ug
KnN1cmZhY2UpOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlVGV4SW1hZ2UoKTsKQEAgLTE4Nyw2
ICsyMzksMTMgQEAgY2xhc3MgVGV4dHVyZUQzRF8yRCA6IHB1YmxpYyBUZXh0dXJlRDNECiAgICAg
dmlydHVhbCBnbDo6SW1hZ2VJbmRleCBnZXRJbWFnZUluZGV4KEdMaW50IG1pcCwgR0xpbnQgbGF5
ZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkSW5kZXgoY29uc3QgZ2w6OkltYWdl
SW5kZXggJmluZGV4KSBjb25zdDsKIAorICAgIGdsOjpFcnJvciBzZXRTdG9yYWdlTXVsdGlzYW1w
bGUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2NhdGlvbnMpIG92ZXJyaWRlOworCiAgIHBy
b3RlY3RlZDoKICAgICB2b2lkIG1hcmtBbGxJbWFnZXNEaXJ0eSgpIG92ZXJyaWRlOwogCkBAIC0y
MjksMjIgKzI4OCw1OSBAQCBjbGFzcyBUZXh0dXJlRDNEX0N1YmUgOiBwdWJsaWMgVGV4dHVyZUQz
RAogICAgIEdMZW51bSBnZXRJbnRlcm5hbEZvcm1hdChHTGludCBsZXZlbCwgR0xpbnQgbGF5ZXIp
IGNvbnN0OwogICAgIGJvb2wgaXNEZXB0aChHTGludCBsZXZlbCwgR0xpbnQgbGF5ZXIpIGNvbnN0
OwogCi0gICAgZ2w6OkVycm9yIHNldEltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwg
R0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwgR0xlbnVtIGZv
cm1hdCwgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhl
bFVucGFja1N0YXRlICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7Ci0g
ICAgZ2w6OkVycm9yIHNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29u
c3QgZ2w6OkJveCAmYXJlYSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIGNvbnN0
IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNldEltYWdlKENvbnRl
eHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJy
b3Igc2V0U3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwogCi0gICAgZ2w6OkVycm9yIHNldENv
bXByZXNzZWRJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIEdMZW51bSBpbnRlcm5h
bEZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXplX3QgaW1h
Z2VTaXplLCBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBz
ZXRDb21wcmVzc2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBn
bDo6Qm94ICZhcmVhLCBHTGVudW0gZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgc2l6ZV90IGltYWdl
U2l6ZSwgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0
Q29tcHJlc3NlZEltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJy
b3Igc2V0Q29tcHJlc3NlZFN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVy
cmlkZTsKIAotICAgIGdsOjpFcnJvciBjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxl
dmVsLCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLCBHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsCisgICAgZ2w6OkVycm9yIGNvcHlJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJl
Y3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRl
cm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
ciAqc291cmNlKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgY29weVN1YkltYWdlKEdMZW51bSB0
YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwgY29uc3Qg
Z2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICBnbDo6RXJyb3IgY29weVN1YkltYWdlKENv
bnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNl
KSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciBzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsIHNp
emVfdCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNp
emUpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRTdG9yYWdlKENvbnRleHRJbXBsICpjb250
ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpFeHRlbnRzICZzaXplKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBiaW5kVGV4
SW1hZ2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVRl
eEltYWdlKCk7CkBAIC0yOTUsMjIgKzM5MSw1OSBAQCBjbGFzcyBUZXh0dXJlRDNEXzNEIDogcHVi
bGljIFRleHR1cmVEM0QKICAgICBHTGVudW0gZ2V0SW50ZXJuYWxGb3JtYXQoR0xpbnQgbGV2ZWwp
IGNvbnN0OwogICAgIGJvb2wgaXNEZXB0aChHTGludCBsZXZlbCkgY29uc3Q7CiAKLSAgICBnbDo6
RXJyb3Igc2V0SW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBHTGVudW0gaW50ZXJu
YWxGb3JtYXQsIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLCBHTGVudW0gZm9ybWF0LCBHTGVudW0g
dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUg
JnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3Ig
c2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6Qm94ICZh
cmVhLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgY29uc3QgdWludDhfdCAqcGl4
ZWxzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0SW1hZ2UoQ29udGV4dEltcGwgKmNvbnRl
eHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVu
dHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRTdWJJbWFn
ZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVu
cGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgKnBpeGVscykgb3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJyb3Igc2V0Q29tcHJlc3NlZEltYWdl
KEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25z
dCBnbDo6RXh0ZW50cyAmc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIHNpemVfdCBpbWFnZVNpemUsIGNvbnN0
IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIHNldENvbXByZXNzZWRT
dWJJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpCb3ggJmFyZWEs
IEdMZW51bSBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXplX3QgaW1hZ2VTaXplLCBjb25zdCB1
aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkSW1h
Z2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRl
cm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpF
eHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRDb21wcmVz
c2VkU3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwogCi0gICAg
Z2w6OkVycm9yIGNvcHlJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGds
OjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICBnbDo6
RXJyb3IgY29weUltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
bGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3Vy
Y2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpIG92
ZXJyaWRlOwotICAgIGdsOjpFcnJvciBjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90
IGxldmVsLCBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBjb25zdCBnbDo6UmVjdGFuZ2xl
ICZzb3VyY2VBcmVhLAorICAgIGdsOjpFcnJvciBjb3B5U3ViSW1hZ2UoQ29udGV4dEltcGwgKmNv
bnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpIG92ZXJyaWRlOwog
Ci0gICAgZ2w6OkVycm9yIHNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVscywg
R0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSkgb3ZlcnJpZGU7
CisgICAgZ2w6OkVycm9yIHNldFN0b3JhZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGxldmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50
ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMg
JnNpemUpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIGJpbmRUZXhJbWFnZShlZ2w6OlN1
cmZhY2UgKnN1cmZhY2UpOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlVGV4SW1hZ2UoKTsKQEAg
LTM2MCwyMiArNDkzLDU5IEBAIGNsYXNzIFRleHR1cmVEM0RfMkRBcnJheSA6IHB1YmxpYyBUZXh0
dXJlRDNECiAgICAgR0xlbnVtIGdldEludGVybmFsRm9ybWF0KEdMaW50IGxldmVsKSBjb25zdDsK
ICAgICBib29sIGlzRGVwdGgoR0xpbnQgbGV2ZWwpIGNvbnN0OwogCi0gICAgZ2w6OkVycm9yIHNl
dEltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0
LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ss
IGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIHNldFN1Yklt
YWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OkJveCAmYXJlYSwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3Zl
cnJpZGU7CisgICAgZ2w6OkVycm9yIHNldEltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBp
eGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0U3ViSW1hZ2UoQ29udGV4
dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0
ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhl
bHMpIG92ZXJyaWRlOwogCi0gICAgZ2w6OkVycm9yIHNldENvbXByZXNzZWRJbWFnZShHTGVudW0g
dGFyZ2V0LCBzaXplX3QgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgZ2w6OkV4
dGVudHMgJnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXplX3QgaW1hZ2VTaXplLCBjb25zdCB1aW50OF90
ICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkU3ViSW1hZ2Uo
R0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6Qm94ICZhcmVhLCBHTGVudW0g
Zm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBp
eGVsVW5wYWNrU3RhdGUgJnVucGFjaywgc2l6ZV90IGltYWdlU2l6ZSwgY29uc3QgdWludDhfdCAq
cGl4ZWxzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0Q29tcHJlc3NlZEltYWdlKENvbnRl
eHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAm
c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVu
cGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
X3QgaW1hZ2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWlu
dDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Igc2V0Q29tcHJlc3NlZFN1Yklt
YWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6Qm94ICZhcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJv
ciBjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6UmVjdGFu
Z2xlICZzb3VyY2VBcmVhLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgZ2w6OkVycm9yIGNv
cHlJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKSBvdmVycmlkZTsK
LSAgICBnbDo6RXJyb3IgY29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwg
Y29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNl
QXJlYSwKKyAgICBnbDo6RXJyb3IgY29weVN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1w
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKSBvdmVycmlkZTsKIAotICAgIGds
OjpFcnJvciBzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbHMsIEdMZW51bSBp
bnRlcm5hbEZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpIG92ZXJyaWRlOworICAgIGds
OjpFcnJvciBzZXRTdG9yYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBsZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9y
bWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKSBv
dmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBiaW5kVGV4SW1hZ2UoZWdsOjpTdXJmYWNlICpz
dXJmYWNlKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZVRleEltYWdlKCk7CkBAIC00MjQsNyAr
NTk0LDggQEAgY2xhc3MgVGV4dHVyZUQzRF9FeHRlcm5hbCA6IHB1YmxpYyBUZXh0dXJlRDNECiAg
ICAgSW1hZ2VEM0QgKmdldEltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgR0xzaXplaSBnZXRMYXllckNvdW50KGludCBsZXZlbCkgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICBnbDo6RXJyb3Igc2V0SW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICBnbDo6
RXJyb3Igc2V0SW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2
ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCkBAIC00MzIsNyArNjAz
LDggQEAgY2xhc3MgVGV4dHVyZUQzRF9FeHRlcm5hbCA6IHB1YmxpYyBUZXh0dXJlRDNECiAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAogICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBzZXRTdWJJ
bWFnZShHTGVudW0gdGFyZ2V0LAorICAgIGdsOjpFcnJvciBzZXRTdWJJbWFnZShDb250ZXh0SW1w
bCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGZvcm1hdCwKQEAgLTQ0MCwxNCArNjEyLDE2IEBAIGNsYXNzIFRleHR1cmVEM0Rf
RXh0ZXJuYWwgOiBwdWJsaWMgVGV4dHVyZUQzRAogICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwogCi0gICAgZ2w6OkVycm9yIHNl
dENvbXByZXNzZWRJbWFnZShHTGVudW0gdGFyZ2V0LAorICAgIGdsOjpFcnJvciBzZXRDb21wcmVz
c2VkSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpFeHRlbnRzICZzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBzZXRD
b21wcmVzc2VkU3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICBnbDo6RXJyb3Igc2V0Q29tcHJl
c3NlZFN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGZvcm1hdCwKQEAgLTQ1NSwxOCArNjI5LDIxIEBAIGNsYXNzIFRleHR1
cmVEM0RfRXh0ZXJuYWwgOiBwdWJsaWMgVGV4dHVyZUQzRAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGltYWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CiAKLSAgICBnbDo6
RXJyb3IgY29weUltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgZ2w6OkVycm9yIGNvcHlJbWFnZShD
b250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAogICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKSBvdmVycmlkZTsKLSAgICBnbDo6
RXJyb3IgY29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQsCisgICAgZ2w6OkVycm9yIGNvcHlTdWJJ
bWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVs
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNl
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJj
ZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIg
KnNvdXJjZSkgb3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJyb3Igc2V0U3RvcmFnZShHTGVudW0gdGFy
Z2V0LAorICAgIGdsOjpFcnJvciBzZXRTdG9yYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRl
bnRzICZzaXplKSBvdmVycmlkZTsKQEAgLTUwMCw2ICs2NzcsOTkgQEAgY2xhc3MgVGV4dHVyZUQz
RF9FeHRlcm5hbCA6IHB1YmxpYyBUZXh0dXJlRDNECiAKICAgICBib29sIGlzSW1hZ2VDb21wbGV0
ZShjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgpIGNvbnN0IG92ZXJyaWRlOwogfTsKKworY2xh
c3MgVGV4dHVyZUQzRF8yRE11bHRpc2FtcGxlIDogcHVibGljIFRleHR1cmVEM0QKK3sKKyAgcHVi
bGljOgorICAgIFRleHR1cmVEM0RfMkRNdWx0aXNhbXBsZShjb25zdCBnbDo6VGV4dHVyZVN0YXRl
ICZkYXRhLCBSZW5kZXJlckQzRCAqcmVuZGVyZXIpOworICAgIH5UZXh0dXJlRDNEXzJETXVsdGlz
YW1wbGUoKSBvdmVycmlkZTsKKworICAgIEltYWdlRDNEICpnZXRJbWFnZShjb25zdCBnbDo6SW1h
Z2VJbmRleCAmaW5kZXgpIGNvbnN0IG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBzZXRJbWFnZShD
b250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CisgICAgZ2w6
OkVycm9yIHNldFN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZh
cmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBz
ZXRDb21wcmVzc2VkSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOworICAgIGdsOjpF
cnJvciBzZXRDb21wcmVzc2VkU3ViSW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBpbWFnZVNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92
ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGNvcHlJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dElt
cGwsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlciAqc291cmNlKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY29weVN1YkltYWdlKENv
bnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNl
KSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBzZXRTdG9yYWdlKENvbnRleHRJbXBsICpjb250
ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpFeHRlbnRzICZzaXplKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBzZXRJbWFnZUV4
dGVybmFsKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWds
OjpTdHJlYW0gKnN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OlN0cmVhbTo6R0xUZXh0dXJlRGVzY3JpcHRpb24gJmRlc2MpIG92ZXJyaWRlOworCisgICAg
dm9pZCBiaW5kVGV4SW1hZ2UoZWdsOjpTdXJmYWNlICpzdXJmYWNlKSBvdmVycmlkZTsKKyAgICB2
b2lkIHJlbGVhc2VUZXhJbWFnZSgpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIHNldEVHTElt
YWdlVGFyZ2V0KEdMZW51bSB0YXJnZXQsIGVnbDo6SW1hZ2UgKmltYWdlKSBvdmVycmlkZTsKKwor
ICAgIGdsOjpFcnJvciBnZXRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4
LCBSZW5kZXJUYXJnZXREM0QgKipvdXRSVCkgb3ZlcnJpZGU7CisKKyAgICBnbDo6SW1hZ2VJbmRl
eEl0ZXJhdG9yIGltYWdlSXRlcmF0b3IoKSBjb25zdCBvdmVycmlkZTsKKyAgICBnbDo6SW1hZ2VJ
bmRleCBnZXRJbWFnZUluZGV4KEdMaW50IG1pcCwgR0xpbnQgbGF5ZXIpIGNvbnN0IG92ZXJyaWRl
OworICAgIGJvb2wgaXNWYWxpZEluZGV4KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCkgY29u
c3Qgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0TGF5ZXJDb3VudChpbnQgbGV2
ZWwpIGNvbnN0OworCisgIHByb3RlY3RlZDoKKyAgICB2b2lkIG1hcmtBbGxJbWFnZXNEaXJ0eSgp
IG92ZXJyaWRlOworCisgIHByaXZhdGU6CisgICAgZ2w6OkVycm9yIGluaXRpYWxpemVTdG9yYWdl
KGJvb2wgcmVuZGVyVGFyZ2V0KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY3JlYXRlQ29tcGxl
dGVTdG9yYWdlKGJvb2wgcmVuZGVyVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKipvdXRUZXhTdG9yYWdlKSBjb25zdCBvdmVycmlkZTsK
KyAgICBnbDo6RXJyb3Igc2V0Q29tcGxldGVUZXhTdG9yYWdlKFRleHR1cmVTdG9yYWdlICpuZXdD
b21wbGV0ZVRleFN0b3JhZ2UpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIHVwZGF0ZVN0b3Jh
Z2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIGluaXRNaXBtYXBJbWFnZXMoKSBvdmVycmlkZTsKKwor
ICAgIGJvb2wgaXNJbWFnZUNvbXBsZXRlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCkgY29u
c3Qgb3ZlcnJpZGU7Cit9OwogfQogCiAjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNEX1RF
WFRVUkVEM0RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvVGV4dHVyZVN0b3JhZ2UuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4dHVyZVN0b3JhZ2UuaAppbmRleCA0MTcy
Mzc0OTVkNi4uYzI5ZTIwZjBkM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4dHVyZVN0b3JhZ2UuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1RleHR1cmVTdG9yYWdl
LmgKQEAgLTUwLDcgKzUwLDEwIEBAIGNsYXNzIFRleHR1cmVTdG9yYWdlIDogYW5nbGU6Ok5vbkNv
cHlhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBh
Y2tTdGF0ZSAmdW5wYWNrLCBjb25zdCB1aW50OF90ICpwaXhlbERhdGEpID0gMDsKIAogICAgIC8v
IFRoaXMgaXMgYSBuby1vcCBmb3IgbW9zdCBpbXBsZW1lbnRhdGlvbnMgb2YgVGV4dHVyZVN0b3Jh
Z2UuIFNvbWUgKGUuZy4gVGV4dHVyZVN0b3JhZ2UxMV8yRCkgbWlnaHQgb3ZlcnJpZGUgaXQuCi0g
ICAgdmlydHVhbCBnbDo6RXJyb3IgdXNlTGV2ZWxaZXJvV29ya2Fyb3VuZFRleHR1cmUoYm9vbCB1
c2VMZXZlbFplcm9UZXh0dXJlKSB7IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOyB9Cisg
ICAgdmlydHVhbCBnbDo6RXJyb3IgdXNlTGV2ZWxaZXJvV29ya2Fyb3VuZFRleHR1cmUoYm9vbCB1
c2VMZXZlbFplcm9UZXh0dXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CisgICAgfQogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhCdWZmZXIuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhCdWZmZXIuY3BwCmluZGV4
IGFjMzFhODY1ZTc1Li4zMGQ2NWJlMDExMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhCdWZmZXIuY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4QnVm
ZmVyLmNwcApAQCAtOTEsMTEgKzkxLDEzIEBAIGdsOjpFcnJvciBWZXJ0ZXhCdWZmZXJJbnRlcmZh
Y2U6OnNldEJ1ZmZlclNpemUodW5zaWduZWQgaW50IHNpemUpCiAKIGdsOjpFcnJvck9yUmVzdWx0
PHVuc2lnbmVkIGludD4gVmVydGV4QnVmZmVySW50ZXJmYWNlOjpnZXRTcGFjZVJlcXVpcmVkKAog
ICAgIGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICBjb25zdCBnbDo6VmVy
dGV4QmluZGluZyAmYmluZGluZywKICAgICBHTHNpemVpIGNvdW50LAogICAgIEdMc2l6ZWkgaW5z
dGFuY2VzKSBjb25zdAogewogICAgIHVuc2lnbmVkIGludCBzcGFjZVJlcXVpcmVkID0gMDsKLSAg
ICBBTkdMRV9UUllfUkVTVUxUKG1GYWN0b3J5LT5nZXRWZXJ0ZXhTcGFjZVJlcXVpcmVkKGF0dHJp
YiwgY291bnQsIGluc3RhbmNlcyksIHNwYWNlUmVxdWlyZWQpOworICAgIEFOR0xFX1RSWV9SRVNV
TFQobUZhY3RvcnktPmdldFZlcnRleFNwYWNlUmVxdWlyZWQoYXR0cmliLCBiaW5kaW5nLCBjb3Vu
dCwgaW5zdGFuY2VzKSwKKyAgICAgICAgICAgICAgICAgICAgIHNwYWNlUmVxdWlyZWQpOwogCiAg
ICAgLy8gQWxpZ24gdG8gMTYtYnl0ZSBib3VuZGFyeQogICAgIHVuc2lnbmVkIGludCBhbGlnbmVk
U3BhY2VSZXF1aXJlZCA9IHJvdW5kVXAoc3BhY2VSZXF1aXJlZCwgMTZ1KTsKQEAgLTE0OSw2ICsx
NTEsNyBAQCBnbDo6RXJyb3IgU3RyZWFtaW5nVmVydGV4QnVmZmVySW50ZXJmYWNlOjpyZXNlcnZl
U3BhY2UodW5zaWduZWQgaW50IHNpemUpCiB9CiAKIGdsOjpFcnJvciBTdHJlYW1pbmdWZXJ0ZXhC
dWZmZXJJbnRlcmZhY2U6OnN0b3JlRHluYW1pY0F0dHJpYnV0ZShjb25zdCBnbDo6VmVydGV4QXR0
cmlidXRlICZhdHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZlcnRleEJpbmRpbmcgJmJpbmRpbmcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGN1cnJlbnRWYWx1ZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc3RhcnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKQEAgLTE1Nyw3ICsxNjAsNyBAQCBnbDo6RXJyb3IgU3RyZWFt
aW5nVmVydGV4QnVmZmVySW50ZXJmYWNlOjpzdG9yZUR5bmFtaWNBdHRyaWJ1dGUoY29uc3QgZ2w6
OlZlcnRleAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEpCiB7CiAgICAgdW5zaWdu
ZWQgaW50IHNwYWNlUmVxdWlyZWQgPSAwOwotICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2V0U3BhY2VS
ZXF1aXJlZChhdHRyaWIsIGNvdW50LCBpbnN0YW5jZXMpLCBzcGFjZVJlcXVpcmVkKTsKKyAgICBB
TkdMRV9UUllfUkVTVUxUKGdldFNwYWNlUmVxdWlyZWQoYXR0cmliLCBiaW5kaW5nLCBjb3VudCwg
aW5zdGFuY2VzKSwgc3BhY2VSZXF1aXJlZCk7CiAKICAgICAvLyBQcm90ZWN0IGFnYWluc3QgaW50
ZWdlciBvdmVyZmxvdwogICAgIGFuZ2xlOjpDaGVja2VkTnVtZXJpYzx1bnNpZ25lZCBpbnQ+IGNo
ZWNrZWRQb3NpdGlvbihtV3JpdGVQb3NpdGlvbik7CkBAIC0xNzAsNyArMTczLDcgQEAgZ2w6OkVy
cm9yIFN0cmVhbWluZ1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6c3RvcmVEeW5hbWljQXR0cmlidXRl
KGNvbnN0IGdsOjpWZXJ0ZXgKICAgICBBTkdMRV9UUlkocmVzZXJ2ZVNwYWNlKG1SZXNlcnZlZFNw
YWNlKSk7CiAgICAgbVJlc2VydmVkU3BhY2UgPSAwOwogCi0gICAgQU5HTEVfVFJZKG1WZXJ0ZXhC
dWZmZXItPnN0b3JlVmVydGV4QXR0cmlidXRlcyhhdHRyaWIsIGN1cnJlbnRWYWx1ZVR5cGUsIHN0
YXJ0LCBjb3VudCwKKyAgICBBTkdMRV9UUlkobVZlcnRleEJ1ZmZlci0+c3RvcmVWZXJ0ZXhBdHRy
aWJ1dGVzKGF0dHJpYiwgYmluZGluZywgY3VycmVudFZhbHVlVHlwZSwgc3RhcnQsIGNvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFu
Y2VzLCBtV3JpdGVQb3NpdGlvbiwgc291cmNlRGF0YSkpOwogCiAgICAgaWYgKG91dFN0cmVhbU9m
ZnNldCkKQEAgLTE4NCwxMSArMTg3LDEzIEBAIGdsOjpFcnJvciBTdHJlYW1pbmdWZXJ0ZXhCdWZm
ZXJJbnRlcmZhY2U6OnN0b3JlRHluYW1pY0F0dHJpYnV0ZShjb25zdCBnbDo6VmVydGV4CiB9CiAK
IGdsOjpFcnJvciBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnJlc2VydmVWZXJ0ZXhT
cGFjZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZl
cnRleEJpbmRpbmcgJmJpbmRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGlu
c3RhbmNlcykKIHsKICAgICB1bnNpZ25lZCBpbnQgcmVxdWlyZWRTcGFjZSA9IDA7Ci0gICAgQU5H
TEVfVFJZX1JFU1VMVChtRmFjdG9yeS0+Z2V0VmVydGV4U3BhY2VSZXF1aXJlZChhdHRyaWIsIGNv
dW50LCBpbnN0YW5jZXMpLCByZXF1aXJlZFNwYWNlKTsKKyAgICBBTkdMRV9UUllfUkVTVUxUKG1G
YWN0b3J5LT5nZXRWZXJ0ZXhTcGFjZVJlcXVpcmVkKGF0dHJpYiwgYmluZGluZywgY291bnQsIGlu
c3RhbmNlcyksCisgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFNwYWNlKTsKIAogICAgIC8v
IEFsaWduIHRvIDE2LWJ5dGUgYm91bmRhcnkKICAgICBhdXRvIGFsaWduZWRSZXF1aXJlZFNwYWNl
ID0gcng6OkNoZWNrZWRSb3VuZFVwKHJlcXVpcmVkU3BhY2UsIDE2dSk7CkBAIC0yMTUsOSArMjIw
LDEwIEBAIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6QXR0cmlidXRlU2lnbmF0dXJlOjpB
dHRyaWJ1dGVTaWduYXR1cmUoKQogfQogCiBib29sIFN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFj
ZTo6QXR0cmlidXRlU2lnbmF0dXJlOjptYXRjaGVzQXR0cmlidXRlKAotICAgIGNvbnN0IGdsOjpW
ZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikgY29uc3QKKyAgICBjb25zdCBnbDo6VmVydGV4QXR0cmli
dXRlICZhdHRyaWIsCisgICAgY29uc3QgZ2w6OlZlcnRleEJpbmRpbmcgJmJpbmRpbmcpIGNvbnN0
CiB7Ci0gICAgc2l6ZV90IGF0dHJpYlN0cmlkZSA9IENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJp
ZGUoYXR0cmliKTsKKyAgICBzaXplX3QgYXR0cmliU3RyaWRlID0gQ29tcHV0ZVZlcnRleEF0dHJp
YnV0ZVN0cmlkZShhdHRyaWIsIGJpbmRpbmcpOwogCiAgICAgaWYgKHR5cGUgIT0gYXR0cmliLnR5
cGUgfHwgc2l6ZSAhPSBhdHRyaWIuc2l6ZSB8fCBzdGF0aWNfY2FzdDxHTHVpbnQ+KHN0cmlkZSkg
IT0gYXR0cmliU3RyaWRlIHx8CiAgICAgICAgIG5vcm1hbGl6ZWQgIT0gYXR0cmliLm5vcm1hbGl6
ZWQgfHwgcHVyZUludGVnZXIgIT0gYXR0cmliLnB1cmVJbnRlZ2VyKQpAQCAtMjI1LDE4ICsyMzEs
MjEgQEAgYm9vbCBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OkF0dHJpYnV0ZVNpZ25hdHVy
ZTo6bWF0Y2hlc0F0dHJpYnV0ZSgKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IHNpemVfdCBhdHRyaWJPZmZzZXQgPSAoc3RhdGljX2Nhc3Q8c2l6ZV90PihhdHRyaWIub2Zmc2V0
KSAlIGF0dHJpYlN0cmlkZSk7CisgICAgc2l6ZV90IGF0dHJpYk9mZnNldCA9CisgICAgICAgIChz
dGF0aWNfY2FzdDxzaXplX3Q+KENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVPZmZzZXQoYXR0cmliLCBi
aW5kaW5nKSkgJSBhdHRyaWJTdHJpZGUpOwogICAgIHJldHVybiAob2Zmc2V0ID09IGF0dHJpYk9m
ZnNldCk7CiB9CiAKLXZvaWQgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOjpBdHRyaWJ1dGVT
aWduYXR1cmU6OnNldChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIpCit2b2lkIFN0
YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6QXR0cmlidXRlU2lnbmF0dXJlOjpzZXQoY29uc3Qg
Z2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5nICZi
aW5kaW5nKQogewogICAgIHR5cGUgICAgICAgID0gYXR0cmliLnR5cGU7CiAgICAgc2l6ZSAgICAg
ICAgPSBhdHRyaWIuc2l6ZTsKICAgICBub3JtYWxpemVkICA9IGF0dHJpYi5ub3JtYWxpemVkOwog
ICAgIHB1cmVJbnRlZ2VyID0gYXR0cmliLnB1cmVJbnRlZ2VyOwotICAgIG9mZnNldCA9IHN0cmlk
ZSA9IHN0YXRpY19jYXN0PEdMdWludD4oQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShhdHRy
aWIpKTsKLSAgICBvZmZzZXQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGF0dHJpYi5vZmZzZXQpICUg
Q29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShhdHRyaWIpOworICAgIG9mZnNldCA9IHN0cmlk
ZSA9IHN0YXRpY19jYXN0PEdMdWludD4oQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShhdHRy
aWIsIGJpbmRpbmcpKTsKKyAgICBvZmZzZXQgICAgICAgICAgPSBzdGF0aWNfY2FzdDxzaXplX3Q+
KENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVPZmZzZXQoYXR0cmliLCBiaW5kaW5nKSkgJQorICAgICAg
ICAgICAgIENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJpZGUoYXR0cmliLCBiaW5kaW5nKTsKIH0K
IAogU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOjpTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZh
Y2UoQnVmZmVyRmFjdG9yeUQzRCAqZmFjdG9yeSkKQEAgLTI0OCwzMSArMjU3LDM0IEBAIFN0YXRp
Y1ZlcnRleEJ1ZmZlckludGVyZmFjZTo6flN0YXRpY1ZlcnRleEJ1ZmZlckludGVyZmFjZSgpCiB7
CiB9CiAKLWJvb2wgU3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOjptYXRjaGVzQXR0cmlidXRl
KGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikgY29uc3QKK2Jvb2wgU3RhdGljVmVy
dGV4QnVmZmVySW50ZXJmYWNlOjptYXRjaGVzQXR0cmlidXRlKGNvbnN0IGdsOjpWZXJ0ZXhBdHRy
aWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nKSBjb25zdAogewotICAg
IHJldHVybiBtU2lnbmF0dXJlLm1hdGNoZXNBdHRyaWJ1dGUoYXR0cmliKTsKKyAgICByZXR1cm4g
bVNpZ25hdHVyZS5tYXRjaGVzQXR0cmlidXRlKGF0dHJpYiwgYmluZGluZyk7CiB9CiAKLXZvaWQg
U3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOjpzZXRBdHRyaWJ1dGUoY29uc3QgZ2w6OlZlcnRl
eEF0dHJpYnV0ZSAmYXR0cmliKQordm9pZCBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2U6OnNl
dEF0dHJpYnV0ZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhCaW5k
aW5nICZiaW5kaW5nKQogewotICAgIHJldHVybiBtU2lnbmF0dXJlLnNldChhdHRyaWIpOworICAg
IHJldHVybiBtU2lnbmF0dXJlLnNldChhdHRyaWIsIGJpbmRpbmcpOwogfQogCiBnbDo6RXJyb3Ig
U3RhdGljVmVydGV4QnVmZmVySW50ZXJmYWNlOjpzdG9yZVN0YXRpY0F0dHJpYnV0ZShjb25zdCBn
bDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VmVydGV4QmluZGluZyAm
YmluZGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
aW5zdGFuY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSkKIHsKICAgICB1bnNpZ25l
ZCBpbnQgc3BhY2VSZXF1aXJlZCA9IDA7Ci0gICAgQU5HTEVfVFJZX1JFU1VMVChnZXRTcGFjZVJl
cXVpcmVkKGF0dHJpYiwgY291bnQsIGluc3RhbmNlcyksIHNwYWNlUmVxdWlyZWQpOworICAgIEFO
R0xFX1RSWV9SRVNVTFQoZ2V0U3BhY2VSZXF1aXJlZChhdHRyaWIsIGJpbmRpbmcsIGNvdW50LCBp
bnN0YW5jZXMpLCBzcGFjZVJlcXVpcmVkKTsKICAgICBzZXRCdWZmZXJTaXplKHNwYWNlUmVxdWly
ZWQpOwogCiAgICAgQVNTRVJUKGF0dHJpYi5lbmFibGVkKTsKLSAgICBBTkdMRV9UUlkobVZlcnRl
eEJ1ZmZlci0+c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGF0dHJpYiwgR0xfTk9ORSwgc3RhcnQsIGNv
dW50LCBpbnN0YW5jZXMsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzb3VyY2VEYXRhKSk7CisgICAgQU5HTEVfVFJZKG1WZXJ0ZXhCdWZmZXIt
PnN0b3JlVmVydGV4QXR0cmlidXRlcyhhdHRyaWIsIGJpbmRpbmcsIEdMX05PTkUsIHN0YXJ0LCBj
b3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluc3RhbmNlcywgMCwgc291cmNlRGF0YSkpOwogCi0gICAgbVNpZ25hdHVyZS5zZXQoYXR0cmli
KTsKKyAgICBtU2lnbmF0dXJlLnNldChhdHRyaWIsIGJpbmRpbmcpOwogICAgIG1WZXJ0ZXhCdWZm
ZXItPmhpbnRVbm1hcFJlc291cmNlKCk7CiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL1ZlcnRleEJ1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9WZXJ0ZXhCdWZmZXIuaAppbmRleCBiM2Q5ODI0N2ZiNS4uYmI3NDljMWJm
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvVmVydGV4QnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhCdWZmZXIuaApAQCAtMjIsNiArMjIsNyBAQAog
bmFtZXNwYWNlIGdsCiB7CiBzdHJ1Y3QgVmVydGV4QXR0cmlidXRlOworc3RydWN0IFZlcnRleEJp
bmRpbmc7CiBzdHJ1Y3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YTsKIH0KIApAQCAtMzgs
NyArMzksMTAgQEAgY2xhc3MgVmVydGV4QnVmZmVyIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAKICAg
ICB2aXJ0dWFsIGdsOjpFcnJvciBpbml0aWFsaXplKHVuc2lnbmVkIGludCBzaXplLCBib29sIGR5
bmFtaWNVc2FnZSkgPSAwOwogCisgICAgLy8gV2FybmluZzogeW91IHNob3VsZCBlbnN1cmUgYmlu
ZGluZyByZWFsbHkgbWF0Y2hlcyBhdHRyaWIuYmluZGluZ0luZGV4IGJlZm9yZSB1c2luZyB0aGlz
CisgICAgLy8gZnVuY3Rpb24uCiAgICAgdmlydHVhbCBnbDo6RXJyb3Igc3RvcmVWZXJ0ZXhBdHRy
aWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZlcnRleEJpbmRpbmcgJmJp
bmRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBjdXJyZW50VmFsdWVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKQEAgLTg2LDcgKzkwLDkgQEAgY2xhc3MgVmVydGV4QnVm
ZmVySW50ZXJmYWNlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgZ2w6OkVycm9yIGRpc2NhcmQo
KTsKIAogICAgIGdsOjpFcnJvciBzZXRCdWZmZXJTaXplKHVuc2lnbmVkIGludCBzaXplKTsKKwog
ICAgIGdsOjpFcnJvck9yUmVzdWx0PHVuc2lnbmVkIGludD4gZ2V0U3BhY2VSZXF1aXJlZChjb25z
dCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5nICZiaW5k
aW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcykgY29uc3Q7CiAgICAgQnVmZmVyRmFjdG9y
eUQzRCAqY29uc3QgbUZhY3Rvcnk7CkBAIC0xMDEsNiArMTA3LDcgQEAgY2xhc3MgU3RyZWFtaW5n
VmVydGV4QnVmZmVySW50ZXJmYWNlIDogcHVibGljIFZlcnRleEJ1ZmZlckludGVyZmFjZQogICAg
IH5TdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UoKTsKIAogICAgIGdsOjpFcnJvciBzdG9y
ZUR5bmFtaWNBdHRyaWJ1dGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZlcnRleEJpbmRpbmcg
JmJpbmRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY3Vy
cmVudFZhbHVlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKQEAgLTEwOSw2ICsxMTYsNyBAQCBjbGFzcyBTdHJlYW1pbmdWZXJ0ZXhCdWZmZXJJbnRlcmZh
Y2UgOiBwdWJsaWMgVmVydGV4QnVmZmVySW50ZXJmYWNlCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2VEYXRhKTsKIAogICAgIGdsOjpFcnJv
ciByZXNlcnZlVmVydGV4U3BhY2UoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZlcnRleEJpbmRp
bmcgJmJpbmRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMp
OwogCkBAIC0xMjUsMjIgKzEzMywzMCBAQCBjbGFzcyBTdGF0aWNWZXJ0ZXhCdWZmZXJJbnRlcmZh
Y2UgOiBwdWJsaWMgVmVydGV4QnVmZmVySW50ZXJmYWNlCiAgICAgZXhwbGljaXQgU3RhdGljVmVy
dGV4QnVmZmVySW50ZXJmYWNlKEJ1ZmZlckZhY3RvcnlEM0QgKmZhY3RvcnkpOwogICAgIH5TdGF0
aWNWZXJ0ZXhCdWZmZXJJbnRlcmZhY2UoKTsKIAorICAgIC8vIFdhcm5pbmc6IHlvdSBzaG91bGQg
ZW5zdXJlIGJpbmRpbmcgcmVhbGx5IG1hdGNoZXMgYXR0cmliLmJpbmRpbmdJbmRleCBiZWZvcmUg
dXNpbmcgdGhlc2UKKyAgICAvLyBmdW5jdGlvbnMuCiAgICAgZ2w6OkVycm9yIHN0b3JlU3RhdGlj
QXR0cmlidXRlKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZlcnRleEJpbmRpbmcgJmJpbmRpbmcs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0YXJ0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqc291cmNlRGF0YSk7CiAKLSAgICBi
b29sIG1hdGNoZXNBdHRyaWJ1dGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRl
KSBjb25zdDsKLSAgICB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRl
ICZhdHRyaWJ1dGUpOworICAgIGJvb2wgbWF0Y2hlc0F0dHJpYnV0ZShjb25zdCBnbDo6VmVydGV4
QXR0cmlidXRlICZhdHRyaWJ1dGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nKSBjb25zdDsKKworICAgIHZvaWQgc2V0QXR0cmlidXRl
KGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwgY29uc3QgZ2w6OlZlcnRleEJp
bmRpbmcgJmJpbmRpbmcpOwogCiAgIHByaXZhdGU6CiAgICAgY2xhc3MgQXR0cmlidXRlU2lnbmF0
dXJlIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgewogICAgICAgcHVibGljOgogICAg
ICAgICBBdHRyaWJ1dGVTaWduYXR1cmUoKTsKLSAgICAgICAgYm9vbCBtYXRjaGVzQXR0cmlidXRl
KGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYikgY29uc3Q7Ci0gICAgICAgIHZvaWQg
c2V0KGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYik7CisKKyAgICAgICAgYm9vbCBt
YXRjaGVzQXR0cmlidXRlKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5nICZiaW5kaW5n
KSBjb25zdDsKKworICAgICAgICB2b2lkIHNldChjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZh
dHRyaWIsIGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nKTsKIAogICAgICAgcHJpdmF0
ZToKICAgICAgICAgR0xlbnVtIHR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL1ZlcnRleERhdGFNYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0
YU1hbmFnZXIuY3BwCmluZGV4IGZmZjE2ZTYzYTQxLi4zNWIyNDA1ZjA3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9WZXJ0ZXhE
YXRhTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9WZXJ0ZXhEYXRhTWFuYWdlci5jcHAKQEAgLTksNyArOSw3IEBACiAKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0YU1hbmFnZXIuaCIKIAotI2lu
Y2x1ZGUgImNvbW1vbi9CaXRTZXRJdGVyYXRvci5oIgorI2luY2x1ZGUgImNvbW1vbi9iaXRzZXRf
dXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9CdWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdM
RS9mb3JtYXR1dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIKQEAgLTM2LDcg
KzM2LDEwIEBAIGVudW0KICAgICBDT05TVEFOVF9WRVJURVhfQlVGRkVSX1NJWkUgPSA0MDk2CiB9
OwogCi1pbnQgRWxlbWVudHNJbkJ1ZmZlcihjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRy
aWIsIHVuc2lnbmVkIGludCBzaXplKQorLy8gV2FybmluZzogeW91IHNob3VsZCBlbnN1cmUgYmlu
ZGluZyByZWFsbHkgbWF0Y2hlcyBhdHRyaWIuYmluZGluZ0luZGV4IGJlZm9yZSB1c2luZyB0aGlz
IGZ1bmN0aW9uLgoraW50IEVsZW1lbnRzSW5CdWZmZXIoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0
ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZlcnRleEJpbmRpbmcg
JmJpbmRpbmcsCisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgc2l6ZSkKIHsKICAg
ICAvLyBTaXplIGNhbm5vdCBiZSBsYXJnZXIgdGhhbiBhIEdMc2l6ZWkKICAgICBpZiAoc2l6ZSA+
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgo
KSkpCkBAIC00NCwxMyArNDcsMTUgQEAgaW50IEVsZW1lbnRzSW5CdWZmZXIoY29uc3QgZ2w6OlZl
cnRleEF0dHJpYnV0ZSAmYXR0cmliLCB1bnNpZ25lZCBpbnQgc2l6ZSkKICAgICAgICAgc2l6ZSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgo
KSk7CiAgICAgfQogCi0gICAgR0xzaXplaSBzdHJpZGUgPSBzdGF0aWNfY2FzdDxHTHNpemVpPihD
b21wdXRlVmVydGV4QXR0cmlidXRlU3RyaWRlKGF0dHJpYikpOwotICAgIHJldHVybiAoc2l6ZSAt
IGF0dHJpYi5vZmZzZXQgJSBzdHJpZGUgKworICAgIEdMc2l6ZWkgc3RyaWRlID0gc3RhdGljX2Nh
c3Q8R0xzaXplaT4oQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShhdHRyaWIsIGJpbmRpbmcp
KTsKKyAgICBHTHNpemVpIG9mZnNldCA9IHN0YXRpY19jYXN0PEdMc2l6ZWk+KENvbXB1dGVWZXJ0
ZXhBdHRyaWJ1dGVPZmZzZXQoYXR0cmliLCBiaW5kaW5nKSk7CisgICAgcmV0dXJuIChzaXplIC0g
b2Zmc2V0ICUgc3RyaWRlICsKICAgICAgICAgICAgIChzdHJpZGUgLSBzdGF0aWNfY2FzdDxHTHNp
emVpPihDb21wdXRlVmVydGV4QXR0cmlidXRlVHlwZVNpemUoYXR0cmliKSkpKSAvCiAgICAgICAg
ICAgIHN0cmlkZTsKIH0KIAotYm9vbCBEaXJlY3RTdG9yYWdlUG9zc2libGUoY29uc3QgZ2w6OlZl
cnRleEF0dHJpYnV0ZSAmYXR0cmliKQorLy8gV2FybmluZzogeW91IHNob3VsZCBlbnN1cmUgYmlu
ZGluZyByZWFsbHkgbWF0Y2hlcyBhdHRyaWIuYmluZGluZ0luZGV4IGJlZm9yZSB1c2luZyB0aGlz
IGZ1bmN0aW9uLgorYm9vbCBEaXJlY3RTdG9yYWdlUG9zc2libGUoY29uc3QgZ2w6OlZlcnRleEF0
dHJpYnV0ZSAmYXR0cmliLCBjb25zdCBnbDo6VmVydGV4QmluZGluZyAmYmluZGluZykKIHsKICAg
ICAvLyBDdXJyZW50IHZhbHVlIGF0dHJpYnMgbWF5IG5vdCB1c2UgZGlyZWN0IHN0b3JhZ2UuCiAg
ICAgaWYgKCFhdHRyaWIuZW5hYmxlZCkKQEAgLTU4LDcgKzYzLDcgQEAgYm9vbCBEaXJlY3RTdG9y
YWdlUG9zc2libGUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgZ2w6OkJ1ZmZlciAqYnVmZmVyID0gYXR0cmliLmJ1
ZmZlci5nZXQoKTsKKyAgICBnbDo6QnVmZmVyICpidWZmZXIgPSBiaW5kaW5nLmJ1ZmZlci5nZXQo
KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc1
LDMyICs4MCwzMyBAQCBib29sIERpcmVjdFN0b3JhZ2VQb3NzaWJsZShjb25zdCBnbDo6VmVydGV4
QXR0cmlidXRlICZhdHRyaWIpCiAgICAgLy8gNC1ieXRlIGJvdW5kYXJ5LCB3aGljaGV2ZXIgaXMg
c21hbGxlci4gKFVuZG9jdW1lbnRlZCwgYW5kIGV4cGVyaW1lbnRhbGx5IGNvbmZpcm1lZCkKICAg
ICBzaXplX3QgYWxpZ25tZW50ID0gNDsKIAotICAgIGlmIChhdHRyaWIudHlwZSAhPSBHTF9GTE9B
VCkKLSAgICB7Ci0gICAgICAgIGdsOjpWZXJ0ZXhGb3JtYXRUeXBlIHZlcnRleEZvcm1hdFR5cGUg
PSBnbDo6R2V0VmVydGV4Rm9ybWF0VHlwZShhdHRyaWIpOworICAgIC8vIFRPRE8oam1hZGlsbCk6
IGFkZCBWZXJ0ZXhGb3JtYXRDYXBzCisgICAgQnVmZmVyRmFjdG9yeUQzRCAqZmFjdG9yeSA9IGJ1
ZmZlckQzRC0+Z2V0RmFjdG9yeSgpOwogCi0gICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IGFkZCBW
ZXJ0ZXhGb3JtYXRDYXBzCi0gICAgICAgIEJ1ZmZlckZhY3RvcnlEM0QgKmZhY3RvcnkgPSBidWZm
ZXJEM0QtPmdldEZhY3RvcnkoKTsKKyAgICBnbDo6VmVydGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3Jt
YXRUeXBlID0gZ2w6OkdldFZlcnRleEZvcm1hdFR5cGUoYXR0cmliKTsKKworICAgIC8vIENQVS1j
b252ZXJ0ZWQgdmVydGV4IGRhdGEgbXVzdCBiZSBjb252ZXJ0ZWQgKG5hdHVyYWxseSkuCisgICAg
aWYgKChmYWN0b3J5LT5nZXRWZXJ0ZXhDb252ZXJzaW9uVHlwZSh2ZXJ0ZXhGb3JtYXRUeXBlKSAm
IFZFUlRFWF9DT05WRVJUX0NQVSkgIT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CiAKLSAgICAgICAgYXV0byBlcnJvck9yRWxlbWVudFNpemUgPSBmYWN0b3J5LT5nZXRW
ZXJ0ZXhTcGFjZVJlcXVpcmVkKGF0dHJpYiwgMSwgMCk7CisgICAgaWYgKGF0dHJpYi50eXBlICE9
IEdMX0ZMT0FUKQorICAgIHsKKyAgICAgICAgYXV0byBlcnJvck9yRWxlbWVudFNpemUgPSBmYWN0
b3J5LT5nZXRWZXJ0ZXhTcGFjZVJlcXVpcmVkKGF0dHJpYiwgYmluZGluZywgMSwgMCk7CiAgICAg
ICAgIGlmIChlcnJvck9yRWxlbWVudFNpemUuaXNFcnJvcigpKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBFUlIoIlVubG9nZ2VkIGVycm9yIGluIERpcmVjdFN0b3JhZ2VQb3NzaWJsZS4iKTsKKyAg
ICAgICAgICAgIEVSUigpIDw8ICJVbmxvZ2dlZCBlcnJvciBpbiBEaXJlY3RTdG9yYWdlUG9zc2li
bGUuIjsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGFs
aWdubWVudCA9IHN0ZDo6bWluPHNpemVfdD4oZXJyb3JPckVsZW1lbnRTaXplLmdldFJlc3VsdCgp
LCA0KTsKLQotICAgICAgICAvLyBDUFUtY29udmVydGVkIHZlcnRleCBkYXRhIG11c3QgYmUgY29u
dmVydGVkIChuYXR1cmFsbHkpLgotICAgICAgICBpZiAoKGZhY3RvcnktPmdldFZlcnRleENvbnZl
cnNpb25UeXBlKHZlcnRleEZvcm1hdFR5cGUpICYgVkVSVEVYX0NPTlZFUlRfQ1BVKSAhPSAwKQot
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KICAgICB9CiAK
KyAgICBHTGludHB0ciBvZmZzZXQgPSBDb21wdXRlVmVydGV4QXR0cmlidXRlT2Zmc2V0KGF0dHJp
YiwgYmluZGluZyk7CiAgICAgLy8gRmluYWwgYWxpZ25tZW50IGNoZWNrIC0gdW5hbGlnbmVkIGRh
dGEgbXVzdCBiZSBjb252ZXJ0ZWQuCi0gICAgcmV0dXJuIChzdGF0aWNfY2FzdDxzaXplX3Q+KENv
bXB1dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJpZGUoYXR0cmliKSkgJSBhbGlnbm1lbnQgPT0gMCkgJiYK
LSAgICAgICAgICAgKHN0YXRpY19jYXN0PHNpemVfdD4oYXR0cmliLm9mZnNldCkgJSBhbGlnbm1l
bnQgPT0gMCk7CisgICAgcmV0dXJuIChzdGF0aWNfY2FzdDxzaXplX3Q+KENvbXB1dGVWZXJ0ZXhB
dHRyaWJ1dGVTdHJpZGUoYXR0cmliLCBiaW5kaW5nKSkgJSBhbGlnbm1lbnQgPT0gMCkgJiYKKyAg
ICAgICAgICAgKHN0YXRpY19jYXN0PHNpemVfdD4ob2Zmc2V0KSAlIGFsaWdubWVudCA9PSAwKTsK
IH0KIH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKIApAQCAtMTMyLDcgKzEzOCw5IEBAIGdsOjpF
cnJvck9yUmVzdWx0PHVuc2lnbmVkIGludD4gVHJhbnNsYXRlZEF0dHJpYnV0ZTo6Y29tcHV0ZU9m
ZnNldChHTGludCBzdGFydFZlCiAgICAgcmV0dXJuIG9mZnNldC5WYWx1ZU9yRGllKCk7CiB9CiAK
LVZlcnRleFN0b3JhZ2VUeXBlIENsYXNzaWZ5QXR0cmlidXRlU3RvcmFnZShjb25zdCBnbDo6VmVy
dGV4QXR0cmlidXRlICZhdHRyaWIpCisvLyBXYXJuaW5nOiB5b3Ugc2hvdWxkIGVuc3VyZSBiaW5k
aW5nIHJlYWxseSBtYXRjaGVzIGF0dHJpYi5iaW5kaW5nSW5kZXggYmVmb3JlIHVzaW5nIHRoaXMg
ZnVuY3Rpb24uCitWZXJ0ZXhTdG9yYWdlVHlwZSBDbGFzc2lmeUF0dHJpYnV0ZVN0b3JhZ2UoY29u
c3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nKQogewog
ICAgIC8vIElmIGF0dHJpYnV0ZSBpcyBkaXNhYmxlZCwgd2UgdXNlIHRoZSBjdXJyZW50IHZhbHVl
LgogICAgIGlmICghYXR0cmliLmVuYWJsZWQpCkBAIC0xNDEsMTQgKzE0OSwxNCBAQCBWZXJ0ZXhT
dG9yYWdlVHlwZSBDbGFzc2lmeUF0dHJpYnV0ZVN0b3JhZ2UoY29uc3QgZ2w6OlZlcnRleEF0dHJp
YnV0ZSAmYXR0cmliKQogICAgIH0KIAogICAgIC8vIElmIHNwZWNpZmllZCB3aXRoIGltbWVkaWF0
ZSBkYXRhLCB3ZSBtdXN0IHVzZSBkeW5hbWljIHN0b3JhZ2UuCi0gICAgYXV0byAqYnVmZmVyID0g
YXR0cmliLmJ1ZmZlci5nZXQoKTsKKyAgICBhdXRvICpidWZmZXIgPSBiaW5kaW5nLmJ1ZmZlci5n
ZXQoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICB7CiAgICAgICAgIHJldHVybiBWZXJ0ZXhTdG9y
YWdlVHlwZTo6RFlOQU1JQzsKICAgICB9CiAKICAgICAvLyBDaGVjayBpZiB0aGUgYnVmZmVyIHN1
cHBvcnRzIGRpcmVjdCBzdG9yYWdlLgotICAgIGlmIChEaXJlY3RTdG9yYWdlUG9zc2libGUoYXR0
cmliKSkKKyAgICBpZiAoRGlyZWN0U3RvcmFnZVBvc3NpYmxlKGF0dHJpYiwgYmluZGluZykpCiAg
ICAgewogICAgICAgICByZXR1cm4gVmVydGV4U3RvcmFnZVR5cGU6OkRJUkVDVDsKICAgICB9CkBA
IC0xOTQsNyArMjAyLDcgQEAgVmVydGV4RGF0YU1hbmFnZXI6OlZlcnRleERhdGFNYW5hZ2VyKEJ1
ZmZlckZhY3RvcnlEM0QgKmZhY3RvcnkpCiAKICAgICBpZiAoIW1TdHJlYW1pbmdCdWZmZXIpCiAg
ICAgewotICAgICAgICBFUlIoIkZhaWxlZCB0byBhbGxvY2F0ZSB0aGUgc3RyZWFtaW5nIHZlcnRl
eCBidWZmZXIuIik7CisgICAgICAgIEVSUigpIDw8ICJGYWlsZWQgdG8gYWxsb2NhdGUgdGhlIHN0
cmVhbWluZyB2ZXJ0ZXggYnVmZmVyLiI7CiAgICAgfQogfQogCkBAIC0yMTMsNiArMjIxLDcgQEAg
Z2w6OkVycm9yIFZlcnRleERhdGFNYW5hZ2VyOjpwcmVwYXJlVmVydGV4RGF0YShjb25zdCBnbDo6
U3RhdGUgJnN0YXRlLAogCiAgICAgY29uc3QgZ2w6OlZlcnRleEFycmF5ICp2ZXJ0ZXhBcnJheSA9
IHN0YXRlLmdldFZlcnRleEFycmF5KCk7CiAgICAgY29uc3QgYXV0byAmdmVydGV4QXR0cmlidXRl
cyAgICAgICA9IHZlcnRleEFycmF5LT5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7CisgICAgY29uc3Qg
YXV0byAmdmVydGV4QmluZGluZ3MgICAgICAgICA9IHZlcnRleEFycmF5LT5nZXRWZXJ0ZXhCaW5k
aW5ncygpOwogCiAgICAgbUR5bmFtaWNBdHRyaWJzTWFza0NhY2hlLnJlc2V0KCk7CiAgICAgY29u
c3QgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBzdGF0ZS5nZXRQcm9ncmFtKCk7CkBAIC0yMjYsNiAr
MjM1LDcgQEAgZ2w6OkVycm9yIFZlcnRleERhdGFNYW5hZ2VyOjpwcmVwYXJlVmVydGV4RGF0YShj
b25zdCBnbDo6U3RhdGUgJnN0YXRlLAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
Y29uc3QgYXV0byAmYXR0cmliID0gdmVydGV4QXR0cmlidXRlc1thdHRyaWJJbmRleF07CisgICAg
ICAgIGNvbnN0IGF1dG8gJmJpbmRpbmcgPSB2ZXJ0ZXhCaW5kaW5nc1thdHRyaWIuYmluZGluZ0lu
ZGV4XTsKIAogICAgICAgICAvLyBSZXNpemUgYXV0b21hdGljYWxseSBwdXRzIGluIGVtcHR5IGF0
dHJpYnMKICAgICAgICAgdHJhbnNsYXRlZEF0dHJpYnMtPnJlc2l6ZShhdHRyaWJJbmRleCArIDEp
OwpAQCAtMjM3LDE1ICsyNDcsMTYgQEAgZ2w6OkVycm9yIFZlcnRleERhdGFNYW5hZ2VyOjpwcmVw
YXJlVmVydGV4RGF0YShjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAogICAgICAgICAvLyBSZWNvcmQg
dGhlIGF0dHJpYnV0ZSBub3cKICAgICAgICAgdHJhbnNsYXRlZC0+YWN0aXZlICAgICAgICAgICA9
IHRydWU7CiAgICAgICAgIHRyYW5zbGF0ZWQtPmF0dHJpYnV0ZSAgICAgICAgPSAmYXR0cmliOwor
ICAgICAgICB0cmFuc2xhdGVkLT5iaW5kaW5nICAgICAgICAgID0gJmJpbmRpbmc7CiAgICAgICAg
IHRyYW5zbGF0ZWQtPmN1cnJlbnRWYWx1ZVR5cGUgPSBjdXJyZW50VmFsdWVEYXRhLlR5cGU7Ci0g
ICAgICAgIHRyYW5zbGF0ZWQtPmRpdmlzb3IgICAgICAgICAgPSBhdHRyaWIuZGl2aXNvcjsKKyAg
ICAgICAgdHJhbnNsYXRlZC0+ZGl2aXNvciAgICAgICAgICA9IGJpbmRpbmcuZGl2aXNvcjsKIAot
ICAgICAgICBzd2l0Y2ggKENsYXNzaWZ5QXR0cmlidXRlU3RvcmFnZShhdHRyaWIpKQorICAgICAg
ICBzd2l0Y2ggKENsYXNzaWZ5QXR0cmlidXRlU3RvcmFnZShhdHRyaWIsIGJpbmRpbmcpKQogICAg
ICAgICB7CiAgICAgICAgICAgICBjYXNlIFZlcnRleFN0b3JhZ2VUeXBlOjpTVEFUSUM6CiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgLy8gU3RvcmUgc3RhdGljIGF0dHJpYnV0ZS4KLSAg
ICAgICAgICAgICAgICBBTkdMRV9UUlkoU3RvcmVTdGF0aWNBdHRyaWIodHJhbnNsYXRlZCwgY291
bnQsIGluc3RhbmNlcykpOworICAgICAgICAgICAgICAgIEFOR0xFX1RSWShTdG9yZVN0YXRpY0F0
dHJpYih0cmFuc2xhdGVkKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIFZlcnRleFN0b3JhZ2VUeXBlOjpEWU5BTUlDOgpAQCAtMjgzLDYx
ICsyOTQsNjQgQEAgZ2w6OkVycm9yIFZlcnRleERhdGFNYW5hZ2VyOjpwcmVwYXJlVmVydGV4RGF0
YShjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAogLy8gc3RhdGljCiB2b2lkIFZlcnRleERhdGFNYW5h
Z2VyOjpTdG9yZURpcmVjdEF0dHJpYihUcmFuc2xhdGVkQXR0cmlidXRlICpkaXJlY3RBdHRyaWIp
CiB7Ci0gICAgY29uc3QgYXV0byAmYXR0cmliICAgPSAqZGlyZWN0QXR0cmliLT5hdHRyaWJ1dGU7
Ci0gICAgZ2w6OkJ1ZmZlciAqYnVmZmVyICAgPSBhdHRyaWIuYnVmZmVyLmdldCgpOworICAgIGNv
bnN0IGF1dG8gJmF0dHJpYiAgPSAqZGlyZWN0QXR0cmliLT5hdHRyaWJ1dGU7CisgICAgY29uc3Qg
YXV0byAmYmluZGluZyA9ICpkaXJlY3RBdHRyaWItPmJpbmRpbmc7CisKKyAgICBnbDo6QnVmZmVy
ICpidWZmZXIgICA9IGJpbmRpbmcuYnVmZmVyLmdldCgpOwogICAgIEJ1ZmZlckQzRCAqYnVmZmVy
RDNEID0gYnVmZmVyID8gR2V0SW1wbEFzPEJ1ZmZlckQzRD4oYnVmZmVyKSA6IG51bGxwdHI7CiAK
LSAgICBBU1NFUlQoRGlyZWN0U3RvcmFnZVBvc3NpYmxlKGF0dHJpYikpOworICAgIEFTU0VSVChE
aXJlY3RTdG9yYWdlUG9zc2libGUoYXR0cmliLCBiaW5kaW5nKSk7CiAgICAgZGlyZWN0QXR0cmli
LT52ZXJ0ZXhCdWZmZXIuc2V0KG51bGxwdHIpOwogICAgIGRpcmVjdEF0dHJpYi0+c3RvcmFnZSA9
IGJ1ZmZlckQzRDsKICAgICBkaXJlY3RBdHRyaWItPnNlcmlhbCAgPSBidWZmZXJEM0QtPmdldFNl
cmlhbCgpOwotICAgIGRpcmVjdEF0dHJpYi0+c3RyaWRlID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50PihDb21wdXRlVmVydGV4QXR0cmlidXRlU3RyaWRlKGF0dHJpYikpOwotICAgIGRpcmVjdEF0
dHJpYi0+YmFzZU9mZnNldCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oYXR0cmliLm9mZnNl
dCk7CisgICAgZGlyZWN0QXR0cmliLT5zdHJpZGUgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+
KENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJpZGUoYXR0cmliLCBiaW5kaW5nKSk7CisgICAgZGly
ZWN0QXR0cmliLT5iYXNlT2Zmc2V0ID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50
PihDb21wdXRlVmVydGV4QXR0cmlidXRlT2Zmc2V0KGF0dHJpYiwgYmluZGluZykpOwogCiAgICAg
Ly8gSW5zdGFuY2VkIHZlcnRpY2VzIGRvIG5vdCBhcHBseSB0aGUgJ3N0YXJ0JyBvZmZzZXQKLSAg
ICBkaXJlY3RBdHRyaWItPnVzZXNGaXJzdFZlcnRleE9mZnNldCA9IChhdHRyaWIuZGl2aXNvciA9
PSAwKTsKKyAgICBkaXJlY3RBdHRyaWItPnVzZXNGaXJzdFZlcnRleE9mZnNldCA9IChiaW5kaW5n
LmRpdmlzb3IgPT0gMCk7CiB9CiAKIC8vIHN0YXRpYwotZ2w6OkVycm9yIFZlcnRleERhdGFNYW5h
Z2VyOjpTdG9yZVN0YXRpY0F0dHJpYihUcmFuc2xhdGVkQXR0cmlidXRlICp0cmFuc2xhdGVkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNv
dW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGluc3RhbmNlcykKK2dsOjpFcnJvciBWZXJ0ZXhEYXRhTWFuYWdlcjo6U3RvcmVTdGF0aWNB
dHRyaWIoVHJhbnNsYXRlZEF0dHJpYnV0ZSAqdHJhbnNsYXRlZCkKIHsKLSAgICBjb25zdCBnbDo6
VmVydGV4QXR0cmlidXRlICZhdHRyaWIgPSAqdHJhbnNsYXRlZC0+YXR0cmlidXRlOworICAgIGNv
bnN0IGF1dG8gJmF0dHJpYiAgPSAqdHJhbnNsYXRlZC0+YXR0cmlidXRlOworICAgIGNvbnN0IGF1
dG8gJmJpbmRpbmcgPSAqdHJhbnNsYXRlZC0+YmluZGluZzsKIAotICAgIGdsOjpCdWZmZXIgKmJ1
ZmZlciA9IGF0dHJpYi5idWZmZXIuZ2V0KCk7Ci0gICAgQVNTRVJUKGJ1ZmZlciAmJiBhdHRyaWIu
ZW5hYmxlZCAmJiAhRGlyZWN0U3RvcmFnZVBvc3NpYmxlKGF0dHJpYikpOworICAgIGdsOjpCdWZm
ZXIgKmJ1ZmZlciA9IGJpbmRpbmcuYnVmZmVyLmdldCgpOworICAgIEFTU0VSVChidWZmZXIgJiYg
YXR0cmliLmVuYWJsZWQgJiYgIURpcmVjdFN0b3JhZ2VQb3NzaWJsZShhdHRyaWIsIGJpbmRpbmcp
KTsKICAgICBCdWZmZXJEM0QgKmJ1ZmZlckQzRCA9IEdldEltcGxBczxCdWZmZXJEM0Q+KGJ1ZmZl
cik7CiAKICAgICAvLyBDb21wdXRlIHNvdXJjZSBkYXRhIHBvaW50ZXIKICAgICBjb25zdCB1aW50
OF90ICpzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICBjb25zdCBpbnQgb2Zmc2V0ICAgICAgICAg
ID0gc3RhdGljX2Nhc3Q8aW50PihDb21wdXRlVmVydGV4QXR0cmlidXRlT2Zmc2V0KGF0dHJpYiwg
YmluZGluZykpOwogCiAgICAgQU5HTEVfVFJZKGJ1ZmZlckQzRC0+Z2V0RGF0YSgmc291cmNlRGF0
YSkpOwotICAgIHNvdXJjZURhdGEgKz0gc3RhdGljX2Nhc3Q8aW50PihhdHRyaWIub2Zmc2V0KTsK
KyAgICBzb3VyY2VEYXRhICs9IG9mZnNldDsKIAogICAgIHVuc2lnbmVkIGludCBzdHJlYW1PZmZz
ZXQgPSAwOwogCiAgICAgdHJhbnNsYXRlZC0+c3RvcmFnZSA9IG51bGxwdHI7Ci0gICAgQU5HTEVf
VFJZX1JFU1VMVChidWZmZXJEM0QtPmdldEZhY3RvcnkoKS0+Z2V0VmVydGV4U3BhY2VSZXF1aXJl
ZChhdHRyaWIsIDEsIDApLAorICAgIEFOR0xFX1RSWV9SRVNVTFQoYnVmZmVyRDNELT5nZXRGYWN0
b3J5KCktPmdldFZlcnRleFNwYWNlUmVxdWlyZWQoYXR0cmliLCBiaW5kaW5nLCAxLCAwKSwKICAg
ICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQtPnN0cmlkZSk7CiAKLSAgICBhdXRvICpzdGF0
aWNCdWZmZXIgPSBidWZmZXJEM0QtPmdldFN0YXRpY1ZlcnRleEJ1ZmZlcihhdHRyaWIpOworICAg
IGF1dG8gKnN0YXRpY0J1ZmZlciA9IGJ1ZmZlckQzRC0+Z2V0U3RhdGljVmVydGV4QnVmZmVyKGF0
dHJpYiwgYmluZGluZyk7CiAgICAgQVNTRVJUKHN0YXRpY0J1ZmZlcik7CiAKICAgICBpZiAoc3Rh
dGljQnVmZmVyLT5lbXB0eSgpKQogICAgIHsKICAgICAgICAgLy8gQ29udmVydCB0aGUgZW50aXJl
IGJ1ZmZlcgotICAgICAgICBpbnQgdG90YWxDb3VudCA9IEVsZW1lbnRzSW5CdWZmZXIoYXR0cmli
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGJ1ZmZlckQzRC0+Z2V0U2l6ZSgpKSk7Ci0gICAg
ICAgIGludCBzdGFydEluZGV4ID0gc3RhdGljX2Nhc3Q8aW50PihhdHRyaWIub2Zmc2V0KSAvCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50PihDb21wdXRlVmVydGV4QXR0
cmlidXRlU3RyaWRlKGF0dHJpYikpOworICAgICAgICBpbnQgdG90YWxDb3VudCA9CisgICAgICAg
ICAgICBFbGVtZW50c0luQnVmZmVyKGF0dHJpYiwgYmluZGluZywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50PihidWZmZXJEM0QtPmdldFNpemUoKSkpOworICAgICAgICBpbnQgc3RhcnRJbmRleCA9
IG9mZnNldCAvIHN0YXRpY19jYXN0PGludD4oQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShh
dHRyaWIsIGJpbmRpbmcpKTsKIAotICAgICAgICBBTkdMRV9UUlkoCi0gICAgICAgICAgICBzdGF0
aWNCdWZmZXItPnN0b3JlU3RhdGljQXR0cmlidXRlKGF0dHJpYiwgLXN0YXJ0SW5kZXgsIHRvdGFs
Q291bnQsIDAsIHNvdXJjZURhdGEpKTsKKyAgICAgICAgQU5HTEVfVFJZKHN0YXRpY0J1ZmZlci0+
c3RvcmVTdGF0aWNBdHRyaWJ1dGUoYXR0cmliLCBiaW5kaW5nLCAtc3RhcnRJbmRleCwgdG90YWxD
b3VudCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc291cmNlRGF0YSkpOwogICAgIH0KIAogICAgIHVuc2lnbmVkIGludCBmaXJzdEVsZW1l
bnRPZmZzZXQgPQotICAgICAgICAoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihhdHRyaWIub2Zm
c2V0KSAvCi0gICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KENvbXB1dGVWZXJ0ZXhB
dHRyaWJ1dGVTdHJpZGUoYXR0cmliKSkpICoKKyAgICAgICAgKHN0YXRpY19jYXN0PHVuc2lnbmVk
IGludD4ob2Zmc2V0KSAvCisgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KENvbXB1
dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJpZGUoYXR0cmliLCBiaW5kaW5nKSkpICoKICAgICAgICAgdHJh
bnNsYXRlZC0+c3RyaWRlOwogCiAgICAgVmVydGV4QnVmZmVyICp2ZXJ0ZXhCdWZmZXIgPSBzdGF0
aWNCdWZmZXItPmdldFZlcnRleEJ1ZmZlcigpOwpAQCAtMzU2LDcgKzM3MCw3IEBAIGdsOjpFcnJv
ciBWZXJ0ZXhEYXRhTWFuYWdlcjo6U3RvcmVTdGF0aWNBdHRyaWIoVHJhbnNsYXRlZEF0dHJpYnV0
ZSAqdHJhbnNsYXRlZCwKICAgICB0cmFuc2xhdGVkLT5iYXNlT2Zmc2V0ID0gc3RyZWFtT2Zmc2V0
ICsgZmlyc3RFbGVtZW50T2Zmc2V0OwogCiAgICAgLy8gSW5zdGFuY2VkIHZlcnRpY2VzIGRvIG5v
dCBhcHBseSB0aGUgJ3N0YXJ0JyBvZmZzZXQKLSAgICB0cmFuc2xhdGVkLT51c2VzRmlyc3RWZXJ0
ZXhPZmZzZXQgPSAoYXR0cmliLmRpdmlzb3IgPT0gMCk7CisgICAgdHJhbnNsYXRlZC0+dXNlc0Zp
cnN0VmVydGV4T2Zmc2V0ID0gKGJpbmRpbmcuZGl2aXNvciA9PSAwKTsKIAogICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogfQpAQCAtNDExLDExICs0MjUsMTIgQEAgdm9pZCBWZXJ0ZXhEYXRhTWFu
YWdlcjo6UHJvbW90ZUR5bmFtaWNBdHRyaWJzKAogICAgIGZvciAoYXV0byBhdHRyaWJJbmRleCA6
IEl0ZXJhdGVCaXRTZXQoZHluYW1pY0F0dHJpYnNNYXNrKSkKICAgICB7CiAgICAgICAgIGNvbnN0
IGF1dG8gJmR5bmFtaWNBdHRyaWIgPSB0cmFuc2xhdGVkQXR0cmlic1thdHRyaWJJbmRleF07Ci0g
ICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGR5bmFtaWNBdHRyaWIuYXR0cmlidXRlLT5idWZm
ZXIuZ2V0KCk7CisgICAgICAgIGNvbnN0IGF1dG8gJmJpbmRpbmcgICAgICAgPSAqZHluYW1pY0F0
dHJpYi5iaW5kaW5nOworICAgICAgICBnbDo6QnVmZmVyICpidWZmZXIgICAgICAgID0gYmluZGlu
Zy5idWZmZXIuZ2V0KCk7CiAgICAgICAgIGlmIChidWZmZXIpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEJ1ZmZlckQzRCAqYnVmZmVyRDNEID0gR2V0SW1wbEFzPEJ1ZmZlckQzRD4oYnVmZmVyKTsK
LSAgICAgICAgICAgIHNpemVfdCB0eXBlU2l6ZSA9IENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVUeXBl
U2l6ZSgqZHluYW1pY0F0dHJpYi5hdHRyaWJ1dGUpOworICAgICAgICAgICAgc2l6ZV90IHR5cGVT
aXplICAgICAgPSBDb21wdXRlVmVydGV4QXR0cmlidXRlVHlwZVNpemUoKmR5bmFtaWNBdHRyaWIu
YXR0cmlidXRlKTsKICAgICAgICAgICAgIGJ1ZmZlckQzRC0+cHJvbW90ZVN0YXRpY1VzYWdlKGNv
dW50ICogc3RhdGljX2Nhc3Q8aW50Pih0eXBlU2l6ZSkpOwogICAgICAgICB9CiAgICAgfQpAQCAt
NDI1LDIwICs0NDAsMjAgQEAgZ2w6OkVycm9yIFZlcnRleERhdGFNYW5hZ2VyOjpyZXNlcnZlU3Bh
Y2VGb3JBdHRyaWIoY29uc3QgVHJhbnNsYXRlZEF0dHJpYnV0ZSAmdHIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGlu
c3RhbmNlcykgY29uc3QKIHsKLSAgICBjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIg
PSAqdHJhbnNsYXRlZEF0dHJpYi5hdHRyaWJ1dGU7Ci0gICAgQVNTRVJUKCFEaXJlY3RTdG9yYWdl
UG9zc2libGUoYXR0cmliKSk7CisgICAgY29uc3QgYXV0byAmYXR0cmliICA9ICp0cmFuc2xhdGVk
QXR0cmliLmF0dHJpYnV0ZTsKKyAgICBjb25zdCBhdXRvICZiaW5kaW5nID0gKnRyYW5zbGF0ZWRB
dHRyaWIuYmluZGluZzsKKyAgICBBU1NFUlQoIURpcmVjdFN0b3JhZ2VQb3NzaWJsZShhdHRyaWIs
IGJpbmRpbmcpKTsKIAotICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciAgID0gYXR0cmliLmJ1ZmZlci5n
ZXQoKTsKKyAgICBnbDo6QnVmZmVyICpidWZmZXIgICA9IGJpbmRpbmcuYnVmZmVyLmdldCgpOwog
ICAgIEJ1ZmZlckQzRCAqYnVmZmVyRDNEID0gYnVmZmVyID8gR2V0SW1wbEFzPEJ1ZmZlckQzRD4o
YnVmZmVyKSA6IG51bGxwdHI7Ci0gICAgQVNTRVJUKCFidWZmZXJEM0QgfHwgYnVmZmVyRDNELT5n
ZXRTdGF0aWNWZXJ0ZXhCdWZmZXIoYXR0cmliKSA9PSBudWxscHRyKTsKLSAgICBVTlVTRURfQVNT
RVJUSU9OX1ZBUklBQkxFKGJ1ZmZlckQzRCk7CisgICAgQVNTRVJUKCFidWZmZXJEM0QgfHwgYnVm
ZmVyRDNELT5nZXRTdGF0aWNWZXJ0ZXhCdWZmZXIoYXR0cmliLCBiaW5kaW5nKSA9PSBudWxscHRy
KTsKIAotICAgIHNpemVfdCB0b3RhbENvdW50ID0gQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZUVsZW1l
bnRDb3VudChhdHRyaWIsIGNvdW50LCBpbnN0YW5jZXMpOworICAgIHNpemVfdCB0b3RhbENvdW50
ID0gQ29tcHV0ZVZlcnRleEJpbmRpbmdFbGVtZW50Q291bnQoYmluZGluZywgY291bnQsIGluc3Rh
bmNlcyk7CiAgICAgQVNTRVJUKCFidWZmZXJEM0QgfHwKLSAgICAgICAgICAgRWxlbWVudHNJbkJ1
ZmZlcihhdHRyaWIsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oYnVmZmVyRDNELT5nZXRTaXpl
KCkpKSA+PQorICAgICAgICAgICBFbGVtZW50c0luQnVmZmVyKGF0dHJpYiwgYmluZGluZywgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgaW50PihidWZmZXJEM0QtPmdldFNpemUoKSkpID49CiAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHRvdGFsQ291bnQpKTsKIAotICAgIHJldHVybiBtU3Ry
ZWFtaW5nQnVmZmVyLT5yZXNlcnZlVmVydGV4U3BhY2UoYXR0cmliLCBzdGF0aWNfY2FzdDxHTHNp
emVpPih0b3RhbENvdW50KSwKKyAgICByZXR1cm4gbVN0cmVhbWluZ0J1ZmZlci0+cmVzZXJ2ZVZl
cnRleFNwYWNlKGF0dHJpYiwgYmluZGluZywgc3RhdGljX2Nhc3Q8R0xzaXplaT4odG90YWxDb3Vu
dCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0
YW5jZXMpOwogfQogCkBAIC00NDcsMTYgKzQ2MiwxNyBAQCBnbDo6RXJyb3IgVmVydGV4RGF0YU1h
bmFnZXI6OnN0b3JlRHluYW1pY0F0dHJpYihUcmFuc2xhdGVkQXR0cmlidXRlICp0cmFuc2xhdGVk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgaW5zdGFuY2VzKQogewotICAgIGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0
dHJpYiA9ICp0cmFuc2xhdGVkLT5hdHRyaWJ1dGU7CisgICAgY29uc3QgYXV0byAmYXR0cmliICA9
ICp0cmFuc2xhdGVkLT5hdHRyaWJ1dGU7CisgICAgY29uc3QgYXV0byAmYmluZGluZyA9ICp0cmFu
c2xhdGVkLT5iaW5kaW5nOwogCi0gICAgZ2w6OkJ1ZmZlciAqYnVmZmVyID0gYXR0cmliLmJ1ZmZl
ci5nZXQoKTsKKyAgICBnbDo6QnVmZmVyICpidWZmZXIgPSBiaW5kaW5nLmJ1ZmZlci5nZXQoKTsK
ICAgICBBU1NFUlQoYnVmZmVyIHx8IGF0dHJpYi5wb2ludGVyKTsKICAgICBBU1NFUlQoYXR0cmli
LmVuYWJsZWQpOwogCiAgICAgQnVmZmVyRDNEICpzdG9yYWdlID0gYnVmZmVyID8gR2V0SW1wbEFz
PEJ1ZmZlckQzRD4oYnVmZmVyKSA6IG51bGxwdHI7CiAKICAgICAvLyBJbnN0YW5jZWQgdmVydGlj
ZXMgZG8gbm90IGFwcGx5IHRoZSAnc3RhcnQnIG9mZnNldAotICAgIEdMaW50IGZpcnN0VmVydGV4
SW5kZXggPSAoYXR0cmliLmRpdmlzb3IgPiAwID8gMCA6IHN0YXJ0KTsKKyAgICBHTGludCBmaXJz
dFZlcnRleEluZGV4ID0gKGJpbmRpbmcuZGl2aXNvciA+IDAgPyAwIDogc3RhcnQpOwogCiAgICAg
Ly8gQ29tcHV0ZSBzb3VyY2UgZGF0YSBwb2ludGVyCiAgICAgY29uc3QgdWludDhfdCAqc291cmNl
RGF0YSA9IG51bGxwdHI7CkBAIC00NjQsMjMgKzQ4MCwyNSBAQCBnbDo6RXJyb3IgVmVydGV4RGF0
YU1hbmFnZXI6OnN0b3JlRHluYW1pY0F0dHJpYihUcmFuc2xhdGVkQXR0cmlidXRlICp0cmFuc2xh
dGVkLAogICAgIGlmIChidWZmZXIpCiAgICAgewogICAgICAgICBBTkdMRV9UUlkoc3RvcmFnZS0+
Z2V0RGF0YSgmc291cmNlRGF0YSkpOwotICAgICAgICBzb3VyY2VEYXRhICs9IHN0YXRpY19jYXN0
PGludD4oYXR0cmliLm9mZnNldCk7CisgICAgICAgIHNvdXJjZURhdGEgKz0gc3RhdGljX2Nhc3Q8
aW50PihDb21wdXRlVmVydGV4QXR0cmlidXRlT2Zmc2V0KGF0dHJpYiwgYmluZGluZykpOwogICAg
IH0KICAgICBlbHNlCiAgICAgeworICAgICAgICAvLyBBdHRyaWJ1dGVzIHVzaW5nIGNsaWVudCBt
ZW1vcnkgaWdub3JlIHRoZSBWRVJURVhfQVRUUklCX0JJTkRJTkcgc3RhdGUuCisgICAgICAgIC8v
IGh0dHBzOi8vd3d3Lm9wZW5nbC5vcmcvcmVnaXN0cnkvc3BlY3MvQVJCL3ZlcnRleF9hdHRyaWJf
YmluZGluZy50eHQKICAgICAgICAgc291cmNlRGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4
X3QqPihhdHRyaWIucG9pbnRlcik7CiAgICAgfQogCiAgICAgdW5zaWduZWQgaW50IHN0cmVhbU9m
ZnNldCA9IDA7CiAKICAgICB0cmFuc2xhdGVkLT5zdG9yYWdlID0gbnVsbHB0cjsKLSAgICBBTkdM
RV9UUllfUkVTVUxUKG1GYWN0b3J5LT5nZXRWZXJ0ZXhTcGFjZVJlcXVpcmVkKGF0dHJpYiwgMSwg
MCksIHRyYW5zbGF0ZWQtPnN0cmlkZSk7CisgICAgQU5HTEVfVFJZX1JFU1VMVChtRmFjdG9yeS0+
Z2V0VmVydGV4U3BhY2VSZXF1aXJlZChhdHRyaWIsIGJpbmRpbmcsIDEsIDApLCB0cmFuc2xhdGVk
LT5zdHJpZGUpOwogCi0gICAgc2l6ZV90IHRvdGFsQ291bnQgPSBDb21wdXRlVmVydGV4QXR0cmli
dXRlRWxlbWVudENvdW50KGF0dHJpYiwgY291bnQsIGluc3RhbmNlcyk7CisgICAgc2l6ZV90IHRv
dGFsQ291bnQgPSBDb21wdXRlVmVydGV4QmluZGluZ0VsZW1lbnRDb3VudChiaW5kaW5nLCBjb3Vu
dCwgaW5zdGFuY2VzKTsKIAogICAgIEFOR0xFX1RSWShtU3RyZWFtaW5nQnVmZmVyLT5zdG9yZUR5
bmFtaWNBdHRyaWJ1dGUoCi0gICAgICAgIGF0dHJpYiwgdHJhbnNsYXRlZC0+Y3VycmVudFZhbHVl
VHlwZSwgZmlyc3RWZXJ0ZXhJbmRleCwgc3RhdGljX2Nhc3Q8R0xzaXplaT4odG90YWxDb3VudCks
Ci0gICAgICAgIGluc3RhbmNlcywgJnN0cmVhbU9mZnNldCwgc291cmNlRGF0YSkpOworICAgICAg
ICBhdHRyaWIsIGJpbmRpbmcsIHRyYW5zbGF0ZWQtPmN1cnJlbnRWYWx1ZVR5cGUsIGZpcnN0VmVy
dGV4SW5kZXgsCisgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHRvdGFsQ291bnQpLCBpbnN0
YW5jZXMsICZzdHJlYW1PZmZzZXQsIHNvdXJjZURhdGEpKTsKIAogICAgIFZlcnRleEJ1ZmZlciAq
dmVydGV4QnVmZmVyID0gbVN0cmVhbWluZ0J1ZmZlci0+Z2V0VmVydGV4QnVmZmVyKCk7CiAKQEAg
LTUwNiwxNCArNTI0LDE1IEBAIGdsOjpFcnJvciBWZXJ0ZXhEYXRhTWFuYWdlcjo6c3RvcmVDdXJy
ZW50VmFsdWUoY29uc3QgZ2w6OlZlcnRleEF0dHJpYkN1cnJlbnRWYWx1CiAKICAgICBpZiAoY2Fj
aGVkU3RhdGUtPmRhdGEgIT0gY3VycmVudFZhbHVlKQogICAgIHsKLSAgICAgICAgY29uc3QgZ2w6
OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0gKnRyYW5zbGF0ZWQtPmF0dHJpYnV0ZTsKKyAgICAg
ICAgY29uc3QgYXV0byAmYXR0cmliICA9ICp0cmFuc2xhdGVkLT5hdHRyaWJ1dGU7CisgICAgICAg
IGNvbnN0IGF1dG8gJmJpbmRpbmcgPSAqdHJhbnNsYXRlZC0+YmluZGluZzsKIAotICAgICAgICBB
TkdMRV9UUlkoYnVmZmVyLT5yZXNlcnZlVmVydGV4U3BhY2UoYXR0cmliLCAxLCAwKSk7CisgICAg
ICAgIEFOR0xFX1RSWShidWZmZXItPnJlc2VydmVWZXJ0ZXhTcGFjZShhdHRyaWIsIGJpbmRpbmcs
IDEsIDApKTsKIAogICAgICAgICBjb25zdCB1aW50OF90ICpzb3VyY2VEYXRhID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oY3VycmVudFZhbHVlLkZsb2F0VmFsdWVzKTsKICAgICAg
ICAgdW5zaWduZWQgaW50IHN0cmVhbU9mZnNldDsKLSAgICAgICAgQU5HTEVfVFJZKGJ1ZmZlci0+
c3RvcmVEeW5hbWljQXR0cmlidXRlKGF0dHJpYiwgY3VycmVudFZhbHVlLlR5cGUsIDAsIDEsIDAs
ICZzdHJlYW1PZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzb3VyY2VEYXRhKSk7CisgICAgICAgIEFOR0xFX1RSWShidWZmZXItPnN0b3JlRHlu
YW1pY0F0dHJpYnV0ZShhdHRyaWIsIGJpbmRpbmcsIGN1cnJlbnRWYWx1ZS5UeXBlLCAwLCAxLCAw
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cmVh
bU9mZnNldCwgc291cmNlRGF0YSkpOwogCiAgICAgICAgIGJ1ZmZlci0+Z2V0VmVydGV4QnVmZmVy
KCktPmhpbnRVbm1hcFJlc291cmNlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0YU1hbmFnZXIuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0
YU1hbmFnZXIuaAppbmRleCBkYTQ2YzdhODc3OS4uYzljYjVkZmI0NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvVmVydGV4RGF0
YU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL1ZlcnRleERhdGFNYW5hZ2VyLmgKQEAgLTE5LDYgKzE5LDcgQEAgbmFtZXNwYWNl
IGdsCiB7CiBjbGFzcyBTdGF0ZTsKIHN0cnVjdCBWZXJ0ZXhBdHRyaWJ1dGU7CitzdHJ1Y3QgVmVy
dGV4QmluZGluZzsKIHN0cnVjdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVEYXRhOwogfQogCkBA
IC01NSw2ICs1Niw3IEBAIHN0cnVjdCBUcmFuc2xhdGVkQXR0cmlidXRlCiAgICAgYm9vbCBhY3Rp
dmU7CiAKICAgICBjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICphdHRyaWJ1dGU7CisgICAgY29u
c3QgZ2w6OlZlcnRleEJpbmRpbmcgKmJpbmRpbmc7CiAgICAgR0xlbnVtIGN1cnJlbnRWYWx1ZVR5
cGU7CiAgICAgdW5zaWduZWQgaW50IGJhc2VPZmZzZXQ7CiAgICAgYm9vbCB1c2VzRmlyc3RWZXJ0
ZXhPZmZzZXQ7CkBAIC03Niw3ICs3OCw4IEBAIGVudW0gY2xhc3MgVmVydGV4U3RvcmFnZVR5cGUK
IH07CiAKIC8vIEdpdmVuIGEgdmVydGV4IGF0dHJpYnV0ZSwgcmV0dXJuIHRoZSB0eXBlIG9mIHN0
b3JhZ2UgaXQgd2lsbCB1c2UuCi1WZXJ0ZXhTdG9yYWdlVHlwZSBDbGFzc2lmeUF0dHJpYnV0ZVN0
b3JhZ2UoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliKTsKK1ZlcnRleFN0b3JhZ2VU
eXBlIENsYXNzaWZ5QXR0cmlidXRlU3RvcmFnZShjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZh
dHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OlZlcnRleEJpbmRpbmcgJmJpbmRpbmcpOwogCiBjbGFzcyBWZXJ0ZXhEYXRhTWFuYWdlciA6
IGFuZ2xlOjpOb25Db3B5YWJsZQogewpAQCAtOTIsOSArOTUsNyBAQCBjbGFzcyBWZXJ0ZXhEYXRh
TWFuYWdlciA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAgICAgc3RhdGljIHZvaWQgU3RvcmVEaXJl
Y3RBdHRyaWIoVHJhbnNsYXRlZEF0dHJpYnV0ZSAqZGlyZWN0QXR0cmliKTsKIAotICAgIHN0YXRp
YyBnbDo6RXJyb3IgU3RvcmVTdGF0aWNBdHRyaWIoVHJhbnNsYXRlZEF0dHJpYnV0ZSAqdHJhbnNs
YXRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3Rh
bmNlcyk7CisgICAgc3RhdGljIGdsOjpFcnJvciBTdG9yZVN0YXRpY0F0dHJpYihUcmFuc2xhdGVk
QXR0cmlidXRlICp0cmFuc2xhdGVkKTsKIAogICAgIGdsOjpFcnJvciBzdG9yZUR5bmFtaWNBdHRy
aWJzKHN0ZDo6dmVjdG9yPFRyYW5zbGF0ZWRBdHRyaWJ1dGU+ICp0cmFuc2xhdGVkQXR0cmlicywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6QXR0cmlidXRlc01h
c2sgJmR5bmFtaWNBdHRyaWJzTWFzaywKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQmxpdDExLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQmxpdDExLmNw
cAppbmRleCBhMzQzOTBkYzc2Zi4uY2M0ZjZjZTA3ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQmxpdDExLmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL0JsaXQxMS5jcHAKQEAgLTU4OSw4ICs1ODksNiBAQCBCbGl0MTE6OkJsaXQxMShSZW5kZXJl
cjExICpyZW5kZXJlcikKIAogQmxpdDExOjp+QmxpdDExKCkKIHsKLSAgICBmcmVlUmVzb3VyY2Vz
KCk7Ci0KICAgICBtUXVhZDJESUwucmVsZWFzZSgpOwogICAgIG1RdWFkMkRWUy5yZWxlYXNlKCk7
CiAgICAgbURlcHRoUFMucmVsZWFzZSgpOwpAQCAtNjA3LDcgKzYwNSw3IEBAIGdsOjpFcnJvciBC
bGl0MTE6OmluaXRSZXNvdXJjZXMoKQogewogICAgIGlmIChtUmVzb3VyY2VzSW5pdGlhbGl6ZWQp
CiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAgVFJBQ0VfRVZFTlQwKCJncHUuYW5n
bGUiLCAiQmxpdDExOjppbml0UmVzb3VyY2VzIik7CkBAIC02MjYsMTMgKzYyNCwxMSBAQCBnbDo6
RXJyb3IgQmxpdDExOjppbml0UmVzb3VyY2VzKCkKICAgICB2YkRlc2MuTWlzY0ZsYWdzICAgICAg
ICAgICA9IDA7CiAgICAgdmJEZXNjLlN0cnVjdHVyZUJ5dGVTdHJpZGUgPSAwOwogCi0gICAgcmVz
dWx0ID0gZGV2aWNlLT5DcmVhdGVCdWZmZXIoJnZiRGVzYywgbnVsbHB0ciwgJm1WZXJ0ZXhCdWZm
ZXIpOworICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQnVmZmVyKCZ2YkRlc2MsIG51bGxwdHIs
IG1WZXJ0ZXhCdWZmZXIuR2V0QWRkcmVzc09mKCkpOwogICAgIEFTU0VSVChTVUNDRUVERUQocmVz
dWx0KSk7CiAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKLSAgICAgICAgZnJlZVJlc291
cmNlcygpOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWls
ZWQgdG8gY3JlYXRlIGJsaXQgdmVydGV4IGJ1ZmZlciwgSFJFU1VMVDogMHglWCIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGdsOjpPdXRPZk1lbW9y
eSgpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIGJsaXQgdmVydGV4IGJ1ZmZlciwgIiA8PCByZXN1bHQ7
CiAgICAgfQogICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobVZlcnRleEJ1ZmZlciwgIkJsaXQxMSB2
ZXJ0ZXggYnVmZmVyIik7CiAKQEAgLTY1MSwxMyArNjQ3LDExIEBAIGdsOjpFcnJvciBCbGl0MTE6
OmluaXRSZXNvdXJjZXMoKQogICAgIHBvaW50U2FtcGxlckRlc2MuTWluTE9EICAgICAgICAgPSAw
LjBmOwogICAgIHBvaW50U2FtcGxlckRlc2MuTWF4TE9EICAgICAgICAgPSBGTFRfTUFYOwogCi0g
ICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVTYW1wbGVyU3RhdGUoJnBvaW50U2FtcGxlckRlc2Ms
ICZtUG9pbnRTYW1wbGVyKTsKKyAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVNhbXBsZXJTdGF0
ZSgmcG9pbnRTYW1wbGVyRGVzYywgbVBvaW50U2FtcGxlci5HZXRBZGRyZXNzT2YoKSk7CiAgICAg
QVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAg
ewotICAgICAgICBmcmVlUmVzb3VyY2VzKCk7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
T1VUX09GX01FTU9SWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0
ZSBibGl0IHBvaW50IHNhbXBsZXIgc3RhdGUsIEhSRVNVTFQ6IDB4JVgiLCByZXN1bHQpOworICAg
ICAgICByZXR1cm4gZ2w6Ok91dE9mTWVtb3J5KCkgPDwgIkZhaWxlZCB0byBjcmVhdGUgYmxpdCBw
b2ludCBzYW1wbGVyIHN0YXRlLCAiIDw8IHJlc3VsdDsKICAgICB9CiAgICAgZDNkMTE6OlNldERl
YnVnTmFtZShtUG9pbnRTYW1wbGVyLCAiQmxpdDExIHBvaW50IHNhbXBsZXIiKTsKIApAQCAtNjc2
LDEzICs2NzAsMTEgQEAgZ2w6OkVycm9yIEJsaXQxMTo6aW5pdFJlc291cmNlcygpCiAgICAgbGlu
ZWFyU2FtcGxlckRlc2MuTWluTE9EICAgICAgICAgPSAwLjBmOwogICAgIGxpbmVhclNhbXBsZXJE
ZXNjLk1heExPRCAgICAgICAgID0gRkxUX01BWDsKIAotICAgIHJlc3VsdCA9IGRldmljZS0+Q3Jl
YXRlU2FtcGxlclN0YXRlKCZsaW5lYXJTYW1wbGVyRGVzYywgJm1MaW5lYXJTYW1wbGVyKTsKKyAg
ICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVNhbXBsZXJTdGF0ZSgmbGluZWFyU2FtcGxlckRlc2Ms
IG1MaW5lYXJTYW1wbGVyLkdldEFkZHJlc3NPZigpKTsKICAgICBBU1NFUlQoU1VDQ0VFREVEKHJl
c3VsdCkpOwogICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICB7Ci0gICAgICAgIGZyZWVSZXNv
dXJjZXMoKTsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIGJsaXQgbGluZWFyIHNhbXBs
ZXIgc3RhdGUsIEhSRVNVTFQ6IDB4JVgiLCByZXN1bHQpOworICAgICAgICByZXR1cm4gZ2w6Ok91
dE9mTWVtb3J5KCkgPDwgIkZhaWxlZCB0byBjcmVhdGUgYmxpdCBsaW5lYXIgc2FtcGxlciBzdGF0
ZSwgIiA8PCByZXN1bHQ7CiAgICAgfQogICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobUxpbmVhclNh
bXBsZXIsICJCbGl0MTEgbGluZWFyIHNhbXBsZXIiKTsKIApAQCAtNjk5LDMxICs2OTEsMjggQEAg
Z2w6OkVycm9yIEJsaXQxMTo6aW5pdFJlc291cmNlcygpCiAgICAgcmFzdGVyRGVzYy5BbnRpYWxp
YXNlZExpbmVFbmFibGUgPSBGQUxTRTsKIAogICAgIHJhc3RlckRlc2MuU2Npc3NvckVuYWJsZSA9
IFRSVUU7Ci0gICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVSYXN0ZXJpemVyU3RhdGUoJnJhc3Rl
ckRlc2MsICZtU2Npc3NvckVuYWJsZWRSYXN0ZXJpemVyU3RhdGUpOworICAgIHJlc3VsdCA9Cisg
ICAgICAgIGRldmljZS0+Q3JlYXRlUmFzdGVyaXplclN0YXRlKCZyYXN0ZXJEZXNjLCBtU2Npc3Nv
ckVuYWJsZWRSYXN0ZXJpemVyU3RhdGUuR2V0QWRkcmVzc09mKCkpOwogICAgIEFTU0VSVChTVUND
RUVERUQocmVzdWx0KSk7CiAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKLSAgICAgICAg
ZnJlZVJlc291cmNlcygpOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1P
UlksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgYmxpdCBzY2lz
c29yaW5nIHJhc3Rlcml6ZXIgc3RhdGUsIEhSRVNVTFQ6IDB4JVgiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBnbDo6T3V0T2ZNZW1vcnkoKSA8PCAi
RmFpbGVkIHRvIGNyZWF0ZSBibGl0IHNjaXNzb3JpbmcgcmFzdGVyaXplciBzdGF0ZSwgIiA8PCBy
ZXN1bHQ7CiAgICAgfQogICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobVNjaXNzb3JFbmFibGVkUmFz
dGVyaXplclN0YXRlLCAiQmxpdDExIHNjaXNzb3JpbmcgcmFzdGVyaXplciBzdGF0ZSIpOwogCiAg
ICAgcmFzdGVyRGVzYy5TY2lzc29yRW5hYmxlID0gRkFMU0U7Ci0gICAgcmVzdWx0ID0gZGV2aWNl
LT5DcmVhdGVSYXN0ZXJpemVyU3RhdGUoJnJhc3RlckRlc2MsICZtU2Npc3NvckRpc2FibGVkUmFz
dGVyaXplclN0YXRlKTsKKyAgICByZXN1bHQgPQorICAgICAgICBkZXZpY2UtPkNyZWF0ZVJhc3Rl
cml6ZXJTdGF0ZSgmcmFzdGVyRGVzYywgbVNjaXNzb3JEaXNhYmxlZFJhc3Rlcml6ZXJTdGF0ZS5H
ZXRBZGRyZXNzT2YoKSk7CiAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKICAgICBpZiAo
RkFJTEVEKHJlc3VsdCkpCiAgICAgewotICAgICAgICBmcmVlUmVzb3VyY2VzKCk7Ci0gICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBibGl0IG5vIHNjaXNzb3JpbmcgcmFzdGVyaXplciBzdGF0
ZSwgSFJFU1VMVDogMHglWCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAg
ICAgICAgcmV0dXJuIGdsOjpPdXRPZk1lbW9yeSgpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIGJsaXQg
bm8gc2Npc3NvcmluZyByYXN0ZXJpemVyIHN0YXRlLCAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA8PCByZXN1bHQ7CiAgICAgfQogICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobVNj
aXNzb3JEaXNhYmxlZFJhc3Rlcml6ZXJTdGF0ZSwgIkJsaXQxMSBubyBzY2lzc29yaW5nIHJhc3Rl
cml6ZXIgc3RhdGUiKTsKIAogICAgIEQzRDExX0RFUFRIX1NURU5DSUxfREVTQyBkZXB0aFN0ZW5j
aWxEZXNjOwotICAgIGRlcHRoU3RlbmNpbERlc2MuRGVwdGhFbmFibGUgICAgICAgICAgICAgICAg
ICA9IHRydWU7CisgICAgZGVwdGhTdGVuY2lsRGVzYy5EZXB0aEVuYWJsZSAgICAgICAgICAgICAg
ICAgID0gVFJVRTsKICAgICBkZXB0aFN0ZW5jaWxEZXNjLkRlcHRoV3JpdGVNYXNrICAgICAgICAg
ICAgICAgPSBEM0QxMV9ERVBUSF9XUklURV9NQVNLX0FMTDsKICAgICBkZXB0aFN0ZW5jaWxEZXNj
LkRlcHRoRnVuYyAgICAgICAgICAgICAgICAgICAgPSBEM0QxMV9DT01QQVJJU09OX0FMV0FZUzsK
ICAgICBkZXB0aFN0ZW5jaWxEZXNjLlN0ZW5jaWxFbmFibGUgICAgICAgICAgICAgICAgPSBGQUxT
RTsKQEAgLTczOCwxMyArNzI3LDExIEBAIGdsOjpFcnJvciBCbGl0MTE6OmluaXRSZXNvdXJjZXMo
KQogICAgIGRlcHRoU3RlbmNpbERlc2MuQmFja0ZhY2UuU3RlbmNpbFBhc3NPcCAgICAgICA9IEQz
RDExX1NURU5DSUxfT1BfS0VFUDsKICAgICBkZXB0aFN0ZW5jaWxEZXNjLkJhY2tGYWNlLlN0ZW5j
aWxGdW5jICAgICAgICAgPSBEM0QxMV9DT01QQVJJU09OX0FMV0FZUzsKIAotICAgIHJlc3VsdCA9
IGRldmljZS0+Q3JlYXRlRGVwdGhTdGVuY2lsU3RhdGUoJmRlcHRoU3RlbmNpbERlc2MsICZtRGVw
dGhTdGVuY2lsU3RhdGUpOworICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlRGVwdGhTdGVuY2ls
U3RhdGUoJmRlcHRoU3RlbmNpbERlc2MsIG1EZXB0aFN0ZW5jaWxTdGF0ZS5HZXRBZGRyZXNzT2Yo
KSk7CiAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKICAgICBpZiAoRkFJTEVEKHJlc3Vs
dCkpCiAgICAgewotICAgICAgICBmcmVlUmVzb3VyY2VzKCk7Ci0gICAgICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVk
IHRvIGNyZWF0ZSBibGl0IGRlcHRoIHN0ZW5jaWwgc3RhdGUsIEhSRVNVTFQ6IDB4JVgiLCByZXN1
bHQpOworICAgICAgICByZXR1cm4gZ2w6Ok91dE9mTWVtb3J5KCkgPDwgIkZhaWxlZCB0byBjcmVh
dGUgYmxpdCBkZXB0aCBzdGVuY2lsIHN0YXRlLCAiIDw8IHJlc3VsdDsKICAgICB9CiAgICAgZDNk
MTE6OlNldERlYnVnTmFtZShtRGVwdGhTdGVuY2lsU3RhdGUsICJCbGl0MTEgZGVwdGggc3RlbmNp
bCBzdGF0ZSIpOwogCkBAIC03NTYsMzIgKzc0MywxNyBAQCBnbDo6RXJyb3IgQmxpdDExOjppbml0
UmVzb3VyY2VzKCkKICAgICBzd2l6emxlQnVmZmVyRGVzYy5NaXNjRmxhZ3MgICAgICAgICAgID0g
MDsKICAgICBzd2l6emxlQnVmZmVyRGVzYy5TdHJ1Y3R1cmVCeXRlU3RyaWRlID0gMDsKIAotICAg
IHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQnVmZmVyKCZzd2l6emxlQnVmZmVyRGVzYywgbnVsbHB0
ciwgJm1Td2l6emxlQ0IpOworICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQnVmZmVyKCZzd2l6
emxlQnVmZmVyRGVzYywgbnVsbHB0ciwgbVN3aXp6bGVDQi5HZXRBZGRyZXNzT2YoKSk7CiAgICAg
QVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAg
ewotICAgICAgICBmcmVlUmVzb3VyY2VzKCk7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
T1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgYmxpdCBzd2l6emxlIGJ1ZmZlciwgSFJF
U1VMVDogMHglWCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICAgICAg
cmV0dXJuIGdsOjpPdXRPZk1lbW9yeSgpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIGJsaXQgc3dpenps
ZSBidWZmZXIsICIgPDwgcmVzdWx0OwogICAgIH0KICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1T
d2l6emxlQ0IsICJCbGl0MTEgc3dpenpsZSBjb25zdGFudCBidWZmZXIiKTsKIAogICAgIG1SZXNv
dXJjZXNJbml0aWFsaXplZCA9IHRydWU7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKLX0KLQotdm9pZCBCbGl0MTE6OmZyZWVSZXNvdXJjZXMoKQotewotICAgIFNhZmVSZWxl
YXNlKG1WZXJ0ZXhCdWZmZXIpOwotICAgIFNhZmVSZWxlYXNlKG1Qb2ludFNhbXBsZXIpOwotICAg
IFNhZmVSZWxlYXNlKG1MaW5lYXJTYW1wbGVyKTsKLSAgICBTYWZlUmVsZWFzZShtU2Npc3NvckVu
YWJsZWRSYXN0ZXJpemVyU3RhdGUpOwotICAgIFNhZmVSZWxlYXNlKG1TY2lzc29yRGlzYWJsZWRS
YXN0ZXJpemVyU3RhdGUpOwotICAgIFNhZmVSZWxlYXNlKG1EZXB0aFN0ZW5jaWxTdGF0ZSk7Ci0g
ICAgU2FmZVJlbGVhc2UobVN3aXp6bGVDQik7Ci0KLSAgICBtUmVzb3VyY2VzSW5pdGlhbGl6ZWQg
PSBmYWxzZTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogLy8gc3RhdGljCkBAIC0x
MDY0LDEyICsxMDM2LDExIEBAIGdsOjpFcnJvciBCbGl0MTE6OnN3aXp6bGVUZXh0dXJlKElEM0Qx
MVNoYWRlclJlc291cmNlVmlldyAqc291cmNlLAogCiAgICAgLy8gU2V0IHZlcnRpY2VzCiAgICAg
RDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZFJlc291cmNlOwotICAgIHJlc3VsdCA9IGRl
dmljZUNvbnRleHQtPk1hcChtVmVydGV4QnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FS
RCwgMCwgJm1hcHBlZFJlc291cmNlKTsKKyAgICByZXN1bHQgPQorICAgICAgICBkZXZpY2VDb250
ZXh0LT5NYXAobVZlcnRleEJ1ZmZlci5HZXQoKSwgMCwgRDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQs
IDAsICZtYXBwZWRSZXNvdXJjZSk7CiAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICJGYWlsZWQgdG8gbWFwIGludGVybmFsIHZlcnRleCBidWZmZXIgZm9yIHN3aXp6
bGUsIEhSRVNVTFQ6IDB4JVguIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOwor
ICAgICAgICByZXR1cm4gZ2w6Ok91dE9mTWVtb3J5KCkgPDwgIkZhaWxlZCB0byBtYXAgaW50ZXJu
YWwgdmVydGV4IGJ1ZmZlciBmb3Igc3dpenpsZSwgIiA8PCByZXN1bHQ7CiAgICAgfQogCiAgICAg
Y29uc3QgU2hhZGVyU3VwcG9ydCAmc3VwcG9ydCA9IGdldFNoYWRlclN1cHBvcnQoKnNoYWRlcik7
CkBAIC0xMDgzLDE1ICsxMDU0LDE0IEBAIGdsOjpFcnJvciBCbGl0MTE6OnN3aXp6bGVUZXh0dXJl
KElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc291cmNlLAogICAgIHN1cHBvcnQudmVydGV4V3Jp
dGVGdW5jdGlvbihhcmVhLCBzaXplLCBhcmVhLCBzaXplLCBtYXBwZWRSZXNvdXJjZS5wRGF0YSwg
JnN0cmlkZSwgJmRyYXdDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRv
cG9sb2d5KTsKIAotICAgIGRldmljZUNvbnRleHQtPlVubWFwKG1WZXJ0ZXhCdWZmZXIsIDApOwor
ICAgIGRldmljZUNvbnRleHQtPlVubWFwKG1WZXJ0ZXhCdWZmZXIuR2V0KCksIDApOwogCiAgICAg
Ly8gU2V0IGNvbnN0YW50IGJ1ZmZlcgotICAgIHJlc3VsdCA9IGRldmljZUNvbnRleHQtPk1hcCht
U3dpenpsZUNCLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FSRCwgMCwgJm1hcHBlZFJlc291cmNl
KTsKKyAgICByZXN1bHQgPSBkZXZpY2VDb250ZXh0LT5NYXAobVN3aXp6bGVDQi5HZXQoKSwgMCwg
RDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQsIDAsICZtYXBwZWRSZXNvdXJjZSk7CiAgICAgaWYgKEZB
SUxFRChyZXN1bHQpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLAotICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gbWFwIGludGVybmFs
IGNvbnN0YW50IGJ1ZmZlciBmb3Igc3dpenpsZSwgSFJFU1VMVDogMHglWC4iLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc3VsdCk7CisgICAgICAgIHJldHVybiBnbDo6T3V0T2ZNZW1vcnko
KSA8PCAiRmFpbGVkIHRvIG1hcCBpbnRlcm5hbCBjb25zdGFudCBidWZmZXIgZm9yIHN3aXp6bGUs
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHJlc3VsdDsKICAgICB9CiAK
ICAgICB1bnNpZ25lZCBpbnQgKnN3aXp6bGVJbmRpY2VzID0gcmVpbnRlcnByZXRfY2FzdDx1bnNp
Z25lZCBpbnQgKj4obWFwcGVkUmVzb3VyY2UucERhdGEpOwpAQCAtMTEwMCwxOCArMTA3MCwxOCBA
QCBnbDo6RXJyb3IgQmxpdDExOjpzd2l6emxlVGV4dHVyZShJRDNEMTFTaGFkZXJSZXNvdXJjZVZp
ZXcgKnNvdXJjZSwKICAgICBzd2l6emxlSW5kaWNlc1syXSAgICAgICAgICAgID0gR2V0U3dpenps
ZUluZGV4KHN3aXp6bGVUYXJnZXQuc3dpenpsZUJsdWUpOwogICAgIHN3aXp6bGVJbmRpY2VzWzNd
ICAgICAgICAgICAgPSBHZXRTd2l6emxlSW5kZXgoc3dpenpsZVRhcmdldC5zd2l6emxlQWxwaGEp
OwogCi0gICAgZGV2aWNlQ29udGV4dC0+VW5tYXAobVN3aXp6bGVDQiwgMCk7CisgICAgZGV2aWNl
Q29udGV4dC0+VW5tYXAobVN3aXp6bGVDQi5HZXQoKSwgMCk7CiAKICAgICAvLyBBcHBseSB2ZXJ0
ZXggYnVmZmVyCi0gICAgZGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKDAsIDEsICZt
VmVydGV4QnVmZmVyLCAmc3RyaWRlLCAmc3RhcnRJZHgpOworICAgIGRldmljZUNvbnRleHQtPklB
U2V0VmVydGV4QnVmZmVycygwLCAxLCBtVmVydGV4QnVmZmVyLkdldEFkZHJlc3NPZigpLCAmc3Ry
aWRlLCAmc3RhcnRJZHgpOwogCiAgICAgLy8gQXBwbHkgY29uc3RhbnQgYnVmZmVyCi0gICAgZGV2
aWNlQ29udGV4dC0+UFNTZXRDb25zdGFudEJ1ZmZlcnMoMCwgMSwgJm1Td2l6emxlQ0IpOworICAg
IGRldmljZUNvbnRleHQtPlBTU2V0Q29uc3RhbnRCdWZmZXJzKDAsIDEsIG1Td2l6emxlQ0IuR2V0
QWRkcmVzc09mKCkpOwogCiAgICAgLy8gQXBwbHkgc3RhdGUKICAgICBkZXZpY2VDb250ZXh0LT5P
TVNldEJsZW5kU3RhdGUobnVsbHB0ciwgbnVsbHB0ciwgMHhGRkZGRkZGKTsKICAgICBkZXZpY2VD
b250ZXh0LT5PTVNldERlcHRoU3RlbmNpbFN0YXRlKG51bGxwdHIsIDB4RkZGRkZGRkYpOwotICAg
IGRldmljZUNvbnRleHQtPlJTU2V0U3RhdGUobVNjaXNzb3JEaXNhYmxlZFJhc3Rlcml6ZXJTdGF0
ZSk7CisgICAgZGV2aWNlQ29udGV4dC0+UlNTZXRTdGF0ZShtU2Npc3NvckRpc2FibGVkUmFzdGVy
aXplclN0YXRlLkdldCgpKTsKIAogICAgIC8vIEFwcGx5IHNoYWRlcnMKICAgICBkZXZpY2VDb250
ZXh0LT5JQVNldElucHV0TGF5b3V0KHN1cHBvcnQuaW5wdXRMYXlvdXQpOwpAQCAtMTE0Miw3ICsx
MTEyLDcgQEAgZ2w6OkVycm9yIEJsaXQxMTo6c3dpenpsZVRleHR1cmUoSUQzRDExU2hhZGVyUmVz
b3VyY2VWaWV3ICpzb3VyY2UsCiAgICAgc3RhdGVNYW5hZ2VyLT5zZXRTaGFkZXJSZXNvdXJjZShn
bDo6U0FNUExFUl9QSVhFTCwgMCwgc291cmNlKTsKIAogICAgIC8vIEFwcGx5IHNhbXBsZXJzCi0g
ICAgZGV2aWNlQ29udGV4dC0+UFNTZXRTYW1wbGVycygwLCAxLCAmbVBvaW50U2FtcGxlcik7Cisg
ICAgZGV2aWNlQ29udGV4dC0+UFNTZXRTYW1wbGVycygwLCAxLCBtUG9pbnRTYW1wbGVyLkdldEFk
ZHJlc3NPZigpKTsKIAogICAgIC8vIERyYXcgdGhlIHF1YWQKICAgICBkZXZpY2VDb250ZXh0LT5E
cmF3KGRyYXdDb3VudCwgMCk7CkBAIC0xMTU2LDcgKzExMjYsNyBAQCBnbDo6RXJyb3IgQmxpdDEx
Ojpzd2l6emxlVGV4dHVyZShJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSwKIAogICAg
IG1SZW5kZXJlci0+bWFya0FsbFN0YXRlRGlydHkoKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3Ig
QmxpdDExOjpjb3B5VGV4dHVyZShJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSwKQEAg
LTExOTksMTIgKzExNjksMTIgQEAgZ2w6OkVycm9yIEJsaXQxMTo6Y29weVRleHR1cmUoSUQzRDEx
U2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2UsCiAKICAgICAvLyBTZXQgdmVydGljZXMKICAgICBE
M0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkUmVzb3VyY2U7Ci0gICAgcmVzdWx0ID0gZGV2
aWNlQ29udGV4dC0+TWFwKG1WZXJ0ZXhCdWZmZXIsIDAsIEQzRDExX01BUF9XUklURV9ESVNDQVJE
LCAwLCAmbWFwcGVkUmVzb3VyY2UpOworICAgIHJlc3VsdCA9CisgICAgICAgIGRldmljZUNvbnRl
eHQtPk1hcChtVmVydGV4QnVmZmVyLkdldCgpLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FSRCwg
MCwgJm1hcHBlZFJlc291cmNlKTsKICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgewotICAg
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIkZhaWxlZCB0byBtYXAgaW50ZXJuYWwgdmVydGV4IGJ1ZmZlciBmb3IgdGV4dHVy
ZSBjb3B5LCBIUkVTVUxUOiAweCVYLiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
KTsKKyAgICAgICAgcmV0dXJuIGdsOjpPdXRPZk1lbW9yeSgpIDw8ICJGYWlsZWQgdG8gbWFwIGlu
dGVybmFsIHZlcnRleCBidWZmZXIgZm9yIHRleHR1cmUgY29weSwgIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPDwgcmVzdWx0OwogICAgIH0KIAogICAgIFVJTlQgc3RyaWRlICAg
ID0gMDsKQEAgLTEyMTUsMTAgKzExODUsMTAgQEAgZ2w6OkVycm9yIEJsaXQxMTo6Y29weVRleHR1
cmUoSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2UsCiAgICAgc3VwcG9ydC52ZXJ0ZXhX
cml0ZUZ1bmN0aW9uKHNvdXJjZUFyZWEsIHNvdXJjZVNpemUsIGRlc3RBcmVhLCBkZXN0U2l6ZSwg
bWFwcGVkUmVzb3VyY2UucERhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZz
dHJpZGUsICZkcmF3Q291bnQsICZ0b3BvbG9neSk7CiAKLSAgICBkZXZpY2VDb250ZXh0LT5Vbm1h
cChtVmVydGV4QnVmZmVyLCAwKTsKKyAgICBkZXZpY2VDb250ZXh0LT5Vbm1hcChtVmVydGV4QnVm
ZmVyLkdldCgpLCAwKTsKIAogICAgIC8vIEFwcGx5IHZlcnRleCBidWZmZXIKLSAgICBkZXZpY2VD
b250ZXh0LT5JQVNldFZlcnRleEJ1ZmZlcnMoMCwgMSwgJm1WZXJ0ZXhCdWZmZXIsICZzdHJpZGUs
ICZzdGFydElkeCk7CisgICAgZGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKDAsIDEs
IG1WZXJ0ZXhCdWZmZXIuR2V0QWRkcmVzc09mKCksICZzdHJpZGUsICZzdGFydElkeCk7CiAKICAg
ICAvLyBBcHBseSBzdGF0ZQogICAgIGlmIChtYXNrT2ZmQWxwaGEpCkBAIC0xMjQyLDExICsxMjEy
LDExIEBAIGdsOjpFcnJvciBCbGl0MTE6OmNvcHlUZXh0dXJlKElEM0QxMVNoYWRlclJlc291cmNl
VmlldyAqc291cmNlLAogICAgICAgICBzY2lzc29yUmVjdC5ib3R0b20gPSBzY2lzc29yLT55ICsg
c2Npc3Nvci0+aGVpZ2h0OwogCiAgICAgICAgIGRldmljZUNvbnRleHQtPlJTU2V0U2Npc3NvclJl
Y3RzKDEsICZzY2lzc29yUmVjdCk7Ci0gICAgICAgIGRldmljZUNvbnRleHQtPlJTU2V0U3RhdGUo
bVNjaXNzb3JFbmFibGVkUmFzdGVyaXplclN0YXRlKTsKKyAgICAgICAgZGV2aWNlQ29udGV4dC0+
UlNTZXRTdGF0ZShtU2Npc3NvckVuYWJsZWRSYXN0ZXJpemVyU3RhdGUuR2V0KCkpOwogICAgIH0K
ICAgICBlbHNlCiAgICAgewotICAgICAgICBkZXZpY2VDb250ZXh0LT5SU1NldFN0YXRlKG1TY2lz
c29yRGlzYWJsZWRSYXN0ZXJpemVyU3RhdGUpOworICAgICAgICBkZXZpY2VDb250ZXh0LT5SU1Nl
dFN0YXRlKG1TY2lzc29yRGlzYWJsZWRSYXN0ZXJpemVyU3RhdGUuR2V0KCkpOwogICAgIH0KIAog
ICAgIC8vIEFwcGx5IHNoYWRlcnMKQEAgLTEyODIsMTUgKzEyNTIsMTUgQEAgZ2w6OkVycm9yIEJs
aXQxMTo6Y29weVRleHR1cmUoSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpzb3VyY2UsCiAgICAg
c3dpdGNoIChmaWx0ZXIpCiAgICAgewogICAgICAgICBjYXNlIEdMX05FQVJFU1Q6Ci0gICAgICAg
ICAgICBzYW1wbGVyID0gbVBvaW50U2FtcGxlcjsKKyAgICAgICAgICAgIHNhbXBsZXIgPSBtUG9p
bnRTYW1wbGVyLkdldCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfTElO
RUFSOgotICAgICAgICAgICAgc2FtcGxlciA9IG1MaW5lYXJTYW1wbGVyOworICAgICAgICAgICAg
c2FtcGxlciA9IG1MaW5lYXJTYW1wbGVyLkdldCgpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJJbnRlcm5hbCBlcnJvciwgdW5rbm93
biBibGl0IGZpbHRlciBtb2RlLiIpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpJbnRlcm5hbEVy
cm9yKCkgPDwgIkludGVybmFsIGVycm9yLCB1bmtub3duIGJsaXQgZmlsdGVyIG1vZGUuIjsKICAg
ICB9CiAgICAgZGV2aWNlQ29udGV4dC0+UFNTZXRTYW1wbGVycygwLCAxLCAmc2FtcGxlcik7CiAK
QEAgLTEzMzgsMTIgKzEzMDgsMTIgQEAgZ2w6OkVycm9yIEJsaXQxMTo6Y29weURlcHRoKElEM0Qx
MVNoYWRlclJlc291cmNlVmlldyAqc291cmNlLAogCiAgICAgLy8gU2V0IHZlcnRpY2VzCiAgICAg
RDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZFJlc291cmNlOwotICAgIHJlc3VsdCA9IGRl
dmljZUNvbnRleHQtPk1hcChtVmVydGV4QnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FS
RCwgMCwgJm1hcHBlZFJlc291cmNlKTsKKyAgICByZXN1bHQgPQorICAgICAgICBkZXZpY2VDb250
ZXh0LT5NYXAobVZlcnRleEJ1ZmZlci5HZXQoKSwgMCwgRDNEMTFfTUFQX1dSSVRFX0RJU0NBUkQs
IDAsICZtYXBwZWRSZXNvdXJjZSk7CiAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICJGYWlsZWQgdG8gbWFwIGludGVybmFsIHZlcnRleCBidWZmZXIgZm9yIHRleHR1
cmUgY29weSwgSFJFU1VMVDogMHglWC4iLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBnbDo6T3V0T2ZNZW1vcnkoKSA8PCAiRmFpbGVkIHRvIG1hcCBp
bnRlcm5hbCB2ZXJ0ZXggYnVmZmVyIGZvciB0ZXh0dXJlIGNvcHksICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDw8IHJlc3VsdDsKICAgICB9CiAKICAgICBVSU5UIHN0cmlkZSAg
ICA9IDA7CkBAIC0xMzU0LDE0ICsxMzI0LDE0IEBAIGdsOjpFcnJvciBCbGl0MTE6OmNvcHlEZXB0
aChJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSwKICAgICBXcml0ZTJEVmVydGljZXMo
c291cmNlQXJlYSwgc291cmNlU2l6ZSwgZGVzdEFyZWEsIGRlc3RTaXplLCBtYXBwZWRSZXNvdXJj
ZS5wRGF0YSwgJnN0cmlkZSwKICAgICAgICAgICAgICAgICAgICAgJmRyYXdDb3VudCwgJnRvcG9s
b2d5KTsKIAotICAgIGRldmljZUNvbnRleHQtPlVubWFwKG1WZXJ0ZXhCdWZmZXIsIDApOworICAg
IGRldmljZUNvbnRleHQtPlVubWFwKG1WZXJ0ZXhCdWZmZXIuR2V0KCksIDApOwogCiAgICAgLy8g
QXBwbHkgdmVydGV4IGJ1ZmZlcgotICAgIGRldmljZUNvbnRleHQtPklBU2V0VmVydGV4QnVmZmVy
cygwLCAxLCAmbVZlcnRleEJ1ZmZlciwgJnN0cmlkZSwgJnN0YXJ0SWR4KTsKKyAgICBkZXZpY2VD
b250ZXh0LT5JQVNldFZlcnRleEJ1ZmZlcnMoMCwgMSwgbVZlcnRleEJ1ZmZlci5HZXRBZGRyZXNz
T2YoKSwgJnN0cmlkZSwgJnN0YXJ0SWR4KTsKIAogICAgIC8vIEFwcGx5IHN0YXRlCiAgICAgZGV2
aWNlQ29udGV4dC0+T01TZXRCbGVuZFN0YXRlKG51bGxwdHIsIG51bGxwdHIsIDB4RkZGRkZGRik7
Ci0gICAgZGV2aWNlQ29udGV4dC0+T01TZXREZXB0aFN0ZW5jaWxTdGF0ZShtRGVwdGhTdGVuY2ls
U3RhdGUsIDB4RkZGRkZGRkYpOworICAgIGRldmljZUNvbnRleHQtPk9NU2V0RGVwdGhTdGVuY2ls
U3RhdGUobURlcHRoU3RlbmNpbFN0YXRlLkdldCgpLCAweEZGRkZGRkZGKTsKIAogICAgIGlmIChz
Y2lzc29yKQogICAgIHsKQEAgLTEzNzIsMTggKzEzNDIsMTggQEAgZ2w6OkVycm9yIEJsaXQxMTo6
Y29weURlcHRoKElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc291cmNlLAogICAgICAgICBzY2lz
c29yUmVjdC5ib3R0b20gPSBzY2lzc29yLT55ICsgc2Npc3Nvci0+aGVpZ2h0OwogCiAgICAgICAg
IGRldmljZUNvbnRleHQtPlJTU2V0U2Npc3NvclJlY3RzKDEsICZzY2lzc29yUmVjdCk7Ci0gICAg
ICAgIGRldmljZUNvbnRleHQtPlJTU2V0U3RhdGUobVNjaXNzb3JFbmFibGVkUmFzdGVyaXplclN0
YXRlKTsKKyAgICAgICAgZGV2aWNlQ29udGV4dC0+UlNTZXRTdGF0ZShtU2Npc3NvckVuYWJsZWRS
YXN0ZXJpemVyU3RhdGUuR2V0KCkpOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBk
ZXZpY2VDb250ZXh0LT5SU1NldFN0YXRlKG1TY2lzc29yRGlzYWJsZWRSYXN0ZXJpemVyU3RhdGUp
OworICAgICAgICBkZXZpY2VDb250ZXh0LT5SU1NldFN0YXRlKG1TY2lzc29yRGlzYWJsZWRSYXN0
ZXJpemVyU3RhdGUuR2V0KCkpOwogICAgIH0KIAogICAgIElEM0QxMURldmljZSAqZGV2aWNlICAg
ICAgICAgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogICAgIElEM0QxMVZlcnRleFNoYWRlciAq
cXVhZDJEVlMgPSBtUXVhZDJEVlMucmVzb2x2ZShkZXZpY2UpOwogICAgIGlmIChxdWFkMkRWUyA9
PSBudWxscHRyKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkVycm9yIGNvbXBpbGluZyBpbnRlcm5hbCAyRCBibGl0IHZlcnRleCBzaGFkZXIi
KTsKKyAgICAgICAgcmV0dXJuIGdsOjpJbnRlcm5hbEVycm9yKCkgPDwgIkVycm9yIGNvbXBpbGlu
ZyBpbnRlcm5hbCAyRCBibGl0IHZlcnRleCBzaGFkZXIiOwogICAgIH0KIAogICAgIC8vIEFwcGx5
IHNoYWRlcnMKQEAgLTE0MTUsNyArMTM4NSw3IEBAIGdsOjpFcnJvciBCbGl0MTE6OmNvcHlEZXB0
aChJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNvdXJjZSwKICAgICBzdGF0ZU1hbmFnZXItPnNl
dFNoYWRlclJlc291cmNlKGdsOjpTQU1QTEVSX1BJWEVMLCAwLCBzb3VyY2UpOwogCiAgICAgLy8g
QXBwbHkgc2FtcGxlcnMKLSAgICBkZXZpY2VDb250ZXh0LT5QU1NldFNhbXBsZXJzKDAsIDEsICZt
UG9pbnRTYW1wbGVyKTsKKyAgICBkZXZpY2VDb250ZXh0LT5QU1NldFNhbXBsZXJzKDAsIDEsIG1Q
b2ludFNhbXBsZXIuR2V0QWRkcmVzc09mKCkpOwogCiAgICAgLy8gRHJhdyB0aGUgcXVhZAogICAg
IGRldmljZUNvbnRleHQtPkRyYXcoZHJhd0NvdW50LCAwKTsKQEAgLTE0MjksNyArMTM5OSw3IEBA
IGdsOjpFcnJvciBCbGl0MTE6OmNvcHlEZXB0aChJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNv
dXJjZSwKIAogICAgIG1SZW5kZXJlci0+bWFya0FsbFN0YXRlRGlydHkoKTsKIAotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQog
CiBnbDo6RXJyb3IgQmxpdDExOjpjb3B5RGVwdGhTdGVuY2lsKGNvbnN0IFRleHR1cmVIZWxwZXIx
MSAmc291cmNlLApAQCAtMTQ3MCw3ICsxNDQwLDcgQEAgZ2w6OkVycm9yIEJsaXQxMTo6Y29weURl
cHRoU3RlbmNpbEltcGwoY29uc3QgVGV4dHVyZUhlbHBlcjExICZzb3VyY2UsCiAKICAgICBpZiAo
c3RlbmNpbE9ubHkpCiAgICAgewotICAgICAgICBjb25zdCBhdXRvICZzcmNGb3JtYXQgPSBzb3Vy
Y2UuZ2V0Rm9ybWF0U2V0KCkuZm9ybWF0OworICAgICAgICBjb25zdCBhdXRvICZzcmNGb3JtYXQg
PSBzb3VyY2UuZ2V0Rm9ybWF0U2V0KCkuZm9ybWF0KCk7CiAKICAgICAgICAgLy8gU3RlbmNpbCBj
aGFubmVsIHNob3VsZCBiZSByaWdodCBhZnRlciB0aGUgZGVwdGggY2hhbm5lbC4gU29tZSB2aWV3
cyB0byBkZXB0aC9zdGVuY2lsCiAgICAgICAgIC8vIHJlc291cmNlcyBoYXZlIHJlZCBjaGFubmVs
IGZvciBkZXB0aCwgaW4gd2hpY2ggY2FzZSB0aGUgZGVwdGggY2hhbm5lbCBiaXQgd2lkdGggaXMg
aW4KQEAgLTE1MzksMTAgKzE1MDksOSBAQCBnbDo6RXJyb3IgQmxpdDExOjpjb3B5QW5kQ29udmVy
dEltcGwoY29uc3QgVGV4dHVyZUhlbHBlcjExICZzb3VyY2UsCiAgICAgICAgIGRldmljZUNvbnRl
eHQtPk1hcChzb3VyY2VTdGFnaW5nLmdldFJlc291cmNlKCksIDAsIEQzRDExX01BUF9SRUFELCAw
LCAmc291cmNlTWFwcGluZyk7CiAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIGdsOjpFcnJvcigKLSAgICAgICAgICAgIEdMX09VVF9PRl9NRU1PUlksCi0gICAg
ICAgICAgICAiRmFpbGVkIHRvIG1hcCBpbnRlcm5hbCBzb3VyY2Ugc3RhZ2luZyB0ZXh0dXJlIGZv
ciBkZXB0aCBzdGVuY2lsIGJsaXQsIEhSRVNVTFQ6IDB4JVguIiwKLSAgICAgICAgICAgIHJlc3Vs
dCk7CisgICAgICAgIHJldHVybiBnbDo6T3V0T2ZNZW1vcnkoKQorICAgICAgICAgICAgICAgPDwg
IkZhaWxlZCB0byBtYXAgaW50ZXJuYWwgc291cmNlIHN0YWdpbmcgdGV4dHVyZSBmb3IgZGVwdGgg
c3RlbmNpbCBibGl0LCAiCisgICAgICAgICAgICAgICA8PCByZXN1bHQ7CiAgICAgfQogCiAgICAg
RDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFIGRlc3RNYXBwaW5nOwpAQCAtMTU1MCwxMCArMTUxOSw5
IEBAIGdsOjpFcnJvciBCbGl0MTE6OmNvcHlBbmRDb252ZXJ0SW1wbChjb25zdCBUZXh0dXJlSGVs
cGVyMTEgJnNvdXJjZSwKICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgewogICAgICAgICBk
ZXZpY2VDb250ZXh0LT5Vbm1hcChzb3VyY2VTdGFnaW5nLmdldFJlc291cmNlKCksIDApOwotICAg
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIkZhaWxlZCB0byBtYXAgaW50ZXJuYWwgZGVzdGluYXRpb24gc3RhZ2luZyB0ZXh0
dXJlIGZvciBkZXB0aCBzdGVuY2lsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYmxpdCwg
SFJFU1VMVDogMHglWC4iLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7CisgICAg
ICAgIHJldHVybiBnbDo6T3V0T2ZNZW1vcnkoKQorICAgICAgICAgICAgICAgPDwgIkZhaWxlZCB0
byBtYXAgaW50ZXJuYWwgZGVzdGluYXRpb24gc3RhZ2luZyB0ZXh0dXJlIGZvciBkZXB0aCBzdGVu
Y2lsIGJsaXQsICIKKyAgICAgICAgICAgICAgIDw8IHJlc3VsdDsKICAgICB9CiAKICAgICAvLyBD
bGlwIGRlc3QgYXJlYSB0byB0aGUgZGVzdGluYXRpb24gc2l6ZQpAQCAtMTY4NSwxNCArMTY1Mywx
NCBAQCBnbDo6RXJyb3IgQmxpdDExOjpnZXRCbGl0U2hhZGVyKEdMZW51bSBkZXN0Rm9ybWF0LAog
CiAgICAgaWYgKGJsaXRTaGFkZXJUeXBlID09IEJMSVRTSEFERVJfSU5WQUxJRCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJJbnRlcm5hbCBi
bGl0IHNoYWRlciB0eXBlIG1pc21hdGNoIik7CisgICAgICAgIHJldHVybiBnbDo6SW50ZXJuYWxF
cnJvcigpIDw8ICJJbnRlcm5hbCBibGl0IHNoYWRlciB0eXBlIG1pc21hdGNoIjsKICAgICB9CiAK
ICAgICBhdXRvIGJsaXRTaGFkZXJJdCA9IG1CbGl0U2hhZGVyTWFwLmZpbmQoYmxpdFNoYWRlclR5
cGUpOwogICAgIGlmIChibGl0U2hhZGVySXQgIT0gbUJsaXRTaGFkZXJNYXAuZW5kKCkpCiAgICAg
ewogICAgICAgICAqc2hhZGVyID0gJmJsaXRTaGFkZXJJdC0+c2Vjb25kOwotICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CiAgICAgfQogCiAgICAgQVNTRVJUKGRpbWVuc2lvbiA9PSBTSEFERVJfMkQgfHwgbVJlbmRlcmVy
LT5pc0VTM0NhcGFibGUoKSk7CkBAIC0xODkzLDEzICsxODYxLDEzIEBAIGdsOjpFcnJvciBCbGl0
MTE6OmdldEJsaXRTaGFkZXIoR0xlbnVtIGRlc3RGb3JtYXQsCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiSW50ZXJuYWwgZXJyb3Ii
KTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6SW50ZXJuYWxFcnJvcigpIDw8ICJJbnRlcm5hbCBl
cnJvciI7CiAgICAgfQogCiAgICAgYmxpdFNoYWRlckl0ID0gbUJsaXRTaGFkZXJNYXAuZmluZChi
bGl0U2hhZGVyVHlwZSk7CiAgICAgQVNTRVJUKGJsaXRTaGFkZXJJdCAhPSBtQmxpdFNoYWRlck1h
cC5lbmQoKSk7CiAgICAgKnNoYWRlciA9ICZibGl0U2hhZGVySXQtPnNlY29uZDsKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAogZ2w6OkVycm9yIEJsaXQxMTo6Z2V0U3dpenpsZVNoYWRlcihHTGVudW0gdHlwZSwKQEAgLTE5
MTAsMTQgKzE4NzgsMTQgQEAgZ2w6OkVycm9yIEJsaXQxMTo6Z2V0U3dpenpsZVNoYWRlcihHTGVu
dW0gdHlwZSwKIAogICAgIGlmIChzd2l6emxlU2hhZGVyVHlwZSA9PSBTV0laWkxFU0hBREVSX0lO
VkFMSUQpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiU3dpenpsZSBzaGFkZXIgdHlwZSBub3QgZm91bmQiKTsKKyAgICAgICAgcmV0dXJuIGds
OjpJbnRlcm5hbEVycm9yKCkgPDwgIlN3aXp6bGUgc2hhZGVyIHR5cGUgbm90IGZvdW5kIjsKICAg
ICB9CiAKICAgICBhdXRvIHN3aXp6bGVTaGFkZXJJdCA9IG1Td2l6emxlU2hhZGVyTWFwLmZpbmQo
c3dpenpsZVNoYWRlclR5cGUpOwogICAgIGlmIChzd2l6emxlU2hhZGVySXQgIT0gbVN3aXp6bGVT
aGFkZXJNYXAuZW5kKCkpCiAgICAgewogICAgICAgICAqc2hhZGVyID0gJnN3aXp6bGVTaGFkZXJJ
dC0+c2Vjb25kOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAgLy8gU3dpenpsaW5nIHNoYWRl
cnMgKE9wZW5HTCBFUyAzKykKQEAgLTE5ODksNyArMTk1Nyw3IEBAIGdsOjpFcnJvciBCbGl0MTE6
OmdldFN3aXp6bGVTaGFkZXIoR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiSW50ZXJuYWwgZXJyb3IiKTsKKyAg
ICAgICAgICAgIHJldHVybiBnbDo6SW50ZXJuYWxFcnJvcigpIDw8ICJJbnRlcm5hbCBlcnJvciI7
CiAgICAgfQogCiAgICAgc3dpenpsZVNoYWRlckl0ID0gbVN3aXp6bGVTaGFkZXJNYXAuZmluZChz
d2l6emxlU2hhZGVyVHlwZSk7CkBAIC0yMDAwLDExICsxOTY4LDE0IEBAIGdsOjpFcnJvciBCbGl0
MTE6OmdldFN3aXp6bGVTaGFkZXIoR0xlbnVtIHR5cGUsCiAKIGdsOjpFcnJvck9yUmVzdWx0PFRl
eHR1cmVIZWxwZXIxMT4gQmxpdDExOjpyZXNvbHZlRGVwdGgoUmVuZGVyVGFyZ2V0MTEgKmRlcHRo
KQogeworICAgIC8vIE11bHRpc2FtcGxlZCBkZXB0aCBzdGVuY2lsIFNSVnMgYXJlIG5vdCBhdmFp
bGFibGUgaW4gZmVhdHVyZSBsZXZlbCAxMC4wCisgICAgQVNTRVJUKG1SZW5kZXJlci0+Z2V0UmVu
ZGVyZXIxMURldmljZUNhcHMoKS5mZWF0dXJlTGV2ZWwgPiBEM0RfRkVBVFVSRV9MRVZFTF8xMF8w
KTsKKwogICAgIGNvbnN0IGF1dG8gJmV4dGVudHMgICAgICAgICAgPSBkZXB0aC0+Z2V0RXh0ZW50
cygpOwogICAgIElEM0QxMURldmljZSAqZGV2aWNlICAgICAgICAgPSBtUmVuZGVyZXItPmdldERl
dmljZSgpOwogICAgIElEM0QxMURldmljZUNvbnRleHQgKmNvbnRleHQgPSBtUmVuZGVyZXItPmdl
dERldmljZUNvbnRleHQoKTsKIAotICAgIEFOR0xFX1RSWShpbml0UmVzb2x2ZURlcHRoU3RlbmNp
bChleHRlbnRzKSk7CisgICAgQU5HTEVfVFJZKGluaXRSZXNvbHZlRGVwdGhPbmx5KGRlcHRoLT5n
ZXRGb3JtYXRTZXQoKSwgZXh0ZW50cykpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBSZW5kZXJlciB0
aGF0IGFsbCBzdGF0ZSBzaG91bGQgYmUgaW52YWxpZGF0ZWQuCiAgICAgbVJlbmRlcmVyLT5tYXJr
QWxsU3RhdGVEaXJ0eSgpOwpAQCAtMjAxNSw4ICsxOTg2LDggQEAgZ2w6OkVycm9yT3JSZXN1bHQ8
VGV4dHVyZUhlbHBlcjExPiBCbGl0MTE6OnJlc29sdmVEZXB0aChSZW5kZXJUYXJnZXQxMSAqZGVw
dGgpCiAgICAgY29udGV4dC0+VlNTZXRTaGFkZXIobVJlc29sdmVEZXB0aFN0ZW5jaWxWUy5yZXNv
bHZlKGRldmljZSksIG51bGxwdHIsIDApOwogICAgIGNvbnRleHQtPkdTU2V0U2hhZGVyKG51bGxw
dHIsIG51bGxwdHIsIDApOwogICAgIGNvbnRleHQtPlJTU2V0U3RhdGUobnVsbHB0cik7Ci0gICAg
Y29udGV4dC0+T01TZXREZXB0aFN0ZW5jaWxTdGF0ZShudWxscHRyLCAweEZGRkZGRkZGKTsKLSAg
ICBjb250ZXh0LT5PTVNldFJlbmRlclRhcmdldHMoMSwgJm1SZXNvbHZlZERlcHRoU3RlbmNpbFJU
VmlldywgbnVsbHB0cik7CisgICAgY29udGV4dC0+T01TZXREZXB0aFN0ZW5jaWxTdGF0ZShtRGVw
dGhTdGVuY2lsU3RhdGUuR2V0KCksIDB4RkZGRkZGRkYpOworICAgIGNvbnRleHQtPk9NU2V0UmVu
ZGVyVGFyZ2V0cygwLCBudWxscHRyLCBtUmVzb2x2ZWREZXB0aERTVmlldy5HZXQoKSk7CiAgICAg
Y29udGV4dC0+T01TZXRCbGVuZFN0YXRlKG51bGxwdHIsIG51bGxwdHIsIDB4RkZGRkZGRik7CiAK
ICAgICAvLyBTZXQgdGhlIHZpZXdwb3J0CkBAIC0yMDM4LDM4ICsyMDA5LDYzIEBAIGdsOjpFcnJv
ck9yUmVzdWx0PFRleHR1cmVIZWxwZXIxMT4gQmxpdDExOjpyZXNvbHZlRGVwdGgoUmVuZGVyVGFy
Z2V0MTEgKmRlcHRoKQogICAgIC8vIFRyaWdnZXIgdGhlIGJsaXQgb24gdGhlIEdQVS4KICAgICBj
b250ZXh0LT5EcmF3KDYsIDApOwogCi0gICAgZ2w6OkJveCBjb3B5Qm94KDAsIDAsIDAsIGV4dGVu
dHMud2lkdGgsIGV4dGVudHMuaGVpZ2h0LCAxKTsKKyAgICByZXR1cm4gVGV4dHVyZUhlbHBlcjEx
OjpNYWtlQW5kUmVmZXJlbmNlKG1SZXNvbHZlZERlcHRoLmdldFJlc291cmNlKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVzb2x2ZWREZXB0aC5nZXRG
b3JtYXRTZXQoKSk7Cit9CiAKLSAgICBjb25zdCBhdXRvICZjb3B5RnVuY3Rpb24gPSBHZXRDb3B5
RGVwdGhTdGVuY2lsRnVuY3Rpb24oZGVwdGgtPmdldEludGVybmFsRm9ybWF0KCkpOwotICAgIGNv
bnN0IGF1dG8gJmRzRm9ybWF0U2V0ICA9IGRlcHRoLT5nZXRGb3JtYXRTZXQoKTsKLSAgICBjb25z
dCBhdXRvICZkc0R4Z2lJbmZvICAgPSBkM2QxMTo6R2V0RFhHSUZvcm1hdFNpemVJbmZvKGRzRm9y
bWF0U2V0LnRleEZvcm1hdCk7CitnbDo6RXJyb3IgQmxpdDExOjppbml0UmVzb2x2ZURlcHRoT25s
eShjb25zdCBkM2QxMTo6Rm9ybWF0ICZmb3JtYXQsIGNvbnN0IGdsOjpFeHRlbnRzICZleHRlbnRz
KQoreworICAgIGlmIChtUmVzb2x2ZWREZXB0aC52YWxpZCgpICYmIGV4dGVudHMgPT0gbVJlc29s
dmVkRGVwdGguZ2V0RXh0ZW50cygpICYmCisgICAgICAgIGZvcm1hdC50ZXhGb3JtYXQgPT0gbVJl
c29sdmVkRGVwdGguZ2V0Rm9ybWF0KCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKKyAgICB9CisKKyAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0
RGV2aWNlKCk7CiAKLSAgICBJRDNEMTFUZXh0dXJlMkQgKmRlc3RUZXggPSBudWxscHRyOwotCi0g
ICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVzdERlc2M7Ci0gICAgZGVzdERlc2MuV2lkdGggICAg
ICAgICAgICAgID0gZXh0ZW50cy53aWR0aDsKLSAgICBkZXN0RGVzYy5IZWlnaHQgICAgICAgICAg
ICAgPSBleHRlbnRzLmhlaWdodDsKLSAgICBkZXN0RGVzYy5NaXBMZXZlbHMgICAgICAgICAgPSAx
OwotICAgIGRlc3REZXNjLkFycmF5U2l6ZSAgICAgICAgICA9IDE7Ci0gICAgZGVzdERlc2MuRm9y
bWF0ICAgICAgICAgICAgID0gZHNGb3JtYXRTZXQudGV4Rm9ybWF0OwotICAgIGRlc3REZXNjLlNh
bXBsZURlc2MuQ291bnQgICA9IDE7Ci0gICAgZGVzdERlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ID0g
MDsKLSAgICBkZXN0RGVzYy5Vc2FnZSAgICAgICAgICAgICAgPSBEM0QxMV9VU0FHRV9ERUZBVUxU
OwotICAgIGRlc3REZXNjLkJpbmRGbGFncyAgICAgICAgICA9IEQzRDExX0JJTkRfU0hBREVSX1JF
U09VUkNFOwotICAgIGRlc3REZXNjLkNQVUFjY2Vzc0ZsYWdzICAgICA9IDA7Ci0gICAgZGVzdERl
c2MuTWlzY0ZsYWdzICAgICAgICAgID0gMDsKLQotICAgIEhSRVNVTFQgaHIgPSBkZXZpY2UtPkNy
ZWF0ZVRleHR1cmUyRCgmZGVzdERlc2MsIG51bGxwdHIsICZkZXN0VGV4KTsKKyAgICBEM0QxMV9U
RVhUVVJFMkRfREVTQyB0ZXh0dXJlRGVzYzsKKyAgICB0ZXh0dXJlRGVzYy5XaWR0aCAgICAgICAg
ICAgICAgPSBleHRlbnRzLndpZHRoOworICAgIHRleHR1cmVEZXNjLkhlaWdodCAgICAgICAgICAg
ICA9IGV4dGVudHMuaGVpZ2h0OworICAgIHRleHR1cmVEZXNjLk1pcExldmVscyAgICAgICAgICA9
IDE7CisgICAgdGV4dHVyZURlc2MuQXJyYXlTaXplICAgICAgICAgID0gMTsKKyAgICB0ZXh0dXJl
RGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBmb3JtYXQudGV4Rm9ybWF0OworICAgIHRleHR1cmVE
ZXNjLlNhbXBsZURlc2MuQ291bnQgICA9IDE7CisgICAgdGV4dHVyZURlc2MuU2FtcGxlRGVzYy5R
dWFsaXR5ID0gMDsKKyAgICB0ZXh0dXJlRGVzYy5Vc2FnZSAgICAgICAgICAgICAgPSBEM0QxMV9V
U0FHRV9ERUZBVUxUOworICAgIHRleHR1cmVEZXNjLkJpbmRGbGFncyAgICAgICAgICA9IEQzRDEx
X0JJTkRfREVQVEhfU1RFTkNJTCB8IEQzRDExX0JJTkRfU0hBREVSX1JFU09VUkNFOworICAgIHRl
eHR1cmVEZXNjLkNQVUFjY2Vzc0ZsYWdzICAgICA9IDA7CisgICAgdGV4dHVyZURlc2MuTWlzY0Zs
YWdzICAgICAgICAgID0gMDsKKworICAgIElEM0QxMVRleHR1cmUyRCAqcmVzb2x2ZWREZXB0aCA9
IG51bGxwdHI7CisgICAgSFJFU1VMVCBociAgICAgICAgICAgICAgICAgICAgID0gZGV2aWNlLT5D
cmVhdGVUZXh0dXJlMkQoJnRleHR1cmVEZXNjLCBudWxscHRyLCAmcmVzb2x2ZWREZXB0aCk7CiAg
ICAgaWYgKEZBSUxFRChocikpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09V
VF9PRl9NRU1PUlksICJFcnJvciBjcmVhdGluZyBkZXB0aCByZXNvbHZlIGRlc3QgdGV4dHVyZS4i
KTsKKyAgICAgICAgcmV0dXJuIGdsOjpPdXRPZk1lbW9yeSgpIDw8ICJGYWlsZWQgdG8gYWxsb2Nh
dGUgcmVzb2x2ZWQgZGVwdGggdGV4dHVyZSwgIiA8PCBocjsKICAgICB9Ci0gICAgZDNkMTE6OlNl
dERlYnVnTmFtZShkZXN0VGV4LCAicmVzb2x2ZURlcHRoRGVzdCIpOworICAgIGQzZDExOjpTZXRE
ZWJ1Z05hbWUocmVzb2x2ZWREZXB0aCwgIkJsaXQxMTo6bVJlc29sdmVkRGVwdGgiKTsKIAotICAg
IFRleHR1cmVIZWxwZXIxMSBkZXN0ID0gVGV4dHVyZUhlbHBlcjExOjpNYWtlQW5kUG9zc2VzczJE
KGRlc3RUZXgsIGRlcHRoLT5nZXRGb3JtYXRTZXQoKSk7Ci0gICAgQU5HTEVfVFJZKGNvcHlBbmRD
b252ZXJ0KG1SZXNvbHZlZERlcHRoU3RlbmNpbCwgMCwgY29weUJveCwgZXh0ZW50cywgZGVzdCwg
MCwgY29weUJveCwgZXh0ZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwgMCwgMCwgMCwgOCwgZHNEeGdpSW5mby5waXhlbEJ5dGVzLCBjb3B5RnVuY3Rpb24pKTsKLSAg
ICByZXR1cm4gZGVzdDsKKyAgICBtUmVzb2x2ZWREZXB0aCA9IFRleHR1cmVIZWxwZXIxMTo6TWFr
ZUFuZFBvc3Nlc3MyRChyZXNvbHZlZERlcHRoLCBmb3JtYXQpOworCisgICAgRDNEMTFfREVQVEhf
U1RFTkNJTF9WSUVXX0RFU0MgZHN2RGVzYzsKKyAgICBkc3ZEZXNjLkZsYWdzICAgICAgICAgICAg
ICA9IDA7CisgICAgZHN2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBmb3JtYXQuZHN2Rm9ybWF0
OworICAgIGRzdkRlc2MuVGV4dHVyZTJELk1pcFNsaWNlID0gMDsKKyAgICBkc3ZEZXNjLlZpZXdE
aW1lbnNpb24gICAgICA9IEQzRDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTJEOworCisgICAgaHIg
PSBkZXZpY2UtPkNyZWF0ZURlcHRoU3RlbmNpbFZpZXcobVJlc29sdmVkRGVwdGguZ2V0UmVzb3Vy
Y2UoKSwgJmRzdkRlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bVJlc29sdmVkRGVwdGhEU1ZpZXcuUmVsZWFzZUFuZEdldEFkZHJlc3NPZigpKTsKKyAgICBpZiAo
RkFJTEVEKGhyKSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6T3V0T2ZNZW1vcnkoKSA8PCAi
RmFpbGVkIHRvIGFsbG9jYXRlIEJsaXQxMTo6bVJlc29sdmVkRGVwdGhEU1ZpZXcsICIgPDwgaHI7
CisgICAgfQorICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobVJlc29sdmVkRGVwdGhEU1ZpZXcsICJC
bGl0MTE6Om1SZXNvbHZlZERlcHRoRFNWaWV3Iik7CisKKyAgICAvLyBQb3NzaWJseSBEM0QxMSBi
dWcgb3IgdW5kZWZpbmVkIGJlaGF2aW91cjogQ2xlYXIgdGhlIERTViBzbyB0aGF0IG91ciBmaXJz
dCByZW5kZXIKKyAgICAvLyB3b3JrcyBhcyBleHBlY3RlZC4gT3RoZXJ3aXNlIHRoZSByZXN1bHRz
IG9mIHRoZSBmaXJzdCB1c2Ugc2VlbSB0byBiZSBpbmNvcnJlY3QuCisgICAgYXV0byBjb250ZXh0
ID0gbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CisgICAgY29udGV4dC0+Q2xlYXJEZXB0
aFN0ZW5jaWxWaWV3KG1SZXNvbHZlZERlcHRoRFNWaWV3LkdldCgpLCBEM0QxMV9DTEVBUl9ERVBU
SCwgMS4wZiwgMCk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9y
IEJsaXQxMTo6aW5pdFJlc29sdmVEZXB0aFN0ZW5jaWwoY29uc3QgZ2w6OkV4dGVudHMgJmV4dGVu
dHMpCkBAIC0yMDc3LDYgKzIwNzMsNyBAQCBnbDo6RXJyb3IgQmxpdDExOjppbml0UmVzb2x2ZURl
cHRoU3RlbmNpbChjb25zdCBnbDo6RXh0ZW50cyAmZXh0ZW50cykKICAgICAvLyBDaGVjayBpZiB3
ZSBuZWVkIHRvIHJlY3JlYXRlIGRlcHRoIHN0ZW5jaWwgdmlldwogICAgIGlmIChtUmVzb2x2ZWRE
ZXB0aFN0ZW5jaWwudmFsaWQoKSAmJiBleHRlbnRzID09IG1SZXNvbHZlZERlcHRoU3RlbmNpbC5n
ZXRFeHRlbnRzKCkpCiAgICAgeworICAgICAgICBBU1NFUlQobVJlc29sdmVkRGVwdGhTdGVuY2ls
LmdldEZvcm1hdCgpID09IERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCk7CiAgICAgICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogICAgIH0KIApAQCAtMjEwNiwxNyArMjEwMywxNyBAQCBnbDo6RXJy
b3IgQmxpdDExOjppbml0UmVzb2x2ZURlcHRoU3RlbmNpbChjb25zdCBnbDo6RXh0ZW50cyAmZXh0
ZW50cykKICAgICBIUkVTVUxUIGhyID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJnRleHR1cmVE
ZXNjLCBudWxscHRyLCAmcmVzb2x2ZWREZXB0aFN0ZW5jaWwpOwogICAgIGlmIChGQUlMRUQoaHIp
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFp
bGVkIHRvIGFsbG9jYXRlIHJlc29sdmVkIGRlcHRoIHN0ZW5jaWwgdGV4dHVyZSIpOworICAgICAg
ICByZXR1cm4gZ2w6Ok91dE9mTWVtb3J5KCkgPDwgIkZhaWxlZCB0byBhbGxvY2F0ZSByZXNvbHZl
ZCBkZXB0aCBzdGVuY2lsIHRleHR1cmUsICIgPDwgaHI7CiAgICAgfQogICAgIGQzZDExOjpTZXRE
ZWJ1Z05hbWUocmVzb2x2ZWREZXB0aFN0ZW5jaWwsICJCbGl0MTE6Om1SZXNvbHZlZERlcHRoU3Rl
bmNpbCIpOwogCiAgICAgQVNTRVJUKG1SZXNvbHZlZERlcHRoU3RlbmNpbFJUVmlldyA9PSBudWxs
cHRyKTsKLSAgICBociA9Ci0gICAgICAgIGRldmljZS0+Q3JlYXRlUmVuZGVyVGFyZ2V0Vmlldyhy
ZXNvbHZlZERlcHRoU3RlbmNpbCwgbnVsbHB0ciwgJm1SZXNvbHZlZERlcHRoU3RlbmNpbFJUVmll
dyk7CisgICAgaHIgPSBkZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdldFZpZXcocmVzb2x2ZWREZXB0
aFN0ZW5jaWwsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbVJlc29sdmVkRGVwdGhTdGVuY2lsUlRWaWV3LkdldEFkZHJlc3NPZigpKTsKICAgICBpZiAo
RkFJTEVEKGhyKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01F
TU9SWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGFsbG9jYXRlIEJsaXQx
MTo6bVJlc29sdmVkRGVwdGhTdGVuY2lsUlRWaWV3Iik7CisgICAgICAgIHJldHVybiBnbDo6T3V0
T2ZNZW1vcnkoKSA8PCAiRmFpbGVkIHRvIGFsbG9jYXRlIEJsaXQxMTo6bVJlc29sdmVkRGVwdGhT
dGVuY2lsUlRWaWV3LCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBocjsK
ICAgICB9CiAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtUmVzb2x2ZWREZXB0aFN0ZW5jaWxSVFZp
ZXcsICJCbGl0MTE6Om1SZXNvbHZlZERlcHRoU3RlbmNpbFJUVmlldyIpOwogCkBAIC0yMTI4LDYg
KzIxMjUsOSBAQCBnbDo6RXJyb3IgQmxpdDExOjppbml0UmVzb2x2ZURlcHRoU3RlbmNpbChjb25z
dCBnbDo6RXh0ZW50cyAmZXh0ZW50cykKIGdsOjpFcnJvck9yUmVzdWx0PFRleHR1cmVIZWxwZXIx
MT4gQmxpdDExOjpyZXNvbHZlU3RlbmNpbChSZW5kZXJUYXJnZXQxMSAqZGVwdGhTdGVuY2lsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgYWxzb0RlcHRoKQogeworICAgIC8vIE11bHRpc2FtcGxlZCBkZXB0aCBzdGVuY2lsIFNS
VnMgYXJlIG5vdCBhdmFpbGFibGUgaW4gZmVhdHVyZSBsZXZlbCAxMC4wCisgICAgQVNTRVJUKG1S
ZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKS5mZWF0dXJlTGV2ZWwgPiBEM0RfRkVB
VFVSRV9MRVZFTF8xMF8wKTsKKwogICAgIGNvbnN0IGF1dG8gJmV4dGVudHMgPSBkZXB0aFN0ZW5j
aWwtPmdldEV4dGVudHMoKTsKIAogICAgIEFOR0xFX1RSWShpbml0UmVzb2x2ZURlcHRoU3RlbmNp
bChleHRlbnRzKSk7CkBAIC0yMTQ1LDIwICsyMTQ1LDIzIEBAIGdsOjpFcnJvck9yUmVzdWx0PFRl
eHR1cmVIZWxwZXIxMT4gQmxpdDExOjpyZXNvbHZlU3RlbmNpbChSZW5kZXJUYXJnZXQxMSAqZGVw
dGhTCiAKICAgICAgICAgaWYgKHN0ZW5jaWxSZXNvdXJjZSAhPSBwcmlvclJlc291cmNlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBTYWZlUmVsZWFzZShtU3RlbmNpbFNSVik7CisgICAgICAgICAg
ICBtU3RlbmNpbFNSVi5SZXNldCgpOwogICAgICAgICB9CisKKyAgICAgICAgU2FmZVJlbGVhc2Uo
cHJpb3JSZXNvdXJjZSk7CiAgICAgfQogCi0gICAgaWYgKCFtU3RlbmNpbFNSVikKKyAgICBpZiAo
bVN0ZW5jaWxTUlYgPT0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIEQzRDExX1NIQURFUl9SRVNP
VVJDRV9WSUVXX0RFU0Mgc3JWaWV3RGVzYzsKICAgICAgICAgc3JWaWV3RGVzYy5Gb3JtYXQgICAg
ICAgID0gR2V0U3RlbmNpbFNSVkZvcm1hdChkZXB0aFN0ZW5jaWwtPmdldEZvcm1hdFNldCgpKTsK
ICAgICAgICAgc3JWaWV3RGVzYy5WaWV3RGltZW5zaW9uID0gRDNEMTFfU1JWX0RJTUVOU0lPTl9U
RVhUVVJFMkRNUzsKIAotICAgICAgICBIUkVTVUxUIGhyID0gZGV2aWNlLT5DcmVhdGVTaGFkZXJS
ZXNvdXJjZVZpZXcoc3RlbmNpbFJlc291cmNlLCAmc3JWaWV3RGVzYywgJm1TdGVuY2lsU1JWKTsK
KyAgICAgICAgSFJFU1VMVCBociA9IGRldmljZS0+Q3JlYXRlU2hhZGVyUmVzb3VyY2VWaWV3KHN0
ZW5jaWxSZXNvdXJjZSwgJnNyVmlld0Rlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RlbmNpbFNSVi5HZXRBZGRyZXNzT2YoKSk7CiAg
ICAgICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJFcnJvciBjcmVhdGluZyBCbGl0MTEgc3RlbmNpbCBT
UlYiKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6T3V0T2ZNZW1vcnkoKSA8PCAiRXJyb3IgY3Jl
YXRpbmcgQmxpdDExIHN0ZW5jaWwgU1JWLCAiIDw8IGhyOwogICAgICAgICB9CiAgICAgICAgIGQz
ZDExOjpTZXREZWJ1Z05hbWUobVN0ZW5jaWxTUlYsICJCbGl0MTE6Om1TdGVuY2lsU1JWIik7CiAg
ICAgfQpAQCAtMjE3Myw3ICsyMTc2LDcgQEAgZ2w6OkVycm9yT3JSZXN1bHQ8VGV4dHVyZUhlbHBl
cjExPiBCbGl0MTE6OnJlc29sdmVTdGVuY2lsKFJlbmRlclRhcmdldDExICpkZXB0aFMKICAgICBj
b250ZXh0LT5HU1NldFNoYWRlcihudWxscHRyLCBudWxscHRyLCAwKTsKICAgICBjb250ZXh0LT5S
U1NldFN0YXRlKG51bGxwdHIpOwogICAgIGNvbnRleHQtPk9NU2V0RGVwdGhTdGVuY2lsU3RhdGUo
bnVsbHB0ciwgMHhGRkZGRkZGRik7Ci0gICAgY29udGV4dC0+T01TZXRSZW5kZXJUYXJnZXRzKDEs
ICZtUmVzb2x2ZWREZXB0aFN0ZW5jaWxSVFZpZXcsIG51bGxwdHIpOworICAgIGNvbnRleHQtPk9N
U2V0UmVuZGVyVGFyZ2V0cygxLCBtUmVzb2x2ZWREZXB0aFN0ZW5jaWxSVFZpZXcuR2V0QWRkcmVz
c09mKCksIG51bGxwdHIpOwogICAgIGNvbnRleHQtPk9NU2V0QmxlbmRTdGF0ZShudWxscHRyLCBu
dWxscHRyLCAweEZGRkZGRkYpOwogCiAgICAgLy8gU2V0IHRoZSB2aWV3cG9ydApAQCAtMjE4Nyw3
ICsyMTkwLDcgQEAgZ2w6OkVycm9yT3JSZXN1bHQ8VGV4dHVyZUhlbHBlcjExPiBCbGl0MTE6OnJl
c29sdmVTdGVuY2lsKFJlbmRlclRhcmdldDExICpkZXB0aFMKICAgICBjb250ZXh0LT5SU1NldFZp
ZXdwb3J0cygxLCAmdmlld3BvcnQpOwogCiAgICAgSUQzRDExU2hhZGVyUmVzb3VyY2VWaWV3ICpw
aXhlbFZpZXdzW10gPSB7Ci0gICAgICAgIGRlcHRoU3RlbmNpbC0+Z2V0U2hhZGVyUmVzb3VyY2VW
aWV3KCksIG1TdGVuY2lsU1JWLAorICAgICAgICBkZXB0aFN0ZW5jaWwtPmdldFNoYWRlclJlc291
cmNlVmlldygpLCBtU3RlbmNpbFNSVi5HZXQoKSwKICAgICB9OwogCiAgICAgY29udGV4dC0+UFNT
ZXRTaGFkZXJSZXNvdXJjZXMoMCwgMiwgcGl4ZWxWaWV3cyk7CkBAIC0yMjI3LDggKzIyMzAsOCBA
QCBnbDo6RXJyb3JPclJlc3VsdDxUZXh0dXJlSGVscGVyMTE+IEJsaXQxMTo6cmVzb2x2ZVN0ZW5j
aWwoUmVuZGVyVGFyZ2V0MTEgKmRlcHRoUwogCiB2b2lkIEJsaXQxMTo6cmVsZWFzZVJlc29sdmVE
ZXB0aFN0ZW5jaWxSZXNvdXJjZXMoKQogewotICAgIFNhZmVSZWxlYXNlKG1TdGVuY2lsU1JWKTsK
LSAgICBTYWZlUmVsZWFzZShtUmVzb2x2ZWREZXB0aFN0ZW5jaWxSVFZpZXcpOworICAgIG1TdGVu
Y2lsU1JWLlJlc2V0KCk7CisgICAgbVJlc29sdmVkRGVwdGhTdGVuY2lsUlRWaWV3LlJlc2V0KCk7
CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CbGl0MTEuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQmxpdDExLmgK
aW5kZXggZTYxZjA5NmM2OWQuLjQzYzVkYTUxNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0JsaXQxMS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
QmxpdDExLmgKQEAgLTE4MSw3ICsxODEsNiBAQCBjbGFzcyBCbGl0MTEgOiBhbmdsZTo6Tm9uQ29w
eWFibGUKICAgICB9OwogCiAgICAgZ2w6OkVycm9yIGluaXRSZXNvdXJjZXMoKTsKLSAgICB2b2lk
IGZyZWVSZXNvdXJjZXMoKTsKIAogICAgIFNoYWRlclN1cHBvcnQgZ2V0U2hhZGVyU3VwcG9ydChj
b25zdCBTaGFkZXIgJnNoYWRlcik7CiAKQEAgLTI1NCw2ICsyNTMsNyBAQCBjbGFzcyBCbGl0MTEg
OiBhbmdsZTo6Tm9uQ29weWFibGUKIAogICAgIHZvaWQgY2xlYXJTaGFkZXJNYXAoKTsKICAgICB2
b2lkIHJlbGVhc2VSZXNvbHZlRGVwdGhTdGVuY2lsUmVzb3VyY2VzKCk7CisgICAgZ2w6OkVycm9y
IGluaXRSZXNvbHZlRGVwdGhPbmx5KGNvbnN0IGQzZDExOjpGb3JtYXQgJmZvcm1hdCwgY29uc3Qg
Z2w6OkV4dGVudHMgJmV4dGVudHMpOwogICAgIGdsOjpFcnJvciBpbml0UmVzb2x2ZURlcHRoU3Rl
bmNpbChjb25zdCBnbDo6RXh0ZW50cyAmZXh0ZW50cyk7CiAKICAgICBSZW5kZXJlcjExICptUmVu
ZGVyZXI7CkBAIC0yNjIsMTIgKzI2MiwxMiBAQCBjbGFzcyBCbGl0MTEgOiBhbmdsZTo6Tm9uQ29w
eWFibGUKICAgICBzdGQ6Om1hcDxTd2l6emxlU2hhZGVyVHlwZSwgU2hhZGVyPiBtU3dpenpsZVNo
YWRlck1hcDsKIAogICAgIGJvb2wgbVJlc291cmNlc0luaXRpYWxpemVkOwotICAgIElEM0QxMUJ1
ZmZlciAqbVZlcnRleEJ1ZmZlcjsKLSAgICBJRDNEMTFTYW1wbGVyU3RhdGUgKm1Qb2ludFNhbXBs
ZXI7Ci0gICAgSUQzRDExU2FtcGxlclN0YXRlICptTGluZWFyU2FtcGxlcjsKLSAgICBJRDNEMTFS
YXN0ZXJpemVyU3RhdGUgKm1TY2lzc29yRW5hYmxlZFJhc3Rlcml6ZXJTdGF0ZTsKLSAgICBJRDNE
MTFSYXN0ZXJpemVyU3RhdGUgKm1TY2lzc29yRGlzYWJsZWRSYXN0ZXJpemVyU3RhdGU7Ci0gICAg
SUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKm1EZXB0aFN0ZW5jaWxTdGF0ZTsKKyAgICBhbmdsZTo6
Q29tUHRyPElEM0QxMUJ1ZmZlcj4gbVZlcnRleEJ1ZmZlcjsKKyAgICBhbmdsZTo6Q29tUHRyPElE
M0QxMVNhbXBsZXJTdGF0ZT4gbVBvaW50U2FtcGxlcjsKKyAgICBhbmdsZTo6Q29tUHRyPElEM0Qx
MVNhbXBsZXJTdGF0ZT4gbUxpbmVhclNhbXBsZXI7CisgICAgYW5nbGU6OkNvbVB0cjxJRDNEMTFS
YXN0ZXJpemVyU3RhdGU+IG1TY2lzc29yRW5hYmxlZFJhc3Rlcml6ZXJTdGF0ZTsKKyAgICBhbmds
ZTo6Q29tUHRyPElEM0QxMVJhc3Rlcml6ZXJTdGF0ZT4gbVNjaXNzb3JEaXNhYmxlZFJhc3Rlcml6
ZXJTdGF0ZTsKKyAgICBhbmdsZTo6Q29tUHRyPElEM0QxMURlcHRoU3RlbmNpbFN0YXRlPiBtRGVw
dGhTdGVuY2lsU3RhdGU7CiAKICAgICBkM2QxMTo6TGF6eUlucHV0TGF5b3V0IG1RdWFkMkRJTDsK
ICAgICBkM2QxMTo6TGF6eVNoYWRlcjxJRDNEMTFWZXJ0ZXhTaGFkZXI+IG1RdWFkMkRWUzsKQEAg
LTI3OSwxNSArMjc5LDE3IEBAIGNsYXNzIEJsaXQxMSA6IGFuZ2xlOjpOb25Db3B5YWJsZQogCiAg
ICAgZDNkMTE6OkxhenlCbGVuZFN0YXRlIG1BbHBoYU1hc2tCbGVuZFN0YXRlOwogCi0gICAgSUQz
RDExQnVmZmVyICptU3dpenpsZUNCOworICAgIGFuZ2xlOjpDb21QdHI8SUQzRDExQnVmZmVyPiBt
U3dpenpsZUNCOwogCiAgICAgZDNkMTE6OkxhenlTaGFkZXI8SUQzRDExVmVydGV4U2hhZGVyPiBt
UmVzb2x2ZURlcHRoU3RlbmNpbFZTOwogICAgIGQzZDExOjpMYXp5U2hhZGVyPElEM0QxMVBpeGVs
U2hhZGVyPiBtUmVzb2x2ZURlcHRoUFM7CiAgICAgZDNkMTE6OkxhenlTaGFkZXI8SUQzRDExUGl4
ZWxTaGFkZXI+IG1SZXNvbHZlRGVwdGhTdGVuY2lsUFM7CiAgICAgZDNkMTE6OkxhenlTaGFkZXI8
SUQzRDExUGl4ZWxTaGFkZXI+IG1SZXNvbHZlU3RlbmNpbFBTOwotICAgIElEM0QxMVNoYWRlclJl
c291cmNlVmlldyAqbVN0ZW5jaWxTUlY7CisgICAgYW5nbGU6OkNvbVB0cjxJRDNEMTFTaGFkZXJS
ZXNvdXJjZVZpZXc+IG1TdGVuY2lsU1JWOwogICAgIFRleHR1cmVIZWxwZXIxMSBtUmVzb2x2ZWRE
ZXB0aFN0ZW5jaWw7Ci0gICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqbVJlc29sdmVkRGVwdGhT
dGVuY2lsUlRWaWV3OworICAgIGFuZ2xlOjpDb21QdHI8SUQzRDExUmVuZGVyVGFyZ2V0Vmlldz4g
bVJlc29sdmVkRGVwdGhTdGVuY2lsUlRWaWV3OworICAgIFRleHR1cmVIZWxwZXIxMSBtUmVzb2x2
ZWREZXB0aDsKKyAgICBhbmdsZTo6Q29tUHRyPElEM0QxMURlcHRoU3RlbmNpbFZpZXc+IG1SZXNv
bHZlZERlcHRoRFNWaWV3OwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0J1
ZmZlcjExLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvQnVmZmVyMTEuY3BwCmluZGV4IDczMTY4MGRjOGU3Li5mZTE0ZGRlZWNkMiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9CdWZmZXIxMS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CdWZmZXIxMS5jcHAKQEAgLTM4LDYgKzM4LDI4
IEBAIGVudW0gY2xhc3MgQ29weVJlc3VsdAogICAgIE5PVF9SRUNSRUFURUQsCiB9OwogCit2b2lk
IENhbGN1bGF0ZUNvbnN0YW50QnVmZmVyUGFyYW1zKEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVSU5UICpvdXRGaXJzdENvbnN0YW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVSU5UICpvdXROdW1Db25zdGFudHMpCit7CisgICAg
Ly8gVGhlIG9mZnNldCBtdXN0IGJlIGFsaWduZWQgdG8gMjU2IGJ5dGVzIChzaG91bGQgaGF2ZSBi
ZWVuIGVuZm9yY2VkIGJ5IGdsQmluZEJ1ZmZlclJhbmdlKS4KKyAgICBBU1NFUlQob2Zmc2V0ICUg
MjU2ID09IDApOworCisgICAgLy8gZmlyc3RDb25zdGFudCBhbmQgbnVtQ29uc3RhbnRzIGFyZSBl
eHByZXNzZWQgaW4gY29uc3RhbnRzIG9mIDE2LWJ5dGVzLiBGdXJ0aGVybW9yZSB0aGV5IG11c3QK
KyAgICAvLyBiZSBhIG11bHRpcGxlIG9mIDE2IGNvbnN0YW50cy4KKyAgICAqb3V0Rmlyc3RDb25z
dGFudCA9IHN0YXRpY19jYXN0PFVJTlQ+KG9mZnNldCAvIDE2KTsKKworICAgIC8vIFRoZSBHTCBz
aXplIGlzIG5vdCByZXF1aXJlZCB0byBiZSBhbGlnbmVkIHRvIGEgMjU2IGJ5dGVzIGJvdW5kYXJ5
LgorICAgIC8vIFJvdW5kIHRoZSBzaXplIHVwIHRvIGEgMjU2IGJ5dGVzIGJvdW5kYXJ5IHRoZW4g
ZXhwcmVzcyB0aGUgcmVzdWx0cyBpbiBjb25zdGFudHMgb2YgMTYtYnl0ZXMuCisgICAgKm91dE51
bUNvbnN0YW50cyA9IHN0YXRpY19jYXN0PFVJTlQ+KHJ4Ojpyb3VuZFVwKHNpemUsIHN0YXRpY19j
YXN0PEdMc2l6ZWlwdHI+KDI1NikpIC8gMTYpOworCisgICAgLy8gU2luY2UgdGhlIHNpemUgaXMg
cm91bmRlZCB1cCwgZmlyc3RDb25zdGFudCArIG51bUNvbnN0YW50cyBtYXkgYmUgYmlnZ2VyIHRo
YW4gdGhlIGFjdHVhbCBzaXplCisgICAgLy8gb2YgdGhlIGJ1ZmZlci4gVGhpcyBiZWhhdmlvdXIg
aXMgZXhwbGljdGx5IGFsbG93ZWQgYWNjb3JkaW5nIHRvIHRoZSBkb2N1bWVudGF0aW9uIG9uCisg
ICAgLy8gSUQzRDExRGV2aWNlQ29udGV4dDE6OlBTU2V0Q29uc3RhbnRCdWZmZXJzMQorICAgIC8v
IGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9w
L2hoNDA0NjQ5JTI4dj12cy44NSUyOS5hc3B4Cit9CisKIH0gIC8vIGFub255bW91cyBuYW1lc3Bh
Y2UKIAogbmFtZXNwYWNlIGdsX2QzZDExCkBAIC0xMjEsNyArMTQzLDcgQEAgY2xhc3MgQnVmZmVy
MTE6Ok5hdGl2ZVN0b3JhZ2UgOiBwdWJsaWMgQnVmZmVyMTE6OkJ1ZmZlclN0b3JhZ2UKICAgcHVi
bGljOgogICAgIE5hdGl2ZVN0b3JhZ2UoUmVuZGVyZXIxMSAqcmVuZGVyZXIsCiAgICAgICAgICAg
ICAgICAgICBCdWZmZXJVc2FnZSB1c2FnZSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGFuZ2xl
OjpCcm9hZGNhc3RDaGFubmVsICpvblN0b3JhZ2VDaGFuZ2VkKTsKKyAgICAgICAgICAgICAgICAg
IGNvbnN0IGFuZ2xlOjpCcm9hZGNhc3RDaGFubmVsPD4gKm9uU3RvcmFnZUNoYW5nZWQpOwogICAg
IH5OYXRpdmVTdG9yYWdlKCkgb3ZlcnJpZGU7CiAKICAgICBib29sIGlzTWFwcGFibGUoR0xiaXRm
aWVsZCBhY2Nlc3MpIGNvbnN0IG92ZXJyaWRlOwpAQCAtMTQ5LDcgKzE3MSw3IEBAIGNsYXNzIEJ1
ZmZlcjExOjpOYXRpdmVTdG9yYWdlIDogcHVibGljIEJ1ZmZlcjExOjpCdWZmZXJTdG9yYWdlCiAg
ICAgdm9pZCBjbGVhclNSVnMoKTsKIAogICAgIElEM0QxMUJ1ZmZlciAqbU5hdGl2ZVN0b3JhZ2U7
Ci0gICAgY29uc3QgYW5nbGU6OkJyb2FkY2FzdENoYW5uZWwgKm1PblN0b3JhZ2VDaGFuZ2VkOwor
ICAgIGNvbnN0IGFuZ2xlOjpCcm9hZGNhc3RDaGFubmVsPD4gKm1PblN0b3JhZ2VDaGFuZ2VkOwog
ICAgIHN0ZDo6bWFwPERYR0lfRk9STUFULCBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKj4gbUJ1
ZmZlclJlc291cmNlVmlld3M7CiB9OwogCkBAIC0xODMsOCArMjA1LDggQEAgY2xhc3MgQnVmZmVy
MTE6OkVtdWxhdGVkSW5kZXhlZFN0b3JhZ2UgOiBwdWJsaWMgQnVmZmVyMTE6OkJ1ZmZlclN0b3Jh
Z2UKIAogICBwcml2YXRlOgogICAgIElEM0QxMUJ1ZmZlciAqbU5hdGl2ZVN0b3JhZ2U7ICAgICAg
IC8vIGNvbnRhaW5zIGV4cGFuZGVkIGRhdGEgZm9yIHVzZSBieSBEM0QKLSAgICBNZW1vcnlCdWZm
ZXIgbU1lbW9yeUJ1ZmZlcjsgICAgICAgICAvLyBvcmlnaW5hbCBkYXRhIChub3QgZXhwYW5kZWQp
Ci0gICAgTWVtb3J5QnVmZmVyIG1JbmRpY2VzTWVtb3J5QnVmZmVyOyAgLy8gaW5kaWNlcyBkYXRh
CisgICAgYW5nbGU6Ok1lbW9yeUJ1ZmZlciBtTWVtb3J5QnVmZmVyOyAgLy8gb3JpZ2luYWwgZGF0
YSAobm90IGV4cGFuZGVkKQorICAgIGFuZ2xlOjpNZW1vcnlCdWZmZXIgbUluZGljZXNNZW1vcnlC
dWZmZXI7ICAvLyBpbmRpY2VzIGRhdGEKIH07CiAKIC8vIFBhY2sgc3RvcmFnZSByZXByZXNlbnRz
IGludGVybmFsIHN0b3JhZ2UgZm9yIHBhY2sgYnVmZmVycy4gV2UgaW1wbGVtZW50IHBhY2sgYnVm
ZmVycwpAQCAtMjE1LDcgKzIzNyw3IEBAIGNsYXNzIEJ1ZmZlcjExOjpQYWNrU3RvcmFnZSA6IHB1
YmxpYyBCdWZmZXIxMTo6QnVmZmVyU3RvcmFnZQogICAgIGdsOjpFcnJvciBmbHVzaFF1ZXVlZFBh
Y2tDb21tYW5kKCk7CiAKICAgICBUZXh0dXJlSGVscGVyMTEgbVN0YWdpbmdUZXh0dXJlOwotICAg
IE1lbW9yeUJ1ZmZlciBtTWVtb3J5QnVmZmVyOworICAgIGFuZ2xlOjpNZW1vcnlCdWZmZXIgbU1l
bW9yeUJ1ZmZlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFja1BpeGVsc1BhcmFtcz4gbVF1ZXVl
ZFBhY2tDb21tYW5kOwogICAgIFBhY2tQaXhlbHNQYXJhbXMgbVBhY2tQYXJhbXM7CiAgICAgYm9v
bCBtRGF0YU1vZGlmaWVkOwpAQCAtMjQzLDE0ICsyNjUsMTQgQEAgY2xhc3MgQnVmZmVyMTE6OlN5
c3RlbU1lbW9yeVN0b3JhZ2UgOiBwdWJsaWMgQnVmZmVyMTE6OkJ1ZmZlclN0b3JhZ2UKICAgICAg
ICAgICAgICAgICAgIHVpbnQ4X3QgKiptYXBQb2ludGVyT3V0KSBvdmVycmlkZTsKICAgICB2b2lk
IHVubWFwKCkgb3ZlcnJpZGU7CiAKLSAgICBNZW1vcnlCdWZmZXIgKmdldFN5c3RlbUNvcHkoKSB7
IHJldHVybiAmbVN5c3RlbUNvcHk7IH0KKyAgICBhbmdsZTo6TWVtb3J5QnVmZmVyICpnZXRTeXN0
ZW1Db3B5KCkgeyByZXR1cm4gJm1TeXN0ZW1Db3B5OyB9CiAKICAgcHJvdGVjdGVkOgotICAgIE1l
bW9yeUJ1ZmZlciBtU3lzdGVtQ29weTsKKyAgICBhbmdsZTo6TWVtb3J5QnVmZmVyIG1TeXN0ZW1D
b3B5OwogfTsKIAotQnVmZmVyMTE6OkJ1ZmZlcjExKFJlbmRlcmVyMTEgKnJlbmRlcmVyKQotICAg
IDogQnVmZmVyRDNEKHJlbmRlcmVyKSwKK0J1ZmZlcjExOjpCdWZmZXIxMShjb25zdCBnbDo6QnVm
ZmVyU3RhdGUgJnN0YXRlLCBSZW5kZXJlcjExICpyZW5kZXJlcikKKyAgICA6IEJ1ZmZlckQzRChz
dGF0ZSwgcmVuZGVyZXIpLAogICAgICAgbVJlbmRlcmVyKHJlbmRlcmVyKSwKICAgICAgIG1TaXpl
KDApLAogICAgICAgbU1hcHBlZFN0b3JhZ2UobnVsbHB0ciksCkBAIC0yNzcsMTAgKzI5OSwxNCBA
QCBCdWZmZXIxMTo6fkJ1ZmZlcjExKCkKICAgICBtUmVuZGVyZXItPm9uQnVmZmVyRGVsZXRlKHRo
aXMpOwogfQogCi1nbDo6RXJyb3IgQnVmZmVyMTE6OnNldERhdGEoR0xlbnVtIHRhcmdldCwgY29u
c3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIEdMZW51bSB1c2FnZSkKK2dsOjpFcnJvciBCdWZm
ZXIxMTo6c2V0RGF0YShDb250ZXh0SW1wbCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHVzYWdlKQogewogICAgIHVwZGF0ZUQz
REJ1ZmZlclVzYWdlKHVzYWdlKTsKLSAgICBBTkdMRV9UUlkoc2V0U3ViRGF0YSh0YXJnZXQsIGRh
dGEsIHNpemUsIDApKTsKKyAgICBBTkdMRV9UUlkoc2V0U3ViRGF0YShjb250ZXh0LCB0YXJnZXQs
IGRhdGEsIHNpemUsIDApKTsKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIApAQCAtMzAy
LDcgKzMyOCwxMSBAQCBnbDo6RXJyb3JPclJlc3VsdDxCdWZmZXIxMTo6U3lzdGVtTWVtb3J5U3Rv
cmFnZSAqPiBCdWZmZXIxMTo6Z2V0U3lzdGVtTWVtb3J5U3RvcgogICAgIHJldHVybiBHZXRBczxT
eXN0ZW1NZW1vcnlTdG9yYWdlPihzdG9yYWdlKTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlcjExOjpz
ZXRTdWJEYXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBz
aXplX3Qgb2Zmc2V0KQorZ2w6OkVycm9yIEJ1ZmZlcjExOjpzZXRTdWJEYXRhKENvbnRleHRJbXBs
ICogLypjb250ZXh0Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQpCiB7CiAgICAgc2l6ZV90IHJlcXVpcmVk
U2l6ZSA9IHNpemUgKyBvZmZzZXQ7CiAKQEAgLTMxMSw5ICszNDEsMjMgQEAgZ2w6OkVycm9yIEJ1
ZmZlcjExOjpzZXRTdWJEYXRhKEdMZW51bSB0YXJnZXQsIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVf
dCBzaXplLCBzaXoKICAgICAgICAgLy8gVXNlIHN5c3RlbSBtZW1vcnkgc3RvcmFnZSBmb3IgZHlu
YW1pYyBidWZmZXJzLgogICAgICAgICAvLyBUcnkgdXNpbmcgYSBjb25zdGFudCBzdG9yYWdlIGZv
ciBjb25zdGFudCBidWZmZXJzCiAgICAgICAgIEJ1ZmZlclN0b3JhZ2UgKndyaXRlQnVmZmVyID0g
bnVsbHB0cjsKLSAgICAgICAgaWYgKHRhcmdldCA9PSBHTF9VTklGT1JNX0JVRkZFUiAmJiBvZmZz
ZXQgPT0gMCAmJiBzaXplID49IG1TaXplKQorICAgICAgICBpZiAodGFyZ2V0ID09IEdMX1VOSUZP
Uk1fQlVGRkVSKQogICAgICAgICB7Ci0gICAgICAgICAgICBBTkdMRV9UUllfUkVTVUxUKGdldEJ1
ZmZlclN0b3JhZ2UoQlVGRkVSX1VTQUdFX1VOSUZPUk0pLCB3cml0ZUJ1ZmZlcik7CisgICAgICAg
ICAgICAvLyBJZiB3ZSBhcmUgYSB2ZXJ5IGxhcmdlIHVuaWZvcm0gYnVmZmVyLCBrZWVwIHN5c3Rl
bSBtZW1vcnkgc3RvcmFnZSBhcm91bmQgc28gdGhhdCB3ZQorICAgICAgICAgICAgLy8gYXJlbid0
IGZvcmNlZCB0byByZWFkIGJhY2sgZnJvbSBhIGNvbnN0YW50IGJ1ZmZlci4gV2UgYWxzbyBjaGVj
ayB0aGUgd29ya2Fyb3VuZCBmb3IKKyAgICAgICAgICAgIC8vIEludGVsIC0gdGhpcyByZXF1aXJl
cyB1cyB0byB1c2Ugc3lzdGVtIG1lbW9yeSBzbyB3ZSBkb24ndCBlbmQgdXAgaGF2aW5nIHRvIGNv
cHkgZnJvbQorICAgICAgICAgICAgLy8gYSBjb25zdGFudCBidWZmZXIgdG8gYSBzdGFnaW5nIGJ1
ZmZlci4KKyAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IFVzZSBDb250ZXh0IGNhcHMuCisg
ICAgICAgICAgICBpZiAob2Zmc2V0ID09IDAgJiYgc2l6ZSA+PSBtU2l6ZSAmJgorICAgICAgICAg
ICAgICAgIHNpemUgPD0gc3RhdGljX2Nhc3Q8VUlOVD4obVJlbmRlcmVyLT5nZXROYXRpdmVDYXBz
KCkubWF4VW5pZm9ybUJsb2NrU2l6ZSkgJiYKKyAgICAgICAgICAgICAgICAhbVJlbmRlcmVyLT5n
ZXRXb3JrYXJvdW5kcygpLnVzZVN5c3RlbU1lbW9yeUZvckNvbnN0YW50QnVmZmVycykKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICBBTkdMRV9UUllfUkVTVUxUKGdldEJ1ZmZlclN0b3Jh
Z2UoQlVGRkVSX1VTQUdFX1VOSUZPUk0pLCB3cml0ZUJ1ZmZlcik7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQU5HTEVfVFJZ
X1JFU1VMVChnZXRTeXN0ZW1NZW1vcnlTdG9yYWdlKCksIHdyaXRlQnVmZmVyKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChzdXBwb3J0c0RpcmVjdEJpbmRpbmco
KSkKICAgICAgICAgewpAQCAtMzQ0LDcgKzM4OCw4IEBAIGdsOjpFcnJvciBCdWZmZXIxMTo6c2V0
U3ViRGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgc2l6
CiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBCdWZmZXIxMTo6Y29w
eVN1YkRhdGEoQnVmZmVySW1wbCAqc291cmNlLAorZ2w6OkVycm9yIEJ1ZmZlcjExOjpjb3B5U3Vi
RGF0YShDb250ZXh0SW1wbCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQnVmZmVySW1wbCAqc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludHB0ciBzb3VyY2VPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50cHRyIGRlc3RPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWlwdHIgc2l6ZSkKQEAgLTQwNywxNSArNDUyLDE5IEBAIGdsOjpFcnJvciBCdWZmZXIxMTo6Y29w
eVN1YkRhdGEoQnVmZmVySW1wbCAqc291cmNlLAogICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
fQogCi1nbDo6RXJyb3IgQnVmZmVyMTE6Om1hcChHTGVudW0gYWNjZXNzLCBHTHZvaWQgKiptYXBQ
dHIpCitnbDo6RXJyb3IgQnVmZmVyMTE6Om1hcChDb250ZXh0SW1wbCAqY29udGV4dCwgR0xlbnVt
IGFjY2VzcywgR0x2b2lkICoqbWFwUHRyKQogewogICAgIC8vIEdMX09FU19tYXBidWZmZXIgdXNl
cyBhbiBlbnVtIGluc3RlYWQgb2YgYSBiaXRmaWVsZCBmb3IgaXQncyBhY2Nlc3MsIGNvbnZlcnQg
dG8gYSBiaXRmaWVsZAogICAgIC8vIGFuZCBjYWxsIG1hcFJhbmdlLgogICAgIEFTU0VSVChhY2Nl
c3MgPT0gR0xfV1JJVEVfT05MWV9PRVMpOwotICAgIHJldHVybiBtYXBSYW5nZSgwLCBtU2l6ZSwg
R0xfTUFQX1dSSVRFX0JJVCwgbWFwUHRyKTsKKyAgICByZXR1cm4gbWFwUmFuZ2UoY29udGV4dCwg
MCwgbVNpemUsIEdMX01BUF9XUklURV9CSVQsIG1hcFB0cik7CiB9CiAKLWdsOjpFcnJvciBCdWZm
ZXIxMTo6bWFwUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCwgR0xiaXRmaWVsZCBh
Y2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikKK2dsOjpFcnJvciBCdWZmZXIxMTo6bWFwUmFuZ2UoQ29u
dGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBv
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgYWNjZXNzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHZvaWQgKiptYXBQdHIpCiB7CiAgICAgQVNTRVJUKCFtTWFwcGVk
U3RvcmFnZSk7CiAKQEAgLTQ1NSw3ICs1MDQsNyBAQCBnbDo6RXJyb3IgQnVmZmVyMTE6Om1hcFJh
bmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzLCBHTAog
ICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgQnVmZmVyMTE6OnVubWFw
KEdMYm9vbGVhbiAqcmVzdWx0KQorZ2w6OkVycm9yIEJ1ZmZlcjExOjp1bm1hcChDb250ZXh0SW1w
bCAqY29udGV4dCwgR0xib29sZWFuICpyZXN1bHQpCiB7CiAgICAgQVNTRVJUKG1NYXBwZWRTdG9y
YWdlKTsKICAgICBtTWFwcGVkU3RvcmFnZS0+dW5tYXAoKTsKQEAgLTUyMiwxNiArNTcxLDMyIEBA
IGdsOjpFcnJvciBCdWZmZXIxMTo6Y2hlY2tGb3JEZWFsbG9jYXRpb24oQnVmZmVyVXNhZ2UgdXNh
Z2UpCiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBCdWZmZXIxMTo6
bWFya0J1ZmZlclVzYWdlKEJ1ZmZlclVzYWdlIHVzYWdlKQorLy8gS2VlcCBzeXN0ZW0gbWVtb3J5
IHdoZW4gd2UgYXJlIHVzaW5nIGl0IGZvciB0aGUgY2Fub25pY2FsIHZlcnNpb24gb2YgZGF0YS4K
K2Jvb2wgQnVmZmVyMTE6OmNhbkRlYWxsb2NhdGVTeXN0ZW1NZW1vcnkoKSBjb25zdAoreworICAg
IC8vIE11c3Qga2VlcCBzeXN0ZW0gbWVtb3J5IG9uIEludGVsLgorICAgIGlmIChtUmVuZGVyZXIt
PmdldFdvcmthcm91bmRzKCkudXNlU3lzdGVtTWVtb3J5Rm9yQ29uc3RhbnRCdWZmZXJzKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiAoIW1CdWZmZXJT
dG9yYWdlc1tCVUZGRVJfVVNBR0VfVU5JRk9STV0gfHwKKyAgICAgICAgICAgIG1TaXplIDw9IG1S
ZW5kZXJlci0+Z2V0TmF0aXZlQ2FwcygpLm1heFVuaWZvcm1CbG9ja1NpemUpOworfQorCit2b2lk
IEJ1ZmZlcjExOjptYXJrQnVmZmVyVXNhZ2UoQnVmZmVyVXNhZ2UgdXNhZ2UpCiB7CiAgICAgbUlk
bGVuZXNzW3VzYWdlXSA9IDA7Cit9CiAKLSAgICBpZiAodXNhZ2UgIT0gQlVGRkVSX1VTQUdFX1NZ
U1RFTV9NRU1PUlkpCitnbDo6RXJyb3IgQnVmZmVyMTE6OmdhcmJhZ2VDb2xsZWN0aW9uKEJ1ZmZl
clVzYWdlIGN1cnJlbnRVc2FnZSkKK3sKKyAgICBpZiAoY3VycmVudFVzYWdlICE9IEJVRkZFUl9V
U0FHRV9TWVNURU1fTUVNT1JZICYmIGNhbkRlYWxsb2NhdGVTeXN0ZW1NZW1vcnkoKSkKICAgICB7
CiAgICAgICAgIEFOR0xFX1RSWShjaGVja0ZvckRlYWxsb2NhdGlvbihCVUZGRVJfVVNBR0VfU1lT
VEVNX01FTU9SWSkpOwogICAgIH0KIAotICAgIGlmICh1c2FnZSAhPSBCVUZGRVJfVVNBR0VfU1RB
R0lORykKKyAgICBpZiAoY3VycmVudFVzYWdlICE9IEJVRkZFUl9VU0FHRV9TVEFHSU5HKQogICAg
IHsKICAgICAgICAgQU5HTEVfVFJZKGNoZWNrRm9yRGVhbGxvY2F0aW9uKEJVRkZFUl9VU0FHRV9T
VEFHSU5HKSk7CiAgICAgfQpAQCAtNTY1LDIwICs2MzAsMjkgQEAgZ2w6OkVycm9yT3JSZXN1bHQ8
SUQzRDExQnVmZmVyICo+IEJ1ZmZlcjExOjpnZXRFbXVsYXRlZEluZGV4ZWRCdWZmZXIoCiAgICAg
cmV0dXJuIG5hdGl2ZVN0b3JhZ2U7CiB9CiAKLWdsOjpFcnJvck9yUmVzdWx0PElEM0QxMUJ1ZmZl
ciAqPiBCdWZmZXIxMTo6Z2V0Q29uc3RhbnRCdWZmZXJSYW5nZShHTGludHB0ciBvZmZzZXQsIEdM
c2l6ZWlwdHIgc2l6ZSkKK2dsOjpFcnJvciBCdWZmZXIxMTo6Z2V0Q29uc3RhbnRCdWZmZXJSYW5n
ZShHTGludHB0ciBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaXB0ciBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIElEM0QxMUJ1ZmZlciAqKmJ1ZmZlck91dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVSU5UICpmaXJzdENvbnN0YW50T3V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgKm51bUNvbnN0YW50c091dCkK
IHsKICAgICBCdWZmZXJTdG9yYWdlICpidWZmZXJTdG9yYWdlID0gbnVsbHB0cjsKIAogICAgIGlm
IChvZmZzZXQgPT0gMCB8fCBtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkuc3Vw
cG9ydHNDb25zdGFudEJ1ZmZlck9mZnNldHMpCiAgICAgewogICAgICAgICBBTkdMRV9UUllfUkVT
VUxUKGdldEJ1ZmZlclN0b3JhZ2UoQlVGRkVSX1VTQUdFX1VOSUZPUk0pLCBidWZmZXJTdG9yYWdl
KTsKKyAgICAgICAgQ2FsY3VsYXRlQ29uc3RhbnRCdWZmZXJQYXJhbXMob2Zmc2V0LCBzaXplLCBm
aXJzdENvbnN0YW50T3V0LCBudW1Db25zdGFudHNPdXQpOwogICAgIH0KICAgICBlbHNlCiAgICAg
ewogICAgICAgICBBTkdMRV9UUllfUkVTVUxUKGdldENvbnN0YW50QnVmZmVyUmFuZ2VTdG9yYWdl
KG9mZnNldCwgc2l6ZSksIGJ1ZmZlclN0b3JhZ2UpOworICAgICAgICAqZmlyc3RDb25zdGFudE91
dCA9IDA7CisgICAgICAgICpudW1Db25zdGFudHNPdXQgID0gMDsKICAgICB9CiAKLSAgICByZXR1
cm4gR2V0QXM8TmF0aXZlU3RvcmFnZT4oYnVmZmVyU3RvcmFnZSktPmdldE5hdGl2ZVN0b3JhZ2Uo
KTsKKyAgICAqYnVmZmVyT3V0ID0gR2V0QXM8TmF0aXZlU3RvcmFnZT4oYnVmZmVyU3RvcmFnZSkt
PmdldE5hdGl2ZVN0b3JhZ2UoKTsKKworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBn
bDo6RXJyb3JPclJlc3VsdDxJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKj4gQnVmZmVyMTE6Omdl
dFNSVihEWEdJX0ZPUk1BVCBzcnZGb3JtYXQpCkBAIC02MjgsMTQgKzcwMiwxOCBAQCBnbDo6RXJy
b3JPclJlc3VsdDxCdWZmZXIxMTo6QnVmZmVyU3RvcmFnZSAqPiBCdWZmZXIxMTo6Z2V0QnVmZmVy
U3RvcmFnZShCdWZmZXJVcwogICAgICAgICBuZXdTdG9yYWdlID0gYWxsb2NhdGVTdG9yYWdlKHVz
YWdlKTsKICAgICB9CiAKKyAgICBtYXJrQnVmZmVyVXNhZ2UodXNhZ2UpOworCiAgICAgLy8gcmVz
aXplIGJ1ZmZlcgogICAgIGlmIChuZXdTdG9yYWdlLT5nZXRTaXplKCkgPCBtU2l6ZSkKICAgICB7
CiAgICAgICAgIEFOR0xFX1RSWShuZXdTdG9yYWdlLT5yZXNpemUobVNpemUsIHRydWUpKTsKICAg
ICB9CiAKKyAgICBBU1NFUlQobmV3U3RvcmFnZSk7CisKICAgICBBTkdMRV9UUlkodXBkYXRlQnVm
ZmVyU3RvcmFnZShuZXdTdG9yYWdlLCAwLCBtU2l6ZSkpOwotICAgIEFOR0xFX1RSWShtYXJrQnVm
ZmVyVXNhZ2UodXNhZ2UpKTsKKyAgICBBTkdMRV9UUlkoZ2FyYmFnZUNvbGxlY3Rpb24odXNhZ2Up
KTsKIAogICAgIHJldHVybiBuZXdTdG9yYWdlOwogfQpAQCAtNjc5LDYgKzc1Nyw4IEBAIGdsOjpF
cnJvck9yUmVzdWx0PEJ1ZmZlcjExOjpCdWZmZXJTdG9yYWdlICo+IEJ1ZmZlcjExOjpnZXRDb25z
dGFudEJ1ZmZlclJhbmdlU3RvCiAgICAgICAgIG5ld1N0b3JhZ2UgICAgICAgICAgID0gY2FjaGVF
bnRyeS0+c3RvcmFnZTsKICAgICB9CiAKKyAgICBtYXJrQnVmZmVyVXNhZ2UoQlVGRkVSX1VTQUdF
X1VOSUZPUk0pOworCiAgICAgaWYgKG5ld1N0b3JhZ2UtPmdldFNpemUoKSA8IHN0YXRpY19jYXN0
PHNpemVfdD4oc2l6ZSkpCiAgICAgewogICAgICAgICBzaXplX3QgbWF4aW11bUFsbG93ZWRBZGRp
dGlvbmFsU2l6ZSA9IDIgKiBnZXRTaXplKCk7CkBAIC03MTMsNyArNzkzLDcgQEAgZ2w6OkVycm9y
T3JSZXN1bHQ8QnVmZmVyMTE6OkJ1ZmZlclN0b3JhZ2UgKj4gQnVmZmVyMTE6OmdldENvbnN0YW50
QnVmZmVyUmFuZ2VTdG8KICAgICB9CiAKICAgICBBTkdMRV9UUlkodXBkYXRlQnVmZmVyU3RvcmFn
ZShuZXdTdG9yYWdlLCBvZmZzZXQsIHNpemUpKTsKLSAgICBBTkdMRV9UUlkobWFya0J1ZmZlclVz
YWdlKEJVRkZFUl9VU0FHRV9VTklGT1JNKSk7CisgICAgQU5HTEVfVFJZKGdhcmJhZ2VDb2xsZWN0
aW9uKEJVRkZFUl9VU0FHRV9VTklGT1JNKSk7CiAgICAgcmV0dXJuIG5ld1N0b3JhZ2U7CiB9CiAK
QEAgLTcyNCw2ICs4MDQsOCBAQCBnbDo6RXJyb3IgQnVmZmVyMTE6OnVwZGF0ZUJ1ZmZlclN0b3Jh
Z2UoQnVmZmVyU3RvcmFnZSAqc3RvcmFnZSwKICAgICBCdWZmZXJTdG9yYWdlICpsYXRlc3RCdWZm
ZXIgPSBudWxscHRyOwogICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2V0TGF0ZXN0QnVmZmVyU3RvcmFn
ZSgpLCBsYXRlc3RCdWZmZXIpOwogCisgICAgQVNTRVJUKHN0b3JhZ2UpOworCiAgICAgaWYgKGxh
dGVzdEJ1ZmZlciAmJiBsYXRlc3RCdWZmZXItPmdldERhdGFSZXZpc2lvbigpID4gc3RvcmFnZS0+
Z2V0RGF0YVJldmlzaW9uKCkpCiAgICAgewogICAgICAgICAvLyBDb3B5IHRocm91Z2ggYSBzdGFn
aW5nIGJ1ZmZlciBpZiB3ZSdyZSBjb3B5aW5nIGZyb20gb3IgdG8gYSBub24tc3RhZ2luZywgbWFw
cGFibGUKQEAgLTgyMCwxMiArOTAyLDEyIEBAIHZvaWQgQnVmZmVyMTE6OmludmFsaWRhdGVTdGF0
aWNEYXRhKCkKICAgICBtU3RhdGljQnJvYWRjYXN0Q2hhbm5lbC5zaWduYWwoKTsKIH0KIAotYW5n
bGU6OkJyb2FkY2FzdENoYW5uZWwgKkJ1ZmZlcjExOjpnZXRTdGF0aWNCcm9hZGNhc3RDaGFubmVs
KCkKK2FuZ2xlOjpCcm9hZGNhc3RDaGFubmVsPD4gKkJ1ZmZlcjExOjpnZXRTdGF0aWNCcm9hZGNh
c3RDaGFubmVsKCkKIHsKICAgICByZXR1cm4gJm1TdGF0aWNCcm9hZGNhc3RDaGFubmVsOwogfQog
Ci1hbmdsZTo6QnJvYWRjYXN0Q2hhbm5lbCAqQnVmZmVyMTE6OmdldERpcmVjdEJyb2FkY2FzdENo
YW5uZWwoKQorYW5nbGU6OkJyb2FkY2FzdENoYW5uZWw8PiAqQnVmZmVyMTE6OmdldERpcmVjdEJy
b2FkY2FzdENoYW5uZWwoKQogewogICAgIHJldHVybiAmbURpcmVjdEJyb2FkY2FzdENoYW5uZWw7
CiB9CkBAIC04NDEsMTAgKzkyMywxNCBAQCBnbDo6RXJyb3IgQnVmZmVyMTE6OkJ1ZmZlclN0b3Jh
Z2U6OnNldERhdGEoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IG9mZnNldCwgcwogewogICAg
IEFTU0VSVChpc01hcHBhYmxlKEdMX01BUF9XUklURV9CSVQpKTsKIAorICAgIC8vIFVuaWZvcm0g
c3RvcmFnZSBjYW4gaGF2ZSBhIGRpZmZlcmVudCBpbnRlcm5hbCBzaXplIHRoYW4gdGhlIGJ1ZmZl
ciBzaXplLiBFbnN1cmUgd2UgZG9uJ3QKKyAgICAvLyBvdmVyZmxvdy4KKyAgICBzaXplX3QgbWFw
U2l6ZSA9IHN0ZDo6bWluKHNpemUsIG1CdWZmZXJTaXplIC0gb2Zmc2V0KTsKKwogICAgIHVpbnQ4
X3QgKndyaXRlUG9pbnRlciA9IG51bGxwdHI7Ci0gICAgQU5HTEVfVFJZKG1hcChvZmZzZXQsIHNp
emUsIEdMX01BUF9XUklURV9CSVQsICZ3cml0ZVBvaW50ZXIpKTsKKyAgICBBTkdMRV9UUlkobWFw
KG9mZnNldCwgbWFwU2l6ZSwgR0xfTUFQX1dSSVRFX0JJVCwgJndyaXRlUG9pbnRlcikpOwogCi0g
ICAgbWVtY3B5KHdyaXRlUG9pbnRlciwgZGF0YSwgc2l6ZSk7CisgICAgbWVtY3B5KHdyaXRlUG9p
bnRlciwgZGF0YSwgbWFwU2l6ZSk7CiAKICAgICB1bm1hcCgpOwogCkBAIC04NTUsNyArOTQxLDcg
QEAgZ2w6OkVycm9yIEJ1ZmZlcjExOjpCdWZmZXJTdG9yYWdlOjpzZXREYXRhKGNvbnN0IHVpbnQ4
X3QgKmRhdGEsIHNpemVfdCBvZmZzZXQsIHMKIAogQnVmZmVyMTE6Ok5hdGl2ZVN0b3JhZ2U6Ok5h
dGl2ZVN0b3JhZ2UoUmVuZGVyZXIxMSAqcmVuZGVyZXIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBCdWZmZXJVc2FnZSB1c2FnZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGFuZ2xlOjpCcm9hZGNhc3RDaGFubmVsICpvblN0b3Jh
Z2VDaGFuZ2VkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
YW5nbGU6OkJyb2FkY2FzdENoYW5uZWw8PiAqb25TdG9yYWdlQ2hhbmdlZCkKICAgICA6IEJ1ZmZl
clN0b3JhZ2UocmVuZGVyZXIsIHVzYWdlKSwgbU5hdGl2ZVN0b3JhZ2UobnVsbHB0ciksIG1PblN0
b3JhZ2VDaGFuZ2VkKG9uU3RvcmFnZUNoYW5nZWQpCiB7CiB9CkBAIC05MTIsMTIgKzk5OCw4IEBA
IGdsOjpFcnJvck9yUmVzdWx0PENvcHlSZXN1bHQ+IEJ1ZmZlcjExOjpOYXRpdmVTdG9yYWdlOjpj
b3B5RnJvbVN0b3JhZ2UoQnVmZmVyU3RvCiAgICAgICAgIHVpbnQ4X3QgKnNvdXJjZVBvaW50ZXIg
PSBudWxscHRyOwogICAgICAgICBBTkdMRV9UUlkoc291cmNlLT5tYXAoc291cmNlT2Zmc2V0LCBj
bGFtcGVkU2l6ZSwgR0xfTUFQX1JFQURfQklULCAmc291cmNlUG9pbnRlcikpOwogCi0gICAgICAg
IHVpbnQ4X3QgKmRlc3RQb2ludGVyID0gbnVsbHB0cjsKLSAgICAgICAgQU5HTEVfVFJZKG1hcChk
ZXN0T2Zmc2V0LCBjbGFtcGVkU2l6ZSwgR0xfTUFQX1dSSVRFX0JJVCwgJmRlc3RQb2ludGVyKSk7
Ci0KLSAgICAgICAgbWVtY3B5KGRlc3RQb2ludGVyLCBzb3VyY2VQb2ludGVyLCBjbGFtcGVkU2l6
ZSk7CisgICAgICAgIHNldERhdGEoc291cmNlUG9pbnRlciwgZGVzdE9mZnNldCwgY2xhbXBlZFNp
emUpOwogCi0gICAgICAgIHVubWFwKCk7CiAgICAgICAgIHNvdXJjZS0+dW5tYXAoKTsKICAgICB9
CiAgICAgZWxzZQpAQCAtMTAyOCw2ICsxMTEwLDEzIEBAIHZvaWQgQnVmZmVyMTE6Ok5hdGl2ZVN0
b3JhZ2U6OkZpbGxCdWZmZXJEZXNjKEQzRDExX0JVRkZFUl9ERVNDICpidWZmZXJEZXNjLAogICAg
ICAgICAgICAgYnVmZmVyRGVzYy0+Q1BVQWNjZXNzRmxhZ3MgPSAwOwogICAgICAgICAgICAgYnJl
YWs7CiAKKyAgICAgICAgY2FzZSBCVUZGRVJfVVNBR0VfSU5ESVJFQ1Q6CisgICAgICAgICAgICBi
dWZmZXJEZXNjLT5NaXNjRmxhZ3MgICAgICA9IEQzRDExX1JFU09VUkNFX01JU0NfRFJBV0lORElS
RUNUX0FSR1M7CisgICAgICAgICAgICBidWZmZXJEZXNjLT5Vc2FnZSAgICAgICAgICA9IEQzRDEx
X1VTQUdFX0RFRkFVTFQ7CisgICAgICAgICAgICBidWZmZXJEZXNjLT5CaW5kRmxhZ3MgICAgICA9
IDA7CisgICAgICAgICAgICBidWZmZXJEZXNjLT5DUFVBY2Nlc3NGbGFncyA9IDA7CisgICAgICAg
ICAgICBicmVhazsKKwogICAgICAgICBjYXNlIEJVRkZFUl9VU0FHRV9QSVhFTF9VTlBBQ0s6CiAg
ICAgICAgICAgICBidWZmZXJEZXNjLT5Vc2FnZSAgICAgICAgICA9IEQzRDExX1VTQUdFX0RFRkFV
TFQ7CiAgICAgICAgICAgICBidWZmZXJEZXNjLT5CaW5kRmxhZ3MgICAgICA9IEQzRDExX0JJTkRf
U0hBREVSX1JFU09VUkNFOwpAQCAtMTA3Niw3ICsxMTY1LDcgQEAgZ2w6OkVycm9yIEJ1ZmZlcjEx
OjpOYXRpdmVTdG9yYWdlOjptYXAoc2l6ZV90IG9mZnNldCwKICAgICB9CiAgICAgQVNTRVJUKG1h
cHBlZFJlc291cmNlLnBEYXRhKTsKICAgICAqbWFwUG9pbnRlck91dCA9IHN0YXRpY19jYXN0PHVp
bnQ4X3QgKj4obWFwcGVkUmVzb3VyY2UucERhdGEpICsgb2Zmc2V0OwotICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2b2lk
IEJ1ZmZlcjExOjpOYXRpdmVTdG9yYWdlOjp1bm1hcCgpCkBAIC0xMTkyLDcgKzEyODEsNyBAQCBn
bDo6RXJyb3JPclJlc3VsdDxJRDNEMTFCdWZmZXIgKj4gQnVmZmVyMTE6OkVtdWxhdGVkSW5kZXhl
ZFN0b3JhZ2U6OmdldE5hdGl2ZVN0bwogICAgICAgICAvLyBFeHBhbmQgdGhlIG1lbW9yeSBzdG9y
YWdlIHVwb24gcmVxdWVzdCBhbmQgY2FjaGUgdGhlIHJlc3VsdHMuCiAgICAgICAgIHVuc2lnbmVk
IGludCBleHBhbmRlZERhdGFTaXplID0KICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVk
IGludD4oKGluZGV4SW5mby0+c3JjQ291bnQgKiBhdHRyaWJ1dGUuc3RyaWRlKSArIG9mZnNldCk7
Ci0gICAgICAgIE1lbW9yeUJ1ZmZlciBleHBhbmRlZERhdGE7CisgICAgICAgIGFuZ2xlOjpNZW1v
cnlCdWZmZXIgZXhwYW5kZWREYXRhOwogICAgICAgICBpZiAoIWV4cGFuZGVkRGF0YS5yZXNpemUo
ZXhwYW5kZWREYXRhU2l6ZSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBnbDo6RXJy
b3IoCkBAIC0xMjg1LDcgKzEzNzQsNyBAQCBnbDo6RXJyb3IgQnVmZmVyMTE6OkVtdWxhdGVkSW5k
ZXhlZFN0b3JhZ2U6OnJlc2l6ZShzaXplX3Qgc2l6ZSwgYm9vbCBwcmVzZXJ2ZURhdAogICAgICAg
ICBtQnVmZmVyU2l6ZSA9IHNpemU7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBCdWZm
ZXIxMTo6RW11bGF0ZWRJbmRleGVkU3RvcmFnZTo6bWFwKHNpemVfdCBvZmZzZXQsCkBAIC0xMjk1
LDcgKzEzODQsNyBAQCBnbDo6RXJyb3IgQnVmZmVyMTE6OkVtdWxhdGVkSW5kZXhlZFN0b3JhZ2U6
Om1hcChzaXplX3Qgb2Zmc2V0LAogewogICAgIEFTU0VSVCghbU1lbW9yeUJ1ZmZlci5lbXB0eSgp
ICYmIG9mZnNldCArIGxlbmd0aCA8PSBtTWVtb3J5QnVmZmVyLnNpemUoKSk7CiAgICAgKm1hcFBv
aW50ZXJPdXQgPSBtTWVtb3J5QnVmZmVyLmRhdGEoKSArIG9mZnNldDsKLSAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogdm9p
ZCBCdWZmZXIxMTo6RW11bGF0ZWRJbmRleGVkU3RvcmFnZTo6dW5tYXAoKQpAQCAtMTMyMSw5ICsx
NDEwLDggQEAgZ2w6OkVycm9yT3JSZXN1bHQ8Q29weVJlc3VsdD4gQnVmZmVyMTE6OlBhY2tTdG9y
YWdlOjpjb3B5RnJvbVN0b3JhZ2UoQnVmZmVyU3RvcmEKIHsKICAgICBBTkdMRV9UUlkoZmx1c2hR
dWV1ZWRQYWNrQ29tbWFuZCgpKTsKIAotICAgIC8vIFdlIGNvcHkgdGhyb3VnaCBhIHN0YWdpbmcg
YnVmZmVyIHdoZW4gZHJhd2luZyB3aXRoIGEgcGFjayBidWZmZXIsIG9yIGZvciBvdGhlciBjYXNl
cyB3aGVyZSB3ZQotICAgIC8vIGFjY2VzcyB0aGUgcGFjayBidWZmZXIKLSAgICBBU1NFUlQoc291
cmNlLT5pc01hcHBhYmxlKEdMX01BUF9SRUFEX0JJVCkgJiYgc291cmNlLT5nZXRVc2FnZSgpID09
IEJVRkZFUl9VU0FHRV9TVEFHSU5HKTsKKyAgICAvLyBGb3IgYWxsIHVzZSBjYXNlcyBvZiBwYWNr
IGJ1ZmZlcnMsIHdlIG11c3QgY29weSB0aHJvdWdoIGEgcmVhZGFibGUgYnVmZmVyLgorICAgIEFT
U0VSVChzb3VyY2UtPmlzTWFwcGFibGUoR0xfTUFQX1JFQURfQklUKSk7CiAgICAgdWludDhfdCAq
c291cmNlRGF0YSA9IG51bGxwdHI7CiAgICAgQU5HTEVfVFJZKHNvdXJjZS0+bWFwKHNvdXJjZU9m
ZnNldCwgc2l6ZSwgR0xfTUFQX1JFQURfQklULCAmc291cmNlRGF0YSkpOwogICAgIEFTU0VSVChk
ZXN0T2Zmc2V0ICsgc2l6ZSA8PSBtTWVtb3J5QnVmZmVyLnNpemUoKSk7CkBAIC0xMzQzLDcgKzE0
MzEsNyBAQCBnbDo6RXJyb3IgQnVmZmVyMTE6OlBhY2tTdG9yYWdlOjpyZXNpemUoc2l6ZV90IHNp
emUsIGJvb2wgcHJlc2VydmVEYXRhKQogICAgICAgICBtQnVmZmVyU2l6ZSA9IHNpemU7CiAgICAg
fQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBCdWZmZXIxMTo6UGFja1N0b3JhZ2U6Om1hcChzaXpl
X3Qgb2Zmc2V0LApAQCAtMTM2Miw3ICsxNDUwLDcgQEAgZ2w6OkVycm9yIEJ1ZmZlcjExOjpQYWNr
U3RvcmFnZTo6bWFwKHNpemVfdCBvZmZzZXQsCiAgICAgbURhdGFNb2RpZmllZCA9IChtRGF0YU1v
ZGlmaWVkIHx8IChhY2Nlc3MgJiBHTF9NQVBfV1JJVEVfQklUKSAhPSAwKTsKIAogICAgICptYXBQ
b2ludGVyT3V0ID0gbU1lbW9yeUJ1ZmZlci5kYXRhKCkgKyBvZmZzZXQ7Ci0gICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZv
aWQgQnVmZmVyMTE6OlBhY2tTdG9yYWdlOjp1bm1hcCgpCkBAIC0xNDc4LDcgKzE1NjYsNyBAQCBn
bDo6RXJyb3IgQnVmZmVyMTE6OlN5c3RlbU1lbW9yeVN0b3JhZ2U6Om1hcChzaXplX3Qgb2Zmc2V0
LAogewogICAgIEFTU0VSVCghbVN5c3RlbUNvcHkuZW1wdHkoKSAmJiBvZmZzZXQgKyBsZW5ndGgg
PD0gbVN5c3RlbUNvcHkuc2l6ZSgpKTsKICAgICAqbWFwUG9pbnRlck91dCA9IG1TeXN0ZW1Db3B5
LmRhdGEoKSArIG9mZnNldDsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogdm9pZCBCdWZmZXIxMTo6U3lzdGVtTWVtb3J5
U3RvcmFnZTo6dW5tYXAoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CdWZmZXIxMS5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CdWZmZXIxMS5oCmluZGV4
IGRjZjlhMDM3MzJlLi5hMTg2NjM3M2IwYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CdWZmZXIxMS5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQnVm
ZmVyMTEuaApAQCAtMjgsMTUgKzI4LDE4IEBAIGNsYXNzIFJlbmRlcmVyMTE7CiBzdHJ1Y3QgU291
cmNlSW5kZXhEYXRhOwogc3RydWN0IFRyYW5zbGF0ZWRBdHRyaWJ1dGU7CiAKKy8vIFRoZSBvcmRl
ciBvZiB0aGlzIGVudW0gZ292ZXJucyBwcmlvcml0eSBvZiAnZ2V0TGF0ZXN0QnVmZmVyU3RvcmFn
ZScuCiBlbnVtIEJ1ZmZlclVzYWdlCiB7CisgICAgQlVGRkVSX1VTQUdFX1NZU1RFTV9NRU1PUlks
CiAgICAgQlVGRkVSX1VTQUdFX1NUQUdJTkcsCiAgICAgQlVGRkVSX1VTQUdFX1ZFUlRFWF9PUl9U
UkFOU0ZPUk1fRkVFREJBQ0ssCiAgICAgQlVGRkVSX1VTQUdFX0lOREVYLAorICAgIC8vIFRPRE86
IHBvc3NpYmx5IHNoYXJlIHRoaXMgYnVmZmVyIHR5cGUgd2l0aCBzaGFkZXIgc3RvcmFnZSBidWZm
ZXJzLgorICAgIEJVRkZFUl9VU0FHRV9JTkRJUkVDVCwKICAgICBCVUZGRVJfVVNBR0VfUElYRUxf
VU5QQUNLLAogICAgIEJVRkZFUl9VU0FHRV9QSVhFTF9QQUNLLAogICAgIEJVRkZFUl9VU0FHRV9V
TklGT1JNLAotICAgIEJVRkZFUl9VU0FHRV9TWVNURU1fTUVNT1JZLAogICAgIEJVRkZFUl9VU0FH
RV9FTVVMQVRFRF9JTkRFWEVEX1ZFUlRFWCwKIAogICAgIEJVRkZFUl9VU0FHRV9DT1VOVCwKQEAg
LTQ3LDE0ICs1MCwxOCBAQCB0eXBlZGVmIHNpemVfdCBEYXRhUmV2aXNpb247CiBjbGFzcyBCdWZm
ZXIxMSA6IHB1YmxpYyBCdWZmZXJEM0QKIHsKICAgcHVibGljOgotICAgIEJ1ZmZlcjExKFJlbmRl
cmVyMTEgKnJlbmRlcmVyKTsKKyAgICBCdWZmZXIxMShjb25zdCBnbDo6QnVmZmVyU3RhdGUgJnN0
YXRlLCBSZW5kZXJlcjExICpyZW5kZXJlcik7CiAgICAgdmlydHVhbCB+QnVmZmVyMTEoKTsKIAog
ICAgIGdsOjpFcnJvck9yUmVzdWx0PElEM0QxMUJ1ZmZlciAqPiBnZXRCdWZmZXIoQnVmZmVyVXNh
Z2UgdXNhZ2UpOwogICAgIGdsOjpFcnJvck9yUmVzdWx0PElEM0QxMUJ1ZmZlciAqPiBnZXRFbXVs
YXRlZEluZGV4ZWRCdWZmZXIoU291cmNlSW5kZXhEYXRhICppbmRleEluZm8sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUcmFuc2xhdGVkQXR0cmlidXRlICZhdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzdGFydFZlcnRl
eCk7Ci0gICAgZ2w6OkVycm9yT3JSZXN1bHQ8SUQzRDExQnVmZmVyICo+IGdldENvbnN0YW50QnVm
ZmVyUmFuZ2UoR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUpOworICAgIGdsOjpFcnJv
ciBnZXRDb25zdGFudEJ1ZmZlclJhbmdlKEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSUQzRDExQnVmZmVyICoqYnVmZmVyT3V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQgKmZpcnN0Q29uc3RhbnRPdXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUlOVCAqbnVtQ29uc3RhbnRzT3V0KTsK
ICAgICBnbDo6RXJyb3JPclJlc3VsdDxJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKj4gZ2V0U1JW
KERYR0lfRk9STUFUIHNydkZvcm1hdCk7CiAgICAgYm9vbCBpc01hcHBlZCgpIGNvbnN0IHsgcmV0
dXJuIG1NYXBwZWRTdG9yYWdlICE9IG51bGxwdHI7IH0KICAgICBnbDo6RXJyb3IgcGFja1BpeGVs
cyhjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICZyZWFkQXR0YWNobWVudCwKQEAgLTY5
LDIyICs3NiwzNSBAQCBjbGFzcyBCdWZmZXIxMSA6IHB1YmxpYyBCdWZmZXJEM0QKICAgICB2b2lk
IGludmFsaWRhdGVTdGF0aWNEYXRhKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBCdWZmZXJJbXBsIGlt
cGxlbWVudGF0aW9uCi0gICAgZ2w6OkVycm9yIHNldERhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qg
dm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIEdMZW51bSB1c2FnZSkgb3ZlcnJpZGU7Ci0gICAgZ2w6
OkVycm9yIHNldFN1YkRhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90
IHNpemUsIHNpemVfdCBvZmZzZXQpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBjb3B5U3ViRGF0
YShCdWZmZXJJbXBsICpzb3VyY2UsCisgICAgZ2w6OkVycm9yIHNldERhdGEoQ29udGV4dEltcGwg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB1c2FnZSkgb3ZlcnJpZGU7
CisgICAgZ2w6OkVycm9yIHNldFN1YkRhdGEoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQpIG92ZXJyaWRlOworICAg
IGdsOjpFcnJvciBjb3B5U3ViRGF0YShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIEJ1ZmZlckltcGwgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnRwdHIgc291cmNlT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludHB0ciBkZXN0T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
cHRyIHNpemUpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBtYXAoR0xlbnVtIGFjY2VzcywgR0x2
b2lkICoqbWFwUHRyKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgbWFwUmFuZ2Uoc2l6ZV90IG9m
ZnNldCwgc2l6ZV90IGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikg
b3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIHVubWFwKEdMYm9vbGVhbiAqcmVzdWx0KSBvdmVycmlk
ZTsKKyAgICBnbDo6RXJyb3IgbWFwKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwgR0xlbnVtIGFj
Y2VzcywgR0x2b2lkICoqbWFwUHRyKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgbWFwUmFuZ2Uo
Q29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICBHTGJpdGZpZWxkIGFjY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAg
R0x2b2lkICoqbWFwUHRyKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgdW5tYXAoQ29udGV4dElt
cGwgKmNvbnRleHRJbXBsLCBHTGJvb2xlYW4gKnJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgZ2w6OkVy
cm9yIG1hcmtUcmFuc2Zvcm1GZWVkYmFja1VzYWdlKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBXZSB1
c2UgdHdvIHNldCBvZiBkaXJ0eSBldmVudHMuIFN0YXRpYyBidWZmZXJzIGFyZSBtYXJrZWQgZGly
dHkgd2hlbmV2ZXIKICAgICAvLyBkYXRhIGNoYW5nZXMsIGJlY2F1c2UgdGhleSBtdXN0IGJlIHJl
LXRyYW5zbGF0ZWQuIERpcmVjdCBidWZmZXJzIG9ubHkgbmVlZCB0byBiZQogICAgIC8vIHVwZGF0
ZWQgd2hlbiB0aGUgdW5kZXJseWluZyBJRDNEMTFCdWZmZXIgcG9pbnRlciBjaGFuZ2VzIC0gaG9w
ZWZ1bGx5IGZhciBsZXNzIG9mdGVuLgotICAgIGFuZ2xlOjpCcm9hZGNhc3RDaGFubmVsICpnZXRT
dGF0aWNCcm9hZGNhc3RDaGFubmVsKCk7Ci0gICAgYW5nbGU6OkJyb2FkY2FzdENoYW5uZWwgKmdl
dERpcmVjdEJyb2FkY2FzdENoYW5uZWwoKTsKKyAgICBhbmdsZTo6QnJvYWRjYXN0Q2hhbm5lbDw+
ICpnZXRTdGF0aWNCcm9hZGNhc3RDaGFubmVsKCk7CisgICAgYW5nbGU6OkJyb2FkY2FzdENoYW5u
ZWw8PiAqZ2V0RGlyZWN0QnJvYWRjYXN0Q2hhbm5lbCgpOwogCiAgIHByaXZhdGU6CiAgICAgY2xh
c3MgQnVmZmVyU3RvcmFnZTsKQEAgLTEwMSw3ICsxMjEsOCBAQCBjbGFzcyBCdWZmZXIxMSA6IHB1
YmxpYyBCdWZmZXJEM0QKICAgICAgICAgdW5zaWduZWQgaW50IGxydUNvdW50OwogICAgIH07CiAK
LSAgICBnbDo6RXJyb3IgbWFya0J1ZmZlclVzYWdlKEJ1ZmZlclVzYWdlIHVzYWdlKTsKKyAgICB2
b2lkIG1hcmtCdWZmZXJVc2FnZShCdWZmZXJVc2FnZSB1c2FnZSk7CisgICAgZ2w6OkVycm9yIGdh
cmJhZ2VDb2xsZWN0aW9uKEJ1ZmZlclVzYWdlIGN1cnJlbnRVc2FnZSk7CiAgICAgZ2w6OkVycm9y
T3JSZXN1bHQ8TmF0aXZlU3RvcmFnZSAqPiBnZXRTdGFnaW5nU3RvcmFnZSgpOwogICAgIGdsOjpF
cnJvck9yUmVzdWx0PFBhY2tTdG9yYWdlICo+IGdldFBhY2tTdG9yYWdlKCk7CiAgICAgZ2w6OkVy
cm9yT3JSZXN1bHQ8U3lzdGVtTWVtb3J5U3RvcmFnZSAqPiBnZXRTeXN0ZW1NZW1vcnlTdG9yYWdl
KCk7CkBAIC0xMTksNiArMTQwLDkgQEAgY2xhc3MgQnVmZmVyMTEgOiBwdWJsaWMgQnVmZmVyRDNE
CiAgICAgLy8gRnJlZSB0aGUgc3RvcmFnZSBpZiB3ZSBkZWNpZGUgaXQgaXNuJ3QgYmVpbmcgdXNl
ZCB2ZXJ5IG9mdGVuLgogICAgIGdsOjpFcnJvciBjaGVja0ZvckRlYWxsb2NhdGlvbihCdWZmZXJV
c2FnZSB1c2FnZSk7CiAKKyAgICAvLyBGb3Igc29tZSBjYXNlcyBvZiB1bmlmb3JtIGJ1ZmZlciBz
dG9yYWdlLCB3ZSBjYW4ndCBkZWFsbG9jYXRlIHN5c3RlbSBtZW1vcnkgc3RvcmFnZS4KKyAgICBi
b29sIGNhbkRlYWxsb2NhdGVTeXN0ZW1NZW1vcnkoKSBjb25zdDsKKwogICAgIFJlbmRlcmVyMTEg
Km1SZW5kZXJlcjsKICAgICBzaXplX3QgbVNpemU7CiAKQEAgLTEzOCw4ICsxNjIsOCBAQCBjbGFz
cyBCdWZmZXIxMSA6IHB1YmxpYyBCdWZmZXJEM0QKICAgICBzaXplX3QgbUNvbnN0YW50QnVmZmVy
U3RvcmFnZUFkZGl0aW9uYWxTaXplOwogICAgIHVuc2lnbmVkIGludCBtTWF4Q29uc3RhbnRCdWZm
ZXJMcnVDb3VudDsKIAotICAgIGFuZ2xlOjpCcm9hZGNhc3RDaGFubmVsIG1TdGF0aWNCcm9hZGNh
c3RDaGFubmVsOwotICAgIGFuZ2xlOjpCcm9hZGNhc3RDaGFubmVsIG1EaXJlY3RCcm9hZGNhc3RD
aGFubmVsOworICAgIGFuZ2xlOjpCcm9hZGNhc3RDaGFubmVsPD4gbVN0YXRpY0Jyb2FkY2FzdENo
YW5uZWw7CisgICAgYW5nbGU6OkJyb2FkY2FzdENoYW5uZWw8PiBtRGlyZWN0QnJvYWRjYXN0Q2hh
bm5lbDsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9DbGVhcjExLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
Q2xlYXIxMS5jcHAKaW5kZXggNTVmZTZjZDZhMTUuLjk2OTM1NWUwZDI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0Ns
ZWFyMTEuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvQ2xlYXIxMS5jcHAKQEAgLTMzLDMwICszMywyNCBAQAogbmFtZXNwYWNl
IHJ4CiB7CiAKK3N0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgZ19WZXJ0ZXhTaXplID0gc2l6ZW9m
KGQzZDExOjpQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXg8ZmxvYXQ+KTsKKwogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci1zdGF0aWMgdm9pZCBBcHBseVZlcnRpY2VzKGNvbnN0IGdsOjpFeHRlbnRzICZm
cmFtZWJ1ZmZlclNpemUsIGNvbnN0IGdsOjpSZWN0YW5nbGUgKnNjaXNzb3IsIGNvbnN0IGdsOjpD
b2xvcjxUPiAmY29sb3IsIGZsb2F0IGRlcHRoLCB2b2lkICpidWZmZXIpCitzdGF0aWMgdm9pZCBB
cHBseVZlcnRpY2VzKGNvbnN0IGdsOjpDb2xvcjxUPiAmY29sb3IsIGNvbnN0IGZsb2F0IGRlcHRo
LCB2b2lkICpidWZmZXIpCiB7Ci0gICAgZDNkMTE6OlBvc2l0aW9uRGVwdGhDb2xvclZlcnRleDxU
PiAqdmVydGljZXMgPSByZWludGVycHJldF9jYXN0PGQzZDExOjpQb3NpdGlvbkRlcHRoQ29sb3JW
ZXJ0ZXg8VD4qPihidWZmZXIpOwotCi0gICAgZmxvYXQgZGVwdGhDbGVhciA9IGdsOjpjbGFtcDAx
KGRlcHRoKTsKLSAgICBmbG9hdCBsZWZ0ID0gLTEuMGY7Ci0gICAgZmxvYXQgcmlnaHQgPSAxLjBm
OwotICAgIGZsb2F0IHRvcCA9IC0xLjBmOwotICAgIGZsb2F0IGJvdHRvbSA9IDEuMGY7Ci0KLSAg
ICAvLyBDbGlwIHRoZSBxdWFkIGNvb3JkaW5hdGVzIHRvIHRoZSBzY2lzc29yIGlmIG5lZWRlZAot
ICAgIGlmIChzY2lzc29yICE9IG51bGxwdHIpCi0gICAgewotICAgICAgICBsZWZ0ID0gc3RkOjpt
YXgobGVmdCwgKHNjaXNzb3ItPnggLyBmbG9hdChmcmFtZWJ1ZmZlclNpemUud2lkdGgpKSAqIDIu
MGYgLSAxLjBmKTsKLSAgICAgICAgcmlnaHQgPSBzdGQ6Om1pbihyaWdodCwgKChzY2lzc29yLT54
ICsgc2Npc3Nvci0+d2lkdGgpIC8gZmxvYXQoZnJhbWVidWZmZXJTaXplLndpZHRoKSkgKiAyLjBm
IC0gMS4wZik7Ci0gICAgICAgIHRvcCA9IHN0ZDo6bWF4KHRvcCwgKChmcmFtZWJ1ZmZlclNpemUu
aGVpZ2h0IC0gc2Npc3Nvci0+eSAtIHNjaXNzb3ItPmhlaWdodCkgLyBmbG9hdChmcmFtZWJ1ZmZl
clNpemUuaGVpZ2h0KSkgKiAyLjBmIC0gMS4wZik7Ci0gICAgICAgIGJvdHRvbSA9IHN0ZDo6bWlu
KGJvdHRvbSwgKChmcmFtZWJ1ZmZlclNpemUuaGVpZ2h0IC0gc2Npc3Nvci0+eSkgLyBmbG9hdChm
cmFtZWJ1ZmZlclNpemUuaGVpZ2h0KSkgKiAyLjBmIC0gMS4wZik7Ci0gICAgfQotCi0gICAgZDNk
MTE6OlNldFBvc2l0aW9uRGVwdGhDb2xvclZlcnRleDxUPih2ZXJ0aWNlcyArIDAsIGxlZnQsICBi
b3R0b20sIGRlcHRoQ2xlYXIsIGNvbG9yKTsKLSAgICBkM2QxMTo6U2V0UG9zaXRpb25EZXB0aENv
bG9yVmVydGV4PFQ+KHZlcnRpY2VzICsgMSwgbGVmdCwgIHRvcCwgICAgZGVwdGhDbGVhciwgY29s
b3IpOwotICAgIGQzZDExOjpTZXRQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXg8VD4odmVydGljZXMg
KyAyLCByaWdodCwgYm90dG9tLCBkZXB0aENsZWFyLCBjb2xvcik7Ci0gICAgZDNkMTE6OlNldFBv
c2l0aW9uRGVwdGhDb2xvclZlcnRleDxUPih2ZXJ0aWNlcyArIDMsIHJpZ2h0LCB0b3AsICAgIGRl
cHRoQ2xlYXIsIGNvbG9yKTsKKyAgICBkM2QxMTo6UG9zaXRpb25EZXB0aENvbG9yVmVydGV4PFQ+
ICp2ZXJ0aWNlcyA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8ZDNkMTE6OlBvc2l0aW9uRGVw
dGhDb2xvclZlcnRleDxUPiAqPihidWZmZXIpOworCisgICAgY29uc3QgZmxvYXQgeiAgICAgID0g
Z2w6OmNsYW1wMDEoZGVwdGgpOworICAgIGNvbnN0IGZsb2F0IGxlZnQgICA9IC0xLjBmOworICAg
IGNvbnN0IGZsb2F0IHJpZ2h0ICA9IDEuMGY7CisgICAgY29uc3QgZmxvYXQgdG9wICAgID0gLTEu
MGY7CisgICAgY29uc3QgZmxvYXQgYm90dG9tID0gMS4wZjsKKworICAgIGQzZDExOjpTZXRQb3Np
dGlvbkRlcHRoQ29sb3JWZXJ0ZXg8VD4odmVydGljZXMgKyAwLCBsZWZ0LCBib3R0b20sIHosIGNv
bG9yKTsKKyAgICBkM2QxMTo6U2V0UG9zaXRpb25EZXB0aENvbG9yVmVydGV4PFQ+KHZlcnRpY2Vz
ICsgMSwgbGVmdCwgdG9wLCB6LCBjb2xvcik7CisgICAgZDNkMTE6OlNldFBvc2l0aW9uRGVwdGhD
b2xvclZlcnRleDxUPih2ZXJ0aWNlcyArIDIsIHJpZ2h0LCBib3R0b20sIHosIGNvbG9yKTsKKyAg
ICBkM2QxMTo6U2V0UG9zaXRpb25EZXB0aENvbG9yVmVydGV4PFQ+KHZlcnRpY2VzICsgMywgcmln
aHQsIHRvcCwgeiwgY29sb3IpOwogfQogCiBDbGVhcjExOjpDbGVhclNoYWRlcjo6Q2xlYXJTaGFk
ZXIoRFhHSV9GT1JNQVQgY29sb3JUeXBlLApAQCAtNzEsMTAgKzY1LDkgQEAgQ2xlYXIxMTo6Q2xl
YXJTaGFkZXI6OkNsZWFyU2hhZGVyKERYR0lfRk9STUFUIGNvbG9yVHlwZSwKICAgICAgIHZlcnRl
eFNoYWRlcih2c0J5dGVDb2RlLCB2c1NpemUsIHZzRGVidWdOYW1lKSwKICAgICAgIHBpeGVsU2hh
ZGVyKHBzQnl0ZUNvZGUsIHBzU2l6ZSwgcHNEZWJ1Z05hbWUpCiB7Ci0gICAgRDNEMTFfSU5QVVRf
RUxFTUVOVF9ERVNDIHF1YWRMYXlvdXRbXSA9Ci0gICAgewotICAgICAgICB7ICJQT1NJVElPTiIs
IDAsIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwgMCwgIDAsIEQzRDExX0lOUFVUX1BFUl9W
RVJURVhfREFUQSwgMCB9LAotICAgICAgICB7ICJDT0xPUiIsICAgIDAsIGNvbG9yVHlwZSwgICAg
ICAgICAgICAgICAgICAgMCwgMTIsIEQzRDExX0lOUFVUX1BFUl9WRVJURVhfREFUQSwgMCB9LAor
ICAgIEQzRDExX0lOUFVUX0VMRU1FTlRfREVTQyBxdWFkTGF5b3V0W10gPSB7CisgICAgICAgIHsi
UE9TSVRJT04iLCAwLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsIDAsIDAsIEQzRDExX0lO
UFVUX1BFUl9WRVJURVhfREFUQSwgMH0sCisgICAgICAgIHsiQ09MT1IiLCAwLCBjb2xvclR5cGUs
IDAsIDEyLCBEM0QxMV9JTlBVVF9QRVJfVkVSVEVYX0RBVEEsIDB9LAogICAgIH07CiAKICAgICBp
bnB1dExheW91dCA9IG5ldyBkM2QxMTo6TGF6eUlucHV0TGF5b3V0KHF1YWRMYXlvdXQsIDIsIHZz
Qnl0ZUNvZGUsIHZzU2l6ZSwgaW5wdXRMYXlvdXROYW1lKTsKQEAgLTg5LDEzICs4Miw5IEBAIENs
ZWFyMTE6OkNsZWFyU2hhZGVyOjp+Q2xlYXJTaGFkZXIoKQogCiBDbGVhcjExOjpDbGVhcjExKFJl
bmRlcmVyMTEgKnJlbmRlcmVyKQogICAgIDogbVJlbmRlcmVyKHJlbmRlcmVyKSwKLSAgICAgIG1D
bGVhckJsZW5kU3RhdGVzKFN0cnVjdExlc3NUaGFuPENsZWFyQmxlbmRJbmZvPiksCiAgICAgICBt
RmxvYXRDbGVhclNoYWRlcihudWxscHRyKSwKICAgICAgIG1VaW50Q2xlYXJTaGFkZXIobnVsbHB0
ciksCi0gICAgICBtSW50Q2xlYXJTaGFkZXIobnVsbHB0ciksCi0gICAgICBtQ2xlYXJEZXB0aFN0
ZW5jaWxTdGF0ZXMoU3RydWN0TGVzc1RoYW48Q2xlYXJEZXB0aFN0ZW5jaWxJbmZvPiksCi0gICAg
ICBtVmVydGV4QnVmZmVyKG51bGxwdHIpLAotICAgICAgbVJhc3Rlcml6ZXJTdGF0ZShudWxscHRy
KQorICAgICAgbUludENsZWFyU2hhZGVyKG51bGxwdHIpCiB7CiAgICAgVFJBQ0VfRVZFTlQwKCJn
cHUuYW5nbGUiLCAiQ2xlYXIxMTo6Q2xlYXIxMSIpOwogCkBAIC0xMDMsMTY4ICs5MiwxOTMgQEAg
Q2xlYXIxMTo6Q2xlYXIxMShSZW5kZXJlcjExICpyZW5kZXJlcikKICAgICBJRDNEMTFEZXZpY2Ug
KmRldmljZSA9IHJlbmRlcmVyLT5nZXREZXZpY2UoKTsKIAogICAgIEQzRDExX0JVRkZFUl9ERVND
IHZiRGVzYzsKLSAgICB2YkRlc2MuQnl0ZVdpZHRoID0gc2l6ZW9mKGQzZDExOjpQb3NpdGlvbkRl
cHRoQ29sb3JWZXJ0ZXg8ZmxvYXQ+KSAqIDQ7Ci0gICAgdmJEZXNjLlVzYWdlID0gRDNEMTFfVVNB
R0VfRFlOQU1JQzsKLSAgICB2YkRlc2MuQmluZEZsYWdzID0gRDNEMTFfQklORF9WRVJURVhfQlVG
RkVSOwotICAgIHZiRGVzYy5DUFVBY2Nlc3NGbGFncyA9IEQzRDExX0NQVV9BQ0NFU1NfV1JJVEU7
Ci0gICAgdmJEZXNjLk1pc2NGbGFncyA9IDA7CisgICAgdmJEZXNjLkJ5dGVXaWR0aCAgICAgICAg
ICAgPSBnX1ZlcnRleFNpemUgKiA0OworICAgIHZiRGVzYy5Vc2FnZSAgICAgICAgICAgICAgID0g
RDNEMTFfVVNBR0VfRFlOQU1JQzsKKyAgICB2YkRlc2MuQmluZEZsYWdzICAgICAgICAgICA9IEQz
RDExX0JJTkRfVkVSVEVYX0JVRkZFUjsKKyAgICB2YkRlc2MuQ1BVQWNjZXNzRmxhZ3MgICAgICA9
IEQzRDExX0NQVV9BQ0NFU1NfV1JJVEU7CisgICAgdmJEZXNjLk1pc2NGbGFncyAgICAgICAgICAg
PSAwOwogICAgIHZiRGVzYy5TdHJ1Y3R1cmVCeXRlU3RyaWRlID0gMDsKIAotICAgIHJlc3VsdCA9
IGRldmljZS0+Q3JlYXRlQnVmZmVyKCZ2YkRlc2MsIG51bGxwdHIsICZtVmVydGV4QnVmZmVyKTsK
KyAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZUJ1ZmZlcigmdmJEZXNjLCBudWxscHRyLCBtVmVy
dGV4QnVmZmVyLkdldEFkZHJlc3NPZigpKTsKICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkp
OwogICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobVZlcnRleEJ1ZmZlciwgIkNsZWFyMTEgbWFza2Vk
IGNsZWFyIHZlcnRleCBidWZmZXIiKTsKIAogICAgIEQzRDExX1JBU1RFUklaRVJfREVTQyByc0Rl
c2M7Ci0gICAgcnNEZXNjLkZpbGxNb2RlID0gRDNEMTFfRklMTF9TT0xJRDsKLSAgICByc0Rlc2Mu
Q3VsbE1vZGUgPSBEM0QxMV9DVUxMX05PTkU7CisgICAgcnNEZXNjLkZpbGxNb2RlICAgICAgICAg
ICAgICA9IEQzRDExX0ZJTExfU09MSUQ7CisgICAgcnNEZXNjLkN1bGxNb2RlICAgICAgICAgICAg
ICA9IEQzRDExX0NVTExfTk9ORTsKICAgICByc0Rlc2MuRnJvbnRDb3VudGVyQ2xvY2t3aXNlID0g
RkFMU0U7Ci0gICAgcnNEZXNjLkRlcHRoQmlhcyA9IDA7Ci0gICAgcnNEZXNjLkRlcHRoQmlhc0Ns
YW1wID0gMC4wZjsKLSAgICByc0Rlc2MuU2xvcGVTY2FsZWREZXB0aEJpYXMgPSAwLjBmOwotICAg
IHJzRGVzYy5EZXB0aENsaXBFbmFibGUgPSBUUlVFOwotICAgIHJzRGVzYy5TY2lzc29yRW5hYmxl
ID0gRkFMU0U7Ci0gICAgcnNEZXNjLk11bHRpc2FtcGxlRW5hYmxlID0gRkFMU0U7CisgICAgcnNE
ZXNjLkRlcHRoQmlhcyAgICAgICAgICAgICA9IDA7CisgICAgcnNEZXNjLkRlcHRoQmlhc0NsYW1w
ICAgICAgICA9IDAuMGY7CisgICAgcnNEZXNjLlNsb3BlU2NhbGVkRGVwdGhCaWFzICA9IDAuMGY7
CisgICAgcnNEZXNjLkRlcHRoQ2xpcEVuYWJsZSAgICAgICA9IFRSVUU7CisgICAgcnNEZXNjLlNj
aXNzb3JFbmFibGUgICAgICAgICA9IEZBTFNFOworICAgIHJzRGVzYy5NdWx0aXNhbXBsZUVuYWJs
ZSAgICAgPSBGQUxTRTsKICAgICByc0Rlc2MuQW50aWFsaWFzZWRMaW5lRW5hYmxlID0gRkFMU0U7
CiAKLSAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVJhc3Rlcml6ZXJTdGF0ZSgmcnNEZXNjLCAm
bVJhc3Rlcml6ZXJTdGF0ZSk7CisgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVSYXN0ZXJpemVy
U3RhdGUoJnJzRGVzYywgbVNjaXNzb3JEaXNhYmxlZFJhc3Rlcml6ZXJTdGF0ZS5HZXRBZGRyZXNz
T2YoKSk7CiAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKLSAgICBkM2QxMTo6U2V0RGVi
dWdOYW1lKG1SYXN0ZXJpemVyU3RhdGUsICJDbGVhcjExIG1hc2tlZCBjbGVhciByYXN0ZXJpemVy
IHN0YXRlIik7CisgICAgZDNkMTE6OlNldERlYnVnTmFtZShtU2Npc3NvckRpc2FibGVkUmFzdGVy
aXplclN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgIkNsZWFyMTEgUmFzdGVyaXplciBT
dGF0ZSB3aXRoIHNjaXNzb3IgZGlzYWJsZWQiKTsKKworICAgIHJzRGVzYy5TY2lzc29yRW5hYmxl
ID0gVFJVRTsKKyAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVJhc3Rlcml6ZXJTdGF0ZSgmcnNE
ZXNjLCBtU2Npc3NvckVuYWJsZWRSYXN0ZXJpemVyU3RhdGUuR2V0QWRkcmVzc09mKCkpOworICAg
IEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgZDNkMTE6OlNldERlYnVnTmFtZShtU2Np
c3NvckVuYWJsZWRSYXN0ZXJpemVyU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2xl
YXIxMSBSYXN0ZXJpemVyIFN0YXRlIHdpdGggc2Npc3NvciBlbmFibGVkIik7CiAKICAgICBpZiAo
bVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpLmZlYXR1cmVMZXZlbCA8PSBEM0Rf
RkVBVFVSRV9MRVZFTF85XzMpCiAgICAgewotICAgICAgICBtRmxvYXRDbGVhclNoYWRlciA9IG5l
dyBDbGVhclNoYWRlcihEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDbGVhcjExIEZsb2F0IElMIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19WU19DbGVhckZsb2F0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVNpemUo
Z19WU19DbGVhckZsb2F0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkNsZWFyMTEgRmxvYXQgVlMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnX1BTX0NsZWFyRmxvYXRfRkw5LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBBcnJheVNpemUoZ19QU19DbGVhckZsb2F0X0ZMOSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDbGVhcjExIEZsb2F0
IFBTIik7CisgICAgICAgIG1GbG9hdENsZWFyU2hhZGVyID0KKyAgICAgICAgICAgIG5ldyBDbGVh
clNoYWRlcihEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsICJDbGVhcjExIEZsb2F0IElM
IiwgZ19WU19DbGVhckZsb2F0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5U2l6
ZShnX1ZTX0NsZWFyRmxvYXQpLCAiQ2xlYXIxMSBGbG9hdCBWUyIsIGdfUFNfQ2xlYXJGbG9hdF9G
TDksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlTaXplKGdfUFNfQ2xlYXJGbG9h
dF9GTDkpLCAiQ2xlYXIxMSBGbG9hdCBQUyIpOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAg
ICAgICBtRmxvYXRDbGVhclNoYWRlciA9IG5ldyBDbGVhclNoYWRlcihEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJDbGVhcjExIEZsb2F0IElMIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ19WU19DbGVhckZsb2F0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBBcnJheVNpemUoZ19WU19DbGVhckZsb2F0KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNsZWFyMTEgRmxvYXQgVlMiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX1BTX0NsZWFyRmxvYXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFycmF5U2l6ZShn
X1BTX0NsZWFyRmxvYXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiQ2xlYXIxMSBGbG9hdCBQUyIpOworICAgICAgICBtRmxvYXRDbGVhclNoYWRlciA9Cisg
ICAgICAgICAgICBuZXcgQ2xlYXJTaGFkZXIoRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FU
LCAiQ2xlYXIxMSBGbG9hdCBJTCIsIGdfVlNfQ2xlYXJGbG9hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBBcnJheVNpemUoZ19WU19DbGVhckZsb2F0KSwgIkNsZWFyMTEgRmxvYXQgVlMi
LCBnX1BTX0NsZWFyRmxvYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlTaXpl
KGdfUFNfQ2xlYXJGbG9hdCksICJDbGVhcjExIEZsb2F0IFBTIik7CiAgICAgfQogCiAgICAgaWYg
KHJlbmRlcmVyLT5pc0VTM0NhcGFibGUoKSkKICAgICB7Ci0gICAgICAgIG1VaW50Q2xlYXJTaGFk
ZXIgPSBuZXcgQ2xlYXJTaGFkZXIoRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNsZWFyMTEgVUlOVCBJTCIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19WU19DbGVhclVp
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlTaXpl
KGdfVlNfQ2xlYXJVaW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiQ2xlYXIxMSBVSU5UIFZTIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnX1BTX0NsZWFyVWludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBBcnJheVNpemUoZ19QU19DbGVhclVpbnQpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDbGVhcjExIFVJTlQgUFMiKTsKLSAgICAgICAg
bUludENsZWFyU2hhZGVyID0gbmV3IENsZWFyU2hhZGVyKERYR0lfRk9STUFUX1IzMkczMkIzMkEz
Ml9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNsZWFy
MTEgU0lOVCBJTCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
X1ZTX0NsZWFyU2ludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFycmF5U2l6ZShnX1ZTX0NsZWFyU2ludCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiQ2xlYXIxMSBTSU5UIFZTIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfUFNfQ2xlYXJTaW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQXJyYXlTaXplKGdfUFNfQ2xlYXJTaW50KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDbGVhcjExIFNJTlQgUFMiKTsKKyAg
ICAgICAgbVVpbnRDbGVhclNoYWRlciA9CisgICAgICAgICAgICBuZXcgQ2xlYXJTaGFkZXIoRFhH
SV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsICJDbGVhcjExIFVJTlQgSUwiLCBnX1ZTX0NsZWFy
VWludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcnJheVNpemUoZ19WU19DbGVhclVp
bnQpLCAiQ2xlYXIxMSBVSU5UIFZTIiwgZ19QU19DbGVhclVpbnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQXJyYXlTaXplKGdfUFNfQ2xlYXJVaW50KSwgIkNsZWFyMTEgVUlOVCBQUyIp
OworICAgICAgICBtSW50Q2xlYXJTaGFkZXIgPQorICAgICAgICAgICAgbmV3IENsZWFyU2hhZGVy
KERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULCAiQ2xlYXIxMSBTSU5UIElMIiwgZ19WU19D
bGVhclNpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJyYXlTaXplKGdfVlNfQ2xl
YXJTaW50KSwgIkNsZWFyMTEgU0lOVCBWUyIsIGdfUFNfQ2xlYXJTaW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFycmF5U2l6ZShnX1BTX0NsZWFyU2ludCksICJDbGVhcjExIFNJTlQg
UFMiKTsKICAgICB9CisKKyAgICAvLyBJbml0aWFsaXplIERlcHRoc3RlbmNpbFN0YXRlS2V5IHdp
dGggZGVmYXVsdHMKKyAgICBtRGVwdGhTdGVuY2lsU3RhdGVLZXkuZGVwdGhUZXN0ICAgICAgICAg
ICAgICAgID0gZmFsc2U7CisgICAgbURlcHRoU3RlbmNpbFN0YXRlS2V5LmRlcHRoTWFzayAgICAg
ICAgICAgICAgICA9IGZhbHNlOworICAgIG1EZXB0aFN0ZW5jaWxTdGF0ZUtleS5kZXB0aEZ1bmMg
ICAgICAgICAgICAgICAgPSBHTF9BTFdBWVM7CisgICAgbURlcHRoU3RlbmNpbFN0YXRlS2V5LnN0
ZW5jaWxXcml0ZW1hc2sgICAgICAgICA9IHN0YXRpY19jYXN0PEdMdWludD4oLTEpOworICAgIG1E
ZXB0aFN0ZW5jaWxTdGF0ZUtleS5zdGVuY2lsQmFja1dyaXRlbWFzayAgICAgPSBzdGF0aWNfY2Fz
dDxHTHVpbnQ+KC0xKTsKKyAgICBtRGVwdGhTdGVuY2lsU3RhdGVLZXkuc3RlbmNpbEJhY2tNYXNr
ICAgICAgICAgID0gc3RhdGljX2Nhc3Q8R0x1aW50PigtMSk7CisgICAgbURlcHRoU3RlbmNpbFN0
YXRlS2V5LnN0ZW5jaWxUZXN0ICAgICAgICAgICAgICA9IGZhbHNlOworICAgIG1EZXB0aFN0ZW5j
aWxTdGF0ZUtleS5zdGVuY2lsTWFzayAgICAgICAgICAgICAgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+
KC0xKTsKKyAgICBtRGVwdGhTdGVuY2lsU3RhdGVLZXkuc3RlbmNpbEZhaWwgICAgICAgICAgICAg
ID0gR0xfUkVQTEFDRTsKKyAgICBtRGVwdGhTdGVuY2lsU3RhdGVLZXkuc3RlbmNpbFBhc3NEZXB0
aEZhaWwgICAgID0gR0xfUkVQTEFDRTsKKyAgICBtRGVwdGhTdGVuY2lsU3RhdGVLZXkuc3RlbmNp
bFBhc3NEZXB0aFBhc3MgICAgID0gR0xfUkVQTEFDRTsKKyAgICBtRGVwdGhTdGVuY2lsU3RhdGVL
ZXkuc3RlbmNpbEZ1bmMgICAgICAgICAgICAgID0gR0xfQUxXQVlTOworICAgIG1EZXB0aFN0ZW5j
aWxTdGF0ZUtleS5zdGVuY2lsQmFja0ZhaWwgICAgICAgICAgPSBHTF9SRVBMQUNFOworICAgIG1E
ZXB0aFN0ZW5jaWxTdGF0ZUtleS5zdGVuY2lsQmFja1Bhc3NEZXB0aEZhaWwgPSBHTF9SRVBMQUNF
OworICAgIG1EZXB0aFN0ZW5jaWxTdGF0ZUtleS5zdGVuY2lsQmFja1Bhc3NEZXB0aFBhc3MgPSBH
TF9SRVBMQUNFOworICAgIG1EZXB0aFN0ZW5jaWxTdGF0ZUtleS5zdGVuY2lsQmFja0Z1bmMgICAg
ICAgICAgPSBHTF9BTFdBWVM7CisKKyAgICAvLyBJbml0aWFsaXplIEJsZW5kU3RhdGVLZXkgd2l0
aCBkZWZhdWx0cworICAgIG1CbGVuZFN0YXRlS2V5LmJsZW5kU3RhdGUuYmxlbmQgICAgICAgICAg
ICAgICAgID0gZmFsc2U7CisgICAgbUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZS5zb3VyY2VCbGVu
ZFJHQiAgICAgICAgPSBHTF9PTkU7CisgICAgbUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZS5zb3Vy
Y2VCbGVuZEFscGhhICAgICAgPSBHTF9PTkU7CisgICAgbUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0
ZS5kZXN0QmxlbmRSR0IgICAgICAgICAgPSBHTF9aRVJPOworICAgIG1CbGVuZFN0YXRlS2V5LmJs
ZW5kU3RhdGUuZGVzdEJsZW5kQWxwaGEgICAgICAgID0gR0xfWkVSTzsKKyAgICBtQmxlbmRTdGF0
ZUtleS5ibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25SR0IgICAgICA9IEdMX0ZVTkNfQUREOworICAg
IG1CbGVuZFN0YXRlS2V5LmJsZW5kU3RhdGUuYmxlbmRFcXVhdGlvbkFscGhhICAgID0gR0xfRlVO
Q19BREQ7CisgICAgbUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZS5zYW1wbGVBbHBoYVRvQ292ZXJh
Z2UgPSBmYWxzZTsKKyAgICBtQmxlbmRTdGF0ZUtleS5ibGVuZFN0YXRlLmRpdGhlciAgICAgICAg
ICAgICAgICA9IHRydWU7CisgICAgbUJsZW5kU3RhdGVLZXkubXJ0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPSBmYWxzZTsKKyAgICBtZW1zZXQobUJsZW5kU3RhdGVLZXkucnR2TWFza3Ms
IDAsIHNpemVvZihtQmxlbmRTdGF0ZUtleS5ydHZNYXNrcykpOwogfQogCiBDbGVhcjExOjp+Q2xl
YXIxMSgpCiB7Ci0gICAgZm9yIChDbGVhckJsZW5kU3RhdGVNYXA6Oml0ZXJhdG9yIGkgPSBtQ2xl
YXJCbGVuZFN0YXRlcy5iZWdpbigpOyBpICE9IG1DbGVhckJsZW5kU3RhdGVzLmVuZCgpOyBpKysp
Ci0gICAgewotICAgICAgICBTYWZlUmVsZWFzZShpLT5zZWNvbmQpOwotICAgIH0KLSAgICBtQ2xl
YXJCbGVuZFN0YXRlcy5jbGVhcigpOwotCiAgICAgU2FmZURlbGV0ZShtRmxvYXRDbGVhclNoYWRl
cik7CiAgICAgU2FmZURlbGV0ZShtVWludENsZWFyU2hhZGVyKTsKICAgICBTYWZlRGVsZXRlKG1J
bnRDbGVhclNoYWRlcik7Ci0KLSAgICBmb3IgKENsZWFyRGVwdGhTdGVuY2lsU3RhdGVNYXA6Oml0
ZXJhdG9yIGkgPSBtQ2xlYXJEZXB0aFN0ZW5jaWxTdGF0ZXMuYmVnaW4oKTsgaSAhPSBtQ2xlYXJE
ZXB0aFN0ZW5jaWxTdGF0ZXMuZW5kKCk7IGkrKykKLSAgICB7Ci0gICAgICAgIFNhZmVSZWxlYXNl
KGktPnNlY29uZCk7Ci0gICAgfQotICAgIG1DbGVhckRlcHRoU3RlbmNpbFN0YXRlcy5jbGVhcigp
OwotCi0gICAgU2FmZVJlbGVhc2UobVZlcnRleEJ1ZmZlcik7Ci0gICAgU2FmZVJlbGVhc2UobVJh
c3Rlcml6ZXJTdGF0ZSk7CiB9CiAKIGdsOjpFcnJvciBDbGVhcjExOjpjbGVhckZyYW1lYnVmZmVy
KGNvbnN0IENsZWFyUGFyYW1ldGVycyAmY2xlYXJQYXJhbXMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZmJvRGF0YSkKIHsK
LSAgICBjb25zdCBhdXRvICZjb2xvckF0dGFjaG1lbnRzID0gZmJvRGF0YS5nZXRDb2xvckF0dGFj
aG1lbnRzKCk7Ci0gICAgY29uc3QgYXV0byAmZHJhd0J1ZmZlclN0YXRlcyA9IGZib0RhdGEuZ2V0
RHJhd0J1ZmZlclN0YXRlcygpOwotICAgIGNvbnN0IGF1dG8gKmRlcHRoQXR0YWNobWVudCA9IGZi
b0RhdGEuZ2V0RGVwdGhBdHRhY2htZW50KCk7Ci0gICAgY29uc3QgYXV0byAqc3RlbmNpbEF0dGFj
aG1lbnQgPSBmYm9EYXRhLmdldFN0ZW5jaWxBdHRhY2htZW50KCk7CisgICAgY29uc3QgYXV0byAm
Y29sb3JBdHRhY2htZW50cyAgPSBmYm9EYXRhLmdldENvbG9yQXR0YWNobWVudHMoKTsKKyAgICBj
b25zdCBhdXRvICZkcmF3QnVmZmVyU3RhdGVzICA9IGZib0RhdGEuZ2V0RHJhd0J1ZmZlclN0YXRl
cygpOworICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmRlcHRoU3RlbmNpbEF0
dGFjaG1lbnQgPSBmYm9EYXRhLmdldERlcHRoT3JTdGVuY2lsQXR0YWNobWVudCgpOworICAgIFJl
bmRlclRhcmdldDExICpkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQgICAgICAgICAgICAgICAgPSBu
dWxscHRyOworCisgICAgQVNTRVJUKGNvbG9yQXR0YWNobWVudHMuc2l6ZSgpIDw9IGRyYXdCdWZm
ZXJTdGF0ZXMuc2l6ZSgpKTsKIAotICAgIEFTU0VSVChjb2xvckF0dGFjaG1lbnRzLnNpemUoKSA9
PSBkcmF3QnVmZmVyU3RhdGVzLnNpemUoKSk7CisgICAgaWYgKGNsZWFyUGFyYW1zLmNsZWFyRGVw
dGggfHwgY2xlYXJQYXJhbXMuY2xlYXJTdGVuY2lsKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGRl
cHRoU3RlbmNpbEF0dGFjaG1lbnQgIT0gbnVsbHB0cik7CisgICAgICAgIEFOR0xFX1RSWShkZXB0
aFN0ZW5jaWxBdHRhY2htZW50LT5nZXRSZW5kZXJUYXJnZXQoJmRlcHRoU3RlbmNpbFJlbmRlclRh
cmdldCkpOworICAgIH0KIAogICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgY29sb3IgYnVmZmVycyB3
aGljaCByZXF1aXJlIGNsZWFyaW5nIGFuZCBkZXRlcm1pbmUgaWYgdGhleSBjYW4gYmUKICAgICAv
LyBjbGVhcmVkIHdpdGggSUQzRDExRGV2aWNlQ29udGV4dDo6Q2xlYXJSZW5kZXJUYXJnZXRWaWV3
IG9yIElEM0QxMURldmljZUNvbnRleHQxOjpDbGVhclZpZXcuCiAgICAgLy8gVGhpcyByZXF1aXJl
czoKLSAgICAvLyAxKSBUaGUgcmVuZGVyIHRhcmdldCBpcyBiZWluZyBjbGVhcmVkIHRvIGEgZmxv
YXQgdmFsdWUgKHdpbGwgYmUgY2FzdCB0byBpbnRlZ2VyIHdoZW4gY2xlYXJpbmcgaW50ZWdlcgot
ICAgIC8vICAgIHJlbmRlciB0YXJnZXRzIGFzIGV4cGVjdGVkIGJ1dCBkb2VzIG5vdCB3b3JrIHRo
ZSBvdGhlciB3YXkgYXJvdW5kKQorICAgIC8vIDEpIFRoZSByZW5kZXIgdGFyZ2V0IGlzIGJlaW5n
IGNsZWFyZWQgdG8gYSBmbG9hdCB2YWx1ZSAod2lsbCBiZSBjYXN0IHRvIGludGVnZXIgd2hlbiBj
bGVhcmluZworICAgIC8vIGludGVnZXIgcmVuZGVyIHRhcmdldHMgYXMgZXhwZWN0ZWQgYnV0IGRv
ZXMgbm90IHdvcmsgdGhlIG90aGVyIHdheSBhcm91bmQpCiAgICAgLy8gMikgVGhlIGZvcm1hdCBv
ZiB0aGUgcmVuZGVyIHRhcmdldCBoYXMgbm8gY29sb3IgY2hhbm5lbHMgdGhhdCBhcmUgY3VycmVu
dGx5IG1hc2tlZCBvdXQuCi0gICAgLy8gQ2xlYXIgdGhlIGVhc3ktdG8tY2xlYXIgYnVmZmVycyBv
biB0aGUgc3BvdCBhbmQgYWNjdW11bGF0ZSB0aGUgb25lcyB0aGF0IHJlcXVpcmUgc3BlY2lhbCB3
b3JrLgorICAgIC8vIENsZWFyIHRoZSBlYXN5LXRvLWNsZWFyIGJ1ZmZlcnMgb24gdGhlIHNwb3Qg
YW5kIGFjY3VtdWxhdGUgdGhlIG9uZXMgdGhhdCByZXF1aXJlIHNwZWNpYWwKKyAgICAvLyB3b3Jr
LgogICAgIC8vCiAgICAgLy8gSWYgdGhlc2UgY29uZGl0aW9ucyBhcmUgbWV0LCBhbmQ6CiAgICAg
Ly8gLSBObyBzY2lzc29yZWQgY2xlYXIgaXMgbmVlZGVkLCB0aGVuIGNsZWFyIHVzaW5nIElEM0Qx
MURldmljZUNvbnRleHQ6OkNsZWFyUmVuZGVyVGFyZ2V0Vmlldy4KICAgICAvLyAtIEEgc2Npc3Nv
cmVkIGNsZWFyIGlzIG5lZWRlZCB0aGVuIGNsZWFyIHVzaW5nIElEM0QxMURldmljZUNvbnRleHQx
OjpDbGVhclZpZXcgaWYgYXZhaWxhYmxlLgogICAgIC8vICAgT3RoZXJ3aXNlIGRyYXcgYSBxdWFk
LgogICAgIC8vCi0gICAgLy8gQWxzbyBkZXRlcm1pbmUgaWYgdGhlIGRlcHRoIHN0ZW5jaWwgY2Fu
IGJlIGNsZWFyZWQgd2l0aCBJRDNEMTFEZXZpY2VDb250ZXh0OjpDbGVhckRlcHRoU3RlbmNpbFZp
ZXcKKyAgICAvLyBBbHNvIGRldGVybWluZSBpZiB0aGUgZGVwdGggc3RlbmNpbCBjYW4gYmUgY2xl
YXJlZCB3aXRoCisgICAgLy8gSUQzRDExRGV2aWNlQ29udGV4dDo6Q2xlYXJEZXB0aFN0ZW5jaWxW
aWV3CiAgICAgLy8gYnkgY2hlY2tpbmcgaWYgdGhlIHN0ZW5jaWwgd3JpdGUgbWFzayBjb3ZlcnMg
dGhlIGVudGlyZSBzdGVuY2lsLgogICAgIC8vCi0gICAgLy8gVG8gY2xlYXIgdGhlIHJlbWFpbmlu
ZyBidWZmZXJzLCBxdWFkcyBtdXN0IGJlIGRyYXduIGNvbnRhaW5pbmcgYW4gaW50LCB1aW50IG9y
IGZsb2F0IHZlcnRleCBjb2xvcgorICAgIC8vIFRvIGNsZWFyIHRoZSByZW1haW5pbmcgYnVmZmVy
cywgcXVhZHMgbXVzdCBiZSBkcmF3biBjb250YWluaW5nIGFuIGludCwgdWludCBvciBmbG9hdCB2
ZXJ0ZXgKKyAgICAvLyBjb2xvcgogICAgIC8vIGF0dHJpYnV0ZS4KIAogICAgIGdsOjpFeHRlbnRz
IGZyYW1lYnVmZmVyU2l6ZTsKIAotICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQg
KmNvbG9yQXR0YWNobWVudCA9IGZib0RhdGEuZ2V0Rmlyc3RDb2xvckF0dGFjaG1lbnQoKTsKLSAg
ICBpZiAoY29sb3JBdHRhY2htZW50ICE9IG51bGxwdHIpCisgICAgaWYgKGRlcHRoU3RlbmNpbFJl
bmRlclRhcmdldCAhPSBudWxscHRyKQogICAgIHsKLSAgICAgICAgZnJhbWVidWZmZXJTaXplID0g
Y29sb3JBdHRhY2htZW50LT5nZXRTaXplKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGRlcHRoQXR0
YWNobWVudCAhPSBudWxscHRyKQotICAgIHsKLSAgICAgICAgZnJhbWVidWZmZXJTaXplID0gZGVw
dGhBdHRhY2htZW50LT5nZXRTaXplKCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKHN0ZW5jaWxBdHRh
Y2htZW50ICE9IG51bGxwdHIpCi0gICAgewotICAgICAgICBmcmFtZWJ1ZmZlclNpemUgPSBzdGVu
Y2lsQXR0YWNobWVudC0+Z2V0U2l6ZSgpOworICAgICAgICBmcmFtZWJ1ZmZlclNpemUgPSBkZXB0
aFN0ZW5jaWxSZW5kZXJUYXJnZXQtPmdldEV4dGVudHMoKTsKICAgICB9CiAgICAgZWxzZQogICAg
IHsKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7Ci0gICAgfQorICAgICAgICBjb25zdCBhdXRvIGNvbG9yQXR0YWNo
bWVudCA9IGZib0RhdGEuZ2V0Rmlyc3RDb2xvckF0dGFjaG1lbnQoKTsKIAotICAgIGlmIChjbGVh
clBhcmFtcy5zY2lzc29yRW5hYmxlZCAmJiAoY2xlYXJQYXJhbXMuc2Npc3Nvci54ID49IGZyYW1l
YnVmZmVyU2l6ZS53aWR0aCB8fCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsZWFyUGFyYW1zLnNjaXNzb3IueSA+PSBmcmFtZWJ1ZmZlclNpemUuaGVpZ2h0IHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBhcmFtcy5zY2lzc29y
LnggKyBjbGVhclBhcmFtcy5zY2lzc29yLndpZHRoIDw9IDAgfHwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsZWFyUGFyYW1zLnNjaXNzb3IueSArIGNsZWFyUGFyYW1z
LnNjaXNzb3IuaGVpZ2h0IDw9IDApKQotICAgIHsKLSAgICAgICAgLy8gU2Npc3NvciBpcyBlbmFi
bGVkIGFuZCB0aGUgc2Npc3NvciByZWN0YW5nbGUgaXMgb3V0c2lkZSB0aGUgcmVuZGVyYnVmZmVy
Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICBpZiAoIWNv
bG9yQXR0YWNobWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBnbDo6SW50ZXJuYWxFcnJvcigpOworICAgICAgICB9CisKKyAgICAg
ICAgZnJhbWVidWZmZXJTaXplID0gY29sb3JBdHRhY2htZW50LT5nZXRTaXplKCk7CiAgICAgfQog
Ci0gICAgYm9vbCBuZWVkU2Npc3NvcmVkQ2xlYXIgPSBjbGVhclBhcmFtcy5zY2lzc29yRW5hYmxl
ZCAmJiAoY2xlYXJQYXJhbXMuc2Npc3Nvci54ID4gMCB8fCBjbGVhclBhcmFtcy5zY2lzc29yLnkg
PiAwIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2xlYXJQYXJhbXMuc2Npc3Nvci54ICsgY2xlYXJQYXJhbXMuc2Npc3Nvci53
aWR0aCA8IGZyYW1lYnVmZmVyU2l6ZS53aWR0aCB8fAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyUGFyYW1zLnNjaXNzb3Iu
eSArIGNsZWFyUGFyYW1zLnNjaXNzb3IuaGVpZ2h0IDwgZnJhbWVidWZmZXJTaXplLmhlaWdodCk7
CisgICAgYm9vbCBuZWVkU2Npc3NvcmVkQ2xlYXIgPSBmYWxzZTsKKworICAgIGlmIChjbGVhclBh
cmFtcy5zY2lzc29yRW5hYmxlZCkKKyAgICB7CisgICAgICAgIGlmIChjbGVhclBhcmFtcy5zY2lz
c29yLnggPj0gZnJhbWVidWZmZXJTaXplLndpZHRoIHx8CisgICAgICAgICAgICBjbGVhclBhcmFt
cy5zY2lzc29yLnkgPj0gZnJhbWVidWZmZXJTaXplLmhlaWdodCB8fAorICAgICAgICAgICAgY2xl
YXJQYXJhbXMuc2Npc3Nvci54ICsgY2xlYXJQYXJhbXMuc2Npc3Nvci53aWR0aCA8PSAwIHx8Cisg
ICAgICAgICAgICBjbGVhclBhcmFtcy5zY2lzc29yLnkgKyBjbGVhclBhcmFtcy5zY2lzc29yLmhl
aWdodCA8PSAwIHx8CisgICAgICAgICAgICBjbGVhclBhcmFtcy5zY2lzc29yLndpZHRoID09IDAg
fHwgY2xlYXJQYXJhbXMuc2Npc3Nvci5oZWlnaHQgPT0gMCkKKyAgICAgICAgeworICAgICAgICAg
ICAgLy8gU2Npc3NvciByZWN0IGlzIG91dHNpZGUgdGhlIHJlbmRlcmJ1ZmZlciBvciBpcyBhbiBl
bXB0eSByZWN0CisgICAgICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICAgICAgfQog
Ci0gICAgc3RkOjp2ZWN0b3I8TWFza2VkUmVuZGVyVGFyZ2V0PiBtYXNrZWRDbGVhclJlbmRlclRh
cmdldHM7Ci0gICAgUmVuZGVyVGFyZ2V0MTEqIG1hc2tlZENsZWFyRGVwdGhTdGVuY2lsID0gbnVs
bHB0cjsKKyAgICAgICAgbmVlZFNjaXNzb3JlZENsZWFyID0KKyAgICAgICAgICAgIGNsZWFyUGFy
YW1zLnNjaXNzb3IueCA+IDAgfHwgY2xlYXJQYXJhbXMuc2Npc3Nvci55ID4gMCB8fAorICAgICAg
ICAgICAgY2xlYXJQYXJhbXMuc2Npc3Nvci54ICsgY2xlYXJQYXJhbXMuc2Npc3Nvci53aWR0aCA8
IGZyYW1lYnVmZmVyU2l6ZS53aWR0aCB8fAorICAgICAgICAgICAgY2xlYXJQYXJhbXMuc2Npc3Nv
ci55ICsgY2xlYXJQYXJhbXMuc2Npc3Nvci5oZWlnaHQgPCBmcmFtZWJ1ZmZlclNpemUuaGVpZ2h0
OworICAgIH0KIAotICAgIElEM0QxMURldmljZUNvbnRleHQgKmRldmljZUNvbnRleHQgPSBtUmVu
ZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKKyAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZp
Y2VDb250ZXh0ICAgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKTsKICAgICBJRDNEMTFE
ZXZpY2VDb250ZXh0MSAqZGV2aWNlQ29udGV4dDEgPSBtUmVuZGVyZXItPmdldERldmljZUNvbnRl
eHQxSWZTdXBwb3J0ZWQoKTsKLSAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+
Z2V0RGV2aWNlKCk7CisKKyAgICBzdGQ6OmFycmF5PElEM0QxMVJlbmRlclRhcmdldFZpZXcgKiwg
RDNEMTFfU0lNVUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09VTlQ+IHJ0dnM7CisgICAgc3RkOjph
cnJheTx1aW50OF90LCBEM0QxMV9TSU1VTFRBTkVPVVNfUkVOREVSX1RBUkdFVF9DT1VOVD4gcnR2
TWFza3M7CisgICAgSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZHN2ID0gbnVsbHB0cjsKKyAgICB1
aW50MzJfdCBudW1SdHZzICAgICAgICAgICAgPSAwOworICAgIGNvbnN0IHVpbnQ4X3QgY29sb3JN
YXNrID0KKyAgICAgICAgZ2xfZDNkMTE6OkNvbnZlcnRDb2xvck1hc2soY2xlYXJQYXJhbXMuY29s
b3JNYXNrUmVkLCBjbGVhclBhcmFtcy5jb2xvck1hc2tHcmVlbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2xlYXJQYXJhbXMuY29sb3JNYXNrQmx1ZSwgY2xlYXJQYXJhbXMu
Y29sb3JNYXNrQWxwaGEpOwogCiAgICAgZm9yIChzaXplX3QgY29sb3JBdHRhY2htZW50SW5kZXgg
PSAwOyBjb2xvckF0dGFjaG1lbnRJbmRleCA8IGNvbG9yQXR0YWNobWVudHMuc2l6ZSgpOwogICAg
ICAgICAgY29sb3JBdHRhY2htZW50SW5kZXgrKykKQEAgLTI4NCwxMSArMjk4LDExIEBAIGdsOjpF
cnJvciBDbGVhcjExOjpjbGVhckZyYW1lYnVmZmVyKGNvbnN0IENsZWFyUGFyYW1ldGVycyAmY2xl
YXJQYXJhbXMsCiAgICAgICAgICAgICAgICAgICBmb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0g
R0xfVU5TSUdORURfTk9STUFMSVpFRCB8fAogICAgICAgICAgICAgICAgICAgZm9ybWF0SW5mby5j
b21wb25lbnRUeXBlID09IEdMX1NJR05FRF9OT1JNQUxJWkVEKSkKICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBFUlIoIkl0IGlzIHVuZGVmaW5lZCBiZWhhdmlvdXIgdG8gY2xlYXIgYSBy
ZW5kZXIgYnVmZmVyIHdoaWNoIGlzIG5vdCBub3JtYWxpemVkICIKLSAgICAgICAgICAgICAgICAg
ICAgImZpeGVkIHBvaW50IG9yIGZsb2F0aW5nLSIKLSAgICAgICAgICAgICAgICAgICAgInBvaW50
IHRvIGZsb2F0aW5nIHBvaW50IHZhbHVlcyAoY29sb3IgYXR0YWNobWVudCAldSBoYXMgaW50ZXJu
YWwgZm9ybWF0ICIKLSAgICAgICAgICAgICAgICAgICAgIjB4JVgpLiIsCi0gICAgICAgICAgICAg
ICAgICAgIGNvbG9yQXR0YWNobWVudEluZGV4LCBhdHRhY2htZW50LmdldEZvcm1hdCgpLmFzU2l6
ZWQoKSk7CisgICAgICAgICAgICAgICAgRVJSKCkgPDwgIkl0IGlzIHVuZGVmaW5lZCBiZWhhdmlv
dXIgdG8gY2xlYXIgYSByZW5kZXIgYnVmZmVyIHdoaWNoIGlzIG5vdCAiCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIm5vcm1hbGl6ZWQgZml4ZWQgcG9pbnQgb3IgZmxvYXRpbmctcG9pbnQgdG8g
ZmxvYXRpbmcgcG9pbnQgdmFsdWVzIChjb2xvciAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ImF0dGFjaG1lbnQgIgorICAgICAgICAgICAgICAgICAgICAgIDw8IGNvbG9yQXR0YWNobWVudElu
ZGV4IDw8ICIgaGFzIGludGVybmFsIGZvcm1hdCAiIDw8IGF0dGFjaG1lbnQuZ2V0Rm9ybWF0KCkK
KyAgICAgICAgICAgICAgICAgICAgICA8PCAiKS4iOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBpZiAoKGZvcm1hdEluZm8ucmVkQml0cyA9PSAwIHx8ICFjbGVhclBhcmFtcy5jb2xvck1h
c2tSZWQpICYmCkBAIC0yOTksMzggKzMxMywzNCBAQCBnbDo6RXJyb3IgQ2xlYXIxMTo6Y2xlYXJG
cmFtZWJ1ZmZlcihjb25zdCBDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zLAogICAgICAgICAg
ICAgICAgIC8vIEV2ZXJ5IGNoYW5uZWwgZWl0aGVyIGRvZXMgbm90IGV4aXN0IGluIHRoZSByZW5k
ZXIgdGFyZ2V0IG9yIGlzIG1hc2tlZCBvdXQKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKCghKG1SZW5kZXJlci0+Z2V0UmVuZGVy
ZXIxMURldmljZUNhcHMoKS5zdXBwb3J0c0NsZWFyVmlldykgJiYKLSAgICAgICAgICAgICAgICAg
ICAgICBuZWVkU2Npc3NvcmVkQ2xlYXIpIHx8Ci0gICAgICAgICAgICAgICAgICAgICBjbGVhclBh
cmFtcy5jb2xvckNsZWFyVHlwZSAhPSBHTF9GTE9BVCB8fAotICAgICAgICAgICAgICAgICAgICAg
KGZvcm1hdEluZm8ucmVkQml0cyA+IDAgJiYgIWNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZCkgfHwK
LSAgICAgICAgICAgICAgICAgICAgIChmb3JtYXRJbmZvLmdyZWVuQml0cyA+IDAgJiYgIWNsZWFy
UGFyYW1zLmNvbG9yTWFza0dyZWVuKSB8fAotICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdElu
Zm8uYmx1ZUJpdHMgPiAwICYmICFjbGVhclBhcmFtcy5jb2xvck1hc2tCbHVlKSB8fAotICAgICAg
ICAgICAgICAgICAgICAgKGZvcm1hdEluZm8uYWxwaGFCaXRzID4gMCAmJiAhY2xlYXJQYXJhbXMu
Y29sb3JNYXNrQWxwaGEpKQorCisgICAgICAgICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpm
cmFtZWJ1ZmZlclJUViA9IHJlbmRlclRhcmdldC0+Z2V0UmVuZGVyVGFyZ2V0VmlldygpOworICAg
ICAgICAgICAgaWYgKCFmcmFtZWJ1ZmZlclJUVikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAvLyBBIG1hc2tlZCBjbGVhciBpcyByZXF1aXJlZCwgb3IgYSBzY2lzc29yZWQgY2xlYXIg
aXMgcmVxdWlyZWQgYW5kIElEM0QxMURldmljZUNvbnRleHQxOjpDbGVhclZpZXcgaXMgdW5hdmFp
bGFibGUKLSAgICAgICAgICAgICAgICBNYXNrZWRSZW5kZXJUYXJnZXQgbWFza0FuZFJ0OwotICAg
ICAgICAgICAgICAgIGJvb2wgY2xlYXJDb2xvciAgICAgICAgPSBjbGVhclBhcmFtcy5jbGVhckNv
bG9yW2NvbG9yQXR0YWNobWVudEluZGV4XTsKLSAgICAgICAgICAgICAgICBtYXNrQW5kUnQuY29s
b3JNYXNrWzBdID0gKGNsZWFyQ29sb3IgJiYgY2xlYXJQYXJhbXMuY29sb3JNYXNrUmVkKTsKLSAg
ICAgICAgICAgICAgICBtYXNrQW5kUnQuY29sb3JNYXNrWzFdID0gKGNsZWFyQ29sb3IgJiYgY2xl
YXJQYXJhbXMuY29sb3JNYXNrR3JlZW4pOwotICAgICAgICAgICAgICAgIG1hc2tBbmRSdC5jb2xv
ck1hc2tbMl0gPSAoY2xlYXJDb2xvciAmJiBjbGVhclBhcmFtcy5jb2xvck1hc2tCbHVlKTsKLSAg
ICAgICAgICAgICAgICBtYXNrQW5kUnQuY29sb3JNYXNrWzNdID0gKGNsZWFyQ29sb3IgJiYgY2xl
YXJQYXJhbXMuY29sb3JNYXNrQWxwaGEpOwotICAgICAgICAgICAgICAgIG1hc2tBbmRSdC5yZW5k
ZXJUYXJnZXQgPSByZW5kZXJUYXJnZXQ7Ci0gICAgICAgICAgICAgICAgbWFza2VkQ2xlYXJSZW5k
ZXJUYXJnZXRzLnB1c2hfYmFjayhtYXNrQW5kUnQpOworICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6T3V0T2ZNZW1vcnkoKQorICAgICAgICAgICAgICAgICAgICAgICA8PCAiQ2xlYXIxMTogUmVu
ZGVyIHRhcmdldCB2aWV3IHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgaWYgKCghKG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNh
cHMoKS5zdXBwb3J0c0NsZWFyVmlldykgJiYgbmVlZFNjaXNzb3JlZENsZWFyKSB8fAorICAgICAg
ICAgICAgICAgIGNsZWFyUGFyYW1zLmNvbG9yQ2xlYXJUeXBlICE9IEdMX0ZMT0FUIHx8CisgICAg
ICAgICAgICAgICAgKGZvcm1hdEluZm8ucmVkQml0cyA+IDAgJiYgIWNsZWFyUGFyYW1zLmNvbG9y
TWFza1JlZCkgfHwKKyAgICAgICAgICAgICAgICAoZm9ybWF0SW5mby5ncmVlbkJpdHMgPiAwICYm
ICFjbGVhclBhcmFtcy5jb2xvck1hc2tHcmVlbikgfHwKKyAgICAgICAgICAgICAgICAoZm9ybWF0
SW5mby5ibHVlQml0cyA+IDAgJiYgIWNsZWFyUGFyYW1zLmNvbG9yTWFza0JsdWUpIHx8CisgICAg
ICAgICAgICAgICAgKGZvcm1hdEluZm8uYWxwaGFCaXRzID4gMCAmJiAhY2xlYXJQYXJhbXMuY29s
b3JNYXNrQWxwaGEpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJ0dnNbbnVtUnR2
c10gICAgID0gZnJhbWVidWZmZXJSVFY7CisgICAgICAgICAgICAgICAgcnR2TWFza3NbbnVtUnR2
c10gPSBnbF9kM2QxMTo6R2V0Q29sb3JNYXNrKCZmb3JtYXRJbmZvKSAmIGNvbG9yTWFzazsKKyAg
ICAgICAgICAgICAgICBudW1SdHZzKys7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIC8vIElEM0QxMURldmljZUNvbnRleHQ6
OkNsZWFyUmVuZGVyVGFyZ2V0VmlldyBvciBJRDNEMTFEZXZpY2VDb250ZXh0MTo6Q2xlYXJWaWV3
IGlzIHBvc3NpYmxlCisgICAgICAgICAgICAgICAgLy8gSUQzRDExRGV2aWNlQ29udGV4dDo6Q2xl
YXJSZW5kZXJUYXJnZXRWaWV3IG9yIElEM0QxMURldmljZUNvbnRleHQxOjpDbGVhclZpZXcgaXMK
KyAgICAgICAgICAgICAgICAvLyBwb3NzaWJsZQogCi0gICAgICAgICAgICAgICAgSUQzRDExUmVu
ZGVyVGFyZ2V0VmlldyAqZnJhbWVidWZmZXJSVFYgPSByZW5kZXJUYXJnZXQtPmdldFJlbmRlclRh
cmdldFZpZXcoKTsKLSAgICAgICAgICAgICAgICBpZiAoIWZyYW1lYnVmZmVyUlRWKQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRf
T0ZfTUVNT1JZLCAiSW50ZXJuYWwgcmVuZGVyIHRhcmdldCB2aWV3IHBvaW50ZXIgdW5leHBlY3Rl
ZGx5IG51bGwuIik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgY29uc3Qg
YXV0byAmbmF0aXZlRm9ybWF0ID0gcmVuZGVyVGFyZ2V0LT5nZXRGb3JtYXRTZXQoKS5mb3JtYXQ7
CisgICAgICAgICAgICAgICAgY29uc3QgYXV0byAmbmF0aXZlRm9ybWF0ID0gcmVuZGVyVGFyZ2V0
LT5nZXRGb3JtYXRTZXQoKS5mb3JtYXQoKTsKIAotICAgICAgICAgICAgICAgIC8vIENoZWNrIGlm
IHRoZSBhY3R1YWwgZm9ybWF0IGhhcyBhIGNoYW5uZWwgdGhhdCB0aGUgaW50ZXJuYWwgZm9ybWF0
IGRvZXMgbm90IGFuZCBzZXQgdGhlbSB0byB0aGUKLSAgICAgICAgICAgICAgICAvLyBkZWZhdWx0
IHZhbHVlcworICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBhY3R1YWwgZm9ybWF0IGhh
cyBhIGNoYW5uZWwgdGhhdCB0aGUgaW50ZXJuYWwgZm9ybWF0IGRvZXMgbm90IGFuZAorICAgICAg
ICAgICAgICAgIC8vIHNldCB0aGVtIHRvIHRoZSBkZWZhdWx0IHZhbHVlcwogICAgICAgICAgICAg
ICAgIGZsb2F0IGNsZWFyVmFsdWVzWzRdID0gewogICAgICAgICAgICAgICAgICAgICAoKGZvcm1h
dEluZm8ucmVkQml0cyA9PSAwICYmIG5hdGl2ZUZvcm1hdC5yZWRCaXRzID4gMCkKICAgICAgICAg
ICAgICAgICAgICAgICAgICA/IDAuMGYKQEAgLTM0OCw5ICszNTgsOSBAQCBnbDo6RXJyb3IgQ2xl
YXIxMTo6Y2xlYXJGcmFtZWJ1ZmZlcihjb25zdCBDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1z
LAogCiAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdEluZm8uYWxwaGFCaXRzID09IDEpCiAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBTb21lIGRyaXZlcnMgZG8gbm90
IGNvcnJlY3RseSBoYW5kbGUgY2FsbGluZyBDbGVhcigpIG9uIGEgZm9ybWF0IHdpdGggMS1iaXQg
YWxwaGEuCi0gICAgICAgICAgICAgICAgICAgIC8vIFRoZXkgY2FuIGluY29ycmVjdGx5IHJvdW5k
IGFsbCBub24temVybyB2YWx1ZXMgdXAgdG8gMS4wZi4gTm90ZSB0aGF0IFdBUlAgZG9lcyBub3Qg
ZG8gdGhpcy4KLSAgICAgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIGhhbmRsZSB0aGUgcm91
bmRpbmcgZm9yIHRoZW0gaW5zdGVhZC4KKyAgICAgICAgICAgICAgICAgICAgLy8gU29tZSBkcml2
ZXJzIGRvIG5vdCBjb3JyZWN0bHkgaGFuZGxlIGNhbGxpbmcgQ2xlYXIoKSBvbiBhIGZvcm1hdCB3
aXRoIDEtYml0CisgICAgICAgICAgICAgICAgICAgIC8vIGFscGhhLiBUaGV5IGNhbiBpbmNvcnJl
Y3RseSByb3VuZCBhbGwgbm9uLXplcm8gdmFsdWVzIHVwIHRvIDEuMGYuIE5vdGUgdGhhdAorICAg
ICAgICAgICAgICAgICAgICAvLyBXQVJQIGRvZXMgbm90IGRvIHRoaXMuIFdlIHNob3VsZCBoYW5k
bGUgdGhlIHJvdW5kaW5nIGZvciB0aGVtIGluc3RlYWQuCiAgICAgICAgICAgICAgICAgICAgIGNs
ZWFyVmFsdWVzWzNdID0gKGNsZWFyUGFyYW1zLmNvbG9yRkNsZWFyVmFsdWUuYWxwaGEgPj0gMC41
ZikgPyAxLjBmIDogMC4wZjsKICAgICAgICAgICAgICAgICB9CiAKQEAgLTM2MCw1NyArMzcwLDY3
IEBAIGdsOjpFcnJvciBDbGVhcjExOjpjbGVhckZyYW1lYnVmZmVyKGNvbnN0IENsZWFyUGFyYW1l
dGVycyAmY2xlYXJQYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChkZXZpY2VDb250
ZXh0MSk7CiAKICAgICAgICAgICAgICAgICAgICAgRDNEMTFfUkVDVCByZWN0OwotICAgICAgICAg
ICAgICAgICAgICByZWN0LmxlZnQgPSBjbGVhclBhcmFtcy5zY2lzc29yLng7Ci0gICAgICAgICAg
ICAgICAgICAgIHJlY3QucmlnaHQgPSBjbGVhclBhcmFtcy5zY2lzc29yLnggKyBjbGVhclBhcmFt
cy5zY2lzc29yLndpZHRoOwotICAgICAgICAgICAgICAgICAgICByZWN0LnRvcCA9IGNsZWFyUGFy
YW1zLnNjaXNzb3IueTsKKyAgICAgICAgICAgICAgICAgICAgcmVjdC5sZWZ0ICAgPSBjbGVhclBh
cmFtcy5zY2lzc29yLng7CisgICAgICAgICAgICAgICAgICAgIHJlY3QucmlnaHQgID0gY2xlYXJQ
YXJhbXMuc2Npc3Nvci54ICsgY2xlYXJQYXJhbXMuc2Npc3Nvci53aWR0aDsKKyAgICAgICAgICAg
ICAgICAgICAgcmVjdC50b3AgICAgPSBjbGVhclBhcmFtcy5zY2lzc29yLnk7CiAgICAgICAgICAg
ICAgICAgICAgIHJlY3QuYm90dG9tID0gY2xlYXJQYXJhbXMuc2Npc3Nvci55ICsgY2xlYXJQYXJh
bXMuc2Npc3Nvci5oZWlnaHQ7CiAKICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ29udGV4dDEt
PkNsZWFyVmlldyhmcmFtZWJ1ZmZlclJUViwgY2xlYXJWYWx1ZXMsICZyZWN0LCAxKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKG1SZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKS5jYWxsQ2xlYXJU
d2ljZU9uU21hbGxUYXJnZXQpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChjbGVhclBhcmFtcy5zY2lzc29yLndpZHRoIDw9IDE2IHx8IGNsZWFyUGFy
YW1zLnNjaXNzb3IuaGVpZ2h0IDw9IDE2KQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNvbnRleHQxLT5DbGVhclZpZXcoZnJhbWVi
dWZmZXJSVFYsIGNsZWFyVmFsdWVzLCAmcmVjdCwgMSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgZGV2aWNl
Q29udGV4dC0+Q2xlYXJSZW5kZXJUYXJnZXRWaWV3KGZyYW1lYnVmZmVyUlRWLCBjbGVhclZhbHVl
cyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChtUmVuZGVyZXItPmdldFdvcmthcm91bmRzKCku
Y2FsbENsZWFyVHdpY2VPblNtYWxsVGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoZnJhbWVidWZmZXJTaXplLndpZHRoIDw9IDE2IHx8IGZy
YW1lYnVmZmVyU2l6ZS5oZWlnaHQgPD0gMTYpCisgICAgICAgICAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ29udGV4dC0+Q2xlYXJSZW5kZXJUYXJn
ZXRWaWV3KGZyYW1lYnVmZmVyUlRWLCBjbGVhclZhbHVlcyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoY2xlYXJQYXJhbXMuY2xlYXJEZXB0
aCB8fCBjbGVhclBhcmFtcy5jbGVhclN0ZW5jaWwpCisgICAgaWYgKGRlcHRoU3RlbmNpbFJlbmRl
clRhcmdldCkKICAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQg
KmF0dGFjaG1lbnQgPSAoZGVwdGhBdHRhY2htZW50ICE9IG51bGxwdHIpID8gZGVwdGhBdHRhY2ht
ZW50IDogc3RlbmNpbEF0dGFjaG1lbnQ7Ci0gICAgICAgIEFTU0VSVChhdHRhY2htZW50ICE9IG51
bGxwdHIpOworICAgICAgICBkc3YgPSBkZXB0aFN0ZW5jaWxSZW5kZXJUYXJnZXQtPmdldERlcHRo
U3RlbmNpbFZpZXcoKTsKIAotICAgICAgICBSZW5kZXJUYXJnZXQxMSAqcmVuZGVyVGFyZ2V0ID0g
bnVsbHB0cjsKLSAgICAgICAgQU5HTEVfVFJZKGF0dGFjaG1lbnQtPmdldFJlbmRlclRhcmdldCgm
cmVuZGVyVGFyZ2V0KSk7CisgICAgICAgIGlmICghZHN2KQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gZ2w6Ok91dE9mTWVtb3J5KCkgPDwgIkNsZWFyMTE6IERlcHRoIHN0ZW5jaWwgdmll
dyBwb2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiI7CisgICAgICAgIH0KIAotICAgICAgICBjb25z
dCBhdXRvICZuYXRpdmVGb3JtYXQgPSByZW5kZXJUYXJnZXQtPmdldEZvcm1hdFNldCgpLmZvcm1h
dDsKKyAgICAgICAgY29uc3QgYXV0byAmbmF0aXZlRm9ybWF0ID0gZGVwdGhTdGVuY2lsUmVuZGVy
VGFyZ2V0LT5nZXRGb3JtYXRTZXQoKS5mb3JtYXQoKTsKKyAgICAgICAgY29uc3QgZ2w6OkZyYW1l
YnVmZmVyQXR0YWNobWVudCAqc3RlbmNpbEF0dGFjaG1lbnQgPSBmYm9EYXRhLmdldFN0ZW5jaWxB
dHRhY2htZW50KCk7CiAKLSAgICAgICAgdW5zaWduZWQgaW50IHN0ZW5jaWxVbm1hc2tlZCA9Cisg
ICAgICAgIHVpbnQzMl90IHN0ZW5jaWxVbm1hc2tlZCA9CiAgICAgICAgICAgICAoc3RlbmNpbEF0
dGFjaG1lbnQgIT0gbnVsbHB0cikgPyAoMSA8PCBuYXRpdmVGb3JtYXQuc3RlbmNpbEJpdHMpIC0g
MSA6IDA7Ci0gICAgICAgIGJvb2wgbmVlZE1hc2tlZFN0ZW5jaWxDbGVhciA9IGNsZWFyUGFyYW1z
LmNsZWFyU3RlbmNpbCAmJiAoY2xlYXJQYXJhbXMuc3RlbmNpbFdyaXRlTWFzayAmIHN0ZW5jaWxV
bm1hc2tlZCkgIT0gc3RlbmNpbFVubWFza2VkOworICAgICAgICBib29sIG5lZWRNYXNrZWRTdGVu
Y2lsQ2xlYXIgPQorICAgICAgICAgICAgY2xlYXJQYXJhbXMuY2xlYXJTdGVuY2lsICYmCisgICAg
ICAgICAgICAoY2xlYXJQYXJhbXMuc3RlbmNpbFdyaXRlTWFzayAmIHN0ZW5jaWxVbm1hc2tlZCkg
IT0gc3RlbmNpbFVubWFza2VkOwogCi0gICAgICAgIGlmIChuZWVkU2Npc3NvcmVkQ2xlYXIgfHwg
bmVlZE1hc2tlZFN0ZW5jaWxDbGVhcikKLSAgICAgICAgewotICAgICAgICAgICAgbWFza2VkQ2xl
YXJEZXB0aFN0ZW5jaWwgPSByZW5kZXJUYXJnZXQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQor
ICAgICAgICBpZiAoIW5lZWRTY2lzc29yZWRDbGVhciAmJiAhbmVlZE1hc2tlZFN0ZW5jaWxDbGVh
cikKICAgICAgICAgewotICAgICAgICAgICAgSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZnJhbWVi
dWZmZXJEU1YgPSByZW5kZXJUYXJnZXQtPmdldERlcHRoU3RlbmNpbFZpZXcoKTsKLSAgICAgICAg
ICAgIGlmICghZnJhbWVidWZmZXJEU1YpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiSW50ZXJuYWwgZGVwdGggc3RlbmNp
bCB2aWV3IHBvaW50ZXIgdW5leHBlY3RlZGx5IG51bGwuIik7Ci0gICAgICAgICAgICB9CisgICAg
ICAgICAgICBjb25zdCBVSU5UIGNsZWFyRmxhZ3MgPSAoY2xlYXJQYXJhbXMuY2xlYXJEZXB0aCA/
IEQzRDExX0NMRUFSX0RFUFRIIDogMCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGNsZWFyUGFyYW1zLmNsZWFyU3RlbmNpbCA/IEQzRDExX0NMRUFSX1NURU5DSUwgOiAw
KTsKKyAgICAgICAgICAgIGNvbnN0IEZMT0FUIGRlcHRoQ2xlYXIgICA9IGdsOjpjbGFtcDAxKGNs
ZWFyUGFyYW1zLmRlcHRoQ2xlYXJWYWx1ZSk7CisgICAgICAgICAgICBjb25zdCBVSU5UOCBzdGVu
Y2lsQ2xlYXIgPSBjbGVhclBhcmFtcy5zdGVuY2lsQ2xlYXJWYWx1ZSAmIDB4RkY7CiAKLSAgICAg
ICAgICAgIFVJTlQgY2xlYXJGbGFncyA9IChjbGVhclBhcmFtcy5jbGVhckRlcHRoICAgPyBEM0Qx
MV9DTEVBUl9ERVBUSCAgIDogMCkgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
Y2xlYXJQYXJhbXMuY2xlYXJTdGVuY2lsID8gRDNEMTFfQ0xFQVJfU1RFTkNJTCA6IDApOwotICAg
ICAgICAgICAgRkxPQVQgZGVwdGhDbGVhciA9IGdsOjpjbGFtcDAxKGNsZWFyUGFyYW1zLmRlcHRo
Q2xlYXJWYWx1ZSk7Ci0gICAgICAgICAgICBVSU5UOCBzdGVuY2lsQ2xlYXIgPSBjbGVhclBhcmFt
cy5zdGVuY2lsQ2xlYXJWYWx1ZSAmIDB4RkY7CisgICAgICAgICAgICBkZXZpY2VDb250ZXh0LT5D
bGVhckRlcHRoU3RlbmNpbFZpZXcoZHN2LCBjbGVhckZsYWdzLCBkZXB0aENsZWFyLCBzdGVuY2ls
Q2xlYXIpOwogCi0gICAgICAgICAgICBkZXZpY2VDb250ZXh0LT5DbGVhckRlcHRoU3RlbmNpbFZp
ZXcoZnJhbWVidWZmZXJEU1YsIGNsZWFyRmxhZ3MsIGRlcHRoQ2xlYXIsIHN0ZW5jaWxDbGVhcik7
CisgICAgICAgICAgICBkc3YgPSBudWxscHRyOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYg
KG1hc2tlZENsZWFyUmVuZGVyVGFyZ2V0cy5lbXB0eSgpICYmICFtYXNrZWRDbGVhckRlcHRoU3Rl
bmNpbCkKKyAgICBpZiAobnVtUnR2cyA9PSAwICYmICFkc3YpCiAgICAgewogICAgICAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CkBAIC00MzgsNjYgKzQ1OCw2OSBAQCBnbDo6RXJyb3Ig
Q2xlYXIxMTo6Y2xlYXJGcmFtZWJ1ZmZlcihjb25zdCBDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFy
YW1zLAogICAgIC8vIGdsQ2xlYXJCdWZmZXIqIGNhbGxzIG9ubHkgY2xlYXIgYSBzaW5nbGUgcmVu
ZGVyYnVmZmVyIGF0IGEgdGltZSB3aGljaCBpcyB2ZXJpZmllZCB0bwogICAgIC8vIGJlIGEgY29t
cGF0aWJsZSBjbGVhciB0eXBlLgogCi0gICAgLy8gQmluZCBhbGwgdGhlIHJlbmRlciB0YXJnZXRz
IHdoaWNoIG5lZWQgY2xlYXJpbmcKLSAgICBBU1NFUlQobWFza2VkQ2xlYXJSZW5kZXJUYXJnZXRz
LnNpemUoKSA8PSBtUmVuZGVyZXItPmdldE5hdGl2ZUNhcHMoKS5tYXhEcmF3QnVmZmVycyk7Ci0g
ICAgc3RkOjp2ZWN0b3I8SUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqPiBydHZzKG1hc2tlZENsZWFy
UmVuZGVyVGFyZ2V0cy5zaXplKCkpOwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
bWFza2VkQ2xlYXJSZW5kZXJUYXJnZXRzLnNpemUoKTsgaSsrKQotICAgIHsKLSAgICAgICAgUmVu
ZGVyVGFyZ2V0MTEgKnJlbmRlclRhcmdldCA9IG1hc2tlZENsZWFyUmVuZGVyVGFyZ2V0c1tpXS5y
ZW5kZXJUYXJnZXQ7Ci0gICAgICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKnJ0diAgPSByZW5k
ZXJUYXJnZXQtPmdldFJlbmRlclRhcmdldFZpZXcoKTsKLSAgICAgICAgaWYgKCFydHYpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludGVybmFsIHJlbmRlciB0YXJnZXQgdmlldyBw
b2ludGVyIHVuZXhwZWN0ZWRseSBudWxsLiIpOwotICAgICAgICB9CisgICAgQVNTRVJUKG51bVJ0
dnMgPD0gbVJlbmRlcmVyLT5nZXROYXRpdmVDYXBzKCkubWF4RHJhd0J1ZmZlcnMpOwogCi0gICAg
ICAgIHJ0dnNbaV0gPSBydHY7CisgICAgY29uc3QgVUlOVCBzYW1wbGVNYXNrICAgICAgICA9IDB4
RkZGRkZGRkY7CisgICAgSUQzRDExQmxlbmRTdGF0ZSAqYmxlbmRTdGF0ZSA9IG51bGxwdHI7CisK
KyAgICBpZiAobnVtUnR2cyA+IDApCisgICAgeworICAgICAgICAvLyBTZXR1cCBCbGVuZFN0YXRl
S2V5IHBhcmFtZXRlcnMKKyAgICAgICAgbUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0ZS5jb2xvck1h
c2tSZWQgICA9IGNsZWFyUGFyYW1zLmNvbG9yTWFza1JlZDsKKyAgICAgICAgbUJsZW5kU3RhdGVL
ZXkuYmxlbmRTdGF0ZS5jb2xvck1hc2tHcmVlbiA9IGNsZWFyUGFyYW1zLmNvbG9yTWFza0dyZWVu
OworICAgICAgICBtQmxlbmRTdGF0ZUtleS5ibGVuZFN0YXRlLmNvbG9yTWFza0JsdWUgID0gY2xl
YXJQYXJhbXMuY29sb3JNYXNrQmx1ZTsKKyAgICAgICAgbUJsZW5kU3RhdGVLZXkuYmxlbmRTdGF0
ZS5jb2xvck1hc2tBbHBoYSA9IGNsZWFyUGFyYW1zLmNvbG9yTWFza0FscGhhOworICAgICAgICBt
QmxlbmRTdGF0ZUtleS5tcnQgICAgICAgICAgICAgICAgICAgICAgID0gbnVtUnR2cyA+IDE7Cisg
ICAgICAgIG1lbWNweShtQmxlbmRTdGF0ZUtleS5ydHZNYXNrcywgJnJ0dk1hc2tzWzBdLCBzaXpl
b2YobUJsZW5kU3RhdGVLZXkucnR2TWFza3MpKTsKKworICAgICAgICAvLyBHZXQgQmxlbmRTdGF0
ZQorICAgICAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5nZXRTdGF0ZUNhY2hlKCkuZ2V0QmxlbmRT
dGF0ZShtQmxlbmRTdGF0ZUtleSwgJmJsZW5kU3RhdGUpKTsKICAgICB9Ci0gICAgSUQzRDExRGVw
dGhTdGVuY2lsVmlldyAqZHN2ID0KLSAgICAgICAgbWFza2VkQ2xlYXJEZXB0aFN0ZW5jaWwgPyBt
YXNrZWRDbGVhckRlcHRoU3RlbmNpbC0+Z2V0RGVwdGhTdGVuY2lsVmlldygpIDogbnVsbHB0cjsK
IAotICAgIElEM0QxMUJsZW5kU3RhdGUgKmJsZW5kU3RhdGUgPSBnZXRCbGVuZFN0YXRlKG1hc2tl
ZENsZWFyUmVuZGVyVGFyZ2V0cyk7Ci0gICAgY29uc3QgRkxPQVQgYmxlbmRGYWN0b3JzWzRdICA9
IHsxLjBmLCAxLjBmLCAxLjBmLCAxLjBmfTsKLSAgICBjb25zdCBVSU5UIHNhbXBsZU1hc2sgICAg
ICAgID0gMHhGRkZGRkZGRjsKKyAgICBjb25zdCBVSU5UIHN0ZW5jaWxWYWx1ZSAgICAgICAgICA9
IGNsZWFyUGFyYW1zLnN0ZW5jaWxDbGVhclZhbHVlICYgMHhGRjsKKyAgICBJRDNEMTFEZXB0aFN0
ZW5jaWxTdGF0ZSAqZHNTdGF0ZSA9IG51bGxwdHI7CisgICAgY29uc3QgZmxvYXQgKnpWYWx1ZSAg
ICAgICAgICAgICAgPSBudWxscHRyOwogCi0gICAgSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKmRz
U3RhdGUgPSBnZXREZXB0aFN0ZW5jaWxTdGF0ZShjbGVhclBhcmFtcyk7Ci0gICAgY29uc3QgVUlO
VCBzdGVuY2lsQ2xlYXIgICAgICAgICAgPSBjbGVhclBhcmFtcy5zdGVuY2lsQ2xlYXJWYWx1ZSAm
IDB4RkY7CisgICAgaWYgKGRzdikKKyAgICB7CisgICAgICAgIC8vIFNldHVwIERlcHRoU3RlbmNp
bFN0YXRlS2V5CisgICAgICAgIG1EZXB0aFN0ZW5jaWxTdGF0ZUtleS5kZXB0aFRlc3QgICAgICAg
ID0gY2xlYXJQYXJhbXMuY2xlYXJEZXB0aDsKKyAgICAgICAgbURlcHRoU3RlbmNpbFN0YXRlS2V5
LmRlcHRoTWFzayAgICAgICAgPSBjbGVhclBhcmFtcy5jbGVhckRlcHRoOworICAgICAgICBtRGVw
dGhTdGVuY2lsU3RhdGVLZXkuc3RlbmNpbFdyaXRlbWFzayA9IGNsZWFyUGFyYW1zLnN0ZW5jaWxX
cml0ZU1hc2s7CisgICAgICAgIG1EZXB0aFN0ZW5jaWxTdGF0ZUtleS5zdGVuY2lsVGVzdCAgICAg
ID0gY2xlYXJQYXJhbXMuY2xlYXJTdGVuY2lsOworCisgICAgICAgIC8vIEdldCBEZXB0aFN0ZW5j
aWxTdGF0ZQorICAgICAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5nZXRTdGF0ZUNhY2hlKCkuZ2V0
RGVwdGhTdGVuY2lsU3RhdGUobURlcHRoU3RlbmNpbFN0YXRlS2V5LCAmZHNTdGF0ZSkpOworICAg
ICAgICB6VmFsdWUgPSBjbGVhclBhcmFtcy5jbGVhckRlcHRoID8gJmNsZWFyUGFyYW1zLmRlcHRo
Q2xlYXJWYWx1ZSA6IG51bGxwdHI7CisgICAgfQogCiAgICAgLy8gU2V0IHRoZSB2ZXJ0aWNlcwot
ICAgIFVJTlQgdmVydGV4U3RyaWRlICAgPSAwOwotICAgIGNvbnN0IFVJTlQgc3RhcnRJZHggPSAw
OwogICAgIENsZWFyU2hhZGVyICpzaGFkZXIgPSBudWxscHRyOwogICAgIEQzRDExX01BUFBFRF9T
VUJSRVNPVVJDRSBtYXBwZWRSZXNvdXJjZTsKICAgICBIUkVTVUxUIHJlc3VsdCA9Ci0gICAgICAg
IGRldmljZUNvbnRleHQtPk1hcChtVmVydGV4QnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElT
Q0FSRCwgMCwgJm1hcHBlZFJlc291cmNlKTsKKyAgICAgICAgZGV2aWNlQ29udGV4dC0+TWFwKG1W
ZXJ0ZXhCdWZmZXIuR2V0KCksIDAsIEQzRDExX01BUF9XUklURV9ESVNDQVJELCAwLCAmbWFwcGVk
UmVzb3VyY2UpOwogICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAi
RmFpbGVkIHRvIG1hcCBpbnRlcm5hbCBtYXNrZWQgY2xlYXIgdmVydGV4IGJ1ZmZlciwgSFJFU1VM
VDogMHglWC4iLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7CisgICAgICAgIHJl
dHVybiBnbDo6T3V0T2ZNZW1vcnkoKSA8PCAiQ2xlYXIxMTogRmFpbGVkIHRvIG1hcCBpbnRlcm5h
bCBWQiwgIiA8PCByZXN1bHQ7CiAgICAgfQogCi0gICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAqc2Np
c3NvclB0ciA9IGNsZWFyUGFyYW1zLnNjaXNzb3JFbmFibGVkID8gJmNsZWFyUGFyYW1zLnNjaXNz
b3IgOiBudWxscHRyOwogICAgIHN3aXRjaCAoY2xlYXJQYXJhbXMuY29sb3JDbGVhclR5cGUpCiAg
ICAgewogICAgICAgICBjYXNlIEdMX0ZMT0FUOgotICAgICAgICAgICAgQXBwbHlWZXJ0aWNlcyhm
cmFtZWJ1ZmZlclNpemUsIHNjaXNzb3JQdHIsIGNsZWFyUGFyYW1zLmNvbG9yRkNsZWFyVmFsdWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyUGFyYW1zLmRlcHRoQ2xlYXJWYWx1ZSwg
bWFwcGVkUmVzb3VyY2UucERhdGEpOwotICAgICAgICAgICAgdmVydGV4U3RyaWRlID0gc2l6ZW9m
KGQzZDExOjpQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXg8ZmxvYXQ+KTsKKyAgICAgICAgICAgIEFw
cGx5VmVydGljZXMoY2xlYXJQYXJhbXMuY29sb3JGQ2xlYXJWYWx1ZSwgY2xlYXJQYXJhbXMuZGVw
dGhDbGVhclZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwZWRSZXNvdXJjZS5w
RGF0YSk7CiAgICAgICAgICAgICBzaGFkZXIgICAgICAgPSBtRmxvYXRDbGVhclNoYWRlcjsKICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgotICAgICAg
ICAgICAgQXBwbHlWZXJ0aWNlcyhmcmFtZWJ1ZmZlclNpemUsIHNjaXNzb3JQdHIsIGNsZWFyUGFy
YW1zLmNvbG9yVUlDbGVhclZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBh
cmFtcy5kZXB0aENsZWFyVmFsdWUsIG1hcHBlZFJlc291cmNlLnBEYXRhKTsKLSAgICAgICAgICAg
IHZlcnRleFN0cmlkZSA9IHNpemVvZihkM2QxMTo6UG9zaXRpb25EZXB0aENvbG9yVmVydGV4PHVu
c2lnbmVkIGludD4pOworICAgICAgICAgICAgQXBwbHlWZXJ0aWNlcyhjbGVhclBhcmFtcy5jb2xv
clVJQ2xlYXJWYWx1ZSwgY2xlYXJQYXJhbXMuZGVwdGhDbGVhclZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYXBwZWRSZXNvdXJjZS5wRGF0YSk7CiAgICAgICAgICAgICBzaGFkZXIg
ICAgICAgPSBtVWludENsZWFyU2hhZGVyOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
Y2FzZSBHTF9JTlQ6Ci0gICAgICAgICAgICBBcHBseVZlcnRpY2VzKGZyYW1lYnVmZmVyU2l6ZSwg
c2Npc3NvclB0ciwgY2xlYXJQYXJhbXMuY29sb3JJQ2xlYXJWYWx1ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2xlYXJQYXJhbXMuZGVwdGhDbGVhclZhbHVlLCBtYXBwZWRSZXNvdXJjZS5w
RGF0YSk7Ci0gICAgICAgICAgICB2ZXJ0ZXhTdHJpZGUgPSBzaXplb2YoZDNkMTE6OlBvc2l0aW9u
RGVwdGhDb2xvclZlcnRleDxpbnQ+KTsKKyAgICAgICAgICAgIEFwcGx5VmVydGljZXMoY2xlYXJQ
YXJhbXMuY29sb3JJQ2xlYXJWYWx1ZSwgY2xlYXJQYXJhbXMuZGVwdGhDbGVhclZhbHVlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBtYXBwZWRSZXNvdXJjZS5wRGF0YSk7CiAgICAgICAgICAg
ICBzaGFkZXIgICAgICAgPSBtSW50Q2xlYXJTaGFkZXI7CiAgICAgICAgICAgICBicmVhazsKIApA
QCAtNTA2LDcgKzUyOSw3IEBAIGdsOjpFcnJvciBDbGVhcjExOjpjbGVhckZyYW1lYnVmZmVyKGNv
bnN0IENsZWFyUGFyYW1ldGVycyAmY2xlYXJQYXJhbXMsCiAgICAgICAgICAgICBicmVhazsKICAg
ICB9CiAKLSAgICBkZXZpY2VDb250ZXh0LT5Vbm1hcChtVmVydGV4QnVmZmVyLCAwKTsKKyAgICBk
ZXZpY2VDb250ZXh0LT5Vbm1hcChtVmVydGV4QnVmZmVyLkdldCgpLCAwKTsKIAogICAgIC8vIFNl
dCB0aGUgdmlld3BvcnQgdG8gYmUgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgZnJhbWVidWZmZXIKICAg
ICBEM0QxMV9WSUVXUE9SVCB2aWV3cG9ydDsKQEAgLTUxOSwyMiArNTQyLDM1IEBAIGdsOjpFcnJv
ciBDbGVhcjExOjpjbGVhckZyYW1lYnVmZmVyKGNvbnN0IENsZWFyUGFyYW1ldGVycyAmY2xlYXJQ
YXJhbXMsCiAgICAgZGV2aWNlQ29udGV4dC0+UlNTZXRWaWV3cG9ydHMoMSwgJnZpZXdwb3J0KTsK
IAogICAgIC8vIEFwcGx5IHN0YXRlCi0gICAgZGV2aWNlQ29udGV4dC0+T01TZXRCbGVuZFN0YXRl
KGJsZW5kU3RhdGUsIGJsZW5kRmFjdG9ycywgc2FtcGxlTWFzayk7Ci0gICAgZGV2aWNlQ29udGV4
dC0+T01TZXREZXB0aFN0ZW5jaWxTdGF0ZShkc1N0YXRlLCBzdGVuY2lsQ2xlYXIpOwotICAgIGRl
dmljZUNvbnRleHQtPlJTU2V0U3RhdGUobVJhc3Rlcml6ZXJTdGF0ZSk7CisgICAgZGV2aWNlQ29u
dGV4dC0+T01TZXRCbGVuZFN0YXRlKGJsZW5kU3RhdGUsIG51bGxwdHIsIHNhbXBsZU1hc2spOwor
ICAgIGRldmljZUNvbnRleHQtPk9NU2V0RGVwdGhTdGVuY2lsU3RhdGUoZHNTdGF0ZSwgc3RlbmNp
bFZhbHVlKTsKKworICAgIGlmIChuZWVkU2Npc3NvcmVkQ2xlYXIpCisgICAgeworICAgICAgICBj
b25zdCBEM0QxMV9SRUNUIHNjaXNzb3JSZWN0ID0ge2NsZWFyUGFyYW1zLnNjaXNzb3IueCwgY2xl
YXJQYXJhbXMuc2Npc3Nvci55LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNsZWFyUGFyYW1zLnNjaXNzb3IueDEoKSwgY2xlYXJQYXJhbXMuc2Npc3Nvci55MSgpfTsK
KyAgICAgICAgZGV2aWNlQ29udGV4dC0+UlNTZXRTY2lzc29yUmVjdHMoMSwgJnNjaXNzb3JSZWN0
KTsKKyAgICAgICAgZGV2aWNlQ29udGV4dC0+UlNTZXRTdGF0ZShtU2Npc3NvckVuYWJsZWRSYXN0
ZXJpemVyU3RhdGUuR2V0KCkpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBkZXZp
Y2VDb250ZXh0LT5SU1NldFN0YXRlKG1TY2lzc29yRGlzYWJsZWRSYXN0ZXJpemVyU3RhdGUuR2V0
KCkpOworICAgIH0KIAogICAgIC8vIEFwcGx5IHNoYWRlcnMKKyAgICBJRDNEMTFEZXZpY2UgKmRl
dmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAgICAgZGV2aWNlQ29udGV4dC0+SUFTZXRJ
bnB1dExheW91dChzaGFkZXItPmlucHV0TGF5b3V0LT5yZXNvbHZlKGRldmljZSkpOwogICAgIGRl
dmljZUNvbnRleHQtPlZTU2V0U2hhZGVyKHNoYWRlci0+dmVydGV4U2hhZGVyLnJlc29sdmUoZGV2
aWNlKSwgbnVsbHB0ciwgMCk7CiAgICAgZGV2aWNlQ29udGV4dC0+UFNTZXRTaGFkZXIoc2hhZGVy
LT5waXhlbFNoYWRlci5yZXNvbHZlKGRldmljZSksIG51bGxwdHIsIDApOwogICAgIGRldmljZUNv
bnRleHQtPkdTU2V0U2hhZGVyKG51bGxwdHIsIG51bGxwdHIsIDApOwogCiAgICAgLy8gQXBwbHkg
dmVydGV4IGJ1ZmZlcgotICAgIGRldmljZUNvbnRleHQtPklBU2V0VmVydGV4QnVmZmVycygwLCAx
LCAmbVZlcnRleEJ1ZmZlciwgJnZlcnRleFN0cmlkZSwgJnN0YXJ0SWR4KTsKKyAgICBjb25zdCBV
SU5UIG9mZnNldCA9IDA7CisgICAgZGV2aWNlQ29udGV4dC0+SUFTZXRWZXJ0ZXhCdWZmZXJzKDAs
IDEsIG1WZXJ0ZXhCdWZmZXIuR2V0QWRkcmVzc09mKCksICZnX1ZlcnRleFNpemUsICZvZmZzZXQp
OwogICAgIGRldmljZUNvbnRleHQtPklBU2V0UHJpbWl0aXZlVG9wb2xvZ3koRDNEX1BSSU1JVElW
RV9UT1BPTE9HWV9UUklBTkdMRVNUUklQKTsKIAogICAgIC8vIEFwcGx5IHJlbmRlciB0YXJnZXRz
Ci0gICAgbVJlbmRlcmVyLT5nZXRTdGF0ZU1hbmFnZXIoKS0+c2V0T25lVGltZVJlbmRlclRhcmdl
dHMocnR2cywgZHN2KTsKKyAgICBtUmVuZGVyZXItPmdldFN0YXRlTWFuYWdlcigpLT5zZXRPbmVU
aW1lUmVuZGVyVGFyZ2V0cygmcnR2c1swXSwgbnVtUnR2cywgZHN2KTsKIAogICAgIC8vIERyYXcg
dGhlIGNsZWFyIHF1YWQKICAgICBkZXZpY2VDb250ZXh0LT5EcmF3KDQsIDApOwpAQCAtNTQ0LDEw
OSArNTgwLDQgQEAgZ2w6OkVycm9yIENsZWFyMTE6OmNsZWFyRnJhbWVidWZmZXIoY29uc3QgQ2xl
YXJQYXJhbWV0ZXJzICZjbGVhclBhcmFtcywKIAogICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
fQotCi1JRDNEMTFCbGVuZFN0YXRlICpDbGVhcjExOjpnZXRCbGVuZFN0YXRlKGNvbnN0IHN0ZDo6
dmVjdG9yPE1hc2tlZFJlbmRlclRhcmdldD4mIHJ0cykKLXsKLSAgICBDbGVhckJsZW5kSW5mbyBi
bGVuZEtleSA9IHt9OwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgRDNEMTFfU0lN
VUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09VTlQ7IGkrKykKLSAgICB7Ci0gICAgICAgIGlmIChp
IDwgcnRzLnNpemUoKSkKLSAgICAgICAgewotICAgICAgICAgICAgUmVuZGVyVGFyZ2V0MTEgKnJ0
ID0gcnRzW2ldLnJlbmRlclRhcmdldDsKLSAgICAgICAgICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZv
cm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8ocnQtPmdldEludGVy
bmFsRm9ybWF0KCkpOwotCi0gICAgICAgICAgICBibGVuZEtleS5tYXNrQ2hhbm5lbHNbaV1bMF0g
PSAocnRzW2ldLmNvbG9yTWFza1swXSAmJiBmb3JtYXRJbmZvLnJlZEJpdHMgICA+IDApOwotICAg
ICAgICAgICAgYmxlbmRLZXkubWFza0NoYW5uZWxzW2ldWzFdID0gKHJ0c1tpXS5jb2xvck1hc2tb
MV0gJiYgZm9ybWF0SW5mby5ncmVlbkJpdHMgPiAwKTsKLSAgICAgICAgICAgIGJsZW5kS2V5Lm1h
c2tDaGFubmVsc1tpXVsyXSA9IChydHNbaV0uY29sb3JNYXNrWzJdICYmIGZvcm1hdEluZm8uYmx1
ZUJpdHMgID4gMCk7Ci0gICAgICAgICAgICBibGVuZEtleS5tYXNrQ2hhbm5lbHNbaV1bM10gPSAo
cnRzW2ldLmNvbG9yTWFza1szXSAmJiBmb3JtYXRJbmZvLmFscGhhQml0cyA+IDApOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgYmxlbmRLZXkubWFza0No
YW5uZWxzW2ldWzBdID0gZmFsc2U7Ci0gICAgICAgICAgICBibGVuZEtleS5tYXNrQ2hhbm5lbHNb
aV1bMV0gPSBmYWxzZTsKLSAgICAgICAgICAgIGJsZW5kS2V5Lm1hc2tDaGFubmVsc1tpXVsyXSA9
IGZhbHNlOwotICAgICAgICAgICAgYmxlbmRLZXkubWFza0NoYW5uZWxzW2ldWzNdID0gZmFsc2U7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBDbGVhckJsZW5kU3RhdGVNYXA6OmNvbnN0X2l0ZXJh
dG9yIGkgPSBtQ2xlYXJCbGVuZFN0YXRlcy5maW5kKGJsZW5kS2V5KTsKLSAgICBpZiAoaSAhPSBt
Q2xlYXJCbGVuZFN0YXRlcy5lbmQoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBpLT5zZWNvbmQ7
Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIEQzRDExX0JMRU5EX0RFU0MgYmxlbmRE
ZXNjID0geyAwIH07Ci0gICAgICAgIGJsZW5kRGVzYy5BbHBoYVRvQ292ZXJhZ2VFbmFibGUgPSBG
QUxTRTsKLSAgICAgICAgYmxlbmREZXNjLkluZGVwZW5kZW50QmxlbmRFbmFibGUgPSAocnRzLnNp
emUoKSA+IDEpID8gVFJVRSA6IEZBTFNFOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGog
PSAwOyBqIDwgRDNEMTFfU0lNVUxUQU5FT1VTX1JFTkRFUl9UQVJHRVRfQ09VTlQ7IGorKykKLSAg
ICAgICAgewotICAgICAgICAgICAgYmxlbmREZXNjLlJlbmRlclRhcmdldFtqXS5CbGVuZEVuYWJs
ZSA9IEZBTFNFOwotICAgICAgICAgICAgYmxlbmREZXNjLlJlbmRlclRhcmdldFtqXS5SZW5kZXJU
YXJnZXRXcml0ZU1hc2sgPSBnbF9kM2QxMTo6Q29udmVydENvbG9yTWFzayhibGVuZEtleS5tYXNr
Q2hhbm5lbHNbal1bMF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kS2V5
Lm1hc2tDaGFubmVsc1tqXVsxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxl
bmRLZXkubWFza0NoYW5uZWxzW2pdWzJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBibGVuZEtleS5tYXNrQ2hhbm5lbHNbal1bM10pOwotICAgICAgICB9Ci0KLSAgICAgICAgSUQz
RDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwotICAgICAgICBJRDNE
MTFCbGVuZFN0YXRlKiBibGVuZFN0YXRlID0gbnVsbHB0cjsKLSAgICAgICAgSFJFU1VMVCByZXN1
bHQgPSBkZXZpY2UtPkNyZWF0ZUJsZW5kU3RhdGUoJmJsZW5kRGVzYywgJmJsZW5kU3RhdGUpOwot
ICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkgfHwgIWJsZW5kU3RhdGUpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEVSUigiVW5hYmxlIHRvIGNyZWF0ZSBhIElEM0QxMUJsZW5kU3RhdGUsIEhSRVNV
TFQ6IDB4JVguIiwgcmVzdWx0KTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgICAg
ICB9Ci0KLSAgICAgICAgbUNsZWFyQmxlbmRTdGF0ZXNbYmxlbmRLZXldID0gYmxlbmRTdGF0ZTsK
LQotICAgICAgICByZXR1cm4gYmxlbmRTdGF0ZTsKLSAgICB9Ci19Ci0KLUlEM0QxMURlcHRoU3Rl
bmNpbFN0YXRlICpDbGVhcjExOjpnZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBDbGVhclBhcmFt
ZXRlcnMgJmNsZWFyUGFyYW1zKQotewotICAgIENsZWFyRGVwdGhTdGVuY2lsSW5mbyBkc0tleSA9
IHsgMCB9OwotICAgIGRzS2V5LmNsZWFyRGVwdGggPSBjbGVhclBhcmFtcy5jbGVhckRlcHRoOwot
ICAgIGRzS2V5LmNsZWFyU3RlbmNpbCA9IGNsZWFyUGFyYW1zLmNsZWFyU3RlbmNpbDsKLSAgICBk
c0tleS5zdGVuY2lsV3JpdGVNYXNrID0gY2xlYXJQYXJhbXMuc3RlbmNpbFdyaXRlTWFzayAmIDB4
RkY7Ci0KLSAgICBDbGVhckRlcHRoU3RlbmNpbFN0YXRlTWFwOjpjb25zdF9pdGVyYXRvciBpID0g
bUNsZWFyRGVwdGhTdGVuY2lsU3RhdGVzLmZpbmQoZHNLZXkpOwotICAgIGlmIChpICE9IG1DbGVh
ckRlcHRoU3RlbmNpbFN0YXRlcy5lbmQoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBpLT5zZWNv
bmQ7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIEQzRDExX0RFUFRIX1NURU5DSUxf
REVTQyBkc0Rlc2MgPSB7IDAgfTsKLSAgICAgICAgZHNEZXNjLkRlcHRoRW5hYmxlID0gZHNLZXku
Y2xlYXJEZXB0aCA/IFRSVUUgOiBGQUxTRTsKLSAgICAgICAgZHNEZXNjLkRlcHRoV3JpdGVNYXNr
ID0gZHNLZXkuY2xlYXJEZXB0aCA/IEQzRDExX0RFUFRIX1dSSVRFX01BU0tfQUxMIDogRDNEMTFf
REVQVEhfV1JJVEVfTUFTS19aRVJPOwotICAgICAgICBkc0Rlc2MuRGVwdGhGdW5jID0gRDNEMTFf
Q09NUEFSSVNPTl9BTFdBWVM7Ci0gICAgICAgIGRzRGVzYy5TdGVuY2lsRW5hYmxlID0gZHNLZXku
Y2xlYXJTdGVuY2lsID8gVFJVRSA6IEZBTFNFOwotICAgICAgICBkc0Rlc2MuU3RlbmNpbFJlYWRN
YXNrID0gMDsKLSAgICAgICAgZHNEZXNjLlN0ZW5jaWxXcml0ZU1hc2sgPSBkc0tleS5zdGVuY2ls
V3JpdGVNYXNrOwotICAgICAgICBkc0Rlc2MuRnJvbnRGYWNlLlN0ZW5jaWxGYWlsT3AgPSBEM0Qx
MV9TVEVOQ0lMX09QX1JFUExBQ0U7Ci0gICAgICAgIGRzRGVzYy5Gcm9udEZhY2UuU3RlbmNpbERl
cHRoRmFpbE9wID0gRDNEMTFfU1RFTkNJTF9PUF9SRVBMQUNFOwotICAgICAgICBkc0Rlc2MuRnJv
bnRGYWNlLlN0ZW5jaWxQYXNzT3AgPSBEM0QxMV9TVEVOQ0lMX09QX1JFUExBQ0U7Ci0gICAgICAg
IGRzRGVzYy5Gcm9udEZhY2UuU3RlbmNpbEZ1bmMgPSBEM0QxMV9DT01QQVJJU09OX0FMV0FZUzsK
LSAgICAgICAgZHNEZXNjLkJhY2tGYWNlLlN0ZW5jaWxGYWlsT3AgPSBEM0QxMV9TVEVOQ0lMX09Q
X1JFUExBQ0U7Ci0gICAgICAgIGRzRGVzYy5CYWNrRmFjZS5TdGVuY2lsRGVwdGhGYWlsT3AgPSBE
M0QxMV9TVEVOQ0lMX09QX1JFUExBQ0U7Ci0gICAgICAgIGRzRGVzYy5CYWNrRmFjZS5TdGVuY2ls
UGFzc09wID0gRDNEMTFfU1RFTkNJTF9PUF9SRVBMQUNFOwotICAgICAgICBkc0Rlc2MuQmFja0Zh
Y2UuU3RlbmNpbEZ1bmMgPSBEM0QxMV9DT01QQVJJU09OX0FMV0FZUzsKLQotICAgICAgICBJRDNE
MTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7Ci0gICAgICAgIElEM0Qx
MURlcHRoU3RlbmNpbFN0YXRlKiBkc1N0YXRlID0gbnVsbHB0cjsKLSAgICAgICAgSFJFU1VMVCBy
ZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZURlcHRoU3RlbmNpbFN0YXRlKCZkc0Rlc2MsICZkc1N0YXRl
KTsKLSAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpIHx8ICFkc1N0YXRlKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBFUlIoIlVuYWJsZSB0byBjcmVhdGUgYSBJRDNEMTFEZXB0aFN0ZW5jaWxTdGF0
ZSwgSFJFU1VMVDogMHglWC4iLCByZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgICAgIH0KLQotICAgICAgICBtQ2xlYXJEZXB0aFN0ZW5jaWxTdGF0ZXNbZHNLZXldID0g
ZHNTdGF0ZTsKLQotICAgICAgICByZXR1cm4gZHNTdGF0ZTsKLSAgICB9Ci19Ci0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvQ2xlYXIxMS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9DbGVhcjExLmgKaW5kZXggMTU5NDAyN2VjNmYuLjQ4YjI2Y2IwNDVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL0NsZWFyMTEuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0NsZWFyMTEuaApAQCAtNjAsMzcgKzYwLDIwIEBA
IGNsYXNzIENsZWFyMTEgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgZDNkMTE6OkxhenlT
aGFkZXI8SUQzRDExUGl4ZWxTaGFkZXI+IHBpeGVsU2hhZGVyOwogICAgIH07CiAKLSAgICB0ZW1w
bGF0ZSA8dW5zaWduZWQgaW50IHZzU2l6ZSwgdW5zaWduZWQgaW50IHBzU2l6ZT4KLSAgICBzdGF0
aWMgQ2xlYXJTaGFkZXIgQ3JlYXRlQ2xlYXJTaGFkZXIoSUQzRDExRGV2aWNlICpkZXZpY2UsIERY
R0lfRk9STUFUIGNvbG9yVHlwZSwgY29uc3QgQllURSgmdnNCeXRlQ29kZSlbdnNTaXplXSwgY29u
c3QgQllURSgmcHNCeXRlQ29kZSlbcHNTaXplXSk7Ci0KLSAgICBzdHJ1Y3QgQ2xlYXJCbGVuZElu
Zm8KLSAgICB7Ci0gICAgICAgIGJvb2wgbWFza0NoYW5uZWxzW0QzRDExX1NJTVVMVEFORU9VU19S
RU5ERVJfVEFSR0VUX0NPVU5UXVs0XTsKLSAgICB9OwotICAgIHR5cGVkZWYgYm9vbCgqQ2xlYXJC
bGVuZEluZm9Db21wYXJpc29uRnVuY3Rpb24pKGNvbnN0IENsZWFyQmxlbmRJbmZvJiwgY29uc3Qg
Q2xlYXJCbGVuZEluZm8gJik7Ci0gICAgdHlwZWRlZiBzdGQ6Om1hcDxDbGVhckJsZW5kSW5mbywg
SUQzRDExQmxlbmRTdGF0ZSosIENsZWFyQmxlbmRJbmZvQ29tcGFyaXNvbkZ1bmN0aW9uPiBDbGVh
ckJsZW5kU3RhdGVNYXA7Ci0KLSAgICBzdHJ1Y3QgQ2xlYXJEZXB0aFN0ZW5jaWxJbmZvCi0gICAg
ewotICAgICAgICBib29sIGNsZWFyRGVwdGg7Ci0gICAgICAgIGJvb2wgY2xlYXJTdGVuY2lsOwot
ICAgICAgICBVSU5UOCBzdGVuY2lsV3JpdGVNYXNrOwotICAgIH07Ci0gICAgdHlwZWRlZiBib29s
KCpDbGVhckRlcHRoU3RlbmNpbEluZm9Db21wYXJpc29uRnVuY3Rpb24pKGNvbnN0IENsZWFyRGVw
dGhTdGVuY2lsSW5mbyYsIGNvbnN0IENsZWFyRGVwdGhTdGVuY2lsSW5mbyAmKTsKLSAgICB0eXBl
ZGVmIHN0ZDo6bWFwPENsZWFyRGVwdGhTdGVuY2lsSW5mbywgSUQzRDExRGVwdGhTdGVuY2lsU3Rh
dGUqLCBDbGVhckRlcHRoU3RlbmNpbEluZm9Db21wYXJpc29uRnVuY3Rpb24+IENsZWFyRGVwdGhT
dGVuY2lsU3RhdGVNYXA7CiAKICAgICBSZW5kZXJlcjExICptUmVuZGVyZXI7CiAKLSAgICBDbGVh
ckJsZW5kU3RhdGVNYXAgbUNsZWFyQmxlbmRTdGF0ZXM7CisgICAgLy8gU3RhdGVzCisgICAgYW5n
bGU6OkNvbVB0cjxJRDNEMTFSYXN0ZXJpemVyU3RhdGU+IG1TY2lzc29yRW5hYmxlZFJhc3Rlcml6
ZXJTdGF0ZTsKKyAgICBhbmdsZTo6Q29tUHRyPElEM0QxMVJhc3Rlcml6ZXJTdGF0ZT4gbVNjaXNz
b3JEaXNhYmxlZFJhc3Rlcml6ZXJTdGF0ZTsKKyAgICBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgbURl
cHRoU3RlbmNpbFN0YXRlS2V5OworICAgIGQzZDExOjpCbGVuZFN0YXRlS2V5IG1CbGVuZFN0YXRl
S2V5OwogCisgICAgLy8gU2hhZGVycyBhbmQgU2hhZGVyIFJlc291cmNlcwogICAgIENsZWFyU2hh
ZGVyICptRmxvYXRDbGVhclNoYWRlcjsKICAgICBDbGVhclNoYWRlciAqbVVpbnRDbGVhclNoYWRl
cjsKICAgICBDbGVhclNoYWRlciAqbUludENsZWFyU2hhZGVyOwotCi0gICAgQ2xlYXJEZXB0aFN0
ZW5jaWxTdGF0ZU1hcCBtQ2xlYXJEZXB0aFN0ZW5jaWxTdGF0ZXM7Ci0KLSAgICBJRDNEMTFCdWZm
ZXIgKm1WZXJ0ZXhCdWZmZXI7Ci0gICAgSUQzRDExUmFzdGVyaXplclN0YXRlICptUmFzdGVyaXpl
clN0YXRlOworICAgIGFuZ2xlOjpDb21QdHI8SUQzRDExQnVmZmVyPiBtVmVydGV4QnVmZmVyOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuY3BwCmluZGV4IDRl
YmFjNjAxNjY3Li4yMjk0NWM5YTA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ29u
dGV4dDExLmNwcApAQCAtODIsNiArODIsOSBAQCBUZXh0dXJlSW1wbCAqQ29udGV4dDExOjpjcmVh
dGVUZXh0dXJlKGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnN0YXRlKQogICAgICAgICAgICAgcmV0
dXJuIG5ldyBUZXh0dXJlRDNEXzJEQXJyYXkoc3RhdGUsIG1SZW5kZXJlcik7CiAgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVM6CiAgICAgICAgICAgICByZXR1cm4gbmV3IFRleHR1
cmVEM0RfRXh0ZXJuYWwoc3RhdGUsIG1SZW5kZXJlcik7CisgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV8yRF9NVUxUSVNBTVBMRToKKyAgICAgICAgICAgIHJldHVybiBuZXcgVGV4dHVyZUQzRF8yRE11
bHRpc2FtcGxlKHN0YXRlLCBtUmVuZGVyZXIpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgIH0KQEAgLTk0LDkgKzk3
LDkgQEAgUmVuZGVyYnVmZmVySW1wbCAqQ29udGV4dDExOjpjcmVhdGVSZW5kZXJidWZmZXIoKQog
ICAgIHJldHVybiBuZXcgUmVuZGVyYnVmZmVyRDNEKG1SZW5kZXJlcik7CiB9CiAKLUJ1ZmZlcklt
cGwgKkNvbnRleHQxMTo6Y3JlYXRlQnVmZmVyKCkKK0J1ZmZlckltcGwgKkNvbnRleHQxMTo6Y3Jl
YXRlQnVmZmVyKGNvbnN0IGdsOjpCdWZmZXJTdGF0ZSAmc3RhdGUpCiB7Ci0gICAgQnVmZmVyMTEg
KmJ1ZmZlciA9IG5ldyBCdWZmZXIxMShtUmVuZGVyZXIpOworICAgIEJ1ZmZlcjExICpidWZmZXIg
PSBuZXcgQnVmZmVyMTEoc3RhdGUsIG1SZW5kZXJlcik7CiAgICAgbVJlbmRlcmVyLT5vbkJ1ZmZl
ckNyZWF0ZShidWZmZXIpOwogICAgIHJldHVybiBidWZmZXI7CiB9CkBAIC0xODksNiArMTkyLDE2
IEBAIGdsOjpFcnJvciBDb250ZXh0MTE6OmRyYXdSYW5nZUVsZW1lbnRzKEdMZW51bSBtb2RlLAog
ICAgIHJldHVybiBtUmVuZGVyZXItPmdlbmVyaWNEcmF3RWxlbWVudHModGhpcywgbW9kZSwgY291
bnQsIHR5cGUsIGluZGljZXMsIDAsIGluZGV4UmFuZ2UpOwogfQogCitnbDo6RXJyb3IgQ29udGV4
dDExOjpkcmF3QXJyYXlzSW5kaXJlY3QoR0xlbnVtIG1vZGUsIGNvbnN0IEdMdm9pZCAqaW5kaXJl
Y3QpCit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2VuZXJpY0RyYXdJbmRpcmVjdCh0aGlzLCBt
b2RlLCBHTF9OT05FLCBpbmRpcmVjdCk7Cit9CisKK2dsOjpFcnJvciBDb250ZXh0MTE6OmRyYXdF
bGVtZW50c0luZGlyZWN0KEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpp
bmRpcmVjdCkKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVyLT5nZW5lcmljRHJhd0luZGlyZWN0KHRo
aXMsIG1vZGUsIHR5cGUsIGluZGlyZWN0KTsKK30KKwogR0xlbnVtIENvbnRleHQxMTo6Z2V0UmVz
ZXRTdGF0dXMoKQogewogICAgIHJldHVybiBtUmVuZGVyZXItPmdldFJlc2V0U3RhdHVzKCk7CkBA
IC0yMjcsOSArMjQwLDkgQEAgdm9pZCBDb250ZXh0MTE6OnBvcEdyb3VwTWFya2VyKCkKICAgICBt
UmVuZGVyZXItPmdldEFubm90YXRvcigpLT5lbmRFdmVudCgpOwogfQogCi12b2lkIENvbnRleHQx
MTo6c3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGly
dHlCaXRzICZkaXJ0eUJpdHMpCit2b2lkIENvbnRleHQxMTo6c3luY1N0YXRlKGNvbnN0IGdsOjpT
dGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpCiB7Ci0gICAgbVJlbmRlcmVyLT5nZXRTdGF0ZU1h
bmFnZXIoKS0+c3luY1N0YXRlKHN0YXRlLCBkaXJ0eUJpdHMpOworICAgIG1SZW5kZXJlci0+Z2V0
U3RhdGVNYW5hZ2VyKCktPnN5bmNTdGF0ZShtU3RhdGUuZ2V0U3RhdGUoKSwgZGlydHlCaXRzKTsK
IH0KIAogR0xpbnQgQ29udGV4dDExOjpnZXRHUFVEaXNqb2ludCgpCkBAIC0yNjcsNCArMjgwLDEw
IEBAIGNvbnN0IGdsOjpMaW1pdGF0aW9ucyAmQ29udGV4dDExOjpnZXROYXRpdmVMaW1pdGF0aW9u
cygpIGNvbnN0CiAgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0TmF0aXZlTGltaXRhdGlvbnMoKTsK
IH0KIAorZ2w6OkVycm9yIENvbnRleHQxMTo6ZGlzcGF0Y2hDb21wdXRlKEdMdWludCBudW1Hcm91
cHNYLCBHTHVpbnQgbnVtR3JvdXBzWSwgR0x1aW50IG51bUdyb3Vwc1opCit7CisgICAgVU5JTVBM
RU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCiB9ICAvLyBuYW1lc3Bh
Y2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvQ29udGV4dDExLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0NvbnRleHQxMS5oCmluZGV4IGRlYmYyZjli
ZTQ0Li45YjRhNjU1MTJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0NvbnRleHQxMS5o
CkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIENvbnRleHQxMSA6IHB1YmxpYyBDb250ZXh0SW1wbAog
ICAgIFJlbmRlcmJ1ZmZlckltcGwgKmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIG92ZXJyaWRlOwogCiAg
ICAgLy8gQnVmZmVyIGNyZWF0aW9uCi0gICAgQnVmZmVySW1wbCAqY3JlYXRlQnVmZmVyKCkgb3Zl
cnJpZGU7CisgICAgQnVmZmVySW1wbCAqY3JlYXRlQnVmZmVyKGNvbnN0IGdsOjpCdWZmZXJTdGF0
ZSAmc3RhdGUpIG92ZXJyaWRlOwogCiAgICAgLy8gVmVydGV4IEFycmF5IGNyZWF0aW9uCiAgICAg
VmVydGV4QXJyYXlJbXBsICpjcmVhdGVWZXJ0ZXhBcnJheShjb25zdCBnbDo6VmVydGV4QXJyYXlT
dGF0ZSAmZGF0YSkgb3ZlcnJpZGU7CkBAIC04OCw2ICs4OCw4IEBAIGNsYXNzIENvbnRleHQxMSA6
IHB1YmxpYyBDb250ZXh0SW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpp
bmRpY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhS
YW5nZSAmaW5kZXhSYW5nZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGRyYXdBcnJheXNJbmRp
cmVjdChHTGVudW0gbW9kZSwgY29uc3QgR0x2b2lkICppbmRpcmVjdCkgb3ZlcnJpZGU7CisgICAg
Z2w6OkVycm9yIGRyYXdFbGVtZW50c0luZGlyZWN0KEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwg
Y29uc3QgR0x2b2lkICppbmRpcmVjdCkgb3ZlcnJpZGU7CiAKICAgICAvLyBEZXZpY2UgbG9zcwog
ICAgIEdMZW51bSBnZXRSZXNldFN0YXR1cygpIG92ZXJyaWRlOwpAQCAtMTAyLDcgKzEwNCw3IEBA
IGNsYXNzIENvbnRleHQxMSA6IHB1YmxpYyBDb250ZXh0SW1wbAogICAgIHZvaWQgcG9wR3JvdXBN
YXJrZXIoKSBvdmVycmlkZTsKIAogICAgIC8vIFN0YXRlIHN5bmMgd2l0aCBkaXJ0eSBiaXRzLgot
ICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsIGNvbnN0IGdsOjpTdGF0
ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpIG92ZXJyaWRlOworICAgIHZvaWQgc3luY1N0YXRlKGNv
bnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpIG92ZXJyaWRlOwogCiAgICAgLy8g
RGlzam9pbnQgdGltZXIgcXVlcmllcwogICAgIEdMaW50IGdldEdQVURpc2pvaW50KCkgb3ZlcnJp
ZGU7CkBAIC0xMTksNiArMTIxLDggQEAgY2xhc3MgQ29udGV4dDExIDogcHVibGljIENvbnRleHRJ
bXBsCiAKICAgICBSZW5kZXJlcjExICpnZXRSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1SZW5k
ZXJlcjsgfQogCisgICAgZ2w6OkVycm9yIGRpc3BhdGNoQ29tcHV0ZShHTHVpbnQgbnVtR3JvdXBz
WCwgR0x1aW50IG51bUdyb3Vwc1ksIEdMdWludCBudW1Hcm91cHNaKSBvdmVycmlkZTsKKwogICBw
cml2YXRlOgogICAgIFJlbmRlcmVyMTEgKm1SZW5kZXJlcjsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0RlYnVn
QW5ub3RhdG9yMTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvRGVidWdBbm5vdGF0b3IxMS5oCmluZGV4IDlkYTRmYTIyMDc5Li42MjY2
MmM0OWFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9EZWJ1Z0Fubm90YXRvcjExLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9EZWJ1Z0Fubm90YXRv
cjExLmgKQEAgLTksMTIgKzksMTIgQEAKICNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfRDNEX0Qz
RDExX0RFQlVHQU5OT1RBVE9SMTFfSF8KICNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfRDNEX0Qz
RDExX0RFQlVHQU5OT1RBVE9SMTFfSF8KIAotI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2lu
Y2x1ZGUgImxpYkFOR0xFL0xvZ2dpbmdBbm5vdGF0b3IuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CiAK
LWNsYXNzIERlYnVnQW5ub3RhdG9yMTEgOiBwdWJsaWMgZ2w6OkRlYnVnQW5ub3RhdG9yCitjbGFz
cyBEZWJ1Z0Fubm90YXRvcjExIDogcHVibGljIGFuZ2xlOjpMb2dnaW5nQW5ub3RhdG9yCiB7CiAg
IHB1YmxpYzoKICAgICBEZWJ1Z0Fubm90YXRvcjExKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZlbmNlMTEuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9GZW5jZTExLmNwcAppbmRleCAwMzhkM2NhYjI4ZS4uODZlYmExOWI2OTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
RmVuY2UxMS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9GZW5jZTExLmNwcApAQCAtNCw3ICs0LDggQEAKIC8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCiAvLwogCi0vLyBGZW5jZTExLmNwcDogRGVmaW5lcyB0aGUgcng6
OkZlbmNlTlYxMSBhbmQgcng6OkZlbmNlU3luYzExIGNsYXNzZXMgd2hpY2ggaW1wbGVtZW50IHJ4
OjpGZW5jZU5WSW1wbCBhbmQgcng6OkZlbmNlU3luY0ltcGwuCisvLyBGZW5jZTExLmNwcDogRGVm
aW5lcyB0aGUgcng6OkZlbmNlTlYxMSBhbmQgcng6OkZlbmNlU3luYzExIGNsYXNzZXMgd2hpY2gg
aW1wbGVtZW50CisvLyByeDo6RmVuY2VOVkltcGwgYW5kIHJ4OjpGZW5jZVN5bmNJbXBsLgogCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZlbmNlMTEuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oIgpAQCAtMjAsMjQgKzIx
LDI1IEBAIHN0YXRpYyBjb25zdCBpbnQga0RldmljZUxvc3RDaGVja1BlcmlvZCA9IDY0OwogLy8g
VGVtcGxhdGUgaGVscGVycyBmb3Igc2V0IGFuZCB0ZXN0IG9wZXJhdGlvbnMuCiAvLwogCi10ZW1w
bGF0ZTxjbGFzcyBGZW5jZUNsYXNzPgordGVtcGxhdGUgPGNsYXNzIEZlbmNlQ2xhc3M+CiBnbDo6
RXJyb3IgRmVuY2VTZXRIZWxwZXIoRmVuY2VDbGFzcyAqZmVuY2UpCiB7CiAgICAgaWYgKCFmZW5j
ZS0+bVF1ZXJ5KQogICAgIHsKICAgICAgICAgRDNEMTFfUVVFUllfREVTQyBxdWVyeURlc2M7Ci0g
ICAgICAgIHF1ZXJ5RGVzYy5RdWVyeSA9IEQzRDExX1FVRVJZX0VWRU5UOworICAgICAgICBxdWVy
eURlc2MuUXVlcnkgICAgID0gRDNEMTFfUVVFUllfRVZFTlQ7CiAgICAgICAgIHF1ZXJ5RGVzYy5N
aXNjRmxhZ3MgPSAwOwogCiAgICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gZmVuY2UtPm1SZW5kZXJl
ci0+Z2V0RGV2aWNlKCktPkNyZWF0ZVF1ZXJ5KCZxdWVyeURlc2MsICZmZW5jZS0+bVF1ZXJ5KTsK
ICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIGV2ZW50IHF1
ZXJ5LCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgZXZlbnQgcXVlcnksIHJlc3Vs
dDogMHglWC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOwogICAgICAg
ICB9CiAgICAgfQogCiAgICAgZmVuY2UtPm1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgpLT5F
bmQoZmVuY2UtPm1RdWVyeSk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cisg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBGZW5jZUNsYXNz
PgpAQCAtNDYsNyArNDgsOCBAQCBnbDo6RXJyb3IgRmVuY2VUZXN0SGVscGVyKEZlbmNlQ2xhc3Mg
KmZlbmNlLCBib29sIGZsdXNoQ29tbWFuZEJ1ZmZlciwgR0xib29sZWFuCiAgICAgQVNTRVJUKGZl
bmNlLT5tUXVlcnkpOwogCiAgICAgVUlOVCBnZXREYXRhRmxhZ3MgPSAoZmx1c2hDb21tYW5kQnVm
ZmVyID8gMCA6IEQzRDExX0FTWU5DX0dFVERBVEFfRE9OT1RGTFVTSCk7Ci0gICAgSFJFU1VMVCBy
ZXN1bHQgPSBmZW5jZS0+bVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCktPkdldERhdGEoZmVu
Y2UtPm1RdWVyeSwgTlVMTCwgMCwgZ2V0RGF0YUZsYWdzKTsKKyAgICBIUkVTVUxUIHJlc3VsdCA9
CisgICAgICAgIGZlbmNlLT5tUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKS0+R2V0RGF0YShm
ZW5jZS0+bVF1ZXJ5LCBOVUxMLCAwLCBnZXREYXRhRmxhZ3MpOwogCiAgICAgaWYgKEZBSUxFRChy
ZXN1bHQpKQogICAgIHsKQEAgLTU1LDE3ICs1OCwxNCBAQCBnbDo6RXJyb3IgRmVuY2VUZXN0SGVs
cGVyKEZlbmNlQ2xhc3MgKmZlbmNlLCBib29sIGZsdXNoQ29tbWFuZEJ1ZmZlciwgR0xib29sZWFu
CiAKICAgICBBU1NFUlQocmVzdWx0ID09IFNfT0sgfHwgcmVzdWx0ID09IFNfRkFMU0UpOwogICAg
ICpvdXRGaW5pc2hlZCA9ICgocmVzdWx0ID09IFNfT0spID8gR0xfVFJVRSA6IEdMX0ZBTFNFKTsK
LSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKIH0KIAogLy8KIC8vIEZlbmNlTlYxMQogLy8KIAotRmVuY2VOVjExOjpGZW5jZU5WMTEo
UmVuZGVyZXIxMSAqcmVuZGVyZXIpCi0gICAgOiBGZW5jZU5WSW1wbCgpLAotICAgICAgbVJlbmRl
cmVyKHJlbmRlcmVyKSwKLSAgICAgIG1RdWVyeShOVUxMKQorRmVuY2VOVjExOjpGZW5jZU5WMTEo
UmVuZGVyZXIxMSAqcmVuZGVyZXIpIDogRmVuY2VOVkltcGwoKSwgbVJlbmRlcmVyKHJlbmRlcmVy
KSwgbVF1ZXJ5KE5VTEwpCiB7CiB9CiAKQEAgLTEyMSwxNCArMTIxLDEwIEBAIGdsOjpFcnJvciBG
ZW5jZU5WMTE6OmZpbmlzaCgpCiAvLyBXZSBzdGlsbCBvcHQgdG8gdXNlIFFQQy4gSW4gdGhlIHBy
ZXNlbnQgYW5kIG1vdmluZyBmb3J3YXJkLCBtb3N0IG5ld2VyIHN5c3RlbXMgd2lsbCBub3Qgc3Vm
ZmVyCiAvLyBmcm9tIGJ1Z2d5IGltcGxlbWVudGF0aW9ucy4KIAotRmVuY2VTeW5jMTE6OkZlbmNl
U3luYzExKFJlbmRlcmVyMTEgKnJlbmRlcmVyKQotICAgIDogRmVuY2VTeW5jSW1wbCgpLAotICAg
ICAgbVJlbmRlcmVyKHJlbmRlcmVyKSwKLSAgICAgIG1RdWVyeShOVUxMKQorRmVuY2VTeW5jMTE6
OkZlbmNlU3luYzExKFJlbmRlcmVyMTEgKnJlbmRlcmVyKSA6IEZlbmNlU3luY0ltcGwoKSwgbVJl
bmRlcmVyKHJlbmRlcmVyKSwgbVF1ZXJ5KE5VTEwpCiB7CiAgICAgTEFSR0VfSU5URUdFUiBjb3Vu
dGVyRnJlcWVuY3kgPSB7fTsKLSAgICBCT09MIHN1Y2Nlc3MgPSBRdWVyeVBlcmZvcm1hbmNlRnJl
cXVlbmN5KCZjb3VudGVyRnJlcWVuY3kpOwotICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFCTEUo
c3VjY2Vzcyk7CisgICAgQk9PTCBzdWNjZXNzICAgICAgICAgICAgICAgICAgPSBRdWVyeVBlcmZv
cm1hbmNlRnJlcXVlbmN5KCZjb3VudGVyRnJlcWVuY3kpOwogICAgIEFTU0VSVChzdWNjZXNzKTsK
IAogICAgIG1Db3VudGVyRnJlcXVlbmN5ID0gY291bnRlckZyZXFlbmN5LlF1YWRQYXJ0OwpAQCAt
MTUyLDcgKzE0OCw3IEBAIGdsOjpFcnJvciBGZW5jZVN5bmMxMTo6Y2xpZW50V2FpdChHTGJpdGZp
ZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3V0LCBHTGVudW0gKm91CiAgICAgYm9vbCBmbHVzaENv
bW1hbmRCdWZmZXIgPSAoKGZsYWdzICYgR0xfU1lOQ19GTFVTSF9DT01NQU5EU19CSVQpICE9IDAp
OwogCiAgICAgR0xib29sZWFuIHJlc3VsdCA9IEdMX0ZBTFNFOwotICAgIGdsOjpFcnJvciBlcnJv
ciA9IEZlbmNlVGVzdEhlbHBlcih0aGlzLCBmbHVzaENvbW1hbmRCdWZmZXIsICZyZXN1bHQpOwor
ICAgIGdsOjpFcnJvciBlcnJvciAgPSBGZW5jZVRlc3RIZWxwZXIodGhpcywgZmx1c2hDb21tYW5k
QnVmZmVyLCAmcmVzdWx0KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKICAgICAg
ICAgKm91dFJlc3VsdCA9IEdMX1dBSVRfRkFJTEVEOwpAQCAtMTYyLDIyICsxNTgsMjEgQEAgZ2w6
OkVycm9yIEZlbmNlU3luYzExOjpjbGllbnRXYWl0KEdMYml0ZmllbGQgZmxhZ3MsIEdMdWludDY0
IHRpbWVvdXQsIEdMZW51bSAqb3UKICAgICBpZiAocmVzdWx0ID09IEdMX1RSVUUpCiAgICAgewog
ICAgICAgICAqb3V0UmVzdWx0ID0gR0xfQUxSRUFEWV9TSUdOQUxFRDsKLSAgICAgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
ICAgIH0KIAogICAgIGlmICh0aW1lb3V0ID09IDApCiAgICAgewogICAgICAgICAqb3V0UmVzdWx0
ID0gR0xfVElNRU9VVF9FWFBJUkVEOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAgTEFSR0Vf
SU5URUdFUiBjdXJyZW50Q291bnRlciA9IHt9OwotICAgIEJPT0wgc3VjY2VzcyA9IFF1ZXJ5UGVy
Zm9ybWFuY2VDb3VudGVyKCZjdXJyZW50Q291bnRlcik7Ci0gICAgVU5VU0VEX0FTU0VSVElPTl9W
QVJJQUJMRShzdWNjZXNzKTsKKyAgICBCT09MIHN1Y2Nlc3MgICAgICAgICAgICAgICAgID0gUXVl
cnlQZXJmb3JtYW5jZUNvdW50ZXIoJmN1cnJlbnRDb3VudGVyKTsKICAgICBBU1NFUlQoc3VjY2Vz
cyk7CiAKICAgICBMT05HTE9ORyB0aW1lb3V0SW5TZWNvbmRzID0gc3RhdGljX2Nhc3Q8TE9OR0xP
Tkc+KHRpbWVvdXQpICogc3RhdGljX2Nhc3Q8TE9OR0xPTkc+KDEwMDAwMDBsbCk7Ci0gICAgTE9O
R0xPTkcgZW5kQ291bnRlciA9IGN1cnJlbnRDb3VudGVyLlF1YWRQYXJ0ICsgbUNvdW50ZXJGcmVx
dWVuY3kgKiB0aW1lb3V0SW5TZWNvbmRzOworICAgIExPTkdMT05HIGVuZENvdW50ZXIgICAgICAg
PSBjdXJyZW50Q291bnRlci5RdWFkUGFydCArIG1Db3VudGVyRnJlcXVlbmN5ICogdGltZW91dElu
U2Vjb25kczsKIAogICAgIGludCBsb29wQ291bnQgPSAwOwogICAgIHdoaWxlIChjdXJyZW50Q291
bnRlci5RdWFkUGFydCA8IGVuZENvdW50ZXIgJiYgIXJlc3VsdCkKQEAgLTE4NSw3ICsxODAsNiBA
QCBnbDo6RXJyb3IgRmVuY2VTeW5jMTE6OmNsaWVudFdhaXQoR0xiaXRmaWVsZCBmbGFncywgR0x1
aW50NjQgdGltZW91dCwgR0xlbnVtICpvdQogICAgICAgICBsb29wQ291bnQrKzsKICAgICAgICAg
U2NoZWR1bGVZaWVsZCgpOwogICAgICAgICBzdWNjZXNzID0gUXVlcnlQZXJmb3JtYW5jZUNvdW50
ZXIoJmN1cnJlbnRDb3VudGVyKTsKLSAgICAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShz
dWNjZXNzKTsKICAgICAgICAgQVNTRVJUKHN1Y2Nlc3MpOwogCiAgICAgICAgIGVycm9yID0gRmVu
Y2VUZXN0SGVscGVyKHRoaXMsIGZsdXNoQ29tbWFuZEJ1ZmZlciwgJnJlc3VsdCk7CkBAIC0yMTIs
MzIgKzIwNiwzMiBAQCBnbDo6RXJyb3IgRmVuY2VTeW5jMTE6OmNsaWVudFdhaXQoR0xiaXRmaWVs
ZCBmbGFncywgR0x1aW50NjQgdGltZW91dCwgR0xlbnVtICpvdQogICAgICAgICAqb3V0UmVzdWx0
ID0gR0xfQ09ORElUSU9OX1NBVElTRklFRDsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9y
IEZlbmNlU3luYzExOjpzZXJ2ZXJXYWl0KEdMYml0ZmllbGQgZmxhZ3MsIEdMdWludDY0IHRpbWVv
dXQpCiB7CiAgICAgLy8gQmVjYXVzZSBvdXIgQVBJIGlzIGN1cnJlbnRseSBkZXNpZ25lZCB0byBi
ZSBjYWxsZWQgZnJvbSBhIHNpbmdsZSB0aHJlYWQsIHdlIGRvbid0IG5lZWQgdG8gZG8KLSAgICAv
LyBleHRyYSB3b3JrIGZvciBhIHNlcnZlci1zaWRlIGZlbmNlLiBHUFUgY29tbWFuZHMgaXNzdWVk
IGFmdGVyIHRoZSBmZW5jZSBpcyBjcmVhdGVkIHdpbGwgYWx3YXlzCi0gICAgLy8gYmUgcHJvY2Vz
c2VkIGFmdGVyIHRoZSBmZW5jZSBpcyBzaWduYWxlZC4KLSAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X05PX0VSUk9SKTsKKyAgICAvLyBleHRyYSB3b3JrIGZvciBhIHNlcnZlci1zaWRlIGZlbmNlLiBH
UFUgY29tbWFuZHMgaXNzdWVkIGFmdGVyIHRoZSBmZW5jZSBpcyBjcmVhdGVkIHdpbGwKKyAgICAv
LyBhbHdheXMgYmUgcHJvY2Vzc2VkIGFmdGVyIHRoZSBmZW5jZSBpcyBzaWduYWxlZC4KKyAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEZlbmNlU3luYzExOjpnZXRTdGF0
dXMoR0xpbnQgKm91dFJlc3VsdCkKIHsKICAgICBHTGJvb2xlYW4gcmVzdWx0ID0gR0xfRkFMU0U7
Ci0gICAgZ2w6OkVycm9yIGVycm9yID0gRmVuY2VUZXN0SGVscGVyKHRoaXMsIGZhbHNlLCAmcmVz
dWx0KTsKKyAgICBnbDo6RXJyb3IgZXJyb3IgID0gRmVuY2VUZXN0SGVscGVyKHRoaXMsIGZhbHNl
LCAmcmVzdWx0KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgLy8g
VGhlIHNwZWMgZG9lcyBub3Qgc3BlY2lmeSBhbnkgd2F5IHRvIHJlcG9ydCBlcnJvcnMgZHVyaW5n
IHRoZSBzdGF0dXMgdGVzdCAoZS5nLiBkZXZpY2UgbG9zdCkKLSAgICAgICAgLy8gc28gd2UgcmVw
b3J0IHRoZSBmZW5jZSBpcyB1bmJsb2NrZWQgaW4gY2FzZSBvZiBlcnJvciBvciBzaWduYWxlZC4K
KyAgICAgICAgLy8gVGhlIHNwZWMgZG9lcyBub3Qgc3BlY2lmeSBhbnkgd2F5IHRvIHJlcG9ydCBl
cnJvcnMgZHVyaW5nIHRoZSBzdGF0dXMgdGVzdCAoZS5nLiBkZXZpY2UKKyAgICAgICAgLy8gbG9z
dCkgc28gd2UgcmVwb3J0IHRoZSBmZW5jZSBpcyB1bmJsb2NrZWQgaW4gY2FzZSBvZiBlcnJvciBv
ciBzaWduYWxlZC4KICAgICAgICAgKm91dFJlc3VsdCA9IEdMX1NJR05BTEVEOwogCiAgICAgICAg
IHJldHVybiBlcnJvcjsKICAgICB9CiAKICAgICAqb3V0UmVzdWx0ID0gKHJlc3VsdCA/IEdMX1NJ
R05BTEVEIDogR0xfVU5TSUdOQUxFRCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIHJ4Cit9
ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRnJhbWVidWZmZXIxMS5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZyYW1lYnVm
ZmVyMTEuY3BwCmluZGV4IGE3MDI4N2NjYjRhLi5jYzA1NThmMDMyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GcmFt
ZWJ1ZmZlcjExLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL0ZyYW1lYnVmZmVyMTEuY3BwCkBAIC05LDcgKzksNyBAQAogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmgiCiAKICNp
bmNsdWRlICJjb21tb24vZGVidWcuaCIKLSNpbmNsdWRlICJjb21tb24vQml0U2V0SXRlcmF0b3Iu
aCIKKyNpbmNsdWRlICJjb21tb24vYml0c2V0X3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL0J1ZmZlcjExLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL0NsZWFyMTEuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvVGV4dHVyZVN0b3JhZ2UxMS5oIgpAQCAtNTQsNyArNTQsNyBAQCBnbDo6RXJyb3IgTWFy
a0F0dGFjaG1lbnRzRGlydHkoY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudCAqYXR0YWNo
bWVudCkKIAogdm9pZCBVcGRhdGVDYWNoZWRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyQXR0YWNobWVudCAqYXR0YWNobWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFJlbmRlclRhcmdldDExIComY2FjaGVkUmVuZGVyVGFyZ2V0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ2hhbm5lbEJpbmRpbmcgKmNoYW5uZWxCaW5kaW5nKQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2w6Ok9uQXR0YWNobWVudERpcnR5QmluZGluZyAqY2hhbm5lbEJp
bmRpbmcpCiB7CiAgICAgUmVuZGVyVGFyZ2V0MTEgKm5ld1JlbmRlclRhcmdldCA9IG51bGxwdHI7
CiAgICAgaWYgKGF0dGFjaG1lbnQpCkBAIC03OCwxMCArNzgsMTAgQEAgRnJhbWVidWZmZXIxMTo6
RnJhbWVidWZmZXIxMShjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSwgUmVuZGVyZXIx
MSAqcmVuZGUKIHsKICAgICBBU1NFUlQobVJlbmRlcmVyICE9IG51bGxwdHIpOwogICAgIG1DYWNo
ZWRDb2xvclJlbmRlclRhcmdldHMuZmlsbChudWxscHRyKTsKLSAgICBmb3IgKHNpemVfdCBjb2xv
ckluZGV4ID0gMDsgY29sb3JJbmRleCA8IGRhdGEuZ2V0Q29sb3JBdHRhY2htZW50cygpLnNpemUo
KTsgKytjb2xvckluZGV4KQorICAgIGZvciAodWludDMyX3QgY29sb3JJbmRleCA9IDA7CisgICAg
ICAgICBjb2xvckluZGV4IDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRhdGEuZ2V0Q29sb3JBdHRh
Y2htZW50cygpLnNpemUoKSk7ICsrY29sb3JJbmRleCkKICAgICB7Ci0gICAgICAgIG1Db2xvclJl
bmRlclRhcmdldHNEaXJ0eS5wdXNoX2JhY2soCi0gICAgICAgICAgICBDaGFubmVsQmluZGluZyh0
aGlzLCBzdGF0aWNfY2FzdDxTaWduYWxUb2tlbj4oY29sb3JJbmRleCkpKTsKKyAgICAgICAgbUNv
bG9yUmVuZGVyVGFyZ2V0c0RpcnR5LmVtcGxhY2VfYmFjayh0aGlzLCBjb2xvckluZGV4KTsKICAg
ICB9CiB9CiAKQEAgLTE4Miw3ICsxODIsMTAgQEAgZ2w6OkVycm9yIEZyYW1lYnVmZmVyMTE6Omlu
dmFsaWRhdGVCYXNlKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cywKICAg
ICAgICAgICAgICAgICBzaXplX3QgY29sb3JJbmRleCA9CiAgICAgICAgICAgICAgICAgICAgIChh
dHRhY2htZW50c1tpXSA9PSBHTF9DT0xPUiA/IDB1IDogKGF0dGFjaG1lbnRzW2ldIC0gR0xfQ09M
T1JfQVRUQUNITUVOVDApKTsKICAgICAgICAgICAgICAgICBhdXRvIGNvbG9yQXR0YWNobWVudCA9
IG1TdGF0ZS5nZXRDb2xvckF0dGFjaG1lbnQoY29sb3JJbmRleCk7Ci0gICAgICAgICAgICAgICAg
QU5HTEVfVFJZKGludmFsaWRhdGVBdHRhY2htZW50KGNvbG9yQXR0YWNobWVudCkpOworICAgICAg
ICAgICAgICAgIGlmIChjb2xvckF0dGFjaG1lbnQpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBBTkdMRV9UUlkoaW52YWxpZGF0ZUF0dGFjaG1lbnQoY29sb3JBdHRhY2ht
ZW50KSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC0zNTgsNyArMzYxLDcgQEAgZ2w6OkVycm9yIEZyYW1lYnVm
ZmVyMTE6OmJsaXRJbXBsKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCiBHTGVudW0g
RnJhbWVidWZmZXIxMTo6Z2V0UmVuZGVyVGFyZ2V0SW1wbGVtZW50YXRpb25Gb3JtYXQoUmVuZGVy
VGFyZ2V0RDNEICpyZW5kZXJUYXJnZXQpIGNvbnN0CiB7CiAgICAgUmVuZGVyVGFyZ2V0MTEgKnJl
bmRlclRhcmdldDExID0gR2V0QXM8UmVuZGVyVGFyZ2V0MTE+KHJlbmRlclRhcmdldCk7Ci0gICAg
cmV0dXJuIHJlbmRlclRhcmdldDExLT5nZXRGb3JtYXRTZXQoKS5mb3JtYXQuZmJvSW1wbGVtZW50
YXRpb25JbnRlcm5hbEZvcm1hdDsKKyAgICByZXR1cm4gcmVuZGVyVGFyZ2V0MTEtPmdldEZvcm1h
dFNldCgpLmZvcm1hdCgpLmZib0ltcGxlbWVudGF0aW9uSW50ZXJuYWxGb3JtYXQ7CiB9CiAKIHZv
aWQgRnJhbWVidWZmZXIxMTo6dXBkYXRlQ29sb3JSZW5kZXJUYXJnZXQoc2l6ZV90IGNvbG9ySW5k
ZXgpCkBAIC0zNzQsNyArMzc3LDcgQEAgdm9pZCBGcmFtZWJ1ZmZlcjExOjp1cGRhdGVEZXB0aFN0
ZW5jaWxSZW5kZXJUYXJnZXQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbURlcHRo
U3RlbmNpbFJlbmRlclRhcmdldERpcnR5KTsKIH0KIAotdm9pZCBGcmFtZWJ1ZmZlcjExOjpzeW5j
U3RhdGUoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykKK3ZvaWQg
RnJhbWVidWZmZXIxMTo6c3luY1N0YXRlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwgY29uc3Qg
Z2w6OkZyYW1lYnVmZmVyOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykKIHsKICAgICBtUmVuZGVyZXIt
PmdldFN0YXRlTWFuYWdlcigpLT5pbnZhbGlkYXRlUmVuZGVyVGFyZ2V0KCk7CiAKQEAgLTQwNywx
MiArNDEwLDEyIEBAIHZvaWQgRnJhbWVidWZmZXIxMTo6c3luY1N0YXRlKGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlcjo6RGlydHlCaXRzICZkaXJ0eUJpdHMpCiAgICAgLy8gV2Ugc2hvdWxkIG5vdCBoYXZl
IGRpcnRpZWQgYW55IGFkZGl0aW9uYWwgc3RhdGUgZHVyaW5nIG91ciBzeW5jLgogICAgIEFTU0VS
VCghbUludGVybmFsRGlydHlCaXRzLmFueSgpKTsKIAotICAgIEZyYW1lYnVmZmVyRDNEOjpzeW5j
U3RhdGUoZGlydHlCaXRzKTsKKyAgICBGcmFtZWJ1ZmZlckQzRDo6c3luY1N0YXRlKGNvbnRleHRJ
bXBsLCBkaXJ0eUJpdHMpOwogfQogCi12b2lkIEZyYW1lYnVmZmVyMTE6OnNpZ25hbChTaWduYWxU
b2tlbiB0b2tlbikKK3ZvaWQgRnJhbWVidWZmZXIxMTo6c2lnbmFsKHVpbnQzMl90IGNoYW5uZWxJ
RCkKIHsKLSAgICBpZiAodG9rZW4gPT0gZ2w6OklNUExFTUVOVEFUSU9OX01BWF9GUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UUykKKyAgICBpZiAoY2hhbm5lbElEID09IGdsOjpJTVBMRU1FTlRBVElPTl9N
QVhfRlJBTUVCVUZGRVJfQVRUQUNITUVOVFMpCiAgICAgewogICAgICAgICAvLyBTdGVuY2lsIGlz
IHJlZHVuZGFudCBpbiB0aGlzIGNhc2UuCiAgICAgICAgIG1JbnRlcm5hbERpcnR5Qml0cy5zZXQo
Z2w6OkZyYW1lYnVmZmVyOjpESVJUWV9CSVRfREVQVEhfQVRUQUNITUVOVCk7CkBAIC00MjAsMTkg
KzQyMywyNSBAQCB2b2lkIEZyYW1lYnVmZmVyMTE6OnNpZ25hbChTaWduYWxUb2tlbiB0b2tlbikK
ICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgbUludGVybmFsRGlydHlCaXRzLnNldChn
bDo6RnJhbWVidWZmZXI6OkRJUlRZX0JJVF9DT0xPUl9BVFRBQ0hNRU5UXzAgKyB0b2tlbik7Ci0g
ICAgICAgIG1DYWNoZWRDb2xvclJlbmRlclRhcmdldHNbdG9rZW5dID0gbnVsbHB0cjsKKyAgICAg
ICAgbUludGVybmFsRGlydHlCaXRzLnNldChnbDo6RnJhbWVidWZmZXI6OkRJUlRZX0JJVF9DT0xP
Ul9BVFRBQ0hNRU5UXzAgKyBjaGFubmVsSUQpOworICAgICAgICBtQ2FjaGVkQ29sb3JSZW5kZXJU
YXJnZXRzW2NoYW5uZWxJRF0gPSBudWxscHRyOwogICAgIH0KIH0KIAorZ2w6OkVycm9yIEZyYW1l
YnVmZmVyMTE6OmdldFNhbXBsZVBvc2l0aW9uKHNpemVfdCBpbmRleCwgR0xmbG9hdCAqeHkpIGNv
bnN0Cit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6SW50ZXJuYWxFcnJv
cigpIDw8ICJnZXRTYW1wbGVQb3NpdGlvbiBpcyB1bmltcGxlbWVudGVkLiI7Cit9CisKIGJvb2wg
RnJhbWVidWZmZXIxMTo6aGFzQW55SW50ZXJuYWxEaXJ0eUJpdCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1JbnRlcm5hbERpcnR5Qml0cy5hbnkoKTsKIH0KIAotdm9pZCBGcmFtZWJ1ZmZlcjExOjpz
eW5jSW50ZXJuYWxTdGF0ZSgpCit2b2lkIEZyYW1lYnVmZmVyMTE6OnN5bmNJbnRlcm5hbFN0YXRl
KENvbnRleHRJbXBsICpjb250ZXh0SW1wbCkKIHsKLSAgICBzeW5jU3RhdGUoZ2w6OkZyYW1lYnVm
ZmVyOjpEaXJ0eUJpdHMoKSk7CisgICAgc3luY1N0YXRlKGNvbnRleHRJbXBsLCBnbDo6RnJhbWVi
dWZmZXI6OkRpcnR5Qml0cygpKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDEx
L0ZyYW1lYnVmZmVyMTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvRnJhbWVidWZmZXIxMS5oCmluZGV4IGIxNjgzYTIwNjA3Li5jODNk
MGIzNDU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmgK
QEAgLTE3LDcgKzE3LDcgQEAgbmFtZXNwYWNlIHJ4CiB7CiBjbGFzcyBSZW5kZXJlcjExOwogCi1j
bGFzcyBGcmFtZWJ1ZmZlcjExIDogcHVibGljIEZyYW1lYnVmZmVyRDNELCBwdWJsaWMgYW5nbGU6
OlNpZ25hbFJlY2VpdmVyCitjbGFzcyBGcmFtZWJ1ZmZlcjExIDogcHVibGljIEZyYW1lYnVmZmVy
RDNELCBwdWJsaWMgYW5nbGU6OlNpZ25hbFJlY2VpdmVyPD4KIHsKICAgcHVibGljOgogICAgIEZy
YW1lYnVmZmVyMTEoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJmRhdGEsIFJlbmRlcmVyMTEg
KnJlbmRlcmVyKTsKQEAgLTMwLDcgKzMwLDcgQEAgY2xhc3MgRnJhbWVidWZmZXIxMSA6IHB1Ymxp
YyBGcmFtZWJ1ZmZlckQzRCwgcHVibGljIGFuZ2xlOjpTaWduYWxSZWNlaXZlcgogICAgIC8vIElu
dmFsaWRhdGUgdGhlIGNhY2hlZCBzd2l6emxlcyBvZiBhbGwgYm91bmQgdGV4dHVyZSBhdHRhY2ht
ZW50cy4KICAgICBnbDo6RXJyb3IgbWFya0F0dGFjaG1lbnRzRGlydHkoKSBjb25zdDsKIAotICAg
IHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGlydHlCaXRzICZkaXJ0eUJp
dHMpIG92ZXJyaWRlOworICAgIHZvaWQgc3luY1N0YXRlKENvbnRleHRJbXBsICpjb250ZXh0SW1w
bCwgY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3ZlcnJpZGU7
CiAKICAgICBjb25zdCBSZW5kZXJUYXJnZXRBcnJheSAmZ2V0Q2FjaGVkQ29sb3JSZW5kZXJUYXJn
ZXRzKCkgY29uc3QKICAgICB7CkBAIC00Miw5ICs0MiwxMSBAQCBjbGFzcyBGcmFtZWJ1ZmZlcjEx
IDogcHVibGljIEZyYW1lYnVmZmVyRDNELCBwdWJsaWMgYW5nbGU6OlNpZ25hbFJlY2VpdmVyCiAg
ICAgfQogCiAgICAgYm9vbCBoYXNBbnlJbnRlcm5hbERpcnR5Qml0KCkgY29uc3Q7Ci0gICAgdm9p
ZCBzeW5jSW50ZXJuYWxTdGF0ZSgpOworICAgIHZvaWQgc3luY0ludGVybmFsU3RhdGUoQ29udGV4
dEltcGwgKmNvbnRleHRJbXBsKTsKIAotICAgIHZvaWQgc2lnbmFsKGFuZ2xlOjpTaWduYWxUb2tl
biB0b2tlbikgb3ZlcnJpZGU7CisgICAgdm9pZCBzaWduYWwodWludDMyX3QgY2hhbm5lbElEKSBv
dmVycmlkZTsKKworICAgIGdsOjpFcnJvciBnZXRTYW1wbGVQb3NpdGlvbihzaXplX3QgaW5kZXgs
IEdMZmxvYXQgKnh5KSBjb25zdCBvdmVycmlkZTsKIAogICBwcml2YXRlOgogICAgIGdsOjpFcnJv
ciBjbGVhckltcGwoQ29udGV4dEltcGwgKmNvbnRleHQsIGNvbnN0IENsZWFyUGFyYW1ldGVycyAm
Y2xlYXJQYXJhbXMpIG92ZXJyaWRlOwpAQCAtNzcsOCArNzksOCBAQCBjbGFzcyBGcmFtZWJ1ZmZl
cjExIDogcHVibGljIEZyYW1lYnVmZmVyRDNELCBwdWJsaWMgYW5nbGU6OlNpZ25hbFJlY2VpdmVy
CiAgICAgUmVuZGVyVGFyZ2V0QXJyYXkgbUNhY2hlZENvbG9yUmVuZGVyVGFyZ2V0czsKICAgICBS
ZW5kZXJUYXJnZXQxMSAqbUNhY2hlZERlcHRoU3RlbmNpbFJlbmRlclRhcmdldDsKIAotICAgIHN0
ZDo6dmVjdG9yPGFuZ2xlOjpDaGFubmVsQmluZGluZz4gbUNvbG9yUmVuZGVyVGFyZ2V0c0RpcnR5
OwotICAgIGFuZ2xlOjpDaGFubmVsQmluZGluZyBtRGVwdGhTdGVuY2lsUmVuZGVyVGFyZ2V0RGly
dHk7CisgICAgc3RkOjp2ZWN0b3I8Z2w6Ok9uQXR0YWNobWVudERpcnR5QmluZGluZz4gbUNvbG9y
UmVuZGVyVGFyZ2V0c0RpcnR5OworICAgIGdsOjpPbkF0dGFjaG1lbnREaXJ0eUJpbmRpbmcgbURl
cHRoU3RlbmNpbFJlbmRlclRhcmdldERpcnR5OwogCiAgICAgZ2w6OkZyYW1lYnVmZmVyOjpEaXJ0
eUJpdHMgbUludGVybmFsRGlydHlCaXRzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW1hZ2UxMS5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0lt
YWdlMTEuY3BwCmluZGV4IDI5ODNmOWM3ZTRlLi4yNjU3YjFlNTI5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbWFn
ZTExLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL0ltYWdlMTEuY3BwCkBAIC02MCwxMSArNjAsMTEgQEAgZ2w6OkVycm9yIElt
YWdlMTE6OmdlbmVyYXRlTWlwbWFwKEltYWdlMTEgKmRlc3QsCiAgICAgICAgIHJldHVybiBlcnJv
cjsKICAgICB9CiAKLSAgICBjb25zdCB1aW50OF90ICpzb3VyY2VEYXRhID0gcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50OF90Kj4oc3JjTWFwcGVkLnBEYXRhKTsKLSAgICB1aW50OF90ICpkZXN0
RGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGRlc3RNYXBwZWQucERhdGEpOworICAg
IGNvbnN0IHVpbnQ4X3QgKnNvdXJjZURhdGEgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QgKj4oc3JjTWFwcGVkLnBEYXRhKTsKKyAgICB1aW50OF90ICpkZXN0RGF0YSAgICAgICAgID0g
cmVpbnRlcnByZXRfY2FzdDx1aW50OF90ICo+KGRlc3RNYXBwZWQucERhdGEpOwogCiAgICAgYXV0
byBtaXBHZW5lcmF0aW9uRnVuY3Rpb24gPQotICAgICAgICBkM2QxMTo6Rm9ybWF0OjpHZXQoc3Jj
LT5nZXRJbnRlcm5hbEZvcm1hdCgpLCByZW5kZXJlckNhcHMpLmZvcm1hdC5taXBHZW5lcmF0aW9u
RnVuY3Rpb247CisgICAgICAgIGQzZDExOjpGb3JtYXQ6OkdldChzcmMtPmdldEludGVybmFsRm9y
bWF0KCksIHJlbmRlcmVyQ2FwcykuZm9ybWF0KCkubWlwR2VuZXJhdGlvbkZ1bmN0aW9uOwogICAg
IG1pcEdlbmVyYXRpb25GdW5jdGlvbihzcmMtPmdldFdpZHRoKCksIHNyYy0+Z2V0SGVpZ2h0KCks
IHNyYy0+Z2V0RGVwdGgoKSwgc291cmNlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3JjTWFwcGVkLlJvd1BpdGNoLCBzcmNNYXBwZWQuRGVwdGhQaXRjaCwgZGVzdERhdGEsIGRlc3RN
YXBwZWQuUm93UGl0Y2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RNYXBwZWQuRGVw
dGhQaXRjaCk7CkBAIC03OSwxMCArNzksOSBAQCBnbDo6RXJyb3IgSW1hZ2UxMTo6Z2VuZXJhdGVN
aXBtYXAoSW1hZ2UxMSAqZGVzdCwKIAogYm9vbCBJbWFnZTExOjppc0RpcnR5KCkgY29uc3QKIHsK
LSAgICAvLyBJZiBtRGlydHkgaXMgdHJ1ZQotICAgIC8vIEFORCBtU3RhZ2luZ1RleHR1cmUgZG9l
c24ndCBleGlzdCBBTkQgbVN0YWdpbmdUZXh0dXJlIGRvZXNuJ3QgbmVlZCB0byBiZSByZWNvdmVy
ZWQgZnJvbSBUZXh0dXJlU3RvcmFnZQotICAgIC8vIEFORCB0aGUgdGV4dHVyZSBkb2Vzbid0IHJl
cXVpcmUgaW5pdCBkYXRhIChpLmUuIGEgYmxhbmsgbmV3IHRleHR1cmUgd2lsbCBzdWZmaWNlKQot
ICAgIC8vIHRoZW4gaXNEaXJ0eSBzaG91bGQgc3RpbGwgcmV0dXJuIGZhbHNlLgorICAgIC8vIElm
IG1EaXJ0eSBpcyB0cnVlIEFORCBtU3RhZ2luZ1RleHR1cmUgZG9lc24ndCBleGlzdCBBTkQgbVN0
YWdpbmdUZXh0dXJlIGRvZXNuJ3QgbmVlZCB0byBiZQorICAgIC8vIHJlY292ZXJlZCBmcm9tIFRl
eHR1cmVTdG9yYWdlIEFORCB0aGUgdGV4dHVyZSBkb2Vzbid0IHJlcXVpcmUgaW5pdCBkYXRhIChp
LmUuIGEgYmxhbmsgbmV3CisgICAgLy8gdGV4dHVyZSB3aWxsIHN1ZmZpY2UpIHRoZW4gaXNEaXJ0
eSBzaG91bGQgc3RpbGwgcmV0dXJuIGZhbHNlLgogICAgIGlmIChtRGlydHkgJiYgIW1TdGFnaW5n
VGV4dHVyZSAmJiAhbVJlY292ZXJGcm9tU3RvcmFnZSkKICAgICB7CiAgICAgICAgIGNvbnN0IFJl
bmRlcmVyMTFEZXZpY2VDYXBzICZkZXZpY2VDYXBzID0gbVJlbmRlcmVyLT5nZXRSZW5kZXJlcjEx
RGV2aWNlQ2FwcygpOwpAQCAtOTYsMjMgKzk1LDI2IEBAIGJvb2wgSW1hZ2UxMTo6aXNEaXJ0eSgp
IGNvbnN0CiAgICAgcmV0dXJuIG1EaXJ0eTsKIH0KIAotZ2w6OkVycm9yIEltYWdlMTE6OmNvcHlU
b1N0b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIGNvbnN0IGdsOjpJbWFnZUluZGV4ICZp
bmRleCwgY29uc3QgZ2w6OkJveCAmcmVnaW9uKQorZ2w6OkVycm9yIEltYWdlMTE6OmNvcHlUb1N0
b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZyZWdpb24pCiB7CiAgICAgVGV4dHVyZVN0b3Jh
Z2UxMSAqc3RvcmFnZTExID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2UxMT4oc3RvcmFnZSk7CiAKLSAg
ICAvLyBJZiBhbiBhcHAncyBiZWhhdmlvciByZXN1bHRzIGluIGFuIEltYWdlMTEgY29weWluZyBp
dHMgZGF0YSB0by9mcm9tIHRvIGEgVGV4dHVyZVN0b3JhZ2UgbXVsdGlwbGUgdGltZXMsCi0gICAg
Ly8gdGhlbiB3ZSBzaG91bGQganVzdCBrZWVwIHRoZSBzdGFnaW5nIHRleHR1cmUgYXJvdW5kIHRv
IHByZXZlbnQgdGhlIGNvcHlpbmcgZnJvbSBpbXBhY3RpbmcgcGVyZi4KLSAgICAvLyBXZSBhbGxv
dyB0aGUgSW1hZ2UxMSB0byBjb3B5IGl0cyBkYXRhIHRvL2Zyb20gVGV4dHVyZVN0b3JhZ2Ugb25j
ZS4KLSAgICAvLyBUaGlzIGFjY291bnRzIGZvciBhbiBhcHAgbWFraW5nIGEgbGF0ZSBjYWxsIHRv
IGdsR2VuZXJhdGVNaXBtYXAuCisgICAgLy8gSWYgYW4gYXBwJ3MgYmVoYXZpb3IgcmVzdWx0cyBp
biBhbiBJbWFnZTExIGNvcHlpbmcgaXRzIGRhdGEgdG8vZnJvbSB0byBhIFRleHR1cmVTdG9yYWdl
CisgICAgLy8gbXVsdGlwbGUgdGltZXMsIHRoZW4gd2Ugc2hvdWxkIGp1c3Qga2VlcCB0aGUgc3Rh
Z2luZyB0ZXh0dXJlIGFyb3VuZCB0byBwcmV2ZW50IHRoZSBjb3B5aW5nCisgICAgLy8gZnJvbSBp
bXBhY3RpbmcgcGVyZi4gV2UgYWxsb3cgdGhlIEltYWdlMTEgdG8gY29weSBpdHMgZGF0YSB0by9m
cm9tIFRleHR1cmVTdG9yYWdlIG9uY2UuIFRoaXMKKyAgICAvLyBhY2NvdW50cyBmb3IgYW4gYXBw
IG1ha2luZyBhIGxhdGUgY2FsbCB0byBnbEdlbmVyYXRlTWlwbWFwLgogICAgIGJvb2wgYXR0ZW1w
dFRvUmVsZWFzZVN0YWdpbmdUZXh0dXJlID0gKG1SZWNvdmVyZWRGcm9tU3RvcmFnZUNvdW50IDwg
Mik7CiAKICAgICBpZiAoYXR0ZW1wdFRvUmVsZWFzZVN0YWdpbmdUZXh0dXJlKQogICAgIHsKLSAg
ICAgICAgLy8gSWYgYW5vdGhlciBpbWFnZSBpcyByZWx5aW5nIG9uIHRoaXMgU3RvcmFnZSBmb3Ig
aXRzIGRhdGEsIHRoZW4gd2UgbXVzdCBsZXQgaXQgcmVjb3ZlciBpdHMgZGF0YSBiZWZvcmUgd2Ug
b3ZlcndyaXRlIGl0LgorICAgICAgICAvLyBJZiBhbm90aGVyIGltYWdlIGlzIHJlbHlpbmcgb24g
dGhpcyBTdG9yYWdlIGZvciBpdHMgZGF0YSwgdGhlbiB3ZSBtdXN0IGxldCBpdCByZWNvdmVyIGl0
cworICAgICAgICAvLyBkYXRhIGJlZm9yZSB3ZSBvdmVyd3JpdGUgaXQuCiAgICAgICAgIEFOR0xF
X1RSWShzdG9yYWdlMTEtPnJlbGVhc2VBc3NvY2lhdGVkSW1hZ2UoaW5kZXgsIHRoaXMpKTsKICAg
ICB9CiAKLSAgICBJRDNEMTFSZXNvdXJjZSAqc3RhZ2luZ1RleHR1cmUgPSBOVUxMOworICAgIElE
M0QxMVJlc291cmNlICpzdGFnaW5nVGV4dHVyZSAgICAgICA9IE5VTEw7CiAgICAgdW5zaWduZWQg
aW50IHN0YWdpbmdTdWJyZXNvdXJjZUluZGV4ID0gMDsKICAgICBBTkdMRV9UUlkoZ2V0U3RhZ2lu
Z1RleHR1cmUoJnN0YWdpbmdUZXh0dXJlLCAmc3RhZ2luZ1N1YnJlc291cmNlSW5kZXgpKTsKICAg
ICBBTkdMRV9UUlkoCkBAIC0xMjMsMTUgKzEyNSwxNSBAQCBnbDo6RXJyb3IgSW1hZ2UxMTo6Y29w
eVRvU3RvcmFnZShUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwgY29uc3QgZ2w6OkltYWdlSW5kZXgg
JgogICAgIHsKICAgICAgICAgc3RvcmFnZTExLT5hc3NvY2lhdGVJbWFnZSh0aGlzLCBpbmRleCk7
CiAgICAgICAgIHJlbGVhc2VTdGFnaW5nVGV4dHVyZSgpOwotICAgICAgICBtUmVjb3ZlckZyb21T
dG9yYWdlID0gdHJ1ZTsKLSAgICAgICAgbUFzc29jaWF0ZWRTdG9yYWdlID0gc3RvcmFnZTExOwor
ICAgICAgICBtUmVjb3ZlckZyb21TdG9yYWdlICAgPSB0cnVlOworICAgICAgICBtQXNzb2NpYXRl
ZFN0b3JhZ2UgICAgPSBzdG9yYWdlMTE7CiAgICAgICAgIG1Bc3NvY2lhdGVkSW1hZ2VJbmRleCA9
IGluZGV4OwogICAgIH0KIAogICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1ib29sIElt
YWdlMTE6OmlzQXNzb2NpYXRlZFN0b3JhZ2VWYWxpZChUZXh0dXJlU3RvcmFnZTExKiB0ZXh0dXJl
U3RvcmFnZSkgY29uc3QKK2Jvb2wgSW1hZ2UxMTo6aXNBc3NvY2lhdGVkU3RvcmFnZVZhbGlkKFRl
eHR1cmVTdG9yYWdlMTEgKnRleHR1cmVTdG9yYWdlKSBjb25zdAogewogICAgIHJldHVybiAobUFz
c29jaWF0ZWRTdG9yYWdlID09IHRleHR1cmVTdG9yYWdlKTsKIH0KQEAgLTE0MiwxMCArMTQ0LDEy
IEBAIGdsOjpFcnJvciBJbWFnZTExOjpyZWNvdmVyRnJvbUFzc29jaWF0ZWRTdG9yYWdlKCkKICAg
ICB7CiAgICAgICAgIEFOR0xFX1RSWShjcmVhdGVTdGFnaW5nVGV4dHVyZSgpKTsKIAotICAgICAg
ICBib29sIHRleHR1cmVTdG9yYWdlQ29ycmVjdCA9IG1Bc3NvY2lhdGVkU3RvcmFnZS0+aXNBc3Nv
Y2lhdGVkSW1hZ2VWYWxpZChtQXNzb2NpYXRlZEltYWdlSW5kZXgsIHRoaXMpOworICAgICAgICBi
b29sIHRleHR1cmVTdG9yYWdlQ29ycmVjdCA9CisgICAgICAgICAgICBtQXNzb2NpYXRlZFN0b3Jh
Z2UtPmlzQXNzb2NpYXRlZEltYWdlVmFsaWQobUFzc29jaWF0ZWRJbWFnZUluZGV4LCB0aGlzKTsK
IAotICAgICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhlIGNhY2hlZCBUZXh0dXJlU3RvcmFnZSBo
YXMgYmVlbiBtb2RpZmllZCBhZnRlciB0aGlzIEltYWdlMTEgcmVsZWFzZWQgaXRzIGNvcHkgb2Yg
aXRzIGRhdGEuIAotICAgICAgICAvLyBUaGlzIHNob3VsZCBub3QgaGF2ZSBoYXBwZW5lZC4gVGhl
IFRleHR1cmVTdG9yYWdlIHNob3VsZCBoYXZlIHRvbGQgdGhpcyBJbWFnZTExIHRvIHJlY292ZXIg
aXRzIGRhdGEgYmVmb3JlIGl0IHdhcyBvdmVyd3JpdHRlbi4KKyAgICAgICAgLy8gVGhpcyBtZWFu
cyB0aGF0IHRoZSBjYWNoZWQgVGV4dHVyZVN0b3JhZ2UgaGFzIGJlZW4gbW9kaWZpZWQgYWZ0ZXIg
dGhpcyBJbWFnZTExIHJlbGVhc2VkCisgICAgICAgIC8vIGl0cyBjb3B5IG9mIGl0cyBkYXRhLiBU
aGlzIHNob3VsZCBub3QgaGF2ZSBoYXBwZW5lZC4gVGhlIFRleHR1cmVTdG9yYWdlIHNob3VsZCBo
YXZlIHRvbGQKKyAgICAgICAgLy8gdGhpcyBJbWFnZTExIHRvIHJlY292ZXIgaXRzIGRhdGEgYmVm
b3JlIGl0IHdhcyBvdmVyd3JpdHRlbi4KICAgICAgICAgQVNTRVJUKHRleHR1cmVTdG9yYWdlQ29y
cmVjdCk7CiAKICAgICAgICAgaWYgKHRleHR1cmVTdG9yYWdlQ29ycmVjdCkKQEAgLTE3MSwxNyAr
MTc1LDE4IEBAIHZvaWQgSW1hZ2UxMTo6ZGlzYXNzb2NpYXRlU3RvcmFnZSgpCiAgICAgICAgIC8v
IE1ha2UgdGhlIHRleHR1cmVzdG9yYWdlIHJlbGVhc2UgdGhlIEltYWdlMTEgdG9vCiAgICAgICAg
IG1Bc3NvY2lhdGVkU3RvcmFnZS0+ZGlzYXNzb2NpYXRlSW1hZ2UobUFzc29jaWF0ZWRJbWFnZUlu
ZGV4LCB0aGlzKTsKIAotICAgICAgICBtUmVjb3ZlckZyb21TdG9yYWdlID0gZmFsc2U7Ci0gICAg
ICAgIG1Bc3NvY2lhdGVkU3RvcmFnZSA9IE5VTEw7CisgICAgICAgIG1SZWNvdmVyRnJvbVN0b3Jh
Z2UgICA9IGZhbHNlOworICAgICAgICBtQXNzb2NpYXRlZFN0b3JhZ2UgICAgPSBOVUxMOwogICAg
ICAgICBtQXNzb2NpYXRlZEltYWdlSW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFrZUludmFsaWQo
KTsKICAgICB9CiB9CiAKLWJvb2wgSW1hZ2UxMTo6cmVkZWZpbmUoR0xlbnVtIHRhcmdldCwgR0xl
bnVtIGludGVybmFsZm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwgYm9vbCBmb3JjZVJl
bGVhc2UpCitib29sIEltYWdlMTE6OnJlZGVmaW5lKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
Zm9yY2VSZWxlYXNlKQogewotICAgIGlmIChtV2lkdGggIT0gc2l6ZS53aWR0aCB8fAotICAgICAg
ICBtSGVpZ2h0ICE9IHNpemUuaGVpZ2h0IHx8Ci0gICAgICAgIG1JbnRlcm5hbEZvcm1hdCAhPSBp
bnRlcm5hbGZvcm1hdCB8fAorICAgIGlmIChtV2lkdGggIT0gc2l6ZS53aWR0aCB8fCBtSGVpZ2h0
ICE9IHNpemUuaGVpZ2h0IHx8IG1JbnRlcm5hbEZvcm1hdCAhPSBpbnRlcm5hbGZvcm1hdCB8fAog
ICAgICAgICBmb3JjZVJlbGVhc2UpCiAgICAgewogICAgICAgICAvLyBFbmQgdGhlIGFzc29jaWF0
aW9uIHdpdGggdGhlIFRleHR1cmVTdG9yYWdlLCBzaW5jZSB0aGF0IGRhdGEgd2lsbCBiZSBvdXQg
b2YgZGF0ZS4KQEAgLTE4OSwxMSArMTk0LDExIEBAIGJvb2wgSW1hZ2UxMTo6cmVkZWZpbmUoR0xl
bnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmCiAg
ICAgICAgIGRpc2Fzc29jaWF0ZVN0b3JhZ2UoKTsKICAgICAgICAgbVJlY292ZXJlZEZyb21TdG9y
YWdlQ291bnQgPSAwOwogCi0gICAgICAgIG1XaWR0aCA9IHNpemUud2lkdGg7Ci0gICAgICAgIG1I
ZWlnaHQgPSBzaXplLmhlaWdodDsKLSAgICAgICAgbURlcHRoID0gc2l6ZS5kZXB0aDsKKyAgICAg
ICAgbVdpZHRoICAgICAgICAgID0gc2l6ZS53aWR0aDsKKyAgICAgICAgbUhlaWdodCAgICAgICAg
ID0gc2l6ZS5oZWlnaHQ7CisgICAgICAgIG1EZXB0aCAgICAgICAgICA9IHNpemUuZGVwdGg7CiAg
ICAgICAgIG1JbnRlcm5hbEZvcm1hdCA9IGludGVybmFsZm9ybWF0OwotICAgICAgICBtVGFyZ2V0
ID0gdGFyZ2V0OworICAgICAgICBtVGFyZ2V0ICAgICAgICAgPSB0YXJnZXQ7CiAKICAgICAgICAg
Ly8gY29tcHV0ZSB0aGUgZDNkIGZvcm1hdCB0aGF0IHdpbGwgYmUgdXNlZAogICAgICAgICBjb25z
dCBkM2QxMTo6Rm9ybWF0ICZmb3JtYXRJbmZvID0KQEAgLTIxOSw3ICsyMjQsOCBAQCBEWEdJX0ZP
Uk1BVCBJbWFnZTExOjpnZXREWEdJRm9ybWF0KCkgY29uc3QKICAgICByZXR1cm4gbURYR0lGb3Jt
YXQ7CiB9CiAKLS8vIFN0b3JlIHRoZSBwaXhlbCByZWN0YW5nbGUgZGVzaWduYXRlZCBieSB4b2Zm
c2V0LHlvZmZzZXQsd2lkdGgsaGVpZ2h0IHdpdGggcGl4ZWxzIHN0b3JlZCBhcyBmb3JtYXQvdHlw
ZSBhdCBpbnB1dAorLy8gU3RvcmUgdGhlIHBpeGVsIHJlY3RhbmdsZSBkZXNpZ25hdGVkIGJ5IHhv
ZmZzZXQseW9mZnNldCx3aWR0aCxoZWlnaHQgd2l0aCBwaXhlbHMgc3RvcmVkIGFzCisvLyBmb3Jt
YXQvdHlwZSBhdCBpbnB1dAogLy8gaW50byB0aGUgdGFyZ2V0IHBpeGVsIHJlY3RhbmdsZS4KIGds
OjpFcnJvciBJbWFnZTExOjpsb2FkRGF0YShjb25zdCBnbDo6Qm94ICZhcmVhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCkBA
IC0yNDEsMTYgKzI0NywxOCBAQCBnbDo6RXJyb3IgSW1hZ2UxMTo6bG9hZERhdGEoY29uc3QgZ2w6
OkJveCAmYXJlYSwKICAgICAgICAgaW5wdXRTa2lwQnl0ZXMpOwogCiAgICAgY29uc3QgZDNkMTE6
OkRYR0lGb3JtYXRTaXplICZkeGdpRm9ybWF0SW5mbyA9IGQzZDExOjpHZXREWEdJRm9ybWF0U2l6
ZUluZm8obURYR0lGb3JtYXQpOwotICAgIEdMdWludCBvdXRwdXRQaXhlbFNpemUgPSBkeGdpRm9y
bWF0SW5mby5waXhlbEJ5dGVzOworICAgIEdMdWludCBvdXRwdXRQaXhlbFNpemUgICAgICAgICAg
ICAgICAgICAgICAgPSBkeGdpRm9ybWF0SW5mby5waXhlbEJ5dGVzOwogCiAgICAgY29uc3QgZDNk
MTE6OkZvcm1hdCAmZDNkRm9ybWF0SW5mbyA9CiAgICAgICAgIGQzZDExOjpGb3JtYXQ6OkdldCht
SW50ZXJuYWxGb3JtYXQsIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSk7Ci0g
ICAgTG9hZEltYWdlRnVuY3Rpb24gbG9hZEZ1bmN0aW9uID0gZDNkRm9ybWF0SW5mby5sb2FkRnVu
Y3Rpb25zKHR5cGUpLmxvYWRGdW5jdGlvbjsKKyAgICBMb2FkSW1hZ2VGdW5jdGlvbiBsb2FkRnVu
Y3Rpb24gPSBkM2RGb3JtYXRJbmZvLmdldExvYWRGdW5jdGlvbnMoKSh0eXBlKS5sb2FkRnVuY3Rp
b247CiAKICAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwcGVkSW1hZ2U7CiAgICAgQU5H
TEVfVFJZKG1hcChEM0QxMV9NQVBfV1JJVEUsICZtYXBwZWRJbWFnZSkpOwogCi0gICAgdWludDhf
dCAqb2Zmc2V0TWFwcGVkRGF0YSA9IChyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtYXBwZWRJ
bWFnZS5wRGF0YSkgKyAoYXJlYS55ICogbWFwcGVkSW1hZ2UuUm93UGl0Y2ggKyBhcmVhLnggKiBv
dXRwdXRQaXhlbFNpemUgKyBhcmVhLnogKiBtYXBwZWRJbWFnZS5EZXB0aFBpdGNoKSk7CisgICAg
dWludDhfdCAqb2Zmc2V0TWFwcGVkRGF0YSA9IChyZWludGVycHJldF9jYXN0PHVpbnQ4X3QgKj4o
bWFwcGVkSW1hZ2UucERhdGEpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChh
cmVhLnkgKiBtYXBwZWRJbWFnZS5Sb3dQaXRjaCArIGFyZWEueCAqIG91dHB1dFBpeGVsU2l6ZSAr
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYS56ICogbWFwcGVkSW1hZ2Uu
RGVwdGhQaXRjaCkpOwogICAgIGxvYWRGdW5jdGlvbihhcmVhLndpZHRoLCBhcmVhLmhlaWdodCwg
YXJlYS5kZXB0aCwKICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90ICo+KGlucHV0KSArIGlucHV0U2tpcEJ5dGVzLCBpbnB1dFJvd1BpdGNoLAogICAgICAgICAg
ICAgICAgICBpbnB1dERlcHRoUGl0Y2gsIG9mZnNldE1hcHBlZERhdGEsIG1hcHBlZEltYWdlLlJv
d1BpdGNoLCBtYXBwZWRJbWFnZS5EZXB0aFBpdGNoKTsKQEAgLTI2OSwyNyArMjc3LDI5IEBAIGds
OjpFcnJvciBJbWFnZTExOjpsb2FkQ29tcHJlc3NlZERhdGEoY29uc3QgZ2w6OkJveCAmYXJlYSwg
Y29uc3Qgdm9pZCAqaW5wdXQpCiAgICAgQU5HTEVfVFJZX1JFU1VMVChmb3JtYXRJbmZvLmNvbXB1
dGVEZXB0aFBpdGNoKGFyZWEuaGVpZ2h0LCAwLCBpbnB1dFJvd1BpdGNoKSwgaW5wdXREZXB0aFBp
dGNoKTsKIAogICAgIGNvbnN0IGQzZDExOjpEWEdJRm9ybWF0U2l6ZSAmZHhnaUZvcm1hdEluZm8g
PSBkM2QxMTo6R2V0RFhHSUZvcm1hdFNpemVJbmZvKG1EWEdJRm9ybWF0KTsKLSAgICBHTHVpbnQg
b3V0cHV0UGl4ZWxTaXplID0gZHhnaUZvcm1hdEluZm8ucGl4ZWxCeXRlczsKLSAgICBHTHVpbnQg
b3V0cHV0QmxvY2tXaWR0aCA9IGR4Z2lGb3JtYXRJbmZvLmJsb2NrV2lkdGg7Ci0gICAgR0x1aW50
IG91dHB1dEJsb2NrSGVpZ2h0ID0gZHhnaUZvcm1hdEluZm8uYmxvY2tIZWlnaHQ7CisgICAgR0x1
aW50IG91dHB1dFBpeGVsU2l6ZSAgICAgICAgICAgICAgICAgICAgICA9IGR4Z2lGb3JtYXRJbmZv
LnBpeGVsQnl0ZXM7CisgICAgR0x1aW50IG91dHB1dEJsb2NrV2lkdGggICAgICAgICAgICAgICAg
ICAgICA9IGR4Z2lGb3JtYXRJbmZvLmJsb2NrV2lkdGg7CisgICAgR0x1aW50IG91dHB1dEJsb2Nr
SGVpZ2h0ICAgICAgICAgICAgICAgICAgICA9IGR4Z2lGb3JtYXRJbmZvLmJsb2NrSGVpZ2h0Owog
CiAgICAgQVNTRVJUKGFyZWEueCAlIG91dHB1dEJsb2NrV2lkdGggPT0gMCk7CiAgICAgQVNTRVJU
KGFyZWEueSAlIG91dHB1dEJsb2NrSGVpZ2h0ID09IDApOwogCiAgICAgY29uc3QgZDNkMTE6OkZv
cm1hdCAmZDNkRm9ybWF0SW5mbyA9CiAgICAgICAgIGQzZDExOjpGb3JtYXQ6OkdldChtSW50ZXJu
YWxGb3JtYXQsIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSk7Ci0gICAgTG9h
ZEltYWdlRnVuY3Rpb24gbG9hZEZ1bmN0aW9uID0gZDNkRm9ybWF0SW5mby5sb2FkRnVuY3Rpb25z
KEdMX1VOU0lHTkVEX0JZVEUpLmxvYWRGdW5jdGlvbjsKKyAgICBMb2FkSW1hZ2VGdW5jdGlvbiBs
b2FkRnVuY3Rpb24gPQorICAgICAgICBkM2RGb3JtYXRJbmZvLmdldExvYWRGdW5jdGlvbnMoKShH
TF9VTlNJR05FRF9CWVRFKS5sb2FkRnVuY3Rpb247CiAKICAgICBEM0QxMV9NQVBQRURfU1VCUkVT
T1VSQ0UgbWFwcGVkSW1hZ2U7CiAgICAgQU5HTEVfVFJZKG1hcChEM0QxMV9NQVBfV1JJVEUsICZt
YXBwZWRJbWFnZSkpOwogCi0gICAgdWludDhfdCogb2Zmc2V0TWFwcGVkRGF0YSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCo+KG1hcHBlZEltYWdlLnBEYXRhKSArICgoYXJlYS55IC8gb3V0cHV0
QmxvY2tIZWlnaHQpICogbWFwcGVkSW1hZ2UuUm93UGl0Y2ggKwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KGFyZWEueCAvIG91dHB1dEJsb2NrV2lkdGgpICogb3V0cHV0UGl4ZWxTaXplICsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFyZWEueiAqIG1hcHBlZEltYWdlLkRlcHRoUGl0Y2gpOworICAgIHVpbnQ4X3Qg
Km9mZnNldE1hcHBlZERhdGEgPQorICAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QgKj4o
bWFwcGVkSW1hZ2UucERhdGEpICsKKyAgICAgICAgKChhcmVhLnkgLyBvdXRwdXRCbG9ja0hlaWdo
dCkgKiBtYXBwZWRJbWFnZS5Sb3dQaXRjaCArCisgICAgICAgICAoYXJlYS54IC8gb3V0cHV0Qmxv
Y2tXaWR0aCkgKiBvdXRwdXRQaXhlbFNpemUgKyBhcmVhLnogKiBtYXBwZWRJbWFnZS5EZXB0aFBp
dGNoKTsKIAotICAgIGxvYWRGdW5jdGlvbihhcmVhLndpZHRoLCBhcmVhLmhlaWdodCwgYXJlYS5k
ZXB0aCwKLSAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
aW5wdXQpLCBpbnB1dFJvd1BpdGNoLCBpbnB1dERlcHRoUGl0Y2gsCi0gICAgICAgICAgICAgICAg
IG9mZnNldE1hcHBlZERhdGEsIG1hcHBlZEltYWdlLlJvd1BpdGNoLCBtYXBwZWRJbWFnZS5EZXB0
aFBpdGNoKTsKKyAgICBsb2FkRnVuY3Rpb24oYXJlYS53aWR0aCwgYXJlYS5oZWlnaHQsIGFyZWEu
ZGVwdGgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihpbnB1dCksCisgICAgICAg
ICAgICAgICAgIGlucHV0Um93UGl0Y2gsIGlucHV0RGVwdGhQaXRjaCwgb2Zmc2V0TWFwcGVkRGF0
YSwgbWFwcGVkSW1hZ2UuUm93UGl0Y2gsCisgICAgICAgICAgICAgICAgIG1hcHBlZEltYWdlLkRl
cHRoUGl0Y2gpOwogCiAgICAgdW5tYXAoKTsKIApAQCAtMzAzLDcgKzMxMyw3IEBAIGdsOjpFcnJv
ciBJbWFnZTExOjpjb3B5RnJvbVRleFN0b3JhZ2UoY29uc3QgZ2w6OkltYWdlSW5kZXggJmltYWdl
SW5kZXgsIFRleHR1cmVTCiAgICAgSUQzRDExUmVzb3VyY2UgKnJlc291cmNlID0gbnVsbHB0cjsK
ICAgICBBTkdMRV9UUlkoc3RvcmFnZTExLT5nZXRSZXNvdXJjZSgmcmVzb3VyY2UpKTsKIAotICAg
IFVJTlQgc3VicmVzb3VyY2VJbmRleCAgICAgICAgID0gc3RvcmFnZTExLT5nZXRTdWJyZXNvdXJj
ZUluZGV4KGltYWdlSW5kZXgpOworICAgIFVJTlQgc3VicmVzb3VyY2VJbmRleCA9IHN0b3JhZ2Ux
MS0+Z2V0U3VicmVzb3VyY2VJbmRleChpbWFnZUluZGV4KTsKICAgICBUZXh0dXJlSGVscGVyMTEg
dGV4dHVyZUhlbHBlciA9CiAgICAgICAgIFRleHR1cmVIZWxwZXIxMTo6TWFrZUFuZFJlZmVyZW5j
ZShyZXNvdXJjZSwgc3RvcmFnZTExLT5nZXRGb3JtYXRTZXQoKSk7CiAKQEAgLTM1NSwxMiArMzY1
LDEyIEBAIGdsOjpFcnJvciBJbWFnZTExOjpjb3B5RnJvbUZyYW1lYnVmZmVyKGNvbnN0IGdsOjpP
ZmZzZXQgJmRlc3RPZmZzZXQsCiAgICAgY29uc3QgYXV0byAmZGVzdEQzRDExRm9ybWF0ID0KICAg
ICAgICAgZDNkMTE6OkZvcm1hdDo6R2V0KG1JbnRlcm5hbEZvcm1hdCwgbVJlbmRlcmVyLT5nZXRS
ZW5kZXJlcjExRGV2aWNlQ2FwcygpKTsKIAotICAgIGF1dG8gbG9hZEZ1bmN0aW9uID0gZGVzdEQz
RDExRm9ybWF0LmxvYWRGdW5jdGlvbnMoZGVzdEZvcm1hdEluZm8udHlwZSk7CisgICAgYXV0byBs
b2FkRnVuY3Rpb24gPSBkZXN0RDNEMTFGb3JtYXQuZ2V0TG9hZEZ1bmN0aW9ucygpKGRlc3RGb3Jt
YXRJbmZvLnR5cGUpOwogICAgIGdsOjpFcnJvciBlcnJvciAgID0gZ2w6Ok5vRXJyb3IoKTsKICAg
ICBpZiAobG9hZEZ1bmN0aW9uLnJlcXVpcmVzQ29udmVyc2lvbikKICAgICB7CiAgICAgICAgIHNp
emVfdCBidWZmZXJTaXplID0gZGVzdEZvcm1hdEluZm8ucGl4ZWxCeXRlcyAqIHNvdXJjZUFyZWEu
d2lkdGggKiBzb3VyY2VBcmVhLmhlaWdodDsKLSAgICAgICAgTWVtb3J5QnVmZmVyICptZW1vcnlC
dWZmZXIgPSBudWxscHRyOworICAgICAgICBhbmdsZTo6TWVtb3J5QnVmZmVyICptZW1vcnlCdWZm
ZXIgPSBudWxscHRyOwogICAgICAgICBtUmVuZGVyZXItPmdldFNjcmF0Y2hNZW1vcnlCdWZmZXIo
YnVmZmVyU2l6ZSwgJm1lbW9yeUJ1ZmZlcik7CiAgICAgICAgIEdMdWludCBtZW1vcnlCdWZmZXJS
b3dQaXRjaCA9IGRlc3RGb3JtYXRJbmZvLnBpeGVsQnl0ZXMgKiBzb3VyY2VBcmVhLndpZHRoOwog
CkBAIC00MjIsNyArNDMyLDcgQEAgZ2w6OkVycm9yIEltYWdlMTE6OmNvcHlXaXRob3V0Q29udmVy
c2lvbihjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAogICAgICAgICByZXNvbHZlRGVzYy5N
aXNjRmxhZ3MgICAgICAgICAgPSAwOwogCiAgICAgICAgIElEM0QxMVRleHR1cmUyRCAqc3JjVGV4
MkQgPSBOVUxMOwotICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVy
ZTJEKCZyZXNvbHZlRGVzYywgTlVMTCwgJnNyY1RleDJEKTsKKyAgICAgICAgSFJFU1VMVCByZXN1
bHQgICAgICAgICAgICA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZyZXNvbHZlRGVzYywgTlVM
TCwgJnNyY1RleDJEKTsKICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCkBAIC00NjEsMTEg
KzQ3MSwxMiBAQCBnbDo6RXJyb3IgSW1hZ2UxMTo6Y29weVdpdGhvdXRDb252ZXJzaW9uKGNvbnN0
IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
LWdsOjpFcnJvciBJbWFnZTExOjpnZXRTdGFnaW5nVGV4dHVyZShJRDNEMTFSZXNvdXJjZSAqKm91
dFN0YWdpbmdUZXh0dXJlLCB1bnNpZ25lZCBpbnQgKm91dFN1YnJlc291cmNlSW5kZXgpCitnbDo6
RXJyb3IgSW1hZ2UxMTo6Z2V0U3RhZ2luZ1RleHR1cmUoSUQzRDExUmVzb3VyY2UgKipvdXRTdGFn
aW5nVGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgKm91dFN1YnJlc291cmNlSW5kZXgpCiB7CiAgICAgQU5HTEVfVFJZKGNyZWF0ZVN0YWdp
bmdUZXh0dXJlKCkpOwogCi0gICAgKm91dFN0YWdpbmdUZXh0dXJlID0gbVN0YWdpbmdUZXh0dXJl
OworICAgICpvdXRTdGFnaW5nVGV4dHVyZSAgID0gbVN0YWdpbmdUZXh0dXJlOwogICAgICpvdXRT
dWJyZXNvdXJjZUluZGV4ID0gbVN0YWdpbmdTdWJyZXNvdXJjZTsKICAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KQEAgLTQ3OSw3ICs0OTAsNyBAQCBnbDo6RXJyb3IgSW1hZ2UxMTo6Y3JlYXRl
U3RhZ2luZ1RleHR1cmUoKQogewogICAgIGlmIChtU3RhZ2luZ1RleHR1cmUpCiAgICAgewotICAg
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiAgICAgfQogCiAgICAgQVNTRVJUKG1XaWR0aCA+IDAgJiYgbUhlaWdodCA+IDAg
JiYgbURlcHRoID4gMCk7CkBAIC00ODksOCArNTAwLDggQEAgZ2w6OkVycm9yIEltYWdlMTE6OmNy
ZWF0ZVN0YWdpbmdUZXh0dXJlKCkKICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJl
ci0+Z2V0RGV2aWNlKCk7CiAgICAgSFJFU1VMVCByZXN1bHQ7CiAKLSAgICBpbnQgbG9kT2Zmc2V0
ID0gMTsKLSAgICBHTHNpemVpIHdpZHRoID0gbVdpZHRoOworICAgIGludCBsb2RPZmZzZXQgID0g
MTsKKyAgICBHTHNpemVpIHdpZHRoICA9IG1XaWR0aDsKICAgICBHTHNpemVpIGhlaWdodCA9IG1I
ZWlnaHQ7CiAKICAgICAvLyBhZGp1c3Qgc2l6ZSBpZiBuZWVkZWQgZm9yIGNvbXByZXNzZWQgdGV4
dHVyZXMKQEAgLTUwMSwyMyArNTEyLDI0IEBAIGdsOjpFcnJvciBJbWFnZTExOjpjcmVhdGVTdGFn
aW5nVGV4dHVyZSgpCiAgICAgICAgIElEM0QxMVRleHR1cmUzRCAqbmV3VGV4dHVyZSA9IE5VTEw7
CiAKICAgICAgICAgRDNEMTFfVEVYVFVSRTNEX0RFU0MgZGVzYzsKLSAgICAgICAgZGVzYy5XaWR0
aCA9IHdpZHRoOwotICAgICAgICBkZXNjLkhlaWdodCA9IGhlaWdodDsKLSAgICAgICAgZGVzYy5E
ZXB0aCA9IG1EZXB0aDsKLSAgICAgICAgZGVzYy5NaXBMZXZlbHMgPSBsb2RPZmZzZXQgKyAxOwot
ICAgICAgICBkZXNjLkZvcm1hdCA9IGR4Z2lGb3JtYXQ7Ci0gICAgICAgIGRlc2MuVXNhZ2UgPSBE
M0QxMV9VU0FHRV9TVEFHSU5HOwotICAgICAgICBkZXNjLkJpbmRGbGFncyA9IDA7CisgICAgICAg
IGRlc2MuV2lkdGggICAgICAgICAgPSB3aWR0aDsKKyAgICAgICAgZGVzYy5IZWlnaHQgICAgICAg
ICA9IGhlaWdodDsKKyAgICAgICAgZGVzYy5EZXB0aCAgICAgICAgICA9IG1EZXB0aDsKKyAgICAg
ICAgZGVzYy5NaXBMZXZlbHMgICAgICA9IGxvZE9mZnNldCArIDE7CisgICAgICAgIGRlc2MuRm9y
bWF0ICAgICAgICAgPSBkeGdpRm9ybWF0OworICAgICAgICBkZXNjLlVzYWdlICAgICAgICAgID0g
RDNEMTFfVVNBR0VfU1RBR0lORzsKKyAgICAgICAgZGVzYy5CaW5kRmxhZ3MgICAgICA9IDA7CiAg
ICAgICAgIGRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1JFQUQgfCBEM0Qx
MV9DUFVfQUNDRVNTX1dSSVRFOwotICAgICAgICBkZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAg
IGRlc2MuTWlzY0ZsYWdzICAgICAgPSAwOwogCiAgICAgICAgIGlmIChkM2QxMTo6Rm9ybWF0OjpH
ZXQobUludGVybmFsRm9ybWF0LCBtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkp
CiAgICAgICAgICAgICAgICAgLmRhdGFJbml0aWFsaXplckZ1bmN0aW9uICE9IE5VTEwpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPEQzRDExX1NVQlJFU09VUkNFX0RBVEE+IGlu
aXRpYWxEYXRhOwogICAgICAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8QllURT4+IHRl
eHR1cmVEYXRhOwotICAgICAgICAgICAgZDNkMTE6OkdlbmVyYXRlSW5pdGlhbFRleHR1cmVEYXRh
KG1JbnRlcm5hbEZvcm1hdCwgbVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpLCB3
aWR0aCwgaGVpZ2h0LCBtRGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbG9kT2Zmc2V0ICsgMSwgJmluaXRpYWxEYXRhLCAmdGV4dHVyZURhdGEpOwor
ICAgICAgICAgICAgZDNkMTE6OkdlbmVyYXRlSW5pdGlhbFRleHR1cmVEYXRhKG1JbnRlcm5hbEZv
cm1hdCwgbVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQsIG1EZXB0aCwg
bG9kT2Zmc2V0ICsgMSwgJmluaXRpYWxEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZ0ZXh0dXJlRGF0YSk7CiAKICAgICAgICAgICAgIHJlc3VsdCA9
IGRldmljZS0+Q3JlYXRlVGV4dHVyZTNEKCZkZXNjLCBpbml0aWFsRGF0YS5kYXRhKCksICZuZXdU
ZXh0dXJlKTsKICAgICAgICAgfQpAQCAtNTI5LDM2ICs1NDEsMzkgQEAgZ2w6OkVycm9yIEltYWdl
MTE6OmNyZWF0ZVN0YWdpbmdUZXh0dXJlKCkKICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQog
ICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IEVfT1VUT0ZNRU1PUlkpOwot
ICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRv
IGNyZWF0ZSBzdGFnaW5nIHRleHR1cmUsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOworICAgICAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0
ZSBzdGFnaW5nIHRleHR1cmUsIHJlc3VsdDogMHglWC4iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXN1bHQpOwogICAgICAgICB9CiAKLSAgICAgICAgbVN0YWdpbmdUZXh0dXJlID0g
bmV3VGV4dHVyZTsKKyAgICAgICAgbVN0YWdpbmdUZXh0dXJlICAgICA9IG5ld1RleHR1cmU7CiAg
ICAgICAgIG1TdGFnaW5nU3VicmVzb3VyY2UgPSBEM0QxMUNhbGNTdWJyZXNvdXJjZShsb2RPZmZz
ZXQsIDAsIGxvZE9mZnNldCArIDEpOwogICAgIH0KLSAgICBlbHNlIGlmIChtVGFyZ2V0ID09IEdM
X1RFWFRVUkVfMkQgfHwgbVRhcmdldCA9PSBHTF9URVhUVVJFXzJEX0FSUkFZIHx8IG1UYXJnZXQg
PT0gR0xfVEVYVFVSRV9DVUJFX01BUCkKKyAgICBlbHNlIGlmIChtVGFyZ2V0ID09IEdMX1RFWFRV
UkVfMkQgfHwgbVRhcmdldCA9PSBHTF9URVhUVVJFXzJEX0FSUkFZIHx8CisgICAgICAgICAgICAg
bVRhcmdldCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQKQogICAgIHsKICAgICAgICAgSUQzRDExVGV4
dHVyZTJEICpuZXdUZXh0dXJlID0gTlVMTDsKIAogICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVT
QyBkZXNjOwotICAgICAgICBkZXNjLldpZHRoID0gd2lkdGg7Ci0gICAgICAgIGRlc2MuSGVpZ2h0
ID0gaGVpZ2h0OwotICAgICAgICBkZXNjLk1pcExldmVscyA9IGxvZE9mZnNldCArIDE7Ci0gICAg
ICAgIGRlc2MuQXJyYXlTaXplID0gMTsKLSAgICAgICAgZGVzYy5Gb3JtYXQgPSBkeGdpRm9ybWF0
OwotICAgICAgICBkZXNjLlNhbXBsZURlc2MuQ291bnQgPSAxOworICAgICAgICBkZXNjLldpZHRo
ICAgICAgICAgICAgICA9IHdpZHRoOworICAgICAgICBkZXNjLkhlaWdodCAgICAgICAgICAgICA9
IGhlaWdodDsKKyAgICAgICAgZGVzYy5NaXBMZXZlbHMgICAgICAgICAgPSBsb2RPZmZzZXQgKyAx
OworICAgICAgICBkZXNjLkFycmF5U2l6ZSAgICAgICAgICA9IDE7CisgICAgICAgIGRlc2MuRm9y
bWF0ICAgICAgICAgICAgID0gZHhnaUZvcm1hdDsKKyAgICAgICAgZGVzYy5TYW1wbGVEZXNjLkNv
dW50ICAgPSAxOwogICAgICAgICBkZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7Ci0gICAgICAg
IGRlc2MuVXNhZ2UgPSBEM0QxMV9VU0FHRV9TVEFHSU5HOwotICAgICAgICBkZXNjLkJpbmRGbGFn
cyA9IDA7Ci0gICAgICAgIGRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1JF
QUQgfCBEM0QxMV9DUFVfQUNDRVNTX1dSSVRFOwotICAgICAgICBkZXNjLk1pc2NGbGFncyA9IDA7
CisgICAgICAgIGRlc2MuVXNhZ2UgICAgICAgICAgICAgID0gRDNEMTFfVVNBR0VfU1RBR0lORzsK
KyAgICAgICAgZGVzYy5CaW5kRmxhZ3MgICAgICAgICAgPSAwOworICAgICAgICBkZXNjLkNQVUFj
Y2Vzc0ZsYWdzICAgICA9IEQzRDExX0NQVV9BQ0NFU1NfUkVBRCB8IEQzRDExX0NQVV9BQ0NFU1Nf
V1JJVEU7CisgICAgICAgIGRlc2MuTWlzY0ZsYWdzICAgICAgICAgID0gMDsKIAogICAgICAgICBp
ZiAoZDNkMTE6OkZvcm1hdDo6R2V0KG1JbnRlcm5hbEZvcm1hdCwgbVJlbmRlcmVyLT5nZXRSZW5k
ZXJlcjExRGV2aWNlQ2FwcygpKQogICAgICAgICAgICAgICAgIC5kYXRhSW5pdGlhbGl6ZXJGdW5j
dGlvbiAhPSBOVUxMKQogICAgICAgICB7CiAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxEM0QxMV9T
VUJSRVNPVVJDRV9EQVRBPiBpbml0aWFsRGF0YTsKICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0
ZDo6dmVjdG9yPEJZVEU+PiB0ZXh0dXJlRGF0YTsKLSAgICAgICAgICAgIGQzZDExOjpHZW5lcmF0
ZUluaXRpYWxUZXh0dXJlRGF0YShtSW50ZXJuYWxGb3JtYXQsIG1SZW5kZXJlci0+Z2V0UmVuZGVy
ZXIxMURldmljZUNhcHMoKSwgd2lkdGgsIGhlaWdodCwgMSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2RPZmZzZXQgKyAxLCAmaW5pdGlhbERhdGEsICZ0
ZXh0dXJlRGF0YSk7CisgICAgICAgICAgICBkM2QxMTo6R2VuZXJhdGVJbml0aWFsVGV4dHVyZURh
dGEobUludGVybmFsRm9ybWF0LCBtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhl
aWdodCwgMSwgbG9kT2Zmc2V0ICsgMSwgJmluaXRpYWxEYXRhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0ZXh0dXJlRGF0YSk7CiAKICAgICAgICAgICAg
IHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZkZXNjLCBpbml0aWFsRGF0YS5kYXRh
KCksICZuZXdUZXh0dXJlKTsKICAgICAgICAgfQpAQCAtNTcwLDEwICs1ODUsMTEgQEAgZ2w6OkVy
cm9yIEltYWdlMTE6OmNyZWF0ZVN0YWdpbmdUZXh0dXJlKCkKICAgICAgICAgaWYgKEZBSUxFRChy
ZXN1bHQpKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IEVfT1VUT0ZN
RU1PUlkpOwotICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAi
RmFpbGVkIHRvIGNyZWF0ZSBzdGFnaW5nIHRleHR1cmUsIHJlc3VsdDogMHglWC4iLCByZXN1bHQp
OworICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVk
IHRvIGNyZWF0ZSBzdGFnaW5nIHRleHR1cmUsIHJlc3VsdDogMHglWC4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHQpOwogICAgICAgICB9CiAKLSAgICAgICAgbVN0YWdpbmdU
ZXh0dXJlID0gbmV3VGV4dHVyZTsKKyAgICAgICAgbVN0YWdpbmdUZXh0dXJlICAgICA9IG5ld1Rl
eHR1cmU7CiAgICAgICAgIG1TdGFnaW5nU3VicmVzb3VyY2UgPSBEM0QxMUNhbGNTdWJyZXNvdXJj
ZShsb2RPZmZzZXQsIDAsIGxvZE9mZnNldCArIDEpOwogICAgIH0KICAgICBlbHNlCkBAIC01ODIs
NyArNTk4LDcgQEAgZ2w6OkVycm9yIEltYWdlMTE6OmNyZWF0ZVN0YWdpbmdUZXh0dXJlKCkKICAg
ICB9CiAKICAgICBtRGlydHkgPSBmYWxzZTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEltYWdlMTE6
Om1hcChEM0QxMV9NQVAgbWFwVHlwZSwgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFICptYXApCkBA
IC01OTEsNyArNjA3LDcgQEAgZ2w6OkVycm9yIEltYWdlMTE6Om1hcChEM0QxMV9NQVAgbWFwVHlw
ZSwgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFICptYXApCiAgICAgQU5HTEVfVFJZKHJlY292ZXJG
cm9tQXNzb2NpYXRlZFN0b3JhZ2UoKSk7CiAKICAgICBJRDNEMTFSZXNvdXJjZSAqc3RhZ2luZ1Rl
eHR1cmUgPSBOVUxMOwotICAgIHVuc2lnbmVkIGludCBzdWJyZXNvdXJjZUluZGV4ID0gMDsKKyAg
ICB1bnNpZ25lZCBpbnQgc3VicmVzb3VyY2VJbmRleCAgPSAwOwogICAgIEFOR0xFX1RSWShnZXRT
dGFnaW5nVGV4dHVyZSgmc3RhZ2luZ1RleHR1cmUsICZzdWJyZXNvdXJjZUluZGV4KSk7CiAKICAg
ICBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VDb250ZXh0ID0gbVJlbmRlcmVyLT5nZXREZXZp
Y2VDb250ZXh0KCk7CkBAIC02MTEsNyArNjI3LDcgQEAgZ2w6OkVycm9yIEltYWdlMTE6Om1hcChE
M0QxMV9NQVAgbWFwVHlwZSwgRDNEMTFfTUFQUEVEX1NVQlJFU09VUkNFICptYXApCiAKICAgICBt
RGlydHkgPSB0cnVlOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgSW1hZ2UxMTo6dW5tYXAoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9JbmRleEJ1ZmZlcjExLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW5kZXhCdWZmZXIxMS5jcHAKaW5kZXggYTVlNzhhMjQ1
ZDkuLjYzODM5NzAwODMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0luZGV4QnVmZmVyMTEuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW5kZXhC
dWZmZXIxMS5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgZ2w6OkVycm9yIEluZGV4QnVmZmVyMTE6Omlu
aXRpYWxpemUodW5zaWduZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUsIGIKICAg
ICBtSW5kZXhUeXBlID0gaW5kZXhUeXBlOwogICAgIG1EeW5hbWljVXNhZ2UgPSBkeW5hbWljOwog
Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7CiB9CiAKIGdsOjpFcnJvciBJbmRleEJ1ZmZlcjExOjptYXBCdWZmZXIodW5zaWduZWQg
aW50IG9mZnNldCwgdW5zaWduZWQgaW50IHNpemUsIHZvaWQqKiBvdXRNYXBwZWRNZW1vcnkpCkBA
IC05MCw3ICs5MCw3IEBAIGdsOjpFcnJvciBJbmRleEJ1ZmZlcjExOjptYXBCdWZmZXIodW5zaWdu
ZWQgaW50IG9mZnNldCwgdW5zaWduZWQgaW50IHNpemUsIHZvaWQqCiAgICAgfQogCiAgICAgKm91
dE1hcHBlZE1lbW9yeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KG1hcHBlZFJlc291cmNlLnBE
YXRhKSArIG9mZnNldDsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEluZGV4QnVmZmVyMTE6OnVubWFw
QnVmZmVyKCkKQEAgLTEwMiw3ICsxMDIsNyBAQCBnbDo6RXJyb3IgSW5kZXhCdWZmZXIxMTo6dW5t
YXBCdWZmZXIoKQogCiAgICAgSUQzRDExRGV2aWNlQ29udGV4dCAqZHhDb250ZXh0ID0gbVJlbmRl
cmVyLT5nZXREZXZpY2VDb250ZXh0KCk7CiAgICAgZHhDb250ZXh0LT5Vbm1hcChtQnVmZmVyLCAw
KTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAogR0xlbnVtIEluZGV4QnVmZmVyMTE6OmdldEluZGV4VHlwZSgpIGNvbnN0
CkBAIC0xMjMsNyArMTIzLDcgQEAgZ2w6OkVycm9yIEluZGV4QnVmZmVyMTE6OnNldFNpemUodW5z
aWduZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUpCiAgICAgfQogICAgIGVsc2UK
ICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiB9CiAKQEAgLTE0NSw3ICsxNDUsNyBAQCBnbDo6
RXJyb3IgSW5kZXhCdWZmZXIxMTo6ZGlzY2FyZCgpCiAKICAgICBkeENvbnRleHQtPlVubWFwKG1C
dWZmZXIsIDApOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0
dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIERYR0lfRk9STUFUIEluZGV4QnVmZmVyMTE6OmdldElu
ZGV4Rm9ybWF0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW5wdXRMYXlvdXRDYWNoZS5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0lucHV0
TGF5b3V0Q2FjaGUuY3BwCmluZGV4IDg5ZDVkYzY3Njc2Li5lZmE2ODVlZmYwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9JbnB1dExheW91dENhY2hlLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0lucHV0TGF5b3V0Q2FjaGUuY3BwCkBAIC05LDcg
KzksNyBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0lucHV0TGF5
b3V0Q2FjaGUuaCIKIAotI2luY2x1ZGUgImNvbW1vbi9CaXRTZXRJdGVyYXRvci5oIgorI2luY2x1
ZGUgImNvbW1vbi9iaXRzZXRfdXRpbHMuaCIKICNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvUHJvZ3JhbS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1ZlcnRl
eEF0dHJpYnV0ZS5oIgpAQCAtNDEsNyArNDEsNyBAQCBnbDo6SW5wdXRMYXlvdXQgR2V0SW5wdXRM
YXlvdXQoY29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3QgVHJhbnNsYXRlZEF0dHJpYnV0ZSAqPiAmdAog
ICAgIGZvciAoc2l6ZV90IGF0dHJpYnV0ZUluZGV4ID0gMDsgYXR0cmlidXRlSW5kZXggPCB0cmFu
c2xhdGVkQXR0cmlidXRlcy5zaXplKCk7ICsrYXR0cmlidXRlSW5kZXgpCiAgICAgewogICAgICAg
ICBjb25zdCBUcmFuc2xhdGVkQXR0cmlidXRlICp0cmFuc2xhdGVkQXR0cmlidXRlID0gdHJhbnNs
YXRlZEF0dHJpYnV0ZXNbYXR0cmlidXRlSW5kZXhdOwotICAgICAgICBpbnB1dExheW91dFthdHRy
aWJ1dGVJbmRleF0gPSBnbDo6R2V0VmVydGV4Rm9ybWF0VHlwZSgKKyAgICAgICAgaW5wdXRMYXlv
dXRbYXR0cmlidXRlSW5kZXhdICAgICAgICAgICAgICAgICAgICA9IGdsOjpHZXRWZXJ0ZXhGb3Jt
YXRUeXBlKAogICAgICAgICAgICAgKnRyYW5zbGF0ZWRBdHRyaWJ1dGUtPmF0dHJpYnV0ZSwgdHJh
bnNsYXRlZEF0dHJpYnV0ZS0+Y3VycmVudFZhbHVlVHlwZSk7CiAgICAgfQogICAgIHJldHVybiBp
bnB1dExheW91dDsKQEAgLTQ4Miw2ICs0ODIsNyBAQCBnbDo6RXJyb3IgSW5wdXRMYXlvdXRDYWNo
ZTo6dXBkYXRlSW5wdXRMYXlvdXQoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKICAgICB9CiAKICAg
ICBjb25zdCBhdXRvICZhdHRyaWJzICAgICAgICAgICAgPSBzdGF0ZS5nZXRWZXJ0ZXhBcnJheSgp
LT5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7CisgICAgY29uc3QgYXV0byAmYmluZGluZ3MgICAgICAg
ICAgID0gc3RhdGUuZ2V0VmVydGV4QXJyYXkoKS0+Z2V0VmVydGV4QmluZGluZ3MoKTsKICAgICBj
b25zdCBhdXRvICZsb2NhdGlvblRvU2VtYW50aWMgPSBwcm9ncmFtRDNELT5nZXRBdHRyaWJMb2Nh
dGlvblRvRDNEU2VtYW50aWNzKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGxvbmcgYXR0cmliSW5k
ZXggOiBhbmdsZTo6SXRlcmF0ZUJpdFNldChwcm9ncmFtLT5nZXRBY3RpdmVBdHRyaWJMb2NhdGlv
bnNNYXNrKCkpKQpAQCAtNDkxLDEyICs0OTIsMTMgQEAgZ2w6OkVycm9yIElucHV0TGF5b3V0Q2Fj
aGU6OnVwZGF0ZUlucHV0TGF5b3V0KGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUsCiAgICAgICAgIEdM
ZW51bSBnbHNsRWxlbWVudFR5cGUgPSBHZXRHTFNMQXR0cmlidXRlVHlwZShzaGFkZXJBdHRyaWJ1
dGVzLCBhdHRyaWJJbmRleCk7CiAKICAgICAgICAgY29uc3QgYXV0byAmYXR0cmliID0gYXR0cmli
c1thdHRyaWJJbmRleF07CisgICAgICAgIGNvbnN0IGF1dG8gJmJpbmRpbmcgPSBiaW5kaW5nc1th
dHRyaWIuYmluZGluZ0luZGV4XTsKICAgICAgICAgaW50IGQzZFNlbWFudGljICAgID0gbG9jYXRp
b25Ub1NlbWFudGljW2F0dHJpYkluZGV4XTsKIAogICAgICAgICBjb25zdCBhdXRvICZjdXJyZW50
VmFsdWUgICAgICAgICAgICAgID0gc3RhdGUuZ2V0VmVydGV4QXR0cmliQ3VycmVudFZhbHVlKGF0
dHJpYkluZGV4KTsKICAgICAgICAgZ2w6OlZlcnRleEZvcm1hdFR5cGUgdmVydGV4Rm9ybWF0VHlw
ZSA9IGdsOjpHZXRWZXJ0ZXhGb3JtYXRUeXBlKGF0dHJpYiwgY3VycmVudFZhbHVlLlR5cGUpOwog
Ci0gICAgICAgIGxheW91dC5hZGRBdHRyaWJ1dGVEYXRhKGdsc2xFbGVtZW50VHlwZSwgZDNkU2Vt
YW50aWMsIHZlcnRleEZvcm1hdFR5cGUsIGF0dHJpYi5kaXZpc29yKTsKKyAgICAgICAgbGF5b3V0
LmFkZEF0dHJpYnV0ZURhdGEoZ2xzbEVsZW1lbnRUeXBlLCBkM2RTZW1hbnRpYywgdmVydGV4Rm9y
bWF0VHlwZSwgYmluZGluZy5kaXZpc29yKTsKICAgICB9CiAKICAgICBJRDNEMTFJbnB1dExheW91
dCAqaW5wdXRMYXlvdXQgPSBudWxscHRyOwpAQCAtNTEzLDggKzUxNSw4IEBAIGdsOjpFcnJvciBJ
bnB1dExheW91dENhY2hlOjp1cGRhdGVJbnB1dExheW91dChjb25zdCBnbDo6U3RhdGUgJnN0YXRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnB1dExheW91dCkp
OwogICAgICAgICAgICAgaWYgKG1MYXlvdXRNYXAuc2l6ZSgpID49IG1DYWNoZVNpemUpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVFJBQ0UoIk92ZXJmbG93ZWQgdGhlIGxpbWl0IG9m
ICV1IGlucHV0IGxheW91dHMsIHB1cmdpbmcgaGFsZiB0aGUgY2FjaGUuIiwKLSAgICAgICAgICAg
ICAgICAgICAgICBtQ2FjaGVTaXplKTsKKyAgICAgICAgICAgICAgICBXQVJOKCkgPDwgIk92ZXJm
bG93ZWQgdGhlIGxpbWl0IG9mICIgPDwgbUNhY2hlU2l6ZQorICAgICAgICAgICAgICAgICAgICAg
ICA8PCAiIGlucHV0IGxheW91dHMsIHB1cmdpbmcgaGFsZiB0aGUgY2FjaGUuIjsKIAogICAgICAg
ICAgICAgICAgIC8vIFJhbmRvbWx5IHJlbGVhc2UgZXZlcnkgc2Vjb25kIGVsZW1lbnQKICAgICAg
ICAgICAgICAgICBhdXRvIGl0ID0gbUxheW91dE1hcC5iZWdpbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9RdWVy
eTExLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvUXVlcnkxMS5jcHAKaW5kZXggOWQ3ZWEyYzY2YTkuLjVjNzk2MWQ1MTNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL1F1ZXJ5MTEuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUXVlcnkxMS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgZ2w6
OkVycm9yIFF1ZXJ5MTE6OnF1ZXJ5Q291bnRlcigpCiAgICAgQVNTRVJUKGdldFR5cGUoKSA9PSBH
TF9USU1FU1RBTVBfRVhUKTsKICAgICBtUmVzdWx0U3VtID0gMDsKICAgICBtUGVuZGluZ1F1ZXJp
ZXMucHVzaF9iYWNrKHN0ZDo6dW5pcXVlX3B0cjxRdWVyeVN0YXRlPihuZXcgUXVlcnlTdGF0ZSgp
KSk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMTgxLDcgKzE4MSw3IEBA
IGdsOjpFcnJvciBRdWVyeTExOjpyZXN1bWUoKQogICAgICAgICAgICAgRDNEMTFfUVVFUllfREVT
QyBkZXNjOwogICAgICAgICAgICAgZGVzYy5RdWVyeSAgICAgPSBEM0QxMV9RVUVSWV9USU1FU1RB
TVA7CiAgICAgICAgICAgICBkZXNjLk1pc2NGbGFncyA9IDA7Ci0gICAgICAgICAgICByZXN1bHQg
PSBkZXZpY2UtPkNyZWF0ZVF1ZXJ5KCZkZXNjLCAmbUFjdGl2ZVF1ZXJ5LT5iZWdpblRpbWVzdGFt
cCk7CisgICAgICAgICAgICByZXN1bHQgICAgICAgICA9IGRldmljZS0+Q3JlYXRlUXVlcnkoJmRl
c2MsICZtQWN0aXZlUXVlcnktPmJlZ2luVGltZXN0YW1wKTsKICAgICAgICAgICAgIGlmIChGQUlM
RUQocmVzdWx0KSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX09VVF9PRl9NRU1PUlksICJJbnRlcm5hbCBxdWVyeSBjcmVhdGlvbiBmYWlsZWQsIHJl
c3VsdDogMHglWC4iLApAQCAtMjA5LDcgKzIwOSw3IEBAIGdsOjpFcnJvciBRdWVyeTExOjpyZXN1
bWUoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBRdWVyeTExOjpm
bHVzaChib29sIGZvcmNlKQpAQCAtMjIzLDcgKzIyMyw3IEBAIGdsOjpFcnJvciBRdWVyeTExOjpm
bHVzaChib29sIGZvcmNlKQogICAgICAgICAgICAgQU5HTEVfVFJZKHRlc3RRdWVyeShxdWVyeSkp
OwogICAgICAgICAgICAgaWYgKCFxdWVyeS0+ZmluaXNoZWQgJiYgIWZvcmNlKQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9IHdoaWxlICghcXVlcnktPmZpbmlzaGVkKTsKIApAQCAtMjQxLDggKzI0MSw4IEBAIGdsOjpF
cnJvciBRdWVyeTExOjp0ZXN0UXVlcnkoUXVlcnlTdGF0ZSAqcXVlcnlTdGF0ZSkKICAgICAgICAg
SUQzRDExRGV2aWNlQ29udGV4dCAqY29udGV4dCA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4
dCgpOwogICAgICAgICBzd2l0Y2ggKGdldFR5cGUoKSkKICAgICAgICAgewotICAgICAgICAgIGNh
c2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVDoKLSAgICAgICAgICBjYXNlIEdMX0FOWV9TQU1Q
TEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhUOgorICAgICAgICAgICAgY2FzZSBHTF9BTllfU0FN
UExFU19QQVNTRURfRVhUOgorICAgICAgICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURf
Q09OU0VSVkFUSVZFX0VYVDoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBBU1NFUlQo
cXVlcnlTdGF0ZS0+cXVlcnkpOwogICAgICAgICAgICAgICAgIFVJTlQ2NCBudW1QaXhlbHMgPSAw
OwpAQCAtMjUwLDMxICsyNTAsMzUgQEAgZ2w6OkVycm9yIFF1ZXJ5MTE6OnRlc3RRdWVyeShRdWVy
eVN0YXRlICpxdWVyeVN0YXRlKQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5HZXREYXRh
KHF1ZXJ5U3RhdGUtPnF1ZXJ5LCAmbnVtUGl4ZWxzLCBzaXplb2YobnVtUGl4ZWxzKSwgMCk7CiAg
ICAgICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFp
bGVkIHRvIGdldCB0aGUgZGF0YSBvZiBhbiBpbnRlcm5hbCBxdWVyeSwgcmVzdWx0OiAweCVYLiIs
IHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09G
X01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRv
IGdldCB0aGUgZGF0YSBvZiBhbiBpbnRlcm5hbCBxdWVyeSwgcmVzdWx0OiAweCVYLiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNfT0spCiAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICBxdWVyeVN0YXRlLT5maW5pc2hlZCA9IHRydWU7Ci0g
ICAgICAgICAgICAgICAgICAgIG1SZXN1bHQgPSAobnVtUGl4ZWxzID4gMCkgPyBHTF9UUlVFIDog
R0xfRkFMU0U7CisgICAgICAgICAgICAgICAgICAgIG1SZXN1bHQgICAgICAgICAgICAgID0gKG51
bVBpeGVscyA+IDApID8gR0xfVFJVRSA6IEdMX0ZBTFNFOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgY2FzZSBHTF9UUkFO
U0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOOgorICAgICAgICAgICAgY2FzZSBHTF9U
UkFOU0ZPUk1fRkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOOgogICAgICAgICAgICAgewogICAg
ICAgICAgICAgICAgIEFTU0VSVChxdWVyeVN0YXRlLT5xdWVyeSk7Ci0gICAgICAgICAgICAgICAg
RDNEMTFfUVVFUllfREFUQV9TT19TVEFUSVNUSUNTIHNvU3RhdHMgPSB7IDAgfTsKKyAgICAgICAg
ICAgICAgICBEM0QxMV9RVUVSWV9EQVRBX1NPX1NUQVRJU1RJQ1Mgc29TdGF0cyA9IHswfTsKICAg
ICAgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGNvbnRleHQtPkdldERhdGEocXVlcnlTdGF0
ZS0+cXVlcnksICZzb1N0YXRzLCBzaXplb2Yoc29TdGF0cyksIDApOwogICAgICAgICAgICAgICAg
IGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBnZXQgdGhl
IGRhdGEgb2YgYW4gaW50ZXJuYWwgcXVlcnksIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBnZXQgdGhlIGRhdGEg
b2YgYW4gaW50ZXJuYWwgcXVlcnksIHJlc3VsdDogMHglWC4iLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdCA9PSBTX09LKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICAgICAgcXVlcnlTdGF0ZS0+ZmluaXNoZWQgPSB0cnVlOwotICAgICAgICAgICAgICAg
ICAgICBtUmVzdWx0ICAgICAgICA9IHN0YXRpY19jYXN0PEdMdWludDY0Pihzb1N0YXRzLk51bVBy
aW1pdGl2ZXNXcml0dGVuKTsKKyAgICAgICAgICAgICAgICAgICAgbVJlc3VsdCAgICAgICAgICAg
ICAgPSBzdGF0aWNfY2FzdDxHTHVpbnQ2ND4oc29TdGF0cy5OdW1QcmltaXRpdmVzV3JpdHRlbik7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBA
IC0zNTEsNyArMzU1LDcgQEAgZ2w6OkVycm9yIFF1ZXJ5MTE6OnRlc3RRdWVyeShRdWVyeVN0YXRl
ICpxdWVyeVN0YXRlKQogICAgICAgICAgICAgICAgIC8vIHRvIGhhdmUgYW55IHNvcnQgb2YgY29u
dGludWl0eSBvdXRzaWRlIG9mIGEgZGlzam9pbnQgdGltZXN0YW1wIHF1ZXJ5IGJsb2NrLCB3aGlj
aAogICAgICAgICAgICAgICAgIC8vIEdMIGRlcGVuZHMgb24KICAgICAgICAgICAgICAgICBBU1NF
UlQocXVlcnlTdGF0ZS0+cXVlcnkgPT0gbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgbVJlc3Vs
dCA9IDA7CisgICAgICAgICAgICAgICAgbVJlc3VsdCAgICAgICAgICAgICAgPSAwOwogICAgICAg
ICAgICAgICAgIHF1ZXJ5U3RhdGUtPmZpbmlzaGVkID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMzc4LDkgKzM4Miw5IEBAIGdsOjpFcnJvciBRdWVyeTExOjp0
ZXN0UXVlcnkoUXVlcnlTdGF0ZSAqcXVlcnlTdGF0ZSkKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoIXF1ZXJ5U3RhdGUtPmZpbmlzaGVkICYmIG1SZW5kZXJlci0+dGVzdERldmlj
ZUxvc3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyU3RhdGVDYWNoZS5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRlQ2Fj
aGUuY3BwCmluZGV4IGJkODcwYmNiZDQyLi5mZmQ4YWEyNGI2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJT
dGF0ZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRlQ2FjaGUuY3BwCkBAIC0zNiwxOCArMzYsMjAg
QEAgc3RhdGljIHZvaWQgQ2xlYXJTdGF0ZU1hcChtYXBUeXBlICZtYXApCiAvLyBNU0ROJ3MgZG9j
dW1lbnRhdGlvbiBvZiBJRDNEMTFEZXZpY2U6OkNyZWF0ZUJsZW5kU3RhdGUsIElEM0QxMURldmlj
ZTo6Q3JlYXRlUmFzdGVyaXplclN0YXRlLAogLy8gSUQzRDExRGV2aWNlOjpDcmVhdGVEZXB0aFN0
ZW5jaWxTdGF0ZSBhbmQgSUQzRDExRGV2aWNlOjpDcmVhdGVTYW1wbGVyU3RhdGUgY2xhaW1zIHRo
ZSBtYXhpbXVtCiAvLyBudW1iZXIgb2YgdW5pcXVlIHN0YXRlcyBvZiBlYWNoIHR5cGUgYW4gYXBw
bGljYXRpb24gY2FuIGNyZWF0ZSBpcyA0MDk2Ci1jb25zdCB1bnNpZ25lZCBpbnQgUmVuZGVyU3Rh
dGVDYWNoZTo6a01heEJsZW5kU3RhdGVzID0gNDA5NjsKLWNvbnN0IHVuc2lnbmVkIGludCBSZW5k
ZXJTdGF0ZUNhY2hlOjprTWF4UmFzdGVyaXplclN0YXRlcyA9IDQwOTY7Ci1jb25zdCB1bnNpZ25l
ZCBpbnQgUmVuZGVyU3RhdGVDYWNoZTo6a01heERlcHRoU3RlbmNpbFN0YXRlcyA9IDQwOTY7Ci1j
b25zdCB1bnNpZ25lZCBpbnQgUmVuZGVyU3RhdGVDYWNoZTo6a01heFNhbXBsZXJTdGF0ZXMgPSA0
MDk2OworLy8gVE9ETyhTaGFobWVlckVzbWFpbCk6IFJldmlzaXQgdGhlIGNhY2hlIHNpemVzIHRv
IG1ha2Ugc3VyZSB0aGV5IGFyZSBhcHByb3ByaWF0ZSBmb3IgbW9zdAorLy8gc2NlbmFyaW9zLgor
Y29uc3QgdW5zaWduZWQgaW50IFJlbmRlclN0YXRlQ2FjaGU6OmtNYXhCbGVuZFN0YXRlcyAgICAg
ICAgPSAyMDQ4OworY29uc3QgdW5zaWduZWQgaW50IFJlbmRlclN0YXRlQ2FjaGU6OmtNYXhSYXN0
ZXJpemVyU3RhdGVzICAgPSAyMDQ4OworY29uc3QgdW5zaWduZWQgaW50IFJlbmRlclN0YXRlQ2Fj
aGU6OmtNYXhEZXB0aFN0ZW5jaWxTdGF0ZXMgPSAyMDQ4OworY29uc3QgdW5zaWduZWQgaW50IFJl
bmRlclN0YXRlQ2FjaGU6OmtNYXhTYW1wbGVyU3RhdGVzICAgICAgPSAyMDQ4OwogCiBSZW5kZXJT
dGF0ZUNhY2hlOjpSZW5kZXJTdGF0ZUNhY2hlKFJlbmRlcmVyMTEgKnJlbmRlcmVyKQogICAgIDog
bVJlbmRlcmVyKHJlbmRlcmVyKSwKICAgICAgIG1Db3VudGVyKDApLAotICAgICAgbUJsZW5kU3Rh
dGVDYWNoZShrTWF4QmxlbmRTdGF0ZXMsIGhhc2hCbGVuZFN0YXRlLCBjb21wYXJlQmxlbmRTdGF0
ZXMpLAotICAgICAgbVJhc3Rlcml6ZXJTdGF0ZUNhY2hlKGtNYXhSYXN0ZXJpemVyU3RhdGVzLCBo
YXNoUmFzdGVyaXplclN0YXRlLCBjb21wYXJlUmFzdGVyaXplclN0YXRlcyksCi0gICAgICBtRGVw
dGhTdGVuY2lsU3RhdGVDYWNoZShrTWF4RGVwdGhTdGVuY2lsU3RhdGVzLCBoYXNoRGVwdGhTdGVu
Y2lsU3RhdGUsIGNvbXBhcmVEZXB0aFN0ZW5jaWxTdGF0ZXMpLAotICAgICAgbVNhbXBsZXJTdGF0
ZUNhY2hlKGtNYXhTYW1wbGVyU3RhdGVzLCBoYXNoU2FtcGxlclN0YXRlLCBjb21wYXJlU2FtcGxl
clN0YXRlcyksCisgICAgICBtQmxlbmRTdGF0ZUNhY2hlKGtNYXhCbGVuZFN0YXRlcywgSGFzaEJs
ZW5kU3RhdGUsIENvbXBhcmVCbGVuZFN0YXRlcyksCisgICAgICBtUmFzdGVyaXplclN0YXRlQ2Fj
aGUoa01heFJhc3Rlcml6ZXJTdGF0ZXMsIEhhc2hSYXN0ZXJpemVyU3RhdGUsIENvbXBhcmVSYXN0
ZXJpemVyU3RhdGVzKSwKKyAgICAgIG1EZXB0aFN0ZW5jaWxTdGF0ZUNhY2hlKGtNYXhEZXB0aFN0
ZW5jaWxTdGF0ZXMsIEhhc2hEZXB0aFN0ZW5jaWxTdGF0ZSwgQ29tcGFyZURlcHRoU3RlbmNpbFN0
YXRlcyksCisgICAgICBtU2FtcGxlclN0YXRlQ2FjaGUoa01heFNhbXBsZXJTdGF0ZXMsIEhhc2hT
YW1wbGVyU3RhdGUsIENvbXBhcmVTYW1wbGVyU3RhdGVzKSwKICAgICAgIG1EZXZpY2UoTlVMTCkK
IHsKIH0KQEAgLTcxLDUzICs3Myw3MSBAQCB2b2lkIFJlbmRlclN0YXRlQ2FjaGU6OmNsZWFyKCkK
ICAgICBDbGVhclN0YXRlTWFwKG1TYW1wbGVyU3RhdGVDYWNoZSk7CiB9CiAKLXN0ZDo6c2l6ZV90
IFJlbmRlclN0YXRlQ2FjaGU6Omhhc2hCbGVuZFN0YXRlKGNvbnN0IEJsZW5kU3RhdGVLZXkgJmJs
ZW5kU3RhdGUpCisvLyBzdGF0aWMKK3N0ZDo6c2l6ZV90IFJlbmRlclN0YXRlQ2FjaGU6Okhhc2hC
bGVuZFN0YXRlKGNvbnN0IGQzZDExOjpCbGVuZFN0YXRlS2V5ICZibGVuZFN0YXRlKQogewogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgc2VlZCA9IDB4QUJDREVGOTg7CiAKICAgICBzdGQ6
OnNpemVfdCBoYXNoID0gMDsKLSAgICBNdXJtdXJIYXNoM194ODZfMzIoJmJsZW5kU3RhdGUsIHNp
emVvZihnbDo6QmxlbmRTdGF0ZSksIHNlZWQsICZoYXNoKTsKKyAgICBNdXJtdXJIYXNoM194ODZf
MzIoJmJsZW5kU3RhdGUsIHNpemVvZihkM2QxMTo6QmxlbmRTdGF0ZUtleSksIHNlZWQsICZoYXNo
KTsKICAgICByZXR1cm4gaGFzaDsKIH0KIAotYm9vbCBSZW5kZXJTdGF0ZUNhY2hlOjpjb21wYXJl
QmxlbmRTdGF0ZXMoY29uc3QgQmxlbmRTdGF0ZUtleSAmYSwgY29uc3QgQmxlbmRTdGF0ZUtleSAm
YikKKy8vIHN0YXRpYworYm9vbCBSZW5kZXJTdGF0ZUNhY2hlOjpDb21wYXJlQmxlbmRTdGF0ZXMo
Y29uc3QgZDNkMTE6OkJsZW5kU3RhdGVLZXkgJmEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBkM2QxMTo6QmxlbmRTdGF0ZUtleSAmYikKIHsKLSAgICBy
ZXR1cm4gbWVtY21wKCZhLCAmYiwgc2l6ZW9mKEJsZW5kU3RhdGVLZXkpKSA9PSAwOworICAgIHJl
dHVybiBtZW1jbXAoJmEsICZiLCBzaXplb2YoZDNkMTE6OkJsZW5kU3RhdGVLZXkpKSA9PSAwOwog
fQogCi1nbDo6RXJyb3IgUmVuZGVyU3RhdGVDYWNoZTo6Z2V0QmxlbmRTdGF0ZShjb25zdCBnbDo6
RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMUJsZW5k
U3RhdGUgKipvdXRCbGVuZFN0YXRlKQorLy8gc3RhdGljCitkM2QxMTo6QmxlbmRTdGF0ZUtleSBS
ZW5kZXJTdGF0ZUNhY2hlOjpHZXRCbGVuZFN0YXRlS2V5KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAq
ZnJhbWVidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpCbGVuZFN0YXRlICZibGVuZFN0YXRlKQogewotICAgIGlm
ICghbURldmljZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01F
TU9SWSwgIkludGVybmFsIGVycm9yLCBSZW5kZXJTdGF0ZUNhY2hlIGlzIG5vdCBpbml0aWFsaXpl
ZC4iKTsKLSAgICB9Ci0KLSAgICBib29sIG1ydCA9IGZhbHNlOwotCi0gICAgY29uc3QgRnJhbWVi
dWZmZXJEM0QgKmZyYW1lYnVmZmVyRDNEID0gR2V0SW1wbEFzPEZyYW1lYnVmZmVyRDNEPihmcmFt
ZWJ1ZmZlcik7CisgICAgZDNkMTE6OkJsZW5kU3RhdGVLZXkga2V5OworICAgIGNvbnN0IEZyYW1l
YnVmZmVyRDNEICpmcmFtZWJ1ZmZlckQzRCAgID0gR2V0SW1wbEFzPEZyYW1lYnVmZmVyRDNEPihm
cmFtZWJ1ZmZlcik7CiAgICAgY29uc3QgZ2w6OkF0dGFjaG1lbnRMaXN0ICZjb2xvcmJ1ZmZlcnMg
PSBmcmFtZWJ1ZmZlckQzRC0+Z2V0Q29sb3JBdHRhY2htZW50c0ZvclJlbmRlcigpOworICAgIGNv
bnN0IFVJTlQ4IGJsZW5kU3RhdGVNYXNrID0KKyAgICAgICAgZ2xfZDNkMTE6OkNvbnZlcnRDb2xv
ck1hc2soYmxlbmRTdGF0ZS5jb2xvck1hc2tSZWQsIGJsZW5kU3RhdGUuY29sb3JNYXNrR3JlZW4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsZW5kU3RhdGUuY29sb3JNYXNr
Qmx1ZSwgYmxlbmRTdGF0ZS5jb2xvck1hc2tBbHBoYSk7CiAKLSAgICBCbGVuZFN0YXRlS2V5IGtl
eSA9IHt9OwogICAgIGtleS5ibGVuZFN0YXRlID0gYmxlbmRTdGF0ZTsKLSAgICBmb3IgKHNpemVf
dCBjb2xvckF0dGFjaG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBjb2xvcmJ1ZmZlcnMuc2l6
ZSgpOyArK2NvbG9yQXR0YWNobWVudCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1
ZmZlckF0dGFjaG1lbnQgKmF0dGFjaG1lbnQgPSBjb2xvcmJ1ZmZlcnNbY29sb3JBdHRhY2htZW50
XTsKKyAgICBrZXkubXJ0ICAgICAgICA9IGZhbHNlOwogCi0gICAgICAgIGF1dG8gcnRDaGFubmVs
cyA9IGtleS5ydENoYW5uZWxzW2NvbG9yQXR0YWNobWVudF07CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb2xvcmJ1ZmZlcnMuc2l6ZSgpOyBpKyspCisgICAgeworICAgICAgICBjb25zdCBn
bDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICphdHRhY2htZW50ID0gY29sb3JidWZmZXJzW2ldOwog
CiAgICAgICAgIGlmIChhdHRhY2htZW50KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoY29s
b3JBdHRhY2htZW50ID4gMCkKKyAgICAgICAgICAgIGlmIChpID4gMCkKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBtcnQgPSB0cnVlOworICAgICAgICAgICAgICAgIGtleS5tcnQgPSB0
cnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBydENoYW5uZWxzWzBdID0gYXR0YWNo
bWVudC0+Z2V0UmVkU2l6ZSgpICAgPiAwOwotICAgICAgICAgICAgcnRDaGFubmVsc1sxXSA9IGF0
dGFjaG1lbnQtPmdldEdyZWVuU2l6ZSgpID4gMDsKLSAgICAgICAgICAgIHJ0Q2hhbm5lbHNbMl0g
PSBhdHRhY2htZW50LT5nZXRCbHVlU2l6ZSgpICA+IDA7Ci0gICAgICAgICAgICBydENoYW5uZWxz
WzNdID0gYXR0YWNobWVudC0+Z2V0QWxwaGFTaXplKCkgPiAwOworICAgICAgICAgICAga2V5LnJ0
dk1hc2tzW2ldID0KKyAgICAgICAgICAgICAgICAoZ2xfZDNkMTE6OkdldENvbG9yTWFzayhhdHRh
Y2htZW50LT5nZXRGb3JtYXQoKS5pbmZvKSkgJiBibGVuZFN0YXRlTWFzazsKICAgICAgICAgfQor
ICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGtleS5ydHZNYXNrc1tpXSA9IDA7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gY29sb3JidWZmZXJzLnNp
emUoKTsgaSA8IEQzRDExX1NJTVVMVEFORU9VU19SRU5ERVJfVEFSR0VUX0NPVU5UOyBpKyspCisg
ICAgeworICAgICAgICBrZXkucnR2TWFza3NbaV0gPSAwOworICAgIH0KKworICAgIHJldHVybiBr
ZXk7Cit9CisKK2dsOjpFcnJvciBSZW5kZXJTdGF0ZUNhY2hlOjpnZXRCbGVuZFN0YXRlKGNvbnN0
IGQzZDExOjpCbGVuZFN0YXRlS2V5ICZrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJRDNEMTFCbGVuZFN0YXRlICoqb3V0QmxlbmRTdGF0ZSkKK3sKKyAgICBp
ZiAoIW1EZXZpY2UpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9N
RU1PUlksICJJbnRlcm5hbCBlcnJvciwgUmVuZGVyU3RhdGVDYWNoZSBpcyBub3QgaW5pdGlhbGl6
ZWQuIik7CiAgICAgfQogCiAgICAgQmxlbmRTdGF0ZU1hcDo6aXRlcmF0b3Iga2V5SXRlciA9IG1C
bGVuZFN0YXRlQ2FjaGUuZmluZChrZXkpOwpAQCAtMTI2LDE0ICsxNDYsMTQgQEAgZ2w6OkVycm9y
IFJlbmRlclN0YXRlQ2FjaGU6OmdldEJsZW5kU3RhdGUoY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpm
cmFtZWJ1ZmZlciwgY28KICAgICAgICAgQmxlbmRTdGF0ZUNvdW50ZXJQYWlyICZzdGF0ZSA9IGtl
eUl0ZXItPnNlY29uZDsKICAgICAgICAgc3RhdGUuc2Vjb25kID0gbUNvdW50ZXIrKzsKICAgICAg
ICAgKm91dEJsZW5kU3RhdGUgPSBzdGF0ZS5maXJzdDsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KICAg
ICBlbHNlCiAgICAgewogICAgICAgICBpZiAobUJsZW5kU3RhdGVDYWNoZS5zaXplKCkgPj0ga01h
eEJsZW5kU3RhdGVzKQogICAgICAgICB7Ci0gICAgICAgICAgICBUUkFDRSgiT3ZlcmZsb3dlZCB0
aGUgbGltaXQgb2YgJXUgYmxlbmQgc3RhdGVzLCByZW1vdmluZyB0aGUgbGVhc3QgcmVjZW50bHkg
dXNlZCAiCi0gICAgICAgICAgICAgICAgICAidG8gbWFrZSByb29tLiIsIGtNYXhCbGVuZFN0YXRl
cyk7CisgICAgICAgICAgICBXQVJOKCkgPDwgIk92ZXJmbG93ZWQgdGhlIGxpbWl0IG9mICIgPDwg
a01heEJsZW5kU3RhdGVzCisgICAgICAgICAgICAgICAgICAgPDwgIiBibGVuZCBzdGF0ZXMsIHJl
bW92aW5nIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkIHRvIG1ha2Ugcm9vbS4iOwogCiAgICAgICAg
ICAgICBCbGVuZFN0YXRlTWFwOjppdGVyYXRvciBsZWFzdFJlY2VudGx5VXNlZCA9IG1CbGVuZFN0
YXRlQ2FjaGUuYmVnaW4oKTsKICAgICAgICAgICAgIGZvciAoQmxlbmRTdGF0ZU1hcDo6aXRlcmF0
b3IgaSA9IG1CbGVuZFN0YXRlQ2FjaGUuYmVnaW4oKTsgaSAhPSBtQmxlbmRTdGF0ZUNhY2hlLmVu
ZCgpOyBpKyspCkBAIC0xNDgsNDcgKzE2OCw0OCBAQCBnbDo6RXJyb3IgUmVuZGVyU3RhdGVDYWNo
ZTo6Z2V0QmxlbmRTdGF0ZShjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjbwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGJsZW5kIHN0YXRlIGFuZCBpbnNl
cnQgaXQgaW50byB0aGUgY2FjaGUKLSAgICAgICAgRDNEMTFfQkxFTkRfREVTQyBibGVuZERlc2Mg
PSB7IDAgfTsKLSAgICAgICAgYmxlbmREZXNjLkFscGhhVG9Db3ZlcmFnZUVuYWJsZSA9IGJsZW5k
U3RhdGUuc2FtcGxlQWxwaGFUb0NvdmVyYWdlOwotICAgICAgICBibGVuZERlc2MuSW5kZXBlbmRl
bnRCbGVuZEVuYWJsZSA9IG1ydCA/IFRSVUUgOiBGQUxTRTsKKyAgICAgICAgRDNEMTFfQkxFTkRf
REVTQyBibGVuZERlc2M7CisgICAgICAgIEQzRDExX1JFTkRFUl9UQVJHRVRfQkxFTkRfREVTQyAm
cnREZXNjMCA9IGJsZW5kRGVzYy5SZW5kZXJUYXJnZXRbMF07CisgICAgICAgIGNvbnN0IGdsOjpC
bGVuZFN0YXRlICZibGVuZFN0YXRlICAgICAgICA9IGtleS5ibGVuZFN0YXRlOwogCi0gICAgICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgRDNEMTFfU0lNVUxUQU5FT1VTX1JFTkRFUl9U
QVJHRVRfQ09VTlQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgRDNEMTFfUkVOREVSX1RB
UkdFVF9CTEVORF9ERVNDICZydEJsZW5kID0gYmxlbmREZXNjLlJlbmRlclRhcmdldFtpXTsKKyAg
ICAgICAgYmxlbmREZXNjLkFscGhhVG9Db3ZlcmFnZUVuYWJsZSAgPSBibGVuZFN0YXRlLnNhbXBs
ZUFscGhhVG9Db3ZlcmFnZTsKKyAgICAgICAgYmxlbmREZXNjLkluZGVwZW5kZW50QmxlbmRFbmFi
bGUgPSBrZXkubXJ0ID8gVFJVRSA6IEZBTFNFOwogCi0gICAgICAgICAgICBydEJsZW5kLkJsZW5k
RW5hYmxlID0gYmxlbmRTdGF0ZS5ibGVuZDsKLSAgICAgICAgICAgIGlmIChibGVuZFN0YXRlLmJs
ZW5kKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJ0QmxlbmQuU3JjQmxlbmQgPSBn
bF9kM2QxMTo6Q29udmVydEJsZW5kRnVuYyhibGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCLCBmYWxz
ZSk7Ci0gICAgICAgICAgICAgICAgcnRCbGVuZC5EZXN0QmxlbmQgPSBnbF9kM2QxMTo6Q29udmVy
dEJsZW5kRnVuYyhibGVuZFN0YXRlLmRlc3RCbGVuZFJHQiwgZmFsc2UpOwotICAgICAgICAgICAg
ICAgIHJ0QmxlbmQuQmxlbmRPcCA9IGdsX2QzZDExOjpDb252ZXJ0QmxlbmRPcChibGVuZFN0YXRl
LmJsZW5kRXF1YXRpb25SR0IpOworICAgICAgICBydERlc2MwID0ge307CiAKLSAgICAgICAgICAg
ICAgICBydEJsZW5kLlNyY0JsZW5kQWxwaGEgPSBnbF9kM2QxMTo6Q29udmVydEJsZW5kRnVuYyhi
bGVuZFN0YXRlLnNvdXJjZUJsZW5kQWxwaGEsIHRydWUpOwotICAgICAgICAgICAgICAgIHJ0Qmxl
bmQuRGVzdEJsZW5kQWxwaGEgPSBnbF9kM2QxMTo6Q29udmVydEJsZW5kRnVuYyhibGVuZFN0YXRl
LmRlc3RCbGVuZEFscGhhLCB0cnVlKTsKLSAgICAgICAgICAgICAgICBydEJsZW5kLkJsZW5kT3BB
bHBoYSA9IGdsX2QzZDExOjpDb252ZXJ0QmxlbmRPcChibGVuZFN0YXRlLmJsZW5kRXF1YXRpb25B
bHBoYSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChibGVuZFN0YXRlLmJsZW5kKQorICAg
ICAgICB7CisgICAgICAgICAgICBydERlc2MwLkJsZW5kRW5hYmxlICAgID0gdHJ1ZTsKKyAgICAg
ICAgICAgIHJ0RGVzYzAuU3JjQmxlbmQgICAgICAgPSBnbF9kM2QxMTo6Q29udmVydEJsZW5kRnVu
YyhibGVuZFN0YXRlLnNvdXJjZUJsZW5kUkdCLCBmYWxzZSk7CisgICAgICAgICAgICBydERlc2Mw
LkRlc3RCbGVuZCAgICAgID0gZ2xfZDNkMTE6OkNvbnZlcnRCbGVuZEZ1bmMoYmxlbmRTdGF0ZS5k
ZXN0QmxlbmRSR0IsIGZhbHNlKTsKKyAgICAgICAgICAgIHJ0RGVzYzAuQmxlbmRPcCAgICAgICAg
PSBnbF9kM2QxMTo6Q29udmVydEJsZW5kT3AoYmxlbmRTdGF0ZS5ibGVuZEVxdWF0aW9uUkdCKTsK
KyAgICAgICAgICAgIHJ0RGVzYzAuU3JjQmxlbmRBbHBoYSAgPSBnbF9kM2QxMTo6Q29udmVydEJs
ZW5kRnVuYyhibGVuZFN0YXRlLnNvdXJjZUJsZW5kQWxwaGEsIHRydWUpOworICAgICAgICAgICAg
cnREZXNjMC5EZXN0QmxlbmRBbHBoYSA9IGdsX2QzZDExOjpDb252ZXJ0QmxlbmRGdW5jKGJsZW5k
U3RhdGUuZGVzdEJsZW5kQWxwaGEsIHRydWUpOworICAgICAgICAgICAgcnREZXNjMC5CbGVuZE9w
QWxwaGEgICA9IGdsX2QzZDExOjpDb252ZXJ0QmxlbmRPcChibGVuZFN0YXRlLmJsZW5kRXF1YXRp
b25BbHBoYSk7CisgICAgICAgIH0KKworICAgICAgICBydERlc2MwLlJlbmRlclRhcmdldFdyaXRl
TWFzayA9IGtleS5ydHZNYXNrc1swXTsKIAotICAgICAgICAgICAgcnRCbGVuZC5SZW5kZXJUYXJn
ZXRXcml0ZU1hc2sgPSBnbF9kM2QxMTo6Q29udmVydENvbG9yTWFzayhrZXkucnRDaGFubmVsc1tp
XVswXSAmJiBibGVuZFN0YXRlLmNvbG9yTWFza1JlZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LnJ0Q2hh
bm5lbHNbaV1bMV0gJiYgYmxlbmRTdGF0ZS5jb2xvck1hc2tHcmVlbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
a2V5LnJ0Q2hhbm5lbHNbaV1bMl0gJiYgYmxlbmRTdGF0ZS5jb2xvck1hc2tCbHVlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBrZXkucnRDaGFubmVsc1tpXVszXSAmJiBibGVuZFN0YXRlLmNvbG9yTWFza0FscGhh
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDE7IGkgPCBEM0QxMV9TSU1VTFRBTkVP
VVNfUkVOREVSX1RBUkdFVF9DT1VOVDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBibGVu
ZERlc2MuUmVuZGVyVGFyZ2V0W2ldICAgICAgICAgICAgICAgICAgICAgICA9IHJ0RGVzYzA7Cisg
ICAgICAgICAgICBibGVuZERlc2MuUmVuZGVyVGFyZ2V0W2ldLlJlbmRlclRhcmdldFdyaXRlTWFz
ayA9IGtleS5ydHZNYXNrc1tpXTsKICAgICAgICAgfQogCi0gICAgICAgIElEM0QxMUJsZW5kU3Rh
dGUgKmR4MTFCbGVuZFN0YXRlID0gTlVMTDsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2
aWNlLT5DcmVhdGVCbGVuZFN0YXRlKCZibGVuZERlc2MsICZkeDExQmxlbmRTdGF0ZSk7Ci0gICAg
ICAgIGlmIChGQUlMRUQocmVzdWx0KSB8fCAhZHgxMUJsZW5kU3RhdGUpCisgICAgICAgIEhSRVNV
TFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlQmxlbmRTdGF0ZSgmYmxlbmREZXNjLCBvdXRCbGVu
ZFN0YXRlKTsKKyAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpIHx8ICEoKm91dEJsZW5kU3RhdGUp
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1P
UlksICJVbmFibGUgdG8gY3JlYXRlIGEgSUQzRDExQmxlbmRTdGF0ZSwgSFJFU1VMVDogMHglWC4i
LCByZXN1bHQpOwogICAgICAgICB9CiAKLSAgICAgICAgbUJsZW5kU3RhdGVDYWNoZS5pbnNlcnQo
c3RkOjptYWtlX3BhaXIoa2V5LCBzdGQ6Om1ha2VfcGFpcihkeDExQmxlbmRTdGF0ZSwgbUNvdW50
ZXIrKykpKTsKKyAgICAgICAgbUJsZW5kU3RhdGVDYWNoZS5pbnNlcnQoc3RkOjptYWtlX3BhaXIo
a2V5LCBzdGQ6Om1ha2VfcGFpcigqb3V0QmxlbmRTdGF0ZSwgbUNvdW50ZXIrKykpKTsKIAotICAg
ICAgICAqb3V0QmxlbmRTdGF0ZSA9IGR4MTFCbGVuZFN0YXRlOwotICAgICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAg
fQogfQogCi1zdGQ6OnNpemVfdCBSZW5kZXJTdGF0ZUNhY2hlOjpoYXNoUmFzdGVyaXplclN0YXRl
KGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZUtleSAmcmFzdGVyU3RhdGUpCisvLyBzdGF0aWMKK3N0ZDo6
c2l6ZV90IFJlbmRlclN0YXRlQ2FjaGU6Okhhc2hSYXN0ZXJpemVyU3RhdGUoY29uc3QgUmFzdGVy
aXplclN0YXRlS2V5ICZyYXN0ZXJTdGF0ZSkKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
aW50IHNlZWQgPSAweEFCQ0RFRjk4OwogCkBAIC0xOTcsNyArMjE4LDggQEAgc3RkOjpzaXplX3Qg
UmVuZGVyU3RhdGVDYWNoZTo6aGFzaFJhc3Rlcml6ZXJTdGF0ZShjb25zdCBSYXN0ZXJpemVyU3Rh
dGVLZXkgJnJhc3QKICAgICByZXR1cm4gaGFzaDsKIH0KIAotYm9vbCBSZW5kZXJTdGF0ZUNhY2hl
Ojpjb21wYXJlUmFzdGVyaXplclN0YXRlcyhjb25zdCBSYXN0ZXJpemVyU3RhdGVLZXkgJmEsIGNv
bnN0IFJhc3Rlcml6ZXJTdGF0ZUtleSAmYikKKy8vIHN0YXRpYworYm9vbCBSZW5kZXJTdGF0ZUNh
Y2hlOjpDb21wYXJlUmFzdGVyaXplclN0YXRlcyhjb25zdCBSYXN0ZXJpemVyU3RhdGVLZXkgJmEs
IGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZUtleSAmYikKIHsKICAgICByZXR1cm4gbWVtY21wKCZhLCAm
Yiwgc2l6ZW9mKFJhc3Rlcml6ZXJTdGF0ZUtleSkpID09IDA7CiB9CkBAIC0yMjAsMTQgKzI0Miwx
NCBAQCBnbDo6RXJyb3IgUmVuZGVyU3RhdGVDYWNoZTo6Z2V0UmFzdGVyaXplclN0YXRlKGNvbnN0
IGdsOjpSYXN0ZXJpemVyU3RhdGUgJnJhc3RlcgogICAgICAgICBSYXN0ZXJpemVyU3RhdGVDb3Vu
dGVyUGFpciAmc3RhdGUgPSBrZXlJdGVyLT5zZWNvbmQ7CiAgICAgICAgIHN0YXRlLnNlY29uZCA9
IG1Db3VudGVyKys7CiAgICAgICAgICpvdXRSYXN0ZXJpemVyU3RhdGUgPSBzdGF0ZS5maXJzdDsK
LSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogICAgIH0KICAgICBlbHNlCiAgICAgewogICAgICAgICBpZiAobVJhc3Rl
cml6ZXJTdGF0ZUNhY2hlLnNpemUoKSA+PSBrTWF4UmFzdGVyaXplclN0YXRlcykKICAgICAgICAg
ewotICAgICAgICAgICAgVFJBQ0UoIk92ZXJmbG93ZWQgdGhlIGxpbWl0IG9mICV1IHJhc3Rlcml6
ZXIgc3RhdGVzLCByZW1vdmluZyB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZCAiCi0gICAgICAgICAg
ICAgICAgICAidG8gbWFrZSByb29tLiIsIGtNYXhSYXN0ZXJpemVyU3RhdGVzKTsKKyAgICAgICAg
ICAgIFdBUk4oKSA8PCAiT3ZlcmZsb3dlZCB0aGUgbGltaXQgb2YgIiA8PCBrTWF4UmFzdGVyaXpl
clN0YXRlcworICAgICAgICAgICAgICAgICAgIDw8ICIgcmFzdGVyaXplciBzdGF0ZXMsIHJlbW92
aW5nIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkIHRvIG1ha2Ugcm9vbS4iOwogCiAgICAgICAgICAg
ICBSYXN0ZXJpemVyU3RhdGVNYXA6Oml0ZXJhdG9yIGxlYXN0UmVjZW50bHlVc2VkID0gbVJhc3Rl
cml6ZXJTdGF0ZUNhY2hlLmJlZ2luKCk7CiAgICAgICAgICAgICBmb3IgKFJhc3Rlcml6ZXJTdGF0
ZU1hcDo6aXRlcmF0b3IgaSA9IG1SYXN0ZXJpemVyU3RhdGVDYWNoZS5iZWdpbigpOyBpICE9IG1S
YXN0ZXJpemVyU3RhdGVDYWNoZS5lbmQoKTsgaSsrKQpAQCAtMjgwLDExICszMDIsMTIgQEAgZ2w6
OkVycm9yIFJlbmRlclN0YXRlQ2FjaGU6OmdldFJhc3Rlcml6ZXJTdGF0ZShjb25zdCBnbDo6UmFz
dGVyaXplclN0YXRlICZyYXN0ZXIKICAgICAgICAgbVJhc3Rlcml6ZXJTdGF0ZUNhY2hlLmluc2Vy
dChzdGQ6Om1ha2VfcGFpcihrZXksIHN0ZDo6bWFrZV9wYWlyKGR4MTFSYXN0ZXJpemVyU3RhdGUs
IG1Db3VudGVyKyspKSk7CiAKICAgICAgICAgKm91dFJhc3Rlcml6ZXJTdGF0ZSA9IGR4MTFSYXN0
ZXJpemVyU3RhdGU7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAg
ICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiB9CiAKLXN0ZDo6c2l6ZV90IFJlbmRl
clN0YXRlQ2FjaGU6Omhhc2hEZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBnbDo6RGVwdGhTdGVuY2ls
U3RhdGUgJmRzU3RhdGUpCisvLyBzdGF0aWMKK3N0ZDo6c2l6ZV90IFJlbmRlclN0YXRlQ2FjaGU6
Okhhc2hEZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmRzU3Rh
dGUpCiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBzZWVkID0gMHhBQkNERUY5ODsK
IApAQCAtMjkzLDE0ICszMTYsMTMgQEAgc3RkOjpzaXplX3QgUmVuZGVyU3RhdGVDYWNoZTo6aGFz
aERlcHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZQogICAgIHJldHVy
biBoYXNoOwogfQogCi1ib29sIFJlbmRlclN0YXRlQ2FjaGU6OmNvbXBhcmVEZXB0aFN0ZW5jaWxT
dGF0ZXMoY29uc3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICZhLCBjb25zdCBnbDo6RGVwdGhTdGVu
Y2lsU3RhdGUgJmIpCisvLyBzdGF0aWMKK2Jvb2wgUmVuZGVyU3RhdGVDYWNoZTo6Q29tcGFyZURl
cHRoU3RlbmNpbFN0YXRlcyhjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmEsIGNvbnN0IGds
OjpEZXB0aFN0ZW5jaWxTdGF0ZSAmYikKIHsKICAgICByZXR1cm4gbWVtY21wKCZhLCAmYiwgc2l6
ZW9mKGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSkpID09IDA7CiB9CiAKLWdsOjpFcnJvciBSZW5kZXJT
dGF0ZUNhY2hlOjpnZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3Rh
dGUgJm9yaWdpbmFsU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBkaXNhYmxlRGVwdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBkaXNhYmxlU3RlbmNpbCwKK2dsOjpFcnJvciBS
ZW5kZXJTdGF0ZUNhY2hlOjpnZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBnbDo6RGVwdGhTdGVu
Y2lsU3RhdGUgJmdsU3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSUQzRDExRGVwdGhTdGVuY2lsU3RhdGUgKipvdXREU1N0YXRlKQogewogICAg
IGlmICghbURldmljZSkKQEAgLTMwOCwzNSArMzMwLDE5IEBAIGdsOjpFcnJvciBSZW5kZXJTdGF0
ZUNhY2hlOjpnZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUg
Jm9yCiAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkludGVybmFs
IGVycm9yLCBSZW5kZXJTdGF0ZUNhY2hlIGlzIG5vdCBpbml0aWFsaXplZC4iKTsKICAgICB9CiAK
LSAgICBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgZ2xTdGF0ZSA9IG9yaWdpbmFsU3RhdGU7Ci0gICAg
aWYgKGRpc2FibGVEZXB0aCkKLSAgICB7Ci0gICAgICAgIGdsU3RhdGUuZGVwdGhUZXN0ID0gZmFs
c2U7Ci0gICAgICAgIGdsU3RhdGUuZGVwdGhNYXNrID0gZmFsc2U7Ci0gICAgfQotCi0gICAgaWYg
KGRpc2FibGVTdGVuY2lsKQotICAgIHsKLSAgICAgICAgZ2xTdGF0ZS5zdGVuY2lsV3JpdGVtYXNr
ICAgICA9IDA7Ci0gICAgICAgIGdsU3RhdGUuc3RlbmNpbEJhY2tXcml0ZW1hc2sgPSAwOwotICAg
ICAgICBnbFN0YXRlLnN0ZW5jaWxUZXN0ICAgICAgICAgID0gZmFsc2U7Ci0gICAgfQotCiAgICAg
YXV0byBrZXlJdGVyID0gbURlcHRoU3RlbmNpbFN0YXRlQ2FjaGUuZmluZChnbFN0YXRlKTsKICAg
ICBpZiAoa2V5SXRlciAhPSBtRGVwdGhTdGVuY2lsU3RhdGVDYWNoZS5lbmQoKSkKICAgICB7CiAg
ICAgICAgIERlcHRoU3RlbmNpbFN0YXRlQ291bnRlclBhaXIgJnN0YXRlID0ga2V5SXRlci0+c2Vj
b25kOwogICAgICAgICBzdGF0ZS5zZWNvbmQgPSBtQ291bnRlcisrOwogICAgICAgICAqb3V0RFNT
dGF0ZSA9IHN0YXRlLmZpcnN0OwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAgaWYgKG1EZXB0
aFN0ZW5jaWxTdGF0ZUNhY2hlLnNpemUoKSA+PSBrTWF4RGVwdGhTdGVuY2lsU3RhdGVzKQogICAg
IHsKLSAgICAgICAgVFJBQ0UoCi0gICAgICAgICAgICAiT3ZlcmZsb3dlZCB0aGUgbGltaXQgb2Yg
JXUgZGVwdGggc3RlbmNpbCBzdGF0ZXMsIHJlbW92aW5nIHRoZSBsZWFzdCByZWNlbnRseSB1c2Vk
ICIKLSAgICAgICAgICAgICJ0byBtYWtlIHJvb20uIiwKLSAgICAgICAgICAgIGtNYXhEZXB0aFN0
ZW5jaWxTdGF0ZXMpOworICAgICAgICBXQVJOKCkgPDwgIk92ZXJmbG93ZWQgdGhlIGxpbWl0IG9m
ICIgPDwga01heERlcHRoU3RlbmNpbFN0YXRlcworICAgICAgICAgICAgICAgPDwgIiBkZXB0aCBz
dGVuY2lsIHN0YXRlcywgcmVtb3ZpbmcgdGhlIGxlYXN0IHJlY2VudGx5IHVzZWQgdG8gbWFrZSBy
b29tLiI7CiAKICAgICAgICAgYXV0byBsZWFzdFJlY2VudGx5VXNlZCA9IG1EZXB0aFN0ZW5jaWxT
dGF0ZUNhY2hlLmJlZ2luKCk7CiAgICAgICAgIGZvciAoYXV0byBpID0gbURlcHRoU3RlbmNpbFN0
YXRlQ2FjaGUuYmVnaW4oKTsgaSAhPSBtRGVwdGhTdGVuY2lsU3RhdGVDYWNoZS5lbmQoKTsgaSsr
KQpAQCAtMzc4LDEwICszODQsMTEgQEAgZ2w6OkVycm9yIFJlbmRlclN0YXRlQ2FjaGU6OmdldERl
cHRoU3RlbmNpbFN0YXRlKGNvbnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmb3IKICAgICAgICAg
c3RkOjptYWtlX3BhaXIoZ2xTdGF0ZSwgc3RkOjptYWtlX3BhaXIoZHgxMURlcHRoU3RlbmNpbFN0
YXRlLCBtQ291bnRlcisrKSkpOwogCiAgICAgKm91dERTU3RhdGUgPSBkeDExRGVwdGhTdGVuY2ls
U3RhdGU7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7CiB9CiAKLXN0ZDo6c2l6ZV90IFJlbmRlclN0YXRlQ2FjaGU6Omhhc2hTYW1w
bGVyU3RhdGUoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2FtcGxlclN0YXRlKQorLy8gc3RhdGlj
CitzdGQ6OnNpemVfdCBSZW5kZXJTdGF0ZUNhY2hlOjpIYXNoU2FtcGxlclN0YXRlKGNvbnN0IGds
OjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSkKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgaW50IHNlZWQgPSAweEFCQ0RFRjk4OwogCkBAIC0zOTAsNyArMzk3LDggQEAgc3RkOjpzaXpl
X3QgUmVuZGVyU3RhdGVDYWNoZTo6aGFzaFNhbXBsZXJTdGF0ZShjb25zdCBnbDo6U2FtcGxlclN0
YXRlICZzYW1wbGVyU3QKICAgICByZXR1cm4gaGFzaDsKIH0KIAotYm9vbCBSZW5kZXJTdGF0ZUNh
Y2hlOjpjb21wYXJlU2FtcGxlclN0YXRlcyhjb25zdCBnbDo6U2FtcGxlclN0YXRlICZhLCBjb25z
dCBnbDo6U2FtcGxlclN0YXRlICZiKQorLy8gc3RhdGljCitib29sIFJlbmRlclN0YXRlQ2FjaGU6
OkNvbXBhcmVTYW1wbGVyU3RhdGVzKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJmEsIGNvbnN0IGds
OjpTYW1wbGVyU3RhdGUgJmIpCiB7CiAgICAgcmV0dXJuIG1lbWNtcCgmYSwgJmIsIHNpemVvZihn
bDo6U2FtcGxlclN0YXRlKSkgPT0gMDsKIH0KQEAgLTQwOCwxNCArNDE2LDE0IEBAIGdsOjpFcnJv
ciBSZW5kZXJTdGF0ZUNhY2hlOjpnZXRTYW1wbGVyU3RhdGUoY29uc3QgZ2w6OlNhbXBsZXJTdGF0
ZSAmc2FtcGxlclN0YXRlCiAgICAgICAgIFNhbXBsZXJTdGF0ZUNvdW50ZXJQYWlyICZzdGF0ZSA9
IGtleUl0ZXItPnNlY29uZDsKICAgICAgICAgc3RhdGUuc2Vjb25kID0gbUNvdW50ZXIrKzsKICAg
ICAgICAgKm91dFNhbXBsZXJTdGF0ZSA9IHN0YXRlLmZpcnN0OwotICAgICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAg
fQogICAgIGVsc2UKICAgICB7CiAgICAgICAgIGlmIChtU2FtcGxlclN0YXRlQ2FjaGUuc2l6ZSgp
ID49IGtNYXhTYW1wbGVyU3RhdGVzKQogICAgICAgICB7Ci0gICAgICAgICAgICBUUkFDRSgiT3Zl
cmZsb3dlZCB0aGUgbGltaXQgb2YgJXUgc2FtcGxlciBzdGF0ZXMsIHJlbW92aW5nIHRoZSBsZWFz
dCByZWNlbnRseSB1c2VkICIKLSAgICAgICAgICAgICAgICAgICJ0byBtYWtlIHJvb20uIiwga01h
eFNhbXBsZXJTdGF0ZXMpOworICAgICAgICAgICAgV0FSTigpIDw8ICJPdmVyZmxvd2VkIHRoZSBs
aW1pdCBvZiAiIDw8IGtNYXhTYW1wbGVyU3RhdGVzCisgICAgICAgICAgICAgICAgICAgPDwgIiBz
YW1wbGVyIHN0YXRlcywgcmVtb3ZpbmcgdGhlIGxlYXN0IHJlY2VudGx5IHVzZWQgdG8gbWFrZSBy
b29tLiI7CiAKICAgICAgICAgICAgIFNhbXBsZXJTdGF0ZU1hcDo6aXRlcmF0b3IgbGVhc3RSZWNl
bnRseVVzZWQgPSBtU2FtcGxlclN0YXRlQ2FjaGUuYmVnaW4oKTsKICAgICAgICAgICAgIGZvciAo
U2FtcGxlclN0YXRlTWFwOjppdGVyYXRvciBpID0gbVNhbXBsZXJTdGF0ZUNhY2hlLmJlZ2luKCk7
IGkgIT0gbVNhbXBsZXJTdGF0ZUNhY2hlLmVuZCgpOyBpKyspCkBAIC00NjYsNyArNDc0LDcgQEAg
Z2w6OkVycm9yIFJlbmRlclN0YXRlQ2FjaGU6OmdldFNhbXBsZXJTdGF0ZShjb25zdCBnbDo6U2Ft
cGxlclN0YXRlICZzYW1wbGVyU3RhdGUKICAgICAgICAgbVNhbXBsZXJTdGF0ZUNhY2hlLmluc2Vy
dChzdGQ6Om1ha2VfcGFpcihzYW1wbGVyU3RhdGUsIHN0ZDo6bWFrZV9wYWlyKGR4MTFTYW1wbGVy
U3RhdGUsIG1Db3VudGVyKyspKSk7CiAKICAgICAgICAgKm91dFNhbXBsZXJTdGF0ZSA9IGR4MTFT
YW1wbGVyU3RhdGU7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAg
ICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVy
U3RhdGVDYWNoZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9SZW5kZXJTdGF0ZUNhY2hlLmgKaW5kZXggODJjYjEzOTAzY2YuLmI5OTgx
MDUyNjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRlQ2FjaGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclN0YXRlQ2Fj
aGUuaApAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIK
ICNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5oIgogI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxz
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRp
bHMuaCIKIAogI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CiAKQEAgLTM0LDExICszNSwxMSBAQCBj
bGFzcyBSZW5kZXJTdGF0ZUNhY2hlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgdm9pZCBpbml0
aWFsaXplKElEM0QxMURldmljZSAqZGV2aWNlKTsKICAgICB2b2lkIGNsZWFyKCk7CiAKLSAgICBn
bDo6RXJyb3IgZ2V0QmxlbmRTdGF0ZShjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVy
LCBjb25zdCBnbDo6QmxlbmRTdGF0ZSAmYmxlbmRTdGF0ZSwgSUQzRDExQmxlbmRTdGF0ZSAqKm91
dEJsZW5kU3RhdGUpOworICAgIHN0YXRpYyBkM2QxMTo6QmxlbmRTdGF0ZUtleSBHZXRCbGVuZFN0
YXRlS2V5KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJsZW5kU3RhdGUg
JmJsZW5kU3RhdGUpOworICAgIGdsOjpFcnJvciBnZXRCbGVuZFN0YXRlKGNvbnN0IGQzZDExOjpC
bGVuZFN0YXRlS2V5ICZrZXksIElEM0QxMUJsZW5kU3RhdGUgKipvdXRCbGVuZFN0YXRlKTsKICAg
ICBnbDo6RXJyb3IgZ2V0UmFzdGVyaXplclN0YXRlKGNvbnN0IGdsOjpSYXN0ZXJpemVyU3RhdGUg
JnJhc3RlclN0YXRlLCBib29sIHNjaXNzb3JFbmFibGVkLCBJRDNEMTFSYXN0ZXJpemVyU3RhdGUg
KipvdXRSYXN0ZXJpemVyU3RhdGUpOwogICAgIGdsOjpFcnJvciBnZXREZXB0aFN0ZW5jaWxTdGF0
ZShjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmRzU3RhdGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgZGlzYWJsZURlcHRoLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGRpc2FibGVTdGVuY2lsLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJRDNEMTFEZXB0aFN0ZW5jaWxTdGF0ZSAqKm91dERTU3RhdGUpOwog
ICAgIGdsOjpFcnJvciBnZXRTYW1wbGVyU3RhdGUoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmc2Ft
cGxlclN0YXRlLCBJRDNEMTFTYW1wbGVyU3RhdGUgKipvdXRTYW1wbGVyU3RhdGUpOwogCkBAIC00
NywxOSArNDgsMTkgQEAgY2xhc3MgUmVuZGVyU3RhdGVDYWNoZSA6IGFuZ2xlOjpOb25Db3B5YWJs
ZQogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtQ291bnRlcjsKIAogICAgIC8vIEJsZW5kIHN0YXRl
IGNhY2hlCi0gICAgc3RydWN0IEJsZW5kU3RhdGVLZXkKLSAgICB7Ci0gICAgICAgIGdsOjpCbGVu
ZFN0YXRlIGJsZW5kU3RhdGU7Ci0gICAgICAgIGJvb2wgcnRDaGFubmVsc1tEM0QxMV9TSU1VTFRB
TkVPVVNfUkVOREVSX1RBUkdFVF9DT1VOVF1bNF07Ci0gICAgfTsKLSAgICBzdGF0aWMgc3RkOjpz
aXplX3QgaGFzaEJsZW5kU3RhdGUoY29uc3QgQmxlbmRTdGF0ZUtleSAmYmxlbmRTdGF0ZSk7Ci0g
ICAgc3RhdGljIGJvb2wgY29tcGFyZUJsZW5kU3RhdGVzKGNvbnN0IEJsZW5kU3RhdGVLZXkgJmEs
IGNvbnN0IEJsZW5kU3RhdGVLZXkgJmIpOworICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBIYXNoQmxl
bmRTdGF0ZShjb25zdCBkM2QxMTo6QmxlbmRTdGF0ZUtleSAmYmxlbmRTdGF0ZSk7CisgICAgc3Rh
dGljIGJvb2wgQ29tcGFyZUJsZW5kU3RhdGVzKGNvbnN0IGQzZDExOjpCbGVuZFN0YXRlS2V5ICZh
LCBjb25zdCBkM2QxMTo6QmxlbmRTdGF0ZUtleSAmYik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGludCBrTWF4QmxlbmRTdGF0ZXM7CiAKLSAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICgqQmxl
bmRTdGF0ZUhhc2hGdW5jdGlvbikoY29uc3QgQmxlbmRTdGF0ZUtleSAmKTsKLSAgICB0eXBlZGVm
IGJvb2wgKCpCbGVuZFN0YXRlRXF1YWxpdHlGdW5jdGlvbikoY29uc3QgQmxlbmRTdGF0ZUtleSAm
LCBjb25zdCBCbGVuZFN0YXRlS2V5ICYpOworICAgIHR5cGVkZWYgc3RkOjpzaXplX3QgKCpCbGVu
ZFN0YXRlSGFzaEZ1bmN0aW9uKShjb25zdCBkM2QxMTo6QmxlbmRTdGF0ZUtleSAmKTsKKyAgICB0
eXBlZGVmIGJvb2wgKCpCbGVuZFN0YXRlRXF1YWxpdHlGdW5jdGlvbikoY29uc3QgZDNkMTE6OkJs
ZW5kU3RhdGVLZXkgJiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZDNkMTE6OkJsZW5kU3RhdGVLZXkgJik7CiAgICAgdHlwZWRlZiBzdGQ6OnBh
aXI8SUQzRDExQmxlbmRTdGF0ZSosIHVuc2lnbmVkIGxvbmcgbG9uZz4gQmxlbmRTdGF0ZUNvdW50
ZXJQYWlyOwotICAgIHR5cGVkZWYgc3RkOjp1bm9yZGVyZWRfbWFwPEJsZW5kU3RhdGVLZXksIEJs
ZW5kU3RhdGVDb3VudGVyUGFpciwgQmxlbmRTdGF0ZUhhc2hGdW5jdGlvbiwgQmxlbmRTdGF0ZUVx
dWFsaXR5RnVuY3Rpb24+IEJsZW5kU3RhdGVNYXA7CisgICAgdHlwZWRlZiBzdGQ6OnVub3JkZXJl
ZF9tYXA8ZDNkMTE6OkJsZW5kU3RhdGVLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQmxlbmRTdGF0ZUNvdW50ZXJQYWlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEJsZW5kU3RhdGVIYXNoRnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
QmxlbmRTdGF0ZUVxdWFsaXR5RnVuY3Rpb24+CisgICAgICAgIEJsZW5kU3RhdGVNYXA7CiAgICAg
QmxlbmRTdGF0ZU1hcCBtQmxlbmRTdGF0ZUNhY2hlOwogCiAgICAgLy8gUmFzdGVyaXplciBzdGF0
ZSBjYWNoZQpAQCAtNjgsOCArNjksOCBAQCBjbGFzcyBSZW5kZXJTdGF0ZUNhY2hlIDogYW5nbGU6
Ok5vbkNvcHlhYmxlCiAgICAgICAgIGdsOjpSYXN0ZXJpemVyU3RhdGUgcmFzdGVyaXplclN0YXRl
OwogICAgICAgICBib29sIHNjaXNzb3JFbmFibGVkOwogICAgIH07Ci0gICAgc3RhdGljIHN0ZDo6
c2l6ZV90IGhhc2hSYXN0ZXJpemVyU3RhdGUoY29uc3QgUmFzdGVyaXplclN0YXRlS2V5ICZyYXN0
ZXJTdGF0ZSk7Ci0gICAgc3RhdGljIGJvb2wgY29tcGFyZVJhc3Rlcml6ZXJTdGF0ZXMoY29uc3Qg
UmFzdGVyaXplclN0YXRlS2V5ICZhLCBjb25zdCBSYXN0ZXJpemVyU3RhdGVLZXkgJmIpOworICAg
IHN0YXRpYyBzdGQ6OnNpemVfdCBIYXNoUmFzdGVyaXplclN0YXRlKGNvbnN0IFJhc3Rlcml6ZXJT
dGF0ZUtleSAmcmFzdGVyU3RhdGUpOworICAgIHN0YXRpYyBib29sIENvbXBhcmVSYXN0ZXJpemVy
U3RhdGVzKGNvbnN0IFJhc3Rlcml6ZXJTdGF0ZUtleSAmYSwgY29uc3QgUmFzdGVyaXplclN0YXRl
S2V5ICZiKTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IGtNYXhSYXN0ZXJpemVyU3Rh
dGVzOwogCiAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAoKlJhc3Rlcml6ZXJTdGF0ZUhhc2hGdW5j
dGlvbikoY29uc3QgUmFzdGVyaXplclN0YXRlS2V5ICYpOwpAQCAtNzksOCArODAsOCBAQCBjbGFz
cyBSZW5kZXJTdGF0ZUNhY2hlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgUmFzdGVyaXplclN0
YXRlTWFwIG1SYXN0ZXJpemVyU3RhdGVDYWNoZTsKIAogICAgIC8vIERlcHRoIHN0ZW5jaWwgc3Rh
dGUgY2FjaGUKLSAgICBzdGF0aWMgc3RkOjpzaXplX3QgaGFzaERlcHRoU3RlbmNpbFN0YXRlKGNv
bnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmZHNTdGF0ZSk7Ci0gICAgc3RhdGljIGJvb2wgY29t
cGFyZURlcHRoU3RlbmNpbFN0YXRlcyhjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmEsIGNv
bnN0IGdsOjpEZXB0aFN0ZW5jaWxTdGF0ZSAmYik7CisgICAgc3RhdGljIHN0ZDo6c2l6ZV90IEhh
c2hEZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmRzU3RhdGUp
OworICAgIHN0YXRpYyBib29sIENvbXBhcmVEZXB0aFN0ZW5jaWxTdGF0ZXMoY29uc3QgZ2w6OkRl
cHRoU3RlbmNpbFN0YXRlICZhLCBjb25zdCBnbDo6RGVwdGhTdGVuY2lsU3RhdGUgJmIpOwogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQga01heERlcHRoU3RlbmNpbFN0YXRlczsKIAogICAg
IHR5cGVkZWYgc3RkOjpzaXplX3QgKCpEZXB0aFN0ZW5jaWxTdGF0ZUhhc2hGdW5jdGlvbikoY29u
c3QgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlICYpOwpAQCAtOTMsOCArOTQsOCBAQCBjbGFzcyBSZW5k
ZXJTdGF0ZUNhY2hlIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgRGVwdGhTdGVuY2lsU3RhdGVN
YXAgbURlcHRoU3RlbmNpbFN0YXRlQ2FjaGU7CiAKICAgICAvLyBTYW1wbGUgc3RhdGUgY2FjaGUK
LSAgICBzdGF0aWMgc3RkOjpzaXplX3QgaGFzaFNhbXBsZXJTdGF0ZShjb25zdCBnbDo6U2FtcGxl
clN0YXRlICZzYW1wbGVyU3RhdGUpOwotICAgIHN0YXRpYyBib29sIGNvbXBhcmVTYW1wbGVyU3Rh
dGVzKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJmEsIGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJmIp
OworICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBIYXNoU2FtcGxlclN0YXRlKGNvbnN0IGdsOjpTYW1w
bGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSk7CisgICAgc3RhdGljIGJvb2wgQ29tcGFyZVNhbXBsZXJT
dGF0ZXMoY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAmYSwgY29uc3QgZ2w6OlNhbXBsZXJTdGF0ZSAm
Yik7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBrTWF4U2FtcGxlclN0YXRlczsKIAog
ICAgIHR5cGVkZWYgc3RkOjpzaXplX3QgKCpTYW1wbGVyU3RhdGVIYXNoRnVuY3Rpb24pKGNvbnN0
IGdsOjpTYW1wbGVyU3RhdGUgJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlclRhcmdldDExLmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVu
ZGVyVGFyZ2V0MTEuY3BwCmluZGV4IDY0NDljOWU2YTU4Li5hMDQyZjQ0N2RhYSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9SZW5kZXJUYXJnZXQxMS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJUYXJnZXQxMS5jcHAKQEAgLTI1OCw3ICsy
NTgsNyBAQCBUZXh0dXJlUmVuZGVyVGFyZ2V0MTE6OlRleHR1cmVSZW5kZXJUYXJnZXQxMShJRDNE
MTFSZW5kZXJUYXJnZXRWaWV3ICpydHYsCiAgICAgewogICAgICAgICBtU3VicmVzb3VyY2VJbmRl
eCA9IEdldFJUVlN1YnJlc291cmNlSW5kZXgobVRleHR1cmUsIG1SZW5kZXJUYXJnZXQpOwogICAg
IH0KLSAgICBBU1NFUlQobUZvcm1hdFNldC5mb3JtYXQuaWQgIT0gYW5nbGU6OkZvcm1hdDo6SUQ6
Ok5PTkUgfHwgbVdpZHRoID09IDAgfHwgbUhlaWdodCA9PSAwKTsKKyAgICBBU1NFUlQobUZvcm1h
dFNldC5mb3JtYXRJRCAhPSBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSB8fCBtV2lkdGggPT0gMCB8
fCBtSGVpZ2h0ID09IDApOwogfQogCiBUZXh0dXJlUmVuZGVyVGFyZ2V0MTE6OlRleHR1cmVSZW5k
ZXJUYXJnZXQxMShJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpkc3YsCkBAIC0zMDIsNyArMzAyLDcg
QEAgVGV4dHVyZVJlbmRlclRhcmdldDExOjpUZXh0dXJlUmVuZGVyVGFyZ2V0MTEoSUQzRDExRGVw
dGhTdGVuY2lsVmlldyAqZHN2LAogICAgIHsKICAgICAgICAgbVN1YnJlc291cmNlSW5kZXggPSBH
ZXREU1ZTdWJyZXNvdXJjZUluZGV4KG1UZXh0dXJlLCBtRGVwdGhTdGVuY2lsKTsKICAgICB9Ci0g
ICAgQVNTRVJUKG1Gb3JtYXRTZXQuZm9ybWF0LmlkICE9IGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05F
IHx8IG1XaWR0aCA9PSAwIHx8IG1IZWlnaHQgPT0gMCk7CisgICAgQVNTRVJUKG1Gb3JtYXRTZXQu
Zm9ybWF0SUQgIT0gYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUgfHwgbVdpZHRoID09IDAgfHwgbUhl
aWdodCA9PSAwKTsKIH0KIAogVGV4dHVyZVJlbmRlclRhcmdldDExOjp+VGV4dHVyZVJlbmRlclRh
cmdldDExKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyVGFyZ2V0MTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyVGFyZ2V0MTEuaApp
bmRleCA0ZWUwZGUyOTIwMy4uNDc3NDRiZWE1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyVGFyZ2V0MTEu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL1JlbmRlclRhcmdldDExLmgKQEAgLTM1LDEyICszNSwxMiBAQCBjbGFzcyBSZW5kZXJU
YXJnZXQxMSA6IHB1YmxpYyBSZW5kZXJUYXJnZXREM0QKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGlu
dCBnZXRTdWJyZXNvdXJjZUluZGV4KCkgY29uc3QgPSAwOwogCiAgICAgdm9pZCBzaWduYWxEaXJ0
eSgpIG92ZXJyaWRlOwotICAgIGFuZ2xlOjpCcm9hZGNhc3RDaGFubmVsICpnZXRCcm9hZGNhc3RD
aGFubmVsKCkgeyByZXR1cm4gJm1Ccm9hZGNhc3RDaGFubmVsOyB9CisgICAgYW5nbGU6OkJyb2Fk
Y2FzdENoYW5uZWw8PiAqZ2V0QnJvYWRjYXN0Q2hhbm5lbCgpIHsgcmV0dXJuICZtQnJvYWRjYXN0
Q2hhbm5lbDsgfQogCiAgICAgY29uc3QgZDNkMTE6OkZvcm1hdCAmZ2V0Rm9ybWF0U2V0KCkgY29u
c3QgeyByZXR1cm4gbUZvcm1hdFNldDsgfQogCiAgIHByb3RlY3RlZDoKLSAgICBhbmdsZTo6QnJv
YWRjYXN0Q2hhbm5lbCBtQnJvYWRjYXN0Q2hhbm5lbDsKKyAgICBhbmdsZTo6QnJvYWRjYXN0Q2hh
bm5lbDw+IG1Ccm9hZGNhc3RDaGFubmVsOwogICAgIGNvbnN0IGQzZDExOjpGb3JtYXQgJm1Gb3Jt
YXRTZXQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmNwcApp
bmRleCA2MDBlOTllYTVhMC4uODJhMTE5OWI3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5jcHAK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9SZW5kZXJlcjExLmNwcApAQCAtOSw3ICs5LDYgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIxMS5oIgogCiAjaW5jbHVkZSA8RUdML2VnbGV4dC5o
PgotI2luY2x1ZGUgPGlvbWFuaXA+CiAjaW5jbHVkZSA8c3N0cmVhbT4KICNpbmNsdWRlIDx2ZXJz
aW9uaGVscGVycy5oPgogCkBAIC05OCwyMyArOTcsNiBAQCBlbnVtCiAgICAgTUFYX1RFWFRVUkVf
SU1BR0VfVU5JVFNfVlRGX1NNNCA9IDE2CiB9OwogCi12b2lkIENhbGN1bGF0ZUNvbnN0YW50QnVm
ZmVyUGFyYW1zKEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXplLCBVSU5UICpvdXRGaXJz
dENvbnN0YW50LCBVSU5UICpvdXROdW1Db25zdGFudHMpCi17Ci0gICAgLy8gVGhlIG9mZnNldCBt
dXN0IGJlIGFsaWduZWQgdG8gMjU2IGJ5dGVzIChzaG91bGQgaGF2ZSBiZWVuIGVuZm9yY2VkIGJ5
IGdsQmluZEJ1ZmZlclJhbmdlKS4KLSAgICBBU1NFUlQob2Zmc2V0ICUgMjU2ID09IDApOwotCi0g
ICAgLy8gZmlyc3RDb25zdGFudCBhbmQgbnVtQ29uc3RhbnRzIGFyZSBleHByZXNzZWQgaW4gY29u
c3RhbnRzIG9mIDE2LWJ5dGVzLiBGdXJ0aGVybW9yZSB0aGV5IG11c3QgYmUgYSBtdWx0aXBsZSBv
ZiAxNiBjb25zdGFudHMuCi0gICAgKm91dEZpcnN0Q29uc3RhbnQgPSBzdGF0aWNfY2FzdDxVSU5U
PihvZmZzZXQgLyAxNik7Ci0KLSAgICAvLyBUaGUgR0wgc2l6ZSBpcyBub3QgcmVxdWlyZWQgdG8g
YmUgYWxpZ25lZCB0byBhIDI1NiBieXRlcyBib3VuZGFyeS4KLSAgICAvLyBSb3VuZCB0aGUgc2l6
ZSB1cCB0byBhIDI1NiBieXRlcyBib3VuZGFyeSB0aGVuIGV4cHJlc3MgdGhlIHJlc3VsdHMgaW4g
Y29uc3RhbnRzIG9mIDE2LWJ5dGVzLgotICAgICpvdXROdW1Db25zdGFudHMgPSBzdGF0aWNfY2Fz
dDxVSU5UPihyeDo6cm91bmRVcChzaXplLCBzdGF0aWNfY2FzdDxHTHNpemVpcHRyPigyNTYpKSAv
IDE2KTsKLQotICAgIC8vIFNpbmNlIHRoZSBzaXplIGlzIHJvdW5kZWQgdXAsIGZpcnN0Q29uc3Rh
bnQgKyBudW1Db25zdGFudHMgbWF5IGJlIGJpZ2dlciB0aGFuIHRoZSBhY3R1YWwgc2l6ZSBvZiB0
aGUgYnVmZmVyLgotICAgIC8vIFRoaXMgYmVoYXZpb3VyIGlzIGV4cGxpY3RseSBhbGxvd2VkIGFj
Y29yZGluZyB0byB0aGUgZG9jdW1lbnRhdGlvbiBvbiBJRDNEMTFEZXZpY2VDb250ZXh0MTo6UFNT
ZXRDb25zdGFudEJ1ZmZlcnMxCi0gICAgLy8gaHR0cHM6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4t
dXMvbGlicmFyeS93aW5kb3dzL2Rlc2t0b3AvaGg0MDQ2NDklMjh2PXZzLjg1JTI5LmFzcHgKLX0K
LQogZW51bSBBTkdMRUZlYXR1cmVMZXZlbAogewogICAgIEFOR0xFX0ZFQVRVUkVfTEVWRUxfSU5W
QUxJRCwKQEAgLTEzMCwxNCArMTEyLDIwIEBAIEFOR0xFRmVhdHVyZUxldmVsIEdldEFOR0xFRmVh
dHVyZUxldmVsKEQzRF9GRUFUVVJFX0xFVkVMIGQzZEZlYXR1cmVMZXZlbCkKIHsKICAgICBzd2l0
Y2ggKGQzZEZlYXR1cmVMZXZlbCkKICAgICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzlfMzogcmV0dXJuIEFOR0xFX0ZFQVRVUkVfTEVWRUxfOV8zOwotICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF8xMF8wOiByZXR1cm4gQU5HTEVfRkVBVFVSRV9MRVZFTF8xMF8wOwotICAgICAg
Y2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOiByZXR1cm4gQU5HTEVfRkVBVFVSRV9MRVZFTF8x
MF8xOwotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOiByZXR1cm4gQU5HTEVfRkVB
VFVSRV9MRVZFTF8xMV8wOwotICAgICAgLy8gTm90ZTogd2UgZG9uJ3QgZXZlciByZXF1ZXN0IGEg
MTFfMSBkZXZpY2UsIGJlY2F1c2UgdGhpcyBnaXZlcwotICAgICAgLy8gYW4gRV9JTlZBTElEQVJH
IGVycm9yIG9uIHN5c3RlbXMgdGhhdCBkb24ndCBoYXZlIHRoZSBwbGF0Zm9ybSB1cGRhdGUuCi0g
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6IHJldHVybiBBTkdMRV9GRUFUVVJFX0xF
VkVMXzExXzE7Ci0gICAgICBkZWZhdWx0OiByZXR1cm4gQU5HTEVfRkVBVFVSRV9MRVZFTF9JTlZB
TElEOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgICAgIHJl
dHVybiBBTkdMRV9GRUFUVVJFX0xFVkVMXzlfMzsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMF8wOgorICAgICAgICAgICAgcmV0dXJuIEFOR0xFX0ZFQVRVUkVfTEVWRUxfMTBfMDsK
KyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOgorICAgICAgICAgICAgcmV0dXJu
IEFOR0xFX0ZFQVRVUkVfTEVWRUxfMTBfMTsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF8xMV8wOgorICAgICAgICAgICAgcmV0dXJuIEFOR0xFX0ZFQVRVUkVfTEVWRUxfMTFfMDsKKyAg
ICAgICAgLy8gTm90ZTogd2UgZG9uJ3QgZXZlciByZXF1ZXN0IGEgMTFfMSBkZXZpY2UsIGJlY2F1
c2UgdGhpcyBnaXZlcworICAgICAgICAvLyBhbiBFX0lOVkFMSURBUkcgZXJyb3Igb24gc3lzdGVt
cyB0aGF0IGRvbid0IGhhdmUgdGhlIHBsYXRmb3JtIHVwZGF0ZS4KKyAgICAgICAgY2FzZSBEM0Rf
RkVBVFVSRV9MRVZFTF8xMV8xOgorICAgICAgICAgICAgcmV0dXJuIEFOR0xFX0ZFQVRVUkVfTEVW
RUxfMTFfMTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBBTkdMRV9GRUFU
VVJFX0xFVkVMX0lOVkFMSUQ7CiAgICAgfQogfQogCkBAIC0zODgsMTAgKzM3Niw3IEBAIGludCBH
ZXRXcmFwQml0cyhHTGVudW0gd3JhcCkKICAgICB9CiB9CiAKLS8vIElmIHdlIHJlcXVlc3QgYSBz
Y3JhdGNoIGJ1ZmZlciByZXF1ZXN0aW5nIGEgc21hbGxlciBzaXplIHRoaXMgbWFueSB0aW1lcywK
LS8vIHJlbGVhc2UgYW5kIHJlY3JlYXRlIHRoZSBzY3JhdGNoIGJ1ZmZlci4gVGhpcyBlbnN1cmVz
IHdlIGRvbid0IGhhdmUgYQotLy8gZGVnZW5lcmF0ZSBjYXNlIHdoZXJlIHdlIGFyZSBzdHVjayBo
b2dnaW5nIG1lbW9yeS4KLWNvbnN0IGludCBTY3JhdGNoTWVtb3J5QnVmZmVyTGlmZXRpbWUgPSAx
MDAwOworY29uc3QgdWludDMyX3QgU2NyYXRjaE1lbW9yeUJ1ZmZlckxpZmV0aW1lID0gMTAwMDsK
IAogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCkBAIC0zOTksMTkgKzM4NCwyMCBAQCBSZW5k
ZXJlcjExOjpSZW5kZXJlcjExKGVnbDo6RGlzcGxheSAqZGlzcGxheSkKICAgICA6IFJlbmRlcmVy
RDNEKGRpc3BsYXkpLAogICAgICAgbVN0YXRlQ2FjaGUodGhpcyksCiAgICAgICBtU3RhdGVNYW5h
Z2VyKHRoaXMpLAotICAgICAgbUxhc3RIaXN0b2dyYW1VcGRhdGVUaW1lKEFOR0xFUGxhdGZvcm1D
dXJyZW50KCktPm1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKSwKKyAgICAgIG1MYXN0SGlz
dG9ncmFtVXBkYXRlVGltZSgKKyAgICAgICAgICBBTkdMRVBsYXRmb3JtQ3VycmVudCgpLT5tb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKSkpLAogICAgICAg
bURlYnVnKG51bGxwdHIpLAotICAgICAgbVNjcmF0Y2hNZW1vcnlCdWZmZXJSZXNldENvdW50ZXIo
MCksCisgICAgICBtU2NyYXRjaE1lbW9yeUJ1ZmZlcihTY3JhdGNoTWVtb3J5QnVmZmVyTGlmZXRp
bWUpLAogICAgICAgbUFubm90YXRvcihudWxscHRyKQogewogICAgIG1WZXJ0ZXhEYXRhTWFuYWdl
ciA9IE5VTEw7Ci0gICAgbUluZGV4RGF0YU1hbmFnZXIgPSBOVUxMOworICAgIG1JbmRleERhdGFN
YW5hZ2VyICA9IE5VTEw7CiAKLSAgICBtTGluZUxvb3BJQiA9IE5VTEw7Ci0gICAgbVRyaWFuZ2xl
RmFuSUIgPSBOVUxMOworICAgIG1MaW5lTG9vcElCICAgICAgID0gTlVMTDsKKyAgICBtVHJpYW5n
bGVGYW5JQiAgICA9IE5VTEw7CiAgICAgbUFwcGxpZWRJQkNoYW5nZWQgPSBmYWxzZTsKIAotICAg
IG1CbGl0ID0gTlVMTDsKKyAgICBtQmxpdCAgICAgICAgICA9IE5VTEw7CiAgICAgbVBpeGVsVHJh
bnNmZXIgPSBOVUxMOwogCiAgICAgbUNsZWFyID0gTlVMTDsKQEAgLTQyMCwzMSArNDA2LDMxIEBA
IFJlbmRlcmVyMTE6OlJlbmRlcmVyMTEoZWdsOjpEaXNwbGF5ICpkaXNwbGF5KQogCiAgICAgbVN5
bmNRdWVyeSA9IE5VTEw7CiAKLSAgICBtUmVuZGVyZXIxMURldmljZUNhcHMuc3VwcG9ydHNDbGVh
clZpZXcgPSBmYWxzZTsKKyAgICBtUmVuZGVyZXIxMURldmljZUNhcHMuc3VwcG9ydHNDbGVhclZp
ZXcgICAgICAgICAgICAgPSBmYWxzZTsKICAgICBtUmVuZGVyZXIxMURldmljZUNhcHMuc3VwcG9y
dHNDb25zdGFudEJ1ZmZlck9mZnNldHMgPSBmYWxzZTsKLSAgICBtUmVuZGVyZXIxMURldmljZUNh
cHMuc3VwcG9ydHNEWEdJMV8yID0gZmFsc2U7Ci0gICAgbVJlbmRlcmVyMTFEZXZpY2VDYXBzLkI1
RzZSNXN1cHBvcnQgPSAwOwotICAgIG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5CNEc0UjRBNHN1cHBv
cnQgPSAwOwotICAgIG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5CNUc1UjVBMXN1cHBvcnQgPSAwOwor
ICAgIG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5zdXBwb3J0c0RYR0kxXzIgICAgICAgICAgICAgICA9
IGZhbHNlOworICAgIG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5CNUc2UjVzdXBwb3J0ICAgICAgICAg
ICAgICAgICA9IDA7CisgICAgbVJlbmRlcmVyMTFEZXZpY2VDYXBzLkI0RzRSNEE0c3VwcG9ydCAg
ICAgICAgICAgICAgID0gMDsKKyAgICBtUmVuZGVyZXIxMURldmljZUNhcHMuQjVHNVI1QTFzdXBw
b3J0ICAgICAgICAgICAgICAgPSAwOwogCi0gICAgbUQzZDExTW9kdWxlID0gTlVMTDsKLSAgICBt
RHhnaU1vZHVsZSA9IE5VTEw7CisgICAgbUQzZDExTW9kdWxlICAgICAgICAgID0gTlVMTDsKKyAg
ICBtRHhnaU1vZHVsZSAgICAgICAgICAgPSBOVUxMOwogICAgIG1EQ29tcE1vZHVsZSAgICAgICAg
ICA9IE5VTEw7CiAgICAgbUNyZWF0ZWRXaXRoRGV2aWNlRVhUID0gZmFsc2U7CiAgICAgbUVHTERl
dmljZSAgICAgICAgICAgID0gbnVsbHB0cjsKIAotICAgIG1EZXZpY2UgPSBOVUxMOwotICAgIG1E
ZXZpY2VDb250ZXh0ID0gTlVMTDsKKyAgICBtRGV2aWNlICAgICAgICAgPSBOVUxMOworICAgIG1E
ZXZpY2VDb250ZXh0ICA9IE5VTEw7CiAgICAgbURldmljZUNvbnRleHQxID0gTlVMTDsKLSAgICBt
RHhnaUFkYXB0ZXIgPSBOVUxMOwotICAgIG1EeGdpRmFjdG9yeSA9IE5VTEw7CisgICAgbUR4Z2lB
ZGFwdGVyICAgID0gTlVMTDsKKyAgICBtRHhnaUZhY3RvcnkgICAgPSBOVUxMOwogCiAgICAgbURy
aXZlckNvbnN0YW50QnVmZmVyVlMgPSBOVUxMOwogICAgIG1Ecml2ZXJDb25zdGFudEJ1ZmZlclBT
ID0gTlVMTDsKIAotICAgIG1BcHBsaWVkVmVydGV4U2hhZGVyID0gTlVMTDsKKyAgICBtQXBwbGll
ZFZlcnRleFNoYWRlciAgID0gTlVMTDsKICAgICBtQXBwbGllZEdlb21ldHJ5U2hhZGVyID0gTlVM
TDsKLSAgICBtQXBwbGllZFBpeGVsU2hhZGVyID0gTlVMTDsKKyAgICBtQXBwbGllZFBpeGVsU2hh
ZGVyICAgID0gTlVMTDsKIAogICAgIG1BcHBsaWVkVEZPYmplY3QgPSBhbmdsZTo6RGlydHlQb2lu
dGVyOwogCkBAIC01MjAsNyArNTA2LDcgQEAgUmVuZGVyZXIxMTo6UmVuZGVyZXIxMShlZ2w6OkRp
c3BsYXkgKmRpc3BsYXkpCiAKICAgICAgICAgLy8gQWxzbyBzZXQgRUdMX1BMQVRGT1JNX0FOR0xF
X0FOR0xFIHZhcmlhYmxlcywgaW4gY2FzZSB0aGV5J3JlIHVzZWQgZWxzZXdoZXJlIGluIEFOR0xF
CiAgICAgICAgIC8vIG1BdmFpbGFibGVGZWF0dXJlTGV2ZWxzIGRlZmF1bHRzIHRvIGVtcHR5Ci0g
ICAgICAgIG1SZXF1ZXN0ZWREcml2ZXJUeXBlID0gRDNEX0RSSVZFUl9UWVBFX1VOS05PV047Cisg
ICAgICAgIG1SZXF1ZXN0ZWREcml2ZXJUeXBlICAgID0gRDNEX0RSSVZFUl9UWVBFX1VOS05PV047
CiAgICAgICAgIG1QcmVzZW50UGF0aEZhc3RFbmFibGVkID0gZmFsc2U7CiAgICAgfQogCkBAIC01
NTcsMTAgKzU0MywxMSBAQCBlZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmluaXRpYWxpemUoKQogI2lm
ICFBTkdMRV9TS0lQX0RYR0lfMV8yX0NIRUNLCiAgICAgewogICAgICAgICBUUkFDRV9FVkVOVDAo
ImdwdS5hbmdsZSIsICJSZW5kZXJlcjExOjppbml0aWFsaXplIChEWEdJQ2hlY2spIik7Ci0gICAg
ICAgIC8vIEluIG9yZGVyIHRvIGNyZWF0ZSBhIHN3YXAgY2hhaW4gZm9yIGFuIEhXTkQgb3duZWQg
YnkgYW5vdGhlciBwcm9jZXNzLCBEWEdJIDEuMiBpcyByZXF1aXJlZC4KKyAgICAgICAgLy8gSW4g
b3JkZXIgdG8gY3JlYXRlIGEgc3dhcCBjaGFpbiBmb3IgYW4gSFdORCBvd25lZCBieSBhbm90aGVy
IHByb2Nlc3MsIERYR0kgMS4yIGlzCisgICAgICAgIC8vIHJlcXVpcmVkLgogICAgICAgICAvLyBU
aGUgZWFzaWVzdCB3YXkgdG8gY2hlY2sgaXMgdG8gcXVlcnkgZm9yIGEgSURYR0lEZXZpY2UyLgog
ICAgICAgICBib29sIHJlcXVpcmVEWEdJMV8yID0gZmFsc2U7Ci0gICAgICAgIEhXTkQgaHduZCA9
IFdpbmRvd0Zyb21EQyhtRGlzcGxheS0+Z2V0TmF0aXZlRGlzcGxheUlkKCkpOworICAgICAgICBI
V05EIGh3bmQgICAgICAgICAgID0gV2luZG93RnJvbURDKG1EaXNwbGF5LT5nZXROYXRpdmVEaXNw
bGF5SWQoKSk7CiAgICAgICAgIGlmIChod25kKQogICAgICAgICB7CiAgICAgICAgICAgICBEV09S
RCBjdXJyZW50UHJvY2Vzc0lkID0gR2V0Q3VycmVudFByb2Nlc3NJZCgpOwpAQCAtNTc2LDEyICs1
NjMsMTIgQEAgZWdsOjpFcnJvciBSZW5kZXJlcjExOjppbml0aWFsaXplKCkKICAgICAgICAgaWYg
KHJlcXVpcmVEWEdJMV8yKQogICAgICAgICB7CiAgICAgICAgICAgICBJRFhHSURldmljZTIgKmR4
Z2lEZXZpY2UyID0gTlVMTDsKLSAgICAgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPlF1ZXJ5SW50
ZXJmYWNlKF9fdXVpZG9mKElEWEdJRGV2aWNlMiksICh2b2lkKiopJmR4Z2lEZXZpY2UyKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPlF1ZXJ5SW50ZXJmYWNlKF9fdXVpZG9mKElEWEdJ
RGV2aWNlMiksICh2b2lkICoqKSZkeGdpRGV2aWNlMik7CiAgICAgICAgICAgICBpZiAoRkFJTEVE
KHJlc3VsdCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVnbDo6RXJy
b3IoRUdMX05PVF9JTklUSUFMSVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEM0QxMV9JTklUX0lOQ09NUEFUSUJMRV9EWEdJLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJEWEdJIDEuMiByZXF1aXJlZCB0byBwcmVzZW50IHRvIEhXTkRzIG93bmVkIGJ5
IGFub3RoZXIgcHJvY2Vzcy4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJvcigK
KyAgICAgICAgICAgICAgICAgICAgRUdMX05PVF9JTklUSUFMSVpFRCwgRDNEMTFfSU5JVF9JTkNP
TVBBVElCTEVfRFhHSSwKKyAgICAgICAgICAgICAgICAgICAgIkRYR0kgMS4yIHJlcXVpcmVkIHRv
IHByZXNlbnQgdG8gSFdORHMgb3duZWQgYnkgYW5vdGhlciBwcm9jZXNzLiIpOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgU2FmZVJlbGVhc2UoZHhnaURldmljZTIpOwogICAgICAgICB9CkBA
IC01OTcsMjEgKzU4NCwxOSBAQCBlZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmluaXRpYWxpemUoKQog
ICAgICAgICBtRGV2aWNlQ29udGV4dDEgPSBkM2QxMTo6RHluYW1pY0Nhc3RDb21PYmplY3Q8SUQz
RDExRGV2aWNlQ29udGV4dDE+KG1EZXZpY2VDb250ZXh0KTsKIAogICAgICAgICBJRFhHSURldmlj
ZSAqZHhnaURldmljZSA9IE5VTEw7Ci0gICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPlF1ZXJ5SW50
ZXJmYWNlKF9fdXVpZG9mKElEWEdJRGV2aWNlKSwgKHZvaWQqKikmZHhnaURldmljZSk7CisgICAg
ICAgIHJlc3VsdCA9IG1EZXZpY2UtPlF1ZXJ5SW50ZXJmYWNlKF9fdXVpZG9mKElEWEdJRGV2aWNl
KSwgKHZvaWQgKiopJmR4Z2lEZXZpY2UpOwogCiAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFM
SVpFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX0lOSVRfT1RIRVJfRVJS
T1IsCisgICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELCBE
M0QxMV9JTklUX09USEVSX0VSUk9SLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNv
dWxkIG5vdCBxdWVyeSBEWEdJIGRldmljZS4iKTsKICAgICAgICAgfQogCi0gICAgICAgIHJlc3Vs
dCA9IGR4Z2lEZXZpY2UtPkdldFBhcmVudChfX3V1aWRvZihJRFhHSUFkYXB0ZXIpLCAodm9pZCoq
KSZtRHhnaUFkYXB0ZXIpOworICAgICAgICByZXN1bHQgPSBkeGdpRGV2aWNlLT5HZXRQYXJlbnQo
X191dWlkb2YoSURYR0lBZGFwdGVyKSwgKHZvaWQgKiopJm1EeGdpQWRhcHRlcik7CiAKICAgICAg
ICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZWds
OjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRDNEMTFfSU5JVF9PVEhFUl9FUlJPUiwKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9y
KEVHTF9OT1RfSU5JVElBTElaRUQsIEQzRDExX0lOSVRfT1RIRVJfRVJST1IsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IHJldHJpZXZlIERYR0kgYWRhcHRlciIpOwog
ICAgICAgICB9CiAKQEAgLTYxOSwyNCArNjA0LDI4IEBAIGVnbDo6RXJyb3IgUmVuZGVyZXIxMTo6
aW5pdGlhbGl6ZSgpCiAKICAgICAgICAgSURYR0lBZGFwdGVyMiAqZHhnaUFkYXB0ZXIyID0gZDNk
MTE6OkR5bmFtaWNDYXN0Q29tT2JqZWN0PElEWEdJQWRhcHRlcjI+KG1EeGdpQWRhcHRlcik7CiAK
LSAgICAgICAgLy8gT24gRDNEX0ZFQVRVUkVfTEVWRUxfOV8qLCBJRFhHSUFkYXB0ZXI6OkdldERl
c2MgcmV0dXJucyAiU29mdHdhcmUgQWRhcHRlciIgZm9yIHRoZSBkZXNjcmlwdGlvbiBzdHJpbmcu
Ci0gICAgICAgIC8vIElmIERYR0kxLjIgaXMgYXZhaWxhYmxlIHRoZW4gSURYR0lBZGFwdGVyMjo6
R2V0RGVzYzIgY2FuIGJlIHVzZWQgdG8gZ2V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgdmFsdWVzLgor
ICAgICAgICAvLyBPbiBEM0RfRkVBVFVSRV9MRVZFTF85XyosIElEWEdJQWRhcHRlcjo6R2V0RGVz
YyByZXR1cm5zICJTb2Z0d2FyZSBBZGFwdGVyIiBmb3IgdGhlCisgICAgICAgIC8vIGRlc2NyaXB0
aW9uIHN0cmluZy4KKyAgICAgICAgLy8gSWYgRFhHSTEuMiBpcyBhdmFpbGFibGUgdGhlbiBJRFhH
SUFkYXB0ZXIyOjpHZXREZXNjMiBjYW4gYmUgdXNlZCB0byBnZXQgdGhlIGFjdHVhbAorICAgICAg
ICAvLyBoYXJkd2FyZSB2YWx1ZXMuCiAgICAgICAgIGlmIChtUmVuZGVyZXIxMURldmljZUNhcHMu
ZmVhdHVyZUxldmVsIDw9IEQzRF9GRUFUVVJFX0xFVkVMXzlfMyAmJiBkeGdpQWRhcHRlcjIgIT0g
TlVMTCkKICAgICAgICAgewogICAgICAgICAgICAgRFhHSV9BREFQVEVSX0RFU0MyIGFkYXB0ZXJE
ZXNjMiA9IHt9OwotICAgICAgICAgICAgcmVzdWx0ID0gZHhnaUFkYXB0ZXIyLT5HZXREZXNjMigm
YWRhcHRlckRlc2MyKTsKKyAgICAgICAgICAgIHJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSBkeGdpQWRhcHRlcjItPkdldERlc2MyKCZhZGFwdGVyRGVzYzIpOwogICAgICAgICAgICAg
aWYgKFNVQ0NFRURFRChyZXN1bHQpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8v
IENvcHkgdGhlIGNvbnRlbnRzIG9mIHRoZSBEWEdJX0FEQVBURVJfREVTQzIgaW50byBtQWRhcHRl
ckRlc2NyaXB0aW9uIChhIERYR0lfQURBUFRFUl9ERVNDKS4KLSAgICAgICAgICAgICAgICBtZW1j
cHkobUFkYXB0ZXJEZXNjcmlwdGlvbi5EZXNjcmlwdGlvbiwgYWRhcHRlckRlc2MyLkRlc2NyaXB0
aW9uLCBzaXplb2YobUFkYXB0ZXJEZXNjcmlwdGlvbi5EZXNjcmlwdGlvbikpOwotICAgICAgICAg
ICAgICAgIG1BZGFwdGVyRGVzY3JpcHRpb24uVmVuZG9ySWQgPSBhZGFwdGVyRGVzYzIuVmVuZG9y
SWQ7Ci0gICAgICAgICAgICAgICAgbUFkYXB0ZXJEZXNjcmlwdGlvbi5EZXZpY2VJZCA9IGFkYXB0
ZXJEZXNjMi5EZXZpY2VJZDsKLSAgICAgICAgICAgICAgICBtQWRhcHRlckRlc2NyaXB0aW9uLlN1
YlN5c0lkID0gYWRhcHRlckRlc2MyLlN1YlN5c0lkOwotICAgICAgICAgICAgICAgIG1BZGFwdGVy
RGVzY3JpcHRpb24uUmV2aXNpb24gPSBhZGFwdGVyRGVzYzIuUmV2aXNpb247Ci0gICAgICAgICAg
ICAgICAgbUFkYXB0ZXJEZXNjcmlwdGlvbi5EZWRpY2F0ZWRWaWRlb01lbW9yeSA9IGFkYXB0ZXJE
ZXNjMi5EZWRpY2F0ZWRWaWRlb01lbW9yeTsKKyAgICAgICAgICAgICAgICAvLyBDb3B5IHRoZSBj
b250ZW50cyBvZiB0aGUgRFhHSV9BREFQVEVSX0RFU0MyIGludG8gbUFkYXB0ZXJEZXNjcmlwdGlv
biAoYQorICAgICAgICAgICAgICAgIC8vIERYR0lfQURBUFRFUl9ERVNDKS4KKyAgICAgICAgICAg
ICAgICBtZW1jcHkobUFkYXB0ZXJEZXNjcmlwdGlvbi5EZXNjcmlwdGlvbiwgYWRhcHRlckRlc2My
LkRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobUFkYXB0ZXJEZXNj
cmlwdGlvbi5EZXNjcmlwdGlvbikpOworICAgICAgICAgICAgICAgIG1BZGFwdGVyRGVzY3JpcHRp
b24uVmVuZG9ySWQgICAgICAgICAgICAgID0gYWRhcHRlckRlc2MyLlZlbmRvcklkOworICAgICAg
ICAgICAgICAgIG1BZGFwdGVyRGVzY3JpcHRpb24uRGV2aWNlSWQgICAgICAgICAgICAgID0gYWRh
cHRlckRlc2MyLkRldmljZUlkOworICAgICAgICAgICAgICAgIG1BZGFwdGVyRGVzY3JpcHRpb24u
U3ViU3lzSWQgICAgICAgICAgICAgID0gYWRhcHRlckRlc2MyLlN1YlN5c0lkOworICAgICAgICAg
ICAgICAgIG1BZGFwdGVyRGVzY3JpcHRpb24uUmV2aXNpb24gICAgICAgICAgICAgID0gYWRhcHRl
ckRlc2MyLlJldmlzaW9uOworICAgICAgICAgICAgICAgIG1BZGFwdGVyRGVzY3JpcHRpb24uRGVk
aWNhdGVkVmlkZW9NZW1vcnkgID0gYWRhcHRlckRlc2MyLkRlZGljYXRlZFZpZGVvTWVtb3J5Owog
ICAgICAgICAgICAgICAgIG1BZGFwdGVyRGVzY3JpcHRpb24uRGVkaWNhdGVkU3lzdGVtTWVtb3J5
ID0gYWRhcHRlckRlc2MyLkRlZGljYXRlZFN5c3RlbU1lbW9yeTsKLSAgICAgICAgICAgICAgICBt
QWRhcHRlckRlc2NyaXB0aW9uLlNoYXJlZFN5c3RlbU1lbW9yeSA9IGFkYXB0ZXJEZXNjMi5TaGFy
ZWRTeXN0ZW1NZW1vcnk7Ci0gICAgICAgICAgICAgICAgbUFkYXB0ZXJEZXNjcmlwdGlvbi5BZGFw
dGVyTHVpZCA9IGFkYXB0ZXJEZXNjMi5BZGFwdGVyTHVpZDsKKyAgICAgICAgICAgICAgICBtQWRh
cHRlckRlc2NyaXB0aW9uLlNoYXJlZFN5c3RlbU1lbW9yeSAgICA9IGFkYXB0ZXJEZXNjMi5TaGFy
ZWRTeXN0ZW1NZW1vcnk7CisgICAgICAgICAgICAgICAgbUFkYXB0ZXJEZXNjcmlwdGlvbi5BZGFw
dGVyTHVpZCAgICAgICAgICAgPSBhZGFwdGVyRGVzYzIuQWRhcHRlckx1aWQ7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZQpAQCAtNjQ4LDI1ICs2MzcsMjMgQEAgZWdsOjpF
cnJvciBSZW5kZXJlcjExOjppbml0aWFsaXplKCkKIAogICAgICAgICBpZiAoRkFJTEVEKHJlc3Vs
dCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9OT1RfSU5J
VElBTElaRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV9JTklUX09USEVS
X0VSUk9SLAorICAgICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpF
RCwgRDNEMTFfSU5JVF9PVEhFUl9FUlJPUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJDb3VsZCBub3QgcmVhZCBEWEdJIGFkYXB0b3IgZGVzY3JpcHRpb24uIik7CiAgICAgICAgIH0K
IAogICAgICAgICBtZW1zZXQobURlc2NyaXB0aW9uLCAwLCBzaXplb2YobURlc2NyaXB0aW9uKSk7
CiAgICAgICAgIHdjc3RvbWJzKG1EZXNjcmlwdGlvbiwgbUFkYXB0ZXJEZXNjcmlwdGlvbi5EZXNj
cmlwdGlvbiwgc2l6ZW9mKG1EZXNjcmlwdGlvbikgLSAxKTsKIAotICAgICAgICByZXN1bHQgPSBt
RHhnaUFkYXB0ZXItPkdldFBhcmVudChfX3V1aWRvZihJRFhHSUZhY3RvcnkpLCAodm9pZCoqKSZt
RHhnaUZhY3RvcnkpOworICAgICAgICByZXN1bHQgPSBtRHhnaUFkYXB0ZXItPkdldFBhcmVudChf
X3V1aWRvZihJRFhHSUZhY3RvcnkpLCAodm9pZCAqKikmbUR4Z2lGYWN0b3J5KTsKIAogICAgICAg
ICBpZiAoIW1EeGdpRmFjdG9yeSB8fCBGQUlMRUQocmVzdWx0KSkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEQzRDExX0lOSVRfT1RIRVJfRVJST1IsCisgICAgICAgICAgICBy
ZXR1cm4gZWdsOjpFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVELCBEM0QxMV9JTklUX09USEVSX0VS
Uk9SLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBjcmVhdGUgRFhH
SSBmYWN0b3J5LiIpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gRGlzYWJsZSBzb21lIHNw
dXJpb3VzIEQzRDExIGRlYnVnIHdhcm5pbmdzIHRvIHByZXZlbnQgdGhlbSBmcm9tIGZsb29kaW5n
IHRoZSBvdXRwdXQgbG9nCisvLyBEaXNhYmxlIHNvbWUgc3B1cmlvdXMgRDNEMTEgZGVidWcgd2Fy
bmluZ3MgdG8gcHJldmVudCB0aGVtIGZyb20gZmxvb2RpbmcgdGhlIG91dHB1dCBsb2cKICNpZiBk
ZWZpbmVkKEFOR0xFX1NVUFBSRVNTX0QzRDExX0hBWkFSRF9XQVJOSU5HUykgJiYgZGVmaW5lZChf
REVCVUcpCiAgICAgewogICAgICAgICBUUkFDRV9FVkVOVDAoImdwdS5hbmdsZSIsICJSZW5kZXJl
cjExOjppbml0aWFsaXplIChIaWRlV2FybmluZ3MpIik7CkBAIC02NzUsMTQgKzY2MiwxMiBAQCBl
Z2w6OkVycm9yIFJlbmRlcmVyMTE6OmluaXRpYWxpemUoKQogCiAgICAgICAgIGlmIChTVUNDRUVE
RUQocmVzdWx0KSkKICAgICAgICAgewotICAgICAgICAgICAgRDNEMTFfTUVTU0FHRV9JRCBoaWRl
TWVzc2FnZXNbXSA9Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRDNEMTFfTUVTU0FH
RV9JRF9ERVZJQ0VfRFJBV19SRU5ERVJUQVJHRVRWSUVXX05PVF9TRVQKLSAgICAgICAgICAgIH07
CisgICAgICAgICAgICBEM0QxMV9NRVNTQUdFX0lEIGhpZGVNZXNzYWdlc1tdID0geworICAgICAg
ICAgICAgICAgIEQzRDExX01FU1NBR0VfSURfREVWSUNFX0RSQVdfUkVOREVSVEFSR0VUVklFV19O
T1RfU0VUfTsKIAogICAgICAgICAgICAgRDNEMTFfSU5GT19RVUVVRV9GSUxURVIgZmlsdGVyID0g
e307CiAgICAgICAgICAgICBmaWx0ZXIuRGVueUxpc3QuTnVtSURzICAgICAgICAgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBpbnQ+KEFycmF5U2l6ZShoaWRlTWVzc2FnZXMpKTsKLSAgICAgICAgICAg
IGZpbHRlci5EZW55TGlzdC5wSURMaXN0ID0gaGlkZU1lc3NhZ2VzOworICAgICAgICAgICAgZmls
dGVyLkRlbnlMaXN0LnBJRExpc3QgICAgICAgID0gaGlkZU1lc3NhZ2VzOwogCiAgICAgICAgICAg
ICBpbmZvUXVldWUtPkFkZFN0b3JhZ2VGaWx0ZXJFbnRyaWVzKCZmaWx0ZXIpOwogICAgICAgICAg
ICAgU2FmZVJlbGVhc2UoaW5mb1F1ZXVlKTsKQEAgLTc0NSw3ICs3MzAsNyBAQCBlZ2w6OkVycm9y
IFJlbmRlcmVyMTE6OmluaXRpYWxpemVEM0REZXZpY2UoKQogCiAgICAgICAgIGlmICghbURldmlj
ZSB8fCBGQUlMRUQocmVzdWx0KSkKICAgICAgICAgewotICAgICAgICAgICAgRVJSKCJGYWlsZWQg
Y3JlYXRpbmcgRGVidWcgRDNEMTEgZGV2aWNlIC0gZmFsbGluZyBiYWNrIHRvIHJlbGVhc2UgcnVu
dGltZS5cbiIpOworICAgICAgICAgICAgV0FSTigpIDw8ICJGYWlsZWQgY3JlYXRpbmcgRGVidWcg
RDNEMTEgZGV2aWNlIC0gZmFsbGluZyBiYWNrIHRvIHJlbGVhc2UgcnVudGltZS4iOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKCFtRGV2aWNlIHx8IEZBSUxFRChyZXN1bHQpKQpAQCAtNzcyLDcg
Kzc1Nyw3IEBAIGVnbDo6RXJyb3IgUmVuZGVyZXIxMTo6aW5pdGlhbGl6ZUQzRERldmljZSgpCiAg
ICAgZWxzZQogICAgIHsKICAgICAgICAgLy8gV2Ugc2hvdWxkIHVzZSB0aGUgaW5wdXR0ZWQgRDNE
MTEgZGV2aWNlIGluc3RlYWQKLSAgICAgICAgdm9pZCAqZGV2aWNlICAgICA9IG51bGxwdHI7Cisg
ICAgICAgIHZvaWQgKmRldmljZSA9IG51bGxwdHI7CiAgICAgICAgIEFOR0xFX1RSWShtRUdMRGV2
aWNlLT5nZXREZXZpY2UoJmRldmljZSkpOwogCiAgICAgICAgIElEM0QxMURldmljZSAqZDNkRGV2
aWNlID0gcmVpbnRlcnByZXRfY2FzdDxJRDNEMTFEZXZpY2UgKj4oZGV2aWNlKTsKQEAgLTgxNCw3
ICs3OTksNyBAQCB2b2lkIFJlbmRlcmVyMTE6OmluaXRpYWxpemVEZXZpY2UoKQogCiAgICAgQVNT
RVJUKCFtVmVydGV4RGF0YU1hbmFnZXIgJiYgIW1JbmRleERhdGFNYW5hZ2VyKTsKICAgICBtVmVy
dGV4RGF0YU1hbmFnZXIgPSBuZXcgVmVydGV4RGF0YU1hbmFnZXIodGhpcyk7Ci0gICAgbUluZGV4
RGF0YU1hbmFnZXIgPSBuZXcgSW5kZXhEYXRhTWFuYWdlcih0aGlzLCBnZXRSZW5kZXJlckNsYXNz
KCkpOworICAgIG1JbmRleERhdGFNYW5hZ2VyICA9IG5ldyBJbmRleERhdGFNYW5hZ2VyKHRoaXMs
IGdldFJlbmRlcmVyQ2xhc3MoKSk7CiAKICAgICBBU1NFUlQoIW1CbGl0KTsKICAgICBtQmxpdCA9
IG5ldyBCbGl0MTEodGhpcyk7CkBAIC04NjgsOCArODUzLDcgQEAgdm9pZCBSZW5kZXJlcjExOjpp
bml0aWFsaXplRGV2aWNlKCkKICAgICAgICAgYW5nbGVGZWF0dXJlTGV2ZWwgPSBBTkdMRV9GRUFU
VVJFX0xFVkVMXzExXzE7CiAgICAgfQogCi0gICAgQU5HTEVfSElTVE9HUkFNX0VOVU1FUkFUSU9O
KCJHUFUuQU5HTEUuRDNEMTFGZWF0dXJlTGV2ZWwiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZUZlYXR1cmVMZXZlbCwKKyAgICBBTkdMRV9ISVNUT0dSQU1fRU5VTUVSQVRJ
T04oIkdQVS5BTkdMRS5EM0QxMUZlYXR1cmVMZXZlbCIsIGFuZ2xlRmVhdHVyZUxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVU1fQU5HTEVfRkVBVFVSRV9MRVZFTFMpOwog
fQogCkBAIC04ODIsNyArODY2LDcgQEAgdm9pZCBSZW5kZXJlcjExOjpwb3B1bGF0ZVJlbmRlcmVy
MTFEZXZpY2VDYXBzKCkKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICB7CiAgICAgICAgIG1SZW5k
ZXJlcjExRGV2aWNlQ2Fwcy5kcml2ZXJWZXJzaW9uLnJlc2V0KCk7Ci0gICAgICAgIEVSUigiRXJy
b3IgcXVlcnlpbmcgZHJpdmVyIHZlcnNpb24gZnJvbSBEWEdJIEFkYXB0ZXIuIik7CisgICAgICAg
IEVSUigpIDw8ICJFcnJvciBxdWVyeWluZyBkcml2ZXIgdmVyc2lvbiBmcm9tIERYR0kgQWRhcHRl
ci4iOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtODkyLDExICs4NzYsMTMgQEAgdm9pZCBS
ZW5kZXJlcjExOjpwb3B1bGF0ZVJlbmRlcmVyMTFEZXZpY2VDYXBzKCkKICAgICBpZiAobURldmlj
ZUNvbnRleHQxKQogICAgIHsKICAgICAgICAgRDNEMTFfRkVBVFVSRV9EQVRBX0QzRDExX09QVElP
TlMgZDNkMTFPcHRpb25zOwotICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNoZWNr
RmVhdHVyZVN1cHBvcnQoRDNEMTFfRkVBVFVSRV9EM0QxMV9PUFRJT05TLCAmZDNkMTFPcHRpb25z
LCBzaXplb2YoRDNEMTFfRkVBVFVSRV9EQVRBX0QzRDExX09QVElPTlMpKTsKKyAgICAgICAgSFJF
U1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DaGVja0ZlYXR1cmVTdXBwb3J0KEQzRDExX0ZFQVRVUkVf
RDNEMTFfT1BUSU9OUywgJmQzZDExT3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihEM0QxMV9GRUFUVVJFX0RBVEFfRDNE
MTFfT1BUSU9OUykpOwogICAgICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5zdXBwb3J0c0NsZWFyVmlldyA9IChk
M2QxMU9wdGlvbnMuQ2xlYXJWaWV3ICE9IEZBTFNFKTsKLSAgICAgICAgICAgIG1SZW5kZXJlcjEx
RGV2aWNlQ2Fwcy5zdXBwb3J0c0NvbnN0YW50QnVmZmVyT2Zmc2V0cyA9IChkM2QxMU9wdGlvbnMu
Q29uc3RhbnRCdWZmZXJPZmZzZXR0aW5nICE9IEZBTFNFKTsKKyAgICAgICAgICAgIG1SZW5kZXJl
cjExRGV2aWNlQ2Fwcy5zdXBwb3J0c0NvbnN0YW50QnVmZmVyT2Zmc2V0cyA9CisgICAgICAgICAg
ICAgICAgKGQzZDExT3B0aW9ucy5Db25zdGFudEJ1ZmZlck9mZnNldHRpbmcgIT0gRkFMU0UpOwog
ICAgICAgICB9CiAgICAgfQogCkBAIC05MTQsMTMgKzkwMCwxNSBAQCB2b2lkIFJlbmRlcmVyMTE6
OnBvcHVsYXRlUmVuZGVyZXIxMURldmljZUNhcHMoKQogICAgICAgICB9CiAgICAgfQogCi0gICAg
aHIgPSBtRGV2aWNlLT5DaGVja0Zvcm1hdFN1cHBvcnQoRFhHSV9GT1JNQVRfQjRHNFI0QTRfVU5P
Uk0sICYobVJlbmRlcmVyMTFEZXZpY2VDYXBzLkI0RzRSNEE0c3VwcG9ydCkpOworICAgIGhyID0g
bURldmljZS0+Q2hlY2tGb3JtYXRTdXBwb3J0KERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYobVJlbmRlcmVyMTFEZXZpY2VD
YXBzLkI0RzRSNEE0c3VwcG9ydCkpOwogICAgIGlmIChGQUlMRUQoaHIpKQogICAgIHsKICAgICAg
ICAgbVJlbmRlcmVyMTFEZXZpY2VDYXBzLkI0RzRSNEE0c3VwcG9ydCA9IDA7CiAgICAgfQogCi0g
ICAgaHIgPSBtRGV2aWNlLT5DaGVja0Zvcm1hdFN1cHBvcnQoRFhHSV9GT1JNQVRfQjVHNVI1QTFf
VU5PUk0sICYobVJlbmRlcmVyMTFEZXZpY2VDYXBzLkI1RzVSNUExc3VwcG9ydCkpOworICAgIGhy
ID0gbURldmljZS0+Q2hlY2tGb3JtYXRTdXBwb3J0KERYR0lfRk9STUFUX0I1RzVSNUExX1VOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYobVJlbmRlcmVyMTFEZXZp
Y2VDYXBzLkI1RzVSNUExc3VwcG9ydCkpOwogICAgIGlmIChGQUlMRUQoaHIpKQogICAgIHsKICAg
ICAgICAgbVJlbmRlcmVyMTFEZXZpY2VDYXBzLkI1RzVSNUExc3VwcG9ydCA9IDA7CkBAIC05NDIs
NiArOTMwLDE3IEBAIGVnbDo6Q29uZmlnU2V0IFJlbmRlcmVyMTE6OmdlbmVyYXRlQ29uZmlncygp
CiAgICAgLy8gMjQtYml0IHN1cHBvcnRlZCBmb3JtYXRzCiAgICAgY29sb3JCdWZmZXJGb3JtYXRz
LnB1c2hfYmFjayhHTF9SR0I4X09FUyk7CiAKKyAgICBpZiAobVJlbmRlcmVyMTFEZXZpY2VDYXBz
LmZlYXR1cmVMZXZlbCA+PSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wKQorICAgIHsKKyAgICAgICAg
Ly8gQWRkaXRpb25hbCBoaWdoIGJpdCBkZXB0aCBmb3JtYXRzIGFkZGVkIGluIEQzRCAxMC4wCisg
ICAgICAgIC8vIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93
cy9kZXNrdG9wL2JiMTczMDY0LmFzcHgKKyAgICAgICAgY29sb3JCdWZmZXJGb3JtYXRzLnB1c2hf
YmFjayhHTF9SR0JBMTZGKTsKKworICAgICAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IFJlLWVuYWJs
ZSBvbmNlIGNsaWVudCBjb2RlIGhhcyBiZWVuIHVwZGF0ZWQgdG8gZmlsdGVyIGNvbmZpZ3MgYmV0
dGVyIGFuZAorICAgICAgICAvLyBub3QgdXNlIFJHQjEwQTIgYWNjaWRlbnRhbGx5IHdoZW4gcmVx
dWVzdGluZyBSR0JBOAorICAgICAgICAvLyBjb2xvckJ1ZmZlckZvcm1hdHMucHVzaF9iYWNrKEdM
X1JHQjEwX0EyKTsKKyAgICB9CisKICAgICBpZiAoIW1QcmVzZW50UGF0aEZhc3RFbmFibGVkKQog
ICAgIHsKICAgICAgICAgLy8gMTYtYml0IHN1cHBvcnRlZCBmb3JtYXRzCkBAIC05NTIsMTEgKzk1
MSw4IEBAIGVnbDo6Q29uZmlnU2V0IFJlbmRlcmVyMTE6OmdlbmVyYXRlQ29uZmlncygpCiAgICAg
ICAgIGNvbG9yQnVmZmVyRm9ybWF0cy5wdXNoX2JhY2soR0xfUkdCNTY1KTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgY29uc3QgR0xlbnVtIGRlcHRoU3RlbmNpbEJ1ZmZlckZvcm1hdHNbXSA9Ci0gICAg
ewotICAgICAgICBHTF9OT05FLAotICAgICAgICBHTF9ERVBUSDI0X1NURU5DSUw4X09FUywKLSAg
ICAgICAgR0xfREVQVEhfQ09NUE9ORU5UMTYsCisgICAgc3RhdGljIGNvbnN0IEdMZW51bSBkZXB0
aFN0ZW5jaWxCdWZmZXJGb3JtYXRzW10gPSB7CisgICAgICAgIEdMX05PTkUsIEdMX0RFUFRIMjRf
U1RFTkNJTDhfT0VTLCBHTF9ERVBUSF9DT01QT05FTlQxNiwKICAgICB9OwogCiAgICAgY29uc3Qg
Z2w6OkNhcHMgJnJlbmRlcmVyQ2FwcyAgICAgICAgICAgICAgICAgID0gZ2V0TmF0aXZlQ2Fwcygp
OwpAQCAtOTY4LDcgKzk2NCw4IEBAIGVnbDo6Q29uZmlnU2V0IFJlbmRlcmVyMTE6OmdlbmVyYXRl
Q29uZmlncygpCiAgICAgZWdsOjpDb25maWdTZXQgY29uZmlnczsKICAgICBmb3IgKEdMZW51bSBj
b2xvckJ1ZmZlckludGVybmFsRm9ybWF0IDogY29sb3JCdWZmZXJGb3JtYXRzKQogICAgIHsKLSAg
ICAgICAgY29uc3QgZ2w6OlRleHR1cmVDYXBzICZjb2xvckJ1ZmZlckZvcm1hdENhcHMgPSByZW5k
ZXJlclRleHR1cmVDYXBzLmdldChjb2xvckJ1ZmZlckludGVybmFsRm9ybWF0KTsKKyAgICAgICAg
Y29uc3QgZ2w6OlRleHR1cmVDYXBzICZjb2xvckJ1ZmZlckZvcm1hdENhcHMgPQorICAgICAgICAg
ICAgcmVuZGVyZXJUZXh0dXJlQ2Fwcy5nZXQoY29sb3JCdWZmZXJJbnRlcm5hbEZvcm1hdCk7CiAg
ICAgICAgIGlmICghY29sb3JCdWZmZXJGb3JtYXRDYXBzLnJlbmRlcmFibGUpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTAwMSw3ICs5OTgsNyBAQCBlZ2w6OkNvbmZpZ1Nl
dCBSZW5kZXJlcjExOjpnZW5lcmF0ZUNvbmZpZ3MoKQogICAgICAgICAgICAgY29uZmlnLmFscGhh
U2l6ZSAgICAgICAgICA9IGNvbG9yQnVmZmVyRm9ybWF0SW5mby5hbHBoYUJpdHM7CiAgICAgICAg
ICAgICBjb25maWcuYWxwaGFNYXNrU2l6ZSAgICAgID0gMDsKICAgICAgICAgICAgIGNvbmZpZy5i
aW5kVG9UZXh0dXJlUkdCICAgPSAoY29sb3JCdWZmZXJGb3JtYXRJbmZvLmZvcm1hdCA9PSBHTF9S
R0IpOwotICAgICAgICAgICAgY29uZmlnLmJpbmRUb1RleHR1cmVSR0JBID0gKGNvbG9yQnVmZmVy
Rm9ybWF0SW5mby5mb3JtYXQgPT0gR0xfUkdCQSB8fAorICAgICAgICAgICAgY29uZmlnLmJpbmRU
b1RleHR1cmVSR0JBICA9IChjb2xvckJ1ZmZlckZvcm1hdEluZm8uZm9ybWF0ID09IEdMX1JHQkEg
fHwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvckJ1ZmZlckZv
cm1hdEluZm8uZm9ybWF0ID09IEdMX0JHUkFfRVhUKTsKICAgICAgICAgICAgIGNvbmZpZy5jb2xv
ckJ1ZmZlclR5cGUgPSBFR0xfUkdCX0JVRkZFUjsKICAgICAgICAgICAgIGNvbmZpZy5jb25maWdD
YXZlYXQgICAgPSBFR0xfTk9ORTsKQEAgLTEwMjksMTIgKzEwMjYsMTIgQEAgZWdsOjpDb25maWdT
ZXQgUmVuZGVyZXIxMTo6Z2VuZXJhdGVDb25maWdzKCkKICAgICAgICAgICAgIGNvbmZpZy5tYXRj
aE5hdGl2ZVBpeG1hcCA9IEVHTF9OT05FOwogICAgICAgICAgICAgY29uZmlnLm1heFBCdWZmZXJX
aWR0aCAgID0gcmVuZGVyZXJDYXBzLm1heDJEVGV4dHVyZVNpemU7CiAgICAgICAgICAgICBjb25m
aWcubWF4UEJ1ZmZlckhlaWdodCAgPSByZW5kZXJlckNhcHMubWF4MkRUZXh0dXJlU2l6ZTsKLSAg
ICAgICAgICAgIGNvbmZpZy5tYXhQQnVmZmVyUGl4ZWxzICA9IHJlbmRlcmVyQ2Fwcy5tYXgyRFRl
eHR1cmVTaXplICogcmVuZGVyZXJDYXBzLm1heDJEVGV4dHVyZVNpemU7Ci0gICAgICAgICAgICBj
b25maWcubWF4U3dhcEludGVydmFsICAgPSA0OwotICAgICAgICAgICAgY29uZmlnLm1pblN3YXBJ
bnRlcnZhbCAgID0gMDsKLSAgICAgICAgICAgIGNvbmZpZy5uYXRpdmVSZW5kZXJhYmxlICA9IEVH
TF9GQUxTRTsKLSAgICAgICAgICAgIGNvbmZpZy5uYXRpdmVWaXN1YWxJRCAgICA9IDA7Ci0gICAg
ICAgICAgICBjb25maWcubmF0aXZlVmlzdWFsVHlwZSAgPSBFR0xfTk9ORTsKKyAgICAgICAgICAg
IGNvbmZpZy5tYXhQQnVmZmVyUGl4ZWxzID0gcmVuZGVyZXJDYXBzLm1heDJEVGV4dHVyZVNpemUg
KiByZW5kZXJlckNhcHMubWF4MkRUZXh0dXJlU2l6ZTsKKyAgICAgICAgICAgIGNvbmZpZy5tYXhT
d2FwSW50ZXJ2YWwgID0gNDsKKyAgICAgICAgICAgIGNvbmZpZy5taW5Td2FwSW50ZXJ2YWwgID0g
MDsKKyAgICAgICAgICAgIGNvbmZpZy5uYXRpdmVSZW5kZXJhYmxlID0gRUdMX0ZBTFNFOworICAg
ICAgICAgICAgY29uZmlnLm5hdGl2ZVZpc3VhbElEICAgPSAwOworICAgICAgICAgICAgY29uZmln
Lm5hdGl2ZVZpc3VhbFR5cGUgPSBFR0xfTk9ORTsKIAogICAgICAgICAgICAgLy8gQ2FuJ3Qgc3Vw
cG9ydCBFUzMgYXQgYWxsIHdpdGhvdXQgZmVhdHVyZSBsZXZlbCAxMC4xCiAgICAgICAgICAgICBj
b25maWcucmVuZGVyYWJsZVR5cGUgPSBFR0xfT1BFTkdMX0VTMl9CSVQ7CkBAIC0xMDQzLDE1ICsx
MDQwLDE3IEBAIGVnbDo6Q29uZmlnU2V0IFJlbmRlcmVyMTE6OmdlbmVyYXRlQ29uZmlncygpCiAg
ICAgICAgICAgICAgICAgY29uZmlnLnJlbmRlcmFibGVUeXBlIHw9IEVHTF9PUEVOR0xfRVMzX0JJ
VF9LSFI7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGNvbmZpZy5zYW1wbGVCdWZmZXJz
ICAgICAgICAgPSAwOyAgLy8gRklYTUU6IGVudW1lcmF0ZSBtdWx0aS1zYW1wbGluZwotICAgICAg
ICAgICAgY29uZmlnLnNhbXBsZXMgICAgICAgICAgICAgICA9IDA7Ci0gICAgICAgICAgICBjb25m
aWcuc3RlbmNpbFNpemUgICAgICAgICAgID0gZGVwdGhTdGVuY2lsQnVmZmVyRm9ybWF0SW5mby5z
dGVuY2lsQml0czsKLSAgICAgICAgICAgIGNvbmZpZy5zdXJmYWNlVHlwZSAgICAgICAgICAgPSBF
R0xfUEJVRkZFUl9CSVQgfCBFR0xfV0lORE9XX0JJVCB8IEVHTF9TV0FQX0JFSEFWSU9SX1BSRVNF
UlZFRF9CSVQ7CisgICAgICAgICAgICBjb25maWcuc2FtcGxlQnVmZmVycyA9IDA7ICAvLyBGSVhN
RTogZW51bWVyYXRlIG11bHRpLXNhbXBsaW5nCisgICAgICAgICAgICBjb25maWcuc2FtcGxlcyAg
ICAgICA9IDA7CisgICAgICAgICAgICBjb25maWcuc3RlbmNpbFNpemUgICA9IGRlcHRoU3RlbmNp
bEJ1ZmZlckZvcm1hdEluZm8uc3RlbmNpbEJpdHM7CisgICAgICAgICAgICBjb25maWcuc3VyZmFj
ZVR5cGUgPSBFR0xfUEJVRkZFUl9CSVQgfCBFR0xfV0lORE9XX0JJVCB8IEVHTF9TV0FQX0JFSEFW
SU9SX1BSRVNFUlZFRF9CSVQ7CiAgICAgICAgICAgICBjb25maWcudHJhbnNwYXJlbnRUeXBlICAg
ICAgID0gRUdMX05PTkU7CiAgICAgICAgICAgICBjb25maWcudHJhbnNwYXJlbnRSZWRWYWx1ZSAg
ID0gMDsKICAgICAgICAgICAgIGNvbmZpZy50cmFuc3BhcmVudEdyZWVuVmFsdWUgPSAwOwogICAg
ICAgICAgICAgY29uZmlnLnRyYW5zcGFyZW50Qmx1ZVZhbHVlICA9IDA7CiAgICAgICAgICAgICBj
b25maWcub3B0aW1hbE9yaWVudGF0aW9uICAgID0gb3B0aW1hbFN1cmZhY2VPcmllbnRhdGlvbjsK
KyAgICAgICAgICAgIGNvbmZpZy5jb2xvckNvbXBvbmVudFR5cGUgPQorICAgICAgICAgICAgICAg
IGdsX2VnbDo6R0xDb21wb25lbnRUeXBlVG9FR0xDb2xvckNvbXBvbmVudFR5cGUoY29sb3JCdWZm
ZXJGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUpOwogCiAgICAgICAgICAgICBjb25maWdzLmFkZChj
b25maWcpOwogICAgICAgICB9CkBAIC0xMDcwLDggKzEwNjksOSBAQCB2b2lkIFJlbmRlcmVyMTE6
OmdlbmVyYXRlRGlzcGxheUV4dGVuc2lvbnMoZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0
ZW5zaW9ucwogICAgICAgICBvdXRFeHRlbnNpb25zLT5kM2RTaGFyZUhhbmRsZUNsaWVudEJ1ZmZl
ciAgICAgPSB0cnVlOwogICAgICAgICBvdXRFeHRlbnNpb25zLT5zdXJmYWNlRDNEVGV4dHVyZTJE
U2hhcmVIYW5kbGUgPSB0cnVlOwogICAgIH0KKyAgICBvdXRFeHRlbnNpb25zLT5kM2RUZXh0dXJl
Q2xpZW50QnVmZmVyID0gdHJ1ZTsKIAotICAgIG91dEV4dGVuc2lvbnMtPmtleWVkTXV0ZXggPSB0
cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmtleWVkTXV0ZXggICAgICAgICAgPSB0cnVlOwogICAg
IG91dEV4dGVuc2lvbnMtPnF1ZXJ5U3VyZmFjZVBvaW50ZXIgPSB0cnVlOwogICAgIG91dEV4dGVu
c2lvbnMtPndpbmRvd0ZpeGVkU2l6ZSAgICAgPSB0cnVlOwogCkBAIC0xMTAxLDYgKzExMDEsMTEg
QEAgdm9pZCBSZW5kZXJlcjExOjpnZW5lcmF0ZURpc3BsYXlFeHRlbnNpb25zKGVnbDo6RGlzcGxh
eUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMKICAgICBvdXRFeHRlbnNpb25zLT5mbGV4aWJsZVN1
cmZhY2VDb21wYXRpYmlsaXR5ID0gdHJ1ZTsKICAgICBvdXRFeHRlbnNpb25zLT5kaXJlY3RDb21w
b3NpdGlvbiAgICAgICAgICAgID0gISFtRENvbXBNb2R1bGU7CiAKKyAgICAvLyBDb250ZXh0cyBh
cmUgdmlydHVhbGl6ZWQgc28gdGV4dHVyZXMgY2FuIGJlIHNoYXJlZCBnbG9iYWxseQorICAgIG91
dEV4dGVuc2lvbnMtPmRpc3BsYXlUZXh0dXJlU2hhcmVHcm91cCA9IHRydWU7CisKKyAgICBvdXRF
eHRlbnNpb25zLT5jcmVhdGVDb250ZXh0Um9idXN0UmVzb3VyY2VJbml0aWFsaXphdGlvbiA9IHRy
dWU7CisKICAgICAvLyBnZXRTeW5jVmFsdWVzIHJlcXVpcmVzIGRpcmVjdCBjb21wb3NpdGlvbi4K
ICAgICBvdXRFeHRlbnNpb25zLT5nZXRTeW5jVmFsdWVzID0gb3V0RXh0ZW5zaW9ucy0+ZGlyZWN0
Q29tcG9zaXRpb247CiB9CkBAIC0xMTA4LDcgKzExMTMsNyBAQCB2b2lkIFJlbmRlcmVyMTE6Omdl
bmVyYXRlRGlzcGxheUV4dGVuc2lvbnMoZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5z
aW9ucwogZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmZsdXNoKCkKIHsKICAgICBtRGV2aWNlQ29udGV4
dC0+Rmx1c2goKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmZpbmlzaCgpCkBA
IC0xMTE4LDE0ICsxMTIzLDE1IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpmaW5pc2goKQogICAg
IGlmICghbVN5bmNRdWVyeSkKICAgICB7CiAgICAgICAgIEQzRDExX1FVRVJZX0RFU0MgcXVlcnlE
ZXNjOwotICAgICAgICBxdWVyeURlc2MuUXVlcnkgPSBEM0QxMV9RVUVSWV9FVkVOVDsKKyAgICAg
ICAgcXVlcnlEZXNjLlF1ZXJ5ICAgICA9IEQzRDExX1FVRVJZX0VWRU5UOwogICAgICAgICBxdWVy
eURlc2MuTWlzY0ZsYWdzID0gMDsKIAogICAgICAgICByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVR
dWVyeSgmcXVlcnlEZXNjLCAmbVN5bmNRdWVyeSk7CiAgICAgICAgIEFTU0VSVChTVUNDRUVERUQo
cmVzdWx0KSk7CiAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0
ZSBldmVudCBxdWVyeSwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIGV2ZW50IHF1
ZXJ5LCByZXN1bHQ6IDB4JVguIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTE0MSwyMSArMTE0NywyNCBAQCBnbDo6RXJyb3Ig
UmVuZGVyZXIxMTo6ZmluaXNoKCkKICAgICAgICAgcmVzdWx0ID0gbURldmljZUNvbnRleHQtPkdl
dERhdGEobVN5bmNRdWVyeSwgTlVMTCwgMCwgZmxhZ3MpOwogICAgICAgICBpZiAoRkFJTEVEKHJl
c3VsdCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09G
X01FTU9SWSwgIkZhaWxlZCB0byBnZXQgZXZlbnQgcXVlcnkgZGF0YSwgcmVzdWx0OiAweCVYLiIs
IHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlks
ICJGYWlsZWQgdG8gZ2V0IGV2ZW50IHF1ZXJ5IGRhdGEsIHJlc3VsdDogMHglWC4iLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8g
S2VlcCBwb2xsaW5nLCBidXQgYWxsb3cgb3RoZXIgdGhyZWFkcyB0byBkbyBzb21ldGhpbmcgdXNl
ZnVsIGZpcnN0Ci0gICAgICAgIFNjaGVkdWxlWWllbGQoKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9
PSBTX0ZBTFNFKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBLZWVwIHBvbGxpbmcsIGJ1dCBh
bGxvdyBvdGhlciB0aHJlYWRzIHRvIGRvIHNvbWV0aGluZyB1c2VmdWwgZmlyc3QKKyAgICAgICAg
ICAgIFNjaGVkdWxlWWllbGQoKTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICh0ZXN0RGV2aWNl
TG9zdCgpKQogICAgICAgICB7CiAgICAgICAgICAgICBtRGlzcGxheS0+bm90aWZ5RGV2aWNlTG9z
dCgpOwogICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRGV2
aWNlIHdhcyBsb3N0IHdoaWxlIHdhaXRpbmcgZm9yIHN5bmMuIik7CiAgICAgICAgIH0KLSAgICB9
Ci0gICAgd2hpbGUgKHJlc3VsdCA9PSBTX0ZBTFNFKTsKKyAgICB9IHdoaWxlIChyZXN1bHQgPT0g
U19GQUxTRSk7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogYm9vbCBSZW5kZXJlcjExOjppc1ZhbGlkTmF0aXZlV2lu
ZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSBjb25zdApAQCAtMTE4MSwxOSArMTE5MCwx
MjQgQEAgTmF0aXZlV2luZG93RDNEICpSZW5kZXJlcjExOjpjcmVhdGVOYXRpdmVXaW5kb3coRUdM
TmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAjZW5kaWYKIH0KIAorZWdsOjpFcnJvciBSZW5kZXJl
cjExOjpnZXREM0RUZXh0dXJlSW5mbyhJVW5rbm93biAqZDNkVGV4dHVyZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50ICp3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50ICpoZWlnaHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAqZmJvRm9ybWF0KSBjb25zdAor
eworICAgIElEM0QxMVRleHR1cmUyRCAqdGV4dHVyZSA9IGQzZDExOjpEeW5hbWljQ2FzdENvbU9i
amVjdDxJRDNEMTFUZXh0dXJlMkQ+KGQzZFRleHR1cmUpOworICAgIGlmICh0ZXh0dXJlID09IG51
bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX1BBUkFNRVRF
UiwgImNsaWVudCBidWZmZXIgaXMgbm90IGEgSUQzRDExVGV4dHVyZTJEIik7CisgICAgfQorCisg
ICAgSUQzRDExRGV2aWNlICp0ZXh0dXJlRGV2aWNlID0gbnVsbHB0cjsKKyAgICB0ZXh0dXJlLT5H
ZXREZXZpY2UoJnRleHR1cmVEZXZpY2UpOworICAgIGlmICh0ZXh0dXJlRGV2aWNlICE9IG1EZXZp
Y2UpCisgICAgeworICAgICAgICBTYWZlUmVsZWFzZSh0ZXh0dXJlKTsKKyAgICAgICAgcmV0dXJu
IGVnbDo6RXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJUZXh0dXJlJ3MgZGV2aWNlIGRvZXMgbm90
IG1hdGNoLiIpOworICAgIH0KKyAgICBTYWZlUmVsZWFzZSh0ZXh0dXJlRGV2aWNlKTsKKworICAg
IEQzRDExX1RFWFRVUkUyRF9ERVNDIGRlc2MgPSB7MH07CisgICAgdGV4dHVyZS0+R2V0RGVzYygm
ZGVzYyk7CisgICAgU2FmZVJlbGVhc2UodGV4dHVyZSk7CisKKyAgICBpZiAod2lkdGgpCisgICAg
eworICAgICAgICAqd2lkdGggPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGRlc2MuV2lkdGgpOworICAg
IH0KKyAgICBpZiAoaGVpZ2h0KQorICAgIHsKKyAgICAgICAgKmhlaWdodCA9IHN0YXRpY19jYXN0
PEVHTGludD4oZGVzYy5IZWlnaHQpOworICAgIH0KKworICAgIC8vIEZyb20gdGFibGUgZWdsLnJl
c3RyaWN0aW9ucyBpbiBFR0xfQU5HTEVfZDNkX3RleHR1cmVfY2xpZW50X2J1ZmZlci4KKyAgICBz
d2l0Y2ggKGRlc2MuRm9ybWF0KQorICAgIHsKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STToKKyAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdC
OgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNOgorICAgICAgICBjYXNl
IERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNX1NSR0I6CisgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X0ZMT0FUOgorICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9GTE9BVDoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgIlVua25vd24gY2xp
ZW50IGJ1ZmZlciB0ZXh0dXJlIGZvcm1hdDogJXUuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc2MuRm9ybWF0KTsKKyAgICB9CisKKyAgICBpZiAoZmJvRm9ybWF0KQorICAgIHsK
KyAgICAgICAgY29uc3QgYW5nbGU6OkZvcm1hdCAmYW5nbGVGb3JtYXQgPSBkM2QxMV9hbmdsZTo6
R2V0Rm9ybWF0KGRlc2MuRm9ybWF0KTsKKyAgICAgICAgKmZib0Zvcm1hdCAgICAgICAgICAgICAg
ICAgICAgICAgPSBhbmdsZUZvcm1hdC5mYm9JbXBsZW1lbnRhdGlvbkludGVybmFsRm9ybWF0Owor
ICAgIH0KKworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworZWdsOjpF
cnJvciBSZW5kZXJlcjExOjp2YWxpZGF0ZVNoYXJlSGFuZGxlKGNvbnN0IGVnbDo6Q29uZmlnICpj
b25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExF
IHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBjb25zdAoreworICAgIGlmIChzaGFy
ZUhhbmRsZSA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdM
X0JBRF9QQVJBTUVURVIsICJOVUxMIHNoYXJlIGhhbmRsZS4iKTsKKyAgICB9CisKKyAgICBJRDNE
MTFSZXNvdXJjZSAqdGVtcFJlc291cmNlMTEgPSBudWxscHRyOworICAgIEhSRVNVTFQgcmVzdWx0
ID0gbURldmljZS0+T3BlblNoYXJlZFJlc291cmNlKHNoYXJlSGFuZGxlLCBfX3V1aWRvZihJRDNE
MTFSZXNvdXJjZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHZvaWQgKiopJnRlbXBSZXNvdXJjZTExKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkp
CisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgIkZh
aWxlZCB0byBvcGVuIHNoYXJlIGhhbmRsZSwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAg
fQorCisgICAgSUQzRDExVGV4dHVyZTJEICp0ZXh0dXJlMkQgPSBkM2QxMTo6RHluYW1pY0Nhc3RD
b21PYmplY3Q8SUQzRDExVGV4dHVyZTJEPih0ZW1wUmVzb3VyY2UxMSk7CisgICAgU2FmZVJlbGVh
c2UodGVtcFJlc291cmNlMTEpOworCisgICAgaWYgKHRleHR1cmUyRCA9PSBudWxscHRyKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gcXVlcnkgSUQzRDExVGV4dHVyZTJEIG9iamVj
dCBmcm9tIHNoYXJlIGhhbmRsZS4iKTsKKyAgICB9CisKKyAgICBEM0QxMV9URVhUVVJFMkRfREVT
QyBkZXNjID0gezB9OworICAgIHRleHR1cmUyRC0+R2V0RGVzYygmZGVzYyk7CisgICAgU2FmZVJl
bGVhc2UodGV4dHVyZTJEKTsKKworICAgIEVHTGludCB3aWR0aCAgPSBhdHRyaWJzLmdldEFzSW50
KEVHTF9XSURUSCwgMCk7CisgICAgRUdMaW50IGhlaWdodCA9IGF0dHJpYnMuZ2V0QXNJbnQoRUdM
X0hFSUdIVCwgMCk7CisgICAgQVNTRVJUKHdpZHRoICE9IDAgJiYgaGVpZ2h0ICE9IDApOworCisg
ICAgY29uc3QgZDNkMTE6OkZvcm1hdCAmYmFja2J1ZmZlckZvcm1hdEluZm8gPQorICAgICAgICBk
M2QxMTo6Rm9ybWF0OjpHZXQoY29uZmlnLT5yZW5kZXJUYXJnZXRGb3JtYXQsIGdldFJlbmRlcmVy
MTFEZXZpY2VDYXBzKCkpOworCisgICAgaWYgKGRlc2MuV2lkdGggIT0gc3RhdGljX2Nhc3Q8VUlO
VD4od2lkdGgpIHx8IGRlc2MuSGVpZ2h0ICE9IHN0YXRpY19jYXN0PFVJTlQ+KGhlaWdodCkgfHwK
KyAgICAgICAgZGVzYy5Gb3JtYXQgIT0gYmFja2J1ZmZlckZvcm1hdEluZm8udGV4Rm9ybWF0IHx8
IGRlc2MuTWlwTGV2ZWxzICE9IDEgfHwgZGVzYy5BcnJheVNpemUgIT0gMSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCAiSW52YWxpZCB0ZXh0dXJl
IHBhcmFtZXRlcnMgaW4gc2hhcmUgaGFuZGxlIHRleHR1cmUuIik7CisgICAgfQorCisgICAgcmV0
dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCiBTd2FwQ2hhaW5EM0QgKlJlbmRlcmVy
MTE6OmNyZWF0ZVN3YXBDaGFpbihOYXRpdmVXaW5kb3dEM0QgKm5hdGl2ZVdpbmRvdywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRSBzaGFyZUhhbmRsZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElVbmtub3duICpkM2RU
ZXh0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGJhY2tCdWZmZXJGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xpbnQgb3JpZW50YXRpb24pCiB7Ci0gICAgcmV0dXJuIG5ldyBT
d2FwQ2hhaW4xMSh0aGlzLCBHZXRBczxOYXRpdmVXaW5kb3cxMT4obmF0aXZlV2luZG93KSwgc2hh
cmVIYW5kbGUsIGJhY2tCdWZmZXJGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZXB0aEJ1ZmZlckZvcm1hdCwgb3JpZW50YXRpb24pOworICAgIHJldHVybiBuZXcgU3dhcENoYWlu
MTEodGhpcywgR2V0QXM8TmF0aXZlV2luZG93MTE+KG5hdGl2ZVdpbmRvdyksIHNoYXJlSGFuZGxl
LCBkM2RUZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja0J1ZmZlckZvcm1h
dCwgZGVwdGhCdWZmZXJGb3JtYXQsIG9yaWVudGF0aW9uKTsKIH0KIAogdm9pZCAqUmVuZGVyZXIx
MTo6Z2V0RDNERGV2aWNlKCkKIHsKLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
bURldmljZSk7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPihtRGV2aWNlKTsK
IH0KIAogZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmdlbmVyYXRlU3dpenpsZShnbDo6VGV4dHVyZSAq
dGV4dHVyZSkKQEAgLTEyMDgsMTMgKzEzMjIsMTMgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6Omdl
bmVyYXRlU3dpenpsZShnbDo6VGV4dHVyZSAqdGV4dHVyZSkKIAogICAgICAgICBpZiAodGV4U3Rv
cmFnZSkKICAgICAgICAgewotICAgICAgICAgICAgVGV4dHVyZVN0b3JhZ2UxMSAqc3RvcmFnZTEx
ID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2UxMT4odGV4U3RvcmFnZSk7CisgICAgICAgICAgICBUZXh0
dXJlU3RvcmFnZTExICpzdG9yYWdlMTEgICAgICAgICAgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTEx
Pih0ZXhTdG9yYWdlKTsKICAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUgJnRleHR1
cmVTdGF0ZSA9IHRleHR1cmUtPmdldFRleHR1cmVTdGF0ZSgpOwogICAgICAgICAgICAgQU5HTEVf
VFJZKHN0b3JhZ2UxMS0+Z2VuZXJhdGVTd2l6emxlcyh0ZXh0dXJlU3RhdGUuZ2V0U3dpenpsZVN0
YXRlKCkpKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVy
ZXIxMTo6Z2VuZXJhdGVTd2l6emxlcyhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBnbDo6
U2FtcGxlclR5cGUgdHlwZSkKQEAgLTEyNTIsNiArMTM2Niw3IEBAIGdsOjpFcnJvciBSZW5kZXJl
cjExOjpzZXRTYW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6U2FtcGxlclN0YXRlICZzYW1w
bGVyU3RhdGUpCiB7CisjaWYgIWRlZmluZWQoTkRFQlVHKQogICAgIC8vIE1ha2Ugc3VyZSB0byBh
ZGQgdGhlIGxldmVsIG9mZnNldCBmb3Igb3VyIHRpbnkgY29tcHJlc3NlZCB0ZXh0dXJlIHdvcmth
cm91bmQKICAgICBUZXh0dXJlRDNEICp0ZXh0dXJlRDNEID0gR2V0SW1wbEFzPFRleHR1cmVEM0Q+
KHRleHR1cmUpOwogCkBAIC0xMjYwLDYgKzEzNzUsNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6
c2V0U2FtcGxlclN0YXRlKGdsOjpTYW1wbGVyVHlwZSB0eXBlLAogCiAgICAgLy8gU3RvcmFnZSBz
aG91bGQgZXhpc3QsIHRleHR1cmUgc2hvdWxkIGJlIGNvbXBsZXRlCiAgICAgQVNTRVJUKHN0b3Jh
Z2UpOworI2VuZGlmICAvLyAhZGVmaW5lZChOREVCVUcpCiAKICAgICAvLyBTYW1wbGVyIG1ldGFk
YXRhIHRoYXQncyBwYXNzZWQgdG8gc2hhZGVycyBpbiB1bmlmb3JtcyBpcyBzdG9yZWQgc2VwYXJh
dGVseSBmcm9tIHJlc3Qgb2YgdGhlCiAgICAgLy8gc2FtcGxlciBzdGF0ZSBzaW5jZSBoYXZpbmcg
aXQgaW4gY29udGlndW91cyBtZW1vcnkgbWFrZXMgaXQgcG9zc2libGUgdG8gbWVtY3B5IHRvIGEg
Y29uc3RhbnQKQEAgLTEzMDYsNyArMTQyMiw4IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpzZXRT
YW1wbGVyU3RhdGUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsCiAKICAgICAgICAgbWV0YWRhdGEgPSAm
bVNhbXBsZXJNZXRhZGF0YVZTOwogICAgIH0KLSAgICBlbHNlIFVOUkVBQ0hBQkxFKCk7CisgICAg
ZWxzZQorICAgICAgICBVTlJFQUNIQUJMRSgpOwogCiAgICAgQVNTRVJUKG1ldGFkYXRhICE9IG51
bGxwdHIpOwogICAgIG1ldGFkYXRhLT51cGRhdGUoaW5kZXgsICp0ZXh0dXJlKTsKQEAgLTEzMzIs
OCArMTQ0OSw4IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpzZXRUZXh0dXJlKGdsOjpTYW1wbGVy
VHlwZSB0eXBlLCBpbnQgaW5kZXgsIGdsOjpUZXh0dXJlICp0CiAKICAgICAgICAgQU5HTEVfVFJZ
KHN0b3JhZ2UxMS0+Z2V0U1JWKHRleHR1cmUtPmdldFRleHR1cmVTdGF0ZSgpLCAmdGV4dHVyZVNS
VikpOwogCi0gICAgICAgIC8vIElmIHdlIGdldCBOVUxMIGJhY2sgZnJvbSBnZXRTUlYgaGVyZSwg
c29tZXRoaW5nIHdlbnQgd3JvbmcgaW4gdGhlIHRleHR1cmUgY2xhc3MgYW5kIHdlJ3JlIHVuZXhw
ZWN0ZWRseQotICAgICAgICAvLyBtaXNzaW5nIHRoZSBzaGFkZXIgcmVzb3VyY2UgdmlldworICAg
ICAgICAvLyBJZiB3ZSBnZXQgTlVMTCBiYWNrIGZyb20gZ2V0U1JWIGhlcmUsIHNvbWV0aGluZyB3
ZW50IHdyb25nIGluIHRoZSB0ZXh0dXJlIGNsYXNzIGFuZCB3ZSdyZQorICAgICAgICAvLyB1bmV4
cGVjdGVkbHkgbWlzc2luZyB0aGUgc2hhZGVyIHJlc291cmNlIHZpZXcKICAgICAgICAgQVNTRVJU
KHRleHR1cmVTUlYgIT0gTlVMTCk7CiAKICAgICAgICAgdGV4dHVyZUltcGwtPnJlc2V0RGlydHko
KTsKQEAgLTEzNDYsMTQgKzE0NjMsMTUgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OnNldFRleHR1
cmUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwgZ2w6OlRleHR1cmUgKnQKIAogICAg
IG1TdGF0ZU1hbmFnZXIuc2V0U2hhZGVyUmVzb3VyY2UodHlwZSwgaW5kZXgsIHRleHR1cmVTUlYp
OwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBSZW5kZXJlcjExOjpzZXRVbmlmb3JtQnVmZmVycyhj
b25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEdMaW50PiAmdmVydGV4VW5pZm9ybUJ1ZmZl
cnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8R0xpbnQ+ICZmcmFnbWVudFVuaWZvcm1CdWZmZXJzKQogewotICAgIGZvciAoc2l6ZV90
IHVuaWZvcm1CdWZmZXJJbmRleCA9IDA7IHVuaWZvcm1CdWZmZXJJbmRleCA8IHZlcnRleFVuaWZv
cm1CdWZmZXJzLnNpemUoKTsgdW5pZm9ybUJ1ZmZlckluZGV4KyspCisgICAgZm9yIChzaXplX3Qg
dW5pZm9ybUJ1ZmZlckluZGV4ID0gMDsgdW5pZm9ybUJ1ZmZlckluZGV4IDwgdmVydGV4VW5pZm9y
bUJ1ZmZlcnMuc2l6ZSgpOworICAgICAgICAgdW5pZm9ybUJ1ZmZlckluZGV4KyspCiAgICAgewog
ICAgICAgICBHTGludCBiaW5kaW5nID0gdmVydGV4VW5pZm9ybUJ1ZmZlcnNbdW5pZm9ybUJ1ZmZl
ckluZGV4XTsKIApAQCAtMTM3NCwxMCArMTQ5MiwxMiBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6
c2V0VW5pZm9ybUJ1ZmZlcnMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKIAogICAgICAg
ICBCdWZmZXIxMSAqYnVmZmVyU3RvcmFnZSAgICAgID0gR2V0SW1wbEFzPEJ1ZmZlcjExPih1bmlm
b3JtQnVmZmVyLmdldCgpKTsKICAgICAgICAgSUQzRDExQnVmZmVyICpjb25zdGFudEJ1ZmZlciA9
IG51bGxwdHI7CisgICAgICAgIFVJTlQgZmlyc3RDb25zdGFudCAgICAgICAgICAgPSAwOworICAg
ICAgICBVSU5UIG51bUNvbnN0YW50cyAgICAgICAgICAgID0gMDsKIAotICAgICAgICBBTkdMRV9U
UllfUkVTVUxUKAotICAgICAgICAgICAgYnVmZmVyU3RvcmFnZS0+Z2V0Q29uc3RhbnRCdWZmZXJS
YW5nZSh1bmlmb3JtQnVmZmVyT2Zmc2V0LCB1bmlmb3JtQnVmZmVyU2l6ZSksCi0gICAgICAgICAg
ICBjb25zdGFudEJ1ZmZlcik7CisgICAgICAgIEFOR0xFX1RSWShidWZmZXJTdG9yYWdlLT5nZXRD
b25zdGFudEJ1ZmZlclJhbmdlKHVuaWZvcm1CdWZmZXJPZmZzZXQsIHVuaWZvcm1CdWZmZXJTaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmY29uc3RhbnRCdWZmZXIsICZmaXJzdENvbnN0YW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbnVtQ29uc3RhbnRzKSk7CiAKICAg
ICAgICAgaWYgKCFjb25zdGFudEJ1ZmZlcikKICAgICAgICAgewpAQCAtMTM4OCwxMSArMTUwOCw5
IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpzZXRVbmlmb3JtQnVmZmVycyhjb25zdCBnbDo6Q29u
dGV4dFN0YXRlICZkYXRhLAogICAgICAgICAgICAgbUN1cnJlbnRDb25zdGFudEJ1ZmZlclZTT2Zm
c2V0W3VuaWZvcm1CdWZmZXJJbmRleF0gIT0gdW5pZm9ybUJ1ZmZlck9mZnNldCB8fAogICAgICAg
ICAgICAgbUN1cnJlbnRDb25zdGFudEJ1ZmZlclZTU2l6ZVt1bmlmb3JtQnVmZmVySW5kZXhdICE9
IHVuaWZvcm1CdWZmZXJTaXplKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobVJlbmRlcmVy
MTFEZXZpY2VDYXBzLnN1cHBvcnRzQ29uc3RhbnRCdWZmZXJPZmZzZXRzICYmIHVuaWZvcm1CdWZm
ZXJTaXplICE9IDApCisgICAgICAgICAgICBpZiAoZmlyc3RDb25zdGFudCAhPSAwICYmIHVuaWZv
cm1CdWZmZXJTaXplICE9IDApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVUlOVCBm
aXJzdENvbnN0YW50ID0gMCwgbnVtQ29uc3RhbnRzID0gMDsKLSAgICAgICAgICAgICAgICBDYWxj
dWxhdGVDb25zdGFudEJ1ZmZlclBhcmFtcyh1bmlmb3JtQnVmZmVyT2Zmc2V0LCB1bmlmb3JtQnVm
ZmVyU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
Zmlyc3RDb25zdGFudCwgJm51bUNvbnN0YW50cyk7CisgICAgICAgICAgICAgICAgQVNTRVJUKG51
bUNvbnN0YW50cyAhPSAwKTsKICAgICAgICAgICAgICAgICBtRGV2aWNlQ29udGV4dDEtPlZTU2V0
Q29uc3RhbnRCdWZmZXJzMSgKICAgICAgICAgICAgICAgICAgICAgZ2V0UmVzZXJ2ZWRWZXJ0ZXhV
bmlmb3JtQnVmZmVycygpICsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGludD4odW5pZm9ybUJ1ZmZlckluZGV4KSwKQEAgLTE0MTIsNyArMTUzMCw4IEBAIGds
OjpFcnJvciBSZW5kZXJlcjExOjpzZXRVbmlmb3JtQnVmZmVycyhjb25zdCBnbDo6Q29udGV4dFN0
YXRlICZkYXRhLAogICAgICAgICB9CiAgICAgfQogCi0gICAgZm9yIChzaXplX3QgdW5pZm9ybUJ1
ZmZlckluZGV4ID0gMDsgdW5pZm9ybUJ1ZmZlckluZGV4IDwgZnJhZ21lbnRVbmlmb3JtQnVmZmVy
cy5zaXplKCk7IHVuaWZvcm1CdWZmZXJJbmRleCsrKQorICAgIGZvciAoc2l6ZV90IHVuaWZvcm1C
dWZmZXJJbmRleCA9IDA7IHVuaWZvcm1CdWZmZXJJbmRleCA8IGZyYWdtZW50VW5pZm9ybUJ1ZmZl
cnMuc2l6ZSgpOworICAgICAgICAgdW5pZm9ybUJ1ZmZlckluZGV4KyspCiAgICAgewogICAgICAg
ICBHTGludCBiaW5kaW5nID0gZnJhZ21lbnRVbmlmb3JtQnVmZmVyc1t1bmlmb3JtQnVmZmVySW5k
ZXhdOwogCkBAIC0xNDMzLDEwICsxNTUyLDEyIEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpzZXRV
bmlmb3JtQnVmZmVycyhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogCiAgICAgICAgIEJ1
ZmZlcjExICpidWZmZXJTdG9yYWdlICAgICAgPSBHZXRJbXBsQXM8QnVmZmVyMTE+KHVuaWZvcm1C
dWZmZXIuZ2V0KCkpOwogICAgICAgICBJRDNEMTFCdWZmZXIgKmNvbnN0YW50QnVmZmVyID0gbnVs
bHB0cjsKKyAgICAgICAgVUlOVCBmaXJzdENvbnN0YW50ICAgICAgICAgICA9IDA7CisgICAgICAg
IFVJTlQgbnVtQ29uc3RhbnRzICAgICAgICAgICAgPSAwOwogCi0gICAgICAgIEFOR0xFX1RSWV9S
RVNVTFQoCi0gICAgICAgICAgICBidWZmZXJTdG9yYWdlLT5nZXRDb25zdGFudEJ1ZmZlclJhbmdl
KHVuaWZvcm1CdWZmZXJPZmZzZXQsIHVuaWZvcm1CdWZmZXJTaXplKSwKLSAgICAgICAgICAgIGNv
bnN0YW50QnVmZmVyKTsKKyAgICAgICAgQU5HTEVfVFJZKGJ1ZmZlclN0b3JhZ2UtPmdldENvbnN0
YW50QnVmZmVyUmFuZ2UodW5pZm9ybUJ1ZmZlck9mZnNldCwgdW5pZm9ybUJ1ZmZlclNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZj
b25zdGFudEJ1ZmZlciwgJmZpcnN0Q29uc3RhbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZudW1Db25zdGFudHMpKTsKIAogICAgICAg
ICBpZiAoIWNvbnN0YW50QnVmZmVyKQogICAgICAgICB7CkBAIC0xNDQ3LDExICsxNTY4LDggQEAg
Z2w6OkVycm9yIFJlbmRlcmVyMTE6OnNldFVuaWZvcm1CdWZmZXJzKGNvbnN0IGdsOjpDb250ZXh0
U3RhdGUgJmRhdGEsCiAgICAgICAgICAgICBtQ3VycmVudENvbnN0YW50QnVmZmVyUFNPZmZzZXRb
dW5pZm9ybUJ1ZmZlckluZGV4XSAhPSB1bmlmb3JtQnVmZmVyT2Zmc2V0IHx8CiAgICAgICAgICAg
ICBtQ3VycmVudENvbnN0YW50QnVmZmVyUFNTaXplW3VuaWZvcm1CdWZmZXJJbmRleF0gIT0gdW5p
Zm9ybUJ1ZmZlclNpemUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtUmVuZGVyZXIxMURl
dmljZUNhcHMuc3VwcG9ydHNDb25zdGFudEJ1ZmZlck9mZnNldHMgJiYgdW5pZm9ybUJ1ZmZlclNp
emUgIT0gMCkKKyAgICAgICAgICAgIGlmIChmaXJzdENvbnN0YW50ICE9IDAgJiYgdW5pZm9ybUJ1
ZmZlclNpemUgIT0gMCkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBVSU5UIGZpcnN0
Q29uc3RhbnQgPSAwLCBudW1Db25zdGFudHMgPSAwOwotICAgICAgICAgICAgICAgIENhbGN1bGF0
ZUNvbnN0YW50QnVmZmVyUGFyYW1zKHVuaWZvcm1CdWZmZXJPZmZzZXQsIHVuaWZvcm1CdWZmZXJT
aXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJz
dENvbnN0YW50LCAmbnVtQ29uc3RhbnRzKTsKICAgICAgICAgICAgICAgICBtRGV2aWNlQ29udGV4
dDEtPlBTU2V0Q29uc3RhbnRCdWZmZXJzMSgKICAgICAgICAgICAgICAgICAgICAgZ2V0UmVzZXJ2
ZWRGcmFnbWVudFVuaWZvcm1CdWZmZXJzKCkgKwogICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQgaW50Pih1bmlmb3JtQnVmZmVySW5kZXgpLApAQCAtMTQ3NCwxNSAr
MTU5MiwxNiBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6c2V0VW5pZm9ybUJ1ZmZlcnMoY29uc3Qg
Z2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAot
Z2w6OkVycm9yIFJlbmRlcmVyMTE6OnVwZGF0ZVN0YXRlKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUg
JmRhdGEsIEdMZW51bSBkcmF3TW9kZSkKK2dsOjpFcnJvciBSZW5kZXJlcjExOjp1cGRhdGVTdGF0
ZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsIEdMZW51bSBkcmF3TW9kZSkKIHsKKyAgICBjb25z
dCBhdXRvICZkYXRhICAgID0gY29udGV4dEltcGwtPmdldENvbnRleHRTdGF0ZSgpOwogICAgIGNv
bnN0IGF1dG8gJmdsU3RhdGUgPSBkYXRhLmdldFN0YXRlKCk7CiAKICAgICAvLyBBcHBsaWVzIHRo
ZSByZW5kZXIgdGFyZ2V0IHN1cmZhY2UsIGRlcHRoIHN0ZW5jaWwgc3VyZmFjZSwgdmlld3BvcnQg
cmVjdGFuZ2xlIGFuZAogICAgIC8vIHNjaXNzb3IgcmVjdGFuZ2xlIHRvIHRoZSByZW5kZXJlcgog
ICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBnbFN0YXRlLmdldERyYXdGcmFtZWJ1
ZmZlcigpOwotICAgIEFTU0VSVChmcmFtZWJ1ZmZlciAmJiAhZnJhbWVidWZmZXItPmhhc0FueURp
cnR5Qml0KCkgJiYgZnJhbWVidWZmZXItPmNvbXBsZXRlKGRhdGEpKTsKLSAgICBBTkdMRV9UUlko
YXBwbHlSZW5kZXJUYXJnZXQoZnJhbWVidWZmZXIpKTsKKyAgICBBU1NFUlQoZnJhbWVidWZmZXIg
JiYgIWZyYW1lYnVmZmVyLT5oYXNBbnlEaXJ0eUJpdCgpICYmIGZyYW1lYnVmZmVyLT5jYWNoZWRD
b21wbGV0ZSgpKTsKKyAgICBBTkdMRV9UUlkobVN0YXRlTWFuYWdlci5zeW5jRnJhbWVidWZmZXIo
Y29udGV4dEltcGwsIGZyYW1lYnVmZmVyKSk7CiAKICAgICAvLyBTZXQgdGhlIHByZXNlbnQgcGF0
aCBzdGF0ZQogICAgIGF1dG8gZmlyc3RDb2xvckF0dGFjaG1lbnQgICAgICAgID0gZnJhbWVidWZm
ZXItPmdldEZpcnN0Q29sb3JidWZmZXIoKTsKQEAgLTE0OTcsNyArMTYxNiwxNyBAQCBnbDo6RXJy
b3IgUmVuZGVyZXIxMTo6dXBkYXRlU3RhdGUoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwg
R0xlbnVtIGRyYXdNb2RlKQogICAgIG1TdGF0ZU1hbmFnZXIuc2V0U2Npc3NvclJlY3RhbmdsZShn
bFN0YXRlLmdldFNjaXNzb3IoKSwgZ2xTdGF0ZS5pc1NjaXNzb3JUZXN0RW5hYmxlZCgpKTsKIAog
ICAgIC8vIEFwcGx5aW5nIHJhc3Rlcml6ZXIgc3RhdGUgdG8gRDNEMTEgZGV2aWNlCi0gICAgaW50
IHNhbXBsZXMgICAgICAgICAgICAgICAgICAgID0gZnJhbWVidWZmZXItPmdldFNhbXBsZXMoZGF0
YSk7CisgICAgLy8gU2luY2UgZnJhbWVidWZmZXItPmdldFNhbXBsZXMgd2lsbCByZXR1cm4gdGhl
IG9yaWdpbmFsIHNhbXBsZXMgd2hpY2ggbWF5IGJlIGRpZmZlcmVudCB3aXRoCisgICAgLy8gdGhl
IHNhbXBsZSBjb3VudHMgdGhhdCB3ZSBzZXQgaW4gcmVuZGVyIHRhcmdldCB2aWV3LCBoZXJlIHdl
IHVzZSByZW5kZXJUYXJnZXQtPmdldFNhbXBsZXMgdG8KKyAgICAvLyBnZXQgdGhlIGFjdHVhbCBz
YW1wbGVzLgorICAgIEdMc2l6ZWkgc2FtcGxlcyA9IDA7CisgICAgaWYgKGZpcnN0Q29sb3JBdHRh
Y2htZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGZpcnN0Q29sb3JBdHRhY2htZW50LT5pc0F0
dGFjaGVkKCkpOworICAgICAgICBSZW5kZXJUYXJnZXQxMSAqcmVuZGVyVGFyZ2V0ID0gbnVsbHB0
cjsKKyAgICAgICAgQU5HTEVfVFJZKGZpcnN0Q29sb3JBdHRhY2htZW50LT5nZXRSZW5kZXJUYXJn
ZXQoJnJlbmRlclRhcmdldCkpOworICAgICAgICBzYW1wbGVzID0gcmVuZGVyVGFyZ2V0LT5nZXRT
YW1wbGVzKCk7CisgICAgfQogICAgIGdsOjpSYXN0ZXJpemVyU3RhdGUgcmFzdGVyaXplciA9IGds
U3RhdGUuZ2V0UmFzdGVyaXplclN0YXRlKCk7CiAgICAgcmFzdGVyaXplci5wb2ludERyYXdNb2Rl
ICAgICAgID0gKGRyYXdNb2RlID09IEdMX1BPSU5UUyk7CiAgICAgcmFzdGVyaXplci5tdWx0aVNh
bXBsZSAgICAgICAgID0gKHNhbXBsZXMgIT0gMCk7CkBAIC0xNTIzLDIyICsxNjUyLDQ0IEBAIGJv
b2wgUmVuZGVyZXIxMTo6YXBwbHlQcmltaXRpdmVUeXBlKEdMZW51bSBtb2RlLCBHTHNpemVpIGNv
dW50LCBib29sIHVzZXNQb2ludFNpCiAKICAgICBzd2l0Y2ggKG1vZGUpCiAgICAgewotICAgICAg
Y2FzZSBHTF9QT0lOVFM6ICAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0QxMV9QUklNSVRJ
VkVfVE9QT0xPR1lfUE9JTlRMSVNUOyAgIG1pbkNvdW50ID0gMTsgYnJlYWs7Ci0gICAgICBjYXNl
IEdMX0xJTkVTOiAgICAgICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9Q
T0xPR1lfTElORUxJU1Q7ICAgICAgbWluQ291bnQgPSAyOyBicmVhazsKLSAgICAgIGNhc2UgR0xf
TElORV9MT09QOiAgICAgIHByaW1pdGl2ZVRvcG9sb2d5ID0gRDNEX1BSSU1JVElWRV9UT1BPTE9H
WV9MSU5FU1RSSVA7ICAgICBtaW5Db3VudCA9IDI7IGJyZWFrOwotICAgICAgY2FzZSBHTF9MSU5F
X1NUUklQOiAgICAgcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX0xJ
TkVTVFJJUDsgICAgIG1pbkNvdW50ID0gMjsgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1RSSUFOR0xF
UzogICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5H
TEVMSVNUOyAgbWluQ291bnQgPSAzOyBicmVhazsKLSAgICAgIGNhc2UgR0xfVFJJQU5HTEVfU1RS
SVA6IHByaW1pdGl2ZVRvcG9sb2d5ID0gRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9UUklBTkdMRVNU
UklQOyBtaW5Db3VudCA9IDM7IGJyZWFrOwotICAgICAgICAgIC8vIGVtdWxhdGUgZmFucyB2aWEg
cmV3cml0aW5nIGluZGV4IGJ1ZmZlcgotICAgICAgY2FzZSBHTF9UUklBTkdMRV9GQU46ICAgcHJp
bWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RPUE9MT0dZX1RSSUFOR0xFTElTVDsgIG1p
bkNvdW50ID0gMzsgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICBVTlJFQUNIQUJMRSgp
OwotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgR0xfUE9JTlRTOgorICAgICAg
ICAgICAgcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0QxMV9QUklNSVRJVkVfVE9QT0xPR1lfUE9JTlRM
SVNUOworICAgICAgICAgICAgbWluQ291bnQgICAgICAgICAgPSAxOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgR0xfTElORVM6CisgICAgICAgICAgICBwcmltaXRpdmVUb3BvbG9n
eSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfTElORUxJU1Q7CisgICAgICAgICAgICBtaW5Db3Vu
dCAgICAgICAgICA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9MSU5F
X0xPT1A6CisgICAgICAgICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9Q
T0xPR1lfTElORVNUUklQOworICAgICAgICAgICAgbWluQ291bnQgICAgICAgICAgPSAyOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfTElORV9TVFJJUDoKKyAgICAgICAgICAg
IHByaW1pdGl2ZVRvcG9sb2d5ID0gRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9MSU5FU1RSSVA7Cisg
ICAgICAgICAgICBtaW5Db3VudCAgICAgICAgICA9IDI7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBHTF9UUklBTkdMRVM6CisgICAgICAgICAgICBwcmltaXRpdmVUb3BvbG9neSA9
IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5HTEVMSVNUOworICAgICAgICAgICAgbWluQ291
bnQgICAgICAgICAgPSAzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVFJJ
QU5HTEVfU1RSSVA6CisgICAgICAgICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJ
VkVfVE9QT0xPR1lfVFJJQU5HTEVTVFJJUDsKKyAgICAgICAgICAgIG1pbkNvdW50ICAgICAgICAg
ID0gMzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyBlbXVsYXRlIGZhbnMgdmlhIHJl
d3JpdGluZyBpbmRleCBidWZmZXIKKyAgICAgICAgY2FzZSBHTF9UUklBTkdMRV9GQU46CisgICAg
ICAgICAgICBwcmltaXRpdmVUb3BvbG9neSA9IEQzRF9QUklNSVRJVkVfVE9QT0xPR1lfVFJJQU5H
TEVMSVNUOworICAgICAgICAgICAgbWluQ291bnQgICAgICAgICAgPSAzOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIC8vIElmIGluc3RhbmNlZCBwb2lu
dHNwcml0ZSBlbXVsYXRpb24gaXMgYmVpbmcgdXNlZCBhbmQgIElmIGdsX1BvaW50U2l6ZSBpcyB1
c2VkIGluIHRoZSBzaGFkZXIsCiAgICAgLy8gR0xfUE9JTlRTIG1vZGUgaXMgZXhwZWN0ZWQgdG8g
cmVuZGVyIHBvaW50c3ByaXRlcy4KLSAgICAvLyBJbnN0YW5jZWQgUG9pbnRTcHJpdGUgZW11bGF0
aW9uIHJlcXVpcmVzIHRoYXQgdGhlIHRvcG9sb2d5IHRvIGJlIEQzRF9QUklNSVRJVkVfVE9QT0xP
R1lfVFJJQU5HTEVMSVNULgorICAgIC8vIEluc3RhbmNlZCBQb2ludFNwcml0ZSBlbXVsYXRpb24g
cmVxdWlyZXMgdGhhdCB0aGUgdG9wb2xvZ3kgdG8gYmUKKyAgICAvLyBEM0RfUFJJTUlUSVZFX1RP
UE9MT0dZX1RSSUFOR0xFTElTVC4KICAgICBpZiAobW9kZSA9PSBHTF9QT0lOVFMgJiYgdXNlc1Bv
aW50U2l6ZSAmJiBnZXRXb3JrYXJvdW5kcygpLnVzZUluc3RhbmNlZFBvaW50U3ByaXRlRW11bGF0
aW9uKQogICAgIHsKICAgICAgICAgcHJpbWl0aXZlVG9wb2xvZ3kgPSBEM0RfUFJJTUlUSVZFX1RP
UE9MT0dZX1RSSUFOR0xFTElTVDsKQEAgLTE1NTMsMTEgKzE3MDQsNiBAQCBib29sIFJlbmRlcmVy
MTE6OmFwcGx5UHJpbWl0aXZlVHlwZShHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgYm9vbCB1
c2VzUG9pbnRTaQogICAgIHJldHVybiBjb3VudCA+PSBtaW5Db3VudDsKIH0KIAotZ2w6OkVycm9y
IFJlbmRlcmVyMTE6OmFwcGx5UmVuZGVyVGFyZ2V0KGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZm
ZXIpCi17Ci0gICAgcmV0dXJuIG1TdGF0ZU1hbmFnZXIuc3luY0ZyYW1lYnVmZmVyKGZyYW1lYnVm
ZmVyKTsKLX0KLQogZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmFwcGx5VmVydGV4QnVmZmVyKGNvbnN0
IGdsOjpTdGF0ZSAmc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIG1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgZmlyc3QsCkBAIC0xNjE1LDcgKzE3NjEsOCBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6
YXBwbHlJbmRleEJ1ZmZlcihjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleEluZm8sIGdsU3Rh
dGUuaXNQcmltaXRpdmVSZXN0YXJ0RW5hYmxlZCgpKSk7CiAKICAgICBJRDNEMTFCdWZmZXIgKmJ1
ZmZlciA9IG51bGxwdHI7Ci0gICAgRFhHSV9GT1JNQVQgYnVmZmVyRm9ybWF0ID0gKGluZGV4SW5m
by0+aW5kZXhUeXBlID09IEdMX1VOU0lHTkVEX0lOVCkgPyBEWEdJX0ZPUk1BVF9SMzJfVUlOVCA6
IERYR0lfRk9STUFUX1IxNl9VSU5UOworICAgIERYR0lfRk9STUFUIGJ1ZmZlckZvcm1hdCA9Cisg
ICAgICAgIChpbmRleEluZm8tPmluZGV4VHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpID8gRFhHSV9G
T1JNQVRfUjMyX1VJTlQgOiBEWEdJX0ZPUk1BVF9SMTZfVUlOVDsKIAogICAgIGlmIChpbmRleElu
Zm8tPnN0b3JhZ2UpCiAgICAgewpAQCAtMTYyNCwxOCArMTc3MSwxOSBAQCBnbDo6RXJyb3IgUmVu
ZGVyZXIxMTo6YXBwbHlJbmRleEJ1ZmZlcihjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAog
ICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBJbmRleEJ1ZmZlcjExKiBpbmRleEJ1ZmZl
ciA9IEdldEFzPEluZGV4QnVmZmVyMTE+KGluZGV4SW5mby0+aW5kZXhCdWZmZXIpOwotICAgICAg
ICBidWZmZXIgPSBpbmRleEJ1ZmZlci0+Z2V0QnVmZmVyKCk7CisgICAgICAgIEluZGV4QnVmZmVy
MTEgKmluZGV4QnVmZmVyID0gR2V0QXM8SW5kZXhCdWZmZXIxMT4oaW5kZXhJbmZvLT5pbmRleEJ1
ZmZlcik7CisgICAgICAgIGJ1ZmZlciAgICAgICAgICAgICAgICAgICAgID0gaW5kZXhCdWZmZXIt
PmdldEJ1ZmZlcigpOwogICAgIH0KIAogICAgIG1BcHBsaWVkSUJDaGFuZ2VkID0gZmFsc2U7Ci0g
ICAgaWYgKGJ1ZmZlciAhPSBtQXBwbGllZElCIHx8IGJ1ZmZlckZvcm1hdCAhPSBtQXBwbGllZElC
Rm9ybWF0IHx8IGluZGV4SW5mby0+c3RhcnRPZmZzZXQgIT0gbUFwcGxpZWRJQk9mZnNldCkKKyAg
ICBpZiAoYnVmZmVyICE9IG1BcHBsaWVkSUIgfHwgYnVmZmVyRm9ybWF0ICE9IG1BcHBsaWVkSUJG
b3JtYXQgfHwKKyAgICAgICAgaW5kZXhJbmZvLT5zdGFydE9mZnNldCAhPSBtQXBwbGllZElCT2Zm
c2V0KQogICAgIHsKICAgICAgICAgbURldmljZUNvbnRleHQtPklBU2V0SW5kZXhCdWZmZXIoYnVm
ZmVyLCBidWZmZXJGb3JtYXQsIGluZGV4SW5mby0+c3RhcnRPZmZzZXQpOwogCi0gICAgICAgIG1B
cHBsaWVkSUIgPSBidWZmZXI7Ci0gICAgICAgIG1BcHBsaWVkSUJGb3JtYXQgPSBidWZmZXJGb3Jt
YXQ7Ci0gICAgICAgIG1BcHBsaWVkSUJPZmZzZXQgPSBpbmRleEluZm8tPnN0YXJ0T2Zmc2V0Owor
ICAgICAgICBtQXBwbGllZElCICAgICAgICA9IGJ1ZmZlcjsKKyAgICAgICAgbUFwcGxpZWRJQkZv
cm1hdCAgPSBidWZmZXJGb3JtYXQ7CisgICAgICAgIG1BcHBsaWVkSUJPZmZzZXQgID0gaW5kZXhJ
bmZvLT5zdGFydE9mZnNldDsKICAgICAgICAgbUFwcGxpZWRJQkNoYW5nZWQgPSB0cnVlOwogICAg
IH0KIApAQCAtMTcxMSw3ICsxODU5LDcgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmRyYXdBcnJh
eXNJbXBsKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAgICAgIC8vIFNraXAgdGhl
IGRyYXcgY2FsbCBpZiByYXN0ZXJpemVyIGRpc2NhcmQgaXMgZW5hYmxlZCAob3Igbm8gZnJhZ21l
bnQgc2hhZGVyKS4KICAgICAgICAgaWYgKCFwaXhlbEV4ZSB8fCBnbFN0YXRlLmdldFJhc3Rlcml6
ZXJTdGF0ZSgpLnJhc3Rlcml6ZXJEaXNjYXJkKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogICAgICAgICB9CiAKICAgICAgICAgSUQzRDExUGl4ZWxTaGFkZXIgKnBpeGVsU2hhZGVy
ID0gR2V0QXM8U2hhZGVyRXhlY3V0YWJsZTExPihwaXhlbEV4ZSktPmdldFBpeGVsU2hhZGVyKCk7
CkBAIC0xNzM3LDEyICsxODg1LDEyIEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3QXJyYXlz
SW1wbChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICB7CiAgICAgICAgICAg
ICBtRGV2aWNlQ29udGV4dC0+RHJhdyhjb3VudCwgMCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OwogICAgIH0KIAogICAgIGlmIChtb2RlID09IEdMX0xJTkVfTE9PUCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBkcmF3TGluZUxvb3AoZGF0YSwgY291bnQsIEdMX05PTkUsIG51bGxwdHIsIG51bGxw
dHIsIGluc3RhbmNlcyk7CisgICAgICAgIHJldHVybiBkcmF3TGluZUxvb3AoZGF0YSwgY291bnQs
IEdMX05PTkUsIG51bGxwdHIsIDAsIGluc3RhbmNlcyk7CiAgICAgfQogCiAgICAgaWYgKG1vZGUg
PT0gR0xfVFJJQU5HTEVfRkFOKQpAQCAtMTc3Niw3ICsxOTI0LDcgQEAgZ2w6OkVycm9yIFJlbmRl
cmVyMTE6OmRyYXdBcnJheXNJbXBsKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAg
ICAgIHsKICAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3SW5zdGFuY2VkKGNvdW50LCBp
bnN0YW5jZXMsIDAsIDApOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKICAgICAv
LyBJZiB0aGUgc2hhZGVyIGlzIHdyaXRpbmcgdG8gZ2xfUG9pbnRTaXplLCB0aGVuIHBvaW50c3By
aXRlcyBhcmUgYmVpbmcgcmVuZGVyZWQuCkBAIC0xNzkwLDcgKzE5MzgsNyBAQCBnbDo6RXJyb3Ig
UmVuZGVyZXIxMTo6ZHJhd0FycmF5c0ltcGwoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwK
ICAgICB7CiAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3KGNvdW50LCAwKTsKICAgICB9Ci0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7CiB9CiAKIGdsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3RWxlbWVudHNJbXBsKGNvbnN0IGds
OjpDb250ZXh0U3RhdGUgJmRhdGEsCkBAIC0xODAxLDE2ICsxOTQ5LDE3IEBAIGdsOjpFcnJvciBS
ZW5kZXJlcjExOjpkcmF3RWxlbWVudHNJbXBsKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmlu
ZGljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGlu
c3RhbmNlcykKIHsKLSAgICBpbnQgbWluSW5kZXggPSBzdGF0aWNfY2FzdDxpbnQ+KGluZGV4SW5m
by5pbmRleFJhbmdlLnN0YXJ0KTsKKyAgICBpbnQgc3RhcnRWZXJ0ZXggPSBzdGF0aWNfY2FzdDxp
bnQ+KGluZGV4SW5mby5pbmRleFJhbmdlLnN0YXJ0KTsKKyAgICBpbnQgYmFzZVZlcnRleCAgPSAt
c3RhcnRWZXJ0ZXg7CiAKICAgICBpZiAobW9kZSA9PSBHTF9MSU5FX0xPT1ApCiAgICAgewotICAg
ICAgICByZXR1cm4gZHJhd0xpbmVMb29wKGRhdGEsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCAmaW5k
ZXhJbmZvLCBpbnN0YW5jZXMpOworICAgICAgICByZXR1cm4gZHJhd0xpbmVMb29wKGRhdGEsIGNv
dW50LCB0eXBlLCBpbmRpY2VzLCBiYXNlVmVydGV4LCBpbnN0YW5jZXMpOwogICAgIH0KIAogICAg
IGlmIChtb2RlID09IEdMX1RSSUFOR0xFX0ZBTikKICAgICB7Ci0gICAgICAgIHJldHVybiBkcmF3
VHJpYW5nbGVGYW4oZGF0YSwgY291bnQsIHR5cGUsIGluZGljZXMsIG1pbkluZGV4LCBpbnN0YW5j
ZXMpOworICAgICAgICByZXR1cm4gZHJhd1RyaWFuZ2xlRmFuKGRhdGEsIGNvdW50LCB0eXBlLCBp
bmRpY2VzLCBiYXNlVmVydGV4LCBpbnN0YW5jZXMpOwogICAgIH0KIAogICAgIGNvbnN0IFByb2dy
YW1EM0QgKnByb2dyYW1EM0QgPSBHZXRJbXBsQXM8UHJvZ3JhbUQzRD4oZGF0YS5nZXRTdGF0ZSgp
LmdldFByb2dyYW0oKSk7CkBAIC0xODMwLDE1ICsxOTc5LDE1IEBAIGdsOjpFcnJvciBSZW5kZXJl
cjExOjpkcmF3RWxlbWVudHNJbXBsKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAgICAg
ICAgICAgICBmb3IgKEdMc2l6ZWkgaSA9IDA7IGkgPCBpbnN0YW5jZXM7IGkrKykKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICBBTkdMRV9UUlkoCi0gICAgICAgICAgICAgICAgICAgIG1J
bnB1dExheW91dENhY2hlLnVwZGF0ZVZlcnRleE9mZnNldHNGb3JQb2ludFNwcml0ZXNFbXVsYXRp
b24obWluSW5kZXgsIGkpKTsKKyAgICAgICAgICAgICAgICAgICAgbUlucHV0TGF5b3V0Q2FjaGUu
dXBkYXRlVmVydGV4T2Zmc2V0c0ZvclBvaW50U3ByaXRlc0VtdWxhdGlvbihzdGFydFZlcnRleCwg
aSkpOwogICAgICAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3SW5kZXhlZEluc3RhbmNl
ZCg2LCBlbGVtZW50c1RvUmVuZGVyLCAwLCAwLCAwKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5E
cmF3SW5kZXhlZEluc3RhbmNlZChjb3VudCwgaW5zdGFuY2VzLCAwLCAtbWluSW5kZXgsIDApOwor
ICAgICAgICAgICAgbURldmljZUNvbnRleHQtPkRyYXdJbmRleGVkSW5zdGFuY2VkKGNvdW50LCBp
bnN0YW5jZXMsIDAsIGJhc2VWZXJ0ZXgsIDApOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAg
ICB9CiAKICAgICAvLyBJZiB0aGUgc2hhZGVyIGlzIHdyaXRpbmcgdG8gZ2xfUG9pbnRTaXplLCB0
aGVuIHBvaW50c3ByaXRlcyBhcmUgYmVpbmcgcmVuZGVyZWQuCkBAIC0xODU4LDE2ICsyMDA3LDE2
MCBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6ZHJhd0VsZW1lbnRzSW1wbChjb25zdCBnbDo6Q29u
dGV4dFN0YXRlICZkYXRhLAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBtRGV2aWNl
Q29udGV4dC0+RHJhd0luZGV4ZWQoY291bnQsIDAsIC1taW5JbmRleCk7CisgICAgICAgIG1EZXZp
Y2VDb250ZXh0LT5EcmF3SW5kZXhlZChjb3VudCwgMCwgYmFzZVZlcnRleCk7CisgICAgfQorICAg
IHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCitib29sIFJlbmRlcmVyMTE6OnN1cHBvcnRzRmFz
dEluZGlyZWN0RHJhdyhjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBHTGVudW0gbW9kZSwgR0xlbnVt
IHR5cGUpCit7CisgICAgY29uc3QgYXV0byAmdmVydGV4QXJyYXkgPSBzdGF0ZS5nZXRWZXJ0ZXhB
cnJheSgpOworICAgIGF1dG8gKnZlcnRleEFycmF5MTEgICAgID0gR2V0SW1wbEFzPFZlcnRleEFy
cmF5MTE+KHZlcnRleEFycmF5KTsKKyAgICAvLyBJbmRpcmVjdCBkcmF3aW5nIGRvZXNuJ3Qgc3Vw
cG9ydCBkeW5hbWljIGF0dHJpYnV0ZSBzdG9yYWdlIHNpbmNlIGl0IG5lZWRzIHRoZSBmaXJzdCBh
bmQgY291bnQKKyAgICAvLyB0byB0cmFuc2xhdGUgd2hlbiBhcHBseVZlcnRleEJ1ZmZlci4gR0xf
TElORV9MT09QIGFuZCBHTF9UUklBTkdMRV9GQU4gYXJlIG5vdCBzdXBwb3J0ZWQKKyAgICAvLyBl
aXRoZXIgc2luY2Ugd2UgbmVlZCB0byBzaW11bGF0ZSB0aGVtIGluIEQzRC4KKyAgICBpZiAodmVy
dGV4QXJyYXkxMS0+aGFzRHluYW1pY0F0dHJpYihzdGF0ZSkgfHwgbW9kZSA9PSBHTF9MSU5FX0xP
T1AgfHwgbW9kZSA9PSBHTF9UUklBTkdMRV9GQU4pCisgICAgeworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgaWYgKHR5cGUgIT0gR0xfTk9ORSkKKyAgICB7CisgICAgICAgIGds
OjpCdWZmZXIgKmVsZW1lbnRBcnJheUJ1ZmZlciA9IHZlcnRleEFycmF5LT5nZXRFbGVtZW50QXJy
YXlCdWZmZXIoKS5nZXQoKTsKKyAgICAgICAgQVNTRVJUKGVsZW1lbnRBcnJheUJ1ZmZlcik7Cisg
ICAgICAgIC8vIE9ubHkgbm9uLXN0cmVhbWluZyBpbmRleCBkYXRhIGNhbiBiZSBkaXJlY3RseSB1
c2VkIHRvIGRvIGluZGlyZWN0IGRyYXcgc2luY2UgdGhleSBkb24ndAorICAgICAgICAvLyBuZWVk
IHRoZSBpbmRpY2VzIGFuZCBjb3VudCBpbmZvcm1hdGlvbnMuIEhlcmUgd2UgZG9uJ3QgY2hlY2sg
d2hldGhlciBpdCByZWFsbHkgaGFzCisgICAgICAgIC8vIHByaW1pdGl2ZSByZXN0YXJ0IGluZGV4
IGluIGl0IHNpbmNlIGl0IGFsc28gbmVlZHMgdG8ga25vdyB0aGUgaW5kZXggcmFuZ2UgYW5kIGNv
dW50LgorICAgICAgICAvLyBTbywgZm9yIGFsbCBvdGhlciBzaXR1YXRpb25zLCB3ZSBmYWxsIGJh
Y2sgdG8gbm9ybWFsIGRyYXcgaW5zdGVhZCBvZiBpbmRpcmVjdCBkcmF3LgorICAgICAgICBib29s
IHByaW1pdGl2ZVJlc3RhcnRXb3JrYXJvdW5kID0gbUluZGV4RGF0YU1hbmFnZXItPnVzZVByaW1p
dGl2ZVJlc3RhcnRXb3JrYXJvdW5kKAorICAgICAgICAgICAgc3RhdGUuaXNQcmltaXRpdmVSZXN0
YXJ0RW5hYmxlZCgpLCB0eXBlKTsKKyAgICAgICAgcmV0dXJuICFtSW5kZXhEYXRhTWFuYWdlci0+
aXNTdHJlYW1pbmdJbmRleERhdGEocHJpbWl0aXZlUmVzdGFydFdvcmthcm91bmQsIHR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVs
ZW1lbnRBcnJheUJ1ZmZlcik7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitnbDo6RXJy
b3IgUmVuZGVyZXIxMTo6ZHJhd0FycmF5c0luZGlyZWN0SW1wbChjb25zdCBnbDo6Q29udGV4dFN0
YXRlICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTHZvaWQgKmluZGlyZWN0KQoreworICAgIGlmIChza2lwRHJhdyhkYXRhLCBtb2Rl
KSkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworICAgIH0KKworICAgIGNv
bnN0IGF1dG8gJmdsU3RhdGUgICAgICAgICAgICA9IGRhdGEuZ2V0U3RhdGUoKTsKKyAgICBnbDo6
QnVmZmVyICpkcmF3SW5kaXJlY3RCdWZmZXIgPSBnbFN0YXRlLmdldERyYXdJbmRpcmVjdEJ1ZmZl
cigpOworICAgIEFTU0VSVChkcmF3SW5kaXJlY3RCdWZmZXIpOworICAgIEJ1ZmZlcjExICpzdG9y
YWdlID0gR2V0SW1wbEFzPEJ1ZmZlcjExPihkcmF3SW5kaXJlY3RCdWZmZXIpOworICAgIHVpbnRw
dHJfdCBvZmZzZXQgID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGluZGlyZWN0KTsKKwor
ICAgIGlmIChzdXBwb3J0c0Zhc3RJbmRpcmVjdERyYXcoZ2xTdGF0ZSwgbW9kZSwgR0xfTk9ORSkp
CisgICAgeworICAgICAgICBhcHBseVZlcnRleEJ1ZmZlcihnbFN0YXRlLCBtb2RlLCAwLCAwLCAw
LCBudWxscHRyKTsKKyAgICAgICAgSUQzRDExQnVmZmVyICpidWZmZXIgPSBudWxscHRyOworICAg
ICAgICBBTkdMRV9UUllfUkVTVUxUKHN0b3JhZ2UtPmdldEJ1ZmZlcihCVUZGRVJfVVNBR0VfSU5E
SVJFQ1QpLCBidWZmZXIpOworICAgICAgICBtRGV2aWNlQ29udGV4dC0+RHJhd0luc3RhbmNlZElu
ZGlyZWN0KGJ1ZmZlciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihvZmZzZXQpKTsKKyAgICAg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAgfQorCisgICAgY29uc3QgdWludDhfdCAqYnVm
ZmVyRGF0YSA9IG51bGxwdHI7CisgICAgQU5HTEVfVFJZKHN0b3JhZ2UtPmdldERhdGEoJmJ1ZmZl
ckRhdGEpKTsKKyAgICBBU1NFUlQoYnVmZmVyRGF0YSk7CisgICAgY29uc3QgZ2w6OkRyYXdBcnJh
eXNJbmRpcmVjdENvbW1hbmQgKmFyZ3MgPQorICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0
IGdsOjpEcmF3QXJyYXlzSW5kaXJlY3RDb21tYW5kICo+KGJ1ZmZlckRhdGEgKyBvZmZzZXQpOwor
ICAgIEdMdWludCBjb3VudCAgICAgPSBhcmdzLT5jb3VudDsKKyAgICBHTHVpbnQgaW5zdGFuY2Vz
ID0gYXJncy0+aW5zdGFuY2VDb3VudDsKKyAgICBHTHVpbnQgZmlyc3QgICAgID0gYXJncy0+Zmly
c3Q7CisKKyAgICBBTkdMRV9UUlkoYXBwbHlWZXJ0ZXhCdWZmZXIoZ2xTdGF0ZSwgbW9kZSwgZmly
c3QsIGNvdW50LCBpbnN0YW5jZXMsIG51bGxwdHIpKTsKKworICAgIGlmIChtb2RlID09IEdMX0xJ
TkVfTE9PUCkKKyAgICB7CisgICAgICAgIHJldHVybiBkcmF3TGluZUxvb3AoZGF0YSwgY291bnQs
IEdMX05PTkUsIG51bGxwdHIsIDAsIGluc3RhbmNlcyk7CisgICAgfQorICAgIGlmIChtb2RlID09
IEdMX1RSSUFOR0xFX0ZBTikKKyAgICB7CisgICAgICAgIHJldHVybiBkcmF3VHJpYW5nbGVGYW4o
ZGF0YSwgY291bnQsIEdMX05PTkUsIG51bGxwdHIsIDAsIGluc3RhbmNlcyk7CisgICAgfQorCisg
ICAgbURldmljZUNvbnRleHQtPkRyYXdJbnN0YW5jZWQoY291bnQsIGluc3RhbmNlcywgMCwgMCk7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK2dsOjpFcnJvciBSZW5kZXJlcjExOjpk
cmF3RWxlbWVudHNJbmRpcmVjdEltcGwoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTHZvaWQgKmluZGlyZWN0KQoreworICAgIGlmIChza2lwRHJhdyhkYXRhLCBtb2RlKSkKKyAg
ICB7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworICAgIH0KKworICAgIGNvbnN0IGF1
dG8gJmdsU3RhdGUgICAgICAgICAgICA9IGRhdGEuZ2V0U3RhdGUoKTsKKyAgICBnbDo6QnVmZmVy
ICpkcmF3SW5kaXJlY3RCdWZmZXIgPSBnbFN0YXRlLmdldERyYXdJbmRpcmVjdEJ1ZmZlcigpOwor
ICAgIEFTU0VSVChkcmF3SW5kaXJlY3RCdWZmZXIpOworICAgIEJ1ZmZlcjExICpzdG9yYWdlID0g
R2V0SW1wbEFzPEJ1ZmZlcjExPihkcmF3SW5kaXJlY3RCdWZmZXIpOworICAgIHVpbnRwdHJfdCBv
ZmZzZXQgID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGluZGlyZWN0KTsKKworICAgIFRy
YW5zbGF0ZWRJbmRleERhdGEgaW5kZXhJbmZvOworICAgIGlmIChzdXBwb3J0c0Zhc3RJbmRpcmVj
dERyYXcoZ2xTdGF0ZSwgbW9kZSwgdHlwZSkpCisgICAgeworICAgICAgICBBTkdMRV9UUlkoYXBw
bHlJbmRleEJ1ZmZlcihkYXRhLCBudWxscHRyLCAwLCBtb2RlLCB0eXBlLCAmaW5kZXhJbmZvKSk7
CisgICAgICAgIEFOR0xFX1RSWShhcHBseVZlcnRleEJ1ZmZlcihnbFN0YXRlLCBtb2RlLCAwLCAw
LCAwLCAmaW5kZXhJbmZvKSk7CisgICAgICAgIElEM0QxMUJ1ZmZlciAqYnVmZmVyID0gbnVsbHB0
cjsKKyAgICAgICAgQU5HTEVfVFJZX1JFU1VMVChzdG9yYWdlLT5nZXRCdWZmZXIoQlVGRkVSX1VT
QUdFX0lORElSRUNUKSwgYnVmZmVyKTsKKyAgICAgICAgbURldmljZUNvbnRleHQtPkRyYXdJbmRl
eGVkSW5zdGFuY2VkSW5kaXJlY3QoYnVmZmVyLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG9m
ZnNldCkpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9Ci0gICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisKKyAgICBjb25zdCB1aW50OF90ICpidWZmZXJEYXRh
ID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUlkoc3RvcmFnZS0+Z2V0RGF0YSgmYnVmZmVyRGF0YSkp
OworICAgIEFTU0VSVChidWZmZXJEYXRhKTsKKworICAgIGNvbnN0IGdsOjpEcmF3RWxlbWVudHNJ
bmRpcmVjdENvbW1hbmQgKmNtZCA9CisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ2w6
OkRyYXdFbGVtZW50c0luZGlyZWN0Q29tbWFuZCAqPihidWZmZXJEYXRhICsgb2Zmc2V0KTsKKyAg
ICBHTHVpbnQgY291bnQgICAgICA9IGNtZC0+Y291bnQ7CisgICAgR0x1aW50IGluc3RhbmNlcyAg
PSBjbWQtPnByaW1Db3VudDsKKyAgICBHTHVpbnQgZmlyc3RJbmRleCA9IGNtZC0+Zmlyc3RJbmRl
eDsKKyAgICBHTGludCBiYXNlVmVydGV4ICA9IGNtZC0+YmFzZVZlcnRleDsKKworICAgIGNvbnN0
IGdsOjpUeXBlICZ0eXBlSW5mbyA9IGdsOjpHZXRUeXBlSW5mbyh0eXBlKTsKKyAgICB1aW50OF90
ICppbmRpY2VzICAgICAgICAgPSBzdGF0aWNfY2FzdDx1aW50OF90ICo+KDApICsgZmlyc3RJbmRl
eCAqIHR5cGVJbmZvLmJ5dGVzOworCisgICAgZ2w6OkJ1ZmZlciAqZWxlbWVudEFycmF5QnVmZmVy
ID0gZ2xTdGF0ZS5nZXRWZXJ0ZXhBcnJheSgpLT5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKS5nZXQo
KTsKKyAgICBBU1NFUlQoZWxlbWVudEFycmF5QnVmZmVyKTsKKyAgICBnbDo6SW5kZXhSYW5nZSBp
bmRleFJhbmdlOworICAgIEFOR0xFX1RSWShlbGVtZW50QXJyYXlCdWZmZXItPmdldEluZGV4UmFu
Z2UodHlwZSwgcmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KGluZGljZXMpLCBjb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsU3RhdGUuaXNQcmlt
aXRpdmVSZXN0YXJ0RW5hYmxlZCgpLCAmaW5kZXhSYW5nZSkpOworCisgICAgaW5kZXhJbmZvLmlu
ZGV4UmFuZ2UgPSBpbmRleFJhbmdlOworICAgIEFOR0xFX1RSWShhcHBseUluZGV4QnVmZmVyKGRh
dGEsIGluZGljZXMsIGNvdW50LCBtb2RlLCB0eXBlLCAmaW5kZXhJbmZvKSk7CisgICAgc2l6ZV90
IHZlcnRleENvdW50ID0gaW5kZXhSYW5nZS52ZXJ0ZXhDb3VudCgpOworICAgIEFOR0xFX1RSWShh
cHBseVZlcnRleEJ1ZmZlcihnbFN0YXRlLCBtb2RlLCBzdGF0aWNfY2FzdDxHTHNpemVpPihpbmRl
eFJhbmdlLnN0YXJ0KSArIGJhc2VWZXJ0ZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHZlcnRleENvdW50KSwgaW5zdGFuY2VzLCAmaW5kZXhJ
bmZvKSk7CisKKyAgICBpbnQgYmFzZVZlcnRleExvY2F0aW9uID0gLXN0YXRpY19jYXN0PGludD4o
aW5kZXhSYW5nZS5zdGFydCk7CisgICAgaWYgKG1vZGUgPT0gR0xfTElORV9MT09QKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGRyYXdMaW5lTG9vcChkYXRhLCBjb3VudCwgdHlwZSwgaW5kaWNlcywg
YmFzZVZlcnRleExvY2F0aW9uLCBpbnN0YW5jZXMpOworICAgIH0KKworICAgIGlmIChtb2RlID09
IEdMX1RSSUFOR0xFX0ZBTikKKyAgICB7CisgICAgICAgIHJldHVybiBkcmF3VHJpYW5nbGVGYW4o
ZGF0YSwgY291bnQsIHR5cGUsIGluZGljZXMsIGJhc2VWZXJ0ZXhMb2NhdGlvbiwgaW5zdGFuY2Vz
KTsKKyAgICB9CisKKyAgICBtRGV2aWNlQ29udGV4dC0+RHJhd0luZGV4ZWRJbnN0YW5jZWQoY291
bnQsIGluc3RhbmNlcywgMCwgYmFzZVZlcnRleExvY2F0aW9uLCAwKTsKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmRyYXdMaW5lTG9vcChjb25z
dCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2
b2lkICppbmRleFBvaW50ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFRyYW5zbGF0ZWRJbmRleERhdGEgKmluZGV4SW5mbywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IGJhc2VWZXJ0ZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBpbnN0YW5jZXMpCiB7CiAgICAgY29uc3QgYXV0byAmZ2xTdGF0ZSAgICAg
ICAgICAgID0gZGF0YS5nZXRTdGF0ZSgpOwpAQCAtMTg4MCw3ICsyMTczLDcgQEAgZ2w6OkVycm9y
IFJlbmRlcmVyMTE6OmRyYXdMaW5lTG9vcChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAog
ICAgIGlmICh0eXBlICE9IEdMX05PTkUgJiYgZWxlbWVudEFycmF5QnVmZmVyKQogICAgIHsKICAg
ICAgICAgQnVmZmVyRDNEICpzdG9yYWdlID0gR2V0SW1wbEFzPEJ1ZmZlckQzRD4oZWxlbWVudEFy
cmF5QnVmZmVyKTsKLSAgICAgICAgaW50cHRyX3Qgb2Zmc2V0ID0gcmVpbnRlcnByZXRfY2FzdDxp
bnRwdHJfdD4oaW5kaWNlcyk7CisgICAgICAgIGludHB0cl90IG9mZnNldCAgICA9IHJlaW50ZXJw
cmV0X2Nhc3Q8aW50cHRyX3Q+KGluZGljZXMpOwogCiAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmJ1
ZmZlckRhdGEgPSBOVUxMOwogICAgICAgICBBTkdMRV9UUlkoc3RvcmFnZS0+Z2V0RGF0YSgmYnVm
ZmVyRGF0YSkpOwpAQCAtMTg5MSw3ICsyMTg0LDggQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmRy
YXdMaW5lTG9vcChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgIGlmICghbUxpbmVM
b29wSUIpCiAgICAgewogICAgICAgICBtTGluZUxvb3BJQiA9IG5ldyBTdHJlYW1pbmdJbmRleEJ1
ZmZlckludGVyZmFjZSh0aGlzKTsKLSAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gbUxpbmVMb29w
SUItPnJlc2VydmVCdWZmZXJTcGFjZShJTklUSUFMX0lOREVYX0JVRkZFUl9TSVpFLCBHTF9VTlNJ
R05FRF9JTlQpOworICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPQorICAgICAgICAgICAgbUxpbmVM
b29wSUItPnJlc2VydmVCdWZmZXJTcGFjZShJTklUSUFMX0lOREVYX0JVRkZFUl9TSVpFLCBHTF9V
TlNJR05FRF9JTlQpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7CiAg
ICAgICAgICAgICBTYWZlRGVsZXRlKG1MaW5lTG9vcElCKTsKQEAgLTE5MDIsOSArMjE5NiwxMiBA
QCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6ZHJhd0xpbmVMb29wKGNvbnN0IGdsOjpDb250ZXh0U3Rh
dGUgJmRhdGEsCiAgICAgLy8gQ2hlY2tlZCBieSBSZW5kZXJlcjExOjphcHBseVByaW1pdGl2ZVR5
cGUKICAgICBBU1NFUlQoY291bnQgPj0gMCk7CiAKLSAgICBpZiAoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgaW50Pihjb3VudCkgKyAxID4gKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgaW50Pjo6
bWF4KCkgLyBzaXplb2YodW5zaWduZWQgaW50KSkpCisgICAgaWYgKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGludD4oY291bnQpICsgMSA+CisgICAgICAgIChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkIGludD46Om1heCgpIC8gc2l6ZW9mKHVuc2lnbmVkIGludCkpKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSBhIDMy
LWJpdCBsb29waW5nIGluZGV4IGJ1ZmZlciBmb3IgR0xfTElORV9MT09QLCB0b28gbWFueSBpbmRp
Y2VzIHJlcXVpcmVkLiIpOworICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1P
UlksCisgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgYSAzMi1iaXQg
bG9vcGluZyBpbmRleCBidWZmZXIgZm9yIEdMX0xJTkVfTE9PUCwgdG9vICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAibWFueSBpbmRpY2VzIHJlcXVpcmVkLiIpOwogICAgIH0KIAogICAgIEdl
dExpbmVMb29wSW5kaWNlcyhpbmRpY2VzLCB0eXBlLCBzdGF0aWNfY2FzdDxHTHVpbnQ+KGNvdW50
KSwKQEAgLTE5MTQsNyArMjIxMSw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3TGluZUxv
b3AoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50PihzaXplb2YoR0x1aW50KSAqIG1TY3JhdGNoSW5kZXhEYXRhQnVmZmVyLnNpemUo
KSk7CiAgICAgQU5HTEVfVFJZKG1MaW5lTG9vcElCLT5yZXNlcnZlQnVmZmVyU3BhY2Uoc3BhY2VO
ZWVkZWQsIEdMX1VOU0lHTkVEX0lOVCkpOwogCi0gICAgdm9pZCogbWFwcGVkTWVtb3J5ID0gTlVM
TDsKKyAgICB2b2lkICptYXBwZWRNZW1vcnkgPSBOVUxMOwogICAgIHVuc2lnbmVkIGludCBvZmZz
ZXQ7CiAgICAgQU5HTEVfVFJZKG1MaW5lTG9vcElCLT5tYXBCdWZmZXIoc3BhY2VOZWVkZWQsICZt
YXBwZWRNZW1vcnksICZvZmZzZXQpKTsKIApAQCAtMTkyNCwyOSArMjIyMSwyOCBAQCBnbDo6RXJy
b3IgUmVuZGVyZXIxMTo6ZHJhd0xpbmVMb29wKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEs
CiAKICAgICBBTkdMRV9UUlkobUxpbmVMb29wSUItPnVubWFwQnVmZmVyKCkpOwogCi0gICAgSW5k
ZXhCdWZmZXIxMSAqaW5kZXhCdWZmZXIgPSBHZXRBczxJbmRleEJ1ZmZlcjExPihtTGluZUxvb3BJ
Qi0+Z2V0SW5kZXhCdWZmZXIoKSk7CisgICAgSW5kZXhCdWZmZXIxMSAqaW5kZXhCdWZmZXIgICA9
IEdldEFzPEluZGV4QnVmZmVyMTE+KG1MaW5lTG9vcElCLT5nZXRJbmRleEJ1ZmZlcigpKTsKICAg
ICBJRDNEMTFCdWZmZXIgKmQzZEluZGV4QnVmZmVyID0gaW5kZXhCdWZmZXItPmdldEJ1ZmZlcigp
OwotICAgIERYR0lfRk9STUFUIGluZGV4Rm9ybWF0ID0gaW5kZXhCdWZmZXItPmdldEluZGV4Rm9y
bWF0KCk7CisgICAgRFhHSV9GT1JNQVQgaW5kZXhGb3JtYXQgICAgICA9IGluZGV4QnVmZmVyLT5n
ZXRJbmRleEZvcm1hdCgpOwogCiAgICAgaWYgKG1BcHBsaWVkSUIgIT0gZDNkSW5kZXhCdWZmZXIg
fHwgbUFwcGxpZWRJQkZvcm1hdCAhPSBpbmRleEZvcm1hdCB8fAogICAgICAgICBtQXBwbGllZElC
T2Zmc2V0ICE9IG9mZnNldCkKICAgICB7CiAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5JQVNldElu
ZGV4QnVmZmVyKGQzZEluZGV4QnVmZmVyLCBpbmRleEZvcm1hdCwgb2Zmc2V0KTsKLSAgICAgICAg
bUFwcGxpZWRJQiA9IGQzZEluZGV4QnVmZmVyOworICAgICAgICBtQXBwbGllZElCICAgICAgID0g
ZDNkSW5kZXhCdWZmZXI7CiAgICAgICAgIG1BcHBsaWVkSUJGb3JtYXQgPSBpbmRleEZvcm1hdDsK
ICAgICAgICAgbUFwcGxpZWRJQk9mZnNldCA9IG9mZnNldDsKICAgICB9CiAKLSAgICBJTlQgYmFz
ZVZlcnRleExvY2F0aW9uID0gKGluZGV4SW5mbyA/IC1zdGF0aWNfY2FzdDxpbnQ+KGluZGV4SW5m
by0+aW5kZXhSYW5nZS5zdGFydCkgOiAwKTsKLSAgICBVSU5UIGluZGV4Q291bnQgPSBzdGF0aWNf
Y2FzdDxVSU5UPihtU2NyYXRjaEluZGV4RGF0YUJ1ZmZlci5zaXplKCkpOworICAgIFVJTlQgaW5k
ZXhDb3VudCAgICAgICAgPSBzdGF0aWNfY2FzdDxVSU5UPihtU2NyYXRjaEluZGV4RGF0YUJ1ZmZl
ci5zaXplKCkpOwogCiAgICAgaWYgKGluc3RhbmNlcyA+IDApCiAgICAgewotICAgICAgICBtRGV2
aWNlQ29udGV4dC0+RHJhd0luZGV4ZWRJbnN0YW5jZWQoaW5kZXhDb3VudCwgaW5zdGFuY2VzLCAw
LCBiYXNlVmVydGV4TG9jYXRpb24sIDApOworICAgICAgICBtRGV2aWNlQ29udGV4dC0+RHJhd0lu
ZGV4ZWRJbnN0YW5jZWQoaW5kZXhDb3VudCwgaW5zdGFuY2VzLCAwLCBiYXNlVmVydGV4LCAwKTsK
ICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgbURldmljZUNvbnRleHQtPkRyYXdJbmRl
eGVkKGluZGV4Q291bnQsIDAsIGJhc2VWZXJ0ZXhMb2NhdGlvbik7CisgICAgICAgIG1EZXZpY2VD
b250ZXh0LT5EcmF3SW5kZXhlZChpbmRleENvdW50LCAwLCBiYXNlVmVydGV4KTsKICAgICB9CiAK
ICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKQEAgLTE5NTYsNyArMjI1Miw3IEBAIGdsOjpFcnJv
ciBSZW5kZXJlcjExOjpkcmF3VHJpYW5nbGVGYW4oY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0
YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pbkluZGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZVZlcnRleCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluc3RhbmNlcykKIHsKICAgICBn
bDo6VmVydGV4QXJyYXkgKnZhbyAgICAgICAgICAgPSBkYXRhLmdldFN0YXRlKCkuZ2V0VmVydGV4
QXJyYXkoKTsKQEAgLTE5NjgsNyArMjI2NCw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3
VHJpYW5nbGVGYW4oY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICBpZiAodHlwZSAh
PSBHTF9OT05FICYmIGVsZW1lbnRBcnJheUJ1ZmZlcikKICAgICB7CiAgICAgICAgIEJ1ZmZlckQz
RCAqc3RvcmFnZSA9IEdldEltcGxBczxCdWZmZXJEM0Q+KGVsZW1lbnRBcnJheUJ1ZmZlcik7Ci0g
ICAgICAgIGludHB0cl90IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluZGlj
ZXMpOworICAgICAgICBpbnRwdHJfdCBvZmZzZXQgICAgPSByZWludGVycHJldF9jYXN0PGludHB0
cl90PihpbmRpY2VzKTsKIAogICAgICAgICBjb25zdCB1aW50OF90ICpidWZmZXJEYXRhID0gTlVM
TDsKICAgICAgICAgQU5HTEVfVFJZKHN0b3JhZ2UtPmdldERhdGEoJmJ1ZmZlckRhdGEpKTsKQEAg
LTE5NzksNyArMjI3NSw4IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3VHJpYW5nbGVGYW4o
Y29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICBpZiAoIW1UcmlhbmdsZUZhbklCKQog
ICAgIHsKICAgICAgICAgbVRyaWFuZ2xlRmFuSUIgPSBuZXcgU3RyZWFtaW5nSW5kZXhCdWZmZXJJ
bnRlcmZhY2UodGhpcyk7Ci0gICAgICAgIGdsOjpFcnJvciBlcnJvciA9IG1UcmlhbmdsZUZhbklC
LT5yZXNlcnZlQnVmZmVyU3BhY2UoSU5JVElBTF9JTkRFWF9CVUZGRVJfU0laRSwgR0xfVU5TSUdO
RURfSU5UKTsKKyAgICAgICAgZ2w6OkVycm9yIGVycm9yID0KKyAgICAgICAgICAgIG1Ucmlhbmds
ZUZhbklCLT5yZXNlcnZlQnVmZmVyU3BhY2UoSU5JVElBTF9JTkRFWF9CVUZGRVJfU0laRSwgR0xf
VU5TSUdORURfSU5UKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewog
ICAgICAgICAgICAgU2FmZURlbGV0ZShtVHJpYW5nbGVGYW5JQik7CkBAIC0xOTk0LDcgKzIyOTEs
OSBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6ZHJhd1RyaWFuZ2xlRmFuKGNvbnN0IGdsOjpDb250
ZXh0U3RhdGUgJmRhdGEsCiAKICAgICBpZiAobnVtVHJpcyA+IChzdGQ6Om51bWVyaWNfbGltaXRz
PHVuc2lnbmVkIGludD46Om1heCgpIC8gKHNpemVvZih1bnNpZ25lZCBpbnQpICogMykpKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRv
IGNyZWF0ZSBhIHNjcmF0Y2ggaW5kZXggYnVmZmVyIGZvciBHTF9UUklBTkdMRV9GQU4sIHRvbyBt
YW55IGluZGljZXMgcmVxdWlyZWQuIik7CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VU
X09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBh
IHNjcmF0Y2ggaW5kZXggYnVmZmVyIGZvciBHTF9UUklBTkdMRV9GQU4sIHRvbyBtYW55ICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAiaW5kaWNlcyByZXF1aXJlZC4iKTsKICAgICB9CiAKICAg
ICBHZXRUcmlGYW5JbmRpY2VzKGluZGV4UG9pbnRlciwgdHlwZSwgY291bnQsIGRhdGEuZ2V0U3Rh
dGUoKS5pc1ByaW1pdGl2ZVJlc3RhcnRFbmFibGVkKCksCkBAIC0yMDEyLDE1ICsyMzExLDE1IEBA
IGdsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3VHJpYW5nbGVGYW4oY29uc3QgZ2w6OkNvbnRleHRT
dGF0ZSAmZGF0YSwKIAogICAgIEFOR0xFX1RSWShtVHJpYW5nbGVGYW5JQi0+dW5tYXBCdWZmZXIo
KSk7CiAKLSAgICBJbmRleEJ1ZmZlcjExICppbmRleEJ1ZmZlciA9IEdldEFzPEluZGV4QnVmZmVy
MTE+KG1UcmlhbmdsZUZhbklCLT5nZXRJbmRleEJ1ZmZlcigpKTsKKyAgICBJbmRleEJ1ZmZlcjEx
ICppbmRleEJ1ZmZlciAgID0gR2V0QXM8SW5kZXhCdWZmZXIxMT4obVRyaWFuZ2xlRmFuSUItPmdl
dEluZGV4QnVmZmVyKCkpOwogICAgIElEM0QxMUJ1ZmZlciAqZDNkSW5kZXhCdWZmZXIgPSBpbmRl
eEJ1ZmZlci0+Z2V0QnVmZmVyKCk7Ci0gICAgRFhHSV9GT1JNQVQgaW5kZXhGb3JtYXQgPSBpbmRl
eEJ1ZmZlci0+Z2V0SW5kZXhGb3JtYXQoKTsKKyAgICBEWEdJX0ZPUk1BVCBpbmRleEZvcm1hdCAg
ICAgID0gaW5kZXhCdWZmZXItPmdldEluZGV4Rm9ybWF0KCk7CiAKICAgICBpZiAobUFwcGxpZWRJ
QiAhPSBkM2RJbmRleEJ1ZmZlciB8fCBtQXBwbGllZElCRm9ybWF0ICE9IGluZGV4Rm9ybWF0IHx8
CiAgICAgICAgIG1BcHBsaWVkSUJPZmZzZXQgIT0gb2Zmc2V0KQogICAgIHsKICAgICAgICAgbURl
dmljZUNvbnRleHQtPklBU2V0SW5kZXhCdWZmZXIoZDNkSW5kZXhCdWZmZXIsIGluZGV4Rm9ybWF0
LCBvZmZzZXQpOwotICAgICAgICBtQXBwbGllZElCID0gZDNkSW5kZXhCdWZmZXI7CisgICAgICAg
IG1BcHBsaWVkSUIgICAgICAgPSBkM2RJbmRleEJ1ZmZlcjsKICAgICAgICAgbUFwcGxpZWRJQkZv
cm1hdCA9IGluZGV4Rm9ybWF0OwogICAgICAgICBtQXBwbGllZElCT2Zmc2V0ID0gb2Zmc2V0Owog
ICAgIH0KQEAgLTIwMjksMTEgKzIzMjgsMTEgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmRyYXdU
cmlhbmdsZUZhbihjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogCiAgICAgaWYgKGluc3Rh
bmNlcyA+IDApCiAgICAgewotICAgICAgICBtRGV2aWNlQ29udGV4dC0+RHJhd0luZGV4ZWRJbnN0
YW5jZWQoaW5kZXhDb3VudCwgaW5zdGFuY2VzLCAwLCAtbWluSW5kZXgsIDApOworICAgICAgICBt
RGV2aWNlQ29udGV4dC0+RHJhd0luZGV4ZWRJbnN0YW5jZWQoaW5kZXhDb3VudCwgaW5zdGFuY2Vz
LCAwLCBiYXNlVmVydGV4LCAwKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgbURl
dmljZUNvbnRleHQtPkRyYXdJbmRleGVkKGluZGV4Q291bnQsIDAsIC1taW5JbmRleCk7CisgICAg
ICAgIG1EZXZpY2VDb250ZXh0LT5EcmF3SW5kZXhlZChpbmRleENvdW50LCAwLCBiYXNlVmVydGV4
KTsKICAgICB9CiAKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKQEAgLTIwNDEsNiArMjM0MCw5
IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpkcmF3VHJpYW5nbGVGYW4oY29uc3QgZ2w6OkNvbnRl
eHRTdGF0ZSAmZGF0YSwKIAogZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmFwcGx5U2hhZGVycyhjb25z
dCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBHTGVudW0gZHJhd01vZGUpCiB7CisgICAgLy8gVGhp
cyBtZXRob2QgaXMgY2FsbGVkIHNpbmdsZS10aHJlYWRlZC4KKyAgICBBTkdMRV9UUlkoZW5zdXJl
SExTTENvbXBpbGVySW5pdGlhbGl6ZWQoKSk7CisKICAgICBjb25zdCBhdXRvICZnbFN0YXRlICAg
ID0gZGF0YS5nZXRTdGF0ZSgpOwogICAgIFByb2dyYW1EM0QgKnByb2dyYW1EM0QgPSBHZXRJbXBs
QXM8UHJvZ3JhbUQzRD4oZ2xTdGF0ZS5nZXRQcm9ncmFtKCkpOwogICAgIHByb2dyYW1EM0QtPnVw
ZGF0ZUNhY2hlZElucHV0TGF5b3V0KGdsU3RhdGUpOwpAQCAtMjA4OCwyMSArMjM5MCwyMSBAQCBn
bDo6RXJyb3IgUmVuZGVyZXIxMTo6YXBwbHlTaGFkZXJzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUg
JmRhdGEsIEdMZW51bSBkcmF3TW9kZQogICAgIHsKICAgICAgICAgbURldmljZUNvbnRleHQtPlZT
U2V0U2hhZGVyKHZlcnRleFNoYWRlciwgbnVsbHB0ciwgMCk7CiAgICAgICAgIG1BcHBsaWVkVmVy
dGV4U2hhZGVyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHZlcnRleFNoYWRlcik7Ci0g
ICAgICAgIGRpcnR5VW5pZm9ybXMgPSB0cnVlOworICAgICAgICBkaXJ0eVVuaWZvcm1zICAgICAg
ICA9IHRydWU7CiAgICAgfQogCiAgICAgaWYgKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihn
ZW9tZXRyeVNoYWRlcikgIT0gbUFwcGxpZWRHZW9tZXRyeVNoYWRlcikKICAgICB7CiAgICAgICAg
IG1EZXZpY2VDb250ZXh0LT5HU1NldFNoYWRlcihnZW9tZXRyeVNoYWRlciwgbnVsbHB0ciwgMCk7
CiAgICAgICAgIG1BcHBsaWVkR2VvbWV0cnlTaGFkZXIgPSByZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4oZ2VvbWV0cnlTaGFkZXIpOwotICAgICAgICBkaXJ0eVVuaWZvcm1zID0gdHJ1ZTsKKyAg
ICAgICAgZGlydHlVbmlmb3JtcyAgICAgICAgICA9IHRydWU7CiAgICAgfQogCiAgICAgaWYgKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihwaXhlbFNoYWRlcikgIT0gbUFwcGxpZWRQaXhlbFNo
YWRlcikKICAgICB7CiAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5QU1NldFNoYWRlcihwaXhlbFNo
YWRlciwgbnVsbHB0ciwgMCk7CiAgICAgICAgIG1BcHBsaWVkUGl4ZWxTaGFkZXIgPSByZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4ocGl4ZWxTaGFkZXIpOwotICAgICAgICBkaXJ0eVVuaWZvcm1z
ID0gdHJ1ZTsKKyAgICAgICAgZGlydHlVbmlmb3JtcyAgICAgICA9IHRydWU7CiAgICAgfQogCiAg
ICAgaWYgKGRpcnR5VW5pZm9ybXMpCkBAIC0yMTIxLDcgKzI0MjMsNyBAQCBnbDo6RXJyb3IgUmVu
ZGVyZXIxMTo6YXBwbHlVbmlmb3Jtcyhjb25zdCBQcm9ncmFtRDNEICZwcm9ncmFtRDNELAogICAg
IHVuc2lnbmVkIGludCB0b3RhbFJlZ2lzdGVyQ291bnRQUyA9IDA7CiAKICAgICBib29sIHZlcnRl
eFVuaWZvcm1zRGlydHkgPSBmYWxzZTsKLSAgICBib29sIHBpeGVsVW5pZm9ybXNEaXJ0eSA9IGZh
bHNlOworICAgIGJvb2wgcGl4ZWxVbmlmb3Jtc0RpcnR5ICA9IGZhbHNlOwogCiAgICAgZm9yIChj
b25zdCBEM0RVbmlmb3JtICp1bmlmb3JtIDogdW5pZm9ybUFycmF5KQogICAgIHsKQEAgLTIxNDYs
MTYgKzI0NDgsMTYgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmFwcGx5VW5pZm9ybXMoY29uc3Qg
UHJvZ3JhbUQzRCAmcHJvZ3JhbUQzRCwKICAgICBBU1NFUlQoZnJhZ21lbnRVbmlmb3JtU3RvcmFn
ZSk7CiAKICAgICBJRDNEMTFCdWZmZXIgKnZlcnRleENvbnN0YW50QnVmZmVyID0gdmVydGV4VW5p
Zm9ybVN0b3JhZ2UtPmdldENvbnN0YW50QnVmZmVyKCk7Ci0gICAgSUQzRDExQnVmZmVyICpwaXhl
bENvbnN0YW50QnVmZmVyID0gZnJhZ21lbnRVbmlmb3JtU3RvcmFnZS0+Z2V0Q29uc3RhbnRCdWZm
ZXIoKTsKKyAgICBJRDNEMTFCdWZmZXIgKnBpeGVsQ29uc3RhbnRCdWZmZXIgID0gZnJhZ21lbnRV
bmlmb3JtU3RvcmFnZS0+Z2V0Q29uc3RhbnRCdWZmZXIoKTsKIAotICAgIGZsb2F0ICgqbWFwVlMp
WzRdID0gTlVMTDsKLSAgICBmbG9hdCAoKm1hcFBTKVs0XSA9IE5VTEw7CisgICAgZmxvYXQoKm1h
cFZTKVs0XSA9IE5VTEw7CisgICAgZmxvYXQoKm1hcFBTKVs0XSA9IE5VTEw7CiAKICAgICBpZiAo
dG90YWxSZWdpc3RlckNvdW50VlMgPiAwICYmIHZlcnRleFVuaWZvcm1zRGlydHkpCiAgICAgewog
ICAgICAgICBEM0QxMV9NQVBQRURfU1VCUkVTT1VSQ0UgbWFwID0gezB9OwotICAgICAgICBIUkVT
VUxUIHJlc3VsdCA9IG1EZXZpY2VDb250ZXh0LT5NYXAodmVydGV4Q29uc3RhbnRCdWZmZXIsIDAs
IEQzRDExX01BUF9XUklURV9ESVNDQVJELCAwLCAmbWFwKTsKLSAgICAgICAgVU5VU0VEX0FTU0VS
VElPTl9WQVJJQUJMRShyZXN1bHQpOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9CisgICAgICAg
ICAgICBtRGV2aWNlQ29udGV4dC0+TWFwKHZlcnRleENvbnN0YW50QnVmZmVyLCAwLCBEM0QxMV9N
QVBfV1JJVEVfRElTQ0FSRCwgMCwgJm1hcCk7CiAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVz
dWx0KSk7CiAgICAgICAgIG1hcFZTID0gKGZsb2F0KCopWzRdKW1hcC5wRGF0YTsKICAgICB9CkBA
IC0yMTYzLDggKzI0NjUsOCBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6YXBwbHlVbmlmb3Jtcyhj
b25zdCBQcm9ncmFtRDNEICZwcm9ncmFtRDNELAogICAgIGlmICh0b3RhbFJlZ2lzdGVyQ291bnRQ
UyA+IDAgJiYgcGl4ZWxVbmlmb3Jtc0RpcnR5KQogICAgIHsKICAgICAgICAgRDNEMTFfTUFQUEVE
X1NVQlJFU09VUkNFIG1hcCA9IHswfTsKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNl
Q29udGV4dC0+TWFwKHBpeGVsQ29uc3RhbnRCdWZmZXIsIDAsIEQzRDExX01BUF9XUklURV9ESVND
QVJELCAwLCAmbWFwKTsKLSAgICAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShyZXN1bHQp
OworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9CisgICAgICAgICAgICBtRGV2aWNlQ29udGV4dC0+
TWFwKHBpeGVsQ29uc3RhbnRCdWZmZXIsIDAsIEQzRDExX01BUF9XUklURV9ESVNDQVJELCAwLCAm
bWFwKTsKICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKICAgICAgICAgbWFwUFMg
PSAoZmxvYXQoKilbNF0pbWFwLnBEYXRhOwogICAgIH0KQEAgLTIyMjcsNyArMjUyOSw5IEBAIGds
OjpFcnJvciBSZW5kZXJlcjExOjphcHBseVVuaWZvcm1zKGNvbnN0IFByb2dyYW1EM0QgJnByb2dy
YW1EM0QsCiAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CiAgICAgICAgIGlmIChG
QUlMRUQocmVzdWx0KSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSB2ZXJ0ZXggc2hhZGVyIGNvbnN0YW50
IGJ1ZmZlciwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJG
YWlsZWQgdG8gY3JlYXRlIHZlcnRleCBzaGFkZXIgY29uc3RhbnQgYnVmZmVyLCByZXN1bHQ6IDB4
JVguIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKICAgICAgICAgfQog
ICAgICAgICBtRGV2aWNlQ29udGV4dC0+VlNTZXRDb25zdGFudEJ1ZmZlcnMoZDNkMTE6OlJFU0VS
VkVEX0NPTlNUQU5UX0JVRkZFUl9TTE9UX0RSSVZFUiwgMSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZtRHJpdmVyQ29uc3RhbnRCdWZmZXJWUyk7CkBAIC0y
MjQyLDcgKzI1NDYsOSBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6YXBwbHlVbmlmb3Jtcyhjb25z
dCBQcm9ncmFtRDNEICZwcm9ncmFtRDNELAogICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3Vs
dCkpOwogICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgcGl4
ZWwgc2hhZGVyIGNvbnN0YW50IGJ1ZmZlciwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAg
ICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIHBpeGVsIHNoYWRlciBjb25zdGFudCBi
dWZmZXIsIHJlc3VsdDogMHglWC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHQpOwogICAgICAgICB9CiAgICAgICAgIG1EZXZpY2VDb250ZXh0LT5QU1NldENvbnN0YW50QnVm
ZmVycyhkM2QxMTo6UkVTRVJWRURfQ09OU1RBTlRfQlVGRkVSX1NMT1RfRFJJVkVSLCAxLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1Ecml2ZXJDb25zdGFu
dEJ1ZmZlclBTKTsKQEAgLTIyNTEsMTMgKzI1NTcsMTMgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6
OmFwcGx5VW5pZm9ybXMoY29uc3QgUHJvZ3JhbUQzRCAmcHJvZ3JhbUQzRCwKICAgICAvLyBTYW1w
bGVyIG1ldGFkYXRhIGFuZCBkcml2ZXIgY29uc3RhbnRzIG5lZWQgdG8gY29leGlzdCBpbiB0aGUg
c2FtZSBjb25zdGFudCBidWZmZXIgdG8gY29uc2VydmUKICAgICAvLyBjb25zdGFudCBidWZmZXIg
c2xvdHMuIFdlIHVwZGF0ZSBib3RoIGluIHRoZSBjb25zdGFudCBidWZmZXIgaWYgbmVlZGVkLgog
ICAgIGNvbnN0IGR4X1ZlcnRleENvbnN0YW50czExICZ2ZXJ0ZXhDb25zdGFudHMgPSBtU3RhdGVN
YW5hZ2VyLmdldFZlcnRleENvbnN0YW50cygpOwotICAgIHNpemVfdCBzYW1wbGVyTWV0YWRhdGFS
ZWZlcmVuY2VkQnl0ZXNWUyA9IHNpemVvZihTYW1wbGVyTWV0YWRhdGFEM0QxMTo6ZHhfU2FtcGxl
ck1ldGFkYXRhKSAqCisgICAgc2l6ZV90IHNhbXBsZXJNZXRhZGF0YVJlZmVyZW5jZWRCeXRlc1ZT
ICAgICA9IHNpemVvZihTYW1wbGVyTWV0YWRhdGFEM0QxMTo6ZHhfU2FtcGxlck1ldGFkYXRhKSAq
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbUQz
RC5nZXRVc2VkU2FtcGxlclJhbmdlKGdsOjpTQU1QTEVSX1ZFUlRFWCk7CiAgICAgYXBwbHlEcml2
ZXJDb25zdGFudHNJZk5lZWRlZCgmbUFwcGxpZWRWZXJ0ZXhDb25zdGFudHMsIHZlcnRleENvbnN0
YW50cywgJm1TYW1wbGVyTWV0YWRhdGFWUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNhbXBsZXJNZXRhZGF0YVJlZmVyZW5jZWRCeXRlc1ZTLCBtRHJpdmVyQ29uc3RhbnRCdWZm
ZXJWUyk7CiAKICAgICBjb25zdCBkeF9QaXhlbENvbnN0YW50czExICZwaXhlbENvbnN0YW50cyA9
IG1TdGF0ZU1hbmFnZXIuZ2V0UGl4ZWxDb25zdGFudHMoKTsKLSAgICBzaXplX3Qgc2FtcGxlck1l
dGFkYXRhUmVmZXJlbmNlZEJ5dGVzUFMgPSBzaXplb2YoU2FtcGxlck1ldGFkYXRhRDNEMTE6OmR4
X1NhbXBsZXJNZXRhZGF0YSkgKgorICAgIHNpemVfdCBzYW1wbGVyTWV0YWRhdGFSZWZlcmVuY2Vk
Qnl0ZXNQUyAgID0gc2l6ZW9mKFNhbXBsZXJNZXRhZGF0YUQzRDExOjpkeF9TYW1wbGVyTWV0YWRh
dGEpICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9n
cmFtRDNELmdldFVzZWRTYW1wbGVyUmFuZ2UoZ2w6OlNBTVBMRVJfUElYRUwpOwogICAgIGFwcGx5
RHJpdmVyQ29uc3RhbnRzSWZOZWVkZWQoJm1BcHBsaWVkUGl4ZWxDb25zdGFudHMsIHBpeGVsQ29u
c3RhbnRzLCAmbVNhbXBsZXJNZXRhZGF0YVBTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2FtcGxlck1ldGFkYXRhUmVmZXJlbmNlZEJ5dGVzUFMsIG1Ecml2ZXJDb25zdGFudEJ1
ZmZlclBTKTsKQEAgLTIyNzQsNyArMjU4MCw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjphcHBs
eVVuaWZvcm1zKGNvbnN0IFByb2dyYW1EM0QgJnByb2dyYW1EM0QsCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAogLy8gU2FtcGxlck1ldGFkYXRhRDNEMTEgaW1wbGVtZW50YXRpb24KQEAg
LTIzMjksNyArMjYzNSw3IEBAIHZvaWQgUmVuZGVyZXIxMTo6U2FtcGxlck1ldGFkYXRhRDNEMTE6
OnVwZGF0ZSh1bnNpZ25lZCBpbnQgc2FtcGxlckluZGV4LCBjb25zdCBnCiAgICAgICAgIGNhc2Ug
R0xfUjE2SToKICAgICAgICAgY2FzZSBHTF9SMTZVSToKICAgICAgICAgICAgIG5lZWRJbnRlZ2Vy
VGV4dHVyZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICAgICAgICAgIGludGVybmFsRm9ybWF0Qml0cyAg
ICAgPSAxNjsKKyAgICAgICAgICAgIGludGVybmFsRm9ybWF0Qml0cyAgICAgICAgID0gMTY7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHTF9SR0JBOEk6CiAgICAgICAgIGNhc2Ug
R0xfUkdCQThVSToKQEAgLTIzNDAsMTEgKzI2NDYsMTEgQEAgdm9pZCBSZW5kZXJlcjExOjpTYW1w
bGVyTWV0YWRhdGFEM0QxMTo6dXBkYXRlKHVuc2lnbmVkIGludCBzYW1wbGVySW5kZXgsIGNvbnN0
IGcKICAgICAgICAgY2FzZSBHTF9SOEk6CiAgICAgICAgIGNhc2UgR0xfUjhVSToKICAgICAgICAg
ICAgIG5lZWRJbnRlZ2VyVGV4dHVyZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICAgICAgICAgIGludGVy
bmFsRm9ybWF0Qml0cyAgICAgPSA4OworICAgICAgICAgICAgaW50ZXJuYWxGb3JtYXRCaXRzICAg
ICAgICAgPSA4OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR0xfUkdCMTBfQTJV
SToKICAgICAgICAgICAgIG5lZWRJbnRlZ2VyVGV4dHVyZU1ldGFkYXRhID0gdHJ1ZTsKLSAgICAg
ICAgICAgIGludGVybmFsRm9ybWF0Qml0cyAgICAgPSAxMDsKKyAgICAgICAgICAgIGludGVybmFs
Rm9ybWF0Qml0cyAgICAgICAgID0gMTA7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM5OCw3ICsyNzA0LDYgQEAgdm9pZCBSZW5k
ZXJlcjExOjphcHBseURyaXZlckNvbnN0YW50c0lmTmVlZGVkKFRTaGFkZXJDb25zdGFudHMgKmFw
cGxpZWRDb25zdGFudHMKICAgICAgICAgSFJFU1VMVCByZXN1bHQgPQogICAgICAgICAgICAgbURl
dmljZUNvbnRleHQtPk1hcChkcml2ZXJDb25zdGFudEJ1ZmZlciwgMCwgRDNEMTFfTUFQX1dSSVRF
X0RJU0NBUkQsIDAsICZtYXBwaW5nKTsKICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQp
KTsKLSAgICAgICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShyZXN1bHQpOwogICAgICAgICBt
ZW1jcHkobWFwcGluZy5wRGF0YSwgYXBwbGllZENvbnN0YW50cywgc2l6ZW9mKFRTaGFkZXJDb25z
dGFudHMpKTsKICAgICAgICAgLy8gUHJldmlvdXMgYnVmZmVyIGNvbnRlbnRzIHdlcmUgZGlzY2Fy
ZGVkLCBzbyB3ZSBuZWVkIHRvIHJlZnJlc2ggYWxzbyB0aGUgYXJlYSBvZiB0aGUKICAgICAgICAg
Ly8gYnVmZmVyIHRoYXQgaXNuJ3QgdXNlZCBieSB0aGlzIHByb2dyYW0uCkBAIC0yNDM5LDcgKzI3
NDQsNyBAQCB2b2lkIFJlbmRlcmVyMTE6Om1hcmtBbGxTdGF0ZURpcnR5KCkKIAogICAgIG1TdGF0
ZU1hbmFnZXIuaW52YWxpZGF0ZUV2ZXJ5dGhpbmcoKTsKIAotICAgIG1BcHBsaWVkSUIgPSBOVUxM
OworICAgIG1BcHBsaWVkSUIgICAgICAgPSBOVUxMOwogICAgIG1BcHBsaWVkSUJGb3JtYXQgPSBE
WEdJX0ZPUk1BVF9VTktOT1dOOwogICAgIG1BcHBsaWVkSUJPZmZzZXQgPSAwOwogCkBAIC0yNDU2
LDE2ICsyNzYxLDE2IEBAIHZvaWQgUmVuZGVyZXIxMTo6bWFya0FsbFN0YXRlRGlydHkoKQogCiAg
ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBnbDo6SU1QTEVNRU5UQVRJT05fTUFYX1ZF
UlRFWF9TSEFERVJfVU5JRk9STV9CVUZGRVJTOyBpKyspCiAgICAgewotICAgICAgICBtQ3VycmVu
dENvbnN0YW50QnVmZmVyVlNbaV0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KC0xKTsKKyAg
ICAgICAgbUN1cnJlbnRDb25zdGFudEJ1ZmZlclZTW2ldICAgICAgID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50PigtMSk7CiAgICAgICAgIG1DdXJyZW50Q29uc3RhbnRCdWZmZXJWU09mZnNldFtp
XSA9IDA7Ci0gICAgICAgIG1DdXJyZW50Q29uc3RhbnRCdWZmZXJWU1NpemVbaV0gPSAwOwotICAg
ICAgICBtQ3VycmVudENvbnN0YW50QnVmZmVyUFNbaV0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KC0xKTsKKyAgICAgICAgbUN1cnJlbnRDb25zdGFudEJ1ZmZlclZTU2l6ZVtpXSAgID0gMDsK
KyAgICAgICAgbUN1cnJlbnRDb25zdGFudEJ1ZmZlclBTW2ldICAgICAgID0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgaW50PigtMSk7CiAgICAgICAgIG1DdXJyZW50Q29uc3RhbnRCdWZmZXJQU09mZnNl
dFtpXSA9IDA7Ci0gICAgICAgIG1DdXJyZW50Q29uc3RhbnRCdWZmZXJQU1NpemVbaV0gPSAwOwor
ICAgICAgICBtQ3VycmVudENvbnN0YW50QnVmZmVyUFNTaXplW2ldICAgPSAwOwogICAgIH0KIAot
ICAgIG1DdXJyZW50VmVydGV4Q29uc3RhbnRCdWZmZXIgPSBOVUxMOwotICAgIG1DdXJyZW50UGl4
ZWxDb25zdGFudEJ1ZmZlciA9IE5VTEw7CisgICAgbUN1cnJlbnRWZXJ0ZXhDb25zdGFudEJ1ZmZl
ciAgID0gTlVMTDsKKyAgICBtQ3VycmVudFBpeGVsQ29uc3RhbnRCdWZmZXIgICAgPSBOVUxMOwog
ICAgIG1DdXJyZW50R2VvbWV0cnlDb25zdGFudEJ1ZmZlciA9IE5VTEw7CiAKICAgICBtQ3VycmVu
dFByaW1pdGl2ZVRvcG9sb2d5ID0gRDNEX1BSSU1JVElWRV9UT1BPTE9HWV9VTkRFRklORUQ7CkBA
IC0yNTAzLDExICsyODA4LDExIEBAIGJvb2wgUmVuZGVyZXIxMTo6dGVzdERldmljZUxvc3QoKQog
CiAgICAgLy8gR2V0UmVtb3ZlZFJlYXNvbiBpcyB1c2VkIHRvIHRlc3QgaWYgdGhlIGRldmljZSBp
cyByZW1vdmVkCiAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5HZXREZXZpY2VSZW1vdmVk
UmVhc29uKCk7Ci0gICAgaXNMb3N0ID0gZDNkMTE6OmlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCk7
CisgICAgaXNMb3N0ICAgICAgICAgPSBkM2QxMTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KTsK
IAogICAgIGlmIChpc0xvc3QpCiAgICAgewotICAgICAgICBFUlIoIlRoZSBEM0QxMSBkZXZpY2Ug
d2FzIHJlbW92ZWQ6IDB4JTA4WCIsIHJlc3VsdCk7CisgICAgICAgIEVSUigpIDw8ICJUaGUgRDNE
MTEgZGV2aWNlIHdhcyByZW1vdmVkLCAiIDw8IGdsOjpGbXRIUihyZXN1bHQpOwogICAgIH0KIAog
ICAgIHJldHVybiBpc0xvc3Q7CkBAIC0yNTE2LDI1ICsyODIxLDI2IEBAIGJvb2wgUmVuZGVyZXIx
MTo6dGVzdERldmljZUxvc3QoKQogYm9vbCBSZW5kZXJlcjExOjp0ZXN0RGV2aWNlUmVzZXR0YWJs
ZSgpCiB7CiAgICAgLy8gZGV0ZXJtaW5lIGlmIHRoZSBkZXZpY2UgaXMgcmVzZXR0YWJsZSBieSBj
cmVhdGluZyBhIGR1bW15IGRldmljZQotICAgIFBGTl9EM0QxMV9DUkVBVEVfREVWSUNFIEQzRDEx
Q3JlYXRlRGV2aWNlID0gKFBGTl9EM0QxMV9DUkVBVEVfREVWSUNFKUdldFByb2NBZGRyZXNzKG1E
M2QxMU1vZHVsZSwgIkQzRDExQ3JlYXRlRGV2aWNlIik7CisgICAgUEZOX0QzRDExX0NSRUFURV9E
RVZJQ0UgRDNEMTFDcmVhdGVEZXZpY2UgPQorICAgICAgICAoUEZOX0QzRDExX0NSRUFURV9ERVZJ
Q0UpR2V0UHJvY0FkZHJlc3MobUQzZDExTW9kdWxlLCAiRDNEMTFDcmVhdGVEZXZpY2UiKTsKIAog
ICAgIGlmIChEM0QxMUNyZWF0ZURldmljZSA9PSBOVUxMKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KIAotICAgIElEM0QxMURldmljZSogZHVtbXlEZXZpY2U7CisgICAgSUQz
RDExRGV2aWNlICpkdW1teURldmljZTsKICAgICBEM0RfRkVBVFVSRV9MRVZFTCBkdW1teUZlYXR1
cmVMZXZlbDsKLSAgICBJRDNEMTFEZXZpY2VDb250ZXh0KiBkdW1teUNvbnRleHQ7CisgICAgSUQz
RDExRGV2aWNlQ29udGV4dCAqZHVtbXlDb250ZXh0OwogCiAgICAgQVNTRVJUKG1SZXF1ZXN0ZWRE
cml2ZXJUeXBlICE9IEQzRF9EUklWRVJfVFlQRV9VTktOT1dOKTsKICAgICBIUkVTVUxUIHJlc3Vs
dCA9IEQzRDExQ3JlYXRlRGV2aWNlKAogICAgICAgICBOVUxMLCBtUmVxdWVzdGVkRHJpdmVyVHlw
ZSwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpZiBkZWZp
bmVkKF9ERUJVRykKKyNpZiBkZWZpbmVkKF9ERUJVRykKICAgICAgICAgRDNEMTFfQ1JFQVRFX0RF
VklDRV9ERUJVRywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNlbHNl
CisjZWxzZQogICAgICAgICAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgI2VuZGlmCisjZW5kaWYKICAgICAgICAgbUF2YWlsYWJsZUZlYXR1cmVMZXZlbHMuZGF0YSgp
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1BdmFpbGFibGVGZWF0dXJlTGV2ZWxzLnNpemUo
KSksCiAgICAgICAgIEQzRDExX1NES19WRVJTSU9OLCAmZHVtbXlEZXZpY2UsICZkdW1teUZlYXR1
cmVMZXZlbCwgJmR1bW15Q29udGV4dCk7CiAKQEAgLTI1NTMsNyArMjg1OSw3IEBAIHZvaWQgUmVu
ZGVyZXIxMTo6cmVsZWFzZSgpCiB7CiAgICAgUmVuZGVyZXJEM0Q6OmNsZWFudXAoKTsKIAotICAg
IG1TY3JhdGNoTWVtb3J5QnVmZmVyLnJlc2l6ZSgwKTsKKyAgICBtU2NyYXRjaE1lbW9yeUJ1ZmZl
ci5jbGVhcigpOwogCiAgICAgaWYgKG1Bbm5vdGF0b3IgIT0gbnVsbHB0cikKICAgICB7CkBAIC0y
NjE2LDcgKzI5MjIsNyBAQCBib29sIFJlbmRlcmVyMTE6OnJlc2V0RGV2aWNlKCkKIAogICAgIGlm
IChyZXN1bHQuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgRVJSKCJDb3VsZCBub3QgcmVpbml0
aWFsaXplIEQzRDExIGRldmljZTogJTA4WCIsIHJlc3VsdC5nZXRDb2RlKCkpOworICAgICAgICBF
UlIoKSA8PCAiQ291bGQgbm90IHJlaW5pdGlhbGl6ZSBEM0QxMSBkZXZpY2U6ICIgPDwgcmVzdWx0
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yNjMwLDggKzI5MzYsMTAgQEAg
c3RkOjpzdHJpbmcgUmVuZGVyZXIxMTo6Z2V0UmVuZGVyZXJEZXNjcmlwdGlvbigpIGNvbnN0CiAg
ICAgcmVuZGVyZXJTdHJpbmcgPDwgbURlc2NyaXB0aW9uOwogICAgIHJlbmRlcmVyU3RyaW5nIDw8
ICIgRGlyZWN0M0QxMSI7CiAKLSAgICByZW5kZXJlclN0cmluZyA8PCAiIHZzXyIgPDwgZ2V0TWFq
b3JTaGFkZXJNb2RlbCgpIDw8ICJfIiA8PCBnZXRNaW5vclNoYWRlck1vZGVsKCkgPDwgZ2V0U2hh
ZGVyTW9kZWxTdWZmaXgoKTsKLSAgICByZW5kZXJlclN0cmluZyA8PCAiIHBzXyIgPDwgZ2V0TWFq
b3JTaGFkZXJNb2RlbCgpIDw8ICJfIiA8PCBnZXRNaW5vclNoYWRlck1vZGVsKCkgPDwgZ2V0U2hh
ZGVyTW9kZWxTdWZmaXgoKTsKKyAgICByZW5kZXJlclN0cmluZyA8PCAiIHZzXyIgPDwgZ2V0TWFq
b3JTaGFkZXJNb2RlbCgpIDw8ICJfIiA8PCBnZXRNaW5vclNoYWRlck1vZGVsKCkKKyAgICAgICAg
ICAgICAgICAgICA8PCBnZXRTaGFkZXJNb2RlbFN1ZmZpeCgpOworICAgIHJlbmRlcmVyU3RyaW5n
IDw8ICIgcHNfIiA8PCBnZXRNYWpvclNoYWRlck1vZGVsKCkgPDwgIl8iIDw8IGdldE1pbm9yU2hh
ZGVyTW9kZWwoKQorICAgICAgICAgICAgICAgICAgIDw8IGdldFNoYWRlck1vZGVsU3VmZml4KCk7
CiAKICAgICByZXR1cm4gcmVuZGVyZXJTdHJpbmcuc3RyKCk7CiB9CkBAIC0yNjM5LDEyICsyOTQ3
LDEyIEBAIHN0ZDo6c3RyaW5nIFJlbmRlcmVyMTE6OmdldFJlbmRlcmVyRGVzY3JpcHRpb24oKSBj
b25zdAogRGV2aWNlSWRlbnRpZmllciBSZW5kZXJlcjExOjpnZXRBZGFwdGVySWRlbnRpZmllcigp
IGNvbnN0CiB7CiAgICAgLy8gRG9uJ3QgdXNlIHRoZSBBZGFwdGVyTHVpZCBoZXJlLCBzaW5jZSB0
aGF0IGRvZXNuJ3QgcGVyc2lzdCBhY3Jvc3MgcmVib290LgotICAgIERldmljZUlkZW50aWZpZXIg
ZGV2aWNlSWRlbnRpZmllciA9IHsgMCB9OwotICAgIGRldmljZUlkZW50aWZpZXIuVmVuZG9ySWQg
PSBtQWRhcHRlckRlc2NyaXB0aW9uLlZlbmRvcklkOwotICAgIGRldmljZUlkZW50aWZpZXIuRGV2
aWNlSWQgPSBtQWRhcHRlckRlc2NyaXB0aW9uLkRldmljZUlkOwotICAgIGRldmljZUlkZW50aWZp
ZXIuU3ViU3lzSWQgPSBtQWRhcHRlckRlc2NyaXB0aW9uLlN1YlN5c0lkOwotICAgIGRldmljZUlk
ZW50aWZpZXIuUmV2aXNpb24gPSBtQWRhcHRlckRlc2NyaXB0aW9uLlJldmlzaW9uOwotICAgIGRl
dmljZUlkZW50aWZpZXIuRmVhdHVyZUxldmVsID0gc3RhdGljX2Nhc3Q8VUlOVD4obVJlbmRlcmVy
MTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCk7CisgICAgRGV2aWNlSWRlbnRpZmllciBkZXZpY2VJ
ZGVudGlmaWVyID0gezB9OworICAgIGRldmljZUlkZW50aWZpZXIuVmVuZG9ySWQgICAgICAgICA9
IG1BZGFwdGVyRGVzY3JpcHRpb24uVmVuZG9ySWQ7CisgICAgZGV2aWNlSWRlbnRpZmllci5EZXZp
Y2VJZCAgICAgICAgID0gbUFkYXB0ZXJEZXNjcmlwdGlvbi5EZXZpY2VJZDsKKyAgICBkZXZpY2VJ
ZGVudGlmaWVyLlN1YlN5c0lkICAgICAgICAgPSBtQWRhcHRlckRlc2NyaXB0aW9uLlN1YlN5c0lk
OworICAgIGRldmljZUlkZW50aWZpZXIuUmV2aXNpb24gICAgICAgICA9IG1BZGFwdGVyRGVzY3Jp
cHRpb24uUmV2aXNpb247CisgICAgZGV2aWNlSWRlbnRpZmllci5GZWF0dXJlTGV2ZWwgICAgID0g
c3RhdGljX2Nhc3Q8VUlOVD4obVJlbmRlcmVyMTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCk7CiAK
ICAgICByZXR1cm4gZGV2aWNlSWRlbnRpZmllcjsKIH0KQEAgLTI3MTcsNyArMzAyNSw4IEBAIGJv
b2wgUmVuZGVyZXIxMTo6Z2V0U2hhcmVIYW5kbGVTdXBwb3J0KCkgY29uc3QKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8vIEFsc28gZGlzYWJsZSBzaGFyZSBoYW5kbGVzIG9u
IEZlYXR1cmUgTGV2ZWwgOV8zLCBzaW5jZSBpdCBkb2Vzbid0IHN1cHBvcnQgc2hhcmUgaGFuZGxl
cyBvbiBSR0JBOCB0ZXh0dXJlcy9zd2FwY2hhaW5zLgorICAgIC8vIEFsc28gZGlzYWJsZSBzaGFy
ZSBoYW5kbGVzIG9uIEZlYXR1cmUgTGV2ZWwgOV8zLCBzaW5jZSBpdCBkb2Vzbid0IHN1cHBvcnQg
c2hhcmUgaGFuZGxlcyBvbgorICAgIC8vIFJHQkE4IHRleHR1cmVzL3N3YXBjaGFpbnMuCiAgICAg
aWYgKG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwgPD0gRDNEX0ZFQVRVUkVfTEVW
RUxfOV8zKQogICAgIHsKICAgICAgICAgbVN1cHBvcnRzU2hhcmVIYW5kbGVzID0gZmFsc2U7CkBA
IC0yNzgwLDExICszMDg5LDE3IEBAIGludCBSZW5kZXJlcjExOjpnZXRNYWpvclNoYWRlck1vZGVs
KCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5mZWF0dXJlTGV2
ZWwpCiAgICAgewotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOiByZXR1cm4gRDNE
MTFfU0hBREVSX01BSk9SX1ZFUlNJT047ICAgLy8gNQotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9M
RVZFTF8xMF8xOiByZXR1cm4gRDNEMTBfMV9TSEFERVJfTUFKT1JfVkVSU0lPTjsgLy8gNAotICAg
ICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOiByZXR1cm4gRDNEMTBfU0hBREVSX01BSk9S
X1ZFUlNJT047ICAgLy8gNAotICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF85XzM6ICByZXR1
cm4gRDNEMTBfU0hBREVSX01BSk9SX1ZFUlNJT047ICAgLy8gNAotICAgICAgZGVmYXVsdDogVU5S
RUFDSEFCTEUoKTsgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF8xMV8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDExX1NIQURFUl9NQUpPUl9WRVJTSU9OOyAg
Ly8gNQorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6CisgICAgICAgICAgICBy
ZXR1cm4gRDNEMTBfMV9TSEFERVJfTUFKT1JfVkVSU0lPTjsgIC8vIDQKKyAgICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF8xMF8wOgorICAgICAgICAgICAgcmV0dXJuIEQzRDEwX1NIQURFUl9N
QUpPUl9WRVJTSU9OOyAgLy8gNAorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoK
KyAgICAgICAgICAgIHJldHVybiBEM0QxMF9TSEFERVJfTUFKT1JfVkVSU0lPTjsgIC8vIDQKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiB9CiAKQEAgLTI3OTIsMTEgKzMxMDcsMTcgQEAgaW50IFJlbmRlcmVy
MTE6OmdldE1pbm9yU2hhZGVyTW9kZWwoKSBjb25zdAogewogICAgIHN3aXRjaCAobVJlbmRlcmVy
MTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCkKICAgICB7Ci0gICAgICBjYXNlIEQzRF9GRUFUVVJF
X0xFVkVMXzExXzA6IHJldHVybiBEM0QxMV9TSEFERVJfTUlOT1JfVkVSU0lPTjsgICAvLyAwCi0g
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzE6IHJldHVybiBEM0QxMF8xX1NIQURFUl9N
SU5PUl9WRVJTSU9OOyAvLyAxCi0gICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJl
dHVybiBEM0QxMF9TSEFERVJfTUlOT1JfVkVSU0lPTjsgICAvLyAwCi0gICAgICBjYXNlIEQzRF9G
RUFUVVJFX0xFVkVMXzlfMzogIHJldHVybiBEM0QxMF9TSEFERVJfTUlOT1JfVkVSU0lPTjsgICAv
LyAwCi0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOyAgICAgIHJldHVybiAwOworICAgICAg
ICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgICAgICByZXR1cm4gRDNEMTFf
U0hBREVSX01JTk9SX1ZFUlNJT047ICAvLyAwCisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVW
RUxfMTBfMToKKyAgICAgICAgICAgIHJldHVybiBEM0QxMF8xX1NIQURFUl9NSU5PUl9WRVJTSU9O
OyAgLy8gMQorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6CisgICAgICAgICAg
ICByZXR1cm4gRDNEMTBfU0hBREVSX01JTk9SX1ZFUlNJT047ICAvLyAwCisgICAgICAgIGNhc2Ug
RDNEX0ZFQVRVUkVfTEVWRUxfOV8zOgorICAgICAgICAgICAgcmV0dXJuIEQzRDEwX1NIQURFUl9N
SU5PUl9WRVJTSU9OOyAgLy8gMAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFD
SEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KIApAQCAtMjgwNCwxNSAr
MzEyNSwyMSBAQCBzdGQ6OnN0cmluZyBSZW5kZXJlcjExOjpnZXRTaGFkZXJNb2RlbFN1ZmZpeCgp
IGNvbnN0CiB7CiAgICAgc3dpdGNoIChtUmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVs
KQogICAgIHsKLSAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDogcmV0dXJuICIiOwot
ICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8xOiByZXR1cm4gIiI7Ci0gICAgICBjYXNl
IEQzRF9GRUFUVVJFX0xFVkVMXzEwXzA6IHJldHVybiAiIjsKLSAgICAgIGNhc2UgRDNEX0ZFQVRV
UkVfTEVWRUxfOV8zOiAgcmV0dXJuICJfbGV2ZWxfOV8zIjsKLSAgICAgIGRlZmF1bHQ6IFVOUkVB
Q0hBQkxFKCk7ICAgICAgcmV0dXJuICIiOworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVM
XzExXzA6CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVf
TEVWRUxfMTBfMToKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgY2FzZSBEM0RfRkVB
VFVSRV9MRVZFTF8xMF8wOgorICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICBjYXNlIEQz
RF9GRUFUVVJFX0xFVkVMXzlfMzoKKyAgICAgICAgICAgIHJldHVybiAiX2xldmVsXzlfMyI7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAg
cmV0dXJuICIiOwogICAgIH0KIH0KIAotY29uc3QgV29ya2Fyb3VuZHNEM0QgJlJlbmRlcmVyRDNE
OjpnZXRXb3JrYXJvdW5kcygpIGNvbnN0Citjb25zdCBhbmdsZTo6V29ya2Fyb3VuZHNEM0QgJlJl
bmRlcmVyRDNEOjpnZXRXb3JrYXJvdW5kcygpIGNvbnN0CiB7CiAgICAgaWYgKCFtV29ya2Fyb3Vu
ZHNJbml0aWFsaXplZCkKICAgICB7CkBAIC0yODg2LDEzICszMjEzLDE4IEBAIGdsOjpFcnJvciBS
ZW5kZXJlcjExOjpjb3B5SW1hZ2UyRChjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVy
LAogICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgUmVuZGVyZXIxMTo6
Y29weUltYWdlQ3ViZShjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBn
bDo6UmVjdGFuZ2xlICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsIFRl
eHR1cmVTdG9yYWdlICpzdG9yYWdlLCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCkKK2dsOjpF
cnJvciBSZW5kZXJlcjExOjpjb3B5SW1hZ2VDdWJlKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJh
bWVidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
UmVjdGFuZ2xlICZzb3VyY2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbGV2ZWwpCiB7CiAgICAgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlICpz
dG9yYWdlMTEgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTExX0N1YmU+KHN0b3JhZ2UpOwogICAgIEFT
U0VSVChzdG9yYWdlMTEpOwogCi0gICAgZ2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJ
bmRleDo6TWFrZUN1YmUodGFyZ2V0LCBsZXZlbCk7CisgICAgZ2w6OkltYWdlSW5kZXggaW5kZXgg
ICAgICAgICAgICAgID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2VDdWJlKHRhcmdldCwgbGV2ZWwpOwog
ICAgIFJlbmRlclRhcmdldEQzRCAqZGVzdFJlbmRlclRhcmdldCA9IG51bGxwdHI7CiAgICAgQU5H
TEVfVFJZKHN0b3JhZ2UxMS0+Z2V0UmVuZGVyVGFyZ2V0KGluZGV4LCAmZGVzdFJlbmRlclRhcmdl
dCkpOwogICAgIEFTU0VSVChkZXN0UmVuZGVyVGFyZ2V0KTsKQEAgLTI5MDQsMTMgKzMyMzYsMTcg
QEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNvcHlJbWFnZUN1YmUoY29uc3QgZ2w6OkZyYW1lYnVm
ZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2wKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAotZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNvcHlJbWFnZTNEKGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
ciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsIEdMZW51bSBk
ZXN0Rm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpP
ZmZzZXQgJmRlc3RPZmZzZXQsIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBHTGludCBsZXZlbCkK
K2dsOjpFcnJvciBSZW5kZXJlcjExOjpjb3B5SW1hZ2UzRChjb25zdCBnbDo6RnJhbWVidWZmZXIg
KmZyYW1lYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpSZWN0YW5nbGUgJnNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsZXZlbCkKIHsKICAgICBUZXh0dXJlU3RvcmFnZTExXzNEICpzdG9y
YWdlMTEgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTExXzNEPihzdG9yYWdlKTsKICAgICBBU1NFUlQo
c3RvcmFnZTExKTsKIAotICAgIGdsOjpJbWFnZUluZGV4IGluZGV4ID0gZ2w6OkltYWdlSW5kZXg6
Ok1ha2UzRChsZXZlbCwgZGVzdE9mZnNldC56KTsKKyAgICBnbDo6SW1hZ2VJbmRleCBpbmRleCAg
ICAgICAgICAgICAgPSBnbDo6SW1hZ2VJbmRleDo6TWFrZTNEKGxldmVsLCBkZXN0T2Zmc2V0Lnop
OwogICAgIFJlbmRlclRhcmdldEQzRCAqZGVzdFJlbmRlclRhcmdldCA9IG51bGxwdHI7CiAgICAg
QU5HTEVfVFJZKHN0b3JhZ2UxMS0+Z2V0UmVuZGVyVGFyZ2V0KGluZGV4LCAmZGVzdFJlbmRlclRh
cmdldCkpOwogICAgIEFTU0VSVChkZXN0UmVuZGVyVGFyZ2V0KTsKQEAgLTI5MjIsMTMgKzMyNTgs
MTcgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNvcHlJbWFnZTNEKGNvbnN0IGdsOjpGcmFtZWJ1
ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IGdsOjoKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAotZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNvcHlJbWFnZTJEQXJyYXkoY29uc3QgZ2w6OkZy
YW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVjdCwg
R0xlbnVtIGRlc3RGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwg
R0xpbnQgbGV2ZWwpCitnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y29weUltYWdlMkRBcnJheShjb25z
dCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlUmVjdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVTdG9y
YWdlICpzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbGV2ZWwpCiB7CiAgICAgVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5ICpzdG9yYWdlMTEgPSBH
ZXRBczxUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk+KHN0b3JhZ2UpOwogICAgIEFTU0VSVChzdG9y
YWdlMTEpOwogCi0gICAgZ2w6OkltYWdlSW5kZXggaW5kZXggPSBnbDo6SW1hZ2VJbmRleDo6TWFr
ZTJEQXJyYXkobGV2ZWwsIGRlc3RPZmZzZXQueik7CisgICAgZ2w6OkltYWdlSW5kZXggaW5kZXgg
ICAgICAgICAgICAgID0gZ2w6OkltYWdlSW5kZXg6Ok1ha2UyREFycmF5KGxldmVsLCBkZXN0T2Zm
c2V0LnopOwogICAgIFJlbmRlclRhcmdldEQzRCAqZGVzdFJlbmRlclRhcmdldCA9IG51bGxwdHI7
CiAgICAgQU5HTEVfVFJZKHN0b3JhZ2UxMS0+Z2V0UmVuZGVyVGFyZ2V0KGluZGV4LCAmZGVzdFJl
bmRlclRhcmdldCkpOwogICAgIEFTU0VSVChkZXN0UmVuZGVyVGFyZ2V0KTsKQEAgLTI5NDUsNiAr
MzI4NSw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpjb3B5VGV4dHVyZShjb25zdCBnbDo6VGV4
dHVyZSAqc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBk
ZXN0Rm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpP
ZmZzZXQgJmRlc3RPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4
dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGRlc3RUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgZGVzdExldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5w
YWNrRmxpcFksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQ
cmVtdWx0aXBseUFscGhhLApAQCAtMjk1NSw2ICszMjk2LDcgQEAgZ2w6OkVycm9yIFJlbmRlcmVy
MTE6OmNvcHlUZXh0dXJlKGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UsCiAgICAgVGV4dHVyZVN0
b3JhZ2UgKnNvdXJjZVN0b3JhZ2UgPSBudWxscHRyOwogICAgIEFOR0xFX1RSWShjb25zdF9jYXN0
PFRleHR1cmVEM0QgKj4oc291cmNlRDNEKS0+Z2V0TmF0aXZlVGV4dHVyZSgmc291cmNlU3RvcmFn
ZSkpOwogCisgICAgQVNTRVJUKGRlc3RUYXJnZXQgPT0gR0xfVEVYVFVSRV8yRCk7CiAgICAgVGV4
dHVyZVN0b3JhZ2UxMV8yRCAqc291cmNlU3RvcmFnZTExID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2Ux
MV8yRD4oc291cmNlU3RvcmFnZSk7CiAgICAgQVNTRVJUKHNvdXJjZVN0b3JhZ2UxMSk7CiAKQEAg
LTMwNjQsMjcgKzM0MDYsMzEgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNvcHlDb21wcmVzc2Vk
VGV4dHVyZShjb25zdCBnbDo6VGV4dHVyZSAqc291cmNlLAogICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCi1nbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y3JlYXRlUmVuZGVyVGFyZ2V0KGludCB3
aWR0aCwgaW50IGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBzYW1wbGVzLCBSZW5kZXJU
YXJnZXREM0QgKipvdXRSVCkKK2dsOjpFcnJvciBSZW5kZXJlcjExOjpjcmVhdGVSZW5kZXJUYXJn
ZXQoaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl
bmRlclRhcmdldEQzRCAqKm91dFJUKQogewogICAgIGNvbnN0IGQzZDExOjpGb3JtYXQgJmZvcm1h
dEluZm8gPSBkM2QxMTo6Rm9ybWF0OjpHZXQoZm9ybWF0LCBtUmVuZGVyZXIxMURldmljZUNhcHMp
OwogCiAgICAgY29uc3QgZ2w6OlRleHR1cmVDYXBzICZ0ZXh0dXJlQ2FwcyA9IGdldE5hdGl2ZVRl
eHR1cmVDYXBzKCkuZ2V0KGZvcm1hdCk7Ci0gICAgR0x1aW50IHN1cHBvcnRlZFNhbXBsZXMgPSB0
ZXh0dXJlQ2Fwcy5nZXROZWFyZXN0U2FtcGxlcyhzYW1wbGVzKTsKKyAgICBHTHVpbnQgc3VwcG9y
dGVkU2FtcGxlcyAgICAgICAgICAgID0gdGV4dHVyZUNhcHMuZ2V0TmVhcmVzdFNhbXBsZXMoc2Ft
cGxlcyk7CiAKICAgICBpZiAod2lkdGggPiAwICYmIGhlaWdodCA+IDApCiAgICAgewogICAgICAg
ICAvLyBDcmVhdGUgdGV4dHVyZSByZXNvdXJjZQogICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVT
QyBkZXNjOwotICAgICAgICBkZXNjLldpZHRoID0gd2lkdGg7Ci0gICAgICAgIGRlc2MuSGVpZ2h0
ID0gaGVpZ2h0OwotICAgICAgICBkZXNjLk1pcExldmVscyA9IDE7Ci0gICAgICAgIGRlc2MuQXJy
YXlTaXplID0gMTsKKyAgICAgICAgZGVzYy5XaWR0aCAgICAgICAgICAgICAgPSB3aWR0aDsKKyAg
ICAgICAgZGVzYy5IZWlnaHQgICAgICAgICAgICAgPSBoZWlnaHQ7CisgICAgICAgIGRlc2MuTWlw
TGV2ZWxzICAgICAgICAgID0gMTsKKyAgICAgICAgZGVzYy5BcnJheVNpemUgICAgICAgICAgPSAx
OwogICAgICAgICBkZXNjLkZvcm1hdCAgICAgICAgICAgICA9IGZvcm1hdEluZm8udGV4Rm9ybWF0
OwotICAgICAgICBkZXNjLlNhbXBsZURlc2MuQ291bnQgPSAoc3VwcG9ydGVkU2FtcGxlcyA9PSAw
KSA/IDEgOiBzdXBwb3J0ZWRTYW1wbGVzOworICAgICAgICBkZXNjLlNhbXBsZURlc2MuQ291bnQg
ICA9IChzdXBwb3J0ZWRTYW1wbGVzID09IDApID8gMSA6IHN1cHBvcnRlZFNhbXBsZXM7CiAgICAg
ICAgIGRlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ID0gMDsKLSAgICAgICAgZGVzYy5Vc2FnZSA9IEQz
RDExX1VTQUdFX0RFRkFVTFQ7Ci0gICAgICAgIGRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSAwOwotICAg
ICAgICBkZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAgIGRlc2MuVXNhZ2UgICAgICAgICAgICAg
ID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKKyAgICAgICAgZGVzYy5DUFVBY2Nlc3NGbGFncyAgICAg
PSAwOworICAgICAgICBkZXNjLk1pc2NGbGFncyAgICAgICAgICA9IDA7CiAKICAgICAgICAgLy8g
SWYgYSByZW5kZXJ0YXJnZXQgb3IgZGVwdGhzdGVuY2lsIGZvcm1hdCBleGlzdHMgZm9yIHRoaXMg
dGV4dHVyZSBmb3JtYXQsCiAgICAgICAgIC8vIHdlJ2xsIGZsYWcgaXQgdG8gYWxsb3cgYmluZGlu
ZyB0aGF0IHdheS4gU2hhZGVyIHJlc291cmNlIHZpZXdzIGFyZSBhIGxpdHRsZQpAQCAtMzA5NCwx
OSArMzQ0MCwzMCBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y3JlYXRlUmVuZGVyVGFyZ2V0KGlu
dCB3aWR0aCwgaW50IGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgRwogICAgICAgICBiaW5kRFNWID0g
KGZvcm1hdEluZm8uZHN2Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pOwogICAgICAgICBi
aW5kU1JWID0gKGZvcm1hdEluZm8uc3J2Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pOwog
Ci0gICAgICAgIGRlc2MuQmluZEZsYWdzID0gKGJpbmRSVFYgPyBEM0QxMV9CSU5EX1JFTkRFUl9U
QVJHRVQgICA6IDApIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoYmluZERTViA/IEQzRDEx
X0JJTkRfREVQVEhfU1RFTkNJTCAgIDogMCkgfAorICAgICAgICAvLyBEM0QgZmVhdHVyZSBsZXZl
bCAxMC4wIG5vIGxvbmdlciBhbGxvd3MgY3JlYXRpb24gb2YgdGV4dHVyZXMgd2l0aCBib3RoIHRo
ZSBiaW5kIFNSViBhbmQKKyAgICAgICAgLy8gRFNWIGZsYWdzIHdoZW4gbXVsdGlzYW1wbGVkLiAg
Y3JidWcuY29tLzY1Njk4OQorICAgICAgICBib29sIHN1cHBvcnRzTXVsdGlzYW1wbGVkRGVwdGhT
dGVuY2lsU1JWcyA9CisgICAgICAgICAgICBtUmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxl
dmVsID4gRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMDsKKyAgICAgICAgYm9vbCBpc011bHRpc2FtcGxl
ZERlcHRoU3RlbmNpbCA9IGJpbmREU1YgJiYgZGVzYy5TYW1wbGVEZXNjLkNvdW50ID4gMTsKKyAg
ICAgICAgaWYgKGlzTXVsdGlzYW1wbGVkRGVwdGhTdGVuY2lsICYmICFzdXBwb3J0c011bHRpc2Ft
cGxlZERlcHRoU3RlbmNpbFNSVnMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJpbmRTUlYgPSBm
YWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGRlc2MuQmluZEZsYWdzID0gKGJpbmRSVFYgPyBE
M0QxMV9CSU5EX1JFTkRFUl9UQVJHRVQgOiAwKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAg
KGJpbmREU1YgPyBEM0QxMV9CSU5EX0RFUFRIX1NURU5DSUwgOiAwKSB8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGJpbmRTUlYgPyBEM0QxMV9CSU5EX1NIQURFUl9SRVNPVVJDRSA6IDApOwog
CiAgICAgICAgIC8vIFRoZSBmb3JtYXQgbXVzdCBiZSBlaXRoZXIgYW4gUlRWIG9yIGEgRFNWCiAg
ICAgICAgIEFTU0VSVChiaW5kUlRWICE9IGJpbmREU1YpOwogCiAgICAgICAgIElEM0QxMVRleHR1
cmUyRCAqdGV4dHVyZSA9IE5VTEw7Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+
Q3JlYXRlVGV4dHVyZTJEKCZkZXNjLCBOVUxMLCAmdGV4dHVyZSk7CisgICAgICAgIEhSRVNVTFQg
cmVzdWx0ICAgICAgICAgICA9IG1EZXZpY2UtPkNyZWF0ZVRleHR1cmUyRCgmZGVzYywgTlVMTCwg
JnRleHR1cmUpOwogICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSk7Ci0gICAgICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIHJlbmRlciB0
YXJnZXQgdGV4dHVyZSwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJGYWlsZWQgdG8gY3JlYXRlIHJlbmRlciB0YXJnZXQgdGV4dHVyZSwgcmVzdWx0OiAweCVY
LiIsIHJlc3VsdCk7CiAgICAgICAgIH0KIAogICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZp
ZXcgKnNydiAgICAgPSBudWxscHRyOwpAQCAtMzExNCwxNyArMzQ3MSwyMCBAQCBnbDo6RXJyb3Ig
UmVuZGVyZXIxMTo6Y3JlYXRlUmVuZGVyVGFyZ2V0KGludCB3aWR0aCwgaW50IGhlaWdodCwgR0xl
bnVtIGZvcm1hdCwgRwogICAgICAgICBpZiAoYmluZFNSVikKICAgICAgICAgewogICAgICAgICAg
ICAgRDNEMTFfU0hBREVSX1JFU09VUkNFX1ZJRVdfREVTQyBzcnZEZXNjOwotICAgICAgICAgICAg
c3J2RGVzYy5Gb3JtYXQgPSBmb3JtYXRJbmZvLnNydkZvcm1hdDsKLSAgICAgICAgICAgIHNydkRl
c2MuVmlld0RpbWVuc2lvbiA9IChzdXBwb3J0ZWRTYW1wbGVzID09IDApID8gRDNEMTFfU1JWX0RJ
TUVOU0lPTl9URVhUVVJFMkQgOiBEM0QxMV9TUlZfRElNRU5TSU9OX1RFWFRVUkUyRE1TOworICAg
ICAgICAgICAgc3J2RGVzYy5Gb3JtYXQgICAgICAgID0gZm9ybWF0SW5mby5zcnZGb3JtYXQ7Cisg
ICAgICAgICAgICBzcnZEZXNjLlZpZXdEaW1lbnNpb24gPSAoc3VwcG9ydGVkU2FtcGxlcyA9PSAw
KSA/IEQzRDExX1NSVl9ESU1FTlNJT05fVEVYVFVSRTJECisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEQzRDExX1NSVl9ESU1FTlNJ
T05fVEVYVFVSRTJETVM7CiAgICAgICAgICAgICBzcnZEZXNjLlRleHR1cmUyRC5Nb3N0RGV0YWls
ZWRNaXAgPSAwOwotICAgICAgICAgICAgc3J2RGVzYy5UZXh0dXJlMkQuTWlwTGV2ZWxzID0gMTsK
KyAgICAgICAgICAgIHNydkRlc2MuVGV4dHVyZTJELk1pcExldmVscyAgICAgICA9IDE7CiAKICAg
ICAgICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVNoYWRlclJlc291cmNlVmlldyh0ZXh0
dXJlLCAmc3J2RGVzYywgJnNydik7CiAgICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVN
T1JZKTsKICAgICAgICAgICAgICAgICBTYWZlUmVsZWFzZSh0ZXh0dXJlKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRl
IHJlbmRlciB0YXJnZXQgc2hhZGVyIHJlc291cmNlIHZpZXcsIHJlc3VsdDogMHglWC4iLCByZXN1
bHQpOworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoCisgICAgICAgICAgICAgICAg
ICAgIEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY3Jl
YXRlIHJlbmRlciB0YXJnZXQgc2hhZGVyIHJlc291cmNlIHZpZXcsIHJlc3VsdDogMHglWC4iLCBy
ZXN1bHQpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZm9ybWF0SW5mby5ibGl0
U1JWRm9ybWF0ICE9IGZvcm1hdEluZm8uc3J2Rm9ybWF0KQpAQCAtMzE1OSwyMCArMzUxOSwyMyBA
QCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y3JlYXRlUmVuZGVyVGFyZ2V0KGludCB3aWR0aCwgaW50
IGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgRwogICAgICAgICBpZiAoYmluZERTVikKICAgICAgICAg
ewogICAgICAgICAgICAgRDNEMTFfREVQVEhfU1RFTkNJTF9WSUVXX0RFU0MgZHN2RGVzYzsKLSAg
ICAgICAgICAgIGRzdkRlc2MuRm9ybWF0ID0gZm9ybWF0SW5mby5kc3ZGb3JtYXQ7Ci0gICAgICAg
ICAgICBkc3ZEZXNjLlZpZXdEaW1lbnNpb24gPSAoc3VwcG9ydGVkU2FtcGxlcyA9PSAwKSA/IEQz
RDExX0RTVl9ESU1FTlNJT05fVEVYVFVSRTJEIDogRDNEMTFfRFNWX0RJTUVOU0lPTl9URVhUVVJF
MkRNUzsKKyAgICAgICAgICAgIGRzdkRlc2MuRm9ybWF0ICAgICAgICA9IGZvcm1hdEluZm8uZHN2
Rm9ybWF0OworICAgICAgICAgICAgZHN2RGVzYy5WaWV3RGltZW5zaW9uID0gKHN1cHBvcnRlZFNh
bXBsZXMgPT0gMCkgPyBEM0QxMV9EU1ZfRElNRU5TSU9OX1RFWFRVUkUyRAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBEM0QxMV9E
U1ZfRElNRU5TSU9OX1RFWFRVUkUyRE1TOwogICAgICAgICAgICAgZHN2RGVzYy5UZXh0dXJlMkQu
TWlwU2xpY2UgPSAwOwotICAgICAgICAgICAgZHN2RGVzYy5GbGFncyA9IDA7CisgICAgICAgICAg
ICBkc3ZEZXNjLkZsYWdzICAgICAgICAgICAgICA9IDA7CiAKICAgICAgICAgICAgIElEM0QxMURl
cHRoU3RlbmNpbFZpZXcgKmRzdiA9IE5VTEw7Ci0gICAgICAgICAgICByZXN1bHQgPSBtRGV2aWNl
LT5DcmVhdGVEZXB0aFN0ZW5jaWxWaWV3KHRleHR1cmUsICZkc3ZEZXNjLCAmZHN2KTsKKyAgICAg
ICAgICAgIHJlc3VsdCAgICAgICAgICAgICAgICAgICAgICA9IG1EZXZpY2UtPkNyZWF0ZURlcHRo
U3RlbmNpbFZpZXcodGV4dHVyZSwgJmRzdkRlc2MsICZkc3YpOwogICAgICAgICAgICAgaWYgKEZB
SUxFRChyZXN1bHQpKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEFTU0VSVChyZXN1
bHQgPT0gRV9PVVRPRk1FTU9SWSk7CiAgICAgICAgICAgICAgICAgU2FmZVJlbGVhc2UodGV4dHVy
ZSk7CiAgICAgICAgICAgICAgICAgU2FmZVJlbGVhc2Uoc3J2KTsKICAgICAgICAgICAgICAgICBT
YWZlUmVsZWFzZShibGl0U1JWKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gY3JlYXRlIHJlbmRlciB0YXJnZXQgZGVwdGggc3Rl
bmNpbCB2aWV3LCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSByZW5kZXIgdGFyZ2V0IGRlcHRoIHN0ZW5jaWwgdmll
dywgcmVzdWx0OiAweCVYLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1
bHQpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAqb3V0UlQgPSBuZXcgVGV4dHVyZVJl
bmRlclRhcmdldDExKGRzdiwgdGV4dHVyZSwgc3J2LCBmb3JtYXQsIGZvcm1hdEluZm8sIHdpZHRo
LCBoZWlnaHQsCkBAIC0zMTgzLDI0ICszNTQ2LDI3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpj
cmVhdGVSZW5kZXJUYXJnZXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBH
CiAgICAgICAgIGVsc2UgaWYgKGJpbmRSVFYpCiAgICAgICAgIHsKICAgICAgICAgICAgIEQzRDEx
X1JFTkRFUl9UQVJHRVRfVklFV19ERVNDIHJ0dkRlc2M7Ci0gICAgICAgICAgICBydHZEZXNjLkZv
cm1hdCA9IGZvcm1hdEluZm8ucnR2Rm9ybWF0OwotICAgICAgICAgICAgcnR2RGVzYy5WaWV3RGlt
ZW5zaW9uID0gKHN1cHBvcnRlZFNhbXBsZXMgPT0gMCkgPyBEM0QxMV9SVFZfRElNRU5TSU9OX1RF
WFRVUkUyRCA6IEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTJETVM7CisgICAgICAgICAgICBy
dHZEZXNjLkZvcm1hdCAgICAgICAgPSBmb3JtYXRJbmZvLnJ0dkZvcm1hdDsKKyAgICAgICAgICAg
IHJ0dkRlc2MuVmlld0RpbWVuc2lvbiA9IChzdXBwb3J0ZWRTYW1wbGVzID09IDApID8gRDNEMTFf
UlRWX0RJTUVOU0lPTl9URVhUVVJFMkQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJF
MkRNUzsKICAgICAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJELk1pcFNsaWNlID0gMDsKIAogICAg
ICAgICAgICAgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqcnR2ID0gTlVMTDsKLSAgICAgICAgICAg
IHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdldFZpZXcodGV4dHVyZSwgJnJ0dkRl
c2MsICZydHYpOworICAgICAgICAgICAgcmVzdWx0ICAgICAgICAgICAgICAgICAgICAgID0gbURl
dmljZS0+Q3JlYXRlUmVuZGVyVGFyZ2V0Vmlldyh0ZXh0dXJlLCAmcnR2RGVzYywgJnJ0dik7CiAg
ICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKTsKICAgICAgICAgICAgICAgICBT
YWZlUmVsZWFzZSh0ZXh0dXJlKTsKICAgICAgICAgICAgICAgICBTYWZlUmVsZWFzZShzcnYpOwog
ICAgICAgICAgICAgICAgIFNhZmVSZWxlYXNlKGJsaXRTUlYpOwotICAgICAgICAgICAgICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgcmVuZGVy
IHRhcmdldCByZW5kZXIgdGFyZ2V0IHZpZXcsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOworICAg
ICAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIHJlbmRlciB0YXJnZXQg
cmVuZGVyIHRhcmdldCB2aWV3LCByZXN1bHQ6IDB4JVguIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChm
b3JtYXRJbmZvLmRhdGFJbml0aWFsaXplckZ1bmN0aW9uICE9IE5VTEwpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgY2xlYXJWYWx1ZXNbNF0gPSB7IDAuMGYsIDAu
MGYsIDAuMGYsIDEuMGYgfTsKKyAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBjbGVhclZhbHVl
c1s0XSA9IHswLjBmLCAwLjBmLCAwLjBmLCAxLjBmfTsKICAgICAgICAgICAgICAgICBtRGV2aWNl
Q29udGV4dC0+Q2xlYXJSZW5kZXJUYXJnZXRWaWV3KHJ0diwgY2xlYXJWYWx1ZXMpOwogICAgICAg
ICAgICAgfQogCkBAIC0zMjI1LDcgKzM1OTEsNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y3Jl
YXRlUmVuZGVyVGFyZ2V0KGludCB3aWR0aCwgaW50IGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgRwog
ICAgICAgICAgICAgZDNkMTE6OkZvcm1hdDo6R2V0KEdMX05PTkUsIG1SZW5kZXJlcjExRGV2aWNl
Q2FwcyksIHdpZHRoLCBoZWlnaHQsIDEsIHN1cHBvcnRlZFNhbXBsZXMpOwogICAgIH0KIAotICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y3JlYXRlUmVuZGVyVGFyZ2V0Q29weShSZW5k
ZXJUYXJnZXREM0QgKnNvdXJjZSwgUmVuZGVyVGFyZ2V0RDNEICoqb3V0UlQpCkBAIC0zMjQzLDcg
KzM2MDksNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y3JlYXRlUmVuZGVyVGFyZ2V0Q29weShS
ZW5kZXJUYXJnZXREM0QgKnNvdXJjZSwgUmVuZGVyVGFyZwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMCwgc291cmNlMTEtPmdldFRleHR1cmUoKSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZTExLT5nZXRTdWJyZXNvdXJj
ZUluZGV4KCksIG51bGxwdHIpOwogICAgICpvdXRSVCA9IG5ld1JUOwotICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6
RXJyb3IgUmVuZGVyZXIxMTo6bG9hZEV4ZWN1dGFibGUoY29uc3Qgdm9pZCAqZnVuY3Rpb24sCkBA
IC0zMjU1LDE2ICszNjIxLDE2IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpsb2FkRXhlY3V0YWJs
ZShjb25zdCB2b2lkICpmdW5jdGlvbiwKIHsKICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgewotICAg
ICAgY2FzZSBTSEFERVJfVkVSVEVYOgorICAgICAgICBjYXNlIFNIQURFUl9WRVJURVg6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIElEM0QxMVZlcnRleFNoYWRlciAqdmVydGV4U2hhZGVyID0gTlVM
TDsKLSAgICAgICAgICAgIElEM0QxMUdlb21ldHJ5U2hhZGVyICpzdHJlYW1PdXRTaGFkZXIgPSBO
VUxMOworICAgICAgICAgICAgSUQzRDExVmVydGV4U2hhZGVyICp2ZXJ0ZXhTaGFkZXIgICAgICA9
IG51bGxwdHI7CisgICAgICAgICAgICBJRDNEMTFHZW9tZXRyeVNoYWRlciAqc3RyZWFtT3V0U2hh
ZGVyID0gbnVsbHB0cjsKIAogICAgICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5D
cmVhdGVWZXJ0ZXhTaGFkZXIoZnVuY3Rpb24sIGxlbmd0aCwgTlVMTCwgJnZlcnRleFNoYWRlcik7
CiAgICAgICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwogICAgICAgICAgICAgaWYg
KEZBSUxFRChyZXN1bHQpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgdmVydGV4IHNoYWRl
ciwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpP
dXRPZk1lbW9yeSgpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIHZlcnRleCBzaGFkZXIsICIgPDwgcmVz
dWx0OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIXN0cmVhbU91dFZhcnlpbmdz
LmVtcHR5KCkpCkBAIC0zMjc5LDggKzM2NDUsOCBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6bG9h
ZEV4ZWN1dGFibGUoY29uc3Qgdm9pZCAqZnVuY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgIGVu
dHJ5LlNlbWFudGljTmFtZSAgICAgICAgICAgICAgID0gc3RyZWFtT3V0VmFyeWluZy5zZW1hbnRp
Y05hbWUuY19zdHIoKTsKICAgICAgICAgICAgICAgICAgICAgZW50cnkuU2VtYW50aWNJbmRleCAg
ICAgICAgICAgICAgPSBzdHJlYW1PdXRWYXJ5aW5nLnNlbWFudGljSW5kZXg7CiAgICAgICAgICAg
ICAgICAgICAgIGVudHJ5LlN0YXJ0Q29tcG9uZW50ICAgICAgICAgICAgID0gMDsKLSAgICAgICAg
ICAgICAgICAgICAgZW50cnkuQ29tcG9uZW50Q291bnQgICAgICAgICAgICAgPSBzdGF0aWNfY2Fz
dDxCWVRFPihzdHJlYW1PdXRWYXJ5aW5nLmNvbXBvbmVudENvdW50KTsKLSAgICAgICAgICAgICAg
ICAgICAgZW50cnkuT3V0cHV0U2xvdCA9IHN0YXRpY19jYXN0PEJZVEU+KAorICAgICAgICAgICAg
ICAgICAgICBlbnRyeS5Db21wb25lbnRDb3VudCA9IHN0YXRpY19jYXN0PEJZVEU+KHN0cmVhbU91
dFZhcnlpbmcuY29tcG9uZW50Q291bnQpOworICAgICAgICAgICAgICAgICAgICBlbnRyeS5PdXRw
dXRTbG90ICAgICA9IHN0YXRpY19jYXN0PEJZVEU+KAogICAgICAgICAgICAgICAgICAgICAgICAg
KHNlcGFyYXRlZE91dHB1dEJ1ZmZlcnMgPyBzdHJlYW1PdXRWYXJ5aW5nLm91dHB1dFNsb3QgOiAw
KSk7CiAgICAgICAgICAgICAgICAgICAgIHNvRGVjbGFyYXRpb24ucHVzaF9iYWNrKGVudHJ5KTsK
ICAgICAgICAgICAgICAgICB9CkBAIC0zMjkyLDQ3ICszNjU4LDYyIEBAIGdsOjpFcnJvciBSZW5k
ZXJlcjExOjpsb2FkRXhlY3V0YWJsZShjb25zdCB2b2lkICpmdW5jdGlvbiwKICAgICAgICAgICAg
ICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwogICAgICAgICAgICAgICAgIGlmIChGQUlM
RUQocmVzdWx0KSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgc3RlYW0gb3V0
cHV0IHNoYWRlciwgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6T3V0T2ZNZW1vcnkoKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBzdGVhbSBvdXRw
dXQgc2hhZGVyLCAiIDw8IHJlc3VsdDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICpvdXRFeGVjdXRhYmxlID0gbmV3IFNoYWRlckV4ZWN1dGFibGUxMShm
dW5jdGlvbiwgbGVuZ3RoLCB2ZXJ0ZXhTaGFkZXIsIHN0cmVhbU91dFNoYWRlcik7CisgICAgICAg
ICAgICAqb3V0RXhlY3V0YWJsZSA9CisgICAgICAgICAgICAgICAgbmV3IFNoYWRlckV4ZWN1dGFi
bGUxMShmdW5jdGlvbiwgbGVuZ3RoLCB2ZXJ0ZXhTaGFkZXIsIHN0cmVhbU91dFNoYWRlcik7CiAg
ICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIFNIQURFUl9QSVhFTDoKKyAgICAg
ICAgY2FzZSBTSEFERVJfUElYRUw6CiAgICAgICAgIHsKLSAgICAgICAgICAgIElEM0QxMVBpeGVs
U2hhZGVyICpwaXhlbFNoYWRlciA9IE5VTEw7CisgICAgICAgICAgICBJRDNEMTFQaXhlbFNoYWRl
ciAqcGl4ZWxTaGFkZXIgPSBudWxscHRyOwogCiAgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9
IG1EZXZpY2UtPkNyZWF0ZVBpeGVsU2hhZGVyKGZ1bmN0aW9uLCBsZW5ndGgsIE5VTEwsICZwaXhl
bFNoYWRlcik7CiAgICAgICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwogICAgICAg
ICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgcGl4
ZWwgc2hhZGVyLCByZXN1bHQ6IDB4JVguIiwgcmVzdWx0KTsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZ2w6Ok91dE9mTWVtb3J5KCkgPDwgIkZhaWxlZCB0byBjcmVhdGUgcGl4ZWwgc2hhZGVyLCAi
IDw8IHJlc3VsdDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgKm91dEV4ZWN1dGFibGUg
PSBuZXcgU2hhZGVyRXhlY3V0YWJsZTExKGZ1bmN0aW9uLCBsZW5ndGgsIHBpeGVsU2hhZGVyKTsK
ICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgU0hBREVSX0dFT01FVFJZOgor
ICAgICAgICBjYXNlIFNIQURFUl9HRU9NRVRSWToKICAgICAgICAgewotICAgICAgICAgICAgSUQz
RDExR2VvbWV0cnlTaGFkZXIgKmdlb21ldHJ5U2hhZGVyID0gTlVMTDsKKyAgICAgICAgICAgIElE
M0QxMUdlb21ldHJ5U2hhZGVyICpnZW9tZXRyeVNoYWRlciA9IG51bGxwdHI7CiAKICAgICAgICAg
ICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlR2VvbWV0cnlTaGFkZXIoZnVuY3Rp
b24sIGxlbmd0aCwgTlVMTCwgJmdlb21ldHJ5U2hhZGVyKTsKICAgICAgICAgICAgIEFTU0VSVChT
VUNDRUVERUQocmVzdWx0KSk7CiAgICAgICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVN
T1JZLCAiRmFpbGVkIHRvIGNyZWF0ZSBnZW9tZXRyeSBzaGFkZXIsIHJlc3VsdDogMHglWC4iLCBy
ZXN1bHQpOworICAgICAgICAgICAgICAgIHJldHVybiBnbDo6T3V0T2ZNZW1vcnkoKSA8PCAiRmFp
bGVkIHRvIGNyZWF0ZSBnZW9tZXRyeSBzaGFkZXIsICIgPDwgcmVzdWx0OwogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAqb3V0RXhlY3V0YWJsZSA9IG5ldyBTaGFkZXJFeGVjdXRhYmxlMTEo
ZnVuY3Rpb24sIGxlbmd0aCwgZ2VvbWV0cnlTaGFkZXIpOwogICAgICAgICB9CiAgICAgICAgIGJy
ZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIGNhc2UgU0hBREVS
X0NPTVBVVEU6CisgICAgICAgIHsKKyAgICAgICAgICAgIElEM0QxMUNvbXB1dGVTaGFkZXIgKmNv
bXB1dGVTaGFkZXIgPSBudWxscHRyOworCisgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1E
ZXZpY2UtPkNyZWF0ZUNvbXB1dGVTaGFkZXIoZnVuY3Rpb24sIGxlbmd0aCwgTlVMTCwgJmNvbXB1
dGVTaGFkZXIpOworICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKKyAgICAg
ICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZ2w6Ok91dE9mTWVtb3J5KCkgPDwgIkZhaWxlZCB0byBjcmVhdGUgY29tcHV0ZSBz
aGFkZXIsICIgPDwgcmVzdWx0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAqb3V0RXhl
Y3V0YWJsZSA9IG5ldyBTaGFkZXJFeGVjdXRhYmxlMTEoZnVuY3Rpb24sIGxlbmd0aCwgY29tcHV0
ZVNoYWRlcik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBSZW5k
ZXJlcjExOjpjb21waWxlVG9FeGVjdXRhYmxlKGdsOjpJbmZvTG9nICZpbmZvTG9nLApAQCAtMzM0
MCwyNyArMzcyMSwzMyBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Y29tcGlsZVRvRXhlY3V0YWJs
ZShnbDo6SW5mb0xvZyAmaW5mb0xvZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNoYWRlclR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEQzRFZhcnlpbmc+ICZzdHJlYW1PdXRWYXJ5
aW5ncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2Vw
YXJhdGVkT3V0cHV0QnVmZmVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEQzRENvbXBpbGVyV29ya2Fyb3VuZHMgJndvcmthcm91bmRzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYW5nbGU6OkNvbXBpbGVy
V29ya2Fyb3VuZHNEM0QgJndvcmthcm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU2hhZGVyRXhlY3V0YWJsZUQzRCAqKm91dEV4ZWN0dWFibGUpCiB7Ci0g
ICAgY29uc3QgY2hhciAqcHJvZmlsZVR5cGUgPSBOVUxMOworICAgIHN0ZDo6c3RyaW5nc3RyZWFt
IHByb2ZpbGVTdHJlYW07CisKICAgICBzd2l0Y2ggKHR5cGUpCiAgICAgewotICAgICAgY2FzZSBT
SEFERVJfVkVSVEVYOgotICAgICAgICBwcm9maWxlVHlwZSA9ICJ2cyI7Ci0gICAgICAgIGJyZWFr
OwotICAgICAgY2FzZSBTSEFERVJfUElYRUw6Ci0gICAgICAgIHByb2ZpbGVUeXBlID0gInBzIjsK
LSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIFNIQURFUl9HRU9NRVRSWToKLSAgICAgICAgcHJv
ZmlsZVR5cGUgPSAiZ3MiOwotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
IFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgICAgICBjYXNlIFNIQURFUl9WRVJURVg6CisgICAgICAgICAgICBwcm9maWxl
U3RyZWFtIDw8ICJ2cyI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTSEFERVJf
UElYRUw6CisgICAgICAgICAgICBwcm9maWxlU3RyZWFtIDw8ICJwcyI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBTSEFERVJfR0VPTUVUUlk6CisgICAgICAgICAgICBwcm9maWxl
U3RyZWFtIDw8ICJncyI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTSEFERVJf
Q09NUFVURToKKyAgICAgICAgICAgIHByb2ZpbGVTdHJlYW0gPDwgImNzIjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAg
ICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogICAgIH0K
IAotICAgIHN0ZDo6c3RyaW5nIHByb2ZpbGUgPSBGb3JtYXRTdHJpbmcoIiVzXyVkXyVkJXMiLCBw
cm9maWxlVHlwZSwgZ2V0TWFqb3JTaGFkZXJNb2RlbCgpLCBnZXRNaW5vclNoYWRlck1vZGVsKCks
IGdldFNoYWRlck1vZGVsU3VmZml4KCkuY19zdHIoKSk7CisgICAgcHJvZmlsZVN0cmVhbSA8PCAi
XyIgPDwgZ2V0TWFqb3JTaGFkZXJNb2RlbCgpIDw8ICJfIiA8PCBnZXRNaW5vclNoYWRlck1vZGVs
KCkKKyAgICAgICAgICAgICAgICAgIDw8IGdldFNoYWRlck1vZGVsU3VmZml4KCk7CisgICAgc3Rk
OjpzdHJpbmcgcHJvZmlsZSA9IHByb2ZpbGVTdHJlYW0uc3RyKCk7CiAKICAgICBVSU5UIGZsYWdz
ID0gRDNEQ09NUElMRV9PUFRJTUlaQVRJT05fTEVWRUwyOwogCkBAIC0zMzc2LDExICszNzYzLDEy
IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpjb21waWxlVG9FeGVjdXRhYmxlKGdsOjpJbmZvTG9n
ICZpbmZvTG9nLAogICAgIGlmICh3b3JrYXJvdW5kcy5lbmFibGVJRUVFU3RyaWN0bmVzcykKICAg
ICAgICAgZmxhZ3MgfD0gRDNEQ09NUElMRV9JRUVFX1NUUklDVE5FU1M7CiAKLSAgICAvLyBTb21l
dGltZXMgRDNEQ29tcGlsZSB3aWxsIGZhaWwgd2l0aCB0aGUgZGVmYXVsdCBjb21waWxhdGlvbiBm
bGFncyBmb3IgY29tcGxpY2F0ZWQgc2hhZGVycyB3aGVuIGl0IHdvdWxkIG90aGVyd2lzZSBwYXNz
IHdpdGggYWx0ZXJuYXRpdmUgb3B0aW9ucy4KKyAgICAvLyBTb21ldGltZXMgRDNEQ29tcGlsZSB3
aWxsIGZhaWwgd2l0aCB0aGUgZGVmYXVsdCBjb21waWxhdGlvbiBmbGFncyBmb3IgY29tcGxpY2F0
ZWQgc2hhZGVycworICAgIC8vIHdoZW4gaXQgd291bGQgb3RoZXJ3aXNlIHBhc3Mgd2l0aCBhbHRl
cm5hdGl2ZSBvcHRpb25zLgogICAgIC8vIFRyeSB0aGUgZGVmYXVsdCBmbGFncyBmaXJzdCBhbmQg
aWYgY29tcGlsYXRpb24gZmFpbHMsIHRyeSBzb21lIGFsdGVybmF0aXZlcy4KICAgICBzdGQ6OnZl
Y3RvcjxDb21waWxlQ29uZmlnPiBjb25maWdzOwotICAgIGNvbmZpZ3MucHVzaF9iYWNrKENvbXBp
bGVDb25maWcoZmxhZ3MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCIg
ICAgICAgICAgKSk7Ci0gICAgY29uZmlncy5wdXNoX2JhY2soQ29tcGlsZUNvbmZpZyhmbGFncyB8
IEQzRENPTVBJTEVfU0tJUF9WQUxJREFUSU9OLCAgICJza2lwIHZhbGlkYXRpb24iICApKTsKKyAg
ICBjb25maWdzLnB1c2hfYmFjayhDb21waWxlQ29uZmlnKGZsYWdzLCAiZGVmYXVsdCIpKTsKKyAg
ICBjb25maWdzLnB1c2hfYmFjayhDb21waWxlQ29uZmlnKGZsYWdzIHwgRDNEQ09NUElMRV9TS0lQ
X1ZBTElEQVRJT04sICJza2lwIHZhbGlkYXRpb24iKSk7CiAgICAgY29uZmlncy5wdXNoX2JhY2so
Q29tcGlsZUNvbmZpZyhmbGFncyB8IEQzRENPTVBJTEVfU0tJUF9PUFRJTUlaQVRJT04sICJza2lw
IG9wdGltaXphdGlvbiIpKTsKIAogICAgIGlmIChnZXRNYWpvclNoYWRlck1vZGVsKCkgPT0gNCAm
JiBnZXRTaGFkZXJNb2RlbFN1ZmZpeCgpICE9ICIiKQpAQCAtMzM5MiwxOSArMzc4MCwyMCBAQCBn
bDo6RXJyb3IgUmVuZGVyZXIxMTo6Y29tcGlsZVRvRXhlY3V0YWJsZShnbDo6SW5mb0xvZyAmaW5m
b0xvZywKICAgICAgICAgICAgIENvbXBpbGVDb25maWcoZmxhZ3MgfCBEM0RDT01QSUxFX0FWT0lE
X0ZMT1dfQ09OVFJPTCwgImF2b2lkIGZsb3cgY29udHJvbCIpKTsKICAgICB9CiAKLSAgICBEM0Rf
U0hBREVSX01BQ1JPIGxvb3BNYWNyb3NbXSA9IHsgeyJBTkdMRV9FTkFCTEVfTE9PUF9GTEFUVEVO
IiwgIjEifSwgezAsIDB9IH07CisgICAgRDNEX1NIQURFUl9NQUNSTyBsb29wTWFjcm9zW10gPSB7
eyJBTkdMRV9FTkFCTEVfTE9PUF9GTEFUVEVOIiwgIjEifSwgezAsIDB9fTsKIAogICAgIElEM0RC
bG9iICpiaW5hcnkgPSBOVUxMOwogICAgIHN0ZDo6c3RyaW5nIGRlYnVnSW5mbzsKICAgICBBTkdM
RV9UUlkobUNvbXBpbGVyLmNvbXBpbGVUb0JpbmFyeShpbmZvTG9nLCBzaGFkZXJITFNMLCBwcm9m
aWxlLCBjb25maWdzLCBsb29wTWFjcm9zLCAmYmluYXJ5LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZkZWJ1Z0luZm8pKTsKIAotICAgIC8vIEl0J3MgcG9zc2libGUg
dGhhdCBiaW5hcnkgaXMgTlVMTCBpZiB0aGUgY29tcGlsZXIgZmFpbGVkIGluIGFsbCBjb25maWd1
cmF0aW9ucy4gIFNldCB0aGUgZXhlY3V0YWJsZSB0byBOVUxMCi0gICAgLy8gYW5kIHJldHVybiBH
TF9OT19FUlJPUiB0byBzaWduaWZ5IHRoYXQgdGhlcmUgd2FzIGEgbGluayBlcnJvciBidXQgdGhl
IGludGVybmFsIHN0YXRlIGlzIHN0aWxsIE9LLgorICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBi
aW5hcnkgaXMgTlVMTCBpZiB0aGUgY29tcGlsZXIgZmFpbGVkIGluIGFsbCBjb25maWd1cmF0aW9u
cy4gIFNldCB0aGUKKyAgICAvLyBleGVjdXRhYmxlIHRvIE5VTEwgYW5kIHJldHVybiBHTF9OT19F
UlJPUiB0byBzaWduaWZ5IHRoYXQgdGhlcmUgd2FzIGEgbGluayBlcnJvciBidXQgdGhlCisgICAg
Ly8gaW50ZXJuYWwgc3RhdGUgaXMgc3RpbGwgT0suCiAgICAgaWYgKCFiaW5hcnkpCiAgICAgewog
ICAgICAgICAqb3V0RXhlY3R1YWJsZSA9IE5VTEw7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKICAg
ICBnbDo6RXJyb3IgZXJyb3IgPSBsb2FkRXhlY3V0YWJsZShiaW5hcnktPkdldEJ1ZmZlclBvaW50
ZXIoKSwgYmluYXJ5LT5HZXRCdWZmZXJTaXplKCksIHR5cGUsCkBAIC0zNDI0LDYgKzM4MTMsMTEg
QEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmNvbXBpbGVUb0V4ZWN1dGFibGUoZ2w6OkluZm9Mb2cg
JmluZm9Mb2csCiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKK2dsOjpFcnJvciBSZW5k
ZXJlcjExOjplbnN1cmVITFNMQ29tcGlsZXJJbml0aWFsaXplZCgpCit7CisgICAgcmV0dXJuIG1D
b21waWxlci5lbnN1cmVJbml0aWFsaXplZCgpOworfQorCiBVbmlmb3JtU3RvcmFnZUQzRCAqUmVu
ZGVyZXIxMTo6Y3JlYXRlVW5pZm9ybVN0b3JhZ2Uoc2l6ZV90IHN0b3JhZ2VTaXplKQogewogICAg
IHJldHVybiBuZXcgVW5pZm9ybVN0b3JhZ2UxMSh0aGlzLCBzdG9yYWdlU2l6ZSk7CkBAIC0zNDcz
LDcgKzM4NjcsNyBAQCBib29sIFJlbmRlcmVyMTE6OnN1cHBvcnRzRmFzdENvcHlCdWZmZXJUb1Rl
eHR1cmUoR0xlbnVtIGludGVybmFsRm9ybWF0KSBjb25zdAogICAgIH0KIAogICAgIC8vIFdlIGRv
bid0IHN1cHBvcnQgZm9ybWF0cyB3aGljaCB3ZSBjYW4ndCByZXByZXNlbnQgd2l0aG91dCBjb252
ZXJzaW9uCi0gICAgaWYgKGQzZDExRm9ybWF0SW5mby5mb3JtYXQuZ2xJbnRlcm5hbEZvcm1hdCAh
PSBpbnRlcm5hbEZvcm1hdCkKKyAgICBpZiAoZDNkMTFGb3JtYXRJbmZvLmZvcm1hdCgpLmdsSW50
ZXJuYWxGb3JtYXQgIT0gaW50ZXJuYWxGb3JtYXQpCiAgICAgewogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQpAQCAtMzQ5MywxMSArMzg4NywxNiBAQCBib29sIFJlbmRlcmVyMTE6OnN1cHBv
cnRzRmFzdENvcHlCdWZmZXJUb1RleHR1cmUoR0xlbnVtIGludGVybmFsRm9ybWF0KSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1nbDo6RXJyb3IgUmVuZGVyZXIxMTo6ZmFzdENvcHlCdWZm
ZXJUb1RleHR1cmUoY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywgdW5zaWduZWQg
aW50IG9mZnNldCwgUmVuZGVyVGFyZ2V0RDNEICpkZXN0UmVuZGVyVGFyZ2V0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0aW5hdGlvbkZv
cm1hdCwgR0xlbnVtIHNvdXJjZVBpeGVsc1R5cGUsIGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVhKQor
Z2w6OkVycm9yIFJlbmRlcmVyMTE6OmZhc3RDb3B5QnVmZmVyVG9UZXh0dXJlKGNvbnN0IGdsOjpQ
aXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJUYXJnZXREM0QgKmRlc3RSZW5kZXJUYXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGRlc3RpbmF0aW9uRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBzb3VyY2VQaXhlbHNUeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmRlc3RBcmVhKQogewogICAg
IEFTU0VSVChzdXBwb3J0c0Zhc3RDb3B5QnVmZmVyVG9UZXh0dXJlKGRlc3RpbmF0aW9uRm9ybWF0
KSk7Ci0gICAgcmV0dXJuIG1QaXhlbFRyYW5zZmVyLT5jb3B5QnVmZmVyVG9UZXh0dXJlKHVucGFj
aywgb2Zmc2V0LCBkZXN0UmVuZGVyVGFyZ2V0LCBkZXN0aW5hdGlvbkZvcm1hdCwgc291cmNlUGl4
ZWxzVHlwZSwgZGVzdEFyZWEpOworICAgIHJldHVybiBtUGl4ZWxUcmFuc2Zlci0+Y29weUJ1ZmZl
clRvVGV4dHVyZSh1bnBhY2ssIG9mZnNldCwgZGVzdFJlbmRlclRhcmdldCwgZGVzdGluYXRpb25G
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNv
dXJjZVBpeGVsc1R5cGUsIGRlc3RBcmVhKTsKIH0KIAogSW1hZ2VEM0QgKlJlbmRlcmVyMTE6OmNy
ZWF0ZUltYWdlKCkKQEAgLTM1MDgsNyArMzkwNyw3IEBAIEltYWdlRDNEICpSZW5kZXJlcjExOjpj
cmVhdGVJbWFnZSgpCiBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Z2VuZXJhdGVNaXBtYXAoSW1hZ2VE
M0QgKmRlc3QsIEltYWdlRDNEICpzcmMpCiB7CiAgICAgSW1hZ2UxMSAqZGVzdDExID0gR2V0QXM8
SW1hZ2UxMT4oZGVzdCk7Ci0gICAgSW1hZ2UxMSAqc3JjMTEgPSBHZXRBczxJbWFnZTExPihzcmMp
OworICAgIEltYWdlMTEgKnNyYzExICA9IEdldEFzPEltYWdlMTE+KHNyYyk7CiAgICAgcmV0dXJu
IEltYWdlMTE6OmdlbmVyYXRlTWlwbWFwKGRlc3QxMSwgc3JjMTEsIG1SZW5kZXJlcjExRGV2aWNl
Q2Fwcyk7CiB9CiAKQEAgLTM1NDgsMjQgKzM5NDcsNDcgQEAgVGV4dHVyZVN0b3JhZ2UgKlJlbmRl
cmVyMTE6OmNyZWF0ZVRleHR1cmVTdG9yYWdlRXh0ZXJuYWwoCiAgICAgcmV0dXJuIG5ldyBUZXh0
dXJlU3RvcmFnZTExX0V4dGVybmFsKHRoaXMsIHN0cmVhbSwgZGVzYyk7CiB9CiAKLVRleHR1cmVT
dG9yYWdlICpSZW5kZXJlcjExOjpjcmVhdGVUZXh0dXJlU3RvcmFnZTJEKEdMZW51bSBpbnRlcm5h
bGZvcm1hdCwgYm9vbCByZW5kZXJUYXJnZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0
LCBpbnQgbGV2ZWxzLCBib29sIGhpbnRMZXZlbFplcm9Pbmx5KQorVGV4dHVyZVN0b3JhZ2UgKlJl
bmRlcmVyMTE6OmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoR0xlbnVtIGludGVybmFsZm9ybWF0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBy
ZW5kZXJUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGV2ZWxzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoaW50TGV2ZWxaZXJvT25s
eSkKIHsKLSAgICByZXR1cm4gbmV3IFRleHR1cmVTdG9yYWdlMTFfMkQodGhpcywgaW50ZXJuYWxm
b3JtYXQsIHJlbmRlclRhcmdldCwgd2lkdGgsIGhlaWdodCwgbGV2ZWxzLCBoaW50TGV2ZWxaZXJv
T25seSk7CisgICAgcmV0dXJuIG5ldyBUZXh0dXJlU3RvcmFnZTExXzJEKHRoaXMsIGludGVybmFs
Zm9ybWF0LCByZW5kZXJUYXJnZXQsIHdpZHRoLCBoZWlnaHQsIGxldmVscywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGludExldmVsWmVyb09ubHkpOwogfQogCi1UZXh0dXJl
U3RvcmFnZSAqUmVuZGVyZXIxMTo6Y3JlYXRlVGV4dHVyZVN0b3JhZ2VDdWJlKEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgYm9vbCByZW5kZXJUYXJnZXQsIGludCBzaXplLCBpbnQgbGV2ZWxzLCBib29s
IGhpbnRMZXZlbFplcm9Pbmx5KQorVGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyMTE6OmNyZWF0ZVRl
eHR1cmVTdG9yYWdlQ3ViZShHTGVudW0gaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVuZGVyVGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IGxldmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBoaW50TGV2ZWxaZXJvT25seSkKIHsKLSAgICByZXR1cm4gbmV3IFRl
eHR1cmVTdG9yYWdlMTFfQ3ViZSh0aGlzLCBpbnRlcm5hbGZvcm1hdCwgcmVuZGVyVGFyZ2V0LCBz
aXplLCBsZXZlbHMsIGhpbnRMZXZlbFplcm9Pbmx5KTsKKyAgICByZXR1cm4gbmV3IFRleHR1cmVT
dG9yYWdlMTFfQ3ViZSh0aGlzLCBpbnRlcm5hbGZvcm1hdCwgcmVuZGVyVGFyZ2V0LCBzaXplLCBs
ZXZlbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGludExldmVsWmVy
b09ubHkpOwogfQogCi1UZXh0dXJlU3RvcmFnZSAqUmVuZGVyZXIxMTo6Y3JlYXRlVGV4dHVyZVN0
b3JhZ2UzRChHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgcmVuZGVyVGFyZ2V0LCBHTHNpemVp
IHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgaW50IGxldmVscykKK1RleHR1
cmVTdG9yYWdlICpSZW5kZXJlcjExOjpjcmVhdGVUZXh0dXJlU3RvcmFnZTNEKEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgcmVuZGVyVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBkZXB0aCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBs
ZXZlbHMpCiB7Ci0gICAgcmV0dXJuIG5ldyBUZXh0dXJlU3RvcmFnZTExXzNEKHRoaXMsIGludGVy
bmFsZm9ybWF0LCByZW5kZXJUYXJnZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBsZXZlbHMpOwor
ICAgIHJldHVybiBuZXcgVGV4dHVyZVN0b3JhZ2UxMV8zRCh0aGlzLCBpbnRlcm5hbGZvcm1hdCwg
cmVuZGVyVGFyZ2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGV2ZWxzKTsKIH0KIAotVGV4dHVyZVN0b3JhZ2UgKlJlbmRlcmVyMTE6
OmNyZWF0ZVRleHR1cmVTdG9yYWdlMkRBcnJheShHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wg
cmVuZGVyVGFyZ2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0
aCwgaW50IGxldmVscykKK1RleHR1cmVTdG9yYWdlICpSZW5kZXJlcjExOjpjcmVhdGVUZXh0dXJl
U3RvcmFnZTJEQXJyYXkoR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlbmRlclRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgZGVwdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZXZlbHMp
CiB7Ci0gICAgcmV0dXJuIG5ldyBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXkodGhpcywgaW50ZXJu
YWxmb3JtYXQsIHJlbmRlclRhcmdldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGxldmVscyk7Cisg
ICAgcmV0dXJuIG5ldyBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXkodGhpcywgaW50ZXJuYWxmb3Jt
YXQsIHJlbmRlclRhcmdldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzKTsKIH0KIAogZ2w6OkVycm9yIFJlbmRlcmVy
MTE6OnJlYWRGcm9tQXR0YWNobWVudChjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICZz
cmNBdHRhY2htZW50LApAQCAtMzYzNywxNSArNDA1OSwxNSBAQCBnbDo6RXJyb3IgUmVuZGVyZXIx
MTo6cmVhZEZyb21BdHRhY2htZW50KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgJnNy
Y0F0dAogICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyByZXNvbHZlRGVzYzsKICAgICAgICAg
cmVzb2x2ZURlc2MuV2lkdGggICAgICAgICAgICAgID0gc3RhdGljX2Nhc3Q8VUlOVD4odGV4U2l6
ZS53aWR0aCk7CiAgICAgICAgIHJlc29sdmVEZXNjLkhlaWdodCAgICAgICAgICAgICA9IHN0YXRp
Y19jYXN0PFVJTlQ+KHRleFNpemUuaGVpZ2h0KTsKLSAgICAgICAgcmVzb2x2ZURlc2MuTWlwTGV2
ZWxzID0gMTsKLSAgICAgICAgcmVzb2x2ZURlc2MuQXJyYXlTaXplID0gMTsKKyAgICAgICAgcmVz
b2x2ZURlc2MuTWlwTGV2ZWxzICAgICAgICAgID0gMTsKKyAgICAgICAgcmVzb2x2ZURlc2MuQXJy
YXlTaXplICAgICAgICAgID0gMTsKICAgICAgICAgcmVzb2x2ZURlc2MuRm9ybWF0ICAgICAgICAg
ICAgID0gdGV4dHVyZUhlbHBlci5nZXRGb3JtYXQoKTsKLSAgICAgICAgcmVzb2x2ZURlc2MuU2Ft
cGxlRGVzYy5Db3VudCA9IDE7CisgICAgICAgIHJlc29sdmVEZXNjLlNhbXBsZURlc2MuQ291bnQg
ICA9IDE7CiAgICAgICAgIHJlc29sdmVEZXNjLlNhbXBsZURlc2MuUXVhbGl0eSA9IDA7Ci0gICAg
ICAgIHJlc29sdmVEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKLSAgICAgICAgcmVz
b2x2ZURlc2MuQmluZEZsYWdzID0gMDsKLSAgICAgICAgcmVzb2x2ZURlc2MuQ1BVQWNjZXNzRmxh
Z3MgPSAwOwotICAgICAgICByZXNvbHZlRGVzYy5NaXNjRmxhZ3MgPSAwOworICAgICAgICByZXNv
bHZlRGVzYy5Vc2FnZSAgICAgICAgICAgICAgPSBEM0QxMV9VU0FHRV9ERUZBVUxUOworICAgICAg
ICByZXNvbHZlRGVzYy5CaW5kRmxhZ3MgICAgICAgICAgPSAwOworICAgICAgICByZXNvbHZlRGVz
Yy5DUFVBY2Nlc3NGbGFncyAgICAgPSAwOworICAgICAgICByZXNvbHZlRGVzYy5NaXNjRmxhZ3Mg
ICAgICAgICAgPSAwOwogCiAgICAgICAgIElEM0QxMVRleHR1cmUyRCAqcmVzb2x2ZVRleDJEID0g
bnVsbHB0cjsKICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtRGV2aWNlLT5DcmVhdGVUZXh0dXJl
MkQoJnJlc29sdmVEZXNjLCBudWxscHRyLCAmcmVzb2x2ZVRleDJEKTsKQEAgLTM3MTcsMjAgKzQx
MzksMjEgQEAgZ2w6OkVycm9yIFJlbmRlcmVyMTE6OnBhY2tQaXhlbHMoY29uc3QgVGV4dHVyZUhl
bHBlcjExICZ0ZXh0dXJlSGVscGVyLAogICAgIGlmIChGQUlMRUQoaHIpKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGhyID09IEVfT1VUT0ZNRU1PUlkpOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gbWFwIGludGVybmFsIHRleHR1cmUgZm9yIHJl
YWRpbmcsIHJlc3VsdDogMHglWC4iLCBocik7CisgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
T1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIG1hcCBp
bnRlcm5hbCB0ZXh0dXJlIGZvciByZWFkaW5nLCByZXN1bHQ6IDB4JVguIiwgaHIpOwogICAgIH0K
IAogICAgIHVpbnQ4X3QgKnNvdXJjZSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QgKj4obWFwcGluZy5w
RGF0YSk7CiAgICAgaW50IGlucHV0UGl0Y2ggID0gc3RhdGljX2Nhc3Q8aW50PihtYXBwaW5nLlJv
d1BpdGNoKTsKIAogICAgIGNvbnN0IGF1dG8gJmZvcm1hdEluZm8gPSB0ZXh0dXJlSGVscGVyLmdl
dEZvcm1hdFNldCgpOwotICAgIEFTU0VSVChmb3JtYXRJbmZvLmZvcm1hdC5nbEludGVybmFsRm9y
bWF0ICE9IEdMX05PTkUpOworICAgIEFTU0VSVChmb3JtYXRJbmZvLmZvcm1hdCgpLmdsSW50ZXJu
YWxGb3JtYXQgIT0gR0xfTk9ORSk7CiAKLSAgICBQYWNrUGl4ZWxzKHBhcmFtcywgZm9ybWF0SW5m
by5mb3JtYXQsIGlucHV0UGl0Y2gsIHNvdXJjZSwgcGl4ZWxzT3V0KTsKKyAgICBQYWNrUGl4ZWxz
KHBhcmFtcywgZm9ybWF0SW5mby5mb3JtYXQoKSwgaW5wdXRQaXRjaCwgc291cmNlLCBwaXhlbHNP
dXQpOwogCiAgICAgbURldmljZUNvbnRleHQtPlVubWFwKHJlYWRSZXNvdXJjZSwgMCk7CiAKLSAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKIH0KIAogZ2w6OkVycm9yIFJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZWN0KGNvbnN0
IGdsOjpSZWN0YW5nbGUgJnJlYWRSZWN0SW4sCkBAIC0zNzUxLDI5ICs0MTc0LDMxIEBAIGdsOjpF
cnJvciBSZW5kZXJlcjExOjpibGl0UmVuZGVyYnVmZmVyUmVjdChjb25zdCBnbDo6UmVjdGFuZ2xl
ICZyZWFkUmVjdEluLAogICAgIFJlbmRlclRhcmdldDExICpkcmF3UmVuZGVyVGFyZ2V0MTEgPSBH
ZXRBczxSZW5kZXJUYXJnZXQxMT4oZHJhd1JlbmRlclRhcmdldCk7CiAgICAgaWYgKCFkcmF3UmVu
ZGVyVGFyZ2V0MTEpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9N
RU1PUlksICJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIGludGVybmFsIGRyYXcgcmVuZGVyIHRhcmdl
dCBmcm9tIHRoZSBkcmF3IGZyYW1lYnVmZmVyLiIpOworICAgICAgICByZXR1cm4gZ2w6Ok91dE9m
TWVtb3J5KCkKKyAgICAgICAgICAgICAgIDw8ICJGYWlsZWQgdG8gcmV0cmlldmUgdGhlIGludGVy
bmFsIGRyYXcgcmVuZGVyIHRhcmdldCBmcm9tIHRoZSBkcmF3IGZyYW1lYnVmZmVyLiI7CiAgICAg
fQogCiAgICAgVGV4dHVyZUhlbHBlcjExIGRyYXdUZXh0dXJlID0gVGV4dHVyZUhlbHBlcjExOjpN
YWtlQW5kUmVmZXJlbmNlKAogICAgICAgICBkcmF3UmVuZGVyVGFyZ2V0MTEtPmdldFRleHR1cmUo
KSwgZHJhd1JlbmRlclRhcmdldDExLT5nZXRGb3JtYXRTZXQoKSk7Ci0gICAgdW5zaWduZWQgaW50
IGRyYXdTdWJyZXNvdXJjZSA9IGRyYXdSZW5kZXJUYXJnZXQxMS0+Z2V0U3VicmVzb3VyY2VJbmRl
eCgpOworICAgIHVuc2lnbmVkIGludCBkcmF3U3VicmVzb3VyY2UgICAgPSBkcmF3UmVuZGVyVGFy
Z2V0MTEtPmdldFN1YnJlc291cmNlSW5kZXgoKTsKICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3
ICpkcmF3UlRWID0gZHJhd1JlbmRlclRhcmdldDExLT5nZXRSZW5kZXJUYXJnZXRWaWV3KCk7CiAg
ICAgSUQzRDExRGVwdGhTdGVuY2lsVmlldyAqZHJhd0RTViA9IGRyYXdSZW5kZXJUYXJnZXQxMS0+
Z2V0RGVwdGhTdGVuY2lsVmlldygpOwogCiAgICAgUmVuZGVyVGFyZ2V0MTEgKnJlYWRSZW5kZXJU
YXJnZXQxMSA9IEdldEFzPFJlbmRlclRhcmdldDExPihyZWFkUmVuZGVyVGFyZ2V0KTsKICAgICBp
ZiAoIXJlYWRSZW5kZXJUYXJnZXQxMSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0byByZXRyaWV2ZSB0aGUgaW50ZXJuYWwgcmVhZCBy
ZW5kZXIgdGFyZ2V0IGZyb20gdGhlIHJlYWQgZnJhbWVidWZmZXIuIik7CisgICAgICAgIHJldHVy
biBnbDo6T3V0T2ZNZW1vcnkoKQorICAgICAgICAgICAgICAgPDwgIkZhaWxlZCB0byByZXRyaWV2
ZSB0aGUgaW50ZXJuYWwgcmVhZCByZW5kZXIgdGFyZ2V0IGZyb20gdGhlIHJlYWQgZnJhbWVidWZm
ZXIuIjsKICAgICB9CiAKICAgICBUZXh0dXJlSGVscGVyMTEgcmVhZFRleHR1cmU7Ci0gICAgdW5z
aWduZWQgaW50IHJlYWRTdWJyZXNvdXJjZSA9IDA7CisgICAgdW5zaWduZWQgaW50IHJlYWRTdWJy
ZXNvdXJjZSAgICAgID0gMDsKICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnJlYWRTUlYg
PSBudWxscHRyOwogCiAgICAgaWYgKHJlYWRSZW5kZXJUYXJnZXQtPmdldFNhbXBsZXMoKSA+IDEp
CiAgICAgewotICAgICAgICBhdXRvIHJlYWRSVDExID0gR2V0QXM8UmVuZGVyVGFyZ2V0MTE+KHJl
YWRSZW5kZXJUYXJnZXQpOwotICAgICAgICBBTkdMRV9UUllfUkVTVUxUKHJlc29sdmVNdWx0aXNh
bXBsZWRUZXh0dXJlKHJlYWRSVDExLCBkZXB0aEJsaXQsIHN0ZW5jaWxCbGl0KSwgcmVhZFRleHR1
cmUpOworICAgICAgICBBTkdMRV9UUllfUkVTVUxUKHJlc29sdmVNdWx0aXNhbXBsZWRUZXh0dXJl
KHJlYWRSZW5kZXJUYXJnZXQxMSwgZGVwdGhCbGl0LCBzdGVuY2lsQmxpdCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVhZFRleHR1cmUpOwogCiAgICAgICAgIGlmICghc3RlbmNpbEJsaXQp
CiAgICAgICAgIHsKQEAgLTM3ODksOSArNDIxNCw5IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpi
bGl0UmVuZGVyYnVmZmVyUmVjdChjb25zdCBnbDo6UmVjdGFuZ2xlICZyZWFkUmVjdEluLAogICAg
ICAgICAgICAgICAgIG1EZXZpY2UtPkNyZWF0ZVNoYWRlclJlc291cmNlVmlldyhyZWFkVGV4dHVy
ZS5nZXRSZXNvdXJjZSgpLCAmdmlld0Rlc2MsICZyZWFkU1JWKTsKICAgICAgICAgICAgIGlmIChG
QUlMRUQoaHJlc3VsdCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGds
OjpFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgR0xfT1VUX09GX01FTU9SWSwKLSAgICAgICAg
ICAgICAgICAgICAgIlJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZWN0OiBGYWlsZWQgdG8g
Y3JlYXRlIHRlbXBvcmFyeSBTUlYuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdsOjpPdXRP
Zk1lbW9yeSgpCisgICAgICAgICAgICAgICAgICAgICAgIDw8ICJSZW5kZXJlcjExOjpibGl0UmVu
ZGVyYnVmZmVyUmVjdDogRmFpbGVkIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgU1JWLCAiCisgICAgICAg
ICAgICAgICAgICAgICAgIDw8IGhyZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CkBAIC0zODAxLDcgKzQyMjYsNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6YmxpdFJlbmRl
cmJ1ZmZlclJlY3QoY29uc3QgZ2w6OlJlY3RhbmdsZSAmcmVhZFJlY3RJbiwKICAgICAgICAgcmVh
ZFRleHR1cmUgPSBUZXh0dXJlSGVscGVyMTE6Ok1ha2VBbmRSZWZlcmVuY2UocmVhZFJlbmRlclRh
cmdldDExLT5nZXRUZXh0dXJlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlYWRSZW5kZXJUYXJnZXQxMS0+Z2V0Rm9ybWF0U2V0KCkp
OwogICAgICAgICByZWFkU3VicmVzb3VyY2UgPSByZWFkUmVuZGVyVGFyZ2V0MTEtPmdldFN1YnJl
c291cmNlSW5kZXgoKTsKLSAgICAgICAgcmVhZFNSViA9IHJlYWRSZW5kZXJUYXJnZXQxMS0+Z2V0
QmxpdFNoYWRlclJlc291cmNlVmlldygpOworICAgICAgICByZWFkU1JWICAgICAgICAgPSByZWFk
UmVuZGVyVGFyZ2V0MTEtPmdldEJsaXRTaGFkZXJSZXNvdXJjZVZpZXcoKTsKICAgICAgICAgaWYg
KHJlYWRTUlYgPT0gbnVsbHB0cikKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGRlcHRo
QmxpdCB8fCBzdGVuY2lsQmxpdCk7CkBAIC0zODI1LDggKzQyNTAsNyBAQCBnbDo6RXJyb3IgUmVu
ZGVyZXIxMTo6YmxpdFJlbmRlcmJ1ZmZlclJlY3QoY29uc3QgZ2w6OlJlY3RhbmdsZSAmcmVhZFJl
Y3RJbiwKICAgICAvLyBieSBpbnRlcm5hbGx5IHNjYWxpbmcgdGhlIHJlYWQgYW5kIGRyYXcgcmVj
dGFuZ2xlcy4KICAgICBnbDo6UmVjdGFuZ2xlIHJlYWRSZWN0ID0gcmVhZFJlY3RJbjsKICAgICBn
bDo6UmVjdGFuZ2xlIGRyYXdSZWN0ID0gZHJhd1JlY3RJbjsKLSAgICBhdXRvIHJlYWRUb0RyYXdY
ICAgICAgID0gWyZkcmF3UmVjdEluLCAmcmVhZFJlY3RJbl0oaW50IHJlYWRPZmZzZXQpCi0gICAg
eworICAgIGF1dG8gcmVhZFRvRHJhd1ggICAgICAgPSBbJmRyYXdSZWN0SW4sICZyZWFkUmVjdElu
XShpbnQgcmVhZE9mZnNldCkgewogICAgICAgICBkb3VibGUgcmVhZFRvRHJhd1NjYWxlID0KICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oZHJhd1JlY3RJbi53aWR0aCkgLyBzdGF0aWNf
Y2FzdDxkb3VibGU+KHJlYWRSZWN0SW4ud2lkdGgpOwogICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8aW50Pihyb3VuZChzdGF0aWNfY2FzdDxkb3VibGU+KHJlYWRPZmZzZXQpICogcmVhZFRvRHJh
d1NjYWxlKSk7CkBAIC0zODQyLDggKzQyNjYsNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Ymxp
dFJlbmRlcmJ1ZmZlclJlY3QoY29uc3QgZ2w6OlJlY3RhbmdsZSAmcmVhZFJlY3RJbiwKICAgICAg
ICAgZHJhd1JlY3Qud2lkdGggLT0gZHJhd09mZnNldDsKICAgICB9CiAKLSAgICBhdXRvIHJlYWRU
b0RyYXdZID0gWyZkcmF3UmVjdEluLCAmcmVhZFJlY3RJbl0oaW50IHJlYWRPZmZzZXQpCi0gICAg
eworICAgIGF1dG8gcmVhZFRvRHJhd1kgPSBbJmRyYXdSZWN0SW4sICZyZWFkUmVjdEluXShpbnQg
cmVhZE9mZnNldCkgewogICAgICAgICBkb3VibGUgcmVhZFRvRHJhd1NjYWxlID0KICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oZHJhd1JlY3RJbi5oZWlnaHQpIC8gc3RhdGljX2Nhc3Q8
ZG91YmxlPihyZWFkUmVjdEluLmhlaWdodCk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxp
bnQ+KHJvdW5kKHN0YXRpY19jYXN0PGRvdWJsZT4ocmVhZE9mZnNldCkgKiByZWFkVG9EcmF3U2Nh
bGUpKTsKQEAgLTM4ODIsNyArNDMwNSw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjExOjpibGl0UmVu
ZGVyYnVmZmVyUmVjdChjb25zdCBnbDo6UmVjdGFuZ2xlICZyZWFkUmVjdEluLAogICAgIGNvbnN0
IGF1dG8gJmRlc3RGb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhkcmF3UmVu
ZGVyVGFyZ2V0LT5nZXRJbnRlcm5hbEZvcm1hdCgpKTsKICAgICBjb25zdCBhdXRvICZzcmNGb3Jt
YXRJbmZvICA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8ocmVhZFJlbmRlclRhcmdldC0+Z2V0
SW50ZXJuYWxGb3JtYXQoKSk7CiAgICAgY29uc3QgYXV0byAmZm9ybWF0U2V0ICAgICAgPSBkcmF3
UmVuZGVyVGFyZ2V0MTEtPmdldEZvcm1hdFNldCgpOwotICAgIGNvbnN0IGF1dG8gJm5hdGl2ZUZv
cm1hdCAgID0gZm9ybWF0U2V0LmZvcm1hdDsKKyAgICBjb25zdCBhdXRvICZuYXRpdmVGb3JtYXQg
ICA9IGZvcm1hdFNldC5mb3JtYXQoKTsKIAogICAgIC8vIFNvbWUgYmxpdHMgcmVxdWlyZSBtYXNr
aW5nIG9mZiBlbXVsYXRlZCB0ZXh0dXJlIGNoYW5uZWxzLiBlZzogZnJvbSBSR0JBOCB0byBSR0I4
LCB3ZQogICAgIC8vIGVtdWxhdGUgUkdCOCB3aXRoIFJHQkE4LCBzbyB3ZSBuZWVkIHRvIG1hc2sg
b2ZmIHRoZSBhbHBoYSBjaGFubmVsIHdoZW4gd2UgY29weS4KQEAgLTM5MDksNyArNDMzMiw4IEBA
IGdsOjpFcnJvciBSZW5kZXJlcjExOjpibGl0UmVuZGVyYnVmZmVyUmVjdChjb25zdCBnbDo6UmVj
dGFuZ2xlICZyZWFkUmVjdEluLAogCiAgICAgYm9vbCBzdHJldGNoUmVxdWlyZWQgPSByZWFkUmVj
dC53aWR0aCAhPSBkcmF3UmVjdC53aWR0aCB8fCByZWFkUmVjdC5oZWlnaHQgIT0gZHJhd1JlY3Qu
aGVpZ2h0OwogCi0gICAgYm9vbCBmbGlwUmVxdWlyZWQgPSByZWFkUmVjdC53aWR0aCA8IDAgfHwg
cmVhZFJlY3QuaGVpZ2h0IDwgMCB8fCBkcmF3UmVjdC53aWR0aCA8IDAgfHwgZHJhd1JlY3QuaGVp
Z2h0IDwgMDsKKyAgICBib29sIGZsaXBSZXF1aXJlZCA9CisgICAgICAgIHJlYWRSZWN0LndpZHRo
IDwgMCB8fCByZWFkUmVjdC5oZWlnaHQgPCAwIHx8IGRyYXdSZWN0LndpZHRoIDwgMCB8fCBkcmF3
UmVjdC5oZWlnaHQgPCAwOwogCiAgICAgYm9vbCBvdXRPZkJvdW5kcyA9IHJlYWRSZWN0LnggPCAw
IHx8IHJlYWRSZWN0LnggKyByZWFkUmVjdC53aWR0aCA+IHJlYWRTaXplLndpZHRoIHx8CiAgICAg
ICAgICAgICAgICAgICAgICAgIHJlYWRSZWN0LnkgPCAwIHx8IHJlYWRSZWN0LnkgKyByZWFkUmVj
dC5oZWlnaHQgPiByZWFkU2l6ZS5oZWlnaHQgfHwKQEAgLTM5MTksOCArNDM0Myw4IEBAIGdsOjpF
cnJvciBSZW5kZXJlcjExOjpibGl0UmVuZGVyYnVmZmVyUmVjdChjb25zdCBnbDo6UmVjdGFuZ2xl
ICZyZWFkUmVjdEluLAogICAgIGJvb2wgcGFydGlhbERTQmxpdCA9CiAgICAgICAgIChuYXRpdmVG
b3JtYXQuZGVwdGhCaXRzID4gMCAmJiBkZXB0aEJsaXQpICE9IChuYXRpdmVGb3JtYXQuc3RlbmNp
bEJpdHMgPiAwICYmIHN0ZW5jaWxCbGl0KTsKIAotICAgIGlmIChyZWFkUmVuZGVyVGFyZ2V0MTEt
PmdldEZvcm1hdFNldCgpLmZvcm1hdC5pZCA9PQotICAgICAgICAgICAgZHJhd1JlbmRlclRhcmdl
dDExLT5nZXRGb3JtYXRTZXQoKS5mb3JtYXQuaWQgJiYKKyAgICBpZiAocmVhZFJlbmRlclRhcmdl
dDExLT5nZXRGb3JtYXRTZXQoKS5mb3JtYXRJRCA9PQorICAgICAgICAgICAgZHJhd1JlbmRlclRh
cmdldDExLT5nZXRGb3JtYXRTZXQoKS5mb3JtYXRJRCAmJgogICAgICAgICAhc3RyZXRjaFJlcXVp
cmVkICYmICFvdXRPZkJvdW5kcyAmJiAhZmxpcFJlcXVpcmVkICYmICFwYXJ0aWFsRFNCbGl0ICYm
CiAgICAgICAgICFjb2xvck1hc2tpbmdOZWVkZWQgJiYgKCEoZGVwdGhCbGl0IHx8IHN0ZW5jaWxC
bGl0KSB8fCB3aG9sZUJ1ZmZlckNvcHkpKQogICAgIHsKQEAgLTM5MjgsMTYgKzQzNTIsMTcgQEAg
Z2w6OkVycm9yIFJlbmRlcmVyMTE6OmJsaXRSZW5kZXJidWZmZXJSZWN0KGNvbnN0IGdsOjpSZWN0
YW5nbGUgJnJlYWRSZWN0SW4sCiAgICAgICAgIFVJTlQgZHN0WSA9IGRyYXdSZWN0Lnk7CiAKICAg
ICAgICAgRDNEMTFfQk9YIHJlYWRCb3g7Ci0gICAgICAgIHJlYWRCb3gubGVmdCA9IHJlYWRSZWN0
Lng7Ci0gICAgICAgIHJlYWRCb3gucmlnaHQgPSByZWFkUmVjdC54ICsgcmVhZFJlY3Qud2lkdGg7
Ci0gICAgICAgIHJlYWRCb3gudG9wID0gcmVhZFJlY3QueTsKKyAgICAgICAgcmVhZEJveC5sZWZ0
ICAgPSByZWFkUmVjdC54OworICAgICAgICByZWFkQm94LnJpZ2h0ICA9IHJlYWRSZWN0LnggKyBy
ZWFkUmVjdC53aWR0aDsKKyAgICAgICAgcmVhZEJveC50b3AgICAgPSByZWFkUmVjdC55OwogICAg
ICAgICByZWFkQm94LmJvdHRvbSA9IHJlYWRSZWN0LnkgKyByZWFkUmVjdC5oZWlnaHQ7Ci0gICAg
ICAgIHJlYWRCb3guZnJvbnQgPSAwOwotICAgICAgICByZWFkQm94LmJhY2sgPSAxOworICAgICAg
ICByZWFkQm94LmZyb250ICA9IDA7CisgICAgICAgIHJlYWRCb3guYmFjayAgID0gMTsKIAogICAg
ICAgICBpZiAoc2Npc3Nvck5lZWRlZCkKICAgICAgICAgewotICAgICAgICAgICAgLy8gZHJhd1Jl
Y3QgaXMgZ3VhcmFudGVlZCB0byBoYXZlIHBvc2l0aXZlIHdpZHRoIGFuZCBoZWlnaHQgYmVjYXVz
ZSBzdHJldGNoUmVxdWlyZWQgaXMgZmFsc2UuCisgICAgICAgICAgICAvLyBkcmF3UmVjdCBpcyBn
dWFyYW50ZWVkIHRvIGhhdmUgcG9zaXRpdmUgd2lkdGggYW5kIGhlaWdodCBiZWNhdXNlIHN0cmV0
Y2hSZXF1aXJlZCBpcworICAgICAgICAgICAgLy8gZmFsc2UuCiAgICAgICAgICAgICBBU1NFUlQo
ZHJhd1JlY3Qud2lkdGggPj0gMCB8fCBkcmF3UmVjdC5oZWlnaHQgPj0gMCk7CiAKICAgICAgICAg
ICAgIGlmIChkcmF3UmVjdC54IDwgc2Npc3Nvci0+eCkKQEAgLTQwMDksNyArNDQzNCw3IEBAIGds
OjpFcnJvciBSZW5kZXJlcjExOjpibGl0UmVuZGVyYnVmZmVyUmVjdChjb25zdCBnbDo6UmVjdGFu
Z2xlICZyZWFkUmVjdEluLAogCiBib29sIFJlbmRlcmVyMTE6OmlzRVMzQ2FwYWJsZSgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIChkM2QxMV9nbDo6R2V0TWF4aW11bUNsaWVudFZlcnNpb24obVJlbmRl
cmVyMTFEZXZpY2VDYXBzLmZlYXR1cmVMZXZlbCkgPiAyKTsKKyAgICByZXR1cm4gKGQzZDExX2ds
OjpHZXRNYXhpbXVtQ2xpZW50VmVyc2lvbihtUmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxl
dmVsKS5tYWpvciA+IDIpOwogfTsKIAogdm9pZCBSZW5kZXJlcjExOjpvblN3YXAoKQpAQCAtNDAx
Nyw3ICs0NDQyLDggQEAgdm9pZCBSZW5kZXJlcjExOjpvblN3YXAoKQogICAgIC8vIFNlbmQgaGlz
dG9ncmFtIHVwZGF0ZXMgZXZlcnkgaGFsZiBob3VyCiAgICAgY29uc3QgZG91YmxlIGtIaXN0b2dy
YW1VcGRhdGVJbnRlcnZhbCA9IDMwICogNjA7CiAKLSAgICBjb25zdCBkb3VibGUgY3VycmVudFRp
bWUgPSBBTkdMRVBsYXRmb3JtQ3VycmVudCgpLT5tb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KTsKKyAgICBhdXRvICpwbGF0Zm9ybSAgICAgICAgICAgICAgICAgICA9IEFOR0xFUGxhdGZvcm1D
dXJyZW50KCk7CisgICAgY29uc3QgZG91YmxlIGN1cnJlbnRUaW1lICAgICAgICAgPSBwbGF0Zm9y
bS0+bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKHBsYXRmb3JtKTsKICAgICBjb25zdCBkb3Vi
bGUgdGltZVNpbmNlTGFzdFVwZGF0ZSA9IGN1cnJlbnRUaW1lIC0gbUxhc3RIaXN0b2dyYW1VcGRh
dGVUaW1lOwogCiAgICAgaWYgKHRpbWVTaW5jZUxhc3RVcGRhdGUgPiBrSGlzdG9ncmFtVXBkYXRl
SW50ZXJ2YWwpCkBAIC00MDk4LDcgKzQ1MjQsNyBAQCBSZW5kZXJlcjExOjpyZXNvbHZlTXVsdGlz
YW1wbGVkVGV4dHVyZShSZW5kZXJUYXJnZXQxMSAqcmVuZGVyVGFyZ2V0LCBib29sIGRlcHRoLAog
Ym9vbCBSZW5kZXJlcjExOjpnZXRMVUlEKExVSUQgKmFkYXB0ZXJMdWlkKSBjb25zdAogewogICAg
IGFkYXB0ZXJMdWlkLT5IaWdoUGFydCA9IDA7Ci0gICAgYWRhcHRlckx1aWQtPkxvd1BhcnQgPSAw
OworICAgIGFkYXB0ZXJMdWlkLT5Mb3dQYXJ0ICA9IDA7CiAKICAgICBpZiAoIW1EeGdpQWRhcHRl
cikKICAgICB7CkBAIC00MTE1LDkgKzQ1NDEsMTEgQEAgYm9vbCBSZW5kZXJlcjExOjpnZXRMVUlE
KExVSUQgKmFkYXB0ZXJMdWlkKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1WZXJ0ZXhD
b252ZXJzaW9uVHlwZSBSZW5kZXJlcjExOjpnZXRWZXJ0ZXhDb252ZXJzaW9uVHlwZShnbDo6VmVy
dGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBlKSBjb25zdAorVmVydGV4Q29udmVyc2lvblR5
cGUgUmVuZGVyZXIxMTo6Z2V0VmVydGV4Q29udmVyc2lvblR5cGUoCisgICAgZ2w6OlZlcnRleEZv
cm1hdFR5cGUgdmVydGV4Rm9ybWF0VHlwZSkgY29uc3QKIHsKLSAgICByZXR1cm4gZDNkMTE6Okdl
dFZlcnRleEZvcm1hdEluZm8odmVydGV4Rm9ybWF0VHlwZSwgbVJlbmRlcmVyMTFEZXZpY2VDYXBz
LmZlYXR1cmVMZXZlbCkuY29udmVyc2lvblR5cGU7CisgICAgcmV0dXJuIGQzZDExOjpHZXRWZXJ0
ZXhGb3JtYXRJbmZvKHZlcnRleEZvcm1hdFR5cGUsIG1SZW5kZXJlcjExRGV2aWNlQ2Fwcy5mZWF0
dXJlTGV2ZWwpCisgICAgICAgIC5jb252ZXJzaW9uVHlwZTsKIH0KIAogR0xlbnVtIFJlbmRlcmVy
MTE6OmdldFZlcnRleENvbXBvbmVudFR5cGUoZ2w6OlZlcnRleEZvcm1hdFR5cGUgdmVydGV4Rm9y
bWF0VHlwZSkgY29uc3QKQEAgLTQxMjksNiArNDU1Nyw3IEBAIEdMZW51bSBSZW5kZXJlcjExOjpn
ZXRWZXJ0ZXhDb21wb25lbnRUeXBlKGdsOjpWZXJ0ZXhGb3JtYXRUeXBlIHZlcnRleEZvcm1hdFR5
cGUpCiAKIGdsOjpFcnJvck9yUmVzdWx0PHVuc2lnbmVkIGludD4gUmVuZGVyZXIxMTo6Z2V0VmVy
dGV4U3BhY2VSZXF1aXJlZCgKICAgICBjb25zdCBnbDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIs
CisgICAgY29uc3QgZ2w6OlZlcnRleEJpbmRpbmcgJmJpbmRpbmcsCiAgICAgR0xzaXplaSBjb3Vu
dCwKICAgICBHTHNpemVpIGluc3RhbmNlcykgY29uc3QKIHsKQEAgLTQxMzgsMTQgKzQ1NjcsMTQg
QEAgZ2w6OkVycm9yT3JSZXN1bHQ8dW5zaWduZWQgaW50PiBSZW5kZXJlcjExOjpnZXRWZXJ0ZXhT
cGFjZVJlcXVpcmVkKAogICAgIH0KIAogICAgIHVuc2lnbmVkIGludCBlbGVtZW50Q291bnQgPSAw
OwotICAgIGlmIChpbnN0YW5jZXMgPT0gMCB8fCBhdHRyaWIuZGl2aXNvciA9PSAwKQorICAgIGlm
IChpbnN0YW5jZXMgPT0gMCB8fCBiaW5kaW5nLmRpdmlzb3IgPT0gMCkKICAgICB7CiAgICAgICAg
IGVsZW1lbnRDb3VudCA9IGNvdW50OwogICAgIH0KICAgICBlbHNlCiAgICAgewogICAgICAgICAv
LyBSb3VuZCB1cCB0byBkaXZpc29yLCBpZiBwb3NzaWJsZQotICAgICAgICBlbGVtZW50Q291bnQg
PSBVbnNpZ25lZENlaWxEaXZpZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihpbnN0YW5jZXMp
LCBhdHRyaWIuZGl2aXNvcik7CisgICAgICAgIGVsZW1lbnRDb3VudCA9IFVuc2lnbmVkQ2VpbERp
dmlkZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGluc3RhbmNlcyksIGJpbmRpbmcuZGl2aXNv
cik7CiAgICAgfQogCiAgICAgZ2w6OlZlcnRleEZvcm1hdFR5cGUgZm9ybWF0VHlwZSAgICAgID0g
Z2w6OkdldFZlcnRleEZvcm1hdFR5cGUoYXR0cmliKTsKQEAgLTQxNjMsMTQgKzQ1OTIsMTYgQEAg
Z2w6OkVycm9yT3JSZXN1bHQ8dW5zaWduZWQgaW50PiBSZW5kZXJlcjExOjpnZXRWZXJ0ZXhTcGFj
ZVJlcXVpcmVkKAogICAgIHJldHVybiBlbGVtZW50U2l6ZSAqIGVsZW1lbnRDb3VudDsKIH0KIAot
dm9pZCBSZW5kZXJlcjExOjpnZW5lcmF0ZUNhcHMoZ2w6OkNhcHMgKm91dENhcHMsIGdsOjpUZXh0
dXJlQ2Fwc01hcCAqb3V0VGV4dHVyZUNhcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnbDo6RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucywgZ2w6OkxpbWl0YXRpb25zICpvdXRMaW1p
dGF0aW9ucykgY29uc3QKK3ZvaWQgUmVuZGVyZXIxMTo6Z2VuZXJhdGVDYXBzKGdsOjpDYXBzICpv
dXRDYXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVDYXBzTWFw
ICpvdXRUZXh0dXJlQ2FwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpFeHRl
bnNpb25zICpvdXRFeHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6
OkxpbWl0YXRpb25zICpvdXRMaW1pdGF0aW9ucykgY29uc3QKIHsKICAgICBkM2QxMV9nbDo6R2Vu
ZXJhdGVDYXBzKG1EZXZpY2UsIG1EZXZpY2VDb250ZXh0LCBtUmVuZGVyZXIxMURldmljZUNhcHMs
IG91dENhcHMsIG91dFRleHR1cmVDYXBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0
RXh0ZW5zaW9ucywgb3V0TGltaXRhdGlvbnMpOwogfQogCi1Xb3JrYXJvdW5kc0QzRCBSZW5kZXJl
cjExOjpnZW5lcmF0ZVdvcmthcm91bmRzKCkgY29uc3QKK2FuZ2xlOjpXb3JrYXJvdW5kc0QzRCBS
ZW5kZXJlcjExOjpnZW5lcmF0ZVdvcmthcm91bmRzKCkgY29uc3QKIHsKICAgICByZXR1cm4gZDNk
MTE6OkdlbmVyYXRlV29ya2Fyb3VuZHMobVJlbmRlcmVyMTFEZXZpY2VDYXBzLCBtQWRhcHRlckRl
c2NyaXB0aW9uKTsKIH0KQEAgLTQyMjksNyArNDY2MCw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjEx
OjpnZW5lcmljRHJhd0VsZW1lbnRzKENvbnRleHQxMSAqY29udGV4dCwKICAgICAgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCi0gICAgQU5HTEVfVFJZKHVwZGF0ZVN0YXRlKGRhdGEs
IG1vZGUpKTsKKyAgICBBTkdMRV9UUlkodXBkYXRlU3RhdGUoY29udGV4dCwgbW9kZSkpOwogCiAg
ICAgVHJhbnNsYXRlZEluZGV4RGF0YSBpbmRleEluZm87CiAgICAgaW5kZXhJbmZvLmluZGV4UmFu
Z2UgPSBpbmRleFJhbmdlOwpAQCAtNDI3Nyw3ICs0NzA4LDcgQEAgZ2w6OkVycm9yIFJlbmRlcmVy
MTE6OmdlbmVyaWNEcmF3QXJyYXlzKENvbnRleHQxMSAqY29udGV4dCwKICAgICAgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCi0gICAgQU5HTEVfVFJZKHVwZGF0ZVN0YXRlKGRhdGEs
IG1vZGUpKTsKKyAgICBBTkdMRV9UUlkodXBkYXRlU3RhdGUoY29udGV4dCwgbW9kZSkpOwogICAg
IEFOR0xFX1RSWShhcHBseVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycyhkYXRhKSk7CiAgICAgQU5H
TEVfVFJZKGFwcGx5VmVydGV4QnVmZmVyKGdsU3RhdGUsIG1vZGUsIGZpcnN0LCBjb3VudCwgaW5z
dGFuY2VzLCBudWxscHRyKSk7CiAgICAgQU5HTEVfVFJZKGFwcGx5VGV4dHVyZXMoY29udGV4dCwg
ZGF0YSkpOwpAQCAtNDI5Nyw0NCArNDcyOCw1NyBAQCBnbDo6RXJyb3IgUmVuZGVyZXIxMTo6Z2Vu
ZXJpY0RyYXdBcnJheXMoQ29udGV4dDExICpjb250ZXh0LAogICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCi1GcmFtZWJ1ZmZlckltcGwgKlJlbmRlcmVyMTE6OmNyZWF0ZURlZmF1bHRGcmFt
ZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpCitnbDo6RXJyb3IgUmVu
ZGVyZXIxMTo6Z2VuZXJpY0RyYXdJbmRpcmVjdChDb250ZXh0MTEgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpcmVjdCkK
IHsKLSAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyMTEoc3RhdGUsIHRoaXMpOwotfQorICAgIGNv
bnN0IGF1dG8gJmRhdGEgICAgID0gY29udGV4dC0+Z2V0Q29udGV4dFN0YXRlKCk7CisgICAgY29u
c3QgYXV0byAmZ2xTdGF0ZSAgPSBkYXRhLmdldFN0YXRlKCk7CisgICAgZ2w6OlByb2dyYW0gKnBy
b2dyYW0gPSBnbFN0YXRlLmdldFByb2dyYW0oKTsKKyAgICBBU1NFUlQocHJvZ3JhbSAhPSBudWxs
cHRyKTsKKyAgICBQcm9ncmFtRDNEICpwcm9ncmFtRDNEID0gR2V0SW1wbEFzPFByb2dyYW1EM0Q+
KHByb2dyYW0pOworICAgIGJvb2wgdXNlc1BvaW50U2l6ZSAgICAgPSBwcm9ncmFtRDNELT51c2Vz
UG9pbnRTaXplKCk7CisgICAgcHJvZ3JhbUQzRC0+dXBkYXRlU2FtcGxlck1hcHBpbmcoKTsKIAot
Z2w6OkVycm9yIFJlbmRlcmVyMTE6OmdldFNjcmF0Y2hNZW1vcnlCdWZmZXIoc2l6ZV90IHJlcXVl
c3RlZFNpemUsIE1lbW9yeUJ1ZmZlciAqKmJ1ZmZlck91dCkKLXsKLSAgICBpZiAobVNjcmF0Y2hN
ZW1vcnlCdWZmZXIuc2l6ZSgpID09IHJlcXVlc3RlZFNpemUpCi0gICAgewotICAgICAgICBtU2Ny
YXRjaE1lbW9yeUJ1ZmZlclJlc2V0Q291bnRlciA9IFNjcmF0Y2hNZW1vcnlCdWZmZXJMaWZldGlt
ZTsKLSAgICAgICAgKmJ1ZmZlck91dCA9ICZtU2NyYXRjaE1lbW9yeUJ1ZmZlcjsKLSAgICAgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7Ci0gICAgfQorICAgIEFOR0xFX1RSWShnZW5lcmF0ZVN3aXp6
bGVzKGRhdGEpKTsKKyAgICBhcHBseVByaW1pdGl2ZVR5cGUobW9kZSwgMCwgdXNlc1BvaW50U2l6
ZSk7CisgICAgQU5HTEVfVFJZKHVwZGF0ZVN0YXRlKGNvbnRleHQsIG1vZGUpKTsKKyAgICBBTkdM
RV9UUlkoYXBwbHlUcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcnMoZGF0YSkpOworICAgIEFTU0VSVCgh
Z2xTdGF0ZS5pc1RyYW5zZm9ybUZlZWRiYWNrQWN0aXZlVW5wYXVzZWQoKSk7CisgICAgQU5HTEVf
VFJZKGFwcGx5VGV4dHVyZXMoY29udGV4dCwgZGF0YSkpOworICAgIEFOR0xFX1RSWShhcHBseVNo
YWRlcnMoZGF0YSwgbW9kZSkpOworICAgIEFOR0xFX1RSWShwcm9ncmFtRDNELT5hcHBseVVuaWZv
cm1CdWZmZXJzKGRhdGEpKTsKIAotICAgIGlmIChtU2NyYXRjaE1lbW9yeUJ1ZmZlci5zaXplKCkg
PiByZXF1ZXN0ZWRTaXplKQorICAgIGlmICh0eXBlID09IEdMX05PTkUpCiAgICAgewotICAgICAg
ICBtU2NyYXRjaE1lbW9yeUJ1ZmZlclJlc2V0Q291bnRlci0tOworICAgICAgICBBTkdMRV9UUlko
ZHJhd0FycmF5c0luZGlyZWN0SW1wbChkYXRhLCBtb2RlLCBpbmRpcmVjdCkpOwogICAgIH0KLQot
ICAgIGlmIChtU2NyYXRjaE1lbW9yeUJ1ZmZlclJlc2V0Q291bnRlciA8PSAwIHx8IG1TY3JhdGNo
TWVtb3J5QnVmZmVyLnNpemUoKSA8IHJlcXVlc3RlZFNpemUpCisgICAgZWxzZQogICAgIHsKLSAg
ICAgICAgbVNjcmF0Y2hNZW1vcnlCdWZmZXIucmVzaXplKDApOwotICAgICAgICBpZiAoIW1TY3Jh
dGNoTWVtb3J5QnVmZmVyLnJlc2l6ZShyZXF1ZXN0ZWRTaXplKSkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGFsbG9j
YXRlIGludGVybmFsIGJ1ZmZlci4iKTsKLSAgICAgICAgfQotICAgICAgICBtU2NyYXRjaE1lbW9y
eUJ1ZmZlclJlc2V0Q291bnRlciA9IFNjcmF0Y2hNZW1vcnlCdWZmZXJMaWZldGltZTsKKyAgICAg
ICAgQU5HTEVfVFJZKGRyYXdFbGVtZW50c0luZGlyZWN0SW1wbChkYXRhLCBtb2RlLCB0eXBlLCBp
bmRpcmVjdCkpOwogICAgIH0KIAotICAgIEFTU0VSVChtU2NyYXRjaE1lbW9yeUJ1ZmZlci5zaXpl
KCkgPj0gcmVxdWVzdGVkU2l6ZSk7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CiAKLSAg
ICAqYnVmZmVyT3V0ID0gJm1TY3JhdGNoTWVtb3J5QnVmZmVyOworRnJhbWVidWZmZXJJbXBsICpS
ZW5kZXJlcjExOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVy
U3RhdGUgJnN0YXRlKQoreworICAgIHJldHVybiBuZXcgRnJhbWVidWZmZXIxMShzdGF0ZSwgdGhp
cyk7Cit9CisKK2dsOjpFcnJvciBSZW5kZXJlcjExOjpnZXRTY3JhdGNoTWVtb3J5QnVmZmVyKHNp
emVfdCByZXF1ZXN0ZWRTaXplLCBhbmdsZTo6TWVtb3J5QnVmZmVyICoqYnVmZmVyT3V0KQorewor
ICAgIGlmICghbVNjcmF0Y2hNZW1vcnlCdWZmZXIuZ2V0KHJlcXVlc3RlZFNpemUsIGJ1ZmZlck91
dCkpCisgICAgeworICAgICAgICByZXR1cm4gZ2w6Ok91dE9mTWVtb3J5KCkgPDwgIkZhaWxlZCB0
byBhbGxvY2F0ZSBpbnRlcm5hbCBidWZmZXIuIjsKKyAgICB9CiAgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7CiB9CiAKIGdsOjpWZXJzaW9uIFJlbmRlcmVyMTE6OmdldE1heFN1cHBvcnRlZEVTVmVy
c2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGdsOjpWZXJzaW9uKGQzZDExX2dsOjpHZXRNYXhp
bXVtQ2xpZW50VmVyc2lvbihtUmVuZGVyZXIxMURldmljZUNhcHMuZmVhdHVyZUxldmVsKSwgMCk7
CisgICAgcmV0dXJuIGQzZDExX2dsOjpHZXRNYXhpbXVtQ2xpZW50VmVyc2lvbihtUmVuZGVyZXIx
MURldmljZUNhcHMuZmVhdHVyZUxldmVsKTsKIH0KIAogZ2w6OkRlYnVnQW5ub3RhdG9yICpSZW5k
ZXJlcjExOjpnZXRBbm5vdGF0b3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVy
MTEuaAppbmRleCA2MzNjZjJiMjMxOS4uNWEyMjM0OGQ5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyZXIx
MS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvUmVuZGVyZXIxMS5oCkBAIC0xMjMsOSArMTIzLDE3IEBAIGNsYXNzIFJlbmRlcmVy
MTEgOiBwdWJsaWMgUmVuZGVyZXJEM0QKIAogICAgIFN3YXBDaGFpbkQzRCAqY3JlYXRlU3dhcENo
YWluKE5hdGl2ZVdpbmRvd0QzRCAqbmF0aXZlV2luZG93LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEhBTkRMRSBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJVW5rbm93biAqZDNkVGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gYmFja0J1ZmZlckZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMaW50IG9yaWVudGF0aW9uKSBvdmVycmlkZTsKKyAgICBlZ2w6
OkVycm9yIGdldEQzRFRleHR1cmVJbmZvKElVbmtub3duICpkM2RUZXh0dXJlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50ICp3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTGludCAqaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtICpmYm9Gb3JtYXQpIGNvbnN0IG92ZXJyaWRlOworICAgIGVnbDo6RXJy
b3IgdmFsaWRhdGVTaGFyZUhhbmRsZShjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUgc2hhcmVIYW5kbGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRy
aWJzKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGdsOjpFcnJvciBzZXRTYW1wbGVyU3RhdGUoZ2w6
OlNhbXBsZXJUeXBlIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5k
ZXgsCkBAIC0xMzcsMTAgKzE0NSw5IEBAIGNsYXNzIFJlbmRlcmVyMTEgOiBwdWJsaWMgUmVuZGVy
ZXJEM0QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8
R0xpbnQ+ICZ2ZXJ0ZXhVbmlmb3JtQnVmZmVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0xpbnQ+ICZmcmFnbWVudFVuaWZvcm1CdWZmZXJzKSBv
dmVycmlkZTsKIAotICAgIGdsOjpFcnJvciB1cGRhdGVTdGF0ZShjb25zdCBnbDo6Q29udGV4dFN0
YXRlICZkYXRhLCBHTGVudW0gZHJhd01vZGUpOworICAgIGdsOjpFcnJvciB1cGRhdGVTdGF0ZShD
b250ZXh0SW1wbCAqY29udGV4dEltcGwsIEdMZW51bSBkcmF3TW9kZSk7CiAKICAgICBib29sIGFw
cGx5UHJpbWl0aXZlVHlwZShHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgYm9vbCB1c2VzUG9p
bnRTaXplKTsKLSAgICBnbDo6RXJyb3IgYXBwbHlSZW5kZXJUYXJnZXQoZ2w6OkZyYW1lYnVmZmVy
ICpmcmFtZUJ1ZmZlcik7CiAgICAgZ2w6OkVycm9yIGFwcGx5VW5pZm9ybXMoY29uc3QgUHJvZ3Jh
bUQzRCAmcHJvZ3JhbUQzRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHJh
d01vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8RDNE
VW5pZm9ybSAqPiAmdW5pZm9ybUFycmF5KSBvdmVycmlkZTsKQEAgLTIxMSw2ICsyMTgsNyBAQCBj
bGFzcyBSZW5kZXJlcjExIDogcHVibGljIFJlbmRlcmVyRDNECiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0
dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRl
c3RUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRlc3RMZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tGbGlwWSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLApAQCAtMjQwLDggKzI0OCwx
MCBAQCBjbGFzcyBSZW5kZXJlcjExIDogcHVibGljIFJlbmRlcmVyRDNECiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2hhZGVyVHlwZSB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEQzRFZhcnlpbmc+ICZzdHJlYW1PdXRW
YXJ5aW5ncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNlcGFyYXRl
ZE91dHB1dEJ1ZmZlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RDNEQ29tcGlsZXJXb3JrYXJvdW5kcyAmd29ya2Fyb3VuZHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgYW5nbGU6OkNvbXBpbGVyV29ya2Fyb3VuZHNEM0QgJndvcmth
cm91bmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRlckV4ZWN1dGFi
bGVEM0QgKipvdXRFeGVjdHVhYmxlKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZW5zdXJlSExT
TENvbXBpbGVySW5pdGlhbGl6ZWQoKSBvdmVycmlkZTsKKwogICAgIFVuaWZvcm1TdG9yYWdlRDNE
ICpjcmVhdGVVbmlmb3JtU3RvcmFnZShzaXplX3Qgc3RvcmFnZVNpemUpIG92ZXJyaWRlOwogCiAg
ICAgLy8gSW1hZ2Ugb3BlcmF0aW9ucwpAQCAtMzE3LDcgKzMyNywxMSBAQCBjbGFzcyBSZW5kZXJl
cjExIDogcHVibGljIFJlbmRlcmVyRDNECiAgICAgYm9vbCBnZXRMVUlEKExVSUQgKmFkYXB0ZXJM
dWlkKSBjb25zdCBvdmVycmlkZTsKICAgICBWZXJ0ZXhDb252ZXJzaW9uVHlwZSBnZXRWZXJ0ZXhD
b252ZXJzaW9uVHlwZShnbDo6VmVydGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBlKSBjb25z
dCBvdmVycmlkZTsKICAgICBHTGVudW0gZ2V0VmVydGV4Q29tcG9uZW50VHlwZShnbDo6VmVydGV4
Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBlKSBjb25zdCBvdmVycmlkZTsKKworICAgIC8vIFdh
cm5pbmc6IHlvdSBzaG91bGQgZW5zdXJlIGJpbmRpbmcgcmVhbGx5IG1hdGNoZXMgYXR0cmliLmJp
bmRpbmdJbmRleCBiZWZvcmUgdXNpbmcgdGhpcworICAgIC8vIGZ1bmN0aW9uLgogICAgIGdsOjpF
cnJvck9yUmVzdWx0PHVuc2lnbmVkIGludD4gZ2V0VmVydGV4U3BhY2VSZXF1aXJlZChjb25zdCBn
bDo6VmVydGV4QXR0cmlidXRlICZhdHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5nICZi
aW5kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcykgY29uc3Qgb3Zl
cnJpZGU7CiAKQEAgLTMzNCw3ICszNDgsNyBAQCBjbGFzcyBSZW5kZXJlcjExIDogcHVibGljIFJl
bmRlcmVyRDNECiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29sb3JC
bGl0LCBib29sIGRlcHRoQmxpdCwgYm9vbCBzdGVuY2lsQmxpdCk7CiAKICAgICBib29sIGlzRVMz
Q2FwYWJsZSgpIGNvbnN0OwotICAgIGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZnZXRSZW5k
ZXJlcjExRGV2aWNlQ2FwcygpIHsgcmV0dXJuIG1SZW5kZXJlcjExRGV2aWNlQ2FwczsgfTsKKyAg
ICBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZ2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSBj
b25zdCB7IHJldHVybiBtUmVuZGVyZXIxMURldmljZUNhcHM7IH07CiAKICAgICBSZW5kZXJlckNs
YXNzIGdldFJlbmRlcmVyQ2xhc3MoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBSRU5ERVJFUl9E
M0QxMTsgfQogICAgIElucHV0TGF5b3V0Q2FjaGUgKmdldElucHV0TGF5b3V0Q2FjaGUoKSB7IHJl
dHVybiAmbUlucHV0TGF5b3V0Q2FjaGU7IH0KQEAgLTM2MCwxMCArMzc0LDE1IEBAIGNsYXNzIFJl
bmRlcmVyMTEgOiBwdWJsaWMgUmVuZGVyZXJEM0QKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGluc3RhbmNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSk7CiAKKyAgICBnbDo6RXJyb3Ig
Z2VuZXJpY0RyYXdJbmRpcmVjdChDb250ZXh0MTEgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x2b2lkICppbmRpcmVjdCk7CisKICAgICAvLyBOZWNlc3NhcnkgaGFjayBmb3IgZGVm
YXVsdCBmcmFtZWJ1ZmZlcnMgaW4gRDNELgogICAgIEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRGVm
YXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkgb3ZlcnJp
ZGU7CiAKLSAgICBnbDo6RXJyb3IgZ2V0U2NyYXRjaE1lbW9yeUJ1ZmZlcihzaXplX3QgcmVxdWVz
dGVkU2l6ZSwgTWVtb3J5QnVmZmVyICoqYnVmZmVyT3V0KTsKKyAgICBnbDo6RXJyb3IgZ2V0U2Ny
YXRjaE1lbW9yeUJ1ZmZlcihzaXplX3QgcmVxdWVzdGVkU2l6ZSwgYW5nbGU6Ok1lbW9yeUJ1ZmZl
ciAqKmJ1ZmZlck91dCk7CiAKICAgICBnbDo6VmVyc2lvbiBnZXRNYXhTdXBwb3J0ZWRFU1ZlcnNp
b24oKSBjb25zdCBvdmVycmlkZTsKIApAQCAtMzgzLDI0ICs0MDIsMzUgQEAgY2xhc3MgUmVuZGVy
ZXIxMSA6IHB1YmxpYyBSZW5kZXJlckQzRAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9p
ZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3Rh
bmNlcyk7Ci0KLSAgICB2b2lkIGdlbmVyYXRlQ2FwcyhnbDo6Q2FwcyAqb3V0Q2FwcywgZ2w6OlRl
eHR1cmVDYXBzTWFwICpvdXRUZXh0dXJlQ2FwcywKKyAgICBnbDo6RXJyb3IgZHJhd0FycmF5c0lu
ZGlyZWN0SW1wbChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpOworICAgIGdsOjpFcnJvciBk
cmF3RWxlbWVudHNJbmRpcmVjdEltcGwoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGlyZWN0KTsKKwor
ICAgIC8vIFN1cHBvcnQgZGlyZWN0bHkgdXNpbmcgaW5kaXJlY3QgZHJhdyBidWZmZXIuCisgICAg
Ym9vbCBzdXBwb3J0c0Zhc3RJbmRpcmVjdERyYXcoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwgR0xl
bnVtIG1vZGUsIEdMZW51bSB0eXBlKTsKKworICAgIHZvaWQgZ2VuZXJhdGVDYXBzKGdsOjpDYXBz
ICpvdXRDYXBzLAorICAgICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJlQ2Fwc01hcCAqb3V0
VGV4dHVyZUNhcHMsCiAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkV4dGVuc2lvbnMgKm91dEV4
dGVuc2lvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkxpbWl0YXRpb25zICpvdXRMaW1p
dGF0aW9ucykgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBXb3JrYXJvdW5kc0QzRCBnZW5lcmF0ZVdv
cmthcm91bmRzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYW5nbGU6Oldvcmthcm91bmRzRDNEIGdl
bmVyYXRlV29ya2Fyb3VuZHMoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGdsOjpFcnJvciBkcmF3
TGluZUxvb3AoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNl
cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRyYW5zbGF0ZWRJbmRleERhdGEg
KmluZGV4SW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBiYXNlVmVydGV4LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluc3RhbmNlcyk7CiAgICAgZ2w6OkVycm9y
IGRyYXdUcmlhbmdsZUZhbihjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0x2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1p
bkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJhc2VWZXJ0ZXgsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5zdGFuY2VzKTsKIAogICAgIGdsOjpF
cnJvciBhcHBseVNoYWRlcnMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgR0xlbnVtIGRy
YXdNb2RlKTsKQEAgLTU1OSw4ICs1ODksNyBAQCBjbGFzcyBSZW5kZXJlcjExIDogcHVibGljIFJl
bmRlcmVyRDNECiAKICAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1TY3JhdGNoSW5kZXhEYXRhQnVm
ZmVyOwogCi0gICAgTWVtb3J5QnVmZmVyIG1TY3JhdGNoTWVtb3J5QnVmZmVyOwotICAgIHVuc2ln
bmVkIGludCBtU2NyYXRjaE1lbW9yeUJ1ZmZlclJlc2V0Q291bnRlcjsKKyAgICBhbmdsZTo6U2Ny
YXRjaEJ1ZmZlciBtU2NyYXRjaE1lbW9yeUJ1ZmZlcjsKIAogICAgIGdsOjpEZWJ1Z0Fubm90YXRv
ciAqbUFubm90YXRvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TaGFkZXJFeGVjdXRhYmxlMTEuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TaGFk
ZXJFeGVjdXRhYmxlMTEuY3BwCmluZGV4IDRkYTUxYWZlNDlmLi4wYTdlYzVmNzg5YSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9TaGFkZXJFeGVjdXRhYmxlMTEuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU2hhZGVyRXhlY3V0YWJsZTExLmNwcApA
QCAtMTcsMjcgKzE3LDQyIEBAIFNoYWRlckV4ZWN1dGFibGUxMTo6U2hhZGVyRXhlY3V0YWJsZTEx
KGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCBJRDNECiAgICAgOiBTaGFkZXJF
eGVjdXRhYmxlRDNEKGZ1bmN0aW9uLCBsZW5ndGgpCiB7CiAgICAgbVBpeGVsRXhlY3V0YWJsZSA9
IGV4ZWN1dGFibGU7Ci0gICAgbVZlcnRleEV4ZWN1dGFibGUgPSBOVUxMOwotICAgIG1HZW9tZXRy
eUV4ZWN1dGFibGUgPSBOVUxMOwotICAgIG1TdHJlYW1PdXRFeGVjdXRhYmxlID0gTlVMTDsKKyAg
ICBtVmVydGV4RXhlY3V0YWJsZSAgICA9IG51bGxwdHI7CisgICAgbUdlb21ldHJ5RXhlY3V0YWJs
ZSAgPSBudWxscHRyOworICAgIG1TdHJlYW1PdXRFeGVjdXRhYmxlID0gbnVsbHB0cjsKKyAgICBt
Q29tcHV0ZUV4ZWN1dGFibGUgICA9IG51bGxwdHI7CiB9CiAKIFNoYWRlckV4ZWN1dGFibGUxMTo6
U2hhZGVyRXhlY3V0YWJsZTExKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCBJ
RDNEMTFWZXJ0ZXhTaGFkZXIgKmV4ZWN1dGFibGUsIElEM0QxMUdlb21ldHJ5U2hhZGVyICpzdHJl
YW1PdXQpCiAgICAgOiBTaGFkZXJFeGVjdXRhYmxlRDNEKGZ1bmN0aW9uLCBsZW5ndGgpCiB7CiAg
ICAgbVZlcnRleEV4ZWN1dGFibGUgPSBleGVjdXRhYmxlOwotICAgIG1QaXhlbEV4ZWN1dGFibGUg
PSBOVUxMOwotICAgIG1HZW9tZXRyeUV4ZWN1dGFibGUgPSBOVUxMOworICAgIG1QaXhlbEV4ZWN1
dGFibGUgICAgID0gbnVsbHB0cjsKKyAgICBtR2VvbWV0cnlFeGVjdXRhYmxlICA9IG51bGxwdHI7
CiAgICAgbVN0cmVhbU91dEV4ZWN1dGFibGUgPSBzdHJlYW1PdXQ7CisgICAgbUNvbXB1dGVFeGVj
dXRhYmxlICAgPSBudWxscHRyOwogfQogCiBTaGFkZXJFeGVjdXRhYmxlMTE6OlNoYWRlckV4ZWN1
dGFibGUxMShjb25zdCB2b2lkICpmdW5jdGlvbiwgc2l6ZV90IGxlbmd0aCwgSUQzRDExR2VvbWV0
cnlTaGFkZXIgKmV4ZWN1dGFibGUpCiAgICAgOiBTaGFkZXJFeGVjdXRhYmxlRDNEKGZ1bmN0aW9u
LCBsZW5ndGgpCiB7CiAgICAgbUdlb21ldHJ5RXhlY3V0YWJsZSA9IGV4ZWN1dGFibGU7Ci0gICAg
bVZlcnRleEV4ZWN1dGFibGUgPSBOVUxMOwotICAgIG1QaXhlbEV4ZWN1dGFibGUgPSBOVUxMOwot
ICAgIG1TdHJlYW1PdXRFeGVjdXRhYmxlID0gTlVMTDsKKyAgICBtVmVydGV4RXhlY3V0YWJsZSAg
ICA9IG51bGxwdHI7CisgICAgbVBpeGVsRXhlY3V0YWJsZSAgICAgPSBudWxscHRyOworICAgIG1T
dHJlYW1PdXRFeGVjdXRhYmxlID0gbnVsbHB0cjsKKyAgICBtQ29tcHV0ZUV4ZWN1dGFibGUgICA9
IG51bGxwdHI7Cit9CisKK1NoYWRlckV4ZWN1dGFibGUxMTo6U2hhZGVyRXhlY3V0YWJsZTExKGNv
bnN0IHZvaWQgKmZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IElEM0QxMUNvbXB1dGVTaGFkZXIgKmV4ZWN1dGFibGUpCisgICAgOiBTaGFkZXJFeGVjdXRhYmxl
RDNEKGZ1bmN0aW9uLCBsZW5ndGgpCit7CisgICAgbUNvbXB1dGVFeGVjdXRhYmxlICAgPSBleGVj
dXRhYmxlOworICAgIG1QaXhlbEV4ZWN1dGFibGUgICAgID0gbnVsbHB0cjsKKyAgICBtVmVydGV4
RXhlY3V0YWJsZSAgICA9IG51bGxwdHI7CisgICAgbUdlb21ldHJ5RXhlY3V0YWJsZSAgPSBudWxs
cHRyOworICAgIG1TdHJlYW1PdXRFeGVjdXRhYmxlID0gbnVsbHB0cjsKIH0KIAogU2hhZGVyRXhl
Y3V0YWJsZTExOjp+U2hhZGVyRXhlY3V0YWJsZTExKCkKQEAgLTQ2LDYgKzYxLDcgQEAgU2hhZGVy
RXhlY3V0YWJsZTExOjp+U2hhZGVyRXhlY3V0YWJsZTExKCkKICAgICBTYWZlUmVsZWFzZShtUGl4
ZWxFeGVjdXRhYmxlKTsKICAgICBTYWZlUmVsZWFzZShtR2VvbWV0cnlFeGVjdXRhYmxlKTsKICAg
ICBTYWZlUmVsZWFzZShtU3RyZWFtT3V0RXhlY3V0YWJsZSk7CisgICAgU2FmZVJlbGVhc2UobUNv
bXB1dGVFeGVjdXRhYmxlKTsKIH0KIAogSUQzRDExVmVydGV4U2hhZGVyICpTaGFkZXJFeGVjdXRh
YmxlMTE6OmdldFZlcnRleFNoYWRlcigpIGNvbnN0CkBAIC02OCw2ICs4NCwxMSBAQCBJRDNEMTFH
ZW9tZXRyeVNoYWRlciAqU2hhZGVyRXhlY3V0YWJsZTExOjpnZXRTdHJlYW1PdXRTaGFkZXIoKSBj
b25zdAogICAgIHJldHVybiBtU3RyZWFtT3V0RXhlY3V0YWJsZTsKIH0KIAorSUQzRDExQ29tcHV0
ZVNoYWRlciAqU2hhZGVyRXhlY3V0YWJsZTExOjpnZXRDb21wdXRlU2hhZGVyKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbUNvbXB1dGVFeGVjdXRhYmxlOworfQorCiBVbmlmb3JtU3RvcmFnZTExOjpV
bmlmb3JtU3RvcmFnZTExKFJlbmRlcmVyMTEgKnJlbmRlcmVyLCBzaXplX3QgaW5pdGlhbFNpemUp
CiAgICAgOiBVbmlmb3JtU3RvcmFnZUQzRChpbml0aWFsU2l6ZSksCiAgICAgICBtQ29uc3RhbnRC
dWZmZXIoTlVMTCkKQEAgLTg1LDcgKzEwNiw2IEBAIFVuaWZvcm1TdG9yYWdlMTE6OlVuaWZvcm1T
dG9yYWdlMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIsIHNpemVfdCBpbml0aWFsU2l6ZSkKICAgICAg
ICAgY29uc3RhbnRCdWZmZXJEZXNjcmlwdGlvbi5TdHJ1Y3R1cmVCeXRlU3RyaWRlID0gMDsKIAog
ICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGQzZDExRGV2aWNlLT5DcmVhdGVCdWZmZXIoJmNvbnN0
YW50QnVmZmVyRGVzY3JpcHRpb24sIE5VTEwsICZtQ29uc3RhbnRCdWZmZXIpOwotICAgICAgICBV
TlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHJlc3VsdCk7CiAgICAgICAgIEFTU0VSVChTVUNDRUVE
RUQocmVzdWx0KSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TaGFkZXJFeGVjdXRhYmxlMTEuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
U2hhZGVyRXhlY3V0YWJsZTExLmgKaW5kZXggMzc5ZjM5ZmU1M2QuLjFmZTFhMjBhOTE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL1NoYWRlckV4ZWN1dGFibGUxMS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU2hhZGVyRXhlY3V0YWJsZTExLmgKQEAg
LTIzLDYgKzIzLDcgQEAgY2xhc3MgU2hhZGVyRXhlY3V0YWJsZTExIDogcHVibGljIFNoYWRlckV4
ZWN1dGFibGVEM0QKICAgICBTaGFkZXJFeGVjdXRhYmxlMTEoY29uc3Qgdm9pZCAqZnVuY3Rpb24s
IHNpemVfdCBsZW5ndGgsIElEM0QxMVBpeGVsU2hhZGVyICpleGVjdXRhYmxlKTsKICAgICBTaGFk
ZXJFeGVjdXRhYmxlMTEoY29uc3Qgdm9pZCAqZnVuY3Rpb24sIHNpemVfdCBsZW5ndGgsIElEM0Qx
MVZlcnRleFNoYWRlciAqZXhlY3V0YWJsZSwgSUQzRDExR2VvbWV0cnlTaGFkZXIgKnN0cmVhbU91
dCk7CiAgICAgU2hhZGVyRXhlY3V0YWJsZTExKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3Qg
bGVuZ3RoLCBJRDNEMTFHZW9tZXRyeVNoYWRlciAqZXhlY3V0YWJsZSk7CisgICAgU2hhZGVyRXhl
Y3V0YWJsZTExKGNvbnN0IHZvaWQgKmZ1bmN0aW9uLCBzaXplX3QgbGVuZ3RoLCBJRDNEMTFDb21w
dXRlU2hhZGVyICpleGVjdXRhYmxlKTsKIAogICAgIHZpcnR1YWwgflNoYWRlckV4ZWN1dGFibGUx
MSgpOwogCkBAIC0zMCwxMiArMzEsMTQgQEAgY2xhc3MgU2hhZGVyRXhlY3V0YWJsZTExIDogcHVi
bGljIFNoYWRlckV4ZWN1dGFibGVEM0QKICAgICBJRDNEMTFWZXJ0ZXhTaGFkZXIgKmdldFZlcnRl
eFNoYWRlcigpIGNvbnN0OwogICAgIElEM0QxMUdlb21ldHJ5U2hhZGVyICpnZXRHZW9tZXRyeVNo
YWRlcigpIGNvbnN0OwogICAgIElEM0QxMUdlb21ldHJ5U2hhZGVyICpnZXRTdHJlYW1PdXRTaGFk
ZXIoKSBjb25zdDsKKyAgICBJRDNEMTFDb21wdXRlU2hhZGVyICpnZXRDb21wdXRlU2hhZGVyKCkg
Y29uc3Q7CiAKICAgcHJpdmF0ZToKICAgICBJRDNEMTFQaXhlbFNoYWRlciAqbVBpeGVsRXhlY3V0
YWJsZTsKICAgICBJRDNEMTFWZXJ0ZXhTaGFkZXIgKm1WZXJ0ZXhFeGVjdXRhYmxlOwogICAgIElE
M0QxMUdlb21ldHJ5U2hhZGVyICptR2VvbWV0cnlFeGVjdXRhYmxlOwogICAgIElEM0QxMUdlb21l
dHJ5U2hhZGVyICptU3RyZWFtT3V0RXhlY3V0YWJsZTsKKyAgICBJRDNEMTFDb21wdXRlU2hhZGVy
ICptQ29tcHV0ZUV4ZWN1dGFibGU7CiB9OwogCiBjbGFzcyBVbmlmb3JtU3RvcmFnZTExIDogcHVi
bGljIFVuaWZvcm1TdG9yYWdlRDNECmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdlcjExLmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3Rh
dGVNYW5hZ2VyMTEuY3BwCmluZGV4IDBlMjhjOGMxOGEwLi5iNDI3ZTZmYjQ4MSAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9TdGF0ZU1hbmFnZXIxMS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5jcHAKQEAgLTgsNyArOCw3
IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RhdGVNYW5hZ2Vy
MTEuaCIKIAotI2luY2x1ZGUgImNvbW1vbi9CaXRTZXRJdGVyYXRvci5oIgorI2luY2x1ZGUgImNv
bW1vbi9iaXRzZXRfdXRpbHMuaCIKICNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvUXVlcnkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9WZXJ0ZXhBcnJheS5o
IgpAQCAtNDk2LDcgKzQ5Niw5IEBAIGdsOjpFcnJvciBTdGF0ZU1hbmFnZXIxMTo6c2V0QmxlbmRT
dGF0ZShjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLAogICAgIH0KIAogICAgIElE
M0QxMUJsZW5kU3RhdGUgKmR4QmxlbmRTdGF0ZSA9IG51bGxwdHI7Ci0gICAgQU5HTEVfVFJZKG1S
ZW5kZXJlci0+Z2V0U3RhdGVDYWNoZSgpLmdldEJsZW5kU3RhdGUoZnJhbWVidWZmZXIsIGJsZW5k
U3RhdGUsICZkeEJsZW5kU3RhdGUpKTsKKyAgICBjb25zdCBkM2QxMTo6QmxlbmRTdGF0ZUtleSAm
a2V5ID0gUmVuZGVyU3RhdGVDYWNoZTo6R2V0QmxlbmRTdGF0ZUtleShmcmFtZWJ1ZmZlciwgYmxl
bmRTdGF0ZSk7CisKKyAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5nZXRTdGF0ZUNhY2hlKCkuZ2V0
QmxlbmRTdGF0ZShrZXksICZkeEJsZW5kU3RhdGUpKTsKIAogICAgIEFTU0VSVChkeEJsZW5kU3Rh
dGUgIT0gbnVsbHB0cik7CiAKQEAgLTU1MCwyNSArNTUyLDQxIEBAIGdsOjpFcnJvciBTdGF0ZU1h
bmFnZXIxMTo6c2V0RGVwdGhTdGVuY2lsU3RhdGUoY29uc3QgZ2w6OlN0YXRlICZnbFN0YXRlKQog
ICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKLSAgICBjb25zdCBhdXRvICZk
ZXB0aFN0ZW5jaWxTdGF0ZSA9IGdsU3RhdGUuZ2V0RGVwdGhTdGVuY2lsU3RhdGUoKTsKLSAgICBp
bnQgc3RlbmNpbFJlZiAgICAgICAgICAgICAgICA9IGdsU3RhdGUuZ2V0U3RlbmNpbFJlZigpOwot
ICAgIGludCBzdGVuY2lsQmFja1JlZiAgICAgICAgICAgID0gZ2xTdGF0ZS5nZXRTdGVuY2lsQmFj
a1JlZigpOworICAgIG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZSA9IGdsU3RhdGUuZ2V0RGVwdGhTdGVu
Y2lsU3RhdGUoKTsKKyAgICBtQ3VyU3RlbmNpbFJlZiAgICAgICAgPSBnbFN0YXRlLmdldFN0ZW5j
aWxSZWYoKTsKKyAgICBtQ3VyU3RlbmNpbEJhY2tSZWYgICAgPSBnbFN0YXRlLmdldFN0ZW5jaWxC
YWNrUmVmKCk7CisgICAgbUN1ckRpc2FibGVEZXB0aCAgICAgID0gZGlzYWJsZURlcHRoOworICAg
IG1DdXJEaXNhYmxlU3RlbmNpbCAgICA9IGRpc2FibGVTdGVuY2lsOwogCiAgICAgLy8gZ2V0IHRo
ZSBtYXhpbXVtIHNpemUgb2YgdGhlIHN0ZW5jaWwgcmVmCiAgICAgdW5zaWduZWQgaW50IG1heFN0
ZW5jaWwgPSAwOwotICAgIGlmIChkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsVGVzdCAmJiBtQ3Vy
U3RlbmNpbFNpemUgPiAwKQorICAgIGlmIChtQ3VyRGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbFRl
c3QgJiYgbUN1clN0ZW5jaWxTaXplID4gMCkKICAgICB7CiAgICAgICAgIG1heFN0ZW5jaWwgPSAo
MSA8PCBtQ3VyU3RlbmNpbFNpemUpIC0gMTsKICAgICB9Ci0gICAgQVNTRVJUKChkZXB0aFN0ZW5j
aWxTdGF0ZS5zdGVuY2lsV3JpdGVtYXNrICYgbWF4U3RlbmNpbCkgPT0KLSAgICAgICAgICAgKGRl
cHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrV3JpdGVtYXNrICYgbWF4U3RlbmNpbCkpOwotICAg
IEFTU0VSVChzdGVuY2lsUmVmID09IHN0ZW5jaWxCYWNrUmVmKTsKLSAgICBBU1NFUlQoKGRlcHRo
U3RlbmNpbFN0YXRlLnN0ZW5jaWxNYXNrICYgbWF4U3RlbmNpbCkgPT0KLSAgICAgICAgICAgKGRl
cHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxCYWNrTWFzayAmIG1heFN0ZW5jaWwpKTsKKyAgICBBU1NF
UlQoKG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsV3JpdGVtYXNrICYgbWF4U3RlbmNpbCkg
PT0KKyAgICAgICAgICAgKG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsQmFja1dyaXRlbWFz
ayAmIG1heFN0ZW5jaWwpKTsKKyAgICBBU1NFUlQobUN1clN0ZW5jaWxSZWYgPT0gbUN1clN0ZW5j
aWxCYWNrUmVmKTsKKyAgICBBU1NFUlQoKG1DdXJEZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsTWFz
ayAmIG1heFN0ZW5jaWwpID09CisgICAgICAgICAgIChtQ3VyRGVwdGhTdGVuY2lsU3RhdGUuc3Rl
bmNpbEJhY2tNYXNrICYgbWF4U3RlbmNpbCkpOwogCiAgICAgSUQzRDExRGVwdGhTdGVuY2lsU3Rh
dGUgKmR4RGVwdGhTdGVuY2lsU3RhdGUgPSBOVUxMOwotICAgIEFOR0xFX1RSWShtUmVuZGVyZXIt
PmdldFN0YXRlQ2FjaGUoKS5nZXREZXB0aFN0ZW5jaWxTdGF0ZSgKLSAgICAgICAgZGVwdGhTdGVu
Y2lsU3RhdGUsIGRpc2FibGVEZXB0aCwgZGlzYWJsZVN0ZW5jaWwsICZkeERlcHRoU3RlbmNpbFN0
YXRlKSk7CisgICAgZ2w6OkRlcHRoU3RlbmNpbFN0YXRlIGRzU3RhdGVLZXkgICAgICAgICAgICAg
PSBnbFN0YXRlLmdldERlcHRoU3RlbmNpbFN0YXRlKCk7CisKKyAgICBpZiAoZGlzYWJsZURlcHRo
KQorICAgIHsKKyAgICAgICAgZHNTdGF0ZUtleS5kZXB0aFRlc3QgPSBmYWxzZTsKKyAgICAgICAg
ZHNTdGF0ZUtleS5kZXB0aE1hc2sgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoZGlzYWJsZVN0
ZW5jaWwpCisgICAgeworICAgICAgICBkc1N0YXRlS2V5LnN0ZW5jaWxXcml0ZW1hc2sgICAgID0g
MDsKKyAgICAgICAgZHNTdGF0ZUtleS5zdGVuY2lsQmFja1dyaXRlbWFzayA9IDA7CisgICAgICAg
IGRzU3RhdGVLZXkuc3RlbmNpbFRlc3QgICAgICAgICAgPSBmYWxzZTsKKyAgICB9CisKKyAgICBB
TkdMRV9UUlkobVJlbmRlcmVyLT5nZXRTdGF0ZUNhY2hlKCkuZ2V0RGVwdGhTdGVuY2lsU3RhdGUo
ZHNTdGF0ZUtleSwgJmR4RGVwdGhTdGVuY2lsU3RhdGUpKTsKIAogICAgIEFTU0VSVChkeERlcHRo
U3RlbmNpbFN0YXRlKTsKIApAQCAtNTgwLDE2ICs1OTgsMTAgQEAgZ2w6OkVycm9yIFN0YXRlTWFu
YWdlcjExOjpzZXREZXB0aFN0ZW5jaWxTdGF0ZShjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUpCiAg
ICAgICAgICAgICAgICAgICAiVW5leHBlY3RlZCB2YWx1ZSBvZiBEM0QxMV9ERUZBVUxUX1NURU5D
SUxfUkVBRF9NQVNLIik7CiAgICAgc3RhdGljX2Fzc2VydChEM0QxMV9ERUZBVUxUX1NURU5DSUxf
V1JJVEVfTUFTSyA9PSAweEZGLAogICAgICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWQgdmFsdWUg
b2YgRDNEMTFfREVGQVVMVF9TVEVOQ0lMX1dSSVRFX01BU0siKTsKLSAgICBVSU5UIGR4U3RlbmNp
bFJlZiA9IHN0ZDo6bWluPFVJTlQ+KHN0ZW5jaWxSZWYsIDB4RkZ1KTsKKyAgICBVSU5UIGR4U3Rl
bmNpbFJlZiA9IHN0ZDo6bWluPFVJTlQ+KG1DdXJTdGVuY2lsUmVmLCAweEZGdSk7CiAKICAgICBt
UmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKS0+T01TZXREZXB0aFN0ZW5jaWxTdGF0ZShkeERl
cHRoU3RlbmNpbFN0YXRlLCBkeFN0ZW5jaWxSZWYpOwogCi0gICAgbUN1ckRlcHRoU3RlbmNpbFN0
YXRlID0gZGVwdGhTdGVuY2lsU3RhdGU7Ci0gICAgbUN1clN0ZW5jaWxSZWYgICAgICAgID0gc3Rl
bmNpbFJlZjsKLSAgICBtQ3VyU3RlbmNpbEJhY2tSZWYgICAgPSBzdGVuY2lsQmFja1JlZjsKLSAg
ICBtQ3VyRGlzYWJsZURlcHRoICAgICAgPSBkaXNhYmxlRGVwdGg7Ci0gICAgbUN1ckRpc2FibGVT
dGVuY2lsICAgID0gZGlzYWJsZVN0ZW5jaWw7Ci0KICAgICBtRGVwdGhTdGVuY2lsU3RhdGVJc0Rp
cnR5ID0gZmFsc2U7CiAKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKQEAgLTgwMywyMSArODE1
LDE4IEBAIHZvaWQgU3RhdGVNYW5hZ2VyMTE6OmludmFsaWRhdGVFdmVyeXRoaW5nKCkKICAgICBp
bnZhbGlkYXRlQm91bmRWaWV3cygpOwogfQogCi12b2lkIFN0YXRlTWFuYWdlcjExOjpzZXRPbmVU
aW1lUmVuZGVyVGFyZ2V0KElEM0QxMVJlbmRlclRhcmdldFZpZXcgKnJlbmRlclRhcmdldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQzRDExRGVwdGhTdGVu
Y2lsVmlldyAqZGVwdGhTdGVuY2lsKQordm9pZCBTdGF0ZU1hbmFnZXIxMTo6c2V0T25lVGltZVJl
bmRlclRhcmdldChJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpydHYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmRzdikK
IHsKLSAgICBtUmVuZGVyZXItPmdldERldmljZUNvbnRleHQoKS0+T01TZXRSZW5kZXJUYXJnZXRz
KDEsICZyZW5kZXJUYXJnZXQsIGRlcHRoU3RlbmNpbCk7CisgICAgbVJlbmRlcmVyLT5nZXREZXZp
Y2VDb250ZXh0KCktPk9NU2V0UmVuZGVyVGFyZ2V0cygxLCAmcnR2LCBkc3YpOwogICAgIG1SZW5k
ZXJUYXJnZXRJc0RpcnR5ID0gdHJ1ZTsKIH0KIAotdm9pZCBTdGF0ZU1hbmFnZXIxMTo6c2V0T25l
VGltZVJlbmRlclRhcmdldHMoCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8SUQzRDExUmVuZGVyVGFy
Z2V0VmlldyAqPiAmcmVuZGVyVGFyZ2V0cywKLSAgICBJRDNEMTFEZXB0aFN0ZW5jaWxWaWV3ICpk
ZXB0aFN0ZW5jaWwpCit2b2lkIFN0YXRlTWFuYWdlcjExOjpzZXRPbmVUaW1lUmVuZGVyVGFyZ2V0
cyhJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICoqcnR2cywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVJTlQgbnVtUnR2cywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMURlcHRoU3RlbmNpbFZpZXcgKmRzdikKIHsK
LSAgICBVSU5UIGNvdW50ICAgICAgICAgICAgICAgPSBzdGF0aWNfY2FzdDxVSU5UPihyZW5kZXJU
YXJnZXRzLnNpemUoKSk7Ci0gICAgYXV0byByZW5kZXJUYXJnZXRQb2ludGVyID0gKCFyZW5kZXJU
YXJnZXRzLmVtcHR5KCkgPyByZW5kZXJUYXJnZXRzLmRhdGEoKSA6IG51bGxwdHIpOwotCi0gICAg
bVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCktPk9NU2V0UmVuZGVyVGFyZ2V0cyhjb3VudCwg
cmVuZGVyVGFyZ2V0UG9pbnRlciwgZGVwdGhTdGVuY2lsKTsKKyAgICBtUmVuZGVyZXItPmdldERl
dmljZUNvbnRleHQoKS0+T01TZXRSZW5kZXJUYXJnZXRzKG51bVJ0dnMsIChudW1SdHZzID4gMCkg
PyBydHZzIDogbnVsbHB0ciwgZHN2KTsKICAgICBtUmVuZGVyVGFyZ2V0SXNEaXJ0eSA9IHRydWU7
CiB9CiAKQEAgLTk3MSw3ICs5ODAsNyBAQCB2b2lkIFN0YXRlTWFuYWdlcjExOjpkZWluaXRpYWxp
emUoKQogICAgIG1DdXJyZW50VmFsdWVBdHRyaWJzLmNsZWFyKCk7CiB9CiAKLWdsOjpFcnJvciBT
dGF0ZU1hbmFnZXIxMTo6c3luY0ZyYW1lYnVmZmVyKGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZm
ZXIpCitnbDo6RXJyb3IgU3RhdGVNYW5hZ2VyMTE6OnN5bmNGcmFtZWJ1ZmZlcihDb250ZXh0SW1w
bCAqY29udGV4dEltcGwsIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIpCiB7CiAgICAgRnJh
bWVidWZmZXIxMSAqZnJhbWVidWZmZXIxMSA9IEdldEltcGxBczxGcmFtZWJ1ZmZlcjExPihmcmFt
ZWJ1ZmZlcik7CiAgICAgQU5HTEVfVFJZKGZyYW1lYnVmZmVyMTEtPm1hcmtBdHRhY2htZW50c0Rp
cnR5KCkpOwpAQCAtOTc5LDcgKzk4OCw3IEBAIGdsOjpFcnJvciBTdGF0ZU1hbmFnZXIxMTo6c3lu
Y0ZyYW1lYnVmZmVyKGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIpCiAgICAgaWYgKGZyYW1l
YnVmZmVyMTEtPmhhc0FueUludGVybmFsRGlydHlCaXQoKSkKICAgICB7CiAgICAgICAgIEFTU0VS
VChmcmFtZWJ1ZmZlci0+aWQoKSAhPSAwKTsKLSAgICAgICAgZnJhbWVidWZmZXIxMS0+c3luY0lu
dGVybmFsU3RhdGUoKTsKKyAgICAgICAgZnJhbWVidWZmZXIxMS0+c3luY0ludGVybmFsU3RhdGUo
Y29udGV4dEltcGwpOwogICAgIH0KIAogICAgIGlmICghbVJlbmRlclRhcmdldElzRGlydHkpCkBA
IC0xMDE2LDYgKzEwMjUsNyBAQCBnbDo6RXJyb3IgU3RhdGVNYW5hZ2VyMTE6OnN5bmNGcmFtZWJ1
ZmZlcihnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyKQogICAgIHNpemVfdCBhcHBsaWVkUlRJ
bmRleCAgPSAwOwogICAgIGJvb2wgc2tpcEluYWN0aXZlUlRzICAgPSBtUmVuZGVyZXItPmdldFdv
cmthcm91bmRzKCkubXJ0UGVyZldvcmthcm91bmQ7CiAgICAgY29uc3QgYXV0byAmZHJhd1N0YXRl
cyA9IGZyYW1lYnVmZmVyLT5nZXREcmF3QnVmZmVyU3RhdGVzKCk7CisgICAgVUlOVCBtYXhFeGlz
dGluZ1JUICAgICA9IDA7CiAKICAgICBmb3IgKHNpemVfdCBydEluZGV4ID0gMDsgcnRJbmRleCA8
IGNvbG9yUlRzLnNpemUoKTsgKytydEluZGV4KQogICAgIHsKQEAgLTEwMzEsNiArMTA0MSw3IEBA
IGdsOjpFcnJvciBTdGF0ZU1hbmFnZXIxMTo6c3luY0ZyYW1lYnVmZmVyKGdsOjpGcmFtZWJ1ZmZl
ciAqZnJhbWVidWZmZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGZyYW1lYnVmZmVyUlRWc1th
cHBsaWVkUlRJbmRleF0gPSByZW5kZXJUYXJnZXQtPmdldFJlbmRlclRhcmdldFZpZXcoKTsKICAg
ICAgICAgICAgIEFTU0VSVChmcmFtZWJ1ZmZlclJUVnNbYXBwbGllZFJUSW5kZXhdKTsKKyAgICAg
ICAgICAgIG1heEV4aXN0aW5nUlQgPSBzdGF0aWNfY2FzdDxVSU5UPihhcHBsaWVkUlRJbmRleCkg
KyAxOwogCiAgICAgICAgICAgICBpZiAobWlzc2luZ0NvbG9yUmVuZGVyVGFyZ2V0KQogICAgICAg
ICAgICAgewpAQCAtMTA3MSwxMCArMTA4MiwxMCBAQCBnbDo6RXJyb3IgU3RhdGVNYW5hZ2VyMTE6
OnN5bmNGcmFtZWJ1ZmZlcihnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyKQogICAgIH0KIAog
ICAgIC8vIFRPRE8oam1hZGlsbCk6IFVzZSBjb250ZXh0IGNhcHM/Ci0gICAgVUlOVCBkcmF3QnVm
ZmVycyA9IG1SZW5kZXJlci0+Z2V0TmF0aXZlQ2FwcygpLm1heERyYXdCdWZmZXJzOworICAgIEFT
U0VSVChtYXhFeGlzdGluZ1JUIDw9IHN0YXRpY19jYXN0PFVJTlQ+KG1SZW5kZXJlci0+Z2V0TmF0
aXZlQ2FwcygpLm1heERyYXdCdWZmZXJzKSk7CiAKICAgICAvLyBBcHBseSB0aGUgcmVuZGVyIHRh
cmdldCBhbmQgZGVwdGggc3RlbmNpbAotICAgIG1SZW5kZXJlci0+Z2V0RGV2aWNlQ29udGV4dCgp
LT5PTVNldFJlbmRlclRhcmdldHMoZHJhd0J1ZmZlcnMsIGZyYW1lYnVmZmVyUlRWcy5kYXRhKCks
CisgICAgbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCktPk9NU2V0UmVuZGVyVGFyZ2V0cyht
YXhFeGlzdGluZ1JULCBmcmFtZWJ1ZmZlclJUVnMuZGF0YSgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVidWZmZXJEU1YpOwogCiAg
ICAgLy8gVGhlIEQzRDExIGJsZW5kIHN0YXRlIGlzIGhlYXZpbHkgZGVwZW5kZW50IG9uIHRoZSBj
dXJyZW50IHJlbmRlciB0YXJnZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0YXRlTWFuYWdlcjExLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0YXRl
TWFuYWdlcjExLmgKaW5kZXggNzcxZWI0MzlmZDEuLjhkZTgzOGIzM2JlIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0
YXRlTWFuYWdlcjExLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5oCkBAIC03NywxNiArNzcsMTYgQEAg
Y2xhc3MgU3RhdGVNYW5hZ2VyMTEgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2KTsKICAgICBn
bDo6RXJyb3IgY2xlYXJUZXh0dXJlcyhnbDo6U2FtcGxlclR5cGUgc2FtcGxlclR5cGUsIHNpemVf
dCByYW5nZVN0YXJ0LCBzaXplX3QgcmFuZ2VFbmQpOwogCi0gICAgZ2w6OkVycm9yIHN5bmNGcmFt
ZWJ1ZmZlcihnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyKTsKKyAgICBnbDo6RXJyb3Igc3lu
Y0ZyYW1lYnVmZmVyKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwgZ2w6OkZyYW1lYnVmZmVyICpm
cmFtZWJ1ZmZlcik7CiAKICAgICB2b2lkIGludmFsaWRhdGVSZW5kZXJUYXJnZXQoKTsKICAgICB2
b2lkIGludmFsaWRhdGVCb3VuZFZpZXdzKCk7CiAgICAgdm9pZCBpbnZhbGlkYXRlRXZlcnl0aGlu
ZygpOwogCi0gICAgdm9pZCBzZXRPbmVUaW1lUmVuZGVyVGFyZ2V0KElEM0QxMVJlbmRlclRhcmdl
dFZpZXcgKnJlbmRlclRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQz
RDExRGVwdGhTdGVuY2lsVmlldyAqZGVwdGhTdGVuY2lsKTsKLSAgICB2b2lkIHNldE9uZVRpbWVS
ZW5kZXJUYXJnZXRzKGNvbnN0IHN0ZDo6dmVjdG9yPElEM0QxMVJlbmRlclRhcmdldFZpZXcgKj4g
JnJlbmRlclRhcmdldHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFE
ZXB0aFN0ZW5jaWxWaWV3ICpkZXB0aFN0ZW5jaWwpOworICAgIHZvaWQgc2V0T25lVGltZVJlbmRl
clRhcmdldChJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpydHYsIElEM0QxMURlcHRoU3RlbmNpbFZp
ZXcgKmRzdik7CisgICAgdm9pZCBzZXRPbmVUaW1lUmVuZGVyVGFyZ2V0cyhJRDNEMTFSZW5kZXJU
YXJnZXRWaWV3ICoqcnR2cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVJTlQg
bnVtUnR2cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMURlcHRoU3Rl
bmNpbFZpZXcgKmRzdik7CiAKICAgICB2b2lkIG9uQmVnaW5RdWVyeShRdWVyeTExICpxdWVyeSk7
CiAgICAgdm9pZCBvbkRlbGV0ZVF1ZXJ5T2JqZWN0KFF1ZXJ5MTEgKnF1ZXJ5KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvU3dhcENoYWluMTEuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5jcHAKaW5kZXggNTljYjYwZTM4NGMuLjU2
ZWU5MjAyOTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL1N3YXBDaGFpbjExLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N3YXBDaGFpbjExLmNw
cApAQCAtNTEsMTAgKzUxLDExIEBAIGJvb2wgTmVlZHNPZmZzY3JlZW5UZXh0dXJlKFJlbmRlcmVy
MTEgKnJlbmRlcmVyLCBOYXRpdmVXaW5kb3cxMSAqbmF0aXZlV2luZG93LCBFCiBTd2FwQ2hhaW4x
MTo6U3dhcENoYWluMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgTmF0aXZlV2luZG93MTEgKm5hdGl2ZVdpbmRvdywKICAgICAgICAgICAgICAgICAgICAg
ICAgICBIQU5ETEUgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgSVVua25v
d24gKmQzZFRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJhY2tCdWZm
ZXJGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlcHRoQnVmZmVyRm9y
bWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBvcmllbnRhdGlvbikKLSAgICA6
IFN3YXBDaGFpbkQzRChzaGFyZUhhbmRsZSwgYmFja0J1ZmZlckZvcm1hdCwgZGVwdGhCdWZmZXJG
b3JtYXQpLAorICAgIDogU3dhcENoYWluRDNEKHNoYXJlSGFuZGxlLCBkM2RUZXh0dXJlLCBiYWNr
QnVmZmVyRm9ybWF0LCBkZXB0aEJ1ZmZlckZvcm1hdCksCiAgICAgICBtUmVuZGVyZXIocmVuZGVy
ZXIpLAogICAgICAgbVdpZHRoKC0xKSwKICAgICAgIG1IZWlnaHQoLTEpLApAQCAtOTIsNyArOTMs
NiBAQCBTd2FwQ2hhaW4xMTo6U3dhcENoYWluMTEoUmVuZGVyZXIxMSAqcmVuZGVyZXIsCiAgICAg
Ly8gR2V0IHRoZSBwZXJmb3JtYW5jZSBjb3VudGVyCiAgICAgTEFSR0VfSU5URUdFUiBjb3VudGVy
RnJlcWVuY3kgPSB7fTsKICAgICBCT09MIHN1Y2Nlc3MgICAgICAgICAgICAgICAgICA9IFF1ZXJ5
UGVyZm9ybWFuY2VGcmVxdWVuY3koJmNvdW50ZXJGcmVxZW5jeSk7Ci0gICAgVU5VU0VEX0FTU0VS
VElPTl9WQVJJQUJMRShzdWNjZXNzKTsKICAgICBBU1NFUlQoc3VjY2Vzcyk7CiAKICAgICBtUVBD
RnJlcXVlbmN5ID0gY291bnRlckZyZXFlbmN5LlF1YWRQYXJ0OwpAQCAtMTkzLDUxICsxOTMsMzgg
QEAgRUdMaW50IFN3YXBDaGFpbjExOjpyZXNldE9mZnNjcmVlbkNvbG9yQnVmZmVyKGludCBiYWNr
YnVmZmVyV2lkdGgsIGludCBiYWNrYnVmZmUKIAogICAgIGNvbnN0IGQzZDExOjpGb3JtYXQgJmJh
Y2tidWZmZXJGb3JtYXRJbmZvID0KICAgICAgICAgZDNkMTE6OkZvcm1hdDo6R2V0KG1PZmZzY3Jl
ZW5SZW5kZXJUYXJnZXRGb3JtYXQsIG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMo
KSk7CisgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0Mgb2Zmc2NyZWVuVGV4dHVyZURlc2MgPSB7MH07
CiAKLSAgICAvLyBJZiB0aGUgYXBwIHBhc3NlZCBpbiBhIHNoYXJlIGhhbmRsZSwgb3BlbiB0aGUg
cmVzb3VyY2UKLSAgICAvLyBTZWUgRUdMX0FOR0xFX2QzZF9zaGFyZV9oYW5kbGVfY2xpZW50X2J1
ZmZlcgotICAgIGlmIChtQXBwQ3JlYXRlZFNoYXJlSGFuZGxlKQorICAgIC8vIElmIHRoZSBhcHAg
cGFzc2VkIGluIGEgc2hhcmUgaGFuZGxlIG9yIEQzRCB0ZXh0dXJlLCBvcGVuIHRoZSByZXNvdXJj
ZQorICAgIC8vIFNlZSBFR0xfQU5HTEVfZDNkX3NoYXJlX2hhbmRsZV9jbGllbnRfYnVmZmVyIGFu
ZCBFR0xfQU5HTEVfZDNkX3RleHR1cmVfY2xpZW50X2J1ZmZlcgorICAgIGlmIChtQXBwQ3JlYXRl
ZFNoYXJlSGFuZGxlIHx8IG1EM0RUZXh0dXJlICE9IG51bGxwdHIpCiAgICAgewotICAgICAgICBJ
RDNEMTFSZXNvdXJjZSAqdGVtcFJlc291cmNlMTE7Ci0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0g
ZGV2aWNlLT5PcGVuU2hhcmVkUmVzb3VyY2UobVNoYXJlSGFuZGxlLCBfX3V1aWRvZihJRDNEMTFS
ZXNvdXJjZSksICh2b2lkKiopJnRlbXBSZXNvdXJjZTExKTsKLQotICAgICAgICBpZiAoRkFJTEVE
KHJlc3VsdCkpCisgICAgICAgIGlmIChtQXBwQ3JlYXRlZFNoYXJlSGFuZGxlKQogICAgICAgICB7
Ci0gICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBvcGVuIHRoZSBzd2FwIGNoYWluIHBidWZmZXIg
c2hhcmUgaGFuZGxlOiAlMDhsWCIsIHJlc3VsdCk7Ci0gICAgICAgICAgICByZWxlYXNlKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gRUdMX0JBRF9QQVJBTUVURVI7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXN1bHQgPSB0ZW1wUmVzb3VyY2UxMS0+UXVlcnlJbnRlcmZhY2UoX191dWlkb2YoSUQzRDEx
VGV4dHVyZTJEKSwgKHZvaWQqKikmbU9mZnNjcmVlblRleHR1cmUpOwotICAgICAgICBTYWZlUmVs
ZWFzZSh0ZW1wUmVzb3VyY2UxMSk7CisgICAgICAgICAgICBJRDNEMTFSZXNvdXJjZSAqdGVtcFJl
c291cmNlMTE7CisgICAgICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+T3BlblNoYXJl
ZFJlc291cmNlKG1TaGFyZUhhbmRsZSwgX191dWlkb2YoSUQzRDExUmVzb3VyY2UpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAq
KikmdGVtcFJlc291cmNlMTEpOworICAgICAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQp
KTsKIAotICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisgICAgICAgICAgICBtT2Zmc2NyZWVu
VGV4dHVyZSA9IGQzZDExOjpEeW5hbWljQ2FzdENvbU9iamVjdDxJRDNEMTFUZXh0dXJlMkQ+KHRl
bXBSZXNvdXJjZTExKTsKKyAgICAgICAgICAgIFNhZmVSZWxlYXNlKHRlbXBSZXNvdXJjZTExKTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChtRDNEVGV4dHVyZSAhPSBudWxscHRyKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBFUlIoIkZhaWxlZCB0byBxdWVyeSB0ZXh0dXJlMmQgaW50ZXJm
YWNlIGluIHBidWZmZXIgc2hhcmUgaGFuZGxlOiAlMDhsWCIsIHJlc3VsdCk7Ci0gICAgICAgICAg
ICByZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gRUdMX0JBRF9QQVJBTUVURVI7CisgICAg
ICAgICAgICBtT2Zmc2NyZWVuVGV4dHVyZSA9IGQzZDExOjpEeW5hbWljQ2FzdENvbU9iamVjdDxJ
RDNEMTFUZXh0dXJlMkQ+KG1EM0RUZXh0dXJlKTsKICAgICAgICAgfQotCi0gICAgICAgIC8vIFZh
bGlkYXRlIG9mZnNjcmVlbiB0ZXh0dXJlIHBhcmFtZXRlcnMKLSAgICAgICAgRDNEMTFfVEVYVFVS
RTJEX0RFU0Mgb2Zmc2NyZWVuVGV4dHVyZURlc2MgPSB7MH07Ci0gICAgICAgIG1PZmZzY3JlZW5U
ZXh0dXJlLT5HZXREZXNjKCZvZmZzY3JlZW5UZXh0dXJlRGVzYyk7Ci0KLSAgICAgICAgaWYgKG9m
ZnNjcmVlblRleHR1cmVEZXNjLldpZHRoICE9IChVSU5UKWJhY2tidWZmZXJXaWR0aCB8fAotICAg
ICAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURlc2MuSGVpZ2h0ICE9IChVSU5UKWJhY2tidWZmZXJI
ZWlnaHQgfHwKLSAgICAgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNjLkZvcm1hdCAhPSBiYWNr
YnVmZmVyRm9ybWF0SW5mby50ZXhGb3JtYXQgfHwKLSAgICAgICAgICAgIG9mZnNjcmVlblRleHR1
cmVEZXNjLk1pcExldmVscyAhPSAxIHx8IG9mZnNjcmVlblRleHR1cmVEZXNjLkFycmF5U2l6ZSAh
PSAxKQorICAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICAgIEVSUigiSW52YWxpZCB0
ZXh0dXJlIHBhcmFtZXRlcnMgaW4gdGhlIHNoYXJlZCBvZmZzY3JlZW4gdGV4dHVyZSBwYnVmZmVy
Iik7Ci0gICAgICAgICAgICByZWxlYXNlKCk7Ci0gICAgICAgICAgICByZXR1cm4gRUdMX0JBRF9Q
QVJBTUVURVI7CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgICAgICB9CisgICAgICAg
IEFTU0VSVChtT2Zmc2NyZWVuVGV4dHVyZSAhPSBudWxscHRyKTsKKyAgICAgICAgbU9mZnNjcmVl
blRleHR1cmUtPkdldERlc2MoJm9mZnNjcmVlblRleHR1cmVEZXNjKTsKICAgICB9CiAgICAgZWxz
ZQogICAgIHsKICAgICAgICAgY29uc3QgYm9vbCB1c2VTaGFyZWRSZXNvdXJjZSA9CiAgICAgICAg
ICAgICAhbU5hdGl2ZVdpbmRvdy0+Z2V0TmF0aXZlV2luZG93KCkgJiYgbVJlbmRlcmVyLT5nZXRT
aGFyZUhhbmRsZVN1cHBvcnQoKTsKIAotICAgICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyBvZmZz
Y3JlZW5UZXh0dXJlRGVzYyA9IHswfTsKICAgICAgICAgb2Zmc2NyZWVuVGV4dHVyZURlc2MuV2lk
dGggPSBiYWNrYnVmZmVyV2lkdGg7CiAgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNjLkhlaWdo
dCA9IGJhY2tidWZmZXJIZWlnaHQ7CiAgICAgICAgIG9mZnNjcmVlblRleHR1cmVEZXNjLkZvcm1h
dCAgICAgICAgICAgICAgID0gYmFja2J1ZmZlckZvcm1hdEluZm8udGV4Rm9ybWF0OwpAQCAtMjU0
LDcgKzI0MSw3IEBAIEVHTGludCBTd2FwQ2hhaW4xMTo6cmVzZXRPZmZzY3JlZW5Db2xvckJ1ZmZl
cihpbnQgYmFja2J1ZmZlcldpZHRoLCBpbnQgYmFja2J1ZmZlCiAKICAgICAgICAgaWYgKEZBSUxF
RChyZXN1bHQpKQogICAgICAgICB7Ci0gICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUg
b2Zmc2NyZWVuIHRleHR1cmU6ICUwOGxYIiwgcmVzdWx0KTsKKyAgICAgICAgICAgIEVSUigpIDw8
ICJDb3VsZCBub3QgY3JlYXRlIG9mZnNjcmVlbiB0ZXh0dXJlLCAiIDw8IGdsOjpGbXRIUihyZXN1
bHQpOwogICAgICAgICAgICAgcmVsZWFzZSgpOwogCiAgICAgICAgICAgICBpZiAoZDNkMTE6Omlz
RGV2aWNlTG9zdEVycm9yKHJlc3VsdCkpCkBAIC0yNzgsNyArMjY1LDcgQEAgRUdMaW50IFN3YXBD
aGFpbjExOjpyZXNldE9mZnNjcmVlbkNvbG9yQnVmZmVyKGludCBiYWNrYnVmZmVyV2lkdGgsIGlu
dCBiYWNrYnVmZmUKICAgICAgICAgICAgIC8vIEZhbGwgYmFjayB0byBubyBzaGFyZSBoYW5kbGUg
b24gZmFpbHVyZQogICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIEVSUigiQ291bGQgbm90IHF1ZXJ5IG9mZnNjcmVlbiB0ZXh0dXJl
IHJlc291cmNlOiAlMDhsWCIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgRVJSKCkgPDwgIkNv
dWxkIG5vdCBxdWVyeSBvZmZzY3JlZW4gdGV4dHVyZSByZXNvdXJjZSwgIiA8PCBnbDo6Rm10SFIo
cmVzdWx0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsK
QEAgLTI4OCw3ICsyNzUsNyBAQCBFR0xpbnQgU3dhcENoYWluMTE6OnJlc2V0T2Zmc2NyZWVuQ29s
b3JCdWZmZXIoaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZQogICAgICAgICAgICAg
ICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAg
ICAgICAgIG1TaGFyZUhhbmRsZSA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIEVSUigiQ291
bGQgbm90IGdldCBvZmZzY3JlZW4gdGV4dHVyZSBzaGFyZWQgaGFuZGxlOiAlMDhsWCIsIHJlc3Vs
dCk7CisgICAgICAgICAgICAgICAgICAgIEVSUigpIDw8ICJDb3VsZCBub3QgZ2V0IG9mZnNjcmVl
biB0ZXh0dXJlIHNoYXJlZCBoYW5kbGUsICIgPDwgZ2w6OkZtdEhSKHJlc3VsdCk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zMTIsOSArMjk5LDEzIEBA
IEVHTGludCBTd2FwQ2hhaW4xMTo6cmVzZXRPZmZzY3JlZW5Db2xvckJ1ZmZlcihpbnQgYmFja2J1
ZmZlcldpZHRoLCBpbnQgYmFja2J1ZmZlCiAgICAgb2Zmc2NyZWVuU1JWRGVzYy5UZXh0dXJlMkQu
TW9zdERldGFpbGVkTWlwID0gMDsKICAgICBvZmZzY3JlZW5TUlZEZXNjLlRleHR1cmUyRC5NaXBM
ZXZlbHMgPSBzdGF0aWNfY2FzdDxVSU5UPigtMSk7CiAKLSAgICByZXN1bHQgPSBkZXZpY2UtPkNy
ZWF0ZVNoYWRlclJlc291cmNlVmlldyhtT2Zmc2NyZWVuVGV4dHVyZSwgJm9mZnNjcmVlblNSVkRl
c2MsICZtT2Zmc2NyZWVuU1JWaWV3KTsKLSAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwot
ICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobU9mZnNjcmVlblNSVmlldywgIk9mZnNjcmVlbiBiYWNr
IGJ1ZmZlciBzaGFkZXIgcmVzb3VyY2UiKTsKKyAgICBpZiAob2Zmc2NyZWVuVGV4dHVyZURlc2Mu
QmluZEZsYWdzICYgRDNEMTFfQklORF9TSEFERVJfUkVTT1VSQ0UpCisgICAgeworICAgICAgICBy
ZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVNoYWRlclJlc291cmNlVmlldyhtT2Zmc2NyZWVuVGV4dHVy
ZSwgJm9mZnNjcmVlblNSVkRlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZtT2Zmc2NyZWVuU1JWaWV3KTsKKyAgICAgICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKKyAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZShtT2Zmc2NyZWVuU1JW
aWV3LCAiT2Zmc2NyZWVuIGJhY2sgYnVmZmVyIHNoYWRlciByZXNvdXJjZSIpOworICAgIH0KIAog
ICAgIGlmIChwcmV2aW91c09mZnNjcmVlblRleHR1cmUgIT0gbnVsbHB0cikKICAgICB7CkBAIC0z
NzUsNyArMzY2LDggQEAgRUdMaW50IFN3YXBDaGFpbjExOjpyZXNldE9mZnNjcmVlbkRlcHRoQnVm
ZmVyKGludCBiYWNrYnVmZmVyV2lkdGgsIGludCBiYWNrYnVmZmUKICAgICAgICAgICAgIGRldmlj
ZS0+Q3JlYXRlVGV4dHVyZTJEKCZkZXB0aFN0ZW5jaWxUZXh0dXJlRGVzYywgTlVMTCwgJm1EZXB0
aFN0ZW5jaWxUZXh0dXJlKTsKICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICB7
Ci0gICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgZGVwdGhzdGVuY2lsIHN1cmZhY2Ug
Zm9yIG5ldyBzd2FwIGNoYWluOiAweCUwOFgiLCByZXN1bHQpOworICAgICAgICAgICAgRVJSKCkg
PDwgIkNvdWxkIG5vdCBjcmVhdGUgZGVwdGhzdGVuY2lsIHN1cmZhY2UgZm9yIG5ldyBzd2FwIGNo
YWluLCAiCisgICAgICAgICAgICAgICAgICA8PCBnbDo6Rm10SFIocmVzdWx0KTsKICAgICAgICAg
ICAgIHJlbGVhc2UoKTsKIAogICAgICAgICAgICAgaWYgKGQzZDExOjppc0RldmljZUxvc3RFcnJv
cihyZXN1bHQpKQpAQCAtNDUwLDcgKzQ0Miw3IEBAIEVHTGludCBTd2FwQ2hhaW4xMTo6cmVzaXpl
KEVHTGludCBiYWNrYnVmZmVyV2lkdGgsIEVHTGludCBiYWNrYnVmZmVySGVpZ2h0KQogICAgIEhS
RVNVTFQgcmVzdWx0ID0gbVN3YXBDaGFpbi0+R2V0RGVzYygmZGVzYyk7CiAgICAgaWYgKEZBSUxF
RChyZXN1bHQpKQogICAgIHsKLSAgICAgICAgRVJSKCJFcnJvciByZWFkaW5nIHN3YXAgY2hhaW4g
ZGVzY3JpcHRpb246IDB4JTA4WCIsIHJlc3VsdCk7CisgICAgICAgIEVSUigpIDw8ICJFcnJvciBy
ZWFkaW5nIHN3YXAgY2hhaW4gZGVzY3JpcHRpb24sICIgPDwgZ2w6OkZtdEhSKHJlc3VsdCk7CiAg
ICAgICAgIHJlbGVhc2UoKTsKICAgICAgICAgcmV0dXJuIEVHTF9CQURfQUxMT0M7CiAgICAgfQpA
QCAtNDU5LDcgKzQ1MSw3IEBAIEVHTGludCBTd2FwQ2hhaW4xMTo6cmVzaXplKEVHTGludCBiYWNr
YnVmZmVyV2lkdGgsIEVHTGludCBiYWNrYnVmZmVySGVpZ2h0KQogCiAgICAgaWYgKEZBSUxFRChy
ZXN1bHQpKQogICAgIHsKLSAgICAgICAgRVJSKCJFcnJvciByZXNpemluZyBzd2FwIGNoYWluIGJ1
ZmZlcnM6IDB4JTA4WCIsIHJlc3VsdCk7CisgICAgICAgIEVSUigpIDw8ICJFcnJvciByZXNpemlu
ZyBzd2FwIGNoYWluIGJ1ZmZlcnMsICIgPDwgZ2w6OkZtdEhSKHJlc3VsdCk7CiAgICAgICAgIHJl
bGVhc2UoKTsKIAogICAgICAgICBpZiAoZDNkMTE6OmlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCkp
CkBAIC01MDEsNyArNDkzLDI4IEBAIERYR0lfRk9STUFUIFN3YXBDaGFpbjExOjpnZXRTd2FwQ2hh
aW5OYXRpdmVGb3JtYXQoKSBjb25zdAogewogICAgIC8vIFJldHVybiBhIHJlbmRlciB0YXJnZXQg
Zm9ybWF0IGZvciBvZmZzY3JlZW4gcmVuZGVyaW5nIGlzIHN1cHBvcnRlZCBieSBJRFhHSVN3YXBD
aGFpbi4KICAgICAvLyBNU0ROIGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJh
cnkvd2luZG93cy9kZXNrdG9wL2JiMTczMDY0KHY9dnMuODUpLmFzcHgKLSAgICByZXR1cm4gKG1P
ZmZzY3JlZW5SZW5kZXJUYXJnZXRGb3JtYXQgPT0gR0xfQkdSQThfRVhUKSA/IERYR0lfRk9STUFU
X0I4RzhSOEE4X1VOT1JNIDogRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk07CisgICAgc3dpdGNo
IChtT2Zmc2NyZWVuUmVuZGVyVGFyZ2V0Rm9ybWF0KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9S
R0JBODoKKyAgICAgICAgY2FzZSBHTF9SR0JBNDoKKyAgICAgICAgY2FzZSBHTF9SR0I1X0ExOgor
ICAgICAgICBjYXNlIEdMX1JHQjg6CisgICAgICAgIGNhc2UgR0xfUkdCNTY1OgorICAgICAgICAg
ICAgcmV0dXJuIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNOworCisgICAgICAgIGNhc2UgR0xf
QkdSQThfRVhUOgorICAgICAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JN
OworCisgICAgICAgIGNhc2UgR0xfUkdCMTBfQTI6CisgICAgICAgICAgICByZXR1cm4gRFhHSV9G
T1JNQVRfUjEwRzEwQjEwQTJfVU5PUk07CisKKyAgICAgICAgY2FzZSBHTF9SR0JBMTZGOgorICAg
ICAgICAgICAgcmV0dXJuIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDsKKworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVy
biBEWEdJX0ZPUk1BVF9VTktOT1dOOworICAgIH0KIH0KIAogRUdMaW50IFN3YXBDaGFpbjExOjpy
ZXNldChFR0xpbnQgYmFja2J1ZmZlcldpZHRoLCBFR0xpbnQgYmFja2J1ZmZlckhlaWdodCwgRUdM
aW50IHN3YXBJbnRlcnZhbCkKQEAgLTU1MCw3ICs1NjMsOCBAQCBFR0xpbnQgU3dhcENoYWluMTE6
OnJlc2V0KEVHTGludCBiYWNrYnVmZmVyV2lkdGgsIEVHTGludCBiYWNrYnVmZmVySGVpZ2h0LCBF
R0xpbgogCiAgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICAgICAgewotICAgICAgICAg
ICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGFkZGl0aW9uYWwgc3dhcCBjaGFpbnMgb3Igb2Zmc2Ny
ZWVuIHN1cmZhY2VzOiAlMDhsWCIsIHJlc3VsdCk7CisgICAgICAgICAgICBFUlIoKSA8PCAiQ291
bGQgbm90IGNyZWF0ZSBhZGRpdGlvbmFsIHN3YXAgY2hhaW5zIG9yIG9mZnNjcmVlbiBzdXJmYWNl
cywgIgorICAgICAgICAgICAgICAgICAgPDwgZ2w6OkZtdEhSKHJlc3VsdCk7CiAgICAgICAgICAg
ICByZWxlYXNlKCk7CiAKICAgICAgICAgICAgIGlmIChkM2QxMTo6aXNEZXZpY2VMb3N0RXJyb3Io
cmVzdWx0KSkKQEAgLTgzNywxOCArODUxLDE4IEBAIEVHTGludCBTd2FwQ2hhaW4xMTo6cHJlc2Vu
dChFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCkKIAogICAg
IGlmIChyZXN1bHQgPT0gRFhHSV9FUlJPUl9ERVZJQ0VfUkVNT1ZFRCkKICAgICB7Ci0gICAgICAg
IEVSUigiUHJlc2VudCBmYWlsZWQ6IHRoZSBEM0QxMSBkZXZpY2Ugd2FzIHJlbW92ZWQ6IDB4JTA4
WCIsCi0gICAgICAgICAgICBtUmVuZGVyZXItPmdldERldmljZSgpLT5HZXREZXZpY2VSZW1vdmVk
UmVhc29uKCkpOworICAgICAgICBFUlIoKSA8PCAiUHJlc2VudCBmYWlsZWQ6IHRoZSBEM0QxMSBk
ZXZpY2Ugd2FzIHJlbW92ZWQsICIKKyAgICAgICAgICAgICAgPDwgZ2w6OkZtdEhSKG1SZW5kZXJl
ci0+Z2V0RGV2aWNlKCktPkdldERldmljZVJlbW92ZWRSZWFzb24oKSk7CiAgICAgICAgIHJldHVy
biBFR0xfQ09OVEVYVF9MT1NUOwogICAgIH0KICAgICBlbHNlIGlmIChyZXN1bHQgPT0gRFhHSV9F
UlJPUl9ERVZJQ0VfUkVTRVQpCiAgICAgewotICAgICAgICBFUlIoIlByZXNlbnQgZmFpbGVkOiB0
aGUgRDNEMTEgZGV2aWNlIHdhcyByZXNldCBmcm9tIGEgYmFkIGNvbW1hbmQuIik7CisgICAgICAg
IEVSUigpIDw8ICJQcmVzZW50IGZhaWxlZDogdGhlIEQzRDExIGRldmljZSB3YXMgcmVzZXQgZnJv
bSBhIGJhZCBjb21tYW5kLiI7CiAgICAgICAgIHJldHVybiBFR0xfQ09OVEVYVF9MT1NUOwogICAg
IH0KICAgICBlbHNlIGlmIChGQUlMRUQocmVzdWx0KSkKICAgICB7Ci0gICAgICAgIEVSUigiUHJl
c2VudCBmYWlsZWQgd2l0aCBlcnJvciBjb2RlIDB4JTA4WCIsIHJlc3VsdCk7CisgICAgICAgIEVS
UigpIDw8ICJQcmVzZW50IGZhaWxlZCB3aXRoICIgPDwgZ2w6OkZtdEhSKHJlc3VsdCk7CiAgICAg
fQogCiAgICAgbU5hdGl2ZVdpbmRvdy0+Y29tbWl0Q2hhbmdlKCk7CkBAIC04OTMsNiArOTA3LDEx
IEBAIHZvaWQgU3dhcENoYWluMTE6OnJlY3JlYXRlKCkKIAogZWdsOjpFcnJvciBTd2FwQ2hhaW4x
MTo6Z2V0U3luY1ZhbHVlcyhFR0x1aW50NjRLSFIgKnVzdCwgRUdMdWludDY0S0hSICptc2MsIEVH
THVpbnQ2NEtIUiAqc2JjKQogeworICAgIGlmICghbVN3YXBDaGFpbikKKyAgICB7CisgICAgICAg
IHJldHVybiBlZ2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsICJTd2FwIGNoYWluIHVuaW5p
dGlhbGl6ZWQiKTsKKyAgICB9CisKICAgICBEWEdJX0ZSQU1FX1NUQVRJU1RJQ1Mgc3RhdHMgPSB7
fTsKICAgICBIUkVTVUxUIHJlc3VsdCAgICAgICAgICAgICAgPSBtU3dhcENoYWluLT5HZXRGcmFt
ZVN0YXRpc3RpY3MoJnN0YXRzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hhaW4xMS5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hh
aW4xMS5oCmluZGV4IDVlMDYxYmFjMWQ3Li42ZWI3MjFmNTQwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Td2FwQ2hh
aW4xMS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvU3dhcENoYWluMTEuaApAQCAtMjQsNiArMjQsNyBAQCBjbGFzcyBTd2FwQ2hh
aW4xMSBmaW5hbCA6IHB1YmxpYyBTd2FwQ2hhaW5EM0QKICAgICBTd2FwQ2hhaW4xMShSZW5kZXJl
cjExICpyZW5kZXJlciwKICAgICAgICAgICAgICAgICBOYXRpdmVXaW5kb3cxMSAqbmF0aXZlV2lu
ZG93LAogICAgICAgICAgICAgICAgIEhBTkRMRSBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAg
ICBJVW5rbm93biAqZDNkVGV4dHVyZSwKICAgICAgICAgICAgICAgICBHTGVudW0gYmFja0J1ZmZl
ckZvcm1hdCwKICAgICAgICAgICAgICAgICBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQsCiAgICAg
ICAgICAgICAgICAgRUdMaW50IG9yaWVudGF0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVGV4dHVyZVN0b3Jh
Z2UxMS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL1RleHR1cmVTdG9yYWdlMTEuY3BwCmluZGV4IGE1MjhjYWFiNWYzLi4yYTQ5MDZk
OGVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RleHR1cmVTdG9yYWdl
MTEuY3BwCkBAIC0xODUsOCArMTg1LDggQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTE6Omdl
dFNSVihjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZ0ZXh0dXJlU3RhdGUsCiB7CiAgICAgLy8gTWFr
ZSBzdXJlIHRvIGFkZCB0aGUgbGV2ZWwgb2Zmc2V0IGZvciBvdXIgdGlueSBjb21wcmVzc2VkIHRl
eHR1cmUgd29ya2Fyb3VuZAogICAgIGNvbnN0IEdMdWludCBlZmZlY3RpdmVCYXNlTGV2ZWwgPSB0
ZXh0dXJlU3RhdGUuZ2V0RWZmZWN0aXZlQmFzZUxldmVsKCk7Ci0gICAgYm9vbCBzd2l6emxlUmVx
dWlyZWQgICA9IHRleHR1cmVTdGF0ZS5zd2l6emxlUmVxdWlyZWQoKTsKLSAgICBib29sIG1pcG1h
cHBpbmcgPSBnbDo6SXNNaXBtYXBGaWx0ZXJlZCh0ZXh0dXJlU3RhdGUuZ2V0U2FtcGxlclN0YXRl
KCkpOworICAgIGJvb2wgc3dpenpsZVJlcXVpcmVkICAgICAgICAgICAgPSB0ZXh0dXJlU3RhdGUu
c3dpenpsZVJlcXVpcmVkKCk7CisgICAgYm9vbCBtaXBtYXBwaW5nICAgICAgICAgICAgICAgICA9
IGdsOjpJc01pcG1hcEZpbHRlcmVkKHRleHR1cmVTdGF0ZS5nZXRTYW1wbGVyU3RhdGUoKSk7CiAg
ICAgdW5zaWduZWQgaW50IG1pcExldmVscyA9CiAgICAgICAgIG1pcG1hcHBpbmcgPyAodGV4dHVy
ZVN0YXRlLmdldEVmZmVjdGl2ZU1heExldmVsKCkgLSBlZmZlY3RpdmVCYXNlTGV2ZWwgKyAxKSA6
IDE7CiAKQEAgLTIxNSwxOCArMjE1LDMwIEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExOjpn
ZXRTUlYoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmdGV4dHVyZVN0YXRlLAogICAgIC8vIDEuIHRo
ZSBkcm9wIHN0ZW5jaWwgd29ya2Fyb3VuZCBpcyBlbmFibGVkLgogICAgIGJvb2wgd29ya2Fyb3Vu
ZCA9IG1SZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMoKS5lbXVsYXRlVGlueVN0ZW5jaWxUZXh0dXJl
czsKICAgICAvLyAyLiB0aGlzIGlzIGEgc3RlbmNpbCB0ZXh0dXJlLgotICAgIGJvb2wgaGFzU3Rl
bmNpbCA9IChtRm9ybWF0SW5mby5mb3JtYXQuc3RlbmNpbEJpdHMgPiAwKTsKKyAgICBib29sIGhh
c1N0ZW5jaWwgPSAobUZvcm1hdEluZm8uZm9ybWF0KCkuc3RlbmNpbEJpdHMgPiAwKTsKICAgICAv
LyAzLiB0aGUgdGV4dHVyZSBoYXMgYSAxeDEgb3IgMngyIG1pcC4KLSAgICBib29sIGhhc1NtYWxs
TWlwcyA9IChnZXRMZXZlbFdpZHRoKG1NaXBMZXZlbHMgLSAxKSA8PSAyIHx8IGdldExldmVsSGVp
Z2h0KG1NaXBMZXZlbHMgLSAxKSA8PSAyKTsKKyAgICBpbnQgZWZmZWN0aXZlVG9wTGV2ZWwgPSBl
ZmZlY3RpdmVCYXNlTGV2ZWwgKyBtaXBMZXZlbHMgLSAxOworICAgIGJvb2wgaGFzU21hbGxNaXBz
ID0KKyAgICAgICAgKGdldExldmVsV2lkdGgoZWZmZWN0aXZlVG9wTGV2ZWwpIDw9IDIgfHwgZ2V0
TGV2ZWxIZWlnaHQoZWZmZWN0aXZlVG9wTGV2ZWwpIDw9IDIpOwogCiAgICAgYm9vbCB1c2VEcm9w
U3RlbmNpbCA9ICh3b3JrYXJvdW5kICYmIGhhc1N0ZW5jaWwgJiYgaGFzU21hbGxNaXBzKTsKKyAg
ICBTUlZLZXkga2V5KGVmZmVjdGl2ZUJhc2VMZXZlbCwgbWlwTGV2ZWxzLCBzd2l6emxlUmVxdWly
ZWQsIHVzZURyb3BTdGVuY2lsKTsKICAgICBpZiAodXNlRHJvcFN0ZW5jaWwpCiAgICAgewotICAg
ICAgICAvLyBFbnN1cmUgZHJvcCB0ZXh0dXJlIGdldHMgcmUtY3JlYXRlZCwgaWYgU1JWIGlzIGNh
Y2hlZC4KLSAgICAgICAgQU5HTEVfVFJZKGNyZWF0ZURyb3BTdGVuY2lsVGV4dHVyZSgpKTsKKyAg
ICAgICAgLy8gRW5zdXJlIGRyb3AgdGV4dHVyZSBnZXRzIGNyZWF0ZWQuCisgICAgICAgIERyb3BT
dGVuY2lsIHJlc3VsdCA9IERyb3BTdGVuY2lsOjpDUkVBVEVEOworICAgICAgICBBTkdMRV9UUllf
UkVTVUxUKGVuc3VyZURyb3BTdGVuY2lsVGV4dHVyZSgpLCByZXN1bHQpOworCisgICAgICAgIC8v
IENsZWFyIHRoZSBTUlYgY2FjaGUgaWYgbmVjZXNzYXJ5LgorICAgICAgICAvLyBUT0RPKGptYWRp
bGwpOiBSZS11c2UgZmluZCBxdWVyeSByZXN1bHQuCisgICAgICAgIGF1dG8gc3J2RW50cnkgPSBt
U3J2Q2FjaGUuZmluZChrZXkpOworICAgICAgICBpZiAocmVzdWx0ID09IERyb3BTdGVuY2lsOjpD
UkVBVEVEICYmIHNydkVudHJ5ICE9IG1TcnZDYWNoZS5lbmQoKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgU2FmZVJlbGVhc2Uoc3J2RW50cnktPnNlY29uZCk7CisgICAgICAgICAgICBtU3J2Q2Fj
aGUuZXJhc2Uoa2V5KTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIFNSVktleSBrZXkoZWZmZWN0
aXZlQmFzZUxldmVsLCBtaXBMZXZlbHMsIHN3aXp6bGVSZXF1aXJlZCwgdXNlRHJvcFN0ZW5jaWwp
OwogICAgIEFOR0xFX1RSWShnZXRDYWNoZWRPckNyZWF0ZVNSVihrZXksIG91dFNSVikpOwogCiAg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CkBAIC0yNDcsOSArMjU5LDExIEBAIGdsOjpFcnJvciBU
ZXh0dXJlU3RvcmFnZTExOjpnZXRDYWNoZWRPckNyZWF0ZVNSVihjb25zdCBTUlZLZXkgJmtleSwK
IAogICAgIGlmIChrZXkuc3dpenpsZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVCgha2V5LmRyb3BT
dGVuY2lsIHx8IG1Gb3JtYXRJbmZvLnN3aXp6bGUuZm9ybWF0LnN0ZW5jaWxCaXRzID09IDApOwor
ICAgICAgICBjb25zdCBhdXRvICZzd2l6emxlRm9ybWF0ID0KKyAgICAgICAgICAgIG1Gb3JtYXRJ
bmZvLmdldFN3aXp6bGVGb3JtYXQobVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2Fwcygp
KTsKKyAgICAgICAgQVNTRVJUKCFrZXkuZHJvcFN0ZW5jaWwgfHwgc3dpenpsZUZvcm1hdC5mb3Jt
YXQoKS5zdGVuY2lsQml0cyA9PSAwKTsKICAgICAgICAgQU5HTEVfVFJZKGdldFN3aXp6bGVUZXh0
dXJlKCZ0ZXh0dXJlKSk7Ci0gICAgICAgIGZvcm1hdCA9IG1Gb3JtYXRJbmZvLnN3aXp6bGUuc3J2
Rm9ybWF0OworICAgICAgICBmb3JtYXQgPSBzd2l6emxlRm9ybWF0LnNydkZvcm1hdDsKICAgICB9
CiAgICAgZWxzZSBpZiAoa2V5LmRyb3BTdGVuY2lsKQogICAgIHsKQEAgLTQyNiw3ICs0NDAsNyBA
QCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6dXBkYXRlU3VicmVzb3VyY2VMZXZlbChJRDNE
MTFSZXNvdXJjZSAqc3JjVGV4dHVyZSwKICAgICBpZiAoIWZ1bGxDb3B5ICYmIG1Gb3JtYXRJbmZv
LmRzdkZvcm1hdCAhPSBEWEdJX0ZPUk1BVF9VTktOT1dOKQogICAgIHsKICAgICAgICAgLy8gQ29w
eVN1YnJlc291cmNlUmVnaW9uIGNhbm5vdCBjb3B5IHBhcnRpYWwgZGVwdGggc3RlbmNpbHMsIHVz
ZSB0aGUgYmxpdHRlciBpbnN0ZWFkCi0gICAgICAgIEJsaXQxMSAqYmxpdHRlciA9IG1SZW5kZXJl
ci0+Z2V0QmxpdHRlcigpOworICAgICAgICBCbGl0MTEgKmJsaXR0ZXIgICAgICAgID0gbVJlbmRl
cmVyLT5nZXRCbGl0dGVyKCk7CiAgICAgICAgIFRleHR1cmVIZWxwZXIxMSBzb3VyY2UgPSBUZXh0
dXJlSGVscGVyMTE6Ok1ha2VBbmRSZWZlcmVuY2Uoc3JjVGV4dHVyZSwgZ2V0Rm9ybWF0U2V0KCkp
OwogICAgICAgICBUZXh0dXJlSGVscGVyMTEgZGVzdCAgID0gVGV4dHVyZUhlbHBlcjExOjpNYWtl
QW5kUmVmZXJlbmNlKGRzdFRleHR1cmUsIGdldEZvcm1hdFNldCgpKTsKICAgICAgICAgcmV0dXJu
IGJsaXR0ZXItPmNvcHlEZXB0aFN0ZW5jaWwoc291cmNlLCBzb3VyY2VTdWJyZXNvdXJjZSwgY29w
eUFyZWEsIHRleFNpemUsIGRlc3QsCkBAIC00OTgsNyArNTEyLDcgQEAgZ2w6OkVycm9yIFRleHR1
cmVTdG9yYWdlMTE6OmNvcHlTdWJyZXNvdXJjZUxldmVsKElEM0QxMVJlc291cmNlICpkc3RUZXh0
dXJlLAogICAgIGNvbnRleHQtPkNvcHlTdWJyZXNvdXJjZVJlZ2lvbihkc3RUZXh0dXJlLCBkc3RT
dWJyZXNvdXJjZSwgcmVnaW9uLngsIHJlZ2lvbi55LCByZWdpb24ueiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc3JjVGV4dHVyZSwgc3JjU3VicmVzb3VyY2UsIHBTcmNCb3gp
OwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExOjpnZW5lcmF0ZU1pcG1h
cChjb25zdCBnbDo6SW1hZ2VJbmRleCAmc291cmNlSW5kZXgsCkBAIC01MTYsNyArNTMwLDcgQEAg
Z2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTE6OmdlbmVyYXRlTWlwbWFwKGNvbnN0IGdsOjpJbWFn
ZUluZGV4ICZzb3VyY2VJbmRleCwKIAogICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc291
cmNlU1JWID0KICAgICAgICAgR2V0QXM8UmVuZGVyVGFyZ2V0MTE+KHNvdXJjZSktPmdldEJsaXRT
aGFkZXJSZXNvdXJjZVZpZXcoKTsKLSAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpkZXN0UlRW
ICAgICA9IEdldEFzPFJlbmRlclRhcmdldDExPihkZXN0KS0+Z2V0UmVuZGVyVGFyZ2V0Vmlldygp
OworICAgIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKmRlc3RSVFYgPSBHZXRBczxSZW5kZXJUYXJn
ZXQxMT4oZGVzdCktPmdldFJlbmRlclRhcmdldFZpZXcoKTsKIAogICAgIGdsOjpCb3ggc291cmNl
QXJlYSgwLCAwLCAwLCBzb3VyY2UtPmdldFdpZHRoKCksIHNvdXJjZS0+Z2V0SGVpZ2h0KCksIHNv
dXJjZS0+Z2V0RGVwdGgoKSk7CiAgICAgZ2w6OkV4dGVudHMgc291cmNlU2l6ZShzb3VyY2UtPmdl
dFdpZHRoKCksIHNvdXJjZS0+Z2V0SGVpZ2h0KCksIHNvdXJjZS0+Z2V0RGVwdGgoKSk7CkBAIC02
MTQsOSArNjI4LDkgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTE6OnNldERhdGEoY29uc3Qg
Z2w6OkltYWdlSW5kZXggJmluZGV4LAogICAgIC8vIHdpdGggY29tcHJlc3NlZCBmb3JtYXRzIGlu
IHRoZSBjYWxsaW5nIGxvZ2ljLgogICAgIEFTU0VSVCghaW50ZXJuYWxGb3JtYXRJbmZvLmNvbXBy
ZXNzZWQpOwogCi0gICAgY29uc3QgaW50IHdpZHRoICA9IGRlc3RCb3ggPyBkZXN0Qm94LT53aWR0
aCA6IHN0YXRpY19jYXN0PGludD4oaW1hZ2UtPmdldFdpZHRoKCkpOwotICAgIGNvbnN0IGludCBo
ZWlnaHQgPSBkZXN0Qm94ID8gZGVzdEJveC0+aGVpZ2h0IDogc3RhdGljX2Nhc3Q8aW50PihpbWFn
ZS0+Z2V0SGVpZ2h0KCkpOwotICAgIGNvbnN0IGludCBkZXB0aCA9IGRlc3RCb3ggPyBkZXN0Qm94
LT5kZXB0aCA6IHN0YXRpY19jYXN0PGludD4oaW1hZ2UtPmdldERlcHRoKCkpOworICAgIGNvbnN0
IGludCB3aWR0aCAgICA9IGRlc3RCb3ggPyBkZXN0Qm94LT53aWR0aCA6IHN0YXRpY19jYXN0PGlu
dD4oaW1hZ2UtPmdldFdpZHRoKCkpOworICAgIGNvbnN0IGludCBoZWlnaHQgICA9IGRlc3RCb3gg
PyBkZXN0Qm94LT5oZWlnaHQgOiBzdGF0aWNfY2FzdDxpbnQ+KGltYWdlLT5nZXRIZWlnaHQoKSk7
CisgICAgY29uc3QgaW50IGRlcHRoICAgID0gZGVzdEJveCA/IGRlc3RCb3gtPmRlcHRoIDogc3Rh
dGljX2Nhc3Q8aW50PihpbWFnZS0+Z2V0RGVwdGgoKSk7CiAgICAgR0x1aW50IHNyY1Jvd1BpdGNo
ID0gMDsKICAgICBBTkdMRV9UUllfUkVTVUxUKAogICAgICAgICBpbnRlcm5hbEZvcm1hdEluZm8u
Y29tcHV0ZVJvd1BpdGNoKHR5cGUsIHdpZHRoLCB1bnBhY2suYWxpZ25tZW50LCB1bnBhY2sucm93
TGVuZ3RoKSwKQEAgLTY0MCwxMCArNjU0LDEwIEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTEx
OjpzZXREYXRhKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKICAgICBVSU5UIGJ1ZmZlckRl
cHRoUGl0Y2ggPSBidWZmZXJSb3dQaXRjaCAqIGhlaWdodDsKIAogICAgIGNvbnN0IHNpemVfdCBu
ZWVkZWRTaXplICAgICAgICA9IGJ1ZmZlckRlcHRoUGl0Y2ggKiBkZXB0aDsKLSAgICBNZW1vcnlC
dWZmZXIgKmNvbnZlcnNpb25CdWZmZXIgPSBudWxscHRyOworICAgIGFuZ2xlOjpNZW1vcnlCdWZm
ZXIgKmNvbnZlcnNpb25CdWZmZXIgPSBudWxscHRyOwogICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEg
ICAgICAgICAgICA9IG51bGxwdHI7CiAKLSAgICBMb2FkSW1hZ2VGdW5jdGlvbkluZm8gbG9hZEZ1
bmN0aW9uSW5mbyA9IGQzZDExRm9ybWF0LmxvYWRGdW5jdGlvbnModHlwZSk7CisgICAgTG9hZElt
YWdlRnVuY3Rpb25JbmZvIGxvYWRGdW5jdGlvbkluZm8gPSBkM2QxMUZvcm1hdC5nZXRMb2FkRnVu
Y3Rpb25zKCkodHlwZSk7CiAgICAgaWYgKGxvYWRGdW5jdGlvbkluZm8ucmVxdWlyZXNDb252ZXJz
aW9uKQogICAgIHsKICAgICAgICAgQU5HTEVfVFJZKG1SZW5kZXJlci0+Z2V0U2NyYXRjaE1lbW9y
eUJ1ZmZlcihuZWVkZWRTaXplLCAmY29udmVyc2lvbkJ1ZmZlcikpOwpAQCAtNjg1LDEwICs2OTks
MTAgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTE6OnNldERhdGEoY29uc3QgZ2w6OkltYWdl
SW5kZXggJmluZGV4LAogICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3Ig
VGV4dHVyZVN0b3JhZ2UxMTo6Y3JlYXRlRHJvcFN0ZW5jaWxUZXh0dXJlKCkKK2dsOjpFcnJvck9y
UmVzdWx0PFRleHR1cmVTdG9yYWdlMTE6OkRyb3BTdGVuY2lsPiBUZXh0dXJlU3RvcmFnZTExOjpl
bnN1cmVEcm9wU3RlbmNpbFRleHR1cmUoKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRHJvcCBzdGVuY2lsIHRleHR1
cmUgbm90IGltcGxlbWVudGVkLiIpOworICAgIHJldHVybiBnbDo6SW50ZXJuYWxFcnJvcigpIDw8
ICJEcm9wIHN0ZW5jaWwgdGV4dHVyZSBub3QgaW1wbGVtZW50ZWQuIjsKIH0KIAogVGV4dHVyZVN0
b3JhZ2UxMV8yRDo6VGV4dHVyZVN0b3JhZ2UxMV8yRChSZW5kZXJlcjExICpyZW5kZXJlciwgU3dh
cENoYWluMTEgKnN3YXBjaGFpbikKQEAgLTc3Niw3ICs3OTAsNyBAQCBUZXh0dXJlU3RvcmFnZTEx
XzJEOjp+VGV4dHVyZVN0b3JhZ2UxMV8yRCgpCiAgICAgICAgICAgICAgICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86
IEZpbmQgYSB3YXkgdG8gcmVwb3J0IHRoaXMgYmFjayB0byB0aGUgY29udGV4dAotICAgICAgICAg
ICAgICAgICAgICBFUlIoIkVycm9yIGluaXRpYWxpemF0aW9uIHRleHR1cmUgc3RvcmFnZTogJXgi
LCBlcnJvci5nZXRDb2RlKCkpOworICAgICAgICAgICAgICAgICAgICBFUlIoKSA8PCAiRXJyb3Ig
aW5pdGlhbGl6YXRpb24gdGV4dHVyZSBzdG9yYWdlOiAiIDw8IGVycm9yOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTA1Myw3ICsxMDY3LDcgQEAgZ2w6
OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkQ6OmVuc3VyZVRleHR1cmVFeGlzdHMoaW50IG1pcExl
dmVscykKICAgICAgICAgZDNkMTE6OlNldERlYnVnTmFtZSgqb3V0cHV0VGV4dHVyZSwgIlRleFN0
b3JhZ2UyRC5UZXh0dXJlIik7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJl
U3RvcmFnZTExXzJEOjpnZXRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4
LCBSZW5kZXJUYXJnZXREM0QgKipvdXRSVCkKQEAgLTExNTAsNyArMTE2NCw3IEBAIGdsOjpFcnJv
ciBUZXh0dXJlU3RvcmFnZTExXzJEOjpnZXRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkltYWdlSW5k
ZXggJmluZGV4LCBSZW5kCiAgICAgICAgIFNhZmVSZWxlYXNlKHJ0dik7CiAKICAgICAgICAgKm91
dFJUID0gbVJlbmRlclRhcmdldFtsZXZlbF07Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKICAgICB9CiAKICAgICBB
U1NFUlQobUZvcm1hdEluZm8uZHN2Rm9ybWF0ICE9IERYR0lfRk9STUFUX1VOS05PV04pOwpAQCAt
MTIzMyw3ICsxMjQ3LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkQ6OmNyZWF0ZVNS
VihpbnQgYmFzZUxldmVsLAogCiAgICAgZDNkMTE6OlNldERlYnVnTmFtZSgqb3V0U1JWLCAiVGV4
U3RvcmFnZTJELlNSViIpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cisg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTEx
XzJEOjpnZXRTd2l6emxlVGV4dHVyZShJRDNEMTFSZXNvdXJjZSAqKm91dFRleHR1cmUpCkBAIC0x
MjQ5LDcgKzEyNjMsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yRDo6Z2V0U3dpenps
ZVRleHR1cmUoSUQzRDExUmVzb3VyY2UgKipvdXRUZXh0dXJlKQogICAgICAgICBkZXNjLkhlaWdo
dCAgICAgICAgICAgICA9IG1UZXh0dXJlSGVpZ2h0OwogICAgICAgICBkZXNjLk1pcExldmVscyAg
ICAgICAgICA9IG1NaXBMZXZlbHM7CiAgICAgICAgIGRlc2MuQXJyYXlTaXplICAgICAgICAgID0g
MTsKLSAgICAgICAgZGVzYy5Gb3JtYXQgICAgICAgICAgICAgPSBtRm9ybWF0SW5mby5zd2l6emxl
LnRleEZvcm1hdDsKKyAgICAgICAgZGVzYy5Gb3JtYXQgPSBtRm9ybWF0SW5mby5nZXRTd2l6emxl
Rm9ybWF0KG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSkudGV4Rm9ybWF0Owog
ICAgICAgICBkZXNjLlNhbXBsZURlc2MuQ291bnQgICA9IDE7CiAgICAgICAgIGRlc2MuU2FtcGxl
RGVzYy5RdWFsaXR5ID0gMDsKICAgICAgICAgZGVzYy5Vc2FnZSAgICAgICAgICAgICAgPSBEM0Qx
MV9VU0FHRV9ERUZBVUxUOwpAQCAtMTI3MCw3ICsxMjg0LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVT
dG9yYWdlMTFfMkQ6OmdldFN3aXp6bGVUZXh0dXJlKElEM0QxMVJlc291cmNlICoqb3V0VGV4dHVy
ZSkKICAgICB9CiAKICAgICAqb3V0VGV4dHVyZSA9IG1Td2l6emxlVGV4dHVyZTsKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkQ6OmdldFN3aXp6bGVSZW5kZXJUYXJnZXQo
aW50IG1pcExldmVsLCBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICoqb3V0UlRWKQpAQCAtMTI4Niw3
ICsxMzAwLDggQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkQ6OmdldFN3aXp6bGVSZW5k
ZXJUYXJnZXQoaW50IG1pcExldmVsLCBJRDNEMTFSZW5kZXIKICAgICAgICAgSUQzRDExRGV2aWNl
ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogCiAgICAgICAgIEQzRDExX1JFTkRF
Ul9UQVJHRVRfVklFV19ERVNDIHJ0dkRlc2M7Ci0gICAgICAgIHJ0dkRlc2MuRm9ybWF0ICAgICAg
ICAgICAgID0gbUZvcm1hdEluZm8uc3dpenpsZS5ydHZGb3JtYXQ7CisgICAgICAgIHJ0dkRlc2Mu
Rm9ybWF0ID0KKyAgICAgICAgICAgIG1Gb3JtYXRJbmZvLmdldFN3aXp6bGVGb3JtYXQobVJlbmRl
cmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKS5ydHZGb3JtYXQ7CiAgICAgICAgIHJ0dkRl
c2MuVmlld0RpbWVuc2lvbiAgICAgID0gRDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkQ7CiAg
ICAgICAgIHJ0dkRlc2MuVGV4dHVyZTJELk1pcFNsaWNlID0gbVRvcExldmVsICsgbWlwTGV2ZWw7
CiAKQEAgLTEzMDYsMTEgKzEzMjEsMTEgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkQ6
OmdldFN3aXp6bGVSZW5kZXJUYXJnZXQoaW50IG1pcExldmVsLCBJRDNEMTFSZW5kZXIKICAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkQ6
OmNyZWF0ZURyb3BTdGVuY2lsVGV4dHVyZSgpCitnbDo6RXJyb3JPclJlc3VsdDxUZXh0dXJlU3Rv
cmFnZTExOjpEcm9wU3RlbmNpbD4gVGV4dHVyZVN0b3JhZ2UxMV8yRDo6ZW5zdXJlRHJvcFN0ZW5j
aWxUZXh0dXJlKCkKIHsKICAgICBpZiAobURyb3BTdGVuY2lsVGV4dHVyZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworICAgICAgICByZXR1cm4gRHJvcFN0ZW5jaWw6OkFM
UkVBRFlfRVhJU1RTOwogICAgIH0KIAogICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIGRyb3BEZXNj
ID0ge307CkBAIC0xMzMxLDEzICsxMzQ2LDEzIEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTEx
XzJEOjpjcmVhdGVEcm9wU3RlbmNpbFRleHR1cmUoKQogICAgIEhSRVNVTFQgaHIgPSBkZXZpY2Ut
PkNyZWF0ZVRleHR1cmUyRCgmZHJvcERlc2MsIG51bGxwdHIsICZtRHJvcFN0ZW5jaWxUZXh0dXJl
KTsKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICB7Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJFcnJvciBjcmVhdGluZyBkcm9wIHN0ZW5jaWwgdGV4dHVy
ZS4iKTsKKyAgICAgICAgcmV0dXJuIGdsOjpJbnRlcm5hbEVycm9yKCkgPDwgIkVycm9yIGNyZWF0
aW5nIGRyb3Agc3RlbmNpbCB0ZXh0dXJlLiI7CiAgICAgfQogICAgIGQzZDExOjpTZXREZWJ1Z05h
bWUobURyb3BTdGVuY2lsVGV4dHVyZSwgIlRleFN0b3JhZ2UyRC5Ecm9wU3RlbmNpbCIpOwogCiAg
ICAgQU5HTEVfVFJZKGluaXREcm9wU3RlbmNpbFRleHR1cmUoZ2w6OkltYWdlSW5kZXhJdGVyYXRv
cjo6TWFrZTJEKDAsIG1NaXBMZXZlbHMpKSk7CiAKLSAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
KyAgICByZXR1cm4gRHJvcFN0ZW5jaWw6OkNSRUFURUQ7CiB9CiAKIFRleHR1cmVTdG9yYWdlMTFf
RXh0ZXJuYWw6OlRleHR1cmVTdG9yYWdlMTFfRXh0ZXJuYWwoCkBAIC0xMzQ5LDE1ICsxMzY0LDE1
IEBAIFRleHR1cmVTdG9yYWdlMTFfRXh0ZXJuYWw6OlRleHR1cmVTdG9yYWdlMTFfRXh0ZXJuYWwo
CiAgICAgQVNTRVJUKHN0cmVhbS0+Z2V0UHJvZHVjZXJUeXBlKCkgPT0gZWdsOjpTdHJlYW06OlBy
b2R1Y2VyVHlwZTo6RDNEMTFUZXh0dXJlTlYxMik7CiAgICAgU3RyZWFtUHJvZHVjZXJOVjEyICpw
cm9kdWNlciA9IHN0YXRpY19jYXN0PFN0cmVhbVByb2R1Y2VyTlYxMiAqPihzdHJlYW0tPmdldElt
cGxlbWVudGF0aW9uKCkpOwogICAgIG1UZXh0dXJlICAgICAgICAgICAgICAgICAgICAgPSBwcm9k
dWNlci0+Z2V0RDNEVGV4dHVyZSgpOwotICAgIG1TdWJyZXNvdXJjZUluZGV4ID0gcHJvZHVjZXIt
PmdldEFycmF5U2xpY2UoKTsKKyAgICBtU3VicmVzb3VyY2VJbmRleCAgICAgICAgICAgID0gcHJv
ZHVjZXItPmdldEFycmF5U2xpY2UoKTsKICAgICBtVGV4dHVyZS0+QWRkUmVmKCk7CiAgICAgbU1p
cExldmVscyA9IDE7CiAKICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyBkZXNjOwogICAgIG1UZXh0
dXJlLT5HZXREZXNjKCZkZXNjKTsKLSAgICBtVGV4dHVyZVdpZHRoICAgPSBkZXNjLldpZHRoOwot
ICAgIG1UZXh0dXJlSGVpZ2h0ICA9IGRlc2MuSGVpZ2h0OwotICAgIG1UZXh0dXJlRGVwdGggICA9
IDE7CisgICAgbVRleHR1cmVXaWR0aCAgPSBkZXNjLldpZHRoOworICAgIG1UZXh0dXJlSGVpZ2h0
ID0gZGVzYy5IZWlnaHQ7CisgICAgbVRleHR1cmVEZXB0aCAgPSAxOwogICAgIG1IYXNLZXllZE11
dGV4ID0gKGRlc2MuTWlzY0ZsYWdzICYgRDNEMTFfUkVTT1VSQ0VfTUlTQ19TSEFSRURfS0VZRURN
VVRFWCkgIT0gMDsKIH0KIApAQCAtMTQyMCwxMyArMTQzNSwxMyBAQCBnbDo6RXJyb3IgVGV4dHVy
ZVN0b3JhZ2UxMV9FeHRlcm5hbDo6cmVsZWFzZUFzc29jaWF0ZWRJbWFnZShjb25zdCBnbDo6SW1h
Z2VJbmRleAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfRXh0ZXJuYWw6OmdldFJlc291cmNl
KElEM0QxMVJlc291cmNlICoqb3V0UmVzb3VyY2UpCiB7CiAgICAgKm91dFJlc291cmNlID0gbVRl
eHR1cmU7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0V4dGVybmFsOjpn
ZXRNaXBwZWRSZXNvdXJjZShJRDNEMTFSZXNvdXJjZSAqKm91dFJlc291cmNlKQogewogICAgICpv
dXRSZXNvdXJjZSA9IG1UZXh0dXJlOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3Jh
Z2UxMV9FeHRlcm5hbDo6Z2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRl
eCwKQEAgLTE1MDEsMTAgKzE1MTYsMTAgQEAgVGV4dHVyZVN0b3JhZ2UxMV9FR0xJbWFnZTo6VGV4
dHVyZVN0b3JhZ2UxMV9FR0xJbWFnZShSZW5kZXJlcjExICpyZW5kZXJlciwKIHsKICAgICBtQ3Vy
cmVudFJlbmRlclRhcmdldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihyZW5kZXJUYXJn
ZXQxMSk7CiAKLSAgICBtTWlwTGV2ZWxzICAgICAgPSAxOwotICAgIG1UZXh0dXJlV2lkdGggICA9
IHJlbmRlclRhcmdldDExLT5nZXRXaWR0aCgpOwotICAgIG1UZXh0dXJlSGVpZ2h0ICA9IHJlbmRl
clRhcmdldDExLT5nZXRIZWlnaHQoKTsKLSAgICBtVGV4dHVyZURlcHRoICAgPSAxOworICAgIG1N
aXBMZXZlbHMgICAgID0gMTsKKyAgICBtVGV4dHVyZVdpZHRoICA9IHJlbmRlclRhcmdldDExLT5n
ZXRXaWR0aCgpOworICAgIG1UZXh0dXJlSGVpZ2h0ID0gcmVuZGVyVGFyZ2V0MTEtPmdldEhlaWdo
dCgpOworICAgIG1UZXh0dXJlRGVwdGggID0gMTsKIH0KIAogVGV4dHVyZVN0b3JhZ2UxMV9FR0xJ
bWFnZTo6flRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2UoKQpAQCAtMTU0Niw3ICsxNTYxLDYgQEAg
Z2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6OmdldFJlbmRlclRhcmdldChjb25z
dCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgKIHsKICAgICBBU1NFUlQoIWluZGV4Lmhhc0xheWVyKCkp
OwogICAgIEFTU0VSVChpbmRleC5taXBJbmRleCA9PSAwKTsKLSAgICBVTlVTRURfQVNTRVJUSU9O
X1ZBUklBQkxFKGluZGV4KTsKIAogICAgIEFOR0xFX1RSWShjaGVja0ZvclVwZGF0ZWRSZW5kZXJU
YXJnZXQoKSk7CiAKQEAgLTE1ODYsNyArMTYwMCw3IEBAIGJvb2wgVGV4dHVyZVN0b3JhZ2UxMV9F
R0xJbWFnZTo6aXNBc3NvY2lhdGVkSW1hZ2VWYWxpZChjb25zdCBnbDo6SW1hZ2VJbmRleCAmLCBJ
CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0VHTEltYWdlOjpyZWxlYXNlQXNzb2NpYXRl
ZEltYWdlKGNvbnN0IGdsOjpJbWFnZUluZGV4ICYsIEltYWdlMTEgKikKIHsKLSAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAog
Z2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6OnVzZUxldmVsWmVyb1dvcmthcm91
bmRUZXh0dXJlKGJvb2wpCkBAIC0xNjA4LDcgKzE2MjIsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0
b3JhZ2UxMV9FR0xJbWFnZTo6Z2V0U3dpenpsZVRleHR1cmUoSUQzRDExUmVzb3VyY2UgKipvdXRU
ZXh0dQogICAgICAgICBkZXNjLkhlaWdodCAgICAgICAgICAgICA9IG1UZXh0dXJlSGVpZ2h0Owog
ICAgICAgICBkZXNjLk1pcExldmVscyAgICAgICAgICA9IG1NaXBMZXZlbHM7CiAgICAgICAgIGRl
c2MuQXJyYXlTaXplICAgICAgICAgID0gMTsKLSAgICAgICAgZGVzYy5Gb3JtYXQgICAgICAgICAg
ICAgPSBtRm9ybWF0SW5mby5zd2l6emxlLnRleEZvcm1hdDsKKyAgICAgICAgZGVzYy5Gb3JtYXQg
PSBtRm9ybWF0SW5mby5nZXRTd2l6emxlRm9ybWF0KG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURl
dmljZUNhcHMoKSkudGV4Rm9ybWF0OwogICAgICAgICBkZXNjLlNhbXBsZURlc2MuQ291bnQgICA9
IDE7CiAgICAgICAgIGRlc2MuU2FtcGxlRGVzYy5RdWFsaXR5ID0gMDsKICAgICAgICAgZGVzYy5V
c2FnZSAgICAgICAgICAgICAgPSBEM0QxMV9VU0FHRV9ERUZBVUxUOwpAQCAtMTYyOSw3ICsxNjQz
LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6OmdldFN3aXp6bGVUZXh0
dXJlKElEM0QxMVJlc291cmNlICoqb3V0VGV4dHUKICAgICB9CiAKICAgICAqb3V0VGV4dHVyZSA9
IG1Td2l6emxlVGV4dHVyZTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFf
RUdMSW1hZ2U6OmdldFN3aXp6bGVSZW5kZXJUYXJnZXQoaW50IG1pcExldmVsLApAQCAtMTY0Niw3
ICsxNjYwLDggQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6OmdldFN3aXp6
bGVSZW5kZXJUYXJnZXQoaW50IG1pcExldmVsLAogICAgICAgICBJRDNEMTFEZXZpY2UgKmRldmlj
ZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAKICAgICAgICAgRDNEMTFfUkVOREVSX1RBUkdF
VF9WSUVXX0RFU0MgcnR2RGVzYzsKLSAgICAgICAgcnR2RGVzYy5Gb3JtYXQgICAgICAgICAgICAg
PSBtRm9ybWF0SW5mby5zd2l6emxlLnJ0dkZvcm1hdDsKKyAgICAgICAgcnR2RGVzYy5Gb3JtYXQg
PQorICAgICAgICAgICAgbUZvcm1hdEluZm8uZ2V0U3dpenpsZUZvcm1hdChtUmVuZGVyZXItPmdl
dFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpLnJ0dkZvcm1hdDsKICAgICAgICAgcnR2RGVzYy5WaWV3
RGltZW5zaW9uICAgICAgPSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUyRDsKICAgICAgICAg
cnR2RGVzYy5UZXh0dXJlMkQuTWlwU2xpY2UgPSBtVG9wTGV2ZWwgKyBtaXBMZXZlbDsKIApAQCAt
MTcyNCw3ICsxNzM5LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfRUdMSW1hZ2U6OmNy
ZWF0ZVNSVihpbnQgYmFzZUxldmVsLAogICAgICAgICAoKm91dFNSViktPkFkZFJlZigpOwogICAg
IH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9FR0xJbWFnZTo6Z2V0
SW1hZ2VSZW5kZXJUYXJnZXQoUmVuZGVyVGFyZ2V0MTEgKipvdXRSVCkgY29uc3QKQEAgLTIxNDYs
NyArMjE2MSw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmNyZWF0ZVJlbmRl
clRhcmdldFNSVihJRDNEMTFSZXNvdXJjZSAqdGV4dHVyZSwKICAgICAgICAgICAgICJGYWlsZWQg
dG8gY3JlYXRlIGludGVybmFsIHNoYWRlciByZXNvdXJjZSB2aWV3IGZvciB0ZXh0dXJlIHN0b3Jh
Z2UsIHJlc3VsdDogMHglWC4iLAogICAgICAgICAgICAgcmVzdWx0KTsKICAgICB9Ci0gICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9
CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmdldFJlbmRlclRhcmdldChjb25z
dCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsCkBAIC0yMTk5LDcgKzIyMTQsNyBAQCBnbDo6RXJyb3Ig
VGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpnZXRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkltYWdlSW5k
ZXggJmluZGV4LAogCiAgICAgICAgICAgICBBU1NFUlQob3V0UlQpOwogICAgICAgICAgICAgKm91
dFJUID0gbUxldmVsWmVyb1JlbmRlclRhcmdldFtmYWNlSW5kZXhdOwotICAgICAgICAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgICAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKICAgICAgICAgfQogCiAgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNlVmlldyAqc3J2
ID0gbnVsbHB0cjsKQEAgLTIzMDAsNyArMjMxNSw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFn
ZTExX0N1YmU6OmdldFJlbmRlclRhcmdldChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsCiAK
ICAgICBBU1NFUlQob3V0UlQpOwogICAgICpvdXRSVCA9IG1SZW5kZXJUYXJnZXRbZmFjZUluZGV4
XVtsZXZlbF07Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmNy
ZWF0ZVNSVihpbnQgYmFzZUxldmVsLApAQCAtMjM2Nyw3ICsyMzgyLDcgQEAgZ2w6OkVycm9yIFRl
eHR1cmVTdG9yYWdlMTFfQ3ViZTo6Y3JlYXRlU1JWKGludCBiYXNlTGV2ZWwsCiAKICAgICBkM2Qx
MTo6U2V0RGVidWdOYW1lKCpvdXRTUlYsICJUZXhTdG9yYWdlQ3ViZS5TUlYiKTsKIAotICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
fQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpnZXRTd2l6emxlVGV4dHVyZShJ
RDNEMTFSZXNvdXJjZSAqKm91dFRleHR1cmUpCkBAIC0yMzgzLDcgKzIzOTgsNyBAQCBnbDo6RXJy
b3IgVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjpnZXRTd2l6emxlVGV4dHVyZShJRDNEMTFSZXNvdXJj
ZSAqKm91dFRleHR1cmUpCiAgICAgICAgIGRlc2MuSGVpZ2h0ICAgICAgICAgICAgID0gbVRleHR1
cmVIZWlnaHQ7CiAgICAgICAgIGRlc2MuTWlwTGV2ZWxzICAgICAgICAgID0gbU1pcExldmVsczsK
ICAgICAgICAgZGVzYy5BcnJheVNpemUgICAgICAgICAgPSBDVUJFX0ZBQ0VfQ09VTlQ7Ci0gICAg
ICAgIGRlc2MuRm9ybWF0ICAgICAgICAgICAgID0gbUZvcm1hdEluZm8uc3dpenpsZS50ZXhGb3Jt
YXQ7CisgICAgICAgIGRlc2MuRm9ybWF0ID0gbUZvcm1hdEluZm8uZ2V0U3dpenpsZUZvcm1hdCht
UmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBzKCkpLnRleEZvcm1hdDsKICAgICAgICAg
ZGVzYy5TYW1wbGVEZXNjLkNvdW50ICAgPSAxOwogICAgICAgICBkZXNjLlNhbXBsZURlc2MuUXVh
bGl0eSA9IDA7CiAgICAgICAgIGRlc2MuVXNhZ2UgICAgICAgICAgICAgID0gRDNEMTFfVVNBR0Vf
REVGQVVMVDsKQEAgLTI0MDQsNyArMjQxOSw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTEx
X0N1YmU6OmdldFN3aXp6bGVUZXh0dXJlKElEM0QxMVJlc291cmNlICoqb3V0VGV4dHVyZSkKICAg
ICB9CiAKICAgICAqb3V0VGV4dHVyZSA9IG1Td2l6emxlVGV4dHVyZTsKLSAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6
OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6Z2V0U3dpenpsZVJlbmRlclRhcmdldChpbnQg
bWlwTGV2ZWwsCkBAIC0yNDIxLDcgKzI0MzYsOCBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2Ux
MV9DdWJlOjpnZXRTd2l6emxlUmVuZGVyVGFyZ2V0KGludCBtaXBMZXZlbCwKICAgICAgICAgSUQz
RDExRGV2aWNlICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwogCiAgICAgICAgIEQz
RDExX1JFTkRFUl9UQVJHRVRfVklFV19ERVNDIHJ0dkRlc2M7Ci0gICAgICAgIHJ0dkRlc2MuRm9y
bWF0ICAgICAgICAgICAgICAgICAgICAgICAgID0gbUZvcm1hdEluZm8uc3dpenpsZS5ydHZGb3Jt
YXQ7CisgICAgICAgIHJ0dkRlc2MuRm9ybWF0ID0KKyAgICAgICAgICAgIG1Gb3JtYXRJbmZvLmdl
dFN3aXp6bGVGb3JtYXQobVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKS5ydHZG
b3JtYXQ7CiAgICAgICAgIHJ0dkRlc2MuVmlld0RpbWVuc2lvbiAgICAgICAgICAgICAgICAgID0g
RDNEMTFfUlRWX0RJTUVOU0lPTl9URVhUVVJFMkRBUlJBWTsKICAgICAgICAgcnR2RGVzYy5UZXh0
dXJlMkRBcnJheS5NaXBTbGljZSAgICAgICAgPSBtVG9wTGV2ZWwgKyBtaXBMZXZlbDsKICAgICAg
ICAgcnR2RGVzYy5UZXh0dXJlMkRBcnJheS5GaXJzdEFycmF5U2xpY2UgPSAwOwpAQCAtMjQ2OSwx
MSArMjQ4NSwxMSBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMTo6aW5pdERyb3BTdGVuY2ls
VGV4dHVyZShjb25zdCBnbDo6SW1hZ2VJbmRleEl0ZXJhdG9yCiAgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExX0N1YmU6OmNyZWF0ZURyb3BT
dGVuY2lsVGV4dHVyZSgpCitnbDo6RXJyb3JPclJlc3VsdDxUZXh0dXJlU3RvcmFnZTExOjpEcm9w
U3RlbmNpbD4gVGV4dHVyZVN0b3JhZ2UxMV9DdWJlOjplbnN1cmVEcm9wU3RlbmNpbFRleHR1cmUo
KQogewogICAgIGlmIChtRHJvcFN0ZW5jaWxUZXh0dXJlKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CisgICAgICAgIHJldHVybiBEcm9wU3RlbmNpbDo6QUxSRUFEWV9FWElT
VFM7CiAgICAgfQogCiAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgZHJvcERlc2MgPSB7fTsKQEAg
LTI0OTQsMTMgKzI1MTAsMTMgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfQ3ViZTo6Y3Jl
YXRlRHJvcFN0ZW5jaWxUZXh0dXJlKCkKICAgICBIUkVTVUxUIGhyID0gZGV2aWNlLT5DcmVhdGVU
ZXh0dXJlMkQoJmRyb3BEZXNjLCBudWxscHRyLCAmbURyb3BTdGVuY2lsVGV4dHVyZSk7CiAgICAg
aWYgKEZBSUxFRChocikpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAiRXJyb3IgY3JlYXRpbmcgZHJvcCBzdGVuY2lsIHRleHR1cmUuIik7Cisg
ICAgICAgIHJldHVybiBnbDo6SW50ZXJuYWxFcnJvcigpIDw8ICJFcnJvciBjcmVhdGluZyBkcm9w
IHN0ZW5jaWwgdGV4dHVyZS4iOwogICAgIH0KICAgICBkM2QxMTo6U2V0RGVidWdOYW1lKG1Ecm9w
U3RlbmNpbFRleHR1cmUsICJUZXhTdG9yYWdlQ3ViZS5Ecm9wU3RlbmNpbCIpOwogCiAgICAgQU5H
TEVfVFJZKGluaXREcm9wU3RlbmNpbFRleHR1cmUoZ2w6OkltYWdlSW5kZXhJdGVyYXRvcjo6TWFr
ZUN1YmUoMCwgbU1pcExldmVscykpKTsKIAotICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworICAg
IHJldHVybiBEcm9wU3RlbmNpbDo6Q1JFQVRFRDsKIH0KIAogVGV4dHVyZVN0b3JhZ2UxMV8zRDo6
VGV4dHVyZVN0b3JhZ2UxMV8zRChSZW5kZXJlcjExICpyZW5kZXJlciwKQEAgLTI2OTIsNyArMjcw
OCw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzNEOjpnZXRSZXNvdXJjZShJRDNEMTFS
ZXNvdXJjZSAqKm91dFJlc291cmNlKQogICAgIH0KIAogICAgICpvdXRSZXNvdXJjZSA9IG1UZXh0
dXJlOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8zRDo6Y3JlYXRlU1JW
KGludCBiYXNlTGV2ZWwsCkBAIC0yNzIxLDcgKzI3MzcsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0
b3JhZ2UxMV8zRDo6Y3JlYXRlU1JWKGludCBiYXNlTGV2ZWwsCiAKICAgICBkM2QxMTo6U2V0RGVi
dWdOYW1lKCpvdXRTUlYsICJUZXhTdG9yYWdlM0QuU1JWIik7CiAKLSAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVy
cm9yIFRleHR1cmVTdG9yYWdlMTFfM0Q6OmdldFJlbmRlclRhcmdldChjb25zdCBnbDo6SW1hZ2VJ
bmRleCAmaW5kZXgsIFJlbmRlclRhcmdldEQzRCAqKm91dFJUKQpAQCAtMjc3OSw2MSArMjc5NSw1
OSBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8zRDo6Z2V0UmVuZGVyVGFyZ2V0KGNvbnN0
IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgUmVuZAogCiAgICAgICAgIEFTU0VSVChvdXRSVCk7CiAg
ICAgICAgICpvdXRSVCA9IG1MZXZlbFJlbmRlclRhcmdldHNbbWlwTGV2ZWxdOwotICAgICAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7CiAgICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGNvbnN0IGludCBsYXllciA9IGlu
ZGV4LmxheWVySW5kZXg7CiAKLSAgICAgICAgTGV2ZWxMYXllcktleSBrZXkobWlwTGV2ZWwsIGxh
eWVyKTsKLSAgICAgICAgaWYgKG1MZXZlbExheWVyUmVuZGVyVGFyZ2V0cy5maW5kKGtleSkgPT0g
bUxldmVsTGF5ZXJSZW5kZXJUYXJnZXRzLmVuZCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBJ
RDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7Ci0gICAgICAgICAg
ICBIUkVTVUxUIHJlc3VsdDsKKyAgICBjb25zdCBpbnQgbGF5ZXIgPSBpbmRleC5sYXllckluZGV4
OwogCi0gICAgICAgICAgICBJRDNEMTFSZXNvdXJjZSAqdGV4dHVyZSA9IG51bGxwdHI7Ci0gICAg
ICAgICAgICBBTkdMRV9UUlkoZ2V0UmVzb3VyY2UoJnRleHR1cmUpKTsKKyAgICBMZXZlbExheWVy
S2V5IGtleShtaXBMZXZlbCwgbGF5ZXIpOworICAgIGlmIChtTGV2ZWxMYXllclJlbmRlclRhcmdl
dHMuZmluZChrZXkpID09IG1MZXZlbExheWVyUmVuZGVyVGFyZ2V0cy5lbmQoKSkKKyAgICB7Cisg
ICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKyAg
ICAgICAgSFJFU1VMVCByZXN1bHQ7CiAKLSAgICAgICAgICAgIC8vIFRPRE8sIHdoYXQga2luZCBv
ZiBTUlYgaXMgZXhwZWN0ZWQgaGVyZT8KLSAgICAgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNl
VmlldyAqc3J2ID0gbnVsbHB0cjsKLSAgICAgICAgICAgIElEM0QxMVNoYWRlclJlc291cmNlVmll
dyAqYmxpdFNSViA9IG51bGxwdHI7CisgICAgICAgIElEM0QxMVJlc291cmNlICp0ZXh0dXJlID0g
bnVsbHB0cjsKKyAgICAgICAgQU5HTEVfVFJZKGdldFJlc291cmNlKCZ0ZXh0dXJlKSk7CiAKLSAg
ICAgICAgICAgIEQzRDExX1JFTkRFUl9UQVJHRVRfVklFV19ERVNDIHJ0dkRlc2M7Ci0gICAgICAg
ICAgICBydHZEZXNjLkZvcm1hdCAgICAgICAgICAgICAgICA9IG1Gb3JtYXRJbmZvLnJ0dkZvcm1h
dDsKLSAgICAgICAgICAgIHJ0dkRlc2MuVmlld0RpbWVuc2lvbiAgICAgICAgID0gRDNEMTFfUlRW
X0RJTUVOU0lPTl9URVhUVVJFM0Q7Ci0gICAgICAgICAgICBydHZEZXNjLlRleHR1cmUzRC5NaXBT
bGljZSAgICA9IG1Ub3BMZXZlbCArIG1pcExldmVsOwotICAgICAgICAgICAgcnR2RGVzYy5UZXh0
dXJlM0QuRmlyc3RXU2xpY2UgPSBsYXllcjsKLSAgICAgICAgICAgIHJ0dkRlc2MuVGV4dHVyZTNE
LldTaXplICAgICAgID0gMTsKKyAgICAgICAgLy8gVE9ETywgd2hhdCBraW5kIG9mIFNSViBpcyBl
eHBlY3RlZCBoZXJlPworICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKnNydiAgICAg
PSBudWxscHRyOworICAgICAgICBJRDNEMTFTaGFkZXJSZXNvdXJjZVZpZXcgKmJsaXRTUlYgPSBu
dWxscHRyOwogCi0gICAgICAgICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpydHY7Ci0gICAg
ICAgICAgICByZXN1bHQgPSBkZXZpY2UtPkNyZWF0ZVJlbmRlclRhcmdldFZpZXcodGV4dHVyZSwg
JnJ0dkRlc2MsICZydHYpOworICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJRVdfREVTQyBy
dHZEZXNjOworICAgICAgICBydHZEZXNjLkZvcm1hdCAgICAgICAgICAgICAgICA9IG1Gb3JtYXRJ
bmZvLnJ0dkZvcm1hdDsKKyAgICAgICAgcnR2RGVzYy5WaWV3RGltZW5zaW9uICAgICAgICAgPSBE
M0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUzRDsKKyAgICAgICAgcnR2RGVzYy5UZXh0dXJlM0Qu
TWlwU2xpY2UgICAgPSBtVG9wTGV2ZWwgKyBtaXBMZXZlbDsKKyAgICAgICAgcnR2RGVzYy5UZXh0
dXJlM0QuRmlyc3RXU2xpY2UgPSBsYXllcjsKKyAgICAgICAgcnR2RGVzYy5UZXh0dXJlM0QuV1Np
emUgICAgICAgPSAxOwogCi0gICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IEVfT1VUT0ZNRU1P
UlkgfHwgU1VDQ0VFREVEKHJlc3VsdCkpOwotICAgICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQp
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFNhZmVSZWxlYXNlKHNydik7Ci0gICAg
ICAgICAgICAgICAgU2FmZVJlbGVhc2UoYmxpdFNSVik7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkZhaWxlZCB0byBjcmVhdGUgaW50ZXJuYWwgcmVuZGVyIHRhcmdldCB2aWV3IGZvciB0
ZXh0dXJlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdG9yYWdlLCByZXN1
bHQ6IDB4JVguIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOworICAg
ICAgICBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICpydHY7CisgICAgICAgIHJlc3VsdCA9IGRldmlj
ZS0+Q3JlYXRlUmVuZGVyVGFyZ2V0Vmlldyh0ZXh0dXJlLCAmcnR2RGVzYywgJnJ0dik7CiAKLSAg
ICAgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUocnR2LCAiVGV4U3RvcmFnZTNELkxheWVyUlRW
Iik7CisgICAgICAgIEFTU0VSVChyZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSB8fCBTVUNDRUVERUQo
cmVzdWx0KSk7CisgICAgICAgIGlmIChGQUlMRUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAg
ICAgICAgU2FmZVJlbGVhc2Uoc3J2KTsKKyAgICAgICAgICAgIFNhZmVSZWxlYXNlKGJsaXRTUlYp
OworICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBpbnRlcm5hbCByZW5kZXIg
dGFyZ2V0IHZpZXcgZm9yIHRleHR1cmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
c3RvcmFnZSwgcmVzdWx0OiAweCVYLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
c3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKIAot
ICAgICAgICAgICAgbUxldmVsTGF5ZXJSZW5kZXJUYXJnZXRzW2tleV0gPSBuZXcgVGV4dHVyZVJl
bmRlclRhcmdldDExKAotICAgICAgICAgICAgICAgIHJ0diwgdGV4dHVyZSwgc3J2LCBibGl0U1JW
LCBtRm9ybWF0SW5mby5pbnRlcm5hbEZvcm1hdCwgZ2V0Rm9ybWF0U2V0KCksCi0gICAgICAgICAg
ICAgICAgZ2V0TGV2ZWxXaWR0aChtaXBMZXZlbCksIGdldExldmVsSGVpZ2h0KG1pcExldmVsKSwg
MSwgMCk7CisgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUocnR2LCAiVGV4U3RvcmFnZTNELkxh
eWVyUlRWIik7CiAKLSAgICAgICAgICAgIC8vIFJlbmRlclRhcmdldCB3aWxsIHRha2Ugb3duZXJz
aGlwIG9mIHRoZXNlIHJlc291cmNlcwotICAgICAgICAgICAgU2FmZVJlbGVhc2UocnR2KTsKLSAg
ICAgICAgfQorICAgICAgICBtTGV2ZWxMYXllclJlbmRlclRhcmdldHNba2V5XSA9IG5ldyBUZXh0
dXJlUmVuZGVyVGFyZ2V0MTEoCisgICAgICAgICAgICBydHYsIHRleHR1cmUsIHNydiwgYmxpdFNS
ViwgbUZvcm1hdEluZm8uaW50ZXJuYWxGb3JtYXQsIGdldEZvcm1hdFNldCgpLAorICAgICAgICAg
ICAgZ2V0TGV2ZWxXaWR0aChtaXBMZXZlbCksIGdldExldmVsSGVpZ2h0KG1pcExldmVsKSwgMSwg
MCk7CiAKLSAgICAgICAgQVNTRVJUKG91dFJUKTsKLSAgICAgICAgKm91dFJUID0gbUxldmVsTGF5
ZXJSZW5kZXJUYXJnZXRzW2tleV07Ci0gICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworICAg
ICAgICAvLyBSZW5kZXJUYXJnZXQgd2lsbCB0YWtlIG93bmVyc2hpcCBvZiB0aGVzZSByZXNvdXJj
ZXMKKyAgICAgICAgU2FmZVJlbGVhc2UocnR2KTsKICAgICB9CisKKyAgICBBU1NFUlQob3V0UlQp
OworICAgICpvdXRSVCA9IG1MZXZlbExheWVyUmVuZGVyVGFyZ2V0c1trZXldOworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8zRDo6Z2V0
U3dpenpsZVRleHR1cmUoSUQzRDExUmVzb3VyY2UgKipvdXRUZXh0dXJlKQpAQCAtMjg0OSw3ICsy
ODYzLDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfM0Q6OmdldFN3aXp6bGVUZXh0dXJl
KElEM0QxMVJlc291cmNlICoqb3V0VGV4dHVyZSkKICAgICAgICAgZGVzYy5IZWlnaHQgICAgICAg
ICA9IG1UZXh0dXJlSGVpZ2h0OwogICAgICAgICBkZXNjLkRlcHRoICAgICAgICAgID0gbVRleHR1
cmVEZXB0aDsKICAgICAgICAgZGVzYy5NaXBMZXZlbHMgICAgICA9IG1NaXBMZXZlbHM7Ci0gICAg
ICAgIGRlc2MuRm9ybWF0ICAgICAgICAgPSBtRm9ybWF0SW5mby5zd2l6emxlLnRleEZvcm1hdDsK
KyAgICAgICAgZGVzYy5Gb3JtYXQgPSBtRm9ybWF0SW5mby5nZXRTd2l6emxlRm9ybWF0KG1SZW5k
ZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKSkudGV4Rm9ybWF0OwogICAgICAgICBkZXNj
LlVzYWdlICAgICAgICAgID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKICAgICAgICAgZGVzYy5CaW5k
RmxhZ3MgICAgICA9IEQzRDExX0JJTkRfU0hBREVSX1JFU09VUkNFIHwgRDNEMTFfQklORF9SRU5E
RVJfVEFSR0VUOwogICAgICAgICBkZXNjLkNQVUFjY2Vzc0ZsYWdzID0gMDsKQEAgLTI4NjgsNyAr
Mjg4Miw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzNEOjpnZXRTd2l6emxlVGV4dHVy
ZShJRDNEMTFSZXNvdXJjZSAqKm91dFRleHR1cmUpCiAgICAgfQogCiAgICAgKm91dFRleHR1cmUg
PSBtU3dpenpsZVRleHR1cmU7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cisg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTEx
XzNEOjpnZXRTd2l6emxlUmVuZGVyVGFyZ2V0KGludCBtaXBMZXZlbCwgSUQzRDExUmVuZGVyVGFy
Z2V0VmlldyAqKm91dFJUVikKQEAgLTI4ODQsNyArMjg5OCw4IEBAIGdsOjpFcnJvciBUZXh0dXJl
U3RvcmFnZTExXzNEOjpnZXRTd2l6emxlUmVuZGVyVGFyZ2V0KGludCBtaXBMZXZlbCwgSUQzRDEx
UmVuZGVyCiAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZp
Y2UoKTsKIAogICAgICAgICBEM0QxMV9SRU5ERVJfVEFSR0VUX1ZJRVdfREVTQyBydHZEZXNjOwot
ICAgICAgICBydHZEZXNjLkZvcm1hdCAgICAgICAgICAgICAgICA9IG1Gb3JtYXRJbmZvLnN3aXp6
bGUucnR2Rm9ybWF0OworICAgICAgICBydHZEZXNjLkZvcm1hdCA9CisgICAgICAgICAgICBtRm9y
bWF0SW5mby5nZXRTd2l6emxlRm9ybWF0KG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNh
cHMoKSkucnR2Rm9ybWF0OwogICAgICAgICBydHZEZXNjLlZpZXdEaW1lbnNpb24gICAgICAgICA9
IEQzRDExX1JUVl9ESU1FTlNJT05fVEVYVFVSRTNEOwogICAgICAgICBydHZEZXNjLlRleHR1cmUz
RC5NaXBTbGljZSAgICA9IG1Ub3BMZXZlbCArIG1pcExldmVsOwogICAgICAgICBydHZEZXNjLlRl
eHR1cmUzRC5GaXJzdFdTbGljZSA9IDA7CkBAIC0yOTA1LDcgKzI5MjAsNyBAQCBnbDo6RXJyb3Ig
VGV4dHVyZVN0b3JhZ2UxMV8zRDo6Z2V0U3dpenpsZVJlbmRlclRhcmdldChpbnQgbWlwTGV2ZWws
IElEM0QxMVJlbmRlcgogICAgIH0KIAogICAgICpvdXRSVFYgPSBtU3dpenpsZVJlbmRlclRhcmdl
dHNbbWlwTGV2ZWxdOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk6OlRleHR1
cmVTdG9yYWdlMTFfMkRBcnJheShSZW5kZXJlcjExICpyZW5kZXJlciwKQEAgLTMwOTgsNyArMzEx
Myw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk6OmdldFJlc291cmNlKElE
M0QxMVJlc291cmNlICoqb3V0UmVzb3VyY2UpCiAgICAgfQogCiAgICAgKm91dFJlc291cmNlID0g
bVRleHR1cmU7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk6
OmNyZWF0ZVNSVihpbnQgYmFzZUxldmVsLApAQCAtMzEyNyw3ICszMTQyLDcgQEAgZ2w6OkVycm9y
IFRleHR1cmVTdG9yYWdlMTFfMkRBcnJheTo6Y3JlYXRlU1JWKGludCBiYXNlTGV2ZWwsCiAKICAg
ICBkM2QxMTo6U2V0RGVidWdOYW1lKCpvdXRTUlYsICJUZXhTdG9yYWdlMkRBcnJheS5TUlYiKTsK
IAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5OjpjcmVhdGVS
ZW5kZXJUYXJnZXRTUlYoSUQzRDExUmVzb3VyY2UgKnRleHR1cmUsCkBAIC0zMTU1LDcgKzMxNzAs
NyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5OjpjcmVhdGVSZW5kZXJUYXJn
ZXRTUlYoSUQzRDExUmVzb3VyY2UgKnRleHR1cgogICAgICAgICAgICAgcmVzdWx0KTsKICAgICB9
CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlMTFfMkRBcnJheTo6Z2V0UmVu
ZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKQEAgLTMyODQsNyArMzI5OSw3
IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk6OmdldFN3aXp6bGVUZXh0dXJl
KElEM0QxMVJlc291cmNlICoqb3V0VGV4dHVyCiAgICAgICAgIGRlc2MuSGVpZ2h0ICAgICAgICAg
ICAgID0gbVRleHR1cmVIZWlnaHQ7CiAgICAgICAgIGRlc2MuTWlwTGV2ZWxzICAgICAgICAgID0g
bU1pcExldmVsczsKICAgICAgICAgZGVzYy5BcnJheVNpemUgICAgICAgICAgPSBtVGV4dHVyZURl
cHRoOwotICAgICAgICBkZXNjLkZvcm1hdCAgICAgICAgICAgICA9IG1Gb3JtYXRJbmZvLnN3aXp6
bGUudGV4Rm9ybWF0OworICAgICAgICBkZXNjLkZvcm1hdCA9IG1Gb3JtYXRJbmZvLmdldFN3aXp6
bGVGb3JtYXQobVJlbmRlcmVyLT5nZXRSZW5kZXJlcjExRGV2aWNlQ2FwcygpKS50ZXhGb3JtYXQ7
CiAgICAgICAgIGRlc2MuU2FtcGxlRGVzYy5Db3VudCAgID0gMTsKICAgICAgICAgZGVzYy5TYW1w
bGVEZXNjLlF1YWxpdHkgPSAwOwogICAgICAgICBkZXNjLlVzYWdlICAgICAgICAgICAgICA9IEQz
RDExX1VTQUdFX0RFRkFVTFQ7CkBAIC0zMzA1LDcgKzMzMjAsNyBAQCBnbDo6RXJyb3IgVGV4dHVy
ZVN0b3JhZ2UxMV8yREFycmF5OjpnZXRTd2l6emxlVGV4dHVyZShJRDNEMTFSZXNvdXJjZSAqKm91
dFRleHR1cgogICAgIH0KIAogICAgICpvdXRUZXh0dXJlID0gbVN3aXp6bGVUZXh0dXJlOwotICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5OjpnZXRTd2l6emxlUmVu
ZGVyVGFyZ2V0KGludCBtaXBMZXZlbCwKQEAgLTMzMjIsNyArMzMzNyw4IEBAIGdsOjpFcnJvciBU
ZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk6OmdldFN3aXp6bGVSZW5kZXJUYXJnZXQoaW50IG1pcExl
dmVsLAogICAgICAgICBJRDNEMTFEZXZpY2UgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNl
KCk7CiAKICAgICAgICAgRDNEMTFfUkVOREVSX1RBUkdFVF9WSUVXX0RFU0MgcnR2RGVzYzsKLSAg
ICAgICAgcnR2RGVzYy5Gb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICAgPSBtRm9ybWF0SW5m
by5zd2l6emxlLnJ0dkZvcm1hdDsKKyAgICAgICAgcnR2RGVzYy5Gb3JtYXQgPQorICAgICAgICAg
ICAgbUZvcm1hdEluZm8uZ2V0U3dpenpsZUZvcm1hdChtUmVuZGVyZXItPmdldFJlbmRlcmVyMTFE
ZXZpY2VDYXBzKCkpLnJ0dkZvcm1hdDsKICAgICAgICAgcnR2RGVzYy5WaWV3RGltZW5zaW9uICAg
ICAgICAgICAgICAgICAgPSBEM0QxMV9SVFZfRElNRU5TSU9OX1RFWFRVUkUyREFSUkFZOwogICAg
ICAgICBydHZEZXNjLlRleHR1cmUyREFycmF5Lk1pcFNsaWNlICAgICAgICA9IG1Ub3BMZXZlbCAr
IG1pcExldmVsOwogICAgICAgICBydHZEZXNjLlRleHR1cmUyREFycmF5LkZpcnN0QXJyYXlTbGlj
ZSA9IDA7CkBAIC0zMzQ0LDExICszMzYwLDEyIEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTEx
XzJEQXJyYXk6OmdldFN3aXp6bGVSZW5kZXJUYXJnZXQoaW50IG1pcExldmVsLAogICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2UxMV8yREFycmF5
OjpjcmVhdGVEcm9wU3RlbmNpbFRleHR1cmUoKQorZ2w6OkVycm9yT3JSZXN1bHQ8VGV4dHVyZVN0
b3JhZ2UxMTo6RHJvcFN0ZW5jaWw+CitUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXk6OmVuc3VyZURy
b3BTdGVuY2lsVGV4dHVyZSgpCiB7CiAgICAgaWYgKG1Ecm9wU3RlbmNpbFRleHR1cmUpCiAgICAg
ewotICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIERyb3BTdGVu
Y2lsOjpBTFJFQURZX0VYSVNUUzsKICAgICB9CiAKICAgICBEM0QxMV9URVhUVVJFMkRfREVTQyBk
cm9wRGVzYyA9IHt9OwpAQCAtMzM2OSw3ICszMzg2LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9y
YWdlMTFfMkRBcnJheTo6Y3JlYXRlRHJvcFN0ZW5jaWxUZXh0dXJlKCkKICAgICBIUkVTVUxUIGhy
ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRyb3BEZXNjLCBudWxscHRyLCAmbURyb3BTdGVu
Y2lsVGV4dHVyZSk7CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgewotICAgICAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXJyb3IgY3JlYXRpbmcgZHJvcCBzdGVu
Y2lsIHRleHR1cmUuIik7CisgICAgICAgIHJldHVybiBnbDo6SW50ZXJuYWxFcnJvcigpIDw8ICJF
cnJvciBjcmVhdGluZyBkcm9wIHN0ZW5jaWwgdGV4dHVyZS4iOwogICAgIH0KICAgICBkM2QxMTo6
U2V0RGVidWdOYW1lKG1Ecm9wU3RlbmNpbFRleHR1cmUsICJUZXhTdG9yYWdlMkRBcnJheS5Ecm9w
U3RlbmNpbCIpOwogCkBAIC0zMzc4LDcgKzMzOTUsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3Jh
Z2UxMV8yREFycmF5OjpjcmVhdGVEcm9wU3RlbmNpbFRleHR1cmUoKQogICAgIEFOR0xFX1RSWShp
bml0RHJvcFN0ZW5jaWxUZXh0dXJlKAogICAgICAgICBnbDo6SW1hZ2VJbmRleEl0ZXJhdG9yOjpN
YWtlMkRBcnJheSgwLCBtTWlwTGV2ZWxzLCBsYXllckNvdW50cy5kYXRhKCkpKSk7CiAKLSAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICByZXR1cm4gRHJvcFN0ZW5jaWw6OkNSRUFURUQ7CiB9
CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UZXh0dXJlU3RvcmFnZTExLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1Rl
eHR1cmVTdG9yYWdlMTEuaAppbmRleCA0NmViODQ1OGJlZi4uNDI1ZTBiNzcyZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvVGV4dHVyZVN0b3JhZ2UxMS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVGV4dHVyZVN0b3JhZ2UxMS5oCkBAIC05NSw3ICs5
NSwxMiBAQCBjbGFzcyBUZXh0dXJlU3RvcmFnZTExIDogcHVibGljIFRleHR1cmVTdG9yYWdlCiAg
ICAgZ2w6OkVycm9yIGdldFNSVkxldmVsKGludCBtaXBMZXZlbCwgYm9vbCBibGl0U1JWLCBJRDNE
MTFTaGFkZXJSZXNvdXJjZVZpZXcgKipvdXRTUlYpOwogCiAgICAgLy8gR2V0IGEgdmVyc2lvbiBv
ZiBhIGRlcHRoIHRleHR1cmUgd2l0aCBvbmx5IGRlcHRoIGluZm9ybWF0aW9uLCBub3Qgc3RlbmNp
bC4KLSAgICB2aXJ0dWFsIGdsOjpFcnJvciBjcmVhdGVEcm9wU3RlbmNpbFRleHR1cmUoKTsKKyAg
ICBlbnVtIERyb3BTdGVuY2lsCisgICAgeworICAgICAgICBDUkVBVEVELAorICAgICAgICBBTFJF
QURZX0VYSVNUUworICAgIH07CisgICAgdmlydHVhbCBnbDo6RXJyb3JPclJlc3VsdDxEcm9wU3Rl
bmNpbD4gZW5zdXJlRHJvcFN0ZW5jaWxUZXh0dXJlKCk7CiAgICAgZ2w6OkVycm9yIGluaXREcm9w
U3RlbmNpbFRleHR1cmUoY29uc3QgZ2w6OkltYWdlSW5kZXhJdGVyYXRvciAmaXQpOwogCiAgICAg
Ly8gVGhlIGJhc2VMZXZlbCBwYXJhbWV0ZXIgc2hvdWxkICpub3QqIGhhdmUgbVRvcExldmVsIGFw
cGxpZWQuCkBAIC0xNjcsNyArMTcyLDcgQEAgY2xhc3MgVGV4dHVyZVN0b3JhZ2UxMV8yRCA6IHB1
YmxpYyBUZXh0dXJlU3RvcmFnZTExCiAgICAgZ2w6OkVycm9yIGdldFN3aXp6bGVUZXh0dXJlKElE
M0QxMVJlc291cmNlICoqb3V0VGV4dHVyZSkgb3ZlcnJpZGU7CiAgICAgZ2w6OkVycm9yIGdldFN3
aXp6bGVSZW5kZXJUYXJnZXQoaW50IG1pcExldmVsLCBJRDNEMTFSZW5kZXJUYXJnZXRWaWV3ICoq
b3V0UlRWKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciBjcmVhdGVEcm9wU3RlbmNpbFRleHR1
cmUoKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3JPclJlc3VsdDxEcm9wU3RlbmNpbD4gZW5zdXJl
RHJvcFN0ZW5jaWxUZXh0dXJlKCkgb3ZlcnJpZGU7CiAKICAgICBnbDo6RXJyb3IgZW5zdXJlVGV4
dHVyZUV4aXN0cyhpbnQgbWlwTGV2ZWxzKTsKIApAQCAtMzEyLDcgKzMxNyw3IEBAIGNsYXNzIFRl
eHR1cmVTdG9yYWdlMTFfQ3ViZSA6IHB1YmxpYyBUZXh0dXJlU3RvcmFnZTExCiAgICAgdmlydHVh
bCBnbDo6RXJyb3IgZ2V0U3dpenpsZVRleHR1cmUoSUQzRDExUmVzb3VyY2UgKipvdXRUZXh0dXJl
KTsKICAgICB2aXJ0dWFsIGdsOjpFcnJvciBnZXRTd2l6emxlUmVuZGVyVGFyZ2V0KGludCBtaXBM
ZXZlbCwgSUQzRDExUmVuZGVyVGFyZ2V0VmlldyAqKm91dFJUVik7CiAKLSAgICBnbDo6RXJyb3Ig
Y3JlYXRlRHJvcFN0ZW5jaWxUZXh0dXJlKCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yT3JSZXN1
bHQ8RHJvcFN0ZW5jaWw+IGVuc3VyZURyb3BTdGVuY2lsVGV4dHVyZSgpIG92ZXJyaWRlOwogCiAg
ICAgZ2w6OkVycm9yIGVuc3VyZVRleHR1cmVFeGlzdHMoaW50IG1pcExldmVscyk7CiAKQEAgLTM5
Nyw3ICs0MDIsNyBAQCBjbGFzcyBUZXh0dXJlU3RvcmFnZTExXzJEQXJyYXkgOiBwdWJsaWMgVGV4
dHVyZVN0b3JhZ2UxMQogICAgIHZpcnR1YWwgZ2w6OkVycm9yIGdldFN3aXp6bGVUZXh0dXJlKElE
M0QxMVJlc291cmNlICoqb3V0VGV4dHVyZSk7CiAgICAgdmlydHVhbCBnbDo6RXJyb3IgZ2V0U3dp
enpsZVJlbmRlclRhcmdldChpbnQgbWlwTGV2ZWwsIElEM0QxMVJlbmRlclRhcmdldFZpZXcgKipv
dXRSVFYpOwogCi0gICAgZ2w6OkVycm9yIGNyZWF0ZURyb3BTdGVuY2lsVGV4dHVyZSgpIG92ZXJy
aWRlOworICAgIGdsOjpFcnJvck9yUmVzdWx0PERyb3BTdGVuY2lsPiBlbnN1cmVEcm9wU3RlbmNp
bFRleHR1cmUoKSBvdmVycmlkZTsKIAogICBwcml2YXRlOgogICAgIHZpcnR1YWwgZ2w6OkVycm9y
IGNyZWF0ZVNSVihpbnQgYmFzZUxldmVsLCBpbnQgbWlwTGV2ZWxzLCBEWEdJX0ZPUk1BVCBmb3Jt
YXQsIElEM0QxMVJlc291cmNlICp0ZXh0dXJlLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UcmltMTEuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJpbTEx
LmgKaW5kZXggNDc0MWU4MTYwMTkuLjY5ZmEwNWE1N2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RyaW0xMS5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvVHJpbTExLmgKQEAgLTEzLDkgKzEzLDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9hbmdsZXR5
cGVzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvRXJyb3IuaCIKIAotI2lmICFkZWZpbmVkKEFOR0xF
X0VOQUJMRV9XSU5ET1dTX1NUT1JFKQotdHlwZWRlZiB2b2lkKiBFdmVudFJlZ2lzdHJhdGlvblRv
a2VuOwotI2Vsc2UKKyNpZiBkZWZpbmVkKEFOR0xFX0VOQUJMRV9XSU5ET1dTX1NUT1JFKQogI2lu
Y2x1ZGUgPEV2ZW50VG9rZW4uaD4KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEFycmF5MTEu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9WZXJ0ZXhBcnJheTExLmNwcAppbmRleCBlMDZhNmIyMmI5My4uN2E3ZjJhMGNmMTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvVmVydGV4QXJyYXkxMS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTExLmNwcApAQCAtOSw3
ICs5LDcgQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhB
cnJheTExLmgiCiAKLSNpbmNsdWRlICJjb21tb24vQml0U2V0SXRlcmF0b3IuaCIKKyNpbmNsdWRl
ICJjb21tb24vYml0c2V0X3V0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL0J1ZmZlcjExLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKQEAgLTE3LDcwICsx
Nyw2OSBAQCB1c2luZyBuYW1lc3BhY2UgYW5nbGU7CiBuYW1lc3BhY2UgcngKIHsKIAotbmFtZXNw
YWNlCi17Ci1zaXplX3QgR2V0QXR0cmliSW5kZXgodW5zaWduZWQgbG9uZyBkaXJ0eUJpdCkKLXsK
LSAgICBpZiAoZGlydHlCaXQgPj0gZ2w6OlZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRUUklCXzBf
RU5BQkxFRCAmJgotICAgICAgICBkaXJ0eUJpdCA8IGdsOjpWZXJ0ZXhBcnJheTo6RElSVFlfQklU
X0FUVFJJQl9NQVhfRU5BQkxFRCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBkaXJ0eUJpdCAtIGds
OjpWZXJ0ZXhBcnJheTo6RElSVFlfQklUX0FUVFJJQl8wX0VOQUJMRUQ7Ci0gICAgfQotCi0gICAg
aWYgKGRpcnR5Qml0ID49IGdsOjpWZXJ0ZXhBcnJheTo6RElSVFlfQklUX0FUVFJJQl8wX1BPSU5U
RVIgJiYKLSAgICAgICAgZGlydHlCaXQgPCBnbDo6VmVydGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRS
SUJfTUFYX1BPSU5URVIpCi0gICAgewotICAgICAgICByZXR1cm4gZGlydHlCaXQgLSBnbDo6VmVy
dGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJfMF9QT0lOVEVSOwotICAgIH0KLQotICAgIEFTU0VS
VChkaXJ0eUJpdCA+PSBnbDo6VmVydGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJfMF9ESVZJU09S
ICYmCi0gICAgICAgICAgIGRpcnR5Qml0IDwgZ2w6OlZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRU
UklCX01BWF9ESVZJU09SKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihkaXJ0eUJp
dCkgLSBnbDo6VmVydGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJfMF9ESVZJU09SOwotfQotfSAg
Ly8gYW5vbnltb3VzIG5hbWVzcGFjZQotCiBWZXJ0ZXhBcnJheTExOjpWZXJ0ZXhBcnJheTExKGNv
bnN0IGdsOjpWZXJ0ZXhBcnJheVN0YXRlICZkYXRhKQogICAgIDogVmVydGV4QXJyYXlJbXBsKGRh
dGEpLAotICAgICAgbUF0dHJpYnV0ZVN0b3JhZ2VUeXBlcyhkYXRhLmdldFZlcnRleEF0dHJpYnV0
ZXMoKS5zaXplKCksIFZlcnRleFN0b3JhZ2VUeXBlOjpDVVJSRU5UX1ZBTFVFKSwKLSAgICAgIG1U
cmFuc2xhdGVkQXR0cmlicyhkYXRhLmdldFZlcnRleEF0dHJpYnV0ZXMoKS5zaXplKCkpLAotICAg
ICAgbUN1cnJlbnRCdWZmZXJzKGRhdGEuZ2V0VmVydGV4QXR0cmlidXRlcygpLnNpemUoKSkKKyAg
ICAgIG1BdHRyaWJ1dGVTdG9yYWdlVHlwZXMoZGF0YS5nZXRNYXhBdHRyaWJzKCksIFZlcnRleFN0
b3JhZ2VUeXBlOjpDVVJSRU5UX1ZBTFVFKSwKKyAgICAgIG1UcmFuc2xhdGVkQXR0cmlicyhkYXRh
LmdldE1heEF0dHJpYnMoKSksCisgICAgICBtQ3VycmVudEJ1ZmZlcnMoZGF0YS5nZXRNYXhBdHRy
aWJzKCkpCiB7CiAgICAgZm9yIChzaXplX3QgYXR0cmliSW5kZXggPSAwOyBhdHRyaWJJbmRleCA8
IG1DdXJyZW50QnVmZmVycy5zaXplKCk7ICsrYXR0cmliSW5kZXgpCiAgICAgewotICAgICAgICBt
T25CdWZmZXJEYXRhRGlydHkucHVzaF9iYWNrKENoYW5uZWxCaW5kaW5nKHRoaXMsIHN0YXRpY19j
YXN0PFNpZ25hbFRva2VuPihhdHRyaWJJbmRleCkpKTsKKyAgICAgICAgbU9uQnVmZmVyRGF0YURp
cnR5LmVtcGxhY2VfYmFjayh0aGlzLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXR0cmliSW5kZXgp
KTsKICAgICB9CiB9CiAKIFZlcnRleEFycmF5MTE6On5WZXJ0ZXhBcnJheTExKCkKIHsKLSAgICBm
b3IgKHNpemVfdCBhdHRyaWJJbmRleCA9IDA7IGF0dHJpYkluZGV4IDwgbUN1cnJlbnRCdWZmZXJz
LnNpemUoKTsgKythdHRyaWJJbmRleCkKKyAgICBmb3IgKGF1dG8gJmJ1ZmZlciA6IG1DdXJyZW50
QnVmZmVycykKICAgICB7Ci0gICAgICAgIGlmIChtQ3VycmVudEJ1ZmZlcnNbYXR0cmliSW5kZXhd
LmdldCgpKQorICAgICAgICBpZiAoYnVmZmVyLmdldCgpKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBtQ3VycmVudEJ1ZmZlcnNbYXR0cmliSW5kZXhdLnNldChudWxscHRyKTsKKyAgICAgICAgICAg
IGJ1ZmZlci5zZXQobnVsbHB0cik7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgVmVydGV4
QXJyYXkxMTo6c3luY1N0YXRlKGNvbnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGlydHlCaXRzICZkaXJ0
eUJpdHMpCit2b2lkIFZlcnRleEFycmF5MTE6OnN5bmNTdGF0ZShDb250ZXh0SW1wbCAqY29udGV4
dEltcGwsIGNvbnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpCiB7CiAg
ICAgZm9yIChhdXRvIGRpcnR5Qml0IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQoZGlydHlCaXRzKSkK
ICAgICB7CiAgICAgICAgIGlmIChkaXJ0eUJpdCA9PSBnbDo6VmVydGV4QXJyYXk6OkRJUlRZX0JJ
VF9FTEVNRU5UX0FSUkFZX0JVRkZFUikKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
IHNpemVfdCBhdHRyaWJJbmRleCA9IEdldEF0dHJpYkluZGV4KGRpcnR5Qml0KTsKLSAgICAgICAg
bUF0dHJpYnNUb1VwZGF0ZS5zZXQoYXR0cmliSW5kZXgpOworICAgICAgICBzaXplX3QgaW5kZXgg
PSBnbDo6VmVydGV4QXJyYXk6OkdldEF0dHJpYkluZGV4KGRpcnR5Qml0KTsKKyAgICAgICAgLy8g
VE9ETyhqaWF3ZWkuc2hhb0BpbnRlbC5jb20pOiBWZXJ0ZXggQXR0cmliIEJpbmRpbmdzCisgICAg
ICAgIEFTU0VSVChpbmRleCA9PSBtRGF0YS5nZXRCaW5kaW5nSW5kZXhGcm9tQXR0cmliSW5kZXgo
aW5kZXgpKTsKKyAgICAgICAgbUF0dHJpYnNUb1VwZGF0ZS5zZXQoaW5kZXgpOworICAgIH0KK30K
Kwordm9pZCBWZXJ0ZXhBcnJheTExOjpmbHVzaEF0dHJpYlVwZGF0ZXMoY29uc3QgZ2w6OlN0YXRl
ICZzdGF0ZSkKK3sKKyAgICBjb25zdCBnbDo6UHJvZ3JhbSAqcHJvZ3JhbSAgPSBzdGF0ZS5nZXRQ
cm9ncmFtKCk7CisgICAgY29uc3QgYXV0byAmYWN0aXZlTG9jYXRpb25zID0gcHJvZ3JhbS0+Z2V0
QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzaygpOworCisgICAgaWYgKG1BdHRyaWJzVG9VcGRhdGUu
YW55KCkpCisgICAgeworICAgICAgICAvLyBTa2lwIGF0dHJpYiBsb2NhdGlvbnMgdGhlIHByb2dy
YW0gZG9lc24ndCB1c2UuCisgICAgICAgIGNvbnN0IGF1dG8gJmFjdGl2ZVRvVXBkYXRlID0gKG1B
dHRyaWJzVG9VcGRhdGUgJiBhY3RpdmVMb2NhdGlvbnMpOworCisgICAgICAgIGZvciAoYXV0byB0
b1VwZGF0ZUluZGV4IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQoYWN0aXZlVG9VcGRhdGUpKQorICAg
ICAgICB7CisgICAgICAgICAgICBtQXR0cmlic1RvVXBkYXRlLnJlc2V0KHRvVXBkYXRlSW5kZXgp
OworICAgICAgICAgICAgdXBkYXRlVmVydGV4QXR0cmliU3RvcmFnZSh0b1VwZGF0ZUluZGV4KTsK
KyAgICAgICAgfQogICAgIH0KIH0KIAogdm9pZCBWZXJ0ZXhBcnJheTExOjp1cGRhdGVWZXJ0ZXhB
dHRyaWJTdG9yYWdlKHNpemVfdCBhdHRyaWJJbmRleCkKIHsKICAgICBjb25zdCBhdXRvICZhdHRy
aWIgPSBtRGF0YS5nZXRWZXJ0ZXhBdHRyaWJ1dGUoYXR0cmliSW5kZXgpOworICAgIGNvbnN0IGF1
dG8gJmJpbmRpbmcgPSBtRGF0YS5nZXRCaW5kaW5nRnJvbUF0dHJpYkluZGV4KGF0dHJpYkluZGV4
KTsKIAogICAgIC8vIE5vdGU6IGhhdmluZyBhbiB1bmNoYW5nZWQgc3RvcmFnZSB0eXBlIGRvZXNu
J3QgbWVhbiB0aGUgYXR0cmlidXRlIGlzIGNsZWFuLgogICAgIGF1dG8gb2xkU3RvcmFnZVR5cGUg
PSBtQXR0cmlidXRlU3RvcmFnZVR5cGVzW2F0dHJpYkluZGV4XTsKLSAgICBhdXRvIG5ld1N0b3Jh
Z2VUeXBlID0gQ2xhc3NpZnlBdHRyaWJ1dGVTdG9yYWdlKGF0dHJpYik7CisgICAgYXV0byBuZXdT
dG9yYWdlVHlwZSA9IENsYXNzaWZ5QXR0cmlidXRlU3RvcmFnZShhdHRyaWIsIGJpbmRpbmcpOwog
CiAgICAgbUF0dHJpYnV0ZVN0b3JhZ2VUeXBlc1thdHRyaWJJbmRleF0gPSBuZXdTdG9yYWdlVHlw
ZTsKIApAQCAtMTA1LDcgKzEwNCw3IEBAIHZvaWQgVmVydGV4QXJyYXkxMTo6dXBkYXRlVmVydGV4
QXR0cmliU3RvcmFnZShzaXplX3QgYXR0cmliSW5kZXgpCiAgICAgfQogCiAgICAgZ2w6OkJ1ZmZl
ciAqb2xkQnVmZmVyR0wgPSBtQ3VycmVudEJ1ZmZlcnNbYXR0cmliSW5kZXhdLmdldCgpOwotICAg
IGdsOjpCdWZmZXIgKm5ld0J1ZmZlckdMID0gYXR0cmliLmJ1ZmZlci5nZXQoKTsKKyAgICBnbDo6
QnVmZmVyICpuZXdCdWZmZXJHTCA9IGJpbmRpbmcuYnVmZmVyLmdldCgpOwogICAgIEJ1ZmZlcjEx
ICpvbGRCdWZmZXIxMSAgID0gb2xkQnVmZmVyR0wgPyBHZXRJbXBsQXM8QnVmZmVyMTE+KG9sZEJ1
ZmZlckdMKSA6IG51bGxwdHI7CiAgICAgQnVmZmVyMTEgKm5ld0J1ZmZlcjExICAgPSBuZXdCdWZm
ZXJHTCA/IEdldEltcGxBczxCdWZmZXIxMT4obmV3QnVmZmVyR0wpIDogbnVsbHB0cjsKIApAQCAt
MTEzLDcgKzExMiw3IEBAIHZvaWQgVmVydGV4QXJyYXkxMTo6dXBkYXRlVmVydGV4QXR0cmliU3Rv
cmFnZShzaXplX3QgYXR0cmliSW5kZXgpCiAgICAgewogICAgICAgICAvLyBOb3RlIHRoYXQgZm9y
IHN0YXRpYyBjYWxsYmFja3MsIHByb21vdGlvbiB0byBhIHN0YXRpYyBidWZmZXIgZnJvbSBhIGR5
bmFtaWMgYnVmZmVyIG1lYW5zCiAgICAgICAgIC8vIHdlIG5lZWQgdG8gdGFnIGR5bmFtaWMgYnVm
ZmVycyB3aXRoIHN0YXRpYyBjYWxsYmFja3MuCi0gICAgICAgIEJyb2FkY2FzdENoYW5uZWwgKm5l
d0NoYW5uZWwgPSBudWxscHRyOworICAgICAgICBCcm9hZGNhc3RDaGFubmVsPD4gKm5ld0NoYW5u
ZWwgPSBudWxscHRyOwogICAgICAgICBpZiAobmV3QnVmZmVyMTEgIT0gbnVsbHB0cikKICAgICAg
ICAgewogICAgICAgICAgICAgc3dpdGNoIChuZXdTdG9yYWdlVHlwZSkKQEAgLTEzMCwzMiArMTI5
LDI4IEBAIHZvaWQgVmVydGV4QXJyYXkxMTo6dXBkYXRlVmVydGV4QXR0cmliU3RvcmFnZShzaXpl
X3QgYXR0cmliSW5kZXgpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgbU9uQnVm
ZmVyRGF0YURpcnR5W2F0dHJpYkluZGV4XS5iaW5kKG5ld0NoYW5uZWwpOwotICAgICAgICBtQ3Vy
cmVudEJ1ZmZlcnNbYXR0cmliSW5kZXhdID0gYXR0cmliLmJ1ZmZlcjsKKyAgICAgICAgbUN1cnJl
bnRCdWZmZXJzW2F0dHJpYkluZGV4XSA9IGJpbmRpbmcuYnVmZmVyOwogICAgIH0KIH0KIAorYm9v
bCBWZXJ0ZXhBcnJheTExOjpoYXNEeW5hbWljQXR0cmliKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUp
Cit7CisgICAgZmx1c2hBdHRyaWJVcGRhdGVzKHN0YXRlKTsKKyAgICByZXR1cm4gbUR5bmFtaWNB
dHRyaWJzTWFzay5hbnkoKTsKK30KKwogZ2w6OkVycm9yIFZlcnRleEFycmF5MTE6OnVwZGF0ZURp
cnR5QW5kRHluYW1pY0F0dHJpYnMoVmVydGV4RGF0YU1hbmFnZXIgKnZlcnRleERhdGFNYW5hZ2Vy
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW5z
dGFuY2VzKQogeworICAgIGZsdXNoQXR0cmliVXBkYXRlcyhzdGF0ZSk7CisKICAgICBjb25zdCBn
bDo6UHJvZ3JhbSAqcHJvZ3JhbSAgPSBzdGF0ZS5nZXRQcm9ncmFtKCk7CiAgICAgY29uc3QgYXV0
byAmYWN0aXZlTG9jYXRpb25zID0gcHJvZ3JhbS0+Z2V0QWN0aXZlQXR0cmliTG9jYXRpb25zTWFz
aygpOwotCi0gICAgaWYgKG1BdHRyaWJzVG9VcGRhdGUuYW55KCkpCi0gICAgewotICAgICAgICAv
LyBTa2lwIGF0dHJpYiBsb2NhdGlvbnMgdGhlIHByb2dyYW0gZG9lc24ndCB1c2UuCi0gICAgICAg
IGNvbnN0IGF1dG8gJmFjdGl2ZVRvVXBkYXRlID0gKG1BdHRyaWJzVG9VcGRhdGUgJiBhY3RpdmVM
b2NhdGlvbnMpOwotCi0gICAgICAgIGZvciAoYXV0byB0b1VwZGF0ZUluZGV4IDogYW5nbGU6Okl0
ZXJhdGVCaXRTZXQoYWN0aXZlVG9VcGRhdGUpKQotICAgICAgICB7Ci0gICAgICAgICAgICBtQXR0
cmlic1RvVXBkYXRlLnJlc2V0KHRvVXBkYXRlSW5kZXgpOwotICAgICAgICAgICAgdXBkYXRlVmVy
dGV4QXR0cmliU3RvcmFnZSh0b1VwZGF0ZUluZGV4KTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IGNvbnN0IGF1dG8gJmF0dHJpYnMgPSBtRGF0YS5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7CisgICAg
Y29uc3QgYXV0byAmYXR0cmlicyAgICAgICAgID0gbURhdGEuZ2V0VmVydGV4QXR0cmlidXRlcygp
OworICAgIGNvbnN0IGF1dG8gJmJpbmRpbmdzICAgICAgICA9IG1EYXRhLmdldFZlcnRleEJpbmRp
bmdzKCk7CiAKICAgICBpZiAobUF0dHJpYnNUb1RyYW5zbGF0ZS5hbnkoKSkKICAgICB7CkBAIC0x
NzEsOSArMTY2LDEwIEBAIGdsOjpFcnJvciBWZXJ0ZXhBcnJheTExOjp1cGRhdGVEaXJ0eUFuZER5
bmFtaWNBdHRyaWJzKFZlcnRleERhdGFNYW5hZ2VyICp2ZXJ0ZXhECiAgICAgICAgICAgICAgICAg
c3RhdGUuZ2V0VmVydGV4QXR0cmliQ3VycmVudFZhbHVlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGlu
dD4oZGlydHlBdHRyaWJJbmRleCkpOwogCiAgICAgICAgICAgICAvLyBSZWNvcmQgYmFzaWMgYXR0
cmliIGluZm8KLSAgICAgICAgICAgIHRyYW5zbGF0ZWRBdHRyaWItPmF0dHJpYnV0ZSAgICAgICAg
PSAmYXR0cmlic1tkaXJ0eUF0dHJpYkluZGV4XTsKKyAgICAgICAgICAgIHRyYW5zbGF0ZWRBdHRy
aWItPmF0dHJpYnV0ZSA9ICZhdHRyaWJzW2RpcnR5QXR0cmliSW5kZXhdOworICAgICAgICAgICAg
dHJhbnNsYXRlZEF0dHJpYi0+YmluZGluZyAgID0gJmJpbmRpbmdzW3RyYW5zbGF0ZWRBdHRyaWIt
PmF0dHJpYnV0ZS0+YmluZGluZ0luZGV4XTsKICAgICAgICAgICAgIHRyYW5zbGF0ZWRBdHRyaWIt
PmN1cnJlbnRWYWx1ZVR5cGUgPSBjdXJyZW50VmFsdWUuVHlwZTsKLSAgICAgICAgICAgIHRyYW5z
bGF0ZWRBdHRyaWItPmRpdmlzb3IgICAgICAgICAgPSB0cmFuc2xhdGVkQXR0cmliLT5hdHRyaWJ1
dGUtPmRpdmlzb3I7CisgICAgICAgICAgICB0cmFuc2xhdGVkQXR0cmliLT5kaXZpc29yICAgICAg
ICAgID0gdHJhbnNsYXRlZEF0dHJpYi0+YmluZGluZy0+ZGl2aXNvcjsKIAogICAgICAgICAgICAg
c3dpdGNoIChtQXR0cmlidXRlU3RvcmFnZVR5cGVzW2RpcnR5QXR0cmliSW5kZXhdKQogICAgICAg
ICAgICAgewpAQCAtMTgyLDggKzE3OCw3IEBAIGdsOjpFcnJvciBWZXJ0ZXhBcnJheTExOjp1cGRh
dGVEaXJ0eUFuZER5bmFtaWNBdHRyaWJzKFZlcnRleERhdGFNYW5hZ2VyICp2ZXJ0ZXhECiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgVmVydGV4U3RvcmFn
ZVR5cGU6OlNUQVRJQzoKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIEFO
R0xFX1RSWSgKLSAgICAgICAgICAgICAgICAgICAgICAgIFZlcnRleERhdGFNYW5hZ2VyOjpTdG9y
ZVN0YXRpY0F0dHJpYih0cmFuc2xhdGVkQXR0cmliLCBjb3VudCwgaW5zdGFuY2VzKSk7CisgICAg
ICAgICAgICAgICAgICAgIEFOR0xFX1RSWShWZXJ0ZXhEYXRhTWFuYWdlcjo6U3RvcmVTdGF0aWNB
dHRyaWIodHJhbnNsYXRlZEF0dHJpYikpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgY2FzZSBWZXJ0ZXhTdG9yYWdlVHlwZTo6
Q1VSUkVOVF9WQUxVRToKQEAgLTIwOCwxNSArMjAzLDE2IEBAIGdsOjpFcnJvciBWZXJ0ZXhBcnJh
eTExOjp1cGRhdGVEaXJ0eUFuZER5bmFtaWNBdHRyaWJzKFZlcnRleERhdGFNYW5hZ2VyICp2ZXJ0
ZXhECiAKICAgICAgICAgICAgIC8vIFJlY29yZCBiYXNpYyBhdHRyaWIgaW5mbwogICAgICAgICAg
ICAgZHluYW1pY0F0dHJpYi0+YXR0cmlidXRlICAgICAgICA9ICZhdHRyaWJzW2R5bmFtaWNBdHRy
aWJJbmRleF07CisgICAgICAgICAgICBkeW5hbWljQXR0cmliLT5iaW5kaW5nICAgICAgICAgID0g
JmJpbmRpbmdzW2R5bmFtaWNBdHRyaWItPmF0dHJpYnV0ZS0+YmluZGluZ0luZGV4XTsKICAgICAg
ICAgICAgIGR5bmFtaWNBdHRyaWItPmN1cnJlbnRWYWx1ZVR5cGUgPSBjdXJyZW50VmFsdWUuVHlw
ZTsKLSAgICAgICAgICAgIGR5bmFtaWNBdHRyaWItPmRpdmlzb3IgICAgICAgICAgPSBkeW5hbWlj
QXR0cmliLT5hdHRyaWJ1dGUtPmRpdmlzb3I7CisgICAgICAgICAgICBkeW5hbWljQXR0cmliLT5k
aXZpc29yICAgICAgICAgID0gZHluYW1pY0F0dHJpYi0+YmluZGluZy0+ZGl2aXNvcjsKICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiB2ZXJ0ZXhEYXRhTWFuYWdlci0+c3RvcmVEeW5hbWljQXR0
cmlicygmbVRyYW5zbGF0ZWRBdHRyaWJzLCBhY3RpdmVEeW5hbWljQXR0cmlicywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBjb3Vu
dCwgaW5zdGFuY2VzKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogY29uc3Qgc3RkOjp2ZWN0b3I8VHJh
bnNsYXRlZEF0dHJpYnV0ZT4gJlZlcnRleEFycmF5MTE6OmdldFRyYW5zbGF0ZWRBdHRyaWJzKCkg
Y29uc3QKQEAgLTIyNCwxMiArMjIwLDEyIEBAIGNvbnN0IHN0ZDo6dmVjdG9yPFRyYW5zbGF0ZWRB
dHRyaWJ1dGU+ICZWZXJ0ZXhBcnJheTExOjpnZXRUcmFuc2xhdGVkQXR0cmlicygpIGNvCiAgICAg
cmV0dXJuIG1UcmFuc2xhdGVkQXR0cmliczsKIH0KIAotdm9pZCBWZXJ0ZXhBcnJheTExOjpzaWdu
YWwoU2lnbmFsVG9rZW4gdG9rZW4pCit2b2lkIFZlcnRleEFycmF5MTE6OnNpZ25hbCh1aW50MzJf
dCBjaGFubmVsSUQpCiB7Ci0gICAgQVNTRVJUKG1BdHRyaWJ1dGVTdG9yYWdlVHlwZXNbdG9rZW5d
ICE9IFZlcnRleFN0b3JhZ2VUeXBlOjpDVVJSRU5UX1ZBTFVFKTsKKyAgICBBU1NFUlQobUF0dHJp
YnV0ZVN0b3JhZ2VUeXBlc1tjaGFubmVsSURdICE9IFZlcnRleFN0b3JhZ2VUeXBlOjpDVVJSRU5U
X1ZBTFVFKTsKIAogICAgIC8vIFRoaXMgY2FuIGNoYW5nZSBhIGJ1ZmZlcidzIHN0b3JhZ2UsIHdl
J2xsIG5lZWQgdG8gcmUtY2hlY2suCi0gICAgbUF0dHJpYnNUb1VwZGF0ZS5zZXQodG9rZW4pOwor
ICAgIG1BdHRyaWJzVG9VcGRhdGUuc2V0KGNoYW5uZWxJRCk7CiB9CiAKIHZvaWQgVmVydGV4QXJy
YXkxMTo6Y2xlYXJEaXJ0eUFuZFByb21vdGVEeW5hbWljQXR0cmlicyhjb25zdCBnbDo6U3RhdGUg
JnN0YXRlLCBHTHNpemVpIGNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTExLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRl
eEFycmF5MTEuaAppbmRleCBlYjBlMDU5NWQ1Zi4uMGY3Mzg1M2NlNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVy
dGV4QXJyYXkxMS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4QXJyYXkxMS5oCkBAIC05LDYgKzksNyBAQAogI2lmbmRl
ZiBMSUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfVkVSVEVYQVJSQVkxMV9IXwogI2RlZmluZSBM
SUJBTkdMRV9SRU5ERVJFUl9EM0RfRDNEMTFfVkVSVEVYQVJSQVkxMV9IXwogCisjaW5jbHVkZSAi
bGliQU5HTEUvRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9WZXJ0
ZXhBcnJheUltcGwuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVu
ZGVyZXIxMS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3NpZ25hbF91dGlscy5oIgpAQCAtMTcsMTMg
KzE4LDE1IEBAIG5hbWVzcGFjZSByeAogewogY2xhc3MgUmVuZGVyZXIxMTsKIAotY2xhc3MgVmVy
dGV4QXJyYXkxMSA6IHB1YmxpYyBWZXJ0ZXhBcnJheUltcGwsIHB1YmxpYyBhbmdsZTo6U2lnbmFs
UmVjZWl2ZXIKK2NsYXNzIFZlcnRleEFycmF5MTEgOiBwdWJsaWMgVmVydGV4QXJyYXlJbXBsLCBw
dWJsaWMgYW5nbGU6OlNpZ25hbFJlY2VpdmVyPD4KIHsKICAgcHVibGljOgogICAgIFZlcnRleEFy
cmF5MTEoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJmRhdGEpOwogICAgIH5WZXJ0ZXhBcnJh
eTExKCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6VmVydGV4QXJy
YXk6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVycmlkZTsKKyAgICB2b2lkIHN5bmNTdGF0ZShD
b250ZXh0SW1wbCAqY29udGV4dEltcGwsIGNvbnN0IGdsOjpWZXJ0ZXhBcnJheTo6RGlydHlCaXRz
ICZkaXJ0eUJpdHMpIG92ZXJyaWRlOworICAgIC8vIFRoaXMgd2lsbCBmbHVzaCBhbnkgcGVuZGlu
ZyBhdHRyaWIgdXBkYXRlcyBhbmQgdGhlbiBjaGVjayB0aGUgZHluYW1pYyBhdHRyaWJzIG1hc2su
CisgICAgYm9vbCBoYXNEeW5hbWljQXR0cmliKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUpOwogICAg
IGdsOjpFcnJvciB1cGRhdGVEaXJ0eUFuZER5bmFtaWNBdHRyaWJzKFZlcnRleERhdGFNYW5hZ2Vy
ICp2ZXJ0ZXhEYXRhTWFuYWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6U3RhdGUgJnN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHN0YXJ0LApAQCAtMzQsMTAgKzM3LDExIEBAIGNsYXNz
IFZlcnRleEFycmF5MTEgOiBwdWJsaWMgVmVydGV4QXJyYXlJbXBsLCBwdWJsaWMgYW5nbGU6OlNp
Z25hbFJlY2VpdmVyCiAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VHJhbnNsYXRlZEF0dHJpYnV0ZT4g
JmdldFRyYW5zbGF0ZWRBdHRyaWJzKCkgY29uc3Q7CiAKICAgICAvLyBTaWduYWxSZWNlaXZlciBp
bXBsZW1lbnRhdGlvbgotICAgIHZvaWQgc2lnbmFsKGFuZ2xlOjpTaWduYWxUb2tlbiB0b2tlbikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzaWduYWwodWludDMyX3QgY2hhbm5lbElEKSBvdmVycmlkZTsK
IAogICBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlVmVydGV4QXR0cmliU3RvcmFnZShzaXplX3Qg
YXR0cmliSW5kZXgpOworICAgIHZvaWQgZmx1c2hBdHRyaWJVcGRhdGVzKGNvbnN0IGdsOjpTdGF0
ZSAmc3RhdGUpOwogCiAgICAgc3RkOjp2ZWN0b3I8VmVydGV4U3RvcmFnZVR5cGU+IG1BdHRyaWJ1
dGVTdG9yYWdlVHlwZXM7CiAgICAgc3RkOjp2ZWN0b3I8VHJhbnNsYXRlZEF0dHJpYnV0ZT4gbVRy
YW5zbGF0ZWRBdHRyaWJzOwpAQCAtNTQsNyArNTgsNyBAQCBjbGFzcyBWZXJ0ZXhBcnJheTExIDog
cHVibGljIFZlcnRleEFycmF5SW1wbCwgcHVibGljIGFuZ2xlOjpTaWduYWxSZWNlaXZlcgogICAg
IC8vIFdlIG5lZWQgdG8ga2VlcCBhIHNhZmUgcG9pbnRlciB0byB0aGUgQnVmZmVyIHNvIHdlIGNh
biBhdHRhY2ggdGhlIGNvcnJlY3QgZGlydHkgY2FsbGJhY2tzLgogICAgIHN0ZDo6dmVjdG9yPEJp
bmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+PiBtQ3VycmVudEJ1ZmZlcnM7CiAKLSAgICBzdGQ6OnZl
Y3RvcjxhbmdsZTo6Q2hhbm5lbEJpbmRpbmc+IG1PbkJ1ZmZlckRhdGFEaXJ0eTsKKyAgICBzdGQ6
OnZlY3RvcjxnbDo6T25BdHRhY2htZW50RGlydHlCaW5kaW5nPiBtT25CdWZmZXJEYXRhRGlydHk7
CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4QnVmZmVyMTEuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9WZXJ0ZXhCdWZmZXIxMS5jcHAKaW5kZXggOWZlNDc0Mjk3N2EuLjkyYjFlZGU4MDViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL1ZlcnRleEJ1ZmZlcjExLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjExLmNwcApAQCAtMjEs
OSArMjEsOSBAQCBuYW1lc3BhY2UgcngKIAogVmVydGV4QnVmZmVyMTE6OlZlcnRleEJ1ZmZlcjEx
KFJlbmRlcmVyMTEgKmNvbnN0IHJlbmRlcmVyKSA6IG1SZW5kZXJlcihyZW5kZXJlcikKIHsKLSAg
ICBtQnVmZmVyID0gTlVMTDsKLSAgICBtQnVmZmVyU2l6ZSA9IDA7Ci0gICAgbUR5bmFtaWNVc2Fn
ZSA9IGZhbHNlOworICAgIG1CdWZmZXIgICAgICAgICAgICAgPSBOVUxMOworICAgIG1CdWZmZXJT
aXplICAgICAgICAgPSAwOworICAgIG1EeW5hbWljVXNhZ2UgICAgICAgPSBmYWxzZTsKICAgICBt
TWFwcGVkUmVzb3VyY2VEYXRhID0gTlVMTDsKIH0KIApAQCAtNDEsMjAgKzQxLDIxIEBAIGdsOjpF
cnJvciBWZXJ0ZXhCdWZmZXIxMTo6aW5pdGlhbGl6ZSh1bnNpZ25lZCBpbnQgc2l6ZSwgYm9vbCBk
eW5hbWljVXNhZ2UpCiAKICAgICBpZiAoc2l6ZSA+IDApCiAgICAgewotICAgICAgICBJRDNEMTFE
ZXZpY2UqIGR4RGV2aWNlID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKyAgICAgICAgSUQzRDEx
RGV2aWNlICpkeERldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAKICAgICAgICAgRDNE
MTFfQlVGRkVSX0RFU0MgYnVmZmVyRGVzYzsKLSAgICAgICAgYnVmZmVyRGVzYy5CeXRlV2lkdGgg
PSBzaXplOwotICAgICAgICBidWZmZXJEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfRFlOQU1JQzsK
LSAgICAgICAgYnVmZmVyRGVzYy5CaW5kRmxhZ3MgPSBEM0QxMV9CSU5EX1ZFUlRFWF9CVUZGRVI7
Ci0gICAgICAgIGJ1ZmZlckRlc2MuQ1BVQWNjZXNzRmxhZ3MgPSBEM0QxMV9DUFVfQUNDRVNTX1dS
SVRFOwotICAgICAgICBidWZmZXJEZXNjLk1pc2NGbGFncyA9IDA7CisgICAgICAgIGJ1ZmZlckRl
c2MuQnl0ZVdpZHRoICAgICAgICAgICA9IHNpemU7CisgICAgICAgIGJ1ZmZlckRlc2MuVXNhZ2Ug
ICAgICAgICAgICAgICA9IEQzRDExX1VTQUdFX0RZTkFNSUM7CisgICAgICAgIGJ1ZmZlckRlc2Mu
QmluZEZsYWdzICAgICAgICAgICA9IEQzRDExX0JJTkRfVkVSVEVYX0JVRkZFUjsKKyAgICAgICAg
YnVmZmVyRGVzYy5DUFVBY2Nlc3NGbGFncyAgICAgID0gRDNEMTFfQ1BVX0FDQ0VTU19XUklURTsK
KyAgICAgICAgYnVmZmVyRGVzYy5NaXNjRmxhZ3MgICAgICAgICAgID0gMDsKICAgICAgICAgYnVm
ZmVyRGVzYy5TdHJ1Y3R1cmVCeXRlU3RyaWRlID0gMDsKIAogICAgICAgICBIUkVTVUxUIHJlc3Vs
dCA9IGR4RGV2aWNlLT5DcmVhdGVCdWZmZXIoJmJ1ZmZlckRlc2MsIE5VTEwsICZtQnVmZmVyKTsK
ICAgICAgICAgaWYgKEZBSUxFRChyZXN1bHQpKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gYWxsb2NhdGUgaW50ZXJu
YWwgdmVydGV4IGJ1ZmZlciBvZiBzaXplLCAlbHUuIiwgc2l6ZSk7CisgICAgICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJGYWlsZWQgdG8gYWxsb2NhdGUgaW50ZXJuYWwgdmVydGV4IGJ1ZmZlciBvZiBzaXplLCAl
bHUuIiwgc2l6ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZHluYW1pY1VzYWdlKQpAQCAt
NjcsMTAgKzY4LDEwIEBAIGdsOjpFcnJvciBWZXJ0ZXhCdWZmZXIxMTo6aW5pdGlhbGl6ZSh1bnNp
Z25lZCBpbnQgc2l6ZSwgYm9vbCBkeW5hbWljVXNhZ2UpCiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBtQnVmZmVyU2l6ZSA9IHNpemU7CisgICAgbUJ1ZmZlclNpemUgICA9IHNpemU7CiAgICAgbUR5
bmFtaWNVc2FnZSA9IGR5bmFtaWNVc2FnZTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVmVydGV4
QnVmZmVyMTE6Om1hcFJlc291cmNlKCkKQEAgLTgxLDE2ICs4MiwxOCBAQCBnbDo6RXJyb3IgVmVy
dGV4QnVmZmVyMTE6Om1hcFJlc291cmNlKCkKIAogICAgICAgICBEM0QxMV9NQVBQRURfU1VCUkVT
T1VSQ0UgbWFwcGVkUmVzb3VyY2U7CiAKLSAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkeENvbnRl
eHQtPk1hcChtQnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVfTk9fT1ZFUldSSVRFLCAwLCAmbWFw
cGVkUmVzb3VyY2UpOworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9CisgICAgICAgICAgICBkeENv
bnRleHQtPk1hcChtQnVmZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVfTk9fT1ZFUldSSVRFLCAwLCAm
bWFwcGVkUmVzb3VyY2UpOwogICAgICAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0
byBtYXAgaW50ZXJuYWwgdmVydGV4IGJ1ZmZlciwgSFJFU1VMVDogMHglMDh4LiIsIHJlc3VsdCk7
CisgICAgICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gbWFwIGludGVybmFsIHZlcnRleCBidWZm
ZXIsIEhSRVNVTFQ6IDB4JTA4eC4iLCByZXN1bHQpOwogICAgICAgICB9CiAKLSAgICAgICAgbU1h
cHBlZFJlc291cmNlRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KG1hcHBlZFJlc291
cmNlLnBEYXRhKTsKKyAgICAgICAgbU1hcHBlZFJlc291cmNlRGF0YSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCAqPihtYXBwZWRSZXNvdXJjZS5wRGF0YSk7CiAgICAgfQogCi0gICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
IHZvaWQgVmVydGV4QnVmZmVyMTE6OmhpbnRVbm1hcFJlc291cmNlKCkKQEAgLTEwNSw2ICsxMDgs
NyBAQCB2b2lkIFZlcnRleEJ1ZmZlcjExOjpoaW50VW5tYXBSZXNvdXJjZSgpCiB9CiAKIGdsOjpF
cnJvciBWZXJ0ZXhCdWZmZXIxMTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0
ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGN1cnJlbnRWYWx1
ZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgY291bnQsCkBAIC0xMTcsNyArMTIxLDcgQEAgZ2w6OkVycm9yIFZlcnRleEJ1
ZmZlcjExOjpzdG9yZVZlcnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAm
YXR0cmkKICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiSW50ZXJu
YWwgdmVydGV4IGJ1ZmZlciBpcyBub3QgaW5pdGlhbGl6ZWQuIik7CiAgICAgfQogCi0gICAgaW50
IGlucHV0U3RyaWRlID0gc3RhdGljX2Nhc3Q8aW50PihDb21wdXRlVmVydGV4QXR0cmlidXRlU3Ry
aWRlKGF0dHJpYikpOworICAgIGludCBpbnB1dFN0cmlkZSA9IHN0YXRpY19jYXN0PGludD4oQ29t
cHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShhdHRyaWIsIGJpbmRpbmcpKTsKIAogICAgIC8vIFRo
aXMgd2lsbCBtYXAgdGhlIHJlc291cmNlIGlmIGl0IGlzbid0IGFscmVhZHkgbWFwcGVkLgogICAg
IEFOR0xFX1RSWShtYXBSZXNvdXJjZSgpKTsKQEAgLTEyNiwxNCArMTMwLDE1IEBAIGdsOjpFcnJv
ciBWZXJ0ZXhCdWZmZXIxMTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhB
dHRyaWJ1dGUgJmF0dHJpCiAKICAgICBjb25zdCB1aW50OF90ICppbnB1dCA9IHNvdXJjZURhdGE7
CiAKLSAgICBpZiAoaW5zdGFuY2VzID09IDAgfHwgYXR0cmliLmRpdmlzb3IgPT0gMCkKKyAgICBp
ZiAoaW5zdGFuY2VzID09IDAgfHwgYmluZGluZy5kaXZpc29yID09IDApCiAgICAgewogICAgICAg
ICBpbnB1dCArPSBpbnB1dFN0cmlkZSAqIHN0YXJ0OwogICAgIH0KIAogICAgIGdsOjpWZXJ0ZXhG
b3JtYXRUeXBlIHZlcnRleEZvcm1hdFR5cGUgPSBnbDo6R2V0VmVydGV4Rm9ybWF0VHlwZShhdHRy
aWIsIGN1cnJlbnRWYWx1ZVR5cGUpOwotICAgIGNvbnN0IEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1
cmVMZXZlbCA9IG1SZW5kZXJlci0+Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKS5mZWF0dXJlTGV2
ZWw7Ci0gICAgY29uc3QgZDNkMTE6OlZlcnRleEZvcm1hdCAmdmVydGV4Rm9ybWF0SW5mbyA9IGQz
ZDExOjpHZXRWZXJ0ZXhGb3JtYXRJbmZvKHZlcnRleEZvcm1hdFR5cGUsIGZlYXR1cmVMZXZlbCk7
CisgICAgY29uc3QgRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsICA9IG1SZW5kZXJlci0+
Z2V0UmVuZGVyZXIxMURldmljZUNhcHMoKS5mZWF0dXJlTGV2ZWw7CisgICAgY29uc3QgZDNkMTE6
OlZlcnRleEZvcm1hdCAmdmVydGV4Rm9ybWF0SW5mbyA9CisgICAgICAgIGQzZDExOjpHZXRWZXJ0
ZXhGb3JtYXRJbmZvKHZlcnRleEZvcm1hdFR5cGUsIGZlYXR1cmVMZXZlbCk7CiAgICAgQVNTRVJU
KHZlcnRleEZvcm1hdEluZm8uY29weUZ1bmN0aW9uICE9IE5VTEwpOwogICAgIHZlcnRleEZvcm1h
dEluZm8uY29weUZ1bmN0aW9uKGlucHV0LCBpbnB1dFN0cmlkZSwgY291bnQsIG91dHB1dCk7CiAK
QEAgLTE1Myw3ICsxNTgsNyBAQCBnbDo6RXJyb3IgVmVydGV4QnVmZmVyMTE6OnNldEJ1ZmZlclNp
emUodW5zaWduZWQgaW50IHNpemUpCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKICAgICB9CiB9CiAKQEAgLTE3MCwxMiArMTc1LDEzIEBAIGdsOjpFcnJvciBWZXJ0ZXhCdWZm
ZXIxMTo6ZGlzY2FyZCgpCiAgICAgSFJFU1VMVCByZXN1bHQgPSBkeENvbnRleHQtPk1hcChtQnVm
ZmVyLCAwLCBEM0QxMV9NQVBfV1JJVEVfRElTQ0FSRCwgMCwgJm1hcHBlZFJlc291cmNlKTsKICAg
ICBpZiAoRkFJTEVEKHJlc3VsdCkpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdM
X09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gbWFwIGludGVybmFsIGJ1ZmZlciBmb3IgZGlzY2Fy
ZGluZywgSFJFU1VMVDogMHglMDh4IiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9PVVRfT0ZfTUVNT1JZLAorICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8g
bWFwIGludGVybmFsIGJ1ZmZlciBmb3IgZGlzY2FyZGluZywgSFJFU1VMVDogMHglMDh4IiwgcmVz
dWx0KTsKICAgICB9CiAKICAgICBkeENvbnRleHQtPlVubWFwKG1CdWZmZXIsIDApOwogCi0gICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CiB9CiAKIElEM0QxMUJ1ZmZlciAqVmVydGV4QnVmZmVyMTE6OmdldEJ1ZmZlcigpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjExLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjExLmgKaW5kZXggZTgzMzlk
YjQ5MTcuLjAzOGJhNDI4NGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1ZlcnRleEJ1ZmZlcjExLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0
ZXhCdWZmZXIxMS5oCkBAIC0yNCw3ICsyNCwxMCBAQCBjbGFzcyBWZXJ0ZXhCdWZmZXIxMSA6IHB1
YmxpYyBWZXJ0ZXhCdWZmZXIKIAogICAgIGdsOjpFcnJvciBpbml0aWFsaXplKHVuc2lnbmVkIGlu
dCBzaXplLCBib29sIGR5bmFtaWNVc2FnZSkgb3ZlcnJpZGU7CiAKKyAgICAvLyBXYXJuaW5nOiB5
b3Ugc2hvdWxkIGVuc3VyZSBiaW5kaW5nIHJlYWxseSBtYXRjaGVzIGF0dHJpYi5iaW5kaW5nSW5k
ZXggYmVmb3JlIHVzaW5nIHRoaXMKKyAgICAvLyBmdW5jdGlvbi4KICAgICBnbDo6RXJyb3Igc3Rv
cmVWZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5n
ICZiaW5kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGN1
cnJlbnRWYWx1ZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291
bnQsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL2R4Z2lfZm9ybWF0X2RhdGEuanNvbiBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9mb3JtYXRfZGF0YS5q
c29uCmluZGV4IDViOGQ3MzU2ODUzLi44OTFkMzBkMjUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zvcm1h
dF9kYXRhLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9keGdpX2Zvcm1hdF9kYXRhLmpzb24KQEAgLTcxLDEzICs3MSwxMyBA
QAogICAgICJHOFI4X0c4QjhfVU5PUk0iOiAiIiwKICAgICAiQkMxX1RZUEVMRVNTIjogIiIsCiAg
ICAgIkJDMV9VTk9STSI6ICJCQzFfUkdCQV9VTk9STV9CTE9DSyIsCi0gICAgIkJDMV9VTk9STV9T
UkdCIjogIiIsCisgICAgIkJDMV9VTk9STV9TUkdCIjogIkJDMV9SR0JBX1VOT1JNX1NSR0JfQkxP
Q0siLAogICAgICJCQzJfVFlQRUxFU1MiOiAiIiwKICAgICAiQkMyX1VOT1JNIjogIkJDMl9SR0JB
X1VOT1JNX0JMT0NLIiwKLSAgICAiQkMyX1VOT1JNX1NSR0IiOiAiIiwKKyAgICAiQkMyX1VOT1JN
X1NSR0IiOiAiQkMyX1JHQkFfVU5PUk1fU1JHQl9CTE9DSyIsCiAgICAgIkJDM19UWVBFTEVTUyI6
ICIiLAogICAgICJCQzNfVU5PUk0iOiAiQkMzX1JHQkFfVU5PUk1fQkxPQ0siLAotICAgICJCQzNf
VU5PUk1fU1JHQiI6ICIiLAorICAgICJCQzNfVU5PUk1fU1JHQiI6ICJCQzNfUkdCQV9VTk9STV9T
UkdCX0JMT0NLIiwKICAgICAiQkM0X1RZUEVMRVNTIjogIiIsCiAgICAgIkJDNF9VTk9STSI6ICIi
LAogICAgICJCQzRfU05PUk0iOiAiIiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9mb3JtYXRfbWFwX2F1dG9n
ZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2QxMS9keGdpX2Zvcm1hdF9tYXBfYXV0b2dlbi5jcHAKaW5kZXggNjY2MTBjYWM5OWIuLjAy
NTEzY2YyZjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfZm9ybWF0X21hcF9hdXRvZ2VuLmNwcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4
Z2lfZm9ybWF0X21hcF9hdXRvZ2VuLmNwcApAQCAtMzA0LDE5ICszMDQsMTkgQEAgY29uc3QgRm9y
bWF0ICZHZXRGb3JtYXQoRFhHSV9GT1JNQVQgZHhnaUZvcm1hdCkKICAgICAgICAgY2FzZSBEWEdJ
X0ZPUk1BVF9CQzFfVU5PUk06CiAgICAgICAgICAgICByZXR1cm4gRm9ybWF0OjpHZXQoRm9ybWF0
OjpJRDo6QkMxX1JHQkFfVU5PUk1fQkxPQ0spOwogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JD
MV9VTk9STV9TUkdCOgotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gRm9y
bWF0OjpHZXQoRm9ybWF0OjpJRDo6QkMxX1JHQkFfVU5PUk1fU1JHQl9CTE9DSyk7CiAgICAgICAg
IGNhc2UgRFhHSV9GT1JNQVRfQkMyX1RZUEVMRVNTOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMyX1VOT1JNOgogICAgICAgICAgICAgcmV0dXJuIEZvcm1h
dDo6R2V0KEZvcm1hdDo6SUQ6OkJDMl9SR0JBX1VOT1JNX0JMT0NLKTsKICAgICAgICAgY2FzZSBE
WEdJX0ZPUk1BVF9CQzJfVU5PUk1fU1JHQjoKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgcmV0dXJuIEZvcm1hdDo6R2V0KEZvcm1hdDo6SUQ6OkJDMl9SR0JBX1VOT1JNX1NSR0JfQkxP
Q0spOwogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19UWVBFTEVTUzoKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIERYR0lfRk9STUFUX0JDM19VTk9STToKICAgICAgICAgICAg
IHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpCQzNfUkdCQV9VTk9STV9CTE9DSyk7CiAg
ICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1VOT1JNX1NSR0I6Ci0gICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIHJldHVybiBGb3JtYXQ6OkdldChGb3JtYXQ6OklEOjpCQzNfUkdCQV9V
Tk9STV9TUkdCX0JMT0NLKTsKICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfU05PUk06CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfVFlQRUxFU1M6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF9kYXRhLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF9kYXRhLmpz
b24KaW5kZXggZGNlMDk5N2Q5NTQuLjk0Mjc0NTY3NGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9y
dF9kYXRhLmpzb24KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9keGdpX3N1cHBvcnRfZGF0YS5qc29uCkBAIC03OTYsNyArNzk2LDcg
QEAKICAgICAgICJ0ZXh0dXJlMkQiOiAiYWx3YXlzIiwKICAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3
YXlzIiwKICAgICAgICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAotICAgICAgInNoYWRlclNhbXBs
ZSI6ICIxMF8wIiwKKyAgICAgICJzaGFkZXJTYW1wbGUiOiAiYWx3YXlzIiwKICAgICAgICJyZW5k
ZXJUYXJnZXQiOiAibmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAogICAg
ICAgImRlcHRoU3RlbmNpbCI6ICJuZXZlciIsCkBAIC04MjksNyArODI5LDcgQEAKICAgICAgICJ0
ZXh0dXJlMkQiOiAiYWx3YXlzIiwKICAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKICAgICAg
ICJ0ZXh0dXJlQ3ViZSI6ICJhbHdheXMiLAotICAgICAgInNoYWRlclNhbXBsZSI6ICIxMF8wIiwK
KyAgICAgICJzaGFkZXJTYW1wbGUiOiAiYWx3YXlzIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAi
bmV2ZXIiLAogICAgICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAogICAgICAgImRlcHRoU3Rl
bmNpbCI6ICJuZXZlciIsCkBAIC04NjIsNyArODYyLDcgQEAKICAgICAgICJ0ZXh0dXJlMkQiOiAi
YWx3YXlzIiwKICAgICAgICJ0ZXh0dXJlM0QiOiAiYWx3YXlzIiwKICAgICAgICJ0ZXh0dXJlQ3Vi
ZSI6ICJhbHdheXMiLAotICAgICAgInNoYWRlclNhbXBsZSI6ICIxMF8wIiwKKyAgICAgICJzaGFk
ZXJTYW1wbGUiOiAiYWx3YXlzIiwKICAgICAgICJyZW5kZXJUYXJnZXQiOiAibmV2ZXIiLAogICAg
ICAgIm11bHRpc2FtcGxlUlQiOiAibmV2ZXIiLAogICAgICAgImRlcHRoU3RlbmNpbCI6ICJuZXZl
ciIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF90YWJsZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF90YWJs
ZS5jcHAKaW5kZXggZDIwMmNlMTMwNzMuLjI4MTZhMjRmODZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3Vw
cG9ydF90YWJsZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9keGdpX3N1cHBvcnRfdGFibGUuY3BwCkBAIC0xMjksNyArMTI5
LDcgQEAgY29uc3QgRFhHSVN1cHBvcnQgJkdldERYR0lTdXBwb3J0XzlfMyhEWEdJX0ZPUk1BVCBk
eGdpRm9ybWF0KQogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMxX1VOT1JN
X1NSR0I6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBEWEdJU3VwcG9ydCBp
bmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwg
MCk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgRFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8z
RCB8IEZfQ1VCRSB8IEZfU0FNUExFLCBGX0RTIHwgRl9NSVBHRU4gfCBGX01TIHwgRl9SVCwgMCk7
CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lf
Rk9STUFUX0JDMl9UWVBFTEVTUzoKQEAgLTE0NCw3ICsxNDQsNyBAQCBjb25zdCBEWEdJU3VwcG9y
dCAmR2V0RFhHSVN1cHBvcnRfOV8zKERYR0lfRk9STUFUIGR4Z2lGb3JtYXQpCiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzJfVU5PUk1fU1JHQjoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGluZm8oRl8yRCB8IEZfM0QgfCBGX0NV
QkUsIEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBEWEdJU3VwcG9ydCBpbmZvKEZfMkQgfCBGXzNEIHwgRl9DVUJFIHwgRl9TQU1QTEUs
IEZfRFMgfCBGX01JUEdFTiB8IEZfTVMgfCBGX1JULCAwKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQkMzX1RZUEVMRVNTOgpA
QCAtMTU5LDcgKzE1OSw3IEBAIGNvbnN0IERYR0lTdXBwb3J0ICZHZXREWEdJU3VwcG9ydF85XzMo
RFhHSV9GT1JNQVQgZHhnaUZvcm1hdCkKICAgICAgICAgfQogICAgICAgICBjYXNlIERYR0lfRk9S
TUFUX0JDM19VTk9STV9TUkdCOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
RFhHSVN1cHBvcnQgaW5mbyhGXzJEIHwgRl8zRCB8IEZfQ1VCRSwgRl9EUyB8IEZfTUlQR0VOIHwg
Rl9NUyB8IEZfUlQsIDApOworICAgICAgICAgICAgc3RhdGljIGNvbnN0IERYR0lTdXBwb3J0IGlu
Zm8oRl8yRCB8IEZfM0QgfCBGX0NVQkUgfCBGX1NBTVBMRSwgRl9EUyB8IEZfTUlQR0VOIHwgRl9N
UyB8IEZfUlQsIDApOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBEWEdJX0ZPUk1BVF9CQzRfU05PUk06CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxzMTEu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9mb3JtYXR1dGlsczExLmNwcAppbmRleCA5YTZjZWQ0NTg1NS4uNjk1YWQ0NjhkMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczExLmNwcApAQCAtMTk5
LDExNyArMTk5LDIxNCBAQCBjb25zdCBEWEdJRm9ybWF0U2l6ZSAmR2V0RFhHSUZvcm1hdFNpemVJ
bmZvKERYR0lfRk9STUFUIGZvcm1hdCkKICAgICB9CiB9CiAKLXR5cGVkZWYgc3RkOjptYXA8Z2w6
OlZlcnRleEZvcm1hdFR5cGUsIFZlcnRleEZvcm1hdD4gRDNEMTFWZXJ0ZXhGb3JtYXRJbmZvTWFw
OwotdHlwZWRlZiBzdGQ6OnBhaXI8Z2w6OlZlcnRleEZvcm1hdFR5cGUsIFZlcnRleEZvcm1hdD4g
RDNEMTFWZXJ0ZXhGb3JtYXRQYWlyOwotCi1WZXJ0ZXhGb3JtYXQ6OlZlcnRleEZvcm1hdCgpCi0g
ICAgOiBjb252ZXJzaW9uVHlwZShWRVJURVhfQ09OVkVSVF9OT05FKSwKLSAgICAgIG5hdGl2ZUZv
cm1hdChEWEdJX0ZPUk1BVF9VTktOT1dOKSwKLSAgICAgIGNvcHlGdW5jdGlvbihOVUxMKQorY29u
c3RleHByIFZlcnRleEZvcm1hdDo6VmVydGV4Rm9ybWF0KCkKKyAgICA6IGNvbnZlcnNpb25UeXBl
KFZFUlRFWF9DT05WRVJUX05PTkUpLCBuYXRpdmVGb3JtYXQoRFhHSV9GT1JNQVRfVU5LTk9XTiks
IGNvcHlGdW5jdGlvbihOVUxMKQogewogfQogCi1WZXJ0ZXhGb3JtYXQ6OlZlcnRleEZvcm1hdChW
ZXJ0ZXhDb252ZXJzaW9uVHlwZSBjb252ZXJzaW9uVHlwZUluLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVQgbmF0aXZlRm9ybWF0SW4sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICBWZXJ0ZXhDb3B5RnVuY3Rpb24gY29weUZ1bmN0aW9uSW4pCi0gICAgOiBjb252ZXJz
aW9uVHlwZShjb252ZXJzaW9uVHlwZUluKSwKLSAgICAgIG5hdGl2ZUZvcm1hdChuYXRpdmVGb3Jt
YXRJbiksCi0gICAgICBjb3B5RnVuY3Rpb24oY29weUZ1bmN0aW9uSW4pCitjb25zdGV4cHIgVmVy
dGV4Rm9ybWF0OjpWZXJ0ZXhGb3JtYXQoVmVydGV4Q29udmVyc2lvblR5cGUgY29udmVyc2lvblR5
cGVJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBu
YXRpdmVGb3JtYXRJbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0
ZXhDb3B5RnVuY3Rpb24gY29weUZ1bmN0aW9uSW4pCisgICAgOiBjb252ZXJzaW9uVHlwZShjb252
ZXJzaW9uVHlwZUluKSwgbmF0aXZlRm9ybWF0KG5hdGl2ZUZvcm1hdEluKSwgY29weUZ1bmN0aW9u
KGNvcHlGdW5jdGlvbkluKQogewogfQogCi1zdGF0aWMgdm9pZCBBZGRWZXJ0ZXhGb3JtYXRJbmZv
KEQzRDExVmVydGV4Rm9ybWF0SW5mb01hcCAqbWFwLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gaW5wdXRUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IGNvbXBvbmVudENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
ZXJ0ZXhDb252ZXJzaW9uVHlwZSBjb252ZXJzaW9uVHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVQgbmF0aXZlRm9ybWF0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWZXJ0ZXhDb3B5RnVuY3Rpb24gY29weUZ1bmN0aW9uKQorY29uc3QgVmVy
dGV4Rm9ybWF0ICpHZXRWZXJ0ZXhGb3JtYXRJbmZvX0ZMXzlfMyhnbDo6VmVydGV4Rm9ybWF0VHlw
ZSB2ZXJ0ZXhGb3JtYXRUeXBlKQogewotICAgIGdsOjpWZXJ0ZXhGb3JtYXRUeXBlIGZvcm1hdFR5
cGUgPSBnbDo6R2V0VmVydGV4Rm9ybWF0VHlwZShpbnB1dFR5cGUsIG5vcm1hbGl6ZWQsIGNvbXBv
bmVudENvdW50LCBmYWxzZSk7CisgICAgLy8gRDNEMTEgRmVhdHVyZSBMZXZlbCA5XzMgZG9lc24n
dCBzdXBwb3J0IGFzIG1hbnkgZm9ybWF0cyBmb3IgdmVydGV4IGJ1ZmZlciByZXNvdXJjZSBhcyBG
ZWF0dXJlCisgICAgLy8gTGV2ZWwgMTBfMCsuCisgICAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0
LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9mZjQ3MTMyNCh2PXZzLjg1KS5hc3B4
CiAKLSAgICBWZXJ0ZXhGb3JtYXQgaW5mbzsKLSAgICBpbmZvLmNvbnZlcnNpb25UeXBlID0gY29u
dmVyc2lvblR5cGU7Ci0gICAgaW5mby5uYXRpdmVGb3JtYXQgPSBuYXRpdmVGb3JtYXQ7Ci0gICAg
aW5mby5jb3B5RnVuY3Rpb24gPSBjb3B5RnVuY3Rpb247CisgICAgc3dpdGNoICh2ZXJ0ZXhGb3Jt
YXRUeXBlKQorICAgIHsKKyAgICAgICAgLy8gR0xfQllURSAtLSB1bm5vcm1hbGl6ZWQKKyAgICAg
ICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TQllURTE6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQk9USCwg
RFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICZDb3B5OFNpbnRUbzE2U2ludFZlcnRleERhdGE8MSwgMj4pOworICAg
ICAgICAgICAgcmV0dXJuICZpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRF
WF9GT1JNQVRfU0JZVEUyOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHBy
IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0JPVEgsIERYR0lfRk9STUFUX1IxNkcx
Nl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
Q29weThTaW50VG8xNlNpbnRWZXJ0ZXhEYXRhPDIsIDI+KTsKKyAgICAgICAgICAgIHJldHVybiAm
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NCWVRFMzoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5m
byhWRVJURVhfQ09OVkVSVF9CT1RILCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHk4U2ludFRv
MTZTaW50VmVydGV4RGF0YTwzLCA0Pik7CisgICAgICAgICAgICByZXR1cm4gJmluZm87CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TQllURTQ6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NP
TlZFUlRfQk9USCwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5OFNpbnRUbzE2U2ludFZlcnRl
eERhdGE8NCwgND4pOworICAgICAgICAgICAgcmV0dXJuICZpbmZvOworICAgICAgICB9CiAKLSAg
ICBtYXAtPmluc2VydChEM0QxMVZlcnRleEZvcm1hdFBhaXIoZm9ybWF0VHlwZSwgaW5mbykpOwot
fQorICAgICAgICAvLyBHTF9CWVRFIC0tIG5vcm1hbGl6ZWQKKyAgICAgICAgY2FzZSBnbDo6VkVS
VEVYX0ZPUk1BVF9TQllURTFfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFU
X1IxNkcxNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJkNvcHk4U25vcm1UbzE2U25vcm1WZXJ0ZXhEYXRhPDEsIDI+KTsKKyAgICAgICAgICAg
IHJldHVybiAmaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFU
X1NCWVRFMl9OT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZl
cnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjE2RzE2X1NO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29w
eThTbm9ybVRvMTZTbm9ybVZlcnRleERhdGE8MiwgMj4pOworICAgICAgICAgICAgcmV0dXJuICZp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZVEUzX05P
Uk06CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0
IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5OFNu
b3JtVG8xNlNub3JtVmVydGV4RGF0YTwzLCA0Pik7CisgICAgICAgICAgICByZXR1cm4gJmluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TQllURTRfTk9STToK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5m
byhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHk4U25vcm1U
bzE2U25vcm1WZXJ0ZXhEYXRhPDQsIDQ+KTsKKyAgICAgICAgICAgIHJldHVybiAmaW5mbzsKKyAg
ICAgICAgfQogCi1zdGF0aWMgRDNEMTFWZXJ0ZXhGb3JtYXRJbmZvTWFwIEJ1aWxkRDNEMTFfRkw5
XzNWZXJ0ZXhGb3JtYXRJbmZvT3ZlcnJpZGVNYXAoKQotewotICAgIC8vIEQzRDExIEZlYXR1cmUg
TGV2ZWwgOV8zIGRvZXNuJ3Qgc3VwcG9ydCBhcyBtYW55IGZvcm1hdHMgZm9yIHZlcnRleCBidWZm
ZXIgcmVzb3VyY2UgYXMgRmVhdHVyZSBMZXZlbCAxMF8wKy4KLSAgICAvLyBodHRwOi8vbXNkbi5t
aWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmNDcxMzI0KHY9dnMu
ODUpLmFzcHgKKyAgICAgICAgLy8gR0xfVU5TSUdORURfQllURSAtLSB1bi1ub3JtYWxpemVkCisg
ICAgICAgIC8vIE5PVEU6IDMgYW5kIDQgY29tcG9uZW50IHVubm9ybWFsaXplZCBHTF9VTlNJR05F
RF9CWVRFIHNob3VsZCB1c2UgdGhlIGRlZmF1bHQgZm9ybWF0CisgICAgICAgIC8vIHRhYmxlLgor
ICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VCWVRFMToKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9C
T1RILCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1Ynl0ZSwgMSwg
NCwgMT4pOworICAgICAgICAgICAgcmV0dXJuICZpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUJZVEUyOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0JPVEgsIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVieXRlLCAyLCA0LCAxPik7Cisg
ICAgICAgICAgICByZXR1cm4gJmluZm87CisgICAgICAgIH0KKworICAgICAgICAvLyBHTF9VTlNJ
R05FRF9CWVRFIC0tIG5vcm1hbGl6ZWQKKyAgICAgICAgLy8gTk9URTogMyBhbmQgNCBjb21wb25l
bnQgbm9ybWFsaXplZCBHTF9VTlNJR05FRF9CWVRFIHNob3VsZCB1c2UgdGhlIGRlZmF1bHQgZm9y
bWF0IHRhYmxlLgorCisgICAgICAgIC8vIEdMX1VOU0lHTkVEX0JZVEUgLS0gbm9ybWFsaXplZAor
ICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VCWVRFMV9OT1JNOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05W
RVJUX0NQVSwgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVieXRl
LCAxLCA0LCBVSU5UOF9NQVg+KTsKKyAgICAgICAgICAgIHJldHVybiAmaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VCWVRFMl9OT1JNOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9D
T05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVi
eXRlLCAyLCA0LCBVSU5UOF9NQVg+KTsKKyAgICAgICAgICAgIHJldHVybiAmaW5mbzsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIEdMX1NIT1JUIC0tIHVuLW5vcm1hbGl6ZWQKKyAgICAgICAgLy8g
Tk9URTogMiwgMyBhbmQgNCBjb21wb25lbnQgdW5ub3JtYWxpemVkIEdMX1NIT1JUIHNob3VsZCB1
c2UgdGhlIGRlZmF1bHQgZm9ybWF0IHRhYmxlLgorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9S
TUFUX1NTSE9SVDE6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVy
dGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQk9USCwgRFhHSV9GT1JNQVRfUjE2RzE2X1NJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5
TmF0aXZlVmVydGV4RGF0YTxHTHNob3J0LCAxLCAyLCAwPik7CisgICAgICAgICAgICByZXR1cm4g
JmluZm87CisgICAgICAgIH0KKworICAgICAgICAvLyBHTF9TSE9SVCAtLSBub3JtYWxpemVkCisg
ICAgICAgIC8vIE5PVEU6IDIsIDMgYW5kIDQgY29tcG9uZW50IG5vcm1hbGl6ZWQgR0xfU0hPUlQg
c2hvdWxkIHVzZSB0aGUgZGVmYXVsdCBmb3JtYXQgdGFibGUuCisgICAgICAgIGNhc2UgZ2w6OlZF
UlRFWF9GT1JNQVRfU1NIT1JUMV9OT1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JN
QVRfUjE2RzE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xzaG9ydCwgMSwgMiwgMD4pOworICAgICAg
ICAgICAgcmV0dXJuICZpbmZvOworICAgICAgICB9CisKKyAgICAgICAgLy8gR0xfVU5TSUdORURf
U0hPUlQgLS0gdW4tbm9ybWFsaXplZAorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VT
SE9SVDE6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9y
bWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5VG8zMkZW
ZXJ0ZXhEYXRhPEdMdXNob3J0LCAxLCAyLCBmYWxzZT4pOworICAgICAgICAgICAgcmV0dXJuICZp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVVNIT1JUMjoK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5m
byhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlUbzMyRlZlcnRleERh
dGE8R0x1c2hvcnQsIDIsIDIsIGZhbHNlPik7CisgICAgICAgICAgICByZXR1cm4gJmluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VU0hPUlQzOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRF
WF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weVRvMzJGVmVydGV4RGF0YTxH
THVzaG9ydCwgMywgMywgZmFsc2U+KTsKKyAgICAgICAgICAgIHJldHVybiAmaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDQ6CisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NP
TlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdM
dXNob3J0LCA0LCA0LCBmYWxzZT4pOworICAgICAgICAgICAgcmV0dXJuICZpbmZvOworICAgICAg
ICB9CisKKyAgICAgICAgLy8gR0xfVU5TSUdORURfU0hPUlQgLS0gbm9ybWFsaXplZAorICAgICAg
ICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDFfTk9STToKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9D
UFUsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJkNvcHlUbzMyRlZlcnRleERhdGE8R0x1c2hvcnQsIDEsIDIs
IHRydWU+KTsKKyAgICAgICAgICAgIHJldHVybiAmaW5mbzsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDJfTk9STToKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUs
IERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJkNvcHlUbzMyRlZlcnRleERhdGE8R0x1c2hvcnQsIDIsIDIsIHRy
dWU+KTsKKyAgICAgICAgICAgIHJldHVybiAmaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDNfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERY
R0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJkNvcHlUbzMyRlZlcnRleERhdGE8R0x1c2hvcnQsIDMsIDMsIHRy
dWU+KTsKKyAgICAgICAgICAgIHJldHVybiAmaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDRfTk9STToKKyAgICAgICAgeworICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERY
R0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJkNvcHlUbzMyRlZlcnRleERhdGE8R0x1c2hvcnQsIDQsIDQs
IHRydWU+KTsKKyAgICAgICAgICAgIHJldHVybiAmaW5mbzsKKyAgICAgICAgfQogCi0gICAgRDNE
MTFWZXJ0ZXhGb3JtYXRJbmZvTWFwIG1hcDsKLQotICAgIC8vIEdMX0JZVEUgLS0gdW5ub3JtYWxp
emVkCi0gICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9CWVRFLCAgICAgICAgICAgR0xf
RkFMU0UsICAxLCAgVkVSVEVYX0NPTlZFUlRfQk9USCwgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NJ
TlQsICAgICAgICAgJkNvcHk4U2ludFRvMTZTaW50VmVydGV4RGF0YTwxLCAyPik7Ci0gICAgQWRk
VmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9CWVRFLCAgICAgICAgICAgR0xfRkFMU0UsICAyLCAg
VkVSVEVYX0NPTlZFUlRfQk9USCwgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsICAgICAgICAg
JkNvcHk4U2ludFRvMTZTaW50VmVydGV4RGF0YTwyLCAyPik7Ci0gICAgQWRkVmVydGV4Rm9ybWF0
SW5mbygmbWFwLCBHTF9CWVRFLCAgICAgICAgICAgR0xfRkFMU0UsICAzLCAgVkVSVEVYX0NPTlZF
UlRfQk9USCwgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsICAgJkNvcHk4U2ludFRv
MTZTaW50VmVydGV4RGF0YTwzLCA0Pik7Ci0gICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBH
TF9CWVRFLCAgICAgICAgICAgR0xfRkFMU0UsICA0LCAgVkVSVEVYX0NPTlZFUlRfQk9USCwgICAg
RFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsICAgJkNvcHk4U2ludFRvMTZTaW50VmVydGV4
RGF0YTw0LCA0Pik7Ci0KLSAgICAvLyBHTF9CWVRFIC0tIG5vcm1hbGl6ZWQKLSAgICBBZGRWZXJ0
ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX0JZVEUsICAgICAgICAgICBHTF9UUlVFLCAgIDEsICBWRVJU
RVhfQ09OVkVSVF9DUFUsICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfU05PUk0sICAgICAgICAmQ29w
eThTbm9ybVRvMTZTbm9ybVZlcnRleERhdGE8MSwgMj4pOwotICAgIEFkZFZlcnRleEZvcm1hdElu
Zm8oJm1hcCwgR0xfQllURSwgICAgICAgICAgIEdMX1RSVUUsICAgMiwgIFZFUlRFWF9DT05WRVJU
X0NQVSwgICAgIERYR0lfRk9STUFUX1IxNkcxNl9TTk9STSwgICAgICAgICZDb3B5OFNub3JtVG8x
NlNub3JtVmVydGV4RGF0YTwyLCAyPik7Ci0gICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBH
TF9CWVRFLCAgICAgICAgICAgR0xfVFJVRSwgICAzLCAgVkVSVEVYX0NPTlZFUlRfQ1BVLCAgICAg
RFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNLCAgJkNvcHk4U25vcm1UbzE2U25vcm1WZXJ0
ZXhEYXRhPDMsIDQ+KTsKLSAgICBBZGRWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX0JZVEUsICAg
ICAgICAgICBHTF9UUlVFLCAgIDQsICBWRVJURVhfQ09OVkVSVF9DUFUsICAgICBEWEdJX0ZPUk1B
VF9SMTZHMTZCMTZBMTZfU05PUk0sICAmQ29weThTbm9ybVRvMTZTbm9ybVZlcnRleERhdGE8NCwg
ND4pOwotCi0gICAgLy8gR0xfVU5TSUdORURfQllURSAtLSB1bm5vcm1hbGl6ZWQKLSAgICBBZGRW
ZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX1VOU0lHTkVEX0JZVEUsICBHTF9GQUxTRSwgIDEsICBW
RVJURVhfQ09OVkVSVF9CT1RILCAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULCAgICAgICAm
Q29weU5hdGl2ZVZlcnRleERhdGE8R0x1Ynl0ZSwgMSwgNCwgMT4pOwotICAgIEFkZFZlcnRleEZv
cm1hdEluZm8oJm1hcCwgR0xfVU5TSUdORURfQllURSwgIEdMX0ZBTFNFLCAgMiwgIFZFUlRFWF9D
T05WRVJUX0JPVEgsICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VJTlQsICAgICAgICZDb3B5TmF0
aXZlVmVydGV4RGF0YTxHTHVieXRlLCAyLCA0LCAxPik7Ci0gICAgLy8gTk9URTogMyBhbmQgNCBj
b21wb25lbnQgdW5ub3JtYWxpemVkIEdMX1VOU0lHTkVEX0JZVEUgc2hvdWxkIHVzZSB0aGUgZGVm
YXVsdCBmb3JtYXQgdGFibGUuCi0KLSAgICAvLyBHTF9VTlNJR05FRF9CWVRFIC0tIG5vcm1hbGl6
ZWQKLSAgICBBZGRWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX1VOU0lHTkVEX0JZVEUsICBHTF9U
UlVFLCAgIDEsICBWRVJURVhfQ09OVkVSVF9DUFUsICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STSwgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1Ynl0ZSwgMSwgNCwgVUlOVDhfTUFY
Pik7Ci0gICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9VTlNJR05FRF9CWVRFLCAgR0xf
VFJVRSwgICAyLCAgVkVSVEVYX0NPTlZFUlRfQ1BVLCAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThf
VU5PUk0sICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDIsIDQsIFVJTlQ4X01B
WD4pOwotICAgIC8vIE5PVEU6IDMgYW5kIDQgY29tcG9uZW50IG5vcm1hbGl6ZWQgR0xfVU5TSUdO
RURfQllURSBzaG91bGQgdXNlIHRoZSBkZWZhdWx0IGZvcm1hdCB0YWJsZS4KLQotICAgIC8vIEdM
X1NIT1JUIC0tIHVubm9ybWFsaXplZAotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xf
U0hPUlQsICAgICAgICAgIEdMX0ZBTFNFLCAgMSwgIFZFUlRFWF9DT05WRVJUX0JPVEgsICAgICBE
WEdJX0ZPUk1BVF9SMTZHMTZfU0lOVCwgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHNo
b3J0LCAxLCAyLCAwPik7Ci0gICAgLy8gTk9URTogMiwgMyBhbmQgNCBjb21wb25lbnQgdW5ub3Jt
YWxpemVkIEdMX1NIT1JUIHNob3VsZCB1c2UgdGhlIGRlZmF1bHQgZm9ybWF0IHRhYmxlLgotCi0g
ICAgLy8gR0xfU0hPUlQgLS0gbm9ybWFsaXplZAotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1h
cCwgR0xfU0hPUlQsICAgICAgICAgIEdMX1RSVUUsICAgMSwgIFZFUlRFWF9DT05WRVJUX0NQVSwg
ICAgIERYR0lfRk9STUFUX1IxNkcxNl9TTk9STSwgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0
YTxHTHNob3J0LCAxLCAyLCAwPik7Ci0gICAgLy8gTk9URTogMiwgMyBhbmQgNCBjb21wb25lbnQg
bm9ybWFsaXplZCBHTF9TSE9SVCBzaG91bGQgdXNlIHRoZSBkZWZhdWx0IGZvcm1hdCB0YWJsZS4K
LQotICAgIC8vIEdMX1VOU0lHTkVEX1NIT1JUIC0tIHVubm9ybWFsaXplZAotICAgIEFkZFZlcnRl
eEZvcm1hdEluZm8oJm1hcCwgR0xfVU5TSUdORURfU0hPUlQsIEdMX0ZBTFNFLCAgMSwgIFZFUlRF
WF9DT05WRVJUX0NQVSwgICAgIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgICAgICAgICZDb3B5
VG8zMkZWZXJ0ZXhEYXRhPEdMdXNob3J0LCAxLCAyLCBmYWxzZT4pOwotICAgIEFkZFZlcnRleEZv
cm1hdEluZm8oJm1hcCwgR0xfVU5TSUdORURfU0hPUlQsIEdMX0ZBTFNFLCAgMiwgIFZFUlRFWF9D
T05WRVJUX0NQVSwgICAgIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgICAgICAgICZDb3B5VG8z
MkZWZXJ0ZXhEYXRhPEdMdXNob3J0LCAyLCAyLCBmYWxzZT4pOwotICAgIEFkZFZlcnRleEZvcm1h
dEluZm8oJm1hcCwgR0xfVU5TSUdORURfU0hPUlQsIEdMX0ZBTFNFLCAgMywgIFZFUlRFWF9DT05W
RVJUX0NQVSwgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMl9GTE9BVCwgICAgICZDb3B5VG8zMkZW
ZXJ0ZXhEYXRhPEdMdXNob3J0LCAzLCAzLCBmYWxzZT4pOwotICAgIEFkZFZlcnRleEZvcm1hdElu
Zm8oJm1hcCwgR0xfVU5TSUdORURfU0hPUlQsIEdMX0ZBTFNFLCAgNCwgIFZFUlRFWF9DT05WRVJU
X0NQVSwgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgICZDb3B5VG8zMkZWZXJ0
ZXhEYXRhPEdMdXNob3J0LCA0LCA0LCBmYWxzZT4pOwotCi0gICAgLy8gR0xfVU5TSUdORURfU0hP
UlQgLS0gbm9ybWFsaXplZAotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfVU5TSUdO
RURfU0hPUlQsIEdMX1RSVUUsICAgMSwgIFZFUlRFWF9DT05WRVJUX0NQVSwgICAgIERYR0lfRk9S
TUFUX1IzMkczMl9GTE9BVCwgICAgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMdXNob3J0LCAx
LCAyLCB0cnVlPik7Ci0gICAgQWRkVmVydGV4Rm9ybWF0SW5mbygmbWFwLCBHTF9VTlNJR05FRF9T
SE9SVCwgR0xfVFJVRSwgICAyLCAgVkVSVEVYX0NPTlZFUlRfQ1BVLCAgICAgRFhHSV9GT1JNQVRf
UjMyRzMyX0ZMT0FULCAgICAgICAgJkNvcHlUbzMyRlZlcnRleERhdGE8R0x1c2hvcnQsIDIsIDIs
IHRydWU+KTsKLSAgICBBZGRWZXJ0ZXhGb3JtYXRJbmZvKCZtYXAsIEdMX1VOU0lHTkVEX1NIT1JU
LCBHTF9UUlVFLCAgIDMsICBWRVJURVhfQ09OVkVSVF9DUFUsICAgICBEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJfRkxPQVQsICAgICAmQ29weVRvMzJGVmVydGV4RGF0YTxHTHVzaG9ydCwgMywgMywgdHJ1
ZT4pOwotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfVU5TSUdORURfU0hPUlQsIEdM
X1RSVUUsICAgNCwgIFZFUlRFWF9DT05WRVJUX0NQVSwgICAgIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9GTE9BVCwgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMdXNob3J0LCA0LCA0LCB0cnVlPik7
Ci0KLSAgICAvLyBHTF9GSVhFRAotICAgIC8vIFRPRE86IEFkZCB0ZXN0IHRvIHZlcmlmeSB0aGF0
IHRoaXMgd29ya3MgY29ycmVjdGx5LgotICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xf
RklYRUQsICAgICAgICAgIEdMX0ZBTFNFLCAgMSwgVkVSVEVYX0NPTlZFUlRfQ1BVLCAgICAgIERY
R0lfRk9STUFUX1IzMkczMl9GTE9BVCwgICAgICAgICZDb3B5MzJGaXhlZFRvMzJGVmVydGV4RGF0
YTwxLCAyPik7Ci0gICAgLy8gTk9URTogMiwgMyBhbmQgNCBjb21wb25lbnQgR0xfRklYRUQgc2hv
dWxkIHVzZSB0aGUgZGVmYXVsdCBmb3JtYXQgdGFibGUuCi0KLSAgICAvLyBHTF9GTE9BVAotICAg
IC8vIFRPRE86IEFkZCB0ZXN0IHRvIHZlcmlmeSB0aGF0IHRoaXMgd29ya3MgY29ycmVjdGx5Lgot
ICAgIEFkZFZlcnRleEZvcm1hdEluZm8oJm1hcCwgR0xfRkxPQVQsICAgICAgICAgIEdMX0ZBTFNF
LCAgMSwgVkVSVEVYX0NPTlZFUlRfQ1BVLCAgICAgIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwg
ICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGZsb2F0LCAxLCAyLCAwPik7Ci0gICAgLy8g
Tk9URTogMiwgMyBhbmQgNCBjb21wb25lbnQgR0xfRkxPQVQgc2hvdWxkIHVzZSB0aGUgZGVmYXVs
dCBmb3JtYXQgdGFibGUuCi0KLSAgICByZXR1cm4gbWFwOworICAgICAgICAvLyBHTF9GSVhFRAor
ICAgICAgICAvLyBUT0RPOiBBZGQgdGVzdCB0byB2ZXJpZnkgdGhhdCB0aGlzIHdvcmtzIGNvcnJl
Y3RseS4KKyAgICAgICAgLy8gTk9URTogMiwgMyBhbmQgNCBjb21wb25lbnQgR0xfRklYRUQgc2hv
dWxkIHVzZSB0aGUgZGVmYXVsdCBmb3JtYXQgdGFibGUuCisgICAgICAgIGNhc2UgZ2w6OlZFUlRF
WF9GT1JNQVRfRklYRUQxOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHBy
IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjMyRzMy
X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm
Q29weTMyRml4ZWRUbzMyRlZlcnRleERhdGE8MSwgMj4pOworICAgICAgICAgICAgcmV0dXJuICZp
bmZvOworICAgICAgICB9CisKKyAgICAgICAgLy8gR0xfRkxPQVQKKyAgICAgICAgLy8gVE9ETzog
QWRkIHRlc3QgdG8gdmVyaWZ5IHRoYXQgdGhpcyB3b3JrcyBjb3JyZWN0bHkuCisgICAgICAgIC8v
IE5PVEU6IDIsIDMgYW5kIDQgY29tcG9uZW50IEdMX0ZMT0FUIHNob3VsZCB1c2UgdGhlIGRlZmF1
bHQgZm9ybWF0IHRhYmxlLgorICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX0ZMT0FUMToK
KyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5m
byhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhE
YXRhPEdMZmxvYXQsIDEsIDIsIDA+KTsKKyAgICAgICAgICAgIHJldHVybiAmaW5mbzsKKyAgICAg
ICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CiB9CiAKIGNvbnN0IFZlcnRleEZvcm1hdCAmR2V0VmVydGV4Rm9ybWF0SW5mbyhnbDo6VmVy
dGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBlLCBEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJl
TGV2ZWwpCiB7CiAgICAgaWYgKGZlYXR1cmVMZXZlbCA9PSBEM0RfRkVBVFVSRV9MRVZFTF85XzMp
CiAgICAgewotICAgICAgICBzdGF0aWMgY29uc3QgRDNEMTFWZXJ0ZXhGb3JtYXRJbmZvTWFwIHZl
cnRleEZvcm1hdE1hcEZMOV8zT3ZlcnJpZGUgPQotICAgICAgICAgICAgQnVpbGREM0QxMV9GTDlf
M1ZlcnRleEZvcm1hdEluZm9PdmVycmlkZU1hcCgpOwotCi0gICAgICAgIC8vIEZpcnN0IHNlZSBp
ZiB0aGUgZm9ybWF0IGhhcyBhIHNwZWNpYWwgbWFwcGluZyBmb3IgRkw5XzMKLSAgICAgICAgYXV0
byBpdGVyID0gdmVydGV4Rm9ybWF0TWFwRkw5XzNPdmVycmlkZS5maW5kKHZlcnRleEZvcm1hdFR5
cGUpOwotICAgICAgICBpZiAoaXRlciAhPSB2ZXJ0ZXhGb3JtYXRNYXBGTDlfM092ZXJyaWRlLmVu
ZCgpKQorICAgICAgICBjb25zdCBWZXJ0ZXhGb3JtYXQgKnJlc3VsdCA9IEdldFZlcnRleEZvcm1h
dEluZm9fRkxfOV8zKHZlcnRleEZvcm1hdFR5cGUpOworICAgICAgICBpZiAocmVzdWx0KQogICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kOworICAgICAgICAgICAgcmV0
dXJuICpyZXN1bHQ7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMyMiwzNTcgKzQxOSw0MTggQEAg
Y29uc3QgVmVydGV4Rm9ybWF0ICZHZXRWZXJ0ZXhGb3JtYXRJbmZvKGdsOjpWZXJ0ZXhGb3JtYXRU
eXBlIHZlcnRleEZvcm1hdFR5cGUsIEQKICAgICAgICAgLy8gR0xfQllURSAtLSB1bi1ub3JtYWxp
emVkCiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZVEUxOgogICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRf
R1BVLCBEWEdJX0ZPUk1BVF9SOF9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRlLCAx
LCAxLCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZv
KFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9GT1JNQVRfUjhfU0lOVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdM
Ynl0ZSwgMSwgMSwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TQllURTI6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERY
R0lfRk9STUFUX1I4RzhfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgMiwgMiwg
MD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJU
RVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1I4RzhfU0lOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0
ZSwgMiwgMiwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TQllURTM6CiAgICAgICAgIHsKLSAgICAgICAgICAg
IHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9CT1RILCBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRlLCAzLCA0
LCAxPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZF
UlRFWF9DT05WRVJUX0JPVEgsIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0
YTxHTGJ5dGUsIDMsIDQsIDE+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZVEU0OgogICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfR1BV
LCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRl
LCA0LCA0LCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBp
bmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0
ZXhEYXRhPEdMYnl0ZSwgNCwgNCwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBHTF9CWVRFIC0tIG5vcm1hbGl6ZWQKICAgICAgICAgY2FzZSBn
bDo6VkVSVEVYX0ZPUk1BVF9TQllURTFfTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9S
TUFUX1I4X1NOT1JNLCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRlLCAxLCAxLCAwPik7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05W
RVJUX05PTkUsIERYR0lfRk9STUFUX1I4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRlLCAxLCAx
LCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IGdsOjpWRVJURVhfRk9STUFUX1NCWVRFMl9OT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9G
T1JNQVRfUjhHOF9TTk9STSwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgMiwgMiwgMD4p
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhf
Q09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SOEc4X1NOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xieXRl
LCAyLCAyLCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NCWVRFM19OT1JNOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwg
MywgNCwgSU5UOF9NQVg+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9y
bWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRp
dmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgMywgNCwgSU5UOF9NQVg+KTsKICAgICAgICAgICAgIHJldHVy
biBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZVEU0
X05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQg
aW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwgJkNv
cHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgNCwgNCwgMD4pOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgNCwgNCwgMD4pOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHTF9VTlNJR05F
RF9CWVRFIC0tIHVuLW5vcm1hbGl6ZWQKICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9V
QllURTE6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQg
aW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1I4X1VJTlQsICZDb3B5TmF0aXZl
VmVydGV4RGF0YTxHTHVieXRlLCAxLCAxLCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9GT1JNQVRfUjhf
VUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNv
cHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDEsIDEsIDA+KTsKICAgICAgICAgICAgIHJldHVy
biBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUJZVEUy
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8o
VkVSVEVYX0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1BVF9SOEc4X1VJTlQsICZDb3B5TmF0aXZlVmVy
dGV4RGF0YTxHTHVieXRlLCAyLCAyLCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHBy
IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9GT1JNQVRfUjhHOF9V
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29w
eU5hdGl2ZVZlcnRleERhdGE8R0x1Ynl0ZSwgMiwgMiwgMD4pOwogICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VQllURTM6
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhW
RVJURVhfQ09OVkVSVF9CT1RILCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULCAmQ29weU5hdGl2
ZVZlcnRleERhdGE8R0x1Ynl0ZSwgMywgNCwgMT4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9CT1RILCBEWEdJX0ZPUk1BVF9S
OEc4QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1Ynl0ZSwgMywgNCwgMT4pOwogICAgICAgICAg
ICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1B
VF9VQllURTQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3Jt
YXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1I4RzhCOEE4X1VJTlQsICZD
b3B5TmF0aXZlVmVydGV4RGF0YTxHTHVieXRlLCA0LCA0LCAwPik7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDQsIDQsIDA+KTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAKICAgICAgICAgLy8gR0xfVU5TSUdO
RURfQllURSAtLSBub3JtYWxpemVkCiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUJZ
VEUxX05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3Jt
YXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SOF9VTk9STSwgJkNvcHlO
YXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDEsIDEsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JN
QVRfUjhfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVieXRlLCAxLCAxLCAwPik7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFU
X1VCWVRFMl9OT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4
Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwg
JkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDIsIDIsIDA+KTsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhH
SV9GT1JNQVRfUjhHOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDIsIDIsIDA+KTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRF
WF9GT1JNQVRfVUJZVEUzX05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1I4RzhC
OEE4X1VOT1JNLCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1Ynl0ZSwgMywgNCwgVUlOVDhfTUFY
Pik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRF
WF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxH
THVieXRlLCAzLCA0LCBVSU5UOF9NQVg+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUJZVEU0X05PUk06CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhf
Q09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwgJkNvcHlOYXRpdmVWZXJ0
ZXhEYXRhPEdMdWJ5dGUsIDQsIDQsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
VmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjhHOEI4
QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVieXRlLCA0LCA0LCAwPik7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEdMX1NIT1JUIC0tIHVuLW5vcm1h
bGl6ZWQKICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TU0hPUlQxOgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZF
UlRfR1BVLCBEWEdJX0ZPUk1BVF9SMTZfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hv
cnQsIDEsIDEsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0
IGluZm8oVkVSVEVYX0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1BVF9SMTZfU0lOVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhE
YXRhPEdMc2hvcnQsIDEsIDEsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU1NIT1JUMjoKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJU
X0dQVSwgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHNo
b3J0LCAyLCAyLCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1h
dCBpbmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVy
dGV4RGF0YTxHTHNob3J0LCAyLCAyLCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NTSE9SVDM6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09O
VkVSVF9CT1RILCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0
ZXhEYXRhPEdMc2hvcnQsIDMsIDQsIDE+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
VmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQk9USCwgRFhHSV9GT1JNQVRfUjE2RzE2
QjE2QTE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHNob3J0LCAzLCA0LCAxPik7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFU
X1NTSE9SVDQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3Jt
YXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5U
LCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xzaG9ydCwgNCwgNCwgMD4pOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERY
R0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xzaG9ydCwgNCwgNCwg
MD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KIAogICAgICAgICAvLyBH
TF9TSE9SVCAtLSBub3JtYWxpemVkCiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU1NI
T1JUMV9OT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9y
bWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjE2X1NOT1JNLCAmQ29w
eU5hdGl2ZVZlcnRleERhdGE8R0xzaG9ydCwgMSwgMSwgMD4pOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZP
Uk1BVF9SMTZfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHNob3J0LCAxLCAxLCAwPik7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9S
TUFUX1NTSE9SVDJfTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZl
cnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IxNkcxNl9T
Tk9STSwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDIsIDIsIDA+KTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9O
RSwgRFhHSV9GT1JNQVRfUjE2RzE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xzaG9ydCwgMiwgMiwg
MD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBn
bDo6VkVSVEVYX0ZPUk1BVF9TU0hPUlQzX05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9S
TUFUX1IxNkcxNkIxNkExNl9TTk9STSwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDMs
IDQsIElOVDE2X01BWD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3Jt
YXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlO
YXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDMsIDQsIElOVDE2X01BWD4pOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9T
U0hPUlQ0X05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhG
b3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
U05PUk0sICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHNob3J0LCA0LCA0LCAwPik7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05P
TkUsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQs
IDQsIDQsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gR0xfVU5TSUdORURfU0hPUlQgLS0gdW4tbm9ybWFsaXplZAogICAgICAgICBjYXNlIGds
OjpWRVJURVhfRk9STUFUX1VTSE9SVDE6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1Ix
Nl9VSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1c2hvcnQsIDEsIDEsIDA+KTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRf
R1BVLCBEWEdJX0ZPUk1BVF9SMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCAxLCAxLCAw
Pik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGds
OjpWRVJURVhfRk9STUFUX1VTSE9SVDI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1Ix
NkcxNl9VSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1c2hvcnQsIDIsIDIsIDA+KTsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZF
UlRfR1BVLCBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCAy
LCAyLCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDM6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9CT1RILCBEWEdJX0ZP
Uk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCAz
LCA0LCAxPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZv
KFZFUlRFWF9DT05WRVJUX0JPVEgsIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZl
cnRleERhdGE8R0x1c2hvcnQsIDMsIDQsIDE+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVVNIT1JUNDoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9D
T05WRVJUX0dQVSwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsICZDb3B5TmF0aXZlVmVy
dGV4RGF0YTxHTHVzaG9ydCwgNCwgNCwgMD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1c2hvcnQsIDQsIDQsIDA+KTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAKICAgICAgICAgLy8gR0xfVU5TSUdORURfU0hP
UlQgLS0gbm9ybWFsaXplZAogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDFf
Tk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBp
bmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IxNl9VTk9STSwgJkNvcHlOYXRp
dmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCAxLCAxLCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFU
X1IxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCAxLCAxLCAwPik7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFU
X1VTSE9SVDJfTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRl
eEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IxNkcxNl9VTk9S
TSwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCAyLCAyLCAwPik7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUs
IERYR0lfRk9STUFUX1IxNkcxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCAyLCAyLCAw
Pik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGds
OjpWRVJURVhfRk9STUFUX1VTSE9SVDNfTk9STToKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X1VOT1JNLCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1c2hvcnQsIDMs
IDQsIFVJTlQxNl9NQVg+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9y
bWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5P
Uk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5
TmF0aXZlVmVydGV4RGF0YTxHTHVzaG9ydCwgMywgNCwgVUlOVDE2X01BWD4pOwogICAgICAgICAg
ICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1B
VF9VU0hPUlQ0X05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0
ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZB
MTZfVU5PUk0sICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVzaG9ydCwgNCwgNCwgMD4pOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVS
VF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVz
aG9ydCwgNCwgNCwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBHTF9JTlQgLS0gdW4tbm9ybWFsaXplZAogICAgICAgICBjYXNlIGdsOjpWRVJU
RVhfRk9STUFUX1NJTlQxOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVy
dGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1BVF9SMzJfU0lOVCwg
JkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMaW50LCAxLCAxLCAwPik7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9G
T1JNQVRfUjMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGludCwgMSwgMSwgMD4pOwogICAgICAgICAg
ICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1B
VF9TSU5UMjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1h
dCBpbmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQsICZDb3B5
TmF0aXZlVmVydGV4RGF0YTxHTGludCwgMiwgMiwgMD4pOworICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFU
X1IzMkczMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xpbnQsIDIsIDIsIDA+KTsKICAgICAgICAgICAg
IHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRf
U0lOVDM6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQg
aW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9STUFUX1IzMkczMkIzMl9TSU5ULCAmQ29w
eU5hdGl2ZVZlcnRleERhdGE8R0xpbnQsIDMsIDMsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMaW50LCAzLCAzLCAwPik7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9S
TUFUX1NJTlQ0OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9y
bWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfR1BVLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lO
VCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMaW50LCA0LCA0LCAwPik7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhH
SV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGludCwgNCwgNCwgMD4p
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHTF9J
TlQgLS0gbm9ybWFsaXplZAogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQxX05P
Uk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5m
byhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMl9GTE9BVCwgJkNvcHlUbzMyRlZl
cnRleERhdGE8R0xpbnQsIDEsIDEsIHRydWU+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMzJf
RkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZD
b3B5VG8zMkZWZXJ0ZXhEYXRhPEdMaW50LCAxLCAxLCB0cnVlPik7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQy
X05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQg
aW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgJkNvcHlU
bzMyRlZlcnRleERhdGE8R0xpbnQsIDIsIDIsIHRydWU+KTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1B
VF9SMzJHMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMaW50LCAyLCAyLCB0cnVlPik7CiAgICAgICAg
ICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9S
TUFUX1NJTlQzX05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0
ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMkIzMl9G
TE9BVCwgJkNvcHlUbzMyRlZlcnRleERhdGE8R0xpbnQsIDMsIDMsIHRydWU+KTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BV
LCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMaW50LCAzLCAzLCB0
cnVlPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IGdsOjpWRVJURVhfRk9STUFUX1NJTlQ0X05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9S
TUFUX1IzMkczMkIzMkEzMl9GTE9BVCwgJkNvcHlUbzMyRlZlcnRleERhdGE8R0xpbnQsIDQsIDQs
IHRydWU+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8o
VkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5VG8zMkZWZXJ0
ZXhEYXRhPEdMaW50LCA0LCA0LCB0cnVlPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIEdMX1VOU0lHTkVEX0lOVCAtLSB1bi1ub3JtYWxpemVkCiAg
ICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDE6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERY
R0lfRk9STUFUX1IzMl9VSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1aW50LCAxLCAxLCAw
Pik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRF
WF9DT05WRVJUX0dQVSwgRFhHSV9GT1JNQVRfUjMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVpbnQs
IDEsIDEsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9S
TUFUX1IzMkczMl9VSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1aW50LCAyLCAyLCAwPik7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9D
T05WRVJUX0dQVSwgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVpbnQs
IDIsIDIsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAg
IGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDM6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERYR0lfRk9S
TUFUX1IzMkczMkIzMl9VSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1aW50LCAzLCAzLCAw
Pik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRF
WF9DT05WRVJUX0dQVSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1VJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxH
THVpbnQsIDMsIDMsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDQ6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9HUFUsIERY
R0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1aW50
LCA0LCA0LCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBp
bmZvKFZFUlRFWF9DT05WRVJUX0dQVSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZl
VmVydGV4RGF0YTxHTHVpbnQsIDQsIDQsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gR0xfVU5TSUdORURfSU5UIC0tIG5vcm1hbGl6ZWQKICAg
ICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VSU5UMV9OT1JNOgogICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BV
LCBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJkNvcHlUbzMyRlZlcnRleERhdGE8R0x1aW50LCAxLCAxLCB0cnVlPik7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05W
RVJUX0NQVSwgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmQ29weVRvMzJGVmVydGV4RGF0YTxHTHVpbnQsIDEsIDEs
IHRydWU+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNh
c2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDJfTk9STToKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9G
T1JNQVRfUjMyRzMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMdWludCwgMiwgMiwgdHJ1ZT4pOworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9D
UFUsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJkNvcHlUbzMyRlZlcnRleERhdGE8R0x1aW50LCAyLCAyLCB0
cnVlPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IGdsOjpWRVJURVhfRk9STUFUX1VJTlQzX05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9S
TUFUX1IzMkczMkIzMl9GTE9BVCwgJkNvcHlUbzMyRlZlcnRleERhdGE8R0x1aW50LCAzLCAzLCB0
cnVlPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZF
UlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weVRvMzJGVmVydGV4RGF0
YTxHTHVpbnQsIDMsIDMsIHRydWU+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDRfTk9STToKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05W
RVJUX0NQVSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5VG8zMkZWZXJ0ZXhEYXRhPEdMdWludCwg
NCwgNCwgdHJ1ZT4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQg
aW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlUbzMy
RlZlcnRleERhdGE8R0x1aW50LCA0LCA0LCB0cnVlPik7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEdMX0ZJWEVECiAgICAgICAgIGNhc2UgZ2w6OlZF
UlRFWF9GT1JNQVRfRklYRUQxOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
VmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMzJfRkxP
QVQsICZDb3B5MzJGaXhlZFRvMzJGVmVydGV4RGF0YTwxLCAxPik7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9G
T1JNQVRfUjMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmQ29weTMyRml4ZWRUbzMyRlZlcnRleERhdGE8MSwgMT4pOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9G
SVhFRDI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQg
aW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgJkNvcHkz
MkZpeGVkVG8zMkZWZXJ0ZXhEYXRhPDIsIDI+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMzJH
MzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZDb3B5MzJGaXhlZFRvMzJGVmVydGV4RGF0YTwyLCAyPik7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX0ZJWEVEMzoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZF
UlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX0ZMT0FULCAmQ29weTMyRml4
ZWRUbzMyRlZlcnRleERhdGE8MywgMz4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBW
ZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMkIz
Ml9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JkNvcHkzMkZpeGVkVG8zMkZWZXJ0ZXhEYXRhPDMsIDM+KTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfRklYRUQ0Ogog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVS
VEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsICZDb3B5MzJG
aXhlZFRvMzJGVmVydGV4RGF0YTw0LCA0Pik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHBy
IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjMyRzMy
QjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmQ29weTMyRml4ZWRUbzMyRlZlcnRleERhdGE8NCwgND4pOwogICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHTF9IQUxGX0ZMT0FUCiAgICAgICAg
IGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfSEFMRjE6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZP
Uk1BVF9SMTZfRkxPQVQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGhhbGYsIDEsIDEsIDA+KTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NP
TlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xoYWxmLCAx
LCAxLCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIGdsOjpWRVJURVhfRk9STUFUX0hBTEYyOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0
aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JN
QVRfUjE2RzE2X0ZMT0FULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xoYWxmLCAyLCAyLCAwPik7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9D
T05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMaGFs
ZiwgMiwgMiwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9IQUxGMzoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9G
T1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xoYWxmLCAz
LCA0LCBnbDo6RmxvYXQxNk9uZT4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0
ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IxNkcxNkIxNkEx
Nl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMaGFsZiwgMywgNCwgZ2w6OkZsb2F0MTZPbmU+KTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRF
WF9GT1JNQVRfSEFMRjQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0
ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZB
MTZfRkxPQVQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGhhbGYsIDQsIDQsIDA+KTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRf
Tk9ORSwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xoYWxm
LCA0LCA0LCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIEdMX0ZMT0FUCiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfRkxPQVQxOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVS
VEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULCAmQ29weU5hdGl2ZVZlcnRl
eERhdGE8R0xmbG9hdCwgMSwgMSwgMD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBW
ZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJfRkxP
QVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5
TmF0aXZlVmVydGV4RGF0YTxHTGZsb2F0LCAxLCAxLCAwPik7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX0ZMT0FUMjoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZF
UlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwgJkNvcHlOYXRpdmVW
ZXJ0ZXhEYXRhPEdMZmxvYXQsIDIsIDIsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjMy
RzMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xmbG9hdCwgMiwgMiwgMD4pOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9G
TE9BVDM6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQg
aW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfRkxPQVQsICZD
b3B5TmF0aXZlVmVydGV4RGF0YTxHTGZsb2F0LCAzLCAzLCAwPik7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lf
Rk9STUFUX1IzMkczMkIzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMZmxvYXQsIDMsIDMsIDA+KTsK
ICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZF
UlRFWF9GT1JNQVRfRkxPQVQ0OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
VmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjMyRzMy
QjMyQTMyX0ZMT0FULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xmbG9hdCwgNCwgNCwgMD4pOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09O
VkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxH
TGZsb2F0LCA0LCA0LCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIEdMX0lOVF8yXzEwXzEwXzEwX1JFVgogICAgICAgICBjYXNlIGdsOjpWRVJU
RVhfRk9STUFUX1NJTlQyMTA6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBW
ZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9GTE9BVCwgJkNvcHlYWVoxMFcyVG9YWVpXMzJGVmVydGV4RGF0YTx0cnVlLCBmYWxzZSwg
dHJ1ZT4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhW
RVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlYWVoxMFcyVG9Y
WVpXMzJGVmVydGV4RGF0YTx0cnVlLCBmYWxzZSwgdHJ1ZT4pOwogICAgICAgICAgICAgcmV0dXJu
IGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TSU5UMjEw
X05PUk06CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQg
aW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwg
JkNvcHlYWVoxMFcyVG9YWVpXMzJGVmVydGV4RGF0YTx0cnVlLCB0cnVlLCB0cnVlPik7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJU
X0NQVSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weVhZWjEwVzJUb1hZWlczMkZWZXJ0ZXhE
YXRhPHRydWUsIHRydWUsIHRydWU+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICB9CiAKICAgICAgICAgLy8gR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWCiAgICAgICAg
IGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDIxMDoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9G
T1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULCAmQ29weVhZWjEwVzJUb1hZWlczMkZWZXJ0ZXhEYXRh
PGZhbHNlLCBmYWxzZSwgdHJ1ZT4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0
ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1IzMkczMkIzMkEz
Ml9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JkNvcHlYWVoxMFcyVG9YWVpXMzJGVmVydGV4RGF0YTxmYWxzZSwgZmFsc2UsIHRydWU+KTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRF
WF9GT1JNQVRfVUlOVDIxMF9OT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjEw
RzEwQjEwQTJfVU5PUk0sICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVpbnQsIDEsIDEsIDA+KTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NP
TlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxH
THVpbnQsIDEsIDEsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAK
QEAgLTY4MywxNTIgKzg0MSwxNzggQEAgY29uc3QgVmVydGV4Rm9ybWF0ICZHZXRWZXJ0ZXhGb3Jt
YXRJbmZvKGdsOjpWZXJ0ZXhGb3JtYXRUeXBlIHZlcnRleEZvcm1hdFR5cGUsIEQKICAgICAgICAg
Ly8gR0xfQllURQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NCWVRFMV9JTlQ6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJU
RVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SOF9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERh
dGE8R0xieXRlLCAxLCAxLCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRl
eEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1I4X1NJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZl
VmVydGV4RGF0YTxHTGJ5dGUsIDEsIDEsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZVEUyX0lOVDoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRF
WF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1I4RzhfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhE
YXRhPEdMYnl0ZSwgMiwgMiwgMD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0
ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0
aXZlVmVydGV4RGF0YTxHTGJ5dGUsIDIsIDIsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZVEUzX0lOVDoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZF
UlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCwgJkNvcHlOYXRpdmVW
ZXJ0ZXhEYXRhPEdMYnl0ZSwgMywgNCwgMT4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUsIERYR0lfRk9STUFUX1I4RzhC
OEE4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGJ5dGUsIDMsIDQsIDE+KTsKICAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZ
VEU0X0lOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1h
dCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsICZD
b3B5TmF0aXZlVmVydGV4RGF0YTxHTGJ5dGUsIDQsIDQsIDA+KTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9G
T1JNQVRfUjhHOEI4QThfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMYnl0ZSwgNCwgNCwgMD4pOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHTF9VTlNJR05F
RF9CWVRFCiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUJZVEUxX0lOVDoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9D
T05WRVJUX05PTkUsIERYR0lfRk9STUFUX1I4X1VJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxH
THVieXRlLCAxLCAxLCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZv
cm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1I4X1VJTlQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVy
dGV4RGF0YTxHTHVieXRlLCAxLCAxLCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VCWVRFMl9JTlQ6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhf
Q09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SOEc4X1VJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0
YTxHTHVieXRlLCAyLCAyLCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRl
eEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1I4RzhfVUlOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRp
dmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDIsIDIsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUJZVEUzX0lOVDoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZF
UlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCwgJkNvcHlOYXRpdmVW
ZXJ0ZXhEYXRhPEdMdWJ5dGUsIDMsIDQsIDE+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1Ynl0ZSwgMywgNCwgMT4pOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9V
QllURTRfSU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9y
bWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCwg
JkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDQsIDQsIDA+KTsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWJ5dGUsIDQsIDQsIDA+KTsK
ICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAKICAgICAgICAgLy8gR0xfU0hP
UlQKICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TU0hPUlQxX0lOVDoKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05W
RVJUX05PTkUsIERYR0lfRk9STUFUX1IxNl9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xz
aG9ydCwgMSwgMSwgMD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3Jt
YXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZfU0lOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0
ZXhEYXRhPEdMc2hvcnQsIDEsIDEsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU1NIT1JUMl9JTlQ6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhf
Q09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZHMTZfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhE
YXRhPEdMc2hvcnQsIDIsIDIsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVy
dGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjE2RzE2X1NJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5
TmF0aXZlVmVydGV4RGF0YTxHTHNob3J0LCAyLCAyLCAwPik7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NTSE9SVDNf
SU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGlu
Zm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwgJkNv
cHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDMsIDQsIDE+KTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZP
Uk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDMsIDQsIDE+KTsK
ICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZF
UlRFWF9GT1JNQVRfU1NIT1JUNF9JTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9S
MTZHMTZCMTZBMTZfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMc2hvcnQsIDQsIDQsIDA+
KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVY
X0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0
YTxHTHNob3J0LCA0LCA0LCAwPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogCiAgICAgICAgIC8vIEdMX1VOU0lHTkVEX1NIT1JUCiAgICAgICAgIGNhc2UgZ2w6OlZFUlRF
WF9GT1JNQVRfVVNIT1JUMV9JTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMTZf
VUlOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCAxLCAxLCAwPik7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05P
TkUsIERYR0lfRk9STUFUX1IxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1c2hvcnQsIDEsIDEsIDA+
KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgZ2w6
OlZFUlRFWF9GT1JNQVRfVVNIT1JUMl9JTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1B
VF9SMTZHMTZfVUlOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCAyLCAyLCAwPik7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9D
T05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IxNkcxNl9VSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1c2hv
cnQsIDIsIDIsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfVVNIT1JUM19JTlQ6CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9DUFUs
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0x1
c2hvcnQsIDMsIDQsIDE+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9y
bWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlO
YXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCAzLCA0LCAxPik7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDRf
SU5UOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGlu
Zm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsICZD
b3B5TmF0aXZlVmVydGV4RGF0YTxHTHVzaG9ydCwgNCwgNCwgMD4pOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJ
X0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdXNob3J0LCA0LCA0LCAw
Pik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEdM
X0lOVAogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQxX0lOVDoKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05W
RVJUX05PTkUsIERYR0lfRk9STUFUX1IzMl9TSU5ULCAmQ29weU5hdGl2ZVZlcnRleERhdGE8R0xp
bnQsIDEsIDEsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0
IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjMyX1NJTlQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4
RGF0YTxHTGludCwgMSwgMSwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TSU5UMl9JTlQ6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVS
VF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdM
aW50LCAyLCAyLCAwPik7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIFZlcnRleEZvcm1h
dCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IzMkczMl9TSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmQ29weU5hdGl2ZVZl
cnRleERhdGE8R0xpbnQsIDIsIDIsIDA+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0lOVDNfSU5UOgogICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NP
TlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjMyRzMyQjMyX1NJTlQsICZDb3B5TmF0aXZlVmVydGV4
RGF0YTxHTGludCwgMywgMywgMD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0
ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJf
U0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNv
cHlOYXRpdmVWZXJ0ZXhEYXRhPEdMaW50LCAzLCAzLCAwPik7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NJTlQ0X0lO
VDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZv
KFZFUlRFWF9DT05WRVJUX05PTkUsIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5ULCAmQ29w
eU5hdGl2ZVZlcnRleERhdGE8R0xpbnQsIDQsIDQsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JN
QVRfUjMyRzMyQjMyQTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTGludCwgNCwgNCwgMD4pOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KIAogICAgICAgICAvLyBHTF9VTlNJR05F
RF9JTlQKICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VSU5UMV9JTlQ6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09O
VkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdM
dWludCwgMSwgMSwgMD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3Jt
YXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJfU0lOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0
ZXhEYXRhPEdMdWludCwgMSwgMSwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VSU5UMl9JTlQ6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09O
VkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRh
PEdMdWludCwgMiwgMiwgMD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhG
b3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRp
dmVWZXJ0ZXhEYXRhPEdMdWludCwgMiwgMiwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VSU5UM19JTlQ6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJU
RVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJfU0lOVCwgJkNvcHlOYXRpdmVW
ZXJ0ZXhEYXRhPEdMdWludCwgMywgMywgMD4pOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWludCwgMywgMywgMD4pOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9V
SU5UNF9JTlQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBWZXJ0ZXhGb3Jt
YXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lO
VCwgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWludCwgNCwgNCwgMD4pOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQgaW5mbyhWRVJURVhfQ09OVkVSVF9OT05FLCBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRpdmVWZXJ0ZXhEYXRhPEdMdWludCwgNCwgNCwg
MD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KIAogICAgICAgICAvLyBH
TF9JTlRfMl8xMF8xMF8xMF9SRVYKICAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TSU5U
MjEwX0lOVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1h
dCBpbmZvKFZFUlRFWF9DT05WRVJUX0NQVSwgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQs
ICZDb3B5WFlaMTBXMlRvWFlaVzMyRlZlcnRleERhdGE8dHJ1ZSwgdHJ1ZSwgZmFsc2U+KTsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0IGluZm8oVkVSVEVYX0NPTlZF
UlRfQ1BVLCBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlYWVoxMFcyVG9YWVpXMzJGVmVydGV4
RGF0YTx0cnVlLCB0cnVlLCBmYWxzZT4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYKICAgICAg
ICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VSU5UMjEwX0lOVDoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IFZlcnRleEZvcm1hdCBpbmZvKFZFUlRFWF9DT05WRVJUX05PTkUs
IERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VJTlQsICZDb3B5TmF0aXZlVmVydGV4RGF0YTxHTHVp
bnQsIDEsIDEsIDA+KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgVmVydGV4Rm9ybWF0
IGluZm8oVkVSVEVYX0NPTlZFUlRfTk9ORSwgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkNvcHlOYXRp
dmVWZXJ0ZXhEYXRhPEdMdWludCwgMSwgMSwgMD4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgVmVydGV4Rm9ybWF0IGluZm87CisgICAgICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIFZlcnRleEZvcm1hdCBpbmZvOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
IH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxzMTEuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5oCmlu
ZGV4IDE1ZDY3MDY0ZTg3Li4zYTlmZDYzZGZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczExLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9mb3JtYXR1dGlsczExLmgKQEAgLTQxLDE3ICs0MSwxOCBAQCBzdHJ1Y3QgRFhHSUZvcm1h
dFNpemUKIH07CiBjb25zdCBEWEdJRm9ybWF0U2l6ZSAmR2V0RFhHSUZvcm1hdFNpemVJbmZvKERY
R0lfRk9STUFUIGZvcm1hdCk7CiAKLXN0cnVjdCBWZXJ0ZXhGb3JtYXQKK3N0cnVjdCBWZXJ0ZXhG
b3JtYXQgOiBhbmdsZTo6Tm9uQ29weWFibGUKIHsKLSAgICBWZXJ0ZXhGb3JtYXQoKTsKLSAgICBW
ZXJ0ZXhGb3JtYXQoVmVydGV4Q29udmVyc2lvblR5cGUgY29udmVyc2lvblR5cGUsCi0gICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUIG5hdGl2ZUZvcm1hdCwKLSAgICAgICAgICAgICAgICAgVmVy
dGV4Q29weUZ1bmN0aW9uIGNvcHlGdW5jdGlvbik7CisgICAgY29uc3RleHByIFZlcnRleEZvcm1h
dCgpOworICAgIGNvbnN0ZXhwciBWZXJ0ZXhGb3JtYXQoVmVydGV4Q29udmVyc2lvblR5cGUgY29u
dmVyc2lvblR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBuYXRp
dmVGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJ0ZXhDb3B5RnVuY3Rpb24g
Y29weUZ1bmN0aW9uKTsKIAogICAgIFZlcnRleENvbnZlcnNpb25UeXBlIGNvbnZlcnNpb25UeXBl
OwogICAgIERYR0lfRk9STUFUIG5hdGl2ZUZvcm1hdDsKICAgICBWZXJ0ZXhDb3B5RnVuY3Rpb24g
Y29weUZ1bmN0aW9uOwogfTsKKwogY29uc3QgVmVydGV4Rm9ybWF0ICZHZXRWZXJ0ZXhGb3JtYXRJ
bmZvKGdsOjpWZXJ0ZXhGb3JtYXRUeXBlIHZlcnRleEZvcm1hdFR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVs
KTsKIApAQCAtNjAsNiArNjEsMTEgQEAgR0xlbnVtIEdldENvbXBvbmVudFR5cGUoRFhHSV9GT1JN
QVQgZHhnaUZvcm1hdCk7CiAKIH0gIC8vIG5hbWVzcGFjZSBkM2QxMQogCituYW1lc3BhY2UgZDNk
MTFfYW5nbGUKK3sKK2NvbnN0IGFuZ2xlOjpGb3JtYXQgJkdldEZvcm1hdChEWEdJX0ZPUk1BVCBk
eGdpRm9ybWF0KTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHJ4CiAKICNlbmRpZiAvLyBMSUJBTkdM
RV9SRU5ERVJFUl9EM0RfRDNEMTFfRk9STUFUVVRJTFMxMV9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9nZW5fZHhn
aV9zdXBwb3J0X3RhYmxlcy5weSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvZ2VuX2R4Z2lfc3VwcG9ydF90YWJsZXMucHkKaW5kZXggZGJh
NTgzZjFlNjEuLjIwMGE1MDVlMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2dlbl9keGdpX3N1cHBvcnRfdGFibGVz
LnB5CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvZ2VuX2R4Z2lfc3VwcG9ydF90YWJsZXMucHkKQEAgLTgsNiArOCw3IEBACiAjICBh
cmUgbmF0aXZlbHkgc3VwcG9ydCBpbiBEM0QxMCsuCiAjCiAjIE1TRE4gbGlua3M6CisjICAxMExl
dmVsOSA5XzM6IGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93
cy9kZXNrdG9wL210NzkwNzQwLmFzcHgKICMgIDEwXzA6IGh0dHBzOi8vbXNkbi5taWNyb3NvZnQu
Y29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2NjNjI3MDkwLmFzcHgKICMgIDEwXzE6
IGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9w
L2NjNjI3MDkxLmFzcHgKICMgIDExXzA6IGh0dHBzOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVz
L2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2ZmNDcxMzI1LmFzcHgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZ2VuX3Rl
eHR1cmVfZm9ybWF0X3RhYmxlLnB5IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9nZW5fdGV4dHVyZV9mb3JtYXRfdGFibGUucHkKaW5kZXgg
OTgxYTc3ZjUxYWIuLjAyYzYwMGJmYWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2dlbl90ZXh0dXJlX2Zvcm1hdF90
YWJsZS5weQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL2dlbl90ZXh0dXJlX2Zvcm1hdF90YWJsZS5weQpAQCAtMTIsMTQgKzEyLDEz
IEBAIGltcG9ydCBqc29uCiBpbXBvcnQgbWF0aAogaW1wb3J0IHBwcmludAogaW1wb3J0IG9zCi1p
bXBvcnQgcmUKIGltcG9ydCBzeXMKIAogc3lzLnBhdGguYXBwZW5kKCcuLi8uLicpCiBpbXBvcnQg
YW5nbGVfZm9ybWF0CiAKIHRlbXBsYXRlX3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW5fY3Bw
ID0gIiIiLy8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KLS8vIEdlbmVyYXRlZCBieSBn
ZW5fdGV4dHVyZV9mb3JtYXRfdGFibGUucHkgdXNpbmcgZGF0YSBmcm9tIHRleHR1cmVfZm9ybWF0
X2RhdGEuanNvbgorLy8gR2VuZXJhdGVkIGJ5IHtzY3JpcHRfbmFtZX0gdXNpbmcgZGF0YSBmcm9t
IHtkYXRhX3NvdXJjZV9uYW1lfQogLy8KIC8vIENvcHlyaWdodCB7Y29weXJpZ2h0X3llYXJ9IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCkBAIC02MCw3ICs1OSw3IEBAIGNvbnN0IEZvcm1hdCAmRm9ybWF0OjpHZXQoR0xlbnVt
IGludGVybmFsRm9ybWF0LCBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2CiAgICAgLy8g
Y2xhbmctZm9ybWF0IG9uCiAKICAgICBVTlJFQUNIQUJMRSgpOwotICAgIHN0YXRpYyBjb25zdCBG
b3JtYXQgZGVmYXVsdEluZm87CisgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgZGVmYXVsdElu
Zm87CiAgICAgcmV0dXJuIGRlZmF1bHRJbmZvOwogfX0KIApAQCAtNjksODEgKzY4LDYgQEAgY29u
c3QgRm9ybWF0ICZGb3JtYXQ6OkdldChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IFJlbmRl
cmVyMTFEZXZpY2VDYXBzICZkZXYKIH19ICAvLyBuYW1lc3BhY2UgcngKICIiIgogCi0jIFRPRE8o
b2V0dWFobyk6IEV4cGFuZCB0aGlzIGNvZGUgc28gdGhhdCBpdCBjb3VsZCBnZW5lcmF0ZSB0aGUg
Z2wgZm9ybWF0IGluZm8gdGFibGVzIGFzIHdlbGwuCi1kZWYgZ2xfZm9ybWF0X2NoYW5uZWxzKGlu
dGVybmFsX2Zvcm1hdCk6Ci0gICAgaWYgaW50ZXJuYWxfZm9ybWF0ID09ICdHTF9CR1I1X0ExX0FO
R0xFWCc6Ci0gICAgICAgIHJldHVybiAnYmdyYScKLSAgICBpZiBpbnRlcm5hbF9mb3JtYXQgPT0g
J0dMX1IxMUZfRzExRl9CMTBGJzoKLSAgICAgICAgcmV0dXJuICdyZ2InCi0gICAgaWYgaW50ZXJu
YWxfZm9ybWF0ID09ICdHTF9SR0I1X0ExJzoKLSAgICAgICAgcmV0dXJuICdyZ2JhJwotICAgIGlm
IGludGVybmFsX2Zvcm1hdC5maW5kKCdHTF9SR0IxMF9BMicpID09IDA6Ci0gICAgICAgIHJldHVy
biAncmdiYScKLQotICAgIGNoYW5uZWxzX3BhdHRlcm4gPSByZS5jb21waWxlKCdHTF8oQ09NUFJF
U1NFRF8pPyhTSUdORURfKT8oRVRDXGRfKT8oW0EtWl0rKScpCi0gICAgbWF0Y2ggPSByZS5zZWFy
Y2goY2hhbm5lbHNfcGF0dGVybiwgaW50ZXJuYWxfZm9ybWF0KQotICAgIGNoYW5uZWxzX3N0cmlu
ZyA9IG1hdGNoLmdyb3VwKDQpCi0KLSAgICBpZiBjaGFubmVsc19zdHJpbmcgPT0gJ0FMUEhBJzoK
LSAgICAgICAgcmV0dXJuICdhJwotICAgIGlmIGNoYW5uZWxzX3N0cmluZyA9PSAnTFVNSU5BTkNF
JzoKLSAgICAgICAgaWYgKGludGVybmFsX2Zvcm1hdC5maW5kKCdBTFBIQScpID49IDApOgotICAg
ICAgICAgICAgcmV0dXJuICdsYScKLSAgICAgICAgcmV0dXJuICdsJwotICAgIGlmIGNoYW5uZWxz
X3N0cmluZyA9PSAnU1JHQic6Ci0gICAgICAgIGlmIChpbnRlcm5hbF9mb3JtYXQuZmluZCgnQUxQ
SEEnKSA+PSAwKToKLSAgICAgICAgICAgIHJldHVybiAncmdiYScKLSAgICAgICAgcmV0dXJuICdy
Z2InCi0gICAgaWYgY2hhbm5lbHNfc3RyaW5nID09ICdERVBUSCc6Ci0gICAgICAgIGlmIChpbnRl
cm5hbF9mb3JtYXQuZmluZCgnU1RFTkNJTCcpID49IDApOgotICAgICAgICAgICAgcmV0dXJuICdk
cycKLSAgICAgICAgcmV0dXJuICdkJwotICAgIGlmIGNoYW5uZWxzX3N0cmluZyA9PSAnU1RFTkNJ
TCc6Ci0gICAgICAgIHJldHVybiAncycKLSAgICByZXR1cm4gY2hhbm5lbHNfc3RyaW5nLmxvd2Vy
KCkKLQotZGVmIGdldF9pbnRlcm5hbF9mb3JtYXRfaW5pdGlhbGl6ZXIoaW50ZXJuYWxfZm9ybWF0
LCBhbmdsZV9mb3JtYXQpOgotICAgIGludGVybmFsX2Zvcm1hdF9pbml0aWFsaXplciA9ICdudWxs
cHRyJwotICAgIGdsX2NoYW5uZWxzID0gZ2xfZm9ybWF0X2NoYW5uZWxzKGludGVybmFsX2Zvcm1h
dCkKLSAgICBnbF9mb3JtYXRfbm9fYWxwaGEgPSBnbF9jaGFubmVscyA9PSAncmdiJyBvciBnbF9j
aGFubmVscyA9PSAnbCcKLSAgICBpZiBnbF9mb3JtYXRfbm9fYWxwaGEgYW5kIGFuZ2xlX2Zvcm1h
dFsnY2hhbm5lbHMnXSA9PSAncmdiYSc6Ci0gICAgICAgIGlmIGFuZ2xlX2Zvcm1hdFsndGV4Rm9y
bWF0J10gPT0gJ0RYR0lfRk9STUFUX0JDMV9VTk9STSc6Ci0gICAgICAgICAgICAjIEJDMSBpcyBh
IHNwZWNpYWwgY2FzZSBzaW5jZSB0aGUgdGV4dHVyZSBkYXRhIGRldGVybWluZXMgd2hldGhlciBl
YWNoIGJsb2NrIGhhcyBhbiBhbHBoYSBjaGFubmVsIG9yIG5vdC4KLSAgICAgICAgICAgICMgVGhp
cyBpZiBzdGF0ZW1lbnQgaXMgaGl0IGJ5IENPTVBSRVNTRURfUkdCX1MzVENfRFhUMSwgd2hpY2gg
aXMgYSBiaXQgb2YgYSBtZXNzLgotICAgICAgICAgICAgIyBUT0RPKG9ldHVhaG8pOiBMb29rIGlu
dG8gd2hldGhlciBDT01QUkVTU0VEX1JHQl9TM1RDX0RYVDEgd29ya3MgcmlnaHQgaW4gZ2VuZXJh
bC4KLSAgICAgICAgICAgICMgUmVmZXJlbmNlOiBodHRwczovL3d3dy5vcGVuZ2wub3JnL3JlZ2lz
dHJ5L3NwZWNzL0VYVC90ZXh0dXJlX2NvbXByZXNzaW9uX3MzdGMudHh0Ci0gICAgICAgICAgICBw
YXNzCi0gICAgICAgIGVsaWYgJ2NvbXBvbmVudFR5cGUnIG5vdCBpbiBhbmdsZV9mb3JtYXQ6Ci0g
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCd3YXJuaW5nOiBpbnRlcm5hbCBmb3JtYXQgaW5p
dGlhbGl6ZXIgY291bGQgbm90IGJlIGdlbmVyYXRlZCBhbmQgbWF5IGJlIG5lZWRlZCBmb3IgJyAr
IGludGVybmFsX2Zvcm1hdCkKLSAgICAgICAgZWxpZiBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5
cGUnXSA9PSAndWludCcgYW5kIGFuZ2xlX2Zvcm1hdFsnYml0cyddWydyZWQnXSA9PSA4OgotICAg
ICAgICAgICAgaW50ZXJuYWxfZm9ybWF0X2luaXRpYWxpemVyID0gJ0luaXRpYWxpemU0Q29tcG9u
ZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweDAxPicKLSAgICAgICAgZWxpZiBh
bmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5cGUnXSA9PSAndW5vcm0nIGFuZCBhbmdsZV9mb3JtYXRb
J2JpdHMnXVsncmVkJ10gPT0gODoKLSAgICAgICAgICAgIGludGVybmFsX2Zvcm1hdF9pbml0aWFs
aXplciA9ICdJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgw
MCwgMHhGRj4nCi0gICAgICAgIGVsaWYgYW5nbGVfZm9ybWF0Wydjb21wb25lbnRUeXBlJ10gPT0g
J3Vub3JtJyBhbmQgYW5nbGVfZm9ybWF0WydiaXRzJ11bJ3JlZCddID09IDE2OgotICAgICAgICAg
ICAgaW50ZXJuYWxfZm9ybWF0X2luaXRpYWxpemVyID0gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0
YTxHTHVieXRlLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCAweEZGRkY+JwotICAgICAgICBlbGlm
IGFuZ2xlX2Zvcm1hdFsnY29tcG9uZW50VHlwZSddID09ICdpbnQnIGFuZCBhbmdsZV9mb3JtYXRb
J2JpdHMnXVsncmVkJ10gPT0gODoKLSAgICAgICAgICAgIGludGVybmFsX2Zvcm1hdF9pbml0aWFs
aXplciA9ICdJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xieXRlLCAweDAwLCAweDAwLCAweDAw
LCAweDAxPicKLSAgICAgICAgZWxpZiBhbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5cGUnXSA9PSAn
c25vcm0nIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsncmVkJ10gPT0gODoKLSAgICAgICAgICAg
IGludGVybmFsX2Zvcm1hdF9pbml0aWFsaXplciA9ICdJbml0aWFsaXplNENvbXBvbmVudERhdGE8
R0xieXRlLCAweDAwLCAweDAwLCAweDAwLCAweDdGPicKLSAgICAgICAgZWxpZiBhbmdsZV9mb3Jt
YXRbJ2NvbXBvbmVudFR5cGUnXSA9PSAnc25vcm0nIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsn
cmVkJ10gPT0gMTY6Ci0gICAgICAgICAgICBpbnRlcm5hbF9mb3JtYXRfaW5pdGlhbGl6ZXIgPSAn
SW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdXNob3J0LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAw
LCAweDdGRkY+JwotICAgICAgICBlbGlmIGFuZ2xlX2Zvcm1hdFsnY29tcG9uZW50VHlwZSddID09
ICdmbG9hdCcgYW5kIGFuZ2xlX2Zvcm1hdFsnYml0cyddWydyZWQnXSA9PSAxNjoKLSAgICAgICAg
ICAgIGludGVybmFsX2Zvcm1hdF9pbml0aWFsaXplciA9ICdJbml0aWFsaXplNENvbXBvbmVudERh
dGE8R0xoYWxmLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCBnbDo6RmxvYXQxNk9uZT4nCi0gICAg
ICAgIGVsaWYgYW5nbGVfZm9ybWF0Wydjb21wb25lbnRUeXBlJ10gPT0gJ3VpbnQnIGFuZCBhbmds
ZV9mb3JtYXRbJ2JpdHMnXVsncmVkJ10gPT0gMTY6Ci0gICAgICAgICAgICBpbnRlcm5hbF9mb3Jt
YXRfaW5pdGlhbGl6ZXIgPSAnSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdXNob3J0LCAweDAw
MDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDE+JwotICAgICAgICBlbGlmIGFuZ2xlX2Zvcm1hdFsn
Y29tcG9uZW50VHlwZSddID09ICdpbnQnIGFuZCBhbmdsZV9mb3JtYXRbJ2JpdHMnXVsncmVkJ10g
PT0gMTY6Ci0gICAgICAgICAgICBpbnRlcm5hbF9mb3JtYXRfaW5pdGlhbGl6ZXIgPSAnSW5pdGlh
bGl6ZTRDb21wb25lbnREYXRhPEdMc2hvcnQsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAw
MT4nCi0gICAgICAgIGVsaWYgYW5nbGVfZm9ybWF0Wydjb21wb25lbnRUeXBlJ10gPT0gJ2Zsb2F0
JyBhbmQgYW5nbGVfZm9ybWF0WydiaXRzJ11bJ3JlZCddID09IDMyOgotICAgICAgICAgICAgaW50
ZXJuYWxfZm9ybWF0X2luaXRpYWxpemVyID0gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGZs
b2F0LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCBnbDo6RmxvYXQzMk9uZT4n
Ci0gICAgICAgIGVsaWYgYW5nbGVfZm9ybWF0Wydjb21wb25lbnRUeXBlJ10gPT0gJ2ludCcgYW5k
IGFuZ2xlX2Zvcm1hdFsnYml0cyddWydyZWQnXSA9PSAzMjoKLSAgICAgICAgICAgIGludGVybmFs
X2Zvcm1hdF9pbml0aWFsaXplciA9ICdJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xpbnQsIDB4
MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDE+JwotICAgICAgICBl
bGlmIGFuZ2xlX2Zvcm1hdFsnY29tcG9uZW50VHlwZSddID09ICd1aW50JyBhbmQgYW5nbGVfZm9y
bWF0WydiaXRzJ11bJ3JlZCddID09IDMyOgotICAgICAgICAgICAgaW50ZXJuYWxfZm9ybWF0X2lu
aXRpYWxpemVyID0gJ0luaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVpbnQsIDB4MDAwMDAwMDAs
IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDE+JwotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignd2FybmluZzogaW50ZXJuYWwgZm9ybWF0IGluaXRp
YWxpemVyIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQgYW5kIG1heSBiZSBuZWVkZWQgZm9yICcgKyBp
bnRlcm5hbF9mb3JtYXQpCi0KLSAgICByZXR1cm4gaW50ZXJuYWxfZm9ybWF0X2luaXRpYWxpemVy
Ci0KIGRlZiBnZXRfc3dpenpsZV9mb3JtYXRfaWQoaW50ZXJuYWxfZm9ybWF0LCBhbmdsZV9mb3Jt
YXQpOgogICAgIGFuZ2xlX2Zvcm1hdF9pZCA9IGFuZ2xlX2Zvcm1hdFsiZm9ybWF0TmFtZSJdCiAg
ICAgaWYgKGludGVybmFsX2Zvcm1hdCA9PSAnR0xfTk9ORScpIG9yIChhbmdsZV9mb3JtYXRfaWQg
PT0gJ05PTkUnKToKQEAgLTIxNiwyMyArMTQwLDcgQEAgZGVmIGdldF9ibGl0X3Nydl9mb3JtYXQo
YW5nbGVfZm9ybWF0KToKIAogCiBmb3JtYXRfZW50cnlfdGVtcGxhdGUgPSAiIiJ7c3BhY2V9e3sK
LXtzcGFjZX0gICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKHtpbnRlcm5hbEZvcm1hdH0sCi17
c3BhY2V9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6e2Zv
cm1hdE5hbWV9LAote3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RleEZvcm1h
dH0sCi17c3BhY2V9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c3J2Rm9ybWF0fSwKLXtz
cGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtydHZGb3JtYXR9LAote3NwYWNlfSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAge2RzdkZvcm1hdH0sCi17c3BhY2V9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7YmxpdFNSVkZvcm1hdH0sCi17c3BhY2V9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7c3dpenpsZUZvcm1hdH0sCi17c3BhY2V9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7aW5pdGlhbGl6ZXJ9LAote3NwYWNlfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGV2aWNlQ2Fwcyk7Ci17c3BhY2V9ICAgIHJldHVybiBpbmZvOwote3NwYWNlfX19
Ci0iIiIKLQotc3BsaXRfZm9ybWF0X2VudHJ5X3RlbXBsYXRlID0gIiIie3NwYWNlfSAgICB7Y29u
ZGl0aW9ufQote3NwYWNlfSAgICB7ewote3NwYWNlfSAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1h
dCBpbmZvKHtpbnRlcm5hbEZvcm1hdH0sCit7c3BhY2V9ICAgIHN0YXRpYyBjb25zdGV4cHIgRm9y
bWF0IGluZm8oe2ludGVybmFsRm9ybWF0fSwKIHtzcGFjZX0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6e2Zvcm1hdE5hbWV9LAoge3NwYWNlfSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0ZXhGb3JtYXR9LAoge3NwYWNlfSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHtzcnZGb3JtYXR9LApAQCAtMjQwLDggKzE0OCwyMiBA
QCBzcGxpdF9mb3JtYXRfZW50cnlfdGVtcGxhdGUgPSAiIiJ7c3BhY2V9ICAgIHtjb25kaXRpb259
CiB7c3BhY2V9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2RzdkZvcm1hdH0sCiB7
c3BhY2V9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2JsaXRTUlZGb3JtYXR9LAog
e3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtzd2l6emxlRm9ybWF0fSwK
LXtzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aW5pdGlhbGl6ZXJ9LAot
e3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOwore3Nw
YWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbml0aWFsaXplcn0pOwore3Nw
YWNlfSAgICByZXR1cm4gaW5mbzsKK3tzcGFjZX19fQorIiIiCisKK3NwbGl0X2Zvcm1hdF9lbnRy
eV90ZW1wbGF0ZSA9ICIiIntzcGFjZX0gICAge2NvbmRpdGlvbn0KK3tzcGFjZX0gICAge3sKK3tz
cGFjZX0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oe2ludGVybmFsRm9ybWF0
fSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZv
cm1hdDo6SUQ6Ontmb3JtYXROYW1lfSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAge3RleEZvcm1hdH0sCit7c3BhY2V9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHtzcnZGb3JtYXR9LAore3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7cnR2Rm9ybWF0fSwKK3tzcGFjZX0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAge2RzdkZvcm1hdH0sCit7c3BhY2V9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHtibGl0U1JWRm9ybWF0fSwKK3tzcGFjZX0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAge3N3aXp6bGVGb3JtYXR9LAore3NwYWNlfSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB7aW5pdGlhbGl6ZXJ9KTsKIHtzcGFjZX0gICAgICAg
IHJldHVybiBpbmZvOwoge3NwYWNlfSAgICB9fQogIiIiCkBAIC0yNjcsNyArMTg5LDggQEAgZGVm
IGpzb25fdG9fdGFibGVfZGF0YShpbnRlcm5hbF9mb3JtYXQsIGZvcm1hdF9uYW1lLCBwcmVmaXgs
IGpzb24pOgogICAgICMgRGVyaXZlZCB2YWx1ZXMuCiAgICAgcGFyc2VkWyJibGl0U1JWRm9ybWF0
Il0gPSBnZXRfYmxpdF9zcnZfZm9ybWF0KHBhcnNlZCkKICAgICBwYXJzZWRbInN3aXp6bGVGb3Jt
YXQiXSA9IGdldF9zd2l6emxlX2Zvcm1hdF9pZChpbnRlcm5hbF9mb3JtYXQsIHBhcnNlZCkKLSAg
ICBwYXJzZWRbImluaXRpYWxpemVyIl0gICA9IGdldF9pbnRlcm5hbF9mb3JtYXRfaW5pdGlhbGl6
ZXIoaW50ZXJuYWxfZm9ybWF0LCBqc29uKQorICAgIHBhcnNlZFsiaW5pdGlhbGl6ZXIiXSAgID0g
YW5nbGVfZm9ybWF0LmdldF9pbnRlcm5hbF9mb3JtYXRfaW5pdGlhbGl6ZXIoCisgICAgICAgIGlu
dGVybmFsX2Zvcm1hdCwgcGFyc2VkWyJmb3JtYXROYW1lIl0pCiAKICAgICBpZiBsZW4ocHJlZml4
KSA+IDA6CiAgICAgICAgIHJldHVybiBzcGxpdF9mb3JtYXRfZW50cnlfdGVtcGxhdGUuZm9ybWF0
KCoqcGFyc2VkKQpAQCAtMzM0LDI2ICsyNTcsMTYgQEAgZGVmIHBhcnNlX2pzb25faW50b19zd2l0
Y2hfYW5nbGVfZm9ybWF0X3N0cmluZyhqc29uX21hcCwganNvbl9kYXRhKToKIAogICAgIHJldHVy
biB0YWJsZV9kYXRhCiAKLWRlZiByZWplY3RfZHVwbGljYXRlX2tleXMocGFpcnMpOgotICAgIGZv
dW5kX2tleXMgPSB7fQotICAgIGZvciBrZXksIHZhbHVlIGluIHBhaXJzOgotICAgICAgICBpZiBr
ZXkgaW4gZm91bmRfa2V5czoKLSAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZHVwbGljYXRl
IGtleTogJXIiICUgKGtleSwpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICBmb3VuZF9rZXlz
W2tleV0gPSB2YWx1ZQotICAgIHJldHVybiBmb3VuZF9rZXlzCi0KIGpzb25fbWFwID0gYW5nbGVf
Zm9ybWF0LmxvYWRfd2l0aF9vdmVycmlkZShvcy5wYXRoLmFic3BhdGgoJ3RleHR1cmVfZm9ybWF0
X21hcC5qc29uJykpCi0KLXdpdGggb3BlbigndGV4dHVyZV9mb3JtYXRfZGF0YS5qc29uJykgYXMg
dGV4dHVyZV9mb3JtYXRfanNvbl9maWxlOgotICAgIHRleHR1cmVfZm9ybWF0X2RhdGEgPSB0ZXh0
dXJlX2Zvcm1hdF9qc29uX2ZpbGUucmVhZCgpCi0gICAgdGV4dHVyZV9mb3JtYXRfanNvbl9maWxl
LmNsb3NlKCkKLSAgICBqc29uX2RhdGEgPSBqc29uLmxvYWRzKHRleHR1cmVfZm9ybWF0X2RhdGEs
IG9iamVjdF9wYWlyc19ob29rPWFuZ2xlX2Zvcm1hdC5yZWplY3RfZHVwbGljYXRlX2tleXMpCi0K
LSAgICBhbmdsZV9mb3JtYXRfY2FzZXMgPSBwYXJzZV9qc29uX2ludG9fc3dpdGNoX2FuZ2xlX2Zv
cm1hdF9zdHJpbmcoanNvbl9tYXAsIGpzb25fZGF0YSkKLSAgICBvdXRwdXRfY3BwID0gdGVtcGxh
dGVfdGV4dHVyZV9mb3JtYXRfdGFibGVfYXV0b2dlbl9jcHAuZm9ybWF0KAotICAgICAgICBjb3B5
cmlnaHRfeWVhcj1kYXRlLnRvZGF5KCkueWVhciwKLSAgICAgICAgYW5nbGVfZm9ybWF0X2luZm9f
Y2FzZXM9YW5nbGVfZm9ybWF0X2Nhc2VzKQotICAgIHdpdGggb3BlbigndGV4dHVyZV9mb3JtYXRf
dGFibGVfYXV0b2dlbi5jcHAnLCAnd3QnKSBhcyBvdXRfZmlsZToKLSAgICAgICAgb3V0X2ZpbGUu
d3JpdGUob3V0cHV0X2NwcCkKLSAgICAgICAgb3V0X2ZpbGUuY2xvc2UoKQorZGF0YV9zb3VyY2Vf
bmFtZSA9ICd0ZXh0dXJlX2Zvcm1hdF9kYXRhLmpzb24nCitqc29uX2RhdGEgPSBhbmdsZV9mb3Jt
YXQubG9hZF9qc29uKGRhdGFfc291cmNlX25hbWUpCisKK2FuZ2xlX2Zvcm1hdF9jYXNlcyA9IHBh
cnNlX2pzb25faW50b19zd2l0Y2hfYW5nbGVfZm9ybWF0X3N0cmluZyhqc29uX21hcCwganNvbl9k
YXRhKQorb3V0cHV0X2NwcCA9IHRlbXBsYXRlX3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW5f
Y3BwLmZvcm1hdCgKKyAgICBzY3JpcHRfbmFtZSA9IHN5cy5hcmd2WzBdLAorICAgIGNvcHlyaWdo
dF95ZWFyID0gZGF0ZS50b2RheSgpLnllYXIsCisgICAgYW5nbGVfZm9ybWF0X2luZm9fY2FzZXMg
PSBhbmdsZV9mb3JtYXRfY2FzZXMsCisgICAgZGF0YV9zb3VyY2VfbmFtZSA9IGRhdGFfc291cmNl
X25hbWUpCit3aXRoIG9wZW4oJ3RleHR1cmVfZm9ybWF0X3RhYmxlX2F1dG9nZW4uY3BwJywgJ3d0
JykgYXMgb3V0X2ZpbGU6CisgICAgb3V0X2ZpbGUud3JpdGUob3V0cHV0X2NwcCkKKyAgICBvdXRf
ZmlsZS5jbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjEx
X3V0aWxzLmNwcAppbmRleCBlZGM2YTQxYTg5OS4uMGJlNDcwMzMzYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVu
ZGVyZXIxMV91dGlscy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxzLmNwcApAQCAtMjEsNyArMjEs
OSBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJUYXJnZXQx
MS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1h
dF90YWJsZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9GcmFtZWJ1ZmZlckQz
RC5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9Xb3JrYXJvdW5kc0QzRC5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2RyaXZlcl91dGlscy5oIgorI2luY2x1ZGUgInBs
YXRmb3JtL1BsYXRmb3JtLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV29ya2Fyb3VuZHNEM0QuaCIK
IAogbmFtZXNwYWNlIHJ4CiB7CkBAIC01OSw3ICs2MSw3IEBAIGNsYXNzIERYR0lTdXBwb3J0SGVs
cGVyIDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogZmluZCBvdXQgd2h5IHdlIGZhaWwg
dGhpcyBjYWxsIHNvbWV0aW1lcyBpbiBGTDlfMwotICAgICAgICAgICAgICAgIC8vIEVSUigiRXJy
b3IgY2hlY2tpbmcgZm9ybWF0IHN1cHBvcnQgZm9yIGZvcm1hdCAweCV4IiwgZHhnaUZvcm1hdCk7
CisgICAgICAgICAgICAgICAgLy8gRVJSKCkgPDwgIkVycm9yIGNoZWNraW5nIGZvcm1hdCBzdXBw
b3J0IGZvciBmb3JtYXQgMHgiIDw8IHN0ZDo6aGV4IDw8IGR4Z2lGb3JtYXQ7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIApAQCAtNzEsNyArNzMsNyBAQCBjbGFzcyBEWEdJU3VwcG9ydEhlbHBl
ciA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIEQzRF9GRUFUVVJFX0xFVkVMIG1GZWF0dXJlTGV2
ZWw7CiB9OwogCi1nbDo6VGV4dHVyZUNhcHMgR2VuZXJhdGVUZXh0dXJlRm9ybWF0Q2FwcyhHTGlu
dCBtYXhDbGllbnRWZXJzaW9uLAorZ2w6OlRleHR1cmVDYXBzIEdlbmVyYXRlVGV4dHVyZUZvcm1h
dENhcHMoZ2w6OlZlcnNpb24gbWF4Q2xpZW50VmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMURldmljZSAqZGV2aWNlLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVuZGVyZXIxMURl
dmljZUNhcHMgJnJlbmRlcmVyMTFEZXZpY2VDYXBzKQpAQCAtODcsNyArODksNyBAQCBnbDo6VGV4
dHVyZUNhcHMgR2VuZXJhdGVUZXh0dXJlRm9ybWF0Q2FwcyhHTGludCBtYXhDbGllbnRWZXJzaW9u
LAogICAgIGlmIChpbnRlcm5hbEZvcm1hdEluZm8uZGVwdGhCaXRzID09IDAgJiYgaW50ZXJuYWxG
b3JtYXRJbmZvLnN0ZW5jaWxCaXRzID09IDApCiAgICAgewogICAgICAgICB0ZXhTdXBwb3J0TWFz
ayB8PSBEM0QxMV9GT1JNQVRfU1VQUE9SVF9URVhUVVJFQ1VCRTsKLSAgICAgICAgaWYgKG1heENs
aWVudFZlcnNpb24gPiAyKQorICAgICAgICBpZiAobWF4Q2xpZW50VmVyc2lvbi5tYWpvciA+IDIp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHRleFN1cHBvcnRNYXNrIHw9IEQzRDExX0ZPUk1BVF9T
VVBQT1JUX1RFWFRVUkUzRDsKICAgICAgICAgfQpAQCAtODI4LDYgKzgzMCw4NCBAQCBzaXplX3Qg
R2V0TWF4aW11bVBpeGVsVGV4dHVyZVVuaXRzKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZl
bCkKICAgICB9CiB9CiAKK3N0ZDo6YXJyYXk8R0x1aW50LCAzPiBHZXRNYXhDb21wdXRlV29ya0dy
b3VwQ291bnQoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQoreworICAgIHN3aXRjaCAo
ZmVhdHVyZUxldmVsKQorICAgIHsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8x
OgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgICAgICByZXR1
cm4ge3tEM0QxMV9DU19ESVNQQVRDSF9NQVhfVEhSRUFEX0dST1VQU19QRVJfRElNRU5TSU9OLAor
ICAgICAgICAgICAgICAgICAgICAgRDNEMTFfQ1NfRElTUEFUQ0hfTUFYX1RIUkVBRF9HUk9VUFNf
UEVSX0RJTUVOU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgIEQzRDExX0NTX0RJU1BBVENIX01B
WF9USFJFQURfR1JPVVBTX1BFUl9ESU1FTlNJT059fTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHt7MCwgMCwgMH19OworICAgIH0KK30K
Kworc3RkOjphcnJheTxHTHVpbnQsIDM+IEdldE1heENvbXB1dGVXb3JrR3JvdXBTaXplKEQzRF9G
RUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCkKK3sKKyAgICBzd2l0Y2ggKGZlYXR1cmVMZXZlbCkK
KyAgICB7CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMToKKyAgICAgICAgY2Fz
ZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8wOgorICAgICAgICAgICAgcmV0dXJuIHt7RDNEMTFfQ1Nf
VEhSRUFEX0dST1VQX01BWF9YLCBEM0QxMV9DU19USFJFQURfR1JPVVBfTUFYX1ksCisgICAgICAg
ICAgICAgICAgICAgICBEM0QxMV9DU19USFJFQURfR1JPVVBfTUFYX1p9fTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHt7MCwgMCwgMH19
OworICAgIH0KK30KKworc2l6ZV90IEdldE1heENvbXB1dGVXb3JrR3JvdXBJbnZvY2F0aW9ucyhE
M0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCit7CisgICAgc3dpdGNoIChmZWF0dXJlTGV2
ZWwpCisgICAgeworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6CisgICAgICAg
IGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgICAgICAgIHJldHVybiBEM0QxMV9D
U19USFJFQURfR1JPVVBfTUFYX1RIUkVBRFNfUEVSX0dST1VQOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCitzaXplX3QgR2V0TWF4aW11bUNvbXB1
dGVVbmlmb3JtVmVjdG9ycyhEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCit7CisgICAg
c3dpdGNoIChmZWF0dXJlTGV2ZWwpCisgICAgeworICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xF
VkVMXzExXzE6CisgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgICAg
ICAgIHJldHVybiBEM0QxMV9SRVFfQ09OU1RBTlRfQlVGRkVSX0VMRU1FTlRfQ09VTlQ7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3NpemVfdCBH
ZXRNYXhpbXVtQ29tcHV0ZVVuaWZvcm1CbG9ja3MoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxl
dmVsKQoreworICAgIHN3aXRjaCAoZmVhdHVyZUxldmVsKQorICAgIHsKKyAgICAgICAgY2FzZSBE
M0RfRkVBVFVSRV9MRVZFTF8xMV8xOgorICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzEx
XzA6CisgICAgICAgICAgICByZXR1cm4gRDNEMTFfQ09NTU9OU0hBREVSX0NPTlNUQU5UX0JVRkZF
Ul9BUElfU0xPVF9DT1VOVCAtCisgICAgICAgICAgICAgICAgICAgZDNkMTE6OlJFU0VSVkVEX0NP
TlNUQU5UX0JVRkZFUl9TTE9UX0NPVU5UOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorfQorCitzaXplX3QgR2V0TWF4aW11bUNvbXB1dGVUZXh0dXJlVW5p
dHMoRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKQoreworICAgIHN3aXRjaCAoZmVhdHVy
ZUxldmVsKQorICAgIHsKKyAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMV8xOgorICAg
ICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzA6CisgICAgICAgICAgICByZXR1cm4gRDNE
MTFfQ09NTU9OU0hBREVSX1NBTVBMRVJfU0xPVF9DT1VOVDsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwogaW50IEdldE1pbmltdW1UZXhlbE9mZnNl
dChEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCiB7CiAgICAgc3dpdGNoIChmZWF0dXJl
TGV2ZWwpCkBAIC05NzgsNiArMTA1OCwxOCBAQCBzaXplX3QgR2V0TWF4aW11bVN0cmVhbU91dHB1
dFNlcGFyYXRlQ29tcG9uZW50cyhEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCiAgICAg
fQogfQogCitJbnRlbERyaXZlclZlcnNpb24gR2V0SW50ZWxEcml2ZXJWZXJzaW9uKGNvbnN0IE9w
dGlvbmFsPExBUkdFX0lOVEVHRVI+IGRyaXZlclZlcnNpb24pCit7CisgICAgaWYgKCFkcml2ZXJW
ZXJzaW9uLnZhbGlkKCkpCisgICAgICAgIHJldHVybiBJbnRlbERyaXZlclZlcnNpb24oMCk7CisK
KyAgICAvLyBBY2NvcmRpbmcgdG8gaHR0cDovL3d3dy5pbnRlbC5jb20vY29udGVudC93d3cvdXMv
ZW4vc3VwcG9ydC9ncmFwaGljcy1kcml2ZXJzLzAwMDAwNTY1NC5odG1sLAorICAgIC8vIG9ubHkg
dGhlIGZvdXJ0aCBwYXJ0IGlzIG5lY2Vzc2FyeSBzaW5jZSBpdCBzdGFuZHMgZm9yIHRoZSBkcml2
ZXIgc3BlY2lmaWMgdW5pcXVlIHZlcnNpb24KKyAgICAvLyBudW1iZXIuCisgICAgV09SRCBwYXJ0
ID0gTE9XT1JEKGRyaXZlclZlcnNpb24udmFsdWUoKS5Mb3dQYXJ0KTsKKyAgICByZXR1cm4gSW50
ZWxEcml2ZXJWZXJzaW9uKHBhcnQpOworfQorCiB9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAK
IHVuc2lnbmVkIGludCBHZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0b3JzKEQzRF9GRUFUVVJF
X0xFVkVMIGZlYXR1cmVMZXZlbCkKQEAgLTEwMjIsMjQgKzExMTQsMjUgQEAgdW5zaWduZWQgaW50
IEdldFJlc2VydmVkRnJhZ21lbnRVbmlmb3JtVmVjdG9ycyhEM0RfRkVBVFVSRV9MRVZFTCBmZWF0
dXJlTGV2ZWwpCiAgICAgfQogfQogCi1HTGludCBHZXRNYXhpbXVtQ2xpZW50VmVyc2lvbihEM0Rf
RkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCitnbDo6VmVyc2lvbiBHZXRNYXhpbXVtQ2xpZW50
VmVyc2lvbihEM0RfRkVBVFVSRV9MRVZFTCBmZWF0dXJlTGV2ZWwpCiB7CiAgICAgc3dpdGNoIChm
ZWF0dXJlTGV2ZWwpCiAgICAgewogICAgICAgICBjYXNlIEQzRF9GRUFUVVJFX0xFVkVMXzExXzE6
CiAgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfMTFfMDoKKyAgICAgICAgICAgIHJldHVy
biBnbDo6VmVyc2lvbigzLCAxKTsKICAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8x
OgotICAgICAgICAgICAgcmV0dXJuIDM7CisgICAgICAgICAgICByZXR1cm4gZ2w6OlZlcnNpb24o
MywgMCk7CiAKICAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZFTF8xMF8wOgogICAgICAgICBj
YXNlIEQzRF9GRUFUVVJFX0xFVkVMXzlfMzoKICAgICAgICAgY2FzZSBEM0RfRkVBVFVSRV9MRVZF
TF85XzI6CiAgICAgICAgIGNhc2UgRDNEX0ZFQVRVUkVfTEVWRUxfOV8xOgotICAgICAgICAgICAg
cmV0dXJuIDI7CisgICAgICAgICAgICByZXR1cm4gZ2w6OlZlcnNpb24oMiwgMCk7CiAKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBnbDo6VmVyc2lvbigwLCAwKTsKICAgICB9CiB9CiAK
QEAgLTEwNTEsNyArMTE0NCw4IEBAIHZvaWQgR2VuZXJhdGVDYXBzKElEM0QxMURldmljZSAqZGV2
aWNlLCBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VDb250ZXh0LCBjb25zCiAgICAgY29uc3Qg
Z2w6OkZvcm1hdFNldCAmYWxsRm9ybWF0cyA9IGdsOjpHZXRBbGxTaXplZEludGVybmFsRm9ybWF0
cygpOwogICAgIGZvciAoZ2w6OkZvcm1hdFNldDo6Y29uc3RfaXRlcmF0b3IgaW50ZXJuYWxGb3Jt
YXQgPSBhbGxGb3JtYXRzLmJlZ2luKCk7IGludGVybmFsRm9ybWF0ICE9IGFsbEZvcm1hdHMuZW5k
KCk7ICsraW50ZXJuYWxGb3JtYXQpCiAgICAgewotICAgICAgICBnbDo6VGV4dHVyZUNhcHMgdGV4
dHVyZUNhcHMgPSBHZW5lcmF0ZVRleHR1cmVGb3JtYXRDYXBzKEdldE1heGltdW1DbGllbnRWZXJz
aW9uKGZlYXR1cmVMZXZlbCksICppbnRlcm5hbEZvcm1hdCwgZGV2aWNlLCByZW5kZXJlcjExRGV2
aWNlQ2Fwcyk7CisgICAgICAgIGdsOjpUZXh0dXJlQ2FwcyB0ZXh0dXJlQ2FwcyA9IEdlbmVyYXRl
VGV4dHVyZUZvcm1hdENhcHMoCisgICAgICAgICAgICBHZXRNYXhpbXVtQ2xpZW50VmVyc2lvbihm
ZWF0dXJlTGV2ZWwpLCAqaW50ZXJuYWxGb3JtYXQsIGRldmljZSwgcmVuZGVyZXIxMURldmljZUNh
cHMpOwogICAgICAgICB0ZXh0dXJlQ2Fwc01hcC0+aW5zZXJ0KCppbnRlcm5hbEZvcm1hdCwgdGV4
dHVyZUNhcHMpOwogCiAgICAgICAgIG1heFNhbXBsZXMgPSBzdGQ6Om1heChtYXhTYW1wbGVzLCB0
ZXh0dXJlQ2Fwcy5nZXRNYXhTYW1wbGVzKCkpOwpAQCAtMTEzMSw2ICsxMjI1LDE0IEBAIHZvaWQg
R2VuZXJhdGVDYXBzKElEM0QxMURldmljZSAqZGV2aWNlLCBJRDNEMTFEZXZpY2VDb250ZXh0ICpk
ZXZpY2VDb250ZXh0LCBjb25zCiAgICAgY2Fwcy0+bWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMg
PQogICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KEdldE1heGltdW1WZXJ0ZXhUZXh0dXJlVW5p
dHMoZmVhdHVyZUxldmVsKSk7CiAKKyAgICAvLyBWZXJ0ZXggQXR0cmlidXRlIEJpbmRpbmdzIGFy
ZSBlbXVsYXRlZCBvbiBEM0QxMS4KKyAgICBjYXBzLT5tYXhWZXJ0ZXhBdHRyaWJCaW5kaW5ncyA9
IGNhcHMtPm1heFZlcnRleEF0dHJpYnV0ZXM7CisgICAgLy8gRXhwZXJpbWVudGFsIHRlc3Rpbmcg
Y29uZmlybWVkIHRoZXJlIGlzIG5vIGV4cGxpY2l0IGxpbWl0IG9uIG1heGltdW0gYnVmZmVyIG9m
ZnNldCBpbiBEM0QxMS4KKyAgICBjYXBzLT5tYXhWZXJ0ZXhBdHRyaWJSZWxhdGl2ZU9mZnNldCA9
IHN0ZDo6bnVtZXJpY19saW1pdHM8R0xpbnQ+OjptYXgoKTsKKyAgICAvLyBFeHBlcmltZW50YWwg
dGVzdGluZyBjb25maXJtZWQgMjA0OCBpcyB0aGUgbWF4aW11bSBzdHJpZGUgdGhhdCBEM0QxMSBj
YW4gc3VwcG9ydCBvbiBhbGwKKyAgICAvLyBwbGF0Zm9ybXMuCisgICAgY2Fwcy0+bWF4VmVydGV4
QXR0cmliU3RyaWRlID0gMjA0ODsKKwogICAgIC8vIEZyYWdtZW50IHNoYWRlciBsaW1pdHMKICAg
ICBjYXBzLT5tYXhGcmFnbWVudFVuaWZvcm1Db21wb25lbnRzID0KICAgICAgICAgc3RhdGljX2Nh
c3Q8R0x1aW50PihHZXRNYXhpbXVtUGl4ZWxVbmlmb3JtVmVjdG9ycyhmZWF0dXJlTGV2ZWwpKSAq
IDQ7CkBAIC0xMTQ0LDEwICsxMjQ2LDI1IEBAIHZvaWQgR2VuZXJhdGVDYXBzKElEM0QxMURldmlj
ZSAqZGV2aWNlLCBJRDNEMTFEZXZpY2VDb250ZXh0ICpkZXZpY2VDb250ZXh0LCBjb25zCiAgICAg
Y2Fwcy0+bWluUHJvZ3JhbVRleGVsT2Zmc2V0ID0gR2V0TWluaW11bVRleGVsT2Zmc2V0KGZlYXR1
cmVMZXZlbCk7CiAgICAgY2Fwcy0+bWF4UHJvZ3JhbVRleGVsT2Zmc2V0ID0gR2V0TWF4aW11bVRl
eGVsT2Zmc2V0KGZlYXR1cmVMZXZlbCk7CiAKKyAgICAvLyBDb21wdXRlIHNoYWRlciBsaW1pdHMK
KyAgICBjYXBzLT5tYXhDb21wdXRlV29ya0dyb3VwQ291bnQgPSBHZXRNYXhDb21wdXRlV29ya0dy
b3VwQ291bnQoZmVhdHVyZUxldmVsKTsKKyAgICBjYXBzLT5tYXhDb21wdXRlV29ya0dyb3VwU2l6
ZSAgPSBHZXRNYXhDb21wdXRlV29ya0dyb3VwU2l6ZShmZWF0dXJlTGV2ZWwpOworICAgIGNhcHMt
Pm1heENvbXB1dGVXb3JrR3JvdXBJbnZvY2F0aW9ucyA9CisgICAgICAgIHN0YXRpY19jYXN0PEdM
dWludD4oR2V0TWF4Q29tcHV0ZVdvcmtHcm91cEludm9jYXRpb25zKGZlYXR1cmVMZXZlbCkpOwor
ICAgIGNhcHMtPm1heENvbXB1dGVVbmlmb3JtQ29tcG9uZW50cyA9CisgICAgICAgIHN0YXRpY19j
YXN0PEdMdWludD4oR2V0TWF4aW11bUNvbXB1dGVVbmlmb3JtVmVjdG9ycyhmZWF0dXJlTGV2ZWwp
KSAqIDQ7CisgICAgY2Fwcy0+bWF4Q29tcHV0ZVVuaWZvcm1CbG9ja3MgPQorICAgICAgICBzdGF0
aWNfY2FzdDxHTHVpbnQ+KEdldE1heGltdW1Db21wdXRlVW5pZm9ybUJsb2NrcyhmZWF0dXJlTGV2
ZWwpKTsKKyAgICBjYXBzLT5tYXhDb21wdXRlVGV4dHVyZUltYWdlVW5pdHMgPQorICAgICAgICBz
dGF0aWNfY2FzdDxHTHVpbnQ+KEdldE1heGltdW1Db21wdXRlVGV4dHVyZVVuaXRzKGZlYXR1cmVM
ZXZlbCkpOworCiAgICAgLy8gQWdncmVnYXRlIHNoYWRlciBsaW1pdHMKICAgICBjYXBzLT5tYXhV
bmlmb3JtQnVmZmVyQmluZGluZ3MgPSBjYXBzLT5tYXhWZXJ0ZXhVbmlmb3JtQmxvY2tzICsgY2Fw
cy0+bWF4RnJhZ21lbnRVbmlmb3JtQmxvY2tzOwogICAgIGNhcHMtPm1heFVuaWZvcm1CbG9ja1Np
emUgPSBHZXRNYXhpbXVtQ29uc3RhbnRCdWZmZXJTaXplKGZlYXR1cmVMZXZlbCk7CiAKKyAgICAv
LyBUT0RPKG9ldHVhaG8pOiBHZXQgYSBtb3JlIGFjY3VyYXRlIGxpbWl0LiBGb3Igbm93IHVzaW5n
IHRoZSBtaW5pbXVtIHJlcXVpcmVtZW50IGZvciBHTEVTIDMuMS4KKyAgICBjYXBzLT5tYXhVbmlm
b3JtTG9jYXRpb25zID0gMTAyNDsKKwogICAgIC8vIFdpdGggRGlyZWN0WCAxMS4xLCBjb25zdGFu
dCBidWZmZXIgb2Zmc2V0IGFuZCBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNiBjb25zdGFu
dHMgb2YgMTYgYnl0ZXMgZWFjaC4KICAgICAvLyBodHRwczovL21zZG4ubWljcm9zb2Z0LmNvbS9l
bi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9oaDQwNDY0OSUyOHY9dnMuODUlMjkuYXNweAog
ICAgIC8vIFdpdGggRGlyZWN0WCAxMS4wLCB3ZSBlbXVsYXRlIFVCTyBvZmZzZXRzIHVzaW5nIGNv
cGllcyBvZiByYW5nZXMgb2YgdGhlIFVCTyBob3dldmVyCkBAIC0xMTU5LDYgKzEyNzYsOSBAQCB2
b2lkIEdlbmVyYXRlQ2FwcyhJRDNEMTFEZXZpY2UgKmRldmljZSwgSUQzRDExRGV2aWNlQ29udGV4
dCAqZGV2aWNlQ29udGV4dCwgY29ucwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTGludDY0PihjYXBzLT5tYXhWZXJ0ZXhVbmlmb3Jt
Q29tcG9uZW50cyk7CiAgICAgY2Fwcy0+bWF4Q29tYmluZWRGcmFnbWVudFVuaWZvcm1Db21wb25l
bnRzID0gKHN0YXRpY19jYXN0PEdMaW50NjQ+KGNhcHMtPm1heEZyYWdtZW50VW5pZm9ybUJsb2Nr
cykgKiBzdGF0aWNfY2FzdDxHTGludDY0PihjYXBzLT5tYXhVbmlmb3JtQmxvY2tTaXplIC8gNCkp
ICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxHTGludDY0PihjYXBzLT5tYXhGcmFnbWVudFVuaWZvcm1Db21wb25lbnRzKTsKKyAg
ICBjYXBzLT5tYXhDb21iaW5lZENvbXB1dGVVbmlmb3JtQ29tcG9uZW50cyA9CisgICAgICAgIHN0
YXRpY19jYXN0PEdMdWludD4oY2Fwcy0+bWF4Q29tcHV0ZVVuaWZvcm1CbG9ja3MgKiAoY2Fwcy0+
bWF4VW5pZm9ybUJsb2NrU2l6ZSAvIDQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
YXBzLT5tYXhDb21wdXRlVW5pZm9ybUNvbXBvbmVudHMpOwogICAgIGNhcHMtPm1heFZhcnlpbmdD
b21wb25lbnRzID0KICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihHZXRNYXhpbXVtVmVydGV4
T3V0cHV0VmVjdG9ycyhmZWF0dXJlTGV2ZWwpKSAqIDQ7CiAgICAgY2Fwcy0+bWF4VmFyeWluZ1Zl
Y3RvcnMgICAgICAgICAgICA9IHN0YXRpY19jYXN0PEdMdWludD4oR2V0TWF4aW11bVZlcnRleE91
dHB1dFZlY3RvcnMoZmVhdHVyZUxldmVsKSk7CkBAIC0xNTc5LDYgKzE2OTksMjkgQEAgRDNEMTFf
UVVFUlkgQ29udmVydFF1ZXJ5VHlwZShHTGVudW0gcXVlcnlUeXBlKQogICAgIH0KIH0KIAorLy8g
R2V0IHRoZSBEM0QxMSB3cml0ZSBtYXNrIGNvdmVyaW5nIGFsbCBjb2xvciBjaGFubmVscyBvZiBh
IGdpdmVuIGZvcm1hdAorVUlOVDggR2V0Q29sb3JNYXNrKGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1h
dCAqZm9ybWF0SW5mbykKK3sKKyAgICBVSU5UOCBtYXNrID0gMDsKKyAgICBpZiAoZm9ybWF0SW5m
by0+cmVkQml0cyA+IDApCisgICAgeworICAgICAgICBtYXNrIHw9IEQzRDExX0NPTE9SX1dSSVRF
X0VOQUJMRV9SRUQ7CisgICAgfQorICAgIGlmIChmb3JtYXRJbmZvLT5ncmVlbkJpdHMgPiAwKQor
ICAgIHsKKyAgICAgICAgbWFzayB8PSBEM0QxMV9DT0xPUl9XUklURV9FTkFCTEVfR1JFRU47Cisg
ICAgfQorICAgIGlmIChmb3JtYXRJbmZvLT5ibHVlQml0cyA+IDApCisgICAgeworICAgICAgICBt
YXNrIHw9IEQzRDExX0NPTE9SX1dSSVRFX0VOQUJMRV9CTFVFOworICAgIH0KKyAgICBpZiAoZm9y
bWF0SW5mby0+YWxwaGFCaXRzID4gMCkKKyAgICB7CisgICAgICAgIG1hc2sgfD0gRDNEMTFfQ09M
T1JfV1JJVEVfRU5BQkxFX0FMUEhBOworICAgIH0KKyAgICByZXR1cm4gbWFzazsKK30KKwogfSAg
Ly8gbmFtZXNwYWNlIGdsX2QzZDExCiAKIG5hbWVzcGFjZSBkM2QxMQpAQCAtMTc5MCw3ICsxOTMz
LDYgQEAgSUQzRDExSW5wdXRMYXlvdXQgKkxhenlJbnB1dExheW91dDo6cmVzb2x2ZShJRDNEMTFE
ZXZpY2UgKmRldmljZSkKICAgICAgICAgICAgIGRldmljZS0+Q3JlYXRlSW5wdXRMYXlvdXQoJm1J
bnB1dERlc2NbMF0sIHN0YXRpY19jYXN0PFVJTlQ+KG1JbnB1dERlc2Muc2l6ZSgpKSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUJ5dGVDb2RlLCBtQnl0ZUNvZGVMZW4s
ICZtUmVzb3VyY2UpOwogICAgICAgICBBU1NFUlQoU1VDQ0VFREVEKHJlc3VsdCkpOwotICAgICAg
ICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHJlc3VsdCk7CiAgICAgICAgIGQzZDExOjpTZXRE
ZWJ1Z05hbWUobVJlc291cmNlLCBtRGVidWdOYW1lKTsKICAgICB9CiAKQEAgLTE4MTAsMjYgKzE5
NTIsMjUgQEAgSUQzRDExQmxlbmRTdGF0ZSAqTGF6eUJsZW5kU3RhdGU6OnJlc29sdmUoSUQzRDEx
RGV2aWNlICpkZXZpY2UpCiAgICAgewogICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IGRldmljZS0+
Q3JlYXRlQmxlbmRTdGF0ZSgmbURlc2MsICZtUmVzb3VyY2UpOwogICAgICAgICBBU1NFUlQoU1VD
Q0VFREVEKHJlc3VsdCkpOwotICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHJlc3Vs
dCk7CiAgICAgICAgIGQzZDExOjpTZXREZWJ1Z05hbWUobVJlc291cmNlLCBtRGVidWdOYW1lKTsK
ICAgICB9CiAKICAgICByZXR1cm4gbVJlc291cmNlOwogfQogCi1Xb3JrYXJvdW5kc0QzRCBHZW5l
cmF0ZVdvcmthcm91bmRzKGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZkZXZpY2VDYXBzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBEWEdJX0FEQVBURVJfREVT
QyAmYWRhcHRlckRlc2MpCithbmdsZTo6V29ya2Fyb3VuZHNEM0QgR2VuZXJhdGVXb3JrYXJvdW5k
cyhjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2FwcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERYR0lfQURBUFRFUl9ERVNDICZhZGFw
dGVyRGVzYykKIHsKICAgICBib29sIGlzOV8zID0gKGRldmljZUNhcHMuZmVhdHVyZUxldmVsIDw9
IEQzRF9GRUFUVVJFX0xFVkVMXzlfMyk7CiAKLSAgICBXb3JrYXJvdW5kc0QzRCB3b3JrYXJvdW5k
czsKKyAgICBhbmdsZTo6V29ya2Fyb3VuZHNEM0Qgd29ya2Fyb3VuZHM7CiAgICAgd29ya2Fyb3Vu
ZHMubXJ0UGVyZldvcmthcm91bmQgPSB0cnVlOwogICAgIHdvcmthcm91bmRzLnNldERhdGFGYXN0
ZXJUaGFuSW1hZ2VVcGxvYWQgPSB0cnVlOwogICAgIHdvcmthcm91bmRzLnplcm9NYXhMb2RXb3Jr
YXJvdW5kICAgICAgICAgICAgID0gaXM5XzM7CiAgICAgd29ya2Fyb3VuZHMudXNlSW5zdGFuY2Vk
UG9pbnRTcHJpdGVFbXVsYXRpb24gPSBpczlfMzsKIAogICAgIC8vIFRPRE8oam1hZGlsbCk6IE5h
cnJvdyBwcm9ibGVtYXRpYyBkcml2ZXIgcmFuZ2UuCi0gICAgaWYgKGFkYXB0ZXJEZXNjLlZlbmRv
cklkID09IFZFTkRPUl9JRF9OVklESUEpCisgICAgaWYgKElzTnZpZGlhKGFkYXB0ZXJEZXNjLlZl
bmRvcklkKSkKICAgICB7CiAgICAgICAgIGlmIChkZXZpY2VDYXBzLmRyaXZlclZlcnNpb24udmFs
aWQoKSkKICAgICAgICAgewpAQCAtMTg0OCwxNiArMTk4OSw0MSBAQCBXb3JrYXJvdW5kc0QzRCBH
ZW5lcmF0ZVdvcmthcm91bmRzKGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZkZXZpY2VDYXBz
LAogICAgIC8vIFRPRE8oam1hZGlsbCk6IERpc2FibGUgd29ya2Fyb3VuZCB3aGVuIHdlIGhhdmUg
YSBmaXhlZCBjb21waWxlciBETEwuCiAgICAgd29ya2Fyb3VuZHMuZXhwYW5kSW50ZWdlclBvd0V4
cHJlc3Npb25zID0gdHJ1ZTsKIAotICAgIHdvcmthcm91bmRzLmZsdXNoQWZ0ZXJFbmRpbmdUcmFu
c2Zvcm1GZWVkYmFjayA9IChhZGFwdGVyRGVzYy5WZW5kb3JJZCA9PSBWRU5ET1JfSURfTlZJRElB
KTsKLSAgICB3b3JrYXJvdW5kcy5nZXREaW1lbnNpb25zSWdub3Jlc0Jhc2VMZXZlbCAgICAgPSAo
YWRhcHRlckRlc2MuVmVuZG9ySWQgPT0gVkVORE9SX0lEX05WSURJQSk7CisgICAgd29ya2Fyb3Vu
ZHMuZmx1c2hBZnRlckVuZGluZ1RyYW5zZm9ybUZlZWRiYWNrID0gSXNOdmlkaWEoYWRhcHRlckRl
c2MuVmVuZG9ySWQpOworICAgIHdvcmthcm91bmRzLmdldERpbWVuc2lvbnNJZ25vcmVzQmFzZUxl
dmVsICAgICA9IElzTnZpZGlhKGFkYXB0ZXJEZXNjLlZlbmRvcklkKTsKIAotICAgIHdvcmthcm91
bmRzLnByZUFkZFRleGVsRmV0Y2hPZmZzZXRzID0gKGFkYXB0ZXJEZXNjLlZlbmRvcklkID09IFZF
TkRPUl9JRF9JTlRFTCk7Ci0gICAgd29ya2Fyb3VuZHMuZGlzYWJsZUI1RzZSNVN1cHBvcnQgICAg
PSAoYWRhcHRlckRlc2MuVmVuZG9ySWQgPT0gVkVORE9SX0lEX0lOVEVMKTsKLSAgICB3b3JrYXJv
dW5kcy5yZXdyaXRlVW5hcnlNaW51c09wZXJhdG9yID0gKGFkYXB0ZXJEZXNjLlZlbmRvcklkID09
IFZFTkRPUl9JRF9JTlRFTCk7Ci0gICAgd29ya2Fyb3VuZHMuZW11bGF0ZUlzbmFuRmxvYXQgICAg
ICAgICA9IChhZGFwdGVyRGVzYy5WZW5kb3JJZCA9PSBWRU5ET1JfSURfSU5URUwpOworICAgIGlm
IChJc0ludGVsKGFkYXB0ZXJEZXNjLlZlbmRvcklkKSkKKyAgICB7CisgICAgICAgIHdvcmthcm91
bmRzLnByZUFkZFRleGVsRmV0Y2hPZmZzZXRzICAgICAgICAgICA9IHRydWU7CisgICAgICAgIHdv
cmthcm91bmRzLnVzZVN5c3RlbU1lbW9yeUZvckNvbnN0YW50QnVmZmVycyA9IHRydWU7CisgICAg
ICAgIHdvcmthcm91bmRzLmRpc2FibGVCNUc2UjVTdXBwb3J0ID0KKyAgICAgICAgICAgIGQzZDEx
X2dsOjpHZXRJbnRlbERyaXZlclZlcnNpb24oZGV2aWNlQ2Fwcy5kcml2ZXJWZXJzaW9uKSA8IElu
dGVsRHJpdmVyVmVyc2lvbig0NTM5KTsKKyAgICAgICAgaWYgKElzU2t5bGFrZShhZGFwdGVyRGVz
Yy5EZXZpY2VJZCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdvcmthcm91bmRzLmNhbGxDbGVh
clR3aWNlT25TbWFsbFRhcmdldCA9IHRydWU7CisgICAgICAgICAgICB3b3JrYXJvdW5kcy5lbXVs
YXRlSXNuYW5GbG9hdCA9CisgICAgICAgICAgICAgICAgZDNkMTFfZ2w6OkdldEludGVsRHJpdmVy
VmVyc2lvbihkZXZpY2VDYXBzLmRyaXZlclZlcnNpb24pIDwKKyAgICAgICAgICAgICAgICBJbnRl
bERyaXZlclZlcnNpb24oNDU0Mik7CisgICAgICAgIH0KKyAgICAgICAgd29ya2Fyb3VuZHMucmV3
cml0ZVVuYXJ5TWludXNPcGVyYXRvciA9CisgICAgICAgICAgICBJc0Jyb2Fkd2VsbChhZGFwdGVy
RGVzYy5EZXZpY2VJZCkgfHwgSXNIYXN3ZWxsKGFkYXB0ZXJEZXNjLkRldmljZUlkKTsKKyAgICB9
CiAKICAgICAvLyBUT0RPKGptYWRpbGwpOiBEaXNhYmxlIHdoZW4gd2UgaGF2ZSBhIGZpeGVkIGRy
aXZlciB2ZXJzaW9uLgotICAgIHdvcmthcm91bmRzLmVtdWxhdGVUaW55U3RlbmNpbFRleHR1cmVz
ID0gKGFkYXB0ZXJEZXNjLlZlbmRvcklkID09IFZFTkRPUl9JRF9BTUQpOworICAgIHdvcmthcm91
bmRzLmVtdWxhdGVUaW55U3RlbmNpbFRleHR1cmVzID0gSXNBTUQoYWRhcHRlckRlc2MuVmVuZG9y
SWQpOworCisgICAgLy8gVGhlIHRpbnkgc3RlbmNpbCB0ZXh0dXJlIHdvcmthcm91bmQgaW52b2x2
ZXMgdXNpbmcgQ29weVN1YnJlc291cmNlIG9yIFVwZGF0ZVN1YnJlc291cmNlIG9uIGEKKyAgICAv
LyBkZXB0aCBzdGVuY2lsIHRleHR1cmUuICBUaGlzIGlzIG5vdCBhbGxvd2VkIHVudGlsIGZlYXR1
cmUgbGV2ZWwgMTAuMSBidXQgc2luY2UgaXQgaXMgbm90CisgICAgLy8gcG9zc2libGUgdG8gc3Vw
cG9ydCBFUzMgb24gdGhlc2UgZGV2aWNlcywgdGhlcmUgaXMgbm8gbmVlZCBmb3IgdGhlIHdvcmth
cm91bmQgdG8gYmVnaW4gd2l0aAorICAgIC8vIChhbmdsZWJ1Zy5jb20vMTU3MikuCisgICAgaWYg
KGRldmljZUNhcHMuZmVhdHVyZUxldmVsIDwgRDNEX0ZFQVRVUkVfTEVWRUxfMTBfMSkKKyAgICB7
CisgICAgICAgIHdvcmthcm91bmRzLmVtdWxhdGVUaW55U3RlbmNpbFRleHR1cmVzID0gZmFsc2U7
CisgICAgfQorCisgICAgLy8gQ2FsbCBwbGF0Zm9ybSBob29rcyBmb3IgdGVzdGluZyBvdmVycmlk
ZXMuCisgICAgYXV0byAqcGxhdGZvcm0gPSBBTkdMRVBsYXRmb3JtQ3VycmVudCgpOworICAgIHBs
YXRmb3JtLT5vdmVycmlkZVdvcmthcm91bmRzRDNEKHBsYXRmb3JtLCAmd29ya2Fyb3VuZHMpOwog
CiAgICAgcmV0dXJuIHdvcmthcm91bmRzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9yZW5kZXJlcjExX3V0aWxz
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL3JlbmRlcmVyMTFfdXRpbHMuaAppbmRleCA0NjM1NzFjZjliZC4uZjA1ZDVlZjgxOTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5oCkBAIC0z
MCw3ICszMCw2IEBAIG5hbWVzcGFjZSByeAogewogY2xhc3MgUmVuZGVyZXIxMTsKIGNsYXNzIFJl
bmRlclRhcmdldDExOwotc3RydWN0IFdvcmthcm91bmRzRDNEOwogc3RydWN0IFJlbmRlcmVyMTFE
ZXZpY2VDYXBzOwogCiB1c2luZyBSZW5kZXJUYXJnZXRBcnJheSA9IHN0ZDo6YXJyYXk8UmVuZGVy
VGFyZ2V0MTEgKiwgZ2w6OklNUExFTUVOVEFUSU9OX01BWF9EUkFXX0JVRkZFUlM+OwpAQCAtNTYs
NiArNTUsOCBAQCBVSU5UIENvbnZlcnRNYXhBbmlzb3Ryb3B5KGZsb2F0IG1heEFuaXNvdHJvcHks
IEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCk7CiAKIEQzRDExX1FVRVJZIENvbnZlcnRR
dWVyeVR5cGUoR0xlbnVtIHF1ZXJ5VHlwZSk7CiAKK1VJTlQ4IEdldENvbG9yTWFzayhjb25zdCBn
bDo6SW50ZXJuYWxGb3JtYXQgKmZvcm1hdEluZm8pOworCiB9ICAvLyBuYW1lc3BhY2UgZ2xfZDNk
MTEKIAogbmFtZXNwYWNlIGQzZDExX2dsCkBAIC02NSw3ICs2Niw3IEBAIHVuc2lnbmVkIGludCBH
ZXRSZXNlcnZlZFZlcnRleFVuaWZvcm1WZWN0b3JzKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVM
ZXZlbCk7CiAKIHVuc2lnbmVkIGludCBHZXRSZXNlcnZlZEZyYWdtZW50VW5pZm9ybVZlY3RvcnMo
RDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKTsKIAotR0xpbnQgR2V0TWF4aW11bUNsaWVu
dFZlcnNpb24oRDNEX0ZFQVRVUkVfTEVWRUwgZmVhdHVyZUxldmVsKTsKK2dsOjpWZXJzaW9uIEdl
dE1heGltdW1DbGllbnRWZXJzaW9uKEQzRF9GRUFUVVJFX0xFVkVMIGZlYXR1cmVMZXZlbCk7CiB2
b2lkIEdlbmVyYXRlQ2FwcyhJRDNEMTFEZXZpY2UgKmRldmljZSwgSUQzRDExRGV2aWNlQ29udGV4
dCAqZGV2aWNlQ29udGV4dCwgY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJnJlbmRlcmVyMTFE
ZXZpY2VDYXBzLCBnbDo6Q2FwcyAqY2FwcywKICAgICAgICAgICAgICAgICAgIGdsOjpUZXh0dXJl
Q2Fwc01hcCAqdGV4dHVyZUNhcHNNYXAsIGdsOjpFeHRlbnNpb25zICpleHRlbnNpb25zLCBnbDo6
TGltaXRhdGlvbnMgKmxpbWl0YXRpb25zKTsKIApAQCAtMTMzLDggKzEzNCwyMSBAQCB2b2lkIFNl
dFBvc2l0aW9uRGVwdGhDb2xvclZlcnRleChQb3NpdGlvbkRlcHRoQ29sb3JWZXJ0ZXg8VD4qIHZl
cnRleCwgZmxvYXQgeCwgZgogICAgIHZlcnRleC0+YSA9IGNvbG9yLmFscGhhOwogfQogCitzdHJ1
Y3QgQmxlbmRTdGF0ZUtleQoreworICAgIGdsOjpCbGVuZFN0YXRlIGJsZW5kU3RhdGU7CisgICAg
Ym9vbCBtcnQ7CisgICAgdWludDhfdCBydHZNYXNrc1tEM0QxMV9TSU1VTFRBTkVPVVNfUkVOREVS
X1RBUkdFVF9DT1VOVF07Cit9OworCiBIUkVTVUxUIFNldERlYnVnTmFtZShJRDNEMTFEZXZpY2VD
aGlsZCAqcmVzb3VyY2UsIGNvbnN0IGNoYXIgKm5hbWUpOwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KK0hSRVNVTFQgU2V0RGVidWdOYW1lKGFuZ2xlOjpDb21QdHI8VD4gJnJlc291cmNlLCBjb25z
dCBjaGFyICpuYW1lKQoreworICAgIHJldHVybiBTZXREZWJ1Z05hbWUocmVzb3VyY2UuR2V0KCks
IG5hbWUpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgb3V0VHlwZT4KIG91dFR5cGUqIER5bmFt
aWNDYXN0Q29tT2JqZWN0KElVbmtub3duKiBvYmplY3QpCiB7CkBAIC0zNDcsOCArMzYxLDggQEAg
dm9pZCBTZXRCdWZmZXJEYXRhKElEM0QxMURldmljZUNvbnRleHQgKmNvbnRleHQsIElEM0QxMUJ1
ZmZlciAqY29uc3RhbnRCdWZmZXIsIGMKICAgICB9CiB9CiAKLVdvcmthcm91bmRzRDNEIEdlbmVy
YXRlV29ya2Fyb3VuZHMoY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRldmljZUNhcHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERYR0lfQURBUFRFUl9ERVND
ICZhZGFwdGVyRGVzYyk7CithbmdsZTo6V29ya2Fyb3VuZHNEM0QgR2VuZXJhdGVXb3JrYXJvdW5k
cyhjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2FwcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IERYR0lfQURBUFRFUl9ERVNDICZhZGFw
dGVyRGVzYyk7CiAKIGVudW0gUmVzZXJ2ZWRDb25zdGFudEJ1ZmZlclNsb3QKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvc2hhZGVycy9SZXNvbHZlRGVwdGhTdGVuY2lsLmhsc2wgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvUmVzb2x2ZURlcHRo
U3RlbmNpbC5obHNsCmluZGV4IDcwZGYxZDFiNmUwLi43ZGM0MGQ0YjZhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9z
aGFkZXJzL1Jlc29sdmVEZXB0aFN0ZW5jaWwuaGxzbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvUmVzb2x2ZURlcHRo
U3RlbmNpbC5obHNsCkBAIC0yMiw3ICsyMiw3IEBAIFRleHR1cmUyRE1TPHVpbnQyPiBTdGVuY2ls
IDogcmVnaXN0ZXIodDEpOwogCiB2b2lkIFBTX1Jlc29sdmVEZXB0aChpbiBmbG9hdDQgcG9zaXRp
b24gOiBTVl9Qb3NpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgIGluIGZsb2F0MiB0ZXhDb29y
ZCA6IFRFWENPT1JEMCwKLSAgICAgICAgICAgICAgICAgICAgIG91dCBmbG9hdCBkZXB0aCA6IFNW
X1RhcmdldDApCisgICAgICAgICAgICAgICAgICAgICBvdXQgZmxvYXQgZGVwdGggOiBTVl9EZXB0
aCkKIHsKICAgICAvLyBNUyBzYW1wbGVycyBtdXN0IHVzZSBMb2FkCiAgICAgdWludCB3aWR0aCwg
aGVpZ2h0LCBzYW1wbGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Jlc29sdmVkZXB0
aDExX3BzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcmVzb2x2ZWRlcHRoMTFfcHMuaAppbmRleCBiNDRh
MjdjNThkMy4uMDYxNjMxMTI5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9yZXNvbHZl
ZGVwdGgxMV9wcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9yZXNvbHZlZGVwdGgxMV9wcy5oCkBA
IC0yMywxMyArMjMsMTMgQEAKIC8vDQogLy8gTmFtZSAgICAgICAgICAgICAgICAgSW5kZXggICBN
YXNrIFJlZ2lzdGVyIFN5c1ZhbHVlICBGb3JtYXQgICBVc2VkDQogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0gLS0tLS0gLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0tIC0tLS0tLS0gLS0tLS0tDQotLy8g
U1ZfVGFyZ2V0ICAgICAgICAgICAgICAgIDAgICB4ICAgICAgICAgICAwICAgVEFSR0VUICAgZmxv
YXQgICB4ICAgDQorLy8gU1ZfRGVwdGggICAgICAgICAgICAgICAgIDAgICAgTi9BICAgb0RlcHRo
ICAgIERFUFRIICAgZmxvYXQgICAgWUVTDQogLy8NCiBwc180XzENCiBkY2xfZ2xvYmFsRmxhZ3Mg
cmVmYWN0b3JpbmdBbGxvd2VkDQogZGNsX3Jlc291cmNlX3RleHR1cmUyZG1zKDApIChmbG9hdCxm
bG9hdCxmbG9hdCxmbG9hdCkgdDANCiBkY2xfaW5wdXRfcHMgbGluZWFyIHYxLnh5DQotZGNsX291
dHB1dCBvMC54DQorZGNsX291dHB1dCBvRGVwdGgNCiBkY2xfdGVtcHMgMQ0KIHJlc2luZm9fdWlu
dCByMC54eSwgbCgwKSwgdDAueHl6dw0KIHV0b2YgcjAueHksIHIwLnh5eHgNCkBAIC0zNyw0NiAr
MzcsNDYgQEAgbXVsIHIwLnh5LCByMC54eXh4LCB2MS54eXh4CiBmdG91IHIwLnh5LCByMC54eXh4
DQogbW92IHIwLnp3LCBsKDAsMCwwLDApDQogbGRtcyByMC54LCByMC54eXp3LCB0MC54eXp3LCBs
KDApDQotbW92IG8wLngsIHIwLngNCittb3Ygb0RlcHRoLCByMC54DQogcmV0IA0KIC8vIEFwcHJv
eGltYXRlbHkgOCBpbnN0cnVjdGlvbiBzbG90cyB1c2VkDQogI2VuZGlmDQogDQogY29uc3QgQllU
RSBnX1BTX1Jlc29sdmVEZXB0aFtdID0gew0KLSAgICA2OCwgIDg4LCAgNjYsICA2NywgIDIwNSwg
MjE5LCAxOTEsIDIwMSwgMTAzLCAxMzQsIDI0MywgNzYsICAxMSwgOTEsICAyMywgIDE4MiwgNDIs
ICA4LCAgIDE3LA0KLSAgICAxNzMsIDEsICAgMCwgICAwLCAgIDAsICAgMTg0LCAyLCAgIDAsICAg
MCwgICA1LCAgIDAsICAgMCwgICAwLCAgNTIsICAwLCAgIDAsICAgMCwgICAxNzYsIDAsDQotICAg
IDAsICAgMCwgICA4LCAgIDEsICAgMCwgICAwLCAgIDYwLCAgMSwgICAwLCAgIDAsICAgNjAsICAy
LCAgIDAsICAwLCAgIDgyLCAgNjgsICA2OSwgIDcwLCAgMTE2LA0KLSAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgMCwgICAw
LCAgIDI4LCAgMCwgICAwLCAgIDAsDQotICAgIDEsICAgNCwgICAyNTUsIDI1NSwgMCwgICAxLCAg
IDAsICAgMCwgICA2NiwgIDAsICAgMCwgICAwLCAgIDYwLCAwLCAgIDAsICAgMCwgICAyLCAgIDAs
ICAgMCwNCi0gICAgMCwgICA1LCAgIDAsICAgMCwgICAwLCAgIDYsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLA0KLSAgICAwLCAg
IDAsICAgMSwgICAwLCAgIDAsICAgMCwgICA2OCwgIDEwMSwgMTEyLCAxMTYsIDEwNCwgMCwgICA3
NywgMTA1LCA5OSwgIDExNCwgMTExLCAxMTUsIDExMSwNCi0gICAgMTAyLCAxMTYsIDMyLCAgNDAs
ICA4MiwgIDQxLCAgMzIsICA3MiwgIDc2LCAgODMsICA3NiwgIDMyLCAgODMsIDEwNCwgOTcsICAx
MDAsIDEwMSwgMTE0LCAzMiwNCi0gICAgNjcsICAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgMTAx
LCAxMTQsIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsIDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYsICA0
OSwNCi0gICAgNTQsICA1MSwgIDU2LCAgNTIsICAwLCAgIDczLCAgODMsICA3MSwgIDc4LCAgODAs
ICAwLCAgIDAsICAgMCwgIDIsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLA0KLSAgICAwLCAgIDAs
ICAgNTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAg
MCwgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsDQotICAgIDAsICAgMCwgICAwLCAgIDE1LCAgMCwg
ICAwLCAgIDAsICAgNjgsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwNCi0gICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAg
IDMsICAgMywgICAwLCAgIDAsICAgODMsIDg2LCAgOTUsICA4MCwgIDExMSwgMTE1LCAxMDUsDQot
ICAgIDExNiwgMTA1LCAxMTEsIDExMCwgMCwgICA4NCwgIDY5LCAgODgsICA2NywgIDc5LCAgNzks
ICA4MiwgIDY4LCAwLCAgIDE3MSwgMTcxLCAxNzEsIDc5LCAgODMsDQotICAgIDcxLCAgNzgsICA0
NCwgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgOCwgICAwLCAgIDAsICAwLCAg
IDMyLCAgMCwgICAwLCAgIDAsICAgMCwNCi0gICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAzLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgIDAsICAgMCwgICAxLCAgIDE0LCAg
MCwgICAwLA0KLSAgICA4MywgIDg2LCAgOTUsICA4NCwgIDk3LCAgMTE0LCAxMDMsIDEwMSwgMTE2
LCAwLCAgIDE3MSwgMTcxLCA4MywgNzIsICA2OCwgIDgyLCAgMjQ4LCAwLCAgIDAsDQotICAgIDAs
ICAgNjUsICAwLCAgIDAsICAgMCwgICA2MiwgIDAsICAgMCwgICAwLCAgIDEwNiwgOCwgICAwLCAg
IDEsICA4OCwgIDMyLCAgMCwgICA0LCAgIDAsICAgMTEyLA0KLSAgICAxNiwgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICA4NSwgIDg1LCAgMCwgICAwLCAgIDk4LCAgMTYsICAwLCAgMywgICA1MCwg
IDE2LCAgMTYsICAwLCAgIDEsDQotICAgIDAsICAgMCwgICAwLCAgIDEwMSwgMCwgICAwLCAgIDMs
ICAgMTgsICAzMiwgIDE2LCAgMCwgICAwLCAgIDAsICAwLCAgIDAsICAgMTA0LCAwLCAgIDAsICAg
MiwNCi0gICAgMSwgICAwLCAgIDAsICAgMCwgICA2MSwgIDE2LCAgMCwgICA3LCAgIDUwLCAgMCwg
ICAxNiwgIDAsICAgMCwgIDAsICAgMCwgICAwLCAgIDEsICAgNjQsICAwLA0KLSAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgNzAsICAxMjYsIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
ODYsICAwLCAgIDAsICAgNSwgICA1MCwgIDAsDQotICAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDcwLCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAwLCAgIDU2LCAgMCwgICAw
LCAgIDcsICAgNTAsDQotICAgIDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNzAs
ICAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAwLCAgIDAsICAgNzAsICAxNiwgIDE2LCAgMCwNCi0g
ICAgMSwgICAwLCAgIDAsICAgMCwgICAyOCwgIDAsICAgMCwgICA1LCAgIDUwLCAgMCwgICAxNiwg
IDAsICAgMCwgIDAsICAgMCwgICAwLCAgIDcwLCAgMCwgICAxNiwNCi0gICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDU0LCAgMCwgICAwLCAgIDgsICAgMTk0LCAwLCAgIDE2LCAgMCwgIDAsICAg
MCwgICAwLCAgIDAsICAgMiwgICA2NCwNCi0gICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICA0NiwNCi0gICAgMCwgICAwLCAgIDksICAgMTgsICAwLCAgIDE2LCAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDcwLCAgMTQsIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KLSAgICA3
MCwgIDEyNiwgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICA2NCwgIDAsICAgMCwg
ICAwLCAgMCwgICAwLCAgIDAsICAgNTQsICAwLCAgIDAsDQotICAgIDUsICAgMTgsICAzMiwgIDE2
LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEwLCAgMCwgICAxNiwgIDAsICAwLCAgIDAsICAg
MCwgICAwLCAgIDYyLCAgMCwNCi0gICAgMCwgICAxLCAgIDgzLCAgODQsICA2NSwgIDg0LCAgMTE2
LCAwLCAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAw
LA0KLSAgICAwLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsDQotICAgIDEsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCi0gICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgIDEsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLA0KLSAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDIsICAgMCwgICAwLCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsDQotICAg
IDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCi0gICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDB9Ow0KKyAgICA2OCwgIDg4
LCAgNjYsICA2NywgIDEwNiwgNDMsICA4LCAgIDE4NywgMjEsICAzLCAgIDEzNiwgMTEsICAyMjcs
IDI0OSwgMTkwLCAxOTEsIDk3LCAgMTI3LCAxOCwNCisgICAgMjEyLCAxLCAgIDAsICAgMCwgICAw
LCAgIDE3NiwgMiwgICAwLCAgIDAsICAgNSwgICAwLCAgIDAsICAgMCwgICA1MiwgIDAsICAgMCwg
ICAwLCAgIDE3NiwgMCwNCisgICAgMCwgICAwLCAgIDgsICAgMSwgICAwLCAgIDAsICAgNjAsICAx
LCAgIDAsICAgMCwgICA1MiwgIDIsICAgMCwgICAwLCAgIDgyLCAgNjgsICA2OSwgIDcwLCAgMTE2
LA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAyOCwgIDAsICAgMCwgICAwLA0KKyAgICAxLCAgIDQs
ICAgMjU1LCAyNTUsIDAsICAgMSwgICAwLCAgIDAsICAgNjYsICAwLCAgIDAsICAgMCwgICA2MCwg
IDAsICAgMCwgICAwLCAgIDIsICAgMCwgICAwLA0KKyAgICAwLCAgIDUsICAgMCwgICAwLCAgIDAs
ICAgNiwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAg
IDAsICAgMSwgICAwLA0KKyAgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICA2OCwgIDEw
MSwgMTEyLCAxMTYsIDEwNCwgMCwgICA3NywgIDEwNSwgOTksICAxMTQsIDExMSwgMTE1LCAxMTEs
DQorICAgIDEwMiwgMTE2LCAzMiwgIDQwLCAgODIsICA0MSwgIDMyLCAgNzIsICA3NiwgIDgzLCAg
NzYsICAzMiwgIDgzLCAgMTA0LCA5NywgIDEwMCwgMTAxLCAxMTQsIDMyLA0KKyAgICA2NywgIDEx
MSwgMTA5LCAxMTIsIDEwNSwgMTA4LCAxMDEsIDExNCwgMzIsICA1NCwgIDQ2LCAgNTEsICA0Niwg
IDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYsICA0OSwNCisgICAgNTQsICA1MSwgIDU2LCAgNTIsICAw
LCAgIDczLCAgODMsICA3MSwgIDc4LCAgODAsICAwLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwg
ICAwLCAgIDgsICAgMCwNCisgICAgMCwgICAwLCAgIDU2LCAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsICAgMCwN
CisgICAgMCwgICAwLCAgIDAsICAgMTUsICAwLCAgIDAsICAgMCwgICA2OCwgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMywgICAwLCAg
IDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDMsICAgMywgICAwLCAgIDAsICAgODMsICA4
NiwgIDk1LCAgODAsICAxMTEsIDExNSwgMTA1LA0KKyAgICAxMTYsIDEwNSwgMTExLCAxMTAsIDAs
ICAgODQsICA2OSwgIDg4LCAgNjcsICA3OSwgIDc5LCAgODIsICA2OCwgIDAsICAgMTcxLCAxNzEs
IDE3MSwgNzksICA4MywNCisgICAgNzEsICA3OCwgIDQ0LCAgMCwgICAwLCAgIDAsICAgMSwgICAw
LCAgIDAsICAgMCwgICA4LCAgIDAsICAgMCwgICAwLCAgIDMyLCAgMCwgICAwLCAgIDAsICAgMCwN
CisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAw
LCAgIDI1NSwgMjU1LCAyNTUsIDI1NSwgMSwgICAxNCwgIDAsICAgMCwNCisgICAgODMsICA4Niwg
IDk1LCAgNjgsICAxMDEsIDExMiwgMTE2LCAxMDQsIDAsICAgMTcxLCAxNzEsIDE3MSwgODMsICA3
MiwgIDY4LCAgODIsICAyNDAsIDAsICAgMCwNCisgICAgMCwgICA2NSwgIDAsICAgMCwgICAwLCAg
IDYwLCAgMCwgICAwLCAgIDAsICAgMTA2LCA4LCAgIDAsICAgMSwgICA4OCwgIDMyLCAgMCwgICA0
LCAgIDAsICAgMTEyLA0KKyAgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA4NSwgIDg1
LCAgMCwgICAwLCAgIDk4LCAgMTYsICAwLCAgIDMsICAgNTAsICAxNiwgIDE2LCAgMCwgICAxLA0K
KyAgICAwLCAgIDAsICAgMCwgICAxMDEsIDAsICAgMCwgICAyLCAgIDEsICAgMTkyLCAwLCAgIDAs
ICAgMTA0LCAwLCAgIDAsICAgMiwgICAxLCAgIDAsICAgMCwgICAwLA0KKyAgICA2MSwgIDE2LCAg
MCwgICA3LCAgIDUwLCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxLCAgIDY0
LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDcwLCAgMTI2LCAxNiwgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICA4NiwgIDAsICAgMCwgICA1LCAgIDUwLCAgMCwgICAxNiwgIDAs
ICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgNzAsICAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDU2LCAgMCwgICAwLCAgIDcsICAgNTAsICAwLCAgIDE2LCAgMCwgICAwLA0KKyAg
ICAwLCAgIDAsICAgMCwgICA3MCwgIDAsICAgMTYsICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
NzAsICAxNiwgIDE2LCAgMCwgICAxLCAgIDAsICAgMCwgICAwLA0KKyAgICAyOCwgIDAsICAgMCwg
ICA1LCAgIDUwLCAgMCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA3MCwgIDAsICAg
MTYsICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDU0LCAgMCwgICAwLCAgIDgsICAgMTk0
LCAwLCAgIDE2LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgNjQsICAwLCAgIDAsICAg
MCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNDYsICAwLCAgIDAsICAgOSwgICAxOCwNCisgICAg
MCwgICAxNiwgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICA3MCwgIDE0LCAgMTYsICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgNzAsICAxMjYsIDE2LCAgMCwNCisgICAgMCwgICAwLCAgIDAsICAg
MCwgICAxLCAgIDY0LCAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgNTQsICAwLCAgIDAs
ICAgNCwgICAxLCAgIDE5MiwgMCwNCisgICAgMCwgICAxMCwgIDAsICAgMTYsICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgNjIsICAwLCAgIDAsICAgMSwgICA4MywgIDg0LCAgNjUsICA4NCwgIDEx
NiwgMCwNCisgICAgMCwgICAwLCAgIDgsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsICAgMSwNCisgICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAg
MCwNCisgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAyLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMH07DQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF9kYXRhLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X2RhdGEu
anNvbgppbmRleCAwNmY3ZTJhZmQ5ZS4uNmQ0ODFlY2FjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9m
b3JtYXRfZGF0YS5qc29uCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfZGF0YS5qc29uCkBAIC02MSwzMiAr
NjEsNTYgQEAKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFUX0JDMV9VTk9STSIsCiAgICAg
ImNoYW5uZWxzIjogInJnYmEiLAogICAgICJjb21wb25lbnRUeXBlIjogInVub3JtIiwKLSAgICAi
c3dpenpsZUZvcm1hdCI6ICJHTF9SR0JBOCIsCi0gICAgImdsSW50ZXJuYWxGb3JtYXQiOiAiR0xf
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQiCisgICAgInN3aXp6bGVGb3JtYXQiOiAiR0xf
UkdCQTgiCiAgIH0sCiAgICJCQzFfUkdCX1VOT1JNX0JMT0NLIjogewogICAgICJ0ZXhGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfQkMxX1VOT1JNIiwKICAgICAic3J2Rm9ybWF0IjogIkRYR0lfRk9STUFU
X0JDMV9VTk9STSIsCiAgICAgImNoYW5uZWxzIjogInJnYmEiLAogICAgICJjb21wb25lbnRUeXBl
IjogInVub3JtIiwKLSAgICAic3dpenpsZUZvcm1hdCI6ICJHTF9SR0JBOCIsCi0gICAgImdsSW50
ZXJuYWxGb3JtYXQiOiAiR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQiCisgICAgInN3
aXp6bGVGb3JtYXQiOiAiR0xfUkdCQTgiCiAgIH0sCiAgICJCQzJfUkdCQV9VTk9STV9CTE9DSyI6
IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX0JDMl9VTk9STSIsCiAgICAgInNydkZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9CQzJfVU5PUk0iLAogICAgICJjaGFubmVscyI6ICJyZ2JhIiwK
ICAgICAiY29tcG9uZW50VHlwZSI6ICJ1bm9ybSIsCi0gICAgInN3aXp6bGVGb3JtYXQiOiAiR0xf
UkdCQTgiLAotICAgICJnbEludGVybmFsRm9ybWF0IjogIkdMX0NPTVBSRVNTRURfUkdCQV9TM1RD
X0RYVDNfQU5HTEUiCisgICAgInN3aXp6bGVGb3JtYXQiOiAiR0xfUkdCQTgiCiAgIH0sCiAgICJC
QzNfUkdCQV9VTk9STV9CTE9DSyI6IHsKICAgICAidGV4Rm9ybWF0IjogIkRYR0lfRk9STUFUX0JD
M19VTk9STSIsCiAgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZPUk1BVF9CQzNfVU5PUk0iLAogICAg
ICJjaGFubmVscyI6ICJyZ2JhIiwKICAgICAiY29tcG9uZW50VHlwZSI6ICJ1bm9ybSIsCi0gICAg
InN3aXp6bGVGb3JtYXQiOiAiR0xfUkdCQTgiLAotICAgICJnbEludGVybmFsRm9ybWF0IjogIkdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEUiCisgICAgInN3aXp6bGVGb3JtYXQiOiAi
R0xfUkdCQTgiCisgIH0sCisgICJCQzFfUkdCQV9VTk9STV9TUkdCX0JMT0NLIjogeworICAgICJ0
ZXhGb3JtYXQiOiAiRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0IiLAorICAgICJzcnZGb3JtYXQi
OiAiRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0IiLAorICAgICJjaGFubmVscyI6ICJyZ2JhIiwK
KyAgICAiY29tcG9uZW50VHlwZSI6ICJ1bm9ybSIsCisgICAgInN3aXp6bGVGb3JtYXQiOiAiR0xf
UkdCQTgiCisgIH0sCisgICJCQzFfUkdCX1VOT1JNX1NSR0JfQkxPQ0siOiB7CisgICAgInRleEZv
cm1hdCI6ICJEWEdJX0ZPUk1BVF9CQzFfVU5PUk1fU1JHQiIsCisgICAgInNydkZvcm1hdCI6ICJE
WEdJX0ZPUk1BVF9CQzFfVU5PUk1fU1JHQiIsCisgICAgImNoYW5uZWxzIjogInJnYmEiLAorICAg
ICJjb21wb25lbnRUeXBlIjogInVub3JtIiwKKyAgICAic3dpenpsZUZvcm1hdCI6ICJHTF9SR0JB
OCIKKyAgfSwKKyAgIkJDMl9SR0JBX1VOT1JNX1NSR0JfQkxPQ0siOiB7CisgICAgInRleEZvcm1h
dCI6ICJEWEdJX0ZPUk1BVF9CQzJfVU5PUk1fU1JHQiIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJ
X0ZPUk1BVF9CQzJfVU5PUk1fU1JHQiIsCisgICAgImNoYW5uZWxzIjogInJnYmEiLAorICAgICJj
b21wb25lbnRUeXBlIjogInVub3JtIiwKKyAgICAic3dpenpsZUZvcm1hdCI6ICJHTF9SR0JBOCIK
KyAgfSwKKyAgIkJDM19SR0JBX1VOT1JNX1NSR0JfQkxPQ0siOiB7CisgICAgInRleEZvcm1hdCI6
ICJEWEdJX0ZPUk1BVF9CQzNfVU5PUk1fU1JHQiIsCisgICAgInNydkZvcm1hdCI6ICJEWEdJX0ZP
Uk1BVF9CQzNfVU5PUk1fU1JHQiIsCisgICAgImNoYW5uZWxzIjogInJnYmEiLAorICAgICJjb21w
b25lbnRUeXBlIjogInVub3JtIiwKKyAgICAic3dpenpsZUZvcm1hdCI6ICJHTF9SR0JBOCIKICAg
fSwKICAgIkQyNF9VTk9STV9TOF9VSU5UIjogewogICAgICJGTDEwUGx1cyI6IHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvdGV4dHVyZV9mb3JtYXRfbWFwLmpzb24gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X21hcC5qc29uCmluZGV4
IDliMmU4ZDlkYjY2Li45MzIyMTRlOWQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF9tYXAu
anNvbgorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X21hcC5qc29uCkBAIC0yMiw3ICsyMiw2IEBACiAgICJH
TF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9LSFIiOiAiTk9ORSIsCiAgICJHTF9DT01QUkVT
U0VEX1JHQkFfQVNUQ18xMngxMF9LSFIiOiAiTk9ORSIsCiAgICJHTF9DT01QUkVTU0VEX1JHQkFf
QVNUQ18xMngxMl9LSFIiOiAiTk9ORSIsCi0gICJHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFf
RVhUIjogIkJDMV9SR0JfVU5PUk1fQkxPQ0siLAogICAiR0xfQ09NUFJFU1NFRF9TSUdORURfUjEx
X0VBQyI6ICJSOF9TTk9STSIsCiAgICJHTF9DT01QUkVTU0VEX1NJR05FRF9SRzExX0VBQyI6ICJS
OEc4X1NOT1JNIiwKICAgIkdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUiI6
ICJOT05FIiwKQEAgLTQ2LDYgKzQ1LDEwIEBACiAgICJHTF9ERVBUSF9DT01QT05FTlQzMl9PRVMi
OiAiRDI0X1VOT1JNX1M4X1VJTlQiLAogICAiR0xfRVRDMV9SR0I4X09FUyI6ICJSOEc4QjhBOF9V
Tk9STSIsCiAgICJHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFIjogIkJDMV9SR0JfVU5P
Uk1fQkxPQ0siLAorICAiR0xfQ09NUFJFU1NFRF9SR0I4X0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xF
IjogIkJDMV9SR0JfVU5PUk1fQkxPQ0siLAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9MT1NTWV9E
RUNPREVfRVRDMl9BTkdMRSI6ICJCQzFfUkdCX1VOT1JNX1NSR0JfQkxPQ0siLAorICAiR0xfQ09N
UFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfTE9TU1lfREVDT0RFX0VUQzJfQU5HTEUi
OiAiQkMxX1JHQkFfVU5PUk1fQkxPQ0siLAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRI
Uk9VR0hfQUxQSEExX0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFIjogIkJDMV9SR0JBX1VOT1JNX1NS
R0JfQkxPQ0siLAogICAiR0xfTFVNSU5BTkNFMTZGX0VYVCI6ICJSMTZHMTZCMTZBMTZfRkxPQVQi
LAogICAiR0xfTFVNSU5BTkNFMzJGX0VYVCI6ICJSMzJHMzJCMzJBMzJfRkxPQVQiLAogICAiR0xf
TFVNSU5BTkNFOF9BTFBIQThfRVhUIjogIlI4RzhCOEE4X1VOT1JNIiwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4
dHVyZV9mb3JtYXRfdGFibGUuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5jcHAKaW5kZXggNjY5
N2ExMTc3OTIuLmE5ZGZlYzU2YjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmNwcApAQCAtMTUsNDAgKzE1LDE5IEBAIG5hbWVz
cGFjZSByeAogbmFtZXNwYWNlIGQzZDExCiB7CiAKLUZvcm1hdDo6Rm9ybWF0KCkKLSAgICA6IGlu
dGVybmFsRm9ybWF0KEdMX05PTkUpLAotICAgICAgZm9ybWF0KGFuZ2xlOjpGb3JtYXQ6OkdldChh
bmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSkpLAotICAgICAgdGV4Rm9ybWF0KERYR0lfRk9STUFUX1VO
S05PV04pLAotICAgICAgc3J2Rm9ybWF0KERYR0lfRk9STUFUX1VOS05PV04pLAotICAgICAgcnR2
Rm9ybWF0KERYR0lfRk9STUFUX1VOS05PV04pLAotICAgICAgZHN2Rm9ybWF0KERYR0lfRk9STUFU
X1VOS05PV04pLAotICAgICAgYmxpdFNSVkZvcm1hdChEWEdJX0ZPUk1BVF9VTktOT1dOKSwKLSAg
ICAgIHN3aXp6bGUoKnRoaXMpLAotICAgICAgZGF0YUluaXRpYWxpemVyRnVuY3Rpb24obnVsbHB0
cikKK2NvbnN0IEZvcm1hdCAmRm9ybWF0OjpnZXRTd2l6emxlRm9ybWF0KGNvbnN0IFJlbmRlcmVy
MTFEZXZpY2VDYXBzICZkZXZpY2VDYXBzKSBjb25zdAogeworICAgIHJldHVybiAoc3dpenpsZUZv
cm1hdCA9PSBpbnRlcm5hbEZvcm1hdCA/ICp0aGlzIDogRm9ybWF0OjpHZXQoc3dpenpsZUZvcm1h
dCwgZGV2aWNlQ2FwcykpOwogfQogCi1Gb3JtYXQ6OkZvcm1hdChHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsCi0gICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRCBmb3JtYXRJRCwKLSAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUIHRleEZvcm1hdCwKLSAgICAgICAgICAgICAgIERYR0lfRk9STUFU
IHNydkZvcm1hdCwKLSAgICAgICAgICAgICAgIERYR0lfRk9STUFUIHJ0dkZvcm1hdCwKLSAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUIGRzdkZvcm1hdCwKLSAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUIGJsaXRTUlZGb3JtYXQsCi0gICAgICAgICAgICAgICBHTGVudW0gc3dpenpsZUZvcm1hdCwK
LSAgICAgICAgICAgICAgIEluaXRpYWxpemVUZXh0dXJlRGF0YUZ1bmN0aW9uIGludGVybmFsRm9y
bWF0SW5pdGlhbGl6ZXIsCi0gICAgICAgICAgICAgICBjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2Fw
cyAmZGV2aWNlQ2FwcykKLSAgICA6IGludGVybmFsRm9ybWF0KGludGVybmFsRm9ybWF0KSwKLSAg
ICAgIGZvcm1hdChhbmdsZTo6Rm9ybWF0OjpHZXQoZm9ybWF0SUQpKSwKLSAgICAgIHRleEZvcm1h
dCh0ZXhGb3JtYXQpLAotICAgICAgc3J2Rm9ybWF0KHNydkZvcm1hdCksCi0gICAgICBydHZGb3Jt
YXQocnR2Rm9ybWF0KSwKLSAgICAgIGRzdkZvcm1hdChkc3ZGb3JtYXQpLAotICAgICAgYmxpdFNS
VkZvcm1hdChibGl0U1JWRm9ybWF0KSwKLSAgICAgIHN3aXp6bGUoc3dpenpsZUZvcm1hdCA9PSBp
bnRlcm5hbEZvcm1hdCA/ICp0aGlzIDogRm9ybWF0OjpHZXQoc3dpenpsZUZvcm1hdCwgZGV2aWNl
Q2FwcykpLAotICAgICAgZGF0YUluaXRpYWxpemVyRnVuY3Rpb24oaW50ZXJuYWxGb3JtYXRJbml0
aWFsaXplciksCi0gICAgICBsb2FkRnVuY3Rpb25zKEdldExvYWRGdW5jdGlvbnNNYXAoaW50ZXJu
YWxGb3JtYXQsIGZvcm1hdElEKSkKK0xvYWRGdW5jdGlvbk1hcCBGb3JtYXQ6OmdldExvYWRGdW5j
dGlvbnMoKSBjb25zdAogeworICAgIHJldHVybiBHZXRMb2FkRnVuY3Rpb25zTWFwKGludGVybmFs
Rm9ybWF0LCBmb3JtYXRJRCk7Cit9CisKK2NvbnN0IGFuZ2xlOjpGb3JtYXQgJkZvcm1hdDo6Zm9y
bWF0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYW5nbGU6OkZvcm1hdDo6R2V0KGZvcm1hdElEKTsK
IH0KIAogfSAgLy8gbmFtZXNwYWNlIGQzZDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3Rh
YmxlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmgKaW5kZXggOGUwNWEyZWI4NzEuLjNiZTc1OWYx
OWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3RhYmxlLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1h
dF90YWJsZS5oCkBAIC0zMiwyMiArMzIsMjUgQEAgbmFtZXNwYWNlIGQzZDExCiAvLyBEU1ZzIGdp
dmVuIGEgR0wgaW50ZXJuYWwgZm9ybWF0Lgogc3RydWN0IEZvcm1hdCBmaW5hbCA6IGFuZ2xlOjpO
b25Db3B5YWJsZQogewotICAgIEZvcm1hdCgpOwotICAgIEZvcm1hdChHTGVudW0gaW50ZXJuYWxG
b3JtYXQsCi0gICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEIGZvcm1hdElELAotICAgICAgICAg
ICBEWEdJX0ZPUk1BVCB0ZXhGb3JtYXQsCi0gICAgICAgICAgIERYR0lfRk9STUFUIHNydkZvcm1h
dCwKLSAgICAgICAgICAgRFhHSV9GT1JNQVQgcnR2Rm9ybWF0LAotICAgICAgICAgICBEWEdJX0ZP
Uk1BVCBkc3ZGb3JtYXQsCi0gICAgICAgICAgIERYR0lfRk9STUFUIGJsaXRTUlZGb3JtYXQsCi0g
ICAgICAgICAgIEdMZW51bSBzd2l6emxlRm9ybWF0LAotICAgICAgICAgICBJbml0aWFsaXplVGV4
dHVyZURhdGFGdW5jdGlvbiBpbnRlcm5hbEZvcm1hdEluaXRpYWxpemVyLAotICAgICAgICAgICBj
b25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2Fwcyk7CisgICAgY29uc3RleHByIEZv
cm1hdCgpOworICAgIGNvbnN0ZXhwciBGb3JtYXQoR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAg
ICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQgZm9ybWF0SUQsCisgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVCB0ZXhGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVCBzcnZGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBy
dHZGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBkc3ZGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBibGl0U1JWRm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHN3aXp6bGVGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICBJ
bml0aWFsaXplVGV4dHVyZURhdGFGdW5jdGlvbiBpbnRlcm5hbEZvcm1hdEluaXRpYWxpemVyKTsK
IAogICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgJkdldChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNv
bnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZkZXZpY2VDYXBzKTsKIAorICAgIGNvbnN0IEZvcm1h
dCAmZ2V0U3dpenpsZUZvcm1hdChjb25zdCBSZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2aWNlQ2Fw
cykgY29uc3Q7CisgICAgTG9hZEZ1bmN0aW9uTWFwIGdldExvYWRGdW5jdGlvbnMoKSBjb25zdDsK
KyAgICBjb25zdCBhbmdsZTo6Rm9ybWF0ICZmb3JtYXQoKSBjb25zdDsKKwogICAgIEdMZW51bSBp
bnRlcm5hbEZvcm1hdDsKLSAgICBjb25zdCBhbmdsZTo6Rm9ybWF0ICZmb3JtYXQ7CisgICAgYW5n
bGU6OkZvcm1hdDo6SUQgZm9ybWF0SUQ7CiAKICAgICBEWEdJX0ZPUk1BVCB0ZXhGb3JtYXQ7CiAg
ICAgRFhHSV9GT1JNQVQgc3J2Rm9ybWF0OwpAQCAtNTYsMTMgKzU5LDQ1IEBAIHN0cnVjdCBGb3Jt
YXQgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKIAogICAgIERYR0lfRk9STUFUIGJsaXRTUlZG
b3JtYXQ7CiAKLSAgICBjb25zdCBGb3JtYXQgJnN3aXp6bGU7CisgICAgR0xlbnVtIHN3aXp6bGVG
b3JtYXQ7CiAKICAgICBJbml0aWFsaXplVGV4dHVyZURhdGFGdW5jdGlvbiBkYXRhSW5pdGlhbGl6
ZXJGdW5jdGlvbjsKLQotICAgIExvYWRGdW5jdGlvbk1hcCBsb2FkRnVuY3Rpb25zOwogfTsKIAor
Y29uc3RleHByIEZvcm1hdDo6Rm9ybWF0KCkKKyAgICA6IGludGVybmFsRm9ybWF0KEdMX05PTkUp
LAorICAgICAgZm9ybWF0SUQoYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUpLAorICAgICAgdGV4Rm9y
bWF0KERYR0lfRk9STUFUX1VOS05PV04pLAorICAgICAgc3J2Rm9ybWF0KERYR0lfRk9STUFUX1VO
S05PV04pLAorICAgICAgcnR2Rm9ybWF0KERYR0lfRk9STUFUX1VOS05PV04pLAorICAgICAgZHN2
Rm9ybWF0KERYR0lfRk9STUFUX1VOS05PV04pLAorICAgICAgYmxpdFNSVkZvcm1hdChEWEdJX0ZP
Uk1BVF9VTktOT1dOKSwKKyAgICAgIHN3aXp6bGVGb3JtYXQoR0xfTk9ORSksCisgICAgICBkYXRh
SW5pdGlhbGl6ZXJGdW5jdGlvbihudWxscHRyKQoreworfQorCitjb25zdGV4cHIgRm9ybWF0OjpG
b3JtYXQoR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEIGZvcm1hdElELAorICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUIHRleEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBz
cnZGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVQgcnR2Rm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUIGRzdkZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVCBibGl0U1JWRm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBzd2l6emxlRm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgIEluaXRpYWxpemVUZXh0dXJlRGF0YUZ1bmN0aW9uIGludGVybmFsRm9ybWF0SW5pdGlh
bGl6ZXIpCisgICAgOiBpbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCksCisgICAgICBmb3Jt
YXRJRChmb3JtYXRJRCksCisgICAgICB0ZXhGb3JtYXQodGV4Rm9ybWF0KSwKKyAgICAgIHNydkZv
cm1hdChzcnZGb3JtYXQpLAorICAgICAgcnR2Rm9ybWF0KHJ0dkZvcm1hdCksCisgICAgICBkc3ZG
b3JtYXQoZHN2Rm9ybWF0KSwKKyAgICAgIGJsaXRTUlZGb3JtYXQoYmxpdFNSVkZvcm1hdCksCisg
ICAgICBzd2l6emxlRm9ybWF0KHN3aXp6bGVGb3JtYXQpLAorICAgICAgZGF0YUluaXRpYWxpemVy
RnVuY3Rpb24oaW50ZXJuYWxGb3JtYXRJbml0aWFsaXplcikKK3sKK30KKwogfSAgLy8gbmFtZXNw
YWNlIGQzZDExCiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1h
dF90YWJsZV9hdXRvZ2VuLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAKaW5k
ZXggZDVlYWI3YmMxNTkuLjNhYjMzMzc2MDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0X3Rh
YmxlX2F1dG9nZW4uY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAKQEAg
LTM1LDYwICszNSw1NiBAQCBjb25zdCBGb3JtYXQgJkZvcm1hdDo6R2V0KEdMZW51bSBpbnRlcm5h
bEZvcm1hdCwgY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRldgogICAgIHsKICAgICAgICAg
Y2FzZSBHTF9BTFBIQTE2Rl9FWFQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBGb3JtYXQgaW5mbyhHTF9BTFBIQTE2Rl9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
RkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjE2RzE2QjE2QTE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZGLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZv
cm1hdCBpbmZvKEdMX0FMUEhBMTZGX0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2
QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2
QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0JBMTZGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xf
QUxQSEEzMkZfRVhUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0
IGluZm8oR0xfQUxQSEEzMkZfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5m
byhHTF9BTFBIQTMyRl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9B
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9B
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0FMUEhBOF9F
WFQ6CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChPbmx5RkwxMFBsdXMoZGV2aWNlQ2Fwcykp
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZv
KEdMX0FMUEhBOF9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlOjpGb3JtYXQ6OklEOjpBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0E4X1VOT1JNLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9BOF9VTk9STSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQThf
VU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAg
ICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0FMUEhBOF9FWFQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0
OjpJRDo6QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9BOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0E4X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQThfVU5PUk0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfQThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpOwogICAgICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBGb3JtYXQgaW5mbyhHTF9BTFBIQThfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4
X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9BTFBIQThfRVhULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhC
OEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtOTYsNzM2ICs5Miw3ODggQEAgY29uc3Qg
Rm9ybWF0ICZGb3JtYXQ6OkdldChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IFJlbmRlcmVy
MTFEZXZpY2VDYXBzICZkZXYKICAgICAgICAgewogICAgICAgICAgICAgaWYgKFN1cHBvcnRzRm9y
bWF0KERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSwgZGV2aWNlQ2FwcykpCiAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0JHUjU2NV9BTkdM
RVgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpCNUc2UjVfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX0I1RzZSNV9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X0I1RzZSNV9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkdCQTgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMp
OworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQkdSNTY1
X0FOR0xFWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEOjpCNUc2UjVfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc2UjVfVU5P
Uk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9CNUc2UjVfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQkdSNTY1
X0FOR0xFWCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhC
OEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCQTgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0
IGluZm8oR0xfQkdSNTY1X0FOR0xFWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9CR1I1X0ExX0FOR0xFWDoKICAgICAgICAgewotICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0JHUjVfQTFfQU5HTEVYLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCOEc4
UjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9COEc4UjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0JHUkE4X0VYVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBGb3JtYXQgaW5mbyhHTF9CR1I1X0ExX0FOR0xFWCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkI4RzhSOEE4X1VOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhB
OF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfQjhHOFI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQkdSQThfRVhULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQkdSQTRfQU5HTEVY
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQkdS
QTRfQU5HTEVYLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpCOEc4UjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4
X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0JHUkE4X0VY
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9CR1JBNF9BTkdMRVgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCOEc4UjhB
OF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfQjhHOFI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4
QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0JH
UkE4X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdM
X0JHUkE4X0VYVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBp
bmZvKEdMX0JHUkE4X0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZTo6Rm9ybWF0OjpJRDo6QjhHOFI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5P
Uk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9C
OEc4UjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9C
R1JBOF9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQkdSQThfRVhULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QjhH
OFI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX0I4RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9COEc4UjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjhHOFI4QThfVU5PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I4
RzhSOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9CR1JBOF9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBHTF9DT01QUkVTU0VEX1IxMV9FQUM6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1IxMV9FQUMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4X1VOT1JNLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VOT1JNLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VOT1JN
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhf
VU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SMTFfRUFDLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhfVU5P
Uk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1I4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjhfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkcxMV9FQUM6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHMTFf
RUFDLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSOEc4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhH
TF9DT01QUkVTU0VEX1JHMTFfRUFDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOF9VTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjhHOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQjhfRVRDMjoKICAgICAgICAgewotICAgICAgICAgICAg
c3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCOF9FVEMyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhB
OF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAw
LCAweDAwLCAweDAwLCAweEZGPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8o
R0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4
RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0
ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4pOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQjhfTE9TU1lfREVDT0RFX0VU
QzJfQU5HTEU6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0
IGluZm8oR0xfQ09NUFJFU1NFRF9SR0I4X0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QkMx
X1JHQl9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQjhf
UFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFf
RVRDMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0
OjpJRDo6UjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8
R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHBy
IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhG
Rj4pOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBH
TF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9MT1NTWV9ERUNPREVfRVRDMl9B
TkdMRToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5m
byhHTF9DT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9MT1NTWV9ERUNPREVfRVRD
Ml9BTkdMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OkZvcm1hdDo6SUQ6OkJDMV9SR0JBX1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfQkMxX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUM6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhB
OF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1h
dCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQThfRVRDMl9FQUMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9S
R0JBX0FTVENfMTB4MTBfS0hSOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3Qg
Rm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4MTBfS0hSLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6
SUQ6Ok5PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg1X0tIUjoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBS
RVNTRURfUkdCQV9BU1RDXzEweDVfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZv
KEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDZfS0hSOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9L
SFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6
SUQ6Ok5PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FT
VENfMTB4Nl9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX0FT
VENfMTB4OF9LSFI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQg
aW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9LSFI6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JH
QkFfQVNUQ18xMngxMF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZp
Y2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09N
UFJFU1NFRF9SR0JBX0FTVENfMTJ4MTBfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Tk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7
CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0NP
TVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUjoKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEyeDEyX0tIUiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6
Tk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Tk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18x
MngxMl9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
OjpGb3JtYXQ6OklEOjpOT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVy
biBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENf
NHg0X0tIUjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZv
KEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9y
bWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSOgogICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENf
NXg0X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9y
bWF0OjpJRDo6Tk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JH
QkFfQVNUQ181eDRfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdC
QV9BU1RDXzV4NV9LSFI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3Jt
YXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzV4NV9LSFIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05F
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUjoKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdC
QV9BU1RDXzZ4NV9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VD
YXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJF
U1NFRF9SR0JBX0FTVENfNng1X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAg
ICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1JHQkFfQVNUQ182eDZfS0hSOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfNng2X0tIUiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJ
RDo6Tk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFI6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVT
U0VEX1JHQkFfQVNUQ184eDVfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdM
X0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4NV9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xf
Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg2X0tIUjoKICAgICAgICAgewotICAgICAgICAgICAgc3Rh
dGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5P
TkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05P
TkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfOHg2
X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZv
cm1hdDo6SUQ6Ok5PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDhf
S0hSOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xf
Q09NUFJFU1NFRF9SR0JBX0FTVENfOHg4X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQg
aW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhU
MV9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1h
dDo6SUQ6OkJDMV9SR0JBX1VOT1JNX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQg
aW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkJDMV9SR0JBX1VOT1JN
X0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9CQzFfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX0JDMV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNf
QU5HTEU6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCQzJfUkdCQV9VTk9STV9CTE9DSywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzJfVU5P
Uk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMy
X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9CQzJfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQTgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUM19BTkdMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6OkJDMl9SR0JBX1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzJfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMl9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfQkMyX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1
X0FOR0xFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpCQzNfUkdCQV9VTk9STV9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzNfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMzX1VOT1JNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzNfVU5PUk0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0
IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkJDM19SR0JBX1VO
T1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9CQzNfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX0JDM19VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMzX1VOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhU
MV9FWFQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhH
TF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCQzFfUkdCX1VOT1JNX0JMT0NLLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9VTk9STSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5P
Uk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X0JDMV9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JB
OCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFf
RVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9y
bWF0OjpJRDo6QkMxX1JHQl9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JD
MV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdC
QTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwog
ICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1NJR05FRF9SMTFfRUFDOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhfU05PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfU05PUk0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfU05P
Uk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1I4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4
X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU0lHTkVEX1Ix
MV9FQUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpSOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThfU05PUk0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAg
ICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VE
X1NJR05FRF9SRzExX0VBQzoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4X1NOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU05PUk0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9T
Tk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0JBOF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NJR05F
RF9SRzExX0VBQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6OlI4RzhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU05PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU05PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4
RzhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JH
QkE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
R0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHgxMF9LSFI6CiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FM
UEhBOF9BU1RDXzEweDEwX0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
dmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9D
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSOgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdC
OF9BTFBIQThfQVNUQ18xMHg1X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhH
TF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDVfS0hSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFI6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZv
KEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUjoKICAgICAg
ICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfMTB4OF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGlu
Zm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEyeDEwX0tIUjoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNT
RURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1h
dCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9O
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTJfS0hS
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Rm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMngxMl9LSFIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklE
OjpOT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRf
S0hSOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xf
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHBy
IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNHg0X0tIUiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6
Ok5PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9L
SFI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9D
T01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NF9LSFIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Rm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6
Tk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tI
UjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NP
TVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNXg1X0tIUiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBG
b3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzV4NV9LSFIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpO
T05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hS
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09N
UFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDVfS0hSLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZv
cm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1X0tIUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5P
TkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFI6
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01Q
UkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzZ4Nl9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9y
bWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ182eDZfS0hSLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9O
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUjoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBS
RVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3Jt
YXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4NV9LSFIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05F
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSOgog
ICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDZfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05FLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1h
dCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX05PTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFI6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9DT01QUkVT
U0VEX1NSR0I4X0FMUEhBOF9BU1RDXzh4OF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0
IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hSLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0VUQzJfRUFDOgogICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfRVRDMl9FQUMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STV9TUkdCLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NSR0I4X0FMUEhBOCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBG
b3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9FVEMyX0VBQywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhC
OEE4X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4
X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1NSR0I4X0FMUEhBOCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfRVRDMjoKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNT
RURfU1JHQjhfRVRDMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk1fU1JHQiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JN
X1NSR0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjhHOEI4QThfVU5PUk1fU1JHQiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfU1JHQjhfQUxQSEE4LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAw
eDAwLCAweDAwLCAweEZGPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xf
Q09NUFJFU1NFRF9TUkdCOF9FVEMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5P
Uk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThf
VU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
U1JHQjhfQUxQSEE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
bml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4p
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1NSR0I4X0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhf
TE9TU1lfREVDT0RFX0VUQzJfQU5HTEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCQzFfUkdCX1VOT1JNX1NSR0JfQkxPQ0ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9V
Tk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9CQzFfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0IsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVy
biBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5D
SFRIUk9VR0hfQUxQSEExX0VUQzI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRD
MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJ
RDo6UjhHOEI4QThfVU5PUk1fU1JHQiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5P
Uk1fU1JHQiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfU1JHQjhfQUxQSEE4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNl
Q2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBS
RVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk1f
U1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JH
QiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfU1JHQjhfQUxQSEE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEEx
X0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FM
UEhBMV9MT1NTWV9ERUNPREVfRVRDMl9BTkdMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkJDMV9SR0JBX1VOT1JNX1NSR0JfQkxP
Q0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X0JDMV9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9CQzFfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0IsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAg
IHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdC
X0FMUEhBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUMV9FWFQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpCQzFfUkdCQV9VTk9STV9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzFfVU5PUk1fU1JHQiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0Is
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX0JDMV9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhUOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNT
RURfU1JHQl9BTFBIQV9TM1RDX0RYVDNfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QkMyX1JHQkFfVU5PUk1fU1JHQl9CTE9D
SywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
QkMyX1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX0JDMl9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzJfVU5PUk1fU1JHQiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0Jf
QUxQSEFfUzNUQ19EWFQ1X0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1X0VYVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6
SUQ6OkJDM19SR0JBX1VOT1JNX1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDM19VTk9STV9TUkdCLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CQzNfVU5PUk1fU1JHQiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfQkMzX1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdC
X1MzVENfRFhUMV9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlOjpGb3JtYXQ6OklEOjpCQzFfUkdCX1VOT1JNX1NSR0JfQkxPQ0ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9VTk9STV9TUkdC
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9C
QzFfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNX1NSR0IsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfREVQVEgyNF9TVEVOQ0lMODoKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKE9ubHlGTDEwUGx1cyhkZXZpY2VDYXBzKSkKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfREVQVEgyNF9TVEVO
Q0lMOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZv
cm1hdDo6SUQ6OkQyNF9VTk9STV9TOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVM
RVNTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgICAgICBzdGF0
aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0RFUFRIMjRfU1RFTkNJTDgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RDI0
X1VOT1JNX1M4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMkYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGlu
Zm8oR0xfREVQVEgyNF9TVEVOQ0lMOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkQyNF9VTk9STV9TOF9VSU5ULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhf
VUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMkYsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgRm9ybWF0IGluZm8oR0xfREVQVEgyNF9TVEVOQ0lMOCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpEMjRfVU5PUk1f
UzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5P
Uk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9SR0JBMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9ERVBUSDMyRl9TVEVOQ0lMODoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0RFUFRI
MzJGX1NURU5DSUw4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
OjpGb3JtYXQ6OklEOjpEMzJfRkxPQVRfUzhYMjRfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHOFgyNF9UWVBFTEVTUywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfRkxPQVRfWDhYMjRf
VFlQRUxFU1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9EMzJfRkxPQVRfUzhYMjRfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfRkxPQVRfWDhYMjRfVFlQRUxFU1MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3Jt
YXQgaW5mbyhHTF9ERVBUSDMyRl9TVEVOQ0lMOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkQzMl9GTE9BVF9TOFgyNF9VSU5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJH
OFgyNF9UWVBFTEVTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjMyX0ZMT0FUX1g4WDI0X1RZUEVMRVNTLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMzJfRkxPQVRfUzhYMjRf
VUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjMyX0ZMT0FUX1g4WDI0X1RZUEVMRVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9
CiAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6CiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmIChPbmx5RkwxMFBsdXMoZGV2aWNlQ2FwcykpCiAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0RFUFRIX0NPTVBPTkVOVDE2LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJ
RDo6RDE2X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMTZfVFlQRUxFU1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDE2X1VOT1JNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVU5PUk0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNl9FWFQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfREVQVEhfQ09NUE9ORU5UMTYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9y
bWF0OjpJRDo6RDE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1RZUEVMRVNTLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1VOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X0QxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQkExNl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfREVQVEhfQ09NUE9ORU5UMTYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklE
OjpEMTZfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX0QxNl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDE2X1VOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZfRVhULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0RFUFRIX0NPTVBPTkVOVDE2LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6
OkQxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX0QxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDE2X1VOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
X1JHQkExNl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtODMzLDczNiArODgxLDY4NCBAQCBjb25zdCBGb3JtYXQgJkZvcm1hdDo6
R2V0KEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRl
dgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoT25seUZMMTBQbHVzKGRldmljZUNhcHMpKQog
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhH
TF9ERVBUSF9DT01QT05FTlQyNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkQyNF9VTk9STV9TOF9VSU5ULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVTUywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0
X1VOT1JNX1g4X1RZUEVMRVNTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVM
RVNTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJG
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAg
ICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0RFUFRIX0NPTVBPTkVO
VDI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OkZvcm1hdDo6SUQ6OkQyNF9VTk9STV9TOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxFU1MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMjRfVU5P
Uk1fWDhfVFlQRUxFU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMjRfVU5PUk1f
WDhfVFlQRUxFU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SR0JBMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEZvcm1hdCBpbmZvKEdMX0RFUFRIX0NPTVBPTkVOVDI0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RDI0X1VOT1JNX1M4
X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX0QyNF9VTk9STV9TOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9ERVBUSF9DT01QT05FTlQyNCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpEMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9E
RVBUSF9DT01QT05FTlQzMkY6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBG
b3JtYXQgaW5mbyhHTF9ERVBUSF9DT01QT05FTlQzMkYsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkQzMl9GTE9BVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfVFlQRUxFU1MsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDMyX0ZM
T0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Iz
Ml9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJG
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0RFUFRIX0NPTVBPTkVOVDMyRiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkQz
Ml9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjMyX1RZUEVMRVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0QzMl9GTE9BVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMzJf
T0VTOgogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoT25seUZMMTBQbHVzKGRldmljZUNhcHMp
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5m
byhHTF9ERVBUSF9DT01QT05FTlQzMl9PRVMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpEMjRfVU5PUk1fUzhfVUlOVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0RzhfVFlQ
RUxFU1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IyNF9VTk9STV9Y
OF9UWVBFTEVTUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQTMyRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7
CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9ERVBUSF9D
T01QT05FTlQzMl9PRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RDI0X1VOT1JNX1M4X1VJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMjRHOF9UWVBFTEVT
UywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IyNF9VTk9STV9YOF9UWVBFTEVTUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQkEzMkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJ
RDo6RDI0X1VOT1JNX1M4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX0QyNF9VTk9STV9TOF9VSU5ULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1f
UzhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkdCQTMyRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fw
cyk7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9ERVBU
SF9DT01QT05FTlQzMl9PRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RDI0X1VOT1JNX1M4X1VJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1f
UzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMy
RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIp
OwogICAgICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgICAgIGNhc2UgR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRToKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0VUQzFfUkdCOF9MT1NT
WV9ERUNPREVfQU5HTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6OkJDMV9SR0JfVU5PUk1fQkxPQ0ssCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0JDMV9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHBy
IEZvcm1hdCBpbmZvKEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCQzFfUkdC
X1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9CQzFfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX0JDMV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQkMxX1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9PRVM6CiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9FVEMxX1JHQjhf
T0VTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JN
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxH
THVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZGPiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Rm9ybWF0IGluZm8oR0xfRVRDMV9SR0I4X09FUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxH
THVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZGPik7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRTE2Rl9FWFQ6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9MVU1JTkFOQ0UxNkZf
RVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSMTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
RkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCQTE2RiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0
aWFsaXplNENvbXBvbmVudERhdGE8R0xoYWxmLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCBnbDo6
RmxvYXQxNk9uZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNl
Q2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0xVTUlO
QU5DRTE2Rl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2
QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2RiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnRE
YXRhPEdMaGFsZiwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgZ2w6OkZsb2F0MTZPbmU+KTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfTFVNSU5B
TkNFMzJGX0VYVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBp
bmZvKEdMX0xVTUlOQU5DRTMyRl9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMy
QjMyQTMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTGZsb2F0LCAweDAwMDAw
MDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCBnbDo6RmxvYXQzMk9uZT4sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0xVTUlOQU5DRTMyRl9FWFQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMzJHMzJC
MzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJf
RkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMZmxvYXQsIDB4MDAwMDAwMDAs
IDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIGdsOjpGbG9hdDMyT25lPik7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRThfQUxQSEE4
X0VYVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdM
X0xVTUlOQU5DRThfQUxQSEE4X0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4
QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SR0JBOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9MVU1JTkFOQ0U4X0FMUEhB
OF9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOF9FWFQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9MVU1JTkFOQ0U4X0VYVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4
QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwg
MHgwMCwgMHhGRj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNl
Q2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0xVTUlO
QU5DRThfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAsIDB4MDAs
IDB4MDAsIDB4RkY+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBMTZGX0VYVDoKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9FWFQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIx
NkcxNkIxNkExNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0JBMTZGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0xVTUlOQU5DRV9BTFBIQTE2Rl9F
WFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpSMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZM
T0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2RiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQTMyRl9FWFQ6
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9MVU1J
TkFOQ0VfQUxQSEEzMkZfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlOjpGb3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEz
Ml9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhH
TF9MVU1JTkFOQ0VfQUxQSEEzMkZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJB
MzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJB
MzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JH
QkEzMkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9O
T05FOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xf
Tk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0
OjpJRDo6Tk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9OT05FLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEdMX1IxMUZfRzExRl9CMTBGOgogICAgICAgICB7Ci0gICAgICAgICAgICBz
dGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUjExRl9HMTFGX0IxMEYsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxMUcxMUIxMF9GTE9B
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTFH
MTFCMTBfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjExRzExQjEwX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZGX0VYVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBG
b3JtYXQgaW5mbyhHTF9SMTFGX0cxMUZfQjEwRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxMUcxMUIxMF9GTE9BVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjExRzExQjEw
X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMTFHMTFCMTBfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IxMUcxMUIxMF9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjExRzExQjEwX0ZMT0FULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZGX0VYVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1IxNkY6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SMTZGLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpS
MTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IxNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfUkdCQTE2Rl9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZp
Y2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUjE2
RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1h
dDo6SUQ6OlIxNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9GTE9BVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X0ZMT0FULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZGX0VYVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1IxNkk6CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SMTZJLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpS
MTZfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMTZfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMTZfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMTZfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQkExNkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUjE2SSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIx
Nl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IxNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfU0lOVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2SSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1IxNlVJOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUjE2VUksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNl9VSU5ULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VSU5ULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VSU5ULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VSU5U
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2
X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2SSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SMTZVSSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNl9VSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVUlOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2
X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUkdCQTE2SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEdMX1IxNl9FWFQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBj
b25zdCBGb3JtYXQgaW5mbyhHTF9SMTZfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZfVU5PUk0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1VOT1JNLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9VTk9STSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVU5PUk0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVU5PUk0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2X0VYVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SMTZfRVhULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2X1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVU5PUk0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Ix
Nl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1JHQkExNl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBHTF9SMTZfU05PUk1fRVhUOgogICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUjE2X1NOT1JNX0VYVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2X1NOT1JN
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNl9T
Tk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MTZfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IxNl9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9SR0JBMTZfU05PUk1fRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fw
cyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1IxNl9TTk9S
TV9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpSMTZfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IxNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZfU05PUk0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNl9TTk9S
TV9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9S
MzJGOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xf
UjMyRiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0
OjpJRDo6UjMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1JHQkEzMkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xf
UjMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZv
cm1hdDo6SUQ6OlIzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9GTE9BVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX0ZMT0FU
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAg
ICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUjMySToKICAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1IzMkksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIz
Ml9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IzMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IzMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IzMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjMyX1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCQTMySSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SMzJJLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMy
X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IzMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9TSU5ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJJLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUjMyVUk6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SMzJVSSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyX1VJTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1VJTlQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1VJTlQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyX1VJTlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJf
VUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJJLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1IzMlVJLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyX1VJTlQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMl9VSU5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJf
VUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IzMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9SR0JBMzJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgR0xfUjg6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBG
b3JtYXQgaW5mbyhHTF9SOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZTo6Rm9ybWF0OjpJRDo6UjhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VTk9STSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5m
byhHTF9SOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OkZvcm1hdDo6SUQ6OlI4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVU5PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAg
ICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SOEk6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SOEksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4X1NJTlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfU0lO
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9T
SU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4
X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOF9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4
SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SOEksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOF9TSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TSU5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9T
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9SR0JBOEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBHTF9SOFVJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9y
bWF0IGluZm8oR0xfUjhVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZTo6Rm9ybWF0OjpJRDo6UjhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfUkdCQThJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdM
X1I4VUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpSOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9VSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOEksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SOF9TTk9STToKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1I4X1NOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOF9T
Tk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
OF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkdCQThfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsK
KyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUjhfU05PUk0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklE
OjpSOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOF9TTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThfU05PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SRzE2RjoKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHMTZGLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZfRkxP
QVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2
RzE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IxNkcxNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfUkdCQTE2Rl9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8o
R0xfUkcxNkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
OjpGb3JtYXQ6OklEOjpSMTZHMTZfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X0ZMT0FULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfRkxP
QVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IxNkcxNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfUkdCQTE2Rl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAg
ICAgICAgY2FzZSBHTF9SRzE2SToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBpbmZvKEdMX1JHMTZJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfU0lOVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfU0lOVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfU0lOVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9T
SU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkcxNkksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZfU0lOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNkcxNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMTZHMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NJTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SRzE2VUk6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SRzE2VUksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNl9VSU5ULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9VSU5U
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcx
Nl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNkcxNl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjE2RzE2X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCQTE2SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SRzE2VUksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpS
MTZHMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjE2RzE2X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfVUlOVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1VJTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAg
ICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SRzE2X0VYVDoK
ICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHMTZf
RVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSMTZHMTZfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjE2RzE2X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfVU5PUk0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfVU5PUk0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2X0VYVCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBGb3JtYXQgaW5mbyhHTF9SRzE2X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNl9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1VOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZH
MTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IxNkcxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZfRVhULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZv
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkcxNl9TTk9STV9FWFQ6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SRzE2X1NOT1JNX0VYVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6
UjE2RzE2X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IxNkcxNl9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMTZHMTZfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNl9TTk9STSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZfU05PUk1fRVhULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZv
cm1hdCBpbmZvKEdMX1JHMTZfU05PUk1fRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2X1NOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZfU05PUk0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Ix
NkcxNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZfU05PUk1fRVhULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkczMkY6CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SRzMyRiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyRzMyX0ZMT0FULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9G
TE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MzJHMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjMyRzMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1JHQkEzMkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VD
YXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkczMkYs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSMzJHMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IzMkczMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX0ZMT0FULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfRkxPQVQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Iz
MkczMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQTMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdM
X1JHMzJJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8o
R0xfUkczMkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZv
cm1hdDo6SUQ6OlIzMkczMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IzMkczMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMl9TSU5ULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMySSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBG
b3JtYXQgaW5mbyhHTF9SRzMySSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMl9TSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1NJTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Iz
MkczMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SMzJHMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUkdCQTMySSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEdMX1JHMzJVSToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IEZvcm1hdCBpbmZvKEdMX1JHMzJVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyRzMyX1VJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyX1VJTlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9X
TiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJH
MzJfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJJ
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHMzJVSSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMl9VSU5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJH
MzJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjMyRzMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IzMkczMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJfVUlOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMySSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4g
aW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHODoKICAgICAgICAgewotICAgICAg
ICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHOCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOF9VTk9STSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1VOT1JNLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfVU5P
Uk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4RzhfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQTgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkc4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOF9VTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SRzhJOgogICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkc4SSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOF9TSU5ULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU0lOVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TSU5U
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05P
V04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OF9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4SSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SRzhJLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOF9TSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4
RzhfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1JHQkE4SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAg
fQogICAgICAgICBjYXNlIEdMX1JHOFVJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMg
Y29uc3QgRm9ybWF0IGluZm8oR0xfUkc4VUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhfVUlOVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1VJTlQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VSU5ULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfVUlOVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfVUlOVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOEksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgRm9ybWF0IGluZm8oR0xfUkc4VUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4X1VJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfVUlOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9VSU5U
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
OEc4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1I4RzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xfUkdCQThJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2UgR0xfUkc4X1NOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGluZm8oR0xfUkc4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4X1NOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhfU05PUk0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TTk9STSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOF9TTk9S
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOF9TTk9STSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SRzhfU05PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4X1NOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4
X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SOEc4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4X1NOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOF9TTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5m
bzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjoKICAgICAgICAgewotICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5P
Uk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwg
MHhGRj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4
RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dO
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
OEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRp
YWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZGPik7CiAg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjEw
X0EyOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xf
UkdCMTBfQTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZv
cm1hdDo6SUQ6OlIxMEcxMEIxMEEyX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxMEcxMEIxMEEyX1VOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxMEcxMEIxMEEy
X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjEwRzEwQjEwQTJfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCQTE2X0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMp
OworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0IxMF9BMiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6
SUQ6OlIxMEcxMEIxMEEyX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVU5PUk0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxMEcx
MEIxMEEyX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2X0VYVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjEwX0EyVUk6CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0IxMF9BMlVJLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTBHMTBCMTBB
Ml9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxMEcxMEIxMEEyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5ULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjEwRzEwQjEwQTJfVUlOVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZJLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIEZvcm1hdCBpbmZvKEdMX1JHQjEwX0EyVUksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTBHMTBCMTBBMl9VSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTBHMTBC
MTBBMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9VSU5ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTBHMTBCMTBBMl9V
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZJ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCMTZG
OgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdC
MTZGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSMTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
RkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCQTE2RiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0
aWFsaXplNENvbXBvbmVudERhdGE8R0xoYWxmLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCBnbDo6
RmxvYXQxNk9uZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNl
Q2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQjE2
RiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1h
dDo6SUQ6OlIxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxP
QVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNkcxNkIxNkExNl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZGLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xoYWxm
LCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwLCBnbDo6RmxvYXQxNk9uZT4pOwogICAgICAgICAgICAg
cmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SR0IxNkk6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0IxNkksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcx
NkIxNkExNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2
X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2SSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVu
dERhdGE8R0xzaG9ydCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAxPiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCMTZJLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X1NJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1IxNkcxNkIxNkExNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Ix
NkcxNkIxNkExNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SR0JBMTZJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
bml0aWFsaXplNENvbXBvbmVudERhdGE8R0xzaG9ydCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwg
MHgwMDAxPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBj
YXNlIEdMX1JHQjE2VUk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3Jt
YXQgaW5mbyhHTF9SR0IxNlVJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfVUlOVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZf
VUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MTZHMTZCMTZBMTZfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQkExNlVJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVzaG9ydCwgMHgwMDAwLCAweDAwMDAs
IDB4MDAwMCwgMHgwMDAxPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xf
UkdCMTZVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2
X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1IxNkcxNkIxNkExNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2VUksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVz
aG9ydCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAxPik7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjE2X0VYVDoKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQjE2X0VYVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2
RzE2QjE2QTE2X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2
QjE2QTE2X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JH
QkExNl9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6
ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4RkZGRj4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQjE2X0VYVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIx
NkcxNkIxNkExNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIx
NkExNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZfRVhULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgw
MDAwLCAweDAwMDAsIDB4MDAwMCwgMHhGRkZGPik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjE2X1NOT1JNX0VYVDoKICAgICAgICAgewot
ICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQjE2X1NOT1JNX0VYVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6
UjE2RzE2QjE2QTE2X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9T
Tk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZfU05P
Uk1fRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0
Q29tcG9uZW50RGF0YTxHTHVzaG9ydCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHg3RkZGPiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCMTZfU05PUk1fRVhULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJ
RDo6UjE2RzE2QjE2QTE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBMTZfU05PUk1fRVhULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1c2hvcnQsIDB4
MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4N0ZGRj4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SR0IzMkY6CiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0IzMkYsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9GTE9B
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfRkxPQVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxH
TGZsb2F0LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCBnbDo6RmxvYXQzMk9u
ZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQjMyRiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIz
MkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJGLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xmbG9hdCwgMHgwMDAw
MDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgZ2w6OkZsb2F0MzJPbmU+KTsKICAgICAgICAg
ICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCMzJJOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCMzJJLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpS
MzJHMzJCMzJBMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIz
MkEzMl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEz
MkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21w
b25lbnREYXRhPEdMaW50LCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAw
MDAwMDAxPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBz
KTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCMzJJLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJ
RDo6UjMyRzMyQjMyQTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMy
QjMyQTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMzJJLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0xpbnQsIDB4MDAwMDAw
MDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDE+KTsKICAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCMzJVSToKICAgICAgICAg
ewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQjMyVUksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkcz
MkIzMkEzMl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMy
X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyVUks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25l
bnREYXRhPEdMdWludCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgwMDAw
MDAwMT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQjMyVUksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklE
OjpSMzJHMzJCMzJBMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJC
MzJBMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMlVJLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1aW50LCAweDAwMDAw
MDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAxPik7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjU2NToKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKFN1cHBvcnRzRm9ybWF0KERYR0lfRk9STUFUX0I1RzZSNV9VTk9S
TSwgZGV2aWNlQ2FwcykpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNv
bnN0IEZvcm1hdCBpbmZvKEdMX1JHQjU2NSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkI1RzZSNV9VTk9STSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc2
UjVfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX0I1RzZSNV9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBGb3JtYXQgaW5mbyhHTF9SR0I1NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QjVHNlI1X1VOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfQjVHNlI1X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNlI1X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I1RzZSNV9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1h
dCBpbmZvKEdMX1JHQjU2NSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThf
VU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAw
LCAweDAwLCAweDAwLCAweEZGPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3Jt
YXQgaW5mbyhHTF9SR0I1NjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRp
YWxpemU0Q29tcG9uZW50RGF0YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZGPik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTE1NzAsMjEgKzE1NjYsMzQgQEAgY29uc3QgRm9ybWF0ICZGb3JtYXQ6OkdldChHTGVudW0gaW50
ZXJuYWxGb3JtYXQsIGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZkZXYKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKFN1cHBvcnRzRm9ybWF0KERYR0lfRk9STUFUX0I1RzVSNUExX1VOT1JN
LCBkZXZpY2VDYXBzKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGluZm8oR0xfUkdCNV9BMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkI1RzVSNUExX1VOT1JNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9S
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
QjVHNVI1QTFfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX0I1RzVSNUExX1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCNV9BMSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCNUc1UjVBMV9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9S
TUFUX0I1RzVSNUExX1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfQjVHNVI1QTFfVU5PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNUc1UjVBMV9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VO
S05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9CNUc1UjVBMV9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1JHQkE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQjVfQTEsCisgICAgICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0I1X0ExLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5mbzsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQjg6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCOCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6
OlI4RzhCOEE4X1VOT1JNLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCkBAIC0xNTkyLDIyNiAr
MTYwMSwyMTAgQEAgY29uc3QgRm9ybWF0ICZGb3JtYXQ6OkdldChHTGVudW0gaW50ZXJuYWxGb3Jt
YXQsIGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZkZXYKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjYXNlIEdM
X1JHQjg6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhH
TF9SR0I4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpSOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VO
T1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29tcG9uZW50RGF0
YTxHTHVieXRlLCAweDAwLCAweDAwLCAweDAwLCAweEZGPiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAsIDB4
MDAsIDB4MDAsIDB4RkY+KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgR0xfUkdCOEk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25z
dCBGb3JtYXQgaW5mbyhHTF9SR0I4SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfU0lOVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThf
U0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9V
TktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFU
X1I4RzhCOEE4X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
UkdCQThJLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0
Q29tcG9uZW50RGF0YTxHTGJ5dGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDE+LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0I4SSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1NJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhC
OEE4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1I4RzhCOEE4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NJTlQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4SSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRh
PEdMYnl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMT4pOwogICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SR0I4VUk6CiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0I4VUksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VJTlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4
QThfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1I4RzhCOEE4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX1JHQkE4VUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSW5pdGlhbGl6ZTRDb21wb25lbnREYXRhPEdMdWJ5dGUsIDB4MDAsIDB4MDAsIDB4
MDAsIDB4MDE+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNh
cHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0I4VUks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSOEc4QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SOEc4QjhBOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9SR0JBOFVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ
bml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMT4p
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9S
R0I4X1NOT1JNOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGlu
Zm8oR0xfUkdCOF9TTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4
X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4X1NO
T1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemU0Q29t
cG9uZW50RGF0YTxHTGJ5dGUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4N0Y+LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0I4X1NOT1JNLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfU05PUk0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4
RzhCOEE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU05PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4X1NOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVu
dERhdGE8R0xieXRlLCAweDAwLCAweDAwLCAweDAwLCAweDdGPik7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQjlfRTU6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0I5X0U1LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOUc5QjlF
NV9TSEFSRURFWFAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1I5RzlCOUU1X1NIQVJFREVYUCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNkZfRVhULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQjlfRTUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOUc5QjlFNV9TSEFSRURFWFAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I5
RzlCOUU1X1NIQVJFREVYUCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjlHOUI5RTVfU0hBUkVERVhQLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOUc5QjlFNV9TSEFS
RURFWFAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEx
NkZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
KTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xf
UkdCQToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdM
X1JHQkEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1h
dDo6SUQ6OlI4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5P
Uk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCQSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0
dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9SR0JBMTZGOgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCQTE2RiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2
QjE2QTE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2
QTE2X0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEx
NkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCQTE2RiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkEx
Nl9GTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfRkxPQVQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9B
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9SR0JBMTZGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgR0xfUkdCQTE2SToKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNv
bnN0IEZvcm1hdCBpbmZvKEdMX1JHQkExNkksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9TSU5ULAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5U
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcx
NkIxNkExNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2SSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5m
byhHTF9SR0JBMTZJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZC
MTZBMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZJLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJl
dHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCQTE2VUk6CiAgICAgICAg
IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0JBMTZVSSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2
RzE2QjE2QTE2X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZB
MTZfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZV
SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0JBMTZVSSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkEx
Nl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMTZHMTZCMTZBMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VSU5ULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktO
T1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMTZHMTZCMTZBMTZfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfUkdCQTE2VUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBHTF9SR0JBMTZfRVhUOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IGluZm8oR0xfUkdCQTE2X0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X1VOT1JNLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9V
Tk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MTZHMTZCMTZBMTZfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkExNl9FWFQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Rm9ybWF0IGluZm8oR0xfUkdCQTE2X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2
QTE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2
QTE2X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0JBMTZfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
R0xfUkdCQTE2X1NOT1JNX0VYVDoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0
IEZvcm1hdCBpbmZvKEdMX1JHQkExNl9TTk9STV9FWFQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9TTk9STSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZB
MTZfU05PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjE2RzE2QjE2QTE2X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTE2X1NOT1JNX0VYVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBG
b3JtYXQgaW5mbyhHTF9SR0JBMTZfU05PUk1fRVhULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X1NOT1JNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMTZH
MTZCMTZBMTZfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjE2RzE2QjE2QTE2X1NO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBMTZf
U05PUk1fRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyKTsKICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
R0xfUkdCQTMyRjoKICAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBp
bmZvKEdMX1JHQkEzMkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZM
T0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Iz
MkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBMzJGLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2
aWNlQ2Fwcyk7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JH
QkEzMkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMy
X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9GTE9BVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1
cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQkEzMkk6CiAgICAgICAgIHsK
LSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0JBMzJJLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMzJHMzJC
MzJBMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9T
SU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMkksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCQTMySSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9TSU5U
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SMzJH
MzJCMzJBMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xfUkdCQTMySSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7CiAgICAgICAgICAgICByZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNl
IEdMX1JHQkEzMlVJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0
IGluZm8oR0xfUkdCQTMyVUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9VSU5ULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9VSU5ULAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9V
SU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1Iz
MkczMkIzMkEzMl9VSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERY
R0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfUkdCQTMyVUksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZp
Y2VDYXBzKTsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdC
QTMyVUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpSMzJHMzJCMzJBMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IzMkczMkIzMkEzMl9V
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9SMzJHMzJCMzJBMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX1VJTlQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMlVJLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybiBp
bmZvOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfUkdCQTQ6CiAgICAgICAgIHsKICAgICAg
ICAgICAgIGlmIChTdXBwb3J0c0Zvcm1hdChEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSwgZGV2
aWNlQ2FwcykpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZv
cm1hdCBpbmZvKEdMX1JHQkE0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QjRHNFI0QTRfVU5PUk0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNEc0UjRB
NF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfQjRHNFI0QTRfVU5PUk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX0I0RzRSNEE0X1VOT1JNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBNCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0JBNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCNEc0UjRBNF9VTk9STSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX0I0RzRS
NEE0X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RFhHSV9GT1JNQVRfQjRHNFI0QTRfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9CNEc0UjRBNF9VTk9STSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9C
NEc0UjRBNF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQkE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RhdGlj
IGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQkE0LAorICAgICAgICAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCQTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
UjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOworICAgICAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQTg6CisgICAgICAgIHsKKyAgICAgICAg
ICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCQTgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9V
Tk9STSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLApAQCAtMTgxOSwxMjMgKzE4MTIsMTAwIEBA
IGNvbnN0IEZvcm1hdCAmRm9ybWF0OjpHZXQoR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBS
ZW5kZXJlcjExRGV2aWNlQ2FwcyAmZGV2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGlu
Zm87Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBHTF9SR0JBODoKLSAg
ICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEZvcm1hdCBpbmZvKEdMX1JHQkE4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpS
OEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JHQkE4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBHTF9SR0JBOEk6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRp
YyBjb25zdCBGb3JtYXQgaW5mbyhHTF9SR0JBOEksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1NJTlQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfU0lOVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9T
SU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4
RzhCOEE4X1NJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1JHQkE4SSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOwor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0JBOEksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpS
OEc4QjhBOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4
QjhBOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9S
R0JBOEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIp
OwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9S
R0JBOFVJOgogICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8o
R0xfUkdCQThVSSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6
Rm9ybWF0OjpJRDo6UjhHOEI4QThfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VSU5ULAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VJTlQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VJ
TlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThVSSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0JBOFVJLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVUlOVCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4
QThfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVUlOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThVSSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1JHQkE4X1NOT1JNOgogICAg
ICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfUkdCQThfU05P
Uk0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6
SUQ6OlI4RzhCOEE4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOF9TTk9STSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0JBOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1NOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOEI4QThfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1NOT1JNLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SR0JBOF9TTk9STSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKICAgICAgICAgfQogICAgICAgICBjYXNlIEdMX1NSR0I4OgogICAgICAgICB7
Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfU1JHQjgsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4
X1VOT1JNX1NSR0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhB
OF9VTk9STV9TUkdCLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NS
R0I4X0FMUEhBOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFs
aXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHhGRj4sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1NSR0I4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfVU5P
Uk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhHOEI4QThfVU5PUk1f
U1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfUjhHOEI4QThfVU5PUk1fU1JHQiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfU1JHQjhfQUxQSEE4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwg
MHgwMCwgMHgwMCwgMHhGRj4pOwogICAgICAgICAgICAgcmV0dXJuIGluZm87CiAgICAgICAgIH0K
ICAgICAgICAgY2FzZSBHTF9TUkdCOF9BTFBIQTg6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0
YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhHTF9TUkdCOF9BTFBIQTgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNX1NS
R0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjhH
OEI4QThfVU5PUk1fU1JHQiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1I4RzhCOEE4X1VOT1JNX1NSR0IsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5LTk9XTiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9T
UkdCLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NSR0I4X0FMUEhB
OCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9TUkdCOF9BTFBIQTgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhB
OF9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE
WEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9V
Tk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJ
X0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STV9TUkdCLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9TUkdCOF9BTFBIQTgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuIGluZm87
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMX0lOREVYODoKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKE9ubHlGTDEwUGx1cyhkZXZpY2VDYXBzKSkKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgRm9ybWF0IGluZm8oR0xfU1RFTkNJTF9JTkRF
WDgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpEMjRfVU5PUk1fUzhfVUlOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0RzhfVFlQRUxFU1MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVT
UywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRf
VU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9G
T1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1IyNF9VTk9STV9YOF9UWVBFTEVTUywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGV2aWNlQ2Fwcyk7CisgICAgICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9TVEVOQ0lMX0lOREVYOCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpEMjRfVU5P
Uk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERYR0lfRk9STUFUX1IyNEc4X1RZUEVMRVNTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERYR0lf
Rk9STUFUX0QyNF9VTk9STV9TOF9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfUjI0X1VOT1JNX1g4X1RZUEVMRVNTLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQTMyRiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwogICAgICAg
ICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhH
TF9TVEVOQ0lMX0lOREVYOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkQyNF9VTk9STV9TOF9VSU5ULAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfVU5L
Tk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JN
QVRfVU5LTk9XTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhH
SV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JHQkEzMkYsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRldmljZUNhcHMpOworICAgICAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Rm9ybWF0IGluZm8oR0xfU1RFTkNJTF9JTkRFWDgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RDI0X1VOT1JNX1M4X1VJTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1B
VF9EMjRfVU5PUk1fUzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIERYR0lfRk9STUFUX1VOS05PV04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEWEdJX0ZPUk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhHSV9GT1JNQVRfRDI0X1VOT1JNX1M4X1VJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWEdJX0ZP
Uk1BVF9VTktOT1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfUkdCQTMyRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOwogICAgICAgICAgICAgICAgIHJldHVybiBpbmZvOwogICAgICAgICAgICAg
fQogICAgICAgICB9CkBAIC0xOTQ2LDcgKzE5MTYsNyBAQCBjb25zdCBGb3JtYXQgJkZvcm1hdDo6
R2V0KEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgUmVuZGVyZXIxMURldmljZUNhcHMgJmRl
dgogICAgIC8vIGNsYW5nLWZvcm1hdCBvbgogCiAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICBzdGF0
aWMgY29uc3QgRm9ybWF0IGRlZmF1bHRJbmZvOworICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0
IGRlZmF1bHRJbmZvOwogICAgIHJldHVybiBkZWZhdWx0SW5mbzsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90
ZXh0dXJlX2Zvcm1hdF90YWJsZV91dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZV91dGlscy5o
CmluZGV4IGJmZmVhNmFmOTIwLi4xNGFmOGE3MGZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1h
dF90YWJsZV91dGlscy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFibGVfdXRpbHMuaApAQCAtMzUs
NyArMzUsNyBAQCBpbmxpbmUgYm9vbCBTdXBwb3J0c0Zvcm1hdChEWEdJX0ZPUk1BVCBmb3JtYXQs
IGNvbnN0IFJlbmRlcmVyMTFEZXZpY2VDYXBzICZkZXZpYwogICAgICAgICAgICAgICAgICAgICAg
ICBEM0QxMV9GT1JNQVRfU1VQUE9SVF9TSEFERVJfU0FNUExFIHwgRDNEMTFfRk9STUFUX1NVUFBP
UlRfTUlQIHwKICAgICAgICAgICAgICAgICAgICAgICAgRDNEMTFfRk9STUFUX1NVUFBPUlRfUkVO
REVSX1RBUkdFVDsKIAotICAgIGlmIChkM2QxMV9nbDo6R2V0TWF4aW11bUNsaWVudFZlcnNpb24o
ZGV2aWNlQ2Fwcy5mZWF0dXJlTGV2ZWwpID4gMikKKyAgICBpZiAoZDNkMTFfZ2w6OkdldE1heGlt
dW1DbGllbnRWZXJzaW9uKGRldmljZUNhcHMuZmVhdHVyZUxldmVsKS5tYWpvciA+IDIpCiAgICAg
ewogICAgICAgICBtdXN0U3VwcG9ydCB8PSBEM0QxMV9GT1JNQVRfU1VQUE9SVF9URVhUVVJFM0Q7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9Db3JlV2luZG93TmF0aXZlV2luZG93LmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lu
cnQvQ29yZVdpbmRvd05hdGl2ZVdpbmRvdy5jcHAKaW5kZXggMDIxMWU2ODg3YTUuLjM2ZTRiZDBh
MTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3dpbnJ0L0NvcmVXaW5kb3dOYXRpdmVXaW5kb3cuY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lu
cnQvQ29yZVdpbmRvd05hdGl2ZVdpbmRvdy5jcHAKQEAgLTY0LDcgKzY0LDggQEAgYm9vbCBDb3Jl
V2luZG93TmF0aXZlV2luZG93Ojppbml0aWFsaXplKEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93
LCBJUHJvcGVydHlTZXQKICAgICAgICAgLy8gQSBFR0xSZW5kZXJTdXJmYWNlU2l6ZVByb3BlcnR5
IGFuZCBhIEVHTFJlbmRlclJlc29sdXRpb25TY2FsZVByb3BlcnR5IGNhbid0IGJvdGggYmUgc3Bl
Y2lmaWVkCiAgICAgICAgIGlmIChtU3dhcENoYWluU2NhbGVTcGVjaWZpZWQgJiYgbVN3YXBDaGFp
blNpemVTcGVjaWZpZWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEVSUigiSXQgaXMgaW52YWxp
ZCB0byBzcGVjaWZ5IGJvdGggYW4gRUdMUmVuZGVyU3VyZmFjZVNpemVQcm9wZXJ0eSBhbmQgYSBF
R0xSZW5kZXJSZXNvbHV0aW9uU2NhbGVQcm9wZXJ0eS4iKTsKKyAgICAgICAgICAgIEVSUigpIDw8
ICJJdCBpcyBpbnZhbGlkIHRvIHNwZWNpZnkgYm90aCBhbiBFR0xSZW5kZXJTdXJmYWNlU2l6ZVBy
b3BlcnR5IGFuZCBhICIKKyAgICAgICAgICAgICAgICAgICAgICJFR0xSZW5kZXJSZXNvbHV0aW9u
U2NhbGVQcm9wZXJ0eS4iOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS93aW5ydC9JbnNwZWN0YWJsZU5hdGl2ZVdpbmRvdy5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0
L0luc3BlY3RhYmxlTmF0aXZlV2luZG93LmNwcAppbmRleCBjN2ZjZjg2MzRiYi4uY2M4MTUyMTMy
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvd2lucnQvSW5zcGVjdGFibGVOYXRpdmVXaW5kb3cuY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lu
cnQvSW5zcGVjdGFibGVOYXRpdmVXaW5kb3cuY3BwCkBAIC0yNSw3ICsyNSw3IEBAIGJvb2wgSXND
b3JlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBDb21QdHI8QUJJOjpXaW5kb3dz
OjpVSTo6Q29yZTo6SUNvCiAgICAgewogICAgICAgICBpZiAoY29yZVdpbmRvdyAhPSBudWxscHRy
KQogICAgICAgICB7Ci0gICAgICAgICAgICAqY29yZVdpbmRvdyA9IGNvcmVXaW4uRGV0YWNoKCk7
CisgICAgICAgICAgICAqY29yZVdpbmRvdyA9IGNvcmVXaW47CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNDYsNyArNDYsNyBAQCBib29sIElzU3dhcENoYWluUGFu
ZWwoRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIENvbVB0cjxBQkk6OldpbmRvd3M6OlVJOjpY
YW1sOgogICAgIHsKICAgICAgICAgaWYgKHN3YXBDaGFpblBhbmVsICE9IG51bGxwdHIpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgICpzd2FwQ2hhaW5QYW5lbCA9IHBhbmVsLkRldGFjaCgpOworICAg
ICAgICAgICAgKnN3YXBDaGFpblBhbmVsID0gcGFuZWw7CiAgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgfQpAQCAtODMsNyArODMsOCBAQCBib29sIElzRUdMQ29uZmlndXJlZFBy
b3BlcnR5U2V0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBBQkk6OldpbmRvd3M6OkZvdW5k
YQogICAgIC8vIGNvbnNpZGVyZWQgaW52YWxpZC4KICAgICBpZiAoU1VDQ0VFREVEKHJlc3VsdCkg
JiYgIWhhc0VnbE5hdGl2ZVdpbmRvd1Byb3BlcnR5S2V5KQogICAgIHsKLSAgICAgICAgRVJSKCJD
b3VsZCBub3QgZmluZCBFR0xOYXRpdmVXaW5kb3dUeXBlUHJvcGVydHkgaW4gSVByb3BlcnR5U2V0
LiBWYWxpZCBFR0xOYXRpdmVXaW5kb3dUeXBlUHJvcGVydHkgdmFsdWVzIGluY2x1ZGUgSUNvcmVX
aW5kb3ciKTsKKyAgICAgICAgRVJSKCkgPDwgIkNvdWxkIG5vdCBmaW5kIEVHTE5hdGl2ZVdpbmRv
d1R5cGVQcm9wZXJ0eSBpbiBJUHJvcGVydHlTZXQuIFZhbGlkICIKKyAgICAgICAgICAgICAgICAg
IkVHTE5hdGl2ZVdpbmRvd1R5cGVQcm9wZXJ0eSB2YWx1ZXMgaW5jbHVkZSBJQ29yZVdpbmRvdyI7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvTmF0aXZl
V2luZG93MTFXaW5SVC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L05hdGl2ZVdpbmRvdzExV2luUlQuY3BwCmluZGV4IGE1
Y2U0Y2E2OGFkLi4yZWYyMjM1Yzg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9OYXRpdmVXaW5kb3cxMVdp
blJULmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL3dpbnJ0L05hdGl2ZVdpbmRvdzExV2luUlQuY3BwCkBAIC02Miw5ICs2Miw4
IEBAIGJvb2wgTmF0aXZlV2luZG93MTFXaW5SVDo6aW5pdGlhbGl6ZSgpCiAgICAgfQogICAgIGVs
c2UKICAgICB7Ci0gICAgICAgIEVSUigKLSAgICAgICAgICAgICJJbnZhbGlkIElJbnNwZWN0YWJs
ZSBFR0xOYXRpdmVXaW5kb3dUeXBlIGRldGVjdGVkLiBWYWxpZCBJSW5zcGVjdGFibGVzIGluY2x1
ZGUgIgotICAgICAgICAgICAgIklDb3JlV2luZG93LCBJU3dhcENoYWluUGFuZWwgYW5kIElQcm9w
ZXJ0eVNldCIpOworICAgICAgICBFUlIoKSA8PCAiSW52YWxpZCBJSW5zcGVjdGFibGUgRUdMTmF0
aXZlV2luZG93VHlwZSBkZXRlY3RlZC4gVmFsaWQgSUluc3BlY3RhYmxlcyBpbmNsdWRlICIKKyAg
ICAgICAgICAgICAgICAgIklDb3JlV2luZG93LCBJU3dhcENoYWluUGFuZWwgYW5kIElQcm9wZXJ0
eVNldCI7CiAgICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9Td2Fw
Q2hhaW5QYW5lbE5hdGl2ZVdpbmRvdy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L1N3YXBDaGFpblBhbmVsTmF0aXZlV2lu
ZG93LmNwcAppbmRleCAxZGFlMWFkN2RkZS4uMDg4NzI1NzI5YzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQv
U3dhcENoYWluUGFuZWxOYXRpdmVXaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvd2lucnQvU3dhcENoYWluUGFuZWxO
YXRpdmVXaW5kb3cuY3BwCkBAIC03OCw3ICs3OCw4IEBAIEhSRVNVTFQgUnVuT25VSVRocmVhZChD
T0RFICYmY29kZSwgY29uc3QgQ29tUHRyPElDb3JlRGlzcGF0Y2hlcj4gJmRpc3BhdGNoZXIpCiAg
ICAgICAgICAgICAvLyB1bnJlY292ZXJhYmxlIHN0YXRlIChwcm9iYWJseSBkZWFkbG9ja2VkKS4g
V2UgdGhlcmVmb3JlIHRlcm1pbmF0ZSB0aGUgYXBwbGljYXRpb24KICAgICAgICAgICAgIC8vIGVu
dGlyZWx5LiBUaGlzIGFsc28gcHJldmVudHMgc3RhY2sgY29ycnVwdGlvbiBpZiB0aGUgYXN5bmMg
b3BlcmF0aW9uIGlzIGV2ZW50dWFsbHkKICAgICAgICAgICAgIC8vIHJ1bi4KLSAgICAgICAgICAg
IEVSUigiVGltZW91dCB3YWl0aW5nIGZvciBhc3luYyBhY3Rpb24gb24gVUkgdGhyZWFkLiBUaGUg
VUkgdGhyZWFkIG1pZ2h0IGJlIGJsb2NrZWQuIik7CisgICAgICAgICAgICBFUlIoKQorICAgICAg
ICAgICAgICAgIDw8ICJUaW1lb3V0IHdhaXRpbmcgZm9yIGFzeW5jIGFjdGlvbiBvbiBVSSB0aHJl
YWQuIFRoZSBVSSB0aHJlYWQgbWlnaHQgYmUgYmxvY2tlZC4iOwogICAgICAgICAgICAgc3RkOjp0
ZXJtaW5hdGUoKTsKICAgICAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgICAgIH0KQEAgLTEz
Miw3ICsxMzMsOCBAQCBib29sIFN3YXBDaGFpblBhbmVsTmF0aXZlV2luZG93Ojppbml0aWFsaXpl
KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LCBJUHJvcGVydAogICAgICAgICAvLyBBIEVHTFJl
bmRlclN1cmZhY2VTaXplUHJvcGVydHkgYW5kIGEgRUdMUmVuZGVyUmVzb2x1dGlvblNjYWxlUHJv
cGVydHkgY2FuJ3QgYm90aCBiZSBzcGVjaWZpZWQKICAgICAgICAgaWYgKG1Td2FwQ2hhaW5TY2Fs
ZVNwZWNpZmllZCAmJiBtU3dhcENoYWluU2l6ZVNwZWNpZmllZCkKICAgICAgICAgewotICAgICAg
ICAgICAgRVJSKCJJdCBpcyBpbnZhbGlkIHRvIHNwZWNpZnkgYm90aCBhbiBFR0xSZW5kZXJTdXJm
YWNlU2l6ZVByb3BlcnR5IGFuZCBhIEVHTFJlbmRlclJlc29sdXRpb25TY2FsZVByb3BlcnR5LiIp
OworICAgICAgICAgICAgRVJSKCkgPDwgIkl0IGlzIGludmFsaWQgdG8gc3BlY2lmeSBib3RoIGFu
IEVHTFJlbmRlclN1cmZhY2VTaXplUHJvcGVydHkgYW5kIGEgIgorICAgICAgICAgICAgICAgICAg
ICAgIkVHTFJlbmRlclJlc29sdXRpb25TY2FsZVByb3BlcnR5LiI7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNTIsNCArMzU0LDQgQEAgSFJFU1VMVCBH
ZXRTd2FwQ2hhaW5QYW5lbFNpemUoCiAKICAgICByZXR1cm4gcmVzdWx0OwogfQotfQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9CbGl0OS5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQmxpdDkuY3BwCmlu
ZGV4IDMzM2YyNTA3MDlhLi40M2M4MWMzYWMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0JsaXQ5LmNwcAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQmxp
dDkuY3BwCkBAIC03LDYgKzcsOCBAQAogLy8gQmxpdDkuY3BwOiBTdXJmYWNlIGNvcHkgdXRpbGl0
eSBjbGFzcy4KIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0JsaXQ5Lmgi
CisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4dHVyZUQzRC5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVyOV91dGlscy5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L2Zvcm1hdHV0aWxzOS5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1RleHR1cmVTdG9yYWdlOS5oIgpAQCAtMjAsMjcg
KzIyLDM0IEBAIG5hbWVzcGFjZQogewogLy8gUHJlY29tcGlsZWQgc2hhZGVycwogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvc3RhbmRhcmR2cy5o
IgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQv
ZmxpcHl2cy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMv
Y29tcGlsZWQvcGFzc3Rocm91Z2hwcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvbHVtaW5hbmNlcHMuaCIKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2x1bWluYW5jZXByZW11bHRwcy5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQv
bHVtaW5hbmNldW5tdWx0cHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
OS9zaGFkZXJzL2NvbXBpbGVkL2NvbXBvbmVudG1hc2twcy5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvY29tcG9uZW50bWFza3ByZW11bHRw
cy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGls
ZWQvY29tcG9uZW50bWFza3VubXVsdHBzLmgiCiAKLWNvbnN0IEJZVEUqIGNvbnN0IGdfc2hhZGVy
Q29kZVtdID0KLXsKK2NvbnN0IEJZVEUgKmNvbnN0IGdfc2hhZGVyQ29kZVtdID0gewogICAgIGdf
dnMyMF9zdGFuZGFyZHZzLAotICAgIGdfdnMyMF9mbGlweXZzLAogICAgIGdfcHMyMF9wYXNzdGhy
b3VnaHBzLAogICAgIGdfcHMyMF9sdW1pbmFuY2VwcywKLSAgICBnX3BzMjBfY29tcG9uZW50bWFz
a3BzCisgICAgZ19wczIwX2x1bWluYW5jZXByZW11bHRwcywKKyAgICBnX3BzMjBfbHVtaW5hbmNl
dW5tdWx0cHMsCisgICAgZ19wczIwX2NvbXBvbmVudG1hc2twcywKKyAgICBnX3BzMjBfY29tcG9u
ZW50bWFza3ByZW11bHRwcywKKyAgICBnX3BzMjBfY29tcG9uZW50bWFza3VubXVsdHBzLAogfTsK
IAotY29uc3Qgc2l6ZV90IGdfc2hhZGVyU2l6ZVtdID0KLXsKK2NvbnN0IHNpemVfdCBnX3NoYWRl
clNpemVbXSA9IHsKICAgICBzaXplb2YoZ192czIwX3N0YW5kYXJkdnMpLAotICAgIHNpemVvZihn
X3ZzMjBfZmxpcHl2cyksCiAgICAgc2l6ZW9mKGdfcHMyMF9wYXNzdGhyb3VnaHBzKSwKICAgICBz
aXplb2YoZ19wczIwX2x1bWluYW5jZXBzKSwKLSAgICBzaXplb2YoZ19wczIwX2NvbXBvbmVudG1h
c2twcykKKyAgICBzaXplb2YoZ19wczIwX2x1bWluYW5jZXByZW11bHRwcyksCisgICAgc2l6ZW9m
KGdfcHMyMF9sdW1pbmFuY2V1bm11bHRwcyksCisgICAgc2l6ZW9mKGdfcHMyMF9jb21wb25lbnRt
YXNrcHMpLAorICAgIHNpemVvZihnX3BzMjBfY29tcG9uZW50bWFza3ByZW11bHRwcyksCisgICAg
c2l6ZW9mKGdfcHMyMF9jb21wb25lbnRtYXNrdW5tdWx0cHMpLAogfTsKIH0KIApAQCAtNzUsNyAr
ODQsNyBAQCBnbDo6RXJyb3IgQmxpdDk6OmluaXRpYWxpemUoKQogewogICAgIGlmIChtR2VvbWV0
cnlMb2FkZWQpCiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsK
KyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0
IGZsb2F0IHF1YWRbXSA9CkBAIC0xMjUsNyArMTM0LDcgQEAgZ2w6OkVycm9yIEJsaXQ5Ojppbml0
aWFsaXplKCkKICAgICB9CiAKICAgICBtR2VvbWV0cnlMb2FkZWQgPSB0cnVlOwotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQog
CiB0ZW1wbGF0ZSA8Y2xhc3MgRDNEU2hhZGVyVHlwZT4KQEAgLTE1NSw3ICsxNjQsNyBAQCBnbDo6
RXJyb3IgQmxpdDk6OnNldFNoYWRlcihTaGFkZXJJZCBzb3VyY2UsIGNvbnN0IGNoYXIgKnByb2Zp
bGUsCiAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkZhaWxlZCB0
byBzZXQgc2hhZGVyIGZvciBibGl0IG9wZXJhdGlvbiwgcmVzdWx0OiAweCVYLiIsIGhyKTsKICAg
ICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEJsaXQ5OjpzZXRWZXJ0ZXhTaGFkZXIoU2hhZGVy
SWQgc2hhZGVyKQpAQCAtMTgyLDExICsxOTEsMTkgQEAgUkVDVCBCbGl0OTo6Z2V0U3VyZmFjZVJl
Y3QoSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UpIGNvbnN0CiAgICAgcmV0dXJuIHJlY3Q7CiB9
CiAKK2dsOjpFeHRlbnRzIEJsaXQ5OjpnZXRTdXJmYWNlU2l6ZShJRGlyZWN0M0RTdXJmYWNlOSAq
c3VyZmFjZSkgY29uc3QKK3sKKyAgICBEM0RTVVJGQUNFX0RFU0MgZGVzYzsKKyAgICBzdXJmYWNl
LT5HZXREZXNjKCZkZXNjKTsKKworICAgIHJldHVybiBnbDo6RXh0ZW50cyhkZXNjLldpZHRoLCBk
ZXNjLkhlaWdodCwgMSk7Cit9CisKIGdsOjpFcnJvciBCbGl0OTo6Ym94RmlsdGVyKElEaXJlY3Qz
RFN1cmZhY2U5ICpzb3VyY2UsIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0KQogewogICAgIEFOR0xF
X1RSWShpbml0aWFsaXplKCkpOwogCi0gICAgSURpcmVjdDNEVGV4dHVyZTkgKnRleHR1cmUgPSBO
VUxMOworICAgIElEaXJlY3QzREJhc2VUZXh0dXJlOSAqdGV4dHVyZSA9IE5VTEw7CiAgICAgQU5H
TEVfVFJZKGNvcHlTdXJmYWNlVG9UZXh0dXJlKHNvdXJjZSwgZ2V0U3VyZmFjZVJlY3Qoc291cmNl
KSwgJnRleHR1cmUpKTsKIAogICAgIElEaXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJl
ci0+Z2V0RGV2aWNlKCk7CkBAIC0yMDMsNyArMjIwLDggQEAgZ2w6OkVycm9yIEJsaXQ5Ojpib3hG
aWx0ZXIoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3Qp
CiAgICAgZGV2aWNlLT5TZXRTYW1wbGVyU3RhdGUoMCwgRDNEU0FNUF9NSU5GSUxURVIsIEQzRFRF
WEZfTElORUFSKTsKICAgICBkZXZpY2UtPlNldFNhbXBsZXJTdGF0ZSgwLCBEM0RTQU1QX01BR0ZJ
TFRFUiwgRDNEVEVYRl9MSU5FQVIpOwogCi0gICAgc2V0Vmlld3BvcnQoZ2V0U3VyZmFjZVJlY3Qo
ZGVzdCksIGdsOjpPZmZzZXQoMCwgMCwgMCkpOworICAgIHNldFZpZXdwb3J0QW5kU2hhZGVyQ29u
c3RhbnRzKGdldFN1cmZhY2VSZWN0KHNvdXJjZSksIGdldFN1cmZhY2VTaXplKHNvdXJjZSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0U3VyZmFjZVJlY3QoZGVzdCksIGZh
bHNlKTsKIAogICAgIHJlbmRlcigpOwogCkBAIC0yMTEsNyArMjI5LDcgQEAgZ2w6OkVycm9yIEJs
aXQ5Ojpib3hGaWx0ZXIoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZSwgSURpcmVjdDNEU3VyZmFj
ZTkgKmRlc3QpCiAKICAgICByZXN0b3JlU3RhdGUoKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3Io
R0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3Ig
QmxpdDk6OmNvcHkyRChjb25zdCBnbDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLCBjb25zdCBS
RUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwgY29uc3QgZ2w6Ok9mZnNldCAmZGVz
dE9mZnNldCwgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIEdMaW50IGxldmVsKQpAQCAtMjM4LDcg
KzI1Niw4IEBAIGdsOjpFcnJvciBCbGl0OTo6Y29weTJEKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAq
ZnJhbWVidWZmZXIsIGNvbnN0IFJFQ1QgJnNvdXJjZVJlCiAgICAgfQogICAgIEFTU0VSVChkZXN0
U3VyZmFjZSk7CiAKLSAgICBnbDo6RXJyb3IgcmVzdWx0ID0gY29weShzb3VyY2UsIHNvdXJjZVJl
Y3QsIGRlc3RGb3JtYXQsIGRlc3RPZmZzZXQsIGRlc3RTdXJmYWNlKTsKKyAgICBnbDo6RXJyb3Ig
cmVzdWx0ID0KKyAgICAgICAgY29weShzb3VyY2UsIG51bGxwdHIsIHNvdXJjZVJlY3QsIGRlc3RG
b3JtYXQsIGRlc3RPZmZzZXQsIGRlc3RTdXJmYWNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKIAog
ICAgIFNhZmVSZWxlYXNlKGRlc3RTdXJmYWNlKTsKICAgICBTYWZlUmVsZWFzZShzb3VyY2UpOwpA
QCAtMjc4LDcgKzI5Nyw4IEBAIGdsOjpFcnJvciBCbGl0OTo6Y29weUN1YmUoY29uc3QgZ2w6OkZy
YW1lYnVmZmVyICpmcmFtZWJ1ZmZlciwgY29uc3QgUkVDVCAmc291cmNlCiAgICAgfQogICAgIEFT
U0VSVChkZXN0U3VyZmFjZSk7CiAKLSAgICBnbDo6RXJyb3IgcmVzdWx0ID0gY29weShzb3VyY2Us
IHNvdXJjZVJlY3QsIGRlc3RGb3JtYXQsIGRlc3RPZmZzZXQsIGRlc3RTdXJmYWNlKTsKKyAgICBn
bDo6RXJyb3IgcmVzdWx0ID0KKyAgICAgICAgY29weShzb3VyY2UsIG51bGxwdHIsIHNvdXJjZVJl
Y3QsIGRlc3RGb3JtYXQsIGRlc3RPZmZzZXQsIGRlc3RTdXJmYWNlLCBmYWxzZSwgZmFsc2UsIGZh
bHNlKTsKIAogICAgIFNhZmVSZWxlYXNlKGRlc3RTdXJmYWNlKTsKICAgICBTYWZlUmVsZWFzZShz
b3VyY2UpOwpAQCAtMjg2LDcgKzMwNiw2MyBAQCBnbDo6RXJyb3IgQmxpdDk6OmNvcHlDdWJlKGNv
bnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsIGNvbnN0IFJFQ1QgJnNvdXJjZQogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLWdsOjpFcnJvciBCbGl0OTo6Y29weShJRGlyZWN0M0RTdXJm
YWNlOSAqc291cmNlLCBjb25zdCBSRUNUICZzb3VyY2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwg
Y29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwgSURpcmVjdDNEU3VyZmFjZTkgKmRlc3QpCitn
bDo6RXJyb3IgQmxpdDk6OmNvcHlUZXh0dXJlMkQoY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzb3VyY2VMZXZlbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSRUNUICZzb3VyY2VSZWN0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZGVzdExldmVsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgZmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBwcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgdW5tdWx0aXBseUFscGhhKQoreworICAgIEFOR0xFX1RSWShpbml0aWFsaXplKCkpOwor
CisgICAgY29uc3QgVGV4dHVyZUQzRCAqc291cmNlRDNEID0gR2V0SW1wbEFzPFRleHR1cmVEM0Q+
KHNvdXJjZSk7CisKKyAgICBUZXh0dXJlU3RvcmFnZSAqc291cmNlU3RvcmFnZSA9IG51bGxwdHI7
CisgICAgQU5HTEVfVFJZKGNvbnN0X2Nhc3Q8VGV4dHVyZUQzRCAqPihzb3VyY2VEM0QpLT5nZXRO
YXRpdmVUZXh0dXJlKCZzb3VyY2VTdG9yYWdlKSk7CisKKyAgICBUZXh0dXJlU3RvcmFnZTlfMkQg
KnNvdXJjZVN0b3JhZ2U5ID0gR2V0QXM8VGV4dHVyZVN0b3JhZ2U5XzJEPihzb3VyY2VTdG9yYWdl
KTsKKyAgICBBU1NFUlQoc291cmNlU3RvcmFnZTkpOworCisgICAgVGV4dHVyZVN0b3JhZ2U5XzJE
ICpkZXN0U3RvcmFnZTkgPSBHZXRBczxUZXh0dXJlU3RvcmFnZTlfMkQ+KHN0b3JhZ2UpOworICAg
IEFTU0VSVChkZXN0U3RvcmFnZTkpOworCisgICAgQVNTRVJUKHNvdXJjZUxldmVsID09IDApOwor
ICAgIElEaXJlY3QzREJhc2VUZXh0dXJlOSAqc291cmNlVGV4dHVyZSA9IG51bGxwdHI7CisgICAg
QU5HTEVfVFJZKHNvdXJjZVN0b3JhZ2U5LT5nZXRCYXNlVGV4dHVyZSgmc291cmNlVGV4dHVyZSkp
OworCisgICAgSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJjZVN1cmZhY2UgPSBudWxscHRyOworICAg
IEFOR0xFX1RSWShzb3VyY2VTdG9yYWdlOS0+Z2V0U3VyZmFjZUxldmVsKEdMX1RFWFRVUkVfMkQs
IHNvdXJjZUxldmVsLCB0cnVlLCAmc291cmNlU3VyZmFjZSkpOworCisgICAgSURpcmVjdDNEU3Vy
ZmFjZTkgKmRlc3RTdXJmYWNlID0gbnVsbHB0cjsKKyAgICBnbDo6RXJyb3IgZXJyb3IgPSBkZXN0
U3RvcmFnZTktPmdldFN1cmZhY2VMZXZlbChHTF9URVhUVVJFXzJELCBkZXN0TGV2ZWwsIHRydWUs
ICZkZXN0U3VyZmFjZSk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAg
IFNhZmVSZWxlYXNlKHNvdXJjZVN1cmZhY2UpOworICAgICAgICByZXR1cm4gZXJyb3I7CisgICAg
fQorCisgICAgZXJyb3IgPSBjb3B5KHNvdXJjZVN1cmZhY2UsIHNvdXJjZVRleHR1cmUsIHNvdXJj
ZVJlY3QsIGRlc3RGb3JtYXQsIGRlc3RPZmZzZXQsIGRlc3RTdXJmYWNlLAorICAgICAgICAgICAg
ICAgICBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgdW5tdWx0aXBseUFscGhhKTsKKworICAgIFNh
ZmVSZWxlYXNlKHNvdXJjZVN1cmZhY2UpOworICAgIFNhZmVSZWxlYXNlKGRlc3RTdXJmYWNlKTsK
KworICAgIHJldHVybiBlcnJvcjsKK30KKworZ2w6OkVycm9yIEJsaXQ5Ojpjb3B5KElEaXJlY3Qz
RFN1cmZhY2U5ICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgSURpcmVjdDNEQmFzZVRl
eHR1cmU5ICpzb3VyY2VUZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQ1Qg
JnNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAg
ICAgICAgICAgICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCwKKyAgICAgICAgICAgICAg
ICAgICAgICBib29sIGZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbXVsdGlw
bHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICBib29sIHVubXVsdGlwbHlBbHBoYSkKIHsK
ICAgICBBU1NFUlQoc291cmNlICE9IE5VTEwgJiYgZGVzdCAhPSBOVUxMKTsKIApAQCAtMjk3LDgg
KzM3MywxMCBAQCBnbDo6RXJyb3IgQmxpdDk6OmNvcHkoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJj
ZSwgY29uc3QgUkVDVCAmc291cmNlUmVjdCwgR0xlbnVtCiAgICAgc291cmNlLT5HZXREZXNjKCZz
b3VyY2VEZXNjKTsKICAgICBkZXN0LT5HZXREZXNjKCZkZXN0RGVzYyk7CiAKLSAgICBpZiAoc291
cmNlRGVzYy5Gb3JtYXQgPT0gZGVzdERlc2MuRm9ybWF0ICYmIGRlc3REZXNjLlVzYWdlICYgRDNE
VVNBR0VfUkVOREVSVEFSR0VUICYmCi0gICAgICAgIGQzZDlfZ2w6OklzRm9ybWF0Q2hhbm5lbEVx
dWl2YWxlbnQoZGVzdERlc2MuRm9ybWF0LCBkZXN0Rm9ybWF0KSkgICAvLyBDYW4gdXNlIFN0cmV0
Y2hSZWN0CisgICAgLy8gQ2hlY2sgaWYgaXQncyBwb3NzaWJsZSB0byB1c2UgU3RldGNoUmVjdAor
ICAgIGlmIChzb3VyY2VEZXNjLkZvcm1hdCA9PSBkZXN0RGVzYy5Gb3JtYXQgJiYgKGRlc3REZXNj
LlVzYWdlICYgRDNEVVNBR0VfUkVOREVSVEFSR0VUKSAmJgorICAgICAgICBkM2Q5X2dsOjpJc0Zv
cm1hdENoYW5uZWxFcXVpdmFsZW50KGRlc3REZXNjLkZvcm1hdCwgZGVzdEZvcm1hdCkgJiYgIWZs
aXBZICYmCisgICAgICAgIHByZW11bHRpcGx5QWxwaGEgPT0gdW5tdWx0aXBseUFscGhhKQogICAg
IHsKICAgICAgICAgUkVDVCBkZXN0UmVjdCA9IHsgZGVzdE9mZnNldC54LCBkZXN0T2Zmc2V0Lnks
IGRlc3RPZmZzZXQueCArIChzb3VyY2VSZWN0LnJpZ2h0IC0gc291cmNlUmVjdC5sZWZ0KSwgZGVz
dE9mZnNldC55ICsgKHNvdXJjZVJlY3QuYm90dG9tIC0gc291cmNlUmVjdC50b3ApfTsKICAgICAg
ICAgSFJFU1VMVCByZXN1bHQgPSBkZXZpY2UtPlN0cmV0Y2hSZWN0KHNvdXJjZSwgJnNvdXJjZVJl
Y3QsIGRlc3QsICZkZXN0UmVjdCwgRDNEVEVYRl9QT0lOVCk7CkBAIC0zMDksODIgKzM4NywxMzEg
QEAgZ2w6OkVycm9yIEJsaXQ5Ojpjb3B5KElEaXJlY3QzRFN1cmZhY2U5ICpzb3VyY2UsIGNvbnN0
IFJFQ1QgJnNvdXJjZVJlY3QsIEdMZW51bQogICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGJsaXQgYmV0d2VlbiB0ZXh0dXJlcywgU3RyZXRj
aFJlY3QgcmVzdWx0OiAweCVYLiIsIHJlc3VsdCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHJldHVybiBmb3JtYXRDb252ZXJ0KHNv
dXJjZSwgc291cmNlUmVjdCwgZGVzdEZvcm1hdCwgZGVzdE9mZnNldCwgZGVzdCk7Ci0gICAgfQot
fQorICAgICAgICBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKnRleHR1cmUgPSBzb3VyY2VUZXh0dXJl
OworICAgICAgICBSRUNUIGFkanVzdGVkU291cmNlUmVjdCAgICAgICAgPSBzb3VyY2VSZWN0Owor
ICAgICAgICBnbDo6RXh0ZW50cyBzb3VyY2VTaXplKHNvdXJjZURlc2MuV2lkdGgsIHNvdXJjZURl
c2MuSGVpZ2h0LCAxKTsKIAotZ2w6OkVycm9yIEJsaXQ5Ojpmb3JtYXRDb252ZXJ0KElEaXJlY3Qz
RFN1cmZhY2U5ICpzb3VyY2UsIGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9y
bWF0LCBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBJRGlyZWN0M0RTdXJmYWNlOSAqZGVz
dCkKLXsKLSAgICBnbDo6RXJyb3IgZXJyb3IgPSBpbml0aWFsaXplKCk7Ci0gICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJvcjsKLSAgICB9CisgICAgICAg
IGlmICh0ZXh0dXJlID09IG51bGxwdHIpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFOR0xFX1RS
WShjb3B5U3VyZmFjZVRvVGV4dHVyZShzb3VyY2UsIHNvdXJjZVJlY3QsICZ0ZXh0dXJlKSk7CisK
KyAgICAgICAgICAgIC8vIGNvcHlTdXJmYWNlVG9UZXh0dXJlIG9ubHkgY29waWVzIGluIHRoZSBz
b3VyY2VSZWN0IGFyZWEgb2YgdGhlIHNvdXJjZSBzdXJmYWNlLgorICAgICAgICAgICAgLy8gQWRq
dXN0IHNvdXJjZVJlY3Qgc28gdGhhdCBpdCBpcyBub3cgY292ZXJpbmcgdGhlIGVudGlyZSBzb3Vy
Y2UgdGV4dHVyZQorICAgICAgICAgICAgYWRqdXN0ZWRTb3VyY2VSZWN0LmxlZnQgICA9IDA7Cisg
ICAgICAgICAgICBhZGp1c3RlZFNvdXJjZVJlY3QucmlnaHQgID0gc291cmNlUmVjdC5yaWdodCAt
IHNvdXJjZVJlY3QubGVmdDsKKyAgICAgICAgICAgIGFkanVzdGVkU291cmNlUmVjdC50b3AgICAg
PSAwOworICAgICAgICAgICAgYWRqdXN0ZWRTb3VyY2VSZWN0LmJvdHRvbSA9IHNvdXJjZVJlY3Qu
Ym90dG9tIC0gc291cmNlUmVjdC50b3A7CisKKyAgICAgICAgICAgIHNvdXJjZVNpemUud2lkdGgg
ID0gc291cmNlUmVjdC5yaWdodCAtIHNvdXJjZVJlY3QubGVmdDsKKyAgICAgICAgICAgIHNvdXJj
ZVNpemUuaGVpZ2h0ID0gc291cmNlUmVjdC5ib3R0b20gLSBzb3VyY2VSZWN0LnRvcDsKKyAgICAg
ICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHRleHR1cmUtPkFkZFJl
ZigpOworICAgICAgICB9CisKKyAgICAgICAgZ2w6OkVycm9yIGVycm9yID0gZm9ybWF0Q29udmVy
dCh0ZXh0dXJlLCBhZGp1c3RlZFNvdXJjZVJlY3QsIHNvdXJjZVNpemUsIGRlc3RGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdE9mZnNldCwgZGVzdCwg
ZmxpcFksIHByZW11bHRpcGx5QWxwaGEsIHVubXVsdGlwbHlBbHBoYSk7CisKKyAgICAgICAgU2Fm
ZVJlbGVhc2UodGV4dHVyZSk7CiAKLSAgICBJRGlyZWN0M0RUZXh0dXJlOSAqdGV4dHVyZSA9IE5V
TEw7Ci0gICAgZXJyb3IgPSBjb3B5U3VyZmFjZVRvVGV4dHVyZShzb3VyY2UsIHNvdXJjZVJlY3Qs
ICZ0ZXh0dXJlKTsKLSAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgIHsKICAgICAgICAgcmV0
dXJuIGVycm9yOwogICAgIH0KK30KKworZ2w6OkVycm9yIEJsaXQ5Ojpmb3JtYXRDb252ZXJ0KElE
aXJlY3QzREJhc2VUZXh0dXJlOSAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkV4dGVudHMgJnNvdXJjZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVu
bXVsdGlwbHlBbHBoYSkKK3sKKyAgICBBTkdMRV9UUlkoaW5pdGlhbGl6ZSgpKTsKIAogICAgIElE
aXJlY3QzRERldmljZTkgKmRldmljZSA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CiAKICAgICBz
YXZlU3RhdGUoKTsKIAotICAgIGRldmljZS0+U2V0VGV4dHVyZSgwLCB0ZXh0dXJlKTsKKyAgICBk
ZXZpY2UtPlNldFRleHR1cmUoMCwgc291cmNlKTsKICAgICBkZXZpY2UtPlNldFJlbmRlclRhcmdl
dCgwLCBkZXN0KTsKIAotICAgIHNldFZpZXdwb3J0KHNvdXJjZVJlY3QsIGRlc3RPZmZzZXQpOwor
ICAgIFJFQ1QgZGVzdFJlY3Q7CisgICAgZGVzdFJlY3QubGVmdCAgID0gZGVzdE9mZnNldC54Owor
ICAgIGRlc3RSZWN0LnJpZ2h0ICA9IGRlc3RPZmZzZXQueCArIChzb3VyY2VSZWN0LnJpZ2h0IC0g
c291cmNlUmVjdC5sZWZ0KTsKKyAgICBkZXN0UmVjdC50b3AgICAgPSBkZXN0T2Zmc2V0Lnk7Cisg
ICAgZGVzdFJlY3QuYm90dG9tID0gZGVzdE9mZnNldC55ICsgKHNvdXJjZVJlY3QuYm90dG9tIC0g
c291cmNlUmVjdC50b3ApOworCisgICAgc2V0Vmlld3BvcnRBbmRTaGFkZXJDb25zdGFudHMoc291
cmNlUmVjdCwgc291cmNlU2l6ZSwgZGVzdFJlY3QsIGZsaXBZKTsKIAogICAgIHNldENvbW1vbkJs
aXRTdGF0ZSgpOwogCi0gICAgZXJyb3IgPSBzZXRGb3JtYXRDb252ZXJ0U2hhZGVycyhkZXN0Rm9y
bWF0KTsKKyAgICBnbDo6RXJyb3IgZXJyb3IgPSBzZXRGb3JtYXRDb252ZXJ0U2hhZGVycyhkZXN0
Rm9ybWF0LCBmbGlwWSwgcHJlbXVsdGlwbHlBbHBoYSwgdW5tdWx0aXBseUFscGhhKTsKICAgICBp
ZiAoIWVycm9yLmlzRXJyb3IoKSkKICAgICB7CiAgICAgICAgIHJlbmRlcigpOwogICAgIH0KIAot
ICAgIFNhZmVSZWxlYXNlKHRleHR1cmUpOwotCiAgICAgcmVzdG9yZVN0YXRlKCk7CiAKICAgICBy
ZXR1cm4gZXJyb3I7CiB9CiAKLWdsOjpFcnJvciBCbGl0OTo6c2V0Rm9ybWF0Q29udmVydFNoYWRl
cnMoR0xlbnVtIGRlc3RGb3JtYXQpCitnbDo6RXJyb3IgQmxpdDk6OnNldEZvcm1hdENvbnZlcnRT
aGFkZXJzKEdMZW51bSBkZXN0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgdW5tdWx0aXBseUFscGhhKQogewotICAgIGdsOjpFcnJvciBl
cnJvciA9IHNldFZlcnRleFNoYWRlcihTSEFERVJfVlNfU1RBTkRBUkQpOwotICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCi0gICAgewotICAgICAgICByZXR1cm4gZXJyb3I7Ci0gICAgfQorICAgIEFO
R0xFX1RSWShzZXRWZXJ0ZXhTaGFkZXIoU0hBREVSX1ZTX1NUQU5EQVJEKSk7CiAKICAgICBzd2l0
Y2ggKGRlc3RGb3JtYXQpCiAgICAgewotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKICAg
ICAgIGNhc2UgR0xfUkdCQToKICAgICAgIGNhc2UgR0xfQkdSQV9FWFQ6CiAgICAgICBjYXNlIEdM
X1JHQjoKICAgICAgIGNhc2UgR0xfUkdfRVhUOgogICAgICAgY2FzZSBHTF9SRURfRVhUOgogICAg
ICAgY2FzZSBHTF9BTFBIQToKLSAgICAgICAgZXJyb3IgPSBzZXRQaXhlbFNoYWRlcihTSEFERVJf
UFNfQ09NUE9ORU5UTUFTSyk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgIGlmIChwcmVtdWx0
aXBseUFscGhhID09IHVubXVsdGlwbHlBbHBoYSkKKyAgICAgICAgICB7CisgICAgICAgICAgICAg
IEFOR0xFX1RSWShzZXRQaXhlbFNoYWRlcihTSEFERVJfUFNfQ09NUE9ORU5UTUFTSykpOworICAg
ICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChwcmVtdWx0aXBseUFscGhhKQorICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgQU5HTEVfVFJZKHNldFBpeGVsU2hhZGVyKFNIQURFUl9QU19DT01Q
T05FTlRNQVNLX1BSRU1VTFRJUExZX0FMUEhBKSk7CisgICAgICAgICAgfQorICAgICAgICAgIGVs
c2UKKyAgICAgICAgICB7CisgICAgICAgICAgICAgIEFTU0VSVCh1bm11bHRpcGx5QWxwaGEpOwor
ICAgICAgICAgICAgICBBTkdMRV9UUlkoc2V0UGl4ZWxTaGFkZXIoU0hBREVSX1BTX0NPTVBPTkVO
VE1BU0tfVU5NVUxUSVBMWV9BTFBIQSkpOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsK
IAogICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U6CiAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBI
QToKLSAgICAgICAgZXJyb3IgPSBzZXRQaXhlbFNoYWRlcihTSEFERVJfUFNfTFVNSU5BTkNFKTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgICBpZiAocHJlbXVsdGlwbHlBbHBoYSA9
PSB1bm11bHRpcGx5QWxwaGEpCisgICAgICAgICAgeworICAgICAgICAgICAgICBBTkdMRV9UUlko
c2V0UGl4ZWxTaGFkZXIoU0hBREVSX1BTX0xVTUlOQU5DRSkpOworICAgICAgICAgIH0KKyAgICAg
ICAgICBlbHNlIGlmIChwcmVtdWx0aXBseUFscGhhKQorICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgQU5HTEVfVFJZKHNldFBpeGVsU2hhZGVyKFNIQURFUl9QU19MVU1JTkFOQ0VfUFJFTVVMVElQ
TFlfQUxQSEEpKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZQorICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgQVNTRVJUKHVubXVsdGlwbHlBbHBoYSk7CisgICAgICAgICAgICAgIEFOR0xF
X1RSWShzZXRQaXhlbFNoYWRlcihTSEFERVJfUFNfTFVNSU5BTkNFX1VOTVVMVElQTFlfQUxQSEEp
KTsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisKKyAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKICAgICB9CiAKICAgICBlbnVtIHsgWCA9IDAsIFkgPSAxLCBa
ID0gMiwgVyA9IDMgfTsKQEAgLTQ4MCwxMCArNjA3LDEyIEBAIGdsOjpFcnJvciBCbGl0OTo6c2V0
Rm9ybWF0Q29udmVydFNoYWRlcnMoR0xlbnVtIGRlc3RGb3JtYXQpCiAKICAgICBtUmVuZGVyZXIt
PmdldERldmljZSgpLT5TZXRQaXhlbFNoYWRlckNvbnN0YW50RigwLCBwc0NvbnN0LCAyKTsKIAot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCi1nbDo6RXJyb3IgQmxpdDk6OmNvcHlTdXJmYWNlVG9UZXh0dXJlKElEaXJlY3Qz
RFN1cmZhY2U5ICpzdXJmYWNlLCBjb25zdCBSRUNUICZzb3VyY2VSZWN0LCBJRGlyZWN0M0RUZXh0
dXJlOSAqKm91dFRleHR1cmUpCitnbDo6RXJyb3IgQmxpdDk6OmNvcHlTdXJmYWNlVG9UZXh0dXJl
KElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBSRUNUICZzb3VyY2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKipvdXRUZXh0dXJlKQogewog
ICAgIEFTU0VSVChzdXJmYWNlKTsKIApAQCAtNTI1LDI0ICs2NTQsMzggQEAgZ2w6OkVycm9yIEJs
aXQ5Ojpjb3B5U3VyZmFjZVRvVGV4dHVyZShJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSwgY29u
c3QgUkVDVCAmc28KICAgICB9CiAKICAgICAqb3V0VGV4dHVyZSA9IHRleHR1cmU7Ci0gICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9
CiAKLXZvaWQgQmxpdDk6OnNldFZpZXdwb3J0KGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsIGNvbnN0
IGdsOjpPZmZzZXQgJm9mZnNldCkKK3ZvaWQgQmxpdDk6OnNldFZpZXdwb3J0QW5kU2hhZGVyQ29u
c3RhbnRzKGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQ1QgJmRlc3RSZWN0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmbGlwWSkKIHsK
ICAgICBJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UgPSBtUmVuZGVyZXItPmdldERldmljZSgpOwog
CiAgICAgRDNEVklFV1BPUlQ5IHZwOwotICAgIHZwLlggICAgICA9IG9mZnNldC54OwotICAgIHZw
LlkgICAgICA9IG9mZnNldC55OwotICAgIHZwLldpZHRoICA9IHNvdXJjZVJlY3QucmlnaHQgLSBz
b3VyY2VSZWN0LmxlZnQ7Ci0gICAgdnAuSGVpZ2h0ID0gc291cmNlUmVjdC5ib3R0b20gLSBzb3Vy
Y2VSZWN0LnRvcDsKKyAgICB2cC5YICAgICAgPSBkZXN0UmVjdC5sZWZ0OworICAgIHZwLlkgICAg
ICA9IGRlc3RSZWN0LnRvcDsKKyAgICB2cC5XaWR0aCAgPSBkZXN0UmVjdC5yaWdodCAtIGRlc3RS
ZWN0LmxlZnQ7CisgICAgdnAuSGVpZ2h0ID0gZGVzdFJlY3QuYm90dG9tIC0gZGVzdFJlY3QudG9w
OwogICAgIHZwLk1pblogICA9IDAuMGY7CiAgICAgdnAuTWF4WiAgID0gMS4wZjsKICAgICBkZXZp
Y2UtPlNldFZpZXdwb3J0KCZ2cCk7CiAKLSAgICBmbG9hdCBoYWxmUGl4ZWxBZGp1c3RbNF0gPSB7
IC0xLjBmL3ZwLldpZHRoLCAxLjBmL3ZwLkhlaWdodCwgMCwgMCB9OwotICAgIGRldmljZS0+U2V0
VmVydGV4U2hhZGVyQ29uc3RhbnRGKDAsIGhhbGZQaXhlbEFkanVzdCwgMSk7CisgICAgZmxvYXQg
dmVydGV4Q29uc3RhbnRzWzhdID0geworICAgICAgICAvLyBoYWxmUGl4ZWxBZGp1c3QKKyAgICAg
ICAgLTEuMGYgLyB2cC5XaWR0aCwgMS4wZiAvIHZwLkhlaWdodCwgMCwgMCwKKyAgICAgICAgLy8g
dGV4Y29vcmRPZmZzZXQKKyAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVJlY3QubGVm
dCkgLyBzb3VyY2VTaXplLndpZHRoLAorICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4oZmxpcFkg
PyBzb3VyY2VSZWN0LmJvdHRvbSA6IHNvdXJjZVJlY3QudG9wKSAvIHNvdXJjZVNpemUuaGVpZ2h0
LAorICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlUmVjdC5yaWdodCAtIHNvdXJjZVJl
Y3QubGVmdCkgLyBzb3VyY2VTaXplLndpZHRoLAorICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4o
ZmxpcFkgPyBzb3VyY2VSZWN0LnRvcCAtIHNvdXJjZVJlY3QuYm90dG9tCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6IHNvdXJjZVJlY3QuYm90dG9tIC0gc291cmNlUmVjdC50b3Ap
IC8KKyAgICAgICAgICAgIHNvdXJjZVNpemUuaGVpZ2h0LAorICAgIH07CisKKyAgICBkZXZpY2Ut
PlNldFZlcnRleFNoYWRlckNvbnN0YW50RigwLCB2ZXJ0ZXhDb25zdGFudHMsIDIpOwogfQogCiB2
b2lkIEJsaXQ5OjpzZXRDb21tb25CbGl0U3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0JsaXQ5LmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQmxpdDku
aAppbmRleCA1ODZhYmQyNTgwYS4uNjVmYmNmNGIzOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9CbGl0OS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9C
bGl0OS5oCkBAIC0xNyw2ICsxNyw4IEBACiBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIEZyYW1lYnVm
ZmVyOworY2xhc3MgVGV4dHVyZTsKK3N0cnVjdCBFeHRlbnRzOwogc3RydWN0IE9mZnNldDsKIH0K
IApAQCAtMzYsMTIgKzM4LDIzIEBAIGNsYXNzIEJsaXQ5IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAg
ICAgLy8gQ29weSBmcm9tIHNvdXJjZSBzdXJmYWNlIHRvIGRlc3Qgc3VyZmFjZS4KICAgICAvLyBz
b3VyY2VSZWN0LCB4b2Zmc2V0LCB5b2Zmc2V0IGFyZSBpbiBEM0QgY29vcmRpbmF0ZXMgKDAsMCBp
biB1cHBlci1sZWZ0KQogICAgIGdsOjpFcnJvciBjb3B5MkQoY29uc3QgZ2w6OkZyYW1lYnVmZmVy
ICpmcmFtZWJ1ZmZlciwgY29uc3QgUkVDVCAmc291cmNlUmVjdCwgR0xlbnVtIGRlc3RGb3JtYXQs
IGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsIFRleHR1cmVTdG9yYWdlICpzdG9yYWdlLCBH
TGludCBsZXZlbCk7Ci0gICAgZ2w6OkVycm9yIGNvcHlDdWJlKGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
ciAqZnJhbWVidWZmZXIsIGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0
LCBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwg
R0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwpOwotCi0gICAgLy8gQ29weSBmcm9tIHNvdXJjZSBz
dXJmYWNlIHRvIGRlc3Qgc3VyZmFjZS4KLSAgICAvLyBzb3VyY2VSZWN0LCB4b2Zmc2V0LCB5b2Zm
c2V0IGFyZSBpbiBEM0QgY29vcmRpbmF0ZXMgKDAsMCBpbiB1cHBlci1sZWZ0KQotICAgIC8vIHNv
dXJjZSBpcyBpbnRlcnByZXRlZCBhcyBSR0JBIGFuZCBkZXN0Rm9ybWF0IHNwZWNpZmllcyB0aGUg
ZGVzaXJlZCByZXN1bHQgZm9ybWF0LiBGb3IgZXhhbXBsZSwgaWYgZGVzdEZvcm1hdCA9IEdMX1JH
QiwgdGhlIGFscGhhIGNoYW5uZWwgd2lsbCBiZSBmb3JjZWQgdG8gMC4KLSAgICBnbDo6RXJyb3Ig
Zm9ybWF0Q29udmVydChJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlLCBjb25zdCBSRUNUICZzb3Vy
Y2VSZWN0LCBHTGVudW0gZGVzdEZvcm1hdCwgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwg
SURpcmVjdDNEU3VyZmFjZTkgKmRlc3QpOworICAgIGdsOjpFcnJvciBjb3B5Q3ViZShjb25zdCBn
bDo6RnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBSRUNUICZzb3VyY2VSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdEZv
cm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsCisgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxldmVsKTsKKyAgICBnbDo6RXJyb3IgY29weVRleHR1cmUyRChjb25zdCBnbDo6VGV4
dHVyZSAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNvdXJjZUxl
dmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3Qs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBkZXN0TGV2ZWwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBmbGlwWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHBy
ZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bm11bHRp
cGx5QWxwaGEpOwogCiAgICAgLy8gMngyIGJveCBmaWx0ZXIgc2FtcGxlIGZyb20gc291cmNlIHRv
IGRlc3QuCiAgICAgLy8gUmVxdWlyZXMgdGhhdCBzb3VyY2UgaXMgUkdCKEEpIGFuZCBkZXN0IGhh
cyB0aGUgc2FtZSBmb3JtYXQgYXMgc291cmNlLgpAQCAtNTQsMjMgKzY3LDU2IEBAIGNsYXNzIEJs
aXQ5IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgSURpcmVjdDNEVmVydGV4QnVmZmVyOSAqbVF1
YWRWZXJ0ZXhCdWZmZXI7CiAgICAgSURpcmVjdDNEVmVydGV4RGVjbGFyYXRpb245ICptUXVhZFZl
cnRleERlY2xhcmF0aW9uOwogCi0gICAgZ2w6OkVycm9yIHNldEZvcm1hdENvbnZlcnRTaGFkZXJz
KEdMZW51bSBkZXN0Rm9ybWF0KTsKLQotICAgIGdsOjpFcnJvciBjb3B5KElEaXJlY3QzRFN1cmZh
Y2U5ICpzb3VyY2UsIGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsIEdMZW51bSBkZXN0Rm9ybWF0LCBj
b25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LCBJRGlyZWN0M0RTdXJmYWNlOSAqZGVzdCk7Ci0g
ICAgZ2w6OkVycm9yIGNvcHlTdXJmYWNlVG9UZXh0dXJlKElEaXJlY3QzRFN1cmZhY2U5ICpzdXJm
YWNlLCBjb25zdCBSRUNUICZzb3VyY2VSZWN0LCBJRGlyZWN0M0RUZXh0dXJlOSAqKm91dFRleHR1
cmUpOwotICAgIHZvaWQgc2V0Vmlld3BvcnQoY29uc3QgUkVDVCAmc291cmNlUmVjdCwgY29uc3Qg
Z2w6Ok9mZnNldCAmb2Zmc2V0KTsKKyAgICAvLyBDb3B5IGZyb20gc291cmNlIHRleHR1cmUgdG8g
ZGVzdCBzdXJmYWNlLgorICAgIC8vIHNvdXJjZVJlY3QsIHhvZmZzZXQsIHlvZmZzZXQgYXJlIGlu
IEQzRCBjb29yZGluYXRlcyAoMCwwIGluIHVwcGVyLWxlZnQpCisgICAgLy8gc291cmNlIGlzIGlu
dGVycHJldGVkIGFzIFJHQkEgYW5kIGRlc3RGb3JtYXQgc3BlY2lmaWVzIHRoZSBkZXNpcmVkIHJl
c3VsdCBmb3JtYXQuIEZvcgorICAgIC8vIGV4YW1wbGUsIGlmIGRlc3RGb3JtYXQgPSBHTF9SR0Is
IHRoZSBhbHBoYSBjaGFubmVsIHdpbGwgYmUgZm9yY2VkIHRvIDAuCisgICAgZ2w6OkVycm9yIGZv
cm1hdENvbnZlcnQoSURpcmVjdDNEQmFzZVRleHR1cmU5ICpzb3VyY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgUkVDVCAmc291cmNlUmVjdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIElEaXJlY3QzRFN1cmZhY2U5ICpkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgZmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmVtdWx0
aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5tdWx0aXBseUFs
cGhhKTsKKyAgICBnbDo6RXJyb3Igc2V0Rm9ybWF0Q29udmVydFNoYWRlcnMoR0xlbnVtIGRlc3RG
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZmxpcFks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bm11bHRp
cGx5QWxwaGEpOworCisgICAgZ2w6OkVycm9yIGNvcHkoSURpcmVjdDNEU3VyZmFjZTkgKnNvdXJj
ZSwKKyAgICAgICAgICAgICAgICAgICBJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKnNvdXJjZVRleHR1
cmUsCisgICAgICAgICAgICAgICAgICAgY29uc3QgUkVDVCAmc291cmNlUmVjdCwKKyAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgIElEaXJlY3QzRFN1cmZh
Y2U5ICpkZXN0LAorICAgICAgICAgICAgICAgICAgIGJvb2wgZmxpcFksCisgICAgICAgICAgICAg
ICAgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgIGJvb2wgdW5t
dWx0aXBseUFscGhhKTsKKyAgICBnbDo6RXJyb3IgY29weVN1cmZhY2VUb1RleHR1cmUoSURpcmVj
dDNEU3VyZmFjZTkgKnN1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFJFQ1QgJnNvdXJjZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIElEaXJlY3QzREJhc2VUZXh0dXJlOSAqKm91dFRleHR1cmUpOworICAgIHZvaWQgc2V0Vmll
d3BvcnRBbmRTaGFkZXJDb25zdGFudHMoY29uc3QgUkVDVCAmc291cmNlUmVjdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzb3VyY2VT
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUkVDVCAm
ZGVzdFJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZs
aXBZKTsKICAgICB2b2lkIHNldENvbW1vbkJsaXRTdGF0ZSgpOwogICAgIFJFQ1QgZ2V0U3VyZmFj
ZVJlY3QoSURpcmVjdDNEU3VyZmFjZTkgKnN1cmZhY2UpIGNvbnN0OworICAgIGdsOjpFeHRlbnRz
IGdldFN1cmZhY2VTaXplKElEaXJlY3QzRFN1cmZhY2U5ICpzdXJmYWNlKSBjb25zdDsKIAogICAg
IC8vIFRoaXMgZW51bSBpcyB1c2VkIHRvIGluZGV4IG1Db21waWxlZFNoYWRlcnMgYW5kIG1TaGFk
ZXJTb3VyY2UuCiAgICAgZW51bSBTaGFkZXJJZAogICAgIHsKICAgICAgICAgU0hBREVSX1ZTX1NU
QU5EQVJELAotICAgICAgICBTSEFERVJfVlNfRkxJUFksCiAgICAgICAgIFNIQURFUl9QU19QQVNT
VEhST1VHSCwKICAgICAgICAgU0hBREVSX1BTX0xVTUlOQU5DRSwKKyAgICAgICAgU0hBREVSX1BT
X0xVTUlOQU5DRV9QUkVNVUxUSVBMWV9BTFBIQSwKKyAgICAgICAgU0hBREVSX1BTX0xVTUlOQU5D
RV9VTk1VTFRJUExZX0FMUEhBLAogICAgICAgICBTSEFERVJfUFNfQ09NUE9ORU5UTUFTSywKLSAg
ICAgICAgU0hBREVSX0NPVU5UCisgICAgICAgIFNIQURFUl9QU19DT01QT05FTlRNQVNLX1BSRU1V
TFRJUExZX0FMUEhBLAorICAgICAgICBTSEFERVJfUFNfQ09NUE9ORU5UTUFTS19VTk1VTFRJUExZ
X0FMUEhBLAorICAgICAgICBTSEFERVJfQ09VTlQsCiAgICAgfTsKIAogICAgIC8vIFRoaXMgYWN0
dWFsbHkgY29udGFpbnMgSURpcmVjdDNEVmVydGV4U2hhZGVyOSBvciBJRGlyZWN0M0RQaXhlbFNo
YWRlcjkgY2FzdGVkIHRvIElVbmtub3duLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0J1ZmZlcjkuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0J1ZmZlcjku
Y3BwCmluZGV4IDYzZWU2NDlmMDY2Li45NTg5MjAzZDZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0J1ZmZlcjkuY3Bw
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9CdWZmZXI5LmNwcApAQCAtMTIsOSArMTIsOCBAQAogbmFtZXNwYWNlIHJ4CiB7CiAKLUJ1
ZmZlcjk6OkJ1ZmZlcjkoUmVuZGVyZXI5ICpyZW5kZXJlcikKLSAgICA6IEJ1ZmZlckQzRChyZW5k
ZXJlciksCi0gICAgICBtU2l6ZSgwKQorQnVmZmVyOTo6QnVmZmVyOShjb25zdCBnbDo6QnVmZmVy
U3RhdGUgJnN0YXRlLCBSZW5kZXJlcjkgKnJlbmRlcmVyKQorICAgIDogQnVmZmVyRDNEKHN0YXRl
LCByZW5kZXJlciksIG1TaXplKDApCiB7fQogCiBCdWZmZXI5Ojp+QnVmZmVyOSgpCkBAIC0yMiw3
ICsyMSwxMSBAQCBCdWZmZXI5Ojp+QnVmZmVyOSgpCiAgICAgbVNpemUgPSAwOwogfQogCi1nbDo6
RXJyb3IgQnVmZmVyOTo6c2V0RGF0YShHTGVudW0gLyp0YXJnZXQqLywgY29uc3Qgdm9pZCAqZGF0
YSwgc2l6ZV90IHNpemUsIEdMZW51bSB1c2FnZSkKK2dsOjpFcnJvciBCdWZmZXI5OjpzZXREYXRh
KENvbnRleHRJbXBsICogLypjb250ZXh0Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gLyp0YXJnZXQqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQg
KmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB1c2FnZSkKIHsKICAgICBpZiAoc2l6ZSA+IG1NZW1v
cnkuc2l6ZSgpKQogICAgIHsKQEAgLTQyLDE2ICs0NSwyMCBAQCBnbDo6RXJyb3IgQnVmZmVyOTo6
c2V0RGF0YShHTGVudW0gLyp0YXJnZXQqLywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUs
IEdMZQogCiAgICAgaW52YWxpZGF0ZVN0YXRpY0RhdGEoKTsKIAotICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJy
b3IgQnVmZmVyOTo6Z2V0RGF0YShjb25zdCB1aW50OF90ICoqb3V0RGF0YSkKIHsKICAgICAqb3V0
RGF0YSA9IG1NZW1vcnkuZGF0YSgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgQnVmZmVyOTo6c2V0
U3ViRGF0YShHTGVudW0gLyp0YXJnZXQqLywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUs
IHNpemVfdCBvZmZzZXQpCitnbDo6RXJyb3IgQnVmZmVyOTo6c2V0U3ViRGF0YShDb250ZXh0SW1w
bCAqIC8qY29udGV4dCovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIC8q
dGFyZ2V0Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0KQogewogICAgIGlmIChvZmZzZXQgKyBz
aXplID4gbU1lbW9yeS5zaXplKCkpCiAgICAgewpAQCAtNjksMTAgKzc2LDE0IEBAIGdsOjpFcnJv
ciBCdWZmZXI5OjpzZXRTdWJEYXRhKEdMZW51bSAvKnRhcmdldCovLCBjb25zdCB2b2lkICpkYXRh
LCBzaXplX3Qgc2l6ZSwKIAogICAgIGludmFsaWRhdGVTdGF0aWNEYXRhKCk7CiAKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAotZ2w6OkVycm9yIEJ1ZmZlcjk6OmNvcHlTdWJEYXRhKEJ1ZmZlckltcGwqIHNvdXJjZSwgR0xp
bnRwdHIgc291cmNlT2Zmc2V0LCBHTGludHB0ciBkZXN0T2Zmc2V0LCBHTHNpemVpcHRyIHNpemUp
CitnbDo6RXJyb3IgQnVmZmVyOTo6Y29weVN1YkRhdGEoQ29udGV4dEltcGwgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySW1wbCAqc291cmNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIHNvdXJjZU9mZnNldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBkZXN0T2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSkKIHsKICAgICAvLyBOb3RlOiB0aGlz
IG1ldGhvZCBpcyBjdXJyZW50bHkgdW5yZWFjaGFibGUKICAgICBCdWZmZXI5KiBzb3VyY2VCdWZm
ZXIgPSBHZXRBczxCdWZmZXI5Pihzb3VyY2UpOwpAQCAtODIsMjMgKzkzLDI3IEBAIGdsOjpFcnJv
ciBCdWZmZXI5Ojpjb3B5U3ViRGF0YShCdWZmZXJJbXBsKiBzb3VyY2UsIEdMaW50cHRyIHNvdXJj
ZU9mZnNldCwgR0xpbnRwCiAKICAgICBpbnZhbGlkYXRlU3RhdGljRGF0YSgpOwogCi0gICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9
CiAKIC8vIFdlIGRvIG5vdCBzdXBwb3J0IGJ1ZmZlciBtYXBwaW5nIGluIEQzRDkKLWdsOjpFcnJv
ciBCdWZmZXI5OjptYXAoR0xlbnVtIGFjY2VzcywgR0x2b2lkICoqbWFwUHRyKQorZ2w6OkVycm9y
IEJ1ZmZlcjk6Om1hcChDb250ZXh0SW1wbCAqY29udGV4dCwgR0xlbnVtIGFjY2VzcywgR0x2b2lk
ICoqbWFwUHRyKQogewogICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLWdsOjpFcnJvciBCdWZmZXI5OjptYXBSYW5nZShz
aXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBHTGJpdGZpZWxkIGFjY2VzcywgR0x2b2lkICoq
bWFwUHRyKQorZ2w6OkVycm9yIEJ1ZmZlcjk6Om1hcFJhbmdlKENvbnRleHRJbXBsICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGJpdGZpZWxkIGFjY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHZv
aWQgKiptYXBQdHIpCiB7CiAgICAgVU5SRUFDSEFCTEUoKTsKICAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlcjk6OnVubWFwKEdM
Ym9vbGVhbiAqcmVzdWx0KQorZ2w6OkVycm9yIEJ1ZmZlcjk6OnVubWFwKENvbnRleHRJbXBsICpj
b250ZXh0LCBHTGJvb2xlYW4gKnJlc3VsdCkKIHsKICAgICBVTlJFQUNIQUJMRSgpOwogICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0J1ZmZlcjku
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
OS9CdWZmZXI5LmgKaW5kZXggOWRkMDhiNTEwMGEuLmE4YzBjYjI0MzA4IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQnVm
ZmVyOS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9CdWZmZXI5LmgKQEAgLTIwLDcgKzIwLDcgQEAgY2xhc3MgUmVuZGVyZXI5Owog
Y2xhc3MgQnVmZmVyOSA6IHB1YmxpYyBCdWZmZXJEM0QKIHsKICAgcHVibGljOgotICAgIEJ1ZmZl
cjkoUmVuZGVyZXI5ICpyZW5kZXJlcik7CisgICAgQnVmZmVyOShjb25zdCBnbDo6QnVmZmVyU3Rh
dGUgJnN0YXRlLCBSZW5kZXJlcjkgKnJlbmRlcmVyKTsKICAgICB2aXJ0dWFsIH5CdWZmZXI5KCk7
CiAKICAgICAvLyBCdWZmZXJEM0QgaW1wbGVtZW50YXRpb24KQEAgLTI5LDE5ICsyOSwzMiBAQCBj
bGFzcyBCdWZmZXI5IDogcHVibGljIEJ1ZmZlckQzRAogICAgIGdsOjpFcnJvciBnZXREYXRhKGNv
bnN0IHVpbnQ4X3QgKipvdXREYXRhKSBvdmVycmlkZTsKIAogICAgIC8vIEJ1ZmZlckltcGwgaW1w
bGVtZW50YXRpb24KLSAgICBnbDo6RXJyb3Igc2V0RGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2
b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgR0xlbnVtIHVzYWdlKSBvdmVycmlkZTsKLSAgICBnbDo6
RXJyb3Igc2V0U3ViRGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qg
c2l6ZSwgc2l6ZV90IG9mZnNldCkgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIGNvcHlTdWJEYXRh
KEJ1ZmZlckltcGwgKnNvdXJjZSwKKyAgICBnbDo6RXJyb3Igc2V0RGF0YShDb250ZXh0SW1wbCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHVzYWdlKSBvdmVycmlkZTsK
KyAgICBnbDo6RXJyb3Igc2V0U3ViRGF0YShDb250ZXh0SW1wbCAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHZvaWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCkgb3ZlcnJpZGU7CisgICAg
Z2w6OkVycm9yIGNvcHlTdWJEYXRhKENvbnRleHRJbXBsICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBCdWZmZXJJbXBsICpzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50cHRyIHNvdXJjZU9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnRwdHIgZGVzdE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBz
aXplKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgbWFwKEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAq
Km1hcFB0cikgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIG1hcFJhbmdlKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpIG92ZXJy
aWRlOwotICAgIGdsOjpFcnJvciB1bm1hcChHTGJvb2xlYW4gKnJlc3VsdCkgb3ZlcnJpZGU7Cisg
ICAgZ2w6OkVycm9yIG1hcChDb250ZXh0SW1wbCAqY29udGV4dCwgR0xlbnVtIGFjY2VzcywgR0x2
b2lkICoqbWFwUHRyKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgbWFwUmFuZ2UoQ29udGV4dElt
cGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAg
IEdMYml0ZmllbGQgYWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKiptYXBQ
dHIpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciB1bm1hcChDb250ZXh0SW1wbCAqY29udGV4dCwg
R0xib29sZWFuICpyZXN1bHQpIG92ZXJyaWRlOwogICAgIGdsOjpFcnJvciBtYXJrVHJhbnNmb3Jt
RmVlZGJhY2tVc2FnZSgpIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6Ci0gICAgTWVtb3J5QnVmZmVy
IG1NZW1vcnk7CisgICAgYW5nbGU6Ok1lbW9yeUJ1ZmZlciBtTWVtb3J5OwogICAgIHNpemVfdCBt
U2l6ZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0OS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQ29udGV4dDkuY3BwCmluZGV4IDFj
OTBmZmZhMWJjLi43NzcwMGMwZTFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0NvbnRleHQ5LmNwcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQ29udGV4
dDkuY3BwCkBAIC04Miw5ICs4Miw5IEBAIFJlbmRlcmJ1ZmZlckltcGwgKkNvbnRleHQ5OjpjcmVh
dGVSZW5kZXJidWZmZXIoKQogICAgIHJldHVybiBuZXcgUmVuZGVyYnVmZmVyRDNEKG1SZW5kZXJl
cik7CiB9CiAKLUJ1ZmZlckltcGwgKkNvbnRleHQ5OjpjcmVhdGVCdWZmZXIoKQorQnVmZmVySW1w
bCAqQ29udGV4dDk6OmNyZWF0ZUJ1ZmZlcihjb25zdCBnbDo6QnVmZmVyU3RhdGUgJnN0YXRlKQog
ewotICAgIHJldHVybiBuZXcgQnVmZmVyOShtUmVuZGVyZXIpOworICAgIHJldHVybiBuZXcgQnVm
ZmVyOShzdGF0ZSwgbVJlbmRlcmVyKTsKIH0KIAogVmVydGV4QXJyYXlJbXBsICpDb250ZXh0OTo6
Y3JlYXRlVmVydGV4QXJyYXkoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJmRhdGEpCkBAIC0x
NzgsNiArMTc4LDE4IEBAIGdsOjpFcnJvciBDb250ZXh0OTo6ZHJhd1JhbmdlRWxlbWVudHMoR0xl
bnVtIG1vZGUsCiAgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2VuZXJpY0RyYXdFbGVtZW50cyh0aGlz
LCBtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgMCwgaW5kZXhSYW5nZSk7CiB9CiAKK2dsOjpF
cnJvciBDb250ZXh0OTo6ZHJhd0FycmF5c0luZGlyZWN0KEdMZW51bSBtb2RlLCBjb25zdCBHTHZv
aWQgKmluZGlyZWN0KQoreworICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIGdsOjpJbnRl
cm5hbEVycm9yKCkgPDwgIkQzRDkgZG9lc24ndCBzdXBwb3J0IEVTIDMuMSBEcmF3QXJyYXlzSW5k
aXJlY3QgQVBJIjsKK30KKworZ2w6OkVycm9yIENvbnRleHQ5OjpkcmF3RWxlbWVudHNJbmRpcmVj
dChHTGVudW0gbW9kZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpCit7Cisg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gZ2w6OkludGVybmFsRXJyb3IoKSA8PCAiRDNE
OSBkb2Vzbid0IHN1cHBvcnQgRVMgMy4xIERyYXdFbGVtZW50c0luZGlyZWN0IEFQSSI7Cit9CisK
IEdMZW51bSBDb250ZXh0OTo6Z2V0UmVzZXRTdGF0dXMoKQogewogICAgIHJldHVybiBtUmVuZGVy
ZXItPmdldFJlc2V0U3RhdHVzKCk7CkBAIC0yMTYsOSArMjI4LDkgQEAgdm9pZCBDb250ZXh0OTo6
cG9wR3JvdXBNYXJrZXIoKQogICAgIG1SZW5kZXJlci0+Z2V0QW5ub3RhdG9yKCktPmVuZEV2ZW50
KCk7CiB9CiAKLXZvaWQgQ29udGV4dDk6OnN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0YXRl
LCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQordm9pZCBDb250ZXh0OTo6
c3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpCiB7Ci0gICAg
bVJlbmRlcmVyLT5nZXRTdGF0ZU1hbmFnZXIoKS0+c3luY1N0YXRlKHN0YXRlLCBkaXJ0eUJpdHMp
OworICAgIG1SZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCktPnN5bmNTdGF0ZShtU3RhdGUuZ2V0
U3RhdGUoKSwgZGlydHlCaXRzKTsKIH0KIAogR0xpbnQgQ29udGV4dDk6OmdldEdQVURpc2pvaW50
KCkKQEAgLTI1NSw0ICsyNjcsMTAgQEAgY29uc3QgZ2w6OkxpbWl0YXRpb25zICZDb250ZXh0OTo6
Z2V0TmF0aXZlTGltaXRhdGlvbnMoKSBjb25zdAogICAgIHJldHVybiBtUmVuZGVyZXItPmdldE5h
dGl2ZUxpbWl0YXRpb25zKCk7CiB9CiAKK2dsOjpFcnJvciBDb250ZXh0OTo6ZGlzcGF0Y2hDb21w
dXRlKEdMdWludCBudW1Hcm91cHNYLCBHTHVpbnQgbnVtR3JvdXBzWSwgR0x1aW50IG51bUdyb3Vw
c1opCit7CisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gZ2w6OkludGVybmFsRXJyb3Io
KSA8PCAiRDNEOSBkb2Vzbid0IHN1cHBvcnQgRVMgMy4xIERpc3BhdGNoQ29tcHV0ZSBBUEkiOwor
fQorCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Db250ZXh0OS5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0NvbnRleHQ5LmgK
aW5kZXggN2UzNDkyZjlhMDMuLmQ1NWIyYzExN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQ29udGV4dDkuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkv
Q29udGV4dDkuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBDb250ZXh0OSA6IHB1YmxpYyBDb250
ZXh0SW1wbAogICAgIFJlbmRlcmJ1ZmZlckltcGwgKmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIG92ZXJy
aWRlOwogCiAgICAgLy8gQnVmZmVyIGNyZWF0aW9uCi0gICAgQnVmZmVySW1wbCAqY3JlYXRlQnVm
ZmVyKCkgb3ZlcnJpZGU7CisgICAgQnVmZmVySW1wbCAqY3JlYXRlQnVmZmVyKGNvbnN0IGdsOjpC
dWZmZXJTdGF0ZSAmc3RhdGUpIG92ZXJyaWRlOwogCiAgICAgLy8gVmVydGV4IEFycmF5IGNyZWF0
aW9uCiAgICAgVmVydGV4QXJyYXlJbXBsICpjcmVhdGVWZXJ0ZXhBcnJheShjb25zdCBnbDo6VmVy
dGV4QXJyYXlTdGF0ZSAmZGF0YSkgb3ZlcnJpZGU7CkBAIC04OCw2ICs4OCw4IEBAIGNsYXNzIENv
bnRleHQ5IDogcHVibGljIENvbnRleHRJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
THZvaWQgKmluZGljZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpJbmRleFJhbmdlICZpbmRleFJhbmdlKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZHJhd0Fy
cmF5c0luZGlyZWN0KEdMZW51bSBtb2RlLCBjb25zdCBHTHZvaWQgKmluZGlyZWN0KSBvdmVycmlk
ZTsKKyAgICBnbDo6RXJyb3IgZHJhd0VsZW1lbnRzSW5kaXJlY3QoR0xlbnVtIG1vZGUsIEdMZW51
bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGlyZWN0KSBvdmVycmlkZTsKIAogICAgIC8vIERldmlj
ZSBsb3NzCiAgICAgR0xlbnVtIGdldFJlc2V0U3RhdHVzKCkgb3ZlcnJpZGU7CkBAIC0xMDIsNyAr
MTA0LDcgQEAgY2xhc3MgQ29udGV4dDkgOiBwdWJsaWMgQ29udGV4dEltcGwKICAgICB2b2lkIHBv
cEdyb3VwTWFya2VyKCkgb3ZlcnJpZGU7CiAKICAgICAvLyBTdGF0ZSBzeW5jIHdpdGggZGlydHkg
Yml0cy4KLSAgICB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBjb25zdCBn
bDo6U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVycmlkZTsKKyAgICB2b2lkIHN5bmNT
dGF0ZShjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVycmlkZTsKIAog
ICAgIC8vIERpc2pvaW50IHRpbWVyIHF1ZXJpZXMKICAgICBHTGludCBnZXRHUFVEaXNqb2ludCgp
IG92ZXJyaWRlOwpAQCAtMTE3LDYgKzExOSw4IEBAIGNsYXNzIENvbnRleHQ5IDogcHVibGljIENv
bnRleHRJbXBsCiAgICAgY29uc3QgZ2w6OkV4dGVuc2lvbnMgJmdldE5hdGl2ZUV4dGVuc2lvbnMo
KSBjb25zdCBvdmVycmlkZTsKICAgICBjb25zdCBnbDo6TGltaXRhdGlvbnMgJmdldE5hdGl2ZUxp
bWl0YXRpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICBnbDo6RXJyb3IgZGlzcGF0Y2hDb21w
dXRlKEdMdWludCBudW1Hcm91cHNYLCBHTHVpbnQgbnVtR3JvdXBzWSwgR0x1aW50IG51bUdyb3Vw
c1opIG92ZXJyaWRlOworCiAgIHByaXZhdGU6CiAgICAgUmVuZGVyZXI5ICptUmVuZGVyZXI7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L0RlYnVnQW5ub3RhdG9yOS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0RlYnVnQW5ub3RhdG9yOS5oCmluZGV4IDU0
ZTNiYjk0OTA2Li5iMjgwMDgzMzVmMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0RlYnVnQW5ub3RhdG9yOS5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9E
ZWJ1Z0Fubm90YXRvcjkuaApAQCAtOSwxMiArOSwxMiBAQAogI2lmbmRlZiBMSUJBTkdMRV9SRU5E
RVJFUl9EM0RfRDNEOV9ERUJVR0FOTk9UQVRPUjlfSF8KICNkZWZpbmUgTElCQU5HTEVfUkVOREVS
RVJfRDNEX0QzRDlfREVCVUdBTk5PVEFUT1I5X0hfCiAKLSNpbmNsdWRlICJjb21tb24vZGVidWcu
aCIKKyNpbmNsdWRlICJsaWJBTkdMRS9Mb2dnaW5nQW5ub3RhdG9yLmgiCiAKIG5hbWVzcGFjZSBy
eAogewogCi1jbGFzcyBEZWJ1Z0Fubm90YXRvcjkgOiBwdWJsaWMgZ2w6OkRlYnVnQW5ub3RhdG9y
CitjbGFzcyBEZWJ1Z0Fubm90YXRvcjkgOiBwdWJsaWMgYW5nbGU6OkxvZ2dpbmdBbm5vdGF0b3IK
IHsKICAgcHVibGljOgogICAgIERlYnVnQW5ub3RhdG9yOSgpIHt9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRmVuY2U5
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9GZW5jZTkuY3BwCmluZGV4IDMzMDA2ODEyNzdlLi4zNzliYTFmNmRmYyAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L0ZlbmNlOS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2Q5L0ZlbmNlOS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgZ2w6OkVycm9yIEZl
bmNlTlY5OjpzZXQoR0xlbnVtIGNvbmRpdGlvbikKICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIGVuZCBldmVudCBxdWVyeSwgcmVzdWx0OiAweCVY
LiIsIHJlc3VsdCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBGZW5jZU5WOTo6dGVz
dChHTGJvb2xlYW4gKm91dEZpbmlzaGVkKQpAQCAtNjYsNyArNjYsNyBAQCBnbDo6RXJyb3IgRmVu
Y2VOVjk6OmZpbmlzaCgpCiAgICAgICAgIFNsZWVwKDApOwogICAgIH0KIAotICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBn
bDo6RXJyb3IgRmVuY2VOVjk6OnRlc3RIZWxwZXIoYm9vbCBmbHVzaENvbW1hbmRCdWZmZXIsIEdM
Ym9vbGVhbiAqb3V0RmluaXNoZWQpCkBAIC04OCw3ICs4OCw3IEBAIGdsOjpFcnJvciBGZW5jZU5W
OTo6dGVzdEhlbHBlcihib29sIGZsdXNoQ29tbWFuZEJ1ZmZlciwgR0xib29sZWFuICpvdXRGaW5p
c2hlZCkKIAogICAgIEFTU0VSVChyZXN1bHQgPT0gU19PSyB8fCByZXN1bHQgPT0gU19GQUxTRSk7
CiAgICAgKm91dEZpbmlzaGVkID0gKChyZXN1bHQgPT0gU19PSykgPyBHTF9UUlVFIDogR0xfRkFM
U0UpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRnJhbWVidWZmZXI5LmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9GcmFtZWJ1ZmZl
cjkuY3BwCmluZGV4IDkyODZkOWIwZGEzLi45MTU1Yzk4Y2QxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ZyYW1lYnVm
ZmVyOS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L0ZyYW1lYnVmZmVyOS5jcHAKQEAgLTM4LDIxICszOCwyMSBAQCBnbDo6RXJy
b3IgRnJhbWVidWZmZXI5OjpkaXNjYXJkKHNpemVfdCwgY29uc3QgR0xlbnVtICopCiB7CiAgICAg
Ly8gRXh0ZW5zaW9uIG5vdCBpbXBsZW1lbnRlZCBpbiBEM0Q5IHJlbmRlcmVyCiAgICAgVU5SRUFD
SEFCTEUoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEZyYW1lYnVmZmVyOTo6aW52YWxpZGF0ZShz
aXplX3QsIGNvbnN0IEdMZW51bSAqKQogewogICAgIC8vIFNob3VsZG4ndCBldmVyIHJlYWNoIGhl
cmUgaW4gRDNEOQogICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBGcmFt
ZWJ1ZmZlcjk6OmludmFsaWRhdGVTdWIoc2l6ZV90LCBjb25zdCBHTGVudW0gKiwgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmKQogewogICAgIC8vIFNob3VsZG4ndCBldmVyIHJlYWNoIGhlcmUgaW4gRDNE
OQogICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBGcmFtZWJ1ZmZlcjk6
OmNsZWFySW1wbChDb250ZXh0SW1wbCAqY29udGV4dCwgY29uc3QgQ2xlYXJQYXJhbWV0ZXJzICZj
bGVhclBhcmFtcykKQEAgLTE2OCw3ICsxNjgsNyBAQCBnbDo6RXJyb3IgRnJhbWVidWZmZXI5Ojpy
ZWFkUGl4ZWxzSW1wbChjb25zdCBnbDo6UmVjdGFuZ2xlICZhcmVhLAogICAgIGlmIChkaXJlY3RU
b1BpeGVscykKICAgICB7CiAgICAgICAgIFNhZmVSZWxlYXNlKHN5c3RlbVN1cmZhY2UpOwotICAg
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiAgICAgfQogCiAgICAgUkVDVCByZWN0OwpAQCAtMjA1LDEyICsyMDUsMTIgQEAg
Z2w6OkVycm9yIEZyYW1lYnVmZmVyOTo6cmVhZFBpeGVsc0ltcGwoY29uc3QgZ2w6OlJlY3Rhbmds
ZSAmYXJlYSwKICAgICBwYWNrUGFyYW1zLm91dHB1dFBpdGNoID0gc3RhdGljX2Nhc3Q8R0x1aW50
PihvdXRwdXRQaXRjaCk7CiAgICAgcGFja1BhcmFtcy5wYWNrICAgICAgICA9IHBhY2s7CiAKLSAg
ICBQYWNrUGl4ZWxzKHBhY2tQYXJhbXMsICpkM2RGb3JtYXRJbmZvLmluZm8sIGlucHV0UGl0Y2gs
IHNvdXJjZSwgcGl4ZWxzKTsKKyAgICBQYWNrUGl4ZWxzKHBhY2tQYXJhbXMsIGQzZEZvcm1hdElu
Zm8uaW5mbygpLCBpbnB1dFBpdGNoLCBzb3VyY2UsIHBpeGVscyk7CiAKICAgICBzeXN0ZW1TdXJm
YWNlLT5VbmxvY2tSZWN0KCk7CiAgICAgU2FmZVJlbGVhc2Uoc3lzdGVtU3VyZmFjZSk7CiAKLSAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3Io
KTsKIH0KIAogZ2w6OkVycm9yIEZyYW1lYnVmZmVyOTo6YmxpdEltcGwoY29uc3QgZ2w6OlJlY3Rh
bmdsZSAmc291cmNlQXJlYSwKQEAgLTM5NywxNCArMzk3LDE0IEBAIGdsOjpFcnJvciBGcmFtZWJ1
ZmZlcjk6OmJsaXRJbXBsKGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogR0xlbnVtIEZyYW1lYnVmZmVyOTo6Z2V0UmVuZGVyVGFy
Z2V0SW1wbGVtZW50YXRpb25Gb3JtYXQoUmVuZGVyVGFyZ2V0RDNEICpyZW5kZXJUYXJnZXQpIGNv
bnN0CiB7CiAgICAgUmVuZGVyVGFyZ2V0OSAqcmVuZGVyVGFyZ2V0OSA9IEdldEFzPFJlbmRlclRh
cmdldDk+KHJlbmRlclRhcmdldCk7CiAgICAgY29uc3QgZDNkOTo6RDNERm9ybWF0ICZkM2RGb3Jt
YXRJbmZvID0gZDNkOTo6R2V0RDNERm9ybWF0SW5mbyhyZW5kZXJUYXJnZXQ5LT5nZXREM0RGb3Jt
YXQoKSk7Ci0gICAgcmV0dXJuIGQzZEZvcm1hdEluZm8uaW5mby0+Z2xJbnRlcm5hbEZvcm1hdDsK
KyAgICByZXR1cm4gZDNkRm9ybWF0SW5mby5pbmZvKCkuZ2xJbnRlcm5hbEZvcm1hdDsKIH0KIAog
fSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvSW1hZ2U5LmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9JbWFnZTkuY3BwCmluZGV4
IDNjMTRiNDNhNTJiLi5jMTc0ZjYwZGJiMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ltYWdlOS5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0ltYWdl
OS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgZ2w6OkVycm9yIEltYWdlOTo6Z2VuZXJhdGVNaXAoSURp
cmVjdDNEU3VyZmFjZTkgKmRlc3RTdXJmYWNlLCBJRGlyZWN0M0RTdXJmYWNlOQogICAgIEFTU0VS
VChzb3VyY2VEZXNjLkhlaWdodCA9PSAxIHx8IHNvdXJjZURlc2MuSGVpZ2h0IC8gMiA9PSBkZXN0
RGVzYy5IZWlnaHQpOwogCiAgICAgY29uc3QgZDNkOTo6RDNERm9ybWF0ICZkM2RGb3JtYXRJbmZv
ID0gZDNkOTo6R2V0RDNERm9ybWF0SW5mbyhzb3VyY2VEZXNjLkZvcm1hdCk7Ci0gICAgQVNTRVJU
KGQzZEZvcm1hdEluZm8uaW5mby0+bWlwR2VuZXJhdGlvbkZ1bmN0aW9uICE9IE5VTEwpOworICAg
IEFTU0VSVChkM2RGb3JtYXRJbmZvLmluZm8oKS5taXBHZW5lcmF0aW9uRnVuY3Rpb24gIT0gTlVM
TCk7CiAKICAgICBEM0RMT0NLRURfUkVDVCBzb3VyY2VMb2NrZWQgPSB7MH07CiAgICAgcmVzdWx0
ID0gc291cmNlU3VyZmFjZS0+TG9ja1JlY3QoJnNvdXJjZUxvY2tlZCwgTlVMTCwgRDNETE9DS19S
RUFET05MWSk7CkBAIC04NSwxMyArODUsMTQgQEAgZ2w6OkVycm9yIEltYWdlOTo6Z2VuZXJhdGVN
aXAoSURpcmVjdDNEU3VyZmFjZTkgKmRlc3RTdXJmYWNlLCBJRGlyZWN0M0RTdXJmYWNlOQogCiAg
ICAgQVNTRVJUKHNvdXJjZURhdGEgJiYgZGVzdERhdGEpOwogCi0gICAgZDNkRm9ybWF0SW5mby5p
bmZvLT5taXBHZW5lcmF0aW9uRnVuY3Rpb24oc291cmNlRGVzYy5XaWR0aCwgc291cmNlRGVzYy5I
ZWlnaHQsIDEsIHNvdXJjZURhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc291cmNlTG9ja2VkLlBpdGNoLCAwLCBkZXN0RGF0YSwgZGVzdExvY2tlZC5Q
aXRjaCwgMCk7CisgICAgZDNkRm9ybWF0SW5mby5pbmZvKCkubWlwR2VuZXJhdGlvbkZ1bmN0aW9u
KHNvdXJjZURlc2MuV2lkdGgsIHNvdXJjZURlc2MuSGVpZ2h0LCAxLCBzb3VyY2VEYXRhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VMb2NrZWQu
UGl0Y2gsIDAsIGRlc3REYXRhLCBkZXN0TG9ja2VkLlBpdGNoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKIAogICAgIGRlc3RTdXJmYWNlLT5Vbmxv
Y2tSZWN0KCk7CiAgICAgc291cmNlU3VyZmFjZS0+VW5sb2NrUmVjdCgpOwogCi0gICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
IGdsOjpFcnJvciBJbWFnZTk6OmdlbmVyYXRlTWlwbWFwKEltYWdlOSAqZGVzdCwgSW1hZ2U5ICpz
b3VyY2UpCkBAIC0xMTgsNyArMTE5LDcgQEAgZ2w6OkVycm9yIEltYWdlOTo6Z2VuZXJhdGVNaXBt
YXAoSW1hZ2U5ICpkZXN0LCBJbWFnZTkgKnNvdXJjZSkKIAogICAgIGRlc3QtPm1hcmtEaXJ0eSgp
OwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBJbWFnZTk6OmNvcHlMb2NrYWJsZVN1cmZhY2VzKElE
aXJlY3QzRFN1cmZhY2U5ICpkZXN0LCBJRGlyZWN0M0RTdXJmYWNlOSAqc291cmNlKQpAQCAtMTYx
LDcgKzE2Miw3IEBAIGdsOjpFcnJvciBJbWFnZTk6OmNvcHlMb2NrYWJsZVN1cmZhY2VzKElEaXJl
Y3QzRFN1cmZhY2U5ICpkZXN0LCBJRGlyZWN0M0RTdXJmYWNlCiAgICAgc291cmNlLT5VbmxvY2tS
ZWN0KCk7CiAgICAgZGVzdC0+VW5sb2NrUmVjdCgpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGJvb2wgSW1hZ2U5
OjpyZWRlZmluZShHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGNvbnN0IGds
OjpFeHRlbnRzICZzaXplLCBib29sIGZvcmNlUmVsZWFzZSkKQEAgLTIwMSw3ICsyMDIsNyBAQCBn
bDo6RXJyb3IgSW1hZ2U5OjpjcmVhdGVTdXJmYWNlKCkKIHsKICAgICBpZiAobVN1cmZhY2UpCiAg
ICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0
dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogCiAgICAgSURpcmVjdDNEVGV4dHVyZTkgKm5ld1Rl
eHR1cmUgPSBOVUxMOwpAQCAtMjYzLDcgKzI2NCw3IEBAIGdsOjpFcnJvciBJbWFnZTk6OmNyZWF0
ZVN1cmZhY2UoKQogICAgIG1EaXJ0eSA9IGZhbHNlOwogICAgIG1EM0RQb29sID0gcG9vbFRvVXNl
OwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBJbWFnZTk6OmxvY2soRDNETE9DS0VEX1JFQ1QgKmxv
Y2tlZFJlY3QsIGNvbnN0IFJFQ1QgJnJlY3QpCkBAIC0yODYsNyArMjg3LDcgQEAgZ2w6OkVycm9y
IEltYWdlOTo6bG9jayhEM0RMT0NLRURfUkVDVCAqbG9ja2VkUmVjdCwgY29uc3QgUkVDVCAmcmVj
dCkKICAgICAgICAgbURpcnR5ID0gdHJ1ZTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogdm9pZCBJbWFn
ZTk6OnVubG9jaygpCkBAIC0yOTQsNyArMjk1LDYgQEAgdm9pZCBJbWFnZTk6OnVubG9jaygpCiAg
ICAgaWYgKG1TdXJmYWNlKQogICAgIHsKICAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBtU3VyZmFj
ZS0+VW5sb2NrUmVjdCgpOwotICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHJlc3Vs
dCk7CiAgICAgICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CiAgICAgfQogfQpAQCAtMzI0
LDcgKzMyNCw3IEBAIGdsOjpFcnJvciBJbWFnZTk6OmdldFN1cmZhY2UoSURpcmVjdDNEU3VyZmFj
ZTkgKipvdXRTdXJmYWNlKQogICAgIH0KIAogICAgICpvdXRTdXJmYWNlID0gbVN1cmZhY2U7Ci0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7CiB9CiAKIGdsOjpFcnJvciBJbWFnZTk6OnNldE1hbmFnZWRTdXJmYWNlMkQoVGV4dHVyZVN0
b3JhZ2UgKnN0b3JhZ2UsIGludCBsZXZlbCkKQEAgLTM3NCw3ICszNzQsNyBAQCBnbDo6RXJyb3Ig
SW1hZ2U5OjpzZXRNYW5hZ2VkU3VyZmFjZShJRGlyZWN0M0RTdXJmYWNlOSAqc3VyZmFjZSkKICAg
ICAgICAgbUQzRFBvb2wgPSBkZXNjLlBvb2w7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJv
ciBJbWFnZTk6OmNvcHlUb1N0b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKnN0b3JhZ2UsIGNvbnN0IGds
OjpJbWFnZUluZGV4ICZpbmRleCwgY29uc3QgZ2w6OkJveCAmcmVnaW9uKQpAQCAtNDY4LDcgKzQ2
OCw3IEBAIGdsOjpFcnJvciBJbWFnZTk6OmNvcHlUb1N1cmZhY2UoSURpcmVjdDNEU3VyZmFjZTkg
KmRlc3RTdXJmYWNlLCBjb25zdCBnbDo6Qm94ICZhCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAogLy8gU3RvcmUgdGhlIHBpeGVsIHJlY3RhbmdsZSBkZXNpZ25hdGVkIGJ5IHhvZmZzZXQs
eW9mZnNldCx3aWR0aCxoZWlnaHQgd2l0aCBwaXhlbHMgc3RvcmVkIGFzIGZvcm1hdC90eXBlIGF0
IGlucHV0CkBAIC01MTMsNyArNTEzLDcgQEAgZ2w6OkVycm9yIEltYWdlOTo6bG9hZERhdGEoY29u
c3QgZ2w6OkJveCAmYXJlYSwKIAogICAgIHVubG9jaygpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJv
ciBJbWFnZTk6OmxvYWRDb21wcmVzc2VkRGF0YShjb25zdCBnbDo6Qm94ICZhcmVhLCBjb25zdCB2
b2lkICppbnB1dCkKQEAgLTU1NCw3ICs1NTQsNyBAQCBnbDo6RXJyb3IgSW1hZ2U5Ojpsb2FkQ29t
cHJlc3NlZERhdGEoY29uc3QgZ2w6OkJveCAmYXJlYSwgY29uc3Qgdm9pZCAqaW5wdXQpCiAKICAg
ICB1bmxvY2soKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiAvLyBUaGlzIGltcGxlbWVudHMgZ2xDb3B5VGV4W1N1
Yl1JbWFnZTJEIGZvciBub24tcmVuZGVyYWJsZSBpbnRlcm5hbCB0ZXh0dXJlIGZvcm1hdHMgYW5k
IGluY29tcGxldGUgdGV4dHVyZXMKQEAgLTc4NSw3ICs3ODUsNyBAQCBnbDo6RXJyb3IgSW1hZ2U5
Ojpjb3B5RnJvbVJUSW50ZXJuYWwoY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKICAgICBT
YWZlUmVsZWFzZShzdXJmYWNlKTsKIAogICAgIG1EaXJ0eSA9IHRydWU7Ci0gICAgcmV0dXJuIGds
OjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGds
OjpFcnJvciBJbWFnZTk6OmNvcHlGcm9tVGV4U3RvcmFnZShjb25zdCBnbDo6SW1hZ2VJbmRleCAm
aW1hZ2VJbmRleCwgVGV4dHVyZVN0b3JhZ2UgKnNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9JbmRleEJ1ZmZl
cjkuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L0luZGV4QnVmZmVyOS5jcHAKaW5kZXggNDAxNTJkZjI1ZDQuLmRhNGY3ZmFkYjBkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvSW5kZXhCdWZmZXI5LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvSW5kZXhCdWZmZXI5LmNwcApAQCAtNjIsNyAr
NjIsNyBAQCBnbDo6RXJyb3IgSW5kZXhCdWZmZXI5Ojppbml0aWFsaXplKHVuc2lnbmVkIGludCBi
dWZmZXJTaXplLCBHTGVudW0gaW5kZXhUeXBlLCBibwogICAgIG1JbmRleFR5cGUgPSBpbmRleFR5
cGU7CiAgICAgbUR5bmFtaWMgPSBkeW5hbWljOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBJbmRl
eEJ1ZmZlcjk6Om1hcEJ1ZmZlcih1bnNpZ25lZCBpbnQgb2Zmc2V0LCB1bnNpZ25lZCBpbnQgc2l6
ZSwgdm9pZCoqIG91dE1hcHBlZE1lbW9yeSkKQEAgLTgyLDcgKzgyLDcgQEAgZ2w6OkVycm9yIElu
ZGV4QnVmZmVyOTo6bWFwQnVmZmVyKHVuc2lnbmVkIGludCBvZmZzZXQsIHVuc2lnbmVkIGludCBz
aXplLCB2b2lkKioKICAgICB9CiAKICAgICAqb3V0TWFwcGVkTWVtb3J5ID0gbWFwUHRyOwotICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OwogfQogCiBnbDo6RXJyb3IgSW5kZXhCdWZmZXI5Ojp1bm1hcEJ1ZmZlcigpCkBAIC05OCw3ICs5
OCw3IEBAIGdsOjpFcnJvciBJbmRleEJ1ZmZlcjk6OnVubWFwQnVmZmVyKCkKICAgICAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIHVubG9jayBpbnRlcm5h
bCBpbmRleCBidWZmZXIsIEhSRVNVTFQ6IDB4JTA4eC4iLCByZXN1bHQpOwogICAgIH0KIAotICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OwogfQogCiBHTGVudW0gSW5kZXhCdWZmZXI5OjpnZXRJbmRleFR5cGUoKSBjb25zdApAQCAtMTE5
LDcgKzExOSw3IEBAIGdsOjpFcnJvciBJbmRleEJ1ZmZlcjk6OnNldFNpemUodW5zaWduZWQgaW50
IGJ1ZmZlclNpemUsIEdMZW51bSBpbmRleFR5cGUpCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0g
ICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKICAgICB9CiB9CiAKQEAgLTE0NSw3ICsxNDUsNyBAQCBnbDo6RXJyb3IgSW5k
ZXhCdWZmZXI5OjpkaXNjYXJkKCkKICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLCAiRmFpbGVkIHRvIHVubG9jayBpbnRlcm5hbCBpbmRleCBidWZmZXIsIEhSRVNVTFQ6
IDB4JTA4eC4iLCByZXN1bHQpOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBEM0RGT1JNQVQgSW5kZXhC
dWZmZXI5OjpnZXRJbmRleEZvcm1hdCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUXVlcnk5LmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9RdWVy
eTkuY3BwCmluZGV4IDllNWE5MGEyZmY4Li44Mjg1MjE1YzIxYiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1F1ZXJ5OS5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L1F1ZXJ5OS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgZ2w6OkVycm9yIFF1ZXJ5OTo6YmVn
aW4oKQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJP
Uik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBRdWVyeTk6OmVu
ZCgpCkBAIC02OCw3ICs2OCw3IEBAIGdsOjpFcnJvciBRdWVyeTk6OmVuZCgpCiAgICAgbVF1ZXJ5
RmluaXNoZWQgPSBmYWxzZTsKICAgICBtUmVzdWx0ID0gR0xfRkFMU0U7CiAKLSAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAog
Z2w6OkVycm9yIFF1ZXJ5OTo6cXVlcnlDb3VudGVyKCkKQEAgLTk2LDcgKzk2LDcgQEAgZ2w6OkVy
cm9yIFF1ZXJ5OTo6Z2V0UmVzdWx0QmFzZShUICpwYXJhbXMpCiAKICAgICBBU1NFUlQobVF1ZXJ5
RmluaXNoZWQpOwogICAgICpwYXJhbXMgPSBzdGF0aWNfY2FzdDxUPihtUmVzdWx0KTsKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAogZ2w6OkVycm9yIFF1ZXJ5OTo6Z2V0UmVzdWx0KEdMaW50ICpwYXJhbXMpCkBAIC0xMjks
NyArMTI5LDcgQEAgZ2w6OkVycm9yIFF1ZXJ5OTo6aXNSZXN1bHRBdmFpbGFibGUoYm9vbCAqYXZh
aWxhYmxlKQogCiAgICAgKmF2YWlsYWJsZSA9IG1RdWVyeUZpbmlzaGVkOwogCi0gICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
IGdsOjpFcnJvciBRdWVyeTk6OnRlc3RRdWVyeSgpCkBAIC0xODMsNyArMTgzLDcgQEAgZ2w6OkVy
cm9yIFF1ZXJ5OTo6dGVzdFF1ZXJ5KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9SZW5kZXJlcjkuY3BwCmluZGV4IDJjMGNhMjZjYjk0
Li41NGQ0M2U3OTMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRlcmVyOS5jcHAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRlcmVyOS5jcHAK
QEAgLTUwNSw2ICs1MDUsOCBAQCBlZ2w6OkNvbmZpZ1NldCBSZW5kZXJlcjk6OmdlbmVyYXRlQ29u
ZmlncygpCiAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy50cmFuc3BhcmVudFJlZFZhbHVlID0g
MDsKICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnRyYW5zcGFyZW50R3JlZW5WYWx1ZSA9IDA7
CiAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy50cmFuc3BhcmVudEJsdWVWYWx1ZSA9IDA7Cisg
ICAgICAgICAgICAgICAgICAgIGNvbmZpZy5jb2xvckNvbXBvbmVudFR5cGUgICAgPSBnbF9lZ2w6
OkdMQ29tcG9uZW50VHlwZVRvRUdMQ29sb3JDb21wb25lbnRUeXBlKAorICAgICAgICAgICAgICAg
ICAgICAgICAgY29sb3JCdWZmZXJGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUpOwogCiAgICAgICAg
ICAgICAgICAgICAgIGNvbmZpZ3MuYWRkKGNvbmZpZyk7CiAgICAgICAgICAgICAgICAgfQpAQCAt
NTI1LDYgKzUyNyw3IEBAIHZvaWQgUmVuZGVyZXI5OjpnZW5lcmF0ZURpc3BsYXlFeHRlbnNpb25z
KGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpCiAgICAgICAgIG91dEV4dGVu
c2lvbnMtPmQzZFNoYXJlSGFuZGxlQ2xpZW50QnVmZmVyICAgICA9IHRydWU7CiAgICAgICAgIG91
dEV4dGVuc2lvbnMtPnN1cmZhY2VEM0RUZXh0dXJlMkRTaGFyZUhhbmRsZSA9IHRydWU7CiAgICAg
fQorICAgIG91dEV4dGVuc2lvbnMtPmQzZFRleHR1cmVDbGllbnRCdWZmZXIgPSB0cnVlOwogCiAg
ICAgb3V0RXh0ZW5zaW9ucy0+cXVlcnlTdXJmYWNlUG9pbnRlciA9IHRydWU7CiAgICAgb3V0RXh0
ZW5zaW9ucy0+d2luZG93Rml4ZWRTaXplICAgICA9IHRydWU7CkBAIC01MzcsNiArNTQwLDkgQEAg
dm9pZCBSZW5kZXJlcjk6OmdlbmVyYXRlRGlzcGxheUV4dGVuc2lvbnMoZWdsOjpEaXNwbGF5RXh0
ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucykKICAgICBvdXRFeHRlbnNpb25zLT5nbFJlbmRlcmJ1ZmZl
ckltYWdlID0gdHJ1ZTsKIAogICAgIG91dEV4dGVuc2lvbnMtPmZsZXhpYmxlU3VyZmFjZUNvbXBh
dGliaWxpdHkgPSB0cnVlOworCisgICAgLy8gQ29udGV4dHMgYXJlIHZpcnR1YWxpemVkIHNvIHRl
eHR1cmVzIGNhbiBiZSBzaGFyZWQgZ2xvYmFsbHkKKyAgICBvdXRFeHRlbnNpb25zLT5kaXNwbGF5
VGV4dHVyZVNoYXJlR3JvdXAgPSB0cnVlOwogfQogCiB2b2lkIFJlbmRlcmVyOTo6c3RhcnRTY2Vu
ZSgpCkBAIC01OTIsNyArNTk4LDcgQEAgZ2w6OkVycm9yIFJlbmRlcmVyOTo6Zmx1c2goKQogICAg
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gZ2V0IGV2
ZW50IHF1ZXJ5IGRhdGEsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOwogICAgIH0KIAotICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
fQogCiBnbDo6RXJyb3IgUmVuZGVyZXI5OjpmaW5pc2goKQpAQCAtNjU1LDcgKzY2MSw3IEBAIGds
OjpFcnJvciBSZW5kZXJlcjk6OmZpbmlzaCgpCiAKICAgICBmcmVlRXZlbnRRdWVyeShxdWVyeSk7
CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAogYm9vbCBSZW5kZXJlcjk6OmlzVmFsaWROYXRpdmVXaW5kb3coRUdMTmF0
aXZlV2luZG93VHlwZSB3aW5kb3cpIGNvbnN0CkBAIC02NzIsMTIgKzY3OCwxMTEgQEAgTmF0aXZl
V2luZG93RDNEICpSZW5kZXJlcjk6OmNyZWF0ZU5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVXaW5kb3dU
eXBlIHdpbmRvdywKIAogU3dhcENoYWluRDNEICpSZW5kZXJlcjk6OmNyZWF0ZVN3YXBDaGFpbihO
YXRpdmVXaW5kb3dEM0QgKm5hdGl2ZVdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgSEFORExFIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBJVW5rbm93biAqZDNkVGV4dHVyZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXB0aEJ1ZmZlckZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IG9y
aWVudGF0aW9uKQogewotICAgIHJldHVybiBuZXcgU3dhcENoYWluOSh0aGlzLCBHZXRBczxOYXRp
dmVXaW5kb3c5PihuYXRpdmVXaW5kb3cpLCBzaGFyZUhhbmRsZSwgYmFja0J1ZmZlckZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwdGhCdWZmZXJGb3JtYXQsIG9yaWVudGF0aW9u
KTsKKyAgICByZXR1cm4gbmV3IFN3YXBDaGFpbjkodGhpcywgR2V0QXM8TmF0aXZlV2luZG93OT4o
bmF0aXZlV2luZG93KSwgc2hhcmVIYW5kbGUsIGQzZFRleHR1cmUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJhY2tCdWZmZXJGb3JtYXQsIGRlcHRoQnVmZmVyRm9ybWF0LCBvcmllbnRhdGlv
bik7Cit9CisKK2VnbDo6RXJyb3IgUmVuZGVyZXI5OjpnZXREM0RUZXh0dXJlSW5mbyhJVW5rbm93
biAqZDNkVGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xpbnQgKndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TGludCAqaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSAqZmJvRm9ybWF0KSBjb25zdAoreworICAgIElEaXJlY3QzRFRleHR1cmU5ICp0ZXh0dXJl
ID0gbnVsbHB0cjsKKyAgICBpZiAoRkFJTEVEKGQzZFRleHR1cmUtPlF1ZXJ5SW50ZXJmYWNlKCZ0
ZXh0dXJlKSkpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX1BBUkFN
RVRFUiwgImNsaWVudCBidWZmZXIgaXMgbm90IGEgSURpcmVjdDNEVGV4dHVyZTkiKTsKKyAgICB9
CisKKyAgICBJRGlyZWN0M0REZXZpY2U5ICp0ZXh0dXJlRGV2aWNlID0gbnVsbHB0cjsKKyAgICB0
ZXh0dXJlLT5HZXREZXZpY2UoJnRleHR1cmVEZXZpY2UpOworICAgIGlmICh0ZXh0dXJlRGV2aWNl
ICE9IG1EZXZpY2UpCisgICAgeworICAgICAgICBTYWZlUmVsZWFzZSh0ZXh0dXJlKTsKKyAgICAg
ICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJUZXh0dXJlJ3MgZGV2aWNl
IGRvZXMgbm90IG1hdGNoLiIpOworICAgIH0KKyAgICBTYWZlUmVsZWFzZSh0ZXh0dXJlRGV2aWNl
KTsKKworICAgIEQzRFNVUkZBQ0VfREVTQyBkZXNjOworICAgIHRleHR1cmUtPkdldExldmVsRGVz
YygwLCAmZGVzYyk7CisgICAgU2FmZVJlbGVhc2UodGV4dHVyZSk7CisKKyAgICBpZiAod2lkdGgp
CisgICAgeworICAgICAgICAqd2lkdGggPSBzdGF0aWNfY2FzdDxFR0xpbnQ+KGRlc2MuV2lkdGgp
OworICAgIH0KKyAgICBpZiAoaGVpZ2h0KQorICAgIHsKKyAgICAgICAgKmhlaWdodCA9IHN0YXRp
Y19jYXN0PEVHTGludD4oZGVzYy5IZWlnaHQpOworICAgIH0KKworICAgIC8vIEZyb20gdGFibGUg
ZWdsLnJlc3RyaWN0aW9ucyBpbiBFR0xfQU5HTEVfZDNkX3RleHR1cmVfY2xpZW50X2J1ZmZlci4K
KyAgICBzd2l0Y2ggKGRlc2MuRm9ybWF0KQorICAgIHsKKyAgICAgICAgY2FzZSBEM0RGTVRfUjhH
OEI4OgorICAgICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKKyAgICAgICAgY2FzZSBEM0RGTVRf
QTE2QjE2RzE2UjE2RjoKKyAgICAgICAgY2FzZSBEM0RGTVRfQTMyQjMyRzMyUjMyRjoKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZWds
OjpFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgIlVua25vd24gY2xpZW50IGJ1ZmZlciB0ZXh0dXJl
IGZvcm1hdDogJXUuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2MuRm9ybWF0
KTsKKyAgICB9CisKKyAgICBpZiAoZmJvRm9ybWF0KQorICAgIHsKKyAgICAgICAgY29uc3QgYXV0
byAmZDNkRm9ybWF0SW5mbyA9IGQzZDk6OkdldEQzREZvcm1hdEluZm8oZGVzYy5Gb3JtYXQpOwor
ICAgICAgICBBU1NFUlQoZDNkRm9ybWF0SW5mby5pbmZvKCkuaWQgIT0gYW5nbGU6OkZvcm1hdDo6
SUQ6Ok5PTkUpOworICAgICAgICAqZmJvRm9ybWF0ID0gZDNkRm9ybWF0SW5mby5pbmZvKCkuZmJv
SW1wbGVtZW50YXRpb25JbnRlcm5hbEZvcm1hdDsKKyAgICB9CisKKyAgICByZXR1cm4gZWdsOjpF
cnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgUmVuZGVyZXI5Ojp2YWxpZGF0ZVNo
YXJlSGFuZGxlKGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEUgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0
cmlicykgY29uc3QKK3sKKyAgICBpZiAoc2hhcmVIYW5kbGUgPT0gbnVsbHB0cikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCAiTlVMTCBzaGFyZSBo
YW5kbGUuIik7CisgICAgfQorCisgICAgRUdMaW50IHdpZHRoICA9IGF0dHJpYnMuZ2V0QXNJbnQo
RUdMX1dJRFRILCAwKTsKKyAgICBFR0xpbnQgaGVpZ2h0ID0gYXR0cmlicy5nZXRBc0ludChFR0xf
SEVJR0hULCAwKTsKKyAgICBBU1NFUlQod2lkdGggIT0gMCAmJiBoZWlnaHQgIT0gMCk7CisKKyAg
ICBjb25zdCBkM2Q5OjpUZXh0dXJlRm9ybWF0ICZiYWNrQnVmZmVyZDNkRm9ybWF0SW5mbyA9Cisg
ICAgICAgIGQzZDk6OkdldFRleHR1cmVGb3JtYXRJbmZvKGNvbmZpZy0+cmVuZGVyVGFyZ2V0Rm9y
bWF0KTsKKworICAgIElEaXJlY3QzRFRleHR1cmU5ICp0ZXh0dXJlID0gbnVsbHB0cjsKKyAgICBI
UkVTVUxUIHJlc3VsdCAgICAgICAgICAgICA9IG1EZXZpY2UtPkNyZWF0ZVRleHR1cmUod2lkdGgs
IGhlaWdodCwgMSwgRDNEVVNBR0VfUkVOREVSVEFSR0VULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBiYWNrQnVmZmVyZDNkRm9ybWF0SW5mby50ZXhGb3JtYXQs
IEQzRFBPT0xfREVGQVVMVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJnRleHR1cmUsICZzaGFyZUhhbmRsZSk7CisgICAgaWYgKEZBSUxFRChyZXN1bHQpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJGYWls
ZWQgdG8gb3BlbiBzaGFyZSBoYW5kbGUsIHJlc3VsdDogMHglWC4iLCByZXN1bHQpOworICAgIH0K
KworICAgIERXT1JEIGxldmVsQ291bnQgPSB0ZXh0dXJlLT5HZXRMZXZlbENvdW50KCk7CisKKyAg
ICBEM0RTVVJGQUNFX0RFU0MgZGVzYzsKKyAgICB0ZXh0dXJlLT5HZXRMZXZlbERlc2MoMCwgJmRl
c2MpOworICAgIFNhZmVSZWxlYXNlKHRleHR1cmUpOworCisgICAgaWYgKGxldmVsQ291bnQgIT0g
MSB8fCBkZXNjLldpZHRoICE9IHN0YXRpY19jYXN0PFVJTlQ+KHdpZHRoKSB8fAorICAgICAgICBk
ZXNjLkhlaWdodCAhPSBzdGF0aWNfY2FzdDxVSU5UPihoZWlnaHQpIHx8CisgICAgICAgIGRlc2Mu
Rm9ybWF0ICE9IGJhY2tCdWZmZXJkM2RGb3JtYXRJbmZvLnRleEZvcm1hdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCAiSW52YWxpZCB0ZXh0dXJl
IHBhcmFtZXRlcnMgaW4gc2hhcmUgaGFuZGxlIHRleHR1cmUuIik7CisgICAgfQorCisgICAgcmV0
dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCiBDb250ZXh0SW1wbCAqUmVuZGVyZXI5
OjpjcmVhdGVDb250ZXh0KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRlKQpAQCAtNzA3LDcg
KzgxMiw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjk6OmFsbG9jYXRlRXZlbnRRdWVyeShJRGlyZWN0
M0RRdWVyeTkgKipvdXRRdWVyeSkKICAgICAgICAgbUV2ZW50UXVlcnlQb29sLnBvcF9iYWNrKCk7
CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQgUmVuZGVyZXI5OjpmcmVlRXZlbnRRdWVyeShJRGly
ZWN0M0RRdWVyeTkqIHF1ZXJ5KQpAQCAtODI4LDcgKzkzMyw3IEBAIGdsOjpFcnJvciBSZW5kZXJl
cjk6OnNldFNhbXBsZXJTdGF0ZShnbDo6U2FtcGxlclR5cGUgdHlwZSwgaW50IGluZGV4LCBnbDo6
VGV4dHVyCiAgICAgYXBwbGllZFNhbXBsZXIuc2FtcGxlclN0YXRlID0gc2FtcGxlclN0YXRlOwog
ICAgIGFwcGxpZWRTYW1wbGVyLmJhc2VMZXZlbCA9IGJhc2VMZXZlbDsKIAotICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBn
bDo6RXJyb3IgUmVuZGVyZXI5OjpzZXRUZXh0dXJlKGdsOjpTYW1wbGVyVHlwZSB0eXBlLCBpbnQg
aW5kZXgsIGdsOjpUZXh0dXJlICp0ZXh0dXJlKQpAQCAtODc2LDcgKzk4MSw3IEBAIGdsOjpFcnJv
ciBSZW5kZXJlcjk6OnNldFRleHR1cmUoZ2w6OlNhbXBsZXJUeXBlIHR5cGUsIGludCBpbmRleCwg
Z2w6OlRleHR1cmUgKnRlCiAKICAgICBhcHBsaWVkVGV4dHVyZXNbaW5kZXhdID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50cHRyX3Q+KGQzZFRleHR1cmUpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBS
ZW5kZXJlcjk6OnNldFVuaWZvcm1CdWZmZXJzKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJiAvKmRh
dGEqLywKQEAgLTg4NCw3ICs5ODksNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXI5OjpzZXRVbmlmb3Jt
QnVmZmVycyhjb25zdCBnbDo6Q29udGV4dFN0YXRlICYgLypkYXRhKi8sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxHTGludD4gJiAvKmZy
YWdtZW50VW5pZm9ybUJ1ZmZlcnMqLykKIHsKICAgICAvLyBObyBlZmZlY3QgaW4gRVMyL0QzRDkK
LSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKIH0KIAogZ2w6OkVycm9yIFJlbmRlcmVyOTo6dXBkYXRlU3RhdGUoQ29udGV4dDkgKmNv
bnRleHQsIEdMZW51bSBkcmF3TW9kZSkKQEAgLTg5NSw3ICsxMDAwLDcgQEAgZ2w6OkVycm9yIFJl
bmRlcmVyOTo6dXBkYXRlU3RhdGUoQ29udGV4dDkgKmNvbnRleHQsIEdMZW51bSBkcmF3TW9kZSkK
ICAgICAvLyBBcHBsaWVzIHRoZSByZW5kZXIgdGFyZ2V0IHN1cmZhY2UsIGRlcHRoIHN0ZW5jaWwg
c3VyZmFjZSwgdmlld3BvcnQgcmVjdGFuZ2xlIGFuZAogICAgIC8vIHNjaXNzb3IgcmVjdGFuZ2xl
IHRvIHRoZSByZW5kZXJlcgogICAgIGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBnbFN0
YXRlLmdldERyYXdGcmFtZWJ1ZmZlcigpOwotICAgIEFTU0VSVChmcmFtZWJ1ZmZlciAmJiAhZnJh
bWVidWZmZXItPmhhc0FueURpcnR5Qml0KCkgJiYgZnJhbWVidWZmZXItPmNvbXBsZXRlKGRhdGEp
KTsKKyAgICBBU1NFUlQoZnJhbWVidWZmZXIgJiYgIWZyYW1lYnVmZmVyLT5oYXNBbnlEaXJ0eUJp
dCgpICYmIGZyYW1lYnVmZmVyLT5jYWNoZWRDb21wbGV0ZSgpKTsKIAogICAgIEFOR0xFX1RSWShh
cHBseVJlbmRlclRhcmdldChjb250ZXh0LCBmcmFtZWJ1ZmZlcikpOwogCkBAIC05MDcsNyArMTAx
MiwxOCBAQCBnbDo6RXJyb3IgUmVuZGVyZXI5Ojp1cGRhdGVTdGF0ZShDb250ZXh0OSAqY29udGV4
dCwgR0xlbnVtIGRyYXdNb2RlKQogICAgIHNldFNjaXNzb3JSZWN0YW5nbGUoZ2xTdGF0ZS5nZXRT
Y2lzc29yKCksIGdsU3RhdGUuaXNTY2lzc29yVGVzdEVuYWJsZWQoKSk7CiAKICAgICAvLyBTZXR0
aW5nIGJsZW5kLCBkZXB0aCBzdGVuY2lsLCBhbmQgcmFzdGVyaXplciBzdGF0ZXMKLSAgICBpbnQg
c2FtcGxlcyAgICAgICAgICAgICAgICAgICAgPSBmcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcyhkYXRh
KTsKKyAgICAvLyBTaW5jZSBmcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcyB3aWxsIHJldHVybiB0aGUg
b3JpZ2luYWwgc2FtcGxlcyB3aGljaCBtYXkgYmUgZGlmZmVyZW50IHdpdGgKKyAgICAvLyB0aGUg
c2FtcGxlIGNvdW50cyB0aGF0IHdlIHNldCBpbiByZW5kZXIgdGFyZ2V0IHZpZXcsIGhlcmUgd2Ug
dXNlIHJlbmRlclRhcmdldC0+Z2V0U2FtcGxlcyB0bworICAgIC8vIGdldCB0aGUgYWN0dWFsIHNh
bXBsZXMuCisgICAgR0xzaXplaSBzYW1wbGVzICAgICAgICAgICA9IDA7CisgICAgYXV0byBmaXJz
dENvbG9yQXR0YWNobWVudCA9IGZyYW1lYnVmZmVyLT5nZXRGaXJzdENvbG9yYnVmZmVyKCk7Cisg
ICAgaWYgKGZpcnN0Q29sb3JBdHRhY2htZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGZpcnN0
Q29sb3JBdHRhY2htZW50LT5pc0F0dGFjaGVkKCkpOworICAgICAgICBSZW5kZXJUYXJnZXQ5ICpy
ZW5kZXJUYXJnZXQgPSBudWxscHRyOworICAgICAgICBBTkdMRV9UUlkoZmlyc3RDb2xvckF0dGFj
aG1lbnQtPmdldFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0KSk7CisgICAgICAgIHNhbXBsZXMg
PSByZW5kZXJUYXJnZXQtPmdldFNhbXBsZXMoKTsKKyAgICB9CiAgICAgZ2w6OlJhc3Rlcml6ZXJT
dGF0ZSByYXN0ZXJpemVyID0gZ2xTdGF0ZS5nZXRSYXN0ZXJpemVyU3RhdGUoKTsKICAgICByYXN0
ZXJpemVyLnBvaW50RHJhd01vZGUgICAgICAgPSAoZHJhd01vZGUgPT0gR0xfUE9JTlRTKTsKICAg
ICByYXN0ZXJpemVyLm11bHRpU2FtcGxlICAgICAgICAgPSAoc2FtcGxlcyAhPSAwKTsKQEAgLTkz
MCw3ICsxMDQ2LDE4IEBAIGdsOjpFcnJvciBSZW5kZXJlcjk6OnNldEJsZW5kRGVwdGhSYXN0ZXJT
dGF0ZXMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZ2xEYXRhLCBHCiAgICAgY29uc3QgYXV0byAm
Z2xTdGF0ZSAgPSBnbERhdGEuZ2V0U3RhdGUoKTsKICAgICBhdXRvIGRyYXdGcmFtZWJ1ZmZlciA9
IGdsU3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CiAgICAgQVNTRVJUKCFkcmF3RnJhbWVidWZm
ZXItPmhhc0FueURpcnR5Qml0KCkpOwotICAgIGludCBzYW1wbGVzICAgICAgICAgICAgICAgICAg
ICA9IGRyYXdGcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcyhnbERhdGEpOworICAgIC8vIFNpbmNlIGZy
YW1lYnVmZmVyLT5nZXRTYW1wbGVzIHdpbGwgcmV0dXJuIHRoZSBvcmlnaW5hbCBzYW1wbGVzIHdo
aWNoIG1heSBiZSBkaWZmZXJlbnQgd2l0aAorICAgIC8vIHRoZSBzYW1wbGUgY291bnRzIHRoYXQg
d2Ugc2V0IGluIHJlbmRlciB0YXJnZXQgdmlldywgaGVyZSB3ZSB1c2UgcmVuZGVyVGFyZ2V0LT5n
ZXRTYW1wbGVzIHRvCisgICAgLy8gZ2V0IHRoZSBhY3R1YWwgc2FtcGxlcy4KKyAgICBHTHNpemVp
IHNhbXBsZXMgICAgICAgICAgID0gMDsKKyAgICBhdXRvIGZpcnN0Q29sb3JBdHRhY2htZW50ID0g
ZHJhd0ZyYW1lYnVmZmVyLT5nZXRGaXJzdENvbG9yYnVmZmVyKCk7CisgICAgaWYgKGZpcnN0Q29s
b3JBdHRhY2htZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGZpcnN0Q29sb3JBdHRhY2htZW50
LT5pc0F0dGFjaGVkKCkpOworICAgICAgICBSZW5kZXJUYXJnZXQ5ICpyZW5kZXJUYXJnZXQgPSBu
dWxscHRyOworICAgICAgICBBTkdMRV9UUlkoZmlyc3RDb2xvckF0dGFjaG1lbnQtPmdldFJlbmRl
clRhcmdldCgmcmVuZGVyVGFyZ2V0KSk7CisgICAgICAgIHNhbXBsZXMgPSByZW5kZXJUYXJnZXQt
PmdldFNhbXBsZXMoKTsKKyAgICB9CiAgICAgZ2w6OlJhc3Rlcml6ZXJTdGF0ZSByYXN0ZXJpemVy
ID0gZ2xTdGF0ZS5nZXRSYXN0ZXJpemVyU3RhdGUoKTsKICAgICByYXN0ZXJpemVyLnBvaW50RHJh
d01vZGUgICAgICAgPSAoZHJhd01vZGUgPT0gR0xfUE9JTlRTKTsKICAgICByYXN0ZXJpemVyLm11
bHRpU2FtcGxlICAgICAgICAgPSAoc2FtcGxlcyAhPSAwKTsKQEAgLTEwMDYsNyArMTEzMyw3IEBA
IGdsOjpFcnJvciBSZW5kZXJlcjk6OmdldE51bGxDb2xvcmJ1ZmZlcihHTEltcGxGYWN0b3J5ICpp
bXBsRmFjdG9yeSwKICAgICAgICAgewogICAgICAgICAgICAgbU51bGxDb2xvcmJ1ZmZlckNhY2hl
W2ldLmxydUNvdW50ID0gKyttTWF4TnVsbENvbG9yYnVmZmVyTFJVOwogICAgICAgICAgICAgKm91
dENvbG9yQnVmZmVyID0gbU51bGxDb2xvcmJ1ZmZlckNhY2hlW2ldLmJ1ZmZlcjsKLSAgICAgICAg
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICAgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEwMzcsNyArMTE2NCw3IEBAIGds
OjpFcnJvciBSZW5kZXJlcjk6OmdldE51bGxDb2xvcmJ1ZmZlcihHTEltcGxGYWN0b3J5ICppbXBs
RmFjdG9yeSwKICAgICBvbGRlc3QtPmhlaWdodCAgID0gc2l6ZS5oZWlnaHQ7CiAKICAgICAqb3V0
Q29sb3JCdWZmZXIgPSBudWxsYnVmZmVyOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXI5
OjphcHBseVJlbmRlclRhcmdldChHTEltcGxGYWN0b3J5ICppbXBsRmFjdG9yeSwKQEAgLTExNDIs
NyArMTI2OSw3IEBAIGdsOjpFcnJvciBSZW5kZXJlcjk6OmFwcGx5UmVuZGVyVGFyZ2V0KEdMSW1w
bEZhY3RvcnkgKmltcGxGYWN0b3J5LAogICAgICAgICBtUmVuZGVyVGFyZ2V0RGVzY0luaXRpYWxp
emVkID0gdHJ1ZTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsK
KyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFJlbmRlcmVyOTo6YXBw
bHlSZW5kZXJUYXJnZXQoR0xJbXBsRmFjdG9yeSAqaW1wbEZhY3RvcnksCkBAIC0xMTk3LDEzICsx
MzI0LDEzIEBAIGdsOjpFcnJvciBSZW5kZXJlcjk6OmFwcGx5SW5kZXhCdWZmZXIoY29uc3QgZ2w6
OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAgbUFwcGxpZWRJQlNlcmlhbCA9IGluZGV4SW5m
by0+c2VyaWFsOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwor
ICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXI5OjphcHBs
eVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVycyhjb25zdCBnbDo6U3RhdGUgJnN0YXRlKQogewogICAg
IEFTU0VSVCghc3RhdGUuaXNUcmFuc2Zvcm1GZWVkYmFja0FjdGl2ZVVucGF1c2VkKCkpOwotICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXI5OjpkcmF3QXJyYXlzSW1wbChjb25zdCBnbDo6Q29u
dGV4dFN0YXRlICZkYXRhLApAQCAtMTI0MiwxMiArMTM2OSwxMiBAQCBnbDo6RXJyb3IgUmVuZGVy
ZXI5OjpkcmF3QXJyYXlzSW1wbChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAogICAgICAg
ICAgICAgbURldmljZS0+RHJhd0luZGV4ZWRQcmltaXRpdmUobVByaW1pdGl2ZVR5cGUsIDAsIDAs
IGNvdW50LCAwLCBtUHJpbWl0aXZlQ291bnQpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
ICAgIH0KICAgICBlbHNlICAgLy8gUmVndWxhciBjYXNlCiAgICAgewogICAgICAgICBtRGV2aWNl
LT5EcmF3UHJpbWl0aXZlKG1QcmltaXRpdmVUeXBlLCAwLCBtUHJpbWl0aXZlQ291bnQpOwotICAg
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiAgICAgfQogfQogCkBAIC0xMjgzLDcgKzE0MTAsNyBAQCBnbDo6RXJyb3IgUmVu
ZGVyZXI5OjpkcmF3RWxlbWVudHNJbXBsKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxVSU5U
Pih2ZXJ0ZXhDb3VudCksIGluZGV4SW5mby5zdGFydEluZGV4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbVByaW1pdGl2ZUNvdW50KTsKICAgICAgICAgfQotICAg
ICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiAgICAgfQogfQogCkBAIC0xNDcyLDcgKzE1OTksNyBAQCBnbDo6RXJyb3IgUmVu
ZGVyZXI5OjpkcmF3TGluZUxvb3AoR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdM
dm9pZCAqaW5kaQogCiAgICAgbURldmljZS0+RHJhd0luZGV4ZWRQcmltaXRpdmUoRDNEUFRfTElO
RVNUUklQLCAtbWluSW5kZXgsIG1pbkluZGV4LCBjb3VudCwgc3RhcnRJbmRleCwgY291bnQpOwog
Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMTQ4NCw3ICsxNjExLDcgQEAg
c3RhdGljIGdsOjpFcnJvciBkcmF3UG9pbnRzKElEaXJlY3QzRERldmljZTkqIGRldmljZSwgR0xz
aXplaSBjb3VudCwgY29uc3QgR0x2b2kKICAgICAgICAgZGV2aWNlLT5EcmF3UHJpbWl0aXZlKEQz
RFBUX1BPSU5UTElTVCwgaW5kZXhWYWx1ZSwgMSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpF
cnJvciBSZW5kZXJlcjk6OmRyYXdJbmRleGVkUG9pbnRzKEdMc2l6ZWkgY291bnQsIEdMZW51bSB0
eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIGludCBtaW5JbmRleCwgZ2w6OkJ1ZmZlciAqZWxl
bWVudEFycmF5QnVmZmVyKQpAQCAtMTU4NSwxMSArMTcxMiwxNCBAQCBnbDo6RXJyb3IgUmVuZGVy
ZXI5OjpnZXRDb3VudGluZ0lCKHNpemVfdCBjb3VudCwgU3RhdGljSW5kZXhCdWZmZXJJbnRlcmZh
Y2UgKipvdQogICAgIH0KIAogICAgICpvdXRJQiA9IG1Db3VudGluZ0lCOwotICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBn
bDo6RXJyb3IgUmVuZGVyZXI5OjphcHBseVNoYWRlcnMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAm
ZGF0YSwgR0xlbnVtIGRyYXdNb2RlKQogeworICAgIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBz
aW5nbGUtdGhyZWFkZWQuCisgICAgQU5HTEVfVFJZKGVuc3VyZUhMU0xDb21waWxlckluaXRpYWxp
emVkKCkpOworCiAgICAgUHJvZ3JhbUQzRCAqcHJvZ3JhbUQzRCA9IEdldEltcGxBczxQcm9ncmFt
RDNEPihkYXRhLmdldFN0YXRlKCkuZ2V0UHJvZ3JhbSgpKTsKICAgICBwcm9ncmFtRDNELT51cGRh
dGVDYWNoZWRJbnB1dExheW91dChkYXRhLmdldFN0YXRlKCkpOwogCkBAIC0xNjgwLDcgKzE4MTAs
NyBAQCBnbDo6RXJyb3IgUmVuZGVyZXI5OjphcHBseVVuaWZvcm1zKGNvbnN0IFByb2dyYW1EM0Qg
JnByb2dyYW1EM0QsCiAgICAgLy8gRHJpdmVyIHVuaWZvcm1zCiAgICAgbVN0YXRlTWFuYWdlci5z
ZXRTaGFkZXJDb25zdGFudHMoKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2b2lkIFJlbmRlcmVyOTo6YXBwbHlV
bmlmb3JtbmZ2KGNvbnN0IEQzRFVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIGNvbnN0IEdMZmxvYXQg
KnYpCkBAIC0xOTc5LDcgKzIxMDksNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXI5OjpjbGVhcihjb25z
dCBDbGVhclBhcmFtZXRlcnMgJmNsZWFyUGFyYW1zLAogICAgICAgICBtRGV2aWNlLT5DbGVhcigw
LCBOVUxMLCBkeENsZWFyRmxhZ3MsIGNvbG9yLCBkZXB0aCwgc3RlbmNpbCk7CiAgICAgfQogCi0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7CiB9CiAKIHZvaWQgUmVuZGVyZXI5OjptYXJrQWxsU3RhdGVEaXJ0eSgpCkBAIC0yMTMzLDEz
ICsyMjYzLDEzIEBAIGJvb2wgUmVuZGVyZXI5OjpyZXNldERldmljZSgpCiAKICAgICBpZiAoRkFJ
TEVEKHJlc3VsdCkpCiAgICAgewotICAgICAgICBFUlIoIlJlc2V0L1Jlc2V0RXggZmFpbGVkIG11
bHRpcGxlIHRpbWVzOiAweCUwOFgiLCByZXN1bHQpOworICAgICAgICBFUlIoKSA8PCAiUmVzZXQv
UmVzZXRFeCBmYWlsZWQgbXVsdGlwbGUgdGltZXMsICIgPDwgZ2w6OkZtdEhSKHJlc3VsdCk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAocmVtb3ZlZERldmljZSAmJiBs
b3N0KQogICAgIHsKLSAgICAgICAgRVJSKCJEZXZpY2UgbG9zdCByZXNldCBmYWlsZWQgbXVsdGlw
bGUgdGltZXMiKTsKKyAgICAgICAgRVJSKCkgPDwgIkRldmljZSBsb3N0IHJlc2V0IGZhaWxlZCBt
dWx0aXBsZSB0aW1lcyI7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTIzMzMs
MTMgKzI0NjMsMjMgQEAgZ2w6OkVycm9yIFJlbmRlcmVyOTo6Y29weVRleHR1cmUoY29uc3QgZ2w6
OlRleHR1cmUgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBkZXN0Rm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
Ok9mZnNldCAmZGVzdE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl
eHR1cmVTdG9yYWdlICpzdG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGRlc3RUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBkZXN0TGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFj
a0ZsaXBZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVt
dWx0aXBseUFscGhhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBh
Y2tVbm11bHRpcGx5QWxwaGEpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIEFTU0VSVChkZXN0VGFyZ2V0ID09
IEdMX1RFWFRVUkVfMkQpOworCisgICAgUkVDVCByZWN0OworICAgIHJlY3QubGVmdCAgID0gc291
cmNlUmVjdC54OworICAgIHJlY3QudG9wICAgID0gc291cmNlUmVjdC55OworICAgIHJlY3Qucmln
aHQgID0gc291cmNlUmVjdC54ICsgc291cmNlUmVjdC53aWR0aDsKKyAgICByZWN0LmJvdHRvbSA9
IHNvdXJjZVJlY3QueSArIHNvdXJjZVJlY3QuaGVpZ2h0OworCisgICAgcmV0dXJuIG1CbGl0LT5j
b3B5VGV4dHVyZTJEKHNvdXJjZSwgc291cmNlTGV2ZWwsIHJlY3QsIGRlc3RGb3JtYXQsIGRlc3RP
ZmZzZXQsIHN0b3JhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RMZXZl
bCwgdW5wYWNrRmxpcFksIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVucGFja1VubXVsdGlwbHlBbHBoYSk7CiB9CiAKIGdsOjpFcnJvciBS
ZW5kZXJlcjk6OmNvcHlDb21wcmVzc2VkVGV4dHVyZShjb25zdCBnbDo6VGV4dHVyZSAqc291cmNl
LApAQCAtMjQxNCw3ICsyNTU0LDcgQEAgZ2w6OkVycm9yIFJlbmRlcmVyOTo6Y3JlYXRlUmVuZGVy
VGFyZ2V0KGludCB3aWR0aCwgaW50IGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0wKIAogICAgICpv
dXRSVCA9IG5ldyBUZXh0dXJlUmVuZGVyVGFyZ2V0OSh0ZXh0dXJlLCAwLCByZW5kZXJUYXJnZXQs
IGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3VwcG9ydGVkU2FtcGxlcyk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBSZW5kZXJl
cjk6OmNyZWF0ZVJlbmRlclRhcmdldENvcHkoUmVuZGVyVGFyZ2V0RDNEICpzb3VyY2UsIFJlbmRl
clRhcmdldEQzRCAqKm91dFJUKQpAQCAtMjQ0MSw3ICsyNTgxLDcgQEAgZ2w6OkVycm9yIFJlbmRl
cmVyOTo6Y3JlYXRlUmVuZGVyVGFyZ2V0Q29weShSZW5kZXJUYXJnZXREM0QgKnNvdXJjZSwgUmVu
ZGVyVGFyZ2UKICAgICB9CiAKICAgICAqb3V0UlQgPSBuZXdSVDsKLSAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVy
cm9yIFJlbmRlcmVyOTo6bG9hZEV4ZWN1dGFibGUoY29uc3Qgdm9pZCAqZnVuY3Rpb24sCkBAIC0y
NDgzLDcgKzI2MjMsNyBAQCBnbDo6RXJyb3IgUmVuZGVyZXI5Ojpsb2FkRXhlY3V0YWJsZShjb25z
dCB2b2lkICpmdW5jdGlvbiwKICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTik7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cisg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBSZW5kZXJlcjk6OmNvbXBp
bGVUb0V4ZWN1dGFibGUoZ2w6OkluZm9Mb2cgJmluZm9Mb2csCkBAIC0yNDkxLDI4ICsyNjMxLDMy
IEBAIGdsOjpFcnJvciBSZW5kZXJlcjk6OmNvbXBpbGVUb0V4ZWN1dGFibGUoZ2w6OkluZm9Mb2cg
JmluZm9Mb2csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
clR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjp2ZWN0b3I8RDNEVmFyeWluZz4gJnN0cmVhbU91dFZhcnlpbmdzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHNlcGFyYXRlZE91dHB1dEJ1ZmZl
cnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEQzRENv
bXBpbGVyV29ya2Fyb3VuZHMgJndvcmthcm91bmRzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBhbmdsZTo6Q29tcGlsZXJXb3JrYXJvdW5kc0QzRCAmd29y
a2Fyb3VuZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoYWRl
ckV4ZWN1dGFibGVEM0QgKipvdXRFeGVjdHVhYmxlKQogewogICAgIC8vIFRyYW5zZm9ybSBmZWVk
YmFjayBpcyBub3Qgc3VwcG9ydGVkIGluIEVTMiBvciBEM0Q5CiAgICAgQVNTRVJUKHN0cmVhbU91
dFZhcnlpbmdzLmVtcHR5KCkpOwogCi0gICAgY29uc3QgY2hhciAqcHJvZmlsZVR5cGUgPSBOVUxM
OworICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHByb2ZpbGVTdHJlYW07CisKICAgICBzd2l0Y2ggKHR5
cGUpCiAgICAgewotICAgICAgY2FzZSBTSEFERVJfVkVSVEVYOgotICAgICAgICBwcm9maWxlVHlw
ZSA9ICJ2cyI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBTSEFERVJfUElYRUw6Ci0gICAg
ICAgIHByb2ZpbGVUeXBlID0gInBzIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0Ogot
ICAgICAgICBVTlJFQUNIQUJMRSgpOwotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKTsKKyAgICAgICAgY2FzZSBTSEFERVJfVkVSVEVYOgorICAgICAgICAgICAg
cHJvZmlsZVN0cmVhbSA8PCAidnMiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
U0hBREVSX1BJWEVMOgorICAgICAgICAgICAgcHJvZmlsZVN0cmVhbSA8PCAicHMiOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgp
OworICAgICAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiAg
ICAgfQotICAgIHVuc2lnbmVkIGludCBwcm9maWxlTWFqb3JWZXJzaW9uID0gKGdldE1ham9yU2hh
ZGVyTW9kZWwoKSA+PSAzKSA/IDMgOiAyOwotICAgIHVuc2lnbmVkIGludCBwcm9maWxlTWlub3JW
ZXJzaW9uID0gMDsKLSAgICBzdGQ6OnN0cmluZyBwcm9maWxlID0gRm9ybWF0U3RyaW5nKCIlc18l
dV8ldSIsIHByb2ZpbGVUeXBlLCBwcm9maWxlTWFqb3JWZXJzaW9uLCBwcm9maWxlTWlub3JWZXJz
aW9uKTsKKworICAgIHByb2ZpbGVTdHJlYW0gPDwgIl8iIDw8ICgoZ2V0TWFqb3JTaGFkZXJNb2Rl
bCgpID49IDMpID8gMyA6IDIpOworICAgIHByb2ZpbGVTdHJlYW0gPDwgIl8iCisgICAgICAgICAg
ICAgICAgICA8PCAiMCI7CisKKyAgICBzdGQ6OnN0cmluZyBwcm9maWxlID0gcHJvZmlsZVN0cmVh
bS5zdHIoKTsKIAogICAgIFVJTlQgZmxhZ3MgPSBBTkdMRV9DT01QSUxFX09QVElNSVpBVElPTl9M
RVZFTDsKIApAQCAtMjU1NCw3ICsyNjk4LDcgQEAgZ2w6OkVycm9yIFJlbmRlcmVyOTo6Y29tcGls
ZVRvRXhlY3V0YWJsZShnbDo6SW5mb0xvZyAmaW5mb0xvZywKICAgICBpZiAoIWJpbmFyeSkKICAg
ICB7CiAgICAgICAgICpvdXRFeGVjdHVhYmxlID0gTlVMTDsKLSAgICAgICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9OT19FUlJPUik7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0K
IAogICAgIGVycm9yID0gbG9hZEV4ZWN1dGFibGUoYmluYXJ5LT5HZXRCdWZmZXJQb2ludGVyKCks
IGJpbmFyeS0+R2V0QnVmZmVyU2l6ZSgpLCB0eXBlLApAQCAtMjU3MSw3ICsyNzE1LDEyIEBAIGds
OjpFcnJvciBSZW5kZXJlcjk6OmNvbXBpbGVUb0V4ZWN1dGFibGUoZ2w6OkluZm9Mb2cgJmluZm9M
b2csCiAgICAgICAgICgqb3V0RXhlY3R1YWJsZSktPmFwcGVuZERlYnVnSW5mbyhkZWJ1Z0luZm8p
OwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOworfQorCitnbDo6RXJyb3IgUmVuZGVyZXI5OjplbnN1cmVITFNMQ29t
cGlsZXJJbml0aWFsaXplZCgpCit7CisgICAgcmV0dXJuIG1Db21waWxlci5lbnN1cmVJbml0aWFs
aXplZCgpOwogfQogCiBVbmlmb3JtU3RvcmFnZUQzRCAqUmVuZGVyZXI5OjpjcmVhdGVVbmlmb3Jt
U3RvcmFnZShzaXplX3Qgc3RvcmFnZVNpemUpCkBAIC0yNjM0LDcgKzI3ODMsNyBAQCBnbDo6RXJy
b3IgUmVuZGVyZXI5Ojpjb3B5VG9SZW5kZXJUYXJnZXQoSURpcmVjdDNEU3VyZmFjZTkgKmRlc3Qs
IElEaXJlY3QzRFN1cmZhYwogICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX09VVF9PRl9NRU1P
UlksICJGYWlsZWQgdG8gYmxpdCBpbnRlcm5hbCB0ZXh0dXJlLCByZXN1bHQ6IDB4JVguIiwgcmVz
dWx0KTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogSW1hZ2VEM0QgKlJlbmRlcmVyOTo6Y3JlYXRlSW1h
Z2UoKQpAQCAtMjY1Myw3ICsyODAyLDcgQEAgZ2w6OkVycm9yIFJlbmRlcmVyOTo6Z2VuZXJhdGVN
aXBtYXBVc2luZ0QzRChUZXh0dXJlU3RvcmFnZSAqc3RvcmFnZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmdGV4dHVy
ZVN0YXRlKQogewogICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIFRleHR1cmVTdG9yYWdl
ICpSZW5kZXJlcjk6OmNyZWF0ZVRleHR1cmVTdG9yYWdlMkQoU3dhcENoYWluRDNEICpzd2FwQ2hh
aW4pCkBAIC0yNzI3LDI3ICsyODc2LDI4IEBAIEdMZW51bSBSZW5kZXJlcjk6OmdldFZlcnRleENv
bXBvbmVudFR5cGUoZ2w6OlZlcnRleEZvcm1hdFR5cGUgdmVydGV4Rm9ybWF0VHlwZSkKIH0KIAog
Z2w6OkVycm9yT3JSZXN1bHQ8dW5zaWduZWQgaW50PiBSZW5kZXJlcjk6OmdldFZlcnRleFNwYWNl
UmVxdWlyZWQoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlZlcnRleEJpbmRpbmcgJmJpbmRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBpbnN0YW5jZXMpIGNvbnN0CiB7Ci0gICAgZ2w6OlZlcnRleEZvcm1h
dFR5cGUgdmVydGV4Rm9ybWF0VHlwZSA9IGdsOjpHZXRWZXJ0ZXhGb3JtYXRUeXBlKGF0dHJpYiwg
R0xfRkxPQVQpOwotICAgIGNvbnN0IGQzZDk6OlZlcnRleEZvcm1hdCAmZDNkOVZlcnRleEluZm8g
PQotICAgICAgICBkM2Q5OjpHZXRWZXJ0ZXhGb3JtYXRJbmZvKGdldENhcHNEZWNsVHlwZXMoKSwg
dmVydGV4Rm9ybWF0VHlwZSk7Ci0KICAgICBpZiAoIWF0dHJpYi5lbmFibGVkKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIDE2dTsKICAgICB9CiAKKyAgICBnbDo6VmVydGV4Rm9ybWF0VHlwZSB2ZXJ0
ZXhGb3JtYXRUeXBlID0gZ2w6OkdldFZlcnRleEZvcm1hdFR5cGUoYXR0cmliLCBHTF9GTE9BVCk7
CisgICAgY29uc3QgZDNkOTo6VmVydGV4Rm9ybWF0ICZkM2Q5VmVydGV4SW5mbyA9CisgICAgICAg
IGQzZDk6OkdldFZlcnRleEZvcm1hdEluZm8oZ2V0Q2Fwc0RlY2xUeXBlcygpLCB2ZXJ0ZXhGb3Jt
YXRUeXBlKTsKKwogICAgIHVuc2lnbmVkIGludCBlbGVtZW50Q291bnQgPSAwOwotICAgIGlmIChp
bnN0YW5jZXMgPT0gMCB8fCBhdHRyaWIuZGl2aXNvciA9PSAwKQorICAgIGlmIChpbnN0YW5jZXMg
PT0gMCB8fCBiaW5kaW5nLmRpdmlzb3IgPT0gMCkKICAgICB7CiAgICAgICAgIGVsZW1lbnRDb3Vu
dCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY291bnQpOwogICAgIH0KICAgICBlbHNlCiAg
ICAgewogICAgICAgICAvLyBSb3VuZCB1cCB0byBkaXZpc29yLCBpZiBwb3NzaWJsZQotICAgICAg
ICBlbGVtZW50Q291bnQgPSBVbnNpZ25lZENlaWxEaXZpZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQg
aW50PihpbnN0YW5jZXMpLCBhdHRyaWIuZGl2aXNvcik7CisgICAgICAgIGVsZW1lbnRDb3VudCA9
IFVuc2lnbmVkQ2VpbERpdmlkZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGluc3RhbmNlcyks
IGJpbmRpbmcuZGl2aXNvcik7CiAgICAgfQogCiAgICAgaWYgKGQzZDlWZXJ0ZXhJbmZvLm91dHB1
dEVsZW1lbnRTaXplID4gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBpbnQ+OjptYXgoKSAv
IGVsZW1lbnRDb3VudCkKQEAgLTI3NjcsNyArMjkxNyw3IEBAIHZvaWQgUmVuZGVyZXI5OjpnZW5l
cmF0ZUNhcHMoZ2w6OkNhcHMgKm91dENhcHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG91
dEV4dGVuc2lvbnMsIG91dExpbWl0YXRpb25zKTsKIH0KIAotV29ya2Fyb3VuZHNEM0QgUmVuZGVy
ZXI5OjpnZW5lcmF0ZVdvcmthcm91bmRzKCkgY29uc3QKK2FuZ2xlOjpXb3JrYXJvdW5kc0QzRCBS
ZW5kZXJlcjk6OmdlbmVyYXRlV29ya2Fyb3VuZHMoKSBjb25zdAogewogICAgIHJldHVybiBkM2Q5
OjpHZW5lcmF0ZVdvcmthcm91bmRzKCk7CiB9CkBAIC0yNzg0LDcgKzI5MzQsNyBAQCBnbDo6RXJy
b3IgUmVuZGVyZXI5OjpjbGVhclRleHR1cmVzKGdsOjpTYW1wbGVyVHlwZSBzYW1wbGVyVHlwZSwg
c2l6ZV90IHJhbmdlU3RhcgogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGVnbDo6RXJy
b3IgUmVuZGVyZXI5OjpnZXRFR0xEZXZpY2UoRGV2aWNlSW1wbCAqKmRldmljZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
OS9SZW5kZXJlcjkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkOS9SZW5kZXJlcjkuaAppbmRleCBjYzc5NmNmNDFjMy4uOWZjMDFkODAxYzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9SZW5kZXJlcjkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvUmVuZGVyZXI5LmgKQEAgLTE4LDYgKzE4LDcgQEAK
ICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TaGFkZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUu
aCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TdGF0ZU1hbmFnZXI5Lmgi
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZHJpdmVyX3V0aWxzLmgiCiAKIG5hbWVzcGFj
ZSBnbAogewpAQCAtODcsOSArODgsMTcgQEAgY2xhc3MgUmVuZGVyZXI5IDogcHVibGljIFJlbmRl
cmVyRDNECiAKICAgICBTd2FwQ2hhaW5EM0QgKmNyZWF0ZVN3YXBDaGFpbihOYXRpdmVXaW5kb3dE
M0QgKm5hdGl2ZVdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5E
TEUgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVVua25v
d24gKmQzZFRleHR1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGJhY2tCdWZmZXJGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGRlcHRoQnVmZmVyRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTGludCBvcmllbnRhdGlvbikgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBnZXREM0RUZXh0
dXJlSW5mbyhJVW5rbm93biAqZDNkVGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTGludCAqd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xpbnQgKmhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSAq
ZmJvRm9ybWF0KSBjb25zdCBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHZhbGlkYXRlU2hhcmVI
YW5kbGUoY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSEFORExFIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBDb250ZXh0SW1wbCAqY3JlYXRlQ29udGV4dChjb25zdCBnbDo6Q29udGV4dFN0
YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CiAKQEAgLTIwNyw2ICsyMTYsNyBAQCBjbGFzcyBSZW5kZXJl
cjkgOiBwdWJsaWMgUmVuZGVyZXJEM0QKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGRlc3RGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpPZmZzZXQg
JmRlc3RPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVTdG9yYWdlICpz
dG9yYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFRhcmdldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZGVzdExldmVsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHVucGFja0ZsaXBZLAogICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHVucGFja1ByZW11bHRpcGx5QWxwaGEsCkBAIC0yMzYsOCArMjQ2LDEwIEBAIGNsYXNzIFJl
bmRlcmVyOSA6IHB1YmxpYyBSZW5kZXJlckQzRAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNoYWRlclR5cGUgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxEM0RWYXJ5aW5nPiAmc3RyZWFtT3V0VmFyeWluZ3MsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBzZXBhcmF0ZWRPdXRwdXRCdWZmZXJz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEQzRENvbXBpbGVyV29y
a2Fyb3VuZHMgJndvcmthcm91bmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGFuZ2xlOjpDb21waWxlcldvcmthcm91bmRzRDNEICZ3b3JrYXJvdW5kcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFkZXJFeGVjdXRhYmxlRDNEICoqb3V0RXhl
Y3R1YWJsZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGVuc3VyZUhMU0xDb21waWxlckluaXRp
YWxpemVkKCkgb3ZlcnJpZGU7CisKICAgICBVbmlmb3JtU3RvcmFnZUQzRCAqY3JlYXRlVW5pZm9y
bVN0b3JhZ2Uoc2l6ZV90IHN0b3JhZ2VTaXplKSBvdmVycmlkZTsKIAogICAgIC8vIEltYWdlIG9w
ZXJhdGlvbnMKQEAgLTMwMSw3ICszMTMsMTEgQEAgY2xhc3MgUmVuZGVyZXI5IDogcHVibGljIFJl
bmRlcmVyRDNECiAgICAgYm9vbCBnZXRMVUlEKExVSUQgKmFkYXB0ZXJMdWlkKSBjb25zdCBvdmVy
cmlkZTsKICAgICBWZXJ0ZXhDb252ZXJzaW9uVHlwZSBnZXRWZXJ0ZXhDb252ZXJzaW9uVHlwZShn
bDo6VmVydGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXRUeXBlKSBjb25zdCBvdmVycmlkZTsKICAg
ICBHTGVudW0gZ2V0VmVydGV4Q29tcG9uZW50VHlwZShnbDo6VmVydGV4Rm9ybWF0VHlwZSB2ZXJ0
ZXhGb3JtYXRUeXBlKSBjb25zdCBvdmVycmlkZTsKKworICAgIC8vIFdhcm5pbmc6IHlvdSBzaG91
bGQgZW5zdXJlIGJpbmRpbmcgcmVhbGx5IG1hdGNoZXMgYXR0cmliLmJpbmRpbmdJbmRleCBiZWZv
cmUgdXNpbmcgdGhpcworICAgIC8vIGZ1bmN0aW9uLgogICAgIGdsOjpFcnJvck9yUmVzdWx0PHVu
c2lnbmVkIGludD4gZ2V0VmVydGV4U3BhY2VSZXF1aXJlZChjb25zdCBnbDo6VmVydGV4QXR0cmli
dXRlICZhdHRyaWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpIGNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlcykgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTM1
OSw3ICszNzUsNyBAQCBjbGFzcyBSZW5kZXJlcjkgOiBwdWJsaWMgUmVuZGVyZXJEM0QKICAgICAg
ICAgICAgICAgICAgICAgICBnbDo6RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucywKICAgICAgICAg
ICAgICAgICAgICAgICBnbDo6TGltaXRhdGlvbnMgKm91dExpbWl0YXRpb25zKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIFdvcmthcm91bmRzRDNEIGdlbmVyYXRlV29ya2Fyb3VuZHMoKSBjb25zdCBv
dmVycmlkZTsKKyAgICBhbmdsZTo6V29ya2Fyb3VuZHNEM0QgZ2VuZXJhdGVXb3JrYXJvdW5kcygp
IGNvbnN0IG92ZXJyaWRlOwogCiAgICAgZ2w6OkVycm9yIHNldEJsZW5kRGVwdGhSYXN0ZXJTdGF0
ZXMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZ2xEYXRhLCBHTGVudW0gZHJhd01vZGUpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvU2hhZGVyQ2FjaGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TaGFkZXJDYWNoZS5oCmluZGV4IGNmODMxYzYyZmE3Li42
MzhjMmI1MTdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1NoYWRlckNhY2hlLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1NoYWRlckNhY2hlLmgKQEAg
LTQ3LDcgKzQ3LDcgQEAgY2xhc3MgU2hhZGVyQ2FjaGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAg
ICAgICAgewogICAgICAgICAgICAgaXQtPnNlY29uZC0+QWRkUmVmKCk7CiAgICAgICAgICAgICAq
b3V0U2hhZGVyT2JqZWN0ID0gaXQtPnNlY29uZDsKLSAgICAgICAgICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfTk9fRVJST1IpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAg
ICAgIH0KIAogICAgICAgICBTaGFkZXJPYmplY3QgKnNoYWRlcjsKQEAgLTY4LDcgKzY4LDcgQEAg
Y2xhc3MgU2hhZGVyQ2FjaGUgOiBhbmdsZTo6Tm9uQ29weWFibGUKICAgICAgICAgbU1hcFtrZXld
ID0gc2hhZGVyOwogCiAgICAgICAgICpvdXRTaGFkZXJPYmplY3QgPSBzaGFkZXI7Ci0gICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKICAgICB9CiAKICAgICB2b2lkIGNsZWFyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TdGF0ZU1hbmFnZXI5
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkOS9TdGF0ZU1hbmFnZXI5LmNwcAppbmRleCA1ZmI2NzVkZGIzZi4uMTI5MTg5OWRkM2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkOS9TdGF0ZU1hbmFnZXI5LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU3RhdGVNYW5hZ2VyOS5jcHAKQEAgLTcsNyAr
Nyw3IEBACiAvLyBTdGF0ZU1hbmFnZXI5LmNwcDogRGVmaW5lcyBhIGNsYXNzIGZvciBjYWNoaW5n
IEQzRDkgc3RhdGUKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9TdGF0ZU1h
bmFnZXI5LmgiCiAKLSNpbmNsdWRlICJjb21tb24vQml0U2V0SXRlcmF0b3IuaCIKKyNpbmNsdWRl
ICJjb21tb24vYml0c2V0X3V0aWxzLmgiCiAjaW5jbHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxzLmgiCkBAIC03MCw3ICs3MCw3IEBAIFN0YXRl
TWFuYWdlcjk6On5TdGF0ZU1hbmFnZXI5KCkKIAogdm9pZCBTdGF0ZU1hbmFnZXI5Ojppbml0aWFs
aXplKCkKIHsKLSAgICBtVXNpbmdaZXJvQ29sb3JNYXNrV29ya2Fyb3VuZCA9IG1SZW5kZXJlcjkt
PmdldFZlbmRvcklkKCkgPT0gVkVORE9SX0lEX0FNRDsKKyAgICBtVXNpbmdaZXJvQ29sb3JNYXNr
V29ya2Fyb3VuZCA9IElzQU1EKG1SZW5kZXJlcjktPmdldFZlbmRvcklkKCkpOwogfQogCiB2b2lk
IFN0YXRlTWFuYWdlcjk6OmZvcmNlU2V0QmxlbmRTdGF0ZSgpCkBAIC00NzAsNyArNDcwLDcgQEAg
Z2w6OkVycm9yIFN0YXRlTWFuYWdlcjk6OnNldEJsZW5kRGVwdGhSYXN0ZXJTdGF0ZXMoY29uc3Qg
Z2w6OlN0YXRlICZnbFN0YXRlLAogICAgICAgICBzZXRTYW1wbGVNYXNrKHNhbXBsZU1hc2spOwog
ICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogfQogCiB2b2lkIFN0YXRlTWFuYWdlcjk6OnNldFZpZXdwb3J0U3RhdGUo
Y29uc3QgZ2w6OlJlY3RhbmdsZSAmdmlld3BvcnQsCkBAIC03NTAsNyArNzUwLDcgQEAgdm9pZCBT
dGF0ZU1hbmFnZXI5OjpzZXRTYW1wbGVBbHBoYVRvQ292ZXJhZ2UoYm9vbCBlbmFibGVkKQogewog
ICAgIGlmIChlbmFibGVkKQogICAgIHsKLSAgICAgICAgRklYTUUoIlNhbXBsZSBhbHBoYSB0byBj
b3ZlcmFnZSBpcyB1bmltcGxlbWVudGVkLiIpOworICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAg
IH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBDaGFpbjkuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBDaGFpbjkuY3BwCmluZGV4IGNh
NjEzYjNjZjUxLi4wOTMwNzA4MzhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBDaGFpbjkuY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Td2Fw
Q2hhaW45LmNwcApAQCAtNywxMSArNywxMiBAQAogLy8gU3dhcENoYWluOS5jcHA6IEltcGxlbWVu
dHMgYSBiYWNrLWVuZCBzcGVjaWZpYyBjbGFzcyBmb3IgdGhlIEQzRDkgc3dhcCBjaGFpbi4KIAog
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBDaGFpbjkuaCIKLSNpbmNs
dWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9yZW5kZXJlcjlfdXRpbHMuaCIKKworI2lu
Y2x1ZGUgImxpYkFOR0xFL2ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvTmF0aXZlV2luZG93OS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2Q5L1JlbmRlcmVyOS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL2ZlYXR1cmVzLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxzLmgiCiAKIG5hbWVz
cGFjZSByeAogewpAQCAtMTksMTAgKzIwLDExIEBAIG5hbWVzcGFjZSByeAogU3dhcENoYWluOTo6
U3dhcENoYWluOShSZW5kZXJlcjkgKnJlbmRlcmVyLAogICAgICAgICAgICAgICAgICAgICAgICBO
YXRpdmVXaW5kb3c5ICpuYXRpdmVXaW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRM
RSBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgSVVua25vd24gKmQzZFRleHR1
cmUsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBiYWNrQnVmZmVyRm9ybWF0LAogICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTGludCBvcmllbnRhdGlvbikKLSAgICA6IFN3YXBDaGFpbkQzRChzaGFy
ZUhhbmRsZSwgYmFja0J1ZmZlckZvcm1hdCwgZGVwdGhCdWZmZXJGb3JtYXQpLAorICAgIDogU3dh
cENoYWluRDNEKHNoYXJlSGFuZGxlLCBkM2RUZXh0dXJlLCBiYWNrQnVmZmVyRm9ybWF0LCBkZXB0
aEJ1ZmZlckZvcm1hdCksCiAgICAgICBtUmVuZGVyZXIocmVuZGVyZXIpLAogICAgICAgbVdpZHRo
KC0xKSwKICAgICAgIG1IZWlnaHQoLTEpLApAQCAtMTA1LDI4ICsxMDcsMzcgQEAgRUdMaW50IFN3
YXBDaGFpbjk6OnJlc2V0KGludCBiYWNrYnVmZmVyV2lkdGgsIGludCBiYWNrYnVmZmVySGVpZ2h0
LCBFR0xpbnQgc3dhcEkKICAgICBTYWZlUmVsZWFzZShtT2Zmc2NyZWVuVGV4dHVyZSk7CiAgICAg
U2FmZVJlbGVhc2UobURlcHRoU3RlbmNpbCk7CiAKLSAgICBIQU5ETEUgKnBTaGFyZUhhbmRsZSA9
IE5VTEw7Ci0gICAgaWYgKCFtTmF0aXZlV2luZG93LT5nZXROYXRpdmVXaW5kb3coKSAmJiBtUmVu
ZGVyZXItPmdldFNoYXJlSGFuZGxlU3VwcG9ydCgpKQorICAgIGNvbnN0IGQzZDk6OlRleHR1cmVG
b3JtYXQgJmJhY2tCdWZmZXJkM2RGb3JtYXRJbmZvID0KKyAgICAgICAgZDNkOTo6R2V0VGV4dHVy
ZUZvcm1hdEluZm8obU9mZnNjcmVlblJlbmRlclRhcmdldEZvcm1hdCk7CisgICAgaWYgKG1EM0RU
ZXh0dXJlICE9IG51bGxwdHIpCiAgICAgewotICAgICAgICBwU2hhcmVIYW5kbGUgPSAmbVNoYXJl
SGFuZGxlOworICAgICAgICByZXN1bHQgPSBtRDNEVGV4dHVyZS0+UXVlcnlJbnRlcmZhY2UoJm1P
ZmZzY3JlZW5UZXh0dXJlKTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQpKTsKICAg
ICB9Ci0KLSAgICBjb25zdCBkM2Q5OjpUZXh0dXJlRm9ybWF0ICZiYWNrQnVmZmVyZDNkRm9ybWF0
SW5mbyA9IGQzZDk6OkdldFRleHR1cmVGb3JtYXRJbmZvKG1PZmZzY3JlZW5SZW5kZXJUYXJnZXRG
b3JtYXQpOwotICAgIHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlVGV4dHVyZShiYWNrYnVmZmVyV2lk
dGgsIGJhY2tidWZmZXJIZWlnaHQsIDEsIEQzRFVTQUdFX1JFTkRFUlRBUkdFVCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja0J1ZmZlcmQzZEZvcm1hdEluZm8udGV4Rm9y
bWF0LCBEM0RQT09MX0RFRkFVTFQsICZtT2Zmc2NyZWVuVGV4dHVyZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcFNoYXJlSGFuZGxlKTsKLSAgICBpZiAoRkFJTEVEKHJlc3Vs
dCkpCisgICAgZWxzZQogICAgIHsKLSAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIG9mZnNj
cmVlbiB0ZXh0dXJlOiAlMDhsWCIsIHJlc3VsdCk7Ci0gICAgICAgIHJlbGVhc2UoKTsKLQotICAg
ICAgICBpZiAoZDNkOTo6aXNEZXZpY2VMb3N0RXJyb3IocmVzdWx0KSkKKyAgICAgICAgSEFORExF
ICpwU2hhcmVIYW5kbGUgPSBOVUxMOworICAgICAgICBpZiAoIW1OYXRpdmVXaW5kb3ctPmdldE5h
dGl2ZVdpbmRvdygpICYmIG1SZW5kZXJlci0+Z2V0U2hhcmVIYW5kbGVTdXBwb3J0KCkpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIHJldHVybiBFR0xfQ09OVEVYVF9MT1NUOworICAgICAgICAgICAg
cFNoYXJlSGFuZGxlID0gJm1TaGFyZUhhbmRsZTsKICAgICAgICAgfQotICAgICAgICBlbHNlCisK
KyAgICAgICAgcmVzdWx0ID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlKGJhY2tidWZmZXJXaWR0aCwg
YmFja2J1ZmZlckhlaWdodCwgMSwgRDNEVVNBR0VfUkVOREVSVEFSR0VULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja0J1ZmZlcmQzZEZvcm1hdEluZm8udGV4Rm9y
bWF0LCBEM0RQT09MX0RFRkFVTFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmbU9mZnNjcmVlblRleHR1cmUsIHBTaGFyZUhhbmRsZSk7CisgICAgICAgIGlmIChGQUlM
RUQocmVzdWx0KSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEVHTF9CQURfQUxMT0M7
CisgICAgICAgICAgICBFUlIoKSA8PCAiQ291bGQgbm90IGNyZWF0ZSBvZmZzY3JlZW4gdGV4dHVy
ZSwgIiA8PCBnbDo6Rm10SFIocmVzdWx0KTsKKyAgICAgICAgICAgIHJlbGVhc2UoKTsKKworICAg
ICAgICAgICAgaWYgKGQzZDk6OmlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCkpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVHTF9DT05URVhUX0xPU1Q7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIEVHTF9CQURfQUxMT0M7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTE5MSw3ICsyMDIsNyBAQCBFR0xpbnQgU3dhcENoYWluOTo6cmVzZXQoaW50IGJhY2tidWZmZXJX
aWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQsIEVHTGludCBzd2FwSQogICAgICAgICAvLwogICAg
ICAgICAvLyBTb21lIG5vbi1zd2l0Y2hhYmxlIEFNRCBHUFVzIC8gZHJpdmVycyBkbyBub3QgcmVz
cGVjdCB0aGUgc291cmNlIHJlY3RhbmdsZSB0byBQcmVzZW50LiBUaGVyZWZvcmUsIHdoZW4gdGhl
IHZlbmRvciBJRAogICAgICAgICAvLyBpcyBub3QgSW50ZWwsIHRoZSBiYWNrIGJ1ZmZlciB3aWR0
aCBtdXN0IGJlIGV4YWN0bHkgdGhlIHNhbWUgd2lkdGggYXMgdGhlIHdpbmRvdyBvciBob3Jpem9u
dGFsIHNjYWxpbmcgd2lsbCBvY2N1ci4KLSAgICAgICAgaWYgKG1SZW5kZXJlci0+Z2V0VmVuZG9y
SWQoKSA9PSBWRU5ET1JfSURfSU5URUwpCisgICAgICAgIGlmIChJc0ludGVsKG1SZW5kZXJlci0+
Z2V0VmVuZG9ySWQoKSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHByZXNlbnRQYXJhbWV0ZXJz
LkJhY2tCdWZmZXJXaWR0aCA9IChwcmVzZW50UGFyYW1ldGVycy5CYWNrQnVmZmVyV2lkdGggKyA2
MykgLyA2NCAqIDY0OwogICAgICAgICB9CkBAIC0yMDIsNyArMjEzLDggQEAgRUdMaW50IFN3YXBD
aGFpbjk6OnJlc2V0KGludCBiYWNrYnVmZmVyV2lkdGgsIGludCBiYWNrYnVmZmVySGVpZ2h0LCBF
R0xpbnQgc3dhcEkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCA9PSBEM0RF
UlJfT1VUT0ZWSURFT01FTU9SWSB8fCByZXN1bHQgPT0gRV9PVVRPRk1FTU9SWSB8fCByZXN1bHQg
PT0gRDNERVJSX0lOVkFMSURDQUxMIHx8IHJlc3VsdCA9PSBEM0RFUlJfREVWSUNFTE9TVCk7CiAK
LSAgICAgICAgICAgIEVSUigiQ291bGQgbm90IGNyZWF0ZSBhZGRpdGlvbmFsIHN3YXAgY2hhaW5z
IG9yIG9mZnNjcmVlbiBzdXJmYWNlczogJTA4bFgiLCByZXN1bHQpOworICAgICAgICAgICAgRVJS
KCkgPDwgIkNvdWxkIG5vdCBjcmVhdGUgYWRkaXRpb25hbCBzd2FwIGNoYWlucyBvciBvZmZzY3Jl
ZW4gc3VyZmFjZXMsICIKKyAgICAgICAgICAgICAgICAgIDw8IGdsOjpGbXRIUihyZXN1bHQpOwog
ICAgICAgICAgICAgcmVsZWFzZSgpOwogCiAgICAgICAgICAgICBpZiAoZDNkOTo6aXNEZXZpY2VM
b3N0RXJyb3IocmVzdWx0KSkKQEAgLTIzMCw3ICsyNDIsOCBAQCBFR0xpbnQgU3dhcENoYWluOTo6
cmVzZXQoaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQsIEVHTGludCBz
d2FwSQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0ID09IEQzREVSUl9PVVRP
RlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZIHx8IHJlc3VsdCA9PSBEM0RF
UlJfSU5WQUxJRENBTEwpOwogCi0gICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgZGVw
dGhzdGVuY2lsIHN1cmZhY2UgZm9yIG5ldyBzd2FwIGNoYWluOiAweCUwOFgiLCByZXN1bHQpOwor
ICAgICAgICAgICAgRVJSKCkgPDwgIkNvdWxkIG5vdCBjcmVhdGUgZGVwdGhzdGVuY2lsIHN1cmZh
Y2UgZm9yIG5ldyBzd2FwIGNoYWluLCAiCisgICAgICAgICAgICAgICAgICA8PCBnbDo6Rm10SFIo
cmVzdWx0KTsKICAgICAgICAgICAgIHJlbGVhc2UoKTsKIAogICAgICAgICAgICAgaWYgKGQzZDk6
OmlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvU3dhcENoYWluOS5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N3YXBD
aGFpbjkuaAppbmRleCA5MzllMjJhYzI1Yi4uMTFmZGUxYTU0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9Td2FwQ2hh
aW45LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L1N3YXBDaGFpbjkuaApAQCAtMjQsNiArMjQsNyBAQCBjbGFzcyBTd2FwQ2hhaW45
IDogcHVibGljIFN3YXBDaGFpbkQzRAogICAgIFN3YXBDaGFpbjkoUmVuZGVyZXI5ICpyZW5kZXJl
ciwKICAgICAgICAgICAgICAgIE5hdGl2ZVdpbmRvdzkgKm5hdGl2ZVdpbmRvdywKICAgICAgICAg
ICAgICAgIEhBTkRMRSBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgIElVbmtub3duICpkM2RU
ZXh0dXJlLAogICAgICAgICAgICAgICAgR0xlbnVtIGJhY2tCdWZmZXJGb3JtYXQsCiAgICAgICAg
ICAgICAgICBHTGVudW0gZGVwdGhCdWZmZXJGb3JtYXQsCiAgICAgICAgICAgICAgICBFR0xpbnQg
b3JpZW50YXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1RleHR1cmVTdG9yYWdlOS5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVGV4dHVyZVN0b3Jh
Z2U5LmNwcAppbmRleCBmZDc5Mjc1MmFlYy4uYTBhMzc5ZWMyYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9UZXh0dXJl
U3RvcmFnZTkuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9UZXh0dXJlU3RvcmFnZTkuY3BwCkBAIC0xNTMsNyArMTUzLDYgQEAg
Z2w6OkVycm9yIFRleHR1cmVTdG9yYWdlOV8yRDo6Z2V0U3VyZmFjZUxldmVsKEdMZW51bSB0YXJn
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSURpcmVj
dDNEU3VyZmFjZTkgKipvdXRTdXJmYWNlKQogewogICAgIEFTU0VSVCh0YXJnZXQgPT0gR0xfVEVY
VFVSRV8yRCk7Ci0gICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRSh0YXJnZXQpOwogCiAgICAg
SURpcmVjdDNEQmFzZVRleHR1cmU5ICpiYXNlVGV4dHVyZSA9IE5VTEw7CiAgICAgZ2w6OkVycm9y
IGVycm9yID0gZ2V0QmFzZVRleHR1cmUoJmJhc2VUZXh0dXJlKTsKQEAgLTE3OCw3ICsxNzcsNyBA
QCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2U5XzJEOjpnZXRTdXJmYWNlTGV2ZWwoR0xlbnVtIHRh
cmdldCwKICAgICAgICAgdGV4dHVyZS0+QWRkRGlydHlSZWN0KE5VTEwpOwogICAgIH0KIAotICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2U5XzJEOjpnZXRSZW5kZXJUYXJnZXQoY29u
c3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBSZW5kZXJUYXJnZXREM0QgKipvdXRSVCkKQEAgLTIx
Myw3ICsyMTIsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2U5XzJEOjpnZXRSZW5kZXJUYXJn
ZXQoY29uc3QgZ2w6OkltYWdlSW5kZXggJmluZGV4LCBSZW5kZQogCiAgICAgQVNTRVJUKG91dFJU
KTsKICAgICAqb3V0UlQgPSBtUmVuZGVyVGFyZ2V0c1tpbmRleC5taXBJbmRleF07Ci0gICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9
CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTlfMkQ6OmdlbmVyYXRlTWlwbWFwKGNvbnN0IGds
OjpJbWFnZUluZGV4ICZzb3VyY2VJbmRleCwgY29uc3QgZ2w6OkltYWdlSW5kZXggJmRlc3RJbmRl
eCkKQEAgLTI2NCw3ICsyNjMsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2U5XzJEOjpnZXRC
YXNlVGV4dHVyZShJRGlyZWN0M0RCYXNlVGV4dHVyZTkgKipvdXRUZXh0dXJlKQogICAgIH0KIAog
ICAgICpvdXRUZXh0dXJlID0gbVRleHR1cmU7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJl
U3RvcmFnZTlfMkQ6OmNvcHlUb1N0b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKmRlc3RTdG9yYWdlKQpA
QCAtMzAyLDcgKzMwMSw3IEBAIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTlfMkQ6OmNvcHlUb1N0
b3JhZ2UoVGV4dHVyZVN0b3JhZ2UgKmRlc3RTdG9yYWdlKQogICAgICAgICB9CiAgICAgfQogCi0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7CiB9CiAKIFRleHR1cmVTdG9yYWdlOV9FR0xJbWFnZTo6VGV4dHVyZVN0b3JhZ2U5X0VHTElt
YWdlKFJlbmRlcmVyOSAqcmVuZGVyZXIsCkBAIC0zMjksOCArMzI4LDYgQEAgZ2w6OkVycm9yIFRl
eHR1cmVTdG9yYWdlOV9FR0xJbWFnZTo6Z2V0U3VyZmFjZUxldmVsKEdMZW51bSB0YXJnZXQsCiB7
CiAgICAgQVNTRVJUKHRhcmdldCA9PSBHTF9URVhUVVJFXzJEKTsKICAgICBBU1NFUlQobGV2ZWwg
PT0gMCk7Ci0gICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRSh0YXJnZXQpOwotICAgIFVOVVNF
RF9BU1NFUlRJT05fVkFSSUFCTEUobGV2ZWwpOwogCiAgICAgUmVuZGVyVGFyZ2V0RDNEICpyZW5k
ZXJUYXJnZXREM0QgPSBudWxscHRyOwogICAgIGdsOjpFcnJvciBlcnJvciA9IG1JbWFnZS0+Z2V0
UmVuZGVyVGFyZ2V0KCZyZW5kZXJUYXJnZXREM0QpOwpAQCAtMzQyLDcgKzMzOSw3IEBAIGdsOjpF
cnJvciBUZXh0dXJlU3RvcmFnZTlfRUdMSW1hZ2U6OmdldFN1cmZhY2VMZXZlbChHTGVudW0gdGFy
Z2V0LAogICAgIFJlbmRlclRhcmdldDkgKnJlbmRlclRhcmdldDkgPSBHZXRBczxSZW5kZXJUYXJn
ZXQ5PihyZW5kZXJUYXJnZXREM0QpOwogCiAgICAgKm91dFN1cmZhY2UgPSByZW5kZXJUYXJnZXQ5
LT5nZXRTdXJmYWNlKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTlfRUdM
SW1hZ2U6OmdldFJlbmRlclRhcmdldChjb25zdCBnbDo6SW1hZ2VJbmRleCAmaW5kZXgsCkBAIC0z
NTAsNyArMzQ3LDYgQEAgZ2w6OkVycm9yIFRleHR1cmVTdG9yYWdlOV9FR0xJbWFnZTo6Z2V0UmVu
ZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwKIHsKICAgICBBU1NFUlQoIWlu
ZGV4Lmhhc0xheWVyKCkpOwogICAgIEFTU0VSVChpbmRleC5taXBJbmRleCA9PSAwKTsKLSAgICBV
TlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKGluZGV4KTsKIAogICAgIHJldHVybiBtSW1hZ2UtPmdl
dFJlbmRlclRhcmdldChvdXRSVCk7CiB9CkBAIC0zNjgsNyArMzY0LDcgQEAgZ2w6OkVycm9yIFRl
eHR1cmVTdG9yYWdlOV9FR0xJbWFnZTo6Z2V0QmFzZVRleHR1cmUoSURpcmVjdDNEQmFzZVRleHR1
cmU5ICoqb3V0VGUKICAgICAqb3V0VGV4dHVyZSA9IHJlbmRlclRhcmdldDktPmdldFRleHR1cmUo
KTsKICAgICBBU1NFUlQoKm91dFRleHR1cmUgIT0gbnVsbHB0cik7CiAKLSAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6
OkVycm9yIFRleHR1cmVTdG9yYWdlOV9FR0xJbWFnZTo6Z2VuZXJhdGVNaXBtYXAoY29uc3QgZ2w6
OkltYWdlSW5kZXggJiwgY29uc3QgZ2w6OkltYWdlSW5kZXggJikKQEAgLTQyNCw3ICs0MjAsNyBA
QCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2U5X0VHTEltYWdlOjpjb3B5VG9TdG9yYWdlKFRleHR1
cmVTdG9yYWdlICpkZXN0U3RvcmFnZSkKICAgICB9CiAKICAgICBTYWZlUmVsZWFzZShkZXN0U3Vy
ZmFjZSk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7CiB9CiAKIFRleHR1cmVTdG9yYWdlOV9DdWJlOjpUZXh0dXJlU3RvcmFnZTlf
Q3ViZShSZW5kZXJlcjkgKnJlbmRlcmVyLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIGJvb2wgcmVu
ZGVyVGFyZ2V0LCBpbnQgc2l6ZSwgaW50IGxldmVscywgYm9vbCBoaW50TGV2ZWxaZXJvT25seSkK
QEAgLTQ4OSw3ICs0ODUsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2U5X0N1YmU6OmdldFN1
cmZhY2VMZXZlbChHTGVudW0gdGFyZ2V0LAogICAgICAgICB0ZXh0dXJlLT5BZGREaXJ0eVJlY3Qo
ZmFjZSwgTlVMTCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBUZXh0dXJlU3RvcmFn
ZTlfQ3ViZTo6Z2V0UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpJbWFnZUluZGV4ICZpbmRleCwgUmVu
ZGVyVGFyZ2V0RDNEICoqb3V0UlQpCkBAIC01MjIsNyArNTE4LDcgQEAgZ2w6OkVycm9yIFRleHR1
cmVTdG9yYWdlOV9DdWJlOjpnZXRSZW5kZXJUYXJnZXQoY29uc3QgZ2w6OkltYWdlSW5kZXggJmlu
ZGV4LCBSZW4KICAgICB9CiAKICAgICAqb3V0UlQgPSBtUmVuZGVyVGFyZ2V0W2luZGV4LmxheWVy
SW5kZXhdOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgVGV4dHVyZVN0b3JhZ2U5X0N1YmU6OmdlbmVy
YXRlTWlwbWFwKGNvbnN0IGdsOjpJbWFnZUluZGV4ICZzb3VyY2VJbmRleCwgY29uc3QgZ2w6Oklt
YWdlSW5kZXggJmRlc3RJbmRleCkKQEAgLTU3Myw3ICs1NjksNyBAQCBnbDo6RXJyb3IgVGV4dHVy
ZVN0b3JhZ2U5X0N1YmU6OmdldEJhc2VUZXh0dXJlKElEaXJlY3QzREJhc2VUZXh0dXJlOSAqKm91
dFRleHR1cgogICAgIH0KIAogICAgICpvdXRUZXh0dXJlID0gbVRleHR1cmU7Ci0gICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
IGdsOjpFcnJvciBUZXh0dXJlU3RvcmFnZTlfQ3ViZTo6Y29weVRvU3RvcmFnZShUZXh0dXJlU3Rv
cmFnZSAqZGVzdFN0b3JhZ2UpCkBAIC02MTUsNyArNjExLDcgQEAgZ2w6OkVycm9yIFRleHR1cmVT
dG9yYWdlOV9DdWJlOjpjb3B5VG9TdG9yYWdlKFRleHR1cmVTdG9yYWdlICpkZXN0U3RvcmFnZSkK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwor
ICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4QnVmZmVy
OS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDkvVmVydGV4QnVmZmVyOS5jcHAKaW5kZXggYzVjMDdjMzQ4Y2YuLjJlOTEzMzNlN2Y3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvVmVydGV4QnVmZmVyOS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRleEJ1ZmZlcjkuY3BwCkBAIC01Mywx
MCArNTMsMTEgQEAgZ2w6OkVycm9yIFZlcnRleEJ1ZmZlcjk6OmluaXRpYWxpemUodW5zaWduZWQg
aW50IHNpemUsIGJvb2wgZHluYW1pY1VzYWdlKQogCiAgICAgbUJ1ZmZlclNpemUgPSBzaXplOwog
ICAgIG1EeW5hbWljVXNhZ2UgPSBkeW5hbWljVXNhZ2U7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBW
ZXJ0ZXhCdWZmZXI5OjpzdG9yZVZlcnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJp
YnV0ZSAmYXR0cmliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6VmVydGV4QmluZGluZyAmYmluZGluZywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGN1cnJlbnRWYWx1ZVR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHN0YXJ0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LApAQCAtNjksMTQgKzcwLDE0IEBAIGdsOjpFcnJvciBWZXJ0ZXhCdWZmZXI5OjpzdG9y
ZVZlcnRleEF0dHJpYnV0ZXMoY29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliCiAgICAg
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkludGVybmFsIHZlcnRleCBi
dWZmZXIgaXMgbm90IGluaXRpYWxpemVkLiIpOwogICAgIH0KIAotICAgIGludCBpbnB1dFN0cmlk
ZSA9IHN0YXRpY19jYXN0PGludD4oZ2w6OkNvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVTdHJpZGUoYXR0
cmliKSk7CisgICAgaW50IGlucHV0U3RyaWRlID0gc3RhdGljX2Nhc3Q8aW50PihnbDo6Q29tcHV0
ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShhdHRyaWIsIGJpbmRpbmcpKTsKICAgICBpbnQgZWxlbWVu
dFNpemUgPSBzdGF0aWNfY2FzdDxpbnQ+KGdsOjpDb21wdXRlVmVydGV4QXR0cmlidXRlVHlwZVNp
emUoYXR0cmliKSk7CiAKICAgICBEV09SRCBsb2NrRmxhZ3MgPSBtRHluYW1pY1VzYWdlID8gRDNE
TE9DS19OT09WRVJXUklURSA6IDA7CiAKICAgICB1aW50OF90ICptYXBQdHIgPSBudWxscHRyOwog
Ci0gICAgYXV0byBlcnJvck9yTWFwU2l6ZSA9IG1SZW5kZXJlci0+Z2V0VmVydGV4U3BhY2VSZXF1
aXJlZChhdHRyaWIsIGNvdW50LCBpbnN0YW5jZXMpOworICAgIGF1dG8gZXJyb3JPck1hcFNpemUg
PSBtUmVuZGVyZXItPmdldFZlcnRleFNwYWNlUmVxdWlyZWQoYXR0cmliLCBiaW5kaW5nLCBjb3Vu
dCwgaW5zdGFuY2VzKTsKICAgICBpZiAoZXJyb3JPck1hcFNpemUuaXNFcnJvcigpKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGVycm9yT3JNYXBTaXplLmdldEVycm9yKCk7CkBAIC05Miw3ICs5Myw3
IEBAIGdsOjpFcnJvciBWZXJ0ZXhCdWZmZXI5OjpzdG9yZVZlcnRleEF0dHJpYnV0ZXMoY29uc3Qg
Z2w6OlZlcnRleEF0dHJpYnV0ZSAmYXR0cmliCiAKICAgICBjb25zdCB1aW50OF90ICppbnB1dCA9
IHNvdXJjZURhdGE7CiAKLSAgICBpZiAoaW5zdGFuY2VzID09IDAgfHwgYXR0cmliLmRpdmlzb3Ig
PT0gMCkKKyAgICBpZiAoaW5zdGFuY2VzID09IDAgfHwgYmluZGluZy5kaXZpc29yID09IDApCiAg
ICAgewogICAgICAgICBpbnB1dCArPSBpbnB1dFN0cmlkZSAqIHN0YXJ0OwogICAgIH0KQEAgLTEx
Myw3ICsxMTQsNyBAQCBnbDo6RXJyb3IgVmVydGV4QnVmZmVyOTo6c3RvcmVWZXJ0ZXhBdHRyaWJ1
dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYgogCiAgICAgbVZlcnRleEJ1ZmZl
ci0+VW5sb2NrKCk7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogdW5zaWduZWQgaW50IFZlcnRleEJ1ZmZlcjk6Omdl
dEJ1ZmZlclNpemUoKSBjb25zdApAQCAtMTI5LDcgKzEzMCw3IEBAIGdsOjpFcnJvciBWZXJ0ZXhC
dWZmZXI5OjpzZXRCdWZmZXJTaXplKHVuc2lnbmVkIGludCBzaXplKQogICAgIH0KICAgICBlbHNl
CiAgICAgewotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICAgICAg
cmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgfQogfQogCkBAIC0xNTUsNyArMTU2LDcgQEAgZ2w6
OkVycm9yIFZlcnRleEJ1ZmZlcjk6OmRpc2NhcmQoKQogICAgICAgICByZXR1cm4gZ2w6OkVycm9y
KEdMX09VVF9PRl9NRU1PUlksICJGYWlsZWQgdG8gdW5sb2NrIGludGVybmFsIGJ1ZmZlciBmb3Ig
ZGlzY2FyZGluZywgSFJFU1VMVDogMHglMDh4IiwgcmVzdWx0KTsKICAgICB9CiAKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAogSURpcmVjdDNEVmVydGV4QnVmZmVyOSAqIFZlcnRleEJ1ZmZlcjk6OmdldEJ1ZmZlcigpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDkvVmVydGV4QnVmZmVyOS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRleEJ1ZmZlcjkuaAppbmRleCAwZDJk
OGMyODhhMS4uOTgzNjE2ZjRlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9WZXJ0ZXhCdWZmZXI5LmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRl
eEJ1ZmZlcjkuaApAQCAtMjIsNyArMjIsMTAgQEAgY2xhc3MgVmVydGV4QnVmZmVyOSA6IHB1Ymxp
YyBWZXJ0ZXhCdWZmZXIKIAogICAgIGdsOjpFcnJvciBpbml0aWFsaXplKHVuc2lnbmVkIGludCBz
aXplLCBib29sIGR5bmFtaWNVc2FnZSkgb3ZlcnJpZGU7CiAKKyAgICAvLyBXYXJuaW5nOiB5b3Ug
c2hvdWxkIGVuc3VyZSBiaW5kaW5nIHJlYWxseSBtYXRjaGVzIGF0dHJpYi5iaW5kaW5nSW5kZXgg
YmVmb3JlIHVzaW5nIHRoaXMKKyAgICAvLyBmdW5jdGlvbi4KICAgICBnbDo6RXJyb3Igc3RvcmVW
ZXJ0ZXhBdHRyaWJ1dGVzKGNvbnN0IGdsOjpWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpWZXJ0ZXhCaW5kaW5nICZi
aW5kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGN1cnJl
bnRWYWx1ZVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBz
dGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvVmVydGV4RGVjbGFyYXRpb25DYWNoZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4RGVjbGFyYXRpb25D
YWNoZS5jcHAKaW5kZXggYWZhZTUxODhjNmIuLjExZjExNjU1MzVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4
RGVjbGFyYXRpb25DYWNoZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1ZlcnRleERlY2xhcmF0aW9uQ2FjaGUuY3BwCkBAIC0x
NjUsNyArMTY1LDggQEAgZ2w6OkVycm9yIFZlcnRleERlY2xhcmF0aW9uQ2FjaGU6OmFwcGx5RGVj
bGFyYXRpb24oCiAgICAgICAgICAgICAgICAgbUFwcGxpZWRWQnNbc3RyZWFtXS5vZmZzZXQgPSBv
ZmZzZXQ7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGdsOjpWZXJ0ZXhGb3JtYXRUeXBl
IHZlcnRleGZvcm1hdFR5cGUgPSBnbDo6R2V0VmVydGV4Rm9ybWF0VHlwZSgqYXR0cmlidXRlc1tp
XS5hdHRyaWJ1dGUsIEdMX0ZMT0FUKTsKKyAgICAgICAgICAgIGdsOjpWZXJ0ZXhGb3JtYXRUeXBl
IHZlcnRleGZvcm1hdFR5cGUgPQorICAgICAgICAgICAgICAgIGdsOjpHZXRWZXJ0ZXhGb3JtYXRU
eXBlKCphdHRyaWJ1dGVzW2ldLmF0dHJpYnV0ZSwgR0xfRkxPQVQpOwogICAgICAgICAgICAgY29u
c3QgZDNkOTo6VmVydGV4Rm9ybWF0ICZkM2Q5VmVydGV4SW5mbyA9IGQzZDk6OkdldFZlcnRleEZv
cm1hdEluZm8oY2Fwcy5EZWNsVHlwZXMsIHZlcnRleGZvcm1hdFR5cGUpOwogCiAgICAgICAgICAg
ICBlbGVtZW50LT5TdHJlYW0gPSBzdGF0aWNfY2FzdDxXT1JEPihzdHJlYW0pOwpAQCAtMjA2LDcg
KzIwNyw3IEBAIGdsOjpFcnJvciBWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlOjphcHBseURlY2xhcmF0
aW9uKAogICAgICAgICAgICAgICAgIG1MYXN0U2V0VkRlY2wgPSBlbnRyeS0+dmVydGV4RGVjbGFy
YXRpb247CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOworICAgICAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTIzOCw3ICsyMzksNyBAQCBnbDo6RXJyb3IgVmVydGV4RGVjbGFyYXRpb25D
YWNoZTo6YXBwbHlEZWNsYXJhdGlvbigKICAgICBtTGFzdFNldFZEZWNsID0gbGFzdENhY2hlLT52
ZXJ0ZXhEZWNsYXJhdGlvbjsKICAgICBsYXN0Q2FjaGUtPmxydUNvdW50ID0gKyttTWF4THJ1Owog
Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vy
cm9yKCk7CiB9CiAKIHZvaWQgVmVydGV4RGVjbGFyYXRpb25DYWNoZTo6bWFya1N0YXRlRGlydHko
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L2Zvcm1hdHV0aWxzOS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmNwcAppbmRleCAwOGY0
OTU4ZTY4Yy4uY2ZmMTAwMDczZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9mb3JtYXR1dGlsczkuY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9mb3Jt
YXR1dGlsczkuY3BwCkBAIC0yNCwxMyArMjQsMTMgQEAgbmFtZXNwYWNlIHJ4CiBuYW1lc3BhY2Ug
ZDNkOQogewogCi1jb25zdCBEM0RGT1JNQVQgRDNERk1UX0lOVFogPSAoKEQzREZPUk1BVCkoTUFL
RUZPVVJDQygnSScsICdOJywgJ1QnLCAnWicpKSk7Ci1jb25zdCBEM0RGT1JNQVQgRDNERk1UX05V
TEwgPSAoKEQzREZPUk1BVCkoTUFLRUZPVVJDQygnTicsICdVJywgJ0wnLCAnTCcpKSk7Citjb25z
dGV4cHIgRDNERk9STUFUIEQzREZNVF9JTlRaID0gKChEM0RGT1JNQVQpKE1BS0VGT1VSQ0MoJ0kn
LCAnTicsICdUJywgJ1onKSkpOworY29uc3RleHByIEQzREZPUk1BVCBEM0RGTVRfTlVMTCA9ICgo
RDNERk9STUFUKShNQUtFRk9VUkNDKCdOJywgJ1UnLCAnTCcsICdMJykpKTsKIAogLy8gQSBtYXAg
dG8gZGV0ZXJtaW5lIHRoZSBwaXhlbCBzaXplIGFuZCBtaXAgZ2VuZXJhdGlvbiBmdW5jdGlvbiBv
ZiBhIGdpdmVuIEQzRCBmb3JtYXQKIHR5cGVkZWYgc3RkOjptYXA8RDNERk9STUFULCBEM0RGb3Jt
YXQ+IEQzRDlGb3JtYXRJbmZvTWFwOwogCi1EM0RGb3JtYXQ6OkQzREZvcm1hdCgpCitjb25zdGV4
cHIgRDNERm9ybWF0OjpEM0RGb3JtYXQoKQogICAgIDogcGl4ZWxCeXRlcygwKSwKICAgICAgIGJs
b2NrV2lkdGgoMCksCiAgICAgICBibG9ja0hlaWdodCgwKSwKQEAgLTQxLDk3ICs0MSwxODggQEAg
RDNERm9ybWF0OjpEM0RGb3JtYXQoKQogICAgICAgbHVtaW5hbmNlQml0cygwKSwKICAgICAgIGRl
cHRoQml0cygwKSwKICAgICAgIHN0ZW5jaWxCaXRzKDApLAotICAgICAgaW5mbyhudWxscHRyKQor
ICAgICAgZm9ybWF0SUQoYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUpCiB7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgdm9pZCBJbnNlcnREM0RGb3JtYXRJbmZvKEQzRDlGb3JtYXRJbmZvTWFwICptYXAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RGT1JNQVQgZm9ybWF0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJpdHMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYmxvY2tXaWR0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBibG9ja0hlaWdodCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCByZWRCaXRzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGdyZWVuQml0cywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBibHVlQml0cywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBhbHBoYUJpdHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbHVtQml0cywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBkZXB0aEJpdHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc3RlbmNpbEJp
dHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQ6OklEIGZv
cm1hdElEKQorY29uc3RleHByIEQzREZvcm1hdDo6RDNERm9ybWF0KEdMdWludCBiaXRzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBibG9ja1dpZHRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBibG9ja0hlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgcmVkQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgZ3JlZW5CaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBibHVlQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
YWxwaGFCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBsdW1CaXRz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBkZXB0aEJpdHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHN0ZW5jaWxCaXRzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdDo6SUQgZm9ybWF0SUQpCisgICAgOiBwaXhlbEJ5
dGVzKGJpdHMgLyA4KSwKKyAgICAgIGJsb2NrV2lkdGgoYmxvY2tXaWR0aCksCisgICAgICBibG9j
a0hlaWdodChibG9ja0hlaWdodCksCisgICAgICByZWRCaXRzKHJlZEJpdHMpLAorICAgICAgZ3Jl
ZW5CaXRzKGdyZWVuQml0cyksCisgICAgICBibHVlQml0cyhibHVlQml0cyksCisgICAgICBhbHBo
YUJpdHMoYWxwaGFCaXRzKSwKKyAgICAgIGx1bWluYW5jZUJpdHMobHVtQml0cyksCisgICAgICBk
ZXB0aEJpdHMoZGVwdGhCaXRzKSwKKyAgICAgIHN0ZW5jaWxCaXRzKHN0ZW5jaWxCaXRzKSwKKyAg
ICAgIGZvcm1hdElEKGZvcm1hdElEKQogewotICAgIEQzREZvcm1hdCBpbmZvOwotICAgIGluZm8u
cGl4ZWxCeXRlcyA9IGJpdHMgLyA4OwotICAgIGluZm8uYmxvY2tXaWR0aCA9IGJsb2NrV2lkdGg7
Ci0gICAgaW5mby5ibG9ja0hlaWdodCA9IGJsb2NrSGVpZ2h0OwotICAgIGluZm8ucmVkQml0cyA9
IHJlZEJpdHM7Ci0gICAgaW5mby5ncmVlbkJpdHMgPSBncmVlbkJpdHM7Ci0gICAgaW5mby5ibHVl
Qml0cyA9IGJsdWVCaXRzOwotICAgIGluZm8uYWxwaGFCaXRzID0gYWxwaGFCaXRzOwotICAgIGlu
Zm8ubHVtaW5hbmNlQml0cyA9IGx1bUJpdHM7Ci0gICAgaW5mby5kZXB0aEJpdHMgPSBkZXB0aEJp
dHM7Ci0gICAgaW5mby5zdGVuY2lsQml0cyA9IHN0ZW5jaWxCaXRzOwotICAgIGluZm8uaW5mbyAg
ICAgICAgICA9ICZGb3JtYXQ6OkdldChmb3JtYXRJRCk7Ci0KLSAgICBtYXAtPmluc2VydChzdGQ6
Om1ha2VfcGFpcihmb3JtYXQsIGluZm8pKTsKLX0KLQotc3RhdGljIEQzRDlGb3JtYXRJbmZvTWFw
IEJ1aWxkRDNEOUZvcm1hdEluZm9NYXAoKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBhbmdsZTsg
IC8vIEZvciBpbWFnZSByZWFkaW5nIGFuZCBtaXBtYXAgZ2VuZXJhdGlvbiBmdW5jdGlvbnMKLQot
ICAgIEQzRDlGb3JtYXRJbmZvTWFwIG1hcDsKLQotICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAg
ICAvLyAgICAgICAgICAgICAgICAgICAgICAgfCBEM0RGT1JNQVQgICAgICAgICAgIHwgUyAgfFcg
fEggfCBSIHwgRyB8IEIgfCBBIHwgTCB8IEQgfCBTIHwgQU5HTEUgZm9ybWF0ICAgICAgICAgICAg
ICAgICAgIHwKLSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9OVUxMLCAgICAg
ICAgICAgIDAsIDAsIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCBGb3JtYXQ6OklEOjpO
T05FICAgICAgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RG
TVRfVU5LTk9XTiwgICAgICAgICAwLCAwLCAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwg
Rm9ybWF0OjpJRDo6Tk9ORSAgICAgICAgICAgICAgICApOwotCi0gICAgSW5zZXJ0RDNERm9ybWF0
SW5mbygmbWFwLCBEM0RGTVRfTDgsICAgICAgICAgICAgICA4LCAxLCAxLCAgMCwgIDAsICAwLCAg
MCwgIDgsICAwLCAgMCwgRm9ybWF0OjpJRDo6TDhfVU5PUk0gICAgICAgICAgICApOwotICAgIElu
c2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0E4LCAgICAgICAgICAgICAgOCwgMSwgMSwg
IDAsICAwLCAgMCwgIDgsICAwLCAgMCwgIDAsIEZvcm1hdDo6SUQ6OkE4X1VOT1JNICAgICAgICAg
ICAgKTsKLSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9BOEw4LCAgICAgICAg
ICAgMTYsIDEsIDEsICAwLCAgMCwgIDAsICA4LCAgOCwgIDAsICAwLCBGb3JtYXQ6OklEOjpMOEE4
X1VOT1JNICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRf
QTRSNEc0QjQsICAgICAgIDE2LCAxLCAxLCAgNCwgIDQsICA0LCAgNCwgIDAsICAwLCAgMCwgRm9y
bWF0OjpJRDo6QjRHNFI0QTRfVU5PUk0gICAgICApOwotICAgIEluc2VydEQzREZvcm1hdEluZm8o
Jm1hcCwgRDNERk1UX0ExUjVHNUI1LCAgICAgICAxNiwgMSwgMSwgIDUsICA1LCAgNSwgIDEsICAw
LCAgMCwgIDAsIEZvcm1hdDo6SUQ6OkI1RzVSNUExX1VOT1JNICAgICAgKTsKLSAgICBJbnNlcnRE
M0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9SNUc2QjUsICAgICAgICAgMTYsIDEsIDEsICA1LCAg
NiwgIDUsICAwLCAgMCwgIDAsICAwLCBGb3JtYXQ6OklEOjpSNUc2QjVfVU5PUk0gICAgICAgICk7
Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRfWDhSOEc4QjgsICAgICAgIDMy
LCAxLCAxLCAgOCwgIDgsICA4LCAgMCwgIDAsICAwLCAgMCwgRm9ybWF0OjpJRDo6QjhHOFI4WDhf
VU5PUk0gICAgICApOwotICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0E4UjhH
OEI4LCAgICAgICAzMiwgMSwgMSwgIDgsICA4LCAgOCwgIDgsICAwLCAgMCwgIDAsIEZvcm1hdDo6
SUQ6OkI4RzhSOEE4X1VOT1JNICAgICAgKTsKLSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAs
IEQzREZNVF9SMTZGLCAgICAgICAgICAgMTYsIDEsIDEsIDE2LCAgMCwgIDAsICAwLCAgMCwgIDAs
ICAwLCBGb3JtYXQ6OklEOjpSMTZfRkxPQVQgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RDNERm9y
bWF0SW5mbygmbWFwLCBEM0RGTVRfRzE2UjE2RiwgICAgICAgIDMyLCAxLCAxLCAxNiwgMTYsICAw
LCAgMCwgIDAsICAwLCAgMCwgRm9ybWF0OjpJRDo6UjE2RzE2X0ZMT0FUICAgICAgICApOwotICAg
IEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0ExNkIxNkcxNlIxNkYsICA2NCwgMSwg
MSwgMTYsIDE2LCAxNiwgMTYsICAwLCAgMCwgIDAsIEZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9G
TE9BVCAgKTsKLSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9SMzJGLCAgICAg
ICAgICAgMzIsIDEsIDEsIDMyLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCBGb3JtYXQ6OklEOjpS
MzJfRkxPQVQgICAgICAgICAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RG
TVRfRzMyUjMyRiwgICAgICAgIDY0LCAxLCAxLCAzMiwgMzIsICAwLCAgMCwgIDAsICAwLCAgMCwg
Rm9ybWF0OjpJRDo6UjMyRzMyX0ZMT0FUICAgICAgICApOwotICAgIEluc2VydEQzREZvcm1hdElu
Zm8oJm1hcCwgRDNERk1UX0EzMkIzMkczMlIzMkYsIDEyOCwgMSwgMSwgMzIsIDMyLCAzMiwgMzIs
ICAwLCAgMCwgIDAsIEZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9GTE9BVCAgKTsKLQotICAgIElu
c2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0QxNiwgICAgICAgICAgICAxNiwgMSwgMSwg
IDAsICAwLCAgMCwgIDAsICAwLCAxNiwgIDAsIEZvcm1hdDo6SUQ6OkQxNl9VTk9STSAgICAgICAg
ICAgKTsKLSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9EMjRTOCwgICAgICAg
ICAgMzIsIDEsIDEsICAwLCAgMCwgIDAsICAwLCAgMCwgMjQsICA4LCBGb3JtYXQ6OklEOjpEMjRf
VU5PUk1fUzhfVUlOVCAgICk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygmbWFwLCBEM0RGTVRf
RDI0WDgsICAgICAgICAgIDMyLCAxLCAxLCAgMCwgIDAsICAwLCAgMCwgIDAsIDI0LCAgMCwgRm9y
bWF0OjpJRDo6RDE2X1VOT1JNICAgICAgICAgICApOwotICAgIEluc2VydEQzREZvcm1hdEluZm8o
Jm1hcCwgRDNERk1UX0QzMiwgICAgICAgICAgICAzMiwgMSwgMSwgIDAsICAwLCAgMCwgIDAsICAw
LCAzMiwgIDAsIEZvcm1hdDo6SUQ6OkQzMl9VTk9STSAgICAgICAgICAgKTsKLQotICAgIEluc2Vy
dEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0lOVFosICAgICAgICAgICAzMiwgMSwgMSwgIDAs
ICAwLCAgMCwgIDAsICAwLCAyNCwgIDgsIEZvcm1hdDo6SUQ6OkQyNF9VTk9STV9TOF9VSU5UICAg
KTsKLQotICAgIEluc2VydEQzREZvcm1hdEluZm8oJm1hcCwgRDNERk1UX0RYVDEsICAgICAgICAg
ICA2NCwgNCwgNCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsIEZvcm1hdDo6SUQ6OkJDMV9S
R0JBX1VOT1JNX0JMT0NLKTsKLSAgICBJbnNlcnREM0RGb3JtYXRJbmZvKCZtYXAsIEQzREZNVF9E
WFQzLCAgICAgICAgICAxMjgsIDQsIDQsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCBGb3Jt
YXQ6OklEOjpCQzJfUkdCQV9VTk9STV9CTE9DSyk7Ci0gICAgSW5zZXJ0RDNERm9ybWF0SW5mbygm
bWFwLCBEM0RGTVRfRFhUNSwgICAgICAgICAgMTI4LCA0LCA0LCAgMCwgIDAsICAwLCAgMCwgIDAs
ICAwLCAgMCwgRm9ybWF0OjpJRDo6QkMzX1JHQkFfVU5PUk1fQkxPQ0spOwotICAgIC8vIGNsYW5n
LWZvcm1hdCBvbgotCi0gICAgcmV0dXJuIG1hcDsKIH0KIAogY29uc3QgRDNERm9ybWF0ICZHZXRE
M0RGb3JtYXRJbmZvKEQzREZPUk1BVCBmb3JtYXQpCiB7Ci0gICAgc3RhdGljIGNvbnN0IEQzRDlG
b3JtYXRJbmZvTWFwIGluZm9NYXAgPSBCdWlsZEQzRDlGb3JtYXRJbmZvTWFwKCk7Ci0gICAgRDNE
OUZvcm1hdEluZm9NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBpbmZvTWFwLmZpbmQoZm9ybWF0
KTsKLSAgICBpZiAoaXRlciAhPSBpbmZvTWFwLmVuZCgpKQorICAgIGlmIChmb3JtYXQgPT0gRDNE
Rk1UX05VTEwpCiAgICAgewotICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kOworICAgICAgICBz
dGF0aWMgY29uc3RleHByIEQzREZvcm1hdCBpbmZvKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIEZvcm1hdDo6SUQ6Ok5PTkUpOworICAgICAgICByZXR1cm4gaW5mbzsKICAgICB9Ci0gICAg
ZWxzZQorCisgICAgaWYgKGZvcm1hdCA9PSBEM0RGTVRfSU5UWikKICAgICB7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCBEM0RGb3JtYXQgZGVmYXVsdEluZm87Ci0gICAgICAgIHJldHVybiBkZWZhdWx0
SW5mbzsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBEM0RGb3JtYXQgaW5mbygzMiwgMSwgMSwg
MCwgMCwgMCwgMCwgMCwgMjQsIDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRm9ybWF0OjpJRDo6RDI0X1VOT1JNX1M4X1VJTlQpOworICAgICAgICByZXR1cm4gaW5m
bzsKICAgICB9Ci19CiAKKyAgICBzd2l0Y2ggKGZvcm1hdCkKKyAgICB7CisgICAgICAgIGNhc2Ug
RDNERk1UX1VOS05PV046CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
RDNERm9ybWF0IGluZm8oMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgRm9ybWF0OjpJRDo6
Tk9ORSk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorCisgICAgICAgIGNh
c2UgRDNERk1UX0w4OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEQz
REZvcm1hdCBpbmZvKDgsIDEsIDEsIDAsIDAsIDAsIDAsIDgsIDAsIDAsIEZvcm1hdDo6SUQ6Okw4
X1VOT1JNKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgRDNERk1UX0E4OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEQz
REZvcm1hdCBpbmZvKDgsIDEsIDEsIDAsIDAsIDAsIDgsIDAsIDAsIDAsIEZvcm1hdDo6SUQ6OkE4
X1VOT1JNKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgRDNERk1UX0E4TDg6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
RDNERm9ybWF0IGluZm8oMTYsIDEsIDEsIDAsIDAsIDAsIDgsIDgsIDAsIDAsIEZvcm1hdDo6SUQ6
Okw4QThfVU5PUk0pOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKworICAg
ICAgICBjYXNlIEQzREZNVF9BNFI0RzRCNDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBEM0RGb3JtYXQgaW5mbygxNiwgMSwgMSwgNCwgNCwgNCwgNCwgMCwgMCwgMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0OjpJRDo6
QjRHNFI0QTRfVU5PUk0pOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBEM0RGTVRfQTFSNUc1QjU6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgRDNERm9ybWF0IGluZm8oMTYsIDEsIDEsIDUsIDUsIDUsIDEsIDAsIDAsIDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdDo6SUQ6
OkI1RzVSNUExX1VOT1JNKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRDNERk1UX1I1RzZCNToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBEM0RGb3JtYXQgaW5mbygxNiwgMSwgMSwgNSwgNiwgNSwgMCwgMCwgMCwgMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0OjpJRDo6
UjVHNkI1X1VOT1JNKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRDNERk1UX1g4UjhHOEI4OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIEQzREZvcm1hdCBpbmZvKDMyLCAxLCAxLCA4LCA4LCA4LCAwLCAwLCAwLCAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQ6OklEOjpC
OEc4UjhYOF9VTk9STSk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEQzREZNVF9BOFI4RzhCODoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBEM0RGb3JtYXQgaW5mbygzMiwgMSwgMSwgOCwgOCwgOCwgOCwgMCwgMCwgMCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0OjpJRDo6
QjhHOFI4QThfVU5PUk0pOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKwor
ICAgICAgICBjYXNlIEQzREZNVF9SMTZGOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIEQzREZvcm1hdCBpbmZvKDE2LCAxLCAxLCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwg
Rm9ybWF0OjpJRDo6UjE2X0ZMT0FUKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgRDNERk1UX0cxNlIxNkY6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgRDNERm9ybWF0IGluZm8oMzIsIDEsIDEsIDE2LCAxNiwgMCwgMCwg
MCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9y
bWF0OjpJRDo6UjE2RzE2X0ZMT0FUKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgRDNERk1UX0ExNkIxNkcxNlIxNkY6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRDNERm9ybWF0IGluZm8oNjQsIDEsIDEsIDE2LCAxNiwg
MTYsIDE2LCAwLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBGb3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfRkxPQVQpOworICAgICAgICAgICAgcmV0dXJu
IGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBEM0RGTVRfUjMyRjoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBEM0RGb3JtYXQgaW5mbygzMiwgMSwgMSwgMzIs
IDAsIDAsIDAsIDAsIDAsIDAsIEZvcm1hdDo6SUQ6OlIzMl9GTE9BVCk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEQzREZNVF9HMzJSMzJGOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEQzREZvcm1hdCBpbmZvKDY0LCAx
LCAxLCAzMiwgMzIsIDAsIDAsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEZvcm1hdDo6SUQ6OlIzMkczMl9GTE9BVCk7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEQzREZNVF9BMzJCMzJHMzJSMzJG
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEQzREZvcm1hdCBpbmZv
KDEyOCwgMSwgMSwgMzIsIDMyLCAzMiwgMzIsIDAsIDAsIDAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdDo6SUQ6OlIzMkczMkIzMkEzMl9GTE9BVCk7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgRDNE
Rk1UX0QxNjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBEM0RGb3Jt
YXQgaW5mbygxNiwgMSwgMSwgMCwgMCwgMCwgMCwgMCwgMTYsIDAsIEZvcm1hdDo6SUQ6OkQxNl9V
Tk9STSk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IEQzREZNVF9EMjRTODoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBE
M0RGb3JtYXQgaW5mbygzMiwgMSwgMSwgMCwgMCwgMCwgMCwgMCwgMjQsIDgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdDo6SUQ6OkQyNF9VTk9STV9T
OF9VSU5UKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgRDNERk1UX0QyNFg4OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHBy
IEQzREZvcm1hdCBpbmZvKDMyLCAxLCAxLCAwLCAwLCAwLCAwLCAwLCAyNCwgMCwgRm9ybWF0OjpJ
RDo6RDE2X1VOT1JNKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgRDNERk1UX0QzMjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBEM0RGb3JtYXQgaW5mbygzMiwgMSwgMSwgMCwgMCwgMCwgMCwgMCwgMzIsIDAsIEZvcm1h
dDo6SUQ6OkQzMl9VTk9STSk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQor
CisgICAgICAgIGNhc2UgRDNERk1UX0RYVDE6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgRDNERm9ybWF0IGluZm8oNjQsIDQsIDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdDo6SUQ6
OkJDMV9SR0JBX1VOT1JNX0JMT0NLKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgRDNERk1UX0RYVDM6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdGV4cHIgRDNERm9ybWF0IGluZm8oMTI4LCA0LCA0LCAwLCAwLCAwLCAwLCAwLCAw
LCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQ6
OklEOjpCQzJfUkdCQV9VTk9STV9CTE9DSyk7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEQzREZNVF9EWFQ1OgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3RleHByIEQzREZvcm1hdCBpbmZvKDEyOCwgNCwgNCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9y
bWF0OjpJRDo6QkMzX1JHQkFfVU5PUk1fQkxPQ0spOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIEQzREZvcm1hdCBkZWZhdWx0SW5mbzsKKyAgICAgICAgICAgIHJldHVy
biBkZWZhdWx0SW5mbzsKKyAgICAgICAgfQorICAgIH0KK30KIAogdHlwZWRlZiBzdGQ6OnBhaXI8
R0xpbnQsIEluaXRpYWxpemVUZXh0dXJlRGF0YUZ1bmN0aW9uPiBJbnRlcm5hbEZvcm1hdEluaXRp
YWx6ZXJQYWlyOwogdHlwZWRlZiBzdGQ6Om1hcDxHTGludCwgSW5pdGlhbGl6ZVRleHR1cmVEYXRh
RnVuY3Rpb24+IEludGVybmFsRm9ybWF0SW5pdGlhbHplck1hcDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9mb3JtYXR1
dGlsczkuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkOS9mb3JtYXR1dGlsczkuaAppbmRleCAyOTM3ZTE0ZTc2My4uODI4MjUyZDMzMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkOS9mb3JtYXR1dGlsczkuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvZm9ybWF0dXRpbHM5LmgKQEAgLTI5LDcgKzI5LDIw
IEBAIG5hbWVzcGFjZSBkM2Q5CiAKIHN0cnVjdCBEM0RGb3JtYXQKIHsKLSAgICBEM0RGb3JtYXQo
KTsKKyAgICBjb25zdGV4cHIgRDNERm9ybWF0KCk7CisgICAgY29uc3RleHByIEQzREZvcm1hdChH
THVpbnQgcGl4ZWxCeXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBibG9ja1dp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJsb2NrSGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IHJlZEJpdHMsCisgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgZ3JlZW5CaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJsdWVC
aXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGFscGhhQml0cywKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBsdW1pbmFuY2VCaXRzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGRlcHRoQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBz
dGVuY2lsQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEIGZv
cm1hdElEKTsKKworICAgIGNvbnN0IGFuZ2xlOjpGb3JtYXQgJmluZm8oKSBjb25zdCB7IHJldHVy
biBhbmdsZTo6Rm9ybWF0OjpHZXQoZm9ybWF0SUQpOyB9CiAKICAgICBHTHVpbnQgcGl4ZWxCeXRl
czsKICAgICBHTHVpbnQgYmxvY2tXaWR0aDsKQEAgLTQ0LDcgKzU3LDcgQEAgc3RydWN0IEQzREZv
cm1hdAogICAgIEdMdWludCBkZXB0aEJpdHM7CiAgICAgR0x1aW50IHN0ZW5jaWxCaXRzOwogCi0g
ICAgY29uc3QgYW5nbGU6OkZvcm1hdCAqaW5mbzsKKyAgICBhbmdsZTo6Rm9ybWF0OjpJRCBmb3Jt
YXRJRDsKIH07CiAKIGNvbnN0IEQzREZvcm1hdCAmR2V0RDNERm9ybWF0SW5mbyhEM0RGT1JNQVQg
Zm9ybWF0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkOS9yZW5kZXJlcjlfdXRpbHMuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3JlbmRlcmVyOV91dGlscy5j
cHAKaW5kZXggMTg4MzYzNmEzMWMuLmZhY2E2MWZhNWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0
aWxzLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxzLmNwcApAQCAtMTcsNyArMTcsOSBAQAogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L2Zvcm1hdHV0aWxzOS5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRlclRhcmdldDkuaCIKICNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci9kM2QvRnJhbWVidWZmZXJEM0QuaCIKLSNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci9kM2QvV29ya2Fyb3VuZHNEM0QuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kcml2ZXJfdXRpbHMuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9QbGF0Zm9ybS5oIgorI2lu
Y2x1ZGUgInBsYXRmb3JtL1dvcmthcm91bmRzRDNELmgiCiAKICNpbmNsdWRlICJ0aGlyZF9wYXJ0
eS9zeXN0ZW1pbmZvL1N5c3RlbUluZm8uaCIKIApAQCAtMzA2LDcgKzMwOCw3IEBAIEdMc2l6ZWkg
R2V0U2FtcGxlc0NvdW50KEQzRE1VTFRJU0FNUExFX1RZUEUgdHlwZSkKIAogYm9vbCBJc0Zvcm1h
dENoYW5uZWxFcXVpdmFsZW50KEQzREZPUk1BVCBkM2Rmb3JtYXQsIEdMZW51bSBmb3JtYXQpCiB7
Ci0gICAgR0xlbnVtIGludGVybmFsRm9ybWF0ICA9IGQzZDk6OkdldEQzREZvcm1hdEluZm8oZDNk
Zm9ybWF0KS5pbmZvLT5nbEludGVybmFsRm9ybWF0OworICAgIEdMZW51bSBpbnRlcm5hbEZvcm1h
dCAgPSBkM2Q5OjpHZXREM0RGb3JtYXRJbmZvKGQzZGZvcm1hdCkuaW5mbygpLmdsSW50ZXJuYWxG
b3JtYXQ7CiAgICAgR0xlbnVtIGNvbnZlcnRlZEZvcm1hdCA9IGdsOjpHZXRJbnRlcm5hbEZvcm1h
dEluZm8oaW50ZXJuYWxGb3JtYXQpLmZvcm1hdDsKICAgICByZXR1cm4gY29udmVydGVkRm9ybWF0
ID09IGZvcm1hdDsKIH0KQEAgLTQ1OSw2ICs0NjEsOCBAQCB2b2lkIEdlbmVyYXRlQ2FwcyhJRGly
ZWN0M0Q5ICpkM2Q5LAogCiAgICAgLy8gVmVydGV4IHNoYWRlciBsaW1pdHMKICAgICBjYXBzLT5t
YXhWZXJ0ZXhBdHRyaWJ1dGVzID0gMTY7CisgICAgLy8gVmVydGV4IEF0dHJpYiBCaW5kaW5nIG5v
dCBzdXBwb3J0ZWQuCisgICAgY2Fwcy0+bWF4VmVydGV4QXR0cmliQmluZGluZ3MgPSBjYXBzLT5t
YXhWZXJ0ZXhBdHRyaWJ1dGVzOwogCiAgICAgY29uc3Qgc2l6ZV90IE1BWF9WRVJURVhfQ09OU1RB
TlRfVkVDVE9SU19EM0Q5ID0gMjU2OwogICAgIGNhcHMtPm1heFZlcnRleFVuaWZvcm1WZWN0b3Jz
ID0KQEAgLTU0MCwxMiArNTQ0LDEyIEBAIHZvaWQgR2VuZXJhdGVDYXBzKElEaXJlY3QzRDkgKmQz
ZDksCiAgICAgewogICAgICAgICAvLyBBVEkgY2FyZHMgb24gWFAgaGF2ZSBwcm9ibGVtcyB3aXRo
IG5vbi1wb3dlci1vZi10d28gdGV4dHVyZXMuCiAgICAgICAgIGV4dGVuc2lvbnMtPnRleHR1cmVO
UE9UID0gIShkZXZpY2VDYXBzLlRleHR1cmVDYXBzICYgRDNEUFRFWFRVUkVDQVBTX1BPVzIpICYm
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEoZGV2aWNlQ2Fwcy5UZXh0
dXJlQ2FwcyAmIEQzRFBURVhUVVJFQ0FQU19DVUJFTUFQX1BPVzIpICYmCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICEoZGV2aWNlQ2Fwcy5UZXh0dXJlQ2FwcyAmIEQzRFBU
RVhUVVJFQ0FQU19OT05QT1cyQ09ORElUSU9OQUwpICYmCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICEoIWlzV2luZG93c1Zpc3RhT3JHcmVhdGVyKCkgJiYgYWRhcHRlcklk
LlZlbmRvcklkID09IFZFTkRPUl9JRF9BTUQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICEoZGV2aWNlQ2Fwcy5UZXh0dXJlQ2FwcyAmIEQzRFBURVhUVVJFQ0FQU19DVUJFTUFQ
X1BPVzIpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIShkZXZpY2VDYXBz
LlRleHR1cmVDYXBzICYgRDNEUFRFWFRVUkVDQVBTX05PTlBPVzJDT05ESVRJT05BTCkgJiYKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKCFpc1dpbmRvd3NWaXN0YU9yR3JlYXRl
cigpICYmIElzQU1EKGFkYXB0ZXJJZC5WZW5kb3JJZCkpOwogCiAgICAgICAgIC8vIERpc2FibGUg
ZGVwdGggdGV4dHVyZSBzdXBwb3J0IG9uIEFNRCBjYXJkcyAoU2VlIEFOR0xFIGlzc3VlIDgzOSkK
LSAgICAgICAgaWYgKGFkYXB0ZXJJZC5WZW5kb3JJZCA9PSBWRU5ET1JfSURfQU1EKQorICAgICAg
ICBpZiAoSXNBTUQoYWRhcHRlcklkLlZlbmRvcklkKSkKICAgICAgICAgewogICAgICAgICAgICAg
ZXh0ZW5zaW9ucy0+ZGVwdGhUZXh0dXJlcyA9IGZhbHNlOwogICAgICAgICB9CkBAIC01OTQsNiAr
NTk4LDcgQEAgdm9pZCBHZW5lcmF0ZUNhcHMoSURpcmVjdDNEOSAqZDNkOSwKICAgICBleHRlbnNp
b25zLT51bnBhY2tTdWJpbWFnZSAgICAgICAgID0gdHJ1ZTsKICAgICBleHRlbnNpb25zLT5wYWNr
U3ViaW1hZ2UgICAgICAgICAgID0gdHJ1ZTsKICAgICBleHRlbnNpb25zLT5zeW5jUXVlcnkgICAg
ICAgICAgICAgID0gZXh0ZW5zaW9ucy0+ZmVuY2U7CisgICAgZXh0ZW5zaW9ucy0+Y29weVRleHR1
cmUgICAgICAgICAgICA9IHRydWU7CiAKICAgICAvLyBEM0Q5IGhhcyBubyBjb25jZXB0IG9mIHNl
cGFyYXRlIG1hc2tzIGFuZCByZWZzIGZvciBmcm9udCBhbmQgYmFjayBmYWNlcyBpbiB0aGUgZGVw
dGggc3RlbmNpbAogICAgIC8vIHN0YXRlLgpAQCAtNjQwLDkgKzY0NSw5IEBAIHZvaWQgTWFrZVZh
bGlkU2l6ZShib29sIGlzSW1hZ2UsIEQzREZPUk1BVCBmb3JtYXQsIEdMc2l6ZWkgKnJlcXVlc3RX
aWR0aCwgR0xzaXplCiAgICAgKmxldmVsT2Zmc2V0ID0gdXBzYW1wbGVDb3VudDsKIH0KIAotV29y
a2Fyb3VuZHNEM0QgR2VuZXJhdGVXb3JrYXJvdW5kcygpCithbmdsZTo6V29ya2Fyb3VuZHNEM0Qg
R2VuZXJhdGVXb3JrYXJvdW5kcygpCiB7Ci0gICAgV29ya2Fyb3VuZHNEM0Qgd29ya2Fyb3VuZHM7
CisgICAgYW5nbGU6Oldvcmthcm91bmRzRDNEIHdvcmthcm91bmRzOwogICAgIHdvcmthcm91bmRz
Lm1ydFBlcmZXb3JrYXJvdW5kID0gdHJ1ZTsKICAgICB3b3JrYXJvdW5kcy5zZXREYXRhRmFzdGVy
VGhhbkltYWdlVXBsb2FkID0gZmFsc2U7CiAgICAgd29ya2Fyb3VuZHMudXNlSW5zdGFuY2VkUG9p
bnRTcHJpdGVFbXVsYXRpb24gPSBmYWxzZTsKQEAgLTY1MCw2ICs2NTUsMTAgQEAgV29ya2Fyb3Vu
ZHNEM0QgR2VuZXJhdGVXb3JrYXJvdW5kcygpCiAgICAgLy8gVE9ETyhqbWFkaWxsKTogRGlzYWJs
ZSB3b3JrYXJvdW5kIHdoZW4gd2UgaGF2ZSBhIGZpeGVkIGNvbXBpbGVyIERMTC4KICAgICB3b3Jr
YXJvdW5kcy5leHBhbmRJbnRlZ2VyUG93RXhwcmVzc2lvbnMgPSB0cnVlOwogCisgICAgLy8gQ2Fs
bCBwbGF0Zm9ybSBob29rcyBmb3IgdGVzdGluZyBvdmVycmlkZXMuCisgICAgYXV0byAqcGxhdGZv
cm0gPSBBTkdMRVBsYXRmb3JtQ3VycmVudCgpOworICAgIHBsYXRmb3JtLT5vdmVycmlkZVdvcmth
cm91bmRzRDNEKHBsYXRmb3JtLCAmd29ya2Fyb3VuZHMpOworCiAgICAgcmV0dXJuIHdvcmthcm91
bmRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxzLmgK
aW5kZXggZmY2ZDU1ZmQ1OWEuLmVhZjMxMDg0Y2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvcmVuZGVyZXI5X3V0aWxz
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L3JlbmRlcmVyOV91dGlscy5oCkBAIC0xMyw2ICsxMyw3IEBACiAjaW5jbHVkZSAiY29t
bW9uL0NvbG9yLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvQ2Fwcy5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL0Vycm9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV29ya2Fyb3VuZHNEM0QuaCIKIAogbmFt
ZXNwYWNlIGdsCiB7CkBAIC0yMiw3ICsyMyw2IEBAIGNsYXNzIEZyYW1lYnVmZmVyQXR0YWNobWVu
dDsKIG5hbWVzcGFjZSByeAogewogY2xhc3MgUmVuZGVyVGFyZ2V0OTsKLXN0cnVjdCBXb3JrYXJv
dW5kc0QzRDsKIAogbmFtZXNwYWNlIGdsX2QzZDkKIHsKQEAgLTg3LDkgKzg3LDkgQEAgaW5saW5l
IGJvb2wgaXNEZXZpY2VMb3N0RXJyb3IoSFJFU1VMVCBlcnJvckNvZGUpCiAgICAgfQogfQogCi1X
b3JrYXJvdW5kc0QzRCBHZW5lcmF0ZVdvcmthcm91bmRzKCk7CithbmdsZTo6V29ya2Fyb3VuZHNE
M0QgR2VuZXJhdGVXb3JrYXJvdW5kcygpOwogfQogCi19Cit9ICAvLyBuYW1lc3BhY2UgZDNkOQog
CiAjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfRDNEX0QzRDlfUkVOREVSRVI5VVRJTFNfSF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9zaGFkZXJzL0JsaXQucHMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9CbGl0LnBzCmluZGV4IGRjMzU3ZDBm
YTZhLi4wYzU2NWMzZWNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvQmxpdC5wcworKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9C
bGl0LnBzCkBAIC0yNCw2ICsyNCwyMyBAQCBmbG9hdDQgbHVtaW5hbmNlcHMoZmxvYXQ0IHRleGNv
b3JkIDogVEVYQ09PUkQwKSA6IENPTE9SCiAgICAgcmV0dXJuICh0ZXgyRCh0ZXgsIHRleGNvb3Jk
Lnh5KS54dyAqIG11bHQueHcgKyBhZGQueHcpLnh4eHk7CiB9OwogCitmbG9hdDQgbHVtaW5hbmNl
cHJlbXVsdHBzKGZsb2F0NCB0ZXhjb29yZCA6IFRFWENPT1JEMCkgOiBDT0xPUgoreworICAgIGZs
b2F0NCBsdW1hID0gKHRleDJEKHRleCwgdGV4Y29vcmQueHkpLnh3ICogbXVsdC54dyArIGFkZC54
dykueHh4eTsKKyAgICBsdW1hLnJnYiAqPSBsdW1hLmE7CisgICAgcmV0dXJuIGx1bWE7Cit9Owor
CitmbG9hdDQgbHVtaW5hbmNldW5tdWx0cHMoZmxvYXQ0IHRleGNvb3JkIDogVEVYQ09PUkQwKSA6
IENPTE9SCit7CisgICAgZmxvYXQ0IGx1bWEgPSAodGV4MkQodGV4LCB0ZXhjb29yZC54eSkueHcg
KiBtdWx0Lnh3ICsgYWRkLnh3KS54eHh5OworICAgIGlmIChsdW1hLmEgPiAwLjBmKQorICAgIHsK
KyAgICAgICAgbHVtYS5yZ2IgLz0gbHVtYS5hOworICAgIH0KKyAgICByZXR1cm4gbHVtYTsKK307
CisKIC8vIFJHQi9BIENvbXBvbmVudCBNYXNrIFBpeGVsIFNoYWRlcgogLy8gUGVyZm9ybXMgYSBt
YWQgb3BlcmF0aW9uIHVzaW5nIHRoZSB0ZXh0dXJlJ3MgUkdCQSBkYXRhIHdpdGggbXVsdC54eXp3
IGFuZCBhZGQueHl6dy4KIC8vIFJldHVybnMgZGF0YSBpbiB0aGUgZm9ybSBvZiByZ2JhCkBAIC0z
MSwzICs0OCwyMCBAQCBmbG9hdDQgY29tcG9uZW50bWFza3BzKGZsb2F0NCB0ZXhjb29yZCA6IFRF
WENPT1JEMCkgOiBDT0xPUgogewogICAgIHJldHVybiB0ZXgyRCh0ZXgsIHRleGNvb3JkLnh5KSAq
IG11bHQgKyBhZGQ7CiB9OworCitmbG9hdDQgY29tcG9uZW50bWFza3ByZW11bHRwcyhmbG9hdDQg
dGV4Y29vcmQgOiBURVhDT09SRDApIDogQ09MT1IKK3sKKyAgICBmbG9hdDQgY29sb3IgPSB0ZXgy
RCh0ZXgsIHRleGNvb3JkLnh5KSAqIG11bHQgKyBhZGQ7CisgICAgY29sb3IucmdiICo9IGNvbG9y
LmE7CisgICAgcmV0dXJuIGNvbG9yOworfTsKKworZmxvYXQ0IGNvbXBvbmVudG1hc2t1bm11bHRw
cyhmbG9hdDQgdGV4Y29vcmQgOiBURVhDT09SRDApIDogQ09MT1IKK3sKKyAgICBmbG9hdDQgY29s
b3IgPSAgdGV4MkQodGV4LCB0ZXhjb29yZC54eSkgKiBtdWx0ICsgYWRkOworICAgIGlmIChjb2xv
ci5hID4gMC4wZikKKyAgICB7CisgICAgICAgIGNvbG9yLnJnYiAvPSBjb2xvci5hOworICAgIH0K
KyAgICByZXR1cm4gY29sb3I7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvQmxpdC52cyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJz
L0JsaXQudnMKaW5kZXggM2EzNjk4MGI5MzUuLmM2ODM5NWE2OWM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVy
cy9CbGl0LnZzCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkOS9zaGFkZXJzL0JsaXQudnMKQEAgLTExLDYgKzExLDcgQEAgc3RydWN0IFZT
X09VVFBVVAogfTsKIAogdW5pZm9ybSBmbG9hdDQgaGFsZlBpeGVsU2l6ZSA6IGMwOwordW5pZm9y
bSBmbG9hdDQgdGV4Y29vcmRPZmZzZXQgOiBjMTsKIAogLy8gU3RhbmRhcmQgVmVydGV4IFNoYWRl
cgogLy8gSW5wdXQgMCBpcyB0aGUgaG9tb2dlbm91cyBwb3NpdGlvbi4KQEAgLTIyLDIyICsyMyw3
IEBAIFZTX09VVFBVVCBzdGFuZGFyZHZzKGluIGZsb2F0NCBwb3NpdGlvbiA6IFBPU0lUSU9OKQog
ICAgIFZTX09VVFBVVCBPdXQ7CiAKICAgICBPdXQucG9zaXRpb24gPSBwb3NpdGlvbiArIGhhbGZQ
aXhlbFNpemU7Ci0gICAgT3V0LnRleGNvb3JkID0gcG9zaXRpb24gKiBmbG9hdDQoMC41LCAtMC41
LCAxLjAsIDEuMCkgKyBmbG9hdDQoMC41LCAwLjUsIDAsIDApOwotCi0gICAgcmV0dXJuIE91dDsK
LX07Ci0KLS8vIEZsaXAgWSBWZXJ0ZXggU2hhZGVyCi0vLyBJbnB1dCAwIGlzIHRoZSBob21vZ2Vu
b3VzIHBvc2l0aW9uLgotLy8gT3V0cHV0cyB0aGUgaG9tb2dlbm91cyBwb3NpdGlvbiBhcy1pcy4K
LS8vIE91dHB1dHMgYSB0ZXggY29vcmQgd2l0aCAoMCwxKSBpbiB0aGUgdXBwZXItbGVmdCBjb3Ju
ZXIgb2YgdGhlIHNjcmVlbiBhbmQgKDEsMCkgaW4gdGhlIGJvdHRvbSByaWdodC4KLS8vIEMwLlhZ
IG11c3QgYmUgdGhlIGhhbGYtcGl4ZWwgd2lkdGggYW5kIGhlaWdodC4gQzAuWlcgbXVzdCBiZSAw
LgotVlNfT1VUUFVUIGZsaXB5dnMoaW4gZmxvYXQ0IHBvc2l0aW9uIDogUE9TSVRJT04pCi17Ci0g
ICAgVlNfT1VUUFVUIE91dDsKLQotICAgIE91dC5wb3NpdGlvbiA9IHBvc2l0aW9uICsgaGFsZlBp
eGVsU2l6ZTsKLSAgICBPdXQudGV4Y29vcmQgPSBwb3NpdGlvbiAqIGZsb2F0NCgwLjUsIDAuNSwg
MS4wLCAxLjApICsgZmxvYXQ0KDAuNSwgMC41LCAwLCAwKTsKKyAgICBPdXQudGV4Y29vcmQgPSAo
KHBvc2l0aW9uICogZmxvYXQ0KDAuNSwgLTAuNSwgMS4wLCAxLjApICsgZmxvYXQ0KDAuNSwgMC41
LCAwLCAwKSkgKiBmbG9hdDQodGV4Y29vcmRPZmZzZXQuencsIDEuMCwgMS4wKSkgKyBmbG9hdDQo
dGV4Y29vcmRPZmZzZXQueHksIDAsIDApOwogCiAgICAgcmV0dXJuIE91dDsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvc2hhZGVycy9jb21waWxlZC9jb21wb25lbnRtYXNrcHJlbXVsdHBzLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21w
aWxlZC9jb21wb25lbnRtYXNrcHJlbXVsdHBzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLjZhYWRhYjZhNGUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGls
ZWQvY29tcG9uZW50bWFza3ByZW11bHRwcy5oCkBAIC0wLDAgKzEsNTAgQEAKKyNpZiAwDQorLy8N
CisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNoYWRlciBDb21waWxlciA2LjMu
OTYwMC4xNjM4NA0KKy8vDQorLy8gUGFyYW1ldGVyczoNCisvLw0KKy8vICAgZmxvYXQ0IGFkZDsN
CisvLyAgIGZsb2F0NCBtdWx0Ow0KKy8vICAgc2FtcGxlcjJEIHRleDsNCisvLw0KKy8vDQorLy8g
UmVnaXN0ZXJzOg0KKy8vDQorLy8gICBOYW1lICAgICAgICAgUmVnICAgU2l6ZQ0KKy8vICAgLS0t
LS0tLS0tLS0tIC0tLS0tIC0tLS0NCisvLyAgIG11bHQgICAgICAgICBjMCAgICAgICAxDQorLy8g
ICBhZGQgICAgICAgICAgYzEgICAgICAgMQ0KKy8vICAgdGV4ICAgICAgICAgIHMwICAgICAgIDEN
CisvLw0KKw0KKyAgICBwc18yXzANCisgICAgZGNsIHQwLnh5DQorICAgIGRjbF8yZCBzMA0KKyAg
ICB0ZXhsZCByMCwgdDAsIHMwDQorICAgIG1vdiByMSwgYzANCisgICAgbWFkIHIwLCByMCwgcjEs
IGMxDQorICAgIG11bCByMC54eXosIHIwLncsIHIwDQorICAgIG1vdiBvQzAsIHIwDQorDQorLy8g
YXBwcm94aW1hdGVseSA1IGluc3RydWN0aW9uIHNsb3RzIHVzZWQgKDEgdGV4dHVyZSwgNCBhcml0
aG1ldGljKQ0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19wczIwX2NvbXBvbmVudG1hc2twcmVt
dWx0cHNbXSA9IHsNCisgICAgMCwgICAyLCAgIDI1NSwgMjU1LCAyNTQsIDI1NSwgNTAsICAwLCAg
IDY3LCAgODQsICA2NSwgIDY2LCAgMjgsICAwLCAgIDAsICAgMCwgICAxNDMsIDAsICAgMCwNCisg
ICAgMCwgICAwLCAgIDIsICAgMjU1LCAyNTUsIDMsICAgMCwgICAwLCAgIDAsICAgMjgsICAwLCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDEzNiwgMCwNCisgICAgMCwgICAwLCAgIDg4
LCAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAgIDEsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAg
IDkyLCAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMTA4LCAwLCAgIDAs
ICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgOTIsICAwLCAg
IDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAxMTMsIDAsICAgMCwgICAwLCAgIDMs
ICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICAxMjAsIDAsICAgMCwNCisgICAg
MCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDk3LCAgMTAwLCAxMDAsIDAsICAgMSwgICAwLCAgIDMs
ICAgMCwgICAxLCAgIDAsICAgNCwgICAwLCAgIDEsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAg
MCwgICAwLCAgIDAsICAgMTA5LCAxMTcsIDEwOCwgMTE2LCAwLCAgIDExNiwgMTAxLCAxMjAsIDAs
ICAgMTcxLCAxNzEsIDE3MSwgNCwNCisgICAgMCwgICAxMiwgIDAsICAgMSwgICAwLCAgIDEsICAg
MCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMTEyLCAxMTUsIDk1
LCAgNTAsDQorICAgIDk1LCAgNDgsICAwLCAgIDc3LCAgMTA1LCA5OSwgIDExNCwgMTExLCAxMTUs
IDExMSwgMTAyLCAxMTYsIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3MiwgIDc2LA0KKyAgICA4
MywgIDc2LCAgMzIsICA4MywgIDEwNCwgOTcsICAxMDAsIDEwMSwgMTE0LCAzMiwgIDY3LCAgMTEx
LCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgMTE0LCAzMiwNCisgICAgNTQsICA0NiwgIDUxLCAg
NDYsICA1NywgIDU0LCAgNDgsICA0OCwgIDQ2LCAgNDksICA1NCwgIDUxLCAgNTYsICA1MiwgIDAs
ICAgMTcxLCAxNzEsIDE3MSwgMzEsDQorICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAg
IDEyOCwgMCwgICAwLCAgIDMsICAgMTc2LCAzMSwgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAw
LCAgIDE0NCwNCisgICAgMCwgICA4LCAgIDE1LCAgMTYwLCA2NiwgIDAsICAgMCwgICAzLCAgIDAs
ICAgMCwgICAxNSwgIDEyOCwgMCwgICAwLCAgIDIyOCwgMTc2LCAwLCAgIDgsICAgMjI4LA0KKyAg
ICAxNjAsIDEsICAgMCwgICAwLCAgIDIsICAgMSwgICAwLCAgIDE1LCAgMTI4LCAwLCAgIDAsICAg
MjI4LCAxNjAsIDQsICAgMCwgICAwLCAgIDQsICAgMCwgICAwLA0KKyAgICAxNSwgIDEyOCwgMCwg
ICAwLCAgIDIyOCwgMTI4LCAxLCAgIDAsICAgMjI4LCAxMjgsIDEsICAgMCwgICAyMjgsIDE2MCwg
NSwgICAwLCAgIDAsICAgMywgICAwLA0KKyAgICAwLCAgIDcsICAgMTI4LCAwLCAgIDAsICAgMjU1
LCAxMjgsIDAsICAgMCwgICAyMjgsIDEyOCwgMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDgsICAg
MTUsICAxMjgsDQorICAgIDAsICAgMCwgICAyMjgsIDEyOCwgMjU1LCAyNTUsIDAsICAgMH07DQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvY29tcG9uZW50bWFza3VubXVsdHBzLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVy
cy9jb21waWxlZC9jb21wb25lbnRtYXNrdW5tdWx0cHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uNzJmYWUzNmRkZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9j
b21waWxlZC9jb21wb25lbnRtYXNrdW5tdWx0cHMuaApAQCAtMCwwICsxLDU0IEBACisjaWYgMA0K
Ky8vDQorLy8gR2VuZXJhdGVkIGJ5IE1pY3Jvc29mdCAoUikgSExTTCBTaGFkZXIgQ29tcGlsZXIg
Ni4zLjk2MDAuMTYzODQNCisvLw0KKy8vIFBhcmFtZXRlcnM6DQorLy8NCisvLyAgIGZsb2F0NCBh
ZGQ7DQorLy8gICBmbG9hdDQgbXVsdDsNCisvLyAgIHNhbXBsZXIyRCB0ZXg7DQorLy8NCisvLw0K
Ky8vIFJlZ2lzdGVyczoNCisvLw0KKy8vICAgTmFtZSAgICAgICAgIFJlZyAgIFNpemUNCisvLyAg
IC0tLS0tLS0tLS0tLSAtLS0tLSAtLS0tDQorLy8gICBtdWx0ICAgICAgICAgYzAgICAgICAgMQ0K
Ky8vICAgYWRkICAgICAgICAgIGMxICAgICAgIDENCisvLyAgIHRleCAgICAgICAgICBzMCAgICAg
ICAxDQorLy8NCisNCisgICAgcHNfMl8wDQorICAgIGRjbCB0MC54eQ0KKyAgICBkY2xfMmQgczAN
CisgICAgdGV4bGQgcjAsIHQwLCBzMA0KKyAgICBtb3YgcjEsIGMwDQorICAgIG1hZCByMCwgcjAs
IHIxLCBjMQ0KKyAgICByY3AgcjEueCwgcjAudw0KKyAgICBtdWwgcjEueHl6LCByMCwgcjEueA0K
KyAgICBjbXAgcjAueHl6LCAtcjAudywgcjAsIHIxDQorICAgIG1vdiBvQzAsIHIwDQorDQorLy8g
YXBwcm94aW1hdGVseSA3IGluc3RydWN0aW9uIHNsb3RzIHVzZWQgKDEgdGV4dHVyZSwgNiBhcml0
aG1ldGljKQ0KKyNlbmRpZg0KKw0KK2NvbnN0IEJZVEUgZ19wczIwX2NvbXBvbmVudG1hc2t1bm11
bHRwc1tdID0gew0KKyAgICAwLCAgIDIsICAgMjU1LCAyNTUsIDI1NCwgMjU1LCA1MCwgIDAsICAg
NjcsICA4NCwgIDY1LCAgNjYsICAyOCwgIDAsICAgMCwgICAwLCAgIDE0MywgMCwgICAwLA0KKyAg
ICAwLCAgIDAsICAgMiwgICAyNTUsIDI1NSwgMywgICAwLCAgIDAsICAgMCwgICAyOCwgIDAsICAg
MCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMTM2LCAwLA0KKyAgICAwLCAgIDAsICAgODgs
ICAwLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMSwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAg
OTIsICAwLCAgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAxMDgsIDAsICAgMCwg
ICAwLCAgIDIsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwgICA5MiwgIDAsICAg
MCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDExMywgMCwgICAwLCAgIDAsICAgMywg
ICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDEyMCwgMCwgICAwLA0KKyAgICAw
LCAgIDAsICAgMCwgICAwLCAgIDAsICAgOTcsICAxMDAsIDEwMCwgMCwgICAxLCAgIDAsICAgMywg
ICAwLCAgIDEsICAgMCwgICA0LCAgIDAsICAgMSwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgICAxMDksIDExNywgMTA4LCAxMTYsIDAsICAgMTE2LCAxMDEsIDEyMCwgMCwg
ICAxNzEsIDE3MSwgMTcxLCA0LA0KKyAgICAwLCAgIDEyLCAgMCwgICAxLCAgIDAsICAgMSwgICAw
LCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxMTIsIDExNSwgOTUs
ICA1MCwNCisgICAgOTUsICA0OCwgIDAsICAgNzcsICAxMDUsIDk5LCAgMTE0LCAxMTEsIDExNSwg
MTExLCAxMDIsIDExNiwgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgIDcyLCAgNzYsDQorICAgIDgz
LCAgNzYsICAzMiwgIDgzLCAgMTA0LCA5NywgIDEwMCwgMTAxLCAxMTQsIDMyLCAgNjcsICAxMTEs
IDEwOSwgMTEyLCAxMDUsIDEwOCwgMTAxLCAxMTQsIDMyLA0KKyAgICA1NCwgIDQ2LCAgNTEsICA0
NiwgIDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYsICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCAgMCwg
ICAxNzEsIDE3MSwgMTcxLCAzMSwNCisgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsICAg
MTI4LCAwLCAgIDAsICAgMywgICAxNzYsIDMxLCAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAs
ICAgMTQ0LA0KKyAgICAwLCAgIDgsICAgMTUsICAxNjAsIDY2LCAgMCwgICAwLCAgIDMsICAgMCwg
ICAwLCAgIDE1LCAgMTI4LCAwLCAgIDAsICAgMjI4LCAxNzYsIDAsICAgOCwgICAyMjgsDQorICAg
IDE2MCwgMSwgICAwLCAgIDAsICAgMiwgICAxLCAgIDAsICAgMTUsICAxMjgsIDAsICAgMCwgICAy
MjgsIDE2MCwgNCwgICAwLCAgIDAsICAgNCwgICAwLCAgIDAsDQorICAgIDE1LCAgMTI4LCAwLCAg
IDAsICAgMjI4LCAxMjgsIDEsICAgMCwgICAyMjgsIDEyOCwgMSwgICAwLCAgIDIyOCwgMTYwLCA2
LCAgIDAsICAgMCwgICAyLCAgIDEsDQorICAgIDAsICAgMSwgICAxMjgsIDAsICAgMCwgICAyNTUs
IDEyOCwgNSwgICAwLCAgIDAsICAgMywgICAxLCAgIDAsICAgNywgICAxMjgsIDAsICAgMCwgICAy
MjgsIDEyOCwNCisgICAgMSwgICAwLCAgIDAsICAgMTI4LCA4OCwgIDAsICAgMCwgICA0LCAgIDAs
ICAgMCwgICA3LCAgIDEyOCwgMCwgICAwLCAgIDI1NSwgMTI5LCAwLCAgIDAsICAgMjI4LA0KKyAg
ICAxMjgsIDEsICAgMCwgICAyMjgsIDEyOCwgMSwgICAwLCAgIDAsICAgMiwgICAwLCAgIDgsICAg
MTUsICAxMjgsIDAsICAgMCwgICAyMjgsIDEyOCwgMjU1LCAyNTUsDQorICAgIDAsICAgMH07DQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvZmxpcHl2cy5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvZmxp
cHl2cy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWI1MTMxMzI4ZS4uMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvZmxpcHl2cy5oCisrKyAvZGV2L251bGwKQEAgLTEs
NjYgKzAsMCBAQAotI2lmIDANCi0vLw0KLS8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhM
U0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0DQotLy8NCi0vLyBQYXJhbWV0ZXJzOg0K
LS8vDQotLy8gICBmbG9hdDQgaGFsZlBpeGVsU2l6ZTsNCi0vLw0KLS8vDQotLy8gUmVnaXN0ZXJz
Og0KLS8vDQotLy8gICBOYW1lICAgICAgICAgIFJlZyAgIFNpemUNCi0vLyAgIC0tLS0tLS0tLS0t
LS0gLS0tLS0gLS0tLQ0KLS8vICAgaGFsZlBpeGVsU2l6ZSBjMCAgICAgICAxDQotLy8NCi0NCi0g
ICAgdnNfMl8wDQotICAgIGRlZiBjMSwgMC41LCAxLCAwLCAwDQotICAgIGRjbF9wb3NpdGlvbiB2
MA0KLSAgICBhZGQgb1BvcywgdjAsIGMwDQotICAgIG1hZCBvVDAsIHYwLCBjMS54eHl5LCBjMS54
eHp6DQotDQotLy8gYXBwcm94aW1hdGVseSAyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCi0jZW5k
aWYNCi0NCi1jb25zdCBCWVRFIGdfdnMyMF9mbGlweXZzW10gPQ0KLXsNCi0gICAgICAwLCAgIDIs
IDI1NCwgMjU1LCAyNTQsIDI1NSwgDQotICAgICAzNiwgICAwLCAgNjcsICA4NCwgIDY1LCAgNjYs
IA0KLSAgICAgMjgsICAgMCwgICAwLCAgIDAsICA4NywgICAwLCANCi0gICAgICAwLCAgIDAsICAg
MCwgICAyLCAyNTQsIDI1NSwgDQotICAgICAgMSwgICAwLCAgIDAsICAgMCwgIDI4LCAgIDAsIA0K
LSAgICAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCANCi0gICAgIDgwLCAgIDAsICAgMCwg
ICAwLCAgNDgsICAgMCwgDQotICAgICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsIA0KLSAg
ICAgIDEsICAgMCwgICAwLCAgIDAsICA2NCwgICAwLCANCi0gICAgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMCwgDQotICAgIDEwNCwgIDk3LCAxMDgsIDEwMiwgIDgwLCAxMDUsIA0KLSAgICAx
MjAsIDEwMSwgMTA4LCAgODMsIDEwNSwgMTIyLCANCi0gICAgMTAxLCAgIDAsIDE3MSwgMTcxLCAg
IDEsICAgMCwgDQotICAgICAgMywgICAwLCAgIDEsICAgMCwgICA0LCAgIDAsIA0KLSAgICAgIDEs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCi0gICAgICAwLCAgIDAsIDExOCwgMTE1LCAgOTUs
ICA1MCwgDQotICAgICA5NSwgIDQ4LCAgIDAsICA3NywgMTA1LCAgOTksIA0KLSAgICAxMTQsIDEx
MSwgMTE1LCAxMTEsIDEwMiwgMTE2LCANCi0gICAgIDMyLCAgNDAsICA4MiwgIDQxLCAgMzIsICA3
MiwgDQotICAgICA3NiwgIDgzLCAgNzYsICAzMiwgIDgzLCAxMDQsIA0KLSAgICAgOTcsIDEwMCwg
MTAxLCAxMTQsICAzMiwgIDY3LCANCi0gICAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwg
DQotICAgIDExNCwgIDMyLCAgNTQsICA0NiwgIDUxLCAgNDYsIA0KLSAgICAgNTcsICA1NCwgIDQ4
LCAgNDgsICA0NiwgIDQ5LCANCi0gICAgIDU0LCAgNTEsICA1NiwgIDUyLCAgIDAsIDE3MSwgDQot
ICAgIDE3MSwgMTcxLCAgODEsICAgMCwgICAwLCAgIDUsIA0KLSAgICAgIDEsICAgMCwgIDE1LCAx
NjAsICAgMCwgICAwLCANCi0gICAgICAwLCAgNjMsICAgMCwgICAwLCAxMjgsICA2MywgDQotICAg
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIA0KLSAgICAgIDAsICAgMCwgIDMxLCAgIDAs
ICAgMCwgICAyLCANCi0gICAgICAwLCAgIDAsICAgMCwgMTI4LCAgIDAsICAgMCwgDQotICAgICAx
NSwgMTQ0LCAgIDIsICAgMCwgICAwLCAgIDMsIA0KLSAgICAgIDAsICAgMCwgIDE1LCAxOTIsICAg
MCwgICAwLCANCi0gICAgMjI4LCAxNDQsICAgMCwgICAwLCAyMjgsIDE2MCwgDQotICAgICAgNCwg
ICAwLCAgIDAsICAgNCwgICAwLCAgIDAsIA0KLSAgICAgMTUsIDIyNCwgICAwLCAgIDAsIDIyOCwg
MTQ0LCANCi0gICAgICAxLCAgIDAsICA4MCwgMTYwLCAgIDEsICAgMCwgDQotICAgIDE2MCwgMTYw
LCAyNTUsIDI1NSwgICAwLCAgIDANCi19Ow0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2x1
bWluYW5jZXByZW11bHRwcy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvbHVtaW5hbmNlcHJlbXVsdHBzLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQzYTVjOThmYzBmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvbHVtaW5hbmNlcHJlbXVsdHBzLmgKQEAgLTAs
MCArMSw1NCBAQAorI2lmIDANCisvLw0KKy8vIEdlbmVyYXRlZCBieSBNaWNyb3NvZnQgKFIpIEhM
U0wgU2hhZGVyIENvbXBpbGVyIDYuMy45NjAwLjE2Mzg0DQorLy8NCisvLyBQYXJhbWV0ZXJzOg0K
Ky8vDQorLy8gICBmbG9hdDQgYWRkOw0KKy8vICAgZmxvYXQ0IG11bHQ7DQorLy8gICBzYW1wbGVy
MkQgdGV4Ow0KKy8vDQorLy8NCisvLyBSZWdpc3RlcnM6DQorLy8NCisvLyAgIE5hbWUgICAgICAg
ICBSZWcgICBTaXplDQorLy8gICAtLS0tLS0tLS0tLS0gLS0tLS0gLS0tLQ0KKy8vICAgbXVsdCAg
ICAgICAgIGMwICAgICAgIDENCisvLyAgIGFkZCAgICAgICAgICBjMSAgICAgICAxDQorLy8gICB0
ZXggICAgICAgICAgczAgICAgICAgMQ0KKy8vDQorDQorICAgIHBzXzJfMA0KKyAgICBkY2wgdDAu
eHkNCisgICAgZGNsXzJkIHMwDQorICAgIHRleGxkIHIwLCB0MCwgczANCisgICAgbW92IHIxLnh3
LCBjMA0KKyAgICBtYWQgcjAueCwgcjAueCwgcjEueCwgYzEueA0KKyAgICBtYWQgcjAueSwgcjAu
dywgcjEudywgYzEudw0KKyAgICBtdWwgcjEueHl6LCByMC55LCByMC54DQorICAgIG1vdiByMS53
LCByMC55DQorICAgIG1vdiBvQzAsIHIxDQorDQorLy8gYXBwcm94aW1hdGVseSA3IGluc3RydWN0
aW9uIHNsb3RzIHVzZWQgKDEgdGV4dHVyZSwgNiBhcml0aG1ldGljKQ0KKyNlbmRpZg0KKw0KK2Nv
bnN0IEJZVEUgZ19wczIwX2x1bWluYW5jZXByZW11bHRwc1tdID0gew0KKyAgICAwLCAgIDIsICAg
MjU1LCAyNTUsIDI1NCwgMjU1LCA1MCwgIDAsICAgNjcsICA4NCwgIDY1LCAgNjYsICAyOCwgIDAs
ICAgMCwgICAwLCAgIDE0MywgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMiwgICAyNTUsIDI1NSwg
MywgICAwLCAgIDAsICAgMCwgICAyOCwgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAs
ICAgMTM2LCAwLA0KKyAgICAwLCAgIDAsICAgODgsICAwLCAgIDAsICAgMCwgICAyLCAgIDAsICAg
MSwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgOTIsICAwLCAgIDAsICAgMCwgICAwLA0KKyAg
ICAwLCAgIDAsICAgMCwgICAxMDgsIDAsICAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsICAg
MSwgICAwLCAgIDAsICAgMCwgICA5MiwgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDExMywgMCwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgMCwgICAxLCAgIDAsICAg
MCwgICAwLCAgIDEyMCwgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgOTcs
ICAxMDAsIDEwMCwgMCwgICAxLCAgIDAsICAgMywgICAwLCAgIDEsICAgMCwgICA0LCAgIDAsICAg
MSwgICAwLA0KKyAgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAxMDksIDExNywgMTA4
LCAxMTYsIDAsICAgMTE2LCAxMDEsIDEyMCwgMCwgICAxNzEsIDE3MSwgMTcxLCA0LA0KKyAgICAw
LCAgIDEyLCAgMCwgICAxLCAgIDAsICAgMSwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsICAgMCwgICAxMTIsIDExNSwgOTUsICA1MCwNCisgICAgOTUsICA0OCwgIDAsICAg
NzcsICAxMDUsIDk5LCAgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIDExNiwgMzIsICA0MCwgIDgy
LCAgNDEsICAzMiwgIDcyLCAgNzYsDQorICAgIDgzLCAgNzYsICAzMiwgIDgzLCAgMTA0LCA5Nywg
IDEwMCwgMTAxLCAxMTQsIDMyLCAgNjcsICAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgMTAxLCAx
MTQsIDMyLA0KKyAgICA1NCwgIDQ2LCAgNTEsICA0NiwgIDU3LCAgNTQsICA0OCwgIDQ4LCAgNDYs
ICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCAgMCwgICAxNzEsIDE3MSwgMTcxLCAzMSwNCisgICAg
MCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsICAgMTI4LCAwLCAgIDAsICAgMywgICAxNzYsIDMx
LCAgMCwgICAwLCAgIDIsICAgMCwgICAwLCAgIDAsICAgMTQ0LA0KKyAgICAwLCAgIDgsICAgMTUs
ICAxNjAsIDY2LCAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDE1LCAgMTI4LCAwLCAgIDAsICAg
MjI4LCAxNzYsIDAsICAgOCwgICAyMjgsDQorICAgIDE2MCwgMSwgICAwLCAgIDAsICAgMiwgICAx
LCAgIDAsICAgOSwgICAxMjgsIDAsICAgMCwgICAyMjgsIDE2MCwgNCwgICAwLCAgIDAsICAgNCwg
ICAwLCAgIDAsDQorICAgIDEsICAgMTI4LCAwLCAgIDAsICAgMCwgICAxMjgsIDEsICAgMCwgICAw
LCAgIDEyOCwgMSwgICAwLCAgIDAsICAgMTYwLCA0LCAgIDAsICAgMCwgICA0LCAgIDAsDQorICAg
IDAsICAgMiwgICAxMjgsIDAsICAgMCwgICAyNTUsIDEyOCwgMSwgICAwLCAgIDI1NSwgMTI4LCAx
LCAgIDAsICAgMjU1LCAxNjAsIDUsICAgMCwgICAwLCAgIDMsDQorICAgIDEsICAgMCwgICA3LCAg
IDEyOCwgMCwgICAwLCAgIDg1LCAgMTI4LCAwLCAgIDAsICAgMCwgICAxMjgsIDEsICAgMCwgICAw
LCAgIDIsICAgMSwgICAwLCAgIDgsDQorICAgIDEyOCwgMCwgICAwLCAgIDg1LCAgMTI4LCAxLCAg
IDAsICAgMCwgICAyLCAgIDAsICAgOCwgICAxNSwgIDEyOCwgMSwgICAwLCAgIDIyOCwgMTI4LCAy
NTUsIDI1NSwNCisgICAgMCwgICAwfTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9sdW1p
bmFuY2V1bm11bHRwcy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGlsZWQvbHVtaW5hbmNldW5tdWx0cHMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZDA3OTRiNTA2NDgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2V1bm11bHRwcy5oCkBAIC0wLDAgKzEs
NTcgQEAKKyNpZiAwDQorLy8NCisvLyBHZW5lcmF0ZWQgYnkgTWljcm9zb2Z0IChSKSBITFNMIFNo
YWRlciBDb21waWxlciA2LjMuOTYwMC4xNjM4NA0KKy8vDQorLy8gUGFyYW1ldGVyczoNCisvLw0K
Ky8vICAgZmxvYXQ0IGFkZDsNCisvLyAgIGZsb2F0NCBtdWx0Ow0KKy8vICAgc2FtcGxlcjJEIHRl
eDsNCisvLw0KKy8vDQorLy8gUmVnaXN0ZXJzOg0KKy8vDQorLy8gICBOYW1lICAgICAgICAgUmVn
ICAgU2l6ZQ0KKy8vICAgLS0tLS0tLS0tLS0tIC0tLS0tIC0tLS0NCisvLyAgIG11bHQgICAgICAg
ICBjMCAgICAgICAxDQorLy8gICBhZGQgICAgICAgICAgYzEgICAgICAgMQ0KKy8vICAgdGV4ICAg
ICAgICAgIHMwICAgICAgIDENCisvLw0KKw0KKyAgICBwc18yXzANCisgICAgZGNsIHQwLnh5DQor
ICAgIGRjbF8yZCBzMA0KKyAgICB0ZXhsZCByMCwgdDAsIHMwDQorICAgIG1vdiByMS54dywgYzAN
CisgICAgbWFkIHIwLngsIHIwLngsIHIxLngsIGMxLngNCisgICAgbWFkIHIwLnksIHIwLncsIHIx
LncsIGMxLncNCisgICAgcmNwIHIwLnosIHIwLnkNCisgICAgbXVsIHIwLnosIHIwLnosIHIwLngN
CisgICAgY21wIHIxLnh5eiwgLXIwLnksIHIwLngsIHIwLnoNCisgICAgbW92IHIxLncsIHIwLnkN
CisgICAgbW92IG9DMCwgcjENCisNCisvLyBhcHByb3hpbWF0ZWx5IDkgaW5zdHJ1Y3Rpb24gc2xv
dHMgdXNlZCAoMSB0ZXh0dXJlLCA4IGFyaXRobWV0aWMpDQorI2VuZGlmDQorDQorY29uc3QgQllU
RSBnX3BzMjBfbHVtaW5hbmNldW5tdWx0cHNbXSA9IHsNCisgICAgMCwgICAyLCAgIDI1NSwgMjU1
LCAyNTQsIDI1NSwgNTAsICAwLCAgIDY3LCAgODQsICA2NSwgIDY2LCAgMjgsICAwLCAgIDAsICAg
MCwgICAxNDMsIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDIsICAgMjU1LCAyNTUsIDMsICAgMCwg
ICAwLCAgIDAsICAgMjgsICAwLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDEzNiwg
MCwNCisgICAgMCwgICAwLCAgIDg4LCAgMCwgICAwLCAgIDAsICAgMiwgICAwLCAgIDEsICAgMCwg
ICAxLCAgIDAsICAgMCwgICAwLCAgIDkyLCAgMCwgICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAw
LCAgIDAsICAgMTA4LCAwLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDEsICAgMCwg
ICAwLCAgIDAsICAgOTIsICAwLCAgIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAx
MTMsIDAsICAgMCwgICAwLCAgIDMsICAgMCwgICAwLCAgIDAsICAgMSwgICAwLCAgIDAsICAgMCwg
ICAxMjAsIDAsICAgMCwNCisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDk3LCAgMTAwLCAx
MDAsIDAsICAgMSwgICAwLCAgIDMsICAgMCwgICAxLCAgIDAsICAgNCwgICAwLCAgIDEsICAgMCwN
CisgICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMTA5LCAxMTcsIDEwOCwgMTE2LCAw
LCAgIDExNiwgMTAxLCAxMjAsIDAsICAgMTcxLCAxNzEsIDE3MSwgNCwNCisgICAgMCwgICAxMiwg
IDAsICAgMSwgICAwLCAgIDEsICAgMCwgICAxLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAw
LCAgIDAsICAgMTEyLCAxMTUsIDk1LCAgNTAsDQorICAgIDk1LCAgNDgsICAwLCAgIDc3LCAgMTA1
LCA5OSwgIDExNCwgMTExLCAxMTUsIDExMSwgMTAyLCAxMTYsIDMyLCAgNDAsICA4MiwgIDQxLCAg
MzIsICA3MiwgIDc2LA0KKyAgICA4MywgIDc2LCAgMzIsICA4MywgIDEwNCwgOTcsICAxMDAsIDEw
MSwgMTE0LCAzMiwgIDY3LCAgMTExLCAxMDksIDExMiwgMTA1LCAxMDgsIDEwMSwgMTE0LCAzMiwN
CisgICAgNTQsICA0NiwgIDUxLCAgNDYsICA1NywgIDU0LCAgNDgsICA0OCwgIDQ2LCAgNDksICA1
NCwgIDUxLCAgNTYsICA1MiwgIDAsICAgMTcxLCAxNzEsIDE3MSwgMzEsDQorICAgIDAsICAgMCwg
ICAyLCAgIDAsICAgMCwgICAwLCAgIDEyOCwgMCwgICAwLCAgIDMsICAgMTc2LCAzMSwgIDAsICAg
MCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDE0NCwNCisgICAgMCwgICA4LCAgIDE1LCAgMTYwLCA2
NiwgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAxNSwgIDEyOCwgMCwgICAwLCAgIDIyOCwgMTc2
LCAwLCAgIDgsICAgMjI4LA0KKyAgICAxNjAsIDEsICAgMCwgICAwLCAgIDIsICAgMSwgICAwLCAg
IDksICAgMTI4LCAwLCAgIDAsICAgMjI4LCAxNjAsIDQsICAgMCwgICAwLCAgIDQsICAgMCwgICAw
LA0KKyAgICAxLCAgIDEyOCwgMCwgICAwLCAgIDAsICAgMTI4LCAxLCAgIDAsICAgMCwgICAxMjgs
IDEsICAgMCwgICAwLCAgIDE2MCwgNCwgICAwLCAgIDAsICAgNCwgICAwLA0KKyAgICAwLCAgIDIs
ICAgMTI4LCAwLCAgIDAsICAgMjU1LCAxMjgsIDEsICAgMCwgICAyNTUsIDEyOCwgMSwgICAwLCAg
IDI1NSwgMTYwLCA2LCAgIDAsICAgMCwgICAyLA0KKyAgICAwLCAgIDAsICAgNCwgICAxMjgsIDAs
ICAgMCwgICA4NSwgIDEyOCwgNSwgICAwLCAgIDAsICAgMywgICAwLCAgIDAsICAgNCwgICAxMjgs
IDAsICAgMCwgICAxNzAsDQorICAgIDEyOCwgMCwgICAwLCAgIDAsICAgMTI4LCA4OCwgIDAsICAg
MCwgICA0LCAgIDEsICAgMCwgICA3LCAgIDEyOCwgMCwgICAwLCAgIDg1LCAgMTI5LCAwLCAgIDAs
DQorICAgIDAsICAgMTI4LCAwLCAgIDAsICAgMTcwLCAxMjgsIDEsICAgMCwgICAwLCAgIDIsICAg
MSwgICAwLCAgIDgsICAgMTI4LCAwLCAgIDAsICAgODUsICAxMjgsIDEsDQorICAgIDAsICAgMCwg
ICAyLCAgIDAsICAgOCwgICAxNSwgIDEyOCwgMSwgICAwLCAgIDIyOCwgMTI4LCAyNTUsIDI1NSwg
MCwgICAwfTsNCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9zdGFuZGFyZHZzLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVy
cy9jb21waWxlZC9zdGFuZGFyZHZzLmgKaW5kZXggYTgzMDUwZDhjMmUuLjM1MGIyZWIzY2I2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9zdGFuZGFyZHZzLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvY29tcGls
ZWQvc3RhbmRhcmR2cy5oCkBAIC01LDYyICs1LDQyIEBACiAvLyBQYXJhbWV0ZXJzOg0KIC8vDQog
Ly8gICBmbG9hdDQgaGFsZlBpeGVsU2l6ZTsNCisvLyAgIGZsb2F0NCB0ZXhjb29yZE9mZnNldDsN
CiAvLw0KIC8vDQogLy8gUmVnaXN0ZXJzOg0KIC8vDQotLy8gICBOYW1lICAgICAgICAgIFJlZyAg
IFNpemUNCi0vLyAgIC0tLS0tLS0tLS0tLS0gLS0tLS0gLS0tLQ0KLS8vICAgaGFsZlBpeGVsU2l6
ZSBjMCAgICAgICAxDQorLy8gICBOYW1lICAgICAgICAgICBSZWcgICBTaXplDQorLy8gICAtLS0t
LS0tLS0tLS0tLSAtLS0tLSAtLS0tDQorLy8gICBoYWxmUGl4ZWxTaXplICBjMCAgICAgICAxDQor
Ly8gICB0ZXhjb29yZE9mZnNldCBjMSAgICAgICAxDQogLy8NCiANCiAgICAgdnNfMl8wDQotICAg
IGRlZiBjMSwgMC41LCAtMC41LCAxLCAwDQorICAgIGRlZiBjMiwgMC41LCAtMC41LCAxLCAwDQog
ICAgIGRjbF9wb3NpdGlvbiB2MA0KICAgICBhZGQgb1BvcywgdjAsIGMwDQotICAgIG1hZCBvVDAs
IHYwLCBjMS54eXp6LCBjMS54eHd3DQorICAgIG1hZCByMCwgdjAsIGMyLnh5enosIGMyLnh4d3cN
CisgICAgbW92IG9UMC56dywgcjANCisgICAgbWFkIG9UMC54eSwgcjAsIGMxLnp3encsIGMxDQog
DQotLy8gYXBwcm94aW1hdGVseSAyIGluc3RydWN0aW9uIHNsb3RzIHVzZWQNCisvLyBhcHByb3hp
bWF0ZWx5IDQgaW5zdHJ1Y3Rpb24gc2xvdHMgdXNlZA0KICNlbmRpZg0KIA0KLWNvbnN0IEJZVEUg
Z192czIwX3N0YW5kYXJkdnNbXSA9DQotew0KLSAgICAgIDAsICAgMiwgMjU0LCAyNTUsIDI1NCwg
MjU1LCANCi0gICAgIDM2LCAgIDAsICA2NywgIDg0LCAgNjUsICA2NiwgDQotICAgICAyOCwgICAw
LCAgIDAsICAgMCwgIDg3LCAgIDAsIA0KLSAgICAgIDAsICAgMCwgICAwLCAgIDIsIDI1NCwgMjU1
LCANCi0gICAgICAxLCAgIDAsICAgMCwgICAwLCAgMjgsICAgMCwgDQotICAgICAgMCwgICAwLCAg
IDAsICAgMSwgICAwLCAgIDAsIA0KLSAgICAgODAsICAgMCwgICAwLCAgIDAsICA0OCwgICAwLCAN
Ci0gICAgICAwLCAgIDAsICAgMiwgICAwLCAgIDAsICAgMCwgDQotICAgICAgMSwgICAwLCAgIDAs
ICAgMCwgIDY0LCAgIDAsIA0KLSAgICAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCANCi0g
ICAgMTA0LCAgOTcsIDEwOCwgMTAyLCAgODAsIDEwNSwgDQotICAgIDEyMCwgMTAxLCAxMDgsICA4
MywgMTA1LCAxMjIsIA0KLSAgICAxMDEsICAgMCwgMTcxLCAxNzEsICAgMSwgICAwLCANCi0gICAg
ICAzLCAgIDAsICAgMSwgICAwLCAgIDQsICAgMCwgDQotICAgICAgMSwgICAwLCAgIDAsICAgMCwg
ICAwLCAgIDAsIA0KLSAgICAgIDAsICAgMCwgMTE4LCAxMTUsICA5NSwgIDUwLCANCi0gICAgIDk1
LCAgNDgsICAgMCwgIDc3LCAxMDUsICA5OSwgDQotICAgIDExNCwgMTExLCAxMTUsIDExMSwgMTAy
LCAxMTYsIA0KLSAgICAgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgIDcyLCANCi0gICAgIDc2LCAg
ODMsICA3NiwgIDMyLCAgODMsIDEwNCwgDQotICAgICA5NywgMTAwLCAxMDEsIDExNCwgIDMyLCAg
NjcsIA0KLSAgICAxMTEsIDEwOSwgMTEyLCAxMDUsIDEwOCwgMTAxLCANCi0gICAgMTE0LCAgMzIs
ICA1NCwgIDQ2LCAgNTEsICA0NiwgDQotICAgICA1NywgIDU0LCAgNDgsICA0OCwgIDQ2LCAgNDks
IA0KLSAgICAgNTQsICA1MSwgIDU2LCAgNTIsICAgMCwgMTcxLCANCi0gICAgMTcxLCAxNzEsICA4
MSwgICAwLCAgIDAsICAgNSwgDQotICAgICAgMSwgICAwLCAgMTUsIDE2MCwgICAwLCAgIDAsIA0K
LSAgICAgIDAsICA2MywgICAwLCAgIDAsICAgMCwgMTkxLCANCi0gICAgICAwLCAgIDAsIDEyOCwg
IDYzLCAgIDAsICAgMCwgDQotICAgICAgMCwgICAwLCAgMzEsICAgMCwgICAwLCAgIDIsIA0KLSAg
ICAgIDAsICAgMCwgICAwLCAxMjgsICAgMCwgICAwLCANCi0gICAgIDE1LCAxNDQsICAgMiwgICAw
LCAgIDAsICAgMywgDQotICAgICAgMCwgICAwLCAgMTUsIDE5MiwgICAwLCAgIDAsIA0KLSAgICAy
MjgsIDE0NCwgICAwLCAgIDAsIDIyOCwgMTYwLCANCi0gICAgICA0LCAgIDAsICAgMCwgICA0LCAg
IDAsICAgMCwgDQotICAgICAxNSwgMjI0LCAgIDAsICAgMCwgMjI4LCAxNDQsIA0KLSAgICAgIDEs
ICAgMCwgMTY0LCAxNjAsICAgMSwgICAwLCANCi0gICAgMjQwLCAxNjAsIDI1NSwgMjU1LCAgIDAs
ICAgMA0KLX07DQorY29uc3QgQllURSBnX3ZzMjBfc3RhbmRhcmR2c1tdID0gew0KKyAgICAwLCAg
IDIsICAgMjU0LCAyNTUsIDI1NCwgMjU1LCA0NCwgIDAsICAgNjcsICA4NCwgIDY1LCAgNjYsICAy
OCwgIDAsICAgMCwgICAwLCAgIDEyMiwgMCwgICAwLA0KKyAgICAwLCAgIDAsICAgMiwgICAyNTQs
IDI1NSwgMiwgICAwLCAgIDAsICAgMCwgICAyOCwgIDAsICAgMCwgICAwLCAgIDAsICAgMSwgICAw
LCAgIDAsICAgMTE1LCAwLA0KKyAgICAwLCAgIDAsICAgNjgsICAwLCAgIDAsICAgMCwgICAyLCAg
IDAsICAgMCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgODQsICAwLCAgIDAsICAgMCwgICAw
LA0KKyAgICAwLCAgIDAsICAgMCwgICAxMDAsIDAsICAgMCwgICAwLCAgIDIsICAgMCwgICAxLCAg
IDAsICAgMSwgICAwLCAgIDAsICAgMCwgICA4NCwgIDAsICAgMCwgICAwLA0KKyAgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDEwNCwgOTcsICAxMDgsIDEwMiwgODAsICAxMDUsIDEyMCwgMTAxLCAxMDgs
IDgzLCAgMTA1LCAxMjIsIDEwMSwgMCwgICAxNzEsDQorICAgIDE3MSwgMSwgICAwLCAgIDMsICAg
MCwgICAxLCAgIDAsICAgNCwgICAwLCAgIDEsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAxMTYsIDEwMSwNCisgICAgMTIwLCA5OSwgIDExMSwgMTExLCAxMTQsIDEwMCwgNzks
ICAxMDIsIDEwMiwgMTE1LCAxMDEsIDExNiwgMCwgICAxMTgsIDExNSwgOTUsICA1MCwgIDk1LCAg
NDgsDQorICAgIDAsICAgNzcsICAxMDUsIDk5LCAgMTE0LCAxMTEsIDExNSwgMTExLCAxMDIsIDEx
NiwgMzIsICA0MCwgIDgyLCAgNDEsICAzMiwgIDcyLCAgNzYsICA4MywgIDc2LA0KKyAgICAzMiwg
IDgzLCAgMTA0LCA5NywgIDEwMCwgMTAxLCAxMTQsIDMyLCAgNjcsICAxMTEsIDEwOSwgMTEyLCAx
MDUsIDEwOCwgMTAxLCAxMTQsIDMyLCAgNTQsICA0NiwNCisgICAgNTEsICA0NiwgIDU3LCAgNTQs
ICA0OCwgIDQ4LCAgNDYsICA0OSwgIDU0LCAgNTEsICA1NiwgIDUyLCAgMCwgICA4MSwgIDAsICAg
MCwgICA1LCAgIDIsICAgMCwNCisgICAgMTUsICAxNjAsIDAsICAgMCwgICAwLCAgIDYzLCAgMCwg
ICAwLCAgIDAsICAgMTkxLCAwLCAgIDAsICAgMTI4LCA2MywgIDAsICAgMCwgICAwLCAgIDAsICAg
MzEsDQorICAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwgICAwLCAgIDEyOCwgMCwgICAwLCAgIDE1
LCAgMTQ0LCAyLCAgIDAsICAgMCwgICAzLCAgIDAsICAgMCwgICAxNSwgIDE5MiwNCisgICAgMCwg
ICAwLCAgIDIyOCwgMTQ0LCAwLCAgIDAsICAgMjI4LCAxNjAsIDQsICAgMCwgICAwLCAgIDQsICAg
MCwgICAwLCAgIDE1LCAgMTI4LCAwLCAgIDAsICAgMjI4LA0KKyAgICAxNDQsIDIsICAgMCwgICAx
NjQsIDE2MCwgMiwgICAwLCAgIDI0MCwgMTYwLCAxLCAgIDAsICAgMCwgICAyLCAgIDAsICAgMCwg
ICAxMiwgIDIyNCwgMCwgICAwLA0KKyAgICAyMjgsIDEyOCwgNCwgICAwLCAgIDAsICAgNCwgICAw
LCAgIDAsICAgMywgICAyMjQsIDAsICAgMCwgICAyMjgsIDEyOCwgMSwgICAwLCAgIDIzOCwgMTYw
LCAxLA0KKyAgICAwLCAgIDIyOCwgMTYwLCAyNTUsIDI1NSwgMCwgICAwfTsNCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkv
c2hhZGVycy9nZW5lcmF0ZV9zaGFkZXJzLmJhdCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2dlbmVyYXRlX3NoYWRlcnMuYmF0
CmluZGV4IDE5YTk5YmE5MTQ5Li5kMzIwZTI3NjIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvZ2VuZXJh
dGVfc2hhZGVycy5iYXQKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2Q5L3NoYWRlcnMvZ2VuZXJhdGVfc2hhZGVycy5iYXQKQEAgLTIxLDEw
ICsyMSwxMyBAQCBpZiAiJTEiID09ICJyZWxlYXNlIiAoCiANCiA6OiAgICAgICAgICAgICAgfCBJ
bnB1dCBmaWxlICAgICAgICAgIHwgRW50cnkgcG9pbnQgICAgICAgICAgIHwgVHlwZSB8IE91dHB1
dCBmaWxlICAgICAgICAgICAgICAgICAgICAgICAgfCBEZWJ1ZyB8DQogY2FsbDpCdWlsZFNoYWRl
ciBCbGl0LnZzICAgICAgICAgICAgICAgc3RhbmRhcmR2cyAgICAgICAgICAgICAgdnNfMl8wIGNv
bXBpbGVkXHN0YW5kYXJkdnMuaCAgICAgICAgICAgICAgICAlZGVidWclDQotY2FsbDpCdWlsZFNo
YWRlciBCbGl0LnZzICAgICAgICAgICAgICAgZmxpcHl2cyAgICAgICAgICAgICAgICAgdnNfMl8w
IGNvbXBpbGVkXGZsaXB5dnMuaCAgICAgICAgICAgICAgICAgICAlZGVidWclDQogY2FsbDpCdWls
ZFNoYWRlciBCbGl0LnBzICAgICAgICAgICAgICAgcGFzc3Rocm91Z2hwcyAgICAgICAgICAgcHNf
Ml8wIGNvbXBpbGVkXHBhc3N0aHJvdWdocHMuaCAgICAgICAgICAgICAlZGVidWclDQogY2FsbDpC
dWlsZFNoYWRlciBCbGl0LnBzICAgICAgICAgICAgICAgbHVtaW5hbmNlcHMgICAgICAgICAgICAg
cHNfMl8wIGNvbXBpbGVkXGx1bWluYW5jZXBzLmggICAgICAgICAgICAgICAlZGVidWclDQorY2Fs
bDpCdWlsZFNoYWRlciBCbGl0LnBzICAgICAgICAgICAgICAgbHVtaW5hbmNlcHJlbXVsdHBzICAg
ICAgcHNfMl8wIGNvbXBpbGVkXGx1bWluYW5jZXByZW11bHRwcy5oICAgICAgICAlZGVidWclDQor
Y2FsbDpCdWlsZFNoYWRlciBCbGl0LnBzICAgICAgICAgICAgICAgbHVtaW5hbmNldW5tdWx0cHMg
ICAgICAgcHNfMl8wIGNvbXBpbGVkXGx1bWluYW5jZXVubXVsdHBzLmggICAgICAgICAlZGVidWcl
DQogY2FsbDpCdWlsZFNoYWRlciBCbGl0LnBzICAgICAgICAgICAgICAgY29tcG9uZW50bWFza3Bz
ICAgICAgICAgcHNfMl8wIGNvbXBpbGVkXGNvbXBvbmVudG1hc2twcy5oICAgICAgICAgICAlZGVi
dWclDQorY2FsbDpCdWlsZFNoYWRlciBCbGl0LnBzICAgICAgICAgICAgICAgY29tcG9uZW50bWFz
a3ByZW11bHRwcyAgcHNfMl8wIGNvbXBpbGVkXGNvbXBvbmVudG1hc2twcmVtdWx0cHMuaCAgICAl
ZGVidWclDQorY2FsbDpCdWlsZFNoYWRlciBCbGl0LnBzICAgICAgICAgICAgICAgY29tcG9uZW50
bWFza3VubXVsdHBzICAgcHNfMl8wIGNvbXBpbGVkXGNvbXBvbmVudG1hc2t1bm11bHRwcy5oICAg
ICAlZGVidWclDQogDQogZWNoby4NCiANCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1hdHV0aWxzRDNELmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1hdHV0aWxzRDNE
LmgKaW5kZXggNDg5M2JlYjlhZjIuLmEyNDVhMDQzMmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Zvcm1hdHV0aWxzRDNELmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9m
b3JtYXR1dGlsc0QzRC5oCkBAIC0yNCw5ICsyNCw2IEBAIHN0cnVjdCBGb3JtYXRUeXBlOwogCiBu
YW1lc3BhY2UgcngKIHsKLXR5cGVkZWYgdm9pZCAoKkluaXRpYWxpemVUZXh0dXJlRGF0YUZ1bmN0
aW9uKShzaXplX3Qgd2lkdGgsIHNpemVfdCBoZWlnaHQsIHNpemVfdCBkZXB0aCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpvdXRwdXQsIHNp
emVfdCBvdXRwdXRSb3dQaXRjaCwgc2l6ZV90IG91dHB1dERlcHRoUGl0Y2gpOwotCiB0eXBlZGVm
IHZvaWQgKCpWZXJ0ZXhDb3B5RnVuY3Rpb24pKGNvbnN0IHVpbnQ4X3QgKmlucHV0LCBzaXplX3Qg
c3RyaWRlLCBzaXplX3QgY291bnQsIHVpbnQ4X3QgKm91dHB1dCk7CiAKIGVudW0gVmVydGV4Q29u
dmVyc2lvblR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9kcml2ZXJfdXRpbHMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2RyaXZlcl91dGlscy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQ5N2I4ZTdjMjJhCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2RyaXZlcl91dGlscy5j
cHAKQEAgLTAsMCArMSwxMjAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBkcml2ZXJfdXRpbHMuaCA6
IHByb3ZpZGVzIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgY3VycmVudCBkcml2ZXIuCisKKyNpbmNs
dWRlIDxhbGdvcml0aG0+CisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kcml2ZXJfdXRp
bHMuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisvLyBJbnRlbAorLy8gUmVmZXJlbmNlZCBmcm9tIGh0
dHBzOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvdmFhcGkvaW50ZWwtZHJpdmVyL3RyZWUvc3JjL2k5
NjVfcGNpaWRzLmgKK25hbWVzcGFjZQoreworLy8gZ2VuNworY29uc3QgdWludDMyX3QgSGFzd2Vs
bFtdID0geworICAgIDB4MDQwMiwgMHgwNDA2LCAweDA0MEEsIDB4MDQwQiwgMHgwNDBFLCAweDBD
MDIsIDB4MEMwNiwgMHgwQzBBLCAweDBDMEIsIDB4MEMwRSwKKyAgICAweDBBMDIsIDB4MEEwNiwg
MHgwQTBBLCAweDBBMEIsIDB4MEEwRSwgMHgwRDAyLCAweDBEMDYsIDB4MEQwQSwgMHgwRDBCLCAw
eDBEMEUsICAvLyBoc3dfZ3QxCisgICAgMHgwNDEyLCAweDA0MTYsIDB4MDQxQSwgMHgwNDFCLCAw
eDA0MUUsIDB4MEMxMiwgMHgwQzE2LCAweDBDMUEsIDB4MEMxQiwgMHgwQzFFLAorICAgIDB4MEEx
MiwgMHgwQTE2LCAweDBBMUEsIDB4MEExQiwgMHgwQTFFLCAweDBEMTIsIDB4MEQxNiwgMHgwRDFB
LCAweDBEMUIsIDB4MEQxRSwgIC8vIGhzd19ndDIKKyAgICAweDA0MjIsIDB4MDQyNiwgMHgwNDJB
LCAweDA0MkIsIDB4MDQyRSwgMHgwQzIyLCAweDBDMjYsIDB4MEMyQSwgMHgwQzJCLCAweDBDMkUs
CisgICAgMHgwQTIyLCAweDBBMjYsIDB4MEEyQSwgMHgwQTJCLCAweDBBMkUsIDB4MEQyMiwgMHgw
RDI2LCAweDBEMkEsIDB4MEQyQiwgMHgwRDJFICAvLyBoc3dfZ3QzCit9OworCisvLyBnZW44Citj
b25zdCB1aW50MzJfdCBCcm9hZHdlbGxbXSA9IHsweDE2MDIsIDB4MTYwNiwgMHgxNjBBLCAweDE2
MEIsIDB4MTYwRCwgMHgxNjBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxNjEy
LCAweDE2MTYsIDB4MTYxQSwgMHgxNjFCLCAweDE2MUQsIDB4MTYxRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4MTYyMiwgMHgxNjI2LCAweDE2MkEsIDB4MTYyQiwgMHgxNjJELCAw
eDE2MkV9OworCitjb25zdCB1aW50MzJfdCBDaGVycnlWaWV3W10gPSB7MHgyMkIwLCAweDIyQjEs
IDB4MjJCMiwgMHgyMkIzfTsKKworLy8gZ2VuOQorY29uc3QgdWludDMyX3QgU2t5bGFrZVtdID0g
ezB4MTkwMiwgMHgxOTA2LCAweDE5MEEsIDB4MTkwQiwgMHgxOTBFLCAweDE5MTIsIDB4MTkxMywg
MHgxOTE1LCAweDE5MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxOTE3LCAweDE5
MUEsIDB4MTkxQiwgMHgxOTFELCAweDE5MUUsIDB4MTkyMSwgMHgxOTIzLCAweDE5MjYsIDB4MTky
NywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5MkEsIDB4MTkyQiwgMHgxOTJELCAw
eDE5MzIsIDB4MTkzQSwgMHgxOTNCLCAweDE5M0R9OworCitjb25zdCB1aW50MzJfdCBCcm94dG9u
W10gPSB7MHgwQTg0LCAweDFBODQsIDB4MUE4NSwgMHg1QTg0LCAweDVBODV9OworCisvLyBnZW45
cDUKK2NvbnN0IHVpbnQzMl90IEthYnlsYWtlW10gPSB7MHg1OTE2LCAweDU5MTMsIDB4NTkwNiwg
MHg1OTI2LCAweDU5MjEsIDB4NTkxNSwgMHg1OTBFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDU5MUUsIDB4NTkxMiwgMHg1OTE3LCAweDU5MDIsIDB4NTkxQiwgMHg1OTNCLCAweDU5
MEIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NTkxQSwgMHg1OTBBLCAweDU5MUQs
IDB4NTkwOCwgMHg1OTIzLCAweDU5Mjd9OworCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisK
K0ludGVsRHJpdmVyVmVyc2lvbjo6SW50ZWxEcml2ZXJWZXJzaW9uKHVpbnQxNl90IGxhc3RQYXJ0
KSA6IG1WZXJzaW9uUGFydChsYXN0UGFydCkKK3sKK30KKworYm9vbCBJbnRlbERyaXZlclZlcnNp
b246Om9wZXJhdG9yPT0oY29uc3QgSW50ZWxEcml2ZXJWZXJzaW9uICZ2ZXJzaW9uKQoreworICAg
IHJldHVybiBtVmVyc2lvblBhcnQgPT0gdmVyc2lvbi5tVmVyc2lvblBhcnQ7Cit9CisKK2Jvb2wg
SW50ZWxEcml2ZXJWZXJzaW9uOjpvcGVyYXRvciE9KGNvbnN0IEludGVsRHJpdmVyVmVyc2lvbiAm
dmVyc2lvbikKK3sKKyAgICByZXR1cm4gISgqdGhpcyA9PSB2ZXJzaW9uKTsKK30KKworYm9vbCBJ
bnRlbERyaXZlclZlcnNpb246Om9wZXJhdG9yPChjb25zdCBJbnRlbERyaXZlclZlcnNpb24gJnZl
cnNpb24pCit7CisgICAgLy8gU2VlIGh0dHA6Ly93d3cuaW50ZWwuY29tL2NvbnRlbnQvd3d3L3Vz
L2VuL3N1cHBvcnQvZ3JhcGhpY3MtZHJpdmVycy8wMDAwMDU2NTQuaHRtbCB0bworICAgIC8vIHVu
ZGVyc3RhbmQgdGhlIEludGVsIGdyYXBoaWNzIGRyaXZlciB2ZXJzaW9uIG51bWJlciBvbiBXaW5k
b3dzLgorICAgIC8vIG1WZXJzaW9uUGFydDEgY2hhbmdlcyB3aXRoIE9TIHZlcnNpb24uIG1WZXJz
aW9uUGFydDIgY2hhbmdlcyB3aXRoIERpcmVjdFggdmVyc2lvbi4KKyAgICAvLyBtVmVyc2lvblBh
cnQzIHN0YW5kcyBmb3IgcmVsZWFzZSB5ZWFyLiBtVmVyc2lvblBhcnQ0IGlzIGRyaXZlciBzcGVj
aWZpYyB1bmlxdWUgdmVyc2lvbgorICAgIC8vIG51bWJlci4KKyAgICAvLyBGb3IgZXhhbXBsZTog
SW50ZWwgZHJpdmVyIHZlcnNpb24gJzIwLjE5LjE1LjQ1MzknCisgICAgLy8gICAgICAgICAgICAg
IDIwICAgLT4gd2luZG93cyAxMCBkcml2ZXIKKyAgICAvLyAgICAgICAgICAgICAgMTkgICAtPiBE
aXJlY3RYIDEyIGZpcnN0IHZlcnNpb24oMTIuMCkgc3VwcG9ydGVkCisgICAgLy8gICAgICAgICAg
ICAgIDE1ICAgLT4gRHJpdmVyIHJlbGVhc2VkIGluIDIwMTUKKyAgICAvLyAgICAgICAgICAgICAg
NDUzOSAtPiBEcml2ZXIgc3BlY2lmaWMgdW5pcXVlIHZlcnNpb24gbnVtYmVyCisgICAgLy8gRm9y
IGxpbnV4LCBJbnRlbCBncmFwaGljcyBkcml2ZXIgdmVyc2lvbiBpcyB0aGUgbWVzYSB2ZXJzaW9u
LiBUaGUgdmVyc2lvbiBudW1iZXIgaGFzIHRocmVlCisgICAgLy8gcGFydHM6IG1ham9yIHJldmlz
aW9uLCBtaW5vciByZXZpc2lvbiwgcmVsZWFzZSBudW1iZXIuIFNvLCBmb3IgbGludXgsIHdlIG5l
ZWQgdG8gY29tcGFyZQorICAgIC8vIHRocmVlIHBhcnRzLgorICAgIC8vIEN1cnJlbnRseSwgaXQn
cyBvbmx5IHVzZWQgaW4gd2luZG93cy4gU28sIGNoZWNraW5nIHRoZSBsYXN0IHBhcnQgaXMgZW5v
dWdoLiBPbmNlIGl0J3MgbmVlZGVkCisgICAgLy8gaW4gb3RoZXIgcGxhdGZvcm1zLCBpdCdzIGVh
c3kgdG8gYmUgZXh0ZW5kZWQuCisgICAgcmV0dXJuIG1WZXJzaW9uUGFydCA8IHZlcnNpb24ubVZl
cnNpb25QYXJ0OworfQorCitib29sIEludGVsRHJpdmVyVmVyc2lvbjo6b3BlcmF0b3I+PShjb25z
dCBJbnRlbERyaXZlclZlcnNpb24gJnZlcnNpb24pCit7CisgICAgcmV0dXJuICEoKnRoaXMgPCB2
ZXJzaW9uKTsKK30KKworYm9vbCBJc0hhc3dlbGwodWludDMyX3QgRGV2aWNlSWQpCit7CisgICAg
cmV0dXJuIHN0ZDo6ZmluZChzdGQ6OmJlZ2luKEhhc3dlbGwpLCBzdGQ6OmVuZChIYXN3ZWxsKSwg
RGV2aWNlSWQpICE9IHN0ZDo6ZW5kKEhhc3dlbGwpOworfQorCitib29sIElzQnJvYWR3ZWxsKHVp
bnQzMl90IERldmljZUlkKQoreworICAgIHJldHVybiBzdGQ6OmZpbmQoc3RkOjpiZWdpbihCcm9h
ZHdlbGwpLCBzdGQ6OmVuZChCcm9hZHdlbGwpLCBEZXZpY2VJZCkgIT0gc3RkOjplbmQoQnJvYWR3
ZWxsKTsKK30KKworYm9vbCBJc0NoZXJyeVZpZXcodWludDMyX3QgRGV2aWNlSWQpCit7CisgICAg
cmV0dXJuIHN0ZDo6ZmluZChzdGQ6OmJlZ2luKENoZXJyeVZpZXcpLCBzdGQ6OmVuZChDaGVycnlW
aWV3KSwgRGV2aWNlSWQpICE9CisgICAgICAgICAgIHN0ZDo6ZW5kKENoZXJyeVZpZXcpOworfQor
Citib29sIElzU2t5bGFrZSh1aW50MzJfdCBEZXZpY2VJZCkKK3sKKyAgICByZXR1cm4gc3RkOjpm
aW5kKHN0ZDo6YmVnaW4oU2t5bGFrZSksIHN0ZDo6ZW5kKFNreWxha2UpLCBEZXZpY2VJZCkgIT0g
c3RkOjplbmQoU2t5bGFrZSk7Cit9CisKK2Jvb2wgSXNCcm94dG9uKHVpbnQzMl90IERldmljZUlk
KQoreworICAgIHJldHVybiBzdGQ6OmZpbmQoc3RkOjpiZWdpbihCcm94dG9uKSwgc3RkOjplbmQo
QnJveHRvbiksIERldmljZUlkKSAhPSBzdGQ6OmVuZChCcm94dG9uKTsKK30KKworYm9vbCBJc0th
YnlsYWtlKHVpbnQzMl90IERldmljZUlkKQoreworICAgIHJldHVybiBzdGQ6OmZpbmQoc3RkOjpi
ZWdpbihLYWJ5bGFrZSksIHN0ZDo6ZW5kKEthYnlsYWtlKSwgRGV2aWNlSWQpICE9IHN0ZDo6ZW5k
KEthYnlsYWtlKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHJ4ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2RyaXZlcl91dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2RyaXZlcl91dGlscy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwLi42MmJkYzUwMmZjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9kcml2ZXJfdXRpbHMuaApAQCAtMCww
ICsxLDczIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gZHJpdmVyX3V0aWxzLmggOiBwcm92aWRlcyBt
b3JlIGluZm9ybWF0aW9uIGFib3V0IGN1cnJlbnQgZHJpdmVyLgorCisjaWZuZGVmIExJQkFOR0xF
X1JFTkRFUkVSX0RSSVZFUl9VVElMU19IXworI2RlZmluZSBMSUJBTkdMRV9SRU5ERVJFUl9EUklW
RVJfVVRJTFNfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKKworbmFtZXNw
YWNlIHJ4Cit7CisKK2VudW0gVmVuZG9ySUQgOiB1aW50MzJfdAoreworICAgIFZFTkRPUl9JRF9V
TktOT1dOID0gMHgwLAorICAgIFZFTkRPUl9JRF9BTUQgICAgID0gMHgxMDAyLAorICAgIFZFTkRP
Ul9JRF9JTlRFTCAgID0gMHg4MDg2LAorICAgIFZFTkRPUl9JRF9OVklESUEgID0gMHgxMERFLAor
ICAgIC8vIFRoaXMgaXMgUXVhbGNvbW0gUENJIFZlbmRvciBJRC4KKyAgICAvLyBBbmRyb2lkIGRv
ZXNuJ3QgaGF2ZSBhIFBDSSBidXMsIGJ1dCBhbGwgd2UgbmVlZCBpcyBhIHVuaXF1ZSBpZC4KKyAg
ICBWRU5ET1JfSURfUVVBTENPTU0gPSAweDUxNDMsCit9OworCitpbmxpbmUgYm9vbCBJc0FNRCh1
aW50MzJfdCB2ZW5kb3JfaWQpCit7CisgICAgcmV0dXJuIHZlbmRvcl9pZCA9PSBWRU5ET1JfSURf
QU1EOworfQorCitpbmxpbmUgYm9vbCBJc0ludGVsKHVpbnQzMl90IHZlbmRvcl9pZCkKK3sKKyAg
ICByZXR1cm4gdmVuZG9yX2lkID09IFZFTkRPUl9JRF9JTlRFTDsKK30KKworaW5saW5lIGJvb2wg
SXNOdmlkaWEodWludDMyX3QgdmVuZG9yX2lkKQoreworICAgIHJldHVybiB2ZW5kb3JfaWQgPT0g
VkVORE9SX0lEX05WSURJQTsKK30KKworaW5saW5lIGJvb2wgSXNRdWFsY29tbSh1aW50MzJfdCB2
ZW5kb3JfaWQpCit7CisgICAgcmV0dXJuIHZlbmRvcl9pZCA9PSBWRU5ET1JfSURfUVVBTENPTU07
Cit9CisKKy8vIEludGVsCitjbGFzcyBJbnRlbERyaXZlclZlcnNpb24KK3sKKyAgcHVibGljOgor
ICAgIC8vIEN1cnJlbnRseSwgV2Ugb25seSBwcm92aWRlIHRoZSBjb25zdHJ1Y3RvciB3aXRoIG9u
ZSBwYXJhbWV0ZXIuIEl0IG1haW5seSB1c2VkIGluIEludGVsCisgICAgLy8gdmVyc2lvbiBudW1i
ZXIgb24gd2luZG93cy4gSWYgeW91IHdhbnQgdG8gdXNlIHRoaXMgY2xhc3Mgb24gb3RoZXIgcGxh
dGZvcm1zLCBpdCdzIGVhc3kgdG8KKyAgICAvLyBiZSBleHRlbmRlZC4KKyAgICBJbnRlbERyaXZl
clZlcnNpb24odWludDE2X3QgbGFzdFBhcnQpOworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBJ
bnRlbERyaXZlclZlcnNpb24gJik7CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEludGVsRHJp
dmVyVmVyc2lvbiAmKTsKKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBJbnRlbERyaXZlclZlcnNp
b24gJik7CisgICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IEludGVsRHJpdmVyVmVyc2lvbiAmKTsK
KworICBwcml2YXRlOgorICAgIHVpbnQxNl90IG1WZXJzaW9uUGFydDsKK307CisKK2Jvb2wgSXNI
YXN3ZWxsKHVpbnQzMl90IERldmljZUlkKTsKK2Jvb2wgSXNCcm9hZHdlbGwodWludDMyX3QgRGV2
aWNlSWQpOworYm9vbCBJc0NoZXJyeVZpZXcodWludDMyX3QgRGV2aWNlSWQpOworYm9vbCBJc1Nr
eWxha2UodWludDMyX3QgRGV2aWNlSWQpOworYm9vbCBJc0Jyb3h0b24odWludDMyX3QgRGV2aWNl
SWQpOworYm9vbCBJc0thYnlsYWtlKHVpbnQzMl90IERldmljZUlkKTsKKworfSAgLy8gbmFtZXNw
YWNlIHJ4CisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0RSSVZFUl9VVElMU19IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dl
bl9hbmdsZV9mb3JtYXRfdGFibGUucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2VuX2FuZ2xlX2Zvcm1hdF90YWJsZS5weQppbmRleCAwYzYyMzI0ZTk3
MC4uZjQ3YTAyNDVkY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nZW5fYW5nbGVfZm9ybWF0X3RhYmxlLnB5CisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nZW5fYW5nbGVfZm9ybWF0X3Rh
YmxlLnB5CkBAIC0xNiw3ICsxNiw3IEBAIGltcG9ydCByZQogaW1wb3J0IHN5cwogCiB0ZW1wbGF0
ZV9hdXRvZ2VuX2ggPSAiIiIvLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElULgotLy8gR2Vu
ZXJhdGVkIGJ5IGdlbl9hbmdsZV9mb3JtYXRfdGFibGUucHkgdXNpbmcgZGF0YSBmcm9tIGFuZ2xl
X2Zvcm1hdF9kYXRhLmpzb24KKy8vIEdlbmVyYXRlZCBieSB7c2NyaXB0X25hbWV9IHVzaW5nIGRh
dGEgZnJvbSB7ZGF0YV9zb3VyY2VfbmFtZX0KIC8vCiAvLyBDb3B5cmlnaHQge2NvcHlyaWdodF95
ZWFyfSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQpAQCAtMzUsOCArMzUsOCBAQCBlbnVtIGNsYXNzIEZvcm1hdDo6SUQKIH19
ICAvLyBuYW1lc3BhY2UgYW5nbGUKICIiIgogCi10ZW1wbGF0ZV9hdXRvZ2VuX2NwcCA9ICIiIi8v
IEdFTkVSQVRFRCBGSUxFIC0gRE8gTk9UIEVESVQuCi0vLyBHZW5lcmF0ZWQgYnkgZ2VuX2FuZ2xl
X2Zvcm1hdF90YWJsZS5weSB1c2luZyBkYXRhIGZyb20gYW5nbGVfZm9ybWF0X2RhdGEuanNvbgor
dGVtcGxhdGVfYXV0b2dlbl9pbmwgPSAiIiIvLyBHRU5FUkFURUQgRklMRSAtIERPIE5PVCBFRElU
LgorLy8gR2VuZXJhdGVkIGJ5IHtzY3JpcHRfbmFtZX0gdXNpbmcgZGF0YSBmcm9tIHtkYXRhX3Nv
dXJjZV9uYW1lfQogLy8KIC8vIENvcHlyaWdodCB7Y29weXJpZ2h0X3llYXJ9IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCkBA
IC01NCwyMSArNTQsMjEgQEAgdGVtcGxhdGVfYXV0b2dlbl9jcHAgPSAiIiIvLyBHRU5FUkFURUQg
RklMRSAtIERPIE5PVCBFRElULgogbmFtZXNwYWNlIGFuZ2xlCiB7ewogCitzdGF0aWMgY29uc3Rl
eHByIHJ4OjpGYXN0Q29weUZ1bmN0aW9uTWFwOjpFbnRyeSBCR1JBRW50cnkgPSB7e0dMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ29weUJHUkE4VG9SR0JBOH19Oworc3RhdGljIGNvbnN0
ZXhwciByeDo6RmFzdENvcHlGdW5jdGlvbk1hcCBCR1JBQ29weUZ1bmN0aW9ucyA9IHt7JkJHUkFF
bnRyeSwgMX19Oworc3RhdGljIGNvbnN0ZXhwciByeDo6RmFzdENvcHlGdW5jdGlvbk1hcCBOb0Nv
cHlGdW5jdGlvbnM7CisKK2NvbnN0ZXhwciBGb3JtYXQgZ19mb3JtYXRJbmZvVGFibGVbXSA9IHt7
CisgICAgLy8gY2xhbmctZm9ybWF0IG9mZgorICAgIHt7IEZvcm1hdDo6SUQ6Ok5PTkUsIEdMX05P
TkUsIEdMX05PTkUsIG51bGxwdHIsIE5vQ29weUZ1bmN0aW9ucywgbnVsbHB0ciwgR0xfTk9ORSwg
MCwgMCwgMCwgMCwgMCwgMCB9fSwKK3thbmdsZV9mb3JtYXRfaW5mb19jYXNlc30gICAgLy8gY2xh
bmctZm9ybWF0IG9uCit9fTsKKwogLy8gc3RhdGljCiBjb25zdCBGb3JtYXQgJkZvcm1hdDo6R2V0
KElEIGlkKQoge3sKLSAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgc3dpdGNoIChpZCkKLSAg
ICB7ewote2FuZ2xlX2Zvcm1hdF9pbmZvX2Nhc2VzfQotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH19Ci0gICAgLy8g
Y2xhbmctZm9ybWF0IG9uCi0KLSAgICBzdGF0aWMgY29uc3QgRm9ybWF0IG5vbmVJbmZvKElEOjpO
T05FLCBHTF9OT05FLCBHTF9OT05FLCBudWxscHRyLCBudWxscHRyLCBHTF9OT05FLCAwLCAwLCAw
LCAwLCAwLCAwKTsKLSAgICByZXR1cm4gbm9uZUluZm87CisgICAgcmV0dXJuIGdfZm9ybWF0SW5m
b1RhYmxlW3N0YXRpY19jYXN0PHNpemVfdD4oaWQpXTsKIH19CiAKIH19ICAvLyBuYW1lc3BhY2Ug
YW5nbGUKQEAgLTEyMyw1OSArMTIzLDkgQEAgZGVmIGdldF9jb2xvcl9yZWFkX2Z1bmN0aW9uKGFu
Z2xlX2Zvcm1hdCk6CiAgICAgfQogICAgIHJldHVybiAnUmVhZENvbG9yPCcgKyBjaGFubmVsX3N0
cnVjdCArICcsICcrIGNvbXBvbmVudF90eXBlX21hcFthbmdsZV9mb3JtYXRbJ2NvbXBvbmVudFR5
cGUnXV0gKyAnPicKIAotZm9ybWF0X2VudHJ5X3RlbXBsYXRlID0gIiIie3NwYWNlfXt7Ci17c3Bh
Y2V9ICAgIHN0YXRpYyBjb25zdCBGb3JtYXQgaW5mbyhJRDo6e2lkfSwKLXtzcGFjZX0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHtnbEludGVybmFsRm9ybWF0fSwKLXtzcGFjZX0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHtmYm9JbXBsZW1lbnRhdGlvbkludGVybmFsRm9ybWF0fSwK
LXtzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttaXBHZW5lcmF0aW9uRnVuY3Rp
b259LAote3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2NvbG9yUmVhZEZ1bmN0
aW9ufSwKLXtzcGFjZX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtuYW1lZENvbXBvbmVu
dFR5cGV9LAote3NwYWNlfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1J9LCB7R30sIHtC
fSwge0F9LCB7RH0sIHtTfSk7Ci17c3BhY2V9ICAgIHJldHVybiBpbmZvOwote3NwYWNlfX19Citm
b3JtYXRfZW50cnlfdGVtcGxhdGUgPSAiIiIgICAge3sgRm9ybWF0OjpJRDo6e2lkfSwge2dsSW50
ZXJuYWxGb3JtYXR9LCB7ZmJvSW1wbGVtZW50YXRpb25JbnRlcm5hbEZvcm1hdH0sIHttaXBHZW5l
cmF0aW9uRnVuY3Rpb259LCB7ZmFzdENvcHlGdW5jdGlvbnN9LCB7Y29sb3JSZWFkRnVuY3Rpb259
LCB7bmFtZWRDb21wb25lbnRUeXBlfSwge1J9LCB7R30sIHtCfSwge0F9LCB7RH0sIHtTfSB9fSwK
ICIiIgogCi1kZWYgZ2V0X2NvbXBvbmVudF90eXBlKGZvcm1hdF9pZCk6Ci0gICAgaWYgIlNOT1JN
IiBpbiBmb3JtYXRfaWQ6Ci0gICAgICAgIHJldHVybiAic25vcm0iCi0gICAgZWxpZiAiVU5PUk0i
IGluIGZvcm1hdF9pZDoKLSAgICAgICAgcmV0dXJuICJ1bm9ybSIKLSAgICBlbGlmICJGTE9BVCIg
aW4gZm9ybWF0X2lkOgotICAgICAgICByZXR1cm4gImZsb2F0IgotICAgIGVsaWYgIlVJTlQiIGlu
IGZvcm1hdF9pZDoKLSAgICAgICAgcmV0dXJuICJ1aW50IgotICAgIGVsaWYgIlNJTlQiIGluIGZv
cm1hdF9pZDoKLSAgICAgICAgcmV0dXJuICJpbnQiCi0gICAgZWxpZiBmb3JtYXRfaWQgPT0gIk5P
TkUiOgotICAgICAgICByZXR1cm4gIm5vbmUiCi0gICAgZWxpZiAiU1JHQiIgaW4gZm9ybWF0X2lk
OgotICAgICAgICByZXR1cm4gInVub3JtIgotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoIlVua25vd24gY29tcG9uZW50IHR5cGUgZm9yICIgKyBmb3JtYXRfaWQpCi0KLWRlZiBn
ZXRfY2hhbm5lbF90b2tlbnMoZm9ybWF0X2lkKToKLSAgICByID0gcmUuY29tcGlsZShyJyhbQUJE
R0xSU11bXGRdKyknKQotICAgIHJldHVybiBmaWx0ZXIoci5tYXRjaCwgci5zcGxpdChmb3JtYXRf
aWQpKQotCi1kZWYgZ2V0X2NoYW5uZWxzKGZvcm1hdF9pZCk6Ci0gICAgY2hhbm5lbHMgPSAnJwot
ICAgIHRva2VucyA9IGdldF9jaGFubmVsX3Rva2Vucyhmb3JtYXRfaWQpCi0gICAgaWYgbGVuKHRv
a2VucykgPT0gMDoKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICBmb3IgdG9rZW4gaW4gdG9rZW5z
OgotICAgICAgICBjaGFubmVscyArPSB0b2tlblswXS5sb3dlcigpCi0KLSAgICByZXR1cm4gY2hh
bm5lbHMKLQotZGVmIGdldF9iaXRzKGZvcm1hdF9pZCk6Ci0gICAgYml0cyA9IHt9Ci0gICAgdG9r
ZW5zID0gZ2V0X2NoYW5uZWxfdG9rZW5zKGZvcm1hdF9pZCkKLSAgICBpZiBsZW4odG9rZW5zKSA9
PSAwOgotICAgICAgICByZXR1cm4gTm9uZQotICAgIGZvciB0b2tlbiBpbiB0b2tlbnM6Ci0gICAg
ICAgIGJpdHNbdG9rZW5bMF1dID0gaW50KHRva2VuWzE6XSkKLSAgICByZXR1cm4gYml0cwotCiBk
ZWYgZ2V0X25hbWVkX2NvbXBvbmVudF90eXBlKGNvbXBvbmVudF90eXBlKToKICAgICBpZiBjb21w
b25lbnRfdHlwZSA9PSAic25vcm0iOgogICAgICAgICByZXR1cm4gIkdMX1NJR05FRF9OT1JNQUxJ
WkVEIgpAQCAtMTk3LDggKzE0Nyw4IEBAIGRlZiBqc29uX3RvX3RhYmxlX2RhdGEoZm9ybWF0X2lk
LCBqc29uLCBhbmdsZV90b19nbCk6CiAgICAgdGFibGVfZGF0YSA9ICIiCiAKICAgICBwYXJzZWQg
PSB7Ci0gICAgICAgICJzcGFjZSI6ICIgICAgICAgICIsCiAgICAgICAgICJpZCI6IGZvcm1hdF9p
ZCwKKyAgICAgICAgImZhc3RDb3B5RnVuY3Rpb25zIjogIk5vQ29weUZ1bmN0aW9ucyIsCiAgICAg
fQogCiAgICAgZm9yIGssIHYgaW4ganNvbi5pdGVyaXRlbXMoKToKQEAgLTIxMSwxMyArMTYxLDEz
IEBAIGRlZiBqc29uX3RvX3RhYmxlX2RhdGEoZm9ybWF0X2lkLCBqc29uLCBhbmdsZV90b19nbCk6
CiAgICAgICAgIHBhcnNlZFsiZmJvSW1wbGVtZW50YXRpb25JbnRlcm5hbEZvcm1hdCJdID0gcGFy
c2VkWyJnbEludGVybmFsRm9ybWF0Il0KIAogICAgIGlmICJjb21wb25lbnRUeXBlIiBub3QgaW4g
cGFyc2VkOgotICAgICAgICBwYXJzZWRbImNvbXBvbmVudFR5cGUiXSA9IGdldF9jb21wb25lbnRf
dHlwZShmb3JtYXRfaWQpCisgICAgICAgIHBhcnNlZFsiY29tcG9uZW50VHlwZSJdID0gYW5nbGVf
Zm9ybWF0LmdldF9jb21wb25lbnRfdHlwZShmb3JtYXRfaWQpCiAKICAgICBpZiAiY2hhbm5lbHMi
IG5vdCBpbiBwYXJzZWQ6Ci0gICAgICAgIHBhcnNlZFsiY2hhbm5lbHMiXSA9IGdldF9jaGFubmVs
cyhmb3JtYXRfaWQpCisgICAgICAgIHBhcnNlZFsiY2hhbm5lbHMiXSA9IGFuZ2xlX2Zvcm1hdC5n
ZXRfY2hhbm5lbHMoZm9ybWF0X2lkKQogCiAgICAgaWYgImJpdHMiIG5vdCBpbiBwYXJzZWQ6Ci0g
ICAgICAgIHBhcnNlZFsiYml0cyJdID0gZ2V0X2JpdHMoZm9ybWF0X2lkKQorICAgICAgICBwYXJz
ZWRbImJpdHMiXSA9IGFuZ2xlX2Zvcm1hdC5nZXRfYml0cyhmb3JtYXRfaWQpCiAKICAgICAjIERl
cml2ZWQgdmFsdWVzLgogICAgIHBhcnNlZFsibWlwR2VuZXJhdGlvbkZ1bmN0aW9uIl0gPSBnZXRf
bWlwX2dlbmVyYXRpb25fZnVuY3Rpb24ocGFyc2VkKQpAQCAtMjMxLDE0ICsxODEsMTcgQEAgZGVm
IGpzb25fdG9fdGFibGVfZGF0YShmb3JtYXRfaWQsIGpzb24sIGFuZ2xlX3RvX2dsKToKIAogICAg
IHBhcnNlZFsibmFtZWRDb21wb25lbnRUeXBlIl0gPSBnZXRfbmFtZWRfY29tcG9uZW50X3R5cGUo
cGFyc2VkWyJjb21wb25lbnRUeXBlIl0pCiAKKyAgICBpZiBmb3JtYXRfaWQgPT0gIkI4RzhSOEE4
X1VOT1JNIjoKKyAgICAgICAgcGFyc2VkWyJmYXN0Q29weUZ1bmN0aW9ucyJdID0gIkJHUkFDb3B5
RnVuY3Rpb25zIgorCiAgICAgcmV0dXJuIGZvcm1hdF9lbnRyeV90ZW1wbGF0ZS5mb3JtYXQoKipw
YXJzZWQpCiAKLWRlZiBwYXJzZV9qc29uX2ludG9fYW5nbGVfZm9ybWF0X3N3aXRjaF9zdHJpbmco
YWxsX2FuZ2xlLCBqc29uX2RhdGEsIGFuZ2xlX3RvX2dsKToKK2RlZiBwYXJzZV9hbmdsZV9mb3Jt
YXRfdGFibGUoYWxsX2FuZ2xlLCBqc29uX2RhdGEsIGFuZ2xlX3RvX2dsKToKICAgICB0YWJsZV9k
YXRhID0gJycKICAgICBmb3IgZm9ybWF0X2lkIGluIHNvcnRlZChhbGxfYW5nbGUpOgotICAgICAg
ICBmb3JtYXRfaW5mbyA9IGpzb25fZGF0YVtmb3JtYXRfaWRdIGlmIGZvcm1hdF9pZCBpbiBqc29u
X2RhdGEgZWxzZSB7fQotICAgICAgICB0YWJsZV9kYXRhICs9ICcgICAgICAgIGNhc2UgSUQ6Oicg
KyBmb3JtYXRfaWQgKyAnOlxuJwotICAgICAgICB0YWJsZV9kYXRhICs9IGpzb25fdG9fdGFibGVf
ZGF0YShmb3JtYXRfaWQsIGZvcm1hdF9pbmZvLCBhbmdsZV90b19nbCkKKyAgICAgICAgaWYgZm9y
bWF0X2lkICE9ICJOT05FIjoKKyAgICAgICAgICAgIGZvcm1hdF9pbmZvID0ganNvbl9kYXRhW2Zv
cm1hdF9pZF0gaWYgZm9ybWF0X2lkIGluIGpzb25fZGF0YSBlbHNlIHt9CisgICAgICAgICAgICB0
YWJsZV9kYXRhICs9IGpzb25fdG9fdGFibGVfZGF0YShmb3JtYXRfaWQsIGZvcm1hdF9pbmZvLCBh
bmdsZV90b19nbCkKIAogICAgIHJldHVybiB0YWJsZV9kYXRhCiAKQEAgLTI1MiwyMiArMjA1LDI3
IEBAIGRlZiBnZW5fZW51bV9zdHJpbmcoYWxsX2FuZ2xlKToKIAogZ2xfdG9fYW5nbGUgPSBhbmds
ZV9mb3JtYXQubG9hZF9mb3J3YXJkX3RhYmxlKCdhbmdsZV9mb3JtYXRfbWFwLmpzb24nKQogYW5n
bGVfdG9fZ2wgPSBhbmdsZV9mb3JtYXQubG9hZF9pbnZlcnNlX3RhYmxlKCdhbmdsZV9mb3JtYXRf
bWFwLmpzb24nKQotanNvbl9kYXRhID0gYW5nbGVfZm9ybWF0LmxvYWRfanNvbignYW5nbGVfZm9y
bWF0X2RhdGEuanNvbicpCitkYXRhX3NvdXJjZV9uYW1lID0gJ2FuZ2xlX2Zvcm1hdF9kYXRhLmpz
b24nCitqc29uX2RhdGEgPSBhbmdsZV9mb3JtYXQubG9hZF9qc29uKGRhdGFfc291cmNlX25hbWUp
CiBhbGxfYW5nbGUgPSBhbmdsZV90b19nbC5rZXlzKCkKIAotYW5nbGVfZm9ybWF0X2Nhc2VzID0g
cGFyc2VfanNvbl9pbnRvX2FuZ2xlX2Zvcm1hdF9zd2l0Y2hfc3RyaW5nKAorYW5nbGVfZm9ybWF0
X2Nhc2VzID0gcGFyc2VfYW5nbGVfZm9ybWF0X3RhYmxlKAogICAgIGFsbF9hbmdsZSwganNvbl9k
YXRhLCBhbmdsZV90b19nbCkKLW91dHB1dF9jcHAgPSB0ZW1wbGF0ZV9hdXRvZ2VuX2NwcC5mb3Jt
YXQoCi0gICAgY29weXJpZ2h0X3llYXI9ZGF0ZS50b2RheSgpLnllYXIsCi0gICAgYW5nbGVfZm9y
bWF0X2luZm9fY2FzZXM9YW5nbGVfZm9ybWF0X2Nhc2VzKQotd2l0aCBvcGVuKCdGb3JtYXRfYXV0
b2dlbi5jcHAnLCAnd3QnKSBhcyBvdXRfZmlsZToKK291dHB1dF9jcHAgPSB0ZW1wbGF0ZV9hdXRv
Z2VuX2lubC5mb3JtYXQoCisgICAgc2NyaXB0X25hbWUgPSBzeXMuYXJndlswXSwKKyAgICBjb3B5
cmlnaHRfeWVhciA9IGRhdGUudG9kYXkoKS55ZWFyLAorICAgIGFuZ2xlX2Zvcm1hdF9pbmZvX2Nh
c2VzID0gYW5nbGVfZm9ybWF0X2Nhc2VzLAorICAgIGRhdGFfc291cmNlX25hbWUgPSBkYXRhX3Nv
dXJjZV9uYW1lKQord2l0aCBvcGVuKCdGb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAnLCAnd3QnKSBh
cyBvdXRfZmlsZToKICAgICBvdXRfZmlsZS53cml0ZShvdXRwdXRfY3BwKQogICAgIG91dF9maWxl
LmNsb3NlKCkKIAogZW51bV9kYXRhID0gZ2VuX2VudW1fc3RyaW5nKGFsbF9hbmdsZSkKIG91dHB1
dF9oID0gdGVtcGxhdGVfYXV0b2dlbl9oLmZvcm1hdCgKLSAgICBjb3B5cmlnaHRfeWVhcj1kYXRl
LnRvZGF5KCkueWVhciwKLSAgICBhbmdsZV9mb3JtYXRfZW51bT1lbnVtX2RhdGEpCisgICAgc2Ny
aXB0X25hbWUgPSBzeXMuYXJndlswXSwKKyAgICBjb3B5cmlnaHRfeWVhciA9IGRhdGUudG9kYXko
KS55ZWFyLAorICAgIGFuZ2xlX2Zvcm1hdF9lbnVtID0gZW51bV9kYXRhLAorICAgIGRhdGFfc291
cmNlX25hbWUgPSBkYXRhX3NvdXJjZV9uYW1lKQogd2l0aCBvcGVuKCdGb3JtYXRfSURfYXV0b2dl
bi5pbmwnLCAnd3QnKSBhcyBvdXRfZmlsZToKICAgICBvdXRfZmlsZS53cml0ZShvdXRwdXRfaCkK
ICAgICBvdXRfZmlsZS5jbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQmxpdEdMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuY3BwCmluZGV4IGIxODE4MjJm
ZjhiLi44YmQ0YTNjYmVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL0JsaXRHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0JsaXRHTC5jcHAKQEAgLTgsNiArOCw3IEBA
CiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuaCIKIAorI2luY2x1ZGUg
ImNvbW1vbi92ZWN0b3JfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGlscy5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvZm9ybWF0dXRpbHNnbC5oIgpAQCAtMTcsNiArMTgsMTEgQEAKICNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2dsL1dvcmthcm91bmRzR0wuaCIKIAordXNpbmcgYW5nbGU6OlZlY3RvcjI7
CisKK25hbWVzcGFjZSByeAoreworCiBuYW1lc3BhY2UKIHsKIApAQCAtMjQsNiArMzAsNyBAQCBn
bDo6RXJyb3IgQ2hlY2tDb21waWxlU3RhdHVzKGNvbnN0IHJ4OjpGdW5jdGlvbnNHTCAqZnVuY3Rp
b25zLCBHTHVpbnQgc2hhZGVyKQogewogICAgIEdMaW50IGNvbXBpbGVTdGF0dXMgPSBHTF9GQUxT
RTsKICAgICBmdW5jdGlvbnMtPmdldFNoYWRlcml2KHNoYWRlciwgR0xfQ09NUElMRV9TVEFUVVMs
ICZjb21waWxlU3RhdHVzKTsKKwogICAgIEFTU0VSVChjb21waWxlU3RhdHVzID09IEdMX1RSVUUp
OwogICAgIGlmIChjb21waWxlU3RhdHVzID09IEdMX0ZBTFNFKQogICAgIHsKQEAgLTQ2LDEwICs1
Myw2MCBAQCBnbDo6RXJyb3IgQ2hlY2tMaW5rU3RhdHVzKGNvbnN0IHJ4OjpGdW5jdGlvbnNHTCAq
ZnVuY3Rpb25zLCBHTHVpbnQgcHJvZ3JhbSkKICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAotfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCi0KLW5hbWVzcGFjZSByeAorY2xhc3MgU2NvcGVk
R0xTdGF0ZSA6IHB1YmxpYyBhbmdsZTo6Tm9uQ29weWFibGUKIHsKKyAgcHVibGljOgorICAgIGVu
dW0KKyAgICB7CisgICAgICAgIEtFRVBfU0NJU1NPUiA9IDEsCisgICAgfTsKKworICAgIFNjb3Bl
ZEdMU3RhdGUoU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlciwKKyAgICAgICAgICAgICAgICAg
IGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICBnbDo6UmVj
dGFuZ2xlIHZpZXdwb3J0LAorICAgICAgICAgICAgICAgICAgaW50IGtlZXBTdGF0ZSA9IDApCisg
ICAgICAgIDogbVN0YXRlTWFuYWdlcihzdGF0ZU1hbmFnZXIpLCBtRnVuY3Rpb25zKGZ1bmN0aW9u
cykKKyAgICB7CisgICAgICAgIGlmICghKGtlZXBTdGF0ZSAmIEtFRVBfU0NJU1NPUikpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1TdGF0ZU1hbmFnZXItPnNldFNjaXNzb3JUZXN0RW5hYmxlZChm
YWxzZSk7CisgICAgICAgIH0KKyAgICAgICAgbVN0YXRlTWFuYWdlci0+c2V0Vmlld3BvcnQodmll
d3BvcnQpOworICAgICAgICBtU3RhdGVNYW5hZ2VyLT5zZXREZXB0aFJhbmdlKDAuMGYsIDEuMGYp
OworICAgICAgICBtU3RhdGVNYW5hZ2VyLT5zZXRCbGVuZEVuYWJsZWQoZmFsc2UpOworICAgICAg
ICBtU3RhdGVNYW5hZ2VyLT5zZXRDb2xvck1hc2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7Cisg
ICAgICAgIG1TdGF0ZU1hbmFnZXItPnNldFNhbXBsZUFscGhhVG9Db3ZlcmFnZUVuYWJsZWQoZmFs
c2UpOworICAgICAgICBtU3RhdGVNYW5hZ2VyLT5zZXRTYW1wbGVDb3ZlcmFnZUVuYWJsZWQoZmFs
c2UpOworICAgICAgICBtU3RhdGVNYW5hZ2VyLT5zZXREZXB0aFRlc3RFbmFibGVkKGZhbHNlKTsK
KyAgICAgICAgbVN0YXRlTWFuYWdlci0+c2V0U3RlbmNpbFRlc3RFbmFibGVkKGZhbHNlKTsKKyAg
ICAgICAgbVN0YXRlTWFuYWdlci0+c2V0Q3VsbEZhY2VFbmFibGVkKGZhbHNlKTsKKyAgICAgICAg
bVN0YXRlTWFuYWdlci0+c2V0UG9seWdvbk9mZnNldEZpbGxFbmFibGVkKGZhbHNlKTsKKyAgICAg
ICAgbVN0YXRlTWFuYWdlci0+c2V0UmFzdGVyaXplckRpc2NhcmRFbmFibGVkKGZhbHNlKTsKKwor
ICAgICAgICBtU3RhdGVNYW5hZ2VyLT5wYXVzZVRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgICAg
IG1TdGF0ZU1hbmFnZXItPnBhdXNlQWxsUXVlcmllcygpOworICAgIH0KKworICAgIH5TY29wZWRH
TFN0YXRlKCkKKyAgICB7CisgICAgICAgIC8vIFhGQiByZXN1bWluZyB3aWxsIGJlIGRvbmUgYXV0
b21hdGljYWxseQorICAgICAgICBtU3RhdGVNYW5hZ2VyLT5yZXN1bWVBbGxRdWVyaWVzKCk7Cisg
ICAgfQorCisgICAgdm9pZCB3aWxsVXNlVGV4dHVyZVVuaXQoaW50IHVuaXQpCisgICAgeworICAg
ICAgICBpZiAobUZ1bmN0aW9ucy0+YmluZFNhbXBsZXIpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1TdGF0ZU1hbmFnZXItPmJpbmRTYW1wbGVyKHVuaXQsIDApOworICAgICAgICB9CisgICAgfQor
CisgIHByaXZhdGU6CisgICAgU3RhdGVNYW5hZ2VyR0wgKm1TdGF0ZU1hbmFnZXI7CisgICAgY29u
c3QgRnVuY3Rpb25zR0wgKm1GdW5jdGlvbnM7Cit9OworCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNw
YWNlCiAKIEJsaXRHTDo6QmxpdEdMKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCiAgICAg
ICAgICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5kcywKQEAgLTYxLDggKzEx
OCwxMSBAQCBCbGl0R0w6OkJsaXRHTChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAogICAg
ICAgbVNvdXJjZVRleHR1cmVMb2NhdGlvbigtMSksCiAgICAgICBtU2NhbGVMb2NhdGlvbigtMSks
CiAgICAgICBtT2Zmc2V0TG9jYXRpb24oLTEpLAorICAgICAgbU11bHRpcGx5QWxwaGFMb2NhdGlv
bigtMSksCisgICAgICBtVW5NdWx0aXBseUFscGhhTG9jYXRpb24oLTEpLAogICAgICAgbVNjcmF0
Y2hGQk8oMCksCi0gICAgICBtVkFPKDApCisgICAgICBtVkFPKDApLAorICAgICAgbVZlcnRleEJ1
ZmZlcigwKQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgQXJyYXlTaXplKG1TY3JhdGNo
VGV4dHVyZXMpOyBpKyspCiAgICAgewpAQCAtMTE2LDYgKzE3Niw5IEBAIGdsOjpFcnJvciBCbGl0
R0w6OmNvcHlJbWFnZVRvTFVNQVdvcmthcm91bmRUZXh0dXJlKEdMdWludCB0ZXh0dXJlLAogCiAg
ICAgLy8gQWxsb2NhdGUgdGhlIHRleHR1cmUgbWVtb3J5CiAgICAgY29uc3QgZ2w6OkludGVybmFs
Rm9ybWF0ICZpbnRlcm5hbEZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGlu
dGVybmFsRm9ybWF0KTsKKworICAgIGdsOjpQaXhlbFVucGFja1N0YXRlIHVucGFjazsKKyAgICBt
U3RhdGVNYW5hZ2VyLT5zZXRQaXhlbFVucGFja1N0YXRlKHVucGFjayk7CiAgICAgbUZ1bmN0aW9u
cy0+dGV4SW1hZ2UyRCh0YXJnZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCksIGludGVybmFs
Rm9ybWF0LCBzb3VyY2VBcmVhLndpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc291
cmNlQXJlYS5oZWlnaHQsIDAsIGludGVybmFsRm9ybWF0SW5mby5mb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzb3VyY2UtPmdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkVHlwZSgp
LCBudWxscHRyKTsKQEAgLTE2OSwyMiArMjMyLDEzIEBAIGdsOjpFcnJvciBCbGl0R0w6OmNvcHlT
dWJJbWFnZVRvTFVNQVdvcmthcm91bmRUZXh0dXJlKEdMdWludCB0ZXh0dXJlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TY3JhdGNoVGV4dHVyZXNbMV0sIDApOwogCiAg
ICAgLy8gUmVuZGVyIHRvIHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlLCBzYW1wbGluZyBmcm9tIHRo
ZSBzY3JhdGNoIHRleHR1cmUKLSAgICBtU3RhdGVNYW5hZ2VyLT5zZXRWaWV3cG9ydChnbDo6UmVj
dGFuZ2xlKDAsIDAsIHNvdXJjZUFyZWEud2lkdGgsIHNvdXJjZUFyZWEuaGVpZ2h0KSk7Ci0gICAg
bVN0YXRlTWFuYWdlci0+c2V0U2Npc3NvclRlc3RFbmFibGVkKGZhbHNlKTsKLSAgICBtU3RhdGVN
YW5hZ2VyLT5zZXREZXB0aFJhbmdlKDAuMGYsIDEuMGYpOwotICAgIG1TdGF0ZU1hbmFnZXItPnNl
dEJsZW5kRW5hYmxlZChmYWxzZSk7Ci0gICAgbVN0YXRlTWFuYWdlci0+c2V0Q29sb3JNYXNrKHRy
dWUsIHRydWUsIHRydWUsIHRydWUpOwotICAgIG1TdGF0ZU1hbmFnZXItPnNldFNhbXBsZUFscGhh
VG9Db3ZlcmFnZUVuYWJsZWQoZmFsc2UpOwotICAgIG1TdGF0ZU1hbmFnZXItPnNldFNhbXBsZUNv
dmVyYWdlRW5hYmxlZChmYWxzZSk7Ci0gICAgbVN0YXRlTWFuYWdlci0+c2V0RGVwdGhUZXN0RW5h
YmxlZChmYWxzZSk7Ci0gICAgbVN0YXRlTWFuYWdlci0+c2V0U3RlbmNpbFRlc3RFbmFibGVkKGZh
bHNlKTsKLSAgICBtU3RhdGVNYW5hZ2VyLT5zZXRDdWxsRmFjZUVuYWJsZWQoZmFsc2UpOwotICAg
IG1TdGF0ZU1hbmFnZXItPnNldFBvbHlnb25PZmZzZXRGaWxsRW5hYmxlZChmYWxzZSk7Ci0gICAg
bVN0YXRlTWFuYWdlci0+c2V0UmFzdGVyaXplckRpc2NhcmRFbmFibGVkKGZhbHNlKTsKLSAgICBt
U3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtU2NyYXRjaFRleHR1cmVz
WzBdKTsKKyAgICBTY29wZWRHTFN0YXRlIHNjb3BlZFN0YXRlKG1TdGF0ZU1hbmFnZXIsIG1GdW5j
dGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6UmVjdGFuZ2xlKDAsIDAs
IHNvdXJjZUFyZWEud2lkdGgsIHNvdXJjZUFyZWEuaGVpZ2h0KSk7CisgICAgc2NvcGVkU3RhdGUu
d2lsbFVzZVRleHR1cmVVbml0KDApOwogCiAgICAgc2V0U2NyYXRjaFRleHR1cmVQYXJhbWV0ZXIo
R0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKICAgICBzZXRTY3JhdGNoVGV4dHVy
ZVBhcmFtZXRlcihHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOworCiAgICAgbVN0
YXRlTWFuYWdlci0+YWN0aXZlVGV4dHVyZSgwKTsKICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBtU2NyYXRjaFRleHR1cmVzWzBdKTsKIApAQCAtMTkyLDE1ICsy
NDYsMjUgQEAgZ2w6OkVycm9yIEJsaXRHTDo6Y29weVN1YkltYWdlVG9MVU1BV29ya2Fyb3VuZFRl
eHR1cmUoR0x1aW50IHRleHR1cmUsCiAgICAgbUZ1bmN0aW9ucy0+dW5pZm9ybTFpKG1Tb3VyY2VU
ZXh0dXJlTG9jYXRpb24sIDApOwogICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0yZihtU2NhbGVMb2Nh
dGlvbiwgMS4wLCAxLjApOwogICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0yZihtT2Zmc2V0TG9jYXRp
b24sIDAuMCwgMC4wKTsKKyAgICBtRnVuY3Rpb25zLT51bmlmb3JtMWkobU11bHRpcGx5QWxwaGFM
b2NhdGlvbiwgMCk7CisgICAgbUZ1bmN0aW9ucy0+dW5pZm9ybTFpKG1Vbk11bHRpcGx5QWxwaGFM
b2NhdGlvbiwgMCk7CiAKICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVmVydGV4QXJyYXkobVZBTywg
MCk7Ci0KICAgICBtRnVuY3Rpb25zLT5kcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyk7CiAK
ICAgICAvLyBDb3B5IHRoZSBzd2l6emxlZCB0ZXh0dXJlIHRvIHRoZSBkZXN0aW5hdGlvbiB0ZXh0
dXJlCiAgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUodGV4dHVyZVR5cGUsIHRleHR1cmUp
OwotICAgIG1GdW5jdGlvbnMtPmNvcHlUZXhTdWJJbWFnZTJEKHRhcmdldCwgc3RhdGljX2Nhc3Q8
R0xpbnQ+KGxldmVsKSwgZGVzdE9mZnNldC54LCBkZXN0T2Zmc2V0LnksIDAsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCwgc291cmNlQXJlYS53aWR0aCwgc291cmNlQXJlYS5o
ZWlnaHQpOworCisgICAgaWYgKHRhcmdldCA9PSBHTF9URVhUVVJFXzNEIHx8IHRhcmdldCA9PSBH
TF9URVhUVVJFXzJEX0FSUkFZKQorICAgIHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+Y29weVRleFN1
YkltYWdlM0QodGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLCBkZXN0T2Zmc2V0Lngs
IGRlc3RPZmZzZXQueSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVz
dE9mZnNldC56LCAwLCAwLCBzb3VyY2VBcmVhLndpZHRoLCBzb3VyY2VBcmVhLmhlaWdodCk7Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPmNvcHlUZXhTdWJJbWFn
ZTJEKHRhcmdldCwgc3RhdGljX2Nhc3Q8R0xpbnQ+KGxldmVsKSwgZGVzdE9mZnNldC54LCBkZXN0
T2Zmc2V0LnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIHNv
dXJjZUFyZWEud2lkdGgsIHNvdXJjZUFyZWEuaGVpZ2h0KTsKKyAgICB9CiAKICAgICAvLyBGaW5h
bGx5IG9ycGhhbiB0aGUgc2NyYXRjaCB0ZXh0dXJlcyBzbyB0aGV5IGNhbiBiZSBHQ2VkIGJ5IHRo
ZSBkcml2ZXIuCiAgICAgb3JwaGFuU2NyYXRjaFRleHR1cmVzKCk7CkBAIC0yNzUsMjQgKzMzOSwy
NCBAQCBnbDo6RXJyb3IgQmxpdEdMOjpibGl0Q29sb3JCdWZmZXJXaXRoU2hhZGVyKGNvbnN0IGds
OjpGcmFtZWJ1ZmZlciAqc291cmNlLAogICAgIC8vICAgICAgICAgID0gUCAqIChULnNpemUgLyBE
LnNpemUpICsgKFQub2Zmc2V0IC0gRC5vZmZzZXQgKiBULnNpemUgLyBELnNpemUpCiAKICAgICBH
THVpbnQgdGV4dHVyZUlkOwotICAgIGdsOjpWZWN0b3IyIFRPZmZzZXQ7Ci0gICAgZ2w6OlZlY3Rv
cjIgVFNpemU7CisgICAgVmVjdG9yMiBUT2Zmc2V0OworICAgIFZlY3RvcjIgVFNpemU7CiAKICAg
ICAvLyBUT0RPKGN3YWxsZXopIG9uY2UgdGV4dHVyZSBkaXJ0eSBiaXRzIGFyZSBsYW5kZWQsIHJl
dXNlIGF0dGFjaGVkIHRleHR1cmUgaW5zdGVhZCBvZiB1c2luZwogICAgIC8vIENvcHlUZXhJbWFn
ZTJECiAgICAgewogICAgICAgICB0ZXh0dXJlSWQgPSBtU2NyYXRjaFRleHR1cmVzWzBdOwotICAg
ICAgICBUT2Zmc2V0ICAgPSBnbDo6VmVjdG9yMigwLjAsIDAuMCk7Ci0gICAgICAgIFRTaXplICAg
ICA9IGdsOjpWZWN0b3IyKDEuMCwgMS4wKTsKKyAgICAgICAgVE9mZnNldCAgID0gVmVjdG9yMigw
LjApOworICAgICAgICBUU2l6ZSAgICAgPSBWZWN0b3IyKDEuMCk7CiAgICAgICAgIGlmIChzb3Vy
Y2VBcmVhLndpZHRoIDwgMCkKICAgICAgICAgewotICAgICAgICAgICAgVE9mZnNldC54ID0gMS4w
OwotICAgICAgICAgICAgVFNpemUueCAgID0gLTEuMDsKKyAgICAgICAgICAgIFRPZmZzZXQueCgp
ID0gMS4wOworICAgICAgICAgICAgVFNpemUueCgpICAgPSAtMS4wOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChzb3VyY2VBcmVhLmhlaWdodCA8IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIFRP
ZmZzZXQueSA9IDEuMDsKLSAgICAgICAgICAgIFRTaXplLnkgICA9IC0xLjA7CisgICAgICAgICAg
ICBUT2Zmc2V0LnkoKSA9IDEuMDsKKyAgICAgICAgICAgIFRTaXplLnkoKSAgID0gLTEuMDsKICAg
ICAgICAgfQogCiAgICAgICAgIEdMZW51bSBmb3JtYXQgICAgICAgICAgICAgICAgID0gcmVhZEF0
dGFjaG1lbnQtPmdldEZvcm1hdCgpLmluZm8tPmludGVybmFsRm9ybWF0OwpAQCAtMzAyLDEyICsz
NjYsMTcgQEAgZ2w6OkVycm9yIEJsaXRHTDo6YmxpdENvbG9yQnVmZmVyV2l0aFNoYWRlcihjb25z
dCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSwKIAogICAgICAgICBtRnVuY3Rpb25zLT5jb3B5VGV4
SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBmb3JtYXQsIGluQm91bmRzU291cmNlLngsIGluQm91
bmRzU291cmNlLnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluQm91bmRz
U291cmNlLndpZHRoLCBpbkJvdW5kc1NvdXJjZS5oZWlnaHQsIDApOworCisgICAgICAgIHNldFNj
cmF0Y2hUZXh0dXJlUGFyYW1ldGVyKEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgZmlsdGVyKTsKKyAg
ICAgICAgc2V0U2NyYXRjaFRleHR1cmVQYXJhbWV0ZXIoR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBm
aWx0ZXIpOworICAgICAgICBzZXRTY3JhdGNoVGV4dHVyZVBhcmFtZXRlcihHTF9URVhUVVJFX1dS
QVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgICAgIHNldFNjcmF0Y2hUZXh0dXJlUGFyYW1l
dGVyKEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKICAgICB9CiAKICAgICAv
LyBDb21wdXRlIG5vcm1hbGl6ZWQgc2FtcGxlZCBkcmF3IHF1YWQgcmVnaW9uCiAgICAgLy8gSXQg
aXMgdGhlIHNhbWUgYXMgdGhlIHJlZ2lvbiBvZiB0aGUgc291cmNlIHJlY3RhbmdsZSB0aGF0IGlz
IGluIGJvdW5kcy4KLSAgICBnbDo6VmVjdG9yMiBET2Zmc2V0OwotICAgIGdsOjpWZWN0b3IyIERT
aXplOworICAgIFZlY3RvcjIgRE9mZnNldDsKKyAgICBWZWN0b3IyIERTaXplOwogICAgIHsKICAg
ICAgICAgQVNTRVJUKHNvdXJjZUFyZWEud2lkdGggIT0gMCAmJiBzb3VyY2VBcmVhLmhlaWdodCAh
PSAwKTsKICAgICAgICAgZ2w6OlJlY3RhbmdsZSBvcmllbnRlZEluQm91bmRzID0gaW5Cb3VuZHNT
b3VyY2U7CkBAIC0zMjMsNDQgKzM5MiwzMSBAQCBnbDo6RXJyb3IgQmxpdEdMOjpibGl0Q29sb3JC
dWZmZXJXaXRoU2hhZGVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlLAogICAgICAgICB9
CiAKICAgICAgICAgRE9mZnNldCA9Ci0gICAgICAgICAgICBnbDo6VmVjdG9yMihzdGF0aWNfY2Fz
dDxmbG9hdD4ob3JpZW50ZWRJbkJvdW5kcy54IC0gc291cmNlQXJlYS54KSAvIHNvdXJjZUFyZWEu
d2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4ob3JpZW50
ZWRJbkJvdW5kcy55IC0gc291cmNlQXJlYS55KSAvIHNvdXJjZUFyZWEuaGVpZ2h0KTsKLSAgICAg
ICAgRFNpemUgPSBnbDo6VmVjdG9yMihzdGF0aWNfY2FzdDxmbG9hdD4ob3JpZW50ZWRJbkJvdW5k
cy53aWR0aCkgLyBzb3VyY2VBcmVhLndpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0YXRpY19jYXN0PGZsb2F0PihvcmllbnRlZEluQm91bmRzLmhlaWdodCkgLyBzb3VyY2VBcmVh
LmhlaWdodCk7CisgICAgICAgICAgICBWZWN0b3IyKHN0YXRpY19jYXN0PGZsb2F0PihvcmllbnRl
ZEluQm91bmRzLnggLSBzb3VyY2VBcmVhLngpIC8gc291cmNlQXJlYS53aWR0aCwKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG9yaWVudGVkSW5Cb3VuZHMueSAtIHNvdXJj
ZUFyZWEueSkgLyBzb3VyY2VBcmVhLmhlaWdodCk7CisgICAgICAgIERTaXplID0gVmVjdG9yMihz
dGF0aWNfY2FzdDxmbG9hdD4ob3JpZW50ZWRJbkJvdW5kcy53aWR0aCkgLyBzb3VyY2VBcmVhLndp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG9yaWVudGVk
SW5Cb3VuZHMuaGVpZ2h0KSAvIHNvdXJjZUFyZWEuaGVpZ2h0KTsKICAgICB9CiAKLSAgICBBU1NF
UlQoRFNpemUueCAhPSAwLjAgJiYgRFNpemUueSAhPSAwLjApOwotICAgIGdsOjpWZWN0b3IyIHRl
eENvb3JkU2NhbGUgID0gZ2w6OlZlY3RvcjIoVFNpemUueCAvIERTaXplLngsIFRTaXplLnkgLyBE
U2l6ZS55KTsKLSAgICBnbDo6VmVjdG9yMiB0ZXhDb29yZE9mZnNldCA9IGdsOjpWZWN0b3IyKFRP
ZmZzZXQueCAtIERPZmZzZXQueCAqIHRleENvb3JkU2NhbGUueCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRPZmZzZXQueSAtIERPZmZzZXQueSAqIHRleENv
b3JkU2NhbGUueSk7Ci0KLSAgICAvLyBSZXNldCBhbGwgdGhlIHN0YXRlIGV4Y2VwdCBzY2lzc29y
IGFuZCB2aWV3cG9ydAotICAgIG1TdGF0ZU1hbmFnZXItPnNldERlcHRoUmFuZ2UoMC4wZiwgMS4w
Zik7Ci0gICAgbVN0YXRlTWFuYWdlci0+c2V0QmxlbmRFbmFibGVkKGZhbHNlKTsKLSAgICBtU3Rh
dGVNYW5hZ2VyLT5zZXRDb2xvck1hc2sodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7Ci0gICAgbVN0
YXRlTWFuYWdlci0+c2V0U2FtcGxlQWxwaGFUb0NvdmVyYWdlRW5hYmxlZChmYWxzZSk7Ci0gICAg
bVN0YXRlTWFuYWdlci0+c2V0U2FtcGxlQ292ZXJhZ2VFbmFibGVkKGZhbHNlKTsKLSAgICBtU3Rh
dGVNYW5hZ2VyLT5zZXREZXB0aFRlc3RFbmFibGVkKGZhbHNlKTsKLSAgICBtU3RhdGVNYW5hZ2Vy
LT5zZXRTdGVuY2lsVGVzdEVuYWJsZWQoZmFsc2UpOwotICAgIG1TdGF0ZU1hbmFnZXItPnNldEN1
bGxGYWNlRW5hYmxlZChmYWxzZSk7Ci0gICAgbVN0YXRlTWFuYWdlci0+c2V0UG9seWdvbk9mZnNl
dEZpbGxFbmFibGVkKGZhbHNlKTsKLSAgICBtU3RhdGVNYW5hZ2VyLT5zZXRSYXN0ZXJpemVyRGlz
Y2FyZEVuYWJsZWQoZmFsc2UpOwotCi0gICAgLy8gVXNlIHRoZSB2aWV3cG9ydCB0byBkcmF3IGV4
YWN0bHkgdG8gdGhlIGRlc3RpbmF0aW9uIHJlY3RhbmdsZQotICAgIG1TdGF0ZU1hbmFnZXItPnNl
dFZpZXdwb3J0KGRlc3RBcmVhKTsKKyAgICBBU1NFUlQoRFNpemUueCgpICE9IDAuMCAmJiBEU2l6
ZS55KCkgIT0gMC4wKTsKKyAgICBWZWN0b3IyIHRleENvb3JkU2NhbGUgID0gVFNpemUgLyBEU2l6
ZTsKKyAgICBWZWN0b3IyIHRleENvb3JkT2Zmc2V0ID0gVE9mZnNldCAtIERPZmZzZXQgKiB0ZXhD
b29yZFNjYWxlOworCisgICAgLy8gUmVzZXQgYWxsIHRoZSBzdGF0ZSBleGNlcHQgc2Npc3NvciBh
bmQgdXNlIHRoZSB2aWV3cG9ydCB0byBkcmF3IGV4YWN0bHkgdG8gdGhlIGRlc3RpbmF0aW9uCisg
ICAgLy8gcmVjdGFuZ2xlCisgICAgU2NvcGVkR0xTdGF0ZSBzY29wZWRTdGF0ZShtU3RhdGVNYW5h
Z2VyLCBtRnVuY3Rpb25zLCBkZXN0QXJlYSwgU2NvcGVkR0xTdGF0ZTo6S0VFUF9TQ0lTU09SKTsK
KyAgICBzY29wZWRTdGF0ZS53aWxsVXNlVGV4dHVyZVVuaXQoMCk7CiAKICAgICAvLyBTZXQgdW5p
Zm9ybXMKLSAgICBzZXRTY3JhdGNoVGV4dHVyZVBhcmFtZXRlcihHTF9URVhUVVJFX01JTl9GSUxU
RVIsIGZpbHRlcik7Ci0gICAgc2V0U2NyYXRjaFRleHR1cmVQYXJhbWV0ZXIoR0xfVEVYVFVSRV9N
QUdfRklMVEVSLCBmaWx0ZXIpOwotICAgIHNldFNjcmF0Y2hUZXh0dXJlUGFyYW1ldGVyKEdMX1RF
WFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBzZXRTY3JhdGNoVGV4dHVyZVBh
cmFtZXRlcihHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CiAgICAgbVN0YXRl
TWFuYWdlci0+YWN0aXZlVGV4dHVyZSgwKTsKLSAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtU2NyYXRjaFRleHR1cmVzWzBdKTsKKyAgICBtU3RhdGVNYW5hZ2Vy
LT5iaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlSWQpOwogCiAgICAgbVN0YXRlTWFu
YWdlci0+dXNlUHJvZ3JhbShtQmxpdFByb2dyYW0pOwogICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0x
aShtU291cmNlVGV4dHVyZUxvY2F0aW9uLCAwKTsKLSAgICBtRnVuY3Rpb25zLT51bmlmb3JtMmYo
bVNjYWxlTG9jYXRpb24sIHRleENvb3JkU2NhbGUueCwgdGV4Q29vcmRTY2FsZS55KTsKLSAgICBt
RnVuY3Rpb25zLT51bmlmb3JtMmYobU9mZnNldExvY2F0aW9uLCB0ZXhDb29yZE9mZnNldC54LCB0
ZXhDb29yZE9mZnNldC55KTsKKyAgICBtRnVuY3Rpb25zLT51bmlmb3JtMmYobVNjYWxlTG9jYXRp
b24sIHRleENvb3JkU2NhbGUueCgpLCB0ZXhDb29yZFNjYWxlLnkoKSk7CisgICAgbUZ1bmN0aW9u
cy0+dW5pZm9ybTJmKG1PZmZzZXRMb2NhdGlvbiwgdGV4Q29vcmRPZmZzZXQueCgpLCB0ZXhDb29y
ZE9mZnNldC55KCkpOworICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0xaShtTXVsdGlwbHlBbHBoYUxv
Y2F0aW9uLCAwKTsKKyAgICBtRnVuY3Rpb25zLT51bmlmb3JtMWkobVVuTXVsdGlwbHlBbHBoYUxv
Y2F0aW9uLCAwKTsKIAogICAgIGNvbnN0IEZyYW1lYnVmZmVyR0wgKmRlc3RHTCA9IEdldEltcGxB
czxGcmFtZWJ1ZmZlckdMPihkZXN0KTsKICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZm
ZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgZGVzdEdMLT5nZXRGcmFtZWJ1ZmZlcklEKCkpOwpAQCAt
MzcxLDYgKzQyNywxMTEgQEAgZ2w6OkVycm9yIEJsaXRHTDo6YmxpdENvbG9yQnVmZmVyV2l0aFNo
YWRlcihjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSwKICAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKIH0KIAorZ2w6OkVycm9yIEJsaXRHTDo6Y29weVN1YlRleHR1cmUoVGV4dHVyZUdMICpz
b3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc291cmNlTGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlR0wgKmRlc3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXN0TGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc291cmNlU2l6ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJj
ZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0
ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBuZWVk
c0x1bWFXb3JrYXJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGx1bWFGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFj
a0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVt
dWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBh
Y2tVbm11bHRpcGx5QWxwaGEpCit7CisgICAgQU5HTEVfVFJZKGluaXRpYWxpemVSZXNvdXJjZXMo
KSk7CisKKyAgICAvLyBTZXR1cCB0aGUgc291cmNlIHRleHR1cmUKKyAgICBpZiAobmVlZHNMdW1h
V29ya2Fyb3VuZCkKKyAgICB7CisgICAgICAgIEdMaW50IGx1bWluYW5jZSA9IChsdW1hRm9ybWF0
ID09IEdMX0FMUEhBKSA/IEdMX1pFUk8gOiBHTF9SRUQ7CisKKyAgICAgICAgR0xpbnQgYWxwaGEg
PSBHTF9SRUQ7CisgICAgICAgIGlmIChsdW1hRm9ybWF0ID09IEdMX0xVTUlOQU5DRSkKKyAgICAg
ICAgeworICAgICAgICAgICAgYWxwaGEgPSBHTF9PTkU7CisgICAgICAgIH0KKyAgICAgICAgZWxz
ZSBpZiAobHVtYUZvcm1hdCA9PSBHTF9MVU1JTkFOQ0VfQUxQSEEpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGFscGhhID0gR0xfR1JFRU47CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICB7CisgICAgICAgICAgICBBU1NFUlQobHVtYUZvcm1hdCA9PSBHTF9BTFBIQSk7CisgICAgICAg
IH0KKworICAgICAgICBHTGludCBzd2l6emxlWzRdID0ge2x1bWluYW5jZSwgbHVtaW5hbmNlLCBs
dW1pbmFuY2UsIGFscGhhfTsKKyAgICAgICAgc291cmNlLT5zZXRTd2l6emxlKHN3aXp6bGUpOwor
ICAgIH0KKyAgICBzb3VyY2UtPnNldE1pbkZpbHRlcihHTF9ORUFSRVNUKTsKKyAgICBzb3VyY2Ut
PnNldE1hZ0ZpbHRlcihHTF9ORUFSRVNUKTsKKyAgICBzb3VyY2UtPnNldEJhc2VMZXZlbChzdGF0
aWNfY2FzdDxHTHVpbnQ+KHNvdXJjZUxldmVsKSk7CisKKyAgICAvLyBSZW5kZXIgdG8gdGhlIGRl
c3RpbmF0aW9uIHRleHR1cmUsIHNhbXBsaW5nIGZyb20gdGhlIHNvdXJjZSB0ZXh0dXJlCisgICAg
U2NvcGVkR0xTdGF0ZSBzY29wZWRTdGF0ZSgKKyAgICAgICAgbVN0YXRlTWFuYWdlciwgbUZ1bmN0
aW9ucywKKyAgICAgICAgZ2w6OlJlY3RhbmdsZShkZXN0T2Zmc2V0LngsIGRlc3RPZmZzZXQueSwg
c291cmNlQXJlYS53aWR0aCwgc291cmNlQXJlYS5oZWlnaHQpKTsKKyAgICBzY29wZWRTdGF0ZS53
aWxsVXNlVGV4dHVyZVVuaXQoMCk7CisKKyAgICBtU3RhdGVNYW5hZ2VyLT5hY3RpdmVUZXh0dXJl
KDApOworICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHNvdXJj
ZS0+Z2V0VGV4dHVyZUlEKCkpOworCisgICAgVmVjdG9yMiBzY2FsZShzb3VyY2VBcmVhLndpZHRo
IC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVNpemUud2lkdGgpLAorICAgICAgICAgICAgICAg
ICAgc291cmNlQXJlYS5oZWlnaHQgLyBzdGF0aWNfY2FzdDxmbG9hdD4oc291cmNlU2l6ZS5oZWln
aHQpKTsKKyAgICBWZWN0b3IyIG9mZnNldChzb3VyY2VBcmVhLnggLyBzdGF0aWNfY2FzdDxmbG9h
dD4oc291cmNlU2l6ZS53aWR0aCksCisgICAgICAgICAgICAgICAgICAgc291cmNlQXJlYS55IC8g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHNvdXJjZVNpemUuaGVpZ2h0KSk7CisgICAgaWYgKHVucGFja0Zs
aXBZKQorICAgIHsKKyAgICAgICAgb2Zmc2V0LnkoKSArPSBzY2FsZS55KCk7CisgICAgICAgIHNj
YWxlLnkoKSA9IC1zY2FsZS55KCk7CisgICAgfQorCisgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJv
Z3JhbShtQmxpdFByb2dyYW0pOworICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0xaShtU291cmNlVGV4
dHVyZUxvY2F0aW9uLCAwKTsKKyAgICBtRnVuY3Rpb25zLT51bmlmb3JtMmYobVNjYWxlTG9jYXRp
b24sIHNjYWxlLngoKSwgc2NhbGUueSgpKTsKKyAgICBtRnVuY3Rpb25zLT51bmlmb3JtMmYobU9m
ZnNldExvY2F0aW9uLCBvZmZzZXQueCgpLCBvZmZzZXQueSgpKTsKKyAgICBpZiAodW5wYWNrUHJl
bXVsdGlwbHlBbHBoYSA9PSB1bnBhY2tVbm11bHRpcGx5QWxwaGEpCisgICAgeworICAgICAgICBt
RnVuY3Rpb25zLT51bmlmb3JtMWkobU11bHRpcGx5QWxwaGFMb2NhdGlvbiwgMCk7CisgICAgICAg
IG1GdW5jdGlvbnMtPnVuaWZvcm0xaShtVW5NdWx0aXBseUFscGhhTG9jYXRpb24sIDApOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtRnVuY3Rpb25zLT51bmlmb3JtMWkobU11bHRp
cGx5QWxwaGFMb2NhdGlvbiwgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSk7CisgICAgICAgIG1GdW5j
dGlvbnMtPnVuaWZvcm0xaShtVW5NdWx0aXBseUFscGhhTG9jYXRpb24sIHVucGFja1VubXVsdGlw
bHlBbHBoYSk7CisgICAgfQorCisgICAgbVN0YXRlTWFuYWdlci0+YmluZEZyYW1lYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBtU2NyYXRjaEZCTyk7CisgICAgbUZ1bmN0aW9ucy0+ZnJhbWVidWZmZXJU
ZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBkZXN0VGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3QtPmdldFRleHR1cmVJ
RCgpLCBzdGF0aWNfY2FzdDxHTGludD4oZGVzdExldmVsKSk7CisKKyAgICBtU3RhdGVNYW5hZ2Vy
LT5iaW5kVmVydGV4QXJyYXkobVZBTywgMCk7CisgICAgbUZ1bmN0aW9ucy0+ZHJhd0FycmF5cyhH
TF9UUklBTkdMRVMsIDAsIDMpOworCisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK2ds
OjpFcnJvciBCbGl0R0w6OmNvcHlUZXhTdWJJbWFnZShUZXh0dXJlR0wgKnNvdXJjZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlR0wgKmRlc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0
T2Zmc2V0KQoreworICAgIEFOR0xFX1RSWShpbml0aWFsaXplUmVzb3VyY2VzKCkpOworCisgICAg
bVN0YXRlTWFuYWdlci0+YmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtU2NyYXRjaEZC
Tyk7CisgICAgbUZ1bmN0aW9ucy0+ZnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIs
IEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNvdXJjZS0+Z2V0VGV4dHVyZUlEKCksIDApOworCisgICAgbVN0
YXRlTWFuYWdlci0+YmluZFRleHR1cmUoZGVzdC0+Z2V0VGFyZ2V0KCksIGRlc3QtPmdldFRleHR1
cmVJRCgpKTsKKworICAgIG1GdW5jdGlvbnMtPmNvcHlUZXhTdWJJbWFnZTJEKGRlc3QtPmdldFRh
cmdldCgpLCAwLCBkZXN0T2Zmc2V0LngsIGRlc3RPZmZzZXQueSwgc291cmNlQXJlYS54LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZUFyZWEueSwgc291cmNlQXJlYS53
aWR0aCwgc291cmNlQXJlYS5oZWlnaHQpOworCisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9
CisKIGdsOjpFcnJvciBCbGl0R0w6OmluaXRpYWxpemVSZXNvdXJjZXMoKQogewogICAgIGlmICht
QmxpdFByb2dyYW0gPT0gMCkKQEAgLTM3OCwyNSArNTM5LDE3IEBAIGdsOjpFcnJvciBCbGl0R0w6
OmluaXRpYWxpemVSZXNvdXJjZXMoKQogICAgICAgICBtQmxpdFByb2dyYW0gPSBtRnVuY3Rpb25z
LT5jcmVhdGVQcm9ncmFtKCk7CiAKICAgICAgICAgLy8gQ29tcGlsZSB0aGUgZnJhZ21lbnQgc2hh
ZGVyCi0gICAgICAgIC8vIEl0IHVzZXMgYSBzaW5nbGUsIGxhcmdlIHRyaWFuZ2xlLCB0byBhdm9p
ZCBhcml0aG1ldGljIHByZWNpc2lvbiBpc3N1ZXMgd2hlcmUgZnJhZ21lbnRzCi0gICAgICAgIC8v
IHdpdGggdGhlIHNhbWUgWSBjb29yZGluYXRlIGRvbid0IGdldCBleGFjdGx5IHRoZSBzYW1lIGlu
dGVycG9sYXRlZCB0ZXhjb29yZCBZLgogICAgICAgICBjb25zdCBjaGFyICp2c1NvdXJjZSA9Ci0g
ICAgICAgICAgICAiI3ZlcnNpb24gMTUwXG4iCi0gICAgICAgICAgICAib3V0IHZlYzIgdl90ZXhj
b29yZDtcbiIKKyAgICAgICAgICAgICIjdmVyc2lvbiAxMDBcbiIKKyAgICAgICAgICAgICJ2YXJ5
aW5nIHZlYzIgdl90ZXhjb29yZDtcbiIKICAgICAgICAgICAgICJ1bmlmb3JtIHZlYzIgdV9zY2Fs
ZTtcbiIKICAgICAgICAgICAgICJ1bmlmb3JtIHZlYzIgdV9vZmZzZXQ7XG4iCisgICAgICAgICAg
ICAiYXR0cmlidXRlIHZlYzIgYV90ZXhjb29yZDtcbiIKICAgICAgICAgICAgICJcbiIKICAgICAg
ICAgICAgICJ2b2lkIG1haW4oKVxuIgogICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIg
ICAgY29uc3QgdmVjMiBxdWFkX3Bvc2l0aW9uc1szXSA9IHZlYzJbM11cbiIKLSAgICAgICAgICAg
ICIgICAgKFxuIgotICAgICAgICAgICAgIiAgICAgICAgdmVjMigtMC41ZiwgMC4wZiksXG4iCi0g
ICAgICAgICAgICAiICAgICAgICB2ZWMyKCAxLjVmLCAwLjBmKSxcbiIKLSAgICAgICAgICAgICIg
ICAgICAgIHZlYzIoIDAuNWYsIDIuMGYpXG4iCi0gICAgICAgICAgICAiICAgICk7XG4iCi0gICAg
ICAgICAgICAiXG4iCi0gICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgocXVhZF9w
b3NpdGlvbnNbZ2xfVmVydGV4SURdICogMi4wKSAtIDEuMCwgMC4wLCAxLjApO1xuIgotICAgICAg
ICAgICAgIiAgICB2X3RleGNvb3JkID0gcXVhZF9wb3NpdGlvbnNbZ2xfVmVydGV4SURdICogdV9z
Y2FsZSArIHVfb2Zmc2V0O1xuIgorICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQo
KGFfdGV4Y29vcmQgKiAyLjApIC0gMS4wLCAwLjAsIDEuMCk7XG4iCisgICAgICAgICAgICAiICAg
IHZfdGV4Y29vcmQgPSBhX3RleGNvb3JkICogdV9zY2FsZSArIHVfb2Zmc2V0O1xuIgogICAgICAg
ICAgICAgIn1cbiI7CiAKICAgICAgICAgR0x1aW50IHZzID0gbUZ1bmN0aW9ucy0+Y3JlYXRlU2hh
ZGVyKEdMX1ZFUlRFWF9TSEFERVIpOwpAQCAtNDExLDEwICs1NjQsMTIgQEAgZ2w6OkVycm9yIEJs
aXRHTDo6aW5pdGlhbGl6ZVJlc291cmNlcygpCiAgICAgICAgIC8vIEl0IGRpc2NhcmRzIGlmIHRo
ZSB0ZXhjb29yZCBpcyBvdXRzaWRlICgwLCAxKV4yIHNvIHRoZSBibGl0ZnJhbWVidWZmZXIgd29y
a2Fyb3VuZAogICAgICAgICAvLyBkb2Vzbid0IHdyaXRlIHdoZW4gdGhlIHBvaW50IHNhbXBsZWQg
aXMgb3V0c2lkZSBvZiB0aGUgc291cmNlIGZyYW1lYnVmZmVyLgogICAgICAgICBjb25zdCBjaGFy
ICpmc1NvdXJjZSA9Ci0gICAgICAgICAgICAiI3ZlcnNpb24gMTUwXG4iCisgICAgICAgICAgICAi
I3ZlcnNpb24gMTAwXG4iCisgICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0OyIKICAg
ICAgICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB1X3NvdXJjZV90ZXh0dXJlO1xuIgotICAgICAg
ICAgICAgImluIHZlYzIgdl90ZXhjb29yZDtcbiIKLSAgICAgICAgICAgICJvdXQgdmVjNCBvdXRw
dXRfY29sb3I7XG4iCisgICAgICAgICAgICAidW5pZm9ybSBib29sIHVfbXVsdGlwbHlfYWxwaGE7
XG4iCisgICAgICAgICAgICAidW5pZm9ybSBib29sIHVfdW5tdWx0aXBseV9hbHBoYTtcbiIKKyAg
ICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhjb29yZDtcbiIKICAgICAgICAgICAgICJcbiIK
ICAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgogICAgICAgICAgICAgIntcbiIKQEAgLTQyMiw3
ICs1NzcsMTAgQEAgZ2w6OkVycm9yIEJsaXRHTDo6aW5pdGlhbGl6ZVJlc291cmNlcygpCiAgICAg
ICAgICAgICAiICAgIHtcbiIKICAgICAgICAgICAgICIgICAgICAgIGRpc2NhcmQ7XG4iCiAgICAg
ICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgICAgICIgICAgb3V0cHV0X2NvbG9yID0gdGV4dHVy
ZSh1X3NvdXJjZV90ZXh0dXJlLCB2X3RleGNvb3JkKTtcbiIKKyAgICAgICAgICAgICIgICAgdmVj
NCBjb2xvciA9IHRleHR1cmUyRCh1X3NvdXJjZV90ZXh0dXJlLCB2X3RleGNvb3JkKTtcbiIKKyAg
ICAgICAgICAgICIgICAgaWYgKHVfbXVsdGlwbHlfYWxwaGEpIHtjb2xvci54eXogPSBjb2xvci54
eXogKiBjb2xvci5hO30iCisgICAgICAgICAgICAiICAgIGlmICh1X3VubXVsdGlwbHlfYWxwaGEg
JiYgY29sb3IuYSAhPSAwLjApIHtjb2xvci54eXogPSBjb2xvci54eXogLyBjb2xvci5hO30iCisg
ICAgICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yOyIKICAgICAgICAgICAgICJ9XG4i
OwogCiAgICAgICAgIEdMdWludCBmcyA9IG1GdW5jdGlvbnMtPmNyZWF0ZVNoYWRlcihHTF9GUkFH
TUVOVF9TSEFERVIpOwpAQCAtNDM2LDEwICs1OTQsMTMgQEAgZ2w6OkVycm9yIEJsaXRHTDo6aW5p
dGlhbGl6ZVJlc291cmNlcygpCiAgICAgICAgIG1GdW5jdGlvbnMtPmxpbmtQcm9ncmFtKG1CbGl0
UHJvZ3JhbSk7CiAgICAgICAgIEFOR0xFX1RSWShDaGVja0xpbmtTdGF0dXMobUZ1bmN0aW9ucywg
bUJsaXRQcm9ncmFtKSk7CiAKKyAgICAgICAgbVRleENvb3JkQXR0cmlidXRlTG9jYXRpb24gPSBt
RnVuY3Rpb25zLT5nZXRBdHRyaWJMb2NhdGlvbihtQmxpdFByb2dyYW0sICJhX3RleGNvb3JkIik7
CiAgICAgICAgIG1Tb3VyY2VUZXh0dXJlTG9jYXRpb24gPSBtRnVuY3Rpb25zLT5nZXRVbmlmb3Jt
TG9jYXRpb24obUJsaXRQcm9ncmFtLCAidV9zb3VyY2VfdGV4dHVyZSIpOwogICAgICAgICBtU2Nh
bGVMb2NhdGlvbiAgICAgICAgID0gbUZ1bmN0aW9ucy0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1CbGl0
UHJvZ3JhbSwgInVfc2NhbGUiKTsKICAgICAgICAgbU9mZnNldExvY2F0aW9uICAgICAgICA9IG1G
dW5jdGlvbnMtPmdldFVuaWZvcm1Mb2NhdGlvbihtQmxpdFByb2dyYW0sICJ1X29mZnNldCIpOwot
ICAgICAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1CbGl0UHJvZ3JhbSk7CisgICAgICAg
IG1NdWx0aXBseUFscGhhTG9jYXRpb24gPSBtRnVuY3Rpb25zLT5nZXRVbmlmb3JtTG9jYXRpb24o
bUJsaXRQcm9ncmFtLCAidV9tdWx0aXBseV9hbHBoYSIpOworICAgICAgICBtVW5NdWx0aXBseUFs
cGhhTG9jYXRpb24gPQorICAgICAgICAgICAgbUZ1bmN0aW9ucy0+Z2V0VW5pZm9ybUxvY2F0aW9u
KG1CbGl0UHJvZ3JhbSwgInVfdW5tdWx0aXBseV9hbHBoYSIpOwogICAgIH0KIAogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgQXJyYXlTaXplKG1TY3JhdGNoVGV4dHVyZXMpOyBpKyspCkBAIC00
NTUsOSArNjE2LDI5IEBAIGdsOjpFcnJvciBCbGl0R0w6OmluaXRpYWxpemVSZXNvdXJjZXMoKQog
ICAgICAgICBtRnVuY3Rpb25zLT5nZW5GcmFtZWJ1ZmZlcnMoMSwgJm1TY3JhdGNoRkJPKTsKICAg
ICB9CiAKKyAgICBpZiAobVZlcnRleEJ1ZmZlciA9PSAwKQorICAgIHsKKyAgICAgICAgbUZ1bmN0
aW9ucy0+Z2VuQnVmZmVycygxLCAmbVZlcnRleEJ1ZmZlcik7CisgICAgICAgIG1TdGF0ZU1hbmFn
ZXItPmJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4QnVmZmVyKTsKKworICAgICAg
ICAvLyBVc2UgYSBzaW5nbGUsIGxhcmdlIHRyaWFuZ2xlLCB0byBhdm9pZCBhcml0aG1ldGljIHBy
ZWNpc2lvbiBpc3N1ZXMgd2hlcmUgZnJhZ21lbnRzCisgICAgICAgIC8vIHdpdGggdGhlIHNhbWUg
WSBjb29yZGluYXRlIGRvbid0IGdldCBleGFjdGx5IHRoZSBzYW1lIGludGVycG9sYXRlZCB0ZXhj
b29yZCBZLgorICAgICAgICBmbG9hdCB2ZXJ0ZXhEYXRhW10gPSB7CisgICAgICAgICAgICAtMC41
ZiwgMC4wZiwgMS41ZiwgMC4wZiwgMC41ZiwgMi4wZiwKKyAgICAgICAgfTsKKworICAgICAgICBt
RnVuY3Rpb25zLT5idWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKGZsb2F0KSAqIDYs
IHZlcnRleERhdGEsIEdMX1NUQVRJQ19EUkFXKTsKKyAgICB9CisKICAgICBpZiAobVZBTyA9PSAw
KQogICAgIHsKICAgICAgICAgbUZ1bmN0aW9ucy0+Z2VuVmVydGV4QXJyYXlzKDEsICZtVkFPKTsK
KworICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVmVydGV4QXJyYXkobVZBTywgMCk7CisgICAg
ICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4QnVm
ZmVyKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+ZW5hYmxlVmVydGV4QXR0cmliQXJyYXkobVRleENv
b3JkQXR0cmlidXRlTG9jYXRpb24pOworICAgICAgICBtRnVuY3Rpb25zLT52ZXJ0ZXhBdHRyaWJQ
b2ludGVyKG1UZXhDb29yZEF0dHJpYnV0ZUxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0Us
IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAg
ICAgfQogCiAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CkBAIC00NjgsNiArNjQ5LDggQEAgdm9p
ZCBCbGl0R0w6Om9ycGhhblNjcmF0Y2hUZXh0dXJlcygpCiAgICAgZm9yIChhdXRvIHRleHR1cmUg
OiBtU2NyYXRjaFRleHR1cmVzKQogICAgIHsKICAgICAgICAgbVN0YXRlTWFuYWdlci0+YmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSk7CisgICAgICAgIGdsOjpQaXhlbFVucGFja1N0
YXRlIHVucGFjazsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+c2V0UGl4ZWxVbnBhY2tTdGF0ZSh1
bnBhY2spOwogICAgICAgICBtRnVuY3Rpb25zLT50ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IEdMX1JHQkEsIDAsIDAsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0JsaXRHTC5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0JsaXRHTC5oCmlu
ZGV4IGIzMDZlZGUyOTk0Li4zZDNhOGRlZTNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0JsaXRHTC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuaApAQCAtMjUs
NiArMjUsNyBAQCBuYW1lc3BhY2UgcngKIGNsYXNzIEZyYW1lYnVmZmVyR0w7CiBjbGFzcyBGdW5j
dGlvbnNHTDsKIGNsYXNzIFN0YXRlTWFuYWdlckdMOworY2xhc3MgVGV4dHVyZUdMOwogc3RydWN0
IFdvcmthcm91bmRzR0w7CiAKIGNsYXNzIEJsaXRHTCA6IHB1YmxpYyBhbmdsZTo6Tm9uQ29weWFi
bGUKQEAgLTQzLDYgKzQ0LDcgQEAgY2xhc3MgQmxpdEdMIDogcHVibGljIGFuZ2xlOjpOb25Db3B5
YWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAq
c291cmNlKTsKKwogICAgIGdsOjpFcnJvciBjb3B5U3ViSW1hZ2VUb0xVTUFXb3JrYXJvdW5kVGV4
dHVyZShHTHVpbnQgdGV4dHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRleHR1cmVUeXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LApAQCAtNTgsNiArNjAs
MjUgQEAgY2xhc3MgQmxpdEdMIDogcHVibGljIGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJmRlc3RB
cmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmaWx0
ZXIpOwogCisgICAgZ2w6OkVycm9yIGNvcHlTdWJUZXh0dXJlKFRleHR1cmVHTCAqc291cmNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc291cmNlTGV2ZWwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFRleHR1cmVHTCAqZGVzdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGRlc3RUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBkZXN0TGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpFeHRlbnRzICZzb3VyY2VTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIG5lZWRzTHVtYVdvcmthcm91bmQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBsdW1hRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHVucGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFj
a1ByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5w
YWNrVW5tdWx0aXBseUFscGhhKTsKKworICAgIGdsOjpFcnJvciBjb3B5VGV4U3ViSW1hZ2UoVGV4
dHVyZUdMICpzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0dXJlR0wg
KmRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xl
ICZzb3VyY2VBcmVhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9m
ZnNldCAmZGVzdE9mZnNldCk7CisKICAgICBnbDo6RXJyb3IgaW5pdGlhbGl6ZVJlc291cmNlcygp
OwogCiAgIHByaXZhdGU6CkBAIC02OSwxNCArOTAsMTggQEAgY2xhc3MgQmxpdEdMIDogcHVibGlj
IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgIFN0YXRlTWFuYWdlckdMICptU3RhdGVNYW5hZ2VyOwog
CiAgICAgR0x1aW50IG1CbGl0UHJvZ3JhbTsKKyAgICBHTGludCBtVGV4Q29vcmRBdHRyaWJ1dGVM
b2NhdGlvbjsKICAgICBHTGludCBtU291cmNlVGV4dHVyZUxvY2F0aW9uOwogICAgIEdMaW50IG1T
Y2FsZUxvY2F0aW9uOwogICAgIEdMaW50IG1PZmZzZXRMb2NhdGlvbjsKKyAgICBHTGludCBtTXVs
dGlwbHlBbHBoYUxvY2F0aW9uOworICAgIEdMaW50IG1Vbk11bHRpcGx5QWxwaGFMb2NhdGlvbjsK
IAogICAgIEdMdWludCBtU2NyYXRjaFRleHR1cmVzWzJdOwogICAgIEdMdWludCBtU2NyYXRjaEZC
TzsKIAogICAgIEdMdWludCBtVkFPOworICAgIEdMdWludCBtVmVydGV4QnVmZmVyOwogfTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL0J1ZmZlckdMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9CdWZmZXJHTC5jcHAKaW5kZXggYjJlMmYxNTVjZTkuLjQ0MWY3OWRiNDg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvQnVmZmVyR0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9CdWZmZXJHTC5jcHAKQEAgLTI5LDggKzI5LDEwIEBAIHN0YXRpYyBj
b25zdCBHTGVudW0gU291cmNlQnVmZmVyT3BlcmF0aW9uVGFyZ2V0ID0gR0xfQ09QWV9SRUFEX0JV
RkZFUjsKIC8vIHN1cHBvcnRlZCBHTCB2ZXJzaW9ucyBhbmQgZG9lc24ndCBhZmZlY3QgYW55IGN1
cnJlbnQgc3RhdGUgd2hlbiBpdCBjaGFuZ2VzLgogc3RhdGljIGNvbnN0IEdMZW51bSBEZXN0QnVm
ZmVyT3BlcmF0aW9uVGFyZ2V0ID0gR0xfQVJSQVlfQlVGRkVSOwogCi1CdWZmZXJHTDo6QnVmZmVy
R0woY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFu
YWdlcikKLSAgICA6IEJ1ZmZlckltcGwoKSwKK0J1ZmZlckdMOjpCdWZmZXJHTChjb25zdCBnbDo6
QnVmZmVyU3RhdGUgJnN0YXRlLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc0dM
ICpmdW5jdGlvbnMsCisgICAgICAgICAgICAgICAgICAgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFu
YWdlcikKKyAgICA6IEJ1ZmZlckltcGwoc3RhdGUpLAogICAgICAgbUlzTWFwcGVkKGZhbHNlKSwK
ICAgICAgIG1NYXBPZmZzZXQoMCksCiAgICAgICBtTWFwU2l6ZSgwKSwKQEAgLTUzLDcgKzU1LDEx
IEBAIEJ1ZmZlckdMOjp+QnVmZmVyR0woKQogICAgIG1CdWZmZXJJRCA9IDA7CiB9CiAKLWdsOjpF
cnJvciBCdWZmZXJHTDo6c2V0RGF0YShHTGVudW0gLyp0YXJnZXQqLywgY29uc3Qgdm9pZCAqZGF0
YSwgc2l6ZV90IHNpemUsIEdMZW51bSB1c2FnZSkKK2dsOjpFcnJvciBCdWZmZXJHTDo6c2V0RGF0
YShDb250ZXh0SW1wbCAqIC8qY29udGV4dCovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSAvKnRhcmdldCovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZv
aWQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHVzYWdlKQogewogICAgIG1TdGF0ZU1hbmFn
ZXItPmJpbmRCdWZmZXIoRGVzdEJ1ZmZlck9wZXJhdGlvblRhcmdldCwgbUJ1ZmZlcklEKTsKICAg
ICBtRnVuY3Rpb25zLT5idWZmZXJEYXRhKERlc3RCdWZmZXJPcGVyYXRpb25UYXJnZXQsIHNpemUs
IGRhdGEsIHVzYWdlKTsKQEAgLTczLDEwICs3OSwxNCBAQCBnbDo6RXJyb3IgQnVmZmVyR0w6OnNl
dERhdGEoR0xlbnVtIC8qdGFyZ2V0Ki8sIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBH
TAogCiAgICAgbUJ1ZmZlclNpemUgPSBzaXplOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBCdWZm
ZXJHTDo6c2V0U3ViRGF0YShHTGVudW0gLyp0YXJnZXQqLywgY29uc3Qgdm9pZCAqZGF0YSwgc2l6
ZV90IHNpemUsIHNpemVfdCBvZmZzZXQpCitnbDo6RXJyb3IgQnVmZmVyR0w6OnNldFN1YkRhdGEo
Q29udGV4dEltcGwgKiAvKmNvbnRleHQqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gLyp0YXJnZXQqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQpCiB7CiAgICAg
bVN0YXRlTWFuYWdlci0+YmluZEJ1ZmZlcihEZXN0QnVmZmVyT3BlcmF0aW9uVGFyZ2V0LCBtQnVm
ZmVySUQpOwogICAgIG1GdW5jdGlvbnMtPmJ1ZmZlclN1YkRhdGEoRGVzdEJ1ZmZlck9wZXJhdGlv
blRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKQEAgLTg2LDEwICs5NiwxNCBAQCBnbDo6RXJy
b3IgQnVmZmVyR0w6OnNldFN1YkRhdGEoR0xlbnVtIC8qdGFyZ2V0Ki8sIGNvbnN0IHZvaWQgKmRh
dGEsIHNpemVfdCBzaXplLAogICAgICAgICBtZW1jcHkobVNoYWRvd0NvcHkuZGF0YSgpICsgb2Zm
c2V0LCBkYXRhLCBzaXplKTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlckdM
Ojpjb3B5U3ViRGF0YShCdWZmZXJJbXBsKiBzb3VyY2UsIEdMaW50cHRyIHNvdXJjZU9mZnNldCwg
R0xpbnRwdHIgZGVzdE9mZnNldCwgR0xzaXplaXB0ciBzaXplKQorZ2w6OkVycm9yIEJ1ZmZlckdM
Ojpjb3B5U3ViRGF0YShDb250ZXh0SW1wbCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQnVmZmVySW1wbCAqc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludHB0ciBzb3VyY2VPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50cHRyIGRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWlwdHIgc2l6ZSkKIHsKICAgICBCdWZmZXJHTCAqc291cmNlR0wgPSBHZXRBczxC
dWZmZXJHTD4oc291cmNlKTsKIApAQCAtMTA0LDI5ICsxMTgsNDAgQEAgZ2w6OkVycm9yIEJ1ZmZl
ckdMOjpjb3B5U3ViRGF0YShCdWZmZXJJbXBsKiBzb3VyY2UsIEdMaW50cHRyIHNvdXJjZU9mZnNl
dCwgR0xpbnQKICAgICAgICAgbWVtY3B5KG1TaGFkb3dDb3B5LmRhdGEoKSArIGRlc3RPZmZzZXQs
IHNvdXJjZUdMLT5tU2hhZG93Q29weS5kYXRhKCkgKyBzb3VyY2VPZmZzZXQsIHNpemUpOwogICAg
IH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgQnVmZmVyR0w6Om1hcChHTGVudW0gYWNjZXNzLCBH
THZvaWQgKiptYXBQdHIpCitnbDo6RXJyb3IgQnVmZmVyR0w6Om1hcChDb250ZXh0SW1wbCAqY29u
dGV4dCwgR0xlbnVtIGFjY2VzcywgR0x2b2lkICoqbWFwUHRyKQogewogICAgIGlmIChtU2hhZG93
QnVmZmVyRGF0YSkKICAgICB7CiAgICAgICAgICptYXBQdHIgPSBtU2hhZG93Q29weS5kYXRhKCk7
CiAgICAgfQotICAgIGVsc2UKKyAgICBlbHNlIGlmIChtRnVuY3Rpb25zLT5tYXBCdWZmZXIpCiAg
ICAgewogICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kQnVmZmVyKERlc3RCdWZmZXJPcGVyYXRp
b25UYXJnZXQsIG1CdWZmZXJJRCk7CiAgICAgICAgICptYXBQdHIgPSBtRnVuY3Rpb25zLT5tYXBC
dWZmZXIoRGVzdEJ1ZmZlck9wZXJhdGlvblRhcmdldCwgYWNjZXNzKTsKICAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1GdW5jdGlvbnMtPm1hcEJ1ZmZlclJhbmdlICYmIGFj
Y2VzcyA9PSBHTF9XUklURV9PTkxZX09FUyk7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRC
dWZmZXIoRGVzdEJ1ZmZlck9wZXJhdGlvblRhcmdldCwgbUJ1ZmZlcklEKTsKKyAgICAgICAgKm1h
cFB0ciA9CisgICAgICAgICAgICBtRnVuY3Rpb25zLT5tYXBCdWZmZXJSYW5nZShEZXN0QnVmZmVy
T3BlcmF0aW9uVGFyZ2V0LCAwLCBtQnVmZmVyU2l6ZSwgR0xfTUFQX1dSSVRFX0JJVCk7CisgICAg
fQogCiAgICAgbUlzTWFwcGVkID0gdHJ1ZTsKICAgICBtTWFwT2Zmc2V0ID0gMDsKICAgICBtTWFw
U2l6ZSAgID0gbUJ1ZmZlclNpemU7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9S
KTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlckdMOjpt
YXBSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBHTGJpdGZpZWxkIGFjY2Vzcywg
R0x2b2lkICoqbWFwUHRyKQorZ2w6OkVycm9yIEJ1ZmZlckdMOjptYXBSYW5nZShDb250ZXh0SW1w
bCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xiaXRmaWVsZCBhY2Nlc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdm9pZCAqKm1hcFB0cikKIHsKICAgICBpZiAobVNoYWRvd0J1ZmZlckRhdGEp
CiAgICAgewpAQCAtMTQyLDEwICsxNjcsMTAgQEAgZ2w6OkVycm9yIEJ1ZmZlckdMOjptYXBSYW5n
ZShzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuZ3RoLCBHTGJpdGZpZWxkIGFjY2VzcywgR0wKICAg
ICBtTWFwT2Zmc2V0ID0gb2Zmc2V0OwogICAgIG1NYXBTaXplICAgPSBsZW5ndGg7CiAKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAotZ2w6OkVycm9yIEJ1ZmZlckdMOjp1bm1hcChHTGJvb2xlYW4gKnJlc3VsdCkKK2dsOjpF
cnJvciBCdWZmZXJHTDo6dW5tYXAoQ29udGV4dEltcGwgKmNvbnRleHQsIEdMYm9vbGVhbiAqcmVz
dWx0KQogewogICAgIEFTU0VSVChyZXN1bHQpOwogICAgIEFTU0VSVChtSXNNYXBwZWQpOwpAQCAt
MTY0LDcgKzE4OSw3IEBAIGdsOjpFcnJvciBCdWZmZXJHTDo6dW5tYXAoR0xib29sZWFuICpyZXN1
bHQpCiAgICAgfQogCiAgICAgbUlzTWFwcGVkID0gZmFsc2U7Ci0gICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJv
ciBCdWZmZXJHTDo6Z2V0SW5kZXhSYW5nZShHTGVudW0gdHlwZSwKQEAgLTE5MSw3ICsyMTYsNyBA
QCBnbDo6RXJyb3IgQnVmZmVyR0w6OmdldEluZGV4UmFuZ2UoR0xlbnVtIHR5cGUsCiAgICAgICAg
IG1GdW5jdGlvbnMtPnVubWFwQnVmZmVyKERlc3RCdWZmZXJPcGVyYXRpb25UYXJnZXQpOwogICAg
IH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCiBHTHVpbnQgQnVmZmVyR0w6OmdldEJ1ZmZlcklEKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9CdWZmZXJHTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL0J1ZmZlckdMLmgKaW5kZXggNTk4NWY4YzJkZTQuLjViYzYyYmM1NWNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQnVm
ZmVyR0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvQnVmZmVyR0wuaApAQCAtMjEsMTUgKzIxLDMzIEBAIGNsYXNzIFN0YXRlTWFuYWdlckdM
OwogY2xhc3MgQnVmZmVyR0wgOiBwdWJsaWMgQnVmZmVySW1wbAogewogICBwdWJsaWM6Ci0gICAg
QnVmZmVyR0woY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgU3RhdGVNYW5hZ2VyR0wgKnN0
YXRlTWFuYWdlcik7CisgICAgQnVmZmVyR0woY29uc3QgZ2w6OkJ1ZmZlclN0YXRlICZzdGF0ZSwK
KyAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAorICAgICAgICAgICAg
IFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIpOwogICAgIH5CdWZmZXJHTCgpIG92ZXJyaWRl
OwogCi0gICAgZ2w6OkVycm9yIHNldERhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0
YSwgc2l6ZV90IHNpemUsIEdMZW51bSB1c2FnZSkgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIHNl
dFN1YkRhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIHNp
emVfdCBvZmZzZXQpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBjb3B5U3ViRGF0YShCdWZmZXJJ
bXBsKiBzb3VyY2UsIEdMaW50cHRyIHNvdXJjZU9mZnNldCwgR0xpbnRwdHIgZGVzdE9mZnNldCwg
R0xzaXplaXB0ciBzaXplKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgbWFwKEdMZW51bSBhY2Nl
c3MsIEdMdm9pZCAqKm1hcFB0cikgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIG1hcFJhbmdlKHNp
emVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzLCBHTHZvaWQgKipt
YXBQdHIpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciB1bm1hcChHTGJvb2xlYW4gKnJlc3VsdCkg
b3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNldERhdGEoQ29udGV4dEltcGwgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAor
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB1c2FnZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVy
cm9yIHNldFN1YkRhdGEoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBj
b3B5U3ViRGF0YShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIEJ1ZmZlckltcGwgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnRwdHIgc291cmNlT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBk
ZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUpIG92
ZXJyaWRlOworICAgIGdsOjpFcnJvciBtYXAoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLCBHTGVu
dW0gYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBtYXBS
YW5nZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgYWNjZXNzLAorICAgICAgICAgICAgICAgICAg
ICAgICBHTHZvaWQgKiptYXBQdHIpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciB1bm1hcChDb250
ZXh0SW1wbCAqY29udGV4dEltcGwsIEdMYm9vbGVhbiAqcmVzdWx0KSBvdmVycmlkZTsKIAogICAg
IGdsOjpFcnJvciBnZXRJbmRleFJhbmdlKEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBvZmZzZXQsCkBAIC00NSw3ICs2Myw3IEBAIGNsYXNzIEJ1ZmZlckdM
IDogcHVibGljIEJ1ZmZlckltcGwKICAgICBzaXplX3QgbU1hcFNpemU7CiAKICAgICBib29sIG1T
aGFkb3dCdWZmZXJEYXRhOwotICAgIE1lbW9yeUJ1ZmZlciBtU2hhZG93Q29weTsKKyAgICBhbmds
ZTo6TWVtb3J5QnVmZmVyIG1TaGFkb3dDb3B5OwogCiAgICAgc2l6ZV90IG1CdWZmZXJTaXplOwog
CkBAIC01NSw2ICs3Myw2IEBAIGNsYXNzIEJ1ZmZlckdMIDogcHVibGljIEJ1ZmZlckltcGwKICAg
ICBHTHVpbnQgbUJ1ZmZlcklEOwogfTsKIAotfQorfSAgLy8gbmFtZXNwYWNlIHJ4CiAKICNlbmRp
ZiAvLyBMSUJBTkdMRV9SRU5ERVJFUl9HTF9CVUZGRVJHTF9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0NvbXBpbGVyR0wuaCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db21waWxl
ckdMLmgKaW5kZXggZWFkYmY2N2VkYjMuLjRjNDEwNGZhMjE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29tcGlsZXJHTC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db21w
aWxlckdMLmgKQEAgLTIxLDcgKzIxLDcgQEAgY2xhc3MgQ29tcGlsZXJHTCA6IHB1YmxpYyBDb21w
aWxlckltcGwKICAgICBDb21waWxlckdMKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMpOwog
ICAgIH5Db21waWxlckdMKCkgb3ZlcnJpZGUge30KIAotICAgIGdsOjpFcnJvciByZWxlYXNlKCkg
b3ZlcnJpZGUgeyByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsgfQorICAgIGdsOjpFcnJv
ciByZWxlYXNlKCkgb3ZlcnJpZGUgeyByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsgfQogICAgIFNoU2hh
ZGVyT3V0cHV0IGdldFRyYW5zbGF0b3JPdXRwdXRUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gbVRyYW5zbGF0b3JPdXRwdXRUeXBlOyB9CiAKICAgcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Db250ZXh0R0wu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Nv
bnRleHRHTC5jcHAKaW5kZXggOGQ5ZTZkNjI2MzQuLjBlNWMxNGM2Mjk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29udGV4dEdM
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvQ29udGV4dEdMLmNwcApAQCAtNzgsOSArNzgsOSBAQCBSZW5kZXJidWZmZXJJbXBsICpDb250
ZXh0R0w6OmNyZWF0ZVJlbmRlcmJ1ZmZlcigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZXROYXRpdmVUZXh0dXJlQ2FwcygpKTsKIH0KIAotQnVmZmVySW1wbCAqQ29udGV4dEdMOjpj
cmVhdGVCdWZmZXIoKQorQnVmZmVySW1wbCAqQ29udGV4dEdMOjpjcmVhdGVCdWZmZXIoY29uc3Qg
Z2w6OkJ1ZmZlclN0YXRlICZzdGF0ZSkKIHsKLSAgICByZXR1cm4gbmV3IEJ1ZmZlckdMKGdldEZ1
bmN0aW9ucygpLCBnZXRTdGF0ZU1hbmFnZXIoKSk7CisgICAgcmV0dXJuIG5ldyBCdWZmZXJHTChz
dGF0ZSwgZ2V0RnVuY3Rpb25zKCksIGdldFN0YXRlTWFuYWdlcigpKTsKIH0KIAogVmVydGV4QXJy
YXlJbXBsICpDb250ZXh0R0w6OmNyZWF0ZVZlcnRleEFycmF5KGNvbnN0IGdsOjpWZXJ0ZXhBcnJh
eVN0YXRlICZkYXRhKQpAQCAtOTAsNyArOTAsMTQgQEAgVmVydGV4QXJyYXlJbXBsICpDb250ZXh0
R0w6OmNyZWF0ZVZlcnRleEFycmF5KGNvbnN0IGdsOjpWZXJ0ZXhBcnJheVN0YXRlICZkYXRhKQog
CiBRdWVyeUltcGwgKkNvbnRleHRHTDo6Y3JlYXRlUXVlcnkoR0xlbnVtIHR5cGUpCiB7Ci0gICAg
cmV0dXJuIG5ldyBRdWVyeUdMKHR5cGUsIGdldEZ1bmN0aW9ucygpLCBnZXRTdGF0ZU1hbmFnZXIo
KSk7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9DT01NQU5EU19D
T01QTEVURURfQ0hST01JVU06CisgICAgICAgICAgICByZXR1cm4gbmV3IFN5bmNRdWVyeUdMKHR5
cGUsIGdldEZ1bmN0aW9ucygpLCBnZXRTdGF0ZU1hbmFnZXIoKSk7CisKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiBuZXcgU3RhbmRhcmRRdWVyeUdMKHR5cGUsIGdldEZ1bmN0
aW9ucygpLCBnZXRTdGF0ZU1hbmFnZXIoKSk7CisgICAgfQogfQogCiBGZW5jZU5WSW1wbCAqQ29u
dGV4dEdMOjpjcmVhdGVGZW5jZU5WKCkKQEAgLTE4Nyw2ICsxOTQsMTYgQEAgZ2w6OkVycm9yIENv
bnRleHRHTDo6ZHJhd1JhbmdlRWxlbWVudHMoR0xlbnVtIG1vZGUsCiAgICAgcmV0dXJuIG1SZW5k
ZXJlci0+ZHJhd1JhbmdlRWxlbWVudHMobVN0YXRlLCBtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwg
dHlwZSwgaW5kaWNlcywgaW5kZXhSYW5nZSk7CiB9CiAKK2dsOjpFcnJvciBDb250ZXh0R0w6OmRy
YXdBcnJheXNJbmRpcmVjdChHTGVudW0gbW9kZSwgY29uc3QgR0x2b2lkICppbmRpcmVjdCkKK3sK
KyAgICByZXR1cm4gbVJlbmRlcmVyLT5kcmF3QXJyYXlzSW5kaXJlY3QobVN0YXRlLCBtb2RlLCBp
bmRpcmVjdCk7Cit9CisKK2dsOjpFcnJvciBDb250ZXh0R0w6OmRyYXdFbGVtZW50c0luZGlyZWN0
KEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpcmVjdCkKK3sKKyAg
ICByZXR1cm4gbVJlbmRlcmVyLT5kcmF3RWxlbWVudHNJbmRpcmVjdChtU3RhdGUsIG1vZGUsIHR5
cGUsIGluZGlyZWN0KTsKK30KKwogdm9pZCBDb250ZXh0R0w6OnN0ZW5jaWxGaWxsUGF0aChjb25z
dCBnbDo6UGF0aCAqcGF0aCwgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQgbWFzaykKIHsKICAgICBt
UmVuZGVyZXItPnN0ZW5jaWxGaWxsUGF0aChtU3RhdGUsIHBhdGgsIGZpbGxNb2RlLCBtYXNrKTsK
QEAgLTMxMSw5ICszMjgsOSBAQCB2b2lkIENvbnRleHRHTDo6cG9wR3JvdXBNYXJrZXIoKQogICAg
IG1SZW5kZXJlci0+cG9wR3JvdXBNYXJrZXIoKTsKIH0KIAotdm9pZCBDb250ZXh0R0w6OnN5bmNT
dGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAm
ZGlydHlCaXRzKQordm9pZCBDb250ZXh0R0w6OnN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGU6OkRp
cnR5Qml0cyAmZGlydHlCaXRzKQogewotICAgIG1SZW5kZXJlci0+Z2V0U3RhdGVNYW5hZ2VyKCkt
PnN5bmNTdGF0ZShzdGF0ZSwgZGlydHlCaXRzKTsKKyAgICBtUmVuZGVyZXItPmdldFN0YXRlTWFu
YWdlcigpLT5zeW5jU3RhdGUobVN0YXRlLCBkaXJ0eUJpdHMpOwogfQogCiBHTGludCBDb250ZXh0
R0w6OmdldEdQVURpc2pvaW50KCkKQEAgLTM2Miw5ICszNzksMTQgQEAgU3RhdGVNYW5hZ2VyR0wg
KkNvbnRleHRHTDo6Z2V0U3RhdGVNYW5hZ2VyKCkKICAgICByZXR1cm4gbVJlbmRlcmVyLT5nZXRT
dGF0ZU1hbmFnZXIoKTsKIH0KIAotY29uc3QgV29ya2Fyb3VuZHNHTCAmQ29udGV4dEdMOjpnZXRX
b3JrYXJvdW5kc0dMKCkKK2NvbnN0IFdvcmthcm91bmRzR0wgJkNvbnRleHRHTDo6Z2V0V29ya2Fy
b3VuZHNHTCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0V29ya2Fyb3VuZHMo
KTsKIH0KIAorZ2w6OkVycm9yIENvbnRleHRHTDo6ZGlzcGF0Y2hDb21wdXRlKEdMdWludCBudW1H
cm91cHNYLCBHTHVpbnQgbnVtR3JvdXBzWSwgR0x1aW50IG51bUdyb3Vwc1opCit7CisgICAgcmV0
dXJuIG1SZW5kZXJlci0+ZGlzcGF0Y2hDb21wdXRlKG1TdGF0ZSwgbnVtR3JvdXBzWCwgbnVtR3Jv
dXBzWSwgbnVtR3JvdXBzWik7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0NvbnRleHRH
TC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Nv
bnRleHRHTC5oCmluZGV4IDc5OGE5MDQzNjY3Li5kOTU3ODBiODg0YiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0NvbnRleHRHTC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9D
b250ZXh0R0wuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBDb250ZXh0R0wgOiBwdWJsaWMgQ29u
dGV4dEltcGwKICAgICBSZW5kZXJidWZmZXJJbXBsICpjcmVhdGVSZW5kZXJidWZmZXIoKSBvdmVy
cmlkZTsKIAogICAgIC8vIEJ1ZmZlciBjcmVhdGlvbgotICAgIEJ1ZmZlckltcGwgKmNyZWF0ZUJ1
ZmZlcigpIG92ZXJyaWRlOworICAgIEJ1ZmZlckltcGwgKmNyZWF0ZUJ1ZmZlcihjb25zdCBnbDo6
QnVmZmVyU3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKIAogICAgIC8vIFZlcnRleCBBcnJheSBjcmVh
dGlvbgogICAgIFZlcnRleEFycmF5SW1wbCAqY3JlYXRlVmVydGV4QXJyYXkoY29uc3QgZ2w6OlZl
cnRleEFycmF5U3RhdGUgJmRhdGEpIG92ZXJyaWRlOwpAQCAtOTYsNiArOTYsOCBAQCBjbGFzcyBD
b250ZXh0R0wgOiBwdWJsaWMgQ29udGV4dEltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMdm9pZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBkcmF3
QXJyYXlzSW5kaXJlY3QoR0xlbnVtIG1vZGUsIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpIG92ZXJy
aWRlOworICAgIGdsOjpFcnJvciBkcmF3RWxlbWVudHNJbmRpcmVjdChHTGVudW0gbW9kZSwgR0xl
bnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpIG92ZXJyaWRlOwogCiAgICAgLy8gQ0hS
T01JVU1fcGF0aF9yZW5kZXJpbmcgaW1wbGVtZW50YXRpb24KICAgICB2b2lkIHN0ZW5jaWxGaWxs
UGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQgbWFzaykg
b3ZlcnJpZGU7CkBAIC0xNTQsNyArMTU2LDcgQEAgY2xhc3MgQ29udGV4dEdMIDogcHVibGljIENv
bnRleHRJbXBsCiAgICAgdm9pZCBwb3BHcm91cE1hcmtlcigpIG92ZXJyaWRlOwogCiAgICAgLy8g
U3RhdGUgc3luYyB3aXRoIGRpcnR5IGJpdHMuCi0gICAgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6
OlN0YXRlICZzdGF0ZSwgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3Zl
cnJpZGU7CisgICAgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmRp
cnR5Qml0cykgb3ZlcnJpZGU7CiAKICAgICAvLyBEaXNqb2ludCB0aW1lciBxdWVyaWVzCiAgICAg
R0xpbnQgZ2V0R1BVRGlzam9pbnQoKSBvdmVycmlkZTsKQEAgLTE3Miw3ICsxNzQsOSBAQCBjbGFz
cyBDb250ZXh0R0wgOiBwdWJsaWMgQ29udGV4dEltcGwKICAgICAvLyBIYW5kbGUgaGVscGVycwog
ICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpnZXRGdW5jdGlvbnMoKSBjb25zdDsKICAgICBTdGF0ZU1h
bmFnZXJHTCAqZ2V0U3RhdGVNYW5hZ2VyKCk7Ci0gICAgY29uc3QgV29ya2Fyb3VuZHNHTCAmZ2V0
V29ya2Fyb3VuZHNHTCgpOworICAgIGNvbnN0IFdvcmthcm91bmRzR0wgJmdldFdvcmthcm91bmRz
R0woKSBjb25zdDsKKworICAgIGdsOjpFcnJvciBkaXNwYXRjaENvbXB1dGUoR0x1aW50IG51bUdy
b3Vwc1gsIEdMdWludCBudW1Hcm91cHNZLCBHTHVpbnQgbnVtR3JvdXBzWikgb3ZlcnJpZGU7CiAK
ICAgcHJpdmF0ZToKICAgICBSZW5kZXJlckdMICptUmVuZGVyZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGxheUdMLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9EaXNw
bGF5R0wuY3BwCmluZGV4IGU1NzUxMzMyNjM2Li5kZTMzYmJiNmMzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Rpc3BsYXlHTC5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L0Rpc3BsYXlHTC5jcHAKQEAgLTIyLDggKzIyLDggQEAKIG5hbWVzcGFjZSByeAogewogCi1EaXNw
bGF5R0w6OkRpc3BsYXlHTCgpCi0gICAgOiBtUmVuZGVyZXIobnVsbHB0cikKK0Rpc3BsYXlHTDo6
RGlzcGxheUdMKGNvbnN0IGVnbDo6RGlzcGxheVN0YXRlICZzdGF0ZSkKKyAgICA6IERpc3BsYXlJ
bXBsKHN0YXRlKSwgbVJlbmRlcmVyKG51bGxwdHIpLCBtQ3VycmVudERyYXdTdXJmYWNlKG51bGxw
dHIpCiB7CiB9CiAKQEAgLTczLDE3ICs3MywzNCBAQCBTdHJlYW1Qcm9kdWNlckltcGwgKkRpc3Bs
YXlHTDo6Y3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYxMigKIAogZWdsOjpFcnJvciBE
aXNwbGF5R0w6Om1ha2VDdXJyZW50KGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsIGVnbDo6U3Vy
ZmFjZSAqcmVhZFN1cmZhY2UsIGdsOjpDb250ZXh0ICpjb250ZXh0KQogewotICAgIGlmICghZHJh
d1N1cmZhY2UpCisgICAgLy8gTm90aWZ5IHRoZSBwcmV2aW91cyBzdXJmYWNlIChpZiBpdCBzdGls
bCBleGlzdHMpIHRoYXQgaXQgaXMgbm8gbG9uZ2VyIGN1cnJlbnQKKyAgICBpZiAobUN1cnJlbnRE
cmF3U3VyZmFjZSAmJgorICAgICAgICBtU3RhdGUuc3VyZmFjZVNldC5maW5kKG1DdXJyZW50RHJh
d1N1cmZhY2UpICE9IG1TdGF0ZS5zdXJmYWNlU2V0LmVuZCgpKQorICAgIHsKKyAgICAgICAgQU5H
TEVfVFJZKEdldEltcGxBczxTdXJmYWNlR0w+KG1DdXJyZW50RHJhd1N1cmZhY2UpLT51bk1ha2VD
dXJyZW50KCkpOworICAgIH0KKyAgICBtQ3VycmVudERyYXdTdXJmYWNlID0gbnVsbHB0cjsKKwor
ICAgIGlmICghY29udGV4dCkKICAgICB7CiAgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9T
VUNDRVNTKTsKICAgICB9CiAKICAgICAvLyBQYXVzZSB0cmFuc2Zvcm0gZmVlZGJhY2sgYmVmb3Jl
IG1ha2luZyBhIG5ldyBzdXJmYWNlIGN1cnJlbnQsIHRvIHdvcmthcm91bmQgYW5nbGVidWcuY29t
LzE0MjYKICAgICBDb250ZXh0R0wgKmdsQ29udGV4dCA9IEdldEltcGxBczxDb250ZXh0R0w+KGNv
bnRleHQpOwotICAgIGdsQ29udGV4dC0+Z2V0U3RhdGVNYW5hZ2VyKCktPnBhdXNlVHJhbnNmb3Jt
RmVlZGJhY2soY29udGV4dC0+Z2V0Q29udGV4dFN0YXRlKCkpOworICAgIGdsQ29udGV4dC0+Z2V0
U3RhdGVNYW5hZ2VyKCktPnBhdXNlVHJhbnNmb3JtRmVlZGJhY2soKTsKIAotICAgIFN1cmZhY2VH
TCAqZ2xEcmF3U3VyZmFjZSA9IEdldEltcGxBczxTdXJmYWNlR0w+KGRyYXdTdXJmYWNlKTsKLSAg
ICByZXR1cm4gZ2xEcmF3U3VyZmFjZS0+bWFrZUN1cnJlbnQoKTsKKyAgICBpZiAoZHJhd1N1cmZh
Y2UgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIFN1cmZhY2VHTCAqZ2xEcmF3U3VyZmFjZSA9
IEdldEltcGxBczxTdXJmYWNlR0w+KGRyYXdTdXJmYWNlKTsKKyAgICAgICAgQU5HTEVfVFJZKGds
RHJhd1N1cmZhY2UtPm1ha2VDdXJyZW50KCkpOworICAgICAgICBtQ3VycmVudERyYXdTdXJmYWNl
ID0gZHJhd1N1cmZhY2U7CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsK
KyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1ha2VDdXJyZW50U3VyZmFj
ZWxlc3MoY29udGV4dCk7CisgICAgfQogfQogCiBnbDo6VmVyc2lvbiBEaXNwbGF5R0w6OmdldE1h
eFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0CkBAIC05MSw0ICsxMDgsMTAgQEAgZ2w6OlZlcnNp
b24gRGlzcGxheUdMOjpnZXRNYXhTdXBwb3J0ZWRFU1ZlcnNpb24oKSBjb25zdAogICAgIEFTU0VS
VChtUmVuZGVyZXIgIT0gbnVsbHB0cik7CiAgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0TWF4U3Vw
cG9ydGVkRVNWZXJzaW9uKCk7CiB9CisKK2VnbDo6RXJyb3IgRGlzcGxheUdMOjptYWtlQ3VycmVu
dFN1cmZhY2VsZXNzKGdsOjpDb250ZXh0ICpjb250ZXh0KQoreworICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Cit9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGxheUdMLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGxheUdM
LmgKaW5kZXggOWY2NTE1ODg2OGIuLjViZWE5Yjc1YmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGxheUdMLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Rpc3BsYXlH
TC5oCkBAIC0xMiw2ICsxMiwxMSBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0Rpc3Bs
YXlJbXBsLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25zR0wuaCIK
IAorbmFtZXNwYWNlIGVnbAoreworY2xhc3MgU3VyZmFjZTsKK30KKwogbmFtZXNwYWNlIHJ4CiB7
CiAKQEAgLTIwLDcgKzI1LDcgQEAgY2xhc3MgUmVuZGVyZXJHTDsKIGNsYXNzIERpc3BsYXlHTCA6
IHB1YmxpYyBEaXNwbGF5SW1wbAogewogICBwdWJsaWM6Ci0gICAgRGlzcGxheUdMKCk7CisgICAg
RGlzcGxheUdMKGNvbnN0IGVnbDo6RGlzcGxheVN0YXRlICZzdGF0ZSk7CiAgICAgfkRpc3BsYXlH
TCgpIG92ZXJyaWRlOwogCiAgICAgZWdsOjpFcnJvciBpbml0aWFsaXplKGVnbDo6RGlzcGxheSAq
ZGlzcGxheSkgb3ZlcnJpZGU7CkBAIC0zOCw3ICs0Myw2IEBAIGNsYXNzIERpc3BsYXlHTCA6IHB1
YmxpYyBEaXNwbGF5SW1wbAogCiAgICAgZWdsOjpFcnJvciBtYWtlQ3VycmVudChlZ2w6OlN1cmZh
Y2UgKmRyYXdTdXJmYWNlLCBlZ2w6OlN1cmZhY2UgKnJlYWRTdXJmYWNlLCBnbDo6Q29udGV4dCAq
Y29udGV4dCkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIGVnbDo6RXJyb3IgZ2V0RHJpdmVyVmVy
c2lvbihzdGQ6OnN0cmluZyAqdmVyc2lvbikgY29uc3QgPSAwOwogICAgIGdsOjpWZXJzaW9uIGdl
dE1heFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0IG92ZXJyaWRlOwogCiAgIHByb3RlY3RlZDoK
QEAgLTQ2LDggKzUwLDExIEBAIGNsYXNzIERpc3BsYXlHTCA6IHB1YmxpYyBEaXNwbGF5SW1wbAog
CiAgIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBGdW5jdGlvbnNHTCAqZ2V0RnVuY3Rpb25z
R0woKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBlZ2w6OkVycm9yIG1ha2VDdXJyZW50U3VyZmFj
ZWxlc3MoZ2w6OkNvbnRleHQgKmNvbnRleHQpOwogCiAgICAgUmVuZGVyZXJHTCAqbVJlbmRlcmVy
OworCisgICAgZWdsOjpTdXJmYWNlICptQ3VycmVudERyYXdTdXJmYWNlOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L0ZlbmNlTlZHTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvRmVuY2VOVkdMLmNwcAppbmRleCBiNDYzMDU0YzM1Ni4uZjRjMzc3ODVhN2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9GZW5jZU5WR0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9GZW5jZU5WR0wuY3BwCkBAIC0zMiwyMCArMzIsMjAgQEAgZ2w6OkVycm9y
IEZlbmNlTlZHTDo6c2V0KEdMZW51bSBjb25kaXRpb24pCiB7CiAgICAgQVNTRVJUKGNvbmRpdGlv
biA9PSBHTF9BTExfQ09NUExFVEVEX05WKTsKICAgICBtRnVuY3Rpb25zLT5zZXRGZW5jZU5WKG1G
ZW5jZSwgY29uZGl0aW9uKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEZlbmNlTlZHTDo6dGVzdChH
TGJvb2xlYW4gKm91dEZpbmlzaGVkKQogewogICAgIEFTU0VSVChvdXRGaW5pc2hlZCk7CiAgICAg
Km91dEZpbmlzaGVkID0gbUZ1bmN0aW9ucy0+dGVzdEZlbmNlTlYobUZlbmNlKTsKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAogZ2w6OkVycm9yIEZlbmNlTlZHTDo6ZmluaXNoKCkKIHsKICAgICBtRnVuY3Rpb25zLT5maW5p
c2hGZW5jZU5WKG1GZW5jZSk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7Cisg
ICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9GZW5jZVN5bmNHTC5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRmVuY2VTeW5j
R0wuY3BwCmluZGV4IGEzNTg5Yjk1ZTljLi44YjZlMzRlNDdjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0ZlbmNlU3luY0dMLmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
RmVuY2VTeW5jR0wuY3BwCkBAIC00MCwyOCArNDAsMjggQEAgZ2w6OkVycm9yIEZlbmNlU3luY0dM
OjpzZXQoR0xlbnVtIGNvbmRpdGlvbiwgR0xiaXRmaWVsZCBmbGFncykKICAgICAgICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiZ2xGZW5jZVN5bmMgZmFpbGVkIHRvIGNyZWF0
ZSBhIEdMc3luYyBvYmplY3QuIik7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9O
T19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBGZW5j
ZVN5bmNHTDo6Y2xpZW50V2FpdChHTGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3V0LCBH
TGVudW0gKm91dFJlc3VsdCkKIHsKICAgICBBU1NFUlQobVN5bmNPYmplY3QgIT0gMCk7CiAgICAg
Km91dFJlc3VsdCA9IG1GdW5jdGlvbnMtPmNsaWVudFdhaXRTeW5jKG1TeW5jT2JqZWN0LCBmbGFn
cywgdGltZW91dCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0
dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBGZW5jZVN5bmNHTDo6c2VydmVyV2Fp
dChHTGJpdGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3V0KQogewogICAgIEFTU0VSVChtU3lu
Y09iamVjdCAhPSAwKTsKICAgICBtRnVuY3Rpb25zLT53YWl0U3luYyhtU3luY09iamVjdCwgZmxh
Z3MsIHRpbWVvdXQpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgRmVuY2VTeW5jR0w6OmdldFN0YXR1
cyhHTGludCAqb3V0UmVzdWx0KQogewogICAgIEFTU0VSVChtU3luY09iamVjdCAhPSAwKTsKICAg
ICBtRnVuY3Rpb25zLT5nZXRTeW5jaXYobVN5bmNPYmplY3QsIEdMX1NZTkNfU1RBVFVTLCAxLCBu
dWxscHRyLCBvdXRSZXN1bHQpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwor
ICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVi
dWZmZXJHTC5jcHAKaW5kZXggZjhiMjUyMjEwNDIuLmU1ODYwODJlNWQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZm
ZXJHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL0ZyYW1lYnVmZmVyR0wuY3BwCkBAIC04LDcgKzgsNyBAQAogCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVidWZmZXJHTC5oIgogCi0jaW5jbHVkZSAiY29tbW9uL0Jp
dFNldEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiY29tbW9uL2JpdHNldF91dGlscy5oIgogI2luY2x1
ZGUgImNvbW1vbi9kZWJ1Zy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHRTdGF0ZS5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL1N0YXRlLmgiCkBAIC04NSwxMCArODUsMTIgQEAgc3RhdGljIHZv
aWQgQmluZEZyYW1lYnVmZmVyQXR0YWNobWVudChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25z
LAogICAgICAgICAgICAgY29uc3QgVGV4dHVyZSAqdGV4dHVyZSAgICAgPSBhdHRhY2htZW50LT5n
ZXRUZXh0dXJlKCk7CiAgICAgICAgICAgICBjb25zdCBUZXh0dXJlR0wgKnRleHR1cmVHTCA9IEdl
dEltcGxBczxUZXh0dXJlR0w+KHRleHR1cmUpOwogCi0gICAgICAgICAgICBpZiAodGV4dHVyZS0+
Z2V0VGFyZ2V0KCkgPT0gR0xfVEVYVFVSRV8yRCkKKyAgICAgICAgICAgIGlmICh0ZXh0dXJlLT5n
ZXRUYXJnZXQoKSA9PSBHTF9URVhUVVJFXzJEIHx8CisgICAgICAgICAgICAgICAgdGV4dHVyZS0+
Z2V0VGFyZ2V0KCkgPT0gR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRSkKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1F
QlVGRkVSLCBhdHRhY2htZW50UG9pbnQsIEdMX1RFWFRVUkVfMkQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlR0wtPmdldFRleHR1cmVJRCgp
LCBhdHRhY2htZW50LT5taXBMZXZlbCgpKTsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBhdHRhY2htZW50UG9pbnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0dXJlLT5nZXRU
YXJnZXQoKSwgdGV4dHVyZUdMLT5nZXRUZXh0dXJlSUQoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQtPm1pcExldmVsKCkpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAodGV4dHVyZS0+Z2V0VGFyZ2V0KCkgPT0g
R0xfVEVYVFVSRV9DVUJFX01BUCkKICAgICAgICAgICAgIHsKQEAgLTEyNyw0NCArMTI5LDY5IEBA
IHN0YXRpYyB2b2lkIEJpbmRGcmFtZWJ1ZmZlckF0dGFjaG1lbnQoY29uc3QgRnVuY3Rpb25zR0wg
KmZ1bmN0aW9ucywKIAogRXJyb3IgRnJhbWVidWZmZXJHTDo6ZGlzY2FyZChzaXplX3QgY291bnQs
IGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAg
IHJldHVybiBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgLy8gZ2xJbnZhbGlkYXRl
RnJhbWVidWZmZXIgYWNjZXB0cyB0aGUgc2FtZSBlbnVtcyBhcyBnbERpc2NhcmRGcmFtZWJ1ZmZl
ckVYVAorICAgIHJldHVybiBpbnZhbGlkYXRlKGNvdW50LCBhdHRhY2htZW50cyk7CiB9CiAKIEVy
cm9yIEZyYW1lYnVmZmVyR0w6OmludmFsaWRhdGUoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0g
KmF0dGFjaG1lbnRzKQogewotICAgIC8vIFNpbmNlIHRoaXMgZnVuY3Rpb24gaXMganVzdCBhIGhp
bnQgYW5kIG5vdCBhdmFpbGFibGUgdW50aWwgT3BlbkdMIDQuMywgb25seSBjYWxsIGl0IGlmIGl0
IGlzIGF2YWlsYWJsZS4KKyAgICBjb25zdCBHTGVudW0gKmZpbmFsQXR0YWNobWVudHNQdHIgPSBh
dHRhY2htZW50czsKKworICAgIHN0ZDo6dmVjdG9yPEdMZW51bT4gbW9kaWZpZWRBdHRhY2htZW50
czsKKyAgICBpZiAobW9kaWZ5SW52YWxpZGF0ZUF0dGFjaG1lbnRzRm9yRW11bGF0ZWREZWZhdWx0
RkJPKGNvdW50LCBhdHRhY2htZW50cywgJm1vZGlmaWVkQXR0YWNobWVudHMpKQorICAgIHsKKyAg
ICAgICAgZmluYWxBdHRhY2htZW50c1B0ciA9IG1vZGlmaWVkQXR0YWNobWVudHMuZGF0YSgpOwor
ICAgIH0KKworICAgIC8vIFNpbmNlIHRoaXMgZnVuY3Rpb24gaXMganVzdCBhIGhpbnQsIG9ubHkg
Y2FsbCBhIG5hdGl2ZSBmdW5jdGlvbiBpZiBpdCBleGlzdHMuCiAgICAgaWYgKG1GdW5jdGlvbnMt
PmludmFsaWRhdGVGcmFtZWJ1ZmZlcikKICAgICB7CiAgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJp
bmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVySUQpOwotICAgICAgICBt
RnVuY3Rpb25zLT5pbnZhbGlkYXRlRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIHN0YXRpY19j
YXN0PEdMc2l6ZWk+KGNvdW50KSwgYXR0YWNobWVudHMpOworICAgICAgICBtRnVuY3Rpb25zLT5p
bnZhbGlkYXRlRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIHN0YXRpY19jYXN0PEdMc2l6ZWk+
KGNvdW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFs
QXR0YWNobWVudHNQdHIpOworICAgIH0KKyAgICBlbHNlIGlmIChtRnVuY3Rpb25zLT5kaXNjYXJk
RnJhbWVidWZmZXIpCisgICAgeworICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcklEKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+
ZGlzY2FyZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBzdGF0aWNfY2FzdDxHTHNpemVpPihj
b3VudCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbEF0dGFj
aG1lbnRzUHRyKTsKICAgICB9CiAKLSAgICByZXR1cm4gRXJyb3IoR0xfTk9fRVJST1IpOworICAg
IHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBFcnJvciBGcmFtZWJ1ZmZlckdMOjppbnZhbGlk
YXRlU3ViKHNpemVfdCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0xlbnVtICphdHRhY2htZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSkKIHsKKworICAgIGNvbnN0IEdMZW51bSAq
ZmluYWxBdHRhY2htZW50c1B0ciA9IGF0dGFjaG1lbnRzOworCisgICAgc3RkOjp2ZWN0b3I8R0xl
bnVtPiBtb2RpZmllZEF0dGFjaG1lbnRzOworICAgIGlmIChtb2RpZnlJbnZhbGlkYXRlQXR0YWNo
bWVudHNGb3JFbXVsYXRlZERlZmF1bHRGQk8oY291bnQsIGF0dGFjaG1lbnRzLCAmbW9kaWZpZWRB
dHRhY2htZW50cykpCisgICAgeworICAgICAgICBmaW5hbEF0dGFjaG1lbnRzUHRyID0gbW9kaWZp
ZWRBdHRhY2htZW50cy5kYXRhKCk7CisgICAgfQorCiAgICAgLy8gU2luY2UgdGhpcyBmdW5jdGlv
biBpcyBqdXN0IGEgaGludCBhbmQgbm90IGF2YWlsYWJsZSB1bnRpbCBPcGVuR0wgNC4zLCBvbmx5
IGNhbGwgaXQgaWYgaXQgaXMgYXZhaWxhYmxlLgogICAgIGlmIChtRnVuY3Rpb25zLT5pbnZhbGlk
YXRlU3ViRnJhbWVidWZmZXIpCiAgICAgewogICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJh
bWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcklEKTsKICAgICAgICAgbUZ1bmN0
aW9ucy0+aW52YWxpZGF0ZVN1YkZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBzdGF0aWNfY2Fz
dDxHTHNpemVpPihjb3VudCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhdHRhY2htZW50cywgYXJlYS54LCBhcmVhLnksIGFyZWEud2lkdGgsIGFyZWEuaGVp
Z2h0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFs
QXR0YWNobWVudHNQdHIsIGFyZWEueCwgYXJlYS55LCBhcmVhLndpZHRoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYS5oZWlnaHQpOwogICAgIH0KIAot
ICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0K
IAogRXJyb3IgRnJhbWVidWZmZXJHTDo6Y2xlYXIoQ29udGV4dEltcGwgKmNvbnRleHQsIEdMYml0
ZmllbGQgbWFzaykKIHsKLSAgICBzeW5jQ2xlYXJTdGF0ZShtYXNrKTsKKyAgICBzeW5jQ2xlYXJT
dGF0ZShjb250ZXh0LCBtYXNrKTsKICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcklEKTsKICAgICBtRnVuY3Rpb25zLT5jbGVhciht
YXNrKTsKIAotICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIE5vRXJy
b3IoKTsKIH0KIAogRXJyb3IgRnJhbWVidWZmZXJHTDo6Y2xlYXJCdWZmZXJmdihDb250ZXh0SW1w
bCAqY29udGV4dCwKQEAgLTE3MiwxMSArMTk5LDExIEBAIEVycm9yIEZyYW1lYnVmZmVyR0w6OmNs
ZWFyQnVmZmVyZnYoQ29udGV4dEltcGwgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKIHsKLSAgICBzeW5jQ2xlYXJCdWZmZXJT
dGF0ZShidWZmZXIsIGRyYXdidWZmZXIpOworICAgIHN5bmNDbGVhckJ1ZmZlclN0YXRlKGNvbnRl
eHQsIGJ1ZmZlciwgZHJhd2J1ZmZlcik7CiAgICAgbVN0YXRlTWFuYWdlci0+YmluZEZyYW1lYnVm
ZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXJJRCk7CiAgICAgbUZ1bmN0aW9ucy0+Y2xl
YXJCdWZmZXJmdihidWZmZXIsIGRyYXdidWZmZXIsIHZhbHVlcyk7CiAKLSAgICByZXR1cm4gRXJy
b3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKIEVycm9yIEZyYW1l
YnVmZmVyR0w6OmNsZWFyQnVmZmVydWl2KENvbnRleHRJbXBsICpjb250ZXh0LApAQCAtMTg0LDEx
ICsyMTEsMTEgQEAgRXJyb3IgRnJhbWVidWZmZXJHTDo6Y2xlYXJCdWZmZXJ1aXYoQ29udGV4dElt
cGwgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBk
cmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1
aW50ICp2YWx1ZXMpCiB7Ci0gICAgc3luY0NsZWFyQnVmZmVyU3RhdGUoYnVmZmVyLCBkcmF3YnVm
ZmVyKTsKKyAgICBzeW5jQ2xlYXJCdWZmZXJTdGF0ZShjb250ZXh0LCBidWZmZXIsIGRyYXdidWZm
ZXIpOwogICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwg
bUZyYW1lYnVmZmVySUQpOwogICAgIG1GdW5jdGlvbnMtPmNsZWFyQnVmZmVydWl2KGJ1ZmZlciwg
ZHJhd2J1ZmZlciwgdmFsdWVzKTsKIAotICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJPUik7Cisg
ICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0KIAogRXJyb3IgRnJhbWVidWZmZXJHTDo6Y2xlYXJCdWZm
ZXJpdihDb250ZXh0SW1wbCAqY29udGV4dCwKQEAgLTE5NiwxMSArMjIzLDExIEBAIEVycm9yIEZy
YW1lYnVmZmVyR0w6OmNsZWFyQnVmZmVyaXYoQ29udGV4dEltcGwgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRyYXdidWZmZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZXMpCiB7Ci0gICAgc3lu
Y0NsZWFyQnVmZmVyU3RhdGUoYnVmZmVyLCBkcmF3YnVmZmVyKTsKKyAgICBzeW5jQ2xlYXJCdWZm
ZXJTdGF0ZShjb250ZXh0LCBidWZmZXIsIGRyYXdidWZmZXIpOwogICAgIG1TdGF0ZU1hbmFnZXIt
PmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVySUQpOwogICAgIG1G
dW5jdGlvbnMtPmNsZWFyQnVmZmVyaXYoYnVmZmVyLCBkcmF3YnVmZmVyLCB2YWx1ZXMpOwogCi0g
ICAgcmV0dXJuIEVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gTm9FcnJvcigpOwogfQog
CiBFcnJvciBGcmFtZWJ1ZmZlckdMOjpjbGVhckJ1ZmZlcmZpKENvbnRleHRJbXBsICpjb250ZXh0
LApAQCAtMjA5LDExICsyMzYsMTEgQEAgRXJyb3IgRnJhbWVidWZmZXJHTDo6Y2xlYXJCdWZmZXJm
aShDb250ZXh0SW1wbCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCBkZXB0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgc3RlbmNpbCkKIHsKLSAgICBzeW5jQ2xlYXJCdWZmZXJTdGF0ZShidWZmZXIsIGRyYXdidWZm
ZXIpOworICAgIHN5bmNDbGVhckJ1ZmZlclN0YXRlKGNvbnRleHQsIGJ1ZmZlciwgZHJhd2J1ZmZl
cik7CiAgICAgbVN0YXRlTWFuYWdlci0+YmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBt
RnJhbWVidWZmZXJJRCk7CiAgICAgbUZ1bmN0aW9ucy0+Y2xlYXJCdWZmZXJmaShidWZmZXIsIGRy
YXdidWZmZXIsIGRlcHRoLCBzdGVuY2lsKTsKIAotICAgIHJldHVybiBFcnJvcihHTF9OT19FUlJP
Uik7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0KIAogR0xlbnVtIEZyYW1lYnVmZmVyR0w6Omdl
dEltcGxlbWVudGF0aW9uQ29sb3JSZWFkRm9ybWF0KCkgY29uc3QKQEAgLTI4Myw1OSArMzEwLDYz
IEBAIEVycm9yIEZyYW1lYnVmZmVyR0w6OmJsaXQoQ29udGV4dEltcGwgKmNvbnRleHQsCiAgICAg
Y29uc3QgRnJhbWVidWZmZXIgKnNvdXJjZUZyYW1lYnVmZmVyICAgICA9IGNvbnRleHQtPmdldEdM
U3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKICAgICBjb25zdCBGcmFtZWJ1ZmZlciAqZGVz
dEZyYW1lYnVmZmVyICAgICAgID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldERyYXdGcmFtZWJ1
ZmZlcigpOwogCi0gICAgYm9vbCBuZWVkTWFudWFsQ29sb3JCbGl0ID0gZmFsc2U7CisgICAgY29u
c3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICpjb2xvclJlYWRBdHRhY2htZW50ID0gc291cmNlRnJh
bWVidWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZlcigpOwogCi0gICAgLy8gVGhlIG1hbnVhbCBTUkdC
IGJsaXQgaXMgb25seSBuZWVkZWQgdG8gcGVyZm9ybSBjb3JyZWN0IGxpbmVhciBpbnRlcnBvbGF0
aW9uLiBXZSBkb24ndAotICAgIC8vIG5lZWQgdG8gbWFrZSBzdXJlIHRoZXJlIGlzIFNSR0IgY29u
dmVyc2lvbiBmb3IgTkVBUkVTVCBhcyB0aGUgdmFsdWVzIHdpbGwgYmUgY29waWVkLgotICAgIGlm
IChmaWx0ZXIgIT0gR0xfTkVBUkVTVCkKKyAgICBHTHNpemVpIHJlYWRBdHRhY2htZW50U2FtcGxl
cyA9IDA7CisgICAgaWYgKGNvbG9yUmVhZEF0dGFjaG1lbnQgIT0gbnVsbHB0cikKICAgICB7Cisg
ICAgICAgIHJlYWRBdHRhY2htZW50U2FtcGxlcyA9IGNvbG9yUmVhZEF0dGFjaG1lbnQtPmdldFNh
bXBsZXMoKTsKKyAgICB9CiAKLSAgICAgICAgLy8gUHJpb3IgdG8gT3BlbkdMIDQuNCBCbGl0RnJh
bWVidWZmZXIgKHNlY3Rpb24gMTguMy4xIG9mIEdMIDQuMyBjb3JlIHByb2ZpbGUpIHJlYWRzOgot
ICAgICAgICAvLyAgICAgIFdoZW4gdmFsdWVzIGFyZSB0YWtlbiBmcm9tIHRoZSByZWFkIGJ1ZmZl
ciwgbm8gbGluZWFyaXphdGlvbiBpcyBwZXJmb3JtZWQsIGV2ZW4KLSAgICAgICAgLy8gICAgICBp
ZiB0aGUgZm9ybWF0IG9mIHRoZSBidWZmZXIgaXMgU1JHQi4KLSAgICAgICAgLy8gU3RhcnRpbmcg
ZnJvbSBPcGVuR0wgNC40IChzZWN0aW9uIDE4LjMuMSkgaXQgcmVhZHM6Ci0gICAgICAgIC8vICAg
ICAgV2hlbiB2YWx1ZXMgYXJlIHRha2VuIGZyb20gdGhlIHJlYWQgYnVmZmVyLCBpZiBGUkFNRUJV
RkZFUl9TUkdCIGlzIGVuYWJsZWQgYW5kIHRoZQotICAgICAgICAvLyAgICAgIHZhbHVlIG9mIEZS
QU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkcgZm9yIHRoZSBmcmFtZWJ1ZmZlciBh
dHRhY2htZW50Ci0gICAgICAgIC8vICAgICAgY29ycmVzcG9uZGluZyB0byB0aGUgcmVhZCBidWZm
ZXIgaXMgU1JHQiwgdGhlIHJlZCwgZ3JlZW4sIGFuZCBibHVlIGNvbXBvbmVudHMgYXJlCi0gICAg
ICAgIC8vICAgICAgY29udmVydGVkIGZyb20gdGhlIG5vbi1saW5lYXIgc1JHQiBjb2xvciBzcGFj
ZSBhY2NvcmRpbmcgWy4uLl0uCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IEZyYW1lYnVm
ZmVyQXR0YWNobWVudCAqcmVhZEF0dGFjaG1lbnQgPSBzb3VyY2VGcmFtZWJ1ZmZlci0+Z2V0UmVh
ZENvbG9yYnVmZmVyKCk7Ci0gICAgICAgICAgICBib29sIHNvdXJjZVNSR0IgPQotICAgICAgICAg
ICAgICAgIHJlYWRBdHRhY2htZW50ICE9IG51bGxwdHIgJiYgcmVhZEF0dGFjaG1lbnQtPmdldENv
bG9yRW5jb2RpbmcoKSA9PSBHTF9TUkdCOwotICAgICAgICAgICAgbmVlZE1hbnVhbENvbG9yQmxp
dCA9Ci0gICAgICAgICAgICAgICAgbmVlZE1hbnVhbENvbG9yQmxpdCB8fCAoc291cmNlU1JHQiAm
JiBtRnVuY3Rpb25zLT5pc0F0TW9zdEdMKGdsOjpWZXJzaW9uKDQsIDMpKSk7Ci0gICAgICAgIH0K
KyAgICBib29sIG5lZWRNYW51YWxDb2xvckJsaXQgPSBmYWxzZTsKIAotICAgICAgICAvLyBQcmlv
ciB0byBPcGVuR0wgNC4yIEJsaXRGcmFtZWJ1ZmZlciAoc2VjdGlvbiA0LjMuMiBvZiBHTCA0LjEg
Y29yZSBwcm9maWxlKSByZWFkczoKLSAgICAgICAgLy8gICAgICBCbGl0IG9wZXJhdGlvbnMgYnlw
YXNzIHRoZSBmcmFnbWVudCBwaXBlbGluZS4gVGhlIG9ubHkgZnJhZ21lbnQgb3BlcmF0aW9ucyB3
aGljaAotICAgICAgICAvLyAgICAgIGFmZmVjdCBhIGJsaXQgYXJlIHRoZSBwaXhlbCBvd25lcnNo
aXAgdGVzdCBhbmQgc2Npc3NvciB0ZXN0LgotICAgICAgICAvLyBTdGFydGluZyBmcm9tIE9wZW5H
TCA0LjIgKHNlY3Rpb24gNC4zLjIpIGl0IHJlYWRzOgotICAgICAgICAvLyAgICAgIFdoZW4gdmFs
dWVzIGFyZSB3cml0dGVuIHRvIHRoZSBkcmF3IGJ1ZmZlcnMsIGJsaXQgb3BlcmF0aW9ucyBieXBh
c3MgdGhlIGZyYWdtZW50Ci0gICAgICAgIC8vICAgICAgcGlwZWxpbmUuIFRoZSBvbmx5IGZyYWdt
ZW50IG9wZXJhdGlvbnMgd2hpY2ggYWZmZWN0IGEgYmxpdCBhcmUgdGhlIHBpeGVsIG93bmVyc2hp
cAotICAgICAgICAvLyAgICAgIHRlc3QsICB0aGUgc2Npc3NvciB0ZXN0IGFuZCBzUkdCIGNvbnZl
cnNpb24uCi0gICAgICAgIGlmICghbmVlZE1hbnVhbENvbG9yQmxpdCkKKyAgICAvLyBUT0RPKGN3
YWxsZXopIHdoZW4gdGhlIGZpbHRlciBpcyBMSU5FQVIgYW5kIGJvdGggc291cmNlIGFuZCBkZXN0
aW5hdGlvbiBhcmUgU1JHQiwgd2UKKyAgICAvLyBjb3VsZCBhdm9pZCBkb2luZyBhIG1hbnVhbCBi
bGl0LgorCisgICAgLy8gUHJpb3IgdG8gT3BlbkdMIDQuNCBCbGl0RnJhbWVidWZmZXIgKHNlY3Rp
b24gMTguMy4xIG9mIEdMIDQuMyBjb3JlIHByb2ZpbGUpIHJlYWRzOgorICAgIC8vICAgICAgV2hl
biB2YWx1ZXMgYXJlIHRha2VuIGZyb20gdGhlIHJlYWQgYnVmZmVyLCBubyBsaW5lYXJpemF0aW9u
IGlzIHBlcmZvcm1lZCwgZXZlbgorICAgIC8vICAgICAgaWYgdGhlIGZvcm1hdCBvZiB0aGUgYnVm
ZmVyIGlzIFNSR0IuCisgICAgLy8gU3RhcnRpbmcgZnJvbSBPcGVuR0wgNC40IChzZWN0aW9uIDE4
LjMuMSkgaXQgcmVhZHM6CisgICAgLy8gICAgICBXaGVuIHZhbHVlcyBhcmUgdGFrZW4gZnJvbSB0
aGUgcmVhZCBidWZmZXIsIGlmIEZSQU1FQlVGRkVSX1NSR0IgaXMgZW5hYmxlZCBhbmQgdGhlCisg
ICAgLy8gICAgICB2YWx1ZSBvZiBGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5H
IGZvciB0aGUgZnJhbWVidWZmZXIgYXR0YWNobWVudAorICAgIC8vICAgICAgY29ycmVzcG9uZGlu
ZyB0byB0aGUgcmVhZCBidWZmZXIgaXMgU1JHQiwgdGhlIHJlZCwgZ3JlZW4sIGFuZCBibHVlIGNv
bXBvbmVudHMgYXJlCisgICAgLy8gICAgICBjb252ZXJ0ZWQgZnJvbSB0aGUgbm9uLWxpbmVhciBz
UkdCIGNvbG9yIHNwYWNlIGFjY29yZGluZyBbLi4uXS4KKyAgICB7CisgICAgICAgIGJvb2wgc291
cmNlU1JHQiA9IGNvbG9yUmVhZEF0dGFjaG1lbnQgIT0gbnVsbHB0ciAmJgorICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb2xvclJlYWRBdHRhY2htZW50LT5nZXRDb2xvckVuY29kaW5nKCkgPT0g
R0xfU1JHQjsKKyAgICAgICAgbmVlZE1hbnVhbENvbG9yQmxpdCA9CisgICAgICAgICAgICBuZWVk
TWFudWFsQ29sb3JCbGl0IHx8IChzb3VyY2VTUkdCICYmIG1GdW5jdGlvbnMtPmlzQXRNb3N0R0wo
Z2w6OlZlcnNpb24oNCwgMykpKTsKKyAgICB9CisKKyAgICAvLyBQcmlvciB0byBPcGVuR0wgNC4y
IEJsaXRGcmFtZWJ1ZmZlciAoc2VjdGlvbiA0LjMuMiBvZiBHTCA0LjEgY29yZSBwcm9maWxlKSBy
ZWFkczoKKyAgICAvLyAgICAgIEJsaXQgb3BlcmF0aW9ucyBieXBhc3MgdGhlIGZyYWdtZW50IHBp
cGVsaW5lLiBUaGUgb25seSBmcmFnbWVudCBvcGVyYXRpb25zIHdoaWNoCisgICAgLy8gICAgICBh
ZmZlY3QgYSBibGl0IGFyZSB0aGUgcGl4ZWwgb3duZXJzaGlwIHRlc3QgYW5kIHNjaXNzb3IgdGVz
dC4KKyAgICAvLyBTdGFydGluZyBmcm9tIE9wZW5HTCA0LjIgKHNlY3Rpb24gNC4zLjIpIGl0IHJl
YWRzOgorICAgIC8vICAgICAgV2hlbiB2YWx1ZXMgYXJlIHdyaXR0ZW4gdG8gdGhlIGRyYXcgYnVm
ZmVycywgYmxpdCBvcGVyYXRpb25zIGJ5cGFzcyB0aGUgZnJhZ21lbnQKKyAgICAvLyAgICAgIHBp
cGVsaW5lLiBUaGUgb25seSBmcmFnbWVudCBvcGVyYXRpb25zIHdoaWNoIGFmZmVjdCBhIGJsaXQg
YXJlIHRoZSBwaXhlbCBvd25lcnNoaXAKKyAgICAvLyAgICAgIHRlc3QsICB0aGUgc2Npc3NvciB0
ZXN0IGFuZCBzUkdCIGNvbnZlcnNpb24uCisgICAgaWYgKCFuZWVkTWFudWFsQ29sb3JCbGl0KQor
ICAgIHsKKyAgICAgICAgYm9vbCBkZXN0U1JHQiA9IGZhbHNlOworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGRlc3RGcmFtZWJ1ZmZlci0+Z2V0RHJhd2J1ZmZlclN0YXRlQ291bnQoKTsg
KytpKQogICAgICAgICB7Ci0gICAgICAgICAgICBib29sIGRlc3RTUkdCID0gZmFsc2U7Ci0gICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRlc3RGcmFtZWJ1ZmZlci0+Z2V0RHJhd2J1
ZmZlclN0YXRlQ291bnQoKTsgKytpKQorICAgICAgICAgICAgY29uc3QgRnJhbWVidWZmZXJBdHRh
Y2htZW50ICphdHRhY2htZW50ID0gZGVzdEZyYW1lYnVmZmVyLT5nZXREcmF3QnVmZmVyKGkpOwor
ICAgICAgICAgICAgaWYgKGF0dGFjaG1lbnQgJiYgYXR0YWNobWVudC0+Z2V0Q29sb3JFbmNvZGlu
ZygpID09IEdMX1NSR0IpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgRnJh
bWVidWZmZXJBdHRhY2htZW50ICphdHRhY2htZW50ID0gZGVzdEZyYW1lYnVmZmVyLT5nZXREcmF3
QnVmZmVyKGkpOwotICAgICAgICAgICAgICAgIGlmIChhdHRhY2htZW50ICYmIGF0dGFjaG1lbnQt
PmdldENvbG9yRW5jb2RpbmcoKSA9PSBHTF9TUkdCKQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgZGVzdFNSR0IgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVzdFNSR0IgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBuZWVk
TWFudWFsQ29sb3JCbGl0ID0KLSAgICAgICAgICAgICAgICBuZWVkTWFudWFsQ29sb3JCbGl0IHx8
IChkZXN0U1JHQiAmJiBtRnVuY3Rpb25zLT5pc0F0TW9zdEdMKGdsOjpWZXJzaW9uKDQsIDEpKSk7
CiAgICAgICAgIH0KKworICAgICAgICBuZWVkTWFudWFsQ29sb3JCbGl0ID0KKyAgICAgICAgICAg
IG5lZWRNYW51YWxDb2xvckJsaXQgfHwgKGRlc3RTUkdCICYmIG1GdW5jdGlvbnMtPmlzQXRNb3N0
R0woZ2w6OlZlcnNpb24oNCwgMSkpKTsKICAgICB9CiAKICAgICAvLyBFbmFibGUgRlJBTUVCVUZG
RVJfU1JHQiBpZiBuZWVkZWQKLSAgICBzeW5jRHJhd1N0YXRlKCk7CisgICAgbVN0YXRlTWFuYWdl
ci0+c2V0RnJhbWVidWZmZXJTUkdCRW5hYmxlZEZvckZyYW1lYnVmZmVyKGNvbnRleHQtPmdldENv
bnRleHRTdGF0ZSgpLCB0cnVlLCB0aGlzKTsKIAogICAgIEdMZW51bSBibGl0TWFzayA9IG1hc2s7
Ci0gICAgaWYgKG5lZWRNYW51YWxDb2xvckJsaXQgJiYgKG1hc2sgJiBHTF9DT0xPUl9CVUZGRVJf
QklUKSkKKyAgICBpZiAobmVlZE1hbnVhbENvbG9yQmxpdCAmJiAobWFzayAmIEdMX0NPTE9SX0JV
RkZFUl9CSVQpICYmIHJlYWRBdHRhY2htZW50U2FtcGxlcyA8PSAxKQogICAgIHsKICAgICAgICAg
QU5HTEVfVFJZKG1CbGl0dGVyLT5ibGl0Q29sb3JCdWZmZXJXaXRoU2hhZGVyKHNvdXJjZUZyYW1l
YnVmZmVyLCBkZXN0RnJhbWVidWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VBcmVhLCBkZXN0QXJlYSwgZmlsdGVyKSk7CkBA
IC0zNTgsMTggKzM4OSwyNSBAQCBFcnJvciBGcmFtZWJ1ZmZlckdMOjpibGl0KENvbnRleHRJbXBs
ICpjb250ZXh0LAogICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCitnbDo6RXJyb3IgRnJh
bWVidWZmZXJHTDo6Z2V0U2FtcGxlUG9zaXRpb24oc2l6ZV90IGluZGV4LCBHTGZsb2F0ICp4eSkg
Y29uc3QKK3sKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIG1GcmFtZWJ1ZmZlcklEKTsKKyAgICBtRnVuY3Rpb25zLT5nZXRNdWx0aXNhbXBsZWZ2KEdM
X1NBTVBMRV9QT1NJVElPTiwgc3RhdGljX2Nhc3Q8R0x1aW50PihpbmRleCksIHh5KTsKKyAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKwogYm9vbCBGcmFtZWJ1ZmZlckdMOjpjaGVja1N0YXR1
cygpIGNvbnN0CiB7CiAgICAgbVN0YXRlTWFuYWdlci0+YmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCBtRnJhbWVidWZmZXJJRCk7CiAgICAgR0xlbnVtIHN0YXR1cyA9IG1GdW5jdGlvbnMt
PmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpOwogICAgIGlmIChzdGF0dXMg
IT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCiAgICAgewotICAgICAgICBBTkdMRVBsYXRmb3Jt
Q3VycmVudCgpLT5sb2dXYXJuaW5nKCJHTCBmcmFtZWJ1ZmZlciByZXR1cm5lZCBpbmNvbXBsZXRl
LiIpOworICAgICAgICBXQVJOKCkgPDwgIkdMIGZyYW1lYnVmZmVyIHJldHVybmVkIGluY29tcGxl
dGUuIjsKICAgICB9CiAgICAgcmV0dXJuIChzdGF0dXMgPT0gR0xfRlJBTUVCVUZGRVJfQ09NUExF
VEUpOwogfQogCi12b2lkIEZyYW1lYnVmZmVyR0w6OnN5bmNTdGF0ZShjb25zdCBGcmFtZWJ1ZmZl
cjo6RGlydHlCaXRzICZkaXJ0eUJpdHMpCit2b2lkIEZyYW1lYnVmZmVyR0w6OnN5bmNTdGF0ZShD
b250ZXh0SW1wbCAqY29udGV4dEltcGwsIGNvbnN0IEZyYW1lYnVmZmVyOjpEaXJ0eUJpdHMgJmRp
cnR5Qml0cykKIHsKICAgICAvLyBEb24ndCBuZWVkIHRvIHN5bmMgc3RhdGUgZm9yIHRoZSBkZWZh
dWx0IEZCTy4KICAgICBpZiAobUlzRGVmYXVsdCkKQEAgLTQwMSw2ICs0MzksMjMgQEAgdm9pZCBG
cmFtZWJ1ZmZlckdMOjpzeW5jU3RhdGUoY29uc3QgRnJhbWVidWZmZXI6OkRpcnR5Qml0cyAmZGly
dHlCaXRzKQogICAgICAgICAgICAgY2FzZSBGcmFtZWJ1ZmZlcjo6RElSVFlfQklUX1JFQURfQlVG
RkVSOgogICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnJlYWRCdWZmZXIobVN0YXRlLmdldFJl
YWRCdWZmZXJTdGF0ZSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgRnJhbWVidWZmZXI6OkRJUlRZX0JJVF9ERUZBVUxUX1dJRFRIOgorICAgICAgICAgICAgICAg
IG1GdW5jdGlvbnMtPmZyYW1lYnVmZmVyUGFyYW1ldGVyaShHTF9GUkFNRUJVRkZFUiwgR0xfRlJB
TUVCVUZGRVJfREVGQVVMVF9XSURUSCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbVN0YXRlLmdldERlZmF1bHRXaWR0aCgpKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRnJhbWVidWZmZXI6OkRJUlRZX0JJVF9ERUZB
VUxUX0hFSUdIVDoKKyAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT5mcmFtZWJ1ZmZlclBhcmFt
ZXRlcmkoR0xfRlJBTUVCVUZGRVIsIEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfSEVJR0hULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0
RGVmYXVsdEhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgRnJhbWVidWZmZXI6OkRJUlRZX0JJVF9ERUZBVUxUX1NBTVBMRVM6CisgICAgICAgICAgICAg
ICAgbUZ1bmN0aW9ucy0+ZnJhbWVidWZmZXJQYXJhbWV0ZXJpKEdMX0ZSQU1FQlVGRkVSLCBHTF9G
UkFNRUJVRkZFUl9ERUZBVUxUX1NBTVBMRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXREZWZhdWx0U2FtcGxlcygpKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRnJhbWVidWZmZXI6OkRJUlRZX0JJ
VF9ERUZBVUxUX0ZJWEVEX1NBTVBMRV9MT0NBVElPTlM6CisgICAgICAgICAgICAgICAgbUZ1bmN0
aW9ucy0+ZnJhbWVidWZmZXJQYXJhbWV0ZXJpKEdMX0ZSQU1FQlVGRkVSLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GUkFNRUJVRkZFUl9ERUZB
VUxUX0ZJWEVEX1NBTVBMRV9MT0NBVElPTlMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXREZWZhdWx0Rml4ZWRTYW1wbGVMb2NhdGlv
bnMoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIEFTU0VSVChGcmFtZWJ1ZmZlcjo6RElSVFlfQklU
X0NPTE9SX0FUVEFDSE1FTlRfMCA9PSAwICYmCkBAIC00MjEsMjAgKzQ3NiwxMiBAQCBHTHVpbnQg
RnJhbWVidWZmZXJHTDo6Z2V0RnJhbWVidWZmZXJJRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1GcmFt
ZWJ1ZmZlcklEOwogfQogCi12b2lkIEZyYW1lYnVmZmVyR0w6OnN5bmNEcmF3U3RhdGUoKSBjb25z
dAorYm9vbCBGcmFtZWJ1ZmZlckdMOjppc0RlZmF1bHQoKSBjb25zdAogewotICAgIGlmIChtRnVu
Y3Rpb25zLT5zdGFuZGFyZCA9PSBTVEFOREFSRF9HTF9ERVNLVE9QKQotICAgIHsKLSAgICAgICAg
Ly8gRW5hYmxlIFNSR0IgYmxlbmRpbmcgZm9yIGFsbCBmcmFtZWJ1ZmZlcnMgZXhjZXB0IHRoZSBk
ZWZhdWx0IGZyYW1lYnVmZmVyIG9uIERlc2t0b3AKLSAgICAgICAgLy8gT3BlbkdMLgotICAgICAg
ICAvLyBXaGVuIFNSR0IgYmxlbmRpbmcgaXMgZW5hYmxlZCwgb25seSBTUkdCIGNhcGFibGUgZm9y
bWF0cyB3aWxsIHVzZSBpdCBidXQgdGhlIGRlZmF1bHQKLSAgICAgICAgLy8gZnJhbWVidWZmZXIg
d2lsbCBhbHdheXMgdXNlIGl0IGlmIGl0IGlzIGVuYWJsZWQuCi0gICAgICAgIC8vIFRPRE8oZ2Vv
ZmZsYW5nKTogVXBkYXRlIHRoaXMgd2hlbiB0aGUgZnJhbWVidWZmZXIgYmluZGluZyBkaXJ0eSBj
aGFuZ2VzLCB3aGVuIGl0IGV4aXN0cy4KLSAgICAgICAgbVN0YXRlTWFuYWdlci0+c2V0RnJhbWVi
dWZmZXJTUkdCRW5hYmxlZCghbUlzRGVmYXVsdCk7Ci0gICAgfQorICAgIHJldHVybiBtSXNEZWZh
dWx0OwogfQogCi12b2lkIEZyYW1lYnVmZmVyR0w6OnN5bmNDbGVhclN0YXRlKEdMYml0ZmllbGQg
bWFzaykKK3ZvaWQgRnJhbWVidWZmZXJHTDo6c3luY0NsZWFyU3RhdGUoQ29udGV4dEltcGwgKmNv
bnRleHQsIEdMYml0ZmllbGQgbWFzaykKIHsKICAgICBpZiAobUZ1bmN0aW9ucy0+c3RhbmRhcmQg
PT0gU1RBTkRBUkRfR0xfREVTS1RPUCkKICAgICB7CkBAIC00NTEsMTYgKzQ5OCwxNiBAQCB2b2lk
IEZyYW1lYnVmZmVyR0w6OnN5bmNDbGVhclN0YXRlKEdMYml0ZmllbGQgbWFzaykKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG1TdGF0ZU1hbmFnZXItPnNl
dEZyYW1lYnVmZmVyU1JHQkVuYWJsZWQoaGFzU1JHQkF0dGFjaG1lbnQpOworICAgICAgICAgICAg
bVN0YXRlTWFuYWdlci0+c2V0RnJhbWVidWZmZXJTUkdCRW5hYmxlZChjb250ZXh0LT5nZXRDb250
ZXh0U3RhdGUoKSwgaGFzU1JHQkF0dGFjaG1lbnQpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UK
ICAgICAgICAgewotICAgICAgICAgICAgbVN0YXRlTWFuYWdlci0+c2V0RnJhbWVidWZmZXJTUkdC
RW5hYmxlZCghbUlzRGVmYXVsdCk7CisgICAgICAgICAgICBtU3RhdGVNYW5hZ2VyLT5zZXRGcmFt
ZWJ1ZmZlclNSR0JFbmFibGVkKGNvbnRleHQtPmdldENvbnRleHRTdGF0ZSgpLCAhbUlzRGVmYXVs
dCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgRnJhbWVidWZmZXJHTDo6c3luY0NsZWFy
QnVmZmVyU3RhdGUoR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd0J1ZmZlcikKK3ZvaWQgRnJhbWVi
dWZmZXJHTDo6c3luY0NsZWFyQnVmZmVyU3RhdGUoQ29udGV4dEltcGwgKmNvbnRleHQsIEdMZW51
bSBidWZmZXIsIEdMaW50IGRyYXdCdWZmZXIpCiB7CiAgICAgaWYgKG1GdW5jdGlvbnMtPnN0YW5k
YXJkID09IFNUQU5EQVJEX0dMX0RFU0tUT1ApCiAgICAgewpAQCAtNDgzLDE1ICs1MzAsNTQgQEAg
dm9pZCBGcmFtZWJ1ZmZlckdMOjpzeW5jQ2xlYXJCdWZmZXJTdGF0ZShHTGVudW0gYnVmZmVyLCBH
TGludCBkcmF3QnVmZmVyKQogCiAgICAgICAgICAgICBpZiAoYXR0YWNobWVudCAhPSBudWxscHRy
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1TdGF0ZU1hbmFnZXItPnNldEZyYW1l
YnVmZmVyU1JHQkVuYWJsZWQoYXR0YWNobWVudC0+Z2V0Q29sb3JFbmNvZGluZygpID09IEdMX1NS
R0IpOworICAgICAgICAgICAgICAgIG1TdGF0ZU1hbmFnZXItPnNldEZyYW1lYnVmZmVyU1JHQkVu
YWJsZWQoY29udGV4dC0+Z2V0Q29udGV4dFN0YXRlKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50LT5nZXRDb2xvckVu
Y29kaW5nKCkgPT0gR0xfU1JHQik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
ZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICBtU3RhdGVNYW5hZ2VyLT5zZXRGcmFtZWJ1ZmZl
clNSR0JFbmFibGVkKCFtSXNEZWZhdWx0KTsKKyAgICAgICAgICAgIG1TdGF0ZU1hbmFnZXItPnNl
dEZyYW1lYnVmZmVyU1JHQkVuYWJsZWQoY29udGV4dC0+Z2V0Q29udGV4dFN0YXRlKCksICFtSXNE
ZWZhdWx0KTsKICAgICAgICAgfQogICAgIH0KIH0KKworYm9vbCBGcmFtZWJ1ZmZlckdMOjptb2Rp
ZnlJbnZhbGlkYXRlQXR0YWNobWVudHNGb3JFbXVsYXRlZERlZmF1bHRGQk8oCisgICAgc2l6ZV90
IGNvdW50LAorICAgIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMsCisgICAgc3RkOjp2ZWN0b3I8
R0xlbnVtPiAqbW9kaWZpZWRBdHRhY2htZW50cykgY29uc3QKK3sKKyAgICBib29sIG5lZWRzTW9k
aWZpY2F0aW9uID0gbUlzRGVmYXVsdCAmJiBtRnJhbWVidWZmZXJJRCAhPSAwOworICAgIGlmICgh
bmVlZHNNb2RpZmljYXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgbW9kaWZpZWRBdHRhY2htZW50cy0+cmVzaXplKGNvdW50KTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgeworICAgICAgICBzd2l0Y2ggKGF0dGFjaG1l
bnRzW2ldKQorICAgICAgICB7CisgICAgICAgICAgICBjYXNlIEdMX0NPTE9SOgorICAgICAgICAg
ICAgICAgICgqbW9kaWZpZWRBdHRhY2htZW50cylbaV0gPSBHTF9DT0xPUl9BVFRBQ0hNRU5UMDsK
KyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBHTF9ERVBUSDoKKyAg
ICAgICAgICAgICAgICAoKm1vZGlmaWVkQXR0YWNobWVudHMpW2ldID0gR0xfREVQVEhfQVRUQUNI
TUVOVDsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBHTF9TVEVO
Q0lMOgorICAgICAgICAgICAgICAgICgqbW9kaWZpZWRBdHRhY2htZW50cylbaV0gPSBHTF9TVEVO
Q0lMX0FUVEFDSE1FTlQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiBnbDo6RXJy
b3IgRnJhbWVidWZmZXJHTDo6cmVhZFBpeGVsc1Jvd0J5Um93V29ya2Fyb3VuZChjb25zdCBnbDo6
UmVjdGFuZ2xlICZhcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0ZyYW1lYnVmZmVy
R0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9G
cmFtZWJ1ZmZlckdMLmgKaW5kZXggYjAyYjdiOWY0NmMuLjMxZDEzZDY4MGM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnJhbWVi
dWZmZXJHTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmgKQEAgLTc2LDE3ICs3NiwyMyBAQCBjbGFzcyBGcmFtZWJ1
ZmZlckdMIDogcHVibGljIEZyYW1lYnVmZmVySW1wbAogICAgICAgICAgICAgICAgICAgIEdMYml0
ZmllbGQgbWFzaywKICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmlsdGVyKSBvdmVycmlkZTsK
IAotICAgIGJvb2wgY2hlY2tTdGF0dXMoKSBjb25zdCBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Ig
Z2V0U2FtcGxlUG9zaXRpb24oc2l6ZV90IGluZGV4LCBHTGZsb2F0ICp4eSkgY29uc3Qgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0
cyAmZGlydHlCaXRzKSBvdmVycmlkZTsKKyAgICBib29sIGNoZWNrU3RhdHVzKCkgY29uc3Qgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIHN5bmNEcmF3U3RhdGUoKSBjb25zdDsKKyAgICB2b2lkIHN5bmNT
dGF0ZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGly
dHlCaXRzICZkaXJ0eUJpdHMpIG92ZXJyaWRlOwogCiAgICAgR0x1aW50IGdldEZyYW1lYnVmZmVy
SUQoKSBjb25zdDsKKyAgICBib29sIGlzRGVmYXVsdCgpIGNvbnN0OwogCiAgIHByaXZhdGU6Ci0g
ICAgdm9pZCBzeW5jQ2xlYXJTdGF0ZShHTGJpdGZpZWxkIG1hc2spOwotICAgIHZvaWQgc3luY0Ns
ZWFyQnVmZmVyU3RhdGUoR0xlbnVtIGJ1ZmZlciwgR0xpbnQgZHJhd0J1ZmZlcik7CisgICAgdm9p
ZCBzeW5jQ2xlYXJTdGF0ZShDb250ZXh0SW1wbCAqY29udGV4dCwgR0xiaXRmaWVsZCBtYXNrKTsK
KyAgICB2b2lkIHN5bmNDbGVhckJ1ZmZlclN0YXRlKENvbnRleHRJbXBsICpjb250ZXh0LCBHTGVu
dW0gYnVmZmVyLCBHTGludCBkcmF3QnVmZmVyKTsKKworICAgIGJvb2wgbW9kaWZ5SW52YWxpZGF0
ZUF0dGFjaG1lbnRzRm9yRW11bGF0ZWREZWZhdWx0RkJPKAorICAgICAgICBzaXplX3QgY291bnQs
CisgICAgICAgIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMsCisgICAgICAgIHN0ZDo6dmVjdG9y
PEdMZW51bT4gKm1vZGlmaWVkQXR0YWNobWVudHMpIGNvbnN0OwogCiAgICAgZ2w6OkVycm9yIHJl
YWRQaXhlbHNSb3dCeVJvd1dvcmthcm91bmQoY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LApk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL0Z1bmN0aW9uc0dMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5jcHAKaW5kZXggZmNiZjIxMWJjNjYuLmI3ZDg2YmMz
ZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvRnVuY3Rpb25zR0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5jcHAKQEAgLTc4OCw3ICs3ODgsOCBA
QCBGdW5jdGlvbnNHTDo6RnVuY3Rpb25zR0woKQogICAgICAgYmxlbmRCYXJyaWVyKG51bGxwdHIp
LAogICAgICAgcHJpbWl0aXZlQm91bmRpbmdCb3gobnVsbHB0ciksCiAgICAgICBlZ2xJbWFnZVRh
cmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMobnVsbHB0ciksCi0gICAgICBlZ2xJbWFnZVRhcmdl
dFRleHR1cmUyRE9FUyhudWxscHRyKQorICAgICAgZWdsSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMo
bnVsbHB0ciksCisgICAgICBkaXNjYXJkRnJhbWVidWZmZXIobnVsbHB0cikKIHsKIH0KIApAQCAt
OTAzLDYgKzkwNCwxNCBAQCB2b2lkIEZ1bmN0aW9uc0dMOjppbml0aWFsaXplUHJvY3NEZXNrdG9w
R0woKQogICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJC
X3ZlcnRleF9hcnJheV9vYmplY3QiLCBsb2FkUHJvY0FkZHJlc3MoImdsR2VuVmVydGV4QXJyYXlz
IiksICZnZW5WZXJ0ZXhBcnJheXMpOwogICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChl
eHRlbnNpb25zLCAiR0xfQVJCX3ZlcnRleF9hcnJheV9vYmplY3QiLCBsb2FkUHJvY0FkZHJlc3Mo
ImdsSXNWZXJ0ZXhBcnJheSIpLCAmaXNWZXJ0ZXhBcnJheSk7CiAKKyAgICAvLyBHTF9BUkJfdmVy
dGV4X2F0dHJpYl9iaW5kaW5nCisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVu
c2lvbnMsICJHTF9BUkJfdmVydGV4X2F0dHJpYl9iaW5kaW5nIiwgbG9hZFByb2NBZGRyZXNzKCJn
bEJpbmRWZXJ0ZXhCdWZmZXIiKSwgJmJpbmRWZXJ0ZXhCdWZmZXIpOworICAgIEFzc2lnbkdMRXh0
ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX3ZlcnRleF9hdHRyaWJfYmluZGlu
ZyIsIGxvYWRQcm9jQWRkcmVzcygiZ2xWZXJ0ZXhBdHRyaWJGb3JtYXQiKSwgJnZlcnRleEF0dHJp
YkZvcm1hdCk7CisgICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJH
TF9BUkJfdmVydGV4X2F0dHJpYl9iaW5kaW5nIiwgbG9hZFByb2NBZGRyZXNzKCJnbFZlcnRleEF0
dHJpYklGb3JtYXQiKSwgJnZlcnRleEF0dHJpYklGb3JtYXQpOworICAgIEFzc2lnbkdMRXh0ZW5z
aW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX3ZlcnRleF9hdHRyaWJfYmluZGluZyIs
IGxvYWRQcm9jQWRkcmVzcygiZ2xWZXJ0ZXhBdHRyaWJMRm9ybWF0IiksICZ2ZXJ0ZXhBdHRyaWJM
Rm9ybWF0KTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdM
X0FSQl92ZXJ0ZXhfYXR0cmliX2JpbmRpbmciLCBsb2FkUHJvY0FkZHJlc3MoImdsVmVydGV4QXR0
cmliQmluZGluZyIpLCAmdmVydGV4QXR0cmliQmluZGluZyk7CisgICAgQXNzaWduR0xFeHRlbnNp
b25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfdmVydGV4X2F0dHJpYl9iaW5kaW5nIiwg
bG9hZFByb2NBZGRyZXNzKCJnbFZlcnRleEJpbmRpbmdEaXZpc29yIiksICZ2ZXJ0ZXhCaW5kaW5n
RGl2aXNvcik7CisKICAgICAvLyBHTF9BUkJfc3luYwogICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50
cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX3N5bmMiLCBsb2FkUHJvY0FkZHJlc3MoImdsQ2xp
ZW50V2FpdFN5bmMiKSwgJmNsaWVudFdhaXRTeW5jKTsKICAgICBBc3NpZ25HTEV4dGVuc2lvbkVu
dHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9zeW5jIiwgbG9hZFByb2NBZGRyZXNzKCJnbERl
bGV0ZVN5bmMiKSwgJmRlbGV0ZVN5bmMpOwpAQCAtMTAyOSw2ICsxMDM4LDE0IEBAIHZvaWQgRnVu
Y3Rpb25zR0w6OmluaXRpYWxpemVQcm9jc0Rlc2t0b3BHTCgpCiAgICAgLy8gR0xfS0hSX3JvYnVz
dG5lc3MKICAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0tI
Ul9yb2J1c3RuZXNzIiwgbG9hZFByb2NBZGRyZXNzKCJnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXMi
KSwgJmdldEdyYXBoaWNzUmVzZXRTdGF0dXMpOwogCisgICAgLy8gR0xfQVJCX2ludmFsaWRhdGVf
c3ViZGF0YQorICAgIEFzc2lnbkdMRXh0ZW5zaW9uRW50cnlQb2ludChleHRlbnNpb25zLCAiR0xf
QVJCX2ludmFsaWRhdGVfc3ViZGF0YSIsIGxvYWRQcm9jQWRkcmVzcygiZ2xJbnZhbGlkYXRlVGV4
U3ViSW1hZ2UiKSwgJmludmFsaWRhdGVUZXhTdWJJbWFnZSk7CisgICAgQXNzaWduR0xFeHRlbnNp
b25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9BUkJfaW52YWxpZGF0ZV9zdWJkYXRhIiwgbG9h
ZFByb2NBZGRyZXNzKCJnbEludmFsaWRhdGVUZXhJbWFnZSIpLCAmaW52YWxpZGF0ZVRleEltYWdl
KTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9p
bnZhbGlkYXRlX3N1YmRhdGEiLCBsb2FkUHJvY0FkZHJlc3MoImdsSW52YWxpZGF0ZUJ1ZmZlclN1
YkRhdGEiKSwgJmludmFsaWRhdGVCdWZmZXJTdWJEYXRhKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lv
bkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FSQl9pbnZhbGlkYXRlX3N1YmRhdGEiLCBsb2Fk
UHJvY0FkZHJlc3MoImdsSW52YWxpZGF0ZUJ1ZmZlckRhdGEiKSwgJmludmFsaWRhdGVCdWZmZXJE
YXRhKTsKKyAgICBBc3NpZ25HTEV4dGVuc2lvbkVudHJ5UG9pbnQoZXh0ZW5zaW9ucywgIkdMX0FS
Ql9pbnZhbGlkYXRlX3N1YmRhdGEiLCBsb2FkUHJvY0FkZHJlc3MoImdsSW52YWxpZGF0ZUZyYW1l
YnVmZmVyIiksICZpbnZhbGlkYXRlRnJhbWVidWZmZXIpOworICAgIEFzc2lnbkdMRXh0ZW5zaW9u
RW50cnlQb2ludChleHRlbnNpb25zLCAiR0xfQVJCX2ludmFsaWRhdGVfc3ViZGF0YSIsIGxvYWRQ
cm9jQWRkcmVzcygiZ2xJbnZhbGlkYXRlU3ViRnJhbWVidWZmZXIiKSwgJmludmFsaWRhdGVTdWJG
cmFtZWJ1ZmZlcik7CisKICAgICAvLyAxLjAKICAgICBpZiAoaXNBdExlYXN0R0woZ2w6OlZlcnNp
b24oMSwgMCkpKQogICAgIHsKQEAgLTE4OTcsNiArMTkxNCw5IEBAIHZvaWQgRnVuY3Rpb25zR0w6
OmluaXRpYWxpemVQcm9jc0dMRVMoKQogICAgIC8vIEdMX0tIUl9yb2J1c3RuZXNzCiAgICAgQXNz
aWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9LSFJfcm9idXN0bmVzcyIs
IGxvYWRQcm9jQWRkcmVzcygiZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzS0hSIiksICZnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzKTsKIAorICAgIC8vIEdMX0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyCisg
ICAgQXNzaWduR0xFeHRlbnNpb25FbnRyeVBvaW50KGV4dGVuc2lvbnMsICJHTF9FWFRfZGlzY2Fy
ZF9mcmFtZWJ1ZmZlciIsIGxvYWRQcm9jQWRkcmVzcygiZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQi
KSwgJmRpc2NhcmRGcmFtZWJ1ZmZlcik7CisKICAgICAvLyAyLjAKICAgICBpZiAoaXNBdExlYXN0
R0xFUyhnbDo6VmVyc2lvbigyLCAwKSkpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL0Z1bmN0aW9uc0dMLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25zR0wu
aAppbmRleCBmYTg2MzRlNTcwMS4uYTYyOWE5Y2IzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlvbnNHTC5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9GdW5jdGlv
bnNHTC5oCkBAIC03NzUsMTAgKzc3NSwxMyBAQCBjbGFzcyBGdW5jdGlvbnNHTAogICAgIFBGTkdM
QkxFTkRCQVJSSUVSUFJPQyBibGVuZEJhcnJpZXI7CiAgICAgUEZOR0xQUklNSVRJVkVCT1VORElO
R0JPWFBST0MgcHJpbWl0aXZlQm91bmRpbmdCb3g7CiAKLSAgICAvLyBFUyBleHRlbnNpb25zCisg
ICAgLy8gR0xfT0VTX0VHTF9pbWFnZQogICAgIFBGTkdMRUdMSU1BR0VUQVJHRVRSRU5ERVJCVUZG
RVJTVE9SQUdFT0VTUFJPQyBlZ2xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVM7CiAg
ICAgUEZOR0xFR0xJTUFHRVRBUkdFVFRFWFRVUkUyRE9FU1BST0MgZWdsSW1hZ2VUYXJnZXRUZXh0
dXJlMkRPRVM7CiAKKyAgICAvLyBHTF9FWFRfZGlzY2FyZF9mcmFtZWJ1ZmZlcgorICAgIFBGTkdM
RElTQ0FSREZSQU1FQlVGRkVSRVhUUFJPQyBkaXNjYXJkRnJhbWVidWZmZXI7CisKICAgcHJpdmF0
ZToKICAgICB2b2lkIGluaXRpYWxpemVQcm9jc0Rlc2t0b3BHTCgpOwogICAgIHZvaWQgaW5pdGlh
bGl6ZVByb2NzR0xFUygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL1BhdGhHTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUGF0aEdMLmNwcAppbmRleCBmZjRlYWZiNThhNy4u
NTM0ODY3NGM0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9QYXRoR0wuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9QYXRoR0wuY3BwCkBAIC0yNyw3ICsyNyw3IEBAIGds
OjpFcnJvciBQYXRoR0w6OnNldENvbW1hbmRzKEdMc2l6ZWkgbnVtQ29tbWFuZHMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpjb29yZHMpCiB7CiAgICAgbUZ1bmN0
aW9ucy0+cGF0aENvbW1hbmRzTlYobVBhdGhJRCwgbnVtQ29tbWFuZHMsIGNvbW1hbmRzLCBudW1D
b29yZHMsIGNvb3JkVHlwZSwgY29vcmRzKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VS
Uk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogdm9pZCBQYXRoR0w6OnNldFBh
dGhQYXJhbWV0ZXIoR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1Byb2dyYW1HTC5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJv
Z3JhbUdMLmNwcAppbmRleCBlNmVjNTg5MzBjMy4uMmNjOTM5YTVkZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Qcm9ncmFtR0wu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9Qcm9ncmFtR0wuY3BwCkBAIC04LDEwICs4LDEyIEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9nbC9Qcm9ncmFtR0wuaCIKIAorI2luY2x1ZGUgImNvbW1vbi9iaXRzZXRfdXRpbHMu
aCIKICNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9kZWJ1
Zy5oIgogI2luY2x1ZGUgImNvbW1vbi9zdHJpbmdfdXRpbHMuaCIKICNpbmNsdWRlICJjb21tb24v
dXRpbGl0aWVzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvQ29udGV4dEdMLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25zR0wuaCIKICNpbmNsdWRl
ICJsaWJBTkdMRS9yZW5kZXJlci9nbC9TaGFkZXJHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgiCkBAIC00Niw3ICs0OCw5IEBAIFByb2dyYW1HTDo6
flByb2dyYW1HTCgpCiAgICAgbVByb2dyYW1JRCA9IDA7CiB9CiAKLUxpbmtSZXN1bHQgUHJvZ3Jh
bUdMOjpsb2FkKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0
cmVhbSkKK0xpbmtSZXN1bHQgUHJvZ3JhbUdMOjpsb2FkKGNvbnN0IENvbnRleHRJbXBsICpjb250
ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpJbmZvTG9nICZpbmZvTG9n
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJl
YW0pCiB7CiAgICAgcHJlTGluaygpOwogCkBAIC02MiwxMiArNjYsMjUgQEAgTGlua1Jlc3VsdCBQ
cm9ncmFtR0w6OmxvYWQoZ2w6OkluZm9Mb2cgJmluZm9Mb2csIGdsOjpCaW5hcnlJbnB1dFN0cmVh
bSAqc3RyZWFtKQogICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBwcm9ncmFtIGxpbmtlZAogICAgIGlm
ICghY2hlY2tMaW5rU3RhdHVzKGluZm9Mb2cpKQogICAgIHsKLSAgICAgICAgcmV0dXJuIExpbmtS
ZXN1bHQoZmFsc2UsIGdsOjpFcnJvcihHTF9OT19FUlJPUikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgcG9zdExpbmsoKTsKIAotICAgIHJldHVybiBMaW5rUmVzdWx0KHRy
dWUsIGdsOjpFcnJvcihHTF9OT19FUlJPUikpOworICAgIC8vIFJlLWFwcGx5IFVCTyBiaW5kaW5n
cyB0byB3b3JrIGFyb3VuZCBkcml2ZXIgYnVncy4KKyAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3
b3JrYXJvdW5kc0dMID0gR2V0QXM8Q29udGV4dEdMPihjb250ZXh0SW1wbCktPmdldFdvcmthcm91
bmRzR0woKTsKKyAgICBpZiAod29ya2Fyb3VuZHNHTC5yZWFwcGx5VUJPQmluZGluZ3NBZnRlckxv
YWRpbmdCaW5hcnlQcm9ncmFtKQorICAgIHsKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNo
CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzaG9ydGVuLTY0LXRvLTMyIgor
ICAgICAgICBmb3IgKEdMdWludCBiaW5kaW5nSW5kZXggOiBhbmdsZTo6SXRlcmF0ZUJpdFNldCht
U3RhdGUuZ2V0QWN0aXZlVW5pZm9ybUJsb2NrQmluZGluZ3NNYXNrKCkpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBzZXRVbmlmb3JtQmxvY2tCaW5kaW5nKGJpbmRpbmdJbmRleCwgbVN0YXRlLmdl
dFVuaWZvcm1CbG9ja0JpbmRpbmcoYmluZGluZ0luZGV4KSk7CisgICAgICAgIH0KKyNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwb3AKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogZ2w6
OkVycm9yIFByb2dyYW1HTDo6c2F2ZShnbDo6QmluYXJ5T3V0cHV0U3RyZWFtICpzdHJlYW0pCkBA
IC04NCw3ICsxMDEsNyBAQCBnbDo6RXJyb3IgUHJvZ3JhbUdMOjpzYXZlKGdsOjpCaW5hcnlPdXRw
dXRTdHJlYW0gKnN0cmVhbSkKICAgICBzdHJlYW0tPndyaXRlSW50KGJpbmFyeUxlbmd0aCk7CiAg
ICAgc3RyZWFtLT53cml0ZUJ5dGVzKCZiaW5hcnlbMF0sIGJpbmFyeUxlbmd0aCk7CiAKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAogdm9pZCBQcm9ncmFtR0w6OnNldEJpbmFyeVJldHJpZXZhYmxlSGludChib29sIHJldHJp
ZXZhYmxlKQpAQCAtOTcsNyArMTE0LDE0IEBAIHZvaWQgUHJvZ3JhbUdMOjpzZXRCaW5hcnlSZXRy
aWV2YWJsZUhpbnQoYm9vbCByZXRyaWV2YWJsZSkKICAgICB9CiB9CiAKLUxpbmtSZXN1bHQgUHJv
Z3JhbUdMOjpsaW5rKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIGdsOjpJbmZvTG9nICZp
bmZvTG9nKQordm9pZCBQcm9ncmFtR0w6OnNldFNlcGFyYWJsZShib29sIHNlcGFyYWJsZSkKK3sK
KyAgICBtRnVuY3Rpb25zLT5wcm9ncmFtUGFyYW1ldGVyaShtUHJvZ3JhbUlELCBHTF9QUk9HUkFN
X1NFUEFSQUJMRSwgc2VwYXJhYmxlID8gR0xfVFJVRSA6IEdMX0ZBTFNFKTsKK30KKworTGlua1Jl
c3VsdCBQcm9ncmFtR0w6OmxpbmsoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlZhcnlpbmdQYWNraW5nICZwYWNraW5nLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkluZm9Mb2cgJmluZm9Mb2cpCiB7CiAgICAgcHJl
TGluaygpOwogCkBAIC0xNDgsNyArMTcyLDcgQEAgTGlua1Jlc3VsdCBQcm9ncmFtR0w6Omxpbmso
Y29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgZ2w6OkluZm9Mb2cgJmluZm9Mb2cpCiAgICAg
ICAgIC8vIEJpbmQgYXR0cmlidXRlIGxvY2F0aW9ucyB0byBtYXRjaCB0aGUgR0wgbGF5ZXIuCiAg
ICAgICAgIGZvciAoY29uc3Qgc2g6OkF0dHJpYnV0ZSAmYXR0cmlidXRlIDogbVN0YXRlLmdldEF0
dHJpYnV0ZXMoKSkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGUuc3RhdGlj
VXNlKQorICAgICAgICAgICAgaWYgKCFhdHRyaWJ1dGUuc3RhdGljVXNlIHx8IGF0dHJpYnV0ZS5p
c0J1aWx0SW4oKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIH0KQEAgLTE2Nyw3ICsxOTEsNyBAQCBMaW5rUmVzdWx0IFByb2dyYW1HTDo6bGlu
ayhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBnbDo6SW5mb0xvZyAmaW5mb0xvZykKICAg
ICAvLyBWZXJpZnkgdGhlIGxpbmsKICAgICBpZiAoIWNoZWNrTGlua1N0YXR1cyhpbmZvTG9nKSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNlLCBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChtV29ya2Fy
b3VuZHMuYWx3YXlzQ2FsbFVzZVByb2dyYW1BZnRlckxpbmspCkBAIC0xNzcsNyArMjAxLDcgQEAg
TGlua1Jlc3VsdCBQcm9ncmFtR0w6OmxpbmsoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwg
Z2w6OkluZm9Mb2cgJmluZm9Mb2cpCiAKICAgICBwb3N0TGluaygpOwogCi0gICAgcmV0dXJuIExp
bmtSZXN1bHQodHJ1ZSwgZ2w6OkVycm9yKEdMX05PX0VSUk9SKSk7CisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIEdMYm9vbGVhbiBQcm9ncmFtR0w6OnZhbGlkYXRlKGNvbnN0IGdsOjpDYXBzICYgLypj
YXBzKi8sIGdsOjpJbmZvTG9nICogLyppbmZvTG9nKi8pCkBAIC0xODgsMTQwICsyMTIsMjgxIEBA
IEdMYm9vbGVhbiBQcm9ncmFtR0w6OnZhbGlkYXRlKGNvbnN0IGdsOjpDYXBzICYgLypjYXBzKi8s
IGdsOjpJbmZvTG9nICogLyppbmZvTG9nCiAKIHZvaWQgUHJvZ3JhbUdMOjpzZXRVbmlmb3JtMWZ2
KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQogewotICAg
IG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7Ci0gICAgbUZ1bmN0aW9ucy0+
dW5pZm9ybTFmdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdik7CisgICAgaWYgKG1GdW5jdGlv
bnMtPnByb2dyYW1Vbmlmb3JtMWZ2ICE9IG51bGxwdHIpCisgICAgeworICAgICAgICBtRnVuY3Rp
b25zLT5wcm9ncmFtVW5pZm9ybTFmdihtUHJvZ3JhbUlELCB1bmlMb2MobG9jYXRpb24pLCBjb3Vu
dCwgdik7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPnVz
ZVByb2dyYW0obVByb2dyYW1JRCk7CisgICAgICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0xZnYodW5p
TG9jKGxvY2F0aW9uKSwgY291bnQsIHYpOworICAgIH0KIH0KIAogdm9pZCBQcm9ncmFtR0w6OnNl
dFVuaWZvcm0yZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQg
KnYpCiB7Ci0gICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKLSAgICBt
RnVuY3Rpb25zLT51bmlmb3JtMmZ2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsKKyAgICBp
ZiAobUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm0yZnYgIT0gbnVsbHB0cikKKyAgICB7CisgICAg
ICAgIG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtMmZ2KG1Qcm9ncmFtSUQsIHVuaUxvYyhsb2Nh
dGlvbiksIGNvdW50LCB2KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbVN0YXRl
TWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+dW5p
Zm9ybTJmdih1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdik7CisgICAgfQogfQogCiB2b2lkIFBy
b2dyYW1HTDo6c2V0VW5pZm9ybTNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xmbG9hdCAqdikKIHsKLSAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFt
SUQpOwotICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0zZnYodW5pTG9jKGxvY2F0aW9uKSwgY291bnQs
IHYpOworICAgIGlmIChtRnVuY3Rpb25zLT5wcm9ncmFtVW5pZm9ybTNmdiAhPSBudWxscHRyKQor
ICAgIHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm0zZnYobVByb2dyYW1JRCwg
dW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHYpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAg
ICAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOworICAgICAgICBtRnVu
Y3Rpb25zLT51bmlmb3JtM2Z2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsKKyAgICB9CiB9
CiAKIHZvaWQgUHJvZ3JhbUdMOjpzZXRVbmlmb3JtNGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQogewotICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dy
YW0obVByb2dyYW1JRCk7Ci0gICAgbUZ1bmN0aW9ucy0+dW5pZm9ybTRmdih1bmlMb2MobG9jYXRp
b24pLCBjb3VudCwgdik7CisgICAgaWYgKG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtNGZ2ICE9
IG51bGxwdHIpCisgICAgeworICAgICAgICBtRnVuY3Rpb25zLT5wcm9ncmFtVW5pZm9ybTRmdiht
UHJvZ3JhbUlELCB1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdik7CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7Cisg
ICAgICAgIG1GdW5jdGlvbnMtPnVuaWZvcm00ZnYodW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHYp
OworICAgIH0KIH0KIAogdm9pZCBQcm9ncmFtR0w6OnNldFVuaWZvcm0xaXYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQogewotICAgIG1TdGF0ZU1hbmFnZXIt
PnVzZVByb2dyYW0obVByb2dyYW1JRCk7Ci0gICAgbUZ1bmN0aW9ucy0+dW5pZm9ybTFpdih1bmlM
b2MobG9jYXRpb24pLCBjb3VudCwgdik7Ci0KLSAgICBjb25zdCBnbDo6VmFyaWFibGVMb2NhdGlv
biAmbG9jYXRpb25FbnRyeSA9IG1TdGF0ZS5nZXRVbmlmb3JtTG9jYXRpb25zKClbbG9jYXRpb25d
OwotCi0gICAgc2l6ZV90IHNhbXBsZXJJbmRleCA9IG1Vbmlmb3JtSW5kZXhUb1NhbXBsZXJJbmRl
eFtsb2NhdGlvbkVudHJ5LmluZGV4XTsKLSAgICBpZiAoc2FtcGxlckluZGV4ICE9IEdMX0lOVkFM
SURfSU5ERVgpCisgICAgaWYgKG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtMWl2ICE9IG51bGxw
dHIpCiAgICAgewotICAgICAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+ICZib3VuZFRleHR1cmVVbml0
cyA9IG1TYW1wbGVyQmluZGluZ3Nbc2FtcGxlckluZGV4XS5ib3VuZFRleHR1cmVVbml0czsKLQot
ICAgICAgICBzaXplX3QgY29weUNvdW50ID0KLSAgICAgICAgICAgIHN0ZDo6bWF4PHNpemVfdD4o
Y291bnQsIGJvdW5kVGV4dHVyZVVuaXRzLnNpemUoKSAtIGxvY2F0aW9uRW50cnkuZWxlbWVudCk7
Ci0gICAgICAgIHN0ZDo6Y29weSh2LCB2ICsgY29weUNvdW50LCBib3VuZFRleHR1cmVVbml0cy5i
ZWdpbigpICsgbG9jYXRpb25FbnRyeS5lbGVtZW50KTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+cHJv
Z3JhbVVuaWZvcm0xaXYobVByb2dyYW1JRCwgdW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHYpOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFt
KG1Qcm9ncmFtSUQpOworICAgICAgICBtRnVuY3Rpb25zLT51bmlmb3JtMWl2KHVuaUxvYyhsb2Nh
dGlvbiksIGNvdW50LCB2KTsKICAgICB9CiB9CiAKIHZvaWQgUHJvZ3JhbUdMOjpzZXRVbmlmb3Jt
Mml2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKIHsKLSAg
ICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgIG1GdW5jdGlvbnMt
PnVuaWZvcm0yaXYodW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHYpOworICAgIGlmIChtRnVuY3Rp
b25zLT5wcm9ncmFtVW5pZm9ybTJpdiAhPSBudWxscHRyKQorICAgIHsKKyAgICAgICAgbUZ1bmN0
aW9ucy0+cHJvZ3JhbVVuaWZvcm0yaXYobVByb2dyYW1JRCwgdW5pTG9jKGxvY2F0aW9uKSwgY291
bnQsIHYpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtU3RhdGVNYW5hZ2VyLT51
c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOworICAgICAgICBtRnVuY3Rpb25zLT51bmlmb3JtMml2KHVu
aUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsKKyAgICB9CiB9CiAKIHZvaWQgUHJvZ3JhbUdMOjpz
ZXRVbmlmb3JtM2l2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAq
dikKIHsKLSAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgIG1G
dW5jdGlvbnMtPnVuaWZvcm0zaXYodW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHYpOworICAgIGlm
IChtRnVuY3Rpb25zLT5wcm9ncmFtVW5pZm9ybTNpdiAhPSBudWxscHRyKQorICAgIHsKKyAgICAg
ICAgbUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm0zaXYobVByb2dyYW1JRCwgdW5pTG9jKGxvY2F0
aW9uKSwgY291bnQsIHYpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtU3RhdGVN
YW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOworICAgICAgICBtRnVuY3Rpb25zLT51bmlm
b3JtM2l2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsKKyAgICB9CiB9CiAKIHZvaWQgUHJv
Z3JhbUdMOjpzZXRVbmlmb3JtNGl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGludCAqdikKIHsKLSAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQp
OwotICAgIG1GdW5jdGlvbnMtPnVuaWZvcm00aXYodW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHYp
OworICAgIGlmIChtRnVuY3Rpb25zLT5wcm9ncmFtVW5pZm9ybTRpdiAhPSBudWxscHRyKQorICAg
IHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm00aXYobVByb2dyYW1JRCwgdW5p
TG9jKGxvY2F0aW9uKSwgY291bnQsIHYpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAg
ICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOworICAgICAgICBtRnVuY3Rp
b25zLT51bmlmb3JtNGl2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsKKyAgICB9CiB9CiAK
IHZvaWQgUHJvZ3JhbUdMOjpzZXRVbmlmb3JtMXVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0x1aW50ICp2KQogewotICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0o
bVByb2dyYW1JRCk7Ci0gICAgbUZ1bmN0aW9ucy0+dW5pZm9ybTF1aXYodW5pTG9jKGxvY2F0aW9u
KSwgY291bnQsIHYpOworICAgIGlmIChtRnVuY3Rpb25zLT5wcm9ncmFtVW5pZm9ybTF1aXYgIT0g
bnVsbHB0cikKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtMXVpdiht
UHJvZ3JhbUlELCB1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdik7CisgICAgfQorICAgIGVsc2UK
KyAgICB7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7Cisg
ICAgICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0xdWl2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB2
KTsKKyAgICB9CiB9CiAKIHZvaWQgUHJvZ3JhbUdMOjpzZXRVbmlmb3JtMnVpdihHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KQogewotICAgIG1TdGF0ZU1hbmFn
ZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7Ci0gICAgbUZ1bmN0aW9ucy0+dW5pZm9ybTJ1aXYo
dW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHYpOworICAgIGlmIChtRnVuY3Rpb25zLT5wcm9ncmFt
VW5pZm9ybTJ1aXYgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPnByb2dy
YW1Vbmlmb3JtMnVpdihtUHJvZ3JhbUlELCB1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdik7Cisg
ICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0o
bVByb2dyYW1JRCk7CisgICAgICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0ydWl2KHVuaUxvYyhsb2Nh
dGlvbiksIGNvdW50LCB2KTsKKyAgICB9CiB9CiAKIHZvaWQgUHJvZ3JhbUdMOjpzZXRVbmlmb3Jt
M3VpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KQogewot
ICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7Ci0gICAgbUZ1bmN0aW9u
cy0+dW5pZm9ybTN1aXYodW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHYpOworICAgIGlmIChtRnVu
Y3Rpb25zLT5wcm9ncmFtVW5pZm9ybTN1aXYgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIG1G
dW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtM3VpdihtUHJvZ3JhbUlELCB1bmlMb2MobG9jYXRpb24p
LCBjb3VudCwgdik7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1TdGF0ZU1hbmFn
ZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7CisgICAgICAgIG1GdW5jdGlvbnMtPnVuaWZvcm0z
dWl2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsKKyAgICB9CiB9CiAKIHZvaWQgUHJvZ3Jh
bUdMOjpzZXRVbmlmb3JtNHVpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3Qg
R0x1aW50ICp2KQogewotICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7
Ci0gICAgbUZ1bmN0aW9ucy0+dW5pZm9ybTR1aXYodW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHYp
OworICAgIGlmIChtRnVuY3Rpb25zLT5wcm9ncmFtVW5pZm9ybTR1aXYgIT0gbnVsbHB0cikKKyAg
ICB7CisgICAgICAgIG1GdW5jdGlvbnMtPnByb2dyYW1Vbmlmb3JtNHVpdihtUHJvZ3JhbUlELCB1
bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdik7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7CisgICAgICAgIG1GdW5j
dGlvbnMtPnVuaWZvcm00dWl2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB2KTsKKyAgICB9CiB9
CiAKIHZvaWQgUHJvZ3JhbUdMOjpzZXRVbmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkK
IHsKLSAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgIG1GdW5j
dGlvbnMtPnVuaWZvcm1NYXRyaXgyZnYodW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHRyYW5zcG9z
ZSwgdmFsdWUpOworICAgIGlmIChtRnVuY3Rpb25zLT5wcm9ncmFtVW5pZm9ybU1hdHJpeDJmdiAh
PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm1NYXRy
aXgyZnYobVByb2dyYW1JRCwgdW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtU3RhdGVNYW5hZ2VyLT51c2VQ
cm9ncmFtKG1Qcm9ncmFtSUQpOworICAgICAgICBtRnVuY3Rpb25zLT51bmlmb3JtTWF0cml4MmZ2
KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICB9CiB9CiAK
IHZvaWQgUHJvZ3JhbUdMOjpzZXRVbmlmb3JtTWF0cml4M2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsK
LSAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgIG1GdW5jdGlv
bnMtPnVuaWZvcm1NYXRyaXgzZnYodW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHRyYW5zcG9zZSwg
dmFsdWUpOworICAgIGlmIChtRnVuY3Rpb25zLT5wcm9ncmFtVW5pZm9ybU1hdHJpeDNmdiAhPSBu
dWxscHRyKQorICAgIHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgz
ZnYobVByb2dyYW1JRCwgdW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUp
OworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9n
cmFtKG1Qcm9ncmFtSUQpOworICAgICAgICBtRnVuY3Rpb25zLT51bmlmb3JtTWF0cml4M2Z2KHVu
aUxvYyhsb2NhdGlvbiksIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICB9CiB9CiAKIHZv
aWQgUHJvZ3JhbUdMOjpzZXRVbmlmb3JtTWF0cml4NGZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKLSAg
ICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFtKG1Qcm9ncmFtSUQpOwotICAgIG1GdW5jdGlvbnMt
PnVuaWZvcm1NYXRyaXg0ZnYodW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpOworICAgIGlmIChtRnVuY3Rpb25zLT5wcm9ncmFtVW5pZm9ybU1hdHJpeDRmdiAhPSBudWxs
cHRyKQorICAgIHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm1NYXRyaXg0ZnYo
bVByb2dyYW1JRCwgdW5pTG9jKGxvY2F0aW9uKSwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwor
ICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICBtU3RhdGVNYW5hZ2VyLT51c2VQcm9ncmFt
KG1Qcm9ncmFtSUQpOworICAgICAgICBtRnVuY3Rpb25zLT51bmlmb3JtTWF0cml4NGZ2KHVuaUxv
Yyhsb2NhdGlvbiksIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICB9CiB9CiAKIHZvaWQg
UHJvZ3JhbUdMOjpzZXRVbmlmb3JtTWF0cml4MngzZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewotICAg
IG1TdGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7Ci0gICAgbUZ1bmN0aW9ucy0+
dW5pZm9ybU1hdHJpeDJ4M2Z2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB0cmFuc3Bvc2UsIHZh
bHVlKTsKKyAgICBpZiAobUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDNmdiAhPSBu
dWxscHRyKQorICAgIHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgy
eDNmdihtUHJvZ3JhbUlELCB1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdHJhbnNwb3NlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICB9
CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJv
Z3JhbUlEKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+dW5pZm9ybU1hdHJpeDJ4M2Z2KHVuaUxvYyhs
b2NhdGlvbiksIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICB9CiB9CiAKIHZvaWQgUHJv
Z3JhbUdMOjpzZXRVbmlmb3JtTWF0cml4M3gyZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewotICAgIG1T
dGF0ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7Ci0gICAgbUZ1bmN0aW9ucy0+dW5p
Zm9ybU1hdHJpeDN4MmZ2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVl
KTsKKyAgICBpZiAobUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJmdiAhPSBudWxs
cHRyKQorICAgIHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDJm
dihtUHJvZ3JhbUlELCB1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3Jh
bUlEKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+dW5pZm9ybU1hdHJpeDN4MmZ2KHVuaUxvYyhsb2Nh
dGlvbiksIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICB9CiB9CiAKIHZvaWQgUHJvZ3Jh
bUdMOjpzZXRVbmlmb3JtTWF0cml4Mng0ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewotICAgIG1TdGF0
ZU1hbmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7Ci0gICAgbUZ1bmN0aW9ucy0+dW5pZm9y
bU1hdHJpeDJ4NGZ2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsK
KyAgICBpZiAobUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdiAhPSBudWxscHRy
KQorICAgIHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgyeDRmdiht
UHJvZ3JhbUlELCB1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICB9CisgICAg
ZWxzZQorICAgIHsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlE
KTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+dW5pZm9ybU1hdHJpeDJ4NGZ2KHVuaUxvYyhsb2NhdGlv
biksIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICB9CiB9CiAKIHZvaWQgUHJvZ3JhbUdM
OjpzZXRVbmlmb3JtTWF0cml4NHgyZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdM
Ym9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewotICAgIG1TdGF0ZU1h
bmFnZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7Ci0gICAgbUZ1bmN0aW9ucy0+dW5pZm9ybU1h
dHJpeDR4MmZ2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAg
ICBpZiAobUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdiAhPSBudWxscHRyKQor
ICAgIHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDJmdihtUHJv
Z3JhbUlELCB1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICB9CisgICAgZWxz
ZQorICAgIHsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsK
KyAgICAgICAgbUZ1bmN0aW9ucy0+dW5pZm9ybU1hdHJpeDR4MmZ2KHVuaUxvYyhsb2NhdGlvbiks
IGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICB9CiB9CiAKIHZvaWQgUHJvZ3JhbUdMOjpz
ZXRVbmlmb3JtTWF0cml4M3g0ZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewotICAgIG1TdGF0ZU1hbmFn
ZXItPnVzZVByb2dyYW0obVByb2dyYW1JRCk7Ci0gICAgbUZ1bmN0aW9ucy0+dW5pZm9ybU1hdHJp
eDN4NGZ2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICBp
ZiAobUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdiAhPSBudWxscHRyKQorICAg
IHsKKyAgICAgICAgbUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm1NYXRyaXgzeDRmdihtUHJvZ3Jh
bUlELCB1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICB9CisgICAgZWxzZQor
ICAgIHsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKKyAg
ICAgICAgbUZ1bmN0aW9ucy0+dW5pZm9ybU1hdHJpeDN4NGZ2KHVuaUxvYyhsb2NhdGlvbiksIGNv
dW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICB9CiB9CiAKIHZvaWQgUHJvZ3JhbUdMOjpzZXRV
bmlmb3JtTWF0cml4NHgzZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVh
biB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewotICAgIG1TdGF0ZU1hbmFnZXIt
PnVzZVByb2dyYW0obVByb2dyYW1JRCk7Ci0gICAgbUZ1bmN0aW9ucy0+dW5pZm9ybU1hdHJpeDR4
M2Z2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICBpZiAo
bUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdiAhPSBudWxscHRyKQorICAgIHsK
KyAgICAgICAgbUZ1bmN0aW9ucy0+cHJvZ3JhbVVuaWZvcm1NYXRyaXg0eDNmdihtUHJvZ3JhbUlE
LCB1bmlMb2MobG9jYXRpb24pLCBjb3VudCwgdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlKTsKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgbVN0YXRlTWFuYWdlci0+dXNlUHJvZ3JhbShtUHJvZ3JhbUlEKTsKKyAgICAg
ICAgbUZ1bmN0aW9ucy0+dW5pZm9ybU1hdHJpeDR4M2Z2KHVuaUxvYyhsb2NhdGlvbiksIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICB9CiB9CiAKIHZvaWQgUHJvZ3JhbUdMOjpzZXRVbmlm
b3JtQmxvY2tCaW5kaW5nKEdMdWludCB1bmlmb3JtQmxvY2tJbmRleCwgR0x1aW50IHVuaWZvcm1C
bG9ja0JpbmRpbmcpCkBAIC0zNTAsMTEgKzUxNSw2IEBAIEdMdWludCBQcm9ncmFtR0w6OmdldFBy
b2dyYW1JRCgpIGNvbnN0CiAgICAgcmV0dXJuIG1Qcm9ncmFtSUQ7CiB9CiAKLWNvbnN0IHN0ZDo6
dmVjdG9yPFNhbXBsZXJCaW5kaW5nR0w+ICZQcm9ncmFtR0w6OmdldEFwcGxpZWRTYW1wbGVyVW5p
Zm9ybXMoKSBjb25zdAotewotICAgIHJldHVybiBtU2FtcGxlckJpbmRpbmdzOwotfQotCiBib29s
IFByb2dyYW1HTDo6Z2V0VW5pZm9ybUJsb2NrU2l6ZShjb25zdCBzdGQ6OnN0cmluZyAmYmxvY2tO
YW1lLCBzaXplX3QgKnNpemVPdXQpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1Qcm9ncmFtSUQgIT0g
MHUpOwpAQCAtNDI2LDggKzU4Niw2IEBAIHZvaWQgUHJvZ3JhbUdMOjpwcmVMaW5rKCkKICAgICAv
LyBSZXNldCB0aGUgcHJvZ3JhbSBzdGF0ZQogICAgIG1Vbmlmb3JtUmVhbExvY2F0aW9uTWFwLmNs
ZWFyKCk7CiAgICAgbVVuaWZvcm1CbG9ja1JlYWxMb2NhdGlvbk1hcC5jbGVhcigpOwotICAgIG1T
YW1wbGVyQmluZGluZ3MuY2xlYXIoKTsKLSAgICBtVW5pZm9ybUluZGV4VG9TYW1wbGVySW5kZXgu
Y2xlYXIoKTsKICAgICBtUGF0aFJlbmRlcmluZ0ZyYWdtZW50SW5wdXRzLmNsZWFyKCk7CiB9CiAK
QEAgLTQ0MSw4ICs1OTksNiBAQCBib29sIFByb2dyYW1HTDo6Y2hlY2tMaW5rU3RhdHVzKGdsOjpJ
bmZvTG9nICZpbmZvTG9nKQogICAgICAgICBHTGludCBpbmZvTG9nTGVuZ3RoID0gMDsKICAgICAg
ICAgbUZ1bmN0aW9ucy0+Z2V0UHJvZ3JhbWl2KG1Qcm9ncmFtSUQsIEdMX0lORk9fTE9HX0xFTkdU
SCwgJmluZm9Mb2dMZW5ndGgpOwogCi0gICAgICAgIHN0ZDo6c3RyaW5nIHdhcm5pbmc7Ci0KICAg
ICAgICAgLy8gSW5mbyBsb2cgbGVuZ3RoIGluY2x1ZGVzIHRoZSBudWxsIHRlcm1pbmF0b3IsIHNv
IDEgbWVhbnMgdGhhdCB0aGUgaW5mbyBsb2cgaXMgYW4gZW1wdHkKICAgICAgICAgLy8gc3RyaW5n
LgogICAgICAgICBpZiAoaW5mb0xvZ0xlbmd0aCA+IDEpCkBAIC00NTUsMTQgKzYxMSwxMiBAQCBi
b29sIFByb2dyYW1HTDo6Y2hlY2tMaW5rU3RhdHVzKGdsOjpJbmZvTG9nICZpbmZvTG9nKQogCiAg
ICAgICAgICAgICBpbmZvTG9nIDw8IGJ1Zi5kYXRhKCk7CiAKLSAgICAgICAgICAgIHdhcm5pbmcg
PSBGb3JtYXRTdHJpbmcoIlByb2dyYW0gbGluayBmYWlsZWQgdW5leHBlY3RlZGx5OiAlcyIsIGJ1
Zi5kYXRhKCkpOworICAgICAgICAgICAgV0FSTigpIDw8ICJQcm9ncmFtIGxpbmsgZmFpbGVkIHVu
ZXhwZWN0ZWRseTogIiA8PCBidWYuZGF0YSgpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAg
ICAgICAgewotICAgICAgICAgICAgd2FybmluZyA9ICJQcm9ncmFtIGxpbmsgZmFpbGVkIHVuZXhw
ZWN0ZWRseSB3aXRoIG5vIGluZm8gbG9nLiI7CisgICAgICAgICAgICBXQVJOKCkgPDwgIlByb2dy
YW0gbGluayBmYWlsZWQgdW5leHBlY3RlZGx5IHdpdGggbm8gaW5mbyBsb2cuIjsKICAgICAgICAg
fQotICAgICAgICBBTkdMRVBsYXRmb3JtQ3VycmVudCgpLT5sb2dXYXJuaW5nKHdhcm5pbmcuY19z
dHIoKSk7Ci0gICAgICAgIFRSQUNFKCJcbiVzIiwgd2FybmluZy5jX3N0cigpKTsKIAogICAgICAg
ICAvLyBUT0RPLCByZXR1cm4gR0xfT1VUX09GX01FTU9SWSBvciBqdXN0IGZhaWwgdGhlIGxpbms/
IFRoaXMgaXMgYW4gdW5leHBlY3RlZCBjYXNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUw
MSwyNCArNjU1LDYgQEAgdm9pZCBQcm9ncmFtR0w6OnBvc3RMaW5rKCkKICAgICAgICAgbVVuaWZv
cm1SZWFsTG9jYXRpb25NYXBbdW5pZm9ybUxvY2F0aW9uXSA9IHJlYWxMb2NhdGlvbjsKICAgICB9
CiAKLSAgICBtVW5pZm9ybUluZGV4VG9TYW1wbGVySW5kZXgucmVzaXplKG1TdGF0ZS5nZXRVbmlm
b3JtcygpLnNpemUoKSwgR0xfSU5WQUxJRF9JTkRFWCk7Ci0KLSAgICBmb3IgKHNpemVfdCB1bmlm
b3JtSWQgPSAwOyB1bmlmb3JtSWQgPCB1bmlmb3Jtcy5zaXplKCk7ICsrdW5pZm9ybUlkKQotICAg
IHsKLSAgICAgICAgY29uc3QgZ2w6OkxpbmtlZFVuaWZvcm0gJmxpbmtlZFVuaWZvcm0gPSB1bmlm
b3Jtc1t1bmlmb3JtSWRdOwotCi0gICAgICAgIGlmICghbGlua2VkVW5pZm9ybS5pc1NhbXBsZXIo
KSB8fCAhbGlua2VkVW5pZm9ybS5zdGF0aWNVc2UpCi0gICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICBtVW5pZm9ybUluZGV4VG9TYW1wbGVySW5kZXhbdW5pZm9ybUlkXSA9IG1TYW1wbGVy
QmluZGluZ3Muc2l6ZSgpOwotCi0gICAgICAgIC8vIElmIHVuaWZvcm0gaXMgYSBzYW1wbGVyIHR5
cGUsIGluc2VydCBpdCBpbnRvIHRoZSBtU2FtcGxlckJpbmRpbmdzIGFycmF5Ci0gICAgICAgIFNh
bXBsZXJCaW5kaW5nR0wgc2FtcGxlckJpbmRpbmc7Ci0gICAgICAgIHNhbXBsZXJCaW5kaW5nLnRl
eHR1cmVUeXBlID0gZ2w6OlNhbXBsZXJUeXBlVG9UZXh0dXJlVHlwZShsaW5rZWRVbmlmb3JtLnR5
cGUpOwotICAgICAgICBzYW1wbGVyQmluZGluZy5ib3VuZFRleHR1cmVVbml0cy5yZXNpemUobGlu
a2VkVW5pZm9ybS5lbGVtZW50Q291bnQoKSwgMCk7Ci0gICAgICAgIG1TYW1wbGVyQmluZGluZ3Mu
cHVzaF9iYWNrKHNhbXBsZXJCaW5kaW5nKTsKLSAgICB9Ci0KICAgICAvLyBEaXNjb3ZlciBDSFJP
TUlVTV9wYXRoX3JlbmRlcmluZyBmcmFnbWVudCBpbnB1dHMgaWYgZW5hYmxlZC4KICAgICBpZiAo
IW1FbmFibGVQYXRoUmVuZGVyaW5nKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbUdMLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJvZ3Jh
bUdMLmgKaW5kZXggODhlMjI0NWZhMjYuLmZhNWE3YzRjZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUHJvZ3JhbUdMLmgKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1Byb2dy
YW1HTC5oCkBAIC0yMSwxMiArMjEsNiBAQCBuYW1lc3BhY2UgcngKIGNsYXNzIEZ1bmN0aW9uc0dM
OwogY2xhc3MgU3RhdGVNYW5hZ2VyR0w7CiAKLXN0cnVjdCBTYW1wbGVyQmluZGluZ0dMCi17Ci0g
ICAgR0xlbnVtIHRleHR1cmVUeXBlOwotICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gYm91bmRUZXh0
dXJlVW5pdHM7Ci19OwotCiBjbGFzcyBQcm9ncmFtR0wgOiBwdWJsaWMgUHJvZ3JhbUltcGwKIHsK
ICAgcHVibGljOgpAQCAtMzcsMTEgKzMxLDE2IEBAIGNsYXNzIFByb2dyYW1HTCA6IHB1YmxpYyBQ
cm9ncmFtSW1wbAogICAgICAgICAgICAgICBib29sIGVuYWJsZVBhdGhSZW5kZXJpbmcpOwogICAg
IH5Qcm9ncmFtR0woKSBvdmVycmlkZTsKIAotICAgIExpbmtSZXN1bHQgbG9hZChnbDo6SW5mb0xv
ZyAmaW5mb0xvZywgZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0pIG92ZXJyaWRlOworICAg
IExpbmtSZXN1bHQgbG9hZChjb25zdCBDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAg
ICAgICAgICAgICAgIGdsOjpJbmZvTG9nICZpbmZvTG9nLAorICAgICAgICAgICAgICAgICAgICBn
bDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkgb3ZlcnJpZGU7CiAgICAgZ2w6OkVycm9yIHNh
dmUoZ2w6OkJpbmFyeU91dHB1dFN0cmVhbSAqc3RyZWFtKSBvdmVycmlkZTsKICAgICB2b2lkIHNl
dEJpbmFyeVJldHJpZXZhYmxlSGludChib29sIHJldHJpZXZhYmxlKSBvdmVycmlkZTsKKyAgICB2
b2lkIHNldFNlcGFyYWJsZShib29sIHNlcGFyYWJsZSkgb3ZlcnJpZGU7CiAKLSAgICBMaW5rUmVz
dWx0IGxpbmsoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgZ2w6OkluZm9Mb2cgJmluZm9M
b2cpIG92ZXJyaWRlOworICAgIExpbmtSZXN1bHQgbGluayhDb250ZXh0SW1wbCAqY29udGV4dElt
cGwsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpWYXJ5aW5nUGFja2luZyAmcGFja2lu
ZywKKyAgICAgICAgICAgICAgICAgICAgZ2w6OkluZm9Mb2cgJmluZm9Mb2cpIG92ZXJyaWRlOwog
ICAgIEdMYm9vbGVhbiB2YWxpZGF0ZShjb25zdCBnbDo6Q2FwcyAmY2FwcywgZ2w6OkluZm9Mb2cg
KmluZm9Mb2cpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzZXRVbmlmb3JtMWZ2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KSBvdmVycmlkZTsKQEAgLTc4LDcg
Kzc3LDYgQEAgY2xhc3MgUHJvZ3JhbUdMIDogcHVibGljIFByb2dyYW1JbXBsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpIG92ZXJyaWRlOwog
CiAgICAgR0x1aW50IGdldFByb2dyYW1JRCgpIGNvbnN0OwotICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PFNhbXBsZXJCaW5kaW5nR0w+ICZnZXRBcHBsaWVkU2FtcGxlclVuaWZvcm1zKCkgY29uc3Q7CiAK
ICAgcHJpdmF0ZToKICAgICB2b2lkIHByZUxpbmsoKTsKQEAgLTk1LDEyICs5Myw2IEBAIGNsYXNz
IFByb2dyYW1HTCA6IHB1YmxpYyBQcm9ncmFtSW1wbAogICAgIHN0ZDo6dmVjdG9yPEdMaW50PiBt
VW5pZm9ybVJlYWxMb2NhdGlvbk1hcDsKICAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1Vbmlmb3Jt
QmxvY2tSZWFsTG9jYXRpb25NYXA7CiAKLSAgICAvLyBBbiBhcnJheSBvZiB0aGUgc2FtcGxlcnMg
dGhhdCBhcmUgdXNlZCBieSB0aGUgcHJvZ3JhbQotICAgIHN0ZDo6dmVjdG9yPFNhbXBsZXJCaW5k
aW5nR0w+IG1TYW1wbGVyQmluZGluZ3M7Ci0KLSAgICAvLyBBIG1hcCBmcm9tIGEgbURhdGEuZ2V0
VW5pZm9ybXMoKSBpbmRleCB0byBhIG1TYW1wbGVyQmluZGluZ3MgaW5kZXguCi0gICAgc3RkOjp2
ZWN0b3I8c2l6ZV90PiBtVW5pZm9ybUluZGV4VG9TYW1wbGVySW5kZXg7Ci0KICAgICBzdHJ1Y3Qg
UGF0aFJlbmRlcmluZ0ZyYWdtZW50SW5wdXQKICAgICB7CiAgICAgICAgIHN0ZDo6c3RyaW5nIG5h
bWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvUXVlcnlHTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvUXVlcnlHTC5jcHAKaW5kZXggNmQ5ZGY1ZDc2MDEuLjllZDM2YmU1NmMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvUXVlcnlHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL1F1ZXJ5R0wuY3BwCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAi
Y29tbW9uL2RlYnVnLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvRnVuY3Rpb25z
R0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFnZXJHTC5oIgor
I2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuaCIKIAogbmFt
ZXNwYWNlCiB7CkBAIC00Myw4ICs0NCwxOCBAQCBHTHVpbnQ2NCBNZXJnZVF1ZXJ5UmVzdWx0cyhH
TGVudW0gdHlwZSwgR0x1aW50NjQgY3VycmVudFJlc3VsdCwgR0x1aW50NjQgbmV3UmVzdQogbmFt
ZXNwYWNlIHJ4CiB7CiAKLVF1ZXJ5R0w6OlF1ZXJ5R0woR0xlbnVtIHR5cGUsIGNvbnN0IEZ1bmN0
aW9uc0dMICpmdW5jdGlvbnMsIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIpCi0gICAgOiBR
dWVyeUltcGwodHlwZSksCitRdWVyeUdMOjpRdWVyeUdMKEdMZW51bSB0eXBlKSA6IFF1ZXJ5SW1w
bCh0eXBlKQoreworfQorCitRdWVyeUdMOjp+UXVlcnlHTCgpCit7Cit9CisKK1N0YW5kYXJkUXVl
cnlHTDo6U3RhbmRhcmRRdWVyeUdMKEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFN0YXRlTWFuYWdlckdMICpzdGF0ZU1hbmFnZXIpCisgICAgOiBR
dWVyeUdMKHR5cGUpLAogICAgICAgbVR5cGUodHlwZSksCiAgICAgICBtRnVuY3Rpb25zKGZ1bmN0
aW9ucyksCiAgICAgICBtU3RhdGVNYW5hZ2VyKHN0YXRlTWFuYWdlciksCkBAIC01NCw3ICs2NSw3
IEBAIFF1ZXJ5R0w6OlF1ZXJ5R0woR0xlbnVtIHR5cGUsIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5j
dGlvbnMsIFN0YXRlTWFuYWdlckdMICpzdGF0CiB7CiB9CiAKLVF1ZXJ5R0w6On5RdWVyeUdMKCkK
K1N0YW5kYXJkUXVlcnlHTDo6flN0YW5kYXJkUXVlcnlHTCgpCiB7CiAgICAgbVN0YXRlTWFuYWdl
ci0+ZGVsZXRlUXVlcnkobUFjdGl2ZVF1ZXJ5KTsKICAgICBtU3RhdGVNYW5hZ2VyLT5vbkRlbGV0
ZVF1ZXJ5T2JqZWN0KHRoaXMpOwpAQCAtNjUsMTkgKzc2LDE5IEBAIFF1ZXJ5R0w6On5RdWVyeUdM
KCkKICAgICB9CiB9CiAKLWdsOjpFcnJvciBRdWVyeUdMOjpiZWdpbigpCitnbDo6RXJyb3IgU3Rh
bmRhcmRRdWVyeUdMOjpiZWdpbigpCiB7CiAgICAgbVJlc3VsdFN1bSA9IDA7CiAgICAgbVN0YXRl
TWFuYWdlci0+b25CZWdpblF1ZXJ5KHRoaXMpOwogICAgIHJldHVybiByZXN1bWUoKTsKIH0KIAot
Z2w6OkVycm9yIFF1ZXJ5R0w6OmVuZCgpCitnbDo6RXJyb3IgU3RhbmRhcmRRdWVyeUdMOjplbmQo
KQogewogICAgIHJldHVybiBwYXVzZSgpOwogfQogCi1nbDo6RXJyb3IgUXVlcnlHTDo6cXVlcnlD
b3VudGVyKCkKK2dsOjpFcnJvciBTdGFuZGFyZFF1ZXJ5R0w6OnF1ZXJ5Q291bnRlcigpCiB7CiAg
ICAgQVNTRVJUKG1UeXBlID09IEdMX1RJTUVTVEFNUCk7CiAKQEAgLTg4LDExICs5OSwxMSBAQCBn
bDo6RXJyb3IgUXVlcnlHTDo6cXVlcnlDb3VudGVyKCkKICAgICBtRnVuY3Rpb25zLT5xdWVyeUNv
dW50ZXIocXVlcnksIEdMX1RJTUVTVEFNUCk7CiAgICAgbVBlbmRpbmdRdWVyaWVzLnB1c2hfYmFj
ayhxdWVyeSk7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1nbDo6RXJyb3Ig
UXVlcnlHTDo6Z2V0UmVzdWx0QmFzZShUICpwYXJhbXMpCitnbDo6RXJyb3IgU3RhbmRhcmRRdWVy
eUdMOjpnZXRSZXN1bHRCYXNlKFQgKnBhcmFtcykKIHsKICAgICBBU1NFUlQobUFjdGl2ZVF1ZXJ5
ID09IDApOwogCkBAIC0xMDUsMzAgKzExNiwzMCBAQCBnbDo6RXJyb3IgUXVlcnlHTDo6Z2V0UmVz
dWx0QmFzZShUICpwYXJhbXMpCiAgICAgQVNTRVJUKG1QZW5kaW5nUXVlcmllcy5lbXB0eSgpKTsK
ICAgICAqcGFyYW1zID0gc3RhdGljX2Nhc3Q8VD4obVJlc3VsdFN1bSk7CiAKLSAgICByZXR1cm4g
Z2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAot
Z2w6OkVycm9yIFF1ZXJ5R0w6OmdldFJlc3VsdChHTGludCAqcGFyYW1zKQorZ2w6OkVycm9yIFN0
YW5kYXJkUXVlcnlHTDo6Z2V0UmVzdWx0KEdMaW50ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIGdl
dFJlc3VsdEJhc2UocGFyYW1zKTsKIH0KIAotZ2w6OkVycm9yIFF1ZXJ5R0w6OmdldFJlc3VsdChH
THVpbnQgKnBhcmFtcykKK2dsOjpFcnJvciBTdGFuZGFyZFF1ZXJ5R0w6OmdldFJlc3VsdChHTHVp
bnQgKnBhcmFtcykKIHsKICAgICByZXR1cm4gZ2V0UmVzdWx0QmFzZShwYXJhbXMpOwogfQogCi1n
bDo6RXJyb3IgUXVlcnlHTDo6Z2V0UmVzdWx0KEdMaW50NjQgKnBhcmFtcykKK2dsOjpFcnJvciBT
dGFuZGFyZFF1ZXJ5R0w6OmdldFJlc3VsdChHTGludDY0ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJu
IGdldFJlc3VsdEJhc2UocGFyYW1zKTsKIH0KIAotZ2w6OkVycm9yIFF1ZXJ5R0w6OmdldFJlc3Vs
dChHTHVpbnQ2NCAqcGFyYW1zKQorZ2w6OkVycm9yIFN0YW5kYXJkUXVlcnlHTDo6Z2V0UmVzdWx0
KEdMdWludDY0ICpwYXJhbXMpCiB7CiAgICAgcmV0dXJuIGdldFJlc3VsdEJhc2UocGFyYW1zKTsK
IH0KIAotZ2w6OkVycm9yIFF1ZXJ5R0w6OmlzUmVzdWx0QXZhaWxhYmxlKGJvb2wgKmF2YWlsYWJs
ZSkKK2dsOjpFcnJvciBTdGFuZGFyZFF1ZXJ5R0w6OmlzUmVzdWx0QXZhaWxhYmxlKGJvb2wgKmF2
YWlsYWJsZSkKIHsKICAgICBBU1NFUlQobUFjdGl2ZVF1ZXJ5ID09IDApOwogCkBAIC0xMzksMTAg
KzE1MCwxMCBAQCBnbDo6RXJyb3IgUXVlcnlHTDo6aXNSZXN1bHRBdmFpbGFibGUoYm9vbCAqYXZh
aWxhYmxlKQogICAgIH0KIAogICAgICphdmFpbGFibGUgPSBtUGVuZGluZ1F1ZXJpZXMuZW1wdHko
KTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFF1ZXJ5R0w6OnBhdXNlKCkKK2dsOjpFcnJvciBTdGFu
ZGFyZFF1ZXJ5R0w6OnBhdXNlKCkKIHsKICAgICBpZiAobUFjdGl2ZVF1ZXJ5ICE9IDApCiAgICAg
ewpAQCAtMTU5LDEwICsxNzAsMTAgQEAgZ2w6OkVycm9yIFF1ZXJ5R0w6OnBhdXNlKCkKICAgICAg
ICAgcmV0dXJuIGVycm9yOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJS
T1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgUXVlcnlHTDo6
cmVzdW1lKCkKK2dsOjpFcnJvciBTdGFuZGFyZFF1ZXJ5R0w6OnJlc3VtZSgpCiB7CiAgICAgaWYg
KG1BY3RpdmVRdWVyeSA9PSAwKQogICAgIHsKQEAgLTE3NywxMCArMTg4LDEwIEBAIGdsOjpFcnJv
ciBRdWVyeUdMOjpyZXN1bWUoKQogICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iZWdpblF1ZXJ5KG1U
eXBlLCBtQWN0aXZlUXVlcnkpOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9f
RVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgUXVlcnlH
TDo6Zmx1c2goYm9vbCBmb3JjZSkKK2dsOjpFcnJvciBTdGFuZGFyZFF1ZXJ5R0w6OmZsdXNoKGJv
b2wgZm9yY2UpCiB7CiAgICAgd2hpbGUgKCFtUGVuZGluZ1F1ZXJpZXMuZW1wdHkoKSkKICAgICB7
CkBAIC0xOTEsNyArMjAyLDcgQEAgZ2w6OkVycm9yIFF1ZXJ5R0w6OmZsdXNoKGJvb2wgZm9yY2Up
CiAgICAgICAgICAgICBtRnVuY3Rpb25zLT5nZXRRdWVyeU9iamVjdHVpdihpZCwgR0xfUVVFUllf
UkVTVUxUX0FWQUlMQUJMRSwgJnJlc3VsdEF2YWlsYWJsZSk7CiAgICAgICAgICAgICBpZiAocmVz
dWx0QXZhaWxhYmxlID09IEdMX0ZBTFNFKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgICAgICAgICAgICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTIxNiw3ICsyMjcs
MTk3IEBAIGdsOjpFcnJvciBRdWVyeUdMOjpmbHVzaChib29sIGZvcmNlKQogICAgICAgICBtUGVu
ZGluZ1F1ZXJpZXMucG9wX2Zyb250KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK2NsYXNzIFN5bmNQ
cm92aWRlckdMCit7CisgIHB1YmxpYzoKKyAgICB2aXJ0dWFsIH5TeW5jUHJvdmlkZXJHTCgpIHt9
CisgICAgdmlydHVhbCBnbDo6RXJyb3IgZmx1c2goYm9vbCBmb3JjZSwgYm9vbCAqZmluaXNoZWQp
ID0gMDsKK307CisKK2NsYXNzIFN5bmNQcm92aWRlckdMU3luYyA6IHB1YmxpYyBTeW5jUHJvdmlk
ZXJHTAoreworICBwdWJsaWM6CisgICAgU3luY1Byb3ZpZGVyR0xTeW5jKGNvbnN0IEZ1bmN0aW9u
c0dMICpmdW5jdGlvbnMpIDogbUZ1bmN0aW9ucyhmdW5jdGlvbnMpLCBtU3luYyhudWxscHRyKQor
ICAgIHsKKyAgICAgICAgbVN5bmMgPSBtRnVuY3Rpb25zLT5mZW5jZVN5bmMoR0xfU1lOQ19HUFVf
Q09NTUFORFNfQ09NUExFVEUsIDApOworICAgIH0KKworICAgIHZpcnR1YWwgflN5bmNQcm92aWRl
ckdMU3luYygpIHsgbUZ1bmN0aW9ucy0+ZGVsZXRlU3luYyhtU3luYyk7IH0KKworICAgIGdsOjpF
cnJvciBmbHVzaChib29sIGZvcmNlLCBib29sICpmaW5pc2hlZCkgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGlmIChmb3JjZSkKKyAgICAgICAgeworICAgICAgICAgICAgbUZ1bmN0aW9ucy0+Y2xp
ZW50V2FpdFN5bmMobVN5bmMsIDAsIDApOworICAgICAgICAgICAgKmZpbmlzaGVkID0gdHJ1ZTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIEdMaW50IHZh
bHVlID0gMDsKKyAgICAgICAgICAgIG1GdW5jdGlvbnMtPmdldFN5bmNpdihtU3luYywgR0xfU1lO
Q19TVEFUVVMsIDEsIG51bGxwdHIsICZ2YWx1ZSk7CisgICAgICAgICAgICAqZmluaXNoZWQgPSAo
dmFsdWUgPT0gR0xfU0lHTkFMRUQpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CisgICAgfQorCisgIHByaXZhdGU6CisgICAgY29uc3QgRnVuY3Rpb25zR0wgKm1G
dW5jdGlvbnM7CisgICAgR0xzeW5jIG1TeW5jOworfTsKKworY2xhc3MgU3luY1Byb3ZpZGVyR0xR
dWVyeSA6IHB1YmxpYyBTeW5jUHJvdmlkZXJHTAoreworICBwdWJsaWM6CisgICAgU3luY1Byb3Zp
ZGVyR0xRdWVyeShjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAorICAgICAgICAgICAgICAg
ICAgICAgICAgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBxdWVyeVR5cGUpCisgICAgICAgIDogbUZ1bmN0aW9ucyhmdW5jdGlvbnMp
LCBtUXVlcnkoMCkKKyAgICB7CisgICAgICAgIG1GdW5jdGlvbnMtPmdlblF1ZXJpZXMoMSwgJm1R
dWVyeSk7CisgICAgICAgIHN0YXRlTWFuYWdlci0+cGF1c2VRdWVyeShxdWVyeVR5cGUpOworICAg
ICAgICBtRnVuY3Rpb25zLT5iZWdpblF1ZXJ5KHF1ZXJ5VHlwZSwgbVF1ZXJ5KTsKKyAgICAgICAg
bUZ1bmN0aW9ucy0+ZW5kUXVlcnkocXVlcnlUeXBlKTsKKyAgICAgICAgc3RhdGVNYW5hZ2VyLT5y
ZXN1bWVRdWVyeShxdWVyeVR5cGUpOworICAgIH0KKworICAgIHZpcnR1YWwgflN5bmNQcm92aWRl
ckdMUXVlcnkoKSB7IG1GdW5jdGlvbnMtPmRlbGV0ZVF1ZXJpZXMoMSwgJm1RdWVyeSk7IH0KKwor
ICAgIGdsOjpFcnJvciBmbHVzaChib29sIGZvcmNlLCBib29sICpmaW5pc2hlZCkgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIGlmIChmb3JjZSkKKyAgICAgICAgeworICAgICAgICAgICAgR0xpbnQg
cmVzdWx0ID0gMDsKKyAgICAgICAgICAgIG1GdW5jdGlvbnMtPmdldFF1ZXJ5T2JqZWN0aXYobVF1
ZXJ5LCBHTF9RVUVSWV9SRVNVTFQsICZyZXN1bHQpOworICAgICAgICAgICAgKmZpbmlzaGVkID0g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIEdM
aW50IGF2YWlsYWJsZSA9IDA7CisgICAgICAgICAgICBtRnVuY3Rpb25zLT5nZXRRdWVyeU9iamVj
dGl2KG1RdWVyeSwgR0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRSwgJmF2YWlsYWJsZSk7CisgICAg
ICAgICAgICAqZmluaXNoZWQgPSAoYXZhaWxhYmxlID09IEdMX1RSVUUpOworICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CisgICAgfQorCisgIHByaXZhdGU6CisgICAg
Y29uc3QgRnVuY3Rpb25zR0wgKm1GdW5jdGlvbnM7CisgICAgR0x1aW50IG1RdWVyeTsKK307CisK
K1N5bmNRdWVyeUdMOjpTeW5jUXVlcnlHTChHTGVudW0gdHlwZSwgY29uc3QgRnVuY3Rpb25zR0wg
KmZ1bmN0aW9ucywgU3RhdGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlcikKKyAgICA6IFF1ZXJ5R0wo
dHlwZSksCisgICAgICBtRnVuY3Rpb25zKGZ1bmN0aW9ucyksCisgICAgICBtU3RhdGVNYW5hZ2Vy
KHN0YXRlTWFuYWdlciksCisgICAgICBtU3luY1Byb3ZpZGVyKG51bGxwdHIpLAorICAgICAgbUZp
bmlzaGVkKGZhbHNlKQoreworICAgIEFTU0VSVChJc1N1cHBvcnRlZChtRnVuY3Rpb25zKSk7Cisg
ICAgQVNTRVJUKHR5cGUgPT0gR0xfQ09NTUFORFNfQ09NUExFVEVEX0NIUk9NSVVNKTsKIH0KIAor
U3luY1F1ZXJ5R0w6On5TeW5jUXVlcnlHTCgpCit7Cit9CisKK2Jvb2wgU3luY1F1ZXJ5R0w6Oklz
U3VwcG9ydGVkKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMpCit7CisgICAgcmV0dXJuIG5h
dGl2ZWdsOjpTdXBwb3J0c0ZlbmNlU3luYyhmdW5jdGlvbnMpIHx8IG5hdGl2ZWdsOjpTdXBwb3J0
c09jY2x1c2lvblF1ZXJpZXMoZnVuY3Rpb25zKTsKK30KKworZ2w6OkVycm9yIFN5bmNRdWVyeUdM
OjpiZWdpbigpCit7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK2dsOjpFcnJvciBT
eW5jUXVlcnlHTDo6ZW5kKCkKK3sKKyAgICBpZiAobmF0aXZlZ2w6OlN1cHBvcnRzRmVuY2VTeW5j
KG1GdW5jdGlvbnMpKQorICAgIHsKKyAgICAgICAgbVN5bmNQcm92aWRlci5yZXNldChuZXcgU3lu
Y1Byb3ZpZGVyR0xTeW5jKG1GdW5jdGlvbnMpKTsKKyAgICB9CisgICAgZWxzZSBpZiAobmF0aXZl
Z2w6OlN1cHBvcnRzT2NjbHVzaW9uUXVlcmllcyhtRnVuY3Rpb25zKSkKKyAgICB7CisgICAgICAg
IG1TeW5jUHJvdmlkZXIucmVzZXQoCisgICAgICAgICAgICBuZXcgU3luY1Byb3ZpZGVyR0xRdWVy
eShtRnVuY3Rpb25zLCBtU3RhdGVNYW5hZ2VyLCBHTF9BTllfU0FNUExFU19QQVNTRUQpKTsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgQVNTRVJUKGZhbHNlKTsKKyAgICAgICAgcmV0
dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIk5vIG5hdGl2ZSBzdXBwb3J0IGZv
ciBzeW5jIHF1ZXJpZXMuIik7CisgICAgfQorICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQor
CitnbDo6RXJyb3IgU3luY1F1ZXJ5R0w6OnF1ZXJ5Q291bnRlcigpCit7CisgICAgVU5SRUFDSEFC
TEUoKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKworZ2w6OkVycm9yIFN5bmNRdWVy
eUdMOjpnZXRSZXN1bHQoR0xpbnQgKnBhcmFtcykKK3sKKyAgICByZXR1cm4gZ2V0UmVzdWx0QmFz
ZShwYXJhbXMpOworfQorCitnbDo6RXJyb3IgU3luY1F1ZXJ5R0w6OmdldFJlc3VsdChHTHVpbnQg
KnBhcmFtcykKK3sKKyAgICByZXR1cm4gZ2V0UmVzdWx0QmFzZShwYXJhbXMpOworfQorCitnbDo6
RXJyb3IgU3luY1F1ZXJ5R0w6OmdldFJlc3VsdChHTGludDY0ICpwYXJhbXMpCit7CisgICAgcmV0
dXJuIGdldFJlc3VsdEJhc2UocGFyYW1zKTsKK30KKworZ2w6OkVycm9yIFN5bmNRdWVyeUdMOjpn
ZXRSZXN1bHQoR0x1aW50NjQgKnBhcmFtcykKK3sKKyAgICByZXR1cm4gZ2V0UmVzdWx0QmFzZShw
YXJhbXMpOworfQorCitnbDo6RXJyb3IgU3luY1F1ZXJ5R0w6OmlzUmVzdWx0QXZhaWxhYmxlKGJv
b2wgKmF2YWlsYWJsZSkKK3sKKyAgICBBTkdMRV9UUlkoZmx1c2goZmFsc2UpKTsKKyAgICAqYXZh
aWxhYmxlID0gbUZpbmlzaGVkOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCitnbDo6
RXJyb3IgU3luY1F1ZXJ5R0w6OnBhdXNlKCkKK3sKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
K30KKworZ2w6OkVycm9yIFN5bmNRdWVyeUdMOjpyZXN1bWUoKQoreworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOworfQorCitnbDo6RXJyb3IgU3luY1F1ZXJ5R0w6OmZsdXNoKGJvb2wgZm9yY2Up
Cit7CisgICAgaWYgKG1TeW5jUHJvdmlkZXIgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIEFT
U0VSVChtRmluaXNoZWQpOworICAgICAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKKyAgICB9CisK
KyAgICBBTkdMRV9UUlkobVN5bmNQcm92aWRlci0+Zmx1c2goZm9yY2UsICZtRmluaXNoZWQpKTsK
KyAgICBpZiAobUZpbmlzaGVkKQorICAgIHsKKyAgICAgICAgbVN5bmNQcm92aWRlci5yZXNldCgp
OworICAgIH0KKworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KK2dsOjpFcnJvciBTeW5jUXVlcnlHTDo6Z2V0UmVzdWx0QmFzZShUICpwYXJhbXMp
Cit7CisgICAgQU5HTEVfVFJZKGZsdXNoKHRydWUpKTsKKyAgICAqcGFyYW1zID0gc3RhdGljX2Nh
c3Q8VD4obUZpbmlzaGVkID8gR0xfVFJVRSA6IEdMX0ZBTFNFKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKK30KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9RdWVyeUdMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUXVlcnlHTC5oCmluZGV4IDVlMjgwYjFmN2JjLi44ODc2
NjVhMmNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL1F1ZXJ5R0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvUXVlcnlHTC5oCkBAIC0yMiw5ICsyMiwyNSBAQCBjbGFzcyBT
dGF0ZU1hbmFnZXJHTDsKIGNsYXNzIFF1ZXJ5R0wgOiBwdWJsaWMgUXVlcnlJbXBsCiB7CiAgIHB1
YmxpYzoKLSAgICBRdWVyeUdMKEdMZW51bSB0eXBlLCBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rp
b25zLCBTdGF0ZU1hbmFnZXJHTCAqc3RhdGVNYW5hZ2VyKTsKKyAgICBRdWVyeUdMKEdMZW51bSB0
eXBlKTsKICAgICB+UXVlcnlHTCgpIG92ZXJyaWRlOwogCisgICAgLy8gT3BlbkdMIGlzIG9ubHkg
YWxsb3dlZCB0byBoYXZlIG9uZSBxdWVyeSBvZiBlYWNoIHR5cGUgYWN0aXZlIGF0IGFueSBnaXZl
biB0aW1lLiBTaW5jZSBBTkdMRQorICAgIC8vIHZpcnR1YWxpemVzIGNvbnRleHRzLCBxdWVyaWVz
IG5lZWQgdG8gYmUgYWJsZSB0byBiZSBwYXVzZWQgYW5kIHJlc3VtZWQuCisgICAgLy8gQSBxdWVy
eSBpcyAicGF1c2VkIiBieSBlbmRpbmcgaXQgYW5kIHB1c2hpbmcgdGhlIElEIGludG8gYSBsaXN0
IG9mIHF1ZXJpZXMgYXdhaXRpbmcgcmVhZGJhY2suCisgICAgLy8gV2hlbiBpdCBpcyAicmVzdW1l
ZCIsIGEgbmV3IHF1ZXJ5IGlzIGdlbmVyYXRlZCBhbmQgc3RhcnRlZC4KKyAgICAvLyBXaGVuIGEg
cmVzdWx0IGlzIHJlcXVpcmVkLCB0aGUgcXVlcmllcyBhcmUgImZsdXNoZWQiIGJ5IGl0ZXJhdGlu
ZyBvdmVyIHRoZSBsaXN0IG9mIHBlbmRpbmcKKyAgICAvLyBxdWVyaWVzIGFuZCBtZXJnaW5nIHRo
ZWlyIHJlc3VsdHMuCisgICAgdmlydHVhbCBnbDo6RXJyb3IgcGF1c2UoKSAgPSAwOworICAgIHZp
cnR1YWwgZ2w6OkVycm9yIHJlc3VtZSgpID0gMDsKK307CisKK2NsYXNzIFN0YW5kYXJkUXVlcnlH
TCA6IHB1YmxpYyBRdWVyeUdMCit7CisgIHB1YmxpYzoKKyAgICBTdGFuZGFyZFF1ZXJ5R0woR0xl
bnVtIHR5cGUsIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIFN0YXRlTWFuYWdlckdMICpz
dGF0ZU1hbmFnZXIpOworICAgIH5TdGFuZGFyZFF1ZXJ5R0woKSBvdmVycmlkZTsKKwogICAgIGds
OjpFcnJvciBiZWdpbigpIG92ZXJyaWRlOwogICAgIGdsOjpFcnJvciBlbmQoKSBvdmVycmlkZTsK
ICAgICBnbDo6RXJyb3IgcXVlcnlDb3VudGVyKCkgb3ZlcnJpZGU7CkBAIC0zNCwxNCArNTAsOCBA
QCBjbGFzcyBRdWVyeUdMIDogcHVibGljIFF1ZXJ5SW1wbAogICAgIGdsOjpFcnJvciBnZXRSZXN1
bHQoR0x1aW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7CiAgICAgZ2w6OkVycm9yIGlzUmVzdWx0QXZh
aWxhYmxlKGJvb2wgKmF2YWlsYWJsZSkgb3ZlcnJpZGU7CiAKLSAgICAvLyBPcGVuR0wgaXMgb25s
eSBhbGxvd2VkIHRvIGhhdmUgb25lIHF1ZXJ5IG9mIGVhY2ggdHlwZSBhY3RpdmUgYXQgYW55IGdp
dmVuIHRpbWUuIFNpbmNlIEFOR0xFCi0gICAgLy8gdmlydHVhbGl6ZXMgY29udGV4dHMsIHF1ZXJp
ZXMgbmVlZCB0byBiZSBhYmxlIHRvIGJlIHBhdXNlZCBhbmQgcmVzdW1lZC4KLSAgICAvLyBBIHF1
ZXJ5IGlzICJwYXVzZWQiIGJ5IGVuZGluZyBpdCBhbmQgcHVzaGluZyB0aGUgSUQgaW50byBhIGxp
c3Qgb2YgcXVlcmllcyBhd2FpdGluZyByZWFkYmFjay4KLSAgICAvLyBXaGVuIGl0IGlzICJyZXN1
bWVkIiwgYSBuZXcgcXVlcnkgaXMgZ2VuZXJhdGVkIGFuZCBzdGFydGVkLgotICAgIC8vIFdoZW4g
YSByZXN1bHQgaXMgcmVxdWlyZWQsIHRoZSBxdWVyaWVzIGFyZSAiZmx1c2hlZCIgYnkgaXRlcmF0
aW5nIG92ZXIgdGhlIGxpc3Qgb2YgcGVuZGluZwotICAgIC8vIHF1ZXJpZXMgYW5kIG1lcmdpbmcg
dGhlaXIgcmVzdWx0cy4KLSAgICBnbDo6RXJyb3IgcGF1c2UoKTsKLSAgICBnbDo6RXJyb3IgcmVz
dW1lKCk7CisgICAgZ2w6OkVycm9yIHBhdXNlKCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHJl
c3VtZSgpIG92ZXJyaWRlOwogCiAgIHByaXZhdGU6CiAgICAgZ2w6OkVycm9yIGZsdXNoKGJvb2wg
Zm9yY2UpOwpAQCAtNTksNiArNjksMzkgQEAgY2xhc3MgUXVlcnlHTCA6IHB1YmxpYyBRdWVyeUlt
cGwKICAgICBHTHVpbnQ2NCBtUmVzdWx0U3VtOwogfTsKIAorY2xhc3MgU3luY1Byb3ZpZGVyR0w7
CitjbGFzcyBTeW5jUXVlcnlHTCA6IHB1YmxpYyBRdWVyeUdMCit7CisgIHB1YmxpYzoKKyAgICBT
eW5jUXVlcnlHTChHTGVudW0gdHlwZSwgY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywgU3Rh
dGVNYW5hZ2VyR0wgKnN0YXRlTWFuYWdlcik7CisgICAgflN5bmNRdWVyeUdMKCkgb3ZlcnJpZGU7
CisKKyAgICBzdGF0aWMgYm9vbCBJc1N1cHBvcnRlZChjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rp
b25zKTsKKworICAgIGdsOjpFcnJvciBiZWdpbigpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBl
bmQoKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgcXVlcnlDb3VudGVyKCkgb3ZlcnJpZGU7Cisg
ICAgZ2w6OkVycm9yIGdldFJlc3VsdChHTGludCAqcGFyYW1zKSBvdmVycmlkZTsKKyAgICBnbDo6
RXJyb3IgZ2V0UmVzdWx0KEdMdWludCAqcGFyYW1zKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3Ig
Z2V0UmVzdWx0KEdMaW50NjQgKnBhcmFtcykgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGdldFJl
c3VsdChHTHVpbnQ2NCAqcGFyYW1zKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgaXNSZXN1bHRB
dmFpbGFibGUoYm9vbCAqYXZhaWxhYmxlKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBwYXVz
ZSgpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciByZXN1bWUoKSBvdmVycmlkZTsKKworICBwcml2
YXRlOgorICAgIGdsOjpFcnJvciBmbHVzaChib29sIGZvcmNlKTsKKworICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgorICAgIGdsOjpFcnJvciBnZXRSZXN1bHRCYXNlKFQgKnBhcmFtcyk7CisKKyAg
ICBjb25zdCBGdW5jdGlvbnNHTCAqbUZ1bmN0aW9uczsKKyAgICBTdGF0ZU1hbmFnZXJHTCAqbVN0
YXRlTWFuYWdlcjsKKworICAgIHN0ZDo6dW5pcXVlX3B0cjxTeW5jUHJvdmlkZXJHTD4gbVN5bmNQ
cm92aWRlcjsKKyAgICBib29sIG1GaW5pc2hlZDsKK307CiB9CiAKICNlbmRpZiAvLyBMSUJBTkdM
RV9SRU5ERVJFUl9HTF9RVUVSWUdMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyYnVmZmVyR0wuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmJ1ZmZlckdM
LmNwcAppbmRleCBiZmMyYmIyNTRmYi4uMWM0ZDM1ZDZkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJidWZmZXJHTC5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L1JlbmRlcmJ1ZmZlckdMLmNwcApAQCAtNDgsNyArNDgsNyBAQCBnbDo6RXJyb3IgUmVuZGVyYnVm
ZmVyR0w6OnNldFN0b3JhZ2UoR0xlbnVtIGludGVybmFsZm9ybWF0LCBzaXplX3Qgd2lkdGgsIHNp
emVfdAogICAgIG1GdW5jdGlvbnMtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVS
LCByZW5kZXJidWZmZXJGb3JtYXQuaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVpPih3aWR0aCksIHN0YXRpY19jYXN0
PEdMc2l6ZWk+KGhlaWdodCkpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7
CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBSZW5kZXJidWZmZXJH
TDo6c2V0U3RvcmFnZU11bHRpc2FtcGxlKHNpemVfdCBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCkKQEAgLTc5LDcgKzc5LDcgQEAgZ2w6
OkVycm9yIFJlbmRlcmJ1ZmZlckdMOjpzZXRTdG9yYWdlTXVsdGlzYW1wbGUoc2l6ZV90IHNhbXBs
ZXMsIEdMZW51bSBpbnRlcm5hbGYKICAgICAgICAgfSB3aGlsZSAoZXJyb3IgIT0gR0xfTk9fRVJS
T1IpOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVyYnVmZmVyR0w6OnNldFN0
b3JhZ2VFR0xJbWFnZVRhcmdldChlZ2w6OkltYWdlICppbWFnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9SZW5k
ZXJlckdMLmNwcAppbmRleCBkYTFhNjU2ODdjMS4uODc0NTdmNGNkZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdM
LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvUmVuZGVyZXJHTC5jcHAKQEAgLTkzLDggKzkzLDI1IEBAIHN0YXRpYyB2b2lkIElOVEVSTkFM
X0dMX0FQSUVOVFJZIExvZ0dMRGVidWdNZXNzYWdlKEdMZW51bSBzb3VyY2UsIEdMZW51bSB0eXBl
LCBHCiAgICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V2ZXJpdHlU
ZXh0ID0gIlVOS05PV04iOyAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIEVSUigiXG5cdFNvdXJj
ZTogJXNcblx0VHlwZTogJXNcblx0SUQ6ICVkXG5cdFNldmVyaXR5OiAlc1xuXHRNZXNzYWdlOiAl
cyIsIHNvdXJjZVRleHQuY19zdHIoKSwgdHlwZVRleHQuY19zdHIoKSwgaWQsCi0gICAgICAgIHNl
dmVyaXR5VGV4dC5jX3N0cigpLCBtZXNzYWdlKTsKKyAgICBpZiAodHlwZSA9PSBHTF9ERUJVR19U
WVBFX0VSUk9SKQorICAgIHsKKyAgICAgICAgRVJSKCkgPDwgc3RkOjplbmRsCisgICAgICAgICAg
ICAgIDw8ICJcdFNvdXJjZTogIiA8PCBzb3VyY2VUZXh0IDw8IHN0ZDo6ZW5kbAorICAgICAgICAg
ICAgICA8PCAiXHRUeXBlOiAiIDw8IHR5cGVUZXh0IDw8IHN0ZDo6ZW5kbAorICAgICAgICAgICAg
ICA8PCAiXHRJRDogIiA8PCBnbDo6RXJyb3IoaWQpIDw8IHN0ZDo6ZW5kbAorICAgICAgICAgICAg
ICA8PCAiXHRTZXZlcml0eTogIiA8PCBzZXZlcml0eVRleHQgPDwgc3RkOjplbmRsCisgICAgICAg
ICAgICAgIDw8ICJcdE1lc3NhZ2U6ICIgPDwgbWVzc2FnZTsKKyAgICB9CisgICAgZWxzZQorICAg
IHsKKyAgICAgICAgLy8gVE9ETyh5bm92aWtvdik6IGZpbHRlciBpbnRvIFdBUk4gYW5kIElORk8g
aWYgSU5GTyBpcyBldmVyIGltcGxlbWVudGVkCisgICAgICAgIFdBUk4oKSA8PCBzdGQ6OmVuZGwK
KyAgICAgICAgICAgICAgIDw8ICJcdFNvdXJjZTogIiA8PCBzb3VyY2VUZXh0IDw8IHN0ZDo6ZW5k
bAorICAgICAgICAgICAgICAgPDwgIlx0VHlwZTogIiA8PCB0eXBlVGV4dCA8PCBzdGQ6OmVuZGwK
KyAgICAgICAgICAgICAgIDw8ICJcdElEOiAiIDw8IGdsOjpFcnJvcihpZCkgPDwgc3RkOjplbmRs
CisgICAgICAgICAgICAgICA8PCAiXHRTZXZlcml0eTogIiA8PCBzZXZlcml0eVRleHQgPDwgc3Rk
OjplbmRsCisgICAgICAgICAgICAgICA8PCAiXHRNZXNzYWdlOiAiIDw8IG1lc3NhZ2U7CisgICAg
fQogfQogI2VuZGlmCiAKQEAgLTExMSw4ICsxMjgsOCBAQCBSZW5kZXJlckdMOjpSZW5kZXJlckdM
KGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZh
dAogICAgICAgbUNhcHNJbml0aWFsaXplZChmYWxzZSkKIHsKICAgICBBU1NFUlQobUZ1bmN0aW9u
cyk7Ci0gICAgbVN0YXRlTWFuYWdlciA9IG5ldyBTdGF0ZU1hbmFnZXJHTChtRnVuY3Rpb25zLCBn
ZXROYXRpdmVDYXBzKCkpOwogICAgIG5hdGl2ZWdsX2dsOjpHZW5lcmF0ZVdvcmthcm91bmRzKG1G
dW5jdGlvbnMsICZtV29ya2Fyb3VuZHMpOworICAgIG1TdGF0ZU1hbmFnZXIgPSBuZXcgU3RhdGVN
YW5hZ2VyR0wobUZ1bmN0aW9ucywgZ2V0TmF0aXZlQ2FwcygpKTsKICAgICBtQmxpdHRlciA9IG5l
dyBCbGl0R0woZnVuY3Rpb25zLCBtV29ya2Fyb3VuZHMsIG1TdGF0ZU1hbmFnZXIpOwogCiAgICAg
bUhhc0RlYnVnT3V0cHV0ID0gbUZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oNCwg
MykpIHx8CkBAIC0xNjAsNyArMTc3LDcgQEAgUmVuZGVyZXJHTDo6flJlbmRlcmVyR0woKQogZ2w6
OkVycm9yIFJlbmRlcmVyR0w6OmZsdXNoKCkKIHsKICAgICBtRnVuY3Rpb25zLT5mbHVzaCgpOwot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXJHTDo6ZmluaXNoKCkKQEAgLTE4MSw3ICsxOTgs
NyBAQCBnbDo6RXJyb3IgUmVuZGVyZXJHTDo6ZmluaXNoKCkKICAgICB9CiAjZW5kaWYKIAotICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OwogfQogCiBnbDo6RXJyb3IgUmVuZGVyZXJHTDo6ZHJhd0FycmF5cyhjb25zdCBnbDo6Q29udGV4
dFN0YXRlICZkYXRhLApAQCAtMjcxLDcgKzI4OCwzNCBAQCBnbDo6RXJyb3IgUmVuZGVyZXJHTDo6
ZHJhd1JhbmdlRWxlbWVudHMoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKICAgICAgICAg
bUZ1bmN0aW9ucy0+ZHJhd1JhbmdlRWxlbWVudHMobW9kZSwgc3RhcnQsIGVuZCwgY291bnQsIHR5
cGUsIGRyYXdJbmRleFBvaW50ZXIpOwogICAgIH0KIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
Tk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCitnbDo6RXJyb3IgUmVu
ZGVyZXJHTDo6ZHJhd0FycmF5c0luZGlyZWN0KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmlu
ZGlyZWN0KQoreworICAgIEFOR0xFX1RSWShtU3RhdGVNYW5hZ2VyLT5zZXREcmF3SW5kaXJlY3RT
dGF0ZShkYXRhLCBHTF9OT05FKSk7CisKKyAgICBpZiAoIW1Ta2lwRHJhd0NhbGxzKQorICAgIHsK
KyAgICAgICAgbUZ1bmN0aW9ucy0+ZHJhd0FycmF5c0luZGlyZWN0KG1vZGUsIGluZGlyZWN0KTsK
KyAgICB9CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK2dsOjpFcnJvciBSZW5kZXJl
ckdMOjpkcmF3RWxlbWVudHNJbmRpcmVjdChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAq
aW5kaXJlY3QpCit7CisgICAgQU5HTEVfVFJZKG1TdGF0ZU1hbmFnZXItPnNldERyYXdJbmRpcmVj
dFN0YXRlKGRhdGEsIHR5cGUpKTsKKworICAgIGlmICghbVNraXBEcmF3Q2FsbHMpCisgICAgewor
ICAgICAgICBtRnVuY3Rpb25zLT5kcmF3RWxlbWVudHNJbmRpcmVjdChtb2RlLCB0eXBlLCBpbmRp
cmVjdCk7CisgICAgfQorICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2b2lkIFJlbmRl
cmVyR0w6OnN0ZW5jaWxGaWxsUGF0aChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZzdGF0ZSwKQEAg
LTUwOSw3ICs1NTMsOCBAQCB2b2lkIFJlbmRlcmVyR0w6OmdlbmVyYXRlQ2FwcyhnbDo6Q2FwcyAq
b3V0Q2FwcywgZ2w6OlRleHR1cmVDYXBzTWFwKiBvdXRUZXh0dXJlQwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2w6OkV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnbDo6TGltaXRhdGlvbnMgKiAvKiBvdXRMaW1pdGF0aW9ucyAq
LykgY29uc3QKIHsKLSAgICBuYXRpdmVnbF9nbDo6R2VuZXJhdGVDYXBzKG1GdW5jdGlvbnMsIG91
dENhcHMsIG91dFRleHR1cmVDYXBzLCBvdXRFeHRlbnNpb25zLCAmbU1heFN1cHBvcnRlZEVTVmVy
c2lvbik7CisgICAgbmF0aXZlZ2xfZ2w6OkdlbmVyYXRlQ2FwcyhtRnVuY3Rpb25zLCBtV29ya2Fy
b3VuZHMsIG91dENhcHMsIG91dFRleHR1cmVDYXBzLCBvdXRFeHRlbnNpb25zLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJm1NYXhTdXBwb3J0ZWRFU1ZlcnNpb24pOwogfQogCiBHTGlu
dCBSZW5kZXJlckdMOjpnZXRHUFVEaXNqb2ludCgpCkBAIC01NTgsNCArNjAzLDE0IEBAIGNvbnN0
IGdsOjpMaW1pdGF0aW9ucyAmUmVuZGVyZXJHTDo6Z2V0TmF0aXZlTGltaXRhdGlvbnMoKSBjb25z
dAogICAgIHJldHVybiBtTmF0aXZlTGltaXRhdGlvbnM7CiB9CiAKK2dsOjpFcnJvciBSZW5kZXJl
ckdMOjpkaXNwYXRjaENvbXB1dGUoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bUdyb3Vwc1gsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBudW1Hcm91cHNZLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtR3JvdXBzWikKK3sK
KyAgICBBTkdMRV9UUlkobVN0YXRlTWFuYWdlci0+c2V0RGlzcGF0Y2hDb21wdXRlU3RhdGUoZGF0
YSkpOworICAgIG1GdW5jdGlvbnMtPmRpc3BhdGNoQ29tcHV0ZShudW1Hcm91cHNYLCBudW1Hcm91
cHNZLCBudW1Hcm91cHNaKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKwogfSAgLy8g
bmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmVyR0wuaAppbmRleCA3MWYwMTIwNTVjMS4u
YTYzNmMxNGI2YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9SZW5kZXJlckdMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1JlbmRlcmVyR0wuaApAQCAtNzcsNiArNzcsMTEg
QEAgY2xhc3MgUmVuZGVyZXJHTCA6IGFuZ2xlOjpOb25Db3B5YWJsZQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSk7CisgICAgZ2w6OkVycm9yIGRy
YXdBcnJheXNJbmRpcmVjdChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBHTGVudW0gbW9k
ZSwgY29uc3QgR0x2b2lkICppbmRpcmVjdCk7CisgICAgZ2w6OkVycm9yIGRyYXdFbGVtZW50c0lu
ZGlyZWN0KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgR0x2b2lkICppbmRpcmVjdCk7CiAKICAgICAvLyBDSFJPTUlVTV9wYXRoX3JlbmRlcmlu
ZyBpbXBsZW1lbnRhdGlvbgogICAgIHZvaWQgc3RlbmNpbEZpbGxQYXRoKGNvbnN0IGdsOjpDb250
ZXh0U3RhdGUgJnN0YXRlLApAQCAtMTYxLDYgKzE2NiwxMSBAQCBjbGFzcyBSZW5kZXJlckdMIDog
YW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgY29uc3QgZ2w6OkV4dGVuc2lvbnMgJmdldE5hdGl2ZUV4
dGVuc2lvbnMoKSBjb25zdDsKICAgICBjb25zdCBnbDo6TGltaXRhdGlvbnMgJmdldE5hdGl2ZUxp
bWl0YXRpb25zKCkgY29uc3Q7CiAKKyAgICBnbDo6RXJyb3IgZGlzcGF0Y2hDb21wdXRlKGNvbnN0
IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgbnVtR3JvdXBzWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBu
dW1Hcm91cHNZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bUdyb3Vw
c1opOworCiAgIHByaXZhdGU6CiAgICAgdm9pZCBlbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKSBjb25z
dDsKICAgICB2b2lkIGdlbmVyYXRlQ2FwcyhnbDo6Q2FwcyAqb3V0Q2FwcywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TYW1wbGVy
R0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L1NhbXBsZXJHTC5jcHAKaW5kZXggYmZmYzg5ZWM5ODEuLjJhNmQ4MTU4MzViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU2FtcGxl
ckdMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvU2FtcGxlckdMLmNwcApAQCAtNjIsNiArNjIsNyBAQCB2b2lkIFNhbXBsZXJHTDo6c3lu
Y1N0YXRlKGNvbnN0IGdsOjpTYW1wbGVyU3RhdGUgJnNhbXBsZXJTdGF0ZSkgY29uc3QKICAgICBT
eW5jU2FtcGxlclN0YXRlTWVtYmVyKG1GdW5jdGlvbnMsIG1TYW1wbGVySUQsIHNhbXBsZXJTdGF0
ZSwgbUFwcGxpZWRTYW1wbGVyU3RhdGUsIEdMX1RFWFRVUkVfTUFYX0xPRCwgJmdsOjpTYW1wbGVy
U3RhdGU6Om1heExvZCk7CiAgICAgU3luY1NhbXBsZXJTdGF0ZU1lbWJlcihtRnVuY3Rpb25zLCBt
U2FtcGxlcklELCBzYW1wbGVyU3RhdGUsIG1BcHBsaWVkU2FtcGxlclN0YXRlLCBHTF9URVhUVVJF
X0NPTVBBUkVfTU9ERSwgJmdsOjpTYW1wbGVyU3RhdGU6OmNvbXBhcmVNb2RlKTsKICAgICBTeW5j
U2FtcGxlclN0YXRlTWVtYmVyKG1GdW5jdGlvbnMsIG1TYW1wbGVySUQsIHNhbXBsZXJTdGF0ZSwg
bUFwcGxpZWRTYW1wbGVyU3RhdGUsIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5DLCAmZ2w6OlNhbXBs
ZXJTdGF0ZTo6Y29tcGFyZUZ1bmMpOworICAgIFN5bmNTYW1wbGVyU3RhdGVNZW1iZXIobUZ1bmN0
aW9ucywgbVNhbXBsZXJJRCwgc2FtcGxlclN0YXRlLCBtQXBwbGllZFNhbXBsZXJTdGF0ZSwgR0xf
VEVYVFVSRV9TUkdCX0RFQ09ERV9FWFQsICZnbDo6U2FtcGxlclN0YXRlOjpzUkdCRGVjb2RlKTsK
ICAgICAvLyBjbGFuZy1mb3JtYXQgb24KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1NoYWRlckdMLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TaGFkZXJHTC5jcHAKaW5k
ZXggMTU3NDUwN2QxYTUuLjhmYzdkNDY0NzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU2hhZGVyR0wuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TaGFkZXJHTC5jcHAK
QEAgLTcwLDExICs3MCwzMSBAQCBTaENvbXBpbGVPcHRpb25zIFNoYWRlckdMOjpwcmVwYXJlU291
cmNlQW5kUmV0dXJuT3B0aW9ucyhzdGQ6OnN0cmluZ3N0cmVhbSAqc291cgogICAgICAgICBvcHRp
b25zIHw9IFNIX0VNVUxBVEVfSVNOQU5fRkxPQVRfRlVOQ1RJT047CiAgICAgfQogCisgICAgaWYg
KG1Xb3JrYXJvdW5kcy5lbXVsYXRlQXRhbjJGbG9hdCkKKyAgICB7CisgICAgICAgIG9wdGlvbnMg
fD0gU0hfRU1VTEFURV9BVEFOMl9GTE9BVF9GVU5DVElPTjsKKyAgICB9CisKICAgICBpZiAobVdv
cmthcm91bmRzLnVzZVVudXNlZEJsb2Nrc1dpdGhTdGFuZGFyZE9yU2hhcmVkTGF5b3V0KQogICAg
IHsKICAgICAgICAgb3B0aW9ucyB8PSBTSF9VU0VfVU5VU0VEX1NUQU5EQVJEX1NIQVJFRF9CTE9D
S1M7CiAgICAgfQogCisgICAgaWYgKG1Xb3JrYXJvdW5kcy5kb250UmVtb3ZlSW52YXJpYW50Rm9y
RnJhZ21lbnRJbnB1dCkKKyAgICB7CisgICAgICAgIG9wdGlvbnMgfD0gU0hfRE9OVF9SRU1PVkVf
SU5WQVJJQU5UX0ZPUl9GUkFHTUVOVF9JTlBVVDsKKyAgICB9CisKKyAgICBpZiAobVdvcmthcm91
bmRzLnJlbW92ZUludmFyaWFudEFuZENlbnRyb2lkRm9yRVNTTDMpCisgICAgeworICAgICAgICBv
cHRpb25zIHw9IFNIX1JFTU9WRV9JTlZBUklBTlRfQU5EX0NFTlRST0lEX0ZPUl9FU1NMMzsKKyAg
ICB9CisKKyAgICBpZiAobVdvcmthcm91bmRzLnJld3JpdGVGbG9hdFVuYXJ5TWludXNPcGVyYXRv
cikKKyAgICB7CisgICAgICAgIG9wdGlvbnMgfD0gU0hfUkVXUklURV9GTE9BVF9VTkFSWV9NSU5V
U19PUEVSQVRPUjsKKyAgICB9CisKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIApAQCAtMTA4LDEx
ICsxMjgsMTEgQEAgYm9vbCBTaGFkZXJHTDo6cG9zdFRyYW5zbGF0ZUNvbXBpbGUoZ2w6OkNvbXBp
bGVyICpjb21waWxlciwgc3RkOjpzdHJpbmcgKmluZm9Mb2cKICAgICAgICAgICAgIG1TaGFkZXJJ
RCA9IDA7CiAKICAgICAgICAgICAgICppbmZvTG9nID0gJmJ1ZlswXTsKLSAgICAgICAgICAgIFRS
QUNFKCJcbiVzIiwgaW5mb0xvZy0+Y19zdHIoKSk7CisgICAgICAgICAgICBXQVJOKCkgPDwgc3Rk
OjplbmRsIDw8ICppbmZvTG9nOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewot
ICAgICAgICAgICAgVFJBQ0UoIlxuU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCB3aXRoIG5vIGlu
Zm8gbG9nLiIpOworICAgICAgICAgICAgV0FSTigpIDw8IHN0ZDo6ZW5kbCA8PCAiU2hhZGVyIGNv
bXBpbGF0aW9uIGZhaWxlZCB3aXRoIG5vIGluZm8gbG9nLiI7CiAgICAgICAgIH0KICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTEyMiw3ICsxNDIsNyBAQCBib29sIFNoYWRlckdMOjpw
b3N0VHJhbnNsYXRlQ29tcGlsZShnbDo6Q29tcGlsZXIgKmNvbXBpbGVyLCBzdGQ6OnN0cmluZyAq
aW5mb0xvZwogCiBzdGQ6OnN0cmluZyBTaGFkZXJHTDo6Z2V0RGVidWdJbmZvKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKKyAgICByZXR1cm4gbURhdGEuZ2V0VHJhbnNsYXRl
ZFNvdXJjZSgpOwogfQogCiBHTHVpbnQgU2hhZGVyR0w6OmdldFNoYWRlcklEKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9TdGF0ZU1hbmFnZXJHTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuY3BwCmluZGV4IGMxMTJiY2ZhYTI4Li4xYzZm
ZTk3YTczZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuY3BwCkBAIC0xMSw3
ICsxMSw3IEBACiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCi0jaW5j
bHVkZSAiY29tbW9uL0JpdFNldEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiY29tbW9uL2JpdHNldF91
dGlscy5oIgogI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgogI2luY2x1ZGUgImNvbW1vbi9t
YXRyaXhfdXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0U3RhdGUuaCIKQEAgLTEz
NSw2ICsxMzUsNyBAQCBTdGF0ZU1hbmFnZXJHTDo6U3RhdGVNYW5hZ2VyR0woY29uc3QgRnVuY3Rp
b25zR0wgKmZ1bmN0aW9ucywgY29uc3QgZ2w6OkNhcHMgJnJlbgogICAgIG1UZXh0dXJlc1tHTF9U
RVhUVVJFX0NVQkVfTUFQXS5yZXNpemUocmVuZGVyZXJDYXBzLm1heENvbWJpbmVkVGV4dHVyZUlt
YWdlVW5pdHMpOwogICAgIG1UZXh0dXJlc1tHTF9URVhUVVJFXzJEX0FSUkFZXS5yZXNpemUocmVu
ZGVyZXJDYXBzLm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOwogICAgIG1UZXh0dXJlc1tH
TF9URVhUVVJFXzNEXS5yZXNpemUocmVuZGVyZXJDYXBzLm1heENvbWJpbmVkVGV4dHVyZUltYWdl
VW5pdHMpOworICAgIG1UZXh0dXJlc1tHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFXS5yZXNpemUo
cmVuZGVyZXJDYXBzLm1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMpOwogCiAgICAgbUluZGV4
ZWRCdWZmZXJzW0dMX1VOSUZPUk1fQlVGRkVSXS5yZXNpemUocmVuZGVyZXJDYXBzLm1heENvbWJp
bmVkVW5pZm9ybUJsb2Nrcyk7CiAKQEAgLTY2MSwxNyArNjYyLDc3IEBAIGdsOjpFcnJvciBTdGF0
ZU1hbmFnZXJHTDo6c2V0RHJhd0VsZW1lbnRzU3RhdGUoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAm
ZGF0YSwKICAgICByZXR1cm4gc2V0R2VuZXJpY0RyYXdTdGF0ZShkYXRhKTsKIH0KIAotZ2w6OkVy
cm9yIFN0YXRlTWFuYWdlckdMOjpwYXVzZVRyYW5zZm9ybUZlZWRiYWNrKGNvbnN0IGdsOjpDb250
ZXh0U3RhdGUgJmRhdGEpCitnbDo6RXJyb3IgU3RhdGVNYW5hZ2VyR0w6OnNldERyYXdJbmRpcmVj
dFN0YXRlKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIEdMZW51bSB0eXBlKQogewotICAg
IC8vIElmIHRoZSBjb250ZXh0IGlzIGdvaW5nIHRvIGJlIGNoYW5nZWQsIHBhdXNlIHRoZSBwcmV2
aW91cyBjb250ZXh0J3MgdHJhbnNmb3JtIGZlZWRiYWNrCi0gICAgaWYgKGRhdGEuZ2V0Q29udGV4
dCgpICE9IG1QcmV2RHJhd0NvbnRleHQpCisgICAgY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSA9IGRh
dGEuZ2V0U3RhdGUoKTsKKworICAgIGNvbnN0IGdsOjpWZXJ0ZXhBcnJheSAqdmFvID0gc3RhdGUu
Z2V0VmVydGV4QXJyYXkoKTsKKyAgICBjb25zdCBWZXJ0ZXhBcnJheUdMICp2YW9HTCA9IEdldElt
cGxBczxWZXJ0ZXhBcnJheUdMPih2YW8pOworCisgICAgaWYgKHR5cGUgIT0gR0xfTk9ORSkKKyAg
ICB7CisgICAgICAgIEFOR0xFX1RSWSh2YW9HTC0+c3luY0VsZW1lbnRBcnJheVN0YXRlKCkpOwor
ICAgIH0KKyAgICBiaW5kVmVydGV4QXJyYXkodmFvR0wtPmdldFZlcnRleEFycmF5SUQoKSwgdmFv
R0wtPmdldEFwcGxpZWRFbGVtZW50QXJyYXlCdWZmZXJJRCgpKTsKKworICAgIGdsOjpCdWZmZXIg
KmRyYXdJbmRpcmVjdEJ1ZmZlciA9IHN0YXRlLmdldERyYXdJbmRpcmVjdEJ1ZmZlcigpOworICAg
IEFTU0VSVChkcmF3SW5kaXJlY3RCdWZmZXIpOworICAgIGNvbnN0IEJ1ZmZlckdMICpidWZmZXJH
TCA9IEdldEltcGxBczxCdWZmZXJHTD4oZHJhd0luZGlyZWN0QnVmZmVyKTsKKyAgICBiaW5kQnVm
ZmVyKEdMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSLCBidWZmZXJHTC0+Z2V0QnVmZmVySUQoKSk7CisK
KyAgICByZXR1cm4gc2V0R2VuZXJpY0RyYXdTdGF0ZShkYXRhKTsKK30KKworZ2w6OkVycm9yIFN0
YXRlTWFuYWdlckdMOjpzZXREaXNwYXRjaENvbXB1dGVTdGF0ZShjb25zdCBnbDo6Q29udGV4dFN0
YXRlICZkYXRhKQoreworICAgIHNldEdlbmVyaWNTaGFkZXJTdGF0ZShkYXRhKTsKKyAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKK30KKwordm9pZCBTdGF0ZU1hbmFnZXJHTDo6cGF1c2VUcmFuc2Zv
cm1GZWVkYmFjaygpCit7CisgICAgaWYgKG1QcmV2RHJhd1RyYW5zZm9ybUZlZWRiYWNrICE9IG51
bGxwdHIpCisgICAgeworICAgICAgICBtUHJldkRyYXdUcmFuc2Zvcm1GZWVkYmFjay0+c3luY1Bh
dXNlZFN0YXRlKHRydWUpOworICAgIH0KK30KKwordm9pZCBTdGF0ZU1hbmFnZXJHTDo6cGF1c2VB
bGxRdWVyaWVzKCkKK3sKKyAgICBmb3IgKFF1ZXJ5R0wgKnByZXZRdWVyeSA6IG1DdXJyZW50UXVl
cmllcykKKyAgICB7CisgICAgICAgIHByZXZRdWVyeS0+cGF1c2UoKTsKKyAgICB9Cit9CisKK3Zv
aWQgU3RhdGVNYW5hZ2VyR0w6OnBhdXNlUXVlcnkoR0xlbnVtIHR5cGUpCit7CisgICAgZm9yIChR
dWVyeUdMICpwcmV2UXVlcnkgOiBtQ3VycmVudFF1ZXJpZXMpCiAgICAgewotICAgICAgICBpZiAo
bVByZXZEcmF3VHJhbnNmb3JtRmVlZGJhY2sgIT0gbnVsbHB0cikKKyAgICAgICAgaWYgKHByZXZR
dWVyeS0+Z2V0VHlwZSgpID09IHR5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1QcmV2RHJh
d1RyYW5zZm9ybUZlZWRiYWNrLT5zeW5jUGF1c2VkU3RhdGUodHJ1ZSk7CisgICAgICAgICAgICBw
cmV2UXVlcnktPnBhdXNlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgU3RhdGVNYW5h
Z2VyR0w6OnJlc3VtZUFsbFF1ZXJpZXMoKQoreworICAgIGZvciAoUXVlcnlHTCAqcHJldlF1ZXJ5
IDogbUN1cnJlbnRRdWVyaWVzKQorICAgIHsKKyAgICAgICAgcHJldlF1ZXJ5LT5yZXN1bWUoKTsK
KyAgICB9Cit9CisKK3ZvaWQgU3RhdGVNYW5hZ2VyR0w6OnJlc3VtZVF1ZXJ5KEdMZW51bSB0eXBl
KQoreworICAgIGZvciAoUXVlcnlHTCAqcHJldlF1ZXJ5IDogbUN1cnJlbnRRdWVyaWVzKQorICAg
IHsKKyAgICAgICAgaWYgKHByZXZRdWVyeS0+Z2V0VHlwZSgpID09IHR5cGUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHByZXZRdWVyeS0+cmVzdW1lKCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAg
cmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CiB9CiAKIGdsOjpFcnJvciBTdGF0ZU1hbmFn
ZXJHTDo6b25NYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKQpAQCAtNjc5
LDE2ICs3NDAsMTMgQEAgZ2w6OkVycm9yIFN0YXRlTWFuYWdlckdMOjpvbk1ha2VDdXJyZW50KGNv
bnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpCiAgICAgY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSA9
IGRhdGEuZ2V0U3RhdGUoKTsKIAogICAgIC8vIElmIHRoZSBjb250ZXh0IGhhcyBjaGFuZ2VkLCBw
YXVzZSB0aGUgcHJldmlvdXMgY29udGV4dCdzIHF1ZXJpZXMKLSAgICBpZiAoZGF0YS5nZXRDb250
ZXh0KCkgIT0gbVByZXZEcmF3Q29udGV4dCkKKyAgICBpZiAoZGF0YS5nZXRDb250ZXh0SUQoKSAh
PSBtUHJldkRyYXdDb250ZXh0KQogICAgIHsKLSAgICAgICAgZm9yIChRdWVyeUdMICpwcmV2UXVl
cnkgOiBtQ3VycmVudFF1ZXJpZXMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHByZXZRdWVyeS0+
cGF1c2UoKTsKLSAgICAgICAgfQorICAgICAgICBwYXVzZUFsbFF1ZXJpZXMoKTsKICAgICB9CiAg
ICAgbUN1cnJlbnRRdWVyaWVzLmNsZWFyKCk7CiAgICAgbVByZXZEcmF3VHJhbnNmb3JtRmVlZGJh
Y2sgPSBudWxscHRyOwotICAgIG1QcmV2RHJhd0NvbnRleHQgICAgICAgICAgID0gZGF0YS5nZXRD
b250ZXh0KCk7CisgICAgbVByZXZEcmF3Q29udGV4dCAgICAgICAgICAgPSBkYXRhLmdldENvbnRl
eHRJRCgpOwogCiAgICAgLy8gU2V0IHRoZSBjdXJyZW50IHF1ZXJ5IHN0YXRlCiAgICAgZm9yIChH
TGVudW0gcXVlcnlUeXBlIDogUXVlcnlUeXBlcykKQEAgLTcwMywxMCArNzYxLDE0IEBAIGdsOjpF
cnJvciBTdGF0ZU1hbmFnZXJHTDo6b25NYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dFN0YXRl
ICZkYXRhKQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19F
UlJPUik7CisgICAgLy8gU2VhbWxlc3MgY3ViZW1hcHMgYXJlIHJlcXVpcmVkIGZvciBFUzMgYW5k
IGhpZ2hlciBjb250ZXh0cy4gSXQgc2hvdWxkIGJlIHRoZSBjaGVhcGVzdCB0byBzZXQKKyAgICAv
LyB0aGlzIHN0YXRlIGhlcmUgc2luY2UgTWFrZUN1cnJlbnQgaXMgZXhwZWN0ZWQgdG8gYmUgY2Fs
bGVkIGxlc3MgZnJlcXVlbnRseSB0aGFuIGRyYXcgY2FsbHMuCisgICAgc2V0VGV4dHVyZUN1YmVt
YXBTZWFtbGVzc0VuYWJsZWQoZGF0YS5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzKTsKKwor
ICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgU3RhdGVNYW5hZ2VyR0w6
OnNldEdlbmVyaWNEcmF3U3RhdGUoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSkKK3ZvaWQg
U3RhdGVNYW5hZ2VyR0w6OnNldEdlbmVyaWNTaGFkZXJTdGF0ZShjb25zdCBnbDo6Q29udGV4dFN0
YXRlICZkYXRhKQogewogICAgIGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUgPSBkYXRhLmdldFN0YXRl
KCk7CiAKQEAgLTczNyw4ICs3OTksNyBAQCBnbDo6RXJyb3IgU3RhdGVNYW5hZ2VyR0w6OnNldEdl
bmVyaWNEcmF3U3RhdGUoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSkKICAgICAgICAgfQog
ICAgIH0KIAotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFNhbXBsZXJCaW5kaW5nR0w+ICZhcHBsaWVk
U2FtcGxlclVuaWZvcm1zID0gcHJvZ3JhbUdMLT5nZXRBcHBsaWVkU2FtcGxlclVuaWZvcm1zKCk7
Ci0gICAgZm9yIChjb25zdCBTYW1wbGVyQmluZGluZ0dMICZzYW1wbGVyVW5pZm9ybSA6IGFwcGxp
ZWRTYW1wbGVyVW5pZm9ybXMpCisgICAgZm9yIChjb25zdCBnbDo6U2FtcGxlckJpbmRpbmcgJnNh
bXBsZXJVbmlmb3JtIDogcHJvZ3JhbS0+Z2V0U2FtcGxlckJpbmRpbmdzKCkpCiAgICAgewogICAg
ICAgICBHTGVudW0gdGV4dHVyZVR5cGUgPSBzYW1wbGVyVW5pZm9ybS50ZXh0dXJlVHlwZTsKICAg
ICAgICAgZm9yIChHTHVpbnQgdGV4dHVyZVVuaXRJbmRleCA6IHNhbXBsZXJVbmlmb3JtLmJvdW5k
VGV4dHVyZVVuaXRzKQpAQCAtNzgxLDE0ICs4NDIsMTcgQEAgZ2w6OkVycm9yIFN0YXRlTWFuYWdl
ckdMOjpzZXRHZW5lcmljRHJhd1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Cit9CisKK2dsOjpFcnJvciBTdGF0ZU1hbmFn
ZXJHTDo6c2V0R2VuZXJpY0RyYXdTdGF0ZShjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKQor
eworICAgIHNldEdlbmVyaWNTaGFkZXJTdGF0ZShkYXRhKTsKKworICAgIGNvbnN0IGdsOjpTdGF0
ZSAmc3RhdGUgPSBkYXRhLmdldFN0YXRlKCk7CiAKICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIg
KmZyYW1lYnVmZmVyID0gc3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CiAgICAgY29uc3QgRnJh
bWVidWZmZXJHTCAqZnJhbWVidWZmZXJHTCA9IEdldEltcGxBczxGcmFtZWJ1ZmZlckdMPihmcmFt
ZWJ1ZmZlcik7CiAgICAgYmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVIsIGZyYW1l
YnVmZmVyR0wtPmdldEZyYW1lYnVmZmVySUQoKSk7Ci0gICAgZnJhbWVidWZmZXJHTC0+c3luY0Ry
YXdTdGF0ZSgpOwotCi0gICAgLy8gU2VhbWxlc3MgY3ViZW1hcHMgYXJlIHJlcXVpcmVkIGZvciBF
UzMgYW5kIGhpZ2hlciBjb250ZXh0cy4KLSAgICBzZXRUZXh0dXJlQ3ViZW1hcFNlYW1sZXNzRW5h
YmxlZChkYXRhLmdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMpOwogCiAgICAgLy8gU2V0IHRo
ZSBjdXJyZW50IHRyYW5zZm9ybSBmZWVkYmFjayBzdGF0ZQogICAgIGdsOjpUcmFuc2Zvcm1GZWVk
YmFjayAqdHJhbnNmb3JtRmVlZGJhY2sgPSBzdGF0ZS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJh
Y2soKTsKQEAgLTgwOCw3ICs4NzIsNyBAQCBnbDo6RXJyb3IgU3RhdGVNYW5hZ2VyR0w6OnNldEdl
bmVyaWNEcmF3U3RhdGUoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSkKICAgICAgICAgbVBy
ZXZEcmF3VHJhbnNmb3JtRmVlZGJhY2sgPSBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2
b2lkIFN0YXRlTWFuYWdlckdMOjpzZXRBdHRyaWJ1dGVDdXJyZW50RGF0YShzaXplX3QgaW5kZXgs
CkBAIC0xMzE4LDggKzEzODIsMTggQEAgdm9pZCBTdGF0ZU1hbmFnZXJHTDo6c2V0Q2xlYXJTdGVu
Y2lsKEdMaW50IGNsZWFyU3RlbmNpbCkKICAgICB9CiB9CiAKLXZvaWQgU3RhdGVNYW5hZ2VyR0w6
OnN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0YXRlLCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5
Qml0cyAmZ2xEaXJ0eUJpdHMpCit2b2lkIFN0YXRlTWFuYWdlckdMOjpzeW5jU3RhdGUoY29uc3Qg
Z2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZ2xEaXJ0eUJpdHMpCiB7CisgICAgY29uc3QgZ2w6
OlN0YXRlICZzdGF0ZSA9IGRhdGEuZ2V0U3RhdGUoKTsKKworICAgIC8vIFRoZSB0aGUgY3VycmVu
dCBmcmFtZWJ1ZmZlciBiaW5kaW5nIHNvbWV0aW1lcyByZXF1aXJlcyByZXNldHRpbmcgdGhlIHNy
Z2IgYmxlbmRpbmcKKyAgICBpZiAoZ2xEaXJ0eUJpdHNbZ2w6OlN0YXRlOjpESVJUWV9CSVRfRFJB
V19GUkFNRUJVRkZFUl9CSU5ESU5HXSAmJgorICAgICAgICBtRnVuY3Rpb25zLT5zdGFuZGFyZCA9
PSBTVEFOREFSRF9HTF9ERVNLVE9QKQorICAgIHsKKyAgICAgICAgbUxvY2FsRGlydHlCaXRzLnNl
dChnbDo6U3RhdGU6OkRJUlRZX0JJVF9GUkFNRUJVRkZFUl9TUkdCKTsKKyAgICB9CisKICAgICBj
b25zdCBhdXRvICZnbEFuZExvY2FsRGlydHlCaXRzID0gKGdsRGlydHlCaXRzIHwgbUxvY2FsRGly
dHlCaXRzKTsKIAogICAgIGlmICghZ2xBbmRMb2NhbERpcnR5Qml0cy5hbnkoKSkKQEAgLTE1Mzcs
NiArMTYxMSw5IEBAIHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnN5bmNTdGF0ZShjb25zdCBnbDo6U3Rh
dGUgJnN0YXRlLCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0CiAgICAgICAgICAgICBjYXNlIGds
OjpTdGF0ZTo6RElSVFlfQklUX1ZFUlRFWF9BUlJBWV9CSU5ESU5HOgogICAgICAgICAgICAgICAg
IC8vIFRPRE8oam1hZGlsbCk6IGltcGxlbWVudCB0aGlzCiAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIGdsOjpTdGF0ZTo6RElSVFlfQklUX0RSQVdfSU5ESVJFQ1RfQlVG
RkVSX0JJTkRJTkc6CisgICAgICAgICAgICAgICAgLy8gVE9ETzogaW1wbGVtZW50IHRoaXMKKyAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgZ2w6OlN0YXRlOjpESVJUWV9C
SVRfUFJPR1JBTV9CSU5ESU5HOgogICAgICAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IGlt
cGxlbWVudCB0aGlzCiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTYwLDYgKzE2MzcsMTEg
QEAgdm9pZCBTdGF0ZU1hbmFnZXJHTDo6c3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3RhdGUs
IGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXQKICAgICAgICAgICAgICAgICBzZXRQYXRoUmVuZGVy
aW5nU3RlbmNpbFN0YXRlKHN0YXRlLmdldFBhdGhTdGVuY2lsRnVuYygpLCBzdGF0ZS5nZXRQYXRo
U3RlbmNpbFJlZigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGUuZ2V0UGF0aFN0ZW5jaWxNYXNrKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBnbDo6U3RhdGU6OkRJUlRZX0JJVF9GUkFNRUJVRkZFUl9TUkdCOgor
ICAgICAgICAgICAgICAgIHNldEZyYW1lYnVmZmVyU1JHQkVuYWJsZWRGb3JGcmFtZWJ1ZmZlcigK
KyAgICAgICAgICAgICAgICAgICAgZGF0YSwgc3RhdGUuZ2V0RnJhbWVidWZmZXJTUkdCKCksCisg
ICAgICAgICAgICAgICAgICAgIEdldEltcGxBczxGcmFtZWJ1ZmZlckdMPihzdGF0ZS5nZXREcmF3
RnJhbWVidWZmZXIoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoZGlydHlCaXQgPj0g
Z2w6OlN0YXRlOjpESVJUWV9CSVRfQ1VSUkVOVF9WQUxVRV8wICYmCkBAIC0xNTc2LDggKzE2NTgs
MTMgQEAgdm9pZCBTdGF0ZU1hbmFnZXJHTDo6c3luY1N0YXRlKGNvbnN0IGdsOjpTdGF0ZSAmc3Rh
dGUsIGNvbnN0IGdsOjpTdGF0ZTo6RGlydHlCaXQKICAgICB9CiB9CiAKLXZvaWQgU3RhdGVNYW5h
Z2VyR0w6OnNldEZyYW1lYnVmZmVyU1JHQkVuYWJsZWQoYm9vbCBlbmFibGVkKQordm9pZCBTdGF0
ZU1hbmFnZXJHTDo6c2V0RnJhbWVidWZmZXJTUkdCRW5hYmxlZChjb25zdCBnbDo6Q29udGV4dFN0
YXRlICZkYXRhLCBib29sIGVuYWJsZWQpCiB7CisgICAgaWYgKCFkYXRhLmdldEV4dGVuc2lvbnMo
KS5zUkdCV3JpdGVDb250cm9sKQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IGlmIChtRnJhbWVidWZmZXJTUkdCRW5hYmxlZCAhPSBlbmFibGVkKQogICAgIHsKICAgICAgICAg
bUZyYW1lYnVmZmVyU1JHQkVuYWJsZWQgPSBlbmFibGVkOwpAQCAtMTU4OSw2ICsxNjc2LDI2IEBA
IHZvaWQgU3RhdGVNYW5hZ2VyR0w6OnNldEZyYW1lYnVmZmVyU1JHQkVuYWJsZWQoYm9vbCBlbmFi
bGVkKQogICAgICAgICB7CiAgICAgICAgICAgICBtRnVuY3Rpb25zLT5kaXNhYmxlKEdMX0ZSQU1F
QlVGRkVSX1NSR0IpOwogICAgICAgICB9CisgICAgICAgIG1Mb2NhbERpcnR5Qml0cy5zZXQoZ2w6
OlN0YXRlOjpESVJUWV9CSVRfRlJBTUVCVUZGRVJfU1JHQik7CisgICAgfQorfQorCit2b2lkIFN0
YXRlTWFuYWdlckdMOjpzZXRGcmFtZWJ1ZmZlclNSR0JFbmFibGVkRm9yRnJhbWVidWZmZXIoY29u
c3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGVuYWJsZWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
RnJhbWVidWZmZXJHTCAqZnJhbWVidWZmZXIpCit7CisgICAgaWYgKG1GdW5jdGlvbnMtPnN0YW5k
YXJkID09IFNUQU5EQVJEX0dMX0RFU0tUT1AgJiYgZnJhbWVidWZmZXItPmlzRGVmYXVsdCgpKQor
ICAgIHsKKyAgICAgICAgLy8gT2JleSB0aGUgZnJhbWVidWZmZXIgc1JHQiBzdGF0ZSBmb3IgYmxl
bmRpbmcgb24gYWxsIGZyYW1lYnVmZmVycyBleGNlcHQgdGhlIGRlZmF1bHQKKyAgICAgICAgLy8g
ZnJhbWVidWZmZXIgb24gRGVza3RvcCBPcGVuR0wuCisgICAgICAgIC8vIFdoZW4gU1JHQiBibGVu
ZGluZyBpcyBlbmFibGVkLCBvbmx5IFNSR0IgY2FwYWJsZSBmb3JtYXRzIHdpbGwgdXNlIGl0IGJ1
dCB0aGUgZGVmYXVsdAorICAgICAgICAvLyBmcmFtZWJ1ZmZlciB3aWxsIGFsd2F5cyB1c2UgaXQg
aWYgaXQgaXMgZW5hYmxlZC4KKyAgICAgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBVcGRhdGUgdGhp
cyB3aGVuIHRoZSBmcmFtZWJ1ZmZlciBiaW5kaW5nIGRpcnR5IGNoYW5nZXMsIHdoZW4gaXQgZXhp
c3RzLgorICAgICAgICBzZXRGcmFtZWJ1ZmZlclNSR0JFbmFibGVkKGRhdGEsIGZhbHNlKTsKKyAg
ICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgc2V0RnJhbWVidWZmZXJTUkdCRW5hYmxlZChk
YXRhLCBlbmFibGVkKTsKICAgICB9CiB9CiAKQEAgLTE3MDQsOSArMTgxMSw0IEBAIHZvaWQgU3Rh
dGVNYW5hZ2VyR0w6OnNldFRleHR1cmVDdWJlbWFwU2VhbWxlc3NFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKICAgICB9CiB9CiAKLUdMdWludCBTdGF0ZU1hbmFnZXJHTDo6Z2V0Qm91bmRCdWZmZXIoR0xl
bnVtIHR5cGUpCi17Ci0gICAgQVNTRVJUKG1CdWZmZXJzLmZpbmQodHlwZSkgIT0gbUJ1ZmZlcnMu
ZW5kKCkpOwotICAgIHJldHVybiBtQnVmZmVyc1t0eXBlXTsKLX0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdGF0ZU1hbmFn
ZXJHTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L1N0YXRlTWFuYWdlckdMLmgKaW5kZXggMzVkZTIzN2U5ZjEuLjIyMGQ5NGU0ZTljIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvU3Rh
dGVNYW5hZ2VyR0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaApAQCAtMjcsNiArMjcsNyBAQCBjbGFzcyBTdGF0
ZTsKIG5hbWVzcGFjZSByeAogewogCitjbGFzcyBGcmFtZWJ1ZmZlckdMOwogY2xhc3MgRnVuY3Rp
b25zR0w7CiBjbGFzcyBUcmFuc2Zvcm1GZWVkYmFja0dMOwogY2xhc3MgUXVlcnlHTDsKQEAgLTEy
Miw3ICsxMjMsMTAgQEAgY2xhc3MgU3RhdGVNYW5hZ2VyR0wgZmluYWwgOiBhbmdsZTo6Tm9uQ29w
eWFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNraXBQaXhlbHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcGFja0J1ZmZlcik7CiAKLSAgICB2b2lkIHNl
dEZyYW1lYnVmZmVyU1JHQkVuYWJsZWQoYm9vbCBlbmFibGVkKTsKKyAgICB2b2lkIHNldEZyYW1l
YnVmZmVyU1JHQkVuYWJsZWQoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgYm9vbCBlbmFi
bGVkKTsKKyAgICB2b2lkIHNldEZyYW1lYnVmZmVyU1JHQkVuYWJsZWRGb3JGcmFtZWJ1ZmZlcihj
b25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGcmFtZWJ1ZmZlckdMICpmcmFtZWJ1
ZmZlcik7CiAKICAgICB2b2lkIHNldERpdGhlckVuYWJsZWQoYm9vbCBlbmFibGVkKTsKIApAQCAt
MTQ3LDE1ICsxNTEsMjQgQEAgY2xhc3MgU3RhdGVNYW5hZ2VyR0wgZmluYWwgOiBhbmdsZTo6Tm9u
Q29weWFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lk
ICppbmRpY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGlu
c3RhbmNlQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dm9pZCAqKm91dEluZGljZXMpOworICAgIGdsOjpFcnJvciBzZXREcmF3SW5kaXJlY3RTdGF0ZShj
b25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBHTGVudW0gdHlwZSk7CiAKLSAgICBnbDo6RXJy
b3IgcGF1c2VUcmFuc2Zvcm1GZWVkYmFjayhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKTsK
LSAgICBnbDo6RXJyb3Igb25NYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRh
KTsKKyAgICBnbDo6RXJyb3Igc2V0RGlzcGF0Y2hDb21wdXRlU3RhdGUoY29uc3QgZ2w6OkNvbnRl
eHRTdGF0ZSAmZGF0YSk7CiAKLSAgICB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6U3RhdGUgJnN0
YXRlLCBjb25zdCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZ2xEaXJ0eUJpdHMpOworICAgIHZvaWQg
cGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpOworICAgIHZvaWQgcGF1c2VBbGxRdWVyaWVzKCk7Cisg
ICAgdm9pZCBwYXVzZVF1ZXJ5KEdMZW51bSB0eXBlKTsKKyAgICB2b2lkIHJlc3VtZUFsbFF1ZXJp
ZXMoKTsKKyAgICB2b2lkIHJlc3VtZVF1ZXJ5KEdMZW51bSB0eXBlKTsKKyAgICBnbDo6RXJyb3Ig
b25NYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhKTsKIAotICAgIEdMdWlu
dCBnZXRCb3VuZEJ1ZmZlcihHTGVudW0gdHlwZSk7CisgICAgdm9pZCBzeW5jU3RhdGUoY29uc3Qg
Z2w6OkNvbnRleHRTdGF0ZSAmZGF0YSwgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmdsRGly
dHlCaXRzKTsKIAogICBwcml2YXRlOgorICAgIC8vIFNldCBzdGF0ZSB0aGF0J3MgY29tbW9uIGFt
b25nIGRyYXcgY29tbWFuZHMgYW5kIGNvbXB1dGUgaW52b2NhdGlvbnMuCisgICAgdm9pZCBzZXRH
ZW5lcmljU2hhZGVyU3RhdGUoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmZGF0YSk7CisKKyAgICAv
LyBTZXQgc3RhdGUgdGhhdCdzIGNvbW1vbiBhbW9uZyBkcmF3IGNvbW1hbmRzLgogICAgIGdsOjpF
cnJvciBzZXRHZW5lcmljRHJhd1N0YXRlKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpOwog
CiAgICAgdm9pZCBzZXRUZXh0dXJlQ3ViZW1hcFNlYW1sZXNzRW5hYmxlZChib29sIGVuYWJsZWQp
OwpAQCAtMTg5LDcgKzIwMiw3IEBAIGNsYXNzIFN0YXRlTWFuYWdlckdMIGZpbmFsIDogYW5nbGU6
Ok5vbkNvcHlhYmxlCiAKICAgICBUcmFuc2Zvcm1GZWVkYmFja0dMICptUHJldkRyYXdUcmFuc2Zv
cm1GZWVkYmFjazsKICAgICBzdGQ6OnNldDxRdWVyeUdMICo+IG1DdXJyZW50UXVlcmllczsKLSAg
ICB1aW50cHRyX3QgbVByZXZEcmF3Q29udGV4dDsKKyAgICBnbDo6Q29udGV4dElEIG1QcmV2RHJh
d0NvbnRleHQ7CiAKICAgICBHTGludCBtVW5wYWNrQWxpZ25tZW50OwogICAgIEdMaW50IG1VbnBh
Y2tSb3dMZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvU3VyZmFjZUdMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9TdXJmYWNlR0wuY3BwCmluZGV4IDMyNTk0NGM0NWY3
Li5iYmE5MzhiYmEwZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL1N1cmZhY2VHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N1cmZhY2VHTC5jcHAKQEAgLTM0LDQgKzM0
LDkgQEAgZWdsOjpFcnJvciBTdXJmYWNlR0w6OmdldFN5bmNWYWx1ZXMoRUdMdWludDY0S0hSICp1
c3QsIEVHTHVpbnQ2NEtIUiAqbXNjLCBFR0x1aW4KICAgICBVTlJFQUNIQUJMRSgpOwogICAgIHJl
dHVybiBlZ2w6OkVycm9yKEVHTF9CQURfU1VSRkFDRSk7CiB9CisKK2VnbDo6RXJyb3IgU3VyZmFj
ZUdMOjp1bk1ha2VDdXJyZW50KCkKK3sKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VT
Uyk7Cit9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvU3VyZmFjZUdMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvU3VyZmFjZUdMLmgKaW5kZXggYTU0Y2UzZGI4NjIuLjdiODA1
ZGQ1N2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvU3VyZmFjZUdMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL1N1cmZhY2VHTC5oCkBAIC0yNiw2ICsyNiw3IEBAIGNsYXNz
IFN1cmZhY2VHTCA6IHB1YmxpYyBTdXJmYWNlSW1wbAogICAgIGVnbDo6RXJyb3IgZ2V0U3luY1Zh
bHVlcyhFR0x1aW50NjRLSFIgKnVzdCwgRUdMdWludDY0S0hSICptc2MsIEVHTHVpbnQ2NEtIUiAq
c2JjKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgZWdsOjpFcnJvciBtYWtlQ3VycmVudCgpID0g
MDsKKyAgICB2aXJ0dWFsIGVnbDo6RXJyb3IgdW5NYWtlQ3VycmVudCgpOwogCiAgIHByaXZhdGU6
CiAgICAgUmVuZGVyZXJHTCAqbVJlbmRlcmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1RleHR1cmVHTC5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVGV4dHVyZUdMLmNwcApp
bmRleCBjNzQxYTljMDliNS4uNzgxN2EwZWM0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJlR0wuY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJlR0wu
Y3BwCkBAIC04LDcgKzgsNyBAQAogCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvVGV4
dHVyZUdMLmgiCiAKLSNpbmNsdWRlICJjb21tb24vQml0U2V0SXRlcmF0b3IuaCIKKyNpbmNsdWRl
ICJjb21tb24vYml0c2V0X3V0aWxzLmgiCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCiAjaW5j
bHVkZSAiY29tbW9uL3V0aWxpdGllcy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL1N0YXRlLmgiCkBA
IC0xMzYsNyArMTM2LDEwIEBAIFRleHR1cmVHTDo6VGV4dHVyZUdMKGNvbnN0IGdsOjpUZXh0dXJl
U3RhdGUgJnN0YXRlLAogICAgICAgbVN0YXRlTWFuYWdlcihzdGF0ZU1hbmFnZXIpLAogICAgICAg
bUJsaXR0ZXIoYmxpdHRlciksCiAgICAgICBtTGV2ZWxJbmZvKGdsOjpJTVBMRU1FTlRBVElPTl9N
QVhfVEVYVFVSRV9MRVZFTFMgKyAxKSwKLSAgICAgIG1BcHBsaWVkVGV4dHVyZVN0YXRlKHN0YXRl
Lm1UYXJnZXQpLAorICAgICAgbUFwcGxpZWRTd2l6emxlKHN0YXRlLmdldFN3aXp6bGVTdGF0ZSgp
KSwKKyAgICAgIG1BcHBsaWVkU2FtcGxlcihzdGF0ZS5nZXRTYW1wbGVyU3RhdGUoKSksCisgICAg
ICBtQXBwbGllZEJhc2VMZXZlbChzdGF0ZS5nZXRFZmZlY3RpdmVCYXNlTGV2ZWwoKSksCisgICAg
ICBtQXBwbGllZE1heExldmVsKHN0YXRlLmdldEVmZmVjdGl2ZU1heExldmVsKCkpLAogICAgICAg
bVRleHR1cmVJRCgwKQogewogICAgIEFTU0VSVChtRnVuY3Rpb25zKTsKQEAgLTE0NCw3ICsxNDcs
NyBAQCBUZXh0dXJlR0w6OlRleHR1cmVHTChjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0ZSwK
ICAgICBBU1NFUlQobUJsaXR0ZXIpOwogCiAgICAgbUZ1bmN0aW9ucy0+Z2VuVGV4dHVyZXMoMSwg
Jm1UZXh0dXJlSUQpOwotICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1TdGF0ZS5tVGFy
Z2V0LCBtVGV4dHVyZUlEKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShnZXRUYXJn
ZXQoKSwgbVRleHR1cmVJRCk7CiB9CiAKIFRleHR1cmVHTDo6flRleHR1cmVHTCgpCkBAIC0xNTMs
NyArMTU2LDggQEAgVGV4dHVyZUdMOjp+VGV4dHVyZUdMKCkKICAgICBtVGV4dHVyZUlEID0gMDsK
IH0KIAotZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0SW1hZ2UoR0xlbnVtIHRhcmdldCwKK2dsOjpF
cnJvciBUZXh0dXJlR0w6OnNldEltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKQEAgLTE4Miw3ICsxODYsNyBAQCBnbDo6RXJyb3IgVGV4
dHVyZUdMOjpzZXRJbWFnZShHTGVudW0gdGFyZ2V0LAogICAgIHsKICAgICAgICAgYm9vbCBhcHBs
eTsKICAgICAgICAgQU5HTEVfVFJZX1JFU1VMVChTaG91bGRBcHBseUxhc3RSb3dQYWRkaW5nV29y
a2Fyb3VuZChzaXplLCB1bnBhY2ssIGZvcm1hdCwgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VUZXhJbWFnZTNEKG1T
dGF0ZS5tVGFyZ2V0KSwgcGl4ZWxzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VUZXhJbWFnZTNEKGdldFRhcmdldCgpKSwg
cGl4ZWxzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBseSk7CiAKICAgICAgICAgLy8g
VGhlIGRyaXZlciB3aWxsIHRoaW5rIHRoZSBwaXhlbCBidWZmZXIgZG9lc24ndCBoYXZlIGVub3Vn
aCBkYXRhLCB3b3JrIGFyb3VuZCB0aGlzIGJ1ZwpAQCAtMjE0LDIyICsyMTgsMjEgQEAgdm9pZCBU
ZXh0dXJlR0w6OnNldEltYWdlSGVscGVyKEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQogewotICAgIFVOVVNFRF9BU1NFUlRJT05fVkFSSUFC
TEUoJkNvbXBhdGlibGVUZXh0dXJlVGFyZ2V0KTsgLy8gUmVmZXJlbmNlIHRoaXMgZnVuY3Rpb24g
dG8gYXZvaWQgd2FybmluZ3MuCi0gICAgQVNTRVJUKENvbXBhdGlibGVUZXh0dXJlVGFyZ2V0KG1T
dGF0ZS5tVGFyZ2V0LCB0YXJnZXQpKTsKKyAgICBBU1NFUlQoQ29tcGF0aWJsZVRleHR1cmVUYXJn
ZXQoZ2V0VGFyZ2V0KCksIHRhcmdldCkpOwogCiAgICAgbmF0aXZlZ2w6OlRleEltYWdlRm9ybWF0
IHRleEltYWdlRm9ybWF0ID0KICAgICAgICAgbmF0aXZlZ2w6OkdldFRleEltYWdlRm9ybWF0KG1G
dW5jdGlvbnMsIG1Xb3JrYXJvdW5kcywgaW50ZXJuYWxGb3JtYXQsIGZvcm1hdCwgdHlwZSk7CiAK
LSAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShtU3RhdGUubVRhcmdldCwgbVRleHR1cmVJ
RCk7CisgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUoZ2V0VGFyZ2V0KCksIG1UZXh0dXJl
SUQpOwogCi0gICAgaWYgKFVzZVRleEltYWdlMkQobVN0YXRlLm1UYXJnZXQpKQorICAgIGlmIChV
c2VUZXhJbWFnZTJEKGdldFRhcmdldCgpKSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzaXplLmRl
cHRoID09IDEpOwogICAgICAgICBtRnVuY3Rpb25zLT50ZXhJbWFnZTJEKHRhcmdldCwgc3RhdGlj
X2Nhc3Q8R0xpbnQ+KGxldmVsKSwgdGV4SW1hZ2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIDAsIHRl
eEltYWdlRm9ybWF0LmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXhJ
bWFnZUZvcm1hdC50eXBlLCBwaXhlbHMpOwogICAgIH0KLSAgICBlbHNlIGlmIChVc2VUZXhJbWFn
ZTNEKG1TdGF0ZS5tVGFyZ2V0KSkKKyAgICBlbHNlIGlmIChVc2VUZXhJbWFnZTNEKGdldFRhcmdl
dCgpKSkKICAgICB7CiAgICAgICAgIG1GdW5jdGlvbnMtPnRleEltYWdlM0QodGFyZ2V0LCBzdGF0
aWNfY2FzdDxHTGludD4obGV2ZWwpLCB0ZXhJbWFnZUZvcm1hdC5pbnRlcm5hbEZvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLndpZHRoLCBzaXplLmhlaWdodCwgc2l6
ZS5kZXB0aCwgMCwgdGV4SW1hZ2VGb3JtYXQuZm9ybWF0LApAQCAtMjUwLDE3ICsyNTMsMjEgQEAg
dm9pZCBUZXh0dXJlR0w6OnJlc2VydmVUZXhJbWFnZVRvQmVGaWxsZWQoR0xlbnVtIHRhcmdldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSkK
IHsKLSAgICBHTHVpbnQgdW5wYWNrQnVmZmVyID0gbVN0YXRlTWFuYWdlci0+Z2V0Qm91bmRCdWZm
ZXIoR0xfUElYRUxfVU5QQUNLX0JVRkZFUik7Ci0gICAgbVN0YXRlTWFuYWdlci0+YmluZEJ1ZmZl
cihHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwKTsKICAgICBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSB1
bnBhY2s7CisgICAgbVN0YXRlTWFuYWdlci0+c2V0UGl4ZWxVbnBhY2tTdGF0ZSh1bnBhY2spOwog
ICAgIHNldEltYWdlSGVscGVyKHRhcmdldCwgbGV2ZWwsIGludGVybmFsRm9ybWF0LCBzaXplLCBm
b3JtYXQsIHR5cGUsIG51bGxwdHIpOwotICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRCdWZmZXIoR0xf
UElYRUxfVU5QQUNLX0JVRkZFUiwgdW5wYWNrQnVmZmVyKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1
cmVHTDo6c2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6
Qm94ICZhcmVhLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIGNvbnN0
IHVpbnQ4X3QgKnBpeGVscykKK2dsOjpFcnJvciBUZXh0dXJlR0w6OnNldFN1YkltYWdlKENvbnRl
eHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVh
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVucGFjaywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykKIHsK
LSAgICBBU1NFUlQoQ29tcGF0aWJsZVRleHR1cmVUYXJnZXQobVN0YXRlLm1UYXJnZXQsIHRhcmdl
dCkpOworICAgIEFTU0VSVChDb21wYXRpYmxlVGV4dHVyZVRhcmdldChnZXRUYXJnZXQoKSwgdGFy
Z2V0KSk7CiAKICAgICBuYXRpdmVnbDo6VGV4U3ViSW1hZ2VGb3JtYXQgdGV4U3ViSW1hZ2VGb3Jt
YXQgPQogICAgICAgICBuYXRpdmVnbDo6R2V0VGV4U3ViSW1hZ2VGb3JtYXQobUZ1bmN0aW9ucywg
bVdvcmthcm91bmRzLCBmb3JtYXQsIHR5cGUpOwpAQCAtMjY4LDcgKzI3NSw3IEBAIGdsOjpFcnJv
ciBUZXh0dXJlR0w6OnNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29u
c3QgZ2w6OkJveCAmYXJlCiAgICAgQVNTRVJUKG1MZXZlbEluZm9bbGV2ZWxdLmx1bWFXb3JrYXJv
dW5kLmVuYWJsZWQgPT0KICAgICAgICAgICAgR2V0TGV2ZWxJbmZvKGZvcm1hdCwgdGV4U3ViSW1h
Z2VGb3JtYXQuZm9ybWF0KS5sdW1hV29ya2Fyb3VuZC5lbmFibGVkKTsKIAotICAgIG1TdGF0ZU1h
bmFnZXItPmJpbmRUZXh0dXJlKG1TdGF0ZS5tVGFyZ2V0LCBtVGV4dHVyZUlEKTsKKyAgICBtU3Rh
dGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShnZXRUYXJnZXQoKSwgbVRleHR1cmVJRCk7CiAgICAgaWYg
KG1Xb3JrYXJvdW5kcy51bnBhY2tPdmVybGFwcGluZ1Jvd3NTZXBhcmF0ZWx5VW5wYWNrQnVmZmVy
ICYmIHVucGFjay5waXhlbEJ1ZmZlci5nZXQoKSAmJgogICAgICAgICB1bnBhY2sucm93TGVuZ3Ro
ICE9IDAgJiYgdW5wYWNrLnJvd0xlbmd0aCA8IGFyZWEud2lkdGgpCiAgICAgewpAQCAtMjgxLDcg
KzI4OCw3IEBAIGdsOjpFcnJvciBUZXh0dXJlR0w6OnNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQs
IHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OkJveCAmYXJlCiAKICAgICAgICAgYm9vbCBhcHBseTsK
ICAgICAgICAgQU5HTEVfVFJZX1JFU1VMVChTaG91bGRBcHBseUxhc3RSb3dQYWRkaW5nV29ya2Fy
b3VuZChzaXplLCB1bnBhY2ssIGZvcm1hdCwgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VUZXhJbWFnZTNEKG1TdGF0
ZS5tVGFyZ2V0KSwgcGl4ZWxzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VUZXhJbWFnZTNEKGdldFRhcmdldCgpKSwgcGl4
ZWxzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBseSk7CiAKICAgICAgICAgLy8gVGhl
IGRyaXZlciB3aWxsIHRoaW5rIHRoZSBwaXhlbCBidWZmZXIgZG9lc24ndCBoYXZlIGVub3VnaCBk
YXRhLCB3b3JrIGFyb3VuZCB0aGlzIGJ1ZwpAQCAtMjkyLDcgKzI5OSw3IEBAIGdsOjpFcnJvciBU
ZXh0dXJlR0w6OnNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3Qg
Z2w6OkJveCAmYXJlCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoVXNlVGV4SW1hZ2UyRCht
U3RhdGUubVRhcmdldCkpCisgICAgaWYgKFVzZVRleEltYWdlMkQoZ2V0VGFyZ2V0KCkpKQogICAg
IHsKICAgICAgICAgQVNTRVJUKGFyZWEueiA9PSAwICYmIGFyZWEuZGVwdGggPT0gMSk7CiAgICAg
ICAgIG1GdW5jdGlvbnMtPnRleFN1YkltYWdlMkQodGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4o
bGV2ZWwpLCBhcmVhLngsIGFyZWEueSwgYXJlYS53aWR0aCwKQEAgLTMwMSwxMyArMzA4LDEzIEBA
IGdsOjpFcnJvciBUZXh0dXJlR0w6OnNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBs
ZXZlbCwgY29uc3QgZ2w6OkJveCAmYXJlCiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAg
IEFTU0VSVChVc2VUZXhJbWFnZTNEKG1TdGF0ZS5tVGFyZ2V0KSk7CisgICAgICAgIEFTU0VSVChV
c2VUZXhJbWFnZTNEKGdldFRhcmdldCgpKSk7CiAgICAgICAgIG1GdW5jdGlvbnMtPnRleFN1Yklt
YWdlM0QodGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLCBhcmVhLngsIGFyZWEueSwg
YXJlYS56LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZWEud2lkdGgsIGFy
ZWEuaGVpZ2h0LCBhcmVhLmRlcHRoLCB0ZXhTdWJJbWFnZUZvcm1hdC5mb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4U3ViSW1hZ2VGb3JtYXQudHlwZSwgcGl4ZWxz
KTsKICAgICB9CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0U3ViSW1hZ2VS
b3dCeVJvd1dvcmthcm91bmQoR0xlbnVtIHRhcmdldCwKQEAgLTMzMiw3ICszMzksNyBAQCBnbDo6
RXJyb3IgVGV4dHVyZUdMOjpzZXRTdWJJbWFnZVJvd0J5Um93V29ya2Fyb3VuZChHTGVudW0gdGFy
Z2V0LAogICAgIEdMdWludCBpbWFnZUJ5dGVzID0gMDsKICAgICBBTkdMRV9UUllfUkVTVUxUKGds
Rm9ybWF0LmNvbXB1dGVEZXB0aFBpdGNoKGFyZWEuaGVpZ2h0LCB1bnBhY2suaW1hZ2VIZWlnaHQs
IHJvd0J5dGVzKSwKICAgICAgICAgICAgICAgICAgICAgIGltYWdlQnl0ZXMpOwotICAgIGJvb2wg
dXNlVGV4SW1hZ2UzRCA9IFVzZVRleEltYWdlM0QobVN0YXRlLm1UYXJnZXQpOworICAgIGJvb2wg
dXNlVGV4SW1hZ2UzRCA9IFVzZVRleEltYWdlM0QoZ2V0VGFyZ2V0KCkpOwogICAgIEdMdWludCBz
a2lwQnl0ZXMgICA9IDA7CiAgICAgQU5HTEVfVFJZX1JFU1VMVChnbEZvcm1hdC5jb21wdXRlU2tp
cEJ5dGVzKHJvd0J5dGVzLCBpbWFnZUJ5dGVzLCB1bnBhY2ssIHVzZVRleEltYWdlM0QpLAogICAg
ICAgICAgICAgICAgICAgICAgc2tpcEJ5dGVzKTsKQEAgLTM1NSw3ICszNjIsNyBAQCBnbDo6RXJy
b3IgVGV4dHVyZUdMOjpzZXRTdWJJbWFnZVJvd0J5Um93V29ya2Fyb3VuZChHTGVudW0gdGFyZ2V0
LAogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBBU1NFUlQoVXNlVGV4SW1hZ2UyRCht
U3RhdGUubVRhcmdldCkpOworICAgICAgICBBU1NFUlQoVXNlVGV4SW1hZ2UyRChnZXRUYXJnZXQo
KSkpOwogICAgICAgICBmb3IgKEdMaW50IHJvdyA9IDA7IHJvdyA8IGFyZWEuaGVpZ2h0OyArK3Jv
dykKICAgICAgICAgewogICAgICAgICAgICAgR0xpbnQgYnl0ZU9mZnNldCAgICAgICAgID0gcm93
ICogcm93Qnl0ZXM7CkBAIC0zODMsMTEgKzM5MCwxMyBAQCBnbDo6RXJyb3IgVGV4dHVyZUdMOjpz
ZXRTdWJJbWFnZVBhZGRpbmdXb3JrYXJvdW5kKEdMZW51bSB0YXJnZXQsCiAgICAgR0x1aW50IGlt
YWdlQnl0ZXMgPSAwOwogICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2xGb3JtYXQuY29tcHV0ZURlcHRo
UGl0Y2goYXJlYS5oZWlnaHQsIHVucGFjay5pbWFnZUhlaWdodCwgcm93Qnl0ZXMpLAogICAgICAg
ICAgICAgICAgICAgICAgaW1hZ2VCeXRlcyk7Ci0gICAgYm9vbCB1c2VUZXhJbWFnZTNEID0gVXNl
VGV4SW1hZ2UzRChtU3RhdGUubVRhcmdldCk7CisgICAgYm9vbCB1c2VUZXhJbWFnZTNEID0gVXNl
VGV4SW1hZ2UzRChnZXRUYXJnZXQoKSk7CiAgICAgR0x1aW50IHNraXBCeXRlcyAgID0gMDsKICAg
ICBBTkdMRV9UUllfUkVTVUxUKGdsRm9ybWF0LmNvbXB1dGVTa2lwQnl0ZXMocm93Qnl0ZXMsIGlt
YWdlQnl0ZXMsIHVucGFjaywgdXNlVGV4SW1hZ2UzRCksCiAgICAgICAgICAgICAgICAgICAgICBz
a2lwQnl0ZXMpOwogCisgICAgbVN0YXRlTWFuYWdlci0+c2V0UGl4ZWxVbnBhY2tTdGF0ZSh1bnBh
Y2spOworCiAgICAgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgZGlyZWN0VW5wYWNrOwogICAgIGRpcmVj
dFVucGFjay5waXhlbEJ1ZmZlciA9IHVucGFjay5waXhlbEJ1ZmZlcjsKICAgICBkaXJlY3RVbnBh
Y2suYWxpZ25tZW50ICAgPSAxOwpAQCAtNDI2LDcgKzQzNSw3IEBAIGdsOjpFcnJvciBUZXh0dXJl
R0w6OnNldFN1YkltYWdlUGFkZGluZ1dvcmthcm91bmQoR0xlbnVtIHRhcmdldCwKICAgICB9CiAg
ICAgZWxzZQogICAgIHsKLSAgICAgICAgQVNTRVJUKFVzZVRleEltYWdlMkQobVN0YXRlLm1UYXJn
ZXQpKTsKKyAgICAgICAgQVNTRVJUKFVzZVRleEltYWdlMkQoZ2V0VGFyZ2V0KCkpKTsKIAogICAg
ICAgICAvLyBVcGxvYWQgYWxsIGJ1dCB0aGUgbGFzdCByb3cKICAgICAgICAgaWYgKGFyZWEuaGVp
Z2h0ID4gMSkKQEAgLTQ1MCwyMyArNDU5LDI5IEBAIGdsOjpFcnJvciBUZXh0dXJlR0w6OnNldFN1
YkltYWdlUGFkZGluZ1dvcmthcm91bmQoR0xlbnVtIHRhcmdldCwKICAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0Q29tcHJlc3NlZEltYWdlKEdM
ZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBn
bDo6RXh0ZW50cyAmc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXplX3QgaW1hZ2VTaXplLCBj
b25zdCB1aW50OF90ICpwaXhlbHMpCitnbDo6RXJyb3IgVGV4dHVyZUdMOjpzZXRDb21wcmVzc2Vk
SW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAm
dW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBp
bWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
dWludDhfdCAqcGl4ZWxzKQogewotICAgIEFTU0VSVChDb21wYXRpYmxlVGV4dHVyZVRhcmdldCht
U3RhdGUubVRhcmdldCwgdGFyZ2V0KSk7CisgICAgQVNTRVJUKENvbXBhdGlibGVUZXh0dXJlVGFy
Z2V0KGdldFRhcmdldCgpLCB0YXJnZXQpKTsKIAogICAgIG5hdGl2ZWdsOjpDb21wcmVzc2VkVGV4
SW1hZ2VGb3JtYXQgY29tcHJlc3NlZFRleEltYWdlRm9ybWF0ID0KICAgICAgICAgbmF0aXZlZ2w6
OkdldENvbXByZXNzZWRUZXhJbWFnZUZvcm1hdChtRnVuY3Rpb25zLCBtV29ya2Fyb3VuZHMsIGlu
dGVybmFsRm9ybWF0KTsKIAotICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1TdGF0ZS5t
VGFyZ2V0LCBtVGV4dHVyZUlEKTsKLSAgICBpZiAoVXNlVGV4SW1hZ2UyRChtU3RhdGUubVRhcmdl
dCkpCisgICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUoZ2V0VGFyZ2V0KCksIG1UZXh0dXJl
SUQpOworICAgIGlmIChVc2VUZXhJbWFnZTJEKGdldFRhcmdldCgpKSkKICAgICB7CiAgICAgICAg
IEFTU0VSVChzaXplLmRlcHRoID09IDEpOwogICAgICAgICBtRnVuY3Rpb25zLT5jb21wcmVzc2Vk
VGV4SW1hZ2UyRCh0YXJnZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzZWRUZXhJbWFnZUZvcm1hdC5p
bnRlcm5hbEZvcm1hdCwgc2l6ZS53aWR0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZS5oZWlnaHQsIDAsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGltYWdlU2l6
ZSksIHBpeGVscyk7CiAgICAgfQotICAgIGVsc2UgaWYgKFVzZVRleEltYWdlM0QobVN0YXRlLm1U
YXJnZXQpKQorICAgIGVsc2UgaWYgKFVzZVRleEltYWdlM0QoZ2V0VGFyZ2V0KCkpKQogICAgIHsK
ICAgICAgICAgbUZ1bmN0aW9ucy0+Y29tcHJlc3NlZFRleEltYWdlM0QoCiAgICAgICAgICAgICB0
YXJnZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCksIGNvbXByZXNzZWRUZXhJbWFnZUZvcm1h
dC5pbnRlcm5hbEZvcm1hdCwgc2l6ZS53aWR0aCwKQEAgLTQ4MCwyNiArNDk1LDMyIEBAIGdsOjpF
cnJvciBUZXh0dXJlR0w6OnNldENvbXByZXNzZWRJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3Qg
bGV2ZWwsIEdMZW51bSBpbnRlCiAgICAgc2V0TGV2ZWxJbmZvKGxldmVsLCAxLCBHZXRMZXZlbElu
Zm8oaW50ZXJuYWxGb3JtYXQsIGNvbXByZXNzZWRUZXhJbWFnZUZvcm1hdC5pbnRlcm5hbEZvcm1h
dCkpOwogICAgIEFTU0VSVCghbUxldmVsSW5mb1tsZXZlbF0ubHVtYVdvcmthcm91bmQuZW5hYmxl
ZCk7CiAKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0Q29tcHJlc3NlZFN1Yklt
YWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OkJveCAmYXJlYSwgR0xl
bnVtIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXplX3QgaW1hZ2VTaXplLCBjb25z
dCB1aW50OF90ICpwaXhlbHMpCitnbDo6RXJyb3IgVGV4dHVyZUdMOjpzZXRDb21wcmVzc2VkU3Vi
SW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpCb3ggJmFyZWEsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0
ZSAmdW5wYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBpbWFnZVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKQogewotICAgIEFTU0VSVChDb21wYXRpYmxlVGV4dHVy
ZVRhcmdldChtU3RhdGUubVRhcmdldCwgdGFyZ2V0KSk7CisgICAgQVNTRVJUKENvbXBhdGlibGVU
ZXh0dXJlVGFyZ2V0KGdldFRhcmdldCgpLCB0YXJnZXQpKTsKIAogICAgIG5hdGl2ZWdsOjpDb21w
cmVzc2VkVGV4U3ViSW1hZ2VGb3JtYXQgY29tcHJlc3NlZFRleFN1YkltYWdlRm9ybWF0ID0KICAg
ICAgICAgbmF0aXZlZ2w6OkdldENvbXByZXNzZWRTdWJUZXhJbWFnZUZvcm1hdChtRnVuY3Rpb25z
LCBtV29ya2Fyb3VuZHMsIGZvcm1hdCk7CiAKLSAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVy
ZShtU3RhdGUubVRhcmdldCwgbVRleHR1cmVJRCk7Ci0gICAgaWYgKFVzZVRleEltYWdlMkQobVN0
YXRlLm1UYXJnZXQpKQorICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKGdldFRhcmdldCgp
LCBtVGV4dHVyZUlEKTsKKyAgICBpZiAoVXNlVGV4SW1hZ2UyRChnZXRUYXJnZXQoKSkpCiAgICAg
ewogICAgICAgICBBU1NFUlQoYXJlYS56ID09IDAgJiYgYXJlYS5kZXB0aCA9PSAxKTsKICAgICAg
ICAgbUZ1bmN0aW9ucy0+Y29tcHJlc3NlZFRleFN1YkltYWdlMkQoCiAgICAgICAgICAgICB0YXJn
ZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCksIGFyZWEueCwgYXJlYS55LCBhcmVhLndpZHRo
LCBhcmVhLmhlaWdodCwKICAgICAgICAgICAgIGNvbXByZXNzZWRUZXhTdWJJbWFnZUZvcm1hdC5m
b3JtYXQsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGltYWdlU2l6ZSksIHBpeGVscyk7CiAgICAgfQot
ICAgIGVsc2UgaWYgKFVzZVRleEltYWdlM0QobVN0YXRlLm1UYXJnZXQpKQorICAgIGVsc2UgaWYg
KFVzZVRleEltYWdlM0QoZ2V0VGFyZ2V0KCkpKQogICAgIHsKICAgICAgICAgbUZ1bmN0aW9ucy0+
Y29tcHJlc3NlZFRleFN1YkltYWdlM0QodGFyZ2V0LCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwp
LCBhcmVhLngsIGFyZWEueSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJlYS56LCBhcmVhLndpZHRoLCBhcmVhLmhlaWdodCwgYXJlYS5kZXB0aCwKQEAgLTUx
NCwxMCArNTM1LDE0IEBAIGdsOjpFcnJvciBUZXh0dXJlR0w6OnNldENvbXByZXNzZWRTdWJJbWFn
ZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGdsCiAgICAgQVNTRVJUKCFtTGV2
ZWxJbmZvW2xldmVsXS5sdW1hV29ya2Fyb3VuZC5lbmFibGVkICYmCiAgICAgICAgICAgICFHZXRM
ZXZlbEluZm8oZm9ybWF0LCBjb21wcmVzc2VkVGV4U3ViSW1hZ2VGb3JtYXQuZm9ybWF0KS5sdW1h
V29ya2Fyb3VuZC5lbmFibGVkKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUdMOjpj
b3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6UmVjdGFuZ2xl
ICZzb3VyY2VBcmVhLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCitnbDo6RXJyb3IgVGV4dHVyZUdM
Ojpjb3B5SW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKQogewogICAgIG5hdGl2ZWdsOjpDb3B5VGV4SW1h
Z2VJbWFnZUZvcm1hdCBjb3B5VGV4SW1hZ2VGb3JtYXQgPSBuYXRpdmVnbDo6R2V0Q29weVRleElt
YWdlSW1hZ2VGb3JtYXQoCkBAIC01MjcsNyArNTUyLDcgQEAgZ2w6OkVycm9yIFRleHR1cmVHTDo6
Y29weUltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgY29uc3QgZ2w6OlJlY3Rhbmds
ZQogICAgIGlmIChsZXZlbEluZm8ubHVtYVdvcmthcm91bmQuZW5hYmxlZCkKICAgICB7CiAgICAg
ICAgIGdsOjpFcnJvciBlcnJvciA9IG1CbGl0dGVyLT5jb3B5SW1hZ2VUb0xVTUFXb3JrYXJvdW5k
VGV4dHVyZSgKLSAgICAgICAgICAgIG1UZXh0dXJlSUQsIG1TdGF0ZS5tVGFyZ2V0LCB0YXJnZXQs
IGxldmVsSW5mby5zb3VyY2VGb3JtYXQsIGxldmVsLCBzb3VyY2VBcmVhLAorICAgICAgICAgICAg
bVRleHR1cmVJRCwgZ2V0VGFyZ2V0KCksIHRhcmdldCwgbGV2ZWxJbmZvLnNvdXJjZUZvcm1hdCwg
bGV2ZWwsIHNvdXJjZUFyZWEsCiAgICAgICAgICAgICBjb3B5VGV4SW1hZ2VGb3JtYXQuaW50ZXJu
YWxGb3JtYXQsIHNvdXJjZSk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAg
IHsKQEAgLTUzOCwxMSArNTYzLDExIEBAIGdsOjpFcnJvciBUZXh0dXJlR0w6OmNvcHlJbWFnZShH
TGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpSZWN0YW5nbGUKICAgICB7CiAg
ICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyR0wgKnNvdXJjZUZyYW1lYnVmZmVyR0wgPSBHZXRJbXBs
QXM8RnJhbWVidWZmZXJHTD4oc291cmNlKTsKIAotICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5k
VGV4dHVyZShtU3RhdGUubVRhcmdldCwgbVRleHR1cmVJRCk7CisgICAgICAgIG1TdGF0ZU1hbmFn
ZXItPmJpbmRUZXh0dXJlKGdldFRhcmdldCgpLCBtVGV4dHVyZUlEKTsKICAgICAgICAgbVN0YXRl
TWFuYWdlci0+YmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VGcmFtZWJ1ZmZlckdMLT5nZXRGcmFt
ZWJ1ZmZlcklEKCkpOwogCi0gICAgICAgIGlmIChVc2VUZXhJbWFnZTJEKG1TdGF0ZS5tVGFyZ2V0
KSkKKyAgICAgICAgaWYgKFVzZVRleEltYWdlMkQoZ2V0VGFyZ2V0KCkpKQogICAgICAgICB7CiAg
ICAgICAgICAgICBtRnVuY3Rpb25zLT5jb3B5VGV4SW1hZ2UyRCh0YXJnZXQsIHN0YXRpY19jYXN0
PEdMaW50PihsZXZlbCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b3B5VGV4SW1hZ2VGb3JtYXQuaW50ZXJuYWxGb3JtYXQsIHNvdXJjZUFyZWEueCwKQEAgLTU1Niwy
MyArNTgxLDI3IEBAIGdsOjpFcnJvciBUZXh0dXJlR0w6OmNvcHlJbWFnZShHTGVudW0gdGFyZ2V0
LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpSZWN0YW5nbGUKIAogICAgIHNldExldmVsSW5mbyhs
ZXZlbCwgMSwgbGV2ZWxJbmZvKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUdMOjpj
b3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVsLCBjb25zdCBnbDo6T2Zmc2V0
ICZkZXN0T2Zmc2V0LCBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorZ2w6OkVycm9y
IFRleHR1cmVHTDo6Y29weVN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpz
b3VyY2UpCiB7CiAgICAgY29uc3QgRnJhbWVidWZmZXJHTCAqc291cmNlRnJhbWVidWZmZXJHTCA9
IEdldEltcGxBczxGcmFtZWJ1ZmZlckdMPihzb3VyY2UpOwogCi0gICAgbVN0YXRlTWFuYWdlci0+
YmluZFRleHR1cmUobVN0YXRlLm1UYXJnZXQsIG1UZXh0dXJlSUQpOworICAgIG1TdGF0ZU1hbmFn
ZXItPmJpbmRUZXh0dXJlKGdldFRhcmdldCgpLCBtVGV4dHVyZUlEKTsKICAgICBtU3RhdGVNYW5h
Z2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUiwgc291cmNlRnJhbWVidWZm
ZXJHTC0+Z2V0RnJhbWVidWZmZXJJRCgpKTsKIAogICAgIGNvbnN0IExldmVsSW5mb0dMICZsZXZl
bEluZm8gPSBtTGV2ZWxJbmZvW2xldmVsXTsKICAgICBpZiAobGV2ZWxJbmZvLmx1bWFXb3JrYXJv
dW5kLmVuYWJsZWQpCiAgICAgewogICAgICAgICBnbDo6RXJyb3IgZXJyb3IgPSBtQmxpdHRlci0+
Y29weVN1YkltYWdlVG9MVU1BV29ya2Fyb3VuZFRleHR1cmUoCi0gICAgICAgICAgICBtVGV4dHVy
ZUlELCBtU3RhdGUubVRhcmdldCwgdGFyZ2V0LCBsZXZlbEluZm8uc291cmNlRm9ybWF0LCBsZXZl
bCwgZGVzdE9mZnNldCwKLSAgICAgICAgICAgIHNvdXJjZUFyZWEsIHNvdXJjZSk7CisgICAgICAg
ICAgICBtVGV4dHVyZUlELCBnZXRUYXJnZXQoKSwgdGFyZ2V0LCBsZXZlbEluZm8uc291cmNlRm9y
bWF0LCBsZXZlbCwgZGVzdE9mZnNldCwgc291cmNlQXJlYSwKKyAgICAgICAgICAgIHNvdXJjZSk7
CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybiBlcnJvcjsKQEAgLTU4MCwxNCArNjA5LDE0IEBAIGdsOjpFcnJvciBUZXh0dXJlR0w6OmNv
cHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpPZmZzZXQK
ICAgICB9CiAgICAgZWxzZQogICAgIHsKLSAgICAgICAgaWYgKFVzZVRleEltYWdlMkQobVN0YXRl
Lm1UYXJnZXQpKQorICAgICAgICBpZiAoVXNlVGV4SW1hZ2UyRChnZXRUYXJnZXQoKSkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEFTU0VSVChkZXN0T2Zmc2V0LnogPT0gMCk7CiAgICAgICAgICAg
ICBtRnVuY3Rpb25zLT5jb3B5VGV4U3ViSW1hZ2UyRCh0YXJnZXQsIHN0YXRpY19jYXN0PEdMaW50
PihsZXZlbCksIGRlc3RPZmZzZXQueCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3RPZmZzZXQueSwgc291cmNlQXJlYS54LCBzb3VyY2VBcmVhLnksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VBcmVhLndpZHRoLCBz
b3VyY2VBcmVhLmhlaWdodCk7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoVXNlVGV4SW1h
Z2UzRChtU3RhdGUubVRhcmdldCkpCisgICAgICAgIGVsc2UgaWYgKFVzZVRleEltYWdlM0QoZ2V0
VGFyZ2V0KCkpKQogICAgICAgICB7CiAgICAgICAgICAgICBtRnVuY3Rpb25zLT5jb3B5VGV4U3Vi
SW1hZ2UzRCh0YXJnZXQsIHN0YXRpY19jYXN0PEdMaW50PihsZXZlbCksIGRlc3RPZmZzZXQueCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RPZmZzZXQueSwg
ZGVzdE9mZnNldC56LCBzb3VyY2VBcmVhLngsIHNvdXJjZUFyZWEueSwKQEAgLTU5OSwxOSArNjI4
LDk2IEBAIGdsOjpFcnJvciBUZXh0dXJlR0w6OmNvcHlTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBz
aXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpPZmZzZXQKICAgICAgICAgfQogICAgIH0KIAotICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwor
fQorCitnbDo6RXJyb3IgVGV4dHVyZUdMOjpjb3B5VGV4dHVyZShDb250ZXh0SW1wbCAqY29udGV4
dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3Qgc291cmNlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHVucGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZSAqc291cmNlKQoreworICAgIGNvbnN0
IFRleHR1cmVHTCAqc291cmNlR0wgICAgICAgICAgICA9IEdldEltcGxBczxUZXh0dXJlR0w+KHNv
dXJjZSk7CisgICAgY29uc3QgZ2w6OkltYWdlRGVzYyAmc291cmNlSW1hZ2VEZXNjID0gc291cmNl
R0wtPm1TdGF0ZS5nZXRJbWFnZURlc2Moc291cmNlLT5nZXRUYXJnZXQoKSwgMCk7CisgICAgZ2w6
OlJlY3RhbmdsZSBzb3VyY2VBcmVhKDAsIDAsIHNvdXJjZUltYWdlRGVzYy5zaXplLndpZHRoLCBz
b3VyY2VJbWFnZURlc2Muc2l6ZS5oZWlnaHQpOworCisgICAgR0xlbnVtIHNpemVkSW50ZXJuYWxG
b3JtYXQgPSBnbDo6R2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChpbnRlcm5hbEZvcm1hdCwgdHlwZSk7
CisgICAgcmVzZXJ2ZVRleEltYWdlVG9CZUZpbGxlZChnZXRUYXJnZXQoKSwgMCwgc2l6ZWRJbnRl
cm5hbEZvcm1hdCwgc291cmNlSW1hZ2VEZXNjLnNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnRlcm5hbEZvcm1hdCwgdHlwZSk7CisKKyAgICByZXR1cm4gY29weVN1YlRleHR1
cmVIZWxwZXIodGFyZ2V0LCBsZXZlbCwgZ2w6Ok9mZnNldCgwLCAwLCAwKSwgc291cmNlTGV2ZWws
IHNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVybmFsRm9y
bWF0LCB1bnBhY2tGbGlwWSwgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5wYWNrVW5tdWx0aXBseUFscGhhLCBzb3VyY2UpOwogfQogCi1n
bDo6RXJyb3IgVGV4dHVyZUdMOjpzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZl
bHMsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpCitnbDo6
RXJyb3IgVGV4dHVyZUdMOjpjb3B5U3ViVGV4dHVyZShDb250ZXh0SW1wbCAqY29udGV4dEltcGws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VMZXZlbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVu
cGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBh
Y2tQcmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6VGV4dHVyZSAqc291cmNlKQogewotICAgIC8vIFRPRE86IGVtdWxh
dGUgdGV4dHVyZSBzdG9yYWdlIHdpdGggVGV4SW1hZ2UgY2FsbHMgaWYgb24gR0wgdmVyc2lvbiA8
NC4yIG9yIHRoZQotICAgIC8vIEFSQl90ZXh0dXJlX3N0b3JhZ2UgZXh0ZW5zaW9uIGlzIG5vdCBh
dmFpbGFibGUuCisgICAgR0xlbnVtIGRlc3RGb3JtYXQgPSBtU3RhdGUuZ2V0SW1hZ2VEZXNjKG1T
dGF0ZS5tVGFyZ2V0LCAwKS5mb3JtYXQuZm9ybWF0OworICAgIHJldHVybiBjb3B5U3ViVGV4dHVy
ZUhlbHBlcih0YXJnZXQsIGxldmVsLCBkZXN0T2Zmc2V0LCBzb3VyY2VMZXZlbCwgc291cmNlQXJl
YSwgZGVzdEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5wYWNrRmxp
cFksIHVucGFja1ByZW11bHRpcGx5QWxwaGEsIHVucGFja1VubXVsdGlwbHlBbHBoYSwgc291cmNl
KTsKK30KIAorZ2w6OkVycm9yIFRleHR1cmVHTDo6Y29weVN1YlRleHR1cmVIZWxwZXIoR0xlbnVt
IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgc291cmNlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RGb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja0ZsaXBZ
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQ
cmVtdWx0aXBseUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VGV4dHVyZSAqc291cmNlKQoreworICAgIFRleHR1
cmVHTCAqc291cmNlR0wgICAgICAgICAgICAgICAgICA9IEdldEltcGxBczxUZXh0dXJlR0w+KHNv
dXJjZSk7CisgICAgY29uc3QgZ2w6OkltYWdlRGVzYyAmc291cmNlSW1hZ2VEZXNjID0gc291cmNl
R0wtPm1TdGF0ZS5nZXRJbWFnZURlc2Moc291cmNlLT5nZXRUYXJnZXQoKSwgMCk7CisKKyAgICAv
LyBDaGVjayBpcyB0aGlzIGlzIGEgc2ltcGxlIGNvcHlTdWJUZXh0dXJlIHRoYXQgY2FuIGJlIGRv
bmUgd2l0aCBhIGNvcHlUZXhTdWJJbWFnZQorICAgIGJvb2wgbmVlZHNMdW1hV29ya2Fyb3VuZCA9
IHNvdXJjZUdMLT5tTGV2ZWxJbmZvWzBdLmx1bWFXb3JrYXJvdW5kLmVuYWJsZWQ7CisKKyAgICBH
TGVudW0gc291cmNlRm9ybWF0ID0gc291cmNlSW1hZ2VEZXNjLmZvcm1hdC5mb3JtYXQ7CisgICAg
Ym9vbCBzb3VyY2VGb3JtYXRDb250YWluU3VwZXJzZXRPZkRlc3RGb3JtYXQgPQorICAgICAgICAo
c291cmNlRm9ybWF0ID09IGRlc3RGb3JtYXQgJiYgc291cmNlRm9ybWF0ICE9IEdMX0JHUkFfRVhU
KSB8fAorICAgICAgICAoc291cmNlRm9ybWF0ID09IEdMX1JHQkEgJiYgZGVzdEZvcm1hdCA9PSBH
TF9SR0IpOworCisgICAgaWYgKHNvdXJjZS0+Z2V0VGFyZ2V0KCkgPT0gR0xfVEVYVFVSRV8yRCAm
JiBnZXRUYXJnZXQoKSA9PSBHTF9URVhUVVJFXzJEICYmICF1bnBhY2tGbGlwWSAmJgorICAgICAg
ICB1bnBhY2tQcmVtdWx0aXBseUFscGhhID09IHVucGFja1VubXVsdGlwbHlBbHBoYSAmJiAhbmVl
ZHNMdW1hV29ya2Fyb3VuZCAmJgorICAgICAgICBzb3VyY2VGb3JtYXRDb250YWluU3VwZXJzZXRP
ZkRlc3RGb3JtYXQpCisgICAgeworICAgICAgICByZXR1cm4gbUJsaXR0ZXItPmNvcHlUZXhTdWJJ
bWFnZShzb3VyY2VHTCwgdGhpcywgc291cmNlQXJlYSwgZGVzdE9mZnNldCk7CisgICAgfQorCisg
ICAgLy8gV2UgY2FuJ3QgdXNlIGNvcHlUZXhTdWJJbWFnZSwgZG8gYSBtYW51YWwgY29weQorICAg
IHJldHVybiBtQmxpdHRlci0+Y29weVN1YlRleHR1cmUoCisgICAgICAgIHNvdXJjZUdMLCBzb3Vy
Y2VMZXZlbCwgdGhpcywgdGFyZ2V0LCBsZXZlbCwgc291cmNlSW1hZ2VEZXNjLnNpemUsIHNvdXJj
ZUFyZWEsIGRlc3RPZmZzZXQsCisgICAgICAgIG5lZWRzTHVtYVdvcmthcm91bmQsIHNvdXJjZUdM
LT5tTGV2ZWxJbmZvW3NvdXJjZUxldmVsXS5zb3VyY2VGb3JtYXQsIHVucGFja0ZsaXBZLAorICAg
ICAgICB1bnBhY2tQcmVtdWx0aXBseUFscGhhLCB1bnBhY2tVbm11bHRpcGx5QWxwaGEpOworfQor
CitnbDo6RXJyb3IgVGV4dHVyZUdMOjpzZXRTdG9yYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1w
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVscywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSkKK3sKICAgICBuYXRpdmVn
bDo6VGV4U3RvcmFnZUZvcm1hdCB0ZXhTdG9yYWdlRm9ybWF0ID0KICAgICAgICAgbmF0aXZlZ2w6
OkdldFRleFN0b3JhZ2VGb3JtYXQobUZ1bmN0aW9ucywgbVdvcmthcm91bmRzLCBpbnRlcm5hbEZv
cm1hdCk7CiAKLSAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShtU3RhdGUubVRhcmdldCwg
bVRleHR1cmVJRCk7Ci0gICAgaWYgKFVzZVRleEltYWdlMkQobVN0YXRlLm1UYXJnZXQpKQorICAg
IG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKGdldFRhcmdldCgpLCBtVGV4dHVyZUlEKTsKKyAg
ICBpZiAoVXNlVGV4SW1hZ2UyRChnZXRUYXJnZXQoKSkpCiAgICAgewogICAgICAgICBBU1NFUlQo
c2l6ZS5kZXB0aCA9PSAxKTsKICAgICAgICAgaWYgKG1GdW5jdGlvbnMtPnRleFN0b3JhZ2UyRCkK
QEAgLTYzNSw3ICs3NDEsNyBAQCBnbDo6RXJyb3IgVGV4dHVyZUdMOjpzZXRTdG9yYWdlKEdMZW51
bSB0YXJnZXQsIHNpemVfdCBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbEZvcgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1heChzaXplLmhlaWdodCA+PiBsZXZlbCwg
MSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpOwogCi0gICAgICAg
ICAgICAgICAgaWYgKG1TdGF0ZS5tVGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQpCisgICAgICAgICAg
ICAgICAgaWYgKGdldFRhcmdldCgpID09IEdMX1RFWFRVUkVfMkQpCiAgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJuYWxGb3JtYXRJbmZvLmNvbXByZXNzZWQp
CiAgICAgICAgICAgICAgICAgICAgIHsKQEAgLTY1Niw3ICs3NjIsNyBAQCBnbDo6RXJyb3IgVGV4
dHVyZUdMOjpzZXRTdG9yYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbHMsIEdMZW51bSBp
bnRlcm5hbEZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnRlcm5hbEZvcm1hdEluZm8udHlwZSwgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobVN0YXRlLm1U
YXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01BUCkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChn
ZXRUYXJnZXQoKSA9PSBHTF9URVhUVVJFX0NVQkVfTUFQKQogICAgICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICAgICAgZm9yIChHTGVudW0gZmFjZSA9IGdsOjpGaXJzdEN1YmVNYXBUZXh0
dXJlVGFyZ2V0OyBmYWNlIDw9IGdsOjpMYXN0Q3ViZU1hcFRleHR1cmVUYXJnZXQ7IGZhY2UrKykK
ICAgICAgICAgICAgICAgICAgICAgewpAQCAtNjg3LDcgKzc5Myw3IEBAIGdsOjpFcnJvciBUZXh0
dXJlR0w6OnNldFN0b3JhZ2UoR0xlbnVtIHRhcmdldCwgc2l6ZV90IGxldmVscywgR0xlbnVtIGlu
dGVybmFsRm9yCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgZWxzZSBpZiAo
VXNlVGV4SW1hZ2UzRChtU3RhdGUubVRhcmdldCkpCisgICAgZWxzZSBpZiAoVXNlVGV4SW1hZ2Uz
RChnZXRUYXJnZXQoKSkpCiAgICAgewogICAgICAgICBpZiAobUZ1bmN0aW9ucy0+dGV4U3RvcmFn
ZTNEKQogICAgICAgICB7CkBAIC03MDksNyArODE1LDcgQEAgZ2w6OkVycm9yIFRleHR1cmVHTDo6
c2V0U3RvcmFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxG
b3IKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBnbDo6RXh0ZW50cyBsZXZlbFNpemUo
CiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bWF4KHNpemUud2lkdGggPj4gaSwgMSksIHN0ZDo6
bWF4KHNpemUuaGVpZ2h0ID4+IGksIDEpLAotICAgICAgICAgICAgICAgICAgICBtU3RhdGUubVRh
cmdldCA9PSBHTF9URVhUVVJFXzNEID8gc3RkOjptYXgoc2l6ZS5kZXB0aCA+PiBpLCAxKSA6IHNp
emUuZGVwdGgpOworICAgICAgICAgICAgICAgICAgICBnZXRUYXJnZXQoKSA9PSBHTF9URVhUVVJF
XzNEID8gc3RkOjptYXgoc2l6ZS5kZXB0aCA+PiBpLCAxKSA6IHNpemUuZGVwdGgpOwogCiAgICAg
ICAgICAgICAgICAgaWYgKGludGVybmFsRm9ybWF0SW5mby5jb21wcmVzc2VkKQogICAgICAgICAg
ICAgICAgIHsKQEAgLTczOSw3ICs4NDUsMjkgQEAgZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0U3Rv
cmFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxGb3IKIAog
ICAgIHNldExldmVsSW5mbygwLCBsZXZlbHMsIEdldExldmVsSW5mbyhpbnRlcm5hbEZvcm1hdCwg
dGV4U3RvcmFnZUZvcm1hdC5pbnRlcm5hbEZvcm1hdCkpOwogCi0gICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9OT19FUlJPUik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK2dsOjpFcnJv
ciBUZXh0dXJlR0w6OnNldFN0b3JhZ2VNdWx0aXNhbXBsZShDb250ZXh0SW1wbCAqY29udGV4dElt
cGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xib29sZWFuIGZpeGVkU2FtcGxlTG9jYXRpb25zKQoreworICAg
IG5hdGl2ZWdsOjpUZXhTdG9yYWdlRm9ybWF0IHRleFN0b3JhZ2VGb3JtYXQgPQorICAgICAgICBu
YXRpdmVnbDo6R2V0VGV4U3RvcmFnZUZvcm1hdChtRnVuY3Rpb25zLCBtV29ya2Fyb3VuZHMsIGlu
dGVybmFsRm9ybWF0KTsKKworICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1TdGF0ZS5t
VGFyZ2V0LCBtVGV4dHVyZUlEKTsKKworICAgIEFTU0VSVChzaXplLmRlcHRoID09IDEpOworCisg
ICAgbUZ1bmN0aW9ucy0+dGV4U3RvcmFnZTJETXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCB0
ZXhTdG9yYWdlRm9ybWF0LmludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCBmaXhlZFNhbXBsZUxvY2F0
aW9ucyk7CisKKyAgICBzZXRMZXZlbEluZm8oMCwgMSwgR2V0TGV2ZWxJbmZvKGludGVybmFsRm9y
bWF0LCB0ZXhTdG9yYWdlRm9ybWF0LmludGVybmFsRm9ybWF0KSk7CisKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFRleHR1cmVHTDo6c2V0SW1hZ2VFeHRlcm5hbChH
TGVudW0gdGFyZ2V0LApAQCAtNzUwLDEwICs4NzgsMTAgQEAgZ2w6OkVycm9yIFRleHR1cmVHTDo6
c2V0SW1hZ2VFeHRlcm5hbChHTGVudW0gdGFyZ2V0LAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZUdMOjpnZW5lcmF0ZU1p
cG1hcCgpCitnbDo6RXJyb3IgVGV4dHVyZUdMOjpnZW5lcmF0ZU1pcG1hcChDb250ZXh0SW1wbCAq
Y29udGV4dEltcGwpCiB7Ci0gICAgbVN0YXRlTWFuYWdlci0+YmluZFRleHR1cmUobVN0YXRlLm1U
YXJnZXQsIG1UZXh0dXJlSUQpOwotICAgIG1GdW5jdGlvbnMtPmdlbmVyYXRlTWlwbWFwKG1TdGF0
ZS5tVGFyZ2V0KTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShnZXRUYXJnZXQoKSwg
bVRleHR1cmVJRCk7CisgICAgbUZ1bmN0aW9ucy0+Z2VuZXJhdGVNaXBtYXAoZ2V0VGFyZ2V0KCkp
OwogCiAgICAgY29uc3QgR0x1aW50IGVmZmVjdGl2ZUJhc2VMZXZlbCA9IG1TdGF0ZS5nZXRFZmZl
Y3RpdmVCYXNlTGV2ZWwoKTsKICAgICBjb25zdCBHTHVpbnQgbWF4TGV2ZWwgICAgICAgICAgID0g
bVN0YXRlLmdldE1pcG1hcE1heExldmVsKCk7CkBAIC03NjIsMTUgKzg5MCwxNSBAQCBnbDo6RXJy
b3IgVGV4dHVyZUdMOjpnZW5lcmF0ZU1pcG1hcCgpCiAKICAgICBzZXRMZXZlbEluZm8oZWZmZWN0
aXZlQmFzZUxldmVsLCBtYXhMZXZlbCAtIGVmZmVjdGl2ZUJhc2VMZXZlbCwgbUxldmVsSW5mb1tl
ZmZlY3RpdmVCYXNlTGV2ZWxdKTsKIAotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1Ip
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB2b2lkIFRleHR1cmVHTDo6YmluZFRl
eEltYWdlKGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKIHsKLSAgICBBU1NFUlQobVN0YXRlLm1UYXJn
ZXQgPT0gR0xfVEVYVFVSRV8yRCk7CisgICAgQVNTRVJUKGdldFRhcmdldCgpID09IEdMX1RFWFRV
UkVfMkQpOwogCiAgICAgLy8gTWFrZSBzdXJlIHRoaXMgdGV4dHVyZSBpcyBib3VuZAotICAgIG1T
dGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1TdGF0ZS5tVGFyZ2V0LCBtVGV4dHVyZUlEKTsKKyAg
ICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShnZXRUYXJnZXQoKSwgbVRleHR1cmVJRCk7CiAK
ICAgICBzZXRMZXZlbEluZm8oMCwgMSwgTGV2ZWxJbmZvR0woKSk7CiB9CkBAIC03NzgsMTIgKzkw
NiwxMiBAQCB2b2lkIFRleHR1cmVHTDo6YmluZFRleEltYWdlKGVnbDo6U3VyZmFjZSAqc3VyZmFj
ZSkKIHZvaWQgVGV4dHVyZUdMOjpyZWxlYXNlVGV4SW1hZ2UoKQogewogICAgIC8vIE5vdCBhbGwg
U3VyZmFjZSBpbXBsZW1lbnRhdGlvbnMgcmVzZXQgdGhlIHNpemUgb2YgbWlwIDAgd2hlbiByZWxl
YXNpbmcsIGRvIGl0IG1hbnVhbGx5Ci0gICAgQVNTRVJUKG1TdGF0ZS5tVGFyZ2V0ID09IEdMX1RF
WFRVUkVfMkQpOworICAgIEFTU0VSVChnZXRUYXJnZXQoKSA9PSBHTF9URVhUVVJFXzJEKTsKIAot
ICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1TdGF0ZS5tVGFyZ2V0LCBtVGV4dHVyZUlE
KTsKLSAgICBpZiAoVXNlVGV4SW1hZ2UyRChtU3RhdGUubVRhcmdldCkpCisgICAgbVN0YXRlTWFu
YWdlci0+YmluZFRleHR1cmUoZ2V0VGFyZ2V0KCksIG1UZXh0dXJlSUQpOworICAgIGlmIChVc2VU
ZXhJbWFnZTJEKGdldFRhcmdldCgpKSkKICAgICB7Ci0gICAgICAgIG1GdW5jdGlvbnMtPnRleElt
YWdlMkQobVN0YXRlLm1UYXJnZXQsIDAsIEdMX1JHQkEsIDAsIDAsIDAsIEdMX1JHQkEsIEdMX1VO
U0lHTkVEX0JZVEUsCisgICAgICAgIG1GdW5jdGlvbnMtPnRleEltYWdlMkQoZ2V0VGFyZ2V0KCks
IDAsIEdMX1JHQkEsIDAsIDAsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CiAgICAgfQogICAgIGVsc2UKQEAgLTgw
NSw3ICs5MzMsNyBAQCB2b2lkIFRleHR1cmVHTDo6c3luY1N0YXRlKGNvbnN0IGdsOjpUZXh0dXJl
OjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1T
dGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKG1TdGF0ZS5tVGFyZ2V0LCBtVGV4dHVyZUlEKTsKKyAg
ICBtU3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShnZXRUYXJnZXQoKSwgbVRleHR1cmVJRCk7CiAK
ICAgICBpZiAoZGlydHlCaXRzW2dsOjpUZXh0dXJlOjpESVJUWV9CSVRfQkFTRV9MRVZFTF0gfHwg
ZGlydHlCaXRzW2dsOjpUZXh0dXJlOjpESVJUWV9CSVRfTUFYX0xFVkVMXSkKICAgICB7CkBAIC04
MTksNzAgKzk0Nyw4NCBAQCB2b2lkIFRleHR1cmVHTDo6c3luY1N0YXRlKGNvbnN0IGdsOjpUZXh0
dXJlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykKICAgICAgICAgc3dpdGNoIChkaXJ0eUJpdCkKICAg
ICAgICAgewogICAgICAgICAgICAgY2FzZSBnbDo6VGV4dHVyZTo6RElSVFlfQklUX01JTl9GSUxU
RVI6Ci0gICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyaShtU3RhdGUubVRh
cmdldCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbVN0YXRlLmdldFNhbXBsZXJTdGF0ZSgpLm1pbkZpbHRlcik7CisgICAg
ICAgICAgICAgICAgbUFwcGxpZWRTYW1wbGVyLm1pbkZpbHRlciA9IG1TdGF0ZS5nZXRTYW1wbGVy
U3RhdGUoKS5taW5GaWx0ZXI7CisgICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1l
dGVyaShnZXRUYXJnZXQoKSwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbUFwcGxpZWRTYW1wbGVyLm1pbkZpbHRlcik7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGdsOjpUZXh0dXJlOjpESVJU
WV9CSVRfTUFHX0ZJTFRFUjoKLSAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT50ZXhQYXJhbWV0
ZXJpKG1TdGF0ZS5tVGFyZ2V0LCBHTF9URVhUVVJFX01BR19GSUxURVIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0U2FtcGxlclN0YXRlKCkubWFn
RmlsdGVyKTsKKyAgICAgICAgICAgICAgICBtQXBwbGllZFNhbXBsZXIubWFnRmlsdGVyID0gbVN0
YXRlLmdldFNhbXBsZXJTdGF0ZSgpLm1hZ0ZpbHRlcjsKKyAgICAgICAgICAgICAgICBtRnVuY3Rp
b25zLT50ZXhQYXJhbWV0ZXJpKGdldFRhcmdldCgpLCBHTF9URVhUVVJFX01BR19GSUxURVIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQXBwbGllZFNhbXBsZXIu
bWFnRmlsdGVyKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgZ2w6
OlRleHR1cmU6OkRJUlRZX0JJVF9XUkFQX1M6Ci0gICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+
dGV4UGFyYW1ldGVyaShtU3RhdGUubVRhcmdldCwgR0xfVEVYVFVSRV9XUkFQX1MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0U2FtcGxlclN0YXRl
KCkud3JhcFMpOworICAgICAgICAgICAgICAgIG1BcHBsaWVkU2FtcGxlci53cmFwUyA9IG1TdGF0
ZS5nZXRTYW1wbGVyU3RhdGUoKS53cmFwUzsKKyAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT50
ZXhQYXJhbWV0ZXJpKGdldFRhcmdldCgpLCBHTF9URVhUVVJFX1dSQVBfUywgbUFwcGxpZWRTYW1w
bGVyLndyYXBTKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgZ2w6
OlRleHR1cmU6OkRJUlRZX0JJVF9XUkFQX1Q6Ci0gICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+
dGV4UGFyYW1ldGVyaShtU3RhdGUubVRhcmdldCwgR0xfVEVYVFVSRV9XUkFQX1QsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0U2FtcGxlclN0YXRl
KCkud3JhcFQpOworICAgICAgICAgICAgICAgIG1BcHBsaWVkU2FtcGxlci53cmFwVCA9IG1TdGF0
ZS5nZXRTYW1wbGVyU3RhdGUoKS53cmFwVDsKKyAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT50
ZXhQYXJhbWV0ZXJpKGdldFRhcmdldCgpLCBHTF9URVhUVVJFX1dSQVBfVCwgbUFwcGxpZWRTYW1w
bGVyLndyYXBUKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgZ2w6
OlRleHR1cmU6OkRJUlRZX0JJVF9XUkFQX1I6Ci0gICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+
dGV4UGFyYW1ldGVyaShtU3RhdGUubVRhcmdldCwgR0xfVEVYVFVSRV9XUkFQX1IsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0U2FtcGxlclN0YXRl
KCkud3JhcFIpOworICAgICAgICAgICAgICAgIG1BcHBsaWVkU2FtcGxlci53cmFwUiA9IG1TdGF0
ZS5nZXRTYW1wbGVyU3RhdGUoKS53cmFwUjsKKyAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT50
ZXhQYXJhbWV0ZXJpKGdldFRhcmdldCgpLCBHTF9URVhUVVJFX1dSQVBfUiwgbUFwcGxpZWRTYW1w
bGVyLndyYXBSKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgZ2w6
OlRleHR1cmU6OkRJUlRZX0JJVF9NQVhfQU5JU09UUk9QWToKLSAgICAgICAgICAgICAgICBtRnVu
Y3Rpb25zLT50ZXhQYXJhbWV0ZXJmKG1TdGF0ZS5tVGFyZ2V0LCBHTF9URVhUVVJFX01BWF9BTklT
T1RST1BZX0VYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1T
dGF0ZS5nZXRTYW1wbGVyU3RhdGUoKS5tYXhBbmlzb3Ryb3B5KTsKKyAgICAgICAgICAgICAgICBt
QXBwbGllZFNhbXBsZXIubWF4QW5pc290cm9weSA9IG1TdGF0ZS5nZXRTYW1wbGVyU3RhdGUoKS5t
YXhBbmlzb3Ryb3B5OworICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRleFBhcmFtZXRlcmYo
Z2V0VGFyZ2V0KCksIEdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUFwcGxpZWRTYW1wbGVyLm1heEFuaXNvdHJv
cHkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBnbDo6VGV4dHVy
ZTo6RElSVFlfQklUX01JTl9MT0Q6Ci0gICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFy
YW1ldGVyZihtU3RhdGUubVRhcmdldCwgR0xfVEVYVFVSRV9NSU5fTE9ELAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRlLmdldFNhbXBsZXJTdGF0ZSgpLm1p
bkxvZCk7CisgICAgICAgICAgICAgICAgbUFwcGxpZWRTYW1wbGVyLm1pbkxvZCA9IG1TdGF0ZS5n
ZXRTYW1wbGVyU3RhdGUoKS5taW5Mb2Q7CisgICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4
UGFyYW1ldGVyZihnZXRUYXJnZXQoKSwgR0xfVEVYVFVSRV9NSU5fTE9ELCBtQXBwbGllZFNhbXBs
ZXIubWluTG9kKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgZ2w6
OlRleHR1cmU6OkRJUlRZX0JJVF9NQVhfTE9EOgotICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMt
PnRleFBhcmFtZXRlcmYobVN0YXRlLm1UYXJnZXQsIEdMX1RFWFRVUkVfTUFYX0xPRCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRTYW1wbGVyU3Rh
dGUoKS5tYXhMb2QpOworICAgICAgICAgICAgICAgIG1BcHBsaWVkU2FtcGxlci5tYXhMb2QgPSBt
U3RhdGUuZ2V0U2FtcGxlclN0YXRlKCkubWF4TG9kOworICAgICAgICAgICAgICAgIG1GdW5jdGlv
bnMtPnRleFBhcmFtZXRlcmYoZ2V0VGFyZ2V0KCksIEdMX1RFWFRVUkVfTUFYX0xPRCwgbUFwcGxp
ZWRTYW1wbGVyLm1heExvZCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBj
YXNlIGdsOjpUZXh0dXJlOjpESVJUWV9CSVRfQ09NUEFSRV9NT0RFOgotICAgICAgICAgICAgICAg
IG1GdW5jdGlvbnMtPnRleFBhcmFtZXRlcmkobVN0YXRlLm1UYXJnZXQsIEdMX1RFWFRVUkVfQ09N
UEFSRV9NT0RFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0
YXRlLmdldFNhbXBsZXJTdGF0ZSgpLmNvbXBhcmVNb2RlKTsKKyAgICAgICAgICAgICAgICBtQXBw
bGllZFNhbXBsZXIuY29tcGFyZU1vZGUgPSBtU3RhdGUuZ2V0U2FtcGxlclN0YXRlKCkuY29tcGFy
ZU1vZGU7CisgICAgICAgICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyaShnZXRUYXJn
ZXQoKSwgR0xfVEVYVFVSRV9DT01QQVJFX01PREUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtQXBwbGllZFNhbXBsZXIuY29tcGFyZU1vZGUpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBnbDo6VGV4dHVyZTo6RElSVFlfQklUX0NP
TVBBUkVfRlVOQzoKLSAgICAgICAgICAgICAgICBtRnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJpKG1T
dGF0ZS5tVGFyZ2V0LCBHTF9URVhUVVJFX0NPTVBBUkVfRlVOQywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZS5nZXRTYW1wbGVyU3RhdGUoKS5jb21wYXJl
RnVuYyk7CisgICAgICAgICAgICAgICAgbUFwcGxpZWRTYW1wbGVyLmNvbXBhcmVGdW5jID0gbVN0
YXRlLmdldFNhbXBsZXJTdGF0ZSgpLmNvbXBhcmVGdW5jOworICAgICAgICAgICAgICAgIG1GdW5j
dGlvbnMtPnRleFBhcmFtZXRlcmkoZ2V0VGFyZ2V0KCksIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5D
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUFwcGxpZWRTYW1w
bGVyLmNvbXBhcmVGdW5jKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgZ2w6OlRleHR1cmU6OkRJUlRZX0JJVF9TUkdCX0RFQ09ERToKKyAgICAgICAgICAgICAgICBt
QXBwbGllZFNhbXBsZXIuc1JHQkRlY29kZSA9IG1TdGF0ZS5nZXRTYW1wbGVyU3RhdGUoKS5zUkdC
RGVjb2RlOworICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRleFBhcmFtZXRlcmkoZ2V0VGFy
Z2V0KCksIEdMX1RFWFRVUkVfU1JHQl9ERUNPREVfRVhULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbUFwcGxpZWRTYW1wbGVyLnNSR0JEZWNvZGUpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAvLyBUZXh0dXJlIHN0YXRlCiAgICAgICAg
ICAgICBjYXNlIGdsOjpUZXh0dXJlOjpESVJUWV9CSVRfU1dJWlpMRV9SRUQ6CiAgICAgICAgICAg
ICAgICAgc3luY1RleHR1cmVTdGF0ZVN3aXp6bGUobUZ1bmN0aW9ucywgR0xfVEVYVFVSRV9TV0la
WkxFX1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXRlLmdl
dFN3aXp6bGVTdGF0ZSgpLnN3aXp6bGVSZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1TdGF0ZS5nZXRTd2l6emxlU3RhdGUoKS5zd2l6emxlUmVkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtQXBwbGllZFN3aXp6bGUuc3dpenps
ZVJlZCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIGdsOjpUZXh0
dXJlOjpESVJUWV9CSVRfU1dJWlpMRV9HUkVFTjoKICAgICAgICAgICAgICAgICBzeW5jVGV4dHVy
ZVN0YXRlU3dpenpsZShtRnVuY3Rpb25zLCBHTF9URVhUVVJFX1NXSVpaTEVfRywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0U3dpenpsZVN0YXRlKCku
c3dpenpsZUdyZWVuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
U3RhdGUuZ2V0U3dpenpsZVN0YXRlKCkuc3dpenpsZUdyZWVuLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZtQXBwbGllZFN3aXp6bGUuc3dpenpsZUdyZWVuKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgZ2w6OlRleHR1cmU6OkRJUlRZ
X0JJVF9TV0laWkxFX0JMVUU6CiAgICAgICAgICAgICAgICAgc3luY1RleHR1cmVTdGF0ZVN3aXp6
bGUobUZ1bmN0aW9ucywgR0xfVEVYVFVSRV9TV0laWkxFX0IsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbVN0YXRlLmdldFN3aXp6bGVTdGF0ZSgpLnN3aXp6bGVCbHVl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0U3dp
enpsZVN0YXRlKCkuc3dpenpsZUJsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJm1BcHBsaWVkU3dpenpsZS5zd2l6emxlQmx1ZSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIGdsOjpUZXh0dXJlOjpESVJUWV9CSVRfU1dJWlpMRV9B
TFBIQToKICAgICAgICAgICAgICAgICBzeW5jVGV4dHVyZVN0YXRlU3dpenpsZShtRnVuY3Rpb25z
LCBHTF9URVhUVVJFX1NXSVpaTEVfQSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtU3RhdGUuZ2V0U3dpenpsZVN0YXRlKCkuc3dpenpsZUFscGhhKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdGUuZ2V0U3dpenpsZVN0YXRlKCku
c3dpenpsZUFscGhhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZt
QXBwbGllZFN3aXp6bGUuc3dpenpsZUFscGhhKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgZ2w6OlRleHR1cmU6OkRJUlRZX0JJVF9CQVNFX0xFVkVMOgotICAgICAg
ICAgICAgICAgIG1GdW5jdGlvbnMtPnRleFBhcmFtZXRlcmkobVN0YXRlLm1UYXJnZXQsIEdMX1RF
WFRVUkVfQkFTRV9MRVZFTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1TdGF0ZS5nZXRFZmZlY3RpdmVCYXNlTGV2ZWwoKSk7CisgICAgICAgICAgICAgICAgbUFw
cGxpZWRCYXNlTGV2ZWwgPSBtU3RhdGUuZ2V0RWZmZWN0aXZlQmFzZUxldmVsKCk7CisgICAgICAg
ICAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyaShnZXRUYXJnZXQoKSwgR0xfVEVYVFVS
RV9CQVNFX0xFVkVMLCBtQXBwbGllZEJhc2VMZXZlbCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIGdsOjpUZXh0dXJlOjpESVJUWV9CSVRfTUFYX0xFVkVMOgotICAg
ICAgICAgICAgICAgIG1GdW5jdGlvbnMtPnRleFBhcmFtZXRlcmkobVN0YXRlLm1UYXJnZXQsIEdM
X1RFWFRVUkVfTUFYX0xFVkVMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbVN0YXRlLmdldEVmZmVjdGl2ZU1heExldmVsKCkpOworICAgICAgICAgICAgICAgIG1B
cHBsaWVkTWF4TGV2ZWwgPSBtU3RhdGUuZ2V0RWZmZWN0aXZlTWF4TGV2ZWwoKTsKKyAgICAgICAg
ICAgICAgICBtRnVuY3Rpb25zLT50ZXhQYXJhbWV0ZXJpKGdldFRhcmdldCgpLCBHTF9URVhUVVJF
X01BWF9MRVZFTCwgbUFwcGxpZWRNYXhMZXZlbCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIGdsOjpUZXh0dXJlOjpESVJUWV9CSVRfVVNBR0U6CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC05MDAsNyArMTA0Miw2MyBAQCBib29sIFRleHR1cmVHTDo6aGFzQW55
RGlydHlCaXQoKSBjb25zdAogICAgIHJldHVybiBtTG9jYWxEaXJ0eUJpdHMuYW55KCk7CiB9CiAK
LXZvaWQgVGV4dHVyZUdMOjpzeW5jVGV4dHVyZVN0YXRlU3dpenpsZShjb25zdCBGdW5jdGlvbnNH
TCAqZnVuY3Rpb25zLCBHTGVudW0gbmFtZSwgR0xlbnVtIHZhbHVlKQordm9pZCBUZXh0dXJlR0w6
OnNldEJhc2VMZXZlbChHTHVpbnQgYmFzZUxldmVsKQoreworICAgIGlmIChiYXNlTGV2ZWwgIT0g
bUFwcGxpZWRCYXNlTGV2ZWwpCisgICAgeworICAgICAgICBtQXBwbGllZEJhc2VMZXZlbCA9IGJh
c2VMZXZlbDsKKyAgICAgICAgbUxvY2FsRGlydHlCaXRzLnNldChnbDo6VGV4dHVyZTo6RElSVFlf
QklUX0JBU0VfTEVWRUwpOworCisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKGdl
dFRhcmdldCgpLCBtVGV4dHVyZUlEKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVy
aShnZXRUYXJnZXQoKSwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCBiYXNlTGV2ZWwpOworICAgIH0K
K30KKwordm9pZCBUZXh0dXJlR0w6OnNldE1pbkZpbHRlcihHTGVudW0gZmlsdGVyKQoreworICAg
IGlmIChmaWx0ZXIgIT0gbUFwcGxpZWRTYW1wbGVyLm1pbkZpbHRlcikKKyAgICB7CisgICAgICAg
IG1BcHBsaWVkU2FtcGxlci5taW5GaWx0ZXIgPSBmaWx0ZXI7CisgICAgICAgIG1Mb2NhbERpcnR5
Qml0cy5zZXQoZ2w6OlRleHR1cmU6OkRJUlRZX0JJVF9NSU5fRklMVEVSKTsKKworICAgICAgICBt
U3RhdGVNYW5hZ2VyLT5iaW5kVGV4dHVyZShnZXRUYXJnZXQoKSwgbVRleHR1cmVJRCk7CisgICAg
ICAgIG1GdW5jdGlvbnMtPnRleFBhcmFtZXRlcmkoZ2V0VGFyZ2V0KCksIEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUiwgZmlsdGVyKTsKKyAgICB9Cit9Cit2b2lkIFRleHR1cmVHTDo6c2V0TWFnRmlsdGVy
KEdMZW51bSBmaWx0ZXIpCit7CisgICAgaWYgKGZpbHRlciAhPSBtQXBwbGllZFNhbXBsZXIubWFn
RmlsdGVyKQorICAgIHsKKyAgICAgICAgbUFwcGxpZWRTYW1wbGVyLm1hZ0ZpbHRlciA9IGZpbHRl
cjsKKyAgICAgICAgbUxvY2FsRGlydHlCaXRzLnNldChnbDo6VGV4dHVyZTo6RElSVFlfQklUX01B
R19GSUxURVIpOworCisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKGdldFRhcmdl
dCgpLCBtVGV4dHVyZUlEKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyaShnZXRU
YXJnZXQoKSwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBmaWx0ZXIpOworICAgIH0KK30KKwordm9p
ZCBUZXh0dXJlR0w6OnNldFN3aXp6bGUoR0xpbnQgc3dpenpsZVs0XSkKK3sKKyAgICBnbDo6U3dp
enpsZVN0YXRlIHJlc3VsdGluZ1N3aXp6bGUgPQorICAgICAgICBnbDo6U3dpenpsZVN0YXRlKHN3
aXp6bGVbMF0sIHN3aXp6bGVbMV0sIHN3aXp6bGVbMl0sIHN3aXp6bGVbM10pOworCisgICAgaWYg
KHJlc3VsdGluZ1N3aXp6bGUgIT0gbUFwcGxpZWRTd2l6emxlKQorICAgIHsKKyAgICAgICAgbUFw
cGxpZWRTd2l6emxlID0gcmVzdWx0aW5nU3dpenpsZTsKKyAgICAgICAgbUxvY2FsRGlydHlCaXRz
LnNldChnbDo6VGV4dHVyZTo6RElSVFlfQklUX1NXSVpaTEVfUkVEKTsKKyAgICAgICAgbUxvY2Fs
RGlydHlCaXRzLnNldChnbDo6VGV4dHVyZTo6RElSVFlfQklUX1NXSVpaTEVfR1JFRU4pOworICAg
ICAgICBtTG9jYWxEaXJ0eUJpdHMuc2V0KGdsOjpUZXh0dXJlOjpESVJUWV9CSVRfU1dJWlpMRV9C
TFVFKTsKKyAgICAgICAgbUxvY2FsRGlydHlCaXRzLnNldChnbDo6VGV4dHVyZTo6RElSVFlfQklU
X1NXSVpaTEVfQUxQSEEpOworCisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRUZXh0dXJlKGdl
dFRhcmdldCgpLCBtVGV4dHVyZUlEKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVy
aXYoZ2V0VGFyZ2V0KCksIEdMX1RFWFRVUkVfU1dJWlpMRV9SR0JBLCBzd2l6emxlKTsKKyAgICB9
Cit9CisKK3ZvaWQgVGV4dHVyZUdMOjpzeW5jVGV4dHVyZVN0YXRlU3dpenpsZShjb25zdCBGdW5j
dGlvbnNHTCAqZnVuY3Rpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB2YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gKm91dFZhbHVlKQogewogICAgIGNvbnN0IExldmVsSW5mb0dMICZsZXZlbEluZm8gPSBt
TGV2ZWxJbmZvW21TdGF0ZS5nZXRFZmZlY3RpdmVCYXNlTGV2ZWwoKV07CiAgICAgR0xlbnVtIHJl
c3VsdFN3aXp6bGUgICAgICAgICA9IHZhbHVlOwpAQCAtOTA4LDggKzExMDYsNiBAQCB2b2lkIFRl
eHR1cmVHTDo6c3luY1RleHR1cmVTdGF0ZVN3aXp6bGUoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0
aW9ucywgR0xlbnVtIG5hbQogICAgIHsKICAgICAgICAgaWYgKGxldmVsSW5mby5sdW1hV29ya2Fy
b3VuZC5lbmFibGVkKQogICAgICAgICB7Ci0gICAgICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZB
UklBQkxFKGxldmVsSW5mby5sdW1hV29ya2Fyb3VuZC53b3JrYXJvdW5kRm9ybWF0KTsKLQogICAg
ICAgICAgICAgc3dpdGNoICh2YWx1ZSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgIGNhc2Ug
R0xfUkVEOgpAQCAtMTAxMCw3ICsxMjA2LDggQEAgdm9pZCBUZXh0dXJlR0w6OnN5bmNUZXh0dXJl
U3RhdGVTd2l6emxlKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIEdMZW51bSBuYW0KIAog
ICAgIH0KIAotICAgIGZ1bmN0aW9ucy0+dGV4UGFyYW1ldGVyaShtU3RhdGUubVRhcmdldCwgbmFt
ZSwgcmVzdWx0U3dpenpsZSk7CisgICAgKm91dFZhbHVlID0gcmVzdWx0U3dpenpsZTsKKyAgICBm
dW5jdGlvbnMtPnRleFBhcmFtZXRlcmkoZ2V0VGFyZ2V0KCksIG5hbWUsIHJlc3VsdFN3aXp6bGUp
OwogfQogCiB2b2lkIFRleHR1cmVHTDo6c2V0TGV2ZWxJbmZvKHNpemVfdCBsZXZlbCwgc2l6ZV90
IGxldmVsQ291bnQsIGNvbnN0IExldmVsSW5mb0dMICZsZXZlbEluZm8pCkBAIC0xMDM2LDQgKzEy
MzMsOCBAQCBHTHVpbnQgVGV4dHVyZUdMOjpnZXRUZXh0dXJlSUQoKSBjb25zdAogICAgIHJldHVy
biBtVGV4dHVyZUlEOwogfQogCitHTGVudW0gVGV4dHVyZUdMOjpnZXRUYXJnZXQoKSBjb25zdAor
eworICAgIHJldHVybiBtU3RhdGUubVRhcmdldDsKK30KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJlR0wuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJlR0wu
aAppbmRleCAwNjgyODRjNWI3Yi4uZTMwMmY5MzUwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9UZXh0dXJlR0wuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVGV4dHVyZUdM
LmgKQEAgLTU5LDI4ICs1OSwxMDMgQEAgY2xhc3MgVGV4dHVyZUdMIDogcHVibGljIFRleHR1cmVJ
bXBsCiAgICAgICAgICAgICAgIEJsaXRHTCAqYmxpdHRlcik7CiAgICAgflRleHR1cmVHTCgpIG92
ZXJyaWRlOwogCi0gICAgZ2w6OkVycm9yIHNldEltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBs
ZXZlbCwgR0xlbnVtIGludGVybmFsRm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwgR0xl
bnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGds
OjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJp
ZGU7Ci0gICAgZ2w6OkVycm9yIHNldFN1YkltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZl
bCwgY29uc3QgZ2w6OkJveCAmYXJlYSwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ss
IGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7Ci0KLSAgICBnbDo6RXJyb3Igc2V0Q29t
cHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsIHNpemVfdCBsZXZlbCwgR0xlbnVtIGludGVybmFs
Rm9ybWF0LCBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssIHNpemVfdCBpbWFn
ZVNpemUsIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIHNl
dENvbXByZXNzZWRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGds
OjpCb3ggJmFyZWEsIEdMZW51bSBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLCBzaXplX3QgaW1hZ2VT
aXplLCBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwotCi0gICAgZ2w6OkVycm9yIGNv
cHlJbWFnZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpSZWN0YW5nbGUg
JnNvdXJjZUFyZWEsIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICBnbDo6RXJyb3Igc2V0SW1h
Z2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAorICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOworICAg
IGdsOjpFcnJvciBzZXRTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJv
eCAmYXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscykgb3ZlcnJpZGU7CisKKyAgICBnbDo6RXJy
b3Igc2V0Q29tcHJlc3NlZEltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVycmlkZTsKKyAgICBn
bDo6RXJyb3Igc2V0Q29tcHJlc3NlZFN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBhY2ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxz
KSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBjb3B5SW1hZ2UoQ29udGV4dEltcGwgKmNvbnRl
eHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
RnJhbWVidWZmZXIgKnNvdXJjZSkgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIGNvcHlTdWJJbWFn
ZShHTGVudW0gdGFyZ2V0LCBzaXplX3QgbGV2ZWwsIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZz
ZXQsIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgZ2w6OkVycm9yIGNvcHlT
dWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxl
dmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNv
dXJjZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZm
ZXIgKnNvdXJjZSkgb3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJyb3Igc2V0U3RvcmFnZShHTGVudW0g
dGFyZ2V0LCBzaXplX3QgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIGNvbnN0IGdsOjpF
eHRlbnRzICZzaXplKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgY29weVRleHR1cmUoQ29udGV4
dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBz
b3VyY2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tGbGlwWSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHVucGFja1VubXVsdGlwbHlBbHBoYSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlRleHR1cmUgKnNvdXJjZSkgb3ZlcnJp
ZGU7CisgICAgZ2w6OkVycm9yIGNvcHlTdWJUZXh0dXJlKENvbnRleHRJbXBsICpjb250ZXh0SW1w
bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6T2Zmc2V0ICZkZXN0T2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3Qgc291cmNlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgdW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdsOjpUZXh0dXJlICpzb3VyY2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBj
b3B5U3ViVGV4dHVyZUhlbHBlcihHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpPZmZzZXQgJmRlc3RPZmZzZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBzb3VyY2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RGb3JtYXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrRmxpcFksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1bnBhY2tVbm11bHRpcGx5QWxwaGEs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpUZXh0dXJlICpz
b3VyY2UpOworCisgICAgZ2w6OkVycm9yIHNldFN0b3JhZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJ
bXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGxldmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OkV4dGVudHMgJnNpemUpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIHNldFN0b3JhZ2VNdWx0
aXNhbXBsZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiBmaXhlZFNhbXBsZUxvY2F0aW9ucykgb3ZlcnJpZGU7CiAK
ICAgICBnbDo6RXJyb3Igc2V0SW1hZ2VFeHRlcm5hbChHTGVudW0gdGFyZ2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3RyZWFtICpzdHJlYW0sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpTdHJlYW06OkdMVGV4dHVyZURlc2NyaXB0aW9u
ICZkZXNjKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcCgpIG92ZXJy
aWRlOworICAgIGdsOjpFcnJvciBnZW5lcmF0ZU1pcG1hcChDb250ZXh0SW1wbCAqY29udGV4dElt
cGwpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBiaW5kVGV4SW1hZ2UoZWdsOjpTdXJmYWNlICpzdXJm
YWNlKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbGVhc2VUZXhJbWFnZSgpIG92ZXJyaWRlOwpAQCAt
ODgsMTIgKzE2MywxOCBAQCBjbGFzcyBUZXh0dXJlR0wgOiBwdWJsaWMgVGV4dHVyZUltcGwKICAg
ICBnbDo6RXJyb3Igc2V0RUdMSW1hZ2VUYXJnZXQoR0xlbnVtIHRhcmdldCwgZWdsOjpJbWFnZSAq
aW1hZ2UpIG92ZXJyaWRlOwogCiAgICAgR0x1aW50IGdldFRleHR1cmVJRCgpIGNvbnN0OwotCi0g
ICAgdm9pZCBzZXRCYXNlTGV2ZWwoR0x1aW50KSBvdmVycmlkZSB7fQorICAgIEdMZW51bSBnZXRU
YXJnZXQoKSBjb25zdDsKIAogICAgIHZvaWQgc3luY1N0YXRlKGNvbnN0IGdsOjpUZXh0dXJlOjpE
aXJ0eUJpdHMgJmRpcnR5Qml0cykgb3ZlcnJpZGU7CiAgICAgYm9vbCBoYXNBbnlEaXJ0eUJpdCgp
IGNvbnN0OwogCisgICAgdm9pZCBzZXRCYXNlTGV2ZWwoR0x1aW50IGJhc2VMZXZlbCkgb3ZlcnJp
ZGU7CisKKyAgICB2b2lkIHNldE1pbkZpbHRlcihHTGVudW0gZmlsdGVyKTsKKyAgICB2b2lkIHNl
dE1hZ0ZpbHRlcihHTGVudW0gZmlsdGVyKTsKKworICAgIHZvaWQgc2V0U3dpenpsZShHTGludCBz
d2l6emxlWzRdKTsKKwogICBwcml2YXRlOgogICAgIHZvaWQgc2V0SW1hZ2VIZWxwZXIoR0xlbnVt
IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKQEAgLTEwMiw2
ICsxODMsNyBAQCBjbGFzcyBUZXh0dXJlR0wgOiBwdWJsaWMgVGV4dHVyZUltcGwKICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVs
cyk7CisgICAgLy8gVGhpcyBjaGFuZ2VzIHRoZSBjdXJyZW50IHBpeGVsIHVucGFjayBzdGF0ZSB0
aGF0IHdpbGwgaGF2ZSB0byBiZSByZWFwcGxpZWQuCiAgICAgdm9pZCByZXNlcnZlVGV4SW1hZ2VU
b0JlRmlsbGVkKEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGludGVybmFsRm9ybWF0LApAQCAtMTI0LDcgKzIwNiwxMCBAQCBjbGFzcyBUZXh0dXJlR0wg
OiBwdWJsaWMgVGV4dHVyZUltcGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKnBpeGVscyk7CiAK
LSAgICB2b2lkIHN5bmNUZXh0dXJlU3RhdGVTd2l6emxlKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5j
dGlvbnMsIEdMZW51bSBuYW1lLCBHTGVudW0gdmFsdWUpOworICAgIHZvaWQgc3luY1RleHR1cmVT
dGF0ZVN3aXp6bGUoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtICpvdXRWYWx1ZSk7CiAKICAgICB2b2lkIHNldExldmVsSW5mbyhzaXplX3QgbGV2ZWws
IHNpemVfdCBsZXZlbENvdW50LCBjb25zdCBMZXZlbEluZm9HTCAmbGV2ZWxJbmZvKTsKIApAQCAt
MTM2LDcgKzIyMSwxMSBAQCBjbGFzcyBUZXh0dXJlR0wgOiBwdWJsaWMgVGV4dHVyZUltcGwKICAg
ICBzdGQ6OnZlY3RvcjxMZXZlbEluZm9HTD4gbUxldmVsSW5mbzsKICAgICBnbDo6VGV4dHVyZTo6
RGlydHlCaXRzIG1Mb2NhbERpcnR5Qml0czsKIAotICAgIG11dGFibGUgZ2w6OlRleHR1cmVTdGF0
ZSBtQXBwbGllZFRleHR1cmVTdGF0ZTsKKyAgICBnbDo6U3dpenpsZVN0YXRlIG1BcHBsaWVkU3dp
enpsZTsKKyAgICBnbDo6U2FtcGxlclN0YXRlIG1BcHBsaWVkU2FtcGxlcjsKKyAgICBHTHVpbnQg
bUFwcGxpZWRCYXNlTGV2ZWw7CisgICAgR0x1aW50IG1BcHBsaWVkTWF4TGV2ZWw7CisKICAgICBH
THVpbnQgbVRleHR1cmVJRDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9WZXJ0ZXhBcnJheUdMLmNwcCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9WZXJ0ZXhBcnJheUdMLmNw
cAppbmRleCAxZTdmYTAzMGZkMy4uMTgzYmFhNGNiNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9WZXJ0ZXhBcnJheUdMLmNwcAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvVmVy
dGV4QXJyYXlHTC5jcHAKQEAgLTgsNyArOCw3IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9nbC9WZXJ0ZXhBcnJheUdMLmgiCiAKLSNpbmNsdWRlICJjb21tb24vQml0U2V0SXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJjb21tb24vYml0c2V0X3V0aWxzLmgiCiAjaW5jbHVkZSAiY29tbW9u
L2RlYnVnLmgiCiAjaW5jbHVkZSAiY29tbW9uL21hdGh1dGlsLmgiCiAjaW5jbHVkZSAiY29tbW9u
L3V0aWxpdGllcy5oIgpAQCAtMjYsMTEgKzI2LDExIEBAIG5hbWVzcGFjZSByeAogewogbmFtZXNw
YWNlCiB7Ci1ib29sIEF0dHJpYnV0ZU5lZWRzU3RyZWFtaW5nKGNvbnN0IFZlcnRleEF0dHJpYnV0
ZSAmYXR0cmlidXRlKQorLy8gV2FybmluZzogeW91IHNob3VsZCBlbnN1cmUgYmluZGluZyByZWFs
bHkgbWF0Y2hlcyBhdHRyaWIuYmluZGluZ0luZGV4IGJlZm9yZSB1c2luZyB0aGlzIGZ1bmN0aW9u
LgorYm9vbCBBdHRyaWJ1dGVOZWVkc1N0cmVhbWluZyhjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0
dHJpYiwgY29uc3QgVmVydGV4QmluZGluZyAmYmluZGluZykKIHsKLSAgICByZXR1cm4gKGF0dHJp
YnV0ZS5lbmFibGVkICYmIGF0dHJpYnV0ZS5idWZmZXIuZ2V0KCkgPT0gbnVsbHB0cik7CisgICAg
cmV0dXJuIChhdHRyaWIuZW5hYmxlZCAmJiBiaW5kaW5nLmJ1ZmZlci5nZXQoKSA9PSBudWxscHRy
KTsKIH0KLQogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCiBWZXJ0ZXhBcnJheUdMOjpWZXJ0
ZXhBcnJheUdMKGNvbnN0IFZlcnRleEFycmF5U3RhdGUgJnN0YXRlLApAQCAtNDEsNiArNDEsNyBA
QCBWZXJ0ZXhBcnJheUdMOjpWZXJ0ZXhBcnJheUdMKGNvbnN0IFZlcnRleEFycmF5U3RhdGUgJnN0
YXRlLAogICAgICAgbVN0YXRlTWFuYWdlcihzdGF0ZU1hbmFnZXIpLAogICAgICAgbVZlcnRleEFy
cmF5SUQoMCksCiAgICAgICBtQXBwbGllZEVsZW1lbnRBcnJheUJ1ZmZlcigpLAorICAgICAgbUFw
cGxpZWRCaW5kaW5ncyhzdGF0ZS5nZXRNYXhCaW5kaW5ncygpKSwKICAgICAgIG1TdHJlYW1pbmdF
bGVtZW50QXJyYXlCdWZmZXJTaXplKDApLAogICAgICAgbVN0cmVhbWluZ0VsZW1lbnRBcnJheUJ1
ZmZlcigwKSwKICAgICAgIG1TdHJlYW1pbmdBcnJheUJ1ZmZlclNpemUoMCksCkBAIC01MCwxMCAr
NTEsMTIgQEAgVmVydGV4QXJyYXlHTDo6VmVydGV4QXJyYXlHTChjb25zdCBWZXJ0ZXhBcnJheVN0
YXRlICZzdGF0ZSwKICAgICBBU1NFUlQobVN0YXRlTWFuYWdlcik7CiAgICAgbUZ1bmN0aW9ucy0+
Z2VuVmVydGV4QXJyYXlzKDEsICZtVmVydGV4QXJyYXlJRCk7CiAKLSAgICAvLyBTZXQgdGhlIGNh
Y2hlZCB2ZXJ0ZXggYXR0cmlidXRlIGFycmF5IHNpemUKLSAgICBHTGludCBtYXhWZXJ0ZXhBdHRy
aWJzID0gMDsKLSAgICBtRnVuY3Rpb25zLT5nZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVYX0FUVFJJ
QlMsICZtYXhWZXJ0ZXhBdHRyaWJzKTsKLSAgICBtQXBwbGllZEF0dHJpYnV0ZXMucmVzaXplKG1h
eFZlcnRleEF0dHJpYnMpOworICAgIC8vIFNldCB0aGUgY2FjaGVkIHZlcnRleCBhdHRyaWJ1dGUg
YXJyYXkgYW5kIHZlcnRleCBhdHRyaWJ1dGUgYmluZGluZyBhcnJheSBzaXplCisgICAgR0x1aW50
IG1heFZlcnRleEF0dHJpYnMgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KHN0YXRlLmdldE1heEF0dHJp
YnMoKSk7CisgICAgZm9yIChHTHVpbnQgaSA9IDA7IGkgPCBtYXhWZXJ0ZXhBdHRyaWJzOyBpKysp
CisgICAgeworICAgICAgICBtQXBwbGllZEF0dHJpYnV0ZXMuZW1wbGFjZV9iYWNrKGkpOworICAg
IH0KIH0KIAogVmVydGV4QXJyYXlHTDo6flZlcnRleEFycmF5R0woKQpAQCAtNjMsMTYgKzY2LDE2
IEBAIFZlcnRleEFycmF5R0w6On5WZXJ0ZXhBcnJheUdMKCkKIAogICAgIG1TdGF0ZU1hbmFnZXIt
PmRlbGV0ZUJ1ZmZlcihtU3RyZWFtaW5nRWxlbWVudEFycmF5QnVmZmVyKTsKICAgICBtU3RyZWFt
aW5nRWxlbWVudEFycmF5QnVmZmVyU2l6ZSA9IDA7Ci0gICAgbVN0cmVhbWluZ0VsZW1lbnRBcnJh
eUJ1ZmZlciA9IDA7CisgICAgbVN0cmVhbWluZ0VsZW1lbnRBcnJheUJ1ZmZlciAgICAgPSAwOwog
CiAgICAgbVN0YXRlTWFuYWdlci0+ZGVsZXRlQnVmZmVyKG1TdHJlYW1pbmdBcnJheUJ1ZmZlcik7
CiAgICAgbVN0cmVhbWluZ0FycmF5QnVmZmVyU2l6ZSA9IDA7Ci0gICAgbVN0cmVhbWluZ0FycmF5
QnVmZmVyID0gMDsKKyAgICBtU3RyZWFtaW5nQXJyYXlCdWZmZXIgICAgID0gMDsKIAogICAgIG1B
cHBsaWVkRWxlbWVudEFycmF5QnVmZmVyLnNldChudWxscHRyKTsKLSAgICBmb3IgKHNpemVfdCBp
ZHggPSAwOyBpZHggPCBtQXBwbGllZEF0dHJpYnV0ZXMuc2l6ZSgpOyBpZHgrKykKKyAgICBmb3Ig
KGF1dG8gJmJpbmRpbmcgOiBtQXBwbGllZEJpbmRpbmdzKQogICAgIHsKLSAgICAgICAgbUFwcGxp
ZWRBdHRyaWJ1dGVzW2lkeF0uYnVmZmVyLnNldChudWxscHRyKTsKKyAgICAgICAgYmluZGluZy5i
dWZmZXIuc2V0KG51bGxwdHIpOwogICAgIH0KIH0KIApAQCAtOTcsNiArMTAwLDIwIEBAIGdsOjpF
cnJvciBWZXJ0ZXhBcnJheUdMOjpzeW5jRHJhd0VsZW1lbnRzU3RhdGUoY29uc3QgZ2w6OkF0dHJp
YnV0ZXNNYXNrICZhY3RpdmVBCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWl0aXZlUmVz
dGFydEVuYWJsZWQsIG91dEluZGljZXMpOwogfQogCitnbDo6RXJyb3IgVmVydGV4QXJyYXlHTDo6
c3luY0VsZW1lbnRBcnJheVN0YXRlKCkgY29uc3QKK3sKKyAgICBnbDo6QnVmZmVyICplbGVtZW50
QXJyYXlCdWZmZXIgPSBtRGF0YS5nZXRFbGVtZW50QXJyYXlCdWZmZXIoKS5nZXQoKTsKKyAgICBB
U1NFUlQoZWxlbWVudEFycmF5QnVmZmVyKTsKKyAgICBpZiAoZWxlbWVudEFycmF5QnVmZmVyICE9
IG1BcHBsaWVkRWxlbWVudEFycmF5QnVmZmVyLmdldCgpKQorICAgIHsKKyAgICAgICAgY29uc3Qg
QnVmZmVyR0wgKmJ1ZmZlckdMID0gR2V0SW1wbEFzPEJ1ZmZlckdMPihlbGVtZW50QXJyYXlCdWZm
ZXIpOworICAgICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlf
QlVGRkVSLCBidWZmZXJHTC0+Z2V0QnVmZmVySUQoKSk7CisgICAgICAgIG1BcHBsaWVkRWxlbWVu
dEFycmF5QnVmZmVyLnNldChlbGVtZW50QXJyYXlCdWZmZXIpOworICAgIH0KKworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOworfQorCiBnbDo6RXJyb3IgVmVydGV4QXJyYXlHTDo6c3luY0RyYXdT
dGF0ZShjb25zdCBnbDo6QXR0cmlidXRlc01hc2sgJmFjdGl2ZUF0dHJpYnV0ZXNNYXNrLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZmlyc3QsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LApAQCAtMTA4LDEw
ICsxMjUsMTIgQEAgZ2w6OkVycm9yIFZlcnRleEFycmF5R0w6OnN5bmNEcmF3U3RhdGUoY29uc3Qg
Z2w6OkF0dHJpYnV0ZXNNYXNrICZhY3RpdmVBdHRyaWJ1dGUKIHsKICAgICBtU3RhdGVNYW5hZ2Vy
LT5iaW5kVmVydGV4QXJyYXkobVZlcnRleEFycmF5SUQsIGdldEFwcGxpZWRFbGVtZW50QXJyYXlC
dWZmZXJJRCgpKTsKIAotICAgIC8vIENoZWNrIGlmIGFueSBhdHRyaWJ1dGVzIG5lZWQgdG8gYmUg
c3RyZWFtZWQsIGRldGVybWluZXMgaWYgdGhlIGluZGV4IHJhbmdlIG5lZWRzIHRvIGJlIGNvbXB1
dGVkCisgICAgLy8gQ2hlY2sgaWYgYW55IGF0dHJpYnV0ZXMgbmVlZCB0byBiZSBzdHJlYW1lZCwg
ZGV0ZXJtaW5lcyBpZiB0aGUgaW5kZXggcmFuZ2UgbmVlZHMgdG8gYmUKKyAgICAvLyBjb21wdXRl
ZAogICAgIGJvb2wgYXR0cmlidXRlc05lZWRTdHJlYW1pbmcgPSBtQXR0cmlidXRlc05lZWRTdHJl
YW1pbmcuYW55KCk7CiAKLSAgICAvLyBEZXRlcm1pbmUgaWYgYW4gaW5kZXggYnVmZmVyIG5lZWRz
IHRvIGJlIHN0cmVhbWVkIGFuZCB0aGUgcmFuZ2Ugb2YgdmVydGljZXMgdGhhdCBuZWVkIHRvIGJl
IGNvcGllZAorICAgIC8vIERldGVybWluZSBpZiBhbiBpbmRleCBidWZmZXIgbmVlZHMgdG8gYmUg
c3RyZWFtZWQgYW5kIHRoZSByYW5nZSBvZiB2ZXJ0aWNlcyB0aGF0IG5lZWQgdG8gYmUKKyAgICAv
LyBjb3BpZWQKICAgICBJbmRleFJhbmdlIGluZGV4UmFuZ2U7CiAgICAgaWYgKHR5cGUgIT0gR0xf
Tk9ORSkKICAgICB7CkBAIC0xMjYsNyArMTQ1LDcgQEAgZ2w6OkVycm9yIFZlcnRleEFycmF5R0w6
OnN5bmNEcmF3U3RhdGUoY29uc3QgZ2w6OkF0dHJpYnV0ZXNNYXNrICZhY3RpdmVBdHRyaWJ1dGUK
ICAgICB7CiAgICAgICAgIC8vIE5vdCBhbiBpbmRleGVkIGNhbGwsIHNldCB0aGUgcmFuZ2UgdG8g
W2ZpcnN0LCBmaXJzdCArIGNvdW50IC0gMV0KICAgICAgICAgaW5kZXhSYW5nZS5zdGFydCA9IGZp
cnN0OwotICAgICAgICBpbmRleFJhbmdlLmVuZCA9IGZpcnN0ICsgY291bnQgLSAxOworICAgICAg
ICBpbmRleFJhbmdlLmVuZCAgID0gZmlyc3QgKyBjb3VudCAtIDE7CiAgICAgfQogCiAgICAgaWYg
KGF0dHJpYnV0ZXNOZWVkU3RyZWFtaW5nKQpAQCAtMTM4LDE2ICsxNTcsMTYgQEAgZ2w6OkVycm9y
IFZlcnRleEFycmF5R0w6OnN5bmNEcmF3U3RhdGUoY29uc3QgZ2w6OkF0dHJpYnV0ZXNNYXNrICZh
Y3RpdmVBdHRyaWJ1dGUKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBFcnJvcihHTF9O
T19FUlJPUik7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0KIAotRXJyb3IgVmVydGV4QXJyYXlH
TDo6c3luY0luZGV4RGF0YShHTHNpemVpIGNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGF0dHJpYnV0ZXNOZWVkU3RyZWFtaW5nLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbmRleFJhbmdlICpvdXRJbmRleFJhbmdlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKipvdXRJbmRpY2VzKSBj
b25zdAorZ2w6OkVycm9yIFZlcnRleEFycmF5R0w6OnN5bmNJbmRleERhdGEoR0xzaXplaSBjb3Vu
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRp
Y2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwcmltaXRp
dmVSZXN0YXJ0RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgYXR0cmlidXRlc05lZWRTdHJlYW1pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJbmRleFJhbmdlICpvdXRJbmRleFJhbmdlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICoqb3V0SW5kaWNlcykgY29uc3QK
IHsKICAgICBBU1NFUlQob3V0SW5kaWNlcyk7CiAKQEAgLTE2Nyw3ICsxODYsNyBAQCBFcnJvciBW
ZXJ0ZXhBcnJheUdMOjpzeW5jSW5kZXhEYXRhKEdMc2l6ZWkgY291bnQsCiAgICAgICAgIGlmIChh
dHRyaWJ1dGVzTmVlZFN0cmVhbWluZykKICAgICAgICAgewogICAgICAgICAgICAgcHRyZGlmZl90
IGVsZW1lbnRBcnJheUJ1ZmZlck9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8cHRyZGlmZl90Pihp
bmRpY2VzKTsKLSAgICAgICAgICAgIEVycm9yIGVycm9yID0gbURhdGEuZ2V0RWxlbWVudEFycmF5
QnVmZmVyKCktPmdldEluZGV4UmFuZ2UoCisgICAgICAgICAgICBFcnJvciBlcnJvciAgICAgICAg
ICAgICAgICAgICAgICAgID0gbURhdGEuZ2V0RWxlbWVudEFycmF5QnVmZmVyKCktPmdldEluZGV4
UmFuZ2UoCiAgICAgICAgICAgICAgICAgdHlwZSwgZWxlbWVudEFycmF5QnVmZmVyT2Zmc2V0LCBj
b3VudCwgcHJpbWl0aXZlUmVzdGFydEVuYWJsZWQsIG91dEluZGV4UmFuZ2UpOwogICAgICAgICAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgICAgIHsKQEAgLTE3NSw3ICsxOTQsOCBA
QCBFcnJvciBWZXJ0ZXhBcnJheUdMOjpzeW5jSW5kZXhEYXRhKEdMc2l6ZWkgY291bnQsCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICAvLyBJbmRpY2VzIHNlcnZlcyBhcyBhbiBv
ZmZzZXQgaW50byB0aGUgaW5kZXggYnVmZmVyIGluIHRoaXMgY2FzZSwgdXNlIHRoZSBzYW1lIHZh
bHVlIGZvciB0aGUgZHJhdyBjYWxsCisgICAgICAgIC8vIEluZGljZXMgc2VydmVzIGFzIGFuIG9m
ZnNldCBpbnRvIHRoZSBpbmRleCBidWZmZXIgaW4gdGhpcyBjYXNlLCB1c2UgdGhlIHNhbWUgdmFs
dWUgZm9yCisgICAgICAgIC8vIHRoZSBkcmF3IGNhbGwKICAgICAgICAgKm91dEluZGljZXMgPSBp
bmRpY2VzOwogICAgIH0KICAgICBlbHNlCkBAIC0yMDUsMjAgKzIyNSwyMyBAQCBFcnJvciBWZXJ0
ZXhBcnJheUdMOjpzeW5jSW5kZXhEYXRhKEdMc2l6ZWkgY291bnQsCiAgICAgICAgIGlmIChyZXF1
aXJlZFN0cmVhbWluZ0J1ZmZlclNpemUgPiBtU3RyZWFtaW5nRWxlbWVudEFycmF5QnVmZmVyU2l6
ZSkKICAgICAgICAgewogICAgICAgICAgICAgLy8gQ29weSB0aGUgaW5kaWNlcyBpbiB3aGlsZSBy
ZXNpemluZyB0aGUgYnVmZmVyCi0gICAgICAgICAgICBtRnVuY3Rpb25zLT5idWZmZXJEYXRhKEdM
X0VMRU1FTlRfQVJSQVlfQlVGRkVSLCByZXF1aXJlZFN0cmVhbWluZ0J1ZmZlclNpemUsIGluZGlj
ZXMsIEdMX0RZTkFNSUNfRFJBVyk7CisgICAgICAgICAgICBtRnVuY3Rpb25zLT5idWZmZXJEYXRh
KEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCByZXF1aXJlZFN0cmVhbWluZ0J1ZmZlclNpemUsIGlu
ZGljZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0RZTkFNSUNfRFJB
Vyk7CiAgICAgICAgICAgICBtU3RyZWFtaW5nRWxlbWVudEFycmF5QnVmZmVyU2l6ZSA9IHJlcXVp
cmVkU3RyZWFtaW5nQnVmZmVyU2l6ZTsKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAg
IHsKICAgICAgICAgICAgIC8vIFB1dCB0aGUgaW5kaWNlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRo
ZSBidWZmZXIKLSAgICAgICAgICAgIG1GdW5jdGlvbnMtPmJ1ZmZlclN1YkRhdGEoR0xfRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIDAsIHJlcXVpcmVkU3RyZWFtaW5nQnVmZmVyU2l6ZSwgaW5kaWNlcyk7
CisgICAgICAgICAgICBtRnVuY3Rpb25zLT5idWZmZXJTdWJEYXRhKEdMX0VMRU1FTlRfQVJSQVlf
QlVGRkVSLCAwLCByZXF1aXJlZFN0cmVhbWluZ0J1ZmZlclNpemUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGljZXMpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8g
U2V0IHRoZSBpbmRleCBvZmZzZXQgZm9yIHRoZSBkcmF3IGNhbGwgdG8gemVybyBzaW5jZSB0aGUg
c3VwcGxpZWQgaW5kZXggcG9pbnRlciBpcyB0byBjbGllbnQgZGF0YQorICAgICAgICAvLyBTZXQg
dGhlIGluZGV4IG9mZnNldCBmb3IgdGhlIGRyYXcgY2FsbCB0byB6ZXJvIHNpbmNlIHRoZSBzdXBw
bGllZCBpbmRleCBwb2ludGVyIGlzIHRvCisgICAgICAgIC8vIGNsaWVudCBkYXRhCiAgICAgICAg
ICpvdXRJbmRpY2VzID0gbnVsbHB0cjsKICAgICB9CiAKLSAgICByZXR1cm4gRXJyb3IoR0xfTk9f
RVJST1IpOworICAgIHJldHVybiBOb0Vycm9yKCk7CiB9CiAKIHZvaWQgVmVydGV4QXJyYXlHTDo6
Y29tcHV0ZVN0cmVhbWluZ0F0dHJpYnV0ZVNpemVzKGNvbnN0IGdsOjpBdHRyaWJ1dGVzTWFzayAm
YWN0aXZlQXR0cmlidXRlc01hc2ssCkBAIC0yMzIsMTggKzI1NSwyMCBAQCB2b2lkIFZlcnRleEFy
cmF5R0w6OmNvbXB1dGVTdHJlYW1pbmdBdHRyaWJ1dGVTaXplcyhjb25zdCBnbDo6QXR0cmlidXRl
c01hc2sgJmFjdAogCiAgICAgQVNTRVJUKG1BdHRyaWJ1dGVzTmVlZFN0cmVhbWluZy5hbnkoKSk7
CiAKLSAgICBjb25zdCBhdXRvICZhdHRyaWJzID0gbURhdGEuZ2V0VmVydGV4QXR0cmlidXRlcygp
OworICAgIGNvbnN0IGF1dG8gJmF0dHJpYnMgID0gbURhdGEuZ2V0VmVydGV4QXR0cmlidXRlcygp
OworICAgIGNvbnN0IGF1dG8gJmJpbmRpbmdzID0gbURhdGEuZ2V0VmVydGV4QmluZGluZ3MoKTsK
ICAgICBmb3IgKGF1dG8gaWR4IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQobUF0dHJpYnV0ZXNOZWVk
U3RyZWFtaW5nICYgYWN0aXZlQXR0cmlidXRlc01hc2spKQogICAgIHsKLSAgICAgICAgY29uc3Qg
YXV0byAmYXR0cmliID0gYXR0cmlic1tpZHhdOwotICAgICAgICBBU1NFUlQoQXR0cmlidXRlTmVl
ZHNTdHJlYW1pbmcoYXR0cmliKSk7CisgICAgICAgIGNvbnN0IGF1dG8gJmF0dHJpYiAgPSBhdHRy
aWJzW2lkeF07CisgICAgICAgIGNvbnN0IGF1dG8gJmJpbmRpbmcgPSBiaW5kaW5nc1thdHRyaWIu
YmluZGluZ0luZGV4XTsKKyAgICAgICAgQVNTRVJUKEF0dHJpYnV0ZU5lZWRzU3RyZWFtaW5nKGF0
dHJpYiwgYmluZGluZykpOwogCiAgICAgICAgIC8vIElmIHN0cmVhbWluZyBpcyBnb2luZyB0byBi
ZSByZXF1aXJlZCwgY29tcHV0ZSB0aGUgc2l6ZSBvZiB0aGUgcmVxdWlyZWQgYnVmZmVyCiAgICAg
ICAgIC8vIGFuZCBob3cgbXVjaCBzbGFjayBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBi
dWZmZXIgd2lsbCBiZSByZXF1aXJlZCBieSBkZXRlcm1pbmluZwogICAgICAgICAvLyB0aGUgYXR0
cmlidXRlIHdpdGggdGhlIGxhcmdlc3QgZGF0YSBzaXplLgogICAgICAgICBzaXplX3QgdHlwZVNp
emUgPSBDb21wdXRlVmVydGV4QXR0cmlidXRlVHlwZVNpemUoYXR0cmliKTsKLSAgICAgICAgKm91
dFN0cmVhbWluZ0RhdGFTaXplICs9IHR5cGVTaXplICogQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZUVs
ZW1lbnRDb3VudCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGF0dHJpYiwgaW5kZXhSYW5nZS52ZXJ0ZXhDb3VudCgpLCBpbnN0YW5jZUNvdW50KTsKKyAg
ICAgICAgKm91dFN0cmVhbWluZ0RhdGFTaXplICs9IHR5cGVTaXplICogQ29tcHV0ZVZlcnRleEJp
bmRpbmdFbGVtZW50Q291bnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBiaW5kaW5nLCBpbmRleFJhbmdlLnZlcnRleENvdW50KCksIGluc3RhbmNlQ291
bnQpOwogICAgICAgICAqb3V0TWF4QXR0cmlidXRlRGF0YVNpemUgPSBzdGQ6Om1heCgqb3V0TWF4
QXR0cmlidXRlRGF0YVNpemUsIHR5cGVTaXplKTsKICAgICB9CiB9CkBAIC0yNjEsNyArMjg2LDcg
QEAgZ2w6OkVycm9yIFZlcnRleEFycmF5R0w6OnN0cmVhbUF0dHJpYnV0ZXMoY29uc3QgZ2w6OkF0
dHJpYnV0ZXNNYXNrICZhY3RpdmVBdHRyaWIKIAogICAgIGlmIChzdHJlYW1pbmdEYXRhU2l6ZSA9
PSAwKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9OT19FUlJPUik7CisgICAg
ICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogICAgIH0KIAogICAgIGlmIChtU3RyZWFtaW5nQXJy
YXlCdWZmZXIgPT0gMCkKQEAgLTI3MCw5ICsyOTUsOSBAQCBnbDo6RXJyb3IgVmVydGV4QXJyYXlH
TDo6c3RyZWFtQXR0cmlidXRlcyhjb25zdCBnbDo6QXR0cmlidXRlc01hc2sgJmFjdGl2ZUF0dHJp
YgogICAgICAgICBtU3RyZWFtaW5nQXJyYXlCdWZmZXJTaXplID0gMDsKICAgICB9CiAKLSAgICAv
LyBJZiBmaXJzdCBpcyBncmVhdGVyIHRoYW4gemVybywgYSBzbGFjayBzcGFjZSBuZWVkcyB0byBi
ZSBsZWZ0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJ1ZmZlciBzbyB0aGF0Ci0gICAgLy8gdGhl
IHNhbWUgJ2ZpcnN0JyBhcmd1bWVudCBjYW4gYmUgcGFzc2VkIGludG8gdGhlIGRyYXcgY2FsbC4K
LSAgICBjb25zdCBzaXplX3QgYnVmZmVyRW1wdHlTcGFjZSA9IG1heEF0dHJpYnV0ZURhdGFTaXpl
ICogaW5kZXhSYW5nZS5zdGFydDsKKyAgICAvLyBJZiBmaXJzdCBpcyBncmVhdGVyIHRoYW4gemVy
bywgYSBzbGFjayBzcGFjZSBuZWVkcyB0byBiZSBsZWZ0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhl
IGJ1ZmZlcgorICAgIC8vIHNvIHRoYXQgdGhlIHNhbWUgJ2ZpcnN0JyBhcmd1bWVudCBjYW4gYmUg
cGFzc2VkIGludG8gdGhlIGRyYXcgY2FsbC4KKyAgICBjb25zdCBzaXplX3QgYnVmZmVyRW1wdHlT
cGFjZSAgID0gbWF4QXR0cmlidXRlRGF0YVNpemUgKiBpbmRleFJhbmdlLnN0YXJ0OwogICAgIGNv
bnN0IHNpemVfdCByZXF1aXJlZEJ1ZmZlclNpemUgPSBzdHJlYW1pbmdEYXRhU2l6ZSArIGJ1ZmZl
ckVtcHR5U3BhY2U7CiAKICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kQnVmZmVyKEdMX0FSUkFZX0JV
RkZFUiwgbVN0cmVhbWluZ0FycmF5QnVmZmVyKTsKQEAgLTI4Myw5ICszMDgsOSBAQCBnbDo6RXJy
b3IgVmVydGV4QXJyYXlHTDo6c3RyZWFtQXR0cmlidXRlcyhjb25zdCBnbDo6QXR0cmlidXRlc01h
c2sgJmFjdGl2ZUF0dHJpYgogICAgIH0KIAogICAgIC8vIFVubWFwcGluZyBhIGJ1ZmZlciBjYW4g
cmV0dXJuIEdMX0ZBTFNFIHRvIGluZGljYXRlIHRoYXQgdGhlIHN5c3RlbSBoYXMgY29ycnVwdGVk
IHRoZSBkYXRhCi0gICAgLy8gc29tZWhvdyAoc3VjaCBhcyBieSBhIHNjcmVlbiBjaGFuZ2UpLCBy
ZXRyeSB3cml0aW5nIHRoZSBkYXRhIGEgZmV3IHRpbWVzIGFuZCByZXR1cm4gT1VUX09GX01FTU9S
WQotICAgIC8vIGlmIHRoYXQgZmFpbHMuCi0gICAgR0xib29sZWFuIHVubWFwUmVzdWx0ID0gR0xf
RkFMU0U7CisgICAgLy8gc29tZWhvdyAoc3VjaCBhcyBieSBhIHNjcmVlbiBjaGFuZ2UpLCByZXRy
eSB3cml0aW5nIHRoZSBkYXRhIGEgZmV3IHRpbWVzIGFuZCByZXR1cm4KKyAgICAvLyBPVVRfT0Zf
TUVNT1JZIGlmIHRoYXQgZmFpbHMuCisgICAgR0xib29sZWFuIHVubWFwUmVzdWx0ICAgICA9IEdM
X0ZBTFNFOwogICAgIHNpemVfdCB1bm1hcFJldHJ5QXR0ZW1wdHMgPSA1OwogICAgIHdoaWxlICh1
bm1hcFJlc3VsdCAhPSBHTF9UUlVFICYmIC0tdW5tYXBSZXRyeUF0dGVtcHRzID4gMCkKICAgICB7
CkBAIC0yOTMsMTggKzMxOCwyNiBAQCBnbDo6RXJyb3IgVmVydGV4QXJyYXlHTDo6c3RyZWFtQXR0
cmlidXRlcyhjb25zdCBnbDo6QXR0cmlidXRlc01hc2sgJmFjdGl2ZUF0dHJpYgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWly
ZWRCdWZmZXJTaXplLCBHTF9NQVBfV1JJVEVfQklUKTsKICAgICAgICAgc2l6ZV90IGN1ckJ1ZmZl
ck9mZnNldCA9IGJ1ZmZlckVtcHR5U3BhY2U7CiAKLSAgICAgICAgY29uc3QgYXV0byAmYXR0cmli
cyA9IG1EYXRhLmdldFZlcnRleEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgY29uc3QgYXV0byAmYXR0
cmlicyAgPSBtRGF0YS5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7CisgICAgICAgIGNvbnN0IGF1dG8g
JmJpbmRpbmdzID0gbURhdGEuZ2V0VmVydGV4QmluZGluZ3MoKTsKICAgICAgICAgZm9yIChhdXRv
IGlkeCA6IGFuZ2xlOjpJdGVyYXRlQml0U2V0KG1BdHRyaWJ1dGVzTmVlZFN0cmVhbWluZyAmIGFj
dGl2ZUF0dHJpYnV0ZXNNYXNrKSkKICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgYXV0byAm
YXR0cmliID0gYXR0cmlic1tpZHhdOwotICAgICAgICAgICAgQVNTRVJUKEF0dHJpYnV0ZU5lZWRz
U3RyZWFtaW5nKGF0dHJpYikpOworICAgICAgICAgICAgY29uc3QgYXV0byAmYXR0cmliICA9IGF0
dHJpYnNbaWR4XTsKKyAgICAgICAgICAgIGNvbnN0IGF1dG8gJmJpbmRpbmcgPSBiaW5kaW5nc1th
dHRyaWIuYmluZGluZ0luZGV4XTsKKyAgICAgICAgICAgIEFTU0VSVChBdHRyaWJ1dGVOZWVkc1N0
cmVhbWluZyhhdHRyaWIsIGJpbmRpbmcpKTsKIAogICAgICAgICAgICAgY29uc3Qgc2l6ZV90IHN0
cmVhbWVkVmVydGV4Q291bnQgPQotICAgICAgICAgICAgICAgIENvbXB1dGVWZXJ0ZXhBdHRyaWJ1
dGVFbGVtZW50Q291bnQoYXR0cmliLCBpbmRleFJhbmdlLnZlcnRleENvdW50KCksIGluc3RhbmNl
Q291bnQpOworICAgICAgICAgICAgICAgIENvbXB1dGVWZXJ0ZXhCaW5kaW5nRWxlbWVudENvdW50
KGJpbmRpbmcsIGluZGV4UmFuZ2UudmVydGV4Q291bnQoKSwgaW5zdGFuY2VDb3VudCk7CiAKLSAg
ICAgICAgICAgIGNvbnN0IHNpemVfdCBzb3VyY2VTdHJpZGUgPSBDb21wdXRlVmVydGV4QXR0cmli
dXRlU3RyaWRlKGF0dHJpYik7CisgICAgICAgICAgICBjb25zdCBzaXplX3Qgc291cmNlU3RyaWRl
ID0gQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVN0cmlkZShhdHRyaWIsIGJpbmRpbmcpOwogICAgICAg
ICAgICAgY29uc3Qgc2l6ZV90IGRlc3RTdHJpZGUgICA9IENvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVU
eXBlU2l6ZShhdHRyaWIpOwogCisgICAgICAgICAgICAvLyBWZXJ0aWNlcyBkbyBub3QgYXBwbHkg
dGhlICdzdGFydCcgb2Zmc2V0IHdoZW4gdGhlIGRpdmlzb3IgaXMgbm9uLXplcm8gZXZlbiB3aGVu
IGRvaW5nCisgICAgICAgICAgICAvLyBhIG5vbi1pbnN0YW5jZWQgZHJhdyBjYWxsCisgICAgICAg
ICAgICBjb25zdCBzaXplX3QgZmlyc3RJbmRleCA9IGJpbmRpbmcuZGl2aXNvciA9PSAwID8gaW5k
ZXhSYW5nZS5zdGFydCA6IDA7CisKKyAgICAgICAgICAgIC8vIEF0dHJpYnV0ZXMgdXNpbmcgY2xp
ZW50IG1lbW9yeSBpZ25vcmUgdGhlIFZFUlRFWF9BVFRSSUJfQklORElORyBzdGF0ZS4KKyAgICAg
ICAgICAgIC8vIGh0dHBzOi8vd3d3Lm9wZW5nbC5vcmcvcmVnaXN0cnkvc3BlY3MvQVJCL3ZlcnRl
eF9hdHRyaWJfYmluZGluZy50eHQKICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmlucHV0UG9p
bnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihhdHRyaWIucG9pbnRlcik7
CiAKICAgICAgICAgICAgIC8vIFBhY2sgdGhlIGRhdGEgd2hlbiBjb3B5aW5nIGl0LCB1c2VyIGNv
dWxkIGhhdmUgc3VwcGxpZWQgYSB2ZXJ5IGxhcmdlIHN0cmlkZSB0aGF0CkBAIC0zMTIsOCArMzQ1
LDcgQEAgZ2w6OkVycm9yIFZlcnRleEFycmF5R0w6OnN0cmVhbUF0dHJpYnV0ZXMoY29uc3QgZ2w6
OkF0dHJpYnV0ZXNNYXNrICZhY3RpdmVBdHRyaWIKICAgICAgICAgICAgIGlmIChkZXN0U3RyaWRl
ID09IHNvdXJjZVN0cmlkZSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAvLyBDYW4g
Y29weSBpbiBvbmUgZ28sIHRoZSBkYXRhIGlzIHBhY2tlZAotICAgICAgICAgICAgICAgIG1lbWNw
eShidWZmZXJQb2ludGVyICsgY3VyQnVmZmVyT2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICBpbnB1dFBvaW50ZXIgKyAoc291cmNlU3RyaWRlICogaW5kZXhSYW5nZS5zdGFydCksCisgICAg
ICAgICAgICAgICAgbWVtY3B5KGJ1ZmZlclBvaW50ZXIgKyBjdXJCdWZmZXJPZmZzZXQsIGlucHV0
UG9pbnRlciArIChzb3VyY2VTdHJpZGUgKiBmaXJzdEluZGV4KSwKICAgICAgICAgICAgICAgICAg
ICAgICAgZGVzdFN0cmlkZSAqIHN0cmVhbWVkVmVydGV4Q291bnQpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgZWxzZQpAQCAtMzIxLDE1ICszNTMsMTQgQEAgZ2w6OkVycm9yIFZlcnRleEFy
cmF5R0w6OnN0cmVhbUF0dHJpYnV0ZXMoY29uc3QgZ2w6OkF0dHJpYnV0ZXNNYXNrICZhY3RpdmVB
dHRyaWIKICAgICAgICAgICAgICAgICAvLyBDb3B5IGVhY2ggdmVydGV4IGluZGl2aWR1YWxseQog
ICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IHZlcnRleElkeCA9IDA7IHZlcnRleElkeCA8IHN0
cmVhbWVkVmVydGV4Q291bnQ7IHZlcnRleElkeCsrKQogICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgdWludDhfdCAqb3V0ID0gYnVmZmVyUG9pbnRlciArIGN1ckJ1ZmZlck9m
ZnNldCArIChkZXN0U3RyaWRlICogdmVydGV4SWR4KTsKLSAgICAgICAgICAgICAgICAgICAgY29u
c3QgdWludDhfdCAqaW4gPQotICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRQb2ludGVyICsg
c291cmNlU3RyaWRlICogKHZlcnRleElkeCArIGluZGV4UmFuZ2Uuc3RhcnQpOworICAgICAgICAg
ICAgICAgICAgICB1aW50OF90ICpvdXQgICAgICA9IGJ1ZmZlclBvaW50ZXIgKyBjdXJCdWZmZXJP
ZmZzZXQgKyAoZGVzdFN0cmlkZSAqIHZlcnRleElkeCk7CisgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVpbnQ4X3QgKmluID0gaW5wdXRQb2ludGVyICsgc291cmNlU3RyaWRlICogKHZlcnRleElk
eCArIGZpcnN0SW5kZXgpOwogICAgICAgICAgICAgICAgICAgICBtZW1jcHkob3V0LCBpbiwgZGVz
dFN0cmlkZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICAvLyBDb21wdXRlIHdoZXJlIHRoZSAwLWluZGV4IHZlcnRleCB3b3VsZCBiZS4KLSAgICAgICAg
ICAgIGNvbnN0IHNpemVfdCB2ZXJ0ZXhTdGFydE9mZnNldCA9IGN1ckJ1ZmZlck9mZnNldCAtIChp
bmRleFJhbmdlLnN0YXJ0ICogZGVzdFN0cmlkZSk7CisgICAgICAgICAgICBjb25zdCBzaXplX3Qg
dmVydGV4U3RhcnRPZmZzZXQgPSBjdXJCdWZmZXJPZmZzZXQgLSAoZmlyc3RJbmRleCAqIGRlc3RT
dHJpZGUpOwogCiAgICAgICAgICAgICBpZiAoYXR0cmliLnB1cmVJbnRlZ2VyKQogICAgICAgICAg
ICAgewpAQCAtMzYyLDcgKzM5Myw3IEBAIGdsOjpFcnJvciBWZXJ0ZXhBcnJheUdMOjpzdHJlYW1B
dHRyaWJ1dGVzKGNvbnN0IGdsOjpBdHRyaWJ1dGVzTWFzayAmYWN0aXZlQXR0cmliCiAgICAgICAg
IHJldHVybiBFcnJvcihHTF9PVVRfT0ZfTUVNT1JZLCAiRmFpbGVkIHRvIHVubWFwIHRoZSBjbGll
bnQgZGF0YSBzdHJlYW1pbmcgYnVmZmVyLiIpOwogICAgIH0KIAotICAgIHJldHVybiBFcnJvcihH
TF9OT19FUlJPUik7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKIH0KIAogR0x1aW50IFZlcnRleEFy
cmF5R0w6OmdldFZlcnRleEFycmF5SUQoKSBjb25zdApAQCAtMzgyLDggKzQxMyw5IEBAIEdMdWlu
dCBWZXJ0ZXhBcnJheUdMOjpnZXRBcHBsaWVkRWxlbWVudEFycmF5QnVmZmVySUQoKSBjb25zdAog
CiB2b2lkIFZlcnRleEFycmF5R0w6OnVwZGF0ZU5lZWRzU3RyZWFtaW5nKHNpemVfdCBhdHRyaWJJ
bmRleCkKIHsKLSAgICBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiA9IG1EYXRhLmdldFZl
cnRleEF0dHJpYnV0ZShhdHRyaWJJbmRleCk7Ci0gICAgbUF0dHJpYnV0ZXNOZWVkU3RyZWFtaW5n
LnNldChhdHRyaWJJbmRleCwgQXR0cmlidXRlTmVlZHNTdHJlYW1pbmcoYXR0cmliKSk7CisgICAg
Y29uc3QgYXV0byAmYXR0cmliICA9IG1EYXRhLmdldFZlcnRleEF0dHJpYnV0ZShhdHRyaWJJbmRl
eCk7CisgICAgY29uc3QgYXV0byAmYmluZGluZyA9IG1EYXRhLmdldEJpbmRpbmdGcm9tQXR0cmli
SW5kZXgoYXR0cmliSW5kZXgpOworICAgIG1BdHRyaWJ1dGVzTmVlZFN0cmVhbWluZy5zZXQoYXR0
cmliSW5kZXgsIEF0dHJpYnV0ZU5lZWRzU3RyZWFtaW5nKGF0dHJpYiwgYmluZGluZykpOwogfQog
CiB2b2lkIFZlcnRleEFycmF5R0w6OnVwZGF0ZUF0dHJpYkVuYWJsZWQoc2l6ZV90IGF0dHJpYklu
ZGV4KQpAQCAtNDExLDcgKzQ0MywxMiBAQCB2b2lkIFZlcnRleEFycmF5R0w6OnVwZGF0ZUF0dHJp
YkVuYWJsZWQoc2l6ZV90IGF0dHJpYkluZGV4KQogdm9pZCBWZXJ0ZXhBcnJheUdMOjp1cGRhdGVB
dHRyaWJQb2ludGVyKHNpemVfdCBhdHRyaWJJbmRleCkKIHsKICAgICBjb25zdCBWZXJ0ZXhBdHRy
aWJ1dGUgJmF0dHJpYiA9IG1EYXRhLmdldFZlcnRleEF0dHJpYnV0ZShhdHRyaWJJbmRleCk7Ci0g
ICAgaWYgKG1BcHBsaWVkQXR0cmlidXRlc1thdHRyaWJJbmRleF0gPT0gYXR0cmliKQorICAgIEFT
U0VSVChhdHRyaWJJbmRleCA9PSBhdHRyaWIuYmluZGluZ0luZGV4KTsKKworICAgIEdMdWludCBi
aW5kaW5nSW5kZXggICAgICAgICAgPSBhdHRyaWIuYmluZGluZ0luZGV4OworICAgIGNvbnN0IFZl
cnRleEJpbmRpbmcgJmJpbmRpbmcgPSBtRGF0YS5nZXRWZXJ0ZXhCaW5kaW5nKGJpbmRpbmdJbmRl
eCk7CisKKyAgICBpZiAobUFwcGxpZWRBdHRyaWJ1dGVzW2F0dHJpYkluZGV4XSA9PSBhdHRyaWIg
JiYgbUFwcGxpZWRCaW5kaW5nc1tiaW5kaW5nSW5kZXhdID09IGJpbmRpbmcpCiAgICAgewogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtNDI1LDcgKzQ2Miw3IEBAIHZvaWQgVmVydGV4QXJyYXlH
TDo6dXBkYXRlQXR0cmliUG9pbnRlcihzaXplX3QgYXR0cmliSW5kZXgpCiAgICAgfQogCiAgICAg
bVN0YXRlTWFuYWdlci0+YmluZFZlcnRleEFycmF5KG1WZXJ0ZXhBcnJheUlELCBnZXRBcHBsaWVk
RWxlbWVudEFycmF5QnVmZmVySUQoKSk7Ci0gICAgY29uc3QgQnVmZmVyICphcnJheUJ1ZmZlciA9
IGF0dHJpYi5idWZmZXIuZ2V0KCk7CisgICAgY29uc3QgQnVmZmVyICphcnJheUJ1ZmZlciA9IGJp
bmRpbmcuYnVmZmVyLmdldCgpOwogICAgIGlmIChhcnJheUJ1ZmZlciAhPSBudWxscHRyKQogICAg
IHsKICAgICAgICAgY29uc3QgQnVmZmVyR0wgKmFycmF5QnVmZmVyR0wgPSBHZXRJbXBsQXM8QnVm
ZmVyR0w+KGFycmF5QnVmZmVyKTsKQEAgLTQzNSw2MSArNDcyLDg5IEBAIHZvaWQgVmVydGV4QXJy
YXlHTDo6dXBkYXRlQXR0cmliUG9pbnRlcihzaXplX3QgYXR0cmliSW5kZXgpCiAgICAgewogICAg
ICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7CiAgICAg
fQotICAgIG1BcHBsaWVkQXR0cmlidXRlc1thdHRyaWJJbmRleF0uYnVmZmVyID0gYXR0cmliLmJ1
ZmZlcjsKKworICAgIG1BcHBsaWVkQmluZGluZ3NbYmluZGluZ0luZGV4XS5idWZmZXIgPSBiaW5k
aW5nLmJ1ZmZlcjsKKworICAgIGNvbnN0IEdMdm9pZCAqaW5wdXRQb2ludGVyID0gbnVsbHB0cjsK
KyAgICBpZiAoYXJyYXlCdWZmZXIgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIGlucHV0UG9p
bnRlciA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdm9pZCAqPigKKyAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCAqPihiaW5kaW5nLm9mZnNldCArIGF0dHJpYi5yZWxhdGl2
ZU9mZnNldCkpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAvLyBBdHRyaWJ1dGVz
IHVzaW5nIGNsaWVudCBtZW1vcnkgaWdub3JlIHRoZSBWRVJURVhfQVRUUklCX0JJTkRJTkcgc3Rh
dGUuCisgICAgICAgIC8vIGh0dHBzOi8vd3d3Lm9wZW5nbC5vcmcvcmVnaXN0cnkvc3BlY3MvQVJC
L3ZlcnRleF9hdHRyaWJfYmluZGluZworICAgICAgICBpbnB1dFBvaW50ZXIgPSBhdHRyaWIucG9p
bnRlcjsKKyAgICB9CiAKICAgICBpZiAoYXR0cmliLnB1cmVJbnRlZ2VyKQogICAgIHsKICAgICAg
ICAgbUZ1bmN0aW9ucy0+dmVydGV4QXR0cmliSVBvaW50ZXIoc3RhdGljX2Nhc3Q8R0x1aW50Pihh
dHRyaWJJbmRleCksIGF0dHJpYi5zaXplLCBhdHRyaWIudHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmliLnN0cmlkZSwgYXR0cmliLnBvaW50ZXIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaW5kaW5nLnN0cmlkZSwg
aW5wdXRQb2ludGVyKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgbUZ1bmN0aW9u
cy0+dmVydGV4QXR0cmliUG9pbnRlcihzdGF0aWNfY2FzdDxHTHVpbnQ+KGF0dHJpYkluZGV4KSwg
YXR0cmliLnNpemUsIGF0dHJpYi50eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGF0dHJpYi5ub3JtYWxpemVkLCBhdHRyaWIuc3RyaWRlLCBhdHRyaWIucG9pbnRl
cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmliLm5vcm1h
bGl6ZWQsIGJpbmRpbmcuc3RyaWRlLCBpbnB1dFBvaW50ZXIpOwogICAgIH0KLSAgICBtQXBwbGll
ZEF0dHJpYnV0ZXNbYXR0cmliSW5kZXhdLnNpemUgICAgICAgID0gYXR0cmliLnNpemU7Ci0gICAg
bUFwcGxpZWRBdHRyaWJ1dGVzW2F0dHJpYkluZGV4XS50eXBlICAgICAgICA9IGF0dHJpYi50eXBl
OwotICAgIG1BcHBsaWVkQXR0cmlidXRlc1thdHRyaWJJbmRleF0ubm9ybWFsaXplZCAgPSBhdHRy
aWIubm9ybWFsaXplZDsKLSAgICBtQXBwbGllZEF0dHJpYnV0ZXNbYXR0cmliSW5kZXhdLnB1cmVJ
bnRlZ2VyID0gYXR0cmliLnB1cmVJbnRlZ2VyOwotICAgIG1BcHBsaWVkQXR0cmlidXRlc1thdHRy
aWJJbmRleF0uc3RyaWRlICAgICAgPSBhdHRyaWIuc3RyaWRlOwotICAgIG1BcHBsaWVkQXR0cmli
dXRlc1thdHRyaWJJbmRleF0ucG9pbnRlciAgICAgPSBhdHRyaWIucG9pbnRlcjsKKyAgICBtQXBw
bGllZEF0dHJpYnV0ZXNbYXR0cmliSW5kZXhdLnNpemUgICAgICAgICAgICAgICAgICAgID0gYXR0
cmliLnNpemU7CisgICAgbUFwcGxpZWRBdHRyaWJ1dGVzW2F0dHJpYkluZGV4XS50eXBlICAgICAg
ICAgICAgICAgICAgICA9IGF0dHJpYi50eXBlOworICAgIG1BcHBsaWVkQXR0cmlidXRlc1thdHRy
aWJJbmRleF0ubm9ybWFsaXplZCAgICAgICAgICAgICAgPSBhdHRyaWIubm9ybWFsaXplZDsKKyAg
ICBtQXBwbGllZEF0dHJpYnV0ZXNbYXR0cmliSW5kZXhdLnB1cmVJbnRlZ2VyICAgICAgICAgICAg
ID0gYXR0cmliLnB1cmVJbnRlZ2VyOworICAgIG1BcHBsaWVkQXR0cmlidXRlc1thdHRyaWJJbmRl
eF0ucG9pbnRlciAgICAgICAgICAgICAgICAgPSBhdHRyaWIucG9pbnRlcjsKKyAgICBtQXBwbGll
ZEF0dHJpYnV0ZXNbYXR0cmliSW5kZXhdLnJlbGF0aXZlT2Zmc2V0ICAgICAgICAgID0gYXR0cmli
LnJlbGF0aXZlT2Zmc2V0OworICAgIG1BcHBsaWVkQXR0cmlidXRlc1thdHRyaWJJbmRleF0udmVy
dGV4QXR0cmliQXJyYXlTdHJpZGUgPSBhdHRyaWIudmVydGV4QXR0cmliQXJyYXlTdHJpZGU7CisK
KyAgICBtQXBwbGllZEJpbmRpbmdzW2JpbmRpbmdJbmRleF0uc3RyaWRlID0gYmluZGluZy5zdHJp
ZGU7CisgICAgbUFwcGxpZWRCaW5kaW5nc1tiaW5kaW5nSW5kZXhdLm9mZnNldCA9IGJpbmRpbmcu
b2Zmc2V0OwogfQogCi12b2lkIFZlcnRleEFycmF5R0w6OnN5bmNTdGF0ZShjb25zdCBWZXJ0ZXhB
cnJheTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpCit2b2lkIFZlcnRleEFycmF5R0w6OnVwZGF0ZUF0
dHJpYkRpdmlzb3Ioc2l6ZV90IGF0dHJpYkluZGV4KQoreworICAgIEFTU0VSVChhdHRyaWJJbmRl
eCA9PSBtRGF0YS5nZXRCaW5kaW5nSW5kZXhGcm9tQXR0cmliSW5kZXgoYXR0cmliSW5kZXgpKTsK
KworICAgIGNvbnN0IFZlcnRleEJpbmRpbmcgJmJpbmRpbmcgPSBtRGF0YS5nZXRWZXJ0ZXhCaW5k
aW5nKGF0dHJpYkluZGV4KTsKKyAgICBpZiAobUFwcGxpZWRCaW5kaW5nc1thdHRyaWJJbmRleF0u
ZGl2aXNvciAhPSBiaW5kaW5nLmRpdmlzb3IpCisgICAgeworICAgICAgICBtU3RhdGVNYW5hZ2Vy
LT5iaW5kVmVydGV4QXJyYXkobVZlcnRleEFycmF5SUQsIGdldEFwcGxpZWRFbGVtZW50QXJyYXlC
dWZmZXJJRCgpKTsKKyAgICAgICAgbUZ1bmN0aW9ucy0+dmVydGV4QXR0cmliRGl2aXNvcihzdGF0
aWNfY2FzdDxHTHVpbnQ+KGF0dHJpYkluZGV4KSwgYmluZGluZy5kaXZpc29yKTsKKworICAgICAg
ICBtQXBwbGllZEJpbmRpbmdzW2F0dHJpYkluZGV4XS5kaXZpc29yID0gYmluZGluZy5kaXZpc29y
OworICAgIH0KK30KKwordm9pZCBWZXJ0ZXhBcnJheUdMOjpzeW5jU3RhdGUoQ29udGV4dEltcGwg
KmNvbnRleHRJbXBsLCBjb25zdCBWZXJ0ZXhBcnJheTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpCiB7
CiAgICAgZm9yICh1bnNpZ25lZCBsb25nIGRpcnR5Qml0IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQo
ZGlydHlCaXRzKSkKICAgICB7CiAgICAgICAgIGlmIChkaXJ0eUJpdCA9PSBWZXJ0ZXhBcnJheTo6
RElSVFlfQklUX0VMRU1FTlRfQVJSQVlfQlVGRkVSKQogICAgICAgICB7CiAgICAgICAgICAgICAv
LyBUT0RPKGptYWRpbGwpOiBFbGVtZW50IGFycmF5IGJ1ZmZlciBiaW5kaW5ncworICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZGlydHlCaXQgPj0gVmVy
dGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJfMF9FTkFCTEVEICYmCi0gICAgICAgICAgICAgICAg
IGRpcnR5Qml0IDwgVmVydGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJfTUFYX0VOQUJMRUQpCisK
KyAgICAgICAgc2l6ZV90IGluZGV4ID0gVmVydGV4QXJyYXk6OkdldEF0dHJpYkluZGV4KGRpcnR5
Qml0KTsKKyAgICAgICAgaWYgKGRpcnR5Qml0ID49IFZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRU
UklCXzBfRU5BQkxFRCAmJgorICAgICAgICAgICAgZGlydHlCaXQgPCBWZXJ0ZXhBcnJheTo6RElS
VFlfQklUX0FUVFJJQl9NQVhfRU5BQkxFRCkKICAgICAgICAgewotICAgICAgICAgICAgc2l6ZV90
IGF0dHJpYkluZGV4ID0KLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxzaXplX3Q+KGRpcnR5
Qml0KSAtIFZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRUUklCXzBfRU5BQkxFRDsKLSAgICAgICAg
ICAgIHVwZGF0ZUF0dHJpYkVuYWJsZWQoYXR0cmliSW5kZXgpOworICAgICAgICAgICAgdXBkYXRl
QXR0cmliRW5hYmxlZChpbmRleCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoZGlydHlC
aXQgPj0gVmVydGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJfMF9QT0lOVEVSICYmCiAgICAgICAg
ICAgICAgICAgIGRpcnR5Qml0IDwgVmVydGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJfTUFYX1BP
SU5URVIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNpemVfdCBhdHRyaWJJbmRleCA9Ci0gICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c2l6ZV90PihkaXJ0eUJpdCkgLSBWZXJ0ZXhBcnJheTo6
RElSVFlfQklUX0FUVFJJQl8wX1BPSU5URVI7Ci0gICAgICAgICAgICB1cGRhdGVBdHRyaWJQb2lu
dGVyKGF0dHJpYkluZGV4KTsKKyAgICAgICAgICAgIHVwZGF0ZUF0dHJpYlBvaW50ZXIoaW5kZXgp
OwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGRpcnR5Qml0ID49IFZlcnRleEFycmF5OjpE
SVJUWV9CSVRfQVRUUklCXzBfRElWSVNPUiAmJgotICAgICAgICAgICAgICAgICBkaXJ0eUJpdCA8
IFZlcnRleEFycmF5OjpESVJUWV9CSVRfQVRUUklCX01BWF9ESVZJU09SKQorICAgICAgICBlbHNl
IGlmIChkaXJ0eUJpdCA+PSBWZXJ0ZXhBcnJheTo6RElSVFlfQklUX0FUVFJJQl8wX0ZPUk1BVCAm
JgorICAgICAgICAgICAgICAgICBkaXJ0eUJpdCA8IFZlcnRleEFycmF5OjpESVJUWV9CSVRfQklO
RElOR19NQVhfQlVGRkVSKQogICAgICAgICB7Ci0gICAgICAgICAgICBzaXplX3QgYXR0cmliSW5k
ZXggPQotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHNpemVfdD4oZGlydHlCaXQpIC0gVmVy
dGV4QXJyYXk6OkRJUlRZX0JJVF9BVFRSSUJfMF9ESVZJU09SOwotICAgICAgICAgICAgY29uc3Qg
VmVydGV4QXR0cmlidXRlICZhdHRyaWIgPSBtRGF0YS5nZXRWZXJ0ZXhBdHRyaWJ1dGUoYXR0cmli
SW5kZXgpOwotCi0gICAgICAgICAgICBpZiAobUFwcGxpZWRBdHRyaWJ1dGVzW2F0dHJpYkluZGV4
XS5kaXZpc29yICE9IGF0dHJpYi5kaXZpc29yKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRWZXJ0ZXhBcnJheShtVmVydGV4QXJyYXlJRCwgZ2V0QXBw
bGllZEVsZW1lbnRBcnJheUJ1ZmZlcklEKCkpOwotICAgICAgICAgICAgICAgIG1GdW5jdGlvbnMt
PnZlcnRleEF0dHJpYkRpdmlzb3Ioc3RhdGljX2Nhc3Q8R0x1aW50PihhdHRyaWJJbmRleCksIGF0
dHJpYi5kaXZpc29yKTsKLSAgICAgICAgICAgICAgICBtQXBwbGllZEF0dHJpYnV0ZXNbYXR0cmli
SW5kZXhdLmRpdmlzb3IgPSBhdHRyaWIuZGl2aXNvcjsKLSAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIC8vIFRPRE8oamlhd2VpLnNoYW9AaW50ZWwuY29tKTogVmVydGV4IEF0dHJpYiBCaW5kaW5n
cworICAgICAgICAgICAgQVNTRVJUKGluZGV4ID09IG1EYXRhLmdldEJpbmRpbmdJbmRleEZyb21B
dHRyaWJJbmRleChpbmRleCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGRpcnR5Qml0
ID49IFZlcnRleEFycmF5OjpESVJUWV9CSVRfQklORElOR18wX0RJVklTT1IgJiYKKyAgICAgICAg
ICAgICAgICAgZGlydHlCaXQgPCBWZXJ0ZXhBcnJheTo6RElSVFlfQklUX0JJTkRJTkdfTUFYX0RJ
VklTT1IpCisgICAgICAgIHsKKyAgICAgICAgICAgIHVwZGF0ZUF0dHJpYkRpdmlzb3IoaW5kZXgp
OwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvVmVydGV4QXJyYXlHTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL1ZlcnRleEFycmF5R0wuaAppbmRleCAyNjFiNjNkOTE4Zi4uYTExNGJkMTEz
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9WZXJ0ZXhBcnJheUdMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL1ZlcnRleEFycmF5R0wuaApAQCAtMzYsMTEgKzM2LDEyIEBA
IGNsYXNzIFZlcnRleEFycmF5R0wgOiBwdWJsaWMgVmVydGV4QXJyYXlJbXBsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGluc3RhbmNlQ291bnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVk
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICoqb3V0
SW5kaWNlcykgY29uc3Q7CisgICAgZ2w6OkVycm9yIHN5bmNFbGVtZW50QXJyYXlTdGF0ZSgpIGNv
bnN0OwogCiAgICAgR0x1aW50IGdldFZlcnRleEFycmF5SUQoKSBjb25zdDsKICAgICBHTHVpbnQg
Z2V0QXBwbGllZEVsZW1lbnRBcnJheUJ1ZmZlcklEKCkgY29uc3Q7CiAKLSAgICB2b2lkIHN5bmNT
dGF0ZShjb25zdCBnbDo6VmVydGV4QXJyYXk6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHN5bmNTdGF0ZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsIGNvbnN0IGds
OjpWZXJ0ZXhBcnJheTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpIG92ZXJyaWRlOwogCiAgIHByaXZh
dGU6CiAgICAgZ2w6OkVycm9yIHN5bmNEcmF3U3RhdGUoY29uc3QgZ2w6OkF0dHJpYnV0ZXNNYXNr
ICZhY3RpdmVBdHRyaWJ1dGVzTWFzaywKQEAgLTc3LDYgKzc4LDcgQEAgY2xhc3MgVmVydGV4QXJy
YXlHTCA6IHB1YmxpYyBWZXJ0ZXhBcnJheUltcGwKICAgICB2b2lkIHVwZGF0ZU5lZWRzU3RyZWFt
aW5nKHNpemVfdCBhdHRyaWJJbmRleCk7CiAgICAgdm9pZCB1cGRhdGVBdHRyaWJFbmFibGVkKHNp
emVfdCBhdHRyaWJJbmRleCk7CiAgICAgdm9pZCB1cGRhdGVBdHRyaWJQb2ludGVyKHNpemVfdCBh
dHRyaWJJbmRleCk7CisgICAgdm9pZCB1cGRhdGVBdHRyaWJEaXZpc29yKHNpemVfdCBhdHRyaWJJ
bmRleCk7CiAKICAgICBjb25zdCBGdW5jdGlvbnNHTCAqbUZ1bmN0aW9uczsKICAgICBTdGF0ZU1h
bmFnZXJHTCAqbVN0YXRlTWFuYWdlcjsKQEAgLTg0LDcgKzg2LDkgQEAgY2xhc3MgVmVydGV4QXJy
YXlHTCA6IHB1YmxpYyBWZXJ0ZXhBcnJheUltcGwKICAgICBHTHVpbnQgbVZlcnRleEFycmF5SUQ7
CiAKICAgICBtdXRhYmxlIEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+IG1BcHBsaWVkRWxlbWVu
dEFycmF5QnVmZmVyOworCiAgICAgbXV0YWJsZSBzdGQ6OnZlY3RvcjxnbDo6VmVydGV4QXR0cmli
dXRlPiBtQXBwbGllZEF0dHJpYnV0ZXM7CisgICAgbXV0YWJsZSBzdGQ6OnZlY3RvcjxnbDo6VmVy
dGV4QmluZGluZz4gbUFwcGxpZWRCaW5kaW5nczsKIAogICAgIG11dGFibGUgc2l6ZV90IG1TdHJl
YW1pbmdFbGVtZW50QXJyYXlCdWZmZXJTaXplOwogICAgIG11dGFibGUgR0x1aW50IG1TdHJlYW1p
bmdFbGVtZW50QXJyYXlCdWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvV29ya2Fyb3VuZHNHTC5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1dvcmthcm91bmRzR0wuaAppbmRl
eCA0MDU2ZGM2ODc2Zi4uZWM1OWMwNDUyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9Xb3JrYXJvdW5kc0dMLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL1dvcmthcm91bmRz
R0wuaApAQCAtMTQsMjEgKzE0LDYgQEAgbmFtZXNwYWNlIHJ4CiAKIHN0cnVjdCBXb3JrYXJvdW5k
c0dMCiB7Ci0gICAgV29ya2Fyb3VuZHNHTCgpCi0gICAgICAgIDogYXZvaWQxQml0QWxwaGFUZXh0
dXJlRm9ybWF0cyhmYWxzZSksCi0gICAgICAgICAgcmdiYTRJc05vdFN1cHBvcnRlZEZvckNvbG9y
UmVuZGVyaW5nKGZhbHNlKSwKLSAgICAgICAgICBkb2VzU1JHQkNsZWFyc09uTGluZWFyRnJhbWVi
dWZmZXJBdHRhY2htZW50cyhmYWxzZSksCi0gICAgICAgICAgZG9XaGlsZUdMU0xDYXVzZXNHUFVI
YW5nKGZhbHNlKSwKLSAgICAgICAgICBmaW5pc2hEb2VzTm90Q2F1c2VRdWVyaWVzVG9CZUF2YWls
YWJsZShmYWxzZSksCi0gICAgICAgICAgYWx3YXlzQ2FsbFVzZVByb2dyYW1BZnRlckxpbmsoZmFs
c2UpLAotICAgICAgICAgIHVucGFja092ZXJsYXBwaW5nUm93c1NlcGFyYXRlbHlVbnBhY2tCdWZm
ZXIoZmFsc2UpLAotICAgICAgICAgIGVtdWxhdGVBYnNJbnRGdW5jdGlvbihmYWxzZSksCi0gICAg
ICAgICAgYWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvbihmYWxzZSksCi0gICAgICAgICAgZW11bGF0
ZUlzbmFuRmxvYXQoZmFsc2UpLAotICAgICAgICAgIHVzZVVudXNlZEJsb2Nrc1dpdGhTdGFuZGFy
ZE9yU2hhcmVkTGF5b3V0KGZhbHNlKQotICAgIHsKLSAgICB9Ci0KICAgICAvLyBXaGVuIHdyaXRp
bmcgYSBmbG9hdCB0byBhIG5vcm1hbGl6ZWQgaW50ZWdlciBmcmFtZWJ1ZmZlciwgZGVza3RvcCBP
cGVuR0wgaXMgYWxsb3dlZCB0byB3cml0ZQogICAgIC8vIG9uZSBvZiB0aGUgdHdvIGNsb3Nlc3Qg
bm9ybWFsaXplZCBpbnRlZ2VyIHJlcHJlc2VudGF0aW9ucyAoYWx0aG91Z2ggcm91bmQgdG8gbmVh
cmVzdCBpcwogICAgIC8vIHByZWZlcnJlZCkgKHNlZSBzZWN0aW9uIDIuMy41LjIgb2YgdGhlIEdM
IDQuNSBjb3JlIHNwZWNpZmljYXRpb24pLiBPcGVuR0wgRVMgcmVxdWlyZXMgdGhhdApAQCAtMzYs
MTggKzIxLDE4IEBAIHN0cnVjdCBXb3JrYXJvdW5kc0dMCiAgICAgLy8gc2VjdGlvbiAyLjEuMiBv
ZiB0aGUgT3BlbkdMIEVTIDIuMC4yNSBzcGVjKS4gIFRoaXMgaXNzdWUgb25seSBzaG93cyB1cCBv
biBJbnRlbCBhbmQgQU1ECiAgICAgLy8gZHJpdmVycyBvbiBmcmFtZWJ1ZmZlciBmb3JtYXRzIHRo
YXQgaGF2ZSAxLWJpdCBhbHBoYSwgd29yayBhcm91bmQgdGhpcyBieSB1c2luZyBoaWdoZXIKICAg
ICAvLyBwcmVjaXNpb24gZm9ybWF0cyBpbnN0ZWFkLgotICAgIGJvb2wgYXZvaWQxQml0QWxwaGFU
ZXh0dXJlRm9ybWF0czsKKyAgICBib29sIGF2b2lkMUJpdEFscGhhVGV4dHVyZUZvcm1hdHMgPSBm
YWxzZTsKIAogICAgIC8vIE9uIHNvbWUgb2xkZXIgSW50ZWwgZHJpdmVycywgR0xfUkdCQTQgaXMg
bm90IGNvbG9yIHJlbmRlcmFibGUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cwogICAgIC8vIHJl
dHVybnMgR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQuIFdvcmsgYXJvdW5kIHRoaXMgYnkgdXNp
bmcgYSBrbm93biBjb2xvci1yZW5kZXJhYmxlCiAgICAgLy8gZm9ybWF0LgotICAgIGJvb2wgcmdi
YTRJc05vdFN1cHBvcnRlZEZvckNvbG9yUmVuZGVyaW5nOworICAgIGJvb2wgcmdiYTRJc05vdFN1
cHBvcnRlZEZvckNvbG9yUmVuZGVyaW5nID0gZmFsc2U7CiAKICAgICAvLyBXaGVuIGNsZWFyaW5n
IGEgZnJhbWVidWZmZXIgb24gSW50ZWwgb3IgQU1EIGRyaXZlcnMsIHdoZW4gR0xfRlJBTUVCVUZG
RVJfU1JHQiBpcyBlbmFibGVkLCB0aGUKICAgICAvLyBkcml2ZXIgY2xlYXJzIHRvIHRoZSBsaW5l
YXJpemVkIGNsZWFyIGNvbG9yIGRlc3BpdGUgdGhlIGZyYW1lYnVmZmVyIG5vdCBzdXBwb3J0aW5n
IFNSR0IKICAgICAvLyBibGVuZGluZy4gIEl0IG9ubHkgc2VlbXMgdG8gZG8gdGhpcyB3aGVuIHRo
ZSBmcmFtZWJ1ZmZlciBoYXMgb25seSBsaW5lYXIgYXR0YWNobWVudHMsIG1peGVkCiAgICAgLy8g
YXR0YWNobWVudHMgYXBwZWFyIHRvIGdldCB0aGUgY29ycmVjdCBjbGVhciBjb2xvci4KLSAgICBi
b29sIGRvZXNTUkdCQ2xlYXJzT25MaW5lYXJGcmFtZWJ1ZmZlckF0dGFjaG1lbnRzOworICAgIGJv
b2wgZG9lc1NSR0JDbGVhcnNPbkxpbmVhckZyYW1lYnVmZmVyQXR0YWNobWVudHMgPSBmYWxzZTsK
IAogICAgIC8vIE9uIE1hYyBzb21lIEdMU0wgY29uc3RydWN0cyBpbnZvbHZpbmcgZG8td2hpbGUg
bG9vcHMgY2F1c2UgR1BVIGhhbmdzLCBzdWNoIGFzIHRoZSBmb2xsb3dpbmc6CiAgICAgLy8gIGlu
dCBpID0gMTsKQEAgLTU2LDM0ICs0MSwzNCBAQCBzdHJ1Y3QgV29ya2Fyb3VuZHNHTAogICAgIC8v
ICAgICAgY29udGludWU7CiAgICAgLy8gIH0gd2hpbGUgKGkgPiAwKQogICAgIC8vIFdvcmsgYXJv
dW5kIHRoaXMgYnkgcmV3cml0aW5nIHRoZSBkby13aGlsZSB0byB1c2UgYW5vdGhlciBHTFNMIGNv
bnN0cnVjdCAoYmxvY2sgKyB3aGlsZSkKLSAgICBib29sIGRvV2hpbGVHTFNMQ2F1c2VzR1BVSGFu
ZzsKKyAgICBib29sIGRvV2hpbGVHTFNMQ2F1c2VzR1BVSGFuZyA9IGZhbHNlOwogCiAgICAgLy8g
Q2FsbGluZyBnbEZpbmlzaCBkb2Vzbid0IGNhdXNlIGFsbCBxdWVyaWVzIHRvIHJlcG9ydCB0aGF0
IHRoZSByZXN1bHQgaXMgYXZhaWxhYmxlIG9uIHNvbWUKICAgICAvLyAoTlZJRElBKSBkcml2ZXJz
LiAgSXQgd2FzIGZvdW5kIHRoYXQgZW5hYmxpbmcgR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VT
IGJlZm9yZSB0aGUgZmluaXNoCiAgICAgLy8gY2F1c2VzIGl0IHRvIGZ1bGx5IGZpbmlzaC4KLSAg
ICBib29sIGZpbmlzaERvZXNOb3RDYXVzZVF1ZXJpZXNUb0JlQXZhaWxhYmxlOworICAgIGJvb2wg
ZmluaXNoRG9lc05vdENhdXNlUXVlcmllc1RvQmVBdmFpbGFibGUgPSBmYWxzZTsKIAogICAgIC8v
IEFsd2F5cyBjYWxsIHVzZVByb2dyYW0gYWZ0ZXIgYSBzdWNjZXNzZnVsIGxpbmsgdG8gYXZvaWQg
YSBkcml2ZXIgYnVnLgogICAgIC8vIFRoaXMgd29ya2Fyb3VuZCBpcyBtZWFudCB0byByZXByb2R1
Y2UgdGhlIHVzZV9jdXJyZW50X3Byb2dyYW1fYWZ0ZXJfc3VjY2Vzc2Z1bF9saW5rCiAgICAgLy8g
d29ya2Fyb3VuZCBpbiBDaHJvbWl1bSAoaHR0cDovL2NyYnVnLmNvbS8xMTAyNjMpLiBJdCBoYXMg
YmVlbiBzaG93biB0aGF0IHRoaXMgd29ya2Fyb3VuZCBpcwogICAgIC8vIG5vdCBuZWNlc3Nhcnkg
Zm9yIE1hY09TWCAxMC45IGFuZCBoaWdoZXIgKGh0dHA6Ly9jcnJldi5jb20vMzllYjUzNWIpLgot
ICAgIGJvb2wgYWx3YXlzQ2FsbFVzZVByb2dyYW1BZnRlckxpbms7CisgICAgYm9vbCBhbHdheXND
YWxsVXNlUHJvZ3JhbUFmdGVyTGluayA9IGZhbHNlOwogCiAgICAgLy8gSW4gdGhlIGNhc2Ugb2Yg
dW5wYWNraW5nIGZyb20gYSBwaXhlbCB1bnBhY2sgYnVmZmVyLCB1bnBhY2sgb3ZlcmxhcHBpbmcg
cm93cyByb3cgYnkgcm93LgotICAgIGJvb2wgdW5wYWNrT3ZlcmxhcHBpbmdSb3dzU2VwYXJhdGVs
eVVucGFja0J1ZmZlcjsKKyAgICBib29sIHVucGFja092ZXJsYXBwaW5nUm93c1NlcGFyYXRlbHlV
bnBhY2tCdWZmZXIgPSBmYWxzZTsKICAgICAvLyBJbiB0aGUgY2FzZSBvZiBwYWNraW5nIHRvIGEg
cGl4ZWwgcGFjayBidWZmZXIsIHBhY2sgb3ZlcmxhcHBpbmcgcm93cyByb3cgYnkgcm93LgotICAg
IGJvb2wgcGFja092ZXJsYXBwaW5nUm93c1NlcGFyYXRlbHlQYWNrQnVmZmVyOworICAgIGJvb2wg
cGFja092ZXJsYXBwaW5nUm93c1NlcGFyYXRlbHlQYWNrQnVmZmVyID0gZmFsc2U7CiAKICAgICAv
LyBEdXJpbmcgaW5pdGlhbGl6YXRpb24sIGFzc2lnbiB0aGUgY3VycmVudCB2ZXJ0ZXggYXR0cmli
dXRlcyB0byB0aGUgc3BlYy1tYW5kYXRlZCBkZWZhdWx0cy4KLSAgICBib29sIGluaXRpYWxpemVD
dXJyZW50VmVydGV4QXR0cmlidXRlczsKKyAgICBib29sIGluaXRpYWxpemVDdXJyZW50VmVydGV4
QXR0cmlidXRlcyA9IGZhbHNlOwogCiAgICAgLy8gYWJzKGkpIHdoZXJlIGkgaXMgYW4gaW50ZWdl
ciByZXR1cm5zIHVuZXhwZWN0ZWQgcmVzdWx0IG9uIEludGVsIE1hYy4KICAgICAvLyBFbXVsYXRl
IGFicyhpKSB3aXRoIGkgKiBzaWduKGkpLgotICAgIGJvb2wgZW11bGF0ZUFic0ludEZ1bmN0aW9u
OworICAgIGJvb2wgZW11bGF0ZUFic0ludEZ1bmN0aW9uID0gZmFsc2U7CiAKICAgICAvLyBPbiBJ
bnRlbCBNYWMsIGNhbGN1bGF0aW9uIG9mIGxvb3AgY29uZGl0aW9ucyBpbiBmb3IgYW5kIHdoaWxl
IGxvb3AgaGFzIGJ1Zy4KICAgICAvLyBBZGQgIiYmIHRydWUiIHRvIHRoZSBlbmQgb2YgdGhlIGNv
bmRpdGlvbiBleHByZXNzaW9uIHRvIHdvcmsgYXJvdW5kIHRoZSBidWcuCi0gICAgYm9vbCBhZGRB
bmRUcnVlVG9Mb29wQ29uZGl0aW9uOworICAgIGJvb2wgYWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlv
biA9IGZhbHNlOwogCiAgICAgLy8gV2hlbiB1cGxvYWRpbmcgdGV4dHVyZXMgZnJvbSBhbiB1bnBh
Y2sgYnVmZmVyLCBzb21lIGRyaXZlcnMgY291bnQgYW4gZXh0cmEgcm93IHBhZGRpbmcgd2hlbgog
ICAgIC8vIGNoZWNraW5nIGlmIHRoZSBwaXhlbCB1bnBhY2sgYnVmZmVyIGlzIGJpZyBlbm91Z2gu
IFRyYWNraW5nIGJ1ZzogaHR0cDovL2FuZ2xlYnVnLmNvbS8xNTEyCkBAIC05NywyMSArODIsNDkg
QEAgc3RydWN0IFdvcmthcm91bmRzR0wKICAgICAvLyAgICAgKy0tLS0tLS1BLS1CCiAgICAgLy8g
VGhlIGxhc3QgcGl4ZWwgcmVhZCB3aWxsIGJlIEEsIGJ1dCB0aGUgZHJpdmVyIHdpbGwgdGhpbmsg
aXQgaXMgQiwgY2F1c2luZyBpdCB0byBnZW5lcmF0ZSBhbgogICAgIC8vIGVycm9yIHdoZW4gdGhl
IHBpeGVsIGJ1ZmZlciBpcyBqdXN0IGJpZyBlbm91Z2guCi0gICAgYm9vbCB1bnBhY2tMYXN0Um93
U2VwYXJhdGVseUZvclBhZGRpbmdJbmNsdXNpb247CisgICAgYm9vbCB1bnBhY2tMYXN0Um93U2Vw
YXJhdGVseUZvclBhZGRpbmdJbmNsdXNpb24gPSBmYWxzZTsKIAogICAgIC8vIEVxdWl2YWxlbnQg
d29ya2Fyb3VuZCB3aGVuIHVwbG9hZGluZyBkYXRhIGZyb20gYSBwaXhlbCBwYWNrIGJ1ZmZlci4K
LSAgICBib29sIHBhY2tMYXN0Um93U2VwYXJhdGVseUZvclBhZGRpbmdJbmNsdXNpb247CisgICAg
Ym9vbCBwYWNrTGFzdFJvd1NlcGFyYXRlbHlGb3JQYWRkaW5nSW5jbHVzaW9uID0gZmFsc2U7CiAK
ICAgICAvLyBPbiBzb21lIEludGVsIGRyaXZlcnMsIHVzaW5nIGlzbmFuKCkgb24gaGlnaHAgZmxv
YXQgd2lsbCBnZXQgd3JvbmcgYW5zd2VyLiBUbyB3b3JrIGFyb3VuZAogICAgIC8vIHRoaXMgYnVn
LCB3ZSB1c2UgYW4gZXhwcmVzc2lvbiB0byBlbXVsYXRlIGZ1bmN0aW9uIGlzbmFuKCkuCiAgICAg
Ly8gVHJhY2tpbmcgYnVnOiBodHRwOi8vY3JidWcuY29tLzY1MDU0NwotICAgIGJvb2wgZW11bGF0
ZUlzbmFuRmxvYXQ7CisgICAgYm9vbCBlbXVsYXRlSXNuYW5GbG9hdCA9IGZhbHNlOwogCiAgICAg
Ly8gT24gTWFjIHdpdGggT3BlbkdMIHZlcnNpb24gNC4xLCB1bnVzZWQgc3RkMTQwIG9yIHNoYXJl
ZCB1bmlmb3JtIGJsb2NrcyB3aWxsIGJlCiAgICAgLy8gdHJlYXRlZCBhcyBpbmFjdGl2ZSB3aGlj
aCBpcyBub3QgY29uc2lzdGVudCB3aXRoIFdlYkdMMi4wIHNwZWMuIFJlZmVyZW5jZSBhbGwgbWVt
YmVycyBpbiBhCiAgICAgLy8gdW51c2VkIHN0ZDE0MCBvciBzaGFyZWQgdW5pZm9ybSBibG9jayBh
dCB0aGUgYmVnaW5uaW5nIG9mIG1haW4gdG8gd29yayBhcm91bmQgaXQuCi0gICAgYm9vbCB1c2VV
bnVzZWRCbG9ja3NXaXRoU3RhbmRhcmRPclNoYXJlZExheW91dDsKKyAgICBib29sIHVzZVVudXNl
ZEJsb2Nrc1dpdGhTdGFuZGFyZE9yU2hhcmVkTGF5b3V0ID0gZmFsc2U7CisKKyAgICAvLyBUaGlz
IGZsYWcgd2lsbCBrZWVwIGludmFyaWFudCBkZWNsYXJhdGlvbiBmb3IgaW5wdXQgaW4gZnJhZ21l
bnQgc2hhZGVyIGZvciBHTFNMID49NC4yMAorICAgIC8vIG9uIEFNRC4KKyAgICBib29sIGRvbnRS
ZW1vdmVJbnZhcmlhbnRGb3JGcmFnbWVudElucHV0ID0gZmFsc2U7CisKKyAgICAvLyBUaGlzIGZs
YWcgaXMgdXNlZCB0byBmaXggc3BlYyBkaWZmZXJlbmNlIGJldHdlZW4gR0xTTCA0LjEgb3IgbG93
ZXIgYW5kIEVTU0wzLgorICAgIGJvb2wgcmVtb3ZlSW52YXJpYW50QW5kQ2VudHJvaWRGb3JFU1NM
MyA9IGZhbHNlOworCisgICAgLy8gT24gSW50ZWwgTWFjIE9TWCAxMC4xMSBkcml2ZXIsIHVzaW5n
ICItZmxvYXQiIHdpbGwgZ2V0IHdyb25nIGFuc3dlci4gVXNlICIwLjAgLSBmbG9hdCIgdG8KKyAg
ICAvLyByZXBsYWNlICItZmxvYXQiLgorICAgIC8vIFRyYWNraW5nIGJ1ZzogaHR0cDovL2NyYnVn
LmNvbS8zMDgzNjYKKyAgICBib29sIHJld3JpdGVGbG9hdFVuYXJ5TWludXNPcGVyYXRvciA9IGZh
bHNlOworCisgICAgLy8gT24gTlZJRElBIGRyaXZlcnMsIGF0YW4oeSwgeCkgbWF5IHJldHVybiBh
IHdyb25nIGFuc3dlci4KKyAgICAvLyBUcmFja2luZyBidWc6IGh0dHA6Ly9jcmJ1Zy5jb20vNjcy
MzgwCisgICAgYm9vbCBlbXVsYXRlQXRhbjJGbG9hdCA9IGZhbHNlOworCisgICAgLy8gU29tZSBk
cml2ZXJzIHNlZW0gdG8gZm9yZ2V0IGFib3V0IFVCTyBiaW5kaW5ncyB3aGVuIGxvYWRpbmcgcHJv
Z3JhbSBiaW5hcmllcy4gV29yayBhcm91bmQKKyAgICAvLyB0aGlzIGJ5IHJlLWFwcGx5aW5nIHRo
ZSBiaW5kaW5ncyBhZnRlciB0aGUgcHJvZ3JhbSBiaW5hcnkgaXMgbG9hZGVkLgorICAgIC8vIFRo
aXMgb25seSBzZWVtcyB0byBhZmZlY3QgQU1EIE9wZW5HTCBkcml2ZXJzLCBhbmQgc29tZSBBbmRy
b2lkIGRldmljZXMuCisgICAgLy8gaHR0cDovL2FuZ2xlYnVnLmNvbS8xNjM3CisgICAgYm9vbCBy
ZWFwcGx5VUJPQmluZGluZ3NBZnRlckxvYWRpbmdCaW5hcnlQcm9ncmFtID0gZmFsc2U7CisKKyAg
ICAvLyBTb21lIE9wZW5HTCBkcml2ZXJzIHJldHVybiAwIHdoZW4gd2UgcXVlcnkgTUFYX1ZFUlRF
WF9BVFRSSUJfU1RSSURFIGluIGFuIE9wZW5HTCA0LjQgb3IKKyAgICAvLyBoaWdoZXIgY29udGV4
dC4KKyAgICAvLyBUaGlzIG9ubHkgc2VlbXMgdG8gYWZmZWN0IEFNRCBPcGVuR0wgZHJpdmVycy4K
KyAgICAvLyBUcmFja2luZyBidWc6IGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTkzNgorICAgIGJvb2wg
ZW11bGF0ZU1heFZlcnRleEF0dHJpYlN0cmlkZSA9IGZhbHNlOwogfTsKLX0KK30gIC8vIG5hbWVz
cGFjZSByeAogCiAjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX0dMX1dPUktBUk9VTkRTR0xf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9jZ2wvRGlzcGxheUNHTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLmgKaW5kZXggMGJhNTdiNjJiY2QuLjQw
NzgzN2FkOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wuaApAQCAtMjAsMjUg
KzIwLDIyIEBAIG5hbWVzcGFjZSByeAogY2xhc3MgRGlzcGxheUNHTCA6IHB1YmxpYyBEaXNwbGF5
R0wKIHsKICAgcHVibGljOgotICAgIERpc3BsYXlDR0woKTsKKyAgICBEaXNwbGF5Q0dMKGNvbnN0
IGVnbDo6RGlzcGxheVN0YXRlICZzdGF0ZSk7CiAgICAgfkRpc3BsYXlDR0woKSBvdmVycmlkZTsK
IAogICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpIG92ZXJy
aWRlOwogICAgIHZvaWQgdGVybWluYXRlKCkgb3ZlcnJpZGU7CiAKICAgICBTdXJmYWNlSW1wbCAq
Y3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZp
Z3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZl
V2luZG93VHlwZSB3aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwogICAgIFN1cmZhY2VJ
bXBsICpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmln
ICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAgICAgU3VyZmFjZUlt
cGwgKmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRl
ICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xD
bGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJp
ZGU7CiAgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBpeG1hcFN1cmZhY2UoY29uc3QgZWdsOjpTdXJm
YWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0aXZlUGl4bWFwLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJz
KSBvdmVycmlkZTsKIApAQCAtNTgsMTAgKzU1LDkgQEAgY2xhc3MgRGlzcGxheUNHTCA6IHB1Ymxp
YyBEaXNwbGF5R0wKICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpkcmF3
U3VyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsOjpTdXJmYWNlICpyZWFkU3Vy
ZmFjZSkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBlZ2w6OkVycm9yIGdldERyaXZlclZlcnNpb24o
c3RkOjpzdHJpbmcgKnZlcnNpb24pIGNvbnN0IG92ZXJyaWRlOwotCiAgIHByaXZhdGU6CiAgICAg
Y29uc3QgRnVuY3Rpb25zR0wgKmdldEZ1bmN0aW9uc0dMKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAg
ZWdsOjpFcnJvciBtYWtlQ3VycmVudFN1cmZhY2VsZXNzKGdsOjpDb250ZXh0ICpjb250ZXh0KSBv
dmVycmlkZTsKIAogICAgIHZvaWQgZ2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVu
c2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgZ2VuZXJhdGVD
YXBzKGVnbDo6Q2FwcyAqb3V0Q2FwcykgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlD
R0wubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
Y2dsL0Rpc3BsYXlDR0wubW0KaW5kZXggYjlkNWYzOWIwYzIuLjhjNzUxMDEwYzUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2ds
L0Rpc3BsYXlDR0wubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLm1tCkBAIC00NCw3ICs0NCw4IEBAIGNsYXNzIEZ1
bmN0aW9uc0dMQ0dMIDogcHVibGljIEZ1bmN0aW9uc0dMCiAgICAgdm9pZCAqbUR5bGliSGFuZGxl
OwogfTsKIAotRGlzcGxheUNHTDo6RGlzcGxheUNHTCgpIDogRGlzcGxheUdMKCksIG1FR0xEaXNw
bGF5KG51bGxwdHIpLCBtRnVuY3Rpb25zKG51bGxwdHIpLCBtQ29udGV4dChudWxscHRyKQorRGlz
cGxheUNHTDo6RGlzcGxheUNHTChjb25zdCBlZ2w6OkRpc3BsYXlTdGF0ZSAmc3RhdGUpCisgICAg
OiBEaXNwbGF5R0woc3RhdGUpLCBtRUdMRGlzcGxheShudWxscHRyKSwgbUZ1bmN0aW9ucyhudWxs
cHRyKSwgbUNvbnRleHQobnVsbHB0cikKIHsKIH0KIApAQCAtMTEwLDcgKzExMSw2IEBAIHZvaWQg
RGlzcGxheUNHTDo6dGVybWluYXRlKCkKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlDR0w6OmNy
ZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcg
KmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQog
ewpAQCAtMTE4LDcgKzExOCw2IEBAIFN1cmZhY2VJbXBsICpEaXNwbGF5Q0dMOjpjcmVhdGVXaW5k
b3dTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKIH0KIAogU3VyZmFjZUlt
cGwgKkRpc3BsYXlDR0w6OmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0
YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmli
cykKIHsKICAgICBFR0xpbnQgd2lkdGggID0gc3RhdGljX2Nhc3Q8RUdMaW50PihhdHRyaWJzLmdl
dChFR0xfV0lEVEgsIDApKTsKQEAgLTEyNyw4ICsxMjYsOCBAQCBTdXJmYWNlSW1wbCAqRGlzcGxh
eUNHTDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRl
LAogfQogCiBTdXJmYWNlSW1wbCAqRGlzcGxheUNHTDo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRC
dWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpj
b25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMQ2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0
cmlicykKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CkBAIC0xMzYsNyArMTM1LDYgQEAgU3VyZmFj
ZUltcGwgKkRpc3BsYXlDR0w6OmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVn
bDo6U3VyZmFjZVN0YXRlICYKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlDR0w6OmNyZWF0ZVBp
eG1hcFN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZp
Z3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
YXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewpA
QCAtMjEwLDYgKzIwOCw4IEBAIGVnbDo6Q29uZmlnU2V0IERpc3BsYXlDR0w6OmdlbmVyYXRlQ29u
ZmlncygpCiAKICAgICBjb25maWcubWF0Y2hOYXRpdmVQaXhtYXAgPSBFR0xfTk9ORTsKIAorICAg
IGNvbmZpZy5jb2xvckNvbXBvbmVudFR5cGUgPSBFR0xfQ09MT1JfQ09NUE9ORU5UX1RZUEVfRklY
RURfRVhUOworCiAgICAgY29uZmlncy5hZGQoY29uZmlnKTsKICAgICByZXR1cm4gY29uZmlnczsK
IH0KQEAgLTIyOCw4ICsyMjgsOCBAQCBlZ2w6OkVycm9yIERpc3BsYXlDR0w6OnJlc3RvcmVMb3N0
RGV2aWNlKCkKIAogYm9vbCBEaXNwbGF5Q0dMOjppc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2
ZVdpbmRvd1R5cGUgd2luZG93KSBjb25zdAogewotICAgIC8vIFRPRE8oY3dhbGxleikgaW52ZXN0
aWdhdGUgaW1wbGVtZW50aW5nIHRoaXMKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBOU09iamVjdCAq
bGF5ZXIgPSByZWludGVycHJldF9jYXN0PE5TT2JqZWN0ICo+KHdpbmRvdyk7CisgICAgcmV0dXJu
IFtsYXllciBpc0tpbmRPZkNsYXNzOltDQUxheWVyIGNsYXNzXV07CiB9CiAKIHN0ZDo6c3RyaW5n
IERpc3BsYXlDR0w6OmdldFZlbmRvclN0cmluZygpIGNvbnN0CkBAIC0yNDUsNiArMjQ1LDEwIEBA
IGNvbnN0IEZ1bmN0aW9uc0dMICpEaXNwbGF5Q0dMOjpnZXRGdW5jdGlvbnNHTCgpIGNvbnN0CiAK
IHZvaWQgRGlzcGxheUNHTDo6Z2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lv
bnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0CiB7CisgICAgb3V0RXh0ZW5zaW9ucy0+c3VyZmFjZWxl
c3NDb250ZXh0ID0gdHJ1ZTsKKworICAgIC8vIENvbnRleHRzIGFyZSB2aXJ0dWFsaXplZCBzbyB0
ZXh0dXJlcyBjYW4gYmUgc2hhcmVkIGdsb2JhbGx5CisgICAgb3V0RXh0ZW5zaW9ucy0+ZGlzcGxh
eVRleHR1cmVTaGFyZUdyb3VwID0gdHJ1ZTsKIH0KIAogdm9pZCBEaXNwbGF5Q0dMOjpnZW5lcmF0
ZUNhcHMoZWdsOjpDYXBzICpvdXRDYXBzKSBjb25zdApAQCAtMjY2LDkgKzI3MCwxMCBAQCBlZ2w6
OkVycm9yIERpc3BsYXlDR0w6OndhaXROYXRpdmUoRUdMaW50IGVuZ2luZSwKICAgICByZXR1cm4g
ZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKLWVnbDo6RXJyb3IgRGlzcGxheUNHTDo6Z2V0
RHJpdmVyVmVyc2lvbihzdGQ6OnN0cmluZyAqdmVyc2lvbikgY29uc3QKK2VnbDo6RXJyb3IgRGlz
cGxheUNHTDo6bWFrZUN1cnJlbnRTdXJmYWNlbGVzcyhnbDo6Q29udGV4dCAqY29udGV4dCkKIHsK
LSAgICAqdmVyc2lvbiA9ICIiOwotICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsK
KyAgICAvLyBXZSBoYXZlIG5vdGhpbmcgdG8gZG8gYXMgbUNvbnRleHQgaXMgYWx3YXlzIGN1cnJl
bnQsIGFuZCB0aGF0IENHTCBpcyBzdXJmYWNlbGVzcyBieQorICAgIC8vIGRlZmF1bHQuCisgICAg
cmV0dXJuIGVnbDo6Tm9FcnJvcigpOwogfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFjZUNHTC5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9Q
YnVmZmVyU3VyZmFjZUNHTC5oCmluZGV4IDdjYmI3NGRhNGMzLi5mMmM2MGRkZmI1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Nn
bC9QYnVmZmVyU3VyZmFjZUNHTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1cmZhY2VDR0wuaApAQCAtMjksMTAgKzI5
LDEwIEBAIGNsYXNzIFBidWZmZXJTdXJmYWNlQ0dMIDogcHVibGljIFN1cmZhY2VHTAogICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMpOwogICAgIH5QYnVm
ZmVyU3VyZmFjZUNHTCgpIG92ZXJyaWRlOwogCi0gICAgZWdsOjpFcnJvciBpbml0aWFsaXplKCkg
b3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBpbml0aWFsaXplKGNvbnN0IERpc3BsYXlJbXBsICpk
aXNwbGF5SW1wbCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciBtYWtlQ3VycmVudCgpIG92ZXJy
aWRlOwogCi0gICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBz
d2FwKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpF
cnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xp
bnQgaGVpZ2h0KSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHF1ZXJ5U3VyZmFjZVBvaW50ZXJB
TkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJyaWRlOwogICAgIGVnbDo6
RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVyKSBv
dmVycmlkZTsKQEAgLTYwLDYgKzYwLDYgQEAgY2xhc3MgUGJ1ZmZlclN1cmZhY2VDR0wgOiBwdWJs
aWMgU3VyZmFjZUdMCiAgICAgR0x1aW50IG1EU1JlbmRlcmJ1ZmZlcjsKIH07CiAKLX0KK30gIC8v
IG5hbWVzcGFjZSByeAogCiAjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfR0xfQ0dMX1BCVUZG
RVJTVVJGQUNFQ0dMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1BidWZmZXJTdXJmYWNlQ0dMLm1tIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFj
ZUNHTC5tbQppbmRleCBjMDNkMzgzNmY4NS4uNGMzZDE3Mjc5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvUGJ1ZmZlclN1
cmZhY2VDR0wubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFjZUNHTC5tbQpAQCAtNTUsNyArNTUsNyBAQCBQYnVm
ZmVyU3VyZmFjZUNHTDo6flBidWZmZXJTdXJmYWNlQ0dMKCkKICAgICB9CiB9CiAKLWVnbDo6RXJy
b3IgUGJ1ZmZlclN1cmZhY2VDR0w6OmluaXRpYWxpemUoKQorZWdsOjpFcnJvciBQYnVmZmVyU3Vy
ZmFjZUNHTDo6aW5pdGlhbGl6ZShjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUltcGwpCiB7CiAg
ICAgbUZ1bmN0aW9ucy0+Z2VuUmVuZGVyYnVmZmVycygxLCAmbUNvbG9yUmVuZGVyYnVmZmVyKTsK
ICAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbUNv
bG9yUmVuZGVyYnVmZmVyKTsKQEAgLTgwLDcgKzgwLDcgQEAgZWdsOjpFcnJvciBQYnVmZmVyU3Vy
ZmFjZUNHTDo6bWFrZUN1cnJlbnQoKQogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNT
KTsKIH0KIAotZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUNHTDo6c3dhcCgpCitlZ2w6OkVycm9y
IFBidWZmZXJTdXJmYWNlQ0dMOjpzd2FwKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkK
IHsKICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CkBAIC0xNDAsNCArMTQw
LDQgQEAgRnJhbWVidWZmZXJJbXBsICpQYnVmZmVyU3VyZmFjZUNHTDo6Y3JlYXRlRGVmYXVsdEZy
YW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmYKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbVJlbmRlcmVyLT5nZXRCbGl0dGVyKCksIG1TdGF0ZU1hbmFnZXIpOwogfQogCi19Cit9ICAv
LyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvV2luZG93U3VyZmFjZUNHTC5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dM
LmgKaW5kZXggMTAzMGM0NGE0MDMuLjQ0YTViZjc5NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VD
R0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wuaApAQCAtMTcsNyArMTcsNyBAQCB0eXBlZGVmIF9DR0xD
b250ZXh0T2JqZWN0ICpDR0xDb250ZXh0T2JqOwogc3RydWN0IF9fSU9TdXJmYWNlOwogdHlwZWRl
ZiBfX0lPU3VyZmFjZSAqSU9TdXJmYWNlUmVmOwogCi1AY2xhc3MgV2ViU3dhcExheWVyOworQGNs
YXNzIFN3YXBMYXllcjsKIAogbmFtZXNwYWNlIHJ4CiB7CkBAIC01NiwxNSArNTYsMTUgQEAgY2xh
c3MgV2luZG93U3VyZmFjZUNHTCA6IHB1YmxpYyBTdXJmYWNlR0wKICAgcHVibGljOgogICAgIFdp
bmRvd1N1cmZhY2VDR0woY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAogICAgICAgICAg
ICAgICAgICAgICAgUmVuZGVyZXJHTCAqcmVuZGVyZXIsCi0gICAgICAgICAgICAgICAgICAgICBD
QUxheWVyICpsYXllciwKKyAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUg
bGF5ZXIsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25z
LAogICAgICAgICAgICAgICAgICAgICAgQ0dMQ29udGV4dE9iaiBjb250ZXh0KTsKICAgICB+V2lu
ZG93U3VyZmFjZUNHTCgpIG92ZXJyaWRlOwogCi0gICAgZWdsOjpFcnJvciBpbml0aWFsaXplKCkg
b3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBpbml0aWFsaXplKGNvbnN0IERpc3BsYXlJbXBsICpk
aXNwbGF5SW1wbCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciBtYWtlQ3VycmVudCgpIG92ZXJy
aWRlOwogCi0gICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBz
d2FwKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpF
cnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xp
bnQgaGVpZ2h0KSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHF1ZXJ5U3VyZmFjZVBvaW50ZXJB
TkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJyaWRlOwogICAgIGVnbDo6
RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVyKSBv
dmVycmlkZTsKQEAgLTgwLDcgKzgwLDcgQEAgY2xhc3MgV2luZG93U3VyZmFjZUNHTCA6IHB1Ymxp
YyBTdXJmYWNlR0wKICAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZl
cihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpIG92ZXJyaWRlOwogCiAgIHByaXZh
dGU6Ci0gICAgV2ViU3dhcExheWVyICptU3dhcExheWVyOworICAgIFN3YXBMYXllciAqbVN3YXBM
YXllcjsKICAgICBTaGFyZWRTd2FwU3RhdGUgbVN3YXBTdGF0ZTsKICAgICB1aW50NjRfdCBtQ3Vy
cmVudFN3YXBJZDsKIApAQCAtOTUsNiArOTUsNiBAQCBjbGFzcyBXaW5kb3dTdXJmYWNlQ0dMIDog
cHVibGljIFN1cmZhY2VHTAogICAgIEdMdWludCBtRFNSZW5kZXJidWZmZXI7CiB9OwogCi19Cit9
ICAvLyBuYW1lc3BhY2UgcngKIAogI2VuZGlmIC8vIExJQkFOR0xFX1JFTkRFUkVSX0dMX0NHTF9X
SU5ET1dTVVJGQUNFQ0dMX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZhY2VDR0wubW0gYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1cmZh
Y2VDR0wubW0KaW5kZXggODA2MDA5ZWFhODIuLmVhODc5MTk4M2Y5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvY2dsL1dpbmRvd1N1
cmZhY2VDR0wubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dMLm1tCkBAIC0xOCw3ICsxOCw3IEBACiAjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmgiCiAKLUBpbnRlcmZhY2UgV2ViU3dhcExh
eWVyIDogQ0FPcGVuR0xMYXllcgorQGludGVyZmFjZSBTd2FwTGF5ZXIgOiBDQU9wZW5HTExheWVy
CiB7CiAgICAgQ0dMQ29udGV4dE9iaiBtRGlzcGxheUNvbnRleHQ7CiAKQEAgLTMzLDcgKzMzLDcg
QEAKICAgICAgICAgICAgIHdpdGhGdW5jdGlvbnM6KGNvbnN0IHJ4OjpGdW5jdGlvbnNHTCAqKWZ1
bmN0aW9uczsKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdlYlN3YXBMYXllcgorQGltcGxlbWVu
dGF0aW9uIFN3YXBMYXllcgogLSAoaWQpaW5pdFdpdGhTaGFyZWRTdGF0ZToocng6OlNoYXJlZFN3
YXBTdGF0ZSAqKXN3YXBTdGF0ZQogICAgICAgICAgICAgICB3aXRoQ29udGV4dDooQ0dMQ29udGV4
dE9iailkaXNwbGF5Q29udGV4dAogICAgICAgICAgICAgd2l0aEZ1bmN0aW9uczooY29uc3Qgcng6
OkZ1bmN0aW9uc0dMICopZnVuY3Rpb25zCkBAIC0xNDQsMTMgKzE0NCwxMyBAQAogCiAgICAgV2lu
ZG93U3VyZmFjZUNHTDo6V2luZG93U3VyZmFjZUNHTChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAm
c3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJlckdM
ICpyZW5kZXJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENBTGF5
ZXIgKmxheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0
aXZlV2luZG93VHlwZSBsYXllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDR0xDb250ZXh0T2JqIGNvbnRleHQpCiAgICAgICAgIDogU3VyZmFj
ZUdMKHN0YXRlLCByZW5kZXJlciksCiAgICAgICAgICAgbVN3YXBMYXllcihuaWwpLAogICAgICAg
ICAgIG1DdXJyZW50U3dhcElkKDApLAotICAgICAgICAgIG1MYXllcihsYXllciksCisgICAgICAg
ICAgbUxheWVyKHJlaW50ZXJwcmV0X2Nhc3Q8Q0FMYXllciAqPihsYXllcikpLAogICAgICAgICAg
IG1Db250ZXh0KGNvbnRleHQpLAogICAgICAgICAgIG1GdW5jdGlvbnMoZnVuY3Rpb25zKSwKICAg
ICAgICAgICBtU3RhdGVNYW5hZ2VyKHJlbmRlcmVyLT5nZXRTdGF0ZU1hbmFnZXIoKSksCkBAIC0x
OTQsNyArMTk0LDcgQEAgV2luZG93U3VyZmFjZUNHTDo6fldpbmRvd1N1cmZhY2VDR0woKQogICAg
IH0KIH0KIAotZWdsOjpFcnJvciBXaW5kb3dTdXJmYWNlQ0dMOjppbml0aWFsaXplKCkKK2VnbDo6
RXJyb3IgV2luZG93U3VyZmFjZUNHTDo6aW5pdGlhbGl6ZShjb25zdCBEaXNwbGF5SW1wbCAqZGlz
cGxheUltcGwpCiB7CiAgICAgdW5zaWduZWQgd2lkdGggID0gZ2V0V2lkdGgoKTsKICAgICB1bnNp
Z25lZCBoZWlnaHQgPSBnZXRIZWlnaHQoKTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBlZ2w6OkVycm9y
IFdpbmRvd1N1cmZhY2VDR0w6OmluaXRpYWxpemUoKQogICAgIG1Td2FwU3RhdGUubGFzdFJlbmRl
cmVkICAgPSAmbVN3YXBTdGF0ZS50ZXh0dXJlc1sxXTsKICAgICBtU3dhcFN0YXRlLmJlaW5nUHJl
c2VudGVkID0gJm1Td2FwU3RhdGUudGV4dHVyZXNbMl07CiAKLSAgICBtU3dhcExheWVyID0gW1tX
ZWJTd2FwTGF5ZXIgYWxsb2NdIGluaXRXaXRoU2hhcmVkU3RhdGU6Jm1Td2FwU3RhdGUKKyAgICBt
U3dhcExheWVyID0gW1tTd2FwTGF5ZXIgYWxsb2NdIGluaXRXaXRoU2hhcmVkU3RhdGU6Jm1Td2Fw
U3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aENv
bnRleHQ6bUNvbnRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdpdGhGdW5jdGlvbnM6bUZ1bmN0aW9uc107CiAgICAgW21MYXllciBhZGRTdWJsYXllcjptU3dh
cExheWVyXTsKQEAgLTIzNyw3ICsyMzcsNyBAQCBlZ2w6OkVycm9yIFdpbmRvd1N1cmZhY2VDR0w6
Om1ha2VDdXJyZW50KCkKICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAK
LWVnbDo6RXJyb3IgV2luZG93U3VyZmFjZUNHTDo6c3dhcCgpCitlZ2w6OkVycm9yIFdpbmRvd1N1
cmZhY2VDR0w6OnN3YXAoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKQogewogICAgIG1G
dW5jdGlvbnMtPmZsdXNoKCk7CiAgICAgbVN3YXBTdGF0ZS5iZWluZ1JlbmRlcmVkLT5zd2FwSWQg
PSArK21DdXJyZW50U3dhcElkOwpAQCAtMzI5LDQgKzMyOSw0IEBAIEZyYW1lYnVmZmVySW1wbCAq
V2luZG93U3VyZmFjZUNHTDo6Y3JlYXRlRGVmYXVsdEZyYW1lYnVmZmVyKGNvbnN0IGdsOjpGcmFt
ZWJ1ZmZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0ZU1hbmFnZXIpOwogfQog
Ci19Cit9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRGlzcGxheUVHTC5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Rpc3BsYXlFR0wu
Y3BwCmluZGV4IDk4OGIyMzNiNGY3Li5kNzIxNWQwYTk2MiAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9EaXNwbGF5RUdMLmNw
cAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
ZWdsL0Rpc3BsYXlFR0wuY3BwCkBAIC0xMyw4ICsxMyw4IEBAIG5hbWVzcGFjZSByeAogCiAjZGVm
aW5lIEVHTF9OT19DT05GSUcgKChFR0xDb25maWcpMCkKIAotRGlzcGxheUVHTDo6RGlzcGxheUVH
TCgpCi0gICAgOiBEaXNwbGF5R0woKSwKK0Rpc3BsYXlFR0w6OkRpc3BsYXlFR0woY29uc3QgZWds
OjpEaXNwbGF5U3RhdGUgJnN0YXRlKQorICAgIDogRGlzcGxheUdMKHN0YXRlKSwKICAgICAgIG1F
R0wobnVsbHB0ciksCiAgICAgICBtQ29uZmlnKEVHTF9OT19DT05GSUcpLAogICAgICAgbUNvbnRl
eHQoRUdMX05PX0NPTlRFWFQpLApAQCAtMTAyLDYgKzEwMiw5IEBAIHZvaWQgRGlzcGxheUVHTDo6
Z2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMp
IGNvbnN0CiAgICAgICAgIG1FR0wtPmhhc0V4dGVuc2lvbigiRUdMX0VYVF9jcmVhdGVfY29udGV4
dF9yb2J1c3RuZXNzIik7CiAKICAgICBvdXRFeHRlbnNpb25zLT5wb3N0U3ViQnVmZmVyID0gZmFs
c2U7ICAvLyBTaW5jZSBTdXJmYWNlRUdMOjpwb3N0U3ViQnVmZmVyIGlzIG5vdCBpbXBsZW1lbnRl
ZAorCisgICAgLy8gQ29udGV4dHMgYXJlIHZpcnR1YWxpemVkIHNvIHRleHR1cmVzIGNhbiBiZSBz
aGFyZWQgZ2xvYmFsbHkKKyAgICBvdXRFeHRlbnNpb25zLT5kaXNwbGF5VGV4dHVyZVNoYXJlR3Jv
dXAgPSB0cnVlOwogfQogCiB2b2lkIERpc3BsYXlFR0w6OmdlbmVyYXRlQ2FwcyhlZ2w6OkNhcHMg
Km91dENhcHMpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Rpc3BsYXlFR0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRGlzcGxheUVHTC5oCmluZGV4IGU0
OThjZDc5YTc3Li41NGY4YTVhOWM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9EaXNwbGF5RUdMLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9EaXNwbGF5RUdM
LmgKQEAgLTE4LDcgKzE4LDcgQEAgbmFtZXNwYWNlIHJ4CiBjbGFzcyBEaXNwbGF5RUdMIDogcHVi
bGljIERpc3BsYXlHTAogewogICBwdWJsaWM6Ci0gICAgRGlzcGxheUVHTCgpOworICAgIERpc3Bs
YXlFR0woY29uc3QgZWdsOjpEaXNwbGF5U3RhdGUgJnN0YXRlKTsKICAgICB+RGlzcGxheUVHTCgp
IG92ZXJyaWRlOwogCiAgICAgc3RkOjpzdHJpbmcgZ2V0VmVuZG9yU3RyaW5nKCkgY29uc3Qgb3Zl
cnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvZWdsL1BidWZmZXJTdXJmYWNlRUdMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvUGJ1ZmZlclN1cmZhY2VFR0wuY3Bw
CmluZGV4IDY4ZGE5ZjJiOGRlLi40ZGQ2MzcwMjhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9QYnVmZmVyU3VyZmFjZUVH
TC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2VnbC9QYnVmZmVyU3VyZmFjZUVHTC5jcHAKQEAgLTI1LDcgKzI1LDcgQEAgUGJ1ZmZlclN1
cmZhY2VFR0w6On5QYnVmZmVyU3VyZmFjZUVHTCgpCiB7CiB9CiAKLWVnbDo6RXJyb3IgUGJ1ZmZl
clN1cmZhY2VFR0w6OmluaXRpYWxpemUoKQorZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUVHTDo6
aW5pdGlhbGl6ZShjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUltcGwpCiB7CiAgICAgbVN1cmZh
Y2UgPSBtRUdMLT5jcmVhdGVQYnVmZmVyU3VyZmFjZShtQ29uZmlnLCBtQXR0cmliTGlzdC5kYXRh
KCkpOwogICAgIGlmIChtU3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvUGJ1ZmZl
clN1cmZhY2VFR0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9lZ2wvUGJ1ZmZlclN1cmZhY2VFR0wuaAppbmRleCBmZjU1N2YyY2EwZS4uZmI0ZmU2
YjcxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9lZ2wvUGJ1ZmZlclN1cmZhY2VFR0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1BidWZmZXJTdXJmYWNlRUdMLmgK
QEAgLTI4LDcgKzI4LDcgQEAgY2xhc3MgUGJ1ZmZlclN1cmZhY2VFR0wgOiBwdWJsaWMgU3VyZmFj
ZUVHTAogICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyR0wgKnJlbmRlcmVyKTsKICAgICB+
UGJ1ZmZlclN1cmZhY2VFR0woKSBvdmVycmlkZTsKIAotICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6
ZSgpIG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShjb25zdCBEaXNwbGF5SW1w
bCAqZGlzcGxheUltcGwpIG92ZXJyaWRlOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
ZWdsL1N1cmZhY2VFR0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2VnbC9TdXJmYWNlRUdMLmNwcAppbmRleCAzODg4MzJiMmE2YS4uMzY0ZGVm
OTZkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9lZ2wvU3VyZmFjZUVHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9TdXJmYWNlRUdMLmNwcApAQCAtMzMsNyAr
MzMsNiBAQCBTdXJmYWNlRUdMOjp+U3VyZmFjZUVHTCgpCiAgICAgaWYgKG1TdXJmYWNlICE9IEVH
TF9OT19TVVJGQUNFKQogICAgIHsKICAgICAgICAgRUdMQm9vbGVhbiBzdWNjZXNzID0gbUVHTC0+
ZGVzdHJveVN1cmZhY2UobVN1cmZhY2UpOwotICAgICAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklB
QkxFKHN1Y2Nlc3MpOwogICAgICAgICBBU1NFUlQoc3VjY2VzcyA9PSBFR0xfVFJVRSk7CiAgICAg
fQogfQpAQCAtNDgsNyArNDcsNyBAQCBlZ2w6OkVycm9yIFN1cmZhY2VFR0w6Om1ha2VDdXJyZW50
KCkKICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKLWVnbDo6RXJyb3Ig
U3VyZmFjZUVHTDo6c3dhcCgpCitlZ2w6OkVycm9yIFN1cmZhY2VFR0w6OnN3YXAoY29uc3QgRGlz
cGxheUltcGwgKmRpc3BsYXlJbXBsKQogewogICAgIEVHTEJvb2xlYW4gc3VjY2VzcyA9IG1FR0wt
PnN3YXBCdWZmZXJzKG1TdXJmYWNlKTsKICAgICBpZiAoc3VjY2VzcyA9PSBFR0xfRkFMU0UpCkBA
IC05NSw3ICs5NCw3IEBAIHZvaWQgU3VyZmFjZUVHTDo6c2V0U3dhcEludGVydmFsKEVHTGludCBp
bnRlcnZhbCkKICAgICBFR0xCb29sZWFuIHN1Y2Nlc3MgPSBtRUdMLT5zd2FwSW50ZXJ2YWwoaW50
ZXJ2YWwpOwogICAgIGlmIChzdWNjZXNzID09IEVHTF9GQUxTRSkKICAgICB7Ci0gICAgICAgIEVS
UigiZWdsU3dhcEludGVydmFsIGVycm9yIDB4JTA0eCIsIG1FR0wtPmdldEVycm9yKCkpOworICAg
ICAgICBFUlIoKSA8PCAiZWdsU3dhcEludGVydmFsIGVycm9yICIgPDwgZWdsOjpFcnJvcihtRUdM
LT5nZXRFcnJvcigpKTsKICAgICAgICAgQVNTRVJUKGZhbHNlKTsKICAgICB9CiB9CkBAIC0xMDQs
NyArMTAzLDYgQEAgRUdMaW50IFN1cmZhY2VFR0w6OmdldFdpZHRoKCkgY29uc3QKIHsKICAgICBF
R0xpbnQgdmFsdWU7CiAgICAgRUdMQm9vbGVhbiBzdWNjZXNzID0gbUVHTC0+cXVlcnlTdXJmYWNl
KG1TdXJmYWNlLCBFR0xfV0lEVEgsICZ2YWx1ZSk7Ci0gICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJ
QUJMRShzdWNjZXNzKTsKICAgICBBU1NFUlQoc3VjY2VzcyA9PSBFR0xfVFJVRSk7CiAgICAgcmV0
dXJuIHZhbHVlOwogfQpAQCAtMTEzLDcgKzExMSw2IEBAIEVHTGludCBTdXJmYWNlRUdMOjpnZXRI
ZWlnaHQoKSBjb25zdAogewogICAgIEVHTGludCB2YWx1ZTsKICAgICBFR0xCb29sZWFuIHN1Y2Nl
c3MgPSBtRUdMLT5xdWVyeVN1cmZhY2UobVN1cmZhY2UsIEVHTF9IRUlHSFQsICZ2YWx1ZSk7Ci0g
ICAgVU5VU0VEX0FTU0VSVElPTl9WQVJJQUJMRShzdWNjZXNzKTsKICAgICBBU1NFUlQoc3VjY2Vz
cyA9PSBFR0xfVFJVRSk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQpAQCAtMTI4LDcgKzEyNSw2IEBA
IEVHTGludCBTdXJmYWNlRUdMOjpnZXRTd2FwQmVoYXZpb3IoKSBjb25zdAogewogICAgIEVHTGlu
dCB2YWx1ZTsKICAgICBFR0xCb29sZWFuIHN1Y2Nlc3MgPSBtRUdMLT5xdWVyeVN1cmZhY2UobVN1
cmZhY2UsIEVHTF9TV0FQX0JFSEFWSU9SLCAmdmFsdWUpOwotICAgIFVOVVNFRF9BU1NFUlRJT05f
VkFSSUFCTEUoc3VjY2Vzcyk7CiAgICAgQVNTRVJUKHN1Y2Nlc3MgPT0gRUdMX1RSVUUpOwogICAg
IHJldHVybiB2YWx1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvU3VyZmFjZUVHTC5oIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9TdXJmYWNlRUdMLmgKaW5kZXgg
ZWUxNTY4YzllN2IuLjYwMzNhY2U1NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1N1cmZhY2VFR0wuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1N1cmZhY2VF
R0wuaApAQCAtMjksNyArMjksNyBAQCBjbGFzcyBTdXJmYWNlRUdMIDogcHVibGljIFN1cmZhY2VH
TAogICAgIH5TdXJmYWNlRUdMKCkgb3ZlcnJpZGU7CiAKICAgICBlZ2w6OkVycm9yIG1ha2VDdXJy
ZW50KCkgb3ZlcnJpZGU7Ci0gICAgZWdsOjpFcnJvciBzd2FwKCkgb3ZlcnJpZGU7CisgICAgZWds
OjpFcnJvciBzd2FwKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJpZGU7CiAg
ICAgZWdsOjpFcnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdp
ZHRoLCBFR0xpbnQgaGVpZ2h0KSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHF1ZXJ5U3VyZmFj
ZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJyaWRlOwog
ICAgIGVnbDo6RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQg
YnVmZmVyKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvV2luZG93U3VyZmFjZUVHTC5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1dpbmRvd1N1cmZh
Y2VFR0wuY3BwCmluZGV4IGRiMjI2ZWUxOGYxLi5jNGQzODUzNjUxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9XaW5kb3dT
dXJmYWNlRUdMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvZWdsL1dpbmRvd1N1cmZhY2VFR0wuY3BwCkBAIC0yNiw3ICsyNiw3IEBAIFdp
bmRvd1N1cmZhY2VFR0w6On5XaW5kb3dTdXJmYWNlRUdMKCkKIHsKIH0KIAotZWdsOjpFcnJvciBX
aW5kb3dTdXJmYWNlRUdMOjppbml0aWFsaXplKCkKK2VnbDo6RXJyb3IgV2luZG93U3VyZmFjZUVH
TDo6aW5pdGlhbGl6ZShjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUltcGwpCiB7CiAgICAgbVN1
cmZhY2UgPSBtRUdMLT5jcmVhdGVXaW5kb3dTdXJmYWNlKG1Db25maWcsIG1XaW5kb3csIG1BdHRy
aWJMaXN0LmRhdGEoKSk7CiAgICAgaWYgKG1TdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2VnbC9XaW5kb3dTdXJmYWNlRUdMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvZWdsL1dpbmRvd1N1cmZhY2VFR0wuaAppbmRleCBmOWRhNGMyN2M0
YS4uNTFmODk0NTkwYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvV2luZG93U3VyZmFjZUVHTC5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvV2luZG93U3VyZmFj
ZUVHTC5oCkBAIC0yNiw3ICsyNiw3IEBAIGNsYXNzIFdpbmRvd1N1cmZhY2VFR0wgOiBwdWJsaWMg
U3VyZmFjZUVHTAogICAgICAgICAgICAgICAgICAgICAgUmVuZGVyZXJHTCAqcmVuZGVyZXIpOwog
ICAgIH5XaW5kb3dTdXJmYWNlRUdMKCkgb3ZlcnJpZGU7CiAKLSAgICBlZ2w6OkVycm9yIGluaXRp
YWxpemUoKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoY29uc3QgRGlzcGxh
eUltcGwgKmRpc3BsYXlJbXBsKSBvdmVycmlkZTsKIAogICBwcml2YXRlOgogICAgIEVHTE5hdGl2
ZVdpbmRvd1R5cGUgbVdpbmRvdzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5kcm9pZC9EaXNwbGF5QW5kcm9pZC5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2Fu
ZHJvaWQvRGlzcGxheUFuZHJvaWQuY3BwCmluZGV4IDQ5NTZjNWIzZmU4Li4zOGRhZDAwZjUxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L2dsL2VnbC9hbmRyb2lkL0Rpc3BsYXlBbmRyb2lkLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2FuZHJvaWQvRGlzcGxheUFuZHJv
aWQuY3BwCkBAIC0xMCw2ICsxMCw3IEBACiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9EaXNwbGF5LmgiCisjaW5jbHVkZSAibGliQU5HTEUvU3VyZmFjZS5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5kcm9pZC9EaXNwbGF5QW5kcm9pZC5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9GdW5jdGlvbnNFR0xETC5oIgpA
QCAtMzEsNyArMzIsOCBAQCBjb25zdCBjaGFyICpHZXRFR0xQYXRoKCkKIG5hbWVzcGFjZSByeAog
ewogCi1EaXNwbGF5QW5kcm9pZDo6RGlzcGxheUFuZHJvaWQoKSA6IERpc3BsYXlFR0woKSwgbUR1
bW15UGJ1ZmZlcihFR0xfTk9fU1VSRkFDRSkKK0Rpc3BsYXlBbmRyb2lkOjpEaXNwbGF5QW5kcm9p
ZChjb25zdCBlZ2w6OkRpc3BsYXlTdGF0ZSAmc3RhdGUpCisgICAgOiBEaXNwbGF5RUdMKHN0YXRl
KSwgbUR1bW15UGJ1ZmZlcihFR0xfTk9fU1VSRkFDRSkKIHsKIH0KIApAQCAtNzIsOCArNzQsMTgg
QEAgZWdsOjpFcnJvciBEaXNwbGF5QW5kcm9pZDo6aW5pdGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRp
c3BsYXkpCiAgICAgICAgIEVHTF9DT05GSUdfQ0FWRUFULCBFR0xfTk9ORSwKICAgICAgICAgRUdM
X0NPTkZPUk1BTlQsIGVzQml0LAogICAgICAgICBFR0xfUkVOREVSQUJMRV9UWVBFLCBlc0JpdCwK
LSAgICAgICAgRUdMX05PTkUKICAgICB9OworCisgICAgaWYgKG1FR0wtPmhhc0V4dGVuc2lvbigi
RUdMX0VYVF9waXhlbF9mb3JtYXRfZmxvYXQiKSkKKyAgICB7CisgICAgICAgIC8vIERvbid0IHJl
cXVlc3QgZmxvYXRpbmcgcG9pbnQgY29uZmlncworICAgICAgICBtQ29uZmlnQXR0cmliTGlzdC5w
dXNoX2JhY2soRUdMX0NPTE9SX0NPTVBPTkVOVF9UWVBFX0VYVCk7CisgICAgICAgIG1Db25maWdB
dHRyaWJMaXN0LnB1c2hfYmFjayhFR0xfQ09MT1JfQ09NUE9ORU5UX1RZUEVfRklYRURfRVhUKTsK
KyAgICB9CisKKyAgICAvLyBDb21wbGV0ZSB0aGUgYXR0cmliIGxpc3QKKyAgICBtQ29uZmlnQXR0
cmliTGlzdC5wdXNoX2JhY2soRUdMX05PTkUpOworCiAgICAgLy8gY2xhbmctZm9ybWF0IG9uCiAg
ICAgRUdMaW50IG51bUNvbmZpZzsKIApAQCAtMTEzLDcgKzEyNSw3IEBAIHZvaWQgRGlzcGxheUFu
ZHJvaWQ6OnRlcm1pbmF0ZSgpCiAgICAgRUdMQm9vbGVhbiBzdWNjZXNzID0gbUVHTC0+bWFrZUN1
cnJlbnQoRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsKICAgICBpZiAoc3VjY2VzcyA9
PSBFR0xfRkFMU0UpCiAgICAgewotICAgICAgICBFUlIoImVnbE1ha2VDdXJyZW50IGVycm9yIDB4
JTA0eCIsIG1FR0wtPmdldEVycm9yKCkpOworICAgICAgICBFUlIoKSA8PCAiZWdsTWFrZUN1cnJl
bnQgZXJyb3IgIiA8PCBlZ2w6OkVycm9yKG1FR0wtPmdldEVycm9yKCkpOwogICAgIH0KIAogICAg
IGlmIChtRHVtbXlQYnVmZmVyICE9IEVHTF9OT19TVVJGQUNFKQpAQCAtMTIyLDcgKzEzNCw3IEBA
IHZvaWQgRGlzcGxheUFuZHJvaWQ6OnRlcm1pbmF0ZSgpCiAgICAgICAgIG1EdW1teVBidWZmZXIg
PSBFR0xfTk9fU1VSRkFDRTsKICAgICAgICAgaWYgKHN1Y2Nlc3MgPT0gRUdMX0ZBTFNFKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBFUlIoImVnbERlc3Ryb3lTdXJmYWNlIGVycm9yIDB4JTA0eCIs
IG1FR0wtPmdldEVycm9yKCkpOworICAgICAgICAgICAgRVJSKCkgPDwgImVnbERlc3Ryb3lTdXJm
YWNlIGVycm9yICIgPDwgZWdsOjpFcnJvcihtRUdMLT5nZXRFcnJvcigpKTsKICAgICAgICAgfQog
ICAgIH0KIApAQCAtMTMyLDE0ICsxNDQsMTQgQEAgdm9pZCBEaXNwbGF5QW5kcm9pZDo6dGVybWlu
YXRlKCkKICAgICAgICAgbUNvbnRleHQgPSBFR0xfTk9fQ09OVEVYVDsKICAgICAgICAgaWYgKHN1
Y2Nlc3MgPT0gRUdMX0ZBTFNFKQogICAgICAgICB7Ci0gICAgICAgICAgICBFUlIoImVnbERlc3Ry
b3lDb250ZXh0IGVycm9yIDB4JTA0eCIsIG1FR0wtPmdldEVycm9yKCkpOworICAgICAgICAgICAg
RVJSKCkgPDwgImVnbERlc3Ryb3lDb250ZXh0IGVycm9yICIgPDwgZWdsOjpFcnJvcihtRUdMLT5n
ZXRFcnJvcigpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGVnbDo6RXJyb3IgcmVzdWx0ID0g
bUVHTC0+dGVybWluYXRlKCk7CiAgICAgaWYgKHJlc3VsdC5pc0Vycm9yKCkpCiAgICAgewotICAg
ICAgICBFUlIoImVnbFRlcm1pbmF0ZSBlcnJvciAweCUwNHgiLCByZXN1bHQuZ2V0Q29kZSgpKTsK
KyAgICAgICAgRVJSKCkgPDwgImVnbFRlcm1pbmF0ZSBlcnJvciAiIDw8IHJlc3VsdDsKICAgICB9
CiAKICAgICBTYWZlRGVsZXRlKG1FR0wpOwpAQCAtMTQ3LDcgKzE1OSw2IEBAIHZvaWQgRGlzcGxh
eUFuZHJvaWQ6OnRlcm1pbmF0ZSgpCiB9CiAKIFN1cmZhY2VJbXBsICpEaXNwbGF5QW5kcm9pZDo6
Y3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpD
b25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVN
YXAgJmF0dHJpYnMpCiB7CkBAIC0xNTUsMzcgKzE2NiwzMiBAQCBTdXJmYWNlSW1wbCAqRGlzcGxh
eUFuZHJvaWQ6OmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0
YXRlLAogICAgIEVHTGludCBudW1Db25maWc7CiAgICAgRUdMQm9vbGVhbiBzdWNjZXNzOwogCi0g
ICAgY29uc3QgRUdMaW50IGNvbmZpZ0F0dHJpYkxpc3RbXSA9IHtFR0xfQ09ORklHX0lELCBtQ29u
ZmlnSWRzW2NvbmZpZ3VyYXRpb24tPmNvbmZpZ0lEXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTF9OT05FfTsKKyAgICBjb25zdCBFR0xpbnQgY29uZmlnQXR0cmli
TGlzdFtdID0ge0VHTF9DT05GSUdfSUQsIG1Db25maWdJZHNbc3RhdGUuY29uZmlnLT5jb25maWdJ
RF0sIEVHTF9OT05FfTsKICAgICBzdWNjZXNzID0gbUVHTC0+Y2hvb3NlQ29uZmlnKGNvbmZpZ0F0
dHJpYkxpc3QsICZjb25maWcsIDEsICZudW1Db25maWcpOwogICAgIEFTU0VSVChzdWNjZXNzICYm
IG51bUNvbmZpZyA9PSAxKTsKLSAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHN1Y2Nlc3Mp
OwogCiAgICAgcmV0dXJuIG5ldyBXaW5kb3dTdXJmYWNlRUdMKHN0YXRlLCBtRUdMLCBjb25maWcs
IHdpbmRvdywgYXR0cmlicy50b0ludFZlY3RvcigpLCBtQ29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2V0UmVuZGVyZXIoKSk7CiB9CiAKIFN1cmZhY2VJbXBsICpEaXNw
bGF5QW5kcm9pZDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUg
JnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0
dHJpYnMpCiB7CiAgICAgRUdMQ29uZmlnIGNvbmZpZzsKICAgICBFR0xpbnQgbnVtQ29uZmlnOwog
ICAgIEVHTEJvb2xlYW4gc3VjY2VzczsKIAotICAgIGNvbnN0IEVHTGludCBjb25maWdBdHRyaWJM
aXN0W10gPSB7RUdMX0NPTkZJR19JRCwgbUNvbmZpZ0lkc1tjb25maWd1cmF0aW9uLT5jb25maWdJ
RF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfTk9ORX07Cisg
ICAgY29uc3QgRUdMaW50IGNvbmZpZ0F0dHJpYkxpc3RbXSA9IHtFR0xfQ09ORklHX0lELCBtQ29u
ZmlnSWRzW3N0YXRlLmNvbmZpZy0+Y29uZmlnSURdLCBFR0xfTk9ORX07CiAgICAgc3VjY2VzcyA9
IG1FR0wtPmNob29zZUNvbmZpZyhjb25maWdBdHRyaWJMaXN0LCAmY29uZmlnLCAxLCAmbnVtQ29u
ZmlnKTsKICAgICBBU1NFUlQoc3VjY2VzcyAmJiBudW1Db25maWcgPT0gMSk7Ci0gICAgVU5VU0VE
X0FTU0VSVElPTl9WQVJJQUJMRShzdWNjZXNzKTsKIAogICAgIHJldHVybiBuZXcgUGJ1ZmZlclN1
cmZhY2VFR0woc3RhdGUsIG1FR0wsIGNvbmZpZywgYXR0cmlicy50b0ludFZlY3RvcigpLCBtQ29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFJlbmRlcmVyKCkpOwog
fQogCiBTdXJmYWNlSW1wbCAqRGlzcGxheUFuZHJvaWQ6OmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50
QnVmZmVyKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25m
aWcgKmNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
ZW51bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKICAgICBVTklNUExFTUVOVEVEKCk7CkBAIC0x
OTMsNyArMTk5LDYgQEAgU3VyZmFjZUltcGwgKkRpc3BsYXlBbmRyb2lkOjpjcmVhdGVQYnVmZmVy
RnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZhY2VTdGEKIH0KIAogU3VyZmFjZUltcGwg
KkRpc3BsYXlBbmRyb2lkOjpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0
YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBp
eG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKQEAgLTIxNSwxMCArMjIwLDI2IEBA
IHZvaWQgRGlzcGxheUFuZHJvaWQ6OmdldENvbmZpZ0F0dHJpYihFR0xDb25maWcgY29uZmlnLCBF
R0xpbnQgYXR0cmlidXRlLCBUICp2YWx1CiAgICAgRUdMaW50IHRtcDsKICAgICBFR0xCb29sZWFu
IHN1Y2Nlc3MgPSBtRUdMLT5nZXRDb25maWdBdHRyaWIoY29uZmlnLCBhdHRyaWJ1dGUsICZ0bXAp
OwogICAgIEFTU0VSVChzdWNjZXNzID09IEVHTF9UUlVFKTsKLSAgICBVTlVTRURfQVNTRVJUSU9O
X1ZBUklBQkxFKHN1Y2Nlc3MpOwogICAgICp2YWx1ZSA9IHRtcDsKIH0KIAordGVtcGxhdGUgPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+Cit2b2lkIERpc3BsYXlBbmRyb2lkOjpnZXRDb25maWdBdHRy
aWJJZkV4dGVuc2lvbihFR0xDb25maWcgY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQgKnZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXh0ZW5zaW9u
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
VSAmZGVmYXVsdFZhbHVlKSBjb25zdAoreworICAgIGlmIChtRUdMLT5oYXNFeHRlbnNpb24oZXh0
ZW5zaW9uKSkKKyAgICB7CisgICAgICAgIGdldENvbmZpZ0F0dHJpYihjb25maWcsIGF0dHJpYnV0
ZSwgdmFsdWUpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAqdmFsdWUgPSBzdGF0
aWNfY2FzdDxUPihkZWZhdWx0VmFsdWUpOworICAgIH0KK30KKwogZWdsOjpDb25maWdTZXQgRGlz
cGxheUFuZHJvaWQ6OmdlbmVyYXRlQ29uZmlncygpCiB7CiAgICAgZWdsOjpDb25maWdTZXQgY29u
ZmlnU2V0OwpAQCAtMjMzLDcgKzI1NCw2IEBAIGVnbDo6Q29uZmlnU2V0IERpc3BsYXlBbmRyb2lk
OjpnZW5lcmF0ZUNvbmZpZ3MoKQogICAgIHN1Y2Nlc3MgPQogICAgICAgICBtRUdMLT5jaG9vc2VD
b25maWcobUNvbmZpZ0F0dHJpYkxpc3QuZGF0YSgpLCBjb25maWdzLmRhdGEoKSwgbnVtQ29uZmln
cywgJm51bUNvbmZpZ3MyKTsKICAgICBBU1NFUlQoc3VjY2VzcyA9PSBFR0xfVFJVRSAmJiBudW1D
b25maWdzMiA9PSBudW1Db25maWdzKTsKLSAgICBVTlVTRURfQVNTRVJUSU9OX1ZBUklBQkxFKHN1
Y2Nlc3MpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Db25maWdzOyBpKyspCiAgICAg
ewpAQCAtMjcxLDkgKzI5MSwxMyBAQCBlZ2w6OkNvbmZpZ1NldCBEaXNwbGF5QW5kcm9pZDo6Z2Vu
ZXJhdGVDb25maWdzKCkKICAgICAgICAgZ2V0Q29uZmlnQXR0cmliKGNvbmZpZ3NbaV0sIEVHTF9U
UkFOU1BBUkVOVF9SRURfVkFMVUUsICZjb25maWcudHJhbnNwYXJlbnRSZWRWYWx1ZSk7CiAgICAg
ICAgIGdldENvbmZpZ0F0dHJpYihjb25maWdzW2ldLCBFR0xfVFJBTlNQQVJFTlRfR1JFRU5fVkFM
VUUsICZjb25maWcudHJhbnNwYXJlbnRHcmVlblZhbHVlKTsKICAgICAgICAgZ2V0Q29uZmlnQXR0
cmliKGNvbmZpZ3NbaV0sIEVHTF9UUkFOU1BBUkVOVF9CTFVFX1ZBTFVFLCAmY29uZmlnLnRyYW5z
cGFyZW50Qmx1ZVZhbHVlKTsKKyAgICAgICAgZ2V0Q29uZmlnQXR0cmliSWZFeHRlbnNpb24oY29u
Zmlnc1tpXSwgRUdMX0NPTE9SX0NPTVBPTkVOVF9UWVBFX0VYVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmNvbmZpZy5jb2xvckNvbXBvbmVudFR5cGUsICJFR0xfRVhUX3Bp
eGVsX2Zvcm1hdF9mbG9hdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TF9DT0xPUl9DT01QT05FTlRfVFlQRV9GSVhFRF9FWFQpOwogCiAgICAgICAgIGlmIChjb25maWcu
Y29sb3JCdWZmZXJUeXBlID09IEVHTF9SR0JfQlVGRkVSKQogICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQoY29uZmlnLmNvbG9yQ29tcG9uZW50VHlwZSA9PSBFR0xfQ09MT1JfQ09NUE9ORU5U
X1RZUEVfRklYRURfRVhUKTsKICAgICAgICAgICAgIGlmIChjb25maWcucmVkU2l6ZSA9PSA4ICYm
IGNvbmZpZy5ncmVlblNpemUgPT0gOCAmJiBjb25maWcuYmx1ZVNpemUgPT0gOCAmJgogICAgICAg
ICAgICAgICAgIGNvbmZpZy5hbHBoYVNpemUgPT0gOCkKICAgICAgICAgICAgIHsKQEAgLTM3MCwx
OSArMzk0LDQgQEAgZWdsOjpFcnJvciBEaXNwbGF5QW5kcm9pZDo6d2FpdE5hdGl2ZShFR0xpbnQg
ZW5naW5lLAogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0KIAotZWdsOjpF
cnJvciBEaXNwbGF5QW5kcm9pZDo6Z2V0RHJpdmVyVmVyc2lvbihzdGQ6OnN0cmluZyAqdmVyc2lv
bikgY29uc3QKLXsKLSAgICBWZW5kb3JJRCB2ZW5kb3IgPSBHZXRWZW5kb3JJRChtRnVuY3Rpb25z
R0wpOwotCi0gICAgc3dpdGNoICh2ZW5kb3IpCi0gICAgewotICAgICAgICBjYXNlIFZFTkRPUl9J
RF9RVUFMQ09NTToKLSAgICAgICAgICAgICp2ZXJzaW9uID0gcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBjaGFyICo+KG1GdW5jdGlvbnNHTC0+Z2V0U3RyaW5nKEdMX1ZFUlNJT04pKTsKLSAgICAgICAg
ICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICp2ZXJzaW9uID0gIiI7Ci0gICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfU1VDQ0VTUyk7Ci0gICAgfQotfQotCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5k
cm9pZC9EaXNwbGF5QW5kcm9pZC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL2VnbC9hbmRyb2lkL0Rpc3BsYXlBbmRyb2lkLmgKaW5kZXggNjkzNTMy
ZmI0M2YuLjQ4OTk4NmZhMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2FuZHJvaWQvRGlzcGxheUFuZHJvaWQuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL2Fu
ZHJvaWQvRGlzcGxheUFuZHJvaWQuaApAQCAtMjEsMjUgKzIxLDIyIEBAIG5hbWVzcGFjZSByeAog
Y2xhc3MgRGlzcGxheUFuZHJvaWQgOiBwdWJsaWMgRGlzcGxheUVHTAogewogICBwdWJsaWM6Ci0g
ICAgRGlzcGxheUFuZHJvaWQoKTsKKyAgICBEaXNwbGF5QW5kcm9pZChjb25zdCBlZ2w6OkRpc3Bs
YXlTdGF0ZSAmc3RhdGUpOwogICAgIH5EaXNwbGF5QW5kcm9pZCgpIG92ZXJyaWRlOwogCiAgICAg
ZWdsOjpFcnJvciBpbml0aWFsaXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB0ZXJtaW5hdGUoKSBvdmVycmlkZTsKIAogICAgIFN1cmZhY2VJbXBsICpjcmVhdGVX
aW5kb3dTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dU
eXBlIHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAgICAgU3VyZmFjZUltcGwgKmNy
ZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZp
Z3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVn
bDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKICAgICBTdXJmYWNlSW1wbCAqY3Jl
YXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1
ZmZlciBjbGllbnRCdWZmZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKICAg
ICBTdXJmYWNlSW1wbCAqY3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0
ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWds
OjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVQaXhtYXAsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJy
aWRlOwogCkBAIC02MSwxMiArNTgsMTcgQEAgY2xhc3MgRGlzcGxheUFuZHJvaWQgOiBwdWJsaWMg
RGlzcGxheUVHTAogICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKmRyYXdT
dXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKnJlYWRTdXJm
YWNlKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGVnbDo6RXJyb3IgZ2V0RHJpdmVyVmVyc2lvbihz
dGQ6OnN0cmluZyAqdmVyc2lvbikgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgcHJpdmF0ZToKICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgICB2b2lkIGdldENvbmZpZ0F0dHJpYihFR0xDb25maWcg
Y29uZmlnLCBFR0xpbnQgYXR0cmlidXRlLCBUICp2YWx1ZSkgY29uc3Q7CiAKKyAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICB2b2lkIGdldENvbmZpZ0F0dHJpYklmRXh0
ZW5zaW9uKEVHTENvbmZpZyBjb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFR0xpbnQgYXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVCAqdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyICpleHRlbnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBVICZkZWZhdWx0VmFsdWUpIGNvbnN0OworCiAgICAgc3RkOjp2ZWN0b3I8RUdMaW50PiBtQ29u
ZmlnQXR0cmliTGlzdDsKICAgICBzdGQ6Om1hcDxFR0xpbnQsIEVHTGludD4gbUNvbmZpZ0lkczsK
ICAgICBFR0xTdXJmYWNlIG1EdW1teVBidWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL0Rpc3BsYXlPem9u
ZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
ZWdsL296b25lL0Rpc3BsYXlPem9uZS5jcHAKaW5kZXggOTgyYzgwNjkzYTEuLjZkODlkOWFkMTk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvZWdsL296b25lL0Rpc3BsYXlPem9uZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9vem9uZS9EaXNwbGF5T3pvbmUuY3Bw
CkBAIC0xMCw3ICsxMCw2IEBACiAKICNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPHBvbGwu
aD4KLSNpbmNsdWRlIDxpb3N0cmVhbT4KICNpbmNsdWRlIDx1bmlzdGQuaD4KICNpbmNsdWRlIDxz
eXMvdGltZS5oPgogCkBAIC0yOTUsNyArMjk0LDcgQEAgdWludDMyX3QgRGlzcGxheU96b25lOjpC
dWZmZXI6OmdldERSTUZCKCkKICAgICAgICAgdWludDMyX3Qgb2Zmc2V0c1s0XSA9IHswfTsKICAg
ICAgICAgaWYgKGRybU1vZGVBZGRGQjIoZmQsIG1XaWR0aCwgbUhlaWdodCwgbURSTUZvcm1hdEZC
LCBoYW5kbGVzLCBwaXRjaGVzLCBvZmZzZXRzLCAmbURSTUZCLCAwKSkKICAgICAgICAgewotICAg
ICAgICAgICAgc3RkOjpjZXJyIDw8ICJkcm1Nb2RlQWRkRkIyIGZhaWxlZCIgPDwgc3RkOjplbmRs
OworICAgICAgICAgICAgV0FSTigpIDw8ICJkcm1Nb2RlQWRkRkIyIGZhaWxlZDogIiA8PCBlcnJu
byA8PCAiICIgPDwgc3RyZXJyb3IoZXJybm8pOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAg
ICAgICAgewpAQCAtMzI1LDggKzMyNCw4IEBAIHZvaWQgRGlzcGxheU96b25lOjpCdWZmZXI6OnBy
ZXNlbnQoKQogICAgIH0KIH0KIAotRGlzcGxheU96b25lOjpEaXNwbGF5T3pvbmUoKQotICAgIDog
RGlzcGxheUVHTCgpLAorRGlzcGxheU96b25lOjpEaXNwbGF5T3pvbmUoY29uc3QgZWdsOjpEaXNw
bGF5U3RhdGUgJnN0YXRlKQorICAgIDogRGlzcGxheUVHTChzdGF0ZSksCiAgICAgICBtU3dhcENv
bnRyb2woU3dhcENvbnRyb2w6OkFCU0VOVCksCiAgICAgICBtTWluU3dhcEludGVydmFsKDApLAog
ICAgICAgbU1heFN3YXBJbnRlcnZhbCgwKSwKQEAgLTMzNiw4ICszMzUsOCBAQCBEaXNwbGF5T3pv
bmU6OkRpc3BsYXlPem9uZSgpCiAgICAgICBtTW9kZShudWxscHRyKSwKICAgICAgIG1DUlRDKG51
bGxwdHIpLAogICAgICAgbVNldENSVEModHJ1ZSksCi0gICAgICBtV2lkdGgoMCksCi0gICAgICBt
SGVpZ2h0KDApLAorICAgICAgbVdpZHRoKDEyODApLAorICAgICAgbUhlaWdodCgxMDI0KSwKICAg
ICAgIG1TY2FubmluZyhudWxscHRyKSwKICAgICAgIG1QZW5kaW5nKG51bGxwdHIpLAogICAgICAg
bURyYXdpbmcobnVsbHB0ciksCkBAIC0zNTgsNDcgKzM1NywyMSBAQCBEaXNwbGF5T3pvbmU6On5E
aXNwbGF5T3pvbmUoKQogewogfQogCi1lZ2w6OkVycm9yIERpc3BsYXlPem9uZTo6aW5pdGlhbGl6
ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCitib29sIERpc3BsYXlPem9uZTo6aGFzVXNhYmxlU2Ny
ZWVuKGludCBmZCkKIHsKLSAgICBpbnQgZmQ7Ci0gICAgY2hhciBkZXZpY2VOYW1lWzMwXTsKLSAg
ICBkcm1Nb2RlUmVzUHRyIHJlc291cmNlcyA9IG51bGxwdHI7Ci0KLSAgICBmb3IgKGludCBpID0g
MDsgaSA8IDk7ICsraSkKLSAgICB7Ci0gICAgICAgIHNucHJpbnRmKGRldmljZU5hbWUsIHNpemVv
ZihkZXZpY2VOYW1lKSwgIi9kZXYvZHJpL2NhcmQlZCIsIGkpOwotICAgICAgICBmZCA9IG9wZW4o
ZGV2aWNlTmFtZSwgT19SRFdSIHwgT19DTE9FWEVDKTsKLSAgICAgICAgaWYgKGZkID49IDApCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJlc291cmNlcyA9IGRybU1vZGVHZXRSZXNvdXJjZXMoZmQp
OwotICAgICAgICAgICAgaWYgKHJlc291cmNlcykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBpZiAocmVzb3VyY2VzLT5jb3VudF9jb25uZWN0b3JzID4gMCkKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBkcm1Nb2RlRnJlZVJlc291cmNlcyhyZXNvdXJjZXMpOwotICAgICAgICAgICAg
ICAgIHJlc291cmNlcyA9IG51bGxwdHI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjbG9z
ZShmZCk7Ci0gICAgICAgIH0KLSAgICB9CisgICAgZHJtTW9kZVJlc1B0ciByZXNvdXJjZXMgPSBk
cm1Nb2RlR2V0UmVzb3VyY2VzKGZkKTsKICAgICBpZiAoIXJlc291cmNlcykKICAgICB7Ci0gICAg
ICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsICJDb3VsZCBub3Qgb3Bl
biBkcm0gZGV2aWNlLiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotCi0gICAgbUdC
TSA9IGdibV9jcmVhdGVfZGV2aWNlKGZkKTsKLSAgICBpZiAoIW1HQk0pCisgICAgaWYgKHJlc291
cmNlcy0+Y291bnRfY29ubmVjdG9ycyA8IDEpCiAgICAgewotICAgICAgICBjbG9zZShmZCk7CiAg
ICAgICAgIGRybU1vZGVGcmVlUmVzb3VyY2VzKHJlc291cmNlcyk7Ci0gICAgICAgIHJldHVybiBl
Z2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsICJDb3VsZCBub3QgY3JlYXRlIGdibSBkZXZp
Y2UuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBtQ29ubmVjdG9yICAg
ICAgICAgICAgPSBudWxscHRyOwotICAgIGJvb2wgbW9uaXRvckNvbm5lY3RlZCA9IGZhbHNlOwot
ICAgIGZvciAoaW50IGkgPSAwOyAhbUNSVEMgJiYgaSA8IHJlc291cmNlcy0+Y291bnRfY29ubmVj
dG9yczsgKytpKQorICAgIG1Db25uZWN0b3IgPSBudWxscHRyOworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgcmVzb3VyY2VzLT5jb3VudF9jb25uZWN0b3JzOyArK2kpCiAgICAgewogICAgICAgICBk
cm1Nb2RlRnJlZUNvbm5lY3RvcihtQ29ubmVjdG9yKTsKICAgICAgICAgbUNvbm5lY3RvciA9IGRy
bU1vZGVHZXRDb25uZWN0b3IoZmQsIHJlc291cmNlcy0+Y29ubmVjdG9yc1tpXSk7CkBAIC00MDYs
NyArMzc5LDYgQEAgZWdsOjpFcnJvciBEaXNwbGF5T3pvbmU6OmluaXRpYWxpemUoZWdsOjpEaXNw
bGF5ICpkaXNwbGF5KQogICAgICAgICB7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
fQotICAgICAgICBtb25pdG9yQ29ubmVjdGVkID0gdHJ1ZTsKICAgICAgICAgbU1vZGUgPSBDaG9v
c2VNb2RlKG1Db25uZWN0b3IpOwogICAgICAgICBpZiAoIW1Nb2RlKQogICAgICAgICB7CkBAIC00
MTgsMjUgKzM5MCw2OCBAQCBlZ2w6OkVycm9yIERpc3BsYXlPem9uZTo6aW5pdGlhbGl6ZShlZ2w6
OkRpc3BsYXkgKmRpc3BsYXkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAg
ICAgICBtQ1JUQyA9IGRybU1vZGVHZXRDcnRjKGZkLCByZXNvdXJjZXMtPmNydGNzW25dKTsKKyAg
ICAgICAgaWYgKG1DUlRDKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBmb3VuZCBhIHNjcmVl
bgorICAgICAgICAgICAgbUdCTSA9IGdibV9jcmVhdGVfZGV2aWNlKGZkKTsKKyAgICAgICAgICAg
IGlmIChtR0JNKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1XaWR0aCAgPSBtTW9k
ZS0+aGRpc3BsYXk7CisgICAgICAgICAgICAgICAgbUhlaWdodCA9IG1Nb2RlLT52ZGlzcGxheTsK
KyAgICAgICAgICAgICAgICBkcm1Nb2RlRnJlZVJlc291cmNlcyhyZXNvdXJjZXMpOworICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gY2Fu
J3QgdXNlIHRoaXMgc2NyZWVuCisgICAgICAgICAgICBkcm1Nb2RlRnJlZUNydGMobUNSVEMpOwor
ICAgICAgICAgICAgbUNSVEMgPSBudWxscHRyOworICAgICAgICB9CiAgICAgfQorCiAgICAgZHJt
TW9kZUZyZWVSZXNvdXJjZXMocmVzb3VyY2VzKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CiAKLSAg
ICBpZiAobUNSVEMpCitlZ2w6OkVycm9yIERpc3BsYXlPem9uZTo6aW5pdGlhbGl6ZShlZ2w6OkRp
c3BsYXkgKmRpc3BsYXkpCit7CisgICAgaW50IGZkOworICAgIGNoYXIgZGV2aWNlTmFtZVszMF07
CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDY0OyArK2kpCiAgICAgewotICAgICAgICBtV2lk
dGggID0gbU1vZGUtPmhkaXNwbGF5OwotICAgICAgICBtSGVpZ2h0ID0gbU1vZGUtPnZkaXNwbGF5
OworICAgICAgICBzbnByaW50ZihkZXZpY2VOYW1lLCBzaXplb2YoZGV2aWNlTmFtZSksICIvZGV2
L2RyaS9jYXJkJWQiLCBpKTsKKyAgICAgICAgZmQgPSBvcGVuKGRldmljZU5hbWUsIE9fUkRXUiB8
IE9fQ0xPRVhFQyk7CisgICAgICAgIGlmIChmZCA+PSAwKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoaGFzVXNhYmxlU2NyZWVuKGZkKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAg
fQogICAgIH0KLSAgICBlbHNlIGlmICghbW9uaXRvckNvbm5lY3RlZCkKKworICAgIGlmICghbUdC
TSkKICAgICB7Ci0gICAgICAgIC8vIEV2ZW4gdGhvdWdoIHRoZXJlIGlzIG5vIG1vbml0b3IgdG8g
c2hvdyBpdCwgd2Ugc3RpbGwgZG8KLSAgICAgICAgLy8gZXZlcnl0aGluZyB0aGUgc2FtZSBhcyBp
ZiB0aGVyZSB3ZXJlIG9uZSwgc28gd2UgbmVlZCBhbgotICAgICAgICAvLyBhcmJpdHJhcnkgc2l6
ZSBmb3Igb3VyIGJ1ZmZlcnMuCi0gICAgICAgIG1XaWR0aCAgPSAxMjgwOwotICAgICAgICBtSGVp
Z2h0ID0gMTAyNDsKKyAgICAgICAgLy8gdGhlcmUncyBubyB1c2FibGUgc2NyZWVuIHNvIHRyeSB0
byBwcm9jZWVkIHdpdGhvdXQgb25lCisgICAgICAgIGZvciAoaW50IGkgPSAxMjg7IGkgPCAxOTI7
ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgc25wcmludGYoZGV2aWNlTmFtZSwgc2l6ZW9m
KGRldmljZU5hbWUpLCAiL2Rldi9kcmkvcmVuZGVyRCVkIiwgaSk7CisgICAgICAgICAgICBmZCA9
IG9wZW4oZGV2aWNlTmFtZSwgT19SRFdSIHwgT19DTE9FWEVDKTsKKyAgICAgICAgICAgIGlmIChm
ZCA+PSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1HQk0gPSBnYm1fY3JlYXRl
X2RldmljZShmZCk7CisgICAgICAgICAgICAgICAgaWYgKG1HQk0pCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQotICAg
IGVsc2UKKworICAgIGlmICghbUdCTSkKICAgICB7Ci0gICAgICAgIHJldHVybiBlZ2w6OkVycm9y
KEVHTF9OT1RfSU5JVElBTElaRUQsICJGYWlsZWQgdG8gY2hvb3NlIG1vZGUvY3J0Yy4iKTsKKyAg
ICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX05PVF9JTklUSUFMSVpFRCwgIkNvdWxkIG5vdCBv
cGVuIGRybSBkZXZpY2UuIik7CiAgICAgfQogCiAgICAgLy8gQU5HTEUgYnVpbGRzIGl0cyBleGVj
dXRhYmxlcyB3aXRoIGFuIFJQQVRIIHNvIHRoZXkgcHVsbCBpbiBBTkdMRSdzIGxpYkdMIGFuZCBs
aWJFR0wuCkBAIC01MzYsNyArNTUxLDcgQEAgdm9pZCBEaXNwbGF5T3pvbmU6OnByZXNlbnRTY3Jl
ZW4oKQogICAgICAgICBwZmQuZXZlbnRzID0gUE9MTElOOwogICAgICAgICBpZiAocG9sbCgmcGZk
LCAxLCAwKSA8IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6Y2VyciA8PCAicG9sbCBm
YWlsZWQ6ICIgPDwgZXJybm8gPDwgIiAiIDw8IHN0cmVycm9yKGVycm5vKSA8PCBzdGQ6OmVuZGw7
CisgICAgICAgICAgICBXQVJOKCkgPDwgInBvbGwgZmFpbGVkOiAiIDw8IGVycm5vIDw8ICIgIiA8
PCBzdHJlcnJvcihlcnJubyk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHBmZC5yZXZlbnRzICYg
UE9MTElOKQogICAgICAgICB7CkBAIC01NTYsMTQgKzU3MSwxNCBAQCB2b2lkIERpc3BsYXlPem9u
ZTo6cHJlc2VudFNjcmVlbigpCiAgICAgICAgICAgICBpZiAoZHJtTW9kZVNldENydGMoZmQsIG1D
UlRDLT5jcnRjX2lkLCBtRHJhd2luZy0+Z2V0RFJNRkIoKSwgMCwgMCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmbUNvbm5lY3Rvci0+Y29ubmVjdG9yX2lkLCAxLCBtTW9kZSkpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RkOjpjZXJyIDw8ICJzZXQgY3J0YyBmYWls
ZWQ6ICIgPDwgZXJybm8gPDwgIiAiIDw8IHN0cmVycm9yKGVycm5vKSA8PCBzdGQ6OmVuZGw7Cisg
ICAgICAgICAgICAgICAgV0FSTigpIDw8ICJzZXQgY3J0YyBmYWlsZWQ6ICIgPDwgZXJybm8gPDwg
IiAiIDw8IHN0cmVycm9yKGVycm5vKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1TZXRD
UlRDID0gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRybU1vZGVQYWdlRmxpcChmZCwg
bUNSVEMtPmNydGNfaWQsIG1EcmF3aW5nLT5nZXREUk1GQigpLCBEUk1fTU9ERV9QQUdFX0ZMSVBf
RVZFTlQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcykpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHN0ZDo6Y2VyciA8PCAicGFnZSBmbGlwIGZhaWxlZDogIiA8PCBlcnJubyA8PCAi
ICIgPDwgc3RyZXJyb3IoZXJybm8pIDw8IHN0ZDo6ZW5kbDsKKyAgICAgICAgICAgIFdBUk4oKSA8
PCAicGFnZSBmbGlwIGZhaWxlZDogIiA8PCBlcnJubyA8PCAiICIgPDwgc3RyZXJyb3IoZXJybm8p
OwogICAgICAgICB9CiAgICAgICAgIG1QZW5kaW5nID0gbURyYXdpbmc7CiAgICAgICAgIG1EcmF3
aW5nID0gbnVsbHB0cjsKQEAgLTU4NCw4ICs1OTksNyBAQCBHTHVpbnQgRGlzcGxheU96b25lOjpt
YWtlU2hhZGVyKEdMdWludCB0eXBlLCBjb25zdCBjaGFyICpzcmMpCiAgICAgZ2wtPmdldFNoYWRl
cml2KHNoYWRlciwgR0xfQ09NUElMRV9TVEFUVVMsICZjb21waWxlZCk7CiAgICAgaWYgKGNvbXBp
bGVkICE9IEdMX1RSVUUpCiAgICAgewotICAgICAgICBBTkdMRVBsYXRmb3JtQ3VycmVudCgpLT5s
b2dFcnJvcigiRGlzcGxheU96b25lIHNoYWRlciBjb21waWxhdGlvbiBlcnJvcjoiKTsKLSAgICAg
ICAgQU5HTEVQbGF0Zm9ybUN1cnJlbnQoKS0+bG9nRXJyb3IoYnVmKTsKKyAgICAgICAgV0FSTigp
IDw8ICJEaXNwbGF5T3pvbmUgc2hhZGVyIGNvbXBpbGF0aW9uIGVycm9yOiAiIDw8IGJ1ZjsKICAg
ICB9CiAKICAgICByZXR1cm4gc2hhZGVyOwpAQCAtNjQwLDcgKzY1NCwxMSBAQCB2b2lkIERpc3Bs
YXlPem9uZTo6ZHJhd1dpdGhUZXh0dXJlKEJ1ZmZlciAqYnVmZmVyKQogICAgICAgICBnbC0+bGlu
a1Byb2dyYW0obVByb2dyYW0pOwogICAgICAgICBHTGludCBsaW5rZWQ7CiAgICAgICAgIGdsLT5n
ZXRQcm9ncmFtaXYobVByb2dyYW0sIEdMX0xJTktfU1RBVFVTLCAmbGlua2VkKTsKLSAgICAgICAg
QVNTRVJUKGxpbmtlZCk7CisgICAgICAgIGlmICghbGlua2VkKQorICAgICAgICB7CisgICAgICAg
ICAgICBXQVJOKCkgPDwgInNoYWRlciBsaW5rIGZhaWxlZDogY2Fubm90IGRpc3BsYXkgYnVmZmVy
IjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICBtQ2VudGVyVW5pZm9y
bSAgICAgPSBnbC0+Z2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAiY2VudGVyIik7CiAgICAg
ICAgIG1XaW5kb3dTaXplVW5pZm9ybSA9IGdsLT5nZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0s
ICJ3aW5kb3dTaXplIik7CiAgICAgICAgIG1Cb3JkZXJTaXplVW5pZm9ybSA9IGdsLT5nZXRVbmlm
b3JtTG9jYXRpb24obVByb2dyYW0sICJib3JkZXJTaXplIik7CkBAIC04MTcsNyArODM1LDExIEBA
IHZvaWQgRGlzcGxheU96b25lOjp0ZXJtaW5hdGUoKQogICAgICAgICBTYWZlRGVsZXRlKG1FR0wp
OwogICAgIH0KIAorICAgIGRybU1vZGVGcmVlQ29ubmVjdG9yKG1Db25uZWN0b3IpOworICAgIG1D
b25uZWN0b3IgPSBudWxscHRyOworICAgIG1Nb2RlICAgICAgPSBudWxscHRyOwogICAgIGRybU1v
ZGVGcmVlQ3J0YyhtQ1JUQyk7CisgICAgbUNSVEMgPSBudWxscHRyOwogCiAgICAgaWYgKG1HQk0p
CiAgICAgewpAQCAtODI5LDcgKzg1MSw2IEBAIHZvaWQgRGlzcGxheU96b25lOjp0ZXJtaW5hdGUo
KQogfQogCiBTdXJmYWNlSW1wbCAqRGlzcGxheU96b25lOjpjcmVhdGVXaW5kb3dTdXJmYWNlKGNv
bnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdp
bmRvd1R5cGUgd2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKQEAgLTg0Myw3ICs4
NjQsNiBAQCBTdXJmYWNlSW1wbCAqRGlzcGxheU96b25lOjpjcmVhdGVXaW5kb3dTdXJmYWNlKGNv
bnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlP
em9uZTo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsK
ICAgICBFR0xBdHRyaWIgd2lkdGggID0gYXR0cmlicy5nZXQoRUdMX1dJRFRILCAwKTsKQEAgLTg1
OCw4ICs4NzgsOCBAQCBTdXJmYWNlSW1wbCAqRGlzcGxheU96b25lOjpjcmVhdGVQYnVmZmVyU3Vy
ZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCiB9CiAKIFN1cmZhY2VJbXBsICpE
aXNwbGF5T3pvbmU6OmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3Vy
ZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
Q2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVm
ZmVyIGNsaWVudEJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewog
ICAgIFVOSU1QTEVNRU5URUQoKTsKQEAgLTg2Nyw3ICs4ODcsNiBAQCBTdXJmYWNlSW1wbCAqRGlz
cGxheU96b25lOjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZh
Y2VTdGF0ZQogfQogCiBTdXJmYWNlSW1wbCAqRGlzcGxheU96b25lOjpjcmVhdGVQaXhtYXBTdXJm
YWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdGl2
ZVBpeG1hcFR5cGUgbmF0aXZlUGl4bWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKQEAg
LTg5NSw2ICs5MTQsOCBAQCBlZ2w6OkNvbmZpZ1NldCBEaXNwbGF5T3pvbmU6OmdlbmVyYXRlQ29u
ZmlncygpCiAgICAgY29uZmlnLmJpbmRUb1RleHR1cmVSR0JBID0gRUdMX1RSVUU7CiAgICAgY29u
ZmlnLnJlbmRlcmFibGVUeXBlICAgID0gRUdMX09QRU5HTF9FUzJfQklUOwogICAgIGNvbmZpZy5z
dXJmYWNlVHlwZSAgICAgICA9IEVHTF9XSU5ET1dfQklUIHwgRUdMX1BCVUZGRVJfQklUOworICAg
IGNvbmZpZy5yZW5kZXJUYXJnZXRGb3JtYXQgPSBHTF9SR0JBODsKKyAgICBjb25maWcuZGVwdGhT
dGVuY2lsRm9ybWF0ID0gR0xfREVQVEgyNF9TVEVOQ0lMODsKIAogICAgIGNvbmZpZ3MuYWRkKGNv
bmZpZyk7CiAgICAgcmV0dXJuIGNvbmZpZ3M7CkBAIC05MTYsMTIgKzkzNyw2IEBAIGJvb2wgRGlz
cGxheU96b25lOjppc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93
KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1lZ2w6OkVycm9yIERpc3BsYXlPem9uZTo6
Z2V0RHJpdmVyVmVyc2lvbihzdGQ6OnN0cmluZyAqdmVyc2lvbikgY29uc3QKLXsKLSAgICAqdmVy
c2lvbiA9ICIiOwotICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKLX0KLQogZWds
OjpFcnJvciBEaXNwbGF5T3pvbmU6OndhaXRDbGllbnQoKSBjb25zdAogewogICAgIC8vIFRPRE8o
ZmpoZW5pZ21hbikgSW1wbGVtZW50IHRoaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL0Rpc3BsYXlPem9uZS5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9v
em9uZS9EaXNwbGF5T3pvbmUuaAppbmRleCA1NWExODhjM2U4ZS4uYzg2N2FjMTViNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9l
Z2wvb3pvbmUvRGlzcGxheU96b25lLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9vem9uZS9EaXNwbGF5T3pvbmUuaApAQCAtMTA3LDI1
ICsxMDcsMjIgQEAgY2xhc3MgRGlzcGxheU96b25lIGZpbmFsIDogcHVibGljIERpc3BsYXlFR0wK
ICAgICAgICAgR0x1aW50IG1UZXh0dXJlOwogICAgIH07CiAKLSAgICBEaXNwbGF5T3pvbmUoKTsK
KyAgICBEaXNwbGF5T3pvbmUoY29uc3QgZWdsOjpEaXNwbGF5U3RhdGUgJnN0YXRlKTsKICAgICB+
RGlzcGxheU96b25lKCkgb3ZlcnJpZGU7CiAKICAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoZWds
OjpEaXNwbGF5ICpkaXNwbGF5KSBvdmVycmlkZTsKICAgICB2b2lkIHRlcm1pbmF0ZSgpIG92ZXJy
aWRlOwogCiAgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpT
dXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJz
KSBvdmVycmlkZTsKICAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3Qg
ZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMp
IG92ZXJyaWRlOwogICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZl
cihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9u
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGll
bnRCdWZmZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZlciwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRy
aWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwogICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQaXht
YXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5h
dGl2ZVBpeG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAKQEAgLTE0OSwxNCArMTQ2LDEz
IEBAIGNsYXNzIERpc3BsYXlPem9uZSBmaW5hbCA6IHB1YmxpYyBEaXNwbGF5RUdMCiAgICAgLy8g
b25lIHJlcXVpcmVkIHNvIHRoYXQgdGhlIHN1YnNlcXVlbnQgc3dhcEJ1ZmZlcnMgYWN0cyBhcyBl
eHBlY3RlZC4KICAgICB2b2lkIHNldFN3YXBJbnRlcnZhbChFR0xTdXJmYWNlIGRyYXdhYmxlLCBT
d2FwQ29udHJvbERhdGEgKmRhdGEpOwogCi0gICAgZWdsOjpFcnJvciBnZXREcml2ZXJWZXJzaW9u
KHN0ZDo6c3RyaW5nICp2ZXJzaW9uKSBjb25zdCBvdmVycmlkZTsKLQogICBwcml2YXRlOgogICAg
IEdMdWludCBtYWtlU2hhZGVyKEdMdWludCB0eXBlLCBjb25zdCBjaGFyICpzcmMpOwogICAgIHZv
aWQgZHJhd0J1ZmZlcihCdWZmZXIgKmJ1ZmZlcik7CiAgICAgdm9pZCBkcmF3V2l0aEJsaXQoQnVm
ZmVyICpidWZmZXIpOwogICAgIHZvaWQgZHJhd1dpdGhUZXh0dXJlKEJ1ZmZlciAqYnVmZmVyKTsK
ICAgICB2b2lkIGZsdXNoR0woKTsKKyAgICBib29sIGhhc1VzYWJsZVNjcmVlbihpbnQgZmQpOwog
ICAgIHZvaWQgcHJlc2VudFNjcmVlbigpOwogICAgIHN0YXRpYyB2b2lkIHBhZ2VGbGlwSGFuZGxl
cihpbnQgZmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBz
ZXF1ZW5jZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvU3VyZmFjZU96b25lLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvU3VyZmFjZU96b25l
LmNwcAppbmRleCA2MTRmZWQwZmRiZC4uZjFiMDU2YzJlYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvU3VyZmFj
ZU96b25lLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvZWdsL296b25lL1N1cmZhY2VPem9uZS5jcHAKQEAgLTI2LDcgKzI2LDcgQEAgU3Vy
ZmFjZU96b25lOjp+U3VyZmFjZU96b25lKCkKICAgICBkZWxldGUgbUJ1ZmZlcjsKIH0KIAotZWds
OjpFcnJvciBTdXJmYWNlT3pvbmU6OmluaXRpYWxpemUoKQorZWdsOjpFcnJvciBTdXJmYWNlT3pv
bmU6OmluaXRpYWxpemUoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKQogewogICAgIHJl
dHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0KQEAgLTQxLDcgKzQxLDcgQEAgZWdsOjpF
cnJvciBTdXJmYWNlT3pvbmU6Om1ha2VDdXJyZW50KCkKICAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfU1VDQ0VTUyk7CiB9CiAKLWVnbDo6RXJyb3IgU3VyZmFjZU96b25lOjpzd2FwKCkKK2VnbDo6
RXJyb3IgU3VyZmFjZU96b25lOjpzd2FwKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkK
IHsKICAgICBtQnVmZmVyLT5wcmVzZW50KCk7CiAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NV
Q0NFU1MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2VnbC9vem9uZS9TdXJmYWNlT3pvbmUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvU3VyZmFjZU96b25lLmgK
aW5kZXggMjRiOGVjOGM5NjkuLjkxOGI3MmIxMGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL296b25lL1N1cmZhY2VPem9u
ZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9lZ2wvb3pvbmUvU3VyZmFjZU96b25lLmgKQEAgLTI1LDEwICsyNSwxMCBAQCBjbGFzcyBTdXJm
YWNlT3pvbmUgOiBwdWJsaWMgU3VyZmFjZUdMCiAKICAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0
ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpIG92
ZXJyaWRlOwogCi0gICAgZWdsOjpFcnJvciBpbml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgZWds
OjpFcnJvciBpbml0aWFsaXplKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJp
ZGU7CiAgICAgZWdsOjpFcnJvciBtYWtlQ3VycmVudCgpIG92ZXJyaWRlOwogCi0gICAgZWdsOjpF
cnJvciBzd2FwKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBzd2FwKGNvbnN0IERpc3BsYXlJ
bXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciBwb3N0U3ViQnVmZmVy
KEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSBvdmVycmlk
ZTsKICAgICBlZ2w6OkVycm9yIHF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmli
dXRlLCB2b2lkICoqdmFsdWUpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgYmluZFRleEltYWdl
KGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9mb3Jt
YXR1dGlsc2dsLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9nbC9mb3JtYXR1dGlsc2dsLmNwcAppbmRleCAwYjJkYmFlNTQwNi4uYzUyMTliNGI4YmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC9mb3JtYXR1dGlsc2dsLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZ2wvZm9ybWF0dXRpbHNnbC5jcHAKQEAgLTI1NywxMCArMjU3LDcg
QEAgc3RhdGljIEludGVybmFsRm9ybWF0SW5mb01hcCBCdWlsZEludGVybmFsRm9ybWF0SW5mb01h
cCgpCiAKIHN0YXRpYyBjb25zdCBJbnRlcm5hbEZvcm1hdEluZm9NYXAgJkdldEludGVybmFsRm9y
bWF0TWFwKCkKIHsKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCiAgICAgc3RhdGlj
IGNvbnN0IEludGVybmFsRm9ybWF0SW5mb01hcCBmb3JtYXRNYXAgPSBCdWlsZEludGVybmFsRm9y
bWF0SW5mb01hcCgpOwotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogICAgIHJldHVybiBm
b3JtYXRNYXA7CiB9CiAKQEAgLTI3OSwxMCArMjc2LDcgQEAgY29uc3QgSW50ZXJuYWxGb3JtYXQg
JkdldEludGVybmFsRm9ybWF0SW5mbyhHTGVudW0gaW50ZXJuYWxGb3JtYXQsIFN0YW5kYXJkR0wg
c3QKICAgICAgICAgfQogICAgIH0KIAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9ycyIK
ICAgICBzdGF0aWMgY29uc3QgSW50ZXJuYWxGb3JtYXQgZGVmYXVsdEludGVybmFsRm9ybWF0Owot
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogICAgIHJldHVybiBkZWZhdWx0SW50ZXJuYWxG
b3JtYXQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC9nbHgvRGlzcGxheUdMWC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Rpc3BsYXlHTFguY3BwCmluZGV4IDAz
NThhNDI4ZWQ1Li5hOWQ0MThmN2Q0MyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9EaXNwbGF5R0xYLmNwcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Rpc3BsYXlH
TFguY3BwCkBAIC0yMSw1NiArMjEsNiBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2ds
L2dseC9XaW5kb3dTdXJmYWNlR0xYLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wv
UmVuZGVyZXJHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xf
dXRpbHMuaCIKLSNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9saWJYTlZDdHJsL05WQ3RybC5oIgotI2lu
Y2x1ZGUgInRoaXJkX3BhcnR5L2xpYlhOVkN0cmwvTlZDdHJsTGliLmgiCi0KLW5hbWVzcGFjZQot
ewotCi0vLyBTY2FuIC9ldGMvYXRpL2FtZHBjc2RiLmRlZmF1bHQgZm9yICJSZWxlYXNlVmVyc2lv
biIuCi0vLyBSZXR1cm4gZW1wdHkgc3RyaW5nIG9uIGZhaWxpbmcuCi1lZ2w6OkVycm9yIEdldEFN
RERyaXZlclZlcnNpb24oc3RkOjpzdHJpbmcgKnZlcnNpb24pCi17Ci0gICAgKnZlcnNpb24gPSAi
IjsKLQotICAgIGNvbnN0IGNoYXIga0FNRERyaXZlckluZm9GaWxlTmFtZVtdID0gIi9ldGMvYXRp
L2FtZHBjc2RiLmRlZmF1bHQiOwotICAgIHN0ZDo6aWZzdHJlYW0gZmlsZShrQU1ERHJpdmVySW5m
b0ZpbGVOYW1lKTsKLQotICAgIGlmICghZmlsZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlZ2w6
OkVycm9yKEVHTF9TVUNDRVNTKTsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0cmluZyBsaW5lOwotICAg
IHdoaWxlIChzdGQ6OmdldGxpbmUoZmlsZSwgbGluZSkpCi0gICAgewotICAgICAgICBzdGF0aWMg
Y29uc3QgY2hhciBrUmVsZWFzZVZlcnNpb25bXSA9ICJSZWxlYXNlVmVyc2lvbj0iOwotICAgICAg
ICBpZiAobGluZS5jb21wYXJlKDAsIHN0ZDo6c3RybGVuKGtSZWxlYXNlVmVyc2lvbiksIGtSZWxl
YXNlVmVyc2lvbikgIT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjb25zdCBzaXplX3QgYmVnaW4gPSBsaW5lLmZpbmRfZmlyc3Rfb2Yo
IjAxMjM0NTY3ODkiKTsKLSAgICAgICAgaWYgKGJlZ2luID09IHN0ZDo6c3RyaW5nOjpucG9zKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGNv
bnN0IHNpemVfdCBlbmQgPSBsaW5lLmZpbmRfZmlyc3Rfbm90X29mKCIwMTIzNDU2Nzg5LiIsIGJl
Z2luKTsKLSAgICAgICAgaWYgKGVuZCA9PSBzdGQ6OnN0cmluZzo6bnBvcykKLSAgICAgICAgewot
ICAgICAgICAgICAgKnZlcnNpb24gPSBsaW5lLnN1YnN0cihiZWdpbik7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICAqdmVyc2lvbiA9IGxpbmUuc3Vic3Ry
KGJlZ2luLCBlbmQgLSBiZWdpbik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGVnbDo6RXJy
b3IoRUdMX1NVQ0NFU1MpOwotICAgIH0KLSAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VT
Uyk7Ci19Ci0KLX0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKIAogbmFtZXNwYWNlIHJ4CiB7CkBA
IC0xMDYsOCArNTYsOCBAQCBjbGFzcyBGdW5jdGlvbnNHTEdMWCA6IHB1YmxpYyBGdW5jdGlvbnNH
TAogICAgIFBGTkdFVFBST0NQUk9DIG1HZXRQcm9jOwogfTsKIAotRGlzcGxheUdMWDo6RGlzcGxh
eUdMWCgpCi0gICAgOiBEaXNwbGF5R0woKSwKK0Rpc3BsYXlHTFg6OkRpc3BsYXlHTFgoY29uc3Qg
ZWdsOjpEaXNwbGF5U3RhdGUgJnN0YXRlKQorICAgIDogRGlzcGxheUdMKHN0YXRlKSwKICAgICAg
IG1GdW5jdGlvbnNHTChudWxscHRyKSwKICAgICAgIG1SZXF1ZXN0ZWRWaXN1YWwoLTEpLAogICAg
ICAgbUNvbnRleHRDb25maWcobnVsbHB0ciksCkBAIC0zNTAsNyArMzAwLDcgQEAgZWdsOjpFcnJv
ciBEaXNwbGF5R0xYOjppbml0aWFsaXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkKICAgICBib29s
IGlzT3BlbkdMRVMgPQogICAgICAgICBlZ2xBdHRyaWJ1dGVzLmdldChFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9BTkdMRSwgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfREVGQVVMVF9BTkdMRSkgPT0K
ICAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEU7Ci0gICAgaWYg
KGlzT3BlbkdMRVMgJiYgKHZlbmRvciA9PSBWRU5ET1JfSURfSU5URUwgfHwgdmVuZG9yID09IFZF
TkRPUl9JRF9OVklESUEpKQorICAgIGlmIChpc09wZW5HTEVTICYmIChJc0ludGVsKHZlbmRvcikg
fHwgSXNOdmlkaWEodmVuZG9yKSkpCiAgICAgewogICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfTk9UX0lOSVRJQUxJWkVELCAiSW50ZWwgb3IgTlZJRElBIE9wZW5HTCBFUyBkcml2ZXJzIGFy
ZSBub3Qgc3VwcG9ydGVkLiIpOwogICAgIH0KQEAgLTM4MiwyMyArMzMyLDIxIEBAIHZvaWQgRGlz
cGxheUdMWDo6dGVybWluYXRlKCkKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlHTFg6OmNyZWF0
ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNv
bmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewot
ICAgIEFTU0VSVChjb25maWdJZFRvR0xYQ29uZmlnLmNvdW50KGNvbmZpZ3VyYXRpb24tPmNvbmZp
Z0lEKSA+IDApOwotICAgIGdseDo6RkJDb25maWcgZmJDb25maWcgPSBjb25maWdJZFRvR0xYQ29u
ZmlnW2NvbmZpZ3VyYXRpb24tPmNvbmZpZ0lEXTsKKyAgICBBU1NFUlQoY29uZmlnSWRUb0dMWENv
bmZpZy5jb3VudChzdGF0ZS5jb25maWctPmNvbmZpZ0lEKSA+IDApOworICAgIGdseDo6RkJDb25m
aWcgZmJDb25maWcgPSBjb25maWdJZFRvR0xYQ29uZmlnW3N0YXRlLmNvbmZpZy0+Y29uZmlnSURd
OwogCiAgICAgcmV0dXJuIG5ldyBXaW5kb3dTdXJmYWNlR0xYKHN0YXRlLCBtR0xYLCB0aGlzLCBn
ZXRSZW5kZXJlcigpLCB3aW5kb3csIG1HTFguZ2V0RGlzcGxheSgpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtQ29udGV4dCwgZmJDb25maWcpOwogfQogCiBTdXJmYWNlSW1wbCAq
RGlzcGxheUdMWDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUg
JnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQog
ewotICAgIEFTU0VSVChjb25maWdJZFRvR0xYQ29uZmlnLmNvdW50KGNvbmZpZ3VyYXRpb24tPmNv
bmZpZ0lEKSA+IDApOwotICAgIGdseDo6RkJDb25maWcgZmJDb25maWcgPSBjb25maWdJZFRvR0xY
Q29uZmlnW2NvbmZpZ3VyYXRpb24tPmNvbmZpZ0lEXTsKKyAgICBBU1NFUlQoY29uZmlnSWRUb0dM
WENvbmZpZy5jb3VudChzdGF0ZS5jb25maWctPmNvbmZpZ0lEKSA+IDApOworICAgIGdseDo6RkJD
b25maWcgZmJDb25maWcgPSBjb25maWdJZFRvR0xYQ29uZmlnW3N0YXRlLmNvbmZpZy0+Y29uZmln
SURdOwogCiAgICAgRUdMaW50IHdpZHRoICA9IHN0YXRpY19jYXN0PEVHTGludD4oYXR0cmlicy5n
ZXQoRUdMX1dJRFRILCAwKSk7CiAgICAgRUdMaW50IGhlaWdodCA9IHN0YXRpY19jYXN0PEVHTGlu
dD4oYXR0cmlicy5nZXQoRUdMX0hFSUdIVCwgMCkpOwpAQCAtNDA5LDggKzM1Nyw4IEBAIFN1cmZh
Y2VJbXBsICpEaXNwbGF5R0xYOjpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZh
Y2VTdGF0ZSAmc3RhdGUsCiB9CiAKIFN1cmZhY2VJbXBsICpEaXNwbGF5R0xYOjpjcmVhdGVQYnVm
ZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
ZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIHNoYXJlSGFuZGxlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0
cmlidXRlTWFwICZhdHRyaWJzKQogewogICAgIFVOSU1QTEVNRU5URUQoKTsKQEAgLTQxOCw3ICsz
NjYsNiBAQCBTdXJmYWNlSW1wbCAqRGlzcGxheUdMWDo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRC
dWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJgogfQogCiBTdXJmYWNlSW1wbCAqRGlzcGxh
eUdMWDo6Y3JlYXRlUGl4bWFwU3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6
OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0aXZlUGl4bWFwLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAg
JmF0dHJpYnMpCiB7CkBAIC00NjksNzQgKzQxNiw2NyBAQCBlZ2w6OkVycm9yIERpc3BsYXlHTFg6
OmluaXRpYWxpemVDb250ZXh0KGdseDo6RkJDb25maWcgY29uZmlnLAogICAgICAgICByZXR1cm4g
Y3JlYXRlQ29udGV4dEF0dHJpYnMoY29uZmlnLCByZXF1ZXN0ZWRWZXJzaW9uLCBwcm9maWxlTWFz
aywgY29udGV4dCk7CiAgICAgfQogCi0gICAgLy8gSXQgaXMgY29tbW9ubHkgYXNzdW1lZCB0aGF0
IGdsWENyZWF0ZUNvbnRleHRBdHRyaWIgd2lsbCBjcmVhdGUgYSBjb250ZXh0Ci0gICAgLy8gb2Yg
dGhlIGhpZ2hlc3QgdmVyc2lvbiBwb3NzaWJsZSBidXQgaXQgaXMgbm90IHNwZWNpZmllZCBpbiB0
aGUgc3BlYyBhbmQKLSAgICAvLyBpcyBub3QgdHJ1ZSBvbiB0aGUgTWVzYSBkcml2ZXJzLiBPbiBN
ZXNhLCBJbnN0ZWFkIHdlIHRyeSB0byBjcmVhdGUgYQotICAgIC8vIGNvbnRleHQgcGVyIEdMIHZl
cnNpb24gdW50aWwgd2Ugc3VjY2VlZCwgc3RhcnRpbmcgZnJvbSBuZXdlciB2ZXJzaW9uLgotICAg
IC8vIE9uIGJvdGggTWVzYSBhbmQgb3RoZXIgZHJpdmVycyB3ZSB0cnkgdG8gY3JlYXRlIGEgZGVz
a3RvcCBjb250ZXh0IGFuZCBmYWxsCi0gICAgLy8gYmFjayB0byBFUyBjb250ZXh0LgotICAgIC8v
IFRoZSBjb2RlIGNvdWxkIGJlIHNpbXBsZXIgaWYgdGhlIE1lc2EgY29kZSBwYXRoIHdhcyB1c2Vk
IGZvciBhbGwgZHJpdmVycywKLSAgICAvLyBob3dldmVyIHRoZSBjb3N0IG9mIGZhaWxpbmcgYSBj
b250ZXh0IGNyZWF0aW9uIGNhbiBiZSBoaWdoICgzIG1pbGxpc2Vjb25kcwotICAgIC8vIGZvciB0
aGUgTlZJRElBIGRyaXZlcikuIFRoZSBnb29kIHRoaW5nIGlzIHRoYXQgZmFpbGVkIGNvbnRleHQg
Y3JlYXRpb24gb25seQotICAgIC8vIHRha2VzIDAuMSBtaWxsaXNlY29uZHMgb24gTWVzYS4KKyAg
ICAvLyBUaGUgb25seSB3YXkgdG8gZ2V0IGEgY29yZSBwcm9maWxlIGNvbnRleHQgb2YgdGhlIGhp
Z2hlc3QgdmVyc2lvbiB1c2luZworICAgIC8vIGdsWENyZWF0ZUNvbnRleHRBdHRyaWIgaXMgdG8g
dHJ5IGNyZWF0aW9uZyBjb250ZXh0cyBpbiBkZWNyZWFzaW5nIHZlcnNpb24KKyAgICAvLyBudW1i
ZXJzLiBJdCBtaWdodCBsb29rIHRoYXQgYXNraW5nIGZvciBhIGNvcmUgY29udGV4dCBvZiB2ZXJz
aW9uICgwLCAwKQorICAgIC8vIHdvcmtzIG9uIHNvbWUgZHJpdmVyIGJ1dCBpdCBjcmVhdGUgYSBf
Y29tcGF0aWJpbGl0eV8gY29udGV4dCBvZiB0aGUgaGlnaGVzdAorICAgIC8vIHZlcnNpb24gaW5z
dGVhZC4gVGhlIGNvc3Qgb2YgZmFpbGluZyBhIGNvbnRleHQgY3JlYXRpb24gaXMgc21hbGwgKDwg
MC4xIG1zKQorICAgIC8vIG9uIE1lc2EgYnV0IGlzIHVuZm9ydHVuYXRlbHkgYSBiaXQgZXhwZW5z
aXZlIG9uIHRoZSBOdmlkaWEgZHJpdmVyICh+M21zKS4KKyAgICAvLyBBbHNvIHRyeSB0byBnZXQg
YW55IERlc2t0b3AgR0wgY29udGV4dCwgYnV0IGlmIHRoYXQgZmFpbHMgZmFsbGJhY2sgdG8KKyAg
ICAvLyBhc2tpbmcgZm9yIE9wZW5HTCBFUyBjb250ZXh0cy4KIAogICAgIHN0cnVjdCBDb250ZXh0
Q3JlYXRpb25JbmZvCiAgICAgeworICAgICAgICBDb250ZXh0Q3JlYXRpb25JbmZvKEVHTGludCBk
aXNwbGF5VHlwZSwgaW50IHByb2ZpbGVGbGFnLCBnbDo6VmVyc2lvbiB2ZXJzaW9uKQorICAgICAg
ICAgICAgOiBkaXNwbGF5VHlwZShkaXNwbGF5VHlwZSksIHByb2ZpbGVGbGFnKHByb2ZpbGVGbGFn
KSwgdmVyc2lvbih2ZXJzaW9uKQorICAgICAgICB7CisgICAgICAgIH0KKwogICAgICAgICBFR0xp
bnQgZGlzcGxheVR5cGU7CiAgICAgICAgIGludCBwcm9maWxlRmxhZzsKLSAgICAgICAgT3B0aW9u
YWw8Z2w6OlZlcnNpb24+IHZlcnNpb247CisgICAgICAgIGdsOjpWZXJzaW9uIHZlcnNpb247CiAg
ICAgfTsKIAogICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICAvLyBGb3IgcmVndWxhciBkcml2
ZXJzIHdlIHRyeSB0byBjcmVhdGUgYSBjb3JlLCBjb21wYXRpYmlsaXR5LCB0aGVuIEVTIGNvbnRl
eHQuCi0gICAgLy8gV2l0aG91dCByZXF1aXJpbmcgYW55IHNwZWNpZmljIHZlcnNpb24gKHRoZSBP
cHRpb25hbCB2ZXJzaW9uIGlzIHVuZGVmaW5lZCkuCi0gICAgY29uc3QgQ29udGV4dENyZWF0aW9u
SW5mbyBjb250ZXh0c1RvVHJ5W10gPSB7Ci0gICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfT1BFTkdMX0FOR0xFLCBHTFhfQ09OVEVYVF9DT1JFX1BST0ZJTEVfQklUX0FSQiwge30gfSwK
LSAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsIDAsIHt9IH0s
Ci0gICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUsIEdMWF9D
T05URVhUX0VTMl9QUk9GSUxFX0JJVF9FWFQsIHt9IH0sCi0gICAgfTsKLQotICAgIC8vIE9uIE1l
c2Egd2UgdHJ5IHRvIGNyZWF0ZSBhIGNvcmUgY29udGV4dCwgZXhjZXB0IGZvciB2ZXJzaW9ucyBi
ZWxvdyAzLjIKLSAgICAvLyB3aGVyZSBpdCBpcyBub3QgYXBwbGljYWJsZS4gKGFuZCBmYWxsYmFj
ayB0byBFUyBhcyB3ZWxsKQotICAgIGNvbnN0IENvbnRleHRDcmVhdGlvbkluZm8gbWVzYUNvbnRl
eHRzVG9UcnlbXSA9IHsKLSAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xf
QU5HTEUsIEdMWF9DT05URVhUX0NPUkVfUFJPRklMRV9CSVRfQVJCLCB7IGdsOjpWZXJzaW9uKDQs
IDUpIH0gfSwKLSAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUs
IEdMWF9DT05URVhUX0NPUkVfUFJPRklMRV9CSVRfQVJCLCB7IGdsOjpWZXJzaW9uKDQsIDQpIH0g
fSwKLSAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsIEdMWF9D
T05URVhUX0NPUkVfUFJPRklMRV9CSVRfQVJCLCB7IGdsOjpWZXJzaW9uKDQsIDMpIH0gfSwKLSAg
ICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsIEdMWF9DT05URVhU
X0NPUkVfUFJPRklMRV9CSVRfQVJCLCB7IGdsOjpWZXJzaW9uKDQsIDIpIH0gfSwKLSAgICAgICAg
eyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsIEdMWF9DT05URVhUX0NPUkVf
UFJPRklMRV9CSVRfQVJCLCB7IGdsOjpWZXJzaW9uKDQsIDEpIH0gfSwKLSAgICAgICAgeyBFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsIEdMWF9DT05URVhUX0NPUkVfUFJPRklM
RV9CSVRfQVJCLCB7IGdsOjpWZXJzaW9uKDQsIDApIH0gfSwKLSAgICAgICAgeyBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsIEdMWF9DT05URVhUX0NPUkVfUFJPRklMRV9CSVRf
QVJCLCB7IGdsOjpWZXJzaW9uKDMsIDMpIH0gfSwKLSAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9PUEVOR0xfQU5HTEUsIEdMWF9DT05URVhUX0NPUkVfUFJPRklMRV9CSVRfQVJCLCB7
IGdsOjpWZXJzaW9uKDMsIDIpIH0gfSwKLSAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9PUEVOR0xfQU5HTEUsIDAsIHsgZ2w6OlZlcnNpb24oMywgMSkgfSB9LAotICAgICAgICB7IEVH
TF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgeyBnbDo6VmVyc2lvbigzLCAw
KSB9IH0sCi0gICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCAw
LCB7IGdsOjpWZXJzaW9uKDIsIDApIH0gfSwKLSAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9PUEVOR0xfQU5HTEUsIDAsIHsgZ2w6OlZlcnNpb24oMSwgNSkgfSB9LAotICAgICAgICB7
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgeyBnbDo6VmVyc2lvbigx
LCA0KSB9IH0sCi0gICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xF
LCAwLCB7IGdsOjpWZXJzaW9uKDEsIDMpIH0gfSwKLSAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9PUEVOR0xfQU5HTEUsIDAsIHsgZ2w6OlZlcnNpb24oMSwgMikgfSB9LAotICAgICAg
ICB7IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgeyBnbDo6VmVyc2lv
bigxLCAxKSB9IH0sCi0gICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FO
R0xFLCAwLCB7IGdsOjpWZXJzaW9uKDEsIDApIH0gfSwKLSAgICAgICAgeyBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRSwgR0xYX0NPTlRFWFRfRVMyX1BST0ZJTEVfQklUX0VY
VCwgeyBnbDo6VmVyc2lvbigzLCAyKSB9IH0sCi0gICAgICAgIHsgRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfT1BFTkdMRVNfQU5HTEUsIEdMWF9DT05URVhUX0VTMl9QUk9GSUxFX0JJVF9FWFQsIHsg
Z2w6OlZlcnNpb24oMywgMSkgfSB9LAotICAgICAgICB7IEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X09QRU5HTEVTX0FOR0xFLCBHTFhfQ09OVEVYVF9FUzJfUFJPRklMRV9CSVRfRVhULCB7IGdsOjpW
ZXJzaW9uKDMsIDApIH0gfSwKLSAgICAgICAgeyBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVO
R0xFU19BTkdMRSwgR0xYX0NPTlRFWFRfRVMyX1BST0ZJTEVfQklUX0VYVCwgeyBnbDo6VmVyc2lv
bigyLCAwKSB9IH0sCi0gICAgfTsKKyAgICBzdGQ6OnZlY3RvcjxDb250ZXh0Q3JlYXRpb25JbmZv
PiBjb250ZXh0c1RvVHJ5OworICAgIGNvbnRleHRzVG9UcnkuZW1wbGFjZV9iYWNrKEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgR0xYX0NPTlRFWFRfQ09SRV9QUk9GSUxFX0JJ
VF9BUkIsIGdsOjpWZXJzaW9uKDQsIDUpKTsKKyAgICBjb250ZXh0c1RvVHJ5LmVtcGxhY2VfYmFj
ayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsIEdMWF9DT05URVhUX0NPUkVf
UFJPRklMRV9CSVRfQVJCLCBnbDo6VmVyc2lvbig0LCA0KSk7CisgICAgY29udGV4dHNUb1RyeS5l
bXBsYWNlX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCBHTFhfQ09O
VEVYVF9DT1JFX1BST0ZJTEVfQklUX0FSQiwgZ2w6OlZlcnNpb24oNCwgMykpOworICAgIGNvbnRl
eHRzVG9UcnkuZW1wbGFjZV9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdM
RSwgR0xYX0NPTlRFWFRfQ09SRV9QUk9GSUxFX0JJVF9BUkIsIGdsOjpWZXJzaW9uKDQsIDIpKTsK
KyAgICBjb250ZXh0c1RvVHJ5LmVtcGxhY2VfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9P
UEVOR0xfQU5HTEUsIEdMWF9DT05URVhUX0NPUkVfUFJPRklMRV9CSVRfQVJCLCBnbDo6VmVyc2lv
big0LCAxKSk7CisgICAgY29udGV4dHNUb1RyeS5lbXBsYWNlX2JhY2soRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfT1BFTkdMX0FOR0xFLCBHTFhfQ09OVEVYVF9DT1JFX1BST0ZJTEVfQklUX0FSQiwg
Z2w6OlZlcnNpb24oNCwgMCkpOworICAgIGNvbnRleHRzVG9UcnkuZW1wbGFjZV9iYWNrKEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgR0xYX0NPTlRFWFRfQ09SRV9QUk9GSUxF
X0JJVF9BUkIsIGdsOjpWZXJzaW9uKDMsIDMpKTsKKyAgICBjb250ZXh0c1RvVHJ5LmVtcGxhY2Vf
YmFjayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUsIEdMWF9DT05URVhUX0NP
UkVfUFJPRklMRV9CSVRfQVJCLCBnbDo6VmVyc2lvbigzLCAyKSk7CisgICAgY29udGV4dHNUb1Ry
eS5lbXBsYWNlX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCAwLCBn
bDo6VmVyc2lvbigzLCAzKSk7CisKKyAgICAvLyBPbiBNZXNhLCBkbyBub3QgdHJ5IHRvIGNyZWF0
ZSBPcGVuR0wgY29udGV4dCB2ZXJzaW9ucyBiZXR3ZWVuIDMuMCBhbmQKKyAgICAvLyAzLjIgYmVj
YXVzZSBvZiBjb21wYXRpYmlsaXR5IHByb2JsZW1zLiBTZWUgY3JidWcuY29tLzY1OTAzMAorICAg
IGlmICghbUlzTWVzYSkKKyAgICB7CisgICAgICAgIGNvbnRleHRzVG9UcnkuZW1wbGFjZV9iYWNr
KEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwgMCwgZ2w6OlZlcnNpb24oMywg
MikpOworICAgICAgICBjb250ZXh0c1RvVHJ5LmVtcGxhY2VfYmFjayhFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9PUEVOR0xfQU5HTEUsIDAsIGdsOjpWZXJzaW9uKDMsIDEpKTsKKyAgICAgICAgY29u
dGV4dHNUb1RyeS5lbXBsYWNlX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FO
R0xFLCAwLCBnbDo6VmVyc2lvbigzLCAwKSk7CisgICAgfQorCisgICAgY29udGV4dHNUb1RyeS5l
bXBsYWNlX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCAwLCBnbDo6
VmVyc2lvbigyLCAxKSk7CisgICAgY29udGV4dHNUb1RyeS5lbXBsYWNlX2JhY2soRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCAwLCBnbDo6VmVyc2lvbigyLCAwKSk7CisgICAg
Y29udGV4dHNUb1RyeS5lbXBsYWNlX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdM
X0FOR0xFLCAwLCBnbDo6VmVyc2lvbigxLCA1KSk7CisgICAgY29udGV4dHNUb1RyeS5lbXBsYWNl
X2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCAwLCBnbDo6VmVyc2lv
bigxLCA0KSk7CisgICAgY29udGV4dHNUb1RyeS5lbXBsYWNlX2JhY2soRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfT1BFTkdMX0FOR0xFLCAwLCBnbDo6VmVyc2lvbigxLCAzKSk7CisgICAgY29udGV4
dHNUb1RyeS5lbXBsYWNlX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xF
LCAwLCBnbDo6VmVyc2lvbigxLCAyKSk7CisgICAgY29udGV4dHNUb1RyeS5lbXBsYWNlX2JhY2so
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLCAwLCBnbDo6VmVyc2lvbigxLCAx
KSk7CisgICAgY29udGV4dHNUb1RyeS5lbXBsYWNlX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfT1BFTkdMX0FOR0xFLCAwLCBnbDo6VmVyc2lvbigxLCAwKSk7CisgICAgY29udGV4dHNUb1Ry
eS5lbXBsYWNlX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUsIEdM
WF9DT05URVhUX0VTMl9QUk9GSUxFX0JJVF9FWFQsIGdsOjpWZXJzaW9uKDMsIDIpKTsKKyAgICBj
b250ZXh0c1RvVHJ5LmVtcGxhY2VfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xF
U19BTkdMRSwgR0xYX0NPTlRFWFRfRVMyX1BST0ZJTEVfQklUX0VYVCwgZ2w6OlZlcnNpb24oMywg
MSkpOworICAgIGNvbnRleHRzVG9UcnkuZW1wbGFjZV9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX09QRU5HTEVTX0FOR0xFLCBHTFhfQ09OVEVYVF9FUzJfUFJPRklMRV9CSVRfRVhULCBnbDo6
VmVyc2lvbigzLCAwKSk7CisgICAgY29udGV4dHNUb1RyeS5lbXBsYWNlX2JhY2soRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUsIEdMWF9DT05URVhUX0VTMl9QUk9GSUxFX0JJ
VF9FWFQsIGdsOjpWZXJzaW9uKDIsIDApKTsKICAgICAvLyBjbGFuZy1mb3JtYXQgb24KIAotICAg
IGNvbnN0IENvbnRleHRDcmVhdGlvbkluZm8gKnRvVHJ5ID0gY29udGV4dHNUb1RyeTsKLSAgICBz
aXplX3QgdG9UcnlMZW5ndGggPSBBcnJheVNpemUoY29udGV4dHNUb1RyeSk7Ci0gICAgaWYgKG1J
c01lc2EpCi0gICAgewotICAgICAgICB0b1RyeSAgICAgICA9IG1lc2FDb250ZXh0c1RvVHJ5Owot
ICAgICAgICB0b1RyeUxlbmd0aCA9IEFycmF5U2l6ZShtZXNhQ29udGV4dHNUb1RyeSk7Ci0gICAg
fQotCiAgICAgLy8gTk9URTogYmVsb3cgd2UgcmV0dXJuIGFzIHNvb24gYXMgd2UncmUgYWJsZSB0
byBjcmVhdGUgYSBjb250ZXh0IHNvIHRoZQogICAgIC8vICJlcnJvciIgdmFyaWFibGUgaXMgRUdM
X1NVQ0NFU1Mgd2hlbiByZXR1cm5lZCBjb250cmFyeSB0byB0aGUgY29tbW9uIGlkaW9tCiAgICAg
Ly8gb2YgcmV0dXJuaW5nICJlcnJvciIgd2hlbiB0aGVyZSBpcyBhbiBhY3R1YWwgZXJyb3IuCi0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0b1RyeUxlbmd0aDsgKytpKQorICAgIGZvciAoY29u
c3QgYXV0byAmaW5mbyA6IGNvbnRleHRzVG9UcnkpCiAgICAgewotICAgICAgICBjb25zdCBDb250
ZXh0Q3JlYXRpb25JbmZvICZpbmZvID0gdG9UcnlbaV07CiAgICAgICAgIGlmIChyZXF1ZXN0ZWRE
aXNwbGF5VHlwZSAhPSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xFICYmCiAg
ICAgICAgICAgICByZXF1ZXN0ZWREaXNwbGF5VHlwZSAhPSBpbmZvLmRpc3BsYXlUeXBlKQogICAg
ICAgICB7CkBAIC03MTksNiArNjU5LDggQEAgZWdsOjpDb25maWdTZXQgRGlzcGxheUdMWDo6Z2Vu
ZXJhdGVDb25maWdzKCkKICAgICAgICAgLy8gVE9ETyhjd2FsbGV6KSBJIGhhdmUgbm8gaWRlYSB3
aGF0IHRoaXMgaXMKICAgICAgICAgY29uZmlnLm1hdGNoTmF0aXZlUGl4bWFwID0gRUdMX05PTkU7
CiAKKyAgICAgICAgY29uZmlnLmNvbG9yQ29tcG9uZW50VHlwZSA9IEVHTF9DT0xPUl9DT01QT05F
TlRfVFlQRV9GSVhFRF9FWFQ7CisKICAgICAgICAgaW50IGlkID0gY29uZmlncy5hZGQoY29uZmln
KTsKICAgICAgICAgY29uZmlnSWRUb0dMWENvbmZpZ1tpZF0gPSBnbHhDb25maWc7CiAgICAgfQpA
QCAtNzc3LDIyICs3MTksNiBAQCBlZ2w6OkVycm9yIERpc3BsYXlHTFg6OndhaXRDbGllbnQoKSBj
b25zdAogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0KIAotZWdsOjpFcnJv
ciBEaXNwbGF5R0xYOjpnZXREcml2ZXJWZXJzaW9uKHN0ZDo6c3RyaW5nICp2ZXJzaW9uKSBjb25z
dAotewotICAgIFZlbmRvcklEIHZlbmRvciA9IEdldFZlbmRvcklEKG1GdW5jdGlvbnNHTCk7Ci0K
LSAgICBzd2l0Y2ggKHZlbmRvcikKLSAgICB7Ci0gICAgICAgIGNhc2UgVkVORE9SX0lEX05WSURJ
QToKLSAgICAgICAgICAgIHJldHVybiBnZXROVklESUFEcml2ZXJWZXJzaW9uKHZlcnNpb24pOwot
ICAgICAgICBjYXNlIFZFTkRPUl9JRF9BTUQ6Ci0gICAgICAgICAgICByZXR1cm4gR2V0QU1ERHJp
dmVyVmVyc2lvbih2ZXJzaW9uKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICp2ZXJz
aW9uID0gIiI7Ci0gICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Ci0g
ICAgfQotfQotCiBlZ2w6OkVycm9yIERpc3BsYXlHTFg6OndhaXROYXRpdmUoRUdMaW50IGVuZ2lu
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN1cmZhY2UgKmRyYXdT
dXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAq
cmVhZFN1cmZhY2UpIGNvbnN0CkBAIC04OTIsNiArODE4LDkgQEAgY29uc3QgRnVuY3Rpb25zR0wg
KkRpc3BsYXlHTFg6OmdldEZ1bmN0aW9uc0dMKCkgY29uc3QKIHZvaWQgRGlzcGxheUdMWDo6Z2Vu
ZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNv
bnN0CiB7CiAgICAgb3V0RXh0ZW5zaW9ucy0+Y3JlYXRlQ29udGV4dFJvYnVzdG5lc3MgPSBtSGFz
QVJCQ3JlYXRlQ29udGV4dFJvYnVzdG5lc3M7CisKKyAgICAvLyBDb250ZXh0cyBhcmUgdmlydHVh
bGl6ZWQgc28gdGV4dHVyZXMgY2FuIGJlIHNoYXJlZCBnbG9iYWxseQorICAgIG91dEV4dGVuc2lv
bnMtPmRpc3BsYXlUZXh0dXJlU2hhcmVHcm91cCA9IHRydWU7CiB9CiAKIHZvaWQgRGlzcGxheUdM
WDo6Z2VuZXJhdGVDYXBzKGVnbDo6Q2FwcyAqb3V0Q2FwcykgY29uc3QKQEAgLTk1MywyOCArODgy
LDQgQEAgZWdsOjpFcnJvciBEaXNwbGF5R0xYOjpjcmVhdGVDb250ZXh0QXR0cmlicyhnbHg6OkZC
Q29uZmlnLAogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0KIAotZWdsOjpF
cnJvciBEaXNwbGF5R0xYOjpnZXROVklESUFEcml2ZXJWZXJzaW9uKHN0ZDo6c3RyaW5nICp2ZXJz
aW9uKSBjb25zdAotewotICAgICp2ZXJzaW9uID0gIiI7Ci0KLSAgICBpbnQgZXZlbnRCYXNlID0g
MDsKLSAgICBpbnQgZXJyb3JCYXNlID0gMDsKLSAgICBpZiAoWE5WQ1RSTFF1ZXJ5RXh0ZW5zaW9u
KG1YRGlzcGxheSwgJmV2ZW50QmFzZSwgJmVycm9yQmFzZSkpCi0gICAgewotICAgICAgICBpbnQg
c2NyZWVuQ291bnQgPSBTY3JlZW5Db3VudChtWERpc3BsYXkpOwotICAgICAgICBmb3IgKGludCBz
Y3JlZW4gPSAwOyBzY3JlZW4gPCBzY3JlZW5Db3VudDsgKytzY3JlZW4pCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGNoYXIgKmJ1ZmZlciA9IG51bGxwdHI7Ci0gICAgICAgICAgICBpZiAoWE5WQ1RS
TElzTnZTY3JlZW4obVhEaXNwbGF5LCBzY3JlZW4pICYmCi0gICAgICAgICAgICAgICAgWE5WQ1RS
TFF1ZXJ5U3RyaW5nQXR0cmlidXRlKG1YRGlzcGxheSwgc2NyZWVuLCAwLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVl9DVFJMX1NUUklOR19OVklESUFfRFJJ
VkVSX1ZFUlNJT04sICZidWZmZXIpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICp2
ZXJzaW9uID0gYnVmZmVyOwotICAgICAgICAgICAgICAgIFhGcmVlKGJ1ZmZlcik7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VD
Q0VTUyk7Ci19CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Rpc3BsYXlHTFguaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvRGlzcGxheUdMWC5oCmluZGV4IDc5MTk4
Mzk1ZGVkLi5jZDU0MmNjNmE1OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9EaXNwbGF5R0xYLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9EaXNwbGF5R0xYLmgK
QEAgLTM4LDI1ICszOCwyMiBAQCBzdHJ1Y3QgU3dhcENvbnRyb2xEYXRhCiBjbGFzcyBEaXNwbGF5
R0xYIDogcHVibGljIERpc3BsYXlHTAogewogICBwdWJsaWM6Ci0gICAgRGlzcGxheUdMWCgpOwor
ICAgIERpc3BsYXlHTFgoY29uc3QgZWdsOjpEaXNwbGF5U3RhdGUgJnN0YXRlKTsKICAgICB+RGlz
cGxheUdMWCgpIG92ZXJyaWRlOwogCiAgICAgZWdsOjpFcnJvciBpbml0aWFsaXplKGVnbDo6RGlz
cGxheSAqZGlzcGxheSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB0ZXJtaW5hdGUoKSBvdmVycmlkZTsK
IAogICAgIFN1cmZhY2VJbXBsICpjcmVhdGVXaW5kb3dTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFj
ZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3Zl
cnJpZGU7CiAgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJTdXJmYWNlKGNvbnN0IGVnbDo6
U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVy
cmlkZTsKICAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoY29u
c3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVm
ZmVyIHNoYXJlSGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRl
TWFwICZhdHRyaWJzKSBvdmVycmlkZTsKICAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGl4bWFwU3Vy
ZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVQ
aXhtYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpB
dHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwogCkBAIC03Niw4ICs3Myw2IEBAIGNsYXNz
IERpc3BsYXlHTFggOiBwdWJsaWMgRGlzcGxheUdMCiAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVnbDo6U3VyZmFjZSAqZHJhd1N1cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVn
bDo6U3VyZmFjZSAqcmVhZFN1cmZhY2UpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgZWdsOjpFcnJv
ciBnZXREcml2ZXJWZXJzaW9uKHN0ZDo6c3RyaW5nICp2ZXJzaW9uKSBjb25zdCBvdmVycmlkZTsK
LQogICAgIC8vIFN5bmNocm9uaXplcyB3aXRoIHRoZSBYIHNlcnZlciwgaWYgdGhlIGRpc3BsYXkg
aGFzIGJlZW4gb3BlbmVkIGJ5IEFOR0xFLgogICAgIC8vIENhbGxpbmcgdGhpcyBpcyByZXF1aXJl
ZCBhdCB0aGUgZW5kIG9mIGV2ZXJ5IGZ1bmN0aW9ucyB0aGF0IGRvZXMgYnVmZmVyZWQKICAgICAv
LyBYIGNhbGxzIChub3QgZm9yIGdsWCBjYWxscykgb3RoZXJ3aXNlIHRoZXJlIG1pZ2h0IGJlIHJh
Y2UgY29uZGl0aW9ucwpAQCAtMTA4LDggKzEwMyw2IEBAIGNsYXNzIERpc3BsYXlHTFggOiBwdWJs
aWMgRGlzcGxheUdMCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcHJv
ZmlsZU1hc2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHg6OkNvbnRl
eHQgKmNvbnRleHQpIGNvbnN0OwogCi0gICAgZWdsOjpFcnJvciBnZXROVklESUFEcml2ZXJWZXJz
aW9uKHN0ZDo6c3RyaW5nICp2ZXJzaW9uKSBjb25zdDsKLQogICAgIEZ1bmN0aW9uc0dMICptRnVu
Y3Rpb25zR0w7CiAKICAgICBzdGQ6Om1hcDxpbnQsIGdseDo6RkJDb25maWc+IGNvbmZpZ0lkVG9H
TFhDb25maWc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvZ2x4L1BidWZmZXJTdXJmYWNlR0xYLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvUGJ1ZmZlclN1cmZhY2VHTFgu
Y3BwCmluZGV4IGE5NzAyMWI0MDJhLi41N2UyMjgzMWI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9QYnVmZmVyU3VyZmFj
ZUdMWC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2dsL2dseC9QYnVmZmVyU3VyZmFjZUdMWC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgUGJ1ZmZl
clN1cmZhY2VHTFg6On5QYnVmZmVyU3VyZmFjZUdMWCgpCiAgICAgfQogfQogCi1lZ2w6OkVycm9y
IFBidWZmZXJTdXJmYWNlR0xYOjppbml0aWFsaXplKCkKK2VnbDo6RXJyb3IgUGJ1ZmZlclN1cmZh
Y2VHTFg6OmluaXRpYWxpemUoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKQogewogICAg
IC8vIEF2b2lkIGNyZWF0aW5nIDAtc2l6ZWQgUEJ1ZmZlcnMgYXMgaXQgZmFpbHMgb24gdGhlIElu
dGVsIE1lc2EgZHJpdmVyCiAgICAgLy8gYXMgY29tbWVudGVkIG9uIGh0dHBzOi8vYnVncy5mcmVl
ZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTM4ODY5IHNvIHdlCkBAIC04Miw3ICs4Miw3IEBA
IGVnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VHTFg6Om1ha2VDdXJyZW50KCkKICAgICByZXR1cm4g
ZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKLWVnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VH
TFg6OnN3YXAoKQorZWdsOjpFcnJvciBQYnVmZmVyU3VyZmFjZUdMWDo6c3dhcChjb25zdCBEaXNw
bGF5SW1wbCAqZGlzcGxheUltcGwpCiB7CiAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NF
U1MpOwogfQpAQCAtMTQwLDQgKzE0MCw0IEBAIGVnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VHTFg6
OmNoZWNrRm9yUmVzaXplKCkKICAgICAvLyBUaGUgc2l6ZSBvZiBwYnVmZmVycyBuZXZlciBjaGFu
Z2UKICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9Ci19Cit9ICAvLyBuYW1l
c3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9nbHgvUGJ1ZmZlclN1cmZhY2VHTFguaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvUGJ1ZmZlclN1cmZhY2VHTFguaApp
bmRleCBkMzQ2NjM0YjIwYS4uY2YzOTBlNTQ2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvUGJ1ZmZlclN1cmZhY2VHTFgu
aAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
Z2x4L1BidWZmZXJTdXJmYWNlR0xYLmgKQEAgLTMwLDEwICszMCwxMCBAQCBjbGFzcyBQYnVmZmVy
U3VyZmFjZUdMWCA6IHB1YmxpYyBTdXJmYWNlR0xYCiAgICAgICAgICAgICAgICAgICAgICAgZ2x4
OjpGQkNvbmZpZyBmYkNvbmZpZyk7CiAgICAgflBidWZmZXJTdXJmYWNlR0xYKCkgb3ZlcnJpZGU7
CiAKLSAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9y
IGluaXRpYWxpemUoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKSBvdmVycmlkZTsKICAg
ICBlZ2w6OkVycm9yIG1ha2VDdXJyZW50KCkgb3ZlcnJpZGU7CiAKLSAgICBlZ2w6OkVycm9yIHN3
YXAoKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHN3YXAoY29uc3QgRGlzcGxheUltcGwgKmRp
c3BsYXlJbXBsKSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIHBvc3RTdWJCdWZmZXIoRUdMaW50
IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpIG92ZXJyaWRlOwogICAg
IGVnbDo6RXJyb3IgcXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTGludCBhdHRyaWJ1dGUsIHZv
aWQgKip2YWx1ZSkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciBiaW5kVGV4SW1hZ2UoZ2w6OlRl
eHR1cmUgKnRleHR1cmUsIEVHTGludCBidWZmZXIpIG92ZXJyaWRlOwpAQCAtNTksNiArNTksNiBA
QCBjbGFzcyBQYnVmZmVyU3VyZmFjZUdMWCA6IHB1YmxpYyBTdXJmYWNlR0xYCiAgICAgZ2x4OjpQ
YnVmZmVyIG1QYnVmZmVyOwogfTsKIAotfQorfSAgLy8gbmFtZXNwYWNlIHJ4CiAKICNlbmRpZiAv
LyBMSUJBTkdMRV9SRU5ERVJFUl9HTF9HTFhfUEJVRkZFUlNVUkZBQ0VHTFhfSF8KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgv
V2luZG93U3VyZmFjZUdMWC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvZ2x4L1dpbmRvd1N1cmZhY2VHTFguY3BwCmluZGV4IDIxYjFiMzE2ZjQ3
Li5jMzU3ZjlkNDFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2dseC9XaW5kb3dTdXJmYWNlR0xYLmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1dpbmRvd1N1cmZh
Y2VHTFguY3BwCkBAIC02Myw3ICs2Myw3IEBAIFdpbmRvd1N1cmZhY2VHTFg6On5XaW5kb3dTdXJm
YWNlR0xYKCkKICAgICBtR0xYRGlzcGxheS0+c3luY1hDb21tYW5kcygpOwogfQogCi1lZ2w6OkVy
cm9yIFdpbmRvd1N1cmZhY2VHTFg6OmluaXRpYWxpemUoKQorZWdsOjpFcnJvciBXaW5kb3dTdXJm
YWNlR0xYOjppbml0aWFsaXplKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkKIHsKICAg
ICAvLyBDaGVjayB0aGF0IHRoZSB3aW5kb3cncyB2aXN1YWwgSUQgaXMgdmFsaWQsIGFzIHBhcnQg
b2YgdGhlIEFNR0xFX3gxMV92aXN1YWwKICAgICAvLyBleHRlbnNpb24uCkBAIC0xNDEsNyArMTQx
LDcgQEAgZWdsOjpFcnJvciBXaW5kb3dTdXJmYWNlR0xYOjptYWtlQ3VycmVudCgpCiAgICAgcmV0
dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCi1lZ2w6OkVycm9yIFdpbmRvd1N1cmZh
Y2VHTFg6OnN3YXAoKQorZWdsOjpFcnJvciBXaW5kb3dTdXJmYWNlR0xYOjpzd2FwKGNvbnN0IERp
c3BsYXlJbXBsICpkaXNwbGF5SW1wbCkKIHsKICAgICAvLyBXZSBuZWVkIHRvIHN3YXAgYmVmb3Jl
IHJlc2l6aW5nIGFzIHNvbWUgZHJpdmVycyBjbG9iYmVyIHRoZSBiYWNrIGJ1ZmZlcgogICAgIC8v
IHdoZW4gdGhlIHdpbmRvdyBpcyByZXNpemVkLgpAQCAtMjQxLDQgKzI0MSw0IEBAIGJvb2wgV2lu
ZG93U3VyZmFjZUdMWDo6Z2V0V2luZG93RGltZW5zaW9ucyhXaW5kb3cgd2luZG93LCB1bnNpZ25l
ZCBpbnQgKndpZHRoLCB1CiAgICAgcmV0dXJuIFhHZXRHZW9tZXRyeShtRGlzcGxheSwgd2luZG93
LCAmcm9vdCwgJngsICZ5LCB3aWR0aCwgaGVpZ2h0LCAmYm9yZGVyLCAmZGVwdGgpICE9IDA7CiB9
CiAKLX0KK30gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9XaW5kb3dTdXJmYWNlR0xYLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1dpbmRv
d1N1cmZhY2VHTFguaAppbmRleCAwY2RkYTk2ZTY3Mi4uMDA1MTVjYzU0ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvV2lu
ZG93U3VyZmFjZUdMWC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9nbC9nbHgvV2luZG93U3VyZmFjZUdMWC5oCkBAIC0zMiwxMCArMzIsMTAgQEAg
Y2xhc3MgV2luZG93U3VyZmFjZUdMWCA6IHB1YmxpYyBTdXJmYWNlR0xYCiAgICAgICAgICAgICAg
ICAgICAgICBnbHg6OkZCQ29uZmlnIGZiQ29uZmlnKTsKICAgICB+V2luZG93U3VyZmFjZUdMWCgp
IG92ZXJyaWRlOwogCi0gICAgZWdsOjpFcnJvciBpbml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAg
ZWdsOjpFcnJvciBpbml0aWFsaXplKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgb3Zl
cnJpZGU7CiAgICAgZWdsOjpFcnJvciBtYWtlQ3VycmVudCgpIG92ZXJyaWRlOwogCi0gICAgZWds
OjpFcnJvciBzd2FwKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBzd2FwKGNvbnN0IERpc3Bs
YXlJbXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciBwb3N0U3ViQnVm
ZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSBvdmVy
cmlkZTsKICAgICBlZ2w6OkVycm9yIHF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0
cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgYmluZFRleElt
YWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKQEAgLTY4
LDYgKzY4LDYgQEAgY2xhc3MgV2luZG93U3VyZmFjZUdMWCA6IHB1YmxpYyBTdXJmYWNlR0xYCiAg
ICAgU3dhcENvbnRyb2xEYXRhIG1Td2FwQ29udHJvbDsKIH07CiAKLX0KK30gIC8vIG5hbWVzcGFj
ZSByeAogCiAjZW5kaWYgLy8gTElCQU5HTEVfUkVOREVSRVJfR0xfR0xYX1dJTkRPV1NVUkZBQ0VH
TFhfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmNwcAppbmRleCAxNWNm
NjI3MWEzYy4uMzExNzRiYThjNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmNwcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvcmVuZGVyZXJnbF91
dGlscy5jcHAKQEAgLTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9DYXBzLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9nbC9GdW5jdGlvbnNHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL1F1
ZXJ5R0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9Xb3JrYXJvdW5kc0dMLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvZm9ybWF0dXRpbHNnbC5oIgogCkBAIC0x
NjIsNyArMTYzLDggQEAgc3RhdGljIEdMZmxvYXQgUXVlcnlHTEZsb2F0UmFuZ2UoY29uc3QgRnVu
Y3Rpb25zR0wgKmZ1bmN0aW9ucywgR0xlbnVtIG5hbWUsIHNpemUKIHN0YXRpYyBnbDo6VHlwZVBy
ZWNpc2lvbiBRdWVyeVR5cGVQcmVjaXNpb24oY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywg
R0xlbnVtIHNoYWRlclR5cGUsIEdMZW51bSBwcmVjaXNpb25UeXBlKQogewogICAgIGdsOjpUeXBl
UHJlY2lzaW9uIHByZWNpc2lvbjsKLSAgICBmdW5jdGlvbnMtPmdldFNoYWRlclByZWNpc2lvbkZv
cm1hdChzaGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlLCBwcmVjaXNpb24ucmFuZ2UsICZwcmVjaXNp
b24ucHJlY2lzaW9uKTsKKyAgICBmdW5jdGlvbnMtPmdldFNoYWRlclByZWNpc2lvbkZvcm1hdChz
aGFkZXJUeXBlLCBwcmVjaXNpb25UeXBlLCBwcmVjaXNpb24ucmFuZ2UuZGF0YSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcmVjaXNpb24ucHJlY2lzaW9uKTsK
ICAgICByZXR1cm4gcHJlY2lzaW9uOwogfQogCkBAIC0xODEsOCArMTgzLDEyIEBAIHN0YXRpYyB2
b2lkIExpbWl0VmVyc2lvbihnbDo6VmVyc2lvbiAqY3VyVmVyc2lvbiwgY29uc3QgZ2w6OlZlcnNp
b24gJm1heFZlcnNpb24pCiAgICAgfQogfQogCi12b2lkIEdlbmVyYXRlQ2Fwcyhjb25zdCBGdW5j
dGlvbnNHTCAqZnVuY3Rpb25zLCBnbDo6Q2FwcyAqY2FwcywgZ2w6OlRleHR1cmVDYXBzTWFwICp0
ZXh0dXJlQ2Fwc01hcCwKLSAgICAgICAgICAgICAgICAgIGdsOjpFeHRlbnNpb25zICpleHRlbnNp
b25zLCBnbDo6VmVyc2lvbiAqbWF4U3VwcG9ydGVkRVNWZXJzaW9uKQordm9pZCBHZW5lcmF0ZUNh
cHMoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywKKyAgICAgICAgICAgICAgICAgIGNvbnN0
IFdvcmthcm91bmRzR0wgJndvcmthcm91bmRzLAorICAgICAgICAgICAgICAgICAgZ2w6OkNhcHMg
KmNhcHMsCisgICAgICAgICAgICAgICAgICBnbDo6VGV4dHVyZUNhcHNNYXAgKnRleHR1cmVDYXBz
TWFwLAorICAgICAgICAgICAgICAgICAgZ2w6OkV4dGVuc2lvbnMgKmV4dGVuc2lvbnMsCisgICAg
ICAgICAgICAgICAgICBnbDo6VmVyc2lvbiAqbWF4U3VwcG9ydGVkRVNWZXJzaW9uKQogewogICAg
IC8vIFRleHR1cmUgZm9ybWF0IHN1cHBvcnQgY2hlY2tzCiAgICAgY29uc3QgZ2w6OkZvcm1hdFNl
dCAmYWxsRm9ybWF0cyA9IGdsOjpHZXRBbGxTaXplZEludGVybmFsRm9ybWF0cygpOwpAQCAtNTQ3
LDE2ICs1NTMsMTEgQEAgdm9pZCBHZW5lcmF0ZUNhcHMoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0
aW9ucywgZ2w6OkNhcHMgKmNhcHMsIGdsOjpUZXh0dXJlQ2Fwc00KICAgICAgICAgTGltaXRWZXJz
aW9uKG1heFN1cHBvcnRlZEVTVmVyc2lvbiwgZ2w6OlZlcnNpb24oMiwgMCkpOwogICAgIH0KIAot
ICAgIC8vIENoZWNrIGlmIGluZGV4IGNvbnN0YW50IHNhbXBsZXIgYXJyYXkgaW5kZXhpbmcgaXMg
c3VwcG9ydGVkCi0gICAgaWYgKCFmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDQs
IDApKSAmJgotICAgICAgICAhZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDIs
IDApKSAmJgotICAgICAgICAhZnVuY3Rpb25zLT5oYXNFeHRlbnNpb24oIkdMX0FSQl9ncHVfc2hh
ZGVyNSIpKQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBzaG91bGQgYWxzbyBiZSByZXF1aXJlZCBm
b3IgRVMyIGJ1dCB0aGVyZSBhcmUgc29tZSBkcml2ZXIgc3VwcG9ydCBpbmRleCBjb25zdGFudAot
ICAgICAgICAvLyBzYW1wbGVyIGFycmF5IGluZGV4aW5nIHdpdGhvdXQgbWVldGluZyB0aGUgcmVx
dWlyZW1lbnRzIGFib3ZlLiBEb24ndCBsaW1pdCB0aGVpciBFUwotICAgICAgICAvLyB2ZXJzaW9u
IGFzIGl0IHdvdWxkIGJyZWFrIFdlYkdMIGZvciBzb21lIHVzZXJzLgotICAgICAgICBMaW1pdFZl
cnNpb24obWF4U3VwcG9ydGVkRVNWZXJzaW9uLCBnbDo6VmVyc2lvbigyLCAwKSk7Ci0gICAgfQor
ICAgIC8vIE5vbi1jb25zdGFudCBzYW1wbGVyIGFycmF5IGluZGV4aW5nIGlzIHJlcXVpcmVkIGZv
ciBPcGVuR0wgRVMgMiBhbmQgT3BlbkdMIEVTIGFmdGVyIDMuMi4KKyAgICAvLyBIb3dldmVyIGhh
dmluZyBpdCBhdmFpbGFibGUgb24gT3BlbkdMIEVTIDIgaXMgYSBzcGVjaWZpY2F0aW9uIGJ1Zywg
YW5kIHVzaW5nIHRoaXMKKyAgICAvLyBpbmRleGluZyBpbiBXZWJHTCBpcyB1bmRlZmluZWQuIFJl
cXVpcmluZyB0aGlzIGZlYXR1cmUgd291bGQgYnJlYWsgV2ViR0wgMSBmb3Igc29tZSB1c2Vycwor
ICAgIC8vIHNvIHdlIGRvbid0IGNoZWNrIGZvciBpdC4gKGl0IGlzIHByZXNlbnQgd2l0aCBFU1NM
IDEwMCwgRVNTTCA+PSAzMjAsIEdMU0wgPj0gNDAwIGFuZAorICAgIC8vIEdMX0FSQl9ncHVfc2hh
ZGVyNSkKIAogICAgIC8vIENoZWNrIGlmIHNhbXBsZXIgb2JqZWN0cyBhcmUgc3VwcG9ydGVkCiAg
ICAgaWYgKCFmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDMsIDMpKSAmJgpAQCAt
NjM0LDcgKzYzNSwxOCBAQCB2b2lkIEdlbmVyYXRlQ2Fwcyhjb25zdCBGdW5jdGlvbnNHTCAqZnVu
Y3Rpb25zLCBnbDo6Q2FwcyAqY2FwcywgZ2w6OlRleHR1cmVDYXBzTQogICAgICAgICBjYXBzLT5t
YXhWZXJ0ZXhBdHRyaWJSZWxhdGl2ZU9mZnNldCA9CiAgICAgICAgICAgICBRdWVyeVNpbmdsZUdM
SW50KGZ1bmN0aW9ucywgR0xfTUFYX1ZFUlRFWF9BVFRSSUJfUkVMQVRJVkVfT0ZGU0VUKTsKICAg
ICAgICAgY2Fwcy0+bWF4VmVydGV4QXR0cmliQmluZGluZ3MgPSBRdWVyeVNpbmdsZUdMSW50KGZ1
bmN0aW9ucywgR0xfTUFYX1ZFUlRFWF9BVFRSSUJfQklORElOR1MpOwotICAgICAgICBjYXBzLT5t
YXhWZXJ0ZXhBdHRyaWJTdHJpZGUgICA9IFF1ZXJ5U2luZ2xlR0xJbnQoZnVuY3Rpb25zLCBHTF9N
QVhfVkVSVEVYX0FUVFJJQl9TVFJJREUpOworCisgICAgICAgIC8vIE9wZW5HTCA0LjMgaGFzIG5v
IGxpbWl0IG9uIG1heGltdW0gdmFsdWUgb2Ygc3RyaWRlLgorICAgICAgICAvLyBbT3BlbkdMIDQu
MyAoQ29yZSBQcm9maWxlKSAtIEZlYnJ1YXJ5IDE0LCAyMDEzXSBDaGFwdGVyIDEwLjMuMSBQYWdl
IDI5OAorICAgICAgICBpZiAod29ya2Fyb3VuZHMuZW11bGF0ZU1heFZlcnRleEF0dHJpYlN0cmlk
ZSB8fAorICAgICAgICAgICAgKGZ1bmN0aW9ucy0+c3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfREVT
S1RPUCAmJiBmdW5jdGlvbnMtPnZlcnNpb24gPT0gZ2w6OlZlcnNpb24oNCwgMykpKQorICAgICAg
ICB7CisgICAgICAgICAgICBjYXBzLT5tYXhWZXJ0ZXhBdHRyaWJTdHJpZGUgPSAyMDQ4OworICAg
ICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgY2Fwcy0+bWF4VmVy
dGV4QXR0cmliU3RyaWRlID0gUXVlcnlTaW5nbGVHTEludChmdW5jdGlvbnMsIEdMX01BWF9WRVJU
RVhfQVRUUklCX1NUUklERSk7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAg
LTY2NCw4ICs2NzYsMTIgQEAgdm9pZCBHZW5lcmF0ZUNhcHMoY29uc3QgRnVuY3Rpb25zR0wgKmZ1
bmN0aW9ucywgZ2w6OkNhcHMgKmNhcHMsIGdsOjpUZXh0dXJlQ2Fwc00KICAgICAgICAgTGltaXRW
ZXJzaW9uKG1heFN1cHBvcnRlZEVTVmVyc2lvbiwgZ2w6OlZlcnNpb24oMywgMCkpOwogICAgIH0K
IAorICAgIC8vIE9wZW5HTCA0LjIgaXMgcmVxdWlyZWQgZm9yIEdMX0FSQl9jb21wdXRlX3NoYWRl
ciwgc29tZSBwbGF0Zm9ybSBkcml2ZXJzIGhhdmUgdGhlIGV4dGVuc2lvbiwKKyAgICAvLyBidXQg
dGhlaXIgbWF4aW11bSBzdXBwb3J0ZWQgR0wgdmVyc2lvbnMgYXJlIGxlc3MgdGhhbiA0LjIuIEV4
cGxpY2l0bHkgbGltaXQgdGhlIG1pbmltdW0KKyAgICAvLyBHTCB2ZXJzaW9uIHRvIDQuMi4KICAg
ICBpZiAoZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbig0LCAzKSkgfHwgZnVuY3Rp
b25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDEpKSB8fAotICAgICAgICBmdW5jdGlv
bnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9BUkJfY29tcHV0ZV9zaGFkZXIiKSkKKyAgICAgICAgKGZ1
bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oNCwgMikpICYmCisgICAgICAgICBmdW5j
dGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9BUkJfY29tcHV0ZV9zaGFkZXIiKSkpCiAgICAgewog
ICAgICAgICBmb3IgKEdMdWludCBpbmRleCA9IDB1OyBpbmRleCA8IDN1OyArK2luZGV4KQogICAg
ICAgICB7CkBAIC03ODcsMjAgKzgwMywxOSBAQCB2b2lkIEdlbmVyYXRlQ2Fwcyhjb25zdCBGdW5j
dGlvbnNHTCAqZnVuY3Rpb25zLCBnbDo6Q2FwcyAqY2FwcywgZ2w6OlRleHR1cmVDYXBzTQogICAg
IGV4dGVuc2lvbnMtPnJlYWRGb3JtYXRCR1JBID0gZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6
VmVyc2lvbigxLCAyKSkgfHwgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfRVhUX2JncmEi
KSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEVT
RXh0ZW5zaW9uKCJHTF9FWFRfcmVhZF9mb3JtYXRfYmdyYSIpOwogICAgIGV4dGVuc2lvbnMtPm1h
cEJ1ZmZlciA9IGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oMSwgNSkpIHx8Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpW
ZXJzaW9uKDMsIDApKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+
aGFzR0xFU0V4dGVuc2lvbigiR0xfT0VTX21hcGJ1ZmZlciIpOwogICAgIGV4dGVuc2lvbnMtPm1h
cEJ1ZmZlclJhbmdlID0gZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbigzLCAwKSkg
fHwgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfQVJCX21hcF9idWZmZXJfcmFuZ2UiKSB8
fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RH
TEVTKGdsOjpWZXJzaW9uKDMsIDApKSB8fCBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdM
X0VYVF9tYXBfYnVmZmVyX3JhbmdlIik7CiAgICAgZXh0ZW5zaW9ucy0+dGV4dHVyZU5QT1QgPSBm
dW5jdGlvbnMtPnN0YW5kYXJkID09IFNUQU5EQVJEX0dMX0RFU0tUT1AgfHwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigz
LCAwKSkgfHwgZnVuY3Rpb25zLT5oYXNHTEVTRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9ucG90
Iik7Ci0gICAgZXh0ZW5zaW9ucy0+ZHJhd0J1ZmZlcnMgPSBmdW5jdGlvbnMtPmlzQXRMZWFzdEdM
KGdsOjpWZXJzaW9uKDIsIDApKSB8fCBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJBUkJfZHJh
d19idWZmZXJzIikgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+
aXNBdExlYXN0R0xFUyhnbDo6VmVyc2lvbigzLCAwKSkgfHwgZnVuY3Rpb25zLT5oYXNHTEVTRXh0
ZW5zaW9uKCJHTF9FWFRfZHJhd19idWZmZXJzIik7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogSW52
ZXN0aWdhdGUgZW11bGF0aW5nIEVYVF9kcmF3X2J1ZmZlcnMgb24gRVMgMy4wJ3MgY29yZSBmdW5j
dGlvbmFsaXR5LgorICAgIGV4dGVuc2lvbnMtPmRyYXdCdWZmZXJzID0gZnVuY3Rpb25zLT5pc0F0
TGVhc3RHTChnbDo6VmVyc2lvbigyLCAwKSkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkFSQl9kcmF3X2J1ZmZlcnMiKSB8fAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEVTRXh0ZW5zaW9uKCJH
TF9FWFRfZHJhd19idWZmZXJzIik7CiAgICAgZXh0ZW5zaW9ucy0+dGV4dHVyZVN0b3JhZ2UgPSB0
cnVlOwogICAgIGV4dGVuc2lvbnMtPnRleHR1cmVGaWx0ZXJBbmlzb3Ryb3BpYyA9IGZ1bmN0aW9u
cy0+aGFzR0xFeHRlbnNpb24oIkdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyIpIHx8
IGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNv
dHJvcGljIik7Ci0gICAgZXh0ZW5zaW9ucy0+b2NjbHVzaW9uUXVlcnlCb29sZWFuID0KLSAgICAg
ICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbigxLCA1KSkgfHwKLSAgICAgICAg
ZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfQVJCX29jY2x1c2lvbl9xdWVyeTIiKSB8fAot
ICAgICAgICBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywgMCkpIHx8Ci0g
ICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfRVhUX29jY2x1c2lvbl9xdWVy
eV9ib29sZWFuIik7CisgICAgZXh0ZW5zaW9ucy0+b2NjbHVzaW9uUXVlcnlCb29sZWFuICAgID0g
bmF0aXZlZ2w6OlN1cHBvcnRzT2NjbHVzaW9uUXVlcmllcyhmdW5jdGlvbnMpOwogICAgIGV4dGVu
c2lvbnMtPm1heFRleHR1cmVBbmlzb3Ryb3B5ID0gZXh0ZW5zaW9ucy0+dGV4dHVyZUZpbHRlckFu
aXNvdHJvcGljID8gUXVlcnlTaW5nbGVHTEZsb2F0KGZ1bmN0aW9ucywgR0xfTUFYX1RFWFRVUkVf
TUFYX0FOSVNPVFJPUFlfRVhUKSA6IDAuMGY7CiAgICAgZXh0ZW5zaW9ucy0+ZmVuY2UgPSBmdW5j
dGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9OVl9mZW5jZSIpIHx8IGZ1bmN0aW9ucy0+aGFzR0xF
U0V4dGVuc2lvbigiR0xfTlZfZmVuY2UiKTsKICAgICBleHRlbnNpb25zLT5ibGVuZE1pbk1heCA9
IGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oMSwgNSkpIHx8IGZ1bmN0aW9ucy0+
aGFzR0xFeHRlbnNpb24oIkdMX0VYVF9ibGVuZF9taW5tYXgiKSB8fApAQCAtODU4LDYgKzg3Myw5
IEBAIHZvaWQgR2VuZXJhdGVDYXBzKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsIGdsOjpD
YXBzICpjYXBzLCBnbDo6VGV4dHVyZUNhcHNNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfS0hSX3JvYnVzdG5lc3MiKSB8fAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdM
X0VYVF9yb2J1c3RuZXNzIik7CiAKKyAgICBleHRlbnNpb25zLT5jb3B5VGV4dHVyZSA9IHRydWU7
CisgICAgZXh0ZW5zaW9ucy0+c3luY1F1ZXJ5ICAgPSBTeW5jUXVlcnlHTDo6SXNTdXBwb3J0ZWQo
ZnVuY3Rpb25zKTsKKwogICAgIC8vIE5WX3BhdGhfcmVuZGVyaW5nCiAgICAgLy8gV2UgYWxzbyBu
ZWVkIGludGVyZmFjZSBxdWVyeSB3aGljaCBpcyBhdmFpbGFibGUgaW4KICAgICAvLyA+PSA0LjMg
Y29yZSBvciBBUkJfaW50ZXJmYWNlX3F1ZXJ5IG9yID49IEdMRVMgMy4xCkBAIC04NzEsNTUgKzg4
OSwxMjkgQEAgdm9pZCBHZW5lcmF0ZUNhcHMoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucywg
Z2w6OkNhcHMgKmNhcHMsIGdsOjpUZXh0dXJlQ2Fwc00KICAgICAgICAgZnVuY3Rpb25zLT5pc0F0
TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDEpKTsKIAogICAgIGV4dGVuc2lvbnMtPnBhdGhSZW5k
ZXJpbmcgPSBjYW5FbmFibGVHTFBhdGhSZW5kZXJpbmcgfHwgY2FuRW5hYmxlRVNQYXRoUmVuZGVy
aW5nOworCisgICAgZXh0ZW5zaW9ucy0+dGV4dHVyZVNSR0JEZWNvZGUgPSBmdW5jdGlvbnMtPmhh
c0dMRXh0ZW5zaW9uKCJHTF9FWFRfdGV4dHVyZV9zUkdCX2RlY29kZSIpIHx8CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRVNFeHRlbnNpb24oIkdM
X0VYVF90ZXh0dXJlX3NSR0JfZGVjb2RlIik7CisKKyNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JN
X0FQUExFKQorICAgIFZlbmRvcklEIHZlbmRvciA9IEdldFZlbmRvcklEKGZ1bmN0aW9ucyk7Cisg
ICAgaWYgKChJc0FNRCh2ZW5kb3IpIHx8IElzSW50ZWwodmVuZG9yKSkgJiYgKm1heFN1cHBvcnRl
ZEVTVmVyc2lvbiA+PSBnbDo6VmVyc2lvbigzLCAwKSkKKyAgICB7CisgICAgICAgIC8vIEFwcGxl
IEludGVsL0FNRCBkcml2ZXJzIGRvIG5vdCBjb3JyZWN0bHkgdXNlIHRoZSBURVhUVVJFX1NSR0Jf
REVDT0RFIHByb3BlcnR5IG9mIHNhbXBsZXIKKyAgICAgICAgLy8gc3RhdGVzLiAgRGlzYWJsZSB0
aGlzIGV4dGVuc2lvbiB3aGVuIHdlIHdvdWxkIGFkdmVydGlzZSBhbnkgRVMgdmVyc2lvbiB0aGF0
IGhhcyBzYW1wbGVycy4KKyAgICAgICAgZXh0ZW5zaW9ucy0+dGV4dHVyZVNSR0JEZWNvZGUgPSBm
YWxzZTsKKyAgICB9CisjZW5kaWYKKworICAgIGV4dGVuc2lvbnMtPnNSR0JXcml0ZUNvbnRyb2wg
PSBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMKGdsOjpWZXJzaW9uKDMsIDApKSB8fAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbnMtPmhhc0dMRXh0ZW5zaW9uKCJHTF9F
WFRfZnJhbWVidWZmZXJfc1JHQiIpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZ1bmN0aW9ucy0+aGFzR0xFeHRlbnNpb24oIkdMX0FSQl9mcmFtZWJ1ZmZlcl9zUkdCIikg
fHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEVT
RXh0ZW5zaW9uKCJHTF9FWFRfc1JHQl93cml0ZV9jb250cm9sIik7CisKKyNpZiBkZWZpbmVkKEFO
R0xFX1BMQVRGT1JNX0FORFJPSUQpCisgICAgLy8gU1JHQiBibGVuZGluZyBkb2VzIG5vdCBhcHBl
YXIgdG8gd29yayBjb3JyZWN0bHkgb24gdGhlIE5leHVzIDUuIFdyaXRpbmcgdG8gYW4gU1JHQgor
ICAgIC8vIGZyYW1lYnVmZmVyIHdpdGggR0xfRlJBTUVCVUZGRVJfU1JHQiBlbmFibGVkIGFuZCB0
aGVuIHJlYWRpbmcgYmFjayByZXR1cm5zIHRoZSBzYW1lIHZhbHVlLgorICAgIC8vIERpc2FibGlu
ZyBHTF9GUkFNRUJVRkZFUl9TUkdCIHdpbGwgdGhlbiBjb252ZXJ0IGluIHRoZSB3cm9uZyBkaXJl
Y3Rpb24uCisgICAgZXh0ZW5zaW9ucy0+c1JHQldyaXRlQ29udHJvbCA9IGZhbHNlOworI2VuZGlm
CisKKyAgICAvLyBFWFRfZGlzY2FyZF9mcmFtZWJ1ZmZlciBjYW4gYmUgaW1wbGVtZW50ZWQgYXMg
bG9uZyBhcyBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVCBvcgorICAgIC8vIGdsSW52YWxpZGF0ZUZy
YW1lYnVmZmVyIGlzIGF2YWlsYWJsZQorICAgIGV4dGVuc2lvbnMtPmRpc2NhcmRGcmFtZWJ1ZmZl
ciA9IGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oNCwgMykpIHx8CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigi
R0xfQVJCX2ludmFsaWRhdGVfc3ViZGF0YSIpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnVuY3Rpb25zLT5pc0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDApKSB8
fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xF
U0V4dGVuc2lvbigiR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIiKSB8fAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xf
QVJCX2ludmFsaWRhdGVfc3ViZGF0YSIpOworCisgICAgZXh0ZW5zaW9ucy0+dHJhbnNsYXRlZFNo
YWRlclNvdXJjZSA9IHRydWU7CiB9CiAKIHZvaWQgR2VuZXJhdGVXb3JrYXJvdW5kcyhjb25zdCBG
dW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBXb3JrYXJvdW5kc0dMICp3b3JrYXJvdW5kcykKIHsKICAg
ICBWZW5kb3JJRCB2ZW5kb3IgPSBHZXRWZW5kb3JJRChmdW5jdGlvbnMpOwogCisgICAgd29ya2Fy
b3VuZHMtPmRvbnRSZW1vdmVJbnZhcmlhbnRGb3JGcmFnbWVudElucHV0ID0KKyAgICAgICAgZnVu
Y3Rpb25zLT5zdGFuZGFyZCA9PSBTVEFOREFSRF9HTF9ERVNLVE9QICYmIElzQU1EKHZlbmRvcik7
CisKICAgICAvLyBEb24ndCB1c2UgMS1iaXQgYWxwaGEgZm9ybWF0cyBvbiBkZXNrdG9wIEdMIHdp
dGggQU1EIG9yIEludGVsIGRyaXZlcnMuCiAgICAgd29ya2Fyb3VuZHMtPmF2b2lkMUJpdEFscGhh
VGV4dHVyZUZvcm1hdHMgPQotICAgICAgICBmdW5jdGlvbnMtPnN0YW5kYXJkID09IFNUQU5EQVJE
X0dMX0RFU0tUT1AgJiYKLSAgICAgICAgKHZlbmRvciA9PSBWRU5ET1JfSURfQU1EIHx8IHZlbmRv
ciA9PSBWRU5ET1JfSURfSU5URUwpOworICAgICAgICBmdW5jdGlvbnMtPnN0YW5kYXJkID09IFNU
QU5EQVJEX0dMX0RFU0tUT1AgJiYgKElzQU1EKHZlbmRvcikgfHwgSXNJbnRlbCh2ZW5kb3IpKTsK
IAogICAgIHdvcmthcm91bmRzLT5yZ2JhNElzTm90U3VwcG9ydGVkRm9yQ29sb3JSZW5kZXJpbmcg
PQotICAgICAgICBmdW5jdGlvbnMtPnN0YW5kYXJkID09IFNUQU5EQVJEX0dMX0RFU0tUT1AgJiYg
dmVuZG9yID09IFZFTkRPUl9JRF9JTlRFTDsKKyAgICAgICAgZnVuY3Rpb25zLT5zdGFuZGFyZCA9
PSBTVEFOREFSRF9HTF9ERVNLVE9QICYmIElzSW50ZWwodmVuZG9yKTsKIAotICAgIHdvcmthcm91
bmRzLT5lbXVsYXRlQWJzSW50RnVuY3Rpb24gPSB2ZW5kb3IgPT0gVkVORE9SX0lEX0lOVEVMOwor
ICAgIHdvcmthcm91bmRzLT5lbXVsYXRlQWJzSW50RnVuY3Rpb24gPSBJc0ludGVsKHZlbmRvcik7
CiAKLSAgICB3b3JrYXJvdW5kcy0+YWRkQW5kVHJ1ZVRvTG9vcENvbmRpdGlvbiA9IHZlbmRvciA9
PSBWRU5ET1JfSURfSU5URUw7CisgICAgd29ya2Fyb3VuZHMtPmFkZEFuZFRydWVUb0xvb3BDb25k
aXRpb24gPSBJc0ludGVsKHZlbmRvcik7CiAKLSAgICB3b3JrYXJvdW5kcy0+ZW11bGF0ZUlzbmFu
RmxvYXQgPSB2ZW5kb3IgPT0gVkVORE9SX0lEX0lOVEVMOworICAgIHdvcmthcm91bmRzLT5lbXVs
YXRlSXNuYW5GbG9hdCA9IElzSW50ZWwodmVuZG9yKTsKIAogICAgIHdvcmthcm91bmRzLT5kb2Vz
U1JHQkNsZWFyc09uTGluZWFyRnJhbWVidWZmZXJBdHRhY2htZW50cyA9Ci0gICAgICAgIGZ1bmN0
aW9ucy0+c3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfREVTS1RPUCAmJgotICAgICAgICAodmVuZG9y
ID09IFZFTkRPUl9JRF9JTlRFTCB8fCB2ZW5kb3IgPT0gVkVORE9SX0lEX0FNRCk7CisgICAgICAg
IGZ1bmN0aW9ucy0+c3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfREVTS1RPUCAmJiAoSXNJbnRlbCh2
ZW5kb3IpIHx8IElzQU1EKHZlbmRvcikpOworCisjaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9M
SU5VWCkKKyAgICB3b3JrYXJvdW5kcy0+ZW11bGF0ZU1heFZlcnRleEF0dHJpYlN0cmlkZSA9Cisg
ICAgICAgIGZ1bmN0aW9ucy0+c3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfREVTS1RPUCAmJiBJc0FN
RCh2ZW5kb3IpOworI2VuZGlmCiAKICNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FQUExFKQog
ICAgIHdvcmthcm91bmRzLT5kb1doaWxlR0xTTENhdXNlc0dQVUhhbmcgPSB0cnVlOwogICAgIHdv
cmthcm91bmRzLT51c2VVbnVzZWRCbG9ja3NXaXRoU3RhbmRhcmRPclNoYXJlZExheW91dCA9IHRy
dWU7CisgICAgd29ya2Fyb3VuZHMtPnJld3JpdGVGbG9hdFVuYXJ5TWludXNPcGVyYXRvciAgICAg
ICAgICAgID0gSXNJbnRlbCh2ZW5kb3IpOwogI2VuZGlmCiAKICAgICB3b3JrYXJvdW5kcy0+Zmlu
aXNoRG9lc05vdENhdXNlUXVlcmllc1RvQmVBdmFpbGFibGUgPQotICAgICAgICBmdW5jdGlvbnMt
PnN0YW5kYXJkID09IFNUQU5EQVJEX0dMX0RFU0tUT1AgJiYgdmVuZG9yID09IFZFTkRPUl9JRF9O
VklESUE7CisgICAgICAgIGZ1bmN0aW9ucy0+c3RhbmRhcmQgPT0gU1RBTkRBUkRfR0xfREVTS1RP
UCAmJiBJc052aWRpYSh2ZW5kb3IpOwogCiAgICAgLy8gVE9ETyhjd2FsbGV6KTogRGlzYWJsZSB0
aGlzIHdvcmthcm91bmQgZm9yIE1hY09TWCB2ZXJzaW9ucyAxMC45IG9yIGxhdGVyLgogICAgIHdv
cmthcm91bmRzLT5hbHdheXNDYWxsVXNlUHJvZ3JhbUFmdGVyTGluayA9IHRydWU7CiAKLSAgICB3
b3JrYXJvdW5kcy0+dW5wYWNrT3ZlcmxhcHBpbmdSb3dzU2VwYXJhdGVseVVucGFja0J1ZmZlciA9
IHZlbmRvciA9PSBWRU5ET1JfSURfTlZJRElBOwotICAgIHdvcmthcm91bmRzLT5wYWNrT3Zlcmxh
cHBpbmdSb3dzU2VwYXJhdGVseVBhY2tCdWZmZXIgICAgID0gdmVuZG9yID09IFZFTkRPUl9JRF9O
VklESUE7CisgICAgd29ya2Fyb3VuZHMtPnVucGFja092ZXJsYXBwaW5nUm93c1NlcGFyYXRlbHlV
bnBhY2tCdWZmZXIgPSBJc052aWRpYSh2ZW5kb3IpOworICAgIHdvcmthcm91bmRzLT5wYWNrT3Zl
cmxhcHBpbmdSb3dzU2VwYXJhdGVseVBhY2tCdWZmZXIgICAgID0gSXNOdmlkaWEodmVuZG9yKTsK
IAotICAgIHdvcmthcm91bmRzLT5pbml0aWFsaXplQ3VycmVudFZlcnRleEF0dHJpYnV0ZXMgPSB2
ZW5kb3IgPT0gVkVORE9SX0lEX05WSURJQTsKKyAgICB3b3JrYXJvdW5kcy0+aW5pdGlhbGl6ZUN1
cnJlbnRWZXJ0ZXhBdHRyaWJ1dGVzID0gSXNOdmlkaWEodmVuZG9yKTsKIAogI2lmIGRlZmluZWQo
QU5HTEVfUExBVEZPUk1fQVBQTEUpCiAgICAgd29ya2Fyb3VuZHMtPnVucGFja0xhc3RSb3dTZXBh
cmF0ZWx5Rm9yUGFkZGluZ0luY2x1c2lvbiA9IHRydWU7CiAgICAgd29ya2Fyb3VuZHMtPnBhY2tM
YXN0Um93U2VwYXJhdGVseUZvclBhZGRpbmdJbmNsdXNpb24gICA9IHRydWU7CiAjZWxzZQotICAg
IHdvcmthcm91bmRzLT51bnBhY2tMYXN0Um93U2VwYXJhdGVseUZvclBhZGRpbmdJbmNsdXNpb24g
PSB2ZW5kb3IgPT0gVkVORE9SX0lEX05WSURJQTsKLSAgICB3b3JrYXJvdW5kcy0+cGFja0xhc3RS
b3dTZXBhcmF0ZWx5Rm9yUGFkZGluZ0luY2x1c2lvbiAgID0gdmVuZG9yID09IFZFTkRPUl9JRF9O
VklESUE7CisgICAgd29ya2Fyb3VuZHMtPnVucGFja0xhc3RSb3dTZXBhcmF0ZWx5Rm9yUGFkZGlu
Z0luY2x1c2lvbiA9IElzTnZpZGlhKHZlbmRvcik7CisgICAgd29ya2Fyb3VuZHMtPnBhY2tMYXN0
Um93U2VwYXJhdGVseUZvclBhZGRpbmdJbmNsdXNpb24gICA9IElzTnZpZGlhKHZlbmRvcik7Cisj
ZW5kaWYKKworICAgIHdvcmthcm91bmRzLT5yZW1vdmVJbnZhcmlhbnRBbmRDZW50cm9pZEZvckVT
U0wzID0KKyAgICAgICAgZnVuY3Rpb25zLT5pc0F0TW9zdEdMKGdsOjpWZXJzaW9uKDQsIDEpKSB8
fAorICAgICAgICAoZnVuY3Rpb25zLT5zdGFuZGFyZCA9PSBTVEFOREFSRF9HTF9ERVNLVE9QICYm
IElzQU1EKHZlbmRvcikpOworCisgICAgLy8gVE9ETyhvZXR1YWhvKTogTWFrZSB0aGlzIHNwZWNp
ZmljIHRvIHRoZSBhZmZlY3RlZCBkcml2ZXIgdmVyc2lvbnMuIFZlcnNpb25zIHRoYXQgY2FtZSBh
ZnRlcgorICAgIC8vIDM2NCBhcmUga25vd24gdG8gYmUgYWZmZWN0ZWQsIGF0IGxlYXN0IHVwIHRv
IDM3NS4KKyAgICB3b3JrYXJvdW5kcy0+ZW11bGF0ZUF0YW4yRmxvYXQgPSBJc052aWRpYSh2ZW5k
b3IpOworCisgICAgd29ya2Fyb3VuZHMtPnJlYXBwbHlVQk9CaW5kaW5nc0FmdGVyTG9hZGluZ0Jp
bmFyeVByb2dyYW0gPSBJc0FNRCh2ZW5kb3IpOworCisjaWYgZGVmaW5lZChBTkdMRV9QTEFURk9S
TV9BTkRST0lEKQorICAgIC8vIFRPRE8oam1hZGlsbCk6IE5hcnJvdyB3b3JrYXJvdW5kIHJhbmdl
IGZvciBzcGVjaWZpYyBkZXZpY2VzLgorICAgIHdvcmthcm91bmRzLT5yZWFwcGx5VUJPQmluZGlu
Z3NBZnRlckxvYWRpbmdCaW5hcnlQcm9ncmFtID0gdHJ1ZTsKICNlbmRpZgogfQogCit9ICAvLyBu
YW1lc3BhY2UgbmF0aXZlZ2xfZ2wKKworbmFtZXNwYWNlIG5hdGl2ZWdsCit7Citib29sIFN1cHBv
cnRzRmVuY2VTeW5jKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMpCit7CisgICAgcmV0dXJu
IGZ1bmN0aW9ucy0+aXNBdExlYXN0R0woZ2w6OlZlcnNpb24oMywgMikpIHx8IGZ1bmN0aW9ucy0+
aGFzR0xFeHRlbnNpb24oIkdMX0FSQl9zeW5jIikgfHwKKyAgICAgICAgICAgZnVuY3Rpb25zLT5p
c0F0TGVhc3RHTEVTKGdsOjpWZXJzaW9uKDMsIDApKTsKK30KKworYm9vbCBTdXBwb3J0c09jY2x1
c2lvblF1ZXJpZXMoY29uc3QgRnVuY3Rpb25zR0wgKmZ1bmN0aW9ucykKK3sKKyAgICByZXR1cm4g
ZnVuY3Rpb25zLT5pc0F0TGVhc3RHTChnbDo6VmVyc2lvbigxLCA1KSkgfHwKKyAgICAgICAgICAg
ZnVuY3Rpb25zLT5oYXNHTEV4dGVuc2lvbigiR0xfQVJCX29jY2x1c2lvbl9xdWVyeTIiKSB8fAor
ICAgICAgICAgICBmdW5jdGlvbnMtPmlzQXRMZWFzdEdMRVMoZ2w6OlZlcnNpb24oMywgMCkpIHx8
CisgICAgICAgICAgIGZ1bmN0aW9ucy0+aGFzR0xFU0V4dGVuc2lvbigiR0xfRVhUX29jY2x1c2lv
bl9xdWVyeV9ib29sZWFuIik7Cit9CiB9CiAKIGJvb2wgQ2FuTWFwQnVmZmVyRm9yUmVhZChjb25z
dCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0
aWxzLmgKaW5kZXggYmQ1YTQyNWQwOWIuLjk4NzE2ZGI5ODA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvcmVuZGVyZXJnbF91dGls
cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9n
bC9yZW5kZXJlcmdsX3V0aWxzLmgKQEAgLTEyLDYgKzEyLDcgQEAKIAogI2luY2x1ZGUgImxpYkFO
R0xFL2FuZ2xldHlwZXMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9FcnJvci5oIgorI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL2RyaXZlcl91dGlscy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2dsL2Z1bmN0aW9uc2dsX3R5cGVkZWZzLmgiCiAKICNpbmNsdWRlIDxzdHJpbmc+CkBA
IC0zNiwxMiArMzcsMjIgQEAgc3RkOjpzdHJpbmcgR2V0RHJpdmVyVmVyc2lvbihjb25zdCBGdW5j
dGlvbnNHTCAqZnVuY3Rpb25zKTsKIG5hbWVzcGFjZSBuYXRpdmVnbF9nbAogewogCi12b2lkIEdl
bmVyYXRlQ2Fwcyhjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLCBnbDo6Q2FwcyAqY2Fwcywg
Z2w6OlRleHR1cmVDYXBzTWFwICp0ZXh0dXJlQ2Fwc01hcCwKLSAgICAgICAgICAgICAgICAgIGds
OjpFeHRlbnNpb25zICpleHRlbnNpb25zLCBnbDo6VmVyc2lvbiAqbWF4U3VwcG9ydGVkRVNWZXJz
aW9uKTsKK3ZvaWQgR2VuZXJhdGVDYXBzKGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnMsCisg
ICAgICAgICAgICAgICAgICBjb25zdCBXb3JrYXJvdW5kc0dMICZ3b3JrYXJvdW5kcywKKyAgICAg
ICAgICAgICAgICAgIGdsOjpDYXBzICpjYXBzLAorICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1
cmVDYXBzTWFwICp0ZXh0dXJlQ2Fwc01hcCwKKyAgICAgICAgICAgICAgICAgIGdsOjpFeHRlbnNp
b25zICpleHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgZ2w6OlZlcnNpb24gKm1heFN1cHBv
cnRlZEVTVmVyc2lvbik7CiAKIHZvaWQgR2VuZXJhdGVXb3JrYXJvdW5kcyhjb25zdCBGdW5jdGlv
bnNHTCAqZnVuY3Rpb25zLCBXb3JrYXJvdW5kc0dMICp3b3JrYXJvdW5kcyk7CiB9CiAKK25hbWVz
cGFjZSBuYXRpdmVnbAoreworYm9vbCBTdXBwb3J0c0ZlbmNlU3luYyhjb25zdCBGdW5jdGlvbnNH
TCAqZnVuY3Rpb25zKTsKK2Jvb2wgU3VwcG9ydHNPY2NsdXNpb25RdWVyaWVzKGNvbnN0IEZ1bmN0
aW9uc0dMICpmdW5jdGlvbnMpOworfQorCiBib29sIENhbk1hcEJ1ZmZlckZvclJlYWQoY29uc3Qg
RnVuY3Rpb25zR0wgKmZ1bmN0aW9ucyk7CiB1aW50OF90ICpNYXBCdWZmZXJSYW5nZVdpdGhGYWxs
YmFjayhjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRDNEVGV4dHVyZVN1cmZhY2VX
R0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2ds
L3dnbC9EM0RUZXh0dXJlU3VyZmFjZVdHTC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmI2MGY5ODE4MjczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EM0RUZXh0dXJlU3VyZmFj
ZVdHTC5jcHAKQEAgLTAsMCArMSw0ODIgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBEM0RUZXh0dXJl
U3VyZmFjZVdHTC5jcHA6IFdHTCBpbXBsZW1lbnRhdGlvbiBvZiBlZ2w6OlN1cmZhY2UgZm9yIEQz
RCB0ZXh0dXJlIGludGVyb3AuCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC93Z2wv
RDNEVGV4dHVyZVN1cmZhY2VXR0wuaCIKKworI2luY2x1ZGUgImxpYkFOR0xFL1N1cmZhY2UuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvVGV4dHVyZUdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvZ2wvUmVuZGVyZXJHTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2ds
L1N0YXRlTWFuYWdlckdMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Rp
c3BsYXlXR0wuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRnVuY3Rpb25z
V0dMLmgiCisKK25hbWVzcGFjZSByeAoreworCituYW1lc3BhY2UKK3sKKworZWdsOjpFcnJvciBH
ZXREM0QxMVRleHR1cmVJbmZvKEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBJRDNEMTFUZXh0dXJlMkQgKnRleHR1cmUxMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgKndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCAqaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElVbmtu
b3duICoqb2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElVbmtub3duICoq
ZGV2aWNlKQoreworICAgIEQzRDExX1RFWFRVUkUyRF9ERVNDIHRleHR1cmVEZXNjOworICAgIHRl
eHR1cmUxMS0+R2V0RGVzYygmdGV4dHVyZURlc2MpOworCisgICAgaWYgKGJ1ZnR5cGUgPT0gRUdM
X0QzRF9URVhUVVJFX0FOR0xFKQorICAgIHsKKyAgICAgICAgLy8gRnJvbSB0YWJsZSBlZ2wucmVz
dHJpY3Rpb25zIGluIEVHTF9BTkdMRV9kM2RfdGV4dHVyZV9jbGllbnRfYnVmZmVyLgorICAgICAg
ICBzd2l0Y2ggKHRleHR1cmVEZXNjLkZvcm1hdCkKKyAgICAgICAgeworICAgICAgICAgICAgY2Fz
ZSBEWEdJX0ZPUk1BVF9SOEc4QjhBOF9VTk9STToKKyAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JN
QVRfUjhHOEI4QThfVU5PUk1fU1JHQjoKKyAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfQjhH
OFI4QThfVU5PUk06CisgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX0I4RzhSOEE4X1VOT1JN
X1NSR0I6CisgICAgICAgICAgICBjYXNlIERYR0lfRk9STUFUX1IxNkcxNkIxNkExNl9GTE9BVDoK
KyAgICAgICAgICAgIGNhc2UgRFhHSV9GT1JNQVRfUjMyRzMyQjMyQTMyX0ZMT0FUOgorICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
IFNhZmVSZWxlYXNlKHRleHR1cmUxMSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGVnbDo6RXJy
b3IoRUdMX0JBRF9QQVJBTUVURVIsICJVbmtub3duIGNsaWVudCBidWZmZXIgdGV4dHVyZSBmb3Jt
YXQ6ICV1LiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZURlc2Mu
Rm9ybWF0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIElEM0QxMURldmljZSAqZDNkMTFEZXZp
Y2UgPSBudWxscHRyOworICAgIHRleHR1cmUxMS0+R2V0RGV2aWNlKCZkM2QxMURldmljZSk7Cisg
ICAgaWYgKGQzZDExRGV2aWNlID09IG51bGxwdHIpCisgICAgeworICAgICAgICBTYWZlUmVsZWFz
ZSh0ZXh0dXJlMTEpOworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX1BBUkFNRVRF
UiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBxdWVyeSB0aGUgRDNEMTEg
ZGV2aWNlIGZyb20gdGhlIGNsaWVudCBidWZmZXIuIik7CisgICAgfQorCisgICAgaWYgKHdpZHRo
KQorICAgIHsKKyAgICAgICAgKndpZHRoID0gdGV4dHVyZURlc2MuV2lkdGg7CisgICAgfQorICAg
IGlmIChoZWlnaHQpCisgICAgeworICAgICAgICAqaGVpZ2h0ID0gdGV4dHVyZURlc2MuSGVpZ2h0
OworICAgIH0KKworICAgIGlmIChkZXZpY2UpCisgICAgeworICAgICAgICAqZGV2aWNlID0gZDNk
MTFEZXZpY2U7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIFNhZmVSZWxlYXNlKGQz
ZDExRGV2aWNlKTsKKyAgICB9CisKKyAgICBpZiAob2JqZWN0KQorICAgIHsKKyAgICAgICAgKm9i
amVjdCA9IHRleHR1cmUxMTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgU2FmZVJl
bGVhc2UodGV4dHVyZTExKTsKKyAgICB9CisKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VD
Q0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgR2V0RDNEOVRleHR1cmVJbmZvKEVHTGVudW0gYnVmdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEaXJlY3QzRFRleHR1cmU5ICp0ZXh0
dXJlOSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKmhlaWdodCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIElVbmtub3duICoqb2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSVVua25vd24gKipkZXZpY2UpCit7CisgICAgRDNEU1VSRkFDRV9ERVNDIHN1cmZh
Y2VEZXNjOworICAgIGlmIChGQUlMRUQodGV4dHVyZTktPkdldExldmVsRGVzYygwLCAmc3VyZmFj
ZURlc2MpKSkKKyAgICB7CisgICAgICAgIFNhZmVSZWxlYXNlKHRleHR1cmU5KTsKKyAgICAgICAg
cmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJDb3VsZCBub3QgcXVlcnkgZGVz
Y3JpcHRpb24gb2YgdGhlIEQzRDkgc3VyZmFjZS4iKTsKKyAgICB9CisKKyAgICBpZiAoYnVmdHlw
ZSA9PSBFR0xfRDNEX1RFWFRVUkVfQU5HTEUpCisgICAgeworICAgICAgICAvLyBGcm9tIHRhYmxl
IGVnbC5yZXN0cmljdGlvbnMgaW4gRUdMX0FOR0xFX2QzZF90ZXh0dXJlX2NsaWVudF9idWZmZXIu
CisgICAgICAgIHN3aXRjaCAoc3VyZmFjZURlc2MuRm9ybWF0KQorICAgICAgICB7CisgICAgICAg
ICAgICBjYXNlIEQzREZNVF9SOEc4Qjg6CisgICAgICAgICAgICBjYXNlIEQzREZNVF9BOFI4RzhC
ODoKKyAgICAgICAgICAgIGNhc2UgRDNERk1UX0ExNkIxNkcxNlIxNkY6CisgICAgICAgICAgICBj
YXNlIEQzREZNVF9BMzJCMzJHMzJSMzJGOgorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFNhZmVSZWxlYXNlKHRleHR1cmU5KTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX1BBUkFNRVRFUiwgIlVu
a25vd24gY2xpZW50IGJ1ZmZlciB0ZXh0dXJlIGZvcm1hdDogJXUuIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdXJmYWNlRGVzYy5Gb3JtYXQpOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKHdpZHRoKQorICAgIHsKKyAgICAgICAgKndpZHRoID0gc3VyZmFjZURlc2Mu
V2lkdGg7CisgICAgfQorICAgIGlmIChoZWlnaHQpCisgICAgeworICAgICAgICAqaGVpZ2h0ID0g
c3VyZmFjZURlc2MuSGVpZ2h0OworICAgIH0KKworICAgIElEaXJlY3QzRERldmljZTkgKmQzZDlE
ZXZpY2UgPSBudWxscHRyOworICAgIEhSRVNVTFQgcmVzdWx0ICAgICAgICAgICAgICAgPSB0ZXh0
dXJlOS0+R2V0RGV2aWNlKCZkM2Q5RGV2aWNlKTsKKyAgICBpZiAoRkFJTEVEKHJlc3VsdCkpCisg
ICAgeworICAgICAgICBTYWZlUmVsZWFzZSh0ZXh0dXJlOSk7CisgICAgICAgIHJldHVybiBlZ2w6
OkVycm9yKEVHTF9CQURfUEFSQU1FVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291
bGQgbm90IHF1ZXJ5IHRoZSBEM0Q5IGRldmljZSBmcm9tIHRoZSBjbGllbnQgYnVmZmVyLiIpOwor
ICAgIH0KKworICAgIGlmIChkZXZpY2UpCisgICAgeworICAgICAgICAqZGV2aWNlID0gZDNkOURl
dmljZTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgU2FmZVJlbGVhc2UoZDNkOURl
dmljZSk7CisgICAgfQorCisgICAgaWYgKG9iamVjdCkKKyAgICB7CisgICAgICAgICpvYmplY3Qg
PSB0ZXh0dXJlOTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgU2FmZVJlbGVhc2Uo
dGV4dHVyZTkpOworICAgIH0KKworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsK
K30KKworZWdsOjpFcnJvciBHZXREM0RUZXh0dXJlSW5mbyhFR0xlbnVtIGJ1ZnR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElEM0QxMURldmljZSAqZDNkMTFEZXZpY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqd2lkdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCAqaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBJVW5rbm93biAqKm9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVVu
a25vd24gKipkZXZpY2UpCit7CisgICAgaWYgKGJ1ZnR5cGUgPT0gRUdMX0QzRF9URVhUVVJFX0FO
R0xFKQorICAgIHsKKyAgICAgICAgSVVua25vd24gKmJ1ZmZlciAgICAgICAgICAgID0gc3RhdGlj
X2Nhc3Q8SVVua25vd24gKj4oY2xpZW50QnVmZmVyKTsKKyAgICAgICAgSUQzRDExVGV4dHVyZTJE
ICp0ZXh0dXJlMTEgID0gbnVsbHB0cjsKKyAgICAgICAgSURpcmVjdDNEVGV4dHVyZTkgKnRleHR1
cmU5ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKFNVQ0NFRURFRChidWZmZXItPlF1ZXJ5SW50ZXJm
YWNlPElEM0QxMVRleHR1cmUyRD4oJnRleHR1cmUxMSkpKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gR2V0RDNEMTFUZXh0dXJlSW5mbyhidWZ0eXBlLCB0ZXh0dXJlMTEsIHdpZHRoLCBo
ZWlnaHQsIG9iamVjdCwgZGV2aWNlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChTVUND
RUVERUQoYnVmZmVyLT5RdWVyeUludGVyZmFjZTxJRGlyZWN0M0RUZXh0dXJlOT4oJnRleHR1cmU5
KSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBHZXREM0Q5VGV4dHVyZUluZm8oYnVm
dHlwZSwgdGV4dHVyZTksIHdpZHRoLCBoZWlnaHQsIG9iamVjdCwgZGV2aWNlKTsKKyAgICAgICAg
fQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlZ2w6OkVycm9y
KEVHTF9CQURfUEFSQU1FVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlByb3Zp
ZGVkIGJ1ZmZlciBpcyBub3QgYSBJRGlyZWN0M0RUZXh0dXJlOSBvciBJRDNEMTFUZXh0dXJlMkQu
Iik7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoYnVmdHlwZSA9PSBFR0xfRDNEX1RF
WFRVUkVfMkRfU0hBUkVfSEFORExFX0FOR0xFKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGQzZDEx
RGV2aWNlKTsKKyAgICAgICAgSEFORExFIHNoYXJlSGFuZGxlICAgICAgICAgPSBzdGF0aWNfY2Fz
dDxIQU5ETEU+KGNsaWVudEJ1ZmZlcik7CisgICAgICAgIElEM0QxMVRleHR1cmUyRCAqdGV4dHVy
ZTExID0gbnVsbHB0cjsKKyAgICAgICAgSFJFU1VMVCByZXN1bHQgPSBkM2QxMURldmljZS0+T3Bl
blNoYXJlZFJlc291cmNlKHNoYXJlSGFuZGxlLCBfX3V1aWRvZihJRDNEMTFUZXh0dXJlMkQpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDx2b2lkICoqPigmdGV4dHVyZTExKSk7CisgICAgICAgIGlmIChGQUlM
RUQocmVzdWx0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdM
X0JBRF9QQVJBTUVURVIsICJGYWlsZWQgdG8gb3BlbiBzaGFyZSBoYW5kbGUsIHJlc3VsdDogMHgl
WC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBHZXREM0QxMVRleHR1cmVJbmZvKGJ1ZnR5cGUsIHRleHR1cmUxMSwg
d2lkdGgsIGhlaWdodCwgb2JqZWN0LCBkZXZpY2UpOworICAgIH0KKyAgICBlbHNlCisgICAgewor
ICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFE
X0RJU1BMQVksICJVbmtub3duIGJ1ZnR5cGUgZm9yIEQzRFRleHR1cmVTdXJmYWNlV0dMLiIpOwor
ICAgIH0KK30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCitEM0RUZXh0dXJlU3VyZmFj
ZVdHTDo6RDNEVGV4dHVyZVN1cmZhY2VXR0woY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbmRlcmVyR0wg
KnJlbmRlcmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xDbGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERpc3BsYXlXR0wgKmRpc3BsYXksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgSEdMUkMgd2dsQ29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIREMgZGV2aWNlQ29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFEZXZpY2UgKmRpc3Bs
YXlEM0QxMURldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBGdW5jdGlvbnNHTCAqZnVuY3Rpb25zR0wsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnVuY3Rpb25zV0dMICpmdW5jdGlvbnNXR0wpCisg
ICAgOiBTdXJmYWNlR0woc3RhdGUsIHJlbmRlcmVyKSwKKyAgICAgIG1CdWZ0eXBlKGJ1ZnR5cGUp
LAorICAgICAgbUNsaWVudEJ1ZmZlcihjbGllbnRCdWZmZXIpLAorICAgICAgbVJlbmRlcmVyKHJl
bmRlcmVyKSwKKyAgICAgIG1EaXNwbGF5RDNEMTFEZXZpY2UoZGlzcGxheUQzRDExRGV2aWNlKSwK
KyAgICAgIG1EaXNwbGF5KGRpc3BsYXkpLAorICAgICAgbVN0YXRlTWFuYWdlcihyZW5kZXJlci0+
Z2V0U3RhdGVNYW5hZ2VyKCkpLAorICAgICAgbVdvcmthcm91bmRzKHJlbmRlcmVyLT5nZXRXb3Jr
YXJvdW5kcygpKSwKKyAgICAgIG1GdW5jdGlvbnNHTChmdW5jdGlvbnNHTCksCisgICAgICBtRnVu
Y3Rpb25zV0dMKGZ1bmN0aW9uc1dHTCksCisgICAgICBtV0dMQ29udGV4dCh3Z2xDb250ZXh0KSwK
KyAgICAgIG1EZXZpY2VDb250ZXh0KGRldmljZUNvbnRleHQpLAorICAgICAgbVdpZHRoKDApLAor
ICAgICAgbUhlaWdodCgwKSwKKyAgICAgIG1EZXZpY2VIYW5kbGUobnVsbHB0ciksCisgICAgICBt
T2JqZWN0KG51bGxwdHIpLAorICAgICAgbUtleWVkTXV0ZXgobnVsbHB0ciksCisgICAgICBtQm91
bmRPYmplY3RUZXh0dXJlSGFuZGxlKG51bGxwdHIpLAorICAgICAgbUJvdW5kT2JqZWN0UmVuZGVy
YnVmZmVySGFuZGxlKG51bGxwdHIpLAorICAgICAgbUNvbG9yUmVuZGVyYnVmZmVySUQoMCksCisg
ICAgICBtRGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVySUQoMCksCisgICAgICBtRnJhbWVidWZmZXJJ
RCgwKQoreworfQorCitEM0RUZXh0dXJlU3VyZmFjZVdHTDo6fkQzRFRleHR1cmVTdXJmYWNlV0dM
KCkKK3sKKyAgICBBU1NFUlQobUJvdW5kT2JqZWN0VGV4dHVyZUhhbmRsZSA9PSBudWxscHRyKTsK
KworICAgIFNhZmVSZWxlYXNlKG1PYmplY3QpOworICAgIFNhZmVSZWxlYXNlKG1LZXllZE11dGV4
KTsKKworICAgIGlmIChtRGV2aWNlSGFuZGxlKQorICAgIHsKKyAgICAgICAgaWYgKG1Cb3VuZE9i
amVjdFJlbmRlcmJ1ZmZlckhhbmRsZSkKKyAgICAgICAgeworICAgICAgICAgICAgbUZ1bmN0aW9u
c1dHTC0+ZHhVbnJlZ2lzdGVyT2JqZWN0TlYobURldmljZUhhbmRsZSwgbUJvdW5kT2JqZWN0UmVu
ZGVyYnVmZmVySGFuZGxlKTsKKyAgICAgICAgICAgIG1Cb3VuZE9iamVjdFJlbmRlcmJ1ZmZlckhh
bmRsZSA9IG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgbVN0YXRlTWFuYWdlci0+ZGVsZXRl
UmVuZGVyYnVmZmVyKG1Db2xvclJlbmRlcmJ1ZmZlcklEKTsKKyAgICAgICAgbVN0YXRlTWFuYWdl
ci0+ZGVsZXRlUmVuZGVyYnVmZmVyKG1EZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXJJRCk7CisKKyAg
ICAgICAgaWYgKG1Cb3VuZE9iamVjdFRleHR1cmVIYW5kbGUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1GdW5jdGlvbnNXR0wtPmR4VW5yZWdpc3Rlck9iamVjdE5WKG1EZXZpY2VIYW5kbGUsIG1C
b3VuZE9iamVjdFRleHR1cmVIYW5kbGUpOworICAgICAgICAgICAgbUJvdW5kT2JqZWN0VGV4dHVy
ZUhhbmRsZSA9IG51bGxwdHI7CisgICAgICAgIH0KKworICAgICAgICAvLyBHTCBmcmFtZWJ1ZmZl
ciBpcyBkZWxldGVkIGJ5IHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIG9iamVjdAorICAgICAgICBt
RnJhbWVidWZmZXJJRCA9IDA7CisKKyAgICAgICAgbURpc3BsYXktPnJlbGVhc2VEM0REZXZpY2Uo
bURldmljZUhhbmRsZSk7CisgICAgICAgIG1EZXZpY2VIYW5kbGUgPSBudWxscHRyOworICAgIH0K
K30KKworZWdsOjpFcnJvciBEM0RUZXh0dXJlU3VyZmFjZVdHTDo6VmFsaWRhdGVEM0RUZXh0dXJl
Q2xpZW50QnVmZmVyKEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgY2xp
ZW50QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIElEM0QxMURldmljZSAqZDNkMTFEZXZpY2UpCit7CisgICAgcmV0
dXJuIEdldEQzRFRleHR1cmVJbmZvKGJ1ZnR5cGUsIGNsaWVudEJ1ZmZlciwgZDNkMTFEZXZpY2Us
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpOworfQorCitlZ2w6OkVycm9yIEQzRFRleHR1cmVTdXJmYWNlV0dMOjppbml0aWFs
aXplKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkKK3sKKyAgICBJVW5rbm93biAqZGV2
aWNlID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUlkoR2V0RDNEVGV4dHVyZUluZm8obUJ1ZnR5cGUs
IG1DbGllbnRCdWZmZXIsIG1EaXNwbGF5RDNEMTFEZXZpY2UsICZtV2lkdGgsICZtSGVpZ2h0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbU9iamVjdCwgJmRldmljZSkpOworCisg
ICAgLy8gR3JhYiB0aGUga2V5ZWQgbXV0ZXgsIGlmIG9uZSBleGlzdHMKKyAgICBtT2JqZWN0LT5R
dWVyeUludGVyZmFjZSgmbUtleWVkTXV0ZXgpOworCisgICAgQVNTRVJUKGRldmljZSAhPSBudWxs
cHRyKTsKKyAgICBlZ2w6OkVycm9yIGVycm9yID0gbURpc3BsYXktPnJlZ2lzdGVyRDNERGV2aWNl
KGRldmljZSwgJm1EZXZpY2VIYW5kbGUpOworICAgIFNhZmVSZWxlYXNlKGRldmljZSk7CisgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICB9
CisKKyAgICBtRnVuY3Rpb25zR0wtPmdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1Db2xvclJlbmRlcmJ1
ZmZlcklEKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJV
RkZFUiwgbUNvbG9yUmVuZGVyYnVmZmVySUQpOworICAgIG1Cb3VuZE9iamVjdFJlbmRlcmJ1ZmZl
ckhhbmRsZSA9IG1GdW5jdGlvbnNXR0wtPmR4UmVnaXN0ZXJPYmplY3ROVigKKyAgICAgICAgbURl
dmljZUhhbmRsZSwgbU9iamVjdCwgbUNvbG9yUmVuZGVyYnVmZmVySUQsIEdMX1JFTkRFUkJVRkZF
UiwgV0dMX0FDQ0VTU19SRUFEX1dSSVRFX05WKTsKKyAgICBpZiAobUJvdW5kT2JqZWN0UmVuZGVy
YnVmZmVySGFuZGxlID09IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gZWdsOjpFcnJv
cihFR0xfQkFEX0FMTE9DLCAiRmFpbGVkIHRvIHJlZ2lzdGVyIEQzRCBvYmplY3QsIGVycm9yOiAw
eCUwOHguIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSFJFU1VMVF9DT0RFKEdldExhc3RF
cnJvcigpKSk7CisgICAgfQorCisgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZyA9IG1TdGF0
ZS5jb25maWc7CisgICAgaWYgKGNvbmZpZy0+ZGVwdGhTdGVuY2lsRm9ybWF0ICE9IEdMX05PTkUp
CisgICAgeworICAgICAgICBtRnVuY3Rpb25zR0wtPmdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1EZXB0
aFN0ZW5jaWxSZW5kZXJidWZmZXJJRCk7CisgICAgICAgIG1TdGF0ZU1hbmFnZXItPmJpbmRSZW5k
ZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtRGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVySUQpOwor
ICAgICAgICBtRnVuY3Rpb25zR0wtPnJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVS
LCBjb25maWctPmRlcHRoU3RlbmNpbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1XaWR0aCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVpPihtSGVp
Z2h0KSk7CisgICAgfQorCisgICAgbUZ1bmN0aW9uc0dMLT5nZW5GcmFtZWJ1ZmZlcnMoMSwgJm1G
cmFtZWJ1ZmZlcklEKTsKKyAgICBtU3RhdGVNYW5hZ2VyLT5iaW5kRnJhbWVidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcklEKTsKKyAgICBtRnVuY3Rpb25zR0wtPmZyYW1lYnVmZmVy
UmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfUkVO
REVSQlVGRkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNv
bG9yUmVuZGVyYnVmZmVySUQpOworICAgIGlmIChjb25maWctPmRlcHRoU2l6ZSA+IDApCisgICAg
eworICAgICAgICBtRnVuY3Rpb25zR0wtPmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbURlcHRoU3RlbmNpbFJlbmRlcmJ1
ZmZlcklEKTsKKyAgICB9CisgICAgaWYgKGNvbmZpZy0+c3RlbmNpbFNpemUgPiAwKQorICAgIHsK
KyAgICAgICAgbUZ1bmN0aW9uc0dMLT5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX1JFTkRFUkJVRkZFUiwgbURlcHRoU3RlbmNpbFJlbmRlcmJ1
ZmZlcklEKTsKKyAgICB9CisKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9
CisKK2VnbDo6RXJyb3IgRDNEVGV4dHVyZVN1cmZhY2VXR0w6Om1ha2VDdXJyZW50KCkKK3sKKyAg
ICBpZiAoIW1GdW5jdGlvbnNXR0wtPm1ha2VDdXJyZW50KG1EZXZpY2VDb250ZXh0LCBtV0dMQ29u
dGV4dCkpCisgICAgeworICAgICAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IFdoYXQgZXJyb3IgdHlw
ZSBoZXJlPworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQ09OVEVYVF9MT1NULCAiRmFp
bGVkIHRvIG1ha2UgdGhlIFdHTCBjb250ZXh0IGN1cnJlbnQuIik7CisgICAgfQorCisgICAgaWYg
KCFtRnVuY3Rpb25zV0dMLT5keExvY2tPYmplY3RzTlYobURldmljZUhhbmRsZSwgMSwgJm1Cb3Vu
ZE9iamVjdFJlbmRlcmJ1ZmZlckhhbmRsZSkpCisgICAgeworICAgICAgICBEV09SRCBlcnJvciA9
IEdldExhc3RFcnJvcigpOworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FMTE9D
LCAiRmFpbGVkIHRvIGxvY2sgb2JqZWN0LCBlcnJvcjogMHglMDh4LiIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIEhSRVNVTFRfQ09ERShlcnJvcikpOworICAgIH0KKworICAgIHJldHVybiBl
Z2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKK30KKworZWdsOjpFcnJvciBEM0RUZXh0dXJlU3VyZmFj
ZVdHTDo6dW5NYWtlQ3VycmVudCgpCit7CisgICAgaWYgKCFtRnVuY3Rpb25zV0dMLT5keFVubG9j
a09iamVjdHNOVihtRGV2aWNlSGFuZGxlLCAxLCAmbUJvdW5kT2JqZWN0UmVuZGVyYnVmZmVySGFu
ZGxlKSkKKyAgICB7CisgICAgICAgIERXT1JEIGVycm9yID0gR2V0TGFzdEVycm9yKCk7CisgICAg
ICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQUxMT0MsICJGYWlsZWQgdG8gdW5sb2NrIG9i
amVjdCwgZXJyb3I6IDB4JTA4eC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBIUkVTVUxU
X0NPREUoZXJyb3IpKTsKKyAgICB9CisKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VT
Uyk7Cit9CisKK2VnbDo6RXJyb3IgRDNEVGV4dHVyZVN1cmZhY2VXR0w6OnN3YXAoY29uc3QgRGlz
cGxheUltcGwgKmRpc3BsYXlJbXBsKQoreworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUND
RVNTKTsKK30KKworZWdsOjpFcnJvciBEM0RUZXh0dXJlU3VyZmFjZVdHTDo6cG9zdFN1YkJ1ZmZl
cihFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCkKK3sKKyAg
ICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwor
fQorCitlZ2w6OkVycm9yIEQzRFRleHR1cmVTdXJmYWNlV0dMOjpxdWVyeVN1cmZhY2VQb2ludGVy
QU5HTEUoRUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKQoreworICAgIHN3aXRjaCAoYXR0
cmlidXRlKQorICAgIHsKKyAgICAgICAgY2FzZSBFR0xfRDNEX1RFWFRVUkVfMkRfU0hBUkVfSEFO
RExFX0FOR0xFOgorICAgICAgICAgICAgKnZhbHVlID0gKG1CdWZ0eXBlID09IEVHTF9EM0RfVEVY
VFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUpID8gbUNsaWVudEJ1ZmZlciA6IG51bGxwdHI7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEVHTF9EWEdJX0tFWUVEX01VVEVYX0FO
R0xFOgorICAgICAgICAgICAgKnZhbHVlID0gbUtleWVkTXV0ZXg7CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICB9
CisKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3Ig
RDNEVGV4dHVyZVN1cmZhY2VXR0w6OmJpbmRUZXhJbWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwg
RUdMaW50IGJ1ZmZlcikKK3sKKyAgICBBU1NFUlQobUJvdW5kT2JqZWN0VGV4dHVyZUhhbmRsZSA9
PSBudWxscHRyKTsKKworICAgIGNvbnN0IFRleHR1cmVHTCAqdGV4dHVyZUdMID0gR2V0SW1wbEFz
PFRleHR1cmVHTD4odGV4dHVyZSk7CisgICAgR0x1aW50IHRleHR1cmVJRCAgICAgICAgICAgPSB0
ZXh0dXJlR0wtPmdldFRleHR1cmVJRCgpOworCisgICAgbUJvdW5kT2JqZWN0VGV4dHVyZUhhbmRs
ZSA9IG1GdW5jdGlvbnNXR0wtPmR4UmVnaXN0ZXJPYmplY3ROVigKKyAgICAgICAgbURldmljZUhh
bmRsZSwgbU9iamVjdCwgdGV4dHVyZUlELCBHTF9URVhUVVJFXzJELCBXR0xfQUNDRVNTX1JFQURf
V1JJVEVfTlYpOworICAgIGlmIChtQm91bmRPYmplY3RUZXh0dXJlSGFuZGxlID09IG51bGxwdHIp
CisgICAgeworICAgICAgICBEV09SRCBlcnJvciA9IEdldExhc3RFcnJvcigpOworICAgICAgICBy
ZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FMTE9DLCAiRmFpbGVkIHRvIHJlZ2lzdGVyIEQzRCBv
YmplY3QsIGVycm9yOiAweCUwOHguIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSFJFU1VM
VF9DT0RFKGVycm9yKSk7CisgICAgfQorCisgICAgaWYgKCFtRnVuY3Rpb25zV0dMLT5keExvY2tP
YmplY3RzTlYobURldmljZUhhbmRsZSwgMSwgJm1Cb3VuZE9iamVjdFRleHR1cmVIYW5kbGUpKQor
ICAgIHsKKyAgICAgICAgRFdPUkQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgcmV0
dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BTExPQywgIkZhaWxlZCB0byBsb2NrIG9iamVjdCwgZXJy
b3I6IDB4JTA4eC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICBIUkVTVUxUX0NPREUoZXJy
b3IpKTsKKyAgICB9CisKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisK
K2VnbDo6RXJyb3IgRDNEVGV4dHVyZVN1cmZhY2VXR0w6OnJlbGVhc2VUZXhJbWFnZShFR0xpbnQg
YnVmZmVyKQoreworICAgIEFTU0VSVChtQm91bmRPYmplY3RUZXh0dXJlSGFuZGxlICE9IG51bGxw
dHIpOworICAgIGlmICghbUZ1bmN0aW9uc1dHTC0+ZHhVbmxvY2tPYmplY3RzTlYobURldmljZUhh
bmRsZSwgMSwgJm1Cb3VuZE9iamVjdFRleHR1cmVIYW5kbGUpKQorICAgIHsKKyAgICAgICAgRFdP
UkQgZXJyb3IgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdM
X0JBRF9BTExPQywgIkZhaWxlZCB0byB1bmxvY2sgb2JqZWN0LCBlcnJvcjogMHglMDh4LiIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIEhSRVNVTFRfQ09ERShlcnJvcikpOworICAgIH0KKwor
ICAgIGlmICghbUZ1bmN0aW9uc1dHTC0+ZHhVbnJlZ2lzdGVyT2JqZWN0TlYobURldmljZUhhbmRs
ZSwgbUJvdW5kT2JqZWN0VGV4dHVyZUhhbmRsZSkpCisgICAgeworICAgICAgICBEV09SRCBlcnJv
ciA9IEdldExhc3RFcnJvcigpOworICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FM
TE9DLCAiRmFpbGVkIHRvIHVucmVnaXN0ZXIgRDNEIG9iamVjdCwgZXJyb3I6IDB4JTA4eC4iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBIUkVTVUxUX0NPREUoZXJyb3IpKTsKKyAgICB9Cisg
ICAgbUJvdW5kT2JqZWN0VGV4dHVyZUhhbmRsZSA9IG51bGxwdHI7CisKKyAgICByZXR1cm4gZWds
OjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK3ZvaWQgRDNEVGV4dHVyZVN1cmZhY2VXR0w6OnNl
dFN3YXBJbnRlcnZhbChFR0xpbnQgaW50ZXJ2YWwpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOwor
fQorCitFR0xpbnQgRDNEVGV4dHVyZVN1cmZhY2VXR0w6OmdldFdpZHRoKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RUdMaW50PihtV2lkdGgpOworfQorCitFR0xpbnQgRDNEVGV4
dHVyZVN1cmZhY2VXR0w6OmdldEhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEVHTGludD4obUhlaWdodCk7Cit9CisKK0VHTGludCBEM0RUZXh0dXJlU3VyZmFjZVdHTDo6
aXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRUdMX0ZBTFNF
OworfQorCitFR0xpbnQgRDNEVGV4dHVyZVN1cmZhY2VXR0w6OmdldFN3YXBCZWhhdmlvcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIEVHTF9CVUZGRVJfUFJFU0VSVkVEOworfQorCitGcmFtZWJ1ZmZl
ckltcGwgKkQzRFRleHR1cmVTdXJmYWNlV0dMOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29u
c3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUgJmRhdGEpCit7CisgICAgcmV0dXJuIG5ldyBGcmFtZWJ1
ZmZlckdMKG1GcmFtZWJ1ZmZlcklELCBkYXRhLCBtRnVuY3Rpb25zR0wsIG1Xb3JrYXJvdW5kcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlbmRlcmVyLT5nZXRCbGl0dGVyKCksIG1T
dGF0ZU1hbmFnZXIpOworfQorfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0QzRFRleHR1cmVT
dXJmYWNlV0dMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvd2dsL0QzRFRleHR1cmVTdXJmYWNlV0dMLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAuLjJjZTJiMDVmNDViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EM0RUZXh0dXJlU3Vy
ZmFjZVdHTC5oCkBAIC0wLDAgKzEsOTUgQEAKKworLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBB
TkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp
cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu
IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworLy8gRDNEVGV4dHVyZVN1
cmZhY2VXR0wuaDogV0dMIGltcGxlbWVudGF0aW9uIG9mIGVnbDo6U3VyZmFjZSBmb3IgRDNEIHRl
eHR1cmUgaW50ZXJvcC4KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9HTF9XR0xfRDNEVEVY
VElSRVNVUkZBQ0VXR0xfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfR0xfV0dMX0QzRFRF
WFRJUkVTVVJGQUNFV0dMX0hfCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9TdXJm
YWNlR0wuaCIKKworI2luY2x1ZGUgPEdML3dnbGV4dC5oPgorCituYW1lc3BhY2UgcngKK3sKKwor
Y2xhc3MgRnVuY3Rpb25zR0w7CitjbGFzcyBGdW5jdGlvbnNXR0w7CitjbGFzcyBEaXNwbGF5V0dM
OworY2xhc3MgU3RhdGVNYW5hZ2VyR0w7CitzdHJ1Y3QgV29ya2Fyb3VuZHNHTDsKKworY2xhc3Mg
RDNEVGV4dHVyZVN1cmZhY2VXR0wgOiBwdWJsaWMgU3VyZmFjZUdMCit7CisgIHB1YmxpYzoKKyAg
ICBEM0RUZXh0dXJlU3VyZmFjZVdHTChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyZXJHTCAqcmVuZGVyZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTENsaWVudEJ1ZmZlciBjbGllbnRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
RGlzcGxheVdHTCAqZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBIR0xSQyB3Z2xD
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgIEhEQyBkZXZpY2VDb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgIElEM0QxMURldmljZSAqZGlzcGxheUQzRDExRGV2aWNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZ1bmN0aW9uc0dMICpmdW5jdGlvbnNHTCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGdW5jdGlvbnNXR0wgKmZ1bmN0aW9uc1dH
TCk7CisgICAgfkQzRFRleHR1cmVTdXJmYWNlV0dMKCkgb3ZlcnJpZGU7CisKKyAgICBzdGF0aWMg
ZWdsOjpFcnJvciBWYWxpZGF0ZUQzRFRleHR1cmVDbGllbnRCdWZmZXIoRUdMZW51bSBidWZ0eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xDbGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBJRDNEMTFEZXZpY2UgKmQzZDExRGV2aWNlKTsKKwor
ICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUltcGwp
IG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3IgbWFrZUN1cnJlbnQoKSBvdmVycmlkZTsKKyAgICBl
Z2w6OkVycm9yIHVuTWFrZUN1cnJlbnQoKSBvdmVycmlkZTsKKworICAgIGVnbDo6RXJyb3Igc3dh
cChjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUltcGwpIG92ZXJyaWRlOworICAgIGVnbDo6RXJy
b3IgcG9zdFN1YkJ1ZmZlcihFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50
IGhlaWdodCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBxdWVyeVN1cmZhY2VQb2ludGVyQU5H
TEUoRUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVy
cm9yIGJpbmRUZXhJbWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50IGJ1ZmZlcikgb3Zl
cnJpZGU7CisgICAgZWdsOjpFcnJvciByZWxlYXNlVGV4SW1hZ2UoRUdMaW50IGJ1ZmZlcikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFsKSBvdmVycmlk
ZTsKKworICAgIEVHTGludCBnZXRXaWR0aCgpIGNvbnN0IG92ZXJyaWRlOworICAgIEVHTGludCBn
ZXRIZWlnaHQoKSBjb25zdCBvdmVycmlkZTsKKworICAgIEVHTGludCBpc1Bvc3RTdWJCdWZmZXJT
dXBwb3J0ZWQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBFR0xpbnQgZ2V0U3dhcEJlaGF2aW9yKCkg
Y29uc3Qgb3ZlcnJpZGU7CisKKyAgICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZURlZmF1bHRGcmFt
ZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0YSkgb3ZlcnJpZGU7CisKKyAg
cHJpdmF0ZToKKyAgICBFR0xlbnVtIG1CdWZ0eXBlOworICAgIEVHTENsaWVudEJ1ZmZlciBtQ2xp
ZW50QnVmZmVyOworCisgICAgUmVuZGVyZXJHTCAqbVJlbmRlcmVyOworCisgICAgSUQzRDExRGV2
aWNlICptRGlzcGxheUQzRDExRGV2aWNlOworCisgICAgRGlzcGxheVdHTCAqbURpc3BsYXk7Cisg
ICAgU3RhdGVNYW5hZ2VyR0wgKm1TdGF0ZU1hbmFnZXI7CisgICAgY29uc3QgV29ya2Fyb3VuZHNH
TCAmbVdvcmthcm91bmRzOworICAgIGNvbnN0IEZ1bmN0aW9uc0dMICptRnVuY3Rpb25zR0w7Cisg
ICAgY29uc3QgRnVuY3Rpb25zV0dMICptRnVuY3Rpb25zV0dMOworCisgICAgSEdMUkMgbVdHTENv
bnRleHQ7CisgICAgSERDIG1EZXZpY2VDb250ZXh0OworCisgICAgc2l6ZV90IG1XaWR0aDsKKyAg
ICBzaXplX3QgbUhlaWdodDsKKworICAgIEhBTkRMRSBtRGV2aWNlSGFuZGxlOworICAgIElVbmtu
b3duICptT2JqZWN0OworICAgIElEWEdJS2V5ZWRNdXRleCAqbUtleWVkTXV0ZXg7CisgICAgSEFO
RExFIG1Cb3VuZE9iamVjdFRleHR1cmVIYW5kbGU7CisgICAgSEFORExFIG1Cb3VuZE9iamVjdFJl
bmRlcmJ1ZmZlckhhbmRsZTsKKworICAgIEdMdWludCBtQ29sb3JSZW5kZXJidWZmZXJJRDsKKyAg
ICBHTHVpbnQgbURlcHRoU3RlbmNpbFJlbmRlcmJ1ZmZlcklEOworICAgIEdMdWludCBtRnJhbWVi
dWZmZXJJRDsKK307Cit9ICAvLyBuYW1lc3BhY2UgcngKKworI2VuZGlmICAvLyBMSUJBTkdMRV9S
RU5ERVJFUl9HTF9XR0xfRDNEVEVYVElSRVNVUkZBQ0VXR0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRFhHSVN3YXBD
aGFpbldpbmRvd1N1cmZhY2VXR0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTC5jcHAK
aW5kZXggN2M1MjE0ZTgyMjcuLjM4NDcyMWNmYjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0RYR0lTd2FwQ2hhaW5XaW5k
b3dTdXJmYWNlV0dMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvd2dsL0RYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMLmNwcApAQCAt
ODYsNyArODYsNyBAQCBEWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTDo6fkRYR0lTd2FwQ2hh
aW5XaW5kb3dTdXJmYWNlV0dMKCkKICAgICBTYWZlUmVsZWFzZShtU3dhcENoYWluMSk7CiB9CiAK
LWVnbDo6RXJyb3IgRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0w6OmluaXRpYWxpemUoKQor
ZWdsOjpFcnJvciBEWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTDo6aW5pdGlhbGl6ZShjb25z
dCBEaXNwbGF5SW1wbCAqZGlzcGxheUltcGwpCiB7CiAgICAgaWYgKG1PcmllbnRhdGlvbiAhPSBF
R0xfU1VSRkFDRV9PUklFTlRBVElPTl9JTlZFUlRfWV9BTkdMRSkKICAgICB7CkBAIC0xMjgsNyAr
MTI4LDcgQEAgZWdsOjpFcnJvciBEWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTDo6bWFrZUN1
cnJlbnQoKQogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0KIAotZWdsOjpF
cnJvciBEWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTDo6c3dhcCgpCitlZ2w6OkVycm9yIERY
R0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMOjpzd2FwKGNvbnN0IERpc3BsYXlJbXBsICpkaXNw
bGF5SW1wbCkKIHsKICAgICBtRnVuY3Rpb25zR0wtPmZsdXNoKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRFhHSVN3
YXBDaGFpbldpbmRvd1N1cmZhY2VXR0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZhY2VXR0wuaApp
bmRleCBmNTE2MjM5YzllNy4uYTRjMzRhNzZmMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRFhHSVN3YXBDaGFpbldpbmRv
d1N1cmZhY2VXR0wuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvd2dsL0RYR0lTd2FwQ2hhaW5XaW5kb3dTdXJmYWNlV0dMLmgKQEAgLTM4LDEw
ICszOCwxMCBAQCBjbGFzcyBEWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTCA6IHB1YmxpYyBT
dXJmYWNlR0wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgb3JpZW50
YXRpb24pOwogICAgIH5EWEdJU3dhcENoYWluV2luZG93U3VyZmFjZVdHTCgpIG92ZXJyaWRlOwog
Ci0gICAgZWdsOjpFcnJvciBpbml0aWFsaXplKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBp
bml0aWFsaXplKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJpZGU7CiAgICAg
ZWdsOjpFcnJvciBtYWtlQ3VycmVudCgpIG92ZXJyaWRlOwogCi0gICAgZWdsOjpFcnJvciBzd2Fw
KCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBzd2FwKGNvbnN0IERpc3BsYXlJbXBsICpkaXNw
bGF5SW1wbCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4
LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSBvdmVycmlkZTsKICAgICBl
Z2w6OkVycm9yIHF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lk
ICoqdmFsdWUpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0
dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRGlzcGxheVdH
TC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wv
d2dsL0Rpc3BsYXlXR0wuY3BwCmluZGV4IDMyNDE0MDkzNGNkLi4yZTQ5Njg0MDhlOSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dn
bC9EaXNwbGF5V0dMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvZ2wvd2dsL0Rpc3BsYXlXR0wuY3BwCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5j
bHVkZSAibGliQU5HTEUvU3VyZmFjZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2ds
L1JlbmRlcmVyR0wuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmds
X3V0aWxzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0QzRFRleHR1cmVT
dXJmYWNlV0dMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0RYR0lTd2Fw
Q2hhaW5XaW5kb3dTdXJmYWNlV0dMLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZ2wv
d2dsL0Z1bmN0aW9uc1dHTC5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9Q
YnVmZmVyU3VyZmFjZVdHTC5oIgpAQCAtNTcsOCArNTgsOCBAQCBjbGFzcyBGdW5jdGlvbnNHTFdp
bmRvd3MgOiBwdWJsaWMgRnVuY3Rpb25zR0wKICAgICBQRk5XR0xHRVRQUk9DQUREUkVTU1BST0Mg
bUdldFByb2NBZGRyZXNzV0dMOwogfTsKIAotRGlzcGxheVdHTDo6RGlzcGxheVdHTCgpCi0gICAg
OiBEaXNwbGF5R0woKSwKK0Rpc3BsYXlXR0w6OkRpc3BsYXlXR0woY29uc3QgZWdsOjpEaXNwbGF5
U3RhdGUgJnN0YXRlKQorICAgIDogRGlzcGxheUdMKHN0YXRlKSwKICAgICAgIG1PcGVuR0xNb2R1
bGUobnVsbHB0ciksCiAgICAgICBtRnVuY3Rpb25zV0dMKG51bGxwdHIpLAogICAgICAgbUZ1bmN0
aW9uc0dMKG51bGxwdHIpLApAQCAtMzQ1LDE0ICszNDYsMTMgQEAgZWdsOjpFcnJvciBEaXNwbGF5
V0dMOjppbml0aWFsaXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkKICAgICBtSGFzUm9idXN0bmVz
cyA9IG1GdW5jdGlvbnNHTC0+Z2V0R3JhcGhpY3NSZXNldFN0YXR1cyAhPSBudWxscHRyOwogICAg
IGlmIChoYXNXR0xDcmVhdGVDb250ZXh0Um9idXN0bmVzcyAhPSBtSGFzUm9idXN0bmVzcykKICAg
ICB7Ci0gICAgICAgIEFOR0xFUGxhdGZvcm1DdXJyZW50KCktPmxvZ1dhcm5pbmcoCi0gICAgICAg
ICAgICAiV0dMX0FSQl9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzIGV4aXN0cyBidXQgdW5hYmxl
IHRvIE9wZW5HTCBjb250ZXh0IHdpdGggIgotICAgICAgICAgICAgInJvYnVzdG5lc3MuIik7Cisg
ICAgICAgIFdBUk4oKSA8PCAiV0dMX0FSQl9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzIGV4aXN0
cyBidXQgdW5hYmxlIHRvIE9wZW5HTCBjb250ZXh0IHdpdGggIgorICAgICAgICAgICAgICAgICAg
InJvYnVzdG5lc3MuIjsKICAgICB9CiAKICAgICAvLyBJbnRlbCBPcGVuR0wgRVMgZHJpdmVycyBh
cmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgZHVlIHRvIGJ1Z3MgaW4gdGhlIGRyaXZlciBhbmQg
QU5HTEUKICAgICBWZW5kb3JJRCB2ZW5kb3IgPSBHZXRWZW5kb3JJRChtRnVuY3Rpb25zR0wpOwot
ICAgIGlmIChyZXF1ZXN0ZWREaXNwbGF5VHlwZSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9P
UEVOR0xFU19BTkdMRSAmJiB2ZW5kb3IgPT0gVkVORE9SX0lEX0lOVEVMKQorICAgIGlmIChyZXF1
ZXN0ZWREaXNwbGF5VHlwZSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdM
RSAmJiBJc0ludGVsKHZlbmRvcikpCiAgICAgewogICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfTk9UX0lOSVRJQUxJWkVELCAiSW50ZWwgT3BlbkdMIEVTIGRyaXZlcnMgYXJlIG5vdCBzdXBw
b3J0ZWQuIik7CiAgICAgfQpAQCAtMzY4LDE0ICszNjgsMTQgQEAgZWdsOjpFcnJvciBEaXNwbGF5
V0dMOjppbml0aWFsaXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkKICAgICAgICAgR2V0V2luZG93
VGhyZWFkUHJvY2Vzc0lkKG5hdGl2ZVdpbmRvdywgJndpbmRvd1Byb2Nlc3NJZCk7CiAKICAgICAg
ICAgLy8gQU1EIGRyaXZlcnMgYWR2ZXJ0aXNlIHRoZSBXR0xfTlZfRFhfaW50ZXJvcCBhbmQgV0dM
X05WX0RYX2ludGVyb3AyIGV4dGVuc2lvbnMgYnV0IGZhaWwKLSAgICAgICAgbVVzZURYR0lTd2Fw
Q2hhaW5zID0gdmVuZG9yICE9IFZFTkRPUl9JRF9BTUQgJiYgKGN1cnJlbnRQcm9jZXNzSWQgIT0g
d2luZG93UHJvY2Vzc0lkKTsKKyAgICAgICAgbVVzZURYR0lTd2FwQ2hhaW5zID0gIUlzQU1EKHZl
bmRvcikgJiYgKGN1cnJlbnRQcm9jZXNzSWQgIT0gd2luZG93UHJvY2Vzc0lkKTsKICAgICB9CiAg
ICAgZWxzZQogICAgIHsKICAgICAgICAgbVVzZURYR0lTd2FwQ2hhaW5zID0gZmFsc2U7CiAgICAg
fQogCi0gICAgaWYgKG1Vc2VEWEdJU3dhcENoYWlucykKKyAgICBpZiAobUZ1bmN0aW9uc1dHTC0+
aGFzRXh0ZW5zaW9uKCJXR0xfTlZfRFhfaW50ZXJvcDIiKSkKICAgICB7CiAgICAgICAgIGVnbDo6
RXJyb3IgZXJyb3IgPSBpbml0aWFsaXplRDNERGV2aWNlKCk7CiAgICAgICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCkBAIC0zODMsNiArMzgzLDExIEBAIGVnbDo6RXJyb3IgRGlzcGxheVdHTDo6aW5p
dGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpCiAgICAgICAgICAgICByZXR1cm4gZXJyb3I7
CiAgICAgICAgIH0KICAgICB9CisgICAgZWxzZSBpZiAobVVzZURYR0lTd2FwQ2hhaW5zKQorICAg
IHsKKyAgICAgICAgLy8gV2FudCB0byB1c2UgRFhHSSBzd2FwIGNoYWlucyBidXQgV0dMX05WX0RY
X2ludGVyb3AyIGlzIG5vdCBwcmVzZW50LCBmYWlsIGluaXRpYWxpemF0aW9uCisgICAgICAgIHJl
dHVybiBlZ2w6OkVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsICJXR0xfTlZfRFhfaW50ZXJvcDIg
aXMgcmVxdWlyZWQgYnV0IG5vdCBwcmVzZW50LiIpOworICAgIH0KIAogICAgIHJldHVybiBEaXNw
bGF5R0w6OmluaXRpYWxpemUoZGlzcGxheSk7CiB9CkBAIC00MzAsNyArNDM1LDYgQEAgdm9pZCBE
aXNwbGF5V0dMOjp0ZXJtaW5hdGUoKQogfQogCiBTdXJmYWNlSW1wbCAqRGlzcGxheVdHTDo6Y3Jl
YXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAq
Y29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7
CkBAIC00NDksNyArNDUzLDYgQEAgU3VyZmFjZUltcGwgKkRpc3BsYXlXR0w6OmNyZWF0ZVdpbmRv
d1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAogfQogCiBTdXJmYWNlSW1w
bCAqRGlzcGxheVdHTDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3Rh
dGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJz
KQogewogICAgIEVHTGludCB3aWR0aCAgICAgICAgICA9IHN0YXRpY19jYXN0PEVHTGludD4oYXR0
cmlicy5nZXQoRUdMX1dJRFRILCAwKSk7CkBAIC00NjMsMTYgKzQ2NiwxNSBAQCBTdXJmYWNlSW1w
bCAqRGlzcGxheVdHTDo6Y3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3Rh
dGUgJnN0YXRlLAogfQogCiBTdXJmYWNlSW1wbCAqRGlzcGxheVdHTDo6Y3JlYXRlUGJ1ZmZlckZy
b21DbGllbnRCdWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6
Q29uZmlnICpjb25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVudEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVt
IGJ1ZnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZlciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0
ZU1hcCAmYXR0cmlicykKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIG51bGxw
dHI7CisgICAgcmV0dXJuIG5ldyBEM0RUZXh0dXJlU3VyZmFjZVdHTChzdGF0ZSwgZ2V0UmVuZGVy
ZXIoKSwgYnVmdHlwZSwgY2xpZW50QnVmZmVyLCB0aGlzLCBtV0dMQ29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EZXZpY2VDb250ZXh0LCBtRDNEMTFEZXZpY2Us
IG1GdW5jdGlvbnNHTCwgbUZ1bmN0aW9uc1dHTCk7CiB9CiAKIFN1cmZhY2VJbXBsICpEaXNwbGF5
V0dMOjpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6
Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTmF0aXZlUGl4bWFwVHlwZSBuYXRpdmVQaXhtYXAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAm
YXR0cmlicykKIHsKQEAgLTU1MCw2ICs1NTIsNyBAQCBlZ2w6OkNvbmZpZ1NldCBEaXNwbGF5V0dM
OjpnZW5lcmF0ZUNvbmZpZ3MoKQogICAgICAgICAoKGdldEF0dHJpYihXR0xfU1dBUF9NRVRIT0Rf
QVJCKSA9PSBXR0xfU1dBUF9DT1BZX0FSQikgPyBFR0xfU1dBUF9CRUhBVklPUl9QUkVTRVJWRURf
QklUCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA6IDApOwogICAgIGNvbmZpZy5vcHRpbWFsT3JpZW50YXRpb24gPSBvcHRpbWFs
U3VyZmFjZU9yaWVudGF0aW9uOworICAgIGNvbmZpZy5jb2xvckNvbXBvbmVudFR5cGUgPSBFR0xf
Q09MT1JfQ09NUE9ORU5UX1RZUEVfRklYRURfRVhUOwogCiAgICAgY29uZmlnLnRyYW5zcGFyZW50
VHlwZSA9IEVHTF9OT05FOwogICAgIGNvbmZpZy50cmFuc3BhcmVudFJlZFZhbHVlID0gMDsKQEAg
LTU4MSw2ICs1ODQsMjMgQEAgYm9vbCBEaXNwbGF5V0dMOjppc1ZhbGlkTmF0aXZlV2luZG93KEVH
TE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSBjb25zdAogICAgIHJldHVybiAoSXNXaW5kb3cod2lu
ZG93KSA9PSBUUlVFKTsKIH0KIAorZWdsOjpFcnJvciBEaXNwbGF5V0dMOjp2YWxpZGF0ZUNsaWVu
dEJ1ZmZlcihjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgY2xpZW50
QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgY29uc3QKK3sKKyAgICBzd2l0Y2ggKGJ1ZnR5
cGUpCisgICAgeworICAgICAgICBjYXNlIEVHTF9EM0RfVEVYVFVSRV9BTkdMRToKKyAgICAgICAg
Y2FzZSBFR0xfRDNEX1RFWFRVUkVfMkRfU0hBUkVfSEFORExFX0FOR0xFOgorICAgICAgICAgICAg
cmV0dXJuIEQzRFRleHR1cmVTdXJmYWNlV0dMOjpWYWxpZGF0ZUQzRFRleHR1cmVDbGllbnRCdWZm
ZXIoYnVmdHlwZSwgY2xpZW50QnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUQzRDExRGV2aWNlKTsK
KworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIERpc3BsYXlHTDo6dmFsaWRh
dGVDbGllbnRCdWZmZXIoY29uZmlndXJhdGlvbiwgYnVmdHlwZSwgY2xpZW50QnVmZmVyLCBhdHRy
aWJzKTsKKyAgICB9Cit9CisKIHN0ZDo6c3RyaW5nIERpc3BsYXlXR0w6OmdldFZlbmRvclN0cmlu
ZygpIGNvbnN0CiB7CiAgICAgLy9VTklNUExFTUVOVEVEKCk7CkBAIC02NDQsNiArNjY0LDE1IEBA
IHZvaWQgRGlzcGxheVdHTDo6Z2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lv
bnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0CiAgICAgb3V0RXh0ZW5zaW9ucy0+c3VyZmFjZU9yaWVu
dGF0aW9uID0gbVVzZURYR0lTd2FwQ2hhaW5zOwogCiAgICAgb3V0RXh0ZW5zaW9ucy0+Y3JlYXRl
Q29udGV4dFJvYnVzdG5lc3MgPSBtSGFzUm9idXN0bmVzczsKKworICAgIG91dEV4dGVuc2lvbnMt
PmQzZFRleHR1cmVDbGllbnRCdWZmZXIgICAgICAgICA9IG1EM0QxMURldmljZSAhPSBudWxscHRy
OworICAgIG91dEV4dGVuc2lvbnMtPmQzZFNoYXJlSGFuZGxlQ2xpZW50QnVmZmVyICAgICA9IG1E
M0QxMURldmljZSAhPSBudWxscHRyOworICAgIG91dEV4dGVuc2lvbnMtPnN1cmZhY2VEM0RUZXh0
dXJlMkRTaGFyZUhhbmRsZSA9IHRydWU7CisgICAgb3V0RXh0ZW5zaW9ucy0+cXVlcnlTdXJmYWNl
UG9pbnRlciAgICAgICAgICAgID0gdHJ1ZTsKKyAgICBvdXRFeHRlbnNpb25zLT5rZXllZE11dGV4
ICAgICAgICAgICAgICAgICAgICAgPSB0cnVlOworCisgICAgLy8gQ29udGV4dHMgYXJlIHZpcnR1
YWxpemVkIHNvIHRleHR1cmVzIGNhbiBiZSBzaGFyZWQgZ2xvYmFsbHkKKyAgICBvdXRFeHRlbnNp
b25zLT5kaXNwbGF5VGV4dHVyZVNoYXJlR3JvdXAgPSB0cnVlOwogfQogCiB2b2lkIERpc3BsYXlX
R0w6OmdlbmVyYXRlQ2FwcyhlZ2w6OkNhcHMgKm91dENhcHMpIGNvbnN0CkBAIC02NjUsMTIgKzY5
NCw2IEBAIGVnbDo6RXJyb3IgRGlzcGxheVdHTDo6d2FpdE5hdGl2ZShFR0xpbnQgZW5naW5lLAog
ICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0KIAotZWdsOjpFcnJvciBEaXNw
bGF5V0dMOjpnZXREcml2ZXJWZXJzaW9uKHN0ZDo6c3RyaW5nICp2ZXJzaW9uKSBjb25zdAotewot
ICAgICp2ZXJzaW9uID0gIiI7Ci0gICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwot
fQotCiBlZ2w6OkVycm9yIERpc3BsYXlXR0w6OnJlZ2lzdGVyRDNERGV2aWNlKElVbmtub3duICpk
ZXZpY2UsIEhBTkRMRSAqb3V0SGFuZGxlKQogewogICAgIEFTU0VSVChkZXZpY2UgIT0gbnVsbHB0
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvd2dsL0Rpc3BsYXlXR0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRGlzcGxheVdHTC5oCmluZGV4IDdlYWJlMjgwNzlmLi4x
NjgxMzA0YTdjMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2dsL3dnbC9EaXNwbGF5V0dMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9EaXNwbGF5V0dMLmgKQEAgLTIxLDcg
KzIxLDcgQEAgY2xhc3MgRnVuY3Rpb25zV0dMOwogY2xhc3MgRGlzcGxheVdHTCA6IHB1YmxpYyBE
aXNwbGF5R0wKIHsKICAgcHVibGljOgotICAgIERpc3BsYXlXR0woKTsKKyAgICBEaXNwbGF5V0dM
KGNvbnN0IGVnbDo6RGlzcGxheVN0YXRlICZzdGF0ZSk7CiAgICAgfkRpc3BsYXlXR0woKSBvdmVy
cmlkZTsKIAogICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkp
IG92ZXJyaWRlOwpAQCAtMjksMTggKzI5LDE1IEBAIGNsYXNzIERpc3BsYXlXR0wgOiBwdWJsaWMg
RGlzcGxheUdMCiAKICAgICAvLyBTdXJmYWNlIGNyZWF0aW9uCiAgICAgU3VyZmFjZUltcGwgKmNy
ZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1
cmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdp
bmRvd1R5cGUgd2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKICAgICBTdXJmYWNlSW1w
bCAqY3JlYXRlUGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAq
Y29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwogICAgIFN1cmZhY2VJbXBs
ICpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAm
c3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gYnVmdHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xp
ZW50QnVmZmVyIGNsaWVudEJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRl
OwogICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFj
ZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykg
b3ZlcnJpZGU7CiAKQEAgLTUwLDYgKzQ3LDEwIEBAIGNsYXNzIERpc3BsYXlXR0wgOiBwdWJsaWMg
RGlzcGxheUdMCiAgICAgZWdsOjpFcnJvciByZXN0b3JlTG9zdERldmljZSgpIG92ZXJyaWRlOwog
CiAgICAgYm9vbCBpc1ZhbGlkTmF0aXZlV2luZG93KEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93
KSBjb25zdCBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHZhbGlkYXRlQ2xpZW50QnVmZmVyKGNv
bnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVudEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKSBjb25z
dCBvdmVycmlkZTsKIAogICAgIGVnbDo6RXJyb3IgZ2V0RGV2aWNlKERldmljZUltcGwgKipkZXZp
Y2UpIG92ZXJyaWRlOwogCkBAIC02MCw4ICs2MSw2IEBAIGNsYXNzIERpc3BsYXlXR0wgOiBwdWJs
aWMgRGlzcGxheUdMCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqZHJh
d1N1cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqcmVhZFN1
cmZhY2UpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgZWdsOjpFcnJvciBnZXREcml2ZXJWZXJzaW9u
KHN0ZDo6c3RyaW5nICp2ZXJzaW9uKSBjb25zdCBvdmVycmlkZTsKLQogICAgIGVnbDo6RXJyb3Ig
cmVnaXN0ZXJEM0REZXZpY2UoSVVua25vd24gKmRldmljZSwgSEFORExFICpvdXRIYW5kbGUpOwog
ICAgIHZvaWQgcmVsZWFzZUQzRERldmljZShIQU5ETEUgaGFuZGxlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9QYnVm
ZmVyU3VyZmFjZVdHTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvZ2wvd2dsL1BidWZmZXJTdXJmYWNlV0dMLmNwcAppbmRleCBmMmM1MDM2MTZiMS4u
MDY1MGU5MWU5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC93Z2wvUGJ1ZmZlclN1cmZhY2VXR0wuY3BwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvUGJ1ZmZlclN1cmZh
Y2VXR0wuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBpbnQgR2V0V0dMVGV4dHVyZVRhcmdl
dChFR0xlbnVtIGVnbFRleHR1cmVUYXJnZXQpCiAgICAgfQogfQogCi1lZ2w6OkVycm9yIFBidWZm
ZXJTdXJmYWNlV0dMOjppbml0aWFsaXplKCkKK2VnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VXR0w6
OmluaXRpYWxpemUoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKQogewogICAgIGNvbnN0
IGludCBwYnVmZmVyQ3JlYXRpb25BdHRyaWJ1dGVzW10gPQogICAgIHsKQEAgLTEyMiw3ICsxMjIs
NyBAQCBlZ2w6OkVycm9yIFBidWZmZXJTdXJmYWNlV0dMOjptYWtlQ3VycmVudCgpCiAgICAgcmV0
dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCi1lZ2w6OkVycm9yIFBidWZmZXJTdXJm
YWNlV0dMOjpzd2FwKCkKK2VnbDo6RXJyb3IgUGJ1ZmZlclN1cmZhY2VXR0w6OnN3YXAoY29uc3Qg
RGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKQogewogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9T
VUNDRVNTKTsKIH0KQEAgLTEzNCw3ICsxMzQsNyBAQCBlZ2w6OkVycm9yIFBidWZmZXJTdXJmYWNl
V0dMOjpwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFRwog
CiBlZ2w6OkVycm9yIFBidWZmZXJTdXJmYWNlV0dMOjpxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUo
RUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICAqdmFsdWUgPSBudWxscHRyOwogICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNT
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL3dnbC9QYnVmZmVyU3VyZmFjZVdHTC5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9QYnVmZmVyU3VyZmFjZVdHTC5oCmlu
ZGV4IDU2MjM1MjkzYWU2Li5hZWQ0Mjc5MjFlZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9QYnVmZmVyU3VyZmFjZVdHTC5o
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93
Z2wvUGJ1ZmZlclN1cmZhY2VXR0wuaApAQCAtMzQsMTAgKzM0LDEwIEBAIGNsYXNzIFBidWZmZXJT
dXJmYWNlV0dMIDogcHVibGljIFN1cmZhY2VHTAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEZ1bmN0aW9uc1dHTCAqZnVuY3Rpb25zKTsKICAgICB+UGJ1ZmZlclN1cmZhY2VXR0woKSBvdmVy
cmlkZTsKIAotICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZSgpIG92ZXJyaWRlOworICAgIGVnbDo6
RXJyb3IgaW5pdGlhbGl6ZShjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUltcGwpIG92ZXJyaWRl
OwogICAgIGVnbDo6RXJyb3IgbWFrZUN1cnJlbnQoKSBvdmVycmlkZTsKIAotICAgIGVnbDo6RXJy
b3Igc3dhcCgpIG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3Igc3dhcChjb25zdCBEaXNwbGF5SW1w
bCAqZGlzcGxheUltcGwpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgcG9zdFN1YkJ1ZmZlcihF
R0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCkgb3ZlcnJpZGU7
CiAgICAgZWdsOjpFcnJvciBxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMaW50IGF0dHJpYnV0
ZSwgdm9pZCAqKnZhbHVlKSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIGJpbmRUZXhJbWFnZShn
bDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50IGJ1ZmZlcikgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL1dp
bmRvd1N1cmZhY2VXR0wuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL2dsL3dnbC9XaW5kb3dTdXJmYWNlV0dMLmNwcAppbmRleCBmMjI5NDNhY2I2OS4u
YjY4NjU0NzdiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9nbC93Z2wvV2luZG93U3VyZmFjZVdHTC5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9XaW5kb3dTdXJmYWNl
V0dMLmNwcApAQCAtNDEsNyArNDEsNyBAQCBXaW5kb3dTdXJmYWNlV0dMOjp+V2luZG93U3VyZmFj
ZVdHTCgpCiAgICAgbURldmljZUNvbnRleHQgPSBudWxscHRyOwogfQogCi1lZ2w6OkVycm9yIFdp
bmRvd1N1cmZhY2VXR0w6OmluaXRpYWxpemUoKQorZWdsOjpFcnJvciBXaW5kb3dTdXJmYWNlV0dM
Ojppbml0aWFsaXplKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkKIHsKICAgICBtRGV2
aWNlQ29udGV4dCA9IEdldERDKG1XaW5kb3cpOwogICAgIGlmICghbURldmljZUNvbnRleHQpCkBA
IC0xMDAsNyArMTAwLDcgQEAgZWdsOjpFcnJvciBXaW5kb3dTdXJmYWNlV0dMOjptYWtlQ3VycmVu
dCgpCiAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCi1lZ2w6OkVycm9y
IFdpbmRvd1N1cmZhY2VXR0w6OnN3YXAoKQorZWdsOjpFcnJvciBXaW5kb3dTdXJmYWNlV0dMOjpz
d2FwKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkKIHsKICAgICBpZiAoIW1GdW5jdGlv
bnNXR0wtPnN3YXBCdWZmZXJzKG1EZXZpY2VDb250ZXh0KSkKICAgICB7CkBAIC0xMTksNyArMTE5
LDcgQEAgZWdsOjpFcnJvciBXaW5kb3dTdXJmYWNlV0dMOjpwb3N0U3ViQnVmZmVyKEVHTGludCB4
LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0wKIAogZWdsOjpFcnJvciBXaW5kb3dTdXJmYWNl
V0dMOjpxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZh
bHVlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAqdmFsdWUgPSBudWxscHRyOwogICAg
IHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2dsL3dnbC9XaW5kb3dTdXJm
YWNlV0dMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
Z2wvd2dsL1dpbmRvd1N1cmZhY2VXR0wuaAppbmRleCBlYjk1ZTRkYzIzOC4uOTgxZWY0MWJjOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9nbC93Z2wvV2luZG93U3VyZmFjZVdHTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvV2luZG93U3VyZmFjZVdHTC5oCkBAIC0zMCwx
MCArMzAsMTAgQEAgY2xhc3MgV2luZG93U3VyZmFjZVdHTCA6IHB1YmxpYyBTdXJmYWNlR0wKICAg
ICAgICAgICAgICAgICAgICAgIEVHTGludCBvcmllbnRhdGlvbik7CiAgICAgfldpbmRvd1N1cmZh
Y2VXR0woKSBvdmVycmlkZTsKIAotICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZSgpIG92ZXJyaWRl
OworICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUlt
cGwpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgbWFrZUN1cnJlbnQoKSBvdmVycmlkZTsKIAot
ICAgIGVnbDo6RXJyb3Igc3dhcCgpIG92ZXJyaWRlOworICAgIGVnbDo6RXJyb3Igc3dhcChjb25z
dCBEaXNwbGF5SW1wbCAqZGlzcGxheUltcGwpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgcG9z
dFN1YkJ1ZmZlcihFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdo
dCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciBxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdM
aW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIGJp
bmRUZXhJbWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50IGJ1ZmZlcikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbG9hZF9mdW5jdGlvbnNfZGF0YS5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rpb25zX2RhdGEuanNvbgppbmRleCA4MTQ1NzA0
ZDYwMS4uMTk4Mjc0OTk4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9sb2FkX2Z1bmN0aW9uc19kYXRhLmpzb24KKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rpb25zX2Rh
dGEuanNvbgpAQCAtNTE5LDYgKzUxOSwyNiBAQAogICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAi
TG9hZEVUQzFSR0I4VG9CQzEiCiAgICAgfQogICB9LAorICAiR0xfQ09NUFJFU1NFRF9SR0I4X0xP
U1NZX0RFQ09ERV9FVEMyX0FOR0xFIjogeworICAgICJCQzFfUkdCX1VOT1JNX0JMT0NLIjogewor
ICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9hZEVUQzJSR0I4VG9CQzEiCisgICAgfQorICB9
LAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9MT1NTWV9ERUNPREVfRVRDMl9BTkdMRSI6IHsKKyAg
ICAiQkMxX1JHQl9VTk9STV9TUkdCX0JMT0NLIjogeworICAgICAgIkdMX1VOU0lHTkVEX0JZVEUi
OiAiTG9hZEVUQzJTUkdCOFRvQkMxIgorICAgIH0KKyAgfSwKKyAgIkdMX0NPTVBSRVNTRURfUkdC
OF9QVU5DSFRIUk9VR0hfQUxQSEExX0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFIjogeworICAgICJC
QzFfUkdCQV9VTk9STV9CTE9DSyI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRF
VEMyUkdCOEExVG9CQzEiCisgICAgfQorICB9LAorICAiR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5D
SFRIUk9VR0hfQUxQSEExX0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFIjogeworICAgICJCQzFfUkdC
QV9VTk9STV9TUkdCX0JMT0NLIjogeworICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9hZEVU
QzJTUkdCOEExVG9CQzEiCisgICAgfQorICB9LAogICAiR0xfUjE2X0VYVCI6IHsKICAgICAiUjE2
X1VOT1JNIjogewogICAgICAgIkdMX1VOU0lHTkVEX1NIT1JUIjogIkxvYWRUb05hdGl2ZTxHTHVz
aG9ydCwgMT4iCkBAIC01NTgsNSArNTc4LDI1IEBACiAgICAgIlIxNkcxNkIxNkExNl9TTk9STSI6
IHsKICAgICAgICJHTF9TSE9SVCI6ICJMb2FkVG9OYXRpdmU8R0x1c2hvcnQsIDQ+IgogICAgIH0K
KyAgfSwKKyAgIkdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDVfRVhUIjogeworICAg
ICJOT05FIjogeworICAgICAgIkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9hZENvbXByZXNzZWRUb05h
dGl2ZTw0LCA0LCAxNj4iCisgICAgfQorICB9LAorICAiR0xfQ09NUFJFU1NFRF9TUkdCX1MzVENf
RFhUMV9FWFQiOiB7CisgICAgIk5PTkUiOiB7CisgICAgICAiR0xfVU5TSUdORURfQllURSI6ICJM
b2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQsIDQsIDg+IgorICAgIH0KKyAgfSwKKyAgIkdMX0NPTVBS
RVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUIjogeworICAgICJOT05FIjogeworICAgICAg
IkdMX1VOU0lHTkVEX0JZVEUiOiAiTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LCA0LCA4PiIKKyAg
ICB9CisgIH0sCisgICJHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VYVCI6IHsK
KyAgICAiTk9ORSI6IHsKKyAgICAgICJHTF9VTlNJR05FRF9CWVRFIjogIkxvYWRDb21wcmVzc2Vk
VG9OYXRpdmU8NCwgNCwgMTY+IgorICAgIH0KICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rpb25zX3RhYmxl
X2F1dG9nZW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL2xvYWRfZnVuY3Rpb25zX3RhYmxlX2F1dG9nZW4uY3BwCmluZGV4IGM5M2Y4NzM4NWZmLi5l
ZDlmZTI4NjRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rpb25zX3RhYmxlX2F1dG9nZW4uY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9sb2FkX2Z1bmN0aW9uc190
YWJsZV9hdXRvZ2VuLmNwcApAQCAtMjUwLDYgKzI1MCwxOCBAQCBMb2FkSW1hZ2VGdW5jdGlvbklu
Zm8gQ09NUFJFU1NFRF9SR0I4X0VUQzJfdG9fUjhHOEI4QThfVU5PUk0oR0xlbnVtIHR5cGUpCiAg
ICAgfQogfQogCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8gQ09NUFJFU1NFRF9SR0I4X0xPU1NZX0RF
Q09ERV9FVEMyX0FOR0xFX3RvX0JDMV9SR0JfVU5PUk1fQkxPQ0soR0xlbnVtIHR5cGUpCit7Cisg
ICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgor
ICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkRVRDMlJHQjhUb0JD
MSwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwor
ICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRG
dW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8gQ09NUFJF
U1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMl90b19SOEc4QjhBOF9VTk9STShHTGVu
dW0gdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpCkBAIC0yNjIsNiArMjc0LDE5IEBAIExvYWRJ
bWFnZUZ1bmN0aW9uSW5mbyBDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMy
X3RvX1I4RzhCOEE4X1VOT1JNCiAgICAgfQogfQogCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8KK0NP
TVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xF
X3RvX0JDMV9SR0JBX1VOT1JNX0JMT0NLKEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlw
ZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJl
dHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEVUQzJSR0I4QTFUb0JDMSwgdHJ1ZSk7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAg
cmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJsZUxvYWRGdW5jdGlvbiwgdHJ1
ZSk7CisgICAgfQorfQorCiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8gQ09NUFJFU1NFRF9SR0JBOF9F
VEMyX0VBQ190b19SOEc4QjhBOF9VTk9STShHTGVudW0gdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5
cGUpCkBAIC0zNzAsNiArMzk1LDE5IEBAIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyBDT01QUkVTU0VE
X1NSR0I4X0VUQzJfdG9fUjhHOEI4QThfVU5PUk1fU1JHQihHTGVudW0gdHlwZSkKICAgICB9CiB9
CiAKK0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBDT01QUkVTU0VEX1NSR0I4X0xPU1NZX0RFQ09ERV9F
VEMyX0FOR0xFX3RvX0JDMV9SR0JfVU5PUk1fU1JHQl9CTE9DSygKKyAgICBHTGVudW0gdHlwZSkK
K3sKKyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZ
VEU6CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRFVEMyU1JH
QjhUb0JDMSwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJs
ZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8g
Q09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzJfdG9fUjhHOEI4QThfVU5P
Uk1fU1JHQihHTGVudW0gdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpCkBAIC0zODIsNiArNDIw
LDY4IEBAIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyBDT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VH
SF9BTFBIQTFfRVRDMl90b19SOEc4QjhBOF9VTk9SCiAgICAgfQogfQogCitMb2FkSW1hZ2VGdW5j
dGlvbkluZm8KK0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9MT1NTWV9ERUNP
REVfRVRDMl9BTkdMRV90b19CQzFfUkdCQV9VTk9STV9TUkdCX0JMT0NLKAorICAgIEdMZW51bSB0
eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oTG9hZEVU
QzJTUkdCOEExVG9CQzEsIHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5S
RUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5y
ZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rp
b25JbmZvIENPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUX3RvX2RlZmF1bHQoR0xl
bnVtIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9V
TlNJR05FRF9CWVRFOgorICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhM
b2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQsIDQsIDg+LCB0cnVlKTsKKyAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdl
RnVuY3Rpb25JbmZvKFVucmVhY2hhYmxlTG9hZEZ1bmN0aW9uLCB0cnVlKTsKKyAgICB9Cit9CisK
K0xvYWRJbWFnZUZ1bmN0aW9uSW5mbyBDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQzX0VY
VF90b19kZWZhdWx0KEdMZW51bSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkKKyAgICB7Cisg
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1h
Z2VGdW5jdGlvbkluZm8oTG9hZENvbXByZXNzZWRUb05hdGl2ZTw0LCA0LCAxNj4sIHRydWUpOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAg
IHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8oVW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRy
dWUpOworICAgIH0KK30KKworTG9hZEltYWdlRnVuY3Rpb25JbmZvIENPTVBSRVNTRURfU1JHQl9B
TFBIQV9TM1RDX0RYVDVfRVhUX3RvX2RlZmF1bHQoR0xlbnVtIHR5cGUpCit7CisgICAgc3dpdGNo
ICh0eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAg
ICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhMb2FkQ29tcHJlc3NlZFRvTmF0aXZlPDQs
IDQsIDE2PiwgdHJ1ZSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOworICAgICAgICAgICAgcmV0dXJuIExvYWRJbWFnZUZ1bmN0aW9uSW5mbyhVbnJlYWNoYWJs
ZUxvYWRGdW5jdGlvbiwgdHJ1ZSk7CisgICAgfQorfQorCitMb2FkSW1hZ2VGdW5jdGlvbkluZm8g
Q09NUFJFU1NFRF9TUkdCX1MzVENfRFhUMV9FWFRfdG9fZGVmYXVsdChHTGVudW0gdHlwZSkKK3sK
KyAgICBzd2l0Y2ggKHR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6
CisgICAgICAgICAgICByZXR1cm4gTG9hZEltYWdlRnVuY3Rpb25JbmZvKExvYWRDb21wcmVzc2Vk
VG9OYXRpdmU8NCwgNCwgOD4sIHRydWUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiBMb2FkSW1hZ2VGdW5jdGlvbkluZm8o
VW5yZWFjaGFibGVMb2FkRnVuY3Rpb24sIHRydWUpOworICAgIH0KK30KKwogTG9hZEltYWdlRnVu
Y3Rpb25JbmZvIERFUFRIMjRfU1RFTkNJTDhfdG9fRDI0X1VOT1JNX1M4X1VJTlQoR0xlbnVtIHR5
cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKQpAQCAtMTUyOSw2ICsxNjI5LDE2IEBAIExvYWRGdW5j
dGlvbk1hcCBHZXRMb2FkRnVuY3Rpb25zTWFwKEdMZW51bSBpbnRlcm5hbEZvcm1hdCwgRm9ybWF0
OjpJRCBhbmdsZUZvcm1hCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0I4X0xPU1NZX0RFQ09E
RV9FVEMyX0FOR0xFOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6QkMxX1JH
Ql9VTk9STV9CTE9DSzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIENPTVBSRVNTRURfUkdC
OF9MT1NTWV9ERUNPREVfRVRDMl9BTkdMRV90b19CQzFfUkdCX1VOT1JNX0JMT0NLOworICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CiAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhS
T1VHSF9BTFBIQTFfRVRDMjoKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZv
cm1hdCkKQEAgLTE1MzksNiArMTY0OSwxNiBAQCBMb2FkRnVuY3Rpb25NYXAgR2V0TG9hZEZ1bmN0
aW9uc01hcChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEZvcm1hdDo6SUQgYW5nbGVGb3JtYQogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0xPU1NZX0RFQ09E
RV9FVEMyX0FOR0xFOgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6QkMxX1JH
QkFfVU5PUk1fQkxPQ0s6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBDT01QUkVTU0VEX1JH
QjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9MT1NTWV9ERUNPREVfRVRDMl9BTkdMRV90b19CQzFfUkdC
QV9VTk9STV9CTE9DSzsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBjYXNlIEdMX0NP
TVBSRVNTRURfUkdCQThfRVRDMl9FQUM6CiAgICAgICAgIHsKICAgICAgICAgICAgIHN3aXRjaCAo
YW5nbGVGb3JtYXQpCkBAIC0xNTk3LDYgKzE3MTcsMTYgQEAgTG9hZEZ1bmN0aW9uTWFwIEdldExv
YWRGdW5jdGlvbnNNYXAoR0xlbnVtIGludGVybmFsRm9ybWF0LCBGb3JtYXQ6OklEIGFuZ2xlRm9y
bWEKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
KyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xF
OgorICAgICAgICB7CisgICAgICAgICAgICBzd2l0Y2ggKGFuZ2xlRm9ybWF0KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNhc2UgRm9ybWF0OjpJRDo6QkMxX1JHQl9VTk9STV9TUkdC
X0JMT0NLOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ09NUFJFU1NFRF9TUkdCOF9MT1NT
WV9ERUNPREVfRVRDMl9BTkdMRV90b19CQzFfUkdCX1VOT1JNX1NSR0JfQkxPQ0s7CisgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhS
T1VHSF9BTFBIQTFfRVRDMjoKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZv
cm1hdCkKQEAgLTE2MDcsNiArMTczNywyNCBAQCBMb2FkRnVuY3Rpb25NYXAgR2V0TG9hZEZ1bmN0
aW9uc01hcChHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEZvcm1hdDo6SUQgYW5nbGVGb3JtYQogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9MT1NTWV9ERUNP
REVfRVRDMl9BTkdMRToKKyAgICAgICAgeworICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1h
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjYXNlIEZvcm1hdDo6SUQ6OkJDMV9S
R0JBX1VOT1JNX1NSR0JfQkxPQ0s6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBDT01QUkVT
U0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfTE9TU1lfREVDT0RFX0VUQzJfQU5HTEVfdG9f
QkMxX1JHQkFfVU5PUk1fU1JHQl9CTE9DSzsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUOgorICAgICAgICAg
ICAgcmV0dXJuIENPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RYVDFfRVhUX3RvX2RlZmF1bHQ7
CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFQ6Cisg
ICAgICAgICAgICByZXR1cm4gQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhUM19FWFRfdG9f
ZGVmYXVsdDsKKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1
X0VYVDoKKyAgICAgICAgICAgIHJldHVybiBDT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQ1
X0VYVF90b19kZWZhdWx0OworICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQl9TM1RDX0RY
VDFfRVhUOgorICAgICAgICAgICAgcmV0dXJuIENPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFfRVhU
X3RvX2RlZmF1bHQ7CiAgICAgICAgIGNhc2UgR0xfREVQVEgyNF9TVEVOQ0lMODoKICAgICAgICAg
ewogICAgICAgICAgICAgc3dpdGNoIChhbmdsZUZvcm1hdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0J1ZmZlck5VTEwuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQnVm
ZmVyTlVMTC5jcHAKaW5kZXggNzY2ZTc4YmM2YjIuLjFkMzYyYzM3M2IxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9CdWZmZXJO
VUxMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbnVsbC9CdWZmZXJOVUxMLmNwcApAQCAtMTAsNTUgKzEwLDkxIEBACiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvbnVsbC9CdWZmZXJOVUxMLmgiCiAKICNpbmNsdWRlICJjb21tb24vZGVi
dWcuaCIKKyNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
YW5nbGV0eXBlcy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvQ29udGV4dE5V
TEwuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CiAKLUJ1ZmZlck5VTEw6OkJ1ZmZlck5VTEwoKSA6IEJ1
ZmZlckltcGwoKQorQnVmZmVyTlVMTDo6QnVmZmVyTlVMTChjb25zdCBnbDo6QnVmZmVyU3RhdGUg
JnN0YXRlLCBBbGxvY2F0aW9uVHJhY2tlck5VTEwgKmFsbG9jYXRpb25UcmFja2VyKQorICAgIDog
QnVmZmVySW1wbChzdGF0ZSksIG1BbGxvY2F0aW9uVHJhY2tlcihhbGxvY2F0aW9uVHJhY2tlcikK
IHsKKyAgICBBU1NFUlQobUFsbG9jYXRpb25UcmFja2VyICE9IG51bGxwdHIpOwogfQogCiBCdWZm
ZXJOVUxMOjp+QnVmZmVyTlVMTCgpCiB7CisgICAgYm9vbCBtZW1vcnlSZWxlYXNlUmVzdWx0ID0g
bUFsbG9jYXRpb25UcmFja2VyLT51cGRhdGVNZW1vcnlBbGxvY2F0aW9uKG1EYXRhLnNpemUoKSwg
MCk7CisgICAgQVNTRVJUKG1lbW9yeVJlbGVhc2VSZXN1bHQpOwogfQogCi1nbDo6RXJyb3IgQnVm
ZmVyTlVMTDo6c2V0RGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qg
c2l6ZSwgR0xlbnVtIHVzYWdlKQorZ2w6OkVycm9yIEJ1ZmZlck5VTEw6OnNldERhdGEoQ29udGV4
dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHVzYWdlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICBpZiAoIW1BbGxv
Y2F0aW9uVHJhY2tlci0+dXBkYXRlTWVtb3J5QWxsb2NhdGlvbihtRGF0YS5zaXplKCksIHNpemUp
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdsOjpPdXRPZk1lbW9yeSgpIDw8ICJVbmFibGUgdG8g
YWxsb2NhdGUgaW50ZXJuYWwgYnVmZmVyIHN0b3JhZ2UuIjsKKyAgICB9CisKKyAgICBtRGF0YS5y
ZXNpemUoc2l6ZSwgMCk7CisgICAgaWYgKHNpemUgPiAwICYmIGRhdGEgIT0gbnVsbHB0cikKKyAg
ICB7CisgICAgICAgIG1lbWNweShtRGF0YS5kYXRhKCksIGRhdGEsIHNpemUpOworICAgIH0KKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlck5VTEw6OnNldFN1
YkRhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIHNpemVf
dCBvZmZzZXQpCitnbDo6RXJyb3IgQnVmZmVyTlVMTDo6c2V0U3ViRGF0YShDb250ZXh0SW1wbCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0KQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICBpZiAo
c2l6ZSA+IDApCisgICAgeworICAgICAgICBtZW1jcHkobURhdGEuZGF0YSgpICsgb2Zmc2V0LCBk
YXRhLCBzaXplKTsKKyAgICB9CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpF
cnJvciBCdWZmZXJOVUxMOjpjb3B5U3ViRGF0YShCdWZmZXJJbXBsICpzb3VyY2UsCitnbDo6RXJy
b3IgQnVmZmVyTlVMTDo6Y29weVN1YkRhdGEoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySW1wbCAqc291cmNlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIHNvdXJjZU9mZnNldCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBkZXN0T2Zmc2V0LAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSkKIHsKLSAgICBVTklNUExF
TUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cisg
ICAgQnVmZmVyTlVMTCAqc291cmNlTlVMTCA9IEdldEFzPEJ1ZmZlck5VTEw+KHNvdXJjZSk7Cisg
ICAgaWYgKHNpemUgPiAwKQorICAgIHsKKyAgICAgICAgbWVtY3B5KG1EYXRhLmRhdGEoKSArIGRl
c3RPZmZzZXQsIHNvdXJjZU5VTEwtPm1EYXRhLmRhdGEoKSArIHNvdXJjZU9mZnNldCwgc2l6ZSk7
CisgICAgfQorICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgQnVmZmVy
TlVMTDo6bWFwKEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikKK2dsOjpFcnJvciBCdWZm
ZXJOVUxMOjptYXAoQ29udGV4dEltcGwgKmNvbnRleHQsIEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAq
Km1hcFB0cikKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgKm1hcFB0ciA9IG1EYXRhLmRhdGEoKTsKKyAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlck5VTEw6Om1hcFJhbmdl
KHNpemVfdCBvZmZzZXQsIHNpemVfdCBsZW5ndGgsIEdMYml0ZmllbGQgYWNjZXNzLCBHTHZvaWQg
KiptYXBQdHIpCitnbDo6RXJyb3IgQnVmZmVyTlVMTDo6bWFwUmFuZ2UoQ29udGV4dEltcGwgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgYWNjZXNzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdm9pZCAqKm1hcFB0cikKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgKm1hcFB0ciA9
IG1EYXRhLmRhdGEoKSArIG9mZnNldDsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAot
Z2w6OkVycm9yIEJ1ZmZlck5VTEw6OnVubWFwKEdMYm9vbGVhbiAqcmVzdWx0KQorZ2w6OkVycm9y
IEJ1ZmZlck5VTEw6OnVubWFwKENvbnRleHRJbXBsICpjb250ZXh0LCBHTGJvb2xlYW4gKnJlc3Vs
dCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgKnJlc3VsdCA9IEdMX1RSVUU7CisgICAgcmV0dXJuIGdsOjpO
b0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBCdWZmZXJOVUxMOjpnZXRJbmRleFJhbmdlKEdMZW51
bSB0eXBlLApAQCAtNjcsOCArMTAzLDggQEAgZ2w6OkVycm9yIEJ1ZmZlck5VTEw6OmdldEluZGV4
UmFuZ2UoR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2w6OkluZGV4UmFuZ2UgKm91dFJhbmdlKQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAqb3V0
UmFuZ2UgPSBnbDo6Q29tcHV0ZUluZGV4UmFuZ2UodHlwZSwgbURhdGEuZGF0YSgpICsgb2Zmc2V0
LCBjb3VudCwgcHJpbWl0aXZlUmVzdGFydEVuYWJsZWQpOworICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0J1ZmZlck5VTEwuaCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0J1ZmZlck5VTEwu
aAppbmRleCBkYWEyY2U4NTI4Yy4uZTJiZDE0M2Q2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0J1ZmZlck5VTEwuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9CdWZm
ZXJOVUxMLmgKQEAgLTE1LDI3ICsxNSw0NyBAQAogbmFtZXNwYWNlIHJ4CiB7CiAKK2NsYXNzIEFs
bG9jYXRpb25UcmFja2VyTlVMTDsKKwogY2xhc3MgQnVmZmVyTlVMTCA6IHB1YmxpYyBCdWZmZXJJ
bXBsCiB7CiAgIHB1YmxpYzoKLSAgICBCdWZmZXJOVUxMKCk7CisgICAgQnVmZmVyTlVMTChjb25z
dCBnbDo6QnVmZmVyU3RhdGUgJnN0YXRlLCBBbGxvY2F0aW9uVHJhY2tlck5VTEwgKmFsbG9jYXRp
b25UcmFja2VyKTsKICAgICB+QnVmZmVyTlVMTCgpIG92ZXJyaWRlOwogCi0gICAgZ2w6OkVycm9y
IHNldERhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIEdM
ZW51bSB1c2FnZSkgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIHNldFN1YkRhdGEoR0xlbnVtIHRh
cmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBvZmZzZXQpIG92ZXJy
aWRlOwotICAgIGdsOjpFcnJvciBjb3B5U3ViRGF0YShCdWZmZXJJbXBsICpzb3VyY2UsCisgICAg
Z2w6OkVycm9yIHNldERhdGEoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpk
YXRhLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB1c2FnZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIHNldFN1YkRhdGEo
Q29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpkYXRhLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBvZmZzZXQpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBjb3B5U3ViRGF0YShDb250
ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlcklt
cGwgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgc291cmNlT2Zm
c2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBkZXN0T2Zmc2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUpIG92ZXJyaWRlOwotICAgIGds
OjpFcnJvciBtYXAoR0xlbnVtIGFjY2VzcywgR0x2b2lkICoqbWFwUHRyKSBvdmVycmlkZTsKLSAg
ICBnbDo6RXJyb3IgbWFwUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IGxlbmd0aCwgR0xiaXRm
aWVsZCBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIHVu
bWFwKEdMYm9vbGVhbiAqcmVzdWx0KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgbWFwKENvbnRl
eHRJbXBsICpjb250ZXh0SW1wbCwgR0xlbnVtIGFjY2VzcywgR0x2b2lkICoqbWFwUHRyKSBvdmVy
cmlkZTsKKyAgICBnbDo6RXJyb3IgbWFwUmFuZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAor
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICBHTGJpdGZpZWxkIGFj
Y2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICoqbWFwUHRyKSBvdmVycmlkZTsK
KyAgICBnbDo6RXJyb3IgdW5tYXAoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLCBHTGJvb2xlYW4g
KnJlc3VsdCkgb3ZlcnJpZGU7CiAKICAgICBnbDo6RXJyb3IgZ2V0SW5kZXhSYW5nZShHTGVudW0g
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdsOjpJbmRleFJhbmdlICpvdXRSYW5nZSkgb3ZlcnJpZGU7CisKKyAgcHJpdmF0
ZToKKyAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBtRGF0YTsKKworICAgIEFsbG9jYXRpb25UcmFj
a2VyTlVMTCAqbUFsbG9jYXRpb25UcmFja2VyOwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIHJ4CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
bnVsbC9Db21waWxlck5VTEwuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL251bGwvQ29tcGlsZXJOVUxMLmNwcAppbmRleCA1NDdmNGM0ZTExYy4uODAy
YzVjZDE4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9udWxsL0NvbXBpbGVyTlVMTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQ29tcGlsZXJOVUxMLmNwcApAQCAtMjQs
MTQgKzI0LDEyIEBAIENvbXBpbGVyTlVMTDo6fkNvbXBpbGVyTlVMTCgpCiAKIGdsOjpFcnJvciBD
b21waWxlck5VTEw6OnJlbGVhc2UoKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKIH0KIAogU2hTaGFkZXJPdXRwdXQgQ29tcGlsZXJOVUxMOjpnZXRUcmFuc2xhdG9yT3V0
cHV0VHlwZSgpIGNvbnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBTaFNo
YWRlck91dHB1dCgpOworICAgIHJldHVybiBTSF9FU1NMX09VVFBVVDsKIH0KIAogfSAgLy8gbmFt
ZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbnVsbC9Db250ZXh0TlVMTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db250ZXh0TlVMTC5jcHAKaW5kZXggMmY0YmNi
NGY2Y2MuLmQ2ZmJhNmZjZTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db250ZXh0TlVMTC5jcHAKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQ29udGV4dE5VTEwuY3Bw
CkBAIC0xMSwxMSArMTEsNjYgQEAKIAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogCisjaW5j
bHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVsbC9CdWZmZXJOVUxMLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvbnVsbC9Db21waWxlck5VTEwuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci9udWxsL0Rpc3BsYXlOVUxMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
bnVsbC9GZW5jZU5WTlVMTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvRmVu
Y2VTeW5jTlVMTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvRnJhbWVidWZm
ZXJOVUxMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVsbC9JbWFnZU5VTEwuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9udWxsL1BhdGhOVUxMLmgiCisjaW5jbHVkZSAi
bGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Qcm9ncmFtTlVMTC5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL251bGwvUXVlcnlOVUxMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
bnVsbC9SZW5kZXJidWZmZXJOVUxMLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvbnVs
bC9TYW1wbGVyTlVMTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvU2hhZGVy
TlVMTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvVGV4dHVyZU5VTEwuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9udWxsL1RyYW5zZm9ybUZlZWRiYWNrTlVMTC5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvVmVydGV4QXJyYXlOVUxMLmgiCisK
IG5hbWVzcGFjZSByeAogewogCi1Db250ZXh0TlVMTDo6Q29udGV4dE5VTEwoY29uc3QgZ2w6OkNv
bnRleHRTdGF0ZSAmc3RhdGUpIDogQ29udGV4dEltcGwoc3RhdGUpCitBbGxvY2F0aW9uVHJhY2tl
ck5VTEw6OkFsbG9jYXRpb25UcmFja2VyTlVMTChzaXplX3QgbWF4VG90YWxBbGxvY2F0aW9uU2l6
ZSkKKyAgICA6IG1BbGxvY2F0ZWRCeXRlcygwKSwgbU1heEJ5dGVzKG1heFRvdGFsQWxsb2NhdGlv
blNpemUpCit7Cit9CisKK0FsbG9jYXRpb25UcmFja2VyTlVMTDo6fkFsbG9jYXRpb25UcmFja2Vy
TlVMTCgpCit7CisgICAgLy8gQVNTRVJUIHRoYXQgYWxsIG9iamVjdHMgd2l0aCB0aGUgTlVMTCBy
ZW5kZXJlciBjbGVhbiB1cCBhZnRlciB0aGVtc2VsdmVzCisgICAgQVNTRVJUKG1BbGxvY2F0ZWRC
eXRlcyA9PSAwKTsKK30KKworYm9vbCBBbGxvY2F0aW9uVHJhY2tlck5VTEw6OnVwZGF0ZU1lbW9y
eUFsbG9jYXRpb24oc2l6ZV90IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQogeworICAgIEFTU0VS
VChtQWxsb2NhdGVkQnl0ZXMgPj0gb2xkU2l6ZSk7CisKKyAgICBzaXplX3Qgc2l6ZUFmdGVyUmVs
ZWFzZSAgICA9IG1BbGxvY2F0ZWRCeXRlcyAtIG9sZFNpemU7CisgICAgc2l6ZV90IHNpemVBZnRl
clJlYWxsb2NhdGUgPSBzaXplQWZ0ZXJSZWxlYXNlICsgbmV3U2l6ZTsKKyAgICBpZiAoc2l6ZUFm
dGVyUmVhbGxvY2F0ZSA8IHNpemVBZnRlclJlbGVhc2UgfHwgc2l6ZUFmdGVyUmVhbGxvY2F0ZSA+
IG1NYXhCeXRlcykKKyAgICB7CisgICAgICAgIC8vIE92ZXJmbG93IG9yIGFsbG9jYXRpb24gd291
bGQgYmUgdG9vIGxhcmdlCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtQWxs
b2NhdGVkQnl0ZXMgPSBzaXplQWZ0ZXJSZWFsbG9jYXRlOworICAgIHJldHVybiB0cnVlOworfQor
CitDb250ZXh0TlVMTDo6Q29udGV4dE5VTEwoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUs
IEFsbG9jYXRpb25UcmFja2VyTlVMTCAqYWxsb2NhdGlvblRyYWNrZXIpCisgICAgOiBDb250ZXh0
SW1wbChzdGF0ZSksIG1BbGxvY2F0aW9uVHJhY2tlcihhbGxvY2F0aW9uVHJhY2tlcikKK3sKKyAg
ICBBU1NFUlQobUFsbG9jYXRpb25UcmFja2VyICE9IG51bGxwdHIpOworCisgICAgY29uc3QgZ2w6
OlZlcnNpb24gbWF4Q2xpZW50VmVyc2lvbigzLCAxKTsKKyAgICBtQ2FwcyAgICAgICAgPSBHZW5l
cmF0ZU1pbmltdW1DYXBzKG1heENsaWVudFZlcnNpb24pOworCisgICAgbUV4dGVuc2lvbnMgID0g
Z2w6OkV4dGVuc2lvbnMoKTsKKyAgICBtRXh0ZW5zaW9ucy5jb3B5VGV4dHVyZSAgICAgICAgICAg
PSB0cnVlOworICAgIG1FeHRlbnNpb25zLmNvcHlDb21wcmVzc2VkVGV4dHVyZSA9IHRydWU7CisK
KyAgICBtVGV4dHVyZUNhcHMgPSBHZW5lcmF0ZU1pbmltdW1UZXh0dXJlQ2Fwc01hcChtYXhDbGll
bnRWZXJzaW9uLCBtRXh0ZW5zaW9ucyk7CiB9CiAKIENvbnRleHROVUxMOjp+Q29udGV4dE5VTEwo
KQpAQCAtMjQsMjYgKzc5LDIyIEBAIENvbnRleHROVUxMOjp+Q29udGV4dE5VTEwoKQogCiBnbDo6
RXJyb3IgQ29udGV4dE5VTEw6OmluaXRpYWxpemUoKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsK
LSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIENvbnRleHROVUxMOjpmbHVzaCgpCiB7Ci0g
ICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgQ29udGV4
dE5VTEw6OmZpbmlzaCgpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwog
fQogCiBnbDo6RXJyb3IgQ29udGV4dE5VTEw6OmRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMaW50
IGZpcnN0LCBHTHNpemVpIGNvdW50KQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKIH0KIAogZ2w6OkVycm9yIENvbnRleHROVUxMOjpkcmF3QXJyYXlzSW5zdGFuY2VkKEdM
ZW51bSBtb2RlLApAQCAtNTEsOCArMTAyLDcgQEAgZ2w6OkVycm9yIENvbnRleHROVUxMOjpkcmF3
QXJyYXlzSW5zdGFuY2VkKEdMZW51bSBtb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSBpbnN0YW5jZUNvdW50KQogewotICAgIFVOSU1QTEVN
RU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIENvbnRleHROVUxMOjpkcmF3
RWxlbWVudHMoR0xlbnVtIG1vZGUsCkBAIC02MSw4ICsxMTEsNyBAQCBnbDo6RXJyb3IgQ29udGV4
dE5VTEw6OmRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpJbmRleFJhbmdlICZpbmRleFJhbmdlKQogewotICAg
IFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIENvbnRleHRO
VUxMOjpkcmF3RWxlbWVudHNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCkBAIC03Miw4ICsxMjEsNyBA
QCBnbDo6RXJyb3IgQ29udGV4dE5VTEw6OmRyYXdFbGVtZW50c0luc3RhbmNlZChHTGVudW0gbW9k
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
aW5zdGFuY2VzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgp
OwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgQ29udGV4dE5VTEw6OmRyYXdSYW5nZUVs
ZW1lbnRzKEdMZW51bSBtb2RlLApAQCAtODQsOTIgKzEzMiwyNDAgQEAgZ2w6OkVycm9yIENvbnRl
eHROVUxMOjpkcmF3UmFuZ2VFbGVtZW50cyhHTGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5k
ZXhSYW5nZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK2ds
OjpFcnJvciBDb250ZXh0TlVMTDo6ZHJhd0FycmF5c0luZGlyZWN0KEdMZW51bSBtb2RlLCBjb25z
dCBHTHZvaWQgKmluZGlyZWN0KQoreworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOworfQorCitn
bDo6RXJyb3IgQ29udGV4dE5VTEw6OmRyYXdFbGVtZW50c0luZGlyZWN0KEdMZW51bSBtb2RlLCBH
TGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRpcmVjdCkKK3sKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKK30KKwordm9pZCBDb250ZXh0TlVMTDo6c3RlbmNpbEZpbGxQYXRoKGNvbnN0IGds
OjpQYXRoICpwYXRoLCBHTGVudW0gZmlsbE1vZGUsIEdMdWludCBtYXNrKQoreworfQorCit2b2lk
IENvbnRleHROVUxMOjpzdGVuY2lsU3Ryb2tlUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xp
bnQgcmVmZXJlbmNlLCBHTHVpbnQgbWFzaykKK3sKK30KKwordm9pZCBDb250ZXh0TlVMTDo6Y292
ZXJGaWxsUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkKK3sKK30K
Kwordm9pZCBDb250ZXh0TlVMTDo6Y292ZXJTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRoICpwYXRo
LCBHTGVudW0gY292ZXJNb2RlKQoreworfQorCit2b2lkIENvbnRleHROVUxMOjpzdGVuY2lsVGhl
bkNvdmVyRmlsbFBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpCit7Cit9CisKK3Zv
aWQgQ29udGV4dE5VTEw6OnN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoKGNvbnN0IGdsOjpQYXRo
ICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgcmVmZXJlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gY292ZXJNb2RlKQoreworfQorCit2b2lkIENvbnRleHROVUxMOjpjb3ZlckZp
bGxQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9y
bVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKK30KKwordm9pZCBDb250ZXh0TlVMTDo6Y292ZXJT
dHJva2VQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJN
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZmxvYXQgKnRyYW5zZm9ybVZhbHVlcykKK3sKK30KKwordm9pZCBDb250ZXh0TlVM
TDo6c3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+
ICZwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gZmlsbE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IG1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVzKQoreworfQorCit2b2lkIENv
bnRleHROVUxMOjpzdGVuY2lsU3Ryb2tlUGF0aEluc3RhbmNlZChjb25zdCBzdGQ6OnZlY3Rvcjxn
bDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCByZWZlcmVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3JtVmFsdWVz
KQoreworfQorCit2b2lkIENvbnRleHROVUxMOjpzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0
YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGZpbGxNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0cmFuc2Zvcm1UeXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnRyYW5z
Zm9ybVZhbHVlcykKK3sKK30KKwordm9pZCBDb250ZXh0TlVMTDo6c3RlbmNpbFRoZW5Db3ZlclN0
cm9rZVBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpCit7Cit9CisKK0dMZW51bSBDb250ZXh0
TlVMTDo6Z2V0UmVzZXRTdGF0dXMoKQoreworICAgIHJldHVybiBHTF9OT19FUlJPUjsKK30KKwor
c3RkOjpzdHJpbmcgQ29udGV4dE5VTEw6OmdldFZlbmRvclN0cmluZygpIGNvbnN0Cit7CisgICAg
cmV0dXJuICJOVUxMIjsKK30KKworc3RkOjpzdHJpbmcgQ29udGV4dE5VTEw6OmdldFJlbmRlcmVy
RGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIHJldHVybiAiTlVMTCI7Cit9CisKK3ZvaWQgQ29u
dGV4dE5VTEw6Omluc2VydEV2ZW50TWFya2VyKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBjaGFyICpt
YXJrZXIpCit7Cit9CisKK3ZvaWQgQ29udGV4dE5VTEw6OnB1c2hHcm91cE1hcmtlcihHTHNpemVp
IGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKQoreworfQorCit2b2lkIENvbnRleHROVUxMOjpw
b3BHcm91cE1hcmtlcigpCit7Cit9CisKK3ZvaWQgQ29udGV4dE5VTEw6OnN5bmNTdGF0ZShjb25z
dCBnbDo6U3RhdGU6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQoreworfQorCitHTGludCBDb250ZXh0
TlVMTDo6Z2V0R1BVRGlzam9pbnQoKQoreworICAgIHJldHVybiAwOworfQorCitHTGludDY0IENv
bnRleHROVUxMOjpnZXRUaW1lc3RhbXAoKQoreworICAgIHJldHVybiAwOworfQorCit2b2lkIENv
bnRleHROVUxMOjpvbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpCit7
Cit9CisKK2NvbnN0IGdsOjpDYXBzICZDb250ZXh0TlVMTDo6Z2V0TmF0aXZlQ2FwcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1DYXBzOworfQorCitjb25zdCBnbDo6VGV4dHVyZUNhcHNNYXAgJkNv
bnRleHROVUxMOjpnZXROYXRpdmVUZXh0dXJlQ2FwcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1U
ZXh0dXJlQ2FwczsKK30KKworY29uc3QgZ2w6OkV4dGVuc2lvbnMgJkNvbnRleHROVUxMOjpnZXRO
YXRpdmVFeHRlbnNpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUV4dGVuc2lvbnM7Cit9CisK
K2NvbnN0IGdsOjpMaW1pdGF0aW9ucyAmQ29udGV4dE5VTEw6OmdldE5hdGl2ZUxpbWl0YXRpb25z
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUxpbWl0YXRpb25zOwogfQogCiBDb21waWxlckltcGwg
KkNvbnRleHROVUxMOjpjcmVhdGVDb21waWxlcigpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxDb21waWxlckltcGwgKj4oMCk7CisgICAgcmV0dXJuIG5l
dyBDb21waWxlck5VTEwoKTsKIH0KIAogU2hhZGVySW1wbCAqQ29udGV4dE5VTEw6OmNyZWF0ZVNo
YWRlcihjb25zdCBnbDo6U2hhZGVyU3RhdGUgJmRhdGEpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTaGFkZXJJbXBsICo+KDApOworICAgIHJldHVybiBu
ZXcgU2hhZGVyTlVMTChkYXRhKTsKIH0KIAogUHJvZ3JhbUltcGwgKkNvbnRleHROVUxMOjpjcmVh
dGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJmRhdGEpCiB7Ci0gICAgVU5JTVBMRU1F
TlRFRCgpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm9ncmFtSW1wbCAqPigwKTsKKyAgICBy
ZXR1cm4gbmV3IFByb2dyYW1OVUxMKGRhdGEpOwogfQogCiBGcmFtZWJ1ZmZlckltcGwgKkNvbnRl
eHROVUxMOjpjcmVhdGVGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmZGF0
YSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEZyYW1l
YnVmZmVySW1wbCAqPigwKTsKKyAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyTlVMTChkYXRhKTsK
IH0KIAogVGV4dHVyZUltcGwgKkNvbnRleHROVUxMOjpjcmVhdGVUZXh0dXJlKGNvbnN0IGdsOjpU
ZXh0dXJlU3RhdGUgJnN0YXRlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8VGV4dHVyZUltcGwgKj4oMCk7CisgICAgcmV0dXJuIG5ldyBUZXh0dXJlTlVM
TChzdGF0ZSk7CiB9CiAKIFJlbmRlcmJ1ZmZlckltcGwgKkNvbnRleHROVUxMOjpjcmVhdGVSZW5k
ZXJidWZmZXIoKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8UmVuZGVyYnVmZmVySW1wbCAqPigwKTsKKyAgICByZXR1cm4gbmV3IFJlbmRlcmJ1ZmZlck5V
TEwoKTsKIH0KIAotQnVmZmVySW1wbCAqQ29udGV4dE5VTEw6OmNyZWF0ZUJ1ZmZlcigpCitCdWZm
ZXJJbXBsICpDb250ZXh0TlVMTDo6Y3JlYXRlQnVmZmVyKGNvbnN0IGdsOjpCdWZmZXJTdGF0ZSAm
c3RhdGUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxC
dWZmZXJJbXBsICo+KDApOworICAgIHJldHVybiBuZXcgQnVmZmVyTlVMTChzdGF0ZSwgbUFsbG9j
YXRpb25UcmFja2VyKTsKIH0KIAogVmVydGV4QXJyYXlJbXBsICpDb250ZXh0TlVMTDo6Y3JlYXRl
VmVydGV4QXJyYXkoY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJmRhdGEpCiB7Ci0gICAgVU5J
TVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxWZXJ0ZXhBcnJheUltcGwgKj4o
MCk7CisgICAgcmV0dXJuIG5ldyBWZXJ0ZXhBcnJheU5VTEwoZGF0YSk7CiB9CiAKIFF1ZXJ5SW1w
bCAqQ29udGV4dE5VTEw6OmNyZWF0ZVF1ZXJ5KEdMZW51bSB0eXBlKQogewotICAgIFVOSU1QTEVN
RU5URUQoKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UXVlcnlJbXBsICo+KDApOworICAgIHJl
dHVybiBuZXcgUXVlcnlOVUxMKHR5cGUpOwogfQogCiBGZW5jZU5WSW1wbCAqQ29udGV4dE5VTEw6
OmNyZWF0ZUZlbmNlTlYoKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RmVuY2VOVkltcGwgKj4oMCk7CisgICAgcmV0dXJuIG5ldyBGZW5jZU5WTlVMTCgp
OwogfQogCiBGZW5jZVN5bmNJbXBsICpDb250ZXh0TlVMTDo6Y3JlYXRlRmVuY2VTeW5jKCkKIHsK
LSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEZlbmNlU3luY0lt
cGwgKj4oMCk7CisgICAgcmV0dXJuIG5ldyBGZW5jZVN5bmNOVUxMKCk7CiB9CiAKIFRyYW5zZm9y
bUZlZWRiYWNrSW1wbCAqQ29udGV4dE5VTEw6OmNyZWF0ZVRyYW5zZm9ybUZlZWRiYWNrKGNvbnN0
IGdsOjpUcmFuc2Zvcm1GZWVkYmFja1N0YXRlICZzdGF0ZSkKIHsKLSAgICBVTklNUExFTUVOVEVE
KCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFRyYW5zZm9ybUZlZWRiYWNrSW1wbCAqPigwKTsK
KyAgICByZXR1cm4gbmV3IFRyYW5zZm9ybUZlZWRiYWNrTlVMTChzdGF0ZSk7CiB9CiAKIFNhbXBs
ZXJJbXBsICpDb250ZXh0TlVMTDo6Y3JlYXRlU2FtcGxlcigpCiB7Ci0gICAgVU5JTVBMRU1FTlRF
RCgpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTYW1wbGVySW1wbCAqPigwKTsKKyAgICByZXR1
cm4gbmV3IFNhbXBsZXJOVUxMKCk7CiB9CiAKIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IENvbnRl
eHROVUxMOjpjcmVhdGVQYXRocyhHTHNpemVpIHJhbmdlKQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKLSAgICByZXR1cm4gc3RkOjp2ZWN0b3I8UGF0aEltcGwgKj4oKTsKKyAgICBzdGQ6OnZlY3Rv
cjxQYXRoSW1wbCAqPiByZXN1bHQocmFuZ2UpOworICAgIGZvciAoR0xzaXplaSBpZHggPSAwOyBp
ZHggPCByYW5nZTsgaWR4KyspCisgICAgeworICAgICAgICByZXN1bHRbaWR4XSA9IG5ldyBQYXRo
TlVMTCgpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitnbDo6RXJyb3IgQ29udGV4
dE5VTEw6OmRpc3BhdGNoQ29tcHV0ZShHTHVpbnQgbnVtR3JvdXBzWCwgR0x1aW50IG51bUdyb3Vw
c1ksIEdMdWludCBudW1Hcm91cHNaKQoreworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQog
CiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0NvbnRleHROVUxMLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db250ZXh0TlVMTC5oCmluZGV4
IDNmYzQwYjYyZTlkLi4xOWRlZDE4YzMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvQ29udGV4dE5VTEwuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db250ZXh0TlVM
TC5oCkBAIC0xNSwxMCArMTUsMjUgQEAKIG5hbWVzcGFjZSByeAogewogCitjbGFzcyBBbGxvY2F0
aW9uVHJhY2tlck5VTEwgOiBhbmdsZTo6Tm9uQ29weWFibGUKK3sKKyAgcHVibGljOgorICAgIGV4
cGxpY2l0IEFsbG9jYXRpb25UcmFja2VyTlVMTChzaXplX3QgbWF4VG90YWxBbGxvY2F0aW9uU2l6
ZSk7CisgICAgfkFsbG9jYXRpb25UcmFja2VyTlVMTCgpOworCisgICAgLy8gQ2hlY2sgaWYgaXQg
aXMgcG9zc2libGUgdG8gY2hhbmdlIGFuIGFsbG9jYXRpb24gZnJvbSBvbGRTaXplIHRvIG5ld1Np
emUuICBJZiBpdCBpcyBwb3NzaWJsZSwKKyAgICAvLyB0aGUgYWxsb2NhdGlvbiBpcyByZWdpc3Rl
cmVkIGFuZCB0cnVlIGlzIHJldHVybmVkIGVsc2UgZmFsc2UgaXMgcmV0dXJuZWQuCisgICAgYm9v
bCB1cGRhdGVNZW1vcnlBbGxvY2F0aW9uKHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSk7
CisKKyAgcHJpdmF0ZToKKyAgICBzaXplX3QgbUFsbG9jYXRlZEJ5dGVzOworICAgIGNvbnN0IHNp
emVfdCBtTWF4Qnl0ZXM7Cit9OworCiBjbGFzcyBDb250ZXh0TlVMTCA6IHB1YmxpYyBDb250ZXh0
SW1wbAogewogICBwdWJsaWM6Ci0gICAgQ29udGV4dE5VTEwoY29uc3QgZ2w6OkNvbnRleHRTdGF0
ZSAmc3RhdGUpOworICAgIENvbnRleHROVUxMKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJnN0YXRl
LCBBbGxvY2F0aW9uVHJhY2tlck5VTEwgKmFsbG9jYXRpb25UcmFja2VyKTsKICAgICB+Q29udGV4
dE5VTEwoKSBvdmVycmlkZTsKIAogICAgIGdsOjpFcnJvciBpbml0aWFsaXplKCkgb3ZlcnJpZGU7
CkBAIC01Miw4ICs2Nyw4MiBAQCBjbGFzcyBDb250ZXh0TlVMTCA6IHB1YmxpYyBDb250ZXh0SW1w
bAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6SW5kZXhSYW5nZSAmaW5kZXhSYW5nZSkg
b3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGRyYXdBcnJheXNJbmRpcmVjdChHTGVudW0gbW9kZSwg
Y29uc3QgR0x2b2lkICppbmRpcmVjdCkgb3ZlcnJpZGU7CisgICAgZ2w6OkVycm9yIGRyYXdFbGVt
ZW50c0luZGlyZWN0KEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICppbmRp
cmVjdCkgb3ZlcnJpZGU7CiAKICAgICAvLyBDSFJPTUlVTV9wYXRoX3JlbmRlcmluZyBwYXRoIGRy
YXdpbmcgbWV0aG9kcy4KKyAgICB2b2lkIHN0ZW5jaWxGaWxsUGF0aChjb25zdCBnbDo6UGF0aCAq
cGF0aCwgR0xlbnVtIGZpbGxNb2RlLCBHTHVpbnQgbWFzaykgb3ZlcnJpZGU7CisgICAgdm9pZCBz
dGVuY2lsU3Ryb2tlUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xpbnQgcmVmZXJlbmNlLCBH
THVpbnQgbWFzaykgb3ZlcnJpZGU7CisgICAgdm9pZCBjb3ZlckZpbGxQYXRoKGNvbnN0IGdsOjpQ
YXRoICpwYXRoLCBHTGVudW0gY292ZXJNb2RlKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvdmVyU3Ry
b2tlUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwgR0xlbnVtIGNvdmVyTW9kZSkgb3ZlcnJpZGU7
CisgICAgdm9pZCBzdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGgoY29uc3QgZ2w6OlBhdGggKnBhdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZpbGxNb2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBjb3Zlck1vZGUpIG92ZXJyaWRlOworCisgICAg
dm9pZCBzdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aChjb25zdCBnbDo6UGF0aCAqcGF0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSkgb3ZlcnJpZGU7CisKKyAg
ICB2b2lkIGNvdmVyRmlsbFBhdGhJbnN0YW5jZWQoY29uc3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGgg
Kj4gJnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gY292ZXJN
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNm
b3JtVmFsdWVzKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZChj
b25zdCBzdGQ6OnZlY3RvcjxnbDo6UGF0aCAqPiAmcGF0aHMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpIG92ZXJyaWRlOworICAg
IHZvaWQgc3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRo
ICo+ICZwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZmls
bE1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG1hc2ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAqdHJhbnNmb3Jt
VmFsdWVzKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkKGNv
bnN0IHN0ZDo6dmVjdG9yPGdsOjpQYXRoICo+ICZwYXRocywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpIG92ZXJyaWRlOworICAgIHZv
aWQgc3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkKGNvbnN0IHN0ZDo6dmVjdG9yPGds
OjpQYXRoICo+ICZwYXRocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gY292ZXJNb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBmaWxsTW9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgbWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHJhbnNmb3JtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpIG92
ZXJyaWRlOworICAgIHZvaWQgc3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWQoY29u
c3Qgc3RkOjp2ZWN0b3I8Z2w6OlBhdGggKj4gJnBhdGhzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGNvdmVyTW9kZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJlZmVyZW5jZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRyYW5zZm9ybVR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp0cmFuc2Zvcm1WYWx1ZXMpIG92ZXJyaWRlOworCisgICAgLy8gRGV2aWNlIGxvc3MK
KyAgICBHTGVudW0gZ2V0UmVzZXRTdGF0dXMoKSBvdmVycmlkZTsKKworICAgIC8vIFZlbmRvciBh
bmQgZGVzY3JpcHRpb24gc3RyaW5ncy4KKyAgICBzdGQ6OnN0cmluZyBnZXRWZW5kb3JTdHJpbmco
KSBjb25zdCBvdmVycmlkZTsKKyAgICBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9u
KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICAvLyBEZWJ1ZyBtYXJrZXJzLgorICAgIHZvaWQgaW5z
ZXJ0RXZlbnRNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikgb3ZlcnJp
ZGU7CisgICAgdm9pZCBwdXNoR3JvdXBNYXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIg
Km1hcmtlcikgb3ZlcnJpZGU7CisgICAgdm9pZCBwb3BHcm91cE1hcmtlcigpIG92ZXJyaWRlOwor
CisgICAgLy8gU3RhdGUgc3luYyB3aXRoIGRpcnR5IGJpdHMuCisgICAgdm9pZCBzeW5jU3RhdGUo
Y29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3ZlcnJpZGU7CisKKyAgICAv
LyBEaXNqb2ludCB0aW1lciBxdWVyaWVzCisgICAgR0xpbnQgZ2V0R1BVRGlzam9pbnQoKSBvdmVy
cmlkZTsKKyAgICBHTGludDY0IGdldFRpbWVzdGFtcCgpIG92ZXJyaWRlOworCisgICAgLy8gQ29u
dGV4dCBzd2l0Y2hpbmcKKyAgICB2b2lkIG9uTWFrZUN1cnJlbnQoY29uc3QgZ2w6OkNvbnRleHRT
dGF0ZSAmZGF0YSkgb3ZlcnJpZGU7CisKKyAgICAvLyBOYXRpdmUgY2FwYWJpbGl0aWVzLCB1bm1v
ZGlmaWVkIGJ5IGdsOjpDb250ZXh0LgorICAgIGNvbnN0IGdsOjpDYXBzICZnZXROYXRpdmVDYXBz
KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgZ2w6OlRleHR1cmVDYXBzTWFwICZnZXROYXRp
dmVUZXh0dXJlQ2FwcygpIGNvbnN0IG92ZXJyaWRlOworICAgIGNvbnN0IGdsOjpFeHRlbnNpb25z
ICZnZXROYXRpdmVFeHRlbnNpb25zKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgY29uc3QgZ2w6Okxp
bWl0YXRpb25zICZnZXROYXRpdmVMaW1pdGF0aW9ucygpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAg
Ly8gU2hhZGVyIGNyZWF0aW9uCiAgICAgQ29tcGlsZXJJbXBsICpjcmVhdGVDb21waWxlcigpIG92
ZXJyaWRlOwpAQCAtNzAsNyArMTU5LDcgQEAgY2xhc3MgQ29udGV4dE5VTEwgOiBwdWJsaWMgQ29u
dGV4dEltcGwKICAgICBSZW5kZXJidWZmZXJJbXBsICpjcmVhdGVSZW5kZXJidWZmZXIoKSBvdmVy
cmlkZTsKIAogICAgIC8vIEJ1ZmZlciBjcmVhdGlvbgotICAgIEJ1ZmZlckltcGwgKmNyZWF0ZUJ1
ZmZlcigpIG92ZXJyaWRlOworICAgIEJ1ZmZlckltcGwgKmNyZWF0ZUJ1ZmZlcihjb25zdCBnbDo6
QnVmZmVyU3RhdGUgJnN0YXRlKSBvdmVycmlkZTsKIAogICAgIC8vIFZlcnRleCBBcnJheSBjcmVh
dGlvbgogICAgIFZlcnRleEFycmF5SW1wbCAqY3JlYXRlVmVydGV4QXJyYXkoY29uc3QgZ2w6OlZl
cnRleEFycmF5U3RhdGUgJmRhdGEpIG92ZXJyaWRlOwpAQCAtODgsNiArMTc3LDE2IEBAIGNsYXNz
IENvbnRleHROVUxMIDogcHVibGljIENvbnRleHRJbXBsCiAgICAgU2FtcGxlckltcGwgKmNyZWF0
ZVNhbXBsZXIoKSBvdmVycmlkZTsKIAogICAgIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IGNyZWF0
ZVBhdGhzKEdMc2l6ZWkgcmFuZ2UpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIGRpc3BhdGNo
Q29tcHV0ZShHTHVpbnQgbnVtR3JvdXBzWCwgR0x1aW50IG51bUdyb3Vwc1ksIEdMdWludCBudW1H
cm91cHNaKSBvdmVycmlkZTsKKworICBwcml2YXRlOgorICAgIGdsOjpDYXBzIG1DYXBzOworICAg
IGdsOjpUZXh0dXJlQ2Fwc01hcCBtVGV4dHVyZUNhcHM7CisgICAgZ2w6OkV4dGVuc2lvbnMgbUV4
dGVuc2lvbnM7CisgICAgZ2w6OkxpbWl0YXRpb25zIG1MaW1pdGF0aW9uczsKKworICAgIEFsbG9j
YXRpb25UcmFja2VyTlVMTCAqbUFsbG9jYXRpb25UcmFja2VyOwogfTsKIAogfSAgLy8gbmFtZXNw
YWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbnVsbC9EZXZpY2VOVUxMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0RldmljZU5VTEwuY3BwCmluZGV4IDQ4OTNmOTQ2NjIz
Li40NzM1ZWVhNDFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL251bGwvRGV2aWNlTlVMTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRGV2aWNlTlVMTC5jcHAKQEAgLTMw
LDE5ICszMCwxNiBAQCBlZ2w6OkVycm9yIERldmljZU5VTEw6OmdldERldmljZSh2b2lkICoqb3V0
VmFsdWUpCiAKIEVHTGludCBEZXZpY2VOVUxMOjpnZXRUeXBlKCkKIHsKLSAgICBVTklNUExFTUVO
VEVEKCk7Ci0gICAgcmV0dXJuIEVHTGludCgpOworICAgIHJldHVybiAwOwogfQogCiB2b2lkIERl
dmljZU5VTEw6OmdlbmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRldmljZUV4dGVuc2lvbnMgKm91dEV4
dGVuc2lvbnMpIGNvbnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCiBib29sIERldmlj
ZU5VTEw6OmRldmljZUV4dGVybmFsbHlTb3VyY2VkKCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7
Ci0gICAgcmV0dXJuIGJvb2woKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIH0gIC8vIG5hbWVz
cGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL251bGwvRGlzcGxheU5VTEwuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRGlzcGxheU5VTEwuY3BwCmluZGV4IGJkZjZkNGEx
NDUwLi4xY2FhN2M4OTJhYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRGlzcGxheU5VTEwuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0Rpc3BsYXlOVUxMLmNwcApA
QCAtMTEsMTAgKzExLDE1IEBACiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKIAorI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvQ29udGV4dE5VTEwuaCIKKyNpbmNsdWRlICJsaWJB
TkdMRS9yZW5kZXJlci9udWxsL0RldmljZU5VTEwuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9udWxsL0ltYWdlTlVMTC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwv
U3VyZmFjZU5VTEwuaCIKKwogbmFtZXNwYWNlIHJ4CiB7CiAKLURpc3BsYXlOVUxMOjpEaXNwbGF5
TlVMTCgpIDogRGlzcGxheUltcGwoKQorRGlzcGxheU5VTEw6OkRpc3BsYXlOVUxMKGNvbnN0IGVn
bDo6RGlzcGxheVN0YXRlICZzdGF0ZSkgOiBEaXNwbGF5SW1wbChzdGF0ZSksIG1EZXZpY2UobnVs
bHB0cikKIHsKIH0KIApAQCAtMjQsMTI2ICsyOSwxNTEgQEAgRGlzcGxheU5VTEw6On5EaXNwbGF5
TlVMTCgpCiAKIGVnbDo6RXJyb3IgRGlzcGxheU5VTEw6OmluaXRpYWxpemUoZWdsOjpEaXNwbGF5
ICpkaXNwbGF5KQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZWdsOjpFcnJv
cihFR0xfQkFEX0FDQ0VTUyk7CisgICAgbURldmljZSA9IG5ldyBEZXZpY2VOVUxMKCk7CisKKyAg
ICBjb25zdGV4cHIgc2l6ZV90IGtNYXhUb3RhbEFsbG9jYXRpb25TaXplID0gMSA8PCAyODsgIC8v
IDI1Nk1CCisgICAgbUFsbG9jYXRpb25UcmFja2VyLnJlc2V0KG5ldyBBbGxvY2F0aW9uVHJhY2tl
ck5VTEwoa01heFRvdGFsQWxsb2NhdGlvblNpemUpKTsKKworICAgIHJldHVybiBlZ2w6Ok5vRXJy
b3IoKTsKIH0KIAogdm9pZCBEaXNwbGF5TlVMTDo6dGVybWluYXRlKCkKIHsKLSAgICBVTklNUExF
TUVOVEVEKCk7CisgICAgbUFsbG9jYXRpb25UcmFja2VyLnJlc2V0KCk7CisgICAgU2FmZURlbGV0
ZShtRGV2aWNlKTsKIH0KIAogZWdsOjpFcnJvciBEaXNwbGF5TlVMTDo6bWFrZUN1cnJlbnQoZWds
OjpTdXJmYWNlICpkcmF3U3VyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7
Ci0gICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworICAgIHJldHVybiBlZ2w6
Ok5vRXJyb3IoKTsKIH0KIAogZWdsOjpDb25maWdTZXQgRGlzcGxheU5VTEw6OmdlbmVyYXRlQ29u
ZmlncygpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBlZ2w6OkNvbmZpZ1Nl
dCgpOworICAgIGVnbDo6Q29uZmlnIGNvbmZpZzsKKyAgICBjb25maWcucmVuZGVyVGFyZ2V0Rm9y
bWF0ICAgID0gR0xfUkdCQTg7CisgICAgY29uZmlnLmRlcHRoU3RlbmNpbEZvcm1hdCAgICA9IEdM
X0RFUFRIMjRfU1RFTkNJTDg7CisgICAgY29uZmlnLmJ1ZmZlclNpemUgICAgICAgICAgICA9IDMy
OworICAgIGNvbmZpZy5yZWRTaXplICAgICAgICAgICAgICAgPSA4OworICAgIGNvbmZpZy5ncmVl
blNpemUgICAgICAgICAgICAgPSA4OworICAgIGNvbmZpZy5ibHVlU2l6ZSAgICAgICAgICAgICAg
PSA4OworICAgIGNvbmZpZy5hbHBoYVNpemUgICAgICAgICAgICAgPSA4OworICAgIGNvbmZpZy5h
bHBoYU1hc2tTaXplICAgICAgICAgPSAwOworICAgIGNvbmZpZy5iaW5kVG9UZXh0dXJlUkdCICAg
ICAgPSBFR0xfVFJVRTsKKyAgICBjb25maWcuYmluZFRvVGV4dHVyZVJHQkEgICAgID0gRUdMX1RS
VUU7CisgICAgY29uZmlnLmNvbG9yQnVmZmVyVHlwZSAgICAgICA9IEVHTF9SR0JfQlVGRkVSOwor
ICAgIGNvbmZpZy5jb25maWdDYXZlYXQgICAgICAgICAgPSBFR0xfTk9ORTsKKyAgICBjb25maWcu
Y29uZm9ybWFudCAgICAgICAgICAgID0gRUdMX09QRU5HTF9FUzJfQklUIHwgRUdMX09QRU5HTF9F
UzNfQklUOworICAgIGNvbmZpZy5kZXB0aFNpemUgICAgICAgICAgICAgPSAyNDsKKyAgICBjb25m
aWcubGV2ZWwgICAgICAgICAgICAgICAgID0gMDsKKyAgICBjb25maWcubWF0Y2hOYXRpdmVQaXht
YXAgICAgID0gRUdMX05PTkU7CisgICAgY29uZmlnLm1heFBCdWZmZXJXaWR0aCAgICAgICA9IDA7
CisgICAgY29uZmlnLm1heFBCdWZmZXJIZWlnaHQgICAgICA9IDA7CisgICAgY29uZmlnLm1heFBC
dWZmZXJQaXhlbHMgICAgICA9IDA7CisgICAgY29uZmlnLm1heFN3YXBJbnRlcnZhbCAgICAgICA9
IDE7CisgICAgY29uZmlnLm1pblN3YXBJbnRlcnZhbCAgICAgICA9IDE7CisgICAgY29uZmlnLm5h
dGl2ZVJlbmRlcmFibGUgICAgICA9IEVHTF9UUlVFOworICAgIGNvbmZpZy5uYXRpdmVWaXN1YWxJ
RCAgICAgICAgPSAwOworICAgIGNvbmZpZy5uYXRpdmVWaXN1YWxUeXBlICAgICAgPSBFR0xfTk9O
RTsKKyAgICBjb25maWcucmVuZGVyYWJsZVR5cGUgICAgICAgID0gRUdMX09QRU5HTF9FUzJfQklU
IHwgRUdMX09QRU5HTF9FUzNfQklUOworICAgIGNvbmZpZy5zYW1wbGVCdWZmZXJzICAgICAgICAg
PSAwOworICAgIGNvbmZpZy5zYW1wbGVzICAgICAgICAgICAgICAgPSAwOworICAgIGNvbmZpZy5z
dGVuY2lsU2l6ZSAgICAgICAgICAgPSA4OworICAgIGNvbmZpZy5zdXJmYWNlVHlwZSAgICAgICAg
ICAgPSBFR0xfV0lORE9XX0JJVCB8IEVHTF9QQlVGRkVSX0JJVDsKKyAgICBjb25maWcub3B0aW1h
bE9yaWVudGF0aW9uICAgID0gMDsKKyAgICBjb25maWcudHJhbnNwYXJlbnRUeXBlICAgICAgID0g
RUdMX05PTkU7CisgICAgY29uZmlnLnRyYW5zcGFyZW50UmVkVmFsdWUgICA9IDA7CisgICAgY29u
ZmlnLnRyYW5zcGFyZW50R3JlZW5WYWx1ZSA9IDA7CisgICAgY29uZmlnLnRyYW5zcGFyZW50Qmx1
ZVZhbHVlICA9IDA7CisKKyAgICBlZ2w6OkNvbmZpZ1NldCBjb25maWdTZXQ7CisgICAgY29uZmln
U2V0LmFkZChjb25maWcpOworICAgIHJldHVybiBjb25maWdTZXQ7CiB9CiAKIGJvb2wgRGlzcGxh
eU5VTEw6OnRlc3REZXZpY2VMb3N0KCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0
dXJuIGJvb2woKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGVnbDo6RXJyb3IgRGlzcGxheU5V
TEw6OnJlc3RvcmVMb3N0RGV2aWNlKCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0
dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworICAgIHJldHVybiBlZ2w6Ok5vRXJyb3Io
KTsKIH0KIAogYm9vbCBEaXNwbGF5TlVMTDo6aXNWYWxpZE5hdGl2ZVdpbmRvdyhFR0xOYXRpdmVX
aW5kb3dUeXBlIHdpbmRvdykgY29uc3QKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0
dXJuIGJvb2woKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RkOjpzdHJpbmcgRGlzcGxheU5V
TEw6OmdldFZlbmRvclN0cmluZygpIGNvbnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAg
IHJldHVybiBzdGQ6OnN0cmluZygpOworICAgIHJldHVybiAiTlVMTCI7CiB9CiAKIGVnbDo6RXJy
b3IgRGlzcGxheU5VTEw6OmdldERldmljZShEZXZpY2VJbXBsICoqZGV2aWNlKQogewotICAgIFVO
SU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7Cisg
ICAgKmRldmljZSA9IG1EZXZpY2U7CisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOwogfQogCiBl
Z2w6OkVycm9yIERpc3BsYXlOVUxMOjp3YWl0Q2xpZW50KCkgY29uc3QKIHsKLSAgICBVTklNUExF
TUVOVEVEKCk7Ci0gICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworICAgIHJl
dHVybiBlZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZWdsOjpFcnJvciBEaXNwbGF5TlVMTDo6d2FpdE5h
dGl2ZShFR0xpbnQgZW5naW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
Z2w6OlN1cmZhY2UgKmRyYXdTdXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlZ2w6OlN1cmZhY2UgKnJlYWRTdXJmYWNlKSBjb25zdAogewotICAgIFVOSU1QTEVNRU5U
RUQoKTsKLSAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7CisgICAgcmV0dXJu
IGVnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6VmVyc2lvbiBEaXNwbGF5TlVMTDo6Z2V0TWF4U3Vw
cG9ydGVkRVNWZXJzaW9uKCkgY29uc3QKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0
dXJuIGdsOjpWZXJzaW9uKCk7CisgICAgcmV0dXJuIGdsOjpWZXJzaW9uKDMsIDIpOwogfQogCiBT
dXJmYWNlSW1wbCAqRGlzcGxheU5VTEw6OmNyZWF0ZVdpbmRvd1N1cmZhY2UoY29uc3QgZWdsOjpT
dXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2lu
ZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8U3VyZmFjZUltcGwgKj4oMCk7CisgICAgcmV0dXJuIG5ldyBT
dXJmYWNlTlVMTChzdGF0ZSk7CiB9CiAKIFN1cmZhY2VJbXBsICpEaXNwbGF5TlVMTDo6Y3JlYXRl
UGJ1ZmZlclN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAq
Y29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7Ci0gICAgVU5JTVBMRU1F
TlRFRCgpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdXJmYWNlSW1wbCAqPigwKTsKKyAgICBy
ZXR1cm4gbmV3IFN1cmZhY2VOVUxMKHN0YXRlKTsKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlO
VUxMOjpjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0
ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZm
ZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxTdXJmYWNlSW1wbCAqPigwKTsKKyAgICByZXR1cm4g
bmV3IFN1cmZhY2VOVUxMKHN0YXRlKTsKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlOVUxMOjpj
cmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZp
ZyAqY29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBOYXRpdmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0
cmlicykKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFN1
cmZhY2VJbXBsICo+KDApOworICAgIHJldHVybiBuZXcgU3VyZmFjZU5VTEwoc3RhdGUpOwogfQog
CiBJbWFnZUltcGwgKkRpc3BsYXlOVUxMOjpjcmVhdGVJbWFnZShFR0xlbnVtIHRhcmdldCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6SW1hZ2VTaWJsaW5nICpidWZm
ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJp
YnV0ZU1hcCAmYXR0cmlicykKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PEltYWdlSW1wbCAqPigwKTsKKyAgICByZXR1cm4gbmV3IEltYWdlTlVMTCgpOwog
fQogCiBDb250ZXh0SW1wbCAqRGlzcGxheU5VTEw6OmNyZWF0ZUNvbnRleHQoY29uc3QgZ2w6OkNv
bnRleHRTdGF0ZSAmc3RhdGUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxDb250ZXh0SW1wbCAqPigwKTsKKyAgICByZXR1cm4gbmV3IENvbnRleHROVUxM
KHN0YXRlLCBtQWxsb2NhdGlvblRyYWNrZXIuZ2V0KCkpOwogfQogCiBTdHJlYW1Qcm9kdWNlcklt
cGwgKkRpc3BsYXlOVUxMOjpjcmVhdGVTdHJlYW1Qcm9kdWNlckQzRFRleHR1cmVOVjEyKApAQCAt
MTUxLDE3ICsxODEsMzMgQEAgU3RyZWFtUHJvZHVjZXJJbXBsICpEaXNwbGF5TlVMTDo6Y3JlYXRl
U3RyZWFtUHJvZHVjZXJEM0RUZXh0dXJlTlYxMigKICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1h
cCAmYXR0cmlicykKIHsKICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PFN0cmVhbVByb2R1Y2VySW1wbCAqPigwKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAog
dm9pZCBEaXNwbGF5TlVMTDo6Z2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlzcGxheUV4dGVuc2lv
bnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIG91
dEV4dGVuc2lvbnMtPmNyZWF0ZUNvbnRleHRSb2J1c3RuZXNzICAgICAgICAgICAgPSB0cnVlOwor
ICAgIG91dEV4dGVuc2lvbnMtPnBvc3RTdWJCdWZmZXIgICAgICAgICAgICAgICAgICAgICAgPSB0
cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0ZUNvbnRleHQgICAgICAgICAgICAgICAgICAg
ICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmRldmljZVF1ZXJ5ICAgICAgICAgICAgICAg
ICAgICAgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmltYWdlICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmltYWdlQmFzZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmdsVGV4dHVy
ZTJESW1hZ2UgICAgICAgICAgICAgICAgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmds
VGV4dHVyZUN1YmVtYXBJbWFnZSAgICAgICAgICAgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lv
bnMtPmdsVGV4dHVyZTNESW1hZ2UgICAgICAgICAgICAgICAgICAgPSB0cnVlOworICAgIG91dEV4
dGVuc2lvbnMtPmdsUmVuZGVyYnVmZmVySW1hZ2UgICAgICAgICAgICAgICAgPSB0cnVlOworICAg
IG91dEV4dGVuc2lvbnMtPmdldEFsbFByb2NBZGRyZXNzZXMgICAgICAgICAgICAgICAgPSB0cnVl
OworICAgIG91dEV4dGVuc2lvbnMtPmZsZXhpYmxlU3VyZmFjZUNvbXBhdGliaWxpdHkgICAgICAg
PSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmRpcmVjdENvbXBvc2l0aW9uICAgICAgICAgICAg
ICAgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0ZUNvbnRleHROb0Vycm9yICAg
ICAgICAgICAgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0ZUNvbnRleHRXZWJH
TENvbXBhdGliaWxpdHkgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPmNyZWF0ZUNvbnRl
eHRCaW5kR2VuZXJhdGVzUmVzb3VyY2UgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPnN3YXBC
dWZmZXJzV2l0aERhbWFnZSAgICAgICAgICAgICAgPSB0cnVlOwogfQogCiB2b2lkIERpc3BsYXlO
VUxMOjpnZW5lcmF0ZUNhcHMoZWdsOjpDYXBzICpvdXRDYXBzKSBjb25zdAogewotICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICBvdXRDYXBzLT50ZXh0dXJlTlBPVCA9IHRydWU7CiB9CiAKIH0gIC8v
IG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL251bGwvRGlzcGxheU5VTEwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0Rpc3BsYXlOVUxMLmgKaW5kZXggOGE3NTBi
MWQyMDYuLmQ1ZjQ1Y2U3ZTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9EaXNwbGF5TlVMTC5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0Rpc3BsYXlOVUxMLmgKQEAg
LTE1LDEwICsxNSwxMiBAQAogbmFtZXNwYWNlIHJ4CiB7CiAKK2NsYXNzIEFsbG9jYXRpb25UcmFj
a2VyTlVMTDsKKwogY2xhc3MgRGlzcGxheU5VTEwgOiBwdWJsaWMgRGlzcGxheUltcGwKIHsKICAg
cHVibGljOgotICAgIERpc3BsYXlOVUxMKCk7CisgICAgRGlzcGxheU5VTEwoY29uc3QgZWdsOjpE
aXNwbGF5U3RhdGUgJnN0YXRlKTsKICAgICB+RGlzcGxheU5VTEwoKSBvdmVycmlkZTsKIAogICAg
IGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShlZ2w6OkRpc3BsYXkgKmRpc3BsYXkpIG92ZXJyaWRlOwpA
QCAtNDYsMTggKzQ4LDE1IEBAIGNsYXNzIERpc3BsYXlOVUxMIDogcHVibGljIERpc3BsYXlJbXBs
CiAgICAgZ2w6OlZlcnNpb24gZ2V0TWF4U3VwcG9ydGVkRVNWZXJzaW9uKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAKICAgICBTdXJmYWNlSW1wbCAqY3JlYXRlV2luZG93U3VyZmFjZShjb25zdCBlZ2w6OlN1
cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMp
IG92ZXJyaWRlOwogICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVyU3VyZmFjZShjb25zdCBl
Z2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykg
b3ZlcnJpZGU7CiAgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVy
KGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTENsaWVu
dEJ1ZmZlciBzaGFyZUhhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMZW51bSBidWZ0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgYnVmZmVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1h
cCAmYXR0cmlicykgb3ZlcnJpZGU7CiAgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVBpeG1hcFN1cmZh
Y2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdGl2ZVBpeG1hcFR5cGUgbmF0aXZlUGl4
bWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0
cmlidXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKIApAQCAtNzQsNiArNzMsMTAgQEAgY2xhc3Mg
RGlzcGxheU5VTEwgOiBwdWJsaWMgRGlzcGxheUltcGwKICAgcHJpdmF0ZToKICAgICB2b2lkIGdl
bmVyYXRlRXh0ZW5zaW9ucyhlZ2w6OkRpc3BsYXlFeHRlbnNpb25zICpvdXRFeHRlbnNpb25zKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIGdlbmVyYXRlQ2FwcyhlZ2w6OkNhcHMgKm91dENhcHMp
IGNvbnN0IG92ZXJyaWRlOworCisgICAgRGV2aWNlSW1wbCAqbURldmljZTsKKworICAgIHN0ZDo6
dW5pcXVlX3B0cjxBbGxvY2F0aW9uVHJhY2tlck5VTEw+IG1BbGxvY2F0aW9uVHJhY2tlcjsKIH07
CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRmVuY2VTeW5jTlVMTC5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GZW5jZVN5bmNOVUxM
LmNwcAppbmRleCAzN2JmZGZlZGI2MS4uYWU2NWMwYjI3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0ZlbmNlU3luY05VTEwu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9u
dWxsL0ZlbmNlU3luY05VTEwuY3BwCkBAIC0yNCwyNiArMjQsMjQgQEAgRmVuY2VTeW5jTlVMTDo6
fkZlbmNlU3luY05VTEwoKQogCiBnbDo6RXJyb3IgRmVuY2VTeW5jTlVMTDo6c2V0KEdMZW51bSBj
b25kaXRpb24sIEdMYml0ZmllbGQgZmxhZ3MpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJldHVybiBnbDo6
Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgRmVuY2VTeW5jTlVMTDo6Y2xpZW50V2FpdChHTGJp
dGZpZWxkIGZsYWdzLCBHTHVpbnQ2NCB0aW1lb3V0LCBHTGVudW0gKm91dFJlc3VsdCkKIHsKLSAg
ICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTik7CisgICAgKm91dFJlc3VsdCA9IEdMX0FMUkVBRFlfU0lHTkFMRUQ7CisgICAgcmV0dXJu
IGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBGZW5jZVN5bmNOVUxMOjpzZXJ2ZXJXYWl0
KEdMYml0ZmllbGQgZmxhZ3MsIEdMdWludDY0IHRpbWVvdXQpCiB7Ci0gICAgVU5JTVBMRU1FTlRF
RCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgRmVuY2VTeW5jTlVMTDo6Z2V0U3Rh
dHVzKEdMaW50ICpvdXRSZXN1bHQpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICpvdXRSZXN1bHQgPSBHTF9T
SUdOQUxFRDsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNl
IHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbnVsbC9GcmFtZWJ1ZmZlck5VTEwuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRnJhbWVidWZmZXJOVUxMLmNwcAppbmRleCAxNGVi
ZTFlYmE3Zi4uZmU5N2I2NjdiMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL0ZyYW1lYnVmZmVyTlVMTC5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRnJhbWVidWZm
ZXJOVUxMLmNwcApAQCAtOSw2ICs5LDggQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L251bGwvRnJhbWVidWZmZXJOVUxMLmgiCiAKKyNpbmNsdWRlICJsaWJBTkdMRS9mb3JtYXR1dGls
cy5oIgorCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCiAKIG5hbWVzcGFjZSByeApAQCAtMjQs
MjggKzI2LDI0IEBAIEZyYW1lYnVmZmVyTlVMTDo6fkZyYW1lYnVmZmVyTlVMTCgpCiAKIGdsOjpF
cnJvciBGcmFtZWJ1ZmZlck5VTEw6OmRpc2NhcmQoc2l6ZV90IGNvdW50LCBjb25zdCBHTGVudW0g
KmF0dGFjaG1lbnRzKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0K
IAogZ2w6OkVycm9yIEZyYW1lYnVmZmVyTlVMTDo6aW52YWxpZGF0ZShzaXplX3QgY291bnQsIGNv
bnN0IEdMZW51bSAqYXR0YWNobWVudHMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJl
dHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwogfQogCiBnbDo6RXJyb3IgRnJhbWVidWZmZXJOVUxMOjppbnZhbGlkYXRlU3ViKHNp
emVfdCBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgR0xlbnVtICphdHRhY2htZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmYXJlYSkKIHsKLSAgICBVTklNUExFTUVOVEVE
KCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgcmV0
dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBGcmFtZWJ1ZmZlck5VTEw6OmNsZWFy
KENvbnRleHRJbXBsICpjb250ZXh0LCBHTGJpdGZpZWxkIG1hc2spCiB7Ci0gICAgVU5JTVBMRU1F
TlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAg
IHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgRnJhbWVidWZmZXJOVUxMOjpj
bGVhckJ1ZmZlcmZ2KENvbnRleHRJbXBsICpjb250ZXh0LApAQCAtNTMsOCArNTEsNyBAQCBnbDo6
RXJyb3IgRnJhbWVidWZmZXJOVUxMOjpjbGVhckJ1ZmZlcmZ2KENvbnRleHRJbXBsICpjb250ZXh0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVm
ZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZs
b2F0ICp2YWx1ZXMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQog
CiBnbDo6RXJyb3IgRnJhbWVidWZmZXJOVUxMOjpjbGVhckJ1ZmZlcnVpdihDb250ZXh0SW1wbCAq
Y29udGV4dCwKQEAgLTYyLDggKzU5LDcgQEAgZ2w6OkVycm9yIEZyYW1lYnVmZmVyTlVMTDo6Y2xl
YXJCdWZmZXJ1aXYoQ29udGV4dEltcGwgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBkcmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50ICp2YWx1ZXMpCiB7Ci0gICAgVU5J
TVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgRnJhbWVidWZmZXJO
VUxMOjpjbGVhckJ1ZmZlcml2KENvbnRleHRJbXBsICpjb250ZXh0LApAQCAtNzEsOCArNjcsNyBA
QCBnbDo6RXJyb3IgRnJhbWVidWZmZXJOVUxMOjpjbGVhckJ1ZmZlcml2KENvbnRleHRJbXBsICpj
b250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBk
cmF3YnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGludCAqdmFsdWVzKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAogZ2w6OkVycm9yIEZyYW1lYnVmZmVyTlVMTDo6Y2xlYXJCdWZmZXJmaShDb250ZXh0SW1w
bCAqY29udGV4dCwKQEAgLTgxLDIwICs3NiwzMyBAQCBnbDo6RXJyb3IgRnJhbWVidWZmZXJOVUxM
OjpjbGVhckJ1ZmZlcmZpKENvbnRleHRJbXBsICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGRlcHRoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzdGVuY2lsKQogewotICAgIFVOSU1QTEVNRU5U
RUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICBy
ZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogR0xlbnVtIEZyYW1lYnVmZmVyTlVMTDo6Z2V0SW1w
bGVtZW50YXRpb25Db2xvclJlYWRGb3JtYXQoKSBjb25zdAogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKLSAgICByZXR1cm4gR0xlbnVtKCk7CisgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNo
bWVudCAqcmVhZEF0dGFjaG1lbnQgPSBtU3RhdGUuZ2V0UmVhZEF0dGFjaG1lbnQoKTsKKyAgICBp
ZiAocmVhZEF0dGFjaG1lbnQgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBHTF9O
T05FOworICAgIH0KKworICAgIGNvbnN0IGdsOjpGb3JtYXQgJmZvcm1hdCA9IHJlYWRBdHRhY2ht
ZW50LT5nZXRGb3JtYXQoKTsKKyAgICBBU1NFUlQoZm9ybWF0LmluZm8gIT0gbnVsbHB0cik7Cisg
ICAgcmV0dXJuIGZvcm1hdC5pbmZvLT5nZXRSZWFkUGl4ZWxzRm9ybWF0KCk7CiB9CiAKIEdMZW51
bSBGcmFtZWJ1ZmZlck5VTEw6OmdldEltcGxlbWVudGF0aW9uQ29sb3JSZWFkVHlwZSgpIGNvbnN0
CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBHTGVudW0oKTsKKyAgICBjb25z
dCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpyZWFkQXR0YWNobWVudCA9IG1TdGF0ZS5nZXRS
ZWFkQXR0YWNobWVudCgpOworICAgIGlmIChyZWFkQXR0YWNobWVudCA9PSBudWxscHRyKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEdMX05PTkU7CisgICAgfQorCisgICAgY29uc3QgZ2w6OkZvcm1h
dCAmZm9ybWF0ID0gcmVhZEF0dGFjaG1lbnQtPmdldEZvcm1hdCgpOworICAgIEFTU0VSVChmb3Jt
YXQuaW5mbyAhPSBudWxscHRyKTsKKyAgICByZXR1cm4gZm9ybWF0LmluZm8tPmdldFJlYWRQaXhl
bHNUeXBlKCk7CiB9CiAKIGdsOjpFcnJvciBGcmFtZWJ1ZmZlck5VTEw6OnJlYWRQaXhlbHMoQ29u
dGV4dEltcGwgKmNvbnRleHQsCkBAIC0xMDMsOCArMTExLDcgQEAgZ2w6OkVycm9yIEZyYW1lYnVm
ZmVyTlVMTDo6cmVhZFBpeGVscyhDb250ZXh0SW1wbCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKSBjb25zdAogewotICAgIFVOSU1QTEVN
RU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAg
ICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIEZyYW1lYnVmZmVyTlVMTDo6
YmxpdChDb250ZXh0SW1wbCAqY29udGV4dCwKQEAgLTExMywxOSArMTIwLDIyIEBAIGdsOjpFcnJv
ciBGcmFtZWJ1ZmZlck5VTEw6OmJsaXQoQ29udGV4dEltcGwgKmNvbnRleHQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMYml0ZmllbGQgbWFzaywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIGZpbHRlcikKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7CiB9CiAKIGJvb2wgRnJhbWVidWZmZXJOVUxMOjpjaGVja1N0YXR1cygpIGNv
bnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBib29sKCk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgRnJhbWVidWZmZXJOVUxMOjpzeW5jU3RhdGUoQ29udGV4dElt
cGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQorewogfQogCi12b2lkIEZyYW1l
YnVmZmVyTlVMTDo6c3luY1N0YXRlKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlcjo6RGlydHlCaXRzICZk
aXJ0eUJpdHMpCitnbDo6RXJyb3IgRnJhbWVidWZmZXJOVUxMOjpnZXRTYW1wbGVQb3NpdGlvbihz
aXplX3QgaW5kZXgsIEdMZmxvYXQgKnh5KSBjb25zdAogewotICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVs
bC9GcmFtZWJ1ZmZlck5VTEwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9udWxsL0ZyYW1lYnVmZmVyTlVMTC5oCmluZGV4IGM1MzEzMmMxOGQxLi5jZDQ4
YzI1Y2M3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL251bGwvRnJhbWVidWZmZXJOVUxMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRnJhbWVidWZmZXJOVUxMLmgKQEAgLTYy
LDcgKzYyLDkgQEAgY2xhc3MgRnJhbWVidWZmZXJOVUxMIDogcHVibGljIEZyYW1lYnVmZmVySW1w
bAogCiAgICAgYm9vbCBjaGVja1N0YXR1cygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdm9pZCBz
eW5jU3RhdGUoY29uc3QgZ2w6OkZyYW1lYnVmZmVyOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3Zl
cnJpZGU7CisgICAgdm9pZCBzeW5jU3RhdGUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLCBjb25z
dCBnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVycmlkZTsKKworICAg
IGdsOjpFcnJvciBnZXRTYW1wbGVQb3NpdGlvbihzaXplX3QgaW5kZXgsIEdMZmxvYXQgKnh5KSBj
b25zdCBvdmVycmlkZTsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUHJvZ3JhbU5V
TEwuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251
bGwvUHJvZ3JhbU5VTEwuY3BwCmluZGV4IDI4Y2FiNGQzNjdkLi4zNWJkNDZkYjUzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwv
UHJvZ3JhbU5VTEwuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9udWxsL1Byb2dyYW1OVUxMLmNwcApAQCAtMjIsOTMgKzIyLDg0IEBAIFByb2dy
YW1OVUxMOjp+UHJvZ3JhbU5VTEwoKQogewogfQogCi1MaW5rUmVzdWx0IFByb2dyYW1OVUxMOjps
b2FkKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6QmluYXJ5SW5wdXRTdHJlYW0gKnN0cmVhbSkK
K0xpbmtSZXN1bHQgUHJvZ3JhbU5VTEw6OmxvYWQoY29uc3QgQ29udGV4dEltcGwgKmNvbnRleHRJ
bXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SW5mb0xvZyAmaW5mb0xvZywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJl
YW0pCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBMaW5rUmVzdWx0KGZhbHNl
LCBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogZ2w6OkVycm9yIFByb2dyYW1OVUxMOjpzYXZlKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0
cmVhbSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIHZvaWQg
UHJvZ3JhbU5VTEw6OnNldEJpbmFyeVJldHJpZXZhYmxlSGludChib29sIHJldHJpZXZhYmxlKQog
ewotICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAotTGlua1Jlc3VsdCBQcm9ncmFtTlVMTDo6bGlu
ayhjb25zdCBnbDo6Q29udGV4dFN0YXRlICZkYXRhLCBnbDo6SW5mb0xvZyAmaW5mb0xvZykKK3Zv
aWQgUHJvZ3JhbU5VTEw6OnNldFNlcGFyYWJsZShib29sIHNlcGFyYWJsZSkKIHsKLSAgICBVTklN
UExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIExpbmtSZXN1bHQoZmFsc2UsIGdsOjpFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOworfQorCitMaW5rUmVzdWx0IFByb2dyYW1OVUxMOjpsaW5rKENv
bnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgZ2w6OlZhcnlpbmdQYWNraW5nICZwYWNraW5nLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnbDo6SW5mb0xvZyAmaW5mb0xvZykKK3sKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogR0xi
b29sZWFuIFByb2dyYW1OVUxMOjp2YWxpZGF0ZShjb25zdCBnbDo6Q2FwcyAmY2FwcywgZ2w6Oklu
Zm9Mb2cgKmluZm9Mb2cpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBHTGJv
b2xlYW4oKTsKKyAgICByZXR1cm4gR0xfVFJVRTsKIH0KIAogdm9pZCBQcm9ncmFtTlVMTDo6c2V0
VW5pZm9ybTFmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAq
dikKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgUHJvZ3JhbU5VTEw6OnNldFVu
aWZvcm0yZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYp
CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCiB2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlm
b3JtM2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQog
ewotICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAogdm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9y
bTRmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKIHsK
LSAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm0x
aXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQogewotICAg
IFVOSU1QTEVNRU5URUQoKTsKIH0KIAogdm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybTJpdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCiB7Ci0gICAgVU5J
TVBMRU1FTlRFRCgpOwogfQogCiB2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtM2l2KEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKIHsKLSAgICBVTklNUExF
TUVOVEVEKCk7CiB9CiAKIHZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm00aXYoR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQogewotICAgIFVOSU1QTEVNRU5U
RUQoKTsKIH0KIAogdm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybTF1aXYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikKIHsKLSAgICBVTklNUExFTUVOVEVE
KCk7CiB9CiAKIHZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm0ydWl2KEdMaW50IGxvY2F0aW9u
LCBHTHNpemVpIGNvdW50LCBjb25zdCBHTHVpbnQgKnYpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgp
OwogfQogCiB2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtM3VpdihHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0x1aW50ICp2KQogewotICAgIFVOSU1QTEVNRU5URUQoKTsK
IH0KIAogdm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybTR1aXYoR0xpbnQgbG9jYXRpb24sIEdM
c2l6ZWkgY291bnQsIGNvbnN0IEdMdWludCAqdikKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CiB9
CiAKIHZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm1NYXRyaXgyZnYoR0xpbnQgbG9jYXRpb24s
CkBAIC0xMTYsNyArMTA3LDYgQEAgdm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybU1hdHJpeDJm
dihHTGludCBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgR0xmbG9hdCAqdmFsdWUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCiB2
b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtTWF0cml4M2Z2KEdMaW50IGxvY2F0aW9uLApAQCAt
MTI0LDcgKzExNCw2IEBAIHZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm1NYXRyaXgzZnYoR0xp
bnQgbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAogdm9pZCBQ
cm9ncmFtTlVMTDo6c2V0VW5pZm9ybU1hdHJpeDRmdihHTGludCBsb2NhdGlvbiwKQEAgLTEzMiw3
ICsxMjEsNiBAQCB2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtTWF0cml4NGZ2KEdMaW50IGxv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4g
dHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBH
TGZsb2F0ICp2YWx1ZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgUHJvZ3Jh
bU5VTEw6OnNldFVuaWZvcm1NYXRyaXgyeDNmdihHTGludCBsb2NhdGlvbiwKQEAgLTE0MCw3ICsx
MjgsNiBAQCB2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtTWF0cml4MngzZnYoR0xpbnQgbG9j
YXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFu
IHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGZsb2F0ICp2YWx1ZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgUHJv
Z3JhbU5VTEw6OnNldFVuaWZvcm1NYXRyaXgzeDJmdihHTGludCBsb2NhdGlvbiwKQEAgLTE0OCw3
ICsxMzUsNiBAQCB2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtTWF0cml4M3gyZnYoR0xpbnQg
bG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29s
ZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQg
UHJvZ3JhbU5VTEw6OnNldFVuaWZvcm1NYXRyaXgyeDRmdihHTGludCBsb2NhdGlvbiwKQEAgLTE1
Niw3ICsxNDIsNiBAQCB2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtTWF0cml4Mng0ZnYoR0xp
bnQgbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKIHZv
aWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm1NYXRyaXg0eDJmdihHTGludCBsb2NhdGlvbiwKQEAg
LTE2NCw3ICsxNDksNiBAQCB2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtTWF0cml4NHgyZnYo
R0xpbnQgbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAK
IHZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm1NYXRyaXgzeDRmdihHTGludCBsb2NhdGlvbiwK
QEAgLTE3Miw3ICsxNTYsNiBAQCB2b2lkIFByb2dyYW1OVUxMOjpzZXRVbmlmb3JtTWF0cml4M3g0
ZnYoR0xpbnQgbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIHRyYW5zcG9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1ZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CiB9
CiAKIHZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm1NYXRyaXg0eDNmdihHTGludCBsb2NhdGlv
biwKQEAgLTE4MCwyNSArMTYzLDI0IEBAIHZvaWQgUHJvZ3JhbU5VTEw6OnNldFVuaWZvcm1NYXRy
aXg0eDNmdihHTGludCBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKIH0KIAogdm9pZCBQcm9ncmFtTlVMTDo6c2V0VW5pZm9ybUJsb2NrQmluZGluZyhHTHVpbnQg
dW5pZm9ybUJsb2NrSW5kZXgsIEdMdWludCB1bmlmb3JtQmxvY2tCaW5kaW5nKQogewotICAgIFVO
SU1QTEVNRU5URUQoKTsKIH0KIAogYm9vbCBQcm9ncmFtTlVMTDo6Z2V0VW5pZm9ybUJsb2NrU2l6
ZShjb25zdCBzdGQ6OnN0cmluZyAmYmxvY2tOYW1lLCBzaXplX3QgKnNpemVPdXQpIGNvbnN0CiB7
Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBib29sKCk7CisgICAgLy8gVE9ETyhn
ZW9mZmxhbmcpOiBDb21wdXRlIHJlYXNvbmFibGUgc2l6ZXM/CisgICAgKnNpemVPdXQgPSAwOwor
ICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFByb2dyYW1OVUxMOjpnZXRVbmlmb3JtQmxvY2tN
ZW1iZXJJbmZvKGNvbnN0IHN0ZDo6c3RyaW5nICZtZW1iZXJVbmlmb3JtTmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2g6OkJsb2NrTWVtYmVySW5mbyAq
bWVtYmVySW5mb091dCkgY29uc3QKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJu
IGJvb2woKTsKKyAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IENvbXB1dGUgcmVhc29uYWJsZSB2YWx1
ZXM/CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQgUHJvZ3JhbU5VTEw6OnNldFBhdGhGcmFn
bWVudElucHV0R2VuKGNvbnN0IHN0ZDo6c3RyaW5nICZpbnB1dE5hbWUsCkBAIC0yMDYsNyArMTg4
LDYgQEAgdm9pZCBQcm9ncmFtTlVMTDo6c2V0UGF0aEZyYWdtZW50SW5wdXRHZW4oY29uc3Qgc3Rk
OjpzdHJpbmcgJmlucHV0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGNvbXBvbmVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGZsb2F0ICpjb2VmZnMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgp
OwogfQogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1Byb2dyYW1OVUxMLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Qcm9ncmFtTlVMTC5o
CmluZGV4IDU3NmE1MmMxODM1Li44OGMwNTk4ZWMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUHJvZ3JhbU5VTEwuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Qcm9n
cmFtTlVMTC5oCkBAIC0yMSwxMSArMjEsMTYgQEAgY2xhc3MgUHJvZ3JhbU5VTEwgOiBwdWJsaWMg
UHJvZ3JhbUltcGwKICAgICBQcm9ncmFtTlVMTChjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZzdGF0
ZSk7CiAgICAgflByb2dyYW1OVUxMKCkgb3ZlcnJpZGU7CiAKLSAgICBMaW5rUmVzdWx0IGxvYWQo
Z2w6OkluZm9Mb2cgJmluZm9Mb2csIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtKSBvdmVy
cmlkZTsKKyAgICBMaW5rUmVzdWx0IGxvYWQoY29uc3QgQ29udGV4dEltcGwgKmNvbnRleHRJbXBs
LAorICAgICAgICAgICAgICAgICAgICBnbDo6SW5mb0xvZyAmaW5mb0xvZywKKyAgICAgICAgICAg
ICAgICAgICAgZ2w6OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0pIG92ZXJyaWRlOwogICAgIGds
OjpFcnJvciBzYXZlKGdsOjpCaW5hcnlPdXRwdXRTdHJlYW0gKnN0cmVhbSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRCaW5hcnlSZXRyaWV2YWJsZUhpbnQoYm9vbCByZXRyaWV2YWJsZSkgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRTZXBhcmFibGUoYm9vbCBzZXBhcmFibGUpIG92ZXJyaWRlOwogCi0g
ICAgTGlua1Jlc3VsdCBsaW5rKGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEsIGdsOjpJbmZv
TG9nICZpbmZvTG9nKSBvdmVycmlkZTsKKyAgICBMaW5rUmVzdWx0IGxpbmsoQ29udGV4dEltcGwg
KmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VmFyeWluZ1BhY2tp
bmcgJnBhY2tpbmcsCisgICAgICAgICAgICAgICAgICAgIGdsOjpJbmZvTG9nICZpbmZvTG9nKSBv
dmVycmlkZTsKICAgICBHTGJvb2xlYW4gdmFsaWRhdGUoY29uc3QgZ2w6OkNhcHMgJmNhcHMsIGds
OjpJbmZvTG9nICppbmZvTG9nKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0VW5pZm9ybTFmdihH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbnVsbC9RdWVyeU5VTEwuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL251bGwvUXVlcnlOVUxMLmNwcAppbmRleCA2Mjc2YTBmZjE2NS4uODg4ODAy
OGM2YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9udWxsL1F1ZXJ5TlVMTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUXVlcnlOVUxMLmNwcApAQCAtMjQsNTAgKzI0LDQ3
IEBAIFF1ZXJ5TlVMTDo6flF1ZXJ5TlVMTCgpCiAKIGdsOjpFcnJvciBRdWVyeU5VTEw6OmJlZ2lu
KCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJv
ciBRdWVyeU5VTEw6OmVuZCgpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJldHVybiBnbDo6Tm9FcnJvcigp
OwogfQogCiBnbDo6RXJyb3IgUXVlcnlOVUxMOjpxdWVyeUNvdW50ZXIoKQogewotICAgIFVOSU1Q
TEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFF1ZXJ5TlVMTDo6Z2V0
UmVzdWx0KEdMaW50ICpwYXJhbXMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICpwYXJhbXMgPSAwOworICAg
IHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUXVlcnlOVUxMOjpnZXRSZXN1
bHQoR0x1aW50ICpwYXJhbXMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBn
bDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICpwYXJhbXMgPSAwOworICAgIHJl
dHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUXVlcnlOVUxMOjpnZXRSZXN1bHQo
R0xpbnQ2NCAqcGFyYW1zKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAqcGFyYW1zID0gMDsKKyAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFF1ZXJ5TlVMTDo6Z2V0UmVzdWx0KEdM
dWludDY0ICpwYXJhbXMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICpwYXJhbXMgPSAwOworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUXVlcnlOVUxMOjppc1Jlc3VsdEF2YWls
YWJsZShib29sICphdmFpbGFibGUpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICphdmFpbGFibGUgPSB0cnVl
OworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9u
dWxsL1JlbmRlcmJ1ZmZlck5VTEwuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkFOR0xFL3JlbmRlcmVyL251bGwvUmVuZGVyYnVmZmVyTlVMTC5jcHAKaW5kZXggNTBmNTRhNjIw
MzcuLjIyYjkwZTE2ZGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvbnVsbC9SZW5kZXJidWZmZXJOVUxMLmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9SZW5kZXJidWZmZXJO
VUxMLmNwcApAQCAtMjQsOCArMjQsNyBAQCBSZW5kZXJidWZmZXJOVUxMOjp+UmVuZGVyYnVmZmVy
TlVMTCgpCiAKIGdsOjpFcnJvciBSZW5kZXJidWZmZXJOVUxMOjpzZXRTdG9yYWdlKEdMZW51bSBp
bnRlcm5hbGZvcm1hdCwgc2l6ZV90IHdpZHRoLCBzaXplX3QgaGVpZ2h0KQogewotICAgIFVOSU1Q
TEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
KyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIFJlbmRlcmJ1ZmZlck5V
TEw6OnNldFN0b3JhZ2VNdWx0aXNhbXBsZShzaXplX3Qgc2FtcGxlcywKQEAgLTMzLDE0ICszMiwx
MiBAQCBnbDo6RXJyb3IgUmVuZGVyYnVmZmVyTlVMTDo6c2V0U3RvcmFnZU11bHRpc2FtcGxlKHNp
emVfdCBzYW1wbGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3Qgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwot
ICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJldHVybiBn
bDo6Tm9FcnJvcigpOwogfQogCiBnbDo6RXJyb3IgUmVuZGVyYnVmZmVyTlVMTDo6c2V0U3RvcmFn
ZUVHTEltYWdlVGFyZ2V0KGVnbDo6SW1hZ2UgKmltYWdlKQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TaGFkZXJO
VUxMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9u
dWxsL1NoYWRlck5VTEwuY3BwCmluZGV4IDE2OGY0YmRjYWE2Li5lN2Q4MzgzM2FlYiAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwv
U2hhZGVyTlVMTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL251bGwvU2hhZGVyTlVMTC5jcHAKQEAgLTI1LDIwICsyNSwxOCBAQCBTaGFkZXJO
VUxMOjp+U2hhZGVyTlVMTCgpCiBTaENvbXBpbGVPcHRpb25zIFNoYWRlck5VTEw6OnByZXBhcmVT
b3VyY2VBbmRSZXR1cm5PcHRpb25zKHN0ZDo6c3RyaW5nc3RyZWFtICpzb3VyY2VTdHJlYW0sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nICpzb3VyY2VQYXRoKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICBy
ZXR1cm4gU2hDb21waWxlT3B0aW9ucygpOworICAgICpzb3VyY2VTdHJlYW0gPDwgbURhdGEuZ2V0
U291cmNlKCk7CisgICAgcmV0dXJuIDA7CiB9CiAKIGJvb2wgU2hhZGVyTlVMTDo6cG9zdFRyYW5z
bGF0ZUNvbXBpbGUoZ2w6OkNvbXBpbGVyICpjb21waWxlciwgc3RkOjpzdHJpbmcgKmluZm9Mb2cp
CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBib29sKCk7CisgICAgcmV0dXJu
IHRydWU7CiB9CiAKIHN0ZDo6c3RyaW5nIFNoYWRlck5VTEw6OmdldERlYnVnSW5mbygpIGNvbnN0
CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBzdGQ6OnN0cmluZygpOworICAg
IHJldHVybiAiIjsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TaGFkZXJOVUxMLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TaGFk
ZXJOVUxMLmgKaW5kZXggZjdkODk3MTBiZjMuLmQyOWI0Y2ZiNzZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TaGFkZXJOVUxM
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251
bGwvU2hhZGVyTlVMTC5oCkBAIC0yMSw3ICsyMSw3IEBAIGNsYXNzIFNoYWRlck5VTEwgOiBwdWJs
aWMgU2hhZGVySW1wbAogICAgIFNoYWRlck5VTEwoY29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRh
KTsKICAgICB+U2hhZGVyTlVMTCgpIG92ZXJyaWRlOwogCi0gICAgLy8gUmV0dXJucyBhZGRpdGlv
bmFsIFNoQ29tcGlsZSBvcHRpb25zLgorICAgIC8vIFJldHVybnMgYWRkaXRpb25hbCBzaDo6Q29t
cGlsZSBvcHRpb25zLgogICAgIFNoQ29tcGlsZU9wdGlvbnMgcHJlcGFyZVNvdXJjZUFuZFJldHVy
bk9wdGlvbnMoc3RkOjpzdHJpbmdzdHJlYW0gKnNvdXJjZVN0cmVhbSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICpzb3VyY2VQ
YXRoKSBvdmVycmlkZTsKICAgICAvLyBSZXR1cm5zIHN1Y2Nlc3MgZm9yIGNvbXBpbGluZyBvbiB0
aGUgZHJpdmVyLiBSZXR1cm5zIHN1Y2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TdXJmYWNlTlVMTC5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TdXJmYWNlTlVM
TC5jcHAKaW5kZXggODFkNzYzNzgzMTguLjg2ODI2OWI5OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TdXJmYWNlTlVMTC5j
cHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251
bGwvU3VyZmFjZU5VTEwuY3BwCkBAIC0xMSw2ICsxMSw4IEBACiAKICNpbmNsdWRlICJjb21tb24v
ZGVidWcuaCIKIAorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL251bGwvRnJhbWVidWZmZXJO
VUxMLmgiCisKIG5hbWVzcGFjZSByeAogewogCkBAIC0yMiw4MiArMjQsNzIgQEAgU3VyZmFjZU5V
TEw6On5TdXJmYWNlTlVMTCgpCiB7CiB9CiAKLWVnbDo6RXJyb3IgU3VyZmFjZU5VTEw6OmluaXRp
YWxpemUoKQorZWdsOjpFcnJvciBTdXJmYWNlTlVMTDo6aW5pdGlhbGl6ZShjb25zdCBEaXNwbGF5
SW1wbCAqZGlzcGxheUltcGwpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBl
Z2w6OkVycm9yKEVHTF9CQURfQUNDRVNTKTsKKyAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7CiB9
CiAKIEZyYW1lYnVmZmVySW1wbCAqU3VyZmFjZU5VTEw6OmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZl
cihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpCiB7Ci0gICAgVU5JTVBMRU1FTlRF
RCgpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxGcmFtZWJ1ZmZlckltcGwgKj4oMCk7CisgICAg
cmV0dXJuIG5ldyBGcmFtZWJ1ZmZlck5VTEwoc3RhdGUpOwogfQogCi1lZ2w6OkVycm9yIFN1cmZh
Y2VOVUxMOjpzd2FwKCkKK2VnbDo6RXJyb3IgU3VyZmFjZU5VTEw6OnN3YXAoY29uc3QgRGlzcGxh
eUltcGwgKmRpc3BsYXlJbXBsKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4g
ZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7CisgICAgcmV0dXJuIGVnbDo6Tm9FcnJvcigpOwog
fQogCiBlZ2w6OkVycm9yIFN1cmZhY2VOVUxMOjpwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xp
bnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKLSAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7CisgICAgcmV0dXJuIGVn
bDo6Tm9FcnJvcigpOwogfQogCiBlZ2w6OkVycm9yIFN1cmZhY2VOVUxMOjpxdWVyeVN1cmZhY2VQ
b2ludGVyQU5HTEUoRUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKQogewotICAgIFVOSU1Q
TEVNRU5URUQoKTsKLSAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7CisgICAg
VU5SRUFDSEFCTEUoKTsKKyAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7CiB9CiAKIGVnbDo6RXJy
b3IgU3VyZmFjZU5VTEw6OmJpbmRUZXhJbWFnZShnbDo6VGV4dHVyZSAqdGV4dHVyZSwgRUdMaW50
IGJ1ZmZlcikKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGVnbDo6RXJyb3Io
RUdMX0JBRF9BQ0NFU1MpOworICAgIHJldHVybiBlZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZWdsOjpF
cnJvciBTdXJmYWNlTlVMTDo6cmVsZWFzZVRleEltYWdlKEVHTGludCBidWZmZXIpCiB7CisgICAg
cmV0dXJuIGVnbDo6Tm9FcnJvcigpOworfQorCitlZ2w6OkVycm9yIFN1cmZhY2VOVUxMOjpnZXRT
eW5jVmFsdWVzKEVHTHVpbnQ2NEtIUiAqdXN0LCBFR0x1aW50NjRLSFIgKm1zYywgRUdMdWludDY0
S0hSICpzYmMpCit7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiBlZ2w6OkVycm9y
KEVHTF9CQURfQUNDRVNTKTsKIH0KIAogdm9pZCBTdXJmYWNlTlVMTDo6c2V0U3dhcEludGVydmFs
KEVHTGludCBpbnRlcnZhbCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKIEVHTGludCBT
dXJmYWNlTlVMTDo6Z2V0V2lkdGgoKSBjb25zdAogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAg
ICByZXR1cm4gRUdMaW50KCk7CisgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBSZWFkIGZyb20gYW4g
YWN0dWFsIHdpbmRvdz8KKyAgICByZXR1cm4gMTAwOwogfQogCiBFR0xpbnQgU3VyZmFjZU5VTEw6
OmdldEhlaWdodCgpIGNvbnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBF
R0xpbnQoKTsKKyAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IFJlYWQgZnJvbSBhbiBhY3R1YWwgd2lu
ZG93PworICAgIHJldHVybiAxMDA7CiB9CiAKIEVHTGludCBTdXJmYWNlTlVMTDo6aXNQb3N0U3Vi
QnVmZmVyU3VwcG9ydGVkKCkgY29uc3QKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0
dXJuIEVHTGludCgpOworICAgIHJldHVybiBFR0xfVFJVRTsKIH0KIAogRUdMaW50IFN1cmZhY2VO
VUxMOjpnZXRTd2FwQmVoYXZpb3IoKSBjb25zdAogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAg
ICByZXR1cm4gRUdMaW50KCk7Ci19Ci0KLWdsOjpFcnJvciBTdXJmYWNlTlVMTDo6Z2V0QXR0YWNo
bWVudFJlbmRlclRhcmdldChjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQg
JnRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkKLXsKLSAgICBVTklN
UExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CisgICAgcmV0dXJuIEVHTF9CVUZGRVJfUFJFU0VSVkVEOwogfQogCiB9ICAvLyBuYW1lc3BhY2Ug
cngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci9udWxsL1N1cmZhY2VOVUxMLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbnVsbC9TdXJmYWNlTlVMTC5oCmluZGV4IDU5N2YxYzIxYzk0Li40YjA4
NGEzMmY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL251bGwvU3VyZmFjZU5VTEwuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TdXJmYWNlTlVMTC5oCkBAIC0yMSwxMyArMjEs
MTQgQEAgY2xhc3MgU3VyZmFjZU5VTEwgOiBwdWJsaWMgU3VyZmFjZUltcGwKICAgICBTdXJmYWNl
TlVMTChjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3VyZmFjZVN0YXRlKTsKICAgICB+U3VyZmFj
ZU5VTEwoKSBvdmVycmlkZTsKIAotICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZSgpIG92ZXJyaWRl
OworICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUlt
cGwpIG92ZXJyaWRlOwogICAgIEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRGVmYXVsdEZyYW1lYnVm
ZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7Ci0gICAgZWds
OjpFcnJvciBzd2FwKCkgb3ZlcnJpZGU7CisgICAgZWdsOjpFcnJvciBzd2FwKGNvbnN0IERpc3Bs
YXlJbXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpFcnJvciBwb3N0U3ViQnVm
ZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSBvdmVy
cmlkZTsKICAgICBlZ2w6OkVycm9yIHF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0
cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgYmluZFRleElt
YWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKICAgICBl
Z2w6OkVycm9yIHJlbGVhc2VUZXhJbWFnZShFR0xpbnQgYnVmZmVyKSBvdmVycmlkZTsKKyAgICBl
Z2w6OkVycm9yIGdldFN5bmNWYWx1ZXMoRUdMdWludDY0S0hSICp1c3QsIEVHTHVpbnQ2NEtIUiAq
bXNjLCBFR0x1aW50NjRLSFIgKnNiYykgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTd2FwSW50ZXJ2
YWwoRUdMaW50IGludGVydmFsKSBvdmVycmlkZTsKIAogICAgIC8vIHdpZHRoIGFuZCBoZWlnaHQg
Y2FuIGNoYW5nZSB3aXRoIGNsaWVudCB3aW5kb3cgcmVzaXppbmcKQEAgLTM2LDkgKzM3LDYgQEAg
Y2xhc3MgU3VyZmFjZU5VTEwgOiBwdWJsaWMgU3VyZmFjZUltcGwKIAogICAgIEVHTGludCBpc1Bv
c3RTdWJCdWZmZXJTdXBwb3J0ZWQoKSBjb25zdCBvdmVycmlkZTsKICAgICBFR0xpbnQgZ2V0U3dh
cEJlaGF2aW9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBnbDo6RXJyb3IgZ2V0QXR0YWNobWVu
dFJlbmRlclRhcmdldChjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRh
cmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkgb3ZlcnJpZGU7CiB9OwogCiB9ICAvLyBu
YW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9udWxsL1RleHR1cmVOVUxMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1RleHR1cmVOVUxMLmNwcAppbmRleCAyYzk1
MmU1MjgyOC4uMTZlZjRjY2MzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1RleHR1cmVOVUxMLmNwcAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9UZXh0dXJlTlVMTC5j
cHAKQEAgLTIyLDcgKzIyLDggQEAgVGV4dHVyZU5VTEw6On5UZXh0dXJlTlVMTCgpCiB7CiB9CiAK
LWdsOjpFcnJvciBUZXh0dXJlTlVMTDo6c2V0SW1hZ2UoR0xlbnVtIHRhcmdldCwKK2dsOjpFcnJv
ciBUZXh0dXJlTlVMTDo6c2V0SW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCkBAIC0zMSwxMSArMzIsMTMgQEAgZ2w6OkVy
cm9yIFRleHR1cmVOVUxMOjpzZXRJbWFnZShHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpCiB7Ci0g
ICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOworICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogUmVhZCBhbGwgaW5jb21pbmcgcGl4ZWwg
ZGF0YSAobWF5YmUgaGFzaCBpdD8pIHRvIG1ha2Ugc3VyZSB3ZSBkb24ndCByZWFkIG91dAorICAg
IC8vIG9mIGJvdW5kcyBkdWUgdG8gdmFsaWRhdGlvbiBidWdzLgorICAgIHJldHVybiBnbDo6Tm9F
cnJvcigpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZU5VTEw6OnNldFN1YkltYWdlKEdMZW51bSB0
YXJnZXQsCitnbDo6RXJyb3IgVGV4dHVyZU5VTEw6OnNldFN1YkltYWdlKENvbnRleHRJbXBsICpj
b250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRh
cmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZhcmVhLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LApAQCAtNDMs
MTEgKzQ2LDExIEBAIGdsOjpFcnJvciBUZXh0dXJlTlVMTDo6c2V0U3ViSW1hZ2UoR0xlbnVtIHRh
cmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVs
VW5wYWNrU3RhdGUgJnVucGFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgdWludDhfdCAqcGl4ZWxzKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVOVUxMOjpzZXRDb21wcmVzc2VkSW1hZ2UoR0xl
bnVtIHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlTlVMTDo6c2V0Q29tcHJlc3NlZEltYWdlKENv
bnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKQEAgLTU1LDExICs1
OCwxMSBAQCBnbDo6RXJyb3IgVGV4dHVyZU5VTEw6OnNldENvbXByZXNzZWRJbWFnZShHTGVudW0g
dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGltYWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHVpbnQ4X3QgKnBpeGVscykKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlTlVMTDo6c2V0Q29tcHJlc3NlZFN1YkltYWdlKEdM
ZW51bSB0YXJnZXQsCitnbDo6RXJyb3IgVGV4dHVyZU5VTEw6OnNldENvbXByZXNzZWRTdWJJbWFn
ZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCkBAIC02Nyw3
NyArNzAsNzkgQEAgZ2w6OkVycm9yIFRleHR1cmVOVUxMOjpzZXRDb21wcmVzc2VkU3ViSW1hZ2Uo
R0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBpbWFnZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB1aW50OF90ICpwaXhlbHMpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgp
OwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIHJldHVy
biBnbDo6Tm9FcnJvcigpOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZU5VTEw6OmNvcHlJbWFnZShH
TGVudW0gdGFyZ2V0LAorZ2w6OkVycm9yIFRleHR1cmVOVUxMOjpjb3B5SW1hZ2UoQ29udGV4dElt
cGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNv
dXJjZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RnJh
bWVidWZmZXIgKnNvdXJjZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGds
OjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7
CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlTlVMTDo6Y29weVN1YkltYWdlKEdMZW51bSB0YXJnZXQs
CitnbDo6RXJyb3IgVGV4dHVyZU5VTEw6OmNvcHlTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4
dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9m
ZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpSZWN0
YW5nbGUgJnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0g
ICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgcmV0dXJuIGds
OjpOb0Vycm9yKCk7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlTlVMTDo6c2V0U3RvcmFnZShHTGVu
dW0gdGFyZ2V0LAorZ2w6OkVycm9yIFRleHR1cmVOVUxMOjpzZXRTdG9yYWdlKENvbnRleHRJbXBs
ICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbHMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZz
aXplKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVy
cm9yIFRleHR1cmVOVUxMOjpzZXRFR0xJbWFnZVRhcmdldChHTGVudW0gdGFyZ2V0LCBlZ2w6Oklt
YWdlICppbWFnZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAK
IGdsOjpFcnJvciBUZXh0dXJlTlVMTDo6c2V0SW1hZ2VFeHRlcm5hbChHTGVudW0gdGFyZ2V0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3RyZWFtICpzdHJl
YW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpT
dHJlYW06OkdMVGV4dHVyZURlc2NyaXB0aW9uICZkZXNjKQogewotICAgIFVOSU1QTEVNRU5URUQo
KTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1
cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVOVUxMOjpnZW5lcmF0ZU1p
cG1hcCgpCitnbDo6RXJyb3IgVGV4dHVyZU5VTEw6OmdlbmVyYXRlTWlwbWFwKENvbnRleHRJbXBs
ICpjb250ZXh0SW1wbCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9
CiAKIHZvaWQgVGV4dHVyZU5VTEw6OnNldEJhc2VMZXZlbChHTHVpbnQgYmFzZUxldmVsKQogewot
ICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAogdm9pZCBUZXh0dXJlTlVMTDo6YmluZFRleEltYWdl
KGVnbDo6U3VyZmFjZSAqc3VyZmFjZSkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKIHZv
aWQgVGV4dHVyZU5VTEw6OnJlbGVhc2VUZXhJbWFnZSgpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgp
OwogfQogCiB2b2lkIFRleHR1cmVOVUxMOjpzeW5jU3RhdGUoY29uc3QgZ2w6OlRleHR1cmU6OkRp
cnR5Qml0cyAmZGlydHlCaXRzKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKK30KKworZ2w6OkVy
cm9yIFRleHR1cmVOVUxMOjpzZXRTdG9yYWdlTXVsdGlzYW1wbGUoQ29udGV4dEltcGwgKmNvbnRl
eHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZml4ZWRTYW1wbGVMb2Nh
dGlvbnMpCit7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIH0gIC8vIG5hbWVzcGFj
ZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL251bGwvVGV4dHVyZU5VTEwuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9udWxsL1RleHR1cmVOVUxMLmgKaW5kZXggMTBjMmQzNTAzYTkuLmM1
MjkwOTBmYjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvbnVsbC9UZXh0dXJlTlVMTC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9udWxsL1RleHR1cmVOVUxMLmgKQEAgLTIxLDcgKzIx
LDggQEAgY2xhc3MgVGV4dHVyZU5VTEwgOiBwdWJsaWMgVGV4dHVyZUltcGwKICAgICBUZXh0dXJl
TlVMTChjb25zdCBnbDo6VGV4dHVyZVN0YXRlICZzdGF0ZSk7CiAgICAgflRleHR1cmVOVUxMKCkg
b3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJyb3Igc2V0SW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICBn
bDo6RXJyb3Igc2V0SW1hZ2UoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
bGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCkBAIC0yOSw3ICsz
MCw4IEBAIGNsYXNzIFRleHR1cmVOVUxMIDogcHVibGljIFRleHR1cmVJbXBsCiAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6UGl4ZWxVbnBhY2tTdGF0ZSAmdW5wYWNrLAogICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB1aW50OF90ICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBzZXRTdWJJbWFnZShH
TGVudW0gdGFyZ2V0LAorICAgIGdsOjpFcnJvciBzZXRTdWJJbWFnZShDb250ZXh0SW1wbCAqY29u
dGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIGZvcm1hdCwKQEAgLTM3LDE0ICszOSwxNiBAQCBjbGFzcyBUZXh0dXJlTlVMTCA6IHB1Ymxp
YyBUZXh0dXJlSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxV
bnBhY2tTdGF0ZSAmdW5wYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICpwaXhlbHMpIG92ZXJyaWRlOwogCi0gICAgZ2w6OkVycm9yIHNldENvbXByZXNzZWRJbWFn
ZShHTGVudW0gdGFyZ2V0LAorICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkSW1hZ2UoQ29udGV4
dEltcGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xl
bnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZl
bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1h
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZz
aXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5w
YWNrU3RhdGUgJnVucGFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBpbWFnZVNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50
OF90ICpwaXhlbHMpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkU3ViSW1h
Z2UoR0xlbnVtIHRhcmdldCwKKyAgICBnbDo6RXJyb3Igc2V0Q29tcHJlc3NlZFN1YkltYWdlKENv
bnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
bDo6Qm94ICZhcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGZvcm1hdCwKQEAgLTUyLDE4ICs1NiwyMSBAQCBjbGFzcyBUZXh0dXJlTlVMTCA6IHB1YmxpYyBU
ZXh0dXJlSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGlt
YWdlU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4
X3QgKnBpeGVscykgb3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJyb3IgY29weUltYWdlKEdMZW51bSB0
YXJnZXQsCisgICAgZ2w6OkVycm9yIGNvcHlJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGws
CisgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBp
bnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1
ZmZlciAqc291cmNlKSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgY29weVN1YkltYWdlKEdMZW51
bSB0YXJnZXQsCisgICAgZ2w6OkVycm9yIGNvcHlTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4
dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgJnNvdXJjZUFyZWEsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVidWZmZXIgKnNvdXJjZSkgb3ZlcnJpZGU7CiAKLSAg
ICBnbDo6RXJyb3Igc2V0U3RvcmFnZShHTGVudW0gdGFyZ2V0LAorICAgIGdsOjpFcnJvciBzZXRT
dG9yYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbHMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZzaXplKSBvdmVycmlkZTsKQEAg
LTc0LDcgKzgxLDcgQEAgY2xhc3MgVGV4dHVyZU5VTEwgOiBwdWJsaWMgVGV4dHVyZUltcGwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZ2w6OlN0cmVhbSAqc3RyZWFtLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6U3RyZWFtOjpHTFRleHR1cmVEZXNj
cmlwdGlvbiAmZGVzYykgb3ZlcnJpZGU7CiAKLSAgICBnbDo6RXJyb3IgZ2VuZXJhdGVNaXBtYXAo
KSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgZ2VuZXJhdGVNaXBtYXAoQ29udGV4dEltcGwgKmNv
bnRleHRJbXBsKSBvdmVycmlkZTsKIAogICAgIHZvaWQgc2V0QmFzZUxldmVsKEdMdWludCBiYXNl
TGV2ZWwpIG92ZXJyaWRlOwogCkBAIC04Miw2ICs4OSwxMyBAQCBjbGFzcyBUZXh0dXJlTlVMTCA6
IHB1YmxpYyBUZXh0dXJlSW1wbAogICAgIHZvaWQgcmVsZWFzZVRleEltYWdlKCkgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIHN5bmNTdGF0ZShjb25zdCBnbDo6VGV4dHVyZTo6RGlydHlCaXRzICZkaXJ0
eUJpdHMpIG92ZXJyaWRlOworCisgICAgZ2w6OkVycm9yIHNldFN0b3JhZ2VNdWx0aXNhbXBsZShD
b250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgaW50ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiBmaXhlZFNhbXBsZUxvY2F0aW9ucykgb3ZlcnJpZGU7CiB9OwogCiB9ICAv
LyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci9udWxsL1RyYW5zZm9ybUZlZWRiYWNrTlVMTC5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9UcmFuc2Zvcm1GZWVk
YmFja05VTEwuY3BwCmluZGV4IGUxNDMzZmIyZDA1Li5iMjZmMjlhZDE3NiAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVHJhbnNm
b3JtRmVlZGJhY2tOVUxMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbnVsbC9UcmFuc2Zvcm1GZWVkYmFja05VTEwuY3BwCkBAIC0yNSwzMyAr
MjUsMjcgQEAgVHJhbnNmb3JtRmVlZGJhY2tOVUxMOjp+VHJhbnNmb3JtRmVlZGJhY2tOVUxMKCkK
IAogdm9pZCBUcmFuc2Zvcm1GZWVkYmFja05VTEw6OmJlZ2luKEdMZW51bSBwcmltaXRpdmVNb2Rl
KQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAogdm9pZCBUcmFuc2Zvcm1GZWVkYmFja05V
TEw6OmVuZCgpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwogfQogCiB2b2lkIFRyYW5zZm9ybUZl
ZWRiYWNrTlVMTDo6cGF1c2UoKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAogdm9pZCBU
cmFuc2Zvcm1GZWVkYmFja05VTEw6OnJlc3VtZSgpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwog
fQogCiB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrTlVMTDo6YmluZEdlbmVyaWNCdWZmZXIoY29uc3Qg
QmluZGluZ1BvaW50ZXI8Z2w6OkJ1ZmZlcj4gJmJpbmRpbmcpCiB7Ci0gICAgVU5JTVBMRU1FTlRF
RCgpOwogfQogCiB2b2lkIFRyYW5zZm9ybUZlZWRiYWNrTlVMTDo6YmluZEluZGV4ZWRCdWZmZXIo
c2l6ZV90IGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPGdsOjpCdWZmZXI+ICZiaW5kaW5nKQogewot
ICAgIFVOSU1QTEVNRU5URUQoKTsKIH0KIAogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvcmVuZGVyZXJf
dXRpbHMuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3JlbmRlcmVyX3V0aWxzLmNwcAppbmRleCA2ZTc2MDM4YjU1NC4uY2MwNGRiYjE0MzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9yZW5k
ZXJlcl91dGlscy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3JlbmRlcmVyX3V0aWxzLmNwcApAQCAtMjUyLDEwICsyNTIsNyBAQCB2b2lkIFBh
Y2tQaXhlbHMoY29uc3QgUGFja1BpeGVsc1BhcmFtcyAmcGFyYW1zLAogCiBDb2xvcldyaXRlRnVu
Y3Rpb24gR2V0Q29sb3JXcml0ZUZ1bmN0aW9uKGNvbnN0IGdsOjpGb3JtYXRUeXBlICZmb3JtYXRU
eXBlKQogewotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9ycyIKICAgICBzdGF0aWMgY29u
c3QgRm9ybWF0V3JpdGVGdW5jdGlvbk1hcCBmb3JtYXRUeXBlTWFwID0gQnVpbGRGb3JtYXRXcml0
ZUZ1bmN0aW9uTWFwKCk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAgICAgYXV0byBp
dGVyID0gZm9ybWF0VHlwZU1hcC5maW5kKGZvcm1hdFR5cGUpOwogICAgIEFTU0VSVChpdGVyICE9
IGZvcm1hdFR5cGVNYXAuZW5kKCkpOwogICAgIGlmIChpdGVyICE9IGZvcm1hdFR5cGVNYXAuZW5k
KCkpCkBAIC0yNzEsOCArMjY4LDI1IEBAIENvbG9yV3JpdGVGdW5jdGlvbiBHZXRDb2xvcldyaXRl
RnVuY3Rpb24oY29uc3QgZ2w6OkZvcm1hdFR5cGUgJmZvcm1hdFR5cGUpCiBDb2xvckNvcHlGdW5j
dGlvbiBHZXRGYXN0Q29weUZ1bmN0aW9uKGNvbnN0IEZhc3RDb3B5RnVuY3Rpb25NYXAgJmZhc3RD
b3B5RnVuY3Rpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBnbDo6Rm9ybWF0VHlwZSAmZm9ybWF0VHlwZSkKIHsKLSAgICBhdXRvIGl0ZXIgPSBmYXN0Q29w
eUZ1bmN0aW9ucy5maW5kKGZvcm1hdFR5cGUpOwotICAgIHJldHVybiAoaXRlciAhPSBmYXN0Q29w
eUZ1bmN0aW9ucy5lbmQoKSkgPyBpdGVyLT5zZWNvbmQgOiBudWxscHRyOworICAgIHJldHVybiBm
YXN0Q29weUZ1bmN0aW9ucy5nZXQoZm9ybWF0VHlwZSk7Cit9CisKK2Jvb2wgRmFzdENvcHlGdW5j
dGlvbk1hcDo6aGFzKGNvbnN0IGdsOjpGb3JtYXRUeXBlICZmb3JtYXRUeXBlKSBjb25zdAorewor
ICAgIHJldHVybiAoZ2V0KGZvcm1hdFR5cGUpICE9IG51bGxwdHIpOworfQorCitDb2xvckNvcHlG
dW5jdGlvbiBGYXN0Q29weUZ1bmN0aW9uTWFwOjpnZXQoY29uc3QgZ2w6OkZvcm1hdFR5cGUgJmZv
cm1hdFR5cGUpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1T
aXplOyArK2luZGV4KQorICAgIHsKKyAgICAgICAgaWYgKG1EYXRhW2luZGV4XS5mb3JtYXQgPT0g
Zm9ybWF0VHlwZS5mb3JtYXQgJiYgbURhdGFbaW5kZXhdLnR5cGUgPT0gZm9ybWF0VHlwZS50eXBl
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbURhdGFbaW5kZXhdLmZ1bmM7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAgLy8gbmFtZXNwYWNl
IHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvcmVuZGVyZXJfdXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9yZW5kZXJlcl91dGlscy5oCmluZGV4IGUwODcwMzAwMDk3Li44MDNjOGMy
OTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL3JlbmRlcmVyX3V0aWxzLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3JlbmRlcmVyX3V0aWxzLmgKQEAgLTQ0LDcgKzQ0LDI3IEBAIHR5
cGVkZWYgdm9pZCAoKkNvbG9yUmVhZEZ1bmN0aW9uKShjb25zdCB1aW50OF90ICpzb3VyY2UsIHVp
bnQ4X3QgKmRlc3QpOwogdHlwZWRlZiB2b2lkICgqQ29sb3JXcml0ZUZ1bmN0aW9uKShjb25zdCB1
aW50OF90ICpzb3VyY2UsIHVpbnQ4X3QgKmRlc3QpOwogdHlwZWRlZiB2b2lkICgqQ29sb3JDb3B5
RnVuY3Rpb24pKGNvbnN0IHVpbnQ4X3QgKnNvdXJjZSwgdWludDhfdCAqZGVzdCk7CiAKLXR5cGVk
ZWYgc3RkOjptYXA8Z2w6OkZvcm1hdFR5cGUsIENvbG9yQ29weUZ1bmN0aW9uPiBGYXN0Q29weUZ1
bmN0aW9uTWFwOworY2xhc3MgRmFzdENvcHlGdW5jdGlvbk1hcAoreworICBwdWJsaWM6CisgICAg
c3RydWN0IEVudHJ5CisgICAgeworICAgICAgICBHTGVudW0gZm9ybWF0OworICAgICAgICBHTGVu
dW0gdHlwZTsKKyAgICAgICAgQ29sb3JDb3B5RnVuY3Rpb24gZnVuYzsKKyAgICB9OworCisgICAg
Y29uc3RleHByIEZhc3RDb3B5RnVuY3Rpb25NYXAoKSA6IEZhc3RDb3B5RnVuY3Rpb25NYXAobnVs
bHB0ciwgMCkge30KKworICAgIGNvbnN0ZXhwciBGYXN0Q29weUZ1bmN0aW9uTWFwKGNvbnN0IEVu
dHJ5ICpkYXRhLCBzaXplX3Qgc2l6ZSkgOiBtU2l6ZShzaXplKSwgbURhdGEoZGF0YSkge30KKwor
ICAgIGJvb2wgaGFzKGNvbnN0IGdsOjpGb3JtYXRUeXBlICZmb3JtYXRUeXBlKSBjb25zdDsKKyAg
ICBDb2xvckNvcHlGdW5jdGlvbiBnZXQoY29uc3QgZ2w6OkZvcm1hdFR5cGUgJmZvcm1hdFR5cGUp
IGNvbnN0OworCisgIHByaXZhdGU6CisgICAgc2l6ZV90IG1TaXplOworICAgIGNvbnN0IEVudHJ5
ICptRGF0YTsKK307CiAKIHN0cnVjdCBQYWNrUGl4ZWxzUGFyYW1zCiB7CkBAIC03NSw2ICs5NSwx
MyBAQCBDb2xvcldyaXRlRnVuY3Rpb24gR2V0Q29sb3JXcml0ZUZ1bmN0aW9uKGNvbnN0IGdsOjpG
b3JtYXRUeXBlICZmb3JtYXRUeXBlKTsKIENvbG9yQ29weUZ1bmN0aW9uIEdldEZhc3RDb3B5RnVu
Y3Rpb24oY29uc3QgRmFzdENvcHlGdW5jdGlvbk1hcCAmZmFzdENvcHlGdW5jdGlvbnMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpGb3JtYXRUeXBlICZm
b3JtYXRUeXBlKTsKIAordXNpbmcgSW5pdGlhbGl6ZVRleHR1cmVEYXRhRnVuY3Rpb24gPSB2b2lk
ICgqKShzaXplX3Qgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqb3V0cHV0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb3V0cHV0Um93UGl0Y2gsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvdXRwdXRE
ZXB0aFBpdGNoKTsKKwogdXNpbmcgTG9hZEltYWdlRnVuY3Rpb24gPSB2b2lkICgqKShzaXplX3Qg
d2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBkZXB0aCwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vQnVmZmVyVmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9CdWZmZXJWay5jcHAKaW5kZXggYmMxNmM4MmU5MjcuLmViNzZiODU3Njk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL0J1ZmZlclZrLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmNwcApAQCAtMTAsMTEgKzEwLDEzIEBA
CiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZrLmgiCiAKICNpbmNs
dWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
Q29udGV4dFZrLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlcmVy
VmsuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CiAKLUJ1ZmZlclZrOjpCdWZmZXJWaygpIDogQnVmZmVy
SW1wbCgpCitCdWZmZXJWazo6QnVmZmVyVmsoY29uc3QgZ2w6OkJ1ZmZlclN0YXRlICZzdGF0ZSkg
OiBCdWZmZXJJbXBsKHN0YXRlKSwgbVJlcXVpcmVkU2l6ZSgwKQogewogfQogCkBAIC0yMiwxOSAr
MjQsOTMgQEAgQnVmZmVyVms6On5CdWZmZXJWaygpCiB7CiB9CiAKLWdsOjpFcnJvciBCdWZmZXJW
azo6c2V0RGF0YShHTGVudW0gdGFyZ2V0LCBjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwg
R0xlbnVtIHVzYWdlKQordm9pZCBCdWZmZXJWazo6ZGVzdHJveShDb250ZXh0SW1wbCAqY29udGV4
dEltcGwpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOworICAgIFZrRGV2aWNlIGRldmljZSA9IEdldEFzPENvbnRleHRW
az4oY29udGV4dEltcGwpLT5nZXREZXZpY2UoKTsKKworICAgIG1CdWZmZXIuZGVzdHJveShkZXZp
Y2UpOwogfQogCi1nbDo6RXJyb3IgQnVmZmVyVms6OnNldFN1YkRhdGEoR0xlbnVtIHRhcmdldCwg
Y29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBvZmZzZXQpCitnbDo6RXJyb3Ig
QnVmZmVyVms6OnNldERhdGEoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB1c2FnZSkKIHsKLSAgICBVTklN
UExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CisgICAgQ29udGV4dFZrICpjb250ZXh0VmsgPSBHZXRBczxDb250ZXh0Vms+KGNvbnRleHQpOwor
ICAgIGF1dG8gZGV2aWNlICAgICAgICAgID0gY29udGV4dFZrLT5nZXREZXZpY2UoKTsKKworICAg
IC8vIFRPRE8oam1hZGlsbCk6IFByb3BlciB1c2FnZSBiaXQgaW1wbGVtZW50YXRpb24uIExpa2Vs
eSB3aWxsIGludm9sdmUgbXVsdGlwbGUgYmFja2luZyBidWZmZXJzCisgICAgLy8gbGlrZSBpbiBE
M0QxMS4KKyAgICBWa0J1ZmZlckNyZWF0ZUluZm8gY3JlYXRlSW5mbzsKKyAgICBjcmVhdGVJbmZv
LnNUeXBlICAgICAgICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX0JVRkZFUl9DUkVBVEVf
SU5GTzsKKyAgICBjcmVhdGVJbmZvLnBOZXh0ICAgICAgICAgICAgICAgICA9IG51bGxwdHI7Cisg
ICAgY3JlYXRlSW5mby5mbGFncyAgICAgICAgICAgICAgICAgPSAwOworICAgIGNyZWF0ZUluZm8u
c2l6ZSAgICAgICAgICAgICAgICAgID0gc2l6ZTsKKyAgICBjcmVhdGVJbmZvLnVzYWdlICAgICAg
ICAgICAgICAgICA9IFZLX0JVRkZFUl9VU0FHRV9WRVJURVhfQlVGRkVSX0JJVDsKKyAgICBjcmVh
dGVJbmZvLnNoYXJpbmdNb2RlICAgICAgICAgICA9IFZLX1NIQVJJTkdfTU9ERV9FWENMVVNJVkU7
CisgICAgY3JlYXRlSW5mby5xdWV1ZUZhbWlseUluZGV4Q291bnQgPSAwOworICAgIGNyZWF0ZUlu
Zm8ucFF1ZXVlRmFtaWx5SW5kaWNlcyAgID0gbnVsbHB0cjsKKworICAgIHZrOjpCdWZmZXIgbmV3
QnVmZmVyOworICAgIEFOR0xFX1RSWShuZXdCdWZmZXIuaW5pdChkZXZpY2UsIGNyZWF0ZUluZm8p
KTsKKworICAgIC8vIEZpbmQgYSBjb21wYXRpYmxlIG1lbW9yeSBwb29sIGluZGV4LiBJZiB0aGUg
aW5kZXggZG9lc24ndCBjaGFuZ2UsIHdlIGNvdWxkIGNhY2hlIGl0LgorICAgIC8vIE5vdCBmaW5k
aW5nIGEgdmFsaWQgbWVtb3J5IHBvb2wgbWVhbnMgYW4gb3V0LW9mLXNwZWMgZHJpdmVyLCBvciBp
bnRlcm5hbCBlcnJvci4KKyAgICAvLyBUT0RPKGptYWRpbGwpOiBNb3JlIGVmZmljaWVudCBtZW1v
cnkgYWxsb2NhdGlvbi4KKyAgICBWa01lbW9yeVJlcXVpcmVtZW50cyBtZW1vcnlSZXF1aXJlbWVu
dHM7CisgICAgdmtHZXRCdWZmZXJNZW1vcnlSZXF1aXJlbWVudHMoZGV2aWNlLCBuZXdCdWZmZXIu
Z2V0SGFuZGxlKCksICZtZW1vcnlSZXF1aXJlbWVudHMpOworCisgICAgLy8gVGhlIHJlcXVpcmVt
ZW50cyBzaXplIGlzIG5vdCBhbHdheXMgZXF1YWwgdG8gdGhlIHNwZWNpZmllZCBBUEkgc2l6ZS4K
KyAgICBBU1NFUlQobWVtb3J5UmVxdWlyZW1lbnRzLnNpemUgPj0gc2l6ZSk7CisgICAgbVJlcXVp
cmVkU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4obWVtb3J5UmVxdWlyZW1lbnRzLnNpemUpOwor
CisgICAgVmtQaHlzaWNhbERldmljZU1lbW9yeVByb3BlcnRpZXMgbWVtb3J5UHJvcGVydGllczsK
KyAgICB2a0dldFBoeXNpY2FsRGV2aWNlTWVtb3J5UHJvcGVydGllcyhjb250ZXh0VmstPmdldFJl
bmRlcmVyKCktPmdldFBoeXNpY2FsRGV2aWNlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJm1lbW9yeVByb3BlcnRpZXMpOworCisgICAgYXV0byBtZW1vcnlUeXBl
SW5kZXggPQorICAgICAgICBGaW5kTWVtb3J5VHlwZShtZW1vcnlQcm9wZXJ0aWVzLCBtZW1vcnlS
ZXF1aXJlbWVudHMsCisgICAgICAgICAgICAgICAgICAgICAgIFZLX01FTU9SWV9QUk9QRVJUWV9I
T1NUX1ZJU0lCTEVfQklUIHwgVktfTUVNT1JZX1BST1BFUlRZX0hPU1RfQ09IRVJFTlRfQklUKTsK
KyAgICBBTkdMRV9WS19DSEVDSyhtZW1vcnlUeXBlSW5kZXgudmFsaWQoKSwgVktfRVJST1JfSU5D
T01QQVRJQkxFX0RSSVZFUik7CisKKyAgICBWa01lbW9yeUFsbG9jYXRlSW5mbyBhbGxvY0luZm87
CisgICAgYWxsb2NJbmZvLnNUeXBlICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX01FTU9S
WV9BTExPQ0FURV9JTkZPOworICAgIGFsbG9jSW5mby5wTmV4dCAgICAgICAgICAgPSBudWxscHRy
OworICAgIGFsbG9jSW5mby5tZW1vcnlUeXBlSW5kZXggPSBtZW1vcnlUeXBlSW5kZXgudmFsdWUo
KTsKKyAgICBhbGxvY0luZm8uYWxsb2NhdGlvblNpemUgID0gbWVtb3J5UmVxdWlyZW1lbnRzLnNp
emU7CisKKyAgICBBTkdMRV9UUlkobmV3QnVmZmVyLmdldE1lbW9yeSgpLmFsbG9jYXRlKGRldmlj
ZSwgYWxsb2NJbmZvKSk7CisgICAgQU5HTEVfVFJZKG5ld0J1ZmZlci5iaW5kTWVtb3J5KGRldmlj
ZSkpOworCisgICAgbUJ1ZmZlci5yZXRhaW4oZGV2aWNlLCBzdGQ6Om1vdmUobmV3QnVmZmVyKSk7
CisKKyAgICBpZiAoZGF0YSkKKyAgICB7CisgICAgICAgIEFOR0xFX1RSWShzZXREYXRhSW1wbChk
ZXZpY2UsIHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QgKj4oZGF0YSksIHNpemUsIDApKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAotZ2w6OkVycm9yIEJ1ZmZlclZr
Ojpjb3B5U3ViRGF0YShCdWZmZXJJbXBsICpzb3VyY2UsCitnbDo6RXJyb3IgQnVmZmVyVms6OnNl
dFN1YkRhdGEoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXpl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQpCit7CisgICAg
QVNTRVJUKG1CdWZmZXIuZ2V0SGFuZGxlKCkgIT0gVktfTlVMTF9IQU5ETEUpOworICAgIEFTU0VS
VChtQnVmZmVyLmdldE1lbW9yeSgpLmdldEhhbmRsZSgpICE9IFZLX05VTExfSEFORExFKTsKKwor
ICAgIFZrRGV2aWNlIGRldmljZSA9IEdldEFzPENvbnRleHRWaz4oY29udGV4dCktPmdldERldmlj
ZSgpOworCisgICAgQU5HTEVfVFJZKHNldERhdGFJbXBsKGRldmljZSwgc3RhdGljX2Nhc3Q8Y29u
c3QgdWludDhfdCAqPihkYXRhKSwgc2l6ZSwgb2Zmc2V0KSk7CisKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKK30KKworZ2w6OkVycm9yIEJ1ZmZlclZrOjpjb3B5U3ViRGF0YShDb250ZXh0SW1w
bCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVySW1wbCAq
c291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBzb3VyY2VP
ZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50cHRyIGRlc3RPZmZz
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSkKQEAg
LTQzLDIyICsxMTksNDYgQEAgZ2w6OkVycm9yIEJ1ZmZlclZrOjpjb3B5U3ViRGF0YShCdWZmZXJJ
bXBsICpzb3VyY2UsCiAgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
CiB9CiAKLWdsOjpFcnJvciBCdWZmZXJWazo6bWFwKEdMZW51bSBhY2Nlc3MsIEdMdm9pZCAqKm1h
cFB0cikKK2dsOjpFcnJvciBCdWZmZXJWazo6bWFwKENvbnRleHRJbXBsICpjb250ZXh0LCBHTGVu
dW0gYWNjZXNzLCBHTHZvaWQgKiptYXBQdHIpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIEFTU0VSVChtQnVm
ZmVyLmdldEhhbmRsZSgpICE9IFZLX05VTExfSEFORExFKTsKKyAgICBBU1NFUlQobUJ1ZmZlci5n
ZXRNZW1vcnkoKS5nZXRIYW5kbGUoKSAhPSBWS19OVUxMX0hBTkRMRSk7CisKKyAgICBWa0Rldmlj
ZSBkZXZpY2UgPSBHZXRBczxDb250ZXh0Vms+KGNvbnRleHQpLT5nZXREZXZpY2UoKTsKKworICAg
IEFOR0xFX1RSWShtQnVmZmVyLmdldE1lbW9yeSgpLm1hcChkZXZpY2UsIDAsIG1TdGF0ZS5nZXRT
aXplKCksIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDhfdCAqKj4obWFwUHRyKSkpOworCisgICAgcmV0dXJuIGdsOjpOb0Vycm9y
KCk7CiB9CiAKLWdsOjpFcnJvciBCdWZmZXJWazo6bWFwUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6
ZV90IGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikKK2dsOjpFcnJv
ciBCdWZmZXJWazo6bWFwUmFuZ2UoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYml0Zmll
bGQgYWNjZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKiptYXBQdHIp
CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOworICAgIEFTU0VSVChtQnVmZmVyLmdldEhhbmRsZSgpICE9IFZLX05VTExf
SEFORExFKTsKKyAgICBBU1NFUlQobUJ1ZmZlci5nZXRNZW1vcnkoKS5nZXRIYW5kbGUoKSAhPSBW
S19OVUxMX0hBTkRMRSk7CisKKyAgICBWa0RldmljZSBkZXZpY2UgPSBHZXRBczxDb250ZXh0Vms+
KGNvbnRleHQpLT5nZXREZXZpY2UoKTsKKworICAgIEFOR0xFX1RSWSgKKyAgICAgICAgbUJ1ZmZl
ci5nZXRNZW1vcnkoKS5tYXAoZGV2aWNlLCBvZmZzZXQsIGxlbmd0aCwgMCwgcmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90ICoqPihtYXBQdHIpKSk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsK
IH0KIAotZ2w6OkVycm9yIEJ1ZmZlclZrOjp1bm1hcChHTGJvb2xlYW4gKnJlc3VsdCkKK2dsOjpF
cnJvciBCdWZmZXJWazo6dW5tYXAoQ29udGV4dEltcGwgKmNvbnRleHQsIEdMYm9vbGVhbiAqcmVz
dWx0KQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKKyAgICBBU1NFUlQobUJ1ZmZlci5nZXRIYW5kbGUoKSAhPSBWS19O
VUxMX0hBTkRMRSk7CisgICAgQVNTRVJUKG1CdWZmZXIuZ2V0TWVtb3J5KCkuZ2V0SGFuZGxlKCkg
IT0gVktfTlVMTF9IQU5ETEUpOworCisgICAgVmtEZXZpY2UgZGV2aWNlID0gR2V0QXM8Q29udGV4
dFZrPihjb250ZXh0KS0+Z2V0RGV2aWNlKCk7CisKKyAgICBtQnVmZmVyLmdldE1lbW9yeSgpLnVu
bWFwKGRldmljZSk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJyb3IoKTsKIH0KIAogZ2w6OkVycm9y
IEJ1ZmZlclZrOjpnZXRJbmRleFJhbmdlKEdMZW51bSB0eXBlLApAQCAtNzEsNCArMTcxLDIyIEBA
IGdsOjpFcnJvciBCdWZmZXJWazo6Z2V0SW5kZXhSYW5nZShHTGVudW0gdHlwZSwKICAgICByZXR1
cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAordms6OkVycm9yIEJ1ZmZl
clZrOjpzZXREYXRhSW1wbChWa0RldmljZSBkZXZpY2UsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNp
emVfdCBzaXplLCBzaXplX3Qgb2Zmc2V0KQoreworICAgIHVpbnQ4X3QgKm1hcFBvaW50ZXIgPSBu
dWxscHRyOworICAgIEFOR0xFX1RSWShtQnVmZmVyLmdldE1lbW9yeSgpLm1hcChkZXZpY2UsIG9m
ZnNldCwgc2l6ZSwgMCwgJm1hcFBvaW50ZXIpKTsKKyAgICBBU1NFUlQobWFwUG9pbnRlcik7CisK
KyAgICBtZW1jcHkobWFwUG9pbnRlciwgZGF0YSwgc2l6ZSk7CisKKyAgICBtQnVmZmVyLmdldE1l
bW9yeSgpLnVubWFwKGRldmljZSk7CisKKyAgICByZXR1cm4gdms6Ok5vRXJyb3IoKTsKK30KKwor
Y29uc3Qgdms6OkJ1ZmZlciAmQnVmZmVyVms6OmdldFZrQnVmZmVyKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbUJ1ZmZlcjsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZlclZr
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L0J1ZmZlclZrLmgKaW5kZXggZDAwMDY2MzQ1MjIuLjQ1YWQ1MmMwZjk2IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0J1ZmZl
clZrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9CdWZmZXJWay5oCkBAIC0xMSwzMSArMTEsNTQgQEAKICNkZWZpbmUgTElCQU5HTEVf
UkVOREVSRVJfVlVMS0FOX0JVRkZFUlZLX0hfCiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci9CdWZmZXJJbXBsLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3JlbmRl
cmVydmtfdXRpbHMuaCIKIAogbmFtZXNwYWNlIHJ4CiB7CiAKLWNsYXNzIEJ1ZmZlclZrIDogcHVi
bGljIEJ1ZmZlckltcGwKK2NsYXNzIEJ1ZmZlclZrIDogcHVibGljIEJ1ZmZlckltcGwsIHB1Ymxp
YyBSZXNvdXJjZVZrCiB7CiAgIHB1YmxpYzoKLSAgICBCdWZmZXJWaygpOworICAgIEJ1ZmZlclZr
KGNvbnN0IGdsOjpCdWZmZXJTdGF0ZSAmc3RhdGUpOwogICAgIH5CdWZmZXJWaygpIG92ZXJyaWRl
OworICAgIHZvaWQgZGVzdHJveShDb250ZXh0SW1wbCAqY29udGV4dEltcGwpIG92ZXJyaWRlOwog
Ci0gICAgZ2w6OkVycm9yIHNldERhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwg
c2l6ZV90IHNpemUsIEdMZW51bSB1c2FnZSkgb3ZlcnJpZGU7Ci0gICAgZ2w6OkVycm9yIHNldFN1
YkRhdGEoR0xlbnVtIHRhcmdldCwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIHNpemVf
dCBvZmZzZXQpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBjb3B5U3ViRGF0YShCdWZmZXJJbXBs
ICpzb3VyY2UsCisgICAgZ2w6OkVycm9yIHNldERhdGEoQ29udGV4dEltcGwgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAor
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB1c2FnZSkgb3ZlcnJpZGU7CisgICAgZ2w6OkVy
cm9yIHNldFN1YkRhdGEoQ29udGV4dEltcGwgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lk
ICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQpIG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBj
b3B5U3ViRGF0YShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIEJ1ZmZlckltcGwgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnRwdHIgc291cmNlT2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBk
ZXN0T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUpIG92
ZXJyaWRlOwotICAgIGdsOjpFcnJvciBtYXAoR0xlbnVtIGFjY2VzcywgR0x2b2lkICoqbWFwUHRy
KSBvdmVycmlkZTsKLSAgICBnbDo6RXJyb3IgbWFwUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90
IGxlbmd0aCwgR0xiaXRmaWVsZCBhY2Nlc3MsIEdMdm9pZCAqKm1hcFB0cikgb3ZlcnJpZGU7Ci0g
ICAgZ2w6OkVycm9yIHVubWFwKEdMYm9vbGVhbiAqcmVzdWx0KSBvdmVycmlkZTsKKyAgICBnbDo6
RXJyb3IgbWFwKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwgR0xlbnVtIGFjY2VzcywgR0x2b2lk
ICoqbWFwUHRyKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgbWFwUmFuZ2UoQ29udGV4dEltcGwg
KmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICBHTGJpdGZpZWxkIGFjY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgR0x2b2lkICoqbWFw
UHRyKSBvdmVycmlkZTsKKyAgICBnbDo6RXJyb3IgdW5tYXAoQ29udGV4dEltcGwgKmNvbnRleHRJ
bXBsLCBHTGJvb2xlYW4gKnJlc3VsdCkgb3ZlcnJpZGU7CiAKICAgICBnbDo6RXJyb3IgZ2V0SW5k
ZXhSYW5nZShHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIHByaW1pdGl2ZVJlc3RhcnRFbmFibGVkLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpJbmRleFJhbmdlICpvdXRSYW5nZSkgb3ZlcnJp
ZGU7CisKKyAgICBjb25zdCB2azo6QnVmZmVyICZnZXRWa0J1ZmZlcigpIGNvbnN0OworCisgIHBy
aXZhdGU6CisgICAgdms6OkVycm9yIHNldERhdGFJbXBsKFZrRGV2aWNlIGRldmljZSwgY29uc3Qg
dWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUsIHNpemVfdCBvZmZzZXQpOworCisgICAgdms6OkJ1
ZmZlciBtQnVmZmVyOworICAgIHNpemVfdCBtUmVxdWlyZWRTaXplOwogfTsKIAogfSAgLy8gbmFt
ZXNwYWNlIHJ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL0NvbXBpbGVyVmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21waWxlclZrLmNwcAppbmRleCBkM2Yz
MWViMGI2ZS4uZjc4MWMwNzBiMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29tcGlsZXJWay5jcHAKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21waWxlclZr
LmNwcApAQCAtMjQsMTQgKzI0LDEyIEBAIENvbXBpbGVyVms6On5Db21waWxlclZrKCkKIAogZ2w6
OkVycm9yIENvbXBpbGVyVms6OnJlbGVhc2UoKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAg
ICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4gZ2w6
Ok5vRXJyb3IoKTsKIH0KIAogU2hTaGFkZXJPdXRwdXQgQ29tcGlsZXJWazo6Z2V0VHJhbnNsYXRv
ck91dHB1dFR5cGUoKSBjb25zdAogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4g
U2hTaGFkZXJPdXRwdXQoKTsKKyAgICByZXR1cm4gU0hfR0xTTF9WVUxLQU5fT1VUUFVUOwogfQog
CiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmNwcApp
bmRleCA4YmQwNjMzMDAxNS4uNGJmY2MyYjA4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmNwcAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Nv
bnRleHRWay5jcHAKQEAgLTksNyArOSw5IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vQ29udGV4dFZrLmgiCiAKKyNpbmNsdWRlICJjb21tb24vYml0c2V0X3V0aWxzLmgi
CiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAibGliQU5HTEUvUHJvZ3JhbS5o
IgogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9CdWZmZXJWay5oIgogI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db21waWxlclZrLmgiCiAjaW5jbHVkZSAibGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5oIgpAQCAtMjcsMjMgKzI5LDI0IEBACiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1RleHR1cmVWay5oIgogI2luY2x1ZGUg
ImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UcmFuc2Zvcm1GZWVkYmFja1ZrLmgiCiAjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1ZlcnRleEFycmF5VmsuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vZm9ybWF0dXRpbHN2ay5oIgogCiBuYW1lc3BhY2UgcngK
IHsKIAogQ29udGV4dFZrOjpDb250ZXh0VmsoY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmc3RhdGUs
IFJlbmRlcmVyVmsgKnJlbmRlcmVyKQotICAgIDogQ29udGV4dEltcGwoc3RhdGUpLCBtUmVuZGVy
ZXIocmVuZGVyZXIpCisgICAgOiBDb250ZXh0SW1wbChzdGF0ZSksIG1SZW5kZXJlcihyZW5kZXJl
ciksIG1DdXJyZW50RHJhd01vZGUoR0xfTk9ORSkKIHsKIH0KIAogQ29udGV4dFZrOjp+Q29udGV4
dFZrKCkKIHsKKyAgICBpbnZhbGlkYXRlQ3VycmVudFBpcGVsaW5lKCk7CiB9CiAKIGdsOjpFcnJv
ciBDb250ZXh0Vms6OmluaXRpYWxpemUoKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICBy
ZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4gZ2w6Ok5v
RXJyb3IoKTsKIH0KIAogZ2w6OkVycm9yIENvbnRleHRWazo6Zmx1c2goKQpAQCAtNTgsMTAgKzYx
LDI3MSBAQCBnbDo6RXJyb3IgQ29udGV4dFZrOjpmaW5pc2goKQogICAgIHJldHVybiBnbDo6RXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCitnbDo6RXJyb3IgQ29udGV4dFZrOjppbml0
UGlwZWxpbmUoKQoreworICAgIEFTU0VSVCghbUN1cnJlbnRQaXBlbGluZS52YWxpZCgpKTsKKwor
ICAgIFZrRGV2aWNlIGRldmljZSAgICAgICA9IG1SZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAg
Y29uc3QgYXV0byAmc3RhdGUgICAgID0gbVN0YXRlLmdldFN0YXRlKCk7CisgICAgY29uc3QgYXV0
byAmcHJvZ3JhbUdMID0gc3RhdGUuZ2V0UHJvZ3JhbSgpOworICAgIGNvbnN0IGF1dG8gJnZhbyAg
ICAgICA9IHN0YXRlLmdldFZlcnRleEFycmF5KCk7CisgICAgY29uc3QgYXV0byAmYXR0cmlicyAg
ID0gdmFvLT5nZXRWZXJ0ZXhBdHRyaWJ1dGVzKCk7CisgICAgY29uc3QgYXV0byAmYmluZGluZ3Mg
ID0gdmFvLT5nZXRWZXJ0ZXhCaW5kaW5ncygpOworICAgIGNvbnN0IGF1dG8gJnByb2dyYW1WayA9
IEdldEltcGxBczxQcm9ncmFtVms+KHByb2dyYW1HTCk7CisgICAgY29uc3QgYXV0byAqZHJhd0ZC
TyAgID0gc3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisgICAgRnJhbWVidWZmZXJWayAqdmtG
Qk8gID0gR2V0SW1wbEFzPEZyYW1lYnVmZmVyVms+KGRyYXdGQk8pOworCisgICAgLy8geyB2ZXJ0
ZXgsIGZyYWdtZW50IH0KKyAgICBWa1BpcGVsaW5lU2hhZGVyU3RhZ2VDcmVhdGVJbmZvIHNoYWRl
clN0YWdlc1syXTsKKworICAgIHNoYWRlclN0YWdlc1swXS5zVHlwZSAgICAgICAgICAgICAgID0g
VktfU1RSVUNUVVJFX1RZUEVfUElQRUxJTkVfU0hBREVSX1NUQUdFX0NSRUFURV9JTkZPOworICAg
IHNoYWRlclN0YWdlc1swXS5wTmV4dCAgICAgICAgICAgICAgID0gbnVsbHB0cjsKKyAgICBzaGFk
ZXJTdGFnZXNbMF0uZmxhZ3MgICAgICAgICAgICAgICA9IDA7CisgICAgc2hhZGVyU3RhZ2VzWzBd
LnN0YWdlICAgICAgICAgICAgICAgPSBWS19TSEFERVJfU1RBR0VfVkVSVEVYX0JJVDsKKyAgICBz
aGFkZXJTdGFnZXNbMF0ubW9kdWxlICAgICAgICAgICAgICA9IHByb2dyYW1Way0+Z2V0TGlua2Vk
VmVydGV4TW9kdWxlKCkuZ2V0SGFuZGxlKCk7CisgICAgc2hhZGVyU3RhZ2VzWzBdLnBOYW1lICAg
ICAgICAgICAgICAgPSAibWFpbiI7CisgICAgc2hhZGVyU3RhZ2VzWzBdLnBTcGVjaWFsaXphdGlv
bkluZm8gPSBudWxscHRyOworCisgICAgc2hhZGVyU3RhZ2VzWzFdLnNUeXBlICAgICAgICAgICAg
ICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9QSVBFTElORV9TSEFERVJfU1RBR0VfQ1JFQVRFX0lORk87
CisgICAgc2hhZGVyU3RhZ2VzWzFdLnBOZXh0ICAgICAgICAgICAgICAgPSBudWxscHRyOworICAg
IHNoYWRlclN0YWdlc1sxXS5mbGFncyAgICAgICAgICAgICAgID0gMDsKKyAgICBzaGFkZXJTdGFn
ZXNbMV0uc3RhZ2UgICAgICAgICAgICAgICA9IFZLX1NIQURFUl9TVEFHRV9GUkFHTUVOVF9CSVQ7
CisgICAgc2hhZGVyU3RhZ2VzWzFdLm1vZHVsZSAgICAgICAgICAgICAgPSBwcm9ncmFtVmstPmdl
dExpbmtlZEZyYWdtZW50TW9kdWxlKCkuZ2V0SGFuZGxlKCk7CisgICAgc2hhZGVyU3RhZ2VzWzFd
LnBOYW1lICAgICAgICAgICAgICAgPSAibWFpbiI7CisgICAgc2hhZGVyU3RhZ2VzWzFdLnBTcGVj
aWFsaXphdGlvbkluZm8gPSBudWxscHRyOworCisgICAgLy8gUHJvY2VzcyB2ZXJ0ZXggYXR0cmli
dXRlcworICAgIC8vIFRPRE8oam1hZGlsbCk6IENhY2hpbmcgd2l0aCBkaXJ0eSBiaXRzLgorICAg
IHN0ZDo6dmVjdG9yPFZrVmVydGV4SW5wdXRCaW5kaW5nRGVzY3JpcHRpb24+IHZlcnRleEJpbmRp
bmdzOworICAgIHN0ZDo6dmVjdG9yPFZrVmVydGV4SW5wdXRBdHRyaWJ1dGVEZXNjcmlwdGlvbj4g
dmVydGV4QXR0cmliczsKKworICAgIGZvciAoYXV0byBhdHRyaWJJbmRleCA6IGFuZ2xlOjpJdGVy
YXRlQml0U2V0KHByb2dyYW1HTC0+Z2V0QWN0aXZlQXR0cmliTG9jYXRpb25zTWFzaygpKSkKKyAg
ICB7CisgICAgICAgIGNvbnN0IGF1dG8gJmF0dHJpYiA9IGF0dHJpYnNbYXR0cmliSW5kZXhdOwor
ICAgICAgICBjb25zdCBhdXRvICZiaW5kaW5nID0gYmluZGluZ3NbYXR0cmliLmJpbmRpbmdJbmRl
eF07CisgICAgICAgIGlmIChhdHRyaWIuZW5hYmxlZCkKKyAgICAgICAgeworICAgICAgICAgICAg
VmtWZXJ0ZXhJbnB1dEJpbmRpbmdEZXNjcmlwdGlvbiBiaW5kaW5nRGVzYzsKKyAgICAgICAgICAg
IGJpbmRpbmdEZXNjLmJpbmRpbmcgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmVydGV4QmluZGlu
Z3Muc2l6ZSgpKTsKKyAgICAgICAgICAgIGJpbmRpbmdEZXNjLnN0cmlkZSAgPSBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oZ2w6OkNvbXB1dGVWZXJ0ZXhBdHRyaWJ1dGVUeXBlU2l6ZShhdHRyaWIpKTsK
KyAgICAgICAgICAgIGJpbmRpbmdEZXNjLmlucHV0UmF0ZSA9CisgICAgICAgICAgICAgICAgKGJp
bmRpbmcuZGl2aXNvciA+IDAgPyBWS19WRVJURVhfSU5QVVRfUkFURV9JTlNUQU5DRSA6IFZLX1ZF
UlRFWF9JTlBVVF9SQVRFX1ZFUlRFWCk7CisKKyAgICAgICAgICAgIGdsOjpWZXJ0ZXhGb3JtYXRU
eXBlIHZlcnRleEZvcm1hdFR5cGUgPSBnbDo6R2V0VmVydGV4Rm9ybWF0VHlwZShhdHRyaWIpOwor
CisgICAgICAgICAgICBWa1ZlcnRleElucHV0QXR0cmlidXRlRGVzY3JpcHRpb24gYXR0cmliRGVz
YzsKKyAgICAgICAgICAgIGF0dHJpYkRlc2MuYmluZGluZyAgPSBiaW5kaW5nRGVzYy5iaW5kaW5n
OworICAgICAgICAgICAgYXR0cmliRGVzYy5mb3JtYXQgICA9IHZrOjpHZXROYXRpdmVWZXJ0ZXhG
b3JtYXQodmVydGV4Rm9ybWF0VHlwZSk7CisgICAgICAgICAgICBhdHRyaWJEZXNjLmxvY2F0aW9u
ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGF0dHJpYkluZGV4KTsKKyAgICAgICAgICAgIGF0dHJp
YkRlc2Mub2Zmc2V0ID0KKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oQ29t
cHV0ZVZlcnRleEF0dHJpYnV0ZU9mZnNldChhdHRyaWIsIGJpbmRpbmcpKTsKKworICAgICAgICAg
ICAgdmVydGV4QmluZGluZ3MucHVzaF9iYWNrKGJpbmRpbmdEZXNjKTsKKyAgICAgICAgICAgIHZl
cnRleEF0dHJpYnMucHVzaF9iYWNrKGF0dHJpYkRlc2MpOworICAgICAgICB9CisgICAgICAgIGVs
c2UKKyAgICAgICAgeworICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgLy8gVE9ETyhqbWFkaWxsKTogVmFsaWRhdGUgd2l0aCBBU1NFUlQgYWdhaW5z
dCBwaHlzaWNhbCBkZXZpY2UgbGltaXRzL2NhcHM/CisgICAgVmtQaXBlbGluZVZlcnRleElucHV0
U3RhdGVDcmVhdGVJbmZvIHZlcnRleElucHV0U3RhdGU7CisgICAgdmVydGV4SW5wdXRTdGF0ZS5z
VHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX1BJUEVMSU5FX1ZFUlRFWF9JTlBVVF9TVEFURV9DUkVB
VEVfSU5GTzsKKyAgICB2ZXJ0ZXhJbnB1dFN0YXRlLnBOZXh0ID0gbnVsbHB0cjsKKyAgICB2ZXJ0
ZXhJbnB1dFN0YXRlLmZsYWdzID0gMDsKKyAgICB2ZXJ0ZXhJbnB1dFN0YXRlLnZlcnRleEJpbmRp
bmdEZXNjcmlwdGlvbkNvdW50ICAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmVydGV4QmluZGlu
Z3Muc2l6ZSgpKTsKKyAgICB2ZXJ0ZXhJbnB1dFN0YXRlLnBWZXJ0ZXhCaW5kaW5nRGVzY3JpcHRp
b25zICAgICAgPSB2ZXJ0ZXhCaW5kaW5ncy5kYXRhKCk7CisgICAgdmVydGV4SW5wdXRTdGF0ZS52
ZXJ0ZXhBdHRyaWJ1dGVEZXNjcmlwdGlvbkNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZl
cnRleEF0dHJpYnMuc2l6ZSgpKTsKKyAgICB2ZXJ0ZXhJbnB1dFN0YXRlLnBWZXJ0ZXhBdHRyaWJ1
dGVEZXNjcmlwdGlvbnMgICAgPSB2ZXJ0ZXhBdHRyaWJzLmRhdGEoKTsKKworICAgIFZrUGlwZWxp
bmVJbnB1dEFzc2VtYmx5U3RhdGVDcmVhdGVJbmZvIGlucHV0QXNzZW1ibHlTdGF0ZTsKKyAgICBp
bnB1dEFzc2VtYmx5U3RhdGUuc1R5cGUgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9QSVBFTElORV9J
TlBVVF9BU1NFTUJMWV9TVEFURV9DUkVBVEVfSU5GTzsKKyAgICBpbnB1dEFzc2VtYmx5U3RhdGUu
cE5leHQgICAgPSBudWxscHRyOworICAgIGlucHV0QXNzZW1ibHlTdGF0ZS5mbGFncyAgICA9IDA7
CisgICAgaW5wdXRBc3NlbWJseVN0YXRlLnRvcG9sb2d5ID0gZ2xfdms6OkdldFByaW1pdGl2ZVRv
cG9sb2d5KG1DdXJyZW50RHJhd01vZGUpOworICAgIGlucHV0QXNzZW1ibHlTdGF0ZS5wcmltaXRp
dmVSZXN0YXJ0RW5hYmxlID0gVktfRkFMU0U7CisKKyAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZ2
aWV3cG9ydEdMID0gc3RhdGUuZ2V0Vmlld3BvcnQoKTsKKyAgICBWa1ZpZXdwb3J0IHZpZXdwb3J0
Vms7CisgICAgdmlld3BvcnRWay54ICAgICAgICA9IHN0YXRpY19jYXN0PGZsb2F0Pih2aWV3cG9y
dEdMLngpOworICAgIHZpZXdwb3J0VmsueSAgICAgICAgPSBzdGF0aWNfY2FzdDxmbG9hdD4odmll
d3BvcnRHTC55KTsKKyAgICB2aWV3cG9ydFZrLndpZHRoICAgID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+
KHZpZXdwb3J0R0wud2lkdGgpOworICAgIHZpZXdwb3J0VmsuaGVpZ2h0ICAgPSBzdGF0aWNfY2Fz
dDxmbG9hdD4odmlld3BvcnRHTC5oZWlnaHQpOworICAgIHZpZXdwb3J0VmsubWluRGVwdGggPSBz
dGF0ZS5nZXROZWFyUGxhbmUoKTsKKyAgICB2aWV3cG9ydFZrLm1heERlcHRoID0gc3RhdGUuZ2V0
RmFyUGxhbmUoKTsKKworICAgIC8vIFRPRE8oam1hZGlsbCk6IFNjaXNzb3IuCisgICAgVmtSZWN0
MkQgc2Npc3NvclZrOworICAgIHNjaXNzb3JWay5vZmZzZXQueCAgICAgID0gdmlld3BvcnRHTC54
OworICAgIHNjaXNzb3JWay5vZmZzZXQueSAgICAgID0gdmlld3BvcnRHTC55OworICAgIHNjaXNz
b3JWay5leHRlbnQud2lkdGggID0gdmlld3BvcnRHTC53aWR0aDsKKyAgICBzY2lzc29yVmsuZXh0
ZW50LmhlaWdodCA9IHZpZXdwb3J0R0wuaGVpZ2h0OworCisgICAgVmtQaXBlbGluZVZpZXdwb3J0
U3RhdGVDcmVhdGVJbmZvIHZpZXdwb3J0U3RhdGU7CisgICAgdmlld3BvcnRTdGF0ZS5zVHlwZSAg
ICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfUElQRUxJTkVfVklFV1BPUlRfU1RBVEVfQ1JFQVRF
X0lORk87CisgICAgdmlld3BvcnRTdGF0ZS5wTmV4dCAgICAgICAgID0gbnVsbHB0cjsKKyAgICB2
aWV3cG9ydFN0YXRlLmZsYWdzICAgICAgICAgPSAwOworICAgIHZpZXdwb3J0U3RhdGUudmlld3Bv
cnRDb3VudCA9IDE7CisgICAgdmlld3BvcnRTdGF0ZS5wVmlld3BvcnRzICAgID0gJnZpZXdwb3J0
Vms7CisgICAgdmlld3BvcnRTdGF0ZS5zY2lzc29yQ291bnQgID0gMTsKKyAgICB2aWV3cG9ydFN0
YXRlLnBTY2lzc29ycyAgICAgPSAmc2Npc3NvclZrOworCisgICAgLy8gVE9ETyhqbWFkaWxsKTog
RXh0cmEgcmFzdGVyaXplciBzdGF0ZSBmZWF0dXJlcy4KKyAgICBWa1BpcGVsaW5lUmFzdGVyaXph
dGlvblN0YXRlQ3JlYXRlSW5mbyByYXN0ZXJTdGF0ZTsKKyAgICByYXN0ZXJTdGF0ZS5zVHlwZSAg
ICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfUElQRUxJTkVfUkFTVEVSSVpBVElPTl9TVEFU
RV9DUkVBVEVfSU5GTzsKKyAgICByYXN0ZXJTdGF0ZS5wTmV4dCAgICAgICAgICAgID0gbnVsbHB0
cjsKKyAgICByYXN0ZXJTdGF0ZS5mbGFncyAgICAgICAgICAgID0gMDsKKyAgICByYXN0ZXJTdGF0
ZS5kZXB0aENsYW1wRW5hYmxlID0gVktfRkFMU0U7CisgICAgcmFzdGVyU3RhdGUucmFzdGVyaXpl
ckRpc2NhcmRFbmFibGUgPSBWS19GQUxTRTsKKyAgICByYXN0ZXJTdGF0ZS5wb2x5Z29uTW9kZSAg
ICAgICAgICAgICA9IFZLX1BPTFlHT05fTU9ERV9GSUxMOworICAgIHJhc3RlclN0YXRlLmN1bGxN
b2RlICAgICAgICAgICAgICAgID0gZ2xfdms6OkdldEN1bGxNb2RlKHN0YXRlLmdldFJhc3Rlcml6
ZXJTdGF0ZSgpKTsKKyAgICByYXN0ZXJTdGF0ZS5mcm9udEZhY2UgICAgICAgICAgICAgICA9IGds
X3ZrOjpHZXRGcm9udEZhY2Uoc3RhdGUuZ2V0UmFzdGVyaXplclN0YXRlKCkuZnJvbnRGYWNlKTsK
KyAgICByYXN0ZXJTdGF0ZS5kZXB0aEJpYXNFbmFibGUgICAgICAgICA9IFZLX0ZBTFNFOworICAg
IHJhc3RlclN0YXRlLmRlcHRoQmlhc0NvbnN0YW50RmFjdG9yID0gMC4wZjsKKyAgICByYXN0ZXJT
dGF0ZS5kZXB0aEJpYXNDbGFtcCAgICAgICAgICA9IDAuMGY7CisgICAgcmFzdGVyU3RhdGUuZGVw
dGhCaWFzU2xvcGVGYWN0b3IgICAgPSAwLjBmOworICAgIHJhc3RlclN0YXRlLmxpbmVXaWR0aCAg
ICAgICAgICAgICAgID0gc3RhdGUuZ2V0TGluZVdpZHRoKCk7CisKKyAgICAvLyBUT0RPKGptYWRp
bGwpOiBNdWx0aXNhbXBsZSBzdGF0ZS4KKyAgICBWa1BpcGVsaW5lTXVsdGlzYW1wbGVTdGF0ZUNy
ZWF0ZUluZm8gbXVsdGlzYW1wbGVTdGF0ZTsKKyAgICBtdWx0aXNhbXBsZVN0YXRlLnNUeXBlID0g
VktfU1RSVUNUVVJFX1RZUEVfUElQRUxJTkVfTVVMVElTQU1QTEVfU1RBVEVfQ1JFQVRFX0lORk87
CisgICAgbXVsdGlzYW1wbGVTdGF0ZS5wTmV4dCA9IG51bGxwdHI7CisgICAgbXVsdGlzYW1wbGVT
dGF0ZS5mbGFncyA9IDA7CisgICAgbXVsdGlzYW1wbGVTdGF0ZS5yYXN0ZXJpemF0aW9uU2FtcGxl
cyA9IFZLX1NBTVBMRV9DT1VOVF8xX0JJVDsKKyAgICBtdWx0aXNhbXBsZVN0YXRlLnNhbXBsZVNo
YWRpbmdFbmFibGUgID0gVktfRkFMU0U7CisgICAgbXVsdGlzYW1wbGVTdGF0ZS5taW5TYW1wbGVT
aGFkaW5nICAgICA9IDAuMGY7CisgICAgbXVsdGlzYW1wbGVTdGF0ZS5wU2FtcGxlTWFzayAgICAg
ICAgICA9IG51bGxwdHI7CisgICAgbXVsdGlzYW1wbGVTdGF0ZS5hbHBoYVRvQ292ZXJhZ2VFbmFi
bGUgPSBWS19GQUxTRTsKKyAgICBtdWx0aXNhbXBsZVN0YXRlLmFscGhhVG9PbmVFbmFibGUgICAg
ICA9IFZLX0ZBTFNFOworCisgICAgLy8gVE9ETyhqbWFkaWxsKTogRGVwdGgvc3RlbmNpbCBzdGF0
ZS4KKworICAgIC8vIFRPRE8oam1hZGlsbCk6IEJsZW5kIHN0YXRlL01SVC4KKyAgICBWa1BpcGVs
aW5lQ29sb3JCbGVuZEF0dGFjaG1lbnRTdGF0ZSBibGVuZEF0dGFjaG1lbnRTdGF0ZTsKKyAgICBi
bGVuZEF0dGFjaG1lbnRTdGF0ZS5ibGVuZEVuYWJsZSAgICAgICAgID0gVktfRkFMU0U7CisgICAg
YmxlbmRBdHRhY2htZW50U3RhdGUuc3JjQ29sb3JCbGVuZEZhY3RvciA9IFZLX0JMRU5EX0ZBQ1RP
Ul9PTkU7CisgICAgYmxlbmRBdHRhY2htZW50U3RhdGUuZHN0Q29sb3JCbGVuZEZhY3RvciA9IFZL
X0JMRU5EX0ZBQ1RPUl9PTkU7CisgICAgYmxlbmRBdHRhY2htZW50U3RhdGUuY29sb3JCbGVuZE9w
ICAgICAgICA9IFZLX0JMRU5EX09QX0FERDsKKyAgICBibGVuZEF0dGFjaG1lbnRTdGF0ZS5zcmNB
bHBoYUJsZW5kRmFjdG9yID0gVktfQkxFTkRfRkFDVE9SX09ORTsKKyAgICBibGVuZEF0dGFjaG1l
bnRTdGF0ZS5kc3RBbHBoYUJsZW5kRmFjdG9yID0gVktfQkxFTkRfRkFDVE9SX09ORTsKKyAgICBi
bGVuZEF0dGFjaG1lbnRTdGF0ZS5hbHBoYUJsZW5kT3AgICAgICAgID0gVktfQkxFTkRfT1BfQURE
OworICAgIGJsZW5kQXR0YWNobWVudFN0YXRlLmNvbG9yV3JpdGVNYXNrID0gKFZLX0NPTE9SX0NP
TVBPTkVOVF9SX0JJVCB8IFZLX0NPTE9SX0NPTVBPTkVOVF9HX0JJVCB8CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfQ09MT1JfQ09NUE9ORU5UX0JfQklUIHwg
VktfQ09MT1JfQ09NUE9ORU5UX0FfQklUKTsKKworICAgIFZrUGlwZWxpbmVDb2xvckJsZW5kU3Rh
dGVDcmVhdGVJbmZvIGJsZW5kU3RhdGU7CisgICAgYmxlbmRTdGF0ZS5zVHlwZSAgICAgICAgICAg
ICA9IFZLX1NUUlVDVFVSRV9UWVBFX1BJUEVMSU5FX0NPTE9SX0JMRU5EX1NUQVRFX0NSRUFURV9J
TkZPOworICAgIGJsZW5kU3RhdGUucE5leHQgICAgICAgICAgICAgPSAwOworICAgIGJsZW5kU3Rh
dGUuZmxhZ3MgICAgICAgICAgICAgPSAwOworICAgIGJsZW5kU3RhdGUubG9naWNPcEVuYWJsZSAg
ICAgPSBWS19GQUxTRTsKKyAgICBibGVuZFN0YXRlLmxvZ2ljT3AgICAgICAgICAgID0gVktfTE9H
SUNfT1BfQ0xFQVI7CisgICAgYmxlbmRTdGF0ZS5hdHRhY2htZW50Q291bnQgICA9IDE7CisgICAg
YmxlbmRTdGF0ZS5wQXR0YWNobWVudHMgICAgICA9ICZibGVuZEF0dGFjaG1lbnRTdGF0ZTsKKyAg
ICBibGVuZFN0YXRlLmJsZW5kQ29uc3RhbnRzWzBdID0gMC4wZjsKKyAgICBibGVuZFN0YXRlLmJs
ZW5kQ29uc3RhbnRzWzFdID0gMC4wZjsKKyAgICBibGVuZFN0YXRlLmJsZW5kQ29uc3RhbnRzWzJd
ID0gMC4wZjsKKyAgICBibGVuZFN0YXRlLmJsZW5kQ29uc3RhbnRzWzNdID0gMC4wZjsKKworICAg
IC8vIFRPRE8oam1hZGlsbCk6IER5bmFtaWMgc3RhdGUuCisgICAgdms6OlJlbmRlclBhc3MgKnJl
bmRlclBhc3MgPSBudWxscHRyOworICAgIEFOR0xFX1RSWV9SRVNVTFQodmtGQk8tPmdldFJlbmRl
clBhc3MoZGV2aWNlKSwgcmVuZGVyUGFzcyk7CisgICAgQVNTRVJUKHJlbmRlclBhc3MgJiYgcmVu
ZGVyUGFzcy0+dmFsaWQoKSk7CisKKyAgICB2azo6UGlwZWxpbmVMYXlvdXQgKnBpcGVsaW5lTGF5
b3V0ID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUllfUkVTVUxUKHByb2dyYW1Way0+Z2V0UGlwZWxp
bmVMYXlvdXQoZGV2aWNlKSwgcGlwZWxpbmVMYXlvdXQpOworICAgIEFTU0VSVChwaXBlbGluZUxh
eW91dCAmJiBwaXBlbGluZUxheW91dC0+dmFsaWQoKSk7CisKKyAgICBWa0dyYXBoaWNzUGlwZWxp
bmVDcmVhdGVJbmZvIHBpcGVsaW5lSW5mbzsKKyAgICBwaXBlbGluZUluZm8uc1R5cGUgICAgICAg
ICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX0dSQVBISUNTX1BJUEVMSU5FX0NSRUFURV9JTkZP
OworICAgIHBpcGVsaW5lSW5mby5wTmV4dCAgICAgICAgICAgICAgID0gbnVsbHB0cjsKKyAgICBw
aXBlbGluZUluZm8uZmxhZ3MgICAgICAgICAgICAgICA9IDA7CisgICAgcGlwZWxpbmVJbmZvLnN0
YWdlQ291bnQgICAgICAgICAgPSAyOworICAgIHBpcGVsaW5lSW5mby5wU3RhZ2VzICAgICAgICAg
ICAgID0gc2hhZGVyU3RhZ2VzOworICAgIHBpcGVsaW5lSW5mby5wVmVydGV4SW5wdXRTdGF0ZSAg
ID0gJnZlcnRleElucHV0U3RhdGU7CisgICAgcGlwZWxpbmVJbmZvLnBJbnB1dEFzc2VtYmx5U3Rh
dGUgPSAmaW5wdXRBc3NlbWJseVN0YXRlOworICAgIHBpcGVsaW5lSW5mby5wVGVzc2VsbGF0aW9u
U3RhdGUgID0gbnVsbHB0cjsKKyAgICBwaXBlbGluZUluZm8ucFZpZXdwb3J0U3RhdGUgICAgICA9
ICZ2aWV3cG9ydFN0YXRlOworICAgIHBpcGVsaW5lSW5mby5wUmFzdGVyaXphdGlvblN0YXRlID0g
JnJhc3RlclN0YXRlOworICAgIHBpcGVsaW5lSW5mby5wTXVsdGlzYW1wbGVTdGF0ZSAgID0gJm11
bHRpc2FtcGxlU3RhdGU7CisgICAgcGlwZWxpbmVJbmZvLnBEZXB0aFN0ZW5jaWxTdGF0ZSAgPSBu
dWxscHRyOworICAgIHBpcGVsaW5lSW5mby5wQ29sb3JCbGVuZFN0YXRlICAgID0gJmJsZW5kU3Rh
dGU7CisgICAgcGlwZWxpbmVJbmZvLnBEeW5hbWljU3RhdGUgICAgICAgPSBudWxscHRyOworICAg
IHBpcGVsaW5lSW5mby5sYXlvdXQgICAgICAgICAgICAgID0gcGlwZWxpbmVMYXlvdXQtPmdldEhh
bmRsZSgpOworICAgIHBpcGVsaW5lSW5mby5yZW5kZXJQYXNzICAgICAgICAgID0gcmVuZGVyUGFz
cy0+Z2V0SGFuZGxlKCk7CisgICAgcGlwZWxpbmVJbmZvLnN1YnBhc3MgICAgICAgICAgICAgPSAw
OworICAgIHBpcGVsaW5lSW5mby5iYXNlUGlwZWxpbmVIYW5kbGUgID0gVktfTlVMTF9IQU5ETEU7
CisgICAgcGlwZWxpbmVJbmZvLmJhc2VQaXBlbGluZUluZGV4ICAgPSAwOworCisgICAgdms6OlBp
cGVsaW5lIG5ld1BpcGVsaW5lOworICAgIEFOR0xFX1RSWShuZXdQaXBlbGluZS5pbml0R3JhcGhp
Y3MoZGV2aWNlLCBwaXBlbGluZUluZm8pKTsKKworICAgIG1DdXJyZW50UGlwZWxpbmUucmV0YWlu
KGRldmljZSwgc3RkOjptb3ZlKG5ld1BpcGVsaW5lKSk7CisKKyAgICByZXR1cm4gZ2w6Ok5vRXJy
b3IoKTsKK30KKwogZ2w6OkVycm9yIENvbnRleHRWazo6ZHJhd0FycmF5cyhHTGVudW0gbW9kZSwg
R0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIGlmIChtb2RlICE9
IG1DdXJyZW50RHJhd01vZGUpCisgICAgeworICAgICAgICBpbnZhbGlkYXRlQ3VycmVudFBpcGVs
aW5lKCk7CisgICAgICAgIG1DdXJyZW50RHJhd01vZGUgPSBtb2RlOworICAgIH0KKworICAgIGlm
ICghbUN1cnJlbnRQaXBlbGluZS52YWxpZCgpKQorICAgIHsKKyAgICAgICAgQU5HTEVfVFJZKGlu
aXRQaXBlbGluZSgpKTsKKyAgICAgICAgQVNTRVJUKG1DdXJyZW50UGlwZWxpbmUudmFsaWQoKSk7
CisgICAgfQorCisgICAgVmtEZXZpY2UgZGV2aWNlICAgICAgID0gbVJlbmRlcmVyLT5nZXREZXZp
Y2UoKTsKKyAgICBjb25zdCBhdXRvICZzdGF0ZSAgICAgPSBtU3RhdGUuZ2V0U3RhdGUoKTsKKyAg
ICBjb25zdCBhdXRvICZwcm9ncmFtR0wgPSBzdGF0ZS5nZXRQcm9ncmFtKCk7CisgICAgY29uc3Qg
YXV0byAmdmFvICAgICAgID0gc3RhdGUuZ2V0VmVydGV4QXJyYXkoKTsKKyAgICBjb25zdCBhdXRv
ICZhdHRyaWJzICAgPSB2YW8tPmdldFZlcnRleEF0dHJpYnV0ZXMoKTsKKyAgICBjb25zdCBhdXRv
ICZiaW5kaW5ncyAgPSB2YW8tPmdldFZlcnRleEJpbmRpbmdzKCk7CisgICAgY29uc3QgYXV0byAq
ZHJhd0ZCTyAgID0gc3RhdGUuZ2V0RHJhd0ZyYW1lYnVmZmVyKCk7CisgICAgRnJhbWVidWZmZXJW
ayAqdmtGQk8gID0gR2V0SW1wbEFzPEZyYW1lYnVmZmVyVms+KGRyYXdGQk8pOworICAgIFNlcmlh
bCBxdWV1ZVNlcmlhbCAgICA9IG1SZW5kZXJlci0+Z2V0Q3VycmVudFF1ZXVlU2VyaWFsKCk7CisK
KyAgICAvLyBQcm9jZXNzIHZlcnRleCBhdHRyaWJ1dGVzCisgICAgLy8gVE9ETyhqbWFkaWxsKTog
Q2FjaGluZyB3aXRoIGRpcnR5IGJpdHMuCisgICAgc3RkOjp2ZWN0b3I8VmtCdWZmZXI+IHZlcnRl
eEhhbmRsZXM7CisgICAgc3RkOjp2ZWN0b3I8VmtEZXZpY2VTaXplPiB2ZXJ0ZXhPZmZzZXRzOwor
CisgICAgZm9yIChhdXRvIGF0dHJpYkluZGV4IDogYW5nbGU6Okl0ZXJhdGVCaXRTZXQocHJvZ3Jh
bUdMLT5nZXRBY3RpdmVBdHRyaWJMb2NhdGlvbnNNYXNrKCkpKQorICAgIHsKKyAgICAgICAgY29u
c3QgYXV0byAmYXR0cmliICA9IGF0dHJpYnNbYXR0cmliSW5kZXhdOworICAgICAgICBjb25zdCBh
dXRvICZiaW5kaW5nID0gYmluZGluZ3NbYXR0cmliLmJpbmRpbmdJbmRleF07CisgICAgICAgIGlm
IChhdHRyaWIuZW5hYmxlZCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxs
KTogT2Zmc2V0IGhhbmRsaW5nLgorICAgICAgICAgICAgZ2w6OkJ1ZmZlciAqYnVmZmVyR0wgPSBi
aW5kaW5nLmJ1ZmZlci5nZXQoKTsKKyAgICAgICAgICAgIEFTU0VSVChidWZmZXJHTCk7CisgICAg
ICAgICAgICBCdWZmZXJWayAqYnVmZmVyVmsgPSBHZXRJbXBsQXM8QnVmZmVyVms+KGJ1ZmZlckdM
KTsKKyAgICAgICAgICAgIHZlcnRleEhhbmRsZXMucHVzaF9iYWNrKGJ1ZmZlclZrLT5nZXRWa0J1
ZmZlcigpLmdldEhhbmRsZSgpKTsKKyAgICAgICAgICAgIHZlcnRleE9mZnNldHMucHVzaF9iYWNr
KDApOworCisgICAgICAgICAgICBidWZmZXJWay0+c2V0UXVldWVTZXJpYWwocXVldWVTZXJpYWwp
OworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNv
bW1hbmRCdWZmZXIgPSBtUmVuZGVyZXItPmdldENvbW1hbmRCdWZmZXIoKTsKKyAgICBBTkdMRV9U
UlkodmtGQk8tPmJlZ2luUmVuZGVyUGFzcyhkZXZpY2UsIGNvbW1hbmRCdWZmZXIsIHF1ZXVlU2Vy
aWFsLCBzdGF0ZSkpOworCisgICAgY29tbWFuZEJ1ZmZlci0+YmluZFBpcGVsaW5lKFZLX1BJUEVM
SU5FX0JJTkRfUE9JTlRfR1JBUEhJQ1MsIG1DdXJyZW50UGlwZWxpbmUpOworICAgIGNvbW1hbmRC
dWZmZXItPmJpbmRWZXJ0ZXhCdWZmZXJzKDAsIHZlcnRleEhhbmRsZXMsIHZlcnRleE9mZnNldHMp
OworICAgIGNvbW1hbmRCdWZmZXItPmRyYXcoY291bnQsIDEsIGZpcnN0LCAwKTsKKyAgICBjb21t
YW5kQnVmZmVyLT5lbmRSZW5kZXJQYXNzKCk7CisgICAgQU5HTEVfVFJZKGNvbW1hbmRCdWZmZXIt
PmVuZCgpKTsKKworICAgIEFOR0xFX1RSWShzdWJtaXRDb21tYW5kcygqY29tbWFuZEJ1ZmZlcikp
OworCisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7CiB9CiAKIGdsOjpFcnJvciBDb250ZXh0Vms6
OmRyYXdBcnJheXNJbnN0YW5jZWQoR0xlbnVtIG1vZGUsCkBAIC0xMDIsOCArMzY2LDM3IEBAIGds
OjpFcnJvciBDb250ZXh0Vms6OmRyYXdSYW5nZUVsZW1lbnRzKEdMZW51bSBtb2RlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICppbmRpY2VzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkluZGV4UmFu
Z2UgJmluZGV4UmFuZ2UpCiB7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK1ZrRGV2
aWNlIENvbnRleHRWazo6Z2V0RGV2aWNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVJlbmRlcmVy
LT5nZXREZXZpY2UoKTsKK30KKwordms6OkNvbW1hbmRCdWZmZXIgKkNvbnRleHRWazo6Z2V0Q29t
bWFuZEJ1ZmZlcigpCit7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0Q29tbWFuZEJ1ZmZlcigp
OworfQorCit2azo6RXJyb3IgQ29udGV4dFZrOjpzdWJtaXRDb21tYW5kcyhjb25zdCB2azo6Q29t
bWFuZEJ1ZmZlciAmY29tbWFuZEJ1ZmZlcikKK3sKKyAgICBzZXRRdWV1ZVNlcmlhbChtUmVuZGVy
ZXItPmdldEN1cnJlbnRRdWV1ZVNlcmlhbCgpKTsKKyAgICBBTkdMRV9UUlkobVJlbmRlcmVyLT5z
dWJtaXRDb21tYW5kQnVmZmVyKGNvbW1hbmRCdWZmZXIpKTsKKyAgICByZXR1cm4gdms6Ok5vRXJy
b3IoKTsKK30KKworZ2w6OkVycm9yIENvbnRleHRWazo6ZHJhd0FycmF5c0luZGlyZWN0KEdMZW51
bSBtb2RlLCBjb25zdCBHTHZvaWQgKmluZGlyZWN0KQorewogICAgIFVOSU1QTEVNRU5URUQoKTsK
LSAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICByZXR1cm4g
Z2w6OkludGVybmFsRXJyb3IoKSA8PCAiRHJhd0FycmF5c0luZGlyZWN0IGhhc24ndCBiZWVuIGlt
cGxlbWVudGVkIGZvciB2dWxrYW4gYmFja2VuZC4iOworfQorCitnbDo6RXJyb3IgQ29udGV4dFZr
OjpkcmF3RWxlbWVudHNJbmRpcmVjdChHTGVudW0gbW9kZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdM
dm9pZCAqaW5kaXJlY3QpCit7CisgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJldHVybiBnbDo6
SW50ZXJuYWxFcnJvcigpCisgICAgICAgICAgIDw8ICJEcmF3RWxlbWVudHNJbmRpcmVjdCBoYXNu
J3QgYmVlbiBpbXBsZW1lbnRlZCBmb3IgdnVsa2FuIGJhY2tlbmQuIjsKIH0KIAogR0xlbnVtIENv
bnRleHRWazo6Z2V0UmVzZXRTdGF0dXMoKQpAQCAtMTIwLDggKzQxMyw3IEBAIHN0ZDo6c3RyaW5n
IENvbnRleHRWazo6Z2V0VmVuZG9yU3RyaW5nKCkgY29uc3QKIAogc3RkOjpzdHJpbmcgQ29udGV4
dFZrOjpnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICBVTklNUExFTUVOVEVE
KCk7Ci0gICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7CisgICAgcmV0dXJuIG1SZW5kZXJlci0+Z2V0
UmVuZGVyZXJEZXNjcmlwdGlvbigpOwogfQogCiB2b2lkIENvbnRleHRWazo6aW5zZXJ0RXZlbnRN
YXJrZXIoR0xzaXplaSBsZW5ndGgsIGNvbnN0IGNoYXIgKm1hcmtlcikKQEAgLTEzOSw5ICs0MzEs
MTMgQEAgdm9pZCBDb250ZXh0Vms6OnBvcEdyb3VwTWFya2VyKCkKICAgICBVTklNUExFTUVOVEVE
KCk7CiB9CiAKLXZvaWQgQ29udGV4dFZrOjpzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRlICZzdGF0
ZSwgY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykKK3ZvaWQgQ29udGV4dFZr
OjpzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykKIHsKLSAg
ICBVTklNUExFTUVOVEVEKCk7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogVnVsa2FuIGRpcnR5IGJp
dHMuCisgICAgaWYgKGRpcnR5Qml0cy5hbnkoKSkKKyAgICB7CisgICAgICAgIGludmFsaWRhdGVD
dXJyZW50UGlwZWxpbmUoKTsKKyAgICB9CiB9CiAKIEdMaW50IENvbnRleHRWazo6Z2V0R1BVRGlz
am9pbnQoKQpAQCAtMTU2LDkgKzQ1Miw4IEBAIEdMaW50NjQgQ29udGV4dFZrOjpnZXRUaW1lc3Rh
bXAoKQogICAgIHJldHVybiBHTGludDY0KCk7CiB9CiAKLXZvaWQgQ29udGV4dFZrOjpvbk1ha2VD
dXJyZW50KGNvbnN0IGdsOjpDb250ZXh0U3RhdGUgJmRhdGEpCit2b2lkIENvbnRleHRWazo6b25N
YWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dFN0YXRlICYgLypkYXRhKi8pCiB7Ci0gICAgVU5J
TVBMRU1FTlRFRCgpOwogfQogCiBjb25zdCBnbDo6Q2FwcyAmQ29udGV4dFZrOjpnZXROYXRpdmVD
YXBzKCkgY29uc3QKQEAgLTE5OCw3ICs0OTMsNyBAQCBQcm9ncmFtSW1wbCAqQ29udGV4dFZrOjpj
cmVhdGVQcm9ncmFtKGNvbnN0IGdsOjpQcm9ncmFtU3RhdGUgJnN0YXRlKQogCiBGcmFtZWJ1ZmZl
ckltcGwgKkNvbnRleHRWazo6Y3JlYXRlRnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVy
U3RhdGUgJnN0YXRlKQogewotICAgIHJldHVybiBuZXcgRnJhbWVidWZmZXJWayhzdGF0ZSk7Cisg
ICAgcmV0dXJuIEZyYW1lYnVmZmVyVms6OkNyZWF0ZVVzZXJGQk8oc3RhdGUpOwogfQogCiBUZXh0
dXJlSW1wbCAqQ29udGV4dFZrOjpjcmVhdGVUZXh0dXJlKGNvbnN0IGdsOjpUZXh0dXJlU3RhdGUg
JnN0YXRlKQpAQCAtMjExLDkgKzUwNiw5IEBAIFJlbmRlcmJ1ZmZlckltcGwgKkNvbnRleHRWazo6
Y3JlYXRlUmVuZGVyYnVmZmVyKCkKICAgICByZXR1cm4gbmV3IFJlbmRlcmJ1ZmZlclZrKCk7CiB9
CiAKLUJ1ZmZlckltcGwgKkNvbnRleHRWazo6Y3JlYXRlQnVmZmVyKCkKK0J1ZmZlckltcGwgKkNv
bnRleHRWazo6Y3JlYXRlQnVmZmVyKGNvbnN0IGdsOjpCdWZmZXJTdGF0ZSAmc3RhdGUpCiB7Ci0g
ICAgcmV0dXJuIG5ldyBCdWZmZXJWaygpOworICAgIHJldHVybiBuZXcgQnVmZmVyVmsoc3RhdGUp
OwogfQogCiBWZXJ0ZXhBcnJheUltcGwgKkNvbnRleHRWazo6Y3JlYXRlVmVydGV4QXJyYXkoY29u
c3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJnN0YXRlKQpAQCAtMjUxLDQgKzU0NiwxNiBAQCBzdGQ6
OnZlY3RvcjxQYXRoSW1wbCAqPiBDb250ZXh0Vms6OmNyZWF0ZVBhdGhzKEdMc2l6ZWkpCiAgICAg
cmV0dXJuIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+KCk7CiB9CiAKKy8vIFRPRE8oam1hZGlsbCk6
IFVzZSBwaXBlbGluZSBjYWNoZS4KK3ZvaWQgQ29udGV4dFZrOjppbnZhbGlkYXRlQ3VycmVudFBp
cGVsaW5lKCkKK3sKKyAgICBtUmVuZGVyZXItPmVucXVldWVHYXJiYWdlT3JEZWxldGVOb3coKnRo
aXMsIG1DdXJyZW50UGlwZWxpbmUpOworfQorCitnbDo6RXJyb3IgQ29udGV4dFZrOjpkaXNwYXRj
aENvbXB1dGUoR0x1aW50IG51bUdyb3Vwc1gsIEdMdWludCBudW1Hcm91cHNZLCBHTHVpbnQgbnVt
R3JvdXBzWikKK3sKKyAgICBVTklNUExFTUVOVEVEKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9D
b250ZXh0VmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vQ29udGV4dFZrLmgKaW5kZXggNjFiNGY1YjMwY2IuLjljNGZjZDc1MGIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL0NvbnRleHRWay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmgKQEAgLTEwLDEzICsxMCwxNiBAQAogI2lmbmRl
ZiBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fQ09OVEVYVFZLX0hfCiAjZGVmaW5lIExJQkFOR0xF
X1JFTkRFUkVSX1ZVTEtBTl9DT05URVhUVktfSF8KIAorI2luY2x1ZGUgPHZ1bGthbi92dWxrYW4u
aD4KKwogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0NvbnRleHRJbXBsLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3JlbmRlcmVydmtfdXRpbHMuaCIKIAogbmFtZXNw
YWNlIHJ4CiB7CiBjbGFzcyBSZW5kZXJlclZrOwogCi1jbGFzcyBDb250ZXh0VmsgOiBwdWJsaWMg
Q29udGV4dEltcGwKK2NsYXNzIENvbnRleHRWayA6IHB1YmxpYyBDb250ZXh0SW1wbCwgcHVibGlj
IFJlc291cmNlVmsKIHsKICAgcHVibGljOgogICAgIENvbnRleHRWayhjb25zdCBnbDo6Q29udGV4
dFN0YXRlICZzdGF0ZSwgUmVuZGVyZXJWayAqcmVuZGVyZXIpOwpAQCAtNTMsNiArNTYsOCBAQCBj
bGFzcyBDb250ZXh0VmsgOiBwdWJsaWMgQ29udGV4dEltcGwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkluZGV4UmFuZ2UgJmluZGV4UmFuZ2UpIG92ZXJyaWRlOworICAgIGdsOjpFcnJv
ciBkcmF3QXJyYXlzSW5kaXJlY3QoR0xlbnVtIG1vZGUsIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3Qp
IG92ZXJyaWRlOworICAgIGdsOjpFcnJvciBkcmF3RWxlbWVudHNJbmRpcmVjdChHTGVudW0gbW9k
ZSwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpIG92ZXJyaWRlOwogCiAgICAg
Ly8gRGV2aWNlIGxvc3MKICAgICBHTGVudW0gZ2V0UmVzZXRTdGF0dXMoKSBvdmVycmlkZTsKQEAg
LTY3LDcgKzcyLDcgQEAgY2xhc3MgQ29udGV4dFZrIDogcHVibGljIENvbnRleHRJbXBsCiAgICAg
dm9pZCBwb3BHcm91cE1hcmtlcigpIG92ZXJyaWRlOwogCiAgICAgLy8gU3RhdGUgc3luYyB3aXRo
IGRpcnR5IGJpdHMuCi0gICAgdm9pZCBzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRlICZzdGF0ZSwg
Y29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzeW5jU3RhdGUoY29uc3QgZ2w6OlN0YXRlOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3ZlcnJp
ZGU7CiAKICAgICAvLyBEaXNqb2ludCB0aW1lciBxdWVyaWVzCiAgICAgR0xpbnQgZ2V0R1BVRGlz
am9pbnQoKSBvdmVycmlkZTsKQEAgLTk3LDcgKzEwMiw3IEBAIGNsYXNzIENvbnRleHRWayA6IHB1
YmxpYyBDb250ZXh0SW1wbAogICAgIFJlbmRlcmJ1ZmZlckltcGwgKmNyZWF0ZVJlbmRlcmJ1ZmZl
cigpIG92ZXJyaWRlOwogCiAgICAgLy8gQnVmZmVyIGNyZWF0aW9uCi0gICAgQnVmZmVySW1wbCAq
Y3JlYXRlQnVmZmVyKCkgb3ZlcnJpZGU7CisgICAgQnVmZmVySW1wbCAqY3JlYXRlQnVmZmVyKGNv
bnN0IGdsOjpCdWZmZXJTdGF0ZSAmc3RhdGUpIG92ZXJyaWRlOwogCiAgICAgLy8gVmVydGV4IEFy
cmF5IGNyZWF0aW9uCiAgICAgVmVydGV4QXJyYXlJbXBsICpjcmVhdGVWZXJ0ZXhBcnJheShjb25z
dCBnbDo6VmVydGV4QXJyYXlTdGF0ZSAmc3RhdGUpIG92ZXJyaWRlOwpAQCAtMTE3LDggKzEyMiwy
MyBAQCBjbGFzcyBDb250ZXh0VmsgOiBwdWJsaWMgQ29udGV4dEltcGwKICAgICAvLyBQYXRoIG9i
amVjdCBjcmVhdGlvbgogICAgIHN0ZDo6dmVjdG9yPFBhdGhJbXBsICo+IGNyZWF0ZVBhdGhzKEdM
c2l6ZWkpIG92ZXJyaWRlOwogCisgICAgVmtEZXZpY2UgZ2V0RGV2aWNlKCkgY29uc3Q7CisgICAg
dms6OkNvbW1hbmRCdWZmZXIgKmdldENvbW1hbmRCdWZmZXIoKTsKKyAgICB2azo6RXJyb3Igc3Vi
bWl0Q29tbWFuZHMoY29uc3Qgdms6OkNvbW1hbmRCdWZmZXIgJmNvbW1hbmRCdWZmZXIpOworCisg
ICAgUmVuZGVyZXJWayAqZ2V0UmVuZGVyZXIoKSB7IHJldHVybiBtUmVuZGVyZXI7IH0KKworICAg
IC8vIFRPRE8oam1hZGlsbCk6IFVzZSBwaXBlbGluZSBjYWNoZS4KKyAgICB2b2lkIGludmFsaWRh
dGVDdXJyZW50UGlwZWxpbmUoKTsKKworICAgIGdsOjpFcnJvciBkaXNwYXRjaENvbXB1dGUoR0x1
aW50IG51bUdyb3Vwc1gsIEdMdWludCBudW1Hcm91cHNZLCBHTHVpbnQgbnVtR3JvdXBzWikgb3Zl
cnJpZGU7CisKICAgcHJpdmF0ZToKKyAgICBnbDo6RXJyb3IgaW5pdFBpcGVsaW5lKCk7CisKICAg
ICBSZW5kZXJlclZrICptUmVuZGVyZXI7CisgICAgdms6OlBpcGVsaW5lIG1DdXJyZW50UGlwZWxp
bmU7CisgICAgR0xlbnVtIG1DdXJyZW50RHJhd01vZGU7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2Ug
cngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vRGlzcGxheVZrLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRGlzcGxheVZrLmNwcAppbmRleCA5NWU4ZWE2NTMwNy4u
M2JkMDgzMjMwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vRGlzcGxheVZrLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3BsYXlWay5jcHAKQEAgLTEw
LDEyICsxMCwxNiBAQAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5
VmsuaCIKIAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0Nv
bnRleHQuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9EaXNwbGF5LmgiCiAjaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL0NvbnRleHRWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9SZW5kZXJlclZrLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL1N1cmZhY2VWay5oIgogCiBuYW1lc3BhY2UgcngKIHsKIAotRGlzcGxheVZrOjpEaXNwbGF5
VmsoKSA6IERpc3BsYXlJbXBsKCksIG1SZW5kZXJlcihudWxscHRyKQorRGlzcGxheVZrOjpEaXNw
bGF5VmsoY29uc3QgZWdsOjpEaXNwbGF5U3RhdGUgJnN0YXRlKSA6IERpc3BsYXlJbXBsKHN0YXRl
KSwgbVJlbmRlcmVyKG51bGxwdHIpCiB7CiB9CiAKQEAgLTI1LDMzICsyOSw3MiBAQCBEaXNwbGF5
Vms6On5EaXNwbGF5VmsoKQogCiBlZ2w6OkVycm9yIERpc3BsYXlWazo6aW5pdGlhbGl6ZShlZ2w6
OkRpc3BsYXkgKmRpc3BsYXkpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBl
Z2w6OkVycm9yKEVHTF9CQURfQUNDRVNTKTsKKyAgICBBU1NFUlQoIW1SZW5kZXJlciAmJiBkaXNw
bGF5ICE9IG51bGxwdHIpOworICAgIG1SZW5kZXJlci5yZXNldChuZXcgUmVuZGVyZXJWaygpKTsK
KyAgICByZXR1cm4gbVJlbmRlcmVyLT5pbml0aWFsaXplKGRpc3BsYXktPmdldEF0dHJpYnV0ZU1h
cCgpKS50b0VHTChFR0xfTk9UX0lOSVRJQUxJWkVEKTsKIH0KIAogdm9pZCBEaXNwbGF5Vms6OnRl
cm1pbmF0ZSgpCiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOworICAgIG1SZW5kZXJlci5yZXNldChu
dWxscHRyKTsKIH0KIAotZWdsOjpFcnJvciBEaXNwbGF5Vms6Om1ha2VDdXJyZW50KGVnbDo6U3Vy
ZmFjZSAqZHJhd1N1cmZhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWds
OjpTdXJmYWNlICpyZWFkU3VyZmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnbDo6Q29udGV4dCAqY29udGV4dCkKK2VnbDo6RXJyb3IgRGlzcGxheVZrOjptYWtlQ3VycmVu
dChlZ2w6OlN1cmZhY2UgKiAvKmRyYXdTdXJmYWNlKi8sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWdsOjpTdXJmYWNlICogLypyZWFkU3VyZmFjZSovLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsOjpDb250ZXh0ICogLypjb250ZXh0Ki8pCiB7Ci0gICAg
VU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQUNDRVNTKTsK
KyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKIGVnbDo6Q29uZmlnU2V0
IERpc3BsYXlWazo6Z2VuZXJhdGVDb25maWdzKCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0g
ICAgcmV0dXJuIGVnbDo6Q29uZmlnU2V0KCk7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogTXVsdGlw
bGUgY29uZmlncywgcGJ1ZmZlcnMsIGFuZCBwcm9wZXIgY2hlY2tpbmcgb2YgY29uZmlnIGF0dHJp
YnMuCisgICAgZWdsOjpDb25maWcgc2luZ2xldG9uOworICAgIHNpbmdsZXRvbi5yZW5kZXJUYXJn
ZXRGb3JtYXQgICAgPSBHTF9SR0JBODsKKyAgICBzaW5nbGV0b24uZGVwdGhTdGVuY2lsRm9ybWF0
ICAgID0gR0xfTk9ORTsKKyAgICBzaW5nbGV0b24uYnVmZmVyU2l6ZSAgICAgICAgICAgID0gMzI7
CisgICAgc2luZ2xldG9uLnJlZFNpemUgICAgICAgICAgICAgICA9IDg7CisgICAgc2luZ2xldG9u
LmdyZWVuU2l6ZSAgICAgICAgICAgICA9IDg7CisgICAgc2luZ2xldG9uLmJsdWVTaXplICAgICAg
ICAgICAgICA9IDg7CisgICAgc2luZ2xldG9uLmFscGhhU2l6ZSAgICAgICAgICAgICA9IDg7Cisg
ICAgc2luZ2xldG9uLmFscGhhTWFza1NpemUgICAgICAgICA9IDA7CisgICAgc2luZ2xldG9uLmJp
bmRUb1RleHR1cmVSR0IgICAgICA9IEVHTF9GQUxTRTsKKyAgICBzaW5nbGV0b24uYmluZFRvVGV4
dHVyZVJHQkEgICAgID0gRUdMX0ZBTFNFOworICAgIHNpbmdsZXRvbi5jb2xvckJ1ZmZlclR5cGUg
ICAgICAgPSBFR0xfUkdCX0JVRkZFUjsKKyAgICBzaW5nbGV0b24uY29uZmlnQ2F2ZWF0ICAgICAg
ICAgID0gRUdMX05PTkU7CisgICAgc2luZ2xldG9uLmNvbmZvcm1hbnQgICAgICAgICAgICA9IDA7
CisgICAgc2luZ2xldG9uLmRlcHRoU2l6ZSAgICAgICAgICAgICA9IDA7CisgICAgc2luZ2xldG9u
LnN0ZW5jaWxTaXplICAgICAgICAgICA9IDA7CisgICAgc2luZ2xldG9uLmxldmVsICAgICAgICAg
ICAgICAgICA9IDA7CisgICAgc2luZ2xldG9uLm1hdGNoTmF0aXZlUGl4bWFwICAgICA9IEVHTF9O
T05FOworICAgIHNpbmdsZXRvbi5tYXhQQnVmZmVyV2lkdGggICAgICAgPSAwOworICAgIHNpbmds
ZXRvbi5tYXhQQnVmZmVySGVpZ2h0ICAgICAgPSAwOworICAgIHNpbmdsZXRvbi5tYXhQQnVmZmVy
UGl4ZWxzICAgICAgPSAwOworICAgIHNpbmdsZXRvbi5tYXhTd2FwSW50ZXJ2YWwgICAgICAgPSAx
OworICAgIHNpbmdsZXRvbi5taW5Td2FwSW50ZXJ2YWwgICAgICAgPSAxOworICAgIHNpbmdsZXRv
bi5uYXRpdmVSZW5kZXJhYmxlICAgICAgPSBFR0xfVFJVRTsKKyAgICBzaW5nbGV0b24ubmF0aXZl
VmlzdWFsSUQgICAgICAgID0gMDsKKyAgICBzaW5nbGV0b24ubmF0aXZlVmlzdWFsVHlwZSAgICAg
ID0gRUdMX05PTkU7CisgICAgc2luZ2xldG9uLnJlbmRlcmFibGVUeXBlICAgICAgICA9IEVHTF9P
UEVOR0xfRVMyX0JJVDsKKyAgICBzaW5nbGV0b24uc2FtcGxlQnVmZmVycyAgICAgICAgID0gMDsK
KyAgICBzaW5nbGV0b24uc2FtcGxlcyAgICAgICAgICAgICAgID0gMDsKKyAgICBzaW5nbGV0b24u
c3VyZmFjZVR5cGUgICAgICAgICAgID0gRUdMX1dJTkRPV19CSVQ7CisgICAgc2luZ2xldG9uLm9w
dGltYWxPcmllbnRhdGlvbiAgICA9IDA7CisgICAgc2luZ2xldG9uLnRyYW5zcGFyZW50VHlwZSAg
ICAgICA9IEVHTF9OT05FOworICAgIHNpbmdsZXRvbi50cmFuc3BhcmVudFJlZFZhbHVlICAgPSAw
OworICAgIHNpbmdsZXRvbi50cmFuc3BhcmVudEdyZWVuVmFsdWUgPSAwOworICAgIHNpbmdsZXRv
bi50cmFuc3BhcmVudEJsdWVWYWx1ZSAgPSAwOworICAgIHNpbmdsZXRvbi5jb2xvckNvbXBvbmVu
dFR5cGUgICAgPSBFR0xfQ09MT1JfQ09NUE9ORU5UX1RZUEVfRklYRURfRVhUOworCisgICAgZWds
OjpDb25maWdTZXQgY29uZmlnU2V0OworICAgIGNvbmZpZ1NldC5hZGQoc2luZ2xldG9uKTsKKyAg
ICByZXR1cm4gY29uZmlnU2V0OwogfQogCiBib29sIERpc3BsYXlWazo6dGVzdERldmljZUxvc3Qo
KQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gYm9vbCgpOworICAgIC8vIFRP
RE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgaG93IHRvIGRvIGRldmljZSBsb3N0IGluIFZ1bGthbi4K
KyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGVnbDo6RXJyb3IgRGlzcGxheVZrOjpyZXN0b3JlTG9z
dERldmljZSgpCkBAIC02MiwyMCArMTA1LDI0IEBAIGVnbDo6RXJyb3IgRGlzcGxheVZrOjpyZXN0
b3JlTG9zdERldmljZSgpCiAKIGJvb2wgRGlzcGxheVZrOjppc1ZhbGlkTmF0aXZlV2luZG93KEVH
TE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93KSBjb25zdAogewotICAgIFVOSU1QTEVNRU5URUQoKTsK
LSAgICByZXR1cm4gYm9vbCgpOworICAgIC8vIFRPRE8oam1hZGlsbCk6IENyb3NzLXBsYXRmb3Jt
IHRoaXMuCisgICAgcmV0dXJuIChJc1dpbmRvdyh3aW5kb3cpID09IFRSVUUpOwogfQogCiBzdGQ6
OnN0cmluZyBEaXNwbGF5Vms6OmdldFZlbmRvclN0cmluZygpIGNvbnN0CiB7Ci0gICAgVU5JTVBM
RU1FTlRFRCgpOwotICAgIHJldHVybiBzdGQ6OnN0cmluZygpOworICAgIHN0ZDo6c3RyaW5nIHZl
bmRvclN0cmluZyA9ICJHb29nbGUgSW5jLiI7CisgICAgaWYgKG1SZW5kZXJlcikKKyAgICB7Cisg
ICAgICAgIHZlbmRvclN0cmluZyArPSAiICIgKyBtUmVuZGVyZXItPmdldFZlbmRvclN0cmluZygp
OworICAgIH0KKworICAgIHJldHVybiB2ZW5kb3JTdHJpbmc7CiB9CiAKIGVnbDo6RXJyb3IgRGlz
cGxheVZrOjpnZXREZXZpY2UoRGV2aWNlSW1wbCAqKmRldmljZSkKIHsKLSAgICBVTklNUExFTUVO
VEVEKCk7Ci0gICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOworICAgIHJldHVy
biBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKIH0KIAogZWdsOjpFcnJvciBEaXNwbGF5Vms6Ondh
aXRDbGllbnQoKSBjb25zdApAQCAtOTMsMjUgKzE0MCwyOSBAQCBlZ2w6OkVycm9yIERpc3BsYXlW
azo6d2FpdE5hdGl2ZShFR0xpbnQgZW5naW5lLAogfQogCiBTdXJmYWNlSW1wbCAqRGlzcGxheVZr
OjpjcmVhdGVXaW5kb3dTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25m
aWcgKmNvbmZpZ3VyYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykK
IHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFN1cmZhY2VJ
bXBsICo+KDApOworICAgIEVHTGludCB3aWR0aCAgPSBhdHRyaWJzLmdldEFzSW50KEVHTF9XSURU
SCwgMCk7CisgICAgRUdMaW50IGhlaWdodCA9IGF0dHJpYnMuZ2V0QXNJbnQoRUdMX0hFSUdIVCwg
MCk7CisKKyAgICByZXR1cm4gbmV3IFdpbmRvd1N1cmZhY2VWayhzdGF0ZSwgd2luZG93LCB3aWR0
aCwgaGVpZ2h0KTsKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlWazo6Y3JlYXRlUGJ1ZmZlclN1
cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNvbmZpZ3VyYXRp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PFN1cmZhY2VJbXBsICo+KDApOworICAgIEFTU0VSVChtUmVuZGVy
ZXIpOworCisgICAgRUdMaW50IHdpZHRoICA9IGF0dHJpYnMuZ2V0QXNJbnQoRUdMX1dJRFRILCAw
KTsKKyAgICBFR0xpbnQgaGVpZ2h0ID0gYXR0cmlicy5nZXRBc0ludChFR0xfSEVJR0hULCAwKTsK
KworICAgIHJldHVybiBuZXcgT2Zmc2NyZWVuU3VyZmFjZVZrKHN0YXRlLCB3aWR0aCwgaGVpZ2h0
KTsKIH0KIAogU3VyZmFjZUltcGwgKkRpc3BsYXlWazo6Y3JlYXRlUGJ1ZmZlckZyb21DbGllbnRC
dWZmZXIoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpDb25maWcgKmNv
bmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xlbnVtIGJ1ZnR5cGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xD
bGllbnRCdWZmZXIgY2xpZW50QnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMp
CiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwpAQCAtMTE5LDcgKzE3MCw2IEBAIFN1cmZhY2VJbXBs
ICpEaXNwbGF5Vms6OmNyZWF0ZVBidWZmZXJGcm9tQ2xpZW50QnVmZmVyKGNvbnN0IGVnbDo6U3Vy
ZmFjZVN0YXRlICZzCiB9CiAKIFN1cmZhY2VJbXBsICpEaXNwbGF5Vms6OmNyZWF0ZVBpeG1hcFN1
cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlUGl4
bWFwVHlwZSBuYXRpdmVQaXhtYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJzKQogewpAQCAtMTM3LDcg
KzE4Nyw3IEBAIEltYWdlSW1wbCAqRGlzcGxheVZrOjpjcmVhdGVJbWFnZShFR0xlbnVtIHRhcmdl
dCwKIAogQ29udGV4dEltcGwgKkRpc3BsYXlWazo6Y3JlYXRlQ29udGV4dChjb25zdCBnbDo6Q29u
dGV4dFN0YXRlICZzdGF0ZSkKIHsKLSAgICByZXR1cm4gbmV3IENvbnRleHRWayhzdGF0ZSwgbVJl
bmRlcmVyKTsKKyAgICByZXR1cm4gbmV3IENvbnRleHRWayhzdGF0ZSwgbVJlbmRlcmVyLmdldCgp
KTsKIH0KIAogU3RyZWFtUHJvZHVjZXJJbXBsICpEaXNwbGF5Vms6OmNyZWF0ZVN0cmVhbVByb2R1
Y2VyRDNEVGV4dHVyZU5WMTIoCkBAIC0xNTYsMTIgKzIwNiwxMSBAQCBnbDo6VmVyc2lvbiBEaXNw
bGF5Vms6OmdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0CiAKIHZvaWQgRGlzcGxheVZr
OjpnZW5lcmF0ZUV4dGVuc2lvbnMoZWdsOjpEaXNwbGF5RXh0ZW5zaW9ucyAqb3V0RXh0ZW5zaW9u
cykgY29uc3QKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKIHZvaWQgRGlzcGxheVZrOjpn
ZW5lcmF0ZUNhcHMoZWdsOjpDYXBzICpvdXRDYXBzKSBjb25zdAogewotICAgIFVOSU1QTEVNRU5U
RUQoKTsKKyAgICBvdXRDYXBzLT50ZXh0dXJlTlBPVCA9IHRydWU7CiB9CiAKIH0gIC8vIG5hbWVz
cGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9EaXNwbGF5VmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRGlzcGxheVZrLmgKaW5kZXggOTE4Mzg5ODBkYzMu
LjhkMzc2ZDNlODIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rpc3BsYXlWay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRGlzcGxheVZrLmgKQEAgLTE5LDcg
KzE5LDcgQEAgY2xhc3MgUmVuZGVyZXJWazsKIGNsYXNzIERpc3BsYXlWayA6IHB1YmxpYyBEaXNw
bGF5SW1wbAogewogICBwdWJsaWM6Ci0gICAgRGlzcGxheVZrKCk7CisgICAgRGlzcGxheVZrKGNv
bnN0IGVnbDo6RGlzcGxheVN0YXRlICZzdGF0ZSk7CiAgICAgfkRpc3BsYXlWaygpIG92ZXJyaWRl
OwogCiAgICAgZWdsOjpFcnJvciBpbml0aWFsaXplKGVnbDo6RGlzcGxheSAqZGlzcGxheSkgb3Zl
cnJpZGU7CkBAIC00NiwxOCArNDYsMTUgQEAgY2xhc3MgRGlzcGxheVZrIDogcHVibGljIERpc3Bs
YXlJbXBsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVnbDo6U3VyZmFjZSAqcmVhZFN1cmZh
Y2UpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgU3VyZmFjZUltcGwgKmNyZWF0ZVdpbmRvd1N1cmZh
Y2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWd1cmF0aW9uLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmli
dXRlTWFwICZhdHRyaWJzKSBvdmVycmlkZTsKICAgICBTdXJmYWNlSW1wbCAqY3JlYXRlUGJ1ZmZl
clN1cmZhY2UoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN0YXRlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqY29uZmlndXJhdGlvbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1
dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwogICAgIFN1cmZhY2VJbXBsICpjcmVhdGVQYnVmZmVy
RnJvbUNsaWVudEJ1ZmZlcihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3RhdGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmln
ICpjb25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xDbGllbnRCdWZmZXIgc2hhcmVIYW5kbGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gYnVmdHlwZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyIGNsaWVu
dEJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwogICAgIFN1cmZhY2VJ
bXBsICpjcmVhdGVQaXhtYXBTdXJmYWNlKGNvbnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAq
Y29uZmlndXJhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRp
dmVQaXhtYXBUeXBlIG5hdGl2ZVBpeG1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmlicykgb3ZlcnJpZGU7CiAKQEAg
LTcyLDExICs2OSwxMyBAQCBjbGFzcyBEaXNwbGF5VmsgOiBwdWJsaWMgRGlzcGxheUltcGwKICAg
ICAgICAgY29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJmF0dHJpYnMpIG92ZXJyaWRlOwogICAgIGds
OjpWZXJzaW9uIGdldE1heFN1cHBvcnRlZEVTVmVyc2lvbigpIGNvbnN0IG92ZXJyaWRlOwogCisg
ICAgUmVuZGVyZXJWayAqZ2V0UmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtUmVuZGVyZXIuZ2V0
KCk7IH0KKwogICBwcml2YXRlOgogICAgIHZvaWQgZ2VuZXJhdGVFeHRlbnNpb25zKGVnbDo6RGlz
cGxheUV4dGVuc2lvbnMgKm91dEV4dGVuc2lvbnMpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQg
Z2VuZXJhdGVDYXBzKGVnbDo6Q2FwcyAqb3V0Q2FwcykgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBS
ZW5kZXJlclZrICptUmVuZGVyZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlcmVyVms+IG1S
ZW5kZXJlcjsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GcmFtZWJ1ZmZlclZr
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vRnJhbWVidWZmZXJWay5jcHAKaW5kZXggZTM1MWRlYTkzNmMuLjE3NTI4MzdmNThlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL0ZyYW1lYnVmZmVyVmsuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRnJhbWVidWZmZXJWay5jcHAKQEAgLTksMTIgKzksODEg
QEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GcmFtZWJ1ZmZlclZrLmgi
CiAKKyNpbmNsdWRlIDxhcnJheT4KKyNpbmNsdWRlIDx2dWxrYW4vdnVsa2FuLmg+CisKICNpbmNs
dWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJpbWFnZV91dGlsL2ltYWdlZm9ybWF0cy5o
IgorI2luY2x1ZGUgImxpYkFOR0xFL2Zvcm1hdHV0aWxzLmgiCisjaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvcmVuZGVyZXJfdXRpbHMuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vQ29udGV4dFZrLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rp
c3BsYXlWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJUYXJn
ZXRWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1N1cmZhY2VWay5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9mb3JtYXR1dGlsc3ZrLmgiCiAKIG5hbWVzcGFj
ZSByeAogewogCi1GcmFtZWJ1ZmZlclZrOjpGcmFtZWJ1ZmZlclZrKGNvbnN0IGdsOjpGcmFtZWJ1
ZmZlclN0YXRlICZzdGF0ZSkgOiBGcmFtZWJ1ZmZlckltcGwoc3RhdGUpCituYW1lc3BhY2UKK3sK
KworZ2w6OkVycm9yT3JSZXN1bHQ8Y29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICo+IEdldFJlYWRB
dHRhY2htZW50SW5mbygKKyAgICBjb25zdCBnbDo6RnJhbWVidWZmZXJBdHRhY2htZW50ICpyZWFk
QXR0YWNobWVudCkKK3sKKyAgICBSZW5kZXJUYXJnZXRWayAqcmVuZGVyVGFyZ2V0ID0gbnVsbHB0
cjsKKyAgICBBTkdMRV9UUlkocmVhZEF0dGFjaG1lbnQtPmdldFJlbmRlclRhcmdldCgmcmVuZGVy
VGFyZ2V0KSk7CisKKyAgICBHTGVudW0gaW1wbEZvcm1hdCA9IHJlbmRlclRhcmdldC0+Zm9ybWF0
LT5mb3JtYXQoKS5mYm9JbXBsZW1lbnRhdGlvbkludGVybmFsRm9ybWF0OworICAgIHJldHVybiAm
Z2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhpbXBsRm9ybWF0KTsKK30KKworVmtTYW1wbGVDb3Vu
dEZsYWdCaXRzIENvbnZlcnRTYW1wbGVzKEdMaW50IHNhbXBsZUNvdW50KQoreworICAgIHN3aXRj
aCAoc2FtcGxlQ291bnQpCisgICAgeworICAgICAgICBjYXNlIDA6CisgICAgICAgIGNhc2UgMToK
KyAgICAgICAgICAgIHJldHVybiBWS19TQU1QTEVfQ09VTlRfMV9CSVQ7CisgICAgICAgIGNhc2Ug
MjoKKyAgICAgICAgICAgIHJldHVybiBWS19TQU1QTEVfQ09VTlRfMl9CSVQ7CisgICAgICAgIGNh
c2UgNDoKKyAgICAgICAgICAgIHJldHVybiBWS19TQU1QTEVfQ09VTlRfNF9CSVQ7CisgICAgICAg
IGNhc2UgODoKKyAgICAgICAgICAgIHJldHVybiBWS19TQU1QTEVfQ09VTlRfOF9CSVQ7CisgICAg
ICAgIGNhc2UgMTY6CisgICAgICAgICAgICByZXR1cm4gVktfU0FNUExFX0NPVU5UXzE2X0JJVDsK
KyAgICAgICAgY2FzZSAzMjoKKyAgICAgICAgICAgIHJldHVybiBWS19TQU1QTEVfQ09VTlRfMzJf
QklUOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgIHJldHVybiBWS19TQU1QTEVfQ09VTlRfRkxBR19CSVRTX01BWF9FTlVNOworICAgIH0K
K30KKworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQorCisvLyBzdGF0aWMKK0ZyYW1lYnVmZmVy
VmsgKkZyYW1lYnVmZmVyVms6OkNyZWF0ZVVzZXJGQk8oY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3Rh
dGUgJnN0YXRlKQoreworICAgIHJldHVybiBuZXcgRnJhbWVidWZmZXJWayhzdGF0ZSk7Cit9CisK
Ky8vIHN0YXRpYworRnJhbWVidWZmZXJWayAqRnJhbWVidWZmZXJWazo6Q3JlYXRlRGVmYXVsdEZC
Tyhjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvd1N1cmZhY2VWayAqYmFja2J1ZmZlcikK
K3sKKyAgICByZXR1cm4gbmV3IEZyYW1lYnVmZmVyVmsoc3RhdGUsIGJhY2tidWZmZXIpOworfQor
CitGcmFtZWJ1ZmZlclZrOjpGcmFtZWJ1ZmZlclZrKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRl
ICZzdGF0ZSkKKyAgICA6IEZyYW1lYnVmZmVySW1wbChzdGF0ZSksIG1CYWNrYnVmZmVyKG51bGxw
dHIpLCBtUmVuZGVyUGFzcygpLCBtRnJhbWVidWZmZXIoKQoreworfQorCitGcmFtZWJ1ZmZlclZr
OjpGcmFtZWJ1ZmZlclZrKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSwgV2luZG93
U3VyZmFjZVZrICpiYWNrYnVmZmVyKQorICAgIDogRnJhbWVidWZmZXJJbXBsKHN0YXRlKSwgbUJh
Y2tidWZmZXIoYmFja2J1ZmZlciksIG1SZW5kZXJQYXNzKCksIG1GcmFtZWJ1ZmZlcigpCiB7CiB9
CiAKQEAgLTIyLDYgKzkxLDIyIEBAIEZyYW1lYnVmZmVyVms6On5GcmFtZWJ1ZmZlclZrKCkKIHsK
IH0KIAordm9pZCBGcmFtZWJ1ZmZlclZrOjpkZXN0cm95KENvbnRleHRJbXBsICpjb250ZXh0SW1w
bCkKK3sKKyAgICBWa0RldmljZSBkZXZpY2UgPSBHZXRBczxDb250ZXh0Vms+KGNvbnRleHRJbXBs
KS0+Z2V0RGV2aWNlKCk7CisKKyAgICBtUmVuZGVyUGFzcy5kZXN0cm95KGRldmljZSk7CisgICAg
bUZyYW1lYnVmZmVyLmRlc3Ryb3koZGV2aWNlKTsKK30KKwordm9pZCBGcmFtZWJ1ZmZlclZrOjpk
ZXN0cm95RGVmYXVsdChEaXNwbGF5SW1wbCAqZGlzcGxheUltcGwpCit7CisgICAgVmtEZXZpY2Ug
ZGV2aWNlID0gR2V0QXM8RGlzcGxheVZrPihkaXNwbGF5SW1wbCktPmdldFJlbmRlcmVyKCktPmdl
dERldmljZSgpOworCisgICAgbVJlbmRlclBhc3MuZGVzdHJveShkZXZpY2UpOworICAgIG1GcmFt
ZWJ1ZmZlci5kZXN0cm95KGRldmljZSk7Cit9CisKIGdsOjpFcnJvciBGcmFtZWJ1ZmZlclZrOjpk
aXNjYXJkKHNpemVfdCBjb3VudCwgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykKIHsKICAgICBV
TklNUExFTUVOVEVEKCk7CkBAIC00NCw4ICsxMjksNTkgQEAgZ2w6OkVycm9yIEZyYW1lYnVmZmVy
Vms6OmludmFsaWRhdGVTdWIoc2l6ZV90IGNvdW50LAogCiBnbDo6RXJyb3IgRnJhbWVidWZmZXJW
azo6Y2xlYXIoQ29udGV4dEltcGwgKmNvbnRleHQsIEdMYml0ZmllbGQgbWFzaykKIHsKLSAgICBV
TklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7CisgICAgQ29udGV4dFZrICpjb250ZXh0VmsgPSBHZXRBczxDb250ZXh0Vms+KGNvbnRleHQp
OworCisgICAgaWYgKG1TdGF0ZS5nZXREZXB0aEF0dGFjaG1lbnQoKSAmJiAobWFzayAmIEdMX0RF
UFRIX0JVRkZFUl9CSVQpICE9IDApCisgICAgeworICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBE
ZXB0aCBjbGVhcgorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorCisgICAgaWYgKG1T
dGF0ZS5nZXRTdGVuY2lsQXR0YWNobWVudCgpICYmIChtYXNrICYgR0xfU1RFTkNJTF9CVUZGRVJf
QklUKSAhPSAwKQorICAgIHsKKyAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogU3RlbmNpbCBjbGVh
cgorICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgfQorCisgICAgaWYgKChtYXNrICYgR0xf
Q09MT1JfQlVGRkVSX0JJVCkgPT0gMCkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6Tm9FcnJv
cigpOworICAgIH0KKworICAgIGNvbnN0IGF1dG8gJmdsU3RhdGUgICAgPSBjb250ZXh0LT5nZXRH
TFN0YXRlKCk7CisgICAgY29uc3QgYXV0byAmY2xlYXJDb2xvciA9IGdsU3RhdGUuZ2V0Q29sb3JD
bGVhclZhbHVlKCk7CisgICAgVmtDbGVhckNvbG9yVmFsdWUgY2xlYXJDb2xvclZhbHVlOworICAg
IGNsZWFyQ29sb3JWYWx1ZS5mbG9hdDMyWzBdID0gY2xlYXJDb2xvci5yZWQ7CisgICAgY2xlYXJD
b2xvclZhbHVlLmZsb2F0MzJbMV0gPSBjbGVhckNvbG9yLmdyZWVuOworICAgIGNsZWFyQ29sb3JW
YWx1ZS5mbG9hdDMyWzJdID0gY2xlYXJDb2xvci5ibHVlOworICAgIGNsZWFyQ29sb3JWYWx1ZS5m
bG9hdDMyWzNdID0gY2xlYXJDb2xvci5hbHBoYTsKKworICAgIC8vIFRPRE8oam1hZGlsbCk6IFNj
aXNzb3JlZCBjbGVhcnMuCisgICAgY29uc3QgYXV0byAqYXR0YWNobWVudCA9IG1TdGF0ZS5nZXRG
aXJzdE5vbk51bGxBdHRhY2htZW50KCk7CisgICAgQVNTRVJUKGF0dGFjaG1lbnQgJiYgYXR0YWNo
bWVudC0+aXNBdHRhY2hlZCgpKTsKKyAgICBjb25zdCBhdXRvICZzaXplID0gYXR0YWNobWVudC0+
Z2V0U2l6ZSgpOworICAgIGNvbnN0IGdsOjpSZWN0YW5nbGUgcmVuZGVyQXJlYSgwLCAwLCBzaXpl
LndpZHRoLCBzaXplLmhlaWdodCk7CisKKyAgICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1
ZmZlciA9IGNvbnRleHRWay0+Z2V0Q29tbWFuZEJ1ZmZlcigpOworICAgIEFOR0xFX1RSWShjb21t
YW5kQnVmZmVyLT5iZWdpbihjb250ZXh0VmstPmdldERldmljZSgpKSk7CisKKyAgICBmb3IgKGNv
bnN0IGF1dG8gJmNvbG9yQXR0YWNobWVudCA6IG1TdGF0ZS5nZXRDb2xvckF0dGFjaG1lbnRzKCkp
CisgICAgeworICAgICAgICBpZiAoY29sb3JBdHRhY2htZW50LmlzQXR0YWNoZWQoKSkKKyAgICAg
ICAgeworICAgICAgICAgICAgUmVuZGVyVGFyZ2V0VmsgKnJlbmRlclRhcmdldCA9IG51bGxwdHI7
CisgICAgICAgICAgICBBTkdMRV9UUlkoY29sb3JBdHRhY2htZW50LmdldFJlbmRlclRhcmdldCgm
cmVuZGVyVGFyZ2V0KSk7CisgICAgICAgICAgICByZW5kZXJUYXJnZXQtPmltYWdlLT5jaGFuZ2VM
YXlvdXRUb3AoCisgICAgICAgICAgICAgICAgVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwgVktf
SU1BR0VfTEFZT1VUX1RSQU5TRkVSX0RTVF9PUFRJTUFMLCBjb21tYW5kQnVmZmVyKTsKKyAgICAg
ICAgICAgIGNvbW1hbmRCdWZmZXItPmNsZWFyU2luZ2xlQ29sb3JJbWFnZSgqcmVuZGVyVGFyZ2V0
LT5pbWFnZSwgY2xlYXJDb2xvclZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvbW1h
bmRCdWZmZXItPmVuZCgpOworCisgICAgQU5HTEVfVFJZKGNvbnRleHRWay0+c3VibWl0Q29tbWFu
ZHMoKmNvbW1hbmRCdWZmZXIpKTsKKworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiBn
bDo6RXJyb3IgRnJhbWVidWZmZXJWazo6Y2xlYXJCdWZmZXJmdihDb250ZXh0SW1wbCAqY29udGV4
dCwKQEAgLTg3LDE0ICsyMjMsMzAgQEAgZ2w6OkVycm9yIEZyYW1lYnVmZmVyVms6OmNsZWFyQnVm
ZmVyZmkoQ29udGV4dEltcGwgKmNvbnRleHQsCiAKIEdMZW51bSBGcmFtZWJ1ZmZlclZrOjpnZXRJ
bXBsZW1lbnRhdGlvbkNvbG9yUmVhZEZvcm1hdCgpIGNvbnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRF
RCgpOwotICAgIHJldHVybiBHTGVudW0oKTsKKyAgICBhdXRvIGVyck9yUmVzdWx0ID0gR2V0UmVh
ZEF0dGFjaG1lbnRJbmZvKG1TdGF0ZS5nZXRSZWFkQXR0YWNobWVudCgpKTsKKworICAgIC8vIFRP
RE8oam1hZGlsbCk6IEhhbmRsZSBnZXRSZW5kZXJUYXJnZXQgZXJyb3IuCisgICAgaWYgKGVyck9y
UmVzdWx0LmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIEVSUigpIDw8ICJJbnRlcm5hbCBlcnJv
ciBpbiBGcmFtZWJ1ZmZlclZrOjpnZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZEZvcm1hdC4iOwor
ICAgICAgICByZXR1cm4gR0xfTk9ORTsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyT3JSZXN1bHQu
Z2V0UmVzdWx0KCktPmZvcm1hdDsKIH0KIAogR0xlbnVtIEZyYW1lYnVmZmVyVms6OmdldEltcGxl
bWVudGF0aW9uQ29sb3JSZWFkVHlwZSgpIGNvbnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwot
ICAgIHJldHVybiBHTGVudW0oKTsKKyAgICBhdXRvIGVyck9yUmVzdWx0ID0gR2V0UmVhZEF0dGFj
aG1lbnRJbmZvKG1TdGF0ZS5nZXRSZWFkQXR0YWNobWVudCgpKTsKKworICAgIC8vIFRPRE8oam1h
ZGlsbCk6IEhhbmRsZSBnZXRSZW5kZXJUYXJnZXQgZXJyb3IuCisgICAgaWYgKGVyck9yUmVzdWx0
LmlzRXJyb3IoKSkKKyAgICB7CisgICAgICAgIEVSUigpIDw8ICJJbnRlcm5hbCBlcnJvciBpbiBG
cmFtZWJ1ZmZlclZrOjpnZXRJbXBsZW1lbnRhdGlvbkNvbG9yUmVhZEZvcm1hdC4iOworICAgICAg
ICByZXR1cm4gR0xfTk9ORTsKKyAgICB9CisKKyAgICByZXR1cm4gZXJyT3JSZXN1bHQuZ2V0UmVz
dWx0KCktPnR5cGU7CiB9CiAKIGdsOjpFcnJvciBGcmFtZWJ1ZmZlclZrOjpyZWFkUGl4ZWxzKENv
bnRleHRJbXBsICpjb250ZXh0LApAQCAtMTAzLDggKzI1NSw3MSBAQCBnbDo6RXJyb3IgRnJhbWVi
dWZmZXJWazo6cmVhZFBpeGVscyhDb250ZXh0SW1wbCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x2b2lkICpwaXhlbHMpIGNvbnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRF
RCgpOwotICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIGNv
bnN0IGF1dG8gJmdsU3RhdGUgICAgICAgICA9IGNvbnRleHQtPmdldEdMU3RhdGUoKTsKKyAgICBj
b25zdCBhdXRvICpyZWFkRnJhbWVidWZmZXIgPSBnbFN0YXRlLmdldFJlYWRGcmFtZWJ1ZmZlcigp
OworICAgIGNvbnN0IGF1dG8gKnJlYWRBdHRhY2htZW50ICA9IHJlYWRGcmFtZWJ1ZmZlci0+Z2V0
UmVhZENvbG9yYnVmZmVyKCk7CisKKyAgICBSZW5kZXJUYXJnZXRWayAqcmVuZGVyVGFyZ2V0ID0g
bnVsbHB0cjsKKyAgICBBTkdMRV9UUlkocmVhZEF0dGFjaG1lbnQtPmdldFJlbmRlclRhcmdldCgm
cmVuZGVyVGFyZ2V0KSk7CisKKyAgICBDb250ZXh0VmsgKmNvbnRleHRWayA9IEdldEFzPENvbnRl
eHRWaz4oY29udGV4dCk7CisgICAgUmVuZGVyZXJWayAqcmVuZGVyZXIgPSBjb250ZXh0VmstPmdl
dFJlbmRlcmVyKCk7CisgICAgVmtEZXZpY2UgZGV2aWNlICAgICAgPSByZW5kZXJlci0+Z2V0RGV2
aWNlKCk7CisKKyAgICB2azo6SW1hZ2UgKnJlYWRJbWFnZSA9IHJlbmRlclRhcmdldC0+aW1hZ2U7
CisgICAgdms6OlN0YWdpbmdJbWFnZSBzdGFnaW5nSW1hZ2U7CisgICAgQU5HTEVfVFJZKHJlbmRl
cmVyLT5jcmVhdGVTdGFnaW5nSW1hZ2UoVGV4dHVyZURpbWVuc2lvbjo6VEVYXzJELCAqcmVuZGVy
VGFyZ2V0LT5mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVuZGVyVGFyZ2V0LT5leHRlbnRzLCAmc3RhZ2luZ0ltYWdlKSk7CisKKyAgICB2azo6Q29t
bWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlciA9IGNvbnRleHRWay0+Z2V0Q29tbWFuZEJ1ZmZlcigp
OworICAgIGNvbW1hbmRCdWZmZXItPmJlZ2luKGRldmljZSk7CisgICAgc3RhZ2luZ0ltYWdlLmdl
dEltYWdlKCkuY2hhbmdlTGF5b3V0VG9wKFZLX0lNQUdFX0FTUEVDVF9DT0xPUl9CSVQsIFZLX0lN
QUdFX0xBWU9VVF9HRU5FUkFMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb21tYW5kQnVmZmVyKTsKKworICAgIGdsOjpCb3ggY29weVJlZ2lvbjsKKyAgICBj
b3B5UmVnaW9uLnggICAgICA9IGFyZWEueDsKKyAgICBjb3B5UmVnaW9uLnkgICAgICA9IGFyZWEu
eTsKKyAgICBjb3B5UmVnaW9uLnogICAgICA9IDA7CisgICAgY29weVJlZ2lvbi53aWR0aCAgPSBh
cmVhLndpZHRoOworICAgIGNvcHlSZWdpb24uaGVpZ2h0ID0gYXJlYS5oZWlnaHQ7CisgICAgY29w
eVJlZ2lvbi5kZXB0aCAgPSAxOworCisgICAgcmVhZEltYWdlLT5jaGFuZ2VMYXlvdXRUb3AoVktf
SU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwgVktfSU1BR0VfTEFZT1VUX1RSQU5TRkVSX1NSQ19PUFRJ
TUFMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRCdWZmZXIpOworICAg
IGNvbW1hbmRCdWZmZXItPmNvcHlTaW5nbGVJbWFnZSgqcmVhZEltYWdlLCBzdGFnaW5nSW1hZ2Uu
Z2V0SW1hZ2UoKSwgY29weVJlZ2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCk7CisgICAgY29tbWFuZEJ1ZmZlci0+ZW5kKCk7
CisKKyAgICBBTkdMRV9UUlkocmVuZGVyZXItPnN1Ym1pdEFuZEZpbmlzaENvbW1hbmRCdWZmZXIo
KmNvbW1hbmRCdWZmZXIpKTsKKworICAgIC8vIFRPRE8oam1hZGlsbCk6IHBhcmFtZXRlcnMKKyAg
ICB1aW50OF90ICptYXBQb2ludGVyID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUlkoCisgICAgICAg
IHN0YWdpbmdJbWFnZS5nZXREZXZpY2VNZW1vcnkoKS5tYXAoZGV2aWNlLCAwLCBzdGFnaW5nSW1h
Z2UuZ2V0U2l6ZSgpLCAwLCAmbWFwUG9pbnRlcikpOworCisgICAgY29uc3QgYXV0byAmYW5nbGVG
b3JtYXQgPSByZW5kZXJUYXJnZXQtPmZvcm1hdC0+Zm9ybWF0KCk7CisKKyAgICAvLyBUT0RPKGpt
YWRpbGwpOiBVc2UgcGl4ZWwgYnl0ZXMgZnJvbSB0aGUgQU5HTEUgZm9ybWF0IGRpcmVjdGx5Lgor
ICAgIGNvbnN0IGF1dG8gJmdsRm9ybWF0ID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhhbmds
ZUZvcm1hdC5nbEludGVybmFsRm9ybWF0KTsKKyAgICBpbnQgaW5wdXRQaXRjaCAgICAgICA9IGds
Rm9ybWF0LnBpeGVsQnl0ZXMgKiBhcmVhLndpZHRoOworCisgICAgUGFja1BpeGVsc1BhcmFtcyBw
YXJhbXM7CisgICAgcGFyYW1zLmFyZWEgICAgICAgID0gYXJlYTsKKyAgICBwYXJhbXMuZm9ybWF0
ICAgICAgPSBmb3JtYXQ7CisgICAgcGFyYW1zLnR5cGUgICAgICAgID0gdHlwZTsKKyAgICBwYXJh
bXMub3V0cHV0UGl0Y2ggPSBpbnB1dFBpdGNoOworICAgIHBhcmFtcy5wYWNrICAgICAgICA9IGds
U3RhdGUuZ2V0UGFja1N0YXRlKCk7CisKKyAgICBQYWNrUGl4ZWxzKHBhcmFtcywgYW5nbGVGb3Jt
YXQsIGlucHV0UGl0Y2gsIG1hcFBvaW50ZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCAqPihw
aXhlbHMpKTsKKworICAgIHN0YWdpbmdJbWFnZS5nZXREZXZpY2VNZW1vcnkoKS51bm1hcChkZXZp
Y2UpOworICAgIHJlbmRlcmVyLT5lbnF1ZXVlR2FyYmFnZShyZW5kZXJlci0+Z2V0Q3VycmVudFF1
ZXVlU2VyaWFsKCksIHN0ZDo6bW92ZShzdGFnaW5nSW1hZ2UpKTsKKworICAgIHN0YWdpbmdJbWFn
ZS5nZXRJbWFnZSgpLmRlc3Ryb3kocmVuZGVyZXItPmdldERldmljZSgpKTsKKworICAgIHN0YWdp
bmdJbWFnZS5kZXN0cm95KGRldmljZSk7CisKKyAgICByZXR1cm4gdms6Ok5vRXJyb3IoKTsKIH0K
IAogZ2w6OkVycm9yIEZyYW1lYnVmZmVyVms6OmJsaXQoQ29udGV4dEltcGwgKmNvbnRleHQsCkBA
IC0xMjMsOSArMzM4LDI2NiBAQCBib29sIEZyYW1lYnVmZmVyVms6OmNoZWNrU3RhdHVzKCkgY29u
c3QKICAgICByZXR1cm4gYm9vbCgpOwogfQogCi12b2lkIEZyYW1lYnVmZmVyVms6OnN5bmNTdGF0
ZShjb25zdCBnbDo6RnJhbWVidWZmZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQordm9pZCBGcmFt
ZWJ1ZmZlclZrOjpzeW5jU3RhdGUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLCBjb25zdCBnbDo6
RnJhbWVidWZmZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQoreworICAgIGF1dG8gY29udGV4dFZr
ID0gR2V0QXM8Q29udGV4dFZrPihjb250ZXh0SW1wbCk7CisKKyAgICBBU1NFUlQoZGlydHlCaXRz
LmFueSgpKTsKKworICAgIC8vIFRPRE8oam1hZGlsbCk6IFNtYXJ0ZXIgdXBkYXRlLgorICAgIG1S
ZW5kZXJQYXNzLmRlc3Ryb3koY29udGV4dFZrLT5nZXREZXZpY2UoKSk7CisgICAgbUZyYW1lYnVm
ZmVyLmRlc3Ryb3koY29udGV4dFZrLT5nZXREZXZpY2UoKSk7CisKKyAgICAvLyBUT0RPKGptYWRp
bGwpOiBVc2UgcGlwZWxpbmUgY2FjaGUuCisgICAgY29udGV4dFZrLT5pbnZhbGlkYXRlQ3VycmVu
dFBpcGVsaW5lKCk7Cit9CisKK2dsOjpFcnJvck9yUmVzdWx0PHZrOjpSZW5kZXJQYXNzICo+IEZy
YW1lYnVmZmVyVms6OmdldFJlbmRlclBhc3MoVmtEZXZpY2UgZGV2aWNlKQoreworICAgIGlmICht
UmVuZGVyUGFzcy52YWxpZCgpKQorICAgIHsKKyAgICAgICAgcmV0dXJuICZtUmVuZGVyUGFzczsK
KyAgICB9CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBDYW4gd2UgdXNlIHN0YWNrLW9ubHkgbWVt
b3J5PworICAgIHN0ZDo6dmVjdG9yPFZrQXR0YWNobWVudERlc2NyaXB0aW9uPiBhdHRhY2htZW50
RGVzY3M7CisgICAgc3RkOjp2ZWN0b3I8VmtBdHRhY2htZW50UmVmZXJlbmNlPiBjb2xvckF0dGFj
aG1lbnRSZWZzOworCisgICAgY29uc3QgYXV0byAmY29sb3JBdHRhY2htZW50cyA9IG1TdGF0ZS5n
ZXRDb2xvckF0dGFjaG1lbnRzKCk7CisgICAgZm9yIChzaXplX3QgYXR0YWNobWVudEluZGV4ID0g
MDsgYXR0YWNobWVudEluZGV4IDwgY29sb3JBdHRhY2htZW50cy5zaXplKCk7ICsrYXR0YWNobWVu
dEluZGV4KQorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byAmY29sb3JBdHRhY2htZW50ID0gY29s
b3JBdHRhY2htZW50c1thdHRhY2htZW50SW5kZXhdOworICAgICAgICBpZiAoY29sb3JBdHRhY2ht
ZW50LmlzQXR0YWNoZWQoKSkKKyAgICAgICAgeworICAgICAgICAgICAgVmtBdHRhY2htZW50RGVz
Y3JpcHRpb24gY29sb3JEZXNjOworICAgICAgICAgICAgVmtBdHRhY2htZW50UmVmZXJlbmNlIGNv
bG9yUmVmOworCisgICAgICAgICAgICBSZW5kZXJUYXJnZXRWayAqcmVuZGVyVGFyZ2V0ID0gbnVs
bHB0cjsKKyAgICAgICAgICAgIEFOR0xFX1RSWShjb2xvckF0dGFjaG1lbnQuZ2V0UmVuZGVyVGFy
Z2V0KCZyZW5kZXJUYXJnZXQpKTsKKworICAgICAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogV2Ug
d291bGQgb25seSBuZWVkIHRoaXMgZmxhZyBmb3IgZHVwbGljYXRlZCBhdHRhY2htZW50cy4KKyAg
ICAgICAgICAgIGNvbG9yRGVzYy5mbGFncyAgID0gVktfQVRUQUNITUVOVF9ERVNDUklQVElPTl9N
QVlfQUxJQVNfQklUOworICAgICAgICAgICAgY29sb3JEZXNjLmZvcm1hdCAgPSByZW5kZXJUYXJn
ZXQtPmZvcm1hdC0+bmF0aXZlOworICAgICAgICAgICAgY29sb3JEZXNjLnNhbXBsZXMgPSBDb252
ZXJ0U2FtcGxlcyhjb2xvckF0dGFjaG1lbnQuZ2V0U2FtcGxlcygpKTsKKworICAgICAgICAgICAg
Ly8gVGhlIGxvYWQgb3AgY29udHJvbHMgdGhlIHByaW9yIGV4aXN0aW5nIGRlcHRoL2NvbG9yIGF0
dGFjaG1lbnQgZGF0YS4KKyAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IFByb3BlciBsb2Fk
IG9wcy4gU2hvdWxkIG5vdCBiZSBoYXJkIGNvZGVkIHRvIGNsZWFyLgorICAgICAgICAgICAgY29s
b3JEZXNjLmxvYWRPcCAgICAgICAgID0gVktfQVRUQUNITUVOVF9MT0FEX09QX0NMRUFSOworICAg
ICAgICAgICAgY29sb3JEZXNjLnN0b3JlT3AgICAgICAgID0gVktfQVRUQUNITUVOVF9TVE9SRV9P
UF9TVE9SRTsKKyAgICAgICAgICAgIGNvbG9yRGVzYy5zdGVuY2lsTG9hZE9wICA9IFZLX0FUVEFD
SE1FTlRfTE9BRF9PUF9ET05UX0NBUkU7CisgICAgICAgICAgICBjb2xvckRlc2Muc3RlbmNpbFN0
b3JlT3AgPSBWS19BVFRBQ0hNRU5UX1NUT1JFX09QX0RPTlRfQ0FSRTsKKyAgICAgICAgICAgIGNv
bG9yRGVzYy5pbml0aWFsTGF5b3V0ICA9IFZLX0lNQUdFX0xBWU9VVF9VTkRFRklORUQ7CisKKyAg
ICAgICAgICAgIC8vIFdlIG1pZ2h0IHdhbnQgdG8gdHJhbnNpdGlvbiBkaXJlY3RseSB0byBQUkVT
RU5UX1NSQyBmb3IgU3VyZmFjZSBhdHRhY2htZW50cy4KKyAgICAgICAgICAgIGNvbG9yRGVzYy5m
aW5hbExheW91dCA9IFZLX0lNQUdFX0xBWU9VVF9DT0xPUl9BVFRBQ0hNRU5UX09QVElNQUw7CisK
KyAgICAgICAgICAgIGNvbG9yUmVmLmF0dGFjaG1lbnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
Y29sb3JBdHRhY2htZW50cy5zaXplKCkpIC0gMXU7CisgICAgICAgICAgICBjb2xvclJlZi5sYXlv
dXQgICAgID0gVktfSU1BR0VfTEFZT1VUX0NPTE9SX0FUVEFDSE1FTlRfT1BUSU1BTDsKKworICAg
ICAgICAgICAgYXR0YWNobWVudERlc2NzLnB1c2hfYmFjayhjb2xvckRlc2MpOworICAgICAgICAg
ICAgY29sb3JBdHRhY2htZW50UmVmcy5wdXNoX2JhY2soY29sb3JSZWYpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgY29uc3QgYXV0byAqZGVwdGhTdGVuY2lsQXR0YWNobWVudCA9IG1TdGF0ZS5n
ZXREZXB0aFN0ZW5jaWxBdHRhY2htZW50KCk7CisgICAgVmtBdHRhY2htZW50UmVmZXJlbmNlIGRl
cHRoU3RlbmNpbEF0dGFjaG1lbnRSZWY7CisgICAgYm9vbCB1c2VEZXB0aCA9IGRlcHRoU3RlbmNp
bEF0dGFjaG1lbnQgJiYgZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+aXNBdHRhY2hlZCgpOworCisg
ICAgaWYgKHVzZURlcHRoKQorICAgIHsKKyAgICAgICAgVmtBdHRhY2htZW50RGVzY3JpcHRpb24g
ZGVwdGhTdGVuY2lsRGVzYzsKKworICAgICAgICBSZW5kZXJUYXJnZXRWayAqcmVuZGVyVGFyZ2V0
ID0gbnVsbHB0cjsKKyAgICAgICAgQU5HTEVfVFJZKGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmdl
dFJlbmRlclRhcmdldCgmcmVuZGVyVGFyZ2V0KSk7CisKKyAgICAgICAgZGVwdGhTdGVuY2lsRGVz
Yy5mbGFncyAgICAgICAgICA9IDA7CisgICAgICAgIGRlcHRoU3RlbmNpbERlc2MuZm9ybWF0ICAg
ICAgICAgPSByZW5kZXJUYXJnZXQtPmZvcm1hdC0+bmF0aXZlOworICAgICAgICBkZXB0aFN0ZW5j
aWxEZXNjLnNhbXBsZXMgICAgICAgID0gQ29udmVydFNhbXBsZXMoZGVwdGhTdGVuY2lsQXR0YWNo
bWVudC0+Z2V0U2FtcGxlcygpKTsKKyAgICAgICAgZGVwdGhTdGVuY2lsRGVzYy5sb2FkT3AgICAg
ICAgICA9IFZLX0FUVEFDSE1FTlRfTE9BRF9PUF9DTEVBUjsKKyAgICAgICAgZGVwdGhTdGVuY2ls
RGVzYy5zdG9yZU9wICAgICAgICA9IFZLX0FUVEFDSE1FTlRfU1RPUkVfT1BfU1RPUkU7CisgICAg
ICAgIGRlcHRoU3RlbmNpbERlc2Muc3RlbmNpbExvYWRPcCAgPSBWS19BVFRBQ0hNRU5UX0xPQURf
T1BfRE9OVF9DQVJFOworICAgICAgICBkZXB0aFN0ZW5jaWxEZXNjLnN0ZW5jaWxTdG9yZU9wID0g
VktfQVRUQUNITUVOVF9TVE9SRV9PUF9ET05UX0NBUkU7CisgICAgICAgIGRlcHRoU3RlbmNpbERl
c2MuaW5pdGlhbExheW91dCAgPSBWS19JTUFHRV9MQVlPVVRfREVQVEhfU1RFTkNJTF9BVFRBQ0hN
RU5UX09QVElNQUw7CisgICAgICAgIGRlcHRoU3RlbmNpbERlc2MuZmluYWxMYXlvdXQgICAgPSBW
S19JTUFHRV9MQVlPVVRfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UX09QVElNQUw7CisKKyAgICAg
ICAgZGVwdGhTdGVuY2lsQXR0YWNobWVudFJlZi5hdHRhY2htZW50ID0gc3RhdGljX2Nhc3Q8dWlu
dDMyX3Q+KGF0dGFjaG1lbnREZXNjcy5zaXplKCkpOworICAgICAgICBkZXB0aFN0ZW5jaWxBdHRh
Y2htZW50UmVmLmxheW91dCAgICAgPSBWS19JTUFHRV9MQVlPVVRfREVQVEhfU1RFTkNJTF9BVFRB
Q0hNRU5UX09QVElNQUw7CisKKyAgICAgICAgYXR0YWNobWVudERlc2NzLnB1c2hfYmFjayhkZXB0
aFN0ZW5jaWxEZXNjKTsKKyAgICB9CisKKyAgICBBU1NFUlQoIWF0dGFjaG1lbnREZXNjcy5lbXB0
eSgpKTsKKworICAgIFZrU3VicGFzc0Rlc2NyaXB0aW9uIHN1YnBhc3NEZXNjOworCisgICAgc3Vi
cGFzc0Rlc2MuZmxhZ3MgICAgICAgICAgICAgICAgICAgPSAwOworICAgIHN1YnBhc3NEZXNjLnBp
cGVsaW5lQmluZFBvaW50ICAgICAgID0gVktfUElQRUxJTkVfQklORF9QT0lOVF9HUkFQSElDUzsK
KyAgICBzdWJwYXNzRGVzYy5pbnB1dEF0dGFjaG1lbnRDb3VudCAgICA9IDA7CisgICAgc3VicGFz
c0Rlc2MucElucHV0QXR0YWNobWVudHMgICAgICAgPSBudWxscHRyOworICAgIHN1YnBhc3NEZXNj
LmNvbG9yQXR0YWNobWVudENvdW50ICAgID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNvbG9yQXR0
YWNobWVudFJlZnMuc2l6ZSgpKTsKKyAgICBzdWJwYXNzRGVzYy5wQ29sb3JBdHRhY2htZW50cyAg
ICAgICA9IGNvbG9yQXR0YWNobWVudFJlZnMuZGF0YSgpOworICAgIHN1YnBhc3NEZXNjLnBSZXNv
bHZlQXR0YWNobWVudHMgICAgID0gbnVsbHB0cjsKKyAgICBzdWJwYXNzRGVzYy5wRGVwdGhTdGVu
Y2lsQXR0YWNobWVudCA9ICh1c2VEZXB0aCA/ICZkZXB0aFN0ZW5jaWxBdHRhY2htZW50UmVmIDog
bnVsbHB0cik7CisgICAgc3VicGFzc0Rlc2MucHJlc2VydmVBdHRhY2htZW50Q291bnQgPSAwOwor
ICAgIHN1YnBhc3NEZXNjLnBQcmVzZXJ2ZUF0dGFjaG1lbnRzICAgID0gbnVsbHB0cjsKKworICAg
IFZrUmVuZGVyUGFzc0NyZWF0ZUluZm8gcmVuZGVyUGFzc0luZm87CisKKyAgICByZW5kZXJQYXNz
SW5mby5zVHlwZSAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9SRU5ERVJfUEFTU19DUkVB
VEVfSU5GTzsKKyAgICByZW5kZXJQYXNzSW5mby5wTmV4dCAgICAgICAgICAgPSBudWxscHRyOwor
ICAgIHJlbmRlclBhc3NJbmZvLmZsYWdzICAgICAgICAgICA9IDA7CisgICAgcmVuZGVyUGFzc0lu
Zm8uYXR0YWNobWVudENvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGF0dGFjaG1lbnREZXNj
cy5zaXplKCkpOworICAgIHJlbmRlclBhc3NJbmZvLnBBdHRhY2htZW50cyAgICA9IGF0dGFjaG1l
bnREZXNjcy5kYXRhKCk7CisgICAgcmVuZGVyUGFzc0luZm8uc3VicGFzc0NvdW50ICAgID0gMTsK
KyAgICByZW5kZXJQYXNzSW5mby5wU3VicGFzc2VzICAgICAgPSAmc3VicGFzc0Rlc2M7CisgICAg
cmVuZGVyUGFzc0luZm8uZGVwZW5kZW5jeUNvdW50ID0gMDsKKyAgICByZW5kZXJQYXNzSW5mby5w
RGVwZW5kZW5jaWVzICAgPSBudWxscHRyOworCisgICAgdms6OlJlbmRlclBhc3MgcmVuZGVyUGFz
czsKKyAgICBBTkdMRV9UUlkocmVuZGVyUGFzcy5pbml0KGRldmljZSwgcmVuZGVyUGFzc0luZm8p
KTsKKworICAgIG1SZW5kZXJQYXNzLnJldGFpbihkZXZpY2UsIHN0ZDo6bW92ZShyZW5kZXJQYXNz
KSk7CisKKyAgICByZXR1cm4gJm1SZW5kZXJQYXNzOworfQorCitnbDo6RXJyb3JPclJlc3VsdDx2
azo6RnJhbWVidWZmZXIgKj4gRnJhbWVidWZmZXJWazo6Z2V0RnJhbWVidWZmZXIoVmtEZXZpY2Ug
ZGV2aWNlKQoreworICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgY3JlYXRlZCBvdXIgY2FjaGVkIEZy
YW1lYnVmZmVyLCByZXR1cm4gaXQuCisgICAgaWYgKG1GcmFtZWJ1ZmZlci52YWxpZCgpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuICZtRnJhbWVidWZmZXI7CisgICAgfQorCisgICAgdms6OlJlbmRl
clBhc3MgKnJlbmRlclBhc3MgPSBudWxscHRyOworICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2V0UmVu
ZGVyUGFzcyhkZXZpY2UpLCByZW5kZXJQYXNzKTsKKworICAgIC8vIElmIHdlJ3ZlIGEgRnJhbWVi
dWZmZXIgcHJvdmlkZWQgYnkgYSBTdXJmYWNlIChkZWZhdWx0IEZCTy9iYWNrYnVmZmVyKSwgcXVl
cnkgaXQuCisgICAgaWYgKG1CYWNrYnVmZmVyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1CYWNr
YnVmZmVyLT5nZXRDdXJyZW50RnJhbWVidWZmZXIoZGV2aWNlLCAqcmVuZGVyUGFzcyk7CisgICAg
fQorCisgICAgLy8gR2F0aGVyIFZrSW1hZ2VWaWV3cyBvdmVyIGFsbCBGQk8gYXR0YWNobWVudHMs
IGFsc28gc2l6ZSBvZiBhdHRhY2hlZCByZWdpb24uCisgICAgc3RkOjp2ZWN0b3I8VmtJbWFnZVZp
ZXc+IGF0dGFjaG1lbnRzOworICAgIGdsOjpFeHRlbnRzIGF0dGFjaG1lbnRzU2l6ZTsKKworICAg
IGNvbnN0IGF1dG8gJmNvbG9yQXR0YWNobWVudHMgPSBtU3RhdGUuZ2V0Q29sb3JBdHRhY2htZW50
cygpOworICAgIGZvciAoc2l6ZV90IGF0dGFjaG1lbnRJbmRleCA9IDA7IGF0dGFjaG1lbnRJbmRl
eCA8IGNvbG9yQXR0YWNobWVudHMuc2l6ZSgpOyArK2F0dGFjaG1lbnRJbmRleCkKKyAgICB7Cisg
ICAgICAgIGNvbnN0IGF1dG8gJmNvbG9yQXR0YWNobWVudCA9IGNvbG9yQXR0YWNobWVudHNbYXR0
YWNobWVudEluZGV4XTsKKyAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVudC5pc0F0dGFjaGVkKCkp
CisgICAgICAgIHsKKyAgICAgICAgICAgIFJlbmRlclRhcmdldFZrICpyZW5kZXJUYXJnZXQgPSBu
dWxscHRyOworICAgICAgICAgICAgQU5HTEVfVFJZKGNvbG9yQXR0YWNobWVudC5nZXRSZW5kZXJU
YXJnZXQ8UmVuZGVyVGFyZ2V0Vms+KCZyZW5kZXJUYXJnZXQpKTsKKyAgICAgICAgICAgIGF0dGFj
aG1lbnRzLnB1c2hfYmFjayhyZW5kZXJUYXJnZXQtPmltYWdlVmlldy0+Z2V0SGFuZGxlKCkpOwor
CisgICAgICAgICAgICBBU1NFUlQoYXR0YWNobWVudHNTaXplLmVtcHR5KCkgfHwgYXR0YWNobWVu
dHNTaXplID09IGNvbG9yQXR0YWNobWVudC5nZXRTaXplKCkpOworICAgICAgICAgICAgYXR0YWNo
bWVudHNTaXplID0gY29sb3JBdHRhY2htZW50LmdldFNpemUoKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGNvbnN0IGF1dG8gKmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBtU3RhdGUuZ2V0RGVw
dGhTdGVuY2lsQXR0YWNobWVudCgpOworICAgIGlmIChkZXB0aFN0ZW5jaWxBdHRhY2htZW50ICYm
IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmlzQXR0YWNoZWQoKSkKKyAgICB7CisgICAgICAgIFJl
bmRlclRhcmdldFZrICpyZW5kZXJUYXJnZXQgPSBudWxscHRyOworICAgICAgICBBTkdMRV9UUlko
ZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+Z2V0UmVuZGVyVGFyZ2V0PFJlbmRlclRhcmdldFZrPigm
cmVuZGVyVGFyZ2V0KSk7CisgICAgICAgIGF0dGFjaG1lbnRzLnB1c2hfYmFjayhyZW5kZXJUYXJn
ZXQtPmltYWdlVmlldy0+Z2V0SGFuZGxlKCkpOworCisgICAgICAgIEFTU0VSVChhdHRhY2htZW50
c1NpemUuZW1wdHkoKSB8fCBhdHRhY2htZW50c1NpemUgPT0gZGVwdGhTdGVuY2lsQXR0YWNobWVu
dC0+Z2V0U2l6ZSgpKTsKKyAgICAgICAgYXR0YWNobWVudHNTaXplID0gZGVwdGhTdGVuY2lsQXR0
YWNobWVudC0+Z2V0U2l6ZSgpOworICAgIH0KKworICAgIEFTU0VSVCghYXR0YWNobWVudHMuZW1w
dHkoKSk7CisKKyAgICBWa0ZyYW1lYnVmZmVyQ3JlYXRlSW5mbyBmcmFtZWJ1ZmZlckluZm87CisK
KyAgICBmcmFtZWJ1ZmZlckluZm8uc1R5cGUgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVf
RlJBTUVCVUZGRVJfQ1JFQVRFX0lORk87CisgICAgZnJhbWVidWZmZXJJbmZvLnBOZXh0ICAgICAg
ICAgICA9IG51bGxwdHI7CisgICAgZnJhbWVidWZmZXJJbmZvLmZsYWdzICAgICAgICAgICA9IDA7
CisgICAgZnJhbWVidWZmZXJJbmZvLnJlbmRlclBhc3MgICAgICA9IG1SZW5kZXJQYXNzLmdldEhh
bmRsZSgpOworICAgIGZyYW1lYnVmZmVySW5mby5hdHRhY2htZW50Q291bnQgPSBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oYXR0YWNobWVudHMuc2l6ZSgpKTsKKyAgICBmcmFtZWJ1ZmZlckluZm8ucEF0
dGFjaG1lbnRzICAgID0gYXR0YWNobWVudHMuZGF0YSgpOworICAgIGZyYW1lYnVmZmVySW5mby53
aWR0aCAgICAgICAgICAgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYXR0YWNobWVudHNTaXplLndp
ZHRoKTsKKyAgICBmcmFtZWJ1ZmZlckluZm8uaGVpZ2h0ICAgICAgICAgID0gc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KGF0dGFjaG1lbnRzU2l6ZS5oZWlnaHQpOworICAgIGZyYW1lYnVmZmVySW5mby5s
YXllcnMgICAgICAgICAgPSAxOworCisgICAgdms6OkZyYW1lYnVmZmVyIGZyYW1lYnVmZmVyOwor
ICAgIEFOR0xFX1RSWShzdGF0aWNfY2FzdDxnbDo6RXJyb3I+KGZyYW1lYnVmZmVyLmluaXQoZGV2
aWNlLCBmcmFtZWJ1ZmZlckluZm8pKSk7CisKKyAgICBtRnJhbWVidWZmZXIucmV0YWluKGRldmlj
ZSwgc3RkOjptb3ZlKGZyYW1lYnVmZmVyKSk7CisKKyAgICByZXR1cm4gJm1GcmFtZWJ1ZmZlcjsK
K30KKworZ2w6OkVycm9yIEZyYW1lYnVmZmVyVms6OmdldFNhbXBsZVBvc2l0aW9uKHNpemVfdCBp
bmRleCwgR0xmbG9hdCAqeHkpIGNvbnN0CiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHJl
dHVybiBnbDo6SW50ZXJuYWxFcnJvcigpIDw8ICJnZXRTYW1wbGVQb3NpdGlvbiBpcyB1bmltcGxl
bWVudGVkLiI7Cit9CisKK2dsOjpFcnJvciBGcmFtZWJ1ZmZlclZrOjpiZWdpblJlbmRlclBhc3Mo
VmtEZXZpY2UgZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2azo6Q29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU2VyaWFsIHF1ZXVlU2VyaWFsLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUpCit7Cisg
ICAgLy8gVE9ETyhqbWFkaWxsKTogQ2FjaGUgcmVuZGVyIHRhcmdldHMuCisgICAgZm9yIChjb25z
dCBhdXRvICZjb2xvckF0dGFjaG1lbnQgOiBtU3RhdGUuZ2V0Q29sb3JBdHRhY2htZW50cygpKQor
ICAgIHsKKyAgICAgICAgaWYgKGNvbG9yQXR0YWNobWVudC5pc0F0dGFjaGVkKCkpCisgICAgICAg
IHsKKyAgICAgICAgICAgIFJlbmRlclRhcmdldFZrICpyZW5kZXJUYXJnZXQgPSBudWxscHRyOwor
ICAgICAgICAgICAgQU5HTEVfVFJZKGNvbG9yQXR0YWNobWVudC5nZXRSZW5kZXJUYXJnZXQ8UmVu
ZGVyVGFyZ2V0Vms+KCZyZW5kZXJUYXJnZXQpKTsKKyAgICAgICAgICAgIHJlbmRlclRhcmdldC0+
cmVzb3VyY2UtPnNldFF1ZXVlU2VyaWFsKHF1ZXVlU2VyaWFsKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGNvbnN0IGF1dG8gKmRlcHRoU3RlbmNpbEF0dGFjaG1lbnQgPSBtU3RhdGUuZ2V0RGVw
dGhTdGVuY2lsQXR0YWNobWVudCgpOworICAgIGlmIChkZXB0aFN0ZW5jaWxBdHRhY2htZW50ICYm
IGRlcHRoU3RlbmNpbEF0dGFjaG1lbnQtPmlzQXR0YWNoZWQoKSkKKyAgICB7CisgICAgICAgIFJl
bmRlclRhcmdldFZrICpyZW5kZXJUYXJnZXQgPSBudWxscHRyOworICAgICAgICBBTkdMRV9UUlko
ZGVwdGhTdGVuY2lsQXR0YWNobWVudC0+Z2V0UmVuZGVyVGFyZ2V0PFJlbmRlclRhcmdldFZrPigm
cmVuZGVyVGFyZ2V0KSk7CisgICAgICAgIHJlbmRlclRhcmdldC0+cmVzb3VyY2UtPnNldFF1ZXVl
U2VyaWFsKHF1ZXVlU2VyaWFsKTsKKyAgICB9CisKKyAgICB2azo6RnJhbWVidWZmZXIgKmZyYW1l
YnVmZmVyID0gbnVsbHB0cjsKKyAgICBBTkdMRV9UUllfUkVTVUxUKGdldEZyYW1lYnVmZmVyKGRl
dmljZSksIGZyYW1lYnVmZmVyKTsKKyAgICBBU1NFUlQoZnJhbWVidWZmZXIgJiYgZnJhbWVidWZm
ZXItPnZhbGlkKCkpOworCisgICAgdms6OlJlbmRlclBhc3MgKnJlbmRlclBhc3MgPSBudWxscHRy
OworICAgIEFOR0xFX1RSWV9SRVNVTFQoZ2V0UmVuZGVyUGFzcyhkZXZpY2UpLCByZW5kZXJQYXNz
KTsKKyAgICBBU1NFUlQocmVuZGVyUGFzcyAmJiByZW5kZXJQYXNzLT52YWxpZCgpKTsKKworICAg
IC8vIFRPRE8oam1hZGlsbCk6IFByb3BlciBjbGVhciB2YWx1ZSBpbXBsZW1lbnRhdGlvbi4KKyAg
ICBWa0NsZWFyQ29sb3JWYWx1ZSBjb2xvckNsZWFyOworICAgIG1lbXNldCgmY29sb3JDbGVhciwg
MCwgc2l6ZW9mKFZrQ2xlYXJDb2xvclZhbHVlKSk7CisgICAgY29sb3JDbGVhci5mbG9hdDMyWzBd
ID0gZ2xTdGF0ZS5nZXRDb2xvckNsZWFyVmFsdWUoKS5yZWQ7CisgICAgY29sb3JDbGVhci5mbG9h
dDMyWzFdID0gZ2xTdGF0ZS5nZXRDb2xvckNsZWFyVmFsdWUoKS5ncmVlbjsKKyAgICBjb2xvckNs
ZWFyLmZsb2F0MzJbMl0gPSBnbFN0YXRlLmdldENvbG9yQ2xlYXJWYWx1ZSgpLmJsdWU7CisgICAg
Y29sb3JDbGVhci5mbG9hdDMyWzNdID0gZ2xTdGF0ZS5nZXRDb2xvckNsZWFyVmFsdWUoKS5hbHBo
YTsKKworICAgIHN0ZDo6dmVjdG9yPFZrQ2xlYXJWYWx1ZT4gYXR0YWNobWVudENsZWFyVmFsdWVz
OworICAgIGF0dGFjaG1lbnRDbGVhclZhbHVlcy5wdXNoX2JhY2soe2NvbG9yQ2xlYXJ9KTsKKwor
ICAgIC8vIFVwZGF0ZWQgdGhlIGNhY2hlZCBpbWFnZSBsYXlvdXQgb2YgdGhlIGF0dGFjaG1lbnRz
IGluIHRoaXMgRkJPLgorICAgIC8vIEZvciBhIGRlZmF1bHQgRkJPLCB3ZSBuZWVkIHRvIGNhbGwg
dGhyb3VnaCB0byB0aGUgV2luZG93U3VyZmFjZVZrCisgICAgLy8gVE9ETyhqbWFkaWxsKTogSXRl
cmF0ZSBvdmVyIGFsbCBhdHRhY2htZW50cy4KKyAgICBBU1NFUlQobUJhY2tidWZmZXIpOworICAg
IFJlbmRlclRhcmdldFZrICpyZW5kZXJUYXJnZXQgPSBudWxscHRyOworICAgIEFOR0xFX1RSWSht
U3RhdGUuZ2V0Rmlyc3RDb2xvckF0dGFjaG1lbnQoKS0+Z2V0UmVuZGVyVGFyZ2V0KCZyZW5kZXJU
YXJnZXQpKTsKKyAgICByZW5kZXJUYXJnZXQtPmltYWdlLT51cGRhdGVMYXlvdXQoVktfSU1BR0Vf
TEFZT1VUX0NPTE9SX0FUVEFDSE1FTlRfT1BUSU1BTCk7CisKKyAgICBBTkdMRV9UUlkoY29tbWFu
ZEJ1ZmZlci0+YmVnaW4oZGV2aWNlKSk7CisgICAgY29tbWFuZEJ1ZmZlci0+YmVnaW5SZW5kZXJQ
YXNzKCpyZW5kZXJQYXNzLCAqZnJhbWVidWZmZXIsIGdsU3RhdGUuZ2V0Vmlld3BvcnQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0YWNobWVudENsZWFyVmFsdWVzKTsK
KworICAgIHNldFF1ZXVlU2VyaWFsKHF1ZXVlU2VyaWFsKTsKKyAgICBpZiAobUJhY2tidWZmZXIp
CisgICAgeworICAgICAgICBtQmFja2J1ZmZlci0+c2V0UXVldWVTZXJpYWwocXVldWVTZXJpYWwp
OworICAgIH0KKworICAgIHJldHVybiBnbDo6Tm9FcnJvcigpOwogfQogCiB9ICAvLyBuYW1lc3Bh
Y2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vRnJhbWVidWZmZXJWay5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GcmFtZWJ1ZmZlclZrLmgKaW5kZXggOWViNGFi
ZjkyMTYuLjk1ZTA0YzJlMjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZyYW1lYnVmZmVyVmsuaAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZyYW1lYnVmZmVy
VmsuaApAQCAtMTEsMTUgKzExLDI4IEBACiAjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtB
Tl9GUkFNRUJVRkZFUlZLX0hfCiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1
ZmZlckltcGwuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vcmVuZGVyZXJ2
a191dGlscy5oIgogCiBuYW1lc3BhY2UgcngKIHsKK2NsYXNzIFJlbmRlclRhcmdldFZrOworY2xh
c3MgV2luZG93U3VyZmFjZVZrOwogCi1jbGFzcyBGcmFtZWJ1ZmZlclZrIDogcHVibGljIEZyYW1l
YnVmZmVySW1wbAorY2xhc3MgRnJhbWVidWZmZXJWayA6IHB1YmxpYyBGcmFtZWJ1ZmZlckltcGws
IHB1YmxpYyBSZXNvdXJjZVZrCiB7CiAgIHB1YmxpYzoKLSAgICBGcmFtZWJ1ZmZlclZrKGNvbnN0
IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSk7CisgICAgLy8gRmFjdG9yeSBtZXRob2RzIHNv
IHdlIGRvbid0IGhhdmUgdG8gdXNlIGNvbnN0cnVjdG9ycyB3aXRoIG92ZXJsb2Fkcy4KKyAgICBz
dGF0aWMgRnJhbWVidWZmZXJWayAqQ3JlYXRlVXNlckZCTyhjb25zdCBnbDo6RnJhbWVidWZmZXJT
dGF0ZSAmc3RhdGUpOworCisgICAgLy8gVGhlIHBhc3NlZC1pbiBTdXJmYWNlVksgbXVzdCBiZSBk
ZXN0cm95ZWQgYWZ0ZXIgdGhpcyBGQk8gaXMgZGVzdHJveWVkLiBPdXIgU3VyZmFjZSBjb2RlIGlz
CisgICAgLy8gcmVmLWNvdW50ZWQgb24gdGhlIG51bWJlciBvZiAnY3VycmVudCcgY29udGV4dHMs
IHNvIHdlIHNob3VsZG4ndCBnZXQgYW55IGRhbmdsaW5nIHN1cmZhY2UKKyAgICAvLyByZWZlcmVu
Y2VzLiBTZWUgU3VyZmFjZTo6c2V0SXNDdXJyZW50KGJvb2wpLgorICAgIHN0YXRpYyBGcmFtZWJ1
ZmZlclZrICpDcmVhdGVEZWZhdWx0RkJPKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaW5kb3dTdXJm
YWNlVmsgKmJhY2tidWZmZXIpOworCiAgICAgfkZyYW1lYnVmZmVyVmsoKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGRlc3Ryb3koQ29udGV4dEltcGwgKmNvbnRleHRJbXBsKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRlc3Ryb3lEZWZhdWx0KERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJpZGU7CiAK
ICAgICBnbDo6RXJyb3IgZGlzY2FyZChzaXplX3QgY291bnQsIGNvbnN0IEdMZW51bSAqYXR0YWNo
bWVudHMpIG92ZXJyaWRlOwogICAgIGdsOjpFcnJvciBpbnZhbGlkYXRlKHNpemVfdCBjb3VudCwg
Y29uc3QgR0xlbnVtICphdHRhY2htZW50cykgb3ZlcnJpZGU7CkBAIC02Miw3ICs3NSwyNyBAQCBj
bGFzcyBGcmFtZWJ1ZmZlclZrIDogcHVibGljIEZyYW1lYnVmZmVySW1wbAogCiAgICAgYm9vbCBj
aGVja1N0YXR1cygpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdm9pZCBzeW5jU3RhdGUoY29uc3Qg
Z2w6OkZyYW1lYnVmZmVyOjpEaXJ0eUJpdHMgJmRpcnR5Qml0cykgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzeW5jU3RhdGUoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsLCBjb25zdCBnbDo6RnJhbWVidWZm
ZXI6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVycmlkZTsKKworICAgIGdsOjpFcnJvciBnZXRT
YW1wbGVQb3NpdGlvbihzaXplX3QgaW5kZXgsIEdMZmxvYXQgKnh5KSBjb25zdCBvdmVycmlkZTsK
KworICAgIGdsOjpFcnJvciBiZWdpblJlbmRlclBhc3MoVmtEZXZpY2UgZGV2aWNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdms6OkNvbW1hbmRCdWZmZXIgKmNvbW1hbmRCdWZmZXIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJpYWwgcXVldWVTZXJpYWwsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6U3RhdGUgJmdsU3RhdGUpOworCisg
ICAgZ2w6OkVycm9yT3JSZXN1bHQ8dms6OlJlbmRlclBhc3MgKj4gZ2V0UmVuZGVyUGFzcyhWa0Rl
dmljZSBkZXZpY2UpOworCisgIHByaXZhdGU6CisgICAgRnJhbWVidWZmZXJWayhjb25zdCBnbDo6
RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpOworICAgIEZyYW1lYnVmZmVyVmsoY29uc3QgZ2w6OkZy
YW1lYnVmZmVyU3RhdGUgJnN0YXRlLCBXaW5kb3dTdXJmYWNlVmsgKmJhY2tidWZmZXIpOworCisg
ICAgZ2w6OkVycm9yT3JSZXN1bHQ8dms6OkZyYW1lYnVmZmVyICo+IGdldEZyYW1lYnVmZmVyKFZr
RGV2aWNlIGRldmljZSk7CisKKyAgICBXaW5kb3dTdXJmYWNlVmsgKm1CYWNrYnVmZmVyOworCisg
ICAgdms6OlJlbmRlclBhc3MgbVJlbmRlclBhc3M7CisgICAgdms6OkZyYW1lYnVmZmVyIG1GcmFt
ZWJ1ZmZlcjsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9HbHNsYW5nV3JhcHBl
ci5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL0dsc2xhbmdXcmFwcGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMC4uNTg3MWM1NGE2MjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0dsc2xhbmdXcmFwcGVyLmNwcApAQCAt
MCwwICsxLDEyMSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBHbHNsYW5nV3JhcHBlcjogV3JhcHBlciBm
b3IgVnVsa2FuJ3MgZ2xzbGFuZyBjb21waWxlci4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vR2xzbGFuZ1dyYXBwZXIuaCIKKworLy8gZ2xzbGFuZydzIHZlcnNpb24g
b2YgU2hhZGVyTGFuZy5oLCBub3QgdG8gYmUgY29uZnVzZWQgd2l0aCBBTkdMRSdzLgorLy8gT3Vy
IGZ1bmN0aW9uIGRlZnMgY29uZmxpY3Qgd2l0aCB0aGVpcnMsIGJ1dCB3ZSBjYXJlZnVsbHkgbWFu
YWdlIG91ciBpbmNsdWRlcyB0byBwcmV2ZW50IHRoaXMuCisjaW5jbHVkZSA8U2hhZGVyTGFuZy5o
PgorCisvLyBPdGhlciBnbHNsYW5nIGluY2x1ZGVzLgorI2luY2x1ZGUgPFN0YW5kQWxvbmUvUmVz
b3VyY2VMaW1pdHMuaD4KKyNpbmNsdWRlIDxTUElSVi9HbHNsYW5nVG9TcHYuaD4KKworI2luY2x1
ZGUgPGFycmF5PgorCituYW1lc3BhY2UgcngKK3sKKworLy8gc3RhdGljCitHbHNsYW5nV3JhcHBl
ciAqR2xzbGFuZ1dyYXBwZXI6Om1JbnN0YW5jZSA9IG51bGxwdHI7CisKKy8vIHN0YXRpYworR2xz
bGFuZ1dyYXBwZXIgKkdsc2xhbmdXcmFwcGVyOjpHZXRSZWZlcmVuY2UoKQoreworICAgIGlmICgh
bUluc3RhbmNlKQorICAgIHsKKyAgICAgICAgbUluc3RhbmNlID0gbmV3IEdsc2xhbmdXcmFwcGVy
KCk7CisgICAgfQorCisgICAgbUluc3RhbmNlLT5hZGRSZWYoKTsKKworICAgIHJldHVybiBtSW5z
dGFuY2U7Cit9CisKKy8vIHN0YXRpYwordm9pZCBHbHNsYW5nV3JhcHBlcjo6UmVsZWFzZVJlZmVy
ZW5jZSgpCit7CisgICAgaWYgKG1JbnN0YW5jZS0+Z2V0UmVmQ291bnQoKSA9PSAxKQorICAgIHsK
KyAgICAgICAgbUluc3RhbmNlLT5yZWxlYXNlKCk7CisgICAgICAgIG1JbnN0YW5jZSA9IG51bGxw
dHI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIG1JbnN0YW5jZS0+cmVsZWFzZSgp
OworICAgIH0KK30KKworR2xzbGFuZ1dyYXBwZXI6Okdsc2xhbmdXcmFwcGVyKCkKK3sKKyAgICBp
bnQgcmVzdWx0ID0gU2hJbml0aWFsaXplKCk7CisgICAgQVNTRVJUKHJlc3VsdCAhPSAwKTsKK30K
KworR2xzbGFuZ1dyYXBwZXI6On5HbHNsYW5nV3JhcHBlcigpCit7CisgICAgaW50IHJlc3VsdCA9
IFNoRmluYWxpemUoKTsKKyAgICBBU1NFUlQocmVzdWx0ICE9IDApOworfQorCitMaW5rUmVzdWx0
IEdsc2xhbmdXcmFwcGVyOjpsaW5rUHJvZ3JhbShjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U291
cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcgJmZyYWdtZW50U291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+ICp2ZXJ0ZXhDb2RlT3V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+ICpmcmFnbWVu
dENvZGVPdXQpCit7CisgICAgc3RkOjphcnJheTxjb25zdCBjaGFyICosIDI+IHN0cmluZ3MgPSB7
e3ZlcnRleFNvdXJjZS5jX3N0cigpLCBmcmFnbWVudFNvdXJjZS5jX3N0cigpfX07CisKKyAgICBz
dGQ6OmFycmF5PGludCwgMj4gbGVuZ3RocyA9IHsKKyAgICAgICAge3N0YXRpY19jYXN0PGludD4o
dmVydGV4U291cmNlLmxlbmd0aCgpKSwgc3RhdGljX2Nhc3Q8aW50PihmcmFnbWVudFNvdXJjZS5s
ZW5ndGgoKSl9fTsKKworICAgIC8vIEVuYWJsZSBTUElSLVYgYW5kIFZ1bGthbiBydWxlcyB3aGVu
IHBhcnNpbmcgR0xTTAorICAgIEVTaE1lc3NhZ2VzIG1lc3NhZ2VzID0gc3RhdGljX2Nhc3Q8RVNo
TWVzc2FnZXM+KEVTaE1zZ1NwdlJ1bGVzIHwgRVNoTXNnVnVsa2FuUnVsZXMpOworCisgICAgZ2xz
bGFuZzo6VFNoYWRlciB2ZXJ0ZXhTaGFkZXIoRVNoTGFuZ1ZlcnRleCk7CisgICAgdmVydGV4U2hh
ZGVyLnNldFN0cmluZ3NXaXRoTGVuZ3Rocygmc3RyaW5nc1swXSwgJmxlbmd0aHNbMF0sIDEpOwor
ICAgIHZlcnRleFNoYWRlci5zZXRFbnRyeVBvaW50KCJtYWluIik7CisgICAgYm9vbCB2ZXJ0ZXhS
ZXN1bHQgPSB2ZXJ0ZXhTaGFkZXIucGFyc2UoJmdsc2xhbmc6OkRlZmF1bHRUQnVpbHRJblJlc291
cmNlLCA0NTAsIEVDb3JlUHJvZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmYWxzZSwgZmFsc2UsIG1lc3NhZ2VzKTsKKyAgICBpZiAoIXZlcnRleFJlc3Vs
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6SW50ZXJuYWxFcnJvcigpIDw8ICJJbnRlcm5h
bCBlcnJvciBwYXJzaW5nIFZ1bGthbiB2ZXJ0ZXggc2hhZGVyOlxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA8PCB2ZXJ0ZXhTaGFkZXIuZ2V0SW5mb0xvZygpIDw8ICJcbiIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgdmVydGV4U2hhZGVyLmdldElu
Zm9EZWJ1Z0xvZygpIDw8ICJcbiI7CisgICAgfQorCisgICAgZ2xzbGFuZzo6VFNoYWRlciBmcmFn
bWVudFNoYWRlcihFU2hMYW5nRnJhZ21lbnQpOworICAgIGZyYWdtZW50U2hhZGVyLnNldFN0cmlu
Z3NXaXRoTGVuZ3Rocygmc3RyaW5nc1sxXSwgJmxlbmd0aHNbMV0sIDEpOworICAgIGZyYWdtZW50
U2hhZGVyLnNldEVudHJ5UG9pbnQoIm1haW4iKTsKKyAgICBib29sIGZyYWdtZW50UmVzdWx0ID0g
ZnJhZ21lbnRTaGFkZXIucGFyc2UoJmdsc2xhbmc6OkRlZmF1bHRUQnVpbHRJblJlc291cmNlLCA0
NTAsIEVDb3JlUHJvZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmFsc2UsIGZhbHNlLCBtZXNzYWdlcyk7CisgICAgaWYgKCFmcmFnbWVudFJlc3Vs
dCkKKyAgICB7CisgICAgICAgIHJldHVybiBnbDo6SW50ZXJuYWxFcnJvcigpIDw8ICJJbnRlcm5h
bCBlcnJvciBwYXJzaW5nIFZ1bGthbiBmcmFnbWVudCBzaGFkZXI6XG4iCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDw8IGZyYWdtZW50U2hhZGVyLmdldEluZm9Mb2coKSA8PCAi
XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IGZyYWdtZW50U2hhZGVy
LmdldEluZm9EZWJ1Z0xvZygpIDw8ICJcbiI7CisgICAgfQorCisgICAgZ2xzbGFuZzo6VFByb2dy
YW0gcHJvZ3JhbTsKKyAgICBwcm9ncmFtLmFkZFNoYWRlcigmdmVydGV4U2hhZGVyKTsKKyAgICBw
cm9ncmFtLmFkZFNoYWRlcigmZnJhZ21lbnRTaGFkZXIpOworICAgIGJvb2wgbGlua1Jlc3VsdCA9
IHByb2dyYW0ubGluayhtZXNzYWdlcyk7CisgICAgaWYgKCFsaW5rUmVzdWx0KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGdsOjpJbnRlcm5hbEVycm9yKCkgPDwgIkludGVybmFsIGVycm9yIGxpbmtp
bmcgVnVsa2FuIHNoYWRlcnM6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDw8IHByb2dyYW0uZ2V0SW5mb0xvZygpIDw8ICJcbiI7CisgICAgfQorCisgICAgZ2xzbGFuZzo6
VEludGVybWVkaWF0ZSAqdmVydGV4U3RhZ2UgICA9IHByb2dyYW0uZ2V0SW50ZXJtZWRpYXRlKEVT
aExhbmdWZXJ0ZXgpOworICAgIGdsc2xhbmc6OlRJbnRlcm1lZGlhdGUgKmZyYWdtZW50U3RhZ2Ug
PSBwcm9ncmFtLmdldEludGVybWVkaWF0ZShFU2hMYW5nRnJhZ21lbnQpOworICAgIGdsc2xhbmc6
Okdsc2xhbmdUb1NwdigqdmVydGV4U3RhZ2UsICp2ZXJ0ZXhDb2RlT3V0KTsKKyAgICBnbHNsYW5n
OjpHbHNsYW5nVG9TcHYoKmZyYWdtZW50U3RhZ2UsICpmcmFnbWVudENvZGVPdXQpOworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9HbHNsYW5nV3Jh
cHBlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9HbHNsYW5nV3JhcHBlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwLi5kYTg0OGI3MTE3MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vR2xzbGFuZ1dyYXBwZXIuaApAQCAtMCww
ICsxLDQwIEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIEdsc2xhbmdXcmFwcGVyOiBXcmFwcGVyIGZvciBW
dWxrYW4ncyBnbHNsYW5nIGNvbXBpbGVyLgorLy8KKworI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJF
Ul9WVUxLQU5fR0xTTEFOR19XUkFQUEVSX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZV
TEtBTl9HTFNMQU5HX1dSQVBQRVJfSF8KKworI2luY2x1ZGUgImxpYkFOR0xFL1JlZkNvdW50T2Jq
ZWN0LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUltcGwuaCIKKworbmFt
ZXNwYWNlIHJ4Cit7CisKK2NsYXNzIEdsc2xhbmdXcmFwcGVyIDogcHVibGljIFJlZkNvdW50T2Jq
ZWN0Tm9JRAoreworICBwdWJsaWM6CisgICAgLy8gSW5jcmVhc2VzIHRoZSByZWZlcmVuY2UgY291
bnQuCisgICAgLy8gVE9ETyhqbWFkaWxsKTogRGV0ZXJtaW5lIGhvdyB0byBoYW5kbGUgdGhpcyBh
dG9taWNhbGx5LgorICAgIHN0YXRpYyBHbHNsYW5nV3JhcHBlciAqR2V0UmVmZXJlbmNlKCk7Cisg
ICAgc3RhdGljIHZvaWQgUmVsZWFzZVJlZmVyZW5jZSgpOworCisgICAgTGlua1Jlc3VsdCBsaW5r
UHJvZ3JhbShjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U291cmNlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U291cmNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+ICp2ZXJ0ZXhDb2RlT3V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8dWludDMyX3Q+ICpmcmFnbWVu
dENvZGVPdXQpOworCisgIHByaXZhdGU6CisgICAgR2xzbGFuZ1dyYXBwZXIoKTsKKyAgICB+R2xz
bGFuZ1dyYXBwZXIoKSBvdmVycmlkZTsKKworICAgIHN0YXRpYyBHbHNsYW5nV3JhcHBlciAqbUlu
c3RhbmNlOworfTsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVf
UkVOREVSRVJfVlVMS0FOX0dMU0xBTkdfV1JBUFBFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtVmsuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Q
cm9ncmFtVmsuY3BwCmluZGV4IDU5MWNmMDYyYzUzLi42ZTUzODgzZGY4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9n
cmFtVmsuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vUHJvZ3JhbVZrLmNwcApAQCAtMTAsNiArMTAsOSBAQAogI2luY2x1ZGUgImxp
YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtVmsuaCIKIAogI2luY2x1ZGUgImNvbW1vbi9k
ZWJ1Zy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vR2xzbGFuZ1dyYXBwZXIuaCIKKyNp
bmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5oIgogCiBuYW1lc3Bh
Y2UgcngKIHsKQEAgLTIyLDEwICsyNSwyMSBAQCBQcm9ncmFtVms6On5Qcm9ncmFtVmsoKQogewog
fQogCi1MaW5rUmVzdWx0IFByb2dyYW1Wazo6bG9hZChnbDo6SW5mb0xvZyAmaW5mb0xvZywgZ2w6
OkJpbmFyeUlucHV0U3RyZWFtICpzdHJlYW0pCit2b2lkIFByb2dyYW1Wazo6ZGVzdHJveShjb25z
dCBDb250ZXh0SW1wbCAqY29udGV4dEltcGwpCit7CisgICAgVmtEZXZpY2UgZGV2aWNlID0gR2V0
QXM8Q29udGV4dFZrPihjb250ZXh0SW1wbCktPmdldERldmljZSgpOworCisgICAgbUxpbmtlZEZy
YWdtZW50TW9kdWxlLmRlc3Ryb3koZGV2aWNlKTsKKyAgICBtTGlua2VkVmVydGV4TW9kdWxlLmRl
c3Ryb3koZGV2aWNlKTsKKyAgICBtUGlwZWxpbmVMYXlvdXQuZGVzdHJveShkZXZpY2UpOworfQor
CitMaW5rUmVzdWx0IFByb2dyYW1Wazo6bG9hZChjb25zdCBDb250ZXh0SW1wbCAqY29udGV4dElt
cGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SW5mb0xvZyAmaW5mb0xvZywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3RyZWFtKQog
ewogICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gTGlua1Jlc3VsdChmYWxzZSwgZ2w6
OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTik7CiB9CiAKIGdsOjpFcnJvciBQcm9ncmFtVms6OnNhdmUoZ2w6OkJp
bmFyeU91dHB1dFN0cmVhbSAqc3RyZWFtKQpAQCAtMzksMTAgKzUzLDY1IEBAIHZvaWQgUHJvZ3Jh
bVZrOjpzZXRCaW5hcnlSZXRyaWV2YWJsZUhpbnQoYm9vbCByZXRyaWV2YWJsZSkKICAgICBVTklN
UExFTUVOVEVEKCk7CiB9CiAKLUxpbmtSZXN1bHQgUHJvZ3JhbVZrOjpsaW5rKGNvbnN0IGdsOjpD
b250ZXh0U3RhdGUgJmRhdGEsIGdsOjpJbmZvTG9nICZpbmZvTG9nKQordm9pZCBQcm9ncmFtVms6
OnNldFNlcGFyYWJsZShib29sIHNlcGFyYWJsZSkKIHsKICAgICBVTklNUExFTUVOVEVEKCk7Ci0g
ICAgcmV0dXJuIExpbmtSZXN1bHQoZmFsc2UsIGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOworfQorCitMaW5rUmVzdWx0IFByb2dyYW1Wazo6bGluayhDb250ZXh0SW1wbCAqY29udGV4
dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6VmFyeWluZ1BhY2tp
bmcgJnBhY2tpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnbDo6SW5mb0xvZyAmaW5m
b0xvZykKK3sKKyAgICBDb250ZXh0VmsgKmNvbnRleHQgICAgICAgICAgICAgPSBHZXRBczxDb250
ZXh0Vms+KGNvbnRleHRJbXBsKTsKKyAgICBSZW5kZXJlclZrICpyZW5kZXJlciAgICAgICAgICAg
PSBjb250ZXh0LT5nZXRSZW5kZXJlcigpOworICAgIEdsc2xhbmdXcmFwcGVyICpnbHNsYW5nV3Jh
cHBlciA9IHJlbmRlcmVyLT5nZXRHbHNsYW5nV3JhcHBlcigpOworCisgICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnZlcnRleFNvdXJjZSAgID0gbVN0YXRlLmdldEF0dGFjaGVkVmVydGV4U2hhZGVyKCkt
PmdldFRyYW5zbGF0ZWRTb3VyY2UoKTsKKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRT
b3VyY2UgPSBtU3RhdGUuZ2V0QXR0YWNoZWRGcmFnbWVudFNoYWRlcigpLT5nZXRUcmFuc2xhdGVk
U291cmNlKCk7CisKKyAgICBzdGQ6OnZlY3Rvcjx1aW50MzJfdD4gdmVydGV4Q29kZTsKKyAgICBz
dGQ6OnZlY3Rvcjx1aW50MzJfdD4gZnJhZ21lbnRDb2RlOworICAgIGJvb2wgbGlua1N1Y2Nlc3Mg
PSBmYWxzZTsKKyAgICBBTkdMRV9UUllfUkVTVUxUKAorICAgICAgICBnbHNsYW5nV3JhcHBlci0+
bGlua1Byb2dyYW0odmVydGV4U291cmNlLCBmcmFnbWVudFNvdXJjZSwgJnZlcnRleENvZGUsICZm
cmFnbWVudENvZGUpLAorICAgICAgICBsaW5rU3VjY2Vzcyk7CisgICAgaWYgKCFsaW5rU3VjY2Vz
cykKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICB2azo6U2hhZGVy
TW9kdWxlIHZlcnRleE1vZHVsZTsKKyAgICB2azo6U2hhZGVyTW9kdWxlIGZyYWdtZW50TW9kdWxl
OworICAgIFZrRGV2aWNlIGRldmljZSA9IHJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIHsK
KyAgICAgICAgVmtTaGFkZXJNb2R1bGVDcmVhdGVJbmZvIHZlcnRleFNoYWRlckluZm87CisgICAg
ICAgIHZlcnRleFNoYWRlckluZm8uc1R5cGUgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9TSEFERVJf
TU9EVUxFX0NSRUFURV9JTkZPOworICAgICAgICB2ZXJ0ZXhTaGFkZXJJbmZvLnBOZXh0ICAgID0g
bnVsbHB0cjsKKyAgICAgICAgdmVydGV4U2hhZGVySW5mby5mbGFncyAgICA9IDA7CisgICAgICAg
IHZlcnRleFNoYWRlckluZm8uY29kZVNpemUgPSB2ZXJ0ZXhDb2RlLnNpemUoKSAqIHNpemVvZih1
aW50MzJfdCk7CisgICAgICAgIHZlcnRleFNoYWRlckluZm8ucENvZGUgICAgPSB2ZXJ0ZXhDb2Rl
LmRhdGEoKTsKKyAgICAgICAgQU5HTEVfVFJZKHZlcnRleE1vZHVsZS5pbml0KGRldmljZSwgdmVy
dGV4U2hhZGVySW5mbykpOworICAgIH0KKworICAgIHsKKyAgICAgICAgVmtTaGFkZXJNb2R1bGVD
cmVhdGVJbmZvIGZyYWdtZW50U2hhZGVySW5mbzsKKyAgICAgICAgZnJhZ21lbnRTaGFkZXJJbmZv
LnNUeXBlICAgID0gVktfU1RSVUNUVVJFX1RZUEVfU0hBREVSX01PRFVMRV9DUkVBVEVfSU5GTzsK
KyAgICAgICAgZnJhZ21lbnRTaGFkZXJJbmZvLnBOZXh0ICAgID0gbnVsbHB0cjsKKyAgICAgICAg
ZnJhZ21lbnRTaGFkZXJJbmZvLmZsYWdzICAgID0gMDsKKyAgICAgICAgZnJhZ21lbnRTaGFkZXJJ
bmZvLmNvZGVTaXplID0gZnJhZ21lbnRDb2RlLnNpemUoKSAqIHNpemVvZih1aW50MzJfdCk7Cisg
ICAgICAgIGZyYWdtZW50U2hhZGVySW5mby5wQ29kZSAgICA9IGZyYWdtZW50Q29kZS5kYXRhKCk7
CisKKyAgICAgICAgQU5HTEVfVFJZKGZyYWdtZW50TW9kdWxlLmluaXQoZGV2aWNlLCBmcmFnbWVu
dFNoYWRlckluZm8pKTsKKyAgICB9CisKKyAgICBtTGlua2VkVmVydGV4TW9kdWxlLnJldGFpbihk
ZXZpY2UsIHN0ZDo6bW92ZSh2ZXJ0ZXhNb2R1bGUpKTsKKyAgICBtTGlua2VkRnJhZ21lbnRNb2R1
bGUucmV0YWluKGRldmljZSwgc3RkOjptb3ZlKGZyYWdtZW50TW9kdWxlKSk7CisKKyAgICAvLyBU
T0RPKGptYWRpbGwpOiBVc2UgcGlwZWxpbmUgY2FjaGUuCisgICAgY29udGV4dC0+aW52YWxpZGF0
ZUN1cnJlbnRQaXBlbGluZSgpOworCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEdMYm9vbGVhbiBQ
cm9ncmFtVms6OnZhbGlkYXRlKGNvbnN0IGdsOjpDYXBzICZjYXBzLCBnbDo6SW5mb0xvZyAqaW5m
b0xvZykKQEAgLTIwOSw0ICsyNzgsMzYgQEAgdm9pZCBQcm9ncmFtVms6OnNldFBhdGhGcmFnbWVu
dElucHV0R2VuKGNvbnN0IHN0ZDo6c3RyaW5nICZpbnB1dE5hbWUsCiAgICAgVU5JTVBMRU1FTlRF
RCgpOwogfQogCitjb25zdCB2azo6U2hhZGVyTW9kdWxlICZQcm9ncmFtVms6OmdldExpbmtlZFZl
cnRleE1vZHVsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1MaW5rZWRWZXJ0ZXhNb2R1bGUuZ2V0
SGFuZGxlKCkgIT0gVktfTlVMTF9IQU5ETEUpOworICAgIHJldHVybiBtTGlua2VkVmVydGV4TW9k
dWxlOworfQorCitjb25zdCB2azo6U2hhZGVyTW9kdWxlICZQcm9ncmFtVms6OmdldExpbmtlZEZy
YWdtZW50TW9kdWxlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobUxpbmtlZEZyYWdtZW50TW9kdWxl
LmdldEhhbmRsZSgpICE9IFZLX05VTExfSEFORExFKTsKKyAgICByZXR1cm4gbUxpbmtlZEZyYWdt
ZW50TW9kdWxlOworfQorCitnbDo6RXJyb3JPclJlc3VsdDx2azo6UGlwZWxpbmVMYXlvdXQgKj4g
UHJvZ3JhbVZrOjpnZXRQaXBlbGluZUxheW91dChWa0RldmljZSBkZXZpY2UpCit7CisgICAgdms6
OlBpcGVsaW5lTGF5b3V0IG5ld0xheW91dDsKKworICAgIC8vIFRPRE8oam1hZGlsbCk6IERlc2Ny
aXB0b3Igc2V0cy4KKyAgICBWa1BpcGVsaW5lTGF5b3V0Q3JlYXRlSW5mbyBjcmVhdGVJbmZvOwor
ICAgIGNyZWF0ZUluZm8uc1R5cGUgICAgICAgICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBF
X1BJUEVMSU5FX0xBWU9VVF9DUkVBVEVfSU5GTzsKKyAgICBjcmVhdGVJbmZvLnBOZXh0ICAgICAg
ICAgICAgICAgICAgPSBudWxscHRyOworICAgIGNyZWF0ZUluZm8uZmxhZ3MgICAgICAgICAgICAg
ICAgICA9IDA7CisgICAgY3JlYXRlSW5mby5zZXRMYXlvdXRDb3VudCAgICAgICAgID0gMDsKKyAg
ICBjcmVhdGVJbmZvLnBTZXRMYXlvdXRzICAgICAgICAgICAgPSBudWxscHRyOworICAgIGNyZWF0
ZUluZm8ucHVzaENvbnN0YW50UmFuZ2VDb3VudCA9IDA7CisgICAgY3JlYXRlSW5mby5wUHVzaENv
bnN0YW50UmFuZ2VzICAgID0gbnVsbHB0cjsKKworICAgIEFOR0xFX1RSWShuZXdMYXlvdXQuaW5p
dChkZXZpY2UsIGNyZWF0ZUluZm8pKTsKKyAgICBtUGlwZWxpbmVMYXlvdXQucmV0YWluKGRldmlj
ZSwgc3RkOjptb3ZlKG5ld0xheW91dCkpOworCisgICAgcmV0dXJuICZtUGlwZWxpbmVMYXlvdXQ7
Cit9CisKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtVmsuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbVZrLmgK
aW5kZXggOGQ4YTFmN2NhNGUuLmZmOGVmYzVkMmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Byb2dyYW1Way5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUHJv
Z3JhbVZrLmgKQEAgLTExLDYgKzExLDcgQEAKICNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfVlVM
S0FOX1BST0dSQU1WS19IXwogCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvUHJvZ3JhbUlt
cGwuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vcmVuZGVyZXJ2a191dGls
cy5oIgogCiBuYW1lc3BhY2UgcngKIHsKQEAgLTIwLDEyICsyMSwxOCBAQCBjbGFzcyBQcm9ncmFt
VmsgOiBwdWJsaWMgUHJvZ3JhbUltcGwKICAgcHVibGljOgogICAgIFByb2dyYW1Wayhjb25zdCBn
bDo6UHJvZ3JhbVN0YXRlICZzdGF0ZSk7CiAgICAgflByb2dyYW1WaygpIG92ZXJyaWRlOworICAg
IHZvaWQgZGVzdHJveShjb25zdCBDb250ZXh0SW1wbCAqY29udGV4dEltcGwpIG92ZXJyaWRlOwog
Ci0gICAgTGlua1Jlc3VsdCBsb2FkKGdsOjpJbmZvTG9nICZpbmZvTG9nLCBnbDo6QmluYXJ5SW5w
dXRTdHJlYW0gKnN0cmVhbSkgb3ZlcnJpZGU7CisgICAgTGlua1Jlc3VsdCBsb2FkKGNvbnN0IENv
bnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgZ2w6OkluZm9Mb2cg
JmluZm9Mb2csCisgICAgICAgICAgICAgICAgICAgIGdsOjpCaW5hcnlJbnB1dFN0cmVhbSAqc3Ry
ZWFtKSBvdmVycmlkZTsKICAgICBnbDo6RXJyb3Igc2F2ZShnbDo6QmluYXJ5T3V0cHV0U3RyZWFt
ICpzdHJlYW0pIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0QmluYXJ5UmV0cmlldmFibGVIaW50KGJv
b2wgcmV0cmlldmFibGUpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0U2VwYXJhYmxlKGJvb2wgc2Vw
YXJhYmxlKSBvdmVycmlkZTsKIAotICAgIExpbmtSZXN1bHQgbGluayhjb25zdCBnbDo6Q29udGV4
dFN0YXRlICZkYXRhLCBnbDo6SW5mb0xvZyAmaW5mb0xvZykgb3ZlcnJpZGU7CisgICAgTGlua1Jl
c3VsdCBsaW5rKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OlZhcnlpbmdQYWNraW5nICZwYWNraW5nLAorICAgICAgICAgICAgICAgICAgICBn
bDo6SW5mb0xvZyAmaW5mb0xvZykgb3ZlcnJpZGU7CiAgICAgR0xib29sZWFuIHZhbGlkYXRlKGNv
bnN0IGdsOjpDYXBzICZjYXBzLCBnbDo6SW5mb0xvZyAqaW5mb0xvZykgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIHNldFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0
IEdMZmxvYXQgKnYpIG92ZXJyaWRlOwpAQCAtOTMsNiArMTAwLDE1IEBAIGNsYXNzIFByb2dyYW1W
ayA6IHB1YmxpYyBQcm9ncmFtSW1wbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGdlbk1vZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBj
b21wb25lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9h
dCAqY29lZmZzKSBvdmVycmlkZTsKKworICAgIGNvbnN0IHZrOjpTaGFkZXJNb2R1bGUgJmdldExp
bmtlZFZlcnRleE1vZHVsZSgpIGNvbnN0OworICAgIGNvbnN0IHZrOjpTaGFkZXJNb2R1bGUgJmdl
dExpbmtlZEZyYWdtZW50TW9kdWxlKCkgY29uc3Q7CisgICAgZ2w6OkVycm9yT3JSZXN1bHQ8dms6
OlBpcGVsaW5lTGF5b3V0ICo+IGdldFBpcGVsaW5lTGF5b3V0KFZrRGV2aWNlIGRldmljZSk7CisK
KyAgcHJpdmF0ZToKKyAgICB2azo6U2hhZGVyTW9kdWxlIG1MaW5rZWRWZXJ0ZXhNb2R1bGU7Cisg
ICAgdms6OlNoYWRlck1vZHVsZSBtTGlua2VkRnJhZ21lbnRNb2R1bGU7CisgICAgdms6OlBpcGVs
aW5lTGF5b3V0IG1QaXBlbGluZUxheW91dDsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1
bGthbi9SZW5kZXJUYXJnZXRWay5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlclRhcmdldFZrLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjU1OTMyMGFiNzEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRl
clRhcmdldFZrLmNwcApAQCAtMCwwICsxLDI1IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworLy8gUmVuZGVyVGFyZ2V0
Vms6CisvLyAgIFdyYXBwZXIgYXJvdW5kIGEgVnVsa2FuIHJlbmRlcmFibGUgcmVzb3VyY2UsIHVz
aW5nIGFuIEltYWdlVmlldy4KKy8vCisKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vUmVuZGVyVGFyZ2V0VmsuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK1JlbmRlclRhcmdldFZr
OjpSZW5kZXJUYXJnZXRWaygpCisgICAgOiBmb3JtYXQobnVsbHB0ciksCisgICAgICBpbWFnZShu
dWxscHRyKSwKKyAgICAgIGltYWdlVmlldyhudWxscHRyKSwKKyAgICAgIGV4dGVudHMoKSwKKyAg
ICAgIHNhbXBsZXMoVktfU0FNUExFX0NPVU5UXzFfQklUKSwKKyAgICAgIHJlc291cmNlKG51bGxw
dHIpCit7Cit9CisKK30gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJUYXJnZXRWay5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9S
ZW5kZXJUYXJnZXRWay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42
ZGU5ZTA3YmFkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyVGFyZ2V0VmsuaApAQCAtMCwwICsxLDQ2
IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCisvLworLy8gUmVuZGVyVGFyZ2V0Vms6CisvLyAgIFdyYXBwZXIgYXJvdW5kIGEg
VnVsa2FuIHJlbmRlcmFibGUgcmVzb3VyY2UsIHVzaW5nIGFuIEltYWdlVmlldy4KKy8vCisKKyNp
Zm5kZWYgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1JFTkRFUlRBUkdFVFZLX0hfCisjZGVmaW5l
IExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9SRU5ERVJUQVJHRVRWS19IXworCisjaW5jbHVkZSA8
dnVsa2FuL3Z1bGthbi5oPgorCisjaW5jbHVkZSAibGliQU5HTEUvRnJhbWVidWZmZXJBdHRhY2ht
ZW50LmgiCisKK25hbWVzcGFjZSByeAoreworY2xhc3MgUmVzb3VyY2VWazsKKworbmFtZXNwYWNl
IHZrCit7CitzdHJ1Y3QgRm9ybWF0OworY2xhc3MgSW1hZ2U7CitjbGFzcyBJbWFnZVZpZXc7Cit9
CisKKy8vIFRoaXMgaXMgYSB2ZXJ5IGxpZ2h0LXdlaWdodCBjbGFzcyB0aGF0IGRvZXMgbm90IG93
biB0byB0aGUgcmVzb3VyY2VzIGl0IHBvaW50cyB0by4KKy8vIEl0J3MgbWVhbnQgb25seSB0byBj
b3B5IGFjcm9zcyBzb21lIGluZm9ybWF0aW9uIGZyb20gYSBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQg
dG8gdGhlCisvLyBidXNpbmVzcyByZW5kZXJpbmcgbG9naWMuCitjbGFzcyBSZW5kZXJUYXJnZXRW
ayBmaW5hbCA6IHB1YmxpYyBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQKK3sKKyAg
cHVibGljOgorICAgIFJlbmRlclRhcmdldFZrKCk7CisKKyAgICBjb25zdCB2azo6Rm9ybWF0ICpm
b3JtYXQ7CisgICAgdms6OkltYWdlICppbWFnZTsKKyAgICB2azo6SW1hZ2VWaWV3ICppbWFnZVZp
ZXc7CisgICAgZ2w6OkV4dGVudHMgZXh0ZW50czsKKyAgICBWa1NhbXBsZUNvdW50RmxhZ0JpdHMg
c2FtcGxlczsKKyAgICBSZXNvdXJjZVZrICpyZXNvdXJjZTsKK307CisKK30gIC8vIG5hbWVzcGFj
ZSByeAorCisjZW5kaWYgIC8vIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9SRU5ERVJUQVJHRVRW
S19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3Jl
bmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5jcHAKaW5kZXggYTlkYzFmNjc5
YWYuLjFjYTYyNDkyMmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlcmVyVmsuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJWay5jcHAK
QEAgLTksMTcgKzksNTE3IEBACiAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
UmVuZGVyZXJWay5oIgogCisvLyBQbGFjaW5nIHRoaXMgZmlyc3Qgc2VlbXMgdG8gc29sdmUgYW4g
aW50ZWxsaXNlbnNlIGJ1Zy4KKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vcmVu
ZGVyZXJ2a191dGlscy5oIgorCisjaW5jbHVkZSA8RUdML2VnbGV4dC5oPgorCiAjaW5jbHVkZSAi
Y29tbW9uL2RlYnVnLmgiCisjaW5jbHVkZSAiY29tbW9uL3N5c3RlbV91dGlscy5oIgorI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2RyaXZlcl91dGlscy5oIgorI2luY2x1ZGUgImxpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9Db21waWxlclZrLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL0ZyYW1lYnVmZmVyVmsuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vR2xzbGFuZ1dyYXBwZXIuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vVGV4dHVyZVZrLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1ZlcnRl
eEFycmF5VmsuaCIKKyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vZm9ybWF0dXRp
bHN2ay5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1BsYXRmb3JtLmgiCiAKIG5hbWVzcGFjZSByeAog
ewogCi1SZW5kZXJlclZrOjpSZW5kZXJlclZrKCkgOiBtQ2Fwc0luaXRpYWxpemVkKGZhbHNlKQor
bmFtZXNwYWNlCit7CisKK1ZrUmVzdWx0IFZlcmlmeUV4dGVuc2lvbnNQcmVzZW50KGNvbnN0IHN0
ZDo6dmVjdG9yPFZrRXh0ZW5zaW9uUHJvcGVydGllcz4gJmV4dGVuc2lvblByb3BzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3QgY2hhciAq
PiAmZW5hYmxlZEV4dGVuc2lvbk5hbWVzKQogeworICAgIC8vIENvbXBpbGUgdGhlIGV4dGVuc2lv
bnMgbmFtZXMgaW50byBhIHNldC4KKyAgICBzdGQ6OnNldDxzdGQ6OnN0cmluZz4gZXh0ZW5zaW9u
TmFtZXM7CisgICAgZm9yIChjb25zdCBhdXRvICZleHRlbnNpb25Qcm9wIDogZXh0ZW5zaW9uUHJv
cHMpCisgICAgeworICAgICAgICBleHRlbnNpb25OYW1lcy5pbnNlcnQoZXh0ZW5zaW9uUHJvcC5l
eHRlbnNpb25OYW1lKTsKKyAgICB9CisKKyAgICBmb3IgKGNvbnN0IGF1dG8gJmV4dGVuc2lvbk5h
bWUgOiBlbmFibGVkRXh0ZW5zaW9uTmFtZXMpCisgICAgeworICAgICAgICBpZiAoZXh0ZW5zaW9u
TmFtZXMuY291bnQoZXh0ZW5zaW9uTmFtZSkgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIFZLX0VSUk9SX0VYVEVOU0lPTl9OT1RfUFJFU0VOVDsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHJldHVybiBWS19TVUNDRVNTOworfQorCitWa0Jvb2wzMiBWS0FQSV9DQUxMIERlYnVn
UmVwb3J0Q2FsbGJhY2soVmtEZWJ1Z1JlcG9ydEZsYWdzRVhUIGZsYWdzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrRGVidWdSZXBvcnRPYmplY3RUeXBlRVhUIG9i
amVjdFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0
X3Qgb2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf
dCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQz
Ml90IG1lc3NhZ2VDb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IGNoYXIgKmxheWVyUHJlZml4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAqdXNlckRhdGEpCit7CisgICAgaWYgKChmbGFncyAmIFZLX0RF
QlVHX1JFUE9SVF9FUlJPUl9CSVRfRVhUKSAhPSAwKQorICAgIHsKKyAgICAgICAgRVJSKCkgPDwg
bWVzc2FnZTsKKyNpZiAhZGVmaW5lZChOREVCVUcpCisgICAgICAgIC8vIEFib3J0IHRoZSBjYWxs
IGluIERlYnVnIGJ1aWxkcy4KKyAgICAgICAgcmV0dXJuIFZLX1RSVUU7CisjZW5kaWYKKyAgICB9
CisgICAgZWxzZSBpZiAoKGZsYWdzICYgVktfREVCVUdfUkVQT1JUX1dBUk5JTkdfQklUX0VYVCkg
IT0gMCkKKyAgICB7CisgICAgICAgIFdBUk4oKSA8PCBtZXNzYWdlOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICAvLyBVbmNvbW1lbnQgdGhpcyBpZiB5b3Ugd2FudCBWdWxrYW4gc3Bh
bS4KKyAgICAgICAgLy8gV0FSTigpIDw8IG1lc3NhZ2U7CisgICAgfQorCisgICAgcmV0dXJuIFZL
X0ZBTFNFOworfQorCit9ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKK1JlbmRlcmVyVms6OlJl
bmRlcmVyVmsoKQorICAgIDogbUNhcHNJbml0aWFsaXplZChmYWxzZSksCisgICAgICBtSW5zdGFu
Y2UoVktfTlVMTF9IQU5ETEUpLAorICAgICAgbUVuYWJsZVZhbGlkYXRpb25MYXllcnMoZmFsc2Up
LAorICAgICAgbURlYnVnUmVwb3J0Q2FsbGJhY2soVktfTlVMTF9IQU5ETEUpLAorICAgICAgbVBo
eXNpY2FsRGV2aWNlKFZLX05VTExfSEFORExFKSwKKyAgICAgIG1RdWV1ZShWS19OVUxMX0hBTkRM
RSksCisgICAgICBtQ3VycmVudFF1ZXVlRmFtaWx5SW5kZXgoc3RkOjpudW1lcmljX2xpbWl0czx1
aW50MzJfdD46Om1heCgpKSwKKyAgICAgIG1EZXZpY2UoVktfTlVMTF9IQU5ETEUpLAorICAgICAg
bUhvc3RWaXNpYmxlTWVtb3J5SW5kZXgoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1h
eCgpKSwKKyAgICAgIG1HbHNsYW5nV3JhcHBlcihudWxscHRyKSwKKyAgICAgIG1DdXJyZW50UXVl
dWVTZXJpYWwoKSwKKyAgICAgIG1MYXN0Q29tcGxldGVkUXVldWVTZXJpYWwoKSwKKyAgICAgIG1J
bkZsaWdodENvbW1hbmRzKCkKK3sKKyAgICArK21DdXJyZW50UXVldWVTZXJpYWw7CiB9CiAKIFJl
bmRlcmVyVms6On5SZW5kZXJlclZrKCkKIHsKKyAgICBpZiAoIW1JbkZsaWdodENvbW1hbmRzLmVt
cHR5KCkpCisgICAgeworICAgICAgICB2azo6RXJyb3IgZXJyb3IgPSBmaW5pc2goKTsKKyAgICAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICAgICAgeworICAgICAgICAgICAgRVJSKCkgPDwg
IkVycm9yIGR1cmluZyBWSyBzaHV0ZG93bjogIiA8PCBlcnJvcjsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGlmIChtR2xzbGFuZ1dyYXBwZXIpCisgICAgeworICAgICAgICBHbHNsYW5nV3JhcHBl
cjo6UmVsZWFzZVJlZmVyZW5jZSgpOworICAgICAgICBtR2xzbGFuZ1dyYXBwZXIgPSBudWxscHRy
OworICAgIH0KKworICAgIGlmIChtQ29tbWFuZEJ1ZmZlci52YWxpZCgpKQorICAgIHsKKyAgICAg
ICAgbUNvbW1hbmRCdWZmZXIuZGVzdHJveShtRGV2aWNlKTsKKyAgICB9CisKKyAgICBpZiAobUNv
bW1hbmRQb29sLnZhbGlkKCkpCisgICAgeworICAgICAgICBtQ29tbWFuZFBvb2wuZGVzdHJveSht
RGV2aWNlKTsKKyAgICB9CisKKyAgICBpZiAobURldmljZSkKKyAgICB7CisgICAgICAgIHZrRGVz
dHJveURldmljZShtRGV2aWNlLCBudWxscHRyKTsKKyAgICAgICAgbURldmljZSA9IFZLX05VTExf
SEFORExFOworICAgIH0KKworICAgIGlmIChtRGVidWdSZXBvcnRDYWxsYmFjaykKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtSW5zdGFuY2UpOworICAgICAgICBhdXRvIGRlc3Ryb3lEZWJ1Z1JlcG9y
dENhbGxiYWNrID0gcmVpbnRlcnByZXRfY2FzdDxQRk5fdmtEZXN0cm95RGVidWdSZXBvcnRDYWxs
YmFja0VYVD4oCisgICAgICAgICAgICB2a0dldEluc3RhbmNlUHJvY0FkZHIobUluc3RhbmNlLCAi
dmtEZXN0cm95RGVidWdSZXBvcnRDYWxsYmFja0VYVCIpKTsKKyAgICAgICAgQVNTRVJUKGRlc3Ry
b3lEZWJ1Z1JlcG9ydENhbGxiYWNrKTsKKyAgICAgICAgZGVzdHJveURlYnVnUmVwb3J0Q2FsbGJh
Y2sobUluc3RhbmNlLCBtRGVidWdSZXBvcnRDYWxsYmFjaywgbnVsbHB0cik7CisgICAgfQorCisg
ICAgaWYgKG1JbnN0YW5jZSkKKyAgICB7CisgICAgICAgIHZrRGVzdHJveUluc3RhbmNlKG1JbnN0
YW5jZSwgbnVsbHB0cik7CisgICAgICAgIG1JbnN0YW5jZSA9IFZLX05VTExfSEFORExFOworICAg
IH0KKworICAgIG1QaHlzaWNhbERldmljZSA9IFZLX05VTExfSEFORExFOworfQorCit2azo6RXJy
b3IgUmVuZGVyZXJWazo6aW5pdGlhbGl6ZShjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmYXR0cmli
cykKK3sKKyNpZiAhZGVmaW5lZChOREVCVUcpCisgICAgLy8gVmFsaWRhdGlvbiBsYXllcnMgZW5h
YmxlZCBieSBkZWZhdWx0IGluIERlYnVnLgorICAgIG1FbmFibGVWYWxpZGF0aW9uTGF5ZXJzID0g
dHJ1ZTsKKyNlbmRpZgorCisgICAgLy8gSWYgc3BlY2lmaWVkIGluIHRoZSBhdHRyaWJ1dGVzLCBv
dmVycmlkZSB0aGUgZGVmYXVsdC4KKyAgICBpZiAoYXR0cmlicy5jb250YWlucyhFR0xfUExBVEZP
Uk1fQU5HTEVfRU5BQkxFX1ZBTElEQVRJT05fTEFZRVJfQU5HTEUpKQorICAgIHsKKyAgICAgICAg
bUVuYWJsZVZhbGlkYXRpb25MYXllcnMgPQorICAgICAgICAgICAgKGF0dHJpYnMuZ2V0KEVHTF9Q
TEFURk9STV9BTkdMRV9FTkFCTEVfVkFMSURBVElPTl9MQVlFUl9BTkdMRSwgRUdMX0ZBTFNFKSA9
PSBFR0xfVFJVRSk7CisgICAgfQorCisgICAgLy8gSWYgd2UncmUgbG9hZGluZyB0aGUgdmFsaWRh
dGlvbiBsYXllcnMsIHdlIGNvdWxkIGJlIHJ1bm5pbmcgZnJvbSBhbnkgcmFuZG9tIGRpcmVjdG9y
eS4KKyAgICAvLyBDaGFuZ2UgdG8gdGhlIGV4ZWN1dGFibGUgZGlyZWN0b3J5IHNvIHdlIGNhbiBm
aW5kIHRoZSBsYXllcnMsIHRoZW4gY2hhbmdlIGJhY2sgdG8gdGhlCisgICAgLy8gcHJldmlvdXMg
ZGlyZWN0b3J5IHRvIGJlIHNhZmUgd2UgZG9uJ3QgZGlzcnVwdCB0aGUgYXBwbGljYXRpb24uCisg
ICAgc3RkOjpzdHJpbmcgcHJldmlvdXNDV0Q7CisKKyAgICBpZiAobUVuYWJsZVZhbGlkYXRpb25M
YXllcnMpCisgICAgeworICAgICAgICBjb25zdCBhdXRvICZjd2QgPSBhbmdsZTo6R2V0Q1dEKCk7
CisgICAgICAgIGlmICghY3dkLnZhbGlkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIEVSUigp
IDw8ICJFcnJvciBnZXR0aW5nIENXRCBmb3IgVnVsa2FuIGxheWVycyBpbml0LiI7CisgICAgICAg
ICAgICBtRW5hYmxlVmFsaWRhdGlvbkxheWVycyA9IGZhbHNlOworICAgICAgICB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcHJldmlvdXNDV0QgPSBjd2QudmFsdWUoKTsK
KyAgICAgICAgfQorICAgICAgICBjb25zdCBjaGFyICpleGVEaXIgPSBhbmdsZTo6R2V0RXhlY3V0
YWJsZURpcmVjdG9yeSgpOworICAgICAgICBhbmdsZTo6U2V0Q1dEKGV4ZURpcik7CisgICAgfQor
CisgICAgLy8gR2F0aGVyIGdsb2JhbCBsYXllciBwcm9wZXJ0aWVzLgorICAgIHVpbnQzMl90IGlu
c3RhbmNlTGF5ZXJDb3VudCA9IDA7CisgICAgQU5HTEVfVktfVFJZKHZrRW51bWVyYXRlSW5zdGFu
Y2VMYXllclByb3BlcnRpZXMoJmluc3RhbmNlTGF5ZXJDb3VudCwgbnVsbHB0cikpOworCisgICAg
c3RkOjp2ZWN0b3I8VmtMYXllclByb3BlcnRpZXM+IGluc3RhbmNlTGF5ZXJQcm9wcyhpbnN0YW5j
ZUxheWVyQ291bnQpOworICAgIGlmIChpbnN0YW5jZUxheWVyQ291bnQgPiAwKQorICAgIHsKKyAg
ICAgICAgQU5HTEVfVktfVFJZKAorICAgICAgICAgICAgdmtFbnVtZXJhdGVJbnN0YW5jZUxheWVy
UHJvcGVydGllcygmaW5zdGFuY2VMYXllckNvdW50LCBpbnN0YW5jZUxheWVyUHJvcHMuZGF0YSgp
KSk7CisgICAgfQorCisgICAgdWludDMyX3QgaW5zdGFuY2VFeHRlbnNpb25Db3VudCA9IDA7Cisg
ICAgQU5HTEVfVktfVFJZKHZrRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzKG51
bGxwdHIsICZpbnN0YW5jZUV4dGVuc2lvbkNvdW50LCBudWxscHRyKSk7CisKKyAgICBzdGQ6OnZl
Y3RvcjxWa0V4dGVuc2lvblByb3BlcnRpZXM+IGluc3RhbmNlRXh0ZW5zaW9uUHJvcHMoaW5zdGFu
Y2VFeHRlbnNpb25Db3VudCk7CisgICAgaWYgKGluc3RhbmNlRXh0ZW5zaW9uQ291bnQgPiAwKQor
ICAgIHsKKyAgICAgICAgQU5HTEVfVktfVFJZKHZrRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Q
cm9wZXJ0aWVzKG51bGxwdHIsICZpbnN0YW5jZUV4dGVuc2lvbkNvdW50LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VF
eHRlbnNpb25Qcm9wcy5kYXRhKCkpKTsKKyAgICB9CisKKyAgICBpZiAobUVuYWJsZVZhbGlkYXRp
b25MYXllcnMpCisgICAgeworICAgICAgICAvLyBWZXJpZnkgdGhlIHN0YW5kYXJkIHZhbGlkYXRp
b24gbGF5ZXJzIGFyZSBhdmFpbGFibGUuCisgICAgICAgIGlmICghSGFzU3RhbmRhcmRWYWxpZGF0
aW9uTGF5ZXIoaW5zdGFuY2VMYXllclByb3BzKSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8g
R2VuZXJhdGUgYW4gZXJyb3IgaWYgdGhlIGF0dHJpYnV0ZSB3YXMgcmVxdWVzdGVkLCB3YXJuaW5n
IG90aGVyd2lzZS4KKyAgICAgICAgICAgIGlmIChhdHRyaWJzLmNvbnRhaW5zKEVHTF9QTEFURk9S
TV9BTkdMRV9FTkFCTEVfVkFMSURBVElPTl9MQVlFUl9BTkdMRSkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgRVJSKCkgPDwgIlZ1bGthbiBzdGFuZGFyZCB2YWxpZGF0aW9uIGxheWVy
cyBhcmUgbWlzc2luZy4iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIFdBUk4oKSA8PCAiVnVsa2FuIHN0YW5kYXJkIHZhbGlk
YXRpb24gbGF5ZXJzIGFyZSBtaXNzaW5nLiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBt
RW5hYmxlVmFsaWRhdGlvbkxheWVycyA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAg
c3RkOjp2ZWN0b3I8Y29uc3QgY2hhciAqPiBlbmFibGVkSW5zdGFuY2VFeHRlbnNpb25zOworICAg
IGVuYWJsZWRJbnN0YW5jZUV4dGVuc2lvbnMucHVzaF9iYWNrKFZLX0tIUl9TVVJGQUNFX0VYVEVO
U0lPTl9OQU1FKTsKKyNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX1dJTkRPV1MpCisgICAgZW5h
YmxlZEluc3RhbmNlRXh0ZW5zaW9ucy5wdXNoX2JhY2soVktfS0hSX1dJTjMyX1NVUkZBQ0VfRVhU
RU5TSU9OX05BTUUpOworI2Vsc2UKKyNlcnJvciBVbnN1cHBvcnRlZCBWdWxrYW4gcGxhdGZvcm0u
CisjZW5kaWYgIC8vIGRlZmluZWQoQU5HTEVfUExBVEZPUk1fV0lORE9XUykKKworICAgIC8vIFRP
RE8oam1hZGlsbCk6IFNob3VsZCBiZSBhYmxlIHRvIGNvbnRpbnVlIGluaXRpYWxpemF0aW9uIGlm
IGRlYnVnIHJlcG9ydCBleHQgbWlzc2luZy4KKyAgICBpZiAobUVuYWJsZVZhbGlkYXRpb25MYXll
cnMpCisgICAgeworICAgICAgICBlbmFibGVkSW5zdGFuY2VFeHRlbnNpb25zLnB1c2hfYmFjayhW
S19FWFRfREVCVUdfUkVQT1JUX0VYVEVOU0lPTl9OQU1FKTsKKyAgICB9CisKKyAgICAvLyBWZXJp
ZnkgdGhlIHJlcXVpcmVkIGV4dGVuc2lvbnMgYXJlIGluIHRoZSBleHRlbnNpb24gbmFtZXMgc2V0
LiBGYWlsIGlmIG5vdC4KKyAgICBBTkdMRV9WS19UUlkoVmVyaWZ5RXh0ZW5zaW9uc1ByZXNlbnQo
aW5zdGFuY2VFeHRlbnNpb25Qcm9wcywgZW5hYmxlZEluc3RhbmNlRXh0ZW5zaW9ucykpOworCisg
ICAgVmtBcHBsaWNhdGlvbkluZm8gYXBwbGljYXRpb25JbmZvOworICAgIGFwcGxpY2F0aW9uSW5m
by5zVHlwZSAgICAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9BUFBMSUNBVElPTl9JTkZP
OworICAgIGFwcGxpY2F0aW9uSW5mby5wTmV4dCAgICAgICAgICAgICAgPSBudWxscHRyOworICAg
IGFwcGxpY2F0aW9uSW5mby5wQXBwbGljYXRpb25OYW1lICAgPSAiQU5HTEUiOworICAgIGFwcGxp
Y2F0aW9uSW5mby5hcHBsaWNhdGlvblZlcnNpb24gPSAxOworICAgIGFwcGxpY2F0aW9uSW5mby5w
RW5naW5lTmFtZSAgICAgICAgPSAiQU5HTEUiOworICAgIGFwcGxpY2F0aW9uSW5mby5lbmdpbmVW
ZXJzaW9uICAgICAgPSAxOworICAgIGFwcGxpY2F0aW9uSW5mby5hcGlWZXJzaW9uICAgICAgICAg
PSBWS19BUElfVkVSU0lPTl8xXzA7CisKKyAgICBWa0luc3RhbmNlQ3JlYXRlSW5mbyBpbnN0YW5j
ZUluZm87CisgICAgaW5zdGFuY2VJbmZvLnNUeXBlICAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVf
VFlQRV9JTlNUQU5DRV9DUkVBVEVfSU5GTzsKKyAgICBpbnN0YW5jZUluZm8ucE5leHQgICAgICAg
ICAgICA9IG51bGxwdHI7CisgICAgaW5zdGFuY2VJbmZvLmZsYWdzICAgICAgICAgICAgPSAwOwor
ICAgIGluc3RhbmNlSW5mby5wQXBwbGljYXRpb25JbmZvID0gJmFwcGxpY2F0aW9uSW5mbzsKKwor
ICAgIC8vIEVuYWJsZSByZXF1ZXN0ZWQgbGF5ZXJzIGFuZCBleHRlbnNpb25zLgorICAgIGluc3Rh
bmNlSW5mby5lbmFibGVkRXh0ZW5zaW9uQ291bnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZW5h
YmxlZEluc3RhbmNlRXh0ZW5zaW9ucy5zaXplKCkpOworICAgIGluc3RhbmNlSW5mby5wcEVuYWJs
ZWRFeHRlbnNpb25OYW1lcyA9CisgICAgICAgIGVuYWJsZWRJbnN0YW5jZUV4dGVuc2lvbnMuZW1w
dHkoKSA/IG51bGxwdHIgOiBlbmFibGVkSW5zdGFuY2VFeHRlbnNpb25zLmRhdGEoKTsKKyAgICBp
bnN0YW5jZUluZm8uZW5hYmxlZExheWVyQ291bnQgPSBtRW5hYmxlVmFsaWRhdGlvbkxheWVycyA/
IDF1IDogMHU7CisgICAgaW5zdGFuY2VJbmZvLnBwRW5hYmxlZExheWVyTmFtZXMgPQorICAgICAg
ICBtRW5hYmxlVmFsaWRhdGlvbkxheWVycyA/ICZnX1ZrU3RkVmFsaWRhdGlvbkxheWVyTmFtZSA6
IG51bGxwdHI7CisKKyAgICBBTkdMRV9WS19UUlkodmtDcmVhdGVJbnN0YW5jZSgmaW5zdGFuY2VJ
bmZvLCBudWxscHRyLCAmbUluc3RhbmNlKSk7CisKKyAgICBpZiAobUVuYWJsZVZhbGlkYXRpb25M
YXllcnMpCisgICAgeworICAgICAgICAvLyBDaGFuZ2UgYmFjayB0byB0aGUgcHJldmlvdXMgd29y
a2luZyBkaXJlY3Rvcnkgbm93IHRoYXQgd2UndmUgbG9hZGVkIHRoZSBpbnN0YW5jZSAtCisgICAg
ICAgIC8vIHRoZSB2YWxpZGF0aW9uIGxheWVycyBzaG91bGQgYmUgbG9hZGVkIGF0IHRoaXMgcG9p
bnQuCisgICAgICAgIGFuZ2xlOjpTZXRDV0QocHJldmlvdXNDV0QuY19zdHIoKSk7CisKKyAgICAg
ICAgVmtEZWJ1Z1JlcG9ydENhbGxiYWNrQ3JlYXRlSW5mb0VYVCBkZWJ1Z1JlcG9ydEluZm87CisK
KyAgICAgICAgZGVidWdSZXBvcnRJbmZvLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfREVCVUdf
UkVQT1JUX0NSRUFURV9JTkZPX0VYVDsKKyAgICAgICAgZGVidWdSZXBvcnRJbmZvLnBOZXh0ID0g
bnVsbHB0cjsKKyAgICAgICAgZGVidWdSZXBvcnRJbmZvLmZsYWdzID0gVktfREVCVUdfUkVQT1JU
X0VSUk9SX0JJVF9FWFQgfCBWS19ERUJVR19SRVBPUlRfV0FSTklOR19CSVRfRVhUIHwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfREVCVUdfUkVQT1JUX1BFUkZPUk1BTkNFX1dB
Uk5JTkdfQklUX0VYVCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0RFQlVH
X1JFUE9SVF9JTkZPUk1BVElPTl9CSVRfRVhUIHwgVktfREVCVUdfUkVQT1JUX0RFQlVHX0JJVF9F
WFQ7CisgICAgICAgIGRlYnVnUmVwb3J0SW5mby5wZm5DYWxsYmFjayA9ICZEZWJ1Z1JlcG9ydENh
bGxiYWNrOworICAgICAgICBkZWJ1Z1JlcG9ydEluZm8ucFVzZXJEYXRhICAgPSB0aGlzOworCisg
ICAgICAgIGF1dG8gY3JlYXRlRGVidWdSZXBvcnRDYWxsYmFjayA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UEZOX3ZrQ3JlYXRlRGVidWdSZXBvcnRDYWxsYmFja0VYVD4oCisgICAgICAgICAgICB2a0dldElu
c3RhbmNlUHJvY0FkZHIobUluc3RhbmNlLCAidmtDcmVhdGVEZWJ1Z1JlcG9ydENhbGxiYWNrRVhU
IikpOworICAgICAgICBBU1NFUlQoY3JlYXRlRGVidWdSZXBvcnRDYWxsYmFjayk7CisgICAgICAg
IEFOR0xFX1ZLX1RSWSgKKyAgICAgICAgICAgIGNyZWF0ZURlYnVnUmVwb3J0Q2FsbGJhY2sobUlu
c3RhbmNlLCAmZGVidWdSZXBvcnRJbmZvLCBudWxscHRyLCAmbURlYnVnUmVwb3J0Q2FsbGJhY2sp
KTsKKyAgICB9CisKKyAgICB1aW50MzJfdCBwaHlzaWNhbERldmljZUNvdW50ID0gMDsKKyAgICBB
TkdMRV9WS19UUlkodmtFbnVtZXJhdGVQaHlzaWNhbERldmljZXMobUluc3RhbmNlLCAmcGh5c2lj
YWxEZXZpY2VDb3VudCwgbnVsbHB0cikpOworICAgIEFOR0xFX1ZLX0NIRUNLKHBoeXNpY2FsRGV2
aWNlQ291bnQgPiAwLCBWS19FUlJPUl9JTklUSUFMSVpBVElPTl9GQUlMRUQpOworCisgICAgLy8g
VE9ETyhqbWFkaWxsKTogSGFuZGxlIG11bHRpcGxlIHBoeXNpY2FsIGRldmljZXMuIEZvciBub3cs
IHVzZSB0aGUgZmlyc3QgZGV2aWNlLgorICAgIHBoeXNpY2FsRGV2aWNlQ291bnQgPSAxOworICAg
IEFOR0xFX1ZLX1RSWSh2a0VudW1lcmF0ZVBoeXNpY2FsRGV2aWNlcyhtSW5zdGFuY2UsICZwaHlz
aWNhbERldmljZUNvdW50LCAmbVBoeXNpY2FsRGV2aWNlKSk7CisKKyAgICB2a0dldFBoeXNpY2Fs
RGV2aWNlUHJvcGVydGllcyhtUGh5c2ljYWxEZXZpY2UsICZtUGh5c2ljYWxEZXZpY2VQcm9wZXJ0
aWVzKTsKKworICAgIC8vIEVuc3VyZSB3ZSBjYW4gZmluZCBhIGdyYXBoaWNzIHF1ZXVlIGZhbWls
eS4KKyAgICB1aW50MzJfdCBxdWV1ZUNvdW50ID0gMDsKKyAgICB2a0dldFBoeXNpY2FsRGV2aWNl
UXVldWVGYW1pbHlQcm9wZXJ0aWVzKG1QaHlzaWNhbERldmljZSwgJnF1ZXVlQ291bnQsIG51bGxw
dHIpOworCisgICAgQU5HTEVfVktfQ0hFQ0socXVldWVDb3VudCA+IDAsIFZLX0VSUk9SX0lOSVRJ
QUxJWkFUSU9OX0ZBSUxFRCk7CisKKyAgICBtUXVldWVGYW1pbHlQcm9wZXJ0aWVzLnJlc2l6ZShx
dWV1ZUNvdW50KTsKKyAgICB2a0dldFBoeXNpY2FsRGV2aWNlUXVldWVGYW1pbHlQcm9wZXJ0aWVz
KG1QaHlzaWNhbERldmljZSwgJnF1ZXVlQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtUXVldWVGYW1pbHlQcm9wZXJ0aWVzLmRhdGEoKSk7CisKKyAg
ICBzaXplX3QgZ3JhcGhpY3NRdWV1ZUZhbWlseUNvdW50ICAgPSBmYWxzZTsKKyAgICB1aW50MzJf
dCBmaXJzdEdyYXBoaWNzUXVldWVGYW1pbHkgPSAwOworICAgIGZvciAodWludDMyX3QgZmFtaWx5
SW5kZXggPSAwOyBmYW1pbHlJbmRleCA8IHF1ZXVlQ291bnQ7ICsrZmFtaWx5SW5kZXgpCisgICAg
eworICAgICAgICBjb25zdCBhdXRvICZxdWV1ZUluZm8gPSBtUXVldWVGYW1pbHlQcm9wZXJ0aWVz
W2ZhbWlseUluZGV4XTsKKyAgICAgICAgaWYgKChxdWV1ZUluZm8ucXVldWVGbGFncyAmIFZLX1FV
RVVFX0dSQVBISUNTX0JJVCkgIT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHF1
ZXVlSW5mby5xdWV1ZUNvdW50ID4gMCk7CisgICAgICAgICAgICBncmFwaGljc1F1ZXVlRmFtaWx5
Q291bnQrKzsKKyAgICAgICAgICAgIGlmIChmaXJzdEdyYXBoaWNzUXVldWVGYW1pbHkgPT0gMCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmaXJzdEdyYXBoaWNzUXVldWVGYW1pbHkg
PSBmYW1pbHlJbmRleDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQorCisgICAgQU5HTEVfVktfQ0hFQ0soZ3JhcGhpY3NRdWV1ZUZhbWlseUNvdW50
ID4gMCwgVktfRVJST1JfSU5JVElBTElaQVRJT05fRkFJTEVEKTsKKworICAgIC8vIElmIG9ubHkg
b25lIHF1ZXVlIGZhbWlseSwgZ28gYWhlYWQgYW5kIGluaXRpYWxpemUgdGhlIGRldmljZS4gSWYg
dGhlcmUgaXMgbW9yZSB0aGFuIG9uZQorICAgIC8vIHF1ZXVlLCB3ZSdsbCBoYXZlIHRvIHdhaXQg
dW50aWwgd2Ugc2VlIGEgV2luZG93U3VyZmFjZSB0byBrbm93IHdoaWNoIHN1cHBvcnRzIHByZXNl
bnQuCisgICAgaWYgKGdyYXBoaWNzUXVldWVGYW1pbHlDb3VudCA9PSAxKQorICAgIHsKKyAgICAg
ICAgQU5HTEVfVFJZKGluaXRpYWxpemVEZXZpY2UoZmlyc3RHcmFwaGljc1F1ZXVlRmFtaWx5KSk7
CisgICAgfQorCisgICAgVmtQaHlzaWNhbERldmljZU1lbW9yeVByb3BlcnRpZXMgbWVtb3J5UHJv
cGVydGllczsKKyAgICB2a0dldFBoeXNpY2FsRGV2aWNlTWVtb3J5UHJvcGVydGllcyhtUGh5c2lj
YWxEZXZpY2UsICZtZW1vcnlQcm9wZXJ0aWVzKTsKKworICAgIGZvciAodWludDMyX3QgbWVtb3J5
SW5kZXggPSAwOyBtZW1vcnlJbmRleCA8IG1lbW9yeVByb3BlcnRpZXMubWVtb3J5VHlwZUNvdW50
OyArK21lbW9yeUluZGV4KQorICAgIHsKKyAgICAgICAgaWYgKChtZW1vcnlQcm9wZXJ0aWVzLm1l
bW9yeVR5cGVzW21lbW9yeUluZGV4XS5wcm9wZXJ0eUZsYWdzICYKKyAgICAgICAgICAgICBWS19N
RU1PUllfUFJPUEVSVFlfSE9TVF9WSVNJQkxFX0JJVCkgIT0gMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgbUhvc3RWaXNpYmxlTWVtb3J5SW5kZXggPSBtZW1vcnlJbmRleDsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgQU5HTEVfVktfQ0hFQ0sobUhvc3RWaXNp
YmxlTWVtb3J5SW5kZXggPCBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCksCisg
ICAgICAgICAgICAgICAgICAgVktfRVJST1JfSU5JVElBTElaQVRJT05fRkFJTEVEKTsKKworICAg
IG1HbHNsYW5nV3JhcHBlciA9IEdsc2xhbmdXcmFwcGVyOjpHZXRSZWZlcmVuY2UoKTsKKworICAg
IHJldHVybiB2azo6Tm9FcnJvcigpOworfQorCit2azo6RXJyb3IgUmVuZGVyZXJWazo6aW5pdGlh
bGl6ZURldmljZSh1aW50MzJfdCBxdWV1ZUZhbWlseUluZGV4KQoreworICAgIHVpbnQzMl90IGRl
dmljZUxheWVyQ291bnQgPSAwOworICAgIEFOR0xFX1ZLX1RSWSh2a0VudW1lcmF0ZURldmljZUxh
eWVyUHJvcGVydGllcyhtUGh5c2ljYWxEZXZpY2UsICZkZXZpY2VMYXllckNvdW50LCBudWxscHRy
KSk7CisKKyAgICBzdGQ6OnZlY3RvcjxWa0xheWVyUHJvcGVydGllcz4gZGV2aWNlTGF5ZXJQcm9w
cyhkZXZpY2VMYXllckNvdW50KTsKKyAgICBpZiAoZGV2aWNlTGF5ZXJDb3VudCA+IDApCisgICAg
eworICAgICAgICBBTkdMRV9WS19UUlkodmtFbnVtZXJhdGVEZXZpY2VMYXllclByb3BlcnRpZXMo
bVBoeXNpY2FsRGV2aWNlLCAmZGV2aWNlTGF5ZXJDb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZUxheWVyUHJvcHMuZGF0YSgp
KSk7CisgICAgfQorCisgICAgdWludDMyX3QgZGV2aWNlRXh0ZW5zaW9uQ291bnQgPSAwOworICAg
IEFOR0xFX1ZLX1RSWSh2a0VudW1lcmF0ZURldmljZUV4dGVuc2lvblByb3BlcnRpZXMobVBoeXNp
Y2FsRGV2aWNlLCBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmRldmljZUV4dGVuc2lvbkNvdW50LCBudWxscHRyKSk7CisKKyAg
ICBzdGQ6OnZlY3RvcjxWa0V4dGVuc2lvblByb3BlcnRpZXM+IGRldmljZUV4dGVuc2lvblByb3Bz
KGRldmljZUV4dGVuc2lvbkNvdW50KTsKKyAgICBpZiAoZGV2aWNlRXh0ZW5zaW9uQ291bnQgPiAw
KQorICAgIHsKKyAgICAgICAgQU5HTEVfVktfVFJZKHZrRW51bWVyYXRlRGV2aWNlRXh0ZW5zaW9u
UHJvcGVydGllcygKKyAgICAgICAgICAgIG1QaHlzaWNhbERldmljZSwgbnVsbHB0ciwgJmRldmlj
ZUV4dGVuc2lvbkNvdW50LCBkZXZpY2VFeHRlbnNpb25Qcm9wcy5kYXRhKCkpKTsKKyAgICB9CisK
KyAgICBpZiAobUVuYWJsZVZhbGlkYXRpb25MYXllcnMpCisgICAgeworICAgICAgICBpZiAoIUhh
c1N0YW5kYXJkVmFsaWRhdGlvbkxheWVyKGRldmljZUxheWVyUHJvcHMpKQorICAgICAgICB7Cisg
ICAgICAgICAgICBXQVJOKCkgPDwgIlZ1bGthbiBzdGFuZGFyZCB2YWxpZGF0aW9uIGxheWVyIGlz
IG1pc3NpbmcuIjsKKyAgICAgICAgICAgIG1FbmFibGVWYWxpZGF0aW9uTGF5ZXJzID0gZmFsc2U7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGQ6OnZlY3Rvcjxjb25zdCBjaGFyICo+IGVuYWJs
ZWREZXZpY2VFeHRlbnNpb25zOworICAgIGVuYWJsZWREZXZpY2VFeHRlbnNpb25zLnB1c2hfYmFj
ayhWS19LSFJfU1dBUENIQUlOX0VYVEVOU0lPTl9OQU1FKTsKKworICAgIEFOR0xFX1ZLX1RSWShW
ZXJpZnlFeHRlbnNpb25zUHJlc2VudChkZXZpY2VFeHRlbnNpb25Qcm9wcywgZW5hYmxlZERldmlj
ZUV4dGVuc2lvbnMpKTsKKworICAgIFZrRGV2aWNlUXVldWVDcmVhdGVJbmZvIHF1ZXVlQ3JlYXRl
SW5mbzsKKworICAgIGZsb2F0IHplcm9Qcmlvcml0eSA9IDAuMGY7CisKKyAgICBxdWV1ZUNyZWF0
ZUluZm8uc1R5cGUgICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX0RFVklDRV9RVUVVRV9D
UkVBVEVfSU5GTzsKKyAgICBxdWV1ZUNyZWF0ZUluZm8ucE5leHQgICAgICAgICAgICA9IG51bGxw
dHI7CisgICAgcXVldWVDcmVhdGVJbmZvLmZsYWdzICAgICAgICAgICAgPSAwOworICAgIHF1ZXVl
Q3JlYXRlSW5mby5xdWV1ZUZhbWlseUluZGV4ID0gcXVldWVGYW1pbHlJbmRleDsKKyAgICBxdWV1
ZUNyZWF0ZUluZm8ucXVldWVDb3VudCAgICAgICA9IDE7CisgICAgcXVldWVDcmVhdGVJbmZvLnBR
dWV1ZVByaW9yaXRpZXMgPSAmemVyb1ByaW9yaXR5OworCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUg
ZGV2aWNlCisgICAgVmtEZXZpY2VDcmVhdGVJbmZvIGNyZWF0ZUluZm87CisKKyAgICBjcmVhdGVJ
bmZvLnNUeXBlICAgICAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfREVWSUNFX0NSRUFU
RV9JTkZPOworICAgIGNyZWF0ZUluZm8ucE5leHQgICAgICAgICAgICAgICAgPSBudWxscHRyOwor
ICAgIGNyZWF0ZUluZm8uZmxhZ3MgICAgICAgICAgICAgICAgPSAwOworICAgIGNyZWF0ZUluZm8u
cXVldWVDcmVhdGVJbmZvQ291bnQgPSAxOworICAgIGNyZWF0ZUluZm8ucFF1ZXVlQ3JlYXRlSW5m
b3MgICAgPSAmcXVldWVDcmVhdGVJbmZvOworICAgIGNyZWF0ZUluZm8uZW5hYmxlZExheWVyQ291
bnQgICAgPSBtRW5hYmxlVmFsaWRhdGlvbkxheWVycyA/IDF1IDogMHU7CisgICAgY3JlYXRlSW5m
by5wcEVuYWJsZWRMYXllck5hbWVzID0KKyAgICAgICAgbUVuYWJsZVZhbGlkYXRpb25MYXllcnMg
PyAmZ19Wa1N0ZFZhbGlkYXRpb25MYXllck5hbWUgOiBudWxscHRyOworICAgIGNyZWF0ZUluZm8u
ZW5hYmxlZEV4dGVuc2lvbkNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGVuYWJsZWREZXZp
Y2VFeHRlbnNpb25zLnNpemUoKSk7CisgICAgY3JlYXRlSW5mby5wcEVuYWJsZWRFeHRlbnNpb25O
YW1lcyA9CisgICAgICAgIGVuYWJsZWREZXZpY2VFeHRlbnNpb25zLmVtcHR5KCkgPyBudWxscHRy
IDogZW5hYmxlZERldmljZUV4dGVuc2lvbnMuZGF0YSgpOworICAgIGNyZWF0ZUluZm8ucEVuYWJs
ZWRGZWF0dXJlcyA9IG51bGxwdHI7ICAvLyBUT0RPKGptYWRpbGwpOiBmZWF0dXJlcworCisgICAg
QU5HTEVfVktfVFJZKHZrQ3JlYXRlRGV2aWNlKG1QaHlzaWNhbERldmljZSwgJmNyZWF0ZUluZm8s
IG51bGxwdHIsICZtRGV2aWNlKSk7CisKKyAgICBtQ3VycmVudFF1ZXVlRmFtaWx5SW5kZXggPSBx
dWV1ZUZhbWlseUluZGV4OworCisgICAgdmtHZXREZXZpY2VRdWV1ZShtRGV2aWNlLCBtQ3VycmVu
dFF1ZXVlRmFtaWx5SW5kZXgsIDAsICZtUXVldWUpOworCisgICAgLy8gSW5pdGlhbGl6ZSB0aGUg
Y29tbWFuZCBwb29sIG5vdyB0aGF0IHdlIGtub3cgdGhlIHF1ZXVlIGZhbWlseSBpbmRleC4KKyAg
ICBWa0NvbW1hbmRQb29sQ3JlYXRlSW5mbyBjb21tYW5kUG9vbEluZm87CisgICAgY29tbWFuZFBv
b2xJbmZvLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfQ09NTUFORF9QT09MX0NSRUFURV9JTkZP
OworICAgIGNvbW1hbmRQb29sSW5mby5wTmV4dCA9IG51bGxwdHI7CisgICAgLy8gVE9ETyhqbWFk
aWxsKTogSW52ZXN0aWdhdGUgdHJhbnNpZW50IGNvbW1hbmQgYnVmZmVycy4KKyAgICBjb21tYW5k
UG9vbEluZm8uZmxhZ3MgICAgICAgICAgICA9IFZLX0NPTU1BTkRfUE9PTF9DUkVBVEVfUkVTRVRf
Q09NTUFORF9CVUZGRVJfQklUOworICAgIGNvbW1hbmRQb29sSW5mby5xdWV1ZUZhbWlseUluZGV4
ID0gbUN1cnJlbnRRdWV1ZUZhbWlseUluZGV4OworCisgICAgQU5HTEVfVFJZKG1Db21tYW5kUG9v
bC5pbml0KG1EZXZpY2UsIGNvbW1hbmRQb29sSW5mbykpOworCisgICAgbUNvbW1hbmRCdWZmZXIu
c2V0Q29tbWFuZFBvb2woJm1Db21tYW5kUG9vbCk7CisKKyAgICByZXR1cm4gdms6Ok5vRXJyb3Io
KTsKK30KKwordms6OkVycm9yT3JSZXN1bHQ8dWludDMyX3Q+IFJlbmRlcmVyVms6OnNlbGVjdFBy
ZXNlbnRRdWV1ZUZvclN1cmZhY2UoVmtTdXJmYWNlS0hSIHN1cmZhY2UpCit7CisgICAgLy8gV2Un
dmUgYWxyZWFkeSBpbml0aWFsaXplZCBhIGRldmljZSwgYW5kIGNhbid0IHJlLWNyZWF0ZSBpdCB1
bmxlc3MgaXQncyBuZXZlciBiZWVuIHVzZWQuCisgICAgLy8gVE9ETyhqbWFkaWxsKTogSGFuZGxl
IHRoZSByZS1jcmVhdGlvbiBjYXNlIGlmIG5lY2Vzc2FyeS4KKyAgICBpZiAobURldmljZSAhPSBW
S19OVUxMX0hBTkRMRSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtQ3VycmVudFF1ZXVlRmFtaWx5
SW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpKTsKKworICAgICAg
ICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCBkZXZpY2Ugc3VwcG9ydHMgcHJlc2VudCBvbiB0aGlz
IHN1cmZhY2UuCisgICAgICAgIFZrQm9vbDMyIHN1cHBvcnRzUHJlc2VudCA9IFZLX0ZBTFNFOwor
ICAgICAgICBBTkdMRV9WS19UUlkodmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VTdXBwb3J0S0hS
KG1QaHlzaWNhbERldmljZSwgbUN1cnJlbnRRdWV1ZUZhbWlseUluZGV4LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cmZhY2UsICZz
dXBwb3J0c1ByZXNlbnQpKTsKKworICAgICAgICByZXR1cm4gKHN1cHBvcnRzUHJlc2VudCA9PSBW
S19UUlVFKTsKKyAgICB9CisKKyAgICAvLyBGaW5kIGEgZ3JhcGhpY3MgYW5kIHByZXNlbnQgcXVl
dWUuCisgICAgT3B0aW9uYWw8dWludDMyX3Q+IG5ld1ByZXNlbnRRdWV1ZTsKKyAgICB1aW50MzJf
dCBxdWV1ZUNvdW50ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1RdWV1ZUZhbWlseVByb3BlcnRp
ZXMuc2l6ZSgpKTsKKyAgICBmb3IgKHVpbnQzMl90IHF1ZXVlSW5kZXggPSAwOyBxdWV1ZUluZGV4
IDwgcXVldWVDb3VudDsgKytxdWV1ZUluZGV4KQorICAgIHsKKyAgICAgICAgY29uc3QgYXV0byAm
cXVldWVJbmZvID0gbVF1ZXVlRmFtaWx5UHJvcGVydGllc1txdWV1ZUluZGV4XTsKKyAgICAgICAg
aWYgKChxdWV1ZUluZm8ucXVldWVGbGFncyAmIFZLX1FVRVVFX0dSQVBISUNTX0JJVCkgIT0gMCkK
KyAgICAgICAgeworICAgICAgICAgICAgVmtCb29sMzIgc3VwcG9ydHNQcmVzZW50ID0gVktfRkFM
U0U7CisgICAgICAgICAgICBBTkdMRV9WS19UUlkodmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VT
dXBwb3J0S0hSKG1QaHlzaWNhbERldmljZSwgcXVldWVJbmRleCwgc3VyZmFjZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1
cHBvcnRzUHJlc2VudCkpOworCisgICAgICAgICAgICBpZiAoc3VwcG9ydHNQcmVzZW50ID09IFZL
X1RSVUUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbmV3UHJlc2VudFF1ZXVlID0g
cXVldWVJbmRleDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIEFOR0xFX1ZLX0NIRUNLKG5ld1ByZXNlbnRRdWV1ZS52YWxpZCgp
LCBWS19FUlJPUl9JTklUSUFMSVpBVElPTl9GQUlMRUQpOworICAgIEFOR0xFX1RSWShpbml0aWFs
aXplRGV2aWNlKG5ld1ByZXNlbnRRdWV1ZS52YWx1ZSgpKSk7CisKKyAgICByZXR1cm4gbmV3UHJl
c2VudFF1ZXVlLnZhbHVlKCk7Cit9CisKK3N0ZDo6c3RyaW5nIFJlbmRlcmVyVms6OmdldFZlbmRv
clN0cmluZygpIGNvbnN0Cit7CisgICAgc3dpdGNoIChtUGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVz
LnZlbmRvcklEKQorICAgIHsKKyAgICAgICAgY2FzZSBWRU5ET1JfSURfQU1EOgorICAgICAgICAg
ICAgcmV0dXJuICJBZHZhbmNlZCBNaWNybyBEZXZpY2VzIjsKKyAgICAgICAgY2FzZSBWRU5ET1Jf
SURfTlZJRElBOgorICAgICAgICAgICAgcmV0dXJuICJOVklESUEiOworICAgICAgICBjYXNlIFZF
TkRPUl9JRF9JTlRFTDoKKyAgICAgICAgICAgIHJldHVybiAiSW50ZWwiOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICB7CisgICAgICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBNb3JlIHZlbmRv
ciBJRHMuCisgICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJzdHI7CisgICAgICAgICAg
ICBzdHJzdHIgPDwgIlZlbmRvciBJRDogIiA8PCBtUGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzLnZl
bmRvcklEOworICAgICAgICAgICAgcmV0dXJuIHN0cnN0ci5zdHIoKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworc3RkOjpzdHJpbmcgUmVuZGVyZXJWazo6Z2V0UmVuZGVyZXJEZXNjcmlwdGlvbigp
IGNvbnN0Cit7CisgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3Ryc3RyOworCisgICAgdWludDMyX3Qg
YXBpVmVyc2lvbiA9IG1QaHlzaWNhbERldmljZVByb3BlcnRpZXMuYXBpVmVyc2lvbjsKKworICAg
IHN0cnN0ciA8PCAiVnVsa2FuICI7CisgICAgc3Ryc3RyIDw8IFZLX1ZFUlNJT05fTUFKT1IoYXBp
VmVyc2lvbikgPDwgIi4iOworICAgIHN0cnN0ciA8PCBWS19WRVJTSU9OX01JTk9SKGFwaVZlcnNp
b24pIDw8ICIuIjsKKyAgICBzdHJzdHIgPDwgVktfVkVSU0lPTl9QQVRDSChhcGlWZXJzaW9uKTsK
KworICAgIHN0cnN0ciA8PCAiKCIgPDwgbVBoeXNpY2FsRGV2aWNlUHJvcGVydGllcy5kZXZpY2VO
YW1lIDw8ICIpIjsKKworICAgIHJldHVybiBzdHJzdHIuc3RyKCk7CiB9CiAKIHZvaWQgUmVuZGVy
ZXJWazo6ZW5zdXJlQ2Fwc0luaXRpYWxpemVkKCkgY29uc3QKQEAgLTMxLDEyICs1MzEsMjAgQEAg
dm9pZCBSZW5kZXJlclZrOjplbnN1cmVDYXBzSW5pdGlhbGl6ZWQoKSBjb25zdAogICAgIH0KIH0K
IAotdm9pZCBSZW5kZXJlclZrOjpnZW5lcmF0ZUNhcHMoZ2w6OkNhcHMgKiAvKm91dENhcHMqLywK
K3ZvaWQgUmVuZGVyZXJWazo6Z2VuZXJhdGVDYXBzKGdsOjpDYXBzICpvdXRDYXBzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1cmVDYXBzTWFwICogLypvdXRUZXh0dXJl
Q2FwcyovLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkV4dGVuc2lvbnMgKiAv
Km91dEV4dGVuc2lvbnMqLywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsOjpFeHRl
bnNpb25zICpvdXRFeHRlbnNpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6
OkxpbWl0YXRpb25zICogLyogb3V0TGltaXRhdGlvbnMgKi8pIGNvbnN0CiB7Ci0gICAgLy8gVE9E
TyhqbWFkaWxsKTogQ2FwcworICAgIC8vIFRPRE8oam1hZGlsbCk6IENhcHMuCisgICAgb3V0Q2Fw
cy0+bWF4RHJhd0J1ZmZlcnMgICAgICA9IDE7CisgICAgb3V0Q2Fwcy0+bWF4VmVydGV4QXR0cmli
dXRlcyAgICAgPSBnbDo6TUFYX1ZFUlRFWF9BVFRSSUJTOworICAgIG91dENhcHMtPm1heFZlcnRl
eEF0dHJpYkJpbmRpbmdzID0gZ2w6Ok1BWF9WRVJURVhfQVRUUklCX0JJTkRJTkdTOworCisgICAg
Ly8gRW5hYmxlIHRoaXMgZm9yIHNpbXBsZSBidWZmZXIgcmVhZGJhY2sgdGVzdGluZywgYnV0IHNv
bWUgZnVuY3Rpb25hbGl0eSBpcyBtaXNzaW5nLgorICAgIC8vIFRPRE8oam1hZGlsbCk6IFN1cHBv
cnQgZnVsbCBtYXBCdWZmZXJSYW5nZSBleHRlbnNpb24uCisgICAgb3V0RXh0ZW5zaW9ucy0+bWFw
QnVmZmVyICAgICAgPSB0cnVlOworICAgIG91dEV4dGVuc2lvbnMtPm1hcEJ1ZmZlclJhbmdlID0g
dHJ1ZTsKIH0KIAogY29uc3QgZ2w6OkNhcHMgJlJlbmRlcmVyVms6OmdldE5hdGl2ZUNhcHMoKSBj
b25zdApAQCAtNjMsNCArNTcxLDE2OCBAQCBjb25zdCBnbDo6TGltaXRhdGlvbnMgJlJlbmRlcmVy
Vms6OmdldE5hdGl2ZUxpbWl0YXRpb25zKCkgY29uc3QKICAgICByZXR1cm4gbU5hdGl2ZUxpbWl0
YXRpb25zOwogfQogCit2azo6Q29tbWFuZEJ1ZmZlciAqUmVuZGVyZXJWazo6Z2V0Q29tbWFuZEJ1
ZmZlcigpCit7CisgICAgcmV0dXJuICZtQ29tbWFuZEJ1ZmZlcjsKK30KKwordms6OkVycm9yIFJl
bmRlcmVyVms6OnN1Ym1pdENvbW1hbmRCdWZmZXIoY29uc3Qgdms6OkNvbW1hbmRCdWZmZXIgJmNv
bW1hbmRCdWZmZXIpCit7CisgICAgVmtGZW5jZUNyZWF0ZUluZm8gZmVuY2VJbmZvOworICAgIGZl
bmNlSW5mby5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0ZFTkNFX0NSRUFURV9JTkZPOworICAg
IGZlbmNlSW5mby5wTmV4dCA9IG51bGxwdHI7CisgICAgZmVuY2VJbmZvLmZsYWdzID0gMDsKKwor
ICAgIFZrQ29tbWFuZEJ1ZmZlciBjb21tYW5kQnVmZmVySGFuZGxlID0gY29tbWFuZEJ1ZmZlci5n
ZXRIYW5kbGUoKTsKKworICAgIFZrU3VibWl0SW5mbyBzdWJtaXRJbmZvOworICAgIHN1Ym1pdElu
Zm8uc1R5cGUgICAgICAgICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQRV9TVUJNSVRfSU5GTzsK
KyAgICBzdWJtaXRJbmZvLnBOZXh0ICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKKyAgICBzdWJt
aXRJbmZvLndhaXRTZW1hcGhvcmVDb3VudCAgID0gMDsKKyAgICBzdWJtaXRJbmZvLnBXYWl0U2Vt
YXBob3JlcyAgICAgID0gbnVsbHB0cjsKKyAgICBzdWJtaXRJbmZvLnBXYWl0RHN0U3RhZ2VNYXNr
ICAgID0gbnVsbHB0cjsKKyAgICBzdWJtaXRJbmZvLmNvbW1hbmRCdWZmZXJDb3VudCAgID0gMTsK
KyAgICBzdWJtaXRJbmZvLnBDb21tYW5kQnVmZmVycyAgICAgID0gJmNvbW1hbmRCdWZmZXJIYW5k
bGU7CisgICAgc3VibWl0SW5mby5zaWduYWxTZW1hcGhvcmVDb3VudCA9IDA7CisgICAgc3VibWl0
SW5mby5wU2lnbmFsU2VtYXBob3JlcyAgICA9IG51bGxwdHI7CisKKyAgICAvLyBUT0RPKGptYWRp
bGwpOiBJbnZlc3RpZ2F0ZSBob3cgdG8gcHJvcGVybHkgc3VibWl0IGNvbW1hbmQgYnVmZmVycy4K
KyAgICBBTkdMRV9UUlkoc3VibWl0KHN1Ym1pdEluZm8pKTsKKworICAgIHJldHVybiB2azo6Tm9F
cnJvcigpOworfQorCit2azo6RXJyb3IgUmVuZGVyZXJWazo6c3VibWl0QW5kRmluaXNoQ29tbWFu
ZEJ1ZmZlcihjb25zdCB2azo6Q29tbWFuZEJ1ZmZlciAmY29tbWFuZEJ1ZmZlcikKK3sKKyAgICBB
TkdMRV9UUlkoc3VibWl0Q29tbWFuZEJ1ZmZlcihjb21tYW5kQnVmZmVyKSk7CisgICAgQU5HTEVf
VFJZKGZpbmlzaCgpKTsKKworICAgIHJldHVybiB2azo6Tm9FcnJvcigpOworfQorCit2azo6RXJy
b3IgUmVuZGVyZXJWazo6c3VibWl0Q29tbWFuZHNXaXRoU3luYyhjb25zdCB2azo6Q29tbWFuZEJ1
ZmZlciAmY29tbWFuZEJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHZrOjpTZW1hcGhvcmUgJndhaXRTZW1hcGhvcmUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2azo6U2VtYXBob3JlICZz
aWduYWxTZW1hcGhvcmUpCit7CisgICAgVmtQaXBlbGluZVN0YWdlRmxhZ3Mgd2FpdFN0YWdlTWFz
ayAgPSBWS19QSVBFTElORV9TVEFHRV9CT1RUT01fT0ZfUElQRV9CSVQ7CisKKyAgICBWa1N1Ym1p
dEluZm8gc3VibWl0SW5mbzsKKyAgICBzdWJtaXRJbmZvLnNUeXBlICAgICAgICAgICAgICAgID0g
VktfU1RSVUNUVVJFX1RZUEVfU1VCTUlUX0lORk87CisgICAgc3VibWl0SW5mby5wTmV4dCAgICAg
ICAgICAgICAgICA9IG51bGxwdHI7CisgICAgc3VibWl0SW5mby53YWl0U2VtYXBob3JlQ291bnQg
ICA9IDE7CisgICAgc3VibWl0SW5mby5wV2FpdFNlbWFwaG9yZXMgICAgICA9IHdhaXRTZW1hcGhv
cmUucHRyKCk7CisgICAgc3VibWl0SW5mby5wV2FpdERzdFN0YWdlTWFzayAgICA9ICZ3YWl0U3Rh
Z2VNYXNrOworICAgIHN1Ym1pdEluZm8uY29tbWFuZEJ1ZmZlckNvdW50ICAgPSAxOworICAgIHN1
Ym1pdEluZm8ucENvbW1hbmRCdWZmZXJzICAgICAgPSBjb21tYW5kQnVmZmVyLnB0cigpOworICAg
IHN1Ym1pdEluZm8uc2lnbmFsU2VtYXBob3JlQ291bnQgPSAxOworICAgIHN1Ym1pdEluZm8ucFNp
Z25hbFNlbWFwaG9yZXMgICAgPSBzaWduYWxTZW1hcGhvcmUucHRyKCk7CisKKyAgICAvLyBUT0RP
KGptYWRpbGwpOiBJbnZlc3RpZ2F0ZSBob3cgdG8gcHJvcGVybHkgcXVldWUgY29tbWFuZCBidWZm
ZXIgd29yay4KKyAgICBBTkdMRV9UUlkoc3VibWl0KHN1Ym1pdEluZm8pKTsKKworICAgIHJldHVy
biB2azo6Tm9FcnJvcigpOworfQorCit2azo6RXJyb3IgUmVuZGVyZXJWazo6ZmluaXNoKCkKK3sK
KyAgICBBU1NFUlQobVF1ZXVlICE9IFZLX05VTExfSEFORExFKTsKKyAgICBBTkdMRV9WS19UUlko
dmtRdWV1ZVdhaXRJZGxlKG1RdWV1ZSkpOworICAgIGNoZWNrSW5GbGlnaHRDb21tYW5kcygpOwor
ICAgIHJldHVybiB2azo6Tm9FcnJvcigpOworfQorCit2azo6RXJyb3IgUmVuZGVyZXJWazo6Y2hl
Y2tJbkZsaWdodENvbW1hbmRzKCkKK3sKKyAgICBib29sIGFueUZpbmlzaGVkID0gZmFsc2U7CisK
KyAgICAvLyBDaGVjayBpZiBhbnkgaW4tZmxpZ2h0IGNvbW1hbmQgYnVmZmVycyBhcmUgZmluaXNo
ZWQuCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1JbkZsaWdodENvbW1hbmRz
LnNpemUoKTspCisgICAgeworICAgICAgICBhdXRvICppbkZsaWdodENvbW1hbmQgPSAmbUluRmxp
Z2h0Q29tbWFuZHNbaW5kZXhdOworCisgICAgICAgIGJvb2wgZG9uZSA9IGZhbHNlOworICAgICAg
ICBBTkdMRV9UUllfUkVTVUxUKGluRmxpZ2h0Q29tbWFuZC0+ZmluaXNoZWQobURldmljZSksIGRv
bmUpOworICAgICAgICBpZiAoZG9uZSkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGlu
RmxpZ2h0Q29tbWFuZC0+cXVldWVTZXJpYWwoKSA+IG1MYXN0Q29tcGxldGVkUXVldWVTZXJpYWwp
OworICAgICAgICAgICAgbUxhc3RDb21wbGV0ZWRRdWV1ZVNlcmlhbCA9IGluRmxpZ2h0Q29tbWFu
ZC0+cXVldWVTZXJpYWwoKTsKKyAgICAgICAgICAgIGluRmxpZ2h0Q29tbWFuZC0+ZGVzdHJveSht
RGV2aWNlKTsKKyAgICAgICAgICAgIG1JbkZsaWdodENvbW1hbmRzLmVyYXNlKG1JbkZsaWdodENv
bW1hbmRzLmJlZ2luKCkgKyBpbmRleCk7CisgICAgICAgICAgICBhbnlGaW5pc2hlZCA9IHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICArK2luZGV4
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGFueUZpbmlzaGVkKQorICAgIHsKKyAgICAg
ICAgc2l6ZV90IGZyZWVJbmRleCA9IDA7CisgICAgICAgIGZvciAoOyBmcmVlSW5kZXggPCBtR2Fy
YmFnZS5zaXplKCk7ICsrZnJlZUluZGV4KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1H
YXJiYWdlW2ZyZWVJbmRleF0tPmRlc3Ryb3lJZkNvbXBsZXRlKG1EZXZpY2UsIG1MYXN0Q29tcGxl
dGVkUXVldWVTZXJpYWwpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gUmVtb3ZlIHRoZSBlbnRyaWVzIGZyb20gdGhlIGdhcmJhZ2UgbGlzdCAtIHRoZXkg
c2hvdWxkIGJlIHJlYWR5IHRvIGdvLgorICAgICAgICBpZiAoZnJlZUluZGV4ID4gMCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbUdhcmJhZ2UuZXJhc2UobUdhcmJhZ2UuYmVnaW4oKSwgbUdhcmJh
Z2UuYmVnaW4oKSArIGZyZWVJbmRleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
dms6Ok5vRXJyb3IoKTsKK30KKwordms6OkVycm9yIFJlbmRlcmVyVms6OnN1Ym1pdChjb25zdCBW
a1N1Ym1pdEluZm8gJnN1Ym1pdEluZm8pCit7CisgICAgY2hlY2tJbkZsaWdodENvbW1hbmRzKCk7
CisKKyAgICAvLyBTdGFydCBhIEZlbmNlIHRvIHJlY29yZCB3aGVuIHRoaXMgY29tbWFuZCBidWZm
ZXIgZmluaXNoZXMuCisgICAgVmtGZW5jZUNyZWF0ZUluZm8gZmVuY2VJbmZvOworICAgIGZlbmNl
SW5mby5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0ZFTkNFX0NSRUFURV9JTkZPOworICAgIGZl
bmNlSW5mby5wTmV4dCA9IG51bGxwdHI7CisgICAgZmVuY2VJbmZvLmZsYWdzID0gMDsKKworICAg
IHZrOjpGZW5jZSBmZW5jZTsKKyAgICBBTkdMRV9UUlkoZmVuY2UuaW5pdChtRGV2aWNlLCBmZW5j
ZUluZm8pKTsKKworICAgIEFOR0xFX1ZLX1RSWSh2a1F1ZXVlU3VibWl0KG1RdWV1ZSwgMSwgJnN1
Ym1pdEluZm8sIGZlbmNlLmdldEhhbmRsZSgpKSk7CisKKyAgICAvLyBTdG9yZSB0aGlzIGNvbW1h
bmQgYnVmZmVyIGluIHRoZSBpbi1mbGlnaHQgbGlzdC4KKyAgICBtSW5GbGlnaHRDb21tYW5kcy5l
bXBsYWNlX2JhY2sodms6OkZlbmNlQW5kQ29tbWFuZEJ1ZmZlcihtQ3VycmVudFF1ZXVlU2VyaWFs
LCBzdGQ6Om1vdmUoZmVuY2UpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShtQ29tbWFuZEJ1ZmZlcikpKTsKKwor
ICAgIC8vIFNhbml0eSBjaGVjay4KKyAgICBBU1NFUlQobUluRmxpZ2h0Q29tbWFuZHMuc2l6ZSgp
IDwgMTAwMHUpOworCisgICAgLy8gSW5jcmVtZW50IHRoZSBjb21tYW5kIGJ1ZmZlciBzZXJpYWwu
IElmIHRoaXMgZmFpbHMsIHdlIG5lZWQgdG8gcmVzdGFydCBBTkdMRS4KKyAgICBBTkdMRV9WS19D
SEVDSygrK21DdXJyZW50UXVldWVTZXJpYWwsIFZLX0VSUk9SX09VVF9PRl9IT1NUX01FTU9SWSk7
CisgICAgcmV0dXJuIHZrOjpOb0Vycm9yKCk7Cit9CisKK3ZrOjpFcnJvciBSZW5kZXJlclZrOjpj
cmVhdGVTdGFnaW5nSW1hZ2UoVGV4dHVyZURpbWVuc2lvbiBkaW1lbnNpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZrOjpGb3JtYXQgJmZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkV4dGVu
dHMgJmV4dGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6
OlN0YWdpbmdJbWFnZSAqaW1hZ2VPdXQpCit7CisgICAgQVNTRVJUKG1Ib3N0VmlzaWJsZU1lbW9y
eUluZGV4ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSk7CisKKyAgICBB
TkdMRV9UUlkoaW1hZ2VPdXQtPmluaXQobURldmljZSwgbUN1cnJlbnRRdWV1ZUZhbWlseUluZGV4
LCBtSG9zdFZpc2libGVNZW1vcnlJbmRleCwgZGltZW5zaW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3JtYXQubmF0aXZlLCBleHRlbnQpKTsKKworICAgIHJldHVybiB2azo6Tm9F
cnJvcigpOworfQorCitHbHNsYW5nV3JhcHBlciAqUmVuZGVyZXJWazo6Z2V0R2xzbGFuZ1dyYXBw
ZXIoKQoreworICAgIHJldHVybiBtR2xzbGFuZ1dyYXBwZXI7Cit9CisKK1NlcmlhbCBSZW5kZXJl
clZrOjpnZXRDdXJyZW50UXVldWVTZXJpYWwoKSBjb25zdAoreworICAgIHJldHVybiBtQ3VycmVu
dFF1ZXVlU2VyaWFsOworfQorCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUmVuZGVyZXJW
ay5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9SZW5kZXJlclZrLmgKaW5kZXggOGE3NDg5NDk2ZGQuLmYwNDA1Y2FlZjE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1Jl
bmRlcmVyVmsuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL1JlbmRlcmVyVmsuaApAQCAtMTAsMTEgKzEwLDI2IEBACiAjaWZuZGVmIExJ
QkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9SRU5ERVJFUlZLX0hfCiAjZGVmaW5lIExJQkFOR0xFX1JF
TkRFUkVSX1ZVTEtBTl9SRU5ERVJFUlZLX0hfCiAKKyNpbmNsdWRlIDxtZW1vcnk+CisjaW5jbHVk
ZSA8dnVsa2FuL3Z1bGthbi5oPgorCiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKICNp
bmNsdWRlICJsaWJBTkdMRS9DYXBzLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL3JlbmRlcmVydmtfdXRpbHMuaCIKKworbmFtZXNwYWNlIGVnbAoreworY2xhc3MgQXR0cmli
dXRlTWFwOworfQogCiBuYW1lc3BhY2UgcngKIHsKK2NsYXNzIEdsc2xhbmdXcmFwcGVyOworCitu
YW1lc3BhY2UgdmsKK3sKK3N0cnVjdCBGb3JtYXQ7Cit9CiAKIGNsYXNzIFJlbmRlcmVyVmsgOiBh
bmdsZTo6Tm9uQ29weWFibGUKIHsKQEAgLTIyLDIzICszNyw5NSBAQCBjbGFzcyBSZW5kZXJlclZr
IDogYW5nbGU6Ok5vbkNvcHlhYmxlCiAgICAgUmVuZGVyZXJWaygpOwogICAgIH5SZW5kZXJlclZr
KCk7CiAKKyAgICB2azo6RXJyb3IgaW5pdGlhbGl6ZShjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAm
YXR0cmlicyk7CisKKyAgICBzdGQ6OnN0cmluZyBnZXRWZW5kb3JTdHJpbmcoKSBjb25zdDsKKyAg
ICBzdGQ6OnN0cmluZyBnZXRSZW5kZXJlckRlc2NyaXB0aW9uKCkgY29uc3Q7CisKKyAgICBWa0lu
c3RhbmNlIGdldEluc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gbUluc3RhbmNlOyB9CisgICAgVmtQ
aHlzaWNhbERldmljZSBnZXRQaHlzaWNhbERldmljZSgpIGNvbnN0IHsgcmV0dXJuIG1QaHlzaWNh
bERldmljZTsgfQorICAgIFZrUXVldWUgZ2V0UXVldWUoKSBjb25zdCB7IHJldHVybiBtUXVldWU7
IH0KKyAgICBWa0RldmljZSBnZXREZXZpY2UoKSBjb25zdCB7IHJldHVybiBtRGV2aWNlOyB9CisK
KyAgICB2azo6RXJyb3JPclJlc3VsdDx1aW50MzJfdD4gc2VsZWN0UHJlc2VudFF1ZXVlRm9yU3Vy
ZmFjZShWa1N1cmZhY2VLSFIgc3VyZmFjZSk7CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBVc2Ug
Q29udGV4dEltcGwgZm9yIGNvbW1hbmQgYnVmZmVycyB0byBlbmFibGUgdGhyZWFkZWQgY29udGV4
dHMuCisgICAgdms6OkNvbW1hbmRCdWZmZXIgKmdldENvbW1hbmRCdWZmZXIoKTsKKyAgICB2azo6
RXJyb3Igc3VibWl0Q29tbWFuZEJ1ZmZlcihjb25zdCB2azo6Q29tbWFuZEJ1ZmZlciAmY29tbWFu
ZEJ1ZmZlcik7CisgICAgdms6OkVycm9yIHN1Ym1pdEFuZEZpbmlzaENvbW1hbmRCdWZmZXIoY29u
c3Qgdms6OkNvbW1hbmRCdWZmZXIgJmNvbW1hbmRCdWZmZXIpOworICAgIHZrOjpFcnJvciBzdWJt
aXRDb21tYW5kc1dpdGhTeW5jKGNvbnN0IHZrOjpDb21tYW5kQnVmZmVyICZjb21tYW5kQnVmZmVy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZrOjpTZW1hcGhv
cmUgJndhaXRTZW1hcGhvcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgdms6OlNlbWFwaG9yZSAmc2lnbmFsU2VtYXBob3JlKTsKKyAgICB2azo6RXJyb3IgZmlu
aXNoKCk7CisKICAgICBjb25zdCBnbDo6Q2FwcyAmZ2V0TmF0aXZlQ2FwcygpIGNvbnN0OwogICAg
IGNvbnN0IGdsOjpUZXh0dXJlQ2Fwc01hcCAmZ2V0TmF0aXZlVGV4dHVyZUNhcHMoKSBjb25zdDsK
ICAgICBjb25zdCBnbDo6RXh0ZW5zaW9ucyAmZ2V0TmF0aXZlRXh0ZW5zaW9ucygpIGNvbnN0Owog
ICAgIGNvbnN0IGdsOjpMaW1pdGF0aW9ucyAmZ2V0TmF0aXZlTGltaXRhdGlvbnMoKSBjb25zdDsK
IAorICAgIHZrOjpFcnJvciBjcmVhdGVTdGFnaW5nSW1hZ2UoVGV4dHVyZURpbWVuc2lvbiBkaW1l
bnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2azo6Rm9ybWF0
ICZmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0
ZW50cyAmZXh0ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdms6OlN0YWdp
bmdJbWFnZSAqaW1hZ2VPdXQpOworCisgICAgR2xzbGFuZ1dyYXBwZXIgKmdldEdsc2xhbmdXcmFw
cGVyKCk7CisKKyAgICBTZXJpYWwgZ2V0Q3VycmVudFF1ZXVlU2VyaWFsKCkgY29uc3Q7CisKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIGVucXVldWVHYXJiYWdlKFNlcmlhbCBz
ZXJpYWwsIFQgJiZvYmplY3QpCisgICAgeworICAgICAgICBtR2FyYmFnZS5lbXBsYWNlX2JhY2so
c3RkOjp1bmlxdWVfcHRyPHZrOjpHYXJiYWdlT2JqZWN0PFQ+PigKKyAgICAgICAgICAgIG5ldyB2
azo6R2FyYmFnZU9iamVjdDxUPihzZXJpYWwsIHN0ZDo6bW92ZShvYmplY3QpKSkpOworICAgIH0K
KworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgZW5xdWV1ZUdhcmJhZ2VPckRl
bGV0ZU5vdyhjb25zdCBSZXNvdXJjZVZrICZyZXNvdWNlLCBUICYmb2JqZWN0KQorICAgIHsKKyAg
ICAgICAgaWYgKHJlc291Y2UuZ2V0RGVsZXRlU2NoZWR1bGUobUxhc3RDb21wbGV0ZWRRdWV1ZVNl
cmlhbCkgPT0gRGVsZXRlU2NoZWR1bGU6Ok5PVykKKyAgICAgICAgeworICAgICAgICAgICAgb2Jq
ZWN0LmRlc3Ryb3kobURldmljZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7
CisgICAgICAgICAgICBlbnF1ZXVlR2FyYmFnZShyZXNvdWNlLmdldFN0b3JlZFF1ZXVlU2VyaWFs
KCksIHN0ZDo6bW92ZShvYmplY3QpKTsKKyAgICAgICAgfQorICAgIH0KKwogICBwcml2YXRlOgog
ICAgIHZvaWQgZW5zdXJlQ2Fwc0luaXRpYWxpemVkKCkgY29uc3Q7CiAgICAgdm9pZCBnZW5lcmF0
ZUNhcHMoZ2w6OkNhcHMgKm91dENhcHMsCiAgICAgICAgICAgICAgICAgICAgICAgZ2w6OlRleHR1
cmVDYXBzTWFwICpvdXRUZXh0dXJlQ2FwcywKICAgICAgICAgICAgICAgICAgICAgICBnbDo6RXh0
ZW5zaW9ucyAqb3V0RXh0ZW5zaW9ucywKICAgICAgICAgICAgICAgICAgICAgICBnbDo6TGltaXRh
dGlvbnMgKm91dExpbWl0YXRpb25zKSBjb25zdDsKKyAgICB2azo6RXJyb3Igc3VibWl0KGNvbnN0
IFZrU3VibWl0SW5mbyAmc3VibWl0SW5mbyk7CisgICAgdms6OkVycm9yIGNoZWNrSW5GbGlnaHRD
b21tYW5kcygpOwogCiAgICAgbXV0YWJsZSBib29sIG1DYXBzSW5pdGlhbGl6ZWQ7CiAgICAgbXV0
YWJsZSBnbDo6Q2FwcyBtTmF0aXZlQ2FwczsKICAgICBtdXRhYmxlIGdsOjpUZXh0dXJlQ2Fwc01h
cCBtTmF0aXZlVGV4dHVyZUNhcHM7CiAgICAgbXV0YWJsZSBnbDo6RXh0ZW5zaW9ucyBtTmF0aXZl
RXh0ZW5zaW9uczsKICAgICBtdXRhYmxlIGdsOjpMaW1pdGF0aW9ucyBtTmF0aXZlTGltaXRhdGlv
bnM7CisKKyAgICB2azo6RXJyb3IgaW5pdGlhbGl6ZURldmljZSh1aW50MzJfdCBxdWV1ZUZhbWls
eUluZGV4KTsKKworICAgIFZrSW5zdGFuY2UgbUluc3RhbmNlOworICAgIGJvb2wgbUVuYWJsZVZh
bGlkYXRpb25MYXllcnM7CisgICAgVmtEZWJ1Z1JlcG9ydENhbGxiYWNrRVhUIG1EZWJ1Z1JlcG9y
dENhbGxiYWNrOworICAgIFZrUGh5c2ljYWxEZXZpY2UgbVBoeXNpY2FsRGV2aWNlOworICAgIFZr
UGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzIG1QaHlzaWNhbERldmljZVByb3BlcnRpZXM7CisgICAg
c3RkOjp2ZWN0b3I8VmtRdWV1ZUZhbWlseVByb3BlcnRpZXM+IG1RdWV1ZUZhbWlseVByb3BlcnRp
ZXM7CisgICAgVmtRdWV1ZSBtUXVldWU7CisgICAgdWludDMyX3QgbUN1cnJlbnRRdWV1ZUZhbWls
eUluZGV4OworICAgIFZrRGV2aWNlIG1EZXZpY2U7CisgICAgdms6OkNvbW1hbmRQb29sIG1Db21t
YW5kUG9vbDsKKyAgICB2azo6Q29tbWFuZEJ1ZmZlciBtQ29tbWFuZEJ1ZmZlcjsKKyAgICB1aW50
MzJfdCBtSG9zdFZpc2libGVNZW1vcnlJbmRleDsKKyAgICBHbHNsYW5nV3JhcHBlciAqbUdsc2xh
bmdXcmFwcGVyOworICAgIFNlcmlhbCBtQ3VycmVudFF1ZXVlU2VyaWFsOworICAgIFNlcmlhbCBt
TGFzdENvbXBsZXRlZFF1ZXVlU2VyaWFsOworICAgIHN0ZDo6dmVjdG9yPHZrOjpGZW5jZUFuZENv
bW1hbmRCdWZmZXI+IG1JbkZsaWdodENvbW1hbmRzOworICAgIHN0ZDo6dmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjx2azo6SUdhcmJhZ2VPYmplY3Q+PiBtR2FyYmFnZTsKIH07CiAKIH0gIC8vIG5hbWVz
cGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9TaGFkZXJWay5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1NoYWRlclZrLmNwcAppbmRleCA4YmVjZTliNDU0
ZS4uNzgwMjRhNjM1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2hhZGVyVmsuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2hhZGVyVmsuY3BwCkBAIC0y
NSwxOSArMjUsMTggQEAgU2hhZGVyVms6On5TaGFkZXJWaygpCiBTaENvbXBpbGVPcHRpb25zIFNo
YWRlclZrOjpwcmVwYXJlU291cmNlQW5kUmV0dXJuT3B0aW9ucyhzdGQ6OnN0cmluZ3N0cmVhbSAq
c291cmNlU3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnNvdXJjZVBhdGgpCiB7Ci0gICAgVU5JTVBMRU1F
TlRFRCgpOwotICAgIHJldHVybiBpbnQoKTsKKyAgICAqc291cmNlU3RyZWFtIDw8IG1EYXRhLmdl
dFNvdXJjZSgpOworICAgIHJldHVybiAwOwogfQogCiBib29sIFNoYWRlclZrOjpwb3N0VHJhbnNs
YXRlQ29tcGlsZShnbDo6Q29tcGlsZXIgKmNvbXBpbGVyLCBzdGQ6OnN0cmluZyAqaW5mb0xvZykK
IHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIGJvb2woKTsKKyAgICAvLyBObyB3
b3JrIHRvIGRvIGhlcmUuCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0ZDo6c3RyaW5nIFNoYWRl
clZrOjpnZXREZWJ1Z0luZm8oKSBjb25zdAogewotICAgIFVOSU1QTEVNRU5URUQoKTsKICAgICBy
ZXR1cm4gc3RkOjpzdHJpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TaGFkZXJWay5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TaGFkZXJWay5oCmlu
ZGV4IDFkNzEzY2FmODhiLi4xMGY4ZmU0MjM2NCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TaGFkZXJWay5oCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU2hhZGVy
VmsuaApAQCAtMjEsNyArMjEsNyBAQCBjbGFzcyBTaGFkZXJWayA6IHB1YmxpYyBTaGFkZXJJbXBs
CiAgICAgU2hhZGVyVmsoY29uc3QgZ2w6OlNoYWRlclN0YXRlICZkYXRhKTsKICAgICB+U2hhZGVy
VmsoKSBvdmVycmlkZTsKIAotICAgIC8vIFJldHVybnMgYWRkaXRpb25hbCBTaENvbXBpbGUgb3B0
aW9ucy4KKyAgICAvLyBSZXR1cm5zIGFkZGl0aW9uYWwgc2g6OkNvbXBpbGUgb3B0aW9ucy4KICAg
ICBTaENvbXBpbGVPcHRpb25zIHByZXBhcmVTb3VyY2VBbmRSZXR1cm5PcHRpb25zKHN0ZDo6c3Ry
aW5nc3RyZWFtICpzb3VyY2VTdHJlYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqc291cmNlUGF0aCkgb3ZlcnJpZGU7CiAg
ICAgLy8gUmV0dXJucyBzdWNjZXNzIGZvciBjb21waWxpbmcgb24gdGhlIGRyaXZlci4gUmV0dXJu
cyBzdWNjZXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9TdXJmYWNlVmsuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TdXJmYWNlVmsuY3BwCmluZGV4IGJhOWQ2
ZjFjZWYxLi4wNGZjZmZlZTMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9TdXJmYWNlVmsuY3BwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU3VyZmFjZVZrLmNw
cApAQCAtMTAsMTAwICsxMCw1NzQgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vU3VyZmFjZVZrLmgiCiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9TdXJmYWNlLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0Rp
c3BsYXlWay5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GcmFtZWJ1ZmZl
clZrLmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlcmVyVmsuaCIK
KyNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vZm9ybWF0dXRpbHN2ay5oIgogCiBu
YW1lc3BhY2UgcngKIHsKIAotU3VyZmFjZVZrOjpTdXJmYWNlVmsoY29uc3QgZWdsOjpTdXJmYWNl
U3RhdGUgJnN1cmZhY2VTdGF0ZSkgOiBTdXJmYWNlSW1wbChzdXJmYWNlU3RhdGUpCituYW1lc3Bh
Y2UKIHsKKworY29uc3Qgdms6OkZvcm1hdCAmR2V0VmtGb3JtYXRGcm9tQ29uZmlnKGNvbnN0IGVn
bDo6Q29uZmlnICZjb25maWcpCit7CisgICAgLy8gVE9ETyhqbWFkaWxsKTogUHJvcGVybHkgaGFu
ZGxlIGZvcm1hdCBpbnRlcnByZXRhdGlvbi4KKyAgICByZXR1cm4gdms6OkZvcm1hdDo6R2V0KEdM
X0JHUkE4X0VYVCk7CiB9CiAKLVN1cmZhY2VWazo6flN1cmZhY2VWaygpCitWa1ByZXNlbnRNb2Rl
S0hSIEdldERlc2lyZWRQcmVzZW50TW9kZShjb25zdCBzdGQ6OnZlY3RvcjxWa1ByZXNlbnRNb2Rl
S0hSPiAmcHJlc2VudE1vZGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMaW50IG1pblN3YXBJbnRlcnZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTGludCBtYXhTd2FwSW50ZXJ2YWwpCiB7CisgICAgQVNTRVJUKCFwcmVzZW50
TW9kZXMuZW1wdHkoKSk7CisKKyAgICAvLyBVc2UgRklGTyBtb2RlIGZvciB2LXN5bmMsIHNpbmNl
IGl0IHRocm90dGxlcyB5b3UgdG8gdGhlIGRpc3BsYXkgcmF0ZS4gTWFpbGJveCBpcyBtb3JlCisg
ICAgLy8gc2ltaWxhciB0byB0cmlwbGUtYnVmZmVyaW5nLiBGb3Igbm93IHdlIGhhcmQtY29kZSBN
YWlsYm94IGZvciBwZXJmIHRzZXRpbmcuCisgICAgLy8gVE9ETyhqbWFkaWxsKTogUHJvcGVybHkg
c2VsZWN0IHByZXNlbnQgbW9kZSBhbmQgcmUtY3JlYXRlIGRpc3BsYXkgaWYgY2hhbmdlZC4KKyAg
ICBWa1ByZXNlbnRNb2RlS0hSIGJlc3RDaG9pY2UgPSBWS19QUkVTRU5UX01PREVfTUFJTEJPWF9L
SFI7CisKKyAgICBmb3IgKGF1dG8gcHJlc2VudE1vZGUgOiBwcmVzZW50TW9kZXMpCisgICAgewor
ICAgICAgICBpZiAocHJlc2VudE1vZGUgPT0gYmVzdENob2ljZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGJlc3RDaG9pY2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBFUlIoKSA8
PCAiRGVzaXJlZCBwcmVzZW50IG1vZGUgbm90IGF2YWlsYWJsZS4gRmFsbGluZyBiYWNrIHRvICIg
PDwgcHJlc2VudE1vZGVzWzBdOworICAgIHJldHVybiBwcmVzZW50TW9kZXNbMF07CiB9CiAKLWVn
bDo6RXJyb3IgU3VyZmFjZVZrOjppbml0aWFsaXplKCkKK30gIC8vIG5hbWVzcGFjZQorCitPZmZz
Y3JlZW5TdXJmYWNlVms6Ok9mZnNjcmVlblN1cmZhY2VWayhjb25zdCBlZ2w6OlN1cmZhY2VTdGF0
ZSAmc3VyZmFjZVN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMaW50IHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdM
aW50IGhlaWdodCkKKyAgICA6IFN1cmZhY2VJbXBsKHN1cmZhY2VTdGF0ZSksIG1XaWR0aCh3aWR0
aCksIG1IZWlnaHQoaGVpZ2h0KQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4g
ZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7CiB9CiAKLUZyYW1lYnVmZmVySW1wbCAqU3VyZmFj
ZVZrOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3RhdGUg
JnN0YXRlKQorT2Zmc2NyZWVuU3VyZmFjZVZrOjp+T2Zmc2NyZWVuU3VyZmFjZVZrKCkKIHsKLSAg
ICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEZyYW1lYnVmZmVySW1w
bCAqPigwKTsKIH0KIAotZWdsOjpFcnJvciBTdXJmYWNlVms6OnN3YXAoKQorZWdsOjpFcnJvciBP
ZmZzY3JlZW5TdXJmYWNlVms6OmluaXRpYWxpemUoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJ
bXBsKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xf
QkFEX0FDQ0VTUyk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCi1l
Z2w6OkVycm9yIFN1cmZhY2VWazo6cG9zdFN1YkJ1ZmZlcihFR0xpbnQgeCwgRUdMaW50IHksIEVH
TGludCB3aWR0aCwgRUdMaW50IGhlaWdodCkKK0ZyYW1lYnVmZmVySW1wbCAqT2Zmc2NyZWVuU3Vy
ZmFjZVZrOjpjcmVhdGVEZWZhdWx0RnJhbWVidWZmZXIoY29uc3QgZ2w6OkZyYW1lYnVmZmVyU3Rh
dGUgJnN0YXRlKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZWdsOjpFcnJv
cihFR0xfQkFEX0FDQ0VTUyk7CisgICAgLy8gVXNlIGEgdXNlciBGQk8gZm9yIGFuIG9mZnNjcmVl
biBSVC4KKyAgICByZXR1cm4gRnJhbWVidWZmZXJWazo6Q3JlYXRlVXNlckZCTyhzdGF0ZSk7CiB9
CiAKLWVnbDo6RXJyb3IgU3VyZmFjZVZrOjpxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMaW50
IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKQorZWdsOjpFcnJvciBPZmZzY3JlZW5TdXJmYWNlVms6
OnN3YXAoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKQogewotICAgIFVOSU1QTEVNRU5U
RUQoKTsKLSAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfQkFEX0FDQ0VTUyk7CisgICAgcmV0dXJu
IGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCi1lZ2w6OkVycm9yIFN1cmZhY2VWazo6Ymlu
ZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xpbnQgYnVmZmVyKQorZWdsOjpFcnJv
ciBPZmZzY3JlZW5TdXJmYWNlVms6OnBvc3RTdWJCdWZmZXIoRUdMaW50IC8qeCovLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IC8qeSovLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IC8qd2lkdGgq
LywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCAv
KmhlaWdodCovKQogewotICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICByZXR1cm4gZWdsOjpFcnJv
cihFR0xfQkFEX0FDQ0VTUyk7CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwor
fQorCitlZ2w6OkVycm9yIE9mZnNjcmVlblN1cmZhY2VWazo6cXVlcnlTdXJmYWNlUG9pbnRlckFO
R0xFKEVHTGludCAvKmF0dHJpYnV0ZSovLCB2b2lkICoqIC8qdmFsdWUqLykKK3sKKyAgICBVTlJF
QUNIQUJMRSgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQ1VSUkVOVF9TVVJGQUNF
KTsKIH0KIAotZWdsOjpFcnJvciBTdXJmYWNlVms6OnJlbGVhc2VUZXhJbWFnZShFR0xpbnQgYnVm
ZmVyKQorZWdsOjpFcnJvciBPZmZzY3JlZW5TdXJmYWNlVms6OmJpbmRUZXhJbWFnZShnbDo6VGV4
dHVyZSAqIC8qdGV4dHVyZSovLCBFR0xpbnQgLypidWZmZXIqLykKK3sKKyAgICByZXR1cm4gZWds
OjpFcnJvcihFR0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgT2Zmc2NyZWVuU3VyZmFjZVZr
OjpyZWxlYXNlVGV4SW1hZ2UoRUdMaW50IC8qYnVmZmVyKi8pCit7CisgICAgcmV0dXJuIGVnbDo6
RXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitlZ2w6OkVycm9yIE9mZnNjcmVlblN1cmZhY2VWazo6
Z2V0U3luY1ZhbHVlcyhFR0x1aW50NjRLSFIgKiAvKnVzdCovLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMdWludDY0S0hSICogLyptc2MqLywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTHVpbnQ2NEtIUiAqIC8q
c2JjKi8pCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIHJldHVybiBlZ2w6OkVycm9yKEVH
TF9CQURfQUNDRVNTKTsKIH0KIAotZWdsOjpFcnJvciBTdXJmYWNlVms6OmdldFN5bmNWYWx1ZXMo
RUdMdWludDY0S0hSICp1c3QsIEVHTHVpbnQ2NEtIUiAqbXNjLCBFR0x1aW50NjRLSFIgKnNiYykK
K3ZvaWQgT2Zmc2NyZWVuU3VyZmFjZVZrOjpzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IC8qaW50ZXJ2
YWwqLykKK3sKK30KKworRUdMaW50IE9mZnNjcmVlblN1cmZhY2VWazo6Z2V0V2lkdGgoKSBjb25z
dAoreworICAgIHJldHVybiBtV2lkdGg7Cit9CisKK0VHTGludCBPZmZzY3JlZW5TdXJmYWNlVms6
OmdldEhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1IZWlnaHQ7Cit9CisKK0VHTGludCBP
ZmZzY3JlZW5TdXJmYWNlVms6OmlzUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIEVHTF9GQUxTRTsKK30KKworRUdMaW50IE9mZnNjcmVlblN1cmZhY2VWazo6Z2V0
U3dhcEJlaGF2aW9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gRUdMX0JVRkZFUl9QUkVTRVJWRUQ7
Cit9CisKK2dsOjpFcnJvciBPZmZzY3JlZW5TdXJmYWNlVms6OmdldEF0dGFjaG1lbnRSZW5kZXJU
YXJnZXQoCisgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVudDo6VGFyZ2V0ICYgLyp0
YXJnZXQqLywKKyAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKiogLypydE91
dCovKQoreworICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Cit9CisKK1dpbmRvd1N1cmZhY2VWazo6V2luZG93U3VyZmFjZVZrKGNv
bnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdXJmYWNlU3RhdGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEVHTGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEVHTGludCBoZWlnaHQpCisgICAgOiBTdXJmYWNlSW1wbChzdXJmYWNlU3RhdGUp
LAorICAgICAgbU5hdGl2ZVdpbmRvd1R5cGUod2luZG93KSwKKyAgICAgIG1TdXJmYWNlKFZLX05V
TExfSEFORExFKSwKKyAgICAgIG1Td2FwY2hhaW4oVktfTlVMTF9IQU5ETEUpLAorICAgICAgbVJl
bmRlclRhcmdldCgpLAorICAgICAgbUN1cnJlbnRTd2FwY2hhaW5JbWFnZUluZGV4KDApCit7Cisg
ICAgbVJlbmRlclRhcmdldC5leHRlbnRzLndpZHRoICA9IHN0YXRpY19jYXN0PEdMaW50Pih3aWR0
aCk7CisgICAgbVJlbmRlclRhcmdldC5leHRlbnRzLmhlaWdodCA9IHN0YXRpY19jYXN0PEdMaW50
PihoZWlnaHQpOworICAgIG1SZW5kZXJUYXJnZXQuZXh0ZW50cy5kZXB0aCAgPSAxOworICAgIG1S
ZW5kZXJUYXJnZXQucmVzb3VyY2UgICAgICAgPSB0aGlzOworfQorCitXaW5kb3dTdXJmYWNlVms6
On5XaW5kb3dTdXJmYWNlVmsoKQoreworICAgIEFTU0VSVChtU3VyZmFjZSA9PSBWS19OVUxMX0hB
TkRMRSk7CisgICAgQVNTRVJUKG1Td2FwY2hhaW4gPT0gVktfTlVMTF9IQU5ETEUpOworfQorCit2
b2lkIFdpbmRvd1N1cmZhY2VWazo6ZGVzdHJveShjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUlt
cGwpCit7CisgICAgY29uc3QgRGlzcGxheVZrICpkaXNwbGF5VmsgPSBHZXRBczxEaXNwbGF5Vms+
KGRpc3BsYXlJbXBsKTsKKyAgICBSZW5kZXJlclZrICpyZW5kZXJlclZrICAgICA9IGRpc3BsYXlW
ay0+Z2V0UmVuZGVyZXIoKTsKKyAgICBWa0RldmljZSBkZXZpY2UgICAgICAgICAgICA9IHJlbmRl
cmVyVmstPmdldERldmljZSgpOworICAgIFZrSW5zdGFuY2UgaW5zdGFuY2UgICAgICAgID0gcmVu
ZGVyZXJWay0+Z2V0SW5zdGFuY2UoKTsKKworICAgIHJlbmRlcmVyVmstPmZpbmlzaCgpOworCisg
ICAgbUltYWdlQXZhaWxhYmxlU2VtYXBob3JlLmRlc3Ryb3koZGV2aWNlKTsKKyAgICBtUmVuZGVy
aW5nQ29tcGxldGVTZW1hcGhvcmUuZGVzdHJveShkZXZpY2UpOworCisgICAgZm9yIChhdXRvICZp
bWFnZVZpZXcgOiBtU3dhcGNoYWluSW1hZ2VWaWV3cykKKyAgICB7CisgICAgICAgIGltYWdlVmll
dy5kZXN0cm95KGRldmljZSk7CisgICAgfQorCisgICAgLy8gQWx0aG91Z2ggd2UgZG9uJ3Qgb3du
IHRoZSBzd2FwY2hhaW4gaW1hZ2UgaGFuZGxlcywgd2UgbmVlZCB0byBrZWVwIG91ciBzaHV0ZG93
biBjbGVhbi4KKyAgICBmb3IgKGF1dG8gJmltYWdlIDogbVN3YXBjaGFpbkltYWdlcykKKyAgICB7
CisgICAgICAgIGltYWdlLnJlc2V0KCk7CisgICAgfQorCisgICAgZm9yIChhdXRvICZmcmFtZWJ1
ZmZlciA6IG1Td2FwY2hhaW5GcmFtZWJ1ZmZlcnMpCisgICAgeworICAgICAgICBmcmFtZWJ1ZmZl
ci5kZXN0cm95KGRldmljZSk7CisgICAgfQorCisgICAgaWYgKG1Td2FwY2hhaW4pCisgICAgewor
ICAgICAgICB2a0Rlc3Ryb3lTd2FwY2hhaW5LSFIoZGV2aWNlLCBtU3dhcGNoYWluLCBudWxscHRy
KTsKKyAgICAgICAgbVN3YXBjaGFpbiA9IFZLX05VTExfSEFORExFOworICAgIH0KKworICAgIGlm
IChtU3VyZmFjZSkKKyAgICB7CisgICAgICAgIHZrRGVzdHJveVN1cmZhY2VLSFIoaW5zdGFuY2Us
IG1TdXJmYWNlLCBudWxscHRyKTsKKyAgICAgICAgbVN1cmZhY2UgPSBWS19OVUxMX0hBTkRMRTsK
KyAgICB9Cit9CisKK2VnbDo6RXJyb3IgV2luZG93U3VyZmFjZVZrOjppbml0aWFsaXplKGNvbnN0
IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkKK3sKKyAgICBjb25zdCBEaXNwbGF5VmsgKmRpc3Bs
YXlWayA9IEdldEFzPERpc3BsYXlWaz4oZGlzcGxheUltcGwpOworICAgIHJldHVybiBpbml0aWFs
aXplSW1wbChkaXNwbGF5VmstPmdldFJlbmRlcmVyKCkpLnRvRUdMKEVHTF9CQURfU1VSRkFDRSk7
Cit9CisKK3ZrOjpFcnJvciBXaW5kb3dTdXJmYWNlVms6OmluaXRpYWxpemVJbXBsKFJlbmRlcmVy
VmsgKnJlbmRlcmVyKQoreworICAgIC8vIFRPRE8oam1hZGlsbCk6IE1ha2UgdGhpcyBwbGF0Zm9y
bS1zcGVjaWZpYy4KKyAgICBWa1dpbjMyU3VyZmFjZUNyZWF0ZUluZm9LSFIgY3JlYXRlSW5mbzsK
KworICAgIGNyZWF0ZUluZm8uc1R5cGUgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfV0lOMzJfU1VS
RkFDRV9DUkVBVEVfSU5GT19LSFI7CisgICAgY3JlYXRlSW5mby5wTmV4dCAgICAgPSBudWxscHRy
OworICAgIGNyZWF0ZUluZm8uZmxhZ3MgICAgID0gMDsKKyAgICBjcmVhdGVJbmZvLmhpbnN0YW5j
ZSA9IEdldE1vZHVsZUhhbmRsZShudWxscHRyKTsKKyAgICBjcmVhdGVJbmZvLmh3bmQgICAgICA9
IG1OYXRpdmVXaW5kb3dUeXBlOworICAgIEFOR0xFX1ZLX1RSWSh2a0NyZWF0ZVdpbjMyU3VyZmFj
ZUtIUihyZW5kZXJlci0+Z2V0SW5zdGFuY2UoKSwgJmNyZWF0ZUluZm8sIG51bGxwdHIsICZtU3Vy
ZmFjZSkpOworCisgICAgdWludDMyX3QgcHJlc2VudFF1ZXVlID0gMDsKKyAgICBBTkdMRV9UUllf
UkVTVUxUKHJlbmRlcmVyLT5zZWxlY3RQcmVzZW50UXVldWVGb3JTdXJmYWNlKG1TdXJmYWNlKSwg
cHJlc2VudFF1ZXVlKTsKKworICAgIGNvbnN0IGF1dG8gJnBoeXNpY2FsRGV2aWNlID0gcmVuZGVy
ZXItPmdldFBoeXNpY2FsRGV2aWNlKCk7CisKKyAgICBWa1N1cmZhY2VDYXBhYmlsaXRpZXNLSFIg
c3VyZmFjZUNhcHM7CisgICAgQU5HTEVfVktfVFJZKHZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNl
Q2FwYWJpbGl0aWVzS0hSKHBoeXNpY2FsRGV2aWNlLCBtU3VyZmFjZSwgJnN1cmZhY2VDYXBzKSk7
CisKKyAgICAvLyBBZGp1c3Qgd2lkdGggYW5kIGhlaWdodCB0byB0aGUgc3dhcGNoYWluIGlmIG5l
Y2Vzc2FyeS4KKyAgICB1aW50MzJfdCB3aWR0aCAgPSBzdXJmYWNlQ2Fwcy5jdXJyZW50RXh0ZW50
LndpZHRoOworICAgIHVpbnQzMl90IGhlaWdodCA9IHN1cmZhY2VDYXBzLmN1cnJlbnRFeHRlbnQu
aGVpZ2h0OworCisgICAgLy8gVE9ETyhqbWFkaWxsKTogU3VwcG9ydCBkZXZpY2VzIHdoaWNoIGRv
bid0IHN1cHBvcnQgY29weS4gV2UgdXNlIHRoaXMgZm9yIFJlYWRQaXhlbHMuCisgICAgQU5HTEVf
VktfQ0hFQ0soKHN1cmZhY2VDYXBzLnN1cHBvcnRlZFVzYWdlRmxhZ3MgJiBWS19JTUFHRV9VU0FH
RV9UUkFOU0ZFUl9TUkNfQklUKSAhPSAwLAorICAgICAgICAgICAgICAgICAgIFZLX0VSUk9SX0lO
SVRJQUxJWkFUSU9OX0ZBSUxFRCk7CisKKyAgICBpZiAoc3VyZmFjZUNhcHMuY3VycmVudEV4dGVu
dC53aWR0aCA9PSAweEZGRkZGRkZGdSkKKyAgICB7CisgICAgICAgIEFTU0VSVChzdXJmYWNlQ2Fw
cy5jdXJyZW50RXh0ZW50LmhlaWdodCA9PSAweEZGRkZGRkZGdSk7CisKKyAgICAgICAgUkVDVCBy
ZWN0OworICAgICAgICBBTkdMRV9WS19DSEVDSyhHZXRDbGllbnRSZWN0KG1OYXRpdmVXaW5kb3dU
eXBlLCAmcmVjdCkgPT0gVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgVktfRVJST1JfSU5J
VElBTElaQVRJT05fRkFJTEVEKTsKKyAgICAgICAgaWYgKG1SZW5kZXJUYXJnZXQuZXh0ZW50cy53
aWR0aCA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICB3aWR0aCA9IHN0YXRpY19jYXN0PHVp
bnQzMl90PihyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0KTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
bVJlbmRlclRhcmdldC5leHRlbnRzLmhlaWdodCA9PSAwKQorICAgICAgICB7CisgICAgICAgICAg
ICBoZWlnaHQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmVjdC5ib3R0b20gLSByZWN0LnRvcCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtUmVuZGVyVGFyZ2V0LmV4dGVudHMud2lkdGggID0g
c3RhdGljX2Nhc3Q8aW50Pih3aWR0aCk7CisgICAgbVJlbmRlclRhcmdldC5leHRlbnRzLmhlaWdo
dCA9IHN0YXRpY19jYXN0PGludD4oaGVpZ2h0KTsKKworICAgIHVpbnQzMl90IHByZXNlbnRNb2Rl
Q291bnQgPSAwOworICAgIEFOR0xFX1ZLX1RSWSh2a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZVBy
ZXNlbnRNb2Rlc0tIUihwaHlzaWNhbERldmljZSwgbVN1cmZhY2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcmVzZW50TW9kZUNv
dW50LCBudWxscHRyKSk7CisgICAgQVNTRVJUKHByZXNlbnRNb2RlQ291bnQgPiAwKTsKKworICAg
IHN0ZDo6dmVjdG9yPFZrUHJlc2VudE1vZGVLSFI+IHByZXNlbnRNb2RlcyhwcmVzZW50TW9kZUNv
dW50KTsKKyAgICBBTkdMRV9WS19UUlkodmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VQcmVzZW50
TW9kZXNLSFIocGh5c2ljYWxEZXZpY2UsIG1TdXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJlc2VudE1vZGVDb3VudCwg
cHJlc2VudE1vZGVzLmRhdGEoKSkpOworCisgICAgLy8gU2VsZWN0IGFwcHJvcHJpYXRlIHByZXNl
bnQgbW9kZSBiYXNlZCBvbiB2c3luYyBwYXJhbWV0ZXIuCisgICAgLy8gVE9ETyhqbWFkaWxsKTog
TW9yZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxsb3dzIGZvciBjaGFuZ2luZyBh
bmQgbW9yZSB2YWx1ZXMuCisgICAgY29uc3QgRUdMaW50IG1pblN3YXBJbnRlcnZhbCA9IG1TdGF0
ZS5jb25maWctPm1pblN3YXBJbnRlcnZhbDsKKyAgICBjb25zdCBFR0xpbnQgbWF4U3dhcEludGVy
dmFsID0gbVN0YXRlLmNvbmZpZy0+bWF4U3dhcEludGVydmFsOworICAgIEFTU0VSVChtaW5Td2Fw
SW50ZXJ2YWwgPT0gMCB8fCBtaW5Td2FwSW50ZXJ2YWwgPT0gMSk7CisgICAgQVNTRVJUKG1heFN3
YXBJbnRlcnZhbCA9PSAwIHx8IG1heFN3YXBJbnRlcnZhbCA9PSAxKTsKKworICAgIFZrUHJlc2Vu
dE1vZGVLSFIgc3dhcGNoYWluUHJlc2VudE1vZGUgPQorICAgICAgICBHZXREZXNpcmVkUHJlc2Vu
dE1vZGUocHJlc2VudE1vZGVzLCBtaW5Td2FwSW50ZXJ2YWwsIG1heFN3YXBJbnRlcnZhbCk7CisK
KyAgICAvLyBEZXRlcm1pbmUgbnVtYmVyIG9mIHN3YXBjaGFpbiBpbWFnZXMuIEFpbSBmb3Igb25l
IG1vcmUgdGhhbiB0aGUgbWluaW11bS4KKyAgICB1aW50MzJfdCBtaW5JbWFnZUNvdW50ID0gc3Vy
ZmFjZUNhcHMubWluSW1hZ2VDb3VudCArIDE7CisgICAgaWYgKHN1cmZhY2VDYXBzLm1heEltYWdl
Q291bnQgPiAwICYmIG1pbkltYWdlQ291bnQgPiBzdXJmYWNlQ2Fwcy5tYXhJbWFnZUNvdW50KQor
ICAgIHsKKyAgICAgICAgbWluSW1hZ2VDb3VudCA9IHN1cmZhY2VDYXBzLm1heEltYWdlQ291bnQ7
CisgICAgfQorCisgICAgLy8gRGVmYXVsdCB0byBpZGVudGl0eSB0cmFuc2Zvcm0uCisgICAgVmtT
dXJmYWNlVHJhbnNmb3JtRmxhZ0JpdHNLSFIgcHJlVHJhbnNmb3JtID0gVktfU1VSRkFDRV9UUkFO
U0ZPUk1fSURFTlRJVFlfQklUX0tIUjsKKyAgICBpZiAoKHN1cmZhY2VDYXBzLnN1cHBvcnRlZFRy
YW5zZm9ybXMgJiBwcmVUcmFuc2Zvcm0pID09IDApCisgICAgeworICAgICAgICBwcmVUcmFuc2Zv
cm0gPSBzdXJmYWNlQ2Fwcy5jdXJyZW50VHJhbnNmb3JtOworICAgIH0KKworICAgIHVpbnQzMl90
IHN1cmZhY2VGb3JtYXRDb3VudCA9IDA7CisgICAgQU5HTEVfVktfVFJZKHZrR2V0UGh5c2ljYWxE
ZXZpY2VTdXJmYWNlRm9ybWF0c0tIUihwaHlzaWNhbERldmljZSwgbVN1cmZhY2UsICZzdXJmYWNl
Rm9ybWF0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudWxscHRyKSk7CisKKyAgICBzdGQ6OnZlY3RvcjxWa1N1cmZhY2VGb3JtYXRL
SFI+IHN1cmZhY2VGb3JtYXRzKHN1cmZhY2VGb3JtYXRDb3VudCk7CisgICAgQU5HTEVfVktfVFJZ
KHZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlRm9ybWF0c0tIUihwaHlzaWNhbERldmljZSwgbVN1
cmZhY2UsICZzdXJmYWNlRm9ybWF0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJmYWNlRm9ybWF0cy5kYXRhKCkpKTsKKworICAg
IG1SZW5kZXJUYXJnZXQuZm9ybWF0ID0gJkdldFZrRm9ybWF0RnJvbUNvbmZpZygqbVN0YXRlLmNv
bmZpZyk7CisgICAgYXV0byBuYXRpdmVGb3JtYXQgICAgPSBtUmVuZGVyVGFyZ2V0LmZvcm1hdC0+
bmF0aXZlOworCisgICAgaWYgKHN1cmZhY2VGb3JtYXRDb3VudCA9PSAxdSAmJiBzdXJmYWNlRm9y
bWF0c1swXS5mb3JtYXQgPT0gVktfRk9STUFUX1VOREVGSU5FRCkKKyAgICB7CisgICAgICAgIC8v
IFRoaXMgaXMgZmluZS4KKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgYm9vbCBmb3Vu
ZEZvcm1hdCA9IGZhbHNlOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJnN1cmZhY2VGb3JtYXQg
OiBzdXJmYWNlRm9ybWF0cykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHN1cmZhY2VGb3Jt
YXQuZm9ybWF0ID09IG5hdGl2ZUZvcm1hdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBmb3VuZEZvcm1hdCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBBTkdMRV9WS19DSEVDSyhmb3VuZEZvcm1hdCwgVktf
RVJST1JfSU5JVElBTElaQVRJT05fRkFJTEVEKTsKKyAgICB9CisKKyAgICBWa1N3YXBjaGFpbkNy
ZWF0ZUluZm9LSFIgc3dhcGNoYWluSW5mbzsKKyAgICBzd2FwY2hhaW5JbmZvLnNUeXBlICAgICAg
ICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX1NXQVBDSEFJTl9DUkVBVEVfSU5GT19LSFI7Cisg
ICAgc3dhcGNoYWluSW5mby5wTmV4dCAgICAgICAgICAgICAgPSBudWxscHRyOworICAgIHN3YXBj
aGFpbkluZm8uZmxhZ3MgICAgICAgICAgICAgID0gMDsKKyAgICBzd2FwY2hhaW5JbmZvLnN1cmZh
Y2UgICAgICAgICAgICA9IG1TdXJmYWNlOworICAgIHN3YXBjaGFpbkluZm8ubWluSW1hZ2VDb3Vu
dCAgICAgID0gbWluSW1hZ2VDb3VudDsKKyAgICBzd2FwY2hhaW5JbmZvLmltYWdlRm9ybWF0ICAg
ICAgICA9IG5hdGl2ZUZvcm1hdDsKKyAgICBzd2FwY2hhaW5JbmZvLmltYWdlQ29sb3JTcGFjZSAg
ICA9IFZLX0NPTE9SU1BBQ0VfU1JHQl9OT05MSU5FQVJfS0hSOworICAgIHN3YXBjaGFpbkluZm8u
aW1hZ2VFeHRlbnQud2lkdGggID0gd2lkdGg7CisgICAgc3dhcGNoYWluSW5mby5pbWFnZUV4dGVu
dC5oZWlnaHQgPSBoZWlnaHQ7CisgICAgc3dhcGNoYWluSW5mby5pbWFnZUFycmF5TGF5ZXJzICAg
PSAxOworICAgIHN3YXBjaGFpbkluZm8uaW1hZ2VVc2FnZSAgICAgICAgID0gKFZLX0lNQUdFX1VT
QUdFX0NPTE9SX0FUVEFDSE1FTlRfQklUIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVktfSU1BR0VfVVNBR0VfVFJBTlNGRVJfU1JDX0JJVCB8IFZLX0lNQUdFX1VTQUdFX1RSQU5T
RkVSX0RTVF9CSVQpOworICAgIHN3YXBjaGFpbkluZm8uaW1hZ2VTaGFyaW5nTW9kZSAgICAgID0g
VktfU0hBUklOR19NT0RFX0VYQ0xVU0lWRTsKKyAgICBzd2FwY2hhaW5JbmZvLnF1ZXVlRmFtaWx5
SW5kZXhDb3VudCA9IDA7CisgICAgc3dhcGNoYWluSW5mby5wUXVldWVGYW1pbHlJbmRpY2VzICAg
PSBudWxscHRyOworICAgIHN3YXBjaGFpbkluZm8ucHJlVHJhbnNmb3JtICAgICAgICAgID0gcHJl
VHJhbnNmb3JtOworICAgIHN3YXBjaGFpbkluZm8uY29tcG9zaXRlQWxwaGEgICAgICAgID0gVktf
Q09NUE9TSVRFX0FMUEhBX09QQVFVRV9CSVRfS0hSOworICAgIHN3YXBjaGFpbkluZm8ucHJlc2Vu
dE1vZGUgICAgICAgICAgID0gc3dhcGNoYWluUHJlc2VudE1vZGU7CisgICAgc3dhcGNoYWluSW5m
by5jbGlwcGVkICAgICAgICAgICAgICAgPSBWS19UUlVFOworICAgIHN3YXBjaGFpbkluZm8ub2xk
U3dhcGNoYWluICAgICAgICAgID0gVktfTlVMTF9IQU5ETEU7CisKKyAgICBjb25zdCBhdXRvICZk
ZXZpY2UgPSByZW5kZXJlci0+Z2V0RGV2aWNlKCk7CisgICAgQU5HTEVfVktfVFJZKHZrQ3JlYXRl
U3dhcGNoYWluS0hSKGRldmljZSwgJnN3YXBjaGFpbkluZm8sIG51bGxwdHIsICZtU3dhcGNoYWlu
KSk7CisKKyAgICAvLyBJbnRpYWxpemUgdGhlIHN3YXBjaGFpbiBpbWFnZSB2aWV3cy4KKyAgICB1
aW50MzJfdCBpbWFnZUNvdW50ID0gMDsKKyAgICBBTkdMRV9WS19UUlkodmtHZXRTd2FwY2hhaW5J
bWFnZXNLSFIoZGV2aWNlLCBtU3dhcGNoYWluLCAmaW1hZ2VDb3VudCwgbnVsbHB0cikpOworCisg
ICAgc3RkOjp2ZWN0b3I8VmtJbWFnZT4gc3dhcGNoYWluSW1hZ2VzKGltYWdlQ291bnQpOworICAg
IEFOR0xFX1ZLX1RSWSh2a0dldFN3YXBjaGFpbkltYWdlc0tIUihkZXZpY2UsIG1Td2FwY2hhaW4s
ICZpbWFnZUNvdW50LCBzd2FwY2hhaW5JbWFnZXMuZGF0YSgpKSk7CisKKyAgICAvLyBDb21tYW5k
QnVmZmVyIGlzIGEgc2luZ2xldG9uIGluIHRoZSBSZW5kZXJlci4KKyAgICB2azo6Q29tbWFuZEJ1
ZmZlciAqY29tbWFuZEJ1ZmZlciA9IHJlbmRlcmVyLT5nZXRDb21tYW5kQnVmZmVyKCk7CisgICAg
QU5HTEVfVFJZKGNvbW1hbmRCdWZmZXItPmJlZ2luKGRldmljZSkpOworCisgICAgVmtDbGVhckNv
bG9yVmFsdWUgdHJhbnNwYXJlbnRCbGFjazsKKyAgICB0cmFuc3BhcmVudEJsYWNrLmZsb2F0MzJb
MF0gPSAwLjBmOworICAgIHRyYW5zcGFyZW50QmxhY2suZmxvYXQzMlsxXSA9IDAuMGY7CisgICAg
dHJhbnNwYXJlbnRCbGFjay5mbG9hdDMyWzJdID0gMC4wZjsKKyAgICB0cmFuc3BhcmVudEJsYWNr
LmZsb2F0MzJbM10gPSAwLjBmOworCisgICAgbVN3YXBjaGFpbkltYWdlcy5yZXNpemUoaW1hZ2VD
b3VudCk7CisgICAgbVN3YXBjaGFpbkltYWdlVmlld3MucmVzaXplKGltYWdlQ291bnQpOworCisg
ICAgZm9yICh1aW50MzJfdCBpbWFnZUluZGV4ID0gMDsgaW1hZ2VJbmRleCA8IGltYWdlQ291bnQ7
ICsraW1hZ2VJbmRleCkKKyAgICB7CisgICAgICAgIFZrSW1hZ2Ugc3dhcGNoYWluSW1hZ2UgPSBz
d2FwY2hhaW5JbWFnZXNbaW1hZ2VJbmRleF07CisKKyAgICAgICAgVmtJbWFnZVZpZXdDcmVhdGVJ
bmZvIGltYWdlVmlld0luZm87CisgICAgICAgIGltYWdlVmlld0luZm8uc1R5cGUgICAgICAgICAg
ICAgICAgICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX0lNQUdFX1ZJRVdfQ1JFQVRFX0lO
Rk87CisgICAgICAgIGltYWdlVmlld0luZm8ucE5leHQgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9IG51bGxwdHI7CisgICAgICAgIGltYWdlVmlld0luZm8uZmxhZ3MgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9IDA7CisgICAgICAgIGltYWdlVmlld0luZm8uaW1hZ2UgICAgICAgICAgICAg
ICAgICAgICAgICAgICA9IHN3YXBjaGFpbkltYWdlOworICAgICAgICBpbWFnZVZpZXdJbmZvLnZp
ZXdUeXBlICAgICAgICAgICAgICAgICAgICAgICAgPSBWS19JTUFHRV9WSUVXX1RZUEVfMkQ7Cisg
ICAgICAgIGltYWdlVmlld0luZm8uZm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5h
dGl2ZUZvcm1hdDsKKyAgICAgICAgaW1hZ2VWaWV3SW5mby5jb21wb25lbnRzLnIgICAgICAgICAg
ICAgICAgICAgID0gVktfQ09NUE9ORU5UX1NXSVpaTEVfUjsKKyAgICAgICAgaW1hZ2VWaWV3SW5m
by5jb21wb25lbnRzLmcgICAgICAgICAgICAgICAgICAgID0gVktfQ09NUE9ORU5UX1NXSVpaTEVf
RzsKKyAgICAgICAgaW1hZ2VWaWV3SW5mby5jb21wb25lbnRzLmIgICAgICAgICAgICAgICAgICAg
ID0gVktfQ09NUE9ORU5UX1NXSVpaTEVfQjsKKyAgICAgICAgaW1hZ2VWaWV3SW5mby5jb21wb25l
bnRzLmEgICAgICAgICAgICAgICAgICAgID0gVktfQ09NUE9ORU5UX1NXSVpaTEVfQTsKKyAgICAg
ICAgaW1hZ2VWaWV3SW5mby5zdWJyZXNvdXJjZVJhbmdlLmFzcGVjdE1hc2sgICAgID0gVktfSU1B
R0VfQVNQRUNUX0NPTE9SX0JJVDsKKyAgICAgICAgaW1hZ2VWaWV3SW5mby5zdWJyZXNvdXJjZVJh
bmdlLmJhc2VNaXBMZXZlbCAgID0gMDsKKyAgICAgICAgaW1hZ2VWaWV3SW5mby5zdWJyZXNvdXJj
ZVJhbmdlLmxldmVsQ291bnQgICAgID0gMTsKKyAgICAgICAgaW1hZ2VWaWV3SW5mby5zdWJyZXNv
dXJjZVJhbmdlLmJhc2VBcnJheUxheWVyID0gMDsKKyAgICAgICAgaW1hZ2VWaWV3SW5mby5zdWJy
ZXNvdXJjZVJhbmdlLmxheWVyQ291bnQgICAgID0gMTsKKworICAgICAgICB2azo6SW1hZ2UgaW1h
Z2Uoc3dhcGNoYWluSW1hZ2UpOworICAgICAgICB2azo6SW1hZ2VWaWV3IGltYWdlVmlldzsKKyAg
ICAgICAgQU5HTEVfVFJZKGltYWdlVmlldy5pbml0KGRldmljZSwgaW1hZ2VWaWV3SW5mbykpOwor
CisgICAgICAgIC8vIFNldCB0cmFuc2ZlciBkZXN0IGxheW91dCwgYW5kIGNsZWFyIHRoZSBpbWFn
ZSB0byBibGFjay4KKyAgICAgICAgaW1hZ2UuY2hhbmdlTGF5b3V0VG9wKFZLX0lNQUdFX0FTUEVD
VF9DT0xPUl9CSVQsIFZLX0lNQUdFX0xBWU9VVF9UUkFOU0ZFUl9EU1RfT1BUSU1BTCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRCdWZmZXIpOworICAgICAgICBjb21tYW5k
QnVmZmVyLT5jbGVhclNpbmdsZUNvbG9ySW1hZ2UoaW1hZ2UsIHRyYW5zcGFyZW50QmxhY2spOwor
CisgICAgICAgIG1Td2FwY2hhaW5JbWFnZXNbaW1hZ2VJbmRleF0ucmV0YWluKGRldmljZSwgc3Rk
Ojptb3ZlKGltYWdlKSk7CisgICAgICAgIG1Td2FwY2hhaW5JbWFnZVZpZXdzW2ltYWdlSW5kZXhd
LnJldGFpbihkZXZpY2UsIHN0ZDo6bW92ZShpbWFnZVZpZXcpKTsKKyAgICB9CisKKyAgICBBTkdM
RV9UUlkoY29tbWFuZEJ1ZmZlci0+ZW5kKCkpOworICAgIEFOR0xFX1RSWShyZW5kZXJlci0+c3Vi
bWl0QW5kRmluaXNoQ29tbWFuZEJ1ZmZlcigqY29tbWFuZEJ1ZmZlcikpOworCisgICAgQU5HTEVf
VFJZKG1JbWFnZUF2YWlsYWJsZVNlbWFwaG9yZS5pbml0KGRldmljZSkpOworICAgIEFOR0xFX1RS
WShtUmVuZGVyaW5nQ29tcGxldGVTZW1hcGhvcmUuaW5pdChkZXZpY2UpKTsKKworICAgIC8vIEdl
dCB0aGUgZmlyc3QgYXZhaWxhYmxlIHN3YXBjaGFpbiBpYW1nZS4KKyAgICBBTkdMRV9UUlkobmV4
dFN3YXBjaGFpbkltYWdlKHJlbmRlcmVyKSk7CisKKyAgICByZXR1cm4gdms6Ok5vRXJyb3IoKTsK
K30KKworRnJhbWVidWZmZXJJbXBsICpXaW5kb3dTdXJmYWNlVms6OmNyZWF0ZURlZmF1bHRGcmFt
ZWJ1ZmZlcihjb25zdCBnbDo6RnJhbWVidWZmZXJTdGF0ZSAmc3RhdGUpCit7CisgICAgcmV0dXJu
IEZyYW1lYnVmZmVyVms6OkNyZWF0ZURlZmF1bHRGQk8oc3RhdGUsIHRoaXMpOworfQorCitlZ2w6
OkVycm9yIFdpbmRvd1N1cmZhY2VWazo6c3dhcChjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUlt
cGwpCit7CisgICAgY29uc3QgRGlzcGxheVZrICpkaXNwbGF5VmsgPSBHZXRBczxEaXNwbGF5Vms+
KGRpc3BsYXlJbXBsKTsKKyAgICByZXR1cm4gc3dhcEltcGwoZGlzcGxheVZrLT5nZXRSZW5kZXJl
cigpKS50b0VHTChFR0xfQkFEX0FMTE9DKTsKK30KKwordms6OkVycm9yIFdpbmRvd1N1cmZhY2VW
azo6c3dhcEltcGwoUmVuZGVyZXJWayAqcmVuZGVyZXIpCit7CisgICAgdms6OkNvbW1hbmRCdWZm
ZXIgKmN1cnJlbnRDQiA9IHJlbmRlcmVyLT5nZXRDb21tYW5kQnVmZmVyKCk7CisKKyAgICBhdXRv
ICppbWFnZSA9ICZtU3dhcGNoYWluSW1hZ2VzW21DdXJyZW50U3dhcGNoYWluSW1hZ2VJbmRleF07
CisKKyAgICBjdXJyZW50Q0ItPmJlZ2luKHJlbmRlcmVyLT5nZXREZXZpY2UoKSk7CisgICAgaW1h
Z2UtPmNoYW5nZUxheW91dFdpdGhTdGFnZXMoVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwgVktf
SU1BR0VfTEFZT1VUX1BSRVNFTlRfU1JDX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWS19QSVBFTElORV9TVEFHRV9BTExfQ09NTUFORFNfQklULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZLX1BJUEVMSU5FX1NUQUdFX0JPVFRPTV9PRl9QSVBFX0JJ
VCwgY3VycmVudENCKTsKKyAgICBjdXJyZW50Q0ItPmVuZCgpOworCisgICAgQU5HTEVfVFJZKHJl
bmRlcmVyLT5zdWJtaXRDb21tYW5kc1dpdGhTeW5jKCpjdXJyZW50Q0IsIG1JbWFnZUF2YWlsYWJs
ZVNlbWFwaG9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbVJlbmRlcmluZ0NvbXBsZXRlU2VtYXBob3JlKSk7CisKKyAgICBWa1ByZXNlbnRJbmZvS0hS
IHByZXNlbnRJbmZvOworICAgIHByZXNlbnRJbmZvLnNUeXBlICAgICAgICAgICAgICA9IFZLX1NU
UlVDVFVSRV9UWVBFX1BSRVNFTlRfSU5GT19LSFI7CisgICAgcHJlc2VudEluZm8ucE5leHQgICAg
ICAgICAgICAgID0gbnVsbHB0cjsKKyAgICBwcmVzZW50SW5mby53YWl0U2VtYXBob3JlQ291bnQg
PSAxOworICAgIHByZXNlbnRJbmZvLnBXYWl0U2VtYXBob3JlcyAgICA9IG1SZW5kZXJpbmdDb21w
bGV0ZVNlbWFwaG9yZS5wdHIoKTsKKyAgICBwcmVzZW50SW5mby5zd2FwY2hhaW5Db3VudCAgICAg
PSAxOworICAgIHByZXNlbnRJbmZvLnBTd2FwY2hhaW5zICAgICAgICA9ICZtU3dhcGNoYWluOwor
ICAgIHByZXNlbnRJbmZvLnBJbWFnZUluZGljZXMgICAgICA9ICZtQ3VycmVudFN3YXBjaGFpbklt
YWdlSW5kZXg7CisgICAgcHJlc2VudEluZm8ucFJlc3VsdHMgICAgICAgICAgID0gbnVsbHB0cjsK
KworICAgIEFOR0xFX1ZLX1RSWSh2a1F1ZXVlUHJlc2VudEtIUihyZW5kZXJlci0+Z2V0UXVldWUo
KSwgJnByZXNlbnRJbmZvKSk7CisKKyAgICAvLyBHZXQgdGhlIG5leHQgYXZhaWxhYmxlIHN3YXBj
aGFpbiBpbWFnZS4KKyAgICBBTkdMRV9UUlkobmV4dFN3YXBjaGFpbkltYWdlKHJlbmRlcmVyKSk7
CisKKyAgICByZXR1cm4gdms6Ok5vRXJyb3IoKTsKK30KKwordms6OkVycm9yIFdpbmRvd1N1cmZh
Y2VWazo6bmV4dFN3YXBjaGFpbkltYWdlKFJlbmRlcmVyVmsgKnJlbmRlcmVyKQoreworICAgIFZr
RGV2aWNlIGRldmljZSA9IHJlbmRlcmVyLT5nZXREZXZpY2UoKTsKKworICAgIEFOR0xFX1ZLX1RS
WSh2a0FjcXVpcmVOZXh0SW1hZ2VLSFIoZGV2aWNlLCBtU3dhcGNoYWluLCBzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQ2NF90Pjo6bWF4KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtSW1hZ2VBdmFpbGFibGVTZW1hcGhvcmUuZ2V0SGFuZGxlKCksIFZLX05VTExfSEFO
RExFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1DdXJyZW50U3dh
cGNoYWluSW1hZ2VJbmRleCkpOworCisgICAgLy8gVXBkYXRlIFJlbmRlclRhcmdldCBwb2ludGVy
cy4KKyAgICBtUmVuZGVyVGFyZ2V0LmltYWdlICAgICA9ICZtU3dhcGNoYWluSW1hZ2VzW21DdXJy
ZW50U3dhcGNoYWluSW1hZ2VJbmRleF07CisgICAgbVJlbmRlclRhcmdldC5pbWFnZVZpZXcgPSAm
bVN3YXBjaGFpbkltYWdlVmlld3NbbUN1cnJlbnRTd2FwY2hhaW5JbWFnZUluZGV4XTsKKworICAg
IHJldHVybiB2azo6Tm9FcnJvcigpOworfQorCitlZ2w6OkVycm9yIFdpbmRvd1N1cmZhY2VWazo6
cG9zdFN1YkJ1ZmZlcihFR0xpbnQgeCwgRUdMaW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhl
aWdodCkKK3sKKyAgICAvLyBUT0RPKGptYWRpbGwpCisgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdM
X1NVQ0NFU1MpOworfQorCitlZ2w6OkVycm9yIFdpbmRvd1N1cmZhY2VWazo6cXVlcnlTdXJmYWNl
UG9pbnRlckFOR0xFKEVHTGludCBhdHRyaWJ1dGUsIHZvaWQgKip2YWx1ZSkKK3sKKyAgICBVTlJF
QUNIQUJMRSgpOworICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9CQURfQ1VSUkVOVF9TVVJGQUNF
KTsKK30KKworZWdsOjpFcnJvciBXaW5kb3dTdXJmYWNlVms6OmJpbmRUZXhJbWFnZShnbDo6VGV4
dHVyZSAqdGV4dHVyZSwgRUdMaW50IGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfU1VDQ0VTUyk7Cit9CisKK2VnbDo6RXJyb3IgV2luZG93U3VyZmFjZVZrOjpyZWxlYXNlVGV4
SW1hZ2UoRUdMaW50IGJ1ZmZlcikKK3sKKyAgICByZXR1cm4gZWdsOjpFcnJvcihFR0xfU1VDQ0VT
Uyk7Cit9CisKK2VnbDo6RXJyb3IgV2luZG93U3VyZmFjZVZrOjpnZXRTeW5jVmFsdWVzKEVHTHVp
bnQ2NEtIUiAqIC8qdXN0Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFR0x1aW50NjRLSFIgKiAvKm1zYyovLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRUdMdWludDY0S0hSICogLypzYmMqLykKIHsKICAgICBVTklNUExFTUVO
VEVEKCk7CiAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9BQ0NFU1MpOwogfQogCi12b2lk
IFN1cmZhY2VWazo6c2V0U3dhcEludGVydmFsKEVHTGludCBpbnRlcnZhbCkKK3ZvaWQgV2luZG93
U3VyZmFjZVZrOjpzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFsKQogewotICAgIFVOSU1Q
TEVNRU5URUQoKTsKIH0KIAotRUdMaW50IFN1cmZhY2VWazo6Z2V0V2lkdGgoKSBjb25zdAorRUdM
aW50IFdpbmRvd1N1cmZhY2VWazo6Z2V0V2lkdGgoKSBjb25zdAogewotICAgIFVOSU1QTEVNRU5U
RUQoKTsKLSAgICByZXR1cm4gRUdMaW50KCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVHTGlu
dD4obVJlbmRlclRhcmdldC5leHRlbnRzLndpZHRoKTsKIH0KIAotRUdMaW50IFN1cmZhY2VWazo6
Z2V0SGVpZ2h0KCkgY29uc3QKK0VHTGludCBXaW5kb3dTdXJmYWNlVms6OmdldEhlaWdodCgpIGNv
bnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBFR0xpbnQoKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RUdMaW50PihtUmVuZGVyVGFyZ2V0LmV4dGVudHMuaGVpZ2h0KTsK
IH0KIAotRUdMaW50IFN1cmZhY2VWazo6aXNQb3N0U3ViQnVmZmVyU3VwcG9ydGVkKCkgY29uc3QK
K0VHTGludCBXaW5kb3dTdXJmYWNlVms6OmlzUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCgpIGNvbnN0
CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBFR0xpbnQoKTsKKyAgICAvLyBU
T0RPKGptYWRpbGwpCisgICAgcmV0dXJuIEVHTF9GQUxTRTsKIH0KIAotRUdMaW50IFN1cmZhY2VW
azo6Z2V0U3dhcEJlaGF2aW9yKCkgY29uc3QKK0VHTGludCBXaW5kb3dTdXJmYWNlVms6OmdldFN3
YXBCZWhhdmlvcigpIGNvbnN0CiB7Ci0gICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIHJldHVybiBF
R0xpbnQoKTsKKyAgICAvLyBUT0RPKGptYWRpbGwpCisgICAgcmV0dXJuIEVHTF9CVUZGRVJfREVT
VFJPWUVEOwogfQogCi1nbDo6RXJyb3IgU3VyZmFjZVZrOjpnZXRBdHRhY2htZW50UmVuZGVyVGFy
Z2V0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdldCAmdGFyZ2V0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlckF0
dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkKK2dsOjpFcnJvciBXaW5kb3dTdXJmYWNlVms6
OmdldEF0dGFjaG1lbnRSZW5kZXJUYXJnZXQoCisgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0
YWNobWVudDo6VGFyZ2V0ICYgLyp0YXJnZXQqLywKKyAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRS
ZW5kZXJUYXJnZXQgKipydE91dCkKIHsKLSAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgcmV0dXJu
IGdsOjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgKnJ0T3V0ID0gJm1SZW5kZXJU
YXJnZXQ7CisgICAgcmV0dXJuIGdsOjpOb0Vycm9yKCk7Cit9CisKK2dsOjpFcnJvck9yUmVzdWx0
PHZrOjpGcmFtZWJ1ZmZlciAqPiBXaW5kb3dTdXJmYWNlVms6OmdldEN1cnJlbnRGcmFtZWJ1ZmZl
cigKKyAgICBWa0RldmljZSBkZXZpY2UsCisgICAgY29uc3Qgdms6OlJlbmRlclBhc3MgJmNvbXBh
dGlibGVSZW5kZXJQYXNzKQoreworICAgIGlmICghbVN3YXBjaGFpbkZyYW1lYnVmZmVycy5lbXB0
eSgpKQorICAgIHsKKyAgICAgICAgLy8gVmFsaWRhdGlvbiBsYXllcnMgc2hvdWxkIGRldGVjdCBp
ZiB0aGUgcmVuZGVyIHBhc3MgaXMgcmVhbGx5IGNvbXBhdGlibGUuCisgICAgICAgIHJldHVybiAm
bVN3YXBjaGFpbkZyYW1lYnVmZmVyc1ttQ3VycmVudFN3YXBjaGFpbkltYWdlSW5kZXhdOworICAg
IH0KKworICAgIFZrRnJhbWVidWZmZXJDcmVhdGVJbmZvIGZyYW1lYnVmZmVySW5mbzsKKworICAg
IC8vIFRPRE8oam1hZGlsbCk6IERlcHRoL1N0ZW5jaWwgYXR0YWNobWVudHMuCisgICAgZnJhbWVi
dWZmZXJJbmZvLnNUeXBlICAgICAgICAgICA9IFZLX1NUUlVDVFVSRV9UWVBFX0ZSQU1FQlVGRkVS
X0NSRUFURV9JTkZPOworICAgIGZyYW1lYnVmZmVySW5mby5wTmV4dCAgICAgICAgICAgPSBudWxs
cHRyOworICAgIGZyYW1lYnVmZmVySW5mby5mbGFncyAgICAgICAgICAgPSAwOworICAgIGZyYW1l
YnVmZmVySW5mby5yZW5kZXJQYXNzICAgICAgPSBjb21wYXRpYmxlUmVuZGVyUGFzcy5nZXRIYW5k
bGUoKTsKKyAgICBmcmFtZWJ1ZmZlckluZm8uYXR0YWNobWVudENvdW50ID0gMXU7CisgICAgZnJh
bWVidWZmZXJJbmZvLnBBdHRhY2htZW50cyAgICA9IG51bGxwdHI7CisgICAgZnJhbWVidWZmZXJJ
bmZvLndpZHRoICAgICAgICAgICA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihtUmVuZGVyVGFyZ2V0
LmV4dGVudHMud2lkdGgpOworICAgIGZyYW1lYnVmZmVySW5mby5oZWlnaHQgICAgICAgICAgPSBz
dGF0aWNfY2FzdDx1aW50MzJfdD4obVJlbmRlclRhcmdldC5leHRlbnRzLmhlaWdodCk7CisgICAg
ZnJhbWVidWZmZXJJbmZvLmxheWVycyAgICAgICAgICA9IDE7CisKKyAgICBtU3dhcGNoYWluRnJh
bWVidWZmZXJzLnJlc2l6ZShtU3dhcGNoYWluSW1hZ2VWaWV3cy5zaXplKCkpOworICAgIGZvciAo
c2l6ZV90IGltYWdlSW5kZXggPSAwOyBpbWFnZUluZGV4IDwgbVN3YXBjaGFpbkZyYW1lYnVmZmVy
cy5zaXplKCk7ICsraW1hZ2VJbmRleCkKKyAgICB7CisgICAgICAgIGNvbnN0IGF1dG8gJmltYWdl
VmlldyAgICAgICAgPSBtU3dhcGNoYWluSW1hZ2VWaWV3c1tpbWFnZUluZGV4XTsKKyAgICAgICAg
VmtJbWFnZVZpZXcgaW1hZ2VWaWV3SGFuZGxlICA9IGltYWdlVmlldy5nZXRIYW5kbGUoKTsKKyAg
ICAgICAgZnJhbWVidWZmZXJJbmZvLnBBdHRhY2htZW50cyA9ICZpbWFnZVZpZXdIYW5kbGU7CisK
KyAgICAgICAgdms6OkZyYW1lYnVmZmVyIGZyYW1lYnVmZmVyOworICAgICAgICBBTkdMRV9UUlko
ZnJhbWVidWZmZXIuaW5pdChkZXZpY2UsIGZyYW1lYnVmZmVySW5mbykpOworCisgICAgICAgIG1T
d2FwY2hhaW5GcmFtZWJ1ZmZlcnNbaW1hZ2VJbmRleF0ucmV0YWluKGRldmljZSwgc3RkOjptb3Zl
KGZyYW1lYnVmZmVyKSk7CisgICAgfQorCisgICAgLy8gV2Ugc2hvdWxkIG9ubHkgaW5pdGlhbGl6
ZSBmcmFtZWJ1ZmZlcnMgb24gdGhlIGZpcnN0IHN3YXAuCisgICAgQVNTRVJUKG1DdXJyZW50U3dh
cGNoYWluSW1hZ2VJbmRleCA9PSAwdSk7CisgICAgcmV0dXJuICZtU3dhcGNoYWluRnJhbWVidWZm
ZXJzW21DdXJyZW50U3dhcGNoYWluSW1hZ2VJbmRleF07CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBy
eApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9TdXJmYWNlVmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vU3VyZmFjZVZrLmgKaW5kZXggYjU4MDUzMDhmZWMuLmZjMTA0
NjFjMDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL1N1cmZhY2VWay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vU3VyZmFjZVZrLmgKQEAgLTEwLDIwICsxMCw2
MSBAQAogI2lmbmRlZiBMSUJBTkdMRV9SRU5ERVJFUl9WVUxLQU5fU1VSRkFDRVZLX0hfCiAjZGVm
aW5lIExJQkFOR0xFX1JFTkRFUkVSX1ZVTEtBTl9TVVJGQUNFVktfSF8KIAorI2luY2x1ZGUgPHZ1
bGthbi92dWxrYW4uaD4KKwogI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL1N1cmZhY2VJbXBs
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlclRhcmdldFZrLmgi
CisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3JlbmRlcmVydmtfdXRpbHMuaCIK
IAogbmFtZXNwYWNlIHJ4CiB7CitjbGFzcyBSZW5kZXJlclZrOworCitjbGFzcyBPZmZzY3JlZW5T
dXJmYWNlVmsgOiBwdWJsaWMgU3VyZmFjZUltcGwKK3sKKyAgcHVibGljOgorICAgIE9mZnNjcmVl
blN1cmZhY2VWayhjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmc3VyZmFjZVN0YXRlLCBFR0xpbnQg
d2lkdGgsIEVHTGludCBoZWlnaHQpOworICAgIH5PZmZzY3JlZW5TdXJmYWNlVmsoKSBvdmVycmlk
ZTsKKworICAgIGVnbDo6RXJyb3IgaW5pdGlhbGl6ZShjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxh
eUltcGwpIG92ZXJyaWRlOworICAgIEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRGVmYXVsdEZyYW1l
YnVmZmVyKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICZzdGF0ZSkgb3ZlcnJpZGU7CisgICAg
ZWdsOjpFcnJvciBzd2FwKGNvbnN0IERpc3BsYXlJbXBsICpkaXNwbGF5SW1wbCkgb3ZlcnJpZGU7
CisgICAgZWdsOjpFcnJvciBwb3N0U3ViQnVmZmVyKEVHTGludCB4LCBFR0xpbnQgeSwgRUdMaW50
IHdpZHRoLCBFR0xpbnQgaGVpZ2h0KSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHF1ZXJ5U3Vy
ZmFjZVBvaW50ZXJBTkdMRShFR0xpbnQgYXR0cmlidXRlLCB2b2lkICoqdmFsdWUpIG92ZXJyaWRl
OworICAgIGVnbDo6RXJyb3IgYmluZFRleEltYWdlKGdsOjpUZXh0dXJlICp0ZXh0dXJlLCBFR0xp
bnQgYnVmZmVyKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIHJlbGVhc2VUZXhJbWFnZShFR0xp
bnQgYnVmZmVyKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9yIGdldFN5bmNWYWx1ZXMoRUdMdWlu
dDY0S0hSICp1c3QsIEVHTHVpbnQ2NEtIUiAqbXNjLCBFR0x1aW50NjRLSFIgKnNiYykgb3ZlcnJp
ZGU7CisgICAgdm9pZCBzZXRTd2FwSW50ZXJ2YWwoRUdMaW50IGludGVydmFsKSBvdmVycmlkZTsK
KworICAgIC8vIHdpZHRoIGFuZCBoZWlnaHQgY2FuIGNoYW5nZSB3aXRoIGNsaWVudCB3aW5kb3cg
cmVzaXppbmcKKyAgICBFR0xpbnQgZ2V0V2lkdGgoKSBjb25zdCBvdmVycmlkZTsKKyAgICBFR0xp
bnQgZ2V0SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBFR0xpbnQgaXNQb3N0U3ViQnVm
ZmVyU3VwcG9ydGVkKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgRUdMaW50IGdldFN3YXBCZWhhdmlv
cigpIGNvbnN0IG92ZXJyaWRlOwogCi1jbGFzcyBTdXJmYWNlVmsgOiBwdWJsaWMgU3VyZmFjZUlt
cGwKKyAgICBnbDo6RXJyb3IgZ2V0QXR0YWNobWVudFJlbmRlclRhcmdldChjb25zdCBnbDo6RnJh
bWVidWZmZXJBdHRhY2htZW50OjpUYXJnZXQgJnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlckF0dGFjaG1lbnRSZW5kZXJUYXJnZXQgKipy
dE91dCkgb3ZlcnJpZGU7CisKKyAgcHJpdmF0ZToKKyAgICBFR0xpbnQgbVdpZHRoOworICAgIEVH
TGludCBtSGVpZ2h0OworfTsKKworY2xhc3MgV2luZG93U3VyZmFjZVZrIDogcHVibGljIFN1cmZh
Y2VJbXBsLCBwdWJsaWMgUmVzb3VyY2VWawogewogICBwdWJsaWM6Ci0gICAgU3VyZmFjZVZrKGNv
bnN0IGVnbDo6U3VyZmFjZVN0YXRlICZzdXJmYWNlU3RhdGUpOwotICAgIH5TdXJmYWNlVmsoKSBv
dmVycmlkZTsKKyAgICBXaW5kb3dTdXJmYWNlVmsoY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJnN1
cmZhY2VTdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlV2luZG93VHlwZSB3aW5k
b3csCisgICAgICAgICAgICAgICAgICAgIEVHTGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAg
ICAgRUdMaW50IGhlaWdodCk7CisgICAgfldpbmRvd1N1cmZhY2VWaygpIG92ZXJyaWRlOworCisg
ICAgdm9pZCBkZXN0cm95KGNvbnN0IERpc3BsYXlJbXBsICpjb250ZXh0SW1wbCkgb3ZlcnJpZGU7
CiAKLSAgICBlZ2w6OkVycm9yIGluaXRpYWxpemUoKSBvdmVycmlkZTsKKyAgICBlZ2w6OkVycm9y
IGluaXRpYWxpemUoY29uc3QgRGlzcGxheUltcGwgKmRpc3BsYXlJbXBsKSBvdmVycmlkZTsKICAg
ICBGcmFtZWJ1ZmZlckltcGwgKmNyZWF0ZURlZmF1bHRGcmFtZWJ1ZmZlcihjb25zdCBnbDo6RnJh
bWVidWZmZXJTdGF0ZSAmc3RhdGUpIG92ZXJyaWRlOwotICAgIGVnbDo6RXJyb3Igc3dhcCgpIG92
ZXJyaWRlOworICAgIGVnbDo6RXJyb3Igc3dhcChjb25zdCBEaXNwbGF5SW1wbCAqZGlzcGxheUlt
cGwpIG92ZXJyaWRlOwogICAgIGVnbDo6RXJyb3IgcG9zdFN1YkJ1ZmZlcihFR0xpbnQgeCwgRUdM
aW50IHksIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCkgb3ZlcnJpZGU7CiAgICAgZWdsOjpF
cnJvciBxdWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMaW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZh
bHVlKSBvdmVycmlkZTsKICAgICBlZ2w6OkVycm9yIGJpbmRUZXhJbWFnZShnbDo6VGV4dHVyZSAq
dGV4dHVyZSwgRUdMaW50IGJ1ZmZlcikgb3ZlcnJpZGU7CkBAIC00MCw2ICs4MSwyOCBAQCBjbGFz
cyBTdXJmYWNlVmsgOiBwdWJsaWMgU3VyZmFjZUltcGwKIAogICAgIGdsOjpFcnJvciBnZXRBdHRh
Y2htZW50UmVuZGVyVGFyZ2V0KGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQ6OlRhcmdl
dCAmdGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1l
YnVmZmVyQXR0YWNobWVudFJlbmRlclRhcmdldCAqKnJ0T3V0KSBvdmVycmlkZTsKKworICAgIGds
OjpFcnJvck9yUmVzdWx0PHZrOjpGcmFtZWJ1ZmZlciAqPiBnZXRDdXJyZW50RnJhbWVidWZmZXIo
CisgICAgICAgIFZrRGV2aWNlIGRldmljZSwKKyAgICAgICAgY29uc3Qgdms6OlJlbmRlclBhc3Mg
JmNvbXBhdGlibGVSZW5kZXJQYXNzKTsKKworICBwcml2YXRlOgorICAgIHZrOjpFcnJvciBpbml0
aWFsaXplSW1wbChSZW5kZXJlclZrICpyZW5kZXJlcik7CisgICAgdms6OkVycm9yIG5leHRTd2Fw
Y2hhaW5JbWFnZShSZW5kZXJlclZrICpyZW5kZXJlcik7CisgICAgdms6OkVycm9yIHN3YXBJbXBs
KFJlbmRlcmVyVmsgKnJlbmRlcmVyKTsKKworICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgbU5hdGl2
ZVdpbmRvd1R5cGU7CisgICAgVmtTdXJmYWNlS0hSIG1TdXJmYWNlOworICAgIFZrU3dhcGNoYWlu
S0hSIG1Td2FwY2hhaW47CisKKyAgICBSZW5kZXJUYXJnZXRWayBtUmVuZGVyVGFyZ2V0OworICAg
IHZrOjpTZW1hcGhvcmUgbUltYWdlQXZhaWxhYmxlU2VtYXBob3JlOworICAgIHZrOjpTZW1hcGhv
cmUgbVJlbmRlcmluZ0NvbXBsZXRlU2VtYXBob3JlOworCisgICAgdWludDMyX3QgbUN1cnJlbnRT
d2FwY2hhaW5JbWFnZUluZGV4OworICAgIHN0ZDo6dmVjdG9yPHZrOjpJbWFnZT4gbVN3YXBjaGFp
bkltYWdlczsKKyAgICBzdGQ6OnZlY3Rvcjx2azo6SW1hZ2VWaWV3PiBtU3dhcGNoYWluSW1hZ2VW
aWV3czsKKyAgICBzdGQ6OnZlY3Rvcjx2azo6RnJhbWVidWZmZXI+IG1Td2FwY2hhaW5GcmFtZWJ1
ZmZlcnM7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVGV4
dHVyZVZrLmNwcAppbmRleCBhMjIyMGZjYWRkNC4uZDU5MWJhMTFhZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVGV4dHVy
ZVZrLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL1RleHR1cmVWay5jcHAKQEAgLTIyLDcgKzIyLDggQEAgVGV4dHVyZVZrOjp+VGV4
dHVyZVZrKCkKIHsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVWazo6c2V0SW1hZ2UoR0xlbnVtIHRh
cmdldCwKK2dsOjpFcnJvciBUZXh0dXJlVms6OnNldEltYWdlKENvbnRleHRJbXBsICpjb250ZXh0
SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKQEAgLTM1LDcgKzM2LDggQEAgZ2w6
OkVycm9yIFRleHR1cmVWazo6c2V0SW1hZ2UoR0xlbnVtIHRhcmdldCwKICAgICByZXR1cm4gZ2w6
OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAotZ2w6OkVycm9yIFRleHR1cmVWazo6
c2V0U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlVms6OnNldFN1Yklt
YWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
Qm94ICZhcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1h
dCwKQEAgLTQ3LDcgKzQ5LDggQEAgZ2w6OkVycm9yIFRleHR1cmVWazo6c2V0U3ViSW1hZ2UoR0xl
bnVtIHRhcmdldCwKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
IH0KIAotZ2w6OkVycm9yIFRleHR1cmVWazo6c2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJn
ZXQsCitnbDo6RXJyb3IgVGV4dHVyZVZrOjpzZXRDb21wcmVzc2VkSW1hZ2UoQ29udGV4dEltcGwg
KmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGxldmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKQEAgLTU5LDcgKzYyLDggQEAgZ2w6OkVycm9yIFRl
eHR1cmVWazo6c2V0Q29tcHJlc3NlZEltYWdlKEdMZW51bSB0YXJnZXQsCiAgICAgcmV0dXJuIGds
OjpFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CiB9CiAKLWdsOjpFcnJvciBUZXh0dXJlVms6
OnNldENvbXByZXNzZWRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAorZ2w6OkVycm9yIFRleHR1cmVW
azo6c2V0Q29tcHJlc3NlZFN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6Qm94ICZh
cmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBm
b3JtYXQsCkBAIC03MSw3ICs3NSw4IEBAIGdsOjpFcnJvciBUZXh0dXJlVms6OnNldENvbXByZXNz
ZWRTdWJJbWFnZShHTGVudW0gdGFyZ2V0LAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pOwogfQogCi1nbDo6RXJyb3IgVGV4dHVyZVZrOjpjb3B5SW1hZ2UoR0xlbnVt
IHRhcmdldCwKK2dsOjpFcnJvciBUZXh0dXJlVms6OmNvcHlJbWFnZShDb250ZXh0SW1wbCAqY29u
dGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCkBAIC04
MSw3ICs4Niw4IEBAIGdsOjpFcnJvciBUZXh0dXJlVms6OmNvcHlJbWFnZShHTGVudW0gdGFyZ2V0
LAogICAgIHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi1nbDo6
RXJyb3IgVGV4dHVyZVZrOjpjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKK2dsOjpFcnJvciBU
ZXh0dXJlVms6OmNvcHlTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgZ2w6Ok9mZnNldCAmZGVzdE9mZnNldCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3VyY2VBcmVhLApAQCAt
OTEsNyArOTcsOCBAQCBnbDo6RXJyb3IgVGV4dHVyZVZrOjpjb3B5U3ViSW1hZ2UoR0xlbnVtIHRh
cmdldCwKICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKIH0KIAot
Z2w6OkVycm9yIFRleHR1cmVWazo6c2V0U3RvcmFnZShHTGVudW0gdGFyZ2V0LAorZ2w6OkVycm9y
IFRleHR1cmVWazo6c2V0U3RvcmFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpCkBAIC0xMTQsNyArMTIxLDcgQEAgZ2w6OkVy
cm9yIFRleHR1cmVWazo6c2V0SW1hZ2VFeHRlcm5hbChHTGVudW0gdGFyZ2V0LAogICAgIHJldHVy
biBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCi1nbDo6RXJyb3IgVGV4dHVy
ZVZrOjpnZW5lcmF0ZU1pcG1hcCgpCitnbDo6RXJyb3IgVGV4dHVyZVZrOjpnZW5lcmF0ZU1pcG1h
cChDb250ZXh0SW1wbCAqY29udGV4dEltcGwpCiB7CiAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAg
IHJldHVybiBnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwpAQCAtMTQ3LDQgKzE1NCwx
NSBAQCB2b2lkIFRleHR1cmVWazo6c3luY1N0YXRlKGNvbnN0IGdsOjpUZXh0dXJlOjpEaXJ0eUJp
dHMgJmRpcnR5Qml0cykKICAgICBVTklNUExFTUVOVEVEKCk7CiB9CiAKK2dsOjpFcnJvciBUZXh0
dXJlVms6OnNldFN0b3JhZ2VNdWx0aXNhbXBsZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNhbXBs
ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50
ZXJuYWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZ2w6OkV4dGVudHMgJnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xib29sZWFuIGZpeGVkU2FtcGxlTG9jYXRpb25zKQoreworICAgIFVOSU1Q
TEVNRU5URUQoKTsKKyAgICByZXR1cm4gZ2w6OkludGVybmFsRXJyb3IoKSA8PCAic2V0U3RvcmFn
ZU11bHRpc2FtcGxlIGlzIHVuaW1wbGVtZW50ZWQuIjsKK30KKwogfSAgLy8gbmFtZXNwYWNlIHJ4
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL1RleHR1cmVWay5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9UZXh0dXJlVmsuaAppbmRleCBkNWI5MTA2YzcxMy4uMmM2OGUx
NmE3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vVGV4dHVyZVZrLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UZXh0dXJlVmsuaApAQCAtMjEsNyArMjEsOCBA
QCBjbGFzcyBUZXh0dXJlVmsgOiBwdWJsaWMgVGV4dHVyZUltcGwKICAgICBUZXh0dXJlVmsoY29u
c3QgZ2w6OlRleHR1cmVTdGF0ZSAmc3RhdGUpOwogICAgIH5UZXh0dXJlVmsoKSBvdmVycmlkZTsK
IAotICAgIGdsOjpFcnJvciBzZXRJbWFnZShHTGVudW0gdGFyZ2V0LAorICAgIGdsOjpFcnJvciBz
ZXRJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAogICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKQEAgLTI5LDcgKzMwLDggQEAgY2xh
c3MgVGV4dHVyZVZrIDogcHVibGljIFRleHR1cmVJbXBsCiAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UGl4ZWxVbnBh
Y2tTdGF0ZSAmdW5wYWNrLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICpw
aXhlbHMpIG92ZXJyaWRlOwotICAgIGdsOjpFcnJvciBzZXRTdWJJbWFnZShHTGVudW0gdGFyZ2V0
LAorICAgIGdsOjpFcnJvciBzZXRTdWJJbWFnZShDb250ZXh0SW1wbCAqY29udGV4dEltcGwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Z2w6OkJveCAmYXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwK
QEAgLTM3LDE0ICszOSwxNiBAQCBjbGFzcyBUZXh0dXJlVmsgOiBwdWJsaWMgVGV4dHVyZUltcGwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlBpeGVsVW5wYWNrU3RhdGUgJnVu
cGFjaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBv
dmVycmlkZTsKIAotICAgIGdsOjpFcnJvciBzZXRDb21wcmVzc2VkSW1hZ2UoR0xlbnVtIHRhcmdl
dCwKKyAgICBnbDo6RXJyb3Igc2V0Q29tcHJlc3NlZEltYWdlKENvbnRleHRJbXBsICpjb250ZXh0
SW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpQaXhlbFVucGFja1N0YXRlICZ1bnBh
Y2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBv
dmVycmlkZTsKLSAgICBnbDo6RXJyb3Igc2V0Q29tcHJlc3NlZFN1YkltYWdlKEdMZW51bSB0YXJn
ZXQsCisgICAgZ2w6OkVycm9yIHNldENvbXByZXNzZWRTdWJJbWFnZShDb250ZXh0SW1wbCAqY29u
dGV4dEltcGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVsLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmYXJlYSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCkBAIC01
MiwxOCArNTYsMjEgQEAgY2xhc3MgVGV4dHVyZVZrIDogcHVibGljIFRleHR1cmVJbXBsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaW1hZ2VTaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcGl4ZWxzKSBvdmVy
cmlkZTsKIAotICAgIGdsOjpFcnJvciBjb3B5SW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICBnbDo6
RXJyb3IgY29weUltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
bGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6UmVjdGFuZ2xlICZzb3Vy
Y2VBcmVhLAogICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpzb3VyY2UpIG92
ZXJyaWRlOwotICAgIGdsOjpFcnJvciBjb3B5U3ViSW1hZ2UoR0xlbnVtIHRhcmdldCwKKyAgICBn
bDo6RXJyb3IgY29weVN1YkltYWdlKENvbnRleHRJbXBsICpjb250ZXh0SW1wbCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzaXplX3QgbGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6
T2Zmc2V0ICZkZXN0T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6
OlJlY3RhbmdsZSAmc291cmNlQXJlYSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGdsOjpGcmFtZWJ1ZmZlciAqc291cmNlKSBvdmVycmlkZTsKIAotICAgIGdsOjpFcnJvciBzZXRT
dG9yYWdlKEdMZW51bSB0YXJnZXQsCisgICAgZ2w6OkVycm9yIHNldFN0b3JhZ2UoQ29udGV4dElt
cGwgKmNvbnRleHRJbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxldmVscywKICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkV4dGVudHMgJnNpemUpIG92ZXJyaWRlOwpAQCAtNzQsNyArODEsNyBAQCBj
bGFzcyBUZXh0dXJlVmsgOiBwdWJsaWMgVGV4dHVyZUltcGwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlZ2w6OlN0cmVhbSAqc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGVnbDo6U3RyZWFtOjpHTFRleHR1cmVEZXNjcmlwdGlvbiAmZGVzYykgb3Zl
cnJpZGU7CiAKLSAgICBnbDo6RXJyb3IgZ2VuZXJhdGVNaXBtYXAoKSBvdmVycmlkZTsKKyAgICBn
bDo6RXJyb3IgZ2VuZXJhdGVNaXBtYXAoQ29udGV4dEltcGwgKmNvbnRleHRJbXBsKSBvdmVycmlk
ZTsKIAogICAgIHZvaWQgc2V0QmFzZUxldmVsKEdMdWludCBiYXNlTGV2ZWwpIG92ZXJyaWRlOwog
CkBAIC04NSw2ICs5MiwxMyBAQCBjbGFzcyBUZXh0dXJlVmsgOiBwdWJsaWMgVGV4dHVyZUltcGwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZWJ1ZmZlckF0dGFj
aG1lbnRSZW5kZXJUYXJnZXQgKipydE91dCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHN5bmNTdGF0
ZShjb25zdCBnbDo6VGV4dHVyZTo6RGlydHlCaXRzICZkaXJ0eUJpdHMpIG92ZXJyaWRlOworCisg
ICAgZ2w6OkVycm9yIHNldFN0b3JhZ2VNdWx0aXNhbXBsZShDb250ZXh0SW1wbCAqY29udGV4dElt
cGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzYW1wbGVzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxmb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnbDo6RXh0ZW50cyAmc2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBmaXhlZFNh
bXBsZUxvY2F0aW9ucykgb3ZlcnJpZGU7CiB9OwogCiB9ICAvLyBuYW1lc3BhY2UgcngKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vVmVydGV4QXJyYXlWay5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5H
TEUvcmVuZGVyZXIvdnVsa2FuL1ZlcnRleEFycmF5VmsuY3BwCmluZGV4IDlmNjM5Yjk1MTQ4Li5l
ODM1YmU3ZmFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9WZXJ0ZXhBcnJheVZrLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1ZlcnRleEFycmF5VmsuY3Bw
CkBAIC0xMSw2ICsxMSw4IEBACiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKIAorI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuaCIKKwogbmFtZXNwYWNlIHJ4
CiB7CiAKQEAgLTIyLDQgKzI0LDEzIEBAIFZlcnRleEFycmF5Vms6On5WZXJ0ZXhBcnJheVZrKCkK
IHsKIH0KIAordm9pZCBWZXJ0ZXhBcnJheVZrOjpzeW5jU3RhdGUoQ29udGV4dEltcGwgKmNvbnRl
eHRJbXBsLCBjb25zdCBnbDo6VmVydGV4QXJyYXk6OkRpcnR5Qml0cyAmZGlydHlCaXRzKQorewor
ICAgIEFTU0VSVChkaXJ0eUJpdHMuYW55KCkpOworCisgICAgLy8gVE9ETyhqbWFkaWxsKTogVXNl
IHBpcGVsaW5lIGNhY2hlLgorICAgIGF1dG8gY29udGV4dFZrID0gR2V0QXM8Q29udGV4dFZrPihj
b250ZXh0SW1wbCk7CisgICAgY29udGV4dFZrLT5pbnZhbGlkYXRlQ3VycmVudFBpcGVsaW5lKCk7
Cit9CisKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9WZXJ0ZXhBcnJheVZrLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1ZlcnRleEFy
cmF5VmsuaAppbmRleCA5MzQwZDI3NTdhNC4uNzU5MmJjMGRmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vVmVydGV4QXJy
YXlWay5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci92dWxrYW4vVmVydGV4QXJyYXlWay5oCkBAIC0yMCw2ICsyMCw4IEBAIGNsYXNzIFZlcnRleEFy
cmF5VmsgOiBwdWJsaWMgVmVydGV4QXJyYXlJbXBsCiAgIHB1YmxpYzoKICAgICBWZXJ0ZXhBcnJh
eVZrKGNvbnN0IGdsOjpWZXJ0ZXhBcnJheVN0YXRlICZkYXRhKTsKICAgICB+VmVydGV4QXJyYXlW
aygpIG92ZXJyaWRlOworCisgICAgdm9pZCBzeW5jU3RhdGUoQ29udGV4dEltcGwgKmNvbnRleHRJ
bXBsLCBjb25zdCBnbDo6VmVydGV4QXJyYXk6OkRpcnR5Qml0cyAmZGlydHlCaXRzKSBvdmVycmlk
ZTsKIH07CiAKIH0gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9mb3JtYXR1dGlsc3ZrLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vZm9y
bWF0dXRpbHN2ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUw
MTgwNDRiZDVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9mb3JtYXR1dGlsc3ZrLmNwcApAQCAtMCwwICsxLDMx
MSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKy8vIGZvcm1hdHV0aWxzdms6CisvLyAgIEhlbHBlciBmb3IgVnVsa2Fu
IGZvcm1hdCBjb2RlLgorCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL2Zvcm1h
dHV0aWxzdmsuaCIKKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2xvYWRfZnVuY3Rpb25z
X3RhYmxlLmgiCisKK25hbWVzcGFjZSByeAoreworCituYW1lc3BhY2UgdmsKK3sKKworY29uc3Qg
YW5nbGU6OkZvcm1hdCAmRm9ybWF0Ojpmb3JtYXQoKSBjb25zdAoreworICAgIHJldHVybiBhbmds
ZTo6Rm9ybWF0OjpHZXQoZm9ybWF0SUQpOworfQorCitMb2FkRnVuY3Rpb25NYXAgRm9ybWF0Ojpn
ZXRMb2FkRnVuY3Rpb25zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gR2V0TG9hZEZ1bmN0aW9uc01h
cChpbnRlcm5hbEZvcm1hdCwgZm9ybWF0SUQpOworfQorCisvLyBUT0RPKGptYWRpbGwpOiBUaGlz
IGlzIHRlbXBvcmFyeS4gRmlndXJlIG91dCBob3cgdG8gaGFuZGxlIGZvcm1hdCBjb252ZXJzaW9u
cy4KK1ZrRm9ybWF0IEdldE5hdGl2ZVZlcnRleEZvcm1hdChnbDo6VmVydGV4Rm9ybWF0VHlwZSB2
ZXJ0ZXhGb3JtYXQpCit7CisgICAgc3dpdGNoICh2ZXJ0ZXhGb3JtYXQpCisgICAgeworICAgICAg
ICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX0lOVkFMSUQ6CisgICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNh
c2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZVEUxOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2Ug
Z2w6OlZFUlRFWF9GT1JNQVRfU0JZVEUxX05PUk06CisgICAgICAgICAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2Fz
ZSBnbDo6VkVSVEVYX0ZPUk1BVF9TQllURTI6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBn
bDo6VkVSVEVYX0ZPUk1BVF9TQllURTJfTk9STToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNl
IGdsOjpWRVJURVhfRk9STUFUX1NCWVRFMzoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGds
OjpWRVJURVhfRk9STUFUX1NCWVRFM19OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2Ug
Z2w6OlZFUlRFWF9GT1JNQVRfU0JZVEU0OgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6
OlZFUlRFWF9GT1JNQVRfU0JZVEU0X05PUk06CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBn
bDo6VkVSVEVYX0ZPUk1BVF9VQllURTE6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6
VkVSVEVYX0ZPUk1BVF9VQllURTFfTk9STToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGds
OjpWRVJURVhfRk9STUFUX1VCWVRFMjoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpW
RVJURVhfRk9STUFUX1VCWVRFMl9OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6
OlZFUlRFWF9GT1JNQVRfVUJZVEUzOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
ICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZF
UlRFWF9GT1JNQVRfVUJZVEUzX05PUk06CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6
VkVSVEVYX0ZPUk1BVF9VQllURTQ6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
ICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVS
VEVYX0ZPUk1BVF9VQllURTRfTk9STToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpW
RVJURVhfRk9STUFUX1NTSE9SVDE6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
ICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVS
VEVYX0ZPUk1BVF9TU0hPUlQxX05PUk06CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6
VkVSVEVYX0ZPUk1BVF9TU0hPUlQyOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
ICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZF
UlRFWF9GT1JNQVRfU1NIT1JUMl9OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6
OlZFUlRFWF9GT1JNQVRfU1NIT1JUMzoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpW
RVJURVhfRk9STUFUX1NTSE9SVDNfTk9STToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGds
OjpWRVJURVhfRk9STUFUX1NTSE9SVDQ6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6
VkVSVEVYX0ZPUk1BVF9TU0hPUlQ0X05PUk06CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBn
bDo6VkVSVEVYX0ZPUk1BVF9VU0hPUlQxOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6
OlZFUlRFWF9GT1JNQVRfVVNIT1JUMV9OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2Ug
Z2w6OlZFUlRFWF9GT1JNQVRfVVNIT1JUMjoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGds
OjpWRVJURVhfRk9STUFUX1VTSE9SVDJfTk9STToKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNl
IGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDM6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBn
bDo6VkVSVEVYX0ZPUk1BVF9VU0hPUlQzX05PUk06CisgICAgICAgICAgICBVTklNUExFTUVOVEVE
KCk7CisgICAgICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2Fz
ZSBnbDo6VkVSVEVYX0ZPUk1BVF9VU0hPUlQ0OgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2Ug
Z2w6OlZFUlRFWF9GT1JNQVRfVVNIT1JUNF9OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNh
c2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0lOVDE6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBn
bDo6VkVSVEVYX0ZPUk1BVF9TSU5UMV9OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2Ug
Z2w6OlZFUlRFWF9GT1JNQVRfU0lOVDI6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7Cisg
ICAgICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6
VkVSVEVYX0ZPUk1BVF9TSU5UMl9OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6
OlZFUlRFWF9GT1JNQVRfU0lOVDM6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
ICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVS
VEVYX0ZPUk1BVF9TSU5UM19OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
ICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZF
UlRFWF9GT1JNQVRfU0lOVDQ6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAg
ICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVY
X0ZPUk1BVF9TSU5UNF9OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAg
ICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRF
WF9GT1JNQVRfVUlOVDE6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAg
ICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZP
Uk1BVF9VSU5UMV9OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9G
T1JNQVRfVUlOVDI6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICBy
ZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1B
VF9VSU5UMl9OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAg
cmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JN
QVRfVUlOVDM6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICByZXR1
cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9V
SU5UM19OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgcmV0
dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRf
VUlOVDQ6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICByZXR1cm4g
VktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VSU5U
NF9OT1JNOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgcmV0dXJu
IFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0JZ
VEUxX0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJldHVy
biBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1NC
WVRFMl9JTlQ6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICByZXR1
cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9T
QllURTNfSU5UOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgcmV0
dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRf
U0JZVEU0X0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJl
dHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFU
X1VCWVRFMV9JTlQ6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICBy
ZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1B
VF9VQllURTJfSU5UOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAg
cmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JN
QVRfVUJZVEUzX0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAg
IHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9S
TUFUX1VCWVRFNF9JTlQ6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAg
ICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZP
Uk1BVF9TU0hPUlQxX0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAg
ICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhf
Rk9STUFUX1NTSE9SVDJfSU5UOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAg
ICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRF
WF9GT1JNQVRfU1NIT1JUM19JTlQ6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAg
ICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVS
VEVYX0ZPUk1BVF9TU0hPUlQ0X0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAg
ICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpW
RVJURVhfRk9STUFUX1VTSE9SVDFfSU5UOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6
OlZFUlRFWF9GT1JNQVRfVVNIT1JUMl9JTlQ6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7
CisgICAgICAgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBn
bDo6VkVSVEVYX0ZPUk1BVF9VU0hPUlQzX0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQo
KTsKKyAgICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNl
IGdsOjpWRVJURVhfRk9STUFUX1VTSE9SVDRfSU5UOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNh
c2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0lOVDFfSU5UOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNh
c2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0lOVDJfSU5UOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNh
c2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0lOVDNfSU5UOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNh
c2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0lOVDRfSU5UOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNh
c2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDFfSU5UOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNh
c2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDJfSU5UOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNh
c2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDNfSU5UOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNh
c2UgZ2w6OlZFUlRFWF9GT1JNQVRfVUlOVDRfSU5UOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNh
c2UgZ2w6OlZFUlRFWF9GT1JNQVRfRklYRUQxOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgp
OworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2Ug
Z2w6OlZFUlRFWF9GT1JNQVRfRklYRUQyOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
ICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6
OlZFUlRFWF9GT1JNQVRfRklYRUQzOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAg
ICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZF
UlRFWF9GT1JNQVRfRklYRUQ0OgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAg
ICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRF
WF9GT1JNQVRfSEFMRjE6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAg
ICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZP
Uk1BVF9IQUxGMjoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJl
dHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFU
X0hBTEYzOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAgcmV0dXJu
IFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfSEFM
RjQ6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICByZXR1cm4gVktf
Rk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9GTE9BVDE6
CisgICAgICAgICAgICByZXR1cm4gVktfRk9STUFUX1IzMl9TRkxPQVQ7CisgICAgICAgIGNhc2Ug
Z2w6OlZFUlRFWF9GT1JNQVRfRkxPQVQyOgorICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9S
MzJHMzJfU0ZMT0FUOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX0ZMT0FUMzoKKyAg
ICAgICAgICAgIHJldHVybiBWS19GT1JNQVRfUjMyRzMyQjMyX1NGTE9BVDsKKyAgICAgICAgY2Fz
ZSBnbDo6VkVSVEVYX0ZPUk1BVF9GTE9BVDQ6CisgICAgICAgICAgICByZXR1cm4gVktfRk9STUFU
X1IzMkczMkIzMkEzMl9TRkxPQVQ7CisgICAgICAgIGNhc2UgZ2w6OlZFUlRFWF9GT1JNQVRfU0lO
VDIxMDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJldHVybiBW
S19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFUX1VJTlQy
MTA6CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICByZXR1cm4gVktf
Rk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9TSU5UMjEw
X05PUk06CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICByZXR1cm4g
VktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9VSU5U
MjEwX05PUk06CisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgICAgICAgICByZXR1
cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgICAgICAgY2FzZSBnbDo6VkVSVEVYX0ZPUk1BVF9T
SU5UMjEwX0lOVDoKKyAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJl
dHVybiBWS19GT1JNQVRfVU5ERUZJTkVEOworICAgICAgICBjYXNlIGdsOjpWRVJURVhfRk9STUFU
X1VJTlQyMTBfSU5UOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAg
cmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBVTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9VTkRFRklORUQ7
CisgICAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UgdmsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
dnVsa2FuL2Zvcm1hdHV0aWxzdmsuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vZm9ybWF0dXRpbHN2ay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwLi4xMDBhZTgyYmEyOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vZm9ybWF0dXRp
bHN2ay5oCkBAIC0wLDAgKzEsNTkgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisvLyBWazo6Rm9ybWF0OgorLy8gICBW
dWxrYW4gaW1wbGVtZW50YXRpb24gb2YgYSBzdG9yYWdlIGZvcm1hdC4KKworI2lmbmRlZiBMSUJB
TkdMRV9SRU5ERVJFUl9WVUxLQU5fRk9STUFUX0hfCisjZGVmaW5lIExJQkFOR0xFX1JFTkRFUkVS
X1ZVTEtBTl9GT1JNQVRfSF8KKworI2luY2x1ZGUgPHZ1bGthbi92dWxrYW4uaD4KKworI2luY2x1
ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRl
cmVyL3JlbmRlcmVyX3V0aWxzLmgiCisKK25hbWVzcGFjZSByeAoreworCituYW1lc3BhY2UgdmsK
K3sKKworc3RydWN0IEZvcm1hdCBmaW5hbCA6IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICAgIGNv
bnN0ZXhwciBGb3JtYXQoR0xlbnVtIGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OkZvcm1hdDo6SUQgZm9ybWF0SUQsCisgICAgICAgICAgICAgICAgICAgICBWa0Zv
cm1hdCBuYXRpdmUsCisgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplVGV4dHVyZURhdGFG
dW5jdGlvbiBpbml0RnVuY3Rpb24pOworCisgICAgc3RhdGljIGNvbnN0IEZvcm1hdCAmR2V0KEdM
ZW51bSBpbnRlcm5hbEZvcm1hdCk7CisKKyAgICBjb25zdCBhbmdsZTo6Rm9ybWF0ICZmb3JtYXQo
KSBjb25zdDsKKyAgICBMb2FkRnVuY3Rpb25NYXAgZ2V0TG9hZEZ1bmN0aW9ucygpIGNvbnN0Owor
CisgICAgR0xlbnVtIGludGVybmFsRm9ybWF0OworICAgIGFuZ2xlOjpGb3JtYXQ6OklEIGZvcm1h
dElEOworICAgIFZrRm9ybWF0IG5hdGl2ZTsKKyAgICBJbml0aWFsaXplVGV4dHVyZURhdGFGdW5j
dGlvbiBkYXRhSW5pdGlhbGl6ZXJGdW5jdGlvbjsKK307CisKK2NvbnN0ZXhwciBGb3JtYXQ6OkZv
cm1hdChHTGVudW0gaW50ZXJuYWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQgZm9ybWF0SUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgVmtGb3Jt
YXQgbmF0aXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemVUZXh0dXJlRGF0
YUZ1bmN0aW9uIGluaXRGdW5jdGlvbikKKyAgICA6IGludGVybmFsRm9ybWF0KGludGVybmFsRm9y
bWF0KSwKKyAgICAgIGZvcm1hdElEKGZvcm1hdElEKSwKKyAgICAgIG5hdGl2ZShuYXRpdmUpLAor
ICAgICAgZGF0YUluaXRpYWxpemVyRnVuY3Rpb24oaW5pdEZ1bmN0aW9uKQoreworfQorCisvLyBU
T0RPKGptYWRpbGwpOiBUaGlzIGlzIHRlbXBvcmFyeS4gRmlndXJlIG91dCBob3cgdG8gaGFuZGxl
IGZvcm1hdCBjb252ZXJzaW9ucy4KK1ZrRm9ybWF0IEdldE5hdGl2ZVZlcnRleEZvcm1hdChnbDo6
VmVydGV4Rm9ybWF0VHlwZSB2ZXJ0ZXhGb3JtYXQpOworCit9ICAvLyBuYW1lc3BhY2UgdmsKKwor
fSAgLy8gbmFtZXNwYWNlIHJ4CisKKyNlbmRpZiAgLy8gTElCQU5HTEVfUkVOREVSRVJfVlVMS0FO
X0ZPUk1BVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9nZW5fdmtfZm9ybWF0X3RhYmxlLnB5IGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9nZW5fdmtfZm9ybWF0X3Rh
YmxlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zOGU3YzU4YmU3
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vZ2VuX3ZrX2Zvcm1hdF90YWJsZS5weQpAQCAtMCwwICsxLDEyMyBA
QAorIyEvdXNyL2Jpbi9weXRob24KKyMgQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorIyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgorIworIyBnZW5fdmtfZm9ybWF0X3RhYmxlLnB5OgorIyAgQ29k
ZSBnZW5lcmF0aW9uIGZvciB2ayBmb3JtYXQgbWFwCisKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRh
dGUKK2ltcG9ydCBqc29uCitpbXBvcnQgbWF0aAoraW1wb3J0IHBwcmludAoraW1wb3J0IG9zCitp
bXBvcnQgcmUKK2ltcG9ydCBzeXMKKworc3lzLnBhdGguYXBwZW5kKCcuLicpCitpbXBvcnQgYW5n
bGVfZm9ybWF0CisKK3RlbXBsYXRlX3RhYmxlX2F1dG9nZW5fY3BwID0gIiIiLy8gR0VORVJBVEVE
IEZJTEUgLSBETyBOT1QgRURJVC4KKy8vIEdlbmVyYXRlZCBieSB7c2NyaXB0X25hbWV9IHVzaW5n
IGRhdGEgZnJvbSB7aW5wdXRfZmlsZV9uYW1lfQorLy8KKy8vIENvcHlyaWdodCB7Y29weXJpZ2h0
X3llYXJ9IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKy8vIHtv
dXRfZmlsZV9uYW1lfToKKy8vICAgUXVlcmllcyBmb3IgZnVsbCBWdWxrYW4gZm9ybWF0IGluZm9y
bWF0aW9uIGJhc2VkIG9uIEdMIGZvcm1hdC4KKworI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9mb3JtYXR1dGlsc3ZrLmgiCisKKyNpbmNsdWRlICJpbWFnZV91dGlsL2NvcHlpbWFn
ZS5oIgorI2luY2x1ZGUgImltYWdlX3V0aWwvZ2VuZXJhdGVtaXAuaCIKKyNpbmNsdWRlICJpbWFn
ZV91dGlsL2xvYWRpbWFnZS5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5nbGU7CisKK25hbWVzcGFj
ZSByeAore3sKKworbmFtZXNwYWNlIHZrCit7eworCisvLyBzdGF0aWMKK2NvbnN0IEZvcm1hdCAm
Rm9ybWF0OjpHZXQoR0xlbnVtIGludGVybmFsRm9ybWF0KQore3sKKyAgICAvLyBjbGFuZy1mb3Jt
YXQgb2ZmCisgICAgc3dpdGNoIChpbnRlcm5hbEZvcm1hdCkKKyAgICB7ewore2Zvcm1hdF9jYXNl
X2RhdGF9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9fQorICAg
IC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IG5vSW5mbyhHTF9OT05FLCBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwgVktfRk9S
TUFUX1VOREVGSU5FRCwgbnVsbHB0cik7CisgICAgcmV0dXJuIG5vSW5mbzsKK319CisKK319ICAv
LyBuYW1lc3BhY2UgdmsKKworfX0gIC8vIG5hbWVzcGFjZSByeAorIiIiCisKK2Zvcm1hdF9lbnRy
eV90ZW1wbGF0ZSA9ICIiIntzcGFjZX17ewore3NwYWNlfSAgICBzdGF0aWMgY29uc3RleHByIEZv
cm1hdCBpbmZvKHtpbnRlcm5hbEZvcm1hdH0sCit7c3BhY2V9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ontmb3JtYXROYW1lfSwKK3tzcGFjZX0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7dmtGb3JtYXR9LAore3NwYWNlfSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHtpbml0aWFsaXplcn0pOwore3NwYWNlfSAgICByZXR1
cm4gaW5mbzsKK3tzcGFjZX19fQorIiIiCisKK2RlZiBwYXJzZV9mb3JtYXRfY2FzZShpbnRlcm5h
bF9mb3JtYXQsIGZvcm1hdF9uYW1lLCBuYXRpdmVfZm9ybWF0KToKKworICAgIHRhYmxlX2RhdGEg
PSAiIgorCisgICAgcGFyc2VkID0geworICAgICAgICAic3BhY2UiOiAiICAgICAgICAiLAorICAg
ICAgICAiaW50ZXJuYWxGb3JtYXQiOiBpbnRlcm5hbF9mb3JtYXQsCisgICAgICAgICJmb3JtYXRO
YW1lIjogZm9ybWF0X25hbWUsCisgICAgICAgICJ2a0Zvcm1hdCI6IG5hdGl2ZV9mb3JtYXQsCisg
ICAgfQorCisgICAgIyBEZXJpdmVkIHZhbHVlcy4KKyAgICBwYXJzZWRbImluaXRpYWxpemVyIl0g
PSBhbmdsZV9mb3JtYXQuZ2V0X2ludGVybmFsX2Zvcm1hdF9pbml0aWFsaXplcigKKyAgICAgICAg
aW50ZXJuYWxfZm9ybWF0LCBmb3JtYXRfbmFtZSkKKworICAgIHJldHVybiBmb3JtYXRfZW50cnlf
dGVtcGxhdGUuZm9ybWF0KCoqcGFyc2VkKQorCitkZWYgcGFyc2VfanNvbl9pbnRvX2Nhc2VzKGpz
b25fbWFwLCB2a19tYXApOgorICAgIHRhYmxlX2RhdGEgPSAnJworCisgICAgZm9yIGludGVybmFs
X2Zvcm1hdCwgZm9ybWF0X25hbWUgaW4gc29ydGVkKGpzb25fbWFwLml0ZXJpdGVtcygpKToKKwor
ICAgICAgICBpZiBmb3JtYXRfbmFtZSBub3QgaW4gdmtfbWFwOgorICAgICAgICAgICAgY29udGlu
dWUKKworICAgICAgICBuYXRpdmVfZm9ybWF0ID0gdmtfbWFwW2Zvcm1hdF9uYW1lXQorCisgICAg
ICAgIHRhYmxlX2RhdGEgKz0gJyAgICAgICAgY2FzZSAnICsgaW50ZXJuYWxfZm9ybWF0ICsgJzpc
bicKKyAgICAgICAgdGFibGVfZGF0YSArPSBwYXJzZV9mb3JtYXRfY2FzZShpbnRlcm5hbF9mb3Jt
YXQsIGZvcm1hdF9uYW1lLCBuYXRpdmVfZm9ybWF0KQorCisgICAgcmV0dXJuIHRhYmxlX2RhdGEK
KworaW5wdXRfZmlsZV9uYW1lID0gJ3ZrX2Zvcm1hdF9tYXAuanNvbicKK291dF9maWxlX25hbWUg
PSAndmtfZm9ybWF0X3RhYmxlJworCitqc29uX21hcCA9IGFuZ2xlX2Zvcm1hdC5sb2FkX3dpdGhv
dXRfb3ZlcnJpZGUoKQordmtfbWFwID0gYW5nbGVfZm9ybWF0LmxvYWRfanNvbihpbnB1dF9maWxl
X25hbWUpCisKK2Zvcm1hdF9jYXNlX2RhdGEgPSBwYXJzZV9qc29uX2ludG9fY2FzZXMoanNvbl9t
YXAsIHZrX21hcCkKK291dHB1dF9jcHAgPSB0ZW1wbGF0ZV90YWJsZV9hdXRvZ2VuX2NwcC5mb3Jt
YXQoCisgICAgY29weXJpZ2h0X3llYXIgPSBkYXRlLnRvZGF5KCkueWVhciwKKyAgICBmb3JtYXRf
Y2FzZV9kYXRhID0gZm9ybWF0X2Nhc2VfZGF0YSwKKyAgICBzY3JpcHRfbmFtZSA9IF9fZmlsZV9f
LAorICAgIG91dF9maWxlX25hbWUgPSBvdXRfZmlsZV9uYW1lLAorICAgIGlucHV0X2ZpbGVfbmFt
ZSA9IGlucHV0X2ZpbGVfbmFtZSkKKword2l0aCBvcGVuKG91dF9maWxlX25hbWUgKyAnX2F1dG9n
ZW4uY3BwJywgJ3d0JykgYXMgb3V0X2ZpbGU6CisgICAgb3V0X2ZpbGUud3JpdGUob3V0cHV0X2Nw
cCkKKyAgICBvdXRfZmlsZS5jbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3JlbmRlcmVydmtfdXRpbHMuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9yZW5k
ZXJlcnZrX3V0aWxzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u
OGFkM2YyMTk4YjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3JlbmRlcmVydmtfdXRpbHMuY3BwCkBAIC0wLDAg
KzEsOTk1IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworLy8gcmVuZGVyZXJ2a191dGlsczoKKy8vICAgIEhlbHBlciBm
dW5jdGlvbnMgZm9yIHRoZSBWdWxrYW4gUmVuZGVyZXIuCisvLworCisjaW5jbHVkZSAicmVuZGVy
ZXJ2a191dGlscy5oIgorCisjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRl
cmVyVmsuaCIKKworbmFtZXNwYWNlIHJ4Cit7CisKK25hbWVzcGFjZQoreworR0xlbnVtIERlZmF1
bHRHTEVycm9yQ29kZShWa1Jlc3VsdCByZXN1bHQpCit7CisgICAgc3dpdGNoIChyZXN1bHQpCisg
ICAgeworICAgICAgICBjYXNlIFZLX0VSUk9SX09VVF9PRl9IT1NUX01FTU9SWToKKyAgICAgICAg
Y2FzZSBWS19FUlJPUl9PVVRfT0ZfREVWSUNFX01FTU9SWToKKyAgICAgICAgY2FzZSBWS19FUlJP
Ul9UT09fTUFOWV9PQkpFQ1RTOgorICAgICAgICAgICAgcmV0dXJuIEdMX09VVF9PRl9NRU1PUlk7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gR0xfSU5WQUxJRF9PUEVSQVRJ
T047CisgICAgfQorfQorCitFR0xpbnQgRGVmYXVsdEVHTEVycm9yQ29kZShWa1Jlc3VsdCByZXN1
bHQpCit7CisgICAgc3dpdGNoIChyZXN1bHQpCisgICAgeworICAgICAgICBjYXNlIFZLX0VSUk9S
X09VVF9PRl9IT1NUX01FTU9SWToKKyAgICAgICAgY2FzZSBWS19FUlJPUl9PVVRfT0ZfREVWSUNF
X01FTU9SWToKKyAgICAgICAgY2FzZSBWS19FUlJPUl9UT09fTUFOWV9PQkpFQ1RTOgorICAgICAg
ICAgICAgcmV0dXJuIEVHTF9CQURfQUxMT0M7CisgICAgICAgIGNhc2UgVktfRVJST1JfSU5JVElB
TElaQVRJT05fRkFJTEVEOgorICAgICAgICAgICAgcmV0dXJuIEVHTF9OT1RfSU5JVElBTElaRUQ7
CisgICAgICAgIGNhc2UgVktfRVJST1JfU1VSRkFDRV9MT1NUX0tIUjoKKyAgICAgICAgY2FzZSBW
S19FUlJPUl9ERVZJQ0VfTE9TVDoKKyAgICAgICAgICAgIHJldHVybiBFR0xfQ09OVEVYVF9MT1NU
OworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIEVHTF9CQURfQUNDRVNTOwor
ICAgIH0KK30KKworLy8gR2V0cyBhY2Nlc3MgZmxhZ3MgdGhhdCBhcmUgY29tbW9uIGJldHdlZW4g
c291cmNlIGFuZCBkZXN0IGxheW91dHMuCitWa0FjY2Vzc0ZsYWdzIEdldEJhc2ljTGF5b3V0QWNj
ZXNzRmxhZ3MoVmtJbWFnZUxheW91dCBsYXlvdXQpCit7CisgICAgc3dpdGNoIChsYXlvdXQpCisg
ICAgeworICAgICAgICBjYXNlIFZLX0lNQUdFX0xBWU9VVF9DT0xPUl9BVFRBQ0hNRU5UX09QVElN
QUw6CisgICAgICAgICAgICByZXR1cm4gVktfQUNDRVNTX0NPTE9SX0FUVEFDSE1FTlRfV1JJVEVf
QklUOworICAgICAgICBjYXNlIFZLX0lNQUdFX0xBWU9VVF9UUkFOU0ZFUl9EU1RfT1BUSU1BTDoK
KyAgICAgICAgICAgIHJldHVybiBWS19BQ0NFU1NfVFJBTlNGRVJfV1JJVEVfQklUOworICAgICAg
ICBjYXNlIFZLX0lNQUdFX0xBWU9VVF9QUkVTRU5UX1NSQ19LSFI6CisgICAgICAgICAgICByZXR1
cm4gVktfQUNDRVNTX01FTU9SWV9SRUFEX0JJVDsKKyAgICAgICAgY2FzZSBWS19JTUFHRV9MQVlP
VVRfVFJBTlNGRVJfU1JDX09QVElNQUw6CisgICAgICAgICAgICByZXR1cm4gVktfQUNDRVNTX1RS
QU5TRkVSX1JFQURfQklUOworICAgICAgICBjYXNlIFZLX0lNQUdFX0xBWU9VVF9VTkRFRklORUQ6
CisgICAgICAgIGNhc2UgVktfSU1BR0VfTEFZT1VUX0dFTkVSQUw6CisgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IElu
dmVzdGlnYXRlIG90aGVyIGZsYWdzLgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAg
ICAgICAgIHJldHVybiAwOworICAgIH0KK30KK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKKwor
Ly8gTWlycm9ycyBzdGRfdmFsaWRhdGlvbl9zdHIgaW4gbG9hZGVyLmgKKy8vIFRPRE8oam1hZGls
bCk6IFBvc3NpYmx5IHdyYXAgdGhlIGxvYWRlciBpbnRvIGEgc2FmZSBzb3VyY2UgZmlsZS4gQ2Fu
J3QgYmUgaW5jbHVkZWQgdHJpdmlhbGx5LgorY29uc3QgY2hhciAqZ19Wa1N0ZFZhbGlkYXRpb25M
YXllck5hbWUgPSAiVktfTEFZRVJfTFVOQVJHX3N0YW5kYXJkX3ZhbGlkYXRpb24iOworCitjb25z
dCBjaGFyICpWdWxrYW5SZXN1bHRTdHJpbmcoVmtSZXN1bHQgcmVzdWx0KQoreworICAgIHN3aXRj
aCAocmVzdWx0KQorICAgIHsKKyAgICAgICAgY2FzZSBWS19TVUNDRVNTOgorICAgICAgICAgICAg
cmV0dXJuICJDb21tYW5kIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQuIjsKKyAgICAgICAgY2FzZSBW
S19OT1RfUkVBRFk6CisgICAgICAgICAgICByZXR1cm4gIkEgZmVuY2Ugb3IgcXVlcnkgaGFzIG5v
dCB5ZXQgY29tcGxldGVkLiI7CisgICAgICAgIGNhc2UgVktfVElNRU9VVDoKKyAgICAgICAgICAg
IHJldHVybiAiQSB3YWl0IG9wZXJhdGlvbiBoYXMgbm90IGNvbXBsZXRlZCBpbiB0aGUgc3BlY2lm
aWVkIHRpbWUuIjsKKyAgICAgICAgY2FzZSBWS19FVkVOVF9TRVQ6CisgICAgICAgICAgICByZXR1
cm4gIkFuIGV2ZW50IGlzIHNpZ25hbGVkLiI7CisgICAgICAgIGNhc2UgVktfRVZFTlRfUkVTRVQ6
CisgICAgICAgICAgICByZXR1cm4gIkFuIGV2ZW50IGlzIHVuc2lnbmFsZWQuIjsKKyAgICAgICAg
Y2FzZSBWS19JTkNPTVBMRVRFOgorICAgICAgICAgICAgcmV0dXJuICJBIHJldHVybiBhcnJheSB3
YXMgdG9vIHNtYWxsIGZvciB0aGUgcmVzdWx0LiI7CisgICAgICAgIGNhc2UgVktfU1VCT1BUSU1B
TF9LSFI6CisgICAgICAgICAgICByZXR1cm4gIkEgc3dhcGNoYWluIG5vIGxvbmdlciBtYXRjaGVz
IHRoZSBzdXJmYWNlIHByb3BlcnRpZXMgZXhhY3RseSwgYnV0IGNhbiBzdGlsbCBiZSAiCisgICAg
ICAgICAgICAgICAgICAgInVzZWQgdG8gcHJlc2VudCB0byB0aGUgc3VyZmFjZSBzdWNjZXNzZnVs
bHkuIjsKKyAgICAgICAgY2FzZSBWS19FUlJPUl9PVVRfT0ZfSE9TVF9NRU1PUlk6CisgICAgICAg
ICAgICByZXR1cm4gIkEgaG9zdCBtZW1vcnkgYWxsb2NhdGlvbiBoYXMgZmFpbGVkLiI7CisgICAg
ICAgIGNhc2UgVktfRVJST1JfT1VUX09GX0RFVklDRV9NRU1PUlk6CisgICAgICAgICAgICByZXR1
cm4gIkEgZGV2aWNlIG1lbW9yeSBhbGxvY2F0aW9uIGhhcyBmYWlsZWQuIjsKKyAgICAgICAgY2Fz
ZSBWS19FUlJPUl9JTklUSUFMSVpBVElPTl9GQUlMRUQ6CisgICAgICAgICAgICByZXR1cm4gIklu
aXRpYWxpemF0aW9uIG9mIGFuIG9iamVjdCBjb3VsZCBub3QgYmUgY29tcGxldGVkIGZvciBpbXBs
ZW1lbnRhdGlvbi1zcGVjaWZpYyAiCisgICAgICAgICAgICAgICAgICAgInJlYXNvbnMuIjsKKyAg
ICAgICAgY2FzZSBWS19FUlJPUl9ERVZJQ0VfTE9TVDoKKyAgICAgICAgICAgIHJldHVybiAiVGhl
IGxvZ2ljYWwgb3IgcGh5c2ljYWwgZGV2aWNlIGhhcyBiZWVuIGxvc3QuIjsKKyAgICAgICAgY2Fz
ZSBWS19FUlJPUl9NRU1PUllfTUFQX0ZBSUxFRDoKKyAgICAgICAgICAgIHJldHVybiAiTWFwcGlu
ZyBvZiBhIG1lbW9yeSBvYmplY3QgaGFzIGZhaWxlZC4iOworICAgICAgICBjYXNlIFZLX0VSUk9S
X0xBWUVSX05PVF9QUkVTRU5UOgorICAgICAgICAgICAgcmV0dXJuICJBIHJlcXVlc3RlZCBsYXll
ciBpcyBub3QgcHJlc2VudCBvciBjb3VsZCBub3QgYmUgbG9hZGVkLiI7CisgICAgICAgIGNhc2Ug
VktfRVJST1JfRVhURU5TSU9OX05PVF9QUkVTRU5UOgorICAgICAgICAgICAgcmV0dXJuICJBIHJl
cXVlc3RlZCBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZC4iOworICAgICAgICBjYXNlIFZLX0VS
Uk9SX0ZFQVRVUkVfTk9UX1BSRVNFTlQ6CisgICAgICAgICAgICByZXR1cm4gIkEgcmVxdWVzdGVk
IGZlYXR1cmUgaXMgbm90IHN1cHBvcnRlZC4iOworICAgICAgICBjYXNlIFZLX0VSUk9SX0lOQ09N
UEFUSUJMRV9EUklWRVI6CisgICAgICAgICAgICByZXR1cm4gIlRoZSByZXF1ZXN0ZWQgdmVyc2lv
biBvZiBWdWxrYW4gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgZHJpdmVyIG9yIGlzIG90aGVyd2lz
ZSAiCisgICAgICAgICAgICAgICAgICAgImluY29tcGF0aWJsZSBmb3IgaW1wbGVtZW50YXRpb24t
c3BlY2lmaWMgcmVhc29ucy4iOworICAgICAgICBjYXNlIFZLX0VSUk9SX1RPT19NQU5ZX09CSkVD
VFM6CisgICAgICAgICAgICByZXR1cm4gIlRvbyBtYW55IG9iamVjdHMgb2YgdGhlIHR5cGUgaGF2
ZSBhbHJlYWR5IGJlZW4gY3JlYXRlZC4iOworICAgICAgICBjYXNlIFZLX0VSUk9SX0ZPUk1BVF9O
T1RfU1VQUE9SVEVEOgorICAgICAgICAgICAgcmV0dXJuICJBIHJlcXVlc3RlZCBmb3JtYXQgaXMg
bm90IHN1cHBvcnRlZCBvbiB0aGlzIGRldmljZS4iOworICAgICAgICBjYXNlIFZLX0VSUk9SX1NV
UkZBQ0VfTE9TVF9LSFI6CisgICAgICAgICAgICByZXR1cm4gIkEgc3VyZmFjZSBpcyBubyBsb25n
ZXIgYXZhaWxhYmxlLiI7CisgICAgICAgIGNhc2UgVktfRVJST1JfTkFUSVZFX1dJTkRPV19JTl9V
U0VfS0hSOgorICAgICAgICAgICAgcmV0dXJuICJUaGUgcmVxdWVzdGVkIHdpbmRvdyBpcyBhbHJl
YWR5IGNvbm5lY3RlZCB0byBhIFZrU3VyZmFjZUtIUiwgb3IgdG8gc29tZSBvdGhlciAiCisgICAg
ICAgICAgICAgICAgICAgIm5vbi1WdWxrYW4gQVBJLiI7CisgICAgICAgIGNhc2UgVktfRVJST1Jf
T1VUX09GX0RBVEVfS0hSOgorICAgICAgICAgICAgcmV0dXJuICJBIHN1cmZhY2UgaGFzIGNoYW5n
ZWQgaW4gc3VjaCBhIHdheSB0aGF0IGl0IGlzIG5vIGxvbmdlciBjb21wYXRpYmxlIHdpdGggdGhl
ICIKKyAgICAgICAgICAgICAgICAgICAic3dhcGNoYWluLiI7CisgICAgICAgIGNhc2UgVktfRVJS
T1JfSU5DT01QQVRJQkxFX0RJU1BMQVlfS0hSOgorICAgICAgICAgICAgcmV0dXJuICJUaGUgZGlz
cGxheSB1c2VkIGJ5IGEgc3dhcGNoYWluIGRvZXMgbm90IHVzZSB0aGUgc2FtZSBwcmVzZW50YWJs
ZSBpbWFnZSAiCisgICAgICAgICAgICAgICAgICAgImxheW91dCwgb3IgaXMgaW5jb21wYXRpYmxl
IGluIGEgd2F5IHRoYXQgcHJldmVudHMgc2hhcmluZyBhbiBpbWFnZS4iOworICAgICAgICBjYXNl
IFZLX0VSUk9SX1ZBTElEQVRJT05fRkFJTEVEX0VYVDoKKyAgICAgICAgICAgIHJldHVybiAiVGhl
IHZhbGlkYXRpb24gbGF5ZXJzIGRldGVjdGVkIGludmFsaWQgQVBJIHVzYWdlLiI7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gIlVua25vd24gdnVsa2FuIGVycm9yIGNvZGUu
IjsKKyAgICB9Cit9CisKK2Jvb2wgSGFzU3RhbmRhcmRWYWxpZGF0aW9uTGF5ZXIoY29uc3Qgc3Rk
Ojp2ZWN0b3I8VmtMYXllclByb3BlcnRpZXM+ICZsYXllclByb3BzKQoreworICAgIGZvciAoY29u
c3QgYXV0byAmbGF5ZXJQcm9wIDogbGF5ZXJQcm9wcykKKyAgICB7CisgICAgICAgIGlmIChzdGQ6
OnN0cmluZyhsYXllclByb3AubGF5ZXJOYW1lKSA9PSBnX1ZrU3RkVmFsaWRhdGlvbkxheWVyTmFt
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK25hbWVzcGFjZSB2aworeworCitFcnJvcjo6RXJy
b3IoVmtSZXN1bHQgcmVzdWx0KSA6IG1SZXN1bHQocmVzdWx0KSwgbUZpbGUobnVsbHB0ciksIG1M
aW5lKDApCit7CisgICAgQVNTRVJUKHJlc3VsdCA9PSBWS19TVUNDRVNTKTsKK30KKworRXJyb3I6
OkVycm9yKFZrUmVzdWx0IHJlc3VsdCwgY29uc3QgY2hhciAqZmlsZSwgdW5zaWduZWQgaW50IGxp
bmUpCisgICAgOiBtUmVzdWx0KHJlc3VsdCksIG1GaWxlKGZpbGUpLCBtTGluZShsaW5lKQorewor
fQorCitFcnJvcjo6fkVycm9yKCkKK3sKK30KKworRXJyb3I6OkVycm9yKGNvbnN0IEVycm9yICZv
dGhlcikgPSBkZWZhdWx0OworRXJyb3IgJkVycm9yOjpvcGVyYXRvcj0oY29uc3QgRXJyb3IgJm90
aGVyKSA9IGRlZmF1bHQ7CisKK2dsOjpFcnJvciBFcnJvcjo6dG9HTChHTGVudW0gZ2xFcnJvckNv
ZGUpIGNvbnN0Cit7CisgICAgaWYgKCFpc0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4g
Z2w6Ok5vRXJyb3IoKTsKKyAgICB9CisKKyAgICAvLyBUT0RPKGptYWRpbGwpOiBTZXQgZXh0ZW5k
ZWQgZXJyb3IgY29kZSB0byAndnVsa2FuIGludGVybmFsIGVycm9yJy4KKyAgICBjb25zdCBzdGQ6
OnN0cmluZyAmbWVzc2FnZSA9IHRvU3RyaW5nKCk7CisgICAgcmV0dXJuIGdsOjpFcnJvcihnbEVy
cm9yQ29kZSwgbWVzc2FnZS5jX3N0cigpKTsKK30KKworZWdsOjpFcnJvciBFcnJvcjo6dG9FR0wo
RUdMaW50IGVnbEVycm9yQ29kZSkgY29uc3QKK3sKKyAgICBpZiAoIWlzRXJyb3IoKSkKKyAgICB7
CisgICAgICAgIHJldHVybiBlZ2w6OkVycm9yKEVHTF9TVUNDRVNTKTsKKyAgICB9CisKKyAgICAv
LyBUT0RPKGptYWRpbGwpOiBTZXQgZXh0ZW5kZWQgZXJyb3IgY29kZSB0byAndnVsa2FuIGludGVy
bmFsIGVycm9yJy4KKyAgICBjb25zdCBzdGQ6OnN0cmluZyAmbWVzc2FnZSA9IHRvU3RyaW5nKCk7
CisgICAgcmV0dXJuIGVnbDo6RXJyb3IoZWdsRXJyb3JDb2RlLCBtZXNzYWdlLmNfc3RyKCkpOwor
fQorCitzdGQ6OnN0cmluZyBFcnJvcjo6dG9TdHJpbmcoKSBjb25zdAoreworICAgIHN0ZDo6c3Ry
aW5nc3RyZWFtIGVycm9yU3RyZWFtOworICAgIGVycm9yU3RyZWFtIDw8ICJJbnRlcm5hbCBWdWxr
YW4gZXJyb3I6ICIgPDwgVnVsa2FuUmVzdWx0U3RyaW5nKG1SZXN1bHQpIDw8ICIsIGluICIgPDwg
bUZpbGUKKyAgICAgICAgICAgICAgICA8PCAiLCBsaW5lICIgPDwgbUxpbmUgPDwgIi4iOworICAg
IHJldHVybiBlcnJvclN0cmVhbS5zdHIoKTsKK30KKworRXJyb3I6Om9wZXJhdG9yIGdsOjpFcnJv
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRvR0woRGVmYXVsdEdMRXJyb3JDb2RlKG1SZXN1bHQp
KTsKK30KKworRXJyb3I6Om9wZXJhdG9yIGVnbDo6RXJyb3IoKSBjb25zdAoreworICAgIHJldHVy
biB0b0VHTChEZWZhdWx0RUdMRXJyb3JDb2RlKG1SZXN1bHQpKTsKK30KKworYm9vbCBFcnJvcjo6
aXNFcnJvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtUmVzdWx0ICE9IFZLX1NVQ0NFU1MpOwor
fQorCisvLyBDb21tYW5kUG9vbCBpbXBsZW1lbnRhdGlvbi4KK0NvbW1hbmRQb29sOjpDb21tYW5k
UG9vbCgpCit7Cit9CisKK3ZvaWQgQ29tbWFuZFBvb2w6OmRlc3Ryb3koVmtEZXZpY2UgZGV2aWNl
KQoreworICAgIGlmICh2YWxpZCgpKQorICAgIHsKKyAgICAgICAgdmtEZXN0cm95Q29tbWFuZFBv
b2woZGV2aWNlLCBtSGFuZGxlLCBudWxscHRyKTsKKyAgICAgICAgbUhhbmRsZSA9IFZLX05VTExf
SEFORExFOworICAgIH0KK30KKworRXJyb3IgQ29tbWFuZFBvb2w6OmluaXQoVmtEZXZpY2UgZGV2
aWNlLCBjb25zdCBWa0NvbW1hbmRQb29sQ3JlYXRlSW5mbyAmY3JlYXRlSW5mbykKK3sKKyAgICBB
U1NFUlQoIXZhbGlkKCkpOworICAgIEFOR0xFX1ZLX1RSWSh2a0NyZWF0ZUNvbW1hbmRQb29sKGRl
dmljZSwgJmNyZWF0ZUluZm8sIG51bGxwdHIsICZtSGFuZGxlKSk7CisgICAgcmV0dXJuIE5vRXJy
b3IoKTsKK30KKworLy8gQ29tbWFuZEJ1ZmZlciBpbXBsZW1lbnRhdGlvbi4KK0NvbW1hbmRCdWZm
ZXI6OkNvbW1hbmRCdWZmZXIoKSA6IG1Db21tYW5kUG9vbChudWxscHRyKQoreworfQorCit2b2lk
IENvbW1hbmRCdWZmZXI6OnNldENvbW1hbmRQb29sKENvbW1hbmRQb29sICpjb21tYW5kUG9vbCkK
K3sKKyAgICBBU1NFUlQoIW1Db21tYW5kUG9vbCAmJiBjb21tYW5kUG9vbC0+dmFsaWQoKSk7Cisg
ICAgbUNvbW1hbmRQb29sID0gY29tbWFuZFBvb2w7Cit9CisKK0Vycm9yIENvbW1hbmRCdWZmZXI6
OmJlZ2luKFZrRGV2aWNlIGRldmljZSkKK3sKKyAgICBpZiAobUhhbmRsZSA9PSBWS19OVUxMX0hB
TkRMRSkKKyAgICB7CisgICAgICAgIFZrQ29tbWFuZEJ1ZmZlckFsbG9jYXRlSW5mbyBjb21tYW5k
QnVmZmVySW5mbzsKKyAgICAgICAgY29tbWFuZEJ1ZmZlckluZm8uc1R5cGUgICAgICAgICAgICAg
ID0gVktfU1RSVUNUVVJFX1RZUEVfQ09NTUFORF9CVUZGRVJfQUxMT0NBVEVfSU5GTzsKKyAgICAg
ICAgY29tbWFuZEJ1ZmZlckluZm8ucE5leHQgICAgICAgICAgICAgID0gbnVsbHB0cjsKKyAgICAg
ICAgY29tbWFuZEJ1ZmZlckluZm8uY29tbWFuZFBvb2wgICAgICAgID0gbUNvbW1hbmRQb29sLT5n
ZXRIYW5kbGUoKTsKKyAgICAgICAgY29tbWFuZEJ1ZmZlckluZm8ubGV2ZWwgICAgICAgICAgICAg
ID0gVktfQ09NTUFORF9CVUZGRVJfTEVWRUxfUFJJTUFSWTsKKyAgICAgICAgY29tbWFuZEJ1ZmZl
ckluZm8uY29tbWFuZEJ1ZmZlckNvdW50ID0gMTsKKworICAgICAgICBBTkdMRV9WS19UUlkodmtB
bGxvY2F0ZUNvbW1hbmRCdWZmZXJzKGRldmljZSwgJmNvbW1hbmRCdWZmZXJJbmZvLCAmbUhhbmRs
ZSkpOworICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICByZXNldCgpOworICAgIH0KKwor
ICAgIFZrQ29tbWFuZEJ1ZmZlckJlZ2luSW5mbyBiZWdpbkluZm87CisgICAgYmVnaW5JbmZvLnNU
eXBlID0gVktfU1RSVUNUVVJFX1RZUEVfQ09NTUFORF9CVUZGRVJfQkVHSU5fSU5GTzsKKyAgICBi
ZWdpbkluZm8ucE5leHQgPSBudWxscHRyOworICAgIC8vIFRPRE8oam1hZGlsbCk6IFVzZSBvdGhl
ciBmbGFncz8KKyAgICBiZWdpbkluZm8uZmxhZ3MgICAgICAgICAgICA9IDA7CisgICAgYmVnaW5J
bmZvLnBJbmhlcml0YW5jZUluZm8gPSBudWxscHRyOworCisgICAgQU5HTEVfVktfVFJZKHZrQmVn
aW5Db21tYW5kQnVmZmVyKG1IYW5kbGUsICZiZWdpbkluZm8pKTsKKworICAgIHJldHVybiBOb0Vy
cm9yKCk7Cit9CisKK0Vycm9yIENvbW1hbmRCdWZmZXI6OmVuZCgpCit7CisgICAgQVNTRVJUKHZh
bGlkKCkpOworICAgIEFOR0xFX1ZLX1RSWSh2a0VuZENvbW1hbmRCdWZmZXIobUhhbmRsZSkpOwor
ICAgIHJldHVybiBOb0Vycm9yKCk7Cit9CisKK0Vycm9yIENvbW1hbmRCdWZmZXI6OnJlc2V0KCkK
K3sKKyAgICBBU1NFUlQodmFsaWQoKSk7CisgICAgQU5HTEVfVktfVFJZKHZrUmVzZXRDb21tYW5k
QnVmZmVyKG1IYW5kbGUsIDApKTsKKyAgICByZXR1cm4gTm9FcnJvcigpOworfQorCit2b2lkIENv
bW1hbmRCdWZmZXI6OnNpbmdsZUltYWdlQmFycmllcihWa1BpcGVsaW5lU3RhZ2VGbGFncyBzcmNT
dGFnZU1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa1BpcGVs
aW5lU3RhZ2VGbGFncyBkc3RTdGFnZU1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWa0RlcGVuZGVuY3lGbGFncyBkZXBlbmRlbmN5RmxhZ3MsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWa0ltYWdlTWVtb3J5QmFycmllciAm
aW1hZ2VNZW1vcnlCYXJyaWVyKQoreworICAgIEFTU0VSVCh2YWxpZCgpKTsKKyAgICB2a0NtZFBp
cGVsaW5lQmFycmllcihtSGFuZGxlLCBzcmNTdGFnZU1hc2ssIGRzdFN0YWdlTWFzaywgZGVwZW5k
ZW5jeUZsYWdzLCAwLCBudWxscHRyLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIsIDEsICZpbWFnZU1lbW9yeUJhcnJpZXIpOworfQorCit2b2lkIENvbW1hbmRCdWZmZXI6OmRl
c3Ryb3koVmtEZXZpY2UgZGV2aWNlKQoreworICAgIGlmICh2YWxpZCgpKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1Db21tYW5kUG9vbCAmJiBtQ29tbWFuZFBvb2wtPnZhbGlkKCkpOworICAgICAg
ICB2a0ZyZWVDb21tYW5kQnVmZmVycyhkZXZpY2UsIG1Db21tYW5kUG9vbC0+Z2V0SGFuZGxlKCks
IDEsICZtSGFuZGxlKTsKKyAgICAgICAgbUhhbmRsZSA9IFZLX05VTExfSEFORExFOworICAgIH0K
K30KKwordm9pZCBDb21tYW5kQnVmZmVyOjpjbGVhclNpbmdsZUNvbG9ySW1hZ2UoY29uc3Qgdms6
OkltYWdlICZpbWFnZSwgY29uc3QgVmtDbGVhckNvbG9yVmFsdWUgJmNvbG9yKQoreworICAgIEFT
U0VSVCh2YWxpZCgpKTsKKyAgICBBU1NFUlQoaW1hZ2UuZ2V0Q3VycmVudExheW91dCgpID09IFZL
X0lNQUdFX0xBWU9VVF9HRU5FUkFMIHx8CisgICAgICAgICAgIGltYWdlLmdldEN1cnJlbnRMYXlv
dXQoKSA9PSBWS19JTUFHRV9MQVlPVVRfVFJBTlNGRVJfRFNUX09QVElNQUwpOworCisgICAgVmtJ
bWFnZVN1YnJlc291cmNlUmFuZ2UgcmFuZ2U7CisgICAgcmFuZ2UuYXNwZWN0TWFzayAgICAgPSBW
S19JTUFHRV9BU1BFQ1RfQ09MT1JfQklUOworICAgIHJhbmdlLmJhc2VNaXBMZXZlbCAgID0gMDsK
KyAgICByYW5nZS5sZXZlbENvdW50ICAgICA9IDE7CisgICAgcmFuZ2UuYmFzZUFycmF5TGF5ZXIg
PSAwOworICAgIHJhbmdlLmxheWVyQ291bnQgICAgID0gMTsKKworICAgIHZrQ21kQ2xlYXJDb2xv
ckltYWdlKG1IYW5kbGUsIGltYWdlLmdldEhhbmRsZSgpLCBpbWFnZS5nZXRDdXJyZW50TGF5b3V0
KCksICZjb2xvciwgMSwgJnJhbmdlKTsKK30KKwordm9pZCBDb21tYW5kQnVmZmVyOjpjb3B5U2lu
Z2xlSW1hZ2UoY29uc3Qgdms6OkltYWdlICZzcmNJbWFnZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHZrOjpJbWFnZSAmZGVzdEltYWdlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OkJveCAmY29weVJlZ2lvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrSW1hZ2VBc3BlY3RGbGFncyBhc3BlY3RN
YXNrKQoreworICAgIEFTU0VSVCh2YWxpZCgpKTsKKyAgICBBU1NFUlQoc3JjSW1hZ2UuZ2V0Q3Vy
cmVudExheW91dCgpID09IFZLX0lNQUdFX0xBWU9VVF9UUkFOU0ZFUl9TUkNfT1BUSU1BTCB8fAor
ICAgICAgICAgICBzcmNJbWFnZS5nZXRDdXJyZW50TGF5b3V0KCkgPT0gVktfSU1BR0VfTEFZT1VU
X0dFTkVSQUwpOworICAgIEFTU0VSVChkZXN0SW1hZ2UuZ2V0Q3VycmVudExheW91dCgpID09IFZL
X0lNQUdFX0xBWU9VVF9UUkFOU0ZFUl9EU1RfT1BUSU1BTCB8fAorICAgICAgICAgICBkZXN0SW1h
Z2UuZ2V0Q3VycmVudExheW91dCgpID09IFZLX0lNQUdFX0xBWU9VVF9HRU5FUkFMKTsKKworICAg
IFZrSW1hZ2VDb3B5IHJlZ2lvbjsKKyAgICByZWdpb24uc3JjU3VicmVzb3VyY2UuYXNwZWN0TWFz
ayAgICAgPSBhc3BlY3RNYXNrOworICAgIHJlZ2lvbi5zcmNTdWJyZXNvdXJjZS5taXBMZXZlbCAg
ICAgICA9IDA7CisgICAgcmVnaW9uLnNyY1N1YnJlc291cmNlLmJhc2VBcnJheUxheWVyID0gMDsK
KyAgICByZWdpb24uc3JjU3VicmVzb3VyY2UubGF5ZXJDb3VudCAgICAgPSAxOworICAgIHJlZ2lv
bi5zcmNPZmZzZXQueCAgICAgICAgICAgICAgICAgICA9IGNvcHlSZWdpb24ueDsKKyAgICByZWdp
b24uc3JjT2Zmc2V0LnkgICAgICAgICAgICAgICAgICAgPSBjb3B5UmVnaW9uLnk7CisgICAgcmVn
aW9uLnNyY09mZnNldC56ICAgICAgICAgICAgICAgICAgID0gY29weVJlZ2lvbi56OworICAgIHJl
Z2lvbi5kc3RTdWJyZXNvdXJjZS5hc3BlY3RNYXNrICAgICA9IGFzcGVjdE1hc2s7CisgICAgcmVn
aW9uLmRzdFN1YnJlc291cmNlLm1pcExldmVsICAgICAgID0gMDsKKyAgICByZWdpb24uZHN0U3Vi
cmVzb3VyY2UuYmFzZUFycmF5TGF5ZXIgPSAwOworICAgIHJlZ2lvbi5kc3RTdWJyZXNvdXJjZS5s
YXllckNvdW50ICAgICA9IDE7CisgICAgcmVnaW9uLmRzdE9mZnNldC54ICAgICAgICAgICAgICAg
ICAgID0gY29weVJlZ2lvbi54OworICAgIHJlZ2lvbi5kc3RPZmZzZXQueSAgICAgICAgICAgICAg
ICAgICA9IGNvcHlSZWdpb24ueTsKKyAgICByZWdpb24uZHN0T2Zmc2V0LnogICAgICAgICAgICAg
ICAgICAgPSBjb3B5UmVnaW9uLno7CisgICAgcmVnaW9uLmV4dGVudC53aWR0aCAgICAgICAgICAg
ICAgICAgID0gY29weVJlZ2lvbi53aWR0aDsKKyAgICByZWdpb24uZXh0ZW50LmhlaWdodCAgICAg
ICAgICAgICAgICAgPSBjb3B5UmVnaW9uLmhlaWdodDsKKyAgICByZWdpb24uZXh0ZW50LmRlcHRo
ICAgICAgICAgICAgICAgICAgPSBjb3B5UmVnaW9uLmRlcHRoOworCisgICAgdmtDbWRDb3B5SW1h
Z2UobUhhbmRsZSwgc3JjSW1hZ2UuZ2V0SGFuZGxlKCksIHNyY0ltYWdlLmdldEN1cnJlbnRMYXlv
dXQoKSwKKyAgICAgICAgICAgICAgICAgICBkZXN0SW1hZ2UuZ2V0SGFuZGxlKCksIGRlc3RJbWFn
ZS5nZXRDdXJyZW50TGF5b3V0KCksIDEsICZyZWdpb24pOworfQorCit2b2lkIENvbW1hbmRCdWZm
ZXI6OmJlZ2luUmVuZGVyUGFzcyhjb25zdCBSZW5kZXJQYXNzICZyZW5kZXJQYXNzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRnJhbWVidWZmZXIgJmZyYW1lYnVm
ZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2w6OlJlY3Rh
bmdsZSAmcmVuZGVyQXJlYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6dmVjdG9yPFZrQ2xlYXJWYWx1ZT4gJmNsZWFyVmFsdWVzKQoreworICAgIEFTU0VS
VCghY2xlYXJWYWx1ZXMuZW1wdHkoKSk7CisgICAgQVNTRVJUKG1IYW5kbGUgIT0gVktfTlVMTF9I
QU5ETEUpOworCisgICAgVmtSZW5kZXJQYXNzQmVnaW5JbmZvIGJlZ2luSW5mbzsKKyAgICBiZWdp
bkluZm8uc1R5cGUgICAgICAgICAgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfUkVOREVS
X1BBU1NfQkVHSU5fSU5GTzsKKyAgICBiZWdpbkluZm8ucE5leHQgICAgICAgICAgICAgICAgICAg
ID0gbnVsbHB0cjsKKyAgICBiZWdpbkluZm8ucmVuZGVyUGFzcyAgICAgICAgICAgICAgID0gcmVu
ZGVyUGFzcy5nZXRIYW5kbGUoKTsKKyAgICBiZWdpbkluZm8uZnJhbWVidWZmZXIgICAgICAgICAg
ICAgID0gZnJhbWVidWZmZXIuZ2V0SGFuZGxlKCk7CisgICAgYmVnaW5JbmZvLnJlbmRlckFyZWEu
b2Zmc2V0LnggICAgICA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihyZW5kZXJBcmVhLngpOworICAg
IGJlZ2luSW5mby5yZW5kZXJBcmVhLm9mZnNldC55ICAgICAgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4ocmVuZGVyQXJlYS55KTsKKyAgICBiZWdpbkluZm8ucmVuZGVyQXJlYS5leHRlbnQud2lkdGgg
ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlbmRlckFyZWEud2lkdGgpOworICAgIGJlZ2luSW5m
by5yZW5kZXJBcmVhLmV4dGVudC5oZWlnaHQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmVuZGVy
QXJlYS5oZWlnaHQpOworICAgIGJlZ2luSW5mby5jbGVhclZhbHVlQ291bnQgICAgICAgICAgPSBz
dGF0aWNfY2FzdDx1aW50MzJfdD4oY2xlYXJWYWx1ZXMuc2l6ZSgpKTsKKyAgICBiZWdpbkluZm8u
cENsZWFyVmFsdWVzICAgICAgICAgICAgID0gY2xlYXJWYWx1ZXMuZGF0YSgpOworCisgICAgdmtD
bWRCZWdpblJlbmRlclBhc3MobUhhbmRsZSwgJmJlZ2luSW5mbywgVktfU1VCUEFTU19DT05URU5U
U19JTkxJTkUpOworfQorCit2b2lkIENvbW1hbmRCdWZmZXI6OmVuZFJlbmRlclBhc3MoKQorewor
ICAgIEFTU0VSVChtSGFuZGxlICE9IFZLX05VTExfSEFORExFKTsKKyAgICB2a0NtZEVuZFJlbmRl
clBhc3MobUhhbmRsZSk7Cit9CisKK3ZvaWQgQ29tbWFuZEJ1ZmZlcjo6ZHJhdyh1aW50MzJfdCB2
ZXJ0ZXhDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBpbnN0YW5jZUNv
dW50LAorICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZpcnN0VmVydGV4LAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZpcnN0SW5zdGFuY2UpCit7CisgICAgQVNT
RVJUKHZhbGlkKCkpOworICAgIHZrQ21kRHJhdyhtSGFuZGxlLCB2ZXJ0ZXhDb3VudCwgaW5zdGFu
Y2VDb3VudCwgZmlyc3RWZXJ0ZXgsIGZpcnN0SW5zdGFuY2UpOworfQorCit2b2lkIENvbW1hbmRC
dWZmZXI6OmJpbmRQaXBlbGluZShWa1BpcGVsaW5lQmluZFBvaW50IHBpcGVsaW5lQmluZFBvaW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdms6OlBpcGVsaW5lICZw
aXBlbGluZSkKK3sKKyAgICBBU1NFUlQodmFsaWQoKSAmJiBwaXBlbGluZS52YWxpZCgpKTsKKyAg
ICB2a0NtZEJpbmRQaXBlbGluZShtSGFuZGxlLCBwaXBlbGluZUJpbmRQb2ludCwgcGlwZWxpbmUu
Z2V0SGFuZGxlKCkpOworfQorCit2b2lkIENvbW1hbmRCdWZmZXI6OmJpbmRWZXJ0ZXhCdWZmZXJz
KHVpbnQzMl90IGZpcnN0QmluZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8VmtCdWZmZXI+ICZidWZmZXJzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWa0RldmljZVNpemU+
ICZvZmZzZXRzKQoreworICAgIEFTU0VSVCh2YWxpZCgpICYmIGJ1ZmZlcnMuc2l6ZSgpID09IG9m
ZnNldHMuc2l6ZSgpKTsKKyAgICB2a0NtZEJpbmRWZXJ0ZXhCdWZmZXJzKG1IYW5kbGUsIGZpcnN0
QmluZGluZywgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGJ1ZmZlcnMuc2l6ZSgpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1ZmZlcnMuZGF0YSgpLCBvZmZzZXRzLmRhdGEoKSk7Cit9CisK
Ky8vIEltYWdlIGltcGxlbWVudGF0aW9uLgorSW1hZ2U6OkltYWdlKCkgOiBtQ3VycmVudExheW91
dChWS19JTUFHRV9MQVlPVVRfVU5ERUZJTkVEKQoreworfQorCitJbWFnZTo6SW1hZ2UoVmtJbWFn
ZSBpbWFnZSkgOiBXcmFwcGVkT2JqZWN0KGltYWdlKSwgbUN1cnJlbnRMYXlvdXQoVktfSU1BR0Vf
TEFZT1VUX1VOREVGSU5FRCkKK3sKK30KKwordm9pZCBJbWFnZTo6cmV0YWluKFZrRGV2aWNlIGRl
dmljZSwgSW1hZ2UgJiZvdGhlcikKK3sKKyAgICBXcmFwcGVkT2JqZWN0OjpyZXRhaW4oZGV2aWNl
LCBzdGQ6Om1vdmUob3RoZXIpKTsKKyAgICBzdGQ6OnN3YXAobUN1cnJlbnRMYXlvdXQsIG90aGVy
Lm1DdXJyZW50TGF5b3V0KTsKK30KKwordm9pZCBJbWFnZTo6cmVzZXQoKQoreworICAgIG1IYW5k
bGUgPSBWS19OVUxMX0hBTkRMRTsKK30KKwordm9pZCBJbWFnZTo6ZGVzdHJveShWa0RldmljZSBk
ZXZpY2UpCit7CisgICAgaWYgKHZhbGlkKCkpCisgICAgeworICAgICAgICB2a0Rlc3Ryb3lJbWFn
ZShkZXZpY2UsIG1IYW5kbGUsIG51bGxwdHIpOworICAgICAgICBtSGFuZGxlID0gVktfTlVMTF9I
QU5ETEU7CisgICAgfQorfQorCitFcnJvciBJbWFnZTo6aW5pdChWa0RldmljZSBkZXZpY2UsIGNv
bnN0IFZrSW1hZ2VDcmVhdGVJbmZvICZjcmVhdGVJbmZvKQoreworICAgIEFTU0VSVCghdmFsaWQo
KSk7CisgICAgQU5HTEVfVktfVFJZKHZrQ3JlYXRlSW1hZ2UoZGV2aWNlLCAmY3JlYXRlSW5mbywg
bnVsbHB0ciwgJm1IYW5kbGUpKTsKKyAgICByZXR1cm4gTm9FcnJvcigpOworfQorCit2b2lkIElt
YWdlOjpjaGFuZ2VMYXlvdXRUb3AoVmtJbWFnZUFzcGVjdEZsYWdzIGFzcGVjdE1hc2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmtJbWFnZUxheW91dCBuZXdMYXlvdXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcikKK3sKKyAg
ICBpZiAobmV3TGF5b3V0ID09IG1DdXJyZW50TGF5b3V0KQorICAgIHsKKyAgICAgICAgLy8gTm8t
b3AuCisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjaGFuZ2VMYXlvdXRXaXRoU3RhZ2Vz
KGFzcGVjdE1hc2ssIG5ld0xheW91dCwgVktfUElQRUxJTkVfU1RBR0VfVE9QX09GX1BJUEVfQklU
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfUElQRUxJTkVfU1RBR0VfVE9QX09GX1BJ
UEVfQklULCBjb21tYW5kQnVmZmVyKTsKK30KKwordm9pZCBJbWFnZTo6Y2hhbmdlTGF5b3V0V2l0
aFN0YWdlcyhWa0ltYWdlQXNwZWN0RmxhZ3MgYXNwZWN0TWFzaywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmtJbWFnZUxheW91dCBuZXdMYXlvdXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZrUGlwZWxpbmVTdGFnZUZsYWdzIHNyY1N0YWdlTWFzaywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtQaXBlbGluZVN0YWdlRmxhZ3Mg
ZHN0U3RhZ2VNYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21tYW5k
QnVmZmVyICpjb21tYW5kQnVmZmVyKQoreworICAgIFZrSW1hZ2VNZW1vcnlCYXJyaWVyIGltYWdl
TWVtb3J5QmFycmllcjsKKyAgICBpbWFnZU1lbW9yeUJhcnJpZXIuc1R5cGUgICAgICAgICAgICAg
ICA9IFZLX1NUUlVDVFVSRV9UWVBFX0lNQUdFX01FTU9SWV9CQVJSSUVSOworICAgIGltYWdlTWVt
b3J5QmFycmllci5wTmV4dCAgICAgICAgICAgICAgID0gbnVsbHB0cjsKKyAgICBpbWFnZU1lbW9y
eUJhcnJpZXIuc3JjQWNjZXNzTWFzayAgICAgICA9IDA7CisgICAgaW1hZ2VNZW1vcnlCYXJyaWVy
LmRzdEFjY2Vzc01hc2sgICAgICAgPSAwOworICAgIGltYWdlTWVtb3J5QmFycmllci5vbGRMYXlv
dXQgICAgICAgICAgID0gbUN1cnJlbnRMYXlvdXQ7CisgICAgaW1hZ2VNZW1vcnlCYXJyaWVyLm5l
d0xheW91dCAgICAgICAgICAgPSBuZXdMYXlvdXQ7CisgICAgaW1hZ2VNZW1vcnlCYXJyaWVyLnNy
Y1F1ZXVlRmFtaWx5SW5kZXggPSBWS19RVUVVRV9GQU1JTFlfSUdOT1JFRDsKKyAgICBpbWFnZU1l
bW9yeUJhcnJpZXIuZHN0UXVldWVGYW1pbHlJbmRleCA9IFZLX1FVRVVFX0ZBTUlMWV9JR05PUkVE
OworICAgIGltYWdlTWVtb3J5QmFycmllci5pbWFnZSAgICAgICAgICAgICAgID0gbUhhbmRsZTsK
KworICAgIC8vIFRPRE8oam1hZGlsbCk6IElzIHRoaXMgbmVlZGVkIGZvciBtaXBwZWQvbGF5ZXIg
aW1hZ2VzPworICAgIGltYWdlTWVtb3J5QmFycmllci5zdWJyZXNvdXJjZVJhbmdlLmFzcGVjdE1h
c2sgICAgID0gYXNwZWN0TWFzazsKKyAgICBpbWFnZU1lbW9yeUJhcnJpZXIuc3VicmVzb3VyY2VS
YW5nZS5iYXNlTWlwTGV2ZWwgICA9IDA7CisgICAgaW1hZ2VNZW1vcnlCYXJyaWVyLnN1YnJlc291
cmNlUmFuZ2UubGV2ZWxDb3VudCAgICAgPSAxOworICAgIGltYWdlTWVtb3J5QmFycmllci5zdWJy
ZXNvdXJjZVJhbmdlLmJhc2VBcnJheUxheWVyID0gMDsKKyAgICBpbWFnZU1lbW9yeUJhcnJpZXIu
c3VicmVzb3VyY2VSYW5nZS5sYXllckNvdW50ICAgICA9IDE7CisKKyAgICAvLyBUT0RPKGptYWRp
bGwpOiBUZXN0IGFsbCB0aGUgcGVybXV0YXRpb25zIG9mIHRoZSBhY2Nlc3MgZmxhZ3MuCisgICAg
aW1hZ2VNZW1vcnlCYXJyaWVyLnNyY0FjY2Vzc01hc2sgPSBHZXRCYXNpY0xheW91dEFjY2Vzc0Zs
YWdzKG1DdXJyZW50TGF5b3V0KTsKKworICAgIGlmIChtQ3VycmVudExheW91dCA9PSBWS19JTUFH
RV9MQVlPVVRfUFJFSU5JVElBTElaRUQpCisgICAgeworICAgICAgICBpbWFnZU1lbW9yeUJhcnJp
ZXIuc3JjQWNjZXNzTWFzayB8PSBWS19BQ0NFU1NfSE9TVF9XUklURV9CSVQ7CisgICAgfQorCisg
ICAgaW1hZ2VNZW1vcnlCYXJyaWVyLmRzdEFjY2Vzc01hc2sgPSBHZXRCYXNpY0xheW91dEFjY2Vz
c0ZsYWdzKG5ld0xheW91dCk7CisKKyAgICBpZiAobmV3TGF5b3V0ID09IFZLX0lNQUdFX0xBWU9V
VF9TSEFERVJfUkVBRF9PTkxZX09QVElNQUwpCisgICAgeworICAgICAgICBpbWFnZU1lbW9yeUJh
cnJpZXIuc3JjQWNjZXNzTWFzayB8PQorICAgICAgICAgICAgKFZLX0FDQ0VTU19IT1NUX1dSSVRF
X0JJVCB8IFZLX0FDQ0VTU19UUkFOU0ZFUl9XUklURV9CSVQpOworICAgICAgICBpbWFnZU1lbW9y
eUJhcnJpZXIuZHN0QWNjZXNzTWFzayB8PSBWS19BQ0NFU1NfU0hBREVSX1JFQURfQklUOworICAg
IH0KKworICAgIGlmIChuZXdMYXlvdXQgPT0gVktfSU1BR0VfTEFZT1VUX0RFUFRIX1NURU5DSUxf
QVRUQUNITUVOVF9PUFRJTUFMKQorICAgIHsKKyAgICAgICAgaW1hZ2VNZW1vcnlCYXJyaWVyLmRz
dEFjY2Vzc01hc2sgfD0gVktfQUNDRVNTX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVF9XUklURV9C
SVQ7CisgICAgfQorCisgICAgY29tbWFuZEJ1ZmZlci0+c2luZ2xlSW1hZ2VCYXJyaWVyKHNyY1N0
YWdlTWFzaywgZHN0U3RhZ2VNYXNrLCAwLCBpbWFnZU1lbW9yeUJhcnJpZXIpOworCisgICAgbUN1
cnJlbnRMYXlvdXQgPSBuZXdMYXlvdXQ7Cit9CisKK3ZvaWQgSW1hZ2U6OmdldE1lbW9yeVJlcXVp
cmVtZW50cyhWa0RldmljZSBkZXZpY2UsIFZrTWVtb3J5UmVxdWlyZW1lbnRzICpyZXF1aXJlbWVu
dHNPdXQpIGNvbnN0Cit7CisgICAgQVNTRVJUKHZhbGlkKCkpOworICAgIHZrR2V0SW1hZ2VNZW1v
cnlSZXF1aXJlbWVudHMoZGV2aWNlLCBtSGFuZGxlLCByZXF1aXJlbWVudHNPdXQpOworfQorCitF
cnJvciBJbWFnZTo6YmluZE1lbW9yeShWa0RldmljZSBkZXZpY2UsIGNvbnN0IHZrOjpEZXZpY2VN
ZW1vcnkgJmRldmljZU1lbW9yeSkKK3sKKyAgICBBU1NFUlQodmFsaWQoKSAmJiBkZXZpY2VNZW1v
cnkudmFsaWQoKSk7CisgICAgQU5HTEVfVktfVFJZKHZrQmluZEltYWdlTWVtb3J5KGRldmljZSwg
bUhhbmRsZSwgZGV2aWNlTWVtb3J5LmdldEhhbmRsZSgpLCAwKSk7CisgICAgcmV0dXJuIE5vRXJy
b3IoKTsKK30KKworLy8gSW1hZ2VWaWV3IGltcGxlbWVudGF0aW9uLgorSW1hZ2VWaWV3OjpJbWFn
ZVZpZXcoKQoreworfQorCit2b2lkIEltYWdlVmlldzo6ZGVzdHJveShWa0RldmljZSBkZXZpY2Up
Cit7CisgICAgaWYgKHZhbGlkKCkpCisgICAgeworICAgICAgICB2a0Rlc3Ryb3lJbWFnZVZpZXco
ZGV2aWNlLCBtSGFuZGxlLCBudWxscHRyKTsKKyAgICAgICAgbUhhbmRsZSA9IFZLX05VTExfSEFO
RExFOworICAgIH0KK30KKworRXJyb3IgSW1hZ2VWaWV3Ojppbml0KFZrRGV2aWNlIGRldmljZSwg
Y29uc3QgVmtJbWFnZVZpZXdDcmVhdGVJbmZvICZjcmVhdGVJbmZvKQoreworICAgIEFOR0xFX1ZL
X1RSWSh2a0NyZWF0ZUltYWdlVmlldyhkZXZpY2UsICZjcmVhdGVJbmZvLCBudWxscHRyLCAmbUhh
bmRsZSkpOworICAgIHJldHVybiBOb0Vycm9yKCk7Cit9CisKKy8vIFNlbWFwaG9yZSBpbXBsZW1l
bnRhdGlvbi4KK1NlbWFwaG9yZTo6U2VtYXBob3JlKCkKK3sKK30KKwordm9pZCBTZW1hcGhvcmU6
OmRlc3Ryb3koVmtEZXZpY2UgZGV2aWNlKQoreworICAgIGlmICh2YWxpZCgpKQorICAgIHsKKyAg
ICAgICAgdmtEZXN0cm95U2VtYXBob3JlKGRldmljZSwgbUhhbmRsZSwgbnVsbHB0cik7CisgICAg
ICAgIG1IYW5kbGUgPSBWS19OVUxMX0hBTkRMRTsKKyAgICB9Cit9CisKK0Vycm9yIFNlbWFwaG9y
ZTo6aW5pdChWa0RldmljZSBkZXZpY2UpCit7CisgICAgQVNTRVJUKCF2YWxpZCgpKTsKKworICAg
IFZrU2VtYXBob3JlQ3JlYXRlSW5mbyBzZW1hcGhvcmVJbmZvOworICAgIHNlbWFwaG9yZUluZm8u
c1R5cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9TRU1BUEhPUkVfQ1JFQVRFX0lORk87CisgICAgc2Vt
YXBob3JlSW5mby5wTmV4dCA9IG51bGxwdHI7CisgICAgc2VtYXBob3JlSW5mby5mbGFncyA9IDA7
CisKKyAgICBBTkdMRV9WS19UUlkodmtDcmVhdGVTZW1hcGhvcmUoZGV2aWNlLCAmc2VtYXBob3Jl
SW5mbywgbnVsbHB0ciwgJm1IYW5kbGUpKTsKKworICAgIHJldHVybiBOb0Vycm9yKCk7Cit9CisK
Ky8vIEZyYW1lYnVmZmVyIGltcGxlbWVudGF0aW9uLgorRnJhbWVidWZmZXI6OkZyYW1lYnVmZmVy
KCkKK3sKK30KKwordm9pZCBGcmFtZWJ1ZmZlcjo6ZGVzdHJveShWa0RldmljZSBkZXZpY2UpCit7
CisgICAgaWYgKHZhbGlkKCkpCisgICAgeworICAgICAgICB2a0Rlc3Ryb3lGcmFtZWJ1ZmZlcihk
ZXZpY2UsIG1IYW5kbGUsIG51bGxwdHIpOworICAgICAgICBtSGFuZGxlID0gVktfTlVMTF9IQU5E
TEU7CisgICAgfQorfQorCitFcnJvciBGcmFtZWJ1ZmZlcjo6aW5pdChWa0RldmljZSBkZXZpY2Us
IGNvbnN0IFZrRnJhbWVidWZmZXJDcmVhdGVJbmZvICZjcmVhdGVJbmZvKQoreworICAgIEFTU0VS
VCghdmFsaWQoKSk7CisgICAgQU5HTEVfVktfVFJZKHZrQ3JlYXRlRnJhbWVidWZmZXIoZGV2aWNl
LCAmY3JlYXRlSW5mbywgbnVsbHB0ciwgJm1IYW5kbGUpKTsKKyAgICByZXR1cm4gTm9FcnJvcigp
OworfQorCisvLyBEZXZpY2VNZW1vcnkgaW1wbGVtZW50YXRpb24uCitEZXZpY2VNZW1vcnk6OkRl
dmljZU1lbW9yeSgpCit7Cit9CisKK3ZvaWQgRGV2aWNlTWVtb3J5OjpkZXN0cm95KFZrRGV2aWNl
IGRldmljZSkKK3sKKyAgICBpZiAodmFsaWQoKSkKKyAgICB7CisgICAgICAgIHZrRnJlZU1lbW9y
eShkZXZpY2UsIG1IYW5kbGUsIG51bGxwdHIpOworICAgICAgICBtSGFuZGxlID0gVktfTlVMTF9I
QU5ETEU7CisgICAgfQorfQorCitFcnJvciBEZXZpY2VNZW1vcnk6OmFsbG9jYXRlKFZrRGV2aWNl
IGRldmljZSwgY29uc3QgVmtNZW1vcnlBbGxvY2F0ZUluZm8gJmFsbG9jSW5mbykKK3sKKyAgICBB
U1NFUlQoIXZhbGlkKCkpOworICAgIEFOR0xFX1ZLX1RSWSh2a0FsbG9jYXRlTWVtb3J5KGRldmlj
ZSwgJmFsbG9jSW5mbywgbnVsbHB0ciwgJm1IYW5kbGUpKTsKKyAgICByZXR1cm4gTm9FcnJvcigp
OworfQorCitFcnJvciBEZXZpY2VNZW1vcnk6Om1hcChWa0RldmljZSBkZXZpY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICBWa0RldmljZVNpemUgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgVmtEZXZpY2VTaXplIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICBWa01lbW9y
eU1hcEZsYWdzIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqKm1hcFBv
aW50ZXIpCit7CisgICAgQVNTRVJUKHZhbGlkKCkpOworICAgIEFOR0xFX1ZLX1RSWSgKKyAgICAg
ICAgdmtNYXBNZW1vcnkoZGV2aWNlLCBtSGFuZGxlLCBvZmZzZXQsIHNpemUsIGZsYWdzLCByZWlu
dGVycHJldF9jYXN0PHZvaWQgKio+KG1hcFBvaW50ZXIpKSk7CisgICAgcmV0dXJuIE5vRXJyb3Io
KTsKK30KKwordm9pZCBEZXZpY2VNZW1vcnk6OnVubWFwKFZrRGV2aWNlIGRldmljZSkKK3sKKyAg
ICBBU1NFUlQodmFsaWQoKSk7CisgICAgdmtVbm1hcE1lbW9yeShkZXZpY2UsIG1IYW5kbGUpOwor
fQorCisvLyBSZW5kZXJQYXNzIGltcGxlbWVudGF0aW9uLgorUmVuZGVyUGFzczo6UmVuZGVyUGFz
cygpCit7Cit9CisKK3ZvaWQgUmVuZGVyUGFzczo6ZGVzdHJveShWa0RldmljZSBkZXZpY2UpCit7
CisgICAgaWYgKHZhbGlkKCkpCisgICAgeworICAgICAgICB2a0Rlc3Ryb3lSZW5kZXJQYXNzKGRl
dmljZSwgbUhhbmRsZSwgbnVsbHB0cik7CisgICAgICAgIG1IYW5kbGUgPSBWS19OVUxMX0hBTkRM
RTsKKyAgICB9Cit9CisKK0Vycm9yIFJlbmRlclBhc3M6OmluaXQoVmtEZXZpY2UgZGV2aWNlLCBj
b25zdCBWa1JlbmRlclBhc3NDcmVhdGVJbmZvICZjcmVhdGVJbmZvKQoreworICAgIEFTU0VSVCgh
dmFsaWQoKSk7CisgICAgQU5HTEVfVktfVFJZKHZrQ3JlYXRlUmVuZGVyUGFzcyhkZXZpY2UsICZj
cmVhdGVJbmZvLCBudWxscHRyLCAmbUhhbmRsZSkpOworICAgIHJldHVybiBOb0Vycm9yKCk7Cit9
CisKKy8vIFN0YWdpbmdJbWFnZSBpbXBsZW1lbnRhdGlvbi4KK1N0YWdpbmdJbWFnZTo6U3RhZ2lu
Z0ltYWdlKCkgOiBtU2l6ZSgwKQoreworfQorCitTdGFnaW5nSW1hZ2U6OlN0YWdpbmdJbWFnZShT
dGFnaW5nSW1hZ2UgJiZvdGhlcikKKyAgICA6IG1JbWFnZShzdGQ6Om1vdmUob3RoZXIubUltYWdl
KSksCisgICAgICBtRGV2aWNlTWVtb3J5KHN0ZDo6bW92ZShvdGhlci5tRGV2aWNlTWVtb3J5KSks
CisgICAgICBtU2l6ZShvdGhlci5tU2l6ZSkKK3sKKyAgICBvdGhlci5tU2l6ZSA9IDA7Cit9CisK
K3ZvaWQgU3RhZ2luZ0ltYWdlOjpkZXN0cm95KFZrRGV2aWNlIGRldmljZSkKK3sKKyAgICBtSW1h
Z2UuZGVzdHJveShkZXZpY2UpOworICAgIG1EZXZpY2VNZW1vcnkuZGVzdHJveShkZXZpY2UpOwor
fQorCit2b2lkIFN0YWdpbmdJbWFnZTo6cmV0YWluKFZrRGV2aWNlIGRldmljZSwgU3RhZ2luZ0lt
YWdlICYmb3RoZXIpCit7CisgICAgbUltYWdlLnJldGFpbihkZXZpY2UsIHN0ZDo6bW92ZShvdGhl
ci5tSW1hZ2UpKTsKKyAgICBtRGV2aWNlTWVtb3J5LnJldGFpbihkZXZpY2UsIHN0ZDo6bW92ZShv
dGhlci5tRGV2aWNlTWVtb3J5KSk7CisgICAgc3RkOjpzd2FwKG1TaXplLCBvdGhlci5tU2l6ZSk7
Cit9CisKK0Vycm9yIFN0YWdpbmdJbWFnZTo6aW5pdChWa0RldmljZSBkZXZpY2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgdWludDMyX3QgcXVldWVGYW1pbHlJbmRleCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICB1aW50MzJfdCBob3N0VmlzaWJsZU1lbW9yeUluZGV4LAorICAgICAgICAg
ICAgICAgICAgICAgICAgIFRleHR1cmVEaW1lbnNpb24gZGltZW5zaW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIFZrRm9ybWF0IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBnbDo6RXh0ZW50cyAmZXh0ZW50KQoreworICAgIFZrSW1hZ2VDcmVhdGVJbmZvIGNyZWF0
ZUluZm87CisKKyAgICBjcmVhdGVJbmZvLnNUeXBlICAgICAgICAgPSBWS19TVFJVQ1RVUkVfVFlQ
RV9JTUFHRV9DUkVBVEVfSU5GTzsKKyAgICBjcmVhdGVJbmZvLnBOZXh0ICAgICAgICAgPSBudWxs
cHRyOworICAgIGNyZWF0ZUluZm8uZmxhZ3MgICAgICAgICA9IDA7CisgICAgY3JlYXRlSW5mby5p
bWFnZVR5cGUgICAgID0gVktfSU1BR0VfVFlQRV8yRDsKKyAgICBjcmVhdGVJbmZvLmZvcm1hdCAg
ICAgICAgPSBmb3JtYXQ7CisgICAgY3JlYXRlSW5mby5leHRlbnQud2lkdGggID0gc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGV4dGVudC53aWR0aCk7CisgICAgY3JlYXRlSW5mby5leHRlbnQuaGVpZ2h0
ID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGV4dGVudC5oZWlnaHQpOworICAgIGNyZWF0ZUluZm8u
ZXh0ZW50LmRlcHRoICA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihleHRlbnQuZGVwdGgpOworICAg
IGNyZWF0ZUluZm8ubWlwTGV2ZWxzICAgICA9IDE7CisgICAgY3JlYXRlSW5mby5hcnJheUxheWVy
cyAgID0gMTsKKyAgICBjcmVhdGVJbmZvLnNhbXBsZXMgICAgICAgPSBWS19TQU1QTEVfQ09VTlRf
MV9CSVQ7CisgICAgY3JlYXRlSW5mby50aWxpbmcgICAgICAgID0gVktfSU1BR0VfVElMSU5HX0xJ
TkVBUjsKKyAgICBjcmVhdGVJbmZvLnVzYWdlICAgICAgICAgPSAoVktfSU1BR0VfVVNBR0VfVFJB
TlNGRVJfRFNUX0JJVCB8IFZLX0lNQUdFX1VTQUdFX1RSQU5TRkVSX1NSQ19CSVQpOworICAgIGNy
ZWF0ZUluZm8uc2hhcmluZ01vZGUgICA9IFZLX1NIQVJJTkdfTU9ERV9FWENMVVNJVkU7CisgICAg
Y3JlYXRlSW5mby5xdWV1ZUZhbWlseUluZGV4Q291bnQgPSAxOworICAgIGNyZWF0ZUluZm8ucFF1
ZXVlRmFtaWx5SW5kaWNlcyAgID0gJnF1ZXVlRmFtaWx5SW5kZXg7CisgICAgY3JlYXRlSW5mby5p
bml0aWFsTGF5b3V0ICAgICAgICAgPSBWS19JTUFHRV9MQVlPVVRfVU5ERUZJTkVEOworCisgICAg
QU5HTEVfVFJZKG1JbWFnZS5pbml0KGRldmljZSwgY3JlYXRlSW5mbykpOworCisgICAgVmtNZW1v
cnlSZXF1aXJlbWVudHMgbWVtb3J5UmVxdWlyZW1lbnRzOworICAgIG1JbWFnZS5nZXRNZW1vcnlS
ZXF1aXJlbWVudHMoZGV2aWNlLCAmbWVtb3J5UmVxdWlyZW1lbnRzKTsKKworICAgIC8vIEVuc3Vy
ZSB3ZSBjYW4gcmVhZCB0aGlzIG1lbW9yeS4KKyAgICBBTkdMRV9WS19DSEVDSygobWVtb3J5UmVx
dWlyZW1lbnRzLm1lbW9yeVR5cGVCaXRzICYgKDEgPDwgaG9zdFZpc2libGVNZW1vcnlJbmRleCkp
ICE9IDAsCisgICAgICAgICAgICAgICAgICAgVktfRVJST1JfVkFMSURBVElPTl9GQUlMRURfRVhU
KTsKKworICAgIFZrTWVtb3J5QWxsb2NhdGVJbmZvIGFsbG9jYXRlSW5mbzsKKyAgICBhbGxvY2F0
ZUluZm8uc1R5cGUgICAgICAgICAgID0gVktfU1RSVUNUVVJFX1RZUEVfTUVNT1JZX0FMTE9DQVRF
X0lORk87CisgICAgYWxsb2NhdGVJbmZvLnBOZXh0ICAgICAgICAgICA9IG51bGxwdHI7CisgICAg
YWxsb2NhdGVJbmZvLmFsbG9jYXRpb25TaXplICA9IG1lbW9yeVJlcXVpcmVtZW50cy5zaXplOwor
ICAgIGFsbG9jYXRlSW5mby5tZW1vcnlUeXBlSW5kZXggPSBob3N0VmlzaWJsZU1lbW9yeUluZGV4
OworCisgICAgQU5HTEVfVFJZKG1EZXZpY2VNZW1vcnkuYWxsb2NhdGUoZGV2aWNlLCBhbGxvY2F0
ZUluZm8pKTsKKyAgICBBTkdMRV9UUlkobUltYWdlLmJpbmRNZW1vcnkoZGV2aWNlLCBtRGV2aWNl
TWVtb3J5KSk7CisKKyAgICBtU2l6ZSA9IG1lbW9yeVJlcXVpcmVtZW50cy5zaXplOworCisgICAg
cmV0dXJuIE5vRXJyb3IoKTsKK30KKworLy8gQnVmZmVyIGltcGxlbWVudGF0aW9uLgorQnVmZmVy
OjpCdWZmZXIoKQoreworfQorCit2b2lkIEJ1ZmZlcjo6ZGVzdHJveShWa0RldmljZSBkZXZpY2Up
Cit7CisgICAgaWYgKHZhbGlkKCkpCisgICAgeworICAgICAgICBtTWVtb3J5LmRlc3Ryb3koZGV2
aWNlKTsKKworICAgICAgICB2a0Rlc3Ryb3lCdWZmZXIoZGV2aWNlLCBtSGFuZGxlLCBudWxscHRy
KTsKKyAgICAgICAgbUhhbmRsZSA9IFZLX05VTExfSEFORExFOworICAgIH0KK30KKwordm9pZCBC
dWZmZXI6OnJldGFpbihWa0RldmljZSBkZXZpY2UsIEJ1ZmZlciAmJm90aGVyKQoreworICAgIFdy
YXBwZWRPYmplY3Q6OnJldGFpbihkZXZpY2UsIHN0ZDo6bW92ZShvdGhlcikpOworICAgIG1NZW1v
cnkucmV0YWluKGRldmljZSwgc3RkOjptb3ZlKG90aGVyLm1NZW1vcnkpKTsKK30KKworRXJyb3Ig
QnVmZmVyOjppbml0KFZrRGV2aWNlIGRldmljZSwgY29uc3QgVmtCdWZmZXJDcmVhdGVJbmZvICZj
cmVhdGVJbmZvKQoreworICAgIEFTU0VSVCghdmFsaWQoKSk7CisgICAgQU5HTEVfVktfVFJZKHZr
Q3JlYXRlQnVmZmVyKGRldmljZSwgJmNyZWF0ZUluZm8sIG51bGxwdHIsICZtSGFuZGxlKSk7Cisg
ICAgcmV0dXJuIE5vRXJyb3IoKTsKK30KKworRXJyb3IgQnVmZmVyOjpiaW5kTWVtb3J5KFZrRGV2
aWNlIGRldmljZSkKK3sKKyAgICBBU1NFUlQodmFsaWQoKSAmJiBtTWVtb3J5LnZhbGlkKCkpOwor
ICAgIEFOR0xFX1ZLX1RSWSh2a0JpbmRCdWZmZXJNZW1vcnkoZGV2aWNlLCBtSGFuZGxlLCBtTWVt
b3J5LmdldEhhbmRsZSgpLCAwKSk7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKK30KKworLy8gU2hh
ZGVyTW9kdWxlIGltcGxlbWVudGF0aW9uLgorU2hhZGVyTW9kdWxlOjpTaGFkZXJNb2R1bGUoKQor
eworfQorCit2b2lkIFNoYWRlck1vZHVsZTo6ZGVzdHJveShWa0RldmljZSBkZXZpY2UpCit7Cisg
ICAgaWYgKG1IYW5kbGUgIT0gVktfTlVMTF9IQU5ETEUpCisgICAgeworICAgICAgICB2a0Rlc3Ry
b3lTaGFkZXJNb2R1bGUoZGV2aWNlLCBtSGFuZGxlLCBudWxscHRyKTsKKyAgICAgICAgbUhhbmRs
ZSA9IFZLX05VTExfSEFORExFOworICAgIH0KK30KKworRXJyb3IgU2hhZGVyTW9kdWxlOjppbml0
KFZrRGV2aWNlIGRldmljZSwgY29uc3QgVmtTaGFkZXJNb2R1bGVDcmVhdGVJbmZvICZjcmVhdGVJ
bmZvKQoreworICAgIEFTU0VSVCghdmFsaWQoKSk7CisgICAgQU5HTEVfVktfVFJZKHZrQ3JlYXRl
U2hhZGVyTW9kdWxlKGRldmljZSwgJmNyZWF0ZUluZm8sIG51bGxwdHIsICZtSGFuZGxlKSk7Cisg
ICAgcmV0dXJuIE5vRXJyb3IoKTsKK30KKworLy8gUGlwZWxpbmUgaW1wbGVtZW50YXRpb24uCitQ
aXBlbGluZTo6UGlwZWxpbmUoKQoreworfQorCit2b2lkIFBpcGVsaW5lOjpkZXN0cm95KFZrRGV2
aWNlIGRldmljZSkKK3sKKyAgICBpZiAodmFsaWQoKSkKKyAgICB7CisgICAgICAgIHZrRGVzdHJv
eVBpcGVsaW5lKGRldmljZSwgbUhhbmRsZSwgbnVsbHB0cik7CisgICAgICAgIG1IYW5kbGUgPSBW
S19OVUxMX0hBTkRMRTsKKyAgICB9Cit9CisKK0Vycm9yIFBpcGVsaW5lOjppbml0R3JhcGhpY3Mo
VmtEZXZpY2UgZGV2aWNlLCBjb25zdCBWa0dyYXBoaWNzUGlwZWxpbmVDcmVhdGVJbmZvICZjcmVh
dGVJbmZvKQoreworICAgIEFTU0VSVCghdmFsaWQoKSk7CisgICAgQU5HTEVfVktfVFJZKAorICAg
ICAgICB2a0NyZWF0ZUdyYXBoaWNzUGlwZWxpbmVzKGRldmljZSwgVktfTlVMTF9IQU5ETEUsIDEs
ICZjcmVhdGVJbmZvLCBudWxscHRyLCAmbUhhbmRsZSkpOworICAgIHJldHVybiBOb0Vycm9yKCk7
Cit9CisKKy8vIFBpcGVsaW5lTGF5b3V0IGltcGxlbWVudGF0aW9uLgorUGlwZWxpbmVMYXlvdXQ6
OlBpcGVsaW5lTGF5b3V0KCkKK3sKK30KKwordm9pZCBQaXBlbGluZUxheW91dDo6ZGVzdHJveShW
a0RldmljZSBkZXZpY2UpCit7CisgICAgaWYgKHZhbGlkKCkpCisgICAgeworICAgICAgICB2a0Rl
c3Ryb3lQaXBlbGluZUxheW91dChkZXZpY2UsIG1IYW5kbGUsIG51bGxwdHIpOworICAgICAgICBt
SGFuZGxlID0gVktfTlVMTF9IQU5ETEU7CisgICAgfQorfQorCitFcnJvciBQaXBlbGluZUxheW91
dDo6aW5pdChWa0RldmljZSBkZXZpY2UsIGNvbnN0IFZrUGlwZWxpbmVMYXlvdXRDcmVhdGVJbmZv
ICZjcmVhdGVJbmZvKQoreworICAgIEFTU0VSVCghdmFsaWQoKSk7CisgICAgQU5HTEVfVktfVFJZ
KHZrQ3JlYXRlUGlwZWxpbmVMYXlvdXQoZGV2aWNlLCAmY3JlYXRlSW5mbywgbnVsbHB0ciwgJm1I
YW5kbGUpKTsKKyAgICByZXR1cm4gTm9FcnJvcigpOworfQorCisvLyBGZW5jZSBpbXBsZW1lbnRh
dGlvbi4KK0ZlbmNlOjpGZW5jZSgpCit7Cit9CisKK3ZvaWQgRmVuY2U6OmRlc3Ryb3koVmtEZXZp
Y2UgZGV2aWNlKQoreworICAgIGlmICh2YWxpZCgpKQorICAgIHsKKyAgICAgICAgdmtEZXN0cm95
RmVuY2UoZGV2aWNlLCBtSGFuZGxlLCBudWxscHRyKTsKKyAgICAgICAgbUhhbmRsZSA9IFZLX05V
TExfSEFORExFOworICAgIH0KK30KKworRXJyb3IgRmVuY2U6OmluaXQoVmtEZXZpY2UgZGV2aWNl
LCBjb25zdCBWa0ZlbmNlQ3JlYXRlSW5mbyAmY3JlYXRlSW5mbykKK3sKKyAgICBBU1NFUlQoIXZh
bGlkKCkpOworICAgIEFOR0xFX1ZLX1RSWSh2a0NyZWF0ZUZlbmNlKGRldmljZSwgJmNyZWF0ZUlu
Zm8sIG51bGxwdHIsICZtSGFuZGxlKSk7CisgICAgcmV0dXJuIE5vRXJyb3IoKTsKK30KKworVmtS
ZXN1bHQgRmVuY2U6OmdldFN0YXR1cyhWa0RldmljZSBkZXZpY2UpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHZrR2V0RmVuY2VTdGF0dXMoZGV2aWNlLCBtSGFuZGxlKTsKK30KKworLy8gRmVuY2VBbmRD
b21tYW5kQnVmZmVyIGltcGxlbWVudGF0aW9uLgorRmVuY2VBbmRDb21tYW5kQnVmZmVyOjpGZW5j
ZUFuZENvbW1hbmRCdWZmZXIoU2VyaWFsIHF1ZXVlU2VyaWFsLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRmVuY2UgJiZmZW5jZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRCdWZmZXIgJiZjb21tYW5kQnVm
ZmVyKQorICAgIDogbVF1ZXVlU2VyaWFsKHF1ZXVlU2VyaWFsKSwgbUZlbmNlKHN0ZDo6bW92ZShm
ZW5jZSkpLCBtQ29tbWFuZEJ1ZmZlcihzdGQ6Om1vdmUoY29tbWFuZEJ1ZmZlcikpCit7Cit9CisK
K0ZlbmNlQW5kQ29tbWFuZEJ1ZmZlcjo6RmVuY2VBbmRDb21tYW5kQnVmZmVyKEZlbmNlQW5kQ29t
bWFuZEJ1ZmZlciAmJm90aGVyKQorICAgIDogbVF1ZXVlU2VyaWFsKHN0ZDo6bW92ZShvdGhlci5t
UXVldWVTZXJpYWwpKSwKKyAgICAgIG1GZW5jZShzdGQ6Om1vdmUob3RoZXIubUZlbmNlKSksCisg
ICAgICBtQ29tbWFuZEJ1ZmZlcihzdGQ6Om1vdmUob3RoZXIubUNvbW1hbmRCdWZmZXIpKQorewor
fQorCit2b2lkIEZlbmNlQW5kQ29tbWFuZEJ1ZmZlcjo6ZGVzdHJveShWa0RldmljZSBkZXZpY2Up
Cit7CisgICAgbUZlbmNlLmRlc3Ryb3koZGV2aWNlKTsKKyAgICBtQ29tbWFuZEJ1ZmZlci5kZXN0
cm95KGRldmljZSk7Cit9CisKK3ZrOjpFcnJvck9yUmVzdWx0PGJvb2w+IEZlbmNlQW5kQ29tbWFu
ZEJ1ZmZlcjo6ZmluaXNoZWQoVmtEZXZpY2UgZGV2aWNlKSBjb25zdAoreworICAgIFZrUmVzdWx0
IHJlc3VsdCA9IG1GZW5jZS5nZXRTdGF0dXMoZGV2aWNlKTsKKyAgICAvLyBTaG91bGQgdGhpcyBi
ZSBhIHBhcnQgb2YgQU5HTEVfVktfVFJZPworICAgIGlmIChyZXN1bHQgPT0gVktfTk9UX1JFQURZ
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBBTkdMRV9WS19UUlko
cmVzdWx0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworRmVuY2VBbmRDb21tYW5kQnVmZmVyICZG
ZW5jZUFuZENvbW1hbmRCdWZmZXI6Om9wZXJhdG9yPShGZW5jZUFuZENvbW1hbmRCdWZmZXIgJiZv
dGhlcikKK3sKKyAgICBzdGQ6OnN3YXAobVF1ZXVlU2VyaWFsLCBvdGhlci5tUXVldWVTZXJpYWwp
OworICAgIG1GZW5jZSAgICAgICAgID0gc3RkOjptb3ZlKG90aGVyLm1GZW5jZSk7CisgICAgbUNv
bW1hbmRCdWZmZXIgPSBzdGQ6Om1vdmUob3RoZXIubUNvbW1hbmRCdWZmZXIpOworICAgIHJldHVy
biAqdGhpczsKK30KKworfSAgLy8gbmFtZXNwYWNlIHZrCisKK09wdGlvbmFsPHVpbnQzMl90PiBG
aW5kTWVtb3J5VHlwZShjb25zdCBWa1BoeXNpY2FsRGV2aWNlTWVtb3J5UHJvcGVydGllcyAmbWVt
b3J5UHJvcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmtNZW1v
cnlSZXF1aXJlbWVudHMgJnJlcXVpcmVtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1aW50MzJfdCBwcm9wZXJ0eUZsYWdNYXNrKQoreworICAgIGZvciAodWludDMyX3Qg
dHlwZUluZGV4ID0gMDsgdHlwZUluZGV4IDwgbWVtb3J5UHJvcHMubWVtb3J5VHlwZUNvdW50OyAr
K3R5cGVJbmRleCkKKyAgICB7CisgICAgICAgIGlmICgocmVxdWlyZW1lbnRzLm1lbW9yeVR5cGVC
aXRzICYgKDF1IDw8IHR5cGVJbmRleCkpICE9IDAgJiYKKyAgICAgICAgICAgICgobWVtb3J5UHJv
cHMubWVtb3J5VHlwZXNbdHlwZUluZGV4XS5wcm9wZXJ0eUZsYWdzICYgcHJvcGVydHlGbGFnTWFz
aykgPT0KKyAgICAgICAgICAgICBwcm9wZXJ0eUZsYWdNYXNrKSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIHR5cGVJbmRleDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBP
cHRpb25hbDx1aW50MzJfdD46OkludmFsaWQoKTsKK30KKworbmFtZXNwYWNlIGdsX3ZrCit7CitW
a1ByaW1pdGl2ZVRvcG9sb2d5IEdldFByaW1pdGl2ZVRvcG9sb2d5KEdMZW51bSBtb2RlKQorewor
ICAgIHN3aXRjaCAobW9kZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVFJJQU5HTEVTOgorICAg
ICAgICAgICAgcmV0dXJuIFZLX1BSSU1JVElWRV9UT1BPTE9HWV9UUklBTkdMRV9MSVNUOworICAg
ICAgICBjYXNlIEdMX1BPSU5UUzoKKyAgICAgICAgICAgIHJldHVybiBWS19QUklNSVRJVkVfVE9Q
T0xPR1lfUE9JTlRfTElTVDsKKyAgICAgICAgY2FzZSBHTF9MSU5FUzoKKyAgICAgICAgICAgIHJl
dHVybiBWS19QUklNSVRJVkVfVE9QT0xPR1lfTElORV9MSVNUOworICAgICAgICBjYXNlIEdMX0xJ
TkVfU1RSSVA6CisgICAgICAgICAgICByZXR1cm4gVktfUFJJTUlUSVZFX1RPUE9MT0dZX0xJTkVf
U1RSSVA7CisgICAgICAgIGNhc2UgR0xfVFJJQU5HTEVfRkFOOgorICAgICAgICAgICAgcmV0dXJu
IFZLX1BSSU1JVElWRV9UT1BPTE9HWV9UUklBTkdMRV9GQU47CisgICAgICAgIGNhc2UgR0xfVFJJ
QU5HTEVfU1RSSVA6CisgICAgICAgICAgICByZXR1cm4gVktfUFJJTUlUSVZFX1RPUE9MT0dZX1RS
SUFOR0xFX1NUUklQOworICAgICAgICBjYXNlIEdMX0xJTkVfTE9PUDoKKyAgICAgICAgICAgIC8v
IFRPRE8oam1hZGlsbCk6IEltcGxlbWVudCBsaW5lIGxvb3Agc3VwcG9ydC4KKyAgICAgICAgICAg
IFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgICAgIHJldHVybiBWS19QUklNSVRJVkVfVE9QT0xP
R1lfTElORV9TVFJJUDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxF
KCk7CisgICAgICAgICAgICByZXR1cm4gVktfUFJJTUlUSVZFX1RPUE9MT0dZX1BPSU5UX0xJU1Q7
CisgICAgfQorfQorCitWa0N1bGxNb2RlRmxhZ3MgR2V0Q3VsbE1vZGUoY29uc3QgZ2w6OlJhc3Rl
cml6ZXJTdGF0ZSAmcmFzdGVyU3RhdGUpCit7CisgICAgaWYgKCFyYXN0ZXJTdGF0ZS5jdWxsRmFj
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBWS19DVUxMX01PREVfTk9ORTsKKyAgICB9CisKKyAg
ICBzd2l0Y2ggKHJhc3RlclN0YXRlLmN1bGxNb2RlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9G
Uk9OVDoKKyAgICAgICAgICAgIHJldHVybiBWS19DVUxMX01PREVfRlJPTlRfQklUOworICAgICAg
ICBjYXNlIEdMX0JBQ0s6CisgICAgICAgICAgICByZXR1cm4gVktfQ1VMTF9NT0RFX0JBQ0tfQklU
OworICAgICAgICBjYXNlIEdMX0ZST05UX0FORF9CQUNLOgorICAgICAgICAgICAgcmV0dXJuIFZL
X0NVTExfTU9ERV9GUk9OVF9BTkRfQkFDSzsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gVktfQ1VMTF9NT0RFX05PTkU7Cisg
ICAgfQorfQorCitWa0Zyb250RmFjZSBHZXRGcm9udEZhY2UoR0xlbnVtIGZyb250RmFjZSkKK3sK
KyAgICBzd2l0Y2ggKGZyb250RmFjZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfQ1c6CisgICAg
ICAgICAgICByZXR1cm4gVktfRlJPTlRfRkFDRV9DTE9DS1dJU0U7CisgICAgICAgIGNhc2UgR0xf
Q0NXOgorICAgICAgICAgICAgcmV0dXJuIFZLX0ZST05UX0ZBQ0VfQ09VTlRFUl9DTE9DS1dJU0U7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOworICAgICAgICAg
ICAgcmV0dXJuIFZLX0ZST05UX0ZBQ0VfQ09VTlRFUl9DTE9DS1dJU0U7CisgICAgfQorfQorCit9
ICAvLyBuYW1lc3BhY2UgZ2xfdmsKKworfSAgLy8gbmFtZXNwYWNlIHJ4CisKK3N0ZDo6b3N0cmVh
bSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJnN0cmVhbSwgY29uc3Qgcng6OnZrOjpFcnJvciAm
ZXJyb3IpCit7CisgICAgc3RyZWFtIDw8IGVycm9yLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIHN0
cmVhbTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vcmVuZGVyZXJ2a191dGlscy5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9yZW5kZXJlcnZrX3V0aWxzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIzMTA2OTliYWJkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9yZW5kZXJlcnZrX3V0aWxzLmgKQEAgLTAsMCArMSw1MDYgQEAKKy8vCisvLyBDb3B5
cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisv
LyByZW5kZXJlcnZrX3V0aWxzOgorLy8gICAgSGVscGVyIGZ1bmN0aW9ucyBmb3IgdGhlIFZ1bGth
biBSZW5kZXJlci4KKy8vCisKKyNpZm5kZWYgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1JFTkRF
UkVSVktfVVRJTFNfSF8KKyNkZWZpbmUgTElCQU5HTEVfUkVOREVSRVJfVlVMS0FOX1JFTkRFUkVS
VktfVVRJTFNfSF8KKworI2luY2x1ZGUgPHZ1bGthbi92dWxrYW4uaD4KKworI2luY2x1ZGUgImNv
bW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImNvbW1vbi9PcHRpb25hbC5oIgorI2luY2x1ZGUgImxp
YkFOR0xFL0Vycm9yLmgiCisKK25hbWVzcGFjZSBnbAoreworc3RydWN0IEJveDsKK3N0cnVjdCBF
eHRlbnRzOworc3RydWN0IFJhc3Rlcml6ZXJTdGF0ZTsKK3N0cnVjdCBSZWN0YW5nbGU7Cit9CisK
K25hbWVzcGFjZSByeAoreworY29uc3QgY2hhciAqVnVsa2FuUmVzdWx0U3RyaW5nKFZrUmVzdWx0
IHJlc3VsdCk7Citib29sIEhhc1N0YW5kYXJkVmFsaWRhdGlvbkxheWVyKGNvbnN0IHN0ZDo6dmVj
dG9yPFZrTGF5ZXJQcm9wZXJ0aWVzPiAmbGF5ZXJQcm9wcyk7CisKK2V4dGVybiBjb25zdCBjaGFy
ICpnX1ZrU3RkVmFsaWRhdGlvbkxheWVyTmFtZTsKKworZW51bSBjbGFzcyBUZXh0dXJlRGltZW5z
aW9uCit7CisgICAgVEVYXzJELAorICAgIFRFWF9DVUJFLAorICAgIFRFWF8zRCwKKyAgICBURVhf
MkRfQVJSQVksCit9OworCitlbnVtIERlbGV0ZVNjaGVkdWxlCit7CisgICAgTk9XLAorICAgIExB
VEVSLAorfTsKKworLy8gQSBzZXJpYWwgc3VwcG9ydHMgYSBmZXcgb3BlcmF0aW9ucyAtIGNvbXBh
cmlzb24sIGluY3JlbWVudCwgYW5kIGFzc2lnbm1lbnQuCisvLyBUT0RPKGptYWRpbGwpOiBWZXJp
ZnkgaXQncyBub3QgZWFzeSB0byBvdmVyZmxvdyB0aGUgcXVldWUgc2VyaWFsLgorY2xhc3MgU2Vy
aWFsIGZpbmFsCit7CisgIHB1YmxpYzoKKyAgICBTZXJpYWwoKSA6IG1WYWx1ZSgwKSB7fQorICAg
IFNlcmlhbChjb25zdCBTZXJpYWwgJm90aGVyKSA6IG1WYWx1ZShvdGhlci5tVmFsdWUpIHt9Cisg
ICAgU2VyaWFsKFNlcmlhbCAmJm90aGVyKSA6IG1WYWx1ZShvdGhlci5tVmFsdWUpIHsgb3RoZXIu
bVZhbHVlID0gMDsgfQorICAgIFNlcmlhbCAmb3BlcmF0b3I9KGNvbnN0IFNlcmlhbCAmb3RoZXIp
CisgICAgeworICAgICAgICBtVmFsdWUgPSBvdGhlci5tVmFsdWU7CisgICAgICAgIHJldHVybiAq
dGhpczsKKyAgICB9CisgICAgYm9vbCBvcGVyYXRvcj49KFNlcmlhbCBvdGhlcikgY29uc3QgeyBy
ZXR1cm4gbVZhbHVlID49IG90aGVyLm1WYWx1ZTsgfQorICAgIGJvb2wgb3BlcmF0b3I+KFNlcmlh
bCBvdGhlcikgY29uc3QgeyByZXR1cm4gbVZhbHVlID4gb3RoZXIubVZhbHVlOyB9CisKKyAgICAv
LyBUaGlzIGZ1bmN0aW9uIGZhaWxzIGlmIHdlJ3JlIGF0IHRoZSBsaW1pdHMgb2Ygb3VyIGNvdW50
aW5nLgorICAgIGJvb2wgb3BlcmF0b3IrKygpCisgICAgeworICAgICAgICBpZiAobVZhbHVlID09
IHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgbVZhbHVlKys7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KworICBwcml2YXRlOgorICAgIHVpbnQzMl90IG1WYWx1ZTsKK307CisKKy8vIFRoaXMgaXMgYSBz
bWFsbCBoZWxwZXIgbWl4aW4gZm9yIGFueSBHTCBvYmplY3QgdXNlZCBpbiBWayBjb21tYW5kIGJ1
ZmZlcnMuIEl0IHJlY29yZHMgYSBzZXJpYWwKKy8vIGF0IGNvbW1hbmQgc3VibWlzc2lvbiB0aW1l
cyBpbmRpY2F0aW5nIGl0J3Mgb3JkZXIgaW4gdGhlIHF1ZXVlLiBXZSB3aWxsIHVzZSBGZW5jZXMg
dG8gZGV0ZWN0CisvLyB3aGVuIGNvbW1hbmRzIGFyZSBmaW5pc2hlZCwgYW5kIHRoZW4gaGFuZGxl
IGxpZmV0aW1lIG1hbmFnZW1lbnQgZm9yIHRoZSByZXNvdXJjZXMuCisvLyBOb3RlIHRoYXQgd2Ug
dXNlIGEgcXVldWUgb3JkZXIgc2VyaWFsIGluc3RlYWQgb2YgYSBjb21tYW5kIGJ1ZmZlciBpZCBz
ZXJpYWwgc2luY2UgYSBxdWV1ZSBjYW4KKy8vIHN1Ym1pdCBtdWx0aXBsZSBjb21tYW5kIGJ1ZmZl
cnMgaW4gb25lIEFQSSBjYWxsLgorY2xhc3MgUmVzb3VyY2VWaworeworICBwdWJsaWM6CisgICAg
dm9pZCBzZXRRdWV1ZVNlcmlhbChTZXJpYWwgcXVldWVTZXJpYWwpCisgICAgeworICAgICAgICBB
U1NFUlQocXVldWVTZXJpYWwgPj0gbVN0b3JlZFF1ZXVlU2VyaWFsKTsKKyAgICAgICAgbVN0b3Jl
ZFF1ZXVlU2VyaWFsID0gcXVldWVTZXJpYWw7CisgICAgfQorCisgICAgRGVsZXRlU2NoZWR1bGUg
Z2V0RGVsZXRlU2NoZWR1bGUoU2VyaWFsIGxhc3RDb21wbGV0ZWRRdWV1ZVNlcmlhbCkgY29uc3QK
KyAgICB7CisgICAgICAgIGlmIChsYXN0Q29tcGxldGVkUXVldWVTZXJpYWwgPj0gbVN0b3JlZFF1
ZXVlU2VyaWFsKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gRGVsZXRlU2NoZWR1bGU6
Ok5PVzsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBEZWxldGVTY2hlZHVsZTo6TEFURVI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBTZXJp
YWwgZ2V0U3RvcmVkUXVldWVTZXJpYWwoKSBjb25zdCB7IHJldHVybiBtU3RvcmVkUXVldWVTZXJp
YWw7IH0KKworICBwcml2YXRlOgorICAgIFNlcmlhbCBtU3RvcmVkUXVldWVTZXJpYWw7Cit9Owor
CituYW1lc3BhY2UgdmsKK3sKK2NsYXNzIERldmljZU1lbW9yeTsKK2NsYXNzIEZyYW1lYnVmZmVy
OworY2xhc3MgSW1hZ2U7CitjbGFzcyBQaXBlbGluZTsKK2NsYXNzIFJlbmRlclBhc3M7CisKK2Ns
YXNzIEVycm9yIGZpbmFsCit7CisgIHB1YmxpYzoKKyAgICBFcnJvcihWa1Jlc3VsdCByZXN1bHQp
OworICAgIEVycm9yKFZrUmVzdWx0IHJlc3VsdCwgY29uc3QgY2hhciAqZmlsZSwgdW5zaWduZWQg
aW50IGxpbmUpOworICAgIH5FcnJvcigpOworCisgICAgRXJyb3IoY29uc3QgRXJyb3IgJm90aGVy
KTsKKyAgICBFcnJvciAmb3BlcmF0b3I9KGNvbnN0IEVycm9yICZvdGhlcik7CisKKyAgICBnbDo6
RXJyb3IgdG9HTChHTGVudW0gZ2xFcnJvckNvZGUpIGNvbnN0OworICAgIGVnbDo6RXJyb3IgdG9F
R0woRUdMaW50IGVnbEVycm9yQ29kZSkgY29uc3Q7CisKKyAgICBvcGVyYXRvciBnbDo6RXJyb3Io
KSBjb25zdDsKKyAgICBvcGVyYXRvciBlZ2w6OkVycm9yKCkgY29uc3Q7CisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CisgICAgb3BlcmF0b3IgZ2w6OkVycm9yT3JSZXN1bHQ8VD4oKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGdsOjpFcnJvcj4oKnRoaXMpOworICAg
IH0KKworICAgIGJvb2wgaXNFcnJvcigpIGNvbnN0OworCisgICAgc3RkOjpzdHJpbmcgdG9TdHJp
bmcoKSBjb25zdDsKKworICBwcml2YXRlOgorICAgIFZrUmVzdWx0IG1SZXN1bHQ7CisgICAgY29u
c3QgY2hhciAqbUZpbGU7CisgICAgdW5zaWduZWQgaW50IG1MaW5lOworfTsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFJlc3VsdFQ+Cit1c2luZyBFcnJvck9yUmVzdWx0ID0gYW5nbGU6OkVycm9yT3JS
ZXN1bHRCYXNlPEVycm9yLCBSZXN1bHRULCBWa1Jlc3VsdCwgVktfU1VDQ0VTUz47CisKKy8vIEF2
b2lkIGNvbmZsaWN0aW5nIHdpdGggWCBoZWFkZXJzIHdoaWNoIGRlZmluZSAiU3VjY2VzcyIuCitp
bmxpbmUgRXJyb3IgTm9FcnJvcigpCit7CisgICAgcmV0dXJuIEVycm9yKFZLX1NVQ0NFU1MpOwor
fQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRGVyaXZlZFQsIHR5cGVuYW1lIEhhbmRsZVQ+CitjbGFz
cyBXcmFwcGVkT2JqZWN0IDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAgICBI
YW5kbGVUIGdldEhhbmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1IYW5kbGU7IH0KKyAgICBib29sIHZh
bGlkKCkgY29uc3QgeyByZXR1cm4gKG1IYW5kbGUgIT0gVktfTlVMTF9IQU5ETEUpOyB9CisKKyAg
ICBjb25zdCBIYW5kbGVUICpwdHIoKSBjb25zdCB7IHJldHVybiAmbUhhbmRsZTsgfQorCisgIHBy
b3RlY3RlZDoKKyAgICBXcmFwcGVkT2JqZWN0KCkgOiBtSGFuZGxlKFZLX05VTExfSEFORExFKSB7
fQorICAgIFdyYXBwZWRPYmplY3QoSGFuZGxlVCBoYW5kbGUpIDogbUhhbmRsZShoYW5kbGUpIHt9
CisgICAgfldyYXBwZWRPYmplY3QoKSB7IEFTU0VSVCghdmFsaWQoKSk7IH0KKworICAgIFdyYXBw
ZWRPYmplY3QoV3JhcHBlZE9iamVjdCAmJm90aGVyKSA6IG1IYW5kbGUob3RoZXIubUhhbmRsZSkK
KyAgICB7CisgICAgICAgIG90aGVyLm1IYW5kbGUgPSBWS19OVUxMX0hBTkRMRTsKKyAgICB9CisK
KyAgICAvLyBPbmx5IHdvcmtzIHRvIGluaXRpYWxpemUgZW1wdHkgb2JqZWN0cywgc2luY2Ugd2Ug
ZG9uJ3QgaGF2ZSB0aGUgZGV2aWNlIGhhbmRsZS4KKyAgICBXcmFwcGVkT2JqZWN0ICZvcGVyYXRv
cj0oV3JhcHBlZE9iamVjdCAmJm90aGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCF2YWxpZCgp
KTsKKyAgICAgICAgc3RkOjpzd2FwKG1IYW5kbGUsIG90aGVyLm1IYW5kbGUpOworICAgICAgICBy
ZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgdm9pZCByZXRhaW4oVmtEZXZpY2UgZGV2aWNlLCBE
ZXJpdmVkVCAmJm90aGVyKQorICAgIHsKKyAgICAgICAgaWYgKHZhbGlkKCkpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHN0YXRpY19jYXN0PERlcml2ZWRUICo+KHRoaXMpLT5kZXN0cm95KGRldmlj
ZSk7CisgICAgICAgIH0KKyAgICAgICAgc3RkOjpzd2FwKG1IYW5kbGUsIG90aGVyLm1IYW5kbGUp
OworICAgIH0KKworICAgIEhhbmRsZVQgbUhhbmRsZTsKK307CisKK2NsYXNzIENvbW1hbmRQb29s
IGZpbmFsIDogcHVibGljIFdyYXBwZWRPYmplY3Q8Q29tbWFuZFBvb2wsIFZrQ29tbWFuZFBvb2w+
Cit7CisgIHB1YmxpYzoKKyAgICBDb21tYW5kUG9vbCgpOworCisgICAgdm9pZCBkZXN0cm95KFZr
RGV2aWNlIGRldmljZSk7CisKKyAgICBFcnJvciBpbml0KFZrRGV2aWNlIGRldmljZSwgY29uc3Qg
VmtDb21tYW5kUG9vbENyZWF0ZUluZm8gJmNyZWF0ZUluZm8pOworfTsKKworLy8gSGVscGVyIGNs
YXNzIHRoYXQgd3JhcHMgYSBWdWxrYW4gY29tbWFuZCBidWZmZXIuCitjbGFzcyBDb21tYW5kQnVm
ZmVyIGZpbmFsIDogcHVibGljIFdyYXBwZWRPYmplY3Q8Q29tbWFuZEJ1ZmZlciwgVmtDb21tYW5k
QnVmZmVyPgoreworICBwdWJsaWM6CisgICAgQ29tbWFuZEJ1ZmZlcigpOworCisgICAgdm9pZCBk
ZXN0cm95KFZrRGV2aWNlIGRldmljZSk7CisgICAgdXNpbmcgV3JhcHBlZE9iamVjdDo6b3BlcmF0
b3I9OworCisgICAgdm9pZCBzZXRDb21tYW5kUG9vbChDb21tYW5kUG9vbCAqY29tbWFuZFBvb2wp
OworICAgIEVycm9yIGJlZ2luKFZrRGV2aWNlIGRldmljZSk7CisgICAgRXJyb3IgZW5kKCk7Cisg
ICAgRXJyb3IgcmVzZXQoKTsKKworICAgIHZvaWQgc2luZ2xlSW1hZ2VCYXJyaWVyKFZrUGlwZWxp
bmVTdGFnZUZsYWdzIHNyY1N0YWdlTWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBW
a1BpcGVsaW5lU3RhZ2VGbGFncyBkc3RTdGFnZU1hc2ssCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVmtEZXBlbmRlbmN5RmxhZ3MgZGVwZW5kZW5jeUZsYWdzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IFZrSW1hZ2VNZW1vcnlCYXJyaWVyICZpbWFnZU1lbW9yeUJhcnJp
ZXIpOworCisgICAgdm9pZCBjbGVhclNpbmdsZUNvbG9ySW1hZ2UoY29uc3Qgdms6OkltYWdlICZp
bWFnZSwgY29uc3QgVmtDbGVhckNvbG9yVmFsdWUgJmNvbG9yKTsKKworICAgIHZvaWQgY29weVNp
bmdsZUltYWdlKGNvbnN0IHZrOjpJbWFnZSAmc3JjSW1hZ2UsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgdms6OkltYWdlICZkZXN0SW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2w6OkJveCAmY29weVJlZ2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBW
a0ltYWdlQXNwZWN0RmxhZ3MgYXNwZWN0TWFzayk7CisKKyAgICB2b2lkIGJlZ2luUmVuZGVyUGFz
cyhjb25zdCBSZW5kZXJQYXNzICZyZW5kZXJQYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEZyYW1lYnVmZmVyICZmcmFtZWJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnbDo6UmVjdGFuZ2xlICZyZW5kZXJBcmVhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6dmVjdG9yPFZrQ2xlYXJWYWx1ZT4gJmNsZWFyVmFsdWVzKTsKKyAgICB2
b2lkIGVuZFJlbmRlclBhc3MoKTsKKworICAgIHZvaWQgZHJhdyh1aW50MzJfdCB2ZXJ0ZXhDb3Vu
dCwKKyAgICAgICAgICAgICAgdWludDMyX3QgaW5zdGFuY2VDb3VudCwKKyAgICAgICAgICAgICAg
dWludDMyX3QgZmlyc3RWZXJ0ZXgsCisgICAgICAgICAgICAgIHVpbnQzMl90IGZpcnN0SW5zdGFu
Y2UpOworCisgICAgdm9pZCBiaW5kUGlwZWxpbmUoVmtQaXBlbGluZUJpbmRQb2ludCBwaXBlbGlu
ZUJpbmRQb2ludCwgY29uc3Qgdms6OlBpcGVsaW5lICZwaXBlbGluZSk7CisgICAgdm9pZCBiaW5k
VmVydGV4QnVmZmVycyh1aW50MzJfdCBmaXJzdEJpbmRpbmcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWa0J1ZmZlcj4gJmJ1ZmZlcnMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxWa0RldmljZVNpemU+ICZvZmZzZXRz
KTsKKworICBwcml2YXRlOgorICAgIENvbW1hbmRQb29sICptQ29tbWFuZFBvb2w7Cit9OworCitj
bGFzcyBJbWFnZSBmaW5hbCA6IHB1YmxpYyBXcmFwcGVkT2JqZWN0PEltYWdlLCBWa0ltYWdlPgor
eworICBwdWJsaWM6CisgICAgLy8gVXNlIHRoaXMgY29uc3RydWN0b3IgaWYgdGhlIGxpZmV0aW1l
IG9mIHRoZSBpbWFnZSBpcyBub3QgY29udHJvbGxlZCBieSBBTkdMRS4gKFN3YXBDaGFpbikKKyAg
ICBJbWFnZSgpOworICAgIGV4cGxpY2l0IEltYWdlKFZrSW1hZ2UgaW1hZ2UpOworCisgICAgLy8g
Q2FsbGVkIG9uIHNodXRkb3duIHdoZW4gdGhlIGhlbHBlciBjbGFzcyAqZG9lc24ndCogb3duIHRo
ZSBoYW5kbGUgdG8gdGhlIGltYWdlIHJlc291cmNlLgorICAgIHZvaWQgcmVzZXQoKTsKKworICAg
IC8vIENhbGxlZCBvbiBzaHV0ZG93biB3aGVuIHRoZSBoZWxwZXIgY2xhc3MgKmRvZXMqIG93biB0
aGUgaGFuZGxlIHRvIHRoZSBpbWFnZSByZXNvdXJjZS4KKyAgICB2b2lkIGRlc3Ryb3koVmtEZXZp
Y2UgZGV2aWNlKTsKKworICAgIHZvaWQgcmV0YWluKFZrRGV2aWNlIGRldmljZSwgSW1hZ2UgJiZv
dGhlcik7CisKKyAgICBFcnJvciBpbml0KFZrRGV2aWNlIGRldmljZSwgY29uc3QgVmtJbWFnZUNy
ZWF0ZUluZm8gJmNyZWF0ZUluZm8pOworCisgICAgdm9pZCBjaGFuZ2VMYXlvdXRUb3AoVmtJbWFn
ZUFzcGVjdEZsYWdzIGFzcGVjdE1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgVmtJbWFn
ZUxheW91dCBuZXdMYXlvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEJ1ZmZl
ciAqY29tbWFuZEJ1ZmZlcik7CisKKyAgICB2b2lkIGNoYW5nZUxheW91dFdpdGhTdGFnZXMoVmtJ
bWFnZUFzcGVjdEZsYWdzIGFzcGVjdE1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZrSW1hZ2VMYXlvdXQgbmV3TGF5b3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWa1BpcGVsaW5lU3RhZ2VGbGFncyBzcmNTdGFnZU1hc2ssCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZrUGlwZWxpbmVTdGFnZUZsYWdzIGRzdFN0YWdlTWFzaywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZEJ1ZmZlciAqY29tbWFuZEJ1ZmZlcik7
CisKKyAgICB2b2lkIGdldE1lbW9yeVJlcXVpcmVtZW50cyhWa0RldmljZSBkZXZpY2UsIFZrTWVt
b3J5UmVxdWlyZW1lbnRzICpyZXF1aXJlbWVudHNPdXQpIGNvbnN0OworICAgIEVycm9yIGJpbmRN
ZW1vcnkoVmtEZXZpY2UgZGV2aWNlLCBjb25zdCB2azo6RGV2aWNlTWVtb3J5ICZkZXZpY2VNZW1v
cnkpOworCisgICAgVmtJbWFnZUxheW91dCBnZXRDdXJyZW50TGF5b3V0KCkgY29uc3QgeyByZXR1
cm4gbUN1cnJlbnRMYXlvdXQ7IH0KKyAgICB2b2lkIHVwZGF0ZUxheW91dChWa0ltYWdlTGF5b3V0
IGxheW91dCkgeyBtQ3VycmVudExheW91dCA9IGxheW91dDsgfQorCisgIHByaXZhdGU6CisgICAg
VmtJbWFnZUxheW91dCBtQ3VycmVudExheW91dDsKK307CisKK2NsYXNzIEltYWdlVmlldyBmaW5h
bCA6IHB1YmxpYyBXcmFwcGVkT2JqZWN0PEltYWdlVmlldywgVmtJbWFnZVZpZXc+Cit7CisgIHB1
YmxpYzoKKyAgICBJbWFnZVZpZXcoKTsKKyAgICB2b2lkIGRlc3Ryb3koVmtEZXZpY2UgZGV2aWNl
KTsKKyAgICB1c2luZyBXcmFwcGVkT2JqZWN0OjpyZXRhaW47CisKKyAgICBFcnJvciBpbml0KFZr
RGV2aWNlIGRldmljZSwgY29uc3QgVmtJbWFnZVZpZXdDcmVhdGVJbmZvICZjcmVhdGVJbmZvKTsK
K307CisKK2NsYXNzIFNlbWFwaG9yZSBmaW5hbCA6IHB1YmxpYyBXcmFwcGVkT2JqZWN0PFNlbWFw
aG9yZSwgVmtTZW1hcGhvcmU+Cit7CisgIHB1YmxpYzoKKyAgICBTZW1hcGhvcmUoKTsKKyAgICB2
b2lkIGRlc3Ryb3koVmtEZXZpY2UgZGV2aWNlKTsKKyAgICB1c2luZyBXcmFwcGVkT2JqZWN0Ojpy
ZXRhaW47CisKKyAgICBFcnJvciBpbml0KFZrRGV2aWNlIGRldmljZSk7Cit9OworCitjbGFzcyBG
cmFtZWJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBXcmFwcGVkT2JqZWN0PEZyYW1lYnVmZmVyLCBWa0Zy
YW1lYnVmZmVyPgoreworICBwdWJsaWM6CisgICAgRnJhbWVidWZmZXIoKTsKKyAgICB2b2lkIGRl
c3Ryb3koVmtEZXZpY2UgZGV2aWNlKTsKKyAgICB1c2luZyBXcmFwcGVkT2JqZWN0OjpyZXRhaW47
CisKKyAgICBFcnJvciBpbml0KFZrRGV2aWNlIGRldmljZSwgY29uc3QgVmtGcmFtZWJ1ZmZlckNy
ZWF0ZUluZm8gJmNyZWF0ZUluZm8pOworfTsKKworY2xhc3MgRGV2aWNlTWVtb3J5IGZpbmFsIDog
cHVibGljIFdyYXBwZWRPYmplY3Q8RGV2aWNlTWVtb3J5LCBWa0RldmljZU1lbW9yeT4KK3sKKyAg
cHVibGljOgorICAgIERldmljZU1lbW9yeSgpOworICAgIHZvaWQgZGVzdHJveShWa0RldmljZSBk
ZXZpY2UpOworICAgIHVzaW5nIFdyYXBwZWRPYmplY3Q6OnJldGFpbjsKKworICAgIEVycm9yIGFs
bG9jYXRlKFZrRGV2aWNlIGRldmljZSwgY29uc3QgVmtNZW1vcnlBbGxvY2F0ZUluZm8gJmFsbG9j
SW5mbyk7CisgICAgRXJyb3IgbWFwKFZrRGV2aWNlIGRldmljZSwKKyAgICAgICAgICAgICAgVmtE
ZXZpY2VTaXplIG9mZnNldCwKKyAgICAgICAgICAgICAgVmtEZXZpY2VTaXplIHNpemUsCisgICAg
ICAgICAgICAgIFZrTWVtb3J5TWFwRmxhZ3MgZmxhZ3MsCisgICAgICAgICAgICAgIHVpbnQ4X3Qg
KiptYXBQb2ludGVyKTsKKyAgICB2b2lkIHVubWFwKFZrRGV2aWNlIGRldmljZSk7Cit9OworCitj
bGFzcyBSZW5kZXJQYXNzIGZpbmFsIDogcHVibGljIFdyYXBwZWRPYmplY3Q8UmVuZGVyUGFzcywg
VmtSZW5kZXJQYXNzPgoreworICBwdWJsaWM6CisgICAgUmVuZGVyUGFzcygpOworICAgIHZvaWQg
ZGVzdHJveShWa0RldmljZSBkZXZpY2UpOworICAgIHVzaW5nIFdyYXBwZWRPYmplY3Q6OnJldGFp
bjsKKworICAgIEVycm9yIGluaXQoVmtEZXZpY2UgZGV2aWNlLCBjb25zdCBWa1JlbmRlclBhc3ND
cmVhdGVJbmZvICZjcmVhdGVJbmZvKTsKK307CisKK2NsYXNzIFN0YWdpbmdJbWFnZSBmaW5hbCA6
IGFuZ2xlOjpOb25Db3B5YWJsZQoreworICBwdWJsaWM6CisgICAgU3RhZ2luZ0ltYWdlKCk7Cisg
ICAgU3RhZ2luZ0ltYWdlKFN0YWdpbmdJbWFnZSAmJm90aGVyKTsKKyAgICB2b2lkIGRlc3Ryb3ko
VmtEZXZpY2UgZGV2aWNlKTsKKyAgICB2b2lkIHJldGFpbihWa0RldmljZSBkZXZpY2UsIFN0YWdp
bmdJbWFnZSAmJm90aGVyKTsKKworICAgIHZrOjpFcnJvciBpbml0KFZrRGV2aWNlIGRldmljZSwK
KyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBxdWV1ZUZhbWlseUluZGV4LAorICAgICAgICAg
ICAgICAgICAgIHVpbnQzMl90IGhvc3RWaXNpYmxlTWVtb3J5SW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgVGV4dHVyZURpbWVuc2lvbiBkaW1lbnNpb24sCisgICAgICAgICAgICAgICAgICAgVmtG
b3JtYXQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGdsOjpFeHRlbnRzICZleHRl
bnQpOworCisgICAgSW1hZ2UgJmdldEltYWdlKCkgeyByZXR1cm4gbUltYWdlOyB9CisgICAgY29u
c3QgSW1hZ2UgJmdldEltYWdlKCkgY29uc3QgeyByZXR1cm4gbUltYWdlOyB9CisgICAgRGV2aWNl
TWVtb3J5ICZnZXREZXZpY2VNZW1vcnkoKSB7IHJldHVybiBtRGV2aWNlTWVtb3J5OyB9CisgICAg
Y29uc3QgRGV2aWNlTWVtb3J5ICZnZXREZXZpY2VNZW1vcnkoKSBjb25zdCB7IHJldHVybiBtRGV2
aWNlTWVtb3J5OyB9CisgICAgVmtEZXZpY2VTaXplIGdldFNpemUoKSBjb25zdCB7IHJldHVybiBt
U2l6ZTsgfQorCisgIHByaXZhdGU6CisgICAgSW1hZ2UgbUltYWdlOworICAgIERldmljZU1lbW9y
eSBtRGV2aWNlTWVtb3J5OworICAgIFZrRGV2aWNlU2l6ZSBtU2l6ZTsKK307CisKK2NsYXNzIEJ1
ZmZlciBmaW5hbCA6IHB1YmxpYyBXcmFwcGVkT2JqZWN0PEJ1ZmZlciwgVmtCdWZmZXI+Cit7Cisg
IHB1YmxpYzoKKyAgICBCdWZmZXIoKTsKKyAgICB2b2lkIGRlc3Ryb3koVmtEZXZpY2UgZGV2aWNl
KTsKKyAgICB2b2lkIHJldGFpbihWa0RldmljZSBkZXZpY2UsIEJ1ZmZlciAmJm90aGVyKTsKKwor
ICAgIEVycm9yIGluaXQoVmtEZXZpY2UgZGV2aWNlLCBjb25zdCBWa0J1ZmZlckNyZWF0ZUluZm8g
JmNyZWF0ZUluZm8pOworICAgIEVycm9yIGJpbmRNZW1vcnkoVmtEZXZpY2UgZGV2aWNlKTsKKwor
ICAgIERldmljZU1lbW9yeSAmZ2V0TWVtb3J5KCkgeyByZXR1cm4gbU1lbW9yeTsgfQorICAgIGNv
bnN0IERldmljZU1lbW9yeSAmZ2V0TWVtb3J5KCkgY29uc3QgeyByZXR1cm4gbU1lbW9yeTsgfQor
CisgIHByaXZhdGU6CisgICAgRGV2aWNlTWVtb3J5IG1NZW1vcnk7Cit9OworCitjbGFzcyBTaGFk
ZXJNb2R1bGUgZmluYWwgOiBwdWJsaWMgV3JhcHBlZE9iamVjdDxTaGFkZXJNb2R1bGUsIFZrU2hh
ZGVyTW9kdWxlPgoreworICBwdWJsaWM6CisgICAgU2hhZGVyTW9kdWxlKCk7CisgICAgdm9pZCBk
ZXN0cm95KFZrRGV2aWNlIGRldmljZSk7CisgICAgdXNpbmcgV3JhcHBlZE9iamVjdDo6cmV0YWlu
OworCisgICAgRXJyb3IgaW5pdChWa0RldmljZSBkZXZpY2UsIGNvbnN0IFZrU2hhZGVyTW9kdWxl
Q3JlYXRlSW5mbyAmY3JlYXRlSW5mbyk7Cit9OworCitjbGFzcyBQaXBlbGluZSBmaW5hbCA6IHB1
YmxpYyBXcmFwcGVkT2JqZWN0PFBpcGVsaW5lLCBWa1BpcGVsaW5lPgoreworICBwdWJsaWM6Cisg
ICAgUGlwZWxpbmUoKTsKKyAgICB2b2lkIGRlc3Ryb3koVmtEZXZpY2UgZGV2aWNlKTsKKyAgICB1
c2luZyBXcmFwcGVkT2JqZWN0OjpyZXRhaW47CisKKyAgICBFcnJvciBpbml0R3JhcGhpY3MoVmtE
ZXZpY2UgZGV2aWNlLCBjb25zdCBWa0dyYXBoaWNzUGlwZWxpbmVDcmVhdGVJbmZvICZjcmVhdGVJ
bmZvKTsKK307CisKK2NsYXNzIFBpcGVsaW5lTGF5b3V0IGZpbmFsIDogcHVibGljIFdyYXBwZWRP
YmplY3Q8UGlwZWxpbmVMYXlvdXQsIFZrUGlwZWxpbmVMYXlvdXQ+Cit7CisgIHB1YmxpYzoKKyAg
ICBQaXBlbGluZUxheW91dCgpOworICAgIHZvaWQgZGVzdHJveShWa0RldmljZSBkZXZpY2UpOwor
ICAgIHVzaW5nIFdyYXBwZWRPYmplY3Q6OnJldGFpbjsKKworICAgIEVycm9yIGluaXQoVmtEZXZp
Y2UgZGV2aWNlLCBjb25zdCBWa1BpcGVsaW5lTGF5b3V0Q3JlYXRlSW5mbyAmY3JlYXRlSW5mbyk7
Cit9OworCitjbGFzcyBGZW5jZSBmaW5hbCA6IHB1YmxpYyBXcmFwcGVkT2JqZWN0PEZlbmNlLCBW
a0ZlbmNlPgoreworICBwdWJsaWM6CisgICAgRmVuY2UoKTsKKyAgICB2b2lkIGRlc3Ryb3koVmtE
ZXZpY2UgZmVuY2UpOworICAgIHVzaW5nIFdyYXBwZWRPYmplY3Q6OnJldGFpbjsKKyAgICB1c2lu
ZyBXcmFwcGVkT2JqZWN0OjpvcGVyYXRvcj07CisKKyAgICBFcnJvciBpbml0KFZrRGV2aWNlIGRl
dmljZSwgY29uc3QgVmtGZW5jZUNyZWF0ZUluZm8gJmNyZWF0ZUluZm8pOworICAgIFZrUmVzdWx0
IGdldFN0YXR1cyhWa0RldmljZSBkZXZpY2UpIGNvbnN0OworfTsKKworY2xhc3MgRmVuY2VBbmRD
b21tYW5kQnVmZmVyIGZpbmFsIDogYW5nbGU6Ok5vbkNvcHlhYmxlCit7CisgIHB1YmxpYzoKKyAg
ICBGZW5jZUFuZENvbW1hbmRCdWZmZXIoU2VyaWFsIHF1ZXVlU2VyaWFsLCBGZW5jZSAmJmZlbmNl
LCBDb21tYW5kQnVmZmVyICYmY29tbWFuZEJ1ZmZlcik7CisgICAgRmVuY2VBbmRDb21tYW5kQnVm
ZmVyKEZlbmNlQW5kQ29tbWFuZEJ1ZmZlciAmJm90aGVyKTsKKyAgICBGZW5jZUFuZENvbW1hbmRC
dWZmZXIgJm9wZXJhdG9yPShGZW5jZUFuZENvbW1hbmRCdWZmZXIgJiZvdGhlcik7CisKKyAgICB2
b2lkIGRlc3Ryb3koVmtEZXZpY2UgZGV2aWNlKTsKKyAgICB2azo6RXJyb3JPclJlc3VsdDxib29s
PiBmaW5pc2hlZChWa0RldmljZSBkZXZpY2UpIGNvbnN0OworCisgICAgU2VyaWFsIHF1ZXVlU2Vy
aWFsKCkgY29uc3QgeyByZXR1cm4gbVF1ZXVlU2VyaWFsOyB9CisKKyAgcHJpdmF0ZToKKyAgICBT
ZXJpYWwgbVF1ZXVlU2VyaWFsOworICAgIEZlbmNlIG1GZW5jZTsKKyAgICBDb21tYW5kQnVmZmVy
IG1Db21tYW5kQnVmZmVyOworfTsKKworY2xhc3MgSUdhcmJhZ2VPYmplY3QgOiBhbmdsZTo6Tm9u
Q29weWFibGUKK3sKKyAgcHVibGljOgorICAgIHZpcnR1YWwgYm9vbCBkZXN0cm95SWZDb21wbGV0
ZShWa0RldmljZSBkZXZpY2UsIFNlcmlhbCBjb21wbGV0ZWRTZXJpYWwpID0gMDsKK307CisKK3Rl
bXBsYXRlIDx0eXBlbmFtZSBUPgorY2xhc3MgR2FyYmFnZU9iamVjdCBmaW5hbCA6IHB1YmxpYyBJ
R2FyYmFnZU9iamVjdAoreworICBwdWJsaWM6CisgICAgR2FyYmFnZU9iamVjdChTZXJpYWwgc2Vy
aWFsLCBUICYmb2JqZWN0KSA6IG1TZXJpYWwoc2VyaWFsKSwgbU9iamVjdChzdGQ6Om1vdmUob2Jq
ZWN0KSkge30KKworICAgIGJvb2wgZGVzdHJveUlmQ29tcGxldGUoVmtEZXZpY2UgZGV2aWNlLCBT
ZXJpYWwgY29tcGxldGVkU2VyaWFsKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKGNvbXBs
ZXRlZFNlcmlhbCA+PSBtU2VyaWFsKQorICAgICAgICB7CisgICAgICAgICAgICBtT2JqZWN0LmRl
c3Ryb3koZGV2aWNlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICBwcml2YXRlOgorICAgIFNlcmlhbCBtU2Vy
aWFsOworICAgIFQgbU9iamVjdDsKK307CisKK30gIC8vIG5hbWVzcGFjZSB2aworCitPcHRpb25h
bDx1aW50MzJfdD4gRmluZE1lbW9yeVR5cGUoY29uc3QgVmtQaHlzaWNhbERldmljZU1lbW9yeVBy
b3BlcnRpZXMgJm1lbW9yeVByb3BzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFZrTWVtb3J5UmVxdWlyZW1lbnRzICZyZXF1aXJlbWVudHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcHJvcGVydHlGbGFnTWFzayk7CisKK25hbWVz
cGFjZSBnbF92aworeworVmtQcmltaXRpdmVUb3BvbG9neSBHZXRQcmltaXRpdmVUb3BvbG9neShH
TGVudW0gbW9kZSk7CitWa0N1bGxNb2RlRmxhZ3MgR2V0Q3VsbE1vZGUoY29uc3QgZ2w6OlJhc3Rl
cml6ZXJTdGF0ZSAmcmFzdGVyU3RhdGUpOworVmtGcm9udEZhY2UgR2V0RnJvbnRGYWNlKEdMZW51
bSBmcm9udEZhY2UpOworfSAgLy8gbmFtZXNwYWNlIGdsX3ZrCisKK30gIC8vIG5hbWVzcGFjZSBy
eAorCisjZGVmaW5lIEFOR0xFX1ZLX1RSWShjb21tYW5kKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBhdXRvIEFOR0xF
X0xPQ0FMX1ZBUiA9IGNvbW1hbmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIGlmIChBTkdMRV9MT0NBTF9WQVIgIT0gVktfU1VDQ0VTUykgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcmV0dXJuIHJ4Ojp2
azo6RXJyb3IoQU5HTEVfTE9DQUxfVkFSLCBfX0ZJTEVfXywgX19MSU5FX18pOyBcCisgICAgICAg
IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEFOR0xFX0VNUFRZX1NUQVRFTUVOVAorCisj
ZGVmaW5lIEFOR0xFX1ZLX0NIRUNLKHRlc3QsIGVycm9yKSBBTkdMRV9WS19UUlkodGVzdCA/IFZL
X1NVQ0NFU1MgOiBlcnJvcikKKworc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVh
bSAmc3RyZWFtLCBjb25zdCByeDo6dms6OkVycm9yICZlcnJvcik7CisKKyNlbmRpZiAgLy8gTElC
QU5HTEVfUkVOREVSRVJfVlVMS0FOX1JFTkRFUkVSVktfVVRJTFNfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vdmtfZm9y
bWF0X21hcC5qc29uIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi92a19mb3JtYXRfbWFwLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAuLmRjZTYwYjcwYTEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi92a19mb3JtYXRfbWFwLmpz
b24KQEAgLTAsMCArMSwxNjEgQEAKK3sKKyAgICAiTk9ORSI6ICJWS19GT1JNQVRfVU5ERUZJTkVE
IiwKKyAgICAiUjRHNEI0QTRfVU5PUk0iOiAiVktfRk9STUFUX1I0RzRCNEE0X1VOT1JNX1BBQ0sx
NiIsCisgICAgIkI0RzRSNEE0X1VOT1JNIjogIlZLX0ZPUk1BVF9CNEc0UjRBNF9VTk9STV9QQUNL
MTYiLAorICAgICJSNUc2QjVfVU5PUk0iOiAiVktfRk9STUFUX1I1RzZCNV9VTk9STV9QQUNLMTYi
LAorICAgICJCNUc2UjVfVU5PUk0iOiAiVktfRk9STUFUX0I1RzZSNV9VTk9STV9QQUNLMTYiLAor
ICAgICJSNUc1QjVBMV9VTk9STSI6ICJWS19GT1JNQVRfUjVHNUI1QTFfVU5PUk1fUEFDSzE2IiwK
KyAgICAiQjVHNVI1QTFfVU5PUk0iOiAiVktfRk9STUFUX0I1RzVSNUExX1VOT1JNX1BBQ0sxNiIs
CisgICAgIkExUjVHNUI1X1VOT1JNIjogIlZLX0ZPUk1BVF9BMVI1RzVCNV9VTk9STV9QQUNLMTYi
LAorICAgICJSOF9VTk9STSI6ICJWS19GT1JNQVRfUjhfVU5PUk0iLAorICAgICJSOF9TTk9STSI6
ICJWS19GT1JNQVRfUjhfU05PUk0iLAorICAgICJSOF9VSU5UIjogIlZLX0ZPUk1BVF9SOF9VSU5U
IiwKKyAgICAiUjhfU0lOVCI6ICJWS19GT1JNQVRfUjhfU0lOVCIsCisgICAgIlI4X1NSR0IiOiAi
VktfRk9STUFUX1I4X1NSR0IiLAorICAgICJSOEc4X1VOT1JNIjogIlZLX0ZPUk1BVF9SOEc4X1VO
T1JNIiwKKyAgICAiUjhHOF9TTk9STSI6ICJWS19GT1JNQVRfUjhHOF9TTk9STSIsCisgICAgIlI4
RzhfVUlOVCI6ICJWS19GT1JNQVRfUjhHOF9VSU5UIiwKKyAgICAiUjhHOF9TSU5UIjogIlZLX0ZP
Uk1BVF9SOEc4X1NJTlQiLAorICAgICJSOEc4X1NSR0IiOiAiVktfRk9STUFUX1I4RzhfU1JHQiIs
CisgICAgIlI4RzhCOF9VTk9STSI6ICJWS19GT1JNQVRfUjhHOEI4X1VOT1JNIiwKKyAgICAiUjhH
OEI4X1NOT1JNIjogIlZLX0ZPUk1BVF9SOEc4QjhfU05PUk0iLAorICAgICJSOEc4QjhfVUlOVCI6
ICJWS19GT1JNQVRfUjhHOEI4X1VJTlQiLAorICAgICJSOEc4QjhfU0lOVCI6ICJWS19GT1JNQVRf
UjhHOEI4X1NJTlQiLAorICAgICJSOEc4QjhfU1JHQiI6ICJWS19GT1JNQVRfUjhHOEI4X1NSR0Ii
LAorICAgICJCOEc4UjhfVU5PUk0iOiAiVktfRk9STUFUX0I4RzhSOF9VTk9STSIsCisgICAgIkI4
RzhSOF9TTk9STSI6ICJWS19GT1JNQVRfQjhHOFI4X1NOT1JNIiwKKyAgICAiQjhHOFI4X1VJTlQi
OiAiVktfRk9STUFUX0I4RzhSOF9VSU5UIiwKKyAgICAiQjhHOFI4X1NJTlQiOiAiVktfRk9STUFU
X0I4RzhSOF9TSU5UIiwKKyAgICAiQjhHOFI4X1NSR0IiOiAiVktfRk9STUFUX0I4RzhSOF9TUkdC
IiwKKyAgICAiUjhHOEI4QThfVU5PUk0iOiAiVktfRk9STUFUX1I4RzhCOEE4X1VOT1JNIiwKKyAg
ICAiUjhHOEI4QThfU05PUk0iOiAiVktfRk9STUFUX1I4RzhCOEE4X1NOT1JNIiwKKyAgICAiUjhH
OEI4QThfVUlOVCI6ICJWS19GT1JNQVRfUjhHOEI4QThfVUlOVCIsCisgICAgIlI4RzhCOEE4X1NJ
TlQiOiAiVktfRk9STUFUX1I4RzhCOEE4X1NJTlQiLAorICAgICJSOEc4QjhBOF9TUkdCIjogIlZL
X0ZPUk1BVF9SOEc4QjhBOF9TUkdCIiwKKyAgICAiQjhHOFI4QThfVU5PUk0iOiAiVktfRk9STUFU
X0I4RzhSOEE4X1VOT1JNIiwKKyAgICAiQjhHOFI4QThfU05PUk0iOiAiVktfRk9STUFUX0I4RzhS
OEE4X1NOT1JNIiwKKyAgICAiQjhHOFI4QThfVVNDQUxFRCI6ICJWS19GT1JNQVRfQjhHOFI4QThf
VVNDQUxFRCIsCisgICAgIkI4RzhSOEE4X1NTQ0FMRUQiOiAiVktfRk9STUFUX0I4RzhSOEE4X1NT
Q0FMRUQiLAorICAgICJCOEc4UjhBOF9VSU5UIjogIlZLX0ZPUk1BVF9COEc4UjhBOF9VSU5UIiwK
KyAgICAiQjhHOFI4QThfU0lOVCI6ICJWS19GT1JNQVRfQjhHOFI4QThfU0lOVCIsCisgICAgIkI4
RzhSOEE4X1NSR0IiOiAiVktfRk9STUFUX0I4RzhSOEE4X1NSR0IiLAorICAgICJBMlIxMEcxMEIx
MF9VTk9STV9QQUNLMzIiOiAiVktfRk9STUFUX0EyUjEwRzEwQjEwX1VOT1JNX1BBQ0szMiIsCisg
ICAgIkEyUjEwRzEwQjEwX1NOT1JNX1BBQ0szMiI6ICJWS19GT1JNQVRfQTJSMTBHMTBCMTBfU05P
Uk1fUEFDSzMyIiwKKyAgICAiQTJSMTBHMTBCMTBfVVNDQUxFRF9QQUNLMzIiOiAiVktfRk9STUFU
X0EyUjEwRzEwQjEwX1VTQ0FMRURfUEFDSzMyIiwKKyAgICAiQTJSMTBHMTBCMTBfU1NDQUxFRF9Q
QUNLMzIiOiAiVktfRk9STUFUX0EyUjEwRzEwQjEwX1NTQ0FMRURfUEFDSzMyIiwKKyAgICAiQTJS
MTBHMTBCMTBfVUlOVF9QQUNLMzIiOiAiVktfRk9STUFUX0EyUjEwRzEwQjEwX1VJTlRfUEFDSzMy
IiwKKyAgICAiQTJSMTBHMTBCMTBfU0lOVF9QQUNLMzIiOiAiVktfRk9STUFUX0EyUjEwRzEwQjEw
X1NJTlRfUEFDSzMyIiwKKyAgICAiQTJCMTBHMTBSMTBfVU5PUk1fUEFDSzMyIjogIlZLX0ZPUk1B
VF9BMkIxMEcxMFIxMF9VTk9STV9QQUNLMzIiLAorICAgICJBMkIxMEcxMFIxMF9TTk9STV9QQUNL
MzIiOiAiVktfRk9STUFUX0EyQjEwRzEwUjEwX1NOT1JNX1BBQ0szMiIsCisgICAgIkEyQjEwRzEw
UjEwX1VTQ0FMRURfUEFDSzMyIjogIlZLX0ZPUk1BVF9BMkIxMEcxMFIxMF9VU0NBTEVEX1BBQ0sz
MiIsCisgICAgIkEyQjEwRzEwUjEwX1NTQ0FMRURfUEFDSzMyIjogIlZLX0ZPUk1BVF9BMkIxMEcx
MFIxMF9TU0NBTEVEX1BBQ0szMiIsCisgICAgIkEyQjEwRzEwUjEwX1VJTlRfUEFDSzMyIjogIlZL
X0ZPUk1BVF9BMkIxMEcxMFIxMF9VSU5UX1BBQ0szMiIsCisgICAgIkEyQjEwRzEwUjEwX1NJTlRf
UEFDSzMyIjogIlZLX0ZPUk1BVF9BMkIxMEcxMFIxMF9TSU5UX1BBQ0szMiIsCisgICAgIlIxNl9V
Tk9STSI6ICJWS19GT1JNQVRfUjE2X1VOT1JNIiwKKyAgICAiUjE2X1NOT1JNIjogIlZLX0ZPUk1B
VF9SMTZfU05PUk0iLAorICAgICJSMTZfVUlOVCI6ICJWS19GT1JNQVRfUjE2X1VJTlQiLAorICAg
ICJSMTZfU0lOVCI6ICJWS19GT1JNQVRfUjE2X1NJTlQiLAorICAgICJSMTZfRkxPQVQiOiAiVktf
Rk9STUFUX1IxNl9TRkxPQVQiLAorICAgICJSMTZHMTZfVU5PUk0iOiAiVktfRk9STUFUX1IxNkcx
Nl9VTk9STSIsCisgICAgIlIxNkcxNl9TTk9STSI6ICJWS19GT1JNQVRfUjE2RzE2X1NOT1JNIiwK
KyAgICAiUjE2RzE2X1VJTlQiOiAiVktfRk9STUFUX1IxNkcxNl9VSU5UIiwKKyAgICAiUjE2RzE2
X1NJTlQiOiAiVktfRk9STUFUX1IxNkcxNl9TSU5UIiwKKyAgICAiUjE2RzE2X0ZMT0FUIjogIlZL
X0ZPUk1BVF9SMTZHMTZfU0ZMT0FUIiwKKyAgICAiUjE2RzE2QjE2X1VOT1JNIjogIlZLX0ZPUk1B
VF9SMTZHMTZCMTZfVU5PUk0iLAorICAgICJSMTZHMTZCMTZfU05PUk0iOiAiVktfRk9STUFUX1Ix
NkcxNkIxNl9TTk9STSIsCisgICAgIlIxNkcxNkIxNl9VSU5UIjogIlZLX0ZPUk1BVF9SMTZHMTZC
MTZfVUlOVCIsCisgICAgIlIxNkcxNkIxNl9TSU5UIjogIlZLX0ZPUk1BVF9SMTZHMTZCMTZfU0lO
VCIsCisgICAgIlIxNkcxNkIxNl9GTE9BVCI6ICJWS19GT1JNQVRfUjE2RzE2QjE2X1NGTE9BVCIs
CisgICAgIlIxNkcxNkIxNkExNl9VTk9STSI6ICJWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1VOT1JN
IiwKKyAgICAiUjE2RzE2QjE2QTE2X1NOT1JNIjogIlZLX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05P
Uk0iLAorICAgICJSMTZHMTZCMTZBMTZfVUlOVCI6ICJWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1VJ
TlQiLAorICAgICJSMTZHMTZCMTZBMTZfU0lOVCI6ICJWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1NJ
TlQiLAorICAgICJSMTZHMTZCMTZBMTZfRkxPQVQiOiAiVktfRk9STUFUX1IxNkcxNkIxNkExNl9T
RkxPQVQiLAorICAgICJSMzJfVUlOVCI6ICJWS19GT1JNQVRfUjMyX1VJTlQiLAorICAgICJSMzJf
U0lOVCI6ICJWS19GT1JNQVRfUjMyX1NJTlQiLAorICAgICJSMzJfRkxPQVQiOiAiVktfRk9STUFU
X1IzMl9TRkxPQVQiLAorICAgICJSMzJHMzJfVUlOVCI6ICJWS19GT1JNQVRfUjMyRzMyX1VJTlQi
LAorICAgICJSMzJHMzJfU0lOVCI6ICJWS19GT1JNQVRfUjMyRzMyX1NJTlQiLAorICAgICJSMzJH
MzJfRkxPQVQiOiAiVktfRk9STUFUX1IzMkczMl9TRkxPQVQiLAorICAgICJSMzJHMzJCMzJfVUlO
VCI6ICJWS19GT1JNQVRfUjMyRzMyQjMyX1VJTlQiLAorICAgICJSMzJHMzJCMzJfU0lOVCI6ICJW
S19GT1JNQVRfUjMyRzMyQjMyX1NJTlQiLAorICAgICJSMzJHMzJCMzJfRkxPQVQiOiAiVktfRk9S
TUFUX1IzMkczMkIzMl9TRkxPQVQiLAorICAgICJSMzJHMzJCMzJBMzJfVUlOVCI6ICJWS19GT1JN
QVRfUjMyRzMyQjMyQTMyX1VJTlQiLAorICAgICJSMzJHMzJCMzJBMzJfU0lOVCI6ICJWS19GT1JN
QVRfUjMyRzMyQjMyQTMyX1NJTlQiLAorICAgICJSMzJHMzJCMzJBMzJfRkxPQVQiOiAiVktfRk9S
TUFUX1IzMkczMkIzMkEzMl9TRkxPQVQiLAorICAgICJSNjRfVUlOVCI6ICJWS19GT1JNQVRfUjY0
X1VJTlQiLAorICAgICJSNjRfU0lOVCI6ICJWS19GT1JNQVRfUjY0X1NJTlQiLAorICAgICJSNjRf
RkxPQVQiOiAiVktfRk9STUFUX1I2NF9TRkxPQVQiLAorICAgICJSNjRHNjRfVUlOVCI6ICJWS19G
T1JNQVRfUjY0RzY0X1VJTlQiLAorICAgICJSNjRHNjRfU0lOVCI6ICJWS19GT1JNQVRfUjY0RzY0
X1NJTlQiLAorICAgICJSNjRHNjRfRkxPQVQiOiAiVktfRk9STUFUX1I2NEc2NF9TRkxPQVQiLAor
ICAgICJSNjRHNjRCNjRfVUlOVCI6ICJWS19GT1JNQVRfUjY0RzY0QjY0X1VJTlQiLAorICAgICJS
NjRHNjRCNjRfU0lOVCI6ICJWS19GT1JNQVRfUjY0RzY0QjY0X1NJTlQiLAorICAgICJSNjRHNjRC
NjRfRkxPQVQiOiAiVktfRk9STUFUX1I2NEc2NEI2NF9TRkxPQVQiLAorICAgICJSNjRHNjRCNjRB
NjRfVUlOVCI6ICJWS19GT1JNQVRfUjY0RzY0QjY0QTY0X1VJTlQiLAorICAgICJSNjRHNjRCNjRB
NjRfU0lOVCI6ICJWS19GT1JNQVRfUjY0RzY0QjY0QTY0X1NJTlQiLAorICAgICJSNjRHNjRCNjRB
NjRfRkxPQVQiOiAiVktfRk9STUFUX1I2NEc2NEI2NEE2NF9TRkxPQVQiLAorICAgICJCMTBHMTFS
MTFfVUZMT0FUX1BBQ0szMiI6ICJWS19GT1JNQVRfQjEwRzExUjExX1VGTE9BVF9QQUNLMzIiLAor
ICAgICJFNUI5RzlSOV9VRkxPQVRfUEFDSzMyIjogIlZLX0ZPUk1BVF9FNUI5RzlSOV9VRkxPQVRf
UEFDSzMyIiwKKyAgICAiRDE2X1VOT1JNIjogIlZLX0ZPUk1BVF9EMTZfVU5PUk0iLAorICAgICJY
OF9EMjRfVU5PUk1fUEFDSzMyIjogIlZLX0ZPUk1BVF9YOF9EMjRfVU5PUk1fUEFDSzMyIiwKKyAg
ICAiRDMyX0ZMT0FUIjogIlZLX0ZPUk1BVF9EMzJfU0ZMT0FUIiwKKyAgICAiUzhfVUlOVCI6ICJW
S19GT1JNQVRfUzhfVUlOVCIsCisgICAgIkQxNl9VTk9STV9TOF9VSU5UIjogIlZLX0ZPUk1BVF9E
MTZfVU5PUk1fUzhfVUlOVCIsCisgICAgIkQyNF9VTk9STV9TOF9VSU5UIjogIlZLX0ZPUk1BVF9E
MjRfVU5PUk1fUzhfVUlOVCIsCisgICAgIkQzMl9TRkxPQVRfUzhfVUlOVCI6ICJWS19GT1JNQVRf
RDMyX1NGTE9BVF9TOF9VSU5UIiwKKyAgICAiQkMxX1JHQl9VTk9STV9CTE9DSyI6ICJWS19GT1JN
QVRfQkMxX1JHQl9VTk9STV9CTE9DSyIsCisgICAgIkJDMV9SR0JfU1JHQl9CTE9DSyI6ICJWS19G
T1JNQVRfQkMxX1JHQl9TUkdCX0JMT0NLIiwKKyAgICAiQkMxX1JHQkFfVU5PUk1fQkxPQ0siOiAi
VktfRk9STUFUX0JDMV9SR0JBX1VOT1JNX0JMT0NLIiwKKyAgICAiQkMxX1JHQkFfU1JHQl9CTE9D
SyI6ICJWS19GT1JNQVRfQkMxX1JHQkFfU1JHQl9CTE9DSyIsCisgICAgIkJDMl9VTk9STV9CTE9D
SyI6ICJWS19GT1JNQVRfQkMyX1VOT1JNX0JMT0NLIiwKKyAgICAiQkMyX1NSR0JfQkxPQ0siOiAi
VktfRk9STUFUX0JDMl9TUkdCX0JMT0NLIiwKKyAgICAiQkMzX1VOT1JNX0JMT0NLIjogIlZLX0ZP
Uk1BVF9CQzNfVU5PUk1fQkxPQ0siLAorICAgICJCQzNfU1JHQl9CTE9DSyI6ICJWS19GT1JNQVRf
QkMzX1NSR0JfQkxPQ0siLAorICAgICJCQzRfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0JDNF9V
Tk9STV9CTE9DSyIsCisgICAgIkJDNF9TTk9STV9CTE9DSyI6ICJWS19GT1JNQVRfQkM0X1NOT1JN
X0JMT0NLIiwKKyAgICAiQkM1X1VOT1JNX0JMT0NLIjogIlZLX0ZPUk1BVF9CQzVfVU5PUk1fQkxP
Q0siLAorICAgICJCQzVfU05PUk1fQkxPQ0siOiAiVktfRk9STUFUX0JDNV9TTk9STV9CTE9DSyIs
CisgICAgIkJDNkhfVUZMT0FUX0JMT0NLIjogIlZLX0ZPUk1BVF9CQzZIX1VGTE9BVF9CTE9DSyIs
CisgICAgIkJDNkhfU0ZMT0FUX0JMT0NLIjogIlZLX0ZPUk1BVF9CQzZIX1NGTE9BVF9CTE9DSyIs
CisgICAgIkJDN19VTk9STV9CTE9DSyI6ICJWS19GT1JNQVRfQkM3X1VOT1JNX0JMT0NLIiwKKyAg
ICAiQkM3X1NSR0JfQkxPQ0siOiAiVktfRk9STUFUX0JDN19TUkdCX0JMT0NLIiwKKyAgICAiRVRD
Ml9SOEc4QjhfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0VUQzJfUjhHOEI4X1VOT1JNX0JMT0NL
IiwKKyAgICAiRVRDMl9SOEc4QjhfU1JHQl9CTE9DSyI6ICJWS19GT1JNQVRfRVRDMl9SOEc4Qjhf
U1JHQl9CTE9DSyIsCisgICAgIkVUQzJfUjhHOEI4QTFfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFU
X0VUQzJfUjhHOEI4QTFfVU5PUk1fQkxPQ0siLAorICAgICJFVEMyX1I4RzhCOEExX1NSR0JfQkxP
Q0siOiAiVktfRk9STUFUX0VUQzJfUjhHOEI4QTFfU1JHQl9CTE9DSyIsCisgICAgIkVUQzJfUjhH
OEI4QThfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0VUQzJfUjhHOEI4QThfVU5PUk1fQkxPQ0si
LAorICAgICJFVEMyX1I4RzhCOEE4X1NSR0JfQkxPQ0siOiAiVktfRk9STUFUX0VUQzJfUjhHOEI4
QThfU1JHQl9CTE9DSyIsCisgICAgIkVBQ19SMTFfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0VB
Q19SMTFfVU5PUk1fQkxPQ0siLAorICAgICJFQUNfUjExX1NOT1JNX0JMT0NLIjogIlZLX0ZPUk1B
VF9FQUNfUjExX1NOT1JNX0JMT0NLIiwKKyAgICAiRUFDX1IxMUcxMV9VTk9STV9CTE9DSyI6ICJW
S19GT1JNQVRfRUFDX1IxMUcxMV9VTk9STV9CTE9DSyIsCisgICAgIkVBQ19SMTFHMTFfU05PUk1f
QkxPQ0siOiAiVktfRk9STUFUX0VBQ19SMTFHMTFfU05PUk1fQkxPQ0siLAorICAgICJBU1RDXzR4
NF9VTk9STV9CTE9DSyI6ICJWS19GT1JNQVRfQVNUQ180eDRfVU5PUk1fQkxPQ0siLAorICAgICJB
U1RDXzR4NF9TUkdCX0JMT0NLIjogIlZLX0ZPUk1BVF9BU1RDXzR4NF9TUkdCX0JMT0NLIiwKKyAg
ICAiQVNUQ181eDRfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0FTVENfNXg0X1VOT1JNX0JMT0NL
IiwKKyAgICAiQVNUQ181eDRfU1JHQl9CTE9DSyI6ICJWS19GT1JNQVRfQVNUQ181eDRfU1JHQl9C
TE9DSyIsCisgICAgIkFTVENfNXg1X1VOT1JNX0JMT0NLIjogIlZLX0ZPUk1BVF9BU1RDXzV4NV9V
Tk9STV9CTE9DSyIsCisgICAgIkFTVENfNXg1X1NSR0JfQkxPQ0siOiAiVktfRk9STUFUX0FTVENf
NXg1X1NSR0JfQkxPQ0siLAorICAgICJBU1RDXzZ4NV9VTk9STV9CTE9DSyI6ICJWS19GT1JNQVRf
QVNUQ182eDVfVU5PUk1fQkxPQ0siLAorICAgICJBU1RDXzZ4NV9TUkdCX0JMT0NLIjogIlZLX0ZP
Uk1BVF9BU1RDXzZ4NV9TUkdCX0JMT0NLIiwKKyAgICAiQVNUQ182eDZfVU5PUk1fQkxPQ0siOiAi
VktfRk9STUFUX0FTVENfNng2X1VOT1JNX0JMT0NLIiwKKyAgICAiQVNUQ182eDZfU1JHQl9CTE9D
SyI6ICJWS19GT1JNQVRfQVNUQ182eDZfU1JHQl9CTE9DSyIsCisgICAgIkFTVENfOHg1X1VOT1JN
X0JMT0NLIjogIlZLX0ZPUk1BVF9BU1RDXzh4NV9VTk9STV9CTE9DSyIsCisgICAgIkFTVENfOHg1
X1NSR0JfQkxPQ0siOiAiVktfRk9STUFUX0FTVENfOHg1X1NSR0JfQkxPQ0siLAorICAgICJBU1RD
Xzh4Nl9VTk9STV9CTE9DSyI6ICJWS19GT1JNQVRfQVNUQ184eDZfVU5PUk1fQkxPQ0siLAorICAg
ICJBU1RDXzh4Nl9TUkdCX0JMT0NLIjogIlZLX0ZPUk1BVF9BU1RDXzh4Nl9TUkdCX0JMT0NLIiwK
KyAgICAiQVNUQ184eDhfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0FTVENfOHg4X1VOT1JNX0JM
T0NLIiwKKyAgICAiQVNUQ184eDhfU1JHQl9CTE9DSyI6ICJWS19GT1JNQVRfQVNUQ184eDhfU1JH
Ql9CTE9DSyIsCisgICAgIkFTVENfMTB4NV9VTk9STV9CTE9DSyI6ICJWS19GT1JNQVRfQVNUQ18x
MHg1X1VOT1JNX0JMT0NLIiwKKyAgICAiQVNUQ18xMHg1X1NSR0JfQkxPQ0siOiAiVktfRk9STUFU
X0FTVENfMTB4NV9TUkdCX0JMT0NLIiwKKyAgICAiQVNUQ18xMHg2X1VOT1JNX0JMT0NLIjogIlZL
X0ZPUk1BVF9BU1RDXzEweDZfVU5PUk1fQkxPQ0siLAorICAgICJBU1RDXzEweDZfU1JHQl9CTE9D
SyI6ICJWS19GT1JNQVRfQVNUQ18xMHg2X1NSR0JfQkxPQ0siLAorICAgICJBU1RDXzEweDhfVU5P
Uk1fQkxPQ0siOiAiVktfRk9STUFUX0FTVENfMTB4OF9VTk9STV9CTE9DSyIsCisgICAgIkFTVENf
MTB4OF9TUkdCX0JMT0NLIjogIlZLX0ZPUk1BVF9BU1RDXzEweDhfU1JHQl9CTE9DSyIsCisgICAg
IkFTVENfMTB4MTBfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0FTVENfMTB4MTBfVU5PUk1fQkxP
Q0siLAorICAgICJBU1RDXzEweDEwX1NSR0JfQkxPQ0siOiAiVktfRk9STUFUX0FTVENfMTB4MTBf
U1JHQl9CTE9DSyIsCisgICAgIkFTVENfMTJ4MTBfVU5PUk1fQkxPQ0siOiAiVktfRk9STUFUX0FT
VENfMTJ4MTBfVU5PUk1fQkxPQ0siLAorICAgICJBU1RDXzEyeDEwX1NSR0JfQkxPQ0siOiAiVktf
Rk9STUFUX0FTVENfMTJ4MTBfU1JHQl9CTE9DSyIsCisgICAgIkFTVENfMTJ4MTJfVU5PUk1fQkxP
Q0siOiAiVktfRk9STUFUX0FTVENfMTJ4MTJfVU5PUk1fQkxPQ0siLAorICAgICJBU1RDXzEyeDEy
X1NSR0JfQkxPQyI6ICJWS19GT1JNQVRfQVNUQ18xMngxMl9TUkdCX0JMT0NLIgorfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi92a19mb3JtYXRfdGFibGVfYXV0b2dlbi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL3ZrX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDA3NzhkMjM0ZmUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL3ZrX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcApAQCAtMCwwICsxLDg2OCBAQAor
Ly8gR0VORVJBVEVEIEZJTEUgLSBETyBOT1QgRURJVC4KKy8vIEdlbmVyYXRlZCBieSBnZW5fdmtf
Zm9ybWF0X3RhYmxlLnB5IHVzaW5nIGRhdGEgZnJvbSB2a19mb3JtYXRfbWFwLmpzb24KKy8vCisv
LyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qt
c3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K
Ky8vCisvLyB2a19mb3JtYXRfdGFibGU6CisvLyAgIFF1ZXJpZXMgZm9yIGZ1bGwgVnVsa2FuIGZv
cm1hdCBpbmZvcm1hdGlvbiBiYXNlZCBvbiBHTCBmb3JtYXQuCisKKyNpbmNsdWRlICJsaWJBTkdM
RS9yZW5kZXJlci92dWxrYW4vZm9ybWF0dXRpbHN2ay5oIgorCisjaW5jbHVkZSAiaW1hZ2VfdXRp
bC9jb3B5aW1hZ2UuaCIKKyNpbmNsdWRlICJpbWFnZV91dGlsL2dlbmVyYXRlbWlwLmgiCisjaW5j
bHVkZSAiaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaCIKKwordXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwor
CituYW1lc3BhY2UgcngKK3sKKworbmFtZXNwYWNlIHZrCit7CisKKy8vIHN0YXRpYworY29uc3Qg
Rm9ybWF0ICZGb3JtYXQ6OkdldChHTGVudW0gaW50ZXJuYWxGb3JtYXQpCit7CisgICAgLy8gY2xh
bmctZm9ybWF0IG9mZgorICAgIHN3aXRjaCAoaW50ZXJuYWxGb3JtYXQpCisgICAgeworICAgICAg
ICBjYXNlIEdMX0JHUjU2NV9BTkdMRVg6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQkdSNTY1X0FOR0xFWCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkI1RzZSNV9VTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0I1RzZS
NV9VTk9STV9QQUNLMTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBHTF9CR1I1X0ExX0FOR0xFWDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9CR1I1X0ExX0FOR0xFWCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkI1RzVSNUExX1VOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfQjVH
NVI1QTFfVU5PUk1fUEFDSzE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgR0xfQkdSQTRfQU5HTEVYOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0JHUkE0X0FOR0xFWCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkI0RzRSNEE0X1VOT1JN
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfQjRH
NFI0QTRfVU5PUk1fUEFDSzE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgR0xfQkdSQThfRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3RleHByIEZvcm1hdCBpbmZvKEdMX0JHUkE4X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkI4RzhSOEE4X1VOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfQjhHOFI4QThf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1IxMV9FQUM6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SMTFfRUFDLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RUFDX1IxMV9VTk9STV9C
TE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFU
X0VBQ19SMTFfVU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHMTFfRUFDOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkcxMV9FQUMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklE
OjpFQUNfUjExRzExX1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWS19GT1JNQVRfRUFDX1IxMUcxMV9VTk9STV9CTE9DSywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCOF9FVEMy
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdM
X0NPTVBSRVNTRURfUkdCOF9FVEMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RVRDMl9SOEc4QjhfVU5PUk1fQkxPQ0ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9FVEMyX1I4RzhC
OF9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIEdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0VUQzI6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NF
RF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfRVRDMiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkVUQzJfUjhHOEI4QTFfVU5PUk1f
QkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1B
VF9FVEMyX1I4RzhCOEExX1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJbml0aWFsaXplNENvbXBvbmVudERhdGE8R0x1Ynl0ZSwgMHgwMCwgMHgw
MCwgMHgwMCwgMHhGRj4pOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQThf
RVRDMl9FQUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
OjpGb3JtYXQ6OklEOjpFVEMyX1I4RzhCOEE4X1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfRVRDMl9SOEc4QjhBOF9VTk9STV9C
TE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7
CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NP
TVBSRVNTRURfUkdCQV9BU1RDXzEweDEwX0tIUjoKKyAgICAgICAgeworICAgICAgICAgICAgc3Rh
dGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHgxMF9L
SFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpBU1RDXzEweDEwX1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBWS19GT1JNQVRfQVNUQ18xMHgxMF9VTk9STV9CTE9DSywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdC
QV9BU1RDXzEweDVfS0hSOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHBy
IEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzEweDVfS0hSLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QVNUQ18x
MHg1X1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWS19GT1JNQVRfQVNUQ18xMHg1X1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFI6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xf
Q09NUFJFU1NFRF9SR0JBX0FTVENfMTB4Nl9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpBU1RDXzEweDZfVU5PUk1fQkxPQ0ss
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9BU1RD
XzEweDZfVU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMHg4X0tIUjoKKyAgICAgICAgeworICAg
ICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFf
QVNUQ18xMHg4X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6OkFTVENfMTB4OF9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0FTVENfMTB4OF9VTk9STV9CTE9D
SywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBS
RVNTRURfUkdCQV9BU1RDXzEyeDEwX0tIUjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGlj
IGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMF9LSFIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpBU1RDXzEyeDEwX1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWS19GT1JNQVRfQVNUQ18xMngxMF9VTk9STV9CTE9DSywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9B
U1RDXzEyeDEyX0tIUjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBG
b3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ18xMngxMl9LSFIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpBU1RDXzEy
eDEyX1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWS19GT1JNQVRfQVNUQ18xMngxMl9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9LSFI6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xf
Q09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkFTVENfNHg0X1VOT1JNX0JMT0NLLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfQVNUQ180
eDRfVU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDRfS0hSOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RD
XzV4NF9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
OjpGb3JtYXQ6OklEOjpBU1RDXzV4NF9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0FTVENfNXg0X1VOT1JNX0JMT0NLLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9S
R0JBX0FTVENfNXg1X0tIUjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhw
ciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ181eDVfS0hSLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QVNUQ181
eDVfVU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFZLX0ZPUk1BVF9BU1RDXzV4NV9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4NV9LSFI6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09N
UFJFU1NFRF9SR0JBX0FTVENfNng1X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkFTVENfNng1X1VOT1JNX0JMT0NLLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfQVNUQ182eDVf
VU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51
bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ182eDZfS0hSOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzZ4
Nl9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpBU1RDXzZ4Nl9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0FTVENfNng2X1VOT1JNX0JMT0NLLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAg
IHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JB
X0FTVENfOHg1X0tIUjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBG
b3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDVfS0hSLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QVNUQ184eDVf
VU5PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZL
X0ZPUk1BVF9BU1RDXzh4NV9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4Nl9LSFI6CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJF
U1NFRF9SR0JBX0FTVENfOHg2X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkFTVENfOHg2X1VOT1JNX0JMT0NLLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfQVNUQ184eDZfVU5P
Uk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBH
TF9DT01QUkVTU0VEX1JHQkFfQVNUQ184eDhfS0hSOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfUkdCQV9BU1RDXzh4OF9L
SFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpBU1RDXzh4OF9VTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgVktfRk9STUFUX0FTVENfOHg4X1VOT1JNX0JMT0NLLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUMV9FWFQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9y
bWF0IGluZm8oR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpCQzFfUkdCQV9V
Tk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktf
Rk9STUFUX0JDMV9SR0JBX1VOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVT
U0VEX1JHQl9TM1RDX0RYVDFfRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QkMxX1JHQl9VTk9STV9CTE9DSywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0JDMV9SR0JfVU5PUk1f
QkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1NJR05FRF9SMTFfRUFDOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU0lHTkVEX1IxMV9FQUMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpF
QUNfUjExX1NOT1JNX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWS19GT1JNQVRfRUFDX1IxMV9TTk9STV9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDOgor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NP
TVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6RUFDX1IxMUcxMV9TTk9STV9CTE9DSywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0VBQ19SMTFH
MTFfU05PUk1fQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUjoKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VE
X1NSR0I4X0FMUEhBOF9BU1RDXzEweDEwX0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkFTVENfMTB4MTBfU1JHQl9CTE9DSywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0FTVENf
MTB4MTBfU1JHQl9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTB4NV9LSFI6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfQVNUQ18xMHg1X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkFTVENfMTB4NV9TUkdCX0JMT0NLLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfQVNUQ18x
MHg1X1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0FMUEhBOF9BU1RDXzEweDZfS0hSOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURf
U1JHQjhfQUxQSEE4X0FTVENfMTB4Nl9LSFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpBU1RDXzEweDZfU1JHQl9CTE9DSywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0FTVENfMTB4
Nl9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ18xMHg4X0tIUjoKKyAgICAgICAgewor
ICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NS
R0I4X0FMUEhBOF9BU1RDXzEweDhfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QVNUQ18xMHg4X1NSR0JfQkxPQ0ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9BU1RDXzEweDhf
U1JHQl9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfMTJ4MTBfS0hSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6QVNUQ18xMngxMF9TUkdCX0JMT0NLLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfQVNUQ18xMngx
MF9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ180eDRfS0hSOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JH
QjhfQUxQSEE4X0FTVENfNHg0X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkFTVENfNHg0X1NSR0JfQkxPQ0ssCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9BU1RDXzR4NF9TUkdC
X0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xf
Q09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDRfS0hSOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQ
SEE4X0FTVENfNXg0X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkFTVENfNXg0X1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9BU1RDXzV4NF9TUkdCX0JMT0NL
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAg
ICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJF
U1NFRF9TUkdCOF9BTFBIQThfQVNUQ181eDVfS0hSOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FT
VENfNXg1X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6OkFTVENfNXg1X1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9BU1RDXzV4NV9TUkdCX0JMT0NLLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAg
ICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfQVNUQ182eDVfS0hSOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng1
X0tIUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZv
cm1hdDo6SUQ6OkFTVENfNng1X1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9BU1RDXzZ4NV9TUkdCX0JMT0NLLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJl
dHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9B
TFBIQThfQVNUQ182eDZfS0hSOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIEZvcm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfNng2X0tIUiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6
SUQ6OkFTVENfNng2X1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZLX0ZPUk1BVF9BU1RDXzZ4Nl9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThf
QVNUQ184eDVfS0hSOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZv
cm1hdCBpbmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg1X0tIUiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkFT
VENfOHg1X1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFZLX0ZPUk1BVF9BU1RDXzh4NV9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184
eDZfS0hSOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBp
bmZvKEdMX0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg2X0tIUiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkFTVENfOHg2
X1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZL
X0ZPUk1BVF9BU1RDXzh4Nl9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfQVNUQ184eDhfS0hS
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdM
X0NPTVBSRVNTRURfU1JHQjhfQUxQSEE4X0FTVENfOHg4X0tIUiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkFTVENfOHg4X1NSR0Jf
QkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1B
VF9BU1RDXzh4OF9TUkdCX0JMT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUM6CisgICAgICAg
IHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NF
RF9TUkdCOF9BTFBIQThfRVRDMl9FQUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpFVEMyX1I4RzhCOEE4X1NSR0JfQkxPQ0ssCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9FVEMyX1I4
RzhCOEE4X1NSR0JfQkxPQ0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0VUQzI6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfQ09NUFJFU1NFRF9TUkdCOF9FVEMyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJ
RDo6RVRDMl9SOEc4QjhfU1JHQl9CTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVktfRk9STUFUX0VUQzJfUjhHOEI4X1NSR0JfQkxPQ0ssCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X1BV
TkNIVEhST1VHSF9BTFBIQTFfRVRDMjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBI
QTFfRVRDMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OkZvcm1hdDo6SUQ6OkVUQzJfUjhHOEI4QTFfU1JHQl9CTE9DSywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0VUQzJfUjhHOEI4QTFfU1JHQl9CTE9D
SywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0RFUFRI
MjRfU1RFTkNJTDg6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9y
bWF0IGluZm8oR0xfREVQVEgyNF9TVEVOQ0lMOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkQyNF9VTk9STV9TOF9VSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfRDI0X1VOT1JN
X1M4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxw
dHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBH
TF9ERVBUSF9DT01QT05FTlQxNjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBGb3JtYXQgaW5mbyhHTF9ERVBUSF9DT01QT05FTlQxNiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OkQxNl9VTk9STSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX0QxNl9VTk9S
TSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0RFUFRI
X0NPTVBPTkVOVDMyRjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBG
b3JtYXQgaW5mbyhHTF9ERVBUSF9DT01QT05FTlQzMkYsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpEMzJfRkxPQVQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9EMzJfU0ZMT0FULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfRVRDMV9SR0I4
X0xPU1NZX0RFQ09ERV9BTkdMRToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0
ZXhwciBGb3JtYXQgaW5mbyhHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9O
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX1VO
REVGSU5FRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdM
X0VUQzFfUkdCOF9PRVM6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
Rm9ybWF0IGluZm8oR0xfRVRDMV9SR0I4X09FUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6Ok5PTkUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9VTkRFRklORUQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9OT05FOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX05PTkUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpOT05F
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfVU5E
RUZJTkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRy
KTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xf
UjE2RjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5m
byhHTF9SMTZGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmds
ZTo6Rm9ybWF0OjpJRDo6UjE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWS19GT1JNQVRfUjE2X1NGTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEdMX1IxNkk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUjE2SSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNl9TSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjE2X1NJTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAg
ICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SMTZVSToKKyAg
ICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SMTZV
SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1h
dDo6SUQ6OlIxNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBWS19GT1JNQVRfUjE2X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBHTF9SMTZfRVhUOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29u
c3RleHByIEZvcm1hdCBpbmZvKEdMX1IxNl9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZfVU5PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SMTZfVU5PUk0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAg
ICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SMTZfU05PUk1fRVhU
OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdM
X1IxNl9TTk9STV9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SMTZfU05PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SMzJGOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1IzMkYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMzJfRkxPQVQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SMzJfU0ZM
T0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsK
KyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUjMy
SToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhH
TF9SMzJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6
Rm9ybWF0OjpJRDo6UjMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZLX0ZPUk1BVF9SMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIEdMX1IzMlVJOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMg
Y29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1IzMlVJLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyX1VJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SMzJfVUlOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAg
ICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1I4OgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1I4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6Ujhf
VU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1B
VF9SOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IEdMX1I4SToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQg
aW5mbyhHTF9SOEksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEOjpSOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWS19GT1JNQVRfUjhfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAg
ICAgfQorICAgICAgICBjYXNlIEdMX1I4VUk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRp
YyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUjhVSSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4X1VJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SOF9VSU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAg
IHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUjhfU05PUk06CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUjhfU05P
Uk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpSOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVktfRk9STUFUX1I4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgR0xfUkcxNkY6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25z
dGV4cHIgRm9ybWF0IGluZm8oR0xfUkcxNkYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZfRkxPQVQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SMTZHMTZfU0ZMT0FULAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAg
ICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkcxNkk6Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkcx
NkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3Jt
YXQ6OklEOjpSMTZHMTZfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVktfRk9STUFUX1IxNkcxNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgR0xfUkcxNlVJOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHMTZVSSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNl9VSU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjE2RzE2X1VJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SRzE2
X0VYVDoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5m
byhHTF9SRzE2X0VYVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YW5nbGU6OkZvcm1hdDo6SUQ6OlIxNkcxNl9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVktfRk9STUFUX1IxNkcxNl9VTk9STSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4g
aW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHMTZfU05PUk1fRVhUOgorICAgICAg
ICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHMTZfU05P
Uk1fRVhULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6
Rm9ybWF0OjpJRDo6UjE2RzE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWS19GT1JNQVRfUjE2RzE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkczMkY6CisgICAgICAgIHsKKyAgICAgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkczMkYsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMzJHMzJfRkxPQVQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SMzJH
MzJfU0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
R0xfUkczMkk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0
IGluZm8oR0xfUkczMkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlOjpGb3JtYXQ6OklEOjpSMzJHMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVktfRk9STUFUX1IzMkczMl9TSU5ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBp
bmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkczMlVJOgorICAgICAgICB7CisgICAg
ICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHMzJVSSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkcz
Ml9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JN
QVRfUjMyRzMyX1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBHTF9SRzg6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9y
bWF0IGluZm8oR0xfUkc4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOF9VTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVktfRk9STUFUX1I4RzhfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SRzhJOgorICAgICAgICB7CisgICAgICAg
ICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHOEksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4X1NJTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SOEc4
X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIp
OworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9S
RzhVSToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5m
byhHTF9SRzhVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6OlI4RzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVktfRk9STUFUX1I4RzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHOF9TTk9STToKKyAgICAgICAgeworICAgICAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SRzhfU05PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4X1NO
T1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRf
UjhHOF9TTk9STSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVs
bHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IEdMX1JHQjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQg
aW5mbyhHTF9SR0IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFu
Z2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SOEc4QjhfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0IxNkY6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCMTZGLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2
QjE2X0ZMT0FULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19G
T1JNQVRfUjE2RzE2QjE2X1NGTE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIEdMX1JHQjE2SToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNv
bnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0IxNkksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSMTZHMTZCMTZfU0lOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX1IxNkcxNkIxNl9T
SU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsK
KyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdC
MTZVSToKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5m
byhHTF9SR0IxNlVJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SMTZHMTZCMTZfVUlOVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1
cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQjE2X0VYVDoKKyAgICAgICAg
eworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0IxNl9FWFQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6
OklEOjpSMTZHMTZCMTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZLX0ZPUk1BVF9SMTZHMTZCMTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0IxNl9TTk9STV9FWFQ6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCMTZfU05PUk1fRVhU
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0
OjpJRDo6UjE2RzE2QjE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBWS19GT1JNQVRfUjE2RzE2QjE2X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCMzJGOgorICAgICAgICB7CisgICAgICAgICAg
ICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQjMyRiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlIzMkczMkIzMl9G
TE9BVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFU
X1IzMkczMkIzMl9TRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBHTF9SR0IzMkk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4
cHIgRm9ybWF0IGluZm8oR0xfUkdCMzJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyRzMyQjMyX1NJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SMzJHMzJCMzJfU0lOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQjMyVUk6
CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xf
UkdCMzJVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OkZvcm1hdDo6SUQ6OlIzMkczMkIzMl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWS19GT1JNQVRfUjMyRzMyQjMyX1VJTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0I1NjU6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCNTY1LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjVHNkI1
X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JN
QVRfUjVHNkI1X1VOT1JNX1BBQ0sxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIEdMX1JHQjVfQTE6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBj
b25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCNV9BMSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI1RzVCNUExX1VOT1JNLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjVHNUI1QTFf
VU5PUk1fUEFDSzE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
dWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNh
c2UgR0xfUkdCODoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3Jt
YXQgaW5mbyhHTF9SR0I4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjhHOEI4X1VOT1JNLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVy
biBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCOEk6CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCOEksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4
QjhfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9S
TUFUX1I4RzhCOF9TSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAg
IGNhc2UgR0xfUkdCOFVJOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHBy
IEZvcm1hdCBpbmZvKEdMX1JHQjhVSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkZvcm1hdDo6SUQ6OlI4RzhCOF9VSU5ULAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjhHOEI4X1VJTlQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0I4X1NOT1JNOgorICAg
ICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQjhf
U05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpSOEc4QjhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFZLX0ZPUk1BVF9SOEc4QjhfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0JBOgorICAgICAgICB7CisgICAgICAgICAgICBz
dGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQkEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9VTk9STSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9STUFUX1I4RzhC
OEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxs
cHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZvOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
R0xfUkdCQTE2RjoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3Jt
YXQgaW5mbyhHTF9SR0JBMTZGLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjE2RzE2QjE2QTE2X0ZMT0FULAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1NGTE9B
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Cisg
ICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQkEx
Nkk6CisgICAgICAgIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8o
R0xfUkdCQTE2SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGU6OkZvcm1hdDo6SUQ6OlIxNkcxNkIxNkExNl9TSU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAg
cmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0JBMTZVSToKKyAgICAg
ICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0JBMTZV
SSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6OkZvcm1h
dDo6SUQ6OlIxNkcxNkIxNkExNl9VSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1VJTlQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0JBMTZfRVhUOgorICAgICAgICB7Cisg
ICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQkExNl9FWFQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklE
OjpSMTZHMTZCMTZBMTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZLX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0JBMTZfU05PUk1fRVhUOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQkExNl9TTk9S
TV9FWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpG
b3JtYXQ6OklEOjpSMTZHMTZCMTZBMTZfU05PUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SMTZHMTZCMTZBMTZfU05PUk0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0
dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0JBMzJGOgorICAgICAgICB7
CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQkEzMkYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklE
OjpSMzJHMzJCMzJBMzJfRkxPQVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFZLX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0ZMT0FULAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybiBpbmZv
OworICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfUkdCQTMySToKKyAgICAgICAgeworICAgICAg
ICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhHTF9SR0JBMzJJLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyRzMy
QjMyQTMyX1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZL
X0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIEdMX1JHQkEzMlVJOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0
aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1JHQkEzMlVJLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjMyRzMyQjMyQTMyX1VJ
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9S
MzJHMzJCMzJBMzJfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIEdMX1JHQkE0OgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHBy
IEZvcm1hdCBpbmZvKEdMX1JHQkE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjRHNEI0QTRfVU5PUk0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SNEc0QjRBNF9VTk9STV9QQUNL
MTYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwor
ICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0JB
ODoKKyAgICAgICAgeworICAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBGb3JtYXQgaW5mbyhH
TF9SR0JBOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGU6
OkZvcm1hdDo6SUQ6OlI4RzhCOEE4X1VOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBWS19GT1JNQVRfUjhHOEI4QThfVU5PUk0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGlu
Zm87CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9SR0JBOEk6CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHN0YXRpYyBjb25zdGV4cHIgRm9ybWF0IGluZm8oR0xfUkdCQThJLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4
QThfU0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVktfRk9S
TUFUX1I4RzhCOEE4X1NJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBHTF9SR0JBOFVJOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3Rl
eHByIEZvcm1hdCBpbmZvKEdMX1JHQkE4VUksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlOjpGb3JtYXQ6OklEOjpSOEc4QjhBOF9VSU5ULAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWS19GT1JNQVRfUjhHOEI4QThfVUlOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAg
ICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1JHQkE4X1NO
T1JNOgorICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZv
KEdMX1JHQkE4X1NOT1JNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZTo6Rm9ybWF0OjpJRDo6UjhHOEI4QThfU05PUk0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFZLX0ZPUk1BVF9SOEc4QjhBOF9TTk9STSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7CisgICAgICAgICAgICBy
ZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX1NURU5DSUxfSU5ERVg4Ogor
ICAgICAgICB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvcm1hdCBpbmZvKEdMX1NU
RU5DSUxfSU5ERVg4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZTo6Rm9ybWF0OjpJRDo6UzhfVUlOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVktfRk9STUFUX1M4X1VJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuIGluZm87CisgICAg
ICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IC8vIGNsYW5nLWZvcm1hdCBvbgorCisgICAgVU5SRUFDSEFCTEUoKTsKKyAgICBzdGF0aWMgY29u
c3QgRm9ybWF0IG5vSW5mbyhHTF9OT05FLCBhbmdsZTo6Rm9ybWF0OjpJRDo6Tk9ORSwgVktfRk9S
TUFUX1VOREVGSU5FRCwgbnVsbHB0cik7CisgICAgcmV0dXJuIG5vSW5mbzsKK30KKworfSAgLy8g
bmFtZXNwYWNlIHZrCisKK30gIC8vIG5hbWVzcGFjZSByeApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3NpZ25hbF91dGlscy5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvc2lnbmFsX3V0aWxzLmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNjJkNDViOTUzZmMuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9zaWduYWxfdXRpbHMuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTAzICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBzaWduYWxfdXRpbHM6Ci0vLyAgIEhl
bHBlciBjbGFzc2VzIGZvciB0cmFja2luZyBkZXBlbmRlbnQgc3RhdGUgY2hhbmdlcyBiZXR3ZWVu
IG9iamVjdHMuCi0vLyAgIFRoZXNlIGNoYW5nZXMgYXJlIHNpZ25hbGVkIHRvIHRoZSBkZXBlbmRl
bnQgY2xhc3MgdmlhIGNoYW5uZWxzLgotCi0jaW5jbHVkZSAibGliQU5HTEUvc2lnbmFsX3V0aWxz
LmgiCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0KLSNpbmNsdWRlICJjb21tb24vZGVidWcuaCIK
LQotbmFtZXNwYWNlIGFuZ2xlCi17Ci0KLUJyb2FkY2FzdENoYW5uZWw6OkJyb2FkY2FzdENoYW5u
ZWwoKQotewotfQotCi1Ccm9hZGNhc3RDaGFubmVsOjp+QnJvYWRjYXN0Q2hhbm5lbCgpCi17Ci0g
ICAgcmVzZXQoKTsKLX0KLQotdm9pZCBCcm9hZGNhc3RDaGFubmVsOjphZGRSZWNlaXZlcihDaGFu
bmVsQmluZGluZyAqcmVjZWl2ZXIpCi17Ci0gICAgQVNTRVJUKHN0ZDo6ZmluZChtUmVjZWl2ZXJz
LmJlZ2luKCksIG1SZWNlaXZlcnMuZW5kKCksIHJlY2VpdmVyKSA9PSBtUmVjZWl2ZXJzLmVuZCgp
KTsKLSAgICBtUmVjZWl2ZXJzLnB1c2hfYmFjayhyZWNlaXZlcik7Ci19Ci0KLXZvaWQgQnJvYWRj
YXN0Q2hhbm5lbDo6cmVtb3ZlUmVjZWl2ZXIoQ2hhbm5lbEJpbmRpbmcgKnJlY2VpdmVyKQotewot
ICAgIGF1dG8gaXRlciA9IHN0ZDo6ZmluZChtUmVjZWl2ZXJzLmJlZ2luKCksIG1SZWNlaXZlcnMu
ZW5kKCksIHJlY2VpdmVyKTsKLSAgICBBU1NFUlQoaXRlciAhPSBtUmVjZWl2ZXJzLmVuZCgpKTsK
LSAgICBtUmVjZWl2ZXJzLmVyYXNlKGl0ZXIpOwotfQotCi12b2lkIEJyb2FkY2FzdENoYW5uZWw6
OnNpZ25hbCgpIGNvbnN0Ci17Ci0gICAgaWYgKG1SZWNlaXZlcnMuZW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgZm9yIChjb25zdCBhdXRvICpyZWNlaXZlciA6IG1SZWNlaXZlcnMpCi0g
ICAgewotICAgICAgICByZWNlaXZlci0+c2lnbmFsKCk7Ci0gICAgfQotfQotCi12b2lkIEJyb2Fk
Y2FzdENoYW5uZWw6OnJlc2V0KCkKLXsKLSAgICBmb3IgKGF1dG8gcmVjZWl2ZXIgOiBtUmVjZWl2
ZXJzKQotICAgIHsKLSAgICAgICAgcmVjZWl2ZXItPm9uQ2hhbm5lbENsb3NlZCgpOwotICAgIH0K
LSAgICBtUmVjZWl2ZXJzLmNsZWFyKCk7Ci19Ci0KLUNoYW5uZWxCaW5kaW5nOjpDaGFubmVsQmlu
ZGluZyhTaWduYWxSZWNlaXZlciAqcmVjZWl2ZXIsIFNpZ25hbFRva2VuIHRva2VuKQotICAgIDog
bUNoYW5uZWwobnVsbHB0ciksIG1SZWNlaXZlcihyZWNlaXZlciksIG1Ub2tlbih0b2tlbikKLXsK
LSAgICBBU1NFUlQocmVjZWl2ZXIpOwotfQotCi1DaGFubmVsQmluZGluZzo6fkNoYW5uZWxCaW5k
aW5nKCkKLXsKLSAgICByZXNldCgpOwotfQotCi12b2lkIENoYW5uZWxCaW5kaW5nOjpiaW5kKEJy
b2FkY2FzdENoYW5uZWwgKmNoYW5uZWwpCi17Ci0gICAgQVNTRVJUKG1SZWNlaXZlcik7Ci0gICAg
aWYgKG1DaGFubmVsKQotICAgIHsKLSAgICAgICAgbUNoYW5uZWwtPnJlbW92ZVJlY2VpdmVyKHRo
aXMpOwotICAgIH0KLQotICAgIG1DaGFubmVsID0gY2hhbm5lbDsKLQotICAgIGlmIChtQ2hhbm5l
bCkKLSAgICB7Ci0gICAgICAgIG1DaGFubmVsLT5hZGRSZWNlaXZlcih0aGlzKTsKLSAgICB9Ci19
Ci0KLXZvaWQgQ2hhbm5lbEJpbmRpbmc6OnJlc2V0KCkKLXsKLSAgICBiaW5kKG51bGxwdHIpOwot
fQotCi12b2lkIENoYW5uZWxCaW5kaW5nOjpzaWduYWwoKSBjb25zdAotewotICAgIG1SZWNlaXZl
ci0+c2lnbmFsKG1Ub2tlbik7Ci19Ci0KLXZvaWQgQ2hhbm5lbEJpbmRpbmc6Om9uQ2hhbm5lbENs
b3NlZCgpCi17Ci0gICAgbUNoYW5uZWwgPSBudWxscHRyOwotfQotCi19ICAvLyBuYW1lc3BhY2Ug
YW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9z
aWduYWxfdXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9zaWdu
YWxfdXRpbHMuaAppbmRleCA4MzVmMmM2MDJkMi4uODRkNzQ3ODc2MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9zaWduYWxfdXRpbHMuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvc2lnbmFsX3V0aWxzLmgKQEAgLTEz
LDYyICsxMywxNjUgQEAKICNpbmNsdWRlIDxzZXQ+CiAKICNpbmNsdWRlICJjb21tb24vYW5nbGV1
dGlscy5oIgorI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgogCiBuYW1lc3BhY2UgYW5nbGUKIHsK
IAotLy8gTWVzc2FnZSB0b2tlbiBwYXNzZWQgdG8gdGhlIHJlY2VpdmVyOwotdXNpbmcgU2lnbmFs
VG9rZW4gPSB1aW50MzJfdDsKLQogLy8gSW50ZXJmYWNlIHRoYXQgdGhlIGRlcGVuZGluZyBjbGFz
cyBpbmhlcml0cyBmcm9tLgordGVtcGxhdGUgPHR5cGVuYW1lIENoYW5uZWxJRCA9IHVpbnQzMl90
LCB0eXBlbmFtZS4uLiBNZXNzYWdlVD4KIGNsYXNzIFNpZ25hbFJlY2VpdmVyCiB7CiAgIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5TaWduYWxSZWNlaXZlcigpID0gZGVmYXVsdDsKLSAgICB2aXJ0dWFs
IHZvaWQgc2lnbmFsKFNpZ25hbFRva2VuIHRva2VuKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNp
Z25hbChDaGFubmVsSUQgY2hhbm5lbElELCBNZXNzYWdlVC4uLiBtZXNzYWdlKSA9IDA7CiB9Owog
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhbm5lbElELCB0eXBlbmFtZS4uLiBNZXNzYWdlVD4KIGNs
YXNzIENoYW5uZWxCaW5kaW5nOwogCiAvLyBUaGUgaG9zdCBjbGFzcyBvd25zIHRoZSBjaGFubmVs
LiBJdCB1c2VzIHRoZSBjaGFubmVsIHRvIGZpcmUgc2lnbmFscyB0byB0aGUgcmVjZWl2ZXIuCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhbm5lbElEID0gdWludDMyX3QsIHR5cGVuYW1lLi4uIE1lc3Nh
Z2VUPgogY2xhc3MgQnJvYWRjYXN0Q2hhbm5lbCBmaW5hbCA6IE5vbkNvcHlhYmxlCiB7CiAgIHB1
YmxpYzoKICAgICBCcm9hZGNhc3RDaGFubmVsKCk7CiAgICAgfkJyb2FkY2FzdENoYW5uZWwoKTsK
IAotICAgIHZvaWQgc2lnbmFsKCkgY29uc3Q7CisgICAgdm9pZCBzaWduYWwoTWVzc2FnZVQuLi4g
bWVzc2FnZSkgY29uc3Q7CisKICAgICB2b2lkIHJlc2V0KCk7CiAKICAgcHJpdmF0ZToKICAgICAv
LyBPbmx5IHRoZSBDaGFubmVsQmluZGluZyBjbGFzcyBzaG91bGQgYWRkIG9yIHJlbW92ZSByZWNl
aXZlcnMuCi0gICAgZnJpZW5kIGNsYXNzIENoYW5uZWxCaW5kaW5nOwotICAgIHZvaWQgYWRkUmVj
ZWl2ZXIoQ2hhbm5lbEJpbmRpbmcgKnJlY2VpdmVyKTsKLSAgICB2b2lkIHJlbW92ZVJlY2VpdmVy
KENoYW5uZWxCaW5kaW5nICpyZWNlaXZlcik7CisgICAgZnJpZW5kIGNsYXNzIENoYW5uZWxCaW5k
aW5nPENoYW5uZWxJRCwgTWVzc2FnZVQuLi4+OworICAgIHZvaWQgYWRkUmVjZWl2ZXIoQ2hhbm5l
bEJpbmRpbmc8Q2hhbm5lbElELCBNZXNzYWdlVC4uLj4gKnJlY2VpdmVyKTsKKyAgICB2b2lkIHJl
bW92ZVJlY2VpdmVyKENoYW5uZWxCaW5kaW5nPENoYW5uZWxJRCwgTWVzc2FnZVQuLi4+ICpyZWNl
aXZlcik7CiAKLSAgICBzdGQ6OnZlY3RvcjxDaGFubmVsQmluZGluZyAqPiBtUmVjZWl2ZXJzOwor
ICAgIHN0ZDo6dmVjdG9yPENoYW5uZWxCaW5kaW5nPENoYW5uZWxJRCwgTWVzc2FnZVQuLi4+ICo+
IG1SZWNlaXZlcnM7CiB9OwogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhbm5lbElELCB0eXBlbmFt
ZS4uLiBNZXNzYWdlVD4KK0Jyb2FkY2FzdENoYW5uZWw8Q2hhbm5lbElELCBNZXNzYWdlVC4uLj46
OkJyb2FkY2FzdENoYW5uZWwoKQoreworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhbm5lbElE
LCB0eXBlbmFtZS4uLiBNZXNzYWdlVD4KK0Jyb2FkY2FzdENoYW5uZWw8Q2hhbm5lbElELCBNZXNz
YWdlVC4uLj46On5Ccm9hZGNhc3RDaGFubmVsKCkKK3sKKyAgICByZXNldCgpOworfQorCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQ2hhbm5lbElELCB0eXBlbmFtZS4uLiBNZXNzYWdlVD4KK3ZvaWQgQnJv
YWRjYXN0Q2hhbm5lbDxDaGFubmVsSUQsIE1lc3NhZ2VULi4uPjo6YWRkUmVjZWl2ZXIoCisgICAg
Q2hhbm5lbEJpbmRpbmc8Q2hhbm5lbElELCBNZXNzYWdlVC4uLj4gKnJlY2VpdmVyKQoreworICAg
IEFTU0VSVChzdGQ6OmZpbmQobVJlY2VpdmVycy5iZWdpbigpLCBtUmVjZWl2ZXJzLmVuZCgpLCBy
ZWNlaXZlcikgPT0gbVJlY2VpdmVycy5lbmQoKSk7CisgICAgbVJlY2VpdmVycy5wdXNoX2JhY2so
cmVjZWl2ZXIpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhbm5lbElELCB0eXBlbmFtZS4u
LiBNZXNzYWdlVD4KK3ZvaWQgQnJvYWRjYXN0Q2hhbm5lbDxDaGFubmVsSUQsIE1lc3NhZ2VULi4u
Pjo6cmVtb3ZlUmVjZWl2ZXIoCisgICAgQ2hhbm5lbEJpbmRpbmc8Q2hhbm5lbElELCBNZXNzYWdl
VC4uLj4gKnJlY2VpdmVyKQoreworICAgIGF1dG8gaXRlciA9IHN0ZDo6ZmluZChtUmVjZWl2ZXJz
LmJlZ2luKCksIG1SZWNlaXZlcnMuZW5kKCksIHJlY2VpdmVyKTsKKyAgICBBU1NFUlQoaXRlciAh
PSBtUmVjZWl2ZXJzLmVuZCgpKTsKKyAgICBtUmVjZWl2ZXJzLmVyYXNlKGl0ZXIpOworfQorCit0
ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhbm5lbElELCB0eXBlbmFtZS4uLiBNZXNzYWdlVD4KK3ZvaWQg
QnJvYWRjYXN0Q2hhbm5lbDxDaGFubmVsSUQsIE1lc3NhZ2VULi4uPjo6c2lnbmFsKE1lc3NhZ2VU
Li4uIG1lc3NhZ2UpIGNvbnN0Cit7CisgICAgaWYgKG1SZWNlaXZlcnMuZW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZm9yIChjb25zdCBhdXRvICpyZWNlaXZlciA6IG1SZWNlaXZlcnMp
CisgICAgeworICAgICAgICByZWNlaXZlci0+c2lnbmFsKG1lc3NhZ2UuLi4pOworICAgIH0KK30K
KwordGVtcGxhdGUgPHR5cGVuYW1lIENoYW5uZWxJRCwgdHlwZW5hbWUuLi4gTWVzc2FnZVQ+Cit2
b2lkIEJyb2FkY2FzdENoYW5uZWw8Q2hhbm5lbElELCBNZXNzYWdlVC4uLj46OnJlc2V0KCkKK3sK
KyAgICBmb3IgKGF1dG8gcmVjZWl2ZXIgOiBtUmVjZWl2ZXJzKQorICAgIHsKKyAgICAgICAgcmVj
ZWl2ZXItPm9uQ2hhbm5lbENsb3NlZCgpOworICAgIH0KKyAgICBtUmVjZWl2ZXJzLmNsZWFyKCk7
Cit9CisKIC8vIFRoZSBkZXBlbmRlbnQgY2xhc3Mga2VlcHMgYmluZGluZ3MgdG8gdGhlIGhvc3Qn
cyBCcm9hZGNhc3RDaGFubmVsLgordGVtcGxhdGUgPHR5cGVuYW1lIENoYW5uZWxJRCA9IHVpbnQz
Ml90LCB0eXBlbmFtZS4uLiBNZXNzYWdlVD4KIGNsYXNzIENoYW5uZWxCaW5kaW5nIGZpbmFsCiB7
CiAgIHB1YmxpYzoKLSAgICBDaGFubmVsQmluZGluZyhTaWduYWxSZWNlaXZlciAqcmVjZWl2ZXIs
IFNpZ25hbFRva2VuIHRva2VuKTsKKyAgICBDaGFubmVsQmluZGluZyhTaWduYWxSZWNlaXZlcjxD
aGFubmVsSUQsIE1lc3NhZ2VULi4uPiAqcmVjZWl2ZXIsIENoYW5uZWxJRCBjaGFubmVsSUQpOwog
ICAgIH5DaGFubmVsQmluZGluZygpOwogICAgIENoYW5uZWxCaW5kaW5nKGNvbnN0IENoYW5uZWxC
aW5kaW5nICZvdGhlcikgPSBkZWZhdWx0OwogICAgIENoYW5uZWxCaW5kaW5nICZvcGVyYXRvcj0o
Y29uc3QgQ2hhbm5lbEJpbmRpbmcgJm90aGVyKSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIGJpbmQo
QnJvYWRjYXN0Q2hhbm5lbCAqY2hhbm5lbCk7CisgICAgdm9pZCBiaW5kKEJyb2FkY2FzdENoYW5u
ZWw8Q2hhbm5lbElELCBNZXNzYWdlVC4uLj4gKmNoYW5uZWwpOwogICAgIHZvaWQgcmVzZXQoKTsK
LSAgICB2b2lkIHNpZ25hbCgpIGNvbnN0OworICAgIHZvaWQgc2lnbmFsKE1lc3NhZ2VULi4uIG1l
c3NhZ2UpIGNvbnN0OwogICAgIHZvaWQgb25DaGFubmVsQ2xvc2VkKCk7CiAKICAgcHJpdmF0ZToK
LSAgICBCcm9hZGNhc3RDaGFubmVsICptQ2hhbm5lbDsKLSAgICBTaWduYWxSZWNlaXZlciAqbVJl
Y2VpdmVyOwotICAgIFNpZ25hbFRva2VuIG1Ub2tlbjsKKyAgICBCcm9hZGNhc3RDaGFubmVsPENo
YW5uZWxJRCwgTWVzc2FnZVQuLi4+ICptQ2hhbm5lbDsKKyAgICBTaWduYWxSZWNlaXZlcjxDaGFu
bmVsSUQsIE1lc3NhZ2VULi4uPiAqbVJlY2VpdmVyOworICAgIENoYW5uZWxJRCBtQ2hhbm5lbElE
OwogfTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIENoYW5uZWxJRCwgdHlwZW5hbWUuLi4gTWVzc2Fn
ZVQ+CitDaGFubmVsQmluZGluZzxDaGFubmVsSUQsIE1lc3NhZ2VULi4uPjo6Q2hhbm5lbEJpbmRp
bmcoCisgICAgU2lnbmFsUmVjZWl2ZXI8Q2hhbm5lbElELCBNZXNzYWdlVC4uLj4gKnJlY2VpdmVy
LAorICAgIENoYW5uZWxJRCBjaGFubmVsSUQpCisgICAgOiBtQ2hhbm5lbChudWxscHRyKSwgbVJl
Y2VpdmVyKHJlY2VpdmVyKSwgbUNoYW5uZWxJRChjaGFubmVsSUQpCit7CisgICAgQVNTRVJUKHJl
Y2VpdmVyKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYW5uZWxJRCwgdHlwZW5hbWUuLi4g
TWVzc2FnZVQ+CitDaGFubmVsQmluZGluZzxDaGFubmVsSUQsIE1lc3NhZ2VULi4uPjo6fkNoYW5u
ZWxCaW5kaW5nKCkKK3sKKyAgICByZXNldCgpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hh
bm5lbElELCB0eXBlbmFtZS4uLiBNZXNzYWdlVD4KK3ZvaWQgQ2hhbm5lbEJpbmRpbmc8Q2hhbm5l
bElELCBNZXNzYWdlVC4uLj46OmJpbmQoQnJvYWRjYXN0Q2hhbm5lbDxDaGFubmVsSUQsIE1lc3Nh
Z2VULi4uPiAqY2hhbm5lbCkKK3sKKyAgICBBU1NFUlQobVJlY2VpdmVyKTsKKyAgICBpZiAobUNo
YW5uZWwpCisgICAgeworICAgICAgICBtQ2hhbm5lbC0+cmVtb3ZlUmVjZWl2ZXIodGhpcyk7Cisg
ICAgfQorCisgICAgbUNoYW5uZWwgPSBjaGFubmVsOworCisgICAgaWYgKG1DaGFubmVsKQorICAg
IHsKKyAgICAgICAgbUNoYW5uZWwtPmFkZFJlY2VpdmVyKHRoaXMpOworICAgIH0KK30KKwordGVt
cGxhdGUgPHR5cGVuYW1lIENoYW5uZWxJRCwgdHlwZW5hbWUuLi4gTWVzc2FnZVQ+Cit2b2lkIENo
YW5uZWxCaW5kaW5nPENoYW5uZWxJRCwgTWVzc2FnZVQuLi4+OjpyZXNldCgpCit7CisgICAgYmlu
ZChudWxscHRyKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENoYW5uZWxJRCwgdHlwZW5hbWUu
Li4gTWVzc2FnZVQ+Cit2b2lkIENoYW5uZWxCaW5kaW5nPENoYW5uZWxJRCwgTWVzc2FnZVQuLi4+
OjpzaWduYWwoTWVzc2FnZVQuLi4gbWVzc2FnZSkgY29uc3QKK3sKKyAgICBtUmVjZWl2ZXItPnNp
Z25hbChtQ2hhbm5lbElELCBtZXNzYWdlLi4uKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIENo
YW5uZWxJRCwgdHlwZW5hbWUuLi4gTWVzc2FnZVQ+Cit2b2lkIENoYW5uZWxCaW5kaW5nPENoYW5u
ZWxJRCwgTWVzc2FnZVQuLi4+OjpvbkNoYW5uZWxDbG9zZWQoKQoreworICAgIG1DaGFubmVsID0g
bnVsbHB0cjsKK30KKwogfSAgLy8gbmFtZXNwYWNlIGFuZ2xlCiAKICNlbmRpZiAgLy8gTElCQU5H
TEVfU0lHTkFMX1VUSUxTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvc2lnbmFsX3V0aWxzX3VuaXR0ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJBTkdMRS9zaWduYWxfdXRpbHNfdW5pdHRlc3QuY3BwCmluZGV4IGZhYzli
NjdkZjQzLi4wNmNiMzkyMjkxNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3NpZ25hbF91dGlsc191bml0dGVzdC5jcHAKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3NpZ25hbF91dGlsc191bml0dGVzdC5jcHAKQEAgLTE2
LDE4ICsxNiwxOCBAQCB1c2luZyBuYW1lc3BhY2UgdGVzdGluZzsKIG5hbWVzcGFjZQogewogCi1z
dHJ1Y3QgU2lnbmFsVGhpbmcgOiBwdWJsaWMgU2lnbmFsUmVjZWl2ZXIKK3N0cnVjdCBTaWduYWxU
aGluZyA6IHB1YmxpYyBTaWduYWxSZWNlaXZlcjw+CiB7Ci0gICAgdm9pZCBzaWduYWwoU2lnbmFs
VG9rZW4gdG9rZW4pIG92ZXJyaWRlIHsgd2FzU2lnbmFsZWQgPSB0cnVlOyB9CisgICAgdm9pZCBz
aWduYWwodWludDMyX3QgY2hhbm5lbElEKSBvdmVycmlkZSB7IHdhc1NpZ25hbGVkID0gdHJ1ZTsg
fQogICAgIGJvb2wgd2FzU2lnbmFsZWQgPSBmYWxzZTsKIH07CiAKIC8vIFRlc3QgdGhhdCBicm9h
ZGNhc3Qgc2lnbmFscyB3b3JrLgogVEVTVChTaWduYWxUZXN0LCBCcm9hZGNhc3RTaWduYWxzKQog
ewotICAgIEJyb2FkY2FzdENoYW5uZWwgY2hhbm5lbDsKKyAgICBCcm9hZGNhc3RDaGFubmVsPD4g
Y2hhbm5lbDsKICAgICBTaWduYWxUaGluZyB0aGluZzsKLSAgICBDaGFubmVsQmluZGluZyBiaW5k
aW5nKCZ0aGluZywgMHUpOworICAgIENoYW5uZWxCaW5kaW5nPD4gYmluZGluZygmdGhpbmcsIDB1
KTsKIAogICAgIGJpbmRpbmcuYmluZCgmY2hhbm5lbCk7CiAgICAgQVNTRVJUX0ZBTFNFKHRoaW5n
Lndhc1NpZ25hbGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS92YWxpZGF0aW9uRUdMLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS92YWxpZGF0aW9uRUdMLmNwcAppbmRleCBmYWEyNDNjNzNlMC4uMjYxOWEzYTBlZDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0
aW9uRUdMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFs
aWRhdGlvbkVHTC5jcHAKQEAgLTE1Miw2ICsxNTIsNzggQEAgZWdsOjpFcnJvciBWYWxpZGF0ZUNy
ZWF0ZUltYWdlS0hSTWlwTGV2ZWxDb21tb24oZ2w6OkNvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0
dXJuIGVnbDo6RXJyb3IoRUdMX1NVQ0NFU1MpOwogfQogCitlZ2w6OkVycm9yIFZhbGlkYXRlQ29u
ZmlnQXR0cmlidXRlKGNvbnN0IGVnbDo6RGlzcGxheSAqZGlzcGxheSwgRUdMQXR0cmliIGF0dHJp
YnV0ZSkKK3sKKyAgICBzd2l0Y2ggKGF0dHJpYnV0ZSkKKyAgICB7CisgICAgICAgIGNhc2UgRUdM
X0JVRkZFUl9TSVpFOgorICAgICAgICBjYXNlIEVHTF9BTFBIQV9TSVpFOgorICAgICAgICBjYXNl
IEVHTF9CTFVFX1NJWkU6CisgICAgICAgIGNhc2UgRUdMX0dSRUVOX1NJWkU6CisgICAgICAgIGNh
c2UgRUdMX1JFRF9TSVpFOgorICAgICAgICBjYXNlIEVHTF9ERVBUSF9TSVpFOgorICAgICAgICBj
YXNlIEVHTF9TVEVOQ0lMX1NJWkU6CisgICAgICAgIGNhc2UgRUdMX0NPTkZJR19DQVZFQVQ6Cisg
ICAgICAgIGNhc2UgRUdMX0NPTkZJR19JRDoKKyAgICAgICAgY2FzZSBFR0xfTEVWRUw6CisgICAg
ICAgIGNhc2UgRUdMX05BVElWRV9SRU5ERVJBQkxFOgorICAgICAgICBjYXNlIEVHTF9OQVRJVkVf
VklTVUFMX0lEOgorICAgICAgICBjYXNlIEVHTF9OQVRJVkVfVklTVUFMX1RZUEU6CisgICAgICAg
IGNhc2UgRUdMX1NBTVBMRVM6CisgICAgICAgIGNhc2UgRUdMX1NBTVBMRV9CVUZGRVJTOgorICAg
ICAgICBjYXNlIEVHTF9TVVJGQUNFX1RZUEU6CisgICAgICAgIGNhc2UgRUdMX1RSQU5TUEFSRU5U
X1RZUEU6CisgICAgICAgIGNhc2UgRUdMX1RSQU5TUEFSRU5UX0JMVUVfVkFMVUU6CisgICAgICAg
IGNhc2UgRUdMX1RSQU5TUEFSRU5UX0dSRUVOX1ZBTFVFOgorICAgICAgICBjYXNlIEVHTF9UUkFO
U1BBUkVOVF9SRURfVkFMVUU6CisgICAgICAgIGNhc2UgRUdMX0JJTkRfVE9fVEVYVFVSRV9SR0I6
CisgICAgICAgIGNhc2UgRUdMX0JJTkRfVE9fVEVYVFVSRV9SR0JBOgorICAgICAgICBjYXNlIEVH
TF9NSU5fU1dBUF9JTlRFUlZBTDoKKyAgICAgICAgY2FzZSBFR0xfTUFYX1NXQVBfSU5URVJWQUw6
CisgICAgICAgIGNhc2UgRUdMX0xVTUlOQU5DRV9TSVpFOgorICAgICAgICBjYXNlIEVHTF9BTFBI
QV9NQVNLX1NJWkU6CisgICAgICAgIGNhc2UgRUdMX0NPTE9SX0JVRkZFUl9UWVBFOgorICAgICAg
ICBjYXNlIEVHTF9SRU5ERVJBQkxFX1RZUEU6CisgICAgICAgIGNhc2UgRUdMX01BVENIX05BVElW
RV9QSVhNQVA6CisgICAgICAgIGNhc2UgRUdMX0NPTkZPUk1BTlQ6CisgICAgICAgIGNhc2UgRUdM
X01BWF9QQlVGRkVSX1dJRFRIOgorICAgICAgICBjYXNlIEVHTF9NQVhfUEJVRkZFUl9IRUlHSFQ6
CisgICAgICAgIGNhc2UgRUdMX01BWF9QQlVGRkVSX1BJWEVMUzoKKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGNhc2UgRUdMX09QVElNQUxfU1VSRkFDRV9PUklFTlRBVElPTl9BTkdMRToK
KyAgICAgICAgICAgIGlmICghZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygpLnN1cmZhY2VPcmllbnRh
dGlvbikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZWdsOjpFcnJvcihF
R0xfQkFEX0FUVFJJQlVURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRUdM
X0FOR0xFX3N1cmZhY2Vfb3JpZW50YXRpb24gaXMgbm90IGVuYWJsZWQuIik7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEVHTF9DT0xPUl9DT01QT05F
TlRfVFlQRV9FWFQ6CisgICAgICAgICAgICBpZiAoIWRpc3BsYXktPmdldEV4dGVuc2lvbnMoKS5w
aXhlbEZvcm1hdEZsb2F0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBl
Z2w6OkVycm9yKEVHTF9CQURfQVRUUklCVVRFLCAiRUdMX0VYVF9waXhlbF9mb3JtYXRfZmxvYXQg
aXMgbm90IGVuYWJsZWQuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGVnbDo6RXJyb3IoRUdMX0JBRF9B
VFRSSUJVVEUsICJVbmtub3duIGF0dHJpYnV0ZS4iKTsKKyAgICB9CisKKyAgICByZXR1cm4gZWds
OjpOb0Vycm9yKCk7Cit9CisKK2VnbDo6RXJyb3IgVmFsaWRhdGVDb25maWdBdHRyaWJ1dGVzKGNv
bnN0IGVnbDo6RGlzcGxheSAqZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICZhdHRyaWJ1dGVzKQoreworICAgIGZvciAo
Y29uc3QgYXV0byAmYXR0cmliIDogYXR0cmlidXRlcykKKyAgICB7CisgICAgICAgIEFOR0xFX1RS
WShWYWxpZGF0ZUNvbmZpZ0F0dHJpYnV0ZShkaXNwbGF5LCBhdHRyaWIuZmlyc3QpKTsKKyAgICB9
CisKKyAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZQogCiBu
YW1lc3BhY2UgZWdsCkBAIC0xODIsNyArMjU0LDcgQEAgRXJyb3IgVmFsaWRhdGVEaXNwbGF5KGNv
bnN0IERpc3BsYXkgKmRpc3BsYXkpCiAgICAgcmV0dXJuIEVycm9yKEVHTF9TVUNDRVNTKTsKIH0K
IAotRXJyb3IgVmFsaWRhdGVTdXJmYWNlKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksIFN1cmZhY2Ug
KnN1cmZhY2UpCitFcnJvciBWYWxpZGF0ZVN1cmZhY2UoY29uc3QgRGlzcGxheSAqZGlzcGxheSwg
Y29uc3QgU3VyZmFjZSAqc3VyZmFjZSkKIHsKICAgICBBTkdMRV9UUlkoVmFsaWRhdGVEaXNwbGF5
KGRpc3BsYXkpKTsKIApAQCAtMjA2LDcgKzI3OCw3IEBAIEVycm9yIFZhbGlkYXRlQ29uZmlnKGNv
bnN0IERpc3BsYXkgKmRpc3BsYXksIGNvbnN0IENvbmZpZyAqY29uZmlnKQogICAgIHJldHVybiBF
cnJvcihFR0xfU1VDQ0VTUyk7CiB9CiAKLUVycm9yIFZhbGlkYXRlQ29udGV4dChjb25zdCBEaXNw
bGF5ICpkaXNwbGF5LCBnbDo6Q29udGV4dCAqY29udGV4dCkKK0Vycm9yIFZhbGlkYXRlQ29udGV4
dChjb25zdCBEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKIHsK
ICAgICBBTkdMRV9UUlkoVmFsaWRhdGVEaXNwbGF5KGRpc3BsYXkpKTsKIApAQCAtMjU4LDcgKzMz
MCw2IEBAIEVycm9yIFZhbGlkYXRlQ3JlYXRlQ29udGV4dChEaXNwbGF5ICpkaXNwbGF5LCBDb25m
aWcgKmNvbmZpZ3VyYXRpb24sIGdsOjpDb250ZXh0CiAgICAgRUdMQXR0cmliIGNsaWVudE1pbm9y
VmVyc2lvbiA9IDA7CiAgICAgRUdMQXR0cmliIGNvbnRleHRGbGFncyAgICAgICA9IDA7CiAgICAg
Ym9vbCByZXNldE5vdGlmaWNhdGlvbiA9IGZhbHNlOwotICAgIGJvb2wgcm9idXN0QWNjZXNzID0g
ZmFsc2U7CiAgICAgZm9yIChBdHRyaWJ1dGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGF0dHJpYnV0ZUl0
ZXIgPSBhdHRyaWJ1dGVzLmJlZ2luKCk7IGF0dHJpYnV0ZUl0ZXIgIT0gYXR0cmlidXRlcy5lbmQo
KTsgYXR0cmlidXRlSXRlcisrKQogICAgIHsKICAgICAgICAgRUdMQXR0cmliIGF0dHJpYnV0ZSA9
IGF0dHJpYnV0ZUl0ZXItPmZpcnN0OwpAQCAtMjk0LDcgKzM2NSw2IEBAIEVycm9yIFZhbGlkYXRl
Q3JlYXRlQ29udGV4dChEaXNwbGF5ICpkaXNwbGF5LCBDb25maWcgKmNvbmZpZ3VyYXRpb24sIGds
OjpDb250ZXh0CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVH
TF9CQURfQVRUUklCVVRFKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJvYnVzdEFjY2Vz
cyA9ICh2YWx1ZSA9PSBFR0xfVFJVRSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAg
IGNhc2UgRUdMX0NPTlRFWFRfT1BFTkdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9LSFI6
CkBAIC0zNTcsOCArNDI3LDYwIEBAIEVycm9yIFZhbGlkYXRlQ3JlYXRlQ29udGV4dChEaXNwbGF5
ICpkaXNwbGF5LCBDb25maWcgKmNvbmZpZ3VyYXRpb24sIGdsOjpDb250ZXh0CiAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgICBjYXNlIEVHTF9ESVNQTEFZ
X1RFWFRVUkVfU0hBUkVfR1JPVVBfQU5HTEU6CisgICAgICAgICAgICAgIGlmICghZGlzcGxheS0+
Z2V0RXh0ZW5zaW9ucygpLmRpc3BsYXlUZXh0dXJlU2hhcmVHcm91cCkKKyAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQVRUUklCVVRFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBdHRyaWJ1dGUgRUdMX0RJU1BMQVlfVEVYVFVS
RV9TSEFSRV9HUk9VUF9BTkdMRSByZXF1aXJlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIkVHTF9BTkdMRV9kaXNwbGF5X3RleHR1cmVfc2hhcmVfZ3JvdXAuIik7CisgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IEVHTF9UUlVFICYmIHZhbHVlICE9
IEVHTF9GQUxTRSkKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIEVy
cm9yKAorICAgICAgICAgICAgICAgICAgICAgIEVHTF9CQURfQVRUUklCVVRFLAorICAgICAgICAg
ICAgICAgICAgICAgICJFR0xfRElTUExBWV9URVhUVVJFX1NIQVJFX0dST1VQX0FOR0xFIG11c3Qg
YmUgRUdMX1RSVUUgb3IgRUdMX0ZBTFNFLiIpOworICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgIGlmIChzaGFyZUNvbnRleHQgJiYKKyAgICAgICAgICAgICAgICAgIChzaGFyZUNvbnRleHQt
PnVzaW5nRGlzcGxheVRleHR1cmVTaGFyZUdyb3VwKCkgIT0gKHZhbHVlID09IEVHTF9UUlVFKSkp
CisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFE
X0FUVFJJQlVURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWxsIGNvbnRleHRz
IHdpdGhpbiBhIHNoYXJlIGdyb3VwIG11c3QgYmUgY3JlYXRlZCB3aXRoIHRoZSBzYW1lICIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWUgb2YgRUdMX0RJU1BMQVlfVEVYVFVS
RV9TSEFSRV9HUk9VUF9BTkdMRS4iKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgIGNhc2UgRUdMX0NPTlRFWFRfQ0xJRU5UX0FSUkFZU19FTkFCTEVE
X0FOR0xFOgorICAgICAgICAgICAgICBpZiAoIWRpc3BsYXktPmdldEV4dGVuc2lvbnMoKS5jcmVh
dGVDb250ZXh0Q2xpZW50QXJyYXlzKQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkF0dHJpYnV0ZSBFR0xfQ09OVEVYVF9DTElFTlRfQVJSQVlTX0VOQUJMRURfQU5H
TEUgcmVxdWlyZXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfQU5HTEVf
Y3JlYXRlX2NvbnRleHRfY2xpZW50X2FycmF5cy4iKTsKKyAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICBpZiAodmFsdWUgIT0gRUdMX1RSVUUgJiYgdmFsdWUgIT0gRUdMX0ZBTFNFKQorICAg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9BVFRS
SUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9DT05URVhUX0NMSUVO
VF9BUlJBWVNfRU5BQkxFRF9BTkdMRSBtdXN0IGJlIEVHTF9UUlVFIG9yICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRUdMX0ZBTFNFLiIpOworICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgY2FzZSBFR0xfQ09OVEVYVF9ST0JVU1RfUkVT
T1VSQ0VfSU5JVElBTElaQVRJT05fQU5HTEU6CisgICAgICAgICAgICAgIGlmICghZGlzcGxheS0+
Z2V0RXh0ZW5zaW9ucygpLmNyZWF0ZUNvbnRleHRSb2J1c3RSZXNvdXJjZUluaXRpYWxpemF0aW9u
KQorICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JB
RF9BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkF0dHJpYnV0ZSBF
R0xfQ09OVEVYVF9ST0JVU1RfUkVTT1VSQ0VfSU5JVElBTElaQVRJT05fQU5HTEUgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyBFR0xfQU5HTEVfY3JlYXRlX2NvbnRl
eHRfcm9idXN0X3Jlc291cmNlX2luaXRpYWxpemF0aW9uLiIpOworICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBFR0xfVFJVRSAmJiB2YWx1ZSAhPSBFR0xfRkFMU0Up
CisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFE
X0FUVFJJQlVURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRUdMX0NPTlRFWFRf
Uk9CVVNUX1JFU09VUkNFX0lOSVRJQUxJWkFUSU9OX0FOR0xFIG11c3QgYmUgIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJlaXRoZXIgRUdMX1RSVUUgb3IgRUdMX0ZBTFNFLiIpOwor
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FUVFJJQlVURSk7CisgICAgICAg
ICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgIlVua25vd24gYXR0cmlidXRl
LiIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zOTksMTcgKzUyMSw2IEBAIEVycm9yIFZhbGlk
YXRlQ3JlYXRlQ29udGV4dChEaXNwbGF5ICpkaXNwbGF5LCBDb25maWcgKmNvbmZpZ3VyYXRpb24s
IGdsOjpDb250ZXh0CiAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FUVFJJQlVURSk7CiAg
ICAgfQogCi0gICAgaWYgKChjb250ZXh0RmxhZ3MgJiBFR0xfQ09OVEVYVF9PUEVOR0xfUk9CVVNU
X0FDQ0VTU19CSVRfS0hSKSA+IDApCi0gICAgewotICAgICAgICByb2J1c3RBY2Nlc3MgPSB0cnVl
OwotICAgIH0KLQotICAgIGlmIChyb2J1c3RBY2Nlc3MpCi0gICAgewotICAgICAgICAvLyBVbmlt
cGxlbWVudGVkCi0gICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0NPTkZJRyk7Ci0gICAgfQot
CiAgICAgaWYgKHNoYXJlQ29udGV4dCkKICAgICB7CiAgICAgICAgIC8vIFNoYXJlZCBjb250ZXh0
IGlzIGludmFsaWQgb3IgaXMgb3duZWQgYnkgYW5vdGhlciBkaXNwbGF5CkBAIC02NTMsNiArNzY0
LDE3IEBAIEVycm9yIFZhbGlkYXRlQ3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoRGlzcGxh
eSAqZGlzcGxheSwgRUdMZW51bSBidWZ0eXBlLCBFCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7
CiAKKyAgICAgIGNhc2UgRUdMX0QzRF9URVhUVVJFX0FOR0xFOgorICAgICAgICAgIGlmICghZGlz
cGxheUV4dGVuc2lvbnMuZDNkVGV4dHVyZUNsaWVudEJ1ZmZlcikKKyAgICAgICAgICB7CisgICAg
ICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1BBUkFNRVRFUik7CisgICAgICAgICAgfQor
ICAgICAgICAgIGlmIChidWZmZXIgPT0gbnVsbHB0cikKKyAgICAgICAgICB7CisgICAgICAgICAg
ICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1BBUkFNRVRFUik7CisgICAgICAgICAgfQorICAgICAg
ICAgIGJyZWFrOworCiAgICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JB
RF9QQVJBTUVURVIpOwogICAgIH0KQEAgLTc1Myw5ICs4NzUsOTkgQEAgRXJyb3IgVmFsaWRhdGVD
cmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihEaXNwbGF5ICpkaXNwbGF5LCBFR0xlbnVtIGJ1
ZnR5cGUsIEUKICAgICAgICAgfQogICAgIH0KIAorICAgIEFOR0xFX1RSWShkaXNwbGF5LT52YWxp
ZGF0ZUNsaWVudEJ1ZmZlcihjb25maWcsIGJ1ZnR5cGUsIGJ1ZmZlciwgYXR0cmlidXRlcykpOwor
CiAgICAgcmV0dXJuIEVycm9yKEVHTF9TVUNDRVNTKTsKIH0KIAorRXJyb3IgVmFsaWRhdGVNYWtl
Q3VycmVudChEaXNwbGF5ICpkaXNwbGF5LCBFR0xTdXJmYWNlIGRyYXcsIEVHTFN1cmZhY2UgcmVh
ZCwgZ2w6OkNvbnRleHQgKmNvbnRleHQpCit7CisgICAgaWYgKGNvbnRleHQgPT0gRUdMX05PX0NP
TlRFWFQgJiYgKGRyYXcgIT0gRUdMX05PX1NVUkZBQ0UgfHwgcmVhZCAhPSBFR0xfTk9fU1VSRkFD
RSkpCisgICAgeworICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9NQVRDSCwgIklmIGN0eCBp
cyBFR0xfTk9fQ09OVEVYVCwgc3VyZmFjZXMgbXVzdCBiZSBFR0xfTk9fU1VSRkFDRSIpOworICAg
IH0KKworICAgIC8vIElmIGN0eCBpcyBFR0xfTk9fQ09OVEVYVCBhbmQgZWl0aGVyIGRyYXcgb3Ig
cmVhZCBhcmUgbm90IEVHTF9OT19TVVJGQUNFLCBhbiBFR0xfQkFEX01BVENICisgICAgLy8gZXJy
b3IgaXMgZ2VuZXJhdGVkLiBFR0xfS0hSX3N1cmZhY2VsZXNzX2NvbnRleHQgYWxsb3dzIGJvdGgg
c3VyZmFjZXMgdG8gYmUgRUdMX05PX1NVUkZBQ0UuCisgICAgaWYgKGNvbnRleHQgIT0gRUdMX05P
X0NPTlRFWFQgJiYgKGRyYXcgPT0gRUdMX05PX1NVUkZBQ0UgfHwgcmVhZCA9PSBFR0xfTk9fU1VS
RkFDRSkpCisgICAgeworICAgICAgICBpZiAoZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygpLnN1cmZh
Y2VsZXNzQ29udGV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKChkcmF3ID09IEVHTF9O
T19TVVJGQUNFKSAhPSAocmVhZCA9PSBFR0xfTk9fU1VSRkFDRSkpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfTUFUQ0gsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJJZiBjdHggaXMgbm90IEVHTF9OT1RfQ09OVEVYVCwgZHJhdyBvciBy
ZWFkIG11c3QgYm90aCBiZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfTk9f
U1VSRkFDRSwgb3IgYm90aCBub3QiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX01BVENI
LAorICAgICAgICAgICAgICAgICAgICAgICAgICJJZiBjdHggaXMgbm90IEVHTF9OT19DT05URVhU
LCBzdXJmYWNlcyBtdXN0IG5vdCBiZSBFR0xfTk9fU1VSRkFDRSIpOworICAgICAgICB9CisgICAg
fQorCisgICAgLy8gSWYgZWl0aGVyIG9mIGRyYXcgb3IgcmVhZCBpcyBhIHZhbGlkIHN1cmZhY2Ug
YW5kIHRoZSBvdGhlciBpcyBFR0xfTk9fU1VSRkFDRSwgYW4KKyAgICAvLyBFR0xfQkFEX01BVENI
IGVycm9yIGlzIGdlbmVyYXRlZC4KKyAgICBpZiAoKHJlYWQgPT0gRUdMX05PX1NVUkZBQ0UpICE9
IChkcmF3ID09IEVHTF9OT19TVVJGQUNFKSkKKyAgICB7CisgICAgICAgIHJldHVybiBFcnJvcihF
R0xfQkFEX01BVENILAorICAgICAgICAgICAgICAgICAgICAgInJlYWQgYW5kIGRyYXcgbXVzdCBi
b3RoIGJlIHZhbGlkIHN1cmZhY2VzLCBvciBib3RoIGJlIEVHTF9OT19TVVJGQUNFIik7CisgICAg
fQorCisgICAgaWYgKGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkgfHwgIURpc3BsYXk6OmlzVmFs
aWREaXNwbGF5KGRpc3BsYXkpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURf
RElTUExBWSwgIidkcHknIG5vdCBhIHZhbGlkIEVHTERpc3BsYXkgaGFuZGxlIik7CisgICAgfQor
CisgICAgLy8gRUdMIDEuNSBzcGVjOiBkcHkgY2FuIGJlIHVuaW5pdGlhbGl6ZWQgaWYgYWxsIG90
aGVyIHBhcmFtZXRlcnMgYXJlIG51bGwKKyAgICBpZiAoIWRpc3BsYXktPmlzSW5pdGlhbGl6ZWQo
KSAmJgorICAgICAgICAoY29udGV4dCAhPSBFR0xfTk9fQ09OVEVYVCB8fCBkcmF3ICE9IEVHTF9O
T19TVVJGQUNFIHx8IHJlYWQgIT0gRUdMX05PX1NVUkZBQ0UpKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIEVycm9yKEVHTF9OT1RfSU5JVElBTElaRUQsICInZHB5JyBub3QgaW5pdGlhbGl6ZWQiKTsK
KyAgICB9CisKKyAgICBpZiAoY29udGV4dCAhPSBFR0xfTk9fQ09OVEVYVCkKKyAgICB7CisgICAg
ICAgIEFOR0xFX1RSWShWYWxpZGF0ZUNvbnRleHQoZGlzcGxheSwgY29udGV4dCkpOworICAgIH0K
KworICAgIGlmIChkaXNwbGF5LT5pc0luaXRpYWxpemVkKCkgJiYgZGlzcGxheS0+dGVzdERldmlj
ZUxvc3QoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBFcnJvcihFR0xfQ09OVEVYVF9MT1NUKTsK
KyAgICB9CisKKyAgICBTdXJmYWNlICpkcmF3U3VyZmFjZSA9IHN0YXRpY19jYXN0PFN1cmZhY2Ug
Kj4oZHJhdyk7CisgICAgaWYgKGRyYXcgIT0gRUdMX05PX1NVUkZBQ0UpCisgICAgeworICAgICAg
ICBBTkdMRV9UUlkoVmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGRyYXdTdXJmYWNlKSk7CisgICAg
fQorCisgICAgU3VyZmFjZSAqcmVhZFN1cmZhY2UgPSBzdGF0aWNfY2FzdDxTdXJmYWNlICo+KHJl
YWQpOworICAgIGlmIChyZWFkICE9IEVHTF9OT19TVVJGQUNFKQorICAgIHsKKyAgICAgICAgQU5H
TEVfVFJZKFZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCByZWFkU3VyZmFjZSkpOworICAgIH0KKwor
ICAgIGlmIChyZWFkU3VyZmFjZSkKKyAgICB7CisgICAgICAgIEFOR0xFX1RSWShWYWxpZGF0ZUNv
bXBhdGlibGVDb25maWdzKGRpc3BsYXksIHJlYWRTdXJmYWNlLT5nZXRDb25maWcoKSwgcmVhZFN1
cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmdldENvbmZpZygpLCByZWFkU3VyZmFjZS0+Z2V0VHlwZSgpKSk7CisgICAgfQorCisgICAg
aWYgKGRyYXcgIT0gcmVhZCkKKyAgICB7CisgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgIC8vIEZJ
WE1FCisKKyAgICAgICAgaWYgKGRyYXdTdXJmYWNlKQorICAgICAgICB7CisgICAgICAgICAgICBB
TkdMRV9UUlkoVmFsaWRhdGVDb21wYXRpYmxlQ29uZmlncyhkaXNwbGF5LCBkcmF3U3VyZmFjZS0+
Z2V0Q29uZmlnKCksIGRyYXdTdXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0Q29uZmlnKCksIGRyYXdTdXJmYWNlLT5nZXRU
eXBlKCkpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7Cit9
CisKIEVycm9yIFZhbGlkYXRlQ29tcGF0aWJsZUNvbmZpZ3MoY29uc3QgRGlzcGxheSAqZGlzcGxh
eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQ29uZmlnICpjb25maWcx
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdXJmYWNlICpzdXJmYWNl
LApAQCAtNzgyLDYgKzk5NCwxMiBAQCBFcnJvciBWYWxpZGF0ZUNvbXBhdGlibGVDb25maWdzKGNv
bnN0IERpc3BsYXkgKmRpc3BsYXksCiAgICAgICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9N
QVRDSCwgIkNvbG9yIGJ1ZmZlciBzaXplcyBhcmUgbm90IGNvbXBhdGlibGUuIik7CiAgICAgICAg
IH0KIAorICAgICAgICBib29sIGNvbXBvbmVudFR5cGVDb21wYXQgPSBjb25maWcxLT5jb2xvckNv
bXBvbmVudFR5cGUgPT0gY29uZmlnMi0+Y29sb3JDb21wb25lbnRUeXBlOworICAgICAgICBpZiAo
IWNvbXBvbmVudFR5cGVDb21wYXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBFcnJv
cihFR0xfQkFEX01BVENILCAiQ29sb3IgYnVmZmVyIGNvbXBvbmVudCB0eXBlcyBhcmUgbm90IGNv
bXBhdGlibGUuIik7CisgICAgICAgIH0KKwogICAgICAgICBib29sIGRzQ29tcGF0ID0gY29uZmln
MS0+ZGVwdGhTaXplID09IGNvbmZpZzItPmRlcHRoU2l6ZSAmJgogICAgICAgICAgICAgICAgICAg
ICAgICAgY29uZmlnMS0+c3RlbmNpbFNpemUgPT0gY29uZmlnMi0+c3RlbmNpbFNpemU7CiAgICAg
ICAgIGlmICghZHNDb21wYXQpCkBAIC0xNjI0LDQgKzE4NDIsMTIzIEBAIEVycm9yIFZhbGlkYXRl
R2V0U3luY1ZhbHVlc0NIUk9NSVVNKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksCiAKICAgICByZXR1
cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOwogfQotfSAgLy8gbmFtZXNwYWNlIGdsCisKK0Vycm9yIFZh
bGlkYXRlU3dhcEJ1ZmZlcnNXaXRoRGFtYWdlRVhUKGNvbnN0IERpc3BsYXkgKmRpc3BsYXksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdXJmYWNlICpzdXJm
YWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50ICpyZWN0
cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBuX3JlY3Rz
KQoreworICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIHN1cmZhY2Up
OworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3I7
CisgICAgfQorCisgICAgaWYgKCFkaXNwbGF5LT5nZXRFeHRlbnNpb25zKCkuc3dhcEJ1ZmZlcnNX
aXRoRGFtYWdlKQorICAgIHsKKyAgICAgICAgLy8gSXQgaXMgb3V0IG9mIHNwZWMgd2hhdCBoYXBw
ZW5zIHdoZW4gY2FsbGluZyBhbiBleHRlbnNpb24gZnVuY3Rpb24gd2hlbiB0aGUgZXh0ZW5zaW9u
IGlzCisgICAgICAgIC8vIG5vdCBhdmFpbGFibGUuIEVHTF9CQURfRElTUExBWSBzZWVtcyBsaWtl
IGEgcmVhc29uYWJsZSBlcnJvci4KKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfRElTUExB
WSwgIkVHTF9FWFRfc3dhcF9idWZmZXJzX3dpdGhfZGFtYWdlIGlzIG5vdCBhdmFpbGFibGUuIik7
CisgICAgfQorCisgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCisgICAgeworICAg
ICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9TVVJGQUNFLCAiU3dhcCBzdXJmYWNlIGNhbm5vdCBi
ZSBFR0xfTk9fU1VSRkFDRS4iKTsKKyAgICB9CisKKyAgICBpZiAobl9yZWN0cyA8IDApCisgICAg
eworICAgICAgICByZXR1cm4gRXJyb3IoRUdMX0JBRF9QQVJBTUVURVIsICJuX3JlY3RzIGNhbm5v
dCBiZSBuZWdhdGl2ZS4iKTsKKyAgICB9CisKKyAgICBpZiAobl9yZWN0cyA+IDAgJiYgcmVjdHMg
PT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX1BBUkFNRVRF
UiwgIm5fcmVjdHMgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIHdoZW4gcmVjdHMgaXMgTlVM
TC4iKTsKKyAgICB9CisKKyAgICByZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCitFcnJv
ciBWYWxpZGF0ZUdldENvbmZpZ0F0dHJpYihjb25zdCBEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBD
b25maWcgKmNvbmZpZywgRUdMaW50IGF0dHJpYnV0ZSkKK3sKKyAgICBBTkdMRV9UUlkoVmFsaWRh
dGVDb25maWcoZGlzcGxheSwgY29uZmlnKSk7CisgICAgQU5HTEVfVFJZKFZhbGlkYXRlQ29uZmln
QXR0cmlidXRlKGRpc3BsYXksIHN0YXRpY19jYXN0PEVHTEF0dHJpYj4oYXR0cmlidXRlKSkpOwor
ICAgIHJldHVybiBOb0Vycm9yKCk7Cit9CisKK0Vycm9yIFZhbGlkYXRlQ2hvb3NlQ29uZmlnKGNv
bnN0IERpc3BsYXkgKmRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBB
dHRyaWJ1dGVNYXAgJmF0dHJpYnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQg
Y29uZmlnU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCAqbnVtQ29uZmln
KQoreworICAgIEFOR0xFX1RSWShWYWxpZGF0ZURpc3BsYXkoZGlzcGxheSkpOworICAgIEFOR0xF
X1RSWShWYWxpZGF0ZUNvbmZpZ0F0dHJpYnV0ZXMoZGlzcGxheSwgYXR0cmlicykpOworCisgICAg
aWYgKG51bUNvbmZpZyA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVH
TF9CQURfUEFSQU1FVEVSLCAibnVtX2NvbmZpZyBjYW5ub3QgYmUgbnVsbC4iKTsKKyAgICB9CisK
KyAgICByZXR1cm4gTm9FcnJvcigpOworfQorCitFcnJvciBWYWxpZGF0ZUdldENvbmZpZ3MoY29u
c3QgRGlzcGxheSAqZGlzcGxheSwgRUdMaW50IGNvbmZpZ1NpemUsIEVHTGludCAqbnVtQ29uZmln
KQoreworICAgIEFOR0xFX1RSWShWYWxpZGF0ZURpc3BsYXkoZGlzcGxheSkpOworCisgICAgaWYg
KG51bUNvbmZpZyA9PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9C
QURfUEFSQU1FVEVSLCAibnVtX2NvbmZpZyBjYW5ub3QgYmUgbnVsbC4iKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gTm9FcnJvcigpOworfQorCitFcnJvciBWYWxpZGF0ZVBsYXRmb3JtVHlwZShjb25z
dCBDbGllbnRFeHRlbnNpb25zICZjbGllbnRFeHRlbnNpb25zLCBFR0xpbnQgcGxhdGZvcm1UeXBl
KQoreworICAgIHN3aXRjaCAocGxhdGZvcm1UeXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xFOgorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFOgorICAgICAg
ICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFOgorICAgICAgICAgICAg
aWYgKCFjbGllbnRFeHRlbnNpb25zLnBsYXRmb3JtQU5HTEVEM0QpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVHTF9CQURfQVRUUklCVVRFLCAiRGlyZWN0M0Qg
cGxhdGZvcm0gaXMgdW5zdXBwb3J0ZWQuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdM
RToKKyAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRToK
KyAgICAgICAgICAgIGlmICghY2xpZW50RXh0ZW5zaW9ucy5wbGF0Zm9ybUFOR0xFT3BlbkdMKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FUVFJJ
QlVURSwgIk9wZW5HTCBwbGF0Zm9ybSBpcyB1bnN1cHBvcnRlZC4iKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZ
UEVfTlVMTF9BTkdMRToKKyAgICAgICAgICAgIGlmICghY2xpZW50RXh0ZW5zaW9ucy5wbGF0Zm9y
bUFOR0xFTlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRXJyb3Io
RUdMX0JBRF9BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEaXNwbGF5
IHR5cGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfTlVMTF9BTkdMRSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1aXJl
cyBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfbnVsbC4iKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfVlVM
S0FOX0FOR0xFOgorICAgICAgICAgICAgaWYgKCFjbGllbnRFeHRlbnNpb25zLnBsYXRmb3JtQU5H
TEVWdWxrYW4pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVycm9yKEVH
TF9CQURfQVRUUklCVVRFLCAiVnVsa2FuIHBsYXRmb3JtIGlzIHVuc3VwcG9ydGVkLiIpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBFcnJvcihFR0xfQkFEX0FUVFJJQlVURSwgIlVua25vd24gcGxhdGZvcm0g
dHlwZS4iKTsKKyAgICB9CisKKyAgICByZXR1cm4gRXJyb3IoRUdMX1NVQ0NFU1MpOworfQorCit9
ICAvLyBuYW1lc3BhY2UgZWdsCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkVHTC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3ZhbGlkYXRpb25FR0wuaAppbmRleCAzZTNmMmNhY2UzMS4uN2M1ZGJlNjQwYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0
aW9uRUdMLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlk
YXRpb25FR0wuaApAQCAtMjMsNiArMjMsNyBAQCBuYW1lc3BhY2UgZWdsCiB7CiAKIGNsYXNzIEF0
dHJpYnV0ZU1hcDsKK3N0cnVjdCBDbGllbnRFeHRlbnNpb25zOwogc3RydWN0IENvbmZpZzsKIGNs
YXNzIERldmljZTsKIGNsYXNzIERpc3BsYXk7CkBAIC0zMiw5ICszMyw5IEBAIGNsYXNzIFN1cmZh
Y2U7CiAKIC8vIE9iamVjdCB2YWxpZGF0aW9uCiBFcnJvciBWYWxpZGF0ZURpc3BsYXkoY29uc3Qg
RGlzcGxheSAqZGlzcGxheSk7Ci1FcnJvciBWYWxpZGF0ZVN1cmZhY2UoY29uc3QgRGlzcGxheSAq
ZGlzcGxheSwgU3VyZmFjZSAqc3VyZmFjZSk7CitFcnJvciBWYWxpZGF0ZVN1cmZhY2UoY29uc3Qg
RGlzcGxheSAqZGlzcGxheSwgY29uc3QgU3VyZmFjZSAqc3VyZmFjZSk7CiBFcnJvciBWYWxpZGF0
ZUNvbmZpZyhjb25zdCBEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBDb25maWcgKmNvbmZpZyk7Ci1F
cnJvciBWYWxpZGF0ZUNvbnRleHQoY29uc3QgRGlzcGxheSAqZGlzcGxheSwgZ2w6OkNvbnRleHQg
KmNvbnRleHQpOworRXJyb3IgVmFsaWRhdGVDb250ZXh0KGNvbnN0IERpc3BsYXkgKmRpc3BsYXks
IGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KTsKIEVycm9yIFZhbGlkYXRlSW1hZ2UoY29uc3Qg
RGlzcGxheSAqZGlzcGxheSwgY29uc3QgSW1hZ2UgKmltYWdlKTsKIAogLy8gRW50cnkgcG9pbnQg
dmFsaWRhdGlvbgpAQCAtNDgsNiArNDksOCBAQCBFcnJvciBWYWxpZGF0ZUNyZWF0ZVBidWZmZXJT
dXJmYWNlKERpc3BsYXkgKmRpc3BsYXksIENvbmZpZyAqY29uZmlnLCBjb25zdCBBdHRyaQogRXJy
b3IgVmFsaWRhdGVDcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihEaXNwbGF5ICpkaXNwbGF5
LCBFR0xlbnVtIGJ1ZnR5cGUsIEVHTENsaWVudEJ1ZmZlciBidWZmZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZyAqY29uZmlnLCBjb25zdCBBdHRy
aWJ1dGVNYXAmIGF0dHJpYnV0ZXMpOwogCitFcnJvciBWYWxpZGF0ZU1ha2VDdXJyZW50KERpc3Bs
YXkgKmRpc3BsYXksIEVHTFN1cmZhY2UgZHJhdywgRUdMU3VyZmFjZSByZWFkLCBnbDo6Q29udGV4
dCAqY29udGV4dCk7CisKIEVycm9yIFZhbGlkYXRlQ3JlYXRlSW1hZ2VLSFIoY29uc3QgRGlzcGxh
eSAqZGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNv
bnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGVudW0gdGFyZ2V0LApAQCAt
OTQsMTggKzk3LDMzIEBAIEVycm9yIFZhbGlkYXRlU3RyZWFtUG9zdEQzRFRleHR1cmVOVjEyQU5H
TEUoY29uc3QgRGlzcGxheSAqZGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyZWFtICpzdHJlYW0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnRleHR1cmUsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZU1hcCAmYXR0cmlicyk7
CisKIEVycm9yIFZhbGlkYXRlR2V0U3luY1ZhbHVlc0NIUk9NSVVNKGNvbnN0IERpc3BsYXkgKmRp
c3BsYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdXJmYWNl
ICpzdXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUdM
dWludDY0S0hSICp1c3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBFR0x1aW50NjRLSFIgKm1zYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEVHTHVpbnQ2NEtIUiAqc2JjKTsKIAorRXJyb3IgVmFsaWRhdGVTd2FwQnVmZmVyc1dp
dGhEYW1hZ2VFWFQoY29uc3QgRGlzcGxheSAqZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFN1cmZhY2UgKnN1cmZhY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgKnJlY3RzLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IG5fcmVjdHMpOworCitFcnJvciBWYWxpZGF0
ZUdldENvbmZpZ0F0dHJpYihjb25zdCBEaXNwbGF5ICpkaXNwbGF5LCBjb25zdCBDb25maWcgKmNv
bmZpZywgRUdMaW50IGF0dHJpYnV0ZSk7CitFcnJvciBWYWxpZGF0ZUNob29zZUNvbmZpZyhjb25z
dCBEaXNwbGF5ICpkaXNwbGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXR0
cmlidXRlTWFwICZhdHRyaWJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IGNv
bmZpZ1NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgKm51bUNvbmZpZyk7
CitFcnJvciBWYWxpZGF0ZUdldENvbmZpZ3MoY29uc3QgRGlzcGxheSAqZGlzcGxheSwgRUdMaW50
IGNvbmZpZ1NpemUsIEVHTGludCAqbnVtQ29uZmlnKTsKKwogLy8gT3RoZXIgdmFsaWRhdGlvbgog
RXJyb3IgVmFsaWRhdGVDb21wYXRpYmxlQ29uZmlncyhjb25zdCBEaXNwbGF5ICpkaXNwbGF5LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBDb25maWcgKmNvbmZpZzEsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN1cmZhY2UgKnN1cmZhY2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbmZpZyAqY29uZmlnMiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMaW50IHN1cmZhY2VUeXBlKTsKLX0KKwor
RXJyb3IgVmFsaWRhdGVQbGF0Zm9ybVR5cGUoY29uc3QgQ2xpZW50RXh0ZW5zaW9ucyAmY2xpZW50
RXh0ZW5zaW9ucywgRUdMaW50IHBsYXRmb3JtVHlwZSk7Cit9ICAvLyBuYW1lc3BhY2UgZ2wKIAog
I2VuZGlmIC8vIExJQkFOR0xFX1ZBTElEQVRJT05FR0xfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5jcHAKaW5kZXggYTdiOWY5
YTFkNGQuLjk3ZWY1MmJlNWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmNwcApAQCAtMzQsNjUgKzM0LDExMCBAQCBjb25z
dCBjaGFyICpnX0V4Y2VlZHNNYXhFbGVtZW50RXJyb3JNZXNzYWdlID0gIkVsZW1lbnQgdmFsdWUg
ZXhjZWVkcyBtYXhpbXVtIGVsZQogCiBuYW1lc3BhY2UKIHsKLWJvb2wgVmFsaWRhdGVEcmF3QXR0
cmlicyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xpbnQgcHJpbWNvdW50LCBHTGludCBt
YXhWZXJ0ZXgpCitib29sIFZhbGlkYXRlRHJhd0F0dHJpYnMoVmFsaWRhdGlvbkNvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgcHJpbWNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IG1heFZlcnRleCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB2ZXJ0ZXhDb3VudCkKIHsKICAgICBjb25zdCBnbDo6U3RhdGUgJnN0YXRlICAg
ICA9IGNvbnRleHQtPmdldEdMU3RhdGUoKTsKICAgICBjb25zdCBnbDo6UHJvZ3JhbSAqcHJvZ3Jh
bSA9IHN0YXRlLmdldFByb2dyYW0oKTsKIAotICAgIGNvbnN0IFZlcnRleEFycmF5ICp2YW8gICAg
ID0gc3RhdGUuZ2V0VmVydGV4QXJyYXkoKTsKLSAgICBjb25zdCBhdXRvICZ2ZXJ0ZXhBdHRyaWJz
ICA9IHZhby0+Z2V0VmVydGV4QXR0cmlidXRlcygpOwotICAgIHNpemVfdCBtYXhFbmFibGVkQXR0
cmliID0gdmFvLT5nZXRNYXhFbmFibGVkQXR0cmlidXRlKCk7CisgICAgYm9vbCB3ZWJnbENvbXBh
dGliaWxpdHkgPSBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkud2ViZ2xDb21wYXRpYmlsaXR5Owor
CisgICAgY29uc3QgVmVydGV4QXJyYXkgKnZhbyAgICA9IHN0YXRlLmdldFZlcnRleEFycmF5KCk7
CisgICAgY29uc3QgYXV0byAmdmVydGV4QXR0cmlicyA9IHZhby0+Z2V0VmVydGV4QXR0cmlidXRl
cygpOworICAgIGNvbnN0IGF1dG8gJnZlcnRleEJpbmRpbmdzID0gdmFvLT5nZXRWZXJ0ZXhCaW5k
aW5ncygpOworICAgIHNpemVfdCBtYXhFbmFibGVkQXR0cmliICAgPSB2YW8tPmdldE1heEVuYWJs
ZWRBdHRyaWJ1dGUoKTsKICAgICBmb3IgKHNpemVfdCBhdHRyaWJ1dGVJbmRleCA9IDA7IGF0dHJp
YnV0ZUluZGV4IDwgbWF4RW5hYmxlZEF0dHJpYjsgKythdHRyaWJ1dGVJbmRleCkKICAgICB7CiAg
ICAgICAgIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0gdmVydGV4QXR0cmlic1thdHRy
aWJ1dGVJbmRleF07Ci0gICAgICAgIGlmIChwcm9ncmFtLT5pc0F0dHJpYkxvY2F0aW9uQWN0aXZl
KGF0dHJpYnV0ZUluZGV4KSAmJiBhdHRyaWIuZW5hYmxlZCkKKyAgICAgICAgaWYgKCFwcm9ncmFt
LT5pc0F0dHJpYkxvY2F0aW9uQWN0aXZlKGF0dHJpYnV0ZUluZGV4KSB8fCAhYXR0cmliLmVuYWJs
ZWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGdsOjpCdWZmZXIgKmJ1ZmZlciA9IGF0dHJpYi5i
dWZmZXIuZ2V0KCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQogCi0gICAgICAg
ICAgICBpZiAoYnVmZmVyKQorICAgICAgICBjb25zdCBWZXJ0ZXhCaW5kaW5nICZiaW5kaW5nID0g
dmVydGV4QmluZGluZ3NbYXR0cmliLmJpbmRpbmdJbmRleF07CisgICAgICAgIC8vIElmIHdlIGhh
dmUgbm8gYnVmZmVyLCB0aGVuIHdlIGVpdGhlciBnZXQgYW4gZXJyb3IsIG9yIHRoZXJlIGFyZSBu
byBtb3JlIGNoZWNrcyB0byBiZSBkb25lLgorICAgICAgICBnbDo6QnVmZmVyICpidWZmZXIgPSBi
aW5kaW5nLmJ1ZmZlci5nZXQoKTsKKyAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICh3ZWJnbENvbXBhdGliaWxpdHkgfHwgIXN0YXRlLmFyZUNsaWVudEFycmF5
c0VuYWJsZWQoKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBHTGludDY0IGF0dHJp
YlN0cmlkZSAgICAgPSBzdGF0aWNfY2FzdDxHTGludDY0PihDb21wdXRlVmVydGV4QXR0cmlidXRl
U3RyaWRlKGF0dHJpYikpOwotICAgICAgICAgICAgICAgIEdMaW50NjQgbWF4VmVydGV4RWxlbWVu
dCA9IDA7Ci0KLSAgICAgICAgICAgICAgICBpZiAoYXR0cmliLmRpdmlzb3IgPiAwKQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbWF4VmVydGV4RWxlbWVudCA9Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTGludDY0PihwcmltY291bnQpIC8gc3Rh
dGljX2Nhc3Q8R0xpbnQ2ND4oYXR0cmliLmRpdmlzb3IpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICBtYXhWZXJ0ZXhFbGVtZW50ID0gc3RhdGljX2Nhc3Q8R0xpbnQ2ND4obWF4VmVydGV4KTsKLSAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBkcmF3aW5nIHpl
cm8gdmVydGljZXMsIHdlIGhhdmUgZW5vdWdoIGRhdGEuCi0gICAgICAgICAgICAgICAgaWYgKG1h
eFZlcnRleEVsZW1lbnQgPiAwKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gTm90ZTogTGFzdCB2ZXJ0ZXggZWxlbWVudCBkb2VzIG5vdCB0YWtlIHRoZSBmdWxsIHN0
cmlkZSEKLSAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCBhdHRyaWJTaXplID0KLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMaW50NjQ+KENvbXB1dGVWZXJ0ZXhBdHRyaWJ1
dGVUeXBlU2l6ZShhdHRyaWIpKTsKLSAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCBhdHRyaWJE
YXRhU2l6ZSA9IChtYXhWZXJ0ZXhFbGVtZW50IC0gMSkgKiBhdHRyaWJTdHJpZGUgKyBhdHRyaWJT
aXplOwotICAgICAgICAgICAgICAgICAgICBHTGludDY0IGF0dHJpYk9mZnNldCAgID0gc3RhdGlj
X2Nhc3Q8R0xpbnQ2ND4oYXR0cmliLm9mZnNldCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8g
W09wZW5HTCBFUyAzLjAuMl0gc2VjdGlvbiAyLjkuNCBwYWdlIDQwOgotICAgICAgICAgICAgICAg
ICAgICAvLyBXZSBjYW4gcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OIGlmIG91ciB2ZXJ0ZXggYXR0
cmlidXRlIGRvZXMgbm90IGhhdmUKLSAgICAgICAgICAgICAgICAgICAgLy8gZW5vdWdoIGJhY2tp
bmcgZGF0YS4KLSAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHJpYkRhdGFTaXplICsgYXR0cmli
T2Zmc2V0ID4gYnVmZmVyLT5nZXRTaXplKCkpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJWZXJ0ZXggYnVmZmVyIGlzIG5vdCBiaWcgZW5vdWdoIGZvciB0
aGUgZHJhdyBjYWxsIikpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IC8vIFtXZWJHTCAxLjBdIFNlY3Rpb24gNi41IEVuYWJsZWQgVmVydGV4IEF0dHJpYnV0ZXMgYW5k
IFJhbmdlIENoZWNraW5nCisgICAgICAgICAgICAgICAgLy8gSWYgYSB2ZXJ0ZXggYXR0cmlidXRl
IGlzIGVuYWJsZWQgYXMgYW4gYXJyYXkgdmlhIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5IGJ1dAor
ICAgICAgICAgICAgICAgIC8vIG5vIGJ1ZmZlciBpcyBib3VuZCB0byB0aGF0IGF0dHJpYnV0ZSB2
aWEgYmluZEJ1ZmZlciBhbmQgdmVydGV4QXR0cmliUG9pbnRlciwKKyAgICAgICAgICAgICAgICAv
LyB0aGVuIGNhbGxzIHRvIGRyYXdBcnJheXMgb3IgZHJhd0VsZW1lbnRzIHdpbGwgZ2VuZXJhdGUg
YW4gSU5WQUxJRF9PUEVSQVRJT04KKyAgICAgICAgICAgICAgICAvLyBlcnJvci4KKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJBbiBlbmFibGVkIHZlcnRleCBhcnJheSBoYXMgbm8gYnVm
ZmVyLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBlbHNlIGlmIChhdHRyaWIucG9pbnRlciA9PSBOVUxMKQorICAgICAgICAgICAg
ZWxzZSBpZiAoYXR0cmliLnBvaW50ZXIgPT0gbnVsbHB0cikKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICAvLyBUaGlzIGlzIGFuIGFwcGxpY2F0aW9uIGVycm9yIHRoYXQgd291bGQgbm9y
bWFsbHkgcmVzdWx0IGluIGEgY3Jhc2gsCiAgICAgICAgICAgICAgICAgLy8gYnV0IHdlIGNhdGNo
IGl0IGFuZCByZXR1cm4gYW4gZXJyb3IKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgR0xfSU5WQUxJRF9PUEVSQVRJT04sICJB
biBlbmFibGVkIHZlcnRleCBhcnJheSBoYXMgbm8gYnVmZmVyIGFuZCBubyBwb2ludGVyLiIpKTsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICAg
ICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICJBbiBlbmFibGVkIHZlcnRleCBhcnJheSBoYXMgbm8gYnVmZmVyIGFuZCBubyBwb2ludGVyLiIp
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHdlJ3JlIGRyYXdpbmcg
emVybyB2ZXJ0aWNlcywgd2UgaGF2ZSBlbm91Z2ggZGF0YS4KKyAgICAgICAgaWYgKHZlcnRleENv
dW50IDw9IDAgfHwgcHJpbWNvdW50IDw9IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisKKyAgICAgICAgR0xpbnQgbWF4VmVydGV4RWxlbWVudCA9IDA7Cisg
ICAgICAgIGlmIChiaW5kaW5nLmRpdmlzb3IgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAg
bWF4VmVydGV4RWxlbWVudCA9IG1heFZlcnRleDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1heFZlcnRleEVsZW1lbnQgPSAocHJpbWNvdW50IC0gMSkg
LyBiaW5kaW5nLmRpdmlzb3I7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBkbyBtYW51YWwg
b3ZlcmZsb3cgY2hlY2tzIGhlcmUgaW5zdGVhZCBvZiB1c2luZyBzYWZlX21hdGguaCBiZWNhdXNl
IGl0IHdhcworICAgICAgICAvLyBhIGJvdHRsZW5lY2suIFRoYW5rcyB0byBzb21lIHByb3BlcnRp
ZXMgb2YgR0wgd2Uga25vdyBpbmVxdWFsaXRpZXMgdGhhdCBjYW4KKyAgICAgICAgLy8gaGVscCB1
cyBtYWtlIHRoZSBvdmVyZmxvdyBjaGVja3MgZmFzdGVyLgorCisgICAgICAgIC8vIFRoZSBtYXgg
cG9zc2libGUgYXR0cmliU2l6ZSBpcyAxNiBmb3IgYSB2ZWN0b3Igb2YgNCAzMiBiaXQgdmFsdWVz
LgorICAgICAgICBjb25zdGV4cHIgdWludDY0X3Qga01heEF0dHJpYlNpemUgPSAxNjsKKyAgICAg
ICAgY29uc3RleHByIHVpbnQ2NF90IGtJbnRNYXggICAgICAgID0gc3RkOjpudW1lcmljX2xpbWl0
czxpbnQ+OjptYXgoKTsKKyAgICAgICAgY29uc3RleHByIHVpbnQ2NF90IGtVaW50NjRNYXggICAg
ID0gc3RkOjpudW1lcmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOworCisgICAgICAgIC8vIFdl
IGtub3cgYXR0cmliU3RyaWRlIGlzIGdpdmVuIGFzIGEgR0xzaXplaSB3aGljaCBpcyB0eXBlZGVm
ZWQgdG8gaW50LgorICAgICAgICAvLyBXZSBhbHNvIGtub3cgYW4gdXBwZXIgYm91bmQgZm9yIGF0
dHJpYlNpemUuCisgICAgICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPGludCwgR0xzaXpl
aT46OnZhbHVlLCAiIik7CisgICAgICAgIHVpbnQ2NF90IGF0dHJpYlN0cmlkZSA9IENvbXB1dGVW
ZXJ0ZXhBdHRyaWJ1dGVTdHJpZGUoYXR0cmliLCBiaW5kaW5nKTsKKyAgICAgICAgdWludDY0X3Qg
YXR0cmliU2l6ZSAgID0gQ29tcHV0ZVZlcnRleEF0dHJpYnV0ZVR5cGVTaXplKGF0dHJpYik7Cisg
ICAgICAgIEFTU0VSVChhdHRyaWJTdHJpZGUgPD0ga0ludE1heCAmJiBhdHRyaWJTaXplIDw9IGtN
YXhBdHRyaWJTaXplKTsKKworICAgICAgICAvLyBDb21wdXRpbmcgdGhlIG1heCBvZmZzZXQgdXNp
bmcgdWludDY0X3Qgd2l0aG91dCBhdHRyaWIub2Zmc2V0IGlzIG92ZXJmbG93CisgICAgICAgIC8v
IHNhZmUuIE5vdGU6IExhc3QgdmVydGV4IGVsZW1lbnQgZG9lcyBub3QgdGFrZSB0aGUgZnVsbCBz
dHJpZGUhCisgICAgICAgIHN0YXRpY19hc3NlcnQoa0ludE1heCAqIGtJbnRNYXggPCBrVWludDY0
TWF4IC0ga01heEF0dHJpYlNpemUsICIiKTsKKyAgICAgICAgdWludDY0X3QgYXR0cmliRGF0YVNp
emVOb09mZnNldCA9IG1heFZlcnRleEVsZW1lbnQgKiBhdHRyaWJTdHJpZGUgKyBhdHRyaWJTaXpl
OworCisgICAgICAgIC8vIEFuIG92ZXJmbG93IGNhbiBoYXBwZW4gd2hlbiBhZGRpbmcgdGhlIG9m
ZnNldCwgY2hlY2sgZm9yIGl0LgorICAgICAgICB1aW50NjRfdCBhdHRyaWJPZmZzZXQgPSBDb21w
dXRlVmVydGV4QXR0cmlidXRlT2Zmc2V0KGF0dHJpYiwgYmluZGluZyk7CisgICAgICAgIGlmIChh
dHRyaWJEYXRhU2l6ZU5vT2Zmc2V0ID4ga1VpbnQ2NE1heCAtIGF0dHJpYk9mZnNldCkKKyAgICAg
ICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJJbnRlZ2VyIG92ZXJmbG93LiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgfQorICAgICAgICB1aW50NjRfdCBhdHRyaWJEYXRhU2l6ZVdpdGhPZmZzZXQg
PSBhdHRyaWJEYXRhU2l6ZU5vT2Zmc2V0ICsgYXR0cmliT2Zmc2V0OworCisgICAgICAgIC8vIFtP
cGVuR0wgRVMgMy4wLjJdIHNlY3Rpb24gMi45LjQgcGFnZSA0MDoKKyAgICAgICAgLy8gV2UgY2Fu
IHJldHVybiBJTlZBTElEX09QRVJBVElPTiBpZiBvdXIgdmVydGV4IGF0dHJpYnV0ZSBkb2VzIG5v
dCBoYXZlCisgICAgICAgIC8vIGVub3VnaCBiYWNraW5nIGRhdGEuCisgICAgICAgIGlmIChhdHRy
aWJEYXRhU2l6ZVdpdGhPZmZzZXQgPiBzdGF0aWNfY2FzdDx1aW50NjRfdD4oYnVmZmVyLT5nZXRT
aXplKCkpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJWZXJ0ZXggYnVmZmVyIGlzIG5vdCBiaWcgZW5vdWdoIGZvciB0aGUgZHJhdyBjYWxs
IikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQogCkBAIC0x
NjIsNiArMjA3LDE4IEBAIGJvb2wgVmFsaWRDYXAoY29uc3QgQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIGNhcCwgYm9vbCBxdWVyeU9ubHkpCiAgICAgICAgIGNhc2UgR0xfQklORF9HRU5FUkFURVNf
UkVTT1VSQ0VfQ0hST01JVU06CiAgICAgICAgICAgICByZXR1cm4gcXVlcnlPbmx5ICYmIGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS5iaW5kR2VuZXJhdGVzUmVzb3VyY2U7CiAKKyAgICAgICAgY2Fz
ZSBHTF9DTElFTlRfQVJSQVlTX0FOR0xFOgorICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5T25seSAm
JiBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY2xpZW50QXJyYXlzOworCisgICAgICAgIGNhc2Ug
R0xfRlJBTUVCVUZGRVJfU1JHQl9FWFQ6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLnNSR0JXcml0ZUNvbnRyb2w7CisKKyAgICAgICAgY2FzZSBHTF9TQU1QTEVf
TUFTSzoKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0g
VmVyc2lvbigzLCAxKTsKKworICAgICAgICBjYXNlIEdMX0NPTlRFWFRfUk9CVVNUX1JFU09VUkNF
X0lOSVRJQUxJWkFUSU9OX0FOR0xFOgorICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5T25seSAmJiBj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkucm9idXN0UmVzb3VyY2VJbml0aWFsaXphdGlvbjsKKwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTE3
NiwxMiArMjMzLDIyIEBAIGJvb2wgVmFsaWRhdGVSZWFkUGl4ZWxzQmFzZShWYWxpZGF0aW9uQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmNvbHVtbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqcm93cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHZvaWQgKnBpeGVscykK
IHsKICAgICBpZiAobGVuZ3RoICE9IG51bGxwdHIpCiAgICAgewogICAgICAgICAqbGVuZ3RoID0g
MDsKICAgICB9CisgICAgaWYgKHJvd3MgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgICpyb3dz
ID0gMDsKKyAgICB9CisgICAgaWYgKGNvbHVtbnMgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAg
ICpjb2x1bW5zID0gMDsKKyAgICB9CiAKICAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDAp
CiAgICAgewpAQCAtMTkxLDEzICsyNTgsMTMgQEAgYm9vbCBWYWxpZGF0ZVJlYWRQaXhlbHNCYXNl
KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogCiAgICAgYXV0byByZWFkRnJhbWVidWZmZXIg
PSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7CiAKLSAgICBpZiAo
cmVhZEZyYW1lYnVmZmVyLT5jaGVja1N0YXR1cyhjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKSkg
IT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgaWYgKHJlYWRGcmFtZWJ1ZmZlci0+Y2hl
Y2tTdGF0dXMoY29udGV4dCkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCiAgICAgewogICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0ZSQU1FQlVGRkVSX09Q
RVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHJlYWRG
cmFtZWJ1ZmZlci0+aWQoKSAhPSAwICYmIHJlYWRGcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcyhjb250
ZXh0LT5nZXRDb250ZXh0U3RhdGUoKSkgIT0gMCkKKyAgICBpZiAocmVhZEZyYW1lYnVmZmVyLT5p
ZCgpICE9IDAgJiYgcmVhZEZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKGNvbnRleHQpICE9IDApCiAg
ICAgewogICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTMsOSArMjgwLDEzIEBAIGJvb2wg
VmFsaWRhdGVSZWFkUGl4ZWxzQmFzZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKICAgICB9
CiAKICAgICBjb25zdCBGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnJlYWRCdWZmZXIgPSBmcmFtZWJ1
ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7Ci0gICAgaWYgKCFyZWFkQnVmZmVyKQorICAgIC8v
IFdlYkdMIDEuMCBbU2VjdGlvbiA2LjI2XSBSZWFkaW5nIEZyb20gYSBNaXNzaW5nIEF0dGFjaG1l
bnQKKyAgICAvLyBJbiBPcGVuR0wgRVMgaXQgaXMgdW5kZWZpbmVkIHdoYXQgaGFwcGVucyB3aGVu
IGFuIG9wZXJhdGlvbiB0cmllcyB0byByZWFkIGZyb20gYSBtaXNzaW5nCisgICAgLy8gYXR0YWNo
bWVudCBhbmQgV2ViR0wgZGVmaW5lcyBpdCB0byBiZSBhbiBlcnJvci4gV2UgZG8gdGhlIGNoZWNr
IHVuY29uZGl0aW9ubmFseSBhcyB0aGUKKyAgICAvLyBzaXR1YXRpb24gaXMgYW4gYXBwbGljYXRp
b24gZXJyb3IgdGhhdCB3b3VsZCBsZWFkIHRvIGEgY3Jhc2ggaW4gQU5HTEUuCisgICAgaWYgKHJl
YWRCdWZmZXIgPT0gbnVsbHB0cikKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTWlzc2luZyByZWFkIGF0dGFjaG1lbnQi
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI1OSw4ICszMzAsNyBAQCBi
b29sIFZhbGlkYXRlUmVhZFBpeGVsc0Jhc2UoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAg
ICAgc2l6ZV90IGVuZEJ5dGUgPSBlbmRCeXRlT3JFcnIuZ2V0UmVzdWx0KCk7CiAgICAgaWYgKGJ1
ZlNpemUgPj0gMCkKICAgICB7Ci0KLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNpemVfdD4oYnVm
U2l6ZSkgPCBlbmRCeXRlKQorICAgICAgICBpZiAocGl4ZWxQYWNrQnVmZmVyID09IG51bGxwdHIg
JiYgc3RhdGljX2Nhc3Q8c2l6ZV90PihidWZTaXplKSA8IGVuZEJ5dGUpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAogICAgICAgICAgICAgICAgIEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLCAiYnVmU2l6ZSBtdXN0IGJlIGF0IGxlYXN0ICV1IGJ5dGVzLiIs
IGVuZEJ5dGUpKTsKQEAgLTI4Myw3ICszNTMsNyBAQCBib29sIFZhbGlkYXRlUmVhZFBpeGVsc0Jh
c2UoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBp
ZiAobGVuZ3RoICE9IG51bGxwdHIpCisgICAgaWYgKHBpeGVsUGFja0J1ZmZlciA9PSBudWxscHRy
ICYmIGxlbmd0aCAhPSBudWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKGVuZEJ5dGUgPiBzdGF0
aWNfY2FzdDxzaXplX3Q+KHN0ZDo6bnVtZXJpY19saW1pdHM8R0xzaXplaT46Om1heCgpKSkKICAg
ICAgICAgewpAQCAtMjk1LDYgKzM2NSwzOSBAQCBib29sIFZhbGlkYXRlUmVhZFBpeGVsc0Jhc2Uo
VmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICpsZW5ndGggPSBzdGF0aWNfY2Fz
dDxHTHNpemVpPihlbmRCeXRlKTsKICAgICB9CiAKKyAgICBhdXRvIGdldENsaXBwZWRFeHRlbnQg
PSBbXShHTGludCBzdGFydCwgR0xzaXplaSBsZW5ndGgsIGludCBidWZmZXJTaXplKSB7CisgICAg
ICAgIGFuZ2xlOjpDaGVja2VkTnVtZXJpYzxpbnQ+IGNsaXBwZWRFeHRlbnQobGVuZ3RoKTsKKyAg
ICAgICAgaWYgKHN0YXJ0IDwgMCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gInN1YnRyYWN0
IiB0aGUgYXJlYSB0aGF0IGlzIGxlc3MgdGhhbiAwCisgICAgICAgICAgICBjbGlwcGVkRXh0ZW50
ICs9IHN0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgaW50IHJlYWRFeHRlbnQgPSBz
dGFydCArIGxlbmd0aDsKKyAgICAgICAgaWYgKHJlYWRFeHRlbnQgPiBidWZmZXJTaXplKQorICAg
ICAgICB7CisgICAgICAgICAgICAvLyBTdWJ0cmFjdCB0aGUgcmVnaW9uIHRvIHRoZSByaWdodCBv
ZiB0aGUgcmVhZCBidWZmZXIKKyAgICAgICAgICAgIGNsaXBwZWRFeHRlbnQgLT0gKHJlYWRFeHRl
bnQgLSBidWZmZXJTaXplKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghY2xpcHBlZEV4dGVu
dC5Jc1ZhbGlkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9
CisKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWF4KGNsaXBwZWRFeHRlbnQuVmFsdWVPckRpZSgpLCAw
KTsKKyAgICB9OworCisgICAgaWYgKGNvbHVtbnMgIT0gbnVsbHB0cikKKyAgICB7CisgICAgICAg
ICpjb2x1bW5zID0gZ2V0Q2xpcHBlZEV4dGVudCh4LCB3aWR0aCwgcmVhZEJ1ZmZlci0+Z2V0U2l6
ZSgpLndpZHRoKTsKKyAgICB9CisKKyAgICBpZiAocm93cyAhPSBudWxscHRyKQorICAgIHsKKyAg
ICAgICAgKnJvd3MgPSBnZXRDbGlwcGVkRXh0ZW50KHksIGhlaWdodCwgcmVhZEJ1ZmZlci0+Z2V0
U2l6ZSgpLmhlaWdodCk7CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ3MSw2
ICs1NzQsMTUgQEAgYm9vbCBWYWxpZGF0ZUdldFRleFBhcmFtZXRlckJhc2UoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLAogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NSR0JfREVDT0RFX0VYVDoK
KyAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVTUkdCRGVj
b2RlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KAorICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX0VOVU0sICJHTF9FWFRfdGV4
dHVyZV9zUkdCX2RlY29kZSBpcyBub3QgZW5hYmxlZC4iKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSwgIlVua25vd24gcG5hbWUuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpA
QCAtNjAzLDYgKzcxNSwyOSBAQCBib29sIFZhbGlkYXRlVGV4dHVyZUNvbXBhcmVGdW5jVmFsdWUo
Q29udGV4dCAqY29udGV4dCwgUGFyYW1UeXBlICpwYXJhbXMpCiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBQYXJhbVR5cGU+Citib29sIFZhbGlkYXRlVGV4dHVyZVNSR0JEZWNvZGVWYWx1ZShDb250
ZXh0ICpjb250ZXh0LCBQYXJhbVR5cGUgKnBhcmFtcykKK3sKKyAgICBpZiAoIWNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS50ZXh0dXJlU1JHQkRlY29kZSkKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkdMX0VYVF90ZXh0dXJlX3NSR0Jf
ZGVjb2RlIGlzIG5vdCBlbmFibGVkLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHN3aXRjaCAoQ29udmVydFRvR0xlbnVtKHBhcmFtc1swXSkpCisgICAgeworICAgICAg
ICBjYXNlIEdMX0RFQ09ERV9FWFQ6CisgICAgICAgIGNhc2UgR0xfU0tJUF9ERUNPREVfRVhUOgor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlVua25vd24gcGFyYW0gdmFs
dWUuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0
cnVlOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgUGFyYW1UeXBlPgogYm9vbCBWYWxpZGF0ZVRl
eFBhcmFtZXRlckJhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcG5hbWUsCkBAIC03NzcsNiArOTEyLDMxIEBAIGJvb2wgVmFsaWRhdGVUZXhQYXJhbWV0ZXJC
YXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsK
IAorICAgICAgICBjYXNlIEdMX0RFUFRIX1NURU5DSUxfVEVYVFVSRV9NT0RFOgorICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IFZlcnNpb24oMywgMSkpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNLCAicG5hbWUgcmVxdWlyZXMgT3BlbkdMIEVTIDMuMS4iKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3dpdGNo
IChDb252ZXJ0VG9HTGVudW0ocGFyYW1zWzBdKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDoKKyAgICAgICAgICAgICAgICBjYXNlIEdMX1NU
RU5DSUxfSU5ERVg6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNLCAiVW5rbm93biBwYXJhbSB2YWx1ZS4iKSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9TUkdCX0RFQ09ERV9FWFQ6CisgICAgICAgICAg
ICBpZiAoIVZhbGlkYXRlVGV4dHVyZVNSR0JEZWNvZGVWYWx1ZShjb250ZXh0LCBwYXJhbXMpKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJVbmtub3duIHBuYW1l
LiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTg1Nyw2ICsxMDE3LDEzIEBAIGJv
b2wgVmFsaWRhdGVTYW1wbGVyUGFyYW1ldGVyQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1NS
R0JfREVDT0RFX0VYVDoKKyAgICAgICAgICAgIGlmICghVmFsaWRhdGVUZXh0dXJlU1JHQkRlY29k
ZVZhbHVlKGNvbnRleHQsIHBhcmFtcykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSwgIlVua25vd24gcG5hbWUuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtOTAxLDYgKzEwNjgsMTUgQEAgYm9vbCBWYWxpZGF0ZUdldFNhbXBsZXJQYXJhbWV0ZXJC
YXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QQVJFX0ZV
TkM6CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfU1JHQl9E
RUNPREVfRVhUOgorICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4
dHVyZVNSR0JEZWNvZGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwg
IkdMX0VYVF90ZXh0dXJlX3NSR0JfZGVjb2RlIGlzIG5vdCBlbmFibGVkLiIpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsK
KwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNLCAiVW5rbm93biBwbmFtZS4iKSk7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC05NzcsNyArMTE1MywxOCBAQCBib29sIFZhbGlkYXRlR2V0VmVydGV4QXR0
cmliQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhfQVRU
UklCX0FSUkFZX0lOVEVHRVI6CiAgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVu
dE1ham9yVmVyc2lvbigpIDwgMykKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgInBuYW1lIHJl
cXVpcmVzIE9wZW5HTCBFUyAzLjAuIikpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVkFMSURfRU5V
TSwgIkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfSU5URUdFUiByZXF1aXJlcyBPcGVuR0wgRVMgMy4w
LiIpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBHTF9WRVJURVhf
QVRUUklCX0JJTkRJTkc6CisgICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRSSUJfUkVMQVRJ
VkVfT0ZGU0VUOgorICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9u
KCkgPCBFU18zXzEpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFM
SURfRU5VTSwgIlZlcnRleCBBdHRyaWIgQmluZGluZ3MgcmVxdWlyZSBPcGVuR0wgRVMgMy4xLiIp
KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExMDQsNyArMTI5MSw3IEBAIGJvb2wgVmFsaWRh
dGVHZXRCdWZmZXJQYXJhbWV0ZXJCYXNlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgaWYgKCFleHRlbnNpb25zLm1hcEJ1ZmZlcikKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgRXJy
b3IoR0xfSU5WQUxJRF9FTlVNLCAicG5hbWUgcmVxdWlyZXMgT3BlbkdMIEVTIDMuMCBvciBHTF9P
RVNfbWFwX2J1ZmZlci4iKSk7CisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURf
RU5VTSwgInBuYW1lIHJlcXVpcmVzIE9wZW5HTCBFUyAzLjAgb3IgR0xfT0VTX21hcGJ1ZmZlci4i
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xMTE2LDcgKzEzMDMsNyBAQCBib29sIFZhbGlkYXRlR2V0QnVmZmVy
UGFyYW1ldGVyQmFzZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcigKICAgICAgICAgICAg
ICAgICAgICAgR0xfSU5WQUxJRF9FTlVNLAotICAgICAgICAgICAgICAgICAgICAicG5hbWUgcmVx
dWlyZXMgT3BlbkdMIEVTIDMuMCwgR0xfT0VTX21hcF9idWZmZXIgb3IgR0xfRVhUX21hcF9idWZm
ZXJfcmFuZ2UuIikpOworICAgICAgICAgICAgICAgICAgICAicG5hbWUgcmVxdWlyZXMgT3BlbkdM
IEVTIDMuMCwgR0xfT0VTX21hcGJ1ZmZlciBvciBHTF9FWFRfbWFwX2J1ZmZlcl9yYW5nZS4iKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0xMTg3LDYgKzEzNzQsMTUgQEAgYm9vbCBWYWxpZGF0ZUdldEludGVybmFs
Rm9ybWF0aXZCYXNlKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIGNhc2UgR0xfUkVOREVSQlVG
RkVSOgogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEX01V
TFRJU0FNUExFOgorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8
IEVTXzNfMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcigKKyAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJU
ZXh0dXJlIHRhcmdldCByZXF1aXJlcyBhdCBsZWFzdCBPcGVuR0wgRVMgMy4xLiIpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCB0YXJnZXQuIikpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTIyMCw3ICsxNDE2LDQwOSBAQCBib29sIFZhbGlkYXRlR2V0SW50
ZXJuYWxGb3JtYXRpdkJhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgKm51bVBhcmFtcyA9
IHN0ZDo6bWluKGJ1ZlNpemUsIG1heFdyaXRlUGFyYW1zKTsKICAgICB9CiAKLSAgICByZXR1cm4g
dHJ1ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZVVuaWZvcm1Db21tb25C
YXNlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGlua2VkVW5p
Zm9ybSAqKnVuaWZvcm1PdXQpCit7CisgICAgLy8gVE9ETyhKaWFqaWEpOiBBZGQgaW1hZ2UgdW5p
Zm9ybSBjaGVjayBpbiBmdXR1cmUuCisgICAgaWYgKGNvdW50IDwgMCkKKyAgICB7CisgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghcHJvZ3JhbSB8fCAhcHJvZ3JhbS0+aXNM
aW5rZWQoKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBp
ZiAobG9jYXRpb24gPT0gLTEpCisgICAgeworICAgICAgICAvLyBTaWxlbnRseSBpZ25vcmUgdGhl
IHVuaWZvcm0gY29tbWFuZAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29u
c3QgYXV0byAmdW5pZm9ybUxvY2F0aW9ucyA9IHByb2dyYW0tPmdldFVuaWZvcm1Mb2NhdGlvbnMo
KTsKKyAgICBzaXplX3QgY2FzdGVkTG9jYXRpb24gPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGxvY2F0
aW9uKTsKKyAgICBpZiAoY2FzdGVkTG9jYXRpb24gPj0gdW5pZm9ybUxvY2F0aW9ucy5zaXplKCkp
CisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkludmFsaWQgdW5pZm9ybSBsb2NhdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGNvbnN0IGF1dG8gJnVuaWZvcm1Mb2NhdGlvbiA9IHVuaWZvcm1M
b2NhdGlvbnNbY2FzdGVkTG9jYXRpb25dOworICAgIGlmICh1bmlmb3JtTG9jYXRpb24uaWdub3Jl
ZCkKKyAgICB7CisgICAgICAgIC8vIFNpbGVudGx5IGlnbm9yZSB0aGUgdW5pZm9ybSBjb21tYW5k
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIXVuaWZvcm1Mb2NhdGlv
bi51c2VkKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNv
bnN0IGF1dG8gJnVuaWZvcm0gPSBwcm9ncmFtLT5nZXRVbmlmb3JtQnlJbmRleCh1bmlmb3JtTG9j
YXRpb24uaW5kZXgpOworCisgICAgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBh
IG5vbi1hcnJheSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCisgICAgaWYgKCF1bmlm
b3JtLmlzQXJyYXkoKSAmJiBjb3VudCA+IDEpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgKnVuaWZvcm1PdXQgPSAmdW5pZm9ybTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBWYWxpZGF0ZVVuaWZvcm0xaXZWYWx1ZShWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHVuaWZvcm1UeXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpCit7CisgICAgLy8gVmFsdWUg
dHlwZSBpcyBHTF9JTlQsIGJlY2F1c2Ugd2Ugb25seSBnZXQgaGVyZSBmcm9tIGdsVW5pZm9ybTFp
e3Z9LgorICAgIC8vIEl0IGlzIGNvbXBhdGlibGUgd2l0aCBJTlQgb3IgQk9PTC4KKyAgICAvLyBE
byB0aGVzZSBjaGVhcCB0ZXN0cyBmaXJzdCwgZm9yIGEgbGl0dGxlIGV4dHJhIHNwZWVkLgorICAg
IGlmIChHTF9JTlQgPT0gdW5pZm9ybVR5cGUgfHwgR0xfQk9PTCA9PSB1bmlmb3JtVHlwZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmIChJc1NhbXBsZXJUeXBl
KHVuaWZvcm1UeXBlKSkKKyAgICB7CisgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHZhbHVlcyBh
cmUgaW4gcmFuZ2UuCisgICAgICAgIGNvbnN0IEdMaW50IG1heCA9IGNvbnRleHQtPmdldENhcHMo
KS5tYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzOworICAgICAgICBmb3IgKEdMc2l6ZWkgaSA9
IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAodmFsdWVbaV0g
PCAwIHx8IHZhbHVlW2ldID49IG1heCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAic2FtcGxlciB1bmlm
b3JtIHZhbHVlIG91dCBvZiByYW5nZSIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJ3
cm9uZyB0eXBlIG9mIHZhbHVlIGZvciB1bmlmb3JtIikpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworYm9vbCBWYWxpZGF0ZVVuaWZvcm1WYWx1ZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwg
R0xlbnVtIHZhbHVlVHlwZSwgR0xlbnVtIHVuaWZvcm1UeXBlKQoreworICAgIC8vIENoZWNrIHRo
YXQgdGhlIHZhbHVlIHR5cGUgaXMgY29tcGF0aWJsZSB3aXRoIHVuaWZvcm0gdHlwZS4KKyAgICAv
LyBEbyB0aGUgY2hlYXBlciB0ZXN0IGZpcnN0LCBmb3IgYSBsaXR0bGUgZXh0cmEgc3BlZWQuCisg
ICAgaWYgKHZhbHVlVHlwZSA9PSB1bmlmb3JtVHlwZSB8fCBWYXJpYWJsZUJvb2xWZWN0b3JUeXBl
KHZhbHVlVHlwZSkgPT0gdW5pZm9ybVR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisKKyAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTiwgIndyb25nIHR5cGUgb2YgdmFsdWUgZm9yIHVuaWZvcm0iKSk7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJpeFZhbHVlKFZhbGlkYXRpb25Db250
ZXh0ICpjb250ZXh0LCBHTGVudW0gdmFsdWVUeXBlLCBHTGVudW0gdW5pZm9ybVR5cGUpCit7Cisg
ICAgLy8gQ2hlY2sgdGhhdCB0aGUgdmFsdWUgdHlwZSBpcyBjb21wYXRpYmxlIHdpdGggdW5pZm9y
bSB0eXBlLgorICAgIGlmICh2YWx1ZVR5cGUgPT0gdW5pZm9ybVR5cGUpCisgICAgeworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgIndyb25nIHR5cGUgb2YgdmFsdWUgZm9yIHVuaWZvcm0iKSk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFZhbGlkYXRlRVMyQ29weVRleEltYWdlUGFy
YW1ldGVycyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTdWJJbWFnZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBib3JkZXIpCit7CisgICAgaWYgKCFWYWxpZFRleHR1cmUyRERlc3RpbmF0aW9uVGFyZ2V0KGNv
bnRleHQsIHRhcmdldCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHRleHR1cmUgdGFyZ2V0IikpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZEltYWdlU2l6ZVBhcmFtZXRlcnMo
Y29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgd2lkdGgsIGhlaWdodCwgMSwgaXNTdWJJbWFnZSkpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
LCAiSW52YWxpZCB0ZXh0dXJlIGRpbWVuc2lvbnMuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgRm9ybWF0IHRleHR1cmVGb3JtYXQgPSBGb3JtYXQ6OkludmFsaWQoKTsK
KyAgICBpZiAoIVZhbGlkYXRlQ29weVRleEltYWdlUGFyYW1ldGVyc0Jhc2UoY29udGV4dCwgdGFy
Z2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIGlzU3ViSW1hZ2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhvZmZzZXQsIHlvZmZzZXQsIDAsIHgsIHksIHdp
ZHRoLCBoZWlnaHQsIGJvcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJnRleHR1cmVGb3JtYXQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250ZXh0
LT5nZXRHTFN0YXRlKCkuZ2V0UmVhZEZyYW1lYnVmZmVyKCk7CisgICAgR0xlbnVtIGNvbG9yYnVm
ZmVyRm9ybWF0ICAgICAgICAgICA9IGZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIoKS0+
Z2V0Rm9ybWF0KCkuYXNTaXplZCgpOworICAgIGNvbnN0IGF1dG8gJmZvcm1hdEluZm8gICAgICAg
ICAgICAgPSAqdGV4dHVyZUZvcm1hdC5pbmZvOworCisgICAgLy8gW09wZW5HTCBFUyAyLjAuMjRd
IHRhYmxlIDMuOQorICAgIGlmIChpc1N1YkltYWdlKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChm
b3JtYXRJbmZvLmZvcm1hdCkKKyAgICAgICAgeworICAgICAgICAgICAgY2FzZSBHTF9BTFBIQToK
KyAgICAgICAgICAgICAgICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfQUxQSEE4X0VYVCAm
JiBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBNCAmJgorICAgICAgICAgICAgICAgICAgICBj
b2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0ExICYmIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdM
X1JHQkE4X09FUykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRToKKyAgICAgICAgICAgICAg
ICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUjhfRVhUICYmIGNvbG9yYnVmZmVyRm9ybWF0
ICE9IEdMX1JHOF9FWFQgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQg
IT0gR0xfUkdCNTY1ICYmIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjhfT0VTICYmCisgICAg
ICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmIGNvbG9yYnVm
ZmVyRm9ybWF0ICE9IEdMX1JHQjVfQTEgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZm
ZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfUkVEX0VYVDoKKyAg
ICAgICAgICAgICAgICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUjhfRVhUICYmIGNvbG9y
YnVmZmVyRm9ybWF0ICE9IEdMX1JHOF9FWFQgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3Ji
dWZmZXJGb3JtYXQgIT0gR0xfUkdCNTY1ICYmIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjhf
T0VTICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0
ICYmIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjVfQTEgJiYKKyAgICAgICAgICAgICAgICAg
ICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTICYmIGNvbG9yYnVmZmVyRm9ybWF0
ICE9IEdMX1IzMkYgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0g
R0xfUkczMkYgJiYgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCMzJGICYmCisgICAgICAgICAg
ICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkEzMkYpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBHTF9SR19FWFQ6CisgICAgICAgICAgICAgICAgaWYgKGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdM
X1JHOF9FWFQgJiYgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNTY1ICYmCisgICAgICAgICAg
ICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjhfT0VTICYmIGNvbG9yYnVmZmVy
Rm9ybWF0ICE9IEdMX1JHQkE0ICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9y
bWF0ICE9IEdMX1JHQjVfQTEgJiYgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTICYm
CisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHMzJGICYmIGNv
bG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjMyRiAmJgorICAgICAgICAgICAgICAgICAgICBjb2xv
cmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBMzJGKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfUkdCOgorICAg
ICAgICAgICAgICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1NjUgJiYgY29sb3Ji
dWZmZXJGb3JtYXQgIT0gR0xfUkdCOF9PRVMgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3Ji
dWZmZXJGb3JtYXQgIT0gR0xfUkdCQTQgJiYgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9B
MSAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBOF9P
RVMgJiYgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCMzJGICYmCisgICAgICAgICAgICAgICAg
ICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkEzMkYpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9M
VU1JTkFOQ0VfQUxQSEE6CisgICAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAgICAgICAg
ICAgaWYgKGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmIGNvbG9yYnVmZmVyRm9ybWF0
ICE9IEdMX1JHQjVfQTEgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQg
IT0gR0xfUkdCQThfT0VTICYmIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkEzMkYpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAgICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICAgIGNhc2Ug
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19BTkdMRToKKyAgICAgICAgICAgIGNhc2UgR0xf
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKKyAgICAgICAgICAgIGNhc2UgR0xfRVRD
MV9SR0I4X09FUzoKKyAgICAgICAgICAgIGNhc2UgR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9B
TkdMRToKKyAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0I4X0xPU1NZX0RFQ09ERV9F
VEMyX0FOR0xFOgorICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X0xPU1NZX0RF
Q09ERV9FVEMyX0FOR0xFOgorICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQjhfUFVO
Q0hUSFJPVUdIX0FMUEhBMV9MT1NTWV9ERUNPREVfRVRDMl9BTkdMRToKKyAgICAgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9QVU5DSFRIUk9VR0hfQUxQSEExX0xPU1NZX0RFQ09ERV9F
VEMyX0FOR0xFOgorICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6CisgICAgICAgICAgICBjYXNlIEdMX0RF
UFRIX1NURU5DSUxfT0VTOgorICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmb3JtYXRJbmZvLnR5cGUgPT0gR0xf
RkxPQVQgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlRmxvYXQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgZWxzZQorICAgIHsKKyAgICAgICAgc3dpdGNoIChpbnRlcm5hbGZvcm1hdCkKKyAgICAgICAg
eworICAgICAgICAgICAgY2FzZSBHTF9BTFBIQToKKyAgICAgICAgICAgICAgICBpZiAoY29sb3Ji
dWZmZXJGb3JtYXQgIT0gR0xfQUxQSEE4X0VYVCAmJiBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9S
R0JBNCAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1
X0ExICYmIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUkE4X0VYVCAmJgorICAgICAgICAgICAg
ICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBOF9PRVMgJiYgY29sb3JidWZmZXJG
b3JtYXQgIT0gR0xfQkdSNV9BMV9BTkdMRVgpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U6
CisgICAgICAgICAgICAgICAgaWYgKGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1I4X0VYVCAmJiBj
b2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SRzhfRVhUICYmCisgICAgICAgICAgICAgICAgICAgIGNv
bG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjU2NSAmJiBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9S
R0I4X09FUyAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9S
R0JBNCAmJiBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0ExICYmCisgICAgICAgICAgICAg
ICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUkE4X0VYVCAmJiBjb2xvcmJ1ZmZlckZv
cm1hdCAhPSBHTF9SR0JBOF9PRVMgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJG
b3JtYXQgIT0gR0xfQkdSNV9BMV9BTkdMRVgpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9SRURfRVhUOgor
ICAgICAgICAgICAgICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SOF9FWFQgJiYgY29s
b3JidWZmZXJGb3JtYXQgIT0gR0xfUkc4X0VYVCAmJgorICAgICAgICAgICAgICAgICAgICBjb2xv
cmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1NjUgJiYgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdC
OF9PRVMgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdC
QTQgJiYgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9BMSAmJgorICAgICAgICAgICAgICAg
ICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9CR1JBOF9FWFQgJiYgY29sb3JidWZmZXJGb3Jt
YXQgIT0gR0xfUkdCQThfT0VTICYmCisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9y
bWF0ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfUkdfRVhUOgorICAg
ICAgICAgICAgICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SRzhfRVhUICYmIGNvbG9y
YnVmZmVyRm9ybWF0ICE9IEdMX1JHQjU2NSAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1
ZmZlckZvcm1hdCAhPSBHTF9SR0I4X09FUyAmJiBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JB
NCAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0Ex
ICYmIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUkE4X0VYVCAmJgorICAgICAgICAgICAgICAg
ICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBOF9PRVMgJiYgY29sb3JidWZmZXJGb3Jt
YXQgIT0gR0xfQkdSNV9BMV9BTkdMRVgpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9SR0I6CisgICAgICAg
ICAgICAgICAgaWYgKGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjU2NSAmJiBjb2xvcmJ1ZmZl
ckZvcm1hdCAhPSBHTF9SR0I4X09FUyAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZl
ckZvcm1hdCAhPSBHTF9SR0JBNCAmJiBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0ExICYm
CisgICAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUkE4X0VYVCAm
JiBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBOF9PRVMgJiYKKyAgICAgICAgICAgICAgICAg
ICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfQkdSNV9BMV9BTkdMRVgpCisgICAgICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2Fz
ZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAgICAg
ICAgICAgICAgaWYgKGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmIGNvbG9yYnVmZmVy
Rm9ybWF0ICE9IEdMX1JHQjVfQTEgJiYKKyAgICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJG
b3JtYXQgIT0gR0xfQkdSQThfRVhUICYmIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09F
UyAmJgorICAgICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9CR1I1X0Ex
X0FOR0xFWCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6
CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAg
ICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUNvbXByZXNz
aW9uRFhUMSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6CisgICAg
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Np
b25EWFQzKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKKyAgICAg
ICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVDb21wcmVzc2lv
bkRYVDUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfT0VTOgorICAgICAgICAgICAgICAgIGlmIChjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZEVUQzFSR0I4VGV4dHVyZSkKKyAgICAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdM
X0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEU6CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBS
RVNTRURfUkdCOF9MT1NTWV9ERUNPREVfRVRDMl9BTkdMRToKKyAgICAgICAgICAgIGNhc2UgR0xf
Q09NUFJFU1NFRF9TUkdCOF9MT1NTWV9ERUNPREVfRVRDMl9BTkdMRToKKyAgICAgICAgICAgIGNh
c2UgR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfTE9TU1lfREVDT0RFX0VU
QzJfQU5HTEU6CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJP
VUdIX0FMUEhBMV9MT1NTWV9ERUNPREVfRVRDMl9BTkdMRToKKyAgICAgICAgICAgICAgICBpZiAo
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmxvc3N5RVRDRGVjb2RlKQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJFVEMgbG9zc3kgZGVjb2RlIGZvcm1hdHMgY2FuJ3QgYmUgY29waWVkIHRvLiIpKTsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIEdM
X0lOVkFMSURfRU5VTSwgIkFOR0xFX2xvc3N5X2V0Y19kZWNvZGUgZXh0ZW5zaW9uIGlzIG5vdCBz
dXBwb3J0ZWQuIikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9E
RVBUSF9DT01QT05FTlQ6CisgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX0NPTVBPTkVOVDE2Ogor
ICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQzMl9PRVM6CisgICAgICAgICAgICBj
YXNlIEdMX0RFUFRIX1NURU5DSUxfT0VTOgorICAgICAgICAgICAgY2FzZSBHTF9ERVBUSDI0X1NU
RU5DSUw4X09FUzoKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmRlcHRoVGV4dHVyZXMpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICAvLyBJZiB3aWR0aCBvciBoZWlnaHQgaXMgemVybywgaXQgaXMgYSBuby1vcC4gIFJl
dHVybiBmYWxzZSB3aXRob3V0IHNldHRpbmcgYW4gZXJyb3IuCisgICAgcmV0dXJuICh3aWR0aCA+
IDAgJiYgaGVpZ2h0ID4gMCk7CiB9CiAKIH0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKQEAgLTEy
MjksMTYgKzE4MjcsMTkgQEAgYm9vbCBWYWxpZFRleHR1cmVUYXJnZXQoY29uc3QgVmFsaWRhdGlv
bkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpCiB7CiAgICAgc3dpdGNoICh0YXJnZXQp
CiAgICAgewotICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOgotICAgICAgY2FzZSBHTF9URVhUVVJF
X0NVQkVfTUFQOgotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJF
XzJEOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVA6CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfM0Q6CisgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV8yRF9BUlJBWToKKyAgICAgICAgICAgIHJldHVybiAoY29udGV4dC0+Z2V0Q2xpZW50
TWFqb3JWZXJzaW9uKCkgPj0gMyk7CiAKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV8zRDoKLSAgICAg
IGNhc2UgR0xfVEVYVFVSRV8yRF9BUlJBWToKLSAgICAgICAgICByZXR1cm4gKGNvbnRleHQtPmdl
dENsaWVudE1ham9yVmVyc2lvbigpID49IDMpOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkRf
TVVMVElTQU1QTEU6CisgICAgICAgICAgICByZXR1cm4gKGNvbnRleHQtPmdldENsaWVudFZlcnNp
b24oKSA+PSBWZXJzaW9uKDMsIDEpKTsKIAotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIH0KIApAQCAtMTI4NSwxNiArMTg4NiwxNiBAQCBib29sIFZhbGlkVGV4dHVyZTJERGVzdGlu
YXRpb25UYXJnZXQoY29uc3QgVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YQog
ewogICAgIHN3aXRjaCAodGFyZ2V0KQogICAgIHsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoK
LSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgotICAgICAgY2FzZSBH
TF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VC
RV9NQVBfUE9TSVRJVkVfWToKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9ZOgotICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6Ci0gICAgICBj
YXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjoKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBH
TF9URVhUVVJFXzJEOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVf
WDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6CisgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZOgorICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWToKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1o6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9aOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQogCkBAIC0xMzAyLDI1ICsxOTAzLDUwIEBAIGJv
b2wgVmFsaWRUZXh0dXJlM0REZXN0aW5hdGlvblRhcmdldChjb25zdCBWYWxpZGF0aW9uQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHRhCiB7CiAgICAgc3dpdGNoICh0YXJnZXQpCiAgICAgewotICAg
ICAgY2FzZSBHTF9URVhUVVJFXzNEOgotICAgICAgY2FzZSBHTF9URVhUVVJFXzJEX0FSUkFZOgot
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfM0Q6CisgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV8yRF9BUlJBWToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBWYWxpZFRleExldmVs
RGVzdGluYXRpb25UYXJnZXQoY29uc3QgVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51
bSB0YXJnZXQpCit7CisgICAgc3dpdGNoICh0YXJnZXQpCisgICAgeworICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfMkQ6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9Y
OgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWDoKKyAgICAgICAg
Y2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6CisgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9N
QVBfUE9TSVRJVkVfWjoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZF
X1o6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8zRDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJF
XzJEX0FSUkFZOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEU6CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiB9CiAKIGJvb2wgVmFsaWRGcmFtZWJ1ZmZlclRhcmdldChHTGVudW0g
dGFyZ2V0KQogewotICAgIHN0YXRpY19hc3NlcnQoR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSA9
PSBHTF9EUkFXX0ZSQU1FQlVGRkVSICYmIEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUgPT0gR0xf
UkVBRF9GUkFNRUJVRkZFUiwKKyAgICBzdGF0aWNfYXNzZXJ0KEdMX0RSQVdfRlJBTUVCVUZGRVJf
QU5HTEUgPT0gR0xfRFJBV19GUkFNRUJVRkZFUiAmJgorICAgICAgICAgICAgICAgICAgICAgIEdM
X1JFQURfRlJBTUVCVUZGRVJfQU5HTEUgPT0gR0xfUkVBRF9GUkFNRUJVRkZFUiwKICAgICAgICAg
ICAgICAgICAgICJBTkdMRSBmcmFtZWJ1ZmZlciBlbnVtcyBtdXN0IGVxdWFsIHRoZSBFUzMgZnJh
bWVidWZmZXIgZW51bXMuIik7CiAKICAgICBzd2l0Y2ggKHRhcmdldCkKICAgICB7Ci0gICAgICBj
YXNlIEdMX0ZSQU1FQlVGRkVSOiAgICAgIHJldHVybiB0cnVlOwotICAgICAgY2FzZSBHTF9SRUFE
X0ZSQU1FQlVGRkVSOiByZXR1cm4gdHJ1ZTsKLSAgICAgIGNhc2UgR0xfRFJBV19GUkFNRUJVRkZF
UjogcmV0dXJuIHRydWU7Ci0gICAgICBkZWZhdWx0OiAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUjoKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBjYXNlIEdMX1JFQURfRlJBTUVCVUZGRVI6CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBHTF9EUkFXX0ZSQU1FQlVGRkVSOgorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogfQogCkBAIC0xMzI4LDIzICsxOTU0LDI5IEBAIGJvb2wgVmFsaWRCdWZmZXJUYXJn
ZXQoY29uc3QgVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpCiB7CiAg
ICAgc3dpdGNoICh0YXJnZXQpCiAgICAgewotICAgICAgY2FzZSBHTF9BUlJBWV9CVUZGRVI6Ci0g
ICAgICBjYXNlIEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSOgotICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgY2FzZSBHTF9BUlJBWV9CVUZGRVI6CisgICAgICAgIGNhc2UgR0xfRUxFTUVOVF9B
UlJBWV9CVUZGRVI6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICBjYXNlIEdM
X1BJWEVMX1BBQ0tfQlVGRkVSOgorICAgICAgICBjYXNlIEdMX1BJWEVMX1VOUEFDS19CVUZGRVI6
CisgICAgICAgICAgICByZXR1cm4gKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5waXhlbEJ1ZmZl
ck9iamVjdCB8fAorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRDbGllbnRNYWpvclZl
cnNpb24oKSA+PSAzKTsKIAotICAgICAgY2FzZSBHTF9QSVhFTF9QQUNLX0JVRkZFUjoKLSAgICAg
IGNhc2UgR0xfUElYRUxfVU5QQUNLX0JVRkZFUjoKLSAgICAgICAgICByZXR1cm4gKGNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5waXhlbEJ1ZmZlck9iamVjdCB8fAotICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMyk7CisgICAgICAgIGNhc2UgR0xf
Q09QWV9SRUFEX0JVRkZFUjoKKyAgICAgICAgY2FzZSBHTF9DT1BZX1dSSVRFX0JVRkZFUjoKKyAg
ICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSOgorICAgICAgICBjYXNlIEdM
X1VOSUZPUk1fQlVGRkVSOgorICAgICAgICAgICAgcmV0dXJuIChjb250ZXh0LT5nZXRDbGllbnRN
YWpvclZlcnNpb24oKSA+PSAzKTsKIAotICAgICAgY2FzZSBHTF9DT1BZX1JFQURfQlVGRkVSOgot
ICAgICAgY2FzZSBHTF9DT1BZX1dSSVRFX0JVRkZFUjoKLSAgICAgIGNhc2UgR0xfVFJBTlNGT1JN
X0ZFRURCQUNLX0JVRkZFUjoKLSAgICAgIGNhc2UgR0xfVU5JRk9STV9CVUZGRVI6Ci0gICAgICAg
ICAgcmV0dXJuIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzKTsKKyAgICAg
ICAgY2FzZSBHTF9BVE9NSUNfQ09VTlRFUl9CVUZGRVI6CisgICAgICAgIGNhc2UgR0xfU0hBREVS
X1NUT1JBR0VfQlVGRkVSOgorICAgICAgICBjYXNlIEdMX0RSQVdfSU5ESVJFQ1RfQlVGRkVSOgor
ICAgICAgICBjYXNlIEdMX0RJU1BBVENIX0lORElSRUNUX0JVRkZFUjoKKyAgICAgICAgICAgIHJl
dHVybiBjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPj0gVmVyc2lvbigzLCAxKTsKIAotICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KIApAQCAtMTM1NywyOCArMTk4OSwzMiBA
QCBib29sIFZhbGlkTWlwTGV2ZWwoY29uc3QgVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKQogICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6CiAg
ICAgICAgICAgICBtYXhEaW1lbnNpb24gPSBjYXBzLm1heDJEVGV4dHVyZVNpemU7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUDoKLSAgICAgIGNhc2Ug
R0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgotICAgICAgY2FzZSBHTF9URVhUVVJFX0NV
QkVfTUFQX05FR0FUSVZFX1g6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJ
VkVfWToKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZOgotICAgICAg
Y2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6Ci0gICAgICBjYXNlIEdMX1RFWFRV
UkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjoKLSAgICAgICAgICBtYXhEaW1lbnNpb24gPSBjYXBzLm1h
eEN1YmVNYXBUZXh0dXJlU2l6ZTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVEVY
VFVSRV8zRDoKLSAgICAgICAgICBtYXhEaW1lbnNpb24gPSBjYXBzLm1heDNEVGV4dHVyZVNpemU7
Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfMkRfQVJSQVk6Ci0gICAg
ICAgICAgbWF4RGltZW5zaW9uID0gY2Fwcy5tYXgyRFRleHR1cmVTaXplOwotICAgICAgICAgIGJy
ZWFrOwotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgY2FzZSBHTF9URVhU
VVJFX0NVQkVfTUFQOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVf
WDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6CisgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZOgorICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWToKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVf
TUFQX1BPU0lUSVZFX1o6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElW
RV9aOgorICAgICAgICAgICAgbWF4RGltZW5zaW9uID0gY2Fwcy5tYXhDdWJlTWFwVGV4dHVyZVNp
emU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFXzNEOgorICAg
ICAgICAgICAgbWF4RGltZW5zaW9uID0gY2Fwcy5tYXgzRFRleHR1cmVTaXplOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRF9BUlJBWToKKyAgICAgICAgICAg
IG1heERpbWVuc2lvbiA9IGNhcHMubWF4MkRUZXh0dXJlU2l6ZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEU6CisgICAgICAgICAgICBt
YXhEaW1lbnNpb24gPSBjYXBzLm1heDJEVGV4dHVyZVNpemU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIGxldmVsIDw9IGdsOjpsb2cyKHN0YXRpY19jYXN0PGludD4obWF4RGltZW5zaW9u
KSk7CiB9CiAKLWJvb2wgVmFsaWRJbWFnZVNpemVQYXJhbWV0ZXJzKGNvbnN0IENvbnRleHQgKmNv
bnRleHQsCitib29sIFZhbGlkSW1hZ2VTaXplUGFyYW1ldGVycyhjb25zdCBWYWxpZGF0aW9uQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCkBAIC0xMzkzLDcgKzIwMjksOSBA
QCBib29sIFZhbGlkSW1hZ2VTaXplUGFyYW1ldGVycyhjb25zdCBDb250ZXh0ICpjb250ZXh0LAog
CiAgICAgLy8gVGV4U3ViSW1hZ2UgcGFyYW1ldGVycyBjYW4gYmUgTlBPVCB3aXRob3V0IHRleHR1
cmVOUE9UIGV4dGVuc2lvbiwKICAgICAvLyBhcyBsb25nIGFzIHRoZSBkZXN0aW5hdGlvbiB0ZXh0
dXJlIGlzIFBPVC4KLSAgICBpZiAoIWlzU3ViSW1hZ2UgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS50ZXh0dXJlTlBPVCAmJgorICAgIGJvb2wgaGFzTlBPVFN1cHBvcnQgPQorICAgICAgICBj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZU5QT1QgfHwgY29udGV4dC0+Z2V0Q2xpZW50
VmVyc2lvbigpID49IFZlcnNpb24oMywgMCk7CisgICAgaWYgKCFpc1N1YkltYWdlICYmICFoYXNO
UE9UU3VwcG9ydCAmJgogICAgICAgICAobGV2ZWwgIT0gMCAmJiAoIWdsOjppc1BvdzIod2lkdGgp
IHx8ICFnbDo6aXNQb3cyKGhlaWdodCkgfHwgIWdsOjppc1BvdzIoZGVwdGgpKSkpCiAgICAgewog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDE4LDYgKzIwNTYsMTIgQEAgYm9vbCBDb21wcmVz
c2VkVGV4dHVyZUZvcm1hdFJlcXVpcmVzRXhhY3RTaXplKEdMZW51bSBpbnRlcm5hbEZvcm1hdCkK
ICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgogICAgICAg
ICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CiAgICAgICAgIGNhc2Ug
R0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRToKKyAgICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1JHQjhfTE9TU1lfREVDT0RFX0VUQzJfQU5HTEU6CisgICAgICAgIGNhc2UgR0xfQ09NUFJF
U1NFRF9TUkdCOF9MT1NTWV9ERUNPREVfRVRDMl9BTkdMRToKKyAgICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9MT1NTWV9ERUNPREVfRVRDMl9BTkdMRToK
KyAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfTE9T
U1lfREVDT0RFX0VUQzJfQU5HTEU6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBOF9M
T1NTWV9ERUNPREVfRVRDMl9FQUNfQU5HTEU6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9T
UkdCOF9BTFBIQThfTE9TU1lfREVDT0RFX0VUQzJfRUFDX0FOR0xFOgogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICAgICAgZGVmYXVsdDoKQEAgLTE0MjcsNiArMjA3MSw4IEBAIGJvb2wg
Q29tcHJlc3NlZFRleHR1cmVGb3JtYXRSZXF1aXJlc0V4YWN0U2l6ZShHTGVudW0gaW50ZXJuYWxG
b3JtYXQpCiAKIGJvb2wgVmFsaWRDb21wcmVzc2VkSW1hZ2VTaXplKGNvbnN0IFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGlu
dGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNl
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpCiB7CkBAIC0xNDM2LDE0ICsyMDgyLDE2IEBAIGJv
b2wgVmFsaWRDb21wcmVzc2VkSW1hZ2VTaXplKGNvbnN0IFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKHdpZHRoIDwgMCB8
fCBoZWlnaHQgPCAwKQorICAgIGlmICh4b2Zmc2V0IDwgMCB8fCB5b2Zmc2V0IDwgMCB8fCB3aWR0
aCA8IDAgfHwgaGVpZ2h0IDwgMCkKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKICAgICBpZiAoQ29tcHJlc3NlZFRleHR1cmVGb3JtYXRSZXF1aXJlc0V4YWN0U2l6ZShpbnRl
cm5hbEZvcm1hdCkpCiAgICAgewotICAgICAgICBpZiAoKHN0YXRpY19jYXN0PEdMdWludD4od2lk
dGgpID4gZm9ybWF0SW5mby5jb21wcmVzc2VkQmxvY2tXaWR0aCAmJgorICAgICAgICBpZiAoeG9m
ZnNldCAlIGZvcm1hdEluZm8uY29tcHJlc3NlZEJsb2NrV2lkdGggIT0gMCB8fAorICAgICAgICAg
ICAgeW9mZnNldCAlIGZvcm1hdEluZm8uY29tcHJlc3NlZEJsb2NrSGVpZ2h0ICE9IDAgfHwKKyAg
ICAgICAgICAgIChzdGF0aWNfY2FzdDxHTHVpbnQ+KHdpZHRoKSA+IGZvcm1hdEluZm8uY29tcHJl
c3NlZEJsb2NrV2lkdGggJiYKICAgICAgICAgICAgICB3aWR0aCAlIGZvcm1hdEluZm8uY29tcHJl
c3NlZEJsb2NrV2lkdGggIT0gMCkgfHwKICAgICAgICAgICAgIChzdGF0aWNfY2FzdDxHTHVpbnQ+
KGhlaWdodCkgPiBmb3JtYXRJbmZvLmNvbXByZXNzZWRCbG9ja0hlaWdodCAmJgogICAgICAgICAg
ICAgIGhlaWdodCAlIGZvcm1hdEluZm8uY29tcHJlc3NlZEJsb2NrSGVpZ2h0ICE9IDApKQpAQCAt
MTUxMCw5ICsyMTU4LDEwIEBAIGJvb2wgVmFsaWRJbWFnZURhdGFTaXplKFZhbGlkYXRpb25Db250
ZXh0ICpjb250ZXh0LAogICAgICAgICB7CiAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cigKICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgImltYWdlU2l6
ZSBtdXN0IGJlIDAgaWYgbm8gdGV4dHVyZSBkYXRhIGlzIHByb3ZpZGVkLiIpKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChlbmRCeXRlID4gc3Rh
dGljX2Nhc3Q8R0x1aW50PihpbWFnZVNpemUpKQorICAgICAgICBpZiAocGl4ZWxzICE9IG51bGxw
dHIgJiYgZW5kQnl0ZSA+IHN0YXRpY19jYXN0PEdMdWludD4oaW1hZ2VTaXplKSkKICAgICAgICAg
ewogICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCiAgICAgICAgICAgICAgICAgRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJpbWFnZVNpemUgbXVzdCBiZSBhdCBsZWFzdCAldS4i
LCBlbmRCeXRlKSk7CkBAIC0xNTI1LDMwICsyMTc0LDgwIEBAIGJvb2wgVmFsaWRJbWFnZURhdGFT
aXplKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogCiBib29sIFZhbGlkUXVlcnlUeXBlKGNv
bnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBxdWVyeVR5cGUpCiB7Ci0gICAgc3RhdGljX2Fz
c2VydChHTF9BTllfU0FNUExFU19QQVNTRUQgPT0gR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCwg
IkdMIGV4dGVuc2lvbiBlbnVtcyBub3QgZXF1YWwuIik7Ci0gICAgc3RhdGljX2Fzc2VydChHTF9B
TllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFID09IEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9D
T05TRVJWQVRJVkVfRVhULCAiR0wgZXh0ZW5zaW9uIGVudW1zIG5vdCBlcXVhbC4iKTsKKyAgICBz
dGF0aWNfYXNzZXJ0KEdMX0FOWV9TQU1QTEVTX1BBU1NFRCA9PSBHTF9BTllfU0FNUExFU19QQVNT
RURfRVhULAorICAgICAgICAgICAgICAgICAgIkdMIGV4dGVuc2lvbiBlbnVtcyBub3QgZXF1YWwu
Iik7CisgICAgc3RhdGljX2Fzc2VydChHTF9BTllfU0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZF
ID09IEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhULAorICAgICAgICAgICAg
ICAgICAgIkdMIGV4dGVuc2lvbiBlbnVtcyBub3QgZXF1YWwuIik7CiAKICAgICBzd2l0Y2ggKHF1
ZXJ5VHlwZSkKICAgICB7Ci0gICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRDoKLSAgICAg
IGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRToKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRU
RU46Ci0gICAgICAgICAgcmV0dXJuIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA+
PSAzKTsKLSAgICAgIGNhc2UgR0xfVElNRV9FTEFQU0VEX0VYVDoKLSAgICAgICAgICByZXR1cm4g
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmRpc2pvaW50VGltZXJRdWVyeTsKLSAgICAgIGNhc2Ug
R0xfQ09NTUFORFNfQ09NUExFVEVEX0NIUk9NSVVNOgotICAgICAgICAgIHJldHVybiBjb250ZXh0
LT5nZXRFeHRlbnNpb25zKCkuc3luY1F1ZXJ5OwotICAgICAgZGVmYXVsdDoKKyAgICAgICAgY2Fz
ZSBHTF9BTllfU0FNUExFU19QQVNTRUQ6CisgICAgICAgIGNhc2UgR0xfQU5ZX1NBTVBMRVNfUEFT
U0VEX0NPTlNFUlZBVElWRToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBjYXNl
IEdMX1RSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU46CisgICAgICAgICAgICBy
ZXR1cm4gKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMpOworICAgICAgICBj
YXNlIEdMX1RJTUVfRUxBUFNFRF9FWFQ6CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmRpc2pvaW50VGltZXJRdWVyeTsKKyAgICAgICAgY2FzZSBHTF9DT01NQU5E
U19DT01QTEVURURfQ0hST01JVU06CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpLnN5bmNRdWVyeTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgVmFsaWRhdGVXZWJHTFZlcnRleEF0dHJpYlBvaW50
ZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMdm9pZCAqcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIHB1cmVJbnRlZ2VyKQoreworICAgIEFTU0VSVChjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkud2ViZ2xDb21wYXRpYmlsaXR5KTsKKworICAgIC8vIFdlYkdMIDEuMCBbU2Vj
dGlvbiA2LjExXSBWZXJ0ZXggQXR0cmlidXRlIERhdGEgU3RyaWRlCisgICAgLy8gVGhlIFdlYkdM
IEFQSSBzdXBwb3J0cyB2ZXJ0ZXggYXR0cmlidXRlIGRhdGEgc3RyaWRlcyB1cCB0byAyNTUgYnl0
ZXMuIEEgY2FsbCB0bworICAgIC8vIHZlcnRleEF0dHJpYlBvaW50ZXIgd2lsbCBnZW5lcmF0ZSBh
biBJTlZBTElEX1ZBTFVFIGVycm9yIGlmIHRoZSB2YWx1ZSBmb3IgdGhlIHN0cmlkZQorICAgIC8v
IHBhcmFtZXRlciBleGNlZWRzIDI1NS4KKyAgICBjb25zdGV4cHIgR0xzaXplaSBrTWF4V2ViR0xT
dHJpZGUgPSAyNTU7CisgICAgaWYgKHN0cmlkZSA+IGtNYXhXZWJHTFN0cmlkZSkKKyAgICB7Cisg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSwgIlN0cmlkZSBpcyBvdmVyIHRoZSBtYXhpbXVtIHN0cmlkZSBhbGxvd2VkIGJ5IFdl
YkdMLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFdlYkdMIDEu
MCBbU2VjdGlvbiA2LjRdIEJ1ZmZlciBPZmZzZXQgYW5kIFN0cmlkZSBSZXF1aXJlbWVudHMKKyAg
ICAvLyBUaGUgb2Zmc2V0IGFyZ3VtZW50cyB0byBkcmF3RWxlbWVudHMgYW5kIHZlcnRleEF0dHJp
YlBvaW50ZXIsIGFuZCB0aGUgc3RyaWRlIGFyZ3VtZW50IHRvCisgICAgLy8gdmVydGV4QXR0cmli
UG9pbnRlciwgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBzaXplIG9mIHRoZSBkYXRhIHR5cGUg
cGFzc2VkIHRvIHRoZSBjYWxsLAorICAgIC8vIG9yIGFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9y
IGlzIGdlbmVyYXRlZC4KKyAgICBWZXJ0ZXhGb3JtYXRUeXBlIGludGVybmFsVHlwZSA9IEdldFZl
cnRleEZvcm1hdFR5cGUodHlwZSwgbm9ybWFsaXplZCwgMSwgcHVyZUludGVnZXIpOworICAgIHNp
emVfdCB0eXBlU2l6ZSAgICAgICAgICAgICAgID0gR2V0VmVydGV4Rm9ybWF0VHlwZVNpemUoaW50
ZXJuYWxUeXBlKTsKKworICAgIEFTU0VSVChpc1BvdzIodHlwZVNpemUpICYmIHR5cGVTaXplID4g
MCk7CisgICAgc2l6ZV90IHNpemVNYXNrID0gKHR5cGVTaXplIC0gMSk7CisgICAgaWYgKChyZWlu
dGVycHJldF9jYXN0PGludHB0cl90PihwdHIpICYgc2l6ZU1hc2spICE9IDApCisgICAgeworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OLCAiT2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSB0eXBlIHNpemUuIikp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKChzdHJpZGUgJiBzaXpl
TWFzaykgIT0gMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAg
ICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJTdHJpZGUgaXMgbm90IGEgbXVsdGlw
bGUgb2YgdGhlIHR5cGUgc2l6ZS4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogUHJvZ3JhbSAqR2V0VmFsaWRQcm9ncmFtKFZhbGlkYXRp
b25Db250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaWQpCiB7Ci0gICAgLy8gRVMzIHNwZWMgKHNlY3Rp
b24gMi4xMS4xKSAtLSAiQ29tbWFuZHMgdGhhdCBhY2NlcHQgc2hhZGVyIG9yIHByb2dyYW0gb2Jq
ZWN0IG5hbWVzIHdpbGwgZ2VuZXJhdGUgdGhlCi0gICAgLy8gZXJyb3IgSU5WQUxJRF9WQUxVRSBp
ZiB0aGUgcHJvdmlkZWQgbmFtZSBpcyBub3QgdGhlIG5hbWUgb2YgZWl0aGVyIGEgc2hhZGVyIG9y
IHByb2dyYW0gb2JqZWN0IGFuZAotICAgIC8vIElOVkFMSURfT1BFUkFUSU9OIGlmIHRoZSBwcm92
aWRlZCBuYW1lIGlkZW50aWZpZXMgYW4gb2JqZWN0IHRoYXQgaXMgbm90IHRoZSBleHBlY3RlZCB0
eXBlLiIKKyAgICAvLyBFUzMgc3BlYyAoc2VjdGlvbiAyLjExLjEpIC0tICJDb21tYW5kcyB0aGF0
IGFjY2VwdCBzaGFkZXIgb3IgcHJvZ3JhbSBvYmplY3QgbmFtZXMgd2lsbAorICAgIC8vIGdlbmVy
YXRlIHRoZSBlcnJvciBJTlZBTElEX1ZBTFVFIGlmIHRoZSBwcm92aWRlZCBuYW1lIGlzIG5vdCB0
aGUgbmFtZSBvZiBlaXRoZXIgYSBzaGFkZXIKKyAgICAvLyBvciBwcm9ncmFtIG9iamVjdCBhbmQg
SU5WQUxJRF9PUEVSQVRJT04gaWYgdGhlIHByb3ZpZGVkIG5hbWUgaWRlbnRpZmllcyBhbiBvYmpl
Y3QKKyAgICAvLyB0aGF0IGlzIG5vdCB0aGUgZXhwZWN0ZWQgdHlwZS4iCiAKICAgICBQcm9ncmFt
ICp2YWxpZFByb2dyYW0gPSBjb250ZXh0LT5nZXRQcm9ncmFtKGlkKTsKIApAQCAtMTYwNiwzOCAr
MjMwNSw0MiBAQCBib29sIFZhbGlkYXRlQXR0YWNobWVudFRhcmdldChnbDo6Q29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIGF0dGFjaG1lbnQpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGF0dGFjaG1l
bnQpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0RFUFRIX0FUVEFDSE1FTlQ6Ci0gICAg
ICAgICAgY2FzZSBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQ6Ci0gICAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQ6Ci0gICAgICAgICAg
ICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLndlYmdsQ29tcGF0aWJpbGl0eSAmJgot
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQot
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSkpOwotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBjYXNlIEdM
X0RFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICBjYXNlIEdMX1NURU5DSUxfQVRUQUNITUVO
VDoKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9T
VEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkud2ViZ2xDb21wYXRpYmlsaXR5ICYmCisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRl
cnNCYXNlKGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBs
ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCitib29sIFZh
bGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRlcnNCYXNlKFZhbGlkYXRpb25Db250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpCiB7CiAg
ICAgc3dpdGNoICh0YXJnZXQpCiAgICAgewotICAgICAgY2FzZSBHTF9SRU5ERVJCVUZGRVI6Ci0g
ICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBjYXNlIEdMX1JFTkRFUkJVRkZFUjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKHdp
ZHRoIDwgMCB8fCBoZWlnaHQgPCAwIHx8IHNhbXBsZXMgPCAwKQpAQCAtMTY0Niw3ICsyMzQ5LDEw
IEBAIGJvb2wgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlUGFyYW1ldGVyc0Jhc2UoZ2w6OkNv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICBjb25zdCBUZXh0dXJlQ2FwcyAmZm9ybWF0Q2FwcyA9IGNvbnRleHQtPmdldFRleHR1
cmVDYXBzKCkuZ2V0KGludGVybmFsZm9ybWF0KTsKKyAgICAvLyBIYWNrIGZvciB0aGUgc3BlY2lh
bCBXZWJHTCAxICJERVBUSF9TVEVOQ0lMIiBpbnRlcm5hbCBmb3JtYXQuCisgICAgR0xlbnVtIGNv
bnZlcnRlZEludGVybmFsRm9ybWF0ID0gY29udGV4dC0+Z2V0Q29udmVydGVkUmVuZGVyYnVmZmVy
Rm9ybWF0KGludGVybmFsZm9ybWF0KTsKKworICAgIGNvbnN0IFRleHR1cmVDYXBzICZmb3JtYXRD
YXBzID0gY29udGV4dC0+Z2V0VGV4dHVyZUNhcHMoKS5nZXQoY29udmVydGVkSW50ZXJuYWxGb3Jt
YXQpOwogICAgIGlmICghZm9ybWF0Q2Fwcy5yZW5kZXJhYmxlKQogICAgIHsKICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CkBAIC0xNjU2LDcgKzIz
NjIsNyBAQCBib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRlcnNCYXNlKGds
OjpDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZwogICAgIC8vIEFOR0xFX2ZyYW1lYnVmZmVy
X211bHRpc2FtcGxlIGRvZXMgbm90IGV4cGxpY2l0bHkgc3RhdGUgdGhhdCB0aGUgaW50ZXJuYWwg
Zm9ybWF0IG11c3QgYmUKICAgICAvLyBzaXplZCBidXQgaXQgZG9lcyBzdGF0ZSB0aGF0IHRoZSBm
b3JtYXQgbXVzdCBiZSBpbiB0aGUgRVMyLjAgc3BlYyB0YWJsZSA0LjUgd2hpY2ggY29udGFpbnMK
ICAgICAvLyBvbmx5IHNpemVkIGludGVybmFsIGZvcm1hdHMuCi0gICAgY29uc3QgZ2w6OkludGVy
bmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5h
bGZvcm1hdCk7CisgICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6
OkdldEludGVybmFsRm9ybWF0SW5mbyhjb252ZXJ0ZWRJbnRlcm5hbEZvcm1hdCk7CiAgICAgaWYg
KGZvcm1hdEluZm8ucGl4ZWxCeXRlcyA9PSAwKQogICAgIHsKICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CkBAIC0xNjc5LDM5ICsyMzg1LDExIEBA
IGJvb2wgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlUGFyYW1ldGVyc0Jhc2UoZ2w6OkNvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0YXJnCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgVmFs
aWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlUGFyYW1ldGVyc0FOR0xFKGdsOjpDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6
ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQotewotICAgIEFTU0VSVChzYW1wbGVzID09IDAgfHwg
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmZyYW1lYnVmZmVyTXVsdGlzYW1wbGUpOwotCi0gICAg
Ly8gQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgc3RhdGVzIHRoYXQgdGhlIHZhbHVlIG9m
IHNhbXBsZXMgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwKLSAgICAvLyB0byBNQVhfU0FNUExF
U19BTkdMRSAoQ29udGV4dDo6Z2V0Q2FwcygpLm1heFNhbXBsZXMpIG90aGVyd2lzZSBHTF9JTlZB
TElEX1ZBTFVFIGlzCi0gICAgLy8gZ2VuZXJhdGVkLgotICAgIGlmIChzdGF0aWNfY2FzdDxHTHVp
bnQ+KHNhbXBsZXMpID4gY29udGV4dC0+Z2V0Q2FwcygpLm1heFNhbXBsZXMpCi0gICAgewotICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICAvLyBBTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZSBzdGF0ZXMgR0xfT1VUX09GX01FTU9SWSBpcyBnZW5lcmF0ZWQgb24gYSBmYWlsdXJl
IHRvIGNyZWF0ZQotICAgIC8vIHRoZSBzcGVjaWZpZWQgc3RvcmFnZS4gVGhpcyBpcyBkaWZmZXJl
bnQgdGhhbiBFUyAzLjAgaW4gd2hpY2ggYSBzYW1wbGUgbnVtYmVyIGhpZ2hlcgotICAgIC8vIHRo
YW4gdGhlIG1heGltdW0gc2FtcGxlIG51bWJlciBzdXBwb3J0ZWQgIGJ5IHRoaXMgZm9ybWF0IGdl
bmVyYXRlcyBhIEdMX0lOVkFMSURfVkFMVUUuCi0gICAgLy8gVGhlIFRleHR1cmVDYXBzOjpnZXRN
YXhTYW1wbGVzIG1ldGhvZCBpcyBvbmx5IGd1YXJlbnRlZWQgdG8gYmUgdmFsaWQgd2hlbiB0aGUg
Y29udGV4dCBpcyBFUzMuCi0gICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigp
ID49IDMpCi0gICAgewotICAgICAgICBjb25zdCBUZXh0dXJlQ2FwcyAmZm9ybWF0Q2FwcyA9IGNv
bnRleHQtPmdldFRleHR1cmVDYXBzKCkuZ2V0KGludGVybmFsZm9ybWF0KTsKLSAgICAgICAgaWYg
KHN0YXRpY19jYXN0PEdMdWludD4oc2FtcGxlcykgPiBmb3JtYXRDYXBzLmdldE1heFNhbXBsZXMo
KSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
T1VUX09GX01FTU9SWSkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgcmV0dXJuIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRlcnNC
YXNlKGNvbnRleHQsIHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWln
aHQpOwotfQotCi1ib29sIFZhbGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXJQYXJhbWV0ZXJz
KGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHJl
bmRlcmJ1ZmZlcnRhcmdldCwgR0x1aW50IHJlbmRlcmJ1ZmZlcikKK2Jvb2wgVmFsaWRhdGVGcmFt
ZWJ1ZmZlclJlbmRlcmJ1ZmZlclBhcmFtZXRlcnMoZ2w6OkNvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBh
dHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcmVuZGVyYnVmZmVyKQogewogICAgIGlmICghVmFs
aWRGcmFtZWJ1ZmZlclRhcmdldCh0YXJnZXQpKQogICAgIHsKQEAgLTE3NjQsMTMgKzI0NDIsMTMg
QEAgYm9vbCBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlclBhcmFtZXRlcnMoVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsCiB7CiAgICAgc3dpdGNoIChmaWx0ZXIpCiAgICAgewotICAgICAgY2FzZSBH
TF9ORUFSRVNUOgotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfTElORUFSOgotICAgICAg
ICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
Y2FzZSBHTF9ORUFSRVNUOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfTElO
RUFSOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoKG1hc2sgJiB+KEdMX0NPTE9SX0JVRkZF
Ul9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUKSkgIT0g
MCkKQEAgLTE4MTAsMTkgKzI0ODgsMTkgQEAgYm9vbCBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlclBh
cmFtZXRlcnMoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBpZiAocmVhZEZyYW1lYnVmZmVyLT5jaGVja1N0YXR1cyhjb250ZXh0
LT5nZXRDb250ZXh0U3RhdGUoKSkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpCisgICAgaWYg
KHJlYWRGcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXMoY29udGV4dCkgIT0gR0xfRlJBTUVCVUZGRVJf
Q09NUExFVEUpCiAgICAgewogICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgaWYgKGRyYXdGcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXMoY29udGV4dC0+Z2V0
Q29udGV4dFN0YXRlKCkpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAgIGlmIChkcmF3
RnJhbWVidWZmZXItPmNoZWNrU3RhdHVzKGNvbnRleHQpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBM
RVRFKQogICAgIHsKICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGlmIChkcmF3RnJhbWVidWZmZXItPmdldFNhbXBsZXMoY29udGV4dC0+Z2V0Q29udGV4
dFN0YXRlKCkpICE9IDApCisgICAgaWYgKGRyYXdGcmFtZWJ1ZmZlci0+Z2V0U2FtcGxlcyhjb250
ZXh0KSAhPSAwKQogICAgIHsKICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTgzMywxMCAr
MjUxMSw5IEBAIGJvb2wgVmFsaWRhdGVCbGl0RnJhbWVidWZmZXJQYXJhbWV0ZXJzKFZhbGlkYXRp
b25Db250ZXh0ICpjb250ZXh0LAogICAgIGlmIChtYXNrICYgR0xfQ09MT1JfQlVGRkVSX0JJVCkK
ICAgICB7CiAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnJlYWRDb2xv
ckJ1ZmZlciA9IHJlYWRGcmFtZWJ1ZmZlci0+Z2V0UmVhZENvbG9yYnVmZmVyKCk7Ci0gICAgICAg
IGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0dGFjaG1lbnQgKmRyYXdDb2xvckJ1ZmZlciA9IGRyYXdG
cmFtZWJ1ZmZlci0+Z2V0Rmlyc3RDb2xvcmJ1ZmZlcigpOwogICAgICAgICBjb25zdCBFeHRlbnNp
b25zICZleHRlbnNpb25zICAgICAgICAgICAgICAgICAgICAgPSBjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCk7CiAKLSAgICAgICAgaWYgKHJlYWRDb2xvckJ1ZmZlciAmJiBkcmF3Q29sb3JCdWZmZXIp
CisgICAgICAgIGlmIChyZWFkQ29sb3JCdWZmZXIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNv
bnN0IEZvcm1hdCAmcmVhZEZvcm1hdCA9IHJlYWRDb2xvckJ1ZmZlci0+Z2V0Rm9ybWF0KCk7CiAK
QEAgLTE4NTEsMTMgKzI1MjgsMTUgQEAgYm9vbCBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlclBhcmFt
ZXRlcnMoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAKICAgICAgICAgICAgICAgICAgICAg
Ly8gVGhlIEdMIEVTIDMuMC4yIHNwZWMgKHBnIDE5Mykgc3RhdGVzIHRoYXQ6CiAgICAgICAgICAg
ICAgICAgICAgIC8vIDEpIElmIHRoZSByZWFkIGJ1ZmZlciBpcyBmaXhlZCBwb2ludCBmb3JtYXQs
IHRoZSBkcmF3IGJ1ZmZlciBtdXN0IGJlIGFzIHdlbGwKLSAgICAgICAgICAgICAgICAgICAgLy8g
MikgSWYgdGhlIHJlYWQgYnVmZmVyIGlzIGFuIHVuc2lnbmVkIGludGVnZXIgZm9ybWF0LCB0aGUg
ZHJhdyBidWZmZXIgbXVzdCBiZSBhcyB3ZWxsCi0gICAgICAgICAgICAgICAgICAgIC8vIDMpIElm
IHRoZSByZWFkIGJ1ZmZlciBpcyBhIHNpZ25lZCBpbnRlZ2VyIGZvcm1hdCwgdGhlIGRyYXcgYnVm
ZmVyIG11c3QgYmUgYXMgd2VsbAorICAgICAgICAgICAgICAgICAgICAvLyAyKSBJZiB0aGUgcmVh
ZCBidWZmZXIgaXMgYW4gdW5zaWduZWQgaW50ZWdlciBmb3JtYXQsIHRoZSBkcmF3IGJ1ZmZlciBt
dXN0IGJlCisgICAgICAgICAgICAgICAgICAgIC8vIGFzIHdlbGwKKyAgICAgICAgICAgICAgICAg
ICAgLy8gMykgSWYgdGhlIHJlYWQgYnVmZmVyIGlzIGEgc2lnbmVkIGludGVnZXIgZm9ybWF0LCB0
aGUgZHJhdyBidWZmZXIgbXVzdCBiZSBhcworICAgICAgICAgICAgICAgICAgICAvLyB3ZWxsCiAg
ICAgICAgICAgICAgICAgICAgIC8vIENoYW5nZXMgd2l0aCBFWFRfY29sb3JfYnVmZmVyX2Zsb2F0
OgogICAgICAgICAgICAgICAgICAgICAvLyBDYXNlIDEpIGlzIGNoYW5nZWQgdG8gZml4ZWQgcG9p
bnQgT1IgZmxvYXRpbmcgcG9pbnQKICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHJlYWRDb21w
b25lbnRUeXBlID0gcmVhZEZvcm1hdC5pbmZvLT5jb21wb25lbnRUeXBlOwogICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZHJhd0NvbXBvbmVudFR5cGUgPSBkcmF3Rm9ybWF0LmluZm8tPmNvbXBv
bmVudFR5cGU7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgcmVhZEZpeGVkUG9pbnQgPSAocmVh
ZENvbXBvbmVudFR5cGUgPT0gR0xfVU5TSUdORURfTk9STUFMSVpFRCB8fAorICAgICAgICAgICAg
ICAgICAgICBib29sIHJlYWRGaXhlZFBvaW50ICAgICAgPSAocmVhZENvbXBvbmVudFR5cGUgPT0g
R0xfVU5TSUdORURfTk9STUFMSVpFRCB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlYWRDb21wb25lbnRUeXBlID09IEdMX1NJR05FRF9OT1JNQUxJWkVEKTsK
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBkcmF3Rml4ZWRQb2ludCA9IChkcmF3Q29tcG9uZW50
VHlwZSA9PSBHTF9VTlNJR05FRF9OT1JNQUxJWkVEIHx8CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZHJhd0NvbXBvbmVudFR5cGUgPT0gR0xfU0lHTkVEX05PUk1B
TElaRUQpOwpAQCAtMTkxNCwxNiArMjU5MywyOSBAQCBib29sIFZhbGlkYXRlQmxpdEZyYW1lYnVm
ZmVyUGFyYW1ldGVycyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgLy8gV2Vi
R0wgMi4wIEJsaXRGcmFtZWJ1ZmZlciB3aGVuIGJsaXR0aW5nIGZyb20gYSBtaXNzaW5nIGF0dGFj
aG1lbnQKKyAgICAgICAgLy8gSW4gT3BlbkdMIEVTIGl0IGlzIHVuZGVmaW5lZCB3aGF0IGhhcHBl
bnMgd2hlbiBhbiBvcGVyYXRpb24gdHJpZXMgdG8gYmxpdCBmcm9tIGEgbWlzc2luZworICAgICAg
ICAvLyBhdHRhY2htZW50IGFuZCBXZWJHTCBkZWZpbmVzIGl0IHRvIGJlIGFuIGVycm9yLiBXZSBk
byB0aGUgY2hlY2sgdW5jb25kaXRpb25hbGx5IGFzIHRoZQorICAgICAgICAvLyBzaXR1YXRpb24g
aXMgYW4gYXBwbGljYXRpb24gZXJyb3IgdGhhdCB3b3VsZCBsZWFkIHRvIGEgY3Jhc2ggaW4gQU5H
TEUuCisgICAgICAgIGVsc2UgaWYgKGRyYXdGcmFtZWJ1ZmZlci0+aGFzRW5hYmxlZERyYXdCdWZm
ZXIoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
CisgICAgICAgICAgICAgICAgR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAg
IkF0dGVtcHQgdG8gcmVhZCBmcm9tIGEgbWlzc2luZyBjb2xvciBhdHRhY2htZW50IG9mIGEgY29t
cGxldGUgZnJhbWVidWZmZXIuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CiAgICAgfQogCi0gICAgR0xlbnVtIG1hc2tzW10gPSB7R0xfREVQVEhfQlVGRkVSX0JJVCwg
R0xfU1RFTkNJTF9CVUZGRVJfQklUfTsKKyAgICBHTGVudW0gbWFza3NbXSAgICAgICA9IHtHTF9E
RVBUSF9CVUZGRVJfQklULCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVR9OwogICAgIEdMZW51bSBhdHRh
Y2htZW50c1tdID0ge0dMX0RFUFRIX0FUVEFDSE1FTlQsIEdMX1NURU5DSUxfQVRUQUNITUVOVH07
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyOyBpKyspCiAgICAgewogICAgICAgICBpZiAo
bWFzayAmIG1hc2tzW2ldKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBnbDo6RnJhbWVi
dWZmZXJBdHRhY2htZW50ICpyZWFkQnVmZmVyID0gcmVhZEZyYW1lYnVmZmVyLT5nZXRBdHRhY2ht
ZW50KGF0dGFjaG1lbnRzW2ldKTsKLSAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZlckF0
dGFjaG1lbnQgKmRyYXdCdWZmZXIgPSBkcmF3RnJhbWVidWZmZXItPmdldEF0dGFjaG1lbnQoYXR0
YWNobWVudHNbaV0pOworICAgICAgICAgICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyQXR0YWNobWVu
dCAqcmVhZEJ1ZmZlciA9CisgICAgICAgICAgICAgICAgcmVhZEZyYW1lYnVmZmVyLT5nZXRBdHRh
Y2htZW50KGF0dGFjaG1lbnRzW2ldKTsKKyAgICAgICAgICAgIGNvbnN0IGdsOjpGcmFtZWJ1ZmZl
ckF0dGFjaG1lbnQgKmRyYXdCdWZmZXIgPQorICAgICAgICAgICAgICAgIGRyYXdGcmFtZWJ1ZmZl
ci0+Z2V0QXR0YWNobWVudChhdHRhY2htZW50c1tpXSk7CiAKICAgICAgICAgICAgIGlmIChyZWFk
QnVmZmVyICYmIGRyYXdCdWZmZXIpCiAgICAgICAgICAgICB7CkBAIC0xOTM5LDYgKzI2MzEsMTQg
QEAgYm9vbCBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlclBhcmFtZXRlcnMoVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBXZWJHTCAyLjAgQmxpdEZy
YW1lYnVmZmVyIHdoZW4gYmxpdHRpbmcgZnJvbSBhIG1pc3NpbmcgYXR0YWNobWVudAorICAgICAg
ICAgICAgZWxzZSBpZiAoZHJhd0J1ZmZlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byByZWFkIGZy
b20gYSBtaXNzaW5nIGRlcHRoL3N0ZW5jaWwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJhdHRhY2htZW50IG9mIGEgY29tcGxldGUgZnJhbWVidWZmZXIuIikp
OworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KIApAQCAtMTk1NCw3ICsyNjU0LDggQEAgYm9vbCBWYWxpZGF0ZVJlYWRQaXhlbHMo
VmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKQogewotICAg
IHJldHVybiBWYWxpZGF0ZVJlYWRQaXhlbHNCYXNlKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWln
aHQsIGZvcm1hdCwgdHlwZSwgLTEsIG51bGxwdHIsIHBpeGVscyk7CisgICAgcmV0dXJuIFZhbGlk
YXRlUmVhZFBpeGVsc0Jhc2UoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCAtMSwgbnVsbHB0ciwgbnVsbHB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBudWxscHRyLCBwaXhlbHMpOwogfQogCiBib29sIFZhbGlkYXRlUmVhZFBpeGVsc1JvYnVz
dEFOR0xFKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LApAQCAtMTk2Niw2ICsyNjY3LDggQEAg
Ym9vbCBWYWxpZGF0ZVJlYWRQaXhlbHNSb2J1c3RBTkdMRShWYWxpZGF0aW9uQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpjb2x1bW5zLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpyb3dzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHZvaWQgKnBpeGVscykKIHsKICAgICBpZiAoIVZhbGlkYXRlUm9i
dXN0RW50cnlQb2ludChjb250ZXh0LCBidWZTaXplKSkKQEAgLTE5NzQsNyArMjY3Nyw3IEBAIGJv
b2wgVmFsaWRhdGVSZWFkUGl4ZWxzUm9idXN0QU5HTEUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRl
eHQsCiAgICAgfQogCiAgICAgaWYgKCFWYWxpZGF0ZVJlYWRQaXhlbHNCYXNlKGNvbnRleHQsIHgs
IHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgYnVmU2l6ZSwgbGVuZ3RoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHMpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb2x1bW5zLCByb3dzLCBwaXhlbHMpKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KQEAgLTIwMDQsNyArMjcwNyw3IEBAIGJvb2wgVmFsaWRhdGVSZWFkblBp
eGVsc0VYVChDb250ZXh0ICpjb250ZXh0LAogICAgIH0KIAogICAgIHJldHVybiBWYWxpZGF0ZVJl
YWRQaXhlbHNCYXNlKGNvbnRleHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwg
YnVmU2l6ZSwgbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhl
bHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIsIG51bGxwdHIs
IHBpeGVscyk7CiB9CiAKIGJvb2wgVmFsaWRhdGVSZWFkblBpeGVsc1JvYnVzdEFOR0xFKFZhbGlk
YXRpb25Db250ZXh0ICpjb250ZXh0LApAQCAtMjAxNiw2ICsyNzE5LDggQEAgYm9vbCBWYWxpZGF0
ZVJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmNvbHVtbnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpICpyb3dzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x2b2lkICpkYXRhKQogewogICAgIGlmICghVmFsaWRhdGVSb2J1c3RFbnRy
eVBvaW50KGNvbnRleHQsIGJ1ZlNpemUpKQpAQCAtMjAyMyw3ICsyNzI4LDggQEAgYm9vbCBWYWxp
ZGF0ZVJlYWRuUGl4ZWxzUm9idXN0QU5HTEUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIVZhbGlkYXRlUmVhZFBpeGVs
c0Jhc2UoY29udGV4dCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXpl
LCBsZW5ndGgsIGRhdGEpKQorICAgIGlmICghVmFsaWRhdGVSZWFkUGl4ZWxzQmFzZShjb250ZXh0
LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIGxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucywgcm93cywgZGF0YSkpCiAgICAg
ewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpAQCAtMjQ3Niw4MyArMzE4Miw5NiBAQCBi
b29sIFZhbGlkYXRlR2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFKENvbnRleHQgKmNvbnRl
eHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIFZhbGlkYXRlVW5pZm9ybUNv
bW1vbkJhc2UoZ2w6OkNvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSB0YXJnZXRVbmlmb3JtVHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IExpbmtlZFVuaWZvcm0gKip1bmlmb3JtT3V0KQorYm9vbCBW
YWxpZGF0ZVByb2dyYW1Vbmlmb3JtKGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB2YWx1ZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCkKIHsK
LSAgICBpZiAoY291bnQgPCAwKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
Ci0gICAgZ2w6OlByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJv
Z3JhbSgpOwotICAgIGlmICghcHJvZ3JhbSkKKyAgICAvLyBDaGVjayBmb3IgRVMzMSBwcm9ncmFt
IHVuaWZvcm0gZW50cnkgcG9pbnRzCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24o
KSA8IFZlcnNpb24oMywgMSkpCiAgICAgewogICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgaWYgKHByb2dyYW0tPmlzSWdub3JlZFVuaWZvcm1Mb2NhdGlvbihsb2NhdGlvbikp
Ci0gICAgewotICAgICAgICAvLyBTaWxlbnRseSBpZ25vcmUgdGhlIHVuaWZvcm0gY29tbWFuZAot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGNvbnN0IExpbmtlZFVuaWZvcm0gKnVu
aWZvcm0gPSBudWxscHRyOworICAgIGdsOjpQcm9ncmFtICpwcm9ncmFtT2JqZWN0ICAgPSBHZXRW
YWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CisgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9y
bUNvbW1vbkJhc2UoY29udGV4dCwgcHJvZ3JhbU9iamVjdCwgbG9jYXRpb24sIGNvdW50LCAmdW5p
Zm9ybSkgJiYKKyAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtVmFsdWUoY29udGV4dCwgdmFsdWVU
eXBlLCB1bmlmb3JtLT50eXBlKTsKK30KIAotICAgIGlmICghcHJvZ3JhbS0+aXNWYWxpZFVuaWZv
cm1Mb2NhdGlvbihsb2NhdGlvbikpCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xaXYoZ2w6
OkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGludCAqdmFsdWUpCit7CisgICAgLy8gQ2hl
Y2sgZm9yIEVTMzEgcHJvZ3JhbSB1bmlmb3JtIGVudHJ5IHBvaW50cworICAgIGlmIChjb250ZXh0
LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBWZXJzaW9uKDMsIDEpKQogICAgIHsKICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGNvbnN0IExpbmtlZFVuaWZvcm0gJnVuaWZvcm0g
PSBwcm9ncmFtLT5nZXRVbmlmb3JtQnlMb2NhdGlvbihsb2NhdGlvbik7CisgICAgY29uc3QgTGlu
a2VkVW5pZm9ybSAqdW5pZm9ybSA9IG51bGxwdHI7CisgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1P
YmplY3QgICA9IEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtKTsKKyAgICByZXR1cm4g
VmFsaWRhdGVVbmlmb3JtQ29tbW9uQmFzZShjb250ZXh0LCBwcm9ncmFtT2JqZWN0LCBsb2NhdGlv
biwgY291bnQsICZ1bmlmb3JtKSAmJgorICAgICAgICAgICBWYWxpZGF0ZVVuaWZvcm0xaXZWYWx1
ZShjb250ZXh0LCB1bmlmb3JtLT50eXBlLCBjb3VudCwgdmFsdWUpOworfQogCi0gICAgLy8gYXR0
ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBhIG5vbi1hcnJheSB1bmlmb3JtIGlzIGFuIElO
VkFMSURfT1BFUkFUSU9OCi0gICAgaWYgKCF1bmlmb3JtLmlzQXJyYXkoKSAmJiBjb3VudCA+IDEp
Citib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm1NYXRyaXgoZ2w6OkNvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHZhbHVlVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFuc3Bvc2UpCit7CisgICAgLy8gQ2hlY2sgZm9yIEVT
MzEgcHJvZ3JhbSB1bmlmb3JtIGVudHJ5IHBvaW50cworICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRWZXJzaW9uKCkgPCBWZXJzaW9uKDMsIDEpKQogICAgIHsKICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIAotICAgICp1bmlmb3JtT3V0ID0gJnVuaWZvcm07Ci0gICAgcmV0dXJuIHRy
dWU7CisgICAgY29uc3QgTGlua2VkVW5pZm9ybSAqdW5pZm9ybSA9IG51bGxwdHI7CisgICAgZ2w6
OlByb2dyYW0gKnByb2dyYW1PYmplY3QgICA9IEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9n
cmFtKTsKKyAgICByZXR1cm4gVmFsaWRhdGVVbmlmb3JtQ29tbW9uQmFzZShjb250ZXh0LCBwcm9n
cmFtT2JqZWN0LCBsb2NhdGlvbiwgY291bnQsICZ1bmlmb3JtKSAmJgorICAgICAgICAgICBWYWxp
ZGF0ZVVuaWZvcm1NYXRyaXhWYWx1ZShjb250ZXh0LCB2YWx1ZVR5cGUsIHVuaWZvcm0tPnR5cGUp
OwogfQogCi1ib29sIFZhbGlkYXRlVW5pZm9ybShnbDo6Q29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHVuaWZvcm1UeXBlLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCkKK2Jvb2wgVmFsaWRh
dGVVbmlmb3JtKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gdmFsdWVUeXBlLCBH
TGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCkKIHsKICAgICAvLyBDaGVjayBmb3IgRVMzIHVu
aWZvcm0gZW50cnkgcG9pbnRzCi0gICAgaWYgKFZhcmlhYmxlQ29tcG9uZW50VHlwZSh1bmlmb3Jt
VHlwZSkgPT0gR0xfVU5TSUdORURfSU5UICYmCi0gICAgICAgIGNvbnRleHQtPmdldENsaWVudE1h
am9yVmVyc2lvbigpIDwgMykKKyAgICBpZiAoVmFyaWFibGVDb21wb25lbnRUeXBlKHZhbHVlVHlw
ZSkgPT0gR0xfVU5TSUdORURfSU5UICYmIGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigp
IDwgMykKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBjb25z
dCBMaW5rZWRVbmlmb3JtICp1bmlmb3JtID0gbnVsbHB0cjsKLSAgICBpZiAoIVZhbGlkYXRlVW5p
Zm9ybUNvbW1vbkJhc2UoY29udGV4dCwgdW5pZm9ybVR5cGUsIGxvY2F0aW9uLCBjb3VudCwgJnVu
aWZvcm0pKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIEdMZW51
bSB0YXJnZXRCb29sVHlwZSA9IFZhcmlhYmxlQm9vbFZlY3RvclR5cGUodW5pZm9ybVR5cGUpOwot
ICAgIGJvb2wgc2FtcGxlclVuaWZvcm1DaGVjayA9IChJc1NhbXBsZXJUeXBlKHVuaWZvcm0tPnR5
cGUpICYmIHVuaWZvcm1UeXBlID09IEdMX0lOVCk7Ci0gICAgaWYgKCFzYW1wbGVyVW5pZm9ybUNo
ZWNrICYmIHVuaWZvcm1UeXBlICE9IHVuaWZvcm0tPnR5cGUgJiYgdGFyZ2V0Qm9vbFR5cGUgIT0g
dW5pZm9ybS0+dHlwZSkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Cisg
ICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3QgICA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5n
ZXRQcm9ncmFtKCk7CisgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybUNvbW1vbkJhc2UoY29udGV4
dCwgcHJvZ3JhbU9iamVjdCwgbG9jYXRpb24sIGNvdW50LCAmdW5pZm9ybSkgJiYKKyAgICAgICAg
ICAgVmFsaWRhdGVVbmlmb3JtVmFsdWUoY29udGV4dCwgdmFsdWVUeXBlLCB1bmlmb3JtLT50eXBl
KTsKK30KIAotICAgIHJldHVybiB0cnVlOworYm9vbCBWYWxpZGF0ZVVuaWZvcm0xaXYoZ2w6OkNv
bnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGlu
dCAqdmFsdWUpCit7CisgICAgY29uc3QgTGlua2VkVW5pZm9ybSAqdW5pZm9ybSA9IG51bGxwdHI7
CisgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3QgICA9IGNvbnRleHQtPmdldEdMU3RhdGUo
KS5nZXRQcm9ncmFtKCk7CisgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybUNvbW1vbkJhc2UoY29u
dGV4dCwgcHJvZ3JhbU9iamVjdCwgbG9jYXRpb24sIGNvdW50LCAmdW5pZm9ybSkgJiYKKyAgICAg
ICAgICAgVmFsaWRhdGVVbmlmb3JtMWl2VmFsdWUoY29udGV4dCwgdW5pZm9ybS0+dHlwZSwgY291
bnQsIHZhbHVlKTsKIH0KIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgoZ2w6OkNvbnRleHQg
KmNvbnRleHQsIEdMZW51bSBtYXRyaXhUeXBlLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHZhbHVlVHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biB0cmFuc3Bvc2UpCiB7CiAgICAgLy8gQ2hlY2sgZm9yIEVTMyB1bmlmb3JtIGVudHJ5IHBvaW50
cwotICAgIGludCByb3dzID0gVmFyaWFibGVSb3dDb3VudChtYXRyaXhUeXBlKTsKLSAgICBpbnQg
Y29scyA9IFZhcmlhYmxlQ29sdW1uQ291bnQobWF0cml4VHlwZSk7CisgICAgaW50IHJvd3MgPSBW
YXJpYWJsZVJvd0NvdW50KHZhbHVlVHlwZSk7CisgICAgaW50IGNvbHMgPSBWYXJpYWJsZUNvbHVt
bkNvdW50KHZhbHVlVHlwZSk7CiAgICAgaWYgKHJvd3MgIT0gY29scyAmJiBjb250ZXh0LT5nZXRD
bGllbnRNYWpvclZlcnNpb24oKSA8IDMpCiAgICAgewogICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwpAQCAtMjU2NiwxOCArMzI4NSw5IEBA
IGJvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4KGdsOjpDb250ZXh0ICpjb250ZXh0LCBHTGVudW0g
bWF0cml4VHlwZSwgR0xpbnQgbG9jYXRpCiAgICAgfQogCiAgICAgY29uc3QgTGlua2VkVW5pZm9y
bSAqdW5pZm9ybSA9IG51bGxwdHI7Ci0gICAgaWYgKCFWYWxpZGF0ZVVuaWZvcm1Db21tb25CYXNl
KGNvbnRleHQsIG1hdHJpeFR5cGUsIGxvY2F0aW9uLCBjb3VudCwgJnVuaWZvcm0pKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICh1bmlmb3JtLT50eXBlICE9
IG1hdHJpeFR5cGUpCi0gICAgewotICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHRydWU7CisgICAgZ2w6OlByb2dyYW0gKnByb2dyYW1PYmplY3QgICA9IGNvbnRl
eHQtPmdldEdMU3RhdGUoKS5nZXRQcm9ncmFtKCk7CisgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9y
bUNvbW1vbkJhc2UoY29udGV4dCwgcHJvZ3JhbU9iamVjdCwgbG9jYXRpb24sIGNvdW50LCAmdW5p
Zm9ybSkgJiYKKyAgICAgICAgICAgVmFsaWRhdGVVbmlmb3JtTWF0cml4VmFsdWUoY29udGV4dCwg
dmFsdWVUeXBlLCB1bmlmb3JtLT50eXBlKTsKIH0KIAogYm9vbCBWYWxpZGF0ZVN0YXRlUXVlcnko
VmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCkBAIC0yNjA2LDI3ICszMzE2LDI3IEBAIGJvb2wg
VmFsaWRhdGVTdGF0ZVF1ZXJ5KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogCiAgICAgc3dp
dGNoIChwbmFtZSkKICAgICB7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElOR18yRDoKLSAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQOgotICAgICAgY2FzZSBHTF9URVhU
VVJFX0JJTkRJTkdfM0Q6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElOR18yRF9BUlJBWToK
LSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElOR19FWFRFUk5BTF9P
RVM6Ci0gICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZWdsU3RyZWFtQ29u
c3VtZXJFeHRlcm5hbCAmJgotICAgICAgICAgICAgICAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmVnbEltYWdlRXh0ZXJuYWwpCi0gICAgICAgICAgewotICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJOZWl0aGVyIE5WX0VHTF9zdHJlYW1fY29uc3VtZXJfZXh0ZXJu
YWwgbm9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdMX09F
U19FR0xfaW1hZ2VfZXh0ZXJuYWwgZXh0ZW5zaW9ucyBlbmFibGVkIikpOwotICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICAgIGJyZWFrOwotCi0gICAgICBj
YXNlIEdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRToKLSAgICAgIGNhc2UgR0xfSU1Q
TEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQ6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9C
SU5ESU5HXzJEOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUDoKKyAg
ICAgICAgY2FzZSBHTF9URVhUVVJFX0JJTkRJTkdfM0Q6CisgICAgICAgIGNhc2UgR0xfVEVYVFVS
RV9CSU5ESU5HXzJEX0FSUkFZOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV9CSU5ESU5HX0VYVEVSTkFMX09FUzoKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmVnbFN0cmVhbUNvbnN1bWVyRXh0ZXJuYWwgJiYKKyAgICAgICAgICAg
ICAgICAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLmVnbEltYWdlRXh0ZXJuYWwpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJO
ZWl0aGVyIE5WX0VHTF9zdHJlYW1fY29uc3VtZXJfZXh0ZXJuYWwgbm9yICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5h
bCBleHRlbnNpb25zIGVuYWJsZWQiKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9JTVBM
RU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEU6CisgICAgICAgIGNhc2UgR0xfSU1QTEVNRU5UQVRJ
T05fQ09MT1JfUkVBRF9GT1JNQVQ6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChjb250ZXh0
LT5nZXRHTFN0YXRlKCkuZ2V0UmVhZEZyYW1lYnVmZmVyKCktPmNoZWNrU3RhdHVzKAotICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKSkgIT0gR0xfRlJBTUVCVUZG
RVJfQ09NUExFVEUpCisgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFJl
YWRGcmFtZWJ1ZmZlcigpLT5jaGVja1N0YXR1cyhjb250ZXh0KSAhPQorICAgICAgICAgICAgICAg
IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjY1MCw4ICszMzYwLDggQEAgYm9vbCBWYWxp
ZGF0ZVN0YXRlUXVlcnkoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIH0KICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgLy8gcG5hbWUgaXMgdmFs
aWQsIGJ1dCB0aGVyZSBhcmUgbm8gcGFyYW1ldGVycyB0byByZXR1cm4KQEAgLTI3MDgsNyArMzQx
OCw4IEBAIGJvb2wgVmFsaWRhdGVDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShWYWxpZGF0aW9u
Q29udGV4dCAqY29udGV4dCwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlm
IChzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAtIHhvZmZzZXQgPCB3aWR0aCB8
fCBzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAtIHlvZmZzZXQgPCBoZWlnaHQp
CisgICAgaWYgKHN0ZDo6bnVtZXJpY19saW1pdHM8R0xzaXplaT46Om1heCgpIC0geG9mZnNldCA8
IHdpZHRoIHx8CisgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8R0xzaXplaT46Om1heCgpIC0g
eW9mZnNldCA8IGhlaWdodCkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjcyOCwx
MyArMzQzOSwxMyBAQCBib29sIFZhbGlkYXRlQ29weVRleEltYWdlUGFyYW1ldGVyc0Jhc2UoVmFs
aWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAKICAgICBjb25zdCBhdXRvICZzdGF0ZSAgICA9IGNv
bnRleHQtPmdldEdMU3RhdGUoKTsKICAgICBhdXRvIHJlYWRGcmFtZWJ1ZmZlciA9IHN0YXRlLmdl
dFJlYWRGcmFtZWJ1ZmZlcigpOwotICAgIGlmIChyZWFkRnJhbWVidWZmZXItPmNoZWNrU3RhdHVz
KGNvbnRleHQtPmdldENvbnRleHRTdGF0ZSgpKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkK
KyAgICBpZiAocmVhZEZyYW1lYnVmZmVyLT5jaGVja1N0YXR1cyhjb250ZXh0KSAhPSBHTF9GUkFN
RUJVRkZFUl9DT01QTEVURSkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKLSAgICBpZiAocmVhZEZyYW1lYnVmZmVyLT5pZCgpICE9IDAgJiYgcmVh
ZEZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKGNvbnRleHQtPmdldENvbnRleHRTdGF0ZSgpKSAhPSAw
KQorICAgIGlmIChyZWFkRnJhbWVidWZmZXItPmlkKCkgIT0gMCAmJiByZWFkRnJhbWVidWZmZXIt
PmdldFNhbXBsZXMoY29udGV4dCkgIT0gMCkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTI3NDYsMzUgKzM0NTcsNDUgQEAgYm9vbCBWYWxpZGF0ZUNvcHlUZXhJbWFnZVBhcmFt
ZXRlcnNCYXNlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCisgICAgLy8gV2ViR0wgMS4wIFtTZWN0aW9uIDYuMjZdIFJlYWRpbmcgRnJv
bSBhIE1pc3NpbmcgQXR0YWNobWVudAorICAgIC8vIEluIE9wZW5HTCBFUyBpdCBpcyB1bmRlZmlu
ZWQgd2hhdCBoYXBwZW5zIHdoZW4gYW4gb3BlcmF0aW9uIHRyaWVzIHRvIHJlYWQgZnJvbSBhIG1p
c3NpbmcKKyAgICAvLyBhdHRhY2htZW50IGFuZCBXZWJHTCBkZWZpbmVzIGl0IHRvIGJlIGFuIGVy
cm9yLiBXZSBkbyB0aGUgY2hlY2sgdW5jb25kaXRpb25hbGx5IGFzIHRoZQorICAgIC8vIHNpdHVh
dGlvbiBpcyBhbiBhcHBsaWNhdGlvbiBlcnJvciB0aGF0IHdvdWxkIGxlYWQgdG8gYSBjcmFzaCBp
biBBTkdMRS4KKyAgICBpZiAocmVhZEZyYW1lYnVmZmVyLT5nZXRSZWFkQ29sb3JidWZmZXIoKSA9
PSBudWxscHRyKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJNaXNzaW5nIHJlYWQgYXR0YWNobWVudCIpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIGNvbnN0IGdsOjpDYXBzICZjYXBzID0gY29udGV4
dC0+Z2V0Q2FwcygpOwogCiAgICAgR0x1aW50IG1heERpbWVuc2lvbiA9IDA7CiAgICAgc3dpdGNo
ICh0YXJnZXQpCiAgICAgewotICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOgotICAgICAgICBtYXhE
aW1lbnNpb24gPSBjYXBzLm1heDJEVGV4dHVyZVNpemU7Ci0gICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfMkQ6CisgICAgICAgICAgICBtYXhEaW1lbnNpb24gPSBjYXBzLm1h
eDJEVGV4dHVyZVNpemU7CisgICAgICAgICAgICBicmVhazsKIAotICAgICAgY2FzZSBHTF9URVhU
VVJFX0NVQkVfTUFQX1BPU0lUSVZFX1g6Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWDoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZOgot
ICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1k6Ci0gICAgICBjYXNlIEdM
X1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWjoKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJF
X01BUF9ORUdBVElWRV9aOgotICAgICAgICBtYXhEaW1lbnNpb24gPSBjYXBzLm1heEN1YmVNYXBU
ZXh0dXJlU2l6ZTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJF
X01BUF9QT1NJVElWRV9YOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJ
VkVfWDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6CisgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZOgorICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWjoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NV
QkVfTUFQX05FR0FUSVZFX1o6CisgICAgICAgICAgICBtYXhEaW1lbnNpb24gPSBjYXBzLm1heEN1
YmVNYXBUZXh0dXJlU2l6ZTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEdMX1RF
WFRVUkVfMkRfQVJSQVk6Ci0gICAgICAgIG1heERpbWVuc2lvbiA9IGNhcHMubWF4MkRUZXh0dXJl
U2l6ZTsKLSAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRF9BUlJBWToK
KyAgICAgICAgICAgIG1heERpbWVuc2lvbiA9IGNhcHMubWF4MkRUZXh0dXJlU2l6ZTsKKyAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEdMX1RFWFRVUkVfM0Q6Ci0gICAgICAgIG1heERp
bWVuc2lvbiA9IGNhcHMubWF4M0RUZXh0dXJlU2l6ZTsKLSAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV8zRDoKKyAgICAgICAgICAgIG1heERpbWVuc2lvbiA9IGNhcHMubWF4
M0RUZXh0dXJlU2l6ZTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICBkZWZhdWx0OgotICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9CkBAIC0yNzk5LDcg
KzM1MjAsOCBAQCBib29sIFZhbGlkYXRlQ29weVRleEltYWdlUGFyYW1ldGVyc0Jhc2UoVmFsaWRh
dGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBpZiAoZm9ybWF0SW5mby5jb21wcmVzc2VkICYmICFWYWxpZENvbXByZXNzZWRJbWFnZVNpemUo
Y29udGV4dCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpKQorICAgIGlmIChmb3JtYXRJ
bmZvLmNvbXByZXNzZWQgJiYKKyAgICAgICAgIVZhbGlkQ29tcHJlc3NlZEltYWdlU2l6ZShjb250
ZXh0LCBpbnRlcm5hbGZvcm1hdCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCkpCiAg
ICAgewogICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yODIzLDE0ICszNTQ1LDE1IEBAIGJv
b2wgVmFsaWRhdGVDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAg
IGlmICghZm9ybWF0SW5mby50ZXh0dXJlU3VwcG9ydChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZl
cnNpb24oKSwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKSkKKyAgICAgICAgaWYgKCFmb3JtYXRJ
bmZvLnRleHR1cmVTdXBwb3J0KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSwgY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpKSkKICAgICAgICAgewogICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KIAogICAgICAgICBpbnQgbWF4TGV2ZWxEaW1lbnNpb24gPSAobWF4RGltZW5z
aW9uID4+IGxldmVsKTsKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4od2lkdGgpID4gbWF4
TGV2ZWxEaW1lbnNpb24gfHwgc3RhdGljX2Nhc3Q8aW50PihoZWlnaHQpID4gbWF4TGV2ZWxEaW1l
bnNpb24pCisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHdpZHRoKSA+IG1heExldmVsRGlt
ZW5zaW9uIHx8CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KGhlaWdodCkgPiBtYXhMZXZl
bERpbWVuc2lvbikKICAgICAgICAgewogICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
Mjg0MSwyNyArMzU2NCwzNyBAQCBib29sIFZhbGlkYXRlQ29weVRleEltYWdlUGFyYW1ldGVyc0Jh
c2UoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgewogICAgICAgICAqdGV4dHVyZUZv
cm1hdE91dCA9IHRleHR1cmUtPmdldEZvcm1hdCh0YXJnZXQsIGxldmVsKTsKICAgICB9CisKKyAg
ICAvLyBEZXRlY3QgdGV4dHVyZSBjb3B5aW5nIGZlZWRiYWNrIGxvb3BzIGZvciBXZWJHTC4KKyAg
ICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLndlYmdsQ29tcGF0aWJpbGl0eSkKKyAgICB7
CisgICAgICAgIGlmIChyZWFkRnJhbWVidWZmZXItPmZvcm1zQ29weWluZ0ZlZWRiYWNrTG9vcFdp
dGgodGV4dHVyZS0+aWQoKSwgbGV2ZWwsIHpvZmZzZXQpKQorICAgICAgICB7CisgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUZXh0dXJlIGNvcHlpbmcgZmVlZGJh
Y2sgbG9vcCBmb3JtZWQgYmV0d2VlbiBGcmFtZWJ1ZmZlciAiCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiYW5kIHNwZWNpZmllZCBUZXh0dXJlIGxldmVsLiIpKTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHJldHVybiB0
cnVlOwogfQogCi1zdGF0aWMgYm9vbCBWYWxpZGF0ZURyYXdCYXNlKFZhbGlkYXRpb25Db250ZXh0
ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSBwcmltY291bnQpCitib29sIFZhbGlkYXRlRHJhd0Jhc2Uo
VmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50KQog
ewogICAgIHN3aXRjaCAobW9kZSkKICAgICB7Ci0gICAgICBjYXNlIEdMX1BPSU5UUzoKLSAgICAg
IGNhc2UgR0xfTElORVM6Ci0gICAgICBjYXNlIEdMX0xJTkVfTE9PUDoKLSAgICAgIGNhc2UgR0xf
TElORV9TVFJJUDoKLSAgICAgIGNhc2UgR0xfVFJJQU5HTEVTOgotICAgICAgY2FzZSBHTF9UUklB
TkdMRV9TVFJJUDoKLSAgICAgIGNhc2UgR0xfVFJJQU5HTEVfRkFOOgotICAgICAgICBicmVhazsK
LSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2FzZSBHTF9Q
T0lOVFM6CisgICAgICAgIGNhc2UgR0xfTElORVM6CisgICAgICAgIGNhc2UgR0xfTElORV9MT09Q
OgorICAgICAgICBjYXNlIEdMX0xJTkVfU1RSSVA6CisgICAgICAgIGNhc2UgR0xfVFJJQU5HTEVT
OgorICAgICAgICBjYXNlIEdMX1RSSUFOR0xFX1NUUklQOgorICAgICAgICBjYXNlIEdMX1RSSUFO
R0xFX0ZBTjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKGNvdW50IDwgMCkKQEAgLTI4Nzks
MzAgKzM2MTIsMzggQEAgc3RhdGljIGJvb2wgVmFsaWRhdGVEcmF3QmFzZShWYWxpZGF0aW9uQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIC8vIE5v
dGU6IHRoZXNlIHNlcGFyYXRlIHZhbHVlcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBXZWJHTCwgZHVl
IHRvIEQzRCdzIGxpbWl0YXRpb25zLiBTZWUKKyAgICAvLyBTZWN0aW9uIDYuMTAgb2YgdGhlIFdl
YkdMIDEuMCBzcGVjLgogICAgIEZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IHN0YXRlLmdldERy
YXdGcmFtZWJ1ZmZlcigpOwotICAgIGlmIChjb250ZXh0LT5nZXRMaW1pdGF0aW9ucygpLm5vU2Vw
YXJhdGVTdGVuY2lsUmVmc0FuZE1hc2tzKQorICAgIGlmIChjb250ZXh0LT5nZXRMaW1pdGF0aW9u
cygpLm5vU2VwYXJhdGVTdGVuY2lsUmVmc0FuZE1hc2tzIHx8CisgICAgICAgIGNvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS53ZWJnbENvbXBhdGliaWxpdHkpCiAgICAgewotICAgICAgICBjb25zdCBG
cmFtZWJ1ZmZlckF0dGFjaG1lbnQgKnN0ZW5jaWxCdWZmZXIgPSBmcmFtZWJ1ZmZlci0+Z2V0U3Rl
bmNpbGJ1ZmZlcigpOwotICAgICAgICBHTHVpbnQgc3RlbmNpbEJpdHMgICAgICAgICAgICAgICAg
ICAgICAgICAgPSBzdGVuY2lsQnVmZmVyID8gc3RlbmNpbEJ1ZmZlci0+Z2V0U3RlbmNpbFNpemUo
KSA6IDA7Ci0gICAgICAgIEdMdWludCBtaW5pbXVtUmVxdWlyZWRTdGVuY2lsTWFzayAgICAgICAg
ICA9ICgxIDw8IHN0ZW5jaWxCaXRzKSAtIDE7CisgICAgICAgIGNvbnN0IEZyYW1lYnVmZmVyQXR0
YWNobWVudCAqZHNBdHRhY2htZW50ID0KKyAgICAgICAgICAgIGZyYW1lYnVmZmVyLT5nZXRTdGVu
Y2lsT3JEZXB0aFN0ZW5jaWxBdHRhY2htZW50KCk7CisgICAgICAgIEdMdWludCBzdGVuY2lsQml0
cyAgICAgICAgICAgICAgICA9IGRzQXR0YWNobWVudCA/IGRzQXR0YWNobWVudC0+Z2V0U3RlbmNp
bFNpemUoKSA6IDA7CisgICAgICAgIEdMdWludCBtaW5pbXVtUmVxdWlyZWRTdGVuY2lsTWFzayA9
ICgxIDw8IHN0ZW5jaWxCaXRzKSAtIDE7CiAgICAgICAgIGNvbnN0IERlcHRoU3RlbmNpbFN0YXRl
ICZkZXB0aFN0ZW5jaWxTdGF0ZSA9IHN0YXRlLmdldERlcHRoU3RlbmNpbFN0YXRlKCk7Ci0gICAg
ICAgIGlmICgoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbFdyaXRlbWFzayAmIG1pbmltdW1SZXF1
aXJlZFN0ZW5jaWxNYXNrKSAhPQotICAgICAgICAgICAgICAgIChkZXB0aFN0ZW5jaWxTdGF0ZS5z
dGVuY2lsQmFja1dyaXRlbWFzayAmIG1pbmltdW1SZXF1aXJlZFN0ZW5jaWxNYXNrKSB8fAotICAg
ICAgICAgICAgc3RhdGUuZ2V0U3RlbmNpbFJlZigpICE9IHN0YXRlLmdldFN0ZW5jaWxCYWNrUmVm
KCkgfHwKLSAgICAgICAgICAgIChkZXB0aFN0ZW5jaWxTdGF0ZS5zdGVuY2lsTWFzayAmIG1pbmlt
dW1SZXF1aXJlZFN0ZW5jaWxNYXNrKSAhPQotICAgICAgICAgICAgICAgIChkZXB0aFN0ZW5jaWxT
dGF0ZS5zdGVuY2lsQmFja01hc2sgJiBtaW5pbXVtUmVxdWlyZWRTdGVuY2lsTWFzaykpCisKKyAg
ICAgICAgYm9vbCBkaWZmZXJlbnRSZWZzID0gc3RhdGUuZ2V0U3RlbmNpbFJlZigpICE9IHN0YXRl
LmdldFN0ZW5jaWxCYWNrUmVmKCk7CisgICAgICAgIGJvb2wgZGlmZmVyZW50V3JpdGVtYXNrcyA9
CisgICAgICAgICAgICAoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbFdyaXRlbWFzayAmIG1pbmlt
dW1SZXF1aXJlZFN0ZW5jaWxNYXNrKSAhPQorICAgICAgICAgICAgKGRlcHRoU3RlbmNpbFN0YXRl
LnN0ZW5jaWxCYWNrV3JpdGVtYXNrICYgbWluaW11bVJlcXVpcmVkU3RlbmNpbE1hc2spOworICAg
ICAgICBib29sIGRpZmZlcmVudE1hc2tzID0gKGRlcHRoU3RlbmNpbFN0YXRlLnN0ZW5jaWxNYXNr
ICYgbWluaW11bVJlcXVpcmVkU3RlbmNpbE1hc2spICE9CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoZGVwdGhTdGVuY2lsU3RhdGUuc3RlbmNpbEJhY2tNYXNrICYgbWluaW11bVJlcXVp
cmVkU3RlbmNpbE1hc2spOworCisgICAgICAgIGlmIChkaWZmZXJlbnRSZWZzIHx8IGRpZmZlcmVu
dFdyaXRlbWFza3MgfHwgZGlmZmVyZW50TWFza3MpCiAgICAgICAgIHsKLSAgICAgICAgICAgIC8v
IE5vdGU6IHRoZXNlIHNlcGFyYXRlIHZhbHVlcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBXZWJHTCwg
ZHVlIHRvIEQzRCdzIGxpbWl0YXRpb25zLiBTZWUKLSAgICAgICAgICAgIC8vIFNlY3Rpb24gNi4x
MCBvZiB0aGUgV2ViR0wgMS4wIHNwZWMKLSAgICAgICAgICAgIEVSUigKLSAgICAgICAgICAgICAg
ICAiVGhpcyBBTkdMRSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHNlcGFyYXRlIGZy
b250L2JhY2sgc3RlbmNpbCAiCi0gICAgICAgICAgICAgICAgIndyaXRlbWFza3MsIHJlZmVyZW5j
ZSB2YWx1ZXMsIG9yIHN0ZW5jaWwgbWFzayB2YWx1ZXMuIik7CisgICAgICAgICAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS53ZWJnbENvbXBhdGliaWxpdHkpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgRVJSKCkgPDwgIlRoaXMgQU5HTEUgaW1wbGVtZW50YXRpb24gZG9l
cyBub3Qgc3VwcG9ydCBzZXBhcmF0ZSBmcm9udC9iYWNrIHN0ZW5jaWwgIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICJ3cml0ZW1hc2tzLCByZWZlcmVuY2UgdmFsdWVzLCBvciBzdGVuY2lsIG1h
c2sgdmFsdWVzLiI7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGZyYW1lYnVmZmVyLT5jaGVja1N0YXR1
cyhjb250ZXh0LT5nZXRDb250ZXh0U3RhdGUoKSkgIT0gR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUp
CisgICAgaWYgKGZyYW1lYnVmZmVyLT5jaGVja1N0YXR1cyhjb250ZXh0KSAhPSBHTF9GUkFNRUJV
RkZFUl9DT01QTEVURSkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTI5MjIsMTAgKzM2NjMsMTEgQEAgc3RhdGljIGJvb2wgVmFsaWRhdGVEcmF3QmFzZShW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKICAgICB9CiAKICAgICAvLyBVbmlmb3JtIGJ1ZmZl
ciB2YWxpZGF0aW9uCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgdW5pZm9ybUJsb2NrSW5kZXggPSAw
OyB1bmlmb3JtQmxvY2tJbmRleCA8IHByb2dyYW0tPmdldEFjdGl2ZVVuaWZvcm1CbG9ja0NvdW50
KCk7IHVuaWZvcm1CbG9ja0luZGV4KyspCisgICAgZm9yICh1bnNpZ25lZCBpbnQgdW5pZm9ybUJs
b2NrSW5kZXggPSAwOworICAgICAgICAgdW5pZm9ybUJsb2NrSW5kZXggPCBwcm9ncmFtLT5nZXRB
Y3RpdmVVbmlmb3JtQmxvY2tDb3VudCgpOyB1bmlmb3JtQmxvY2tJbmRleCsrKQogICAgIHsKICAg
ICAgICAgY29uc3QgZ2w6OlVuaWZvcm1CbG9jayAmdW5pZm9ybUJsb2NrID0gcHJvZ3JhbS0+Z2V0
VW5pZm9ybUJsb2NrQnlJbmRleCh1bmlmb3JtQmxvY2tJbmRleCk7Ci0gICAgICAgIEdMdWludCBi
bG9ja0JpbmRpbmcgPSBwcm9ncmFtLT5nZXRVbmlmb3JtQmxvY2tCaW5kaW5nKHVuaWZvcm1CbG9j
a0luZGV4KTsKKyAgICAgICAgR0x1aW50IGJsb2NrQmluZGluZyAgICAgICAgICAgICAgICAgID0g
cHJvZ3JhbS0+Z2V0VW5pZm9ybUJsb2NrQmluZGluZyh1bmlmb3JtQmxvY2tJbmRleCk7CiAgICAg
ICAgIGNvbnN0IE9mZnNldEJpbmRpbmdQb2ludGVyPEJ1ZmZlcj4gJnVuaWZvcm1CdWZmZXIgPQog
ICAgICAgICAgICAgc3RhdGUuZ2V0SW5kZXhlZFVuaWZvcm1CdWZmZXIoYmxvY2tCaW5kaW5nKTsK
IApAQCAtMjk1NSwxNSArMzY5NywyNyBAQCBzdGF0aWMgYm9vbCBWYWxpZGF0ZURyYXdCYXNlKFZh
bGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgICAgICB9CiAgICAgfQogCisgICAgLy8gRGV0
ZWN0IHJlbmRlcmluZyBmZWVkYmFjayBsb29wcyBmb3IgV2ViR0wuCisgICAgaWYgKGNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS53ZWJnbENvbXBhdGliaWxpdHkpCisgICAgeworICAgICAgICBpZiAo
ZnJhbWVidWZmZXItPmZvcm1zUmVuZGVyaW5nRmVlZGJhY2tMb29wV2l0aChzdGF0ZSkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAg
IEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICJSZW5k
ZXJpbmcgZmVlZGJhY2sgbG9vcCBmb3JtZWQgYmV0d2VlbiBGcmFtZWJ1ZmZlciBhbmQgYWN0aXZl
IFRleHR1cmUuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
fQorCiAgICAgLy8gTm8tb3AgaWYgemVybyBjb3VudAogICAgIHJldHVybiAoY291bnQgPiAwKTsK
IH0KIAotYm9vbCBWYWxpZGF0ZURyYXdBcnJheXMoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3Vu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50KQorYm9vbCBWYWxp
ZGF0ZURyYXdBcnJheXNDb21tb24oVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNv
dW50KQogewogICAgIGlmIChmaXJzdCA8IDApCiAgICAgewpAQCAtMjk3MywyMiArMzcyNywzNSBA
QCBib29sIFZhbGlkYXRlRHJhd0FycmF5cyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKIAog
ICAgIGNvbnN0IFN0YXRlICZzdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgPSBjb250ZXh0
LT5nZXRHTFN0YXRlKCk7CiAgICAgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrICpjdXJUcmFuc2Zvcm1G
ZWVkYmFjayA9IHN0YXRlLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOwotICAgIGlmIChj
dXJUcmFuc2Zvcm1GZWVkYmFjayAmJiBjdXJUcmFuc2Zvcm1GZWVkYmFjay0+aXNBY3RpdmUoKSAm
JiAhY3VyVHJhbnNmb3JtRmVlZGJhY2stPmlzUGF1c2VkKCkgJiYKLSAgICAgICAgY3VyVHJhbnNm
b3JtRmVlZGJhY2stPmdldFByaW1pdGl2ZU1vZGUoKSAhPSBtb2RlKQorICAgIGlmIChjdXJUcmFu
c2Zvcm1GZWVkYmFjayAmJiBjdXJUcmFuc2Zvcm1GZWVkYmFjay0+aXNBY3RpdmUoKSAmJgorICAg
ICAgICAhY3VyVHJhbnNmb3JtRmVlZGJhY2stPmlzUGF1c2VkKCkgJiYgY3VyVHJhbnNmb3JtRmVl
ZGJhY2stPmdldFByaW1pdGl2ZU1vZGUoKSAhPSBtb2RlKQogICAgIHsKICAgICAgICAgLy8gSXQg
aXMgYW4gaW52YWxpZCBvcGVyYXRpb24gdG8gY2FsbCBEcmF3QXJyYXlzIG9yIERyYXdBcnJheXNJ
bnN0YW5jZWQgd2l0aCBhIGRyYXcgbW9kZQotICAgICAgICAvLyB0aGF0IGRvZXMgbm90IG1hdGNo
IHRoZSBjdXJyZW50IHRyYW5zZm9ybSBmZWVkYmFjayBvYmplY3QncyBkcmF3IG1vZGUgKGlmIHRy
YW5zZm9ybSBmZWVkYmFjaworICAgICAgICAvLyB0aGF0IGRvZXMgbm90IG1hdGNoIHRoZSBjdXJy
ZW50IHRyYW5zZm9ybSBmZWVkYmFjayBvYmplY3QncyBkcmF3IG1vZGUgKGlmIHRyYW5zZm9ybQor
ICAgICAgICAvLyBmZWVkYmFjawogICAgICAgICAvLyBpcyBhY3RpdmUpLCAoMy4wLjIsIHNlY3Rp
b24gMi4xNCwgcGcgODYpCiAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBp
ZiAoIVZhbGlkYXRlRHJhd0Jhc2UoY29udGV4dCwgbW9kZSwgY291bnQsIHByaW1jb3VudCkpCisg
ICAgaWYgKCFWYWxpZGF0ZURyYXdCYXNlKGNvbnRleHQsIG1vZGUsIGNvdW50KSkKICAgICB7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIVZhbGlkYXRlRHJhd0F0dHJp
YnMoY29udGV4dCwgcHJpbWNvdW50LCBjb3VudCkpCisgICAgLy8gQ2hlY2sgdGhlIGNvbXB1dGF0
aW9uIG9mIG1heFZlcnRleCBkb2Vzbid0IG92ZXJmbG93LgorICAgIC8vIC0gZmlyc3QgPCAwIG9y
IGNvdW50IDwgMCBoYXZlIGJlZW4gY2hlY2tlZCBhcyBhbiBlcnJvciBjb25kaXRpb24KKyAgICAv
LyAtIGNvdW50ID4gMCBoYXMgYmVlbiBjaGVja2VkIGluIFZhbGlkYXRlRHJhd0Jhc2UgYXMgaXQg
bWFrZXMgdGhlIGNhbGwgYSBub29wCisgICAgLy8gRnJvbSB0aGlzIHdlIGtub3cgbWF4VmVydGV4
IHdpbGwgYmUgcG9zaXRpdmUsIGFuZCBvbmx5IG5lZWQgdG8gY2hlY2sgaWYgaXQgb3ZlcmZsb3dz
IEdMaW50LgorICAgIEFTU0VSVChjb3VudCA+IDAgJiYgZmlyc3QgPj0gMCk7CisgICAgaW50NjRf
dCBtYXhWZXJ0ZXggPSBzdGF0aWNfY2FzdDxpbnQ2NF90PihmaXJzdCkgKyBzdGF0aWNfY2FzdDxp
bnQ2NF90Pihjb3VudCkgLSAxOworICAgIGlmIChtYXhWZXJ0ZXggPiBzdGF0aWNfY2FzdDxpbnQ2
NF90PihzdGQ6Om51bWVyaWNfbGltaXRzPEdMaW50Pjo6bWF4KCkpKQorICAgIHsKKyAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJJbnRlZ2Vy
IG92ZXJmbG93LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICgh
VmFsaWRhdGVEcmF3QXR0cmlicyhjb250ZXh0LCBwcmltY291bnQsIHN0YXRpY19jYXN0PEdMaW50
PihtYXhWZXJ0ZXgpLCBjb3VudCkpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQpAQCAtMjk5Niw3ICszNzYzLDExIEBAIGJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzKFZhbGlkYXRp
b25Db250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRl
RHJhd0FycmF5c0luc3RhbmNlZChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSwgR0xpbnQg
Zmlyc3QsIEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KQorYm9vbCBWYWxpZGF0ZURy
YXdBcnJheXNJbnN0YW5jZWQoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgZmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBwcmltY291
bnQpCiB7CiAgICAgaWYgKHByaW1jb3VudCA8IDApCiAgICAgewpAQCAtMzAwNCw3ICszNzc1LDcg
QEAgYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWQoQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIGlmICghVmFsaWRhdGVEcmF3QXJyYXlzKGNvbnRleHQsIG1vZGUsIGZpcnN0LCBjb3Vu
dCwgcHJpbWNvdW50KSkKKyAgICBpZiAoIVZhbGlkYXRlRHJhd0FycmF5c0NvbW1vbihjb250ZXh0
LCBtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCkpCiAgICAgewogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQpAQCAtMzAyMCwxMSArMzc5MSwxMyBAQCBzdGF0aWMgYm9vbCBWYWxpZGF0
ZURyYXdJbnN0YW5jZWRBTkdMRShDb250ZXh0ICpjb250ZXh0KQogCiAgICAgZ2w6OlByb2dyYW0g
KnByb2dyYW0gPSBzdGF0ZS5nZXRQcm9ncmFtKCk7CiAKLSAgICBjb25zdCBWZXJ0ZXhBcnJheSAq
dmFvID0gc3RhdGUuZ2V0VmVydGV4QXJyYXkoKTsKKyAgICBjb25zdCBhdXRvICZhdHRyaWJzICA9
IHN0YXRlLmdldFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0ZXMoKTsKKyAgICBjb25z
dCBhdXRvICZiaW5kaW5ncyA9IHN0YXRlLmdldFZlcnRleEFycmF5KCktPmdldFZlcnRleEJpbmRp
bmdzKCk7CiAgICAgZm9yIChzaXplX3QgYXR0cmlidXRlSW5kZXggPSAwOyBhdHRyaWJ1dGVJbmRl
eCA8IE1BWF9WRVJURVhfQVRUUklCUzsgYXR0cmlidXRlSW5kZXgrKykKICAgICB7Ci0gICAgICAg
IGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliID0gdmFvLT5nZXRWZXJ0ZXhBdHRyaWJ1dGUo
YXR0cmlidXRlSW5kZXgpOwotICAgICAgICBpZiAocHJvZ3JhbS0+aXNBdHRyaWJMb2NhdGlvbkFj
dGl2ZShhdHRyaWJ1dGVJbmRleCkgJiYgYXR0cmliLmRpdmlzb3IgPT0gMCkKKyAgICAgICAgY29u
c3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIgPSBhdHRyaWJzW2F0dHJpYnV0ZUluZGV4XTsKKyAg
ICAgICAgY29uc3QgVmVydGV4QmluZGluZyAmYmluZGluZyAgPSBiaW5kaW5nc1thdHRyaWIuYmlu
ZGluZ0luZGV4XTsKKyAgICAgICAgaWYgKHByb2dyYW0tPmlzQXR0cmliTG9jYXRpb25BY3RpdmUo
YXR0cmlidXRlSW5kZXgpICYmIGJpbmRpbmcuZGl2aXNvciA9PSAwKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMzAzNiw3ICszODA5LDExIEBAIHN0
YXRpYyBib29sIFZhbGlkYXRlRHJhd0luc3RhbmNlZEFOR0xFKENvbnRleHQgKmNvbnRleHQpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNlZEFO
R0xFKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBj
b3VudCwgR0xzaXplaSBwcmltY291bnQpCitib29sIFZhbGlkYXRlRHJhd0FycmF5c0luc3RhbmNl
ZEFOR0xFKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBmaXJzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBwcmltY291bnQpCiB7CiAgICAgaWYgKCFWYWxpZGF0ZURyYXdJbnN0YW5jZWRBTkdMRShjb250
ZXh0KSkKICAgICB7CkBAIC0zMDQ2LDg3ICszODIzLDE0OSBAQCBib29sIFZhbGlkYXRlRHJhd0Fy
cmF5c0luc3RhbmNlZEFOR0xFKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlLCBHTGludCBm
aXJzdAogICAgIHJldHVybiBWYWxpZGF0ZURyYXdBcnJheXNJbnN0YW5jZWQoY29udGV4dCwgbW9k
ZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOwogfQogCi1ib29sIFZhbGlkYXRlRHJhd0VsZW1l
bnRzKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gbW9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBwcmltY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4UmFu
Z2UgKmluZGV4UmFuZ2VPdXQpCitib29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzQmFzZShWYWxpZGF0
aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKQog
ICAgIHsKLSAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAgIGNhc2UgR0xfVU5TSUdO
RURfU0hPUlQ6Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoK
LSAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZWxlbWVudEluZGV4VWludCkKLSAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkp
OwotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICAgIGJy
ZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKKyAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5lbGVtZW50SW5kZXhVaW50KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCiAgICAgY29uc3QgU3RhdGUgJnN0YXRlID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpOwog
CiAgICAgZ2w6OlRyYW5zZm9ybUZlZWRiYWNrICpjdXJUcmFuc2Zvcm1GZWVkYmFjayA9IHN0YXRl
LmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOwotICAgIGlmIChjdXJUcmFuc2Zvcm1GZWVk
YmFjayAmJiBjdXJUcmFuc2Zvcm1GZWVkYmFjay0+aXNBY3RpdmUoKSAmJiAhY3VyVHJhbnNmb3Jt
RmVlZGJhY2stPmlzUGF1c2VkKCkpCisgICAgaWYgKGN1clRyYW5zZm9ybUZlZWRiYWNrICYmIGN1
clRyYW5zZm9ybUZlZWRiYWNrLT5pc0FjdGl2ZSgpICYmCisgICAgICAgICFjdXJUcmFuc2Zvcm1G
ZWVkYmFjay0+aXNQYXVzZWQoKSkKICAgICB7Ci0gICAgICAgIC8vIEl0IGlzIGFuIGludmFsaWQg
b3BlcmF0aW9uIHRvIGNhbGwgRHJhd0VsZW1lbnRzLCBEcmF3UmFuZ2VFbGVtZW50cyBvciBEcmF3
RWxlbWVudHNJbnN0YW5jZWQKKyAgICAgICAgLy8gSXQgaXMgYW4gaW52YWxpZCBvcGVyYXRpb24g
dG8gY2FsbCBEcmF3RWxlbWVudHMsIERyYXdSYW5nZUVsZW1lbnRzIG9yCisgICAgICAgIC8vIERy
YXdFbGVtZW50c0luc3RhbmNlZAogICAgICAgICAvLyB3aGlsZSB0cmFuc2Zvcm0gZmVlZGJhY2sg
aXMgYWN0aXZlLCAoMy4wLjIsIHNlY3Rpb24gMi4xNCwgcGcgODYpCiAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZURy
YXdFbGVtZW50cyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGljZXMsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICBJ
bmRleFJhbmdlICppbmRleFJhbmdlT3V0KQoreworICAgIGlmICghVmFsaWRhdGVEcmF3RWxlbWVu
dHNCYXNlKGNvbnRleHQsIHR5cGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25z
dCBTdGF0ZSAmc3RhdGUgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCk7CisKICAgICAvLyBDaGVjayBm
b3IgbWFwcGVkIGJ1ZmZlcnMKICAgICBpZiAoc3RhdGUuaGFzTWFwcGVkQnVmZmVyKEdMX0VMRU1F
TlRfQVJSQVlfQlVGRkVSKSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiSW5kZXggYnVmZmVyIGlzIG1hcHBlZC4iKSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBjb25zdCBnbDo6VmVydGV4QXJy
YXkgKnZhbyA9IHN0YXRlLmdldFZlcnRleEFycmF5KCk7CisgICAgY29uc3QgZ2w6OlZlcnRleEFy
cmF5ICp2YW8gICAgID0gc3RhdGUuZ2V0VmVydGV4QXJyYXkoKTsKICAgICBnbDo6QnVmZmVyICpl
bGVtZW50QXJyYXlCdWZmZXIgPSB2YW8tPmdldEVsZW1lbnRBcnJheUJ1ZmZlcigpLmdldCgpOwot
ICAgIGlmICghaW5kaWNlcyAmJiAhZWxlbWVudEFycmF5QnVmZmVyKQotICAgIHsKLSAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAotICAgIGlmIChlbGVtZW50QXJyYXlCdWZmZXIpCi0g
ICAgewotICAgICAgICBjb25zdCBnbDo6VHlwZSAmdHlwZUluZm8gPSBnbDo6R2V0VHlwZUluZm8o
dHlwZSk7CisgICAgR0x1aW50IHR5cGVCeXRlcyA9IGdsOjpHZXRUeXBlSW5mbyh0eXBlKS5ieXRl
czsKIAotICAgICAgICBHTGludDY0IG9mZnNldCA9IHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQ2ND4o
aW5kaWNlcyk7Ci0gICAgICAgIEdMaW50NjQgYnl0ZUNvdW50ID0gc3RhdGljX2Nhc3Q8R0xpbnQ2
ND4odHlwZUluZm8uYnl0ZXMpICogc3RhdGljX2Nhc3Q8R0xpbnQ2ND4oY291bnQpK29mZnNldDsK
KyAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLndlYmdsQ29tcGF0aWJpbGl0eSkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChpc1BvdzIodHlwZUJ5dGVzKSAmJiB0eXBlQnl0ZXMgPiAwKTsK
KyAgICAgICAgaWYgKChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oaW5kaWNlcykgJiBzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KHR5cGVCeXRlcyAtIDEpKSAhPSAwKQorICAgICAgICB7CisgICAg
ICAgICAgICAvLyBbV2ViR0wgMS4wXSBTZWN0aW9uIDYuNCBCdWZmZXIgT2Zmc2V0IGFuZCBTdHJp
ZGUgUmVxdWlyZW1lbnRzCisgICAgICAgICAgICAvLyBUaGUgb2Zmc2V0IGFyZ3VtZW50cyB0byBk
cmF3RWxlbWVudHMgYW5kIFsuLi5dLCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhlIHNpemUgb2Yg
dGhlCisgICAgICAgICAgICAvLyBkYXRhIHR5cGUgcGFzc2VkIHRvIHRoZSBjYWxsLCBvciBhbiBJ
TlZBTElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQuCisgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJpbmRpY2VzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0
aGUgZWxlbWVudCB0eXBlIHNpemUuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CiAKLSAgICAgICAgLy8gY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3dzCi0gICAgICAg
IGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KGNvdW50KSA+IChzdGQ6Om51bWVyaWNfbGltaXRzPEdM
dWludD46Om1heCgpIC8gdHlwZUluZm8uYnl0ZXMpIHx8Ci0gICAgICAgICAgICBieXRlQ291bnQg
PiBzdGF0aWNfY2FzdDxHTGludDY0PihzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgp
KSkKKyAgICAgICAgLy8gW1dlYkdMIDEuMF0gU2VjdGlvbiA2LjQgQnVmZmVyIE9mZnNldCBhbmQg
U3RyaWRlIFJlcXVpcmVtZW50cworICAgICAgICAvLyBJbiBhZGRpdGlvbiB0aGUgb2Zmc2V0IGFy
Z3VtZW50IHRvIGRyYXdFbGVtZW50cyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSBvciBhbiBJTlZBTElE
X1ZBTFVFCisgICAgICAgIC8vIGVycm9yIGlzIGdlbmVyYXRlZC4KKyAgICAgICAgaWYgKHJlaW50
ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGluZGljZXMpIDwgMCkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfT1VUX09GX01FTU9SWSkpOworICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIk9mZnNl
dCA8IDAuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgfQog
Ci0gICAgICAgIC8vIENoZWNrIGZvciByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgYm91bmQg
YnVmZmVyIG9iamVjdAotICAgICAgICBpZiAoYnl0ZUNvdW50ID4gZWxlbWVudEFycmF5QnVmZmVy
LT5nZXRTaXplKCkpCisgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS53ZWJnbENvbXBh
dGliaWxpdHkgfHwKKyAgICAgICAgIWNvbnRleHQtPmdldEdMU3RhdGUoKS5hcmVDbGllbnRBcnJh
eXNFbmFibGVkKCkpCisgICAgeworICAgICAgICBpZiAoIWVsZW1lbnRBcnJheUJ1ZmZlciAmJiBj
b3VudCA+IDApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAvLyBbV2ViR0wgMS4wXSBT
ZWN0aW9uIDYuMiBObyBDbGllbnQgU2lkZSBBcnJheXMKKyAgICAgICAgICAgIC8vIElmIGRyYXdF
bGVtZW50cyBpcyBjYWxsZWQgd2l0aCBhIGNvdW50IGdyZWF0ZXIgdGhhbiB6ZXJvLCBhbmQgbm8g
V2ViR0xCdWZmZXIgaXMgYm91bmQKKyAgICAgICAgICAgIC8vIHRvIHRoZSBFTEVNRU5UX0FSUkFZ
X0JVRkZFUiBiaW5kaW5nIHBvaW50LCBhbiBJTlZBTElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5l
cmF0ZWQuCisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGVy
ZSBpcyBubyBlbGVtZW50IGFycmF5IGJ1ZmZlciBib3VuZCBhbmQgY291bnQgPiAwLiIpKTsKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KLSAgICBlbHNlIGlmICgh
aW5kaWNlcykKKworICAgIGlmIChjb3VudCA+IDApCiAgICAgewotICAgICAgICAvLyBDYXRjaCB0
aGlzIHByb2dyYW1taW5nIGVycm9yIGhlcmUKLSAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBpZiAoZWxlbWVudEFycmF5QnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBU
aGUgbWF4IHBvc3NpYmxlIHR5cGUgc2l6ZSBpcyA4IGFuZCBjb3VudCBpcyBvbiAzMiBiaXRzIHNv
IGRvaW5nIHRoZSBtdWx0aXBsaWNhdGlvbgorICAgICAgICAgICAgLy8gaW4gYSA2NCBiaXQgaW50
ZWdlciBpcyBzYWZlLiBBbHNvIHdlIGFyZSBndWFyYW50ZWVkIHRoYXQgaGVyZSBjb3VudCA+IDAu
CisgICAgICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZTxpbnQsIEdMc2l6ZWk+Ojp2
YWx1ZSwgIkdMc2l6ZWkgaXNuJ3QgdGhlIGV4cGVjdGVkIHR5cGUiKTsKKyAgICAgICAgICAgIGNv
bnN0ZXhwciB1aW50NjRfdCBrTWF4VHlwZVNpemUgPSA4OworICAgICAgICAgICAgY29uc3RleHBy
IHVpbnQ2NF90IGtJbnRNYXggICAgICA9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7
CisgICAgICAgICAgICBjb25zdGV4cHIgdWludDY0X3Qga1VpbnQ2NE1heCAgID0gc3RkOjpudW1l
cmljX2xpbWl0czx1aW50NjRfdD46Om1heCgpOworICAgICAgICAgICAgc3RhdGljX2Fzc2VydChr
SW50TWF4IDwga1VpbnQ2NE1heCAvIGtNYXhUeXBlU2l6ZSwgIiIpOworCisgICAgICAgICAgICB1
aW50NjRfdCB0eXBlU2l6ZSAgICAgPSB0eXBlQnl0ZXM7CisgICAgICAgICAgICB1aW50NjRfdCBl
bGVtZW50Q291bnQgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oY291bnQpOworICAgICAgICAgICAg
QVNTRVJUKGVsZW1lbnRDb3VudCA+IDAgJiYgdHlwZVNpemUgPD0ga01heFR5cGVTaXplKTsKKwor
ICAgICAgICAgICAgLy8gRG9pbmcgdGhlIG11bHRpcGxpY2F0aW9uIGhlcmUgaXMgb3ZlcmZsb3ct
c2FmZQorICAgICAgICAgICAgdWludDY0X3QgZWxlbWVudERhdGFTaXplTm9PZmZzZXQgPSB0eXBl
U2l6ZSAqIGVsZW1lbnRDb3VudDsKKworICAgICAgICAgICAgLy8gVGhlIG9mZnNldCBjYW4gYmUg
YW55IHZhbHVlLCBjaGVjayBmb3Igb3ZlcmZsb3dzCisgICAgICAgICAgICB1aW50NjRfdCBvZmZz
ZXQgPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4ocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGlu
ZGljZXMpKTsKKyAgICAgICAgICAgIGlmIChlbGVtZW50RGF0YVNpemVOb09mZnNldCA+IGtVaW50
NjRNYXggLSBvZmZzZXQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJJbnRlZ2VyIG92ZXJmbG93
LiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIHVpbnQ2NF90IGVsZW1lbnREYXRhU2l6ZVdpdGhPZmZzZXQgPSBlbGVtZW50RGF0
YVNpemVOb09mZnNldCArIG9mZnNldDsKKyAgICAgICAgICAgIGlmIChlbGVtZW50RGF0YVNpemVX
aXRoT2Zmc2V0ID4gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGVsZW1lbnRBcnJheUJ1ZmZlci0+Z2V0
U2l6ZSgpKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcigKKyAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJJ
bmRleCBidWZmZXIgaXMgbm90IGJpZyBlbm91Z2ggZm9yIHRoZSBkcmF3LiIpKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSBpZiAoIWluZGljZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgYW4g
YXBwbGljYXRpb24gZXJyb3IgdGhhdCB3b3VsZCBub3JtYWxseSByZXN1bHQgaW4gYSBjcmFzaCwK
KyAgICAgICAgICAgIC8vIGJ1dCB3ZSBjYXRjaCBpdCBhbmQgcmV0dXJuIGFuIGVycm9yCisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICBFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgIk5vIGVsZW1lbnQgYXJyYXkgYnVmZmVyIGFuZCBubyBwb2ludGVy
LiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KIAotICAg
IGlmICghVmFsaWRhdGVEcmF3QmFzZShjb250ZXh0LCBtb2RlLCBjb3VudCwgcHJpbWNvdW50KSkK
KyAgICBpZiAoIVZhbGlkYXRlRHJhd0Jhc2UoY29udGV4dCwgbW9kZSwgY291bnQpKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTMxNjAsNyArMzk5OSw4IEBAIGJvb2wg
VmFsaWRhdGVEcmF3RWxlbWVudHMoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIVZhbGlkYXRlRHJhd0F0dHJpYnMoY29u
dGV4dCwgcHJpbWNvdW50LCBzdGF0aWNfY2FzdDxHTGludD4oaW5kZXhSYW5nZU91dC0+dmVydGV4
Q291bnQoKSkpKQorICAgIGlmICghVmFsaWRhdGVEcmF3QXR0cmlicyhjb250ZXh0LCBwcmltY291
bnQsIHN0YXRpY19jYXN0PEdMaW50PihpbmRleFJhbmdlT3V0LT5lbmQpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTGludD4oaW5kZXhSYW5nZU91dC0+dmVydGV4
Q291bnQoKSkpKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTMyMDUs
MTEgKzQwNDUsMTUgQEAgYm9vbCBWYWxpZGF0ZURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICByZXR1
cm4gVmFsaWRhdGVEcmF3RWxlbWVudHNJbnN0YW5jZWQoY29udGV4dCwgbW9kZSwgY291bnQsIHR5
cGUsIGluZGljZXMsIHByaW1jb3VudCwgaW5kZXhSYW5nZU91dCk7CisgICAgcmV0dXJuIFZhbGlk
YXRlRHJhd0VsZW1lbnRzSW5zdGFuY2VkKGNvbnRleHQsIG1vZGUsIGNvdW50LCB0eXBlLCBpbmRp
Y2VzLCBwcmltY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluZGV4UmFuZ2VPdXQpOwogfQogCi1ib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlQmFz
ZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlLCBHTGludCBs
ZXZlbCkKK2Jvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVCYXNlKENvbnRleHQgKmNvbnRl
eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgdGV4dHVyZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsKQogewogICAgIGlmICgh
VmFsaWRGcmFtZWJ1ZmZlclRhcmdldCh0YXJnZXQpKQogICAgIHsKQEAgLTMyNTIsMTAgKzQwOTYs
MTUgQEAgYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUJhc2UoQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTJEKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0
YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCkKK2Jvb2wg
VmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmUyRChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHRleHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsZXZlbCkKIHsKLSAgICAvLyBBdHRhY2htZW50cyBhcmUgcmVxdWlyZWQgdG8g
YmUgYm91bmQgdG8gbGV2ZWwgMCB3aXRob3V0IEVTMyBvciB0aGUgR0xfT0VTX2Zib19yZW5kZXJf
bWlwbWFwIGV4dGVuc2lvbgorICAgIC8vIEF0dGFjaG1lbnRzIGFyZSByZXF1aXJlZCB0byBiZSBi
b3VuZCB0byBsZXZlbCAwIHdpdGhvdXQgRVMzIG9yIHRoZSBHTF9PRVNfZmJvX3JlbmRlcl9taXBt
YXAKKyAgICAvLyBleHRlbnNpb24KICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCkgPCAzICYmICFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZmJvUmVuZGVyTWlwbWFwICYm
CiAgICAgICAgIGxldmVsICE9IDApCiAgICAgewpAQCAtMzI3Nyw3ICs0MTI2LDcgQEAgYm9vbCBW
YWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTJEKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJn
ZXQsIEdMZW51bSBhdHRhY2gKIAogICAgICAgICBzd2l0Y2ggKHRleHRhcmdldCkKICAgICAgICAg
ewotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV8yRDoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAobGV2ZWwgPiBnbDo6
bG9nMihjYXBzLm1heDJEVGV4dHVyZVNpemUpKQogICAgICAgICAgICAgICAgIHsKQEAgLTMyODYs
MTggKzQxMzUsMTkgQEAgYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZTJEKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2gKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgaWYgKHRleC0+Z2V0VGFyZ2V0KCkgIT0gR0xfVEVYVFVSRV8yRCkK
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGV4dGFyZ2V0IG11c3QgbWF0
Y2ggdGhlIHRleHR1cmUgdGFyZ2V0IHR5cGUuIikpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDoK
LSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWDoKLSAgICAgICAg
ICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKLSAgICAgICAgICBjYXNlIEdM
X1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWToKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVf
Q1VCRV9NQVBfUE9TSVRJVkVfWjoKLSAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBf
TkVHQVRJVkVfWjoKKyAgICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElW
RV9YOgorICAgICAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6Cisg
ICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKKyAgICAgICAg
ICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZOgorICAgICAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6CisgICAgICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICBpZiAobGV2ZWwgPiBnbDo6bG9nMihjYXBzLm1heEN1YmVNYXBUZXh0dXJlU2l6ZSkpCiAgICAg
ICAgICAgICAgICAgewpAQCAtMzMwNiwxNSArNDE1Niw0MCBAQCBib29sIFZhbGlkYXRlRnJhbWVi
dWZmZXJUZXh0dXJlMkQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0
dGFjaAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAodGV4LT5nZXRUYXJn
ZXQoKSAhPSBHTF9URVhUVVJFX0NVQkVfTUFQKQogICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJUZXh0YXJnZXQgbXVzdCBtYXRjaCB0aGUgdGV4dHVyZSB0YXJnZXQgdHlwZS4i
KSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5V
TSkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY2FzZSBHTF9URVhU
VVJFXzJEX01VTFRJU0FNUExFOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChj
b250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzEpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlRleHR1cmUgdGFyZ2V0IHJlcXVpcmVzIGF0IGxlYXN0IE9wZW5HTCBFUyAzLjEuIikpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgaWYgKGxldmVsICE9IDApCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJMZXZlbCBtdXN0IGJlIDAgZm9yIFRFWFRVUkVf
MkRfTVVMVElTQU1QTEUuIikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh0ZXgtPmdldFRhcmdldCgpICE9
IEdMX1RFWFRVUkVfMkRfTVVMVElTQU1QTEUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRleHRh
cmdldCBtdXN0IG1hdGNoIHRoZSB0ZXh0dXJlIHRhcmdldCB0eXBlLiIpKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIGNvbnN0IEZvcm1h
dCAmZm9ybWF0ID0gdGV4LT5nZXRGb3JtYXQodGV4dGFyZ2V0LCBsZXZlbCk7CkBAIC0zMzU3LDEy
ICs0MjMyLDEyIEBAIGJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtQmFzZShDb250ZXh0ICpjb250ZXh0
LCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtZnYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dy
YW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0KiBwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0VW5p
Zm9ybWZ2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwg
R0xmbG9hdCAqcGFyYW1zKQogewogICAgIHJldHVybiBWYWxpZGF0ZUdldFVuaWZvcm1CYXNlKGNv
bnRleHQsIHByb2dyYW0sIGxvY2F0aW9uKTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1p
dihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50
KiBwYXJhbXMpCitib29sIFZhbGlkYXRlR2V0VW5pZm9ybWl2KENvbnRleHQgKmNvbnRleHQsIEdM
dWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgKnBhcmFtcykKIHsKICAgICByZXR1
cm4gVmFsaWRhdGVHZXRVbmlmb3JtQmFzZShjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbik7CiB9
CkBAIC0zMzk0LDcgKzQyNjksNyBAQCBzdGF0aWMgYm9vbCBWYWxpZGF0ZVNpemVkR2V0VW5pZm9y
bShDb250ZXh0ICpjb250ZXh0LAogCiAgICAgLy8gc2l6ZWQgcXVlcmllcyAtLSBlbnN1cmUgdGhl
IHByb3ZpZGVkIGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2gKICAgICBjb25zdCBMaW5rZWRVbmlmb3Jt
ICZ1bmlmb3JtID0gcHJvZ3JhbU9iamVjdC0+Z2V0VW5pZm9ybUJ5TG9jYXRpb24obG9jYXRpb24p
OwotICAgIHNpemVfdCByZXF1aXJlZEJ5dGVzID0gVmFyaWFibGVFeHRlcm5hbFNpemUodW5pZm9y
bS50eXBlKTsKKyAgICBzaXplX3QgcmVxdWlyZWRCeXRlcyAgICAgICAgID0gVmFyaWFibGVFeHRl
cm5hbFNpemUodW5pZm9ybS50eXBlKTsKICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihidWZT
aXplKSA8IHJlcXVpcmVkQnl0ZXMpCiAgICAgewogICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cigKQEAgLTM0MDQsMTkgKzQyNzksMjYgQEAgc3RhdGljIGJvb2wgVmFsaWRhdGVTaXplZEdldFVu
aWZvcm0oQ29udGV4dCAqY29udGV4dCwKIAogICAgIGlmIChsZW5ndGgpCiAgICAgewotICAgICAg
ICAvLyBDYXN0IGlzIHNhZmUgYmVjYXVzZSBvZiBjb21wYXJpc29uIHRvIGJ1ZlNpemUuCi0gICAg
ICAgICpsZW5ndGggPSBzdGF0aWNfY2FzdDxHTHNpemVpPihyZXF1aXJlZEJ5dGVzKTsKKyAgICAg
ICAgKmxlbmd0aCA9IFZhcmlhYmxlQ29tcG9uZW50Q291bnQodW5pZm9ybS50eXBlKTsKICAgICB9
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtZnZFWFQo
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGJ1ZlNpemUsIEdMZmxvYXQqIHBhcmFtcykKK2Jvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2RVhU
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQogewogICAgIHJldHVybiBWYWxp
ZGF0ZVNpemVkR2V0VW5pZm9ybShjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwg
bnVsbHB0cik7CiB9CiAKLWJvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWl2RVhUKENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBH
TGludCogcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldG5Vbmlmb3JtaXZFWFQoQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCAqcGFyYW1zKQogewogICAgIHJldHVybiBWYWxpZGF0ZVNpemVkR2V0VW5p
Zm9ybShjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbnVsbHB0cik7CiB9CkBA
IC0zNDc2LDggKzQzNTgsMTEgQEAgYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm11aXZSb2J1c3RBTkdM
RShDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiBWYWxpZGF0ZVNpemVkR2V0VW5pZm9ybShj
b250ZXh0LCBwcm9ncmFtLCBsb2NhdGlvbiwgYnVmU2l6ZSwgbGVuZ3RoKTsKIH0KIAotYm9vbCBW
YWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckJhc2UoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRh
cmdldCwgR0xzaXplaSBudW1BdHRhY2htZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMsIGJvb2wgZGVmYXVsdEZyYW1lYnVm
ZmVyKQorYm9vbCBWYWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckJhc2UoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIG51bUF0dGFjaG1lbnRz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICphdHRh
Y2htZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZGVmYXVs
dEZyYW1lYnVmZmVyKQogewogICAgIGlmIChudW1BdHRhY2htZW50cyA8IDApCiAgICAgewpAQCAt
MzUwOCwzMSArNDM5MywzMSBAQCBib29sIFZhbGlkYXRlRGlzY2FyZEZyYW1lYnVmZmVyQmFzZShD
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG51bQogICAgICAgICB7CiAg
ICAgICAgICAgICBzd2l0Y2ggKGF0dGFjaG1lbnRzW2ldKQogICAgICAgICAgICAgewotICAgICAg
ICAgICAgICBjYXNlIEdMX0RFUFRIX0FUVEFDSE1FTlQ6Ci0gICAgICAgICAgICAgIGNhc2UgR0xf
U1RFTkNJTF9BVFRBQ0hNRU5UOgotICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIX1NURU5DSUxf
QVRUQUNITUVOVDoKLSAgICAgICAgICAgICAgICBpZiAoZGVmYXVsdEZyYW1lYnVmZmVyKQotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
Ci0gICAgICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX0VOVU0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBhdHRhY2htZW50IHdoZW4gdGhlIGRlZmF1
bHQgZnJhbWVidWZmZXIgaXMgYm91bmQiKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgIGNhc2UgR0xfQ09MT1I6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfREVQVEg6Ci0gICAg
ICAgICAgICAgIGNhc2UgR0xfU1RFTkNJTDoKLSAgICAgICAgICAgICAgICBpZiAoIWRlZmF1bHRG
cmFtZWJ1ZmZlcikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYXR0YWNobWVu
dCB3aGVuIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGlzIG5vdCBib3VuZCIpKTsKKyAgICAgICAg
ICAgICAgICBjYXNlIEdMX0RFUFRIX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICAgICAgY2FzZSBH
TF9TVEVOQ0lMX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVO
Q0lMX0FUVEFDSE1FTlQ6CisgICAgICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0RnJhbWVidWZm
ZXIpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lO
VkFMSURfRU5VTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBh
dHRhY2htZW50IHdoZW4gdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIgaXMgYm91bmQiKSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBHTF9DT0xP
UjoKKyAgICAgICAgICAgICAgICBjYXNlIEdMX0RFUFRIOgorICAgICAgICAgICAgICAgIGNhc2Ug
R0xfU1RFTkNJTDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWZhdWx0RnJhbWVidWZmZXIp
CisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFM
SURfRU5VTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBhdHRh
Y2htZW50IHdoZW4gdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIgaXMgbm90IGJvdW5kIikpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSwgIkludmFsaWQgYXR0YWNobWVudCIpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgYXR0YWNobWVudCIpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBA
IC0zNjk0LDYgKzQ1NzksMTMgQEAgYm9vbCBWYWxpZGF0ZUxpbmtQcm9ncmFtKENvbnRleHQgKmNv
bnRleHQsIEdMdWludCBwcm9ncmFtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAidHJhbnNmb3JtIGZlZWRiYWNrIG9iamVjdC4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CisKKyAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9ncmFtKGNv
bnRleHQsIHByb2dyYW0pOworICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICB7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzc0OCw2
ICs0NjQwLDEyIEBAIGJvb2wgVmFsaWRhdGVHZXRQcm9ncmFtQmluYXJ5QmFzZShDb250ZXh0ICpj
b250ZXh0LAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgaWYgKGNvbnRleHQt
PmdldENhcHMoKS5wcm9ncmFtQmluYXJ5Rm9ybWF0cy5lbXB0eSgpKQorICAgIHsKKyAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJObyBwcm9n
cmFtIGJpbmFyeSBmb3JtYXRzIHN1cHBvcnRlZC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzkzNiw3ICs0ODM0LDcgQEAgYm9v
bCBWYWxpZGF0ZUdldEJ1ZmZlclBvaW50ZXJ2QmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgIHsK
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCiAgICAgICAgICAgICBFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTiwKLSAgICAgICAgICAgICAgICAgICJDb250ZXh0IGRvZXMgbm90IHN1cHBv
cnQgT3BlbkdMIEVTIDMuMCBvciBHTF9PRVNfbWFwX2J1ZmZlciBpcyBub3QgZW5hYmxlZC4iKSk7
CisgICAgICAgICAgICAgICAgICAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IE9wZW5HTCBFUyAz
LjAgb3IgR0xfT0VTX21hcGJ1ZmZlciBpcyBub3QgZW5hYmxlZC4iKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTQxODIsMTIgKzUwODAsMTEgQEAgYm9vbCBWYWxpZGF0ZUdl
bmVyYXRlTWlwbWFwKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpCiAgICAgfQogCiAg
ICAgLy8gTm9uLXBvd2VyIG9mIDIgRVMyIGNoZWNrCi0gICAgaWYgKCFjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkudGV4dHVyZU5QT1QgJiYKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lv
bigpIDwgVmVyc2lvbigzLCAwKSAmJiAhY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVO
UE9UICYmCiAgICAgICAgICghaXNQb3cyKHN0YXRpY19jYXN0PGludD4odGV4dHVyZS0+Z2V0V2lk
dGgoYmFzZVRhcmdldCwgMCkpKSB8fAogICAgICAgICAgIWlzUG93MihzdGF0aWNfY2FzdDxpbnQ+
KHRleHR1cmUtPmdldEhlaWdodChiYXNlVGFyZ2V0LCAwKSkpKSkKICAgICB7Ci0gICAgICAgIEFT
U0VSVChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8PSAyICYmCi0gICAgICAgICAg
ICAgICAodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQgfHwgdGFyZ2V0ID09IEdMX1RFWFRVUkVfQ1VC
RV9NQVApKTsKKyAgICAgICAgQVNTRVJUKHRhcmdldCA9PSBHTF9URVhUVVJFXzJEIHx8IHRhcmdl
dCA9PSBHTF9URVhUVVJFX0NVQkVfTUFQKTsKICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KQEAgLTQyNjgsNyArNTE2NSw3IEBAIGJvb2wgVmFsaWRhdGVFbmFibGUoQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIGNhcCkKIAogICAgICAgICAvLyBXZSBhbHNvIG91dHB1dCBhbiBlcnJvciBt
ZXNzYWdlIHRvIHRoZSBkZWJ1Z2dlciB3aW5kb3cgaWYgdHJhY2luZyBpcyBhY3RpdmUsIHNvIHRo
YXQKICAgICAgICAgLy8gZGV2ZWxvcGVycyBjYW4gc2VlIHRoZSBlcnJvciBtZXNzYWdlLgotICAg
ICAgICBFUlIoIiVzIiwgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgRVJSKCkgPDwgZXJyb3JNZXNz
YWdlOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC00NjkzLDYgKzU1OTAsMTQg
QEAgYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1pdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJv
Z3JhbSwgR0xlbnVtIHBuYW1lLCBHTHNpemUKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJy
ZWFrOwogCisgICAgICAgIGNhc2UgR0xfUFJPR1JBTV9TRVBBUkFCTEU6CisgICAgICAgICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgVmVyc2lvbigzLCAxKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0sICJRdWVyeWluZyByZXF1aXJlcyBhdCBsZWFzdCBFUyAzLjEuIikpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFr
OworCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0sICJVbmtub3duIHBhcmFtZXRlciBuYW1lLiIpKTsKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUyMjksNCArNjEzNCwxMjEgQEAgYm9vbCBWYWxpZGF0
ZUdldEludGVybmFsRm9ybWF0aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgIHJl
dHVybiB0cnVlOwogfQogCitib29sIFZhbGlkYXRlVmVydGV4Rm9ybWF0QmFzZShWYWxpZGF0aW9u
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBh
dHRyaWJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBwdXJlSW50ZWdlcikKK3sKKyAgICBjb25zdCBDYXBz
ICZjYXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOworICAgIGlmIChhdHRyaWJJbmRleCA+PSBjYXBz
Lm1heFZlcnRleEF0dHJpYnV0ZXMpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJhdHRyaWJpbmRleCBtdXN0
IGJlIHNtYWxsZXIgdGhhbiBNQVhfVkVSVEVYX0FUVFJJQlMuIikpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgaWYgKHNpemUgPCAxIHx8IHNpemUgPiA0KQorICAgIHsKKyAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgInNpemUg
bXVzdCBiZSBiZXR3ZWVuIG9uZSBhbmQgZm91ci4iKSk7CisgICAgfQorCisgICAgc3dpdGNoICh0
eXBlKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9CWVRFOgorICAgICAgICBjYXNlIEdMX1VOU0lH
TkVEX0JZVEU6CisgICAgICAgIGNhc2UgR0xfU0hPUlQ6CisgICAgICAgIGNhc2UgR0xfVU5TSUdO
RURfU0hPUlQ6CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0lOVDoKKyAg
ICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0
Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZB
TElEX0VOVU0sICJWZXJ0ZXggdHlwZSBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPcGVuR0wgRVMgMy4w
LiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdMX0ZJWEVEOgorICAgICAgICBjYXNlIEdM
X0ZMT0FUOgorICAgICAgICAgICAgaWYgKHB1cmVJbnRlZ2VyKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwg
IlR5cGUgaXMgbm90IGludGVnZXIuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfSEFM
Rl9GTE9BVDoKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24o
KSA8IDMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlZlcnRleCB0
eXBlIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIE9wZW5HTCBFUyAzLjAuIikpOworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwdXJlSW50
ZWdlcikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJUeXBlIGlzIG5vdCBpbnRlZ2VyLiIpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVh
azsKKworICAgICAgICBjYXNlIEdMX0lOVF8yXzEwXzEwXzEwX1JFVjoKKyAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVY6CisgICAgICAgICAgICBpZiAoY29udGV4dC0+
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9J
TlZBTElEX0VOVU0sICJWZXJ0ZXggdHlwZSBub3Qgc3VwcG9ydGVkIGJlZm9yZSBPcGVuR0wgRVMg
My4wLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAocHVyZUludGVnZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiVHlwZSBpcyBu
b3QgaW50ZWdlci4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKHNpemUgIT0gNCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVHlwZSBpcyBJTlRf
Ml8xMF8xMF8xMF9SRVYgb3IgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJVTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVYgYW5kIHNpemUgaXMgbm90IDQuIikp
OworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHZlcnRleCB0eXBlLiIpKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworLy8gUGVyZm9ybSB2YWxpZGF0aW9uIGZyb20gV2ViR0wgMiBzZWN0aW9uIDUuMTAgIkludmFs
aWQgQ2xlYXJzIjoKKy8vIEluIHRoZSBXZWJHTCAyIEFQSSwgdHJ5aW5nIHRvIHBlcmZvcm0gYSBj
bGVhciB3aGVuIHRoZXJlIGlzIGEgbWlzbWF0Y2ggYmV0d2VlbiB0aGUgdHlwZSBvZiB0aGUKKy8v
IHNwZWNpZmllZCBjbGVhciB2YWx1ZSBhbmQgdGhlIHR5cGUgb2YgYSBidWZmZXIgdGhhdCBpcyBi
ZWluZyBjbGVhcmVkIGdlbmVyYXRlcyBhbgorLy8gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IgaW5z
dGVhZCBvZiBwcm9kdWNpbmcgdW5kZWZpbmVkIHJlc3VsdHMKK2Jvb2wgVmFsaWRhdGVXZWJHTEZy
YW1lYnVmZmVyQXR0YWNobWVudENsZWFyVHlwZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBk
cmF3YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZW51bSAqdmFsaWRDb21wb25lbnRUeXBlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdmFsaWRDb21wb25lbnRUeXBl
Q291bnQpCit7CisgICAgY29uc3QgRnJhbWVidWZmZXJBdHRhY2htZW50ICphdHRhY2htZW50ID0K
KyAgICAgICAgY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldERyYXdGcmFtZWJ1ZmZlcigpLT5nZXRE
cmF3QnVmZmVyKGRyYXdidWZmZXIpOworICAgIGlmIChhdHRhY2htZW50KQorICAgIHsKKyAgICAg
ICAgR0xlbnVtIGNvbXBvbmVudFR5cGUgPSBhdHRhY2htZW50LT5nZXRGb3JtYXQoKS5pbmZvLT5j
b21wb25lbnRUeXBlOworICAgICAgICBjb25zdCBHTGVudW0gKmVuZCAgICA9IHZhbGlkQ29tcG9u
ZW50VHlwZXMgKyB2YWxpZENvbXBvbmVudFR5cGVDb3VudDsKKyAgICAgICAgaWYgKHN0ZDo6Zmlu
ZCh2YWxpZENvbXBvbmVudFR5cGVzLCBlbmQsIGNvbXBvbmVudFR5cGUpID09IGVuZCkKKyAgICAg
ICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAg
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgIk5vIGRl
ZmluZWQgY29udmVyc2lvbiBiZXR3ZWVuIGNsZWFyIHZhbHVlIGFuZCBhdHRhY2htZW50IGZvcm1h
dC4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIGdsCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmgKaW5kZXggMDZkYTM3
NjkwZmMuLjUzMTUzMTlhY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUy5oCkBAIC0zNSwxMSArMzUsMTIgQEAgYm9vbCBWYWxp
ZFRleHR1cmUzRFRhcmdldChjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCk7CiBib29sIFZhbGlkVGV4dHVyZUV4dGVybmFsVGFyZ2V0KGNvbnN0IFZhbGlkYXRp
b25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0KTsKIGJvb2wgVmFsaWRUZXh0dXJlMkRE
ZXN0aW5hdGlvblRhcmdldChjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCk7CiBib29sIFZhbGlkVGV4dHVyZTNERGVzdGluYXRpb25UYXJnZXQoY29uc3QgVmFs
aWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQpOworYm9vbCBWYWxpZFRleExl
dmVsRGVzdGluYXRpb25UYXJnZXQoY29uc3QgVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0YXJnZXQpOwogYm9vbCBWYWxpZEZyYW1lYnVmZmVyVGFyZ2V0KEdMZW51bSB0YXJnZXQp
OwogYm9vbCBWYWxpZEJ1ZmZlclRhcmdldChjb25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHRhcmdldCk7CiBib29sIFZhbGlkQnVmZmVyUGFyYW1ldGVyKGNvbnN0IFZhbGlk
YXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMc2l6ZWkgKm51bVBhcmFtcyk7
CiBib29sIFZhbGlkTWlwTGV2ZWwoY29uc3QgVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKTsKLWJvb2wgVmFsaWRJbWFnZVNpemVQYXJhbWV0ZXJz
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsCitib29sIFZhbGlkSW1hZ2VTaXplUGFyYW1ldGVycyhj
b25zdCBWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGlu
dCBsZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCkBA
IC00OCw2ICs0OSw4IEBAIGJvb2wgVmFsaWRJbWFnZVNpemVQYXJhbWV0ZXJzKGNvbnN0IENvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzU3ViSW1h
Z2UpOwogYm9vbCBWYWxpZENvbXByZXNzZWRJbWFnZVNpemUoY29uc3QgVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJu
YWxGb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4b2Zmc2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeW9mZnNldCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGhlaWdodCk7CiBib29sIFZhbGlkSW1hZ2VEYXRhU2l6ZShWYWxpZGF0
aW9uQ29udGV4dCAqY29udGV4dCwKQEAgLTYyLDYgKzY1LDEzIEBAIGJvb2wgVmFsaWRJbWFnZURh
dGFTaXplKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogCiBib29sIFZhbGlkUXVlcnlUeXBl
KGNvbnN0IENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBxdWVyeVR5cGUpOwogCitib29sIFZhbGlk
YXRlV2ViR0xWZXJ0ZXhBdHRyaWJQb2ludGVyKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIG5vcm1hbGl6ZWQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc3RyaWRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnB0ciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBwdXJlSW50ZWdlcik7CisK
IC8vIFJldHVybnMgdmFsaWQgcHJvZ3JhbSBpZiBpZCBpcyBhIHZhbGlkIHByb2dyYW0gbmFtZQog
Ly8gRXJyb3JzIElOVkFMSURfT1BFUkFUSU9OIGlmIHZhbGlkIHNoYWRlciBpcyBnaXZlbiBhbmQg
cmV0dXJucyBOVUxMCiAvLyBFcnJvcnMgSU5WQUxJRF9WQUxVRSBvdGhlcndpc2UgYW5kIHJldHVy
bnMgTlVMTApAQCAtNzMsMTMgKzgzLDE3IEBAIFByb2dyYW0gKkdldFZhbGlkUHJvZ3JhbShWYWxp
ZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkKTsKIFNoYWRlciAqR2V0VmFsaWRTaGFk
ZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBpZCk7CiAKIGJvb2wgVmFsaWRh
dGVBdHRhY2htZW50VGFyZ2V0KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBhdHRhY2htZW50KTsK
LWJvb2wgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdM
c2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKLWJvb2wgVmFsaWRhdGVSZW5kZXJidWZmZXJT
dG9yYWdlUGFyYW1ldGVyc0FOR0xFKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdM
c2l6ZWkgc2FtcGxlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQpOwotCi1ib29sIFZhbGlkYXRlRnJhbWVidWZmZXJSZW5kZXJidWZmZXJQYXJhbWV0ZXJzKENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcmVuZGVyYnVm
ZmVydGFyZ2V0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKTsKK2Jvb2wgVmFsaWRhdGVSZW5kZXJidWZm
ZXJTdG9yYWdlUGFyYW1ldGVyc0Jhc2UoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
c2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCk7Citib29sIFZhbGlkYXRlRnJhbWVi
dWZmZXJSZW5kZXJidWZmZXJQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2ht
ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcmVuZGVyYnVmZmVydGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgcmVuZGVyYnVmZmVyKTsKIAogYm9vbCBWYWxpZGF0ZUJsaXRG
cmFtZWJ1ZmZlclBhcmFtZXRlcnMoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzcmNYMCwKQEAgLTExMCw2ICsx
MjQsOCBAQCBib29sIFZhbGlkYXRlUmVhZFBpeGVsc1JvYnVzdEFOR0xFKFZhbGlkYXRpb25Db250
ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXpl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmNvbHVtbnMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKnJvd3MsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdm9pZCAqcGl4ZWxzKTsKIGJvb2wgVmFsaWRhdGVS
ZWFkblBpeGVsc0VYVChDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHgsCkBAIC0xMjksNiArMTQ1LDggQEAgYm9vbCBWYWxpZGF0ZVJlYWRuUGl4ZWxz
Um9idXN0QU5HTEUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKmNvbHVtbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpICpyb3dzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x2b2lkICpkYXRhKTsKIAogYm9vbCBWYWxpZGF0ZUdlblF1ZXJpZXNFWFQoZ2w6OkNvbnRleHQg
KmNvbnRleHQsIEdMc2l6ZWkgbik7CkBAIC0xNzksOCArMTk3LDI5IEBAIGJvb2wgVmFsaWRhdGVH
ZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCAqcGFyYW1z
KTsKIAotYm9vbCBWYWxpZGF0ZVVuaWZvcm0oQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHVuaWZv
cm1UeXBlLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCk7Ci1ib29sIFZhbGlkYXRlVW5p
Zm9ybU1hdHJpeChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbWF0cml4VHlwZSwgR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsCitib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0oQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdW5pZm9ybVR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCk7Citib29sIFZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0xaXYo
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQg
cHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50ICp2YWx1ZSk7Citib29sIFZhbGlkYXRl
UHJvZ3JhbVVuaWZvcm1NYXRyaXgoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gbWF0cml4VHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB0cmFuc3Bvc2UpOworCitib29sIFZhbGlkYXRlVW5pZm9ybShWYWxpZGF0aW9uQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHVuaWZvcm1UeXBlLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCk7Citib29sIFZhbGlkYXRlVW5pZm9ybTFpdihDb250ZXh0ICpjb250ZXh0LCBHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsKK2Jvb2wgVmFsaWRh
dGVVbmlmb3JtTWF0cml4KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIG1hdHJpeFR5cGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Y291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdHJhbnNwb3NlKTsK
IAogYm9vbCBWYWxpZGF0ZVN0YXRlUXVlcnkoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCkBA
IC0yMDksMTQgKzI0OCwyNCBAQCBib29sIFZhbGlkYXRlQ29weVRleEltYWdlUGFyYW1ldGVyc0Jh
c2UoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgYm9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZvcm1hdCAqdGV4dHVyZUZvcm1hdE91dCk7CiAKLWJvb2wgVmFsaWRhdGVE
cmF3QXJyYXlzKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIG1vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBHTGludCBmaXJzdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIHByaW1jb3VudCk7Ci1ib29sIFZhbGlkYXRlRHJhd0FycmF5c0luc3Rh
bmNlZChDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkg
Y291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KTsKLWJvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFu
Y2VkQU5HTEUoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNp
emVpIGNvdW50LCBHTHNpemVpIHByaW1jb3VudCk7Ci0KK2Jvb2wgVmFsaWRhdGVEcmF3QmFzZShW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQpOwor
Ym9vbCBWYWxpZGF0ZURyYXdBcnJheXNDb21tb24oVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgcHJpbWNvdW50KTsKK2Jvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5zdGFuY2VkKENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50KTsKK2Jvb2wgVmFsaWRhdGVEcmF3QXJy
YXlzSW5zdGFuY2VkQU5HTEUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGZpcnN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHByaW1jb3VudCk7CisKK2Jvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNCYXNl
KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gdHlwZSk7CiBib29sIFZhbGlkYXRl
RHJhd0VsZW1lbnRzKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gbW9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXpl
aSBjb3VudCwKQEAgLTI0MCwxMCArMjg5LDE3IEBAIGJvb2wgVmFsaWRhdGVEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgcHJpbWNvdW50LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEluZGV4UmFuZ2UgKmluZGV4UmFuZ2VPdXQpOwogCi1ib29sIFZh
bGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlQmFzZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFy
Z2V0LCBHTGVudW0gYXR0YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCk7Ci1ib29sIFZhbGlkYXRlRnJhbWVidWZm
ZXJUZXh0dXJlMkQoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFj
aG1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0ZXh0YXJn
ZXQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCk7Citib29sIFZhbGlkYXRlRnJhbWVidWZm
ZXJUZXh0dXJlQmFzZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBhdHRhY2htZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBsZXZlbCk7Citib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlMkQoQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFy
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRhY2htZW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0ZXh0YXJnZXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwpOwogYm9vbCBWYWxpZGF0ZUZy
YW1lYnVmZmVyUmVuZGVyYnVmZmVyKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudCwKQEAgLTI1MSwxMCArMzA3LDE4IEBA
IGJvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCByZW5kZXJidWZmZXIp
OwogCiBib29sIFZhbGlkYXRlR2V0VW5pZm9ybUJhc2UoQ29udGV4dCAqY29udGV4dCwgR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uKTsKLWJvb2wgVmFsaWRhdGVHZXRVbmlmb3JtZnYoQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0KiBw
YXJhbXMpOwotYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1pdihDb250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50KiBwYXJhbXMpOwotYm9vbCBWYWxpZGF0
ZUdldG5Vbmlmb3JtZnZFWFQoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0sIEdMaW50
IGxvY2F0aW9uLCBHTHNpemVpIGJ1ZlNpemUsIEdMZmxvYXQqIHBhcmFtcyk7Ci1ib29sIFZhbGlk
YXRlR2V0blVuaWZvcm1pdkVYVChDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xpbnQqIHBhcmFtcyk7Citib29sIFZhbGlk
YXRlR2V0VW5pZm9ybWZ2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBHTGludCBs
b2NhdGlvbiwgR0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRVbmlmb3JtaXYoQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCAqcGFy
YW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWZ2RVhUKENvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRuVW5pZm9ybWl2RVhUKENvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgKnBhcmFtcyk7CiBib29sIFZhbGlkYXRlR2V0VW5pZm9ybWZ2Um9i
dXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBsb2NhdGlvbiwKQEAgLTI3NCw4ICszMzgsMTEgQEAgYm9vbCBWYWxpZGF0ZUdl
dFVuaWZvcm11aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCAqcGFyYW1zKTsKIAotYm9vbCBWYWxpZGF0ZURp
c2NhcmRGcmFtZWJ1ZmZlckJhc2UoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xz
aXplaSBudW1BdHRhY2htZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMsIGJvb2wgZGVmYXVsdEZyYW1lYnVmZmVyKTsKK2Jv
b2wgVmFsaWRhdGVEaXNjYXJkRnJhbWVidWZmZXJCYXNlKENvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1BdHRhY2htZW50cywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGRlZmF1bHRGcmFtZWJ1
ZmZlcik7CiAKIGJvb2wgVmFsaWRhdGVJbnNlcnRFdmVudE1hcmtlckVYVChDb250ZXh0ICpjb250
ZXh0LCBHTHNpemVpIGxlbmd0aCwgY29uc3QgY2hhciAqbWFya2VyKTsKIGJvb2wgVmFsaWRhdGVQ
dXNoR3JvdXBNYXJrZXJFWFQoQ29udGV4dCAqY29udGV4dCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0
IGNoYXIgKm1hcmtlcik7CkBAIC01NDYsNiArNjEzLDcgQEAgYm9vbCBWYWxpZGF0ZUdldEludGVy
bmFsRm9ybWF0aXYoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpw
YXJhbXMpOworCiBib29sIFZhbGlkYXRlR2V0SW50ZXJuYWxGb3JtYXRpdlJvYnVzdEFOR0xFKENv
bnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMZW51bSB0YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKQEAgLTU1NCw4ICs2MjIsMTkgQEAgYm9vbCBW
YWxpZGF0ZUdldEludGVybmFsRm9ybWF0aXZSb2J1c3RBTkdMRShDb250ZXh0ICpjb250ZXh0LAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5n
dGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpw
YXJhbXMpOwogCitib29sIFZhbGlkYXRlVmVydGV4Rm9ybWF0QmFzZShWYWxpZGF0aW9uQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBhdHRyaWJJ
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiBwdXJlSW50ZWdlcik7CisKK2Jvb2wgVmFsaWRhdGVXZWJHTEZy
YW1lYnVmZmVyQXR0YWNobWVudENsZWFyVHlwZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBk
cmF3YnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZW51bSAqdmFsaWRDb21wb25lbnRUeXBlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdmFsaWRDb21wb25lbnRUeXBl
Q291bnQpOworCiAvLyBFcnJvciBtZXNzYWdlcyBzaGFyZWQgaGVyZSBmb3IgdXNlIGluIHRlc3Rp
bmcuCiBleHRlcm4gY29uc3QgY2hhciAqZ19FeGNlZWRzTWF4RWxlbWVudEVycm9yTWVzc2FnZTsK
IH0gIC8vIG5hbWVzcGFjZSBnbAogCi0jZW5kaWYgLy8gTElCQU5HTEVfVkFMSURBVElPTl9FU19I
XworI2VuZGlmICAvLyBMSUJBTkdMRV9WQUxJREFUSU9OX0VTX0hfCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMi5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMi5jcHAKaW5kZXgg
OTJmZDBkNjllMTUuLmZiMjNjYWNjYzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMi5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzIuY3BwCkBAIC0yMyw2ICsyMyw3IEBA
CiAjaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS92
YWxpZGF0aW9uRVMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS92YWxpZGF0aW9uRVMzLmgiCisjaW5j
bHVkZSAibGliQU5HTEUvVmVydGV4QXJyYXkuaCIKIAogbmFtZXNwYWNlIGdsCiB7CkBAIC0yODMs
NiArMjg0LDU4IEBAIGJvb2wgSXNWYWxpZENvcHlUZXh0dXJlU291cmNlVGFyZ2V0KENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0YXJnZXQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIElz
VmFsaWRTdGVuY2lsRnVuYyhHTGVudW0gZnVuYykKK3sKKyAgICBzd2l0Y2ggKGZ1bmMpCisgICAg
eworICAgICAgICBjYXNlIEdMX05FVkVSOgorICAgICAgICBjYXNlIEdMX0FMV0FZUzoKKyAgICAg
ICAgY2FzZSBHTF9MRVNTOgorICAgICAgICBjYXNlIEdMX0xFUVVBTDoKKyAgICAgICAgY2FzZSBH
TF9FUVVBTDoKKyAgICAgICAgY2FzZSBHTF9HRVFVQUw6CisgICAgICAgIGNhc2UgR0xfR1JFQVRF
UjoKKyAgICAgICAgY2FzZSBHTF9OT1RFUVVBTDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQor
Citib29sIElzVmFsaWRTdGVuY2lsRmFjZShHTGVudW0gZmFjZSkKK3sKKyAgICBzd2l0Y2ggKGZh
Y2UpCisgICAgeworICAgICAgICBjYXNlIEdMX0ZST05UOgorICAgICAgICBjYXNlIEdMX0JBQ0s6
CisgICAgICAgIGNhc2UgR0xfRlJPTlRfQU5EX0JBQ0s6CisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
K30KKworYm9vbCBJc1ZhbGlkU3RlbmNpbE9wKEdMZW51bSBvcCkKK3sKKyAgICBzd2l0Y2ggKG9w
KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9aRVJPOgorICAgICAgICBjYXNlIEdMX0tFRVA6Cisg
ICAgICAgIGNhc2UgR0xfUkVQTEFDRToKKyAgICAgICAgY2FzZSBHTF9JTkNSOgorICAgICAgICBj
YXNlIEdMX0RFQ1I6CisgICAgICAgIGNhc2UgR0xfSU5WRVJUOgorICAgICAgICBjYXNlIEdMX0lO
Q1JfV1JBUDoKKyAgICAgICAgY2FzZSBHTF9ERUNSX1dSQVA6CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KK30KKwogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCiBib29sIFZhbGlkYXRlRVMyVGV4
SW1hZ2VQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsCkBAIC0zMTMsOCArMzY2LDcgQEAgYm9v
bCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGxldmVsIDwgMCB8fCB4b2Zmc2V0IDwg
MCB8fAotICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPEdMc2l6ZWk+OjptYXgoKSAtIHhvZmZz
ZXQgPCB3aWR0aCB8fAorICAgIGlmIChsZXZlbCA8IDAgfHwgeG9mZnNldCA8IDAgfHwgc3RkOjpu
dW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB4b2Zmc2V0IDwgd2lkdGggfHwKICAgICAg
ICAgc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgLSB5b2Zmc2V0IDwgaGVpZ2h0
KQogICAgIHsKICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOwpAQCAtMzU5LDcgKzQxMSw4IEBAIGJvb2wgVmFsaWRhdGVFUzJUZXhJbWFnZVBhcmFt
ZXRlcnMoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIGdsOjpUZXh0dXJlICp0ZXh0dXJlID0gY29udGV4dC0+Z2V0VGFyZ2V0VGV4dHVyZShJc0N1
YmVNYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCkgPyBHTF9URVhUVVJFX0NVQkVfTUFQIDogdGFyZ2V0
KTsKKyAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9CisgICAgICAgIGNvbnRleHQtPmdldFRhcmdl
dFRleHR1cmUoSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpID8gR0xfVEVYVFVSRV9DVUJF
X01BUCA6IHRhcmdldCk7CiAgICAgaWYgKCF0ZXh0dXJlKQogICAgIHsKICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKQEAgLTM2OCwxMCAr
NDIxLDE2IEBAIGJvb2wgVmFsaWRhdGVFUzJUZXhJbWFnZVBhcmFtZXRlcnMoQ29udGV4dCAqY29u
dGV4dCwKIAogICAgIGlmIChpc1N1YkltYWdlKQogICAgIHsKKyAgICAgICAgR0xlbnVtIHRleHR1
cmVGb3JtYXQgPSB0ZXh0dXJlLT5nZXRGb3JtYXQodGFyZ2V0LCBsZXZlbCkuYXNTaXplZCgpOwor
ICAgICAgICBpZiAodGV4dHVyZUZvcm1hdCA9PSBHTF9OT05FKQorICAgICAgICB7CisgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlRl
eHR1cmUgbGV2ZWwgZG9lcyBub3QgZXhpc3QuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CisKICAgICAgICAgaWYgKGZvcm1hdCAhPSBHTF9OT05FKQogICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoZ2w6OkdldFNpemVkSW50ZXJuYWxGb3JtYXQoZm9ybWF0LCB0eXBl
KSAhPQotICAgICAgICAgICAgICAgIHRleHR1cmUtPmdldEZvcm1hdCh0YXJnZXQsIGxldmVsKS5h
c1NpemVkKCkpCisgICAgICAgICAgICBpZiAoZ2w6OkdldFNpemVkSW50ZXJuYWxGb3JtYXQoZm9y
bWF0LCB0eXBlKSAhPSB0ZXh0dXJlRm9ybWF0KQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDA3LDQ5ICs0NjYsNjUgQEAgYm9vbCBW
YWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAg
ICAgaXNTdWJJbWFnZSA/IHRleHR1cmUtPmdldEZvcm1hdCh0YXJnZXQsIGxldmVsKS5hc1NpemVk
KCkgOiBpbnRlcm5hbGZvcm1hdDsKICAgICAgICAgc3dpdGNoIChhY3R1YWxJbnRlcm5hbEZvcm1h
dCkKICAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQx
X0VYVDoKLSAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgot
ICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUNvbXByZXNz
aW9uRFhUMSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6Ci0gICAgICAgICAgICBpZiAoIWNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQxKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUNV9BTkdMRToKLSAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRl
eHR1cmVDb21wcmVzc2lvbkRYVDUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfT0VTOgotICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZEVUQzFSR0I4VGV4dHVyZSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0pKTsKKyAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDoK
KyAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6CisgICAg
ICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUNvbXByZXNz
aW9uRFhUMSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgor
ICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVDb21w
cmVzc2lvbkRYVDEpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdM
RToKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJl
Q29tcHJlc3Npb25EWFQ1KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQl9TM1RDX0RYVDFf
RVhUOgorICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0JfQUxQSEFfUzNUQ19EWFQx
X0VYVDoKKyAgICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCX0FMUEhBX1MzVENfRFhU
M19FWFQ6CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQl9BTFBIQV9TM1RDX0RY
VDVfRVhUOgorICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRl
eHR1cmVDb21wcmVzc2lvblMzVENzUkdCKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9PRVM6Cisg
ICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZEVU
QzFSR0I4VGV4dHVyZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xF
OgorICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQjhfTE9TU1lfREVDT0RFX0VUQzJf
QU5HTEU6CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfTE9TU1lfREVDT0RF
X0VUQzJfQU5HTEU6CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCOF9QVU5DSFRI
Uk9VR0hfQUxQSEExX0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFOgorICAgICAgICAgICAgY2FzZSBH
TF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfTE9TU1lfREVDT0RFX0VUQzJf
QU5HTEU6CisgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubG9z
c3lFVENEZWNvZGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMX0lOVkFM
SURfRU5VTSwgIkFOR0xFX2xvc3N5X2V0Y19kZWNvZGUgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0
ZWQiKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgICAgICBFcnJv
cihHTF9JTlZBTElEX0VOVU0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcm5hbGZv
cm1hdCBpcyBub3QgYSBzdXBwb3J0ZWQgY29tcHJlc3NlZCBpbnRlcm5hbCBmb3JtYXQiKSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFOgot
ICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5sb3NzeUVUQ0RlY29k
ZSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoCi0gICAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiQU5HTEVf
bG9zc3lfZXRjX2RlY29kZSBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZCIpKTsKLSAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcigKLSAgICAgICAgICAgICAgICAgIEdMX0lOVkFMSURfRU5VTSwgImludGVybmFs
Zm9ybWF0IGlzIG5vdCBhIHN1cHBvcnRlZCBjb21wcmVzc2VkIGludGVybmFsIGZvcm1hdCIpKTsK
LSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIGlmICghVmFs
aWRDb21wcmVzc2VkSW1hZ2VTaXplKGNvbnRleHQsIGFjdHVhbEludGVybmFsRm9ybWF0LCB3aWR0
aCwgaGVpZ2h0KSkKKyAgICAgICAgaWYgKCFWYWxpZENvbXByZXNzZWRJbWFnZVNpemUoY29udGV4
dCwgYWN0dWFsSW50ZXJuYWxGb3JtYXQsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpKQogICAgICAgICB7CiAgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDYwLDE5ICs1MzUsMTkgQEAgYm9vbCBW
YWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAv
LyB2YWxpZGF0ZSA8dHlwZT4gYnkgaXRzZWxmICh1c2VkIGFzIHNlY29uZGFyeSBrZXkgYmVsb3cp
CiAgICAgICAgIHN3aXRjaCAodHlwZSkKICAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfVU5T
SUdORURfQllURToKLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OgotICAg
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNDoKLSAgICAgICAgICBjYXNlIEdM
X1VOU0lHTkVEX1NIT1JUXzVfNV81XzE6Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9S
VDoKLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKLSAgICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX0lOVF8yNF84X09FUzoKLSAgICAgICAgICBjYXNlIEdMX0hBTEZfRkxPQVRfT0VTOgot
ICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV82
XzU6CisgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQ6CisgICAgICAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzE6CisgICAgICAgICAgICBjYXNlIEdM
X1VOU0lHTkVEX1NIT1JUOgorICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAg
ICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVF8yNF84X09FUzoKKyAgICAgICAgICAgIGNhc2Ug
R0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICBjYXNlIEdMX0ZMT0FUOgorICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICAvLyB2YWxpZGF0ZSA8Zm9ybWF0
PiArIDx0eXBlPiBjb21iaW5hdGlvbnMKQEAgLTQ4MCwyMjMgKzU1NSwyMjggQEAgYm9vbCBWYWxp
ZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAvLyAt
IGludmFsaWQgPGZvcm1hdD4rPHR5cGU+IGNvbWJpbmF0aW9uIC0+IHNldHMgSU5WQUxJRF9PUEVS
QVRJT04KICAgICAgICAgc3dpdGNoIChmb3JtYXQpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNl
IEdMX0FMUEhBOgotICAgICAgICAgIGNhc2UgR0xfTFVNSU5BTkNFOgotICAgICAgICAgIGNhc2Ug
R0xfTFVNSU5BTkNFX0FMUEhBOgotICAgICAgICAgICAgc3dpdGNoICh0eXBlKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Ci0gICAgICAgICAgICAg
IGNhc2UgR0xfRkxPQVQ6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6Cisg
ICAgICAgICAgICBjYXNlIEdMX0FMUEhBOgorICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U6
CisgICAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKKyAgICAgICAgICAgICAgICBz
d2l0Y2ggKHR5cGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6Cisg
ICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfUkVEOgotICAgICAg
ICAgIGNhc2UgR0xfUkc6Ci0gICAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLnRleHR1cmVSRykKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgc3dpdGNoICh0
eXBlKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9C
WVRFOgotICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBHTF9IQUxGX0ZMT0FUX09FUzoKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
Y2FzZSBHTF9SR0I6Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAgICAgICAgICAgY2FzZSBH
TF9VTlNJR05FRF9TSE9SVF81XzZfNToKLSAgICAgICAgICAgICAgY2FzZSBHTF9GTE9BVDoKLSAg
ICAgICAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoKKyAgICAgICAgICAgIGNhc2UgR0xf
UkVEOgorICAgICAgICAgICAgY2FzZSBHTF9SRzoKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlUkcpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgR0xfRkxPQVQ6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9P
RVM6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNl
IEdMX1JHQkE6Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAgICAgICAgICAgY2FzZSBHTF9V
TlNJR05FRF9TSE9SVF80XzRfNF80OgotICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NI
T1JUXzVfNV81XzE6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfRkxPQVQ6Ci0gICAgICAgICAgICAg
IGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAgICAgICBjYXNlIEdMX1JHQjoKKyAgICAg
ICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfU0hPUlRfNV82XzU6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfRkxP
QVQ6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfSEFMRl9GTE9BVF9PRVM6CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0JHUkFfRVhU
OgotICAgICAgICAgICAgc3dpdGNoICh0eXBlKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICBjYXNlIEdMX1JHQkE6CisgICAg
ICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQ6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfU0hPUlRfNV81XzVfMToKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9GTE9B
VDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9IQUxGX0ZMT0FUX09FUzoKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfU1JHQl9FWFQ6
Ci0gICAgICAgICAgY2FzZSBHTF9TUkdCX0FMUEhBX0VYVDoKLSAgICAgICAgICAgIGlmICghY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnNSR0IpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3dpdGNo
ICh0eXBlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZ
VEU6CisgICAgICAgICAgICBjYXNlIEdMX0JHUkFfRVhUOgorICAgICAgICAgICAgICAgIHN3aXRj
aCAodHlwZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xf
VU5TSUdORURfQllURToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDogIC8vIGVycm9yIGNh
c2VzIGZvciBjb21wcmVzc2VkIHRleHR1cmVzIGFyZSBoYW5kbGVkIGJlbG93Ci0gICAgICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKLSAgICAgICAgICBjYXNlIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6Ci0gICAgICAgICAgY2FzZSBHTF9DT01Q
UkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlQ6Ci0gICAg
ICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgorICAgICAgICAgICAgY2FzZSBHTF9TUkdC
X0VYVDoKKyAgICAgICAgICAgIGNhc2UgR0xfU1JHQl9BTFBIQV9FWFQ6CisgICAgICAgICAgICAg
ICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuc1JHQikKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJ
TF9PRVM6Ci0gICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UXzI0XzhfT0VTOgorICAgICAgICAgICAgY2FzZSBH
TF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOiAgLy8gZXJyb3IgY2FzZXMgZm9yIGNvbXBy
ZXNzZWQgdGV4dHVyZXMgYXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBoYW5kbGVkIGJlbG93CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBS
RVNTRURfUkdCQV9TM1RDX0RYVDFfRVhUOgorICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQ1X0FOR0xFOgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKQor
ICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9T
SE9SVDoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTF9P
RVM6CisgICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKQorICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfMjRfOF9PRVM6CisgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0pKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIHN3aXRjaCAoZm9ybWF0KQogICAg
ICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgot
ICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6Ci0gICAgICAg
ICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVDb21wcmVzc2lvbkRYVDEp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xF
OgotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJl
c3Npb25EWFQzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
Y2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgorICAgICAgICAgICAgY2FzZSBH
TF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKKyAgICAgICAgICAgICAgICBpZiAoY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVDb21wcmVzc2lvbkRYVDEpCisgICAgICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgorICAgICAgICAgICAgICAgIGlmIChjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUNvbXByZXNzaW9uRFhUMykKKyAgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX0NP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgICAgICAgICAgaWYgKGNvbnRl
eHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQ1KQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgR0xfRVRD
MV9SR0I4X09FUzoKKyAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LmNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmUpCisgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBHTF9FVEMxX1JHQjhfTE9TU1lfREVD
T0RFX0FOR0xFOgorICAgICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQjhfTE9TU1lfREVD
T0RFX0VUQzJfQU5HTEU6CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfTE9T
U1lfREVDT0RFX0VUQzJfQU5HTEU6CisgICAgICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdC
OF9QVU5DSFRIUk9VR0hfQUxQSEExX0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFOgorICAgICAgICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1NSR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfTE9TU1lfREVD
T0RFX0VUQzJfQU5HTEU6CisgICAgICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS5sb3NzeUVUQ0RlY29kZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRVRD
IGxvc3N5IGRlY29kZSBmb3JtYXRzIGNhbid0IHdvcmsgd2l0aCB0aGlzIHR5cGUuIikpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgR0xfSU5W
QUxJRF9FTlVNLCAiQU5HTEVfbG9zc3lfZXRjX2RlY29kZSBleHRlbnNpb24gaXMgbm90IHN1cHBv
cnRlZC4iKSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdMX0RFUFRI
X0NPTVBPTkVOVDoKKyAgICAgICAgICAgIGNhc2UgR0xfREVQVEhfU1RFTkNJTF9PRVM6CisgICAg
ICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVwdGhUZXh0dXJlcykK
KyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0ICE9
IEdMX1RFWFRVUkVfMkQpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIC8vIE9FU19kZXB0aF90ZXh0dXJlIHN1cHBvcnRzIGxvYWRpbmcgZGVwdGggZGF0YSBh
bmQgbXVsdGlwbGUgbGV2ZWxzLAorICAgICAgICAgICAgICAgIC8vIGJ1dCBBTkdMRV9kZXB0aF90
ZXh0dXJlIGRvZXMgbm90CisgICAgICAgICAgICAgICAgaWYgKHBpeGVscyAhPSBOVUxMIHx8IGxl
dmVsICE9IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmICh0eXBlID09IEdMX0ZMT0FUKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlRmxvYXQpCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQ1X0FOR0xFOgotICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQ1KQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfRVRD
MV9SR0I4X09FUzoKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuY29t
cHJlc3NlZEVUQzFSR0I4VGV4dHVyZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0VUQzFfUkdC
OF9MT1NTWV9ERUNPREVfQU5HTEU6Ci0gICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkubG9zc3lFVENEZWNvZGUpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAgIEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFVEMxX1JH
QjhfTE9TU1lfREVDT0RFX0FOR0xFIGNhbid0IHdvcmsgd2l0aCB0aGlzIHR5cGUuIikpOwotICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAi
QU5HTEVfbG9zc3lfZXRjX2RlY29kZSBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZC4iKSk7Ci0g
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9ERVBUSF9DT01QT05FTlQ6Ci0gICAgICAg
ICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX09FUzoKLSAgICAgICAgICAgIGlmICghY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLmRlcHRoVGV4dHVyZXMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlm
ICh0YXJnZXQgIT0gR0xfVEVYVFVSRV8yRCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8v
IE9FU19kZXB0aF90ZXh0dXJlIHN1cHBvcnRzIGxvYWRpbmcgZGVwdGggZGF0YSBhbmQgbXVsdGlw
bGUgbGV2ZWxzLAotICAgICAgICAgICAgLy8gYnV0IEFOR0xFX2RlcHRoX3RleHR1cmUgZG9lcyBu
b3QKLSAgICAgICAgICAgIGlmIChwaXhlbHMgIT0gTlVMTCB8fCBsZXZlbCAhPSAwKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHR5cGUgPT0gR0xfRkxPQVQpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1
cmVGbG9hdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBH
TF9IQUxGX0ZMT0FUX09FUykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkudGV4dHVyZUhhbGZGbG9hdCkKKyAgICAgICAgfQorICAgICAgICBlbHNl
IGlmICh0eXBlID09IEdMX0hBTEZfRkxPQVRfT0VTKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlSGFsZkZsb2F0KQogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTcxMyw0ODAgKzc5
MywxNzcgQEAgYm9vbCBWYWxpZGF0ZUVTMlRleEltYWdlUGFyYW1ldGVycyhDb250ZXh0ICpjb250
ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFZhbGlkYXRlRVMyQ29weVRleEltYWdl
UGFyYW1ldGVycyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNTdWJJbWFnZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBib3JkZXIpCitib29sIFZhbGlkYXRlRVMyVGV4U3RvcmFnZVBhcmFtZXRlcnMoQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGV2
ZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdp
ZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0
KQogewotICAgIGlmICghVmFsaWRUZXh0dXJlMkREZXN0aW5hdGlvblRhcmdldChjb250ZXh0LCB0
YXJnZXQpKQorICAgIGlmICh0YXJnZXQgIT0gR0xfVEVYVFVSRV8yRCAmJiB0YXJnZXQgIT0gR0xf
VEVYVFVSRV9DVUJFX01BUCkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgdGV4dHVyZSB0YXJnZXQiKSk7CisgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgRm9ybWF0IHRleHR1cmVGb3JtYXQgPSBGb3JtYXQ6
OkludmFsaWQoKTsKLSAgICBpZiAoIVZhbGlkYXRlQ29weVRleEltYWdlUGFyYW1ldGVyc0Jhc2Uo
Y29udGV4dCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIGlzU3ViSW1hZ2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhvZmZzZXQsIHlvZmZzZXQs
IDAsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJnRleHR1cmVGb3JtYXQpKQorICAgIGlmICh3aWR0aCA8IDEg
fHwgaGVpZ2h0IDwgMSB8fCBsZXZlbHMgPCAxKQogICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgY29uc3QgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IGNvbnRl
eHQtPmdldEdMU3RhdGUoKS5nZXRSZWFkRnJhbWVidWZmZXIoKTsKLSAgICBHTGVudW0gY29sb3Ji
dWZmZXJGb3JtYXQgICAgICAgICAgID0gZnJhbWVidWZmZXItPmdldFJlYWRDb2xvcmJ1ZmZlcigp
LT5nZXRGb3JtYXQoKS5hc1NpemVkKCk7Ci0gICAgY29uc3QgYXV0byAmZm9ybWF0SW5mbyAgICAg
ICAgICAgICA9ICp0ZXh0dXJlRm9ybWF0LmluZm87CisgICAgaWYgKHRhcmdldCA9PSBHTF9URVhU
VVJFX0NVQkVfTUFQICYmIHdpZHRoICE9IGhlaWdodCkKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KIAotICAgIC8vIFtPcGVuR0wgRVMgMi4wLjI0XSB0YWJsZSAzLjkKLSAgICBp
ZiAoaXNTdWJJbWFnZSkKKyAgICBpZiAobGV2ZWxzICE9IDEgJiYgbGV2ZWxzICE9IGdsOjpsb2cy
KHN0ZDo6bWF4KHdpZHRoLCBoZWlnaHQpKSArIDEpCiAgICAgewotICAgICAgICBzd2l0Y2ggKGZv
cm1hdEluZm8uZm9ybWF0KQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9BTFBIQToKLSAg
ICAgICAgICAgIGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9BTFBIQThfRVhUICYmCi0gICAg
ICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTQgJiYKLSAgICAgICAgICAg
ICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0ExICYmCi0gICAgICAgICAgICAgICAg
Y29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U6Ci0gICAgICAgICAgICAg
IGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SOF9FWFQgJiYKLSAgICAgICAgICAgICAgICAg
IGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHOF9FWFQgJiYKLSAgICAgICAgICAgICAgICAgIGNv
bG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjU2NSAmJgotICAgICAgICAgICAgICAgICAgY29sb3Ji
dWZmZXJGb3JtYXQgIT0gR0xfUkdCOF9PRVMgJiYKLSAgICAgICAgICAgICAgICAgIGNvbG9yYnVm
ZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZv
cm1hdCAhPSBHTF9SR0I1X0ExICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1h
dCAhPSBHTF9SR0JBOF9PRVMpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9SRURfRVhUOgotICAgICAgICAgICAgICBpZiAoY29s
b3JidWZmZXJGb3JtYXQgIT0gR0xfUjhfRVhUICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1
ZmZlckZvcm1hdCAhPSBHTF9SRzhfRVhUICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZl
ckZvcm1hdCAhPSBHTF9SR0I1NjUgJiYKLSAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9y
bWF0ICE9IEdMX1JHQjhfT0VTICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1h
dCAhPSBHTF9SR0JBNCAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0g
R0xfUkdCNV9BMSAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xf
UkdCQThfT0VTICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9S
MzJGICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SRzMyRiAm
JgotICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCMzJGICYmCi0g
ICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0JBMzJGKQotICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xf
UkdfRVhUOgotICAgICAgICAgICAgICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkc4X0VY
VCAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNTY1ICYm
Ci0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I4X09FUyAmJgot
ICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTQgJiYKLSAgICAg
ICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjVfQTEgJiYKLSAgICAgICAg
ICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUyAmJgotICAgICAgICAg
ICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkczMkYgJiYKLSAgICAgICAgICAgICAg
ICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjMyRiAmJgotICAgICAgICAgICAgICAgICAg
Y29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTMyRikKLSAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX1JHQjoKLSAgICAgICAgICAg
IGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1NjUgJiYKLSAgICAgICAgICAgICAgICBj
b2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I4X09FUyAmJgotICAgICAgICAgICAgICAgIGNvbG9y
YnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmCi0gICAgICAgICAgICAgICAgY29sb3JidWZmZXJG
b3JtYXQgIT0gR0xfUkdCNV9BMSAmJgotICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0
ICE9IEdMX1JHQkE4X09FUyAmJgotICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9
IEdMX1JHQjMyRiAmJgotICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JH
QkEzMkYpCisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBnbDo6
SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGlu
dGVybmFsZm9ybWF0KTsKKyAgICBpZiAoZm9ybWF0SW5mby5mb3JtYXQgPT0gR0xfTk9ORSB8fCBm
b3JtYXRJbmZvLnR5cGUgPT0gR0xfTk9ORSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgY29uc3QgZ2w6OkNhcHMgJmNhcHMgPSBjb250ZXh0LT5nZXRDYXBzKCk7CisK
KyAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoK
KyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KHdpZHRoKSA+IGNhcHMubWF4MkRU
ZXh0dXJlU2l6ZSB8fAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4oaGVpZ2h0
KSA+IGNhcHMubWF4MkRUZXh0dXJlU2l6ZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUp
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKLSAgICAgICAg
ICBjYXNlIEdMX1JHQkE6Ci0gICAgICAgICAgICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xf
UkdCQTQgJiYKLSAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SR0I1X0Ex
ICYmCi0gICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQThfT0VTICYm
Ci0gICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCQTMyRikKKyAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQOgorICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0
PEdMdWludD4od2lkdGgpID4gY2Fwcy5tYXhDdWJlTWFwVGV4dHVyZVNpemUgfHwKKyAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGhlaWdodCkgPiBjYXBzLm1heEN1YmVNYXBUZXh0
dXJlU2l6ZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOworICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6Ci0gICAgICAgICAgY2Fz
ZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKLSAgICAgICAgICBjYXNlIEdMX0NP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6Ci0gICAgICAgICAgY2FzZSBHTF9DT01QUkVT
U0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgotICAgICAgICAgIGNhc2UgR0xfRVRDMV9SR0I4X09F
UzoKLSAgICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEU6Ci0gICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgY2FzZSBHTF9ERVBUSF9D
T01QT05FTlQ6Ci0gICAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lMX09FUzoKLSAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
KyAgICB9CiAKLSAgICAgICAgaWYgKGZvcm1hdEluZm8udHlwZSA9PSBHTF9GTE9BVCAmJiAhY29u
dGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVGbG9hdCkKKyAgICBpZiAobGV2ZWxzICE9IDEg
JiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlTlBPVCkKKyAgICB7CisgICAgICAg
IGlmICghZ2w6OmlzUG93Mih3aWR0aCkgfHwgIWdsOjppc1BvdzIoaGVpZ2h0KSkKICAgICAgICAg
ewogICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KLSAg
ICBlbHNlCisKKyAgICBzd2l0Y2ggKGludGVybmFsZm9ybWF0KQogICAgIHsKLSAgICAgICAgc3dp
dGNoIChpbnRlcm5hbGZvcm1hdCkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfQUxQSEE6
Ci0gICAgICAgICAgICBpZiAoY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfQUxQSEE4X0VYVCAmJgot
ICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmCi0gICAgICAg
ICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9BMSAmJgotICAgICAgICAgICAg
ICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUkE4X0VYVCAmJgotICAgICAgICAgICAgICAg
IGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUyAmJgotICAgICAgICAgICAgICAgIGNv
bG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQorICAgICAgICBjYXNlIEdMX0NP
TVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQ6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUMV9FWFQ6CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lv
bnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQxKQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Cisg
ICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0U6Ci0gICAgICAgICAgICAg
IGlmIChjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9SOF9FWFQgJiYKLSAgICAgICAgICAgICAgICAg
IGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHOF9FWFQgJiYKLSAgICAgICAgICAgICAgICAgIGNv
bG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQjU2NSAmJgotICAgICAgICAgICAgICAgICAgY29sb3Ji
dWZmZXJGb3JtYXQgIT0gR0xfUkdCOF9PRVMgJiYKLSAgICAgICAgICAgICAgICAgIGNvbG9yYnVm
ZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZv
cm1hdCAhPSBHTF9SR0I1X0ExICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1h
dCAhPSBHTF9CR1JBOF9FWFQgJiYKLSAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0
ICE9IEdMX1JHQkE4X09FUyAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQg
IT0gR0xfQkdSNV9BMV9BTkdMRVgpCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9SRURfRVhUOgotICAgICAgICAgICAgICBpZiAo
Y29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUjhfRVhUICYmCi0gICAgICAgICAgICAgICAgICBjb2xv
cmJ1ZmZlckZvcm1hdCAhPSBHTF9SRzhfRVhUICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1
ZmZlckZvcm1hdCAhPSBHTF9SR0I1NjUgJiYKLSAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVy
Rm9ybWF0ICE9IEdMX1JHQjhfT0VTICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZv
cm1hdCAhPSBHTF9SR0JBNCAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQg
IT0gR0xfUkdCNV9BMSAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0g
R0xfQkdSQThfRVhUICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBH
TF9SR0JBOF9PRVMgJiYKLSAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdM
X0JHUjVfQTFfQU5HTEVYKQotICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgIGNhc2UgR0xfUkdfRVhUOgotICAgICAgICAgICAgICBpZiAoY29sb3Ji
dWZmZXJGb3JtYXQgIT0gR0xfUkc4X0VYVCAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZm
ZXJGb3JtYXQgIT0gR0xfUkdCNTY1ICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZv
cm1hdCAhPSBHTF9SR0I4X09FUyAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3Jt
YXQgIT0gR0xfUkdCQTQgJiYKLSAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9
IEdMX1JHQjVfQTEgJiYKLSAgICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdM
X0JHUkE4X0VYVCAmJgotICAgICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xf
UkdCQThfT0VTICYmCi0gICAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAhPSBHTF9C
R1I1X0ExX0FOR0xFWCkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICBjYXNlIEdMX1JHQjoKLSAgICAgICAgICAgIGlmIChjb2xvcmJ1ZmZlckZv
cm1hdCAhPSBHTF9SR0I1NjUgJiYKLSAgICAgICAgICAgICAgICBjb2xvcmJ1ZmZlckZvcm1hdCAh
PSBHTF9SR0I4X09FUyAmJgotICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdM
X1JHQkE0ICYmCi0gICAgICAgICAgICAgICAgY29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9B
MSAmJgotICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUkE4X0VYVCAm
JgotICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUyAmJgot
ICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQor
ICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6CisgICAgICAg
ICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQz
KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2Fz
ZSBHTF9MVU1JTkFOQ0VfQUxQSEE6Ci0gICAgICAgICAgY2FzZSBHTF9SR0JBOgotICAgICAgICAg
ICAgaWYgKGNvbG9yYnVmZmVyRm9ybWF0ICE9IEdMX1JHQkE0ICYmCi0gICAgICAgICAgICAgICAg
Y29sb3JidWZmZXJGb3JtYXQgIT0gR0xfUkdCNV9BMSAmJgotICAgICAgICAgICAgICAgIGNvbG9y
YnVmZmVyRm9ybWF0ICE9IEdMX0JHUkE4X0VYVCAmJgotICAgICAgICAgICAgICAgIGNvbG9yYnVm
ZmVyRm9ybWF0ICE9IEdMX1JHQkE4X09FUyAmJgotICAgICAgICAgICAgICAgIGNvbG9yYnVmZmVy
Rm9ybWF0ICE9IEdMX0JHUjVfQTFfQU5HTEVYKQorICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDVfQU5HTEU6CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVu
c2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQ1KQogICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RY
VDFfRVhUOgotICAgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQ6
Ci0gICAgICAgICAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVDb21wcmVz
c2lvbkRYVDEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgIGNhc2Ug
R0xfRVRDMV9SR0I4X09FUzoKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLmNvbXByZXNzZWRFVEMxUkdCOFRleHR1cmUpCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0FOR0xFOgot
ICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Np
b25EWFQzKQorICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEU6Cisg
ICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0I4X0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFOgor
ICAgICAgICBjYXNlIEdMX0NPTVBSRVNTRURfU1JHQjhfTE9TU1lfREVDT0RFX0VUQzJfQU5HTEU6
CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9SR0I4X1BVTkNIVEhST1VHSF9BTFBIQTFfTE9T
U1lfREVDT0RFX0VUQzJfQU5HTEU6CisgICAgICAgIGNhc2UgR0xfQ09NUFJFU1NFRF9TUkdCOF9Q
VU5DSFRIUk9VR0hfQUxQSEExX0xPU1NZX0RFQ09ERV9FVEMyX0FOR0xFOgorICAgICAgICAgICAg
aWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubG9zc3lFVENEZWNvZGUpCiAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAg
ICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiQU5HTEVfbG9zc3lfZXRj
X2RlY29kZSBleHRlbnNpb24gaXMgbm90IHN1cHBvcnRlZC4iKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfUkdCQTMyRl9FWFQ6CisgICAgICAgIGNhc2UgR0xf
UkdCMzJGX0VYVDoKKyAgICAgICAgY2FzZSBHTF9BTFBIQTMyRl9FWFQ6CisgICAgICAgIGNhc2Ug
R0xfTFVNSU5BTkNFMzJGX0VYVDoKKyAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZf
RVhUOgorICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkudGV4dHVyZUZs
b2F0KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUNV9BTkdMRToKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkudGV4dHVyZUNvbXByZXNzaW9uRFhUNSkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJB
VElPTikpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgY2FzZSBHTF9SR0JBMTZGX0VYVDoKKyAgICAgICAgY2Fz
ZSBHTF9SR0IxNkZfRVhUOgorICAgICAgICBjYXNlIEdMX0FMUEhBMTZGX0VYVDoKKyAgICAgICAg
Y2FzZSBHTF9MVU1JTkFOQ0UxNkZfRVhUOgorICAgICAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBI
QTE2Rl9FWFQ6CisgICAgICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0
dXJlSGFsZkZsb2F0KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNh
c2UgR0xfRVRDMV9SR0I4X09FUzoKLSAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkuY29tcHJlc3NlZEVUQzFSR0I4VGV4dHVyZSkKKyAgICAgICAgY2FzZSBHTF9SOF9FWFQ6
CisgICAgICAgIGNhc2UgR0xfUkc4X0VYVDoKKyAgICAgICAgY2FzZSBHTF9SMTZGX0VYVDoKKyAg
ICAgICAgY2FzZSBHTF9SRzE2Rl9FWFQ6CisgICAgICAgIGNhc2UgR0xfUjMyRl9FWFQ6CisgICAg
ICAgIGNhc2UgR0xfUkczMkZfRVhUOgorICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkudGV4dHVyZVJHKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CisgICAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6
CisgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTOgorICAgICAgICBjYXNlIEdM
X0RFUFRIMjRfU1RFTkNJTDhfT0VTOgorICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkuZGVwdGhUZXh0dXJlcykKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICBjYXNlIEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEU6Ci0gICAgICAgICAg
ICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkubG9zc3lFVENEZWNvZGUpCi0gICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkVUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEUgY2FuJ3QgYmUgY29waWVkIHRv
LiIpKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFM
SURfRU5VTSwgIkFOR0xFX2xvc3N5X2V0Y19kZWNvZGUgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0
ZWQuIikpOwotICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5U
OgotICAgICAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMTY6Ci0gICAgICAgICAgY2FzZSBH
TF9ERVBUSF9DT01QT05FTlQzMl9PRVM6Ci0gICAgICAgICAgY2FzZSBHTF9ERVBUSF9TVEVOQ0lM
X09FUzoKLSAgICAgICAgICBjYXNlIEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTOgotICAgICAgICAg
ICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5kZXB0aFRleHR1cmVzKQorICAgICAgICAg
ICAgaWYgKHRhcmdldCAhPSBHTF9URVhUVVJFXzJEKQogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgLy8gQU5HTEVfZGVwdGhfdGV4dHVyZSBvbmx5IHN1cHBvcnRz
IDEtbGV2ZWwgdGV4dHVyZXMKKyAgICAgICAgICAgIGlmIChsZXZlbHMgIT0gMSkKICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0pKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIElmIHdpZHRoIG9yIGhlaWdodCBpcyB6
ZXJvLCBpdCBpcyBhIG5vLW9wLiAgUmV0dXJuIGZhbHNlIHdpdGhvdXQgc2V0dGluZyBhbiBlcnJv
ci4KLSAgICByZXR1cm4gKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwKTsKLX0KLQotYm9vbCBWYWxp
ZGF0ZUVTMlRleFN0b3JhZ2VQYXJhbWV0ZXJzKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJn
ZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCi17
Ci0gICAgaWYgKHRhcmdldCAhPSBHTF9URVhUVVJFXzJEICYmIHRhcmdldCAhPSBHTF9URVhUVVJF
X0NVQkVfTUFQKQotICAgIHsKLSAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAo
d2lkdGggPCAxIHx8IGhlaWdodCA8IDEgfHwgbGV2ZWxzIDwgMSkKLSAgICB7Ci0gICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV9DVUJFX01B
UCAmJiB3aWR0aCAhPSBoZWlnaHQpCi0gICAgewotICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9
Ci0KLSAgICBpZiAobGV2ZWxzICE9IDEgJiYgbGV2ZWxzICE9IGdsOjpsb2cyKHN0ZDo6bWF4KHdp
ZHRoLCBoZWlnaHQpKSArIDEpCi0gICAgewotICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgY29uc3QgZ2w6OkludGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6OkdldElu
dGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbGZvcm1hdCk7Ci0gICAgaWYgKGZvcm1hdEluZm8uZm9y
bWF0ID09IEdMX05PTkUgfHwgZm9ybWF0SW5mby50eXBlID09IEdMX05PTkUpCi0gICAgewotICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGNvbnN0IGdsOjpDYXBzICZjYXBzID0gY29u
dGV4dC0+Z2V0Q2FwcygpOwotCi0gICAgc3dpdGNoICh0YXJnZXQpCi0gICAgewotICAgICAgY2Fz
ZSBHTF9URVhUVVJFXzJEOgotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50Pih3aWR0aCkg
PiBjYXBzLm1heDJEVGV4dHVyZVNpemUgfHwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEdMdWlu
dD4oaGVpZ2h0KSA+IGNhcHMubWF4MkRUZXh0dXJlU2l6ZSkKLSAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2Fz
ZSBHTF9URVhUVVJFX0NVQkVfTUFQOgotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50Pih3
aWR0aCkgPiBjYXBzLm1heEN1YmVNYXBUZXh0dXJlU2l6ZSB8fAotICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8R0x1aW50PihoZWlnaHQpID4gY2Fwcy5tYXhDdWJlTWFwVGV4dHVyZVNpemUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
VkFMVUUpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBi
cmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAg
ICBpZiAobGV2ZWxzICE9IDEgJiYgIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlTlBP
VCkKLSAgICB7Ci0gICAgICAgIGlmICghZ2w6OmlzUG93Mih3aWR0aCkgfHwgIWdsOjppc1BvdzIo
aGVpZ2h0KSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIHN3aXRjaCAoaW50ZXJuYWxmb3JtYXQpCi0gICAgewotICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUOgotICAgICAgY2FzZSBHTF9D
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDoKLSAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRF
eHRlbnNpb25zKCkudGV4dHVyZUNvbXByZXNzaW9uRFhUMSkKLSAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNl
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDNfQU5HTEU6Ci0gICAgICAgIGlmICghY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLnRleHR1cmVDb21wcmVzc2lvbkRYVDMpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAg
ICAgY2FzZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0FOR0xFOgotICAgICAgICBpZiAo
IWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlQ29tcHJlc3Npb25EWFQ1KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBicmVh
azsKLSAgICAgIGNhc2UgR0xfRVRDMV9SR0I4X09FUzoKLSAgICAgICAgaWYgKCFjb250ZXh0LT5n
ZXRFeHRlbnNpb25zKCkuY29tcHJlc3NlZEVUQzFSR0I4VGV4dHVyZSkKLSAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAg
ICBjYXNlIEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEU6Ci0gICAgICAgICAgaWYgKCFj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkubG9zc3lFVENEZWNvZGUpCi0gICAgICAgICAgewotICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKLSAgICAgICAgICAgICAgICAgIEVycm9y
KEdMX0lOVkFMSURfRU5VTSwgIkFOR0xFX2xvc3N5X2V0Y19kZWNvZGUgZXh0ZW5zaW9uIGlzIG5v
dCBzdXBwb3J0ZWQuIikpOwotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
fQotICAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9SR0JBMzJGX0VYVDoKLSAgICAgIGNh
c2UgR0xfUkdCMzJGX0VYVDoKLSAgICAgIGNhc2UgR0xfQUxQSEEzMkZfRVhUOgotICAgICAgY2Fz
ZSBHTF9MVU1JTkFOQ0UzMkZfRVhUOgotICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEEzMkZf
RVhUOgotICAgICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlRmxvYXQp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAg
ICAgIGJyZWFrOwotICAgICAgY2FzZSBHTF9SR0JBMTZGX0VYVDoKLSAgICAgIGNhc2UgR0xfUkdC
MTZGX0VYVDoKLSAgICAgIGNhc2UgR0xfQUxQSEExNkZfRVhUOgotICAgICAgY2FzZSBHTF9MVU1J
TkFOQ0UxNkZfRVhUOgotICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEExNkZfRVhUOgotICAg
ICAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlSGFsZkZsb2F0KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBi
cmVhazsKLSAgICAgIGNhc2UgR0xfUjhfRVhUOgotICAgICAgY2FzZSBHTF9SRzhfRVhUOgotICAg
ICAgY2FzZSBHTF9SMTZGX0VYVDoKLSAgICAgIGNhc2UgR0xfUkcxNkZfRVhUOgotICAgICAgY2Fz
ZSBHTF9SMzJGX0VYVDoKLSAgICAgIGNhc2UgR0xfUkczMkZfRVhUOgotICAgICAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS50ZXh0dXJlUkcpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBH
TF9ERVBUSF9DT01QT05FTlQxNjoKLSAgICAgIGNhc2UgR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VT
OgotICAgICAgY2FzZSBHTF9ERVBUSDI0X1NURU5DSUw4X09FUzoKLSAgICAgICAgaWYgKCFjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkuZGVwdGhUZXh0dXJlcykKLSAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHRhcmdldCAhPSBHTF9U
RVhUVVJFXzJEKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICB9Ci0gICAgICAgIC8vIEFOR0xFX2RlcHRoX3RleHR1cmUgb25seSBzdXBwb3J0cyAx
LWxldmVsIHRleHR1cmVzCi0gICAgICAgIGlmIChsZXZlbHMgIT0gMSkKLSAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsK
LSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKICAgICB9CiAKICAgICBnbDo6VGV4dHVy
ZSAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKQEAgLTEyMDUs
NyArOTgyLDkgQEAgYm9vbCBWYWxpZGF0ZUVTMlRleFN0b3JhZ2VQYXJhbWV0ZXJzKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGUKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBWYWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckVYVChDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLAorYm9vbCBWYWxpZGF0ZURpc2Nh
cmRGcmFtZWJ1ZmZlckVYVChDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIG51bUF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQogewogICAgIGlmICghY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmRpc2NhcmRGcmFtZWJ1ZmZlcikKQEAgLTEyMTgsMTYgKzk5Nywx
NyBAQCBib29sIFZhbGlkYXRlRGlzY2FyZEZyYW1lYnVmZmVyRVhUKENvbnRleHQgKmNvbnRleHQs
IEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbnVtQQogCiAgICAgc3dpdGNoICh0YXJnZXQpCiAgICAg
ewotICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUjoKLSAgICAgICAgICBkZWZhdWx0RnJhbWVidWZm
ZXIgPQotICAgICAgICAgICAgICAoY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFRhcmdldEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSKS0+aWQoKSA9PSAwKTsKLSAgICAgICAgICBicmVhazsKLSAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNLCAiSW52YWxpZCBmcmFtZWJ1ZmZlciB0YXJnZXQiKSk7Ci0gICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUjoKKyAgICAgICAgICAgIGRlZmF1
bHRGcmFtZWJ1ZmZlciA9CisgICAgICAgICAgICAgICAgKGNvbnRleHQtPmdldEdMU3RhdGUoKS5n
ZXRUYXJnZXRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiktPmlkKCkgPT0gMCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgZnJhbWVidWZmZXIgdGFyZ2V0
IikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJldHVybiBWYWxp
ZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckJhc2UoY29udGV4dCwgdGFyZ2V0LCBudW1BdHRhY2htZW50
cywgYXR0YWNobWVudHMsIGRlZmF1bHRGcmFtZWJ1ZmZlcik7CisgICAgcmV0dXJuIFZhbGlkYXRl
RGlzY2FyZEZyYW1lYnVmZmVyQmFzZShjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBh
dHRhY2htZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHRGcmFtZWJ1ZmZlcik7CiB9CiAKIGJvb2wgVmFsaWRhdGVCaW5kVmVydGV4QXJyYXlPRVMo
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGFycmF5KQpAQCAtMTg5MCw3ICsxNjcwLDcgQEAgYm9v
bCBWYWxpZGF0ZUJsaXRGcmFtZWJ1ZmZlckFOR0xFKENvbnRleHQgKmNvbnRleHQsCiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAocmVhZEZyYW1lYnVm
ZmVyLT5nZXRTYW1wbGVzKGNvbnRleHQtPmdldENvbnRleHRTdGF0ZSgpKSAhPSAwICYmCisgICAg
ICAgICAgICBpZiAocmVhZEZyYW1lYnVmZmVyLT5nZXRTYW1wbGVzKGNvbnRleHQpICE9IDAgJiYK
ICAgICAgICAgICAgICAgICBJc1BhcnRpYWxCbGl0KGNvbnRleHQsIHJlYWRDb2xvckF0dGFjaG1l
bnQsIGRyYXdDb2xvckF0dGFjaG1lbnQsIHNyY1gwLCBzcmNZMCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNyY1gxLCBzcmNZMSwgZHN0WDAsIGRzdFkwLCBkc3RYMSwgZHN0WTEpKQog
ICAgICAgICAgICAgewpAQCAtMTkxNywxMCArMTY5Nyw5IEBAIGJvb2wgVmFsaWRhdGVCbGl0RnJh
bWVidWZmZXJBTkdMRShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRzdFgwLCBkc3RZMCwgZHN0WDEsIGRzdFkxKSkKICAgICAgICAgICAgICAgICB7
CiAgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgd2hvbGUtYnVmZmVyIGNvcGllcyBhcmUgcGVy
bWl0dGVkCi0gICAgICAgICAgICAgICAgICAgIEVSUigKLSAgICAgICAgICAgICAgICAgICAgICAg
ICJPbmx5IHdob2xlLWJ1ZmZlciBkZXB0aCBhbmQgc3RlbmNpbCBibGl0cyBhcmUgc3VwcG9ydGVk
IGJ5IHRoaXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgImltcGxlbWVudGF0aW9uLiIpOwot
ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTikpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIk9ubHkgd2hvbGUtYnVmZmVyIGRlcHRoIGFuZCBzdGVuY2lsIGJs
aXRzIGFyZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJzdXBwb3J0ZWQgYnkgdGhpcyBleHRlbnNpb24uIikpOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogCkBAIC0xOTQwLDcgKzE3MTksNyBAQCBi
b29sIFZhbGlkYXRlQmxpdEZyYW1lYnVmZmVyQU5HTEUoQ29udGV4dCAqY29udGV4dCwKIGJvb2wg
VmFsaWRhdGVDbGVhcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xiaXRmaWVsZCBtYXNr
KQogewogICAgIGF1dG8gZmJvID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldERyYXdGcmFtZWJ1
ZmZlcigpOwotICAgIGlmIChmYm8tPmNoZWNrU3RhdHVzKGNvbnRleHQtPmdldENvbnRleHRTdGF0
ZSgpKSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICBpZiAoZmJvLT5jaGVja1N0YXR1
cyhjb250ZXh0KSAhPSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKICAgICB7CiAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9O
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5NTIsNiArMTczMSwyMiBAQCBib29sIFZh
bGlkYXRlQ2xlYXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMYml0ZmllbGQgbWFzaykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGlmIChjb250ZXh0LT5nZXRFeHRl
bnNpb25zKCkud2ViZ2xDb21wYXRpYmlsaXR5ICYmIChtYXNrICYgR0xfQ09MT1JfQlVGRkVSX0JJ
VCkgIT0gMCkKKyAgICB7CisgICAgICAgIGNvbnN0ZXhwciBHTGVudW0gdmFsaWRDb21wb25lbnRU
eXBlc1tdID0ge0dMX0ZMT0FULCBHTF9VTlNJR05FRF9OT1JNQUxJWkVELAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9TSUdORURfTk9STUFMSVpF
RH07CisKKyAgICAgICAgZm9yIChHTHVpbnQgZHJhd0J1ZmZlcklkeCA9IDA7IGRyYXdCdWZmZXJJ
ZHggPCBjb250ZXh0LT5nZXRDYXBzKCkubWF4RHJhd0J1ZmZlcnM7CisgICAgICAgICAgICAgZHJh
d0J1ZmZlcklkeCsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIVZhbGlkYXRlV2ViR0xG
cmFtZWJ1ZmZlckF0dGFjaG1lbnRDbGVhclR5cGUoCisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQsIGRyYXdCdWZmZXJJZHgsIHZhbGlkQ29tcG9uZW50VHlwZXMsIEFycmF5U2l6ZSh2YWxpZENv
bXBvbmVudFR5cGVzKSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKQEAgLTIyODIsOCArMjA3NywxNyBAQCBib29sIFZhbGlkYXRlQmluZFRleHR1cmUoQ29u
dGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IHRleHR1cmUpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVM6Ci0gICAgICAgICAgICBpZiAoIWNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS5lZ2xJbWFnZUV4dGVybmFsICYmCisKKyAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFXzJEX01VTFRJU0FNUExFOgorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdl
dENsaWVudFZlcnNpb24oKSA8IFZlcnNpb24oMywgMSkpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiQ29u
dGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLjEiKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX0VYVEVSTkFMX09FUzoKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLmVnbEltYWdlRXh0ZXJuYWwgJiYKICAgICAgICAgICAgICAgICAhY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpLmVnbFN0cmVhbUNvbnN1bWVyRXh0ZXJuYWwpCiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCkBAIC0zMTMzLDggKzI5
MzcsOSBAQCBib29sIFZhbGlkYXRlUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuKENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgZXhwZWN0ZWRDb21wb25lbnRzID0gNDsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCi0gICAgICAg
ICAgICAgICAgICAgICJGcmFnbWVudCBpbnB1dCB0eXBlIGlzIG5vdCBhIGZsb2F0aW5nIHBvaW50
IHNjYWxhciBvciB2ZWN0b3IuIikpOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKAorICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkZyYWdtZW50IGlucHV0IHR5cGUgaXMgbm90IGEgZmxv
YXRpbmcgcG9pbnQgc2NhbGFyIG9yIHZlY3Rvci4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlmIChleHBlY3RlZENvbXBvbmVudHMgIT0gY29t
cG9uZW50cyAmJiBnZW5Nb2RlICE9IEdMX05PTkUpCkBAIC0zMTQ4LDcgKzI5NTMsMTAgQEAgYm9v
bCBWYWxpZGF0ZVByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbihDb250ZXh0ICpjb250ZXh0LAog
CiBib29sIFZhbGlkYXRlQ29weVRleHR1cmVDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNvdXJjZUlkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc291cmNlTGV2ZWwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFRhcmdldCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCBkZXN0SWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGludCBkZXN0TGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBpbnRlcm5hbEZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBkZXN0VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9v
bGVhbiB1bnBhY2tGbGlwWSwKQEAgLTMyMjYsNyArMzAzNCwxMCBAQCBib29sIFZhbGlkYXRlQ29w
eVRleHR1cmVDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAogCiBib29sIFZhbGlkYXRlQ29weVN1
YlRleHR1cmVDSFJPTUlVTShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgc291cmNlTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gZGVzdFRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBkZXN0SWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCBkZXN0TGV2ZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCB4b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHgs
CkBAIC0zMzA5LDcgKzMxMjAsNiBAQCBib29sIFZhbGlkYXRlQ29weVN1YlRleHR1cmVDSFJPTUlV
TShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAg
R0xlbnVtIGRlc3RUYXJnZXQgPSBkZXN0LT5nZXRUYXJnZXQoKTsKICAgICBBU1NFUlQoZGVzdFRh
cmdldCAhPSBHTF9URVhUVVJFX0NVQkVfTUFQKTsKICAgICBpZiAoZGVzdC0+Z2V0V2lkdGgoc291
cmNlVGFyZ2V0LCAwKSA9PSAwIHx8IGRlc3QtPmdldEhlaWdodChzb3VyY2VUYXJnZXQsIDApID09
IDApCiAgICAgewpAQCAtMzQxMywxMyArMzIyMywxOCBAQCBib29sIFZhbGlkYXRlQ3JlYXRlU2hh
ZGVyKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0eXBlKQogICAgICAgICBjYXNlIEdMX1ZFUlRF
WF9TSEFERVI6CiAgICAgICAgIGNhc2UgR0xfRlJBR01FTlRfU0hBREVSOgogICAgICAgICAgICAg
YnJlYWs7CisKICAgICAgICAgY2FzZSBHTF9DT01QVVRFX1NIQURFUjoKLSAgICAgICAgICAgIGlm
IChjb250ZXh0LT5nZXRHTFZlcnNpb24oKS5pc0VTMzEoKSkKKyAgICAgICAgICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBWZXJzaW9uKDMsIDEpKQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKAorICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX0VOVU0sICJHTF9DT01Q
VVRFX1NIQURFUiByZXF1aXJlcyBPcGVuR0wgRVMgMy4xLiIpKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKwogICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0sICJVbmtub3duIHNoYWRlciB0eXBlLiIpKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKQEAgLTM1MzAsMjAgKzMzNDUsMjAgQEAgYm9vbCBWYWxpZGF0ZUJ1
ZmZlclN1YkRhdGEoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgVmFsaWRhdGVFbmFibGVFeHRlbnNpb25BTkdMRShWYWxpZGF0aW9uQ29udGV4
dCAqY29udGV4dCwgY29uc3QgR0xjaGFyICpuYW1lKQorYm9vbCBWYWxpZGF0ZVJlcXVlc3RFeHRl
bnNpb25BTkdMRShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xjaGFyICpuYW1l
KQogewotICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLndlYmdsQ29tcGF0aWJpbGl0
eSkKKyAgICBpZiAoIWNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS5yZXF1ZXN0RXh0ZW5zaW9uKQog
ICAgIHsKICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCi0gICAgICAgICAgICBFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgIkdMX0FOR0xFX3dlYmdsX2NvbXBhdGliaWxpdHkgaXMgbm90
IGF2YWlsYWJsZS4iKSk7CisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
IkdMX0FOR0xFX3JlcXVlc3RfZXh0ZW5zaW9uIGlzIG5vdCBhdmFpbGFibGUuIikpOwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgY29uc3QgRXh0ZW5zaW9uSW5mb01hcCAmZXh0
ZW5zaW9uSW5mb3MgPSBHZXRFeHRlbnNpb25JbmZvTWFwKCk7CiAgICAgYXV0byBleHRlbnNpb24g
ICAgICAgICAgICAgICAgICAgICAgICAgPSBleHRlbnNpb25JbmZvcy5maW5kKG5hbWUpOwotICAg
IGlmIChleHRlbnNpb24gPT0gZXh0ZW5zaW9uSW5mb3MuZW5kKCkgfHwgIWV4dGVuc2lvbi0+c2Vj
b25kLkVuYWJsZWFibGUpCisgICAgaWYgKGV4dGVuc2lvbiA9PSBleHRlbnNpb25JbmZvcy5lbmQo
KSB8fCAhZXh0ZW5zaW9uLT5zZWNvbmQuUmVxdWVzdGFibGUpCiAgICAgewotICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkV4dGVuc2lvbiAl
cyBpcyBub3QgZW5hYmxlYWJsZS4iLCBuYW1lKSk7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRXh0ZW5zaW9uICVzIGlzIG5vdCByZXF1
ZXN0YWJsZS4iLCBuYW1lKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTM2
MTMsNCArMzQyOCwxNDA3IEBAIGJvb2wgVmFsaWRhdGVBdHRhY2hTaGFkZXIoVmFsaWRhdGlvbkNv
bnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK2Jvb2wgVmFsaWRhdGVCaW5kQXR0cmliTG9jYXRpb24oVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9n
cmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSkKK3sKKyAgICBp
ZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIkluZGV4IGV4Y2VlZHMgTUFYX1ZF
UlRFWF9BVFRSSUJTIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYg
KHN0cm5jbXAobmFtZSwgImdsXyIsIDMpID09IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNhbm5vdCBCaW5kIGJ1aWx0
LWluIGF0dHJpYnV0ZXMiKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gR2V0VmFsaWRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pICE9IG51bGxwdHI7Cit9CisK
K2Jvb2wgVmFsaWRhdGVCaW5kQnVmZmVyKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGFyZ2V0LCBHTHVpbnQgYnVmZmVyKQoreworICAgIGlmICghVmFsaWRCdWZmZXJUYXJnZXQo
Y29udGV4dCwgdGFyZ2V0KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgQnVmZmVyIHRhcmdldCIpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmlz
QmluZEdlbmVyYXRlc1Jlc291cmNlRW5hYmxlZCgpICYmCisgICAgICAgICFjb250ZXh0LT5pc0J1
ZmZlckdlbmVyYXRlZChidWZmZXIpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJCdWZmZXIgd2FzIG5vdCBnZW5lcmF0ZWQi
KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBWYWxpZGF0ZUJpbmRGcmFtZWJ1ZmZlcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4
dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGZyYW1lYnVmZmVyKQoreworICAgIGlmICghVmFsaWRG
cmFtZWJ1ZmZlclRhcmdldCh0YXJnZXQpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBGcmFtZWJ1ZmZlciB0YXJnZXQi
KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIWNvbnRleHQtPmdl
dEdMU3RhdGUoKS5pc0JpbmRHZW5lcmF0ZXNSZXNvdXJjZUVuYWJsZWQoKSAmJgorICAgICAgICAh
Y29udGV4dC0+aXNGcmFtZWJ1ZmZlckdlbmVyYXRlZChmcmFtZWJ1ZmZlcikpCisgICAgeworICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkZy
YW1lYnVmZmVyIHdhcyBub3QgZ2VuZXJhdGVkIikpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVCaW5kUmVuZGVyYnVm
ZmVyKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgcmVu
ZGVyYnVmZmVyKQoreworICAgIGlmICh0YXJnZXQgIT0gR0xfUkVOREVSQlVGRkVSKQorICAgIHsK
KyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52
YWxpZCBSZW5kZXJidWZmZXIgdGFyZ2V0IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorCisgICAgaWYgKCFjb250ZXh0LT5nZXRHTFN0YXRlKCkuaXNCaW5kR2VuZXJhdGVzUmVzb3Vy
Y2VFbmFibGVkKCkgJiYKKyAgICAgICAgIWNvbnRleHQtPmlzUmVuZGVyYnVmZmVyR2VuZXJhdGVk
KHJlbmRlcmJ1ZmZlcikpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTiwgIlJlbmRlcmJ1ZmZlciB3YXMgbm90IGdlbmVyYXRlZCIp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
CitzdGF0aWMgYm9vbCBWYWxpZEJsZW5kRXF1YXRpb25Nb2RlKEdMZW51bSBtb2RlKQoreworICAg
IHN3aXRjaCAobW9kZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRlVOQ19BREQ6CisgICAgICAg
IGNhc2UgR0xfRlVOQ19TVUJUUkFDVDoKKyAgICAgICAgY2FzZSBHTF9GVU5DX1JFVkVSU0VfU1VC
VFJBQ1Q6CisgICAgICAgIGNhc2UgR0xfTUlOOgorICAgICAgICBjYXNlIEdMX01BWDoKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorfQorCitib29sIFZhbGlkYXRlQmxlbmRDb2xvcihWYWxpZGF0aW9u
Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMY2xhbXBmIHJlZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdMY2xhbXBmIGdyZWVuLAorICAgICAgICAgICAgICAg
ICAgICAgICAgR0xjbGFtcGYgYmx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMY2xhbXBm
IGFscGhhKQoreworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlQmxlbmRFcXVh
dGlvbihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUpCit7CisgICAgaWYg
KCFWYWxpZEJsZW5kRXF1YXRpb25Nb2RlKG1vZGUpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBibGVuZCBlcXVhdGlv
biIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIFZhbGlkYXRlQmxlbmRFcXVhdGlvblNlcGFyYXRlKFZhbGlkYXRpb25Db250ZXh0
ICpjb250ZXh0LCBHTGVudW0gbW9kZVJHQiwgR0xlbnVtIG1vZGVBbHBoYSkKK3sKKyAgICBpZiAo
IVZhbGlkQmxlbmRFcXVhdGlvbk1vZGUobW9kZVJHQikpCisgICAgeworICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIFJHQiBibGVuZCBl
cXVhdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFs
aWRCbGVuZEVxdWF0aW9uTW9kZShtb2RlQWxwaGEpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBhbHBoYSBibGVuZCBl
cXVhdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIFZhbGlkYXRlQmxlbmRGdW5jKFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LCBHTGVudW0gc2ZhY3RvciwgR0xlbnVtIGRmYWN0b3IpCit7CisgICAgcmV0dXJuIFZhbGlk
YXRlQmxlbmRGdW5jU2VwYXJhdGUoY29udGV4dCwgc2ZhY3RvciwgZGZhY3Rvciwgc2ZhY3Rvciwg
ZGZhY3Rvcik7Cit9CisKK3N0YXRpYyBib29sIFZhbGlkU3JjQmxlbmRGdW5jKEdMZW51bSBzcmNC
bGVuZCkKK3sKKyAgICBzd2l0Y2ggKHNyY0JsZW5kKQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9a
RVJPOgorICAgICAgICBjYXNlIEdMX09ORToKKyAgICAgICAgY2FzZSBHTF9TUkNfQ09MT1I6Cisg
ICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19DT0xPUjoKKyAgICAgICAgY2FzZSBHTF9EU1Rf
Q09MT1I6CisgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9DT0xPUjoKKyAgICAgICAgY2Fz
ZSBHTF9TUkNfQUxQSEE6CisgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19BTFBIQToKKyAg
ICAgICAgY2FzZSBHTF9EU1RfQUxQSEE6CisgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9B
TFBIQToKKyAgICAgICAgY2FzZSBHTF9DT05TVEFOVF9DT0xPUjoKKyAgICAgICAgY2FzZSBHTF9P
TkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6CisgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQUxQSEE6
CisgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOgorICAgICAgICBjYXNl
IEdMX1NSQ19BTFBIQV9TQVRVUkFURToKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitzdGF0
aWMgYm9vbCBWYWxpZERzdEJsZW5kRnVuYyhHTGVudW0gZHN0QmxlbmQsIEdMaW50IGNvbnRleHRN
YWpvclZlcnNpb24pCit7CisgICAgc3dpdGNoIChkc3RCbGVuZCkKKyAgICB7CisgICAgICAgIGNh
c2UgR0xfWkVSTzoKKyAgICAgICAgY2FzZSBHTF9PTkU6CisgICAgICAgIGNhc2UgR0xfU1JDX0NP
TE9SOgorICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19TUkNfQ09MT1I6CisgICAgICAgIGNhc2Ug
R0xfRFNUX0NPTE9SOgorICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19EU1RfQ09MT1I6CisgICAg
ICAgIGNhc2UgR0xfU1JDX0FMUEhBOgorICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19TUkNfQUxQ
SEE6CisgICAgICAgIGNhc2UgR0xfRFNUX0FMUEhBOgorICAgICAgICBjYXNlIEdMX09ORV9NSU5V
U19EU1RfQUxQSEE6CisgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQ09MT1I6CisgICAgICAgIGNh
c2UgR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SOgorICAgICAgICBjYXNlIEdMX0NPTlNUQU5U
X0FMUEhBOgorICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQToKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhBX1NBVFVSQVRF
OgorICAgICAgICAgICAgcmV0dXJuIChjb250ZXh0TWFqb3JWZXJzaW9uID49IDMpOworCisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitib29s
IFZhbGlkYXRlQmxlbmRGdW5jU2VwYXJhdGUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY1JHQiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0UkdCLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZW51bSBzcmNBbHBoYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZHN0QWxwaGEpCit7CisgICAgaWYgKCFWYWxpZFNyY0JsZW5kRnVuYyhzcmNSR0Ip
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9F
TlVNLCAiSW52YWxpZCBibGVuZCBmdW5jdGlvbiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmICghVmFsaWREc3RCbGVuZEZ1bmMoZHN0UkdCLCBjb250ZXh0LT5nZXRD
bGllbnRNYWpvclZlcnNpb24oKSkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGJsZW5kIGZ1bmN0aW9uIikpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZFNyY0JsZW5kRnVuYyhz
cmNBbHBoYSkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0sICJJbnZhbGlkIGJsZW5kIGZ1bmN0aW9uIikpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZERzdEJsZW5kRnVuYyhkc3RBbHBoYSwgY29u
dGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBibGVuZCBmdW5jdGlv
biIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChjb250ZXh0LT5n
ZXRMaW1pdGF0aW9ucygpLm5vU2ltdWx0YW5lb3VzQ29uc3RhbnRDb2xvckFuZEFscGhhQmxlbmRG
dW5jIHx8CisgICAgICAgIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS53ZWJnbENvbXBhdGliaWxp
dHkpCisgICAgeworICAgICAgICBib29sIGNvbnN0YW50Q29sb3JVc2VkID0KKyAgICAgICAgICAg
IChzcmNSR0IgPT0gR0xfQ09OU1RBTlRfQ09MT1IgfHwgc3JjUkdCID09IEdMX09ORV9NSU5VU19D
T05TVEFOVF9DT0xPUiB8fAorICAgICAgICAgICAgIGRzdFJHQiA9PSBHTF9DT05TVEFOVF9DT0xP
UiB8fCBkc3RSR0IgPT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SKTsKKworICAgICAgICBi
b29sIGNvbnN0YW50QWxwaGFVc2VkID0KKyAgICAgICAgICAgIChzcmNSR0IgPT0gR0xfQ09OU1RB
TlRfQUxQSEEgfHwgc3JjUkdCID09IEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSB8fAorICAg
ICAgICAgICAgIGRzdFJHQiA9PSBHTF9DT05TVEFOVF9BTFBIQSB8fCBkc3RSR0IgPT0gR0xfT05F
X01JTlVTX0NPTlNUQU5UX0FMUEhBKTsKKworICAgICAgICBpZiAoY29uc3RhbnRDb2xvclVzZWQg
JiYgY29uc3RhbnRBbHBoYVVzZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIg
Km1zZzsKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkud2ViZ2xDb21w
YXRpYmlsaXR5KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1zZyA9CisgICAgICAg
ICAgICAgICAgICAgICJJbnZhbGlkIHNpbXVsdGFuZW91cyB1c2Ugb2YgR0xfQ09OU1RBTlRfQUxQ
SEEvR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBIGFuZCAiCisgICAgICAgICAgICAgICAgICAg
ICJHTF9DT05TVEFOVF9DT0xPUi9HTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IuIjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBtc2cgPQorICAgICAgICAgICAgICAgICAgICAiU2ltdWx0YW5lb3VzIHVzZSBvZiBHTF9DT05T
VEFOVF9BTFBIQS9HTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEgYW5kICIKKyAgICAgICAgICAg
ICAgICAgICAgIkdMX0NPTlNUQU5UX0NPTE9SL0dMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUiBu
b3Qgc3VwcG9ydGVkIGJ5IHRoaXMgIgorICAgICAgICAgICAgICAgICAgICAiaW1wbGVtZW50YXRp
b24uIjsKKyAgICAgICAgICAgICAgICBFUlIoKSA8PCBtc2c7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwg
bXNnKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFN0cmluZyhDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gbmFtZSkKK3sKKyAgICBzd2l0Y2ggKG5hbWUpCisgICAgeworICAgICAgICBj
YXNlIEdMX1ZFTkRPUjoKKyAgICAgICAgY2FzZSBHTF9SRU5ERVJFUjoKKyAgICAgICAgY2FzZSBH
TF9WRVJTSU9OOgorICAgICAgICBjYXNlIEdMX1NIQURJTkdfTEFOR1VBR0VfVkVSU0lPTjoKKyAg
ICAgICAgY2FzZSBHTF9FWFRFTlNJT05TOgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBHTF9SRVFVRVNUQUJMRV9FWFRFTlNJT05TX0FOR0xFOgorICAgICAgICAgICAgaWYgKCFj
b250ZXh0LT5nZXRFeHRlbnNpb25zKCkucmVxdWVzdEV4dGVuc2lvbikKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0sICJJbnZhbGlkIG5hbWUuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZh
bGlkIG5hbWUuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlTGluZVdpZHRoKFZhbGlkYXRpb25Db250ZXh0
ICpjb250ZXh0LCBHTGZsb2F0IHdpZHRoKQoreworICAgIGlmICh3aWR0aCA8PSAwLjBmIHx8IGlz
TmFOKHdpZHRoKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUsICJJbnZhbGlkIHdpZHRoIHZhbHVlLiIpKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlVmVy
dGV4QXR0cmliUG9pbnRlcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biBub3JtYWxpemVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBz
dHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnB0
cikKK3sKKyAgICBpZiAoIVZhbGlkYXRlVmVydGV4Rm9ybWF0QmFzZShjb250ZXh0LCBpbmRleCwg
c2l6ZSwgdHlwZSwgZmFsc2UpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIGlmIChzdHJpZGUgPCAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgInN0cmlkZSBjYW5ub3QgYmUgbmVnYXRpdmUuIikp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgQ2FwcyAmY2FwcyA9
IGNvbnRleHQtPmdldENhcHMoKTsKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigp
ID49IEVTXzNfMSkKKyAgICB7CisgICAgICAgIGlmIChzdHJpZGUgPiBjYXBzLm1heFZlcnRleEF0
dHJpYlN0cmlkZSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
CisgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgInN0cmlkZSBjYW5ub3Qg
YmUgZ3JlYXRlciB0aGFuIE1BWF9WRVJURVhfQVRUUklCX1NUUklERS4iKSk7CisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW5kZXggPj0gY2Fwcy5t
YXhWZXJ0ZXhBdHRyaWJCaW5kaW5ncykKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgImlu
ZGV4IG11c3QgYmUgc21hbGxlciB0aGFuIE1BWF9WRVJURVhfQVRUUklCX0JJTkRJTkdTLiIpKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFtP
cGVuR0wgRVMgMy4wLjJdIFNlY3Rpb24gMi44IHBhZ2UgMjQ6CisgICAgLy8gQW4gSU5WQUxJRF9P
UEVSQVRJT04gZXJyb3IgaXMgZ2VuZXJhdGVkIHdoZW4gYSBub24temVybyB2ZXJ0ZXggYXJyYXkg
b2JqZWN0CisgICAgLy8gaXMgYm91bmQsIHplcm8gaXMgYm91bmQgdG8gdGhlIEFSUkFZX0JVRkZF
UiBidWZmZXIgb2JqZWN0IGJpbmRpbmcgcG9pbnQsCisgICAgLy8gYW5kIHRoZSBwb2ludGVyIGFy
Z3VtZW50IGlzIG5vdCBOVUxMLgorICAgIGJvb2wgbnVsbEJ1ZmZlckFsbG93ZWQgPSBjb250ZXh0
LT5nZXRHTFN0YXRlKCkuYXJlQ2xpZW50QXJyYXlzRW5hYmxlZCgpICYmCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgpLT5p
ZCgpID09IDA7CisgICAgaWYgKCFudWxsQnVmZmVyQWxsb3dlZCAmJiBjb250ZXh0LT5nZXRHTFN0
YXRlKCkuZ2V0QXJyYXlCdWZmZXJJZCgpID09IDAgJiYgcHRyICE9IG51bGxwdHIpCisgICAgewor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLAorICAgICAgICAgICAgICAgICAgIkNsaWVudCBkYXRhIGNhbm5vdCBiZSB1
c2VkIHdpdGggYSBub24tZGVmYXVsdCB2ZXJ0ZXggYXJyYXkgb2JqZWN0LiIpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChjb250ZXh0LT5nZXRFeHRlbnNpb25zKCku
d2ViZ2xDb21wYXRpYmlsaXR5KQorICAgIHsKKyAgICAgICAgLy8gV2ViR0wgMS4wIFtTZWN0aW9u
IDYuMTRdIEZpeGVkIHBvaW50IHN1cHBvcnQKKyAgICAgICAgLy8gVGhlIFdlYkdMIEFQSSBkb2Vz
IG5vdCBzdXBwb3J0IHRoZSBHTF9GSVhFRCBkYXRhIHR5cGUuCisgICAgICAgIGlmICh0eXBlID09
IEdMX0ZJWEVEKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0sICJHTF9GSVhFRCBpcyBub3Qgc3VwcG9ydGVkIGluIFdlYkdM
LiIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghVmFsaWRhdGVXZWJHTFZlcnRleEF0dHJpYlBvaW50ZXIoY29udGV4dCwgdHlwZSwgbm9ybWFs
aXplZCwgc3RyaWRlLCBwdHIsIGZhbHNlKSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wg
VmFsaWRhdGVEZXB0aFJhbmdlZihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xjbGFtcGYg
ek5lYXIsIEdMY2xhbXBmIHpGYXIpCit7CisgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS53ZWJnbENvbXBhdGliaWxpdHkgJiYgek5lYXIgPiB6RmFyKQorICAgIHsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJEZXB0aCBuZWFy
ID4gZmFyLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZShWYWxpZGF0aW9uQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxm
b3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpCit7CisgICAg
cmV0dXJuIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRlcnNCYXNlKGNvbnRleHQs
IHRhcmdldCwgMCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQpOworfQorCitib29sIFZhbGlk
YXRlUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoVmFsaWRhdGlvbkNvbnRleHQg
KmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIHNhbXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWln
aHQpCit7CisgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkuZnJhbWVidWZmZXJNdWx0
aXNhbXBsZSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAg
ICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0
aXNhbXBsZSBub3QgYXZhaWxhYmxlIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
CisgICAgLy8gQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUgc3RhdGVzIHRoYXQgdGhlIHZh
bHVlIG9mIHNhbXBsZXMgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwKKyAgICAvLyB0byBNQVhf
U0FNUExFU19BTkdMRSAoQ29udGV4dDo6Z2V0Q2FwcygpLm1heFNhbXBsZXMpIG90aGVyd2lzZSBH
TF9JTlZBTElEX09QRVJBVElPTiBpcworICAgIC8vIGdlbmVyYXRlZC4KKyAgICBpZiAoc3RhdGlj
X2Nhc3Q8R0x1aW50PihzYW1wbGVzKSA+IGNvbnRleHQtPmdldENhcHMoKS5tYXhTYW1wbGVzKQor
ICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gQU5HTEVfZnJhbWVi
dWZmZXJfbXVsdGlzYW1wbGUgc3RhdGVzIEdMX09VVF9PRl9NRU1PUlkgaXMgZ2VuZXJhdGVkIG9u
IGEgZmFpbHVyZSB0byBjcmVhdGUKKyAgICAvLyB0aGUgc3BlY2lmaWVkIHN0b3JhZ2UuIFRoaXMg
aXMgZGlmZmVyZW50IHRoYW4gRVMgMy4wIGluIHdoaWNoIGEgc2FtcGxlIG51bWJlciBoaWdoZXIK
KyAgICAvLyB0aGFuIHRoZSBtYXhpbXVtIHNhbXBsZSBudW1iZXIgc3VwcG9ydGVkIGJ5IHRoaXMg
Zm9ybWF0IGdlbmVyYXRlcyBhIEdMX0lOVkFMSURfVkFMVUUuCisgICAgLy8gVGhlIFRleHR1cmVD
YXBzOjpnZXRNYXhTYW1wbGVzIG1ldGhvZCBpcyBvbmx5IGd1YXJlbnRlZWQgdG8gYmUgdmFsaWQg
d2hlbiB0aGUgY29udGV4dCBpcyBFUzMuCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9y
VmVyc2lvbigpID49IDMpCisgICAgeworICAgICAgICBjb25zdCBUZXh0dXJlQ2FwcyAmZm9ybWF0
Q2FwcyA9IGNvbnRleHQtPmdldFRleHR1cmVDYXBzKCkuZ2V0KGludGVybmFsZm9ybWF0KTsKKyAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PEdMdWludD4oc2FtcGxlcykgPiBmb3JtYXRDYXBzLmdldE1h
eFNhbXBsZXMoKSkKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfT1VUX09GX01FTU9SWSkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFnZVBh
cmFtZXRlcnNCYXNlKGNvbnRleHQsIHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRo
LCBoZWlnaHQpOworfQorCitib29sIFZhbGlkYXRlQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhWYWxp
ZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCkKK3sKKyAgICBpZiAoIVZhbGlk
RnJhbWVidWZmZXJUYXJnZXQodGFyZ2V0KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgRnJhbWVidWZmZXIgdGFyZ2V0
IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgVmFsaWRhdGVDbGVhckNvbG9yKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgR0xjbGFtcGYgcmVkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgR0xjbGFtcGYgZ3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICBHTGNsYW1wZiBi
bHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xjbGFtcGYgYWxwaGEpCit7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVDbGVhckRlcHRoZihWYWxpZGF0aW9uQ29udGV4
dCAqY29udGV4dCwgR0xjbGFtcGYgZGVwdGgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgVmFsaWRhdGVDbGVhclN0ZW5jaWwoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMaW50
IHMpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVDb2xvck1hc2soVmFs
aWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVh
biByZWQsCisgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBncmVlbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgR0xib29sZWFuIGJsdWUsCisgICAgICAgICAgICAgICAgICAgICAgIEdM
Ym9vbGVhbiBhbHBoYSkKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUNv
bXBpbGVTaGFkZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBzaGFkZXIpCit7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVDcmVhdGVQcm9ncmFtKFZhbGlk
YXRpb25Db250ZXh0ICpjb250ZXh0KQoreworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZh
bGlkYXRlQ3VsbEZhY2UoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlKQor
eworICAgIHN3aXRjaCAobW9kZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfRlJPTlQ6CisgICAg
ICAgIGNhc2UgR0xfQkFDSzoKKyAgICAgICAgY2FzZSBHTF9GUk9OVF9BTkRfQkFDSzoKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIGN1bGwgZmFjZSBwYXJh
bWV0ZXIiKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVEZWxldGVQcm9ncmFtKFZhbGlkYXRpb25Db250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSkKK3sKKyAgICBpZiAocHJvZ3JhbSA9PSAwKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghY29udGV4dC0+Z2V0
UHJvZ3JhbShwcm9ncmFtKSkKKyAgICB7CisgICAgICAgIGlmIChjb250ZXh0LT5nZXRTaGFkZXIo
cHJvZ3JhbSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAor
ICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiU2hhZGVyIGhhbmRs
ZSBwYXNzZWQgdG8gRGVsZXRlUHJvZ3JhbSIpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJJbnZhbGlkIHByb2dyYW0gaGFu
ZGxlIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVEZWxldGVTaGFkZXIoVmFsaWRhdGlv
bkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBzaGFkZXIpCit7CisgICAgaWYgKHNoYWRlciA9PSAw
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghY29udGV4
dC0+Z2V0U2hhZGVyKHNoYWRlcikpCisgICAgeworICAgICAgICBpZiAoY29udGV4dC0+Z2V0UHJv
Z3JhbShzaGFkZXIpKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cigKKyAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlByb2dyYW0g
aGFuZGxlIHBhc3NlZCB0byBEZWxldGVTaGFkZXIiKSk7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiSW52YWxpZCBzaGFkZXIg
aGFuZGxlIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQor
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVEZXB0aEZ1bmMoVmFsaWRhdGlv
bkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSBmdW5jKQoreworICAgIHN3aXRjaCAoZnVuYykKKyAg
ICB7CisgICAgICAgIGNhc2UgR0xfTkVWRVI6CisgICAgICAgIGNhc2UgR0xfQUxXQVlTOgorICAg
ICAgICBjYXNlIEdMX0xFU1M6CisgICAgICAgIGNhc2UgR0xfTEVRVUFMOgorICAgICAgICBjYXNl
IEdMX0VRVUFMOgorICAgICAgICBjYXNlIEdMX0dSRUFURVI6CisgICAgICAgIGNhc2UgR0xfR0VR
VUFMOgorICAgICAgICBjYXNlIEdMX05PVEVRVUFMOgorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfRU5VTSwgIkludmFsaWQgZGVwdGggZnVuY3Rpb24iKSk7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRh
dGVEZXB0aE1hc2soVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMYm9vbGVhbiBmbGFnKQor
eworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlRGV0YWNoU2hhZGVyKFZhbGlk
YXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRlcikKK3sK
KyAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9ncmFtKGNvbnRleHQsIHBy
b2dyYW0pOworICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICBTaGFkZXIgKnNoYWRlck9iamVjdCA9IEdldFZhbGlkU2hhZGVy
KGNvbnRleHQsIHNoYWRlcik7CisgICAgaWYgKCFzaGFkZXJPYmplY3QpCisgICAgeworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgU2hhZGVyICphdHRhY2hlZFNoYWRl
ciA9IG51bGxwdHI7CisKKyAgICBzd2l0Y2ggKHNoYWRlck9iamVjdC0+Z2V0VHlwZSgpKQorICAg
IHsKKyAgICAgICAgY2FzZSBHTF9WRVJURVhfU0hBREVSOgorICAgICAgICB7CisgICAgICAgICAg
ICBhdHRhY2hlZFNoYWRlciA9IHByb2dyYW1PYmplY3QtPmdldEF0dGFjaGVkVmVydGV4U2hhZGVy
KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0ZSQUdN
RU5UX1NIQURFUjoKKyAgICAgICAgeworICAgICAgICAgICAgYXR0YWNoZWRTaGFkZXIgPSBwcm9n
cmFtT2JqZWN0LT5nZXRBdHRhY2hlZEZyYWdtZW50U2hhZGVyKCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0NPTVBVVEVfU0hBREVSOgorICAgICAgICB7
CisgICAgICAgICAgICBhdHRhY2hlZFNoYWRlciA9IHByb2dyYW1PYmplY3QtPmdldEF0dGFjaGVk
Q29tcHV0ZVNoYWRlcigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgaWYgKGF0dGFjaGVkU2hhZGVyICE9IHNoYWRlck9iamVjdCkK
KyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAiQ2Fubm90IGRldGFjaCBub24tYXR0YWNoZWQgc2hhZGVyLiIpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlk
YXRlRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBH
THVpbnQgaW5kZXgpCit7CisgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKKyAg
ICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUs
ICJBdHRyaWIgYXJyYXkgaW5kZXggb3V0IG9mIHJhbmdlIikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVFbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4
KQoreworICAgIGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgeworICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiQXR0cmliIGFy
cmF5IGluZGV4IG91dCBvZiByYW5nZSIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlRmluaXNoKFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0KQoreworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRl
Rmx1c2goVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQpCit7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgVmFsaWRhdGVGcm9udEZhY2UoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdM
ZW51bSBtb2RlKQoreworICAgIHN3aXRjaCAobW9kZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xf
Q1c6CisgICAgICAgIGNhc2UgR0xfQ0NXOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0sICJJbnZhbGlkIG1vZGUgZm9yIEZyb250RmFjZSIpKTsKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdl
dEFjdGl2ZUF0dHJpYihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBi
dWZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpzaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMY2hhciAqbmFtZSkKK3sKKyAgICBpZiAoYnVmc2l6ZSA8IDApCisgICAgeworICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiYnVmc2l6ZSBtdXN0
IGJlIG5vbi1uZWdhdGl2ZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9ncmFtKGNvbnRleHQsIHByb2dy
YW0pOworCisgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGlmIChpbmRleCA+PSBzdGF0aWNfY2FzdDxHTHVpbnQ+KHByb2dy
YW1PYmplY3QtPmdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KCkpKQorICAgIHsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAi
aW5kZXggZXhlZWRzIHByb2dyYW0gYWN0aXZlIGF0dHJpYnV0ZSBjb3VudC4iKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxp
ZGF0ZUdldEFjdGl2ZVVuaWZvcm0oVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpzaXplLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtICp0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xjaGFyICpuYW1lKQoreworICAgIGlmIChidWZzaXplIDwgMCkKKyAg
ICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUs
ICJidWZzaXplIG11c3QgYmUgbm9uLW5lZ2F0aXZlLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFByb2dyYW0o
Y29udGV4dCwgcHJvZ3JhbSk7CisKKyAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGluZGV4ID49IHN0YXRpY19jYXN0
PEdMdWludD4ocHJvZ3JhbU9iamVjdC0+Z2V0QWN0aXZlVW5pZm9ybUNvdW50KCkpKQorICAgIHsK
KyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZB
TElEX1ZBTFVFLCAiaW5kZXggZXhjZWVkcyBwcm9ncmFtIGFjdGl2ZSB1bmlmb3JtIGNvdW50LiIp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIFZhbGlkYXRlR2V0QXR0YWNoZWRTaGFkZXJzKFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBtYXhjb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqY291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMdWludCAqc2hhZGVycykKK3sKKyAgICBpZiAobWF4Y291bnQgPCAw
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSwgIm1heCBjb3VudCBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4iKSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQ
cm9ncmFtKGNvbnRleHQsIHByb2dyYW0pOworCisgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIFZhbGlkYXRlR2V0QXR0cmliTG9jYXRpb24oVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIgKm5hbWUpCit7CisgICAgUHJvZ3JhbSAq
cHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtKTsKKworICAg
IGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBpZiAoIXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkpCisgICAgeworICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgInByb2dyYW0g
bm90IGxpbmtlZC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldEJvb2xlYW52KFZhbGlkYXRpb25Db250ZXh0
ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMYm9vbGVhbiAqcGFyYW1zKQoreworICAgIEdMZW51
bSBuYXRpdmVUeXBlOworICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXMgPSAwOworICAgIHJldHVy
biBWYWxpZGF0ZVN0YXRlUXVlcnkoY29udGV4dCwgcG5hbWUsICZuYXRpdmVUeXBlLCAmbnVtUGFy
YW1zKTsKK30KKworYm9vbCBWYWxpZGF0ZUdldEVycm9yKFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0KQoreworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlR2V0RmxvYXR2KFZh
bGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgKnBhcmFtcykK
K3sKKyAgICBHTGVudW0gbmF0aXZlVHlwZTsKKyAgICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zID0g
MDsKKyAgICByZXR1cm4gVmFsaWRhdGVTdGF0ZVF1ZXJ5KGNvbnRleHQsIHBuYW1lLCAmbmF0aXZl
VHlwZSwgJm51bVBhcmFtcyk7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRJbnRlZ2VydihWYWxpZGF0
aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQoreworICAg
IEdMZW51bSBuYXRpdmVUeXBlOworICAgIHVuc2lnbmVkIGludCBudW1QYXJhbXMgPSAwOworICAg
IHJldHVybiBWYWxpZGF0ZVN0YXRlUXVlcnkoY29udGV4dCwgcG5hbWUsICZuYXRpdmVUeXBlLCAm
bnVtUGFyYW1zKTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1JbmZvTG9nKFZhbGlkYXRp
b25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmc2l6
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICppbmZvbG9nKQoreworICAgIGlmIChi
dWZzaXplIDwgMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUsICJidWZzaXplIG11c3QgYmUgbm9uLW5lZ2F0aXZlLiIpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBH
ZXRWYWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CisgICAgaWYgKCFwcm9ncmFtT2JqZWN0
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFZhbGlkYXRlR2V0U2hhZGVySW5mb0xvZyhWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBzaGFkZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZnNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGNoYXIgKmluZm9sb2cpCit7CisgICAgaWYgKGJ1ZnNpemUgPCAwKQorICAg
IHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwg
ImJ1ZnNpemUgbXVzdCBiZSBub24tbmVnYXRpdmUuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgU2hhZGVyICpzaGFkZXJPYmplY3QgPSBHZXRWYWxpZFNoYWRlcihjb250
ZXh0LCBzaGFkZXIpOworICAgIGlmICghc2hhZGVyT2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRl
R2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2hhZGVydHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByZWNpc2lvbnR5cGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpyYW5nZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnByZWNpc2lvbikKK3sK
KyAgICBzd2l0Y2ggKHNoYWRlcnR5cGUpCisgICAgeworICAgICAgICBjYXNlIEdMX1ZFUlRFWF9T
SEFERVI6CisgICAgICAgIGNhc2UgR0xfRlJBR01FTlRfU0hBREVSOgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgR0xfQ09NUFVURV9TSEFERVI6CisgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwgImNvbXB1dGUgc2hhZGVyIHByZWNpc2lvbiBub3QgeWV0IGltcGxlbWVudGVkLiIpKTsKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgImludmFsaWQgc2hhZGVy
IHR5cGUuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRj
aCAocHJlY2lzaW9udHlwZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfTE9XX0ZMT0FUOgorICAg
ICAgICBjYXNlIEdMX01FRElVTV9GTE9BVDoKKyAgICAgICAgY2FzZSBHTF9ISUdIX0ZMT0FUOgor
ICAgICAgICBjYXNlIEdMX0xPV19JTlQ6CisgICAgICAgIGNhc2UgR0xfTUVESVVNX0lOVDoKKyAg
ICAgICAgY2FzZSBHTF9ISUdIX0lOVDoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0sICJpbnZhbGlkIHByZWNpc2lvbiB0eXBlLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFNo
YWRlclNvdXJjZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHNoYWRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBidWZzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqc291cmNlKQorewor
ICAgIGlmIChidWZzaXplIDwgMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJidWZzaXplIG11c3QgYmUgbm9uLW5lZ2F0aXZlLiIp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFNoYWRlciAqc2hhZGVyT2Jq
ZWN0ID0gR2V0VmFsaWRTaGFkZXIoY29udGV4dCwgc2hhZGVyKTsKKyAgICBpZiAoIXNoYWRlck9i
amVjdCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm1Mb2NhdGlvbihWYWxpZGF0aW9uQ29u
dGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciAqbmFtZSkKK3sKKyAg
ICBpZiAoc3Ryc3RyKG5hbWUsICJnbF8iKSA9PSBuYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFBy
b2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CisKKyAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAg
eworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFwcm9ncmFtT2JqZWN0
LT5pc0xpbmtlZCgpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJwcm9ncmFtIGlzIG5vdCBsaW5rZWQuIikpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFs
aWRhdGVIaW50KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gbW9kZSkKK3sKKyAgICBzd2l0Y2ggKG1vZGUpCisgICAgeworICAgICAgICBjYXNlIEdMX0ZB
U1RFU1Q6CisgICAgICAgIGNhc2UgR0xfTklDRVNUOgorICAgICAgICBjYXNlIEdMX0RPTlRfQ0FS
RToKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJpbnZhbGlkIGhpbnQg
bW9kZS4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgc3dpdGNo
ICh0YXJnZXQpCisgICAgeworICAgICAgICBjYXNlIEdMX0dFTkVSQVRFX01JUE1BUF9ISU5UOgor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVJfREVS
SVZBVElWRV9ISU5UX09FUzoKKyAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLnN0YW5kYXJkRGVyaXZhdGl2ZXMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAiaGludCByZXF1aXJlcyBPRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMuIikp
OworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJpbnZhbGlkIGhpbnQgdGFyZ2V0LiIpKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBWYWxpZGF0ZUlzQnVmZmVyKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgYnVmZmVyKQoreworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlSXNGcmFt
ZWJ1ZmZlcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGZyYW1lYnVmZmVyKQor
eworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlSXNQcm9ncmFtKFZhbGlkYXRp
b25Db250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSkKK3sKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBWYWxpZGF0ZUlzUmVuZGVyYnVmZmVyKFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKQoreworICAgIHJldHVybiB0cnVlOworfQorCitib29s
IFZhbGlkYXRlSXNTaGFkZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBzaGFk
ZXIpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVJc1RleHR1cmUoVmFs
aWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCB0ZXh0dXJlKQoreworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIFZhbGlkYXRlUGl4ZWxTdG9yZWkoVmFsaWRhdGlvbkNvbnRleHQgKmNv
bnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCit7CisgICAgaWYgKGNvbnRleHQtPmdl
dENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKKyAgICB7CisgICAgICAgIHN3aXRjaCAocG5hbWUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgR0xfVU5QQUNLX0lNQUdFX0hFSUdIVDoKKyAg
ICAgICAgICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfSU1BR0VTOgorICAgICAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgY2FzZSBHTF9VTlBBQ0tfUk9XX0xFTkdU
SDoKKyAgICAgICAgICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfUk9XUzoKKyAgICAgICAgICAgIGNh
c2UgR0xfVU5QQUNLX1NLSVBfUElYRUxTOgorICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnVucGFja1N1YmltYWdlKQorICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVN
KSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgR0xfUEFDS19ST1df
TEVOR1RIOgorICAgICAgICAgICAgY2FzZSBHTF9QQUNLX1NLSVBfUk9XUzoKKyAgICAgICAgICAg
IGNhc2UgR0xfUEFDS19TS0lQX1BJWEVMUzoKKyAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS5wYWNrU3ViaW1hZ2UpCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChwYXJh
bSA8IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFLCAiQ2Fubm90IHVzZSBuZWdhdGl2ZSB2YWx1ZXMgaW4gUGl4ZWxTdG9yZWkiKSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHBuYW1lKQorICAg
IHsKKyAgICAgICAgY2FzZSBHTF9VTlBBQ0tfQUxJR05NRU5UOgorICAgICAgICAgICAgaWYgKHBh
cmFtICE9IDEgJiYgcGFyYW0gIT0gMiAmJiBwYXJhbSAhPSA0ICYmIHBhcmFtICE9IDgpCisgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSkpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfUEFDS19BTElHTk1F
TlQ6CisgICAgICAgICAgICBpZiAocGFyYW0gIT0gMSAmJiBwYXJhbSAhPSAyICYmIHBhcmFtICE9
IDQgJiYgcGFyYW0gIT0gOCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBHTF9QQUNLX1JFVkVSU0VfUk9XX09SREVSX0FOR0xFOgorICAgICAgICBjYXNlIEdM
X1VOUEFDS19ST1dfTEVOR1RIOgorICAgICAgICBjYXNlIEdMX1VOUEFDS19JTUFHRV9IRUlHSFQ6
CisgICAgICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfSU1BR0VTOgorICAgICAgICBjYXNlIEdMX1VO
UEFDS19TS0lQX1JPV1M6CisgICAgICAgIGNhc2UgR0xfVU5QQUNLX1NLSVBfUElYRUxTOgorICAg
ICAgICBjYXNlIEdMX1BBQ0tfUk9XX0xFTkdUSDoKKyAgICAgICAgY2FzZSBHTF9QQUNLX1NLSVBf
Uk9XUzoKKyAgICAgICAgY2FzZSBHTF9QQUNLX1NLSVBfUElYRUxTOgorICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlUG9seWdvbk9mZnNldChW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMp
Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVSZWxlYXNlU2hhZGVyQ29t
cGlsZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQpCit7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgVmFsaWRhdGVTYW1wbGVDb3ZlcmFnZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4
dCwgR0xjbGFtcGYgdmFsdWUsIEdMYm9vbGVhbiBpbnZlcnQpCit7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgVmFsaWRhdGVTY2lzc29yKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBH
TGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKK3sKKyAgICBp
ZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJTY2lzc29yIHdp
ZHRoIGFuZCBoZWlnaHQgbXVzdCBiZSBub24tbmVnYXRpdmUuIikpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVTaGFk
ZXJCaW5hcnkoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x1aW50
ICpzaGFkZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gYmluYXJ5Zm9ybWF0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKmJpbmFyeSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBsZW5ndGgpCit7CisgICAgY29uc3Qgc3RkOjp2
ZWN0b3I8R0xlbnVtPiAmc2hhZGVyQmluYXJ5Rm9ybWF0cyA9IGNvbnRleHQtPmdldENhcHMoKS5z
aGFkZXJCaW5hcnlGb3JtYXRzOworICAgIGlmIChzdGQ6OmZpbmQoc2hhZGVyQmluYXJ5Rm9ybWF0
cy5iZWdpbigpLCBzaGFkZXJCaW5hcnlGb3JtYXRzLmVuZCgpLCBiaW5hcnlmb3JtYXQpID09Cisg
ICAgICAgIHNoYWRlckJpbmFyeUZvcm1hdHMuZW5kKCkpCisgICAgeworICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHNoYWRlciBiaW5h
cnkgZm9ybWF0LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIFZhbGlkYXRlU2hhZGVyU291cmNlKFZhbGlkYXRpb25Db250ZXh0
ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2hhZGVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGNoYXIgKmNvbnN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEdMaW50ICpsZW5ndGgpCit7CisgICAgaWYgKGNvdW50IDwgMCkKKyAgICB7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJD
b3VudCBtdXN0IGJlIG5vbi1uZWdhdGl2ZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBTaGFkZXIgKnNoYWRlck9iamVjdCA9IEdldFZhbGlkU2hhZGVyKGNvbnRleHQs
IHNoYWRlcik7CisgICAgaWYgKCFzaGFkZXJPYmplY3QpCisgICAgeworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVTdGVu
Y2lsRnVuYyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIGZ1bmMsIEdMaW50IHJl
ZiwgR0x1aW50IG1hc2spCit7CisgICAgaWYgKCFJc1ZhbGlkU3RlbmNpbEZ1bmMoZnVuYykpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0s
ICJJbnZhbGlkIHN0ZW5jaWwgZnVuY3Rpb24uIikpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVTdGVuY2lsRnVuY1Nl
cGFyYXRlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHJl
ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBtYXNrKQoreworICAg
IGlmICghSXNWYWxpZFN0ZW5jaWxGYWNlKGZhY2UpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBzdGVuY2lsIGZhY2Uu
IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFJc1ZhbGlkU3Rl
bmNpbEZ1bmMoZnVuYykpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHN0ZW5jaWwgZnVuY3Rpb24uIikpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFs
aWRhdGVTdGVuY2lsTWFzayhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IG1hc2sp
Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVTdGVuY2lsTWFza1NlcGFy
YXRlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gZmFjZSwgR0x1aW50IG1hc2sp
Cit7CisgICAgaWYgKCFJc1ZhbGlkU3RlbmNpbEZhY2UoZmFjZSkpCisgICAgeworICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHN0ZW5j
aWwgZmFjZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZVN0ZW5jaWxPcChWYWxpZGF0aW9uQ29udGV4dCAqY29u
dGV4dCwgR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKQoreworICAgIGlm
ICghSXNWYWxpZFN0ZW5jaWxPcChmYWlsKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgc3RlbmNpbCBmYWlsIG9wLiIp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghSXNWYWxpZFN0ZW5j
aWxPcCh6ZmFpbCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHN0ZW5jaWwgeiBmYWlsIG9wLiIpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghSXNWYWxpZFN0ZW5jaWxPcCh6cGFzcykp
CisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0sICJJbnZhbGlkIHN0ZW5jaWwgeiBwYXNzIG9wLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlU3RlbmNpbE9w
U2VwYXJhdGUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGZhaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHpmYWls
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB6cGFzcykKK3sKKyAgICBp
ZiAoIUlzVmFsaWRTdGVuY2lsRmFjZShmYWNlKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgc3RlbmNpbCBmYWNlLiIp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiBWYWxpZGF0ZVN0
ZW5jaWxPcChjb250ZXh0LCBmYWlsLCB6ZmFpbCwgenBhc3MpOworfQorCitib29sIFZhbGlkYXRl
VW5pZm9ybTFmKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xm
bG9hdCB4KQoreworICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfRkxPQVQs
IGxvY2F0aW9uLCAxKTsKK30KKworYm9vbCBWYWxpZGF0ZVVuaWZvcm0xZnYoVmFsaWRhdGlvbkNv
bnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZs
b2F0ICp2KQoreworICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfRkxPQVQs
IGxvY2F0aW9uLCBjb3VudCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMmYoVmFsaWRhdGlv
bkNvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSkK
K3sKKyAgICByZXR1cm4gVmFsaWRhdGVVbmlmb3JtKGNvbnRleHQsIEdMX0ZMT0FUX1ZFQzIsIGxv
Y2F0aW9uLCAxKTsKK30KKworYm9vbCBWYWxpZGF0ZVVuaWZvcm0yZnYoVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0
ICp2KQoreworICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfRkxPQVRfVkVD
MiwgbG9jYXRpb24sIGNvdW50KTsKK30KKworYm9vbCBWYWxpZGF0ZVVuaWZvcm0yaShWYWxpZGF0
aW9uQ29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHkpCit7
CisgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybShjb250ZXh0LCBHTF9JTlRfVkVDMiwgbG9jYXRp
b24sIDEpOworfQorCitib29sIFZhbGlkYXRlVW5pZm9ybTJpdihWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQor
eworICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfSU5UX1ZFQzIsIGxvY2F0
aW9uLCBjb3VudCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtM2YoVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9h
dCB6KQoreworICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfRkxPQVRfVkVD
MywgbG9jYXRpb24sIDEpOworfQorCitib29sIFZhbGlkYXRlVW5pZm9ybTNmdihWYWxpZGF0aW9u
Q29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdM
ZmxvYXQgKnYpCit7CisgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybShjb250ZXh0LCBHTF9GTE9B
VF9WRUMzLCBsb2NhdGlvbiwgY291bnQpOworfQorCitib29sIFZhbGlkYXRlVW5pZm9ybTNpKFZh
bGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xpbnQgeCwgR0xpbnQg
eSwgR0xpbnQgeikKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVVbmlmb3JtKGNvbnRleHQsIEdMX0lO
VF9WRUMzLCBsb2NhdGlvbiwgMSk7Cit9CisKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtM2l2KFZhbGlk
YXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29u
c3QgR0xpbnQgKnYpCit7CisgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybShjb250ZXh0LCBHTF9J
TlRfVkVDMywgbG9jYXRpb24sIGNvdW50KTsKK30KKworYm9vbCBWYWxpZGF0ZVVuaWZvcm00ZihW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgR0xmbG9hdCB5LAorICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHos
CisgICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgdykKK3sKKyAgICByZXR1cm4gVmFsaWRh
dGVVbmlmb3JtKGNvbnRleHQsIEdMX0ZMT0FUX1ZFQzQsIGxvY2F0aW9uLCAxKTsKK30KKworYm9v
bCBWYWxpZGF0ZVVuaWZvcm00ZnYoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2KQoreworICAgIHJldHVybiBW
YWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfRkxPQVRfVkVDNCwgbG9jYXRpb24sIGNvdW50KTsK
K30KKworYm9vbCBWYWxpZGF0ZVVuaWZvcm00aShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHksCisgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHosCisgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHcp
Cit7CisgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybShjb250ZXh0LCBHTF9JTlRfVkVDNCwgbG9j
YXRpb24sIDEpOworfQorCitib29sIFZhbGlkYXRlVW5pZm9ybTRpdihWYWxpZGF0aW9uQ29udGV4
dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2
KQoreworICAgIHJldHVybiBWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfSU5UX1ZFQzQsIGxv
Y2F0aW9uLCBjb3VudCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4MmZ2KFZhbGlk
YXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKQoreworICAg
IHJldHVybiBWYWxpZGF0ZVVuaWZvcm1NYXRyaXgoY29udGV4dCwgR0xfRkxPQVRfTUFUMiwgbG9j
YXRpb24sIGNvdW50LCB0cmFuc3Bvc2UpOworfQorCitib29sIFZhbGlkYXRlVW5pZm9ybU1hdHJp
eDNmdihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiB0cmFu
c3Bvc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGZsb2F0ICp2YWx1
ZSkKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVVbmlmb3JtTWF0cml4KGNvbnRleHQsIEdMX0ZMT0FU
X01BVDMsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlKTsKK30KKworYm9vbCBWYWxpZGF0ZVVu
aWZvcm1NYXRyaXg0ZnYoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJv
b2xlYW4gdHJhbnNwb3NlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xm
bG9hdCAqdmFsdWUpCit7CisgICAgcmV0dXJuIFZhbGlkYXRlVW5pZm9ybU1hdHJpeChjb250ZXh0
LCBHTF9GTE9BVF9NQVQ0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSk7Cit9CisKK2Jvb2wg
VmFsaWRhdGVWYWxpZGF0ZVByb2dyYW0oVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBwcm9ncmFtKQoreworICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFByb2dy
YW0oY29udGV4dCwgcHJvZ3JhbSk7CisKKyAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAgewor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJbmRleChWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwg
R0x1aW50IGluZGV4KQoreworICAgIGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
LCAiVmVydGV4IGF0dHJpYiBpbmRleCBvdXQgb2YgcmFuZ2UuIikpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVWZXJ0
ZXhBdHRyaWIxZihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGZs
b2F0IHgpCit7CisgICAgcmV0dXJuIFZhbGlkYXRlVmVydGV4QXR0cmliSW5kZXgoY29udGV4dCwg
aW5kZXgpOworfQorCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliMWZ2KFZhbGlkYXRpb25Db250
ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKK3sKKyAg
ICByZXR1cm4gVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJbmRleChjb250ZXh0LCBpbmRleCk7Cit9CisK
K2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIyZihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwg
R0x1aW50IGluZGV4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSkKK3sKKyAgICByZXR1cm4gVmFsaWRh
dGVWZXJ0ZXhBdHRyaWJJbmRleChjb250ZXh0LCBpbmRleCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWIyZnYoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwg
Y29uc3QgR0xmbG9hdCAqdmFsdWVzKQoreworICAgIHJldHVybiBWYWxpZGF0ZVZlcnRleEF0dHJp
YkluZGV4KGNvbnRleHQsIGluZGV4KTsKK30KKworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjNm
KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMZmxvYXQgeikKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJ
bmRleChjb250ZXh0LCBpbmRleCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIzZnYo
VmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAq
dmFsdWVzKQoreworICAgIHJldHVybiBWYWxpZGF0ZVZlcnRleEF0dHJpYkluZGV4KGNvbnRleHQs
IGluZGV4KTsKK30KKworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRmKFZhbGlkYXRpb25Db250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xmbG9hdCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZmxv
YXQgeiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHcpCit7CisgICAgcmV0
dXJuIFZhbGlkYXRlVmVydGV4QXR0cmliSW5kZXgoY29udGV4dCwgaW5kZXgpOworfQorCitib29s
IFZhbGlkYXRlVmVydGV4QXR0cmliNGZ2KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgaW5kZXgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcykKK3sKKyAgICByZXR1cm4gVmFsaWRhdGVW
ZXJ0ZXhBdHRyaWJJbmRleChjb250ZXh0LCBpbmRleCk7Cit9CisKK2Jvb2wgVmFsaWRhdGVWaWV3
cG9ydChWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXpl
aSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCit7CisgICAgaWYgKHdpZHRoIDwgMCB8fCBoZWlnaHQg
PCAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBF
cnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiVmlld3BvcnQgd2lkdGggYW5kIGhlaWdodCBtdXN0IGJl
IG5vbi1uZWdhdGl2ZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZURyYXdBcnJheXMoVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCkKK3sK
KyAgICByZXR1cm4gVmFsaWRhdGVEcmF3QXJyYXlzQ29tbW9uKGNvbnRleHQsIG1vZGUsIGZpcnN0
LCBjb3VudCwgMSk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBnbApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzIuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMyLmgKaW5kZXggNjVmZDMw
ZWI3MzguLjcxMDdkZDg0MDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMyLmgKQEAgLTE4LDM1ICsxOCw2IEBAIGNsYXNzIENv
bnRleHQ7CiBjbGFzcyBWYWxpZGF0aW9uQ29udGV4dDsKIGNsYXNzIFRleHR1cmU7CiAKLWJvb2wg
VmFsaWRhdGVFUzJUZXhJbWFnZVBhcmFtZXRlcnMoQ29udGV4dCAqY29udGV4dCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWwsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBpc0NvbXByZXNzZWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJvb2wgaXNTdWJJbWFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xpbnQgeG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeW9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBo
ZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaW1hZ2VTaXplLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBpeGVscyk7Ci0KLWJvb2wgVmFsaWRh
dGVFUzJDb3B5VGV4SW1hZ2VQYXJhbWV0ZXJzKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1N1YkltYWdlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHlvZmZzZXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IGJvcmRlcik7Ci0KIGJvb2wgVmFsaWRhdGVFUzJUZXhTdG9y
YWdlUGFyYW1ldGVycyhDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxl
dmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwog
CkBAIC0zMTgsNyArMjg5LDEwIEBAIGJvb2wgVmFsaWRhdGVQcm9ncmFtUGF0aEZyYWdtZW50SW5w
dXRHZW4oQ29udGV4dCAqY29udGV4dCwKIAogYm9vbCBWYWxpZGF0ZUNvcHlUZXh0dXJlQ0hST01J
VU0oQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBzb3VyY2VJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNv
dXJjZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RU
YXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgZGVzdElkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZGVzdExldmVsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZGVzdFR5cGUsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrRmxpcFksCkBAIC0zMjYsNyArMzAw
LDEwIEBAIGJvb2wgVmFsaWRhdGVDb3B5VGV4dHVyZUNIUk9NSVVNKENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrVW5tdWx0
aXBseUFscGhhKTsKIGJvb2wgVmFsaWRhdGVDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKENvbnRleHQg
KmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc291
cmNlSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzb3VyY2VM
ZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0VGFy
Z2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRlc3RJZCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRlc3RMZXZlbCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHhvZmZzZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeCwKQEAgLTM1MCwxMCArMzI3LDIzNiBAQCBi
b29sIFZhbGlkYXRlQnVmZmVyU3ViRGF0YShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWlwdHIgc2l6ZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEdMdm9pZCAqZGF0YSk7CiAKLWJvb2wgVmFsaWRhdGVFbmFibGVF
eHRlbnNpb25BTkdMRShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgY29uc3QgR0xjaGFyICpu
YW1lKTsKK2Jvb2wgVmFsaWRhdGVSZXF1ZXN0RXh0ZW5zaW9uQU5HTEUoVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsIGNvbnN0IEdMY2hhciAqbmFtZSk7CiAKIGJvb2wgVmFsaWRhdGVBY3RpdmVU
ZXh0dXJlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGV4dHVyZSk7CiBib29s
IFZhbGlkYXRlQXR0YWNoU2hhZGVyKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHVpbnQg
cHJvZ3JhbSwgR0x1aW50IHNoYWRlcik7Citib29sIFZhbGlkYXRlQmluZEF0dHJpYkxvY2F0aW9u
KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1
aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHTGNoYXIg
Km5hbWUpOworYm9vbCBWYWxpZGF0ZUJpbmRCdWZmZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSB0YXJnZXQsIEdMdWludCBidWZmZXIpOworYm9vbCBWYWxpZGF0ZUJpbmRGcmFt
ZWJ1ZmZlcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50
IGZyYW1lYnVmZmVyKTsKK2Jvb2wgVmFsaWRhdGVCaW5kUmVuZGVyYnVmZmVyKFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKTsKK2Jv
b2wgVmFsaWRhdGVCbGVuZENvbG9yKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgR0xjbGFtcGYgcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAg
R0xjbGFtcGYgZ3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICBHTGNsYW1wZiBibHVlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgR0xjbGFtcGYgYWxwaGEpOworYm9vbCBWYWxpZGF0ZUJs
ZW5kRXF1YXRpb24oVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlKTsKK2Jv
b2wgVmFsaWRhdGVCbGVuZEVxdWF0aW9uU2VwYXJhdGUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRl
eHQsIEdMZW51bSBtb2RlUkdCLCBHTGVudW0gbW9kZUFscGhhKTsKK2Jvb2wgVmFsaWRhdGVCbGVu
ZEZ1bmMoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSBzZmFjdG9yLCBHTGVudW0g
ZGZhY3Rvcik7Citib29sIFZhbGlkYXRlQmxlbmRGdW5jU2VwYXJhdGUoVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNyY1JH
QiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZHN0UkdCLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzcmNBbHBoYSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZHN0QWxwaGEpOworCitib29sIFZhbGlkYXRlR2V0U3Ry
aW5nKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBuYW1lKTsKK2Jvb2wgVmFsaWRhdGVMaW5lV2lk
dGgoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZmxvYXQgd2lkdGgpOworYm9vbCBWYWxp
ZGF0ZVZlcnRleEF0dHJpYlBvaW50ZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xlbnVtIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGJvb2xlYW4gbm9ybWFsaXplZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgc3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2
b2lkICpwdHIpOworCitib29sIFZhbGlkYXRlRGVwdGhSYW5nZWYoVmFsaWRhdGlvbkNvbnRleHQg
KmNvbnRleHQsIEdMY2xhbXBmIHpOZWFyLCBHTGNsYW1wZiB6RmFyKTsKK2Jvb2wgVmFsaWRhdGVS
ZW5kZXJidWZmZXJTdG9yYWdlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHNpemVpIGhlaWdodCk7Citib29sIFZhbGlkYXRlUmVuZGVyYnVmZmVyU3RvcmFn
ZU11bHRpc2FtcGxlQU5HTEUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHNh
bXBsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBoZWlnaHQpOworCitib29sIFZhbGlkYXRl
Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IHRhcmdldCk7Citib29sIFZhbGlkYXRlQ2xlYXJDb2xvcihWYWxpZGF0aW9uQ29udGV4dCAqY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMY2xhbXBmIHJlZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEdMY2xhbXBmIGdyZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAgR0xj
bGFtcGYgYmx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMY2xhbXBmIGFscGhhKTsKK2Jv
b2wgVmFsaWRhdGVDbGVhckRlcHRoZihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xjbGFt
cGYgZGVwdGgpOworYm9vbCBWYWxpZGF0ZUNsZWFyU3RlbmNpbChWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwgR0xpbnQgcyk7Citib29sIFZhbGlkYXRlQ29sb3JNYXNrKFZhbGlkYXRpb25Db250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gcmVkLAorICAg
ICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gZ3JlZW4sCisgICAgICAgICAgICAgICAgICAg
ICAgIEdMYm9vbGVhbiBibHVlLAorICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gYWxw
aGEpOworYm9vbCBWYWxpZGF0ZUNvbXBpbGVTaGFkZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRl
eHQsIEdMdWludCBzaGFkZXIpOworYm9vbCBWYWxpZGF0ZUNyZWF0ZVByb2dyYW0oVmFsaWRhdGlv
bkNvbnRleHQgKmNvbnRleHQpOworYm9vbCBWYWxpZGF0ZUN1bGxGYWNlKFZhbGlkYXRpb25Db250
ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSk7Citib29sIFZhbGlkYXRlRGVsZXRlUHJvZ3JhbShW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0pOworYm9vbCBWYWxpZGF0
ZURlbGV0ZVNoYWRlcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHNoYWRlcik7
Citib29sIFZhbGlkYXRlRGVwdGhGdW5jKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gZnVuYyk7Citib29sIFZhbGlkYXRlRGVwdGhNYXNrKFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LCBHTGJvb2xlYW4gZmxhZyk7Citib29sIFZhbGlkYXRlRGV0YWNoU2hhZGVyKFZhbGlkYXRp
b25Db250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IHNoYWRlcik7Citib29s
IFZhbGlkYXRlRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LCBHTHVpbnQgaW5kZXgpOworYm9vbCBWYWxpZGF0ZUVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5kZXgpOworYm9vbCBWYWxpZGF0
ZUZpbmlzaChWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCk7Citib29sIFZhbGlkYXRlRmx1c2go
VmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQpOworYm9vbCBWYWxpZGF0ZUZyb250RmFjZShWYWxp
ZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUpOworYm9vbCBWYWxpZGF0ZUdldEFj
dGl2ZUF0dHJpYihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZz
aXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICpsZW5ndGgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpzaXplLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGVudW0gKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
Y2hhciAqbmFtZSk7Citib29sIFZhbGlkYXRlR2V0QWN0aXZlVW5pZm9ybShWYWxpZGF0aW9uQ29u
dGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9n
cmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZzaXplLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgKnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
KnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGNoYXIgKm5hbWUpOworYm9v
bCBWYWxpZGF0ZUdldEF0dGFjaGVkU2hhZGVycyhWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbWF4Y291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgKnNoYWRlcnMpOworYm9vbCBWYWxpZGF0ZUdldEF0dHJpYkxvY2F0
aW9uKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xj
aGFyICpuYW1lKTsKK2Jvb2wgVmFsaWRhdGVHZXRCb29sZWFudihWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4gKnBhcmFtcyk7Citib29sIFZhbGlkYXRl
R2V0RXJyb3IoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQpOworYm9vbCBWYWxpZGF0ZUdldEZs
b2F0dihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpw
YXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldEludGVnZXJ2KFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworYm9vbCBWYWxpZGF0ZUdldFByb2dy
YW1JbmZvTG9nKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNp
emVpICpsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICppbmZv
bG9nKTsKK2Jvb2wgVmFsaWRhdGVHZXRTaGFkZXJJbmZvTG9nKFZhbGlkYXRpb25Db250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHNoYWRlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgYnVmc2l6ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMY2hhciAqaW5mb2xvZyk7Citib29sIFZhbGlkYXRlR2V0U2hhZGVyUHJlY2lz
aW9uRm9ybWF0KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gc2hhZGVydHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHByZWNpc2lvbnR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50ICpyYW5nZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnByZWNpc2lvbik7Citib29sIFZhbGlkYXRlR2V0
U2hhZGVyU291cmNlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHVpbnQgc2hhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGJ1ZnNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjaGFyICpzb3VyY2UpOwor
Ym9vbCBWYWxpZGF0ZUdldFVuaWZvcm1Mb2NhdGlvbihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciAqbmFtZSk7Citib29sIFZhbGlkYXRlSGlu
dChWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIG1vZGUp
OworYm9vbCBWYWxpZGF0ZUlzQnVmZmVyKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHVp
bnQgYnVmZmVyKTsKK2Jvb2wgVmFsaWRhdGVJc0ZyYW1lYnVmZmVyKFZhbGlkYXRpb25Db250ZXh0
ICpjb250ZXh0LCBHTHVpbnQgZnJhbWVidWZmZXIpOworYm9vbCBWYWxpZGF0ZUlzUHJvZ3JhbShW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0pOworYm9vbCBWYWxpZGF0
ZUlzUmVuZGVyYnVmZmVyKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcmVuZGVy
YnVmZmVyKTsKK2Jvb2wgVmFsaWRhdGVJc1NoYWRlcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IHNoYWRlcik7Citib29sIFZhbGlkYXRlSXNUZXh0dXJlKFZhbGlkYXRpb25Db250
ZXh0ICpjb250ZXh0LCBHTHVpbnQgdGV4dHVyZSk7Citib29sIFZhbGlkYXRlUGl4ZWxTdG9yZWko
VmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOwor
Ym9vbCBWYWxpZGF0ZVBvbHlnb25PZmZzZXQoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdM
ZmxvYXQgZmFjdG9yLCBHTGZsb2F0IHVuaXRzKTsKK2Jvb2wgVmFsaWRhdGVSZWxlYXNlU2hhZGVy
Q29tcGlsZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQpOworYm9vbCBWYWxpZGF0ZVNhbXBs
ZUNvdmVyYWdlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGNsYW1wZiB2YWx1ZSwgR0xi
b29sZWFuIGludmVydCk7Citib29sIFZhbGlkYXRlU2Npc3NvcihWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQp
OworYm9vbCBWYWxpZGF0ZVNoYWRlckJpbmFyeShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBuLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTHVpbnQgKnNoYWRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSBiaW5hcnlmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
dm9pZCAqYmluYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGxlbmd0aCk7
Citib29sIFZhbGlkYXRlU2hhZGVyU291cmNlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgc2hhZGVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBHTGNoYXIgKmNvbnN0ICpzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMaW50ICpsZW5ndGgpOworYm9vbCBWYWxpZGF0ZVN0ZW5jaWxGdW5jKFZhbGlkYXRpb25Db250
ZXh0ICpjb250ZXh0LCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzayk7Citib29s
IFZhbGlkYXRlU3RlbmNpbEZ1bmNTZXBhcmF0ZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmYWNlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZ1bmMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGludCByZWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbWFzayk7Citib29sIFZhbGlkYXRlU3RlbmNpbE1hc2soVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsIEdMdWludCBtYXNrKTsKK2Jvb2wgVmFsaWRhdGVTdGVuY2lsTWFza1NlcGFy
YXRlKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gZmFjZSwgR0x1aW50IG1hc2sp
OworYm9vbCBWYWxpZGF0ZVN0ZW5jaWxPcChWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xl
bnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKTsKK2Jvb2wgVmFsaWRhdGVTdGVu
Y2lsT3BTZXBhcmF0ZShWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gZmFpbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
emZhaWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHpwYXNzKTsKK2Jv
b2wgVmFsaWRhdGVVbmlmb3JtMWYoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMaW50IGxv
Y2F0aW9uLCBHTGZsb2F0IHgpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm0xZnYoVmFsaWRhdGlvbkNv
bnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgY291bnQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBHTGZsb2F0ICp2KTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtMmYoVmFsaWRh
dGlvbkNvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQg
eSk7Citib29sIFZhbGlkYXRlVW5pZm9ybTJmdihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwK
KyAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKnYpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm0yaShWYWxpZGF0aW9uQ29udGV4dCAqY29u
dGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHkpOworYm9vbCBWYWxpZGF0ZVVu
aWZvcm0yaXYoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMaW50IGxvY2F0aW9uLCBHTHNp
emVpIGNvdW50LCBjb25zdCBHTGludCAqdik7Citib29sIFZhbGlkYXRlVW5pZm9ybTNmKFZhbGlk
YXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0
IHksIEdMZmxvYXQgeik7Citib29sIFZhbGlkYXRlVW5pZm9ybTNmdihWYWxpZGF0aW9uQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxvY2F0aW9uLAorICAg
ICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZmxvYXQgKnYpOworYm9vbCBWYWxpZGF0ZVVuaWZvcm0zaShWYWxpZGF0aW9u
Q29udGV4dCAqY29udGV4dCwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHksIEdMaW50
IHopOworYm9vbCBWYWxpZGF0ZVVuaWZvcm0zaXYoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQs
IEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdik7Citib29sIFZh
bGlkYXRlVW5pZm9ybTRmKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9h
dCB4LAorICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHksCisgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgeiwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB3KTsKK2Jv
b2wgVmFsaWRhdGVVbmlmb3JtNGZ2KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xmbG9hdCAq
dik7Citib29sIFZhbGlkYXRlVW5pZm9ybTRpKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICBHTGludCBsb2NhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeiwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdyk7
Citib29sIFZhbGlkYXRlVW5pZm9ybTRpdihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KTsKK2Jvb2wgVmFsaWRh
dGVVbmlmb3JtTWF0cml4MmZ2KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMZmxvYXQgKnZhbHVlKTsKK2Jvb2wgVmFsaWRhdGVVbmlmb3JtTWF0cml4M2Z2KFZhbGlkYXRp
b25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
bG9jYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK2Jvb2wgVmFs
aWRhdGVVbmlmb3JtTWF0cml4NGZ2KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xib29sZWFuIHRyYW5zcG9zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IEdMZmxvYXQgKnZhbHVlKTsKK2Jvb2wgVmFsaWRhdGVWYWxpZGF0ZVByb2dyYW0oVmFsaWRh
dGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBwcm9ncmFtKTsKK2Jvb2wgVmFsaWRhdGVWZXJ0
ZXhBdHRyaWIxZihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBHTGZs
b2F0IHgpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjFmdihWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpOworYm9vbCBWYWxp
ZGF0ZVZlcnRleEF0dHJpYjJmKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTHVpbnQgaW5k
ZXgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5KTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIyZnYo
VmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsIEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAq
dmFsdWVzKTsKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWIzZihWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZmxvYXQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHop
OworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjNmdihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4
dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpOworYm9vbCBWYWxpZGF0ZVZl
cnRleEF0dHJpYjRmKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCB5LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgeiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0IHcpOworYm9vbCBWYWxpZGF0ZVZlcnRleEF0dHJpYjRmdihWYWxpZGF0aW9u
Q29udGV4dCAqY29udGV4dCwgR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMpOwor
Ym9vbCBWYWxpZGF0ZVZpZXdwb3J0KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGludCB4
LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7CisKK2Jvb2wgVmFsaWRh
dGVEcmF3QXJyYXlzKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBHTGVudW0gbW9kZSwgR0xp
bnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpOwogCiB9ICAvLyBuYW1lc3BhY2UgZ2wKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMu
Y3BwCmluZGV4IDBlMjU3ZmY0Njc5Li43Mjg4ZGRlZGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuY3BwCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzLmNwcApAQCAtOCw2
ICs4LDkgQEAKIAogI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUzMuaCIKIAorI2luY2x1
ZGUgImJhc2UvbnVtZXJpY3Mvc2FmZV9jb252ZXJzaW9ucy5oIgorI2luY2x1ZGUgImNvbW1vbi9t
YXRodXRpbC5oIgorI2luY2x1ZGUgImNvbW1vbi91dGlsaXRpZXMuaCIKICNpbmNsdWRlICJsaWJB
TkdMRS92YWxpZGF0aW9uRVMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCiAjaW5j
bHVkZSAibGliQU5HTEUvVGV4dHVyZS5oIgpAQCAtMTYsMjIgKzE5LDIyIEBACiAjaW5jbHVkZSAi
bGliQU5HTEUvZm9ybWF0dXRpbHMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0
dGFjaG1lbnQuaCIKIAotI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgotI2luY2x1ZGUgImNv
bW1vbi91dGlsaXRpZXMuaCIKLQogdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwogCiBuYW1lc3BhY2Ug
Z2wKIHsKIAotc3RhdGljIGJvb2wgVmFsaWRhdGVUZXhJbWFnZUZvcm1hdENvbWJpbmF0aW9uKGds
OjpDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gaW50ZXJuYWxGb3JtYXQsIEdMZW51bSBmb3JtYXQs
IEdMZW51bSB0eXBlKQorc3RhdGljIGJvb2wgVmFsaWRhdGVUZXhJbWFnZUZvcm1hdENvbWJpbmF0
aW9uKGdsOjpDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5hbEZvcm1hdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlKQogewogICAgIC8v
IEZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIGdsVGV4SW1hZ2UyRCBhbmQgZ2xUZXhJbWFnZTNEIHBh
c3MgaW4gdGhlaXIgaW50ZXJuYWwgZm9ybWF0IGFzIGEKICAgICAvLyBHTGludCBpbnN0ZWFkIG9m
IGEgR0xlbnVtLiBUaGVyZWZvciBhbiBpbnZhbGlkIGludGVybmFsIGZvcm1hdCBnaXZlcyBhIEdM
X0lOVkFMSURfVkFMVUUKICAgICAvLyBlcnJvciBpbnN0ZWFkIG9mIGEgR0xfSU5WQUxJRF9FTlVN
IGVycm9yLiBBcyB0aGlzIHZhbGlkYXRpb24gZnVuY3Rpb24gaXMgb25seSBjYWxsZWQgaW4KICAg
ICAvLyB0aGUgdmFsaWRhdGlvbiBjb2RlcGF0aHMgZm9yIGdsVGV4SW1hZ2UyRC8zRCwgd2UgcmVj
b3JkIGEgR0xfSU5WQUxJRF9WQUxVRSBlcnJvci4KICAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3Jt
YXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0
KTsKLSAgICBpZiAoIWZvcm1hdEluZm8udGV4dHVyZVN1cHBvcnQoY29udGV4dC0+Z2V0Q2xpZW50
TWFqb3JWZXJzaW9uKCksIGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKSkpCisgICAgaWYgKCFmb3Jt
YXRJbmZvLnRleHR1cmVTdXBwb3J0KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSwgY29udGV4
dC0+Z2V0RXh0ZW5zaW9ucygpKSkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTks
NjAgKzEwMiw2MSBAQCBib29sIFZhbGlkYXRlRVMzVGV4SW1hZ2VQYXJhbWV0ZXJzQmFzZShDb250
ZXh0ICpjb250ZXh0LAogCiAgICAgc3dpdGNoICh0YXJnZXQpCiAgICAgewotICAgICAgY2FzZSBH
TF9URVhUVVJFXzJEOgotICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8R0x1aW50Pih3aWR0aCkgPiAo
Y2Fwcy5tYXgyRFRleHR1cmVTaXplID4+IGxldmVsKSB8fAotICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8R0x1aW50PihoZWlnaHQpID4gKGNhcHMubWF4MkRUZXh0dXJlU2l6ZSA+PiBsZXZlbCkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUpKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFXzJEOgorICAgICAgICAgICAgaWYgKHN0
YXRpY19jYXN0PEdMdWludD4od2lkdGgpID4gKGNhcHMubWF4MkRUZXh0dXJlU2l6ZSA+PiBsZXZl
bCkgfHwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGhlaWdodCkgPiAoY2Fw
cy5tYXgyRFRleHR1cmVTaXplID4+IGxldmVsKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJl
YWs7CiAKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOgotICAgICAg
Y2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6Ci0gICAgICBjYXNlIEdMX1RFWFRV
UkVfQ1VCRV9NQVBfUE9TSVRJVkVfWToKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9O
RUdBVElWRV9ZOgotICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6Ci0g
ICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWjoKLSAgICAgICAgaWYgKCFp
c1N1YkltYWdlICYmIHdpZHRoICE9IGhlaWdodCkKLSAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9YOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVf
WDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1k6CisgICAgICAg
IGNhc2UgR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZOgorICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWjoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVf
TUFQX05FR0FUSVZFX1o6CisgICAgICAgICAgICBpZiAoIWlzU3ViSW1hZ2UgJiYgd2lkdGggIT0g
aGVpZ2h0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PEdMdWludD4od2lk
dGgpID4gKGNhcHMubWF4Q3ViZU1hcFRleHR1cmVTaXplID4+IGxldmVsKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkp
OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PEdMdWludD4od2lkdGgpID4gKGNhcHMubWF4Q3Vi
ZU1hcFRleHR1cmVTaXplID4+IGxldmVsKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgIGNhc2UgR0xfVEVYVFVSRV8zRDoKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PEdM
dWludD4od2lkdGgpID4gKGNhcHMubWF4M0RUZXh0dXJlU2l6ZSA+PiBsZXZlbCkgfHwKLSAgICAg
ICAgICAgIHN0YXRpY19jYXN0PEdMdWludD4oaGVpZ2h0KSA+IChjYXBzLm1heDNEVGV4dHVyZVNp
emUgPj4gbGV2ZWwpIHx8Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGRlcHRoKSA+
IChjYXBzLm1heDNEVGV4dHVyZVNpemUgPj4gbGV2ZWwpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgR0xfVEVYVFVSRV8zRDoKKyAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KHdp
ZHRoKSA+IChjYXBzLm1heDNEVGV4dHVyZVNpemUgPj4gbGV2ZWwpIHx8CisgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8R0x1aW50PihoZWlnaHQpID4gKGNhcHMubWF4M0RUZXh0dXJlU2l6ZSA+
PiBsZXZlbCkgfHwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGRlcHRoKSA+
IChjYXBzLm1heDNEVGV4dHVyZVNpemUgPj4gbGV2ZWwpKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgY2FzZSBHTF9URVhUVVJFXzJEX0FSUkFZOgotICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8R0x1aW50Pih3aWR0aCkgPiAoY2Fwcy5tYXgyRFRleHR1cmVTaXplID4+IGxl
dmVsKSB8fAotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihoZWlnaHQpID4gKGNhcHMu
bWF4MkRUZXh0dXJlU2l6ZSA+PiBsZXZlbCkgfHwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PEdM
dWludD4oZGVwdGgpID4gY2Fwcy5tYXhBcnJheVRleHR1cmVMYXllcnMpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBHTF9URVhUVVJFXzJEX0FSUkFZOgorICAgICAgICAgICAgaWYgKHN0YXRpY19j
YXN0PEdMdWludD4od2lkdGgpID4gKGNhcHMubWF4MkRUZXh0dXJlU2l6ZSA+PiBsZXZlbCkgfHwK
KyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGhlaWdodCkgPiAoY2Fwcy5tYXgy
RFRleHR1cmVTaXplID4+IGxldmVsKSB8fAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEdM
dWludD4oZGVwdGgpID4gY2Fwcy5tYXhBcnJheVRleHR1cmVMYXllcnMpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9W
QUxVRSkpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgICBkZWZhdWx0OgotICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX0VOVU0pKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
LSAgICBnbDo6VGV4dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUoSXND
dWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpID8gR0xfVEVYVFVSRV9DVUJFX01BUCA6IHRhcmdl
dCk7CisgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUgPQorICAgICAgICBjb250ZXh0LT5nZXRUYXJn
ZXRUZXh0dXJlKElzQ3ViZU1hcFRleHR1cmVUYXJnZXQodGFyZ2V0KSA/IEdMX1RFWFRVUkVfQ1VC
RV9NQVAgOiB0YXJnZXQpOwogICAgIGlmICghdGV4dHVyZSkKICAgICB7CiAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CkBAIC0xNjgsNiAr
MTcyLDEyIEBAIGJvb2wgVmFsaWRhdGVFUzNUZXhJbWFnZVBhcmFtZXRlcnNCYXNlKENvbnRleHQg
KmNvbnRleHQsCiAgICAgLy8gVmFsaWRhdGUgdGV4dHVyZSBmb3JtYXRzCiAgICAgR0xlbnVtIGFj
dHVhbEludGVybmFsRm9ybWF0ID0KICAgICAgICAgaXNTdWJJbWFnZSA/IHRleHR1cmUtPmdldEZv
cm1hdCh0YXJnZXQsIGxldmVsKS5hc1NpemVkKCkgOiBpbnRlcm5hbGZvcm1hdDsKKyAgICBpZiAo
aXNTdWJJbWFnZSAmJiBhY3R1YWxJbnRlcm5hbEZvcm1hdCA9PSBHTF9OT05FKQorICAgIHsKKyAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJU
ZXh0dXJlIGxldmVsIGRvZXMgbm90IGV4aXN0LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKwogICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmYWN0dWFsRm9ybWF0SW5mbyA9
IGdsOjpHZXRJbnRlcm5hbEZvcm1hdEluZm8oYWN0dWFsSW50ZXJuYWxGb3JtYXQpOwogICAgIGlm
IChpc0NvbXByZXNzZWQpCiAgICAgewpAQCAtMTc4LDE0ICsxODgsMTQgQEAgYm9vbCBWYWxpZGF0
ZUVTM1RleEltYWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghVmFsaWRDb21wcmVzc2Vk
SW1hZ2VTaXplKGNvbnRleHQsIGFjdHVhbEludGVybmFsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSkK
KyAgICAgICAgaWYgKCFWYWxpZENvbXByZXNzZWRJbWFnZVNpemUoY29udGV4dCwgYWN0dWFsSW50
ZXJuYWxGb3JtYXQsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWlnaHQpKQogICAgICAgICB7CiAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFhY3R1YWxGb3JtYXRJ
bmZvLnRleHR1cmVTdXBwb3J0KGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0RXh0
ZW5zaW9ucygpKSkKKyAgICAgICAgaWYgKCFhY3R1YWxGb3JtYXRJbmZvLnRleHR1cmVTdXBwb3J0
KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKSkK
ICAgICAgICAgewogICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNTgsNyArMjY4LDgg
QEAgYm9vbCBWYWxpZGF0ZUVTM1RleEltYWdlUGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4
dCwKICAgICBnbDo6QnVmZmVyICpwaXhlbFVucGFja0J1ZmZlciA9IGNvbnRleHQtPmdldEdMU3Rh
dGUoKS5nZXRUYXJnZXRCdWZmZXIoR0xfUElYRUxfVU5QQUNLX0JVRkZFUik7CiAgICAgaWYgKHBp
eGVsVW5wYWNrQnVmZmVyICE9IG51bGxwdHIpCiAgICAgewotICAgICAgICAvLyAuLi5kYXRhIGlz
IG5vdCBldmVubHkgZGl2aXNpYmxlIGludG8gdGhlIG51bWJlciBvZiBieXRlcyBuZWVkZWQgdG8g
c3RvcmUgaW4gbWVtb3J5IGEgZGF0dW0KKyAgICAgICAgLy8gLi4uZGF0YSBpcyBub3QgZXZlbmx5
IGRpdmlzaWJsZSBpbnRvIHRoZSBudW1iZXIgb2YgYnl0ZXMgbmVlZGVkIHRvIHN0b3JlIGluIG1l
bW9yeSBhCisgICAgICAgIC8vIGRhdHVtCiAgICAgICAgIC8vIGluZGljYXRlZCBieSB0eXBlLgog
ICAgICAgICBpZiAoIWlzQ29tcHJlc3NlZCkKICAgICAgICAgewpAQCAtNDM3LDcgKzQ0OCw4IEBA
IGJvb2wgR2V0VW5zaXplZEVmZmVjdGl2ZUludGVybmFsRm9ybWF0SW5mbyhjb25zdCBJbnRlcm5h
bEZvcm1hdCAmc3JjRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3V0RWZmZWN0aXZlRm9ybWF0KTsKIH0KIAotc3RhdGljIGJvb2wgR2V0RWZmZWN0aXZlSW50ZXJu
YWxGb3JtYXQoY29uc3QgSW50ZXJuYWxGb3JtYXQgJnNyY0Zvcm1hdCwgY29uc3QgSW50ZXJuYWxG
b3JtYXQgJmRlc3RGb3JtYXQsCitzdGF0aWMgYm9vbCBHZXRFZmZlY3RpdmVJbnRlcm5hbEZvcm1h
dChjb25zdCBJbnRlcm5hbEZvcm1hdCAmc3JjRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgSW50ZXJuYWxGb3JtYXQgJmRlc3RGb3JtYXQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gKm91dEVmZmVjdGl2ZUZv
cm1hdCkKIHsKICAgICBpZiAoZGVzdEZvcm1hdC5waXhlbEJ5dGVzID4gMCkKQEAgLTQ1MCw2OCAr
NDYyLDYgQEAgc3RhdGljIGJvb2wgR2V0RWZmZWN0aXZlSW50ZXJuYWxGb3JtYXQoY29uc3QgSW50
ZXJuYWxGb3JtYXQgJnNyY0Zvcm1hdCwgY29uc3QgSW4KICAgICB9CiB9CiAKLXN0cnVjdCBDb3B5
Q29udmVyc2lvbgotewotICAgIEdMZW51bSBtVGV4dHVyZUZvcm1hdDsKLSAgICBHTGVudW0gbUZy
YW1lYnVmZmVyRm9ybWF0OwotCi0gICAgQ29weUNvbnZlcnNpb24oR0xlbnVtIHRleHR1cmVGb3Jt
YXQsIEdMZW51bSBmcmFtZWJ1ZmZlckZvcm1hdCkKLSAgICAgICAgOiBtVGV4dHVyZUZvcm1hdCh0
ZXh0dXJlRm9ybWF0KSwgbUZyYW1lYnVmZmVyRm9ybWF0KGZyYW1lYnVmZmVyRm9ybWF0KSB7IH0K
LQotICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IENvcHlDb252ZXJzaW9uJiBvdGhlcikgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBtZW1jbXAodGhpcywgJm90aGVyLCBzaXplb2YoQ29weUNv
bnZlcnNpb24pKSA8IDA7Ci0gICAgfQotfTsKLQotdHlwZWRlZiBzdGQ6OnNldDxDb3B5Q29udmVy
c2lvbj4gQ29weUNvbnZlcnNpb25TZXQ7Ci0KLXN0YXRpYyBDb3B5Q29udmVyc2lvblNldCBCdWls
ZFZhbGlkRVMzQ29weVRleEltYWdlQ29tYmluYXRpb25zKCkKLXsKLSAgICBDb3B5Q29udmVyc2lv
blNldCBzZXQ7Ci0KLSAgICAvLyBGcm9tIEVTIDMuMC4xIHNwZWMsIHRhYmxlIDMuMTUKLSAgICBz
ZXQuaW5zZXJ0KENvcHlDb252ZXJzaW9uKEdMX0FMUEhBLCBHTF9SR0JBKSk7Ci0gICAgc2V0Lmlu
c2VydChDb3B5Q29udmVyc2lvbihHTF9MVU1JTkFOQ0UsIEdMX1JFRCkpOwotICAgIHNldC5pbnNl
cnQoQ29weUNvbnZlcnNpb24oR0xfTFVNSU5BTkNFLCBHTF9SRykpOwotICAgIHNldC5pbnNlcnQo
Q29weUNvbnZlcnNpb24oR0xfTFVNSU5BTkNFLCBHTF9SR0IpKTsKLSAgICBzZXQuaW5zZXJ0KENv
cHlDb252ZXJzaW9uKEdMX0xVTUlOQU5DRSwgR0xfUkdCQSkpOwotICAgIHNldC5pbnNlcnQoQ29w
eUNvbnZlcnNpb24oR0xfTFVNSU5BTkNFX0FMUEhBLCBHTF9SR0JBKSk7Ci0gICAgc2V0Lmluc2Vy
dChDb3B5Q29udmVyc2lvbihHTF9SRUQsIEdMX1JFRCkpOwotICAgIHNldC5pbnNlcnQoQ29weUNv
bnZlcnNpb24oR0xfUkVELCBHTF9SRykpOwotICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24o
R0xfUkVELCBHTF9SR0IpKTsKLSAgICBzZXQuaW5zZXJ0KENvcHlDb252ZXJzaW9uKEdMX1JFRCwg
R0xfUkdCQSkpOwotICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24oR0xfUkcsIEdMX1JHKSk7
Ci0gICAgc2V0Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9SRywgR0xfUkdCKSk7Ci0gICAgc2V0
Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9SRywgR0xfUkdCQSkpOwotICAgIHNldC5pbnNlcnQo
Q29weUNvbnZlcnNpb24oR0xfUkdCLCBHTF9SR0IpKTsKLSAgICBzZXQuaW5zZXJ0KENvcHlDb252
ZXJzaW9uKEdMX1JHQiwgR0xfUkdCQSkpOwotICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24o
R0xfUkdCQSwgR0xfUkdCQSkpOwotCi0gICAgLy8gTmVjZXNzYXJ5IGZvciBBTkdMRSBiYWNrLWJ1
ZmZlcnMKLSAgICBzZXQuaW5zZXJ0KENvcHlDb252ZXJzaW9uKEdMX0FMUEhBLCBHTF9CR1JBX0VY
VCkpOwotICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24oR0xfTFVNSU5BTkNFLCBHTF9CR1JB
X0VYVCkpOwotICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24oR0xfTFVNSU5BTkNFX0FMUEhB
LCBHTF9CR1JBX0VYVCkpOwotICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24oR0xfUkVELCBH
TF9CR1JBX0VYVCkpOwotICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24oR0xfUkcsIEdMX0JH
UkFfRVhUKSk7Ci0gICAgc2V0Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9SR0IsIEdMX0JHUkFf
RVhUKSk7Ci0gICAgc2V0Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9SR0JBLCBHTF9CR1JBX0VY
VCkpOwotICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24oR0xfQkdSQV9FWFQsIEdMX0JHUkFf
RVhUKSk7Ci0KLSAgICBzZXQuaW5zZXJ0KENvcHlDb252ZXJzaW9uKEdMX1JFRF9JTlRFR0VSLCBH
TF9SRURfSU5URUdFUikpOwotICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24oR0xfUkVEX0lO
VEVHRVIsIEdMX1JHX0lOVEVHRVIpKTsKLSAgICBzZXQuaW5zZXJ0KENvcHlDb252ZXJzaW9uKEdM
X1JFRF9JTlRFR0VSLCBHTF9SR0JfSU5URUdFUikpOwotICAgIHNldC5pbnNlcnQoQ29weUNvbnZl
cnNpb24oR0xfUkVEX0lOVEVHRVIsIEdMX1JHQkFfSU5URUdFUikpOwotICAgIHNldC5pbnNlcnQo
Q29weUNvbnZlcnNpb24oR0xfUkdfSU5URUdFUiwgR0xfUkdfSU5URUdFUikpOwotICAgIHNldC5p
bnNlcnQoQ29weUNvbnZlcnNpb24oR0xfUkdfSU5URUdFUiwgR0xfUkdCX0lOVEVHRVIpKTsKLSAg
ICBzZXQuaW5zZXJ0KENvcHlDb252ZXJzaW9uKEdMX1JHX0lOVEVHRVIsIEdMX1JHQkFfSU5URUdF
UikpOwotICAgIHNldC5pbnNlcnQoQ29weUNvbnZlcnNpb24oR0xfUkdCX0lOVEVHRVIsIEdMX1JH
Ql9JTlRFR0VSKSk7Ci0gICAgc2V0Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9SR0JfSU5URUdF
UiwgR0xfUkdCQV9JTlRFR0VSKSk7Ci0gICAgc2V0Lmluc2VydChDb3B5Q29udmVyc2lvbihHTF9S
R0JBX0lOVEVHRVIsIEdMX1JHQkFfSU5URUdFUikpOwotCi0gICAgcmV0dXJuIHNldDsKLX0KLQog
c3RhdGljIGJvb2wgRXF1YWxPckZpcnN0WmVybyhHTHVpbnQgZmlyc3QsIEdMdWludCBzZWNvbmQp
CiB7CiAgICAgcmV0dXJuIGZpcnN0ID09IDAgfHwgZmlyc3QgPT0gc2Vjb25kOwpAQCAtNTI0LDEz
MiArNDc0LDEyOSBAQCBzdGF0aWMgYm9vbCBJc1ZhbGlkRVMzQ29weVRleEltYWdlQ29tYmluYXRp
b24oY29uc3QgRm9ybWF0ICZ0ZXh0dXJlRm9ybWF0LAogICAgIGNvbnN0IGF1dG8gJnRleHR1cmVG
b3JtYXRJbmZvICAgICA9ICp0ZXh0dXJlRm9ybWF0LmluZm87CiAgICAgY29uc3QgYXV0byAmZnJh
bWVidWZmZXJGb3JtYXRJbmZvID0gKmZyYW1lYnVmZmVyRm9ybWF0LmluZm87CiAKLSNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAi
LVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMiCi0gICAgc3RhdGljIGNvbnN0IENvcHlDb252ZXJzaW9u
U2V0IGNvbnZlcnNpb25TZXQgPSBCdWlsZFZhbGlkRVMzQ29weVRleEltYWdlQ29tYmluYXRpb25z
KCk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCi0gICAgaWYgKGNvbnZlcnNpb25TZXQu
ZmluZChDb3B5Q29udmVyc2lvbih0ZXh0dXJlRm9ybWF0SW5mby5mb3JtYXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlckZvcm1hdEluZm8uZm9y
bWF0KSkgIT0gY29udmVyc2lvblNldC5lbmQoKSkKKyAgICBpZiAoIVZhbGlkRVMzQ29weUNvbnZl
cnNpb24odGV4dHVyZUZvcm1hdEluZm8uZm9ybWF0LCBmcmFtZWJ1ZmZlckZvcm1hdEluZm8uZm9y
bWF0KSkKICAgICB7Ci0gICAgICAgIC8vIFNlY3Rpb24gMy44LjUgb2YgdGhlIEdMRVMgMy4wLjMg
c3BlYyBzdGF0ZXMgdGhhdCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGZvcm1hdHMKLSAgICAgICAg
Ly8gbXVzdCBib3RoIGJlIHNpZ25lZCwgdW5zaWduZWQsIG9yIGZpeGVkIHBvaW50IGFuZCBib3Ro
IHNvdXJjZSBhbmQgZGVzdGluYXRpb25zCi0gICAgICAgIC8vIG11c3QgYmUgZWl0aGVyIGJvdGgg
U1JHQiBvciBib3RoIG5vdCBTUkdCLiBFWFRfY29sb3JfYnVmZmVyX2Zsb2F0IGFkZHMgYWxsb3dl
ZAotICAgICAgICAvLyBjb252ZXJzaW9uIGJldHdlZW4gZml4ZWQgYW5kIGZsb2F0aW5nIHBvaW50
LgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCi0gICAgICAgIGlmICgodGV4dHVyZUZv
cm1hdEluZm8uY29sb3JFbmNvZGluZyA9PSBHTF9TUkdCKSAhPQotICAgICAgICAgICAgKGZyYW1l
YnVmZmVyRm9ybWF0SW5mby5jb2xvckVuY29kaW5nID09IEdMX1NSR0IpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAvLyBTZWN0aW9uIDMuOC41
IG9mIHRoZSBHTEVTIDMuMC4zIHNwZWMgc3RhdGVzIHRoYXQgc291cmNlIGFuZCBkZXN0aW5hdGlv
biBmb3JtYXRzCisgICAgLy8gbXVzdCBib3RoIGJlIHNpZ25lZCwgdW5zaWduZWQsIG9yIGZpeGVk
IHBvaW50IGFuZCBib3RoIHNvdXJjZSBhbmQgZGVzdGluYXRpb25zCisgICAgLy8gbXVzdCBiZSBl
aXRoZXIgYm90aCBTUkdCIG9yIGJvdGggbm90IFNSR0IuIEVYVF9jb2xvcl9idWZmZXJfZmxvYXQg
YWRkcyBhbGxvd2VkCisgICAgLy8gY29udmVyc2lvbiBiZXR3ZWVuIGZpeGVkIGFuZCBmbG9hdGlu
ZyBwb2ludC4KIAotICAgICAgICBpZiAoKCh0ZXh0dXJlRm9ybWF0SW5mby5jb21wb25lbnRUeXBl
ID09IEdMX0lOVCkgIT0KLSAgICAgICAgICAgICAoZnJhbWVidWZmZXJGb3JtYXRJbmZvLmNvbXBv
bmVudFR5cGUgPT0gR0xfSU5UKSkgfHwKLSAgICAgICAgICAgICgodGV4dHVyZUZvcm1hdEluZm8u
Y29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9JTlQpICE9Ci0gICAgICAgICAgICAgKGZyYW1l
YnVmZmVyRm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX1VOU0lHTkVEX0lOVCkpKQorICAg
IGlmICgodGV4dHVyZUZvcm1hdEluZm8uY29sb3JFbmNvZGluZyA9PSBHTF9TUkdCKSAhPQorICAg
ICAgICAoZnJhbWVidWZmZXJGb3JtYXRJbmZvLmNvbG9yRW5jb2RpbmcgPT0gR0xfU1JHQikpCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCgodGV4dHVyZUZv
cm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9JTlQpICE9CisgICAgICAgICAoZnJhbWVidWZm
ZXJGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfSU5UKSkgfHwKKyAgICAgICAgKCh0ZXh0
dXJlRm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX1VOU0lHTkVEX0lOVCkgIT0KKyAgICAg
ICAgIChmcmFtZWJ1ZmZlckZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9VTlNJR05FRF9J
TlQpKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoKHRl
eHR1cmVGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfVU5TSUdORURfTk9STUFMSVpFRCB8
fAorICAgICAgICAgdGV4dHVyZUZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9TSUdORURf
Tk9STUFMSVpFRCB8fAorICAgICAgICAgdGV4dHVyZUZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9
PSBHTF9GTE9BVCkgJiYKKyAgICAgICAgIShmcmFtZWJ1ZmZlckZvcm1hdEluZm8uY29tcG9uZW50
VHlwZSA9PSBHTF9VTlNJR05FRF9OT1JNQUxJWkVEIHx8CisgICAgICAgICAgZnJhbWVidWZmZXJG
b3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfU0lHTkVEX05PUk1BTElaRUQgfHwKKyAgICAg
ICAgICBmcmFtZWJ1ZmZlckZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9GTE9BVCkpCisg
ICAgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gR0xFUyBzcGVjaWZp
Y2F0aW9uIDMuMC4zLCBzZWMgMy44LjUsIHBnIDEzOS0xNDA6CisgICAgLy8gVGhlIGVmZmVjdGl2
ZSBpbnRlcm5hbCBmb3JtYXQgb2YgdGhlIHNvdXJjZSBidWZmZXIgaXMgZGV0ZXJtaW5lZCB3aXRo
IHRoZSBmb2xsb3dpbmcgcnVsZXMKKyAgICAvLyBhcHBsaWVkIGluIG9yZGVyOgorICAgIC8vICAg
ICogSWYgdGhlIHNvdXJjZSBidWZmZXIgaXMgYSB0ZXh0dXJlIG9yIHJlbmRlcmJ1ZmZlciB0aGF0
IHdhcyBjcmVhdGVkIHdpdGggYSBzaXplZCBpbnRlcm5hbAorICAgIC8vICAgICAgZm9ybWF0IHRo
ZW4gdGhlIGVmZmVjdGl2ZSBpbnRlcm5hbCBmb3JtYXQgaXMgdGhlIHNvdXJjZSBidWZmZXIncyBz
aXplZCBpbnRlcm5hbCBmb3JtYXQuCisgICAgLy8gICAgKiBJZiB0aGUgc291cmNlIGJ1ZmZlciBp
cyBhIHRleHR1cmUgdGhhdCB3YXMgY3JlYXRlZCB3aXRoIGFuIHVuc2l6ZWQgYmFzZSBpbnRlcm5h
bCBmb3JtYXQsCisgICAgLy8gICAgICB0aGVuIHRoZSBlZmZlY3RpdmUgaW50ZXJuYWwgZm9ybWF0
IGlzIHRoZSBzb3VyY2UgaW1hZ2UgYXJyYXkncyBlZmZlY3RpdmUgaW50ZXJuYWwKKyAgICAvLyAg
ICAgIGZvcm1hdCwgYXMgc3BlY2lmaWVkIGJ5IHRhYmxlIDMuMTIsIHdoaWNoIGlzIGRldGVybWlu
ZWQgZnJvbSB0aGUgPGZvcm1hdD4gYW5kIDx0eXBlPgorICAgIC8vICAgICAgdGhhdCB3ZXJlIHVz
ZWQgd2hlbiB0aGUgc291cmNlIGltYWdlIGFycmF5IHdhcyBzcGVjaWZpZWQgYnkgVGV4SW1hZ2Uq
LgorICAgIC8vICAgICogT3RoZXJ3aXNlIHRoZSBlZmZlY3RpdmUgaW50ZXJuYWwgZm9ybWF0IGlz
IGRldGVybWluZWQgYnkgdGhlIHJvdyBpbiB0YWJsZSAzLjE3IG9yIDMuMTgKKyAgICAvLyAgICAg
IHdoZXJlIERlc3RpbmF0aW9uIEludGVybmFsIEZvcm1hdCBtYXRjaGVzIGludGVybmFsZm9ybWF0
IGFuZCB3aGVyZSB0aGUgW3NvdXJjZSBjaGFubmVsCisgICAgLy8gICAgICBzaXplc10gYXJlIGNv
bnNpc3RlbnQgd2l0aCB0aGUgdmFsdWVzIG9mIHRoZSBzb3VyY2UgYnVmZmVyJ3MgW2NoYW5uZWwg
c2l6ZXNdLiBUYWJsZSAzLjE3CisgICAgLy8gICAgICBpcyB1c2VkIGlmIHRoZSBGUkFNRUJVRkZF
Ul9BVFRBQ0hNRU5UX0VOQ09ESU5HIGlzIExJTkVBUiBhbmQgdGFibGUgMy4xOCBpcyB1c2VkIGlm
IHRoZQorICAgIC8vICAgICAgRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9FTkNPRElORyBpcyBTUkdC
LgorICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICpzb3VyY2VFZmZlY3RpdmVGb3JtYXQgPSBOVUxM
OworICAgIGlmIChyZWFkQnVmZmVySGFuZGxlICE9IDApCisgICAgeworICAgICAgICAvLyBOb3Qg
dGhlIGRlZmF1bHQgZnJhbWVidWZmZXIsIHRoZXJlZm9yZSB0aGUgcmVhZCBidWZmZXIgbXVzdCBi
ZSBhIHVzZXItY3JlYXRlZCB0ZXh0dXJlIG9yCisgICAgICAgIC8vIHJlbmRlcmJ1ZmZlcgorICAg
ICAgICBpZiAoZnJhbWVidWZmZXJGb3JtYXQuc2l6ZWQpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHNvdXJjZUVmZmVjdGl2ZUZvcm1hdCA9ICZmcmFt
ZWJ1ZmZlckZvcm1hdEluZm87CiAgICAgICAgIH0KLQotICAgICAgICBpZiAoKHRleHR1cmVGb3Jt
YXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfVU5TSUdORURfTk9STUFMSVpFRCB8fAotICAgICAg
ICAgICAgIHRleHR1cmVGb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfU0lHTkVEX05PUk1B
TElaRUQgfHwKLSAgICAgICAgICAgICB0ZXh0dXJlRm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09
IEdMX0ZMT0FUKSAmJgotICAgICAgICAgICAgIShmcmFtZWJ1ZmZlckZvcm1hdEluZm8uY29tcG9u
ZW50VHlwZSA9PSBHTF9VTlNJR05FRF9OT1JNQUxJWkVEIHx8Ci0gICAgICAgICAgICAgIGZyYW1l
YnVmZmVyRm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX1NJR05FRF9OT1JNQUxJWkVEIHx8
Ci0gICAgICAgICAgICAgIGZyYW1lYnVmZmVyRm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdM
X0ZMT0FUKSkKKyAgICAgICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAvLyBSZW5kZXJidWZmZXJzIGNhbm5vdCBiZSBjcmVhdGVkIHdpdGgg
YW4gdW5zaXplZCBpbnRlcm5hbCBmb3JtYXQsIHNvIHRoaXMgbXVzdCBiZSBhbgorICAgICAgICAg
ICAgLy8gdW5zaXplZC1mb3JtYXQgdGV4dHVyZS4gV2UgY2FuIHVzZSB0aGUgc2FtZSB0YWJsZSB3
ZSB1c2Ugd2hlbiBjcmVhdGluZyB0ZXh0dXJlcyB0bworICAgICAgICAgICAgLy8gZ2V0IGl0cyBl
ZmZlY3RpdmUgc2l6ZWQgZm9ybWF0LgorICAgICAgICAgICAgR0xlbnVtIHNpemVkSW50ZXJuYWxG
b3JtYXQgPQorICAgICAgICAgICAgICAgIEdldFNpemVkSW50ZXJuYWxGb3JtYXQoZnJhbWVidWZm
ZXJGb3JtYXRJbmZvLmZvcm1hdCwgZnJhbWVidWZmZXJGb3JtYXRJbmZvLnR5cGUpOworICAgICAg
ICAgICAgc291cmNlRWZmZWN0aXZlRm9ybWF0ID0gJkdldEludGVybmFsRm9ybWF0SW5mbyhzaXpl
ZEludGVybmFsRm9ybWF0KTsKICAgICAgICAgfQotCi0gICAgICAgIC8vIEdMRVMgc3BlY2lmaWNh
dGlvbiAzLjAuMywgc2VjIDMuOC41LCBwZyAxMzktMTQwOgotICAgICAgICAvLyBUaGUgZWZmZWN0
aXZlIGludGVybmFsIGZvcm1hdCBvZiB0aGUgc291cmNlIGJ1ZmZlciBpcyBkZXRlcm1pbmVkIHdp
dGggdGhlIGZvbGxvd2luZyBydWxlcyBhcHBsaWVkIGluIG9yZGVyOgotICAgICAgICAvLyAgICAq
IElmIHRoZSBzb3VyY2UgYnVmZmVyIGlzIGEgdGV4dHVyZSBvciByZW5kZXJidWZmZXIgdGhhdCB3
YXMgY3JlYXRlZCB3aXRoIGEgc2l6ZWQgaW50ZXJuYWwgZm9ybWF0IHRoZW4gdGhlCi0gICAgICAg
IC8vICAgICAgZWZmZWN0aXZlIGludGVybmFsIGZvcm1hdCBpcyB0aGUgc291cmNlIGJ1ZmZlcidz
IHNpemVkIGludGVybmFsIGZvcm1hdC4KLSAgICAgICAgLy8gICAgKiBJZiB0aGUgc291cmNlIGJ1
ZmZlciBpcyBhIHRleHR1cmUgdGhhdCB3YXMgY3JlYXRlZCB3aXRoIGFuIHVuc2l6ZWQgYmFzZSBp
bnRlcm5hbCBmb3JtYXQsIHRoZW4gdGhlCi0gICAgICAgIC8vICAgICAgZWZmZWN0aXZlIGludGVy
bmFsIGZvcm1hdCBpcyB0aGUgc291cmNlIGltYWdlIGFycmF5J3MgZWZmZWN0aXZlIGludGVybmFs
IGZvcm1hdCwgYXMgc3BlY2lmaWVkIGJ5IHRhYmxlCi0gICAgICAgIC8vICAgICAgMy4xMiwgd2hp
Y2ggaXMgZGV0ZXJtaW5lZCBmcm9tIHRoZSA8Zm9ybWF0PiBhbmQgPHR5cGU+IHRoYXQgd2VyZSB1
c2VkIHdoZW4gdGhlIHNvdXJjZSBpbWFnZSBhcnJheSB3YXMKLSAgICAgICAgLy8gICAgICBzcGVj
aWZpZWQgYnkgVGV4SW1hZ2UqLgotICAgICAgICAvLyAgICAqIE90aGVyd2lzZSB0aGUgZWZmZWN0
aXZlIGludGVybmFsIGZvcm1hdCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSByb3cgaW4gdGFibGUgMy4x
NyBvciAzLjE4IHdoZXJlCi0gICAgICAgIC8vICAgICAgRGVzdGluYXRpb24gSW50ZXJuYWwgRm9y
bWF0IG1hdGNoZXMgaW50ZXJuYWxmb3JtYXQgYW5kIHdoZXJlIHRoZSBbc291cmNlIGNoYW5uZWwg
c2l6ZXNdIGFyZSBjb25zaXN0ZW50Ci0gICAgICAgIC8vICAgICAgd2l0aCB0aGUgdmFsdWVzIG9m
IHRoZSBzb3VyY2UgYnVmZmVyJ3MgW2NoYW5uZWwgc2l6ZXNdLiBUYWJsZSAzLjE3IGlzIHVzZWQg
aWYgdGhlCi0gICAgICAgIC8vICAgICAgRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9FTkNPRElORyBp
cyBMSU5FQVIgYW5kIHRhYmxlIDMuMTggaXMgdXNlZCBpZiB0aGUgRlJBTUVCVUZGRVJfQVRUQUNI
TUVOVF9FTkNPRElORwotICAgICAgICAvLyAgICAgIGlzIFNSR0IuCi0gICAgICAgIGNvbnN0IElu
dGVybmFsRm9ybWF0ICpzb3VyY2VFZmZlY3RpdmVGb3JtYXQgPSBOVUxMOwotICAgICAgICBpZiAo
cmVhZEJ1ZmZlckhhbmRsZSAhPSAwKQorICAgIH0KKyAgICBlbHNlCisgICAgeworICAgICAgICAv
LyBUaGUgZWZmZWN0aXZlIGludGVybmFsIGZvcm1hdCBtdXN0IGJlIGRlcml2ZWQgZnJvbSB0aGUg
c291cmNlIGZyYW1lYnVmZmVyJ3MgY2hhbm5lbAorICAgICAgICAvLyBzaXplcy4gVGhpcyBpcyBk
b25lIGluIEdldEVmZmVjdGl2ZUludGVybmFsRm9ybWF0IGZvciBsaW5lYXIgYnVmZmVycyAodGFi
bGUgMy4xNykKKyAgICAgICAgaWYgKGZyYW1lYnVmZmVyRm9ybWF0SW5mby5jb2xvckVuY29kaW5n
ID09IEdMX0xJTkVBUikKICAgICAgICAgewotICAgICAgICAgICAgLy8gTm90IHRoZSBkZWZhdWx0
IGZyYW1lYnVmZmVyLCB0aGVyZWZvcmUgdGhlIHJlYWQgYnVmZmVyIG11c3QgYmUgYSB1c2VyLWNy
ZWF0ZWQgdGV4dHVyZSBvciByZW5kZXJidWZmZXIKLSAgICAgICAgICAgIGlmIChmcmFtZWJ1ZmZl
ckZvcm1hdC5zaXplZCkKKyAgICAgICAgICAgIEdMZW51bSBlZmZlY3RpdmVGb3JtYXQ7CisgICAg
ICAgICAgICBpZiAoR2V0RWZmZWN0aXZlSW50ZXJuYWxGb3JtYXQoZnJhbWVidWZmZXJGb3JtYXRJ
bmZvLCB0ZXh0dXJlRm9ybWF0SW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmZWZmZWN0aXZlRm9ybWF0KSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBzb3VyY2VFZmZlY3RpdmVGb3JtYXQgPSAmZnJhbWVidWZmZXJGb3JtYXRJbmZvOworICAg
ICAgICAgICAgICAgIHNvdXJjZUVmZmVjdGl2ZUZvcm1hdCA9ICZHZXRJbnRlcm5hbEZvcm1hdElu
Zm8oZWZmZWN0aXZlRm9ybWF0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBSZW5kZXJidWZmZXJzIGNhbm5vdCBiZSBj
cmVhdGVkIHdpdGggYW4gdW5zaXplZCBpbnRlcm5hbCBmb3JtYXQsIHNvIHRoaXMgbXVzdCBiZSBh
biB1bnNpemVkLWZvcm1hdAotICAgICAgICAgICAgICAgIC8vIHRleHR1cmUuIFdlIGNhbiB1c2Ug
dGhlIHNhbWUgdGFibGUgd2UgdXNlIHdoZW4gY3JlYXRpbmcgdGV4dHVyZXMgdG8gZ2V0IGl0cyBl
ZmZlY3RpdmUgc2l6ZWQgZm9ybWF0LgotICAgICAgICAgICAgICAgIEdMZW51bSBzaXplZEludGVy
bmFsRm9ybWF0ID0gR2V0U2l6ZWRJbnRlcm5hbEZvcm1hdChmcmFtZWJ1ZmZlckZvcm1hdEluZm8u
Zm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmcmFtZWJ1ZmZlckZvcm1hdEluZm8udHlwZSk7Ci0gICAgICAg
ICAgICAgICAgc291cmNlRWZmZWN0aXZlRm9ybWF0ID0gJkdldEludGVybmFsRm9ybWF0SW5mbyhz
aXplZEludGVybmFsRm9ybWF0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZQorICAgICAgICBlbHNlIGlmIChmcmFt
ZWJ1ZmZlckZvcm1hdEluZm8uY29sb3JFbmNvZGluZyA9PSBHTF9TUkdCKQogICAgICAgICB7Ci0g
ICAgICAgICAgICAvLyBUaGUgZWZmZWN0aXZlIGludGVybmFsIGZvcm1hdCBtdXN0IGJlIGRlcml2
ZWQgZnJvbSB0aGUgc291cmNlIGZyYW1lYnVmZmVyJ3MgY2hhbm5lbCBzaXplcy4KLSAgICAgICAg
ICAgIC8vIFRoaXMgaXMgZG9uZSBpbiBHZXRFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdCBmb3IgbGlu
ZWFyIGJ1ZmZlcnMgKHRhYmxlIDMuMTcpCi0gICAgICAgICAgICBpZiAoZnJhbWVidWZmZXJGb3Jt
YXRJbmZvLmNvbG9yRW5jb2RpbmcgPT0gR0xfTElORUFSKQorICAgICAgICAgICAgLy8gU1JHQiBi
dWZmZXJzIGNhbiBvbmx5IGJlIGNvcGllZCB0byBzaXplZCBmb3JtYXQgZGVzdGluYXRpb25zIGFj
Y29yZGluZyB0byB0YWJsZSAzLjE4CisgICAgICAgICAgICBpZiAodGV4dHVyZUZvcm1hdC5zaXpl
ZCAmJgorICAgICAgICAgICAgICAgIChmcmFtZWJ1ZmZlckZvcm1hdEluZm8ucmVkQml0cyA+PSAx
ICYmIGZyYW1lYnVmZmVyRm9ybWF0SW5mby5yZWRCaXRzIDw9IDgpICYmCisgICAgICAgICAgICAg
ICAgKGZyYW1lYnVmZmVyRm9ybWF0SW5mby5ncmVlbkJpdHMgPj0gMSAmJiBmcmFtZWJ1ZmZlckZv
cm1hdEluZm8uZ3JlZW5CaXRzIDw9IDgpICYmCisgICAgICAgICAgICAgICAgKGZyYW1lYnVmZmVy
Rm9ybWF0SW5mby5ibHVlQml0cyA+PSAxICYmIGZyYW1lYnVmZmVyRm9ybWF0SW5mby5ibHVlQml0
cyA8PSA4KSAmJgorICAgICAgICAgICAgICAgIChmcmFtZWJ1ZmZlckZvcm1hdEluZm8uYWxwaGFC
aXRzID49IDEgJiYgZnJhbWVidWZmZXJGb3JtYXRJbmZvLmFscGhhQml0cyA8PSA4KSkKICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBHTGVudW0gZWZmZWN0aXZlRm9ybWF0OwotICAgICAg
ICAgICAgICAgIGlmIChHZXRFZmZlY3RpdmVJbnRlcm5hbEZvcm1hdChmcmFtZWJ1ZmZlckZvcm1h
dEluZm8sIHRleHR1cmVGb3JtYXRJbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAmZWZmZWN0aXZlRm9ybWF0KSkKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgIHNvdXJjZUVmZmVjdGl2ZUZvcm1hdCA9ICZHZXRJbnRlcm5hbEZv
cm1hdEluZm8oZWZmZWN0aXZlRm9ybWF0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVs
c2UgaWYgKGZyYW1lYnVmZmVyRm9ybWF0SW5mby5jb2xvckVuY29kaW5nID09IEdMX1NSR0IpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gU1JHQiBidWZmZXJzIGNhbiBvbmx5IGJl
IGNvcGllZCB0byBzaXplZCBmb3JtYXQgZGVzdGluYXRpb25zIGFjY29yZGluZyB0byB0YWJsZSAz
LjE4Ci0gICAgICAgICAgICAgICAgaWYgKHRleHR1cmVGb3JtYXQuc2l6ZWQgJiYKLSAgICAgICAg
ICAgICAgICAgICAgKGZyYW1lYnVmZmVyRm9ybWF0SW5mby5yZWRCaXRzID49IDEgJiYgZnJhbWVi
dWZmZXJGb3JtYXRJbmZvLnJlZEJpdHMgPD0gOCkgJiYKLSAgICAgICAgICAgICAgICAgICAgKGZy
YW1lYnVmZmVyRm9ybWF0SW5mby5ncmVlbkJpdHMgPj0gMSAmJgotICAgICAgICAgICAgICAgICAg
ICAgZnJhbWVidWZmZXJGb3JtYXRJbmZvLmdyZWVuQml0cyA8PSA4KSAmJgotICAgICAgICAgICAg
ICAgICAgICAoZnJhbWVidWZmZXJGb3JtYXRJbmZvLmJsdWVCaXRzID49IDEgJiYgZnJhbWVidWZm
ZXJGb3JtYXRJbmZvLmJsdWVCaXRzIDw9IDgpICYmCi0gICAgICAgICAgICAgICAgICAgIChmcmFt
ZWJ1ZmZlckZvcm1hdEluZm8uYWxwaGFCaXRzID49IDEgJiYgZnJhbWVidWZmZXJGb3JtYXRJbmZv
LmFscGhhQml0cyA8PSA4KSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IHNvdXJjZUVmZmVjdGl2ZUZvcm1hdCA9ICZHZXRJbnRlcm5hbEZvcm1hdEluZm8oR0xfU1JHQjhf
QUxQSEE4KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBzb3VyY2VFZmZlY3RpdmVGb3JtYXQgPSAmR2V0SW50
ZXJuYWxGb3JtYXRJbmZvKEdMX1NSR0I4X0FMUEhBOCk7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
LQotICAgICAgICBpZiAodGV4dHVyZUZvcm1hdC5zaXplZCkKKyAgICAgICAgZWxzZQogICAgICAg
ICB7Ci0gICAgICAgICAgICAvLyBTZWN0aW9uIDMuOC41IG9mIHRoZSBHTEVTIDMuMC4zIHNwZWMs
IHBnIDEzOSwgcmVxdWlyZXMgdGhhdCwgaWYgdGhlIGRlc3RpbmF0aW9uCi0gICAgICAgICAgICAv
LyBmb3JtYXQgaXMgc2l6ZWQsIGNvbXBvbmVudCBzaXplcyBvZiB0aGUgc291cmNlIGFuZCBkZXN0
aW5hdGlvbiBmb3JtYXRzIG11c3QgZXhhY3RseQotICAgICAgICAgICAgLy8gbWF0Y2ggaWYgdGhl
IGRlc3RpbmF0aW9uIGZvcm1hdCBleGlzdHMuCi0gICAgICAgICAgICBpZiAoIUVxdWFsT3JGaXJz
dFplcm8odGV4dHVyZUZvcm1hdEluZm8ucmVkQml0cywgc291cmNlRWZmZWN0aXZlRm9ybWF0LT5y
ZWRCaXRzKSB8fAotICAgICAgICAgICAgICAgICFFcXVhbE9yRmlyc3RaZXJvKHRleHR1cmVGb3Jt
YXRJbmZvLmdyZWVuQml0cywgc291cmNlRWZmZWN0aXZlRm9ybWF0LT5ncmVlbkJpdHMpIHx8Ci0g
ICAgICAgICAgICAgICAgIUVxdWFsT3JGaXJzdFplcm8odGV4dHVyZUZvcm1hdEluZm8uYmx1ZUJp
dHMsIHNvdXJjZUVmZmVjdGl2ZUZvcm1hdC0+Ymx1ZUJpdHMpIHx8Ci0gICAgICAgICAgICAgICAg
IUVxdWFsT3JGaXJzdFplcm8odGV4dHVyZUZvcm1hdEluZm8uYWxwaGFCaXRzLCBzb3VyY2VFZmZl
Y3RpdmVGb3JtYXQtPmFscGhhQml0cykpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorICAgIH0KIAotICAgICAgICBy
ZXR1cm4gdHJ1ZTsgLy8gQSBjb252ZXJzaW9uIGZ1bmN0aW9uIGV4aXN0cywgYW5kIG5vIHJ1bGUg
aW4gdGhlIHNwZWNpZmljYXRpb24gaGFzIHByZWNsdWRlZCBjb252ZXJzaW9uCi0gICAgICAgICAg
ICAgICAgICAgICAvLyBiZXR3ZWVuIHRoZXNlIGZvcm1hdHMuCisgICAgaWYgKHRleHR1cmVGb3Jt
YXQuc2l6ZWQpCisgICAgeworICAgICAgICAvLyBTZWN0aW9uIDMuOC41IG9mIHRoZSBHTEVTIDMu
MC4zIHNwZWMsIHBnIDEzOSwgcmVxdWlyZXMgdGhhdCwgaWYgdGhlIGRlc3RpbmF0aW9uIGZvcm1h
dCBpcworICAgICAgICAvLyBzaXplZCwgY29tcG9uZW50IHNpemVzIG9mIHRoZSBzb3VyY2UgYW5k
IGRlc3RpbmF0aW9uIGZvcm1hdHMgbXVzdCBleGFjdGx5IG1hdGNoIGlmIHRoZQorICAgICAgICAv
LyBkZXN0aW5hdGlvbiBmb3JtYXQgZXhpc3RzLgorICAgICAgICBpZiAoIUVxdWFsT3JGaXJzdFpl
cm8odGV4dHVyZUZvcm1hdEluZm8ucmVkQml0cywgc291cmNlRWZmZWN0aXZlRm9ybWF0LT5yZWRC
aXRzKSB8fAorICAgICAgICAgICAgIUVxdWFsT3JGaXJzdFplcm8odGV4dHVyZUZvcm1hdEluZm8u
Z3JlZW5CaXRzLCBzb3VyY2VFZmZlY3RpdmVGb3JtYXQtPmdyZWVuQml0cykgfHwKKyAgICAgICAg
ICAgICFFcXVhbE9yRmlyc3RaZXJvKHRleHR1cmVGb3JtYXRJbmZvLmJsdWVCaXRzLCBzb3VyY2VF
ZmZlY3RpdmVGb3JtYXQtPmJsdWVCaXRzKSB8fAorICAgICAgICAgICAgIUVxdWFsT3JGaXJzdFpl
cm8odGV4dHVyZUZvcm1hdEluZm8uYWxwaGFCaXRzLCBzb3VyY2VFZmZlY3RpdmVGb3JtYXQtPmFs
cGhhQml0cykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQogICAgIH0KIAotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdHJ1ZTsgIC8vIEEgY29u
dmVyc2lvbiBmdW5jdGlvbiBleGlzdHMsIGFuZCBubyBydWxlIGluIHRoZSBzcGVjaWZpY2F0aW9u
IGhhcyBwcmVjbHVkZWQKKyAgICAgICAgICAgICAgICAgIC8vIGNvbnZlcnNpb24gYmV0d2VlbiB0
aGVzZSBmb3JtYXRzLgogfQogCiBib29sIFZhbGlkYXRlRVMzQ29weVRleEltYWdlUGFyYW1ldGVy
c0Jhc2UoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCkBAIC02NzksMTMgKzYyNiwxMyBAQCBi
b29sIFZhbGlkYXRlRVMzQ29weVRleEltYWdlUGFyYW1ldGVyc0Jhc2UoVmFsaWRhdGlvbkNvbnRl
eHQgKmNvbnRleHQsCiAgICAgZ2w6OkZyYW1lYnVmZmVyICpmcmFtZWJ1ZmZlciA9IHN0YXRlLmdl
dFJlYWRGcmFtZWJ1ZmZlcigpOwogICAgIEdMdWludCByZWFkRnJhbWVidWZmZXJJRCAgICAgPSBm
cmFtZWJ1ZmZlci0+aWQoKTsKIAotICAgIGlmIChmcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXMoY29u
dGV4dC0+Z2V0Q29udGV4dFN0YXRlKCkpICE9IEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKQorICAg
IGlmIChmcmFtZWJ1ZmZlci0+Y2hlY2tTdGF0dXMoY29udGV4dCkgIT0gR0xfRlJBTUVCVUZGRVJf
Q09NUExFVEUpCiAgICAgewogICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgaWYgKHJlYWRGcmFtZWJ1ZmZlcklEICE9IDAgJiYgZnJhbWVidWZmZXItPmdl
dFNhbXBsZXMoY29udGV4dC0+Z2V0Q29udGV4dFN0YXRlKCkpICE9IDApCisgICAgaWYgKHJlYWRG
cmFtZWJ1ZmZlcklEICE9IDAgJiYgZnJhbWVidWZmZXItPmdldFNhbXBsZXMoY29udGV4dCkgIT0g
MCkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
T1BFUkFUSU9OKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTc5OCw3ICs3NDUsNyBAQCBi
b29sIFZhbGlkYXRlRVMzVGV4U3RvcmFnZVBhcmFtZXRlcnNCYXNlKENvbnRleHQgKmNvbnRleHQs
CiAKICAgICBzd2l0Y2ggKHRhcmdldCkKICAgICB7Ci0gICAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6
CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRDoKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KHN0YXRpY19jYXN0PEdMdWludD4od2lkdGgpID4gY2Fwcy5tYXgyRFRleHR1cmVTaXplIHx8CiAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihoZWlnaHQpID4gY2Fwcy5tYXgyRFRl
eHR1cmVTaXplKQpAQCAtODA5LDcgKzc1Niw3IEBAIGJvb2wgVmFsaWRhdGVFUzNUZXhTdG9yYWdl
UGFyYW1ldGVyc0Jhc2UoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgfQogICAgICAgICBicmVh
azsKIAotICAgICAgY2FzZSBHTF9URVhUVVJFX0NVQkVfTUFQOgorICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfQ1VCRV9NQVA6CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICh3aWR0aCAhPSBoZWln
aHQpCiAgICAgICAgICAgICB7CkBAIC04MjUsNyArNzcyLDcgQEAgYm9vbCBWYWxpZGF0ZUVTM1Rl
eFN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgICAgICB9CiAgICAg
ICAgIGJyZWFrOwogCi0gICAgICBjYXNlIEdMX1RFWFRVUkVfM0Q6CisgICAgICAgIGNhc2UgR0xf
VEVYVFVSRV8zRDoKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PEdMdWlu
dD4od2lkdGgpID4gY2Fwcy5tYXgzRFRleHR1cmVTaXplIHx8CiAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8R0x1aW50PihoZWlnaHQpID4gY2Fwcy5tYXgzRFRleHR1cmVTaXplIHx8CkBAIC04
MzcsNyArNzg0LDcgQEAgYm9vbCBWYWxpZGF0ZUVTM1RleFN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShD
b250ZXh0ICpjb250ZXh0LAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCi0gICAgICBjYXNl
IEdMX1RFWFRVUkVfMkRfQVJSQVk6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8yRF9BUlJBWToK
ICAgICAgICAgewogICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PEdMdWludD4od2lkdGgpID4g
Y2Fwcy5tYXgyRFRleHR1cmVTaXplIHx8CiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0x1
aW50PihoZWlnaHQpID4gY2Fwcy5tYXgyRFRleHR1cmVTaXplIHx8CkBAIC04NDksOSArNzk2LDkg
QEAgYm9vbCBWYWxpZGF0ZUVTM1RleFN0b3JhZ2VQYXJhbWV0ZXJzQmFzZShDb250ZXh0ICpjb250
ZXh0LAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCi0gICAgICBkZWZhdWx0OgotICAgICAg
ICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCiAgICAgZ2w6OlRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRU
ZXh0dXJlKHRhcmdldCk7CkBAIC04NjgsNyArODE1LDcgQEAgYm9vbCBWYWxpZGF0ZUVTM1RleFN0
b3JhZ2VQYXJhbWV0ZXJzQmFzZShDb250ZXh0ICpjb250ZXh0LAogICAgIH0KIAogICAgIGNvbnN0
IGdsOjpJbnRlcm5hbEZvcm1hdCAmZm9ybWF0SW5mbyA9IGdsOjpHZXRJbnRlcm5hbEZvcm1hdElu
Zm8oaW50ZXJuYWxmb3JtYXQpOwotICAgIGlmICghZm9ybWF0SW5mby50ZXh0dXJlU3VwcG9ydChj
b250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSwgY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
KSkKKyAgICBpZiAoIWZvcm1hdEluZm8udGV4dHVyZVN1cHBvcnQoY29udGV4dC0+Z2V0Q2xpZW50
VmVyc2lvbigpLCBjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpKQogICAgIHsKICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTk2Myw4ICs5MTAsMTIgQEAgYm9vbCBWYWxpZGF0ZUdldFF1ZXJ5T2JqZWN0
dWl2KENvbnRleHQgKmNvbnRleHQsIEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQKICAg
ICByZXR1cm4gVmFsaWRhdGVHZXRRdWVyeU9iamVjdFZhbHVlQmFzZShjb250ZXh0LCBpZCwgcG5h
bWUsIG51bGxwdHIpOwogfQogCi1ib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsIEdMaW50IGxl
dmVsLCBHTGludCBsYXllcikKK2Jvb2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
ZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IGF0dGFjaG1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50
IHRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGF5ZXIpCiB7
CiAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKICAgICB7CkBA
IC05OTEsNyArOTQyLDcgQEAgYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKENv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHQKIAogICAgICAgICBzd2l0
Y2ggKHRleC0+Z2V0VGFyZ2V0KCkpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfMkRfQVJSQVk6CisgICAgICAgICAgICBjYXNlIEdMX1RFWFRVUkVfMkRfQVJSQVk6CiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgaWYgKGxldmVsID4gZ2w6OmxvZzIoY2Fwcy5tYXgy
RFRleHR1cmVTaXplKSkKICAgICAgICAgICAgICAgICB7CkBAIC0xMDA3LDcgKzk1OCw3IEBAIGJv
b2wgVmFsaWRhdGVGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGFyZ2V0LCBHTGVudW0gYXR0CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsK
IAotICAgICAgICAgIGNhc2UgR0xfVEVYVFVSRV8zRDoKKyAgICAgICAgICAgIGNhc2UgR0xfVEVY
VFVSRV8zRDoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAobGV2ZWwgPiBnbDo6
bG9nMihjYXBzLm1heDNEVGV4dHVyZVNpemUpKQogICAgICAgICAgICAgICAgIHsKQEAgLTEwMjMs
OSArOTc0LDkgQEAgYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHQKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdCBhdXRvICZm
b3JtYXQgPSB0ZXgtPmdldEZvcm1hdCh0ZXgtPmdldFRhcmdldCgpLCBsZXZlbCk7CkBAIC0xMDM5
LDM2ICs5OTAsOSBAQCBib29sIFZhbGlkYXRlRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dAogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFZhbGlkYXRlRVMzUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRlcnMoZ2w6OkNv
bnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxmb3Jt
YXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQotewotICAgIGlmICghVmFsaWRhdGVS
ZW5kZXJidWZmZXJTdG9yYWdlUGFyYW1ldGVyc0Jhc2UoY29udGV4dCwgdGFyZ2V0LCBzYW1wbGVz
LCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCkpCi0gICAgewotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfQotCi0gICAgLy9UaGUgRVMzIHNwZWMoc2VjdGlvbiA0LjQuMikgc3RhdGVz
IHRoYXQgdGhlIGludGVybmFsIGZvcm1hdCBtdXN0IGJlIHNpemVkIGFuZCBub3QgYW4gaW50ZWdl
ciBmb3JtYXQgaWYgc2FtcGxlcyBpcyBncmVhdGVyIHRoYW4gemVyby4KLSAgICBjb25zdCBnbDo6
SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBnbDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGlu
dGVybmFsZm9ybWF0KTsKLSAgICBpZiAoKGZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9V
TlNJR05FRF9JTlQgfHwgZm9ybWF0SW5mby5jb21wb25lbnRUeXBlID09IEdMX0lOVCkgJiYgc2Ft
cGxlcyA+IDApCi0gICAgewotICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTikpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
Ly8gVGhlIGJlaGF2aW9yIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBBTkdMRSB2ZXJzaW9uLCB3aGlj
aCB3b3VsZCBnZW5lcmF0ZSBhIEdMX09VVF9PRl9NRU1PUlkuCi0gICAgY29uc3QgVGV4dHVyZUNh
cHMgJmZvcm1hdENhcHMgPSBjb250ZXh0LT5nZXRUZXh0dXJlQ2FwcygpLmdldChpbnRlcm5hbGZv
cm1hdCk7Ci0gICAgaWYgKHN0YXRpY19jYXN0PEdMdWludD4oc2FtcGxlcykgPiBmb3JtYXRDYXBz
LmdldE1heFNhbXBsZXMoKSkKLSAgICB7Ci0gICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAot
ICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCi0gICAgICAgICAgICAgICAg
ICAiU2FtcGxlcyBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gbWF4aW11bSBzdXBwb3J0ZWQgdmFs
dWUgZm9yIHRoZSBmb3JtYXQuIikpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgVmFsaWRhdGVJbnZhbGlkYXRlRnJhbWVidWZmZXIo
Q29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW1BdHRhY2htZW50cywK
K2Jvb2wgVmFsaWRhdGVJbnZhbGlkYXRlRnJhbWVidWZmZXIoQ29udGV4dCAqY29udGV4dCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBudW1BdHRhY2htZW50cywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykK
IHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQpAQCAtMTA4
MiwxOSArMTAwNiwyMCBAQCBib29sIFZhbGlkYXRlSW52YWxpZGF0ZUZyYW1lYnVmZmVyKENvbnRl
eHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbnVtQQogCiAgICAgc3dpdGNoICh0
YXJnZXQpCiAgICAgewotICAgICAgY2FzZSBHTF9EUkFXX0ZSQU1FQlVGRkVSOgotICAgICAgY2Fz
ZSBHTF9GUkFNRUJVRkZFUjoKLSAgICAgICAgICBkZWZhdWx0RnJhbWVidWZmZXIgPSBjb250ZXh0
LT5nZXRHTFN0YXRlKCkuZ2V0RHJhd0ZyYW1lYnVmZmVyKCktPmlkKCkgPT0gMDsKLSAgICAgICAg
ICBicmVhazsKLSAgICAgIGNhc2UgR0xfUkVBRF9GUkFNRUJVRkZFUjoKLSAgICAgICAgICBkZWZh
dWx0RnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UmVhZEZyYW1lYnVmZmVy
KCktPmlkKCkgPT0gMDsKLSAgICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBm
cmFtZWJ1ZmZlciB0YXJnZXQiKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2Fz
ZSBHTF9EUkFXX0ZSQU1FQlVGRkVSOgorICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSOgorICAg
ICAgICAgICAgZGVmYXVsdEZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldERy
YXdGcmFtZWJ1ZmZlcigpLT5pZCgpID09IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBHTF9SRUFEX0ZSQU1FQlVGRkVSOgorICAgICAgICAgICAgZGVmYXVsdEZyYW1lYnVmZmVy
ID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFJlYWRGcmFtZWJ1ZmZlcigpLT5pZCgpID09IDA7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgZnJhbWVidWZm
ZXIgdGFyZ2V0IikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHJl
dHVybiBWYWxpZGF0ZURpc2NhcmRGcmFtZWJ1ZmZlckJhc2UoY29udGV4dCwgdGFyZ2V0LCBudW1B
dHRhY2htZW50cywgYXR0YWNobWVudHMsIGRlZmF1bHRGcmFtZWJ1ZmZlcik7CisgICAgcmV0dXJu
IFZhbGlkYXRlRGlzY2FyZEZyYW1lYnVmZmVyQmFzZShjb250ZXh0LCB0YXJnZXQsIG51bUF0dGFj
aG1lbnRzLCBhdHRhY2htZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHRGcmFtZWJ1ZmZlcik7CiB9CiAKIGJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZl
cihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCkKQEAgLTExMDUsOCArMTAzMCw3IEBAIGJvb2wg
VmFsaWRhdGVDbGVhckJ1ZmZlcihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0
RHJhd0ZyYW1lYnVmZmVyKCktPmNoZWNrU3RhdHVzKGNvbnRleHQtPmdldENvbnRleHRTdGF0ZSgp
KSAhPQotICAgICAgICBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKKyAgICBpZiAoY29udGV4dC0+
Z2V0R0xTdGF0ZSgpLmdldERyYXdGcmFtZWJ1ZmZlcigpLT5jaGVja1N0YXR1cyhjb250ZXh0KSAh
PSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSkKICAgICB7CiAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKSk7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTExNTEsNyArMTA3NSw3IEBAIGJvb2wgVmFsaWRhdGVEcmF3UmFu
Z2VFbGVtZW50cyhDb250ZXh0ICpjb250ZXh0LAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29s
IFZhbGlkYXRlR2V0VW5pZm9ybXVpdihDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgcHJvZ3JhbSwg
R0xpbnQgbG9jYXRpb24sIEdMdWludCogcGFyYW1zKQorYm9vbCBWYWxpZGF0ZUdldFVuaWZvcm11
aXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHVp
bnQgKnBhcmFtcykKIHsKICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkg
PCAzKQogICAgIHsKQEAgLTExOTMsNyArMTExNyw4IEBAIGJvb2wgVmFsaWRhdGVSZWFkQnVmZmVy
KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBzcmMpCiAgICAgewogICAgICAgICBpZiAoc3JjICE9
IEdMX0JBQ0spCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9yTXNnID0g
IidzcmMnIG11c3QgYmUgR0xfTk9ORSBvciBHTF9CQUNLIHdoZW4gcmVhZGluZyBmcm9tIHRoZSBk
ZWZhdWx0IGZyYW1lYnVmZmVyLiI7CisgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvck1zZyA9
CisgICAgICAgICAgICAgICAgIidzcmMnIG11c3QgYmUgR0xfTk9ORSBvciBHTF9CQUNLIHdoZW4g
cmVhZGluZyBmcm9tIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyLiI7CiAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihnbDo6RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sIGVycm9yTXNn
KSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTEzMDQsNiArMTIy
OSwxNTYgQEAgYm9vbCBWYWxpZGF0ZUlzVmVydGV4QXJyYXkoQ29udGV4dCAqY29udGV4dCkKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wgVmFsaWRhdGVCaW5kQnVmZmVyQ29tbW9u
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVp
bnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJ1
ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZz
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaXB0ciBzaXpl
KQoreworICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCisgICAg
eworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGJ1ZmZlciAhPSAw
ICYmIG9mZnNldCA8IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFLCAiYnVmZmVyIGlzIG5vbi16ZXJvIGFuZCBvZmZzZXQgaXMgbmVn
YXRpdmUuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFjb250
ZXh0LT5nZXRHTFN0YXRlKCkuaXNCaW5kR2VuZXJhdGVzUmVzb3VyY2VFbmFibGVkKCkgJiYKKyAg
ICAgICAgIWNvbnRleHQtPmlzQnVmZmVyR2VuZXJhdGVkKGJ1ZmZlcikpCisgICAgeworICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkJ1ZmZl
ciB3YXMgbm90IGdlbmVyYXRlZC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBjb25zdCBDYXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOworICAgIHN3aXRjaCAo
dGFyZ2V0KQorICAgIHsKKyAgICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
OgorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaW5kZXggPj0gY2Fwcy5tYXhUcmFuc2Zvcm1G
ZWVkYmFja1NlcGFyYXRlQXR0cmlidXRlcykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmRleCBpcyBncmVhdGVyIHRoYW4g
b3IgZXF1YWwgdG8gdGhlIG51bWJlciBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIgaW5kZXhlZCBiaW5kaW5n
IHBvaW50cy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKGJ1ZmZlciAhPSAwICYmICgob2Zmc2V0ICUgNCkgIT0gMCB8fCAo
c2l6ZSAlIDQpICE9IDApKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVF
LCAib2Zmc2V0IGFuZCBzaXplIG11c3QgYmUgbXVsdGlwbGUgb2YgNC4iKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBUcmFuc2Zv
cm1GZWVkYmFjayAqY3VyVHJhbnNmb3JtRmVlZGJhY2sgPQorICAgICAgICAgICAgICAgIGNvbnRl
eHQtPmdldEdMU3RhdGUoKS5nZXRDdXJyZW50VHJhbnNmb3JtRmVlZGJhY2soKTsKKyAgICAgICAg
ICAgIGlmIChjdXJUcmFuc2Zvcm1GZWVkYmFjayAmJiBjdXJUcmFuc2Zvcm1GZWVkYmFjay0+aXNB
Y3RpdmUoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAidGFyZ2V0IGlzIFRSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIg
YW5kIHRyYW5zZm9ybSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImZlZWRiYWNrIGlzIGN1cnJlbnRseSBhY3RpdmUuIikpOworICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGNhc2UgR0xfVU5JRk9STV9CVUZGRVI6CisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChpbmRleCA+PSBjYXBzLm1heFVuaWZvcm1CdWZmZXJCaW5kaW5ncykKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X1ZBTFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbmRl
eCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJlciBvZiAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVOSUZPUk1fQlVGRkVSIGluZGV4ZWQg
YmluZGluZyBwb2ludHMuIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGJ1ZmZlciAhPSAwICYmIChvZmZzZXQgJSBjYXBz
LnVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQpICE9IDApCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJvZmZzZXQg
bXVzdCBiZSBtdWx0aXBsZSBvZiB2YWx1ZSBvZiBVTklGT1JNX0JVRkZFUl9PRkZTRVRfQUxJR05N
RU5ULiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0FUT01JQ19DT1VO
VEVSX0JVRkZFUjoKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVu
dFZlcnNpb24oKSA8IEVTXzNfMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgR0xfSU5WQUxJRF9F
TlVNLCAiQVRPTUlDX0NPVU5URVJfQlVGRkVSIGlzIG5vdCBzdXBwb3J0ZWQgYmVmb3JlIEdMRVMg
My4xIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChpbmRleCA+PSBjYXBzLm1heEF0b21pY0NvdW50ZXJCdWZmZXJCaW5kaW5n
cykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX1ZBTFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJpbmRleCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG51bWJlciBv
ZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFUT01JQ19D
T1VOVEVSX0JVRkZFUiBpbmRleGVkIGJpbmRpbmcgcG9pbnRzLiIpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYnVmZmVyICE9
IDAgJiYgKG9mZnNldCAlIDQpICE9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIm9mZnNldCBtdXN0
IGJlIGEgbXVsdGlwbGUgb2YgNC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBHTF9TSEFERVJfU1RPUkFHRV9CVUZGRVI6CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChj
b250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzEpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVy
cm9yKEdMX0lOVkFMSURfRU5VTSwgIlNIQURFUl9TVE9SQUdFX0JVRkZFUiBpcyBub3Qgc3VwcG9y
dGVkIGluIEdMRVMzLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoaW5kZXggPj0gY2Fwcy5tYXhTaGFkZXJTdG9yYWdlQnVm
ZmVyQmluZGluZ3MpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaW5kZXggaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRo
ZSBudW1iZXIgb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJTSEFERVJfU1RPUkFHRV9CVUZGRVIgaW5kZXhlZCBiaW5kaW5nIHBvaW50cy4iKSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGJ1ZmZlciAhPSAwICYmIChvZmZzZXQgJSBjYXBzLnNoYWRlclN0b3JhZ2VCdWZmZXJPZmZzZXRB
bGlnbm1lbnQpICE9IDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEdMX0lOVkFMSURfVkFMVUUs
CisgICAgICAgICAgICAgICAgICAgICJvZmZzZXQgbXVzdCBiZSBtdWx0aXBsZSBvZiB2YWx1ZSBv
ZiBTSEFERVJfU1RPUkFHRV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVC4iKSk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgInRoZSB0YXJnZXQgaXMgbm90IHN1cHBvcnRlZC4i
KSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7
Cit9CisKK2Jvb2wgVmFsaWRhdGVCaW5kQnVmZmVyQmFzZShDb250ZXh0ICpjb250ZXh0LCBHTGVu
dW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMdWludCBidWZmZXIpCit7CisgICAgcmV0dXJuIFZh
bGlkYXRlQmluZEJ1ZmZlckNvbW1vbihjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBidWZmZXIsIDAs
IDApOworfQorCitib29sIFZhbGlkYXRlQmluZEJ1ZmZlclJhbmdlKENvbnRleHQgKmNvbnRleHQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRw
dHIgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUp
Cit7CisgICAgaWYgKGJ1ZmZlciAhPSAwICYmIHNpemUgPD0gMCkKKyAgICB7CisgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwg
ImJ1ZmZlciBpcyBub24temVybyBhbmQgc2l6ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVy
by4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIFZhbGlkYXRl
QmluZEJ1ZmZlckNvbW1vbihjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBidWZmZXIsIG9mZnNldCwg
c2l6ZSk7Cit9CisKIGJvb2wgVmFsaWRhdGVQcm9ncmFtQmluYXJ5KENvbnRleHQgKmNvbnRleHQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSBiaW5hcnlGb3JtYXQsCkBAIC0xMzU5LDYgKzE0MzQsMjIg
QEAgYm9vbCBWYWxpZGF0ZVByb2dyYW1QYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRleHQsIEdMdWlu
dCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEcKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJy
ZWFrOwogCisgICAgICAgIGNhc2UgR0xfUFJPR1JBTV9TRVBBUkFCTEU6CisgICAgICAgICAgICBp
ZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgICAg
ICBFcnJvcihHTF9JTlZBTElEX0VOVU0sICJQUk9HUkFNX1NFUEFSQUJMRSBpcyBub3Qgc3VwcG9y
dGVkIGJlZm9yZSBHTEVTIDMuMSIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBHTF9GQUxTRSAmJiB2YWx1
ZSAhPSBHTF9UUlVFKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKAorICAgICAgICAgICAgICAgICAgICBHTF9JTlZBTElEX1ZBTFVFLCAi
SW52YWxpZCB2YWx1ZSwgZXhwZWN0ZWQgR0xfRkFMU0Ugb3IgR0xfVFJVRTogJWkiLCB2YWx1ZSkp
OworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHBuYW1lOiAweCVYIiwgcG5h
bWUpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE0MDMsNiArMTQ5NCwxNSBAQCBi
b29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJpdihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKICAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVF
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS53ZWJnbENvbXBhdGliaWxpdHkpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3RleHByIEdMZW51bSB2YWxpZENvbXBv
bmVudFR5cGVzW10gPSB7R0xfSU5UfTsKKyAgICAgICAgICAgICAgICBpZiAoVmFsaWRhdGVXZWJH
TEZyYW1lYnVmZmVyQXR0YWNobWVudENsZWFyVHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQsIGRyYXdidWZmZXIsIHZhbGlkQ29tcG9uZW50VHlwZXMsIEFycmF5U2l6ZSh2YWxp
ZENvbXBvbmVudFR5cGVzKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAg
ICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBHTF9TVEVOQ0lMOgpAQCAtMTQzNSw2ICsxNTM1
LDE1IEBAIGJvb2wgVmFsaWRhdGVDbGVhckJ1ZmZlcnVpdihWYWxpZGF0aW9uQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS53ZWJnbENvbXBhdGli
aWxpdHkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3RleHByIEdMZW51bSB2
YWxpZENvbXBvbmVudFR5cGVzW10gPSB7R0xfVU5TSUdORURfSU5UfTsKKyAgICAgICAgICAgICAg
ICBpZiAoVmFsaWRhdGVXZWJHTEZyYW1lYnVmZmVyQXR0YWNobWVudENsZWFyVHlwZSgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRleHQsIGRyYXdidWZmZXIsIHZhbGlkQ29tcG9uZW50VHlw
ZXMsIEFycmF5U2l6ZSh2YWxpZENvbXBvbmVudFR5cGVzKSkpCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgZGVmYXVsdDoKQEAgLTE0
NTksNiArMTU2OCwxNiBAQCBib29sIFZhbGlkYXRlQ2xlYXJCdWZmZXJmdihWYWxpZGF0aW9uQ29u
dGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJv
cihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldEV4dGVuc2lvbnMoKS53ZWJn
bENvbXBhdGliaWxpdHkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29uc3RleHBy
IEdMZW51bSB2YWxpZENvbXBvbmVudFR5cGVzW10gPSB7R0xfRkxPQVQsIEdMX1VOU0lHTkVEX05P
Uk1BTElaRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfU0lHTkVEX05PUk1BTElaRUR9OworICAgICAgICAgICAgICAgIGlmIChW
YWxpZGF0ZVdlYkdMRnJhbWVidWZmZXJBdHRhY2htZW50Q2xlYXJUeXBlKAorICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGV4dCwgZHJhd2J1ZmZlciwgdmFsaWRDb21wb25lbnRUeXBlcywgQXJy
YXlTaXplKHZhbGlkQ29tcG9uZW50VHlwZXMpKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIEdMX0RFUFRIOgpAQCAtMTY1
OSw2ICsxNzc4LDEyIEBAIGJvb2wgVmFsaWRhdGVDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRChDb250
ZXh0ICpjb250ZXh0LAogICAgIH0KIAogICAgIGNvbnN0IEludGVybmFsRm9ybWF0ICZmb3JtYXRJ
bmZvID0gR2V0SW50ZXJuYWxGb3JtYXRJbmZvKGZvcm1hdCk7CisgICAgaWYgKCFmb3JtYXRJbmZv
LmNvbXByZXNzZWQpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0sICJOb3QgYSB2YWxpZCBjb21wcmVzc2VkIHRleHR1cmUgZm9ybWF0Iikp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgYXV0byBibG9ja1NpemVPckVy
ciA9CiAgICAgICAgIGZvcm1hdEluZm8uY29tcHV0ZUNvbXByZXNzZWRJbWFnZVNpemUoR0xfVU5T
SUdORURfQllURSwgZ2w6OkV4dGVudHMod2lkdGgsIGhlaWdodCwgZGVwdGgpKTsKICAgICBpZiAo
YmxvY2tTaXplT3JFcnIuaXNFcnJvcigpKQpAQCAtMTkwMiw2ICsyMDI3LDcgQEAgYm9vbCBWYWxp
ZGF0ZUluZGV4ZWRTdGF0ZVF1ZXJ5KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFr
OworCiAgICAgICAgIGNhc2UgR0xfTUFYX0NPTVBVVEVfV09SS19HUk9VUF9TSVpFOgogICAgICAg
ICBjYXNlIEdMX01BWF9DT01QVVRFX1dPUktfR1JPVVBfQ09VTlQ6CiAgICAgICAgICAgICBpZiAo
aW5kZXggPj0gM3UpCkBAIC0xOTEwLDYgKzIwMzYsNjQgQEAgYm9vbCBWYWxpZGF0ZUluZGV4ZWRT
dGF0ZVF1ZXJ5KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgR0xfQVRPTUlDX0NPVU5URVJfQlVGRkVSX1NUQVJUOgorICAgICAgICBjYXNlIEdMX0FU
T01JQ19DT1VOVEVSX0JVRkZFUl9TSVpFOgorICAgICAgICBjYXNlIEdMX0FUT01JQ19DT1VOVEVS
X0JVRkZFUl9CSU5ESU5HOgorICAgICAgICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNp
b24oKSA8IEVTXzNfMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAiQXRvbWljIENvdW50ZXIgYnVmZmVycyBhcmUgbm90
IHN1cHBvcnRlZCBpbiB0aGlzIHZlcnNpb24gb2YgR0wiKSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGluZGV4ID49IGNhcHMu
bWF4QXRvbWljQ291bnRlckJ1ZmZlckJpbmRpbmdzKQorICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgICAgICBFcnJvcihH
TF9JTlZBTElEX1ZBTFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5kZXggaXMgb3V0
c2lkZSB0aGUgdmFsaWQgcmFuZ2UgZm9yIEdMX0FUT01JQ19DT1VOVEVSX0JVRkZFUl9CSU5ESU5H
IikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfU0hBREVSX1NUT1JBR0VfQlVGRkVSX1NU
QVJUOgorICAgICAgICBjYXNlIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9TSVpFOgorICAgICAg
ICBjYXNlIEdMX1NIQURFUl9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HOgorICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMSkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAg
RXJyb3IoR0xfSU5WQUxJRF9FTlVNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hhZGVy
IHN0b3JhZ2UgYnVmZmVycyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHZlcnNpb24gb2YgR0wi
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGluZGV4ID49IGNhcHMubWF4U2hhZGVyU3RvcmFnZUJ1ZmZlckJpbmRpbmdzKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAg
ICAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaW5kZXggaXMgb3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UgZm9yIEdMX1NIQURF
Ul9TVE9SQUdFX0JVRkZFUl9CSU5ESU5HIikpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR0xf
VkVSVEVYX0JJTkRJTkdfQlVGRkVSOgorICAgICAgICBjYXNlIEdMX1ZFUlRFWF9CSU5ESU5HX0RJ
VklTT1I6CisgICAgICAgIGNhc2UgR0xfVkVSVEVYX0JJTkRJTkdfT0ZGU0VUOgorICAgICAgICBj
YXNlIEdMX1ZFUlRFWF9CSU5ESU5HX1NUUklERToKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5n
ZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9yKEdMX0lO
VkFMSURfRU5VTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlZlcnRleCBBdHRyaWIgQmlu
ZGluZ3MgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyB2ZXJzaW9uIG9mIEdMIikpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChp
bmRleCA+PSBjYXBzLm1heFZlcnRleEF0dHJpYkJpbmRpbmdzKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgICAgICBF
cnJvcihHTF9JTlZBTElEX1ZBTFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiYmluZGlu
Z2luZGV4IG11c3QgYmUgc21hbGxlciB0aGFuIE1BWF9WRVJURVhfQVRUUklCX0JJTkRJTkdTLiIp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTkyNSw3ICsyMTA5LDcgQEAgYm9vbCBWYWxpZGF0ZUluZGV4ZWRTdGF0ZVF1ZXJ5KFZh
bGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAogCiBib29sIFZhbGlkYXRlR2V0SW50ZWdlcmlfdihW
YWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBH
TGludCAqZGF0YSkKIHsKLSAgICBpZiAoIWNvbnRleHQtPmdldEdMVmVyc2lvbigpLmlzRVMzT3JH
cmVhdGVyKCkpCisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMCkK
ICAgICB7CiAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLjAiKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTE5NDAsNyArMjEyNCw3IEBAIGJvb2wgVmFsaWRhdGVHZXRJbnRlZ2Vy
aV92Um9idXN0QU5HTEUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKmRhdGEpCiB7Ci0gICAgaWYgKCFjb250ZXh0
LT5nZXRHTFZlcnNpb24oKS5pc0VTM09yR3JlYXRlcigpKQorICAgIGlmIChjb250ZXh0LT5nZXRD
bGllbnRWZXJzaW9uKCkgPCBFU18zXzApCiAgICAgewogICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9y
dCBHTEVTMy4wIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xOTY2LDcgKzIxNTAsNyBA
QCBib29sIFZhbGlkYXRlR2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFKFZhbGlkYXRpb25Db250ZXh0
ICpjb250ZXh0LAogCiBib29sIFZhbGlkYXRlR2V0SW50ZWdlcjY0aV92KFZhbGlkYXRpb25Db250
ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMaW50NjQgKmRhdGEp
CiB7Ci0gICAgaWYgKCFjb250ZXh0LT5nZXRHTFZlcnNpb24oKS5pc0VTM09yR3JlYXRlcigpKQor
ICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzApCiAgICAgewogICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNv
bnRleHQgZG9lcyBub3Qgc3VwcG9ydCBHTEVTMy4wIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CkBAIC0xOTgxLDcgKzIxNjUsNyBAQCBib29sIFZhbGlkYXRlR2V0SW50ZWdlcjY0aV92Um9idXN0
QU5HTEUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50NjQgKmRhdGEpCiB7Ci0gICAgaWYgKCFjb250ZXh0LT5n
ZXRHTFZlcnNpb24oKS5pc0VTM09yR3JlYXRlcigpKQorICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRWZXJzaW9uKCkgPCBFU18zXzApCiAgICAgewogICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBH
TEVTMy4wIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMDA1LDQgKzIxODksMjkyIEBA
IGJvb2wgVmFsaWRhdGVHZXRJbnRlZ2VyNjRpX3ZSb2J1c3RBTkdMRShWYWxpZGF0aW9uQ29udGV4
dCAqY29udGV4dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBWYWxpZGF0ZUNvcHlCdWZm
ZXJTdWJEYXRhKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSByZWFkVGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB3cml0ZVRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludHB0ciByZWFkT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
aW50cHRyIHdyaXRlT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWlwdHIgc2l6ZSkKK3sKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkg
PCAzKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvcHlCdWZmZXJTdWJEYXRhIHJlcXVpcmVzIEVT
IDMgb3IgZ3JlYXRlciIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlm
ICghVmFsaWRCdWZmZXJUYXJnZXQoY29udGV4dCwgcmVhZFRhcmdldCkgfHwgIVZhbGlkQnVmZmVy
VGFyZ2V0KGNvbnRleHQsIHdyaXRlVGFyZ2V0KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgYnVmZmVyIHRhcmdldCIp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEJ1ZmZlciAqcmVhZEJ1ZmZl
ciAgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VGFyZ2V0QnVmZmVyKHJlYWRUYXJnZXQpOwor
ICAgIEJ1ZmZlciAqd3JpdGVCdWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VGFyZ2V0
QnVmZmVyKHdyaXRlVGFyZ2V0KTsKKworICAgIGlmICghcmVhZEJ1ZmZlciB8fCAhd3JpdGVCdWZm
ZXIpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgIk5vIGJ1ZmZlciBib3VuZCB0byB0YXJnZXQiKSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBWZXJpZnkgdGhhdCByZWFkQnVmZmVyIGFuZCB3cml0
ZUJ1ZmZlciBhcmUgbm90IGN1cnJlbnRseSBtYXBwZWQKKyAgICBpZiAocmVhZEJ1ZmZlci0+aXNN
YXBwZWQoKSB8fCB3cml0ZUJ1ZmZlci0+aXNNYXBwZWQoKSkKKyAgICB7CisgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04s
ICJDYW5ub3QgY2FsbCBDb3B5QnVmZmVyU3ViRGF0YSBvbiBhIG1hcHBlZCBidWZmZXIiKSk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBDaGVja2VkTnVtZXJpYzxHTGludHB0
cj4gY2hlY2tlZFJlYWRPZmZzZXQocmVhZE9mZnNldCk7CisgICAgQ2hlY2tlZE51bWVyaWM8R0xp
bnRwdHI+IGNoZWNrZWRXcml0ZU9mZnNldCh3cml0ZU9mZnNldCk7CisgICAgQ2hlY2tlZE51bWVy
aWM8R0xpbnRwdHI+IGNoZWNrZWRTaXplKHNpemUpOworCisgICAgYXV0byBjaGVja2VkUmVhZFN1
bSAgPSBjaGVja2VkUmVhZE9mZnNldCArIGNoZWNrZWRTaXplOworICAgIGF1dG8gY2hlY2tlZFdy
aXRlU3VtID0gY2hlY2tlZFdyaXRlT2Zmc2V0ICsgY2hlY2tlZFNpemU7CisKKyAgICBpZiAoIWNo
ZWNrZWRSZWFkU3VtLklzVmFsaWQoKSB8fCAhY2hlY2tlZFdyaXRlU3VtLklzVmFsaWQoKSB8fAor
ICAgICAgICAhSXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTxHTGludHB0cj4ocmVhZEJ1ZmZl
ci0+Z2V0U2l6ZSgpKSB8fAorICAgICAgICAhSXNWYWx1ZUluUmFuZ2VGb3JOdW1lcmljVHlwZTxH
TGludHB0cj4od3JpdGVCdWZmZXItPmdldFNpemUoKSkpCisgICAgeworICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJJbnRl
Z2VyIG92ZXJmbG93IHdoZW4gdmFsaWRhdGluZyBjb3B5IG9mZnNldHMuIikpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHJlYWRPZmZzZXQgPCAwIHx8IHdyaXRlT2Zm
c2V0IDwgMCB8fCBzaXplIDwgMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KAorICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgInJlYWRPZmZzZXQsIHdyaXRl
T2Zmc2V0IGFuZCBzaXplIG11c3QgYWxsIGJlIG5vbi1uZWdhdGl2ZSIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChjaGVja2VkUmVhZFN1bS5WYWx1ZU9yRGllKCkg
PiByZWFkQnVmZmVyLT5nZXRTaXplKCkgfHwKKyAgICAgICAgY2hlY2tlZFdyaXRlU3VtLlZhbHVl
T3JEaWUoKSA+IHdyaXRlQnVmZmVyLT5nZXRTaXplKCkpCisgICAgeworICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJCdWZm
ZXIgb2Zmc2V0IG92ZXJmbG93IGluIENvcHlCdWZmZXJTdWJEYXRhIikpOworICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHJlYWRCdWZmZXIgPT0gd3JpdGVCdWZmZXIpCisg
ICAgeworICAgICAgICBhdXRvIGNoZWNrZWRPZmZzZXREaWZmID0gKGNoZWNrZWRSZWFkT2Zmc2V0
IC0gY2hlY2tlZFdyaXRlT2Zmc2V0KS5BYnMoKTsKKyAgICAgICAgaWYgKCFjaGVja2VkT2Zmc2V0
RGlmZi5Jc1ZhbGlkKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRoaXMgc2hvbGQgbm90
IGJlIHBvc3NpYmxlLgorICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFM
VUUsICJJbnRlZ2VyIG92ZXJmbG93IHdoZW4gdmFsaWRhdGluZyBzYW1lIGJ1ZmZlciBjb3B5LiIp
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChj
aGVja2VkT2Zmc2V0RGlmZi5WYWx1ZU9yRGllKCkgPCBzaXplKQorICAgICAgICB7CisgICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFN0cmluZ2koQ29udGV4dCAqY29udGV4dCwgR0xlbnVt
IG5hbWUsIEdMdWludCBpbmRleCkKK3sKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JW
ZXJzaW9uKCkgPCAzKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAg
ICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgImdsR2V0U3RyaW5naSByZXF1aXJl
cyBPcGVuR0wgRVMgMy4wIG9yIGhpZ2hlci4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBzd2l0Y2ggKG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX0VYVEVOU0lP
TlM6CisgICAgICAgICAgICBpZiAoaW5kZXggPj0gY29udGV4dC0+Z2V0RXh0ZW5zaW9uU3RyaW5n
Q291bnQoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgR0xfSU5WQUxJRF9WQUxVRSwgImluZGV4
IG11c3QgYmUgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2YgZXh0ZW5zaW9uIHN0cmluZ3MuIikpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgR0xfUkVRVUVTVEFCTEVfRVhURU5TSU9OU19BTkdMRToK
KyAgICAgICAgICAgIGlmICghY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLnJlcXVlc3RFeHRlbnNp
b24pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBuYW1lLiIpKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaW5kZXggPj0g
Y29udGV4dC0+Z2V0UmVxdWVzdGFibGVFeHRlbnNpb25TdHJpbmdDb3VudCgpKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAg
ICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAiaW5kZXggbXVzdCBiZSBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiByZXF1ZXN0YWJsZSBleHRl
bnNpb24gc3RyaW5ncy4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQg
bmFtZS4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUo
VmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCkKK3sK
KyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzKQorICAgIHsKKyAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRhdGVSZW5kZXJi
dWZmZXJTdG9yYWdlUGFyYW1ldGVyc0Jhc2UoY29udGV4dCwgdGFyZ2V0LCBzYW1wbGVzLCBpbnRl
cm5hbGZvcm1hdCwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWlnaHQpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIC8vIFRoZSBFUzMgc3BlYyhzZWN0aW9uIDQuNC4yKSBzdGF0ZXMgdGhhdCB0aGUg
aW50ZXJuYWwgZm9ybWF0IG11c3QgYmUgc2l6ZWQgYW5kIG5vdCBhbiBpbnRlZ2VyCisgICAgLy8g
Zm9ybWF0IGlmIHNhbXBsZXMgaXMgZ3JlYXRlciB0aGFuIHplcm8uCisgICAgY29uc3QgZ2w6Oklu
dGVybmFsRm9ybWF0ICZmb3JtYXRJbmZvID0gZ2w6OkdldEludGVybmFsRm9ybWF0SW5mbyhpbnRl
cm5hbGZvcm1hdCk7CisgICAgaWYgKChmb3JtYXRJbmZvLmNvbXBvbmVudFR5cGUgPT0gR0xfVU5T
SUdORURfSU5UIHx8IGZvcm1hdEluZm8uY29tcG9uZW50VHlwZSA9PSBHTF9JTlQpICYmCisgICAg
ICAgIHNhbXBsZXMgPiAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIC8vIFRoZSBiZWhhdmlvciBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgQU5HTEUgdmVyc2lv
biwgd2hpY2ggd291bGQgZ2VuZXJhdGUgYSBHTF9PVVRfT0ZfTUVNT1JZLgorICAgIGNvbnN0IFRl
eHR1cmVDYXBzICZmb3JtYXRDYXBzID0gY29udGV4dC0+Z2V0VGV4dHVyZUNhcHMoKS5nZXQoaW50
ZXJuYWxmb3JtYXQpOworICAgIGlmIChzdGF0aWNfY2FzdDxHTHVpbnQ+KHNhbXBsZXMpID4gZm9y
bWF0Q2Fwcy5nZXRNYXhTYW1wbGVzKCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAg
ICAgICAgICAgIlNhbXBsZXMgbXVzdCBub3QgYmUgZ3JlYXRlciB0aGFuIG1heGltdW0gc3VwcG9y
dGVkIHZhbHVlIGZvciB0aGUgZm9ybWF0LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlVmVydGV4QXR0cmliSVBv
aW50ZXIoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVt
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0x2b2lkICpwb2ludGVy
KQoreworICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCisgICAg
eworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiVmVydGV4QXR0cmliSVBvaW50ZXIgcmVxdWlyZXMgT3BlbkdMIEVT
IDMuMCBvciBoaWdoZXIuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
aWYgKCFWYWxpZGF0ZVZlcnRleEZvcm1hdEJhc2UoY29udGV4dCwgaW5kZXgsIHNpemUsIHR5cGUs
IHRydWUpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChz
dHJpZGUgPCAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9WQUxVRSwgInN0cmlkZSBjYW5ub3QgYmUgbmVnYXRpdmUuIikpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgQ2FwcyAmY2FwcyA9IGNvbnRleHQtPmdl
dENhcHMoKTsKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpID49IEVTXzNfMSkK
KyAgICB7CisgICAgICAgIGlmIChzdHJpZGUgPiBjYXBzLm1heFZlcnRleEF0dHJpYlN0cmlkZSkK
KyAgICAgICAgeworICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAg
ICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgInN0cmlkZSBjYW5ub3QgYmUgZ3JlYXRlciB0
aGFuIE1BWF9WRVJURVhfQVRUUklCX1NUUklERS4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKworICAgICAgICAvLyBbT3BlbkdMIEVTIDMuMV0gU2VjdGlvbiAxMC4z
LjEgcGFnZSAyNDU6CisgICAgICAgIC8vIGdsVmVydGV4QXR0cmliQmluZGluZyBpcyBwYXJ0IG9m
IHRoZSBlcXVpdmFsZW50IGNvZGUgb2YgVmVydGV4QXR0cmliSVBvaW50ZXIsIHNvIGl0cworICAg
ICAgICAvLyB2YWxpZGF0aW9uIHNob3VsZCBiZSBpbmhlcml0ZWQuCisgICAgICAgIGlmIChpbmRl
eCA+PSBjYXBzLm1heFZlcnRleEF0dHJpYkJpbmRpbmdzKQorICAgICAgICB7CisgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElE
X1ZBTFVFLCAiaW5kZXggbXVzdCBiZSBzbWFsbGVyIHRoYW4gTUFYX1ZFUlRFWF9BVFRSSUJfQklO
RElOR1MuIikpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQor
CisgICAgLy8gW09wZW5HTCBFUyAzLjAuMl0gU2VjdGlvbiAyLjggcGFnZSAyNDoKKyAgICAvLyBB
biBJTlZBTElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQgd2hlbiBhIG5vbi16ZXJvIHZl
cnRleCBhcnJheSBvYmplY3QKKyAgICAvLyBpcyBib3VuZCwgemVybyBpcyBib3VuZCB0byB0aGUg
QVJSQVlfQlVGRkVSIGJ1ZmZlciBvYmplY3QgYmluZGluZyBwb2ludCwKKyAgICAvLyBhbmQgdGhl
IHBvaW50ZXIgYXJndW1lbnQgaXMgbm90IE5VTEwuCisgICAgaWYgKGNvbnRleHQtPmdldEdMU3Rh
dGUoKS5nZXRWZXJ0ZXhBcnJheUlkKCkgIT0gMCAmJgorICAgICAgICBjb250ZXh0LT5nZXRHTFN0
YXRlKCkuZ2V0QXJyYXlCdWZmZXJJZCgpID09IDAgJiYgcG9pbnRlciAhPSBudWxscHRyKQorICAg
IHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICJDbGllbnQgZGF0YSBjYW5ub3Qg
YmUgdXNlZCB3aXRoIGEgbm9uLWRlZmF1bHQgdmVydGV4IGFycmF5IG9iamVjdC4iKSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLndlYmdsQ29tcGF0aWJpbGl0eSkKKyAgICB7CisgICAgICAgIGlmICghVmFsaWRhdGVXZWJH
TFZlcnRleEF0dHJpYlBvaW50ZXIoY29udGV4dCwgdHlwZSwgZmFsc2UsIHN0cmlkZSwgcG9pbnRl
ciwgdHJ1ZSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlR2V0U3luY2l2
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIEdMc3luYyBzeW5jLAor
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVu
Z3RoLAorICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqdmFsdWVzKQoreworICAgIGlmIChj
b250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCisgICAgeworICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiR2V0U3luY2l2IHJlcXVpcmVzIE9wZW5HTCBFUyAzLjAgb3IgaGlnaGVyLiIpKTsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChidWZTaXplIDwgMCkKKyAgICB7Cisg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJidWZT
aXplIGNhbm5vdCBiZSBuZWdhdGl2ZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBGZW5jZVN5bmMgKmZlbmNlU3luYyA9IGNvbnRleHQtPmdldEZlbmNlU3luYyhzeW5j
KTsKKyAgICBpZiAoIWZlbmNlU3luYykKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJJbnZhbGlkIHN5bmMgb2JqZWN0LiIpKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRjaCAocG5hbWUpCisgICAgewor
ICAgICAgICBjYXNlIEdMX09CSkVDVF9UWVBFOgorICAgICAgICBjYXNlIEdMX1NZTkNfQ09ORElU
SU9OOgorICAgICAgICBjYXNlIEdMX1NZTkNfRkxBR1M6CisgICAgICAgIGNhc2UgR0xfU1lOQ19T
VEFUVVM6CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBw
bmFtZS4iKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBnbApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuaCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzLmgKaW5kZXggNDE0NDM0YjA3YjQu
LjJmZTU1MWExMTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvdmFsaWRhdGlvbkVTMy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJBTkdMRS92YWxpZGF0aW9uRVMzLmgKQEAgLTE1Niw5ICsxNTYsNiBAQCBib29sIFZhbGlkYXRl
R2V0UXVlcnlPYmplY3R1aXYoQ29udGV4dCAqY29udGV4dCwgR0x1aW50IGlkLCBHTGVudW0gcG5h
bWUsIEdMdWludAogYm9vbCBWYWxpZGF0ZUZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKENvbnRleHQg
KmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xp
bnQgbGF5ZXIpOwogCi1ib29sIFZhbGlkYXRlRVMzUmVuZGVyYnVmZmVyU3RvcmFnZVBhcmFtZXRl
cnMoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBpbnRlcm5h
bGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotCiBib29sIFZhbGlkYXRl
SW52YWxpZGF0ZUZyYW1lYnVmZmVyKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdM
c2l6ZWkgbnVtQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpOwogCkBAIC0xOTEsNiArMTg4LDE0IEBAIGJvb2wg
VmFsaWRhdGVDb21wcmVzc2VkVGV4SW1hZ2UzRChDb250ZXh0ICpjb250ZXh0LAogYm9vbCBWYWxp
ZGF0ZUJpbmRWZXJ0ZXhBcnJheShDb250ZXh0ICpjb250ZXh0LCBHTHVpbnQgYXJyYXkpOwogYm9v
bCBWYWxpZGF0ZUlzVmVydGV4QXJyYXkoQ29udGV4dCAqY29udGV4dCk7CiAKK2Jvb2wgVmFsaWRh
dGVCaW5kQnVmZmVyQmFzZShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQg
aW5kZXgsIEdMdWludCBidWZmZXIpOworYm9vbCBWYWxpZGF0ZUJpbmRCdWZmZXJSYW5nZShDb250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMdWludCBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50cHRyIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaXB0ciBzaXplKTsKKwogYm9vbCBWYWxpZGF0ZVByb2dyYW1CaW5hcnkoQ29udGV4dCAqY29u
dGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGJpbmFyeUZvcm1hdCwKQEAgLTM1Niw2ICszNjEs
MzYgQEAgYm9vbCBWYWxpZGF0ZUdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xFKFZhbGlkYXRpb25D
b250ZXh0ICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMc2l6ZWkgYnVmU2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHNpemVpICpsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQ2NCAqZGF0YSk7CisKK2Jvb2wgVmFsaWRhdGVDb3B5QnVmZmVyU3ViRGF0YShWYWxp
ZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcmVhZFRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
d3JpdGVUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgcmVh
ZE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciB3cml0ZU9m
ZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpcHRyIHNpemUpOwor
Citib29sIFZhbGlkYXRlR2V0U3RyaW5naShDb250ZXh0ICpjb250ZXh0LCBHTGVudW0gbmFtZSwg
R0x1aW50IGluZGV4KTsKK2Jvb2wgVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1w
bGUoVmFsaWRhdGlvbkNvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGhlaWdodCk7
CisKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJJUG9pbnRlcihWYWxpZGF0aW9uQ29udGV4dCAq
Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgc2l6ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHZvaWQgKnBvaW50ZXIpOworCitib29sIFZhbGlkYXRlR2V0U3lu
Y2l2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgIEdMc3luYyBzeW5j
LAorICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAq
bGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqdmFsdWVzKTsKKwogfSAgLy8g
bmFtZXNwYWNlIGdsCiAKICNlbmRpZiAvLyBMSUJBTkdMRV9WQUxJREFUSU9OX0VTM19IXwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25F
UzMxLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9u
RVMzMS5jcHAKaW5kZXggN2Q1YmI0ZjM0Y2YuLmIxMjhmM2EzYTRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMzEuY3BwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzMS5jcHAK
QEAgLTksMTcgKzksNzAgQEAKICNpbmNsdWRlICJsaWJBTkdMRS92YWxpZGF0aW9uRVMzMS5oIgog
CiAjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgorI2luY2x1ZGUgImxpYkFOR0xFL0ZyYW1l
YnVmZmVyLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvdmFsaWRhdGlvbkVTLmgiCiAjaW5jbHVkZSAi
bGliQU5HTEUvdmFsaWRhdGlvbkVTMy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1ZlcnRleEFycmF5
LmgiCisKKyNpbmNsdWRlICJjb21tb24vdXRpbGl0aWVzLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBh
bmdsZTsKIAogbmFtZXNwYWNlIGdsCiB7CiAKK25hbWVzcGFjZQoreworCitib29sIFZhbGlkYXRl
TmFtZWRQcm9ncmFtSW50ZXJmYWNlKEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlKQoreworICAgIHN3
aXRjaCAocHJvZ3JhbUludGVyZmFjZSkKKyAgICB7CisgICAgICAgIGNhc2UgR0xfVU5JRk9STToK
KyAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JMT0NLOgorICAgICAgICBjYXNlIEdMX1BST0dSQU1f
SU5QVVQ6CisgICAgICAgIGNhc2UgR0xfUFJPR1JBTV9PVVRQVVQ6CisgICAgICAgIGNhc2UgR0xf
VFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkc6CisgICAgICAgIGNhc2UgR0xfQlVGRkVSX1ZBUklB
QkxFOgorICAgICAgICBjYXNlIEdMX1NIQURFUl9TVE9SQUdFX0JMT0NLOgorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorfQorCitib29sIFZhbGlkYXRlUHJvZ3JhbVJlc291cmNlSW5kZXgoY29uc3QgUHJv
Z3JhbSAqcHJvZ3JhbU9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGVudW0gcHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgaW5kZXgpCit7CisgICAgc3dpdGNoIChwcm9ncmFtSW50ZXJmYWNlKQorICAgIHsK
KyAgICAgICAgY2FzZSBHTF9QUk9HUkFNX0lOUFVUOgorICAgICAgICAgICAgcmV0dXJuIChpbmRl
eCA8IHN0YXRpY19jYXN0PEdMdWludD4ocHJvZ3JhbU9iamVjdC0+Z2V0QWN0aXZlQXR0cmlidXRl
Q291bnQoKSkpOworCisgICAgICAgIGNhc2UgR0xfUFJPR1JBTV9PVVRQVVQ6CisgICAgICAgICAg
ICByZXR1cm4gKGluZGV4IDwgc3RhdGljX2Nhc3Q8R0x1aW50Pihwcm9ncmFtT2JqZWN0LT5nZXRP
dXRwdXRSZXNvdXJjZUNvdW50KCkpKTsKKworICAgICAgICAvLyBUT0RPKEppZSk6IG1vcmUgaW50
ZXJmYWNlcy4KKyAgICAgICAgY2FzZSBHTF9VTklGT1JNOgorICAgICAgICBjYXNlIEdMX1VOSUZP
Uk1fQkxPQ0s6CisgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1ZBUllJTkc6Cisg
ICAgICAgIGNhc2UgR0xfQlVGRkVSX1ZBUklBQkxFOgorICAgICAgICBjYXNlIEdMX1NIQURFUl9T
VE9SQUdFX0JMT0NLOgorICAgICAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworfSAgLy8gYW5vbnlt
b3VzIG5hbWVzcGFjZQorCiBib29sIFZhbGlkYXRlR2V0Qm9vbGVhbmlfdihDb250ZXh0ICpjb250
ZXh0LCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMYm9vbGVhbiAqZGF0YSkKIHsKLSAg
ICBpZiAoIWNvbnRleHQtPmdldEdMVmVyc2lvbigpLmlzRVMzMSgpKQorICAgIGlmIChjb250ZXh0
LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzEpCiAgICAgewogICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQgZG9lcyBub3Qg
c3VwcG9ydCBHTEVTMy4xIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00MCw3ICs5Myw3
IEBAIGJvb2wgVmFsaWRhdGVHZXRCb29sZWFuaV92Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gKmRhdGEp
CiB7Ci0gICAgaWYgKCFjb250ZXh0LT5nZXRHTFZlcnNpb24oKS5pc0VTMzEoKSkKKyAgICBpZiAo
Y29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQogICAgIHsKICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRv
ZXMgbm90IHN1cHBvcnQgR0xFUzMuMSIpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNjQs
NCArMTE3LDcxNCBAQCBib29sIFZhbGlkYXRlR2V0Qm9vbGVhbmlfdlJvYnVzdEFOR0xFKENvbnRl
eHQgKmNvbnRleHQsCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jvb2wgVmFsaWRhdGVEcmF3SW5k
aXJlY3RCYXNlKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBtb2RlLCBjb25zdCBHTHZvaWQgKmlu
ZGlyZWN0KQoreworICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9uKCkgPCBFU18zXzEp
CisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBHTEVTMy4xIikpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gSGVyZSB0aGUgdGhpcmQgcGFyYW1ldGVyIDEg
aXMgb25seSB0byBwYXNzIHRoZSBjb3VudCB2YWxpZGF0aW9uLgorICAgIGlmICghVmFsaWRhdGVE
cmF3QmFzZShjb250ZXh0LCBtb2RlLCAxKSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICBjb25zdCBTdGF0ZSAmc3RhdGUgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCk7
CisKKyAgICAvLyBBbiBJTlZBTElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQgaWYgemVy
byBpcyBib3VuZCB0byBWRVJURVhfQVJSQVlfQklORElORywKKyAgICAvLyBEUkFXX0lORElSRUNU
X0JVRkZFUiBvciB0byBhbnkgZW5hYmxlZCB2ZXJ0ZXggYXJyYXkuCisgICAgaWYgKCFzdGF0ZS5n
ZXRWZXJ0ZXhBcnJheUlkKCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgInplcm8gaXMgYm91bmQgdG8gVkVSVEVYX0FSUkFZ
X0JJTkRJTkciKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBnbDo6QnVm
ZmVyICpkcmF3SW5kaXJlY3RCdWZmZXIgPSBzdGF0ZS5nZXREcmF3SW5kaXJlY3RCdWZmZXIoKTsK
KyAgICBpZiAoIWRyYXdJbmRpcmVjdEJ1ZmZlcikKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiemVybyBpcyBib3VuZCB0byBE
UkFXX0lORElSRUNUX0JVRkZFUiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIC8vIEFuIElOVkFMSURfVkFMVUUgZXJyb3IgaXMgZ2VuZXJhdGVkIGlmIGluZGlyZWN0IGlz
IG5vdCBhIG11bHRpcGxlIG9mIHRoZSBzaXplLCBpbiBiYXNpYworICAgIC8vIG1hY2hpbmUgdW5p
dHMsIG9mIHVpbnQuCisgICAgR0xpbnQ2NCBvZmZzZXQgPSByZWludGVycHJldF9jYXN0PEdMaW50
NjQ+KGluZGlyZWN0KTsKKyAgICBpZiAoKHN0YXRpY19jYXN0PEdMdWludD4ob2Zmc2V0KSAlIHNp
emVvZihHTHVpbnQpKSAhPSAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
CisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLAorICAgICAgICAgICAgICAgICAg
ImluZGlyZWN0IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSBzaXplLCBpbiBiYXNpYyBtYWNoaW5l
IHVuaXRzLCBvZiB1aW50IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVEcmF3QXJyYXlzSW5kaXJlY3QoQ29udGV4
dCAqY29udGV4dCwgR0xlbnVtIG1vZGUsIGNvbnN0IEdMdm9pZCAqaW5kaXJlY3QpCit7CisgICAg
Y29uc3QgU3RhdGUgJnN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICA9IGNvbnRleHQtPmdl
dEdMU3RhdGUoKTsKKyAgICBnbDo6VHJhbnNmb3JtRmVlZGJhY2sgKmN1clRyYW5zZm9ybUZlZWRi
YWNrID0gc3RhdGUuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCk7CisgICAgaWYgKGN1clRy
YW5zZm9ybUZlZWRiYWNrICYmIGN1clRyYW5zZm9ybUZlZWRiYWNrLT5pc0FjdGl2ZSgpICYmCisg
ICAgICAgICFjdXJUcmFuc2Zvcm1GZWVkYmFjay0+aXNQYXVzZWQoKSkKKyAgICB7CisgICAgICAg
IC8vIEFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9yIGlzIGdlbmVyYXRlZCBpZiB0cmFuc2Zvcm0g
ZmVlZGJhY2sgaXMgYWN0aXZlIGFuZCBub3QgcGF1c2VkLgorICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAidHJhbnNm
b3JtIGZlZWRiYWNrIGlzIGFjdGl2ZSBhbmQgbm90IHBhdXNlZC4iKSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkYXRlRHJhd0luZGlyZWN0QmFzZShjb250
ZXh0LCBtb2RlLCBpbmRpcmVjdCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGdsOjpC
dWZmZXIgKmRyYXdJbmRpcmVjdEJ1ZmZlciA9IHN0YXRlLmdldERyYXdJbmRpcmVjdEJ1ZmZlcigp
OworICAgIENoZWNrZWROdW1lcmljPHNpemVfdD4gY2hlY2tlZE9mZnNldChyZWludGVycHJldF9j
YXN0PHNpemVfdD4oaW5kaXJlY3QpKTsKKyAgICAvLyBJbiBPcGVuR0wgRVMzLjEgc3BlYywgc2Vz
c2lvbiAxMC41LCBpdCBkZWZpbmVzIHRoZSBzdHJ1Y3Qgb2YgRHJhd0FycmF5c0luZGlyZWN0Q29t
bWFuZAorICAgIC8vIHdoaWNoJ3Mgc2l6ZSBpcyA0ICogc2l6ZW9mKHVpbnQpLgorICAgIGF1dG8g
Y2hlY2tlZFN1bSA9IGNoZWNrZWRPZmZzZXQgKyA0ICogc2l6ZW9mKEdMdWludCk7CisgICAgaWYg
KCFjaGVja2VkU3VtLklzVmFsaWQoKSB8fAorICAgICAgICBjaGVja2VkU3VtLlZhbHVlT3JEaWUo
KSA+IHN0YXRpY19jYXN0PHNpemVfdD4oZHJhd0luZGlyZWN0QnVmZmVyLT5nZXRTaXplKCkpKQor
ICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICJ0aGUgIGNvbW1hbmQgIHdv
dWxkIHNvdXJjZSBkYXRhIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgb2JqZWN0LiIpKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIFZhbGlkYXRlRHJhd0VsZW1lbnRzSW5kaXJlY3QoQ29udGV4dCAqY29udGV4dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBHTHZvaWQgKmluZGlyZWN0KQoreworICAgIGlmICghVmFsaWRhdGVE
cmF3RWxlbWVudHNCYXNlKGNvbnRleHQsIHR5cGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBjb25zdCBTdGF0ZSAmc3RhdGUgICAgICAgICAgICAgPSBjb250ZXh0LT5nZXRHTFN0YXRl
KCk7CisgICAgY29uc3QgVmVydGV4QXJyYXkgKnZhbyAgICAgICAgID0gc3RhdGUuZ2V0VmVydGV4
QXJyYXkoKTsKKyAgICBnbDo6QnVmZmVyICplbGVtZW50QXJyYXlCdWZmZXIgPSB2YW8tPmdldEVs
ZW1lbnRBcnJheUJ1ZmZlcigpLmdldCgpOworICAgIGlmICghZWxlbWVudEFycmF5QnVmZmVyKQor
ICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sICJ6ZXJvIGlzIGJvdW5kIHRvIEVMRU1FTlRfQVJSQVlfQlVGRkVSIikpOworICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZURyYXdJbmRpcmVjdEJh
c2UoY29udGV4dCwgbW9kZSwgaW5kaXJlY3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBnbDo6QnVmZmVyICpkcmF3SW5kaXJlY3RCdWZmZXIgPSBzdGF0ZS5nZXREcmF3SW5kaXJlY3RC
dWZmZXIoKTsKKyAgICBDaGVja2VkTnVtZXJpYzxzaXplX3Q+IGNoZWNrZWRPZmZzZXQocmVpbnRl
cnByZXRfY2FzdDxzaXplX3Q+KGluZGlyZWN0KSk7CisgICAgLy8gSW4gT3BlbkdMIEVTMy4xIHNw
ZWMsIHNlc3Npb24gMTAuNSwgaXQgZGVmaW5lcyB0aGUgc3RydWN0IG9mIERyYXdFbGVtZW50c0lu
ZGlyZWN0Q29tbWFuZAorICAgIC8vIHdoaWNoJ3Mgc2l6ZSBpcyA1ICogc2l6ZW9mKHVpbnQpLgor
ICAgIGF1dG8gY2hlY2tlZFN1bSA9IGNoZWNrZWRPZmZzZXQgKyA1ICogc2l6ZW9mKEdMdWludCk7
CisgICAgaWYgKCFjaGVja2VkU3VtLklzVmFsaWQoKSB8fAorICAgICAgICBjaGVja2VkU3VtLlZh
bHVlT3JEaWUoKSA+IHN0YXRpY19jYXN0PHNpemVfdD4oZHJhd0luZGlyZWN0QnVmZmVyLT5nZXRT
aXplKCkpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAg
ICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwKKyAgICAgICAgICAgICAgICAgICJ0aGUgIGNv
bW1hbmQgIHdvdWxkIHNvdXJjZSBkYXRhIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBidWZmZXIgb2Jq
ZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJCYXNlKENvbnRleHQgKmNv
bnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJn
ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCkKK3sKKyAg
ICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQorICAgIHsKKyAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250
ZXh0IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMuMSIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIGlmIChsZW5ndGgpCisgICAgeworICAgICAgICAqbGVuZ3RoID0gMDsKKyAg
ICB9CisKKyAgICBpZiAoIVZhbGlkVGV4TGV2ZWxEZXN0aW5hdGlvblRhcmdldChjb250ZXh0LCB0
YXJnZXQpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5W
QUxJRF9FTlVNLCAiSW52YWxpZCB0ZXh0dXJlIHRhcmdldCIpKTsKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGlmIChjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKElzQ3ViZU1h
cFRleHR1cmVUYXJnZXQodGFyZ2V0KSA/IEdMX1RFWFRVUkVfQ1VCRV9NQVAgOiB0YXJnZXQpID09
CisgICAgICAgIG51bGxwdHIpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX0VOVU0sICJObyB0ZXh0dXJlIGJvdW5kLiIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghVmFsaWRNaXBMZXZlbChjb250ZXh0LCB0YXJn
ZXQsIGxldmVsKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdM
X0lOVkFMSURfVkFMVUUpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3
aXRjaCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX1RFWFRVUkVfUkVEX1RZUEU6Cisg
ICAgICAgIGNhc2UgR0xfVEVYVFVSRV9HUkVFTl9UWVBFOgorICAgICAgICBjYXNlIEdMX1RFWFRV
UkVfQkxVRV9UWVBFOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfQUxQSEFfVFlQRToKKyAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX0RFUFRIX1RZUEU6CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBHTF9URVhUVVJFX1JFRF9TSVpFOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfR1JF
RU5fU0laRToKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX0JMVUVfU0laRToKKyAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX0FMUEhBX1NJWkU6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9ERVBUSF9T
SVpFOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfU1RFTkNJTF9TSVpFOgorICAgICAgICBjYXNl
IEdMX1RFWFRVUkVfU0hBUkVEX1NJWkU6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBHTF9URVhUVVJFX0lOVEVSTkFMX0ZPUk1BVDoKKyAgICAgICAgY2FzZSBHTF9URVhUVVJFX1dJ
RFRIOgorICAgICAgICBjYXNlIEdMX1RFWFRVUkVfSEVJR0hUOgorICAgICAgICBjYXNlIEdMX1RF
WFRVUkVfREVQVEg6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHTF9URVhUVVJF
X1NBTVBMRVM6CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9GSVhFRF9TQU1QTEVfTE9DQVRJT05T
OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVEVYVFVSRV9DT01QUkVTU0VE
OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0sICJVbmtub3duIHBuYW1lLiIp
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobGVuZ3RoKQor
ICAgIHsKKyAgICAgICAgKmxlbmd0aCA9IDE7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQor
Citib29sIFZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKQoreworICAgIHJldHVybiBWYWxpZGF0
ZUdldFRleExldmVsUGFyYW1ldGVyQmFzZShjb250ZXh0LCB0YXJnZXQsIGxldmVsLCBwbmFtZSwg
bnVsbHB0cik7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFtZXRlcml2KENvbnRl
eHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKQoreworICAgIHJl
dHVybiBWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyQmFzZShjb250ZXh0LCB0YXJnZXQsIGxl
dmVsLCBwbmFtZSwgbnVsbHB0cik7Cit9CisKK2Jvb2wgVmFsaWRhdGVUZXhTdG9yYWdlMkRNdWx0
aVNhbXBsZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xzaXplaSBzYW1wbGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGludGVybmFsRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xi
b29sZWFuIGZpeGVkU2FtcGxlTG9jYXRpb25zKQoreworICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRWZXJzaW9uKCkgPCBFU18zXzEpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBH
TEVTMy4xLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICh0YXJn
ZXQgIT0gR0xfVEVYVFVSRV8yRF9NVUxUSVNBTVBMRSkKKyAgICB7CisgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIlRhcmdldCBtdXN0IGJlIFRFWFRV
UkVfMkRfTVVMVElTQU1QTEUuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgaWYgKHdpZHRoIDwgMSB8fCBoZWlnaHQgPCAxKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIldpZHRoIGFuZCBoZWlnaHQgbXVz
dCBiZSBwb3NpdGl2ZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBj
b25zdCBDYXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOworICAgIGlmIChzdGF0aWNfY2Fz
dDxHTHVpbnQ+KHdpZHRoKSA+IGNhcHMubWF4MkRUZXh0dXJlU2l6ZSB8fAorICAgICAgICBzdGF0
aWNfY2FzdDxHTHVpbnQ+KGhlaWdodCkgPiBjYXBzLm1heDJEVGV4dHVyZVNpemUpCisgICAgewor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFM
SURfVkFMVUUsCisgICAgICAgICAgICAgICAgICAiV2lkdGggYW5kIGhlaWdodCBtdXN0IGJlIGxl
c3MgdGhhbiBvciBlcXVhbCB0byBHTF9NQVhfVEVYVFVSRV9TSVpFLiIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChzYW1wbGVzID09IDApCisgICAgeworICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiU2FtcGxlcyBt
YXkgbm90IGJlIHplcm8uIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
Y29uc3QgVGV4dHVyZUNhcHMgJmZvcm1hdENhcHMgPSBjb250ZXh0LT5nZXRUZXh0dXJlQ2Fwcygp
LmdldChpbnRlcm5hbEZvcm1hdCk7CisgICAgaWYgKCFmb3JtYXRDYXBzLnJlbmRlcmFibGUpCisg
ICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdM
X0lOVkFMSURfRU5VTSwKKyAgICAgICAgICAgICAgICAgICJTaXplZEludGVybmFsZm9ybWF0IG11
c3QgYmUgY29sb3ItcmVuZGVyYWJsZSwgZGVwdGgtcmVuZGVyYWJsZSwgIgorICAgICAgICAgICAg
ICAgICAgIm9yIHN0ZW5jaWwtcmVuZGVyYWJsZS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisKKyAgICAvLyBUaGUgRVMzLjEgc3BlYyhzZWN0aW9uIDguOCkgc3RhdGVzIHRoYXQg
YW4gSU5WQUxJRF9FTlVNIGVycm9yIGlzIGdlbmVyYXRlZCBpZiBpbnRlcm5hbGZvcm1hdAorICAg
IC8vIGlzIG9uZSBvZiB0aGUgdW5zaXplZCBiYXNlIGludGVybmFsZm9ybWF0cyBsaXN0ZWQgaW4g
dGFibGUgOC4xMS4KKyAgICBjb25zdCBnbDo6SW50ZXJuYWxGb3JtYXQgJmZvcm1hdEluZm8gPSBn
bDo6R2V0SW50ZXJuYWxGb3JtYXRJbmZvKGludGVybmFsRm9ybWF0KTsKKyAgICBpZiAoZm9ybWF0
SW5mby5waXhlbEJ5dGVzID09IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfRU5VTSwKKyAgICAgICAgICAgICAgICAg
ICJJbnRlcm5hbGZvcm1hdCBpcyBvbmUgb2YgdGhlIHVuc3VwcG9ydGVkIHVuc2l6ZWQgYmFzZSBp
bnRlcm5hbGZvcm1hdHMuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
aWYgKHN0YXRpY19jYXN0PEdMdWludD4oc2FtcGxlcykgPiBmb3JtYXRDYXBzLmdldE1heFNhbXBs
ZXMoKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAg
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAgICAgICAiU2FtcGxlcyBt
dXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gbWF4aW11bSBzdXBwb3J0ZWQgdmFsdWUgZm9yIHRoZSBm
b3JtYXQuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgVGV4dHVyZSAq
dGV4dHVyZSA9IGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKKyAgICBpZiAoIXRl
eHR1cmUgfHwgdGV4dHVyZS0+aWQoKSA9PSAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJaZXJvIGlzIGJvdW5kIHRvIHRh
cmdldC4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAodGV4dHVy
ZS0+Z2V0SW1tdXRhYmxlRm9ybWF0KCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLAorICAgICAgICAg
ICAgICAgICAgIlRoZSB2YWx1ZSBvZiBURVhUVVJFX0lNTVVUQUJMRV9GT1JNQVQgZm9yIHRoZSB0
ZXh0dXJlICIKKyAgICAgICAgICAgICAgICAgICJjdXJyZW50bHkgYm91bmQgdG8gdGFyZ2V0IG9u
IHRoZSBhY3RpdmUgdGV4dHVyZSB1bml0IGlzIHRydWUuIikpOworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRNdWx0
aXNhbXBsZWZ2KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSBwbmFtZSwgR0x1aW50IGluZGV4LCBH
TGZsb2F0ICp2YWwpCit7CisgICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVT
XzNfMSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAiQ29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLjEuIikpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHBuYW1lICE9IEdMX1NBTVBMRV9Q
T1NJVElPTikKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSwgIlBuYW1lIG11c3QgYmUgU0FNUExFX1BPU0lUSU9OLiIpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIEdMaW50IG1heFNhbXBsZXMgPSBjb250ZXh0LT5n
ZXRDYXBzKCkubWF4U2FtcGxlczsKKyAgICBpZiAoaW5kZXggPj0gc3RhdGljX2Nhc3Q8R0x1aW50
PihtYXhTYW1wbGVzKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAg
ICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwgIkluZGV4IG11c3QgYmUgbGVzcyB0aGFu
IHRoZSB2YWx1ZSBvZiBTQU1QTEVTLiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRpb25GcmFtZWJ1ZmZlclBhcmFt
ZXRlcmkoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCBwYXJhbSkKK3sKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18x
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMuMS4iKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoIVZhbGlkRnJhbWVidWZmZXJUYXJnZXQo
dGFyZ2V0KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfRU5VTSwgIkludmFsaWQgZnJhbWVidWZmZXIgdGFyZ2V0LiIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgICBj
YXNlIEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfV0lEVEg6CisgICAgICAgIHsKKyAgICAgICAgICAg
IEdMaW50IG1heFdpZHRoID0gY29udGV4dC0+Z2V0Q2FwcygpLm1heEZyYW1lYnVmZmVyV2lkdGg7
CisgICAgICAgICAgICBpZiAocGFyYW0gPCAwIHx8IHBhcmFtID4gbWF4V2lkdGgpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAg
ICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJQYXJhbXMgbGVzcyB0aGFuIDAgb3IgZ3JlYXRlciB0aGFuIEdMX01BWF9GUkFNRUJVRkZF
Ul9XSURUSC4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9GUkFNRUJV
RkZFUl9ERUZBVUxUX0hFSUdIVDoKKyAgICAgICAgeworICAgICAgICAgICAgR0xpbnQgbWF4SGVp
Z2h0ID0gY29udGV4dC0+Z2V0Q2FwcygpLm1heEZyYW1lYnVmZmVySGVpZ2h0OworICAgICAgICAg
ICAgaWYgKHBhcmFtIDwgMCB8fCBwYXJhbSA+IG1heEhlaWdodCkKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAg
RXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhcmFt
cyBsZXNzIHRoYW4gMCBvciBncmVhdGVyIHRoYW4gR0xfTUFYX0ZSQU1FQlVGRkVSX0hFSUdIVC4i
KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHTF9GUkFNRUJVRkZFUl9ERUZB
VUxUX1NBTVBMRVM6CisgICAgICAgIHsKKyAgICAgICAgICAgIEdMaW50IG1heFNhbXBsZXMgPSBj
b250ZXh0LT5nZXRDYXBzKCkubWF4RnJhbWVidWZmZXJTYW1wbGVzOworICAgICAgICAgICAgaWYg
KHBhcmFtIDwgMCB8fCBwYXJhbSA+IG1heFNhbXBsZXMpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICAgICAgICAgIEVycm9y
KEdMX0lOVkFMSURfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJQYXJhbXMgbGVz
cyB0aGFuIDAgb3IgZ3JlYXRlciB0aGFuIEdMX01BWF9GUkFNRUJVRkZFUl9TQU1QTEVTLiIpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRf
RklYRURfU0FNUExFX0xPQ0FUSU9OUzoKKyAgICAgICAgeworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgeworICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBwbmFtZTogMHgl
WCIsIHBuYW1lKSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBjb25zdCBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0
YXRlKCkuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsKKyAgICBBU1NFUlQoZnJhbWVidWZm
ZXIpOworICAgIGlmIChmcmFtZWJ1ZmZlci0+aWQoKSA9PSAwKQorICAgIHsKKyAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
TiwgIkRlZmF1bHQgZnJhbWVidWZmZXIgaXMgYm91bmQgdG8gdGFyZ2V0LiIpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0
aW9uR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgKnBhcmFtcykKK3sKKyAgICBpZiAoY29u
dGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQorICAgIHsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMg
bm90IHN1cHBvcnQgR0xFUzMuMS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBpZiAoIVZhbGlkRnJhbWVidWZmZXJUYXJnZXQodGFyZ2V0KSkKKyAgICB7CisgICAgICAg
IGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSwgIkludmFsaWQgZnJh
bWVidWZmZXIgdGFyZ2V0LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg
IHN3aXRjaCAocG5hbWUpCisgICAgeworICAgICAgICBjYXNlIEdMX0ZSQU1FQlVGRkVSX0RFRkFV
TFRfV0lEVEg6CisgICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfREVGQVVMVF9IRUlHSFQ6Cisg
ICAgICAgIGNhc2UgR0xfRlJBTUVCVUZGRVJfREVGQVVMVF9TQU1QTEVTOgorICAgICAgICBjYXNl
IEdMX0ZSQU1FQlVGRkVSX0RFRkFVTFRfRklYRURfU0FNUExFX0xPQ0FUSU9OUzoKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBwbmFtZTogMHglWCIsIHBuYW1l
KSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgRnJhbWVi
dWZmZXIgKmZyYW1lYnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFRhcmdldEZyYW1l
YnVmZmVyKHRhcmdldCk7CisgICAgQVNTRVJUKGZyYW1lYnVmZmVyKTsKKworICAgIGlmIChmcmFt
ZWJ1ZmZlci0+aWQoKSA9PSAwKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
CisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkRlZmF1bHQgZnJhbWVi
dWZmZXIgaXMgYm91bmQgdG8gdGFyZ2V0LiIpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYWxpZGF0ZUdldFByb2dyYW1SZXNvdXJj
ZUluZGV4KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHByb2dyYW1JbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgR0xjaGFyICpuYW1lKQoreworICAgIGlmIChjb250ZXh0LT5nZXRDbGll
bnRWZXJzaW9uKCkgPCBFU18zXzEpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBH
TEVTIDMuMS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBQcm9ncmFt
ICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pOworICAg
IGlmIChwcm9ncmFtT2JqZWN0ID09IG51bGxwdHIpCisgICAgeworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgaWYgKCFWYWxpZGF0ZU5hbWVkUHJvZ3JhbUludGVyZmFjZShwcm9n
cmFtSW50ZXJmYWNlKSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAg
ICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9FTlVNLCAiSW52YWxpZCBwcm9ncmFtIGludGVyZmFj
ZTogMHglWCIsIHByb2dyYW1JbnRlcmZhY2UpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlQmluZFZlcnRleEJ1ZmZl
cihWYWxpZGF0aW9uQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMdWludCBiaW5kaW5nSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
THVpbnQgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnRwdHIgb2Zm
c2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBzdHJpZGUpCit7Cisg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMSkKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29u
dGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLjEuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKCFjb250ZXh0LT5pc0J1ZmZlckdlbmVyYXRlZChidWZmZXIpKQor
ICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sICJCdWZmZXIgaXMgbm90IGdlbmVyYXRlZC4iKSk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICBjb25zdCBDYXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOwor
ICAgIGlmIChiaW5kaW5nSW5kZXggPj0gY2Fwcy5tYXhWZXJ0ZXhBdHRyaWJCaW5kaW5ncykKKyAg
ICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKAorICAgICAgICAgICAgR0xf
SU5WQUxJRF9WQUxVRSwgImJpbmRpbmdpbmRleCBtdXN0IGJlIHNtYWxsZXIgdGhhbiBNQVhfVkVS
VEVYX0FUVFJJQl9CSU5ESU5HUy4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBpZiAob2Zmc2V0IDwgMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfVkFMVUUsICJvZmZzZXQgY2Fubm90IGJlIG5lZ2F0aXZlLiIpKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChzdHJpZGUgPCAwIHx8IHN0
cmlkZSA+IGNhcHMubWF4VmVydGV4QXR0cmliU3RyaWRlKQorICAgIHsKKyAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAic3Ry
aWRlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCBNQVhfVkVSVEVYX0FUVFJJQl9TVFJJREUuIikpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gW09wZW5HTCBFUyAzLjFdIFNl
Y3Rpb24gMTAuMy4xIHBhZ2UgMjQ0OgorICAgIC8vIEFuIElOVkFMSURfT1BFUkFUSU9OIGVycm9y
IGlzIGdlbmVyYXRlZCBpZiB0aGUgZGVmYXVsdCB2ZXJ0ZXggYXJyYXkgb2JqZWN0IGlzIGJvdW5k
LgorICAgIGlmIChjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXJyYXlJZCgpID09IDAp
CisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkRlZmF1bHQgdmVydGV4IGFycmF5IGJ1ZmZlciBpcyBib3VuZC4iKSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBW
YWxpZGF0ZVZlcnRleEJpbmRpbmdEaXZpc29yKFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LCBH
THVpbnQgYmluZGluZ0luZGV4LCBHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBpZiAoY29udGV4dC0+
Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFu
ZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1
cHBvcnQgR0xFUzMuMS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBj
b25zdCBDYXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOworICAgIGlmIChiaW5kaW5nSW5k
ZXggPj0gY2Fwcy5tYXhWZXJ0ZXhBdHRyaWJCaW5kaW5ncykKKyAgICB7CisgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKAorICAgICAgICAgICAgR0xfSU5WQUxJRF9WQUxVRSwgImJp
bmRpbmdpbmRleCBtdXN0IGJlIHNtYWxsZXIgdGhhbiBNQVhfVkVSVEVYX0FUVFJJQl9CSU5ESU5H
Uy4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBbT3BlbkdMIEVT
IDMuMV0gU2VjdGlvbiAxMC4zLjEgcGFnZSAyNDM6CisgICAgLy8gQW4gSU5WQUxJRF9PUEVSQVRJ
T04gZXJyb3IgaXMgZ2VuZXJhdGVkIGlmIHRoZSBkZWZhdWx0IHZlcnRleCBhcnJheSBvYmplY3Qg
aXMgYm91bmQuCisgICAgaWYgKGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBcnJheUlk
KCkgPT0gMCkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiRGVmYXVsdCB2ZXJ0ZXggYXJyYXkgb2JqZWN0IGlzIGJvdW5kLiIp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliRm9ybWF0KFZhbGlkYXRpb25Db250ZXh0ICpjb250
ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgYXR0cmliSW5kZXgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgcmVsYXRpdmVPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMYm9vbGVhbiBwdXJlSW50ZWdlcikKK3sKKyAgICBpZiAoY29udGV4dC0+Z2V0
Q2xpZW50VmVyc2lvbigpIDwgRVNfM18xKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBv
cnQgR0xFUzMuMS4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25z
dCBDYXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2FwcygpOworICAgIGlmIChyZWxhdGl2ZU9mZnNl
dCA+IHN0YXRpY19jYXN0PEdMdWludD4oY2Fwcy5tYXhWZXJ0ZXhBdHRyaWJSZWxhdGl2ZU9mZnNl
dCkpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUsCisgICAgICAgICAgICAgICAgICAicmVsYXRpdmVPZmZzZXQg
Y2Fubm90IGJlIGdyZWF0ZXIgdGhhbiBNQVhfVkVSVEVYX0FUVFJJQl9SRUxBVElWRV9PRkZTRVQu
IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gW09wZW5HTCBFUyAz
LjFdIFNlY3Rpb24gMTAuMy4xIHBhZ2UgMjQzOgorICAgIC8vIEFuIElOVkFMSURfT1BFUkFUSU9O
IGVycm9yIGlzIGdlbmVyYXRlZCBpZiB0aGUgZGVmYXVsdCB2ZXJ0ZXggYXJyYXkgb2JqZWN0IGlz
IGJvdW5kLgorICAgIGlmIChjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXJyYXlJZCgp
ID09IDApCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTiwgIkRlZmF1bHQgdmVydGV4IGFycmF5IG9iamVjdCBpcyBib3VuZC4iKSk7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gVmFsaWRhdGVWZXJ0
ZXhGb3JtYXRCYXNlKGNvbnRleHQsIGF0dHJpYkluZGV4LCBzaXplLCB0eXBlLCBwdXJlSW50ZWdl
cik7Cit9CisKK2Jvb2wgVmFsaWRhdGVWZXJ0ZXhBdHRyaWJCaW5kaW5nKFZhbGlkYXRpb25Db250
ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGF0
dHJpYkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJpbmRp
bmdJbmRleCkKK3sKKyAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50VmVyc2lvbigpIDwgRVNfM18x
KQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJDb250ZXh0IGRvZXMgbm90IHN1cHBvcnQgR0xFUzMuMS4iKSk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyBbT3BlbkdMIEVTIDMuMV0gU2VjdGlvbiAx
MC4zLjEgcGFnZSAyNDM6CisgICAgLy8gQW4gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3IgaXMgZ2Vu
ZXJhdGVkIGlmIHRoZSBkZWZhdWx0IHZlcnRleCBhcnJheSBvYmplY3QgaXMgYm91bmQuCisgICAg
aWYgKGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRWZXJ0ZXhBcnJheUlkKCkgPT0gMCkKKyAgICB7
CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiRGVmYXVsdCB2ZXJ0ZXggYXJyYXkgb2JqZWN0IGlzIGJvdW5kLiIpKTsKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGNvbnN0IENhcHMgJmNhcHMgPSBjb250ZXh0LT5nZXRD
YXBzKCk7CisgICAgaWYgKGF0dHJpYkluZGV4ID49IGNhcHMubWF4VmVydGV4QXR0cmlidXRlcykK
KyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAorICAgICAgICAgICAgRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSwgImF0dHJpYmluZGV4IG11c3QgYmUgc21hbGxlciB0aGFuIE1BWF9W
RVJURVhfQVRUUklCUy4iKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBp
ZiAoYmluZGluZ0luZGV4ID49IGNhcHMubWF4VmVydGV4QXR0cmliQmluZGluZ3MpCisgICAgewor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmluZGluZ2luZGV4IG11c3QgYmUgc21h
bGxlciB0aGFuIE1BWF9WRVJURVhfQVRUUklCX0JJTkRJTkdTIikpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFsaWRhdGVHZXRQ
cm9ncmFtUmVzb3VyY2VOYW1lKENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTHVpbnQgcHJvZ3JhbSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMZW51bSBwcm9ncmFtSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xjaGFyICpuYW1lKQoreworICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRWZXJzaW9u
KCkgPCBFU18zXzEpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgIkNvbnRleHQgZG9lcyBub3Qgc3VwcG9ydCBHTEVTMy4xLiIp
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFByb2dyYW0gKnByb2dyYW1P
YmplY3QgPSBHZXRWYWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7CisgICAgaWYgKHByb2dy
YW1PYmplY3QgPT0gbnVsbHB0cikKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICBpZiAoIVZhbGlkYXRlTmFtZWRQcm9ncmFtSW50ZXJmYWNlKHByb2dyYW1JbnRlcmZh
Y2UpKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoCisgICAgICAgICAgICBF
cnJvcihHTF9JTlZBTElEX0VOVU0sICJJbnZhbGlkIHByb2dyYW0gaW50ZXJmYWNlOiAweCVYIiwg
cHJvZ3JhbUludGVyZmFjZSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
aWYgKCFWYWxpZGF0ZVByb2dyYW1SZXNvdXJjZUluZGV4KHByb2dyYW1PYmplY3QsIHByb2dyYW1J
bnRlcmZhY2UsIGluZGV4KSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfVkFMVUUsICJJbnZhbGlkIGluZGV4OiAlZCIsIGluZGV4KSk7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoYnVmU2l6ZSA8IDApCisgICAgewor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiSW52
YWxpZCBidWZTaXplOiAlZCIsIGJ1ZlNpemUpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhbGlkYXRlRGlzcGF0Y2hDb21wdXRl
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBu
dW1Hcm91cHNYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgbnVtR3JvdXBz
WSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IG51bUdyb3Vwc1opCit7Cisg
ICAgaWYgKGNvbnRleHQtPmdldENsaWVudFZlcnNpb24oKSA8IEVTXzNfMSkKKyAgICB7CisgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiQ29u
dGV4dCBkb2VzIG5vdCBzdXBwb3J0IEdMRVMzLjEuIikpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgY29uc3QgU3RhdGUgJnN0YXRlID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgp
OworICAgIFByb2dyYW0gKnByb2dyYW0gICA9IHN0YXRlLmdldFByb2dyYW0oKTsKKworICAgIGlm
IChwcm9ncmFtID09IG51bGxwdHIpCisgICAgeworICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiTm8gYWN0aXZlIHBy
b2dyYW0gb2JqZWN0IGZvciB0aGUgY29tcHV0ZSBzaGFkZXIgc3RhZ2UuIikpOworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHByb2dyYW0tPmlzTGlua2VkKCkgPT0gZmFs
c2UgfHwgcHJvZ3JhbS0+Z2V0QXR0YWNoZWRDb21wdXRlU2hhZGVyKCkgPT0gbnVsbHB0cikKKyAg
ICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKAorICAgICAgICAgICAgR0xf
SU5WQUxJRF9PUEVSQVRJT04sCisgICAgICAgICAgICAiUHJvZ3JhbSBoYXMgbm90IGJlZW4gc3Vj
Y2Vzc2Z1bGx5IGxpbmtlZCwgb3IgcHJvZ3JhbSBjb250YWlucyBubyBjb21wdXRlIHNoYWRlcnMu
IikpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgQ2FwcyAmY2Fw
cyA9IGNvbnRleHQtPmdldENhcHMoKTsKKyAgICBpZiAobnVtR3JvdXBzWCA+IGNhcHMubWF4Q29t
cHV0ZVdvcmtHcm91cENvdW50WzBdKQorICAgIHsKKyAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoCisgICAgICAgICAgICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLAorICAgICAgICAgICAgICAg
ICAgIm51bV9ncm91cHNfeCBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIE1BWF9DT01QVVRFX1dPUktf
R1JPVVBfQ09VTlRbMF0oJXUpLiIsCisgICAgICAgICAgICAgICAgICBjYXBzLm1heENvbXB1dGVX
b3JrR3JvdXBDb3VudFswXSkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGlm
IChudW1Hcm91cHNZID4gY2Fwcy5tYXhDb21wdXRlV29ya0dyb3VwQ291bnRbMV0pCisgICAgewor
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKKyAgICAgICAgICAgIEVycm9yKEdMX0lOVkFM
SURfVkFMVUUsCisgICAgICAgICAgICAgICAgICAibnVtX2dyb3Vwc195IGNhbm5vdCBiZSBncmVh
dGVyIHRoYW4gTUFYX0NPTVBVVEVfV09SS19HUk9VUF9DT1VOVFsxXSgldSkuIiwKKyAgICAgICAg
ICAgICAgICAgIGNhcHMubWF4Q29tcHV0ZVdvcmtHcm91cENvdW50WzFdKSk7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKG51bUdyb3Vwc1ogPiBjYXBzLm1heENvbXB1dGVX
b3JrR3JvdXBDb3VudFsyXSkKKyAgICB7CisgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKAor
ICAgICAgICAgICAgRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSwKKyAgICAgICAgICAgICAgICAgICJu
dW1fZ3JvdXBzX3ogY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiBNQVhfQ09NUFVURV9XT1JLX0dST1VQ
X0NPVU5UWzJdKCV1KS4iLAorICAgICAgICAgICAgICAgICAgY2Fwcy5tYXhDb21wdXRlV29ya0dy
b3VwQ291bnRbMl0pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVy
biB0cnVlOworfQorCiB9ICAvLyBuYW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVMzMS5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMxLmgKaW5kZXggNjNjYTBkYjVi
ZGYuLmE4YWU0OWVhMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliQU5HTEUvdmFsaWRhdGlvbkVTMzEuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTMzEuaApAQCAtMTQsNiArMTQsNyBAQAogbmFtZXNwYWNl
IGdsCiB7CiBjbGFzcyBDb250ZXh0OworY2xhc3MgVmFsaWRhdGlvbkNvbnRleHQ7CiAKIGJvb2wg
VmFsaWRhdGVHZXRCb29sZWFuaV92KENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdM
dWludCBpbmRleCwgR0xib29sZWFuICpkYXRhKTsKIGJvb2wgVmFsaWRhdGVHZXRCb29sZWFuaV92
Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKQEAgLTIzLDYgKzI0LDcyIEBAIGJvb2wgVmFs
aWRhdGVHZXRCb29sZWFuaV92Um9idXN0QU5HTEUoQ29udGV4dCAqY29udGV4dCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3RoLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGJvb2xlYW4gKmRhdGEpOwogCitib29sIFZh
bGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdihDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGxldmVsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCAqcGFyYW1zKTsKK2Jvb2wgVmFsaWRhdGVHZXRUZXhMZXZlbFBhcmFt
ZXRlcml2KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0g
cG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW0p
OworCitib29sIFZhbGlkYXRlVGV4U3RvcmFnZTJETXVsdGlTYW1wbGUoQ29udGV4dCAqY29udGV4
dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGFyZ2V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgc2FtcGxlcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZvcm1hdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHdpZHRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgaGVpZ2h0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBmaXhlZFNhbXBsZUxvY2F0
aW9ucyk7Citib29sIFZhbGlkYXRlR2V0TXVsdGlzYW1wbGVmdihDb250ZXh0ICpjb250ZXh0LCBH
TGVudW0gcG5hbWUsIEdMdWludCBpbmRleCwgR0xmbG9hdCAqdmFsKTsKKworYm9vbCBWYWxpZGF0
ZURyYXdJbmRpcmVjdEJhc2UoQ29udGV4dCAqY29udGV4dCwgR0xlbnVtIG1vZGUsIGNvbnN0IEdM
dm9pZCAqaW5kaXJlY3QpOworYm9vbCBWYWxpZGF0ZURyYXdBcnJheXNJbmRpcmVjdChDb250ZXh0
ICpjb250ZXh0LCBHTGVudW0gbW9kZSwgY29uc3QgR0x2b2lkICppbmRpcmVjdCk7Citib29sIFZh
bGlkYXRlRHJhd0VsZW1lbnRzSW5kaXJlY3QoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gbW9kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBHTHZvaWQgKmluZGlyZWN0KTsKKworYm9vbCBWYWxpZGF0aW9uRnJhbWVidWZm
ZXJQYXJhbWV0ZXJpKENvbnRleHQgKmNvbnRleHQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgR0xpbnQgcGFyYW0pOworYm9vbCBWYWxpZGF0aW9uR2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJp
KENvbnRleHQgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xlbnVtIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgKnBhcmFtcyk7CisKK2Jvb2wgVmFsaWRhdGVHZXRQcm9ncmFtUmVzb3VyY2VJbmRleChD
b250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBwcm9ncmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSBwcm9ncmFtSW50ZXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEdMY2hhciAqbmFtZSk7Citib29sIFZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlTmFt
ZShDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0x1aW50IHByb2dyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVu
dW0gcHJvZ3JhbUludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMdWludCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6
ZWkgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkg
Kmxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2hhciAqbmFt
ZSk7CisKK2Jvb2wgVmFsaWRhdGVCaW5kVmVydGV4QnVmZmVyKFZhbGlkYXRpb25Db250ZXh0ICpj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGJpbmRpbmdJbmRl
eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBidWZmZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGludHB0ciBvZmZzZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZSk7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmli
Rm9ybWF0KFZhbGlkYXRpb25Db250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgYXR0cmliSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMaW50IHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51
bSB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgcmVsYXRpdmVP
ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBwdXJlSW50
ZWdlcik7Citib29sIFZhbGlkYXRlVmVydGV4QXR0cmliQmluZGluZyhWYWxpZGF0aW9uQ29udGV4
dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBhdHRy
aWJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBiaW5kaW5n
SW5kZXgpOworYm9vbCBWYWxpZGF0ZVZlcnRleEJpbmRpbmdEaXZpc29yKFZhbGlkYXRpb25Db250
ZXh0ICpjb250ZXh0LCBHTHVpbnQgYmluZGluZ0luZGV4LCBHTHVpbnQgZGl2aXNvcik7CisKK2Jv
b2wgVmFsaWRhdGVEaXNwYXRjaENvbXB1dGUoQ29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0x1aW50IG51bUdyb3Vwc1gsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMdWludCBudW1Hcm91cHNZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTHVpbnQgbnVtR3JvdXBzWik7CisKIH0gIC8vIG5hbWVzcGFjZSBnbAogCiAjZW5kaWYgIC8v
IExJQkFOR0xFX1ZBTElEQVRJT05fRVMzMV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkFOR0xFL3ZhbGlkYXRpb25FU191bml0dGVzdC5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTX3VuaXR0ZXN0LmNwcApp
bmRleCBjMDE4OTI0ZTEzOS4uYzUxYjhiM2Y2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVNfdW5pdHRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS92YWxpZGF0aW9uRVNfdW5pdHRlc3Qu
Y3BwCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIAogI2luY2x1
ZGUgImxpYkFOR0xFL0NvbnRleHRTdGF0ZS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1ZhcnlpbmdQ
YWNraW5nLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvRnJhbWVidWZmZXJJbXBsX21v
Y2suaCIKICNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbF9tb2NrLmgiCiAj
aW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvVGV4dHVyZUltcGxfbW9jay5oIgpAQCAtMjksNDQg
KzMwLDM1IEBAIG5hbWVzcGFjZQogY2xhc3MgTW9ja1ZhbGlkYXRpb25Db250ZXh0IDogcHVibGlj
IFZhbGlkYXRpb25Db250ZXh0CiB7CiAgIHB1YmxpYzoKLSAgICBNb2NrVmFsaWRhdGlvbkNvbnRl
eHQoR0xpbnQgbWFqb3JDbGllbnRWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBtaW5vckNsaWVudFZlcnNpb24sCisgICAgTW9ja1ZhbGlkYXRpb25Db250ZXh0KGNvbnN0
IFZhbGlkYXRpb25Db250ZXh0ICpzaGFyZUNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRleHR1cmVNYW5hZ2VyICpzaGFyZVRleHR1cmVzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBWZXJzaW9uICZ2ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICBT
dGF0ZSAqc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENhcHMgJmNhcHMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRleHR1cmVDYXBzTWFwICZ0ZXh0dXJl
Q2FwcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRXh0ZW5zaW9ucyAmZXh0ZW5z
aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUmVzb3VyY2VNYW5hZ2VyICpy
ZXNvdXJjZU1hbmFnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IExpbWl0YXRp
b25zICZsaW1pdGF0aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBza2lwVmFs
aWRhdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc2tpcFZhbGlkYXRpb24p
CisgICAgICAgIDogVmFsaWRhdGlvbkNvbnRleHQoc2hhcmVDb250ZXh0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNoYXJlVGV4dHVyZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
eHR1cmVDYXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGltaXRhdGlvbnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2tpcFZhbGlkYXRpb24pCisgICAgeworICAgIH0KIAogICAgIE1PQ0tfTUVUSE9E
MShoYW5kbGVFcnJvciwgdm9pZChjb25zdCBFcnJvciAmKSk7CiB9OwogCi1Nb2NrVmFsaWRhdGlv
bkNvbnRleHQ6Ok1vY2tWYWxpZGF0aW9uQ29udGV4dChHTGludCBtYWpvckNsaWVudFZlcnNpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBtaW5v
ckNsaWVudFZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTdGF0ZSAqc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBDYXBzICZjYXBzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgVGV4dHVyZUNhcHNNYXAgJnRleHR1cmVDYXBzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRXh0ZW5zaW9ucyAm
ZXh0ZW5zaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFJlc291cmNlTWFuYWdlciAqcmVzb3VyY2VNYW5hZ2VyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGltaXRhdGlvbnMgJmxpbWl0YXRp
b25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBz
a2lwVmFsaWRhdGlvbikKLSAgICA6IFZhbGlkYXRpb25Db250ZXh0KG1ham9yQ2xpZW50VmVyc2lv
biwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1pbm9yQ2xpZW50VmVyc2lvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgY2FwcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVDYXBzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgZXh0ZW5zaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlTWFuYWdlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0YXRpb25zLAotICAgICAgICAgICAgICAgICAg
ICAgICAgc2tpcFZhbGlkYXRpb24pCi17Ci19Ci0KIC8vIFRlc3QgdGhhdCBBTkdMRSBnZW5lcmF0
ZXMgYW4gSU5WQUxJRF9PUEVSQVRJT04gd2hlbiB2YWxpZGF0aW5nIGluZGV4IGRhdGEgdGhhdCB1
c2VzIGEgdmFsdWUKIC8vIGxhcmdlciB0aGFuIE1BWF9FTEVNRU5UX0lOREVYLiBOb3Qgc3BlY2lm
aWVkIGluIHRoZSBHTEVTIDMgc3BlYywgaXQncyB1bmRlZmluZWQgYmVoYXZpb3VyLAogLy8gYnV0
IHdlIHdhbnQgYSB0ZXN0IHRvIGVuc3VyZSB3ZSBtYWludGFpbiB0aGlzIGJlaGF2aW91ci4KLVRF
U1QoVmFsaWRhdGlvbkVTVGVzdCwgRHJhd0VsZW1lbnRzV2l0aE1heEluZGV4R2l2ZXNFcnJvcikK
Ky8vIFRPRE8oam1hZGlsbCk6IFJlLWVuYWJsZSB3aGVuIGZyYW1lYnVmZmVyIHN5bmMgc3RhdGUg
ZG9lc24ndCBoYXBwZW4gaW4gdmFsaWRhdGlvbi4KK1RFU1QoVmFsaWRhdGlvbkVTVGVzdCwgRElT
QUJMRURfRHJhd0VsZW1lbnRzV2l0aE1heEluZGV4R2l2ZXNFcnJvcikKIHsKICAgICBhdXRvIGZy
YW1lYnVmZmVySW1wbCA9IE1ha2VGcmFtZWJ1ZmZlck1vY2soKTsKICAgICBhdXRvIHByb2dyYW1J
bXBsICAgICA9IE1ha2VQcm9ncmFtTW9jaygpOwpAQCAtODcsMjkgKzc5LDMwIEBAIFRFU1QoVmFs
aWRhdGlvbkVTVGVzdCwgRHJhd0VsZW1lbnRzV2l0aE1heEluZGV4R2l2ZXNFcnJvcikKICAgICBj
YXBzLm1heEVsZW1lbnRJbmRleCAgICAgPSAxMDA7CiAgICAgY2Fwcy5tYXhEcmF3QnVmZmVycyAg
ICAgID0gMTsKICAgICBjYXBzLm1heENvbG9yQXR0YWNobWVudHMgPSAxOwotICAgIHN0YXRlLmlu
aXRpYWxpemUoY2FwcywgZXh0ZW5zaW9ucywgMywgZmFsc2UsIHRydWUpOworICAgIHN0YXRlLmlu
aXRpYWxpemUoY2FwcywgZXh0ZW5zaW9ucywgVmVyc2lvbigzLCAwKSwgZmFsc2UsIHRydWUsIHRy
dWUsIGZhbHNlKTsKIAogICAgIE5pY2VNb2NrPE1vY2tUZXh0dXJlSW1wbD4gKnRleHR1cmVJbXBs
ID0gbmV3IE5pY2VNb2NrPE1vY2tUZXh0dXJlSW1wbD4oKTsKICAgICBFWFBFQ1RfQ0FMTChtb2Nr
RmFjdG9yeSwgY3JlYXRlVGV4dHVyZShfKSkuV2lsbE9uY2UoUmV0dXJuKHRleHR1cmVJbXBsKSk7
Ci0gICAgRVhQRUNUX0NBTEwoKnRleHR1cmVJbXBsLCBzZXRTdG9yYWdlKF8sIF8sIF8sIF8pKS5X
aWxsT25jZShSZXR1cm4oRXJyb3IoR0xfTk9fRVJST1IpKSk7CisgICAgRVhQRUNUX0NBTEwoKnRl
eHR1cmVJbXBsLCBzZXRTdG9yYWdlKF8sIF8sIF8sIF8sIF8pKS5XaWxsT25jZShSZXR1cm4oTm9F
cnJvcigpKSk7CiAgICAgRVhQRUNUX0NBTEwoKnRleHR1cmVJbXBsLCBkZXN0cnVjdG9yKCkpLlRp
bWVzKDEpLlJldGlyZXNPblNhdHVyYXRpb24oKTsKIAogICAgIFRleHR1cmUgKnRleHR1cmUgPSBu
ZXcgVGV4dHVyZSgmbW9ja0ZhY3RvcnksIDAsIEdMX1RFWFRVUkVfMkQpOwogICAgIHRleHR1cmUt
PmFkZFJlZigpOwotICAgIHRleHR1cmUtPnNldFN0b3JhZ2UoR0xfVEVYVFVSRV8yRCwgMSwgR0xf
UkdCQTgsIEV4dGVudHMoMSwgMSwgMCkpOworICAgIHRleHR1cmUtPnNldFN0b3JhZ2UobnVsbHB0
ciwgR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQTgsIEV4dGVudHMoMSwgMSwgMCkpOwogCi0gICAg
VmVydGV4QXJyYXkgKnZlcnRleEFycmF5ID0gbmV3IFZlcnRleEFycmF5KCZtb2NrRmFjdG9yeSwg
MCwgMSk7CisgICAgVmVydGV4QXJyYXkgKnZlcnRleEFycmF5ID0gbmV3IFZlcnRleEFycmF5KCZt
b2NrRmFjdG9yeSwgMCwgMSwgMSk7CiAgICAgRnJhbWVidWZmZXIgKmZyYW1lYnVmZmVyID0gbmV3
IEZyYW1lYnVmZmVyKGNhcHMsICZtb2NrRmFjdG9yeSwgMSk7Ci0gICAgZnJhbWVidWZmZXItPnNl
dEF0dGFjaG1lbnQoR0xfRlJBTUVCVUZGRVJfREVGQVVMVCwgR0xfQkFDSywgSW1hZ2VJbmRleDo6
TWFrZTJEKDApLCB0ZXh0dXJlKTsKKyAgICBmcmFtZWJ1ZmZlci0+c2V0QXR0YWNobWVudChudWxs
cHRyLCBHTF9GUkFNRUJVRkZFUl9ERUZBVUxULCBHTF9CQUNLLCBJbWFnZUluZGV4OjpNYWtlMkQo
MCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZSk7CiAKICAgICBQcm9n
cmFtICpwcm9ncmFtID0gbmV3IFByb2dyYW0oJm1vY2tGYWN0b3J5LCBudWxscHRyLCAxKTsKIAog
ICAgIHN0YXRlLnNldFZlcnRleEFycmF5QmluZGluZyh2ZXJ0ZXhBcnJheSk7CiAgICAgc3RhdGUu
c2V0RHJhd0ZyYW1lYnVmZmVyQmluZGluZyhmcmFtZWJ1ZmZlcik7Ci0gICAgc3RhdGUuc2V0UHJv
Z3JhbShwcm9ncmFtKTsKKyAgICBzdGF0ZS5zZXRQcm9ncmFtKG51bGxwdHIsIHByb2dyYW0pOwog
Ci0gICAgTmljZU1vY2s8TW9ja1ZhbGlkYXRpb25Db250ZXh0PiB0ZXN0Q29udGV4dCgzLCAwLCAm
c3RhdGUsIGNhcHMsIHRleHR1cmVDYXBzLCBleHRlbnNpb25zLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgbGltaXRhdGlvbnMsIGZhbHNl
KTsKKyAgICBOaWNlTW9jazxNb2NrVmFsaWRhdGlvbkNvbnRleHQ+IHRlc3RDb250ZXh0KG51bGxw
dHIsIG51bGxwdHIsIFZlcnNpb24oMywgMCksICZzdGF0ZSwgY2FwcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHR1cmVDYXBzLCBleHRlbnNpb25z
LCBsaW1pdGF0aW9ucywgZmFsc2UpOwogCiAgICAgLy8gU2V0IHRoZSBleHBlY3RhdGlvbiBmb3Ig
dGhlIHZhbGlkYXRpb24gZXJyb3IgaGVyZS4KICAgICBFcnJvciBleHBlY3RlZEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCBnX0V4Y2VlZHNNYXhFbGVtZW50RXJyb3JNZXNzYWdlKTsKQEAgLTEy
OCw3ICsxMjEsNyBAQCBURVNUKFZhbGlkYXRpb25FU1Rlc3QsIERyYXdFbGVtZW50c1dpdGhNYXhJ
bmRleEdpdmVzRXJyb3IpCiAKICAgICBzdGF0ZS5zZXRWZXJ0ZXhBcnJheUJpbmRpbmcobnVsbHB0
cik7CiAgICAgc3RhdGUuc2V0RHJhd0ZyYW1lYnVmZmVyQmluZGluZyhudWxscHRyKTsKLSAgICBz
dGF0ZS5zZXRQcm9ncmFtKG51bGxwdHIpOworICAgIHN0YXRlLnNldFByb2dyYW0obnVsbHB0ciwg
bnVsbHB0cik7CiAKICAgICBTYWZlRGVsZXRlKHZlcnRleEFycmF5KTsKICAgICBTYWZlRGVsZXRl
KGZyYW1lYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJFR0wuZ3lwaSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wuZ3lwaQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODEzYjAwNmM1OTguLjAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wuZ3lwaQorKysgL2Rldi9udWxsCkBA
IC0xLDQwICswLDAgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSMgZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KLQotewotICAgICMgRXZlcnl0aGluZyBiZWxvdyB0aGlzIGlzIGR1
cGxpY2F0ZWQgaW4gdGhlIEdOIGJ1aWxkLiBJZiB5b3UgY2hhbmdlCi0gICAgIyBhbnl0aGluZyBh
bHNvIGNoYW5nZSBhbmdsZS9CVUlMRC5nbgotICAgICd0YXJnZXRzJzoKLSAgICBbCi0gICAgICAg
IHsKLSAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdsaWJFR0wnLAotICAgICAgICAgICAgJ3R5
cGUnOiAnPChhbmdsZV9nbF9saWJyYXJ5X3R5cGUpJywKLSAgICAgICAgICAgICdkZXBlbmRlbmNp
ZXMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICdsaWJBTkdMRScsCi0gICAgICAg
ICAgICAgICAgJ2xpYkdMRVN2MicsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2luY2x1
ZGVzJzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAnLi4vYnVpbGQvY29tbW9uX2Rl
ZmluZXMuZ3lwaScsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6
Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgJy4nLAotICAgICAgICAgICAgICAgICcu
Li9pbmNsdWRlJywKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnc291cmNlcyc6Ci0gICAg
ICAgICAgICBbCi0gICAgICAgICAgICAgICAgJzxAKGxpYmVnbF9zb3VyY2VzKScsCi0gICAgICAg
ICAgICBdLAotICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgotICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAgIFsnYW5nbGVfYnVpbGRfd2lucnQ9PTEnLAotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgJ21zdnNfcmVxdWlyZXNfaW1wb3J0bGlicmFyeScgOiAndHJ1ZScs
Ci0gICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAotICAgIF0s
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVH
TC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5jcHAKaW5k
ZXggNWM0MDExYzUyOTUuLjMwY2UwODE1MjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkVHTC9saWJFR0wuY3BwCkBAIC0zNjcsNCArMzY3LDEyIEBAIEVHTEJvb2xlYW4g
RUdMQVBJRU5UUlkgZWdsR2V0U3luY1ZhbHVlc0NIUk9NSVVNKEVHTERpc3BsYXkgZHB5LAogewog
ICAgIHJldHVybiBlZ2w6OkdldFN5bmNWYWx1ZXNDSFJPTUlVTShkcHksIHN1cmZhY2UsIHVzdCwg
bXNjLCBzYmMpOwogfQorCitFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFN3YXBCdWZmZXJzV2l0
aERhbWFnZUVYVChFR0xEaXNwbGF5IGRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCAqcmVjdHMsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgbl9y
ZWN0cykKK3sKKyAgICByZXR1cm4gZWdsOjpTd2FwQnVmZmVyc1dpdGhEYW1hZ2VFWFQoZHB5LCBz
dXJmYWNlLCByZWN0cywgbl9yZWN0cyk7Cit9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5kZWYgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliRUdML2xpYkVHTC5kZWYKaW5kZXggY2FkNzhkN2Q0OGQuLjFmZTMzNzEzMzM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC5kZWYK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wuZGVmCkBAIC01
OCw2ICs1OCw3IEBAIEVYUE9SVFMKICAgICBlZ2xDcmVhdGVTdHJlYW1Qcm9kdWNlckQzRFRleHR1
cmVOVjEyQU5HTEUgIEA2NAogICAgIGVnbFN0cmVhbVBvc3REM0RUZXh0dXJlTlYxMkFOR0xFICAg
ICAgICAgICAgQDY1CiAgICAgZWdsR2V0U3luY1ZhbHVlc0NIUk9NSVVNICAgICAgICAgICAgICAg
ICAgICBANjYKKyAgICBlZ2xTd2FwQnVmZmVyc1dpdGhEYW1hZ2VFWFQgICAgICAgICAgICAgICAg
IEA2NwogCiAgICAgOyAxLjUgZW50cnkgcG9pbnRzCiAgICAgZWdsQ3JlYXRlU3luYyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBAMzgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIuZ3lwaSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIuZ3lwaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE0MjA4MzU2MGQu
LjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIu
Z3lwaQorKysgL2Rldi9udWxsCkBAIC0xLDEwNTMgKzAsMCBAQAotIyBDb3B5cmlnaHQgKGMpIDIw
MTMgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotCi17Ci0gICAgJ3Zhcmlh
Ymxlcyc6Ci0gICAgewotICAgICAgICAjIFRoZXNlIGZpbGUgbGlzdHMgYXJlIHNoYXJlZCB3aXRo
IHRoZSBHTiBidWlsZC4KLSAgICAgICAgJ2xpYmFuZ2xlX2NvbW1vbl9zb3VyY2VzJzoKLSAgICAg
ICAgWwotICAgICAgICAgICAgJ2NvbW1vbi9CaXRTZXRJdGVyYXRvci5oJywKLSAgICAgICAgICAg
ICdjb21tb24vQ29sb3IuaCcsCi0gICAgICAgICAgICAnY29tbW9uL0NvbG9yLmlubCcsCi0gICAg
ICAgICAgICAnY29tbW9uL0Zsb2F0MTZUb0Zsb2F0MzIuY3BwJywKLSAgICAgICAgICAgICdjb21t
b24vTWVtb3J5QnVmZmVyLmNwcCcsCi0gICAgICAgICAgICAnY29tbW9uL01lbW9yeUJ1ZmZlci5o
JywKLSAgICAgICAgICAgICdjb21tb24vT3B0aW9uYWwuaCcsCi0gICAgICAgICAgICAnY29tbW9u
L2FuZ2xldXRpbHMuY3BwJywKLSAgICAgICAgICAgICdjb21tb24vYW5nbGV1dGlscy5oJywKLSAg
ICAgICAgICAgICdjb21tb24vZGVidWcuY3BwJywKLSAgICAgICAgICAgICdjb21tb24vZGVidWcu
aCcsCi0gICAgICAgICAgICAnY29tbW9uL21hdGh1dGlsLmNwcCcsCi0gICAgICAgICAgICAnY29t
bW9uL21hdGh1dGlsLmgnLAotICAgICAgICAgICAgJ2NvbW1vbi9tYXRyaXhfdXRpbHMuaCcsCi0g
ICAgICAgICAgICAnY29tbW9uL3BsYXRmb3JtLmgnLAotICAgICAgICAgICAgJ2NvbW1vbi9zdHJp
bmdfdXRpbHMuY3BwJywKLSAgICAgICAgICAgICdjb21tb24vc3RyaW5nX3V0aWxzLmgnLAotICAg
ICAgICAgICAgJ2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9iYXNlL2xvZ2dpbmcuaCcsCi0g
ICAgICAgICAgICAnY29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzL2Jhc2UvbnVtZXJpY3Mvc2Fm
ZV9jb252ZXJzaW9ucy5oJywKLSAgICAgICAgICAgICdjb21tb24vdGhpcmRfcGFydHkvbnVtZXJp
Y3MvYmFzZS9udW1lcmljcy9zYWZlX2NvbnZlcnNpb25zX2ltcGwuaCcsCi0gICAgICAgICAgICAn
Y29tbW9uL3RoaXJkX3BhcnR5L251bWVyaWNzL2Jhc2UvbnVtZXJpY3Mvc2FmZV9tYXRoLmgnLAot
ICAgICAgICAgICAgJ2NvbW1vbi90aGlyZF9wYXJ0eS9udW1lcmljcy9iYXNlL251bWVyaWNzL3Nh
ZmVfbWF0aF9pbXBsLmgnLAotICAgICAgICAgICAgJ2NvbW1vbi90bHMuY3BwJywKLSAgICAgICAg
ICAgICdjb21tb24vdGxzLmgnLAotICAgICAgICAgICAgJ2NvbW1vbi91dGlsaXRpZXMuY3BwJywK
LSAgICAgICAgICAgICdjb21tb24vdXRpbGl0aWVzLmgnLAotICAgICAgICAgICAgJ2NvbW1vbi92
ZXJzaW9uLmgnLAotICAgICAgICBdLAotICAgICAgICAnbGliYW5nbGVfaW1hZ2VfdXRpbF9zb3Vy
Y2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJ2ltYWdlX3V0aWwvY29weWltYWdlLmNwcCcs
Ci0gICAgICAgICAgICAnaW1hZ2VfdXRpbC9jb3B5aW1hZ2UuaCcsCi0gICAgICAgICAgICAnaW1h
Z2VfdXRpbC9jb3B5aW1hZ2UuaW5sJywKLSAgICAgICAgICAgICdpbWFnZV91dGlsL2dlbmVyYXRl
bWlwLmgnLAotICAgICAgICAgICAgJ2ltYWdlX3V0aWwvZ2VuZXJhdGVtaXAuaW5sJywKLSAgICAg
ICAgICAgICdpbWFnZV91dGlsL2ltYWdlZm9ybWF0cy5jcHAnLAotICAgICAgICAgICAgJ2ltYWdl
X3V0aWwvaW1hZ2Vmb3JtYXRzLmgnLAotICAgICAgICAgICAgJ2ltYWdlX3V0aWwvbG9hZGltYWdl
LmNwcCcsCi0gICAgICAgICAgICAnaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaCcsCi0gICAgICAgICAg
ICAnaW1hZ2VfdXRpbC9sb2FkaW1hZ2UuaW5sJywKLSAgICAgICAgICAgICdpbWFnZV91dGlsL2xv
YWRpbWFnZV9ldGMuY3BwJywKLSAgICAgICAgXSwKLSAgICAgICAgJ2xpYmFuZ2xlX2luY2x1ZGVz
JzoKLSAgICAgICAgWwotICAgICAgICAgICAgJy4uL2luY2x1ZGUvYW5nbGVfZ2wuaCcsCi0gICAg
ICAgICAgICAnLi4vaW5jbHVkZS9leHBvcnQuaCcsCi0gICAgICAgICAgICAnLi4vaW5jbHVkZS9F
R0wvZWdsLmgnLAotICAgICAgICAgICAgJy4uL2luY2x1ZGUvRUdML2VnbGV4dC5oJywKLSAgICAg
ICAgICAgICcuLi9pbmNsdWRlL0VHTC9lZ2xwbGF0Zm9ybS5oJywKLSAgICAgICAgICAgICcuLi9p
bmNsdWRlL0dMRVMyL2dsMi5oJywKLSAgICAgICAgICAgICcuLi9pbmNsdWRlL0dMRVMyL2dsMmV4
dC5oJywKLSAgICAgICAgICAgICcuLi9pbmNsdWRlL0dMRVMyL2dsMnBsYXRmb3JtLmgnLAotICAg
ICAgICAgICAgJy4uL2luY2x1ZGUvR0xFUzMvZ2wzLmgnLAotICAgICAgICAgICAgJy4uL2luY2x1
ZGUvR0xFUzMvZ2wzcGxhdGZvcm0uaCcsCi0gICAgICAgICAgICAnLi4vaW5jbHVkZS9HTEVTMy9n
bDMxLmgnLAotICAgICAgICAgICAgJy4uL2luY2x1ZGUvR0xFUzMvZ2wzMi5oJywKLSAgICAgICAg
ICAgICcuLi9pbmNsdWRlL0dMU0xBTkcvU2hhZGVyTGFuZy5oJywKLSAgICAgICAgICAgICcuLi9p
bmNsdWRlL0dMU0xBTkcvU2hhZGVyVmFycy5oJywKLSAgICAgICAgICAgICcuLi9pbmNsdWRlL0tI
Ui9raHJwbGF0Zm9ybS5oJywKLSAgICAgICAgICAgICcuLi9pbmNsdWRlL3BsYXRmb3JtL1BsYXRm
b3JtLmgnLAotICAgICAgICBdLAotICAgICAgICAnbGliYW5nbGVfc291cmNlcyc6Ci0gICAgICAg
IFsKLSAgICAgICAgICAgICdjb21tb24vZXZlbnRfdHJhY2VyLmNwcCcsCi0gICAgICAgICAgICAn
Y29tbW9uL2V2ZW50X3RyYWNlci5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9BdHRyaWJ1dGVN
YXAuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9BdHRyaWJ1dGVNYXAuaCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvQmluYXJ5U3RyZWFtLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0J1
ZmZlci5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0J1ZmZlci5oJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9DYXBzLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvQ2Fwcy5oJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9Db21waWxlci5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L0NvbXBpbGVyLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0NvbmZpZy5jcHAnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL0NvbmZpZy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9Db25zdGFu
dHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvQ29udGV4dC5jcHAnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL0NvbnRleHQuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvQ29udGV4dFN0YXRl
LmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvQ29udGV4dFN0YXRlLmgnLAotICAgICAgICAg
ICAgJ2xpYkFOR0xFL0RlYnVnLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvRGVidWcuaCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvRGV2aWNlLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5H
TEUvRGV2aWNlLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0Rpc3BsYXkuY3BwJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9EaXNwbGF5LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0Vycm9y
LmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvRXJyb3IuaCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvRXJyb3IuaW5sJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9GZW5jZS5jcHAnLAotICAg
ICAgICAgICAgJ2xpYkFOR0xFL0ZlbmNlLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0ZyYW1l
YnVmZmVyLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvRnJhbWVidWZmZXIuaCcsCi0gICAg
ICAgICAgICAnbGliQU5HTEUvRnJhbWVidWZmZXJBdHRhY2htZW50LmNwcCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvRnJhbWVidWZmZXJBdHRhY2htZW50LmgnLAotICAgICAgICAgICAgJ2xpYkFO
R0xFL0hhbmRsZUFsbG9jYXRvci5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0hhbmRsZUFs
bG9jYXRvci5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9IYW5kbGVSYW5nZUFsbG9jYXRvci5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9IYW5kbGVSYW5nZUFsbG9jYXRvci5jcHAnLAotICAg
ICAgICAgICAgJ2xpYkFOR0xFL0ltYWdlLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL0ltYWdl
LmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvSW1hZ2VJbmRleC5oJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9JbWFnZUluZGV4LmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvSW5kZXhS
YW5nZUNhY2hlLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvSW5kZXhSYW5nZUNhY2hlLmgn
LAotICAgICAgICAgICAgJ2xpYkFOR0xFL1BhdGguaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUv
UGF0aC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL1BsYXRmb3JtLmNwcCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvUHJvZ3JhbS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL1Byb2dy
YW0uaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvUXVlcnkuY3BwJywKLSAgICAgICAgICAgICds
aWJBTkdMRS9RdWVyeS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9SZWZDb3VudE9iamVjdC5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9SZW5kZXJidWZmZXIuY3BwJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9SZW5kZXJidWZmZXIuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvUmVzb3Vy
Y2VNYW5hZ2VyLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyLmgn
LAotICAgICAgICAgICAgJ2xpYkFOR0xFL1NhbXBsZXIuY3BwJywKLSAgICAgICAgICAgICdsaWJB
TkdMRS9TYW1wbGVyLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL1NoYWRlci5jcHAnLAotICAg
ICAgICAgICAgJ2xpYkFOR0xFL1NoYWRlci5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9TdGF0
ZS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL1N0YXRlLmgnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL1N0cmVhbS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL1N0cmVhbS5oJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9TdXJmYWNlLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUv
U3VyZmFjZS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9UZXh0dXJlLmNwcCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvVGV4dHVyZS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9UcmFuc2Zv
cm1GZWVkYmFjay5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL1RyYW5zZm9ybUZlZWRiYWNr
LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL1VuaWZvcm0uY3BwJywKLSAgICAgICAgICAgICds
aWJBTkdMRS9Vbmlmb3JtLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL1ZlcnNpb24uaCcsCi0g
ICAgICAgICAgICAnbGliQU5HTEUvVmVyc2lvbi5pbmwnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L1ZlcnRleEFycmF5LmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvVmVydGV4QXJyYXkuaCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvVmVydGV4QXR0cmlidXRlLmNwcCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvVmVydGV4QXR0cmlidXRlLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL1Zl
cnRleEF0dHJpYnV0ZS5pbmwnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL2FuZ2xldHlwZXMuY3Bw
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9hbmdsZXR5cGVzLmgnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL2FuZ2xldHlwZXMuaW5sJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9mZWF0dXJlcy5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9mb3JtYXRfbWFwX2F1dG9nZW4uY3BwJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9mb3JtYXR1dGlscy5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L2Zvcm1hdHV0aWxzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL2hpc3RvZ3JhbV9tYWNyb3Mu
aCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5jcHAnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL3F1ZXJ5Y29udmVyc2lvbnMuaCcsCi0gICAgICAgICAgICAnbGliQU5H
TEUvcXVlcnl1dGlscy5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3F1ZXJ5dXRpbHMuaCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvQnVmZmVySW1wbC5oJywKLSAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9Db21waWxlckltcGwuaCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvQ29udGV4dEltcGwuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9Db250ZXh0SW1wbC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9E
ZXZpY2VJbXBsLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvRGV2aWNlSW1w
bC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9EaXNwbGF5SW1wbC5jcHAnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL0Rpc3BsYXlJbXBsLmgnLAotICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL0VHTEltcGxGYWN0b3J5LmgnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL0ZlbmNlTlZJbXBsLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL0ZlbmNlU3luY0ltcGwuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
Rm9ybWF0X0lEX2F1dG9nZW4uaW5sJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9G
b3JtYXRfYXV0b2dlbi5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1h
dC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL0Zvcm1hdC5oJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9GcmFtZWJ1ZmZlckF0dGFjaG1lbnRPYmplY3RJbXBs
LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL0ZyYW1lYnVmZmVySW1wbC5oJywK
LSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9HTEltcGxGYWN0b3J5LmgnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL0ltYWdlSW1wbC5oJywKLSAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9Qcm9ncmFtSW1wbC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9RdWVyeUltcGwuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvUmVuZGVy
YnVmZmVySW1wbC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9TYW1wbGVySW1w
bC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9TaGFkZXJJbXBsLmgnLAotICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL1N0cmVhbVByb2R1Y2VySW1wbC5oJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9TdXJmYWNlSW1wbC5jcHAnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL1N1cmZhY2VJbXBsLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL1RleHR1cmVJbXBsLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvVGV4dHVyZUltcGwuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvVHJhbnNm
b3JtRmVlZGJhY2tJbXBsLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL1ZlcnRl
eEFycmF5SW1wbC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9sb2FkX2Z1bmN0
aW9uc190YWJsZS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9sb2FkX2Z1bmN0
aW9uc190YWJsZV9hdXRvZ2VuLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
cmVuZGVyZXJfdXRpbHMuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9yZW5k
ZXJlcl91dGlscy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9zaWduYWxfdXRpbHMuY3BwJywK
LSAgICAgICAgICAgICdsaWJBTkdMRS9zaWduYWxfdXRpbHMuaCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvdmFsaWRhdGlvbkVHTC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3ZhbGlkYXRp
b25FR0wuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvdmFsaWRhdGlvbkVTLmNwcCcsCi0gICAg
ICAgICAgICAnbGliQU5HTEUvdmFsaWRhdGlvbkVTLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3ZhbGlkYXRpb25FUzIuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS92YWxpZGF0aW9uRVMy
LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3ZhbGlkYXRpb25FUzMuY3BwJywKLSAgICAgICAg
ICAgICdsaWJBTkdMRS92YWxpZGF0aW9uRVMzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3Zh
bGlkYXRpb25FUzMxLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvdmFsaWRhdGlvbkVTMzEu
aCcsCi0gICAgICAgICAgICAndGhpcmRfcGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5jcHAn
LAotICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuaCcsCi0g
ICAgICAgIF0sCi0gICAgICAgICdsaWJhbmdsZV9kM2Rfc2hhcmVkX3NvdXJjZXMnOgotICAgICAg
ICBbCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL0J1ZmZlckQzRC5jcHAnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9CdWZmZXJEM0QuaCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL0NvbXBpbGVyRDNELmNwcCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL0NvbXBpbGVyRDNELmgnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9EZXZpY2VEM0QuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci9kM2QvRGV2aWNlRDNELmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9EaXNwbGF5RDNELmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL0Rpc3BsYXlEM0QuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL0R5
bmFtaWNITFNMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL0R5bmFt
aWNITFNMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9FR0xJbWFnZUQz
RC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9FR0xJbWFnZUQzRC5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZm9ybWF0dXRpbHNEM0QuaCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNELmNwcCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL0ZyYW1lYnVmZmVyRDNELmgnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9ITFNMQ29tcGlsZXIuY3BwJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvSExTTENvbXBpbGVyLmgnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9JbWFnZUQzRC5jcHAnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9JbWFnZUQzRC5oJywKLSAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci9kM2QvSW5kZXhCdWZmZXIuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvSW5kZXhCdWZmZXIuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL0luZGV4RGF0YU1hbmFnZXIuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvSW5kZXhEYXRhTWFuYWdlci5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvTmF0aXZlV2luZG93RDNELmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL05hdGl2ZVdpbmRvd0QzRC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvUHJvZ3JhbUQzRC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9Qcm9ncmFtRDNELmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9S
ZW5kZXJidWZmZXJEM0QuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
UmVuZGVyYnVmZmVyRDNELmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9S
ZW5kZXJlckQzRC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5k
ZXJlckQzRC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvUmVuZGVyVGFy
Z2V0RDNELmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9SZW5kZXJUYXJn
ZXREM0QuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvU2FtcGxlckQz
RC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvU2hhZGVyRDNELmNwcCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL1NoYWRlckQzRC5oJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvU2hhZGVyRXhlY3V0YWJsZUQzRC5jcHAnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TaGFkZXJFeGVjdXRhYmxlRDNELmgn
LAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9TdXJmYWNlRDNELmNwcCcsCi0g
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL1N1cmZhY2VEM0QuaCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL1N3YXBDaGFpbkQzRC5oJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvVGV4dHVyZUQzRC5jcHAnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9UZXh0dXJlRDNELmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9UZXh0dXJlU3RvcmFnZS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvVmFyeWluZ1BhY2tpbmcuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvVmFyeWluZ1BhY2tpbmcuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL1ZlcnRleEJ1ZmZlci5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9WZXJ0ZXhCdWZmZXIuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL1ZlcnRleERhdGFNYW5hZ2VyLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL1ZlcnRleERhdGFNYW5hZ2VyLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9Xb3JrYXJvdW5kc0QzRC5oJywKLSAgICAgICAgXSwKLSAgICAgICAgJ2xpYmFuZ2xl
X2QzZDlfc291cmNlcyc6Ci0gICAgICAgIFsKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9CbGl0OS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L0JsaXQ5LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L0J1ZmZlcjkuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9C
dWZmZXI5LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0NvbnRl
eHQ5LmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvQ29udGV4
dDkuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRGVidWdBbm5v
dGF0b3I5LmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRGVi
dWdBbm5vdGF0b3I5LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L0ZlbmNlOS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0Zl
bmNlOS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9mb3JtYXR1
dGlsczkuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9mb3Jt
YXR1dGlsczkuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvRnJh
bWVidWZmZXI5LmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkv
RnJhbWVidWZmZXI5LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L0ltYWdlOS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L0lt
YWdlOS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9JbmRleEJ1
ZmZlcjkuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9JbmRl
eEJ1ZmZlcjkuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvTmF0
aXZlV2luZG93OS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L05hdGl2ZVdpbmRvdzkuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvUXVlcnk5LmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkv
UXVlcnk5LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRl
cmVyOS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1JlbmRl
cmVyOS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9yZW5kZXJl
cjlfdXRpbHMuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9y
ZW5kZXJlcjlfdXRpbHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDkvUmVuZGVyVGFyZ2V0OS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L1JlbmRlclRhcmdldDkuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvU2hhZGVyQ2FjaGUuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDkvU2hhZGVyRXhlY3V0YWJsZTkuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9TaGFkZXJFeGVjdXRhYmxlOS5oJywKLSAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL2NvbXBvbmVudG1hc2twcy5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBp
bGVkL2ZsaXB5dnMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkv
c2hhZGVycy9jb21waWxlZC9sdW1pbmFuY2Vwcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkOS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocHMuaCcsCi0gICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvc2hhZGVycy9jb21waWxlZC9zdGFu
ZGFyZHZzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5L1N0YXRl
TWFuYWdlcjkuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkOS9T
dGF0ZU1hbmFnZXI5LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L1N3YXBDaGFpbjkuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
OS9Td2FwQ2hhaW45LmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Q5
L1RleHR1cmVTdG9yYWdlOS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2Qz
ZC9kM2Q5L1RleHR1cmVTdG9yYWdlOS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkOS9WZXJ0ZXhBcnJheTkuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDkvVmVydGV4QnVmZmVyOS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2Q5L1ZlcnRleEJ1ZmZlcjkuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDkvdmVydGV4Y29udmVyc2lvbi5oJywKLSAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkOS9WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlLmNwcCcsCi0gICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDkvVmVydGV4RGVjbGFyYXRpb25DYWNo
ZS5oJywKLSAgICAgICAgXSwKLSAgICAgICAgJ2xpYmFuZ2xlX2QzZDExX3NvdXJjZXMnOgotICAg
ICAgICBbCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0JsaXQxMS5j
cHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9CbGl0MTEuaCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0J1ZmZlcjExLmNwcCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0J1ZmZlcjExLmgnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9DbGVhcjExLmNwcCcsCi0g
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0NsZWFyMTEuaCcsCi0gICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0NvbnRleHQxMS5jcHAnLAotICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9Db250ZXh0MTEuaCcsCi0gICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2NvcHl2ZXJ0ZXguaCcsCi0gICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2NvcHl2ZXJ0ZXguaW5sJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRGVidWdBbm5vdGF0b3IxMS5j
cHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9EZWJ1Z0Fubm90
YXRvcjExLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9keGdp
X2Zvcm1hdF9tYXBfYXV0b2dlbi5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9keGdpX3N1cHBvcnRfdGFibGUuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvZHhnaV9zdXBwb3J0X3RhYmxlLmgnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GZW5jZTExLmNwcCcsCi0gICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ZlbmNlMTEuaCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2Zvcm1hdHV0aWxzMTEuY3BwJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvZm9ybWF0dXRpbHMxMS5oJywKLSAgICAgICAg
ICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvRnJhbWVidWZmZXIxMS5jcHAnLAotICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9GcmFtZWJ1ZmZlcjExLmgnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbWFnZTExLmNwcCcsCi0g
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0ltYWdlMTEuaCcsCi0gICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL0luZGV4QnVmZmVyMTEuY3BwJywK
LSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW5kZXhCdWZmZXIxMS5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvSW5wdXRMYXlvdXRD
YWNoZS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9JbnB1
dExheW91dENhY2hlLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9OYXRpdmVXaW5kb3cxMS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2Qv
ZDNkMTEvUGl4ZWxUcmFuc2ZlcjExLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL1BpeGVsVHJhbnNmZXIxMS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9kM2QvZDNkMTEvUXVlcnkxMS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9RdWVyeTExLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL3JlbmRlcmVyMTFfdXRpbHMuY3BwJywKLSAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvcmVuZGVyZXIxMV91dGlscy5oJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvUmVuZGVyU3RhdGVDYWNoZS5jcHAnLAotICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJTdGF0ZUNhY2hlLmgn
LAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJUYXJnZXQx
MS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJU
YXJnZXQxMS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU2hh
ZGVyRXhlY3V0YWJsZTExLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL1NoYWRlckV4ZWN1dGFibGUxMS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9idWZmZXJ0b3RleHR1cmUxMV9ncy5oJywK
LSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxl
ZC9idWZmZXJ0b3RleHR1cmUxMV9wc180Zi5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9idWZmZXJ0b3RleHR1cmUxMV9wc180aS5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21w
aWxlZC9idWZmZXJ0b3RleHR1cmUxMV9wc180dWkuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvYnVmZmVydG90ZXh0dXJlMTFfdnMu
aCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29t
cGlsZWQvY2xlYXJmbG9hdDExcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJmbG9hdDExdnMuaCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJzaW50
MTFwcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVy
cy9jb21waWxlZC9jbGVhcnNpbnQxMXZzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL2NsZWFydWludDExcHMuaCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvY2xlYXJ1
aW50MTF2cy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hh
ZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaDJkMTF2cy5oJywKLSAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaDNkMTFncy5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21w
aWxlZC9wYXNzdGhyb3VnaDNkMTF2cy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaGRlcHRoMmQxMXBzLmgnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVk
L3Bhc3N0aHJvdWdobHVtMmQxMXBzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdobHVtM2QxMXBzLmgnLAotICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bh
c3N0aHJvdWdobHVtYWxwaGEyZDExcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hsdW1hbHBoYTNkMTFwcy5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21w
aWxlZC9wYXNzdGhyb3VnaHIyZDExcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyMmRpMTFwcy5oJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9w
YXNzdGhyb3VnaHIyZHVpMTFwcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHIzZDExcHMuaCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Ro
cm91Z2hyM2RpMTFwcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHIzZHVpMTFwcy5oJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3Vn
aHJnMmQxMXBzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9z
aGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmcyZGkxMXBzLmgnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmcy
ZHVpMTFwcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hh
ZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnM2QxMXBzLmgnLAotICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmczZGkx
MXBzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJz
L2NvbXBpbGVkL3Bhc3N0aHJvdWdocmczZHVpMTFwcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdM
RS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYjJkMTFw
cy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9j
b21waWxlZC9wYXNzdGhyb3VnaHJnYnByZW11bHRpcGx5MmQxMXBzLmgnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdo
cmdidW5tdWx0aXBseTJkMTFwcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYjJkaTExcHMuaCcsCi0gICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFz
c3Rocm91Z2hyZ2IyZHVpMTFwcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYjNkMTFwcy5oJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNz
dGhyb3VnaHJnYjNkaTExcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2IzZHVpMTFwcy5oJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNz
dGhyb3VnaHJnYmEyZDExcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3NoYWRlcnMvY29tcGlsZWQvcGFzc3Rocm91Z2hyZ2JhcHJlbXVsdGlwbHkyZDExcHMu
aCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29t
cGlsZWQvcGFzc3Rocm91Z2hyZ2JhdW5tdWx0aXBseTJkMTFwcy5oJywKLSAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJn
YmEyZGkxMXBzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9z
aGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdocmdiYTJkdWkxMXBzLmgnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdo
cmdiYTNkMTFwcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
c2hhZGVycy9jb21waWxlZC9wYXNzdGhyb3VnaHJnYmEzZGkxMXBzLmgnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3Bhc3N0aHJvdWdo
cmdiYTNkdWkxMXBzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS9zaGFkZXJzL2NvbXBpbGVkL3N3aXp6bGVmMmRhcnJheXBzLmgnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJzL2NvbXBpbGVkL3N3aXp6bGVmMmRwcy5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvc2hhZGVycy9jb21w
aWxlZC9zd2l6emxlZjNkcHMuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNk
L2QzZDExL3NoYWRlcnMvY29tcGlsZWQvc3dpenpsZWkyZGFycmF5cHMuaCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvc3dpenpsZWky
ZHBzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9zaGFkZXJz
L2NvbXBpbGVkL3N3aXp6bGVpM2Rwcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9kM2QvZDNkMTEvc2hhZGVycy9jb21waWxlZC9zd2l6emxldWkyZGFycmF5cHMuaCcsCi0gICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3NoYWRlcnMvY29tcGlsZWQvc3dp
enpsZXVpMmRwcy5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEv
c2hhZGVycy9jb21waWxlZC9zd2l6emxldWkzZHBzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5jcHAnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9TdGF0ZU1hbmFnZXIxMS5oJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3RyZWFtUHJvZHVjZXJOVjEyLmNwcCcsCi0g
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1N0cmVhbVByb2R1Y2VyTlYx
Mi5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENoYWlu
MTEuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvU3dhcENo
YWluMTEuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1RleHR1
cmVTdG9yYWdlMTEuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNk
MTEvVGV4dHVyZVN0b3JhZ2UxMS5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvVHJhbnNmb3JtRmVlZGJhY2sxMS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2QzZC9kM2QxMS9UcmFuc2Zvcm1GZWVkYmFjazExLmgnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9UcmltMTEuY3BwJywKLSAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVHJpbTExLmgnLAotICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZV9hdXRvZ2VuLmNwcCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3RleHR1cmVfZm9ybWF0
X3RhYmxlX3V0aWxzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2Qx
MS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2QzZC9kM2QxMS90ZXh0dXJlX2Zvcm1hdF90YWJsZS5oJywKLSAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvVmVydGV4QXJyYXkxMS5jcHAnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhBcnJheTExLmgnLAotICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhCdWZmZXIxMS5jcHAnLAotICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9WZXJ0ZXhCdWZmZXIxMS5oJywK
LSAgICAgICAgXSwKLSAgICAgICAgJ2xpYmFuZ2xlX2QzZDExX3dpbjMyX3NvdXJjZXMnOgotICAg
ICAgICBbCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbjMyL05h
dGl2ZVdpbmRvdzExV2luMzIuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9k
M2QvZDNkMTEvd2luMzIvTmF0aXZlV2luZG93MTFXaW4zMi5oJywKLSAgICAgICAgICAgICd0aGly
ZF9wYXJ0eS9zeXN0ZW1pbmZvL1N5c3RlbUluZm8uY3BwJywKLSAgICAgICAgICAgICd0aGlyZF9w
YXJ0eS9zeXN0ZW1pbmZvL1N5c3RlbUluZm8uaCcsCi0gICAgICAgIF0sCi0gICAgICAgICdsaWJh
bmdsZV9kM2QxMV93aW5ydF9zb3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9Db3JlV2luZG93TmF0aXZlV2luZG93LmNwcCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L0NvcmVXaW5k
b3dOYXRpdmVXaW5kb3cuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL3dpbnJ0L0luc3BlY3RhYmxlTmF0aXZlV2luZG93LmNwcCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L0luc3BlY3RhYmxlTmF0aXZlV2luZG93Lmgn
LAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS93aW5ydC9OYXRpdmVX
aW5kb3cxMVdpblJULmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2Qz
ZDExL3dpbnJ0L05hdGl2ZVdpbmRvdzExV2luUlQuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L1N3YXBDaGFpblBhbmVsTmF0aXZlV2luZG93LmNwcCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L1N3YXBDaGFp
blBhbmVsTmF0aXZlV2luZG93LmgnLAotICAgICAgICBdLAotICAgICAgICAnbGliYW5nbGVfZ2xf
c291cmNlcyc6Ci0gICAgICAgIFsKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9C
bGl0R0wuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9CbGl0R0wuaCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvQnVmZmVyR0wuY3BwJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9CdWZmZXJHTC5oJywKLSAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9nbC9Db21waWxlckdMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvZ2wvQ29tcGlsZXJHTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9nbC9Db250ZXh0R0wuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9n
bC9Db250ZXh0R0wuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGxh
eUdMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvRGlzcGxheUdMLmgn
LAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL0ZlbmNlTlZHTC5jcHAnLAotICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL0ZlbmNlTlZHTC5oJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9nbC9GZW5jZVN5bmNHTC5jcHAnLAotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2dsL0ZlbmNlU3luY0dMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2dsL0ZyYW1lYnVmZmVyR0wuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci9nbC9GcmFtZWJ1ZmZlckdMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2dsL0Z1bmN0aW9uc0dMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
Z2wvRnVuY3Rpb25zR0wuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvUGF0
aEdMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL1BhdGhHTC5jcHAnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL1Byb2dyYW1HTC5jcHAnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL1Byb2dyYW1HTC5oJywKLSAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9nbC9RdWVyeUdMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZ2wvUXVlcnlHTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9n
bC9SZW5kZXJidWZmZXJHTC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2ds
L1JlbmRlcmJ1ZmZlckdMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL1Jl
bmRlcmVyR0wuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9SZW5kZXJl
ckdMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL1NhbXBsZXJHTC5jcHAn
LAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL1NhbXBsZXJHTC5oJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9TaGFkZXJHTC5jcHAnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2dsL1NoYWRlckdMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2dsL1N0YXRlTWFuYWdlckdMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZ2wvU3RhdGVNYW5hZ2VyR0wuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvZ2wvU3VyZmFjZUdMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
Z2wvU3VyZmFjZUdMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL1RleHR1
cmVHTC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL1RleHR1cmVHTC5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9UcmFuc2Zvcm1GZWVkYmFja0dM
LmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvVHJhbnNmb3JtRmVlZGJh
Y2tHTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9WZXJ0ZXhBcnJheUdM
LmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvVmVydGV4QXJyYXlHTC5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9Xb3JrYXJvdW5kc0dMLmgnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Zvcm1hdHV0aWxzZ2wuY3BwJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9mb3JtYXR1dGlsc2dsLmgnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Z1bmN0aW9uc2dsX2VudW1zLmgnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2Z1bmN0aW9uc2dsX3R5cGVkZWZzLmgnLAotICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL3JlbmRlcmVyZ2xfdXRpbHMuY3BwJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9yZW5kZXJlcmdsX3V0aWxzLmgnLAotICAg
ICAgICBdLAotICAgICAgICAnbGliYW5nbGVfZ2xfd2dsX3NvdXJjZXMnOgotICAgICAgICBbCi0g
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL0Rpc3BsYXlXR0wuY3BwJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRGlzcGxheVdHTC5oJywKLSAgICAg
ICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRFhHSVN3YXBDaGFpbldpbmRvd1N1cmZh
Y2VXR0wuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvRFhHSVN3
YXBDaGFpbldpbmRvd1N1cmZhY2VXR0wuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvd2dsL0Z1bmN0aW9uc1dHTC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2dsL3dnbC9GdW5jdGlvbnNXR0wuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvZ2wvd2dsL1BidWZmZXJTdXJmYWNlV0dMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZ2wvd2dsL1BidWZmZXJTdXJmYWNlV0dMLmgnLAotICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL2dsL3dnbC9XaW5kb3dTdXJmYWNlV0dMLmNwcCcsCi0gICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL1dpbmRvd1N1cmZhY2VXR0wuaCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL2Z1bmN0aW9uc3dnbF90eXBlZGVmcy5oJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC93Z2wvd2dsX3V0aWxzLmNwcCcsCi0gICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvd2dsL3dnbF91dGlscy5oJywKLSAgICAgICAg
ICAgICd0aGlyZF9wYXJ0eS9raHJvbm9zL0dML3dnbGV4dC5oJywKLSAgICAgICAgXSwKLSAgICAg
ICAgJ2xpYmFuZ2xlX2dsX2dseF9zb3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJ2xp
YkFOR0xFL3JlbmRlcmVyL2dsL2dseC9EaXNwbGF5R0xYLmNwcCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L0Rpc3BsYXlHTFguaCcsCi0gICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvZ2wvZ2x4L0Z1bmN0aW9uc0dMWC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL2dsL2dseC9GdW5jdGlvbnNHTFguaCcsCi0gICAgICAgICAgICAnbGliQU5H
TEUvcmVuZGVyZXIvZ2wvZ2x4L1BidWZmZXJTdXJmYWNlR0xYLmNwcCcsCi0gICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1BidWZmZXJTdXJmYWNlR0xYLmgnLAotICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9TdXJmYWNlR0xYLmgnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL2dsL2dseC9XaW5kb3dTdXJmYWNlR0xYLmNwcCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L1dpbmRvd1N1cmZhY2VHTFguaCcsCi0gICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZ2x4L2Z1bmN0aW9uc2dseF90eXBlZGVmcy5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9nbHgvcGxhdGZvcm1fZ2x4Lmgn
LAotICAgICAgICBdLAotICAgICAgICAnbGliYW5nbGVfZ2xfZWdsX3NvdXJjZXMnOgotICAgICAg
ICBbCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Rpc3BsYXlFR0wuY3Bw
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRGlzcGxheUVHTC5oJywK
LSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvRnVuY3Rpb25zRUdMLmNwcCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWdsL0Z1bmN0aW9uc0VHTC5oJywK
LSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvZnVuY3Rpb25zZWdsX3R5cGVk
ZWZzLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9QYnVmZmVyU3Vy
ZmFjZUVHTC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9QYnVm
ZmVyU3VyZmFjZUVHTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wv
U3VyZmFjZUVHTC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9T
dXJmYWNlRUdMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9XaW5k
b3dTdXJmYWNlRUdMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvZ2wvZWds
L1dpbmRvd1N1cmZhY2VFR0wuaCcsCi0gICAgICAgIF0sCi0gICAgICAgICdsaWJhbmdsZV9nbF9l
Z2xfZGxfc291cmNlcyc6Ci0gICAgICAgIFsKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9nbC9lZ2wvRnVuY3Rpb25zRUdMREwuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9nbC9lZ2wvRnVuY3Rpb25zRUdMREwuaCcsCi0gICAgICAgIF0sCi0gICAgICAgICdsaWJh
bmdsZV9nbF9vem9uZV9zb3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL2dsL2VnbC9vem9uZS9EaXNwbGF5T3pvbmUuY3BwJywKLSAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvRGlzcGxheU96b25lLmgnLAotICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2dsL2VnbC9vem9uZS9TdXJmYWNlT3pvbmUuY3BwJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvb3pvbmUvU3VyZmFjZU96b25lLmgn
LAotICAgICAgICBdLAotICAgICAgICAnbGliYW5nbGVfZ2xfZWdsX2FuZHJvaWRfc291cmNlcyc6
Ci0gICAgICAgIFsKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9nbC9lZ2wvYW5kcm9p
ZC9EaXNwbGF5QW5kcm9pZC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL2ds
L2VnbC9hbmRyb2lkL0Rpc3BsYXlBbmRyb2lkLmgnLAotICAgICAgICBdLAotICAgICAgICAnbGli
YW5nbGVfZ2xfY2dsX3NvdXJjZXMnOgotICAgICAgICBbCi0gICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZ2wvY2dsL0Rpc3BsYXlDR0wubW0nLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3Jl
bmRlcmVyL2dsL2NnbC9EaXNwbGF5Q0dMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL2dsL2NnbC9QYnVmZmVyU3VyZmFjZUNHTC5tbScsCi0gICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvZ2wvY2dsL1BidWZmZXJTdXJmYWNlQ0dMLmgnLAotICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL2dsL2NnbC9XaW5kb3dTdXJmYWNlQ0dMLm1tJywKLSAgICAgICAgICAgICds
aWJBTkdMRS9yZW5kZXJlci9nbC9jZ2wvV2luZG93U3VyZmFjZUNHTC5oJywKLSAgICAgICAgXSwK
LSAgICAgICAgJ2xpYmFuZ2xlX3Z1bGthbl9zb3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9CdWZmZXJWay5jcHAnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9CdWZmZXJWay5oJywKLSAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci92dWxrYW4vQ29tcGlsZXJWay5jcHAnLAotICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9Db21waWxlclZrLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xF
L3JlbmRlcmVyL3Z1bGthbi9Db250ZXh0VmsuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9y
ZW5kZXJlci92dWxrYW4vQ29udGV4dFZrLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRl
cmVyL3Z1bGthbi9EZXZpY2VWay5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9EZXZpY2VWay5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxr
YW4vRGlzcGxheVZrLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2Fu
L0Rpc3BsYXlWay5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRmVu
Y2VOVlZrLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZlbmNl
TlZWay5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRmVuY2VTeW5j
VmsuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRmVuY2VTeW5j
VmsuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZyYW1lYnVmZmVy
VmsuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRnJhbWVidWZm
ZXJWay5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vSW1hZ2VWay5j
cHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9JbWFnZVZrLmgnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9Qcm9ncmFtVmsuY3BwJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4vUHJvZ3JhbVZrLmgnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9RdWVyeVZrLmNwcCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1F1ZXJ5VmsuaCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlcmJ1ZmZlclZrLmNwcCcsCi0gICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlcmJ1ZmZlclZrLmgnLAotICAgICAgICAgICAg
J2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9SZW5kZXJlclZrLmNwcCcsCi0gICAgICAgICAgICAn
bGliQU5HTEUvcmVuZGVyZXIvdnVsa2FuL1JlbmRlcmVyVmsuaCcsCi0gICAgICAgICAgICAnbGli
QU5HTEUvcmVuZGVyZXIvdnVsa2FuL1NhbXBsZXJWay5jcHAnLAotICAgICAgICAgICAgJ2xpYkFO
R0xFL3JlbmRlcmVyL3Z1bGthbi9TYW1wbGVyVmsuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvdnVsa2FuL1NoYWRlclZrLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVu
ZGVyZXIvdnVsa2FuL1NoYWRlclZrLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVy
L3Z1bGthbi9TdXJmYWNlVmsuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92
dWxrYW4vU3VyZmFjZVZrLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGth
bi9UZXh0dXJlVmsuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci92dWxrYW4v
VGV4dHVyZVZrLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9UcmFu
c2Zvcm1GZWVkYmFja1ZrLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvdnVs
a2FuL1RyYW5zZm9ybUZlZWRiYWNrVmsuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVy
ZXIvdnVsa2FuL1ZlcnRleEFycmF5VmsuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci92dWxrYW4vVmVydGV4QXJyYXlWay5oJywKLSAgICAgICAgXSwKLSAgICAgICAgJ2xpYmFu
Z2xlX251bGxfc291cmNlcyc6Ci0gICAgICAgIFsKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5k
ZXJlci9udWxsL0J1ZmZlck5VTEwuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9udWxsL0J1ZmZlck5VTEwuaCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVs
bC9Db21waWxlck5VTEwuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxs
L0NvbXBpbGVyTlVMTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL0Nv
bnRleHROVUxMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9Db250
ZXh0TlVMTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL0RldmljZU5V
TEwuY3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL0RldmljZU5VTEwu
aCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9EaXNwbGF5TlVMTC5jcHAn
LAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRGlzcGxheU5VTEwuaCcsCi0g
ICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GZW5jZU5WTlVMTC5jcHAnLAotICAg
ICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRmVuY2VOVk5VTEwuaCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GZW5jZVN5bmNOVUxMLmNwcCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GZW5jZVN5bmNOVUxMLmgnLAotICAgICAgICAg
ICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvRnJhbWVidWZmZXJOVUxMLmNwcCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9GcmFtZWJ1ZmZlck5VTEwuaCcsCi0gICAgICAg
ICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9JbWFnZU5VTEwuY3BwJywKLSAgICAgICAgICAg
ICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL0ltYWdlTlVMTC5oJywKLSAgICAgICAgICAgICdsaWJB
TkdMRS9yZW5kZXJlci9udWxsL1BhdGhOVUxMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUv
cmVuZGVyZXIvbnVsbC9QYXRoTlVMTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJl
ci9udWxsL1Byb2dyYW1OVUxMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIv
bnVsbC9Qcm9ncmFtTlVMTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxs
L1F1ZXJ5TlVMTC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUXVl
cnlOVUxMLmgnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUmVuZGVyYnVm
ZmVyTlVMTC5jcHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvUmVuZGVy
YnVmZmVyTlVMTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL1NhbXBs
ZXJOVUxMLmNwcCcsCi0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TYW1wbGVy
TlVMTC5oJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL1NoYWRlck5VTEwu
Y3BwJywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL1NoYWRlck5VTEwuaCcs
Ci0gICAgICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9TdXJmYWNlTlVMTC5jcHAnLAot
ICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvU3VyZmFjZU5VTEwuaCcsCi0gICAg
ICAgICAgICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9UZXh0dXJlTlVMTC5jcHAnLAotICAgICAg
ICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVGV4dHVyZU5VTEwuaCcsCi0gICAgICAgICAg
ICAnbGliQU5HTEUvcmVuZGVyZXIvbnVsbC9UcmFuc2Zvcm1GZWVkYmFja05VTEwuY3BwJywKLSAg
ICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL1RyYW5zZm9ybUZlZWRiYWNrTlVMTC5o
JywKLSAgICAgICAgICAgICdsaWJBTkdMRS9yZW5kZXJlci9udWxsL1ZlcnRleEFycmF5TlVMTC5j
cHAnLAotICAgICAgICAgICAgJ2xpYkFOR0xFL3JlbmRlcmVyL251bGwvVmVydGV4QXJyYXlOVUxM
LmgnLAotICAgICAgICBdLAotICAgICAgICAnbGliZ2xlc3YyX3NvdXJjZXMnOgotICAgICAgICBb
Ci0gICAgICAgICAgICAnY29tbW9uL2FuZ2xldXRpbHMuaCcsCi0gICAgICAgICAgICAnY29tbW9u
L2RlYnVnLmgnLAotICAgICAgICAgICAgJ2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsLmNwcCcs
Ci0gICAgICAgICAgICAnbGliR0xFU3YyL2VudHJ5X3BvaW50c19lZ2wuaCcsCi0gICAgICAgICAg
ICAnbGliR0xFU3YyL2VudHJ5X3BvaW50c19lZ2xfZXh0LmNwcCcsCi0gICAgICAgICAgICAnbGli
R0xFU3YyL2VudHJ5X3BvaW50c19lZ2xfZXh0LmgnLAotICAgICAgICAgICAgJ2xpYkdMRVN2Mi9l
bnRyeV9wb2ludHNfZ2xlc18yXzAuY3BwJywKLSAgICAgICAgICAgICdsaWJHTEVTdjIvZW50cnlf
cG9pbnRzX2dsZXNfMl8wLmgnLAotICAgICAgICAgICAgJ2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNf
Z2xlc18yXzBfZXh0LmNwcCcsCi0gICAgICAgICAgICAnbGliR0xFU3YyL2VudHJ5X3BvaW50c19n
bGVzXzJfMF9leHQuaCcsCi0gICAgICAgICAgICAnbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVz
XzNfMC5jcHAnLAotICAgICAgICAgICAgJ2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzAu
aCcsCi0gICAgICAgICAgICAnbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMS5jcHAnLAot
ICAgICAgICAgICAgJ2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzEuaCcsCi0gICAgICAg
ICAgICAnbGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5jcHAnLAotICAgICAgICAgICAgJ2xpYkdMRVN2
Mi9nbG9iYWxfc3RhdGUuaCcsCi0gICAgICAgICAgICAnbGliR0xFU3YyL2xpYkdMRVN2Mi5jcHAn
LAotICAgICAgICAgICAgJ2xpYkdMRVN2Mi9saWJHTEVTdjIuZGVmJywKLSAgICAgICAgICAgICds
aWJHTEVTdjIvbGliR0xFU3YyLnJjJywKLSAgICAgICAgICAgICdsaWJHTEVTdjIvcmVzb3VyY2Uu
aCcsCi0gICAgICAgIF0sCi0gICAgICAgICdsaWJlZ2xfc291cmNlcyc6Ci0gICAgICAgIFsKLSAg
ICAgICAgICAgICdsaWJFR0wvbGliRUdMLmNwcCcsCi0gICAgICAgICAgICAnbGliRUdML2xpYkVH
TC5kZWYnLAotICAgICAgICAgICAgJ2xpYkVHTC9saWJFR0wucmMnLAotICAgICAgICAgICAgJ2xp
YkVHTC9yZXNvdXJjZS5oJywKLSAgICAgICAgXSwKLSAgICB9LAotICAgICMgRXZlcnl0aGluZyBi
ZWxvdyB0aGlzIGlzIGR1cGxpY2F0ZWQgaW4gdGhlIEdOIGJ1aWxkLiBJZiB5b3UgY2hhbmdlCi0g
ICAgIyBhbnl0aGluZyBhbHNvIGNoYW5nZSBhbmdsZS9CVUlMRC5nbgotICAgICd0YXJnZXRzJzoK
LSAgICBbCi0gICAgICAgIHsKLSAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdsaWJBTkdMRScs
Ci0gICAgICAgICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCi0gICAgICAgICAgICAnZGVw
ZW5kZW5jaWVzJzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAndHJhbnNsYXRvcl9z
dGF0aWMnLAotICAgICAgICAgICAgICAgICdjb21taXRfaWQnLAotICAgICAgICAgICAgICAgICdh
bmdsZV9jb21tb24nLAotICAgICAgICAgICAgICAgICdhbmdsZV9pbWFnZV91dGlsJywKLSAgICAg
ICAgICAgIF0sCi0gICAgICAgICAgICAnaW5jbHVkZXMnOiBbICcuLi9idWlsZC9jb21tb25fZGVm
aW5lcy5neXBpJywgXSwKLSAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOgotICAgICAgICAgICAg
WwotICAgICAgICAgICAgICAgICcuJywKLSAgICAgICAgICAgICAgICAnLi4vaW5jbHVkZScsCi0g
ICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2tocm9ub3MnLAotICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAnPEAo
bGliYW5nbGVfc291cmNlcyknLAotICAgICAgICAgICAgICAgICc8QChsaWJhbmdsZV9pbmNsdWRl
cyknLAotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAg
IFsKLSAgICAgICAgICAgICAgICAnTElCQU5HTEVfSU1QTEVNRU5UQVRJT04nLAotICAgICAgICAg
ICAgXSwKLSAgICAgICAgICAgICdleHBvcnRfZGVwZW5kZW50X3NldHRpbmdzJzoKLSAgICAgICAg
ICAgIFsKLSAgICAgICAgICAgICAgICAnYW5nbGVfY29tbW9uJywKLSAgICAgICAgICAgIF0sCi0g
ICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6Ci0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6Ci0gICAgICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMnLAotICAgICAgICAgICAgICAgICAgICAn
PChhbmdsZV9wYXRoKS9pbmNsdWRlJywKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAg
ICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICdH
TF9HTEVYVF9QUk9UT1RZUEVTJywKLSAgICAgICAgICAgICAgICAgICAgJ0FOR0xFX1BSRUxPQURF
RF9EM0RDT01QSUxFUl9NT0RVTEVfTkFNRVM9eyAiZDNkY29tcGlsZXJfNDcuZGxsIiwgImQzZGNv
bXBpbGVyXzQ2LmRsbCIsICJkM2Rjb21waWxlcl80My5kbGwiIH0nLAotICAgICAgICAgICAgICAg
IF0sCi0gICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgotICAgICAgICAgICAgICAgIFsKLSAg
ICAgICAgICAgICAgICAgICAgWydPUz09IndpbiInLCB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0dMX0FQSUNBTEw9JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
RUdMQVBJPScsCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAg
ICB9LCB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0dMX0FQSUNBTEw9X19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSknLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdFR0xBUEk9X19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSkn
LAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgfV0sCi0g
ICAgICAgICAgICAgICAgICAgIFsnT1MgPT0gIm1hYyInLAotICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAneGNvZGVfc2V0dGluZ3MnOgotICAgICAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEWUxJQl9JTlNUQUxM
X05BTUVfQkFTRSc6ICdAcnBhdGgnLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgICAgIFsnYW5nbGVfZW5hYmxlX2Qz
ZDk9PTEnLAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAn
ZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0FOR0xFX0VOQUJMRV9EM0Q5JywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0s
Ci0gICAgICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgICAgICBbJ2FuZ2xlX2Vu
YWJsZV9kM2QxMT09MScsCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnQU5HTEVfRU5BQkxFX0QzRDExJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgICAgICBb
J2FuZ2xlX2VuYWJsZV9nbD09MScsCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVfRU5BQkxFX09QRU5HTCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgot
ICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsn
YW5nbGVfdXNlX2dseD09MScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBTkdM
RV9VU0VfWDExJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAg
ICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgICAgICBbJ2FuZ2xlX2VuYWJsZV92
dWxrYW49PTEnLAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0FOR0xFX0VOQUJMRV9WVUxLQU4nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgXSwKLSAgICAgICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgXSwKLSAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAnY29uZGl0aW9ucyc6Ci0gICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgWydhbmdsZV9lbmFibGVfZDNkOT09MSBvciBhbmdsZV9lbmFibGVfZDNkMTE9
PTEnLAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgot
ICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnPEAobGliYW5n
bGVfZDNkX3NoYXJlZF9zb3VyY2VzKScsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgWydhbmdsZV9lbmFibGVfZDNkOT09MScsCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAg
ICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8QChsaWJhbmdsZV9kM2Q5
X3NvdXJjZXMpJywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAg
J2RlZmluZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAg
ICAnQU5HTEVfRU5BQkxFX0QzRDknLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAg
ICAgICAgICAgICAnbGlua19zZXR0aW5ncyc6Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICdtc3ZzX3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVkNMaW5rZXJUb29sJzoKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdBZGRpdGlvbmFsRGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2QzZDkubGliJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgWydhbmdsZV9lbmFibGVfZDNk
MTE9PTEnLAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMn
OgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnPEAobGli
YW5nbGVfZDNkMTFfc291cmNlcyknLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAg
ICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdBTkdMRV9FTkFCTEVfRDNEMTEnLAotICAgICAgICAgICAgICAgICAgICBd
LAotICAgICAgICAgICAgICAgICAgICAnbGlua19zZXR0aW5ncyc6Ci0gICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdtc3ZzX3NldHRpbmdzJzoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVkNMaW5rZXJU
b29sJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdjb25kaXRpb25zJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydhbmdsZV9idWlsZF93
aW5ydD09MCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FkZGl0aW9uYWxEZXBlbmRlbmNpZXMn
OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2R4Z3VpZC5saWInLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsn
YW5nbGVfYnVpbGRfd2lucnQ9PTEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBZGRpdGlvbmFs
RGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkeGd1aWQubGli
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2QzZDExLmxp
YicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkM2Rjb21w
aWxlci5saWInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgICAgICAnY29uZGl0aW9ucyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFsnYW5nbGVfYnVpbGRfd2lucnQ9PTEnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8
QChsaWJhbmdsZV9kM2QxMV93aW5ydF9zb3VyY2VzKScsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICB7ICMgd2luMzIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnPEAobGliYW5nbGVfZDNkMTFfd2luMzJfc291cmNlcyknLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAg
ICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICBbJ2FuZ2xl
X2VuYWJsZV9nbD09MScsCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAn
c291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICc8QChsaWJhbmdsZV9nbF9zb3VyY2VzKScsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAg
ICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAgICAgICAgICAgJ0FOR0xFX0VOQUJMRV9PUEVOR0wnLAotICAgICAgICAgICAgICAg
ICAgICBdLAotICAgICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6Ci0gICAgICAgICAgICAg
ICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgIFsnT1M9PSJ3aW4iJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnPEAobGliYW5nbGVfZ2xfd2dsX3NvdXJjZXMpJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBbJ2FuZ2xlX3VzZV9nbHg9PTEnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9V
U0VfWDExJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Ro
aXJkX3BhcnR5L2xpYlhOVkN0cmwvbGliWE5WQ3RybC5neXA6bGliWE5WQ3RybCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc291
cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnPEAobGliYW5nbGVfZ2xfZ2x4X3NvdXJjZXMpJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaW5rX3Nl
dHRpbmdzJzogewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGRmbGFncyc6IFsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8IUAoPChwa2ctY29uZmlnKSAt
LWxpYnMtb25seS1MIC0tbGlicy1vbmx5LW90aGVyIHgxMSB4aSB4ZXh0KScsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdsaWJyYXJpZXMnOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPCFA
KDwocGtnLWNvbmZpZykgLS1saWJzLW9ubHktbCB4MTEgeGkgeGV4dCkgLWxkbCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgICAgICAgICAg
Wyd1c2Vfb3pvbmU9PTEnLAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9VU0VfT1pPTkUnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3NvdXJjZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJzxAKGxpYmFuZ2xlX2dsX2VnbF9zb3VyY2VzKScsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICc8QChsaWJhbmdsZV9nbF9lZ2xfZGxfc291cmNlcykn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPEAobGliYW5nbGVfZ2xfb3pvbmVf
c291cmNlcyknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ2NmbGFncyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPCFAKDwocGtnLWNvbmZpZykgLS1jZmxh
Z3MgbGliZHJtIGdibSknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2xpbmtfc2V0dGluZ3MnOiB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdsZGZsYWdzJzogWwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJzwhQCg8KHBrZy1jb25maWcpIC0tbGlicy1vbmx5LUwgLS1saWJzLW9ubHktb3Ro
ZXIgbGliZHJtIGdibSknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGlicmFyaWVzJzogWwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJzwhQCg8KHBrZy1jb25maWcpIC0tbGlicy1vbmx5LWwg
bGliZHJtIGdibSkgLWxkbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH1d
LAotICAgICAgICAgICAgICAgICAgICAgICAgWydhbmdsZV9saW5rX2dseD09MScsCi0gICAgICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpbmtfc2V0
dGluZ3MnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ2xpYnJhcmllcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctbEdMJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBTkdM
RV9MSU5LX0dMWCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgICAgICAgICAgWydPUz09Im1hYyInLAot
ICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdz
b3VyY2VzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICc8QChsaWJhbmdsZV9nbF9jZ2xfc291cmNlcyknLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpbmtf
c2V0dGluZ3MnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2xpYnJhcmllcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICckKFNES1JPT1Qp
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQ29jb2EuZnJhbWV3b3JrJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICckKFNES1JPT1QpL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MvSU9TdXJmYWNlLmZyYW1ld29yaycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnJChTREtST09UKS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL09wZW5HTC5mcmFt
ZXdvcmsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyQoU0RLUk9PVCkv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yaycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxsX2RlcGVuZGVudF9zZXR0aW5ncyc6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAneGNvZGVfc2V0dGluZ3MnOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnTERfUlVOUEFUSF9TRUFSQ0hfUEFUSFMnOiBbJ0BleGVjdXRhYmxlX3BhdGgvLidd
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAg
ICAgICBdLAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgIFsnYW5nbGVfZW5h
YmxlX3Z1bGthbj09MScsCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAn
c291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICc8QChsaWJhbmdsZV92dWxrYW5fc291cmNlcyknLAotICAgICAgICAgICAgICAgICAgICBdLAot
ICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9FTkFCTEVfVlVMS0FOJywKLSAgICAgICAgICAg
ICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICBbJ2FuZ2xl
X2VuYWJsZV9udWxsPT0xJywKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICdzb3VyY2VzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAg
ICAgJzxAKGxpYmFuZ2xlX251bGxfc291cmNlcyknLAotICAgICAgICAgICAgICAgICAgICBdLAot
ICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICdBTkdMRV9FTkFCTEVfTlVMTCcsCi0gICAgICAgICAgICAg
ICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgWydhbmdsZV9i
dWlsZF93aW5ydD09MCBhbmQgT1M9PSJ3aW4iJywKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnY29weV9jb21waWxlcl9kbGwnCi0gICAgICAgICAgICAgICAg
ICAgIF0sCi0gICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgWydhbmdsZV9idWls
ZF93aW5ydD09MScsCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnbXN2
c19yZXF1aXJlc19pbXBvcnRsaWJyYXJ5JyA6ICd0cnVlJywKLSAgICAgICAgICAgICAgICB9XSwK
LSAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICd0YXJn
ZXRfbmFtZSc6ICdsaWJHTEVTdjInLAotICAgICAgICAgICAgJ3R5cGUnOiAnPChhbmdsZV9nbF9s
aWJyYXJ5X3R5cGUpJywKLSAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiBbICdsaWJBTkdMRScs
ICdhbmdsZV9jb21tb24nIF0sCi0gICAgICAgICAgICAnaW5jbHVkZXMnOiBbICcuLi9idWlsZC9j
b21tb25fZGVmaW5lcy5neXBpJywgXSwKLSAgICAgICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAg
ICAgIFsKLSAgICAgICAgICAgICAgICAnPEAobGliZ2xlc3YyX3NvdXJjZXMpJywKLSAgICAgICAg
ICAgIF0sCi0gICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAg
ICAgICAgJ0xJQkdMRVNWMl9JTVBMRU1FTlRBVElPTicsCi0gICAgICAgICAgICBdLAotICAgICAg
ICAgICAgJ2NvbmRpdGlvbnMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgIFsnYW5n
bGVfYnVpbGRfd2lucnQ9PTEnLAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgJ21zdnNfcmVxdWlyZXNfaW1wb3J0bGlicmFyeScgOiAndHJ1ZScsCi0gICAgICAgICAgICAg
ICAgfV0sCi0gICAgICAgICAgICBdLAotICAgICAgICB9LAotICAgIF0sCi19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19lZ2wu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNf
ZWdsLmNwcAppbmRleCBmMmZlMTdmNjMzMy4uYzY2MzcxMGE1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2VnbC5jcHAKKysr
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWds
LmNwcApAQCAtMTcsMjQgKzE3LDUxIEBACiAjaW5jbHVkZSAibGliQU5HTEUvQ29udGV4dC5oIgog
I2luY2x1ZGUgImxpYkFOR0xFL0Rpc3BsYXkuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9UZXh0dXJl
LmgiCisjaW5jbHVkZSAibGliQU5HTEUvVGhyZWFkLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvU3Vy
ZmFjZS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FR0wuaCIKKyNpbmNsdWRlICJs
aWJBTkdMRS9xdWVyeXV0aWxzLmgiCiAKICNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKICNpbmNs
dWRlICJjb21tb24vdmVyc2lvbi5oIgogCisjaW5jbHVkZSAicGxhdGZvcm0vUGxhdGZvcm0uaCIK
KwogI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KIAogbmFtZXNwYWNlIGVnbAogewogCituYW1lc3Bh
Y2UKK3sKKwordm9pZCBDbGlwQ29uZmlncyhjb25zdCBzdGQ6OnZlY3Rvcjxjb25zdCBDb25maWcg
Kj4gJmZpbHRlcmVkQ29uZmlncywKKyAgICAgICAgICAgICAgICAgRUdMQ29uZmlnICpvdXRwdXRf
Y29uZmlncywKKyAgICAgICAgICAgICAgICAgRUdMaW50IGNvbmZpZ19zaXplLAorICAgICAgICAg
ICAgICAgICBFR0xpbnQgKm51bV9jb25maWcpCit7CisgICAgRUdMaW50IHJlc3VsdF9zaXplID0g
c3RhdGljX2Nhc3Q8RUdMaW50PihmaWx0ZXJlZENvbmZpZ3Muc2l6ZSgpKTsKKyAgICBpZiAob3V0
cHV0X2NvbmZpZ3MpCisgICAgeworICAgICAgICByZXN1bHRfc2l6ZSA9IHN0ZDo6bWF4KHN0ZDo6
bWluKHJlc3VsdF9zaXplLCBjb25maWdfc2l6ZSksIDApOworICAgICAgICBmb3IgKEVHTGludCBp
ID0gMDsgaSA8IHJlc3VsdF9zaXplOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dHB1
dF9jb25maWdzW2ldID0gY29uc3RfY2FzdDxDb25maWcgKj4oZmlsdGVyZWRDb25maWdzW2ldKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICAqbnVtX2NvbmZpZyA9IHJlc3VsdF9zaXplOworfQorCit9
ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCisKIC8vIEVHTCAxLjAKIEVHTGludCBFR0xBUElFTlRS
WSBHZXRFcnJvcih2b2lkKQogewogICAgIEVWRU5UKCIoKSIpOworICAgIFRocmVhZCAqdGhyZWFk
ID0gR2V0Q3VycmVudFRocmVhZCgpOwogCi0gICAgRUdMaW50IGVycm9yID0gR2V0R2xvYmFsRXJy
b3IoKTsKLSAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOworICAgIEVHTGlu
dCBlcnJvciA9IHRocmVhZC0+Z2V0RXJyb3IoKTsKKyAgICB0aHJlYWQtPnNldEVycm9yKEVycm9y
KEVHTF9TVUNDRVNTKSk7CiAgICAgcmV0dXJuIGVycm9yOwogfQogCkBAIC00Miw2MyArNjksNjMg
QEAgRUdMRGlzcGxheSBFR0xBUElFTlRSWSBHZXREaXNwbGF5KEVHTE5hdGl2ZURpc3BsYXlUeXBl
IGRpc3BsYXlfaWQpCiB7CiAgICAgRVZFTlQoIihFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNwbGF5
X2lkID0gMHglMC44cCkiLCBkaXNwbGF5X2lkKTsKIAotICAgIHJldHVybiBEaXNwbGF5OjpHZXRE
aXNwbGF5RnJvbUF0dHJpYnMocmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KGRpc3BsYXlfaWQpLCBB
dHRyaWJ1dGVNYXAoKSk7CisgICAgcmV0dXJuIERpc3BsYXk6OkdldERpc3BsYXlGcm9tTmF0aXZl
RGlzcGxheShkaXNwbGF5X2lkLCBBdHRyaWJ1dGVNYXAoKSk7CiB9CiAKIEVHTEJvb2xlYW4gRUdM
QVBJRU5UUlkgSW5pdGlhbGl6ZShFR0xEaXNwbGF5IGRweSwgRUdMaW50ICptYWpvciwgRUdMaW50
ICptaW5vcikKIHsKLSAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMaW50
ICptYWpvciA9IDB4JTAuOHAsIEVHTGludCAqbWlub3IgPSAweCUwLjhwKSIsCi0gICAgICAgICAg
ZHB5LCBtYWpvciwgbWlub3IpOworICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhw
LCBFR0xpbnQgKm1ham9yID0gMHglMC44cCwgRUdMaW50ICptaW5vciA9IDB4JTAuOHApIiwgZHB5
LAorICAgICAgICAgIG1ham9yLCBtaW5vcik7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJy
ZW50VGhyZWFkKCk7CiAKICAgICBEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8RGlzcGxh
eSAqPihkcHkpOwogICAgIGlmIChkcHkgPT0gRUdMX05PX0RJU1BMQVkgfHwgIURpc3BsYXk6Omlz
VmFsaWREaXNwbGF5KGRpc3BsYXkpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJy
b3IoRUdMX0JBRF9ESVNQTEFZKSk7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdM
X0JBRF9ESVNQTEFZKSk7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCiAgICAg
RXJyb3IgZXJyb3IgPSBkaXNwbGF5LT5pbml0aWFsaXplKCk7CiAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhy
ZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQog
CiAgICAgaWYgKG1ham9yKSAqbWFqb3IgPSAxOwogICAgIGlmIChtaW5vcikgKm1pbm9yID0gNDsK
IAotICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAgdGhyZWFkLT5z
ZXRFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOwogICAgIHJldHVybiBFR0xfVFJVRTsKIH0KIAog
RUdMQm9vbGVhbiBFR0xBUElFTlRSWSBUZXJtaW5hdGUoRUdMRGlzcGxheSBkcHkpCiB7CiAgICAg
RVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHApIiwgZHB5KTsKKyAgICBUaHJlYWQgKnRo
cmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAgIERpc3BsYXkgKmRpc3BsYXkgPSBzdGF0
aWNfY2FzdDxEaXNwbGF5ICo+KGRweSk7CiAgICAgaWYgKGRweSA9PSBFR0xfTk9fRElTUExBWSB8
fCAhRGlzcGxheTo6aXNWYWxpZERpc3BsYXkoZGlzcGxheSkpCiAgICAgewotICAgICAgICBTZXRH
bG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0RJU1BMQVkpKTsKKyAgICAgICAgdGhyZWFkLT5zZXRF
cnJvcihFcnJvcihFR0xfQkFEX0RJU1BMQVkpKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsK
ICAgICB9CiAKLSAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IEdldEdsb2JhbENvbnRleHQoKTsK
LQotICAgIGlmIChkaXNwbGF5LT5pc1ZhbGlkQ29udGV4dChjb250ZXh0KSkKKyAgICBpZiAoZGlz
cGxheS0+aXNWYWxpZENvbnRleHQodGhyZWFkLT5nZXRDb250ZXh0KCkpKQogICAgIHsKLSAgICAg
ICAgU2V0R2xvYmFsQ29udGV4dChOVUxMKTsKLSAgICAgICAgU2V0R2xvYmFsRGlzcGxheShOVUxM
KTsKKyAgICAgICAgdGhyZWFkLT5zZXRDdXJyZW50KG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIs
IG51bGxwdHIpOwogICAgIH0KIAogICAgIGRpc3BsYXktPnRlcm1pbmF0ZSgpOwogCi0gICAgU2V0
R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKKyAgICB0aHJlYWQtPnNldEVycm9yKEVy
cm9yKEVHTF9TVUNDRVNTKSk7CiAgICAgcmV0dXJuIEVHTF9UUlVFOwogfQogCiBjb25zdCBjaGFy
ICpFR0xBUElFTlRSWSBRdWVyeVN0cmluZyhFR0xEaXNwbGF5IGRweSwgRUdMaW50IG5hbWUpCiB7
CiAgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTGludCBuYW1lID0gJWQp
IiwgZHB5LCBuYW1lKTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsK
IAogICAgIERpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxEaXNwbGF5Kj4oZHB5KTsKICAg
ICBpZiAoIShkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZICYmIG5hbWUgPT0gRUdMX0VYVEVOU0lP
TlMpKQpAQCAtMTA2LDcgKzEzMyw3IEBAIGNvbnN0IGNoYXIgKkVHTEFQSUVOVFJZIFF1ZXJ5U3Ry
aW5nKEVHTERpc3BsYXkgZHB5LCBFR0xpbnQgbmFtZSkKICAgICAgICAgRXJyb3IgZXJyb3IgPSBW
YWxpZGF0ZURpc3BsYXkoZGlzcGxheSk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgICAg
IHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAg
ICAgIH0KICAgICB9CkBAIC0xMzQsMTE2ICsxNjEsOTIgQEAgY29uc3QgY2hhciAqRUdMQVBJRU5U
UlkgUXVlcnlTdHJpbmcoRUdMRGlzcGxheSBkcHksIEVHTGludCBuYW1lKQogICAgICAgICByZXN1
bHQgPSAiMS40IChBTkdMRSAiIEFOR0xFX1ZFUlNJT05fU1RSSU5HICIpIjsKICAgICAgICAgYnJl
YWs7CiAgICAgICBkZWZhdWx0OgotICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFE
X1BBUkFNRVRFUikpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICB0aHJlYWQtPnNl
dEVycm9yKEVycm9yKEVHTF9CQURfUEFSQU1FVEVSKSk7CisgICAgICAgICAgcmV0dXJuIE5VTEw7
CiAgICAgfQogCi0gICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKKyAgICB0
aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAogRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBHZXRDb25maWdzKEVHTERpc3BsYXkgZHB5LCBF
R0xDb25maWcgKmNvbmZpZ3MsIEVHTGludCBjb25maWdfc2l6ZSwgRUdMaW50ICpudW1fY29uZmln
KQogewotICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xDb25maWcgKmNv
bmZpZ3MgPSAweCUwLjhwLCAiCi0gICAgICAgICAgIkVHTGludCBjb25maWdfc2l6ZSA9ICVkLCBF
R0xpbnQgKm51bV9jb25maWcgPSAweCUwLjhwKSIsCi0gICAgICAgICAgZHB5LCBjb25maWdzLCBj
b25maWdfc2l6ZSwgbnVtX2NvbmZpZyk7CisgICAgRVZFTlQoCisgICAgICAgICIoRUdMRGlzcGxh
eSBkcHkgPSAweCUwLjhwLCBFR0xDb25maWcgKmNvbmZpZ3MgPSAweCUwLjhwLCAiCisgICAgICAg
ICJFR0xpbnQgY29uZmlnX3NpemUgPSAlZCwgRUdMaW50ICpudW1fY29uZmlnID0gMHglMC44cCki
LAorICAgICAgICBkcHksIGNvbmZpZ3MsIGNvbmZpZ19zaXplLCBudW1fY29uZmlnKTsKKyAgICBU
aHJlYWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAgIERpc3BsYXkgKmRpc3Bs
YXkgPSBzdGF0aWNfY2FzdDxEaXNwbGF5Kj4oZHB5KTsKIAotICAgIEVycm9yIGVycm9yID0gVmFs
aWRhdGVEaXNwbGF5KGRpc3BsYXkpOworICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVHZXRDb25m
aWdzKGRpc3BsYXksIGNvbmZpZ19zaXplLCBudW1fY29uZmlnKTsKICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOwotICAgICAgICBy
ZXR1cm4gRUdMX0ZBTFNFOwotICAgIH0KLQotICAgIGlmICghbnVtX2NvbmZpZykKLSAgICB7Ci0g
ICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfUEFSQU1FVEVSKSk7CisgICAgICAg
IHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAg
IH0KIAotICAgIHN0ZDo6dmVjdG9yPGNvbnN0IENvbmZpZyo+IGZpbHRlcmVkQ29uZmlncyA9IGRp
c3BsYXktPmdldENvbmZpZ3MoQXR0cmlidXRlTWFwKCkpOwotICAgIGlmIChjb25maWdzKQotICAg
IHsKLSAgICAgICAgZmlsdGVyZWRDb25maWdzLnJlc2l6ZShzdGQ6Om1pbjxzaXplX3Q+KGZpbHRl
cmVkQ29uZmlncy5zaXplKCksIGNvbmZpZ19zaXplKSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgZmlsdGVyZWRDb25maWdzLnNpemUoKTsgaSsrKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBjb25maWdzW2ldID0gY29uc3RfY2FzdDxDb25maWcqPihmaWx0ZXJlZENvbmZpZ3NbaV0p
OwotICAgICAgICB9Ci0gICAgfQotICAgICpudW1fY29uZmlnID0gc3RhdGljX2Nhc3Q8RUdMaW50
PihmaWx0ZXJlZENvbmZpZ3Muc2l6ZSgpKTsKKyAgICBDbGlwQ29uZmlncyhkaXNwbGF5LT5nZXRD
b25maWdzKEF0dHJpYnV0ZU1hcCgpKSwgY29uZmlncywgY29uZmlnX3NpemUsIG51bV9jb25maWcp
OwogCi0gICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKKyAgICB0aHJlYWQt
PnNldEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CiAgICAgcmV0dXJuIEVHTF9UUlVFOwogfQog
CiBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIENob29zZUNvbmZpZyhFR0xEaXNwbGF5IGRweSwgY29u
c3QgRUdMaW50ICphdHRyaWJfbGlzdCwgRUdMQ29uZmlnICpjb25maWdzLCBFR0xpbnQgY29uZmln
X3NpemUsIEVHTGludCAqbnVtX2NvbmZpZykKIHsKLSAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5
ID0gMHglMC44cCwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCA9IDB4JTAuOHAsICIKLSAgICAg
ICAgICAiRUdMQ29uZmlnICpjb25maWdzID0gMHglMC44cCwgRUdMaW50IGNvbmZpZ19zaXplID0g
JWQsIEVHTGludCAqbnVtX2NvbmZpZyA9IDB4JTAuOHApIiwKLSAgICAgICAgICBkcHksIGF0dHJp
Yl9saXN0LCBjb25maWdzLCBjb25maWdfc2l6ZSwgbnVtX2NvbmZpZyk7CisgICAgRVZFTlQoCisg
ICAgICAgICIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9s
aXN0ID0gMHglMC44cCwgIgorICAgICAgICAiRUdMQ29uZmlnICpjb25maWdzID0gMHglMC44cCwg
RUdMaW50IGNvbmZpZ19zaXplID0gJWQsIEVHTGludCAqbnVtX2NvbmZpZyA9IDB4JTAuOHApIiwK
KyAgICAgICAgZHB5LCBhdHRyaWJfbGlzdCwgY29uZmlncywgY29uZmlnX3NpemUsIG51bV9jb25m
aWcpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgRGlz
cGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PERpc3BsYXkqPihkcHkpOworICAgIEF0dHJpYnV0
ZU1hcCBhdHRyaWJNYXAgPSBBdHRyaWJ1dGVNYXA6OkNyZWF0ZUZyb21JbnRBcnJheShhdHRyaWJf
bGlzdCk7CiAKLSAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlRGlzcGxheShkaXNwbGF5KTsKKyAg
ICBFcnJvciBlcnJvciA9IFZhbGlkYXRlQ2hvb3NlQ29uZmlnKGRpc3BsYXksIGF0dHJpYk1hcCwg
Y29uZmlnX3NpemUsIG51bV9jb25maWcpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAg
ewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0RXJy
b3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAotICAgIGlmICgh
bnVtX2NvbmZpZykKLSAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURf
UEFSQU1FVEVSKSk7Ci0gICAgICAgIHJldHVybiBFR0xfRkFMU0U7Ci0gICAgfQotCi0gICAgc3Rk
Ojp2ZWN0b3I8Y29uc3QgQ29uZmlnICo+IGZpbHRlcmVkQ29uZmlncyA9Ci0gICAgICAgIGRpc3Bs
YXktPmdldENvbmZpZ3MoQXR0cmlidXRlTWFwOjpDcmVhdGVGcm9tSW50QXJyYXkoYXR0cmliX2xp
c3QpKTsKLSAgICBpZiAoY29uZmlncykKLSAgICB7Ci0gICAgICAgIGZpbHRlcmVkQ29uZmlncy5y
ZXNpemUoc3RkOjptaW48c2l6ZV90PihmaWx0ZXJlZENvbmZpZ3Muc2l6ZSgpLCBjb25maWdfc2l6
ZSkpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbHRlcmVkQ29uZmlncy5zaXpl
KCk7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgY29uZmlnc1tpXSA9IGNvbnN0X2Nhc3Q8
Q29uZmlnKj4oZmlsdGVyZWRDb25maWdzW2ldKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAqbnVt
X2NvbmZpZyA9IHN0YXRpY19jYXN0PEVHTGludD4oZmlsdGVyZWRDb25maWdzLnNpemUoKSk7Cisg
ICAgQ2xpcENvbmZpZ3MoZGlzcGxheS0+Z2V0Q29uZmlncyhhdHRyaWJNYXApLCBjb25maWdzLCBj
b25maWdfc2l6ZSwgbnVtX2NvbmZpZyk7CiAKLSAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xf
U1VDQ0VTUykpOworICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKICAg
ICByZXR1cm4gRUdMX1RSVUU7CiB9CiAKIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgR2V0Q29uZmln
QXR0cmliKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBFR0xpbnQgYXR0cmlidXRl
LCBFR0xpbnQgKnZhbHVlKQogewotICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhw
LCBFR0xDb25maWcgY29uZmlnID0gMHglMC44cCwgRUdMaW50IGF0dHJpYnV0ZSA9ICVkLCBFR0xp
bnQgKnZhbHVlID0gMHglMC44cCkiLAotICAgICAgICAgIGRweSwgY29uZmlnLCBhdHRyaWJ1dGUs
IHZhbHVlKTsKKyAgICBFVkVOVCgKKyAgICAgICAgIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAs
IEVHTENvbmZpZyBjb25maWcgPSAweCUwLjhwLCBFR0xpbnQgYXR0cmlidXRlID0gJWQsIEVHTGlu
dCAiCisgICAgICAgICIqdmFsdWUgPSAweCUwLjhwKSIsCisgICAgICAgIGRweSwgY29uZmlnLCBh
dHRyaWJ1dGUsIHZhbHVlKTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQo
KTsKIAogICAgIERpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxEaXNwbGF5Kj4oZHB5KTsK
ICAgICBDb25maWcgKmNvbmZpZ3VyYXRpb24gPSBzdGF0aWNfY2FzdDxDb25maWcqPihjb25maWcp
OwogCi0gICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZUNvbmZpZyhkaXNwbGF5LCBjb25maWd1cmF0
aW9uKTsKKyAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlR2V0Q29uZmlnQXR0cmliKGRpc3BsYXks
IGNvbmZpZ3VyYXRpb24sIGF0dHJpYnV0ZSk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAg
ICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRF
cnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCi0gICAgaWYg
KCFkaXNwbGF5LT5nZXRDb25maWdBdHRyaWIoY29uZmlndXJhdGlvbiwgYXR0cmlidXRlLCB2YWx1
ZSkpCi0gICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVU
RSkpOwotICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwotICAgIH0KKyAgICBRdWVyeUNvbmZpZ0F0
dHJpYihjb25maWd1cmF0aW9uLCBhdHRyaWJ1dGUsIHZhbHVlKTsKIAotICAgIFNldEdsb2JhbEVy
cm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xf
U1VDQ0VTUykpOwogICAgIHJldHVybiBFR0xfVFJVRTsKIH0KIAogRUdMU3VyZmFjZSBFR0xBUElF
TlRSWSBDcmVhdGVXaW5kb3dTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmln
LCBFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbiwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCkKIHsK
LSAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMQ29uZmlnIGNvbmZpZyA9
IDB4JTAuOHAsIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luID0gMHglMC44cCwgIgotICAgICAgICAg
ICJjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0ID0gMHglMC44cCkiLCBkcHksIGNvbmZpZywgd2lu
LCBhdHRyaWJfbGlzdCk7CisgICAgRVZFTlQoCisgICAgICAgICIoRUdMRGlzcGxheSBkcHkgPSAw
eCUwLjhwLCBFR0xDb25maWcgY29uZmlnID0gMHglMC44cCwgRUdMTmF0aXZlV2luZG93VHlwZSB3
aW4gPSAweCUwLjhwLCAiCisgICAgICAgICJjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0ID0gMHgl
MC44cCkiLAorICAgICAgICBkcHksIGNvbmZpZywgd2luLCBhdHRyaWJfbGlzdCk7CisgICAgVGhy
ZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7CiAKICAgICBEaXNwbGF5ICpkaXNwbGF5
ID0gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGRweSk7CiAgICAgQ29uZmlnICpjb25maWd1cmF0aW9u
ID0gc3RhdGljX2Nhc3Q8Q29uZmlnKj4oY29uZmlnKTsKQEAgLTI1Miw3ICsyNTUsNyBAQCBFR0xT
dXJmYWNlIEVHTEFQSUVOVFJZIENyZWF0ZVdpbmRvd1N1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVH
TENvbmZpZyBjb25maWcsIEVHTAogICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVDcmVhdGVXaW5k
b3dTdXJmYWNlKGRpc3BsYXksIGNvbmZpZ3VyYXRpb24sIHdpbiwgYXR0cmlidXRlcyk7CiAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9y
KTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xf
Tk9fU1VSRkFDRTsKICAgICB9CiAKQEAgLTI2MCw3ICsyNjMsNyBAQCBFR0xTdXJmYWNlIEVHTEFQ
SUVOVFJZIENyZWF0ZVdpbmRvd1N1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25m
aWcsIEVHTAogICAgIGVycm9yID0gZGlzcGxheS0+Y3JlYXRlV2luZG93U3VyZmFjZShjb25maWd1
cmF0aW9uLCB3aW4sIGF0dHJpYnV0ZXMsICZzdXJmYWNlKTsKICAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0aHJl
YWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOwogICAg
IH0KIApAQCAtMjY5LDggKzI3MiwxMSBAQCBFR0xTdXJmYWNlIEVHTEFQSUVOVFJZIENyZWF0ZVdp
bmRvd1N1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVHTAogCiBFR0xT
dXJmYWNlIEVHTEFQSUVOVFJZIENyZWF0ZVBidWZmZXJTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBF
R0xDb25maWcgY29uZmlnLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KQogewotICAgIEVWRU5U
KCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xDb25maWcgY29uZmlnID0gMHglMC44cCwg
Y29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCA9IDB4JTAuOHApIiwKLSAgICAgICAgICBkcHksIGNv
bmZpZywgYXR0cmliX2xpc3QpOworICAgIEVWRU5UKAorICAgICAgICAiKEVHTERpc3BsYXkgZHB5
ID0gMHglMC44cCwgRUdMQ29uZmlnIGNvbmZpZyA9IDB4JTAuOHAsIGNvbnN0IEVHTGludCAqYXR0
cmliX2xpc3QgPSAiCisgICAgICAgICIweCUwLjhwKSIsCisgICAgICAgIGRweSwgY29uZmlnLCBh
dHRyaWJfbGlzdCk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7CiAK
ICAgICBEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGRweSk7CiAgICAg
Q29uZmlnICpjb25maWd1cmF0aW9uID0gc3RhdGljX2Nhc3Q8Q29uZmlnKj4oY29uZmlnKTsKQEAg
LTI3OSw3ICsyODUsNyBAQCBFR0xTdXJmYWNlIEVHTEFQSUVOVFJZIENyZWF0ZVBidWZmZXJTdXJm
YWNlKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBjbwogICAgIEVycm9yIGVycm9y
ID0gVmFsaWRhdGVDcmVhdGVQYnVmZmVyU3VyZmFjZShkaXNwbGF5LCBjb25maWd1cmF0aW9uLCBh
dHRyaWJ1dGVzKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0
R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAg
ICAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOwogICAgIH0KIApAQCAtMjg3LDcgKzI5Myw3IEBA
IEVHTFN1cmZhY2UgRUdMQVBJRU5UUlkgQ3JlYXRlUGJ1ZmZlclN1cmZhY2UoRUdMRGlzcGxheSBk
cHksIEVHTENvbmZpZyBjb25maWcsIGNvCiAgICAgZXJyb3IgPSBkaXNwbGF5LT5jcmVhdGVQYnVm
ZmVyU3VyZmFjZShjb25maWd1cmF0aW9uLCBhdHRyaWJ1dGVzLCAmc3VyZmFjZSk7CiAgICAgaWYg
KGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsK
KyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfTk9f
U1VSRkFDRTsKICAgICB9CiAKQEAgLTI5OCw2ICszMDQsNyBAQCBFR0xTdXJmYWNlIEVHTEFQSUVO
VFJZIENyZWF0ZVBpeG1hcFN1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcs
IEVHTAogewogICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xDb25maWcg
Y29uZmlnID0gMHglMC44cCwgRUdMTmF0aXZlUGl4bWFwVHlwZSBwaXhtYXAgPSAweCUwLjhwLCAi
CiAgICAgICAgICAgImNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QgPSAweCUwLjhwKSIsIGRweSwg
Y29uZmlnLCBwaXhtYXAsIGF0dHJpYl9saXN0KTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1
cnJlbnRUaHJlYWQoKTsKIAogICAgIERpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxEaXNw
bGF5Kj4oZHB5KTsKICAgICBDb25maWcgKmNvbmZpZ3VyYXRpb24gPSBzdGF0aWNfY2FzdDxDb25m
aWcqPihjb25maWcpOwpAQCAtMzA1LDE5ICszMTIsMjAgQEAgRUdMU3VyZmFjZSBFR0xBUElFTlRS
WSBDcmVhdGVQaXhtYXBTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBF
R0wKICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlQ29uZmlnKGRpc3BsYXksIGNvbmZpZ3VyYXRp
b24pOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxF
cnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICBy
ZXR1cm4gRUdMX05PX1NVUkZBQ0U7CiAgICAgfQogCiAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8v
IEZJWE1FCiAKLSAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOworICAgIHRo
cmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKICAgICByZXR1cm4gRUdMX05PX1NV
UkZBQ0U7CiB9CiAKIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgRGVzdHJveVN1cmZhY2UoRUdMRGlz
cGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSkKIHsKICAgICBFVkVOVCgiKEVHTERpc3BsYXkg
ZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44cCkiLCBkcHksIHN1cmZh
Y2UpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgRGlz
cGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PERpc3BsYXkqPihkcHkpOwogICAgIFN1cmZhY2Ug
KmVnbFN1cmZhY2UgPSBzdGF0aWNfY2FzdDxTdXJmYWNlKj4oc3VyZmFjZSk7CkBAIC0zMjUsMTkg
KzMzMywxOSBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIERlc3Ryb3lTdXJmYWNlKEVHTERpc3Bs
YXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UpCiAgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZVN1
cmZhY2UoZGlzcGxheSwgZWdsU3VyZmFjZSk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAg
ICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRF
cnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCiAgICAgaWYg
KHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJv
cihFcnJvcihFR0xfQkFEX1NVUkZBQ0UpKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJv
cihFR0xfQkFEX1NVUkZBQ0UpKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAK
ICAgICBkaXNwbGF5LT5kZXN0cm95U3VyZmFjZSgoU3VyZmFjZSopc3VyZmFjZSk7CiAKLSAgICBT
ZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOworICAgIHRocmVhZC0+c2V0RXJyb3Io
RXJyb3IoRUdMX1NVQ0NFU1MpKTsKICAgICByZXR1cm4gRUdMX1RSVUU7CiB9CiAKQEAgLTM0NSw2
ICszNTMsNyBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFF1ZXJ5U3VyZmFjZShFR0xEaXNwbGF5
IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYQogewogICAgIEVWRU5UKCIoRUdMRGlz
cGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhwLCBFR0xpbnQg
YXR0cmlidXRlID0gJWQsIEVHTGludCAqdmFsdWUgPSAweCUwLjhwKSIsCiAgICAgICAgICAgZHB5
LCBzdXJmYWNlLCBhdHRyaWJ1dGUsIHZhbHVlKTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1
cnJlbnRUaHJlYWQoKTsKIAogICAgIERpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxEaXNw
bGF5Kj4oZHB5KTsKICAgICBTdXJmYWNlICplZ2xTdXJmYWNlID0gKFN1cmZhY2UqKXN1cmZhY2U7
CkBAIC0zNTIsMTMgKzM2MSwxMyBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFF1ZXJ5U3VyZmFj
ZShFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYQogICAgIEVycm9y
IGVycm9yID0gVmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2UpOwogICAgIGlmIChl
cnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7Cisg
ICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNF
OwogICAgIH0KIAogICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFKQogICAgIHsKLSAg
ICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9TVVJGQUNFKSk7CisgICAgICAgIHRo
cmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9TVVJGQUNFKSk7CiAgICAgICAgIHJldHVybiBF
R0xfRkFMU0U7CiAgICAgfQogCkBAIC00MTUsNyArNDI0LDcgQEAgRUdMQm9vbGVhbiBFR0xBUElF
TlRSWSBRdWVyeVN1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdM
aW50IGEKICAgICAgIGNhc2UgRUdMX1BPU1RfU1VCX0JVRkZFUl9TVVBQT1JURURfTlY6CiAgICAg
ICAgIGlmICghZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygpLnBvc3RTdWJCdWZmZXIpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFKSk7
CisgICAgICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFKSk7
CiAgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgICAgICB9CiAgICAgICAgICp2YWx1
ZSA9IGVnbFN1cmZhY2UtPmlzUG9zdFN1YkJ1ZmZlclN1cHBvcnRlZCgpOwpAQCAtNDIzLDcgKzQz
Miw3IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgUXVlcnlTdXJmYWNlKEVHTERpc3BsYXkgZHB5
LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBhCiAgICAgICBjYXNlIEVHTF9GSVhFRF9TSVpF
X0FOR0xFOgogICAgICAgICBpZiAoIWRpc3BsYXktPmdldEV4dGVuc2lvbnMoKS53aW5kb3dGaXhl
ZFNpemUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9C
QURfQVRUUklCVVRFKSk7CisgICAgICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9C
QURfQVRUUklCVVRFKSk7CiAgICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgICAgICB9
CiAgICAgICAgICp2YWx1ZSA9IGVnbFN1cmZhY2UtPmlzRml4ZWRTaXplKCk7CkBAIC00MzEsNyAr
NDQwLDcgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBRdWVyeVN1cmZhY2UoRUdMRGlzcGxheSBk
cHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGEKICAgICAgIGNhc2UgRUdMX0ZMRVhJQkxF
X1NVUkZBQ0VfQ09NUEFUSUJJTElUWV9TVVBQT1JURURfQU5HTEU6CiAgICAgICAgICAgaWYgKCFk
aXNwbGF5LT5nZXRFeHRlbnNpb25zKCkuZmxleGlibGVTdXJmYWNlQ29tcGF0aWJpbGl0eSkKICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKAorICAgICAgICAgICAgICB0
aHJlYWQtPnNldEVycm9yKAogICAgICAgICAgICAgICAgICAgRXJyb3IoRUdMX0JBRF9BVFRSSUJV
VEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAiRUdMX0ZMRVhJQkxFX1NVUkZBQ0VfQ09NUEFU
SUJJTElUWV9TVVBQT1JURURfQU5HTEUgY2Fubm90IGJlIHVzZWQgd2l0aG91dCAiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAiRUdMX0FOR0xFX2ZsZXhpYmxlX3N1cmZhY2VfY29tcGF0aWJpbGl0
eSBzdXBwb3J0LiIpKTsKQEAgLTQ0Miw5ICs0NTEsOSBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZ
IFF1ZXJ5U3VyZmFjZShFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQg
YQogICAgICAgY2FzZSBFR0xfU1VSRkFDRV9PUklFTlRBVElPTl9BTkdMRToKICAgICAgICAgICBp
ZiAoIWRpc3BsYXktPmdldEV4dGVuc2lvbnMoKS5zdXJmYWNlT3JpZW50YXRpb24pCiAgICAgICAg
ICAgewotICAgICAgICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVU
RSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9TVVJGQUNFX09SSUVO
VEFUSU9OX0FOR0xFIGNhbm5vdCBiZSBxdWVyaWVkIHdpdGhvdXQgIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRUdMX0FOR0xFX3N1cmZhY2Vfb3JpZW50YXRpb24gc3VwcG9y
dC4iKSk7CisgICAgICAgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9BVFRS
SUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9TVVJGQUNF
X09SSUVOVEFUSU9OX0FOR0xFIGNhbm5vdCBiZSBxdWVyaWVkIHdpdGhvdXQgIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfQU5HTEVfc3VyZmFjZV9vcmllbnRhdGlv
biBzdXBwb3J0LiIpKTsKICAgICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICAgICAg
ICB9CiAgICAgICAgICAgKnZhbHVlID0gZWdsU3VyZmFjZS0+Z2V0T3JpZW50YXRpb24oKTsKQEAg
LTQ1MiwxOSArNDYxLDE5IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgUXVlcnlTdXJmYWNlKEVH
TERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGludCBhCiAgICAgICBjYXNlIEVH
TF9ESVJFQ1RfQ09NUE9TSVRJT05fQU5HTEU6CiAgICAgICAgICAgaWYgKCFkaXNwbGF5LT5nZXRF
eHRlbnNpb25zKCkuZGlyZWN0Q29tcG9zaXRpb24pCiAgICAgICAgICAgewotICAgICAgICAgICAg
ICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVURSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkVHTF9ESVJFQ1RfQ09NUE9TSVRJT05fQU5HTEUgY2Fubm90
IGJlIHVzZWQgd2l0aG91dCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJF
R0xfQU5HTEVfZGlyZWN0X2NvbXBvc2l0aW9uIHN1cHBvcnQuIikpOworICAgICAgICAgICAgICB0
aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJFR0xfRElSRUNUX0NPTVBPU0lUSU9OX0FOR0xFIGNhbm5v
dCBiZSB1c2VkIHdpdGhvdXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJFR0xfQU5HTEVfZGlyZWN0X2NvbXBvc2l0aW9uIHN1cHBvcnQuIikpOwogICAgICAgICAgICAg
ICByZXR1cm4gRUdMX0ZBTFNFOwogICAgICAgICAgIH0KICAgICAgICAgICAqdmFsdWUgPSBlZ2xT
dXJmYWNlLT5kaXJlY3RDb21wb3NpdGlvbigpOwogICAgICAgICAgIGJyZWFrOwogICAgICAgZGVm
YXVsdDoKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUpKTsK
LSAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVy
cm9yKEVHTF9CQURfQVRUUklCVVRFKSk7CisgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAg
ICB9CiAKLSAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOworICAgIHRocmVh
ZC0+c2V0RXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKICAgICByZXR1cm4gRUdMX1RSVUU7CiB9
CiAKQEAgLTQ3Miw2ICs0ODEsNyBAQCBFR0xDb250ZXh0IEVHTEFQSUVOVFJZIENyZWF0ZUNvbnRl
eHQoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVHTENvbnRleAogewogICAgIEVW
RU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xDb25maWcgY29uZmlnID0gMHglMC44
cCwgRUdMQ29udGV4dCBzaGFyZV9jb250ZXh0ID0gMHglMC44cCwgIgogICAgICAgICAgICJjb25z
dCBFR0xpbnQgKmF0dHJpYl9saXN0ID0gMHglMC44cCkiLCBkcHksIGNvbmZpZywgc2hhcmVfY29u
dGV4dCwgYXR0cmliX2xpc3QpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVh
ZCgpOwogCiAgICAgRGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PERpc3BsYXkqPihkcHkp
OwogICAgIENvbmZpZyAqY29uZmlndXJhdGlvbiA9IHN0YXRpY19jYXN0PENvbmZpZyo+KGNvbmZp
Zyk7CkBAIC00ODEsNyArNDkxLDcgQEAgRUdMQ29udGV4dCBFR0xBUElFTlRSWSBDcmVhdGVDb250
ZXh0KEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBFR0xDb250ZXgKICAgICBFcnJv
ciBlcnJvciA9IFZhbGlkYXRlQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25maWd1cmF0aW9uLCBz
aGFyZWRHTENvbnRleHQsIGF0dHJpYnV0ZXMpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAg
ICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0
RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX05PX0NPTlRFWFQ7CiAgICAgfQogCkBA
IC00ODksMTcgKzQ5OSwxOCBAQCBFR0xDb250ZXh0IEVHTEFQSUVOVFJZIENyZWF0ZUNvbnRleHQo
RUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVHTENvbnRleAogICAgIGVycm9yID0g
ZGlzcGxheS0+Y3JlYXRlQ29udGV4dChjb25maWd1cmF0aW9uLCBzaGFyZWRHTENvbnRleHQsIGF0
dHJpYnV0ZXMsICZjb250ZXh0KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAg
ICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVy
cm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9OT19DT05URVhUOwogICAgIH0KIAotICAgIFNldEds
b2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJv
cihFR0xfU1VDQ0VTUykpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFR0xDb250ZXh0Pihjb250
ZXh0KTsKIH0KIAogRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBEZXN0cm95Q29udGV4dChFR0xEaXNw
bGF5IGRweSwgRUdMQ29udGV4dCBjdHgpCiB7CiAgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9
IDB4JTAuOHAsIEVHTENvbnRleHQgY3R4ID0gMHglMC44cCkiLCBkcHksIGN0eCk7CisgICAgVGhy
ZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7CiAKICAgICBEaXNwbGF5ICpkaXNwbGF5
ID0gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGRweSk7CiAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQg
PSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCo+KGN0eCk7CkBAIC01MDcsMjUgKzUxOCwyNCBAQCBF
R0xCb29sZWFuIEVHTEFQSUVOVFJZIERlc3Ryb3lDb250ZXh0KEVHTERpc3BsYXkgZHB5LCBFR0xD
b250ZXh0IGN0eCkKICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlQ29udGV4dChkaXNwbGF5LCBj
b250ZXh0KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xv
YmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAg
ICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKICAgICBpZiAoY3R4ID09IEVHTF9OT19DT05U
RVhUKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9DT05URVhU
KSk7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9DT05URVhUKSk7CiAg
ICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCi0gICAgaWYgKGNvbnRleHQgPT0gR2V0
R2xvYmFsQ29udGV4dCgpKQorICAgIGlmIChjb250ZXh0ID09IHRocmVhZC0+Z2V0Q29udGV4dCgp
KQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRGlzcGxheShOVUxMKTsKLSAgICAgICAgU2V0R2xv
YmFsQ29udGV4dChOVUxMKTsKKyAgICAgICAgdGhyZWFkLT5zZXRDdXJyZW50KG51bGxwdHIsIHRo
cmVhZC0+Z2V0RHJhd1N1cmZhY2UoKSwgdGhyZWFkLT5nZXRSZWFkU3VyZmFjZSgpLCBudWxscHRy
KTsKICAgICB9CiAKICAgICBkaXNwbGF5LT5kZXN0cm95Q29udGV4dChjb250ZXh0KTsKIAotICAg
IFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAgdGhyZWFkLT5zZXRFcnJv
cihFcnJvcihFR0xfU1VDQ0VTUykpOwogICAgIHJldHVybiBFR0xfVFJVRTsKIH0KIApAQCAtNTMz
LDE1NSArNTQzLDU5IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgTWFrZUN1cnJlbnQoRUdMRGlz
cGxheSBkcHksIEVHTFN1cmZhY2UgZHJhdywgRUdMU3VyZmFjZSByCiB7CiAgICAgRVZFTlQoIihF
R0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2UgZHJhdyA9IDB4JTAuOHAsIEVHTFN1
cmZhY2UgcmVhZCA9IDB4JTAuOHAsIEVHTENvbnRleHQgY3R4ID0gMHglMC44cCkiLAogICAgICAg
ICAgIGRweSwgZHJhdywgcmVhZCwgY3R4KTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1cnJl
bnRUaHJlYWQoKTsKIAogICAgIERpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxEaXNwbGF5
Kj4oZHB5KTsKICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IHN0YXRpY19jYXN0PGdsOjpDb250
ZXh0Kj4oY3R4KTsKIAotICAgIC8vIElmIGN0eCBpcyBFR0xfTk9fQ09OVEVYVCBhbmQgZWl0aGVy
IGRyYXcgb3IgcmVhZCBhcmUgbm90IEVHTF9OT19TVVJGQUNFLCBhbiBFR0xfQkFEX01BVENICi0g
ICAgLy8gZXJyb3IgaXMgZ2VuZXJhdGVkLgotICAgIGlmIChjdHggPT0gRUdMX05PX0NPTlRFWFQg
JiYgKGRyYXcgIT0gRUdMX05PX1NVUkZBQ0UgfHwgcmVhZCAhPSBFR0xfTk9fU1VSRkFDRSkpCi0g
ICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX01BVENIKSk7Ci0gICAg
ICAgIHJldHVybiBFR0xfRkFMU0U7Ci0gICAgfQotCi0gICAgaWYgKGN0eCAhPSBFR0xfTk9fQ09O
VEVYVCAmJiBkcmF3ID09IEVHTF9OT19TVVJGQUNFICYmIHJlYWQgPT0gRUdMX05PX1NVUkZBQ0Up
Ci0gICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX01BVENIKSk7Ci0g
ICAgICAgIHJldHVybiBFR0xfRkFMU0U7Ci0gICAgfQotCi0gICAgLy8gSWYgZWl0aGVyIG9mIGRy
YXcgb3IgcmVhZCBpcyBhIHZhbGlkIHN1cmZhY2UgYW5kIHRoZSBvdGhlciBpcyBFR0xfTk9fU1VS
RkFDRSwgYW4KLSAgICAvLyBFR0xfQkFEX01BVENIIGVycm9yIGlzIGdlbmVyYXRlZC4KLSAgICBp
ZiAoKHJlYWQgPT0gRUdMX05PX1NVUkZBQ0UpICE9IChkcmF3ID09IEVHTF9OT19TVVJGQUNFKSkK
LSAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKAotICAgICAgICAgICAgRUdMX0JB
RF9NQVRDSCwgInJlYWQgYW5kIGRyYXcgbXVzdCBib3RoIGJlIHZhbGlkIHN1cmZhY2VzLCBvciBi
b3RoIGJlIEVHTF9OT19TVVJGQUNFIikpOwotICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwotICAg
IH0KLQotICAgIGlmIChkcHkgPT0gRUdMX05PX0RJU1BMQVkgfHwgIURpc3BsYXk6OmlzVmFsaWRE
aXNwbGF5KGRpc3BsYXkpKQotICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdM
X0JBRF9ESVNQTEFZLCAiJ2RweScgbm90IGEgdmFsaWQgRUdMRGlzcGxheSBoYW5kbGUiKSk7Ci0g
ICAgICAgIHJldHVybiBFR0xfRkFMU0U7Ci0gICAgfQotCi0gICAgLy8gRUdMIDEuNSBzcGVjOiBk
cHkgY2FuIGJlIHVuaW5pdGlhbGl6ZWQgaWYgYWxsIG90aGVyIHBhcmFtZXRlcnMgYXJlIG51bGwK
LSAgICBpZiAoIWRpc3BsYXktPmlzSW5pdGlhbGl6ZWQoKSAmJiAoY3R4ICE9IEVHTF9OT19DT05U
RVhUIHx8IGRyYXcgIT0gRUdMX05PX1NVUkZBQ0UgfHwgcmVhZCAhPSBFR0xfTk9fU1VSRkFDRSkp
Ci0gICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfTk9UX0lOSVRJQUxJWkVE
LCAiJ2RweScgbm90IGluaXRpYWxpemVkIikpOwotICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwot
ICAgIH0KLQotICAgIGlmIChjdHggIT0gRUdMX05PX0NPTlRFWFQpCi0gICAgewotICAgICAgICBF
cnJvciBlcnJvciA9IFZhbGlkYXRlQ29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgU2V0R2xvYmFsRXJy
b3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIGlmIChkaXNwbGF5LT5pc0luaXRpYWxpemVkKCkgJiYgZGlzcGxheS0+dGVzdERl
dmljZUxvc3QoKSkKKyAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlTWFrZUN1cnJlbnQoZGlzcGxh
eSwgZHJhdywgcmVhZCwgY29udGV4dCk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7
Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9DT05URVhUX0xPU1QpKTsKKyAgICAg
ICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAg
ICAgfQogCi0gICAgU3VyZmFjZSAqZHJhd1N1cmZhY2UgPSBzdGF0aWNfY2FzdDxTdXJmYWNlKj4o
ZHJhdyk7Ci0gICAgaWYgKGRyYXcgIT0gRUdMX05PX1NVUkZBQ0UpCi0gICAgewotICAgICAgICBF
cnJvciBlcnJvciA9IFZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBkcmF3U3VyZmFjZSk7Ci0gICAg
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFNldEdsb2Jh
bEVycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7Ci0gICAgICAgIH0K
LSAgICB9Ci0KICAgICBTdXJmYWNlICpyZWFkU3VyZmFjZSA9IHN0YXRpY19jYXN0PFN1cmZhY2Uq
PihyZWFkKTsKLSAgICBpZiAocmVhZCAhPSBFR0xfTk9fU1VSRkFDRSkKLSAgICB7Ci0gICAgICAg
IEVycm9yIGVycm9yID0gVmFsaWRhdGVTdXJmYWNlKGRpc3BsYXksIHJlYWRTdXJmYWNlKTsKLSAg
ICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAgICAgU2V0R2xv
YmFsRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIGlmIChyZWFkU3VyZmFjZSkKLSAgICB7Ci0gICAgICAgIEVycm9yIHJl
YWRDb21wYXRFcnJvciA9Ci0gICAgICAgICAgICBWYWxpZGF0ZUNvbXBhdGlibGVDb25maWdzKGRp
c3BsYXksIHJlYWRTdXJmYWNlLT5nZXRDb25maWcoKSwgcmVhZFN1cmZhY2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldENvbmZpZygpLCByZWFkU3Vy
ZmFjZS0+Z2V0VHlwZSgpKTsKLSAgICAgICAgaWYgKHJlYWRDb21wYXRFcnJvci5pc0Vycm9yKCkp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKHJlYWRDb21wYXRFcnJvcik7
Ci0gICAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
aWYgKGRyYXcgIT0gcmVhZCkKLSAgICB7Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBG
SVhNRQotCi0gICAgICAgIGlmIChkcmF3U3VyZmFjZSkKLSAgICAgICAgewotICAgICAgICAgICAg
RXJyb3IgZHJhd0NvbXBhdEVycm9yID0KLSAgICAgICAgICAgICAgICBWYWxpZGF0ZUNvbXBhdGli
bGVDb25maWdzKGRpc3BsYXksIGRyYXdTdXJmYWNlLT5nZXRDb25maWcoKSwgZHJhd1N1cmZhY2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRD
b25maWcoKSwgZHJhd1N1cmZhY2UtPmdldFR5cGUoKSk7Ci0gICAgICAgICAgICBpZiAoZHJhd0Nv
bXBhdEVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTZXRH
bG9iYWxFcnJvcihkcmF3Q29tcGF0RXJyb3IpOwotICAgICAgICAgICAgICAgIHJldHVybiBFR0xf
RkFMU0U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KKyAgICBTdXJmYWNlICpk
cmF3U3VyZmFjZSAgID0gc3RhdGljX2Nhc3Q8U3VyZmFjZSAqPihkcmF3KTsKICAgICBFcnJvciBt
YWtlQ3VycmVudEVycm9yID0gZGlzcGxheS0+bWFrZUN1cnJlbnQoZHJhd1N1cmZhY2UsIHJlYWRT
dXJmYWNlLCBjb250ZXh0KTsKICAgICBpZiAobWFrZUN1cnJlbnRFcnJvci5pc0Vycm9yKCkpCiAg
ICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihtYWtlQ3VycmVudEVycm9yKTsKKyAgICAgICAg
dGhyZWFkLT5zZXRFcnJvcihtYWtlQ3VycmVudEVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9G
QUxTRTsKICAgICB9CiAKLSAgICBnbDo6Q29udGV4dCAqcHJldmlvdXNDb250ZXh0ID0gR2V0R2xv
YmFsQ29udGV4dCgpOwotCi0gICAgU2V0R2xvYmFsRGlzcGxheShkaXNwbGF5KTsKLSAgICBTZXRH
bG9iYWxEcmF3U3VyZmFjZShkcmF3U3VyZmFjZSk7Ci0gICAgU2V0R2xvYmFsUmVhZFN1cmZhY2Uo
cmVhZFN1cmZhY2UpOwotICAgIFNldEdsb2JhbENvbnRleHQoY29udGV4dCk7CisgICAgZ2w6OkNv
bnRleHQgKnByZXZpb3VzQ29udGV4dCA9IHRocmVhZC0+Z2V0Q29udGV4dCgpOworICAgIHRocmVh
ZC0+c2V0Q3VycmVudChkaXNwbGF5LCBkcmF3U3VyZmFjZSwgcmVhZFN1cmZhY2UsIGNvbnRleHQp
OwogCiAgICAgLy8gUmVsZWFzZSB0aGUgc3VyZmFjZSBmcm9tIHRoZSBwcmV2aW91c2x5LWN1cnJl
bnQgY29udGV4dCwgdG8gYWxsb3cKICAgICAvLyBkZXN0cm95ZWQgc3VyZmFjZXMgdG8gZGVsZXRl
IHRoZW1zZWx2ZXMuCiAgICAgaWYgKHByZXZpb3VzQ29udGV4dCAhPSBudWxscHRyICYmIGNvbnRl
eHQgIT0gcHJldmlvdXNDb250ZXh0KQogICAgIHsKLSAgICAgICAgcHJldmlvdXNDb250ZXh0LT5y
ZWxlYXNlU3VyZmFjZSgpOworICAgICAgICBwcmV2aW91c0NvbnRleHQtPnJlbGVhc2VTdXJmYWNl
KGRpc3BsYXkpOwogICAgIH0KIAotICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNT
KSk7CisgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOwogICAgIHJldHVy
biBFR0xfVFJVRTsKIH0KIAogRUdMU3VyZmFjZSBFR0xBUElFTlRSWSBHZXRDdXJyZW50U3VyZmFj
ZShFR0xpbnQgcmVhZGRyYXcpCiB7CiAgICAgRVZFTlQoIihFR0xpbnQgcmVhZGRyYXcgPSAlZCki
LCByZWFkZHJhdyk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7CiAK
ICAgICBpZiAocmVhZGRyYXcgPT0gRUdMX1JFQUQpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxF
cnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOwotICAgICAgICByZXR1cm4gR2V0R2xvYmFsUmVhZFN1
cmZhY2UoKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOwor
ICAgICAgICByZXR1cm4gdGhyZWFkLT5nZXRSZWFkU3VyZmFjZSgpOwogICAgIH0KICAgICBlbHNl
IGlmIChyZWFkZHJhdyA9PSBFR0xfRFJBVykKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9y
KEVycm9yKEVHTF9TVUNDRVNTKSk7Ci0gICAgICAgIHJldHVybiBHZXRHbG9iYWxEcmF3U3VyZmFj
ZSgpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAg
ICAgIHJldHVybiB0aHJlYWQtPmdldERyYXdTdXJmYWNlKCk7CiAgICAgfQogICAgIGVsc2UKICAg
ICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfUEFSQU1FVEVSKSk7Cisg
ICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9QQVJBTUVURVIpKTsKICAgICAg
ICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOwogICAgIH0KIH0KQEAgLTY4OSwxMCArNjAzLDExIEBA
IEVHTFN1cmZhY2UgRUdMQVBJRU5UUlkgR2V0Q3VycmVudFN1cmZhY2UoRUdMaW50IHJlYWRkcmF3
KQogRUdMRGlzcGxheSBFR0xBUElFTlRSWSBHZXRDdXJyZW50RGlzcGxheSh2b2lkKQogewogICAg
IEVWRU5UKCIoKSIpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwog
Ci0gICAgRUdMRGlzcGxheSBkcHkgPSBHZXRHbG9iYWxEaXNwbGF5KCk7CisgICAgRUdMRGlzcGxh
eSBkcHkgPSB0aHJlYWQtPmdldERpc3BsYXkoKTsKIAotICAgIFNldEdsb2JhbEVycm9yKEVycm9y
KEVHTF9TVUNDRVNTKSk7CisgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykp
OwogICAgIHJldHVybiBkcHk7CiB9CiAKQEAgLTcwMCw2ICs2MTUsNyBAQCBFR0xCb29sZWFuIEVH
TEFQSUVOVFJZIFF1ZXJ5Q29udGV4dChFR0xEaXNwbGF5IGRweSwgRUdMQ29udGV4dCBjdHgsIEVH
TGludCBhdHRyaQogewogICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xD
b250ZXh0IGN0eCA9IDB4JTAuOHAsIEVHTGludCBhdHRyaWJ1dGUgPSAlZCwgRUdMaW50ICp2YWx1
ZSA9IDB4JTAuOHApIiwKICAgICAgICAgICBkcHksIGN0eCwgYXR0cmlidXRlLCB2YWx1ZSk7Cisg
ICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7CiAKICAgICBEaXNwbGF5ICpk
aXNwbGF5ID0gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGRweSk7CiAgICAgZ2w6OkNvbnRleHQgKmNv
bnRleHQgPSBzdGF0aWNfY2FzdDxnbDo6Q29udGV4dCo+KGN0eCk7CkBAIC03MDcsNyArNjIzLDcg
QEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBRdWVyeUNvbnRleHQoRUdMRGlzcGxheSBkcHksIEVH
TENvbnRleHQgY3R4LCBFR0xpbnQgYXR0cmkKICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlQ29u
dGV4dChkaXNwbGF5LCBjb250ZXh0KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsK
LSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9y
KGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKQEAgLTcyNiwyNCAr
NjQyLDI1IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgUXVlcnlDb250ZXh0KEVHTERpc3BsYXkg
ZHB5LCBFR0xDb250ZXh0IGN0eCwgRUdMaW50IGF0dHJpCiAgICAgICAgICp2YWx1ZSA9IGNvbnRl
eHQtPmdldFJlbmRlckJ1ZmZlcigpOwogICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFKSk7Ci0gICAgICAg
IHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xf
QkFEX0FUVFJJQlVURSkpOworICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCi0g
ICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKKyAgICB0aHJlYWQtPnNldEVy
cm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CiAgICAgcmV0dXJuIEVHTF9UUlVFOwogfQogCiBFR0xC
b29sZWFuIEVHTEFQSUVOVFJZIFdhaXRHTCh2b2lkKQogewogICAgIEVWRU5UKCIoKSIpOworICAg
IFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCi0gICAgRGlzcGxheSAqZGlz
cGxheSA9IEdldEdsb2JhbERpc3BsYXkoKTsKKyAgICBEaXNwbGF5ICpkaXNwbGF5ID0gdGhyZWFk
LT5nZXREaXNwbGF5KCk7CiAKICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlRGlzcGxheShkaXNw
bGF5KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFs
RXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAg
cmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKQEAgLTc1Miw0NyArNjY5LDQ5IEBAIEVHTEJvb2xl
YW4gRUdMQVBJRU5UUlkgV2FpdEdMKHZvaWQpCiAgICAgZXJyb3IgPSBkaXNwbGF5LT53YWl0Q2xp
ZW50KCk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2Jh
bEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAg
IHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCi0gICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdM
X1NVQ0NFU1MpKTsKKyAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CiAg
ICAgcmV0dXJuIEVHTF9UUlVFOwogfQogCiBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFdhaXROYXRp
dmUoRUdMaW50IGVuZ2luZSkKIHsKICAgICBFVkVOVCgiKEVHTGludCBlbmdpbmUgPSAlZCkiLCBl
bmdpbmUpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCi0gICAg
RGlzcGxheSAqZGlzcGxheSA9IEdldEdsb2JhbERpc3BsYXkoKTsKKyAgICBEaXNwbGF5ICpkaXNw
bGF5ID0gdGhyZWFkLT5nZXREaXNwbGF5KCk7CiAKICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRl
RGlzcGxheShkaXNwbGF5KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAg
ICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9y
KTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKICAgICBpZiAoZW5naW5lICE9
IEVHTF9DT1JFX05BVElWRV9FTkdJTkUpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcigK
KyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcigKICAgICAgICAgICAgIEVycm9yKEVHTF9CQURfUEFS
QU1FVEVSLCAidGhlICdlbmdpbmUnIHBhcmFtZXRlciBoYXMgYW4gdW5yZWNvZ25pemVkIHZhbHVl
IikpOwogICAgIH0KIAotICAgIGVycm9yID0gZGlzcGxheS0+d2FpdE5hdGl2ZShlbmdpbmUsIEdl
dEdsb2JhbERyYXdTdXJmYWNlKCksIEdldEdsb2JhbFJlYWRTdXJmYWNlKCkpOworICAgIGVycm9y
ID0gZGlzcGxheS0+d2FpdE5hdGl2ZShlbmdpbmUsIHRocmVhZC0+Z2V0RHJhd1N1cmZhY2UoKSwg
dGhyZWFkLT5nZXRSZWFkU3VyZmFjZSgpKTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAg
IHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVy
cm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKLSAgICBTZXRH
bG9iYWxFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOworICAgIHRocmVhZC0+c2V0RXJyb3IoRXJy
b3IoRUdMX1NVQ0NFU1MpKTsKICAgICByZXR1cm4gRUdMX1RSVUU7CiB9CiAKIEVHTEJvb2xlYW4g
RUdMQVBJRU5UUlkgU3dhcEJ1ZmZlcnMoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFj
ZSkKIHsKICAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBz
dXJmYWNlID0gMHglMC44cCkiLCBkcHksIHN1cmZhY2UpOworICAgIFRocmVhZCAqdGhyZWFkID0g
R2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgRGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0
PERpc3BsYXkqPihkcHkpOwogICAgIFN1cmZhY2UgKmVnbFN1cmZhY2UgPSAoU3VyZmFjZSopc3Vy
ZmFjZTsKQEAgLTgwMCwzNiArNzE5LDM3IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgU3dhcEJ1
ZmZlcnMoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSkKICAgICBFcnJvciBlcnJv
ciA9IFZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBlZ2xTdXJmYWNlKTsKICAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAg
ICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAg
ICB9CiAKICAgICBpZiAoZGlzcGxheS0+dGVzdERldmljZUxvc3QoKSkKICAgICB7Ci0gICAgICAg
IFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9DT05URVhUX0xPU1QpKTsKKyAgICAgICAgdGhyZWFk
LT5zZXRFcnJvcihFcnJvcihFR0xfQ09OVEVYVF9MT1NUKSk7CiAgICAgICAgIHJldHVybiBFR0xf
RkFMU0U7CiAgICAgfQogCiAgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NVUkZBQ0UpCiAgICAg
ewotICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX1NVUkZBQ0UpKTsKKyAgICAg
ICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfQkFEX1NVUkZBQ0UpKTsKICAgICAgICAgcmV0
dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKLSAgICBlcnJvciA9IGVnbFN1cmZhY2UtPnN3YXAoKTsK
KyAgICBlcnJvciA9IGVnbFN1cmZhY2UtPnN3YXAoKmRpc3BsYXkpOwogICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAg
IHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAg
IH0KIAotICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAgdGhyZWFk
LT5zZXRFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOwogICAgIHJldHVybiBFR0xfVFJVRTsKIH0K
IAogRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBDb3B5QnVmZmVycyhFR0xEaXNwbGF5IGRweSwgRUdM
U3VyZmFjZSBzdXJmYWNlLCBFR0xOYXRpdmVQaXhtYXBUeXBlIHRhcmdldCkKIHsKICAgICBFVkVO
VCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44
cCwgRUdMTmF0aXZlUGl4bWFwVHlwZSB0YXJnZXQgPSAweCUwLjhwKSIsIGRweSwgc3VyZmFjZSwg
dGFyZ2V0KTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAg
IERpc3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxEaXNwbGF5Kj4oZHB5KTsKICAgICBTdXJm
YWNlICplZ2xTdXJmYWNlID0gc3RhdGljX2Nhc3Q8U3VyZmFjZSo+KHN1cmZhY2UpOwpAQCAtODM3
LDE5ICs3NTcsMTkgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBDb3B5QnVmZmVycyhFR0xEaXNw
bGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xOYXRpdmUKICAgICBFcnJvciBlcnJvciA9
IFZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBlZ2xTdXJmYWNlKTsKICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0
aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9
CiAKICAgICBpZiAoZGlzcGxheS0+dGVzdERldmljZUxvc3QoKSkKICAgICB7Ci0gICAgICAgIFNl
dEdsb2JhbEVycm9yKEVycm9yKEVHTF9DT05URVhUX0xPU1QpKTsKKyAgICAgICAgdGhyZWFkLT5z
ZXRFcnJvcihFcnJvcihFR0xfQ09OVEVYVF9MT1NUKSk7CiAgICAgICAgIHJldHVybiBFR0xfRkFM
U0U7CiAgICAgfQogCiAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCiAKLSAgICBTZXRH
bG9iYWxFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOworICAgIHRocmVhZC0+c2V0RXJyb3IoRXJy
b3IoRUdMX1NVQ0NFU1MpKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtODU3LDYgKzc3Nyw3IEBA
IEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgQ29weUJ1ZmZlcnMoRUdMRGlzcGxheSBkcHksIEVHTFN1
cmZhY2Ugc3VyZmFjZSwgRUdMTmF0aXZlCiBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIEJpbmRUZXhJ
bWFnZShFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYnVmZmVyKQog
ewogICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdXJmYWNlIHN1cmZh
Y2UgPSAweCUwLjhwLCBFR0xpbnQgYnVmZmVyID0gJWQpIiwgZHB5LCBzdXJmYWNlLCBidWZmZXIp
OworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgRGlzcGxh
eSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PERpc3BsYXkqPihkcHkpOwogICAgIFN1cmZhY2UgKmVn
bFN1cmZhY2UgPSBzdGF0aWNfY2FzdDxTdXJmYWNlKj4oc3VyZmFjZSk7CkBAIC04NjQsMzUgKzc4
NSwzNSBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIEJpbmRUZXhJbWFnZShFR0xEaXNwbGF5IGRw
eSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYgogICAgIEVycm9yIGVycm9yID0gVmFsaWRh
dGVTdXJmYWNlKGRpc3BsYXksIGVnbFN1cmZhY2UpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
CiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+
c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAogICAg
IGlmIChidWZmZXIgIT0gRUdMX0JBQ0tfQlVGRkVSKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFs
RXJyb3IoRXJyb3IoRUdMX0JBRF9QQVJBTUVURVIpKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJv
cihFcnJvcihFR0xfQkFEX1BBUkFNRVRFUikpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwog
ICAgIH0KIAogICAgIGlmIChzdXJmYWNlID09IEVHTF9OT19TVVJGQUNFIHx8IGVnbFN1cmZhY2Ut
PmdldFR5cGUoKSA9PSBFR0xfV0lORE9XX0JJVCkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVy
cm9yKEVycm9yKEVHTF9CQURfU1VSRkFDRSkpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVy
cm9yKEVHTF9CQURfU1VSRkFDRSkpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0K
IAogICAgIGlmIChlZ2xTdXJmYWNlLT5nZXRCb3VuZFRleHR1cmUoKSkKICAgICB7Ci0gICAgICAg
IFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfQUNDRVNTKSk7CisgICAgICAgIHRocmVhZC0+
c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9BQ0NFU1MpKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxT
RTsKICAgICB9CiAKICAgICBpZiAoZWdsU3VyZmFjZS0+Z2V0VGV4dHVyZUZvcm1hdCgpID09IEVH
TF9OT19URVhUVVJFKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JB
RF9NQVRDSCkpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfTUFUQ0gp
KTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKLSAgICBnbDo6Q29udGV4dCAq
Y29udGV4dCA9IEdldEdsb2JhbENvbnRleHQoKTsKKyAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9
IHRocmVhZC0+Z2V0Q29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKICAgICAgICAg
Z2w6OlRleHR1cmUgKnRleHR1cmVPYmplY3QgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQpOwpAQCAtOTAwLDE5ICs4MjEsMTkgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRS
WSBCaW5kVGV4SW1hZ2UoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50
IGIKIAogICAgICAgICBpZiAodGV4dHVyZU9iamVjdC0+Z2V0SW1tdXRhYmxlRm9ybWF0KCkpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfTUFUQ0gp
KTsKKyAgICAgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9NQVRDSCkpOwog
ICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICAgICAgfQogCiAgICAgICAgIGVycm9y
ID0gZWdsU3VyZmFjZS0+YmluZFRleEltYWdlKHRleHR1cmVPYmplY3QsIGJ1ZmZlcik7CiAgICAg
ICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFNldEdsb2Jh
bEVycm9yKGVycm9yKTsKKyAgICAgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAg
ICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICAgICAgfQogICAgIH0KIAotICAgIFNldEds
b2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJv
cihFR0xfU1VDQ0VTUykpOwogICAgIHJldHVybiBFR0xfVFJVRTsKIH0KIApAQCAtOTIwLDYgKzg0
MSw3IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgU3VyZmFjZUF0dHJpYihFR0xEaXNwbGF5IGRw
eSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQKIHsKICAgICBFVkVOVCgiKEVHTERpc3BsYXkg
ZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNlID0gMHglMC44cCwgRUdMaW50IGF0dHJp
YnV0ZSA9ICVkLCBFR0xpbnQgdmFsdWUgPSAlZCkiLAogICAgICAgICBkcHksIHN1cmZhY2UsIGF0
dHJpYnV0ZSwgdmFsdWUpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgp
OwogCiAgICAgRGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PERpc3BsYXkqPihkcHkpOwog
ICAgIFN1cmZhY2UgKmVnbFN1cmZhY2UgPSBzdGF0aWNfY2FzdDxTdXJmYWNlKj4oc3VyZmFjZSk7
CkBAIC05MjcsMTkgKzg0OSwyMCBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFN1cmZhY2VBdHRy
aWIoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50CiAgICAgRXJyb3Ig
ZXJyb3IgPSBWYWxpZGF0ZVN1cmZhY2UoZGlzcGxheSwgZWdsU3VyZmFjZSk7CiAgICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAg
ICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7
CiAgICAgfQogCiAgICAgVU5JTVBMRU1FTlRFRCgpOyAgIC8vIEZJWE1FCiAKLSAgICBTZXRHbG9i
YWxFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOworICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3Io
RUdMX1NVQ0NFU1MpKTsKICAgICByZXR1cm4gRUdMX1RSVUU7CiB9CiAKIEVHTEJvb2xlYW4gRUdM
QVBJRU5UUlkgUmVsZWFzZVRleEltYWdlKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZh
Y2UsIEVHTGludCBidWZmZXIpCiB7CiAgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAu
OHAsIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAsIEVHTGludCBidWZmZXIgPSAlZCkiLCBk
cHksIHN1cmZhY2UsIGJ1ZmZlcik7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhy
ZWFkKCk7CiAKICAgICBEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8RGlzcGxheSo+KGRw
eSk7CiAgICAgU3VyZmFjZSAqZWdsU3VyZmFjZSA9IHN0YXRpY19jYXN0PFN1cmZhY2UqPihzdXJm
YWNlKTsKQEAgLTk0NywyNSArODcwLDI1IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgUmVsZWFz
ZVRleEltYWdlKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTGluCiAgICAg
RXJyb3IgZXJyb3IgPSBWYWxpZGF0ZVN1cmZhY2UoZGlzcGxheSwgZWdsU3VyZmFjZSk7CiAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9y
KTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xf
RkFMU0U7CiAgICAgfQogCiAgICAgaWYgKGJ1ZmZlciAhPSBFR0xfQkFDS19CVUZGRVIpCiAgICAg
ewotICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX1BBUkFNRVRFUikpOworICAg
ICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfUEFSQU1FVEVSKSk7CiAgICAgICAg
IHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCiAgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NV
UkZBQ0UgfHwgZWdsU3VyZmFjZS0+Z2V0VHlwZSgpID09IEVHTF9XSU5ET1dfQklUKQogICAgIHsK
LSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9TVVJGQUNFKSk7CisgICAgICAg
IHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9TVVJGQUNFKSk7CiAgICAgICAgIHJldHVy
biBFR0xfRkFMU0U7CiAgICAgfQogCiAgICAgaWYgKGVnbFN1cmZhY2UtPmdldFRleHR1cmVGb3Jt
YXQoKSA9PSBFR0xfTk9fVEVYVFVSRSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVy
cm9yKEVHTF9CQURfTUFUQ0gpKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xf
QkFEX01BVENIKSk7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCkBAIC05NzYs
MzMgKzg5OSwzNCBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFJlbGVhc2VUZXhJbWFnZShFR0xE
aXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbgogICAgICAgICBlcnJvciA9IGVn
bFN1cmZhY2UtPnJlbGVhc2VUZXhJbWFnZShidWZmZXIpOwogICAgICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQogICAgICAgICB7Ci0gICAgICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7Cisg
ICAgICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgICAgIHJldHVybiBF
R0xfRkFMU0U7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihF
R0xfU1VDQ0VTUykpOworICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsK
ICAgICByZXR1cm4gRUdMX1RSVUU7CiB9CiAKIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgU3dhcElu
dGVydmFsKEVHTERpc3BsYXkgZHB5LCBFR0xpbnQgaW50ZXJ2YWwpCiB7CiAgICAgRVZFTlQoIihF
R0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTGludCBpbnRlcnZhbCA9ICVkKSIsIGRweSwgaW50
ZXJ2YWwpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAg
RGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PERpc3BsYXkqPihkcHkpOwogCiAgICAgRXJy
b3IgZXJyb3IgPSBWYWxpZGF0ZURpc3BsYXkoZGlzcGxheSk7CiAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhy
ZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQog
Ci0gICAgU3VyZmFjZSAqZHJhd19zdXJmYWNlID0gc3RhdGljX2Nhc3Q8U3VyZmFjZSo+KEdldEds
b2JhbERyYXdTdXJmYWNlKCkpOworICAgIFN1cmZhY2UgKmRyYXdfc3VyZmFjZSA9IHN0YXRpY19j
YXN0PFN1cmZhY2UgKj4odGhyZWFkLT5nZXREcmF3U3VyZmFjZSgpKTsKIAogICAgIGlmIChkcmF3
X3N1cmZhY2UgPT0gTlVMTCkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVH
TF9CQURfU1VSRkFDRSkpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURf
U1VSRkFDRSkpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIApAQCAtMTAxMSw3
ICs5MzUsNyBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFN3YXBJbnRlcnZhbChFR0xEaXNwbGF5
IGRweSwgRUdMaW50IGludGVydmFsKQogCiAgICAgZHJhd19zdXJmYWNlLT5zZXRTd2FwSW50ZXJ2
YWwoY2xhbXBlZEludGVydmFsKTsKIAotICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUND
RVNTKSk7CisgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOwogICAgIHJl
dHVybiBFR0xfVFJVRTsKIH0KIApAQCAtMTAyMCwzMyArOTQ0LDM1IEBAIEVHTEJvb2xlYW4gRUdM
QVBJRU5UUlkgU3dhcEludGVydmFsKEVHTERpc3BsYXkgZHB5LCBFR0xpbnQgaW50ZXJ2YWwpCiBF
R0xCb29sZWFuIEVHTEFQSUVOVFJZIEJpbmRBUEkoRUdMZW51bSBhcGkpCiB7CiAgICAgRVZFTlQo
IihFR0xlbnVtIGFwaSA9IDB4JVgpIiwgYXBpKTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1
cnJlbnRUaHJlYWQoKTsKIAogICAgIHN3aXRjaCAoYXBpKQogICAgIHsKICAgICAgIGNhc2UgRUdM
X09QRU5HTF9BUEk6CiAgICAgICBjYXNlIEVHTF9PUEVOVkdfQVBJOgotICAgICAgICBTZXRHbG9i
YWxFcnJvcihFcnJvcihFR0xfQkFEX1BBUkFNRVRFUikpOwotICAgICAgICByZXR1cm4gRUdMX0ZB
TFNFOyAgIC8vIE5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvbgorICAgICAgICAg
IHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9QQVJBTUVURVIpKTsKKyAgICAgICAgICBy
ZXR1cm4gRUdMX0ZBTFNFOyAgLy8gTm90IHN1cHBvcnRlZCBieSB0aGlzIGltcGxlbWVudGF0aW9u
CiAgICAgICBjYXNlIEVHTF9PUEVOR0xfRVNfQVBJOgogICAgICAgICBicmVhazsKICAgICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfUEFSQU1FVEVSKSk7
Ci0gICAgICAgIHJldHVybiBFR0xfRkFMU0U7CisgICAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihF
cnJvcihFR0xfQkFEX1BBUkFNRVRFUikpOworICAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAg
ICAgfQogCi0gICAgU2V0R2xvYmFsQVBJKGFwaSk7CisgICAgdGhyZWFkLT5zZXRBUEkoYXBpKTsK
IAotICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAgdGhyZWFkLT5z
ZXRFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOwogICAgIHJldHVybiBFR0xfVFJVRTsKIH0KIAog
RUdMZW51bSBFR0xBUElFTlRSWSBRdWVyeUFQSSh2b2lkKQogewogICAgIEVWRU5UKCIoKSIpOwor
ICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCi0gICAgRUdMZW51bSBB
UEkgPSBHZXRHbG9iYWxBUEkoKTsKKyAgICBFR0xlbnVtIEFQSSA9IHRocmVhZC0+Z2V0QVBJKCk7
CiAKLSAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOworICAgIHRocmVhZC0+
c2V0RXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKICAgICByZXR1cm4gQVBJOwogfQogCkBAIC0x
MDU1LDYgKzk4MSw3IEBAIEVHTFN1cmZhY2UgRUdMQVBJRU5UUlkgQ3JlYXRlUGJ1ZmZlckZyb21D
bGllbnRCdWZmZXIoRUdMRGlzcGxheSBkcHksIEVHTGVudW0gYnVmCiAgICAgRVZFTlQoIihFR0xE
aXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTGVudW0gYnVmdHlwZSA9IDB4JVgsIEVHTENsaWVudEJ1
ZmZlciBidWZmZXIgPSAweCUwLjhwLCAiCiAgICAgICAgICAgIkVHTENvbmZpZyBjb25maWcgPSAw
eCUwLjhwLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0ID0gMHglMC44cCkiLAogICAgICAgICAg
IGRweSwgYnVmdHlwZSwgYnVmZmVyLCBjb25maWcsIGF0dHJpYl9saXN0KTsKKyAgICBUaHJlYWQg
KnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAgIERpc3BsYXkgKmRpc3BsYXkgPSBz
dGF0aWNfY2FzdDxEaXNwbGF5Kj4oZHB5KTsKICAgICBDb25maWcgKmNvbmZpZ3VyYXRpb24gPSBz
dGF0aWNfY2FzdDxDb25maWcqPihjb25maWcpOwpAQCAtMTA2MywxNSArOTkwLDE2IEBAIEVHTFN1
cmZhY2UgRUdMQVBJRU5UUlkgQ3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoRUdMRGlzcGxh
eSBkcHksIEVHTGVudW0gYnVmCiAgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZUNyZWF0ZVBidWZm
ZXJGcm9tQ2xpZW50QnVmZmVyKGRpc3BsYXksIGJ1ZnR5cGUsIGJ1ZmZlciwgY29uZmlndXJhdGlv
biwgYXR0cmlidXRlcyk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAg
IFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7
CiAgICAgICAgIHJldHVybiBFR0xfTk9fU1VSRkFDRTsKICAgICB9CiAKICAgICBlZ2w6OlN1cmZh
Y2UgKnN1cmZhY2UgPSBudWxscHRyOwotICAgIGVycm9yID0gZGlzcGxheS0+Y3JlYXRlUGJ1ZmZl
ckZyb21DbGllbnRCdWZmZXIoY29uZmlndXJhdGlvbiwgYnVmZmVyLCBhdHRyaWJ1dGVzLCAmc3Vy
ZmFjZSk7CisgICAgZXJyb3IgPSBkaXNwbGF5LT5jcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZl
cihjb25maWd1cmF0aW9uLCBidWZ0eXBlLCBidWZmZXIsIGF0dHJpYnV0ZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3VyZmFjZSk7CiAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9y
KTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xf
Tk9fU1VSRkFDRTsKICAgICB9CiAKQEAgLTEwODEsMzQgKzEwMDksMzYgQEAgRUdMU3VyZmFjZSBF
R0xBUElFTlRSWSBDcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihFR0xEaXNwbGF5IGRweSwg
RUdMZW51bSBidWYKIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgUmVsZWFzZVRocmVhZCh2b2lkKQog
ewogICAgIEVWRU5UKCIoKSIpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVh
ZCgpOwogCiAgICAgTWFrZUN1cnJlbnQoRUdMX05PX0RJU1BMQVksIEVHTF9OT19DT05URVhULCBF
R0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UpOwogCi0gICAgU2V0R2xvYmFsRXJyb3IoRXJy
b3IoRUdMX1NVQ0NFU1MpKTsKKyAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9TVUNDRVNT
KSk7CiAgICAgcmV0dXJuIEVHTF9UUlVFOwogfQogCiBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFdh
aXRDbGllbnQodm9pZCkKIHsKICAgICBFVkVOVCgiKCkiKTsKKyAgICBUaHJlYWQgKnRocmVhZCA9
IEdldEN1cnJlbnRUaHJlYWQoKTsKIAotICAgIERpc3BsYXkgKmRpc3BsYXkgPSBHZXRHbG9iYWxE
aXNwbGF5KCk7CisgICAgRGlzcGxheSAqZGlzcGxheSA9IHRocmVhZC0+Z2V0RGlzcGxheSgpOwog
CiAgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZURpc3BsYXkoZGlzcGxheSk7CiAgICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAg
ICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7
CiAgICAgfQogCiAgICAgZXJyb3IgPSBkaXNwbGF5LT53YWl0Q2xpZW50KCk7CiAgICAgaWYgKGVy
cm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAg
ICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7
CiAgICAgfQogCi0gICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKKyAgICB0
aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CiAgICAgcmV0dXJuIEVHTF9UUlVF
OwogfQogCkBAIC0xMTE2LDEwICsxMDQ2LDExIEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgV2Fp
dENsaWVudCh2b2lkKQogRUdMQ29udGV4dCBFR0xBUElFTlRSWSBHZXRDdXJyZW50Q29udGV4dCh2
b2lkKQogewogICAgIEVWRU5UKCIoKSIpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVu
dFRocmVhZCgpOwogCi0gICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBHZXRHbG9iYWxDb250ZXh0
KCk7CisgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSB0aHJlYWQtPmdldENvbnRleHQoKTsKIAot
ICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAgdGhyZWFkLT5zZXRF
cnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFR0xDb250
ZXh0Pihjb250ZXh0KTsKIH0KIApAQCAtMTEyNywzMiArMTA1OCw0MCBAQCBFR0xDb250ZXh0IEVH
TEFQSUVOVFJZIEdldEN1cnJlbnRDb250ZXh0KHZvaWQpCiBFR0xTeW5jIEVHTEFQSUVOVFJZIENy
ZWF0ZVN5bmMoRUdMRGlzcGxheSBkcHksIEVHTGVudW0gdHlwZSwgY29uc3QgRUdMQXR0cmliICph
dHRyaWJfbGlzdCkKIHsKICAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdM
ZW51bSB0eXBlID0gMHglWCwgY29uc3QgRUdMaW50KiBhdHRyaWJfbGlzdCA9IDB4JTAuOHApIiwg
ZHB5LCB0eXBlLCBhdHRyaWJfbGlzdCk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50
VGhyZWFkKCk7CiAKICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgdGhyZWFkLT5zZXRFcnJvcihF
cnJvcihFR0xfQkFEX0RJU1BMQVksICJlZ2xDcmVhdGVTeW5jIHVuaW1wbGVtZW50ZWQuIikpOwog
ICAgIHJldHVybiBFR0xfTk9fU1lOQzsKIH0KIAogRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBEZXN0
cm95U3luYyhFR0xEaXNwbGF5IGRweSwgRUdMU3luYyBzeW5jKQogewogICAgIEVWRU5UKCIoRUdM
RGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTeW5jIHN5bmMgPSAweCUwLjhwKSIsIGRweSwgc3lu
Yyk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7CiAKICAgICBVTklN
UExFTUVOVEVEKCk7CisgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfQkFEX0RJU1BMQVks
ICJlZ2xEZXN0cm95U3luYyB1bmltcGxlbWVudGVkLiIpKTsKICAgICByZXR1cm4gRUdMX0ZBTFNF
OwogfQogCiBFR0xpbnQgRUdMQVBJRU5UUlkgQ2xpZW50V2FpdFN5bmMoRUdMRGlzcGxheSBkcHks
IEVHTFN5bmMgc3luYywgRUdMaW50IGZsYWdzLCBFR0xUaW1lIHRpbWVvdXQpCiB7CiAgICAgRVZF
TlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN5bmMgc3luYyA9IDB4JTAuOHAsIEVH
TGludCBmbGFncyA9IDB4JVgsIEVHTFRpbWUgdGltZW91dCA9ICVkKSIsIGRweSwgc3luYywgZmxh
Z3MsIHRpbWVvdXQpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwog
CiAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JB
RF9ESVNQTEFZLCAiZWdsQ2xpZW50V2FpdFN5bmMgdW5pbXBsZW1lbnRlZC4iKSk7CiAgICAgcmV0
dXJuIDA7CiB9CiAKIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgR2V0U3luY0F0dHJpYihFR0xEaXNw
bGF5IGRweSwgRUdMU3luYyBzeW5jLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xBdHRyaWIgKnZhbHVl
KQogewogICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTeW5jIHN5bmMg
PSAweCUwLjhwLCBFR0xpbnQgYXR0cmlidXRlID0gMHglWCwgRUdMQXR0cmliICp2YWx1ZSA9IDB4
JTAuOHApIiwgZHB5LCBzeW5jLCBhdHRyaWJ1dGUsIHZhbHVlKTsKKyAgICBUaHJlYWQgKnRocmVh
ZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB0aHJl
YWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfRElTUExBWSwgImVnbFN5bmNBdHRyaWIgdW5pbXBs
ZW1lbnRlZC4iKSk7CiAgICAgcmV0dXJuIEVHTF9GQUxTRTsKIH0KIApAQCAtMTE2MSwxNiArMTEw
MCwyMCBAQCBFR0xJbWFnZSBFR0xBUElFTlRSWSBDcmVhdGVJbWFnZShFR0xEaXNwbGF5IGRweSwg
RUdMQ29udGV4dCBjdHgsIEVHTGVudW0gdGFyZ2V0LAogICAgIEVWRU5UKCIoRUdMRGlzcGxheSBk
cHkgPSAweCUwLjhwLCBFR0xDb250ZXh0IGN0eCA9IDB4JTAuOHAsIEVHTGVudW0gdGFyZ2V0ID0g
MHglWCwgIgogICAgICAgICAgICJFR0xDbGllbnRCdWZmZXIgYnVmZmVyID0gMHglMC44cCwgY29u
c3QgRUdMQXR0cmliICphdHRyaWJfbGlzdCA9IDB4JTAuOHApIiwKICAgICAgICAgICBkcHksIGN0
eCwgdGFyZ2V0LCBidWZmZXIsIGF0dHJpYl9saXN0KTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdl
dEN1cnJlbnRUaHJlYWQoKTsKIAogICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICB0aHJlYWQtPnNl
dEVycm9yKEVycm9yKEVHTF9CQURfRElTUExBWSwgImVnbENyZWF0ZUltYWdlIHVuaW1wbGVtZW50
ZWQuIikpOwogICAgIHJldHVybiBFR0xfTk9fSU1BR0U7CiB9CiAKIEVHTEJvb2xlYW4gRUdMQVBJ
RU5UUlkgRGVzdHJveUltYWdlKEVHTERpc3BsYXkgZHB5LCBFR0xJbWFnZSBpbWFnZSkKIHsKICAg
ICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMSW1hZ2UgaW1hZ2UgPSAweCUw
LjhwKSIsIGRweSwgaW1hZ2UpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVh
ZCgpOwogCiAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3Io
RUdMX0JBRF9ESVNQTEFZLCAiZWdsRGVzdHJveUltYWdlIHVuaW1wbGVtZW50ZWQuIikpOwogICAg
IHJldHVybiBFR0xfRkFMU0U7CiB9CiAKQEAgLTExNzgsOCArMTEyMSwxMCBAQCBFR0xEaXNwbGF5
IEVHTEFQSUVOVFJZIEdldFBsYXRmb3JtRGlzcGxheShFR0xlbnVtIHBsYXRmb3JtLCB2b2lkICpu
YXRpdmVfZGlzcGxheQogewogICAgIEVWRU5UKCIoRUdMZW51bSBwbGF0Zm9ybSA9ICVkLCB2b2lk
KiBuYXRpdmVfZGlzcGxheSA9IDB4JTAuOHAsIGNvbnN0IEVHTGludCogYXR0cmliX2xpc3QgPSAw
eCUwLjhwKSIsCiAgICAgICAgICAgcGxhdGZvcm0sIG5hdGl2ZV9kaXNwbGF5LCBhdHRyaWJfbGlz
dCk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7CiAKICAgICBVTklN
UExFTUVOVEVEKCk7CisgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfQkFEX0RJU1BMQVks
ICJlZ2xHZXRQbGF0Zm9ybURpc3BsYXkgdW5pbXBsZW1lbnRlZC4iKSk7CiAgICAgcmV0dXJuIEVH
TF9OT19ESVNQTEFZOwogfQogCkBAIC0xMTg3LDggKzExMzIsMTAgQEAgRUdMU3VyZmFjZSBFR0xB
UElFTlRSWSBDcmVhdGVQbGF0Zm9ybVdpbmRvd1N1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTENv
bmZpZyBjb24KIHsKICAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMQ29u
ZmlnIGNvbmZpZyA9IDB4JTAuOHAsIHZvaWQqIG5hdGl2ZV93aW5kb3cgPSAweCUwLjhwLCBjb25z
dCBFR0xpbnQqIGF0dHJpYl9saXN0ID0gMHglMC44cCkiLAogICAgICAgICAgIGRweSwgY29uZmln
LCBuYXRpdmVfd2luZG93LCBhdHRyaWJfbGlzdCk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRD
dXJyZW50VGhyZWFkKCk7CiAKICAgICBVTklNUExFTUVOVEVEKCk7CisgICAgdGhyZWFkLT5zZXRF
cnJvcihFcnJvcihFR0xfQkFEX0RJU1BMQVksICJlZ2xDcmVhdGVQbGF0Zm9ybVdpbmRvd1N1cmZh
Y2UgdW5pbXBsZW1lbnRlZC4iKSk7CiAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOwogfQogCkBA
IC0xMTk2LDIyICsxMTQzLDI3IEBAIEVHTFN1cmZhY2UgRUdMQVBJRU5UUlkgQ3JlYXRlUGxhdGZv
cm1QaXhtYXBTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uCiB7CiAgICAgRVZF
TlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTENvbmZpZyBjb25maWcgPSAweCUwLjhw
LCB2b2lkKiBuYXRpdmVfcGl4bWFwID0gMHglMC44cCwgY29uc3QgRUdMaW50KiBhdHRyaWJfbGlz
dCA9IDB4JTAuOHApIiwKICAgICAgICAgICBkcHksIGNvbmZpZywgbmF0aXZlX3BpeG1hcCwgYXR0
cmliX2xpc3QpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAg
ICAgVU5JTVBMRU1FTlRFRCgpOworICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9E
SVNQTEFZLCAiZWdsQ3JhZXRlUGxhdGZvcm1QaXhtYVN1cmZhY2UgdW5pbXBsZW1lbnRlZC4iKSk7
CiAgICAgcmV0dXJuIEVHTF9OT19TVVJGQUNFOwogfQogCiBFR0xCb29sZWFuIEVHTEFQSUVOVFJZ
IFdhaXRTeW5jKEVHTERpc3BsYXkgZHB5LCBFR0xTeW5jIHN5bmMsIEVHTGludCBmbGFncykKIHsK
ICAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3luYyBzeW5jID0gMHgl
MC44cCwgRUdMaW50IGZsYWdzID0gMHglWCkiLCBkcHksIHN5bmMsIGZsYWdzKTsKKyAgICBUaHJl
YWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAgIFVOSU1QTEVNRU5URUQoKTsK
KyAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfRElTUExBWSwgImVnbFdhaXRTeW5j
IHVuaW1wbGVtZW50ZWQuIikpOwogICAgIHJldHVybiBFR0xfRkFMU0U7CiB9CiAKIF9fZWdsTXVz
dENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUgRUdMQVBJRU5UUlkgR2V0UHJvY0FkZHJl
c3MoY29uc3QgY2hhciAqcHJvY25hbWUpCiB7CiAgICAgRVZFTlQoIihjb25zdCBjaGFyICpwcm9j
bmFtZSA9IFwiJXNcIikiLCBwcm9jbmFtZSk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJy
ZW50VGhyZWFkKCk7CiAKICAgICB0eXBlZGVmIHN0ZDo6bWFwPHN0ZDo6c3RyaW5nLCBfX2VnbE11
c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlPiBQcm9jQWRkcmVzc01hcDsKICAgICBh
dXRvIGdlbmVyYXRlUHJvY0FkZHJlc3NNYXAgPSBbXSgpCkBAIC0xMjIwLDYgKzExNzIsOSBAQCBf
X2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlIEVHTEFQSUVOVFJZIEdldFBy
b2NBZGRyZXNzKGNvbnN0IGNoYXIgKgogI2RlZmluZSBJTlNFUlRfUFJPQ19BRERSRVNTKG5zLCBw
cm9jKSBcCiAgICAgbWFwWyNucyAjcHJvY10gPSByZWludGVycHJldF9jYXN0PF9fZWdsTXVzdENh
c3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGU+KG5zOjpwcm9jKQogCisjZGVmaW5lIElOU0VS
VF9QUk9DX0FERFJFU1NfTk9fTlMobmFtZSwgcHJvYykgXAorICAgIG1hcFtuYW1lXSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8X19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZT4ocHJv
YykKKwogICAgICAgICAvLyBHTEVTMiBjb3JlCiAgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1Mo
Z2wsIEFjdGl2ZVRleHR1cmUpOwogICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBBdHRh
Y2hTaGFkZXIpOwpAQCAtMTQwNCwxNSArMTM1OSwxNyBAQCBfX2VnbE11c3RDYXN0VG9Qcm9wZXJG
dW5jdGlvblBvaW50ZXJUeXBlIEVHTEFQSUVOVFJZIEdldFByb2NBZGRyZXNzKGNvbnN0IGNoYXIg
KgogICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRRdWVyeU9iamVjdHVpdkVYVCk7
CiAKICAgICAgICAgLy8gR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5Ci0gICAgICAgIElOU0VS
VF9QUk9DX0FERFJFU1MoZ2wsIEdlblF1ZXJpZXNFWFQpOwotICAgICAgICBJTlNFUlRfUFJPQ19B
RERSRVNTKGdsLCBEZWxldGVRdWVyaWVzRVhUKTsKLSAgICAgICAgSU5TRVJUX1BST0NfQUREUkVT
UyhnbCwgSXNRdWVyeUVYVCk7Ci0gICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEJlZ2lu
UXVlcnlFWFQpOwotICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBFbmRRdWVyeUVYVCk7
CisgICAgICAgIC8vIENvbW1lbnRlZCBvdXQgZnVuY3Rpb25zIGFyZSBuZWVkZWQgZm9yIEdMX0VY
VF9kaXNqb2ludF90aW1lcl9xdWVyeQorICAgICAgICAvLyBidXQgYXJlIHB1bGxlZCBpbiBieSBH
TF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4uCisgICAgICAgIC8vIElOU0VSVF9QUk9DX0FE
RFJFU1MoZ2wsIEdlblF1ZXJpZXNFWFQpOworICAgICAgICAvLyBJTlNFUlRfUFJPQ19BRERSRVNT
KGdsLCBEZWxldGVRdWVyaWVzRVhUKTsKKyAgICAgICAgLy8gSU5TRVJUX1BST0NfQUREUkVTUyhn
bCwgSXNRdWVyeUVYVCk7CisgICAgICAgIC8vIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEJlZ2lu
UXVlcnlFWFQpOworICAgICAgICAvLyBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBFbmRRdWVyeUVY
VCk7CiAgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIFF1ZXJ5Q291bnRlckVYVCk7Ci0g
ICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1MoZ2wsIEdldFF1ZXJ5aXZFWFQpOworICAgICAgICAv
LyBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBHZXRRdWVyeWl2RVhUKTsKICAgICAgICAgSU5TRVJU
X1BST0NfQUREUkVTUyhnbCwgR2V0UXVlcnlPYmplY3RpdkVYVCk7Ci0gICAgICAgIElOU0VSVF9Q
Uk9DX0FERFJFU1MoZ2wsIEdldFF1ZXJ5T2JqZWN0dWl2RVhUKTsKKyAgICAgICAgLy8gSU5TRVJU
X1BST0NfQUREUkVTUyhnbCwgR2V0UXVlcnlPYmplY3R1aXZFWFQpOwogICAgICAgICBJTlNFUlRf
UFJPQ19BRERSRVNTKGdsLCBHZXRRdWVyeU9iamVjdGk2NHZFWFQpOwogICAgICAgICBJTlNFUlRf
UFJPQ19BRERSRVNTKGdsLCBHZXRRdWVyeU9iamVjdHVpNjR2RVhUKTsKIApAQCAtMTQ3NSw4ICsx
NDMyLDggQEAgX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSBFR0xBUElF
TlRSWSBHZXRQcm9jQWRkcmVzcyhjb25zdCBjaGFyICoKICAgICAgICAgLy8gR0xfQ0hST01JVU1f
Y29weV9jb21wcmVzc2VkX3RleHR1cmUKICAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwg
Q29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0pOwogCi0gICAgICAgIC8vIEdMX0FOR0xFX3dl
YmdsX2NvbXBhdGliaWxpdHkKLSAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgRW5hYmxl
RXh0ZW5zaW9uQU5HTEUpOworICAgICAgICAvLyBHTF9BTkdMRV9yZXF1ZXN0X2V4dGVuc2lvbgor
ICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBSZXF1ZXN0RXh0ZW5zaW9uQU5HTEUpOwog
CiAgICAgICAgIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiAgICAgICAgIElOU0VS
VF9QUk9DX0FERFJFU1MoZ2wsIEdldEJvb2xlYW52Um9idXN0QU5HTEUpOwpAQCAtMTYxMSw4ICsx
NTY4LDggQEAgX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSBFR0xBUElF
TlRSWSBHZXRQcm9jQWRkcmVzcyhjb25zdCBjaGFyICoKICAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhnbCwgVW5pZm9ybUJsb2NrQmluZGluZyk7CiAgICAgICAgIElOU0VSVF9QUk9DX0FERFJF
U1MoZ2wsIERyYXdBcnJheXNJbnN0YW5jZWQpOwogICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNT
KGdsLCBEcmF3RWxlbWVudHNJbnN0YW5jZWQpOwotICAgICAgICBtYXBbImdsRmVuY2VTeW5jIl0g
PQotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5j
dGlvblBvaW50ZXJUeXBlPihnbDo6RmVuY2VTeW5jXyk7CisgICAgICAgIC8vIEZlbmNlU3luYyBp
cyB0aGUgbmFtZSBvZiBhIGNsYXNzLCB0aGUgZnVuY3Rpb24gaGFzIGFuIGFkZGVkIF8gdG8gcHJl
dmVudCBhIG5hbWUgY29uZmxpY3QuCisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1NfTk9fTlMo
ImdsRmVuY2VTeW5jIiwgZ2w6OkZlbmNlU3luY18pOwogICAgICAgICBJTlNFUlRfUFJPQ19BRERS
RVNTKGdsLCBJc1N5bmMpOwogICAgICAgICBJTlNFUlRfUFJPQ19BRERSRVNTKGdsLCBEZWxldGVT
eW5jKTsKICAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhnbCwgQ2xpZW50V2FpdFN5bmMpOwpA
QCAtMTgxNCwyNCArMTc3MSwyNSBAQCBfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50
ZXJUeXBlIEVHTEFQSUVOVFJZIEdldFByb2NBZGRyZXNzKGNvbnN0IGNoYXIgKgogCiAgICAgICAg
IC8vIEVHTF9DSFJPTUlVTV9nZXRfc3luY192YWx1ZXMKICAgICAgICAgSU5TRVJUX1BST0NfQURE
UkVTUyhlZ2wsIEdldFN5bmNWYWx1ZXNDSFJPTUlVTSk7CisKKyAgICAgICAgLy8gRUdMX0VYVF9z
d2FwX2J1ZmZlcnNfd2l0aF9kYW1hZ2UKKyAgICAgICAgSU5TRVJUX1BST0NfQUREUkVTUyhlZ2ws
IFN3YXBCdWZmZXJzV2l0aERhbWFnZUVYVCk7CisKKyAgICAgICAgLy8gYW5nbGU6OlBsYXRmb3Jt
IHJlbGF0ZWQgZW50cnkgcG9pbnRzCisgICAgICAgIElOU0VSVF9QUk9DX0FERFJFU1NfTk9fTlMo
IkFOR0xFR2V0RGlzcGxheVBsYXRmb3JtIiwgQU5HTEVHZXREaXNwbGF5UGxhdGZvcm0pOworICAg
ICAgICBJTlNFUlRfUFJPQ19BRERSRVNTX05PX05TKCJBTkdMRVJlc2V0RGlzcGxheVBsYXRmb3Jt
IiwgQU5HTEVSZXNldERpc3BsYXlQbGF0Zm9ybSk7CisKICN1bmRlZiBJTlNFUlRfUFJPQ19BRERS
RVNTCisjdW5kZWYgSU5TRVJUX1BST0NfQUREUkVTU19OT19OUworCiAgICAgICAgIHJldHVybiBt
YXA7CiAgICAgfTsKIAotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV2V4aXQtdGltZS1kZXN0cnVjdG9ycyIKICAgICBzdGF0
aWMgY29uc3QgUHJvY0FkZHJlc3NNYXAgcHJvY0FkZHJlc3NNYXAgPSBnZW5lcmF0ZVByb2NBZGRy
ZXNzTWFwKCk7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAKKyAgICB0aHJlYWQtPnNl
dEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CiAgICAgYXV0byBpdGVyID0gcHJvY0FkZHJlc3NN
YXAuZmluZChwcm9jbmFtZSk7Ci0gICAgaWYgKGl0ZXIgIT0gcHJvY0FkZHJlc3NNYXAuZW5kKCkp
Ci0gICAgewotICAgICAgICByZXR1cm4gaXRlci0+c2Vjb25kOwotICAgIH0KLSAgICBlbHNlCi0g
ICAgewotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgcmV0dXJuIGl0ZXIgIT0g
cHJvY0FkZHJlc3NNYXAuZW5kKCkgPyBpdGVyLT5zZWNvbmQgOiBudWxscHRyOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3Bv
aW50c19lZ2wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlf
cG9pbnRzX2VnbC5oCmluZGV4IDUxMTFmOWRkNjQzLi4yNTlhMjA5Njg0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsLmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNf
ZWdsLmgKQEAgLTksOCArOSw4IEBACiAjaWZuZGVmIExJQkdMRVNWMl9FTlRSWVBPSU5UU0VHTF9I
XwogI2RlZmluZSBMSUJHTEVTVjJfRU5UUllQT0lOVFNFR0xfSF8KIAotI2luY2x1ZGUgPEFOR0xF
L2VnbC5oPgotI2luY2x1ZGUgPEFOR0xFL2V4cG9ydC5oPgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4K
KyNpbmNsdWRlIDxleHBvcnQuaD4KIAogbmFtZXNwYWNlIGVnbAogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZWdsX2V4dC5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19l
Z2xfZXh0LmNwcAppbmRleCAzMDVhZDQwNzAyZS4uMDlhNGE2ODI4MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2VnbF9leHQu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9p
bnRzX2VnbF9leHQuY3BwCkBAIC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSAibGliQU5HTEUvRGV2
aWNlLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvU3VyZmFjZS5oIgogI2luY2x1ZGUgImxpYkFOR0xF
L1N0cmVhbS5oIgorI2luY2x1ZGUgImxpYkFOR0xFL1RocmVhZC5oIgogI2luY2x1ZGUgImxpYkFO
R0xFL3ZhbGlkYXRpb25FR0wuaCIKIAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgpAQCAtMjYs
NiArMjcsNyBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdM
RShFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYQogewogICAgIEVWRU5UKCIoRUdMRGlz
cGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdXJmYWNlIHN1cmZhY2UgPSAweCUwLjhwLCBFR0xpbnQg
YXR0cmlidXRlID0gJWQsIHZvaWQgKip2YWx1ZSA9IDB4JTAuOHApIiwKICAgICAgICAgICBkcHks
IHN1cmZhY2UsIGF0dHJpYnV0ZSwgdmFsdWUpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3Vy
cmVudFRocmVhZCgpOwogCiAgICAgRGlzcGxheSAqZGlzcGxheSA9IHN0YXRpY19jYXN0PERpc3Bs
YXkqPihkcHkpOwogICAgIFN1cmZhY2UgKmVnbFN1cmZhY2UgPSBzdGF0aWNfY2FzdDxTdXJmYWNl
Kj4oc3VyZmFjZSk7CkBAIC0zMywxOSArMzUsMTkgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBR
dWVyeVN1cmZhY2VQb2ludGVyQU5HTEUoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmEK
ICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlU3VyZmFjZShkaXNwbGF5LCBlZ2xTdXJmYWNlKTsK
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3Io
ZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJu
IEVHTF9GQUxTRTsKICAgICB9CiAKICAgICBpZiAoIWRpc3BsYXktPmdldEV4dGVuc2lvbnMoKS5x
dWVyeVN1cmZhY2VQb2ludGVyKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3Io
RUdMX1NVQ0NFU1MpKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfU1VDQ0VT
UykpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAogICAgIGlmIChzdXJmYWNl
ID09IEVHTF9OT19TVVJGQUNFKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3Io
RUdMX0JBRF9TVVJGQUNFKSk7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JB
RF9TVVJGQUNFKSk7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCkBAIC01NSwy
NCArNTcsMjQgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBRdWVyeVN1cmZhY2VQb2ludGVyQU5H
TEUoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmEKICAgICAgIGNhc2UgRUdMX0QzRF9U
RVhUVVJFXzJEX1NIQVJFX0hBTkRMRV9BTkdMRToKICAgICAgICAgaWYgKCFkaXNwbGF5LT5nZXRF
eHRlbnNpb25zKCkuc3VyZmFjZUQzRFRleHR1cmUyRFNoYXJlSGFuZGxlKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVURSkpOworICAg
ICAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVURSkpOwogICAg
ICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKICAg
ICAgIGNhc2UgRUdMX0RYR0lfS0VZRURfTVVURVhfQU5HTEU6CiAgICAgICAgIGlmICghZGlzcGxh
eS0+Z2V0RXh0ZW5zaW9ucygpLmtleWVkTXV0ZXgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFNl
dEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFKSk7CisgICAgICAgICAgICB0aHJl
YWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFKSk7CiAgICAgICAgICAgICByZXR1
cm4gRUdMX0ZBTFNFOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDoK
LSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUpKTsKLSAgICAg
ICAgcmV0dXJuIEVHTF9GQUxTRTsKKyAgICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVH
TF9CQURfQVRUUklCVVRFKSk7CisgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAK
ICAgICBlcnJvciA9IGVnbFN1cmZhY2UtPnF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShhdHRyaWJ1
dGUsIHZhbHVlKTsKLSAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgdGhyZWFkLT5zZXRF
cnJvcihlcnJvcik7CiAgICAgcmV0dXJuIChlcnJvci5pc0Vycm9yKCkgPyBFR0xfRkFMU0UgOiBF
R0xfVFJVRSk7CiB9CiAKQEAgLTgxLDEwICs4MywxMSBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZ
IFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJm
YQogRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBQb3N0U3ViQnVmZmVyTlYoRUdMRGlzcGxheSBkcHks
IEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IHgsIEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVH
TGludCBoZWlnaHQpCiB7CiAgICAgRVZFTlQoIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVH
TFN1cmZhY2Ugc3VyZmFjZSA9IDB4JTAuOHAsIEVHTGludCB4ID0gJWQsIEVHTGludCB5ID0gJWQs
IEVHTGludCB3aWR0aCA9ICVkLCBFR0xpbnQgaGVpZ2h0ID0gJWQpIiwgZHB5LCBzdXJmYWNlLCB4
LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJl
YWQoKTsKIAogICAgIGlmICh4IDwgMCB8fCB5IDwgMCB8fCB3aWR0aCA8IDAgfHwgaGVpZ2h0IDwg
MCkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfUEFSQU1FVEVS
KSk7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9QQVJBTUVURVIpKTsK
ICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKQEAgLTk0LDM3ICs5NywzNyBAQCBF
R0xCb29sZWFuIEVHTEFQSUVOVFJZIFBvc3RTdWJCdWZmZXJOVihFR0xEaXNwbGF5IGRweSwgRUdM
U3VyZmFjZSBzdXJmYWNlLCBFR0xpbgogICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVTdXJmYWNl
KGRpc3BsYXksIGVnbFN1cmZhY2UpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewot
ICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3Io
ZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAogICAgIGlmIChkaXNw
bGF5LT50ZXN0RGV2aWNlTG9zdCgpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJy
b3IoRUdMX0NPTlRFWFRfTE9TVCkpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVH
TF9DT05URVhUX0xPU1QpKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKICAg
ICBpZiAoc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkKICAgICB7Ci0gICAgICAgIFNldEdsb2Jh
bEVycm9yKEVycm9yKEVHTF9CQURfU1VSRkFDRSkpOworICAgICAgICB0aHJlYWQtPnNldEVycm9y
KEVycm9yKEVHTF9CQURfU1VSRkFDRSkpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAg
IH0KIAogICAgIGlmICghZGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygpLnBvc3RTdWJCdWZmZXIpCiAg
ICAgewogICAgICAgICAvLyBTcGVjIGlzIG5vdCBjbGVhciBhYm91dCBob3cgdGhpcyBzaG91bGQg
YmUgaGFuZGxlZC4KLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsK
KyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOwogICAgICAgICBy
ZXR1cm4gRUdMX1RSVUU7CiAgICAgfQogCiAgICAgZXJyb3IgPSBlZ2xTdXJmYWNlLT5wb3N0U3Vi
QnVmZmVyKHgsIHksIHdpZHRoLCBoZWlnaHQpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAg
ICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0
RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAotICAgIFNl
dEdsb2JhbEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7CisgICAgdGhyZWFkLT5zZXRFcnJvcihF
cnJvcihFR0xfU1VDQ0VTUykpOwogICAgIHJldHVybiBFR0xfVFJVRTsKIH0KIApAQCAtMTMzLDYg
KzEzNiw3IEBAIEVHTERpc3BsYXkgRUdMQVBJRU5UUlkgR2V0UGxhdGZvcm1EaXNwbGF5RVhUKEVH
TGVudW0gcGxhdGZvcm0sIHZvaWQgKm5hdGl2ZV9kaXNwCiB7CiAgICAgRVZFTlQoIihFR0xlbnVt
IHBsYXRmb3JtID0gJWQsIHZvaWQqIG5hdGl2ZV9kaXNwbGF5ID0gMHglMC44cCwgY29uc3QgRUdM
aW50KiBhdHRyaWJfbGlzdCA9IDB4JTAuOHApIiwKICAgICAgICAgICBwbGF0Zm9ybSwgbmF0aXZl
X2Rpc3BsYXksIGF0dHJpYl9saXN0KTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1cnJlbnRU
aHJlYWQoKTsKIAogICAgIGNvbnN0IENsaWVudEV4dGVuc2lvbnMgJmNsaWVudEV4dGVuc2lvbnMg
PSBEaXNwbGF5OjpnZXRDbGllbnRFeHRlbnNpb25zKCk7CiAKQEAgLTE0MSwzMiArMTQ1LDMzIEBA
IEVHTERpc3BsYXkgRUdMQVBJRU5UUlkgR2V0UGxhdGZvcm1EaXNwbGF5RVhUKEVHTGVudW0gcGxh
dGZvcm0sIHZvaWQgKm5hdGl2ZV9kaXNwCiAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9B
TkdMRToKICAgICAgICAgaWYgKCFjbGllbnRFeHRlbnNpb25zLnBsYXRmb3JtQU5HTEUpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfUEFSQU1FVEVS
KSk7CisgICAgICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfUEFSQU1FVEVS
KSk7CiAgICAgICAgICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAgICAgICBjYXNlIEVHTF9QTEFURk9STV9ERVZJQ0VfRVhUOgogICAgICAgICAg
IGlmICghY2xpZW50RXh0ZW5zaW9ucy5wbGF0Zm9ybURldmljZSkKICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCAiUGxhdGZv
cm0gRGV2aWNlIGV4dGVuc2lvbiBpcyBub3QgYWN0aXZlIikpOworICAgICAgICAgICAgICB0aHJl
YWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfUEFSQU1FVEVSLCAiUGxhdGZvcm0gRGV2aWNlIGV4
dGVuc2lvbiBpcyBub3QgYWN0aXZlIikpOwogICAgICAgICAgICAgICByZXR1cm4gRUdMX05PX0RJ
U1BMQVk7CiAgICAgICAgICAgfQogICAgICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9DT05GSUcpKTsKLSAgICAgICAgcmV0
dXJuIEVHTF9OT19ESVNQTEFZOworICAgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdM
X0JBRF9DT05GSUcpKTsKKyAgICAgICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CiAgICAgfQog
CiAgICAgaWYgKHBsYXRmb3JtID09IEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSkKICAgICB7CiAg
ICAgICAgIEVHTGludCBwbGF0Zm9ybVR5cGUgICAgICAgICAgPSBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9ERUZBVUxUX0FOR0xFOwogICAgICAgICBFR0xpbnQgZGV2aWNlVHlwZSAgICAgICAgICAg
ID0gRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0hBUkRXQVJFX0FOR0xFOwotICAgICAg
ICBib29sIG1ham9yVmVyc2lvblNwZWNpZmllZCAgID0gZmFsc2U7Ci0gICAgICAgIGJvb2wgbWlu
b3JWZXJzaW9uU3BlY2lmaWVkICAgPSBmYWxzZTsKICAgICAgICAgYm9vbCBlbmFibGVBdXRvVHJp
bVNwZWNpZmllZCA9IGZhbHNlOwogICAgICAgICBib29sIGRldmljZVR5cGVTcGVjaWZpZWQgICAg
ID0gZmFsc2U7CiAgICAgICAgIGJvb2wgcHJlc2VudFBhdGhTcGVjaWZpZWQgICAgPSBmYWxzZTsK
IAorICAgICAgICBPcHRpb25hbDxFR0xpbnQ+IG1ham9yVmVyc2lvbjsKKyAgICAgICAgT3B0aW9u
YWw8RUdMaW50PiBtaW5vclZlcnNpb247CisKICAgICAgICAgaWYgKGF0dHJpYl9saXN0KQogICAg
ICAgICB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IEVHTGludCAqY3VyQXR0cmliID0gYXR0cmli
X2xpc3Q7IGN1ckF0dHJpYlswXSAhPSBFR0xfTk9ORTsgY3VyQXR0cmliICs9IDIpCkBAIC0xNzQs
NTggKzE3OSwyOCBAQCBFR0xEaXNwbGF5IEVHTEFQSUVOVFJZIEdldFBsYXRmb3JtRGlzcGxheUVY
VChFR0xlbnVtIHBsYXRmb3JtLCB2b2lkICpuYXRpdmVfZGlzcAogICAgICAgICAgICAgICAgIHN3
aXRjaCAoY3VyQXR0cmliWzBdKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAg
ICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHN3aXRjaCAoY3VyQXR0cmliWzFdKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0RFRkFVTFRf
QU5HTEU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEOV9BTkdMRToKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFf
QU5HTEU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjbGllbnRFeHRlbnNpb25z
LnBsYXRmb3JtQU5HTEVEM0QpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0FU
VFJJQlVURSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRUdMX05P
X0RJU1BMQVk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRToKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEU6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFjbGllbnRFeHRlbnNpb25zLnBsYXRmb3JtQU5HTEVPcGVu
R0wpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVURSkpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX05VTExfQU5HTEU6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjbGllbnRF
eHRlbnNpb25zLnBsYXRmb3JtQU5HTEVOVUxMKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3Io
RUdMX0JBRF9BVFRSSUJVVEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJEaXNwbGF5IHR5cGUgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfTlVM
TF9BTkdMRSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJyZXF1aXJlcyBFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfbnVsbC4iKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVURSkpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19ESVNQTEFZOworICAgICAgICAgICAgICAg
ICAgICAgICAgZWdsOjpFcnJvciBlcnJvciA9IFZhbGlkYXRlUGxhdGZvcm1UeXBlKGNsaWVudEV4
dGVuc2lvbnMsIGN1ckF0dHJpYlsxXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtVHlwZSA9IGN1ckF0dHJpYlsxXTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtVHlwZSA9IGN1ckF0dHJpYlsxXTsKLSAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfUExBVEZP
Uk1fQU5HTEVfTUFYX1ZFUlNJT05fTUFKT1JfQU5HTEU6CiAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoY3VyQXR0cmliWzFdICE9IEVHTF9ET05UX0NBUkUpCiAgICAgICAgICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFqb3JWZXJzaW9uU3BlY2lmaWVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWpvclZlcnNpb24gPSBjdXJB
dHRyaWJbMV07CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdM
RV9NQVhfVkVSU0lPTl9NSU5PUl9BTkdMRToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChj
dXJBdHRyaWJbMV0gIT0gRUdMX0RPTlRfQ0FSRSkKICAgICAgICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5vclZlcnNpb25TcGVjaWZpZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbm9yVmVyc2lvbiA9IGN1ckF0dHJpYlsx
XTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwogCkBAIC0yMzYsOCArMjExLDggQEAgRUdMRGlzcGxheSBFR0xBUElFTlRSWSBHZXRQbGF0
Zm9ybURpc3BsYXlFWFQoRUdMZW51bSBwbGF0Zm9ybSwgdm9pZCAqbmF0aXZlX2Rpc3AKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgRUdMX0ZBTFNFOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFKSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJ
QlVURSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFR0xfTk9fRElTUExB
WTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbmFibGVBdXRv
VHJpbVNwZWNpZmllZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjQ1
LDcgKzIyMCw3IEBAIEVHTERpc3BsYXkgRUdMQVBJRU5UUlkgR2V0UGxhdGZvcm1EaXNwbGF5RVhU
KEVHTGVudW0gcGxhdGZvcm0sIHZvaWQgKm5hdGl2ZV9kaXNwCiAgICAgICAgICAgICAgICAgICAg
IGNhc2UgRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5UX1BBVEhfQU5HTEU6CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIWNsaWVudEV4dGVuc2lvbnMuZXhwZXJpbWVudGFsUHJlc2VudFBhdGgp
CiAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2V0R2xvYmFsRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyZWFkLT5zZXRF
cnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IoRUdMX0JBRF9BVFRS
SUJVVEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfQU5HTEVf
ZXhwZXJpbWVudGFsX3ByZXNlbnRfcGF0aCBleHRlbnNpb24gbm90IGFjdGl2ZSIpKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7CkBAIC0yNTcsNyAr
MjMyLDcgQEAgRUdMRGlzcGxheSBFR0xBUElFTlRSWSBHZXRQbGF0Zm9ybURpc3BsYXlFWFQoRUdM
ZW51bSBwbGF0Zm9ybSwgdm9pZCAqbmF0aXZlX2Rpc3AKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0NPUFlfQU5HTEU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldEdsb2Jh
bEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQtPnNldEVycm9y
KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IoRUdMX0JBRF9BVFRS
SUJVVEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxp
ZCB2YWx1ZSBmb3IgRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5UX1BBVEhfQU5HTEUiKSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKQEAgLTI3
OSwzMSArMjU0LDU1IEBAIEVHTERpc3BsYXkgRUdMQVBJRU5UUlkgR2V0UGxhdGZvcm1EaXNwbGF5
RVhUKEVHTGVudW0gcGxhdGZvcm0sIHZvaWQgKm5hdGl2ZV9kaXNwCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJy
b3IoRUdMX0JBRF9BVFRSSUJVVEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHZhbHVlIGZvciAiCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFR0xfUExBVEZPUk1fQU5HTEVf
REVWSUNFX1RZUEVfQU5HTEUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiYXR0cmliIikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfQVRUUklCVVRFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHZh
bHVlIGZvciAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIkVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9BTkdMRSAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0dHJpYiIp
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19ESVNQTEFZ
OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZGV2
aWNlVHlwZSA9IGN1ckF0dHJpYlsxXTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfRU5BQkxFX1ZBTElEQVRJ
T05fTEFZRVJfQU5HTEU6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNsaWVudEV4dGVu
c2lvbnMucGxhdGZvcm1BTkdMRVZ1bGthbikKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWQtPnNldEVycm9yKAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFcnJvcihFR0xfQkFEX0FUVFJJQlVURSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV92dWxr
YW4gZXh0ZW5zaW9uIG5vdCBhY3RpdmUiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIEVHTF9OT19ESVNQTEFZOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHBsYXRmb3JtVHlwZSAhPSBFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9WVUxLQU5fQU5HTEUpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhyZWFkLT5zZXRFcnJvcigKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJWYWxpZGF0aW9uIGNhbiBvbmx5IGJlIGVuYWJsZWQgZm9yIHRo
ZSBWdWxrYW4gYmFjay1lbmQuIikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBFR0xfTk9fRElTUExBWTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChjdXJBdHRyaWJbMV0gIT0gRUdMX1RSVUUgJiYgY3VyQXR0cmliWzFd
ICE9IEVHTF9GQUxTRSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aHJlYWQtPnNldEVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFcnJvcihFR0xfQkFEX0FUVFJJQlVURSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlZhbGlkYXRpb24gbGF5ZXIgYXR0cmlidXRlIG11c3QgYmUgRUdMX1RS
VUUgb3IgRUdMX0ZBTFNFLiIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
RUdMX05PX0RJU1BMQVk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFtYWpvclZlcnNpb25TcGVjaWZpZWQgJiYgbWlu
b3JWZXJzaW9uU3BlY2lmaWVkKQorICAgICAgICBpZiAoIW1ham9yVmVyc2lvbi52YWxpZCgpICYm
IG1pbm9yVmVyc2lvbi52YWxpZCgpKQogICAgICAgICB7Ci0gICAgICAgICAgICBTZXRHbG9iYWxF
cnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVURSkpOworICAgICAgICAgICAgdGhyZWFkLT5zZXRF
cnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVURSkpOwogICAgICAgICAgICAgcmV0dXJuIEVHTF9O
T19ESVNQTEFZOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGRldmljZVR5cGUgPT0gRUdMX1BM
QVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1dBUlBfQU5HTEUgJiYKICAgICAgICAgICAgIHBsYXRm
b3JtVHlwZSAhPSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKICAgICAgICAg
ewotICAgICAgICAgICAgU2V0R2xvYmFsRXJyb3IoCisgICAgICAgICAgICB0aHJlYWQtPnNldEVy
cm9yKAogICAgICAgICAgICAgICAgIEVycm9yKEVHTF9CQURfQVRUUklCVVRFLAogICAgICAgICAg
ICAgICAgICAgICAgICJFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSBy
ZXF1aXJlcyBhIGRldmljZSB0eXBlIG9mICIKICAgICAgICAgICAgICAgICAgICAgICAiRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUuIikpOwpAQCAtMzEyLDcgKzMxMSw3IEBAIEVH
TERpc3BsYXkgRUdMQVBJRU5UUlkgR2V0UGxhdGZvcm1EaXNwbGF5RVhUKEVHTGVudW0gcGxhdGZv
cm0sIHZvaWQgKm5hdGl2ZV9kaXNwCiAKICAgICAgICAgaWYgKGVuYWJsZUF1dG9UcmltU3BlY2lm
aWVkICYmIHBsYXRmb3JtVHlwZSAhPSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdM
RSkKICAgICAgICAgewotICAgICAgICAgICAgU2V0R2xvYmFsRXJyb3IoCisgICAgICAgICAgICB0
aHJlYWQtPnNldEVycm9yKAogICAgICAgICAgICAgICAgIEVycm9yKEVHTF9CQURfQVRUUklCVVRF
LAogICAgICAgICAgICAgICAgICAgICAgICJFR0xfUExBVEZPUk1fQU5HTEVfRU5BQkxFX0FVVE9N
QVRJQ19UUklNX0FOR0xFIHJlcXVpcmVzIGEgZGV2aWNlIHR5cGUgb2YgIgogICAgICAgICAgICAg
ICAgICAgICAgICJFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRS4iKSk7CkBAIC0z
MjEsMzkgKzMyMCw1MiBAQCBFR0xEaXNwbGF5IEVHTEFQSUVOVFJZIEdldFBsYXRmb3JtRGlzcGxh
eUVYVChFR0xlbnVtIHBsYXRmb3JtLCB2b2lkICpuYXRpdmVfZGlzcAogCiAgICAgICAgIGlmIChw
cmVzZW50UGF0aFNwZWNpZmllZCAmJiBwbGF0Zm9ybVR5cGUgIT0gRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfRDNEMTFfQU5HTEUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFNldEdsb2JhbEVycm9y
KEVycm9yKEVHTF9CQURfQVRUUklCVVRFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0FOR0xFIHJlcXVpcmVzIGEgZGV2aWNl
IHR5cGUgb2YgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLiIpKTsKKyAgICAgICAgICAgIHRocmVhZC0+c2V0RXJy
b3IoRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJFR0xfRVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9BTkdMRSByZXF1aXJlcyBhIGRl
dmljZSB0eXBlIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLiIpKTsKICAgICAgICAgICAgIHJldHVybiBF
R0xfTk9fRElTUExBWTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChkZXZpY2VUeXBlU3BlY2lm
aWVkICYmIHBsYXRmb3JtVHlwZSAhPSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xF
ICYmCiAgICAgICAgICAgICBwbGF0Zm9ybVR5cGUgIT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVf
RDNEMTFfQU5HTEUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFNldEdsb2JhbEVycm9yKAorICAg
ICAgICAgICAgdGhyZWFkLT5zZXRFcnJvcigKICAgICAgICAgICAgICAgICBFcnJvcihFR0xfQkFE
X0FUVFJJQlVURSwKICAgICAgICAgICAgICAgICAgICAgICAiRUdMX1BMQVRGT1JNX0FOR0xFX0RF
VklDRV9UWVBFX0FOR0xFIHJlcXVpcmVzIGEgZGV2aWNlIHR5cGUgb2YgIgogICAgICAgICAgICAg
ICAgICAgICAgICJFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFIG9yIEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX0QzRDlfQU5HTEUuIikpOwogICAgICAgICAgICAgcmV0dXJuIEVHTF9O
T19ESVNQTEFZOwogICAgICAgICB9CiAKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdM
X1NVQ0NFU1MpKTsKLSAgICAgICAgcmV0dXJuIERpc3BsYXk6OkdldERpc3BsYXlGcm9tQXR0cmli
cyhuYXRpdmVfZGlzcGxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBBdHRyaWJ1dGVNYXA6OkNyZWF0ZUZyb21JbnRBcnJheShhdHRyaWJfbGlzdCkpOwor
ICAgICAgICBpZiAocGxhdGZvcm1UeXBlID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX1ZVTEtB
Tl9BTkdMRSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKChtYWpvclZlcnNpb24udmFsaWQo
KSAmJiBtYWpvclZlcnNpb24udmFsdWUoKSAhPSAxKSB8fAorICAgICAgICAgICAgICAgIChtaW5v
clZlcnNpb24udmFsaWQoKSAmJiBtaW5vclZlcnNpb24udmFsdWUoKSAhPSAwKSkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKAorICAgICAgICAg
ICAgICAgICAgICBFR0xfQkFEX0FUVFJJQlVURSwKKyAgICAgICAgICAgICAgICAgICAgIkVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX1ZVTEtBTl9BTkdMRSBjdXJyZW50bHkgb25seSBzdXBwb3J0cyBW
dWxrYW4gMS4wLiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRUdMX05PX0RJU1BMQVk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9y
KEVHTF9TVUNDRVNTKSk7CisgICAgICAgIHJldHVybiBEaXNwbGF5OjpHZXREaXNwbGF5RnJvbU5h
dGl2ZURpc3BsYXkoCisgICAgICAgICAgICBnbDo6Yml0Q2FzdDxFR0xOYXRpdmVEaXNwbGF5VHlw
ZT4obmF0aXZlX2Rpc3BsYXkpLAorICAgICAgICAgICAgQXR0cmlidXRlTWFwOjpDcmVhdGVGcm9t
SW50QXJyYXkoYXR0cmliX2xpc3QpKTsKICAgICB9CiAgICAgZWxzZSBpZiAocGxhdGZvcm0gPT0g
RUdMX1BMQVRGT1JNX0RFVklDRV9FWFQpCiAgICAgewogICAgICAgICBEZXZpY2UgKmVnbERldmlj
ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8RGV2aWNlICo+KG5hdGl2ZV9kaXNwbGF5KTsKICAgICAgICAg
aWYgKGVnbERldmljZSA9PSBudWxscHRyIHx8ICFEZXZpY2U6OklzVmFsaWREZXZpY2UoZWdsRGV2
aWNlKSkKICAgICAgICAgewotICAgICAgICAgICAgU2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JB
RF9BVFRSSUJVVEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmF0aXZlX2Rp
c3BsYXkgc2hvdWxkIGJlIGEgdmFsaWQgRUdMIGRldmljZSBpZiBwbGF0Zm9ybSBlcXVhbHMgIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9QTEFURk9STV9ERVZJQ0VfRVhU
IikpOworICAgICAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVU
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hdGl2ZV9kaXNwbGF5IHNo
b3VsZCBiZSBhIHZhbGlkIEVHTCBkZXZpY2UgaWYgcGxhdGZvcm0gZXF1YWxzICIKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVHTF9QTEFURk9STV9ERVZJQ0VfRVhUIikpOwog
ICAgICAgICAgICAgcmV0dXJuIEVHTF9OT19ESVNQTEFZOwogICAgICAgICB9CiAKLSAgICAgICAg
U2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX1NVQ0NFU1MpKTsKLSAgICAgICAgcmV0dXJuIERpc3Bs
YXk6OkdldERpc3BsYXlGcm9tRGV2aWNlKG5hdGl2ZV9kaXNwbGF5KTsKKyAgICAgICAgdGhyZWFk
LT5zZXRFcnJvcihFcnJvcihFR0xfU1VDQ0VTUykpOworICAgICAgICByZXR1cm4gRGlzcGxheTo6
R2V0RGlzcGxheUZyb21EZXZpY2UoZWdsRGV2aWNlKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsK
QEAgLTM2NywxMSArMzc5LDEyIEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgUXVlcnlEZXZpY2VB
dHRyaWJFWFQoRUdMRGV2aWNlRVhUIGRldmljZSwgRUdMaW50IGF0dHJpYnV0CiB7CiAgICAgRVZF
TlQoIihFR0xEZXZpY2VFWFQgZGV2aWNlID0gMHglMC44cCwgRUdMaW50IGF0dHJpYnV0ZSA9ICVk
LCBFR0xBdHRyaWIgKnZhbHVlID0gMHglMC44cCkiLAogICAgICAgICAgIGRldmljZSwgYXR0cmli
dXRlLCB2YWx1ZSk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7CiAK
ICAgICBEZXZpY2UgKmRldiA9IHN0YXRpY19jYXN0PERldmljZSo+KGRldmljZSk7CiAgICAgaWYg
KGRldiA9PSBFR0xfTk9fREVWSUNFX0VYVCB8fCAhRGV2aWNlOjpJc1ZhbGlkRGV2aWNlKGRldikp
CiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0FDQ0VTUykpOwor
ICAgICAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9CQURfQUNDRVNTKSk7CiAgICAgICAg
IHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCkBAIC0zODAsOSArMzkzLDkgQEAgRUdMQm9vbGVh
biBFR0xBUElFTlRSWSBRdWVyeURldmljZUF0dHJpYkVYVChFR0xEZXZpY2VFWFQgZGV2aWNlLCBF
R0xpbnQgYXR0cmlidXQKICAgICBEaXNwbGF5ICpvd25pbmdEaXNwbGF5ID0gZGV2LT5nZXRPd25p
bmdEaXNwbGF5KCk7CiAgICAgaWYgKG93bmluZ0Rpc3BsYXkgIT0gbnVsbHB0ciAmJiAhb3duaW5n
RGlzcGxheS0+Z2V0RXh0ZW5zaW9ucygpLmRldmljZVF1ZXJ5KQogICAgIHsKLSAgICAgICAgU2V0
R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9BQ0NFU1MsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJEZXZpY2Ugd2Fzbid0IGNyZWF0ZWQgdXNpbmcgZWdsQ3JlYXRlRGV2aWNlQU5HTEUs
IGFuZCB0aGUgRGlzcGxheSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGF0IGNy
ZWF0ZWQgaXQgZG9lc24ndCBzdXBwb3J0IGRldmljZSBxdWVyeWluZyIpKTsKKyAgICAgICAgdGhy
ZWFkLT5zZXRFcnJvcihFcnJvcihFR0xfQkFEX0FDQ0VTUywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiRGV2aWNlIHdhc24ndCBjcmVhdGVkIHVzaW5nIGVnbENyZWF0ZURldmljZUFO
R0xFLCBhbmQgdGhlIERpc3BsYXkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0
aGF0IGNyZWF0ZWQgaXQgZG9lc24ndCBzdXBwb3J0IGRldmljZSBxdWVyeWluZyIpKTsKICAgICAg
ICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKQEAgLTM5NSwxNyArNDA4LDE3IEBAIEVHTEJv
b2xlYW4gRUdMQVBJRU5UUlkgUXVlcnlEZXZpY2VBdHRyaWJFWFQoRUdMRGV2aWNlRVhUIGRldmlj
ZSwgRUdMaW50IGF0dHJpYnV0CiAgICAgICBjYXNlIEVHTF9EM0Q5X0RFVklDRV9BTkdMRToKICAg
ICAgICAgaWYgKCFkZXYtPmdldEV4dGVuc2lvbnMoKS5kZXZpY2VEM0QgfHwgZGV2LT5nZXRUeXBl
KCkgIT0gYXR0cmlidXRlKQogICAgICAgICB7Ci0gICAgICAgICAgICBTZXRHbG9iYWxFcnJvcihF
cnJvcihFR0xfQkFEX0FUVFJJQlVURSkpOworICAgICAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihF
cnJvcihFR0xfQkFEX0FUVFJJQlVURSkpOwogICAgICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsK
ICAgICAgICAgfQogICAgICAgICBlcnJvciA9IGRldi0+Z2V0RGV2aWNlKHZhbHVlKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgICBkZWZhdWx0OgotICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihF
R0xfQkFEX0FUVFJJQlVURSkpOwotICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICAg
IHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUpKTsKKyAgICAgICAgICBy
ZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAotICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAg
ICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICByZXR1cm4gKGVycm9yLmlzRXJyb3IoKSA/
IEVHTF9GQUxTRSA6IEVHTF9UUlVFKTsKIH0KIApAQCAtNDE0LDExICs0MjcsMTIgQEAgY29uc3Qg
Y2hhciAqIEVHTEFQSUVOVFJZIFF1ZXJ5RGV2aWNlU3RyaW5nRVhUKEVHTERldmljZUVYVCBkZXZp
Y2UsIEVHTGludCBuYW1lKQogewogICAgIEVWRU5UKCIoRUdMRGV2aWNlRVhUIGRldmljZSA9IDB4
JTAuOHAsIEVHTGludCBuYW1lID0gJWQpIiwKICAgICAgICAgICBkZXZpY2UsIG5hbWUpOworICAg
IFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgRGV2aWNlICpkZXYg
PSBzdGF0aWNfY2FzdDxEZXZpY2UqPihkZXZpY2UpOwogICAgIGlmIChkZXYgPT0gRUdMX05PX0RF
VklDRV9FWFQgfHwgIURldmljZTo6SXNWYWxpZERldmljZShkZXYpKQogICAgIHsKLSAgICAgICAg
U2V0R2xvYmFsRXJyb3IoRXJyb3IoRUdMX0JBRF9ERVZJQ0VfRVhUKSk7CisgICAgICAgIHRocmVh
ZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9ERVZJQ0VfRVhUKSk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIApAQCAtNDI5LDExICs0NDMsMTEgQEAgY29uc3QgY2hhciAqIEVHTEFQ
SUVOVFJZIFF1ZXJ5RGV2aWNlU3RyaW5nRVhUKEVHTERldmljZUVYVCBkZXZpY2UsIEVHTGludCBu
YW1lKQogICAgICAgICByZXN1bHQgPSBkZXYtPmdldEV4dGVuc2lvblN0cmluZygpLmNfc3RyKCk7
CiAgICAgICAgIGJyZWFrOwogICAgICAgZGVmYXVsdDoKLSAgICAgICAgU2V0R2xvYmFsRXJyb3Io
RXJyb3IoRUdMX0JBRF9ERVZJQ0VfRVhUKSk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9ERVZJQ0VfRVhUKSk7CisgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgU2V0R2xvYmFsRXJyb3IoRXJyb3Io
RUdMX1NVQ0NFU1MpKTsKKyAgICB0aHJlYWQtPnNldEVycm9yKEVycm9yKEVHTF9TVUNDRVNTKSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDQyLDE5ICs0NTYsMjAgQEAgRUdMQm9vbGVh
biBFR0xBUElFTlRSWSBRdWVyeURpc3BsYXlBdHRyaWJFWFQoRUdMRGlzcGxheSBkcHksIEVHTGlu
dCBhdHRyaWJ1dGUsIEUKIHsKICAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwg
RUdMaW50IGF0dHJpYnV0ZSA9ICVkLCBFR0xBdHRyaWIgKnZhbHVlID0gMHglMC44cCkiLAogICAg
ICAgICAgIGRweSwgYXR0cmlidXRlLCB2YWx1ZSk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRD
dXJyZW50VGhyZWFkKCk7CiAKICAgICBEaXNwbGF5ICpkaXNwbGF5ID0gc3RhdGljX2Nhc3Q8RGlz
cGxheSo+KGRweSk7CiAKICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlRGlzcGxheShkaXNwbGF5
KTsKICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJy
b3IoZXJyb3IpOworICAgICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0
dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKICAgICBpZiAoIWRpc3BsYXktPmdldEV4dGVuc2lvbnMo
KS5kZXZpY2VRdWVyeSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKEVycm9yKEVHTF9C
QURfQUNDRVNTKSk7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoRXJyb3IoRUdMX0JBRF9BQ0NF
U1MpKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAKQEAgLTQ2NiwxMSArNDgx
LDExIEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgUXVlcnlEaXNwbGF5QXR0cmliRVhUKEVHTERp
c3BsYXkgZHB5LCBFR0xpbnQgYXR0cmlidXRlLCBFCiAgICAgICAgIGJyZWFrOwogCiAgICAgICBk
ZWZhdWx0OgotICAgICAgICBTZXRHbG9iYWxFcnJvcihFcnJvcihFR0xfQkFEX0FUVFJJQlVURSkp
OwotICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAgICAgICAgIHRocmVhZC0+c2V0RXJyb3Io
RXJyb3IoRUdMX0JBRF9BVFRSSUJVVEUpKTsKKyAgICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwog
ICAgIH0KIAotICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICB0aHJlYWQtPnNldEVycm9y
KGVycm9yKTsKICAgICByZXR1cm4gKGVycm9yLmlzRXJyb3IoKSA/IEVHTF9GQUxTRSA6IEVHTF9U
UlVFKTsKIH0KIApAQCAtNDg0LDYgKzQ5OSw3IEBAIEFOR0xFX0VYUE9SVCBFR0xJbWFnZUtIUiBF
R0xBUElFTlRSWSBDcmVhdGVJbWFnZUtIUihFR0xEaXNwbGF5IGRweSwKICAgICAgICAgIihFR0xE
aXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTENvbnRleHQgY3R4ID0gMHglMC44cCwgRUdMZW51bSB0
YXJnZXQgPSAweCVYLCAiCiAgICAgICAgICJFR0xDbGllbnRCdWZmZXIgYnVmZmVyID0gMHglMC44
cCwgY29uc3QgRUdMQXR0cmliICphdHRyaWJfbGlzdCA9IDB4JTAuOHApIiwKICAgICAgICAgZHB5
LCBjdHgsIHRhcmdldCwgYnVmZmVyLCBhdHRyaWJfbGlzdCk7CisgICAgVGhyZWFkICp0aHJlYWQg
PSBHZXRDdXJyZW50VGhyZWFkKCk7CiAKICAgICBEaXNwbGF5ICpkaXNwbGF5ICAgICA9IHN0YXRp
Y19jYXN0PERpc3BsYXkgKj4oZHB5KTsKICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IHN0YXRp
Y19jYXN0PGdsOjpDb250ZXh0ICo+KGN0eCk7CkBAIC00OTIsNyArNTA4LDcgQEAgQU5HTEVfRVhQ
T1JUIEVHTEltYWdlS0hSIEVHTEFQSUVOVFJZIENyZWF0ZUltYWdlS0hSKEVHTERpc3BsYXkgZHB5
LAogICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVDcmVhdGVJbWFnZUtIUihkaXNwbGF5LCBjb250
ZXh0LCB0YXJnZXQsIGJ1ZmZlciwgYXR0cmlidXRlcyk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhyZWFk
LT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfTk9fSU1BR0U7CiAgICAgfQog
CkBAIC01MDAsNyArNTE2LDcgQEAgQU5HTEVfRVhQT1JUIEVHTEltYWdlS0hSIEVHTEFQSUVOVFJZ
IENyZWF0ZUltYWdlS0hSKEVHTERpc3BsYXkgZHB5LAogICAgIGVycm9yID0gZGlzcGxheS0+Y3Jl
YXRlSW1hZ2UoY29udGV4dCwgdGFyZ2V0LCBidWZmZXIsIGF0dHJpYnV0ZXMsICZpbWFnZSk7CiAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVy
cm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBF
R0xfTk9fSU1BR0U7CiAgICAgfQogCkBAIC01MTAsNiArNTI2LDcgQEAgQU5HTEVfRVhQT1JUIEVH
TEltYWdlS0hSIEVHTEFQSUVOVFJZIENyZWF0ZUltYWdlS0hSKEVHTERpc3BsYXkgZHB5LAogQU5H
TEVfRVhQT1JUIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgRGVzdHJveUltYWdlS0hSKEVHTERpc3Bs
YXkgZHB5LCBFR0xJbWFnZUtIUiBpbWFnZSkKIHsKICAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5
ID0gMHglMC44cCwgRUdMSW1hZ2UgaW1hZ2UgPSAweCUwLjhwKSIsIGRweSwgaW1hZ2UpOworICAg
IFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgRGlzcGxheSAqZGlz
cGxheSA9IHN0YXRpY19jYXN0PERpc3BsYXkgKj4oZHB5KTsKICAgICBJbWFnZSAqaW1nICAgICAg
ID0gc3RhdGljX2Nhc3Q8SW1hZ2UgKj4oaW1hZ2UpOwpAQCAtNTE3LDcgKzUzNCw3IEBAIEFOR0xF
X0VYUE9SVCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIERlc3Ryb3lJbWFnZUtIUihFR0xEaXNwbGF5
IGRweSwgRUdMSW1hZ2VLSFIKICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlRGVzdHJveUltYWdl
S0hSKGRpc3BsYXksIGltZyk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAg
ICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJv
cik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCkBAIC01MzQsMTEgKzU1MSwx
MiBAQCBBTkdMRV9FWFBPUlQgRUdMRGV2aWNlRVhUIEVHTEFQSUVOVFJZIENyZWF0ZURldmljZUFO
R0xFKEVHTGludCBkZXZpY2VfdHlwZSwKICAgICAgICAgIihFR0xpbnQgZGV2aWNlX3R5cGUgPSAl
ZCwgdm9pZCogbmF0aXZlX2RldmljZSA9IDB4JTAuOHAsIGNvbnN0IEVHTEF0dHJpYiogYXR0cmli
X2xpc3QgPSAiCiAgICAgICAgICIweCUwLjhwKSIsCiAgICAgICAgIGRldmljZV90eXBlLCBuYXRp
dmVfZGV2aWNlLCBhdHRyaWJfbGlzdCk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50
VGhyZWFkKCk7CiAKICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlQ3JlYXRlRGV2aWNlQU5HTEUo
ZGV2aWNlX3R5cGUsIG5hdGl2ZV9kZXZpY2UsIGF0dHJpYl9saXN0KTsKICAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAg
ICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9OT19ERVZJQ0Vf
RVhUOwogICAgIH0KIApAQCAtNTQ3LDcgKzU2NSw3IEBAIEFOR0xFX0VYUE9SVCBFR0xEZXZpY2VF
WFQgRUdMQVBJRU5UUlkgQ3JlYXRlRGV2aWNlQU5HTEUoRUdMaW50IGRldmljZV90eXBlLAogICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewogICAgICAgICBBU1NFUlQoZGV2aWNlID09IG51
bGxwdHIpOwotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+
c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX05PX0RFVklDRV9FWFQ7CiAgICAg
fQogCkBAIC01NTcsMTMgKzU3NSwxNCBAQCBBTkdMRV9FWFBPUlQgRUdMRGV2aWNlRVhUIEVHTEFQ
SUVOVFJZIENyZWF0ZURldmljZUFOR0xFKEVHTGludCBkZXZpY2VfdHlwZSwKIEFOR0xFX0VYUE9S
VCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFJlbGVhc2VEZXZpY2VBTkdMRShFR0xEZXZpY2VFWFQg
ZGV2aWNlKQogewogICAgIEVWRU5UKCIoRUdMRGV2aWNlRVhUIGRldmljZSA9IDB4JTAuOHApIiwg
ZGV2aWNlKTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAg
IERldmljZSAqZGV2ID0gc3RhdGljX2Nhc3Q8RGV2aWNlICo+KGRldmljZSk7CiAKICAgICBFcnJv
ciBlcnJvciA9IFZhbGlkYXRlUmVsZWFzZURldmljZUFOR0xFKGRldik7CiAgICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAg
ICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAg
ICAgfQogCkBAIC01NzYsNiArNTk1LDcgQEAgQU5HTEVfRVhQT1JUIEVHTEJvb2xlYW4gRUdMQVBJ
RU5UUlkgUmVsZWFzZURldmljZUFOR0xFKEVHTERldmljZUVYVCBkZXZpY2UpCiBFR0xTdHJlYW1L
SFIgRUdMQVBJRU5UUlkgQ3JlYXRlU3RyZWFtS0hSKEVHTERpc3BsYXkgZHB5LCBjb25zdCBFR0xp
bnQgKmF0dHJpYl9saXN0KQogewogICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhw
LCBjb25zdCBFR0xBdHRyaWIqIGF0dHJpYl9saXN0ID0gMHglMC44cCkiLCBkcHksIGF0dHJpYl9s
aXN0KTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAgIERp
c3BsYXkgKmRpc3BsYXkgPSBzdGF0aWNfY2FzdDxEaXNwbGF5ICo+KGRweSk7CiAgICAgQXR0cmli
dXRlTWFwIGF0dHJpYnV0ZXMgPSBBdHRyaWJ1dGVNYXA6OkNyZWF0ZUZyb21JbnRBcnJheShhdHRy
aWJfbGlzdCk7CkBAIC01ODMsNyArNjAzLDcgQEAgRUdMU3RyZWFtS0hSIEVHTEFQSUVOVFJZIENy
ZWF0ZVN0cmVhbUtIUihFR0xEaXNwbGF5IGRweSwgY29uc3QgRUdMaW50ICphdHRyaWJfbGkKICAg
ICBFcnJvciBlcnJvciA9IFZhbGlkYXRlQ3JlYXRlU3RyZWFtS0hSKGRpc3BsYXksIGF0dHJpYnV0
ZXMpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxF
cnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICBy
ZXR1cm4gRUdMX05PX1NUUkVBTV9LSFI7CiAgICAgfQogCkBAIC01OTEsMTcgKzYxMSwxOCBAQCBF
R0xTdHJlYW1LSFIgRUdMQVBJRU5UUlkgQ3JlYXRlU3RyZWFtS0hSKEVHTERpc3BsYXkgZHB5LCBj
b25zdCBFR0xpbnQgKmF0dHJpYl9saQogICAgIGVycm9yID0gZGlzcGxheS0+Y3JlYXRlU3RyZWFt
KGF0dHJpYnV0ZXMsICZzdHJlYW0pOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewot
ICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3Io
ZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX05PX1NUUkVBTV9LSFI7CiAgICAgfQogCi0gICAg
U2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAg
IHJldHVybiBzdGF0aWNfY2FzdDxFR0xTdHJlYW1LSFI+KHN0cmVhbSk7CiB9CiAKIEVHTEJvb2xl
YW4gRUdMQVBJRU5UUlkgRGVzdHJveVN0cmVhbUtIUihFR0xEaXNwbGF5IGRweSwgRUdMU3RyZWFt
S0hSIHN0cmVhbSkKIHsKICAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdM
U3RyZWFtS0hSID0gMHglMC44cCkiLCBkcHksIHN0cmVhbSk7CisgICAgVGhyZWFkICp0aHJlYWQg
PSBHZXRDdXJyZW50VGhyZWFkKCk7CiAKICAgICBEaXNwbGF5ICpkaXNwbGF5ICAgICA9IHN0YXRp
Y19jYXN0PERpc3BsYXkgKj4oZHB5KTsKICAgICBTdHJlYW0gKnN0cmVhbU9iamVjdCA9IHN0YXRp
Y19jYXN0PFN0cmVhbSAqPihzdHJlYW0pOwpAQCAtNjA5LDEyICs2MzAsMTIgQEAgRUdMQm9vbGVh
biBFR0xBUElFTlRSWSBEZXN0cm95U3RyZWFtS0hSKEVHTERpc3BsYXkgZHB5LCBFR0xTdHJlYW1L
SFIgc3RyZWFtKQogICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVEZXN0cm95U3RyZWFtS0hSKGRp
c3BsYXksIHN0cmVhbU9iamVjdCk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0g
ICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihl
cnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCiAgICAgZGlzcGxheS0+
ZGVzdHJveVN0cmVhbShzdHJlYW1PYmplY3QpOwotICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsK
KyAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICByZXR1cm4gRUdMX1RSVUU7CiB9CiAK
QEAgLTYyNyw2ICs2NDgsNyBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFN0cmVhbUF0dHJpYktI
UihFR0xEaXNwbGF5IGRweSwKICAgICAgICAgIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVH
TFN0cmVhbUtIUiBzdHJlYW0gPSAweCUwLjhwLCBFR0xlbnVtIGF0dHJpYnV0ZSA9IDB4JVgsICIK
ICAgICAgICAgIkVHTGludCB2YWx1ZSA9IDB4JVgpIiwKICAgICAgICAgZHB5LCBzdHJlYW0sIGF0
dHJpYnV0ZSwgdmFsdWUpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRocmVhZCgp
OwogCiAgICAgRGlzcGxheSAqZGlzcGxheSAgICAgPSBzdGF0aWNfY2FzdDxEaXNwbGF5ICo+KGRw
eSk7CiAgICAgU3RyZWFtICpzdHJlYW1PYmplY3QgPSBzdGF0aWNfY2FzdDxTdHJlYW0gKj4oc3Ry
ZWFtKTsKQEAgLTYzNCw3ICs2NTYsNyBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFN0cmVhbUF0
dHJpYktIUihFR0xEaXNwbGF5IGRweSwKICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlU3RyZWFt
QXR0cmliS0hSKGRpc3BsYXksIHN0cmVhbU9iamVjdCwgYXR0cmlidXRlLCB2YWx1ZSk7CiAgICAg
aWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9y
KTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xf
RkFMU0U7CiAgICAgfQogCkBAIC02NTAsNyArNjcyLDcgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRS
WSBTdHJlYW1BdHRyaWJLSFIoRUdMRGlzcGxheSBkcHksCiAgICAgICAgICAgICBVTlJFQUNIQUJM
RSgpOwogICAgIH0KIAotICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICB0aHJlYWQtPnNl
dEVycm9yKGVycm9yKTsKICAgICByZXR1cm4gRUdMX1RSVUU7CiB9CiAKQEAgLTY2Myw2ICs2ODUs
NyBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFF1ZXJ5U3RyZWFtS0hSKEVHTERpc3BsYXkgZHB5
LAogICAgICAgICAiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3RyZWFtS0hSIHN0cmVh
bSA9IDB4JTAuOHAsIEVHTGVudW0gYXR0cmlidXRlID0gMHglWCwgIgogICAgICAgICAiRUdMaW50
IHZhbHVlID0gMHglMC44cCkiLAogICAgICAgICBkcHksIHN0cmVhbSwgYXR0cmlidXRlLCB2YWx1
ZSk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7CiAKICAgICBEaXNw
bGF5ICpkaXNwbGF5ICAgICA9IHN0YXRpY19jYXN0PERpc3BsYXkgKj4oZHB5KTsKICAgICBTdHJl
YW0gKnN0cmVhbU9iamVjdCA9IHN0YXRpY19jYXN0PFN0cmVhbSAqPihzdHJlYW0pOwpAQCAtNjcw
LDcgKzY5Myw3IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgUXVlcnlTdHJlYW1LSFIoRUdMRGlz
cGxheSBkcHksCiAgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZVF1ZXJ5U3RyZWFtS0hSKGRpc3Bs
YXksIHN0cmVhbU9iamVjdCwgYXR0cmlidXRlLCB2YWx1ZSk7CiAgICAgaWYgKGVycm9yLmlzRXJy
b3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhy
ZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQog
CkBAIC02ODksNyArNzEyLDcgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBRdWVyeVN0cmVhbUtI
UihFR0xEaXNwbGF5IGRweSwKICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CiAgICAgfQogCi0g
ICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwog
ICAgIHJldHVybiBFR0xfVFJVRTsKIH0KIApAQCAtNzAyLDYgKzcyNSw3IEBAIEVHTEJvb2xlYW4g
RUdMQVBJRU5UUlkgUXVlcnlTdHJlYW11NjRLSFIoRUdMRGlzcGxheSBkcHksCiAgICAgICAgICIo
RUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdHJlYW1LSFIgc3RyZWFtID0gMHglMC44cCwg
RUdMZW51bSBhdHRyaWJ1dGUgPSAweCVYLCAiCiAgICAgICAgICJFR0x1aW50NjRLSFIgdmFsdWUg
PSAweCUwLjhwKSIsCiAgICAgICAgIGRweSwgc3RyZWFtLCBhdHRyaWJ1dGUsIHZhbHVlKTsKKyAg
ICBUaHJlYWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKIAogICAgIERpc3BsYXkgKmRp
c3BsYXkgICAgID0gc3RhdGljX2Nhc3Q8RGlzcGxheSAqPihkcHkpOwogICAgIFN0cmVhbSAqc3Ry
ZWFtT2JqZWN0ID0gc3RhdGljX2Nhc3Q8U3RyZWFtICo+KHN0cmVhbSk7CkBAIC03MDksNyArNzMz
LDcgQEAgRUdMQm9vbGVhbiBFR0xBUElFTlRSWSBRdWVyeVN0cmVhbXU2NEtIUihFR0xEaXNwbGF5
IGRweSwKICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlUXVlcnlTdHJlYW11NjRLSFIoZGlzcGxh
eSwgc3RyZWFtT2JqZWN0LCBhdHRyaWJ1dGUsIHZhbHVlKTsKICAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgICAgICB0aHJl
YWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAK
QEAgLTcyNSwxMyArNzQ5LDE1IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgUXVlcnlTdHJlYW11
NjRLSFIoRUdMRGlzcGxheSBkcHksCiAgICAgICAgICAgICBVTlJFQUNIQUJMRSgpOwogICAgIH0K
IAotICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICB0aHJlYWQtPnNldEVycm9yKGVycm9y
KTsKICAgICByZXR1cm4gRUdMX1RSVUU7CiB9CiAKIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgU3Ry
ZWFtQ29uc3VtZXJHTFRleHR1cmVFeHRlcm5hbEtIUihFR0xEaXNwbGF5IGRweSwgRUdMU3RyZWFt
S0hSIHN0cmVhbSkKIHsKICAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdM
U3RyZWFtS0hSID0gMHglMC44cCkiLCBkcHksIHN0cmVhbSk7CisgICAgVGhyZWFkICp0aHJlYWQg
PSBHZXRDdXJyZW50VGhyZWFkKCk7CisKICAgICBEaXNwbGF5ICpkaXNwbGF5ICAgICA9IHN0YXRp
Y19jYXN0PERpc3BsYXkgKj4oZHB5KTsKICAgICBTdHJlYW0gKnN0cmVhbU9iamVjdCA9IHN0YXRp
Y19jYXN0PFN0cmVhbSAqPihzdHJlYW0pOwogICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OkdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwpAQCAtNzM5LDI0ICs3NjUsMjYgQEAgRUdMQm9vbGVh
biBFR0xBUElFTlRSWSBTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dGVybmFsS0hSKEVHTERpc3Bs
YXkgZHB5LCBFR0xTdHIKICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlU3RyZWFtQ29uc3VtZXJH
TFRleHR1cmVFeHRlcm5hbEtIUihkaXNwbGF5LCBjb250ZXh0LCBzdHJlYW1PYmplY3QpOwogICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJv
cik7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdM
X0ZBTFNFOwogICAgIH0KIAogICAgIGVycm9yID0gc3RyZWFtT2JqZWN0LT5jcmVhdGVDb25zdW1l
ckdMVGV4dHVyZUV4dGVybmFsKEF0dHJpYnV0ZU1hcCgpLCBjb250ZXh0KTsKICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAg
ICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsK
ICAgICB9CiAKLSAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgdGhyZWFkLT5zZXRFcnJv
cihlcnJvcik7CiAgICAgcmV0dXJuIEVHTF9UUlVFOwogfQogCiBFR0xCb29sZWFuIEVHTEFQSUVO
VFJZIFN0cmVhbUNvbnN1bWVyQWNxdWlyZUtIUihFR0xEaXNwbGF5IGRweSwgRUdMU3RyZWFtS0hS
IHN0cmVhbSkKIHsKICAgICBFVkVOVCgiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3Ry
ZWFtS0hSID0gMHglMC44cCkiLCBkcHksIHN0cmVhbSk7CisgICAgVGhyZWFkICp0aHJlYWQgPSBH
ZXRDdXJyZW50VGhyZWFkKCk7CisKICAgICBEaXNwbGF5ICpkaXNwbGF5ICAgICA9IHN0YXRpY19j
YXN0PERpc3BsYXkgKj4oZHB5KTsKICAgICBTdHJlYW0gKnN0cmVhbU9iamVjdCA9IHN0YXRpY19j
YXN0PFN0cmVhbSAqPihzdHJlYW0pOwogICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6Okdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwpAQCAtNzY0LDI0ICs3OTIsMjYgQEAgRUdMQm9vbGVhbiBF
R0xBUElFTlRSWSBTdHJlYW1Db25zdW1lckFjcXVpcmVLSFIoRUdMRGlzcGxheSBkcHksIEVHTFN0
cmVhbUtIUiBzdHIKICAgICBFcnJvciBlcnJvciA9IFZhbGlkYXRlU3RyZWFtQ29uc3VtZXJBY3F1
aXJlS0hSKGRpc3BsYXksIGNvbnRleHQsIHN0cmVhbU9iamVjdCk7CiAgICAgaWYgKGVycm9yLmlz
RXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAg
dGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAg
fQogCiAgICAgZXJyb3IgPSBzdHJlYW1PYmplY3QtPmNvbnN1bWVyQWNxdWlyZSgpOwogICAgIGlm
IChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7
CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZB
TFNFOwogICAgIH0KIAotICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICB0aHJlYWQtPnNl
dEVycm9yKGVycm9yKTsKICAgICByZXR1cm4gRUdMX1RSVUU7CiB9CiAKIEVHTEJvb2xlYW4gRUdM
QVBJRU5UUlkgU3RyZWFtQ29uc3VtZXJSZWxlYXNlS0hSKEVHTERpc3BsYXkgZHB5LCBFR0xTdHJl
YW1LSFIgc3RyZWFtKQogewogICAgIEVWRU5UKCIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBF
R0xTdHJlYW1LSFIgPSAweCUwLjhwKSIsIGRweSwgc3RyZWFtKTsKKyAgICBUaHJlYWQgKnRocmVh
ZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKKwogICAgIERpc3BsYXkgKmRpc3BsYXkgICAgID0gc3Rh
dGljX2Nhc3Q8RGlzcGxheSAqPihkcHkpOwogICAgIFN0cmVhbSAqc3RyZWFtT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8U3RyZWFtICo+KHN0cmVhbSk7CiAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBn
bDo6R2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CkBAIC03ODksMTggKzgxOSwxOCBAQCBFR0xCb29s
ZWFuIEVHTEFQSUVOVFJZIFN0cmVhbUNvbnN1bWVyUmVsZWFzZUtIUihFR0xEaXNwbGF5IGRweSwg
RUdMU3RyZWFtS0hSIHN0cgogICAgIEVycm9yIGVycm9yID0gVmFsaWRhdGVTdHJlYW1Db25zdW1l
clJlbGVhc2VLSFIoZGlzcGxheSwgY29udGV4dCwgc3RyZWFtT2JqZWN0KTsKICAgICBpZiAoZXJy
b3IuaXNFcnJvcigpKQogICAgIHsKLSAgICAgICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAg
ICAgICB0aHJlYWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsK
ICAgICB9CiAKICAgICBlcnJvciA9IHN0cmVhbU9iamVjdC0+Y29uc3VtZXJSZWxlYXNlKCk7CiAg
ICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVy
cm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBF
R0xfRkFMU0U7CiAgICAgfQogCi0gICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgIHRocmVh
ZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgIHJldHVybiBFR0xfVFJVRTsKIH0KIApAQCAtODExLDYg
Kzg0MSw4IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVF
eHRlcm5hbEF0dHJpYnNOVihFR0xEaXNwbGF5IGRweSwKICAgICBFVkVOVCgKICAgICAgICAgIihF
R0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN0cmVhbUtIUiBzdHJlYW0gPSAweCUwLjhwLCBF
R0xBdHRyaWIgYXR0cmliX2xpc3QgPSAweCUwLjhwIiwKICAgICAgICAgZHB5LCBzdHJlYW0sIGF0
dHJpYl9saXN0KTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IEdldEN1cnJlbnRUaHJlYWQoKTsKKwog
ICAgIERpc3BsYXkgKmRpc3BsYXkgICAgICAgID0gc3RhdGljX2Nhc3Q8RGlzcGxheSAqPihkcHkp
OwogICAgIFN0cmVhbSAqc3RyZWFtT2JqZWN0ICAgID0gc3RhdGljX2Nhc3Q8U3RyZWFtICo+KHN0
cmVhbSk7CiAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgICAgPSBnbDo6R2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7CkBAIC04MjAsMTggKzg1MiwxOCBAQCBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIFN0
cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWxBdHRyaWJzTlYoRUdMRGlzcGxheSBkcHksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXR0cmlidXRlcyk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0g
ICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihl
cnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCiAgICAgZXJyb3IgPSBz
dHJlYW1PYmplY3QtPmNyZWF0ZUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWwoYXR0cmlidXRlcywg
Y29udGV4dCk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEds
b2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAg
ICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCi0gICAgU2V0R2xvYmFsRXJyb3IoZXJyb3Ip
OworICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgIHJldHVybiBFR0xfVFJVRTsKIH0K
IApAQCAtODQyLDYgKzg3NCw4IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgQ3JlYXRlU3RyZWFt
UHJvZHVjZXJEM0RUZXh0dXJlTlYxMkFOR0xFKEVHTERpc3BsYXkgZHB5LAogICAgIEVWRU5UKAog
ICAgICAgICAiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3RyZWFtS0hSIHN0cmVhbSA9
IDB4JTAuOHAsIEVHTEF0dHJpYiBhdHRyaWJfbGlzdCA9IDB4JTAuOHAiLAogICAgICAgICBkcHks
IHN0cmVhbSwgYXR0cmliX2xpc3QpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRo
cmVhZCgpOworCiAgICAgRGlzcGxheSAqZGlzcGxheSAgICAgICAgPSBzdGF0aWNfY2FzdDxEaXNw
bGF5ICo+KGRweSk7CiAgICAgU3RyZWFtICpzdHJlYW1PYmplY3QgICAgPSBzdGF0aWNfY2FzdDxT
dHJlYW0gKj4oc3RyZWFtKTsKICAgICBBdHRyaWJ1dGVNYXAgYXR0cmlidXRlcyA9IEF0dHJpYnV0
ZU1hcDo6Q3JlYXRlRnJvbUF0dHJpYkFycmF5KGF0dHJpYl9saXN0KTsKQEAgLTg1MCwxOCArODg0
LDE4IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgQ3JlYXRlU3RyZWFtUHJvZHVjZXJEM0RUZXh0
dXJlTlYxMkFOR0xFKEVHTERpc3BsYXkgZHB5LAogICAgICAgICBWYWxpZGF0ZUNyZWF0ZVN0cmVh
bVByb2R1Y2VyRDNEVGV4dHVyZU5WMTJBTkdMRShkaXNwbGF5LCBzdHJlYW1PYmplY3QsIGF0dHJp
YnV0ZXMpOwogICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9i
YWxFcnJvcihlcnJvcik7CisgICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAg
ICByZXR1cm4gRUdMX0ZBTFNFOwogICAgIH0KIAogICAgIGVycm9yID0gc3RyZWFtT2JqZWN0LT5j
cmVhdGVQcm9kdWNlckQzRDExVGV4dHVyZU5WMTIoYXR0cmlidXRlcyk7CiAgICAgaWYgKGVycm9y
LmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAg
ICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAg
ICAgfQogCi0gICAgU2V0R2xvYmFsRXJyb3IoZXJyb3IpOworICAgIHRocmVhZC0+c2V0RXJyb3Io
ZXJyb3IpOwogICAgIHJldHVybiBFR0xfVFJVRTsKIH0KIApAQCAtODc0LDYgKzkwOCw4IEBAIEVH
TEJvb2xlYW4gRUdMQVBJRU5UUlkgU3RyZWFtUG9zdEQzRFRleHR1cmVOVjEyQU5HTEUoRUdMRGlz
cGxheSBkcHksCiAgICAgICAgICIoRUdMRGlzcGxheSBkcHkgPSAweCUwLjhwLCBFR0xTdHJlYW1L
SFIgc3RyZWFtID0gMHglMC44cCwgdm9pZCogdGV4dHVyZSA9IDB4JTAuOHAsICIKICAgICAgICAg
IkVHTEF0dHJpYiBhdHRyaWJfbGlzdCA9IDB4JTAuOHAiLAogICAgICAgICBkcHksIHN0cmVhbSwg
dGV4dHVyZSwgYXR0cmliX2xpc3QpOworICAgIFRocmVhZCAqdGhyZWFkID0gR2V0Q3VycmVudFRo
cmVhZCgpOworCiAgICAgRGlzcGxheSAqZGlzcGxheSAgICAgICAgPSBzdGF0aWNfY2FzdDxEaXNw
bGF5ICo+KGRweSk7CiAgICAgU3RyZWFtICpzdHJlYW1PYmplY3QgICAgPSBzdGF0aWNfY2FzdDxT
dHJlYW0gKj4oc3RyZWFtKTsKICAgICBBdHRyaWJ1dGVNYXAgYXR0cmlidXRlcyA9IEF0dHJpYnV0
ZU1hcDo6Q3JlYXRlRnJvbUF0dHJpYkFycmF5KGF0dHJpYl9saXN0KTsKQEAgLTg4MSwxOCArOTE3
LDE4IEBAIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgU3RyZWFtUG9zdEQzRFRleHR1cmVOVjEyQU5H
TEUoRUdMRGlzcGxheSBkcHksCiAgICAgRXJyb3IgZXJyb3IgPSBWYWxpZGF0ZVN0cmVhbVBvc3RE
M0RUZXh0dXJlTlYxMkFOR0xFKGRpc3BsYXksIHN0cmVhbU9iamVjdCwgdGV4dHVyZSwgYXR0cmli
dXRlcyk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0gICAgICAgIFNldEdsb2Jh
bEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihlcnJvcik7CiAgICAgICAg
IHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCiAgICAgZXJyb3IgPSBzdHJlYW1PYmplY3QtPnBv
c3REM0QxMU5WMTJUZXh0dXJlKHRleHR1cmUsIGF0dHJpYnV0ZXMpOwogICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAg
IHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOwogICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOwogICAg
IH0KIAotICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICB0aHJlYWQtPnNldEVycm9yKGVy
cm9yKTsKICAgICByZXR1cm4gRUdMX1RSVUU7CiB9CiAKQEAgLTkwNiw2ICs5NDIsNyBAQCBFR0xC
b29sZWFuIEVHTEFQSUVOVFJZIEdldFN5bmNWYWx1ZXNDSFJPTUlVTShFR0xEaXNwbGF5IGRweSwK
ICAgICAgICAgIihFR0xEaXNwbGF5IGRweSA9IDB4JTAuOHAsIEVHTFN1cmZhY2Ugc3VyZmFjZSA9
IDB4JTAuOHAsIEVHTHVpbnQ2NEtIUiogdXN0ID0gMHglMC44cCwgIgogICAgICAgICAiRUdMdWlu
dDY0S0hSKiBtc2MgPSAweCUwLjhwLCBFR0x1aW50NjRLSFIqIHNiYyA9IDB4JTAuOHAiLAogICAg
ICAgICBkcHksIHN1cmZhY2UsIHVzdCwgbXNjLCBzYmMpOworICAgIFRocmVhZCAqdGhyZWFkID0g
R2V0Q3VycmVudFRocmVhZCgpOwogCiAgICAgRGlzcGxheSAqZGlzcGxheSAgICA9IHN0YXRpY19j
YXN0PERpc3BsYXkgKj4oZHB5KTsKICAgICBTdXJmYWNlICplZ2xTdXJmYWNlID0gc3RhdGljX2Nh
c3Q8U3VyZmFjZSAqPihzdXJmYWNlKTsKQEAgLTkxMywxOCArOTUwLDQ5IEBAIEVHTEJvb2xlYW4g
RUdMQVBJRU5UUlkgR2V0U3luY1ZhbHVlc0NIUk9NSVVNKEVHTERpc3BsYXkgZHB5LAogICAgIEVy
cm9yIGVycm9yID0gVmFsaWRhdGVHZXRTeW5jVmFsdWVzQ0hST01JVU0oZGlzcGxheSwgZWdsU3Vy
ZmFjZSwgdXN0LCBtc2MsIHNiYyk7CiAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICB7Ci0g
ICAgICAgIFNldEdsb2JhbEVycm9yKGVycm9yKTsKKyAgICAgICAgdGhyZWFkLT5zZXRFcnJvcihl
cnJvcik7CiAgICAgICAgIHJldHVybiBFR0xfRkFMU0U7CiAgICAgfQogCiAgICAgZXJyb3IgPSBl
Z2xTdXJmYWNlLT5nZXRTeW5jVmFsdWVzKHVzdCwgbXNjLCBzYmMpOwogICAgIGlmIChlcnJvci5p
c0Vycm9yKCkpCiAgICAgewotICAgICAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CisgICAgICAg
IHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gRUdMX0ZBTFNFOworICAg
IH0KKworICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOworICAgIHJldHVybiBFR0xfVFJVRTsK
K30KKworQU5HTEVfRVhQT1JUIEVHTEJvb2xlYW4gU3dhcEJ1ZmZlcnNXaXRoRGFtYWdlRVhUKEVH
TERpc3BsYXkgZHB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xpbnQgKnJlY3RzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTGludCBuX3JlY3RzKQoreworICAgIEVWRU5U
KAorICAgICAgICAiKEVHTERpc3BsYXkgZHB5ID0gMHglMC44cCwgRUdMU3VyZmFjZSBzdXJmYWNl
ID0gMHglMC44cCwgRUdMaW50ICpyZWN0cyA9IDB4JTAuOHAsIEVHTGludCAiCisgICAgICAgICJu
X3JlY3RzID0gJWQpIiwKKyAgICAgICAgZHB5LCBzdXJmYWNlLCByZWN0cywgbl9yZWN0cyk7Cisg
ICAgVGhyZWFkICp0aHJlYWQgPSBHZXRDdXJyZW50VGhyZWFkKCk7CisKKyAgICBEaXNwbGF5ICpk
aXNwbGF5ICAgID0gc3RhdGljX2Nhc3Q8RGlzcGxheSAqPihkcHkpOworICAgIFN1cmZhY2UgKmVn
bFN1cmZhY2UgPSBzdGF0aWNfY2FzdDxTdXJmYWNlICo+KHN1cmZhY2UpOworCisgICAgRXJyb3Ig
ZXJyb3IgPSBWYWxpZGF0ZVN3YXBCdWZmZXJzV2l0aERhbWFnZUVYVChkaXNwbGF5LCBlZ2xTdXJm
YWNlLCByZWN0cywgbl9yZWN0cyk7CisgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKKyAgICB7Cisg
ICAgICAgIHRocmVhZC0+c2V0RXJyb3IoZXJyb3IpOworICAgICAgICByZXR1cm4gRUdMX0ZBTFNF
OworICAgIH0KKworICAgIGVycm9yID0gZWdsU3VyZmFjZS0+c3dhcFdpdGhEYW1hZ2UocmVjdHMs
IG5fcmVjdHMpOworICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgeworICAgICAgICB0aHJl
YWQtPnNldEVycm9yKGVycm9yKTsKICAgICAgICAgcmV0dXJuIEVHTF9GQUxTRTsKICAgICB9CiAK
LSAgICBTZXRHbG9iYWxFcnJvcihlcnJvcik7CiAgICAgcmV0dXJuIEVHTF9UUlVFOwogfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9w
b2ludHNfZWdsX2V4dC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9l
bnRyeV9wb2ludHNfZWdsX2V4dC5oCmluZGV4IDEwOWFjZjhmNTRlLi5kMDViMTJhZGM1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2lu
dHNfZWdsX2V4dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
ZW50cnlfcG9pbnRzX2VnbF9leHQuaApAQCAtOSw5ICs5LDkgQEAKICNpZm5kZWYgTElCR0xFU1Yy
X0VOVFJZUE9JTlRTRUdMRVhUX0hfCiAjZGVmaW5lIExJQkdMRVNWMl9FTlRSWVBPSU5UU0VHTEVY
VF9IXwogCi0jaW5jbHVkZSA8QU5HTEUvZWdsLmg+Ci0jaW5jbHVkZSA8QU5HTEUvZWdsZXh0Lmg+
Ci0jaW5jbHVkZSA8QU5HTEUvZXhwb3J0Lmg+CisjaW5jbHVkZSA8RUdML2VnbC5oPgorI2luY2x1
ZGUgPEVHTC9lZ2xleHQuaD4KKyNpbmNsdWRlIDxleHBvcnQuaD4KIAogbmFtZXNwYWNlIGVnbAog
ewpAQCAtODcsNiArODcsMTIgQEAgQU5HTEVfRVhQT1JUIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkg
R2V0U3luY1ZhbHVlc0NIUk9NSVVNKEVHTERpc3BsYXkgZHB5LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTHVpbnQ2NEtIUiAqbXNj
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVHTHVpbnQ2NEtIUiAqc2JjKTsKIAorLy8gRUdMX0VYVF9zd2FwX2J1ZmZlcnNfd2l0aF9k
YW1hZ2UKK0FOR0xFX0VYUE9SVCBFR0xCb29sZWFuIFN3YXBCdWZmZXJzV2l0aERhbWFnZUVYVChF
R0xEaXNwbGF5IGRweSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFR0xTdXJmYWNlIHN1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRUdMaW50ICpyZWN0cywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xpbnQgbl9yZWN0cyk7CisKIH0gIC8vIG5h
bWVzcGFjZSBlZ2wKIAogI2VuZGlmIC8vIExJQkdMRVNWMl9FTlRSWVBPSU5UU0VHTEVYVF9IXwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9w
b2ludHNfZ2xlc18yXzAuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzAuY3BwCmluZGV4IDk4M2UxZWYyNzBjLi5kNWMyOTc1NWJj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRy
eV9wb2ludHNfZ2xlc18yXzAuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfMl8wLmNwcApAQCAtMjEsNyArMjEsNiBAQAogI2lu
Y2x1ZGUgImxpYkFOR0xFL1Byb2dyYW0uaCIKICNpbmNsdWRlICJsaWJBTkdMRS9UZXh0dXJlLmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvVmVydGV4QXJyYXkuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9W
ZXJ0ZXhBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9GcmFtZWJ1ZmZlckF0dGFjaG1l
bnQuaCIKIAogI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUy5oIgpAQCAtMzIsNyArMzEs
NiBAQAogCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCiAjaW5jbHVkZSAiY29tbW9uL3V0aWxp
dGllcy5oIgotI2luY2x1ZGUgImNvbW1vbi92ZXJzaW9uLmgiCiAKIG5hbWVzcGFjZSBnbAogewpA
QCAtNzYsMjYgKzc0LDEzIEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZEF0dHJpYkxvY2F0aW9uKEdM
dWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMY2hhcioKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRSSUJTKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBQcm9ncmFtICpwcm9n
cmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pOwotCi0gICAgICAg
IGlmICghcHJvZ3JhbU9iamVjdCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKHN0cm5jbXAobmFtZSwgImdsXyIsIDMpID09IDApCisgICAg
ICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlk
YXRlQmluZEF0dHJpYkxvY2F0aW9uKGNvbnRleHQsIHByb2dyYW0sIGluZGV4LCBuYW1lKSkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IHByb2dyYW1PYmplY3QtPmJpbmRBdHRyaWJ1dGVMb2NhdGlvbihpbmRleCwgbmFtZSk7CisgICAg
ICAgIGNvbnRleHQtPmJpbmRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBpbmRleCwgbmFtZSk7CiAg
ICAgfQogfQogCkBAIC0xMDYsNTAgKzkxLDEyIEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZEJ1ZmZl
cihHTGVudW0gdGFyZ2V0LCBHTHVpbnQgYnVmZmVyKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IGlmICghVmFsaWRCdWZmZXJUYXJnZXQoY29udGV4dCwgdGFyZ2V0KSkKLSAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWNvbnRleHQtPmdl
dEdMU3RhdGUoKS5pc0JpbmRHZW5lcmF0ZXNSZXNvdXJjZUVuYWJsZWQoKSAmJgotICAgICAgICAg
ICAgIWNvbnRleHQtPmlzQnVmZmVyR2VuZXJhdGVkKGJ1ZmZlcikpCisgICAgICAgIGlmICghY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVCaW5kQnVmZmVyKGNvbnRleHQsIHRh
cmdldCwgYnVmZmVyKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJCdWZmZXIgd2FzIG5vdCBnZW5lcmF0ZWQi
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBzd2l0Y2ggKHRh
cmdldCkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfQVJSQVlfQlVGRkVSOgotICAgICAg
ICAgICAgY29udGV4dC0+YmluZEFycmF5QnVmZmVyKGJ1ZmZlcik7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgY2FzZSBHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUjoKLSAgICAgICAgICAg
IGNvbnRleHQtPmJpbmRFbGVtZW50QXJyYXlCdWZmZXIoYnVmZmVyKTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICBjYXNlIEdMX0NPUFlfUkVBRF9CVUZGRVI6Ci0gICAgICAgICAgICBj
b250ZXh0LT5iaW5kQ29weVJlYWRCdWZmZXIoYnVmZmVyKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICBjYXNlIEdMX0NPUFlfV1JJVEVfQlVGRkVSOgotICAgICAgICAgICAgY29udGV4
dC0+YmluZENvcHlXcml0ZUJ1ZmZlcihidWZmZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgIGNhc2UgR0xfUElYRUxfUEFDS19CVUZGRVI6Ci0gICAgICAgICAgICBjb250ZXh0LT5i
aW5kUGl4ZWxQYWNrQnVmZmVyKGJ1ZmZlcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgY2FzZSBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSOgotICAgICAgICAgICAgY29udGV4dC0+Ymlu
ZFBpeGVsVW5wYWNrQnVmZmVyKGJ1ZmZlcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgY2FzZSBHTF9VTklGT1JNX0JVRkZFUjoKLSAgICAgICAgICAgIGNvbnRleHQtPmJpbmRHZW5l
cmljVW5pZm9ybUJ1ZmZlcihidWZmZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
IGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUjoKLSAgICAgICAgICAgIGNvbnRleHQt
PmJpbmRHZW5lcmljVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIoYnVmZmVyKTsKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmJpbmRCdWZmZXIodGFyZ2V0LCBidWZmZXIpOwog
ICAgIH0KIH0KIApAQCAtMTYwLDI4ICsxMDcsMTIgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kRnJh
bWVidWZmZXIoR0xlbnVtIHRhcmdldCwgR0x1aW50IGZyYW1lYnVmZmVyKQogICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIGlmICghVmFsaWRGcmFtZWJ1ZmZlclRhcmdldCh0YXJnZXQpKQorICAgICAg
ICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlQmluZEZyYW1lYnVm
ZmVyKGNvbnRleHQsIHRhcmdldCwgZnJhbWVidWZmZXIpKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghY29udGV4dC0+Z2V0R0xTdGF0
ZSgpLmlzQmluZEdlbmVyYXRlc1Jlc291cmNlRW5hYmxlZCgpICYmCi0gICAgICAgICAgICAhY29u
dGV4dC0+aXNGcmFtZWJ1ZmZlckdlbmVyYXRlZChmcmFtZWJ1ZmZlcikpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiRnJhbWVidWZmZXIgd2FzIG5vdCBnZW5lcmF0ZWQiKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGFyZ2V0ID09IEdMX1JFQURfRlJBTUVCVUZGRVJf
QU5HTEUgfHwgdGFyZ2V0ID09IEdMX0ZSQU1FQlVGRkVSKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5iaW5kUmVhZEZyYW1lYnVmZmVyKGZyYW1lYnVmZmVyKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmICh0YXJnZXQgPT0gR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSB8fCB0YXJn
ZXQgPT0gR0xfRlJBTUVCVUZGRVIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmJp
bmREcmF3RnJhbWVidWZmZXIoZnJhbWVidWZmZXIpOwotICAgICAgICB9CisgICAgICAgIGNvbnRl
eHQtPmJpbmRGcmFtZWJ1ZmZlcih0YXJnZXQsIGZyYW1lYnVmZmVyKTsKICAgICB9CiB9CiAKQEAg
LTE5MiwyMCArMTIzLDEyIEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZFJlbmRlcmJ1ZmZlcihHTGVu
dW0gdGFyZ2V0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IGlmICh0YXJnZXQgIT0gR0xfUkVOREVSQlVGRkVSKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlQmluZFJlbmRlcmJ1ZmZlcihjb250ZXh0LCB0YXJn
ZXQsIHJlbmRlcmJ1ZmZlcikpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRHTFN0YXRlKCkuaXNCaW5kR2VuZXJh
dGVzUmVzb3VyY2VFbmFibGVkKCkgJiYKLSAgICAgICAgICAgICFjb250ZXh0LT5pc1JlbmRlcmJ1
ZmZlckdlbmVyYXRlZChyZW5kZXJidWZmZXIpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250
ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIlJlbmRlcmJ1ZmZl
ciB3YXMgbm90IGdlbmVyYXRlZCIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGNvbnRleHQtPmJpbmRSZW5kZXJidWZmZXIocmVuZGVyYnVmZmVyKTsKKyAgICAg
ICAgY29udGV4dC0+YmluZFJlbmRlcmJ1ZmZlcih0YXJnZXQsIHJlbmRlcmJ1ZmZlcik7CiAgICAg
fQogfQogCkBAIC0yMTYsNyArMTM5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBCaW5kVGV4dHVyZShH
TGVudW0gdGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSkKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBp
ZiAoIVZhbGlkYXRlQmluZFRleHR1cmUoY29udGV4dCwgdGFyZ2V0LCB0ZXh0dXJlKSkKKyAgICAg
ICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUJpbmRUZXh0dXJl
KGNvbnRleHQsIHRhcmdldCwgdGV4dHVyZSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMjMzLDEzICsxNTYsMjkgQEAgdm9pZCBHTF9BUElFTlRSWSBCbGVu
ZENvbG9yKEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xh
bXAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAg
aWYgKGNvbnRleHQpCiAgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgJiYgIVZhbGlkYXRlQmxlbmRDb2xvcihjb250ZXh0LCByZWQsIGdyZWVuLCBibHVlLCBhbHBo
YSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAg
IGNvbnRleHQtPmJsZW5kQ29sb3IocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogICAgIH0KIH0K
IAogdm9pZCBHTF9BUElFTlRSWSBCbGVuZEVxdWF0aW9uKEdMZW51bSBtb2RlKQogewotICAgIEJs
ZW5kRXF1YXRpb25TZXBhcmF0ZShtb2RlLCBtb2RlKTsKKyAgICBFVkVOVCgiKEdMZW51bSBtb2Rl
ID0gMHglWCkiLCBtb2RlKTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVCbGVuZEVxdWF0aW9uKGNvbnRleHQsIG1v
ZGUpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBjb250ZXh0LT5ibGVuZEVxdWF0aW9uKG1vZGUpOworICAgIH0KIH0KIAogdm9pZCBHTF9BUElF
TlRSWSBCbGVuZEVxdWF0aW9uU2VwYXJhdGUoR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxw
aGEpCkBAIC0yNDksMzEgKzE4OCw5IEBAIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRFcXVhdGlvblNl
cGFyYXRlKEdMZW51bSBtb2RlUkdCLCBHTGVudW0gbW9kZUFscGhhKQogICAgIENvbnRleHQgKmNv
bnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIHN3aXRjaCAobW9kZVJHQikKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xf
RlVOQ19BREQ6Ci0gICAgICAgICAgY2FzZSBHTF9GVU5DX1NVQlRSQUNUOgotICAgICAgICAgIGNh
c2UgR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUOgotICAgICAgICAgIGNhc2UgR0xfTUlOOgotICAg
ICAgICAgIGNhc2UgR0xfTUFYOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRj
aCAobW9kZUFscGhhKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYK
KyAgICAgICAgICAgICFWYWxpZGF0ZUJsZW5kRXF1YXRpb25TZXBhcmF0ZShjb250ZXh0LCBtb2Rl
UkdCLCBtb2RlQWxwaGEpKQogICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9GVU5DX0FERDoK
LSAgICAgICAgICBjYXNlIEdMX0ZVTkNfU1VCVFJBQ1Q6Ci0gICAgICAgICAgY2FzZSBHTF9GVU5D
X1JFVkVSU0VfU1VCVFJBQ1Q6Ci0gICAgICAgICAgY2FzZSBHTF9NSU46Ci0gICAgICAgICAgY2Fz
ZSBHTF9NQVg6Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI4Myw3ICsyMDAsMTggQEAgdm9p
ZCBHTF9BUElFTlRSWSBCbGVuZEVxdWF0aW9uU2VwYXJhdGUoR0xlbnVtIG1vZGVSR0IsIEdMZW51
bSBtb2RlQWxwaGEpCiAKIHZvaWQgR0xfQVBJRU5UUlkgQmxlbmRGdW5jKEdMZW51bSBzZmFjdG9y
LCBHTGVudW0gZGZhY3RvcikKIHsKLSAgICBCbGVuZEZ1bmNTZXBhcmF0ZShzZmFjdG9yLCBkZmFj
dG9yLCBzZmFjdG9yLCBkZmFjdG9yKTsKKyAgICBFVkVOVCgiKEdMZW51bSBzZmFjdG9yID0gMHgl
WCwgR0xlbnVtIGRmYWN0b3IgPSAweCVYKSIsIHNmYWN0b3IsIGRmYWN0b3IpOworCisgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0
KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxp
ZGF0ZUJsZW5kRnVuYyhjb250ZXh0LCBzZmFjdG9yLCBkZmFjdG9yKSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29udGV4dC0+YmxlbmRGdW5j
KHNmYWN0b3IsIGRmYWN0b3IpOworICAgIH0KIH0KIAogdm9pZCBHTF9BUElFTlRSWSBCbGVuZEZ1
bmNTZXBhcmF0ZShHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEs
IEdMZW51bSBkc3RBbHBoYSkKQEAgLTI5NCwxMzUgKzIyMiwxMCBAQCB2b2lkIEdMX0FQSUVOVFJZ
IEJsZW5kRnVuY1NlcGFyYXRlKEdMZW51bSBzcmNSR0IsIEdMZW51bSBkc3RSR0IsIEdMZW51bSBz
cmNBbHBoYQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoc3JjUkdCKQotICAgICAg
ICB7Ci0gICAgICAgICAgY2FzZSBHTF9aRVJPOgotICAgICAgICAgIGNhc2UgR0xfT05FOgotICAg
ICAgICAgIGNhc2UgR0xfU1JDX0NPTE9SOgotICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NS
Q19DT0xPUjoKLSAgICAgICAgICBjYXNlIEdMX0RTVF9DT0xPUjoKLSAgICAgICAgICBjYXNlIEdM
X09ORV9NSU5VU19EU1RfQ09MT1I6Ci0gICAgICAgICAgY2FzZSBHTF9TUkNfQUxQSEE6Ci0gICAg
ICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBOgotICAgICAgICAgIGNhc2UgR0xfRFNU
X0FMUEhBOgotICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9BTFBIQToKLSAgICAgICAg
ICBjYXNlIEdMX0NPTlNUQU5UX0NPTE9SOgotICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0NP
TlNUQU5UX0NPTE9SOgotICAgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQUxQSEE6Ci0gICAgICAg
ICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEE6Ci0gICAgICAgICAgY2FzZSBHTF9T
UkNfQUxQSEFfU0FUVVJBVEU6Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSkpOwotICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0
Y2ggKGRzdFJHQikKLSAgICAgICAgewotICAgICAgICAgICAgY2FzZSBHTF9aRVJPOgotICAgICAg
ICAgICAgY2FzZSBHTF9PTkU6Ci0gICAgICAgICAgICBjYXNlIEdMX1NSQ19DT0xPUjoKLSAgICAg
ICAgICAgIGNhc2UgR0xfT05FX01JTlVTX1NSQ19DT0xPUjoKLSAgICAgICAgICAgIGNhc2UgR0xf
RFNUX0NPTE9SOgotICAgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNUX0NPTE9SOgotICAg
ICAgICAgICAgY2FzZSBHTF9TUkNfQUxQSEE6Ci0gICAgICAgICAgICBjYXNlIEdMX09ORV9NSU5V
U19TUkNfQUxQSEE6Ci0gICAgICAgICAgICBjYXNlIEdMX0RTVF9BTFBIQToKLSAgICAgICAgICAg
IGNhc2UgR0xfT05FX01JTlVTX0RTVF9BTFBIQToKLSAgICAgICAgICAgIGNhc2UgR0xfQ09OU1RB
TlRfQ09MT1I6Ci0gICAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUjoK
LSAgICAgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQUxQSEE6Ci0gICAgICAgICAgICBjYXNlIEdM
X09ORV9NSU5VU19DT05TVEFOVF9BTFBIQToKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICAgICAgY2FzZSBHTF9TUkNfQUxQSEFfU0FUVVJBVEU6Ci0gICAgICAgICAgICAgICAgaWYg
KGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfRU5VTSkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAoc3Jj
QWxwaGEpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1pFUk86Ci0gICAgICAgICAgY2Fz
ZSBHTF9PTkU6Ci0gICAgICAgICAgY2FzZSBHTF9TUkNfQ09MT1I6Ci0gICAgICAgICAgY2FzZSBH
TF9PTkVfTUlOVVNfU1JDX0NPTE9SOgotICAgICAgICAgIGNhc2UgR0xfRFNUX0NPTE9SOgotICAg
ICAgICAgIGNhc2UgR0xfT05FX01JTlVTX0RTVF9DT0xPUjoKLSAgICAgICAgICBjYXNlIEdMX1NS
Q19BTFBIQToKLSAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19TUkNfQUxQSEE6Ci0gICAgICAg
ICAgY2FzZSBHTF9EU1RfQUxQSEE6Ci0gICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfRFNUX0FM
UEhBOgotICAgICAgICAgIGNhc2UgR0xfQ09OU1RBTlRfQ09MT1I6Ci0gICAgICAgICAgY2FzZSBH
TF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6Ci0gICAgICAgICAgY2FzZSBHTF9DT05TVEFOVF9B
TFBIQToKLSAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQToKLSAgICAg
ICAgICBjYXNlIEdMX1NSQ19BTFBIQV9TQVRVUkFURToKLSAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIHN3aXRjaCAoZHN0QWxwaGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNhc2Ug
R0xfWkVSTzoKLSAgICAgICAgICAgIGNhc2UgR0xfT05FOgotICAgICAgICAgICAgY2FzZSBHTF9T
UkNfQ09MT1I6Ci0gICAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19TUkNfQ09MT1I6Ci0gICAg
ICAgICAgICBjYXNlIEdMX0RTVF9DT0xPUjoKLSAgICAgICAgICAgIGNhc2UgR0xfT05FX01JTlVT
X0RTVF9DT0xPUjoKLSAgICAgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhBOgotICAgICAgICAgICAg
Y2FzZSBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBOgotICAgICAgICAgICAgY2FzZSBHTF9EU1RfQUxQ
SEE6Ci0gICAgICAgICAgICBjYXNlIEdMX09ORV9NSU5VU19EU1RfQUxQSEE6Ci0gICAgICAgICAg
ICBjYXNlIEdMX0NPTlNUQU5UX0NPTE9SOgotICAgICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNf
Q09OU1RBTlRfQ09MT1I6Ci0gICAgICAgICAgICBjYXNlIEdMX0NPTlNUQU5UX0FMUEhBOgotICAg
ICAgICAgICAgY2FzZSBHTF9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEE6Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGNhc2UgR0xfU1JDX0FMUEhBX1NBVFVSQVRFOgotICAg
ICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoY29udGV4dC0+Z2V0TGltaXRhdGlvbnMoKS5ub1NpbXVsdGFuZW91c0NvbnN0YW50
Q29sb3JBbmRBbHBoYUJsZW5kRnVuYykKLSAgICAgICAgewotICAgICAgICAgICAgYm9vbCBjb25z
dGFudENvbG9yVXNlZCA9Ci0gICAgICAgICAgICAgICAgKHNyY1JHQiA9PSBHTF9DT05TVEFOVF9D
T0xPUiB8fCBzcmNSR0IgPT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SIHx8Ci0gICAgICAg
ICAgICAgICAgIGRzdFJHQiA9PSBHTF9DT05TVEFOVF9DT0xPUiB8fCBkc3RSR0IgPT0gR0xfT05F
X01JTlVTX0NPTlNUQU5UX0NPTE9SKTsKLQotICAgICAgICAgICAgYm9vbCBjb25zdGFudEFscGhh
VXNlZCA9Ci0gICAgICAgICAgICAgICAgKHNyY1JHQiA9PSBHTF9DT05TVEFOVF9BTFBIQSB8fCBz
cmNSR0IgPT0gR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBIHx8Ci0gICAgICAgICAgICAgICAg
IGRzdFJHQiA9PSBHTF9DT05TVEFOVF9BTFBIQSB8fCBkc3RSR0IgPT0gR0xfT05FX01JTlVTX0NP
TlNUQU5UX0FMUEhBKTsKLQotICAgICAgICAgICAgaWYgKGNvbnN0YW50Q29sb3JVc2VkICYmIGNv
bnN0YW50QWxwaGFVc2VkKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEVSUigKLSAg
ICAgICAgICAgICAgICAgICAgIlNpbXVsdGFuZW91cyB1c2Ugb2YgR0xfQ09OU1RBTlRfQUxQSEEv
R0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBIGFuZCAiCi0gICAgICAgICAgICAgICAgICAgICJH
TF9DT05TVEFOVF9DT0xPUi9HTF9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1Igbm90IHN1cHBvcnRl
ZCBieSB0aGlzICIKLSAgICAgICAgICAgICAgICAgICAgImltcGxlbWVudGF0aW9uLiIpOwotICAg
ICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICBp
ZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZUJs
ZW5kRnVuY1NlcGFyYXRlKGNvbnRleHQsIHNyY1JHQiwgZHN0UkdCLCBzcmNBbHBoYSwgZHN0QWxw
aGEpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAg
ICBjb250ZXh0LT5ibGVuZEZ1bmNTZXBhcmF0ZShzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRz
dEFscGhhKTsKQEAgLTQ3MSwxNiArMjc0LDEyIEBAIEdMZW51bSBHTF9BUElFTlRSWSBDaGVja0Zy
YW1lYnVmZmVyU3RhdHVzKEdMZW51bSB0YXJnZXQpCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
aWYgKCFWYWxpZEZyYW1lYnVmZmVyVGFyZ2V0KHRhcmdldCkpCisgICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGNv
bnRleHQsIHRhcmdldCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgIH0KIAotICAgICAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRH
TFN0YXRlKCkuZ2V0VGFyZ2V0RnJhbWVidWZmZXIodGFyZ2V0KTsKLSAgICAgICAgQVNTRVJUKGZy
YW1lYnVmZmVyKTsKLQotICAgICAgICByZXR1cm4gZnJhbWVidWZmZXItPmNoZWNrU3RhdHVzKGNv
bnRleHQtPmdldENvbnRleHRTdGF0ZSgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQtPmNoZWNr
RnJhbWVidWZmZXJTdGF0dXModGFyZ2V0KTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTUx
MCw2ICszMDksMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBDbGVhckNvbG9yKEdMY2xhbXBmIHJlZCwg
R0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXAKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewor
ICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlQ2xlYXJD
b2xvcihjb250ZXh0LCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSkpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGNvbnRleHQtPmNsZWFyQ29sb3Io
cmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogICAgIH0KIH0KQEAgLTUyMSw2ICszMjUsMTEgQEAg
dm9pZCBHTF9BUElFTlRSWSBDbGVhckRlcHRoZihHTGNsYW1wZiBkZXB0aCkKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRl
Q2xlYXJEZXB0aGYoY29udGV4dCwgZGVwdGgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKwogICAgICAgICBjb250ZXh0LT5jbGVhckRlcHRoZihkZXB0aCk7CiAg
ICAgfQogfQpAQCAtNTMyLDYgKzM0MSwxMSBAQCB2b2lkIEdMX0FQSUVOVFJZIENsZWFyU3RlbmNp
bChHTGludCBzKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSAmJiAhVmFsaWRhdGVDbGVhclN0ZW5jaWwoY29udGV4dCwgcykpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGNvbnRleHQtPmNs
ZWFyU3RlbmNpbChzKTsKICAgICB9CiB9CkBAIC01NDQsNiArMzU4LDExIEBAIHZvaWQgR0xfQVBJ
RU5UUlkgQ29sb3JNYXNrKEdMYm9vbGVhbiByZWQsIEdMYm9vbGVhbiBncmVlbiwgR0xib29sZWFu
IGJsdWUsIEdMYm9vCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUNvbG9yTWFzayhjb250ZXh0LCByZWQsIGdyZWVuLCBi
bHVlLCBhbHBoYSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CiAgICAgICAgIGNvbnRleHQtPmNvbG9yTWFzayhyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiAg
ICAgfQogfQpAQCAtNTU1LDEyICszNzQsMTIgQEAgdm9pZCBHTF9BUElFTlRSWSBDb21waWxlU2hh
ZGVyKEdMdWludCBzaGFkZXIpCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgU2hhZGVyICpzaGFk
ZXJPYmplY3QgPSBHZXRWYWxpZFNoYWRlcihjb250ZXh0LCBzaGFkZXIpOwotICAgICAgICBpZiAo
IXNoYWRlck9iamVjdCkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYm
ICFWYWxpZGF0ZUNvbXBpbGVTaGFkZXIoY29udGV4dCwgc2hhZGVyKSkKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIHNoYWRlck9iamVjdC0+Y29tcGls
ZShjb250ZXh0LT5nZXRDb21waWxlcigpKTsKKworICAgICAgICBjb250ZXh0LT5jb21waWxlU2hh
ZGVyKHNoYWRlcik7CiAgICAgfQogfQogCkBAIC02NTUsNiArNDc0LDExIEBAIEdMdWludCBHTF9B
UElFTlRSWSBDcmVhdGVQcm9ncmFtKHZvaWQpCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKKyAgICAgICAgaWYg
KCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUNyZWF0ZVByb2dyYW0oY29u
dGV4dCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKICAg
ICAgICAgcmV0dXJuIGNvbnRleHQtPmNyZWF0ZVByb2dyYW0oKTsKICAgICB9CiAKQEAgLTY2OCw3
ICs0OTIsNiBAQCBHTHVpbnQgR0xfQVBJRU5UUlkgQ3JlYXRlU2hhZGVyKEdMZW51bSB0eXBlKQog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0KICAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
ICYmICFWYWxpZGF0ZUNyZWF0ZVNoYWRlcihjb250ZXh0LCB0eXBlKSkKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIDA7CkBAIC02ODUsMTUgKzUwOCw4IEBAIHZvaWQgR0xfQVBJRU5UUlkg
Q3VsbEZhY2UoR0xlbnVtIG1vZGUpCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3dpdGNoICht
b2RlKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRl
Q3VsbEZhY2UoY29udGV4dCwgbW9kZSkpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0ZS
T05UOgotICAgICAgICAgIGNhc2UgR0xfQkFDSzoKLSAgICAgICAgICBjYXNlIEdMX0ZST05UX0FO
RF9CQUNLOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC03MTMsMTAgKzUyOSw3IEBAIHZvaWQg
R0xfQVBJRU5UUlkgRGVsZXRlQnVmZmVycyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCogYnVmZmVy
cykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbjsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5kZWxldGVC
dWZmZXIoYnVmZmVyc1tpXSk7Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+ZGVsZXRlQnVm
ZmVycyhuLCBidWZmZXJzKTsKICAgICB9CiB9CiAKQEAgLTczMiwxMyArNTQ1LDcgQEAgdm9pZCBH
TF9BUElFTlRSWSBEZWxldGVGcmFtZWJ1ZmZlcnMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIGZy
YW1lYnVmZmVycykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZnJh
bWVidWZmZXJzW2ldICE9IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4
dC0+ZGVsZXRlRnJhbWVidWZmZXIoZnJhbWVidWZmZXJzW2ldKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQorICAgICAgICBjb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcnMobiwgZnJhbWVidWZm
ZXJzKTsKICAgICB9CiB9CiAKQEAgLTc0OSwyNSArNTU2LDExIEBAIHZvaWQgR0xfQVBJRU5UUlkg
RGVsZXRlUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBp
ZiAocHJvZ3JhbSA9PSAwKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
JiYgIVZhbGlkYXRlRGVsZXRlUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtKSkKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFjb250ZXh0LT5n
ZXRQcm9ncmFtKHByb2dyYW0pKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZihjb250ZXh0LT5n
ZXRTaGFkZXIocHJvZ3JhbSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotCiAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7CiAgICAgfQog
fQpAQCAtNzg0LDEwICs1NzcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVJlbmRlcmJ1ZmZl
cnMoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHJlbmRlcmJ1ZmZlcnMpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykK
LSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlUmVuZGVyYnVmZmVyKHJlbmRl
cmJ1ZmZlcnNbaV0pOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmRlbGV0ZVJlbmRlcmJ1
ZmZlcnMobiwgcmVuZGVyYnVmZmVycyk7CiAgICAgfQogfQogCkBAIC03OTgsMjUgKzU4OCwxMSBA
QCB2b2lkIEdMX0FQSUVOVFJZIERlbGV0ZVNoYWRlcihHTHVpbnQgc2hhZGVyKQogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIGlmIChzaGFkZXIgPT0gMCkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZURlbGV0ZVNoYWRlcihjb250ZXh0LCBzaGFkZXIp
KQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoIWNvbnRleHQtPmdldFNoYWRlcihzaGFkZXIpKQotICAgICAgICB7Ci0gICAgICAgICAgICBp
Zihjb250ZXh0LT5nZXRQcm9ncmFtKHNoYWRlcikpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCiAgICAgICAgIGNvbnRleHQtPmRlbGV0ZVNoYWRlcihzaGFkZXIp
OwogICAgIH0KIH0KQEAgLTgzMywxMyArNjA5LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEZWxldGVU
ZXh0dXJlcyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCogdGV4dHVyZXMpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKHRleHR1cmVzW2ldICE9IDApCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlc1tpXSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+ZGVsZXRlVGV4dHVy
ZXMobiwgdGV4dHVyZXMpOwogICAgIH0KIH0KIApAQCAtODUwLDIwICs2MjAsOCBAQCB2b2lkIEdM
X0FQSUVOVFJZIERlcHRoRnVuYyhHTGVudW0gZnVuYykKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzd2l0Y2ggKGZ1bmMpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAm
JiAhVmFsaWRhdGVEZXB0aEZ1bmMoY29udGV4dCwgZnVuYykpCiAgICAgICAgIHsKLSAgICAgICAg
ICBjYXNlIEdMX05FVkVSOgotICAgICAgICAgIGNhc2UgR0xfQUxXQVlTOgotICAgICAgICAgIGNh
c2UgR0xfTEVTUzoKLSAgICAgICAgICBjYXNlIEdMX0xFUVVBTDoKLSAgICAgICAgICBjYXNlIEdM
X0VRVUFMOgotICAgICAgICAgIGNhc2UgR0xfR1JFQVRFUjoKLSAgICAgICAgICBjYXNlIEdMX0dF
UVVBTDoKLSAgICAgICAgICBjYXNlIEdMX05PVEVRVUFMOgotICAgICAgICAgICAgICBicmVhazsK
LQotICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTg3OCw2ICs2MzYsMTEgQEAgdm9pZCBHTF9BUElFTlRSWSBEZXB0aE1hc2soR0xib29s
ZWFuIGZsYWcpCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
OwogICAgIGlmIChjb250ZXh0KQogICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpICYmICFWYWxpZGF0ZURlcHRoTWFzayhjb250ZXh0LCBmbGFnKSkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgY29udGV4dC0+ZGVw
dGhNYXNrKGZsYWcpOwogICAgIH0KIH0KQEAgLTg4OSw2ICs2NTIsMTEgQEAgdm9pZCBHTF9BUElF
TlRSWSBEZXB0aFJhbmdlZihHTGNsYW1wZiB6TmVhciwgR0xjbGFtcGYgekZhcikKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQp
CiAgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlk
YXRlRGVwdGhSYW5nZWYoY29udGV4dCwgek5lYXIsIHpGYXIpKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBjb250ZXh0LT5kZXB0aFJhbmdlZih6
TmVhciwgekZhcik7CiAgICAgfQogfQpAQCAtOTAwLDIzICs2NjgsMTIgQEAgdm9pZCBHTF9BUElF
TlRSWSBEZXRhY2hTaGFkZXIoR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIpCiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJvZ3Jh
bShjb250ZXh0LCBwcm9ncmFtKTsKLSAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQotICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBTaGFkZXIgKnNo
YWRlck9iamVjdCA9IEdldFZhbGlkU2hhZGVyKGNvbnRleHQsIHNoYWRlcik7Ci0gICAgICAgIGlm
ICghc2hhZGVyT2JqZWN0KQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
JiYgIVZhbGlkYXRlRGV0YWNoU2hhZGVyKGNvbnRleHQsIHByb2dyYW0sIHNoYWRlcikpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghcHJv
Z3JhbU9iamVjdC0+ZGV0YWNoU2hhZGVyKHNoYWRlck9iamVjdCkpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+ZGV0YWNo
U2hhZGVyKHByb2dyYW0sIHNoYWRlcik7CiAgICAgfQogfQogCkBAIC05NDMsOSArNzAwLDggQEAg
dm9pZCBHTF9BUElFTlRSWSBEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkoR0x1aW50IGluZGV4KQog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAo
Y29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMp
CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVEaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkoY29udGV4dCwgaW5kZXgpKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtOTYwLDE3ICs3MTYsMTIgQEAgdm9pZCBH
TF9BUElFTlRSWSBEcmF3QXJyYXlzKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBj
b3VudCkKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIVZhbGlkYXRlRHJhd0FycmF5cyhj
b250ZXh0LCBtb2RlLCBmaXJzdCwgY291bnQsIDApKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlRHJhd0FycmF5cyhjb250ZXh0LCBtb2RlLCBmaXJz
dCwgY291bnQpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAot
ICAgICAgICBFcnJvciBlcnJvciA9IGNvbnRleHQtPmRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNv
dW50KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9CisgICAgICAgIGNvbnRleHQtPmRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsK
ICAgICB9CiB9CiAKQEAgLTk4MiwxOCArNzMzLDE0IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0Vs
ZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlm
IChjb250ZXh0KQogICAgIHsKKyAgICAgICAgLy8gVE9ETyhqbWFkaWxsKTogQ2FjaGUgaW5kZXgg
cmFuZ2UgaW4gdGhlIGNvbnRleHQuCiAgICAgICAgIEluZGV4UmFuZ2UgaW5kZXhSYW5nZTsKLSAg
ICAgICAgaWYgKCFWYWxpZGF0ZURyYXdFbGVtZW50cyhjb250ZXh0LCBtb2RlLCBjb3VudCwgdHlw
ZSwgaW5kaWNlcywgMCwgJmluZGV4UmFuZ2UpKQorICAgICAgICBpZiAoIVZhbGlkYXRlRHJhd0Vs
ZW1lbnRzKGNvbnRleHQsIG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCAxLCAmaW5kZXhSYW5n
ZSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAg
IEVycm9yIGVycm9yID0gY29udGV4dC0+ZHJhd0VsZW1lbnRzKG1vZGUsIGNvdW50LCB0eXBlLCBp
bmRpY2VzLCBpbmRleFJhbmdlKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50cyhtb2Rl
LCBjb3VudCwgdHlwZSwgaW5kaWNlcywgaW5kZXhSYW5nZSk7CiAgICAgfQogfQogCkBAIC0xMDIw
LDkgKzc2Nyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoR0x1
aW50IGluZGV4KQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChpbmRleCA+PSBNQVhfVkVS
VEVYX0FUVFJJQlMpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAh
VmFsaWRhdGVFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShjb250ZXh0LCBpbmRleCkpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMDM3LDEyICs3ODMs
MTIgQEAgdm9pZCBHTF9BUElFTlRSWSBGaW5pc2godm9pZCkKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBFcnJvciBlcnJvciA9IGNvbnRleHQtPmZpbmlzaCgpOwotICAgICAgICBpZiAoZXJyb3Iu
aXNFcnJvcigpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZh
bGlkYXRlRmluaXNoKGNvbnRleHQpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihlcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAg
ICAgICBjb250ZXh0LT5maW5pc2goKTsKICAgICB9CiB9CiAKQEAgLTEwNTMsMTIgKzc5OSwxMiBA
QCB2b2lkIEdMX0FQSUVOVFJZIEZsdXNoKHZvaWQpCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
RXJyb3IgZXJyb3IgPSBjb250ZXh0LT5mbHVzaCgpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJv
cigpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRl
Rmx1c2goY29udGV4dCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKGVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorCisgICAgICAgIGNv
bnRleHQtPmZsdXNoKCk7CiAgICAgfQogfQogCkBAIC0xMTA2LDEzICs4NTIsOCBAQCB2b2lkIEdM
X0FQSUVOVFJZIEZyb250RmFjZShHTGVudW0gbW9kZSkKICAgICBDb250ZXh0ICpjb250ZXh0ID0g
R2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAg
ICBzd2l0Y2ggKG1vZGUpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAm
JiAhVmFsaWRhdGVGcm9udEZhY2UoY29udGV4dCwgbW9kZSkpCiAgICAgICAgIHsKLSAgICAgICAg
ICBjYXNlIEdMX0NXOgotICAgICAgICAgIGNhc2UgR0xfQ0NXOgotICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCkBAIC0xMTMyLDEwICs4NzMsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdlbkJ1ZmZlcnMoR0xz
aXplaSBuLCBHTHVpbnQqIGJ1ZmZlcnMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKLSAgICAgICAgewotICAgICAg
ICAgICAgYnVmZmVyc1tpXSA9IGNvbnRleHQtPmNyZWF0ZUJ1ZmZlcigpOwotICAgICAgICB9Cisg
ICAgICAgIGNvbnRleHQtPmdlbkJ1ZmZlcnMobiwgYnVmZmVycyk7CiAgICAgfQogfQogCkBAIC0x
MTY3LDEwICs5MDUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdlbkZyYW1lYnVmZmVycyhHTHNpemVp
IG4sIEdMdWludCogZnJhbWVidWZmZXJzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGZyYW1lYnVmZmVyc1tpXSA9IGNvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7Ci0g
ICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+Z2VuRnJhbWVidWZmZXJzKG4sIGZyYW1lYnVmZmVy
cyk7CiAgICAgfQogfQogCkBAIC0xMTg2LDEwICs5MjEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdl
blJlbmRlcmJ1ZmZlcnMoR0xzaXplaSBuLCBHTHVpbnQqIHJlbmRlcmJ1ZmZlcnMpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47
IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgcmVuZGVyYnVmZmVyc1tpXSA9IGNvbnRleHQt
PmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmdlblJl
bmRlcmJ1ZmZlcnMobiwgcmVuZGVyYnVmZmVycyk7CiAgICAgfQogfQogCkBAIC0xMjA1LDEwICs5
MzcsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEdlblRleHR1cmVzKEdMc2l6ZWkgbiwgR0x1aW50KiB0
ZXh0dXJlcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbjsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXh0dXJlc1tp
XSA9IGNvbnRleHQtPmNyZWF0ZVRleHR1cmUoKTsKLSAgICAgICAgfQorICAgICAgICBjb250ZXh0
LT5nZW5UZXh0dXJlcyhuLCB0ZXh0dXJlcyk7CiAgICAgfQogfQogCkBAIC0xMjIxLDI2ICs5NTAs
MTMgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRBY3RpdmVBdHRyaWIoR0x1aW50IHByb2dyYW0sIEdM
dWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlm
IChidWZzaXplIDwgMCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJvZ3JhbShj
b250ZXh0LCBwcm9ncmFtKTsKLQotICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpbmRleCA+
PSAoR0x1aW50KXByb2dyYW1PYmplY3QtPmdldEFjdGl2ZUF0dHJpYnV0ZUNvdW50KCkpCisgICAg
ICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlk
YXRlR2V0QWN0aXZlQXR0cmliKGNvbnRleHQsIHByb2dyYW0sIGluZGV4LCBidWZzaXplLCBsZW5n
dGgsIHNpemUsIHR5cGUsIG5hbWUpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAotICAgICAgICBwcm9ncmFtT2JqZWN0LT5nZXRBY3RpdmVBdHRyaWJ1dGUo
aW5kZXgsIGJ1ZnNpemUsIGxlbmd0aCwgc2l6ZSwgdHlwZSwgbmFtZSk7CisgICAgICAgIGNvbnRl
eHQtPmdldEFjdGl2ZUF0dHJpYihwcm9ncmFtLCBpbmRleCwgYnVmc2l6ZSwgbGVuZ3RoLCBzaXpl
LCB0eXBlLCBuYW1lKTsKICAgICB9CiB9CiAKQEAgLTEyNTAsMzAgKzk2NiwxNiBAQCB2b2lkIEdM
X0FQSUVOVFJZIEdldEFjdGl2ZVVuaWZvcm0oR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwg
R0xzaXplaSBidWZzaXplLAogICAgICAgICAgICJHTHNpemVpKiBsZW5ndGggPSAweCUwLjhwLCBH
TGludCogc2l6ZSA9IDB4JTAuOHAsIEdMZW51bSogdHlwZSA9IDB4JTAuOHAsIEdMY2hhciogbmFt
ZSA9IDB4JTAuOHApIiwKICAgICAgICAgICBwcm9ncmFtLCBpbmRleCwgYnVmc2l6ZSwgbGVuZ3Ro
LCBzaXplLCB0eXBlLCBuYW1lKTsKIAotCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGJ1
ZnNpemUgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gR2V0VmFsaWRQcm9ncmFtKGNvbnRl
eHQsIHByb2dyYW0pOwotCi0gICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGluZGV4ID49IChH
THVpbnQpcHJvZ3JhbU9iamVjdC0+Z2V0QWN0aXZlVW5pZm9ybUNvdW50KCkpCisgICAgICAgIGlm
ICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlR2V0
QWN0aXZlVW5pZm9ybShjb250ZXh0LCBwcm9ncmFtLCBpbmRleCwgYnVmc2l6ZSwgbGVuZ3RoLCBz
aXplLCB0eXBlLCBuYW1lKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKLSAgICAgICAgcHJvZ3JhbU9iamVjdC0+Z2V0QWN0aXZlVW5pZm9ybShpbmRleCwg
YnVmc2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lKTsKKyAgICAgICAgY29udGV4dC0+Z2V0
QWN0aXZlVW5pZm9ybShwcm9ncmFtLCBpbmRleCwgYnVmc2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBl
LCBuYW1lKTsKICAgICB9CiB9CiAKQEAgLTEyODUsMjAgKzk4NywxMyBAQCB2b2lkIEdMX0FQSUVO
VFJZIEdldEF0dGFjaGVkU2hhZGVycyhHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBtYXhjb3VudCwg
R0xzaXplaSogYwogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChtYXhjb3VudCA8IDApCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFBy
b2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7
Ci0KLSAgICAgICAgaWYgKCFwcm9ncmFtT2JqZWN0KQorICAgICAgICBpZiAoIWNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZUdldEF0dGFjaGVkU2hhZGVy
cyhjb250ZXh0LCBwcm9ncmFtLCBtYXhjb3VudCwgY291bnQsIHNoYWRlcnMpKQogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gcHJvZ3Jh
bU9iamVjdC0+Z2V0QXR0YWNoZWRTaGFkZXJzKG1heGNvdW50LCBjb3VudCwgc2hhZGVycyk7Cisg
ICAgICAgIGNvbnRleHQtPmdldEF0dGFjaGVkU2hhZGVycyhwcm9ncmFtLCBtYXhjb3VudCwgY291
bnQsIHNoYWRlcnMpOwogICAgIH0KIH0KIApAQCAtMTMwOSwyMCArMTAwNCwxMiBAQCBHTGludCBH
TF9BUElFTlRSWSBHZXRBdHRyaWJMb2NhdGlvbihHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFy
KiBuYW1lKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3Qg
PSBHZXRWYWxpZFByb2dyYW0oY29udGV4dCwgcHJvZ3JhbSk7Ci0KLSAgICAgICAgaWYgKCFwcm9n
cmFtT2JqZWN0KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QtPmlzTGlua2VkKCkpCisgICAgICAgIGlmICgh
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVHZXRBdHRyaWJMb2NhdGlvbihj
b250ZXh0LCBwcm9ncmFtLCBuYW1lKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKICAgICAgICAgICAgIHJl
dHVybiAtMTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBwcm9ncmFtT2JqZWN0LT5nZXRB
dHRyaWJ1dGVMb2NhdGlvbihuYW1lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQtPmdldEF0dHJp
YkxvY2F0aW9uKHByb2dyYW0sIG5hbWUpOwogICAgIH0KIAogICAgIHJldHVybiAtMTsKQEAgLTEz
MzUsMjEgKzEwMjIsMTIgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRCb29sZWFudihHTGVudW0gcG5h
bWUsIEdMYm9vbGVhbiogcGFyYW1zKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEdMZW51bSBu
YXRpdmVUeXBlOwotICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zID0gMDsKLSAgICAgICAg
aWYgKCFWYWxpZGF0ZVN0YXRlUXVlcnkoY29udGV4dCwgcG5hbWUsICZuYXRpdmVUeXBlLCAmbnVt
UGFyYW1zKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxp
ZGF0ZUdldEJvb2xlYW52KGNvbnRleHQsIHBuYW1lLCBwYXJhbXMpKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobmF0aXZlVHlwZSA9PSBH
TF9CT09MKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRCb29sZWFudihwbmFt
ZSwgcGFyYW1zKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIENhc3RTdGF0ZVZhbHVlcyhjb250ZXh0LCBuYXRpdmVUeXBlLCBwbmFtZSwgbnVtUGFyYW1z
LCBwYXJhbXMpOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmdldEJvb2xlYW52KHBuYW1l
LCBwYXJhbXMpOwogICAgIH0KIH0KIApAQCAtMTM2Niw4ICsxMDQ0LDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBHZXRCdWZmZXJQYXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdM
aW50KiBwYXJhbXMKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIEJ1
ZmZlciAqYnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcih0YXJn
ZXQpOwotICAgICAgICBRdWVyeUJ1ZmZlclBhcmFtZXRlcml2KGJ1ZmZlciwgcG5hbWUsIHBhcmFt
cyk7CisgICAgICAgIGNvbnRleHQtPmdldEJ1ZmZlclBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUs
IHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0xMzc5LDYgKzEwNTYsMTEgQEAgR0xlbnVtIEdMX0FQ
SUVOVFJZIEdldEVycm9yKHZvaWQpCiAKICAgICBpZiAoY29udGV4dCkKICAgICB7CisgICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVHZXRFcnJvcihjb250
ZXh0KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIEdMX05PX0VSUk9SOworICAgICAg
ICB9CisKICAgICAgICAgcmV0dXJuIGNvbnRleHQtPmdldEVycm9yKCk7CiAgICAgfQogCkBAIC0x
MzkyLDIxICsxMDc0LDEyIEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0RmxvYXR2KEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCogcGFyYW1zKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEdMZW51bSBuYXRp
dmVUeXBlOwotICAgICAgICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zID0gMDsKLSAgICAgICAgaWYg
KCFWYWxpZGF0ZVN0YXRlUXVlcnkoY29udGV4dCwgcG5hbWUsICZuYXRpdmVUeXBlLCAmbnVtUGFy
YW1zKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0
ZUdldEZsb2F0dihjb250ZXh0LCBwbmFtZSwgcGFyYW1zKSkKICAgICAgICAgewogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5hdGl2ZVR5cGUgPT0gR0xfRkxP
QVQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmdldEZsb2F0dihwbmFtZSwgcGFy
YW1zKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIENh
c3RTdGF0ZVZhbHVlcyhjb250ZXh0LCBuYXRpdmVUeXBlLCBwbmFtZSwgbnVtUGFyYW1zLCBwYXJh
bXMpOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmdldEZsb2F0dihwbmFtZSwgcGFyYW1z
KTsKICAgICB9CiB9CiAKQEAgLTE0MjYsOCArMTA5OSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0
RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0
dGFjCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdCBGcmFt
ZWJ1ZmZlciAqZnJhbWVidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VGFyZ2V0RnJh
bWVidWZmZXIodGFyZ2V0KTsKLSAgICAgICAgUXVlcnlGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJh
bWV0ZXJpdihmcmFtZWJ1ZmZlciwgYXR0YWNobWVudCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAg
IGNvbnRleHQtPmdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2KHRhcmdldCwgYXR0
YWNobWVudCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0xNDM4LDIyICsxMTEwLDEy
IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0SW50ZWdlcnYoR0xlbnVtIHBuYW1lLCBHTGludCogcGFy
YW1zKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIEdMZW51bSBuYXRpdmVUeXBlOwotICAgICAg
ICB1bnNpZ25lZCBpbnQgbnVtUGFyYW1zID0gMDsKLQotICAgICAgICBpZiAoIVZhbGlkYXRlU3Rh
dGVRdWVyeShjb250ZXh0LCBwbmFtZSwgJm5hdGl2ZVR5cGUsICZudW1QYXJhbXMpKQorICAgICAg
ICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlR2V0SW50ZWdlcnYo
Y29udGV4dCwgcG5hbWUsIHBhcmFtcykpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmIChuYXRpdmVUeXBlID09IEdMX0lOVCkKLSAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdlcnYocG5hbWUsIHBhcmFtcyk7Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBDYXN0U3RhdGVWYWx1
ZXMoY29udGV4dCwgbmF0aXZlVHlwZSwgcG5hbWUsIG51bVBhcmFtcywgcGFyYW1zKTsKLSAgICAg
ICAgfQorICAgICAgICBjb250ZXh0LT5nZXRJbnRlZ2VydihwbmFtZSwgcGFyYW1zKTsKICAgICB9
CiB9CiAKQEAgLTE0NzEsOCArMTEzMyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbWl2
KEdMdWludCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0g
Y29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKLSAgICAgICAgUXVlcnlQcm9ncmFtaXYocHJv
Z3JhbU9iamVjdCwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGNvbnRleHQtPmdldFByb2dyYW1p
dihwcm9ncmFtLCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTE0ODQsMTkgKzExNDUs
MTMgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtSW5mb0xvZyhHTHVpbnQgcHJvZ3JhbSwg
R0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW4KICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBp
ZiAoYnVmc2l6ZSA8IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBHZXRWYWxpZFByb2dyYW0o
Y29udGV4dCwgcHJvZ3JhbSk7Ci0gICAgICAgIGlmICghcHJvZ3JhbU9iamVjdCkKKyAgICAgICAg
aWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVH
ZXRQcm9ncmFtSW5mb0xvZyhjb250ZXh0LCBwcm9ncmFtLCBidWZzaXplLCBsZW5ndGgsIGluZm9s
b2cpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBwcm9ncmFtT2JqZWN0LT5nZXRJbmZvTG9nKGJ1ZnNpemUsIGxlbmd0aCwgaW5mb2xvZyk7Cisg
ICAgICAgIGNvbnRleHQtPmdldEluZm9Mb2cocHJvZ3JhbSwgYnVmc2l6ZSwgbGVuZ3RoLCBpbmZv
bG9nKTsKICAgICB9CiB9CiAKQEAgLTE1MTMsOCArMTE2OCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkg
R2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBH
TGludCoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFJlbmRlcmJ1
ZmZlciAqcmVuZGVyYnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldEN1cnJlbnRSZW5k
ZXJidWZmZXIoKTsKLSAgICAgICAgUXVlcnlSZW5kZXJidWZmZXJpdihyZW5kZXJidWZmZXIsIHBu
YW1lLCBwYXJhbXMpOworICAgICAgICBjb250ZXh0LT5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJp
dih0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOwogICAgIH0KIH0KIApAQCAtMTUzMCw4ICsxMTg0LDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBHZXRTaGFkZXJpdihHTHVpbnQgc2hhZGVyLCBHTGVudW0gcG5h
bWUsIEdMaW50KiBwYXJhbXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBTaGFkZXIgKnNoYWRlck9iamVjdCA9IGNvbnRleHQtPmdldFNoYWRlcihzaGFkZXIpOwot
ICAgICAgICBRdWVyeVNoYWRlcml2KHNoYWRlck9iamVjdCwgcG5hbWUsIHBhcmFtcyk7CisgICAg
ICAgIGNvbnRleHQtPmdldFNoYWRlcml2KHNoYWRlciwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQog
fQogCkBAIC0xNTQzLDE5ICsxMTk2LDEzIEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2hhZGVySW5m
b0xvZyhHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0CiAgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGJ1ZnNpemUgPCAwKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBTaGFkZXIgKnNoYWRlck9iamVj
dCA9IEdldFZhbGlkU2hhZGVyKGNvbnRleHQsIHNoYWRlcik7Ci0gICAgICAgIGlmICghc2hhZGVy
T2JqZWN0KQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAg
ICAgICAgICFWYWxpZGF0ZUdldFNoYWRlckluZm9Mb2coY29udGV4dCwgc2hhZGVyLCBidWZzaXpl
LCBsZW5ndGgsIGluZm9sb2cpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBzaGFkZXJPYmplY3QtPmdldEluZm9Mb2coYnVmc2l6ZSwgbGVuZ3Ro
LCBpbmZvbG9nKTsKKyAgICAgICAgY29udGV4dC0+Z2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIGJ1
ZnNpemUsIGxlbmd0aCwgaW5mb2xvZyk7CiAgICAgfQogfQogCkBAIC0xNTY3LDY5ICsxMjE0LDEz
IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0KEdMZW51bSBzaGFk
ZXJ0eXBlLCBHTGVudW0gcHJlY2lzaW9udHlwCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZh
bGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgc3dp
dGNoIChzaGFkZXJ0eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9WRVJURVhfU0hB
REVSOgotICAgICAgICAgICAgc3dpdGNoIChwcmVjaXNpb250eXBlKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICBjYXNlIEdMX0xPV19GTE9BVDoKLSAgICAgICAgICAgICAgICBjb250ZXh0
LT5nZXRDYXBzKCkudmVydGV4TG93cEZsb2F0LmdldChyYW5nZSwgcHJlY2lzaW9uKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9NRURJVU1fRkxPQVQ6Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0Q2FwcygpLnZlcnRleE1lZGl1bXBGbG9hdC5nZXQo
cmFuZ2UsIHByZWNpc2lvbik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgR0xfSElHSF9GTE9BVDoKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRDYXBzKCku
dmVydGV4SGlnaHBGbG9hdC5nZXQocmFuZ2UsIHByZWNpc2lvbik7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgICAgICAgY2FzZSBHTF9MT1dfSU5UOgotICAgICAgICAgICAgICAg
IGNvbnRleHQtPmdldENhcHMoKS52ZXJ0ZXhMb3dwSW50LmdldChyYW5nZSwgcHJlY2lzaW9uKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9NRURJVU1fSU5U
OgotICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldENhcHMoKS52ZXJ0ZXhNZWRpdW1wSW50Lmdl
dChyYW5nZSwgcHJlY2lzaW9uKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgY2FzZSBHTF9ISUdIX0lOVDoKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRDYXBzKCku
dmVydGV4SGlnaHBJbnQuZ2V0KHJhbmdlLCBwcmVjaXNpb24pOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotCi0gICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNl
IEdMX0ZSQUdNRU5UX1NIQURFUjoKLSAgICAgICAgICAgIHN3aXRjaCAocHJlY2lzaW9udHlwZSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY2FzZSBHTF9MT1dfRkxPQVQ6Ci0gICAgICAg
ICAgICAgICAgY29udGV4dC0+Z2V0Q2FwcygpLmZyYWdtZW50TG93cEZsb2F0LmdldChyYW5nZSwg
cHJlY2lzaW9uKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2FzZSBH
TF9NRURJVU1fRkxPQVQ6Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+Z2V0Q2FwcygpLmZyYWdt
ZW50TWVkaXVtcEZsb2F0LmdldChyYW5nZSwgcHJlY2lzaW9uKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgICAgY2FzZSBHTF9ISUdIX0ZMT0FUOgotICAgICAgICAgICAgICAg
IGNvbnRleHQtPmdldENhcHMoKS5mcmFnbWVudEhpZ2hwRmxvYXQuZ2V0KHJhbmdlLCBwcmVjaXNp
b24pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgIGNhc2UgR0xfTE9X
X0lOVDoKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRDYXBzKCkuZnJhZ21lbnRMb3dwSW50
LmdldChyYW5nZSwgcHJlY2lzaW9uKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgY2FzZSBHTF9NRURJVU1fSU5UOgotICAgICAgICAgICAgICAgIGNvbnRleHQtPmdldENh
cHMoKS5mcmFnbWVudE1lZGl1bXBJbnQuZ2V0KHJhbmdlLCBwcmVjaXNpb24pOwotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBjYXNlIEdMX0hJR0hfSU5UOgotICAgICAgICAg
ICAgICAgIGNvbnRleHQtPmdldENhcHMoKS5mcmFnbWVudEhpZ2hwSW50LmdldChyYW5nZSwgcHJl
Y2lzaW9uKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9FTlVNKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgY29udGV4dC0+
aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7CisgICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlR2V0U2hhZGVyUHJl
Y2lzaW9uRm9ybWF0KGNvbnRleHQsIHNoYWRlcnR5cGUsIHByZWNpc2lvbnR5cGUsIHJhbmdlLCBw
cmVjaXNpb24pKQorICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAor
ICAgICAgICBjb250ZXh0LT5nZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQoc2hhZGVydHlwZSwgcHJl
Y2lzaW9udHlwZSwgcmFuZ2UsIHByZWNpc2lvbik7CiAgICAgfQogfQogCkBAIC0xNjQxLDE5ICsx
MjMyLDEzIEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0U2hhZGVyU291cmNlKEdMdWludCBzaGFkZXIs
IEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoCiAgICAgQ29udGV4dCAqY29udGV4dCA9
IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAg
ICAgaWYgKGJ1ZnNpemUgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5k
bGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBTaGFkZXIgKnNoYWRlck9iamVjdCA9IEdldFZhbGlkU2hhZGVy
KGNvbnRleHQsIHNoYWRlcik7Ci0gICAgICAgIGlmICghc2hhZGVyT2JqZWN0KQorICAgICAgICBp
ZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZUdl
dFNoYWRlclNvdXJjZShjb250ZXh0LCBzaGFkZXIsIGJ1ZnNpemUsIGxlbmd0aCwgc291cmNlKSkK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgc2hh
ZGVyT2JqZWN0LT5nZXRTb3VyY2UoYnVmc2l6ZSwgbGVuZ3RoLCBzb3VyY2UpOworICAgICAgICBj
b250ZXh0LT5nZXRTaGFkZXJTb3VyY2Uoc2hhZGVyLCBidWZzaXplLCBsZW5ndGgsIHNvdXJjZSk7
CiAgICAgfQogfQogCkBAIC0xNjY1LDQ1ICsxMjUwLDEyIEBAIGNvbnN0IEdMdWJ5dGUgKkdMX0FQ
SUVOVFJZIEdldFN0cmluZyhHTGVudW0gbmFtZSkKIAogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgc3dpdGNoIChuYW1lKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkgJiYgIVZhbGlkYXRlR2V0U3RyaW5nKGNvbnRleHQsIG5hbWUpKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBjYXNlIEdMX1ZFTkRPUjoKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCBHTHVieXRlICo+KCJHb29nbGUgSW5jLiIpOwotCi0gICAgICAgICAg
ICBjYXNlIEdMX1JFTkRFUkVSOgotICAgICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9j
YXN0PGNvbnN0IEdMdWJ5dGUgKj4oY29udGV4dC0+Z2V0UmVuZGVyZXJTdHJpbmcoKSk7Ci0KLSAg
ICAgICAgICAgIGNhc2UgR0xfVkVSU0lPTjoKLSAgICAgICAgICAgICAgICBpZiAoY29udGV4dC0+
Z2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPT0gMikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUgKj4oCi0g
ICAgICAgICAgICAgICAgICAgICAgICAiT3BlbkdMIEVTIDIuMCAoQU5HTEUgIiBBTkdMRV9WRVJT
SU9OX1NUUklORyAiKSIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBHTHVieXRlICo+KAotICAgICAgICAgICAgICAgICAgICAgICAgIk9wZW5H
TCBFUyAzLjAgKEFOR0xFICIgQU5HTEVfVkVSU0lPTl9TVFJJTkcgIikiKTsKLSAgICAgICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGNhc2UgR0xfU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OOgot
ICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA9PSAy
KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSAqPigKLSAgICAgICAgICAgICAgICAgICAgICAgICJPcGVu
R0wgRVMgR0xTTCBFUyAxLjAwIChBTkdMRSAiIEFOR0xFX1ZFUlNJT05fU1RSSU5HICIpIik7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5
dGUgKj4oCi0gICAgICAgICAgICAgICAgICAgICAgICAiT3BlbkdMIEVTIEdMU0wgRVMgMy4wMCAo
QU5HTEUgIiBBTkdMRV9WRVJTSU9OX1NUUklORyAiKSIpOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgY2FzZSBHTF9FWFRFTlNJT05TOgotICAgICAgICAgICAgICAgIHJldHVybiBy
ZWludGVycHJldF9jYXN0PGNvbnN0IEdMdWJ5dGUgKj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9uU3Ry
aW5nKCkpOwotCi0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY29udGV4dC0+Z2V0U3RyaW5n
KG5hbWUpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwpAQCAtMTcyMiw4ICsxMjc0LDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBHZXRUZXhQYXJhbWV0ZXJmdihHTGVudW0gdGFyZ2V0LCBHTGVu
dW0gcG5hbWUsIEdMZmxvYXQqIHBhcmFtcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJl
KHRhcmdldCk7Ci0gICAgICAgIFF1ZXJ5VGV4UGFyYW1ldGVyZnYodGV4dHVyZSwgcG5hbWUsIHBh
cmFtcyk7CisgICAgICAgIGNvbnRleHQtPmdldFRleFBhcmFtZXRlcmZ2KHRhcmdldCwgcG5hbWUs
IHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0xNzQwLDggKzEyOTEsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIEdldFRleFBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQq
IHBhcmFtcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFRleHR1
cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7Ci0gICAgICAg
IFF1ZXJ5VGV4UGFyYW1ldGVyaXYodGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGNv
bnRleHQtPmdldFRleFBhcmFtZXRlcml2KHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQog
fQogCkBAIC0xNzUyLDE1ICsxMzAyLDEyIEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VW5pZm9ybWZ2
KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCogcGFyYW1zKQogICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIGlmICghVmFsaWRhdGVHZXRVbmlmb3JtZnYoY29udGV4dCwgcHJv
Z3JhbSwgbG9jYXRpb24sIHBhcmFtcykpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSAmJiAhVmFsaWRhdGVHZXRVbmlmb3JtZnYoY29udGV4dCwgcHJvZ3JhbSwgbG9jYXRp
b24sIHBhcmFtcykpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHBy
b2dyYW0pOwotICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7Ci0KLSAgICAgICAgcHJvZ3Jh
bU9iamVjdC0+Z2V0VW5pZm9ybWZ2KGxvY2F0aW9uLCBwYXJhbXMpOworICAgICAgICBjb250ZXh0
LT5nZXRVbmlmb3JtZnYocHJvZ3JhbSwgbG9jYXRpb24sIHBhcmFtcyk7CiAgICAgfQogfQogCkBA
IC0xNzcxLDE1ICsxMzE4LDEyIEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VW5pZm9ybWl2KEdMdWlu
dCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQqIHBhcmFtcykKICAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAg
ewotICAgICAgICBpZiAoIVZhbGlkYXRlR2V0VW5pZm9ybWl2KGNvbnRleHQsIHByb2dyYW0sIGxv
Y2F0aW9uLCBwYXJhbXMpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkg
JiYgIVZhbGlkYXRlR2V0VW5pZm9ybWl2KGNvbnRleHQsIHByb2dyYW0sIGxvY2F0aW9uLCBwYXJh
bXMpKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsK
LSAgICAgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOwotCi0gICAgICAgIHByb2dyYW1PYmplY3Qt
PmdldFVuaWZvcm1pdihsb2NhdGlvbiwgcGFyYW1zKTsKKyAgICAgICAgY29udGV4dC0+Z2V0VW5p
Zm9ybWl2KHByb2dyYW0sIGxvY2F0aW9uLCBwYXJhbXMpOwogICAgIH0KIH0KIApAQCAtMTc5MCwy
NSArMTMzNCwxMiBAQCBHTGludCBHTF9BUElFTlRSWSBHZXRVbmlmb3JtTG9jYXRpb24oR0x1aW50
IHByb2dyYW0sIGNvbnN0IEdMY2hhciogbmFtZSkKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBp
ZiAoc3Ryc3RyKG5hbWUsICJnbF8iKSA9PSBuYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gLTE7Ci0gICAgICAgIH0KLQotICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0g
R2V0VmFsaWRQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pOwotCi0gICAgICAgIGlmICghcHJvZ3Jh
bU9iamVjdCkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxp
ZGF0ZUdldFVuaWZvcm1Mb2NhdGlvbihjb250ZXh0LCBwcm9ncmFtLCBuYW1lKSkKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFwcm9n
cmFtT2JqZWN0LT5pc0xpbmtlZCgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgcmV0
dXJuIC0xOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHByb2dyYW1PYmplY3QtPmdldFVu
aWZvcm1Mb2NhdGlvbihuYW1lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQtPmdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtLCBuYW1lKTsKICAgICB9CiAKICAgICByZXR1cm4gLTE7CkBAIC0xODI2
LDExICsxMzU3LDcgQEAgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJmdihHTHVpbnQg
aW5kZXgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0
YSAmY3VycmVudFZhbHVlcyA9Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0
VmVydGV4QXR0cmliQ3VycmVudFZhbHVlKGluZGV4KTsKLSAgICAgICAgY29uc3QgVmVydGV4QXR0
cmlidXRlICZhdHRyaWIgPQotICAgICAgICAgICAgY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFZl
cnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0ZShpbmRleCk7Ci0gICAgICAgIFF1ZXJ5VmVy
dGV4QXR0cmliZnYoYXR0cmliLCBjdXJyZW50VmFsdWVzLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAg
ICAgY29udGV4dC0+Z2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCBwYXJhbXMpOwogICAg
IH0KIH0KIApAQCAtMTg0NiwxMSArMTM3Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4
QXR0cmliaXYoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJD
dXJyZW50VmFsdWVEYXRhICZjdXJyZW50VmFsdWVzID0KLSAgICAgICAgICAgIGNvbnRleHQtPmdl
dEdMU3RhdGUoKS5nZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWUoaW5kZXgpOwotICAgICAgICBj
b25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiA9Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRH
TFN0YXRlKCkuZ2V0VmVydGV4QXJyYXkoKS0+Z2V0VmVydGV4QXR0cmlidXRlKGluZGV4KTsKLSAg
ICAgICAgUXVlcnlWZXJ0ZXhBdHRyaWJpdihhdHRyaWIsIGN1cnJlbnRWYWx1ZXMsIHBuYW1lLCBw
YXJhbXMpOworICAgICAgICBjb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUs
IHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0xODY3LDkgKzEzOTAsNyBAQCB2b2lkIEdMX0FQSUVO
VFJZIEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBH
THZvaWQqKiBwbwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29u
c3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIgPQotICAgICAgICAgICAgY29udGV4dC0+Z2V0R0xT
dGF0ZSgpLmdldFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0ZShpbmRleCk7Ci0gICAg
ICAgIFF1ZXJ5VmVydGV4QXR0cmliUG9pbnRlcnYoYXR0cmliLCBwbmFtZSwgcG9pbnRlcik7Cisg
ICAgICAgIGNvbnRleHQtPmdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBwbmFtZSwgcG9p
bnRlcik7CiAgICAgfQogfQogCkBAIC0xODgwLDI2ICsxNDAxLDggQEAgdm9pZCBHTF9BUElFTlRS
WSBIaW50KEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKQogICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHN3aXRjaCAobW9kZSkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfRkFTVEVTVDoK
LSAgICAgICAgICBjYXNlIEdMX05JQ0VTVDoKLSAgICAgICAgICBjYXNlIEdMX0RPTlRfQ0FSRToK
LSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICAgICAg
aWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUhpbnQoY29udGV4dCwg
dGFyZ2V0LCBtb2RlKSkKICAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfR0VORVJBVEVfTUlQ
TUFQX0hJTlQ6Ci0gICAgICAgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVJfREVSSVZBVElWRV9I
SU5UX09FUzoKLSAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xOTEyLDE0ICsxNDE1LDE0IEBA
IEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0J1ZmZlcihHTHVpbnQgYnVmZmVyKQogICAgIEVWRU5U
KCIoR0x1aW50IGJ1ZmZlciA9ICVkKSIsIGJ1ZmZlcik7CiAKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgaWYgKGNvbnRleHQgJiYgYnVmZmVyKQor
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgQnVmZmVyICpidWZmZXJPYmplY3QgPSBj
b250ZXh0LT5nZXRCdWZmZXIoYnVmZmVyKTsKLQotICAgICAgICBpZiAoYnVmZmVyT2JqZWN0KQor
ICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlSXNCdWZm
ZXIoY29udGV4dCwgYnVmZmVyKSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEdMX1RS
VUU7CisgICAgICAgICAgICByZXR1cm4gR0xfRkFMU0U7CiAgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gY29udGV4dC0+aXNCdWZmZXIoYnVmZmVyKTsKICAgICB9CiAKICAgICByZXR1cm4gR0xf
RkFMU0U7CkBAIC0xOTM3LDEwICsxNDQwLDEwIEBAIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBJc0Vu
YWJsZWQoR0xlbnVtIGNhcCkKICAgICAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAgICAg
fQogCi0gICAgICAgIHJldHVybiBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0RW5hYmxlRmVhdHVy
ZShjYXApOworICAgICAgICByZXR1cm4gY29udGV4dC0+aXNFbmFibGVkKGNhcCk7CiAgICAgfQog
Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBHTF9GQUxTRTsKIH0KIAogR0xib29sZWFu
IEdMX0FQSUVOVFJZIElzRnJhbWVidWZmZXIoR0x1aW50IGZyYW1lYnVmZmVyKQpAQCAtMTk0OCwx
NCArMTQ1MSwxNCBAQCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNGcmFtZWJ1ZmZlcihHTHVpbnQg
ZnJhbWVidWZmZXIpCiAgICAgRVZFTlQoIihHTHVpbnQgZnJhbWVidWZmZXIgPSAlZCkiLCBmcmFt
ZWJ1ZmZlcik7CiAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCk7Ci0gICAgaWYgKGNvbnRleHQgJiYgZnJhbWVidWZmZXIpCisgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBGcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXJPYmplY3QgPSBjb250ZXh0LT5n
ZXRGcmFtZWJ1ZmZlcihmcmFtZWJ1ZmZlcik7Ci0KLSAgICAgICAgaWYgKGZyYW1lYnVmZmVyT2Jq
ZWN0KQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRl
SXNGcmFtZWJ1ZmZlcihjb250ZXh0LCBmcmFtZWJ1ZmZlcikpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIHJldHVybiBHTF9UUlVFOworICAgICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIGNvbnRleHQtPmlzRnJhbWVidWZmZXIoZnJhbWVidWZmZXIp
OwogICAgIH0KIAogICAgIHJldHVybiBHTF9GQUxTRTsKQEAgLTE5NjYsMTQgKzE0NjksMTQgQEAg
R0xib29sZWFuIEdMX0FQSUVOVFJZIElzUHJvZ3JhbShHTHVpbnQgcHJvZ3JhbSkKICAgICBFVkVO
VCgiKEdMdWludCBwcm9ncmFtID0gJWQpIiwgcHJvZ3JhbSk7CiAKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgaWYgKGNvbnRleHQgJiYgcHJvZ3Jh
bSkKKyAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmpl
Y3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOwotCi0gICAgICAgIGlmIChwcm9ncmFt
T2JqZWN0KQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlk
YXRlSXNQcm9ncmFtKGNvbnRleHQsIHByb2dyYW0pKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gR0xfVFJVRTsKKyAgICAgICAgICAgIHJldHVybiBHTF9GQUxTRTsKICAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBjb250ZXh0LT5pc1Byb2dyYW0ocHJvZ3JhbSk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIEdMX0ZBTFNFOwpAQCAtMTk4NCwxNCArMTQ4NywxNCBAQCBHTGJvb2xlYW4gR0xf
QVBJRU5UUlkgSXNSZW5kZXJidWZmZXIoR0x1aW50IHJlbmRlcmJ1ZmZlcikKICAgICBFVkVOVCgi
KEdMdWludCByZW5kZXJidWZmZXIgPSAlZCkiLCByZW5kZXJidWZmZXIpOwogCiAgICAgQ29udGV4
dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIGlmIChjb250ZXh0ICYm
IHJlbmRlcmJ1ZmZlcikKKyAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIFJlbmRlcmJ1
ZmZlciAqcmVuZGVyYnVmZmVyT2JqZWN0ID0gY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyKHJlbmRl
cmJ1ZmZlcik7Ci0KLSAgICAgICAgaWYgKHJlbmRlcmJ1ZmZlck9iamVjdCkKKyAgICAgICAgaWYg
KCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUlzUmVuZGVyYnVmZmVyKGNv
bnRleHQsIHJlbmRlcmJ1ZmZlcikpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBHTF9U
UlVFOworICAgICAgICAgICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIGNvbnRleHQtPmlzUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlcik7CiAgICAgfQogCiAg
ICAgcmV0dXJuIEdMX0ZBTFNFOwpAQCAtMjAwMiwxNCArMTUwNSwxNCBAQCBHTGJvb2xlYW4gR0xf
QVBJRU5UUlkgSXNTaGFkZXIoR0x1aW50IHNoYWRlcikKICAgICBFVkVOVCgiKEdMdWludCBzaGFk
ZXIgPSAlZCkiLCBzaGFkZXIpOwogCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOwotICAgIGlmIChjb250ZXh0ICYmIHNoYWRlcikKKyAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIFNoYWRlciAqc2hhZGVyT2JqZWN0ID0gY29udGV4dC0+Z2V0U2hh
ZGVyKHNoYWRlcik7Ci0KLSAgICAgICAgaWYgKHNoYWRlck9iamVjdCkKKyAgICAgICAgaWYgKCFj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZUlzU2hhZGVyKGNvbnRleHQsIHNo
YWRlcikpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBHTF9UUlVFOworICAgICAgICAg
ICAgcmV0dXJuIEdMX0ZBTFNFOwogICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvbnRleHQt
PmlzU2hhZGVyKHNoYWRlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIEdMX0ZBTFNFOwpAQCAtMjAy
MCwxNCArMTUyMywxNCBAQCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgSXNUZXh0dXJlKEdMdWludCB0
ZXh0dXJlKQogICAgIEVWRU5UKCIoR0x1aW50IHRleHR1cmUgPSAlZCkiLCB0ZXh0dXJlKTsKIAog
ICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBpZiAo
Y29udGV4dCAmJiB0ZXh0dXJlKQorICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgVGV4
dHVyZSAqdGV4dHVyZU9iamVjdCA9IGNvbnRleHQtPmdldFRleHR1cmUodGV4dHVyZSk7Ci0KLSAg
ICAgICAgaWYgKHRleHR1cmVPYmplY3QpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlk
YXRpb24oKSAmJiAhVmFsaWRhdGVJc1RleHR1cmUoY29udGV4dCwgdGV4dHVyZSkpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBHTF9UUlVFOworICAgICAgICAgICAgcmV0dXJuIEdMX0ZB
TFNFOwogICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNvbnRleHQtPmlzVGV4dHVyZSh0ZXh0
dXJlKTsKICAgICB9CiAKICAgICByZXR1cm4gR0xfRkFMU0U7CkBAIC0yMDQwLDkgKzE1NDMsOCBA
QCB2b2lkIEdMX0FQSUVOVFJZIExpbmVXaWR0aChHTGZsb2F0IHdpZHRoKQogICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIGlmICh3aWR0aCA8PSAwLjBmKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlTGluZVdpZHRoKGNvbnRleHQsIHdpZHRoKSkKICAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIwNjIsMTgg
KzE1NjQsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIExpbmtQcm9ncmFtKEdMdWludCBwcm9ncmFtKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3Jh
bU9iamVjdCA9IEdldFZhbGlkUHJvZ3JhbShjb250ZXh0LCBwcm9ncmFtKTsKLSAgICAgICAgaWYg
KCFwcm9ncmFtT2JqZWN0KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBFcnJvciBlcnJvciA9IHByb2dyYW1PYmplY3QtPmxpbmsoY29udGV4dC0+
Z2V0Q29udGV4dFN0YXRlKCkpOwotICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+bGlua1Byb2dyYW0ocHJvZ3Jh
bSk7CiAgICAgfQogfQogCkBAIC0yMDg0LDc1ICsxNTc1LDggQEAgdm9pZCBHTF9BUElFTlRSWSBQ
aXhlbFN0b3JlaShHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKQogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHN3aXRjaCAocG5hbWUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgIGNhc2UgR0xfVU5QQUNLX0lNQUdFX0hFSUdIVDoKLSAgICAgICAgICAgICAgY2FzZSBHTF9V
TlBBQ0tfU0tJUF9JTUFHRVM6Ci0gICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICAgICAgICBjYXNlIEdMX1VOUEFDS19ST1dfTEVOR1RIOgotICAgICAgICAgICAgICBj
YXNlIEdMX1VOUEFDS19TS0lQX1JPV1M6Ci0gICAgICAgICAgICAgIGNhc2UgR0xfVU5QQUNLX1NL
SVBfUElYRUxTOgotICAgICAgICAgICAgICAgICAgaWYgKCFjb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkudW5wYWNrU3ViaW1hZ2UpCi0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgY2FzZSBHTF9QQUNLX1JPV19MRU5HVEg6
Ci0gICAgICAgICAgICAgIGNhc2UgR0xfUEFDS19TS0lQX1JPV1M6Ci0gICAgICAgICAgICAgIGNh
c2UgR0xfUEFDS19TS0lQX1BJWEVMUzoKLSAgICAgICAgICAgICAgICAgIGlmICghY29udGV4dC0+
Z2V0RXh0ZW5zaW9ucygpLnBhY2tTdWJpbWFnZSkKLSAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VO
VU0pKTsKLSAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChwYXJhbSA8IDApCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSAmJiAhVmFsaWRhdGVQaXhlbFN0b3JlaShjb250ZXh0LCBwbmFtZSwgcGFyYW0pKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcigKLSAgICAgICAgICAgICAg
ICBFcnJvcihHTF9JTlZBTElEX1ZBTFVFLCAiQ2Fubm90IHVzZSBuZWdhdGl2ZSB2YWx1ZXMgaW4g
UGl4ZWxTdG9yZWkiKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICBzd2l0Y2ggKHBuYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9VTlBBQ0tfQUxJ
R05NRU5UOgotICAgICAgICAgICAgaWYgKHBhcmFtICE9IDEgJiYgcGFyYW0gIT0gMiAmJiBwYXJh
bSAhPSA0ICYmIHBhcmFtICE9IDgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
ICAgY2FzZSBHTF9QQUNLX0FMSUdOTUVOVDoKLSAgICAgICAgICAgIGlmIChwYXJhbSAhPSAxICYm
IHBhcmFtICE9IDIgJiYgcGFyYW0gIT0gNCAmJiBwYXJhbSAhPSA4KQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICAgIGNhc2UgR0xfUEFDS19SRVZFUlNFX1JPV19PUkRFUl9BTkdM
RToKLSAgICAgICAgICBjYXNlIEdMX1VOUEFDS19ST1dfTEVOR1RIOgotICAgICAgICAgIGNhc2Ug
R0xfVU5QQUNLX0lNQUdFX0hFSUdIVDoKLSAgICAgICAgICBjYXNlIEdMX1VOUEFDS19TS0lQX0lN
QUdFUzoKLSAgICAgICAgICBjYXNlIEdMX1VOUEFDS19TS0lQX1JPV1M6Ci0gICAgICAgICAgY2Fz
ZSBHTF9VTlBBQ0tfU0tJUF9QSVhFTFM6Ci0gICAgICAgICAgY2FzZSBHTF9QQUNLX1JPV19MRU5H
VEg6Ci0gICAgICAgICAgY2FzZSBHTF9QQUNLX1NLSVBfUk9XUzoKLSAgICAgICAgICBjYXNlIEdM
X1BBQ0tfU0tJUF9QSVhFTFM6Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTIxNjcsNiArMTU5
MSwxMSBAQCB2b2lkIEdMX0FQSUVOVFJZIFBvbHlnb25PZmZzZXQoR0xmbG9hdCBmYWN0b3IsIEdM
ZmxvYXQgdW5pdHMpCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVBvbHlnb25PZmZzZXQoY29udGV4dCwgZmFjdG9yLCB1
bml0cykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAg
ICAgIGNvbnRleHQtPnBvbHlnb25PZmZzZXQoZmFjdG9yLCB1bml0cyk7CiAgICAgfQogfQpAQCAt
MjE5OSwxMyArMTYyOCwxMiBAQCB2b2lkIEdMX0FQSUVOVFJZIFJlbGVhc2VTaGFkZXJDb21waWxl
cih2b2lkKQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBDb21waWxlciAqY29t
cGlsZXIgPSBjb250ZXh0LT5nZXRDb21waWxlcigpOwotICAgICAgICBFcnJvciBlcnJvciA9IGNv
bXBpbGVyLT5yZWxlYXNlKCk7Ci0gICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCisgICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVSZWxlYXNlU2hhZGVy
Q29tcGlsZXIoY29udGV4dCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKGVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorCisgICAgICAg
IGNvbnRleHQtPnJlbGVhc2VTaGFkZXJDb21waWxlcigpOwogICAgIH0KIH0KIApAQCAtMjIxNywx
OSArMTY0NSwxMyBAQCB2b2lkIEdMX0FQSUVOVFJZIFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xlbnVt
IHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpegogICAgIENvbnRleHQgKmNvbnRl
eHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0g
ICAgICAgIGlmICghVmFsaWRhdGVSZW5kZXJidWZmZXJTdG9yYWdlUGFyYW1ldGVyc0FOR0xFKGNv
bnRleHQsIHRhcmdldCwgMCwgaW50ZXJuYWxmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQpKQorICAgICAg
ICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0
ZVJlbmRlcmJ1ZmZlclN0b3JhZ2UoY29udGV4dCwgdGFyZ2V0LCBpbnRlcm5hbGZvcm1hdCwgd2lk
dGgsIGhlaWdodCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
Ci0gICAgICAgIFJlbmRlcmJ1ZmZlciAqcmVuZGVyYnVmZmVyID0gY29udGV4dC0+Z2V0R0xTdGF0
ZSgpLmdldEN1cnJlbnRSZW5kZXJidWZmZXIoKTsKLSAgICAgICAgRXJyb3IgZXJyb3IgPSByZW5k
ZXJidWZmZXItPnNldFN0b3JhZ2UoaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOwotICAg
ICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAg
ICAgICAgY29udGV4dC0+cmVuZGVyYnVmZmVyU3RvcmFnZSh0YXJnZXQsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgaGVpZ2h0KTsKICAgICB9CiB9CiAKQEAgLTIyNDEsNiArMTY2MywxMSBAQCB2b2lk
IEdMX0FQSUVOVFJZIFNhbXBsZUNvdmVyYWdlKEdMY2xhbXBmIHZhbHVlLCBHTGJvb2xlYW4gaW52
ZXJ0KQogCiAgICAgaWYgKGNvbnRleHQpCiAgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlU2FtcGxlQ292ZXJhZ2UoY29udGV4dCwgdmFsdWUs
IGludmVydCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAg
ICAgICAgIGNvbnRleHQtPnNhbXBsZUNvdmVyYWdlKHZhbHVlLCBpbnZlcnQpOwogICAgIH0KIH0K
QEAgLTIyNTIsOSArMTY3OSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgU2Npc3NvcihHTGludCB4LCBH
TGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKICAgICBDb250ZXh0KiBjb250
ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDApCisgICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVTY2lzc29yKGNvbnRleHQsIHgsIHksIHdp
ZHRoLCBoZWlnaHQpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtMjI3MSwxNSArMTY5NywxMyBAQCB2b2lkIEdMX0FQSUVOVFJZIFNoYWRlckJpbmFy
eShHTHNpemVpIG4sIGNvbnN0IEdMdWludCogc2hhZGVycywgR0xlbnVtIGJpbmFyeWZvcgogICAg
IENvbnRleHQqIGNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEdMZW51bT4gJnNoYWRlckJp
bmFyeUZvcm1hdHMgPSBjb250ZXh0LT5nZXRDYXBzKCkuc2hhZGVyQmluYXJ5Rm9ybWF0czsKLSAg
ICAgICAgaWYgKHN0ZDo6ZmluZChzaGFkZXJCaW5hcnlGb3JtYXRzLmJlZ2luKCksIHNoYWRlckJp
bmFyeUZvcm1hdHMuZW5kKCksIGJpbmFyeWZvcm1hdCkgPT0gc2hhZGVyQmluYXJ5Rm9ybWF0cy5l
bmQoKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAg
ICAgICAhVmFsaWRhdGVTaGFkZXJCaW5hcnkoY29udGV4dCwgbiwgc2hhZGVycywgYmluYXJ5Zm9y
bWF0LCBiaW5hcnksIGxlbmd0aCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfRU5VTSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKLSAgICAgICAgLy8gTm8gYmluYXJ5IHNoYWRlciBmb3JtYXRzIGFyZSBzdXBw
b3J0ZWQuCi0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgY29udGV4dC0+c2hhZGVy
QmluYXJ5KG4sIHNoYWRlcnMsIGJpbmFyeWZvcm1hdCwgYmluYXJ5LCBsZW5ndGgpOwogICAgIH0K
IH0KIApAQCAtMjI5MSwyNCArMTcxNSwzMCBAQCB2b2lkIEdMX0FQSUVOVFJZIFNoYWRlclNvdXJj
ZShHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGNoYXIqIGNvbnN0KgogICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb3VudCA8IDApCisgICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlU2hhZGVyU291cmNl
KGNvbnRleHQsIHNoYWRlciwgY291bnQsIHN0cmluZywgbGVuZ3RoKSkKICAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgU2hhZGVyICpzaGFkZXJP
YmplY3QgPSBHZXRWYWxpZFNoYWRlcihjb250ZXh0LCBzaGFkZXIpOwotICAgICAgICBpZiAoIXNo
YWRlck9iamVjdCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIHNoYWRlck9iamVjdC0+c2V0U291cmNlKGNvdW50LCBzdHJpbmcsIGxlbmd0aCk7Cisg
ICAgICAgIGNvbnRleHQtPnNoYWRlclNvdXJjZShzaGFkZXIsIGNvdW50LCBzdHJpbmcsIGxlbmd0
aCk7CiAgICAgfQogfQogCiB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxGdW5jKEdMZW51bSBmdW5j
LCBHTGludCByZWYsIEdMdWludCBtYXNrKQogewotICAgIFN0ZW5jaWxGdW5jU2VwYXJhdGUoR0xf
RlJPTlRfQU5EX0JBQ0ssIGZ1bmMsIHJlZiwgbWFzayk7CisgICAgRVZFTlQoIihHTGVudW0gZnVu
YyA9IDB4JVgsIEdMaW50IHJlZiA9ICVkLCBHTHVpbnQgbWFzayA9ICVkKSIsIGZ1bmMsIHJlZiwg
bWFzayk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgJiYgIVZhbGlkYXRlU3RlbmNpbEZ1bmMoY29udGV4dCwgZnVuYywgcmVmLCBtYXNr
KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
Y29udGV4dC0+c3RlbmNpbEZ1bmMoZnVuYywgcmVmLCBtYXNrKTsKKyAgICB9CiB9CiAKIHZvaWQg
R0xfQVBJRU5UUlkgU3RlbmNpbEZ1bmNTZXBhcmF0ZShHTGVudW0gZmFjZSwgR0xlbnVtIGZ1bmMs
IEdMaW50IHJlZiwgR0x1aW50IG1hc2spCkBAIC0yMzE4LDMyICsxNzQ4LDkgQEAgdm9pZCBHTF9B
UElFTlRSWSBTdGVuY2lsRnVuY1NlcGFyYXRlKEdMZW51bSBmYWNlLCBHTGVudW0gZnVuYywgR0xp
bnQgcmVmLCBHTHVpbnQKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzd2l0Y2ggKGZhY2UpCi0g
ICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0ZST05UOgotICAgICAgICAgIGNhc2UgR0xfQkFD
SzoKLSAgICAgICAgICBjYXNlIEdMX0ZST05UX0FORF9CQUNLOgotICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHN3aXRjaCAoZnVuYykKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVTdGVuY2lsRnVuY1NlcGFyYXRlKGNv
bnRleHQsIGZhY2UsIGZ1bmMsIHJlZiwgbWFzaykpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNl
IEdMX05FVkVSOgotICAgICAgICAgIGNhc2UgR0xfQUxXQVlTOgotICAgICAgICAgIGNhc2UgR0xf
TEVTUzoKLSAgICAgICAgICBjYXNlIEdMX0xFUVVBTDoKLSAgICAgICAgICBjYXNlIEdMX0VRVUFM
OgotICAgICAgICAgIGNhc2UgR0xfR0VRVUFMOgotICAgICAgICAgIGNhc2UgR0xfR1JFQVRFUjoK
LSAgICAgICAgICBjYXNlIEdMX05PVEVRVUFMOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX0VOVU0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0y
MzUzLDcgKzE3NjAsMTggQEAgdm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsRnVuY1NlcGFyYXRlKEdM
ZW51bSBmYWNlLCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQKIAogdm9pZCBHTF9BUElF
TlRSWSBTdGVuY2lsTWFzayhHTHVpbnQgbWFzaykKIHsKLSAgICBTdGVuY2lsTWFza1NlcGFyYXRl
KEdMX0ZST05UX0FORF9CQUNLLCBtYXNrKTsKKyAgICBFVkVOVCgiKEdMdWludCBtYXNrID0gJWQp
IiwgbWFzayk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0
KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBW
YWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlU3RlbmNpbE1hc2soY29udGV4dCwgbWFzaykpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnRleHQt
PnN0ZW5jaWxNYXNrKG1hc2spOworICAgIH0KIH0KIAogdm9pZCBHTF9BUElFTlRSWSBTdGVuY2ls
TWFza1NlcGFyYXRlKEdMZW51bSBmYWNlLCBHTHVpbnQgbWFzaykKQEAgLTIzNjMsMTUgKzE3ODEs
OCBAQCB2b2lkIEdMX0FQSUVOVFJZIFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xlbnVtIGZhY2UsIEdM
dWludCBtYXNrKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoZmFjZSkKKyAgICAg
ICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVN0ZW5jaWxNYXNr
U2VwYXJhdGUoY29udGV4dCwgZmFjZSwgbWFzaykpCiAgICAgICAgIHsKLSAgICAgICAgICBjYXNl
IEdMX0ZST05UOgotICAgICAgICAgIGNhc2UgR0xfQkFDSzoKLSAgICAgICAgICBjYXNlIEdMX0ZS
T05UX0FORF9CQUNLOgotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0p
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMzgxLDc3ICsxNzkyLDMx
IEBAIHZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbE1hc2tTZXBhcmF0ZShHTGVudW0gZmFjZSwgR0x1
aW50IG1hc2spCiAKIHZvaWQgR0xfQVBJRU5UUlkgU3RlbmNpbE9wKEdMZW51bSBmYWlsLCBHTGVu
dW0gemZhaWwsIEdMZW51bSB6cGFzcykKIHsKLSAgICBTdGVuY2lsT3BTZXBhcmF0ZShHTF9GUk9O
VF9BTkRfQkFDSywgZmFpbCwgemZhaWwsIHpwYXNzKTsKLX0KLQotdm9pZCBHTF9BUElFTlRSWSBT
dGVuY2lsT3BTZXBhcmF0ZShHTGVudW0gZmFjZSwgR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwg
R0xlbnVtIHpwYXNzKQotewotICAgIEVWRU5UKCIoR0xlbnVtIGZhY2UgPSAweCVYLCBHTGVudW0g
ZmFpbCA9IDB4JVgsIEdMZW51bSB6ZmFpbCA9IDB4JVgsIEdMZW51bSB6cGFzID0gMHglWHMpIiwK
LSAgICAgICAgICBmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOworICAgIEVWRU5UKCIoR0xlbnVt
IGZhaWwgPSAweCVYLCBHTGVudW0gemZhaWwgPSAweCVYLCBHTGVudW0genBhcyA9IDB4JVhzKSIs
IGZhaWwsIHpmYWlsLCB6cGFzcyk7CiAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBzd2l0Y2gg
KGZhY2UpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX0ZST05UOgotICAgICAgICAgIGNh
c2UgR0xfQkFDSzoKLSAgICAgICAgICBjYXNlIEdMX0ZST05UX0FORF9CQUNLOgotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAoZmFpbCkKKyAgICAgICAgaWYgKCFjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVN0ZW5jaWxPcChjb250ZXh0LCBmYWlsLCB6
ZmFpbCwgenBhc3MpKQogICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9aRVJPOgotICAgICAg
ICAgIGNhc2UgR0xfS0VFUDoKLSAgICAgICAgICBjYXNlIEdMX1JFUExBQ0U6Ci0gICAgICAgICAg
Y2FzZSBHTF9JTkNSOgotICAgICAgICAgIGNhc2UgR0xfREVDUjoKLSAgICAgICAgICBjYXNlIEdM
X0lOVkVSVDoKLSAgICAgICAgICBjYXNlIEdMX0lOQ1JfV1JBUDoKLSAgICAgICAgICBjYXNlIEdM
X0RFQ1JfV1JBUDoKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBzd2l0Y2ggKHpmYWls
KQotICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9aRVJPOgotICAgICAgICAgIGNhc2UgR0xf
S0VFUDoKLSAgICAgICAgICBjYXNlIEdMX1JFUExBQ0U6Ci0gICAgICAgICAgY2FzZSBHTF9JTkNS
OgotICAgICAgICAgIGNhc2UgR0xfREVDUjoKLSAgICAgICAgICBjYXNlIEdMX0lOVkVSVDoKLSAg
ICAgICAgICBjYXNlIEdMX0lOQ1JfV1JBUDoKLSAgICAgICAgICBjYXNlIEdMX0RFQ1JfV1JBUDoK
LSAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjb250ZXh0LT5zdGVuY2lsT3AoZmFpbCwgemZh
aWwsIHpwYXNzKTsKKyAgICB9Cit9CiAKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX0VOVU0pKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQordm9pZCBHTF9BUElFTlRSWSBTdGVuY2lsT3BTZXBhcmF0
ZShHTGVudW0gZmFjZSwgR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKQor
eworICAgIEVWRU5UKCIoR0xlbnVtIGZhY2UgPSAweCVYLCBHTGVudW0gZmFpbCA9IDB4JVgsIEdM
ZW51bSB6ZmFpbCA9IDB4JVgsIEdMZW51bSB6cGFzID0gMHglWHMpIiwKKyAgICAgICAgICBmYWNl
LCBmYWlsLCB6ZmFpbCwgenBhc3MpOwogCi0gICAgICAgIHN3aXRjaCAoenBhc3MpCisgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChjb250ZXh0
KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAg
ICAgICAgICAhVmFsaWRhdGVTdGVuY2lsT3BTZXBhcmF0ZShjb250ZXh0LCBmYWNlLCBmYWlsLCB6
ZmFpbCwgenBhc3MpKQogICAgICAgICB7Ci0gICAgICAgICAgY2FzZSBHTF9aRVJPOgotICAgICAg
ICAgIGNhc2UgR0xfS0VFUDoKLSAgICAgICAgICBjYXNlIEdMX1JFUExBQ0U6Ci0gICAgICAgICAg
Y2FzZSBHTF9JTkNSOgotICAgICAgICAgIGNhc2UgR0xfREVDUjoKLSAgICAgICAgICBjYXNlIEdM
X0lOVkVSVDoKLSAgICAgICAgICBjYXNlIEdMX0lOQ1JfV1JBUDoKLSAgICAgICAgICBjYXNlIEdM
X0RFQ1JfV1JBUDoKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjQ5Myw4ICsxODU4LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBUZXhQYXJhbWV0ZXJmKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFt
ZSwgR0xmbG9hdCBwYXJhbSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIFRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKHRhcmdldCk7
Ci0gICAgICAgIFNldFRleFBhcmFtZXRlcmYodGV4dHVyZSwgcG5hbWUsIHBhcmFtKTsKKyAgICAg
ICAgY29udGV4dC0+dGV4UGFyYW1ldGVyZih0YXJnZXQsIHBuYW1lLCBwYXJhbSk7CiAgICAgfQog
fQogCkBAIC0yNTExLDggKzE4NzUsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlcmZ2
KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmbG9hdCAqcGFyYQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGNv
bnRleHQtPmdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKLSAgICAgICAgU2V0VGV4UGFyYW1ldGVy
ZnYodGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGNvbnRleHQtPnRleFBhcmFtZXRl
cmZ2KHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0yNTI4LDggKzE4OTEs
NyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRlcmkoR0xlbnVtIHRhcmdldCwgR0xlbnVt
IHBuYW1lLCBHTGludCBwYXJhbSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKHRhcmdl
dCk7Ci0gICAgICAgIFNldFRleFBhcmFtZXRlcmkodGV4dHVyZSwgcG5hbWUsIHBhcmFtKTsKKyAg
ICAgICAgY29udGV4dC0+dGV4UGFyYW1ldGVyaSh0YXJnZXQsIHBuYW1lLCBwYXJhbSk7CiAgICAg
fQogfQogCkBAIC0yNTQ2LDggKzE5MDgsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFBhcmFtZXRl
cml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQgKnBhcmFtcwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgVGV4dHVyZSAqdGV4dHVyZSA9
IGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKLSAgICAgICAgU2V0VGV4UGFyYW1l
dGVyaXYodGV4dHVyZSwgcG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGNvbnRleHQtPnRleFBhcmFt
ZXRlcml2KHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0yNTc2LDcgKzE5
MzcsMTggQEAgdm9pZCBHTF9BUElFTlRSWSBUZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdM
aW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludAogCiB2b2lkIEdMX0FQSUVOVFJZIFVuaWZv
cm0xZihHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4KQogewotICAgIFVuaWZvcm0xZnYobG9jYXRp
b24sIDEsICZ4KTsKKyAgICBFVkVOVCgiKEdMaW50IGxvY2F0aW9uID0gJWQsIEdMZmxvYXQgeCA9
ICVmKSIsIGxvY2F0aW9uLCB4KTsKKworICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVVbmlmb3JtMWYoY29udGV4dCwgbG9j
YXRpb24sIHgpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBjb250ZXh0LT51bmlmb3JtMWYobG9jYXRpb24sIHgpOworICAgIH0KIH0KIAogdm9p
ZCBHTF9BUElFTlRSWSBVbmlmb3JtMWZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGZsb2F0KiB2KQpAQCAtMjU4NiwxOSArMTk1OCwyOSBAQCB2b2lkIEdMX0FQSUVOVFJZ
IFVuaWZvcm0xZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQq
IHYpCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAg
IGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFWYWxpZGF0ZVVuaWZvcm0oY29udGV4
dCwgR0xfRkxPQVQsIGxvY2F0aW9uLCBjb3VudCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVVbmlmb3JtMWZ2KGNvbnRleHQsIGxvY2F0aW9uLCBj
b3VudCwgdikpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0g
ICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3Jh
bSgpOwotICAgICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtMWZ2KGxvY2F0aW9uLCBjb3VudCwgdik7
CisgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xZnYobG9jYXRpb24sIGNvdW50LCB2KTsKICAgICB9
CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTFpKEdMaW50IGxvY2F0aW9uLCBHTGludCB4
KQogewotICAgIFVuaWZvcm0xaXYobG9jYXRpb24sIDEsICZ4KTsKKyAgICBFVkVOVCgiKEdMaW50
IGxvY2F0aW9uID0gJWQsIEdMaW50IHggPSAlZCkiLCBsb2NhdGlvbiwgeCk7CisKKyAgICBDb250
ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQp
CisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlk
YXRlVW5pZm9ybTFpdihjb250ZXh0LCBsb2NhdGlvbiwgMSwgJngpKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT51bmlmb3JtMWko
bG9jYXRpb24sIHgpOworICAgIH0KIH0KIAogdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMWl2KEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCogdikKQEAgLTI2MDgsMjEg
KzE5OTAsMjkgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMWl2KEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGludCogdikKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBp
ZiAoIVZhbGlkYXRlVW5pZm9ybShjb250ZXh0LCBHTF9JTlQsIGxvY2F0aW9uLCBjb3VudCkpCisg
ICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVVbmlmb3Jt
MWl2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdikpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0
LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOwotICAgICAgICBwcm9ncmFtLT5zZXRVbmlmb3Jt
MWl2KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAgICAgIGNvbnRleHQtPnVuaWZvcm0xaXYobG9j
YXRpb24sIGNvdW50LCB2KTsKICAgICB9CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTJm
KEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSkKIHsKLSAgICBHTGZsb2F0IHh5
WzJdID0ge3gsIHl9OworICAgIEVWRU5UKCIoR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCB4
ID0gJWYsIEdMZmxvYXQgeSA9ICVmKSIsIGxvY2F0aW9uLCB4LCB5KTsKKworICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29udGV4dCkKKyAg
ICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVV
bmlmb3JtMmYoY29udGV4dCwgbG9jYXRpb24sIHgsIHkpKQorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KIAotICAgIFVuaWZvcm0yZnYobG9jYXRpb24sIDEsIHh5KTsK
KyAgICAgICAgY29udGV4dC0+dW5pZm9ybTJmKGxvY2F0aW9uLCB4LCB5KTsKKyAgICB9CiB9CiAK
IHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTJmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0xmbG9hdCogdikKQEAgLTI2MzIsMjEgKzIwMjIsMjkgQEAgdm9pZCBHTF9BUElF
TlRSWSBVbmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZs
b2F0KiB2KQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsK
ICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghVmFsaWRhdGVVbmlmb3JtKGNv
bnRleHQsIEdMX0ZMT0FUX1ZFQzIsIGxvY2F0aW9uLCBjb3VudCkpCisgICAgICAgIGlmICghY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVVbmlmb3JtMmZ2KGNvbnRleHQsIGxv
Y2F0aW9uLCBjb3VudCwgdikpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCku
Z2V0UHJvZ3JhbSgpOwotICAgICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtMmZ2KGxvY2F0aW9uLCBj
b3VudCwgdik7CisgICAgICAgIGNvbnRleHQtPnVuaWZvcm0yZnYobG9jYXRpb24sIGNvdW50LCB2
KTsKICAgICB9CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTJpKEdMaW50IGxvY2F0aW9u
LCBHTGludCB4LCBHTGludCB5KQogewotICAgIEdMaW50IHh5WzJdID0ge3gsIHl9OworICAgIEVW
RU5UKCIoR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xpbnQgeCA9ICVkLCBHTGludCB5ID0gJWQpIiwg
bG9jYXRpb24sIHgsIHkpOwogCi0gICAgVW5pZm9ybTJpdihsb2NhdGlvbiwgMSwgeHkpOworICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKKyAgICBpZiAoY29u
dGV4dCkKKyAgICB7CisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAh
VmFsaWRhdGVVbmlmb3JtMmkoY29udGV4dCwgbG9jYXRpb24sIHgsIHkpKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb250ZXh0LT51bmlmb3Jt
MmkobG9jYXRpb24sIHgsIHkpOworICAgIH0KIH0KIAogdm9pZCBHTF9BUElFTlRSWSBVbmlmb3Jt
Mml2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCogdikKQEAgLTI2
NTYsMjEgKzIwNTQsMzAgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtMml2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCogdikKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBpZiAoIVZhbGlkYXRlVW5pZm9ybShjb250ZXh0LCBHTF9JTlRfVkVDMiwgbG9jYXRpb24s
IGNvdW50KSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxp
ZGF0ZVVuaWZvcm0yaXYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB2KSkKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3Jh
bSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRQcm9ncmFtKCk7Ci0gICAgICAgIHByb2dyYW0t
PnNldFVuaWZvcm0yaXYobG9jYXRpb24sIGNvdW50LCB2KTsKKyAgICAgICAgY29udGV4dC0+dW5p
Zm9ybTJpdihsb2NhdGlvbiwgY291bnQsIHYpOwogICAgIH0KIH0KIAogdm9pZCBHTF9BUElFTlRS
WSBVbmlmb3JtM2YoR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0
IHopCiB7Ci0gICAgR0xmbG9hdCB4eXpbM10gPSB7eCwgeSwgen07CisgICAgRVZFTlQoIihHTGlu
dCBsb2NhdGlvbiA9ICVkLCBHTGZsb2F0IHggPSAlZiwgR0xmbG9hdCB5ID0gJWYsIEdMZmxvYXQg
eiA9ICVmKSIsIGxvY2F0aW9uLCB4LCB5LAorICAgICAgICAgIHopOwogCi0gICAgVW5pZm9ybTNm
dihsb2NhdGlvbiwgMSwgeHl6KTsKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlVW5pZm9ybTNmKGNvbnRleHQsIGxvY2F0
aW9uLCB4LCB5LCB6KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgY29udGV4dC0+dW5pZm9ybTNmKGxvY2F0aW9uLCB4LCB5LCB6KTsKKyAgICB9
CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTNmdihHTGludCBsb2NhdGlvbiwgR0xzaXpl
aSBjb3VudCwgY29uc3QgR0xmbG9hdCogdikKQEAgLTI2ODAsMjEgKzIwODcsMjkgQEAgdm9pZCBH
TF9BUElFTlRSWSBVbmlmb3JtM2Z2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGZsb2F0KiB2KQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghVmFsaWRhdGVVbmlm
b3JtKGNvbnRleHQsIEdMX0ZMT0FUX1ZFQzMsIGxvY2F0aW9uLCBjb3VudCkpCisgICAgICAgIGlm
ICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVVbmlmb3JtM2Z2KGNvbnRl
eHQsIGxvY2F0aW9uLCBjb3VudCwgdikpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0
YXRlKCkuZ2V0UHJvZ3JhbSgpOwotICAgICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtM2Z2KGxvY2F0
aW9uLCBjb3VudCwgdik7CisgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zZnYobG9jYXRpb24sIGNv
dW50LCB2KTsKICAgICB9CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTNpKEdMaW50IGxv
Y2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGludCB6KQogewotICAgIEdMaW50IHh5elszXSA9
IHt4LCB5LCB6fTsKKyAgICBFVkVOVCgiKEdMaW50IGxvY2F0aW9uID0gJWQsIEdMaW50IHggPSAl
ZCwgR0xpbnQgeSA9ICVkLCBHTGludCB6ID0gJWQpIiwgbG9jYXRpb24sIHgsIHksIHopOworCisg
ICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGlmIChj
b250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYm
ICFWYWxpZGF0ZVVuaWZvcm0zaShjb250ZXh0LCBsb2NhdGlvbiwgeCwgeSwgeikpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgVW5pZm9ybTNpdihsb2Nh
dGlvbiwgMSwgeHl6KTsKKyAgICAgICAgY29udGV4dC0+dW5pZm9ybTNpKGxvY2F0aW9uLCB4LCB5
LCB6KTsKKyAgICB9CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTNpdihHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYpCkBAIC0yNzA0LDIxICsyMTE5LDMw
IEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTNpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xpbnQqIHYpCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFWYWxp
ZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfSU5UX1ZFQzMsIGxvY2F0aW9uLCBjb3VudCkpCisgICAg
ICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVVbmlmb3JtM2l2
KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdikpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnByb2dyYW0gPSBjb250ZXh0LT5n
ZXRHTFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOwotICAgICAgICBwcm9ncmFtLT5zZXRVbmlmb3JtM2l2
KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAgICAgIGNvbnRleHQtPnVuaWZvcm0zaXYobG9jYXRp
b24sIGNvdW50LCB2KTsKICAgICB9CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTRmKEdM
aW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcp
CiB7Ci0gICAgR0xmbG9hdCB4eXp3WzRdID0ge3gsIHksIHosIHd9OworICAgIEVWRU5UKCIoR0xp
bnQgbG9jYXRpb24gPSAlZCwgR0xmbG9hdCB4ID0gJWYsIEdMZmxvYXQgeSA9ICVmLCBHTGZsb2F0
IHogPSAlZiwgR0xmbG9hdCB3ID0gJWYpIiwKKyAgICAgICAgICBsb2NhdGlvbiwgeCwgeSwgeiwg
dyk7CiAKLSAgICBVbmlmb3JtNGZ2KGxvY2F0aW9uLCAxLCB4eXp3KTsKKyAgICBDb250ZXh0ICpj
b250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRleHQpCisgICAg
eworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlVW5p
Zm9ybTRmKGNvbnRleHQsIGxvY2F0aW9uLCB4LCB5LCB6LCB3KSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgY29udGV4dC0+dW5pZm9ybTRmKGxv
Y2F0aW9uLCB4LCB5LCB6LCB3KTsKKyAgICB9CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9y
bTRmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCogdikKQEAg
LTI3MjgsMjEgKzIxNTIsMzAgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtNGZ2KEdMaW50IGxv
Y2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2KQogICAgIENvbnRleHQgKmNv
bnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIGlmICghVmFsaWRhdGVVbmlmb3JtKGNvbnRleHQsIEdMX0ZMT0FUX1ZFQzQsIGxv
Y2F0aW9uLCBjb3VudCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAm
JiAhVmFsaWRhdGVVbmlmb3JtNGZ2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdikpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0g
KnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOwotICAgICAgICBw
cm9ncmFtLT5zZXRVbmlmb3JtNGZ2KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAgICAgIGNvbnRl
eHQtPnVuaWZvcm00ZnYobG9jYXRpb24sIGNvdW50LCB2KTsKICAgICB9CiB9CiAKIHZvaWQgR0xf
QVBJRU5UUlkgVW5pZm9ybTRpKEdMaW50IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGlu
dCB6LCBHTGludCB3KQogewotICAgIEdMaW50IHh5endbNF0gPSB7eCwgeSwgeiwgd307CisgICAg
RVZFTlQoIihHTGludCBsb2NhdGlvbiA9ICVkLCBHTGludCB4ID0gJWQsIEdMaW50IHkgPSAlZCwg
R0xpbnQgeiA9ICVkLCBHTGludCB3ID0gJWQpIiwgbG9jYXRpb24sCisgICAgICAgICAgeCwgeSwg
eiwgdyk7CisKKyAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
CisgICAgaWYgKGNvbnRleHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkgJiYgIVZhbGlkYXRlVW5pZm9ybTRpKGNvbnRleHQsIGxvY2F0aW9uLCB4LCB5LCB6
LCB3KSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICBV
bmlmb3JtNGl2KGxvY2F0aW9uLCAxLCB4eXp3KTsKKyAgICAgICAgY29udGV4dC0+dW5pZm9ybTRp
KGxvY2F0aW9uLCB4LCB5LCB6LCB3KTsKKyAgICB9CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgVW5p
Zm9ybTRpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYpCkBA
IC0yNzUyLDEzICsyMTg1LDEyIEBAIHZvaWQgR0xfQVBJRU5UUlkgVW5pZm9ybTRpdihHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQqIHYpCiAgICAgQ29udGV4dCAqY29u
dGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsK
LSAgICAgICAgaWYgKCFWYWxpZGF0ZVVuaWZvcm0oY29udGV4dCwgR0xfSU5UX1ZFQzQsIGxvY2F0
aW9uLCBjb3VudCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAh
VmFsaWRhdGVVbmlmb3JtNGl2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdikpCiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0gKnBy
b2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOwotICAgICAgICBwcm9n
cmFtLT5zZXRVbmlmb3JtNGl2KGxvY2F0aW9uLCBjb3VudCwgdik7CisgICAgICAgIGNvbnRleHQt
PnVuaWZvcm00aXYobG9jYXRpb24sIGNvdW50LCB2KTsKICAgICB9CiB9CiAKQEAgLTI3NzAsMTMg
KzIyMDIsMTMgQEAgdm9pZCBHTF9BUElFTlRSWSBVbmlmb3JtTWF0cml4MmZ2KEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnMKICAgICBDb250ZXh0ICpjb250ZXh0
ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAg
ICAgICBpZiAoIVZhbGlkYXRlVW5pZm9ybU1hdHJpeChjb250ZXh0LCBHTF9GTE9BVF9NQVQyLCBs
b2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlVW5pZm9ybU1hdHJpeDJmdihjb250
ZXh0LCBsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpKQogICAgICAgICB7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBQcm9ncmFtICpwcm9ncmFtID0g
Y29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFByb2dyYW0oKTsKLSAgICAgICAgcHJvZ3JhbS0+c2V0
VW5pZm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOworICAg
ICAgICBjb250ZXh0LT51bmlmb3JtTWF0cml4MmZ2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3Nl
LCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC0yNzg4LDEzICsyMjIwLDEzIEBAIHZvaWQgR0xfQVBJ
RU5UUlkgVW5pZm9ybU1hdHJpeDNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgR0xi
b29sZWFuIHRyYW5zCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFWYWxpZGF0ZVVuaWZv
cm1NYXRyaXgoY29udGV4dCwgR0xfRkxPQVRfTUFUMywgbG9jYXRpb24sIGNvdW50LCB0cmFuc3Bv
c2UpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAg
ICAgICFWYWxpZGF0ZVVuaWZvcm1NYXRyaXgzZnYoY29udGV4dCwgbG9jYXRpb24sIGNvdW50LCB0
cmFuc3Bvc2UsIHZhbHVlKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbSA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5n
ZXRQcm9ncmFtKCk7Ci0gICAgICAgIHByb2dyYW0tPnNldFVuaWZvcm1NYXRyaXgzZnYobG9jYXRp
b24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKKyAgICAgICAgY29udGV4dC0+dW5pZm9ybU1h
dHJpeDNmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApA
QCAtMjgwNiwxMyArMjIzOCwxMyBAQCB2b2lkIEdMX0FQSUVOVFJZIFVuaWZvcm1NYXRyaXg0ZnYo
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIEdMYm9vbGVhbiB0cmFucwogICAgIENvbnRl
eHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkK
ICAgICB7Ci0gICAgICAgIGlmICghVmFsaWRhdGVVbmlmb3JtTWF0cml4KGNvbnRleHQsIEdMX0ZM
T0FUX01BVDQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlKSkKKyAgICAgICAgaWYgKCFjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVVbmlmb3JtTWF0
cml4NGZ2KGNvbnRleHQsIGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIFByb2dyYW0g
KnByb2dyYW0gPSBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0UHJvZ3JhbSgpOwotICAgICAgICBw
cm9ncmFtLT5zZXRVbmlmb3JtTWF0cml4NGZ2KGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2
YWx1ZSk7CisgICAgICAgIGNvbnRleHQtPnVuaWZvcm1NYXRyaXg0ZnYobG9jYXRpb24sIGNvdW50
LCB0cmFuc3Bvc2UsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTI4MzksMTQgKzIyNzEsMTIgQEAg
dm9pZCBHTF9BUElFTlRSWSBWYWxpZGF0ZVByb2dyYW0oR0x1aW50IHByb2dyYW0pCiAgICAgQ29u
dGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0
KQogICAgIHsKLSAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IEdldFZhbGlkUHJvZ3Jh
bShjb250ZXh0LCBwcm9ncmFtKTsKLQotICAgICAgICBpZiAoIXByb2dyYW1PYmplY3QpCisgICAg
ICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVWYWxpZGF0ZVBy
b2dyYW0oY29udGV4dCwgcHJvZ3JhbSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCi0gICAgICAgIHByb2dyYW1PYmplY3QtPnZhbGlkYXRlKGNvbnRleHQtPmdl
dENhcHMoKSk7CisgICAgICAgIGNvbnRleHQtPnZhbGlkYXRlUHJvZ3JhbShwcm9ncmFtKTsKICAg
ICB9CiB9CiAKQEAgLTI4NTcsOSArMjI4Nyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0
cmliMWYoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgpCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
aWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgaWYgKCFjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVZlcnRleEF0dHJpYjFmKGNvbnRleHQsIGluZGV4
LCB4KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTI4NzQsOSArMjMwMyw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliMWZ2KEdMdWlu
dCBpbmRleCwgY29uc3QgR0xmbG9hdCogdmFsdWVzKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgICAgIGlmICghY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVWZXJ0ZXhBdHRyaWIxZnYoY29udGV4dCwgaW5k
ZXgsIHZhbHVlcykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCkBAIC0yODkxLDkgKzIzMTksOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYjJm
KEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpCiAgICAgQ29udGV4dCAqY29udGV4
dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgaWYgKCFjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVZlcnRleEF0dHJpYjJmKGNvbnRleHQs
IGluZGV4LCB4LCB5KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJy
b3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKQEAgLTI5MDgsOSArMjMzNSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmli
MmZ2KEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCogdmFsdWVzKQogICAgIENvbnRleHQgKmNv
bnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7
Ci0gICAgICAgIGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgICAgIGlmICgh
Y29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVWZXJ0ZXhBdHRyaWIyZnYoY29u
dGV4dCwgaW5kZXgsIHZhbHVlcykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCkBAIC0yOTI1LDkgKzIzNTEsOCBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRl
eEF0dHJpYjNmKEdMdWludCBpbmRleCwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeikK
ICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYg
KGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRSSUJT
KQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYgIVZhbGlkYXRlVmVy
dGV4QXR0cmliM2YoY29udGV4dCwgaW5kZXgsIHgsIHksIHopKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMjk0Miw5ICsyMzY3LDggQEAgdm9pZCBH
TF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWIzZnYoR0x1aW50IGluZGV4LCBjb25zdCBHTGZsb2F0KiB2
YWx1ZXMpCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhf
QVRUUklCUykKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxp
ZGF0ZVZlcnRleEF0dHJpYjNmdihjb250ZXh0LCBpbmRleCwgdmFsdWVzKSkKICAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTI5NTksOSArMjM4Myw4IEBA
IHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliNGYoR0x1aW50IGluZGV4LCBHTGZsb2F0IHgs
IEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGlu
ZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpICYmICFWYWxpZGF0ZVZlcnRleEF0dHJpYjRmKGNvbnRleHQsIGluZGV4LCB4LCB5
LCB6LCB3KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTI5NzYsOSArMjM5OSw4IEBAIHZvaWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliNGZ2KEdM
dWludCBpbmRleCwgY29uc3QgR0xmbG9hdCogdmFsdWVzKQogICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIGlmIChpbmRleCA+PSBNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVWZXJ0ZXhBdHRyaWI0ZnYoY29udGV4dCwg
aW5kZXgsIHZhbHVlcykpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCkBAIC0yOTk1LDY1ICsyNDE3LDkgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRy
aWJQb2ludGVyKEdMdWludCBpbmRleCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMYm8KICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBpZiAoaW5kZXggPj0gTUFYX1ZFUlRFWF9BVFRSSUJTKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoc2l6ZSA8IDEgfHwgc2l6ZSA+IDQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAodHlwZSkKLSAgICAgICAgewotICAgICAg
ICAgICAgY2FzZSBHTF9CWVRFOgotICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgot
ICAgICAgICAgICAgY2FzZSBHTF9TSE9SVDoKLSAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURf
U0hPUlQ6Ci0gICAgICAgICAgICBjYXNlIEdMX0ZJWEVEOgotICAgICAgICAgICAgY2FzZSBHTF9G
TE9BVDoKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgY2FzZSBHTF9IQUxG
X0ZMT0FUOgotICAgICAgICAgICAgY2FzZSBHTF9JTlQ6Ci0gICAgICAgICAgICBjYXNlIEdMX1VO
U0lHTkVEX0lOVDoKLSAgICAgICAgICAgIGNhc2UgR0xfSU5UXzJfMTBfMTBfMTBfUkVWOgotICAg
ICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVY6Ci0gICAgICAgICAg
ICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9y
KEdMX0lOVkFMSURfRU5VTSkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChzdHJpZGUgPCAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoKHR5cGUgPT0gR0xfSU5UXzJfMTBfMTBfMTBfUkVWIHx8IHR5cGUg
PT0gR0xfVU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWKSAmJiBzaXplICE9IDQpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBb
T3BlbkdMIEVTIDMuMC4yXSBTZWN0aW9uIDIuOCBwYWdlIDI0OgotICAgICAgICAvLyBBbiBJTlZB
TElEX09QRVJBVElPTiBlcnJvciBpcyBnZW5lcmF0ZWQgd2hlbiBhIG5vbi16ZXJvIHZlcnRleCBh
cnJheSBvYmplY3QKLSAgICAgICAgLy8gaXMgYm91bmQsIHplcm8gaXMgYm91bmQgdG8gdGhlIEFS
UkFZX0JVRkZFUiBidWZmZXIgb2JqZWN0IGJpbmRpbmcgcG9pbnQsCi0gICAgICAgIC8vIGFuZCB0
aGUgcG9pbnRlciBhcmd1bWVudCBpcyBub3QgTlVMTC4KLSAgICAgICAgaWYgKGNvbnRleHQtPmdl
dEdMU3RhdGUoKS5nZXRWZXJ0ZXhBcnJheSgpLT5pZCgpICE9IDAgJiYKLSAgICAgICAgICAgIGNv
bnRleHQtPmdldEdMU3RhdGUoKS5nZXRBcnJheUJ1ZmZlcklkKCkgPT0gMCAmJiBwdHIgIT0gTlVM
TCkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAg
ICAhVmFsaWRhdGVWZXJ0ZXhBdHRyaWJQb2ludGVyKGNvbnRleHQsIGluZGV4LCBzaXplLCB0eXBl
LCBub3JtYWxpemVkLCBzdHJpZGUsIHB0cikpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzA2OCw5ICsyNDM0LDggQEAgdm9pZCBHTF9BUElF
TlRSWSBWaWV3cG9ydChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhl
aWdodCkKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8
IDApCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVW
aWV3cG9ydChjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0KSkKICAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfMl8wLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMC5oCmlu
ZGV4IGYxZmY0MDg3YWRlLi5lZWU1ZmI1NDY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzAuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzJfMC5o
CkBAIC05LDggKzksOCBAQAogI2lmbmRlZiBMSUJHTEVTVjJfRU5UUllQT0lOVEdMRVMyMF9IXwog
I2RlZmluZSBMSUJHTEVTVjJfRU5UUllQT0lOVEdMRVMyMF9IXwogCi0jaW5jbHVkZSA8QU5HTEUv
Z2wyLmg+Ci0jaW5jbHVkZSA8QU5HTEUvZXhwb3J0Lmg+CisjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+
CisjaW5jbHVkZSA8ZXhwb3J0Lmg+CiAKIG5hbWVzcGFjZSBnbAogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzBf
ZXh0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9p
bnRzX2dsZXNfMl8wX2V4dC5jcHAKaW5kZXggMGFmYWY4M2I2YjUuLmNiY2E4ZGRkNDVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50
c19nbGVzXzJfMF9leHQuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfMl8wX2V4dC5jcHAKQEAgLTE4LDYgKzE4LDcgQEAKICNp
bmNsdWRlICJsaWJBTkdMRS9RdWVyeS5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3F1ZXJ5Y29udmVy
c2lvbnMuaCIKICNpbmNsdWRlICJsaWJBTkdMRS9xdWVyeXV0aWxzLmgiCisjaW5jbHVkZSAibGli
QU5HTEUvVGhyZWFkLmgiCiAjaW5jbHVkZSAibGliQU5HTEUvVmVydGV4QXJyYXkuaCIKIAogI2lu
Y2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUy5oIgpAQCAtMjc1LDEyICsyNzYsNyBAQCB2b2lk
IEdMX0FQSUVOVFJZIERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHTGVudW0gbW9kZSwKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIEVycm9yIGVycm9yID0gY29udGV4
dC0+ZHJhd0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7Ci0g
ICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQor
ICAgICAgICBjb250ZXh0LT5kcmF3QXJyYXlzSW5zdGFuY2VkKG1vZGUsIGZpcnN0LCBjb3VudCwg
cHJpbWNvdW50KTsKICAgICB9CiB9CiAKQEAgLTMwNSwxMyArMzAxLDcgQEAgdm9pZCBHTF9BUElF
TlRSWSBEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHTGVudW0gbW9kZSwKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIEVycm9yIGVycm9yID0KLSAgICAgICAgICAg
IGNvbnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNl
cywgcHJpbWNvdW50LCBpbmRleFJhbmdlKTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkK
LSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50
c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgcHJpbWNvdW50LCBpbmRleFJh
bmdlKTsKICAgICB9CiB9CiAKQEAgLTU0OCwxOSArNTM4LDE0IEBAIHZvaWQgR0xfQVBJRU5UUlkg
UmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0xlbnVtIHRhcmdldCwgR0xzaXpl
aSBzYW1wCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwog
ICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFWYWxpZGF0ZVJlbmRlcmJ1ZmZl
clN0b3JhZ2VQYXJhbWV0ZXJzQU5HTEUoY29udGV4dCwgdGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5h
bGZvcm1hdCwKLSAgICAgICAgICAgIHdpZHRoLCBoZWlnaHQpKQorICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZVJlbmRlcmJ1ZmZl
clN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKGNvbnRleHQsIHRhcmdldCwgc2FtcGxlcywgaW50ZXJu
YWxmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3aWR0aCwgaGVpZ2h0KSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIgPSBjb250
ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0Q3VycmVudFJlbmRlcmJ1ZmZlcigpOwotICAgICAgICBFcnJv
ciBlcnJvciA9IHJlbmRlcmJ1ZmZlci0+c2V0U3RvcmFnZU11bHRpc2FtcGxlKHNhbXBsZXMsIGlu
dGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICAgICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPnJlbmRlcmJ1
ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3
aWR0aCwgaGVpZ2h0KTsKICAgICB9CiB9CiAKQEAgLTY1OSw3ICs2NDQsNyBAQCB2b2lkIEdMX0FQ
SUVOVFJZIFRleFN0b3JhZ2UyREVYVChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxldmVscywgR0xl
bnVtIGludGVybmFsZgogCiAgICAgICAgIEV4dGVudHMgc2l6ZSh3aWR0aCwgaGVpZ2h0LCAxKTsK
ICAgICAgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUodGFy
Z2V0KTsKLSAgICAgICAgRXJyb3IgZXJyb3IgPSB0ZXh0dXJlLT5zZXRTdG9yYWdlKHRhcmdldCwg
bGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgc2l6ZSk7CisgICAgICAgIEVycm9yIGVycm9yICAgICAg
PSB0ZXh0dXJlLT5zZXRTdG9yYWdlKGNvbnRleHQsIHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZv
cm1hdCwgc2l6ZSk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGVycm9yKTsKQEAgLTY5MCw3ICs2NzUsNyBA
QCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEF0dHJpYkRpdmlzb3JBTkdMRShHTHVpbnQgaW5kZXgs
IEdMdWludCBkaXZpc29yKQogICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCBlcnJvck1lc3NhZ2UpKTsKIAogICAgICAgICAgICAg
ICAgIC8vIFdlIGFsc28gb3V0cHV0IGFuIGVycm9yIG1lc3NhZ2UgdG8gdGhlIGRlYnVnZ2VyIHdp
bmRvdyBpZiB0cmFjaW5nIGlzIGFjdGl2ZSwgc28gdGhhdCBkZXZlbG9wZXJzIGNhbiBzZWUgdGhl
IGVycm9yIG1lc3NhZ2UuCi0gICAgICAgICAgICAgICAgRVJSKCIlcyIsIGVycm9yTWVzc2FnZSk7
CisgICAgICAgICAgICAgICAgRVJSKCkgPDwgZXJyb3JNZXNzYWdlOwogCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtNzY3LDcgKzc1Miw3IEBAIHZvaWQgR0xfQVBJ
RU5UUlkgR2V0UHJvZ3JhbUJpbmFyeU9FUyhHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBidWZTaXpl
LCBHTHNpemVpICpsCiAgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5n
ZXRQcm9ncmFtKHByb2dyYW0pOwogICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCAhPSBudWxs
cHRyKTsKIAotICAgICAgICBFcnJvciBlcnJvciA9IHByb2dyYW1PYmplY3QtPnNhdmVCaW5hcnko
YmluYXJ5Rm9ybWF0LCBiaW5hcnksIGJ1ZlNpemUsIGxlbmd0aCk7CisgICAgICAgIEVycm9yIGVy
cm9yID0gcHJvZ3JhbU9iamVjdC0+c2F2ZUJpbmFyeShjb250ZXh0LCBiaW5hcnlGb3JtYXQsIGJp
bmFyeSwgYnVmU2l6ZSwgbGVuZ3RoKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAg
ICAgICAgewogICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwpAQCAtNzky
LDcgKzc3Nyw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbUJpbmFyeU9FUyhHTHVpbnQgcHJv
Z3JhbSwgR0xlbnVtIGJpbmFyeUZvcm1hdCwgY29uc3Qgdm9pCiAgICAgICAgIFByb2dyYW0gKnBy
b2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOwogICAgICAgICBBU1NF
UlQocHJvZ3JhbU9iamVjdCAhPSBudWxscHRyKTsKIAotICAgICAgICBFcnJvciBlcnJvciA9IHBy
b2dyYW1PYmplY3QtPmxvYWRCaW5hcnkoYmluYXJ5Rm9ybWF0LCBiaW5hcnksIGxlbmd0aCk7Cisg
ICAgICAgIEVycm9yIGVycm9yID0gcHJvZ3JhbU9iamVjdC0+bG9hZEJpbmFyeShjb250ZXh0LCBi
aW5hcnlGb3JtYXQsIGJpbmFyeSwgbGVuZ3RoKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3Io
KSkKICAgICAgICAgewogICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwpA
QCAtOTkwLDEwICs5NzUsMTEgQEAgQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgRUdMSW1h
Z2VUYXJnZXRUZXh0dXJlMkRPRVMoR0xlbnVtIHRhcmdldCwgR0xlZ2xJbWEKIHsKICAgICBFVkVO
VCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVnbEltYWdlT0VTIGltYWdlID0gMHglMC44cCki
LCB0YXJnZXQsIGltYWdlKTsKIAotICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2Jh
bENvbnRleHQoKTsKKyAgICBlZ2w6OlRocmVhZCAqdGhyZWFkID0gZWdsOjpHZXRDdXJyZW50VGhy
ZWFkKCk7CisgICAgQ29udGV4dCAqY29udGV4dCAgICA9IHRocmVhZC0+Z2V0VmFsaWRDb250ZXh0
KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBlZ2w6OkRpc3BsYXkgKmRpc3Bs
YXkgICA9IGVnbDo6R2V0R2xvYmFsRGlzcGxheSgpOworICAgICAgICBlZ2w6OkRpc3BsYXkgKmRp
c3BsYXkgICA9IHRocmVhZC0+Z2V0RGlzcGxheSgpOwogICAgICAgICBlZ2w6OkltYWdlICppbWFn
ZU9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZWdsOjpJbWFnZSAqPihpbWFnZSk7CiAgICAgICAg
IGlmICghVmFsaWRhdGVFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyhjb250ZXh0LCBkaXNwbGF5
LCB0YXJnZXQsIGltYWdlT2JqZWN0KSkKICAgICAgICAgewpAQCAtMTAxNSwxMCArMTAwMSwxMSBA
QCBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZl
clN0b3JhZ2VPRVMoR0xlbnVtIHRhcmdldAogewogICAgIEVWRU5UKCIoR0xlbnVtIHRhcmdldCA9
IDB4JVgsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UgPSAweCUwLjhwKSIsIHRhcmdldCwgaW1hZ2UpOwog
Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOworICAgIGVn
bDo6VGhyZWFkICp0aHJlYWQgPSBlZ2w6OkdldEN1cnJlbnRUaHJlYWQoKTsKKyAgICBDb250ZXh0
ICpjb250ZXh0ICAgID0gdGhyZWFkLT5nZXRWYWxpZENvbnRleHQoKTsKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSAgID0gZWdsOjpHZXRHbG9i
YWxEaXNwbGF5KCk7CisgICAgICAgIGVnbDo6RGlzcGxheSAqZGlzcGxheSAgID0gdGhyZWFkLT5n
ZXREaXNwbGF5KCk7CiAgICAgICAgIGVnbDo6SW1hZ2UgKmltYWdlT2JqZWN0ID0gcmVpbnRlcnBy
ZXRfY2FzdDxlZ2w6OkltYWdlICo+KGltYWdlKTsKICAgICAgICAgaWYgKCFWYWxpZGF0ZUVHTElt
YWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyhjb250ZXh0LCBkaXNwbGF5LCB0YXJnZXQs
IGltYWdlT2JqZWN0KSkKICAgICAgICAgewpAQCAtMTg2Nyw3ICsxODU0LDEwIEBAIEFOR0xFX0VY
UE9SVCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVN
KEdMdWludCBwcm9ncmFtCiB9CiAKIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvcHlU
ZXh0dXJlQ0hST01JVU0oR0x1aW50IHNvdXJjZUlkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzb3VyY2VMZXZlbCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGRlc3RUYXJnZXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWlu
dCBkZXN0SWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMaW50IGRlc3RMZXZlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgaW50ZXJuYWxGb3JtYXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBkZXN0VHlwZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFj
a0ZsaXBZLApAQCAtMTg3NSwzMCArMTg2NSwzNSBAQCBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElF
TlRSWSBDb3B5VGV4dHVyZUNIUk9NSVVNKEdMdWludCBzb3VyY2VJZCwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIHVucGFja1VubXVs
dGlwbHlBbHBoYSkKIHsKICAgICBFVkVOVCgKLSAgICAgICAgIihHTHVpbnQgc291cmNlSWQgPSAl
dSwgR0x1aW50IGRlc3RJZCA9ICV1LCBHTGludCBpbnRlcm5hbEZvcm1hdCA9IDB4JVgsIEdMZW51
bSBkZXN0VHlwZSA9ICIKKyAgICAgICAgIihHTHVpbnQgc291cmNlSWQgPSAldSwgR0xpbnQgc291
cmNlTGV2ZWwgPSAlZCwgR0xlbnVtIGRlc3RUYXJnZXQgPSAweCVYLCBHTHVpbnQgZGVzdElkID0g
IgorICAgICAgICAiJXUsIEdMaW50IGRlc3RMZXZlbCA9ICVkLCBHTGludCBpbnRlcm5hbEZvcm1h
dCA9IDB4JVgsIEdMZW51bSBkZXN0VHlwZSA9ICIKICAgICAgICAgIjB4JVgsIEdMYm9vbGVhbiB1
bnBhY2tGbGlwWSA9ICV1LCBHTGJvb2xlYW4gdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSA9ICV1LCBH
TGJvb2xlYW4gIgogICAgICAgICAidW5wYWNrVW5tdWx0aXBseUFscGhhID0gJXUpIiwKLSAgICAg
ICAgc291cmNlSWQsIGRlc3RJZCwgaW50ZXJuYWxGb3JtYXQsIGRlc3RUeXBlLCB1bnBhY2tGbGlw
WSwgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKLSAgICAgICAgdW5wYWNrVW5tdWx0aXBseUFscGhh
KTsKKyAgICAgICAgc291cmNlSWQsIHNvdXJjZUxldmVsLCBkZXN0VGFyZ2V0LCBkZXN0SWQsIGRl
c3RMZXZlbCwgaW50ZXJuYWxGb3JtYXQsIGRlc3RUeXBlLCB1bnBhY2tGbGlwWSwKKyAgICAgICAg
dW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwgdW5wYWNrVW5tdWx0aXBseUFscGhhKTsKIAogICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4
dCkKICAgICB7CiAgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgotICAg
ICAgICAgICAgIVZhbGlkYXRlQ29weVRleHR1cmVDSFJPTUlVTShjb250ZXh0LCBzb3VyY2VJZCwg
ZGVzdElkLCBpbnRlcm5hbEZvcm1hdCwgZGVzdFR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVucGFja0ZsaXBZLCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnBhY2tVbm11bHRpcGx5
QWxwaGEpKQorICAgICAgICAgICAgIVZhbGlkYXRlQ29weVRleHR1cmVDSFJPTUlVTShjb250ZXh0
LCBzb3VyY2VJZCwgc291cmNlTGV2ZWwsIGRlc3RUYXJnZXQsIGRlc3RJZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdExldmVsLCBpbnRlcm5hbEZvcm1hdCwg
ZGVzdFR5cGUsIHVucGFja0ZsaXBZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnBhY2tQcmVtdWx0aXBseUFscGhhLCB1bnBhY2tVbm11bHRpcGx5QWxwaGEpKQog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb250
ZXh0LT5jb3B5VGV4dHVyZUNIUk9NSVVNKHNvdXJjZUlkLCBkZXN0SWQsIGludGVybmFsRm9ybWF0
LCBkZXN0VHlwZSwgdW5wYWNrRmxpcFksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwgdW5wYWNrVW5tdWx0aXBseUFscGhhKTsKKyAg
ICAgICAgY29udGV4dC0+Y29weVRleHR1cmVDSFJPTUlVTShzb3VyY2VJZCwgc291cmNlTGV2ZWws
IGRlc3RUYXJnZXQsIGRlc3RJZCwgZGVzdExldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGludGVybmFsRm9ybWF0LCBkZXN0VHlwZSwgdW5wYWNrRmxpcFksIHVucGFj
a1ByZW11bHRpcGx5QWxwaGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dW5wYWNrVW5tdWx0aXBseUFscGhhKTsKICAgICB9CiB9CiAKIEFOR0xFX0VYUE9SVCB2b2lkIEdM
X0FQSUVOVFJZIENvcHlTdWJUZXh0dXJlQ0hST01JVU0oR0x1aW50IHNvdXJjZUlkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBzb3Vy
Y2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xlbnVtIGRlc3RUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBkZXN0SWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGRlc3RMZXZlbCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9m
ZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xpbnQgeW9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xpbnQgeCwKQEAgLTE5MTAsMjUgKzE5MDUsMjcgQEAgQU5HTEVfRVhQ
T1JUIHZvaWQgR0xfQVBJRU5UUlkgQ29weVN1YlRleHR1cmVDSFJPTUlVTShHTHVpbnQgc291cmNl
SWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMYm9vbGVhbiB1bnBhY2tVbm11bHRpcGx5QWxwaGEpCiB7CiAgICAgRVZFTlQoCi0gICAgICAg
ICIoR0x1aW50IHNvdXJjZUlkID0gJXUsIEdMdWludCBkZXN0SWQgPSAldSwgLCBHTGJvb2xlYW4g
dW5wYWNrRmxpcFkgPSAldSwgR0xpbnQgeG9mZnNldCA9ICIKKyAgICAgICAgIihHTHVpbnQgc291
cmNlSWQgPSAldSwgR0xpbnQgc291cmNlTGV2ZWwgPSAlZCwgR0xlbnVtIGRlc3RUYXJnZXQgPSAw
eCVYLCBHTHVpbnQgZGVzdElkID0gIgorICAgICAgICAiJXUsIEdMaW50IGRlc3RMZXZlbCA9ICVk
LCBHTGludCB4b2Zmc2V0ID0gIgogICAgICAgICAiJWQsIEdMaW50IHlvZmZzZXQgPSAlZCwgR0xp
bnQgeCA9ICVkLCBHTGludCB5ID0gJWQsIEdMc2l6ZWkgd2lkdGggPSAlZCwgR0xzaXplaSBoZWln
aHQgPSAiCiAgICAgICAgICIlZCwgR0xib29sZWFuIHVucGFja1ByZW11bHRpcGx5QWxwaGEgPSAl
dSwgR0xib29sZWFuIHVucGFja1VubXVsdGlwbHlBbHBoYSA9ICV1KSIsCi0gICAgICAgIHNvdXJj
ZUlkLCBkZXN0SWQsIHhvZmZzZXQsIHlvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHVucGFj
a0ZsaXBZLAotICAgICAgICB1bnBhY2tQcmVtdWx0aXBseUFscGhhLCB1bnBhY2tVbm11bHRpcGx5
QWxwaGEpOworICAgICAgICBzb3VyY2VJZCwgc291cmNlTGV2ZWwsIGRlc3RUYXJnZXQsIGRlc3RJ
ZCwgZGVzdExldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LAorICAg
ICAgICB1bnBhY2tGbGlwWSwgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwgdW5wYWNrVW5tdWx0aXBs
eUFscGhhKTsKIAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSAmJgotICAgICAgICAgICAgIVZhbGlkYXRlQ29weVN1YlRleHR1cmVDSFJPTUlV
TShjb250ZXh0LCBzb3VyY2VJZCwgZGVzdElkLCB4b2Zmc2V0LCB5b2Zmc2V0LCB4LCB5LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCB1
bnBhY2tGbGlwWSwgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5wYWNrVW5tdWx0aXBseUFscGhhKSkKKyAgICAgICAg
ICAgICFWYWxpZGF0ZUNvcHlTdWJUZXh0dXJlQ0hST01JVU0oCisgICAgICAgICAgICAgICAgY29u
dGV4dCwgc291cmNlSWQsIHNvdXJjZUxldmVsLCBkZXN0VGFyZ2V0LCBkZXN0SWQsIGRlc3RMZXZl
bCwgeG9mZnNldCwgeW9mZnNldCwgeCwKKyAgICAgICAgICAgICAgICB5LCB3aWR0aCwgaGVpZ2h0
LCB1bnBhY2tGbGlwWSwgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwgdW5wYWNrVW5tdWx0aXBseUFs
cGhhKSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgY29udGV4dC0+Y29weVN1YlRleHR1cmVDSFJPTUlVTShzb3VyY2VJZCwgZGVzdElkLCB4b2Zm
c2V0LCB5b2Zmc2V0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVucGFja0ZsaXBZLCB1bnBhY2tQcmVtdWx0aXBseUFscGhhLCB1
bnBhY2tVbm11bHRpcGx5QWxwaGEpOworICAgICAgICBjb250ZXh0LT5jb3B5U3ViVGV4dHVyZUNI
Uk9NSVVNKHNvdXJjZUlkLCBzb3VyY2VMZXZlbCwgZGVzdFRhcmdldCwgZGVzdElkLCBkZXN0TGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG9mZnNldCwgeW9m
ZnNldCwgeCwgeSwgd2lkdGgsIGhlaWdodCwgdW5wYWNrRmxpcFksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5wYWNrUHJlbXVsdGlwbHlBbHBoYSwgdW5wYWNrVW5t
dWx0aXBseUFscGhhKTsKICAgICB9CiB9CiAKQEAgLTE5NDksMjIgKzE5NDYsMjAgQEAgQU5HTEVf
RVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0oR0x1
aW50IHNvdXJjZUlkLCBHTHUKICAgICB9CiB9CiAKLUdMX0FQSUNBTEwgR0xib29sZWFuIEdMX0FQ
SUVOVFJZIEVuYWJsZUV4dGVuc2lvbkFOR0xFKGNvbnN0IEdMY2hhciAqbmFtZSkKK0FOR0xFX0VY
UE9SVCB2b2lkIEdMX0FQSUVOVFJZIFJlcXVlc3RFeHRlbnNpb25BTkdMRShjb25zdCBHTGNoYXIg
Km5hbWUpCiB7CiAgICAgRVZFTlQoIihjb25zdCBHTGNoYXIgKm5hbWUgPSAlcCkiLCBuYW1lKTsK
IAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBp
ZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSAmJiAhVmFsaWRhdGVFbmFibGVFeHRlbnNpb25BTkdMRShjb250ZXh0LCBuYW1lKSkKKyAgICAg
ICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmICFWYWxpZGF0ZVJlcXVlc3RFeHRl
bnNpb25BTkdMRShjb250ZXh0LCBuYW1lKSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IEdMX0ZBTFNFOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0
dXJuIGNvbnRleHQtPmVuYWJsZUV4dGVuc2lvbihuYW1lKSA/IEdMX1RSVUUgOiBHTF9GQUxTRTsK
KyAgICAgICAgY29udGV4dC0+cmVxdWVzdEV4dGVuc2lvbihuYW1lKTsKICAgICB9Ci0KLSAgICBy
ZXR1cm4gR0xfRkFMU0U7CiB9CiAKIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEJv
b2xlYW52Um9idXN0QU5HTEUoR0xlbnVtIHBuYW1lLApAQCAtMTk4NywxNSArMTk4Miw3IEBAIEFO
R0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEJvb2xlYW52Um9idXN0QU5HTEUoR0xlbnVt
IHBuYW1lLAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5h
dGl2ZVR5cGUgPT0gR0xfQk9PTCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0
Qm9vbGVhbnYocG5hbWUsIHBhcmFtcyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAg
ICB7Ci0gICAgICAgICAgICBDYXN0U3RhdGVWYWx1ZXMoY29udGV4dCwgbmF0aXZlVHlwZSwgcG5h
bWUsIG51bVBhcmFtcywgcGFyYW1zKTsKLSAgICAgICAgfQotCisgICAgICAgIGNvbnRleHQtPmdl
dEJvb2xlYW52KHBuYW1lLCBwYXJhbXMpOwogICAgICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShs
ZW5ndGgsIG51bVBhcmFtcyk7CiAgICAgfQogfQpAQCAtMjA0NSwxNSArMjAzMiw3IEBAIEFOR0xF
X0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldEZsb2F0dlJvYnVzdEFOR0xFKEdMZW51bSBwbmFt
ZSwKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChuYXRpdmVU
eXBlID09IEdMX0ZMT0FUKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRGbG9h
dHYocG5hbWUsIHBhcmFtcyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0g
ICAgICAgICAgICBDYXN0U3RhdGVWYWx1ZXMoY29udGV4dCwgbmF0aXZlVHlwZSwgcG5hbWUsIG51
bVBhcmFtcywgcGFyYW1zKTsKLSAgICAgICAgfQotCisgICAgICAgIGNvbnRleHQtPmdldEZsb2F0
dihwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0obGVuZ3RoLCBu
dW1QYXJhbXMpOwogICAgIH0KIH0KQEAgLTIxMDYsMTQgKzIwODUsNyBAQCBBTkdMRV9FWFBPUlQg
dm9pZCBHTF9BUElFTlRSWSBHZXRJbnRlZ2VydlJvYnVzdEFOR0xFKEdMZW51bSBwbmFtZSwKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChuYXRpdmVUeXBlID09
IEdMX0lOVCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+Z2V0SW50ZWdlcnYocG5h
bWUsIGRhdGEpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAg
ICAgQ2FzdFN0YXRlVmFsdWVzKGNvbnRleHQsIG5hdGl2ZVR5cGUsIHBuYW1lLCBudW1QYXJhbXMs
IGRhdGEpOwotICAgICAgICB9CisgICAgICAgIGNvbnRleHQtPmdldEludGVnZXJ2KHBuYW1lLCBk
YXRhKTsKICAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0obGVuZ3RoLCBudW1QYXJhbXMpOwog
ICAgIH0KIH0KQEAgLTIxNjYsNyArMjEzOCw3IEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVO
VFJZIEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUoR0xlbnVtIHRhcmdlCiAg
ICAgICAgIH0KIAogICAgICAgICBSZW5kZXJidWZmZXIgKnJlbmRlcmJ1ZmZlciA9IGNvbnRleHQt
PmdldEdMU3RhdGUoKS5nZXRDdXJyZW50UmVuZGVyYnVmZmVyKCk7Ci0gICAgICAgIFF1ZXJ5UmVu
ZGVyYnVmZmVyaXYocmVuZGVyYnVmZmVyLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAgICAgUXVlcnlS
ZW5kZXJidWZmZXJpdihjb250ZXh0LCByZW5kZXJidWZmZXIsIHBuYW1lLCBwYXJhbXMpOwogICAg
ICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShsZW5ndGgsIG51bVBhcmFtcyk7CiAgICAgfQogfQpA
QCAtMjMyNywxMSArMjI5OSw3IEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdldFZl
cnRleEF0dHJpYmZ2Um9idXN0QU5HTEUoR0x1aW50IGluZGV4LAogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKLSAgICAgICAgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0
YSAmY3VycmVudFZhbHVlcyA9Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0
VmVydGV4QXR0cmliQ3VycmVudFZhbHVlKGluZGV4KTsKLSAgICAgICAgY29uc3QgVmVydGV4QXR0
cmlidXRlICZhdHRyaWIgPQotICAgICAgICAgICAgY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFZl
cnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0ZShpbmRleCk7Ci0gICAgICAgIFF1ZXJ5VmVy
dGV4QXR0cmliZnYoYXR0cmliLCBjdXJyZW50VmFsdWVzLCBwbmFtZSwgcGFyYW1zKTsKKyAgICAg
ICAgY29udGV4dC0+Z2V0VmVydGV4QXR0cmliZnYoaW5kZXgsIHBuYW1lLCBwYXJhbXMpOwogICAg
ICAgICBTZXRSb2J1c3RMZW5ndGhQYXJhbShsZW5ndGgsIHdyaXRlTGVuZ3RoKTsKICAgICB9CiB9
CkBAIC0yMzU3LDExICsyMzI1LDcgQEAgQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgR2V0
VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRShHTHVpbnQgaW5kZXgsCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdCBWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWVE
YXRhICZjdXJyZW50VmFsdWVzID0KLSAgICAgICAgICAgIGNvbnRleHQtPmdldEdMU3RhdGUoKS5n
ZXRWZXJ0ZXhBdHRyaWJDdXJyZW50VmFsdWUoaW5kZXgpOwotICAgICAgICBjb25zdCBWZXJ0ZXhB
dHRyaWJ1dGUgJmF0dHJpYiA9Ci0gICAgICAgICAgICBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0
VmVydGV4QXJyYXkoKS0+Z2V0VmVydGV4QXR0cmlidXRlKGluZGV4KTsKLSAgICAgICAgUXVlcnlW
ZXJ0ZXhBdHRyaWJpdihhdHRyaWIsIGN1cnJlbnRWYWx1ZXMsIHBuYW1lLCBwYXJhbXMpOworICAg
ICAgICBjb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJpdihpbmRleCwgcG5hbWUsIHBhcmFtcyk7CiAg
ICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgd3JpdGVMZW5ndGgpOwogICAgIH0K
IH0KQEAgLTIzODcsOSArMjM1MSw3IEBAIEFOR0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIEdl
dFZlcnRleEF0dHJpYlBvaW50ZXJ2Um9idXN0QU5HTEUoR0x1aW50IGluZGV4LAogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29uc3QgVmVydGV4QXR0cmlidXRlICZh
dHRyaWIgPQotICAgICAgICAgICAgY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEFycmF5
KCktPmdldFZlcnRleEF0dHJpYnV0ZShpbmRleCk7Ci0gICAgICAgIFF1ZXJ5VmVydGV4QXR0cmli
UG9pbnRlcnYoYXR0cmliLCBwbmFtZSwgcG9pbnRlcik7CisgICAgICAgIGNvbnRleHQtPmdldFZl
cnRleEF0dHJpYlBvaW50ZXJ2KGluZGV4LCBwbmFtZSwgcG9pbnRlcik7CiAgICAgICAgIFNldFJv
YnVzdExlbmd0aFBhcmFtKGxlbmd0aCwgd3JpdGVMZW5ndGgpOwogICAgIH0KIH0KQEAgLTI0MDIs
MjAgKzIzNjQsMjQgQEAgQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUmVhZFBpeGVsc1Jv
YnVzdEFOR0xFKEdMaW50IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVp
ICpjb2x1bW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdMc2l6ZWkgKnJvd3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKQogewogICAgIEVWRU5UKAogICAgICAgICAi
KEdMaW50IHggPSAlZCwgR0xpbnQgeSA9ICVkLCBHTHNpemVpIHdpZHRoID0gJWQsIEdMc2l6ZWkg
aGVpZ2h0ID0gJWQsICIKICAgICAgICAgIkdMZW51bSBmb3JtYXQgPSAweCVYLCBHTGVudW0gdHlw
ZSA9IDB4JVgsIEdMc2l6ZWkgYnVmc2l6ZSA9ICVkLCBHTHNpemVpKiBsZW5ndGggPSAiCi0gICAg
ICAgICIweCUwLjhwLCBHTHZvaWQqIHBpeGVscyA9IDB4JTAuOHApIiwKLSAgICAgICAgeCwgeSwg
d2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIHBpeGVscyk7Cisg
ICAgICAgICIweCUwLjhwLCBHTHNpemVpKiBjb2x1bW5zID0gMHglMC44cCwgR0xzaXplaSogcm93
cyA9IDB4JTAuOHAsIEdMdm9pZCogcGl4ZWxzID0gMHglMC44cCkiLAorICAgICAgICB4LCB5LCB3
aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIGxlbmd0aCwgY29sdW1ucywgcm93
cywgcGl4ZWxzKTsKIAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7CiAgICAgICAgIEdMc2l6ZWkgd3JpdGVMZW5n
dGggPSAwOworICAgICAgICBHTHNpemVpIHdyaXRlQ29sdW1ucyA9IDA7CisgICAgICAgIEdMc2l6
ZWkgd3JpdGVSb3dzICAgID0gMDsKICAgICAgICAgaWYgKCFWYWxpZGF0ZVJlYWRQaXhlbHNSb2J1
c3RBTkdMRShjb250ZXh0LCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNp
emUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndyaXRlTGVu
Z3RoLCBwaXhlbHMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZ3cml0ZUxlbmd0aCwgJndyaXRlQ29sdW1ucywgJndyaXRlUm93cywgcGl4ZWxzKSkKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yNDIzLDYgKzIzODksOCBA
QCBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBSZWFkUGl4ZWxzUm9idXN0QU5HTEUoR0xp
bnQgeCwKICAgICAgICAgY29udGV4dC0+cmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBm
b3JtYXQsIHR5cGUsIHBpeGVscyk7CiAKICAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0obGVu
Z3RoLCB3cml0ZUxlbmd0aCk7CisgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGNvbHVtbnMs
IHdyaXRlQ29sdW1ucyk7CisgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKHJvd3MsIHdyaXRl
Um93cyk7CiAgICAgfQogfQogCkBAIC0yNzQ1LDExICsyNzEzLDcgQEAgQU5HTEVfRVhQT1JUIHZv
aWQgR0xfQVBJRU5UUlkgR2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUoR0x1aW50IGluZGV4
LAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29uc3QgVmVydGV4
QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlcyA9Ci0gICAgICAgICAgICBjb250
ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXR0cmliQ3VycmVudFZhbHVlKGluZGV4KTsKLSAg
ICAgICAgY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIgPQotICAgICAgICAgICAgY29udGV4
dC0+Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0ZShpbmRl
eCk7Ci0gICAgICAgIFF1ZXJ5VmVydGV4QXR0cmliSWl2KGF0dHJpYiwgY3VycmVudFZhbHVlcywg
cG5hbWUsIHBhcmFtcyk7CisgICAgICAgIGNvbnRleHQtPmdldFZlcnRleEF0dHJpYklpdihpbmRl
eCwgcG5hbWUsIHBhcmFtcyk7CiAgICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGxlbmd0aCwg
d3JpdGVMZW5ndGgpOwogICAgIH0KIH0KQEAgLTI3NzUsMTEgKzI3MzksNyBAQCBBTkdMRV9FWFBP
UlQgdm9pZCBHTF9BUElFTlRSWSBHZXRWZXJ0ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUoR0x1aW50
IGluZGV4LAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29uc3Qg
VmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlcyA9Ci0gICAgICAgICAg
ICBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXR0cmliQ3VycmVudFZhbHVlKGluZGV4
KTsKLSAgICAgICAgY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIgPQotICAgICAgICAgICAg
Y29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0
ZShpbmRleCk7Ci0gICAgICAgIFF1ZXJ5VmVydGV4QXR0cmliSXVpdihhdHRyaWIsIGN1cnJlbnRW
YWx1ZXMsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBjb250ZXh0LT5nZXRWZXJ0ZXhBdHRyaWJJ
dWl2KGluZGV4LCBwbmFtZSwgcGFyYW1zKTsKICAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0o
bGVuZ3RoLCB3cml0ZUxlbmd0aCk7CiAgICAgfQogfQpAQCAtMzEzMSwyMCArMzA5MSwyNCBAQCBB
TkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBSZWFkblBpeGVsc1JvYnVzdEFOR0xFKEdMaW50
IHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMZW51bSB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKmxlbmd0aCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqY29sdW1ucywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xz
aXplaSAqcm93cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdm9pZCAqZGF0YSkKIHsKICAgICBFVkVOVCgKICAgICAgICAgIihHTGludCB4ID0g
JWQsIEdMaW50IHkgPSAlZCwgR0xzaXplaSB3aWR0aCA9ICVkLCBHTHNpemVpIGhlaWdodCA9ICVk
LCAiCiAgICAgICAgICJHTGVudW0gZm9ybWF0ID0gMHglWCwgR0xlbnVtIHR5cGUgPSAweCVYLCBH
THNpemVpIGJ1ZnNpemUgPSAlZCwgR0xzaXplaSogbGVuZ3RoID0gIgotICAgICAgICAiMHglMC44
cCwgR0x2b2lkICpkYXRhID0gMHglMC44cCkiLAotICAgICAgICB4LCB5LCB3aWR0aCwgaGVpZ2h0
LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIGxlbmd0aCwgZGF0YSk7CisgICAgICAgICIweCUwLjhw
LCBHTHNpemVpKiBjb2x1bW5zID0gMHglMC44cCwgR0xzaXplaSogcm93cyA9IDB4JTAuOHAsIEdM
dm9pZCAqZGF0YSA9IDB4JTAuOHApIiwKKyAgICAgICAgeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9y
bWF0LCB0eXBlLCBidWZTaXplLCBsZW5ndGgsIGNvbHVtbnMsIHJvd3MsIGRhdGEpOwogCiAgICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250
ZXh0KQogICAgIHsKICAgICAgICAgR0xzaXplaSB3cml0ZUxlbmd0aCA9IDA7CisgICAgICAgIEdM
c2l6ZWkgd3JpdGVDb2x1bW5zID0gMDsKKyAgICAgICAgR0xzaXplaSB3cml0ZVJvd3MgICAgPSAw
OwogICAgICAgICBpZiAoIVZhbGlkYXRlUmVhZG5QaXhlbHNSb2J1c3RBTkdMRShjb250ZXh0LCB4
LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3cml0ZUxlbmd0aCwgZGF0YSkpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3cml0ZUxlbmd0aCwgJndy
aXRlQ29sdW1ucywgJndyaXRlUm93cywgZGF0YSkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtMzE1Miw2ICszMTE2LDggQEAgQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgUmVhZG5QaXhlbHNSb2J1c3RBTkdMRShHTGludCB4LAogICAgICAgICBjb250
ZXh0LT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7
CiAKICAgICAgICAgU2V0Um9idXN0TGVuZ3RoUGFyYW0obGVuZ3RoLCB3cml0ZUxlbmd0aCk7Cisg
ICAgICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKGNvbHVtbnMsIHdyaXRlQ29sdW1ucyk7CisgICAg
ICAgIFNldFJvYnVzdExlbmd0aFBhcmFtKHJvd3MsIHdyaXRlUm93cyk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3Bv
aW50c19nbGVzXzJfMF9leHQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvZW50cnlfcG9pbnRzX2dsZXNfMl8wX2V4dC5oCmluZGV4IGQ4NDBjZDQ0ZWRiLi43NzI1Yjk3
NTAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9l
bnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18yXzBfZXh0LmgKQEAgLTksOSArOSw5IEBA
CiAjaWZuZGVmIExJQkdMRVNWMl9FTlRSWVBPSU5UR0xFUzIwRVhUX0hfCiAjZGVmaW5lIExJQkdM
RVNWMl9FTlRSWVBPSU5UR0xFUzIwRVhUX0hfCiAKLSNpbmNsdWRlIDxBTkdMRS9nbDIuaD4KLSNp
bmNsdWRlIDxBTkdMRS9nbDJleHQuaD4KLSNpbmNsdWRlIDxBTkdMRS9leHBvcnQuaD4KKyNpbmNs
dWRlIDxHTEVTMi9nbDIuaD4KKyNpbmNsdWRlIDxHTEVTMi9nbDJleHQuaD4KKyNpbmNsdWRlIDxl
eHBvcnQuaD4KIAogbmFtZXNwYWNlIGdsCiB7CkBAIC0yNDAsNyArMjQwLDEwIEBAIEFOR0xFX0VY
UE9SVCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVN
KEdMdWludCBwcm9ncmFtCiAKIC8vIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVyZQogQU5HTEVfRVhQ
T1JUIHZvaWQgR0xfQVBJRU5UUlkgQ29weVRleHR1cmVDSFJPTUlVTShHTHVpbnQgc291cmNlSWQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IHNvdXJjZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZGVzdFRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRlc3RJZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZGVzdExldmVsLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCBpbnRlcm5hbEZv
cm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xlbnVtIGRlc3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTGJvb2xlYW4gdW5wYWNrRmxpcFksCkBAIC0yNDgsNyArMjUxLDEwIEBAIEFO
R0xFX0VYUE9SVCB2b2lkIEdMX0FQSUVOVFJZIENvcHlUZXh0dXJlQ0hST01JVU0oR0x1aW50IHNv
dXJjZUlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGJvb2xlYW4gdW5wYWNrVW5tdWx0aXBseUFscGhhKTsKIAogQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgQ29weVN1YlRleHR1cmVDSFJPTUlVTShHTHVpbnQgc291cmNlSWQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IHNv
dXJjZUxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gZGVzdFRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGRlc3RJZCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZGVzdExldmVsLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB4
b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGludCB5b2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGludCB4LApAQCAtMjYyLDggKzI2OCw4IEBAIEFOR0xFX0VYUE9S
VCB2b2lkIEdMX0FQSUVOVFJZIENvcHlTdWJUZXh0dXJlQ0hST01JVU0oR0x1aW50IHNvdXJjZUlk
LAogLy8gR0xfQ0hST01JVU1fY29weV9jb21wcmVzc2VkX3RleHR1cmUKIEFOR0xFX0VYUE9SVCB2
b2lkIEdMX0FQSUVOVFJZIENvbXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNKEdMdWludCBzb3Vy
Y2VJZCwgR0x1aW50IGRlc3RJZCk7CiAKLS8vIEdMX0FOR0xFX3dlYmdsX2NvbXBhdGliaWxpdHkK
LUdMX0FQSUNBTEwgR0xib29sZWFuIEdMX0FQSUVOVFJZIEVuYWJsZUV4dGVuc2lvbkFOR0xFKGNv
bnN0IEdMY2hhciAqbmFtZSk7CisvLyBHTF9BTkdMRV9yZXF1ZXN0X2V4dGVuc2lvbgorQU5HTEVf
RVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUmVxdWVzdEV4dGVuc2lvbkFOR0xFKGNvbnN0IEdMY2hh
ciAqbmFtZSk7CiAKIC8vIEdMX0FOR0xFX3JvYnVzdF9jbGllbnRfbWVtb3J5CiBBTkdMRV9FWFBP
UlQgdm9pZCBHTF9BUElFTlRSWSBHZXRCb29sZWFudlJvYnVzdEFOR0xFKEdMZW51bSBwbmFtZSwK
QEAgLTM0Nyw2ICszNTMsOCBAQCBBTkdMRV9FWFBPUlQgdm9pZCBHTF9BUElFTlRSWSBSZWFkUGl4
ZWxzUm9idXN0QU5HTEUoR0xpbnQgeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIGJ1ZlNpemUsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSAqbGVuZ3Ro
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
c2l6ZWkgKmNvbHVtbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xzaXplaSAqcm93cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwaXhlbHMpOwogQU5HTEVfRVhQT1JUIHZvaWQg
R0xfQVBJRU5UUlkgVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdMZW51bSB0YXJnZXQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWws
CkBAIC01MjMsNiArNTMxLDggQEAgQU5HTEVfRVhQT1JUIHZvaWQgR0xfQVBJRU5UUlkgUmVhZG5Q
aXhlbHNSb2J1c3RBTkdMRShHTGludCB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSBidWZTaXplLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpICps
ZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMc2l6ZWkgKmNvbHVtbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgKnJvd3MsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEpOwogQU5HTEVfRVhQT1JU
IHZvaWQgR0xfQVBJRU5UUlkgR2V0blVuaWZvcm1mdlJvYnVzdEFOR0xFKEdMdWludCBwcm9ncmFt
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMaW50IGxvY2F0aW9uLApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzAuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzAuY3BwCmluZGV4IDI5ZWMx
ZGI3OGI5Li4xNmM2NjY3NzU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzAuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18wLmNwcApAQCAt
NjEsMTcgKzYxLDcgQEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3UmFuZ2VFbGVtZW50cyhHTGVudW0g
bW9kZSwgR0x1aW50IHN0YXJ0LCBHTHVpbnQgZW5kLCBHTHNpemUKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEFzIGxvbmcgYXMgaW5kZXggdmFsaWRhdGlvbiBp
cyBkb25lLCBpdCBkb2Vzbid0IG1hdHRlciB3aGV0aGVyIHRoZSBjb250ZXh0IHJlY2VpdmVzIGEg
ZHJhd0VsZW1lbnRzIG9yCi0gICAgICAgIC8vIGEgZHJhd1JhbmdlRWxlbWVudHMgY2FsbCAtIHRo
ZSBHTCBiYWNrLWVuZCBpcyBmcmVlIHRvIGNob29zZSB0byBjYWxsIGRyYXdSYW5nZUVsZW1lbnRz
IGJhc2VkIG9uIHRoZQotICAgICAgICAvLyB2YWxpZGF0ZWQgaW5kZXggcmFuZ2UuIElmIGluZGV4
IHZhbGlkYXRpb24gaXMgcmVtb3ZlZCwgYWRkaW5nIGRyYXdSYW5nZUVsZW1lbnRzIHRvIHRoZSBj
b250ZXh0IGludGVyZmFjZQotICAgICAgICAvLyBzaG91bGQgYmUgcmVjb25zaWRlcmVkLgotICAg
ICAgICBFcnJvciBlcnJvciA9Ci0gICAgICAgICAgICBjb250ZXh0LT5kcmF3UmFuZ2VFbGVtZW50
cyhtb2RlLCBzdGFydCwgZW5kLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgaW5kZXhSYW5nZSk7Ci0g
ICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQor
ICAgICAgICBjb250ZXh0LT5kcmF3UmFuZ2VFbGVtZW50cyhtb2RlLCBzdGFydCwgZW5kLCBjb3Vu
dCwgdHlwZSwgaW5kaWNlcywgaW5kZXhSYW5nZSk7CiAgICAgfQogfQogCkBAIC01MDAsMTkgKzQ5
MCwxNCBAQCB2b2lkIEdMX0FQSUVOVFJZIFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShH
TGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdl
dFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAg
aWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKLSAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghVmFsaWRh
dGVFUzNSZW5kZXJidWZmZXJTdG9yYWdlUGFyYW1ldGVycyhjb250ZXh0LCB0YXJnZXQsIHNhbXBs
ZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KSkKKyAgICAgICAgaWYgKCFjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVSZW5kZXJidWZmZXJT
dG9yYWdlTXVsdGlzYW1wbGUoY29udGV4dCwgdGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1h
dCwgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVpZ2h0KSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgUmVuZGVyYnVmZmVyICpyZW5kZXJidWZmZXIgPSBjb250ZXh0LT5nZXRHTFN0
YXRlKCkuZ2V0Q3VycmVudFJlbmRlcmJ1ZmZlcigpOwotICAgICAgICByZW5kZXJidWZmZXItPnNl
dFN0b3JhZ2VNdWx0aXNhbXBsZShzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCk7CisgICAgICAgIGNvbnRleHQtPnJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZSh0YXJn
ZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKICAgICB9CiB9CiAK
QEAgLTcwNyw3ICs2OTIsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIEVuZFRyYW5zZm9ybUZlZWRiYWNr
KHZvaWQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB0cmFuc2Zv
cm1GZWVkYmFjay0+ZW5kKCk7CisgICAgICAgIHRyYW5zZm9ybUZlZWRiYWNrLT5lbmQoY29udGV4
dCk7CiAgICAgfQogfQogCkBAIC03MTksOTAgKzcwNCwxMiBAQCB2b2lkIEdMX0FQSUVOVFJZIEJp
bmRCdWZmZXJSYW5nZShHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaW5kZXgsIEdMdWludCBidWZmZXIs
IEdMaQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpv
clZlcnNpb24oKSA8IDMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLQotICAgICAgICBjb25zdCBDYXBzICZjYXBzID0gY29udGV4dC0+Z2V0Q2Fwcygp
OwotICAgICAgICBzd2l0Y2ggKHRhcmdldCkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xf
VFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUjoKLSAgICAgICAgICAgIGlmIChpbmRleCA+PSBjYXBz
Lm1heFRyYW5zZm9ybUZlZWRiYWNrU2VwYXJhdGVBdHRyaWJ1dGVzKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFM
VUUpKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICAgIGNhc2UgR0xfVU5JRk9STV9CVUZGRVI6Ci0gICAgICAgICAg
ICBpZiAoaW5kZXggPj0gY2Fwcy5tYXhVbmlmb3JtQnVmZmVyQmluZGluZ3MpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYnVmZmVyICE9IDAgJiYgc2l6ZSA8PSAwKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoIWNvbnRleHQtPmdldEdMU3RhdGUoKS5pc0JpbmRHZW5lcmF0ZXNSZXNvdXJjZUVuYWJsZWQo
KSAmJgotICAgICAgICAgICAgIWNvbnRleHQtPmlzQnVmZmVyR2VuZXJhdGVkKGJ1ZmZlcikpCisg
ICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZh
bGlkYXRlQmluZEJ1ZmZlclJhbmdlKGNvbnRleHQsIHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgb2Zm
c2V0LCBzaXplKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJCdWZmZXIgd2FzIG5vdCBnZW5lcmF0ZWQiKSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKHRhcmdl
dCkKLSAgICAgICAgewotICAgICAgICAgIGNhc2UgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZF
UjoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLyBzaXplIGFuZCBvZmZzZXQgbXVz
dCBiZSBhIG11bHRpcGxlIG9mIDQKLSAgICAgICAgICAgICAgICBpZiAoYnVmZmVyICE9IDAgJiYg
KChvZmZzZXQgJSA0KSAhPSAwIHx8IChzaXplICUgNCkgIT0gMCkpCi0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBDYW5ub3QgYmluZCBhIHRyYW5zZm9ybSBmZWVkYmFj
ayBidWZmZXIgaWYgdGhlIGN1cnJlbnQgdHJhbnNmb3JtIGZlZWRiYWNrIGlzIGFjdGl2ZSAoMy4w
LjQgcGcgOTEgc2VjdGlvbiAyLjE1LjIpCi0gICAgICAgICAgICAgICAgVHJhbnNmb3JtRmVlZGJh
Y2sgKmN1clRyYW5zZm9ybUZlZWRiYWNrID0KLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+
Z2V0R0xTdGF0ZSgpLmdldEN1cnJlbnRUcmFuc2Zvcm1GZWVkYmFjaygpOwotICAgICAgICAgICAg
ICAgIGlmIChjdXJUcmFuc2Zvcm1GZWVkYmFjayAmJiBjdXJUcmFuc2Zvcm1GZWVkYmFjay0+aXNB
Y3RpdmUoKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQt
PmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBjb250
ZXh0LT5iaW5kSW5kZXhlZFRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKGJ1ZmZlciwgaW5kZXgsIG9m
ZnNldCwgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgY29udGV4dC0+YmluZEdlbmVyaWNUcmFuc2Zv
cm1GZWVkYmFja0J1ZmZlcihidWZmZXIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgY2FzZSBHTF9VTklGT1JNX0JVRkZFUjoKLQotICAgICAgICAg
ICAgLy8gaXQgaXMgYW4gZXJyb3IgdG8gYmluZCBhbiBvZmZzZXQgbm90IGEgbXVsdGlwbGUgb2Yg
dGhlIGFsaWdubWVudAotICAgICAgICAgICAgaWYgKGJ1ZmZlciAhPSAwICYmIChvZmZzZXQgJSBj
YXBzLnVuaWZvcm1CdWZmZXJPZmZzZXRBbGlnbm1lbnQpICE9IDApCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxV
RSkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgY29udGV4dC0+YmluZEluZGV4ZWRVbmlmb3JtQnVmZmVyKGJ1ZmZlciwgaW5kZXgsIG9mZnNl
dCwgc2l6ZSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5kR2VuZXJpY1VuaWZvcm1CdWZmZXIo
YnVmZmVyKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+YmluZEJ1
ZmZlclJhbmdlKHRhcmdldCwgaW5kZXgsIGJ1ZmZlciwgb2Zmc2V0LCBzaXplKTsKICAgICB9CiB9
CiAKQEAgLTgxNCw2OCArNzIxLDExIEBAIHZvaWQgR0xfQVBJRU5UUlkgQmluZEJ1ZmZlckJhc2Uo
R0xlbnVtIHRhcmdldCwgR0x1aW50IGluZGV4LCBHTHVpbnQgYnVmZmVyKQogICAgIENvbnRleHQg
KmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAg
ICB7Ci0gICAgICAgIGlmIChjb250ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCisg
ICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVCaW5kQnVm
ZmVyQmFzZShjb250ZXh0LCB0YXJnZXQsIGluZGV4LCBidWZmZXIpKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0KLSAgICAgICAgY29uc3QgQ2FwcyAm
Y2FwcyA9IGNvbnRleHQtPmdldENhcHMoKTsKLSAgICAgICAgc3dpdGNoICh0YXJnZXQpCi0gICAg
ICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVI6Ci0gICAg
ICAgICAgICBpZiAoaW5kZXggPj0gY2Fwcy5tYXhUcmFuc2Zvcm1GZWVkYmFja1NlcGFyYXRlQXR0
cmlidXRlcykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBjYXNlIEdMX1VO
SUZPUk1fQlVGRkVSOgotICAgICAgICAgICAgaWYgKGluZGV4ID49IGNhcHMubWF4VW5pZm9ybUJ1
ZmZlckJpbmRpbmdzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURf
RU5VTSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFj
b250ZXh0LT5nZXRHTFN0YXRlKCkuaXNCaW5kR2VuZXJhdGVzUmVzb3VyY2VFbmFibGVkKCkgJiYK
LSAgICAgICAgICAgICFjb250ZXh0LT5pc0J1ZmZlckdlbmVyYXRlZChidWZmZXIpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkJ1ZmZlciB3YXMgbm90IGdlbmVyYXRlZCIpKTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAodGFyZ2V0KQotICAgICAgICB7Ci0gICAg
ICAgICAgY2FzZSBHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSOgotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIC8vIENhbm5vdCBiaW5kIGEgdHJhbnNmb3JtIGZlZWRiYWNrIGJ1ZmZl
ciBpZiB0aGUgY3VycmVudCB0cmFuc2Zvcm0gZmVlZGJhY2sgaXMgYWN0aXZlICgzLjAuNCBwZyA5
MSBzZWN0aW9uIDIuMTUuMikKLSAgICAgICAgICAgICAgICBUcmFuc2Zvcm1GZWVkYmFjayAqY3Vy
VHJhbnNmb3JtRmVlZGJhY2sgPQotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5nZXRHTFN0
YXRlKCkuZ2V0Q3VycmVudFRyYW5zZm9ybUZlZWRiYWNrKCk7Ci0gICAgICAgICAgICAgICAgaWYg
KGN1clRyYW5zZm9ybUZlZWRiYWNrICYmIGN1clRyYW5zZm9ybUZlZWRiYWNrLT5pc0FjdGl2ZSgp
KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGNvbnRleHQtPmJp
bmRJbmRleGVkVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIoYnVmZmVyLCBpbmRleCwgMCwgMCk7Ci0g
ICAgICAgICAgICAgICAgY29udGV4dC0+YmluZEdlbmVyaWNUcmFuc2Zvcm1GZWVkYmFja0J1ZmZl
cihidWZmZXIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAg
ICAgIGNhc2UgR0xfVU5JRk9STV9CVUZGRVI6Ci0gICAgICAgICAgICBjb250ZXh0LT5iaW5kSW5k
ZXhlZFVuaWZvcm1CdWZmZXIoYnVmZmVyLCBpbmRleCwgMCwgMCk7Ci0gICAgICAgICAgICBjb250
ZXh0LT5iaW5kR2VuZXJpY1VuaWZvcm1CdWZmZXIoYnVmZmVyKTsKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAg
ICAgIH0KKyAgICAgICAgY29udGV4dC0+YmluZEJ1ZmZlckJhc2UodGFyZ2V0LCBpbmRleCwgYnVm
ZmVyKTsKICAgICB9CiB9CiAKQEAgLTk3MSw1MyArODIxLDkgQEAgdm9pZCBHTF9BUElFTlRSWSBW
ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHTHVpbnQgaW5kZXgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBl
LCBHTHMKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoY29udGV4dC0+Z2V0Q2xpZW50TWFq
b3JWZXJzaW9uKCkgPCAzKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGluZGV4ID49IE1BWF9WRVJURVhfQVRUUklCUykKLSAg
ICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KHNpemUgPCAxIHx8IHNpemUgPiA0KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKHR5cGUpCi0gICAgICAgIHsKLSAgICAgICAg
ICBjYXNlIEdMX0JZVEU6Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgotICAgICAg
ICAgIGNhc2UgR0xfU0hPUlQ6Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVDoKLSAg
ICAgICAgICBjYXNlIEdMX0lOVDoKLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKLSAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc3RyaWRlIDwgMCkKLSAgICAgICAgewot
ICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gW09wZW5HTCBF
UyAzLjAuMl0gU2VjdGlvbiAyLjggcGFnZSAyNDoKLSAgICAgICAgLy8gQW4gSU5WQUxJRF9PUEVS
QVRJT04gZXJyb3IgaXMgZ2VuZXJhdGVkIHdoZW4gYSBub24temVybyB2ZXJ0ZXggYXJyYXkgb2Jq
ZWN0Ci0gICAgICAgIC8vIGlzIGJvdW5kLCB6ZXJvIGlzIGJvdW5kIHRvIHRoZSBBUlJBWV9CVUZG
RVIgYnVmZmVyIG9iamVjdCBiaW5kaW5nIHBvaW50LAotICAgICAgICAvLyBhbmQgdGhlIHBvaW50
ZXIgYXJndW1lbnQgaXMgbm90IE5VTEwuCi0gICAgICAgIGlmIChjb250ZXh0LT5nZXRHTFN0YXRl
KCkuZ2V0VmVydGV4QXJyYXkoKS0+aWQoKSAhPSAwICYmCi0gICAgICAgICAgICBjb250ZXh0LT5n
ZXRHTFN0YXRlKCkuZ2V0QXJyYXlCdWZmZXJJZCgpID09IDAgJiYgcG9pbnRlciAhPSBOVUxMKQor
ICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFW
YWxpZGF0ZVZlcnRleEF0dHJpYklQb2ludGVyKGNvbnRleHQsIGluZGV4LCBzaXplLCB0eXBlLCBz
dHJpZGUsIHBvaW50ZXIpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTikpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTEwMzksMTEgKzg0NSw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VmVy
dGV4QXR0cmliSWl2KEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY29uc3QgVmVydGV4QXR0
cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlcyA9Ci0gICAgICAgICAgICBjb250ZXh0
LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXR0cmliQ3VycmVudFZhbHVlKGluZGV4KTsKLSAgICAg
ICAgY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIgPQotICAgICAgICAgICAgY29udGV4dC0+
Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEFycmF5KCktPmdldFZlcnRleEF0dHJpYnV0ZShpbmRleCk7
Ci0gICAgICAgIFF1ZXJ5VmVydGV4QXR0cmliSWl2KGF0dHJpYiwgY3VycmVudFZhbHVlcywgcG5h
bWUsIHBhcmFtcyk7CisgICAgICAgIGNvbnRleHQtPmdldFZlcnRleEF0dHJpYklpdihpbmRleCwg
cG5hbWUsIHBhcmFtcyk7CiAgICAgfQogfQogCkBAIC0xMDYxLDExICs4NjMsNyBAQCB2b2lkIEdM
X0FQSUVOVFJZIEdldFZlcnRleEF0dHJpYkl1aXYoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUs
IEdMdWludCogcGFyYW1zKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAg
ICAgY29uc3QgVmVydGV4QXR0cmliQ3VycmVudFZhbHVlRGF0YSAmY3VycmVudFZhbHVlcyA9Ci0g
ICAgICAgICAgICBjb250ZXh0LT5nZXRHTFN0YXRlKCkuZ2V0VmVydGV4QXR0cmliQ3VycmVudFZh
bHVlKGluZGV4KTsKLSAgICAgICAgY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWIgPQotICAg
ICAgICAgICAgY29udGV4dC0+Z2V0R0xTdGF0ZSgpLmdldFZlcnRleEFycmF5KCktPmdldFZlcnRl
eEF0dHJpYnV0ZShpbmRleCk7Ci0gICAgICAgIFF1ZXJ5VmVydGV4QXR0cmliSXVpdihhdHRyaWIs
IGN1cnJlbnRWYWx1ZXMsIHBuYW1lLCBwYXJhbXMpOworICAgICAgICBjb250ZXh0LT5nZXRWZXJ0
ZXhBdHRyaWJJdWl2KGluZGV4LCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTEzOTEs
MjggKzExODksMTUgQEAgY29uc3QgR0x1Ynl0ZSAqR0xfQVBJRU5UUlkgR2V0U3RyaW5naShHTGVu
dW0gbmFtZSwgR0x1aW50IGluZGV4KQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmIChjb250
ZXh0LT5nZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCisgICAgICAgIGlmICghY29udGV4dC0+
c2tpcFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVHZXRTdHJpbmdpKGNvbnRleHQsIG5hbWUsIGlu
ZGV4KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKG5hbWUgIT0gR0xfRVhURU5TSU9OUykKLSAgICAgICAgewotICAg
ICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpbmRleCA+
PSBjb250ZXh0LT5nZXRFeHRlbnNpb25TdHJpbmdDb3VudCgpKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX1ZBTFVFKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICB9CiAKLSAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSAqPihj
b250ZXh0LT5nZXRFeHRlbnNpb25TdHJpbmcoaW5kZXgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRl
eHQtPmdldFN0cmluZ2kobmFtZSwgaW5kZXgpOwogICAgIH0KIAotICAgIHJldHVybiBOVUxMOwor
ICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIEdMX0FQSUVOVFJZIENvcHlCdWZmZXJTdWJE
YXRhKEdMZW51bSByZWFkVGFyZ2V0LCBHTGVudW0gd3JpdGVUYXJnZXQsIEdMaW50cHRyIHJlYWRP
ZmZzZXQsIEdMaW50cHRyIHdyaXRlT2Zmc2V0LCBHTHNpemVpcHRyIHNpemUpCkBAIC0xNDIzLDU4
ICsxMjA4LDE0IEBAIHZvaWQgR0xfQVBJRU5UUlkgQ29weUJ1ZmZlclN1YkRhdGEoR0xlbnVtIHJl
YWRUYXJnZXQsIEdMZW51bSB3cml0ZVRhcmdldCwgR0xpbnRwCiAgICAgQ29udGV4dCAqY29udGV4
dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgaWYgKGNvbnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKLSAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgh
VmFsaWRCdWZmZXJUYXJnZXQoY29udGV4dCwgcmVhZFRhcmdldCkgfHwgIVZhbGlkQnVmZmVyVGFy
Z2V0KGNvbnRleHQsIHdyaXRlVGFyZ2V0KSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9FTlVNKSk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICBCdWZmZXIgKnJlYWRCdWZmZXIgID0gY29udGV4dC0+
Z2V0R0xTdGF0ZSgpLmdldFRhcmdldEJ1ZmZlcihyZWFkVGFyZ2V0KTsKLSAgICAgICAgQnVmZmVy
ICp3cml0ZUJ1ZmZlciA9IGNvbnRleHQtPmdldEdMU3RhdGUoKS5nZXRUYXJnZXRCdWZmZXIod3Jp
dGVUYXJnZXQpOwotCi0gICAgICAgIGlmICghcmVhZEJ1ZmZlciB8fCAhd3JpdGVCdWZmZXIpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAg
ICAvLyBWZXJpZnkgdGhhdCByZWFkQnVmZmVyIGFuZCB3cml0ZUJ1ZmZlciBhcmUgbm90IGN1cnJl
bnRseSBtYXBwZWQKLSAgICAgICAgaWYgKHJlYWRCdWZmZXItPmlzTWFwcGVkKCkgfHwgd3JpdGVC
dWZmZXItPmlzTWFwcGVkKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRs
ZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocmVhZE9mZnNldCA8IDAgfHwgd3JpdGVPZmZzZXQg
PCAwIHx8IHNpemUgPCAwIHx8Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+
KHJlYWRPZmZzZXQgKyBzaXplKSA+IHJlYWRCdWZmZXItPmdldFNpemUoKSB8fAotICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih3cml0ZU9mZnNldCArIHNpemUpID4gd3JpdGVC
dWZmZXItPmdldFNpemUoKSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9WQUxVRSkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKHJlYWRCdWZmZXIgPT0gd3JpdGVCdWZmZXIgJiYgc3RkOjph
YnMocmVhZE9mZnNldCAtIHdyaXRlT2Zmc2V0KSA8IHNpemUpCisgICAgICAgIGlmICghY29udGV4
dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlQ29weUJ1ZmZlclN1
YkRhdGEoY29udGV4dCwgcmVhZFRhcmdldCwgd3JpdGVUYXJnZXQsIHJlYWRPZmZzZXQsIHdyaXRl
T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSkpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfVkFMVUUpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIC8v
IGlmIHNpemUgaXMgemVybywgdGhlIGNvcHkgaXMgYSBzdWNjZXNzZnVsIG5vLW9wCi0gICAgICAg
IGlmIChzaXplID4gMCkKLSAgICAgICAgewotICAgICAgICAgICAgRXJyb3IgZXJyb3IgPSB3cml0
ZUJ1ZmZlci0+Y29weUJ1ZmZlclN1YkRhdGEocmVhZEJ1ZmZlciwgcmVhZE9mZnNldCwgd3JpdGVP
ZmZzZXQsIHNpemUpOwotICAgICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIGNv
bnRleHQtPmNvcHlCdWZmZXJTdWJEYXRhKHJlYWRUYXJnZXQsIHdyaXRlVGFyZ2V0LCByZWFkT2Zm
c2V0LCB3cml0ZU9mZnNldCwgc2l6ZSk7CiAgICAgfQogfQogCkBAIC0xNzIzLDEyICsxNDY0LDcg
QEAgdm9pZCBHTF9BUElFTlRSWSBEcmF3QXJyYXlzSW5zdGFuY2VkKEdMZW51bSBtb2RlLCBHTGlu
dCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0wKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIEVycm9yIGVycm9yID0gY29udGV4dC0+ZHJhd0FycmF5c0luc3RhbmNlZCht
b2RlLCBmaXJzdCwgY291bnQsIGluc3RhbmNlQ291bnQpOwotICAgICAgICBpZiAoZXJyb3IuaXNF
cnJvcigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJv
cik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgY29udGV4dC0+ZHJh
d0FycmF5c0luc3RhbmNlZChtb2RlLCBmaXJzdCwgY291bnQsIGluc3RhbmNlQ291bnQpOwogICAg
IH0KIH0KIApAQCAtMTc1MiwxMyArMTQ4OCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0VsZW1l
bnRzSW5zdGFuY2VkKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIEVycm9yIGVycm9yID0KLSAg
ICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50c0luc3RhbmNlZChtb2RlLCBjb3VudCwgdHlw
ZSwgaW5kaWNlcywgaW5zdGFuY2VDb3VudCwgaW5kZXhSYW5nZSk7Ci0gICAgICAgIGlmIChlcnJv
ci5pc0Vycm9yKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9y
KGVycm9yKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBjb250ZXh0
LT5kcmF3RWxlbWVudHNJbnN0YW5jZWQobW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIGluc3Rh
bmNlQ291bnQsIGluZGV4UmFuZ2UpOwogICAgIH0KIH0KIApAQCAtMTk3MCw0NyArMTcwMCwxMyBA
QCB2b2lkIEdMX0FQSUVOVFJZIEdldFN5bmNpdihHTHN5bmMgc3luYywgR0xlbnVtIHBuYW1lLCBH
THNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkqCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKGNv
bnRleHQtPmdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKLSAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChidWZTaXplIDwgMCkK
KyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAh
VmFsaWRhdGVHZXRTeW5jaXYoY29udGV4dCwgc3luYywgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwg
dmFsdWVzKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9WQUxVRSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgRmVuY2VTeW5jICpmZW5jZVN5bmMgPSBjb250ZXh0LT5nZXRGZW5jZVN5bmMoc3lu
Yyk7Ci0KLSAgICAgICAgaWYgKCFmZW5jZVN5bmMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfVkFMVUUpKTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAocG5hbWUpCi0gICAgICAgIHsK
LSAgICAgICAgICBjYXNlIEdMX09CSkVDVF9UWVBFOiAgICAgdmFsdWVzWzBdID0gc3RhdGljX2Nh
c3Q8R0xpbnQ+KEdMX1NZTkNfRkVOQ0UpOyAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
Y2FzZSBHTF9TWU5DX0NPTkRJVElPTjogIHZhbHVlc1swXSA9IHN0YXRpY19jYXN0PEdMaW50Pihm
ZW5jZVN5bmMtPmdldENvbmRpdGlvbigpKTsgIGJyZWFrOwotICAgICAgICAgIGNhc2UgR0xfU1lO
Q19GTEFHUzogICAgICB2YWx1ZXNbMF0gPSBzdGF0aWNfY2FzdDxHTGludD4oZmVuY2VTeW5jLT5n
ZXRGbGFncygpKTsgICAgICBicmVhazsKLQotICAgICAgICAgIGNhc2UgR0xfU1lOQ19TVEFUVVM6
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRXJyb3IgZXJyb3IgPSBmZW5jZVN5bmMt
PmdldFN0YXR1cyh2YWx1ZXMpOwotICAgICAgICAgICAgICAgIGlmIChlcnJvci5pc0Vycm9yKCkp
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihlcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX0VOVU0pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICBjb250
ZXh0LT5nZXRTeW5jaXYoc3luYywgcG5hbWUsIGJ1ZlNpemUsIGxlbmd0aCwgdmFsdWVzKTsKICAg
ICB9CiB9CiAKQEAgLTI0NDQsNyArMjE0MCw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3Jh
bUJpbmFyeShHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpKiBsZW5nCiAg
ICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dy
YW0pOwogICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCAhPSBudWxscHRyKTsKIAotICAgICAg
ICBFcnJvciBlcnJvciA9IHByb2dyYW1PYmplY3QtPnNhdmVCaW5hcnkoYmluYXJ5Rm9ybWF0LCBi
aW5hcnksIGJ1ZlNpemUsIGxlbmd0aCk7CisgICAgICAgIEVycm9yIGVycm9yID0gcHJvZ3JhbU9i
amVjdC0+c2F2ZUJpbmFyeShjb250ZXh0LCBiaW5hcnlGb3JtYXQsIGJpbmFyeSwgYnVmU2l6ZSwg
bGVuZ3RoKTsKICAgICAgICAgaWYgKGVycm9yLmlzRXJyb3IoKSkKICAgICAgICAgewogICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoZXJyb3IpOwpAQCAtMjQ2OSw3ICsyMTY1LDcgQEAg
dm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtQmluYXJ5KEdMdWludCBwcm9ncmFtLCBHTGVudW0gYmlu
YXJ5Rm9ybWF0LCBjb25zdCBHTHZvaWQKICAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9
IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CiAgICAgICAgIEFTU0VSVChwcm9ncmFtT2Jq
ZWN0ICE9IG51bGxwdHIpOwogCi0gICAgICAgIEVycm9yIGVycm9yID0gcHJvZ3JhbU9iamVjdC0+
bG9hZEJpbmFyeShiaW5hcnlGb3JtYXQsIGJpbmFyeSwgbGVuZ3RoKTsKKyAgICAgICAgRXJyb3Ig
ZXJyb3IgPSBwcm9ncmFtT2JqZWN0LT5sb2FkQmluYXJ5KGNvbnRleHQsIGJpbmFyeUZvcm1hdCwg
YmluYXJ5LCBsZW5ndGgpOwogICAgICAgICBpZiAoZXJyb3IuaXNFcnJvcigpKQogICAgICAgICB7
CiAgICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihlcnJvcik7CkBAIC0yNTU1LDcgKzIy
NTEsNyBAQCB2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2UyRChHTGVudW0gdGFyZ2V0LCBHTHNp
emVpIGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybQogCiAgICAgICAgIEV4dGVudHMgc2l6ZSh3
aWR0aCwgaGVpZ2h0LCAxKTsKICAgICAgICAgVGV4dHVyZSAqdGV4dHVyZSA9IGNvbnRleHQtPmdl
dFRhcmdldFRleHR1cmUodGFyZ2V0KTsKLSAgICAgICAgRXJyb3IgZXJyb3IgPSB0ZXh0dXJlLT5z
ZXRTdG9yYWdlKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgc2l6ZSk7CisgICAgICAg
IEVycm9yIGVycm9yICAgICAgPSB0ZXh0dXJlLT5zZXRTdG9yYWdlKGNvbnRleHQsIHRhcmdldCwg
bGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgc2l6ZSk7CiAgICAgICAgIGlmIChlcnJvci5pc0Vycm9y
KCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKGVycm9yKTsK
QEAgLTI1ODcsNyArMjI4Myw3IEBAIHZvaWQgR0xfQVBJRU5UUlkgVGV4U3RvcmFnZTNEKEdMZW51
bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtCiAKICAgICAgICAg
RXh0ZW50cyBzaXplKHdpZHRoLCBoZWlnaHQsIGRlcHRoKTsKICAgICAgICAgVGV4dHVyZSAqdGV4
dHVyZSA9IGNvbnRleHQtPmdldFRhcmdldFRleHR1cmUodGFyZ2V0KTsKLSAgICAgICAgRXJyb3Ig
ZXJyb3IgPSB0ZXh0dXJlLT5zZXRTdG9yYWdlKHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1h
dCwgc2l6ZSk7CisgICAgICAgIEVycm9yIGVycm9yICAgICAgPSB0ZXh0dXJlLT5zZXRTdG9yYWdl
KGNvbnRleHQsIHRhcmdldCwgbGV2ZWxzLCBpbnRlcm5hbGZvcm1hdCwgc2l6ZSk7CiAgICAgICAg
IGlmIChlcnJvci5pc0Vycm9yKCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18wLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMC5oCmluZGV4IDVkYWFlNTVh
MDNlLi4wOWNhMGU0NjQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzAuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMC5oCkBAIC05LDggKzks
OCBAQAogI2lmbmRlZiBMSUJHTEVTVjJfRU5UUllQT0lOVEdMRVMzMF9IXwogI2RlZmluZSBMSUJH
TEVTVjJfRU5UUllQT0lOVEdMRVMzMF9IXwogCi0jaW5jbHVkZSA8QU5HTEUvZ2wzLmg+Ci0jaW5j
bHVkZSA8QU5HTEUvZXhwb3J0Lmg+CisjaW5jbHVkZSA8R0xFUzMvZ2wzLmg+CisjaW5jbHVkZSA8
ZXhwb3J0Lmg+CiAKIG5hbWVzcGFjZSBnbAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzEuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzEuY3Bw
CmluZGV4IGFlMDQwNWU5OTJjLi4xZTQxMDBiMGEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzEuY3BwCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZW50cnlfcG9pbnRzX2dsZXNf
M18xLmNwcApAQCAtMTIsOSArMTIsMTMgQEAKICNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0Lmgi
CiAjaW5jbHVkZSAibGliQU5HTEUvRXJyb3IuaCIKIAorI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlk
YXRpb25FUy5oIgogI2luY2x1ZGUgImxpYkFOR0xFL3ZhbGlkYXRpb25FUzMxLmgiCisjaW5jbHVk
ZSAibGliQU5HTEUvcXVlcnljb252ZXJzaW9ucy5oIgorI2luY2x1ZGUgImxpYkFOR0xFL3F1ZXJ5
dXRpbHMuaCIKIAogI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgorI2luY2x1ZGUgImNvbW1vbi91
dGlsaXRpZXMuaCIKIAogbmFtZXNwYWNlIGdsCiB7CkBAIC0yNiwxMSArMzAsMTMgQEAgdm9pZCBH
TF9BUElFTlRSWSBEaXNwYXRjaENvbXB1dGUoR0x1aW50IG51bUdyb3Vwc1gsIEdMdWludCBudW1H
cm91cHNZLCBHTHVpbnQgbnUKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlRGlzcGF0Y2hDb21wdXRlKGNvbnRleHQsIG51bUdy
b3Vwc1gsIG51bUdyb3Vwc1ksIG51bUdyb3Vwc1opKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBv
aW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQot
ICAgICAgICBVTklNUExFTUVOVEVEKCk7CisKKyAgICAgICAgY29udGV4dC0+ZGlzcGF0Y2hDb21w
dXRlKG51bUdyb3Vwc1gsIG51bUdyb3Vwc1ksIG51bUdyb3Vwc1opOwogICAgIH0KIH0KIApAQCAt
NTQsMTEgKzYwLDEyIEBAIHZvaWQgR0xfQVBJRU5UUlkgRHJhd0FycmF5c0luZGlyZWN0KEdMZW51
bSBtb2RlLCBjb25zdCB2b2lkICppbmRpcmVjdCkKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBp
ZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSAmJiAhVmFsaWRhdGVEcmF3QXJyYXlzSW5kaXJlY3QoY29udGV4dCwgbW9k
ZSwgaW5kaXJlY3QpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJv
cihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRl
ZCIpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBVTklNUExFTUVO
VEVEKCk7CisKKyAgICAgICAgY29udGV4dC0+ZHJhd0FycmF5c0luZGlyZWN0KG1vZGUsIGluZGly
ZWN0KTsKICAgICB9CiB9CiAKQEAgLTY4LDExICs3NSwxMyBAQCB2b2lkIEdMX0FQSUVOVFJZIERy
YXdFbGVtZW50c0luZGlyZWN0KEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAq
aW5kaQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAg
ICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAg
ICAgICAhVmFsaWRhdGVEcmF3RWxlbWVudHNJbmRpcmVjdChjb250ZXh0LCBtb2RlLCB0eXBlLCBp
bmRpcmVjdCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikp
OworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIFVOSU1QTEVNRU5URUQo
KTsKKworICAgICAgICBjb250ZXh0LT5kcmF3RWxlbWVudHNJbmRpcmVjdChtb2RlLCB0eXBlLCBp
bmRpcmVjdCk7CiAgICAgfQogfQogCkBAIC04MiwxMSArOTEsMTMgQEAgdm9pZCBHTF9BUElFTlRS
WSBGcmFtZWJ1ZmZlclBhcmFtZXRlcmkoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGlu
dCBwYXJhbSkKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7
CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxp
ZGF0aW9uKCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAg
ICAgICAgICAgIVZhbGlkYXRpb25GcmFtZWJ1ZmZlclBhcmFtZXRlcmkoY29udGV4dCwgdGFyZ2V0
LCBwbmFtZSwgcGFyYW0pKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1l
bnRlZCIpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBVTklNUExF
TUVOVEVEKCk7CisKKyAgICAgICAgY29udGV4dC0+c2V0RnJhbWVidWZmZXJQYXJhbWV0ZXJpKHRh
cmdldCwgcG5hbWUsIHBhcmFtKTsKICAgICB9CiB9CiAKQEAgLTk3LDExICsxMDgsMTMgQEAgdm9p
ZCBHTF9BUElFTlRSWSBHZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcml2KEdMZW51bSB0YXJnZXQsIEdM
ZW51bSBwbmFtZSwgR0xpbnQgKnAKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRpb25HZXRGcmFtZWJ1ZmZlclBhcmFtZXRlcmko
Y29udGV4dCwgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKSkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBw
b2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
LSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworCisgICAgICAgIGNvbnRleHQtPmdldEZyYW1lYnVm
ZmVyUGFyYW1ldGVyaXYodGFyZ2V0LCBwbmFtZSwgcGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTEz
NCwxMSArMTQ3LDEyIEBAIEdMdWludCBHTF9BUElFTlRSWSBHZXRQcm9ncmFtUmVzb3VyY2VJbmRl
eChHTHVpbnQgcHJvZ3JhbSwKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxD
b250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQt
PnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24o
KSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlSW5kZXgoY29udGV4
dCwgcHJvZ3JhbSwgcHJvZ3JhbUludGVyZmFjZSwgbmFtZSkpCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50
cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICAgICAgcmV0dXJuIEdMX0lOVkFM
SURfSU5ERVg7CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICBy
ZXR1cm4gY29udGV4dC0+Z2V0UHJvZ3JhbVJlc291cmNlSW5kZXgocHJvZ3JhbSwgcHJvZ3JhbUlu
dGVyZmFjZSwgbmFtZSk7CiAgICAgfQogICAgIHJldHVybiAwdTsKIH0KQEAgLTE1NywxMSArMTcx
LDEzIEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbVJlc291cmNlTmFtZShHTHVpbnQgcHJv
Z3JhbSwKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAg
ICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0
aW9uKCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSAmJgorICAgICAg
ICAgICAgIVZhbGlkYXRlR2V0UHJvZ3JhbVJlc291cmNlTmFtZShjb250ZXh0LCBwcm9ncmFtLCBw
cm9ncmFtSW50ZXJmYWNlLCBpbmRleCwgYnVmU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLCBuYW1lKSkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRy
eSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworICAgICAgICBjb250ZXh0LT5nZXRQcm9ncmFt
UmVzb3VyY2VOYW1lKHByb2dyYW0sIHByb2dyYW1JbnRlcmZhY2UsIGluZGV4LCBidWZTaXplLCBs
ZW5ndGgsIG5hbWUpOwogICAgIH0KIH0KIApAQCAtMjU5LDExICsyNzUsMTEgQEAgdm9pZCBHTF9B
UElFTlRSWSBCaW5kUHJvZ3JhbVBpcGVsaW5lKEdMdWludCBwaXBlbGluZSkKICAgICBDb250ZXh0
ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAg
ICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlm
IChwaXBlbGluZSAhPSAwKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1l
bnRlZCIpKTsKKyAgICAgICAgICAgIC8vIEJpbmRpbmcgbm9uLXplcm8gcGlwZWxpbmVzIGlzIG5v
dCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgICAg
IH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIH0KIH0KIApAQCAtMzI3LDE5MyArMzQz
LDc1IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0UHJvZ3JhbVBpcGVsaW5laXYoR0x1aW50IHBpcGVs
aW5lLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhCiAKIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3Jh
bVVuaWZvcm0xaShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwKQogewot
ICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xp
bnQgdjAgPSAlZCkiLCBwcm9ncmFtLCBsb2NhdGlvbiwgdjApOwotICAgIENvbnRleHQgKmNvbnRl
eHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0g
ICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKLSAgICAgICAgewotICAgICAg
ICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJF
bnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7Ci0gICAgICAgIH0KLSAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOwotICAgIH0KKyAgICBQcm9ncmFtVW5pZm9ybTFpdihwcm9ncmFtLCBsb2NhdGlv
biwgMSwgJnYwKTsKIH0KIAogdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTJpKEdMdWlu
dCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQgdjAsIEdMaW50IHYxKQogewotICAgIEVW
RU5UKCIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0xpbnQgdjAg
PSAlZCwgR0xpbnQgdjEgPSAlZCkiLCBwcm9ncmFtLAotICAgICAgICAgIGxvY2F0aW9uLCB2MCwg
djEpOwotICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAg
ICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7Ci0g
ICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwotICAgIH0KKyAgICBHTGludCB4eVsy
XSA9IHt2MCwgdjF9OworICAgIFByb2dyYW1Vbmlmb3JtMml2KHByb2dyYW0sIGxvY2F0aW9uLCAx
LCB4eSk7CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0zaShHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHYwLCBHTGludCB2MSwgR0xpbnQgdjIpCiB7Ci0g
ICAgRVZFTlQoIihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGlu
dCB2MCA9ICVkLCBHTGludCB2MSA9ICVkLCBHTGludCB2MiA9ICVkKSIsCi0gICAgICAgICAgcHJv
Z3JhbSwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOwotICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAgIGlm
ICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKLSAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2lu
dCBub3QgaW1wbGVtZW50ZWQiKSk7Ci0gICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgp
OwotICAgIH0KKyAgICBHTGludCB4eXpbM10gPSB7djAsIHYxLCB2Mn07CisgICAgUHJvZ3JhbVVu
aWZvcm0zaXYocHJvZ3JhbSwgbG9jYXRpb24sIDEsIHh5eik7CiB9CiAKIHZvaWQgR0xfQVBJRU5U
UlkKIFByb2dyYW1Vbmlmb3JtNGkoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGlu
dCB2MCwgR0xpbnQgdjEsIEdMaW50IHYyLCBHTGludCB2MykKIHsKLSAgICBFVkVOVCgKLSAgICAg
ICAgIihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVkLCBHTGludCB2MCA9
ICVkLCBHTGludCB2MSA9ICVkLCBHTGludCB2MiA9ICVkLCAiCi0gICAgICAgICJHTGludCB2MyA9
ICVkKSIsCi0gICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7Ci0gICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIGlmIChjb250
ZXh0KQotICAgIHsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKLSAgICAgICAgfQot
ICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgfQorICAgIEdMaW50IHh5endbNF0gPSB7djAs
IHYxLCB2MiwgdjN9OworICAgIFByb2dyYW1Vbmlmb3JtNGl2KHByb2dyYW0sIGxvY2F0aW9uLCAx
LCB4eXp3KTsKIH0KIAogdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTF1aShHTHVpbnQg
cHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMdWludCB2MCkKIHsKLSAgICBFVkVOVCgiKEdMdWlu
dCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMdWludCB2MCA9ICV1KSIsIHBy
b2dyYW0sIGxvY2F0aW9uLCB2MCk7Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xv
YmFsQ29udGV4dCgpOwotICAgIGlmIChjb250ZXh0KQotICAgIHsKLSAgICAgICAgaWYgKCFjb250
ZXh0LT5za2lwVmFsaWRhdGlvbigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5o
YW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBp
bXBsZW1lbnRlZCIpKTsKLSAgICAgICAgfQotICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAg
fQorICAgIFByb2dyYW1Vbmlmb3JtMXVpdihwcm9ncmFtLCBsb2NhdGlvbiwgMSwgJnYwKTsKIH0K
IAogdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTJ1aShHTHVpbnQgcHJvZ3JhbSwgR0xp
bnQgbG9jYXRpb24sIEdMdWludCB2MCwgR0x1aW50IHYxKQogewotICAgIEVWRU5UKCIoR0x1aW50
IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAlZCwgR0x1aW50IHYwID0gJXUsIEdMdWlu
dCB2MSA9ICV1KSIsIHByb2dyYW0sCi0gICAgICAgICAgbG9jYXRpb24sIHYwLCB2MSk7Ci0gICAg
Q29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIGlmIChjb250
ZXh0KQotICAgIHsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElE
X09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKLSAgICAgICAgfQot
ICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgfQorICAgIEdMdWludCB4eVsyXSA9IHt2MCwg
djF9OworICAgIFByb2dyYW1Vbmlmb3JtMnVpdihwcm9ncmFtLCBsb2NhdGlvbiwgMSwgeHkpOwog
fQogCiB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlmb3JtM3VpKEdMdWludCBwcm9ncmFtLCBH
TGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2MikKIHsKLSAgICBF
VkVOVCgKLSAgICAgICAgIihHTHVpbnQgcHJvZ3JhbSA9ICV1LCBHTGludCBsb2NhdGlvbiA9ICVk
LCBHTHVpbnQgdjAgPSAldSwgR0x1aW50IHYxID0gJXUsIEdMdWludCB2MiA9ICIKLSAgICAgICAg
IiV1KSIsCi0gICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCB2MCwgdjEsIHYyKTsKLSAgICBDb250
ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgaWYgKGNvbnRleHQp
Ci0gICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BF
UkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOwotICAgICAgICB9Ci0gICAg
ICAgIFVOSU1QTEVNRU5URUQoKTsKLSAgICB9CisgICAgR0x1aW50IHh5elszXSA9IHt2MCwgdjEs
IHYyfTsKKyAgICBQcm9ncmFtVW5pZm9ybTN1aXYocHJvZ3JhbSwgbG9jYXRpb24sIDEsIHh5eik7
CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkKIFByb2dyYW1Vbmlmb3JtNHVpKEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0x1aW50IHYwLCBHTHVpbnQgdjEsIEdMdWludCB2MiwgR0x1aW50
IHYzKQogewotICAgIEVWRU5UKAotICAgICAgICAiKEdMdWludCBwcm9ncmFtID0gJXUsIEdMaW50
IGxvY2F0aW9uID0gJWQsIEdMdWludCB2MCA9ICV1LCBHTHVpbnQgdjEgPSAldSwgR0x1aW50IHYy
ID0gIgotICAgICAgICAiJXUsIEdMdWludCB2MyA9ICV1KSIsCi0gICAgICAgIHByb2dyYW0sIGxv
Y2F0aW9uLCB2MCwgdjEsIHYyLCB2Myk7Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlk
R2xvYmFsQ29udGV4dCgpOwotICAgIGlmIChjb250ZXh0KQotICAgIHsKLSAgICAgICAgaWYgKCFj
b250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5v
dCBpbXBsZW1lbnRlZCIpKTsKLSAgICAgICAgfQotICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0g
ICAgfQorICAgIEdMdWludCB4eXp3WzRdID0ge3YwLCB2MSwgdjIsIHYzfTsKKyAgICBQcm9ncmFt
VW5pZm9ybTR1aXYocHJvZ3JhbSwgbG9jYXRpb24sIDEsIHh5encpOwogfQogCiB2b2lkIEdMX0FQ
SUVOVFJZIFByb2dyYW1Vbmlmb3JtMWYoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBH
TGZsb2F0IHYwKQogewotICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9j
YXRpb24gPSAlZCwgR0xmbG9hdCB2MCA9ICVnKSIsIHByb2dyYW0sIGxvY2F0aW9uLCB2MCk7Ci0g
ICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwotICAgIGlmIChj
b250ZXh0KQotICAgIHsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKLSAgICAgICAg
fQotICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgfQorICAgIFByb2dyYW1Vbmlmb3JtMWZ2
KHByb2dyYW0sIGxvY2F0aW9uLCAxLCAmdjApOwogfQogCiB2b2lkIEdMX0FQSUVOVFJZIFByb2dy
YW1Vbmlmb3JtMmYoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHYwLCBH
TGZsb2F0IHYxKQogewotICAgIEVWRU5UKCIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9j
YXRpb24gPSAlZCwgR0xmbG9hdCB2MCA9ICVnLCBHTGZsb2F0IHYxID0gJWcpIiwgcHJvZ3JhbSwK
LSAgICAgICAgICBsb2NhdGlvbiwgdjAsIHYxKTsKLSAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7Ci0gICAgaWYgKGNvbnRleHQpCi0gICAgewotICAgICAgICBp
ZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9p
bnQgbm90IGltcGxlbWVudGVkIikpOwotICAgICAgICB9Ci0gICAgICAgIFVOSU1QTEVNRU5URUQo
KTsKLSAgICB9CisgICAgR0xmbG9hdCB4eVsyXSA9IHt2MCwgdjF9OworICAgIFByb2dyYW1Vbmlm
b3JtMmZ2KHByb2dyYW0sIGxvY2F0aW9uLCAxLCB4eSk7CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkK
IFByb2dyYW1Vbmlmb3JtM2YoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0
IHYwLCBHTGZsb2F0IHYxLCBHTGZsb2F0IHYyKQogewotICAgIEVWRU5UKAotICAgICAgICAiKEdM
dWludCBwcm9ncmFtID0gJXUsIEdMaW50IGxvY2F0aW9uID0gJWQsIEdMZmxvYXQgdjAgPSAlZywg
R0xmbG9hdCB2MSA9ICVnLCBHTGZsb2F0IHYyID0gIgotICAgICAgICAiJWcpIiwKLSAgICAgICAg
cHJvZ3JhbSwgbG9jYXRpb24sIHYwLCB2MSwgdjIpOwotICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKLSAgICBpZiAoY29udGV4dCkKLSAgICB7Ci0gICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKLSAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBw
b2ludCBub3QgaW1wbGVtZW50ZWQiKSk7Ci0gICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOwotICAgIH0KKyAgICBHTGZsb2F0IHh5elszXSA9IHt2MCwgdjEsIHYyfTsKKyAgICBQcm9n
cmFtVW5pZm9ybTNmdihwcm9ncmFtLCBsb2NhdGlvbiwgMSwgeHl6KTsKIH0KIAogdm9pZCBHTF9B
UElFTlRSWQogUHJvZ3JhbVVuaWZvcm00ZihHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24s
IEdMZmxvYXQgdjAsIEdMZmxvYXQgdjEsIEdMZmxvYXQgdjIsIEdMZmxvYXQgdjMpCiB7Ci0gICAg
RVZFTlQoCi0gICAgICAgICIoR0x1aW50IHByb2dyYW0gPSAldSwgR0xpbnQgbG9jYXRpb24gPSAl
ZCwgR0xmbG9hdCB2MCA9ICVnLCBHTGZsb2F0IHYxID0gJWcsIEdMZmxvYXQgdjIgPSAiCi0gICAg
ICAgICIlZywgR0xmbG9hdCB2MyA9ICVnKSIsCi0gICAgICAgIHByb2dyYW0sIGxvY2F0aW9uLCB2
MCwgdjEsIHYyLCB2Myk7Ci0gICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29u
dGV4dCgpOwotICAgIGlmIChjb250ZXh0KQotICAgIHsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5z
a2lwVmFsaWRhdGlvbigpKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1l
bnRlZCIpKTsKLSAgICAgICAgfQotICAgICAgICBVTklNUExFTUVOVEVEKCk7Ci0gICAgfQorICAg
IEdMZmxvYXQgeHl6d1s0XSA9IHt2MCwgdjEsIHYyLCB2M307CisgICAgUHJvZ3JhbVVuaWZvcm00
ZnYocHJvZ3JhbSwgbG9jYXRpb24sIDEsIHh5encpOwogfQogCiB2b2lkIEdMX0FQSUVOVFJZIFBy
b2dyYW1Vbmlmb3JtMWl2KEdMdWludCBwcm9ncmFtLApAQCAtNTI4LDExICs0MjYsMTQgQEAgdm9p
ZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTFpdihHTHVpbnQgcHJvZ3JhbSwKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQp
CiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAg
IGlmICghVmFsaWRhdGVQcm9ncmFtVW5pZm9ybTFpdihjb250ZXh0LCBwcm9ncmFtLCBsb2NhdGlv
biwgY291bnQsIHZhbHVlKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxl
RXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVt
ZW50ZWQiKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBM
RU1FTlRFRCgpOworCisgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5n
ZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CisgICAg
ICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZvcm0xaXYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7
CiAgICAgfQogfQogCkBAIC01NDgsMTEgKzQ0OSwxNCBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dy
YW1Vbmlmb3JtMml2KEdMdWludCBwcm9ncmFtLAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlm
ICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtKGNvbnRleHQsIEdMX0lOVF9WRUMyLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQp
KQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBVTklNUExFTUVOVEVEKCk7CisKKyAg
ICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3Jh
bSk7CisgICAgICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKKyAgICAgICAgcHJvZ3JhbU9iamVj
dC0+c2V0VW5pZm9ybTJpdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAg
LTU2OCwxMSArNDcyLDE0IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0zaXYoR0x1
aW50IHByb2dyYW0sCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpKQorICAgICAgICBpZiAoIVZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0oY29udGV4
dCwgR0xfSU5UX1ZFQzMsIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCkpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
LCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKworICAgICAgICBQcm9ncmFtICpw
cm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgQVNT
RVJUKHByb2dyYW1PYmplY3QpOworICAgICAgICBwcm9ncmFtT2JqZWN0LT5zZXRVbmlmb3JtM2l2
KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtNTg4LDExICs0OTUsMTQg
QEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTRpdihHTHVpbnQgcHJvZ3JhbSwKICAg
ICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNv
bnRleHQpCiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisg
ICAgICAgIGlmICghVmFsaWRhdGVQcm9ncmFtVW5pZm9ybShjb250ZXh0LCBHTF9JTlRfVkVDNCwg
cHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBu
b3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAg
ICAgVU5JTVBMRU1FTlRFRCgpOworCisgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBj
b250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVj
dCk7CisgICAgICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZvcm00aXYobG9jYXRpb24sIGNvdW50
LCB2YWx1ZSk7CiAgICAgfQogfQogCkBAIC02MDgsMTEgKzUxOCwxNCBAQCB2b2lkIEdMX0FQSUVO
VFJZIFByb2dyYW1Vbmlmb3JtMXVpdihHTHVpbnQgcHJvZ3JhbSwKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlmICghVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybShjb250ZXh0LCBHTF9VTlNJR05FRF9JTlQsIHByb2dyYW0sIGxv
Y2F0aW9uLCBjb3VudCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVy
cm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVu
dGVkIikpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIFVOSU1QTEVN
RU5URUQoKTsKKworICAgICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0
UHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOworICAgICAg
ICBwcm9ncmFtT2JqZWN0LT5zZXRVbmlmb3JtMXVpdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsK
ICAgICB9CiB9CiAKQEAgLTYyOCwxMSArNTQxLDE0IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3Jh
bVVuaWZvcm0ydWl2KEdMdWludCBwcm9ncmFtLAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlm
ICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtKGNvbnRleHQsIEdMX1VOU0lHTkVEX0lOVF9WRUMyLCBwcm9ncmFtLCBsb2NhdGlv
biwgY291bnQpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihF
cnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIp
KTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBVTklNUExFTUVOVEVE
KCk7CisKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dy
YW0ocHJvZ3JhbSk7CisgICAgICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKKyAgICAgICAgcHJv
Z3JhbU9iamVjdC0+c2V0VW5pZm9ybTJ1aXYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CiAgICAg
fQogfQogCkBAIC02NDgsMTEgKzU2NCwxNCBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlm
b3JtM3VpdihHTHVpbnQgcHJvZ3JhbSwKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRH
bG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIWNv
bnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlmICghVmFsaWRhdGVQcm9ncmFtVW5p
Zm9ybShjb250ZXh0LCBHTF9VTlNJR05FRF9JTlRfVkVDMywgcHJvZ3JhbSwgbG9jYXRpb24sIGNv
dW50KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7Cisg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwor
CisgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHBy
b2dyYW0pOworICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CisgICAgICAgIHByb2dyYW1P
YmplY3QtPnNldFVuaWZvcm0zdWl2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0K
IApAQCAtNjY4LDExICs1ODcsMTQgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTR1
aXYoR0x1aW50IHByb2dyYW0sCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICBpZiAoIVZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0o
Y29udGV4dCwgR0xfVU5TSUdORURfSU5UX1ZFQzQsIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCkp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKworICAg
ICAgICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFt
KTsKKyAgICAgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOworICAgICAgICBwcm9ncmFtT2JqZWN0
LT5zZXRVbmlmb3JtNHVpdihsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKICAgICB9CiB9CiAKQEAg
LTY4OCwxMSArNjEwLDE0IEBAIHZvaWQgR0xfQVBJRU5UUlkgUHJvZ3JhbVVuaWZvcm0xZnYoR0x1
aW50IHByb2dyYW0sCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4
dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpKQorICAgICAgICBpZiAoIVZhbGlkYXRlUHJvZ3JhbVVuaWZvcm0oY29udGV4
dCwgR0xfRkxPQVQsIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCkpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAi
RW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKworICAgICAgICBQcm9ncmFtICpwcm9n
cmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsKKyAgICAgICAgQVNTRVJU
KHByb2dyYW1PYmplY3QpOworICAgICAgICBwcm9ncmFtT2JqZWN0LT5zZXRVbmlmb3JtMWZ2KGxv
Y2F0aW9uLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtNzA4LDExICs2MzMsMTQgQEAg
dm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybTJmdihHTHVpbnQgcHJvZ3JhbSwKICAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRl
eHQpCiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAg
ICAgIGlmICghVmFsaWRhdGVQcm9ncmFtVW5pZm9ybShjb250ZXh0LCBHTF9GTE9BVF9WRUMyLCBw
cm9ncmFtLCBsb2NhdGlvbiwgY291bnQpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0
LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5v
dCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAg
ICBVTklNUExFTUVOVEVEKCk7CisKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNv
bnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0
KTsKKyAgICAgICAgcHJvZ3JhbU9iamVjdC0+c2V0VW5pZm9ybTJmdihsb2NhdGlvbiwgY291bnQs
IHZhbHVlKTsKICAgICB9CiB9CiAKQEAgLTcyOCwxMSArNjU2LDE0IEBAIHZvaWQgR0xfQVBJRU5U
UlkgUHJvZ3JhbVVuaWZvcm0zZnYoR0x1aW50IHByb2dyYW0sCiAgICAgQ29udGV4dCAqY29udGV4
dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAg
ICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICBpZiAoIVZhbGlk
YXRlUHJvZ3JhbVVuaWZvcm0oY29udGV4dCwgR0xfRkxPQVRfVkVDMywgcHJvZ3JhbSwgbG9jYXRp
b24sIGNvdW50KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQi
KSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOworCisgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9n
cmFtKHByb2dyYW0pOworICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CisgICAgICAgIHBy
b2dyYW1PYmplY3QtPnNldFVuaWZvcm0zZnYobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CiAgICAg
fQogfQogCkBAIC03NDgsMTEgKzY3OSwxNCBAQCB2b2lkIEdMX0FQSUVOVFJZIFByb2dyYW1Vbmlm
b3JtNGZ2KEdMdWludCBwcm9ncmFtLAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEds
b2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghY29u
dGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVByb2dyYW1Vbmlm
b3JtKGNvbnRleHQsIEdMX0ZMT0FUX1ZFQzQsIHByb2dyYW0sIGxvY2F0aW9uLCBjb3VudCkpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFM
SURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKworICAgICAg
ICBQcm9ncmFtICpwcm9ncmFtT2JqZWN0ID0gY29udGV4dC0+Z2V0UHJvZ3JhbShwcm9ncmFtKTsK
KyAgICAgICAgQVNTRVJUKHByb2dyYW1PYmplY3QpOworICAgICAgICBwcm9ncmFtT2JqZWN0LT5z
ZXRVbmlmb3JtNGZ2KGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtNzY5
LDExICs3MDMsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDJmdihH
THVpbnQgcHJvZ3JhbSwKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250
ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIWNvbnRleHQtPnNr
aXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlmICghVmFsaWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJp
eChjb250ZXh0LCBHTF9GTE9BVF9NQVQyLCBwcm9ncmFtLCBsb2NhdGlvbiwgY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bvc2UpKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09Q
RVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQotICAgICAgICBVTklNUExFTUVOVEVEKCk7CisKKyAgICAgICAgUHJv
Z3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJvZ3JhbSk7CisgICAg
ICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKKyAgICAgICAgcHJvZ3JhbU9iamVjdC0+c2V0VW5p
Zm9ybU1hdHJpeDJmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0K
IH0KIApAQCAtNzkwLDExICs3MjgsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9y
bU1hdHJpeDNmdihHTHVpbnQgcHJvZ3JhbSwKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFs
aWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAo
IWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlmICghVmFsaWRhdGVQcm9ncmFt
VW5pZm9ybU1hdHJpeChjb250ZXh0LCBHTF9GTE9BVF9NQVQzLCBwcm9ncmFtLCBsb2NhdGlvbiwg
Y291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc3Bv
c2UpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBVTklNUExFTUVOVEVEKCk7CisK
KyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJv
Z3JhbSk7CisgICAgICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKKyAgICAgICAgcHJvZ3JhbU9i
amVjdC0+c2V0VW5pZm9ybU1hdHJpeDNmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFs
dWUpOwogICAgIH0KIH0KIApAQCAtODExLDExICs3NTMsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBQ
cm9ncmFtVW5pZm9ybU1hdHJpeDRmdihHTHVpbnQgcHJvZ3JhbSwKICAgICBDb250ZXh0ICpjb250
ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewot
ICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlmICghVmFs
aWRhdGVQcm9ncmFtVW5pZm9ybU1hdHJpeChjb250ZXh0LCBHTF9GTE9BVF9NQVQ0LCBwcm9ncmFt
LCBsb2NhdGlvbiwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0cmFuc3Bvc2UpKQogICAgICAgICB7Ci0gICAgICAgICAgICBjb250ZXh0LT5oYW5kbGVF
cnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5IHBvaW50IG5vdCBpbXBsZW1l
bnRlZCIpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBVTklNUExF
TUVOVEVEKCk7CisKKyAgICAgICAgUHJvZ3JhbSAqcHJvZ3JhbU9iamVjdCA9IGNvbnRleHQtPmdl
dFByb2dyYW0ocHJvZ3JhbSk7CisgICAgICAgIEFTU0VSVChwcm9ncmFtT2JqZWN0KTsKKyAgICAg
ICAgcHJvZ3JhbU9iamVjdC0+c2V0VW5pZm9ybU1hdHJpeDRmdihsb2NhdGlvbiwgY291bnQsIHRy
YW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtODMyLDExICs3NzgsMTUgQEAgdm9pZCBH
TF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDJ4M2Z2KEdMdWludCBwcm9ncmFtLAogICAg
IENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29u
dGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAg
ICAgICAgaWYgKCFWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4KGNvbnRleHQsIEdMX0ZMT0FU
X01BVDJ4MywgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlKSkKICAgICAgICAgewotICAgICAgICAgICAg
Y29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBw
b2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
LSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworCisgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmpl
Y3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBBU1NFUlQocHJvZ3Jh
bU9iamVjdCk7CisgICAgICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZvcm1NYXRyaXgyeDNmdihs
b2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtODUzLDEx
ICs4MDMsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDN4MmZ2KEdM
dWludCBwcm9ncmFtLAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRl
eHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSkKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4
KGNvbnRleHQsIEdMX0ZMT0FUX01BVDN4MiwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlKSkKICAgICAg
ICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9P
UEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworCisgICAgICAgIFBy
b2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAg
ICAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CisgICAgICAgIHByb2dyYW1PYmplY3QtPnNldFVu
aWZvcm1NYXRyaXgzeDJmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAg
IH0KIH0KIApAQCAtODc0LDExICs4MjgsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5p
Zm9ybU1hdHJpeDJ4NGZ2KEdMdWludCBwcm9ncmFtLAogICAgIENvbnRleHQgKmNvbnRleHQgPSBH
ZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAg
IGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVBy
b2dyYW1Vbmlmb3JtTWF0cml4KGNvbnRleHQsIEdMX0ZMT0FUX01BVDJ4NCwgcHJvZ3JhbSwgbG9j
YXRpb24sIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHJhbnNwb3NlKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3Io
RXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQi
KSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRF
RCgpOworCisgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9n
cmFtKHByb2dyYW0pOworICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CisgICAgICAgIHBy
b2dyYW1PYmplY3QtPnNldFVuaWZvcm1NYXRyaXgyeDRmdihsb2NhdGlvbiwgY291bnQsIHRyYW5z
cG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtODk1LDExICs4NTMsMTUgQEAgdm9pZCBHTF9B
UElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDR4MmZ2KEdMdWludCBwcm9ncmFtLAogICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAg
ICAgaWYgKCFWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4KGNvbnRleHQsIEdMX0ZMT0FUX01B
VDR4MiwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlKSkKICAgICAgICAgewotICAgICAgICAgICAgY29u
dGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2lu
dCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgVU5JTVBMRU1FTlRFRCgpOworCisgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3Qg
PSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAgICBBU1NFUlQocHJvZ3JhbU9i
amVjdCk7CisgICAgICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZvcm1NYXRyaXg0eDJmdihsb2Nh
dGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtOTE2LDExICs4
NzgsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9ybU1hdHJpeDN4NGZ2KEdMdWlu
dCBwcm9ncmFtLAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQo
KTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZh
bGlkYXRpb24oKSkKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVByb2dyYW1Vbmlmb3JtTWF0cml4KGNv
bnRleHQsIEdMX0ZMT0FUX01BVDN4NCwgcHJvZ3JhbSwgbG9jYXRpb24sIGNvdW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3NlKSkKICAgICAgICAg
ewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVS
QVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworCisgICAgICAgIFByb2dy
YW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2dyYW0pOworICAgICAg
ICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CisgICAgICAgIHByb2dyYW1PYmplY3QtPnNldFVuaWZv
cm1NYXRyaXgzeDRmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogICAgIH0K
IH0KIApAQCAtOTM3LDExICs5MDMsMTUgQEAgdm9pZCBHTF9BUElFTlRSWSBQcm9ncmFtVW5pZm9y
bU1hdHJpeDR4M2Z2KEdMdWludCBwcm9ncmFtLAogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlm
ICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgaWYgKCFWYWxpZGF0ZVByb2dy
YW1Vbmlmb3JtTWF0cml4KGNvbnRleHQsIEdMX0ZMT0FUX01BVDR4MywgcHJvZ3JhbSwgbG9jYXRp
b24sIGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJh
bnNwb3NlKSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJy
b3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7
CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgp
OworCisgICAgICAgIFByb2dyYW0gKnByb2dyYW1PYmplY3QgPSBjb250ZXh0LT5nZXRQcm9ncmFt
KHByb2dyYW0pOworICAgICAgICBBU1NFUlQocHJvZ3JhbU9iamVjdCk7CisgICAgICAgIHByb2dy
YW1PYmplY3QtPnNldFVuaWZvcm1NYXRyaXg0eDNmdihsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9z
ZSwgdmFsdWUpOwogICAgIH0KIH0KIApAQCAtOTk0LDExICs5NjQsMTEgQEAgdm9pZCBHTF9BUElF
TlRSWSBCaW5kSW1hZ2VUZXh0dXJlKEdMdWludCB1bml0LAogICAgIENvbnRleHQgKmNvbnRleHQg
PSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAg
ICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgaWYgKHRleHR1cmUg
IT0gMCkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3Io
R0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7Cisg
ICAgICAgICAgICAvLyBCaW5kaW5nIG5vbi16ZXJvIGltYWdlIHRleHR1cmVzIGlzIG5vdCBpbXBs
ZW1lbnRlZCB5ZXQuCisgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7CiAgICAgICAgIH0KLSAg
ICAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIH0KIH0KIApAQCAtMTA2MCwxOCArMTAzMCwzMSBA
QCB2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3JhZ2UyRE11bHRpc2FtcGxlKEdMZW51bSB0YXJnZXQs
CiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlm
IChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigp
KQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAg
ICFWYWxpZGF0ZVRleFN0b3JhZ2UyRE11bHRpU2FtcGxlKGNvbnRleHQsIHRhcmdldCwgc2FtcGxl
cywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVpZ2h0LCBmaXhlZHNhbXBsZWxvY2F0aW9ucykpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKyAgICAgICAgY29udGV4dC0+
dGV4U3RvcmFnZTJETXVsdGlzYW1wbGUodGFyZ2V0LCBzYW1wbGVzLCBpbnRlcm5hbGZvcm1hdCwg
d2lkdGgsIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zml4ZWRzYW1wbGVsb2NhdGlvbnMpOwogICAgIH0KIH0KIAogdm9pZCBHTF9BUElFTlRSWSBHZXRN
dWx0aXNhbXBsZWZ2KEdMZW51bSBwbmFtZSwgR0x1aW50IGluZGV4LCBHTGZsb2F0ICp2YWwpCiB7
CiAgICAgRVZFTlQoIihHTGVudW0gcG5hbWUgPSAweCVYLCBHTHVpbnQgaW5kZXggPSAldSwgR0xm
bG9hdCogdmFsID0gMHglMC44cCkiLCBwbmFtZSwgaW5kZXgsIHZhbCk7Ci0gICAgVU5JTVBMRU1F
TlRFRCgpOworCisgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgp
OworICAgIGlmIChjb250ZXh0KQorICAgIHsKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFs
aWRhdGlvbigpICYmICFWYWxpZGF0ZUdldE11bHRpc2FtcGxlZnYoY29udGV4dCwgcG5hbWUsIGlu
ZGV4LCB2YWwpKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBjb250ZXh0LT5nZXRNdWx0aXNhbXBsZWZ2KHBuYW1lLCBpbmRleCwgdmFsKTsKKyAg
ICB9CiB9CiAKIHZvaWQgR0xfQVBJRU5UUlkgU2FtcGxlTWFza2koR0x1aW50IG1hc2tOdW1iZXIs
IEdMYml0ZmllbGQgbWFzaykKQEAgLTEwODAsMTEgKzEwNjMsMTEgQEAgdm9pZCBHTF9BUElFTlRS
WSBTYW1wbGVNYXNraShHTHVpbnQgbWFza051bWJlciwgR0xiaXRmaWVsZCBtYXNrKQogICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAg
ICAgaWYgKG1hc2sgIT0gfkdMYml0ZmllbGQoMCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNv
bnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9p
bnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAgICAgICAgLy8gU2V0dGluZyBhIG5vbi1kZWZh
dWx0IHNhbXBsZSBtYXNrIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQuCisgICAgICAgICAgICBVTklN
UExFTUVOVEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOwogICAgIH0K
IH0KIApAQCAtMTA5Miw3ICsxMDc1LDIwIEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4TGV2ZWxQ
YXJhbWV0ZXJpdihHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lCiB7CiAg
ICAgRVZFTlQoIihHTGVudW0gdGFyZ2V0ID0gMHglWCwgR0xpbnQgbGV2ZWwgPSAlZCwgR0xlbnVt
IHBuYW1lID0gMHglWCwgR0xpbnQqIHBhcmFtcyA9IDB4JTAuOHApIiwKICAgICAgICAgICB0YXJn
ZXQsIGxldmVsLCBwbmFtZSwgcGFyYW1zKTsKLSAgICBVTklNUExFTUVOVEVEKCk7CisKKyAgICBD
b250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9iYWxDb250ZXh0KCk7CisgICAgaWYgKGNvbnRl
eHQpCisgICAgeworICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAg
ICAgICAgICAgICFWYWxpZGF0ZUdldFRleExldmVsUGFyYW1ldGVyaXYoY29udGV4dCwgdGFyZ2V0
LCBsZXZlbCwgcG5hbWUsIHBhcmFtcykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIFRleHR1cmUgKnRleHR1cmUgPSBjb250ZXh0LT5nZXRUYXJn
ZXRUZXh0dXJlKAorICAgICAgICAgICAgSXNDdWJlTWFwVGV4dHVyZVRhcmdldCh0YXJnZXQpID8g
R0xfVEVYVFVSRV9DVUJFX01BUCA6IHRhcmdldCk7CisgICAgICAgIFF1ZXJ5VGV4TGV2ZWxQYXJh
bWV0ZXJpdih0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBwbmFtZSwgcGFyYW1zKTsKKyAgICB9CiB9
CiAKIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdihHTGVudW0gdGFyZ2V0
LCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0ICpwYXJhbXMpCkBAIC0xMTAwLDE0
ICsxMDk2LDE5IEBAIHZvaWQgR0xfQVBJRU5UUlkgR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdihHTGVu
dW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lCiAgICAgRVZFTlQoCiAgICAgICAg
ICIoR0xlbnVtIHRhcmdldCA9IDB4JVgsIEdMaW50IGxldmVsID0gJWQsIEdMZW51bSBwbmFtZSA9
IDB4JVgsIEdMZmxvYXQqIHBhcmFtcyA9IDB4JTAuOHApIiwKICAgICAgICAgdGFyZ2V0LCBsZXZl
bCwgcG5hbWUsIHBhcmFtcyk7CisKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0VmFsaWRHbG9i
YWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBpZiAoIWNvbnRl
eHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRp
b24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlR2V0VGV4TGV2ZWxQYXJhbWV0ZXJmdihjb250
ZXh0LCB0YXJnZXQsIGxldmVsLCBwbmFtZSwgcGFyYW1zKSkKICAgICAgICAgewotICAgICAgICAg
ICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04sICJFbnRy
eSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworCisgICAgICAgIFRleHR1cmUgKnRleHR1cmUg
PSBjb250ZXh0LT5nZXRUYXJnZXRUZXh0dXJlKAorICAgICAgICAgICAgSXNDdWJlTWFwVGV4dHVy
ZVRhcmdldCh0YXJnZXQpID8gR0xfVEVYVFVSRV9DVUJFX01BUCA6IHRhcmdldCk7CisgICAgICAg
IFF1ZXJ5VGV4TGV2ZWxQYXJhbWV0ZXJmdih0ZXh0dXJlLCB0YXJnZXQsIGxldmVsLCBwbmFtZSwg
cGFyYW1zKTsKICAgICB9CiB9CiAKQEAgLTExMjIsMTEgKzExMjMsMTMgQEAgdm9pZCBHTF9BUElF
TlRSWSBCaW5kVmVydGV4QnVmZmVyKEdMdWludCBiaW5kaW5naW5kZXgsCiAgICAgQ29udGV4dCAq
Y29udGV4dCA9IEdldFZhbGlkR2xvYmFsQ29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAg
IHsKLSAgICAgICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICBpZiAo
IWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZUJpbmRW
ZXJ0ZXhCdWZmZXIoY29udGV4dCwgYmluZGluZ2luZGV4LCBidWZmZXIsIG9mZnNldCwgc3RyaWRl
KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4dC0+aGFuZGxlRXJyb3IoRXJyb3IoR0xf
SU5WQUxJRF9PUEVSQVRJT04sICJFbnRyeSBwb2ludCBub3QgaW1wbGVtZW50ZWQiKSk7CisgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgVU5JTVBMRU1FTlRFRCgpOworCisg
ICAgICAgIGNvbnRleHQtPmJpbmRWZXJ0ZXhCdWZmZXIoYmluZGluZ2luZGV4LCBidWZmZXIsIG9m
ZnNldCwgc3RyaWRlKTsKICAgICB9CiB9CiAKQEAgLTExNDMsMTEgKzExNDYsMTMgQEAgdm9pZCBH
TF9BUElFTlRSWSBWZXJ0ZXhBdHRyaWJGb3JtYXQoR0x1aW50IGF0dHJpYmluZGV4LAogICAgIENv
bnRleHQgKmNvbnRleHQgPSBHZXRWYWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4
dCkKICAgICB7Ci0gICAgICAgIGlmICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAg
ICAgaWYgKCFjb250ZXh0LT5za2lwVmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRh
dGVWZXJ0ZXhBdHRyaWJGb3JtYXQoY29udGV4dCwgYXR0cmliaW5kZXgsIHNpemUsIHR5cGUsIHJl
bGF0aXZlb2Zmc2V0LCBmYWxzZSkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhh
bmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGlt
cGxlbWVudGVkIikpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIFVO
SU1QTEVNRU5URUQoKTsKKworICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJGb3JtYXQoYXR0
cmliaW5kZXgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHJlbGF0aXZlb2Zmc2V0KTsKICAgICB9
CiB9CiAKQEAgLTExNjMsMTEgKzExNjgsMTMgQEAgdm9pZCBHTF9BUElFTlRSWSBWZXJ0ZXhBdHRy
aWJJRm9ybWF0KEdMdWludCBhdHRyaWJpbmRleCwKICAgICBDb250ZXh0ICpjb250ZXh0ID0gR2V0
VmFsaWRHbG9iYWxDb250ZXh0KCk7CiAgICAgaWYgKGNvbnRleHQpCiAgICAgewotICAgICAgICBp
ZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9uKCkpCisgICAgICAgIGlmICghY29udGV4dC0+c2tp
cFZhbGlkYXRpb24oKSAmJgorICAgICAgICAgICAgIVZhbGlkYXRlVmVydGV4QXR0cmliRm9ybWF0
KGNvbnRleHQsIGF0dHJpYmluZGV4LCBzaXplLCB0eXBlLCByZWxhdGl2ZW9mZnNldCwgdHJ1ZSkp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQgbm90IGltcGxlbWVudGVkIikpOworICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIFVOSU1QTEVNRU5URUQoKTsKKworICAg
ICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJJRm9ybWF0KGF0dHJpYmluZGV4LCBzaXplLCB0eXBl
LCByZWxhdGl2ZW9mZnNldCk7CiAgICAgfQogfQogCkBAIC0xMTc3LDExICsxMTg0LDEzIEBAIHZv
aWQgR0xfQVBJRU5UUlkgVmVydGV4QXR0cmliQmluZGluZyhHTHVpbnQgYXR0cmliaW5kZXgsIEdM
dWludCBiaW5kaW5naW5kZXgpCiAgICAgQ29udGV4dCAqY29udGV4dCA9IEdldFZhbGlkR2xvYmFs
Q29udGV4dCgpOwogICAgIGlmIChjb250ZXh0KQogICAgIHsKLSAgICAgICAgaWYgKCFjb250ZXh0
LT5za2lwVmFsaWRhdGlvbigpKQorICAgICAgICBpZiAoIWNvbnRleHQtPnNraXBWYWxpZGF0aW9u
KCkgJiYKKyAgICAgICAgICAgICFWYWxpZGF0ZVZlcnRleEF0dHJpYkJpbmRpbmcoY29udGV4dCwg
YXR0cmliaW5kZXgsIGJpbmRpbmdpbmRleCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRl
eHQtPmhhbmRsZUVycm9yKEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OLCAiRW50cnkgcG9pbnQg
bm90IGltcGxlbWVudGVkIikpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAg
ICAgIFVOSU1QTEVNRU5URUQoKTsKKworICAgICAgICBjb250ZXh0LT52ZXJ0ZXhBdHRyaWJCaW5k
aW5nKGF0dHJpYmluZGV4LCBiaW5kaW5naW5kZXgpOwogICAgIH0KIH0KIApAQCAtMTE5MSwxMSAr
MTIwMCwxMyBAQCB2b2lkIEdMX0FQSUVOVFJZIFZlcnRleEJpbmRpbmdEaXZpc29yKEdMdWludCBi
aW5kaW5naW5kZXgsIEdMdWludCBkaXZpc29yKQogICAgIENvbnRleHQgKmNvbnRleHQgPSBHZXRW
YWxpZEdsb2JhbENvbnRleHQoKTsKICAgICBpZiAoY29udGV4dCkKICAgICB7Ci0gICAgICAgIGlm
ICghY29udGV4dC0+c2tpcFZhbGlkYXRpb24oKSkKKyAgICAgICAgaWYgKCFjb250ZXh0LT5za2lw
VmFsaWRhdGlvbigpICYmCisgICAgICAgICAgICAhVmFsaWRhdGVWZXJ0ZXhCaW5kaW5nRGl2aXNv
cihjb250ZXh0LCBiaW5kaW5naW5kZXgsIGRpdmlzb3IpKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTiwgIkVudHJ5
IHBvaW50IG5vdCBpbXBsZW1lbnRlZCIpKTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBVTklNUExFTUVOVEVEKCk7CisKKyAgICAgICAgY29udGV4dC0+c2V0VmVydGV4
QmluZGluZ0Rpdmlzb3IoYmluZGluZ2luZGV4LCBkaXZpc29yKTsKICAgICB9CiB9CiB9ICAvLyBu
YW1lc3BhY2UgZ2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvZW50cnlfcG9pbnRzX2dsZXNfM18xLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMS5oCmluZGV4IDRiNDRhYTcwOTBjLi4x
NTAwZmRlZTg0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9lbnRyeV9wb2ludHNfZ2xlc18zXzEuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliR0xFU3YyL2VudHJ5X3BvaW50c19nbGVzXzNfMS5oCkBAIC05LDggKzksOCBAQAog
I2lmbmRlZiBMSUJHTEVTVjJfRU5UUllQT0lOVEdMRVMzMV9IXwogI2RlZmluZSBMSUJHTEVTVjJf
RU5UUllQT0lOVEdMRVMzMV9IXwogCi0jaW5jbHVkZSA8QU5HTEUvZ2wzMS5oPgotI2luY2x1ZGUg
PEFOR0xFL2V4cG9ydC5oPgorI2luY2x1ZGUgPEdMRVMzL2dsMzEuaD4KKyNpbmNsdWRlIDxleHBv
cnQuaD4KIAogLy8gd2UgaW5jbHVkZSB0aGUgcGxhdGZvcm0uaCBoZWFkZXIgc2luY2UgaXQgdW5k
ZWZpbmVzIHRoZSBjb25mbGljdGluZyBNZW1vcnlCYXJyaWVyIG1hY3JvCiAjaW5jbHVkZSAiY29t
bW9uL3BsYXRmb3JtLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL2dsb2JhbF9zdGF0ZS5jcHAKaW5kZXggZmE2ODFiZGUxZjIuLmM1ZjNkZmU0ZTEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2dsb2Jh
bF9zdGF0ZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9n
bG9iYWxfc3RhdGUuY3BwCkBAIC04LDIyOSArOCwxNDEgQEAKIAogI2luY2x1ZGUgImxpYkdMRVN2
Mi9nbG9iYWxfc3RhdGUuaCIKIAotI2luY2x1ZGUgImxpYkFOR0xFL0NvbnRleHQuaCIKLSNpbmNs
dWRlICJsaWJBTkdMRS9FcnJvci5oIgotCiAjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCiAjaW5j
bHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCiAjaW5jbHVkZSAiY29tbW9uL3Rscy5oIgogCi1uYW1l
c3BhY2UKLXsKLQotc3RhdGljIFRMU0luZGV4IGN1cnJlbnRUTFMgPSBUTFNfSU5WQUxJRF9JTkRF
WDsKLQotc3RydWN0IEN1cnJlbnQKLXsKLSAgICBFR0xpbnQgZXJyb3I7Ci0gICAgRUdMZW51bSBB
UEk7Ci0gICAgZWdsOjpEaXNwbGF5ICpkaXNwbGF5OwotICAgIGVnbDo6U3VyZmFjZSAqZHJhd1N1
cmZhY2U7Ci0gICAgZWdsOjpTdXJmYWNlICpyZWFkU3VyZmFjZTsKLSAgICBnbDo6Q29udGV4dCAq
Y29udGV4dDsKLX07Ci0KLUN1cnJlbnQgKkFsbG9jYXRlQ3VycmVudCgpCi17Ci0gICAgQVNTRVJU
KGN1cnJlbnRUTFMgIT0gVExTX0lOVkFMSURfSU5ERVgpOwotICAgIGlmIChjdXJyZW50VExTID09
IFRMU19JTlZBTElEX0lOREVYKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQot
Ci0gICAgQ3VycmVudCAqY3VycmVudCA9IG5ldyBDdXJyZW50KCk7Ci0gICAgY3VycmVudC0+ZXJy
b3IgPSBFR0xfU1VDQ0VTUzsKLSAgICBjdXJyZW50LT5BUEkgPSBFR0xfT1BFTkdMX0VTX0FQSTsK
LSAgICBjdXJyZW50LT5kaXNwbGF5ID0gcmVpbnRlcnByZXRfY2FzdDxlZ2w6OkRpc3BsYXkqPihF
R0xfTk9fRElTUExBWSk7Ci0gICAgY3VycmVudC0+ZHJhd1N1cmZhY2UgPSByZWludGVycHJldF9j
YXN0PGVnbDo6U3VyZmFjZSo+KEVHTF9OT19TVVJGQUNFKTsKLSAgICBjdXJyZW50LT5yZWFkU3Vy
ZmFjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8ZWdsOjpTdXJmYWNlKj4oRUdMX05PX1NVUkZBQ0UpOwot
ICAgIGN1cnJlbnQtPmNvbnRleHQgPSByZWludGVycHJldF9jYXN0PGdsOjpDb250ZXh0Kj4oRUdM
X05PX0NPTlRFWFQpOwotCi0gICAgaWYgKCFTZXRUTFNWYWx1ZShjdXJyZW50VExTLCBjdXJyZW50
KSkKLSAgICB7Ci0gICAgICAgIEVSUigiQ291bGQgbm90IHNldCB0aHJlYWQgbG9jYWwgc3RvcmFn
ZS4iKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorI2luY2x1ZGUgImxpYkFOR0xFL1Ro
cmVhZC5oIgogCi0gICAgcmV0dXJuIGN1cnJlbnQ7Ci19Ci0KLUN1cnJlbnQgKkdldEN1cnJlbnRE
YXRhKCkKK25hbWVzcGFjZSBnbAogewotICAgIC8vIENyZWF0ZSBhIFRMUyBpbmRleCBpZiBvbmUg
aGFzIG5vdCBiZWVuIGNyZWF0ZWQgZm9yIHRoaXMgRExMCi0gICAgaWYgKGN1cnJlbnRUTFMgPT0g
VExTX0lOVkFMSURfSU5ERVgpCi0gICAgewotICAgICAgICBjdXJyZW50VExTID0gQ3JlYXRlVExT
SW5kZXgoKTsKLSAgICB9CiAKLSAgICBDdXJyZW50ICpjdXJyZW50ID0gcmVpbnRlcnByZXRfY2Fz
dDxDdXJyZW50Kj4oR2V0VExTVmFsdWUoY3VycmVudFRMUykpOwotCi0gICAgLy8gQU5HTEUgaXNz
dWUgNDg4OiB3aGVuIHRoZSBkbGwgaXMgbG9hZGVkIGFmdGVyIHRocmVhZCBpbml0aWFsaXphdGlv
biwKLSAgICAvLyB0aHJlYWQgbG9jYWwgc3RvcmFnZSAoY3VycmVudCkgbWlnaHQgbm90IGV4aXN0
IHlldC4KLSAgICByZXR1cm4gKGN1cnJlbnQgPyBjdXJyZW50IDogQWxsb2NhdGVDdXJyZW50KCkp
OwotfQotCi0jaWZkZWYgQU5HTEVfUExBVEZPUk1fV0lORE9XUwotCi12b2lkIERlYWxsb2NhdGVD
dXJyZW50KCkKK0NvbnRleHQgKkdldEdsb2JhbENvbnRleHQoKQogewotICAgIEN1cnJlbnQgKmN1
cnJlbnQgPSByZWludGVycHJldF9jYXN0PEN1cnJlbnQqPihHZXRUTFNWYWx1ZShjdXJyZW50VExT
KSk7Ci0gICAgU2FmZURlbGV0ZShjdXJyZW50KTsKLSAgICBTZXRUTFNWYWx1ZShjdXJyZW50VExT
LCBOVUxMKTsKKyAgICBlZ2w6OlRocmVhZCAqdGhyZWFkID0gZWdsOjpHZXRDdXJyZW50VGhyZWFk
KCk7CisgICAgcmV0dXJuIHRocmVhZC0+Z2V0Q29udGV4dCgpOwogfQogCi1leHRlcm4gIkMiIEJP
T0wgV0lOQVBJIERsbE1haW4oSElOU1RBTkNFLCBEV09SRCByZWFzb24sIExQVk9JRCkKK0NvbnRl
eHQgKkdldFZhbGlkR2xvYmFsQ29udGV4dCgpCiB7Ci0gICAgc3dpdGNoIChyZWFzb24pCi0gICAg
ewotICAgICAgY2FzZSBETExfUFJPQ0VTU19BVFRBQ0g6Ci0gICAgICAgIGN1cnJlbnRUTFMgPSBD
cmVhdGVUTFNJbmRleCgpOwotICAgICAgICBpZiAoY3VycmVudFRMUyA9PSBUTFNfSU5WQUxJRF9J
TkRFWCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICAgICB9Ci0g
ICAgICAgIEFsbG9jYXRlQ3VycmVudCgpOwotICAgICAgICBicmVhazsKLQotICAgICAgY2FzZSBE
TExfVEhSRUFEX0FUVEFDSDoKLSAgICAgICAgQWxsb2NhdGVDdXJyZW50KCk7Ci0gICAgICAgIGJy
ZWFrOwotCi0gICAgICBjYXNlIERMTF9USFJFQURfREVUQUNIOgotICAgICAgICBEZWFsbG9jYXRl
Q3VycmVudCgpOwotICAgICAgICBicmVhazsKLQotICAgICAgY2FzZSBETExfUFJPQ0VTU19ERVRB
Q0g6Ci0gICAgICAgIERlYWxsb2NhdGVDdXJyZW50KCk7Ci0gICAgICAgIGlmIChjdXJyZW50VExT
ICE9IFRMU19JTlZBTElEX0lOREVYKQotICAgICAgICB7Ci0gICAgICAgICAgICBEZXN0cm95VExT
SW5kZXgoY3VycmVudFRMUyk7Ci0gICAgICAgICAgICBjdXJyZW50VExTID0gVExTX0lOVkFMSURf
SU5ERVg7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgcmV0dXJuIFRS
VUU7CisgICAgZWdsOjpUaHJlYWQgKnRocmVhZCA9IGVnbDo6R2V0Q3VycmVudFRocmVhZCgpOwor
ICAgIHJldHVybiB0aHJlYWQtPmdldFZhbGlkQ29udGV4dCgpOwogfQotI2VuZGlmCiAKLX0KK30g
IC8vIG5hbWVzcGFjZSBnbAogCi1uYW1lc3BhY2UgZ2wKK25hbWVzcGFjZSBlZ2wKIHsKIAotQ29u
dGV4dCAqR2V0R2xvYmFsQ29udGV4dCgpCituYW1lc3BhY2UKIHsKLSAgICBDdXJyZW50ICpjdXJy
ZW50ID0gR2V0Q3VycmVudERhdGEoKTsKIAotICAgIHJldHVybiBjdXJyZW50LT5jb250ZXh0Owot
fQorc3RhdGljIFRMU0luZGV4IHRocmVhZFRMUyA9IFRMU19JTlZBTElEX0lOREVYOwogCi1Db250
ZXh0ICpHZXRWYWxpZEdsb2JhbENvbnRleHQoKQorVGhyZWFkICpBbGxvY2F0ZUN1cnJlbnRUaHJl
YWQoKQogewotICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gR2V0R2xvYmFsQ29udGV4dCgpOwot
ICAgIGlmIChjb250ZXh0KQorICAgIEFTU0VSVCh0aHJlYWRUTFMgIT0gVExTX0lOVkFMSURfSU5E
RVgpOworICAgIGlmICh0aHJlYWRUTFMgPT0gVExTX0lOVkFMSURfSU5ERVgpCiAgICAgewotICAg
ICAgICBpZiAoY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBjb250ZXh0LT5oYW5kbGVFcnJvcihnbDo6RXJyb3IoR0xfT1VUX09GX01FTU9SWSwgIkNvbnRl
eHQgaGFzIGJlZW4gbG9zdC4iKSk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0
OwotICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFRocmVh
ZCAqdGhyZWFkID0gbmV3IFRocmVhZCgpOworICAgIGlmICghU2V0VExTVmFsdWUodGhyZWFkVExT
LCB0aHJlYWQpKQorICAgIHsKKyAgICAgICAgRVJSKCkgPDwgIkNvdWxkIG5vdCBzZXQgdGhyZWFk
IGxvY2FsIHN0b3JhZ2UuIjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQotICAgIHJl
dHVybiBudWxscHRyOwotfQogCisgICAgcmV0dXJuIHRocmVhZDsKIH0KIAotbmFtZXNwYWNlIGVn
bAoteworfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi12b2lkIFNldEdsb2JhbEVycm9yKGNv
bnN0IEVycm9yICZlcnJvcikKK1RocmVhZCAqR2V0Q3VycmVudFRocmVhZCgpCiB7Ci0gICAgQ3Vy
cmVudCAqY3VycmVudCA9IEdldEN1cnJlbnREYXRhKCk7Ci0KLSAgICBjdXJyZW50LT5lcnJvciA9
IGVycm9yLmdldENvZGUoKTsKLX0KKyAgICAvLyBDcmVhdGUgYSBUTFMgaW5kZXggaWYgb25lIGhh
cyBub3QgYmVlbiBjcmVhdGVkIGZvciB0aGlzIERMTAorICAgIGlmICh0aHJlYWRUTFMgPT0gVExT
X0lOVkFMSURfSU5ERVgpCisgICAgeworICAgICAgICB0aHJlYWRUTFMgPSBDcmVhdGVUTFNJbmRl
eCgpOworICAgIH0KIAotRUdMaW50IEdldEdsb2JhbEVycm9yKCkKLXsKLSAgICBDdXJyZW50ICpj
dXJyZW50ID0gR2V0Q3VycmVudERhdGEoKTsKKyAgICBUaHJlYWQgKmN1cnJlbnQgPSBzdGF0aWNf
Y2FzdDxUaHJlYWQgKj4oR2V0VExTVmFsdWUodGhyZWFkVExTKSk7CiAKLSAgICByZXR1cm4gY3Vy
cmVudC0+ZXJyb3I7CisgICAgLy8gQU5HTEUgaXNzdWUgNDg4OiB3aGVuIHRoZSBkbGwgaXMgbG9h
ZGVkIGFmdGVyIHRocmVhZCBpbml0aWFsaXphdGlvbiwKKyAgICAvLyB0aHJlYWQgbG9jYWwgc3Rv
cmFnZSAoY3VycmVudCkgbWlnaHQgbm90IGV4aXN0IHlldC4KKyAgICByZXR1cm4gKGN1cnJlbnQg
PyBjdXJyZW50IDogQWxsb2NhdGVDdXJyZW50VGhyZWFkKCkpOwogfQogCi1FR0xlbnVtIEdldEds
b2JhbEFQSSgpCi17Ci0gICAgQ3VycmVudCAqY3VycmVudCA9IEdldEN1cnJlbnREYXRhKCk7Ci0K
LSAgICByZXR1cm4gY3VycmVudC0+QVBJOwotfQorfSAgLy8gbmFtZXNwYWNlIGVnbAogCi12b2lk
IFNldEdsb2JhbEFQSShFR0xlbnVtIEFQSSkKKyNpZmRlZiBBTkdMRV9QTEFURk9STV9XSU5ET1dT
CituYW1lc3BhY2UgZWdsCiB7Ci0gICAgQ3VycmVudCAqY3VycmVudCA9IEdldEN1cnJlbnREYXRh
KCk7Ci0KLSAgICBjdXJyZW50LT5BUEkgPSBBUEk7Ci19CiAKLXZvaWQgU2V0R2xvYmFsRGlzcGxh
eShEaXNwbGF5ICpkcHkpCituYW1lc3BhY2UKIHsKLSAgICBDdXJyZW50ICpjdXJyZW50ID0gR2V0
Q3VycmVudERhdGEoKTsKLQotICAgIGN1cnJlbnQtPmRpc3BsYXkgPSBkcHk7Ci19CiAKLURpc3Bs
YXkgKkdldEdsb2JhbERpc3BsYXkoKQorYm9vbCBEZWFsbG9jYXRlQ3VycmVudFRocmVhZCgpCiB7
Ci0gICAgQ3VycmVudCAqY3VycmVudCA9IEdldEN1cnJlbnREYXRhKCk7Ci0KLSAgICByZXR1cm4g
Y3VycmVudC0+ZGlzcGxheTsKKyAgICBUaHJlYWQgKnRocmVhZCA9IHN0YXRpY19jYXN0PFRocmVh
ZCAqPihHZXRUTFNWYWx1ZSh0aHJlYWRUTFMpKTsKKyAgICBTYWZlRGVsZXRlKHRocmVhZCk7Cisg
ICAgcmV0dXJuIFNldFRMU1ZhbHVlKHRocmVhZFRMUywgbnVsbHB0cik7CiB9CiAKLXZvaWQgU2V0
R2xvYmFsRHJhd1N1cmZhY2UoU3VyZmFjZSAqc3VyZmFjZSkKK2Jvb2wgSW5pdGlhbGl6ZVByb2Nl
c3MoKQogewotICAgIEN1cnJlbnQgKmN1cnJlbnQgPSBHZXRDdXJyZW50RGF0YSgpOworICAgIHRo
cmVhZFRMUyA9IENyZWF0ZVRMU0luZGV4KCk7CisgICAgaWYgKHRocmVhZFRMUyA9PSBUTFNfSU5W
QUxJRF9JTkRFWCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKLSAgICBj
dXJyZW50LT5kcmF3U3VyZmFjZSA9IHN1cmZhY2U7CisgICAgcmV0dXJuIEFsbG9jYXRlQ3VycmVu
dFRocmVhZCgpICE9IG51bGxwdHI7CiB9CiAKLVN1cmZhY2UgKkdldEdsb2JhbERyYXdTdXJmYWNl
KCkKK2Jvb2wgVGVybWluYXRlUHJvY2VzcygpCiB7Ci0gICAgQ3VycmVudCAqY3VycmVudCA9IEdl
dEN1cnJlbnREYXRhKCk7CisgICAgaWYgKCFEZWFsbG9jYXRlQ3VycmVudFRocmVhZCgpKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAotICAgIHJldHVybiBjdXJyZW50LT5k
cmF3U3VyZmFjZTsKLX0KKyAgICBpZiAodGhyZWFkVExTICE9IFRMU19JTlZBTElEX0lOREVYKQor
ICAgIHsKKyAgICAgICAgVExTSW5kZXggdGxzQ29weSA9IHRocmVhZFRMUzsKKyAgICAgICAgdGhy
ZWFkVExTICAgICAgICA9IFRMU19JTlZBTElEX0lOREVYOwogCi12b2lkIFNldEdsb2JhbFJlYWRT
dXJmYWNlKFN1cmZhY2UgKnN1cmZhY2UpCi17Ci0gICAgQ3VycmVudCAqY3VycmVudCA9IEdldEN1
cnJlbnREYXRhKCk7CisgICAgICAgIGlmICghRGVzdHJveVRMU0luZGV4KHRsc0NvcHkpKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CiAKLSAg
ICBjdXJyZW50LT5yZWFkU3VyZmFjZSA9IHN1cmZhY2U7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
LVN1cmZhY2UgKkdldEdsb2JhbFJlYWRTdXJmYWNlKCkKLXsKLSAgICBDdXJyZW50ICpjdXJyZW50
ID0gR2V0Q3VycmVudERhdGEoKTsKK30gIC8vIGFub255bW91cyBuYW1lc3BhY2UKIAotICAgIHJl
dHVybiBjdXJyZW50LT5yZWFkU3VyZmFjZTsKLX0KK30gIC8vIG5hbWVzcGFjZSBlZ2wKIAotdm9p
ZCBTZXRHbG9iYWxDb250ZXh0KGdsOjpDb250ZXh0ICpjb250ZXh0KQorZXh0ZXJuICJDIiBCT09M
IFdJTkFQSSBEbGxNYWluKEhJTlNUQU5DRSwgRFdPUkQgcmVhc29uLCBMUFZPSUQpCiB7Ci0gICAg
Q3VycmVudCAqY3VycmVudCA9IEdldEN1cnJlbnREYXRhKCk7CisgICAgc3dpdGNoIChyZWFzb24p
CisgICAgeworICAgICAgICBjYXNlIERMTF9QUk9DRVNTX0FUVEFDSDoKKyAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxCT09MPihlZ2w6OkluaXRpYWxpemVQcm9jZXNzKCkpOwogCi0gICAg
Y3VycmVudC0+Y29udGV4dCA9IGNvbnRleHQ7Ci19CisgICAgICAgIGNhc2UgRExMX1RIUkVBRF9B
VFRBQ0g6CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Qk9PTD4oZWdsOjpBbGxvY2F0
ZUN1cnJlbnRUaHJlYWQoKSAhPSBudWxscHRyKTsKIAotZ2w6OkNvbnRleHQgKkdldEdsb2JhbENv
bnRleHQoKQotewotICAgIEN1cnJlbnQgKmN1cnJlbnQgPSBHZXRDdXJyZW50RGF0YSgpOworICAg
ICAgICBjYXNlIERMTF9USFJFQURfREVUQUNIOgorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEJPT0w+KGVnbDo6RGVhbGxvY2F0ZUN1cnJlbnRUaHJlYWQoKSk7CiAKLSAgICByZXR1cm4g
Y3VycmVudC0+Y29udGV4dDsKLX0KKyAgICAgICAgY2FzZSBETExfUFJPQ0VTU19ERVRBQ0g6Cisg
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Qk9PTD4oZWdsOjpUZXJtaW5hdGVQcm9jZXNz
KCkpOworICAgIH0KIAorICAgIHJldHVybiBUUlVFOwogfQorI2VuZGlmICAvLyBBTkdMRV9QTEFU
Rk9STV9XSU5ET1dTCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL2dsb2JhbF9zdGF0ZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9nbG9iYWxfc3RhdGUuaAppbmRleCBkYjIwMjUzOWNiOS4uM2UzNzQwYzkwZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvZ2xvYmFsX3N0YXRl
LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9nbG9iYWxfc3Rh
dGUuaApAQCAtOSw4ICs5LDYgQEAKICNpZm5kZWYgTElCR0xFU1YyX0dMT0JBTFNUQVRFX0hfCiAj
ZGVmaW5lIExJQkdMRVNWMl9HTE9CQUxTVEFURV9IXwogCi0jaW5jbHVkZSA8RUdML2VnbC5oPgot
CiBuYW1lc3BhY2UgZ2wKIHsKIGNsYXNzIENvbnRleHQ7CkBAIC0xOCwzMiArMTYsMTQgQEAgY2xh
c3MgQ29udGV4dDsKIENvbnRleHQgKkdldEdsb2JhbENvbnRleHQoKTsKIENvbnRleHQgKkdldFZh
bGlkR2xvYmFsQ29udGV4dCgpOwogCi19Cit9ICAvLyBuYW1lc3BhY2UgZ2wKIAogbmFtZXNwYWNl
IGVnbAogewotY2xhc3MgRXJyb3I7Ci1jbGFzcyBEaXNwbGF5OwotY2xhc3MgU3VyZmFjZTsKLQot
dm9pZCBTZXRHbG9iYWxFcnJvcihjb25zdCBFcnJvciAmZXJyb3IpOwotRUdMaW50IEdldEdsb2Jh
bEVycm9yKCk7Ci0KLXZvaWQgU2V0R2xvYmFsQVBJKEVHTGVudW0gQVBJKTsKLUVHTGVudW0gR2V0
R2xvYmFsQVBJKCk7Ci0KLXZvaWQgU2V0R2xvYmFsRGlzcGxheShEaXNwbGF5ICpkcHkpOwotRGlz
cGxheSAqR2V0R2xvYmFsRGlzcGxheSgpOwotCi12b2lkIFNldEdsb2JhbERyYXdTdXJmYWNlKFN1
cmZhY2UgKnN1cmZhY2UpOwotU3VyZmFjZSAqR2V0R2xvYmFsRHJhd1N1cmZhY2UoKTsKLQotdm9p
ZCBTZXRHbG9iYWxSZWFkU3VyZmFjZShTdXJmYWNlICpzdXJmYWNlKTsKLVN1cmZhY2UgKkdldEds
b2JhbFJlYWRTdXJmYWNlKCk7CitjbGFzcyBUaHJlYWQ7CiAKLXZvaWQgU2V0R2xvYmFsQ29udGV4
dChnbDo6Q29udGV4dCAqY29udGV4dCk7Ci1nbDo6Q29udGV4dCAqR2V0R2xvYmFsQ29udGV4dCgp
OworVGhyZWFkICpHZXRDdXJyZW50VGhyZWFkKCk7CiAKLX0KK30gIC8vIG5hbWVzcGFjZSBlZ2wK
IAogI2VuZGlmIC8vIExJQkdMRVNWMl9HTE9CQUxTVEFURV9IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuZGVmIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuZGVmCmluZGV4IDM5OTZiOTU1
NTdhLi4yZTczYjk3NGRlMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9saWJHTEVTdjIuZGVmCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvbGliR0xFU3YyLmRlZgpAQCAtNDA4LDYgKzQwOCw1IEBAIEVYUE9SVFMKICAg
ICBnbFZlcnRleEJpbmRpbmdEaXZpc29yICAgICAgICAgIEA0MTIKIAogICAgIDsgQU5HTEUgUGxh
dGZvcm0gSW1wbGVtZW50YXRpb24KLSAgICBBTkdMRVBsYXRmb3JtQ3VycmVudCAgICAgICAgICAg
IEAyOTAKLSAgICBBTkdMRVBsYXRmb3JtSW5pdGlhbGl6ZSAgICAgICAgIEAyOTEKLSAgICBBTkdM
RVBsYXRmb3JtU2h1dGRvd24gICAgICAgICAgIEAyOTIKKyAgICBBTkdMRUdldERpc3BsYXlQbGF0
Zm9ybSAgICAgICAgIEAyOTAKKyAgICBBTkdMRVJlc2V0RGlzcGxheVBsYXRmb3JtICAgICAgIEAy
OTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9CVUlMRC5n
biBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9CVUlMRC5nbgpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMjc3ZDVmNWI0YzAuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9CVUlMRC5nbgorKysgL2Rldi9udWxsCkBAIC0x
LDM0OCArMCwwIEBACi0jIENvcHlyaWdodCAyMDE1IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBi
eSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0jIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCi0KLWltcG9ydCgiLy90ZXN0aW5nL3Rlc3QuZ25pIikKLWltcG9ydCgiLy9idWlsZC9j
b25maWcvY2hyb21lY2FzdF9idWlsZC5nbmkiKQotaW1wb3J0KCIvL3RoaXJkX3BhcnR5L2FuZ2xl
L2J1aWxkL2FuZ2xlX2NvbW1vbi5nbmkiKQotCi11bml0dGVzdHNfZ3lwaSA9IGV4ZWNfc2NyaXB0
KCIvL2J1aWxkL2d5cGlfdG9fZ24ucHkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmViYXNlX3BhdGgoImFuZ2xlX3VuaXR0
ZXN0cy5neXBpIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tcmVwbGFjZT08
KGFuZ2xlX3BhdGgpPS4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbICJhbmdsZV91bml0dGVzdHMuZ3lwaSIgXSkKLQotdGVzdCgiYW5nbGVfdW5pdHRlc3Rz
IikgewotICBpbmNsdWRlX2RpcnMgPSBbCi0gICAgInRlc3RpbmcvZ3Rlc3QvaW5jbHVkZSIsCi0g
ICAgIi4uLy4uL3NyYyIsCi0gIF0KLQotICBzb3VyY2VzID0gcmViYXNlX3BhdGgodW5pdHRlc3Rz
X2d5cGkuYW5nbGVfdW5pdHRlc3RzX3NvdXJjZXMsICIuIiwgIi4uLy4uIikKLQotICBpZiAoYW5n
bGVfZW5hYmxlX2hsc2wpIHsKLSAgICBzb3VyY2VzICs9Ci0gICAgICAgIHJlYmFzZV9wYXRoKHVu
aXR0ZXN0c19neXBpLmFuZ2xlX3VuaXR0ZXN0c19obHNsX3NvdXJjZXMsICIuIiwgIi4uLy4uIikK
LSAgICBkZWZpbmVzID0gWyAiQU5HTEVfRU5BQkxFX0hMU0wiIF0KLSAgfQotCi0gIHNvdXJjZXMg
Kz0gWyAiLy9ncHUvYW5nbGVfdW5pdHRlc3RfbWFpbi5jYyIgXQotCi0gIGRlcHMgPSBbCi0gICAg
Ii8vYmFzZSIsCi0gICAgIi8vYmFzZS90ZXN0OnRlc3Rfc3VwcG9ydCIsCi0gICAgIi8vdGVzdGlu
Zy9nbW9jayIsCi0gICAgIi8vdGVzdGluZy9ndGVzdCIsCi0gICAgIi8vdGhpcmRfcGFydHkvYW5n
bGU6bGliQU5HTEUiLAotICAgICIvL3RoaXJkX3BhcnR5L2FuZ2xlOnByZXByb2Nlc3NvciIsCi0g
ICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6dHJhbnNsYXRvcl9zdGF0aWMiLAotICBdCi19Ci0KLWlm
IChpc193aW4gfHwgaXNfbGludXggfHwgaXNfbWFjIHx8IGlzX2FuZHJvaWQpIHsKLSAgZW5kMmVu
ZF9neXBpID0gZXhlY19zY3JpcHQoIi8vYnVpbGQvZ3lwaV90b19nbi5weSIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJh
c2VfcGF0aCgiYW5nbGVfZW5kMmVuZF90ZXN0cy5neXBpIiksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIi0tcmVwbGFjZT08KGFuZ2xlX3BhdGgpPS4iLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbICJhbmdsZV9lbmQyZW5kX3Rlc3RzLmd5cGki
IF0pCi0KLSAgdGVzdCgiYW5nbGVfZW5kMmVuZF90ZXN0cyIpIHsKLSAgICBpbmNsdWRlX2RpcnMg
PSBbCi0gICAgICAidGVzdGluZy9ndGVzdC9pbmNsdWRlIiwKLSAgICAgICIuLi8uLi9zcmMvdGVz
dHMiLAotICAgICAgIi4uLy4uL3V0aWwiLAotICAgIF0KLQotICAgIGlmIChpc19hbmRyb2lkKSB7
Ci0gICAgICB1c2VfbmF0aXZlX2FjdGl2aXR5ID0gdHJ1ZQotICAgIH0KLQotICAgIHNvdXJjZXMg
PQotICAgICAgICByZWJhc2VfcGF0aChlbmQyZW5kX2d5cGkuYW5nbGVfZW5kMmVuZF90ZXN0c19z
b3VyY2VzLCAiLiIsICIuLi8uLiIpCi0KLSAgICBpZiAoaXNfd2luKSB7Ci0gICAgICBzb3VyY2Vz
ICs9IHJlYmFzZV9wYXRoKGVuZDJlbmRfZ3lwaS5hbmdsZV9lbmQyZW5kX3Rlc3RzX3dpbl9zb3Vy
Y2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLiIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICIuLi8uLiIpCi0gICAgfQotICAgIGlmICh1c2VfeDExKSB7Ci0gICAgICBz
b3VyY2VzICs9IHJlYmFzZV9wYXRoKGVuZDJlbmRfZ3lwaS5hbmdsZV9lbmQyZW5kX3Rlc3RzX3gx
MV9zb3VyY2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLiIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIuLi8uLiIpCi0gICAgfQotCi0gICAgc291cmNlcyArPSBbICIv
L2dwdS9hbmdsZV9lbmQyZW5kX3Rlc3RzX21haW4uY2MiIF0KLQotICAgIGNvbmZpZ3MgKz0gWwot
ICAgICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6aW50ZXJuYWxfY29uZmlnIiwKLSAgICAgICIvL3Ro
aXJkX3BhcnR5L2FuZ2xlOmxpYkFOR0xFX2NvbmZpZyIsCi0gICAgXQotCi0gICAgaWYgKGlzX2xp
bnV4ICYmICFpc19jb21wb25lbnRfYnVpbGQpIHsKLSAgICAgICMgU2V0IHJwYXRoIHRvIGZpbmQg
bGliRUdMLnNvIGFuZCBsaWJHTEVTdjIuc28gZXZlbiBpbiBhIG5vbi1jb21wb25lbnQgYnVpbGQu
Ci0gICAgICBjb25maWdzICs9IFsgIi8vYnVpbGQvY29uZmlnL2djYzpycGF0aF9mb3JfYnVpbHRf
c2hhcmVkX2xpYnJhcmllcyIgXQotICAgIH0KLQotICAgIGRlcHMgPSBbCi0gICAgICAiLy9iYXNl
IiwKLSAgICAgICIvL2Jhc2UvdGVzdDp0ZXN0X3N1cHBvcnQiLAotICAgICAgIi8vdGVzdGluZy9n
bW9jayIsCi0gICAgICAiLy90ZXN0aW5nL2d0ZXN0IiwKLSAgICAgICIvL3RoaXJkX3BhcnR5L2Fu
Z2xlOmFuZ2xlX3V0aWwiLAotICAgICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6bGliQU5HTEUiLAot
ICAgICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6bGliRUdMIiwKLSAgICAgICIvL3RoaXJkX3BhcnR5
L2FuZ2xlOmxpYkdMRVN2MiIsCi0gICAgICAiLy90aGlyZF9wYXJ0eS9hbmdsZTpwcmVwcm9jZXNz
b3IiLAotICAgICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6dHJhbnNsYXRvcl9zdGF0aWMiLAotICAg
IF0KLSAgfQotfQotCi1pZiAoaXNfd2luKSB7Ci0gIHBlcmZ0ZXN0c19neXBpID0gZXhlY19zY3Jp
cHQoIi8vYnVpbGQvZ3lwaV90b19nbi5weSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmViYXNlX3BhdGgoImFuZ2xl
X3BlcmZ0ZXN0cy5neXBpIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1y
ZXBsYWNlPTwoYW5nbGVfcGF0aCk9LiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFsgImFuZ2xlX3BlcmZ0ZXN0cy5neXBpIiBdKQotCi0gIHRlc3Qo
ImFuZ2xlX3BlcmZ0ZXN0cyIpIHsKLSAgICBpbmNsdWRlX2RpcnMgPSBbCi0gICAgICAidGVzdGlu
Zy9ndGVzdC9pbmNsdWRlIiwKLSAgICAgICIuLi8uLi9zcmMvdGVzdHMiLAotICAgICAgIi4uLy4u
L3V0aWwiLAotICAgIF0KLQotICAgIHNvdXJjZXMgPSByZWJhc2VfcGF0aChwZXJmdGVzdHNfZ3lw
aS5hbmdsZV9wZXJmX3Rlc3RzX3NvdXJjZXMsICIuIiwgIi4uLy4uIikKLQotICAgIHNvdXJjZXMg
Kz0KLSAgICAgICAgcmViYXNlX3BhdGgocGVyZnRlc3RzX2d5cGkuYW5nbGVfcGVyZl90ZXN0c193
aW5fc291cmNlcywgIi4iLCAiLi4vLi4iKQotCi0gICAgc291cmNlcyArPSBbICIvL2dwdS9hbmds
ZV9wZXJmdGVzdHNfbWFpbi5jYyIgXQotCi0gICAgY29uZmlncyArPSBbCi0gICAgICAiLy90aGly
ZF9wYXJ0eS9hbmdsZTppbnRlcm5hbF9jb25maWciLAotICAgICAgIi8vdGhpcmRfcGFydHkvYW5n
bGU6bGliQU5HTEVfY29uZmlnIiwKLSAgICBdCi0KLSAgICBkZXBzID0gWwotICAgICAgIi8vYmFz
ZSIsCi0gICAgICAiLy9iYXNlL3Rlc3Q6dGVzdF9zdXBwb3J0IiwKLSAgICAgICIvL3Rlc3Rpbmcv
Z21vY2siLAotICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCi0gICAgICAiLy90aGlyZF9wYXJ0eS9h
bmdsZTphbmdsZV91dGlsIiwKLSAgICAgICIvL3RoaXJkX3BhcnR5L2FuZ2xlOmxpYkFOR0xFIiwK
LSAgICAgICIvL3RoaXJkX3BhcnR5L2FuZ2xlOmxpYkVHTCIsCi0gICAgICAiLy90aGlyZF9wYXJ0
eS9hbmdsZTpsaWJHTEVTdjIiLAotICAgIF0KLSAgfQotfQotCi0jIyMtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyMjIGRFUVAgdGVzdHMKLSMj
Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K
LWRlY2xhcmVfYXJncygpIHsKLSAgIyBEb24ndCBidWlsZCBkRVFQIGJ5IGRlZmF1bHQuCi0gIGJ1
aWxkX2FuZ2xlX2RlcXBfdGVzdHMgPSBmYWxzZQotfQotCi0jIFRPRE8oam1hZGlsbCk6IE90aGVy
IHBsYXRmb3Jtcy4KLWlmIChidWlsZF9hbmdsZV9kZXFwX3Rlc3RzKSB7Ci0gIGRlcXBfZ3lwaSA9
IGV4ZWNfc2NyaXB0KCIvL2J1aWxkL2d5cGlfdG9fZ24ucHkiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmViYXNlX3BhdGgoImRlcXAu
Z3lwaSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLXJlcGxhY2U9PChhbmdsZV9w
YXRoKT0uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1yZXBsYWNlPTwoZGVxcF9w
YXRoKT0uLi9kZXFwL3NyYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICJzY29wZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFsg
ImRlcXAuZ3lwaSIgXSkKLQotICBjb25maWcoImFuZ2xlX2RlcXBfc3VwcG9ydCIpIHsKLSAgICBp
bmNsdWRlX2RpcnMgPSByZWJhc2VfcGF0aChkZXFwX2d5cGkuZGVxcF9pbmNsdWRlX2RpcnMsICIu
IiwgIi4uLy4uIikKLSAgICBpZiAoaXNfd2luKSB7Ci0gICAgICBpbmNsdWRlX2RpcnMgKz0gWyAi
Li4vZGVxcC9zcmMvZnJhbWV3b3JrL3BsYXRmb3JtL3dpbjMyIiBdCi0gICAgICBjZmxhZ3MgPSBk
ZXFwX2d5cGkuZGVxcF93aW5fY2ZsYWdzCi0gICAgfQotICAgIGRlZmluZXMgPSBkZXFwX2d5cGku
ZGVxcF9kZWZpbmVzCi0gICAgZGVmaW5lcyArPSBbICJfTUJDUyIgXQotCi0gICAgIyBBc2sgdGhl
IHN5c3RlbSBoZWFkZXJzIHRvIGV4cG9zZSBhbGwgdGhlIHJlZ3VsYXIgZnVuY3Rpb24gb3RoZXJ3
aXNlCi0gICAgIyBkRVFQIGRvZXNuJ3QgY29tcGlsZSBhbmQgcHJvZHVjZXMgd2FybmluZ3MgYWJv
dXQgaW1wbGljaXRseSBkZWZpbmVkCi0gICAgIyBmdW5jdGlvbnMuCi0gICAgaWYgKGlzX2xpbnV4
KSB7Ci0gICAgICAjIFRoaXMgaGFzIHRvIGJlIEdOVV9TT1VSQ0UgYXMgb24gTGludXggZEVRUCB1
c2VzIHN5c2NhbGwoKQotICAgICAgZGVmaW5lcyArPSBbICJfR05VX1NPVVJDRSIgXQotICAgIH0K
LSAgICBpZiAoaXNfYW5kcm9pZCkgewotICAgICAgIyBfWE9QRU5fU09VUkNFPTYwMCBpcyB3aGF0
IGlzIHVzZWQgaW4gZGVxcC9zcmMvQW5kcm9pZC5tawotICAgICAgZGVmaW5lcyArPSBbICJfWE9Q
RU5fU09VUkNFPTYwMCIgXQotICAgIH0KLSAgfQotCi0gIGRlcXBfdW5kZWZpbmVfY29uZmlncyA9
IFsKLSAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIsCi0gICAgIi8v
YnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX3J0dGkiLAotICBdCi0KLSAgaWYgKGlzX3dpbikgewot
ICAgIGRlcXBfdW5kZWZpbmVfY29uZmlncyArPSBbCi0gICAgICAiLy9idWlsZC9jb25maWcvd2lu
OmxlYW5fYW5kX21lYW4iLAotICAgICAgIi8vYnVpbGQvY29uZmlnL3dpbjpub21pbm1heCIsCi0g
ICAgICAiLy9idWlsZC9jb25maWcvd2luOnVuaWNvZGUiLAotICAgIF0KLSAgfQotCi0gIGlmIChp
c19saW51eCB8fCBpc19hbmRyb2lkKSB7Ci0gICAgZGVxcF91bmRlZmluZV9jb25maWdzICs9IFsg
Ii8vYnVpbGQvY29uZmlnL2djYzpub19leGNlcHRpb25zIiBdCi0gIH0KLQotICBzdGF0aWNfbGli
cmFyeSgiYW5nbGVfZGVxcF9kZWNwcCIpIHsKLSAgICBjb25maWdzIC09IGRlcXBfdW5kZWZpbmVf
Y29uZmlncwotICAgIHB1YmxpY19jb25maWdzID0gWwotICAgICAgIjphbmdsZV9kZXFwX3N1cHBv
cnQiLAotICAgICAgIi8vYnVpbGQvY29uZmlnL2NvbXBpbGVyOm5vX2Nocm9taXVtX2NvZGUiLAot
ICAgICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6aW50ZXJuYWxfY29uZmlnIiwKLSAgICBdCi0gICAg
c291cmNlcyA9IHJlYmFzZV9wYXRoKGRlcXBfZ3lwaS5kZXFwX2xpYnRlc3Rlcl9kZWNwcF9zb3Vy
Y2VzLCAiLiIsICIuLi8uLiIpCi0gIH0KLQotICBjb25maWcoImFuZ2xlX2RlcXBfbGlidGVzdGVy
X2NvbmZpZyIpIHsKLSAgICBkZWZpbmVzID0gWyAiQU5HTEVfREVRUF9MSUJURVNURVJfSU1QTEVN
RU5UQVRJT04iIF0KLQotICAgIGlmIChpc19jbGFuZykgewotICAgICAgIyBUT0RPKGptYWRpbGwp
OiBSZW1vdmUgdGhpcyBvbmNlIHdlIGZpeCBkRVFQLgotICAgICAgY2ZsYWdzX2NjID0gWyAiLVdu
by1kZWxldGUtbm9uLXZpcnR1YWwtZHRvciIgXQotICAgIH0KLSAgfQotCi0gIHN0YXRpY19saWJy
YXJ5KCJhbmdsZV9kZXFwX2xpYnRlc3RlciIpIHsKLSAgICBwdWJsaWNfZGVwcyA9IFsKLSAgICAg
ICI6YW5nbGVfZGVxcF9kZWNwcCIsCi0gICAgICAiLy90aGlyZF9wYXJ0eS9hbmdsZTphbmdsZV91
dGlsIiwKLSAgICAgICIvL3RoaXJkX3BhcnR5L2FuZ2xlOmxpYkVHTCIsCi0gICAgICAiLy90aGly
ZF9wYXJ0eS9saWJwbmc6bGlicG5nIiwKLSAgICBdCi0gICAgY29uZmlncyAtPSBkZXFwX3VuZGVm
aW5lX2NvbmZpZ3MKLSAgICBwdWJsaWNfY29uZmlncyA9IFsgIjphbmdsZV9kZXFwX2xpYnRlc3Rl
cl9jb25maWciIF0KLSAgICBzb3VyY2VzID0gcmViYXNlX3BhdGgoZGVxcF9neXBpLmRlcXBfbGli
dGVzdGVyX3NvdXJjZXMsICIuIiwgIi4uLy4uIikKLSAgICBpZiAoaXNfd2luKSB7Ci0gICAgICBz
b3VyY2VzICs9IHJlYmFzZV9wYXRoKGRlcXBfZ3lwaS5kZXFwX2xpYnRlc3Rlcl9zb3VyY2VzX3dp
biwgIi4iLCAiLi4vLi4iKQotICAgIH0KLSAgICBpZiAoaXNfbGludXggfHwgaXNfYW5kcm9pZCkg
ewotICAgICAgc291cmNlcyArPQotICAgICAgICAgIHJlYmFzZV9wYXRoKGRlcXBfZ3lwaS5kZXFw
X2xpYnRlc3Rlcl9zb3VyY2VzX3VuaXgsICIuIiwgIi4uLy4uIikKLSAgICB9Ci0gICAgaWYgKGlz
X2FuZHJvaWQpIHsKLSAgICAgIGxpYnMgPSBbICJsb2ciIF0KLSAgICB9Ci0gIH0KLQotICBjb25m
aWcoImFuZ2xlX2RlcXBfZ3Rlc3Rfc3VwcG9ydF9jb25maWciKSB7Ci0gICAgaW5jbHVkZV9kaXJz
ID0gWyAidGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zIiBdCi0gIH0KLQotICBzb3Vy
Y2Vfc2V0KCJhbmdsZV9kZXFwX2d0ZXN0X3N1cHBvcnQiKSB7Ci0gICAgdGVzdG9ubHkgPSB0cnVl
Ci0gICAgcHVibGljX2RlcHMgPSBbCi0gICAgICAiLy9iYXNlIiwKLSAgICAgICIvL2Jhc2UvdGVz
dDp0ZXN0X3N1cHBvcnQiLAotICAgICAgIi8vdGVzdGluZy9ndGVzdCIsCi0gICAgICAiLy90aGly
ZF9wYXJ0eS9hbmdsZTphbmdsZV9jb21tb24iLAotICAgICAgIi8vdGhpcmRfcGFydHkvYW5nbGU6
YW5nbGVfdXRpbCIsCi0gICAgXQotICAgIHB1YmxpY19jb25maWdzID0gWyAiOmFuZ2xlX2RlcXBf
Z3Rlc3Rfc3VwcG9ydF9jb25maWciIF0KLSAgICBzb3VyY2VzID0gZGVxcF9neXBpLmRlcXBfZ3B1
X3Rlc3RfZXhwZWN0YXRpb25zX3NvdXJjZXMKLSAgICBzb3VyY2VzICs9IFsgIi8vZ3B1L2FuZ2xl
X2RlcXBfdGVzdHNfbWFpbi5jYyIgXQotCi0gICAgIyBUYWtlbiBmcm9tIGdwdS9CVUlMRC5nbgot
ICAgICMgVE9ETyhqbWFkaWxsKTogdGhpcyBzaG91bGQgYmUgaW4gYSBzaGFyZWQgbG9jYXRpb24K
LSAgICBpZiAoaXNfbGludXggJiYgIWlzX2Nocm9tZWNhc3QpIHsKLSAgICAgIGxpYnMgPSBbICJw
Y2kiIF0KLSAgICB9Ci0gIH0KLQotICBhcGlfbmFtZXMgPSBbCi0gICAgImdsZXMyIiwKLSAgICAi
Z2xlczMiLAotICAgICJnbGVzMzEiLAotICAgICJlZ2wiLAotICBdCi0gIHRhcmdldF9kZWZpbmVz
ID0gWwotICAgICJBTkdMRV9ERVFQX0dMRVMyX1RFU1RTIiwKLSAgICAiQU5HTEVfREVRUF9HTEVT
M19URVNUUyIsCi0gICAgIkFOR0xFX0RFUVBfR0xFUzMxX1RFU1RTIiwKLSAgICAiQU5HTEVfREVR
UF9FR0xfVEVTVFMiLAotICBdCi0gIHRhcmdldF9zb3VyY2VzID0gWwotICAgIGRlcXBfZ3lwaS5k
ZXFwX2dsZXMyX3NvdXJjZXMsCi0gICAgZGVxcF9neXBpLmRlcXBfZ2xlczNfc291cmNlcywKLSAg
ICBkZXFwX2d5cGkuZGVxcF9nbGVzMzFfc291cmNlcywKLSAgICBkZXFwX2d5cGkuZGVxcF9lZ2xf
c291cmNlcywKLSAgXQotCi0gIGZvcmVhY2goaW5kZXgsCi0gICAgICAgICAgWwotICAgICAgICAg
ICAgMCwKLSAgICAgICAgICAgIDEsCi0gICAgICAgICAgICAyLAotICAgICAgICAgICAgMywKLSAg
ICAgICAgICBdKSB7Ci0gICAgYXBpX25hbWUgPSBhcGlfbmFtZXNbaW5kZXhdCi0gICAgY29uZmln
X25hbWUgPSAiYW5nbGVfZGVxcF9saWIke2FwaV9uYW1lfV9jb25maWciCi0gICAgY29uZmlnKGNv
bmZpZ19uYW1lKSB7Ci0gICAgICBkZWZpbmVzID0gWyB0YXJnZXRfZGVmaW5lc1tpbmRleF0gXQot
ICAgIH0KLQotICAgIHNoYXJlZF9saWJyYXJ5X25hbWUgPSAiYW5nbGVfZGVxcF9saWIke2FwaV9u
YW1lfSIKLSAgICBzaGFyZWRfbGlicmFyeShzaGFyZWRfbGlicmFyeV9uYW1lKSB7Ci0gICAgICBk
ZXBzID0gWwotICAgICAgICAiOmFuZ2xlX2RlcXBfbGlidGVzdGVyIiwKLSAgICAgICAgIi8vdGhp
cmRfcGFydHkvYW5nbGU6YW5nbGVfdXRpbCIsCi0gICAgICBdCi0KLSAgICAgIGNvbmZpZ3MgLT0g
ZGVxcF91bmRlZmluZV9jb25maWdzCi0gICAgICBwdWJsaWNfY29uZmlncyA9IFsgIjoke2NvbmZp
Z19uYW1lfSIgXQotCi0gICAgICBzb3VyY2VzID0gcmViYXNlX3BhdGgodGFyZ2V0X3NvdXJjZXNb
aW5kZXhdLCAiLiIsICIuLi8uLiIpCi0gICAgICBzb3VyY2VzICs9IFsKLSAgICAgICAgImRlcXBf
c3VwcG9ydC9hbmdsZV9kZXFwX2xpYnRlc3Rlcl9tYWluLmNwcCIsCi0gICAgICAgICJkZXFwX3N1
cHBvcnQvdGN1QU5HTEVQbGF0Zm9ybS5jcHAiLAotICAgICAgICAiZGVxcF9zdXBwb3J0L3RjdUFO
R0xFUGxhdGZvcm0uaCIsCi0gICAgICBdCi0gICAgfQotCi0gICAgdGVzdF9uYW1lID0gImFuZ2xl
X2RlcXBfJHthcGlfbmFtZX1fdGVzdHMiCi0gICAgdGVzdCh0ZXN0X25hbWUpIHsKLSAgICAgIGRl
cHMgPSBbCi0gICAgICAgICI6JHtzaGFyZWRfbGlicmFyeV9uYW1lfSIsCi0gICAgICAgICI6YW5n
bGVfZGVxcF9ndGVzdF9zdXBwb3J0IiwKLSAgICAgIF0KLQotICAgICAgIyBNdXN0IGJlIGluY2x1
ZGVkIG91dHNpZGUgb2YgdGhlIHNvdXJjZSBzZXQgZm9yIHRoZSBkZWZpbmUKLSAgICAgIHNvdXJj
ZXMgPSBbCi0gICAgICAgICJkZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9ndGVzdC5jcHAiLAotICAg
ICAgXQotCi0gICAgICBkYXRhID0gWwotICAgICAgICAiZGVxcF9zdXBwb3J0L2RlcXBfJHthcGlf
bmFtZX1fdGVzdF9leHBlY3RhdGlvbnMudHh0IiwKLSAgICAgICAgIi4uLy4uLy4uL2RlcXAvc3Jj
L2FuZHJvaWQvY3RzL21hc3Rlci8ke2FwaV9uYW1lfS1tYXN0ZXIudHh0IiwKLSAgICAgICAgIi4u
Ly4uLy4uL2RlcXAvc3JjL2RhdGEvIiwKLSAgICAgIF0KLQotICAgICAgaWYgKGlzX2xpbnV4ICYm
ICFpc19jb21wb25lbnRfYnVpbGQpIHsKLSAgICAgICAgIyBTZXQgcnBhdGggdG8gZmluZCAqLnNv
IGZpbGVzIGV2ZW4gaW4gYSBub24tY29tcG9uZW50IGJ1aWxkLgotICAgICAgICBjb25maWdzICs9
IFsgIi8vYnVpbGQvY29uZmlnL2djYzpycGF0aF9mb3JfYnVpbHRfc2hhcmVkX2xpYnJhcmllcyIg
XQotICAgICAgfQotCi0gICAgICBpZiAoaXNfYW5kcm9pZCkgewotICAgICAgICB1c2VfbmF0aXZl
X2FjdGl2aXR5ID0gdHJ1ZQotICAgICAgfQotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL1dlYkdMLUNUUy1rbm93bi1mYWlsdXJlcy50
eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvV2ViR0wtQ1RTLWtub3duLWZh
aWx1cmVzLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY3ZjNhMjkxMjguLjAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9XZWJHTC1D
VFMta25vd24tZmFpbHVyZXMudHh0CisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1Lbm93
biBmYWlsdXJlcyBpbiB0aGUgV2ViR0wgQ1RTIDEuMC40LCB1c2luZyBDYW5hcnkgNDguMC4yNTQ3
LjAgd2l0aCBBTkdMRSBhMzM0NzViMzZmN2IwCi1odHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdp
c3RyeS93ZWJnbC9zZGsvdGVzdHMvd2ViZ2wtY29uZm9ybWFuY2UtdGVzdHMuaHRtbAotCi1jb25m
b3JtYW5jZS9leHRlbnNpb25zL2V4dC1zUkdCLmh0bWw6IDUgdGVzdHMgZmFpbGVkCi1jb25mb3Jt
YW5jZS9nbHNsL2J1Z3MvcG93LW9mLXNtYWxsLWNvbnN0YW50LWluLXVzZXItZGVmaW5lZC1mdW5j
dGlvbi5odG1sOiAxIHRlc3RzIGZhaWxlZAotY29uZm9ybWFuY2UvZ2xzbC9idWdzL3NhbXBsZXIt
c3RydWN0LWZ1bmN0aW9uLWFyZy5odG1sOiAxIHRlc3RzIGZhaWxlZAotY29uZm9ybWFuY2UvdGV4
dHVyZXMvbWlzYy9jdWJlLWluY29tcGxldGUtZmJvLmh0bWw6IDEgdGVzdHMgZmFpbGVkCi1kZXFw
L2RhdGEvZ2xlczIvc2hhZGVycy9mdW5jdGlvbnMuaHRtbDogOCB0ZXN0cyBmYWlsZWQKLWRlcXAv
ZGF0YS9nbGVzMi9zaGFkZXJzL3Njb3BpbmcuaHRtbDogNCB0ZXN0cyBmYWlsZWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV9lbmQyZW5kX3Rlc3Rz
Lmd5cGkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfZW5kMmVuZF90
ZXN0cy5neXBpCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2JlNDg2MGY4Ny4uMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2FuZ2xlX2Vu
ZDJlbmRfdGVzdHMuZ3lwaQorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0jIENvcHly
aWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0jIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLSMg
VGhpcyAuZ3lwaSBkZXNjcmliZXMgYWxsIG9mIHRoZSBzb3VyY2VzIGFuZCBkZXBlbmRlbmNpZXMg
dG8gYnVpbGQgYQotIyB1bmlmaWVkICJhbmdsZV9lbmQyZW5kX3Rlc3RzIiB0YXJnZXQsIHdoaWNo
IGNvbnRhaW5zIGFsbCBvZiB0aGUKLSMgdGVzdHMgdGhhdCBleGVyY2lzZSB0aGUgQU5HTEUgaW1w
bGVtZW50YXRpb24uIEl0IHJlcXVpcmVzIGEgcGFyZW50Ci0jIHRhcmdldCB0byBpbmNsdWRlIHRo
aXMgZ3lwaSBpbiBhbiBleGVjdXRhYmxlIHRhcmdldCBjb250YWluaW5nIGEKLSMgZ3Rlc3QgaGFy
bmVzcyBpbiBhIG1haW4uY3BwLgotCi17Ci0gICAgIyBFdmVyeXRoaW5nIGJlbG93IHRoaXMgaXMg
ZHVwbGljYXRlZCBpbiB0aGUgR04gYnVpbGQuCi0gICAgIyBJZiB5b3UgY2hhbmdlIGFueXRoaW5n
IGFsc28gY2hhbmdlIGFuZ2xlL3NyYy90ZXN0cy9CVUlMRC5nbgotICAgICd2YXJpYWJsZXMnOgot
ICAgIHsKLSAgICAgICAgJ2FuZ2xlX2VuZDJlbmRfdGVzdHNfc291cmNlcyc6Ci0gICAgICAgIFsK
LSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9CaW5kR2VuZXJh
dGVzUmVzb3VyY2VUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVz
dHMvZ2xfdGVzdHMvQmluZFVuaWZvcm1Mb2NhdGlvblRlc3QuY3BwJywKLSAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9CbGVuZE1pbk1heFRlc3QuY3BwJywKLSAg
ICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9CbGl0RnJhbWVidWZm
ZXJBTkdMRVRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9n
bF90ZXN0cy9CdWZmZXJEYXRhVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkv
c3JjL3Rlc3RzL2dsX3Rlc3RzL0J1aWx0aW5WYXJpYWJsZVRlc3QuY3BwJywKLSAgICAgICAgICAg
ICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9DbGVhclRlc3QuY3BwJywKLSAgICAg
ICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9Db2xvck1hc2tUZXN0LmNw
cCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29tcHV0
ZVNoYWRlclRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9n
bF90ZXN0cy9Db3B5Q29tcHJlc3NlZFRleHR1cmVUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChh
bmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29weVRleEltYWdlVGVzdC5jcHAnLAotICAg
ICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvcHlUZXh0dXJlVGVz
dC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0N1
YmVNYXBUZXh0dXJlVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0RlYnVnTWFya2VyVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVf
cGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RlYnVnVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RlcHRoU3RlbmNpbEZvcm1hdHNUZXN0LmNw
cCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvRGlzY2Fy
ZEZyYW1lYnVmZmVyRVhUVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3Jj
L3Rlc3RzL2dsX3Rlc3RzL0RyYXdCdWZmZXJzVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RyYXdFbGVtZW50c1Rlc3QuY3BwJywKLSAgICAg
ICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9EWFQxQ29tcHJlc3NlZFRl
eHR1cmVUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xf
dGVzdHMvRVRDVGV4dHVyZVRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9GZW5jZVN5bmNUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1lYnVmZmVyTWl4ZWRTYW1wbGVzVGVzdC5j
cHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1l
YnVmZmVyUmVuZGVyTWlwbWFwVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkv
c3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1lYnVmZmVyVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0dMU0xUZXN0LmNwcCcsCi0gICAgICAgICAg
ICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW1hZ2VUZXN0LmNwcCcsCi0gICAg
ICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW5jb21wbGV0ZVRleHR1
cmVUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVz
dHMvSW5kZXhCdWZmZXJPZmZzZXRUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW5kZXhlZFBvaW50c1Rlc3QuY3BwJywKLSAgICAgICAgICAg
ICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9JbnN0YW5jaW5nVGVzdC5jcHAnLAot
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0xpbmVMb29wVGVz
dC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL01h
eFRleHR1cmVTaXplVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rl
c3RzL2dsX3Rlc3RzL01pcG1hcFRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgp
L3NyYy90ZXN0cy9nbF90ZXN0cy9NdWx0aXNhbXBsZUNvbXBhdGliaWxpdHlUZXN0LmNwcCcsCi0g
ICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvbWVkaWEvcGl4ZWwu
aW5sJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9QYWNr
VW5wYWNrVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2ds
X3Rlc3RzL1BhdGhSZW5kZXJpbmdUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvdGVzdHMvZ2xfdGVzdHMvUGJ1ZmZlclRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFu
Z2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9QQk9FeHRlbnNpb25UZXN0LmNwcCcsCi0gICAg
ICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvUG9pbnRTcHJpdGVzVGVz
dC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1By
b3Zva2luZ1ZlcnRleFRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90
ZXN0cy9nbF90ZXN0cy9PYmplY3RBbGxvY2F0aW9uVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL09jY2x1c2lvblF1ZXJpZXNUZXN0LmNwcCcs
Ci0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvUHJvZ3JhbUJp
bmFyeVRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90
ZXN0cy9SZWFkUGl4ZWxzVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3Jj
L3Rlc3RzL2dsX3Rlc3RzL1JlbmRlcmVyVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVf
cGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1JvYnVzdENsaWVudE1lbW9yeVRlc3QuY3BwJywKLSAg
ICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9TaW1wbGVPcGVyYXRp
b25UZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVz
dHMvU2l4dGVlbkJwcFRleHR1cmVUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvdGVzdHMvZ2xfdGVzdHMvU1JHQlRleHR1cmVUZXN0LmNwcCcsCi0gICAgICAgICAgICAn
PChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvU3RhdGVDaGFuZ2VUZXN0LmNwcCcsCi0g
ICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVzdHMvU3dpenpsZVRlc3Qu
Y3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9TeW5j
UXVlcmllc1Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9n
bF90ZXN0cy9UZXh0dXJlVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3Jj
L3Rlc3RzL2dsX3Rlc3RzL1RpbWVyUXVlcmllc1Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFu
Z2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9UcmFuc2Zvcm1GZWVkYmFja1Rlc3QuY3BwJywK
LSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9Vbmlmb3JtQnVm
ZmVyVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rl
c3RzL1VuaWZvcm1UZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVz
dHMvZ2xfdGVzdHMvVW5wYWNrQWxpZ25tZW50VGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1VucGFja1Jvd0xlbmd0aC5jcHAnLAotICAgICAg
ICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL1ZlcnRleEF0dHJpYnV0ZVRl
c3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9nbF90ZXN0cy9W
aWV3cG9ydFRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9n
bF90ZXN0cy9XZWJHTENvbXBhdGliaWxpdHlUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmds
ZV9wYXRoKS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdC5j
cHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xD
b250ZXh0U2hhcmluZ1Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90
ZXN0cy9lZ2xfdGVzdHMvRUdMUXVlcnlDb250ZXh0VGVzdC5jcHAnLAotICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xSb2J1c3RuZXNzVGVzdC5jcHAnLAot
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xTYW5pdHlD
aGVja1Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9lZ2xf
dGVzdHMvRUdMU3VyZmFjZVRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3Ny
Yy90ZXN0cy90ZXN0X3V0aWxzL0FOR0xFVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVf
cGF0aCkvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvQU5HTEVUZXN0LmgnLAotICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdzLmNwcCcs
Ci0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90
ZXN0X2NvbmZpZ3MuaCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvdGVz
dF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmNwcCcsCi0gICAgICAgICAgICAnPChhbmds
ZV9wYXRoKS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmgnLAot
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvZ2xfcmFpaS5o
JywKLSAgICAgICAgXSwKLSAgICAgICAgJ2FuZ2xlX2VuZDJlbmRfdGVzdHNfd2luX3NvdXJjZXMn
OgotICAgICAgICBbCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvZ2xfdGVz
dHMvRDNESW1hZ2VGb3JtYXRDb252ZXJzaW9uVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0QzRDExRW11bGF0ZWRJbmRleGVkQnVmZmVyVGVz
dC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2dsX3Rlc3RzL0Qz
RDExRm9ybWF0VGFibGVzVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3Jj
L3Rlc3RzL2dsX3Rlc3RzL0QzRDExSW5wdXRMYXlvdXRDYWNoZVRlc3QuY3BwJywKLSAgICAgICAg
ICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMRGV2aWNlVGVzdC5jcHAn
LAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xQcmVz
ZW50UGF0aEQzRDExVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rl
c3RzL2VnbF90ZXN0cy9FR0xTdHJlYW1UZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9w
YXRoKS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFN5bmNDb250cm9sVGVzdC5jcHAnLAotICAgICAg
ICAgICAgIyBUT0RPKGN3YWxsZXopIGZvciBMaW51eCwgcmVxdWlyZXMgYSBwb3J0YWJsZSBpbXBs
ZW1lbnRhdGlvbiBvZiB0aHJlYWRzCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVz
dHMvZWdsX3Rlc3RzL0VHTFRocmVhZFRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3Bh
dGgpL3NyYy90ZXN0cy9lZ2xfdGVzdHMvbWVkaWEveXV2dGVzdC5pbmwnLAotICAgICAgICBdLAot
ICAgICAgICAnYW5nbGVfZW5kMmVuZF90ZXN0c194MTFfc291cmNlcyc6Ci0gICAgICAgIFsKLSAg
ICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMWDExVmlzdWFs
VGVzdC5jcHAnLAotICAgICAgICBdLAotICAgIH0sCi0gICAgJ2RlcGVuZGVuY2llcyc6Ci0gICAg
WwotICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmxpYkFOR0xFJywKLSAgICAg
ICAgJzwoYW5nbGVfcGF0aCkvc3JjL2FuZ2xlLmd5cDpsaWJFR0wnLAotICAgICAgICAnPChhbmds
ZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmxpYkdMRVN2MicsCi0gICAgICAgICc8KGFuZ2xlX3BhdGgp
L3NyYy90ZXN0cy90ZXN0cy5neXA6YW5nbGVfdGVzdF9zdXBwb3J0JywKLSAgICAgICAgJzwoYW5n
bGVfcGF0aCkvdXRpbC91dGlsLmd5cDphbmdsZV91dGlsJywKLSAgICBdLAotICAgICdpbmNsdWRl
X2RpcnMnOgotICAgIFsKLSAgICAgICAgJzwoYW5nbGVfcGF0aCkvaW5jbHVkZScsCi0gICAgICAg
ICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cycKLSAgICBdLAotICAgICdzb3VyY2VzJzoKLSAgICBb
Ci0gICAgICAgICc8QChhbmdsZV9lbmQyZW5kX3Rlc3RzX3NvdXJjZXMpJywKLSAgICBdLAotICAg
ICdjb25kaXRpb25zJzoKLSAgICBbCi0gICAgICAgIFsnT1M9PSJ3aW4iJywKLSAgICAgICAgewot
ICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICc8
QChhbmdsZV9lbmQyZW5kX3Rlc3RzX3dpbl9zb3VyY2VzKScsCi0gICAgICAgICAgICBdLAotICAg
ICAgICB9XSwKLSAgICAgICAgWyd1c2VfeDExPT0xJywKLSAgICAgICAgewotICAgICAgICAgICAg
J3NvdXJjZXMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICc8QChhbmdsZV9lbmQy
ZW5kX3Rlc3RzX3gxMV9zb3VyY2VzKScsCi0gICAgICAgICAgICBdLAotICAgICAgICB9XSwKLSAg
ICBdCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5n
bGVfZW5kMmVuZF90ZXN0c19tYWluLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9hbmdsZV9lbmQyZW5kX3Rlc3RzX21haW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiNGI5ZjAyZjRkYy4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2FuZ2xlX2VuZDJlbmRfdGVzdHNfbWFpbi5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwxNiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEzIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0v
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0
LmgiCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KQotewotICAgIHRlc3Rpbmc6OkluaXRHb29nbGVUZXN0KCZhcmdjLCBh
cmd2KTsKLSAgICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52aXJvbm1lbnQobmV3IEFOR0xFVGVz
dEVudmlyb25tZW50KCkpOwotICAgIGludCBydCA9IFJVTl9BTExfVEVTVFMoKTsKLSAgICByZXR1
cm4gcnQ7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
YW5nbGVfcGVyZnRlc3RzLmd5cGkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
YW5nbGVfcGVyZnRlc3RzLmd5cGkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhODZk
YTljMDljLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvYW5nbGVfcGVyZnRlc3RzLmd5cGkKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0j
IENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLSMK
LSMgYW5nbGVfcGVyZnRlc3RzLmd5cGk6Ci0jCi0jIFRoaXMgLmd5cGkgZGVzY3JpYmVzIGFsbCBv
ZiB0aGUgc291cmNlcyBhbmQgZGVwZW5kZW5jaWVzIHRvIGJ1aWxkIGEKLSMgdW5pZmllZCAiYW5n
bGVfcGVyZnRlc3RzIiB0YXJnZXQsIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiBBTkdMRSdzCi0jIHBl
cmZvcm1hbmNlIHRlc3RzIChidWZmZXIgdXBkYXRlcywgdGV4dHVyZSB1cGRhdGVzLCBkcmF3IGNh
bGxzLCBldGMpCi0jIEl0IHJlcXVpcmVzIGEgcGFyZW50IHRhcmdldCB0byBpbmNsdWRlIHRoaXMg
Z3lwaSBpbiBhbiBleGVjdXRhYmxlCi0jIHRhcmdldCBjb250YWluaW5nIGEgZ3Rlc3QgaGFybmVz
cyBpbiBhIG1haW4uY3BwLgotCi17Ci0gICAgJ3ZhcmlhYmxlcyc6Ci0gICAgewotICAgICAgICAn
YW5nbGVfcGVyZl90ZXN0c19zb3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdC5jcHAnLAotICAgICAg
ICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdC5o
JywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0J1ZmZl
clN1YkRhdGEuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wZXJm
X3Rlc3RzL0RyYXdDYWxsUGVyZi5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3Jj
L3Rlc3RzL3BlcmZfdGVzdHMvRHluYW1pY1Byb21vdGlvblBlcmZUZXN0LmNwcCcsCi0gICAgICAg
ICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9FR0xJbml0aWFsaXplUGVy
Zi5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMv
SW5kZXhDb252ZXJzaW9uUGVyZi5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3Jj
L3Rlc3RzL3BlcmZfdGVzdHMvSW5zdGFuY2luZ1BlcmYuY3BwJywKLSAgICAgICAgICAgICc8KGFu
Z2xlX3BhdGgpL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0ludGVybGVhdmVkQXR0cmlidXRlRGF0YS5j
cHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvUG9p
bnRTcHJpdGVzLmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcGVy
Zl90ZXN0cy9UZXhTdWJJbWFnZS5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3Jj
L3Rlc3RzL3BlcmZfdGVzdHMvVGV4dHVyZVNhbXBsaW5nLmNwcCcsCi0gICAgICAgICAgICAnPChh
bmdsZV9wYXRoKS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9UZXh0dXJlc1BlcmYuY3BwJywKLSAgICAg
ICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL1VuaWZvcm1zUGVyZi5j
cHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvdGhp
cmRfcGFydHkvcGVyZi9wZXJmX3Rlc3QuY2MnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkv
c3JjL3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRfcGFydHkvcGVyZi9wZXJmX3Rlc3QuaCcsCi0gICAg
ICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2Nv
bmZpZ3MuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy90ZXN0X3V0
aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5oJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3Ny
Yy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuY3BwJywKLSAgICAgICAg
ICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFu
dGlhdGUuaCcsCi0gICAgICAgIF0sCi0gICAgICAgICdhbmdsZV9wZXJmX3Rlc3RzX3dpbl9zb3Vy
Y2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3Bl
cmZfdGVzdHMvSW5kZXhEYXRhTWFuYWdlclRlc3QuY3BwJywKLSAgICAgICAgXQotICAgIH0sCi0g
ICAgIyBFdmVyeXRoaW5nIGJlbG93IChleGNlcHQgV2luUlQtcmVsYXRlZCBjb25maWcpIG11c3Qg
YmUgYWxzbyBtYWludGFpbmVkIGZvciBHTi4KLSAgICAjIElmIHlvdSBjaGFuZ2UgYW55dGhpbmcg
YmVsb3csIGFsc28gdXBkYXRlIGFuZ2xlL3NyYy90ZXN0cy9CVUlMRC5nbi4KLSAgICAnZGVwZW5k
ZW5jaWVzJzoKLSAgICBbCi0gICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9hbmdsZS5neXA6YW5n
bGVfY29tbW9uJywKLSAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2FuZ2xlLmd5cDpsaWJBTkdM
RScsICMgZm9yIHVuaXQgdGVzdGluZwotICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUu
Z3lwOmxpYkdMRVN2MicsCi0gICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9hbmdsZS5neXA6bGli
RUdMJywKLSAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3Rlc3RzLmd5cDphbmdsZV90
ZXN0X3N1cHBvcnQnLAotICAgICAgICAnPChhbmdsZV9wYXRoKS91dGlsL3V0aWwuZ3lwOmFuZ2xl
X3V0aWwnLAotICAgIF0sCi0gICAgJ2luY2x1ZGVfZGlycyc6Ci0gICAgWwotICAgICAgICAnPChh
bmdsZV9wYXRoKS9pbmNsdWRlJywKLSAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzJwot
ICAgIF0sCi0gICAgJ3NvdXJjZXMnOgotICAgIFsKLSAgICAgICAgJzxAKGFuZ2xlX3BlcmZfdGVz
dHNfc291cmNlcyknLAotICAgIF0sCi0gICAgJ2NvbmRpdGlvbnMnOgotICAgIFsKLSAgICAgICAg
WydPUz09IndpbiInLAotICAgICAgICB7Ci0gICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAg
ICAgICBbCi0gICAgICAgICAgICAgICAgJzxAKGFuZ2xlX3BlcmZfdGVzdHNfd2luX3NvdXJjZXMp
JywKLSAgICAgICAgICAgIF0sCi0gICAgICAgIH1dLAotICAgIF0KLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV9wZXJmdGVzdHNfbWFpbi5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfcGVyZnRlc3RzX21haW4u
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGY4ZGFjOWZlZC4uMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2FuZ2xlX3BlcmZ0ZXN0
c19tYWluLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLS8vCi0vLyBDb3B5cmln
aHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwot
Ly8gYW5nbGVfcGVyZnRlc3RzX21haW4uY3BwCi0vLyAgIEVudHJ5IHBvaW50IGZvciB0aGUgZ3Rl
c3QtYmFzZWQgcGVyZm9ybWFuY2UgdGVzdHMuCi0vLwotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KLQotaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotewotICAgIHRlc3Rpbmc6Oklu
aXRHb29nbGVUZXN0KCZhcmdjLCBhcmd2KTsKLSAgICB0ZXN0aW5nOjpBZGRHbG9iYWxUZXN0RW52
aXJvbm1lbnQobmV3IHRlc3Rpbmc6OkVudmlyb25tZW50KCkpOwotICAgIGludCBydCA9IFJVTl9B
TExfVEVTVFMoKTsKLSAgICByZXR1cm4gcnQ7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfdW5pdHRlc3RzLmd5cGkgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfdW5pdHRlc3RzLmd5cGkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGY3M2M5ZGMxOWFjLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfdW5pdHRlc3RzLmd5cGkKKysrIC9kZXYvbnVs
bApAQCAtMSwxNTIgKzAsMCBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotIyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotCi0jIFRoaXMgLmd5cGkgZGVzY3JpYmVzIGFsbCBvZiB0
aGUgc291cmNlcyBhbmQgZGVwZW5kZW5jaWVzIHRvIGJ1aWxkIGEKLSMgdW5pZmllZCAiYW5nbGVf
dW5pdHRlc3RzIiB0YXJnZXQsIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiBBTkdMRSdzCi0jIHRlc3Rz
IHRoYXQgZG9uJ3QgcmVxdWlyZSBhIGZ1bGx5IGZ1bmN0aW9uYWwgQU5HTEUgaW4gb3JkZXIgdG8g
cnVuCi0jIChjb21waWxlciB0ZXN0cywgcHJlcHJvY2Vzc29yIHRlc3RzLCBldGMuKS4gSXQgcmVx
dWlyZXMgYSBwYXJlbnQKLSMgdGFyZ2V0IHRvIGluY2x1ZGUgdGhpcyBneXBpIGluIGFuIGV4ZWN1
dGFibGUgdGFyZ2V0IGNvbnRhaW5pbmcgYQotIyBndGVzdCBoYXJuZXNzIGluIGEgbWFpbi5jcHAu
Ci0KLXsKLSAgICAndmFyaWFibGVzJzoKLSAgICB7Ci0gICAgICAgICdhbmdsZV91bml0dGVzdHNf
c291cmNlcyc6Ci0gICAgICAgIFsKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9jb21t
b24vQml0U2V0SXRlcmF0b3JfdW5pdHRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3Bh
dGgpL3NyYy9jb21tb24vT3B0aW9uYWxfdW5pdHRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFu
Z2xlX3BhdGgpL3NyYy9jb21tb24vbWF0aHV0aWxfdW5pdHRlc3QuY3BwJywKLSAgICAgICAgICAg
ICc8KGFuZ2xlX3BhdGgpL3NyYy9jb21tb24vbWF0cml4X3V0aWxzX3VuaXR0ZXN0LmNwcCcsCi0g
ICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvY29tbW9uL3N0cmluZ191dGlsc191bml0dGVz
dC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2NvbW1vbi91dGlsaXRpZXNf
dW5pdHRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9saWJBTkdMRS9C
aW5hcnlTdHJlYW1fdW5pdHRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3Ny
Yy9saWJBTkdMRS9Db25maWdfdW5pdHRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3Bh
dGgpL3NyYy9saWJBTkdMRS9GZW5jZV91bml0dGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL2xpYkFOR0xFL0hhbmRsZUFsbG9jYXRvcl91bml0dGVzdC5jcHAnLAotICAg
ICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2xpYkFOR0xFL0hhbmRsZVJhbmdlQWxsb2NhdG9y
X3VuaXR0ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5HTEUv
SW1hZ2VfdW5pdHRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9saWJB
TkdMRS9JbWFnZUluZGV4SXRlcmF0b3JfdW5pdHRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFu
Z2xlX3BhdGgpL3NyYy9saWJBTkdMRS9Qcm9ncmFtX3VuaXR0ZXN0LmNwcCcsCi0gICAgICAgICAg
ICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5HTEUvUmVzb3VyY2VNYW5hZ2VyX3VuaXR0ZXN0LmNw
cCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5HTEUvU3VyZmFjZV91bml0
dGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2xpYkFOR0xFL1RyYW5z
Zm9ybUZlZWRiYWNrX3VuaXR0ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvbGliQU5HTEUvcmVuZGVyZXIvQnVmZmVySW1wbF9tb2NrLmgnLAotICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0ZyYW1lYnVmZmVySW1wbF9tb2NrLmgn
LAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1Byb2dy
YW1JbXBsX21vY2suaCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvUmVuZGVyYnVmZmVySW1wbF9tb2NrLmgnLAotICAgICAgICAgICAgJzwoYW5nbGVf
cGF0aCkvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL0ltYWdlSW1wbF9tb2NrLmgnLAotICAgICAgICAg
ICAgJzwoYW5nbGVfcGF0aCkvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL1RleHR1cmVJbXBsX21vY2su
aCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvVHJh
bnNmb3JtRmVlZGJhY2tJbXBsX21vY2suaCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvbGliQU5HTEUvc2lnbmFsX3V0aWxzX3VuaXR0ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChh
bmdsZV9wYXRoKS9zcmMvbGliQU5HTEUvdmFsaWRhdGlvbkVTX3VuaXR0ZXN0LmNwcCcsCi0gICAg
ICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvYW5nbGVfdW5pdHRlc3RzX3V0aWxzLmgn
LAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0FQ
SV90ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvY29tcGls
ZXJfdGVzdHMvQ29sbGVjdFZhcmlhYmxlc190ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmds
ZV9wYXRoKS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvQ29uc3RhbnRGb2xkaW5nX3Rlc3QuY3Bw
JywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9E
ZWJ1Z1NoYWRlclByZWNpc2lvbl90ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0X3Rl
c3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90
ZXN0cy9FeHByZXNzaW9uTGltaXRfdGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0
aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0VYVF9ibGVuZF9mdW5jX2V4dGVuZGVkX3Rlc3Qu
Y3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0
cy9GcmFnRGVwdGhfdGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rl
c3RzL2NvbXBpbGVyX3Rlc3RzL0dMU0xDb21wYXRpYmlsaXR5T3V0cHV0X3Rlc3QuY3BwJywKLSAg
ICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9JbnRlcm1O
b2RlX3Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21w
aWxlcl90ZXN0cy9NYWxmb3JtZWRTaGFkZXJfdGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5n
bGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL05WX2RyYXdfYnVmZmVyc190ZXN0LmNw
cCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMv
UGFja19VbnBhY2tfdGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rl
c3RzL2NvbXBpbGVyX3Rlc3RzL1BydW5lRW1wdHlEZWNsYXJhdGlvbnNfdGVzdC5jcHAnLAotICAg
ICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1BydW5lVW51
c2VkRnVuY3Rpb25zX3Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90
ZXN0cy9jb21waWxlcl90ZXN0cy9RdWFsaWZpY2F0aW9uT3JkZXJFU1NMMzFfdGVzdC5jcHAnLAot
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1F1YWxp
ZmljYXRpb25PcmRlcl90ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMv
dGVzdHMvY29tcGlsZXJfdGVzdHMvUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25fdGVzdC5jcHAnLAot
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1JlbW92
ZVBvd190ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvY29t
cGlsZXJfdGVzdHMvU2hhZGVyRXh0ZW5zaW9uX3Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFu
Z2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9TaGFkZXJWYXJpYWJsZV90ZXN0LmNw
cCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMv
U2hDb21waWxlX3Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0
cy9jb21waWxlcl90ZXN0cy9UeXBlVHJhY2tpbmdfdGVzdC5jcHAnLAotICAgICAgICAgICAgJzwo
YW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1ZhcmlhYmxlUGFja2VyX3Rlc3Qu
Y3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0
cy9Xb3JrR3JvdXBTaXplX3Rlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3Ny
Yy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvY2hhcl90ZXN0LmNwcCcsCi0gICAgICAgICAgICAn
PChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2NvbW1lbnRfdGVzdC5j
cHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90
ZXN0cy9kZWZpbmVfdGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rl
c3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9lcnJvcl90ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChh
bmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2V4dGVuc2lvbl90ZXN0LmNw
cCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rl
c3RzL2lkZW50aWZpZXJfdGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3Jj
L3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9pZl90ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChh
bmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2lucHV0X3Rlc3QuY3BwJywK
LSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMv
bG9jYXRpb25fdGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3Rz
L3ByZXByb2Nlc3Nvcl90ZXN0cy9Nb2NrRGlhZ25vc3RpY3MuaCcsCi0gICAgICAgICAgICAnPChh
bmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL01vY2tEaXJlY3RpdmVIYW5k
bGVyLmgnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nv
cl90ZXN0cy9udW1iZXJfdGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3Jj
L3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9vcGVyYXRvcl90ZXN0LmNwcCcsCi0gICAgICAgICAg
ICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL3ByYWdtYV90ZXN0
LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29y
X3Rlc3RzL1ByZXByb2Nlc3NvclRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgp
L3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvUHJlcHJvY2Vzc29yVGVzdC5oJywKLSAgICAg
ICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvc3BhY2Vf
dGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3ByZXByb2Nl
c3Nvcl90ZXN0cy90b2tlbl90ZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9z
cmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL3ZlcnNpb25fdGVzdC5jcHAnLAotICAgICAgICAg
ICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5jcHAn
LAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvY29tcGls
ZXJfdGVzdC5oJywKLSAgICAgICAgXSwKLSAgICAgICAgIyBUT0RPKGptYWRpbGwpOiBzaG91bGQg
cHJvYmFibHkgY2FsbCB0aGlzIHdpbmRvd3Mgc291cmNlcwotICAgICAgICAnYW5nbGVfdW5pdHRl
c3RzX2hsc2xfc291cmNlcyc6Ci0gICAgICAgIFsKLSAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgp
L3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9VbnJvbGxGbGF0dGVuX3Rlc3QuY3BwJywKLSAgICAg
ICAgXSwKLSAgICB9LAotICAgICMgRXZlcnl0aGluZyBiZWxvdyB0aGlzIGJ1dCB0aGUgV2luUlQg
Y29uZmlndXJhdGlvbiBpcyBkdXBsaWNhdGVkIGluIHRoZSBHTiBidWlsZC4KLSAgICAjIElmIHlv
dSBjaGFuZ2UgYW55dGhpbmcgYWxzbyBjaGFuZ2UgYW5nbGUvc3JjL3Rlc3RzL0JVSUxELmduCi0g
ICAgJ2RlcGVuZGVuY2llcyc6Ci0gICAgWwotICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5n
bGUuZ3lwOmxpYkFOR0xFJywKLSAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2FuZ2xlLmd5cDpw
cmVwcm9jZXNzb3InLAotICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOnRyYW5z
bGF0b3Jfc3RhdGljJywKLSAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL3Rlc3RzLmd5
cDphbmdsZV90ZXN0X3N1cHBvcnQnLAotICAgIF0sCi0gICAgJ2luY2x1ZGVfZGlycyc6Ci0gICAg
WwotICAgICAgICAnPChhbmdsZV9wYXRoKS9pbmNsdWRlJywKLSAgICAgICAgJzwoYW5nbGVfcGF0
aCkvc3JjJywKLSAgICBdLAotICAgICdzb3VyY2VzJzoKLSAgICBbCi0gICAgICAgICc8QChhbmds
ZV91bml0dGVzdHNfc291cmNlcyknLAotICAgIF0sCi0gICAgJ2NvbmRpdGlvbnMnOgotICAgIFsK
LSAgICAgICAgWydhbmdsZV9idWlsZF93aW5ydD09MScsCi0gICAgICAgIHsKLSAgICAgICAgICAg
ICdzb3VyY2VzJzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRo
KS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L0NvcmVXaW5kb3dOYXRpdmVX
aW5kb3dfdW5pdHRlc3QuY3BwJywKLSAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMv
bGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL3dpbnJ0L1N3YXBDaGFpblBhbmVsTmF0aXZlV2lu
ZG93X3VuaXR0ZXN0LmNwcCcsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2RlZmluZXMn
OgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICdBTkdMRV9FTkFCTEVfRDNEMTEnLAot
ICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICdtc3ZzX3NldHRpbmdzJzoKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAnVkNMaW5rZXJUb29sJzoKLSAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICdBZGRpdGlvbmFsRGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAg
ICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJ3J1bnRpbWVvYmplY3QubGliJywK
LSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
fSwKLSAgICAgICAgfV0sCi0gICAgICAgIFsnT1M9PSJ3aW4iJywKLSAgICAgICAgewotICAgICAg
ICAgICAgIyBUT0RPKGN3YWxsZXopOiBtYWtlIHRoaXMgYW5nbGVfZW5hYmxlX2hsc2wgaW5zdGVh
ZCAocmVxdWlyZXMgZ3lwIGZpbGUgcmVmYWN0b3JpbmcpCi0gICAgICAgICAgICAnZGVmaW5lcyc6
Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgJ0FOR0xFX0VOQUJMRV9ITFNMJywKLSAg
ICAgICAgICAgIF0sCi0gICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgJzxAKGFuZ2xlX3VuaXR0ZXN0c19obHNsX3NvdXJjZXMpJywKLSAgICAgICAg
ICAgIF0sCi0gICAgICAgIH1dLAotICAgIF0sCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvYW5nbGVfdW5pdHRlc3RzX21haW4uY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2FuZ2xlX3VuaXR0ZXN0c19tYWluLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzUyZGYxNDg3ZDAuLjAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9hbmdsZV91bml0dGVzdHNfbWFpbi5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDEz
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLWNsYXNz
IENvbXBpbGVyVGVzdEVudmlyb25tZW50IDogcHVibGljIHRlc3Rpbmc6OkVudmlyb25tZW50Ci17
Ci0gIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQotICAgIHsKLSAgICAgICAgaWYg
KCFTaEluaXRpYWxpemUoKSkKLSAgICAgICAgewotICAgICAgICAgICAgRkFJTCgpIDw8ICJGYWls
ZWQgdG8gaW5pdGlhbGl6ZSB0aGUgY29tcGlsZXIuIjsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCi0gICAgewotICAgICAgICBpZiAoIVNoRmluYWxpemUo
KSkKLSAgICAgICAgewotICAgICAgICAgICAgRkFJTCgpIDw8ICJGYWlsZWQgdG8gZmluYWxpemUg
dGhlIGNvbXBpbGVyLiI7Ci0gICAgICAgIH0KLSAgICB9Ci19OwotCi1pbnQgbWFpbihpbnQgYXJn
YywgY2hhcioqIGFyZ3YpCi17Ci0gICAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFyZ2MsIGFy
Z3YpOwotICAgIHRlc3Rpbmc6OkFkZEdsb2JhbFRlc3RFbnZpcm9ubWVudChuZXcgQ29tcGlsZXJU
ZXN0RW52aXJvbm1lbnQoKSk7Ci0gICAgaW50IHJ0ID0gUlVOX0FMTF9URVNUUygpOwotICAgIHJl
dHVybiBydDsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9hbmdsZV91bml0dGVzdHNfdXRpbHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9hbmdsZV91bml0dGVzdHNfdXRpbHMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNDg3YzE2ODVjZWYuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9hbmdsZV91bml0dGVzdHNfdXRpbHMuaAorKysgL2Rldi9udWxsCkBAIC0xLDEy
NCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gYW5nbGVfdW5pdHRlc3RzX3V0aWxzLmg6Ci0vLyAgIEhl
bHBlcnMgZm9yIG1vY2tpbmcgYW5kIHVuaXQgdGVzdGluZy4KLQotI2lmbmRlZiBURVNUU19BTkdM
RV9VTklUVEVTVFNfVVRJTFNfSF8KLSNkZWZpbmUgVEVTVFNfQU5HTEVfVU5JVFRFU1RTX1VUSUxT
X0hfCi0KLSNpbmNsdWRlICJsaWJBTkdMRS9TdXJmYWNlLmgiCi0jaW5jbHVkZSAibGliQU5HTEUv
cmVuZGVyZXIvQ29udGV4dEltcGwuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9FR0xJ
bXBsRmFjdG9yeS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL0dMSW1wbEZhY3Rvcnku
aCIKLQotbmFtZXNwYWNlIHJ4Ci17Ci0KLS8vIFVzZWZ1bCB3aGVuIG1vY2tpbmcgYSBwYXJ0IG9m
IHRoZSBHTEltcGxGYWN0b3J5IGNsYXNzCi1jbGFzcyBOdWxsRmFjdG9yeSA6IHB1YmxpYyBHTElt
cGxGYWN0b3J5Ci17Ci0gIHB1YmxpYzoKLSAgICBOdWxsRmFjdG9yeSgpIHt9Ci0KLSAgICAvLyBT
aGFkZXIgY3JlYXRpb24KLSAgICBDb21waWxlckltcGwgKmNyZWF0ZUNvbXBpbGVyKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotICAgIFNoYWRlckltcGwgKmNyZWF0ZVNoYWRlcihjb25z
dCBnbDo6U2hhZGVyU3RhdGUgJmRhdGEpIG92ZXJyaWRlIHsgcmV0dXJuIG51bGxwdHI7IH0KLSAg
ICBQcm9ncmFtSW1wbCAqY3JlYXRlUHJvZ3JhbShjb25zdCBnbDo6UHJvZ3JhbVN0YXRlICZkYXRh
KSBvdmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0KLSAgICAvLyBGcmFtZWJ1ZmZlciBjcmVh
dGlvbgotICAgIEZyYW1lYnVmZmVySW1wbCAqY3JlYXRlRnJhbWVidWZmZXIoY29uc3QgZ2w6OkZy
YW1lYnVmZmVyU3RhdGUgJmRhdGEpIG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICB9Ci0KLSAgICAvLyBUZXh0dXJlIGNyZWF0aW9uCi0gICAgVGV4dHVyZUltcGwg
KmNyZWF0ZVRleHR1cmUoY29uc3QgZ2w6OlRleHR1cmVTdGF0ZSAmZGF0YSkgb3ZlcnJpZGUgeyBy
ZXR1cm4gbnVsbHB0cjsgfQotCi0gICAgLy8gUmVuZGVyYnVmZmVyIGNyZWF0aW9uCi0gICAgUmVu
ZGVyYnVmZmVySW1wbCAqY3JlYXRlUmVuZGVyYnVmZmVyKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVs
bHB0cjsgfQotCi0gICAgLy8gQnVmZmVyIGNyZWF0aW9uCi0gICAgQnVmZmVySW1wbCAqY3JlYXRl
QnVmZmVyKCkgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQotCi0gICAgLy8gVmVydGV4IEFy
cmF5IGNyZWF0aW9uCi0gICAgVmVydGV4QXJyYXlJbXBsICpjcmVhdGVWZXJ0ZXhBcnJheShjb25z
dCBnbDo6VmVydGV4QXJyYXlTdGF0ZSAmZGF0YSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLQotICAgIC8vIFF1ZXJ5IGFuZCBGZW5jZSBjcmVhdGlvbgot
ICAgIFF1ZXJ5SW1wbCAqY3JlYXRlUXVlcnkoR0xlbnVtIHR5cGUpIG92ZXJyaWRlIHsgcmV0dXJu
IG51bGxwdHI7IH0KLSAgICBGZW5jZU5WSW1wbCAqY3JlYXRlRmVuY2VOVigpIG92ZXJyaWRlIHsg
cmV0dXJuIG51bGxwdHI7IH0KLSAgICBGZW5jZVN5bmNJbXBsICpjcmVhdGVGZW5jZVN5bmMoKSBv
dmVycmlkZSB7IHJldHVybiBudWxscHRyOyB9Ci0KLSAgICAvLyBUcmFuc2Zvcm0gRmVlZGJhY2sg
Y3JlYXRpb24KLSAgICBUcmFuc2Zvcm1GZWVkYmFja0ltcGwgKmNyZWF0ZVRyYW5zZm9ybUZlZWRi
YWNrKGNvbnN0IGdsOjpUcmFuc2Zvcm1GZWVkYmFja1N0YXRlICZzdGF0ZSkgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIC8vIFNhbXBsZXIgb2Jq
ZWN0IGNyZWF0aW9uCi0gICAgU2FtcGxlckltcGwgKmNyZWF0ZVNhbXBsZXIoKSBvdmVycmlkZSB7
IHJldHVybiBudWxscHRyOyB9Ci0KLSAgICBzdGQ6OnZlY3RvcjxQYXRoSW1wbCAqPiBjcmVhdGVQ
YXRocyhHTHNpemVpIHJhbmdlKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6
dmVjdG9yPFBhdGhJbXBsICo+KCk7Ci0gICAgfQotfTsKLQotLy8gQSBjbGFzcyB3aXRoIGFsbCB0
aGUgZmFjdG9yeSBtZXRob2RzIG1vY2tlZC4KLWNsYXNzIE1vY2tHTEZhY3RvcnkgOiBwdWJsaWMg
R0xJbXBsRmFjdG9yeQotewotICBwdWJsaWM6Ci0gICAgTU9DS19NRVRIT0QxKGNyZWF0ZUNvbnRl
eHQsIENvbnRleHRJbXBsICooY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmKSk7Ci0gICAgTU9DS19N
RVRIT0QwKGNyZWF0ZUNvbXBpbGVyLCBDb21waWxlckltcGwgKigpKTsKLSAgICBNT0NLX01FVEhP
RDEoY3JlYXRlU2hhZGVyLCBTaGFkZXJJbXBsICooY29uc3QgZ2w6OlNoYWRlclN0YXRlICYpKTsK
LSAgICBNT0NLX01FVEhPRDEoY3JlYXRlUHJvZ3JhbSwgUHJvZ3JhbUltcGwgKihjb25zdCBnbDo6
UHJvZ3JhbVN0YXRlICYpKTsKLSAgICBNT0NLX01FVEhPRDEoY3JlYXRlRnJhbWVidWZmZXIsIEZy
YW1lYnVmZmVySW1wbCAqKGNvbnN0IGdsOjpGcmFtZWJ1ZmZlclN0YXRlICYpKTsKLSAgICBNT0NL
X01FVEhPRDEoY3JlYXRlVGV4dHVyZSwgVGV4dHVyZUltcGwgKihjb25zdCBnbDo6VGV4dHVyZVN0
YXRlICYpKTsKLSAgICBNT0NLX01FVEhPRDAoY3JlYXRlUmVuZGVyYnVmZmVyLCBSZW5kZXJidWZm
ZXJJbXBsICooKSk7Ci0gICAgTU9DS19NRVRIT0QwKGNyZWF0ZUJ1ZmZlciwgQnVmZmVySW1wbCAq
KCkpOwotICAgIE1PQ0tfTUVUSE9EMShjcmVhdGVWZXJ0ZXhBcnJheSwgVmVydGV4QXJyYXlJbXBs
ICooY29uc3QgZ2w6OlZlcnRleEFycmF5U3RhdGUgJikpOwotICAgIE1PQ0tfTUVUSE9EMShjcmVh
dGVRdWVyeSwgUXVlcnlJbXBsICooR0xlbnVtIHR5cGUpKTsKLSAgICBNT0NLX01FVEhPRDAoY3Jl
YXRlRmVuY2VOViwgRmVuY2VOVkltcGwgKigpKTsKLSAgICBNT0NLX01FVEhPRDAoY3JlYXRlRmVu
Y2VTeW5jLCBGZW5jZVN5bmNJbXBsICooKSk7Ci0gICAgTU9DS19NRVRIT0QxKGNyZWF0ZVRyYW5z
Zm9ybUZlZWRiYWNrLAotICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1GZWVkYmFja0ltcGwgKihj
b25zdCBnbDo6VHJhbnNmb3JtRmVlZGJhY2tTdGF0ZSAmKSk7Ci0gICAgTU9DS19NRVRIT0QwKGNy
ZWF0ZVNhbXBsZXIsIFNhbXBsZXJJbXBsICooKSk7Ci0gICAgTU9DS19NRVRIT0QxKGNyZWF0ZVBh
dGhzLCBzdGQ6OnZlY3RvcjxQYXRoSW1wbCAqPihHTHNpemVpKSk7Ci19OwotCi1jbGFzcyBNb2Nr
RUdMRmFjdG9yeSA6IHB1YmxpYyBFR0xJbXBsRmFjdG9yeQotewotICBwdWJsaWM6Ci0gICAgTU9D
S19NRVRIT0Q0KGNyZWF0ZVdpbmRvd1N1cmZhY2UsCi0gICAgICAgICAgICAgICAgIFN1cmZhY2VJ
bXBsICooY29uc3QgZWdsOjpTdXJmYWNlU3RhdGUgJiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBlZ2w6OkNvbmZpZyAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZWdsOjpBdHRyaWJ1dGVNYXAgJikpOwotICAgIE1PQ0tfTUVUSE9EMyhjcmVhdGVQYnVm
ZmVyU3VyZmFjZSwKLSAgICAgICAgICAgICAgICAgU3VyZmFjZUltcGwgKihjb25zdCBlZ2w6OlN1
cmZhY2VTdGF0ZSAmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6
Q29uZmlnICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWdsOjpBdHRy
aWJ1dGVNYXAgJikpOwotICAgIE1PQ0tfTUVUSE9ENChjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1
ZmZlciwKLSAgICAgICAgICAgICAgICAgU3VyZmFjZUltcGwgKihjb25zdCBlZ2w6OlN1cmZhY2VT
dGF0ZSAmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmln
ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMQ2xpZW50QnVmZmVyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6QXR0cmlidXRlTWFwICYpKTsK
LSAgICBNT0NLX01FVEhPRDQoY3JlYXRlUGl4bWFwU3VyZmFjZSwKLSAgICAgICAgICAgICAgICAg
U3VyZmFjZUltcGwgKihjb25zdCBlZ2w6OlN1cmZhY2VTdGF0ZSAmLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGVnbDo6Q29uZmlnICosCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTmF0aXZlUGl4bWFwVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBlZ2w6OkF0dHJpYnV0ZU1hcCAmKSk7Ci0gICAgTU9DS19NRVRIT0QzKGNyZWF0
ZUltYWdlLCBJbWFnZUltcGwgKihFR0xlbnVtLCBlZ2w6OkltYWdlU2libGluZyAqLCBjb25zdCBl
Z2w6OkF0dHJpYnV0ZU1hcCAmKSk7Ci0gICAgTU9DS19NRVRIT0QxKGNyZWF0ZUNvbnRleHQsIENv
bnRleHRJbXBsICooY29uc3QgZ2w6OkNvbnRleHRTdGF0ZSAmKSk7Ci0gICAgTU9DS19NRVRIT0Qy
KGNyZWF0ZVN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTIsCi0gICAgICAgICAgICAgICAgIFN0
cmVhbVByb2R1Y2VySW1wbCAqKGVnbDo6U3RyZWFtOjpDb25zdW1lclR5cGUsIGNvbnN0IGVnbDo6
QXR0cmlidXRlTWFwICYpKTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSByeAotCi0jZW5kaWYgLy8g
VEVTVFNfQU5HTEVfVU5JVFRFU1RTX1VUSUxTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvQVBJX3Rlc3QuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0FQSV90ZXN0LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE3YTI2MGZhOGMuLjAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9BUElf
dGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0
IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8v
IEFQSV90ZXN0LmNwcDoKLS8vICAgU29tZSB0ZXN0cyBmb3IgdGhlIGNvbXBpbGVyIEFQSS4KLS8v
Ci0KLSNpbmNsdWRlICJhbmdsZV9nbC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0jaW5j
bHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLVRFU1QoQVBJVGVzdCwgQ29tcGFyZVNoQnVp
bHRJblJlc291cmNlcykKLXsKLSAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgYV9yZXNvdXJjZXM7Ci0g
ICAgbWVtc2V0KCZhX3Jlc291cmNlcywgODgsIHNpemVvZihhX3Jlc291cmNlcykpOwotICAgIFNo
SW5pdEJ1aWx0SW5SZXNvdXJjZXMoJmFfcmVzb3VyY2VzKTsKLQotICAgIFNoQnVpbHRJblJlc291
cmNlcyBiX3Jlc291cmNlczsKLSAgICBtZW1zZXQoJmJfcmVzb3VyY2VzLCA3Nywgc2l6ZW9mKGJf
cmVzb3VyY2VzKSk7Ci0gICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmYl9yZXNvdXJjZXMpOwot
Ci0gICAgRVhQRUNUX1RSVUUobWVtY21wKCZhX3Jlc291cmNlcywgJmJfcmVzb3VyY2VzLCBzaXpl
b2YoYV9yZXNvdXJjZXMpKSA9PSAwKTsKLX0KLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0NvbGxlY3RWYXJpYWJsZXNfdGVzdC5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvQ29s
bGVjdFZhcmlhYmxlc190ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI5
Mzc0ZjU0NGEuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9jb21waWxlcl90ZXN0cy9Db2xsZWN0VmFyaWFibGVzX3Rlc3QuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNzQwICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
LS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gQ29sbGVjdFZhcmlhYmxlc190
ZXN0LmNwcDoKLS8vICAgU29tZSB0ZXN0cyBmb3Igc2hhZGVyIGluc3BlY3Rpb24KLS8vCi0KLSNp
bmNsdWRlIDxtZW1vcnk+Ci0KLSNpbmNsdWRlICJhbmdsZV9nbC5oIgotI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCi0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0jaW5jbHVkZSAiY29t
cGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yR0xTTC5oIgotCi0jZGVmaW5lIEVYUEVDVF9HTEVO
VU1fRVEoZXhwZWN0ZWQsIGFjdHVhbCkgXAotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTGVu
dW0+KGV4cGVjdGVkKSwgc3RhdGljX2Nhc3Q8R0xlbnVtPihhY3R1YWwpKQotCi1jbGFzcyBDb2xs
ZWN0VmFyaWFibGVzVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Ci17Ci0gIHB1YmxpYzoKLSAg
ICBDb2xsZWN0VmFyaWFibGVzVGVzdChHTGVudW0gc2hhZGVyVHlwZSkgOiBtU2hhZGVyVHlwZShz
aGFkZXJUeXBlKSB7fQotCi0gIHByb3RlY3RlZDoKLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXM7Ci0gICAgICAgIFNo
SW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7Ci0gICAgICAgIHJlc291cmNlcy5NYXhE
cmF3QnVmZmVycyA9IDg7Ci0KLSAgICAgICAgaW5pdFRyYW5zbGF0b3IocmVzb3VyY2VzKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGluaXRUcmFuc2xhdG9yKGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyAm
cmVzb3VyY2VzKQotICAgIHsKLSAgICAgICAgbVRyYW5zbGF0b3IucmVzZXQoCi0gICAgICAgICAg
ICBuZXcgVHJhbnNsYXRvckdMU0wobVNoYWRlclR5cGUsIFNIX0dMRVMzX1NQRUMsIFNIX0dMU0xf
Q09NUEFUSUJJTElUWV9PVVRQVVQpKTsKLSAgICAgICAgQVNTRVJUX1RSVUUobVRyYW5zbGF0b3It
PkluaXQocmVzb3VyY2VzKSk7Ci0gICAgfQotCi0gICAgLy8gRm9yIHVzZSBpbiB0aGUgZ2xfRGVw
dGhSYW5nZSB0ZXN0cy4KLSAgICB2b2lkIHZhbGlkYXRlRGVwdGhSYW5nZVNoYWRlcihjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nKQotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciAqc2hh
ZGVyU3RyaW5nc1tdID0geyBzaGFkZXJTdHJpbmcuY19zdHIoKSB9OwotICAgICAgICBBU1NFUlRf
VFJVRShtVHJhbnNsYXRvci0+Y29tcGlsZShzaGFkZXJTdHJpbmdzLCAxLCBTSF9WQVJJQUJMRVMp
KTsKLQotICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6VW5pZm9ybT4gJnVuaWZvcm1zID0g
bVRyYW5zbGF0b3ItPmdldFVuaWZvcm1zKCk7Ci0gICAgICAgIEFTU0VSVF9FUSgxdSwgdW5pZm9y
bXMuc2l6ZSgpKTsKLQotICAgICAgICBjb25zdCBzaDo6VW5pZm9ybSAmdW5pZm9ybSA9IHVuaWZv
cm1zWzBdOwotICAgICAgICBFWFBFQ1RfRVEoImdsX0RlcHRoUmFuZ2UiLCB1bmlmb3JtLm5hbWUp
OwotICAgICAgICBBU1NFUlRfVFJVRSh1bmlmb3JtLmlzU3RydWN0KCkpOwotICAgICAgICBBU1NF
UlRfRVEoM3UsIHVuaWZvcm0uZmllbGRzLnNpemUoKSk7Ci0KLSAgICAgICAgYm9vbCBmb3VuZE5l
YXIgPSBmYWxzZTsKLSAgICAgICAgYm9vbCBmb3VuZEZhciA9IGZhbHNlOwotICAgICAgICBib29s
IGZvdW5kRGlmZiA9IGZhbHNlOwotCi0gICAgICAgIGZvciAoY29uc3QgYXV0byAmZmllbGQgOiB1
bmlmb3JtLmZpZWxkcykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGZpZWxkLm5hbWUgPT0g
Im5lYXIiKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShmb3Vu
ZE5lYXIpOwotICAgICAgICAgICAgICAgIGZvdW5kTmVhciA9IHRydWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBlbHNlIGlmIChmaWVsZC5uYW1lID09ICJmYXIiKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShmb3VuZEZhcik7Ci0gICAgICAgICAgICAg
ICAgZm91bmRGYXIgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIEFTU0VSVF9FUSgiZGlmZiIsIGZpZWxkLm5hbWUp
OwotICAgICAgICAgICAgICAgIEVYUEVDVF9GQUxTRShmb3VuZERpZmYpOwotICAgICAgICAgICAg
ICAgIGZvdW5kRGlmZiA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEVYUEVD
VF9FUSgwdSwgZmllbGQuYXJyYXlTaXplKTsKLSAgICAgICAgICAgIEVYUEVDVF9GQUxTRShmaWVs
ZC5pc1N0cnVjdCgpKTsKLSAgICAgICAgICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfSElHSF9GTE9B
VCwgZmllbGQucHJlY2lzaW9uKTsKLSAgICAgICAgICAgIEVYUEVDVF9UUlVFKGZpZWxkLnN0YXRp
Y1VzZSk7Ci0gICAgICAgICAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FULCBmaWVsZC50eXBl
KTsKLSAgICAgICAgfQotCi0gICAgICAgIEVYUEVDVF9UUlVFKGZvdW5kTmVhciAmJiBmb3VuZEZh
ciAmJiBmb3VuZERpZmYpOwotICAgIH0KLQotICAgIC8vIEZvciB1c2UgaW4gdGVzdHMgZm9yIG91
dHB1dCB2YXJpYmxlcy4KLSAgICB2b2lkIHZhbGlkYXRlT3V0cHV0VmFyaWFibGVGb3JTaGFkZXIo
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHZhckluZGV4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2YXJOYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaDo6T3V0cHV0VmFyaWFibGUg
KipvdXRSZXN1bHQpCi0gICAgewotICAgICAgICBjb25zdCBjaGFyICpzaGFkZXJTdHJpbmdzW10g
PSB7c2hhZGVyU3RyaW5nLmNfc3RyKCl9OwotICAgICAgICBBU1NFUlRfVFJVRShtVHJhbnNsYXRv
ci0+Y29tcGlsZShzaGFkZXJTdHJpbmdzLCAxLCBTSF9WQVJJQUJMRVMpKQotICAgICAgICAgICAg
PDwgbVRyYW5zbGF0b3ItPmdldEluZm9TaW5rKCkuaW5mby5zdHIoKTsKLQotICAgICAgICBjb25z
dCBhdXRvICZvdXRwdXRWYXJpYWJsZXMgPSBtVHJhbnNsYXRvci0+Z2V0T3V0cHV0VmFyaWFibGVz
KCk7Ci0gICAgICAgIEFTU0VSVF9MVCh2YXJJbmRleCwgb3V0cHV0VmFyaWFibGVzLnNpemUoKSk7
Ci0gICAgICAgIGNvbnN0IHNoOjpPdXRwdXRWYXJpYWJsZSAmb3V0cHV0VmFyaWFibGUgPSBvdXRw
dXRWYXJpYWJsZXNbdmFySW5kZXhdOwotICAgICAgICBFWFBFQ1RfRVEoLTEsIG91dHB1dFZhcmlh
YmxlLmxvY2F0aW9uKTsKLSAgICAgICAgRVhQRUNUX1RSVUUob3V0cHV0VmFyaWFibGUuc3RhdGlj
VXNlKTsKLSAgICAgICAgRVhQRUNUX0VRKHZhck5hbWUsIG91dHB1dFZhcmlhYmxlLm5hbWUpOwot
ICAgICAgICAqb3V0UmVzdWx0ID0gJm91dHB1dFZhcmlhYmxlOwotICAgIH0KLQotICAgIHZvaWQg
Y29tcGlsZShjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nKQotICAgIHsKLSAgICAgICAg
Y29uc3QgY2hhciAqc2hhZGVyU3RyaW5nc1tdID0ge3NoYWRlclN0cmluZy5jX3N0cigpfTsKLSAg
ICAgICAgQVNTRVJUX1RSVUUobVRyYW5zbGF0b3ItPmNvbXBpbGUoc2hhZGVyU3RyaW5ncywgMSwg
U0hfVkFSSUFCTEVTKSk7Ci0gICAgfQotCi0gICAgR0xlbnVtIG1TaGFkZXJUeXBlOwotICAgIHN0
ZDo6dW5pcXVlX3B0cjxUcmFuc2xhdG9yR0xTTD4gbVRyYW5zbGF0b3I7Ci19OwotCi1jbGFzcyBD
b2xsZWN0VmVydGV4VmFyaWFibGVzVGVzdCA6IHB1YmxpYyBDb2xsZWN0VmFyaWFibGVzVGVzdAot
ewotICBwdWJsaWM6Ci0gICAgQ29sbGVjdFZlcnRleFZhcmlhYmxlc1Rlc3QoKSA6IENvbGxlY3RW
YXJpYWJsZXNUZXN0KEdMX1ZFUlRFWF9TSEFERVIpIHt9Ci19OwotCi1jbGFzcyBDb2xsZWN0RnJh
Z21lbnRWYXJpYWJsZXNUZXN0IDogcHVibGljIENvbGxlY3RWYXJpYWJsZXNUZXN0Ci17Ci0gIHB1
YmxpYzoKLSAgICAgIENvbGxlY3RGcmFnbWVudFZhcmlhYmxlc1Rlc3QoKSA6IENvbGxlY3RWYXJp
YWJsZXNUZXN0KEdMX0ZSQUdNRU5UX1NIQURFUikge30KLX07Ci0KLVRFU1RfRihDb2xsZWN0RnJh
Z21lbnRWYXJpYWJsZXNUZXN0LCBTaW1wbGVPdXRwdXRWYXIpCi17Ci0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAg
ICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgb3V0X2Zy
YWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIG91dF9m
cmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgY29tcGlsZShz
aGFkZXJTdHJpbmcpOwotCi0gICAgY29uc3QgYXV0byAmb3V0cHV0VmFyaWFibGVzID0gbVRyYW5z
bGF0b3ItPmdldE91dHB1dFZhcmlhYmxlcygpOwotICAgIEFTU0VSVF9FUSgxdSwgb3V0cHV0VmFy
aWFibGVzLnNpemUoKSk7Ci0KLSAgICBjb25zdCBzaDo6T3V0cHV0VmFyaWFibGUgJm91dHB1dFZh
cmlhYmxlID0gb3V0cHV0VmFyaWFibGVzWzBdOwotCi0gICAgRVhQRUNUX0VRKDB1LCBvdXRwdXRW
YXJpYWJsZS5hcnJheVNpemUpOwotICAgIEVYUEVDVF9FUSgtMSwgb3V0cHV0VmFyaWFibGUubG9j
YXRpb24pOwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfTUVESVVNX0ZMT0FULCBvdXRwdXRWYXJp
YWJsZS5wcmVjaXNpb24pOwotICAgIEVYUEVDVF9UUlVFKG91dHB1dFZhcmlhYmxlLnN0YXRpY1Vz
ZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVF9WRUM0LCBvdXRwdXRWYXJpYWJsZS50
eXBlKTsKLSAgICBFWFBFQ1RfRVEoIm91dF9mcmFnQ29sb3IiLCBvdXRwdXRWYXJpYWJsZS5uYW1l
KTsKLX0KLQotVEVTVF9GKENvbGxlY3RGcmFnbWVudFZhcmlhYmxlc1Rlc3QsIExvY2F0aW9uT3V0
cHV0VmFyKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAg
ICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc
biIKLSAgICAgICAgImxheW91dChsb2NhdGlvbj01KSBvdXQgdmVjNCBvdXRfZnJhZ0NvbG9yO1xu
IgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgb3V0X2ZyYWdDb2xvciA9
IHZlYzQoMS4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb21waWxlKHNoYWRlclN0cmlu
Zyk7Ci0KLSAgICBjb25zdCBhdXRvICZvdXRwdXRWYXJpYWJsZXMgPSBtVHJhbnNsYXRvci0+Z2V0
T3V0cHV0VmFyaWFibGVzKCk7Ci0gICAgQVNTRVJUX0VRKDF1LCBvdXRwdXRWYXJpYWJsZXMuc2l6
ZSgpKTsKLQotICAgIGNvbnN0IHNoOjpPdXRwdXRWYXJpYWJsZSAmb3V0cHV0VmFyaWFibGUgPSBv
dXRwdXRWYXJpYWJsZXNbMF07Ci0KLSAgICBFWFBFQ1RfRVEoMHUsIG91dHB1dFZhcmlhYmxlLmFy
cmF5U2l6ZSk7Ci0gICAgRVhQRUNUX0VRKDUsIG91dHB1dFZhcmlhYmxlLmxvY2F0aW9uKTsKLSAg
ICBFWFBFQ1RfR0xFTlVNX0VRKEdMX01FRElVTV9GTE9BVCwgb3V0cHV0VmFyaWFibGUucHJlY2lz
aW9uKTsKLSAgICBFWFBFQ1RfVFJVRShvdXRwdXRWYXJpYWJsZS5zdGF0aWNVc2UpOwotICAgIEVY
UEVDVF9HTEVOVU1fRVEoR0xfRkxPQVRfVkVDNCwgb3V0cHV0VmFyaWFibGUudHlwZSk7Ci0gICAg
RVhQRUNUX0VRKCJvdXRfZnJhZ0NvbG9yIiwgb3V0cHV0VmFyaWFibGUubmFtZSk7Ci19Ci0KLVRF
U1RfRihDb2xsZWN0VmVydGV4VmFyaWFibGVzVGVzdCwgTG9jYXRpb25BdHRyaWJ1dGUpCi17Ci0g
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKLSAgICAgICAgImxheW91dChsb2NhdGlvbj01KSBpbiB2ZWM0IGluX1Bvc2l0aW9u
O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfUG9zaXRpb24g
PSBpbl9Qb3NpdGlvbjtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb21waWxlKHNoYWRlclN0
cmluZyk7Ci0KLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6QXR0cmlidXRlPiAmYXR0cmlidXRl
cyA9IG1UcmFuc2xhdG9yLT5nZXRBdHRyaWJ1dGVzKCk7Ci0gICAgQVNTRVJUX0VRKDF1LCBhdHRy
aWJ1dGVzLnNpemUoKSk7Ci0KLSAgICBjb25zdCBzaDo6QXR0cmlidXRlICZhdHRyaWJ1dGUgPSBh
dHRyaWJ1dGVzWzBdOwotCi0gICAgRVhQRUNUX0VRKDB1LCBhdHRyaWJ1dGUuYXJyYXlTaXplKTsK
LSAgICBFWFBFQ1RfRVEoNSwgYXR0cmlidXRlLmxvY2F0aW9uKTsKLSAgICBFWFBFQ1RfR0xFTlVN
X0VRKEdMX0hJR0hfRkxPQVQsIGF0dHJpYnV0ZS5wcmVjaXNpb24pOwotICAgIEVYUEVDVF9UUlVF
KGF0dHJpYnV0ZS5zdGF0aWNVc2UpOwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVRfVkVD
NCwgYXR0cmlidXRlLnR5cGUpOwotICAgIEVYUEVDVF9FUSgiaW5fUG9zaXRpb24iLCBhdHRyaWJ1
dGUubmFtZSk7Ci19Ci0KLVRFU1RfRihDb2xsZWN0VmVydGV4VmFyaWFibGVzVGVzdCwgU2ltcGxl
SW50ZXJmYWNlQmxvY2spCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9
Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInVuaWZvcm0gYiB7XG4iCi0g
ICAgICAgICIgIGZsb2F0IGY7XG4iCi0gICAgICAgICJ9OyIKLSAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKLSAgICAgICAgIiAgIGdsX1Bvc2l0aW9uID0gdmVjNChmLCAwLjAsIDAuMCwgMS4wKTtc
biIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0KLSAgICBj
b25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNlQmxvY2s+ICZpbnRlcmZhY2VCbG9ja3MgPSBt
VHJhbnNsYXRvci0+Z2V0SW50ZXJmYWNlQmxvY2tzKCk7Ci0gICAgQVNTRVJUX0VRKDF1LCBpbnRl
cmZhY2VCbG9ja3Muc2l6ZSgpKTsKLQotICAgIGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmaW50
ZXJmYWNlQmxvY2sgPSBpbnRlcmZhY2VCbG9ja3NbMF07Ci0KLSAgICBFWFBFQ1RfRVEoMHUsIGlu
dGVyZmFjZUJsb2NrLmFycmF5U2l6ZSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGludGVyZmFjZUJsb2Nr
LmlzUm93TWFqb3JMYXlvdXQpOwotICAgIEVYUEVDVF9FUShzaDo6QkxPQ0tMQVlPVVRfU0hBUkVE
LCBpbnRlcmZhY2VCbG9jay5sYXlvdXQpOwotICAgIEVYUEVDVF9FUSgiYiIsIGludGVyZmFjZUJs
b2NrLm5hbWUpOwotICAgIEVYUEVDVF9UUlVFKGludGVyZmFjZUJsb2NrLnN0YXRpY1VzZSk7Ci0K
LSAgICBBU1NFUlRfRVEoMXUsIGludGVyZmFjZUJsb2NrLmZpZWxkcy5zaXplKCkpOwotCi0gICAg
Y29uc3Qgc2g6OkludGVyZmFjZUJsb2NrRmllbGQgJmZpZWxkID0gaW50ZXJmYWNlQmxvY2suZmll
bGRzWzBdOwotCi0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9ISUdIX0ZMT0FULCBmaWVsZC5wcmVj
aXNpb24pOwotICAgIEVYUEVDVF9UUlVFKGZpZWxkLnN0YXRpY1VzZSk7Ci0gICAgRVhQRUNUX0dM
RU5VTV9FUShHTF9GTE9BVCwgZmllbGQudHlwZSk7Ci0gICAgRVhQRUNUX0VRKCJmIiwgZmllbGQu
bmFtZSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZpZWxkLmlzUm93TWFqb3JMYXlvdXQpOwotICAgIEVY
UEVDVF9UUlVFKGZpZWxkLmZpZWxkcy5lbXB0eSgpKTsKLX0KLQotVEVTVF9GKENvbGxlY3RWZXJ0
ZXhWYXJpYWJsZXNUZXN0LCBTaW1wbGVJbnN0YW5jZWRJbnRlcmZhY2VCbG9jaykKLXsKLSAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBl
c1xuIgotICAgICAgICAidW5pZm9ybSBiIHtcbiIKLSAgICAgICAgIiAgZmxvYXQgZjtcbiIKLSAg
ICAgICAgIn0gYmxvY2tJbnN0YW5jZTsiCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAg
ICAgICIgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYmxvY2tJbnN0YW5jZS5mLCAwLjAsIDAuMCwgMS4w
KTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0KLSAg
ICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNlQmxvY2s+ICZpbnRlcmZhY2VCbG9ja3Mg
PSBtVHJhbnNsYXRvci0+Z2V0SW50ZXJmYWNlQmxvY2tzKCk7Ci0gICAgQVNTRVJUX0VRKDF1LCBp
bnRlcmZhY2VCbG9ja3Muc2l6ZSgpKTsKLQotICAgIGNvbnN0IHNoOjpJbnRlcmZhY2VCbG9jayAm
aW50ZXJmYWNlQmxvY2sgPSBpbnRlcmZhY2VCbG9ja3NbMF07Ci0KLSAgICBFWFBFQ1RfRVEoMHUs
IGludGVyZmFjZUJsb2NrLmFycmF5U2l6ZSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGludGVyZmFjZUJs
b2NrLmlzUm93TWFqb3JMYXlvdXQpOwotICAgIEVYUEVDVF9FUShzaDo6QkxPQ0tMQVlPVVRfU0hB
UkVELCBpbnRlcmZhY2VCbG9jay5sYXlvdXQpOwotICAgIEVYUEVDVF9FUSgiYiIsIGludGVyZmFj
ZUJsb2NrLm5hbWUpOwotICAgIEVYUEVDVF9FUSgiYmxvY2tJbnN0YW5jZSIsIGludGVyZmFjZUJs
b2NrLmluc3RhbmNlTmFtZSk7Ci0gICAgRVhQRUNUX1RSVUUoaW50ZXJmYWNlQmxvY2suc3RhdGlj
VXNlKTsKLQotICAgIEFTU0VSVF9FUSgxdSwgaW50ZXJmYWNlQmxvY2suZmllbGRzLnNpemUoKSk7
Ci0KLSAgICBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2tGaWVsZCAmZmllbGQgPSBpbnRlcmZhY2VC
bG9jay5maWVsZHNbMF07Ci0KLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0hJR0hfRkxPQVQsIGZp
ZWxkLnByZWNpc2lvbik7Ci0gICAgRVhQRUNUX1RSVUUoZmllbGQuc3RhdGljVXNlKTsKLSAgICBF
WFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FULCBmaWVsZC50eXBlKTsKLSAgICBFWFBFQ1RfRVEoImYi
LCBmaWVsZC5uYW1lKTsKLSAgICBFWFBFQ1RfRkFMU0UoZmllbGQuaXNSb3dNYWpvckxheW91dCk7
Ci0gICAgRVhQRUNUX1RSVUUoZmllbGQuZmllbGRzLmVtcHR5KCkpOwotfQotCi1URVNUX0YoQ29s
bGVjdFZlcnRleFZhcmlhYmxlc1Rlc3QsIFN0cnVjdEludGVyZmFjZUJsb2NrKQotewotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCi0gICAgICAgICJzdHJ1Y3Qgc3QgeyBmbG9hdCBmOyB9OyIKLSAgICAgICAgInVuaWZvcm0g
YiB7XG4iCi0gICAgICAgICIgIHN0IHM7XG4iCi0gICAgICAgICJ9OyIKLSAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGdsX1Bvc2l0aW9uID0gdmVjNChzLmYsIDAuMCwgMC4w
LCAxLjApO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsK
LQotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpJbnRlcmZhY2VCbG9jaz4gJmludGVyZmFjZUJs
b2NrcyA9IG1UcmFuc2xhdG9yLT5nZXRJbnRlcmZhY2VCbG9ja3MoKTsKLSAgICBBU1NFUlRfRVEo
MXUsIGludGVyZmFjZUJsb2Nrcy5zaXplKCkpOwotCi0gICAgY29uc3Qgc2g6OkludGVyZmFjZUJs
b2NrICZpbnRlcmZhY2VCbG9jayA9IGludGVyZmFjZUJsb2Nrc1swXTsKLQotICAgIEVYUEVDVF9F
USgwdSwgaW50ZXJmYWNlQmxvY2suYXJyYXlTaXplKTsKLSAgICBFWFBFQ1RfRkFMU0UoaW50ZXJm
YWNlQmxvY2suaXNSb3dNYWpvckxheW91dCk7Ci0gICAgRVhQRUNUX0VRKHNoOjpCTE9DS0xBWU9V
VF9TSEFSRUQsIGludGVyZmFjZUJsb2NrLmxheW91dCk7Ci0gICAgRVhQRUNUX0VRKCJiIiwgaW50
ZXJmYWNlQmxvY2submFtZSk7Ci0gICAgRVhQRUNUX1RSVUUoaW50ZXJmYWNlQmxvY2suc3RhdGlj
VXNlKTsKLQotICAgIEFTU0VSVF9FUSgxdSwgaW50ZXJmYWNlQmxvY2suZmllbGRzLnNpemUoKSk7
Ci0KLSAgICBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2tGaWVsZCAmZmllbGQgPSBpbnRlcmZhY2VC
bG9jay5maWVsZHNbMF07Ci0KLSAgICBFWFBFQ1RfVFJVRShmaWVsZC5pc1N0cnVjdCgpKTsKLSAg
ICBFWFBFQ1RfVFJVRShmaWVsZC5zdGF0aWNVc2UpOwotICAgIEVYUEVDVF9FUSgicyIsIGZpZWxk
Lm5hbWUpOwotICAgIEVYUEVDVF9GQUxTRShmaWVsZC5pc1Jvd01ham9yTGF5b3V0KTsKLQotICAg
IGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmbWVtYmVyID0gZmllbGQuZmllbGRzWzBdOwotCi0g
ICAgLy8gTk9URTogd2UgZG9uJ3QgY3VycmVudGx5IG1hcmsgc3RydWN0IG1lbWJlcnMgYXMgc3Rh
dGljYWxseSB1c2VkIG9yIG5vdAotICAgIEVYUEVDVF9GQUxTRShtZW1iZXIuaXNTdHJ1Y3QoKSk7
Ci0gICAgRVhQRUNUX0VRKCJmIiwgbWVtYmVyLm5hbWUpOwotICAgIEVYUEVDVF9HTEVOVU1fRVEo
R0xfRkxPQVQsIG1lbWJlci50eXBlKTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0hJR0hfRkxP
QVQsIG1lbWJlci5wcmVjaXNpb24pOwotfQotCi1URVNUX0YoQ29sbGVjdFZlcnRleFZhcmlhYmxl
c1Rlc3QsIFN0cnVjdEluc3RhbmNlZEludGVyZmFjZUJsb2NrKQotewotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAg
ICAgICJzdHJ1Y3Qgc3QgeyBmbG9hdCBmOyB9OyIKLSAgICAgICAgInVuaWZvcm0gYiB7XG4iCi0g
ICAgICAgICIgIHN0IHM7XG4iCi0gICAgICAgICJ9IGluc3RhbmNlTmFtZTsiCi0gICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9Qb3NpdGlvbiA9IHZlYzQoaW5zdGFuY2VO
YW1lLnMuZiwgMC4wLCAwLjAsIDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgY29tcGls
ZShzaGFkZXJTdHJpbmcpOwotCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OkludGVyZmFjZUJs
b2NrPiAmaW50ZXJmYWNlQmxvY2tzID0gbVRyYW5zbGF0b3ItPmdldEludGVyZmFjZUJsb2Nrcygp
OwotICAgIEFTU0VSVF9FUSgxdSwgaW50ZXJmYWNlQmxvY2tzLnNpemUoKSk7Ci0KLSAgICBjb25z
dCBzaDo6SW50ZXJmYWNlQmxvY2sgJmludGVyZmFjZUJsb2NrID0gaW50ZXJmYWNlQmxvY2tzWzBd
OwotCi0gICAgRVhQRUNUX0VRKDB1LCBpbnRlcmZhY2VCbG9jay5hcnJheVNpemUpOwotICAgIEVY
UEVDVF9GQUxTRShpbnRlcmZhY2VCbG9jay5pc1Jvd01ham9yTGF5b3V0KTsKLSAgICBFWFBFQ1Rf
RVEoc2g6OkJMT0NLTEFZT1VUX1NIQVJFRCwgaW50ZXJmYWNlQmxvY2subGF5b3V0KTsKLSAgICBF
WFBFQ1RfRVEoImIiLCBpbnRlcmZhY2VCbG9jay5uYW1lKTsKLSAgICBFWFBFQ1RfRVEoImluc3Rh
bmNlTmFtZSIsIGludGVyZmFjZUJsb2NrLmluc3RhbmNlTmFtZSk7Ci0gICAgRVhQRUNUX1RSVUUo
aW50ZXJmYWNlQmxvY2suc3RhdGljVXNlKTsKLQotICAgIEFTU0VSVF9FUSgxdSwgaW50ZXJmYWNl
QmxvY2suZmllbGRzLnNpemUoKSk7Ci0KLSAgICBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2tGaWVs
ZCAmZmllbGQgPSBpbnRlcmZhY2VCbG9jay5maWVsZHNbMF07Ci0KLSAgICBFWFBFQ1RfVFJVRShm
aWVsZC5pc1N0cnVjdCgpKTsKLSAgICBFWFBFQ1RfVFJVRShmaWVsZC5zdGF0aWNVc2UpOwotICAg
IEVYUEVDVF9FUSgicyIsIGZpZWxkLm5hbWUpOwotICAgIEVYUEVDVF9GQUxTRShmaWVsZC5pc1Jv
d01ham9yTGF5b3V0KTsKLQotICAgIGNvbnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmbWVtYmVyID0g
ZmllbGQuZmllbGRzWzBdOwotCi0gICAgLy8gTk9URTogd2UgZG9uJ3QgY3VycmVudGx5IG1hcmsg
c3RydWN0IG1lbWJlcnMgYXMgc3RhdGljYWxseSB1c2VkIG9yIG5vdAotICAgIEVYUEVDVF9GQUxT
RShtZW1iZXIuaXNTdHJ1Y3QoKSk7Ci0gICAgRVhQRUNUX0VRKCJmIiwgbWVtYmVyLm5hbWUpOwot
ICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVQsIG1lbWJlci50eXBlKTsKLSAgICBFWFBFQ1Rf
R0xFTlVNX0VRKEdMX0hJR0hfRkxPQVQsIG1lbWJlci5wcmVjaXNpb24pOwotfQotCi1URVNUX0Yo
Q29sbGVjdFZlcnRleFZhcmlhYmxlc1Rlc3QsIE5lc3RlZFN0cnVjdFJvd01ham9ySW50ZXJmYWNl
QmxvY2spCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAg
ICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInN0cnVjdCBzdCB7IG1hdDIgbTsgfTsiCi0g
ICAgICAgICJsYXlvdXQocm93X21ham9yKSB1bmlmb3JtIGIge1xuIgotICAgICAgICAiICBzdCBz
O1xuIgotICAgICAgICAifTsiCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIg
ICBnbF9Qb3NpdGlvbiA9IHZlYzQocy5tKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb21w
aWxlKHNoYWRlclN0cmluZyk7Ci0KLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6SW50ZXJmYWNl
QmxvY2s+ICZpbnRlcmZhY2VCbG9ja3MgPSBtVHJhbnNsYXRvci0+Z2V0SW50ZXJmYWNlQmxvY2tz
KCk7Ci0gICAgQVNTRVJUX0VRKDF1LCBpbnRlcmZhY2VCbG9ja3Muc2l6ZSgpKTsKLQotICAgIGNv
bnN0IHNoOjpJbnRlcmZhY2VCbG9jayAmaW50ZXJmYWNlQmxvY2sgPSBpbnRlcmZhY2VCbG9ja3Nb
MF07Ci0KLSAgICBFWFBFQ1RfRVEoMHUsIGludGVyZmFjZUJsb2NrLmFycmF5U2l6ZSk7Ci0gICAg
RVhQRUNUX1RSVUUoaW50ZXJmYWNlQmxvY2suaXNSb3dNYWpvckxheW91dCk7Ci0gICAgRVhQRUNU
X0VRKHNoOjpCTE9DS0xBWU9VVF9TSEFSRUQsIGludGVyZmFjZUJsb2NrLmxheW91dCk7Ci0gICAg
RVhQRUNUX0VRKCJiIiwgaW50ZXJmYWNlQmxvY2submFtZSk7Ci0gICAgRVhQRUNUX1RSVUUoaW50
ZXJmYWNlQmxvY2suc3RhdGljVXNlKTsKLQotICAgIEFTU0VSVF9FUSgxdSwgaW50ZXJmYWNlQmxv
Y2suZmllbGRzLnNpemUoKSk7Ci0KLSAgICBjb25zdCBzaDo6SW50ZXJmYWNlQmxvY2tGaWVsZCAm
ZmllbGQgPSBpbnRlcmZhY2VCbG9jay5maWVsZHNbMF07Ci0KLSAgICBFWFBFQ1RfVFJVRShmaWVs
ZC5pc1N0cnVjdCgpKTsKLSAgICBFWFBFQ1RfVFJVRShmaWVsZC5zdGF0aWNVc2UpOwotICAgIEVY
UEVDVF9FUSgicyIsIGZpZWxkLm5hbWUpOwotICAgIEVYUEVDVF9UUlVFKGZpZWxkLmlzUm93TWFq
b3JMYXlvdXQpOwotCi0gICAgY29uc3Qgc2g6OlNoYWRlclZhcmlhYmxlICZtZW1iZXIgPSBmaWVs
ZC5maWVsZHNbMF07Ci0KLSAgICAvLyBOT1RFOiB3ZSBkb24ndCBjdXJyZW50bHkgbWFyayBzdHJ1
Y3QgbWVtYmVycyBhcyBzdGF0aWNhbGx5IHVzZWQgb3Igbm90Ci0gICAgRVhQRUNUX0ZBTFNFKG1l
bWJlci5pc1N0cnVjdCgpKTsKLSAgICBFWFBFQ1RfRVEoIm0iLCBtZW1iZXIubmFtZSk7Ci0gICAg
RVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVF9NQVQyLCBtZW1iZXIudHlwZSk7Ci0gICAgRVhQRUNU
X0dMRU5VTV9FUShHTF9ISUdIX0ZMT0FULCBtZW1iZXIucHJlY2lzaW9uKTsKLX0KLQotVEVTVF9G
KENvbGxlY3RWZXJ0ZXhWYXJpYWJsZXNUZXN0LCBWYXJ5aW5nSW50ZXJwb2xhdGlvbikKLXsKLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMw
MCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJj
ZW50cm9pZCBvdXQgZmxvYXQgdmFyeTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAg
ICAgICAgIiAgIGdsX1Bvc2l0aW9uID0gdmVjNCgxLjApO1xuIgotICAgICAgICAiICAgdmFyeSA9
IDEuMDtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0K
LSAgICBjb25zdCBzdGQ6OnZlY3RvcjxzaDo6VmFyeWluZz4gJnZhcnlpbmdzID0gbVRyYW5zbGF0
b3ItPmdldFZhcnlpbmdzKCk7Ci0gICAgQVNTRVJUX0VRKDJ1LCB2YXJ5aW5ncy5zaXplKCkpOwot
Ci0gICAgY29uc3Qgc2g6OlZhcnlpbmcgKnZhcnlpbmcgPSAmdmFyeWluZ3NbMF07Ci0KLSAgICBp
ZiAodmFyeWluZy0+bmFtZSA9PSAiZ2xfUG9zaXRpb24iKQotICAgIHsKLSAgICAgICAgdmFyeWlu
ZyA9ICZ2YXJ5aW5nc1sxXTsKLSAgICB9Ci0KLSAgICBFWFBFQ1RfRVEoMHUsIHZhcnlpbmctPmFy
cmF5U2l6ZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9NRURJVU1fRkxPQVQsIHZhcnlpbmct
PnByZWNpc2lvbik7Ci0gICAgRVhQRUNUX1RSVUUodmFyeWluZy0+c3RhdGljVXNlKTsKLSAgICBF
WFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FULCB2YXJ5aW5nLT50eXBlKTsKLSAgICBFWFBFQ1RfRVEo
InZhcnkiLCB2YXJ5aW5nLT5uYW1lKTsKLSAgICBFWFBFQ1RfRVEoc2g6OklOVEVSUE9MQVRJT05f
Q0VOVFJPSUQsIHZhcnlpbmctPmludGVycG9sYXRpb24pOwotfQotCi0vLyBUZXN0IGZvciBidWls
dGluIHVuaWZvcm0gImdsX0RlcHRoUmFuZ2UiIChWZXJ0ZXggc2hhZGVyKQotVEVTVF9GKENvbGxl
Y3RWZXJ0ZXhWYXJpYWJsZXNUZXN0LCBEZXB0aFJhbmdlKQotewotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiYXR0cmlidXRlIHZlYzQgcG9zaXRpb247XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9Qb3NpdGlvbiA9IHBv
c2l0aW9uICsgdmVjNChnbF9EZXB0aFJhbmdlLm5lYXIsIGdsX0RlcHRoUmFuZ2UuZmFyLCBnbF9E
ZXB0aFJhbmdlLmRpZmYsIDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgdmFsaWRhdGVE
ZXB0aFJhbmdlU2hhZGVyKHNoYWRlclN0cmluZyk7Ci19Ci0KLS8vIFRlc3QgZm9yIGJ1aWx0aW4g
dW5pZm9ybSAiZ2xfRGVwdGhSYW5nZSIgKEZyYWdtZW50IHNoYWRlcikKLVRFU1RfRihDb2xsZWN0
RnJhZ21lbnRWYXJpYWJsZXNUZXN0LCBEZXB0aFJhbmdlKQotewotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KGdsX0RlcHRoUmFuZ2UubmVhciwgZ2xfRGVwdGhSYW5nZS5mYXIsIGdsX0RlcHRoUmFuZ2Uu
ZGlmZiwgMS4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICB2YWxpZGF0ZURlcHRoUmFuZ2VT
aGFkZXIoc2hhZGVyU3RyaW5nKTsKLX0KLQotLy8gVGVzdCB0aGF0IGdsX0ZyYWdDb2xvciBidWls
dC1pbiB1c2FnZSBpbiBFU1NMMSBmcmFnbWVudCBzaGFkZXIgaXMgcmVmbGVjdGVkIGluIHRoZSBv
dXRwdXQKLS8vIHZhcmlhYmxlcyBsaXN0LgotVEVTVF9GKENvbGxlY3RGcmFnbWVudFZhcmlhYmxl
c1Rlc3QsIE91dHB1dFZhckVTU0wxRnJhZ0NvbG9yKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZmcmFnQ29sb3JTaGFkZXIgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgY29uc3Qgc2g6Ok91dHB1dFZhcmlh
YmxlICpvdXRwdXRWYXJpYWJsZSA9IG51bGxwdHI7Ci0gICAgdmFsaWRhdGVPdXRwdXRWYXJpYWJs
ZUZvclNoYWRlcihmcmFnQ29sb3JTaGFkZXIsIDB1LCAiZ2xfRnJhZ0NvbG9yIiwgJm91dHB1dFZh
cmlhYmxlKTsKLSAgICBBU1NFUlRfTkUob3V0cHV0VmFyaWFibGUsIG51bGxwdHIpOwotICAgIEVY
UEVDVF9FUSgwdSwgb3V0cHV0VmFyaWFibGUtPmFycmF5U2l6ZSk7Ci0gICAgRVhQRUNUX0dMRU5V
TV9FUShHTF9GTE9BVF9WRUM0LCBvdXRwdXRWYXJpYWJsZS0+dHlwZSk7Ci0gICAgRVhQRUNUX0dM
RU5VTV9FUShHTF9NRURJVU1fRkxPQVQsIG91dHB1dFZhcmlhYmxlLT5wcmVjaXNpb24pOwotfQot
Ci0vLyBUZXN0IHRoYXQgZ2xfRnJhZ0RhdGEgYnVpbHQtaW4gdXNhZ2UgaW4gRVNTTDEgZnJhZ21l
bnQgc2hhZGVyIGlzIHJlZmxlY3RlZCBpbiB0aGUgb3V0cHV0Ci0vLyB2YXJpYWJsZXMgbGlzdC4K
LVRFU1RfRihDb2xsZWN0RnJhZ21lbnRWYXJpYWJsZXNUZXN0LCBPdXRwdXRWYXJFU1NMMUZyYWdE
YXRhKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnRGF0YVNoYWRlciA9Ci0gICAgICAg
ICIjZXh0ZW5zaW9uIEdMX0VYVF9kcmF3X2J1ZmZlcnMgOiByZXF1aXJlXG4iCi0gICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAg
ICAgICAgIiAgIGdsX0ZyYWdEYXRhWzBdID0gdmVjNCgxLjApO1xuIgotICAgICAgICAiICAgZ2xf
RnJhZ0RhdGFbMV0gPSB2ZWM0KDAuNSk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgU2hCdWls
dEluUmVzb3VyY2VzIHJlc291cmNlcyAgICAgICA9IG1UcmFuc2xhdG9yLT5nZXRSZXNvdXJjZXMo
KTsKLSAgICByZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycyAgICAgICAgID0gMTsKLSAgICBjb25z
dCB1bnNpZ25lZCBpbnQga01heERyYXdCdWZmZXJzID0gM3U7Ci0gICAgcmVzb3VyY2VzLk1heERy
YXdCdWZmZXJzID0ga01heERyYXdCdWZmZXJzOwotICAgIGluaXRUcmFuc2xhdG9yKHJlc291cmNl
cyk7Ci0KLSAgICBjb25zdCBzaDo6T3V0cHV0VmFyaWFibGUgKm91dHB1dFZhcmlhYmxlID0gbnVs
bHB0cjsKLSAgICB2YWxpZGF0ZU91dHB1dFZhcmlhYmxlRm9yU2hhZGVyKGZyYWdEYXRhU2hhZGVy
LCAwdSwgImdsX0ZyYWdEYXRhIiwgJm91dHB1dFZhcmlhYmxlKTsKLSAgICBBU1NFUlRfTkUob3V0
cHV0VmFyaWFibGUsIG51bGxwdHIpOwotICAgIEVYUEVDVF9FUShrTWF4RHJhd0J1ZmZlcnMsIG91
dHB1dFZhcmlhYmxlLT5hcnJheVNpemUpOwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVRf
VkVDNCwgb3V0cHV0VmFyaWFibGUtPnR5cGUpOwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfTUVE
SVVNX0ZMT0FULCBvdXRwdXRWYXJpYWJsZS0+cHJlY2lzaW9uKTsKLX0KLQotLy8gVGVzdCB0aGF0
IGdsX0ZyYWdEYXRhRVhUIGJ1aWx0LWluIHVzYWdlIGluIEVTU0wxIGZyYWdtZW50IHNoYWRlciBp
cyByZWZsZWN0ZWQgaW4gdGhlIG91dHB1dAotLy8gdmFyaWFibGVzIGxpc3QuIEFsc28gdGVzdCB0
aGF0IHRoZSBwcmVjaXNpb24gaXMgbWVkaXVtcC4KLVRFU1RfRihDb2xsZWN0RnJhZ21lbnRWYXJp
YWJsZXNUZXN0LCBPdXRwdXRWYXJFU1NMMUZyYWdEZXB0aE1lZGl1bXApCi17Ci0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgJmZyYWdEZXB0aFNoYWRlciA9Ci0gICAgICAgICIjZXh0ZW5zaW9uIEdMX0VY
VF9mcmFnX2RlcHRoIDogcmVxdWlyZVxuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9GcmFnRGVw
dGhFWFQgPSAwLjc7IgotICAgICAgICAifVxuIjsKLQotICAgIFNoQnVpbHRJblJlc291cmNlcyBy
ZXNvdXJjZXMgPSBtVHJhbnNsYXRvci0+Z2V0UmVzb3VyY2VzKCk7Ci0gICAgcmVzb3VyY2VzLkVY
VF9mcmFnX2RlcHRoID0gMTsKLSAgICBpbml0VHJhbnNsYXRvcihyZXNvdXJjZXMpOwotCi0gICAg
Y29uc3Qgc2g6Ok91dHB1dFZhcmlhYmxlICpvdXRwdXRWYXJpYWJsZSA9IG51bGxwdHI7Ci0gICAg
dmFsaWRhdGVPdXRwdXRWYXJpYWJsZUZvclNoYWRlcihmcmFnRGVwdGhTaGFkZXIsIDB1LCAiZ2xf
RnJhZ0RlcHRoRVhUIiwgJm91dHB1dFZhcmlhYmxlKTsKLSAgICBBU1NFUlRfTkUob3V0cHV0VmFy
aWFibGUsIG51bGxwdHIpOwotICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0VmFyaWFibGUtPmFycmF5
U2l6ZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVCwgb3V0cHV0VmFyaWFibGUtPnR5
cGUpOwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfTUVESVVNX0ZMT0FULCBvdXRwdXRWYXJpYWJs
ZS0+cHJlY2lzaW9uKTsKLX0KLQotLy8gVGVzdCB0aGF0IGdsX0ZyYWdEYXRhRVhUIGJ1aWx0LWlu
IHVzYWdlIGluIEVTU0wxIGZyYWdtZW50IHNoYWRlciBpcyByZWZsZWN0ZWQgaW4gdGhlIG91dHB1
dAotLy8gdmFyaWFibGVzIGxpc3QuIEFsc28gdGVzdCB0aGF0IHRoZSBwcmVjaXNpb24gaXMgaGln
aHAgaWYgdXNlciByZXF1ZXN0cyBpdC4KLVRFU1RfRihDb2xsZWN0RnJhZ21lbnRWYXJpYWJsZXNU
ZXN0LCBPdXRwdXRWYXJFU1NMMUZyYWdEZXB0aEhpZ2hwKQotewotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZmcmFnRGVwdGhIaWdoU2hhZGVyID0KLSAgICAgICAgIiNleHRlbnNpb24gR0xfRVhUX2Zy
YWdfZGVwdGggOiByZXF1aXJlXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAg
ICIgICBnbF9GcmFnRGVwdGhFWFQgPSAwLjc7IgotICAgICAgICAifVxuIjsKLQotICAgIFNoQnVp
bHRJblJlc291cmNlcyByZXNvdXJjZXMgICAgPSBtVHJhbnNsYXRvci0+Z2V0UmVzb3VyY2VzKCk7
Ci0gICAgcmVzb3VyY2VzLkVYVF9mcmFnX2RlcHRoICAgICAgICA9IDE7Ci0gICAgcmVzb3VyY2Vz
LkZyYWdtZW50UHJlY2lzaW9uSGlnaCA9IDE7Ci0gICAgaW5pdFRyYW5zbGF0b3IocmVzb3VyY2Vz
KTsKLQotICAgIGNvbnN0IHNoOjpPdXRwdXRWYXJpYWJsZSAqb3V0cHV0VmFyaWFibGUgPSBudWxs
cHRyOwotICAgIHZhbGlkYXRlT3V0cHV0VmFyaWFibGVGb3JTaGFkZXIoZnJhZ0RlcHRoSGlnaFNo
YWRlciwgMHUsICJnbF9GcmFnRGVwdGhFWFQiLCAmb3V0cHV0VmFyaWFibGUpOwotICAgIEFTU0VS
VF9ORShvdXRwdXRWYXJpYWJsZSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX0VRKDB1LCBvdXRwdXRW
YXJpYWJsZS0+YXJyYXlTaXplKTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FULCBvdXRw
dXRWYXJpYWJsZS0+dHlwZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9ISUdIX0ZMT0FULCBv
dXRwdXRWYXJpYWJsZS0+cHJlY2lzaW9uKTsKLX0KLQotLy8gVGVzdCB0aGF0IGdsX0ZyYWdEYXRh
IGJ1aWx0LWluIHVzYWdlIGluIEVTU0wzIGZyYWdtZW50IHNoYWRlciBpcyByZWZsZWN0ZWQgaW4g
dGhlIG91dHB1dAotLy8gdmFyaWFibGVzIGxpc3QuIEFsc28gdGVzdCB0aGF0IHRoZSBwcmVjaXNp
b24gaXMgaGlnaHAuCi1URVNUX0YoQ29sbGVjdEZyYWdtZW50VmFyaWFibGVzVGVzdCwgT3V0cHV0
VmFyRVNTTDNGcmFnRGVwdGhIaWdocCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ0Rl
cHRoSGlnaFNoYWRlciA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAg
ICAgICAiICAgZ2xfRnJhZ0RlcHRoID0gMC43OyIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBTaEJ1
aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzID0gbVRyYW5zbGF0b3ItPmdldFJlc291cmNlcygpOwot
ICAgIHJlc291cmNlcy5FWFRfZnJhZ19kZXB0aCA9IDE7Ci0gICAgaW5pdFRyYW5zbGF0b3IocmVz
b3VyY2VzKTsKLQotICAgIGNvbnN0IHNoOjpPdXRwdXRWYXJpYWJsZSAqb3V0cHV0VmFyaWFibGUg
PSBudWxscHRyOwotICAgIHZhbGlkYXRlT3V0cHV0VmFyaWFibGVGb3JTaGFkZXIoZnJhZ0RlcHRo
SGlnaFNoYWRlciwgMHUsICJnbF9GcmFnRGVwdGgiLCAmb3V0cHV0VmFyaWFibGUpOwotICAgIEFT
U0VSVF9ORShvdXRwdXRWYXJpYWJsZSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX0VRKDB1LCBvdXRw
dXRWYXJpYWJsZS0+YXJyYXlTaXplKTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FULCBv
dXRwdXRWYXJpYWJsZS0+dHlwZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9ISUdIX0ZMT0FU
LCBvdXRwdXRWYXJpYWJsZS0+cHJlY2lzaW9uKTsKLX0KLQotLy8gVGVzdCB0aGF0IGdsX1NlY29u
ZGFyeUZyYWdDb2xvckVYVCBidWlsdC1pbiB1c2FnZSBpbiBFU1NMMSBmcmFnbWVudCBzaGFkZXIg
aXMgcmVmbGVjdGVkIGluIHRoZQotLy8gb3V0cHV0IHZhcmlhYmxlcyBsaXN0LgotVEVTVF9GKENv
bGxlY3RGcmFnbWVudFZhcmlhYmxlc1Rlc3QsIE91dHB1dFZhckVTU0wxRVhUQmxlbmRGdW5jRXh0
ZW5kZWRTZWNvbmRhcnlGcmFnQ29sb3IpCi17Ci0gICAgY29uc3QgY2hhciAqc2Vjb25kYXJ5RnJh
Z0NvbG9yU2hhZGVyID0KLSAgICAgICAgIiNleHRlbnNpb24gR0xfRVhUX2JsZW5kX2Z1bmNfZXh0
ZW5kZWQgOiByZXF1aXJlXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
LSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZl
YzQoMS4wKTtcbiIKLSAgICAgICAgIiAgIGdsX1NlY29uZGFyeUZyYWdDb2xvckVYVCA9IHZlYzQo
MS4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb25zdCB1bnNpZ25lZCBpbnQga01heERy
YXdCdWZmZXJzID0gM3U7Ci0gICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlcyAgICAgICA9
IG1UcmFuc2xhdG9yLT5nZXRSZXNvdXJjZXMoKTsKLSAgICByZXNvdXJjZXMuRVhUX2JsZW5kX2Z1
bmNfZXh0ZW5kZWQgID0gMTsKLSAgICByZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycyAgICAgICAg
ID0gMTsKLSAgICByZXNvdXJjZXMuTWF4RHJhd0J1ZmZlcnMgICAgICAgICAgID0ga01heERyYXdC
dWZmZXJzOwotICAgIHJlc291cmNlcy5NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnMgPSByZXNvdXJj
ZXMuTWF4RHJhd0J1ZmZlcnM7Ci0gICAgaW5pdFRyYW5zbGF0b3IocmVzb3VyY2VzKTsKLQotICAg
IGNvbnN0IHNoOjpPdXRwdXRWYXJpYWJsZSAqb3V0cHV0VmFyaWFibGUgPSBudWxscHRyOwotICAg
IHZhbGlkYXRlT3V0cHV0VmFyaWFibGVGb3JTaGFkZXIoc2Vjb25kYXJ5RnJhZ0NvbG9yU2hhZGVy
LCAwdSwgImdsX0ZyYWdDb2xvciIsICZvdXRwdXRWYXJpYWJsZSk7Ci0gICAgQVNTRVJUX05FKG91
dHB1dFZhcmlhYmxlLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfRVEoMHUsIG91dHB1dFZhcmlhYmxl
LT5hcnJheVNpemUpOwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVRfVkVDNCwgb3V0cHV0
VmFyaWFibGUtPnR5cGUpOwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfTUVESVVNX0ZMT0FULCBv
dXRwdXRWYXJpYWJsZS0+cHJlY2lzaW9uKTsKLQotICAgIG91dHB1dFZhcmlhYmxlID0gbnVsbHB0
cjsKLSAgICB2YWxpZGF0ZU91dHB1dFZhcmlhYmxlRm9yU2hhZGVyKHNlY29uZGFyeUZyYWdDb2xv
clNoYWRlciwgMXUsICJnbF9TZWNvbmRhcnlGcmFnQ29sb3JFWFQiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJm91dHB1dFZhcmlhYmxlKTsKLSAgICBBU1NFUlRfTkUob3V0
cHV0VmFyaWFibGUsIG51bGxwdHIpOwotICAgIEVYUEVDVF9FUSgwdSwgb3V0cHV0VmFyaWFibGUt
PmFycmF5U2l6ZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVF9WRUM0LCBvdXRwdXRW
YXJpYWJsZS0+dHlwZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9NRURJVU1fRkxPQVQsIG91
dHB1dFZhcmlhYmxlLT5wcmVjaXNpb24pOwotfQotCi0vLyBUZXN0IHRoYXQgZ2xfU2Vjb25kYXJ5
RnJhZ0RhdGFFWFQgYnVpbHQtaW4gdXNhZ2UgaW4gRVNTTDEgZnJhZ21lbnQgc2hhZGVyIGlzIHJl
ZmxlY3RlZCBpbiB0aGUKLS8vIG91dHB1dCB2YXJpYWJsZXMgbGlzdC4KLVRFU1RfRihDb2xsZWN0
RnJhZ21lbnRWYXJpYWJsZXNUZXN0LCBPdXRwdXRWYXJFU1NMMUVYVEJsZW5kRnVuY0V4dGVuZGVk
U2Vjb25kYXJ5RnJhZ0RhdGEpCi17Ci0gICAgY29uc3QgY2hhciAqc2Vjb25kYXJ5RnJhZ0RhdGFT
aGFkZXIgPQotICAgICAgICAiI2V4dGVuc2lvbiBHTF9FWFRfYmxlbmRfZnVuY19leHRlbmRlZCA6
IHJlcXVpcmVcbiIKLSAgICAgICAgIiNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJl
cXVpcmVcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0RhdGFbMF0gPSB2ZWM0KDEuMCk7
XG4iCi0gICAgICAgICIgICBnbF9GcmFnRGF0YVsxXSA9IHZlYzQoMC41KTtcbiIKLSAgICAgICAg
IiAgIGdsX1NlY29uZGFyeUZyYWdEYXRhRVhUWzBdID0gdmVjNCgxLjApO1xuIgotICAgICAgICAi
ICAgZ2xfU2Vjb25kYXJ5RnJhZ0RhdGFFWFRbMV0gPSB2ZWM0KDAuOCk7XG4iCi0gICAgICAgICJ9
XG4iOwotICAgIGNvbnN0IHVuc2lnbmVkIGludCBrTWF4RHJhd0J1ZmZlcnMgPSAzdTsKLSAgICBT
aEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzICAgICAgID0gbVRyYW5zbGF0b3ItPmdldFJlc291
cmNlcygpOwotICAgIHJlc291cmNlcy5FWFRfYmxlbmRfZnVuY19leHRlbmRlZCAgPSAxOwotICAg
IHJlc291cmNlcy5FWFRfZHJhd19idWZmZXJzICAgICAgICAgPSAxOwotICAgIHJlc291cmNlcy5N
YXhEcmF3QnVmZmVycyAgICAgICAgICAgPSBrTWF4RHJhd0J1ZmZlcnM7Ci0gICAgcmVzb3VyY2Vz
Lk1heER1YWxTb3VyY2VEcmF3QnVmZmVycyA9IHJlc291cmNlcy5NYXhEcmF3QnVmZmVyczsKLSAg
ICBpbml0VHJhbnNsYXRvcihyZXNvdXJjZXMpOwotCi0gICAgY29uc3Qgc2g6Ok91dHB1dFZhcmlh
YmxlICpvdXRwdXRWYXJpYWJsZSA9IG51bGxwdHI7Ci0gICAgdmFsaWRhdGVPdXRwdXRWYXJpYWJs
ZUZvclNoYWRlcihzZWNvbmRhcnlGcmFnRGF0YVNoYWRlciwgMHUsICJnbF9GcmFnRGF0YSIsICZv
dXRwdXRWYXJpYWJsZSk7Ci0gICAgQVNTRVJUX05FKG91dHB1dFZhcmlhYmxlLCBudWxscHRyKTsK
LSAgICBFWFBFQ1RfRVEoa01heERyYXdCdWZmZXJzLCBvdXRwdXRWYXJpYWJsZS0+YXJyYXlTaXpl
KTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZMT0FUX1ZFQzQsIG91dHB1dFZhcmlhYmxlLT50
eXBlKTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX01FRElVTV9GTE9BVCwgb3V0cHV0VmFyaWFi
bGUtPnByZWNpc2lvbik7Ci0KLSAgICBvdXRwdXRWYXJpYWJsZSA9IG51bGxwdHI7Ci0gICAgdmFs
aWRhdGVPdXRwdXRWYXJpYWJsZUZvclNoYWRlcihzZWNvbmRhcnlGcmFnRGF0YVNoYWRlciwgMXUs
ICJnbF9TZWNvbmRhcnlGcmFnRGF0YUVYVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAmb3V0cHV0VmFyaWFibGUpOwotICAgIEFTU0VSVF9ORShvdXRwdXRWYXJpYWJsZSwg
bnVsbHB0cik7Ci0gICAgRVhQRUNUX0VRKGtNYXhEcmF3QnVmZmVycywgb3V0cHV0VmFyaWFibGUt
PmFycmF5U2l6ZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVF9WRUM0LCBvdXRwdXRW
YXJpYWJsZS0+dHlwZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9NRURJVU1fRkxPQVQsIG91
dHB1dFZhcmlhYmxlLT5wcmVjaXNpb24pOwotfQotCi1zdGF0aWMga2hyb25vc191aW50NjRfdCBT
aW1wbGVUZXN0SGFzaChjb25zdCBjaGFyICpzdHIsIHNpemVfdCBsZW4pCi17Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihsZW4pOwotfQotCi1jbGFzcyBDb2xsZWN0SGFzaGVkVmVy
dGV4VmFyaWFibGVzVGVzdCA6IHB1YmxpYyBDb2xsZWN0VmVydGV4VmFyaWFibGVzVGVzdAotewot
ICBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICAv
LyBJbml0aWFsaXplIHRoZSB0cmFuc2xhdGUgd2l0aCBhIGhhc2ggZnVuY3Rpb24KLSAgICAgICAg
U2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKLSAgICAgICAgU2hJbml0QnVpbHRJblJlc291
cmNlcygmcmVzb3VyY2VzKTsKLSAgICAgICAgcmVzb3VyY2VzLkhhc2hGdW5jdGlvbiA9IFNpbXBs
ZVRlc3RIYXNoOwotICAgICAgICBpbml0VHJhbnNsYXRvcihyZXNvdXJjZXMpOwotICAgIH0KLX07
Ci0KLVRFU1RfRihDb2xsZWN0SGFzaGVkVmVydGV4VmFyaWFibGVzVGVzdCwgSW5zdGFuY2VkSW50
ZXJmYWNlQmxvY2spCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0g
ICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInVuaWZvcm0gYmxvY2tOYW1lIHtc
biIKLSAgICAgICAgIiAgZmxvYXQgZmllbGQ7XG4iCi0gICAgICAgICJ9IGJsb2NrSW5zdGFuY2U7
IgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfUG9zaXRpb24gPSB2
ZWM0KGJsb2NrSW5zdGFuY2UuZmllbGQsIDAuMCwgMC4wLCAxLjApO1xuIgotICAgICAgICAifVxu
IjsKLQotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLQotICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PHNoOjpJbnRlcmZhY2VCbG9jaz4gJmludGVyZmFjZUJsb2NrcyA9IG1UcmFuc2xhdG9yLT5nZXRJ
bnRlcmZhY2VCbG9ja3MoKTsKLSAgICBBU1NFUlRfRVEoMXUsIGludGVyZmFjZUJsb2Nrcy5zaXpl
KCkpOwotCi0gICAgY29uc3Qgc2g6OkludGVyZmFjZUJsb2NrICZpbnRlcmZhY2VCbG9jayA9IGlu
dGVyZmFjZUJsb2Nrc1swXTsKLQotICAgIEVYUEVDVF9FUSgwdSwgaW50ZXJmYWNlQmxvY2suYXJy
YXlTaXplKTsKLSAgICBFWFBFQ1RfRkFMU0UoaW50ZXJmYWNlQmxvY2suaXNSb3dNYWpvckxheW91
dCk7Ci0gICAgRVhQRUNUX0VRKHNoOjpCTE9DS0xBWU9VVF9TSEFSRUQsIGludGVyZmFjZUJsb2Nr
LmxheW91dCk7Ci0gICAgRVhQRUNUX0VRKCJibG9ja05hbWUiLCBpbnRlcmZhY2VCbG9jay5uYW1l
KTsKLSAgICBFWFBFQ1RfRVEoImJsb2NrSW5zdGFuY2UiLCBpbnRlcmZhY2VCbG9jay5pbnN0YW5j
ZU5hbWUpOwotICAgIEVYUEVDVF9FUSgid2ViZ2xfOSIsIGludGVyZmFjZUJsb2NrLm1hcHBlZE5h
bWUpOwotICAgIEVYUEVDVF9UUlVFKGludGVyZmFjZUJsb2NrLnN0YXRpY1VzZSk7Ci0KLSAgICBB
U1NFUlRfRVEoMXUsIGludGVyZmFjZUJsb2NrLmZpZWxkcy5zaXplKCkpOwotCi0gICAgY29uc3Qg
c2g6OkludGVyZmFjZUJsb2NrRmllbGQgJmZpZWxkID0gaW50ZXJmYWNlQmxvY2suZmllbGRzWzBd
OwotCi0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9ISUdIX0ZMT0FULCBmaWVsZC5wcmVjaXNpb24p
OwotICAgIEVYUEVDVF9UUlVFKGZpZWxkLnN0YXRpY1VzZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9F
UShHTF9GTE9BVCwgZmllbGQudHlwZSk7Ci0gICAgRVhQRUNUX0VRKCJmaWVsZCIsIGZpZWxkLm5h
bWUpOwotICAgIEVYUEVDVF9FUSgid2ViZ2xfNSIsIGZpZWxkLm1hcHBlZE5hbWUpOwotICAgIEVY
UEVDVF9GQUxTRShmaWVsZC5pc1Jvd01ham9yTGF5b3V0KTsKLSAgICBFWFBFQ1RfVFJVRShmaWVs
ZC5maWVsZHMuZW1wdHkoKSk7Ci19Ci0KLVRFU1RfRihDb2xsZWN0SGFzaGVkVmVydGV4VmFyaWFi
bGVzVGVzdCwgU3RydWN0VW5pZm9ybSkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAic3RydWN0IHNU
eXBlIHtcbiIKLSAgICAgICAgIiAgZmxvYXQgZmllbGQ7XG4iCi0gICAgICAgICJ9OyIKLSAgICAg
ICAgInVuaWZvcm0gc1R5cGUgdTsiCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAg
ICIgICBnbF9Qb3NpdGlvbiA9IHZlYzQodS5maWVsZCwgMC4wLCAwLjAsIDEuMCk7XG4iCi0gICAg
ICAgICJ9XG4iOwotCi0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotCi0gICAgY29uc3QgYXV0
byAmdW5pZm9ybXMgPSBtVHJhbnNsYXRvci0+Z2V0VW5pZm9ybXMoKTsKLSAgICBBU1NFUlRfRVEo
MXUsIHVuaWZvcm1zLnNpemUoKSk7Ci0KLSAgICBjb25zdCBzaDo6VW5pZm9ybSAmdW5pZm9ybSA9
IHVuaWZvcm1zWzBdOwotCi0gICAgRVhQRUNUX0VRKDB1LCB1bmlmb3JtLmFycmF5U2l6ZSk7Ci0g
ICAgRVhQRUNUX0VRKCJ1IiwgdW5pZm9ybS5uYW1lKTsKLSAgICBFWFBFQ1RfRVEoIndlYmdsXzEi
LCB1bmlmb3JtLm1hcHBlZE5hbWUpOwotICAgIEVYUEVDVF9UUlVFKHVuaWZvcm0uc3RhdGljVXNl
KTsKLQotICAgIEFTU0VSVF9FUSgxdSwgdW5pZm9ybS5maWVsZHMuc2l6ZSgpKTsKLQotICAgIGNv
bnN0IHNoOjpTaGFkZXJWYXJpYWJsZSAmZmllbGQgPSB1bmlmb3JtLmZpZWxkc1swXTsKLQotICAg
IEVYUEVDVF9HTEVOVU1fRVEoR0xfSElHSF9GTE9BVCwgZmllbGQucHJlY2lzaW9uKTsKLSAgICAv
LyBFWFBFQ1RfVFJVRShmaWVsZC5zdGF0aWNVc2UpOyAvLyB3ZSBkb24ndCB5ZXQgc3VwcG9ydCBz
dHJ1Y3Qgc3RhdGljIHVzZQotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRkxPQVQsIGZpZWxkLnR5
cGUpOwotICAgIEVYUEVDVF9FUSgiZmllbGQiLCBmaWVsZC5uYW1lKTsKLSAgICBFWFBFQ1RfRVEo
IndlYmdsXzUiLCBmaWVsZC5tYXBwZWROYW1lKTsKLSAgICBFWFBFQ1RfVFJVRShmaWVsZC5maWVs
ZHMuZW1wdHkoKSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvY29tcGlsZXJfdGVzdHMvQ29uc3RhbnRGb2xkaW5nX3Rlc3QuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0NvbnN0YW50Rm9sZGluZ190
ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEzMmU2MzgzMTIuLjAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90
ZXN0cy9Db25zdGFudEZvbGRpbmdfdGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDI2ICsw
LDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gQ29uc3RhbnRGb2xkaW5nX3Rlc3QuY3BwOgotLy8gICBU
ZXN0cyBmb3IgY29uc3RhbnQgZm9sZGluZwotLy8KLQotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2lu
Y2x1ZGUgImFuZ2xlX2dsLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJH
TFNMQU5HL1NoYWRlckxhbmcuaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1Bvb2xB
bGxvYy5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuaCIK
LQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBDb25zdGFudEZpbmRlciA6IHB1YmxpYyBU
SW50ZXJtVHJhdmVyc2VyCi17Ci0gIHB1YmxpYzoKLSAgICBDb25zdGFudEZpbmRlcihjb25zdCBz
dGQ6OnZlY3RvcjxUPiAmY29uc3RhbnRWZWN0b3IpCi0gICAgICAgIDogVEludGVybVRyYXZlcnNl
cih0cnVlLCBmYWxzZSwgZmFsc2UpLAotICAgICAgICAgIG1Db25zdGFudFZlY3Rvcihjb25zdGFu
dFZlY3RvciksCi0gICAgICAgICAgbUZhdWx0VG9sZXJhbmNlKFQoKSksCi0gICAgICAgICAgbUZv
dW5kKGZhbHNlKQotICAgIHt9Ci0KLSAgICBDb25zdGFudEZpbmRlcihjb25zdCBzdGQ6OnZlY3Rv
cjxUPiAmY29uc3RhbnRWZWN0b3IsIGNvbnN0IFQgJmZhdWx0VG9sZXJhbmNlKQotICAgICAgICA6
IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgZmFsc2UsIGZhbHNlKSwKLSAgICAgICAgbUNvbnN0YW50
VmVjdG9yKGNvbnN0YW50VmVjdG9yKSwKLSAgICAgICAgbUZhdWx0VG9sZXJhbmNlKGZhdWx0VG9s
ZXJhbmNlKSwKLSAgICAgICAgbUZvdW5kKGZhbHNlKQotICAgIHt9Ci0KLSAgICBDb25zdGFudEZp
bmRlcihjb25zdCBUICZ2YWx1ZSkKLSAgICAgICAgOiBUSW50ZXJtVHJhdmVyc2VyKHRydWUsIGZh
bHNlLCBmYWxzZSksCi0gICAgICAgICAgbUZhdWx0VG9sZXJhbmNlKFQoKSksCi0gICAgICAgICAg
bUZvdW5kKGZhbHNlKQotICAgIHsKLSAgICAgICAgbUNvbnN0YW50VmVjdG9yLnB1c2hfYmFjayh2
YWx1ZSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdENvbnN0YW50VW5pb24oVEludGVybUNvbnN0
YW50VW5pb24gKm5vZGUpCi0gICAgewotICAgICAgICBpZiAobm9kZS0+Z2V0VHlwZSgpLmdldE9i
amVjdFNpemUoKSA9PSBtQ29uc3RhbnRWZWN0b3Iuc2l6ZSgpKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBib29sIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbUNvbnN0YW50VmVjdG9yLnNpemUoKTsgaSsrKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGlmICghaXNFcXVhbChub2RlLT5nZXRVbmlvbkFycmF5UG9pbnRlcigpW2ldLCBtQ29u
c3RhbnRWZWN0b3JbaV0pKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
Zm91bmQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGZvdW5kKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIG1Gb3VuZCA9IGZvdW5kOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgYm9vbCBmb3VuZCgpIGNvbnN0IHsgcmV0dXJuIG1Gb3VuZDsgfQot
Ci0gIHByaXZhdGU6Ci0gICAgYm9vbCBpc0VxdWFsKGNvbnN0IFRDb25zdGFudFVuaW9uICZub2Rl
LCBjb25zdCBmbG9hdCAmdmFsdWUpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbUZhdWx0
VG9sZXJhbmNlID49IGZhYnNmKG5vZGUuZ2V0RkNvbnN0KCkgLSB2YWx1ZSk7Ci0gICAgfQotCi0g
ICAgYm9vbCBpc0VxdWFsKGNvbnN0IFRDb25zdGFudFVuaW9uICZub2RlLCBjb25zdCBpbnQgJnZh
bHVlKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1GYXVsdFRvbGVyYW5jZSA8IHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkpOwotICAgICAgICAvLyBhYnMoKSByZXR1cm5zIDAg
YXQgbGVhc3Qgb24gc29tZSBwbGF0Zm9ybXMgd2hlbiB0aGUgbWluaW11bSBpbnQgdmFsdWUgaXMg
cGFzc2VkIGluIChpdAotICAgICAgICAvLyBkb2Vzbid0IGhhdmUgYSBwb3NpdGl2ZSBjb3VudGVy
cGFydCkuCi0gICAgICAgIHJldHVybiBtRmF1bHRUb2xlcmFuY2UgPj0gYWJzKG5vZGUuZ2V0SUNv
bnN0KCkgLSB2YWx1ZSkgJiYKLSAgICAgICAgICAgICAgIChub2RlLmdldElDb25zdCgpIC0gdmFs
dWUpICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWluKCk7Ci0gICAgfQotCi0gICAgYm9v
bCBpc0VxdWFsKGNvbnN0IFRDb25zdGFudFVuaW9uICZub2RlLCBjb25zdCB1bnNpZ25lZCBpbnQg
JnZhbHVlKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKG1GYXVsdFRvbGVyYW5jZSA8IHN0
YXRpY19jYXN0PHVuc2lnbmVkIGludD4oc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkp
OwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihtRmF1bHRUb2xlcmFuY2UpID49Ci0g
ICAgICAgICAgICAgICAgICAgYWJzKHN0YXRpY19jYXN0PGludD4obm9kZS5nZXRVQ29uc3QoKSAt
IHZhbHVlKSkgJiYKLSAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4obm9kZS5nZXRVQ29u
c3QoKSAtIHZhbHVlKSAhPSBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1pbigpOwotICAgIH0K
LQotICAgIGJvb2wgaXNFcXVhbChjb25zdCBUQ29uc3RhbnRVbmlvbiAmbm9kZSwgY29uc3QgYm9v
bCAmdmFsdWUpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbm9kZS5nZXRCQ29uc3QoKSA9
PSB2YWx1ZTsKLSAgICB9Ci0KLSAgICBzdGQ6OnZlY3RvcjxUPiBtQ29uc3RhbnRWZWN0b3I7Ci0g
ICAgVCBtRmF1bHRUb2xlcmFuY2U7Ci0gICAgYm9vbCBtRm91bmQ7Ci19OwotCi1jbGFzcyBDb25z
dGFudEZvbGRpbmdUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QKLXsKLSAgcHVibGljOgotICAg
IENvbnN0YW50Rm9sZGluZ1Rlc3QoKSB7fQotCi0gIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZv
aWQgU2V0VXAoKQotICAgIHsKLSAgICAgICAgYWxsb2NhdG9yLnB1c2goKTsKLSAgICAgICAgU2V0
R2xvYmFsUG9vbEFsbG9jYXRvcigmYWxsb2NhdG9yKTsKLSAgICAgICAgU2hCdWlsdEluUmVzb3Vy
Y2VzIHJlc291cmNlczsKLSAgICAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2Vz
KTsKLQotICAgICAgICBtVHJhbnNsYXRvckVTU0wgPSBuZXcgVHJhbnNsYXRvckVTU0woR0xfRlJB
R01FTlRfU0hBREVSLCBTSF9HTEVTM19TUEVDKTsKLSAgICAgICAgQVNTRVJUX1RSVUUobVRyYW5z
bGF0b3JFU1NMLT5Jbml0KHJlc291cmNlcykpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBU
ZWFyRG93bigpCi0gICAgewotICAgICAgICBkZWxldGUgbVRyYW5zbGF0b3JFU1NMOwotICAgICAg
ICBTZXRHbG9iYWxQb29sQWxsb2NhdG9yKE5VTEwpOwotICAgICAgICBhbGxvY2F0b3IucG9wKCk7
Ci0gICAgfQotCi0gICAgdm9pZCBjb21waWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzaGFkZXJTdHJp
bmcpCi0gICAgewotICAgICAgICBjb25zdCBjaGFyICpzaGFkZXJTdHJpbmdzW10gPSB7IHNoYWRl
clN0cmluZy5jX3N0cigpIH07Ci0KLSAgICAgICAgbUFTVFJvb3QgPSBtVHJhbnNsYXRvckVTU0wt
PmNvbXBpbGVUcmVlRm9yVGVzdGluZyhzaGFkZXJTdHJpbmdzLCAxLCBTSF9PQkpFQ1RfQ09ERSk7
Ci0gICAgICAgIGlmICghbUFTVFJvb3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFRJbmZvU2lu
ayAmaW5mb1NpbmsgPSBtVHJhbnNsYXRvckVTU0wtPmdldEluZm9TaW5rKCk7Ci0gICAgICAgICAg
ICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBpbnRvIEVTU0wgZmFpbGVkICIgPDwgaW5m
b1NpbmsuaW5mby5jX3N0cigpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+Ci0gICAgYm9vbCBjb25zdGFudEZvdW5kSW5BU1QoVCBjb25zdGFudCkKLSAgICB7
Ci0gICAgICAgIENvbnN0YW50RmluZGVyPFQ+IGZpbmRlcihjb25zdGFudCk7Ci0gICAgICAgIG1B
U1RSb290LT50cmF2ZXJzZSgmZmluZGVyKTsKLSAgICAgICAgcmV0dXJuIGZpbmRlci5mb3VuZCgp
OwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIGJvb2wgY29uc3RhbnRW
ZWN0b3JGb3VuZEluQVNUKGNvbnN0IHN0ZDo6dmVjdG9yPFQ+ICZjb25zdGFudFZlY3RvcikKLSAg
ICB7Ci0gICAgICAgIENvbnN0YW50RmluZGVyPFQ+IGZpbmRlcihjb25zdGFudFZlY3Rvcik7Ci0g
ICAgICAgIG1BU1RSb290LT50cmF2ZXJzZSgmZmluZGVyKTsKLSAgICAgICAgcmV0dXJuIGZpbmRl
ci5mb3VuZCgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIGJvb2wg
Y29uc3RhbnRDb2x1bW5NYWpvck1hdHJpeEZvdW5kSW5BU1QoY29uc3Qgc3RkOjp2ZWN0b3I8VD4g
JmNvbnN0YW50TWF0cml4KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnN0YW50VmVjdG9yRm91
bmRJbkFTVChjb25zdGFudE1hdHJpeCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci0gICAgYm9vbCBjb25zdGFudFZlY3Rvck5lYXJGb3VuZEluQVNUKGNvbnN0IHN0ZDo6dmVj
dG9yPFQ+ICZjb25zdGFudFZlY3RvciwgY29uc3QgVCAmZmF1bHRUb2xlcmFuY2UpCi0gICAgewot
ICAgICAgICBDb25zdGFudEZpbmRlcjxUPiBmaW5kZXIoY29uc3RhbnRWZWN0b3IsIGZhdWx0VG9s
ZXJhbmNlKTsKLSAgICAgICAgbUFTVFJvb3QtPnRyYXZlcnNlKCZmaW5kZXIpOwotICAgICAgICBy
ZXR1cm4gZmluZGVyLmZvdW5kKCk7Ci0gICAgfQotCi0gIHByaXZhdGU6Ci0gICAgVHJhbnNsYXRv
ckVTU0wgKm1UcmFuc2xhdG9yRVNTTDsKLSAgICBUSW50ZXJtTm9kZSAqbUFTVFJvb3Q7Ci0KLSAg
ICBUUG9vbEFsbG9jYXRvciBhbGxvY2F0b3I7Ci19OwotCi1URVNUX0YoQ29uc3RhbnRGb2xkaW5n
VGVzdCwgRm9sZEludGVnZXJBZGQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IGludCBteV9JbnQ7XG4iCi0gICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBjb25zdCBpbnQgaSA9IDExMjQgKyA1O1xuIgot
ICAgICAgICAiICAgbXlfSW50ID0gaTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShz
aGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9GQUxTRShjb25zdGFudEZvdW5kSW5BU1QoMTEyNCkp
OwotICAgIEFTU0VSVF9GQUxTRShjb25zdGFudEZvdW5kSW5BU1QoNSkpOwotICAgIEFTU0VSVF9U
UlVFKGNvbnN0YW50Rm91bmRJbkFTVCgxMTI5KSk7Ci19Ci0KLVRFU1RfRihDb25zdGFudEZvbGRp
bmdUZXN0LCBGb2xkSW50ZWdlclN1YikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgaW50IG15X0ludDtcbiIKLSAgICAgICAg
InZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGNvbnN0IGludCBpID0gMTEyNCAtIDU7XG4i
Ci0gICAgICAgICIgICBteV9JbnQgPSBpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxl
KHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGNvbnN0YW50Rm91bmRJbkFTVCgxMTI0
KSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGNvbnN0YW50Rm91bmRJbkFTVCg1KSk7Ci0gICAgQVNTRVJU
X1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKDExMTkpKTsKLX0KLQotVEVTVF9GKENvbnN0YW50Rm9s
ZGluZ1Rlc3QsIEZvbGRJbnRlZ2VyTXVsKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCBpbnQgbXlfSW50O1xuIgotICAgICAg
ICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgY29uc3QgaW50IGkgPSAxMTI0ICogNTtc
biIKLSAgICAgICAgIiAgIG15X0ludCA9IGk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBp
bGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfRkFMU0UoY29uc3RhbnRGb3VuZEluQVNUKDEx
MjQpKTsKLSAgICBBU1NFUlRfRkFMU0UoY29uc3RhbnRGb3VuZEluQVNUKDUpKTsKLSAgICBBU1NF
UlRfVFJVRShjb25zdGFudEZvdW5kSW5BU1QoNTYyMCkpOwotfQotCi1URVNUX0YoQ29uc3RhbnRG
b2xkaW5nVGVzdCwgRm9sZEludGVnZXJEaXYpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IGludCBteV9JbnQ7XG4iCi0gICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBjb25zdCBpbnQgaSA9IDExMjQgLyA1
O1xuIgotICAgICAgICAiICAgbXlfSW50ID0gaTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29t
cGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9GQUxTRShjb25zdGFudEZvdW5kSW5BU1Qo
MTEyNCkpOwotICAgIEFTU0VSVF9GQUxTRShjb25zdGFudEZvdW5kSW5BU1QoNSkpOwotICAgIC8v
IFJvdW5kaW5nIG1vZGUgb2YgZGl2aXNpb24gaXMgdW5kZWZpbmVkIGluIHRoZSBzcGVjIGJ1dCBB
TkdMRSBjYW4gYmUgZXhwZWN0ZWQgdG8gcm91bmQgZG93bi4KLSAgICBBU1NFUlRfVFJVRShjb25z
dGFudEZvdW5kSW5BU1QoMjI0KSk7Ci19Ci0KLVRFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBG
b2xkSW50ZWdlck1vZHVsdXMpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IGludCBteV9JbnQ7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCi0gICAgICAgICIgICBjb25zdCBpbnQgaSA9IDExMjQgJSA1O1xuIgotICAg
ICAgICAiICAgbXlfSW50ID0gaTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFk
ZXJTdHJpbmcpOwotICAgIEFTU0VSVF9GQUxTRShjb25zdGFudEZvdW5kSW5BU1QoMTEyNCkpOwot
ICAgIEFTU0VSVF9GQUxTRShjb25zdGFudEZvdW5kSW5BU1QoNSkpOwotICAgIEFTU0VSVF9UUlVF
KGNvbnN0YW50Rm91bmRJbkFTVCg0KSk7Ci19Ci0KLVRFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0
LCBGb2xkVmVjdG9yQ3Jvc3NQcm9kdWN0KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWMzIG15X1ZlYzM7IgotICAgICAg
ICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgY29uc3QgdmVjMyB2MyA9IGNyb3NzKHZl
YzMoMS4wZiwgMS4wZiwgMS4wZiksIHZlYzMoMS4wZiwgLTEuMGYsIDEuMGYpKTtcbiIKLSAgICAg
ICAgIiAgIG15X1ZlYzMgPSB2MztcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFk
ZXJTdHJpbmcpOwotICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBpbnB1dDEoMywgMS4wZik7Ci0gICAg
QVNTRVJUX0ZBTFNFKGNvbnN0YW50VmVjdG9yRm91bmRJbkFTVChpbnB1dDEpKTsKLSAgICBzdGQ6
OnZlY3RvcjxmbG9hdD4gaW5wdXQyOwotICAgIGlucHV0Mi5wdXNoX2JhY2soMS4wZik7Ci0gICAg
aW5wdXQyLnB1c2hfYmFjaygtMS4wZik7Ci0gICAgaW5wdXQyLnB1c2hfYmFjaygxLjBmKTsKLSAg
ICBBU1NFUlRfRkFMU0UoY29uc3RhbnRWZWN0b3JGb3VuZEluQVNUKGlucHV0MikpOwotICAgIHN0
ZDo6dmVjdG9yPGZsb2F0PiByZXN1bHQ7Ci0gICAgcmVzdWx0LnB1c2hfYmFjaygyLjBmKTsKLSAg
ICByZXN1bHQucHVzaF9iYWNrKDAuMGYpOwotICAgIHJlc3VsdC5wdXNoX2JhY2soLTIuMGYpOwot
ICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50VmVjdG9yRm91bmRJbkFTVChyZXN1bHQpKTsKLX0KLQot
Ly8gRm9sZE14Tk1hdHJpeEludmVyc2UgdGVzdHMgY2hlY2sgaWYgdGhlIG1hdHJpeCAnaW52ZXJz
ZScgb3BlcmF0aW9uCi0vLyBvbiBNeE4gbWF0cml4IGlzIGNvbnN0YW50IGZvbGRlZCB3aGVuIGFy
Z3VtZW50IGlzIGNvbnN0YW50IGV4cHJlc3Npb24gYW5kIGFsc28KLS8vIGNoZWNrcyB0aGUgY29y
cmVjdG5lc3Mgb2YgdGhlIHJlc3VsdCByZXR1cm5lZCBieSB0aGUgY29uc3RhbnQgZm9sZGluZyBv
cGVyYXRpb24uCi0vLyBBbGwgdGhlIG1hdHJpY2VzIGluY2x1ZGluZyBtYXRyaWNlcyBpbiB0aGUg
c2hhZGVyIGNvZGUgYXJlIGluIGNvbHVtbi1tYWpvciBvcmRlci4KLVRFU1RfRihDb25zdGFudEZv
bGRpbmdUZXN0LCBGb2xkMngyTWF0cml4SW52ZXJzZSkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJpbiBmbG9hdCBpO1xuIgotICAg
ICAgICAib3V0IHZlYzIgbXlfVmVjO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAg
ICAgICAiICAgY29uc3QgbWF0MiBtMiA9IGludmVyc2UobWF0MigyLjBmLCAzLjBmLFxuIgotICAg
ICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1LjBmLCA3LjBmKSk7XG4iCi0g
ICAgICAgICIgICBtYXQyIG0gPSBtMiAqIG1hdDIoaSk7XG4iCi0gICAgICAgICIgICBteV9WZWMg
PSBtWzBdO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0g
ICAgZmxvYXQgaW5wdXRFbGVtZW50c1tdID0KLSAgICB7Ci0gICAgICAgIDIuMGYsIDMuMGYsCi0g
ICAgICAgIDUuMGYsIDcuMGYKLSAgICB9OwotICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBpbnB1dChp
bnB1dEVsZW1lbnRzLCBpbnB1dEVsZW1lbnRzICsgNCk7Ci0gICAgQVNTRVJUX0ZBTFNFKGNvbnN0
YW50Q29sdW1uTWFqb3JNYXRyaXhGb3VuZEluQVNUKGlucHV0KSk7Ci0gICAgZmxvYXQgb3V0cHV0
RWxlbWVudHNbXSA9Ci0gICAgewotICAgICAgICAtNy4wZiwgMy4wZiwKLSAgICAgICAgNS4wZiwg
LTIuMGYKLSAgICB9OwotICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiByZXN1bHQob3V0cHV0RWxlbWVu
dHMsIG91dHB1dEVsZW1lbnRzICsgNCk7Ci0gICAgQVNTRVJUX1RSVUUoY29uc3RhbnRDb2x1bW5N
YWpvck1hdHJpeEZvdW5kSW5BU1QocmVzdWx0KSk7Ci19Ci0KLS8vIENoZWNrIGlmIHRoZSBtYXRy
aXggJ2ludmVyc2UnIG9wZXJhdGlvbiBvbiAzeDMgbWF0cml4IGlzIGNvbnN0YW50IGZvbGRlZC4K
LVRFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkM3gzTWF0cml4SW52ZXJzZSkKLXsKLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMw
MCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJp
biBmbG9hdCBpO1xuIgotICAgICAgICAib3V0IHZlYzMgbXlfVmVjO1xuIgotICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgotICAgICAgICAiICAgY29uc3QgbWF0MyBtMyA9IGludmVyc2UobWF0Mygx
MS4wZiwgMTMuMGYsIDE5LjBmLFxuIgotICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAyMy4wZiwgMjkuMGYsIDMxLjBmLFxuIgotICAgICAgICAiICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzNy4wZiwgNDEuMGYsIDQzLjBmKSk7XG4iCi0gICAgICAgICIgICBt
YXQzIG0gPSBtMyAqIG1hdDMoaSk7XG4iCi0gICAgICAgICIgICBteV9WZWMgPSBtM1swXTtcbiIK
LSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIGZsb2F0IGlu
cHV0RWxlbWVudHNbXSA9Ci0gICAgewotICAgICAgICAxMS4wZiwgMTMuMGYsIDE5LjBmLAotICAg
ICAgICAyMy4wZiwgMjkuMGYsIDMxLjBmLAotICAgICAgICAzNy4wZiwgNDEuMGYsIDQzLjBmCi0g
ICAgfTsKLSAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gaW5wdXQoaW5wdXRFbGVtZW50cywgaW5wdXRF
bGVtZW50cyArIDkpOwotICAgIEFTU0VSVF9GQUxTRShjb25zdGFudFZlY3RvckZvdW5kSW5BU1Qo
aW5wdXQpKTsKLSAgICBmbG9hdCBvdXRwdXRFbGVtZW50c1tdID0KLSAgICB7Ci0gICAgICAgIDMu
MGYgLyA4NS4wZiwgLTExLjBmIC8gMzQuMGYsIDM3LjBmIC8gMTcwLjBmLAotICAgICAgICAtNzku
MGYgLyAzNDAuMGYsIDIzLjBmIC8gNjguMGYsIC0xMi4wZiAvIDg1LjBmLAotICAgICAgICAxMy4w
ZiAvIDY4LjBmLCAtMy4wZiAvIDY4LjBmLCAtMS4wZiAvIDM0LjBmCi0gICAgfTsKLSAgICBzdGQ6
OnZlY3RvcjxmbG9hdD4gcmVzdWx0KG91dHB1dEVsZW1lbnRzLCBvdXRwdXRFbGVtZW50cyArIDkp
OwotICAgIGNvbnN0IGZsb2F0IGZsb2F0RmF1bHRUb2xlcmFuY2UgPSAwLjAwMDAwMWY7Ci0gICAg
QVNTRVJUX1RSVUUoY29uc3RhbnRWZWN0b3JOZWFyRm91bmRJbkFTVChyZXN1bHQsIGZsb2F0RmF1
bHRUb2xlcmFuY2UpKTsKLX0KLQotLy8gQ2hlY2sgaWYgdGhlIG1hdHJpeCAnaW52ZXJzZScgb3Bl
cmF0aW9uIG9uIDR4NCBtYXRyaXggaXMgY29uc3RhbnQgZm9sZGVkLgotVEVTVF9GKENvbnN0YW50
Rm9sZGluZ1Rlc3QsIEZvbGQ0eDRNYXRyaXhJbnZlcnNlKQotewotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImluIGZsb2F0IGk7XG4iCi0g
ICAgICAgICJvdXQgdmVjNCBteV9WZWM7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0g
ICAgICAgICIgICBjb25zdCBtYXQ0IG00ID0gaW52ZXJzZShtYXQ0KDI5LjBmLCAzMS4wZiwgMzcu
MGYsIDQxLjBmLFxuIgotICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0
My4wZiwgNDcuMGYsIDUzLjBmLCA1OS4wZixcbiIKLSAgICAgICAgIiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgNjEuMGYsIDY3LjBmLCA3MS4wZiwgNzMuMGYsXG4iCi0gICAgICAgICIg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc5LjBmLCA4My4wZiwgODkuMGYsIDk3LjBm
KSk7XG4iCi0gICAgICAgICIgICBtYXQ0IG0gPSBtNCAqIG1hdDQoaSk7XG4iCi0gICAgICAgICIg
ICBteV9WZWMgPSBtWzBdO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0
cmluZyk7Ci0gICAgZmxvYXQgaW5wdXRFbGVtZW50c1tdID0KLSAgICB7Ci0gICAgICAgIDI5LjBm
LCAzMS4wZiwgMzcuMGYsIDQxLjBmLAotICAgICAgICA0My4wZiwgNDcuMGYsIDUzLjBmLCA1OS4w
ZiwKLSAgICAgICAgNjEuMGYsIDY3LjBmLCA3MS4wZiwgNzMuMGYsCi0gICAgICAgIDc5LjBmLCA4
My4wZiwgODkuMGYsIDk3LjBmCi0gICAgfTsKLSAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gaW5wdXQo
aW5wdXRFbGVtZW50cywgaW5wdXRFbGVtZW50cyArIDE2KTsKLSAgICBBU1NFUlRfRkFMU0UoY29u
c3RhbnRWZWN0b3JGb3VuZEluQVNUKGlucHV0KSk7Ci0gICAgZmxvYXQgb3V0cHV0RWxlbWVudHNb
XSA9Ci0gICAgewotICAgICAgICA0My4wZiAvIDEyNi4wZiwgLTExLjBmIC8gMjEuMGYsIC0yLjBm
IC8gMjEuMGYsIDMxLjBmIC8gMTI2LjBmLAotICAgICAgICAtNS4wZiAvIDcuMGYsIDkuMGYgLyAx
NC4wZiwgMS4wZiAvIDE0LjBmLCAtMS4wZiAvIDcuMGYsCi0gICAgICAgIDg1LjBmIC8gMTI2LjBm
LCAtMTEuMGYgLyAyMS4wZiwgNDMuMGYgLyAyMTAuMGYsIC0zOC4wZiAvIDMxNS4wZiwKLSAgICAg
ICAgLTIuMGYgLyA3LjBmLCA1LjBmIC8gMTQuMGYsIC02LjBmIC8gMzUuMGYsIDMuMGYgLyA3MC4w
ZgotICAgIH07Ci0gICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHJlc3VsdChvdXRwdXRFbGVtZW50cywg
b3V0cHV0RWxlbWVudHMgKyAxNik7Ci0gICAgY29uc3QgZmxvYXQgZmxvYXRGYXVsdFRvbGVyYW5j
ZSA9IDAuMDAwMDFmOwotICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50VmVjdG9yTmVhckZvdW5kSW5B
U1QocmVzdWx0LCBmbG9hdEZhdWx0VG9sZXJhbmNlKSk7Ci19Ci0KLS8vIEZvbGRNeE5NYXRyaXhE
ZXRlcm1pbmFudCB0ZXN0cyBjaGVjayBpZiB0aGUgbWF0cml4ICdkZXRlcm1pbmFudCcgb3BlcmF0
aW9uCi0vLyBvbiBNeE4gbWF0cml4IGlzIGNvbnN0YW50IGZvbGRlZCB3aGVuIGFyZ3VtZW50IGlz
IGNvbnN0YW50IGV4cHJlc3Npb24gYW5kIGFsc28KLS8vIGNoZWNrcyB0aGUgY29ycmVjdG5lc3Mg
b2YgdGhlIHJlc3VsdCByZXR1cm5lZCBieSB0aGUgY29uc3RhbnQgZm9sZGluZyBvcGVyYXRpb24u
Ci0vLyBBbGwgdGhlIG1hdHJpY2VzIGluY2x1ZGluZyBtYXRyaWNlcyBpbiB0aGUgc2hhZGVyIGNv
ZGUgYXJlIGluIGNvbHVtbi1tYWpvciBvcmRlci4KLVRFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0
LCBGb2xkMngyTWF0cml4RGV0ZXJtaW5hbnQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IGZsb2F0IG15X0Zsb2F0OyIKLSAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGNvbnN0IGZsb2F0IGYgPSBkZXRl
cm1pbmFudChtYXQyKDIuMGYsIDMuMGYsXG4iCi0gICAgICAgICIgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICA1LjBmLCA3LjBmKSk7XG4iCi0gICAgICAgICIgICBteV9GbG9hdCA9
IGY7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBm
bG9hdCBpbnB1dEVsZW1lbnRzW10gPQotICAgIHsKLSAgICAgICAgMi4wZiwgMy4wZiwKLSAgICAg
ICAgNS4wZiwgNy4wZgotICAgIH07Ci0gICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IGlucHV0KGlucHV0
RWxlbWVudHMsIGlucHV0RWxlbWVudHMgKyA0KTsKLSAgICBBU1NFUlRfRkFMU0UoY29uc3RhbnRD
b2x1bW5NYWpvck1hdHJpeEZvdW5kSW5BU1QoaW5wdXQpKTsKLSAgICBBU1NFUlRfVFJVRShjb25z
dGFudEZvdW5kSW5BU1QoLTEuMGYpKTsKLX0KLQotLy8gQ2hlY2sgaWYgdGhlIG1hdHJpeCAnZGV0
ZXJtaW5hbnQnIG9wZXJhdGlvbiBvbiAzeDMgbWF0cml4IGlzIGNvbnN0YW50IGZvbGRlZC4KLVRF
U1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkM3gzTWF0cml4RGV0ZXJtaW5hbnQpCi17Ci0g
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAi
b3V0IGZsb2F0IG15X0Zsb2F0OyIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAg
IiAgIGNvbnN0IGZsb2F0IGYgPSBkZXRlcm1pbmFudChtYXQzKDExLjBmLCAxMy4wZiwgMTkuMGYs
XG4iCi0gICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMy4wZiwg
MjkuMGYsIDMxLjBmLFxuIgotICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMzcuMGYsIDQxLjBmLCA0My4wZikpO1xuIgotICAgICAgICAiICAgbXlfRmxvYXQgPSBm
O1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgZmxv
YXQgaW5wdXRFbGVtZW50c1tdID0KLSAgICB7Ci0gICAgICAgIDExLjBmLCAxMy4wZiwgMTkuMGYs
Ci0gICAgICAgIDIzLjBmLCAyOS4wZiwgMzEuMGYsCi0gICAgICAgIDM3LjBmLCA0MS4wZiwgNDMu
MGYKLSAgICB9OwotICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBpbnB1dChpbnB1dEVsZW1lbnRzLCBp
bnB1dEVsZW1lbnRzICsgOSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGNvbnN0YW50Q29sdW1uTWFqb3JN
YXRyaXhGb3VuZEluQVNUKGlucHV0KSk7Ci0gICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZElu
QVNUKC02ODAuMGYpKTsKLX0KLQotLy8gQ2hlY2sgaWYgdGhlIG1hdHJpeCAnZGV0ZXJtaW5hbnQn
IG9wZXJhdGlvbiBvbiA0eDQgbWF0cml4IGlzIGNvbnN0YW50IGZvbGRlZC4KLVRFU1RfRihDb25z
dGFudEZvbGRpbmdUZXN0LCBGb2xkNHg0TWF0cml4RGV0ZXJtaW5hbnQpCi17Ci0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIK
LSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IGZsb2F0
IG15X0Zsb2F0OyIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGNvbnN0
IGZsb2F0IGYgPSBkZXRlcm1pbmFudChtYXQ0KDI5LjBmLCAzMS4wZiwgMzcuMGYsIDQxLjBmLFxu
IgotICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNDMuMGYsIDQ3
LjBmLCA1My4wZiwgNTkuMGYsXG4iCi0gICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA2MS4wZiwgNjcuMGYsIDcxLjBmLCA3My4wZixcbiIKLSAgICAgICAgIiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDc5LjBmLCA4My4wZiwgODkuMGYsIDk3LjBm
KSk7XG4iCi0gICAgICAgICIgICBteV9GbG9hdCA9IGY7XG4iCi0gICAgICAgICJ9XG4iOwotICAg
IGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBmbG9hdCBpbnB1dEVsZW1lbnRzW10gPQotICAg
IHsKLSAgICAgICAgMjkuMGYsIDMxLjBmLCAzNy4wZiwgNDEuMGYsCi0gICAgICAgIDQzLjBmLCA0
Ny4wZiwgNTMuMGYsIDU5LjBmLAotICAgICAgICA2MS4wZiwgNjcuMGYsIDcxLjBmLCA3My4wZiwK
LSAgICAgICAgNzkuMGYsIDgzLjBmLCA4OS4wZiwgOTcuMGYKLSAgICB9OwotICAgIHN0ZDo6dmVj
dG9yPGZsb2F0PiBpbnB1dChpbnB1dEVsZW1lbnRzLCBpbnB1dEVsZW1lbnRzICsgMTYpOwotICAg
IEFTU0VSVF9GQUxTRShjb25zdGFudENvbHVtbk1ham9yTWF0cml4Rm91bmRJbkFTVChpbnB1dCkp
OwotICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJbkFTVCgtMjUyMC4wZikpOwotfQotCi0v
LyBDaGVjayBpZiB0aGUgbWF0cml4ICd0cmFuc3Bvc2UnIG9wZXJhdGlvbiBvbiAzeDMgbWF0cml4
IGlzIGNvbnN0YW50IGZvbGRlZC4KLS8vIEFsbCB0aGUgbWF0cmljZXMgaW5jbHVkaW5nIG1hdHJp
Y2VzIGluIHRoZSBzaGFkZXIgY29kZSBhcmUgaW4gY29sdW1uLW1ham9yIG9yZGVyLgotVEVTVF9G
KENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGQzeDNNYXRyaXhUcmFuc3Bvc2UpCi17Ci0gICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAiaW4gZmxv
YXQgaTtcbiIKLSAgICAgICAgIm91dCB2ZWMzIG15X1ZlYztcbiIKLSAgICAgICAgInZvaWQgbWFp
bigpIHtcbiIKLSAgICAgICAgIiAgIGNvbnN0IG1hdDMgbTMgPSB0cmFuc3Bvc2UobWF0MygxMS4w
ZiwgMTMuMGYsIDE5LjBmLFxuIgotICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDIzLjBmLCAyOS4wZiwgMzEuMGYsXG4iCi0gICAgICAgICIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMzcuMGYsIDQxLjBmLCA0My4wZikpO1xuIgotICAgICAgICAiICAg
bWF0MyBtID0gbTMgKiBtYXQzKGkpO1xuIgotICAgICAgICAiICAgbXlfVmVjID0gbVswXTtcbiIK
LSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIGZsb2F0IGlu
cHV0RWxlbWVudHNbXSA9Ci0gICAgewotICAgICAgICAxMS4wZiwgMTMuMGYsIDE5LjBmLAotICAg
ICAgICAyMy4wZiwgMjkuMGYsIDMxLjBmLAotICAgICAgICAzNy4wZiwgNDEuMGYsIDQzLjBmCi0g
ICAgfTsKLSAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gaW5wdXQoaW5wdXRFbGVtZW50cywgaW5wdXRF
bGVtZW50cyArIDkpOwotICAgIEFTU0VSVF9GQUxTRShjb25zdGFudENvbHVtbk1ham9yTWF0cml4
Rm91bmRJbkFTVChpbnB1dCkpOwotICAgIGZsb2F0IG91dHB1dEVsZW1lbnRzW10gPQotICAgIHsK
LSAgICAgICAgMTEuMGYsIDIzLjBmLCAzNy4wZiwKLSAgICAgICAgMTMuMGYsIDI5LjBmLCA0MS4w
ZiwKLSAgICAgICAgMTkuMGYsIDMxLjBmLCA0My4wZgotICAgIH07Ci0gICAgc3RkOjp2ZWN0b3I8
ZmxvYXQ+IHJlc3VsdChvdXRwdXRFbGVtZW50cywgb3V0cHV0RWxlbWVudHMgKyA5KTsKLSAgICBB
U1NFUlRfVFJVRShjb25zdGFudENvbHVtbk1ham9yTWF0cml4Rm91bmRJbkFTVChyZXN1bHQpKTsK
LX0KLQotLy8gVGVzdCB0aGF0IDB4RkZGRkZGRkYgd3JhcHMgdG8gLTEgd2hlbiBwYXJzZWQgYXMg
aW50ZWdlci4KLS8vIFRoaXMgaXMgZmVhdHVyZWQgaW4gdGhlIGV4YW1wbGVzIG9mIEVTU0wzIHNl
Y3Rpb24gNC4xLjMuIEVTU0wzIHNlY3Rpb24gMTIuNDIKLS8vIG1lYW5zIHRoYXQgYW55IDMyLWJp
dCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlIGlzIGEgdmFsaWQgbGl0ZXJhbC4KLVRFU1RfRihDb25z
dGFudEZvbGRpbmdUZXN0LCBQYXJzZVdyYXBwZWRIZXhJbnRMaXRlcmFsKQotewotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4i
Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInByZWNpc2lv
biBoaWdocCBpbnQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIGludCBpbkludDtcbiIKLSAgICAgICAg
Im91dCB2ZWM0IG15X1ZlYztcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAg
IiAgIGNvbnN0IGludCBpID0gMHhGRkZGRkZGRjtcbiIKLSAgICAgICAgIiAgIG15X1ZlYyA9IHZl
YzQoaSAqIGluSW50KTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJp
bmcpOwotICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJbkFTVCgtMSkpOwotfQotCi0vLyBU
ZXN0IHRoYXQgMzAwMDAwMDAwMCB3cmFwcyB0byAtMTI5NDk2NzI5NiB3aGVuIHBhcnNlZCBhcyBp
bnRlZ2VyLgotLy8gVGhpcyBpcyBmZWF0dXJlZCBpbiB0aGUgZXhhbXBsZXMgb2YgR0xTTCA0LjUs
IGFuZCBFU1NMIGJlaGF2aW9yIHNob3VsZCBtYXRjaAotLy8gZGVza3RvcCBHTFNMIHdoZW4gaXQg
Y29tZXMgdG8gaW50ZWdlciBwYXJzaW5nLgotVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIFBh
cnNlV3JhcHBlZERlY2ltYWxJbnRMaXRlcmFsKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInByZWNpc2lvbiBoaWdocCBpbnQ7XG4i
Ci0gICAgICAgICJ1bmlmb3JtIGludCBpbkludDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X1Zl
YztcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGNvbnN0IGludCBp
ID0gMzAwMDAwMDAwMDtcbiIKLSAgICAgICAgIiAgIG15X1ZlYyA9IHZlYzQoaSAqIGluSW50KTtc
biIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VS
VF9UUlVFKGNvbnN0YW50Rm91bmRJbkFTVCgtMTI5NDk2NzI5NikpOwotfQotCi0vLyBUZXN0IHRo
YXQgMHhGRkZGRkZGRnUgaXMgcGFyc2VkIGNvcnJlY3RseSBhcyBhbiB1bnNpZ25lZCBpbnRlZ2Vy
IGxpdGVyYWwuCi0vLyBUaGlzIGlzIGZlYXR1cmVkIGluIHRoZSBleGFtcGxlcyBvZiBFU1NMMyBz
ZWN0aW9uIDQuMS4zLiBFU1NMMyBzZWN0aW9uIDEyLjQyCi0vLyBtZWFucyB0aGF0IGFueSAzMi1i
aXQgdW5zaWduZWQgaW50ZWdlciB2YWx1ZSBpcyBhIHZhbGlkIGxpdGVyYWwuCi1URVNUX0YoQ29u
c3RhbnRGb2xkaW5nVGVzdCwgUGFyc2VNYXhVaW50TGl0ZXJhbCkKLXsKLSAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJwcmVjaXNpb24gaGln
aHAgaW50O1xuIgotICAgICAgICAidW5pZm9ybSB1aW50IGluSW50O1xuIgotICAgICAgICAib3V0
IHZlYzQgbXlfVmVjO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAg
Y29uc3QgdWludCBpID0gMHhGRkZGRkZGRnU7XG4iCi0gICAgICAgICIgICBteV9WZWMgPSB2ZWM0
KGkgKiBpbkludCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5n
KTsKLSAgICBBU1NFUlRfVFJVRShjb25zdGFudEZvdW5kSW5BU1QoMHhGRkZGRkZGRnUpKTsKLX0K
LQotLy8gVGVzdCB0aGF0IHVuYXJ5IG1pbnVzIGFwcGxpZWQgdG8gdW5zaWduZWQgaW50IGlzIGNv
bnN0YW50IGZvbGRlZCBjb3JyZWN0bHkuCi0vLyBUaGlzIGlzIGZlYXR1cmVkIGluIHRoZSBleGFt
cGxlcyBvZiBFU1NMMyBzZWN0aW9uIDQuMS4zLiBFU1NMMyBzZWN0aW9uIDEyLjQyCi0vLyBtZWFu
cyB0aGF0IGFueSAzMi1iaXQgdW5zaWduZWQgaW50ZWdlciB2YWx1ZSBpcyBhIHZhbGlkIGxpdGVy
YWwuCi1URVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZFVuYXJ5TWludXNPblVpbnRMaXRl
cmFsKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAi
I3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
LSAgICAgICAgInByZWNpc2lvbiBoaWdocCBpbnQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHVpbnQg
aW5JbnQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9WZWM7XG4iCi0gICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iCi0gICAgICAgICIgICBjb25zdCB1aW50IGkgPSAtMXU7XG4iCi0gICAgICAgICIg
ICBteV9WZWMgPSB2ZWM0KGkgKiBpbkludCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBp
bGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShjb25zdGFudEZvdW5kSW5BU1QoMHhG
RkZGRkZGRnUpKTsKLX0KLQotLy8gVGVzdCB0aGF0IGNvbnN0YW50IG1hdDIgaW5pdGlhbGl6YXRp
b24gd2l0aCBhIG1hdDIgcGFyYW1ldGVyIHdvcmtzIGNvcnJlY3RseS4KLVRFU1RfRihDb25zdGFu
dEZvbGRpbmdUZXN0LCBGb2xkTWF0MkNvbnN0cnVjdG9yVGFraW5nTWF0MikKLXsKLSAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCBtdWx0O1xuIgotICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgotICAgICAgICAiICAgY29uc3QgbWF0MiBjbSA9IG1hdDIobWF0MigwLjAs
IDEuMCwgMi4wLCAzLjApKTtcbiIKLSAgICAgICAgIiAgIG1hdDIgbSA9IGNtICogbXVsdDtcbiIK
LSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQobVswXSwgbVsxXSk7XG4iCi0gICAgICAg
ICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBmbG9hdCBvdXRwdXRFbGVt
ZW50c1tdID0KLSAgICB7Ci0gICAgICAgIDAuMGYsIDEuMGYsCi0gICAgICAgIDIuMGYsIDMuMGYK
LSAgICB9OwotICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiByZXN1bHQob3V0cHV0RWxlbWVudHMsIG91
dHB1dEVsZW1lbnRzICsgNCk7Ci0gICAgQVNTRVJUX1RSVUUoY29uc3RhbnRDb2x1bW5NYWpvck1h
dHJpeEZvdW5kSW5BU1QocmVzdWx0KSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBjb25zdGFudCBtYXQy
IGluaXRpYWxpemF0aW9uIHdpdGggYW4gaW50IHBhcmFtZXRlciB3b3JrcyBjb3JyZWN0bHkuCi1U
RVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZE1hdDJDb25zdHJ1Y3RvclRha2luZ1NjYWxh
cikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCBtdWx0O1xu
IgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgY29uc3QgbWF0MiBjbSA9
IG1hdDIoMyk7XG4iCi0gICAgICAgICIgICBtYXQyIG0gPSBjbSAqIG11bHQ7XG4iCi0gICAgICAg
ICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KG1bMF0sIG1bMV0pO1xuIgotICAgICAgICAifVxuIjsK
LSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgZmxvYXQgb3V0cHV0RWxlbWVudHNbXSA9
Ci0gICAgewotICAgICAgICAzLjBmLCAwLjBmLAotICAgICAgICAwLjBmLCAzLjBmCi0gICAgfTsK
LSAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gcmVzdWx0KG91dHB1dEVsZW1lbnRzLCBvdXRwdXRFbGVt
ZW50cyArIDQpOwotICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Q29sdW1uTWFqb3JNYXRyaXhGb3Vu
ZEluQVNUKHJlc3VsdCkpOwotfQotCi0vLyBUZXN0IHRoYXQgY29uc3RhbnQgbWF0MiBpbml0aWFs
aXphdGlvbiB3aXRoIGEgbWl4IG9mIHBhcmFtZXRlcnMgd29ya3MgY29ycmVjdGx5LgotVEVTVF9G
KENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGRNYXQyQ29uc3RydWN0b3JUYWtpbmdNaXgpCi17Ci0g
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgbXVsdDtcbiIKLSAgICAg
ICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGNvbnN0IG1hdDIgY20gPSBtYXQyKC0x
LCB2ZWMyKDAuMCwgMS4wKSwgdmVjNCgyLjApKTtcbiIKLSAgICAgICAgIiAgIG1hdDIgbSA9IGNt
ICogbXVsdDtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQobVswXSwgbVsxXSk7
XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBmbG9h
dCBvdXRwdXRFbGVtZW50c1tdID0KLSAgICB7Ci0gICAgICAgIC0xLjAsIDAuMGYsCi0gICAgICAg
IDEuMGYsIDIuMGYKLSAgICB9OwotICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiByZXN1bHQob3V0cHV0
RWxlbWVudHMsIG91dHB1dEVsZW1lbnRzICsgNCk7Ci0gICAgQVNTRVJUX1RSVUUoY29uc3RhbnRD
b2x1bW5NYWpvck1hdHJpeEZvdW5kSW5BU1QocmVzdWx0KSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBj
b25zdGFudCBtYXQyIGluaXRpYWxpemF0aW9uIHdpdGggYSBtYXQzIHBhcmFtZXRlciB3b3JrcyBj
b3JyZWN0bHkuCi1URVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZE1hdDJDb25zdHJ1Y3Rv
clRha2luZ01hdDMpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0g
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxv
YXQgbXVsdDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGNvbnN0
IG1hdDIgY20gPSBtYXQyKG1hdDMoMC4wLCAxLjAsIDIuMCwgMy4wLCA0LjAsIDUuMCwgNi4wLCA3
LjAsIDguMCkpO1xuIgotICAgICAgICAiICAgbWF0MiBtID0gY20gKiBtdWx0O1xuIgotICAgICAg
ICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChtWzBdLCBtWzFdKTtcbiIKLSAgICAgICAgIn1cbiI7
Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIGZsb2F0IG91dHB1dEVsZW1lbnRzW10g
PQotICAgIHsKLSAgICAgICAgMC4wZiwgMS4wZiwKLSAgICAgICAgMy4wZiwgNC4wZgotICAgIH07
Ci0gICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHJlc3VsdChvdXRwdXRFbGVtZW50cywgb3V0cHV0RWxl
bWVudHMgKyA0KTsKLSAgICBBU1NFUlRfVFJVRShjb25zdGFudENvbHVtbk1ham9yTWF0cml4Rm91
bmRJbkFTVChyZXN1bHQpKTsKLX0KLQotLy8gVGVzdCB0aGF0IGNvbnN0YW50IG1hdDR4MyBpbml0
aWFsaXphdGlvbiB3aXRoIGEgbWF0M3gyIHBhcmFtZXRlciB3b3JrcyBjb3JyZWN0bHkuCi1URVNU
X0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZE1hdDR4M0NvbnN0cnVjdG9yVGFraW5nTWF0M3gy
KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAg
ICAgICAgInVuaWZvcm0gZmxvYXQgbXVsdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdD
b2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGNvbnN0IG1h
dDR4MyBjbSA9IG1hdDR4MyhtYXQzeDIoMS4wLCAyLjAsXG4iCi0gICAgICAgICIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIDMuMCwgNC4wLFxuIgotICAgICAgICAiICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICA1LjAsIDYuMCkpO1xuIgotICAgICAgICAiICAgbWF0
NHgzIG0gPSBjbSAqIG11bHQ7XG4iCi0gICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KG1b
MF0sIG1bMV1bMF0pO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmlu
Zyk7Ci0gICAgZmxvYXQgb3V0cHV0RWxlbWVudHNbXSA9Ci0gICAgewotICAgICAgICAxLjBmLCAy
LjBmLCAwLjBmLAotICAgICAgICAzLjBmLCA0LjBmLCAwLjBmLAotICAgICAgICA1LjBmLCA2LjBm
LCAxLjBmLAotICAgICAgICAwLjBmLCAwLjBmLCAwLjBmCi0gICAgfTsKLSAgICBzdGQ6OnZlY3Rv
cjxmbG9hdD4gcmVzdWx0KG91dHB1dEVsZW1lbnRzLCBvdXRwdXRFbGVtZW50cyArIDEyKTsKLSAg
ICBBU1NFUlRfVFJVRShjb25zdGFudENvbHVtbk1ham9yTWF0cml4Rm91bmRJbkFTVChyZXN1bHQp
KTsKLX0KLQotCi0vLyBUZXN0IHRoYXQgY29uc3RhbnQgbWF0MiBpbml0aWFsaXphdGlvbiB3aXRo
IGEgdmVjNCBwYXJhbWV0ZXIgd29ya3MgY29ycmVjdGx5LgotVEVTVF9GKENvbnN0YW50Rm9sZGlu
Z1Rlc3QsIEZvbGRNYXQyQ29uc3RydWN0b3JUYWtpbmdWZWM0KQotewotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IG11bHQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCi0gICAgICAgICIgICBjb25zdCBtYXQyIGNtID0gbWF0Mih2ZWM0KDAuMCwgMS4wLCAy
LjAsIDMuMCkpO1xuIgotICAgICAgICAiICAgbWF0MiBtID0gY20gKiBtdWx0O1xuIgotICAgICAg
ICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChtWzBdLCBtWzFdKTtcbiIKLSAgICAgICAgIn1cbiI7
Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIGZsb2F0IG91dHB1dEVsZW1lbnRzW10g
PQotICAgIHsKLSAgICAgICAgMC4wZiwgMS4wZiwKLSAgICAgICAgMi4wZiwgMy4wZgotICAgIH07
Ci0gICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHJlc3VsdChvdXRwdXRFbGVtZW50cywgb3V0cHV0RWxl
bWVudHMgKyA0KTsKLSAgICBBU1NFUlRfVFJVRShjb25zdGFudENvbHVtbk1ham9yTWF0cml4Rm91
bmRJbkFTVChyZXN1bHQpKTsKLX0KLQotLy8gVGVzdCB0aGF0IGVxdWFsaXR5IGNvbXBhcmlzb24g
b2YgdHdvIGRpZmZlcmVudCBzdHJ1Y3RzIHdpdGggYSBuZXN0ZWQgc3RydWN0IGluc2lkZSByZXR1
cm5zIGZhbHNlLgotVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGROZXN0ZWREaWZmZXJl
bnRTdHJ1Y3RFcXVhbGl0eUNvbXBhcmlzb24pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAg
ICAgInN0cnVjdCBuZXN0ZWQge1xuIgotICAgICAgICAiICAgIGZsb2F0IGZcbjsiCi0gICAgICAg
ICJ9O1xuIgotICAgICAgICAic3RydWN0IFMge1xuIgotICAgICAgICAiICAgIG5lc3RlZCBhO1xu
IgotICAgICAgICAiICAgIGZsb2F0IGY7XG4iCi0gICAgICAgICJ9O1xuIgotICAgICAgICAidW5p
Zm9ybSB2ZWM0IG11bHQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xu
IgotICAgICAgICAiICAgIGNvbnN0IFMgczEgPSBTKG5lc3RlZCgwLjApLCAyLjApO1xuIgotICAg
ICAgICAiICAgIGNvbnN0IFMgczIgPSBTKG5lc3RlZCgwLjApLCAzLjApO1xuIgotICAgICAgICAi
ICAgIGdsX0ZyYWdDb2xvciA9IChzMSA9PSBzMiA/IDEuMCA6IDAuNSkgKiBtdWx0O1xuIgotICAg
ICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUo
Y29uc3RhbnRGb3VuZEluQVNUKDAuNWYpKTsKLX0KLQotLy8gVGVzdCB0aGF0IGVxdWFsaXR5IGNv
bXBhcmlzb24gb2YgdHdvIGlkZW50aWNhbCBzdHJ1Y3RzIHdpdGggYSBuZXN0ZWQgc3RydWN0IGlu
c2lkZSByZXR1cm5zIHRydWUuCi1URVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZE5lc3Rl
ZElkZW50aWNhbFN0cnVjdEVxdWFsaXR5Q29tcGFyaXNvbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgotICAgICAgICAic3RydWN0IG5lc3RlZCB7XG4iCi0gICAgICAgICIgICAgZmxvYXQgZlxuOyIK
LSAgICAgICAgIn07XG4iCi0gICAgICAgICJzdHJ1Y3QgUyB7XG4iCi0gICAgICAgICIgICAgbmVz
dGVkIGE7XG4iCi0gICAgICAgICIgICAgZmxvYXQgZjtcbiIKLSAgICAgICAgIiAgICBpbnQgaTtc
biIKLSAgICAgICAgIn07XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgbXVsdDtcbiIKLSAgICAg
ICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgY29uc3QgUyBz
MSA9IFMobmVzdGVkKDAuMCksIDIuMCwgMyk7XG4iCi0gICAgICAgICIgICAgY29uc3QgUyBzMiA9
IFMobmVzdGVkKDAuMCksIDIuMCwgMyk7XG4iCi0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0g
KHMxID09IHMyID8gMS4wIDogMC41KSAqIG11bHQ7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNv
bXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShjb25zdGFudEZvdW5kSW5BU1Qo
MS4wZikpOwotfQotCi0vLyBUZXN0IHRoYXQgcmlnaHQgZWxlbWVudHMgYXJlIGNob3NlbiBmcm9t
IG5vbi1zcXVhcmUgbWF0cml4Ci1URVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZE5vblNx
dWFyZU1hdHJpeEluZGV4aW5nKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAg
ICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgbXlfRnJhZ0Nv
bG9yID0gbWF0M3g0KDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSlbMV07XG4i
Ci0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBmbG9hdCBv
dXRwdXRFbGVtZW50c1tdID0gezQuMGYsIDUuMGYsIDYuMGYsIDcuMGZ9OwotICAgIHN0ZDo6dmVj
dG9yPGZsb2F0PiByZXN1bHQob3V0cHV0RWxlbWVudHMsIG91dHB1dEVsZW1lbnRzICsgNCk7Ci0g
ICAgQVNTRVJUX1RSVUUoY29uc3RhbnRWZWN0b3JGb3VuZEluQVNUKHJlc3VsdCkpOwotfQotCi0v
LyBUZXN0IHRoYXQgZm9sZGluZyBvdXRlciBwcm9kdWN0IG9mIHZlY3RvcnMgd2l0aCBub24tbWF0
Y2hpbmcgbGVuZ3RocyB3b3Jrcy4KLVRFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkTm9u
U3F1YXJlT3V0ZXJQcm9kdWN0KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAg
ICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgbWF0M3gyIHBy
b2QgPSBvdXRlclByb2R1Y3QodmVjMigyLjAsIDMuMCksIHZlYzMoNS4wLCA3LjAsIDExLjApKTtc
biIKLSAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KHByb2RbMF0ueCk7XG4iCi0gICAg
ICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICAvLyBjbGFuZy1mb3Jt
YXQgb2ZmCi0gICAgZmxvYXQgb3V0cHV0RWxlbWVudHNbXSA9Ci0gICAgewotICAgICAgICAxMC4w
ZiwgMTUuMGYsCi0gICAgICAgIDE0LjBmLCAyMS4wZiwKLSAgICAgICAgMjIuMGYsIDMzLjBmCi0g
ICAgfTsKLSAgICAvLyBjbGFuZy1mb3JtYXQgb24KLSAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gcmVz
dWx0KG91dHB1dEVsZW1lbnRzLCBvdXRwdXRFbGVtZW50cyArIDYpOwotICAgIEFTU0VSVF9UUlVF
KGNvbnN0YW50Q29sdW1uTWFqb3JNYXRyaXhGb3VuZEluQVNUKHJlc3VsdCkpOwotfQotCi0vLyBU
ZXN0IHRoYXQgZm9sZGluZyBiaXQgc2hpZnQgbGVmdCB3aXRoIG5vbi1tYXRjaGluZyBzaWduZWRu
ZXNzIHdvcmtzLgotVEVTVF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGRCaXRTaGlmdExlZnRE
aWZmZXJlbnRTaWduZWRuZXNzKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAg
ICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgdWludCB1ID0g
MHhmZmZmZmZmZnUgPDwgMzE7XG4iCi0gICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCh1
KTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFT
U0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJbkFTVCgweDgwMDAwMDAwdSkpOwotfQotCi0vLyBUZXN0
IHRoYXQgZm9sZGluZyBiaXQgc2hpZnQgcmlnaHQgd2l0aCBub24tbWF0Y2hpbmcgc2lnbmVkbmVz
cyB3b3Jrcy4KLVRFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkQml0U2hpZnRSaWdodERp
ZmZlcmVudFNpZ25lZG5lc3MpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAg
ICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICB1aW50IHUgPSAw
eGZmZmZmZmZmdSA+PiAzMDtcbiIKLSAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KHUp
O1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNT
RVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKDB4M3UpKTsKLX0KLQotLy8gVGVzdCB0aGF0IGZv
bGRpbmcgc2lnbmVkIGJpdCBzaGlmdCByaWdodCBleHRlbmRzIHRoZSBzaWduIGJpdC4KLS8vIEVT
U0wgMy4wMC42IHNlY3Rpb24gNS45IEV4cHJlc3Npb25zLgotVEVTVF9GKENvbnN0YW50Rm9sZGlu
Z1Rlc3QsIEZvbGRCaXRTaGlmdFJpZ2h0RXh0ZW5kU2lnbkJpdCkKLXsKLSAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9G
cmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAg
ICAgICAiICAgIGNvbnN0IGludCBpID0gMHg4ZmZmZTAwMCA+PiA2O1xuIgotICAgICAgICAiICAg
IHVpbnQgdSA9IHVpbnQoaSk7IgotICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQodSk7
XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICAvLyBU
aGUgYml0cyBvZiB0aGUgb3BlcmFuZCBhcmUgMHg4ZmZmZTAwMCA9IDEwMDAgMTExMSAxMTExIDEx
MTEgMTExMCAwMDAwIDAwMDAgMDAwMAotICAgIC8vIEFmdGVyIHNoaWZ0aW5nLCB0aGV5IGJlY29t
ZSAgICAgICAgICAgICAgMTExMSAxMTEwIDAwMTEgMTExMSAxMTExIDExMTEgMTAwMCAwMDAwID0g
MHhmZTNmZmY4MAotICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJbkFTVCgweGZlM2ZmZjgw
dSkpOwotfQotCi0vLyBTaWduZWQgYml0IHNoaWZ0IGxlZnQgc2hvdWxkIGludGVycHJldCBpdHMg
b3BlcmFuZCBhcyBhIGJpdCBwYXR0ZXJuLiBBcyBhIGNvbnNlcXVlbmNlIGEgbnVtYmVyCi0vLyBt
YXkgdHVybiBmcm9tIHBvc2l0aXZlIHRvIG5lZ2F0aXZlIHdoZW4gc2hpZnRlZCBsZWZ0LgotLy8g
RVNTTCAzLjAwLjYgc2VjdGlvbiA1LjkgRXhwcmVzc2lvbnMuCi1URVNUX0YoQ29uc3RhbnRGb2xk
aW5nVGVzdCwgRm9sZEJpdFNoaWZ0TGVmdEludGVycHJldGVkQXNCaXRQYXR0ZXJuKQotewotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAw
IGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91
dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAg
ICJ7XG4iCi0gICAgICAgICIgICAgY29uc3QgaW50IGkgPSAweDFmZmZmZmZmIDw8IDM7XG4iCi0g
ICAgICAgICIgICAgdWludCB1ID0gdWludChpKTsiCi0gICAgICAgICIgICAgbXlfRnJhZ0NvbG9y
ID0gdmVjNCh1KTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcp
OwotICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJbkFTVCgweGZmZmZmZmY4dSkpOwotfQot
Ci0vLyBUZXN0IHRoYXQgZGl2aWRpbmcgdGhlIG1pbmltdW0gc2lnbmVkIGludGVnZXIgYnkgLTEg
d29ya3MuCi0vLyBFU1NMIDMuMDAuNiBzZWN0aW9uIDQuMS4zIEludGVnZXJzOgotLy8gIkhvd2V2
ZXIsIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgbWluaW11bSByZXByZXNlbnRhYmxlIHZhbHVlIGlz
IGRpdmlkZWQgYnkgLTEsIGl0IGlzIGFsbG93ZWQgdG8KLS8vIHJldHVybiBlaXRoZXIgdGhlIG1p
bmltdW0gcmVwcmVzZW50YWJsZSB2YWx1ZSBvciB0aGUgbWF4aW11bSByZXByZXNlbnRhYmxlIHZh
bHVlLiIKLVRFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkRGl2aWRlTWluaW11bUludGVn
ZXJCeU1pbnVzT25lKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQot
ICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgaW50IGkgPSAweDgwMDAw
MDAwIC8gKC0xKTtcbiIKLSAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGkpO1xuIgot
ICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RS
VUUoY29uc3RhbnRGb3VuZEluQVNUKDB4N2ZmZmZmZmYpIHx8IGNvbnN0YW50Rm91bmRJbkFTVCgt
MHg3ZmZmZmZmZiAtIDEpKTsKLX0KLQotLy8gVGVzdCB0aGF0IGZvbGRpbmcgYW4gdW5zaWduZWQg
aW50ZWdlciBhZGRpdGlvbiB0aGF0IG92ZXJmbG93cyB3b3Jrcy4KLS8vIEVTU0wgMy4wMC42IHNl
Y3Rpb24gNC4xLjMgSW50ZWdlcnM6Ci0vLyAiRm9yIGFsbCBwcmVjaXNpb25zLCBvcGVyYXRpb25z
IHJlc3VsdGluZyBpbiBvdmVyZmxvdyBvciB1bmRlcmZsb3cgd2lsbCBub3QgY2F1c2UgYW55IGV4
Y2VwdGlvbiwKLS8vIG5vciB3aWxsIHRoZXkgc2F0dXJhdGUsIHJhdGhlciB0aGV5IHdpbGwgJ3dy
YXAnIHRvIHlpZWxkIHRoZSBsb3ctb3JkZXIgbiBiaXRzIG9mIHRoZSByZXN1bHQgd2hlcmUKLS8v
IG4gaXMgdGhlIHNpemUgaW4gYml0cyBvZiB0aGUgaW50ZWdlci4iCi1URVNUX0YoQ29uc3RhbnRG
b2xkaW5nVGVzdCwgRm9sZFVuc2lnbmVkSW50ZWdlckFkZE92ZXJmbG93KQotewotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4i
Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0
IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4i
Ci0gICAgICAgICIgICAgdWludCB1ID0gMHhmZmZmZmZmZnUgKyA0M3U7XG4iCi0gICAgICAgICIg
ICAgbXlfRnJhZ0NvbG9yID0gdmVjNCh1KTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGls
ZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJbkFTVCg0MnUp
KTsKLX0KLQotLy8gVGVzdCB0aGF0IGZvbGRpbmcgYSBzaWduZWQgaW50ZWdlciBhZGRpdGlvbiB0
aGF0IG92ZXJmbG93cyB3b3Jrcy4KLS8vIEVTU0wgMy4wMC42IHNlY3Rpb24gNC4xLjMgSW50ZWdl
cnM6Ci0vLyAiRm9yIGFsbCBwcmVjaXNpb25zLCBvcGVyYXRpb25zIHJlc3VsdGluZyBpbiBvdmVy
ZmxvdyBvciB1bmRlcmZsb3cgd2lsbCBub3QgY2F1c2UgYW55IGV4Y2VwdGlvbiwKLS8vIG5vciB3
aWxsIHRoZXkgc2F0dXJhdGUsIHJhdGhlciB0aGV5IHdpbGwgJ3dyYXAnIHRvIHlpZWxkIHRoZSBs
b3ctb3JkZXIgbiBiaXRzIG9mIHRoZSByZXN1bHQgd2hlcmUKLS8vIG4gaXMgdGhlIHNpemUgaW4g
Yml0cyBvZiB0aGUgaW50ZWdlci4iCi1URVNUX0YoQ29uc3RhbnRGb2xkaW5nVGVzdCwgRm9sZFNp
Z25lZEludGVnZXJBZGRPdmVyZmxvdykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIGludCBp
ID0gMHg3ZmZmZmZmZiArIDQ7XG4iCi0gICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNChp
KTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFT
U0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJbkFTVCgtMHg3ZmZmZmZmZCkpOwotfQotCi0vLyBUZXN0
IHRoYXQgZm9sZGluZyBhbiB1bnNpZ25lZCBpbnRlZ2VyIHN1YnRyYWN0aW9uIHRoYXQgb3ZlcmZs
b3dzIHdvcmtzLgotLy8gRVNTTCAzLjAwLjYgc2VjdGlvbiA0LjEuMyBJbnRlZ2VyczoKLS8vICJG
b3IgYWxsIHByZWNpc2lvbnMsIG9wZXJhdGlvbnMgcmVzdWx0aW5nIGluIG92ZXJmbG93IG9yIHVu
ZGVyZmxvdyB3aWxsIG5vdCBjYXVzZSBhbnkgZXhjZXB0aW9uLAotLy8gbm9yIHdpbGwgdGhleSBz
YXR1cmF0ZSwgcmF0aGVyIHRoZXkgd2lsbCAnd3JhcCcgdG8geWllbGQgdGhlIGxvdy1vcmRlciBu
IGJpdHMgb2YgdGhlIHJlc3VsdCB3aGVyZQotLy8gbiBpcyB0aGUgc2l6ZSBpbiBiaXRzIG9mIHRo
ZSBpbnRlZ2VyLiIKLVRFU1RfRihDb25zdGFudEZvbGRpbmdUZXN0LCBGb2xkVW5zaWduZWRJbnRl
Z2VyRGlmZk92ZXJmbG93KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcg
PQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAg
InZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgdWludCB1ID0gMHUg
LSA1dTtcbiIKLSAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgotICAgICAg
ICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUoY29u
c3RhbnRGb3VuZEluQVNUKDB4ZmZmZmZmZmJ1KSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBmb2xkaW5n
IGEgc2lnbmVkIGludGVnZXIgc3VidHJhY3Rpb24gdGhhdCBvdmVyZmxvd3Mgd29ya3MuCi0vLyBF
U1NMIDMuMDAuNiBzZWN0aW9uIDQuMS4zIEludGVnZXJzOgotLy8gIkZvciBhbGwgcHJlY2lzaW9u
cywgb3BlcmF0aW9ucyByZXN1bHRpbmcgaW4gb3ZlcmZsb3cgb3IgdW5kZXJmbG93IHdpbGwgbm90
IGNhdXNlIGFueSBleGNlcHRpb24sCi0vLyBub3Igd2lsbCB0aGV5IHNhdHVyYXRlLCByYXRoZXIg
dGhleSB3aWxsICd3cmFwJyB0byB5aWVsZCB0aGUgbG93LW9yZGVyIG4gYml0cyBvZiB0aGUgcmVz
dWx0IHdoZXJlCi0vLyBuIGlzIHRoZSBzaXplIGluIGJpdHMgb2YgdGhlIGludGVnZXIuIgotVEVT
VF9GKENvbnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGRTaWduZWRJbnRlZ2VyRGlmZk92ZXJmbG93KQot
ewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNp
b24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAg
ICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0g
ICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgaW50IGkgPSAtMHg3ZmZmZmZmZiAtIDc7XG4iCi0g
ICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNChpKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0g
ICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91bmRJ
bkFTVCgweDdmZmZmZmZhKSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBmb2xkaW5nIGFuIHVuc2lnbmVk
IGludGVnZXIgbXVsdGlwbGljYXRpb24gdGhhdCBvdmVyZmxvd3Mgd29ya3MuCi0vLyBFU1NMIDMu
MDAuNiBzZWN0aW9uIDQuMS4zIEludGVnZXJzOgotLy8gIkZvciBhbGwgcHJlY2lzaW9ucywgb3Bl
cmF0aW9ucyByZXN1bHRpbmcgaW4gb3ZlcmZsb3cgb3IgdW5kZXJmbG93IHdpbGwgbm90IGNhdXNl
IGFueSBleGNlcHRpb24sCi0vLyBub3Igd2lsbCB0aGV5IHNhdHVyYXRlLCByYXRoZXIgdGhleSB3
aWxsICd3cmFwJyB0byB5aWVsZCB0aGUgbG93LW9yZGVyIG4gYml0cyBvZiB0aGUgcmVzdWx0IHdo
ZXJlCi0vLyBuIGlzIHRoZSBzaXplIGluIGJpdHMgb2YgdGhlIGludGVnZXIuIgotVEVTVF9GKENv
bnN0YW50Rm9sZGluZ1Rlc3QsIEZvbGRVbnNpZ25lZEludGVnZXJNdWx0aXBseU92ZXJmbG93KQot
ewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNp
b24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAg
ICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0g
ICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgdWludCB1ID0gMHhmZmZmZmZmZnUgKiAxMHU7XG4i
Ci0gICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCh1KTtcbiIKLSAgICAgICAgIn1cbiI7
Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGNvbnN0YW50Rm91
bmRJbkFTVCgweGZmZmZmZmY2dSkpOwotfQotCi0vLyBUZXN0IHRoYXQgZm9sZGluZyBhIHNpZ25l
ZCBpbnRlZ2VyIG11bHRpcGxpY2F0aW9uIHRoYXQgb3ZlcmZsb3dzIHdvcmtzLgotLy8gRVNTTCAz
LjAwLjYgc2VjdGlvbiA0LjEuMyBJbnRlZ2VyczoKLS8vICJGb3IgYWxsIHByZWNpc2lvbnMsIG9w
ZXJhdGlvbnMgcmVzdWx0aW5nIGluIG92ZXJmbG93IG9yIHVuZGVyZmxvdyB3aWxsIG5vdCBjYXVz
ZSBhbnkgZXhjZXB0aW9uLAotLy8gbm9yIHdpbGwgdGhleSBzYXR1cmF0ZSwgcmF0aGVyIHRoZXkg
d2lsbCAnd3JhcCcgdG8geWllbGQgdGhlIGxvdy1vcmRlciBuIGJpdHMgb2YgdGhlIHJlc3VsdCB3
aGVyZQotLy8gbiBpcyB0aGUgc2l6ZSBpbiBiaXRzIG9mIHRoZSBpbnRlZ2VyLiIKLVRFU1RfRihD
b25zdGFudEZvbGRpbmdUZXN0LCBGb2xkU2lnbmVkSW50ZWdlck11bHRpcGx5T3ZlcmZsb3cpCi17
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lv
biAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAg
ICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAg
ICAgICAgIntcbiIKLSAgICAgICAgIiAgICBpbnQgaSA9IDB4N2ZmZmZmZmYgKiA0MjtcbiIKLSAg
ICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGkpO1xuIgotICAgICAgICAifVxuIjsKLSAg
ICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZElu
QVNUKC00MikpOwotfQotCi0vLyBUZXN0IHRoYXQgZm9sZGluZyBvZiBuZWdhdGluZyB0aGUgbWlu
aW11bSByZXByZXNlbnRhYmxlIGludGVnZXIgd29ya3MuIE5vdGUgdGhhdCBpbiB0aGUgdGVzdAot
Ly8gIjB4ODAwMDAwMDAiIGlzIGEgbmVnYXRpdmUgbGl0ZXJhbCwgYW5kIHRoZSBtaW51cyBzaWdu
IGJlZm9yZSBpdCBpcyB0aGUgbmVnYXRpb24gb3BlcmF0b3IuCi0vLyBFU1NMIDMuMDAuNiBzZWN0
aW9uIDQuMS4zIEludGVnZXJzOgotLy8gIkZvciBhbGwgcHJlY2lzaW9ucywgb3BlcmF0aW9ucyBy
ZXN1bHRpbmcgaW4gb3ZlcmZsb3cgb3IgdW5kZXJmbG93IHdpbGwgbm90IGNhdXNlIGFueSBleGNl
cHRpb24sCi0vLyBub3Igd2lsbCB0aGV5IHNhdHVyYXRlLCByYXRoZXIgdGhleSB3aWxsICd3cmFw
JyB0byB5aWVsZCB0aGUgbG93LW9yZGVyIG4gYml0cyBvZiB0aGUgcmVzdWx0IHdoZXJlCi0vLyBu
IGlzIHRoZSBzaXplIGluIGJpdHMgb2YgdGhlIGludGVnZXIuIgotVEVTVF9GKENvbnN0YW50Rm9s
ZGluZ1Rlc3QsIEZvbGRNaW5pbXVtU2lnbmVkSW50ZWdlck5lZ2F0aW9uKQotewotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4i
Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0
IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4i
Ci0gICAgICAgICIgICAgaW50IGkgPSAtMHg4MDAwMDAwMDtcbiIKLSAgICAgICAgIiAgICBteV9G
cmFnQ29sb3IgPSB2ZWM0KGkpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRl
clN0cmluZyk7Ci0gICAgLy8gTmVnYXRpbmcgdGhlIG1pbmltdW0gc2lnbmVkIGludGVnZXIgb3Zl
cmZsb3dzIHRoZSBwb3NpdGl2ZSByYW5nZSwgc28gaXQgd3JhcHMgYmFjayB0byBpdHNlbGYuCi0g
ICAgQVNTRVJUX1RSVUUoY29uc3RhbnRGb3VuZEluQVNUKC0weDdmZmZmZmZmIC0gMSkpOwotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rl
c3RzL0RlYnVnU2hhZGVyUHJlY2lzaW9uX3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0RlYnVnU2hhZGVyUHJlY2lzaW9uX3Rlc3QuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MjRjYjhiOWE0Ni4uMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0Rl
YnVnU2hhZGVyUHJlY2lzaW9uX3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA0NSArMCww
IEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgotLy8KLS8vIERlYnVnU2hhZGVyUHJlY2lzaW9uX3Rlc3QuY3BwOgotLy8g
ICBUZXN0cyBmb3Igd3JpdGluZyB0aGUgY29kZSBmb3Igc2hhZGVyIHByZWNpc2lvbiBlbXVsYXRp
b24uCi0vLwotCi0jaW5jbHVkZSAiYW5nbGVfZ2wuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5o
IgotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgotI2luY2x1ZGUgInRlc3RzL3Rlc3Rf
dXRpbHMvY29tcGlsZXJfdGVzdC5oIgotCi1jbGFzcyBEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3Qg
OiBwdWJsaWMgTWF0Y2hPdXRwdXRDb2RlVGVzdAotewotICBwdWJsaWM6Ci0gICAgRGVidWdTaGFk
ZXJQcmVjaXNpb25UZXN0KCkgOiBNYXRjaE91dHB1dENvZGVUZXN0KEdMX0ZSQUdNRU5UX1NIQURF
UiwgMCwgU0hfRVNTTF9PVVRQVVQpCi0gICAgewotICAgICAgICBhZGRPdXRwdXRUeXBlKFNIX0dM
U0xfQ09NUEFUSUJJTElUWV9PVVRQVVQpOwotI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX0hMU0wp
Ci0gICAgICAgIGFkZE91dHB1dFR5cGUoU0hfSExTTF80XzFfT1VUUFVUKTsKLSNlbmRpZgotICAg
ICAgICBnZXRSZXNvdXJjZXMoKS0+V0VCR0xfZGVidWdfc2hhZGVyX3ByZWNpc2lvbiA9IDE7Ci0g
ICAgfQotCi0gIHByb3RlY3RlZDoKLSAgICBib29sIGZvdW5kSW5BbGxHTFNMQ29kZShjb25zdCBj
aGFyICpzdHIpCi0gICAgewotICAgICAgICByZXR1cm4gZm91bmRJbkNvZGUoU0hfR0xTTF9DT01Q
QVRJQklMSVRZX09VVFBVVCwgc3RyKSAmJiBmb3VuZEluQ29kZShTSF9FU1NMX09VVFBVVCwgc3Ry
KTsKLSAgICB9Ci0KLSAgICBib29sIGZvdW5kSW5ITFNMQ29kZShjb25zdCBjaGFyICpzdHJpbmdU
b0ZpbmQpIGNvbnN0Ci0gICAgewotI2lmIGRlZmluZWQoQU5HTEVfRU5BQkxFX0hMU0wpCi0gICAg
ICAgIHJldHVybiBmb3VuZEluQ29kZShTSF9ITFNMXzRfMV9PVVRQVVQsIHN0cmluZ1RvRmluZCk7
Ci0jZWxzZQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotICAgIH0KLX07Ci0KLWNsYXNz
IE5vRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0IDogcHVibGljIE1hdGNoT3V0cHV0Q29kZVRlc3QK
LXsKLSAgcHVibGljOgotICAgIE5vRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0KCkKLSAgICAgICAg
OiBNYXRjaE91dHB1dENvZGVUZXN0KEdMX0ZSQUdNRU5UX1NIQURFUiwgMCwgU0hfR0xTTF9DT01Q
QVRJQklMSVRZX09VVFBVVCkKLSAgICB7Ci0gICAgfQotfTsKLQotVEVTVF9GKERlYnVnU2hhZGVy
UHJlY2lzaW9uVGVzdCwgUm91bmRpbmdGdW5jdGlvbnNEZWZpbmVkKQotewotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IHU7XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHUpO1xuIgotICAgICAgICAi
fVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJ
bkVTU0xDb2RlKCJoaWdocCBmbG9hdCBhbmdsZV9mcm0oaW4gaGlnaHAgZmxvYXQiKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCB2ZWMyIGFuZ2xlX2ZybShpbiBoaWdo
cCB2ZWMyIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgdmVjMyBh
bmdsZV9mcm0oaW4gaGlnaHAgdmVjMyIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENv
ZGUoImhpZ2hwIHZlYzQgYW5nbGVfZnJtKGluIGhpZ2hwIHZlYzQiKSk7Ci0gICAgQVNTRVJUX1RS
VUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCBtYXQyIGFuZ2xlX2ZybShpbiBoaWdocCBtYXQyIikp
OwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgbWF0MyBhbmdsZV9mcm0o
aW4gaGlnaHAgbWF0MyIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoImhpZ2hw
IG1hdDQgYW5nbGVfZnJtKGluIGhpZ2hwIG1hdDQiKSk7Ci0KLSAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluRVNTTENvZGUoImhpZ2hwIGZsb2F0IGFuZ2xlX2ZybChpbiBoaWdocCBmbG9hdCIpKTsKLSAg
ICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoImhpZ2hwIHZlYzIgYW5nbGVfZnJsKGluIGhp
Z2hwIHZlYzIiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCB2ZWMz
IGFuZ2xlX2ZybChpbiBoaWdocCB2ZWMzIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NM
Q29kZSgiaGlnaHAgdmVjNCBhbmdsZV9mcmwoaW4gaGlnaHAgdmVjNCIpKTsKLSAgICBBU1NFUlRf
VFJVRShmb3VuZEluRVNTTENvZGUoImhpZ2hwIG1hdDIgYW5nbGVfZnJsKGluIGhpZ2hwIG1hdDIi
KSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCBtYXQzIGFuZ2xlX2Zy
bChpbiBoaWdocCBtYXQzIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGln
aHAgbWF0NCBhbmdsZV9mcmwoaW4gaGlnaHAgbWF0NCIpKTsKLQotICAgIEFTU0VSVF9UUlVFKGZv
dW5kSW5HTFNMQ29kZSgiZmxvYXQgYW5nbGVfZnJtKGluIGZsb2F0IikpOwotICAgIEFTU0VSVF9U
UlVFKGZvdW5kSW5HTFNMQ29kZSgidmVjMiBhbmdsZV9mcm0oaW4gdmVjMiIpKTsKLSAgICBBU1NF
UlRfVFJVRShmb3VuZEluR0xTTENvZGUoInZlYzMgYW5nbGVfZnJtKGluIHZlYzMiKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJ2ZWM0IGFuZ2xlX2ZybShpbiB2ZWM0IikpOwot
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgibWF0MiBhbmdsZV9mcm0oaW4gbWF0MiIp
KTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoIm1hdDMgYW5nbGVfZnJtKGluIG1h
dDMiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJtYXQ0IGFuZ2xlX2ZybShp
biBtYXQ0IikpOwotCi0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJmbG9hdCBhbmds
ZV9mcmwoaW4gZmxvYXQiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJ2ZWMy
IGFuZ2xlX2ZybChpbiB2ZWMyIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgi
dmVjMyBhbmdsZV9mcmwoaW4gdmVjMyIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENv
ZGUoInZlYzQgYW5nbGVfZnJsKGluIHZlYzQiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkdM
U0xDb2RlKCJtYXQyIGFuZ2xlX2ZybChpbiBtYXQyIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5k
SW5HTFNMQ29kZSgibWF0MyBhbmdsZV9mcmwoaW4gbWF0MyIpKTsKLSAgICBBU1NFUlRfVFJVRShm
b3VuZEluR0xTTENvZGUoIm1hdDQgYW5nbGVfZnJsKGluIG1hdDQiKSk7Ci0KLSAgICBBU1NFUlRf
VFJVRShmb3VuZEluSExTTENvZGUoImZsb2F0MSBhbmdsZV9mcm0oZmxvYXQxIikpOwotICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQyIGFuZ2xlX2ZybShmbG9hdDIiKSk7Ci0g
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDMgYW5nbGVfZnJtKGZsb2F0MyIp
KTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImZsb2F0NCBhbmdsZV9mcm0oZmxv
YXQ0IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQyeDIgYW5nbGVf
ZnJtKGZsb2F0MngyIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQz
eDMgYW5nbGVfZnJtKGZsb2F0M3gzIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29k
ZSgiZmxvYXQ0eDQgYW5nbGVfZnJtKGZsb2F0NHg0IikpOwotCi0gICAgQVNTRVJUX1RSVUUoZm91
bmRJbkhMU0xDb2RlKCJmbG9hdDEgYW5nbGVfZnJsKGZsb2F0MSIpKTsKLSAgICBBU1NFUlRfVFJV
RShmb3VuZEluSExTTENvZGUoImZsb2F0MiBhbmdsZV9mcmwoZmxvYXQyIikpOwotICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQzIGFuZ2xlX2ZybChmbG9hdDMiKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDQgYW5nbGVfZnJsKGZsb2F0NCIpKTsK
LSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImZsb2F0MngyIGFuZ2xlX2ZybChmbG9h
dDJ4MiIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImZsb2F0M3gzIGFuZ2xl
X2ZybChmbG9hdDN4MyIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImZsb2F0
NHg0IGFuZ2xlX2ZybChmbG9hdDR4NCIpKTsKLQotICAgIC8vIENoZWNrIHRoYXQgRVNTTCAzLjAw
IHJvdW5kaW5nIGZ1bmN0aW9ucyBmb3Igbm9uLXNxdWFyZSBtYXRyaWNlcyBhcmUgbm90IGRlZmlu
ZWQuCi0gICAgQVNTRVJUX1RSVUUobm90Rm91bmRJbkNvZGUoIm1hdDJ4IikpOwotICAgIEFTU0VS
VF9UUlVFKG5vdEZvdW5kSW5Db2RlKCJtYXQzeCIpKTsKLSAgICBBU1NFUlRfVFJVRShub3RGb3Vu
ZEluQ29kZSgibWF0NHgiKSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBhbGwgRVNTTCAzLjAwIHNoYWRl
cnMgZ2V0IHJvdW5kaW5nIGZ1bmN0aW9uIGRlZmluaXRpb25zIGZvciBub24tc3F1YXJlIG1hdHJp
Y2VzLgotVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgTm9uU3F1YXJlTWF0cml4Um91
bmRpbmdGdW5jdGlvbnNEZWZpbmVkRVMzKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgdTtcbiIKLSAgICAg
ICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
LSAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQodSk7XG4iCi0gICAgICAgICJ9XG4iOwot
ICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENv
ZGUoImhpZ2hwIG1hdDJ4MyBhbmdsZV9mcm0oaW4gaGlnaHAgbWF0MngzIikpOwotICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgbWF0Mng0IGFuZ2xlX2ZybShpbiBoaWdocCBt
YXQyeDQiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCBtYXQzeDIg
YW5nbGVfZnJtKGluIGhpZ2hwIG1hdDN4MiIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNT
TENvZGUoImhpZ2hwIG1hdDN4NCBhbmdsZV9mcm0oaW4gaGlnaHAgbWF0M3g0IikpOwotICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgiaGlnaHAgbWF0NHgyIGFuZ2xlX2ZybShpbiBoaWdo
cCBtYXQ0eDIiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCBtYXQ0
eDMgYW5nbGVfZnJtKGluIGhpZ2hwIG1hdDR4MyIpKTsKLQotICAgIEFTU0VSVF9UUlVFKGZvdW5k
SW5FU1NMQ29kZSgiaGlnaHAgbWF0MngzIGFuZ2xlX2ZybChpbiBoaWdocCBtYXQyeDMiKSk7Ci0g
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCBtYXQyeDQgYW5nbGVfZnJsKGlu
IGhpZ2hwIG1hdDJ4NCIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoImhpZ2hw
IG1hdDN4MiBhbmdsZV9mcmwoaW4gaGlnaHAgbWF0M3gyIikpOwotICAgIEFTU0VSVF9UUlVFKGZv
dW5kSW5FU1NMQ29kZSgiaGlnaHAgbWF0M3g0IGFuZ2xlX2ZybChpbiBoaWdocCBtYXQzeDQiKSk7
Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKCJoaWdocCBtYXQ0eDIgYW5nbGVfZnJs
KGluIGhpZ2hwIG1hdDR4MiIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluRVNTTENvZGUoImhp
Z2hwIG1hdDR4MyBhbmdsZV9mcmwoaW4gaGlnaHAgbWF0NHgzIikpOwotCi0gICAgQVNTRVJUX1RS
VUUoZm91bmRJbkdMU0xDb2RlKCJtYXQyeDMgYW5nbGVfZnJtKGluIG1hdDJ4MyIpKTsKLSAgICBB
U1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoIm1hdDJ4NCBhbmdsZV9mcm0oaW4gbWF0Mng0Iikp
OwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgibWF0M3gyIGFuZ2xlX2ZybShpbiBt
YXQzeDIiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJtYXQzeDQgYW5nbGVf
ZnJtKGluIG1hdDN4NCIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoIm1hdDR4
MiBhbmdsZV9mcm0oaW4gbWF0NHgyIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29k
ZSgibWF0NHgzIGFuZ2xlX2ZybShpbiBtYXQ0eDMiKSk7Ci0KLSAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluR0xTTENvZGUoIm1hdDJ4MyBhbmdsZV9mcmwoaW4gbWF0MngzIikpOwotICAgIEFTU0VSVF9U
UlVFKGZvdW5kSW5HTFNMQ29kZSgibWF0Mng0IGFuZ2xlX2ZybChpbiBtYXQyeDQiKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJtYXQzeDIgYW5nbGVfZnJsKGluIG1hdDN4MiIp
KTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoIm1hdDN4NCBhbmdsZV9mcmwoaW4g
bWF0M3g0IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgibWF0NHgyIGFuZ2xl
X2ZybChpbiBtYXQ0eDIiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKCJtYXQ0
eDMgYW5nbGVfZnJsKGluIG1hdDR4MyIpKTsKLQotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNM
Q29kZSgiZmxvYXQyeDMgYW5nbGVfZnJtKGZsb2F0MngzIikpOwotICAgIEFTU0VSVF9UUlVFKGZv
dW5kSW5ITFNMQ29kZSgiZmxvYXQyeDQgYW5nbGVfZnJtKGZsb2F0Mng0IikpOwotICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQzeDIgYW5nbGVfZnJtKGZsb2F0M3gyIikpOwot
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQzeDQgYW5nbGVfZnJtKGZsb2F0
M3g0IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQ0eDIgYW5nbGVf
ZnJtKGZsb2F0NHgyIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQ0
eDMgYW5nbGVfZnJtKGZsb2F0NHgzIikpOwotCi0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xD
b2RlKCJmbG9hdDJ4MyBhbmdsZV9mcmwoZmxvYXQyeDMiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91
bmRJbkhMU0xDb2RlKCJmbG9hdDJ4NCBhbmdsZV9mcmwoZmxvYXQyeDQiKSk7Ci0gICAgQVNTRVJU
X1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDN4MiBhbmdsZV9mcmwoZmxvYXQzeDIiKSk7Ci0g
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDN4NCBhbmdsZV9mcmwoZmxvYXQz
eDQiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDR4MiBhbmdsZV9m
cmwoZmxvYXQ0eDIiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmbG9hdDR4
MyBhbmdsZV9mcmwoZmxvYXQ0eDMiKSk7Ci19Ci0KLVRFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lv
blRlc3QsIFByYWdtYURpc2FibGVzRW11bGF0aW9uKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ByYWdtYSB3ZWJnbF9kZWJ1Z19zaGFkZXJfcHJl
Y2lzaW9uKG9mZilcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAg
ICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAg
ICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh1KTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAg
Y29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKG5vdEZvdW5kSW5Db2RlKCJh
bmdsZV9mcm0iKSk7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZ1ByYWdtYU9u
ID0KLSAgICAgICAgIiNwcmFnbWEgd2ViZ2xfZGVidWdfc2hhZGVyX3ByZWNpc2lvbihvbilcbiIK
LSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBm
bG9hdCB1O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfRnJh
Z0NvbG9yID0gdmVjNCh1KTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJT
dHJpbmdQcmFnbWFPbik7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkNvZGUoImFuZ2xlX2ZybSIp
KTsKLX0KLQotLy8gRW11bGF0aW9uIGNhbid0IGJlIHRvZ2dsZWQgb24gZm9yIG9ubHkgYSBwYXJ0
IG9mIGEgc2hhZGVyLgotLy8gT25seSB0aGUgbGFzdCBwcmFnbWEgaW4gdGhlIHNoYWRlciBoYXMg
YW4gZWZmZWN0LgotVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgTXVsdGlwbGVQcmFn
bWFzKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAi
I3ByYWdtYSB3ZWJnbF9kZWJ1Z19zaGFkZXJfcHJlY2lzaW9uKG9mZilcbiIKLSAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgot
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVj
NCh1KTtcbiIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgIiNwcmFnbWEgd2ViZ2xfZGVidWdfc2hh
ZGVyX3ByZWNpc2lvbihvbilcbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5Db2RlKCJhbmdsZV9mcm0iKSk7Ci19Ci0KLVRFU1RfRihOb0RlYnVn
U2hhZGVyUHJlY2lzaW9uVGVzdCwgSGVscGVyc1dyaXR0ZW5Pbmx5V2l0aEV4dGVuc2lvbikKLXsK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgotICAgICAg
ICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh1KTtc
biIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VS
VF9GQUxTRShmb3VuZEluQ29kZSgiYW5nbGVfZnJtIikpOwotfQotCi1URVNUX0YoTm9EZWJ1Z1No
YWRlclByZWNpc2lvblRlc3QsIFByYWdtYUhhc0VmZmVjdHNPbmx5V2l0aEV4dGVuc2lvbikKLXsK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiNwcmFnbWEg
d2ViZ2xfZGVidWdfc2hhZGVyX3ByZWNpc2lvbihvbilcbiIKLSAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh1KTtcbiIK
LSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9G
QUxTRShmb3VuZEluQ29kZSgiYW5nbGVfZnJtIikpOwotfQotCi1URVNUX0YoRGVidWdTaGFkZXJQ
cmVjaXNpb25UZXN0LCBEZWNsYXJhdGlvbnNBbmRDb25zdGFudHMpCi17Ci0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCBmO1xuIgotICAgICAgICAidW5pZm9ybSBmbG9h
dCB1dSwgdXUyO1xuIgotICAgICAgICAidmFyeWluZyBmbG9hdCB2diwgdnYyO1xuIgotICAgICAg
ICAiZmxvYXQgZ2cgPSAwLjAsIGdnMjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAg
ICAgICAgIiAgIGZsb2F0IGFhID0gMC4wLCBhYTI7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29s
b3IgPSBmO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0g
ICAgLy8gRGVjbGFyYXRpb25zIG9yIGNvbnN0YW50cyBzaG91bGQgbm90IGhhdmUgcm91bmRpbmcg
aW5zZXJ0ZWQgYXJvdW5kIHRoZW0KLSAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgiYW5n
bGVfZnJtKDAiKSk7Ci0gICAgQVNTRVJUX1RSVUUobm90Rm91bmRJbkNvZGUoImFuZ2xlX2ZybSh1
dSIpKTsKLSAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgiYW5nbGVfZnJtKHZ2IikpOwot
ICAgIEFTU0VSVF9UUlVFKG5vdEZvdW5kSW5Db2RlKCJhbmdsZV9mcm0oZ2ciKSk7Ci0gICAgQVNT
RVJUX1RSVUUobm90Rm91bmRJbkNvZGUoImFuZ2xlX2ZybShhYSIpKTsKLX0KLQotLy8gVGVzdCB0
aGF0IGV4cHJlc3Npb25zIHRoYXQgYXJlIHBhcnQgb2YgaW5pdGlhbGl6YXRpb24gaGF2ZSByb3Vu
ZGluZy4KLVRFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIEluaXRpYWxpemVyUm91bmRp
bmcpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgdTtcbiIK
LSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGZsb2F0IGEgPSB1O1xuIgot
ICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChhKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0g
ICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIC8vIEFuIGV4cHJlc3Npb24gdGhhdCdzIHBh
cnQgb2YgaW5pdGlhbGl6YXRpb24gc2hvdWxkIGhhdmUgcm91bmRpbmcKLSAgICBBU1NFUlRfVFJV
RShmb3VuZEluQWxsR0xTTENvZGUoImFuZ2xlX2ZybSh1KSIpKTsKLSAgICBBU1NFUlRfVFJVRShm
b3VuZEluSExTTENvZGUoImFuZ2xlX2ZybShfdSkiKSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBjb21w
b3VuZCBhZGRpdGlvbnMgaGF2ZSByb3VuZGluZyBpbiB0aGUgR0xTTCB0cmFuc2xhdGlvbnMuCi1U
RVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBDb21wb3VuZEFkZEZ1bmN0aW9uKQotewot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgdTtcbiIKLSAgICAgICAg
InVuaWZvcm0gdmVjNCB1MjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAg
IiAgIHZlYzQgdiA9IHU7XG4iCi0gICAgICAgICIgICB2ICs9IHUyO1xuIgotICAgICAgICAiICAg
Z2xfRnJhZ0NvbG9yID0gdjtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJT
dHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgKLSAgICAgICAgImhpZ2hw
IHZlYzQgYW5nbGVfY29tcG91bmRfYWRkX2ZybShpbm91dCBoaWdocCB2ZWM0IHgsIGluIGhpZ2hw
IHZlYzQgeSkge1xuIgotICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICsg
eSk7IgotICAgICkpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgKLSAgICAgICAg
InZlYzQgYW5nbGVfY29tcG91bmRfYWRkX2ZybShpbm91dCB2ZWM0IHgsIGluIHZlYzQgeSkge1xu
IgotICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICsgeSk7IgotICAgICkp
OwotICAgIEFTU0VSVF9UUlVFKAotICAgICAgICBmb3VuZEluSExTTENvZGUoImZsb2F0NCBhbmds
ZV9jb21wb3VuZF9hZGRfZnJtKGlub3V0IGZsb2F0NCB4LCBpbiBmbG9hdDQgeSkge1xuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSArIHkp
OyIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImFuZ2xlX2NvbXBvdW5k
X2FkZF9mcm0odiwgYW5nbGVfZnJtKHUyKSk7IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5I
TFNMQ29kZSgiYW5nbGVfY29tcG91bmRfYWRkX2ZybShfdiwgYW5nbGVfZnJtKF91MikpOyIpKTsK
LSAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgiKz0iKSk7Ci19Ci0KLVRFU1RfRihEZWJ1
Z1NoYWRlclByZWNpc2lvblRlc3QsIENvbXBvdW5kU3ViRnVuY3Rpb24pCi17Ci0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1O1xuIgotICAgICAgICAidW5pZm9ybSB2
ZWM0IHUyO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgdmVjNCB2
ID0gdTtcbiIKLSAgICAgICAgIiAgIHYgLT0gdTI7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29s
b3IgPSB2O1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0g
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKAotICAgICAgICAiaGlnaHAgdmVjNCBhbmds
ZV9jb21wb3VuZF9zdWJfZnJtKGlub3V0IGhpZ2hwIHZlYzQgeCwgaW4gaGlnaHAgdmVjNCB5KSB7
XG4iCi0gICAgICAgICIgICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgLSB5KTsiCi0gICAg
KSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKAotICAgICAgICAidmVjNCBhbmds
ZV9jb21wb3VuZF9zdWJfZnJtKGlub3V0IHZlYzQgeCwgaW4gdmVjNCB5KSB7XG4iCi0gICAgICAg
ICIgICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgLSB5KTsiCi0gICAgKSk7Ci0gICAgQVNT
RVJUX1RSVUUoCi0gICAgICAgIGZvdW5kSW5ITFNMQ29kZSgiZmxvYXQ0IGFuZ2xlX2NvbXBvdW5k
X3N1Yl9mcm0oaW5vdXQgZmxvYXQ0IHgsIGluIGZsb2F0NCB5KSB7XG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpIC0geSk7IikpOwotICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYW5nbGVfY29tcG91bmRfc3ViX2ZybSh2
LCBhbmdsZV9mcm0odTIpKTsiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJh
bmdsZV9jb21wb3VuZF9zdWJfZnJtKF92LCBhbmdsZV9mcm0oX3UyKSk7IikpOwotICAgIEFTU0VS
VF9UUlVFKG5vdEZvdW5kSW5Db2RlKCItPSIpKTsKLX0KLQotVEVTVF9GKERlYnVnU2hhZGVyUHJl
Y2lzaW9uVGVzdCwgQ29tcG91bmREaXZGdW5jdGlvbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgot
ICAgICAgICAidW5pZm9ybSB2ZWM0IHU7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgdTI7XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICB2ZWM0IHYgPSB1O1xuIgot
ICAgICAgICAiICAgdiAvPSB1MjtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHY7XG4i
Ci0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRf
VFJVRShmb3VuZEluRVNTTENvZGUoCi0gICAgICAgICJoaWdocCB2ZWM0IGFuZ2xlX2NvbXBvdW5k
X2Rpdl9mcm0oaW5vdXQgaGlnaHAgdmVjNCB4LCBpbiBoaWdocCB2ZWM0IHkpIHtcbiIKLSAgICAg
ICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSAvIHkpOyIKLSAgICApKTsKLSAgICBB
U1NFUlRfVFJVRShmb3VuZEluR0xTTENvZGUoCi0gICAgICAgICJ2ZWM0IGFuZ2xlX2NvbXBvdW5k
X2Rpdl9mcm0oaW5vdXQgdmVjNCB4LCBpbiB2ZWM0IHkpIHtcbiIKLSAgICAgICAgIiAgICB4ID0g
YW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSAvIHkpOyIKLSAgICApKTsKLSAgICBBU1NFUlRfVFJVRSgK
LSAgICAgICAgZm91bmRJbkhMU0xDb2RlKCJmbG9hdDQgYW5nbGVfY29tcG91bmRfZGl2X2ZybShp
bm91dCBmbG9hdDQgeCwgaW4gZmxvYXQ0IHkpIHtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICIgICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgLyB5KTsiKSk7Ci0gICAgQVNTRVJUX1RS
VUUoZm91bmRJbkFsbEdMU0xDb2RlKCJhbmdsZV9jb21wb3VuZF9kaXZfZnJtKHYsIGFuZ2xlX2Zy
bSh1MikpOyIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImFuZ2xlX2NvbXBv
dW5kX2Rpdl9mcm0oX3YsIGFuZ2xlX2ZybShfdTIpKTsiKSk7Ci0gICAgQVNTRVJUX1RSVUUobm90
Rm91bmRJbkNvZGUoIi89IikpOwotfQotCi1URVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0
LCBDb21wb3VuZE11bEZ1bmN0aW9uKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJT
dHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1
bmlmb3JtIHZlYzQgdTtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1MjtcbiIKLSAgICAgICAg
InZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIHZlYzQgdiA9IHU7XG4iCi0gICAgICAgICIg
ICB2ICo9IHUyO1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdjtcbiIKLSAgICAgICAg
In1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5k
SW5FU1NMQ29kZSgKLSAgICAgICAgImhpZ2hwIHZlYzQgYW5nbGVfY29tcG91bmRfbXVsX2ZybShp
bm91dCBoaWdocCB2ZWM0IHgsIGluIGhpZ2hwIHZlYzQgeSkge1xuIgotICAgICAgICAiICAgIHgg
PSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IgotICAgICkpOwotICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5HTFNMQ29kZSgKLSAgICAgICAgInZlYzQgYW5nbGVfY29tcG91bmRfbXVsX2ZybShp
bm91dCB2ZWM0IHgsIGluIHZlYzQgeSkge1xuIgotICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0o
YW5nbGVfZnJtKHgpICogeSk7IgotICAgICkpOwotICAgIEFTU0VSVF9UUlVFKAotICAgICAgICBm
b3VuZEluSExTTENvZGUoImZsb2F0NCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IGZsb2F0
NCB4LCBpbiBmbG9hdDQgeSkge1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4ID0g
YW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSAqIHkpOyIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZElu
QWxsR0xTTENvZGUoImFuZ2xlX2NvbXBvdW5kX211bF9mcm0odiwgYW5nbGVfZnJtKHUyKSk7Iikp
OwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiYW5nbGVfY29tcG91bmRfbXVsX2Zy
bShfdiwgYW5nbGVfZnJtKF91MikpOyIpKTsKLSAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29k
ZSgiKj0iKSk7Ci19Ci0KLVRFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIENvbXBvdW5k
QWRkVmVjdG9yUGx1c1NjYWxhckZ1bmN0aW9uKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAg
ICAgICJ1bmlmb3JtIHZlYzQgdTtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgdTI7XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICB2ZWM0IHYgPSB1O1xuIgotICAg
ICAgICAiICAgdiArPSB1MjtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHY7XG4iCi0g
ICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJV
RShmb3VuZEluRVNTTENvZGUoCi0gICAgICAgICJoaWdocCB2ZWM0IGFuZ2xlX2NvbXBvdW5kX2Fk
ZF9mcm0oaW5vdXQgaGlnaHAgdmVjNCB4LCBpbiBoaWdocCBmbG9hdCB5KSB7XG4iCi0gICAgICAg
ICIgICAgeCA9IGFuZ2xlX2ZybShhbmdsZV9mcm0oeCkgKyB5KTsiCi0gICAgKSk7Ci0gICAgQVNT
RVJUX1RSVUUoZm91bmRJbkdMU0xDb2RlKAotICAgICAgICAidmVjNCBhbmdsZV9jb21wb3VuZF9h
ZGRfZnJtKGlub3V0IHZlYzQgeCwgaW4gZmxvYXQgeSkge1xuIgotICAgICAgICAiICAgIHggPSBh
bmdsZV9mcm0oYW5nbGVfZnJtKHgpICsgeSk7IgotICAgICkpOwotICAgIEFTU0VSVF9UUlVFKAot
ICAgICAgICBmb3VuZEluSExTTENvZGUoImZsb2F0NCBhbmdsZV9jb21wb3VuZF9hZGRfZnJtKGlu
b3V0IGZsb2F0NCB4LCBpbiBmbG9hdCB5KSB7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAi
ICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICsgeSk7IikpOwotICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5BbGxHTFNMQ29kZSgiYW5nbGVfY29tcG91bmRfYWRkX2ZybSh2LCBhbmdsZV9mcm0o
dTIpKTsiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJhbmdsZV9jb21wb3Vu
ZF9hZGRfZnJtKF92LCBhbmdsZV9mcm0oX3UyKSk7IikpOwotICAgIEFTU0VSVF9UUlVFKG5vdEZv
dW5kSW5Db2RlKCIrPSIpKTsKLX0KLQotVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwg
Q29tcG91bmRNYXRyaXhUaW1lc01hdHJpeEZ1bmN0aW9uKQotewotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
Ci0gICAgICAgICJ1bmlmb3JtIG1hdDQgdTtcbiIKLSAgICAgICAgInVuaWZvcm0gbWF0NCB1Mjtc
biIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIG1hdDQgbSA9IHU7XG4i
Ci0gICAgICAgICIgICBtICo9IHUyO1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gbVsw
XTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgKLSAgICAgICAgImhpZ2hwIG1hdDQgYW5nbGVfY29t
cG91bmRfbXVsX2ZybShpbm91dCBoaWdocCBtYXQ0IHgsIGluIGhpZ2hwIG1hdDQgeSkge1xuIgot
ICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IgotICAgICkpOwot
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29kZSgKLSAgICAgICAgIm1hdDQgYW5nbGVfY29t
cG91bmRfbXVsX2ZybShpbm91dCBtYXQ0IHgsIGluIG1hdDQgeSkge1xuIgotICAgICAgICAiICAg
IHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IgotICAgICkpOwotICAgIEFTU0VSVF9U
UlVFKAotICAgICAgICBmb3VuZEluSExTTENvZGUoImZsb2F0NHg0IGFuZ2xlX2NvbXBvdW5kX211
bF9mcm0oaW5vdXQgZmxvYXQ0eDQgeCwgaW4gZmxvYXQ0eDQgeSkge1xuIgotICAgICAgICAgICAg
ICAgICAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSAqIHkpOyIpKTsKLSAg
ICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImFuZ2xlX2NvbXBvdW5kX211bF9mcm0o
bSwgYW5nbGVfZnJtKHUyKSk7IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgi
YW5nbGVfY29tcG91bmRfbXVsX2ZybShfbSwgYW5nbGVfZnJtKF91MikpOyIpKTsKLSAgICBBU1NF
UlRfVFJVRShub3RGb3VuZEluQ29kZSgiKj0iKSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBjb21wb3Vu
ZCBtdWx0aXBseWluZyBhIG5vbi1zcXVhcmUgbWF0cml4IHdpdGggYW5vdGhlciBtYXRyaXggZ2V0
cyB0cmFuc2xhdGVkIGludG8gYW4KLS8vIGFuZ2xlX2NvbXBvdW5kX211bCBmdW5jdGlvbiBjYWxs
LgotVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgQ29tcG91bmROb25TcXVhcmVNYXRy
aXhUaW1lc01hdHJpeEZ1bmN0aW9uKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJT
dHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gbWF0Mng0IHU7XG4iCi0gICAgICAg
ICJ1bmlmb3JtIG1hdDIgdTI7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBtYXQyeDQgbSA9IHU7XG4i
Ci0gICAgICAgICIgICBtICo9IHUyO1xuIgotICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gbVsw
XTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5FU1NMQ29kZSgKLSAgICAgICAgImhpZ2hwIG1hdDJ4NCBhbmdsZV9j
b21wb3VuZF9tdWxfZnJtKGlub3V0IGhpZ2hwIG1hdDJ4NCB4LCBpbiBoaWdocCBtYXQyIHkpIHtc
biIKLSAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSAqIHkpOyIpKTsKLSAg
ICBBU1NFUlRfVFJVRSgKLSAgICAgICAgZm91bmRJbkdMU0xDb2RlKCJtYXQyeDQgYW5nbGVfY29t
cG91bmRfbXVsX2ZybShpbm91dCBtYXQyeDQgeCwgaW4gbWF0MiB5KSB7XG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5nbGVfZnJtKHgpICogeSk7IikpOwot
ICAgIEFTU0VSVF9UUlVFKAotICAgICAgICBmb3VuZEluSExTTENvZGUoImZsb2F0Mng0IGFuZ2xl
X2NvbXBvdW5kX211bF9mcm0oaW5vdXQgZmxvYXQyeDQgeCwgaW4gZmxvYXQyeDIgeSkge1xuIgot
ICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSAq
IHkpOyIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImFuZ2xlX2NvbXBv
dW5kX211bF9mcm0obSwgYW5nbGVfZnJtKHUyKSk7IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5k
SW5ITFNMQ29kZSgiYW5nbGVfY29tcG91bmRfbXVsX2ZybShfbSwgYW5nbGVfZnJtKF91MikpOyIp
KTsKLSAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgiKj0iKSk7Ci19Ci0KLVRFU1RfRihE
ZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIENvbXBvdW5kTWF0cml4VGltZXNTY2FsYXJGdW5jdGlv
bikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBtYXQ0IHU7XG4iCi0g
ICAgICAgICJ1bmlmb3JtIGZsb2F0IHUyO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgot
ICAgICAgICAiICAgbWF0NCBtID0gdTtcbiIKLSAgICAgICAgIiAgIG0gKj0gdTI7XG4iCi0gICAg
ICAgICIgICBnbF9GcmFnQ29sb3IgPSBtWzBdO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21w
aWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2RlKAotICAg
ICAgICAiaGlnaHAgbWF0NCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IGhpZ2hwIG1hdDQg
eCwgaW4gaGlnaHAgZmxvYXQgeSkge1xuIgotICAgICAgICAiICAgIHggPSBhbmdsZV9mcm0oYW5n
bGVfZnJtKHgpICogeSk7IgotICAgICkpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5HTFNMQ29k
ZSgKLSAgICAgICAgIm1hdDQgYW5nbGVfY29tcG91bmRfbXVsX2ZybShpbm91dCBtYXQ0IHgsIGlu
IGZsb2F0IHkpIHtcbiIKLSAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSAq
IHkpOyIKLSAgICApKTsKLSAgICBBU1NFUlRfVFJVRSgKLSAgICAgICAgZm91bmRJbkhMU0xDb2Rl
KCJmbG9hdDR4NCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IGZsb2F0NHg0IHgsIGluIGZs
b2F0IHkpIHtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeCA9IGFuZ2xlX2ZybShh
bmdsZV9mcm0oeCkgKiB5KTsiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2Rl
KCJhbmdsZV9jb21wb3VuZF9tdWxfZnJtKG0sIGFuZ2xlX2ZybSh1MikpOyIpKTsKLSAgICBBU1NF
UlRfVFJVRShmb3VuZEluSExTTENvZGUoImFuZ2xlX2NvbXBvdW5kX211bF9mcm0oX20sIGFuZ2xl
X2ZybShfdTIpKTsiKSk7Ci0gICAgQVNTRVJUX1RSVUUobm90Rm91bmRJbkNvZGUoIio9IikpOwot
fQotCi1URVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBDb21wb3VuZFZlY3RvclRpbWVz
TWF0cml4RnVuY3Rpb24pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9
Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0g
dmVjNCB1O1xuIgotICAgICAgICAidW5pZm9ybSBtYXQ0IHUyO1xuIgotICAgICAgICAidm9pZCBt
YWluKCkge1xuIgotICAgICAgICAiICAgdmVjNCB2ID0gdTtcbiIKLSAgICAgICAgIiAgIHYgKj0g
dTI7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2O1xuIgotICAgICAgICAifVxuIjsK
LSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xD
b2RlKAotICAgICAgICAiaGlnaHAgdmVjNCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IGhp
Z2hwIHZlYzQgeCwgaW4gaGlnaHAgbWF0NCB5KSB7XG4iCi0gICAgICAgICIgICAgeCA9IGFuZ2xl
X2ZybShhbmdsZV9mcm0oeCkgKiB5KTsiCi0gICAgKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJ
bkdMU0xDb2RlKCJ2ZWM0IGFuZ2xlX2NvbXBvdW5kX211bF9mcm0oaW5vdXQgdmVjNCB4LCBpbiBt
YXQ0IHkpIHtcbiIKLSAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2ZybSh4KSAqIHkp
OyIKLSAgICApKTsKLSAgICBBU1NFUlRfVFJVRSgKLSAgICAgICAgZm91bmRJbkhMU0xDb2RlKCJm
bG9hdDQgYW5nbGVfY29tcG91bmRfbXVsX2ZybShpbm91dCBmbG9hdDQgeCwgaW4gZmxvYXQ0eDQg
eSkge1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xl
X2ZybSh4KSAqIHkpOyIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImFu
Z2xlX2NvbXBvdW5kX211bF9mcm0odiwgYW5nbGVfZnJtKHUyKSk7IikpOwotICAgIEFTU0VSVF9U
UlVFKGZvdW5kSW5ITFNMQ29kZSgiYW5nbGVfY29tcG91bmRfbXVsX2ZybShfdiwgYW5nbGVfZnJt
KF91MikpOyIpKTsKLSAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgiKj0iKSk7Ci19Ci0K
LVRFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIENvbXBvdW5kVmVjdG9yVGltZXNTY2Fs
YXJGdW5jdGlvbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0
IHU7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IHUyO1xuIgotICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgotICAgICAgICAiICAgdmVjNCB2ID0gdTtcbiIKLSAgICAgICAgIiAgIHYgKj0gdTI7
XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2O1xuIgotICAgICAgICAifVxuIjsKLSAg
ICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkVTU0xDb2Rl
KAotICAgICAgICAiaGlnaHAgdmVjNCBhbmdsZV9jb21wb3VuZF9tdWxfZnJtKGlub3V0IGhpZ2hw
IHZlYzQgeCwgaW4gaGlnaHAgZmxvYXQgeSkge1xuIgotICAgICAgICAiICAgIHggPSBhbmdsZV9m
cm0oYW5nbGVfZnJtKHgpICogeSk7IgotICAgICkpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5H
TFNMQ29kZSgKLSAgICAgICAgInZlYzQgYW5nbGVfY29tcG91bmRfbXVsX2ZybShpbm91dCB2ZWM0
IHgsIGluIGZsb2F0IHkpIHtcbiIKLSAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJtKGFuZ2xlX2Zy
bSh4KSAqIHkpOyIKLSAgICApKTsKLSAgICBBU1NFUlRfVFJVRSgKLSAgICAgICAgZm91bmRJbkhM
U0xDb2RlKCJmbG9hdDQgYW5nbGVfY29tcG91bmRfbXVsX2ZybShpbm91dCBmbG9hdDQgeCwgaW4g
ZmxvYXQgeSkge1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4ID0gYW5nbGVfZnJt
KGFuZ2xlX2ZybSh4KSAqIHkpOyIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENv
ZGUoImFuZ2xlX2NvbXBvdW5kX211bF9mcm0odiwgYW5nbGVfZnJtKHUyKSk7IikpOwotICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiYW5nbGVfY29tcG91bmRfbXVsX2ZybShfdiwgYW5n
bGVfZnJtKF91MikpOyIpKTsKLSAgICBBU1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgiKj0iKSk7
Ci19Ci0KLVRFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIEJpbmFyeU1hdGhSb3VuZGlu
ZykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHUxO1xuIgot
ICAgICAgICAidW5pZm9ybSB2ZWM0IHUyO1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHUzO1xu
IgotICAgICAgICAidW5pZm9ybSB2ZWM0IHU0O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHU1
O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgdmVjNCB2MSA9IHUx
ICsgdTI7XG4iCi0gICAgICAgICIgICB2ZWM0IHYyID0gdTIgLSB1MztcbiIKLSAgICAgICAgIiAg
IHZlYzQgdjMgPSB1MyAqIHU0O1xuIgotICAgICAgICAiICAgdmVjNCB2NCA9IHU0IC8gdTU7XG4i
Ci0gICAgICAgICIgICB2ZWM0IHY1O1xuIgotICAgICAgICAiICAgdmVjNCB2NiA9ICh2NSA9IHU1
KTtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHYxICsgdjIgKyB2MyArIHY0O1xuIgot
ICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RS
VUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MSA9IGFuZ2xlX2ZybSgoYW5nbGVfZnJtKHUxKSArIGFu
Z2xlX2ZybSh1MikpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYy
ID0gYW5nbGVfZnJtKChhbmdsZV9mcm0odTIpIC0gYW5nbGVfZnJtKHUzKSkpIikpOwotICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjMgPSBhbmdsZV9mcm0oKGFuZ2xlX2ZybSh1
MykgKiBhbmdsZV9mcm0odTQpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xD
b2RlKCJ2NCA9IGFuZ2xlX2ZybSgoYW5nbGVfZnJtKHU0KSAvIGFuZ2xlX2ZybSh1NSkpKSIpKTsK
LSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInY2ID0gYW5nbGVfZnJtKCh2NSA9
IGFuZ2xlX2ZybSh1NSkpKSIpKTsKLQotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgi
djEgPSBhbmdsZV9mcm0oKGFuZ2xlX2ZybShfdTEpICsgYW5nbGVfZnJtKF91MikpKSIpKTsKLSAg
ICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYyID0gYW5nbGVfZnJtKChhbmdsZV9mcm0o
X3UyKSAtIGFuZ2xlX2ZybShfdTMpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xD
b2RlKCJ2MyA9IGFuZ2xlX2ZybSgoYW5nbGVfZnJtKF91MykgKiBhbmdsZV9mcm0oX3U0KSkpIikp
OwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjQgPSBhbmdsZV9mcm0oKGFuZ2xl
X2ZybShfdTQpIC8gYW5nbGVfZnJtKF91NSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZElu
SExTTENvZGUoInY2ID0gYW5nbGVfZnJtKChfdjUgPSBhbmdsZV9mcm0oX3U1KSkpIikpOwotfQot
Ci1URVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBCdWlsdEluTWF0aEZ1bmN0aW9uUm91
bmRpbmcpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1MTtc
biIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1MjtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1
MztcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgdWY7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZs
b2F0IHVmMjtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjMyB1ZjMxO1xuIgotICAgICAgICAidW5p
Zm9ybSB2ZWMzIHVmMzI7XG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDQgdW0xO1xuIgotICAgICAg
ICAidW5pZm9ybSBtYXQ0IHVtMjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAg
ICAgIiAgIHZlYzQgdjEgPSByYWRpYW5zKHUxKTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjIgPSBk
ZWdyZWVzKHUxKTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjMgPSBzaW4odTEpO1xuIgotICAgICAg
ICAiICAgdmVjNCB2NCA9IGNvcyh1MSk7XG4iCi0gICAgICAgICIgICB2ZWM0IHY1ID0gdGFuKHUx
KTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjYgPSBhc2luKHUxKTtcbiIKLSAgICAgICAgIiAgIHZl
YzQgdjcgPSBhY29zKHUxKTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjggPSBhdGFuKHUxKTtcbiIK
LSAgICAgICAgIiAgIHZlYzQgdjkgPSBhdGFuKHUxLCB1Mik7XG4iCi0gICAgICAgICIgICB2ZWM0
IHYxMCA9IHBvdyh1MSwgdTIpO1xuIgotICAgICAgICAiICAgdmVjNCB2MTEgPSBleHAodTEpO1xu
IgotICAgICAgICAiICAgdmVjNCB2MTIgPSBsb2codTEpO1xuIgotICAgICAgICAiICAgdmVjNCB2
MTMgPSBleHAyKHUxKTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjE0ID0gbG9nMih1MSk7XG4iCi0g
ICAgICAgICIgICB2ZWM0IHYxNSA9IHNxcnQodTEpO1xuIgotICAgICAgICAiICAgdmVjNCB2MTYg
PSBpbnZlcnNlc3FydCh1MSk7XG4iCi0gICAgICAgICIgICB2ZWM0IHYxNyA9IGFicyh1MSk7XG4i
Ci0gICAgICAgICIgICB2ZWM0IHYxOCA9IHNpZ24odTEpO1xuIgotICAgICAgICAiICAgdmVjNCB2
MTkgPSBmbG9vcih1MSk7XG4iCi0gICAgICAgICIgICB2ZWM0IHYyMCA9IGNlaWwodTEpO1xuIgot
ICAgICAgICAiICAgdmVjNCB2MjEgPSBmcmFjdCh1MSk7XG4iCi0gICAgICAgICIgICB2ZWM0IHYy
MiA9IG1vZCh1MSwgdWYpO1xuIgotICAgICAgICAiICAgdmVjNCB2MjMgPSBtb2QodTEsIHUyKTtc
biIKLSAgICAgICAgIiAgIHZlYzQgdjI0ID0gbWluKHUxLCB1Zik7XG4iCi0gICAgICAgICIgICB2
ZWM0IHYyNSA9IG1pbih1MSwgdTIpO1xuIgotICAgICAgICAiICAgdmVjNCB2MjYgPSBtYXgodTEs
IHVmKTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjI3ID0gbWF4KHUxLCB1Mik7XG4iCi0gICAgICAg
ICIgICB2ZWM0IHYyOCA9IGNsYW1wKHUxLCB1MiwgdTMpO1xuIgotICAgICAgICAiICAgdmVjNCB2
MjkgPSBjbGFtcCh1MSwgdWYsIHVmMik7XG4iCi0gICAgICAgICIgICB2ZWM0IHYzMCA9IG1peCh1
MSwgdTIsIHUzKTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjMxID0gbWl4KHUxLCB1MiwgdWYpO1xu
IgotICAgICAgICAiICAgdmVjNCB2MzIgPSBzdGVwKHUxLCB1Mik7XG4iCi0gICAgICAgICIgICB2
ZWM0IHYzMyA9IHN0ZXAodWYsIHUxKTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjM0ID0gc21vb3Ro
c3RlcCh1MSwgdTIsIHUzKTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjM1ID0gc21vb3Roc3RlcCh1
ZiwgdWYyLCB1MSk7XG4iCi0gICAgICAgICIgICB2ZWM0IHYzNiA9IG5vcm1hbGl6ZSh1MSk7XG4i
Ci0gICAgICAgICIgICB2ZWM0IHYzNyA9IGZhY2Vmb3J3YXJkKHUxLCB1MiwgdTMpO1xuIgotICAg
ICAgICAiICAgdmVjNCB2MzggPSByZWZsZWN0KHUxLCB1Mik7XG4iCi0gICAgICAgICIgICB2ZWM0
IHYzOSA9IHJlZnJhY3QodTEsIHUyLCB1Zik7XG4iCi0KLSAgICAgICAgIiAgIGZsb2F0IGYxID0g
bGVuZ3RoKHUxKTtcbiIKLSAgICAgICAgIiAgIGZsb2F0IGYyID0gZGlzdGFuY2UodTEsIHUyKTtc
biIKLSAgICAgICAgIiAgIGZsb2F0IGYzID0gZG90KHUxLCB1Mik7XG4iCi0gICAgICAgICIgICB2
ZWMzIHZmMzEgPSBjcm9zcyh1ZjMxLCB1ZjMyKTtcbiIKLSAgICAgICAgIiAgIG1hdDQgbTEgPSBt
YXRyaXhDb21wTXVsdCh1bTEsIHVtMik7XG4iCi0KLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9
IHYxICsgdjIgKyB2MyArIHY0ICsgdjUgKyB2NiArIHY3ICsgdjggKyB2OSArIHYxMCArIgotICAg
ICAgICAgICAgInYxMSArIHYxMiArIHYxMyArIHYxNCArIHYxNSArIHYxNiArIHYxNyArIHYxOCAr
IHYxOSArIHYyMCArIgotICAgICAgICAgICAgInYyMSArIHYyMiArIHYyMyArIHYyNCArIHYyNSAr
IHYyNiArIHYyNyArIHYyOCArIHYyOSArIHYzMCArIgotICAgICAgICAgICAgInYzMSArIHYzMiAr
IHYzMyArIHYzNCArIHYzNSArIHYzNiArIHYzNyArIHYzOCArIHYzOSArIgotICAgICAgICAgICAg
InZlYzQoZjEsIGYyLCBmMywgMC4wKSArIHZlYzQodmYzMSwgMC4wKSArIG0xWzBdO1xuIgotICAg
ICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkFsbEdMU0xDb2RlKCJ2MSA9IGFuZ2xlX2ZybShyYWRpYW5zKGFuZ2xlX2ZybSh1MSkp
KSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYyID0gYW5nbGVfZnJt
KGRlZ3JlZXMoYW5nbGVfZnJtKHUxKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxH
TFNMQ29kZSgidjMgPSBhbmdsZV9mcm0oc2luKGFuZ2xlX2ZybSh1MSkpKSIpKTsKLSAgICBBU1NF
UlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInY0ID0gYW5nbGVfZnJtKGNvcyhhbmdsZV9mcm0o
dTEpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2NSA9IGFuZ2xl
X2ZybSh0YW4oYW5nbGVfZnJtKHUxKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxH
TFNMQ29kZSgidjYgPSBhbmdsZV9mcm0oYXNpbihhbmdsZV9mcm0odTEpKSkiKSk7Ci0gICAgQVNT
RVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2NyA9IGFuZ2xlX2ZybShhY29zKGFuZ2xlX2Zy
bSh1MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInY4ID0gYW5n
bGVfZnJtKGF0YW4oYW5nbGVfZnJtKHUxKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5B
bGxHTFNMQ29kZSgidjkgPSBhbmdsZV9mcm0oYXRhbihhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0o
dTIpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MTAgPSBhbmds
ZV9mcm0ocG93KGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpKSIpKTsKLSAgICBBU1NFUlRf
VFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYxMSA9IGFuZ2xlX2ZybShleHAoYW5nbGVfZnJtKHUx
KSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjEyID0gYW5nbGVf
ZnJtKGxvZyhhbmdsZV9mcm0odTEpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdM
U0xDb2RlKCJ2MTMgPSBhbmdsZV9mcm0oZXhwMihhbmdsZV9mcm0odTEpKSkiKSk7Ci0gICAgQVNT
RVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MTQgPSBhbmdsZV9mcm0obG9nMihhbmdsZV9m
cm0odTEpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MTUgPSBh
bmdsZV9mcm0oc3FydChhbmdsZV9mcm0odTEpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJ
bkFsbEdMU0xDb2RlKCJ2MTYgPSBhbmdsZV9mcm0oaW52ZXJzZXNxcnQoYW5nbGVfZnJtKHUxKSkp
IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjE3ID0gYW5nbGVfZnJt
KGFicyhhbmdsZV9mcm0odTEpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xD
b2RlKCJ2MTggPSBhbmdsZV9mcm0oc2lnbihhbmdsZV9mcm0odTEpKSkiKSk7Ci0gICAgQVNTRVJU
X1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MTkgPSBhbmdsZV9mcm0oZmxvb3IoYW5nbGVfZnJt
KHUxKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjIwID0gYW5n
bGVfZnJtKGNlaWwoYW5nbGVfZnJtKHUxKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5B
bGxHTFNMQ29kZSgidjIxID0gYW5nbGVfZnJtKGZyYWN0KGFuZ2xlX2ZybSh1MSkpKSIpKTsKLSAg
ICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYyMiA9IGFuZ2xlX2ZybShtb2QoYW5n
bGVfZnJtKHUxKSwgYW5nbGVfZnJtKHVmKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5B
bGxHTFNMQ29kZSgidjIzID0gYW5nbGVfZnJtKG1vZChhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0o
dTIpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MjQgPSBhbmds
ZV9mcm0obWluKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1ZikpKSIpKTsKLSAgICBBU1NFUlRf
VFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYyNSA9IGFuZ2xlX2ZybShtaW4oYW5nbGVfZnJtKHUx
KSwgYW5nbGVfZnJtKHUyKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29k
ZSgidjI2ID0gYW5nbGVfZnJtKG1heChhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odWYpKSkiKSk7
Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJ2MjcgPSBhbmdsZV9mcm0obWF4
KGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpKSIpKTsKLSAgICBBU1NFUlRfVFJVRSgKLSAg
ICAgICAgZm91bmRJbkFsbEdMU0xDb2RlKCJ2MjggPSBhbmdsZV9mcm0oY2xhbXAoYW5nbGVfZnJt
KHUxKSwgYW5nbGVfZnJtKHUyKSwgYW5nbGVfZnJtKHUzKSkpIikpOwotICAgIEFTU0VSVF9UUlVF
KAotICAgICAgICBmb3VuZEluQWxsR0xTTENvZGUoInYyOSA9IGFuZ2xlX2ZybShjbGFtcChhbmds
ZV9mcm0odTEpLCBhbmdsZV9mcm0odWYpLCBhbmdsZV9mcm0odWYyKSkpIikpOwotICAgIEFTU0VS
VF9UUlVFKAotICAgICAgICBmb3VuZEluQWxsR0xTTENvZGUoInYzMCA9IGFuZ2xlX2ZybShtaXgo
YW5nbGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSwgYW5nbGVfZnJtKHUzKSkpIikpOwotICAgIEFT
U0VSVF9UUlVFKAotICAgICAgICBmb3VuZEluQWxsR0xTTENvZGUoInYzMSA9IGFuZ2xlX2ZybSht
aXgoYW5nbGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSwgYW5nbGVfZnJtKHVmKSkpIikpOwotICAg
IEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgidjMyID0gYW5nbGVfZnJtKHN0ZXAoYW5n
bGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5B
bGxHTFNMQ29kZSgidjMzID0gYW5nbGVfZnJtKHN0ZXAoYW5nbGVfZnJtKHVmKSwgYW5nbGVfZnJt
KHUxKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgKLSAgICAgICAg
InYzNCA9IGFuZ2xlX2ZybShzbW9vdGhzdGVwKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1Miks
IGFuZ2xlX2ZybSh1MykpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUo
Ci0gICAgICAgICJ2MzUgPSBhbmdsZV9mcm0oc21vb3Roc3RlcChhbmdsZV9mcm0odWYpLCBhbmds
ZV9mcm0odWYyKSwgYW5nbGVfZnJtKHUxKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5B
bGxHTFNMQ29kZSgidjM2ID0gYW5nbGVfZnJtKG5vcm1hbGl6ZShhbmdsZV9mcm0odTEpKSkiKSk7
Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKAotICAgICAgICAidjM3ID0gYW5n
bGVfZnJtKGZhY2Vmb3J3YXJkKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MiksIGFuZ2xlX2Zy
bSh1MykpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYzOCA9IGFu
Z2xlX2ZybShyZWZsZWN0KGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpKSIpKTsKLSAgICBB
U1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoCi0gICAgICAgICJ2MzkgPSBhbmdsZV9mcm0o
cmVmcmFjdChhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odTIpLCBhbmdsZV9mcm0odWYpKSkiKSk7
Ci0KLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImYxID0gYW5nbGVfZnJtKGxl
bmd0aChhbmdsZV9mcm0odTEpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xD
b2RlKCJmMiA9IGFuZ2xlX2ZybShkaXN0YW5jZShhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odTIp
KSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJmMyA9IGFuZ2xlX2Zy
bShkb3QoYW5nbGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSkpIikpOwotICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5BbGxHTFNMQ29kZSgidmYzMSA9IGFuZ2xlX2ZybShjcm9zcyhhbmdsZV9mcm0odWYz
MSksIGFuZ2xlX2ZybSh1ZjMyKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKAotICAgICAgICBmb3Vu
ZEluQWxsR0xTTENvZGUoIm0xID0gYW5nbGVfZnJtKG1hdHJpeENvbXBNdWx0KGFuZ2xlX2ZybSh1
bTEpLCBhbmdsZV9mcm0odW0yKSkpIikpOwotCi0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xD
b2RlKCJ2MSA9IGFuZ2xlX2ZybShyYWRpYW5zKGFuZ2xlX2ZybShfdTEpKSkiKSk7Ci0gICAgQVNT
RVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MiA9IGFuZ2xlX2ZybShkZWdyZWVzKGFuZ2xlX2Zy
bShfdTEpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MyA9IGFuZ2xl
X2ZybShzaW4oYW5nbGVfZnJtKF91MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExT
TENvZGUoInY0ID0gYW5nbGVfZnJtKGNvcyhhbmdsZV9mcm0oX3UxKSkpIikpOwotICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjUgPSBhbmdsZV9mcm0odGFuKGFuZ2xlX2ZybShfdTEp
KSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2NiA9IGFuZ2xlX2ZybShh
c2luKGFuZ2xlX2ZybShfdTEpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2Rl
KCJ2NyA9IGFuZ2xlX2ZybShhY29zKGFuZ2xlX2ZybShfdTEpKSkiKSk7Ci0gICAgQVNTRVJUX1RS
VUUoZm91bmRJbkhMU0xDb2RlKCJ2OCA9IGFuZ2xlX2ZybShhdGFuKGFuZ2xlX2ZybShfdTEpKSki
KSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2OSA9IGFuZ2xlX2ZybSh3ZWJn
bF9hdGFuX2VtdShhbmdsZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91MikpKSIpKTsKLSAgICBBU1NF
UlRfVFJVRShmb3VuZEluSExTTENvZGUoInYxMCA9IGFuZ2xlX2ZybShwb3coYW5nbGVfZnJtKF91
MSksIGFuZ2xlX2ZybShfdTIpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2Rl
KCJ2MTEgPSBhbmdsZV9mcm0oZXhwKGFuZ2xlX2ZybShfdTEpKSkiKSk7Ci0gICAgQVNTRVJUX1RS
VUUoZm91bmRJbkhMU0xDb2RlKCJ2MTIgPSBhbmdsZV9mcm0obG9nKGFuZ2xlX2ZybShfdTEpKSki
KSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MTMgPSBhbmdsZV9mcm0oZXhw
MihhbmdsZV9mcm0oX3UxKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgi
djE0ID0gYW5nbGVfZnJtKGxvZzIoYW5nbGVfZnJtKF91MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJV
RShmb3VuZEluSExTTENvZGUoInYxNSA9IGFuZ2xlX2ZybShzcXJ0KGFuZ2xlX2ZybShfdTEpKSki
KSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MTYgPSBhbmdsZV9mcm0ocnNx
cnQoYW5nbGVfZnJtKF91MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUo
InYxNyA9IGFuZ2xlX2ZybShhYnMoYW5nbGVfZnJtKF91MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJV
RShmb3VuZEluSExTTENvZGUoInYxOCA9IGFuZ2xlX2ZybShzaWduKGFuZ2xlX2ZybShfdTEpKSki
KSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MTkgPSBhbmdsZV9mcm0oZmxv
b3IoYW5nbGVfZnJtKF91MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUo
InYyMCA9IGFuZ2xlX2ZybShjZWlsKGFuZ2xlX2ZybShfdTEpKSkiKSk7Ci0gICAgQVNTRVJUX1RS
VUUoZm91bmRJbkhMU0xDb2RlKCJ2MjEgPSBhbmdsZV9mcm0oZnJhYyhhbmdsZV9mcm0oX3UxKSkp
IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjIyID0gYW5nbGVfZnJtKHdl
YmdsX21vZF9lbXUoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdWYpKSkiKSk7Ci0gICAgQVNT
RVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MjMgPSBhbmdsZV9mcm0od2ViZ2xfbW9kX2VtdShh
bmdsZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91MikpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluSExTTENvZGUoInYyNCA9IGFuZ2xlX2ZybShtaW4oYW5nbGVfZnJtKF91MSksIGFuZ2xlX2Zy
bShfdWYpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MjUgPSBhbmds
ZV9mcm0obWluKGFuZ2xlX2ZybShfdTEpLCBhbmdsZV9mcm0oX3UyKSkpIikpOwotICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjI2ID0gYW5nbGVfZnJtKG1heChhbmdsZV9mcm0oX3Ux
KSwgYW5nbGVfZnJtKF91ZikpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUo
InYyNyA9IGFuZ2xlX2ZybShtYXgoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdTIpKSkiKSk7
Ci0gICAgQVNTRVJUX1RSVUUoCi0gICAgICAgIGZvdW5kSW5ITFNMQ29kZSgidjI4ID0gYW5nbGVf
ZnJtKGNsYW1wKGFuZ2xlX2ZybShfdTEpLCBhbmdsZV9mcm0oX3UyKSwgYW5nbGVfZnJtKF91Mykp
KSIpKTsKLSAgICBBU1NFUlRfVFJVRSgKLSAgICAgICAgZm91bmRJbkhMU0xDb2RlKCJ2MjkgPSBh
bmdsZV9mcm0oY2xhbXAoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdWYpLCBhbmdsZV9mcm0o
X3VmMikpKSIpKTsKLSAgICBBU1NFUlRfVFJVRSgKLSAgICAgICAgZm91bmRJbkhMU0xDb2RlKCJ2
MzAgPSBhbmdsZV9mcm0obGVycChhbmdsZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91MiksIGFuZ2xl
X2ZybShfdTMpKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoCi0gICAgICAgIGZvdW5kSW5ITFNMQ29k
ZSgidjMxID0gYW5nbGVfZnJtKGxlcnAoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdTIpLCBh
bmdsZV9mcm0oX3VmKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidjMy
ID0gYW5nbGVfZnJtKHN0ZXAoYW5nbGVfZnJtKF91MSksIGFuZ2xlX2ZybShfdTIpKSkiKSk7Ci0g
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2MzMgPSBhbmdsZV9mcm0oc3RlcChhbmds
ZV9mcm0oX3VmKSwgYW5nbGVfZnJtKF91MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZElu
SExTTENvZGUoCi0gICAgICAgICJ2MzQgPSBhbmdsZV9mcm0oc21vb3Roc3RlcChhbmdsZV9mcm0o
X3UxKSwgYW5nbGVfZnJtKF91MiksIGFuZ2xlX2ZybShfdTMpKSkiKSk7Ci0gICAgQVNTRVJUX1RS
VUUoZm91bmRJbkhMU0xDb2RlKAotICAgICAgICAidjM1ID0gYW5nbGVfZnJtKHNtb290aHN0ZXAo
YW5nbGVfZnJtKF91ZiksIGFuZ2xlX2ZybShfdWYyKSwgYW5nbGVfZnJtKF91MSkpKSIpKTsKLSAg
ICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInYzNiA9IGFuZ2xlX2ZybShub3JtYWxpemUo
YW5nbGVfZnJtKF91MSkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoCi0g
ICAgICAgICJ2MzcgPSBhbmdsZV9mcm0od2ViZ2xfZmFjZWZvcndhcmRfZW11KGFuZ2xlX2ZybShf
dTEpLCBhbmdsZV9mcm0oX3UyKSwgYW5nbGVfZnJtKF91MykpKSIpKTsKLSAgICBBU1NFUlRfVFJV
RShmb3VuZEluSExTTENvZGUoInYzOCA9IGFuZ2xlX2ZybShyZWZsZWN0KGFuZ2xlX2ZybShfdTEp
LCBhbmdsZV9mcm0oX3UyKSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgK
LSAgICAgICAgInYzOSA9IGFuZ2xlX2ZybShyZWZyYWN0KGFuZ2xlX2ZybShfdTEpLCBhbmdsZV9m
cm0oX3UyKSwgYW5nbGVfZnJtKF91ZikpKSIpKTsKLQotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5I
TFNMQ29kZSgiZjEgPSBhbmdsZV9mcm0obGVuZ3RoKGFuZ2xlX2ZybShfdTEpKSkiKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJmMiA9IGFuZ2xlX2ZybShkaXN0YW5jZShhbmds
ZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91MikpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZElu
SExTTENvZGUoImYzID0gYW5nbGVfZnJtKGRvdChhbmdsZV9mcm0oX3UxKSwgYW5nbGVfZnJtKF91
MikpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoInZmMzEgPSBhbmdsZV9m
cm0oY3Jvc3MoYW5nbGVfZnJtKF91ZjMxKSwgYW5nbGVfZnJtKF91ZjMyKSkpIikpOwotICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgibTEgPSBhbmdsZV9mcm0oKGFuZ2xlX2ZybShfdW0x
KSAqIGFuZ2xlX2ZybShfdW0yKSkpIikpOwotfQotCi1URVNUX0YoRGVidWdTaGFkZXJQcmVjaXNp
b25UZXN0LCBCdWlsdEluUmVsYXRpb25hbEZ1bmN0aW9uUm91bmRpbmcpCi17Ci0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1MTtcbiIKLSAgICAgICAgInVuaWZvcm0g
dmVjNCB1MjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGJ2ZWM0
IGJ2MSA9IGxlc3NUaGFuKHUxLCB1Mik7XG4iCi0gICAgICAgICIgICBidmVjNCBidjIgPSBsZXNz
VGhhbkVxdWFsKHUxLCB1Mik7XG4iCi0gICAgICAgICIgICBidmVjNCBidjMgPSBncmVhdGVyVGhh
bih1MSwgdTIpO1xuIgotICAgICAgICAiICAgYnZlYzQgYnY0ID0gZ3JlYXRlclRoYW5FcXVhbCh1
MSwgdTIpO1xuIgotICAgICAgICAiICAgYnZlYzQgYnY1ID0gZXF1YWwodTEsIHUyKTtcbiIKLSAg
ICAgICAgIiAgIGJ2ZWM0IGJ2NiA9IG5vdEVxdWFsKHUxLCB1Mik7XG4iCi0gICAgICAgICIgICBn
bF9GcmFnQ29sb3IgPSB2ZWM0KGJ2MSkgKyB2ZWM0KGJ2MikgKyB2ZWM0KGJ2MykgKyB2ZWM0KGJ2
NCkgKyB2ZWM0KGJ2NSkgKyB2ZWM0KGJ2Nik7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBp
bGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImJ2
MSA9IGxlc3NUaGFuKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpIikpOwotICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYnYyID0gbGVzc1RoYW5FcXVhbChhbmdsZV9mcm0o
dTEpLCBhbmdsZV9mcm0odTIpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENv
ZGUoImJ2MyA9IGdyZWF0ZXJUaGFuKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MikpIikpOwot
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYnY0ID0gZ3JlYXRlclRoYW5FcXVh
bChhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odTIpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluQWxsR0xTTENvZGUoImJ2NSA9IGVxdWFsKGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1Mikp
IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiYnY2ID0gbm90RXF1YWwo
YW5nbGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSkiKSk7Ci0KLSAgICBBU1NFUlRfVFJVRShmb3Vu
ZEluSExTTENvZGUoImJ2MSA9IChhbmdsZV9mcm0oX3UxKSA8IGFuZ2xlX2ZybShfdTIpKSIpKTsK
LSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImJ2MiA9IChhbmdsZV9mcm0oX3UxKSA8
PSBhbmdsZV9mcm0oX3UyKSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJi
djMgPSAoYW5nbGVfZnJtKF91MSkgPiBhbmdsZV9mcm0oX3UyKSkiKSk7Ci0gICAgQVNTRVJUX1RS
VUUoZm91bmRJbkhMU0xDb2RlKCJidjQgPSAoYW5nbGVfZnJtKF91MSkgPj0gYW5nbGVfZnJtKF91
MikpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiYnY1ID0gKGFuZ2xlX2Zy
bShfdTEpID09IGFuZ2xlX2ZybShfdTIpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExT
TENvZGUoImJ2NiA9IChhbmdsZV9mcm0oX3UxKSAhPSBhbmdsZV9mcm0oX3UyKSkiKSk7Ci19Ci0K
LVRFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIENvbnN0cnVjdG9yUm91bmRpbmcpCi17
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGludDtcbiIK
LSAgICAgICAgInVuaWZvcm0gZmxvYXQgdTE7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IHUy
O1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCB1MztcbiIKLSAgICAgICAgInVuaWZvcm0gZmxv
YXQgdTQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIGl2ZWM0IHVpdjtcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjEgPSB2ZWM0KHUxLCB1MiwgdTMsIHU0KTtc
biIKLSAgICAgICAgIiAgIHZlYzQgdjIgPSB2ZWM0KHVpdik7XG4iCi0gICAgICAgICIgICBnbF9G
cmFnQ29sb3IgPSB2MSArIHYyO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRl
clN0cmluZyk7Ci0gICAgLy8gTm90ZTogdGhpcyBpcyBzdWJvcHRpbWFsIGZvciB0aGUgY2FzZSB0
YWtpbmcgZm91ciBmbG9hdHMsIGJ1dCBvcHRpbWl6aW5nIHdvdWxkIGJlIHRyaWNreS4KLSAgICBB
U1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoCi0gICAgICAgICJ2MSA9IGFuZ2xlX2ZybSh2
ZWM0KGFuZ2xlX2ZybSh1MSksIGFuZ2xlX2ZybSh1MiksIGFuZ2xlX2ZybSh1MyksIGFuZ2xlX2Zy
bSh1NCkpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoInYyID0gYW5n
bGVfZnJtKHZlYzQodWl2KSkiKSk7Ci0KLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUo
Ci0gICAgICAgICJ2MSA9IGFuZ2xlX2ZybSh2ZWM0KGFuZ2xlX2ZybShfdTEpLCBhbmdsZV9mcm0o
X3UyKSwgYW5nbGVfZnJtKF91MyksIGFuZ2xlX2ZybShfdTQpKSkiKSk7Ci0gICAgQVNTRVJUX1RS
VUUoZm91bmRJbkhMU0xDb2RlKCJ2MiA9IGFuZ2xlX2ZybSh2ZWM0KF91aXYpKSIpKTsKLX0KLQot
VEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgU3RydWN0Q29uc3RydWN0b3JOb1JvdW5k
aW5nKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJzdHJ1Y3QgUyB7IG1lZGl1bXAg
dmVjNCBhOyB9O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHU7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCi0gICAgICAgICIgICBTIHMgPSBTKHUpO1xuIgotICAgICAgICAiICAgZ2xf
RnJhZ0NvbG9yID0gcy5hO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0
cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJzID0gUyhhbmdsZV9m
cm0odSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgicyA9IF9TX2N0b3Io
YW5nbGVfZnJtKF91KSkiKSk7Ci0gICAgQVNTRVJUX1RSVUUobm90Rm91bmRJbkNvZGUoImFuZ2xl
X2ZybShTIikpOwotfQotCi1URVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBTd2l6emxl
Um91bmRpbmcpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1
O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgdmVjNCB2ID0gdS54
eXh5OyIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHY7XG4iCi0gICAgICAgICJ9XG4iOwot
ICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xT
TENvZGUoInYgPSBhbmdsZV9mcm0odSkueHl4eSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZElu
SExTTENvZGUoInYgPSBhbmdsZV9mcm0oX3UpLnh5eHkiKSk7Ci19Ci0KLVRFU1RfRihEZWJ1Z1No
YWRlclByZWNpc2lvblRlc3QsIEJ1aWx0SW5UZXhGdW5jdGlvblJvdW5kaW5nKQotewotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCi0gICAgICAgICJwcmVjaXNpb24gbG93cCBzYW1wbGVyMkQ7XG4iCi0gICAg
ICAgICJ1bmlmb3JtIHZlYzIgdTtcbiIKLSAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHM7XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBsb3dwIHZlYzQgdiA9IHRl
eHR1cmUyRChzLCB1KTtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHY7XG4iCi0gICAg
ICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShm
b3VuZEluQWxsR0xTTENvZGUoInYgPSBhbmdsZV9mcmwodGV4dHVyZTJEKHMsIGFuZ2xlX2ZybSh1
KSkpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgidiA9IGFuZ2xlX2ZybChn
bF90ZXh0dXJlMkQoX3MsIGFuZ2xlX2ZybShfdSkpKSIpKTsKLX0KLQotVEVTVF9GKERlYnVnU2hh
ZGVyUHJlY2lzaW9uVGVzdCwgRnVuY3Rpb25DYWxsUGFyYW1ldGVyUXVhbGlmaWVyc0Zyb21EZWZp
bml0aW9uKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgdTE7
XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgdTI7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQg
dTM7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgdTQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZl
YzQgdTU7XG4iCi0gICAgICAgICJ2ZWM0IGFkZChpbiB2ZWM0IHgsIGluIHZlYzQgeSkge1xuIgot
ICAgICAgICAiICAgcmV0dXJuIHggKyB5O1xuIgotICAgICAgICAifVxuIgotICAgICAgICAidm9p
ZCBjb21wb3VuZF9hZGQoaW5vdXQgdmVjNCB4LCBpbiB2ZWM0IHkpIHtcbiIKLSAgICAgICAgIiAg
IHggPSB4ICsgeTtcbiIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgInZvaWQgYWRkX3RvX2xhc3Qo
aW4gdmVjNCB4LCBpbiB2ZWM0IHksIG91dCB2ZWM0IHopIHtcbiIKLSAgICAgICAgIiAgIHogPSB4
ICsgeTtcbiIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAg
ICAgIiAgIHZlYzQgdiA9IGFkZCh1MSwgdTIpO1xuIgotICAgICAgICAiICAgY29tcG91bmRfYWRk
KHYsIHUzKTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjI7XG4iCi0gICAgICAgICIgICBhZGRfdG9f
bGFzdCh1NCwgdTUsIHYyKTtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHYgKyB2Mjtc
biIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIC8vIE5v
dGUgdGhhdCB0aGlzIGlzIG5vdCBvcHRpbWFsIGNvZGUsIHRoZXJlIGFyZSByZWR1bmRhbnQgZnJt
IGNhbGxzLgotICAgIC8vIEhvd2V2ZXIsIGdldHRpbmcgdGhlIGltcGxlbWVudGF0aW9uIHdvcmtp
bmcgd2hlbiBvdGhlciBvcGVyYXRpb25zCi0gICAgLy8gYXJlIG5lc3RlZCB3aXRoaW4gZnVuY3Rp
b24gY2FsbHMgd291bGQgYmUgdHJpY2t5IGlmIHRvIGdldCByaWdodAotICAgIC8vIG90aGVyd2lz
ZS4KLSAgICAvLyBUZXN0IGluIHBhcmFtZXRlcnMKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxs
R0xTTENvZGUoInYgPSBhZGQoYW5nbGVfZnJtKHUxKSwgYW5nbGVfZnJtKHUyKSkiKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZm91bmRJbkhMU0xDb2RlKCJ2ID0gX2FkZF9mbG9hdDRfZmxvYXQ0KGFuZ2xl
X2ZybShfdTEpLCBhbmdsZV9mcm0oX3UyKSkiKSk7Ci0gICAgLy8gVGVzdCBpbm91dCBwYXJhbWV0
ZXIKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImNvbXBvdW5kX2FkZCh2LCBh
bmdsZV9mcm0odTMpKSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSExTTENvZGUoImNvbXBv
dW5kX2FkZF9mbG9hdDRfZmxvYXQ0KF92LCBhbmdsZV9mcm0oX3UzKSkiKSk7Ci0gICAgLy8gVGVz
dCBvdXQgcGFyYW1ldGVyCi0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFsbEdMU0xDb2RlKCJhZGRf
dG9fbGFzdChhbmdsZV9mcm0odTQpLCBhbmdsZV9mcm0odTUpLCB2MikiKSk7Ci0gICAgQVNTRVJU
X1RSVUUoCi0gICAgICAgIGZvdW5kSW5ITFNMQ29kZSgiYWRkX3RvX2xhc3RfZmxvYXQ0X2Zsb2F0
NF9mbG9hdDQoYW5nbGVfZnJtKF91NCksIGFuZ2xlX2ZybShfdTUpLCBfdjIpIikpOwotfQotCi1U
RVNUX0YoRGVidWdTaGFkZXJQcmVjaXNpb25UZXN0LCBGdW5jdGlvbkNhbGxQYXJhbWV0ZXJRdWFs
aWZpZXJzRnJvbVByb3RvdHlwZSkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5p
Zm9ybSB2ZWM0IHUxO1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHUyO1xuIgotICAgICAgICAi
dW5pZm9ybSB2ZWM0IHUzO1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHU0O1xuIgotICAgICAg
ICAidW5pZm9ybSB2ZWM0IHU1O1xuIgotICAgICAgICAidmVjNCBhZGQoaW4gdmVjNCB4LCBpbiB2
ZWM0IHkpO1xuIgotICAgICAgICAidm9pZCBjb21wb3VuZF9hZGQoaW5vdXQgdmVjNCB4LCBpbiB2
ZWM0IHkpO1xuIgotICAgICAgICAidm9pZCBhZGRfdG9fbGFzdChpbiB2ZWM0IHgsIGluIHZlYzQg
eSwgb3V0IHZlYzQgeik7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIg
ICB2ZWM0IHYgPSBhZGQodTEsIHUyKTtcbiIKLSAgICAgICAgIiAgIGNvbXBvdW5kX2FkZCh2LCB1
Myk7XG4iCi0gICAgICAgICIgICB2ZWM0IHYyO1xuIgotICAgICAgICAiICAgYWRkX3RvX2xhc3Qo
dTQsIHU1LCB2Mik7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ICsgdjI7XG4iCi0g
ICAgICAgICJ9XG4iCi0gICAgICAgICJ2ZWM0IGFkZChpbiB2ZWM0IHgsIGluIHZlYzQgeSkge1xu
IgotICAgICAgICAiICAgcmV0dXJuIHggKyB5O1xuIgotICAgICAgICAifVxuIgotICAgICAgICAi
dm9pZCBjb21wb3VuZF9hZGQoaW5vdXQgdmVjNCB4LCBpbiB2ZWM0IHkpIHtcbiIKLSAgICAgICAg
IiAgIHggPSB4ICsgeTtcbiIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgInZvaWQgYWRkX3RvX2xh
c3QoaW4gdmVjNCB4LCBpbiB2ZWM0IHksIG91dCB2ZWM0IHopIHtcbiIKLSAgICAgICAgIiAgIHog
PSB4ICsgeTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwot
ICAgIC8vIFRlc3QgaW4gcGFyYW1ldGVycwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNM
Q29kZSgidiA9IGFkZChhbmdsZV9mcm0odTEpLCBhbmdsZV9mcm0odTIpKSIpKTsKLSAgICBBU1NF
UlRfVFJVRShmb3VuZEluSExTTENvZGUoInYgPSBfYWRkX2Zsb2F0NF9mbG9hdDQoYW5nbGVfZnJt
KF91MSksIGFuZ2xlX2ZybShfdTIpKSIpKTsKLSAgICAvLyBUZXN0IGlub3V0IHBhcmFtZXRlcgot
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BbGxHTFNMQ29kZSgiY29tcG91bmRfYWRkKHYsIGFuZ2xl
X2ZybSh1MykpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiY29tcG91bmRf
YWRkX2Zsb2F0NF9mbG9hdDQoX3YsIGFuZ2xlX2ZybShfdTMpKSIpKTsKLSAgICAvLyBUZXN0IG91
dCBwYXJhbWV0ZXIKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQWxsR0xTTENvZGUoImFkZF90b19s
YXN0KGFuZ2xlX2ZybSh1NCksIGFuZ2xlX2ZybSh1NSksIHYyKSIpKTsKLSAgICBBU1NFUlRfVFJV
RSgKLSAgICAgICAgZm91bmRJbkhMU0xDb2RlKCJhZGRfdG9fbGFzdF9mbG9hdDRfZmxvYXQ0X2Zs
b2F0NChhbmdsZV9mcm0oX3U0KSwgYW5nbGVfZnJtKF91NSksIF92MikiKSk7Ci19Ci0KLVRFU1Rf
RihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIE5lc3RlZEZ1bmN0aW9uQ2FsbHMpCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1MTtcbiIKLSAgICAgICAgInVu
aWZvcm0gdmVjNCB1MjtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1MztcbiIKLSAgICAgICAg
InZlYzQgYWRkKGluIHZlYzQgeCwgaW4gdmVjNCB5KSB7XG4iCi0gICAgICAgICIgICByZXR1cm4g
eCArIHk7XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJ2ZWM0IGNvbXBvdW5kX2FkZChpbm91
dCB2ZWM0IHgsIGluIHZlYzQgeSkge1xuIgotICAgICAgICAiICAgeCA9IHggKyB5O1xuIgotICAg
ICAgICAiICAgcmV0dXJuIHg7XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCi0gICAgICAgICIgICB2ZWM0IHYgPSB1MTtcbiIKLSAgICAgICAgIiAgIHZlYzQgdjIg
PSBhZGQoY29tcG91bmRfYWRkKHYsIHUyKSwgZnJhY3QodTMpKTtcbiIKLSAgICAgICAgIiAgIGds
X0ZyYWdDb2xvciA9IHYgKyB2MjtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFk
ZXJTdHJpbmcpOwotICAgIC8vIFRlc3QgbmVzdGVkIGNhbGxzCi0gICAgQVNTRVJUX1RSVUUoZm91
bmRJbkFsbEdMU0xDb2RlKAotICAgICAgICAidjIgPSBhZGQoY29tcG91bmRfYWRkKHYsIGFuZ2xl
X2ZybSh1MikpLCBhbmdsZV9mcm0oZnJhY3QoYW5nbGVfZnJtKHUzKSkpKSIpKTsKLSAgICBBU1NF
UlRfVFJVRSgKLSAgICAgICAgZm91bmRJbkhMU0xDb2RlKCJ2MiA9IF9hZGRfZmxvYXQ0X2Zsb2F0
NChfY29tcG91bmRfYWRkX2Zsb2F0NF9mbG9hdDQoX3YsIGFuZ2xlX2ZybShfdTIpKSwgIgotICAg
ICAgICAgICAgICAgICAgICAgICAgImFuZ2xlX2ZybShmcmFjKGFuZ2xlX2ZybShfdTMpKSkpIikp
OwotfQotCi0vLyBUZXN0IHRoYXQgY29kZSBpbnNpZGUgYW4gaW5kZXggb2YgYSBmdW5jdGlvbiBv
dXQgcGFyYW1ldGVyIGdldHMgcHJvY2Vzc2VkLgotVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9u
VGVzdCwgT3BJbkluZGV4T2ZGdW5jdGlvbk91dFBhcmFtZXRlcikKLXsKLSAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgotICAgICAgICAidm9pZCBmb28ob3V0IHZlYzQgZikgeyBmLnggPSAwLjA7IH1cbiIKLSAg
ICAgICAgInVuaWZvcm0gZmxvYXQgdTI7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0g
ICAgICAgICIgICB2ZWM0IHZbMl07XG4iCi0gICAgICAgICIgICBmb28odltpbnQoZXhwMih1Mikp
XSk7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2WzBdO1xuIgotICAgICAgICAifVxu
IjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFs
bEdMU0xDb2RlKCJhbmdsZV9mcm0oZXhwMihhbmdsZV9mcm0odTIpKSkiKSk7Ci0gICAgQVNTRVJU
X1RSVUUoZm91bmRJbkhMU0xDb2RlKCJhbmdsZV9mcm0oZXhwMihhbmdsZV9mcm0oX3UyKSkpIikp
OwotfQotCi0vLyBUZXN0IHRoYXQgY29kZSBpbnNpZGUgYW4gaW5kZXggb2YgYW4gbC12YWx1ZSBn
ZXRzIHByb2Nlc3NlZC4KLVRFU1RfRihEZWJ1Z1NoYWRlclByZWNpc2lvblRlc3QsIE9wSW5JbmRl
eE9mTFZhbHVlKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQg
dTE7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IHUyO1xuIgotICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgotICAgICAgICAiICAgdmVjNCB2WzJdO1xuIgotICAgICAgICAiICAgdltpbnQoZXhw
Mih1MikpXSA9IHUxO1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdlswXTtcbiIKLSAg
ICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5BbGxHTFNMQ29kZSgiYW5nbGVfZnJtKGV4cDIoYW5nbGVfZnJtKHUyKSkpIikpOwot
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5ITFNMQ29kZSgiYW5nbGVfZnJtKGV4cDIoYW5nbGVfZnJt
KF91MikpKSIpKTsKLX0KLQotLy8gVGVzdCB0aGF0IHRoZSBvdXQgcGFyYW1ldGVyIG9mIG1vZGYg
ZG9lc24ndCBnZXQgcm91bmRlZAotVEVTVF9GKERlYnVnU2hhZGVyUHJlY2lzaW9uVGVzdCwgTW9k
Zk91dFBhcmFtZXRlcikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0K
LSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IHU7XG4iCi0gICAgICAgICJvdXQgdmVj
NCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIg
ICBmbG9hdCBvO1xuIgotICAgICAgICAiICAgZmxvYXQgZiA9IG1vZGYodSwgbyk7XG4iCi0gICAg
ICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGYsIG8sIDAsIDEpO1xuIgotICAgICAgICAifVxu
IjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkFs
bEdMU0xDb2RlKCJtb2RmKGFuZ2xlX2ZybSh1KSwgbykiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91
bmRJbkhMU0xDb2RlKCJtb2RmKGFuZ2xlX2ZybShfdSksIF9vKSIpKTsKLX0KLQotI2lmIGRlZmlu
ZWQoQU5HTEVfRU5BQkxFX0hMU0wpCi0vLyBUZXN0cyBwcmVjaXNpb24gZW11bGF0aW9uIHdpdGgg
SExTTCAzLjAgb3V0cHV0IC0tIHNob3VsZCBlcnJvciBncmFjZWZ1bGx5LgotVEVTVChEZWJ1Z1No
YWRlclByZWNpc2lvbk5lZ2F0aXZlVGVzdCwgSExTTDNVbnN1cHBvcnRlZCkKLXsKLSAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgotICAgICAgICAidm9pZCBt
YWluKCkge1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh1KTtcbiIKLSAgICAg
ICAgIn1cbiI7Ci0gICAgc3RkOjpzdHJpbmcgaW5mb0xvZzsKLSAgICBzdGQ6OnN0cmluZyB0cmFu
c2xhdGVkQ29kZTsKLSAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOwotICAgIFNoSW5p
dEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7Ci0gICAgcmVzb3VyY2VzLldFQkdMX2RlYnVn
X3NoYWRlcl9wcmVjaXNpb24gPSAxOwotICAgIEFTU0VSVF9GQUxTRShjb21waWxlVGVzdFNoYWRl
cihHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQRUMsIFNIX0hMU0xfM18wX09VVFBVVCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyU3RyaW5nLCAmcmVzb3Vy
Y2VzLCAwLCAmdHJhbnNsYXRlZENvZGUsICZpbmZvTG9nKSk7Ci19Ci0jZW5kaWYgIC8vIGRlZmlu
ZWQoQU5HTEVfRU5BQkxFX0hMU0wpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWRfdGVzdC5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvRVhU
X2JsZW5kX2Z1bmNfZXh0ZW5kZWRfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDQwYWVlZDI4ZGJhLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvRVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWRfdGVzdC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODUgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykg
MjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBFWFRf
YmxlbmRfZnVuY19leHRlbmRlZC5jcHA6Ci0vLyAgIFRlc3QgZm9yIEVYVF9ibGVuZF9mdW5jX2V4
dGVuZGVkX3Rlc3QKLS8vCi0KLSNpbmNsdWRlICJhbmdsZV9nbC5oIgotI2luY2x1ZGUgImd0ZXN0
L2d0ZXN0LmgiCi0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLXVzaW5nIHRlc3Rp
bmc6OkNvbWJpbmU7Ci11c2luZyB0ZXN0aW5nOjpWYWx1ZXM7Ci11c2luZyB0ZXN0aW5nOjptYWtl
X3R1cGxlOwotCi1uYW1lc3BhY2UKLXsKLWNvbnN0IGNoYXIgRVNTTFZlcnNpb24xMDBbXSA9ICIj
dmVyc2lvbiAxMDBcbiI7Ci1jb25zdCBjaGFyIEVTU0xWZXJzaW9uMzAwW10gPSAiI3ZlcnNpb24g
MzAwIGVzXG4iOwotY29uc3QgY2hhciBFU1NMVmVyc2lvbjMxMFtdID0gIiN2ZXJzaW9uIDMxMCBl
c1xuIjsKLWNvbnN0IGNoYXIgRVhUQkZFUHJhZ21hW10gICA9ICIjZXh0ZW5zaW9uIEdMX0VYVF9i
bGVuZF9mdW5jX2V4dGVuZGVkIDogcmVxdWlyZVxuIjsKLQotY29uc3QgY2hhciBFU1NMMTAwX1Np
bXBsZVNoYWRlcjFbXSA9Ci0gICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICJ2
b2lkIG1haW4oKSB7IFxuIgotICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgot
ICAgICIgICAgZ2xfU2Vjb25kYXJ5RnJhZ0NvbG9yRVhUID0gdmVjNChnbF9NYXhEdWFsU291cmNl
RHJhd0J1ZmZlcnNFWFQgLyAxMCk7XG4iCi0gICAgIn1cbiI7Ci0KLS8vIFNoYWRlciB0aGF0IHRl
c3RzIG9ubHkgdGhlIGFjY2VzcyB0byBnbF9NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnNFWFQuCi1j
b25zdCBjaGFyIEVTU0wxMDBfTWF4RHVhbFNvdXJjZUFjY2Vzc1NoYWRlcltdID0KLSAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgInZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9y
ID0gdmVjNChnbF9NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnNFWFQgLyAxMCk7IH1cbiI7Ci0KLS8v
IFNoYWRlciB0aGF0IHdyaXRlcyB0byBTZWNvbmRhcnlGcmFnRGF0YS4KLWNvbnN0IGNoYXIgRVNT
TDEwMF9GcmFnRGF0YVNoYWRlcltdID0KLSAgICAiI2V4dGVuc2lvbiBHTF9FWFRfZHJhd19idWZm
ZXJzIDogcmVxdWlyZVxuIgotICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICIgICAgZ2xfRnJhZ0RhdGFbZ2xfTWF4RHJhd0J1ZmZlcnMg
LSAxXSA9IHZlYzQoMS4wKTtcbiIKLSAgICAiICAgIGdsX1NlY29uZGFyeUZyYWdEYXRhRVhUW2ds
X01heER1YWxTb3VyY2VEcmF3QnVmZmVyc0VYVCAtIDFdID0gdmVjNCgwLjEpO1xuIgotICAgICJ9
XG4iOwotCi0vLyBTaGFkZXIgdGhhdCB3cml0ZXMgdG8gU2Vjb25kYXJ5RnJhZ0NvbG9yIGFuZCBT
ZWNvbmRhcnlGcmFnRGF0YSBkb2VzIG5vdCBjb21waWxlLgotY29uc3QgY2hhciBFU1NMMTAwX0Nv
bG9yQW5kRGF0YVdyaXRlRmFpbHVyZVNoYWRlcjFbXSA9Ci0gICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIgotICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgIiAgICBnbF9TZWNvbmRhcnlG
cmFnQ29sb3JFWFQgPSB2ZWM0KDEuMCk7XG4iCi0gICAgIiAgICBnbF9TZWNvbmRhcnlGcmFnRGF0
YUVYVFtnbF9NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnNFWFRdID0gdmVjNCgwLjEpO1xuIgotICAg
ICJ9XG4iOwotCi0vLyBTaGFkZXIgdGhhdCB3cml0ZXMgdG8gRnJhZ0NvbG9yIGFuZCBTZWNvbmRh
cnlGcmFnRGF0YSBkb2VzIG5vdCBjb21waWxlLgotY29uc3QgY2hhciBFU1NMMTAwX0NvbG9yQW5k
RGF0YVdyaXRlRmFpbHVyZVNoYWRlcjJbXSA9Ci0gICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgotICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KDEuMCk7XG4iCi0gICAgIiAgICBnbF9TZWNvbmRhcnlGcmFnRGF0YUVYVFtnbF9NYXhEdWFsU291
cmNlRHJhd0J1ZmZlcnNFWFRdID0gdmVjNCgwLjEpO1xuIgotICAgICJ9XG4iOwotCi0vLyBTaGFk
ZXIgdGhhdCB3cml0ZXMgdG8gRnJhZ0RhdGEgYW5kIFNlY29uZGFyeUZyYWdDb2xvci4KLWNvbnN0
IGNoYXIgRVNTTDEwMF9Db2xvckFuZERhdGFXcml0ZUZhaWx1cmVTaGFkZXIzW10gPQotICAgICIj
ZXh0ZW5zaW9uIEdMX0VYVF9kcmF3X2J1ZmZlcnMgOiByZXF1aXJlXG4iCi0gICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgotICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgIiAgICBnbF9T
ZWNvbmRhcnlGcmFnQ29sb3JFWFQgPSB2ZWM0KDEuMCk7XG4iCi0gICAgIiAgICBnbF9GcmFnRGF0
YVtnbF9NYXhEcmF3QnVmZmVyc10gPSB2ZWM0KDAuMSk7XG4iCi0gICAgIn1cbiI7Ci0KLS8vIElu
IEdMU0wgdmVyc2lvbiAzMDAgZXMsIHRoZSBnbF9NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnNFWFQg
aXMgYXZhaWxhYmxlLgotY29uc3QgY2hhciBFU1NMMzAwX01heER1YWxTb3VyY2VBY2Nlc3NTaGFk
ZXJbXSA9Ci0gICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICJsYXlvdXQobG9j
YXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xvcjsiCi0gICAgInZvaWQgbWFpbigp
IHtcbiIKLSAgICAiICAgIGZyYWdDb2xvciA9IHZlYzQoZ2xfTWF4RHVhbFNvdXJjZURyYXdCdWZm
ZXJzRVhUIC8gMTApO1xuIgotICAgICJ9XG4iOwotCi0vLyBJbiBHTFNMIHZlcnNpb24gMzAwIGVz
LCB0aGUgb25seSB3YXkgdG8gd3JpdGUgYSBjb3JyZWN0IHNoYWRlciBpcyB0byByZXF1aXJlIHRo
ZSBleHRlbnNpb24gYW5kCi0vLyB0aGVuIGxlYXZlIHRoZSBsb2NhdGlvbnMgdW5zcGVjaWZpZWQu
IFRoZSBjYWxsZXIgd2lsbCB0aGVuIGJpbmQgdGhlIHZhcmlhYmxlcyB3aXRoIHRoZSBleHRlbnNp
b24KLS8vIGJpbmRpbmcgZnVuY3Rpb25zLgotY29uc3QgY2hhciBFU1NMMzAwX0xvY2F0aW9uQW5k
VW5zcGVjaWZpZWRPdXRwdXRTaGFkZXJbXSA9Ci0gICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgotICAgICJsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xv
cjsiCi0gICAgIm91dCBtZWRpdW1wIHZlYzQgc2Vjb25kYXJ5RnJhZ0NvbG9yOyIKLSAgICAidm9p
ZCBtYWluKCkge1xuIgotICAgICIgICAgZnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAgICIg
ICAgc2Vjb25kYXJ5RnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAgICJ9XG4iOwotCi1jb25z
dCBjaGFyIEVTU0wzMDBfVHdvVW5zcGVjaWZpZWRMb2NhdGlvbk91dHB1dHNTaGFkZXJbXSA9Ci0g
ICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICJvdXQgbWVkaXVtcCB2ZWM0IGZy
YWdDb2xvcjsiCi0gICAgIm91dCBtZWRpdW1wIHZlYzQgc2Vjb25kYXJ5RnJhZ0NvbG9yOyIKLSAg
ICAidm9pZCBtYWluKCkge1xuIgotICAgICIgICAgZnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgot
ICAgICIgICAgc2Vjb25kYXJ5RnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAgICJ9XG4iOwot
Ci0vLyBTaGFkZXIgdGhhdCBpcyBjb3JyZWN0IGluIEdMU0wgRVMgMy4xMCBmYWlscyB3aGVuIHVz
ZWQgaW4gdmVyc2lvbiAzMDAgZXMuCi1jb25zdCBjaGFyIEVTU0wzMTBfTG9jYXRpb25JbmRleFNo
YWRlcltdID0KLSAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgImxheW91dChs
b2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9yOyIKLSAgICAibGF5b3V0KGxv
Y2F0aW9uID0gMCwgaW5kZXggPSAxKSBvdXQgbWVkaXVtcCB2ZWM0IHNlY29uZGFyeUZyYWdDb2xv
cjsiCi0gICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAiICAgZnJhZ0NvbG9yID0gdmVjNCgxKTtc
biIKLSAgICAiICAgc2Vjb25kYXJ5RnJhZ0NvbG9yID0gdmVjNCgxKTtcbiIKLSAgICAifVxuIjsK
LQotLy8gU2hhZGVyIHRoYXQgc3BlY2lmaWVzIGluZGV4IGxheW91dCBxdWFsaWZpZXIgYnV0IG5v
dCBsb2NhdGlvbiBmYWlscyB0byBjb21waWxlLiBDdXJyZW50bHkgZmFpbHMKLS8vIHRvIGNvbXBp
bGUgZHVlIHRvIHZlcnNpb24gMzEwIGVzIG5vdCBiZWluZyBzdXBwb3J0ZWQuCi1jb25zdCBjaGFy
IEVTU0wzMTBfTG9jYXRpb25JbmRleEZhaWx1cmVTaGFkZXJbXSA9Ci0gICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgotICAgICJsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgbWVkaXVtcCB2
ZWM0IGZyYWdDb2xvcjsiCi0gICAgImxheW91dChpbmRleCA9IDEpIG91dCBtZWRpdW1wIHZlYzQg
c2Vjb25kYXJ5RnJhZ0NvbG9yOyIKLSAgICAidm9pZCBtYWluKCkge1xuIgotICAgICIgICBmcmFn
Q29sb3IgPSB2ZWM0KDEuMCk7XG4iCi0gICAgIiAgIHNlY29uZGFyeUZyYWdDb2xvciA9IHZlYzQo
MS4wKTtcbiIKLSAgICAifVxuIjsKLQotY2xhc3MgRVhUQmxlbmRGdW5jRXh0ZW5kZWRUZXN0Ci0g
ICAgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTx0ZXN0aW5nOjp0dXBsZTxTaFNoYWRl
clNwZWMsIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqPj4KLXsKLSAgcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgdm9pZCBTZXRVcCgpCi0gICAgewotICAgICAgICBTaEluaXRCdWlsdEluUmVzb3Vy
Y2VzKCZtUmVzb3VyY2VzKTsKLSAgICAgICAgLy8gRVhUX2RyYXdfYnVmZmVycyBpcyB1c2VkIGlu
IHNvbWUgb2YgdGhlIHNoYWRlcnMgZm9yIHRlc3QgcHVycG9zZXMuCi0gICAgICAgIG1SZXNvdXJj
ZXMuRVhUX2RyYXdfYnVmZmVycyA9IDE7Ci0gICAgICAgIG1SZXNvdXJjZXMuTlZfZHJhd19idWZm
ZXJzICA9IDI7Ci0KLSAgICAgICAgbUNvbXBpbGVyID0gTlVMTDsKLSAgICB9Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgVGVhckRvd24oKSB7IERlc3Ryb3lDb21waWxlcigpOyB9Ci0gICAgdm9pZCBEZXN0
cm95Q29tcGlsZXIoKQotICAgIHsKLSAgICAgICAgaWYgKG1Db21waWxlcikKLSAgICAgICAgewot
ICAgICAgICAgICAgU2hEZXN0cnVjdChtQ29tcGlsZXIpOwotICAgICAgICAgICAgbUNvbXBpbGVy
ID0gTlVMTDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgSW5pdGlhbGl6ZUNvbXBpbGVy
KCkKLSAgICB7Ci0gICAgICAgIERlc3Ryb3lDb21waWxlcigpOwotICAgICAgICBtQ29tcGlsZXIg
PSBTaENvbnN0cnVjdENvbXBpbGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgdGVzdGluZzo6Z2V0PDA+
KEdldFBhcmFtKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNI
X0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQVVQsICZtUmVzb3VyY2VzKTsKLSAgICAgICAgQVNTRVJU
X1RSVUUobUNvbXBpbGVyICE9IE5VTEwpIDw8ICJDb21waWxlciBjb3VsZCBub3QgYmUgY29uc3Ry
dWN0ZWQuIjsKLSAgICB9Ci0KLSAgICB0ZXN0aW5nOjpBc3NlcnRpb25SZXN1bHQgVGVzdFNoYWRl
ckNvbXBpbGUoY29uc3QgY2hhciAqcHJhZ21hKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFRlc3RT
aGFkZXJDb21waWxlKHRlc3Rpbmc6OmdldDwxPihHZXRQYXJhbSgpKSwgIC8vIFZlcnNpb24uCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmFnbWEsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpnZXQ8Mj4oR2V0UGFyYW0oKSkgIC8vIFNoYWRlci4K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Ci0gICAgfQotCi0gICAgdGVzdGlu
Zzo6QXNzZXJ0aW9uUmVzdWx0IFRlc3RTaGFkZXJDb21waWxlKGNvbnN0IGNoYXIgKnZlcnNpb24s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo
YXIgKnByYWdtYSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgY2hhciAqc2hhZGVyKQotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciAqc2hhZGVy
U3RyaW5nc1tdID0ge3ZlcnNpb24sIHByYWdtYSwgc2hhZGVyfTsKLSAgICAgICAgYm9vbCBzdWNj
ZXNzID0gU2hDb21waWxlKG1Db21waWxlciwgc2hhZGVyU3RyaW5ncywgMywgMCk7Ci0gICAgICAg
IGlmIChzdWNjZXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjpB
c3NlcnRpb25TdWNjZXNzKCkgPDwgIkNvbXBpbGF0aW9uIHN1Y2Nlc3MiOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiA6OnRlc3Rpbmc6OkFzc2VydGlvbkZhaWx1cmUoKSA8PCBTaEdldEluZm9M
b2cobUNvbXBpbGVyKTsKLSAgICB9Ci0KLSAgcHJvdGVjdGVkOgotICAgIFNoQnVpbHRJblJlc291
cmNlcyBtUmVzb3VyY2VzOwotICAgIFNoSGFuZGxlIG1Db21waWxlcjsKLX07Ci0KLS8vIEV4dGVu
c2lvbiBmbGFnIGlzIHJlcXVpcmVkIHRvIGNvbXBpbGUgcHJvcGVybHkuIEV4cGVjdCBmYWlsdXJl
IHdoZW4gaXQgaXMKLS8vIG5vdCBwcmVzZW50LgotVEVTVF9QKEVYVEJsZW5kRnVuY0V4dGVuZGVk
VGVzdCwgQ29tcGlsZUZhaWxzV2l0aG91dEV4dGVuc2lvbikKLXsKLSAgICBtUmVzb3VyY2VzLkVY
VF9ibGVuZF9mdW5jX2V4dGVuZGVkID0gMDsKLSAgICBJbml0aWFsaXplQ29tcGlsZXIoKTsKLSAg
ICBFWFBFQ1RfRkFMU0UoVGVzdFNoYWRlckNvbXBpbGUoRVhUQkZFUHJhZ21hKSk7Ci19Ci0KLS8v
IEV4dGVuc2lvbiBkaXJlY3RpdmUgaXMgcmVxdWlyZWQgdG8gY29tcGlsZSBwcm9wZXJseS4gRXhw
ZWN0IGZhaWx1cmUgd2hlbgotLy8gaXQgaXMgbm90IHByZXNlbnQuCi1URVNUX1AoRVhUQmxlbmRG
dW5jRXh0ZW5kZWRUZXN0LCBDb21waWxlRmFpbHNXaXRoRXh0ZW5zaW9uV2l0aG91dFByYWdtYSkK
LXsKLSAgICBtUmVzb3VyY2VzLkVYVF9ibGVuZF9mdW5jX2V4dGVuZGVkICA9IDE7Ci0gICAgbVJl
c291cmNlcy5NYXhEdWFsU291cmNlRHJhd0J1ZmZlcnMgPSAxOwotICAgIEluaXRpYWxpemVDb21w
aWxlcigpOwotICAgIEVYUEVDVF9GQUxTRShUZXN0U2hhZGVyQ29tcGlsZSgiIikpOwotfQotCi0v
LyBXaXRoIGV4dGVuc2lvbiBmbGFnIGFuZCBleHRlbnNpb24gZGlyZWN0aXZlLCBjb21waWxpbmcg
c3VjY2VlZHMuCi0vLyBBbHNvIHRlc3QgdGhhdCB0aGUgZXh0ZW5zaW9uIGRpcmVjdGl2ZSBzdGF0
ZSBpcyByZXNldCBjb3JyZWN0bHkuCi1URVNUX1AoRVhUQmxlbmRGdW5jRXh0ZW5kZWRUZXN0LCBD
b21waWxlU3VjY2VlZHNXaXRoRXh0ZW5zaW9uQW5kUHJhZ21hKQotewotICAgIG1SZXNvdXJjZXMu
RVhUX2JsZW5kX2Z1bmNfZXh0ZW5kZWQgID0gMTsKLSAgICBtUmVzb3VyY2VzLk1heER1YWxTb3Vy
Y2VEcmF3QnVmZmVycyA9IDE7Ci0gICAgSW5pdGlhbGl6ZUNvbXBpbGVyKCk7Ci0gICAgRVhQRUNU
X1RSVUUoVGVzdFNoYWRlckNvbXBpbGUoRVhUQkZFUHJhZ21hKSk7Ci0gICAgLy8gVGVzdCByZXNl
dCBmdW5jdGlvbmFsaXR5LgotICAgIEVYUEVDVF9GQUxTRShUZXN0U2hhZGVyQ29tcGlsZSgiIikp
OwotICAgIEVYUEVDVF9UUlVFKFRlc3RTaGFkZXJDb21waWxlKEVYVEJGRVByYWdtYSkpOwotfQot
Ci0vLyBUaGUgU0wgI3ZlcnNpb24gMTAwIHNoYWRlcnMgdGhhdCBhcmUgY29ycmVjdCB3b3JrIHNp
bWlsYXJseQotLy8gaW4gYm90aCBHTDIgYW5kIEdMMywgd2l0aCBhbmQgd2l0aG91dCB0aGUgdmVy
c2lvbiBzdHJpbmcuCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChDb3JyZWN0RVNTTDEwMFNoYWRl
cnMsCi0gICAgICAgICAgICAgICAgICAgICAgICBFWFRCbGVuZEZ1bmNFeHRlbmRlZFRlc3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBDb21iaW5lKFZhbHVlcyhTSF9HTEVTMl9TUEVDLCBTSF9H
TEVTM19TUEVDKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKCIiLCBF
U1NMVmVyc2lvbjEwMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhF
U1NMMTAwX1NpbXBsZVNoYWRlcjEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBFU1NMMTAwX01heER1YWxTb3VyY2VBY2Nlc3NTaGFkZXIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFU1NMMTAwX0ZyYWdEYXRhU2hhZGVyKSkpOwotCi1JTlNU
QU5USUFURV9URVNUX0NBU0VfUChDb3JyZWN0RVNTTDMwMFNoYWRlcnMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBFWFRCbGVuZEZ1bmNFeHRlbmRlZFRlc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBDb21iaW5lKFZhbHVlcyhTSF9HTEVTM19TUEVDKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsdWVzKEVTU0xWZXJzaW9uMzAwKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgVmFsdWVzKEVTU0wzMDBfTWF4RHVhbFNvdXJjZUFjY2Vzc1NoYWRlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVTU0wzMDBfTG9jYXRpb25BbmRV
bnNwZWNpZmllZE91dHB1dFNoYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVTU0wzMDBfVHdvVW5zcGVjaWZpZWRMb2NhdGlvbk91dHB1dHNTaGFkZXIpKSk7Ci0K
LWNsYXNzIEVYVEJsZW5kRnVuY0V4dGVuZGVkQ29tcGlsZUZhaWx1cmVUZXN0IDogcHVibGljIEVY
VEJsZW5kRnVuY0V4dGVuZGVkVGVzdAotewotfTsKLQotVEVTVF9QKEVYVEJsZW5kRnVuY0V4dGVu
ZGVkQ29tcGlsZUZhaWx1cmVUZXN0LCBDb21waWxlRmFpbHMpCi17Ci0gICAgLy8gRXhwZWN0IGNv
bXBpbGUgZmFpbHVyZSBkdWUgdG8gc2hhZGVyIGVycm9yLCB3aXRoIHNoYWRlciBoYXZpbmcgY29y
cmVjdCBwcmFnbWEuCi0gICAgbVJlc291cmNlcy5FWFRfYmxlbmRfZnVuY19leHRlbmRlZCAgPSAx
OwotICAgIG1SZXNvdXJjZXMuTWF4RHVhbFNvdXJjZURyYXdCdWZmZXJzID0gMTsKLSAgICBJbml0
aWFsaXplQ29tcGlsZXIoKTsKLSAgICBFWFBFQ1RfRkFMU0UoVGVzdFNoYWRlckNvbXBpbGUoRVhU
QkZFUHJhZ21hKSk7Ci19Ci0KLS8vIEluY29ycmVjdCAjdmVyc2lvbiAxMDAgc2hhZGVycyBmYWls
LgotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoSW5jb3JyZWN0RVNTTDEwMFNoYWRlcnMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBFWFRCbGVuZEZ1bmNFeHRlbmRlZENvbXBpbGVGYWlsdXJlVGVz
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIENvbWJpbmUoVmFsdWVzKFNIX0dMRVMyX1NQRUMp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoRVNTTFZlcnNpb24xMDAp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZXMoRVNTTDEwMF9Db2xvckFu
ZERhdGFXcml0ZUZhaWx1cmVTaGFkZXIxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRVNTTDEwMF9Db2xvckFuZERhdGFXcml0ZUZhaWx1cmVTaGFkZXIyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVNTTDEwMF9Db2xvckFuZERhdGFXcml0
ZUZhaWx1cmVTaGFkZXIzKSkpOwotCi0vLyBDb3JyZWN0ICN2ZXJzaW9uIDMwMCBlcyBzaGFkZXJz
IGZhaWwgaW4gR0xFUzIgY29udGV4dCwgcmVnYXJkbGVzcyBvZiB2ZXJzaW9uIHN0cmluZy4KLUlO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKENvcnJlY3RFU1NMMzAwU2hhZGVycywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEVYVEJsZW5kRnVuY0V4dGVuZGVkQ29tcGlsZUZhaWx1cmVUZXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgQ29tYmluZShWYWx1ZXMoU0hfR0xFUzJfU1BFQyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcygiIiwgRVNTTFZlcnNpb24xMDAsIEVT
U0xWZXJzaW9uMzAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEVT
U0wzMDBfTG9jYXRpb25BbmRVbnNwZWNpZmllZE91dHB1dFNoYWRlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEVTU0wzMDBfVHdvVW5zcGVjaWZpZWRMb2NhdGlvbk91
dHB1dHNTaGFkZXIpKSk7Ci0KLS8vIENvcnJlY3QgI3ZlcnNpb24gMTAwIHNoYWRlcnMgZmFpbCB3
aGVuIHVzZWQgd2l0aCAjdmVyc2lvbiAzMDAgZXMuCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChD
b3JyZWN0RVNTTDEwMFNoYWRlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICBFWFRCbGVuZEZ1
bmNFeHRlbmRlZENvbXBpbGVGYWlsdXJlVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIENv
bWJpbmUoVmFsdWVzKFNIX0dMRVMzX1NQRUMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWx1ZXMoRVNTTFZlcnNpb24zMDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWx1ZXMoRVNTTDEwMF9TaW1wbGVTaGFkZXIxLCBFU1NMMTAwX0ZyYWdEYXRhU2hhZGVy
KSkpOwotCi0vLyBJbmNvcnJlY3QgI3ZlcnNpb24gMzEwIGVzIGFsd2F5cyBmYWlscy4KLUlOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKEluY29ycmVjdEVTU0wzMTBTaGFkZXJzLAotICAgICAgICAgICAg
ICAgICAgICAgICAgRVhUQmxlbmRGdW5jRXh0ZW5kZWRDb21waWxlRmFpbHVyZVRlc3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBDb21iaW5lKFZhbHVlcyhTSF9HTEVTM19TUEVDKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzKEVTU0xWZXJzaW9uMzAwLCBFU1NMVmVy
c2lvbjMxMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlcyhFU1NMMzEw
X0xvY2F0aW9uSW5kZXhGYWlsdXJlU2hhZGVyKSkpOwotCi0vLyBDb3JyZWN0ICN2ZXJzaW9uIDMx
MCBlcyBmYWlscyBpbiAjdmVyc2lvbiAzMDAgZXMuCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUCgK
LSAgICBDb3JyZWN0RVNTTDMxMFNoYWRlcnNJbkVTU0wzMDAsCi0gICAgRVhUQmxlbmRGdW5jRXh0
ZW5kZWRDb21waWxlRmFpbHVyZVRlc3QsCi0gICAgVmFsdWVzKG1ha2VfdHVwbGUoU0hfR0xFUzNf
U1BFQywgJkVTU0xWZXJzaW9uMzAwWzBdLCAmRVNTTDMxMF9Mb2NhdGlvbkluZGV4U2hhZGVyWzBd
KSkpOwotCi0vLyBDb3JyZWN0ICN2ZXJzaW9uIDMxMCBlcyBmYWlscyBpbiAjdmVyc2lvbiAzMTAg
ZXMsIGR1ZSB0byAzLjEgbm90IGJlaW5nIHN1cHBvcnRlZC4KLUlOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QKAotICAgIENvcnJlY3RFU1NMMzEwU2hhZGVycywKLSAgICBFWFRCbGVuZEZ1bmNFeHRlbmRl
ZENvbXBpbGVGYWlsdXJlVGVzdCwKLSAgICBWYWx1ZXMobWFrZV90dXBsZShTSF9HTEVTM19TUEVD
LCAmRVNTTFZlcnNpb24zMTBbMF0sICZFU1NMMzEwX0xvY2F0aW9uSW5kZXhTaGFkZXJbMF0pKSk7
Ci0KLX0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL0VtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2FzdF90ZXN0
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9F
bXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3RfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGRjMjg2YjgxNGQ0Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRj
YXN0X3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLy8KLS8vIENvcHly
aWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8v
Ci0vLyBFbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3RfdGVzdC5jcHA6Ci0vLyAgIFRlc3RzIGZv
ciBnbF9GcmFnQ29sb3IgYnJvYWRjYXN0IGJlaGF2aW9yIGVtdWxhdGlvbi4KLS8vCi0KLSNpbmNs
dWRlICJhbmdsZV9nbC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiR0xT
TEFORy9TaGFkZXJMYW5nLmgiCi0jaW5jbHVkZSAidGVzdHMvdGVzdF91dGlscy9jb21waWxlcl90
ZXN0LmgiCi0KLW5hbWVzcGFjZQotewotCi1jb25zdCBpbnQga01heERyYXdCdWZmZXJzID0gMjsK
LQotY2xhc3MgRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0VGVzdCA6IHB1YmxpYyBNYXRjaE91
dHB1dENvZGVUZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICBFbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNh
c3RUZXN0KCkKLSAgICAgICAgOiBNYXRjaE91dHB1dENvZGVUZXN0KEdMX0ZSQUdNRU5UX1NIQURF
UiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICAvLyBjb21waWxlIG9wdGlvbnMK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIX0dMU0xfQ09NUEFUSUJJTElUWV9PVVRQ
VVQpCi0gICAgewotICAgICAgICBnZXRSZXNvdXJjZXMoKS0+TWF4RHJhd0J1ZmZlcnMgICA9IGtN
YXhEcmF3QnVmZmVyczsKLSAgICAgICAgZ2V0UmVzb3VyY2VzKCktPkVYVF9kcmF3X2J1ZmZlcnMg
PSAxOwotICAgIH0KLX07Ci0KLS8vIFZlcmlmaWVzIHRoYXQgd2l0aG91dCBleHBsaWNpdGx5IGVu
YWJsaW5nIEdMX0VYVF9kcmF3X2J1ZmZlcnMgZXh0ZW5zaW9uCi0vLyBpbiB0aGUgc2hhZGVyLCBu
byBicm9hZGNhc3QgZW11bGF0aW9uLgotVEVTVF9GKEVtdWxhdGVHTEZyYWdDb2xvckJyb2FkY2Fz
dFRlc3QsIEZyYWdDb2xvck5vQnJvYWRjYXN0KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHNo
YWRlclN0cmluZyA9Ci0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAg
ICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMSwgMCwgMCwgMCk7XG4iCi0gICAgICAgICJ9
XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBFWFBFQ1RfVFJVRShmb3VuZElu
Q29kZSgiZ2xfRnJhZ0NvbG9yIikpOwotICAgIEVYUEVDVF9GQUxTRShmb3VuZEluQ29kZSgiZ2xf
RnJhZ0RhdGFbMF0iKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKGZvdW5kSW5Db2RlKCJnbF9GcmFnRGF0
YVsxXSIpKTsKLX0KLQotLy8gVmVyaWZpZXMgdGhhdCB3aXRoIGV4cGxpY2l0bHkgZW5hYmxpbmcg
R0xfRVhUX2RyYXdfYnVmZmVycyBleHRlbnNpb24KLS8vIGluIHRoZSBzaGFkZXIsIGJyb2FkY2Fz
dCBpcyBlbXVhbHRlZCBieSByZXBsYWNpbmcgZ2xfRnJhZ0NvbG9yIHdpdGggZ2xfRnJhZ0RhdGEu
Ci1URVNUX0YoRW11bGF0ZUdMRnJhZ0NvbG9yQnJvYWRjYXN0VGVzdCwgRnJhZ0NvbG9yQnJvYWRj
YXN0KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHNoYWRlclN0cmluZyA9Ci0gICAgICAgICIj
ZXh0ZW5zaW9uIEdMX0VYVF9kcmF3X2J1ZmZlcnMgOiByZXF1aXJlXG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZl
YzQoMSwgMCwgMCwgMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3Ry
aW5nKTsKLSAgICBFWFBFQ1RfRkFMU0UoZm91bmRJbkNvZGUoImdsX0ZyYWdDb2xvciIpKTsKLSAg
ICBFWFBFQ1RfVFJVRShmb3VuZEluQ29kZSgiZ2xfRnJhZ0RhdGFbMF0iKSk7Ci0gICAgRVhQRUNU
X1RSVUUoZm91bmRJbkNvZGUoImdsX0ZyYWdEYXRhWzFdIikpOwotfQotCi0vLyBWZXJpZmllcyB0
aGF0IHdpdGggZXhwbGljaXRseSBlbmFibGluZyBHTF9FWFRfZHJhd19idWZmZXJzIGV4dGVuc2lv
bgotLy8gaW4gdGhlIHNoYWRlciB3aXRoIGFuIGVtcHR5IG1haW4oKSwgYW5vdGhpbmcgaGFwcGVu
cy4KLVRFU1RfRihFbXVsYXRlR0xGcmFnQ29sb3JCcm9hZGNhc3RUZXN0LCBFbXB0eU1haW4pCi17
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiNleHRlbnNp
b24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmVcbiIKLSAgICAgICAgInZvaWQgbWFpbigp
XG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3Ry
aW5nKTsKLSAgICBFWFBFQ1RfRkFMU0UoZm91bmRJbkNvZGUoImdsX0ZyYWdDb2xvciIpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UoZm91bmRJbkNvZGUoImdsX0ZyYWdEYXRhWzBdIikpOwotICAgIEVYUEVD
VF9GQUxTRShmb3VuZEluQ29kZSgiZ2xfRnJhZ0RhdGFbMV0iKSk7Ci19Ci0KLX0gIC8vIG5hbWVz
cGFjZSBhbm9ueW1vdXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9jb21waWxlcl90ZXN0cy9FeHByZXNzaW9uTGltaXRfdGVzdC5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvRXhwcmVzc2lvbkxpbWl0X3Rl
c3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmEyNGE1ZjQ3Yi4uMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rl
c3RzL0V4cHJlc3Npb25MaW1pdF90ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2MiArMCww
IEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTMgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotI2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8c3Ry
aW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlICJhbmdsZV9nbC5oIgotI2luY2x1ZGUg
Imd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLSNkZWZp
bmUgU0hBREVSKFNyYykgI1NyYwotCi1jbGFzcyBFeHByZXNzaW9uTGltaXRUZXN0IDogcHVibGlj
IHRlc3Rpbmc6OlRlc3QgewotcHJvdGVjdGVkOgotICAgIHN0YXRpYyBjb25zdCBpbnQga01heEV4
cHJlc3Npb25Db21wbGV4aXR5ID0gMTY7Ci0gICAgc3RhdGljIGNvbnN0IGludCBrTWF4Q2FsbFN0
YWNrRGVwdGggICAgICAgPSAxNjsKLSAgICBzdGF0aWMgY29uc3QgaW50IGtNYXhGdW5jdGlvblBh
cmFtZXRlcnMgICA9IDE2OwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBrRXhwcmVzc2lvblRvb0Nv
bXBsZXg7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGtDYWxsU3RhY2tUb29EZWVwOwotICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBrSGFzUmVjdXJzaW9uOwotICAgIHN0YXRpYyBjb25zdCBjaGFyICpr
VG9vTWFueVBhcmFtZXRlcnM7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQotICAgIHsKLSAg
ICAgICAgbWVtc2V0KCZyZXNvdXJjZXMsIDAsIHNpemVvZihyZXNvdXJjZXMpKTsKLQotICAgICAg
ICBHZW5lcmF0ZVJlc291cmNlcygmcmVzb3VyY2VzKTsKLSAgICB9Ci0KLSAgICAvLyBTZXQgdXAg
dGhlIHBlciBjb21waWxlIHJlc291cmNlcwotICAgIHN0YXRpYyB2b2lkIEdlbmVyYXRlUmVzb3Vy
Y2VzKFNoQnVpbHRJblJlc291cmNlcyAqcmVzKQotICAgIHsKLSAgICAgICAgU2hJbml0QnVpbHRJ
blJlc291cmNlcyhyZXMpOwotCi0gICAgICAgIHJlcy0+TWF4VmVydGV4QXR0cmlicyAgICAgICAg
ICAgICA9IDg7Ci0gICAgICAgIHJlcy0+TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMgICAgICA9IDEy
ODsKLSAgICAgICAgcmVzLT5NYXhWYXJ5aW5nVmVjdG9ycyAgICAgICAgICAgID0gODsKLSAgICAg
ICAgcmVzLT5NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyAgID0gMDsKLSAgICAgICAgcmVzLT5N
YXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRzID0gODsKLSAgICAgICAgcmVzLT5NYXhUZXh0dXJl
SW1hZ2VVbml0cyAgICAgICAgID0gODsKLSAgICAgICAgcmVzLT5NYXhGcmFnbWVudFVuaWZvcm1W
ZWN0b3JzICAgID0gMTY7Ci0gICAgICAgIHJlcy0+TWF4RHJhd0J1ZmZlcnMgICAgICAgICAgICAg
ICA9IDE7Ci0KLSAgICAgICAgcmVzLT5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgPSAwOwotICAg
ICAgICByZXMtPk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgICA9IDA7Ci0KLSAgICAgICAgcmVzLT5N
YXhFeHByZXNzaW9uQ29tcGxleGl0eSA9IGtNYXhFeHByZXNzaW9uQ29tcGxleGl0eTsKLSAgICAg
ICAgcmVzLT5NYXhDYWxsU3RhY2tEZXB0aCAgICAgICA9IGtNYXhDYWxsU3RhY2tEZXB0aDsKLSAg
ICAgICAgcmVzLT5NYXhGdW5jdGlvblBhcmFtZXRlcnMgICA9IGtNYXhGdW5jdGlvblBhcmFtZXRl
cnM7Ci0gICAgfQotCi0gICAgdm9pZCBHZW5lcmF0ZUxvbmdFeHByZXNzaW9uKGludCBsZW5ndGgs
IHN0ZDo6c3RyaW5nc3RyZWFtKiBzcykKLSAgICB7Ci0gICAgICAgIGZvciAoaW50IGlpID0gMDsg
aWkgPCBsZW5ndGg7ICsraWkpIHsKLSAgICAgICAgICAqc3MgPDwgIisgdmVjNCgiIDw8IGlpIDw8
ICIpIjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nIEdlbmVyYXRlU2hhZGVy
V2l0aExvbmdFeHByZXNzaW9uKGludCBsZW5ndGgpCi0gICAgewotICAgICAgICBzdGF0aWMgY29u
c3QgY2hhciogc2hhZGVyU3RhcnQgPSBTSEFERVIoCi0gICAgICAgICAgICBwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKLSAgICAgICAgICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yOwotICAgICAgICAg
ICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xv
ciA9IHVfY29sb3IKLSAgICAgICAgKTsKLQotICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsK
LSAgICAgICAgc3MgPDwgc2hhZGVyU3RhcnQ7Ci0gICAgICAgIEdlbmVyYXRlTG9uZ0V4cHJlc3Np
b24obGVuZ3RoLCAmc3MpOwotICAgICAgICBzcyA8PCAiOyB9IjsKLQotICAgICAgICByZXR1cm4g
c3Muc3RyKCk7Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgR2VuZXJhdGVTaGFkZXJXaXRoVW51
c2VkTG9uZ0V4cHJlc3Npb24oaW50IGxlbmd0aCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBjb25z
dCBjaGFyKiBzaGFkZXJTdGFydCA9IFNIQURFUigKLSAgICAgICAgICAgIHByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0OwotICAgICAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7Ci0gICAgICAgICAg
ICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9y
ID0gdV9jb2xvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZlYzQgc29tZUZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgICByZXR1cm4gdV9jb2xvcgotICAgICAgICApOwotCi0gICAgICAg
IHN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotCi0gICAgICAgIHNzIDw8IHNoYWRlclN0YXJ0OwotICAg
ICAgICBHZW5lcmF0ZUxvbmdFeHByZXNzaW9uKGxlbmd0aCwgJnNzKTsKLSAgICAgICAgc3MgPDwg
IjsgfSI7Ci0KLSAgICAgICAgcmV0dXJuIHNzLnN0cigpOwotICAgIH0KLQotICAgIHZvaWQgR2Vu
ZXJhdGVEZWVwRnVuY3Rpb25TdGFjayhpbnQgbGVuZ3RoLCBzdGQ6OnN0cmluZ3N0cmVhbSogc3Mp
Ci0gICAgewotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyU3RhcnQgPSBTSEFERVIo
Ci0gICAgICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLSAgICAgICAgICAgIHVuaWZv
cm0gdmVjNCB1X2NvbG9yOwotICAgICAgICAgICAgdmVjNCBmdW5jdGlvbjAoKSAgewotICAgICAg
ICAgICAgICByZXR1cm4gdV9jb2xvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAg
ICAgICAqc3MgPDwgc2hhZGVyU3RhcnQ7Ci0gICAgICAgIGZvciAoaW50IGlpID0gMDsgaWkgPCBs
ZW5ndGg7ICsraWkpIHsKLSAgICAgICAgICAqc3MgPDwgInZlYzQgZnVuY3Rpb24iIDw8IChpaSAr
IDEpIDw8ICIoKSB7XG4iCi0gICAgICAgICAgICAgIDw8ICIgIHJldHVybiBmdW5jdGlvbiIgPDwg
aWkgPDwgIigpO1xuIgotICAgICAgICAgICAgICA8PCAifVxuIjsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHN0ZDo6c3RyaW5nIEdlbmVyYXRlU2hhZGVyV2l0aERlZXBGdW5jdGlvblN0YWNrKGlu
dCBsZW5ndGgpCi0gICAgewotICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzczsKLQotICAgICAg
ICBHZW5lcmF0ZURlZXBGdW5jdGlvblN0YWNrKGxlbmd0aCwgJnNzKTsKLQotICAgICAgICBzcyA8
PCAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAgICA8PCAiICBnbF9GcmFnQ29sb3IgPSBmdW5j
dGlvbiIgPDwgbGVuZ3RoIDw8ICIoKTtcbiIKLSAgICAgICAgICAgPDwgIn0iOwotCi0gICAgICAg
IHJldHVybiBzcy5zdHIoKTsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0cmluZyBHZW5lcmF0ZVNoYWRl
cldpdGhVbnVzZWREZWVwRnVuY3Rpb25TdGFjayhpbnQgbGVuZ3RoKQotICAgIHsKLSAgICAgICAg
c3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0KLSAgICAgICAgR2VuZXJhdGVEZWVwRnVuY3Rpb25TdGFj
ayhsZW5ndGgsICZzcyk7Ci0KLSAgICAgICAgc3MgPDwgInZvaWQgbWFpbigpIHtcbiIKLSAgICAg
ICAgICAgPDwgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLDAsMCwwKTtcbiIKLSAgICAgICAgICAg
PDwgIn0iOwotCi0KLSAgICAgICAgcmV0dXJuIHNzLnN0cigpOwotICAgIH0KLQotICAgIHN0ZDo6
c3RyaW5nIEdlbmVyYXRlU2hhZGVyV2l0aEZ1bmN0aW9uUGFyYW1ldGVycyhpbnQgcGFyYW1ldGVy
cykKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotCi0gICAgICAgIHNzIDw8
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgICAgPDwgIlxuIgotICAgICAg
ICAgICA8PCAiZmxvYXQgZm9vKCI7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW1l
dGVyczsgKytpKQotICAgICAgICB7Ci0gICAgICAgICAgICBzcyA8PCAiZmxvYXQgZiIgPDwgaTsK
LSAgICAgICAgICAgIGlmIChpICsgMSA8IHBhcmFtZXRlcnMpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgc3MgPDwgIiwgIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAg
ICBzcyA8PCAiKVxuIgotICAgICAgICAgICA8PCAie1xuIgotICAgICAgICAgICA8PCAiICAgIHJl
dHVybiBmMDtcbiIKLSAgICAgICAgICAgPDwgIn1cbiIKLSAgICAgICAgICAgPDwgIlxuIgotICAg
ICAgICAgICA8PCAidm9pZCBtYWluKClcbiIKLSAgICAgICAgICAgPDwgIntcbiIKLSAgICAgICAg
ICAgPDwgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsMCwwLDApO1xuIgotICAgICAgICAgICA8
PCAifSI7Ci0KLSAgICAgICAgcmV0dXJuIHNzLnN0cigpOwotICAgIH0KLQotICAgIC8vIENvbXBp
bGVzIGEgc2hhZGVyIGFuZCBpZiB0aGVyZSdzIGFuIGVycm9yIGNoZWNrcyBmb3IgYSBzcGVjaWZp
YwotICAgIC8vIHN1YnN0cmluZyBpbiB0aGUgZXJyb3IgbG9nLiBUaGlzIHdheSB3ZSBrbm93IHRo
ZSBlcnJvciBpcyBzcGVjaWZpYwotICAgIC8vIHRvIHRoZSBpc3N1ZSB3ZSBhcmUgdGVzdGluZy4K
LSAgICBib29sIENoZWNrU2hhZGVyQ29tcGlsYXRpb24oU2hIYW5kbGUgY29tcGlsZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNvdXJjZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXhwZWN0ZWRfZXJy
b3IpCi0gICAgewotICAgICAgICBib29sIHN1Y2Nlc3MgPSBTaENvbXBpbGUoY29tcGlsZXIsICZz
b3VyY2UsIDEsIGNvbXBpbGVPcHRpb25zKSAhPSAwOwotICAgICAgICBpZiAoc3VjY2VzcykKLSAg
ICAgICAgewotICAgICAgICAgICAgc3VjY2VzcyA9ICFleHBlY3RlZF9lcnJvcjsKLSAgICAgICAg
fQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGxvZyA9
IFNoR2V0SW5mb0xvZyhjb21waWxlcik7Ci0gICAgICAgICAgICBpZiAoZXhwZWN0ZWRfZXJyb3Ip
Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IGxvZy5maW5kKGV4cGVjdGVkX2Vycm9yKSAhPSBz
dGQ6OnN0cmluZzo6bnBvczsKLQotICAgICAgICAgICAgRVhQRUNUX1RSVUUoc3VjY2VzcykgPDwg
bG9nIDw8ICJcbi0tLS1zaGFkZXItLS0tXG4iIDw8IHNvdXJjZTsKLSAgICAgICAgfQotICAgICAg
ICByZXR1cm4gc3VjY2VzczsKLSAgICB9Ci0KLSAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3Vy
Y2VzOwotfTsKLQotY29uc3QgY2hhciogRXhwcmVzc2lvbkxpbWl0VGVzdDo6a0V4cHJlc3Npb25U
b29Db21wbGV4ID0KLSAgICAiRXhwcmVzc2lvbiB0b28gY29tcGxleCI7Ci1jb25zdCBjaGFyKiBF
eHByZXNzaW9uTGltaXRUZXN0OjprQ2FsbFN0YWNrVG9vRGVlcCA9Ci0gICAgIkNhbGwgc3RhY2sg
dG9vIGRlZXAiOwotY29uc3QgY2hhciogRXhwcmVzc2lvbkxpbWl0VGVzdDo6a0hhc1JlY3Vyc2lv
biA9Ci0gICAgIkZ1bmN0aW9uIHJlY3Vyc2lvbiBkZXRlY3RlZCI7Ci1jb25zdCBjaGFyKiBFeHBy
ZXNzaW9uTGltaXRUZXN0OjprVG9vTWFueVBhcmFtZXRlcnMgPQotICAgICJGdW5jdGlvbiBoYXMg
dG9vIG1hbnkgcGFyYW1ldGVycyI7Ci0KLVRFU1RfRihFeHByZXNzaW9uTGltaXRUZXN0LCBFeHBy
ZXNzaW9uQ29tcGxleGl0eSkKLXsKLSAgICBTaFNoYWRlclNwZWMgc3BlYyA9IFNIX1dFQkdMX1NQ
RUM7Ci0gICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0ID0gU0hfRVNTTF9PVVRQVVQ7Ci0gICAgU2hI
YW5kbGUgdmVydGV4Q29tcGlsZXIgPSBTaENvbnN0cnVjdENvbXBpbGVyKAotICAgICAgICBHTF9G
UkFHTUVOVF9TSEFERVIsIHNwZWMsIG91dHB1dCwgJnJlc291cmNlcyk7Ci0gICAgU2hDb21waWxl
T3B0aW9ucyBjb21waWxlT3B0aW9ucyA9IFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWTsK
LQotICAgIC8vIFRlc3QgZXhwcmVzc2lvbiB1bmRlciB0aGUgbGltaXQgcGFzc2VzLgotICAgIEVY
UEVDVF9UUlVFKENoZWNrU2hhZGVyQ29tcGlsYXRpb24oCi0gICAgICAgIHZlcnRleENvbXBpbGVy
LAotICAgICAgICBHZW5lcmF0ZVNoYWRlcldpdGhMb25nRXhwcmVzc2lvbigKLSAgICAgICAgICAg
IGtNYXhFeHByZXNzaW9uQ29tcGxleGl0eSAtIDEwKS5jX3N0cigpLAotICAgICAgICBjb21waWxl
T3B0aW9ucywgTlVMTCkpOwotICAgIC8vIFRlc3QgZXhwcmVzc2lvbiBvdmVyIHRoZSBsaW1pdCBm
YWlscy4KLSAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAotICAgICAgICB2
ZXJ0ZXhDb21waWxlciwKLSAgICAgICAgR2VuZXJhdGVTaGFkZXJXaXRoTG9uZ0V4cHJlc3Npb24o
Ci0gICAgICAgICAgICBrTWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkgKyAxMCkuY19zdHIoKSwKLSAg
ICAgICAgY29tcGlsZU9wdGlvbnMsIGtFeHByZXNzaW9uVG9vQ29tcGxleCkpOwotICAgIC8vIFRl
c3QgZXhwcmVzc2lvbiBvdmVyIHRoZSBsaW1pdCB3aXRob3V0IGEgbGltaXQgZG9lcyBub3QgZmFp
bC4KLSAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAotICAgICAgICB2ZXJ0
ZXhDb21waWxlciwKLSAgICAgICAgR2VuZXJhdGVTaGFkZXJXaXRoTG9uZ0V4cHJlc3Npb24oCi0g
ICAgICAgICAgICBrTWF4RXhwcmVzc2lvbkNvbXBsZXhpdHkgKyAxMCkuY19zdHIoKSwKLSAgICAg
ICAgY29tcGlsZU9wdGlvbnMgJiB+U0hfTElNSVRfRVhQUkVTU0lPTl9DT01QTEVYSVRZLCBOVUxM
KSk7Ci0gICAgU2hEZXN0cnVjdCh2ZXJ0ZXhDb21waWxlcik7Ci19Ci0KLVRFU1RfRihFeHByZXNz
aW9uTGltaXRUZXN0LCBVbnVzZWRFeHByZXNzaW9uQ29tcGxleGl0eSkKLXsKLSAgICBTaFNoYWRl
clNwZWMgc3BlYyA9IFNIX1dFQkdMX1NQRUM7Ci0gICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0ID0g
U0hfRVNTTF9PVVRQVVQ7Ci0gICAgU2hIYW5kbGUgdmVydGV4Q29tcGlsZXIgPSBTaENvbnN0cnVj
dENvbXBpbGVyKAotICAgICAgICBHTF9GUkFHTUVOVF9TSEFERVIsIHNwZWMsIG91dHB1dCwgJnJl
c291cmNlcyk7Ci0gICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucyA9IFNIX0xJTUlU
X0VYUFJFU1NJT05fQ09NUExFWElUWTsKLQotICAgIC8vIFRlc3QgZXhwcmVzc2lvbiB1bmRlciB0
aGUgbGltaXQgcGFzc2VzLgotICAgIEVYUEVDVF9UUlVFKENoZWNrU2hhZGVyQ29tcGlsYXRpb24o
Ci0gICAgICAgIHZlcnRleENvbXBpbGVyLAotICAgICAgICBHZW5lcmF0ZVNoYWRlcldpdGhVbnVz
ZWRMb25nRXhwcmVzc2lvbigKLSAgICAgICAgICAgIGtNYXhFeHByZXNzaW9uQ29tcGxleGl0eSAt
IDEwKS5jX3N0cigpLAotICAgICAgICBjb21waWxlT3B0aW9ucywgTlVMTCkpOwotICAgIC8vIFRl
c3QgZXhwcmVzc2lvbiBvdmVyIHRoZSBsaW1pdCBmYWlscy4KLSAgICBFWFBFQ1RfVFJVRShDaGVj
a1NoYWRlckNvbXBpbGF0aW9uKAotICAgICAgICB2ZXJ0ZXhDb21waWxlciwKLSAgICAgICAgR2Vu
ZXJhdGVTaGFkZXJXaXRoVW51c2VkTG9uZ0V4cHJlc3Npb24oCi0gICAgICAgICAgICBrTWF4RXhw
cmVzc2lvbkNvbXBsZXhpdHkgKyAxMCkuY19zdHIoKSwKLSAgICAgICAgY29tcGlsZU9wdGlvbnMs
IGtFeHByZXNzaW9uVG9vQ29tcGxleCkpOwotICAgIC8vIFRlc3QgZXhwcmVzc2lvbiBvdmVyIHRo
ZSBsaW1pdCB3aXRob3V0IGEgbGltaXQgZG9lcyBub3QgZmFpbC4KLSAgICBFWFBFQ1RfVFJVRShD
aGVja1NoYWRlckNvbXBpbGF0aW9uKAotICAgICAgICB2ZXJ0ZXhDb21waWxlciwKLSAgICAgICAg
R2VuZXJhdGVTaGFkZXJXaXRoVW51c2VkTG9uZ0V4cHJlc3Npb24oCi0gICAgICAgICAgICBrTWF4
RXhwcmVzc2lvbkNvbXBsZXhpdHkgKyAxMCkuY19zdHIoKSwKLSAgICAgICAgY29tcGlsZU9wdGlv
bnMgJiB+U0hfTElNSVRfRVhQUkVTU0lPTl9DT01QTEVYSVRZLCBOVUxMKSk7Ci0gICAgU2hEZXN0
cnVjdCh2ZXJ0ZXhDb21waWxlcik7Ci19Ci0KLVRFU1RfRihFeHByZXNzaW9uTGltaXRUZXN0LCBD
YWxsU3RhY2tEZXB0aCkKLXsKLSAgICBTaFNoYWRlclNwZWMgc3BlYyA9IFNIX1dFQkdMX1NQRUM7
Ci0gICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0ID0gU0hfRVNTTF9PVVRQVVQ7Ci0gICAgU2hIYW5k
bGUgdmVydGV4Q29tcGlsZXIgPSBTaENvbnN0cnVjdENvbXBpbGVyKAotICAgICAgICBHTF9GUkFH
TUVOVF9TSEFERVIsIHNwZWMsIG91dHB1dCwgJnJlc291cmNlcyk7Ci0gICAgU2hDb21waWxlT3B0
aW9ucyBjb21waWxlT3B0aW9ucyA9IFNIX0xJTUlUX0NBTExfU1RBQ0tfREVQVEg7Ci0KLSAgICAv
LyBUZXN0IGNhbGwgc3RhY2sgdW5kZXIgdGhlIGxpbWl0IHBhc3Nlcy4KLSAgICBFWFBFQ1RfVFJV
RShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAotICAgICAgICB2ZXJ0ZXhDb21waWxlciwKLSAgICAg
ICAgR2VuZXJhdGVTaGFkZXJXaXRoRGVlcEZ1bmN0aW9uU3RhY2soCi0gICAgICAgICAgICBrTWF4
Q2FsbFN0YWNrRGVwdGggLSAxMCkuY19zdHIoKSwKLSAgICAgICAgY29tcGlsZU9wdGlvbnMsIE5V
TEwpKTsKLSAgICAvLyBUZXN0IGNhbGwgc3RhY2sgb3ZlciB0aGUgbGltaXQgZmFpbHMuCi0gICAg
RVhQRUNUX1RSVUUoQ2hlY2tTaGFkZXJDb21waWxhdGlvbigKLSAgICAgICAgdmVydGV4Q29tcGls
ZXIsCi0gICAgICAgIEdlbmVyYXRlU2hhZGVyV2l0aERlZXBGdW5jdGlvblN0YWNrKAotICAgICAg
ICAgICAga01heENhbGxTdGFja0RlcHRoICsgMTApLmNfc3RyKCksCi0gICAgICAgIGNvbXBpbGVP
cHRpb25zLCBrQ2FsbFN0YWNrVG9vRGVlcCkpOwotICAgIC8vIFRlc3QgY2FsbCBzdGFjayBvdmVy
IHRoZSBsaW1pdCB3aXRob3V0IGxpbWl0IGRvZXMgbm90IGZhaWwuCi0gICAgRVhQRUNUX1RSVUUo
Q2hlY2tTaGFkZXJDb21waWxhdGlvbigKLSAgICAgICAgdmVydGV4Q29tcGlsZXIsCi0gICAgICAg
IEdlbmVyYXRlU2hhZGVyV2l0aERlZXBGdW5jdGlvblN0YWNrKAotICAgICAgICAgICAga01heENh
bGxTdGFja0RlcHRoICsgMTApLmNfc3RyKCksCi0gICAgICAgIGNvbXBpbGVPcHRpb25zICYgflNI
X0xJTUlUX0NBTExfU1RBQ0tfREVQVEgsIE5VTEwpKTsKLSAgICBTaERlc3RydWN0KHZlcnRleENv
bXBpbGVyKTsKLX0KLQotVEVTVF9GKEV4cHJlc3Npb25MaW1pdFRlc3QsIFVudXNlZENhbGxTdGFj
a0RlcHRoKQotewotICAgIFNoU2hhZGVyU3BlYyBzcGVjID0gU0hfV0VCR0xfU1BFQzsKLSAgICBT
aFNoYWRlck91dHB1dCBvdXRwdXQgPSBTSF9FU1NMX09VVFBVVDsKLSAgICBTaEhhbmRsZSB2ZXJ0
ZXhDb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoCi0gICAgICAgIEdMX0ZSQUdNRU5UX1NI
QURFUiwgc3BlYywgb3V0cHV0LCAmcmVzb3VyY2VzKTsKLSAgICBTaENvbXBpbGVPcHRpb25zIGNv
bXBpbGVPcHRpb25zID0gU0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSDsKLQotICAgIC8vIFRlc3Qg
Y2FsbCBzdGFjayB1bmRlciB0aGUgbGltaXQgcGFzc2VzLgotICAgIEVYUEVDVF9UUlVFKENoZWNr
U2hhZGVyQ29tcGlsYXRpb24oCi0gICAgICAgIHZlcnRleENvbXBpbGVyLAotICAgICAgICBHZW5l
cmF0ZVNoYWRlcldpdGhVbnVzZWREZWVwRnVuY3Rpb25TdGFjaygKLSAgICAgICAgICAgIGtNYXhD
YWxsU3RhY2tEZXB0aCAtIDEwKS5jX3N0cigpLAotICAgICAgICBjb21waWxlT3B0aW9ucywgTlVM
TCkpOwotICAgIC8vIFRlc3QgY2FsbCBzdGFjayBvdmVyIHRoZSBsaW1pdCBmYWlscy4KLSAgICBF
WFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAotICAgICAgICB2ZXJ0ZXhDb21waWxl
ciwKLSAgICAgICAgR2VuZXJhdGVTaGFkZXJXaXRoVW51c2VkRGVlcEZ1bmN0aW9uU3RhY2soCi0g
ICAgICAgICAgICBrTWF4Q2FsbFN0YWNrRGVwdGggKyAxMCkuY19zdHIoKSwKLSAgICAgICAgY29t
cGlsZU9wdGlvbnMsIGtDYWxsU3RhY2tUb29EZWVwKSk7Ci0gICAgLy8gVGVzdCBjYWxsIHN0YWNr
IG92ZXIgdGhlIGxpbWl0IHdpdGhvdXQgbGltaXQgZG9lcyBub3QgZmFpbC4KLSAgICBFWFBFQ1Rf
VFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAotICAgICAgICB2ZXJ0ZXhDb21waWxlciwKLSAg
ICAgICAgR2VuZXJhdGVTaGFkZXJXaXRoVW51c2VkRGVlcEZ1bmN0aW9uU3RhY2soCi0gICAgICAg
ICAgICBrTWF4Q2FsbFN0YWNrRGVwdGggKyAxMCkuY19zdHIoKSwKLSAgICAgICAgY29tcGlsZU9w
dGlvbnMgJiB+U0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSCwgTlVMTCkpOwotICAgIFNoRGVzdHJ1
Y3QodmVydGV4Q29tcGlsZXIpOwotfQotCi1URVNUX0YoRXhwcmVzc2lvbkxpbWl0VGVzdCwgUmVj
dXJzaW9uKQotewotICAgIFNoU2hhZGVyU3BlYyBzcGVjID0gU0hfV0VCR0xfU1BFQzsKLSAgICBT
aFNoYWRlck91dHB1dCBvdXRwdXQgPSBTSF9FU1NMX09VVFBVVDsKLSAgICBTaEhhbmRsZSB2ZXJ0
ZXhDb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoCi0gICAgICAgIEdMX0ZSQUdNRU5UX1NI
QURFUiwgc3BlYywgb3V0cHV0LCAmcmVzb3VyY2VzKTsKLSAgICBTaENvbXBpbGVPcHRpb25zIGNv
bXBpbGVPcHRpb25zID0gMDsKLQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJXaXRoUmVj
dXJzaW9uMCA9IFNIQURFUigKLSAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Ci0gICAg
ICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yOwotICAgICAgICB2ZWM0IHNvbWVGdW5jKCkgIHsKLSAg
ICAgICAgICAgIHJldHVybiBzb21lRnVuYygpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBt
YWluKCkgewotICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdV9jb2xvciAqIHNvbWVGdW5jKCk7
Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlcldpdGhS
ZWN1cnNpb24xID0gU0hBREVSKAotICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLSAg
ICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7Ci0KLSAgICAgICAgdmVjNCBzb21lRnVuYygpOwot
Ci0gICAgICAgIHZlYzQgc29tZUZ1bmMxKCkgIHsKLSAgICAgICAgICAgIHJldHVybiBzb21lRnVu
YygpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmVjNCBzb21lRnVuYygpICB7Ci0gICAgICAgICAg
ICByZXR1cm4gc29tZUZ1bmMxKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG1haW4oKSB7
Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB1X2NvbG9yICogc29tZUZ1bmMoKTsKLSAgICAg
ICAgfQotICAgICk7Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyV2l0aFJlY3Vyc2lv
bjIgPSBTSEFERVIoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICB1
bmlmb3JtIHZlYzQgdV9jb2xvcjsKLSAgICAgICAgdmVjNCBzb21lRnVuYygpICB7Ci0gICAgICAg
ICAgICBpZiAodV9jb2xvci54ID4gMC41KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNvbWVG
dW5jKCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiB2ZWM0
KDEpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtYWluKCkgewot
ICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gc29tZUZ1bmMoKTsKLSAgICAgICAgfQotICAgICk7
Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyV2l0aFJlY3Vyc2lvbjMgPSBTSEFERVIo
Ci0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICB1bmlmb3JtIHZlYzQg
dV9jb2xvcjsKLSAgICAgICAgdmVjNCBzb21lRnVuYygpICB7Ci0gICAgICAgICAgICBpZiAodV9j
b2xvci54ID4gMC41KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZlYzQoMSk7Ci0gICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiBzb21lRnVuYygpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtYWluKCkgewotICAgICAgICAgICAg
Z2xfRnJhZ0NvbG9yID0gc29tZUZ1bmMoKTsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICBzdGF0
aWMgY29uc3QgY2hhciogc2hhZGVyV2l0aFJlY3Vyc2lvbjQgPSBTSEFERVIoCi0gICAgICAgIHBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICB1bmlmb3JtIHZlYzQgdV9jb2xvcjsKLSAg
ICAgICAgdmVjNCBzb21lRnVuYygpICB7Ci0gICAgICAgICAgICByZXR1cm4gKHVfY29sb3IueCA+
IDAuNSkgPyB2ZWM0KDEpIDogc29tZUZ1bmMoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQg
bWFpbigpIHsKLSAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHNvbWVGdW5jKCk7Ci0gICAgICAg
IH0KLSAgICApOwotCi0gICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYWRlcldpdGhSZWN1cnNpb241
ID0gU0hBREVSKAotICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLSAgICAgICAgdW5p
Zm9ybSB2ZWM0IHVfY29sb3I7Ci0gICAgICAgIHZlYzQgc29tZUZ1bmMoKSAgewotICAgICAgICAg
ICAgcmV0dXJuICh1X2NvbG9yLnggPiAwLjUpID8gc29tZUZ1bmMoKSA6IHZlYzQoMSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB2b2lkIG1haW4oKSB7Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3Ig
PSBzb21lRnVuYygpOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBzaGFkZXJXaXRoUmVjdXJzaW9uNiA9IFNIQURFUigKLSAgICAgICAgcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7Ci0gICAgICAgIHVuaWZvcm0gdmVjNCB1X2NvbG9yOwotICAgICAgICB2ZWM0IHNv
bWVGdW5jKCkgIHsKLSAgICAgICAgICAgIHJldHVybiBzb21lRnVuYygpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdm9pZCBtYWluKCkgewotICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdV9jb2xv
cjsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciogc2hhZGVyV2l0
aE5vUmVjdXJzaW9uID0gU0hBREVSKAotICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsK
LSAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7Ci0KLSAgICAgICAgdmVjMyByZ2IoaW50IHIs
IGludCBnLCBpbnQgYikgewotICAgICAgICAgICAgcmV0dXJuIHZlYzMoZmxvYXQocikgLyAyNTUu
MCwgZmxvYXQoZykgLyAyNTUuMCwgZmxvYXQoYikgLyAyNTUuMCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICB2b2lkIG1haW4oKSB7Ci0gICAgICAgICAgICB2ZWMzIGhhaXJDb2xvcjAgPSByZ2IoMTUx
LCAyMDAsIDIzNCk7Ci0gICAgICAgICAgICB2ZWMzIGZhY2VDb2xvcjIgPSByZ2IoMTgzLCAxNDgs
IDEzMyk7Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB1X2NvbG9yICsgdmVjNChoYWlyQ29s
b3IwICsgZmFjZUNvbG9yMiwgMCk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgc3RhdGljIGNv
bnN0IGNoYXIqIHNoYWRlcldpdGhSZWN1cnNpb243ID0gU0hBREVSKAotICAgICAgICBwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKLSAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3I7Ci0KLSAgICAg
ICAgdmVjNCBmdW5jdGlvbjIoKSB7Ci0gICAgICAgICAgICByZXR1cm4gdV9jb2xvcjsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZlYzQgZnVuY3Rpb24xKCkgewotICAgICAgICAgICAgdmVjNCBhID0g
ZnVuY3Rpb24yKCk7Ci0gICAgICAgICAgICB2ZWM0IGIgPSBmdW5jdGlvbjEoKTsKLSAgICAgICAg
ICAgIHJldHVybiBhICsgYjsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbWFpbigpIHsKLSAg
ICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IGZ1bmN0aW9uMSgpOwotICAgICAgICB9Ci0gICAgKTsK
LQotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFkZXJXaXRoUmVjdXJzaW9uOCA9IFNIQURFUigK
LSAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Ci0gICAgICAgIHVuaWZvcm0gdmVjNCB1
X2NvbG9yOwotCi0gICAgICAgIHZlYzQgZnVuY3Rpb24xKCk7Ci0KLSAgICAgICAgdmVjNCBmdW5j
dGlvbjMoKSB7Ci0gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24xKCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2ZWM0IGZ1bmN0aW9uMigpIHsKLSAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbjMo
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZlYzQgZnVuY3Rpb24xKCkgewotICAgICAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uMigpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBtYWluKCkgewot
ICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gZnVuY3Rpb24xKCk7Ci0gICAgICAgIH0KLSAgICAp
OwotCi0gICAgLy8gQ2hlY2sgc2ltcGxlIHJlY3Vyc2lvbnMgZmFpbHMuCi0gICAgRVhQRUNUX1RS
VUUoQ2hlY2tTaGFkZXJDb21waWxhdGlvbigKLSAgICAgICAgdmVydGV4Q29tcGlsZXIsIHNoYWRl
cldpdGhSZWN1cnNpb24wLAotICAgICAgICBjb21waWxlT3B0aW9ucywga0hhc1JlY3Vyc2lvbikp
OwotICAgIC8vIENoZWNrIHNpbXBsZSByZWN1cnNpb25zIGZhaWxzLgotICAgIEVYUEVDVF9UUlVF
KENoZWNrU2hhZGVyQ29tcGlsYXRpb24oCi0gICAgICAgIHZlcnRleENvbXBpbGVyLCBzaGFkZXJX
aXRoUmVjdXJzaW9uMSwKLSAgICAgICAgY29tcGlsZU9wdGlvbnMsIGtIYXNSZWN1cnNpb24pKTsK
LSAgICAvLyBDaGVjayBpZiByZWN1cnNpb25zIGZhaWxzLgotICAgIEVYUEVDVF9UUlVFKENoZWNr
U2hhZGVyQ29tcGlsYXRpb24oCi0gICAgICAgIHZlcnRleENvbXBpbGVyLCBzaGFkZXJXaXRoUmVj
dXJzaW9uMiwKLSAgICAgICAgY29tcGlsZU9wdGlvbnMsIGtIYXNSZWN1cnNpb24pKTsKLSAgICAv
LyBDaGVjayBpZiByZWN1cnNpb25zIGZhaWxzLgotICAgIEVYUEVDVF9UUlVFKENoZWNrU2hhZGVy
Q29tcGlsYXRpb24oCi0gICAgICAgIHZlcnRleENvbXBpbGVyLCBzaGFkZXJXaXRoUmVjdXJzaW9u
MywKLSAgICAgICAgY29tcGlsZU9wdGlvbnMsIGtIYXNSZWN1cnNpb24pKTsKLSAgICAvLyBDaGVj
ayB0ZXJuYXJ5IHJlY3Vyc2lvbnMgZmFpbHMuCi0gICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFkZXJD
b21waWxhdGlvbigKLSAgICAgICAgdmVydGV4Q29tcGlsZXIsIHNoYWRlcldpdGhSZWN1cnNpb240
LAotICAgICAgICBjb21waWxlT3B0aW9ucywga0hhc1JlY3Vyc2lvbikpOwotICAgIC8vIENoZWNr
IHRlcm5hcnkgcmVjdXJzaW9ucyBmYWlscy4KLSAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNv
bXBpbGF0aW9uKAotICAgICAgICB2ZXJ0ZXhDb21waWxlciwgc2hhZGVyV2l0aFJlY3Vyc2lvbjUs
Ci0gICAgICAgIGNvbXBpbGVPcHRpb25zLCBrSGFzUmVjdXJzaW9uKSk7Ci0KLSAgICAvLyBDaGVj
ayBzb21lIG1vcmUgZm9ybXMgb2YgcmVjdXJzaW9uCi0gICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFk
ZXJDb21waWxhdGlvbigKLSAgICAgICAgdmVydGV4Q29tcGlsZXIsIHNoYWRlcldpdGhSZWN1cnNp
b242LAotICAgICAgICBjb21waWxlT3B0aW9ucywga0hhc1JlY3Vyc2lvbikpOwotICAgIEVYUEVD
VF9UUlVFKENoZWNrU2hhZGVyQ29tcGlsYXRpb24oCi0gICAgICAgIHZlcnRleENvbXBpbGVyLCBz
aGFkZXJXaXRoUmVjdXJzaW9uNywKLSAgICAgICAgY29tcGlsZU9wdGlvbnMsIGtIYXNSZWN1cnNp
b24pKTsKLSAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAotICAgICAgICB2
ZXJ0ZXhDb21waWxlciwgc2hhZGVyV2l0aFJlY3Vyc2lvbjgsCi0gICAgICAgIGNvbXBpbGVPcHRp
b25zLCBrSGFzUmVjdXJzaW9uKSk7Ci0gICAgLy8gQ2hlY2sgdW51c2VkIHJlY3Vyc2lvbnMgZmFp
bHMgaWYgbGltaXRpbmcgY2FsbCBzdGFjawotICAgIC8vIHNpbmNlIHdlIGNoZWNrIGFsbCBwYXRo
cy4KLSAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAotICAgICAgICB2ZXJ0
ZXhDb21waWxlciwgc2hhZGVyV2l0aFJlY3Vyc2lvbjYsCi0gICAgICAgIGNvbXBpbGVPcHRpb25z
IHwgU0hfTElNSVRfQ0FMTF9TVEFDS19ERVBUSCwga0hhc1JlY3Vyc2lvbikpOwotCi0gICAgLy8g
Q2hlY2sgdW51c2VkIHJlY3Vyc2lvbnMgcGFzc2VzLgotICAgIEVYUEVDVF9UUlVFKENoZWNrU2hh
ZGVyQ29tcGlsYXRpb24oCi0gICAgICAgIHZlcnRleENvbXBpbGVyLCBzaGFkZXJXaXRoTm9SZWN1
cnNpb24sCi0gICAgICAgIGNvbXBpbGVPcHRpb25zLCBOVUxMKSk7Ci0gICAgLy8gQ2hlY2sgdW51
c2VkIHJlY3Vyc2lvbnMgcGFzc2VzIGlmIGxpbWl0aW5nIGNhbGwgc3RhY2suCi0gICAgRVhQRUNU
X1RSVUUoQ2hlY2tTaGFkZXJDb21waWxhdGlvbigKLSAgICAgICAgdmVydGV4Q29tcGlsZXIsIHNo
YWRlcldpdGhOb1JlY3Vyc2lvbiwKLSAgICAgICAgY29tcGlsZU9wdGlvbnMgfCBTSF9MSU1JVF9D
QUxMX1NUQUNLX0RFUFRILCBOVUxMKSk7Ci0gICAgU2hEZXN0cnVjdCh2ZXJ0ZXhDb21waWxlcik7
Ci19Ci0KLVRFU1RfRihFeHByZXNzaW9uTGltaXRUZXN0LCBGdW5jdGlvblBhcmFtZXRlckNvdW50
KQotewotICAgIFNoU2hhZGVyU3BlYyBzcGVjICAgICA9IFNIX1dFQkdMX1NQRUM7Ci0gICAgU2hT
aGFkZXJPdXRwdXQgb3V0cHV0ID0gU0hfRVNTTF9PVVRQVVQ7Ci0gICAgU2hIYW5kbGUgY29tcGls
ZXIgICAgID0gU2hDb25zdHJ1Y3RDb21waWxlcihHTF9GUkFHTUVOVF9TSEFERVIsIHNwZWMsIG91
dHB1dCwgJnJlc291cmNlcyk7Ci0gICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucyA9
IFNIX0xJTUlUX0VYUFJFU1NJT05fQ09NUExFWElUWTsKLQotICAgIC8vIFRlc3QgcGFyYW1ldGVy
cyB1bmRlciB0aGUgbGltaXQgc3VjY2VlZHMuCi0gICAgRVhQRUNUX1RSVUUoQ2hlY2tTaGFkZXJD
b21waWxhdGlvbigKLSAgICAgICAgY29tcGlsZXIsIEdlbmVyYXRlU2hhZGVyV2l0aEZ1bmN0aW9u
UGFyYW1ldGVycyhrTWF4RnVuY3Rpb25QYXJhbWV0ZXJzKS5jX3N0cigpLAotICAgICAgICBjb21w
aWxlT3B0aW9ucywgbnVsbHB0cikpOwotICAgIC8vIFRlc3QgcGFyYW1ldGVycyBvdmVyIHRoZSBs
aW1pdCBmYWlscy4KLSAgICBFWFBFQ1RfVFJVRShDaGVja1NoYWRlckNvbXBpbGF0aW9uKAotICAg
ICAgICBjb21waWxlciwgR2VuZXJhdGVTaGFkZXJXaXRoRnVuY3Rpb25QYXJhbWV0ZXJzKGtNYXhG
dW5jdGlvblBhcmFtZXRlcnMgKyAxKS5jX3N0cigpLAotICAgICAgICBjb21waWxlT3B0aW9ucywg
a1Rvb01hbnlQYXJhbWV0ZXJzKSk7Ci0gICAgLy8gVGVzdCBwYXJhbWV0ZXJzIG92ZXIgdGhlIGxp
bWl0IHdpdGhvdXQgbGltaXQgZG9lcyBub3QgZmFpbC4KLSAgICBFWFBFQ1RfVFJVRShDaGVja1No
YWRlckNvbXBpbGF0aW9uKAotICAgICAgICBjb21waWxlciwgR2VuZXJhdGVTaGFkZXJXaXRoRnVu
Y3Rpb25QYXJhbWV0ZXJzKGtNYXhGdW5jdGlvblBhcmFtZXRlcnMgKyAxKS5jX3N0cigpLAotICAg
ICAgICBjb21waWxlT3B0aW9ucyAmIH5TSF9MSU1JVF9FWFBSRVNTSU9OX0NPTVBMRVhJVFksIG51
bGxwdHIpKTsKLSAgICBTaERlc3RydWN0KGNvbXBpbGVyKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9GcmFnRGVwdGhfdGVz
dC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMv
RnJhZ0RlcHRoX3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2M4Nzk4
N2FjYS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2NvbXBpbGVyX3Rlc3RzL0ZyYWdEZXB0aF90ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEx
OSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIEZyYWdEZXB0aF90ZXN0LmNwcDoKLS8vICAgVGVz
dCBmb3IgR0xFUyBTTCAzLjAgZ2xfRnJhZ0RlcHRoIHZhcmlhYmxlIGltcGxlbWVudGF0aW9uLgot
Ly8KLQotI2luY2x1ZGUgImFuZ2xlX2dsLmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNp
bmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKLQotbmFtZXNwYWNlCi17Ci1jb25zdCBjaGFy
IEVTU0xWZXJzaW9uMTAwW10gPSAiI3ZlcnNpb24gMTAwXG4iOwotY29uc3QgY2hhciBFU1NMVmVy
c2lvbjMwMFtdID0gIiN2ZXJzaW9uIDMwMCBlc1xuIjsKLWNvbnN0IGNoYXIgRVhURkRQcmFnbWFb
XSAgICA9ICIjZXh0ZW5zaW9uIEdMX0VYVF9mcmFnX2RlcHRoIDogcmVxdWlyZVxuIjsKLX0gIC8v
IG5hbWVzcGFjZQotCi1jbGFzcyBGcmFnRGVwdGhUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3RX
aXRoUGFyYW08Ym9vbD4KLXsKLSAgcHJvdGVjdGVkOgotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmbVJlc291cmNlcyk7Ci0g
ICAgICAgIG1Db21waWxlciAgICAgICAgICAgICAgICAgPSBudWxscHRyOwotICAgICAgICBtUmVz
b3VyY2VzLkVYVF9mcmFnX2RlcHRoID0gR2V0UGFyYW0oKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRl
YXJEb3duKCkgb3ZlcnJpZGUgeyBEZXN0cm95Q29tcGlsZXIoKTsgfQotICAgIHZvaWQgRGVzdHJv
eUNvbXBpbGVyKCkKLSAgICB7Ci0gICAgICAgIGlmIChtQ29tcGlsZXIpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIFNoRGVzdHJ1Y3QobUNvbXBpbGVyKTsKLSAgICAgICAgICAgIG1Db21waWxlciA9
IG51bGxwdHI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIEluaXRpYWxpemVDb21waWxl
cigpCi0gICAgewotICAgICAgICBEZXN0cm95Q29tcGlsZXIoKTsKLSAgICAgICAgbUNvbXBpbGVy
ID0gU2hDb25zdHJ1Y3RDb21waWxlcihHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQRUMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hfR0xTTF9DT01QQVRJ
QklMSVRZX09VVFBVVCwgJm1SZXNvdXJjZXMpOwotICAgICAgICBBU1NFUlRfVFJVRShtQ29tcGls
ZXIgIT0gbnVsbHB0cikgPDwgIkNvbXBpbGVyIGNvdWxkIG5vdCBiZSBjb25zdHJ1Y3RlZC4iOwot
ICAgIH0KLQotICAgIHRlc3Rpbmc6OkFzc2VydGlvblJlc3VsdCBUZXN0U2hhZGVyQ29tcGlsZShj
b25zdCBjaGFyICp2ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjaGFyICpwcmFnbWEsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNoYWRlcikKLSAgICB7Ci0gICAgICAg
IGNvbnN0IGNoYXIgKnNoYWRlclN0cmluZ3NbXSA9IHt2ZXJzaW9uLCBwcmFnbWEsIHNoYWRlcn07
Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IFNoQ29tcGlsZShtQ29tcGlsZXIsIHNoYWRlclN0cmlu
Z3MsIDMsIDApOwotICAgICAgICBpZiAoc3VjY2VzcykKLSAgICAgICAgewotICAgICAgICAgICAg
cmV0dXJuIDo6dGVzdGluZzo6QXNzZXJ0aW9uU3VjY2VzcygpIDw8ICJDb21waWxhdGlvbiBzdWNj
ZXNzIjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gOjp0ZXN0aW5nOjpBc3NlcnRpb25GYWls
dXJlKCkgPDwgU2hHZXRJbmZvTG9nKG1Db21waWxlcik7Ci0gICAgfQotCi0gIHByb3RlY3RlZDoK
LSAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgbVJlc291cmNlczsKLSAgICBTaEhhbmRsZSBtQ29tcGls
ZXI7Ci19OwotCi0vLyBUaGUgR0xFUyBTTCAzLjAgYnVpbHQtaW4gdmFyaWFibGUgZ2xfRnJhZ0Rl
cHRoIGZhaWxzIHRvIGNvbXBpbGUgd2l0aCBHTEVTIFNMIDEuMC4KLVRFU1RfUChGcmFnRGVwdGhU
ZXN0LCBDb21waWxlRmFpbHNFU1NMMTAwKQotewotICAgIHN0YXRpYyBjb25zdCBjaGFyIHNoYWRl
clN0cmluZ1tdID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAg
ICAidm9pZCBtYWluKCkgeyBcbiIKLSAgICAgICAgIiAgICBnbF9GcmFnRGVwdGggPSAxLjA7XG4i
Ci0gICAgICAgICJ9XG4iOwotCi0gICAgSW5pdGlhbGl6ZUNvbXBpbGVyKCk7Ci0gICAgRVhQRUNU
X0ZBTFNFKFRlc3RTaGFkZXJDb21waWxlKEVTU0xWZXJzaW9uMTAwLCAiIiwgc2hhZGVyU3RyaW5n
KSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFRlc3RTaGFkZXJDb21waWxlKCIiLCAiIiwgc2hhZGVyU3Ry
aW5nKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFRlc3RTaGFkZXJDb21waWxlKCIiLCBFWFRGRFByYWdt
YSwgc2hhZGVyU3RyaW5nKSk7Ci19Ci0KLS8vIFRoZSBHTEVTIFNMIDMuMCBidWlsdC1pbiB2YXJp
YWJsZSBnbF9GcmFnRGVwdGggY29tcGlsZXMgd2l0aCBHTEVTIFNMIDMuMC4KLVRFU1RfUChGcmFn
RGVwdGhUZXN0LCBDb21waWxlU3VjY2VlZHNFU1NMMzAwKQotewotICAgIHN0YXRpYyBjb25zdCBj
aGFyIHNoYWRlclN0cmluZ1tdID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xu
IgotICAgICAgICAidm9pZCBtYWluKCkgeyBcbiIKLSAgICAgICAgIiAgICBnbF9GcmFnRGVwdGgg
PSAxLjA7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIEluaXRpYWxpemVDb21waWxlcigpOwotICAg
IEVYUEVDVF9UUlVFKFRlc3RTaGFkZXJDb21waWxlKEVTU0xWZXJzaW9uMzAwLCAiIiwgc2hhZGVy
U3RyaW5nKSk7Ci19Ci0KLS8vIFVzaW5nICNleHRlbnNpb24gR0xfRVhUX2ZyYWdfZGVwdGggaW4g
R0xTTCBFUyAzLjAgc2hhZGVyIGZhaWxzIHRvIGNvbXBpbGUuCi1URVNUX1AoRnJhZ0RlcHRoVGVz
dCwgRXh0ZW5zaW9uRkRGYWlsc0VTU0wzMDApCi17Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIgc2hh
ZGVyU3RyaW5nW10gPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAg
ICAgICJvdXQgdmVjNCBmcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IFxuIgot
ICAgICAgICAiICAgIGZyYWdDb2xvciA9IHZlYzQoMS4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0g
ICAgSW5pdGlhbGl6ZUNvbXBpbGVyKCk7Ci0gICAgaWYgKG1SZXNvdXJjZXMuRVhUX2ZyYWdfZGVw
dGggPT0gMSkKLSAgICB7Ci0gICAgICAgIC8vIFRPRE8oa2tpbm51bmVuLCBnZW9mZmxhbmcpOiB0
aGlzIHNob3VsZCBmYWlsLiBFeHRlbnNpb25zIG5lZWQgdG8gaGF2ZSBzaW1pbGFyIGxldmVsCi0g
ICAgICAgIC8vIHN5c3RlbSB0byBTeW1ib2xUYWJsZS4gIFRoZSBiaWdnZXN0IHRhc2sgaXMgdG8g
aW1wbGVtZW50IHZlcnNpb24tYXdhcmUgcHJlcHJvY2Vzc29yLCBzbwotICAgICAgICAvLyB0aGF0
IHRoZSBleHRlbnNpb24gZGVmaW5lcyBjYW4gYmUgZGVmaW5lZCBkZXBlbmRpbmcgb24gdGhlIHZl
cnNpb24gdGhhdCB0aGUgcHJlcHJvY2Vzc29yCi0gICAgICAgIC8vIHNhdyBvciBkaWQgbm90IHNl
ZS4KLSAgICAgICAgRVhQRUNUX1RSVUUoVGVzdFNoYWRlckNvbXBpbGUoRVNTTFZlcnNpb24zMDAs
IEVYVEZEUHJhZ21hLCBzaGFkZXJTdHJpbmcpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAg
ICAgICAgRVhQRUNUX0ZBTFNFKFRlc3RTaGFkZXJDb21waWxlKEVTU0xWZXJzaW9uMzAwLCBFWFRG
RFByYWdtYSwgc2hhZGVyU3RyaW5nKSk7Ci0gICAgfQotfQotCi0vLyBUaGUgdGVzdHMgc2hvdWxk
IHBhc3MgcmVnYXJkbGVzcyB3aGV0aGVyIHRoZSBFWFRfZnJhZ19kZXB0aCBpcyBvbiBvciBub3Qu
Ci1JTlNUQU5USUFURV9URVNUX0NBU0VfUChGcmFnRGVwdGhUZXN0cywgRnJhZ0RlcHRoVGVzdCwg
dGVzdGluZzo6VmFsdWVzKGZhbHNlLCB0cnVlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvR0xTTENvbXBhdGliaWxpdHlPdXRw
dXRfdGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJf
dGVzdHMvR0xTTENvbXBhdGliaWxpdHlPdXRwdXRfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDMyNmQ3MGQyOWQ3Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvR0xTTENvbXBhdGliaWxpdHlPdXRw
dXRfdGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vLwotLy8gQ29weXJp
Z2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8K
LS8vIEdMU0xDb21wYXRpYmlsaXR5T3V0cHV0VGVzdC5jcHAKLS8vICAgVGVzdCBjb21waWxlciBv
dXRwdXQgZm9yIGdsc2wgY29tcGF0aWJpbGl0eSBtb2RlCi0vLwotCi0jaW5jbHVkZSAiYW5nbGVf
Z2wuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVy
TGFuZy5oIgotI2luY2x1ZGUgInRlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5oIgotCi1j
bGFzcyBHTFNMQ29tcGF0aWJpbGl0eU91dHB1dFRlc3QgOiBwdWJsaWMgTWF0Y2hPdXRwdXRDb2Rl
VGVzdAotewotICBwdWJsaWM6Ci0gICAgR0xTTENvbXBhdGliaWxpdHlPdXRwdXRUZXN0KCkKLSAg
ICAgICAgOiBNYXRjaE91dHB1dENvZGVUZXN0KEdMX1ZFUlRFWF9TSEFERVIsIFNIX1ZBUklBQkxF
UywgU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCkKLSAgICB7Ci0gICAgfQotfTsKLQotLy8g
VmVyaWZ5IGdsX1Bvc2l0aW9uIGlzIHdyaXR0ZW4gd2hlbiBjb21waWxpbmcgaW4gY29tcGF0aWJp
bGl0eSBtb2RlCi1URVNUX0YoR0xTTENvbXBhdGliaWxpdHlPdXRwdXRUZXN0LCBHTFBvc2l0aW9u
V3JpdHRlblRlc3QpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0g
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKLSAgICAgICAgIn0iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBFWFBF
Q1RfVFJVRShmb3VuZEluQ29kZSgiZ2xfUG9zaXRpb24iKSk7Ci19ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2NvbXBpbGVyX3Rlc3RzL0ludGVybU5vZGVfdGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvSW50ZXJtTm9kZV90ZXN0LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzgwZTY0MWMxODUuLjAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9JbnRlcm1Ob2Rl
X3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjMwICswLDAgQEAKLS8vCi0vLyBDb3B5cmln
aHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwot
Ly8gSW50ZXJtTm9kZV90ZXN0LmNwcDoKLS8vICAgVW5pdCB0ZXN0cyBmb3IgdGhlIEFTVCBub2Rl
IGNsYXNzZXMuCi0vLwotCi0jaW5jbHVkZSAiYW5nbGVfZ2wuaCIKLSNpbmNsdWRlICJndGVzdC9n
dGVzdC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvSW5mb1NpbmsuaCIKLSNpbmNs
dWRlICJjb21waWxlci90cmFuc2xhdG9yL0ludGVybU5vZGUuaCIKLSNpbmNsdWRlICJjb21waWxl
ci90cmFuc2xhdG9yL1Bvb2xBbGxvYy5oIgotCi1jbGFzcyBJbnRlcm1Ob2RlVGVzdCA6IHB1Ymxp
YyB0ZXN0aW5nOjpUZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICBJbnRlcm1Ob2RlVGVzdCgpIDogbVVu
aXF1ZUluZGV4KDApIHt9Ci0KLSAgcHJvdGVjdGVkOgotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgYWxsb2NhdG9yLnB1c2goKTsKLSAgICAgICAgU2V0R2xvYmFsUG9v
bEFsbG9jYXRvcigmYWxsb2NhdG9yKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIFNldEdsb2JhbFBvb2xBbGxvY2F0b3IobnVsbHB0cik7Ci0g
ICAgICAgIGFsbG9jYXRvci5wb3AoKTsKLSAgICB9Ci0KLSAgICBUSW50ZXJtU3ltYm9sICpjcmVh
dGVUZXN0U3ltYm9sKGNvbnN0IFRUeXBlICZ0eXBlKQotICAgIHsKLSAgICAgICAgVEluZm9TaW5r
QmFzZSBzeW1ib2xOYW1lT3V0OwotICAgICAgICBzeW1ib2xOYW1lT3V0IDw8ICJ0ZXN0IiA8PCBt
VW5pcXVlSW5kZXg7Ci0gICAgICAgIFRTdHJpbmcgc3ltYm9sTmFtZSA9IHN5bWJvbE5hbWVPdXQu
Y19zdHIoKTsKLSAgICAgICAgKyttVW5pcXVlSW5kZXg7Ci0KLSAgICAgICAgVEludGVybVN5bWJv
bCAqbm9kZSA9IG5ldyBUSW50ZXJtU3ltYm9sKDAsIHN5bWJvbE5hbWUsIHR5cGUpOwotICAgICAg
ICBub2RlLT5zZXRMaW5lKGNyZWF0ZVVuaXF1ZVNvdXJjZUxvYygpKTsKLSAgICAgICAgbm9kZS0+
c2V0SW50ZXJuYWwodHJ1ZSk7Ci0gICAgICAgIG5vZGUtPmdldFR5cGVQb2ludGVyKCktPnNldFF1
YWxpZmllcihFdnFUZW1wb3JhcnkpOwotICAgICAgICByZXR1cm4gbm9kZTsKLSAgICB9Ci0KLSAg
ICBUSW50ZXJtU3ltYm9sICpjcmVhdGVUZXN0U3ltYm9sKCkKLSAgICB7Ci0gICAgICAgIFRUeXBl
IHR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gpOwotICAgICAgICByZXR1cm4gY3JlYXRlVGVzdFN5bWJv
bCh0eXBlKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNoZWNrVHlwZUVxdWFsV2l0aFF1YWxpZmllcnMo
Y29uc3QgVFR5cGUgJm9yaWdpbmFsLCBjb25zdCBUVHlwZSAmY29weSkKLSAgICB7Ci0gICAgICAg
IEFTU0VSVF9FUShvcmlnaW5hbCwgY29weSk7Ci0gICAgICAgIEFTU0VSVF9FUShvcmlnaW5hbC5n
ZXRQcmVjaXNpb24oKSwgY29weS5nZXRQcmVjaXNpb24oKSk7Ci0gICAgICAgIEFTU0VSVF9FUShv
cmlnaW5hbC5nZXRRdWFsaWZpZXIoKSwgY29weS5nZXRRdWFsaWZpZXIoKSk7Ci0gICAgfQotCi0g
ICAgdm9pZCBjaGVja1N5bWJvbENvcHkoVEludGVybU5vZGUgKmFPcmlnaW5hbCwgVEludGVybU5v
ZGUgKmFDb3B5KQotICAgIHsKLSAgICAgICAgQVNTRVJUX05FKGFPcmlnaW5hbCwgYUNvcHkpOwot
ICAgICAgICBUSW50ZXJtU3ltYm9sICpjb3B5ICAgICA9IGFDb3B5LT5nZXRBc1N5bWJvbE5vZGUo
KTsKLSAgICAgICAgVEludGVybVN5bWJvbCAqb3JpZ2luYWwgPSBhT3JpZ2luYWwtPmdldEFzU3lt
Ym9sTm9kZSgpOwotICAgICAgICBBU1NFUlRfTkUobnVsbHB0ciwgY29weSk7Ci0gICAgICAgIEFT
U0VSVF9ORShudWxscHRyLCBvcmlnaW5hbCk7Ci0gICAgICAgIEFTU0VSVF9ORShvcmlnaW5hbCwg
Y29weSk7Ci0gICAgICAgIEFTU0VSVF9FUShvcmlnaW5hbC0+Z2V0SWQoKSwgY29weS0+Z2V0SWQo
KSk7Ci0gICAgICAgIEFTU0VSVF9FUShvcmlnaW5hbC0+Z2V0TmFtZSgpLmdldFN0cmluZygpLCBj
b3B5LT5nZXROYW1lKCkuZ2V0U3RyaW5nKCkpOwotICAgICAgICBBU1NFUlRfRVEob3JpZ2luYWwt
PmdldE5hbWUoKS5pc0ludGVybmFsKCksIGNvcHktPmdldE5hbWUoKS5pc0ludGVybmFsKCkpOwot
ICAgICAgICBjaGVja1R5cGVFcXVhbFdpdGhRdWFsaWZpZXJzKG9yaWdpbmFsLT5nZXRUeXBlKCks
IGNvcHktPmdldFR5cGUoKSk7Ci0gICAgICAgIEFTU0VSVF9FUShvcmlnaW5hbC0+Z2V0TGluZSgp
LmZpcnN0X2ZpbGUsIGNvcHktPmdldExpbmUoKS5maXJzdF9maWxlKTsKLSAgICAgICAgQVNTRVJU
X0VRKG9yaWdpbmFsLT5nZXRMaW5lKCkuZmlyc3RfbGluZSwgY29weS0+Z2V0TGluZSgpLmZpcnN0
X2xpbmUpOwotICAgICAgICBBU1NFUlRfRVEob3JpZ2luYWwtPmdldExpbmUoKS5sYXN0X2ZpbGUs
IGNvcHktPmdldExpbmUoKS5sYXN0X2ZpbGUpOwotICAgICAgICBBU1NFUlRfRVEob3JpZ2luYWwt
PmdldExpbmUoKS5sYXN0X2xpbmUsIGNvcHktPmdldExpbmUoKS5sYXN0X2xpbmUpOwotICAgIH0K
LQotICAgIFRTb3VyY2VMb2MgY3JlYXRlVW5pcXVlU291cmNlTG9jKCkKLSAgICB7Ci0gICAgICAg
IFRTb3VyY2VMb2MgbG9jOwotICAgICAgICBsb2MuZmlyc3RfZmlsZSA9IG1VbmlxdWVJbmRleDsK
LSAgICAgICAgbG9jLmZpcnN0X2xpbmUgPSBtVW5pcXVlSW5kZXggKyAxOwotICAgICAgICBsb2Mu
bGFzdF9maWxlICA9IG1VbmlxdWVJbmRleCArIDI7Ci0gICAgICAgIGxvYy5sYXN0X2xpbmUgID0g
bVVuaXF1ZUluZGV4ICsgMzsKLSAgICAgICAgKyttVW5pcXVlSW5kZXg7Ci0gICAgICAgIHJldHVy
biBsb2M7Ci0gICAgfQotCi0gICAgc3RhdGljIFRTb3VyY2VMb2MgZ2V0VGVzdFNvdXJjZUxvYygp
Ci0gICAgewotICAgICAgICBUU291cmNlTG9jIGxvYzsKLSAgICAgICAgbG9jLmZpcnN0X2ZpbGUg
PSAxOwotICAgICAgICBsb2MuZmlyc3RfbGluZSA9IDI7Ci0gICAgICAgIGxvYy5sYXN0X2ZpbGUg
ID0gMzsKLSAgICAgICAgbG9jLmxhc3RfbGluZSAgPSA0OwotICAgICAgICByZXR1cm4gbG9jOwot
ICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIGNoZWNrVGVzdFNvdXJjZUxvYyhjb25zdCBUU291cmNl
TG9jICZsb2MpCi0gICAgewotICAgICAgICBBU1NFUlRfRVEoMSwgbG9jLmZpcnN0X2ZpbGUpOwot
ICAgICAgICBBU1NFUlRfRVEoMiwgbG9jLmZpcnN0X2xpbmUpOwotICAgICAgICBBU1NFUlRfRVEo
MywgbG9jLmxhc3RfZmlsZSk7Ci0gICAgICAgIEFTU0VSVF9FUSg0LCBsb2MubGFzdF9saW5lKTsK
LSAgICB9Ci0KLSAgcHJpdmF0ZToKLSAgICBUUG9vbEFsbG9jYXRvciBhbGxvY2F0b3I7Ci0gICAg
aW50IG1VbmlxdWVJbmRleDsKLX07Ci0KLS8vIENoZWNrIHRoYXQgdGhlIGRlZXAgY29weSBvZiBh
IHN5bWJvbCBub2RlIGlzIGFuIGFjdHVhbCBjb3B5IHdpdGggdGhlIHNhbWUgYXR0cmlidXRlcyBh
cyB0aGUKLS8vIG9yaWdpbmFsLgotVEVTVF9GKEludGVybU5vZGVUZXN0LCBEZWVwQ29weVN5bWJv
bE5vZGUpCi17Ci0gICAgVFR5cGUgdHlwZShFYnRJbnQsIEVicEhpZ2gpOwotICAgIFRJbnRlcm1T
eW1ib2wgKm9yaWdpbmFsID0gbmV3IFRJbnRlcm1TeW1ib2woMCwgVFN0cmluZygibmFtZSIpLCB0
eXBlKTsKLSAgICBvcmlnaW5hbC0+c2V0TGluZShnZXRUZXN0U291cmNlTG9jKCkpOwotICAgIG9y
aWdpbmFsLT5zZXRJbnRlcm5hbCh0cnVlKTsKLSAgICBUSW50ZXJtVHlwZWQgKmNvcHkgPSBvcmln
aW5hbC0+ZGVlcENvcHkoKTsKLSAgICBjaGVja1N5bWJvbENvcHkob3JpZ2luYWwsIGNvcHkpOwot
ICAgIGNoZWNrVGVzdFNvdXJjZUxvYyhjb3B5LT5nZXRMaW5lKCkpOwotfQotCi0vLyBDaGVjayB0
aGF0IHRoZSBkZWVwIGNvcHkgb2YgYSBjb25zdGFudCB1bmlvbiBub2RlIGlzIGFuIGFjdHVhbCBj
b3B5IHdpdGggdGhlIHNhbWUgYXR0cmlidXRlcyBhcwotLy8gdGhlIG9yaWdpbmFsLgotVEVTVF9G
KEludGVybU5vZGVUZXN0LCBEZWVwQ29weUNvbnN0YW50VW5pb25Ob2RlKQotewotICAgIFRUeXBl
IHR5cGUoRWJ0SW50LCBFYnBIaWdoKTsKLSAgICBUQ29uc3RhbnRVbmlvbiAqY29uc3RWYWx1ZSA9
IG5ldyBUQ29uc3RhbnRVbmlvblsxXTsKLSAgICBjb25zdFZhbHVlWzBdLnNldElDb25zdCgxMDEp
OwotICAgIFRJbnRlcm1Db25zdGFudFVuaW9uICpvcmlnaW5hbCA9IG5ldyBUSW50ZXJtQ29uc3Rh
bnRVbmlvbihjb25zdFZhbHVlLCB0eXBlKTsKLSAgICBvcmlnaW5hbC0+c2V0TGluZShnZXRUZXN0
U291cmNlTG9jKCkpOwotICAgIFRJbnRlcm1UeXBlZCAqY29weVR5cGVkICAgID0gb3JpZ2luYWwt
PmRlZXBDb3B5KCk7Ci0gICAgVEludGVybUNvbnN0YW50VW5pb24gKmNvcHkgPSBjb3B5VHlwZWQt
PmdldEFzQ29uc3RhbnRVbmlvbigpOwotICAgIEFTU0VSVF9ORShudWxscHRyLCBjb3B5KTsKLSAg
ICBBU1NFUlRfTkUob3JpZ2luYWwsIGNvcHkpOwotICAgIGNoZWNrVGVzdFNvdXJjZUxvYyhjb3B5
LT5nZXRMaW5lKCkpOwotICAgIGNoZWNrVHlwZUVxdWFsV2l0aFF1YWxpZmllcnMob3JpZ2luYWwt
PmdldFR5cGUoKSwgY29weS0+Z2V0VHlwZSgpKTsKLSAgICBBU1NFUlRfRVEoMTAxLCBjb3B5LT5n
ZXRJQ29uc3QoMCkpOwotfQotCi0vLyBDaGVjayB0aGF0IHRoZSBkZWVwIGNvcHkgb2YgYSBiaW5h
cnkgbm9kZSBpcyBhbiBhY3R1YWwgY29weSB3aXRoIHRoZSBzYW1lIGF0dHJpYnV0ZXMgYXMgdGhl
Ci0vLyBvcmlnaW5hbC4gQ2hpbGQgbm9kZXMgYWxzbyBuZWVkIHRvIGJlIGNvcGllcyB3aXRoIHRo
ZSBzYW1lIGF0dHJpYnV0ZXMgYXMgdGhlIG9yaWdpbmFsIGNoaWxkcmVuLgotVEVTVF9GKEludGVy
bU5vZGVUZXN0LCBEZWVwQ29weUJpbmFyeU5vZGUpCi17Ci0gICAgVFR5cGUgdHlwZShFYnRGbG9h
dCwgRWJwSGlnaCk7Ci0KLSAgICBUSW50ZXJtQmluYXJ5ICpvcmlnaW5hbCA9IG5ldyBUSW50ZXJt
QmluYXJ5KEVPcEFkZCwgY3JlYXRlVGVzdFN5bWJvbCgpLCBjcmVhdGVUZXN0U3ltYm9sKCkpOwot
ICAgIG9yaWdpbmFsLT5zZXRMaW5lKGdldFRlc3RTb3VyY2VMb2MoKSk7Ci0gICAgVEludGVybVR5
cGVkICpjb3B5VHlwZWQgPSBvcmlnaW5hbC0+ZGVlcENvcHkoKTsKLSAgICBUSW50ZXJtQmluYXJ5
ICpjb3B5ID0gY29weVR5cGVkLT5nZXRBc0JpbmFyeU5vZGUoKTsKLSAgICBBU1NFUlRfTkUobnVs
bHB0ciwgY29weSk7Ci0gICAgQVNTRVJUX05FKG9yaWdpbmFsLCBjb3B5KTsKLSAgICBjaGVja1Rl
c3RTb3VyY2VMb2MoY29weS0+Z2V0TGluZSgpKTsKLSAgICBjaGVja1R5cGVFcXVhbFdpdGhRdWFs
aWZpZXJzKG9yaWdpbmFsLT5nZXRUeXBlKCksIGNvcHktPmdldFR5cGUoKSk7Ci0KLSAgICBjaGVj
a1N5bWJvbENvcHkob3JpZ2luYWwtPmdldExlZnQoKSwgY29weS0+Z2V0TGVmdCgpKTsKLSAgICBj
aGVja1N5bWJvbENvcHkob3JpZ2luYWwtPmdldFJpZ2h0KCksIGNvcHktPmdldFJpZ2h0KCkpOwot
fQotCi0vLyBDaGVjayB0aGF0IHRoZSBkZWVwIGNvcHkgb2YgYSB1bmFyeSBub2RlIGlzIGFuIGFj
dHVhbCBjb3B5IHdpdGggdGhlIHNhbWUgYXR0cmlidXRlcyBhcyB0aGUKLS8vIG9yaWdpbmFsLiBU
aGUgY2hpbGQgbm9kZSBhbHNvIG5lZWRzIHRvIGJlIGEgY29weSB3aXRoIHRoZSBzYW1lIGF0dHJp
YnV0ZXMgYXMgdGhlIG9yaWdpbmFsIGNoaWxkLgotVEVTVF9GKEludGVybU5vZGVUZXN0LCBEZWVw
Q29weVVuYXJ5Tm9kZSkKLXsKLSAgICBUVHlwZSB0eXBlKEVidEZsb2F0LCBFYnBIaWdoKTsKLQot
ICAgIFRJbnRlcm1VbmFyeSAqb3JpZ2luYWwgPSBuZXcgVEludGVybVVuYXJ5KEVPcFByZUluY3Jl
bWVudCwgY3JlYXRlVGVzdFN5bWJvbCgpKTsKLSAgICBvcmlnaW5hbC0+c2V0TGluZShnZXRUZXN0
U291cmNlTG9jKCkpOwotICAgIFRJbnRlcm1UeXBlZCAqY29weVR5cGVkID0gb3JpZ2luYWwtPmRl
ZXBDb3B5KCk7Ci0gICAgVEludGVybVVuYXJ5ICpjb3B5ID0gY29weVR5cGVkLT5nZXRBc1VuYXJ5
Tm9kZSgpOwotICAgIEFTU0VSVF9ORShudWxscHRyLCBjb3B5KTsKLSAgICBBU1NFUlRfTkUob3Jp
Z2luYWwsIGNvcHkpOwotICAgIGNoZWNrVGVzdFNvdXJjZUxvYyhjb3B5LT5nZXRMaW5lKCkpOwot
ICAgIGNoZWNrVHlwZUVxdWFsV2l0aFF1YWxpZmllcnMob3JpZ2luYWwtPmdldFR5cGUoKSwgY29w
eS0+Z2V0VHlwZSgpKTsKLQotICAgIGNoZWNrU3ltYm9sQ29weShvcmlnaW5hbC0+Z2V0T3BlcmFu
ZCgpLCBjb3B5LT5nZXRPcGVyYW5kKCkpOwotfQotCi0vLyBDaGVjayB0aGF0IHRoZSBkZWVwIGNv
cHkgb2YgYW4gYWdncmVnYXRlIG5vZGUgaXMgYW4gYWN0dWFsIGNvcHkgd2l0aCB0aGUgc2FtZSBh
dHRyaWJ1dGVzIGFzIHRoZQotLy8gb3JpZ2luYWwuIENoaWxkIG5vZGVzIGFsc28gbmVlZCB0byBi
ZSBjb3BpZXMgd2l0aCB0aGUgc2FtZSBhdHRyaWJ1dGVzIGFzIHRoZSBvcmlnaW5hbCBjaGlsZHJl
bi4KLVRFU1RfRihJbnRlcm1Ob2RlVGVzdCwgRGVlcENvcHlBZ2dyZWdhdGVOb2RlKQotewotICAg
IFRUeXBlIHR5cGUoRWJ0RmxvYXQsIEVicEhpZ2gpOwotCi0gICAgVEludGVybUFnZ3JlZ2F0ZSAq
b3JpZ2luYWwgPSBuZXcgVEludGVybUFnZ3JlZ2F0ZShFT3BNaXgpOwotICAgIG9yaWdpbmFsLT5z
ZXRMaW5lKGdldFRlc3RTb3VyY2VMb2MoKSk7Ci0gICAgVEludGVybVNlcXVlbmNlICpvcmlnaW5h
bFNlcSA9IG9yaWdpbmFsLT5nZXRTZXF1ZW5jZSgpOwotICAgIG9yaWdpbmFsU2VxLT5wdXNoX2Jh
Y2soY3JlYXRlVGVzdFN5bWJvbCgpKTsKLSAgICBvcmlnaW5hbFNlcS0+cHVzaF9iYWNrKGNyZWF0
ZVRlc3RTeW1ib2woKSk7Ci0gICAgb3JpZ2luYWxTZXEtPnB1c2hfYmFjayhjcmVhdGVUZXN0U3lt
Ym9sKCkpOwotICAgIFRJbnRlcm1UeXBlZCAqY29weVR5cGVkID0gb3JpZ2luYWwtPmRlZXBDb3B5
KCk7Ci0gICAgVEludGVybUFnZ3JlZ2F0ZSAqY29weSA9IGNvcHlUeXBlZC0+Z2V0QXNBZ2dyZWdh
dGUoKTsKLSAgICBBU1NFUlRfTkUobnVsbHB0ciwgY29weSk7Ci0gICAgQVNTRVJUX05FKG9yaWdp
bmFsLCBjb3B5KTsKLSAgICBjaGVja1Rlc3RTb3VyY2VMb2MoY29weS0+Z2V0TGluZSgpKTsKLSAg
ICBjaGVja1R5cGVFcXVhbFdpdGhRdWFsaWZpZXJzKG9yaWdpbmFsLT5nZXRUeXBlKCksIGNvcHkt
PmdldFR5cGUoKSk7Ci0KLSAgICBBU1NFUlRfRVEob3JpZ2luYWwtPmdldFNlcXVlbmNlKCktPnNp
emUoKSwgY29weS0+Z2V0U2VxdWVuY2UoKS0+c2l6ZSgpKTsKLSAgICBUSW50ZXJtU2VxdWVuY2U6
OnNpemVfdHlwZSBpID0gMDsKLSAgICBmb3IgKGF1dG8gKmNvcHlDaGlsZCA6ICpjb3B5LT5nZXRT
ZXF1ZW5jZSgpKQotICAgIHsKLSAgICAgICAgVEludGVybU5vZGUgKm9yaWdpbmFsQ2hpbGQgPSBv
cmlnaW5hbFNlcS0+YXQoaSk7Ci0gICAgICAgIGNoZWNrU3ltYm9sQ29weShvcmlnaW5hbENoaWxk
LCBjb3B5Q2hpbGQpOwotICAgICAgICArK2k7Ci0gICAgfQotfQotCi0vLyBDaGVjayB0aGF0IHRo
ZSBkZWVwIGNvcHkgb2YgYSB0ZXJuYXJ5IG5vZGUgaXMgYW4gYWN0dWFsIGNvcHkgd2l0aCB0aGUg
c2FtZSBhdHRyaWJ1dGVzIGFzIHRoZQotLy8gb3JpZ2luYWwuIENoaWxkIG5vZGVzIGFsc28gbmVl
ZCB0byBiZSBjb3BpZXMgd2l0aCB0aGUgc2FtZSBhdHRyaWJ1dGVzIGFzIHRoZSBvcmlnaW5hbCBj
aGlsZHJlbi4KLVRFU1RfRihJbnRlcm1Ob2RlVGVzdCwgRGVlcENvcHlUZXJuYXJ5Tm9kZSkKLXsK
LSAgICBUVHlwZSB0eXBlKEVidEZsb2F0LCBFYnBIaWdoKTsKLQotICAgIFRJbnRlcm1UZXJuYXJ5
ICpvcmlnaW5hbCA9IG5ldyBUSW50ZXJtVGVybmFyeShjcmVhdGVUZXN0U3ltYm9sKFRUeXBlKEVi
dEJvb2wsIEVicFVuZGVmaW5lZCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVUZXN0U3ltYm9sKCksIGNyZWF0ZVRlc3RTeW1ib2woKSk7
Ci0gICAgb3JpZ2luYWwtPnNldExpbmUoZ2V0VGVzdFNvdXJjZUxvYygpKTsKLSAgICBUSW50ZXJt
VHlwZWQgKmNvcHlUeXBlZCA9IG9yaWdpbmFsLT5kZWVwQ29weSgpOwotICAgIFRJbnRlcm1UZXJu
YXJ5ICpjb3B5ICAgID0gY29weVR5cGVkLT5nZXRBc1Rlcm5hcnlOb2RlKCk7Ci0gICAgQVNTRVJU
X05FKG51bGxwdHIsIGNvcHkpOwotICAgIEFTU0VSVF9ORShvcmlnaW5hbCwgY29weSk7Ci0gICAg
Y2hlY2tUZXN0U291cmNlTG9jKGNvcHktPmdldExpbmUoKSk7Ci0gICAgY2hlY2tUeXBlRXF1YWxX
aXRoUXVhbGlmaWVycyhvcmlnaW5hbC0+Z2V0VHlwZSgpLCBjb3B5LT5nZXRUeXBlKCkpOwotCi0g
ICAgY2hlY2tTeW1ib2xDb3B5KG9yaWdpbmFsLT5nZXRDb25kaXRpb24oKSwgY29weS0+Z2V0Q29u
ZGl0aW9uKCkpOwotICAgIGNoZWNrU3ltYm9sQ29weShvcmlnaW5hbC0+Z2V0VHJ1ZUV4cHJlc3Np
b24oKSwgY29weS0+Z2V0VHJ1ZUV4cHJlc3Npb24oKSk7Ci0gICAgY2hlY2tTeW1ib2xDb3B5KG9y
aWdpbmFsLT5nZXRGYWxzZUV4cHJlc3Npb24oKSwgY29weS0+Z2V0RmFsc2VFeHByZXNzaW9uKCkp
OwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29t
cGlsZXJfdGVzdHMvTWFsZm9ybWVkU2hhZGVyX3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL01hbGZvcm1lZFNoYWRlcl90ZXN0LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA5ODk5ZTY1NWMuLjAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9NYWxm
b3JtZWRTaGFkZXJfdGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNTg2ICswLDAgQEAKLS8v
Ci0vLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCi0vLwotLy8gTWFsZm9ybWVkU2hhZGVyX3Rlc3QuY3BwOgotLy8gICBUZXN0cyB0aGF0
IG1hbGZvcm1lZCBzaGFkZXJzIGZhaWwgY29tcGlsYXRpb24uCi0vLwotCi0jaW5jbHVkZSAiYW5n
bGVfZ2wuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgIkdMU0xBTkcvU2hh
ZGVyTGFuZy5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wu
aCIKLQotY2xhc3MgTWFsZm9ybWVkU2hhZGVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Ci17
Ci0gIHB1YmxpYzoKLSAgICBNYWxmb3JtZWRTaGFkZXJUZXN0KCkgOiBtRXh0cmFDb21waWxlT3B0
aW9ucygwKSB7fQotCi0gIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQotICAg
IHsKLSAgICAgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKLSAgICAgICAgU2hJbml0
QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2VzKTsKLQotICAgICAgICBtVHJhbnNsYXRvciA9IG5l
dyBUcmFuc2xhdG9yRVNTTChHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpOwotICAg
ICAgICBBU1NFUlRfVFJVRShtVHJhbnNsYXRvci0+SW5pdChyZXNvdXJjZXMpKTsKLSAgICB9Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQotICAgIHsKLSAgICAgICAgZGVsZXRlIG1UcmFu
c2xhdG9yOwotICAgIH0KLQotICAgIC8vIFJldHVybiB0cnVlIHdoZW4gY29tcGlsYXRpb24gc3Vj
Y2VlZHMKLSAgICBib29sIGNvbXBpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIHNoYWRlclN0cmluZykK
LSAgICB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnNoYWRlclN0cmluZ3NbXSA9IHsgc2hhZGVyU3Ry
aW5nLmNfc3RyKCkgfTsKLSAgICAgICAgYm9vbCBjb21waWxhdGlvblN1Y2Nlc3MgPQotICAgICAg
ICAgICAgbVRyYW5zbGF0b3ItPmNvbXBpbGUoc2hhZGVyU3RyaW5ncywgMSwgU0hfSU5URVJNRURJ
QVRFX1RSRUUgfCBtRXh0cmFDb21waWxlT3B0aW9ucyk7Ci0gICAgICAgIFRJbmZvU2luayAmaW5m
b1NpbmsgPSBtVHJhbnNsYXRvci0+Z2V0SW5mb1NpbmsoKTsKLSAgICAgICAgbUluZm9Mb2cgPSBp
bmZvU2luay5pbmZvLmNfc3RyKCk7Ci0gICAgICAgIHJldHVybiBjb21waWxhdGlvblN1Y2Nlc3M7
Ci0gICAgfQotCi0gICAgYm9vbCBoYXNXYXJuaW5nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBtSW5mb0xvZy5maW5kKCJXQVJOSU5HOiAiKSAhPSBzdGQ6OnN0cmluZzo6bnBvczsKLSAg
ICB9Ci0KLSAgcHJvdGVjdGVkOgotICAgIHN0ZDo6c3RyaW5nIG1JbmZvTG9nOwotICAgIFRyYW5z
bGF0b3JFU1NMICptVHJhbnNsYXRvcjsKLSAgICBTaENvbXBpbGVPcHRpb25zIG1FeHRyYUNvbXBp
bGVPcHRpb25zOwotfTsKLQotY2xhc3MgTWFsZm9ybWVkVmVydGV4U2hhZGVyVGVzdCA6IHB1Ymxp
YyBNYWxmb3JtZWRTaGFkZXJUZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICBNYWxmb3JtZWRWZXJ0ZXhT
aGFkZXJUZXN0KCkge30KLQotICBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRl
Ci0gICAgewotICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOwotICAgICAgICBT
aEluaXRCdWlsdEluUmVzb3VyY2VzKCZyZXNvdXJjZXMpOwotCi0gICAgICAgIG1UcmFuc2xhdG9y
ID0gbmV3IFRyYW5zbGF0b3JFU1NMKEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpOwot
ICAgICAgICBBU1NFUlRfVFJVRShtVHJhbnNsYXRvci0+SW5pdChyZXNvdXJjZXMpKTsKLSAgICB9
Ci19OwotCi1jbGFzcyBNYWxmb3JtZWRXZWJHTDJTaGFkZXJUZXN0IDogcHVibGljIE1hbGZvcm1l
ZFNoYWRlclRlc3QKLXsKLSAgcHVibGljOgotICAgIE1hbGZvcm1lZFdlYkdMMlNoYWRlclRlc3Qo
KSB7fQotCi0gIHByb3RlY3RlZDoKLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXM7Ci0gICAgICAgIFNoSW5pdEJ1aWx0
SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7Ci0KLSAgICAgICAgbVRyYW5zbGF0b3IgPSBuZXcgVHJh
bnNsYXRvckVTU0woR0xfRlJBR01FTlRfU0hBREVSLCBTSF9XRUJHTDJfU1BFQyk7Ci0gICAgICAg
IEFTU0VSVF9UUlVFKG1UcmFuc2xhdG9yLT5Jbml0KHJlc291cmNlcykpOwotICAgIH0KLX07Ci0K
LWNsYXNzIE1hbGZvcm1lZFdlYkdMMVNoYWRlclRlc3QgOiBwdWJsaWMgTWFsZm9ybWVkU2hhZGVy
VGVzdAotewotICBwdWJsaWM6Ci0gICAgTWFsZm9ybWVkV2ViR0wxU2hhZGVyVGVzdCgpIHt9Ci0K
LSAgcHJvdGVjdGVkOgotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAg
U2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKLSAgICAgICAgU2hJbml0QnVpbHRJblJlc291
cmNlcygmcmVzb3VyY2VzKTsKLQotICAgICAgICBtVHJhbnNsYXRvciA9IG5ldyBUcmFuc2xhdG9y
RVNTTChHTF9GUkFHTUVOVF9TSEFERVIsIFNIX1dFQkdMX1NQRUMpOwotICAgICAgICBBU1NFUlRf
VFJVRShtVHJhbnNsYXRvci0+SW5pdChyZXNvdXJjZXMpKTsKLSAgICB9Ci19OwotCi1jbGFzcyBN
YWxmb3JtZWRWZXJ0ZXhTaGFkZXJHTEVTMzFUZXN0IDogcHVibGljIE1hbGZvcm1lZFNoYWRlclRl
c3QKLXsKLSAgcHVibGljOgotICAgIE1hbGZvcm1lZFZlcnRleFNoYWRlckdMRVMzMVRlc3QoKSB7
fQotCi0gIHByaXZhdGU6Ci0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOwotICAgICAgICBTaEluaXRCdWlsdEluUmVz
b3VyY2VzKCZyZXNvdXJjZXMpOwotICAgICAgICBtVHJhbnNsYXRvciA9IG5ldyBUcmFuc2xhdG9y
RVNTTChHTF9WRVJURVhfU0hBREVSLCBTSF9HTEVTM18xX1NQRUMpOwotICAgICAgICBBU1NFUlRf
VFJVRShtVHJhbnNsYXRvci0+SW5pdChyZXNvdXJjZXMpKTsKLSAgICB9Ci19OwotCi1jbGFzcyBN
YWxmb3JtZWRGcmFnbWVudFNoYWRlckdMRVMzMVRlc3QgOiBwdWJsaWMgTWFsZm9ybWVkU2hhZGVy
VGVzdAotewotICBwdWJsaWM6Ci0gICAgTWFsZm9ybWVkRnJhZ21lbnRTaGFkZXJHTEVTMzFUZXN0
KCkge30KLQotICBwcml2YXRlOgotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKLSAgICAgICAgU2hJbml0QnVpbHRJ
blJlc291cmNlcygmcmVzb3VyY2VzKTsKLSAgICAgICAgbVRyYW5zbGF0b3IgPSBuZXcgVHJhbnNs
YXRvckVTU0woR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM18xX1NQRUMpOwotICAgICAgICBB
U1NFUlRfVFJVRShtVHJhbnNsYXRvci0+SW5pdChyZXNvdXJjZXMpKTsKLSAgICB9Ci19OwotCi1j
bGFzcyBNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCA6IHB1YmxpYyBNYWxmb3JtZWRTaGFkZXJU
ZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICBNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCgpIHt9Ci0K
LSAgcHJpdmF0ZToKLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFNo
QnVpbHRJblJlc291cmNlcyByZXNvdXJjZXM7Ci0gICAgICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJj
ZXMoJnJlc291cmNlcyk7Ci0gICAgICAgIG1UcmFuc2xhdG9yID0gbmV3IFRyYW5zbGF0b3JFU1NM
KEdMX0NPTVBVVEVfU0hBREVSLCBTSF9HTEVTM18xX1NQRUMpOwotICAgICAgICBBU1NFUlRfVFJV
RShtVHJhbnNsYXRvci0+SW5pdChyZXNvdXJjZXMpKTsKLSAgICB9Ci19OwotCi1jbGFzcyBVbnJv
bGxGb3JMb29wc1Rlc3QgOiBwdWJsaWMgTWFsZm9ybWVkU2hhZGVyVGVzdAotewotICBwdWJsaWM6
Ci0gICAgVW5yb2xsRm9yTG9vcHNUZXN0KCkgeyBtRXh0cmFDb21waWxlT3B0aW9ucyA9IFNIX1VO
Uk9MTF9GT1JfTE9PUF9XSVRIX0lOVEVHRVJfSU5ERVg7IH0KLX07Ci0KLS8vIFRoaXMgaXMgYSB0
ZXN0IGZvciBhIGJ1ZyB0aGF0IHVzZWQgdG8gZXhpc3QgaW4gQU5HTEU6Ci0vLyBDYWxsaW5nIGEg
ZnVuY3Rpb24gd2l0aCBhbGwgcGFyYW1ldGVycyBtaXNzaW5nIHNob3VsZCBub3Qgc3VjY2VlZC4K
LVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBGdW5jdGlvblBhcmFtZXRlck1pc21hdGNoKQot
ewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJmbG9hdCBmdW4oZmxvYXQgYSkge1xuIgot
ICAgICAgICAiICAgcmV0dXJuIGEgKiAyLjA7XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBmbG9hdCBmZiA9IGZ1bigpO1xuIgotICAgICAg
ICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChmZik7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlm
IChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRl
ciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7
Ci0gICAgfQotfQotCi0vLyBGdW5jdGlvbnMgY2FuJ3QgYmUgcmVkZWNsYXJlZCBhcyB2YXJpYWJs
ZXMgaW4gdGhlIHNhbWUgc2NvcGUgKEVTU0wgMS4wMCBzZWN0aW9uIDQuMi43KQotVEVTVF9GKE1h
bGZvcm1lZFNoYWRlclRlc3QsIFJlZGVjbGFyaW5nRnVuY3Rpb25Bc1ZhcmlhYmxlKQotewotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJmbG9hdCBmdW4oZmxvYXQgYSkge1xuIgotICAgICAg
ICAiICAgcmV0dXJuIGEgKiAyLjA7XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJmbG9hdCBm
dW47XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29s
b3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRl
clN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBz
dWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0v
LyBGdW5jdGlvbnMgY2FuJ3QgYmUgcmVkZWNsYXJlZCBhcyBzdHJ1Y3RzIGluIHRoZSBzYW1lIHNj
b3BlIChFU1NMIDEuMDAgc2VjdGlvbiA0LjIuNykKLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0
LCBSZWRlY2xhcmluZ0Z1bmN0aW9uQXNTdHJ1Y3QpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAg
ICAgICAgImZsb2F0IGZ1bihmbG9hdCBhKSB7XG4iCi0gICAgICAgICIgICByZXR1cm4gYSAqIDIu
MDtcbiIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgInN0cnVjdCBmdW4geyBmbG9hdCBhOyB9O1xu
IgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNCgwLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJp
bmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2Vl
ZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gRnVu
Y3Rpb25zIGNhbid0IGJlIHJlZGVjbGFyZWQgd2l0aCBkaWZmZXJlbnQgcXVhbGlmaWVycyAoRVNT
TCAxLjAwIHNlY3Rpb24gNi4xLjApCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgUmVkZWNs
YXJpbmdGdW5jdGlvbldpdGhEaWZmZXJlbnRRdWFsaWZpZXJzKQotewotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCi0gICAgICAgICJmbG9hdCBmdW4ob3V0IGZsb2F0IGEpO1xuIgotICAgICAgICAiZmxvYXQg
ZnVuKGZsb2F0IGEpIHtcbiIKLSAgICAgICAgIiAgIHJldHVybiBhICogMi4wO1xuIgotICAgICAg
ICAifVxuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNCgwLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFk
ZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24g
c3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQot
Ly8gQXNzaWdubWVudCBhbmQgZXF1YWxpdHkgYXJlIHVuZGVmaW5lZCBmb3Igc3RydWN0dXJlcyBj
b250YWluaW5nIGFycmF5cyAoRVNTTCAxLjAwIHNlY3Rpb24gNS43KQotVEVTVF9GKE1hbGZvcm1l
ZFNoYWRlclRlc3QsIENvbXBhcmVTdHJ1Y3RzQ29udGFpbmluZ0FycmF5cykKLXsKLSAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIgotICAgICAgICAic3RydWN0IHMgeyBmbG9hdCBhWzNdOyB9O1xuIgotICAgICAg
ICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgcyBhO1xuIgotICAgICAgICAiICAgcyBi
O1xuIgotICAgICAgICAiICAgYm9vbCBjID0gKGEgPT0gYik7XG4iCi0gICAgICAgICIgICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KGMgPyAxLjAgOiAwLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBp
ZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFk
ZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9n
OwotICAgIH0KLX0KLQotLy8gQXNzaWdubWVudCBhbmQgZXF1YWxpdHkgYXJlIHVuZGVmaW5lZCBm
b3Igc3RydWN0dXJlcyBjb250YWluaW5nIGFycmF5cyAoRVNTTCAxLjAwIHNlY3Rpb24gNS43KQot
VEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEFzc2lnblN0cnVjdHNDb250YWluaW5nQXJyYXlz
KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJzdHJ1Y3QgcyB7IGZsb2F0IGFbM107
IH07XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBzIGE7XG4iCi0g
ICAgICAgICIgICBzIGI7XG4iCi0gICAgICAgICIgICBiLmFbMF0gPSAwLjA7XG4iCi0gICAgICAg
ICIgICBhID0gYjtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYS5hWzBdKTtc
biIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7
Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0
aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEFzc2lnbm1lbnQgYW5k
IGVxdWFsaXR5IGFyZSB1bmRlZmluZWQgZm9yIHN0cnVjdHVyZXMgY29udGFpbmluZyBzYW1wbGVy
cyAoRVNTTCAxLjAwIHNlY3Rpb25zIDUuNyBhbmQgNS45KQotVEVTVF9GKE1hbGZvcm1lZFNoYWRl
clRlc3QsIENvbXBhcmVTdHJ1Y3RzQ29udGFpbmluZ1NhbXBsZXJzKQotewotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJzdHJ1Y3QgcyB7IHNhbXBsZXIyRCBmb287IH07XG4iCi0gICAgICAg
ICJ1bmlmb3JtIHMgYTtcbiIKLSAgICAgICAgInVuaWZvcm0gcyBiO1xuIgotICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgotICAgICAgICAiICAgYm9vbCBjID0gKGEgPT0gYik7XG4iCi0gICAgICAg
ICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGMgPyAxLjAgOiAwLjApO1xuIgotICAgICAgICAifVxu
IjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgp
IDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8
IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gU2FtcGxlcnMgYXJlIG5vdCBhbGxvd2VkIGFzIGwt
dmFsdWVzIChFU1NMIDMuMDAgc2VjdGlvbiA0LjEuNyksIG91ciBpbnRlcnByZXRhdGlvbiBpcyB0
aGF0IHRoaXMKLS8vIGV4dGVuZHMgdG8gc3RydWN0cyBjb250YWluaW5nIHNhbXBsZXJzLiBFU1NM
IDEuMDAgc3BlYyBpcyBjbGVhcmVyIGFib3V0IHRoaXMuCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVy
VGVzdCwgQXNzaWduU3RydWN0c0NvbnRhaW5pbmdTYW1wbGVycykKLXsKLSAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJzdHJ1Y3QgcyB7IHNh
bXBsZXIyRCBmb287IH07XG4iCi0gICAgICAgICJ1bmlmb3JtIHMgYTtcbiIKLSAgICAgICAgIm91
dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAg
ICAgIiAgIHMgYjtcbiIKLSAgICAgICAgIiAgIGIgPSBhO1xuIgotICAgICAgICAiICAgbXlfRnJh
Z0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShz
aGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRp
b24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0K
LQotLy8gVGhpcyBpcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgYSBwYXJ0aWN1bGFyIGJ1ZyB0aGF0
IHdhcyBpbiBBTkdMRS4KLS8vIEl0IGFsc28gdmVyaWZpZXMgdGhhdCBFU1NMMyBmdW5jdGlvbmFs
aXR5IGRvZXNuJ3QgbGVhayB0byBFU1NMMS4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBB
cnJheVdpdGhOb1NpemVJbkluaXRpYWxpemVyTGlzdCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgot
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZmxvYXQgYVsyXSwgYltdO1xu
IgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAgICAgICAifVxu
IjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgp
IDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8
IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gQ29uc3QgdmFyaWFibGVzIG5lZWQgYW4gaW5pdGlh
bGl6ZXIuCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgQ29uc3RWYXJOb3RJbml0aWFsaXpl
ZCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2
ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0g
ICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCi0gICAgICAgICIgICBjb25zdCBmbG9hdCBhO1xuIgotICAgICAgICAiICAgbXlfRnJhZ0Nv
bG9yID0gdmVjNCgxLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFk
ZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24g
c3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQot
Ly8gQ29uc3QgdmFyaWFibGVzIG5lZWQgYW4gaW5pdGlhbGl6ZXIuIEluIEVTU0wxIGNvbnN0IHN0
cnVjdHMgY29udGFpbmluZwotLy8gYXJyYXlzIGFyZSBub3QgYWxsb3dlZCBhdCBhbGwgc2luY2Ug
aXQncyBpbXBvc3NpYmxlIHRvIGluaXRpYWxpemUgdGhlbS4KLS8vIEV2ZW4gdGhvdWdoIHRoaXMg
dGVzdCBpcyBmb3IgRVNTTDMgdGhlIG9ubHkgdGhpbmcgdGhhdCdzIGNyaXRpY2FsIGZvcgotLy8g
RVNTTDEgaXMgdGhlIG5vbi1pbml0aWFsaXphdGlvbiBjaGVjayB0aGF0J3MgdXNlZCBmb3IgYm90
aCBsYW5ndWFnZSB2ZXJzaW9ucy4KLS8vIFdoZXRoZXIgRVNTTDEgY29tcGlsYXRpb24gZ2VuZXJh
dGVzIHRoZSBtb3N0IGhlbHBmdWwgZXJyb3IgbWVzc2FnZXMgaXMgYQotLy8gc2Vjb25kYXJ5IGNv
bmNlcm4uCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgQ29uc3RTdHJ1Y3ROb3RJbml0aWFs
aXplZCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAg
IiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
Ci0gICAgICAgICJzdHJ1Y3QgUyB7XG4iCi0gICAgICAgICIgICBmbG9hdCBhWzNdO1xuIgotICAg
ICAgICAifTtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAg
InZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGNvbnN0IFMgYjtcbiIKLSAgICAgICAgIiAg
IG15X0ZyYWdDb2xvciA9IHZlYzQoMS4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNv
bXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNv
bXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAg
ICB9Ci19Ci0KLS8vIENvbnN0IHZhcmlhYmxlcyBuZWVkIGFuIGluaXRpYWxpemVyLiBJbiBFU1NM
MSBjb25zdCBhcnJheXMgYXJlIG5vdCBhbGxvd2VkCi0vLyBhdCBhbGwgc2luY2UgaXQncyBpbXBv
c3NpYmxlIHRvIGluaXRpYWxpemUgdGhlbS4KLS8vIEV2ZW4gdGhvdWdoIHRoaXMgdGVzdCBpcyBm
b3IgRVNTTDMgdGhlIG9ubHkgdGhpbmcgdGhhdCdzIGNyaXRpY2FsIGZvcgotLy8gRVNTTDEgaXMg
dGhlIG5vbi1pbml0aWFsaXphdGlvbiBjaGVjayB0aGF0J3MgdXNlZCBmb3IgYm90aCBsYW5ndWFn
ZSB2ZXJzaW9ucy4KLS8vIFdoZXRoZXIgRVNTTDEgY29tcGlsYXRpb24gZ2VuZXJhdGVzIHRoZSBt
b3N0IGhlbHBmdWwgZXJyb3IgbWVzc2FnZXMgaXMgYQotLy8gc2Vjb25kYXJ5IGNvbmNlcm4uCi1U
RVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgQ29uc3RBcnJheU5vdEluaXRpYWxpemVkKQotewot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24g
MzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAg
Im91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAg
ICAgICAgIiAgIGNvbnN0IGZsb2F0IGFbM107XG4iCi0gICAgICAgICIgICBteV9GcmFnQ29sb3Ig
PSB2ZWM0KDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0
cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNj
ZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBC
bG9jayBsYXlvdXQgcXVhbGlmaWVycyBjYW4ndCBiZSB1c2VkIG9uIG5vbi1ibG9jayB1bmlmb3Jt
cyAoRVNTTCAzLjAwIHNlY3Rpb24gNC4zLjguMykKLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0
LCBCbG9ja0xheW91dFF1YWxpZmllck9uUmVndWxhclVuaWZvcm0pCi17Ci0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAibGF5b3V0KHBhY2tl
ZCkgdW5pZm9ybSBtYXQyIHg7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2
ZWM0KDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmlu
ZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVk
ZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBCbG9j
ayBsYXlvdXQgcXVhbGlmaWVycyBjYW4ndCBiZSB1c2VkIG9uIG5vbi1ibG9jayB1bmlmb3JtcyAo
RVNTTCAzLjAwIHNlY3Rpb24gNC4zLjguMykKLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBC
bG9ja0xheW91dFF1YWxpZmllck9uVW5pZm9ybVdpdGhFbXB0eURlY2wpCi17Ci0gICAgLy8gWWVz
LCB0aGUgY29tbWEgaW4gdGhlIGRlY2xhcmF0aW9uIGJlbG93IGlzIG5vdCBhIHR5cG8uCi0gICAg
Ly8gRW1wdHkgZGVjbGFyYXRpb25zIGFyZSBhbGxvd2VkIGluIEdMU0wuCi0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAibGF5b3V0KHBhY2tl
ZCkgdW5pZm9ybSBtYXQyLCB4O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xu
IgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0g
dmVjNCgxLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJp
bmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2Vl
ZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gQXJy
YXlzIG9mIGFycmF5cyBhcmUgbm90IGFsbG93ZWQgKEVTU0wgMy4wMCBzZWN0aW9uIDQuMS45KQot
VEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEFycmF5c09mQXJyYXlzMSkKLXsKLSAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xu
IgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVj
NCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIg
ICBmbG9hdFs1XSBhWzNdO1xuIgotICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjAp
O1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAg
IHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBl
Y3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gQXJyYXlzIG9mIGFy
cmF5cyBhcmUgbm90IGFsbG93ZWQgKEVTU0wgMy4wMCBzZWN0aW9uIDQuMS45KQotVEVTVF9GKE1h
bGZvcm1lZFNoYWRlclRlc3QsIEFycmF5c09mQXJyYXlzMikKLXsKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFn
Q29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBmbG9hdFsy
XSBhLCBiWzNdO1xuIgotICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgot
ICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAg
ICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3Rpbmcg
ZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gSW1wbGljaXRseSBzaXplZCBh
cnJheXMgbmVlZCB0byBiZSBpbml0aWFsaXplZCAoRVNTTCAzLjAwIHNlY3Rpb24gNC4xLjkpCi1U
RVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgVW5pbml0aWFsaXplZEltcGxpY2l0QXJyYXlTaXpl
KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAg
ICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtc
biIKLSAgICAgICAgIiAgIGZsb2F0W10gYTtcbiIKLSAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9
IHZlYzQoMS4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3Ry
aW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2Nl
ZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEFu
IG9wZXJhdG9yIGNhbiBvbmx5IGZvcm0gYSBjb25zdGFudCBleHByZXNzaW9uIGlmIGFsbCB0aGUg
b3BlcmFuZHMgYXJlIGNvbnN0YW50IGV4cHJlc3Npb25zCi0vLyAtIGV2ZW4gb3BlcmFuZHMgb2Yg
dGVybmFyeSBvcGVyYXRvciB0aGF0IGFyZSBuZXZlciBldmFsdWF0ZWQuIChFU1NMIDMuMDAgc2Vj
dGlvbiA0LjMuMykKLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBUZXJuYXJ5T3BlcmF0b3JO
b3RDb25zdGFudEV4cHJlc3Npb24pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAg
ICAgICAidW5pZm9ybSBib29sIHU7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAg
ICAgICIgICBjb25zdCBib29sIGEgPSB0cnVlID8gdHJ1ZSA6IHU7XG4iCi0gICAgICAgICIgICBt
eV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21w
aWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAg
fQotfQotCi0vLyBUZXJuYXJ5IG9wZXJhdG9yIGNhbid0IG9wZXJhdGUgb24gYXJyYXlzIChFU1NM
IDMuMDAgc2VjdGlvbiA1LjcpCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgVGVybmFyeU9w
ZXJhdG9yT25BcnJheXMpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9
Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZmxvYXRbMV0gYSA9IGZsb2F0WzFdKDAuMCk7
XG4iCi0gICAgICAgICIgICBmbG9hdFsxXSBiID0gZmxvYXRbMV0oMS4wKTtcbiIKLSAgICAgICAg
IiAgIGZsb2F0WzFdIGMgPSB0cnVlID8gYSA6IGI7XG4iCi0gICAgICAgICIgICBteV9GcmFnQ29s
b3IgPSB2ZWM0KDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRl
clN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBz
dWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0v
LyBUZXJuYXJ5IG9wZXJhdG9yIGNhbid0IG9wZXJhdGUgb24gc3RydWN0cyAoRVNTTCAzLjAwIHNl
Y3Rpb24gNS43KQotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFRlcm5hcnlPcGVyYXRvck9u
U3RydWN0cykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAg
ICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJzdHJ1Y3Qg
UyB7IGZsb2F0IGZvbzsgfTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAg
IiAgIFMgYSA9IFMoMC4wKTtcbiIKLSAgICAgICAgIiAgIFMgYiA9IFMoMS4wKTtcbiIKLSAgICAg
ICAgIiAgIFMgYyA9IHRydWUgPyBhIDogYjtcbiIKLSAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9
IHZlYzQoMS4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3Ry
aW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2Nl
ZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEFy
cmF5IGxlbmd0aCgpIHJldHVybnMgYSBjb25zdGFudCBzaWduZWQgaW50ZWdyYWwgZXhwcmVzc2lv
biAoRVNTTCAzLjAwIHNlY3Rpb24gNC4xLjkpCi0vLyBBc3NpZ25pbmcgaXQgdG8gdW5zaWduZWQg
c2hvdWxkIHJlc3VsdCBpbiBhbiBlcnJvci4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBB
c3NpZ25BcnJheUxlbmd0aFRvVW5zaWduZWQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xu
IgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgaW50WzFdIGFycjtcbiIK
LSAgICAgICAgIiAgIHVpbnQgbCA9IGFyci5sZW5ndGgoKTtcbiIKLSAgICAgICAgIiAgIG15X0Zy
YWdDb2xvciA9IHZlYzQoZmxvYXQobCkpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29t
cGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29t
cGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAg
IH0KLX0KLQotLy8gR2xvYmFsIHZhcmlhYmxlIGluaXRpYWxpemVycyBuZWVkIHRvIGJlIGNvbnN0
YW50IGV4cHJlc3Npb25zIChFU1NMIDEuMDAgc2VjdGlvbiA0LjMpCi0vLyBJbml0aWFsaXppbmcg
d2l0aCBhIHZhcnlpbmcgc2hvdWxkIGJlIGFuIGVycm9yLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRl
clRlc3QsIEFzc2lnblZhcnlpbmdUb0dsb2JhbCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAg
ICAgICAidmFyeWluZyBmbG9hdCBhO1xuIgotICAgICAgICAiZmxvYXQgYiA9IGEgKiAyLjA7XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KGIpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcp
KQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVk
LCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gR2xvYmFs
IHZhcmlhYmxlIGluaXRpYWxpemVycyBuZWVkIHRvIGJlIGNvbnN0YW50IGV4cHJlc3Npb25zIChF
U1NMIDMuMDAgc2VjdGlvbiA0LjMpCi0vLyBJbml0aWFsaXppbmcgd2l0aCBhbiB1bmlmb3JtIHNo
b3VsZCBiZSBhbiBlcnJvci4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBBc3NpZ25Vbmlm
b3JtVG9HbG9iYWxFU1NMMykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5n
ID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IGE7XG4iCi0gICAgICAgICJmbG9h
dCBiID0gYSAqIDIuMDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQo
Yik7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0g
ICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4
cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBHbG9iYWwgdmFy
aWFibGUgaW5pdGlhbGl6ZXJzIG5lZWQgdG8gYmUgY29uc3RhbnQgZXhwcmVzc2lvbnMgKEVTU0wg
MS4wMCBzZWN0aW9uIDQuMykKLS8vIEluaXRpYWxpemluZyB3aXRoIGFuIHVuaWZvcm0gc2hvdWxk
IGdlbmVyYXRlIGEgd2FybmluZwotLy8gKHdlIGRvbid0IGdlbmVyYXRlIGFuIGVycm9yIG9uIEVT
U0wgMS4wMCBiZWNhdXNlIG9mIGxlZ2FjeSBjb21wYXRpYmlsaXR5KQotVEVTVF9GKE1hbGZvcm1l
ZFNoYWRlclRlc3QsIEFzc2lnblVuaWZvcm1Ub0dsb2JhbEVTU0wxKQotewotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IGE7XG4iCi0gICAgICAgICJmbG9hdCBiID0g
YSAqIDIuMDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQoYik7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNo
YWRlclN0cmluZykpCi0gICAgewotICAgICAgICBpZiAoIWhhc1dhcm5pbmcoKSkKLSAgICAgICAg
ewotICAgICAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkIHdp
dGhvdXQgd2FybmluZ3MsIGV4cGVjdGluZyB3YXJuaW5nICIgPDwgbUluZm9Mb2c7Ci0gICAgICAg
IH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29t
cGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyB3aXRoIHdhcm5pbmcgIiA8PCBtSW5m
b0xvZzsKLSAgICB9Ci19Ci0KLS8vIEdsb2JhbCB2YXJpYWJsZSBpbml0aWFsaXplcnMgbmVlZCB0
byBiZSBjb25zdGFudCBleHByZXNzaW9ucyAoRVNTTCAxLjAwIHNlY3Rpb24gNC4zKQotLy8gSW5p
dGlhbGl6aW5nIHdpdGggYW4gdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGNhbGwgc2hvdWxkIGJlIGFu
IGVycm9yLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEFzc2lnbkZ1bmN0aW9uQ2FsbFRv
R2xvYmFsKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJmbG9hdCBmb28oKSB7IHJl
dHVybiAxLjA7IH1cbiIKLSAgICAgICAgImZsb2F0IGIgPSBmb28oKTtcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYik7XG4iCi0g
ICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAg
ICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBm
YWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBHbG9iYWwgdmFyaWFibGUgaW5p
dGlhbGl6ZXJzIG5lZWQgdG8gYmUgY29uc3RhbnQgZXhwcmVzc2lvbnMgKEVTU0wgMS4wMCBzZWN0
aW9uIDQuMykKLS8vIEluaXRpYWxpemluZyB3aXRoIGFuIGFzc2lnbm1lbnQgdG8gYW5vdGhlciBn
bG9iYWwgc2hvdWxkIGJlIGFuIGVycm9yLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEFz
c2lnbkFzc2lnbm1lbnRUb0dsb2JhbCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAi
ZmxvYXQgYyA9IDEuMDtcbiIKLSAgICAgICAgImZsb2F0IGIgPSAoYyA9IDAuMCk7XG4iCi0gICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGIp
O1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAg
IHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBl
Y3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gR2xvYmFsIHZhcmlh
YmxlIGluaXRpYWxpemVycyBuZWVkIHRvIGJlIGNvbnN0YW50IGV4cHJlc3Npb25zIChFU1NMIDEu
MDAgc2VjdGlvbiA0LjMpCi0vLyBJbml0aWFsaXppbmcgd2l0aCBpbmNyZW1lbnRpbmcgYW5vdGhl
ciBnbG9iYWwgc2hvdWxkIGJlIGFuIGVycm9yLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3Qs
IEFzc2lnbkluY3JlbWVudFRvR2xvYmFsKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAg
ICJmbG9hdCBjID0gMS4wO1xuIgotICAgICAgICAiZmxvYXQgYiA9IChjKyspO1xuIgotICAgICAg
ICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiKTtc
biIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7
Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0
aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEdsb2JhbCB2YXJpYWJs
ZSBpbml0aWFsaXplcnMgbmVlZCB0byBiZSBjb25zdGFudCBleHByZXNzaW9ucyAoRVNTTCAxLjAw
IHNlY3Rpb24gNC4zKQotLy8gSW5pdGlhbGl6aW5nIHdpdGggYSB0ZXh0dXJlIGxvb2t1cCBmdW5j
dGlvbiBjYWxsIHNob3VsZCBiZSBhbiBlcnJvci4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0
LCBBc3NpZ25UZXh0dXJlMkRUb0dsb2JhbCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAg
ICAidW5pZm9ybSBtZWRpdW1wIHNhbXBsZXIyRCBzO1xuIgotICAgICAgICAiZmxvYXQgYiA9IHRl
eHR1cmUyRChzLCB2ZWMyKDAuNSwgMC41KSkueDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtc
biIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYik7XG4iCi0gICAgICAgICJ9XG4i
OwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkg
PDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwg
bUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBHbG9iYWwgdmFyaWFibGUgaW5pdGlhbGl6ZXJzIG5l
ZWQgdG8gYmUgY29uc3RhbnQgZXhwcmVzc2lvbnMgKEVTU0wgMy4wMCBzZWN0aW9uIDQuMykKLS8v
IEluaXRpYWxpemluZyB3aXRoIGEgbm9uLWNvbnN0YW50IGdsb2JhbCBzaG91bGQgYmUgYW4gZXJy
b3IuCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgQXNzaWduTm9uQ29uc3RHbG9iYWxUb0ds
b2JhbCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAg
IiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
Ci0gICAgICAgICJmbG9hdCBhID0gMS4wO1xuIgotICAgICAgICAiZmxvYXQgYiA9IGEgKiAyLjA7
XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iCi0gICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGIpO1xuIgotICAgICAg
ICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAg
RkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVy
ZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gR2xvYmFsIHZhcmlhYmxlIGluaXRpYWxp
emVycyBuZWVkIHRvIGJlIGNvbnN0YW50IGV4cHJlc3Npb25zIChFU1NMIDMuMDAgc2VjdGlvbiA0
LjMpCi0vLyBJbml0aWFsaXppbmcgd2l0aCBhIGNvbnN0YW50IGdsb2JhbCBzaG91bGQgYmUgZmlu
ZS4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBBc3NpZ25Db25zdEdsb2JhbFRvR2xvYmFs
KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAg
ICAgICAgImNvbnN0IGZsb2F0IGEgPSAxLjA7XG4iCi0gICAgICAgICJmbG9hdCBiID0gYSAqIDIu
MDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKLSAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQoYik7XG4iCi0gICAg
ICAgICJ9XG4iOwotICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAg
ICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2Vz
cyAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gU3RhdGljYWxseSBhc3NpZ25pbmcgdG8g
Ym90aCBnbF9GcmFnRGF0YSBhbmQgZ2xfRnJhZ0NvbG9yIGlzIGZvcmJpZGRlbiAoRVNTTCAxLjAw
IHNlY3Rpb24gNy4yKQotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFdyaXRlQm90aEZyYWdE
YXRhQW5kRnJhZ0NvbG9yKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcg
PQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lkIGZv
bygpIHtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdEYXRhWzBdLmErKztcbiIKLSAgICAgICAgIn1c
biIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvci54
ICs9IDAuMDtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5n
KSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRl
ZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFZlcnNp
b24gZGlyZWN0aXZlIG11c3QgYmUgb24gdGhlIGZpcnN0IGxpbmUgKEVTU0wgMy4wMCBzZWN0aW9u
IDMuMykKLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBWZXJzaW9uT25TZWNvbmRMaW5lKQot
ewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiXG4iCi0g
ICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgotICAgICAgICAiICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgot
ICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAg
ICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3Rpbmcg
ZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gTGF5b3V0IHF1YWxpZmllciBj
YW4gb25seSBhcHBlYXIgaW4gZ2xvYmFsIHNjb3BlIChFU1NMIDMuMDAgc2VjdGlvbiA0LjMuOCkK
LVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBMYXlvdXRRdWFsaWZpZXJJbkNvbmRpdGlvbikK
LXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAg
ICAgICJ1bmlmb3JtIHZlYzQgdTtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtc
biIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgICBpbnQgaSA9IDA7XG4i
Ci0gICAgICAgICIgICAgZm9yIChpbnQgaiA9IDA7IGxheW91dChsb2NhdGlvbiA9IDApIGJvb2wg
YiA9IGZhbHNlOyArK2opIHtcbiIKLSAgICAgICAgIiAgICAgICAgKytpO1xuIgotICAgICAgICAi
ICAgIH1cbiIKLSAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB1O1xuIgotICAgICAgICAifVxu
IjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgp
IDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8
IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gTGF5b3V0IHF1YWxpZmllciBjYW4gb25seSBhcHBl
YXIgd2hlcmUgc3BlY2lmaWVkIChFU1NMIDMuMDAgc2VjdGlvbiA0LjMuOCkKLVRFU1RfRihNYWxm
b3JtZWRTaGFkZXJUZXN0LCBMYXlvdXRRdWFsaWZpZXJJbkZ1bmN0aW9uUmV0dXJuVHlwZSkKLXsK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9u
IDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAg
ICJ1bmlmb3JtIHZlYzQgdTtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIK
LSAgICAgICAgImxheW91dChsb2NhdGlvbiA9IDApIHZlYzQgZm9vKCkge1xuIgotICAgICAgICAi
ICAgIHJldHVybiB1O1xuIgotICAgICAgICAifVxuIgotICAgICAgICAidm9pZCBtYWluKCkge1xu
IgotICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IGZvbygpO1xuIgotICAgICAgICAifVxuIjsK
LSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8
ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1J
bmZvTG9nOwotICAgIH0KLX0KLQotLy8gSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBvdXRwdXQs
IHRoZSBsb2NhdGlvbiBtdXN0IGJlIHNwZWNpZmllZCBmb3IgYWxsIG91dHB1dHMuCi0vLyAoRVNT
TCAzLjAwLjA0IHNlY3Rpb24gNC4zLjguMikKLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBU
d29PdXRwdXRzTm9MYXlvdXRRdWFsaWZpZXJzKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCB1O1xuIgotICAg
ICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfU2Vj
b25kYXJ5RnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAi
ICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMS4wKTtcbiIKLSAgICAgICAgIiAgICBteV9TZWNvbmRh
cnlGcmFnQ29sb3IgPSB2ZWM0KDAuNSk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21w
aWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAg
fQotfQotCi0vLyAoRVNTTCAzLjAwLjA0IHNlY3Rpb24gNC4zLjguMikKLVRFU1RfRihNYWxmb3Jt
ZWRTaGFkZXJUZXN0LCBUd29PdXRwdXRzRmlyc3RMYXlvdXRRdWFsaWZpZXIpCi17Ci0gICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9y
bSB2ZWM0IHU7XG4iCi0gICAgICAgICJsYXlvdXQobG9jYXRpb24gPSAwKSBvdXQgdmVjNCBteV9G
cmFnQ29sb3I7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9TZWNvbmRhcnlGcmFnQ29sb3I7XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0g
dmVjNCgxLjApO1xuIgotICAgICAgICAiICAgIG15X1NlY29uZGFyeUZyYWdDb2xvciA9IHZlYzQo
MC41KTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkK
LSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwg
ZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIChFU1NMIDMu
MDAuMDQgc2VjdGlvbiA0LjMuOC4yKQotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFR3b091
dHB1dHNTZWNvbmRMYXlvdXRRdWFsaWZpZXIpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWM0IHU7XG4iCi0gICAg
ICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJsYXlvdXQobG9jYXRpb24g
PSAwKSBvdXQgdmVjNCBteV9TZWNvbmRhcnlGcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iCi0gICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAg
ICAgICAiICAgIG15X1NlY29uZGFyeUZyYWdDb2xvciA9IHZlYzQoMC41KTtcbiIKLSAgICAgICAg
In1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZB
SUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUg
IiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFVuaWZvcm1zIGNhbiBiZSBhcnJheXMgKEVT
U0wgMy4wMCBzZWN0aW9uIDQuMy41KQotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIFVuaWZv
cm1BcnJheSkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAg
ICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzRbMl0gdTtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15
X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgICBt
eV9GcmFnQ29sb3IgPSB1WzBdO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoIWNvbXBpbGUo
c2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0
aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0K
LS8vIEZyYWdtZW50IHNoYWRlciBpbnB1dCB2YXJpYWJsZXMgY2Fubm90IGJlIGFycmF5cyBvZiBz
dHJ1Y3RzIChFU1NMIDMuMDAgc2VjdGlvbiA0LjMuNCkKLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJU
ZXN0LCBGcmFnbWVudElucHV0QXJyYXlPZlN0cnVjdHMpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAic3RydWN0IFMge1xuIgotICAg
ICAgICAiICAgIHZlYzQgZm9vO1xuIgotICAgICAgICAifTtcbiIKLSAgICAgICAgImluIFMgaVsy
XTtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKLSAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSBpWzBdLmZvbztcbiIKLSAg
ICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAg
ICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZh
aWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFZlcnRleCBzaGFkZXIgaW5wdXRz
IGNhbid0IGJlIGFycmF5cyAoRVNTTCAzLjAwIHNlY3Rpb24gNC4zLjQpCi0vLyBUaGlzIHRlc3Qg
aXMgdGVzdGluZyB0aGUgY2FzZSB3aGVyZSB0aGUgYXJyYXkgYnJhY2tldHMgYXJlIGFmdGVyIHRo
ZSB2YXJpYWJsZSBuYW1lLCBzbwotLy8gdGhlIGFycmF5bmVzcyBpc24ndCBrbm93biB3aGVuIHRo
ZSB0eXBlIGFuZCBxdWFsaWZpZXJzIGFyZSBpbml0aWFsbHkgcGFyc2VkLgotVEVTVF9GKE1hbGZv
cm1lZFZlcnRleFNoYWRlclRlc3QsIFZlcnRleFNoYWRlcklucHV0QXJyYXkpCi17Ci0gICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAiaW4gdmVj
NCBpWzJdO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgIGdsX1Bv
c2l0aW9uID0gaVswXTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVy
U3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1
Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8v
IFZlcnRleCBzaGFkZXIgaW5wdXRzIGNhbid0IGJlIGFycmF5cyAoRVNTTCAzLjAwIHNlY3Rpb24g
NC4zLjQpCi0vLyBUaGlzIHRlc3QgaXMgdGVzdGluZyB0aGUgY2FzZSB3aGVyZSB0aGUgYXJyYXkg
YnJhY2tldHMgYXJlIGFmdGVyIHRoZSB0eXBlLgotVEVTVF9GKE1hbGZvcm1lZFZlcnRleFNoYWRl
clRlc3QsIFZlcnRleFNoYWRlcklucHV0QXJyYXlUeXBlKQotewotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAg
ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImluIHZlYzRbMl0gaTtcbiIK
LSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IGlb
MF07XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0g
ICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4
cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBGcmFnbWVudCBz
aGFkZXIgaW5wdXRzIGNhbid0IGNvbnRhaW4gYm9vbGVhbnMgKEVTU0wgMy4wMCBzZWN0aW9uIDQu
My40KQotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEZyYWdtZW50U2hhZGVySW5wdXRTdHJ1
Y3RXaXRoQm9vbCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJzdHJ1Y3QgUyB7XG4iCi0gICAgICAgICIgICAgYm9vbCBmb287XG4i
Ci0gICAgICAgICJ9O1xuIgotICAgICAgICAiaW4gUyBzO1xuIgotICAgICAgICAib3V0IHZlYzQg
bXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAg
IG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNv
bXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNv
bXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAg
ICB9Ci19Ci0KLS8vIEZyYWdtZW50IHNoYWRlciBpbnB1dHMgd2l0aG91dCBhIGZsYXQgcXVhbGlm
aWVyIGNhbid0IGNvbnRhaW4gaW50ZWdlcnMgKEVTU0wgMy4wMCBzZWN0aW9uIDQuMy40KQotVEVT
VF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEZyYWdtZW50U2hhZGVySW5wdXRTdHJ1Y3RXaXRoSW50
KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAg
ICAgICAgInN0cnVjdCBTIHtcbiIKLSAgICAgICAgIiAgICBpbnQgZm9vO1xuIgotICAgICAgICAi
fTtcbiIKLSAgICAgICAgImluIFMgcztcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xv
cjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgICBteV9GcmFnQ29s
b3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRl
clN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBz
dWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0v
LyBTZWxlY3RpbmcgYSBmaWVsZCBvZiBhIHZlY3RvciB0aGF0J3MgdGhlIHJlc3VsdCBvZiBkeW5h
bWljIGluZGV4aW5nIGEgY29uc3RhbnQgYXJyYXkgc2hvdWxkIHdvcmsuCi1URVNUX0YoTWFsZm9y
bWVkU2hhZGVyVGVzdCwgU2hhZGVyU2VsZWN0aW5nRmllbGRPZlZlY3RvckluZGV4ZWRGcm9tQXJy
YXkpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIj
dmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgot
ICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidW5pZm9ybSBpbnQg
aTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgICBmbG9hdCBmID0g
dmVjMlsxXSh2ZWMyKDAuMCwgMC4xKSlbaV0ueDtcbiIKLSAgICAgICAgIiAgICBteV9GcmFnQ29s
b3IgPSB2ZWM0KGYpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoIWNvbXBpbGUoc2hhZGVy
U3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZh
aWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFBh
c3NpbmcgYW4gYXJyYXkgaW50byBhIGZ1bmN0aW9uIGFuZCB0aGVuIHBhc3NpbmcgYSB2YWx1ZSBm
cm9tIHRoYXQgYXJyYXkgaW50byBhbm90aGVyIGZ1bmN0aW9uCi0vLyBzaG91bGQgd29yay4gVGhp
cyBpcyBhIHJlZ3Jlc3Npb24gdGVzdCBmb3IgYSBidWcgd2hlcmUgdGhlIG1hbmdsZWQgbmFtZSBv
ZiBhIFRUeXBlIHdhcyBub3QKLS8vIHByb3Blcmx5IHVwZGF0ZWQgd2hlbiBkZXRlcm1pbmluZyB0
aGUgdHlwZSByZXN1bHRpbmcgZnJvbSBhcnJheSBpbmRleGluZy4KLVRFU1RfRihNYWxmb3JtZWRT
aGFkZXJUZXN0LCBBcnJheVZhbHVlRnJvbUZ1bmN0aW9uUGFyYW1ldGVyQXNQYXJhbWV0ZXIpCi17
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgdTtcbiIKLSAgICAg
ICAgImZsb2F0IGZvbyhmbG9hdCBmKSB7XG4iCi0gICAgICAgICIgICByZXR1cm4gZiAqIDIuMDtc
biIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgImZsb2F0IGJhcihmbG9hdFsyXSBmKSB7XG4iCi0g
ICAgICAgICIgICAgcmV0dXJuIGZvbyhmWzBdKTtcbiIKLSAgICAgICAgIn1cbiIKLSAgICAgICAg
InZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgZmxvYXQgYXJyWzJd
O1xuIgotICAgICAgICAiICAgIGFyclswXSA9IHU7XG4iCi0gICAgICAgICIgICAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNChiYXIoYXJyKSk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmICghY29tcGls
ZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGls
YXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0K
LQotLy8gVGVzdCB0aGF0IG91dC1vZi1yYW5nZSBpbnRlZ2VyIGxpdGVyYWwgZ2VuZXJhdGVzIGFu
IGVycm9yIGluIEVTU0wgMy4wMC4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBPdXRPZlJh
bmdlSW50ZWdlckxpdGVyYWwpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIgotICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGludDtcbiIKLSAgICAgICAg
Im91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAg
ICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDB4MTAwMDAwMDAwKTtcbiIKLSAgICAgICAg
In1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZB
SUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUg
IiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCB2ZWN0b3IgZmllbGQgc2Vs
ZWN0aW9uIGZyb20gYSB2YWx1ZSB0YWtlbiBmcm9tIGFuIGFycmF5IGNvbnN0cnVjdG9yIGlzIGFj
Y2VwdGVkIGFzIGEKLS8vIGNvbnN0YW50IGV4cHJlc3Npb24uCi1URVNUX0YoTWFsZm9ybWVkU2hh
ZGVyVGVzdCwgRmllbGRTZWxlY3Rpb25Gcm9tVmVjdG9yQXJyYXlDb25zdHJ1Y3RvcklzQ29uc3Qp
Ci17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVy
c2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAg
ICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIK
LSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBjb25zdCBmbG9hdCBmID0gdmVjMlsxXSh2ZWMy
KDAuMCwgMS4wKSlbMF0ueDtcbiIKLSAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGYp
O1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAg
ICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0
aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCBzdHJ1
Y3R1cmUgZmllbGQgc2VsZWN0aW9uIGZyb20gYSB2YWx1ZSB0YWtlbiBmcm9tIGFuIGFycmF5IGNv
bnN0cnVjdG9yIGlzIGFjY2VwdGVkIGFzIGEKLS8vIGNvbnN0YW50IGV4cHJlc3Npb24uCi1URVNU
X0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgRmllbGRTZWxlY3Rpb25Gcm9tU3RydWN0QXJyYXlDb25z
dHJ1Y3RvcklzQ29uc3QpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9
Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAi
c3RydWN0IFMgeyBmbG9hdCBtZW1iZXI7IH07XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgot
ICAgICAgICAie1xuIgotICAgICAgICAiICAgIGNvbnN0IGZsb2F0IGYgPSBTWzFdKFMoMC4wKSlb
MF0ubWVtYmVyO1xuIgotICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoZik7XG4iCi0g
ICAgICAgICJ9XG4iOwotICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAg
ICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3Vj
Y2VzcyAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gVGVzdCB0aGF0IGEgcmVmZXJlbmNl
IHRvIGEgY29uc3QgYXJyYXkgaXMgYWNjZXB0ZWQgYXMgYSBjb25zdGFudCBleHByZXNzaW9uLgot
VEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEFycmF5U3ltYm9sSXNDb25zdCkKLXsKLSAgICBj
b25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBl
c1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQg
dmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAi
e1xuIgotICAgICAgICAiICAgIGNvbnN0IGZsb2F0WzJdIGFyciA9IGZsb2F0WzJdKDAuMCwgMS4w
KTtcbiIKLSAgICAgICAgIiAgICBjb25zdCBmbG9hdCBmID0gYXJyWzBdO1xuIgotICAgICAgICAi
ICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoZik7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmICgh
Y29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIg
Y29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8IG1JbmZvTG9nOwotICAg
IH0KLX0KLQotLy8gVGVzdCB0aGF0IHVzaW5nIGFuIGFycmF5IGNvbnN0cnVjdG9yIGluIGEgcGFy
YW1ldGVyIHRvIGEgYnVpbHQtaW4gZnVuY3Rpb24gaXMgYWNjZXB0ZWQgYXMgYQotLy8gY29uc3Rh
bnQgZXhwcmVzc2lvbi4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBCdWlsdEluRnVuY3Rp
b25BcHBsaWVkVG9BcnJheUNvbnN0cnVjdG9ySXNDb25zdCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFn
Q29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAg
ICAiICAgIGNvbnN0IGZsb2F0IGYgPSBzaW4oZmxvYXRbMl0oMC4wLCAxLjApWzBdKTtcbiIKLSAg
ICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGYpO1xuIgotICAgICAgICAifVxuIjsKLSAg
ICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAi
U2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xv
ZzsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCB1c2luZyBhbiBhcnJheSBjb25zdHJ1Y3RvciBp
biBhIHBhcmFtZXRlciB0byBhIGJ1aWx0LWluIGZ1bmN0aW9uIGlzIGFjY2VwdGVkIGFzIGEKLS8v
IGNvbnN0YW50IGV4cHJlc3Npb24uCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgQnVpbHRJ
bkZ1bmN0aW9uV2l0aE11bHRpcGxlUGFyYW1ldGVyc0FwcGxpZWRUb0FycmF5Q29uc3RydWN0b3JJ
c0NvbnN0KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAg
ICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc
biIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFp
bigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgY29uc3QgZmxvYXQgZiA9IHBvdygx
LjAsIGZsb2F0WzJdKDAuMCwgMS4wKVswXSk7XG4iCi0gICAgICAgICIgICAgbXlfRnJhZ0NvbG9y
ID0gdmVjNChmKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21waWxlKHNoYWRlclN0
cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWls
ZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBUZXN0
IHRoYXQgdXNpbmcgYW4gYXJyYXkgY29uc3RydWN0b3IgaW4gYSBwYXJhbWV0ZXIgdG8gYSBjb25z
dHJ1Y3RvciBpcyBhY2NlcHRlZCBhcyBhIGNvbnN0YW50Ci0vLyBleHByZXNzaW9uLgotVEVTVF9G
KE1hbGZvcm1lZFNoYWRlclRlc3QsIENvbnN0cnVjdG9yV2l0aE11bHRpcGxlUGFyYW1ldGVyc0Fw
cGxpZWRUb0FycmF5Q29uc3RydWN0b3JJc0NvbnN0KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xv
cjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIg
ICAgY29uc3QgdmVjMiBmID0gdmVjMigxLjAsIGZsb2F0WzJdKDAuMCwgMS4wKVswXSk7XG4iCi0g
ICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNChmLngpO1xuIgotICAgICAgICAifVxuIjsK
LSAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8
PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5m
b0xvZzsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCB1c2luZyBhbiBhcnJheSBjb25zdHJ1Y3Rv
ciBpbiBhbiBvcGVyYW5kIG9mIHRoZSB0ZXJuYXJ5IHNlbGVjdGlvbiBvcGVyYXRvciBpcyBhY2Nl
cHRlZAotLy8gYXMgYSBjb25zdGFudCBleHByZXNzaW9uLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRl
clRlc3QsIFRlcm5hcnlPcGVyYXRvckFwcGxpZWRUb0FycmF5Q29uc3RydWN0b3JJc0NvbnN0KQot
ewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNp
b24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAg
ICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0g
ICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgY29uc3QgZmxvYXQgZiA9IHRydWUgPyBmbG9hdFsy
XSgwLjAsIDEuMClbMF0gOiAxLjA7XG4iCi0gICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVj
NChmKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykp
Ci0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4
cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQg
YSB0ZXJuYXJ5IG9wZXJhdG9yIHdpdGggb25lIHVuZXZhbHVhdGVkIG5vbi1jb25zdGFudCBvcGVy
YW5kIGlzIG5vdCBhIGNvbnN0YW50Ci0vLyBleHByZXNzaW9uLgotVEVTVF9GKE1hbGZvcm1lZFNo
YWRlclRlc3QsIFRlcm5hcnlPcGVyYXRvck5vbkNvbnN0YW50T3BlcmFuZCkKLXsKLSAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgotICAgICAgICAidm9pZCBt
YWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBjb25zdCBmbG9hdCBmID0gdHJ1
ZSA/IDEuMCA6IHU7XG4iCi0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChmKTtcbiIK
LSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0g
ICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5n
IGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCBhIHNhbXBs
ZXIgY2FuJ3QgYmUgdXNlZCBpbiBjb25zdHJ1Y3RvciBhcmd1bWVudCBsaXN0Ci1URVNUX0YoTWFs
Zm9ybWVkU2hhZGVyVGVzdCwgU2FtcGxlckluQ29uc3RydWN0b3JBcmd1bWVudHMpCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHM7XG4iCi0gICAgICAg
ICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIHZlYzIgdiA9IHZl
YzIoMC4wLCBzKTtcbiIKLSAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHYsIDAuMCwg
MC4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkK
LSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwg
ZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhh
dCB2b2lkIGNhbid0IGJlIHVzZWQgaW4gY29uc3RydWN0b3IgYXJndW1lbnQgbGlzdAotVEVTVF9G
KE1hbGZvcm1lZFNoYWRlclRlc3QsIFZvaWRJbkNvbnN0cnVjdG9yQXJndW1lbnRzKQotewotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lkIGZvbygpIHt9XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIHZlYzIgdiA9IHZlYzIoMC4w
LCBmb28oKSk7XG4iCi0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2LCAwLjAsIDAu
MCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0g
ICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4
cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQg
YSBzaGFkZXIgcGFzc2luZyBhIHN0cnVjdCBpbnRvIGEgY29uc3RydWN0b3Igb2YgYXJyYXkgb2Yg
c3RydWN0cyB3aXRoIDEgZWxlbWVudCB3b3Jrcy4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0
LCBTaW5nbGVTdHJ1Y3RBcnJheUNvbnN0cnVjdG9yKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xv
cjtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgdTtcbiIKLSAgICAgICAgInN0cnVjdCBTIHsg
ZmxvYXQgbWVtYmVyOyB9O1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntc
biIKLSAgICAgICAgIiAgICBTWzFdIHNhcnIgPSBTWzFdKFModSkpO1xuIgotICAgICAgICAiICAg
IG15X0ZyYWdDb2xvciA9IHZlYzQoc2FyclswXS5tZW1iZXIpO1xuIgotICAgICAgICAifVxuIjsK
LSAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8
PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5m
b0xvZzsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCBhIHNoYWRlciB3aXRoIGVtcHR5IGNvbnN0
cnVjdG9yIHBhcmFtZXRlciBsaXN0IGlzIG5vdCBhY2NlcHRlZC4KLVRFU1RfRihNYWxmb3JtZWRT
aGFkZXJUZXN0LCBFbXB0eUFycmF5Q29uc3RydWN0b3IpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0Nv
bG9yO1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCB1O1xuIgotICAgICAgICAiY29uc3QgZmxv
YXRbXSBmID0gZltdKCk7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xu
IgotICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKLSAgICAgICAgIn1c
biI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwo
KSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8
PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCBpbmRleGluZyBmcmFnbWVudCBv
dXRwdXRzIHdpdGggYSBub24tY29uc3RhbnQgZXhwcmVzc2lvbiBpcyBmb3JiaWRkZW4sIGV2ZW4g
aWYgQU5HTEUKLS8vIGlzIGFibGUgdG8gY29uc3RhbnQgZm9sZCB0aGUgaW5kZXggZXhwcmVzc2lv
bi4gRVNTTCAzLjAwIHNlY3Rpb24gNC4zLjYuCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwg
RHluYW1pY2FsbHlJbmRleGVkRnJhZ21lbnRPdXRwdXQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBpbnQgYTtcbiIK
LSAgICAgICAgIm91dCB2ZWM0WzJdIG15X0ZyYWdEYXRhO1xuIgotICAgICAgICAidm9pZCBtYWlu
KClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBteV9GcmFnRGF0YVt0cnVlID8gMCA6
IGFdID0gdmVjNCgwLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFk
ZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24g
c3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQot
Ly8gVGVzdCB0aGF0IGluZGV4aW5nIGFuIGludGVyZmFjZSBibG9jayBhcnJheSB3aXRoIGEgbm9u
LWNvbnN0YW50IGV4cHJlc3Npb24gaXMgZm9yYmlkZGVuLCBldmVuIGlmCi0vLyBBTkdMRSBpcyBh
YmxlIHRvIGNvbnN0YW50IGZvbGQgdGhlIGluZGV4IGV4cHJlc3Npb24uIEVTU0wgMy4wMCBzZWN0
aW9uIDQuMy43LgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIER5bmFtaWNhbGx5SW5kZXhl
ZEludGVyZmFjZUJsb2NrKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcg
PQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gaW50IGE7XG4iCi0gICAgICAgICJ1bmlmb3Jt
IEJcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICB2ZWM0IGY7XG4iCi0gICAgICAgICJ9
XG4iCi0gICAgICAgICJibG9ja3NbMl07XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29s
b3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAi
ICAgIG15X0ZyYWdDb2xvciA9IGJsb2Nrc1t0cnVlID8gMCA6IGFdLmY7XG4iCi0gICAgICAgICJ9
XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlM
KCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIg
PDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQgYSBzaGFkZXIgdGhhdCB1c2Vz
IGEgc3RydWN0IGRlZmluaXRpb24gaW4gcGxhY2Ugb2YgYSBzdHJ1Y3QgY29uc3RydWN0b3IgZG9l
cyBub3QKLS8vIGNvbXBpbGUuIFNlZSBHTFNMIEVTIDEuMDAgc2VjdGlvbiA1LjQuMy4KLVRFU1Rf
RihNYWxmb3JtZWRTaGFkZXJUZXN0LCBTdHJ1Y3RDb25zdHJ1Y3RvcldpdGhTdHJ1Y3REZWZpbml0
aW9uKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAg
ICAgICAie1xuIgotICAgICAgICAiICAgIHN0cnVjdCBzIHsgZmxvYXQgZjsgfSAoMC4wKTtcbiIK
LSAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9XG4i
OwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkg
PDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwg
bUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQgaW5kZXhpbmcgZ2xfRnJhZ0RhdGEg
d2l0aCBhIG5vbi1jb25zdGFudCBleHByZXNzaW9uIGlzIGZvcmJpZGRlbiBpbiBXZWJHTCAyLjAs
IGV2ZW4KLS8vIHdoZW4gQU5HTEUgaXMgYWJsZSB0byBjb25zdGFudCBmb2xkIHRoZSBpbmRleC4K
LS8vIFdlYkdMIDIuMCBzcGVjIHNlY3Rpb24gJ0dMU0wgRVMgMS4wMCBGcmFnbWVudCBTaGFkZXIg
T3V0cHV0JwotVEVTVF9GKE1hbGZvcm1lZFdlYkdMMlNoYWRlclRlc3QsIEluZGV4RnJhZ0RhdGFX
aXRoTm9uQ29uc3RhbnQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9
Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZvaWQgbWFp
bigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAy
OyArK2kpIHtcbiIKLSAgICAgICAgIiAgICAgICAgZ2xfRnJhZ0RhdGFbdHJ1ZSA/IDAgOiBpXSA9
IHZlYzQoMC4wKTtcbiIKLSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlm
IChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRl
ciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7
Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQgYSBub24tY29uc3RhbnQgdGV4dHVyZSBvZmZzZXQg
aXMgbm90IGFjY2VwdGVkIGZvciB0ZXh0dXJlT2Zmc2V0LgotLy8gRVNTTCAzLjAwIHNlY3Rpb24g
OC44Ci1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgVGV4dHVyZU9mZnNldE5vbkNvbnN0KQot
ewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNp
b24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAg
ICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjMyB1X3Rl
eENvb3JkO1xuIgotICAgICAgICAidW5pZm9ybSBtZWRpdW1wIHNhbXBsZXIzRCB1X3NhbXBsZXI7
XG4iCi0gICAgICAgICJ1bmlmb3JtIGludCB4O1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIK
LSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHRleHR1cmVPZmZzZXQo
dV9zYW1wbGVyLCB1X3RleENvb3JkLCBpdmVjMyh4LCAzLCAtOCkpO1xuIgotICAgICAgICAifVxu
IjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgp
IDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8
IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gVGVzdCB0aGF0IGEgbm9uLWNvbnN0YW50IHRleHR1
cmUgb2Zmc2V0IGlzIG5vdCBhY2NlcHRlZCBmb3IgdGV4dHVyZVByb2pPZmZzZXQgd2l0aCBiaWFz
LgotLy8gRVNTTCAzLjAwIHNlY3Rpb24gOC44Ci1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwg
VGV4dHVyZVByb2pPZmZzZXROb25Db25zdCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4i
Ci0gICAgICAgICJ1bmlmb3JtIHZlYzQgdV90ZXhDb29yZDtcbiIKLSAgICAgICAgInVuaWZvcm0g
bWVkaXVtcCBzYW1wbGVyM0QgdV9zYW1wbGVyO1xuIgotICAgICAgICAidW5pZm9ybSBpbnQgeDtc
biIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICBt
eV9GcmFnQ29sb3IgPSB0ZXh0dXJlUHJvak9mZnNldCh1X3NhbXBsZXIsIHVfdGV4Q29vcmQsIGl2
ZWMzKHgsIDMsIC04KSwgMC4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUo
c2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0
aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19
Ci0KLS8vIFRlc3QgdGhhdCBhbiBvdXQtb2YtcmFuZ2UgdGV4dHVyZSBvZmZzZXQgaXMgbm90IGFj
Y2VwdGVkLgotLy8gR0xFUyAzLjAuNCBzZWN0aW9uIDMuOC4xMCBzcGVjaWZpZXMgdGhhdCBvdXQt
b2YtcmFuZ2Ugb2Zmc2V0IGhhcyB1bmRlZmluZWQgYmVoYXZpb3IuCi1URVNUX0YoTWFsZm9ybWVk
U2hhZGVyVGVzdCwgVGV4dHVyZUxvZE9mZnNldE91dE9mUmFuZ2UpCi17Ci0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlf
RnJhZ0NvbG9yO1xuIgotICAgICAgICAidW5pZm9ybSB2ZWMzIHVfdGV4Q29vcmQ7XG4iCi0gICAg
ICAgICJ1bmlmb3JtIG1lZGl1bXAgc2FtcGxlcjNEIHVfc2FtcGxlcjtcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB0
ZXh0dXJlTG9kT2Zmc2V0KHVfc2FtcGxlciwgdV90ZXhDb29yZCwgMC4wLCBpdmVjMygwLCAwLCA4
KSk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0g
ICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4
cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQg
ZGVmYXVsdCBwcmVjaXNpb24gcXVhbGlmaWVyIGZvciB1aW50IGlzIG5vdCBhY2NlcHRlZC4KLS8v
IEVTU0wgMy4wMC40IHNlY3Rpb24gNC41LjQ6IE9ubHkgYWxsb3dlZCBmb3IgZmxvYXQsIGludCBh
bmQgc2FtcGxlciB0eXBlcy4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBEZWZhdWx0UHJl
Y2lzaW9uVWludCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCB1aW50O1xuIgotICAgICAgICAib3V0
IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAg
IntcbiIKLSAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKLSAgICAgICAg
In1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZB
SUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUg
IiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCBzYW1wbGVyM0QgbmVlZHMg
dG8gYmUgcHJlY2lzaW9uIHF1YWxpZmllZC4KLS8vIEVTU0wgMy4wMC40IHNlY3Rpb24gNC41LjQ6
IE5ldyBFU1NMIDMuMDAgc2FtcGxlciB0eXBlcyBkb24ndCBoYXZlIHByZWRlZmluZWQgcHJlY2lz
aW9uLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIE5vUHJlY2lzaW9uU2FtcGxlcjNEKQot
ewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNp
b24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAg
ICAgInVuaWZvcm0gc2FtcGxlcjNEIHM7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29s
b3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAi
ICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAo
Y29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIg
Y29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwot
ICAgIH0KLX0KLQotLy8gVGVzdCB0aGF0IHVzaW5nIGEgbm9uLWNvbnN0YW50IGV4cHJlc3Npb24g
aW4gYSBmb3IgbG9vcCBpbml0aWFsaXplciBpcyBmb3JiaWRkZW4gaW4gV2ViR0wgMS4wLAotLy8g
ZXZlbiB3aGVuIEFOR0xFIGlzIGFibGUgdG8gY29uc3RhbnQgZm9sZCB0aGUgaW5pdGlhbGl6ZXIu
Ci0vLyBFU1NMIDEuMDAgQXBwZW5kaXggQS4KLVRFU1RfRihNYWxmb3JtZWRXZWJHTDFTaGFkZXJU
ZXN0LCBOb25Db25zdGFudExvb3BJbmRleCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAg
ICAidW5pZm9ybSBpbnQgdTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7
XG4iCi0gICAgICAgICIgICAgZm9yIChpbnQgaSA9ICh0cnVlID8gMSA6IHUpOyBpIDwgNTsgKytp
KSB7XG4iCi0gICAgICAgICIgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKLSAg
ICAgICAgIiAgICB9XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0
cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNj
ZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBS
ZWdyZXNzaW9uIHRlc3QgZm9yIGFuIG9sZCBjcmFzaCBidWcgaW4gQU5HTEUuCi0vLyBGb3JMb29w
VW5yb2xsIHVzZWQgdG8gY3Jhc2ggd2hlbiBpdCBlbmNvdW50ZXJlZCBhIHdoaWxlIGxvb3AuCi1U
RVNUX0YoVW5yb2xsRm9yTG9vcHNUZXN0LCBXaGlsZUxvb3ApCi17Ci0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc
biIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAg
d2hpbGUgKHRydWUpIHtcbiIKLSAgICAgICAgIiAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgw
LjApO1xuIgotICAgICAgICAiICAgICAgICBicmVhaztcbiIKLSAgICAgICAgIiAgICB9XG4iCi0g
ICAgICAgICJ9XG4iOwotICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAg
ICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3Vj
Y2VzcyAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gUmVncmVzc2lvbiB0ZXN0IGZvciBh
biBvbGQgY3Jhc2ggYnVnIGluIEFOR0xFLgotLy8gRm9yTG9vcFVucm9sbCB1c2VkIHRvIGNyYXNo
IHdoZW4gaXQgZW5jb3VudGVyZWQgYSBsb29wIHRoYXQgZGlkbid0IGZpdCB0aGUgRVNTTCAxLjAw
Ci0vLyBBcHBlbmRpeCBBIGxpbWl0YXRpb25zLgotVEVTVF9GKFVucm9sbEZvckxvb3BzVGVzdCwg
VW5saW1pdGVkRm9yTG9vcCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5n
ID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidm9pZCBt
YWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBmb3IgKDt0cnVlOykge1xuIgot
ICAgICAgICAiICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICIg
ICAgICAgIGJyZWFrO1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAgIn1cbiI7Ci0gICAg
aWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNo
YWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7
Ci0gICAgfQotfQotCi0vLyBDaGVjayB0aGF0IGluZGljZXMgdGhhdCBhcmUgbm90IGludGVnZXJz
IGFyZSByZWplY3RlZC4KLS8vIFRoZSBjaGVjayBzaG91bGQgYmUgZG9uZSBldmVuIGlmIEVTU0wg
MS4wMCBBcHBlbmRpeCBBIGxpbWl0YXRpb25zIGFyZSBub3QgYXBwbGllZC4KLVRFU1RfRihNYWxm
b3JtZWRTaGFkZXJUZXN0LCBOb25JbnRlZ2VySW5kZXgpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
LSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgZmxv
YXQgZlszXTtcbiIKLSAgICAgICAgIiAgICBjb25zdCBmbG9hdCBpID0gMi4wO1xuIgotICAgICAg
ICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoZltpXSk7XG4iCi0gICAgICAgICJ9XG4iOwotICAg
IGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNo
YWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9M
b2c7Ci0gICAgfQotfQotCi0vLyBFU1NMMSBzaGFkZXJzIHdpdGggYSBkdXBsaWNhdGUgZnVuY3Rp
b24gcHJvdG90eXBlIHNob3VsZCBiZSByZWplY3RlZC4KLS8vIEVTU0wgMS4wMC4xNyBzZWN0aW9u
IDQuMi43LgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIER1cGxpY2F0ZVByb3RvdHlwZUVT
U0wxKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lkIGZvbygpO1xuIgotICAg
ICAgICAidm9pZCBmb28oKTtcbiIKLSAgICAgICAgInZvaWQgZm9vKCkge31cbiIKLSAgICAgICAg
InZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9y
ID0gdmVjNCgwLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJT
dHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3Vj
Y2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8g
RVNTTDMgc2hhZGVycyB3aXRoIGEgZHVwbGljYXRlIGZ1bmN0aW9uIHByb3RvdHlwZSBzaG91bGQg
YmUgYWxsb3dlZC4KLS8vIEVTU0wgMy4wMC40IHNlY3Rpb24gNC4yLjMuCi1URVNUX0YoTWFsZm9y
bWVkU2hhZGVyVGVzdCwgRHVwbGljYXRlUHJvdG90eXBlRVNTTDMpCi17Ci0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlf
RnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBmb28oKTtcbiIKLSAgICAgICAgInZvaWQgZm9v
KCk7XG4iCi0gICAgICAgICJ2b2lkIGZvbygpIHt9XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxu
IgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtc
biIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAg
ewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGlu
ZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBTaGFkZXJzIHdpdGggYSBs
b2NhbCBmdW5jdGlvbiBwcm90b3R5cGUgc2hvdWxkIGJlIHJlamVjdGVkLgotLy8gRVNTTCAzLjAw
LjQgc2VjdGlvbiA0LjIuNC4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBMb2NhbEZ1bmN0
aW9uUHJvdG90eXBlKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQot
ICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgdm9pZCBmb28oKTtcbiIK
LSAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9XG4i
OwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkg
PDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwg
bUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBFU1NMIDMuMDAgZnJhZ21lbnQgc2hhZGVycyBjYW4g
bm90IHVzZSAjcHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpLgotLy8gRVNTTCAzLjAwLjQgc2Vj
dGlvbiA0LjYuMS4gRG9lcyBub3QgYXBwbHkgdG8gb3RoZXIgdmVyc2lvbnMgb2YgRVNTTC4KLVRF
U1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBFU1NMMzAwRnJhZ21lbnRJbnZhcmlhbnRBbGwpCi17
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lv
biAzMDAgZXNcbiIKLSAgICAgICAgIiNwcmFnbWEgU1RER0wgaW52YXJpYW50KGFsbClcbiIKLSAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlf
RnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAg
ICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9XG4iOwot
ICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwg
IlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUlu
Zm9Mb2c7Ci0gICAgfQotfQotCi0vLyBCdWlsdC1pbiBmdW5jdGlvbnMgY2FuIGJlIG92ZXJsb2Fk
ZWQgaW4gRVNTTCAxLjAwLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIEVTU0wxMDBCdWls
dEluRnVuY3Rpb25PdmVybG9hZCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAiaW50
IHNpbihpbnQgeClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICByZXR1cm4gaW50KHNp
bihmbG9hdCh4KSkpO1xuIgotICAgICAgICAifVxuIgotICAgICAgICAidm9pZCBtYWluKClcbiIK
LSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoc2luKDEpKTsi
Ci0gICAgICAgICJ9XG4iOwotICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsK
LSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcg
c3VjY2VzcyAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gQnVpbHQtaW4gZnVuY3Rpb25z
IGNhbiBub3QgYmUgb3ZlcmxvYWRlZCBpbiBFU1NMIDMuMDAuCi1URVNUX0YoTWFsZm9ybWVkU2hh
ZGVyVGVzdCwgRVNTTDMwMEJ1aWx0SW5GdW5jdGlvbk92ZXJsb2FkKQotewotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0g
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15
X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgImludCBzaW4oaW50IHgpXG4iCi0gICAgICAgICJ7XG4i
Ci0gICAgICAgICIgICAgcmV0dXJuIGludChzaW4oZmxvYXQoeCkpKTtcbiIKLSAgICAgICAgIn1c
biIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICBt
eV9GcmFnQ29sb3IgPSB2ZWM0KHNpbigxKSk7IgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29t
cGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29t
cGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAg
IH0KLX0KLQotLy8gTXVsdGlwbHlpbmcgYSA0eDIgbWF0cml4IHdpdGggYSA0eDIgbWF0cml4IHNo
b3VsZCBub3Qgd29yay4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBDb21wb3VuZE11bHRp
cGx5TWF0cml4SWRlbnRpY2FsTm9uU3F1YXJlRGltZW5zaW9ucykKLXsKLSAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9G
cmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAg
ICAgICAiICAgbWF0NHgyIGZvbztcbiIKLSAgICAgICAgIiAgIGZvbyAqPSBtYXQ0eDIoNC4wKTtc
biIKLSAgICAgICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKLSAgICAgICAgIn1c
biI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwo
KSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8
PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIE11bHRpcGx5aW5nIGEgbWF0cml4IHdpdGggMiBj
b2x1bW5zIGFuZCA0IHJvd3Mgd2l0aCBhIDJ4MiBtYXRyaXggc2hvdWxkIHdvcmsuCi1URVNUX0Yo
TWFsZm9ybWVkU2hhZGVyVGVzdCwgQ29tcG91bmRNdWx0aXBseU1hdHJpeFZhbGlkTm9uU3F1YXJl
RGltZW5zaW9ucykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgbWF0Mng0IGZvbztcbiIKLSAg
ICAgICAgIiAgIGZvbyAqPSBtYXQyeDIoNC4wKTtcbiIKLSAgICAgICAgIiAgIG15X0ZyYWdDb2xv
ciA9IHZlYzQoMC4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21waWxlKHNoYWRl
clN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBm
YWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBD
b3ZlcnMgYSBidWcgd2hlcmUgd2Ugd291bGQgc2V0IHRoZSBpbmNvcnJlY3QgcmVzdWx0IHNpemUg
b24gYW4gb3V0LW9mLWJvdW5kcyB2ZWN0b3Igc3dpenpsZS4KLVRFU1RfRihNYWxmb3JtZWRTaGFk
ZXJUZXN0LCBPdXRPZkJvdW5kc1ZlY3RvclN3aXp6bGUpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIg
ICB2ZWMyKDApLnFxO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJT
dHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3Vj
Y2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8g
Q292ZXJzIGEgYnVnIHdoZXJlIHN0cmFuZ2UgcHJlcHJvY2Vzc29yIGRlZmluZXMgY291bGQgdHJp
Z2dlciBhc3NlcnRzLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIERlZmluZVdpdGhTZW1p
Y29sb24pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAg
ICIjZGVmaW5lIERlZjsgaGlnaHBcbiIKLSAgICAgICAgInVuaWZvcm0gRGVmIHZlYzIgYTtcbiI7
Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8
PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBt
SW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIENvdmVycyBhIGJ1ZyBpbiBvdXIgcGFyc2luZyBvZiBt
YWxmb3JtZWQgc2hpZnQgcHJlcHJvY2Vzc29yIGV4cHJlc3Npb25zLgotVEVTVF9GKE1hbGZvcm1l
ZFNoYWRlclRlc3QsIExpbmVEaXJlY3RpdmVVbmRlZmluZWRTaGlmdCkKLXsKLSAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0gIiNsaW5lIHggPDwgeSI7Ci0gICAgaWYgKGNvbXBp
bGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBp
bGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9
Ci19Ci0KLS8vIENvdmVycyBhIGJ1ZyBpbiBvdXIgcGFyc2luZyBvZiBtYWxmb3JtZWQgc2hpZnQg
cHJlcHJvY2Vzc29yIGV4cHJlc3Npb25zLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIExp
bmVEaXJlY3RpdmVOZWdhdGl2ZVNoaWZ0KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPSAiI2xpbmUgeCA8PCAtMSI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5n
KSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRl
ZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIGdsX01h
eEltYWdlVW5pdHMgaXMgb25seSBhdmFpbGFibGUgaW4gRVMgMy4xIHNoYWRlcnMuCi1URVNUX0Yo
TWFsZm9ybWVkU2hhZGVyVGVzdCwgTWF4SW1hZ2VVbml0c0luRVMzU2hhZGVyKQotewotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2
ZWM0IG15T3V0cHV0OyIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGZs
b2F0IGZmID0gZmxvYXQoZ2xfTWF4SW1hZ2VVbml0cyk7XG4iCi0gICAgICAgICIgICBteU91dHB1
dCA9IHZlYzQoZmYpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJT
dHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3Vj
Y2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8g
c3RydWN0ICs9IHN0cnVjdCBpcyBhbiBpbnZhbGlkIG9wZXJhdGlvbi4KLVRFU1RfRihNYWxmb3Jt
ZWRTaGFkZXJUZXN0LCBTdHJ1Y3RDb21wb3VuZEFzc2lnblN0cnVjdCkKLXsKLSAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgot
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBt
eU91dHB1dDtcbiIKLSAgICAgICAgInN0cnVjdCBTIHsgZmxvYXQgZm9vOyB9O1xuIgotICAgICAg
ICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgUyBhLCBiO1xuIgotICAgICAgICAiICAg
YSArPSBiO1xuIgotICAgICAgICAiICAgbXlPdXRwdXQgPSB2ZWM0KDApO1xuIgotICAgICAgICAi
fVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJ
TCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAi
IDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gc3RydWN0ID09IGRpZmZlcmVudCBzdHJ1Y3Qg
aXMgYW4gaW52YWxpZCBvcGVyYXRpb24uCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgU3Ry
dWN0RXFEaWZmZXJlbnRTdHJ1Y3QpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0
cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlPdXRwdXQ7XG4iCi0gICAgICAg
ICJzdHJ1Y3QgUyB7IGZsb2F0IGZvbzsgfTtcbiIKLSAgICAgICAgInN0cnVjdCBTMiB7IGZsb2F0
IGZvb2JhcjsgfTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIFMg
YTtcbiIKLSAgICAgICAgIiAgIFMyIGI7XG4iCi0gICAgICAgICIgICBhID09IGI7XG4iCi0gICAg
ICAgICIgICBteU91dHB1dCA9IHZlYzQoMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChj
b21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBj
b21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0g
ICAgfQotfQotCi0vLyBDb21wdXRlIHNoYWRlcnMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lv
bnMgbG93ZXIgdGhhbiAzMTAuCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFZl
cnNpb24xMDApCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeD0xKSBpbjtc
biIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVy
U3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1
Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8v
IENvbXB1dGUgc2hhZGVycyBhcmUgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9ucyBsb3dlciB0aGFu
IDMxMC4KLVRFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgVmVyc2lvbjMwMCkKLXsK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9u
IDMwMCBlc1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgImxheW91dChsb2Nh
bF9zaXplX3g9MSkgaW47XG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlm
IChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRl
ciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7
Ci0gICAgfQotfQotCi0vLyBDb21wdXRlIHNoYWRlcnMgc2hvdWxkIGhhdmUgd29yayBncm91cCBz
aXplIHNwZWNpZmllZC4gSG93ZXZlciwgaXQgaXMgbm90IGEgY29tcGlsZSB0aW1lIGVycm9yCi0v
LyB0byBub3QgaGF2ZSB0aGUgc2l6ZSBzcGVjaWZpZWQsIGJ1dCByYXRoZXIgYSBsaW5rIHRpbWUg
b25lLgotLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIg
SW5wdXRzCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIE5vV29ya0dyb3VwU2l6
ZVNwZWNpZmllZCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAg
ICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAg
ICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykp
Ci0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4
cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBXb3JrIGdyb3Vw
IHNpemUgaXMgbGVzcyB0aGFuIDEuIEl0IHNob3VsZCBiZSBhdCBsZWFzdCAxLgotLy8gR0xTTCBF
UyAzLjEwIFJldmlzaW9uIDQsIDcuMS4zIENvbXB1dGUgU2hhZGVyIFNwZWNpYWwgVmFyaWFibGVz
Ci0vLyBUaGUgc3BlYyBpcyBub3QgY2xlYXIgd2hldGhlciBoYXZpbmcgYSBsb2NhbCBzaXplIHF1
YWxpZmllciBlcXVhbCB6ZXJvCi0vLyBpcyBjb3JyZWN0LgotLy8gVE9ETyAobXJhZGV2KTogQXNr
IHBlb3BsZSBmcm9tIEtocm9ub3MgdG8gY2xhcmlmeSB0aGUgc3BlYy4KLVRFU1RfRihNYWxmb3Jt
ZWRDb21wdXRlU2hhZGVyVGVzdCwgV29ya0dyb3VwU2l6ZVRvb1NtYWxsWGRpbWVuc2lvbikKLXsK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9u
IDMxMCBlc1xuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDApIGluO1xuIgotICAg
ICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAg
aWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hh
ZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xv
ZzsKLSAgICB9Ci19Ci0KLS8vIFdvcmsgZ3JvdXAgc2l6ZSBpcyBjb3JyZWN0IGZvciB0aGUgeCBh
bmQgeSBkaW1lbnNpb25zLCBidXQgbm90IGZvciB0aGUgeiBkaW1lbnNpb24uCi0vLyBHTFNMIEVT
IDMuMTAgUmV2aXNpb24gNCwgNy4xLjMgQ29tcHV0ZSBTaGFkZXIgU3BlY2lhbCBWYXJpYWJsZXMK
LVRFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgV29ya0dyb3VwU2l6ZVRvb1NtYWxs
WkRpbWVuc2lvbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAg
ICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9
IDQsIGxvY2FsX3NpemVfeSA9IDYsIGxvY2FsX3NpemVfeiA9IDApIGluO1xuIgotICAgICAgICAi
dm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNv
bXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNv
bXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAg
ICB9Ci19Ci0KLS8vIFdvcmsgZ3JvdXAgc2l6ZSBpcyBiaWdnZXIgdGhhbiB0aGUgbWluaW11bSBp
biB0aGUgeCBkaW1lbnNpb24uCi0vLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNC40LjEuMSBD
b21wdXRlIFNoYWRlciBJbnB1dHMKLVRFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwg
V29ya0dyb3VwU2l6ZVRvb0JpZ1hEaW1lbnNpb24pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImxh
eW91dChsb2NhbF9zaXplX3ggPSA5OTg5ODk5KSBpbjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigp
XG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRl
clN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBz
dWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0v
LyBXb3JrIGdyb3VwIHNpemUgaXMgYmlnZ2VyIHRoYW4gdGhlIG1pbmltdW0gaW4gdGhlIHkgZGlt
ZW5zaW9uLgotLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFk
ZXIgSW5wdXRzCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFdvcmtHcm91cFNp
emVUb29CaWdZRGltZW5zaW9uKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQotICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCi0gICAgICAgICJsYXlvdXQobG9jYWxf
c2l6ZV94ID0gNSwgbG9jYWxfc2l6ZV95ID0gOTk4OTg5OSkgaW47XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGls
ZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGls
YXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0K
LX0KLQotLy8gV29yayBncm91cCBzaXplIGlzIGRlZmluaXRlbHkgYmlnZ2VyIHRoYW4gdGhlIG1p
bmltdW0gaW4gdGhlIHogZGltZW5zaW9uLgotLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQu
NC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRl
clRlc3QsIFdvcmtHcm91cFNpemVUb29CaWdaRGltZW5zaW9uKQotewotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCi0gICAg
ICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gNSwgbG9jYWxfc2l6ZV95ID0gNSwgbG9jYWxfc2l6
ZV96ID0gOTk4OTg5OSkgaW47XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAi
e1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAg
IHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBl
Y3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gV29yayBncm91cCBz
aXplIHNwZWNpZmllZCB0aHJvdWdoIG1hY3JvIGV4cGFuc2lvbi4KLVRFU1RfRihNYWxmb3JtZWRD
b21wdXRlU2hhZGVyVGVzdCwgV29ya0dyb3VwU2l6ZU1hY3JvKQotewotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCi0gICAg
ICAgICIjZGVmaW5lIE1ZREVGKHgpIHgiCi0gICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0g
TVlERUYoMTI3KSkgaW47XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xu
IgotICAgICAgICAifVxuIjsKLSAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7
Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5n
IHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFdvcmsgZ3JvdXAgc2l6ZSBz
cGVjaWZpZWQgYXMgYW4gdW5zaWduZWQgaW50ZWdlci4KLVRFU1RfRihNYWxmb3JtZWRDb21wdXRl
U2hhZGVyVGVzdCwgV29ya0dyb3VwU2l6ZVVuc2lnbmVkSW50ZWdlcikKLXsKLSAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgot
ICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDEyM3UpIGluO1xuIgotICAgICAgICAidm9p
ZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21w
aWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7Ci0gICAgfQot
fQotCi0vLyBXb3JrIGdyb3VwIHNpemUgc3BlY2lmaWVkIGluIGhleGFkZWNpbWFsLgotVEVTVF9G
KE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBXb3JrR3JvdXBTaXplSGV4YWRlY2ltYWwpCi17
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lv
biAzMTAgZXNcbiIKLSAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSAweDNBKSBpbjtcbiIK
LSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICJ9XG4iOwot
ICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8
ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyAiIDw8IG1JbmZv
TG9nOwotICAgIH0KLX0KLQotLy8gbG9jYWxfc2l6ZV94IGlzIC0xIGluIGhleGFkZWNpbWFsIGZv
cm1hdC4KLS8vIC0xIGlzIHVzZWQgYXMgdW5zcGVjaWZpZWQgdmFsdWUgaW4gdGhlIFRMYXlvdXRR
dWFsaWZpZXIgc3RydWN0dXJlLgotVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBX
b3JrR3JvdXBTaXplTWludXNPbmVIZXhhZGVjaW1hbCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAi
bGF5b3V0KGxvY2FsX3NpemVfeCA9IDB4RkZGRkZGRkYpIGluO1xuIgotICAgICAgICAidm9pZCBt
YWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUo
c2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0
aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19
Ci0KLS8vIFdvcmsgZ3JvdXAgc2l6ZSBzcGVjaWZpZWQgaW4gb2N0YWwuCi1URVNUX0YoTWFsZm9y
bWVkQ29tcHV0ZVNoYWRlclRlc3QsIFdvcmtHcm91cFNpemVPY3RhbCkKLXsKLSAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgot
ICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDAxMykgaW47XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoIWNvbXBp
bGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBp
bGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19
Ci0KLS8vIFdvcmsgZ3JvdXAgc2l6ZSBpcyBuZWdhdGl2ZS4gSXQgaXMgc3BlY2lmaWVkIGluIGhl
eGFkZWNpbWFsLgotVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBXb3JrR3JvdXBT
aXplTmVnYXRpdmVIZXhhZGVjaW1hbCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAibGF5b3V0KGxv
Y2FsX3NpemVfeCA9IDB4RkZGRkZGRUMpIGluO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIK
LSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3Ry
aW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2Nl
ZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIE11
bHRpcGxlIHdvcmsgZ3JvdXAgbGF5b3V0IHF1YWxpZmllcnMgd2l0aCBkaWZmZXJpbmcgdmFsdWVz
LgotLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5w
dXRzCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIERpZmZlcmluZ0xheW91dFF1
YWxpZmllcnMpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSA1
LCBsb2NhbF9zaXplX3ggPSA2KSBpbjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAg
ICAgICJ7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykp
Ci0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQs
IGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBNdWx0aXBs
ZSB3b3JrIGdyb3VwIGlucHV0IHZhcmlhYmxlcyB3aXRoIGRpZmZlcmluZyBsb2NhbCBzaXplIHZh
bHVlcy4KLS8vIEdMU0wgRVMgMy4xMCBSZXZpc2lvbiA0LCA0LjQuMS4xIENvbXB1dGUgU2hhZGVy
IElucHV0cwotVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBNdWx0aXBsZUlucHV0
VmFyaWFibGVzRGlmZmVyaW5nTG9jYWxTaXplKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCi0gICAgICAgICJsYXlv
dXQobG9jYWxfc2l6ZV94ID0gNSwgbG9jYWxfc2l6ZV95ID0gNikgaW47XG4iCi0gICAgICAgICJs
YXlvdXQobG9jYWxfc2l6ZV94ID0gNSwgbG9jYWxfc2l6ZV95ID0gNykgaW47XG4iCi0gICAgICAg
ICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAo
Y29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIg
Y29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwot
ICAgIH0KLX0KLQotLy8gTXVsdGlwbGUgd29yayBncm91cCBpbnB1dCB2YXJpYWJsZXMgd2l0aCBk
aWZmZXJpbmcgbG9jYWwgc2l6ZSB2YWx1ZXMuCi0vLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwg
NC40LjEuMSBDb21wdXRlIFNoYWRlciBJbnB1dHMKLVRFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hh
ZGVyVGVzdCwgTXVsdGlwbGVJbnB1dFZhcmlhYmxlc0RpZmZlcmluZ0xvY2FsU2l6ZTIpCi17Ci0g
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAz
MTAgZXNcbiIKLSAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSA1KSBpbjtcbiIKLSAgICAg
ICAgImxheW91dChsb2NhbF9zaXplX3ggPSA1LCBsb2NhbF9zaXplX3kgPSA3KSBpbjtcbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICJ9XG4iOwotICAg
IGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNo
YWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9M
b2c7Ci0gICAgfQotfQotCi0vLyBNdWx0aXBsZSB3b3JrIGdyb3VwIGlucHV0IHZhcmlhYmxlcyB3
aXRoIHRoZSBzYW1lIGxvY2FsIHNpemUgdmFsdWVzLiBJdCBzaG91bGQgY29tcGlsZS4KLS8vIEdM
U0wgRVMgMy4xMCBSZXZpc2lvbiA0LCA0LjQuMS4xIENvbXB1dGUgU2hhZGVyIElucHV0cwotVEVT
VF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBNdWx0aXBsZUlucHV0VmFyaWFibGVzU2Ft
ZUxvY2FsU2l6ZSkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAg
ICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9
IDUsIGxvY2FsX3NpemVfeSA9IDYpIGluO1xuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVf
eCA9IDUsIGxvY2FsX3NpemVfeSA9IDYpIGluO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIK
LSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21waWxlKHNoYWRlclN0
cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWls
ZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBNdWx0
aXBsZSB3b3JrIGdyb3VwIGlucHV0IHZhcmlhYmxlcyB3aXRoIHRoZSBzYW1lIGxvY2FsIHNpemUg
dmFsdWVzLiBJdCBzaG91bGQgY29tcGlsZS4KLS8vIFNpbmNlIHRoZSBkZWZhdWx0IHZhbHVlIGlz
IDEsIGl0IHNob3VsZCBjb21waWxlLgotLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4x
LjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRl
c3QsIE11bHRpcGxlSW5wdXRWYXJpYWJsZXNTYW1lTG9jYWxTaXplMikKLXsKLSAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgot
ICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDUpIGluO1xuIgotICAgICAgICAibGF5b3V0
KGxvY2FsX3NpemVfeCA9IDUsIGxvY2FsX3NpemVfeSA9IDEpIGluO1xuIgotICAgICAgICAidm9p
ZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21w
aWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21w
aWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9Mb2c7Ci0gICAgfQot
fQotCi0vLyBNdWx0aXBsZSB3b3JrIGdyb3VwIGlucHV0IHZhcmlhYmxlcyB3aXRoIHRoZSBzYW1l
IGxvY2FsIHNpemUgdmFsdWVzLiBJdCBzaG91bGQgY29tcGlsZS4KLS8vIFNpbmNlIHRoZSBkZWZh
dWx0IHZhbHVlIGlzIDEsIGl0IHNob3VsZCBjb21waWxlLgotLy8gR0xTTCBFUyAzLjEwIFJldmlz
aW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCi1URVNUX0YoTWFsZm9ybWVkQ29t
cHV0ZVNoYWRlclRlc3QsIE11bHRpcGxlSW5wdXRWYXJpYWJsZXNTYW1lTG9jYWxTaXplMykKLXsK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9u
IDMxMCBlc1xuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDUsIGxvY2FsX3NpemVf
eSA9IDEpIGluO1xuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDUpIGluO1xuIgot
ICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0g
ICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwg
IlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIgPDwgbUluZm9M
b2c7Ci0gICAgfQotfQotCi0vLyBTcGVjaWZ5aW5nIHJvd19tYWpvciBxdWFsaWZpZXIgaW4gYSB3
b3JrIGdyb3VwIHNpemUgbGF5b3V0LgotLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4x
LjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRl
c3QsIFJvd01ham9ySW5Db21wdXRlSW5wdXRMYXlvdXQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAg
ImxheW91dChsb2NhbF9zaXplX3ggPSA1LCByb3dfbWFqb3IpIGluO1xuIgotICAgICAgICAidm9p
ZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBp
bGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBp
bGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9
Ci19Ci0KLS8vIGxvY2FsIHNpemUgbGF5b3V0IGNhbiBiZSB1c2VkIG9ubHkgd2l0aCBjb21wdXRl
IGlucHV0IHZhcmlhYmxlcwotLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29t
cHV0ZSBTaGFkZXIgSW5wdXRzCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFVu
aWZvcm1Db21wdXRlSW5wdXRMYXlvdXQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRl
clN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImxheW91dChs
b2NhbF9zaXplX3ggPSA1KSB1bmlmb3JtO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAg
ICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5n
KSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRl
ZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIGxvY2Fs
IHNpemUgbGF5b3V0IGNhbiBiZSB1c2VkIG9ubHkgd2l0aCBjb21wdXRlIGlucHV0IHZhcmlhYmxl
cwotLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5w
dXRzCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFVuaWZvcm1CdWZmZXJDb21w
dXRlSW5wdXRMYXlvdXQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9
Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImxheW91dChsb2NhbF9zaXpl
X3ggPSA1KSB1bmlmb3JtIFNvbWVCdWZmZXIgeyB2ZWM0IHNvbWV0aGluZzsgfTtcbiIKLSAgICAg
ICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlm
IChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRl
ciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7
Ci0gICAgfQotfQotCi0vLyBsb2NhbCBzaXplIGxheW91dCBjYW4gYmUgdXNlZCBvbmx5IHdpdGgg
Y29tcHV0ZSBpbnB1dCB2YXJpYWJsZXMKLS8vIEdMU0wgRVMgMy4xMCBSZXZpc2lvbiA0LCA0LjQu
MS4xIENvbXB1dGUgU2hhZGVyIElucHV0cwotVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJU
ZXN0LCBTdHJ1Y3RDb21wdXRlSW5wdXRMYXlvdXQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImxh
eW91dChsb2NhbF9zaXplX3ggPSA1KSBzdHJ1Y3QgU29tZUJ1ZmZlciB7IHZlYzQgc29tZXRoaW5n
OyB9O1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAg
In1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZB
SUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUg
IiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIGxvY2FsIHNpemUgbGF5b3V0IGNhbiBiZSB1
c2VkIG9ubHkgd2l0aCBjb21wdXRlIGlucHV0IHZhcmlhYmxlcwotLy8gR0xTTCBFUyAzLjEwIFJl
dmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFkZXIgSW5wdXRzCi1URVNUX0YoTWFsZm9ybWVk
Q29tcHV0ZVNoYWRlclRlc3QsIFN0cnVjdEJvZHlDb21wdXRlSW5wdXRMYXlvdXQpCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAg
ZXNcbiIKLSAgICAgICAgInN0cnVjdCBTIHtcbiIKLSAgICAgICAgIiAgIGxheW91dChsb2NhbF9z
aXplX3ggPSAxMikgdmVjNCBmb287XG4iCi0gICAgICAgICJ9O1xuIgotICAgICAgICAidm9pZCBt
YWluKCkiCi0gICAgICAgICJ7IgotICAgICAgICAifSI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVy
U3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1
Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8v
IGxvY2FsIHNpemUgbGF5b3V0IGNhbiBiZSB1c2VkIG9ubHkgd2l0aCBjb21wdXRlIGlucHV0IHZh
cmlhYmxlcwotLy8gR0xTTCBFUyAzLjEwIFJldmlzaW9uIDQsIDQuNC4xLjEgQ29tcHV0ZSBTaGFk
ZXIgSW5wdXRzCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNoYWRlclRlc3QsIFR5cGVDb21wdXRl
SW5wdXRMYXlvdXQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0g
ICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImxheW91dChsb2NhbF9zaXplX3gg
PSA1KSB2ZWM0O1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAg
ICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAg
ICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZh
aWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEludmFsaWQgdXNlIG9mIHRoZSBv
dXQgc3RvcmFnZSBxdWFsaWZpZXIgaW4gYSBjb21wdXRlIHNoYWRlci4KLS8vIEdMU0wgRVMgMy4x
MCBSZXZpc2lvbiA0LCA0LjQuMS4xIENvbXB1dGUgU2hhZGVyIElucHV0cwotVEVTVF9GKE1hbGZv
cm1lZENvbXB1dGVTaGFkZXJUZXN0LCBJbnZhbGlkT3V0U3RvcmFnZVF1YWxpZmllcikKLXsKLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMx
MCBlc1xuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeCA9IDE1KSBpbjtcbiIKLSAgICAg
ICAgIm91dCB2ZWM0IG15T3V0cHV0O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAg
ICAgICAifVxuIjsKLQotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAg
ICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBm
YWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBJbnZhbGlkIHVzZSBvZiB0aGUg
b3V0IHN0b3JhZ2UgcXVhbGlmaWVyIGluIGEgY29tcHV0ZSBzaGFkZXIuCi0vLyBHTFNMIEVTIDMu
MTAgUmV2aXNpb24gNCwgNC40LjEuMSBDb21wdXRlIFNoYWRlciBJbnB1dHMKLVRFU1RfRihNYWxm
b3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgSW52YWxpZE91dFN0b3JhZ2VRdWFsaWZpZXIyKQotewot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24g
MzEwIGVzXG4iCi0gICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gMTUpIGluO1xuIgotICAg
ICAgICAib3V0IG15T3V0cHV0O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAg
ICAifVxuIjsKLQotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAg
ICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWls
dXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBJbnZhbGlkIHVzZSBvZiB0aGUgaW4g
c3RvcmFnZSBxdWFsaWZpZXIuIENhbiBiZSBvbmx5IHVzZWQgdG8gZGVzY3JpYmUgdGhlIGxvY2Fs
IGJsb2NrIHNpemUuCi0vLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwgNC40LjEuMSBDb21wdXRl
IFNoYWRlciBJbnB1dHMKLVRFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgSW52YWxp
ZEluU3RvcmFnZVF1YWxpZmllcikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAibGF5b3V0KGxvY2Fs
X3NpemVfeCA9IDE1KSBpbjtcbiIKLSAgICAgICAgImluIHZlYzQgbXlJbnB1dDtcbiIKLSAgICAg
ICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBpZiAoY29tcGlsZShz
aGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRp
b24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0K
LQotLy8gSW52YWxpZCB1c2Ugb2YgdGhlIGluIHN0b3JhZ2UgcXVhbGlmaWVyLiBDYW4gYmUgb25s
eSB1c2VkIHRvIGRlc2NyaWJlIHRoZSBsb2NhbCBibG9jayBzaXplLgotLy8gVGhlIHRlc3QgY2hl
Y2tzIGEgZGlmZmVyZW50IHBhcnQgb2YgdGhlIEdMU0wgZ3JhbW1hciB0aGFuIHdoYXQgSW52YWxp
ZEluU3RvcmFnZVF1YWxpZmllciBjaGVja3MuCi0vLyBHTFNMIEVTIDMuMTAgUmV2aXNpb24gNCwg
NC40LjEuMSBDb21wdXRlIFNoYWRlciBJbnB1dHMKLVRFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hh
ZGVyVGVzdCwgSW52YWxpZEluU3RvcmFnZVF1YWxpZmllcjIpCi17Ci0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAg
ICAgImxheW91dChsb2NhbF9zaXplX3ggPSAxNSkgaW47XG4iCi0gICAgICAgICJpbiBteUlucHV0
O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGlm
IChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRl
ciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7
Ci0gICAgfQotfQotCi0vLyBUaGUgbG9jYWxfc2l6ZSBsYXlvdXQgcXVhbGlmaWVyIGlzIG9ubHkg
YXZhaWxhYmxlIGluIGNvbXB1dGUgc2hhZGVycy4KLVRFU1RfRihNYWxmb3JtZWRWZXJ0ZXhTaGFk
ZXJHTEVTMzFUZXN0LCBJbnZhbGlkVXNlT2ZMb2NhbFNpemVYKQotewotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCi0gICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImxheW91dChsb2NhbF9z
aXplX3ggPSAxNSkgaW4gdmVjNCBteUlucHV0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlPdXRw
dXQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBteU91dHB1dCA9
IG15SW5wdXQ7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3Ry
aW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2Nl
ZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFRo
ZSBsb2NhbF9zaXplIGxheW91dCBxdWFsaWZpZXIgaXMgb25seSBhdmFpbGFibGUgaW4gY29tcHV0
ZSBzaGFkZXJzLgotVEVTVF9GKE1hbGZvcm1lZEZyYWdtZW50U2hhZGVyR0xFUzMxVGVzdCwgSW52
YWxpZFVzZU9mTG9jYWxTaXplWCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gMTUpIGluIHZl
YzQgbXlJbnB1dDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15T3V0cHV0O1xuIgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgbXlPdXRwdXQgPSBteUlucHV0O1xuIgotICAg
ICAgICAifVxuIjsKLQotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAg
ICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBm
YWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBJdCBpcyBhIGNvbXBpbGUgdGlt
ZSBlcnJvciB0byB1c2UgdGhlIGdsX1dvcmtHcm91cFNpemUgY29uc3RhbnQgaWYKLS8vIHRoZSBs
b2NhbCBzaXplIGhhcyBub3QgYmVlbiBkZWNsYXJlZCB5ZXQuCi0vLyBHTFNMIEVTIDMuMTAgUmV2
aXNpb24gNCwgNy4xLjMgQ29tcHV0ZSBTaGFkZXIgU3BlY2lhbCBWYXJpYWJsZXMKLVRFU1RfRihN
YWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgSW52YWxpZFVzYWdlT2ZXb3JrR3JvdXBTaXplKQot
ewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNp
b24gMzEwIGVzXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAg
ICAgICAiICAgdXZlYzMgV29ya0dyb3VwU2l6ZSA9IGdsX1dvcmtHcm91cFNpemU7XG4iCi0gICAg
ICAgICJ9XG4iCi0gICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gMTIpIGluO1xuIjsKLSAg
ICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJT
aGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZv
TG9nOwotICAgIH0KLX0KLQotLy8gVGhlIHRlc3QgY292ZXJzIHRoZSBjb21wdXRlIHNoYWRlciBi
dWlsdC1pbiB2YXJpYWJsZXMgYW5kIGNvbnN0YW50cy4KLVRFU1RfRihNYWxmb3JtZWRDb21wdXRl
U2hhZGVyVGVzdCwgQ29ycmVjdFVzYWdlT2ZDb21wdXRlQnVpbHRpbnMpCi17Ci0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIK
LSAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSAxMikgaW47XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgdXZlYzMgTnVtV29ya0dyb3Vw
cyA9IGdsX051bVdvcmtHcm91cHM7XG4iCi0gICAgICAgICIgICB1dmVjMyBXb3JrR3JvdXBTaXpl
ID0gZ2xfV29ya0dyb3VwU2l6ZTtcbiIKLSAgICAgICAgIiAgIHV2ZWMzIFdvcmtHcm91cElEID0g
Z2xfV29ya0dyb3VwSUQ7XG4iCi0gICAgICAgICIgICB1dmVjMyBHbG9iYWxJbnZvY2F0aW9uSUQg
PSBnbF9HbG9iYWxJbnZvY2F0aW9uSUQ7XG4iCi0gICAgICAgICIgICB1dmVjMyBMb2NhbEludm9j
YXRpb25JRCA9IGdsX0xvY2FsSW52b2NhdGlvbklEO1xuIgotICAgICAgICAiICAgdWludCBMb2Nh
bEludm9jYXRpb25JbmRleCA9IGdsX0xvY2FsSW52b2NhdGlvbkluZGV4O1xuIgotICAgICAgICAi
fVxuIjsKLSAgICBpZiAoIWNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZB
SUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MgIiA8
PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEl0IGlzIGlsbGVnYWwgdG8gd3JpdGUgdG8gYSBz
cGVjaWFsIHZhcmlhYmxlLgotVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBTcGVj
aWFsVmFyaWFibGVOdW1Xb3JrR3JvdXBzKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCi0gICAgICAgICJsYXlvdXQo
bG9jYWxfc2l6ZV94ID0gMTIpIGluO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAg
ICAgIntcbiIKLSAgICAgICAgIiAgIGdsX051bVdvcmtHcm91cHMgPSB1dmVjMygxKTsgXG4iCi0g
ICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAg
ICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBm
YWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBJdCBpcyBpbGxlZ2FsIHRvIHdy
aXRlIHRvIGEgc3BlY2lhbCB2YXJpYWJsZS4KLVRFU1RfRihNYWxmb3JtZWRDb21wdXRlU2hhZGVy
VGVzdCwgU3BlY2lhbFZhcmlhYmxlV29ya0dyb3VwSUQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAg
ImxheW91dChsb2NhbF9zaXplX3ggPSAxMikgaW47XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxu
IgotICAgICAgICAie1xuIgotICAgICAgICAiICAgZ2xfV29ya0dyb3VwSUQgPSB1dmVjMygxKTsg
XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAg
ewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVj
dGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBJdCBpcyBpbGxlZ2Fs
IHRvIHdyaXRlIHRvIGEgc3BlY2lhbCB2YXJpYWJsZS4KLVRFU1RfRihNYWxmb3JtZWRDb21wdXRl
U2hhZGVyVGVzdCwgU3BlY2lhbFZhcmlhYmxlTG9jYWxJbnZvY2F0aW9uSUQpCi17Ci0gICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNc
biIKLSAgICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSAxMikgaW47XG4iCi0gICAgICAgICJ2
b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgZ2xfTG9jYWxJbnZvY2F0
aW9uSUQgPSB1dmVjMygxKTsgXG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNo
YWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlv
biBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQot
Ci0vLyBJdCBpcyBpbGxlZ2FsIHRvIHdyaXRlIHRvIGEgc3BlY2lhbCB2YXJpYWJsZS4KLVRFU1Rf
RihNYWxmb3JtZWRDb21wdXRlU2hhZGVyVGVzdCwgU3BlY2lhbFZhcmlhYmxlR2xvYmFsSW52b2Nh
dGlvbklEKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAg
ICAiI3ZlcnNpb24gMzEwIGVzXG4iCi0gICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94ID0gMTIp
IGluO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAg
IiAgIGdsX0dsb2JhbEludm9jYXRpb25JRCA9IHV2ZWMzKDEpOyBcbiIKLSAgICAgICAgIn1cbiI7
Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8
PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBt
SW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEl0IGlzIGlsbGVnYWwgdG8gd3JpdGUgdG8gYSBzcGVj
aWFsIHZhcmlhYmxlLgotVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBTcGVjaWFs
VmFyaWFibGVMb2NhbEludm9jYXRpb25JbmRleCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAm
c2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAibGF5
b3V0KGxvY2FsX3NpemVfeCA9IDEyKSBpbjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0g
ICAgICAgICJ7XG4iCi0gICAgICAgICIgICBnbF9Mb2NhbEludm9jYXRpb25JbmRleCA9IDE7IFxu
IgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsK
LSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3Rp
bmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gSXQgaXMgaWxsZWdhbCB0
byB3cml0ZSB0byBhIHNwZWNpYWwgdmFyaWFibGUuCi1URVNUX0YoTWFsZm9ybWVkQ29tcHV0ZVNo
YWRlclRlc3QsIFNwZWNpYWxWYXJpYWJsZVdvcmtHcm91cFNpemUpCi17Ci0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAg
ICAgICAgImxheW91dChsb2NhbF9zaXplX3ggPSAxMikgaW47XG4iCi0gICAgICAgICJ2b2lkIG1h
aW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgZ2xfV29ya0dyb3VwU2l6ZSA9IHV2
ZWMzKDEpOyBcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5n
KSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRl
ZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEl0IGlz
IGlsbGVnYWwgdG8gYXBwbHkgYW4gdW5hcnkgb3BlcmF0b3IgdG8gYSBzYW1wbGVyLgotVEVTVF9G
KE1hbGZvcm1lZFNoYWRlclRlc3QsIFNhbXBsZXJVbmFyeU9wZXJhdG9yKQotewotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCBzO1xuIgotICAgICAgICAidm9p
ZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgIC1zO1xuIgotICAgICAgICAi
ICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKGNv
bXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNv
bXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAg
ICB9Ci19Ci0KLS8vIEludmFyaWFudCBjYW5ub3QgYmUgdXNlZCB3aXRoIGEgd29yayBncm91cCBz
aXplIGRlY2xhcmF0aW9uLgotVEVTVF9GKE1hbGZvcm1lZENvbXB1dGVTaGFkZXJUZXN0LCBJbnZh
cmlhbnRCbG9ja1NpemUpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9
Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImludmFyaWFudCBsYXlvdXQo
bG9jYWxfc2l6ZV94ID0gMTUpIGluO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAg
ICAgICAifVxuIjsKLQotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAg
ICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBm
YWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBJbnZhcmlhbnQgY2Fubm90IGJl
IHVzZWQgd2l0aCBhIG5vbi1vdXRwdXQgdmFyaWFibGUgaW4gRVNTTDMuCi1URVNUX0YoTWFsZm9y
bWVkU2hhZGVyVGVzdCwgSW52YXJpYW50Tm9uT3VwdXQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAg
ImludmFyaWFudCBpbnQgdmFsdWU7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAg
ICAgICJ9XG4iOwotCi0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAg
ICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZh
aWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEludmFyaWFudCBkZWNsYXJhdGlv
biBzaG91bGQgZm9sbG93IHRoZSBmb2xsb3dpbmcgZm9ybWF0ICJpbnZhcmlhbnQgPG91dCB2YXJp
YWJsZSBuYW1lPiIuCi0vLyBUZXN0IGhhdmluZyBhbiBpbmNvcnJlY3QgcXVhbGlmaWVyIGluIHRo
ZSBpbnZhcmlhbnQgZGVjbGFyYXRpb24uCi1URVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgSW52
YXJpYW50RGVjbGFyYXRpb25XaXRoU3RvcmFnZVF1YWxpZmllcikKLXsKLSAgICBjb25zdCBzdGQ6
OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBmb287
XG4iCi0gICAgICAgICJpbnZhcmlhbnQgY2VudHJvaWQgZm9vO1xuIgotICAgICAgICAidm9pZCBt
YWluKCkge1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcp
KQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVk
LCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gSW52YXJp
YW50IGRlY2xhcmF0aW9uIHNob3VsZCBmb2xsb3cgdGhlIGZvbGxvd2luZyBmb3JtYXQgImludmFy
aWFudCA8b3V0IHZhcmlhYmxlIG5hbWU+Ii4KLS8vIFRlc3QgaGF2aW5nIGFuIGluY29ycmVjdCBw
cmVjaXNpb24gcXVhbGlmaWVyIGluIHRoZSBpbnZhcmlhbnQgZGVjbGFyYXRpb24uCi1URVNUX0Yo
TWFsZm9ybWVkU2hhZGVyVGVzdCwgSW52YXJpYW50RGVjbGFyYXRpb25XaXRoUHJlY2lzaW9uUXVh
bGlmaWVyKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAg
ICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc
biIKLSAgICAgICAgIm91dCB2ZWM0IGZvbztcbiIKLSAgICAgICAgImludmFyaWFudCBoaWdocCBm
b287XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlm
IChjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRl
ciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7
Ci0gICAgfQotfQotCi0vLyBJbnZhcmlhbnQgZGVjbGFyYXRpb24gc2hvdWxkIGZvbGxvdyB0aGUg
Zm9sbG93aW5nIGZvcm1hdCAiaW52YXJpYW50IDxvdXQgdmFyaWFibGUgbmFtZT4iLgotLy8gVGVz
dCBoYXZpbmcgYW4gaW5jb3JyZWN0IGxheW91dCBxdWFsaWZpZXIgaW4gdGhlIGludmFyaWFudCBk
ZWNsYXJhdGlvbi4KLVRFU1RfRihNYWxmb3JtZWRTaGFkZXJUZXN0LCBJbnZhcmlhbnREZWNsYXJh
dGlvbldpdGhMYXlvdXRRdWFsaWZpZXIpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRl
clN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgZm9vO1xuIgotICAgICAgICAi
aW52YXJpYW50IGxheW91dChsb2NhdGlvbj0wKSBmb287XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZykpCi0g
ICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4
cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBWYXJpYWJsZSBk
ZWNsYXJhdGlvbiB3aXRoIGJvdGggaW52YXJpYW50IGFuZCBsYXlvdXQgcXVhbGlmaWVycyBpcyBu
b3QgdmFsaWQgaW4gdGhlIGZvcm1hbCBncmFtbWFyCi0vLyBwcm92aWRlZCBpbiB0aGUgRVNTTCAz
LjAwIHNwZWMuIEVTU0wgMy4xMCBzdGFydHMgYWxsb3dpbmcgdGhpcyBjb21iaW5hdGlvbiwgYnV0
IEVTU0wgMy4wMCBzaG91bGQKLS8vIHN0aWxsIGRpc2FsbG93IGl0LgotVEVTVF9GKE1hbGZvcm1l
ZFNoYWRlclRlc3QsIFZhcmlhYmxlRGVjbGFyYXRpb25XaXRoSW52YXJpYW50QW5kTGF5b3V0UXVh
bGlmaWVyRVNTTDMwMCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0K
LSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCi0gICAgICAgICJpbnZhcmlhbnQgbGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IHZl
YzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAi
fVxuIjsKLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJ
TCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAi
IDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gQml0IHNoaWZ0IHdpdGggYSByaHMgdmFsdWUg
PiAzMSBoYXMgYW4gdW5kZWZpbmVkIHJlc3VsdCBpbiB0aGUgR0xTTCBzcGVjLiBXZSBkaXNhbGxv
dyBpdC4KLS8vIEVTU0wgMy4wMC42IHNlY3Rpb24gNS45LgotVEVTVF9GKE1hbGZvcm1lZFNoYWRl
clRlc3QsIFNoaWZ0QnkzMikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5n
ID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICB1aW50
IHUgPSAxdSA8PCAzMnU7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmIChjb21waWxlKHNoYWRl
clN0cmluZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBz
dWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0v
LyBUZXN0IHRoYXQgZGVmZXJyaW5nIGdsb2JhbCB2YXJpYWJsZSBpbml0IHdvcmtzIHdpdGggYW4g
ZW1wdHkgbWFpbigpLgotVEVTVF9GKE1hbGZvcm1lZFNoYWRlclRlc3QsIERlZmVyR2xvYmFsVmFy
aWFibGVJbml0V2l0aEVtcHR5TWFpbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAi
dW5pZm9ybSBmbG9hdCB1O1xuIgotICAgICAgICAiZmxvYXQgZm9vID0gdTtcbiIKLSAgICAgICAg
InZvaWQgbWFpbigpIHt9XG4iOwotICAgIGlmICghY29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAg
IHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rp
bmcgc3VjY2VzcyAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gVGVzdCB0aGF0IHBydW5p
bmcgZW1wdHkgZGVjbGFyYXRpb25zIGZyb20gbG9vcCBpbml0IGV4cHJlc3Npb24gd29ya3MuCi1U
RVNUX0YoTWFsZm9ybWVkU2hhZGVyVGVzdCwgRW1wdHlEZWNsYXJhdGlvbkFzTG9vcEluaXQpCi17
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lv
biAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAg
ICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAg
ICAgICAgIntcbiIKLSAgICAgICAgIiAgICBpbnQgaSA9IDA7XG4iCi0gICAgICAgICIgICAgZm9y
IChpbnQ7IGkgPCAzOyBpKyspXG4iCi0gICAgICAgICIgICAge1xuIgotICAgICAgICAiICAgICAg
ICBteV9GcmFnQ29sb3IgPSB2ZWM0KGkpO1xuIgotICAgICAgICAiICAgIH1cbiIKLSAgICAgICAg
In1cbiI7Ci0gICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmluZykpCi0gICAgewotICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQsIGV4cGVjdGluZyBzdWNjZXNzICIg
PDwgbUluZm9Mb2c7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL05WX2RyYXdfYnVmZmVyc190ZXN0LmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9OVl9kcmF3X2J1
ZmZlcnNfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5YzQzYzkzY2Iy
Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29t
cGlsZXJfdGVzdHMvTlZfZHJhd19idWZmZXJzX3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MzkgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBOVl9kcmF3X2J1ZmZlcnNfdGVzdC5jcHA6Ci0v
LyAgIFRlc3QgZm9yIE5WX2RyYXdfYnVmZmVycyBzZXR0aW5nCi0vLwotCi0jaW5jbHVkZSAiYW5n
bGVfZ2wuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgIkdMU0xBTkcvU2hh
ZGVyTGFuZy5oIgotI2luY2x1ZGUgInRlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5oIgot
Ci1jbGFzcyBOVkRyYXdCdWZmZXJzVGVzdCA6IHB1YmxpYyBNYXRjaE91dHB1dENvZGVUZXN0Ci17
Ci0gIHB1YmxpYzoKLSAgICBOVkRyYXdCdWZmZXJzVGVzdCgpIDogTWF0Y2hPdXRwdXRDb2RlVGVz
dChHTF9GUkFHTUVOVF9TSEFERVIsIDAsIFNIX0VTU0xfT1VUUFVUKQotICAgIHsKLSAgICAgICAg
U2hCdWlsdEluUmVzb3VyY2VzICpyZXNvdXJjZXMgPSBnZXRSZXNvdXJjZXMoKTsKLSAgICAgICAg
cmVzb3VyY2VzLT5NYXhEcmF3QnVmZmVycyAgICAgPSA4OwotICAgICAgICByZXNvdXJjZXMtPkVY
VF9kcmF3X2J1ZmZlcnMgICA9IDE7Ci0gICAgICAgIHJlc291cmNlcy0+TlZfZHJhd19idWZmZXJz
ICAgID0gMTsKLSAgICB9Ci19OwotCi1URVNUX0YoTlZEcmF3QnVmZmVyc1Rlc3QsIE5WRHJhd0J1
ZmZlcnMpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAg
ICIjZXh0ZW5zaW9uIEdMX0VYVF9kcmF3X2J1ZmZlcnMgOiByZXF1aXJlXG4iCi0gICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAg
ICAgICAgIiAgIGdsX0ZyYWdEYXRhWzBdID0gdmVjNCgxLjApO1xuIgotICAgICAgICAiICAgZ2xf
RnJhZ0RhdGFbMV0gPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUo
c2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQ29kZSgiR0xfTlZfZHJhd19i
dWZmZXJzIikpOwotICAgIEFTU0VSVF9GQUxTRShmb3VuZEluQ29kZSgiR0xfRVhUX2RyYXdfYnVm
ZmVycyIpKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9jb21waWxlcl90ZXN0cy9QYWNrX1VucGFja190ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9QYWNrX1VucGFja190ZXN0LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODU2NzNkNWY3OTEuLjAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9QYWNrX1Vu
cGFja190ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi0vLwotLy8gQ29w
eXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgot
Ly8KLS8vIFBhY2tfVW5wYWNrX3Rlc3QuY3BwOgotLy8gICBUZXN0cyBmb3IgdGhlIGVtdWxhdGlu
ZyBwYWNrX3VucGFjayBmdW5jdGlvbnMgZm9yIEdMU0wuCi0vLwotCi0jaW5jbHVkZSAiYW5nbGVf
Z2wuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVy
TGFuZy5oIgotI2luY2x1ZGUgInRlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5oIgotCi1u
YW1lc3BhY2UKLXsKLQotY2xhc3MgUGFja1VucGFja1Rlc3QgOiBwdWJsaWMgTWF0Y2hPdXRwdXRD
b2RlVGVzdAotewotICBwdWJsaWM6Ci0gICAgUGFja1VucGFja1Rlc3QoKSA6IE1hdGNoT3V0cHV0
Q29kZVRlc3QoR0xfRlJBR01FTlRfU0hBREVSLCAwLCBTSF9HTFNMXzQwMF9DT1JFX09VVFBVVCkg
e30KLX07Ci0KLS8vIENoZWNrIGlmIFBhY2tTbm9ybTJ4MTYgRW11bGF0aW9uIGZvciBHTFNMIDwg
NC4yIGNvbXBpbGUgY29ycmVjdGx5LgotVEVTVF9GKFBhY2tVbnBhY2tUZXN0LCBQYWNrU25vcm0y
eDE2RW11bGF0aW9uKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQot
ICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKLSAgICAgICAgImxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQg
ZnJhZ0NvbG9yOyIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIHZlYzIg
djtcbiIKLSAgICAgICAgIiAgIHVpbnQgdSA9IHBhY2tTbm9ybTJ4MTYodik7XG4iCi0gICAgICAg
ICIgICBmcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBp
bGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQ29kZSgidWludCB3ZWJn
bF9wYWNrU25vcm0yeDE2X2VtdSh2ZWMyIHYpIikpOwotfQotCi0vLyBDaGVjayBpZiBVbnBhY2tT
bm9ybTJ4MTYgRW11bGF0aW9uIGZvciBHTFNMIDwgNC4yIGNvbXBpbGUgY29ycmVjdGx5LgotVEVT
VF9GKFBhY2tVbnBhY2tUZXN0LCBVbnBhY2tTbm9ybTJ4MTZFbXVsYXRpb24pCi17Ci0gICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAibGF5b3V0
KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29sb3I7IgotICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgotICAgICAgICAiICAgdWludCB1O1xuIgotICAgICAgICAiICAgdmVjMiB2
PXVucGFja1Nub3JtMngxNih1KTtcbiIKLSAgICAgICAgIiAgIGZyYWdDb2xvciA9IHZlYzQoMC4w
KTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5Db2RlKCJ2ZWMyIHdlYmdsX3VucGFja1Nub3JtMngxNl9lbXUodWlu
dCB1KSIpKTsKLX0KLQotLy8gQ2hlY2sgaWYgUGFja1Vub3JtMngxNiBFbXVsYXRpb24gZm9yIEdM
U0wgPCA0LjEgY29tcGlsZXMgY29ycmVjdGx5LgotVEVTVF9GKFBhY2tVbnBhY2tUZXN0LCBQYWNr
VW5vcm0yeDE2RW11bGF0aW9uKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1w
IHZlYzQgZnJhZ0NvbG9yOyIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAg
IHZlYzIgdjtcbiIKLSAgICAgICAgIiAgIHVpbnQgdSA9IHBhY2tVbm9ybTJ4MTYodik7XG4iCi0g
ICAgICAgICIgICBmcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAg
IGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQ29kZSgidWlu
dCB3ZWJnbF9wYWNrVW5vcm0yeDE2X2VtdSh2ZWMyIHYpIikpOwotfQotCi0vLyBDaGVjayBpZiBV
bnBhY2tTbm9ybTJ4MTYgRW11bGF0aW9uIGZvciBHTFNMIDwgNC4xIGNvbXBpbGVzIGNvcnJlY3Rs
eS4KLVRFU1RfRihQYWNrVW5wYWNrVGVzdCwgVW5wYWNrVW5vcm0yeDE2RW11bGF0aW9uKQotewot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24g
MzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAg
ImxheW91dChsb2NhdGlvbiA9IDApIG91dCBtZWRpdW1wIHZlYzQgZnJhZ0NvbG9yOyIKLSAgICAg
ICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIHVpbnQgdTtcbiIKLSAgICAgICAgIiAg
IHZlYzIgdj11bnBhY2tVbm9ybTJ4MTYodSk7XG4iCi0gICAgICAgICIgICBmcmFnQ29sb3IgPSB2
ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsK
LSAgICBBU1NFUlRfVFJVRShmb3VuZEluQ29kZSgidmVjMiB3ZWJnbF91bnBhY2tVbm9ybTJ4MTZf
ZW11KHVpbnQgdSkiKSk7Ci19Ci0KLS8vIENoZWNrIGlmIFBhY2tIYWxmMngxNiBFbXVsYXRpb24g
Zm9yIEdMU0wgPCA0LjIgY29tcGlsZXMgY29ycmVjdGx5LgotVEVTVF9GKFBhY2tVbnBhY2tUZXN0
LCBQYWNrSGFsZjJ4MTZFbXVsYXRpb24pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRl
clN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAibGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1l
ZGl1bXAgdmVjNCBmcmFnQ29sb3I7IgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAg
ICAiICAgdmVjMiB2O1xuIgotICAgICAgICAiICAgdWludCB1PXBhY2tIYWxmMngxNih2KTtcbiIK
LSAgICAgICAgIiAgIGZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0g
ICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5Db2RlKCJ1
aW50IHdlYmdsX3BhY2tIYWxmMngxNl9lbXUodmVjMiB2KSIpKTsKLX0KLQotLy8gQ2hlY2sgaWYg
VW5wYWNrSGFsZjJ4MTYgRW11bGF0aW9uIGZvciBHTFNMIDwgNC4yIGNvbXBpbGVzIGNvcnJlY3Rs
eS4KLVRFU1RfRihQYWNrVW5wYWNrVGVzdCwgVW5wYWNrSGFsZjJ4MTZFbXVsYXRpb24pCi17Ci0g
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAz
MDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAi
bGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29sb3I7IgotICAgICAg
ICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgdWludCB1O1xuIgotICAgICAgICAiICAg
dmVjMiB2PXVucGFja0hhbGYyeDE2KHUpO1xuIgotICAgICAgICAiICAgZnJhZ0NvbG9yID0gdmVj
NCgwLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0g
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkNvZGUoInZlYzIgd2ViZ2xfdW5wYWNrSGFsZjJ4MTZfZW11
KHVpbnQgdSkiKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvUHJ1bmVFbXB0eURlY2xhcmF0
aW9uc190ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxl
cl90ZXN0cy9QcnVuZUVtcHR5RGVjbGFyYXRpb25zX3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA0NjUyMTE3YzRhNi4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1BydW5lRW1wdHlEZWNsYXJhdGlv
bnNfdGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vLwotLy8gQ29weXJp
Z2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8K
LS8vIFBydW5lRW1wdHlEZWNsYXJhdGlvbnNfdGVzdC5jcHA6Ci0vLyAgIFRlc3RzIGZvciBwcnVu
aW5nIGVtcHR5IGRlY2xhcmF0aW9ucy4KLS8vCi0KLSNpbmNsdWRlICJhbmdsZV9nbC5oIgotI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0j
aW5jbHVkZSAidGVzdHMvdGVzdF91dGlscy9jb21waWxlcl90ZXN0LmgiCi0KLW5hbWVzcGFjZQot
ewotCi1jbGFzcyBQcnVuZUVtcHR5RGVjbGFyYXRpb25zVGVzdCA6IHB1YmxpYyBNYXRjaE91dHB1
dENvZGVUZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICBQcnVuZUVtcHR5RGVjbGFyYXRpb25zVGVzdCgp
Ci0gICAgICAgIDogTWF0Y2hPdXRwdXRDb2RlVGVzdChHTF9WRVJURVhfU0hBREVSLCAwLCBTSF9H
TFNMX0NPTVBBVElCSUxJVFlfT1VUUFVUKQotICAgIHsKLSAgICB9Ci19OwotCi1URVNUX0YoUHJ1
bmVFbXB0eURlY2xhcmF0aW9uc1Rlc3QsIEVtcHR5RGVjbGFyYXRpb25TdGFydHNEZWNsYXJhdG9y
TGlzdCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBzaGFkZXJTdHJpbmcgPQotICAgICAgICAi
cHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IHU7XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgZmxv
YXQsIGY7XG4iCi0gICAgICAgICIgICBnbF9Qb3NpdGlvbiA9IHZlYzQodSAqIGYpO1xuIgotICAg
ICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkNvZGUoImZsb2F0IGYiKSk7Ci0gICAgQVNTRVJUX1RSVUUobm90Rm91bmRJbkNvZGUo
ImZsb2F0LCBmIikpOwotfQotCi1URVNUX0YoUHJ1bmVFbXB0eURlY2xhcmF0aW9uc1Rlc3QsIEVt
cHR5U3RydWN0RGVjbGFyYXRpb25XaXRoUXVhbGlmaWVycykKLXsKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyBzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
Ci0gICAgICAgICJjb25zdCBzdHJ1Y3QgUyB7IGZsb2F0IGY7IH07XG4iCi0gICAgICAgICJ1bmlm
b3JtIFMgczsiCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAg
ICAiICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHMuZik7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNv
bXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluQ29kZSgic3RydWN0
IFMiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkNvZGUoInVuaWZvcm0gUyIpKTsKLSAgICBB
U1NFUlRfVFJVRShub3RGb3VuZEluQ29kZSgiY29uc3Qgc3RydWN0IFMiKSk7Ci19Ci0KLX0gIC8v
IG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2NvbXBpbGVyX3Rlc3RzL1BydW5lVW51c2VkRnVuY3Rpb25zX3Rlc3QuY3BwIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1BydW5lVW51c2VkRnVuY3Rp
b25zX3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODgwYWJlM2Y4NS4u
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBp
bGVyX3Rlc3RzL1BydW5lVW51c2VkRnVuY3Rpb25zX3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsOTEgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBQcnVuZVVudXNlZEZ1bmN0aW9uc190ZXN0
LmNwcDoKLS8vICAgVGVzdCBmb3IgdGhlIHBydW5pbmcgb2YgdW51c2VkIGZ1bmN0aW9uIHdpdGgg
dGhlIFNIX1BSVU5FX1VOVVNFRF9GVU5DVElPTlMgY29tcGlsZSBmbGFnCi0vLwotCi0jaW5jbHVk
ZSAiYW5nbGVfZ2wuaCIKLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgIkdMU0xB
TkcvU2hhZGVyTGFuZy5oIgotI2luY2x1ZGUgInRlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVz
dC5oIgotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3MgUHJ1bmVVbnVzZWRGdW5jdGlvbnNUZXN0IDog
cHVibGljIE1hdGNoT3V0cHV0Q29kZVRlc3QKLXsKLSAgcHVibGljOgotICAgIFBydW5lVW51c2Vk
RnVuY3Rpb25zVGVzdCgpIDogTWF0Y2hPdXRwdXRDb2RlVGVzdChHTF9GUkFHTUVOVF9TSEFERVIs
IDAsIFNIX0VTU0xfT1VUUFVUKSB7fQotCi0gIHByb3RlY3RlZDoKLSAgICB2b2lkIGNvbXBpbGUo
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZywgYm9vbCBwcnVuZSkKLSAgICB7Ci0gICAg
ICAgIGludCBjb21waWxhdGlvbkZsYWdzID0gU0hfVkFSSUFCTEVTIHwgKHBydW5lID8gMCA6IFNI
X0RPTlRfUFJVTkVfVU5VU0VEX0ZVTkNUSU9OUyk7Ci0gICAgICAgIE1hdGNoT3V0cHV0Q29kZVRl
c3Q6OmNvbXBpbGUoc2hhZGVyU3RyaW5nLCBjb21waWxhdGlvbkZsYWdzKTsKLSAgICB9Ci19Owot
Ci0vLyBDaGVjayB0aGF0IHVudXNlZCBmdW5jdGlvbiBhbmQgcHJvdG90eXBlcyBhcmUgcmVtb3Zl
ZCBpZmYgdGhlIG9wdGlvbnMgaXMgc2V0Ci1URVNUX0YoUHJ1bmVVbnVzZWRGdW5jdGlvbnNUZXN0
LCBVbnVzZWRGdW5jdGlvbkFuZFByb3RvKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAg
ICJmbG9hdCB1bnVzZWQoZmxvYXQgYSk7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0g
ICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAgICAgICAifVxuIgot
ICAgICAgICAiZmxvYXQgdW51c2VkKGZsb2F0IGEpIHtcbiIKLSAgICAgICAgIiAgICByZXR1cm4g
YTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcsIHRydWUpOwot
ICAgIEVYUEVDVF9UUlVFKG5vdEZvdW5kSW5Db2RlKCJ1bnVzZWQoIikpOwotICAgIEVYUEVDVF9U
UlVFKGZvdW5kSW5Db2RlKCJtYWluKCIsIDEpKTsKLQotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5n
LCBmYWxzZSk7Ci0gICAgRVhQRUNUX1RSVUUoZm91bmRJbkNvZGUoInVudXNlZCgiLCAyKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoZm91bmRJbkNvZGUoIm1haW4oIiwgMSkpOwotfQotCi0vLyBDaGVjayB0
aGF0IHVuaW1wbGVtZW50ZWQgcHJvdG90eXBlcyBhcmUgcmVtb3ZlZCBpZmYgdGhlIG9wdGlvbnMg
aXMgc2V0Ci1URVNUX0YoUHJ1bmVVbnVzZWRGdW5jdGlvbnNUZXN0LCBVbmltcGxlbWVudGVkUHJv
dG90eXBlKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJmbG9hdCB1bnVzZWQoZmxv
YXQgYSk7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICAgZ2xfRnJh
Z0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRl
clN0cmluZywgdHJ1ZSk7Ci0gICAgRVhQRUNUX1RSVUUobm90Rm91bmRJbkNvZGUoInVudXNlZCgi
KSk7Ci0gICAgRVhQRUNUX1RSVUUoZm91bmRJbkNvZGUoIm1haW4oIiwgMSkpOwotCi0gICAgY29t
cGlsZShzaGFkZXJTdHJpbmcsIGZhbHNlKTsKLSAgICBFWFBFQ1RfVFJVRShmb3VuZEluQ29kZSgi
dW51c2VkKCIsIDEpKTsKLSAgICBFWFBFQ1RfVFJVRShmb3VuZEluQ29kZSgibWFpbigiLCAxKSk7
Ci19Ci0KLS8vIENoZWNrIHRoYXQgdXNlZCBmdW5jdGlvbnMgYXJlIG5vdCBwcnVudWVkIChkdWgp
Ci1URVNUX0YoUHJ1bmVVbnVzZWRGdW5jdGlvbnNUZXN0LCBVc2VkRnVuY3Rpb24pCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImZsb2F0IHVzZWQoZmxvYXQgYSk7XG4iCi0gICAgICAg
ICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh1c2Vk
KDEuMCkpO1xuIgotICAgICAgICAifVxuIgotICAgICAgICAiZmxvYXQgdXNlZChmbG9hdCBhKSB7
XG4iCi0gICAgICAgICIgICAgcmV0dXJuIGE7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBp
bGUoc2hhZGVyU3RyaW5nLCB0cnVlKTsKLSAgICBFWFBFQ1RfVFJVRShmb3VuZEluQ29kZSgidXNl
ZCgiLCAzKSk7Ci0gICAgRVhQRUNUX1RSVUUoZm91bmRJbkNvZGUoIm1haW4oIiwgMSkpOwotCi0g
ICAgY29tcGlsZShzaGFkZXJTdHJpbmcsIGZhbHNlKTsKLSAgICBFWFBFQ1RfVFJVRShmb3VuZElu
Q29kZSgidXNlZCgiLCAzKSk7Ci0gICAgRVhQRUNUX1RSVUUoZm91bmRJbkNvZGUoIm1haW4oIiwg
MSkpOwotfQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvY29tcGlsZXJfdGVzdHMvUXVhbGlmaWNhdGlvbk9yZGVyRVNTTDMxX3Rlc3QuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1F1YWxpZmljYXRp
b25PcmRlckVTU0wzMV90ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY1
M2I2ODE0MmMuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9jb21waWxlcl90ZXN0cy9RdWFsaWZpY2F0aW9uT3JkZXJFU1NMMzFfdGVzdC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwxODIgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNiBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBRdWFsaWZpY2F0
aW9uT3JkZXJFU1NMMzFfdGVzdC5jcHA6Ci0vLyAgIE9wZW5HTCBFUyAzLjEgcmVtb3ZlcyB0aGUg
c3RyaWN0IG9yZGVyIG9mIHF1YWxpZmllcnMgaW1wb3NlZCBieSB0aGUgZ3JhbW1hci4KLS8vICAg
VGhpcyBmaWxlIGNvbnRhaW5zIHRlc3RzIGZvciBpbnZhbGlkIG9yZGVyIGFuZCB1c2FnZSBvZiBx
dWFsaWZpZXJzIGluIEdMU0wgRVMgMy4xMC4KLQotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0K
LSNpbmNsdWRlICJhbmdsZV9nbC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3IvVHJh
bnNsYXRvckVTU0wuaCIKLSNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKLSNpbmNsdWRl
ICJ0ZXN0cy90ZXN0X3V0aWxzL2NvbXBpbGVyX3Rlc3QuaCIKLQotY2xhc3MgUXVhbGlmaWNhdGlv
blZlcnRleFNoYWRlclRlc3RFU1NMMzEgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAotewotICBwdWJs
aWM6Ci0gICAgUXVhbGlmaWNhdGlvblZlcnRleFNoYWRlclRlc3RFU1NMMzEoKSB7fQotICBwcm90
ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIFNldFVwKCkKLSAgICB7Ci0gICAgICAgIFNoQnVpbHRJ
blJlc291cmNlcyByZXNvdXJjZXM7Ci0gICAgICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJl
c291cmNlcyk7Ci0KLSAgICAgICAgbVRyYW5zbGF0b3IgPSBuZXcgVHJhbnNsYXRvckVTU0woR0xf
VkVSVEVYX1NIQURFUiwgU0hfR0xFUzNfMV9TUEVDKTsKLSAgICAgICAgQVNTRVJUX1RSVUUobVRy
YW5zbGF0b3ItPkluaXQocmVzb3VyY2VzKSk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkgeyBkZWxldGUgbVRyYW5zbGF0b3I7IH0KLQotICAgIC8vIFJldHVybiB0cnVlIHdo
ZW4gY29tcGlsYXRpb24gc3VjY2VlZHMKLSAgICBib29sIGNvbXBpbGUoY29uc3Qgc3RkOjpzdHJp
bmcgJnNoYWRlclN0cmluZykKLSAgICB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnNoYWRlclN0cmlu
Z3NbXSA9IHtzaGFkZXJTdHJpbmcuY19zdHIoKX07Ci0gICAgICAgIG1BU1RSb290ICAgICAgICAg
ICAgICAgICAgICA9IG1UcmFuc2xhdG9yLT5jb21waWxlVHJlZUZvclRlc3Rpbmcoc2hhZGVyU3Ry
aW5ncywgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNIX0lOVEVSTUVESUFURV9UUkVFIHwgU0hfVkFSSUFCTEVTKTsKLSAgICAgICAgVElu
Zm9TaW5rICZpbmZvU2luayA9IG1UcmFuc2xhdG9yLT5nZXRJbmZvU2luaygpOwotICAgICAgICBt
SW5mb0xvZyAgICAgICAgICAgID0gaW5mb1NpbmsuaW5mby5jX3N0cigpOwotICAgICAgICByZXR1
cm4gbUFTVFJvb3QgIT0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBjb25zdCBUSW50ZXJtU3ltYm9s
ICpmaW5kU3ltYm9sSW5BU1QoY29uc3QgVFN0cmluZyAmc3ltYm9sTmFtZSwgVEJhc2ljVHlwZSBi
YXNpY1R5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gRmluZFN5bWJvbE5vZGUobUFTVFJvb3Qs
IHN5bWJvbE5hbWUsIGJhc2ljVHlwZSk7Ci0gICAgfQotCi0gIHByb3RlY3RlZDoKLSAgICBUcmFu
c2xhdG9yRVNTTCAqbVRyYW5zbGF0b3I7Ci0gICAgVEludGVybU5vZGUgKm1BU1RSb290OwotICAg
IHN0ZDo6c3RyaW5nIG1JbmZvTG9nOwotfTsKLQotLy8gR0xTTCBFUyAzLjEwIGhhcyByZWxheGVk
IGNoZWNrcyBvbiBxdWFsaWZpZXIgb3JkZXIuIEFueSBvcmRlciBpcyBjb3JyZWN0LgotVEVTVF9G
KFF1YWxpZmljYXRpb25WZXJ0ZXhTaGFkZXJUZXN0RVNTTDMxLCBDZW50cm9pZE91dCkKLXsKLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMx
MCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIGxvd3AgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQg
Y2VudHJvaWQgZmxvYXQgc29tZXRoaW5nO1xuIgotICAgICAgICAidm9pZCBtYWluKCl7XG4iCi0g
ICAgICAgICIgICBzb21ldGhpbmcgPSAxLjA7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmICgh
Y29tcGlsZShzaGFkZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIg
Y29tcGlsYXRpb24gZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyIgPDwgbUluZm9Mb2c7Ci0gICAg
fQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGNvbnN0IFRJbnRlcm1TeW1ib2wgKm5vZGUgPSBm
aW5kU3ltYm9sSW5BU1QoInNvbWV0aGluZyIsIEVidEZsb2F0KTsKLSAgICAgICAgQVNTRVJUX05F
KG51bGxwdHIsIG5vZGUpOwotCi0gICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlID0gbm9kZS0+Z2V0
VHlwZSgpOwotICAgICAgICBFWFBFQ1RfRVEoRXZxQ2VudHJvaWRPdXQsIHR5cGUuZ2V0UXVhbGlm
aWVyKCkpOwotICAgIH0KLX0KLQotLy8gR0xTTCBFUyAzLjEwIGhhcyByZWxheGVkIGNoZWNrcyBv
biBxdWFsaWZpZXIgb3JkZXIuIEFueSBvcmRlciBpcyBjb3JyZWN0LgotVEVTVF9GKFF1YWxpZmlj
YXRpb25WZXJ0ZXhTaGFkZXJUZXN0RVNTTDMxLCBBbGxRdWFsaWZpZXJzTWl4ZWQpCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAg
ZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBsb3dwIGZsb2F0O1xuIgotICAgICAgICAiaGlnaHAg
b3V0IGludmFyaWFudCBjZW50cm9pZCBmbGF0IHZlYzQgc29tZXRoaW5nO1xuIgotICAgICAgICAi
dm9pZCBtYWluKCl7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmICghY29tcGlsZShzaGFkZXJT
dHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFp
bGVkLCBleHBlY3Rpbmcgc3VjY2VzcyIgPDwgbUluZm9Mb2c7Ci0gICAgfQotICAgIGVsc2UKLSAg
ICB7Ci0gICAgICAgIGNvbnN0IFRJbnRlcm1TeW1ib2wgKm5vZGUgPSBmaW5kU3ltYm9sSW5BU1Qo
InNvbWV0aGluZyIsIEVidEZsb2F0KTsKLSAgICAgICAgQVNTRVJUX05FKG51bGxwdHIsIG5vZGUp
OwotCi0gICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlID0gbm9kZS0+Z2V0VHlwZSgpOwotICAgICAg
ICBFWFBFQ1RfVFJVRSh0eXBlLmlzSW52YXJpYW50KCkpOwotICAgICAgICBFWFBFQ1RfRVEoRXZx
RmxhdE91dCwgdHlwZS5nZXRRdWFsaWZpZXIoKSk7Ci0gICAgICAgIEVYUEVDVF9FUShFYnBIaWdo
LCB0eXBlLmdldFByZWNpc2lvbigpKTsKLSAgICB9Ci19Ci0KLS8vIEdMU0wgRVMgMy4xMCBhbGxv
d3MgbXVsdGlwbGUgbGF5b3V0IHF1YWxpZmllcnMgdG8gYmUgc3BlY2lmaWVkLgotVEVTVF9GKFF1
YWxpZmljYXRpb25WZXJ0ZXhTaGFkZXJUZXN0RVNTTDMxLCBNdWx0aXBsZUxheW91dHMpCi17Ci0g
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAz
MTAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBsb3dwIGZsb2F0O1xuIgotICAgICAgICAiaW4g
bGF5b3V0KGxvY2F0aW9uPTEpIGxheW91dChsb2NhdGlvbj0yKSB2ZWM0IHNvbWV0aGluZztcbiIK
LSAgICAgICAgInZvaWQgbWFpbigpe1xuIgotICAgICAgICAifVxuIjsKLSAgICBpZiAoIWNvbXBp
bGUoc2hhZGVyU3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBp
bGF0aW9uIGZhaWxlZCwgZXhwZWN0aW5nIHN1Y2Nlc3MiIDw8IG1JbmZvTG9nOwotICAgIH0KLSAg
ICBlbHNlCi0gICAgewotICAgICAgICBjb25zdCBUSW50ZXJtU3ltYm9sICpub2RlID0gZmluZFN5
bWJvbEluQVNUKCJzb21ldGhpbmciLCBFYnRGbG9hdCk7Ci0gICAgICAgIEFTU0VSVF9ORShudWxs
cHRyLCBub2RlKTsKLQotICAgICAgICBjb25zdCBUVHlwZSAmdHlwZSA9IG5vZGUtPmdldFR5cGUo
KTsKLSAgICAgICAgRVhQRUNUX0VRKEV2cVZlcnRleEluLCB0eXBlLmdldFF1YWxpZmllcigpKTsK
LSAgICAgICAgRVhQRUNUX0VRKDIsIHR5cGUuZ2V0TGF5b3V0UXVhbGlmaWVyKCkubG9jYXRpb24p
OwotICAgIH0KLX0KLQotLy8gVGhlIHRlc3QgY2hlY2tzIGxheW91dCBxdWFsaWZpZXIgb3ZlcnJp
ZGluZyB3aGVuIG11bHRpcGxlIGxheW91dHMgYXJlIHNwZWNpZmllZC4KLVRFU1RfRihRdWFsaWZp
Y2F0aW9uVmVydGV4U2hhZGVyVGVzdEVTU0wzMSwgTXVsdGlwbGVMYXlvdXRzSW50ZXJmYWNlQmxv
Y2spCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIj
dmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBsb3dwIGZsb2F0O1xuIgotICAg
ICAgICAib3V0IGZsb2F0IHNvbWVWYWx1ZTtcbiIKLSAgICAgICAgImxheW91dChzaGFyZWQpIGxh
eW91dChzdGQxNDApIGxheW91dChjb2x1bW5fbWFqb3IpIHVuaWZvcm0gTXlJbnRlcmZhY2VcbiIK
LSAgICAgICAgInsgdmVjNCBzb21ldGhpbmc7IH0gTXlJbnRlcmZhY2VOYW1lO1xuIgotICAgICAg
ICAidm9pZCBtYWluKCl7XG4iCi0gICAgICAgICIgICBzb21lVmFsdWUgPSBNeUludGVyZmFjZU5h
bWUuc29tZXRoaW5nLnI7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGlmICghY29tcGlsZShzaGFk
ZXJTdHJpbmcpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24g
ZmFpbGVkLCBleHBlY3Rpbmcgc3VjY2VzcyIgPDwgbUluZm9Mb2c7Ci0gICAgfQotICAgIGVsc2UK
LSAgICB7Ci0gICAgICAgIGNvbnN0IFRJbnRlcm1TeW1ib2wgKm5vZGUgPSBmaW5kU3ltYm9sSW5B
U1QoIk15SW50ZXJmYWNlTmFtZSIsIEVidEludGVyZmFjZUJsb2NrKTsKLSAgICAgICAgQVNTRVJU
X05FKG51bGxwdHIsIG5vZGUpOwotCi0gICAgICAgIGNvbnN0IFRUeXBlICZ0eXBlICAgICAgICAg
ICAgICAgID0gbm9kZS0+Z2V0VHlwZSgpOwotICAgICAgICBUTGF5b3V0UXVhbGlmaWVyIGxheW91
dFF1YWxpZmllciA9IHR5cGUuZ2V0TGF5b3V0UXVhbGlmaWVyKCk7Ci0gICAgICAgIEVYUEVDVF9F
UShFYnNTdGQxNDAsIGxheW91dFF1YWxpZmllci5ibG9ja1N0b3JhZ2UpOwotICAgICAgICBFWFBF
Q1RfRVEoRW1wQ29sdW1uTWFqb3IsIGxheW91dFF1YWxpZmllci5tYXRyaXhQYWNraW5nKTsKLSAg
ICB9Ci19Ci0KLS8vIFRoZSB0ZXN0IGNoZWNrcyBsYXlvdXQgcXVhbGlmaWVyIG92ZXJyaWRpbmcg
d2hlbiBtdWx0aXBsZSBsYXlvdXRzIGFyZSBzcGVjaWZpZWQuCi1URVNUX0YoUXVhbGlmaWNhdGlv
blZlcnRleFNoYWRlclRlc3RFU1NMMzEsIE11bHRpcGxlTGF5b3V0c0ludGVyZmFjZUJsb2NrMikK
LXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJz
aW9uIDMxMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIGxvd3AgZmxvYXQ7XG4iCi0gICAgICAg
ICJvdXQgZmxvYXQgc29tZVZhbHVlO1xuIgotICAgICAgICAibGF5b3V0KHJvd19tYWpvcikgbGF5
b3V0KHN0ZDE0MCkgbGF5b3V0KHNoYXJlZCkgdW5pZm9ybSBNeUludGVyZmFjZVxuIgotICAgICAg
ICAieyB2ZWM0IHNvbWV0aGluZzsgfSBNeUludGVyZmFjZU5hbWU7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKXtcbiIKLSAgICAgICAgIiAgIHNvbWVWYWx1ZSA9IE15SW50ZXJmYWNlTmFtZS5zb21l
dGhpbmcucjtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgaWYgKCFjb21waWxlKHNoYWRlclN0cmlu
ZykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQs
IGV4cGVjdGluZyBzdWNjZXNzIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsK
LSAgICAgICAgY29uc3QgVEludGVybVN5bWJvbCAqbm9kZSA9IGZpbmRTeW1ib2xJbkFTVCgiTXlJ
bnRlcmZhY2VOYW1lIiwgRWJ0SW50ZXJmYWNlQmxvY2spOwotICAgICAgICBBU1NFUlRfTkUobnVs
bHB0ciwgbm9kZSk7Ci0KLSAgICAgICAgY29uc3QgVFR5cGUgJnR5cGUgICAgICAgICAgICAgICAg
PSBub2RlLT5nZXRUeXBlKCk7Ci0gICAgICAgIFRMYXlvdXRRdWFsaWZpZXIgbGF5b3V0UXVhbGlm
aWVyID0gdHlwZS5nZXRMYXlvdXRRdWFsaWZpZXIoKTsKLSAgICAgICAgRVhQRUNUX0VRKEVic1No
YXJlZCwgbGF5b3V0UXVhbGlmaWVyLmJsb2NrU3RvcmFnZSk7Ci0gICAgICAgIEVYUEVDVF9FUShF
bXBSb3dNYWpvciwgbGF5b3V0UXVhbGlmaWVyLm1hdHJpeFBhY2tpbmcpOwotICAgIH0KLX0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0
cy9RdWFsaWZpY2F0aW9uT3JkZXJfdGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvUXVhbGlmaWNhdGlvbk9yZGVyX3Rlc3QuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmU1YTYzYTU4ZC4uMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1F1YWxpZmlj
YXRpb25PcmRlcl90ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2OSArMCwwIEBACi0vLwot
Ly8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgotLy8KLS8vIFF1YWxpZmljYXRpb25PcmRlcl90ZXN0LmNwcDoKLS8vICAgT3BlbkdMIEVT
IDMuMSByZW1vdmVzIHRoZSBzdHJpY3Qgb3JkZXIgb2YgcXVhbGlmaWVycyBpbXBvc2VkIGJ5IHRo
ZSBncmFtbWFyLgotLy8gICBUaGlzIGZpbGUgY29udGFpbnMgdGVzdHMgZm9yIGludmFsaWQgb3Jk
ZXIgYW5kIHVzYWdlIG9mIHF1YWxpZmllcnMuCi0KLSNpbmNsdWRlICJhbmdsZV9nbC5oIgotI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0j
aW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9UcmFuc2xhdG9yRVNTTC5oIgotCi1jbGFzcyBR
dWFsaWZpY2F0aW9uT3JkZXJTaGFkZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QKLXsKLSAg
cHVibGljOgotICAgIFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QoKSB7fQotCi0gIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7fQotCi0gICAgdmlydHVhbCB2b2lkIFRl
YXJEb3duKCkge30KLQotICAgIC8vIFJldHVybiB0cnVlIHdoZW4gY29tcGlsYXRpb24gc3VjY2Vl
ZHMKLSAgICBib29sIGNvbXBpbGUoY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZywgR0xl
bnVtIHNoYWRlclR5cGUsIFNoU2hhZGVyU3BlYyBzcGVjKQotICAgIHsKLSAgICAgICAgU2hCdWls
dEluUmVzb3VyY2VzIHJlc291cmNlczsKLSAgICAgICAgU2hJbml0QnVpbHRJblJlc291cmNlcygm
cmVzb3VyY2VzKTsKLSAgICAgICAgcmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0gKHNwZWMgPT0g
U0hfR0xFUzJfU1BFQykgPyAxIDogODsKLQotICAgICAgICBUcmFuc2xhdG9yRVNTTCAqdHJhbnNs
YXRvciA9IG5ldyBUcmFuc2xhdG9yRVNTTChzaGFkZXJUeXBlLCBzcGVjKTsKLSAgICAgICAgRVhQ
RUNUX1RSVUUodHJhbnNsYXRvci0+SW5pdChyZXNvdXJjZXMpKTsKLQotICAgICAgICBjb25zdCBj
aGFyICpzaGFkZXJTdHJpbmdzW10gPSB7c2hhZGVyU3RyaW5nLmNfc3RyKCl9OwotICAgICAgICBi
b29sIGNvbXBpbGF0aW9uU3VjY2VzcyAgICAgPSB0cmFuc2xhdG9yLT5jb21waWxlKHNoYWRlclN0
cmluZ3MsIDEsIFNIX0lOVEVSTUVESUFURV9UUkVFKTsKLSAgICAgICAgVEluZm9TaW5rICZpbmZv
U2luayAgICAgICAgID0gdHJhbnNsYXRvci0+Z2V0SW5mb1NpbmsoKTsKLSAgICAgICAgbUluZm9M
b2cgICAgICAgICAgICAgICAgICAgID0gaW5mb1NpbmsuaW5mby5jX3N0cigpOwotCi0gICAgICAg
IGRlbGV0ZSB0cmFuc2xhdG9yOwotCi0gICAgICAgIHJldHVybiBjb21waWxhdGlvblN1Y2Nlc3M7
Ci0gICAgfQotCi0gIHByb3RlY3RlZDoKLSAgICBzdGQ6OnN0cmluZyBtSW5mb0xvZzsKLX07Ci0K
LS8vIFJlcGVhdGluZyBjZW50cm9pZCBxdWFsaWZpZXIgaXMgaW52YWxpZC4KLVRFU1RfRihRdWFs
aWZpY2F0aW9uT3JkZXJTaGFkZXJUZXN0LCBSZXBlYXRpbmdDZW50cm9pZCkKLXsKLSAgICBjb25z
dCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xu
IgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJmbGF0IGNl
bnRyb2lkIGNlbnRyb2lkIGluIGZsb2F0IG15VmFsdWU7XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBH
TF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzXzFfU1BFQykpCi0gICAgewotICAgICAgICBGQUlM
KCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIg
PDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBSZXBlYXRpbmcgdW5pZm9ybSBzdG9yYWdlIHF1
YWxpZmllcnMgaXMgaW52YWxpZC4KLVRFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJTaGFkZXJUZXN0
LCBSZXBlYXRpbmdVbmlmb3JtcykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3Ry
aW5nID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHVuaWZvcm0gZmxvYXQgbXlWYWx1ZTtc
biIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBpZiAo
Y29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX0ZSQUdNRU5UX1NIQURFUiwgU0hfR0xFUzNfMV9TUEVD
KSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRl
ZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFJlcGVh
dGluZyB2YXJ5aW5nIHN0b3JhZ2UgcXVhbGlmaWVycyBpcyBpbnZhbGlkLgotVEVTVF9GKFF1YWxp
ZmljYXRpb25PcmRlclNoYWRlclRlc3QsIFJlcGVhdGluZ1ZhcnlpbmdzKQotewotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZhcnlpbmcgdmVjNCBteUNvbG9yO1xuIgotICAg
ICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGlmIChjb21waWxl
KHNoYWRlclN0cmluZywgR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM18xX1NQRUMpKQotICAg
IHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBl
Y3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gTGF5b3V0IHF1YWxp
ZmllciBzaG91bGQgYmUgYmVmb3JlIHRoZSBzdG9yYWdlIHF1YWxpZmllcnMuCi1URVNUX0YoUXVh
bGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgV3JvbmdPcmRlclF1YWxpZmllcnMpCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAg
ZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0
IGxheW91dChsb2NhdGlvbj0xKSB2ZWM0IG15Q29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBH
TF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzXzFfU1BFQykpCi0gICAgewotICAgICAgICBGQUlM
KCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIg
PDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBDZW50cm9pZCBvdXQgaXMgdGhlIGNvcnJlY3Qg
b3JkZXIuIE91dCBjZW50cm9pZCBpcyBpbmNvcnJlY3QuCi1URVNUX0YoUXVhbGlmaWNhdGlvbk9y
ZGVyU2hhZGVyVGVzdCwgV3JvbmdPcmRlckNlbnRyb2lkT3V0KQotewotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImluIHZlYzQgdXY7XG4i
Ci0gICAgICAgICJvdXQgY2VudHJvaWQgdmVjNCBwb3NpdGlvbjtcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKLSAgICAgICAgInBvc2l0aW9uID0gdXY7XG4iCi0gICAgICAgICJnbF9Qb3Np
dGlvbiA9IHV2O1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGlmIChjb21waWxlKHNoYWRlclN0
cmluZywgR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzNfU1BFQykpCi0gICAgewotICAgICAgICBG
QUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJl
ICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBDZW50cm9pZCBpbiBpcyB0aGUgY29ycmVj
dCBvcmRlci4gSW4gY2VudHJvaWQgaXMgaW5jb3JyZWN0LgotVEVTVF9GKFF1YWxpZmljYXRpb25P
cmRlclNoYWRlclRlc3QsIFdyb25nT3JkZXJDZW50cm9pZEluKQotewotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImluIGNlbnRyb2lkIHZl
YzQgY29sb3JJTjtcbiIKLSAgICAgICAgIm91dCB2ZWM0IGNvbG9yT1VUO1xuIgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiY29sb3JPVVQgPSBjb2xvcklOO1xuIgotICAgICAg
ICAifVxuIjsKLQotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZywgR0xfRlJBR01FTlRfU0hB
REVSLCBTSF9HTEVTM19TUEVDKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNv
bXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAg
ICB9Ci19Ci0KLS8vIFR5cGUgY2Fubm90IGJlIGJlZm9yZSB0aGUgc3RvcmFnZSBxdWFsaWZpZXIu
Ci1URVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgV3JvbmdPcmRlclR5cGVTdG9y
YWdlKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAi
I3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
LSAgICAgICAgImNlbnRyb2lkIGluIHZlYzQgY29sb3JJTjtcbiIKLSAgICAgICAgInZlYzQgb3V0
IGNvbG9yT1VUO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiY29sb3JP
VVQgPSBjb2xvcklOO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGlmIChjb21waWxlKHNoYWRl
clN0cmluZywgR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkKLSAgICB7Ci0gICAg
ICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZh
aWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEEgdmFyaWFibGUgY2Fubm90IGhh
dmUgdHdvIGNvbmZsaWN0aW5nIHN0b3JhZ2UgcXVhbGlmaWVycy4KLVRFU1RfRihRdWFsaWZpY2F0
aW9uT3JkZXJTaGFkZXJUZXN0LCBSZXBlYXRpbmdEaWZmZXJlbnRTdG9yYWdlUXVhbGlmaWVycykK
LXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAg
ICAgICJjZW50cm9pZCBpbiB2ZWM0IGNvbG9ySU47XG4iCi0gICAgICAgICJ1bmlmb3JtIG91dCB2
ZWM0IGNvbG9yT1VUO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiY29s
b3JPVVQgPSBjb2xvcklOO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGlmIChjb21waWxlKHNo
YWRlclN0cmluZywgR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkKLSAgICB7Ci0g
ICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5n
IGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEEgdmFyaWFibGUgY2Fubm90
IGhhdmUgdHdvIGRpZmZlcmVudCBsYXlvdXQgcXVhbGlmaWVycy4KLVRFU1RfRihRdWFsaWZpY2F0
aW9uT3JkZXJTaGFkZXJUZXN0LCBSZXBlYXRpbmdMYXlvdXRRdWFsaWZpZXJzKQotewotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImluIHZl
YzQgY29sb3JJTjtcbiIKLSAgICAgICAgImxheW91dChsb2NhdGlvbj0wKSBsYXlvdXQobG9jYXRp
b249MCkgb3V0IHZlYzQgY29sb3JPVVQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0g
ICAgICAgICJjb2xvck9VVCA9IGNvbG9ySU47XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgaWYg
KGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQRUMp
KQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVk
LCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gQSB2YXJp
YWJsZSBjYW5ub3QgaGF2ZSByZXBlYXRpbmcgaW52YXJpYW50IHF1YWxpZmllcnMuCi1URVNUX0Yo
UXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgUmVwZWF0aW5nSW52YXJpYW50UXVhbGlmaWVy
cykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2
ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0g
ICAgICAgICJpbiB2ZWM0IGNvbG9ySU47XG4iCi0gICAgICAgICJpbnZhcmlhbnQgaW52YXJpYW50
IG91dCB2ZWM0IGNvbG9yT1VUO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAg
ICAiY29sb3JPVVQgPSBjb2xvcklOO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGlmIChjb21w
aWxlKHNoYWRlclN0cmluZywgR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkKLSAg
ICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhw
ZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEEgdmFyaWFibGUg
Y2Fubm90IGhhdmUgcmVwZWF0aW5nIHN0b3JhZ2UgcXVhbGlmaWVycy4KLVRFU1RfRihRdWFsaWZp
Y2F0aW9uT3JkZXJTaGFkZXJUZXN0LCBSZXBlYXRpbmdBdHRyaWJ1dGVzKQotewotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7XG4iCi0gICAgICAgICJhdHRyaWJ1dGUgYXR0cmlidXRlIHZlYzQgcG9zaXRpb25JTjtc
biIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgImdsX1Bvc2l0aW9uID0gcG9z
aXRpb25JTjtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJp
bmcsIEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpKQotICAgIHsKLSAgICAgICAgRkFJ
TCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAi
IDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gV3Jvbmcgb3JkZXIgZm9yIGludmFyaWFudCB2
YXJ5aW5nLiBJdCBzaG91bGQgYmUgJ2ludmFyaWFudCB2YXJ5aW5nJywgbm90ICd2YXJ5aW5nIGlu
dmFyaWFudCcuCi1URVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgVmFyeWluZ0lu
dmFyaWFudFdyb25nT3JkZXIpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmlu
ZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImF0dHJp
YnV0ZSB2ZWM0IHBvc2l0aW9uSU47XG4iCi0gICAgICAgICJ2YXJ5aW5nIGludmFyaWFudCB2ZWM0
IGRhdGFPVVQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICJnbF9Qb3Np
dGlvbiA9IHBvc2l0aW9uSU47XG4iCi0gICAgICAgICJkYXRhT1VUID0gMC41ICogZGF0YU9VVCAr
IHZlYzQoMC41KTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBpZiAoY29tcGlsZShzaGFkZXJT
dHJpbmcsIEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpKQotICAgIHsKLSAgICAgICAg
RkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVy
ZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gQSB2YXJpYWJsZSBjYW5ub3QgaGF2ZSBy
ZXBlYXRpbmcgc3RvcmFnZSBxdWFsaWZpZXJzLgotVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNo
YWRlclRlc3QsIEF0dHJpYnV0ZVZhcnlpbmdNaXgpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnNoYWRlclN0cmluZzEgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0g
ICAgICAgICJhdHRyaWJ1dGUgdmFyeWluZyB2ZWM0IHBvc2l0aW9uSU47XG4iCi0gICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICJnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uSU47XG4iCi0g
ICAgICAgICJ9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZzIgPQot
ICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2YXJ5aW5nIGF0
dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uSU47XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0g
ICAgICAgICJnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uSU47XG4iCi0gICAgICAgICJ9XG4iOwotCi0g
ICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nMSwgR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzNf
U1BFQykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNj
ZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotCi0gICAgaWYg
KGNvbXBpbGUoc2hhZGVyU3RyaW5nMiwgR0xfVkVSVEVYX1NIQURFUiwgU0hfR0xFUzNfU1BFQykp
Ci0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQs
IGV4cGVjdGluZyBmYWlsdXJlICIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBBIHZhcmlh
YmxlIGNhbm5vdCBoYXZlIHJlcGVhdGluZyBpbnRlcnBvbGF0aW9uIHF1YWxpZmllcnMuCi1URVNU
X0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgUmVwZWF0aW5nSW50ZXJwb2xhdGlvblF1
YWxpZmllcnMpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgotICAgICAgICAiaW4gdmVjNCBwb3NpdGlvbklOO1xuIgotICAgICAgICAiZmxhdCBmbGF0
IG91dCB2ZWM0IGRhdGFPVVQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAg
ICJnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uSU47XG4iCi0gICAgICAgICJkYXRhT1VUID0gMC41ICog
ZGF0YU9VVCArIHZlYzQoMC41KTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBpZiAoY29tcGls
ZShzaGFkZXJTdHJpbmcsIEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpKQotICAgIHsK
LSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3Rp
bmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gV3Jvbmcgb3JkZXIgZm9y
IHRoZSBpbnRlcnBvbGF0aW9uIGFuZCBzdG9yYWdlIHF1YWxpZmllci4gVGhlIGNvcnJlY3Qgb3Jk
ZXIgaXMgaW50ZXJwb2xhdGlvbgotLy8gcXVhbGlmaWVyIGFuZCB0aGVuIHN0b3JhZ2UgcXVhbGlm
aWVyLgotVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIFdyb25nT3JkZXJJbnRl
cnBvbGF0aW9uU3RvcmFnZVF1YWxpZmllcnMpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNo
YWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAiaW4gdmVjNCBwb3NpdGlvbklOO1xuIgot
ICAgICAgICAib3V0IGZsYXQgdmVjNCBkYXRhT1VUO1xuIgotICAgICAgICAidm9pZCBtYWluKCkg
e1xuIgotICAgICAgICAiZ2xfUG9zaXRpb24gPSBwb3NpdGlvbklOO1xuIgotICAgICAgICAiZGF0
YU9VVCA9IDAuNSAqIGRhdGFPVVQgKyB2ZWM0KDAuNSk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0g
ICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9WRVJURVhfU0hBREVSLCBTSF9HTEVTM19T
UEVDKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2Nl
ZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFRo
ZSBjb3JyZWN0IG9yZGVyIGlzIGludmFyaWFudCwgaW50ZXJwb2xhdGlvbiwgc3RvcmFnZS4KLVRF
U1RfRihRdWFsaWZpY2F0aW9uT3JkZXJTaGFkZXJUZXN0LCBXcm9uZ09yZGVySW52YXJpYW50SW50
ZXJwb2xhdGlvblN0b3JhZ2VRdWFsaWZpZXJzKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImluIHZlYzQgcG9zaXRpb25JTjtcbiIK
LSAgICAgICAgImZsYXQgaW52YXJpYW50IG91dCB2ZWM0IGRhdGFPVVQ7XG4iCi0gICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICJnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uSU47XG4iCi0g
ICAgICAgICJkYXRhT1VUID0gMC41ICogZGF0YU9VVCArIHZlYzQoMC41KTtcbiIKLSAgICAgICAg
In1cbiI7Ci0KLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX1ZFUlRFWF9TSEFERVIs
IFNIX0dMRVMzX1NQRUMpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGls
YXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwotICAgIH0K
LX0KLQotLy8gVGhlIGludmFyaWFudCBxdWFsaWZlciBoYXMgdG8gYmUgYmVmb3JlIHRoZSBzdG9y
YWdlIHF1YWxpZmllcnMuCi1URVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgV3Jv
bmdPcmRlckludmFyaWFudE5vdEZpcnN0KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImluIHZlYzQgcG9zaXRpb25JTjtcbiIKLSAg
ICAgICAgImNlbnRyb2lkIG91dCBpbnZhcmlhbnQgdmVjNCBkYXRhT1VUO1xuIgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiZ2xfUG9zaXRpb24gPSBwb3NpdGlvbklOO1xuIgot
ICAgICAgICAiZGF0YU9VVCA9IDAuNSAqIGRhdGFPVVQgKyB2ZWM0KDAuNSk7XG4iCi0gICAgICAg
ICJ9XG4iOwotCi0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9WRVJURVhfU0hBREVS
LCBTSF9HTEVTM19TUEVDKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBp
bGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9
Ci19Ci0KLS8vIFRoZSBwcmVjaXNpb24gcXVhbGlmaWVyIGlzIGFmdGVyIHRoZSBzdG9yYWdlIHF1
YWxpZmllcnMuCi1URVNUX0YoUXVhbGlmaWNhdGlvbk9yZGVyU2hhZGVyVGVzdCwgV3JvbmdPcmRl
clByZWNpc2lvbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJpbiB2ZWM0IHBvc2l0aW9uSU47XG4iCi0gICAgICAgICJoaWdocCBj
ZW50cm9pZCBvdXQgdmVjNCBkYXRhT1VUO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgot
ICAgICAgICAiZ2xfUG9zaXRpb24gPSBwb3NpdGlvbklOO1xuIgotICAgICAgICAiZGF0YU9VVCA9
IDAuNSAqIGRhdGFPVVQgKyB2ZWM0KDAuNSk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgaWYg
KGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9WRVJURVhfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkK
LSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwg
ZXhwZWN0aW5nIGZhaWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIEEgdmFyaWFi
bGUgY2Fubm90IGhhdmUgbXVsdGlwbGUgZGVjbGFyYXRpb25zIG9mIHRoZSAnaW4nIHN0b3JhZ2Ug
cXVhbGlmaWVyLgotVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIFJlcGVhdGlu
Z0luUXVhbGlmaWVyKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQot
ICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKLSAgICAgICAgImluIGluIHZlYzQgcG9zaXRpb25JTjtcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKLSAgICAgICAgImdsX1Bvc2l0aW9uID0gcG9zaXRpb25JTjtcbiIKLSAg
ICAgICAgIn1cbiI7Ci0KLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX1ZFUlRFWF9T
SEFERVIsIFNIX0dMRVMzX1NQRUMpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIg
Y29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9nOwot
ICAgIH0KLX0KLQotLy8gQSB2YXJpYWJsZSBjYW5ub3QgaGF2ZSBtdWx0aXBsZSBkZWNsYXJhdGlv
bnMgb2YgdGhlICdhdHRyaWJ1dGUnIHN0b3JhZ2UgcXVhbGlmaWVyLgotVEVTVF9GKFF1YWxpZmlj
YXRpb25PcmRlclNoYWRlclRlc3QsIFJlcGVhdGluZ0F0dHJpYnV0ZVF1YWxpZmllcikKLXsKLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAiYXR0cmlidXRlIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0
aW9uSU47XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICJnbF9Qb3NpdGlv
biA9IHBvc2l0aW9uSU47XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgaWYgKGNvbXBpbGUoc2hh
ZGVyU3RyaW5nLCBHTF9WRVJURVhfU0hBREVSLCBTSF9HTEVTM19TUEVDKSkKLSAgICB7Ci0gICAg
ICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZh
aWx1cmUgIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIFZlcnRleCBpbnB1dCBjYW5ub3Qg
YmUgcXVhbGlmaWVkIHdpdGggaW52YXJpYW50LgotVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNo
YWRlclRlc3QsIEludmFyaWFudFZlcnRleElucHV0KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0g
ICAgICAgICJpbnZhcmlhbnQgYXR0cmlidXRlIHZlYzQgcG9zaXRpb25JTjtcbiIKLSAgICAgICAg
InZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgImdsX1Bvc2l0aW9uID0gcG9zaXRpb25JTjtcbiIK
LSAgICAgICAgIn1cbiI7Ci0KLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX1ZFUlRF
WF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFk
ZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSAiIDw8IG1JbmZvTG9n
OwotICAgIH0KLX0KLQotLy8gQ2Fubm90IGhhdmUgYSBmdW5jdGlvbiBwYXJhbWV0ZXIgd2l0aCB0
aGUgaW52YXJpYW50IHF1YWxpZmllci4KLVRFU1RfRihRdWFsaWZpY2F0aW9uT3JkZXJTaGFkZXJU
ZXN0LCBJbnZhbGlkRnVuY3Rpb25QYXJhbWV0ZXJzSW52YXJpYW50KQotewotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIGxvd3AgZmxvYXQ7
XG4iCi0gICAgICAgICJ2YXJ5aW5nIGZsb2F0IHZhbHVlO1xuIgotICAgICAgICAiZmxvYXQgZm9v
MCAoaW52YXJpYW50IGluIGZsb2F0IHgpIHtcbiIKLSAgICAgICAgIiAgIHJldHVybiAyLjAqeDtc
biIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4i
Ci0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChmb28wKHZhbHVlKSk7XG4iCi0gICAg
ICAgICJ9XG4iOwotCi0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBHTF9GUkFHTUVOVF9T
SEFERVIsIFNIX0dMRVMzX1NQRUMpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIg
Y29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVyZSIgPDwgbUluZm9Mb2c7Ci0g
ICAgfQotfQotCi0vLyBDYW5ub3QgaGF2ZSBhIGZ1bmN0aW9uIHBhcmFtZXRlciB3aXRoIHRoZSBh
dHRyaWJ1dGUgcXVhbGlmaWVyLgotVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3Qs
IEludmFsaWRGdW5jdGlvblBhcmFtZXRlcnNBdHRyaWJ1dGUpCi17Ci0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbG93cCBmbG9hdDtcbiIK
LSAgICAgICAgInZhcnlpbmcgZmxvYXQgdmFsdWU7XG4iCi0gICAgICAgICJmbG9hdCBmb28wIChh
dHRyaWJ1dGUgZmxvYXQgeCkge1xuIgotICAgICAgICAiICAgcmV0dXJuIDIuMCp4O1xuIgotICAg
ICAgICAifVxuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAg
ICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGZvbzAodmFsdWUpKTtcbiIKLSAgICAgICAgIn1c
biI7Ci0KLSAgICBpZiAoY29tcGlsZShzaGFkZXJTdHJpbmcsIEdMX0ZSQUdNRU5UX1NIQURFUiwg
U0hfR0xFUzNfU1BFQykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxh
dGlvbiBzdWNjZWVkZWQsIGV4cGVjdGluZyBmYWlsdXJlIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19
Ci0KLS8vIENhbm5vdCBoYXZlIGEgZnVuY3Rpb24gcGFyYW1ldGVyIHdpdGggdGhlIHZhcnlpbmcg
cXVhbGlmaWVyLgotVEVTVF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIEludmFsaWRG
dW5jdGlvblBhcmFtZXRlcnNWYXJ5aW5nKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIGxvd3AgZmxvYXQ7XG4iCi0gICAgICAgICJ2
YXJ5aW5nIGZsb2F0IHZhbHVlO1xuIgotICAgICAgICAiZmxvYXQgZm9vMCAodmFyeWluZyBmbG9h
dCB4KSB7XG4iCi0gICAgICAgICIgICByZXR1cm4gMi4wKng7XG4iCi0gICAgICAgICJ9XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQoZm9vMCh2YWx1ZSkpO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGlm
IChjb21waWxlKHNoYWRlclN0cmluZywgR0xfRlJBR01FTlRfU0hBREVSLCBTSF9HTEVTM19TUEVD
KSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIHN1Y2NlZWRl
ZCwgZXhwZWN0aW5nIGZhaWx1cmUiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KLQotLy8gQ2Fubm90
IGhhdmUgYSBmdW5jdGlvbiBwYXJhbWV0ZXIgd2l0aCB0aGUgbGF5b3V0IHF1YWxpZmllcgotVEVT
VF9GKFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIEludmFsaWRGdW5jdGlvblBhcmFtZXRl
cnNMYXlvdXQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBsb3dwIGZsb2F0O1xu
IgotICAgICAgICAiaW4gZmxvYXQgdmFsdWU7XG4iCi0gICAgICAgICJmbG9hdCBmb28wIChsYXlv
dXQobG9jYXRpb24gPSAzKSBpbiBmbG9hdCB4KSB7XG4iCi0gICAgICAgICIgICByZXR1cm4gMi4w
Kng7XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJvdXQgdmVjNCBjb2xvck9VVDtcbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgY29sb3JP
VVQgPSB2ZWM0KGZvbzAodmFsdWUpKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBpZiAoY29t
cGlsZShzaGFkZXJTdHJpbmcsIEdMX0ZSQUdNRU5UX1NIQURFUiwgU0hfR0xFUzNfU1BFQykpCi0g
ICAgewotICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlvbiBzdWNjZWVkZWQsIGV4
cGVjdGluZyBmYWlsdXJlIiA8PCBtSW5mb0xvZzsKLSAgICB9Ci19Ci0KLS8vIENhbm5vdCBoYXZl
IGEgZnVuY3Rpb24gcGFyYW1ldGVyIHdpdGggdGhlIGNlbnRyb2lkIHF1YWxpZmllcgotVEVTVF9G
KFF1YWxpZmljYXRpb25PcmRlclNoYWRlclRlc3QsIEludmFsaWRGdW5jdGlvblBhcmFtZXRlcnND
ZW50cm9pZEluKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAg
ICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbG93cCBmbG9hdDtc
biIKLSAgICAgICAgImluIGZsb2F0IHZhbHVlO1xuIgotICAgICAgICAiZmxvYXQgZm9vMCAoY2Vu
dHJvaWQgaW4gZmxvYXQgeCkge1xuIgotICAgICAgICAiICAgcmV0dXJuIDIuMCp4O1xuIgotICAg
ICAgICAifVxuIgotICAgICAgICAib3V0IHZlYzQgY29sb3JPVVQ7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIGNvbG9yT1VUID0gdmVjNChm
b28wKHZhbHVlKSk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgaWYgKGNvbXBpbGUoc2hhZGVy
U3RyaW5nLCBHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpKQotICAgIHsKLSAgICAg
ICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFp
bHVyZSIgPDwgbUluZm9Mb2c7Ci0gICAgfQotfQotCi0vLyBDYW5ub3QgaGF2ZSBhIGZ1bmN0aW9u
IHBhcmFtZXRlciB3aXRoIHRoZSBmbGF0IHF1YWxpZmllcgotVEVTVF9GKFF1YWxpZmljYXRpb25P
cmRlclNoYWRlclRlc3QsIEludmFsaWRGdW5jdGlvblBhcmFtZXRlcnNGbGF0SW4pCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAg
ZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBsb3dwIGZsb2F0O1xuIgotICAgICAgICAiaW4gZmxv
YXQgdmFsdWU7XG4iCi0gICAgICAgICJmbG9hdCBmb28wIChmbGF0IGluIGZsb2F0IHgpIHtcbiIK
LSAgICAgICAgIiAgIHJldHVybiAyLjAqeDtcbiIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgIm91
dCB2ZWM0IGNvbG9yT1VUO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntc
biIKLSAgICAgICAgIiAgICBjb2xvck9VVCA9IHZlYzQoZm9vMCh2YWx1ZSkpO1xuIgotICAgICAg
ICAifVxuIjsKLQotICAgIGlmIChjb21waWxlKHNoYWRlclN0cmluZywgR0xfRlJBR01FTlRfU0hB
REVSLCBTSF9HTEVTM19TUEVDKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNv
bXBpbGF0aW9uIHN1Y2NlZWRlZCwgZXhwZWN0aW5nIGZhaWx1cmUiIDw8IG1JbmZvTG9nOwotICAg
IH0KLX0KLQotLy8gT3V0cHV0IGxheW91dCBsb2NhdGlvbiBxdWFsaWZpZXIgY2FuJ3QgYXBwZWFy
IG1vcmUgdGhhbiBvbmNlIHdpdGhpbiBhIGRlY2xhcmF0aW9uLgotLy8gR0xTTCBFUyAzLjAwLjYg
c2VjdGlvbiA0LjMuOC4yIE91dHB1dCBMYXlvdXQgUXVhbGlmaWVycy4KLVRFU1RfRihRdWFsaWZp
Y2F0aW9uT3JkZXJTaGFkZXJUZXN0LCBUd29PdXRwdXRMb2NhdGlvbnMpCi17Ci0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIK
LSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAibGF5b3V0KGxv
Y2F0aW9uPTEsIGxvY2F0aW9uPTIpIG91dCB2ZWM0IG15Q29sb3I7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgaWYgKGNvbXBpbGUoc2hhZGVyU3Ry
aW5nLCBHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQRUMpKQotICAgIHsKLSAgICAgICAg
RkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RpbmcgZmFpbHVy
ZSAiIDw8IG1JbmZvTG9nOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9SZWNvcmRDb25zdGFudFByZWNpc2lvbl90
ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0
cy9SZWNvcmRDb25zdGFudFByZWNpc2lvbl90ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNzgzYTkzYzEwMTUuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9SZWNvcmRDb25zdGFudFByZWNpc2lvbl90
ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQg
KGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8g
UmVjb3JkQ29uc3RhbnRQcmVjaXNpb25fdGVzdC5jcHA6Ci0vLyAgIFRlc3QgZm9yIHJlY29yZGlu
ZyBjb25zdGFudCB2YXJpYWJsZSBwcmVjaXNpb24gd2hlbiBpdCBhZmZlY3RzIGNvbnN1bWluZyBl
eHByZXNzaW9uLgotLy8KLQotI2luY2x1ZGUgImFuZ2xlX2dsLmgiCi0jaW5jbHVkZSAiZ3Rlc3Qv
Z3Rlc3QuaCIKLSNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKLSNpbmNsdWRlICJ0ZXN0
cy90ZXN0X3V0aWxzL2NvbXBpbGVyX3Rlc3QuaCIKLQotY2xhc3MgUmVjb3JkQ29uc3RhbnRQcmVj
aXNpb25UZXN0IDogcHVibGljIE1hdGNoT3V0cHV0Q29kZVRlc3QKLXsKLSAgcHVibGljOgotICAg
IFJlY29yZENvbnN0YW50UHJlY2lzaW9uVGVzdCgpIDogTWF0Y2hPdXRwdXRDb2RlVGVzdChHTF9G
UkFHTUVOVF9TSEFERVIsIDAsIFNIX0VTU0xfT1VUUFVUKSB7fQotfTsKLQotLy8gVGhlIGNvbnN0
YW50IGNhbm5vdCBiZSBmb2xkZWQgaWYgaXRzIHByZWNpc2lvbiBpcyBoaWdoZXIgdGhhbiB0aGUg
b3RoZXIgb3BlcmFuZHMsIHNpbmNlIGl0Ci0vLyBpbmNyZWFzZXMgdGhlIHByZWNpc2lvbiBvZiB0
aGUgY29uc3VtaW5nIGV4cHJlc3Npb24uCi1URVNUX0YoUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25U
ZXN0LCBIaWdoZXJQcmVjaXNpb25Db25zdGFudEFzUGFyYW1ldGVyKQotewotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAidW5pZm9ybSBtZWRpdW1wIGZsb2F0
IHU7IgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAg
ICBjb25zdCBoaWdocCBmbG9hdCBhID0gNDA5Ni41O1xuIgotICAgICAgICAiICAgIG1lZGl1bXAg
ZmxvYXQgYiA9IGZyYWN0KGEgKyB1KTtcbiIKLSAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KGIpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0g
ICAgQVNTRVJUX1RSVUUoZm91bmRJbkNvZGUoImNvbnN0IGhpZ2hwIGZsb2F0IHMiKSk7Ci0gICAg
QVNTRVJUX0ZBTFNFKGZvdW5kSW5Db2RlKCJmcmFjdCg0MDk2LjUiKSk7Ci0gICAgQVNTRVJUX0ZB
TFNFKGZvdW5kSW5Db2RlKCJmcmFjdCgoNDA5Ni41IikpOwotfQotCi0vLyBUaGUgY29uc3RhbnQg
Y2FuIGJlIGZvbGRlZCBpZiBpdHMgcHJlY2lzaW9uIGlzIGVxdWFsIHRvIHRoZSBvdGhlciBvcGVy
YW5kcywgYXMgaXQgZG9lcyBub3QKLS8vIGluY3JlYXNlIHRoZSBwcmVjaXNpb24gb2YgdGhlIGNv
bnN1bWluZyBleHByZXNzaW9uLgotVEVTVF9GKFJlY29yZENvbnN0YW50UHJlY2lzaW9uVGVzdCwg
RXF1YWxQcmVjaXNpb25Db25zdGFudEFzUGFyYW1ldGVyKQotewotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAidW5pZm9ybSBtZWRpdW1wIGZsb2F0IHU7Igot
ICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBjb25z
dCBtZWRpdW1wIGZsb2F0IGEgPSA0MDk2LjU7XG4iCi0gICAgICAgICIgICAgbWVkaXVtcCBmbG9h
dCBiID0gZnJhY3QoYSArIHUpO1xuIgotICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
Yik7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBB
U1NFUlRfRkFMU0UoZm91bmRJbkNvZGUoImNvbnN0IG1lZGl1bXAgZmxvYXQgcyIpKTsKLSAgICBB
U1NFUlRfVFJVRShmb3VuZEluQ29kZSgiZnJhY3QoKDQwOTYuNSIpKTsKLX0KLQotLy8gVGhlIGNv
bnN0YW50IGNhbm5vdCBiZSBmb2xkZWQgaWYgaXRzIHByZWNpc2lvbiBpcyBoaWdoZXIgdGhhbiB0
aGUgb3RoZXIgb3BlcmFuZHMsIHNpbmNlIGl0Ci0vLyBpbmNyZWFzZXMgdGhlIHByZWNpc2lvbiBv
ZiB0aGUgY29uc3VtaW5nIGV4cHJlc3Npb24uIFRoaXMgYXBwbGllcyBhbHNvIHdoZW4gdGhlIGNv
bnN0YW50IGlzCi0vLyBwYXJ0IG9mIGEgY29uc3RhbnQgZXhwcmVzc2lvbiB0aGF0IGNhbiBiZSBm
b2xkZWQuCi1URVNUX0YoUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25UZXN0LCBGb2xkZWRCaW5hcnlD
b25zdGFudFByZWNpc2lvbklzSGlnaGVyKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFk
ZXJTdHJpbmcgPQotICAgICAgICAidW5pZm9ybSBtZWRpdW1wIGZsb2F0IHU7IgotICAgICAgICAi
dm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBjb25zdCBoaWdocCBm
bG9hdCBhID0gNDA5NS41O1xuIgotICAgICAgICAiICAgIG1lZGl1bXAgZmxvYXQgYiA9IGZyYWN0
KChhICsgMS4wKSArIHUpO1xuIgotICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYik7
XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NF
UlRfVFJVRShmb3VuZEluQ29kZSgiY29uc3QgaGlnaHAgZmxvYXQgcyIpKTsKLSAgICBBU1NFUlRf
RkFMU0UoZm91bmRJbkNvZGUoImZyYWN0KDQwOTYuNSIpKTsKLSAgICBBU1NFUlRfRkFMU0UoZm91
bmRJbkNvZGUoImZyYWN0KCg0MDk2LjUiKSk7Ci19Ci0KLQotLy8gVGhlIGNvbnN0YW50IGNhbm5v
dCBiZSBmb2xkZWQgaWYgaXRzIHByZWNpc2lvbiBpcyBoaWdoZXIgdGhhbiB0aGUgb3RoZXIgb3Bl
cmFuZHMsIHNpbmNlIGl0Ci0vLyBpbmNyZWFzZXMgdGhlIHByZWNpc2lvbiBvZiB0aGUgY29uc3Vt
aW5nIGV4cHJlc3Npb24uIFRoaXMgYXBwbGllcyBhbHNvIHdoZW4gdGhlIGNvbnN0YW50IGlzCi0v
LyBwYXJ0IG9mIGEgY29uc3RhbnQgZXhwcmVzc2lvbiB0aGF0IGNhbiBiZSBmb2xkZWQuCi1URVNU
X0YoUmVjb3JkQ29uc3RhbnRQcmVjaXNpb25UZXN0LCBGb2xkZWRVbmFyeUNvbnN0YW50UHJlY2lz
aW9uSXNIaWdoZXIpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0g
ICAgICAgICJ1bmlmb3JtIG1lZGl1bXAgZmxvYXQgdTsiCi0gICAgICAgICJ2b2lkIG1haW4oKVxu
IgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIGNvbnN0IGhpZ2hwIGZsb2F0IGEgPSAwLjU7
XG4iCi0gICAgICAgICIgICAgbWVkaXVtcCBmbG9hdCBiID0gc2luKGZyYWN0KGEpICsgdSk7XG4i
Ci0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiKTtcbiIKLSAgICAgICAgIn1cbiI7
Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5Db2Rl
KCJjb25zdCBoaWdocCBmbG9hdCBzIikpOwotICAgIEFTU0VSVF9GQUxTRShmb3VuZEluQ29kZSgi
c2luKDAuNSIpKTsKLSAgICBBU1NFUlRfRkFMU0UoZm91bmRJbkNvZGUoInNpbigoMC41IikpOwot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVy
X3Rlc3RzL1JlbW92ZVBvd190ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9jb21waWxlcl90ZXN0cy9SZW1vdmVQb3dfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDI0MzRmMDlhMDUwLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvUmVtb3ZlUG93X3Rlc3QuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTUg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gUmVtb3ZlUG93
X3Rlc3QuY3BwOgotLy8gICBUZXN0cyBmb3IgcmVtb3ZpbmcgcG93KCkgZnVuY3Rpb24gY2FsbHMg
ZnJvbSB0aGUgQVNULgotLy8KLQotI2luY2x1ZGUgImFuZ2xlX2dsLmgiCi0jaW5jbHVkZSAiZ3Rl
c3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxhbmcuaCIKLSNpbmNsdWRlICJj
b21waWxlci90cmFuc2xhdG9yL05vZGVTZWFyY2guaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFu
c2xhdG9yL1RyYW5zbGF0b3JHTFNMLmgiCi0KLWNsYXNzIFJlbW92ZVBvd1Rlc3QgOiBwdWJsaWMg
dGVzdGluZzo6VGVzdAotewotICBwdWJsaWM6Ci0gICAgUmVtb3ZlUG93VGVzdCgpIHt9Ci0KLSAg
cHJvdGVjdGVkOgotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgYWxs
b2NhdG9yLnB1c2goKTsKLSAgICAgICAgU2V0R2xvYmFsUG9vbEFsbG9jYXRvcigmYWxsb2NhdG9y
KTsKLSAgICAgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKLSAgICAgICAgU2hJbml0
QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2VzKTsKLSAgICAgICAgbVRyYW5zbGF0b3JHTFNMID0g
bmV3IFRyYW5zbGF0b3JHTFNMKEdMX0ZSQUdNRU5UX1NIQURFUiwgU0hfR0xFUzJfU1BFQywgU0hf
R0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKG1UcmFuc2xh
dG9yR0xTTC0+SW5pdChyZXNvdXJjZXMpKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFNhZmVEZWxldGUobVRyYW5zbGF0b3JHTFNMKTsKLSAg
ICAgICAgU2V0R2xvYmFsUG9vbEFsbG9jYXRvcihudWxscHRyKTsKLSAgICAgICAgYWxsb2NhdG9y
LnBvcCgpOwotICAgIH0KLQotICAgIHZvaWQgY29tcGlsZShjb25zdCBzdGQ6OnN0cmluZyYgc2hh
ZGVyU3RyaW5nKQotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciAqc2hhZGVyU3RyaW5nc1tdID0g
eyBzaGFkZXJTdHJpbmcuY19zdHIoKSB9OwotICAgICAgICBtQVNUUm9vdCA9IG1UcmFuc2xhdG9y
R0xTTC0+Y29tcGlsZVRyZWVGb3JUZXN0aW5nKHNoYWRlclN0cmluZ3MsIDEsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hfT0JKRUNU
X0NPREUgfCBTSF9SRU1PVkVfUE9XX1dJVEhfQ09OU1RBTlRfRVhQT05FTlQpOwotICAgICAgICBp
ZiAoIW1BU1RSb290KQotICAgICAgICB7Ci0gICAgICAgICAgICBUSW5mb1NpbmsgJmluZm9TaW5r
ID0gbVRyYW5zbGF0b3JHTFNMLT5nZXRJbmZvU2luaygpOwotICAgICAgICAgICAgRkFJTCgpIDw8
ICJTaGFkZXIgY29tcGlsYXRpb24gaW50byBFU1NMIGZhaWxlZCAiIDw8IGluZm9TaW5rLmluZm8u
Y19zdHIoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAg
IGJvb2wgZm91bmRJbkFTVCgpCi0gICAgewotICAgICAgICByZXR1cm4gVDo6c2VhcmNoKG1BU1RS
b290KTsKLSAgICB9Ci0KLSAgcHJpdmF0ZToKLSAgICBUcmFuc2xhdG9yR0xTTCAqbVRyYW5zbGF0
b3JHTFNMOwotICAgIFRJbnRlcm1Ob2RlICptQVNUUm9vdDsKLQotICAgIFRQb29sQWxsb2NhdG9y
IGFsbG9jYXRvcjsKLX07Ci0KLS8vIENoZWNrIGlmIHRoZXJlJ3MgYSBwb3coKSBub2RlIGFueXdo
ZXJlIGluIHRoZSB0cmVlLgotY2xhc3MgRmluZFBvdyA6IHB1YmxpYyBzaDo6Tm9kZVNlYXJjaFRy
YXZlcnNlcjxGaW5kUG93PgotewotICBwdWJsaWM6Ci0gICAgYm9vbCB2aXNpdEJpbmFyeShWaXNp
dCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlm
IChub2RlLT5nZXRPcCgpID09IEVPcFBvdykKLSAgICAgICAgewotICAgICAgICAgICAgbUZvdW5k
ID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gIW1Gb3VuZDsKLSAgICB9Ci19Owot
Ci0vLyBDaGVjayBpZiB0aGUgdHJlZSBzdGFydGluZyBhdCBub2RlIGNvcnJlc3BvbmRzIHRvIGV4
cDIoeSAqIGxvZzIoeCkpCi0vLyBJZiB0aGUgdHJlZSBtYXRjaGVzLCBzZXQgYmFzZSB0byB0aGUg
bm9kZSBjb3JyZXNwb25kaW5nIHRvIHguCi1ib29sIElzUG93V29ya2Fyb3VuZChUSW50ZXJtTm9k
ZSAqbm9kZSwgVEludGVybU5vZGUgKipiYXNlKQotewotICAgIFRJbnRlcm1VbmFyeSAqZXhwID0g
bm9kZS0+Z2V0QXNVbmFyeU5vZGUoKTsKLSAgICBpZiAoZXhwICE9IG51bGxwdHIgJiYgZXhwLT5n
ZXRPcCgpID09IEVPcEV4cDIpCi0gICAgewotICAgICAgICBUSW50ZXJtQmluYXJ5ICptdWwgPSBl
eHAtPmdldE9wZXJhbmQoKS0+Z2V0QXNCaW5hcnlOb2RlKCk7Ci0gICAgICAgIGlmIChtdWwgIT0g
bnVsbHB0ciAmJiBtdWwtPmlzTXVsdGlwbGljYXRpb24oKSkKLSAgICAgICAgewotICAgICAgICAg
ICAgVEludGVybVVuYXJ5ICpsb2cgPSBtdWwtPmdldFJpZ2h0KCktPmdldEFzVW5hcnlOb2RlKCk7
Ci0gICAgICAgICAgICBpZiAobXVsLT5nZXRMZWZ0KCktPmdldEFzQ29uc3RhbnRVbmlvbigpICYm
IGxvZyAhPSBudWxscHRyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChsb2ct
PmdldE9wKCkgPT0gRU9wTG9nMikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChiYXNlKQotICAgICAgICAgICAgICAgICAgICAgICAgKmJhc2UgPSBsb2ctPmdldE9w
ZXJhbmQoKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotLy8gQ2hlY2sgaWYgdGhlcmUncyBhIG5vZGUgd2l0aCB0aGUgY29ycmVjdCB3b3JrYXJv
dW5kIHRvIHBvdyBhbnl3aGVyZSBpbiB0aGUgdHJlZS4KLWNsYXNzIEZpbmRQb3dXb3JrYXJvdW5k
IDogcHVibGljIHNoOjpOb2RlU2VhcmNoVHJhdmVyc2VyPEZpbmRQb3dXb3JrYXJvdW5kPgotewot
ICBwdWJsaWM6Ci0gICAgYm9vbCB2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVW5hcnkg
Km5vZGUpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBtRm91bmQgPSBJc1Bvd1dvcmthcm91bmQo
bm9kZSwgbnVsbHB0cik7Ci0gICAgICAgIHJldHVybiAhbUZvdW5kOwotICAgIH0KLX07Ci0KLS8v
IENoZWNrIGlmIHRoZXJlJ3MgYSBub2RlIHdpdGggdGhlIGNvcnJlY3Qgd29ya2Fyb3VuZCB0byBw
b3cgd2l0aCBhbm90aGVyIHdvcmthcm91bmQgdG8gcG93Ci0vLyBuZXN0ZWQgd2l0aGluIGl0IGFu
eXdoZXJlIGluIHRoZSB0cmVlLgotY2xhc3MgRmluZE5lc3RlZFBvd1dvcmthcm91bmQgOiBwdWJs
aWMgc2g6Ok5vZGVTZWFyY2hUcmF2ZXJzZXI8RmluZE5lc3RlZFBvd1dvcmthcm91bmQ+Ci17Ci0g
IHB1YmxpYzoKLSAgICBib29sIHZpc2l0VW5hcnkoVmlzaXQgdmlzaXQsIFRJbnRlcm1VbmFyeSAq
bm9kZSkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFRJbnRlcm1Ob2RlICpiYXNlID0gbnVsbHB0
cjsKLSAgICAgICAgYm9vbCBvbmVGb3VuZCA9IElzUG93V29ya2Fyb3VuZChub2RlLCAmYmFzZSk7
Ci0gICAgICAgIGlmIChvbmVGb3VuZCAmJiBiYXNlKQotICAgICAgICAgICAgbUZvdW5kID0gSXNQ
b3dXb3JrYXJvdW5kKGJhc2UsIG51bGxwdHIpOwotICAgICAgICByZXR1cm4gIW1Gb3VuZDsKLSAg
ICB9Ci19OwotCi1URVNUX0YoUmVtb3ZlUG93VGVzdCwgUG93V2l0aENvbnN0YW50RXhwb25lbnQp
Ci17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgdTtcbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHBvdyh2
ZWM0KHUpLCB2ZWM0KDAuNSkpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRl
clN0cmluZyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5kSW5BU1Q8RmluZFBvdz4oKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZm91bmRJbkFTVDxGaW5kUG93V29ya2Fyb3VuZD4oKSk7Ci0gICAgQVNTRVJU
X0ZBTFNFKGZvdW5kSW5BU1Q8RmluZE5lc3RlZFBvd1dvcmthcm91bmQ+KCkpOwotfQotCi1URVNU
X0YoUmVtb3ZlUG93VGVzdCwgTmVzdGVkUG93V2l0aENvbnN0YW50RXhwb25lbnQpCi17Ci0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgdTtcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IHBvdyhwb3codmVjNCh1
KSwgdmVjNCgyLjApKSwgdmVjNCgwLjUpKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGls
ZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9GQUxTRShmb3VuZEluQVNUPEZpbmRQb3c+KCkp
OwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5BU1Q8RmluZE5lc3RlZFBvd1dvcmthcm91bmQ+KCkp
OwotfQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29t
cGlsZXJfdGVzdHMvU2hDb21waWxlX3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1NoQ29tcGlsZV90ZXN0LmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMmE1MTRhOWU0ZjUuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9TaENvbXBpbGVfdGVzdC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAy
MDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIFNoQ29t
cGlsZV90ZXN0LmNwcAotLy8gICBUZXN0IHRoZSBTaENvbXBpbGUgaW50ZXJmYWNlIHdpdGggZGlm
ZmVyZW50IHBhcmFtZXRlcnMuCi0vLwotCi0jaW5jbHVkZSAiYW5nbGVfZ2wuaCIKLSNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgotCi1jbGFz
cyBTaENvbXBpbGVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QKLXsKLSAgcHVibGljOgotICAg
IFNoQ29tcGlsZVRlc3QoKSB7fQotCi0gIHByb3RlY3RlZDoKLSAgICB2b2lkIFNldFVwKCkgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJm1SZXNvdXJjZXMp
OwotICAgICAgICBtQ29tcGlsZXIgPSBTaENvbnN0cnVjdENvbXBpbGVyKEdMX0ZSQUdNRU5UX1NI
QURFUiwgU0hfV0VCR0xfU1BFQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTSF9HTFNMX0NPTVBBVElCSUxJVFlfT1VUUFVULCAmbVJlc291cmNlcyk7Ci0gICAgICAg
IEFTU0VSVF9UUlVFKG1Db21waWxlciAhPSBudWxscHRyKSA8PCAiQ29tcGlsZXIgY291bGQgbm90
IGJlIGNvbnN0cnVjdGVkLiI7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRl
Ci0gICAgewotICAgICAgICBpZiAobUNvbXBpbGVyKQotICAgICAgICB7Ci0gICAgICAgICAgICBT
aERlc3RydWN0KG1Db21waWxlcik7Ci0gICAgICAgICAgICBtQ29tcGlsZXIgPSBudWxscHRyOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB0ZXN0Q29tcGlsZShjb25zdCBjaGFyICoqc2hh
ZGVyU3RyaW5ncywgaW50IHN0cmluZ0NvdW50LCBib29sIGV4cGVjdGF0aW9uKQotICAgIHsKLSAg
ICAgICAgYm9vbCBzdWNjZXNzICAgICAgICAgICAgICAgICAgPSBTaENvbXBpbGUobUNvbXBpbGVy
LCBzaGFkZXJTdHJpbmdzLCBzdHJpbmdDb3VudCwgMCk7Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nICZjb21waWxlTG9nID0gU2hHZXRJbmZvTG9nKG1Db21waWxlcik7Ci0gICAgICAgIEVYUEVD
VF9FUShleHBlY3RhdGlvbiwgc3VjY2VzcykgPDwgY29tcGlsZUxvZzsKLSAgICB9Ci0KLSAgcHJp
dmF0ZToKLSAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgbVJlc291cmNlczsKLSAgICBTaEhhbmRsZSBt
Q29tcGlsZXI7Ci19OwotCi0vLyBUZXN0IGNhbGxpbmcgU2hDb21waWxlIHdpdGggbW9yZSB0aGFu
IG9uZSBzaGFkZXIgc291cmNlIHN0cmluZy4KLVRFU1RfRihTaENvbXBpbGVUZXN0LCBNdWx0aXBs
ZVNoYWRlclN0cmluZ3MpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZzEg
PQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iOwotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcyID0KLSAgICAg
ICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9IjsKLQotICAg
IGNvbnN0IGNoYXIgKnNoYWRlclN0cmluZ3NbXSA9IHtzaGFkZXJTdHJpbmcxLmNfc3RyKCksIHNo
YWRlclN0cmluZzIuY19zdHIoKX07Ci0KLSAgICB0ZXN0Q29tcGlsZShzaGFkZXJTdHJpbmdzLCAy
LCB0cnVlKTsKLX0KLQotLy8gVGVzdCBjYWxsaW5nIFNoQ29tcGlsZSB3aXRoIGEgdG9rZW5zIHNw
bGl0IGludG8gZGlmZmVyZW50IHNoYWRlciBzb3VyY2Ugc3RyaW5ncy4KLVRFU1RfRihTaENvbXBp
bGVUZXN0LCBUb2tlbnNTcGxpdEluU2hhZGVyU3RyaW5ncykKLXsKLSAgICBjb25zdCBzdGQ6OnN0
cmluZyAmc2hhZGVyU3RyaW5nMSA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc
biIKLSAgICAgICAgInZvaWQgbWEiOwotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJp
bmcyID0KLSAgICAgICAgImluKCkge1xuIgotICAgICAgICAiI2kiOwotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmczID0KLSAgICAgICAgImYgMVxuIgotICAgICAgICAiICAgIGds
X0ZyYWdDb2xvciA9IHZlYzQoMC4wKTtcbiIKLSAgICAgICAgIiNlbmRpZlxuIgotICAgICAgICAi
fSI7Ci0KLSAgICBjb25zdCBjaGFyICpzaGFkZXJTdHJpbmdzW10gPSB7c2hhZGVyU3RyaW5nMS5j
X3N0cigpLCBzaGFkZXJTdHJpbmcyLmNfc3RyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNoYWRlclN0cmluZzMuY19zdHIoKX07Ci0KLSAgICB0ZXN0Q29tcGlsZShzaGFk
ZXJTdHJpbmdzLCAzLCB0cnVlKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9TaGFkZXJFeHRlbnNpb25fdGVzdC5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvU2hhZGVyRXh0
ZW5zaW9uX3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjNkZTNkZWU0
Ny4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2Nv
bXBpbGVyX3Rlc3RzL1NoYWRlckV4dGVuc2lvbl90ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDIxOCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIEV4dGVuc2lvbl90ZXN0LmNwcAotLy8gICBU
ZXN0IHRoYXQgc2hhZGVycyBuZWVkIHZhcmlvdXMgZXh0ZW5zaW9ucyB0byBiZSBjb21waWxlZC4K
LS8vCi0KLSNpbmNsdWRlICJhbmdsZV9nbC5oIgotI2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0j
aW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLXN0YXRpYyBjb25zdCBjaGFyICpGcmFn
RGVwdGhFeHRTaGRyW10gPQotewotICAgIC8vIEZpcnN0IHN0cmluZyBvZiB0aGUgc2hhZGVyLiBU
aGUgcmVxdWlyZWQgcHJhZ21hIGRlY2xhcmF0aW9uLgotICAgICIjZXh0ZW5zaW9uIEdMX0VYVF9m
cmFnX2RlcHRoIDogZW5hYmxlXG4iLAotCi0gICAgLy8gU2Vjb25kIHN0cmluZyBvZiB0aGUgc2hh
ZGVyLiBUaGUgcmVzdCBvZiB0aGUgc2hhZGVyIGJvZHkuCi0gICAgInZvaWQgbWFpbigpIHsgZ2xf
RnJhZ0RlcHRoRVhUID0gMS4wOyB9XG4iCi19OwotCi1zdGF0aWMgY29uc3QgY2hhciAqU3RhbmRE
ZXJpdkV4dFNoZHJbXSA9Ci17Ci0gICAgLy8gRmlyc3Qgc3RyaW5nIG9mIHRoZSBzaGFkZXIuIFRo
ZSByZXF1aXJlZCBwcmFnbWEgZGVjbGFyYXRpb24uCi0gICAgIiNleHRlbnNpb24gR0xfT0VTX3N0
YW5kYXJkX2Rlcml2YXRpdmVzIDogZW5hYmxlXG4iLAotCi0gICAgLy8gU2Vjb25kIHN0cmluZyBv
ZiB0aGUgc2hhZGVyLiBUaGUgcmVzdCBvZiB0aGUgc2hhZGVyIGJvZHkuCi0gICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgotICAgICJ2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7XG4iCi0gICAg
InZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNChkRmR4KHRleENvb3JkLngpLCBkRmR5
KHRleENvb3JkLnkpLCBmd2lkdGgodGV4Q29vcmQueCksIDEuMCk7IH1cbiIKLX07Ci0KLXN0YXRp
YyBjb25zdCBjaGFyICpUZXh0dXJlTE9EU2hkcltdID0KLXsKLSAgICAvLyBGaXJzdCBzdHJpbmcg
b2YgdGhlIHNoYWRlci4gVGhlIHJlcXVpcmVkIHByYWdtYSBkZWNsYXJhdGlvbi4KLSAgICAiI2V4
dGVuc2lvbiBHTF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kIDogZW5hYmxlXG4iLAotCi0gICAgLy8g
U2Vjb25kIHN0cmluZyBvZiB0aGUgc2hhZGVyLiBUaGUgcmVzdCBvZiB0aGUgc2hhZGVyIGJvZHku
Ci0gICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICJ2YXJ5aW5nIHZlYzIgdGV4
Q29vcmQwdjtcbiIKLSAgICAidW5pZm9ybSBmbG9hdCBsb2Q7XG4iCi0gICAgInVuaWZvcm0gc2Ft
cGxlcjJEIHRleDtcbiIKLSAgICAidm9pZCBtYWluKCkgeyB2ZWM0IGNvbG9yID0gdGV4dHVyZTJE
TG9kRVhUKHRleCwgdGV4Q29vcmQwdiwgbG9kKTsgfVxuIgotfTsKLQotY2xhc3MgU2hhZGVyRXh0
ZW5zaW9uVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICBTaGFk
ZXJFeHRlbnNpb25UZXN0KCkge30KLQotICBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIFNl
dFVwKCkKLSAgICB7Ci0gICAgICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJm1SZXNvdXJjZXMp
OwotICAgICAgICBtQ29tcGlsZXIgPSBOVUxMOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBU
ZWFyRG93bigpCi0gICAgewotICAgICAgICBEZXN0cm95Q29tcGlsZXIoKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIERlc3Ryb3lDb21waWxlcigpCi0gICAgewotICAgICAgICBpZiAobUNvbXBpbGVyKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBTaERlc3RydWN0KG1Db21waWxlcik7Ci0gICAgICAgICAg
ICBtQ29tcGlsZXIgPSBOVUxMOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBJbml0aWFs
aXplQ29tcGlsZXIoKQotICAgIHsKLSAgICAgICAgRGVzdHJveUNvbXBpbGVyKCk7Ci0gICAgICAg
IG1Db21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoR0xfRlJBR01FTlRfU0hBREVSLCBTSF9X
RUJHTF9TUEVDLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIX0dM
U0xfQ09NUEFUSUJJTElUWV9PVVRQVVQsICZtUmVzb3VyY2VzKTsKLSAgICAgICAgQVNTRVJUX1RS
VUUobUNvbXBpbGVyICE9IE5VTEwpIDw8ICJDb21waWxlciBjb3VsZCBub3QgYmUgY29uc3RydWN0
ZWQuIjsKLSAgICB9Ci0KLSAgICB2b2lkIFRlc3RTaGFkZXJFeHRlbnNpb24oY29uc3QgY2hhciAq
KnNoYWRlclN0cmluZ3MsIGludCBzdHJpbmdDb3VudCwgYm9vbCBleHBlY3RhdGlvbikKLSAgICB7
Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IFNoQ29tcGlsZShtQ29tcGlsZXIsIHNoYWRlclN0cmlu
Z3MsIHN0cmluZ0NvdW50LCAwKTsKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNvbXBpbGVM
b2cgPSBTaEdldEluZm9Mb2cobUNvbXBpbGVyKTsKLSAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGF0
aW9uLCBzdWNjZXNzKSA8PCBjb21waWxlTG9nOwotICAgIH0KLQotICBwcm90ZWN0ZWQ6Ci0gICAg
U2hCdWlsdEluUmVzb3VyY2VzIG1SZXNvdXJjZXM7Ci0gICAgU2hIYW5kbGUgbUNvbXBpbGVyOwot
fTsKLQotVEVTVF9GKFNoYWRlckV4dGVuc2lvblRlc3QsIEZyYWdEZXB0aEV4dFJlcXVpcmVzRXh0
KQotewotICAgIC8vIEV4dGVuc2lvbiBpcyByZXF1aXJlZCB0byBjb21waWxlIHByb3Blcmx5Lgot
ICAgIG1SZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGggPSAwOwotICAgIEluaXRpYWxpemVDb21waWxl
cigpOwotICAgIFRlc3RTaGFkZXJFeHRlbnNpb24oRnJhZ0RlcHRoRXh0U2hkciwgMiwgZmFsc2Up
OwotfQotCi1URVNUX0YoU2hhZGVyRXh0ZW5zaW9uVGVzdCwgRnJhZ0RlcHRoRXh0UmVxdWlyZXNQ
cmFnbWEpCi17Ci0gICAgLy8gUHJhZ21hIGlzIHJlcXVpcmVkIHRvIGNvbXBpbGUgcHJvcGVybHku
Ci0gICAgbVJlc291cmNlcy5FWFRfZnJhZ19kZXB0aCA9IDE7Ci0gICAgSW5pdGlhbGl6ZUNvbXBp
bGVyKCk7Ci0gICAgVGVzdFNoYWRlckV4dGVuc2lvbigmRnJhZ0RlcHRoRXh0U2hkclsxXSwgMSwg
ZmFsc2UpOwotfQotCi1URVNUX0YoU2hhZGVyRXh0ZW5zaW9uVGVzdCwgRnJhZ0RlcHRoRXh0Q29t
cGlsZXMpCi17Ci0gICAgLy8gVGVzdCB0aGF0IGl0IGNvbXBpbGVzIHByb3Blcmx5IHdpdGggZXh0
ZW5zaW9uIGVuYWJsZWQuCi0gICAgbVJlc291cmNlcy5FWFRfZnJhZ19kZXB0aCA9IDE7Ci0gICAg
SW5pdGlhbGl6ZUNvbXBpbGVyKCk7Ci0gICAgVGVzdFNoYWRlckV4dGVuc2lvbihGcmFnRGVwdGhF
eHRTaGRyLCAyLCB0cnVlKTsKLX0KLQotVEVTVF9GKFNoYWRlckV4dGVuc2lvblRlc3QsIEZyYWdE
ZXB0aEV4dFJlc2V0c0ludGVybmFsU3RhdGVzKQotewotICAgIC8vIFRlc3QgdGhhdCBleHRlbnNp
b24gaW50ZXJuYWwgc3RhdGVzIGFyZSByZXNldCBwcm9wZXJseSBiZXR3ZWVuIGNvbXBpbGVzLgot
ICAgIG1SZXNvdXJjZXMuRVhUX2ZyYWdfZGVwdGggPSAxOwotICAgIEluaXRpYWxpemVDb21waWxl
cigpOwotCi0gICAgVGVzdFNoYWRlckV4dGVuc2lvbihGcmFnRGVwdGhFeHRTaGRyLCAyLCB0cnVl
KTsKLSAgICBUZXN0U2hhZGVyRXh0ZW5zaW9uKCZGcmFnRGVwdGhFeHRTaGRyWzFdLCAxLCBmYWxz
ZSk7Ci0gICAgVGVzdFNoYWRlckV4dGVuc2lvbihGcmFnRGVwdGhFeHRTaGRyLCAyLCB0cnVlKTsK
LX0KLQotVEVTVF9GKFNoYWRlckV4dGVuc2lvblRlc3QsIFN0YW5kRGVyaXZFeHRSZXF1aXJlc0V4
dCkKLXsKLSAgICAvLyBFeHRlbnNpb24gaXMgcmVxdWlyZWQgdG8gY29tcGlsZSBwcm9wZXJseS4K
LSAgICBtUmVzb3VyY2VzLk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA9IDA7Ci0gICAgSW5pdGlh
bGl6ZUNvbXBpbGVyKCk7Ci0gICAgVGVzdFNoYWRlckV4dGVuc2lvbihTdGFuZERlcml2RXh0U2hk
ciwgMiwgZmFsc2UpOwotfQotCi1URVNUX0YoU2hhZGVyRXh0ZW5zaW9uVGVzdCwgU3RhbmREZXJp
dkV4dFJlcXVpcmVzUHJhZ21hKQotewotICAgIC8vIFByYWdtYSBpcyByZXF1aXJlZCB0byBjb21w
aWxlIHByb3Blcmx5LgotICAgIG1SZXNvdXJjZXMuT0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzID0g
MTsKLSAgICBJbml0aWFsaXplQ29tcGlsZXIoKTsKLSAgICBUZXN0U2hhZGVyRXh0ZW5zaW9uKCZT
dGFuZERlcml2RXh0U2hkclsxXSwgMSwgZmFsc2UpOwotfQotCi1URVNUX0YoU2hhZGVyRXh0ZW5z
aW9uVGVzdCwgU3RhbmREZXJpdkV4dENvbXBpbGVzKQotewotICAgIC8vIFRlc3QgdGhhdCBpdCBj
b21waWxlcyBwcm9wZXJseSB3aXRoIGV4dGVuc2lvbiBlbmFibGVkLgotICAgIG1SZXNvdXJjZXMu
T0VTX3N0YW5kYXJkX2Rlcml2YXRpdmVzID0gMTsKLSAgICBJbml0aWFsaXplQ29tcGlsZXIoKTsK
LSAgICBUZXN0U2hhZGVyRXh0ZW5zaW9uKFN0YW5kRGVyaXZFeHRTaGRyLCAyLCB0cnVlKTsKLX0K
LQotVEVTVF9GKFNoYWRlckV4dGVuc2lvblRlc3QsIFN0YW5kRGVyaXZFeHRSZXNldHNJbnRlcm5h
bFN0YXRlcykKLXsKLSAgICAvLyBUZXN0IHRoYXQgZXh0ZW5zaW9uIGludGVybmFsIHN0YXRlcyBh
cmUgcmVzZXQgcHJvcGVybHkgYmV0d2VlbiBjb21waWxlcy4KLSAgICBtUmVzb3VyY2VzLk9FU19z
dGFuZGFyZF9kZXJpdmF0aXZlcyA9IDE7Ci0gICAgSW5pdGlhbGl6ZUNvbXBpbGVyKCk7Ci0KLSAg
ICBUZXN0U2hhZGVyRXh0ZW5zaW9uKFN0YW5kRGVyaXZFeHRTaGRyLCAyLCB0cnVlKTsKLSAgICBU
ZXN0U2hhZGVyRXh0ZW5zaW9uKCZTdGFuZERlcml2RXh0U2hkclsxXSwgMSwgZmFsc2UpOwotICAg
IFRlc3RTaGFkZXJFeHRlbnNpb24oU3RhbmREZXJpdkV4dFNoZHIsIDIsIHRydWUpOwotICAgIFRl
c3RTaGFkZXJFeHRlbnNpb24oJlN0YW5kRGVyaXZFeHRTaGRyWzFdLCAxLCBmYWxzZSk7Ci19Ci0K
LVRFU1RfRihTaGFkZXJFeHRlbnNpb25UZXN0LCBUZXh0dXJlTE9ERXh0UmVxdWlyZXNFeHQpCi17
Ci0gICAgLy8gRXh0ZW5zaW9uIGlzIHJlcXVpcmVkIHRvIGNvbXBpbGUgcHJvcGVybHkuCi0gICAg
bVJlc291cmNlcy5FWFRfc2hhZGVyX3RleHR1cmVfbG9kID0gMDsKLSAgICBJbml0aWFsaXplQ29t
cGlsZXIoKTsKLSAgICBUZXN0U2hhZGVyRXh0ZW5zaW9uKFRleHR1cmVMT0RTaGRyLCAyLCBmYWxz
ZSk7Ci19Ci0KLVRFU1RfRihTaGFkZXJFeHRlbnNpb25UZXN0LCBUZXh0dXJlTE9ERXh0UmVxdWly
ZXNQcmFnbWEpCi17Ci0gICAgLy8gUHJhZ21hIGlzIHJlcXVpcmVkIHRvIGNvbXBpbGUgcHJvcGVy
bHkuCi0gICAgbVJlc291cmNlcy5FWFRfc2hhZGVyX3RleHR1cmVfbG9kID0gMTsKLSAgICBJbml0
aWFsaXplQ29tcGlsZXIoKTsKLSAgICBUZXN0U2hhZGVyRXh0ZW5zaW9uKCZUZXh0dXJlTE9EU2hk
clsxXSwgMSwgZmFsc2UpOwotfQotCi1URVNUX0YoU2hhZGVyRXh0ZW5zaW9uVGVzdCwgVGV4dHVy
ZUxPREV4dENvbXBpbGVzKQotewotICAgIC8vIFRlc3QgdGhhdCBpdCBjb21waWxlcyBwcm9wZXJs
eSB3aXRoIGV4dGVuc2lvbiBlbmFibGVkLgotICAgIG1SZXNvdXJjZXMuRVhUX3NoYWRlcl90ZXh0
dXJlX2xvZCA9IDE7Ci0gICAgSW5pdGlhbGl6ZUNvbXBpbGVyKCk7Ci0gICAgVGVzdFNoYWRlckV4
dGVuc2lvbihUZXh0dXJlTE9EU2hkciwgMiwgdHJ1ZSk7Ci19Ci0KLVRFU1RfRihTaGFkZXJFeHRl
bnNpb25UZXN0LCBUZXh0dXJlTE9ERXh0UmVzZXRzSW50ZXJuYWxTdGF0ZXMpCi17Ci0gICAgLy8g
VGVzdCB0aGF0IGV4dGVuc2lvbiBpbnRlcm5hbCBzdGF0ZXMgYXJlIHJlc2V0IHByb3Blcmx5IGJl
dHdlZW4gY29tcGlsZXMuCi0gICAgbVJlc291cmNlcy5FWFRfc2hhZGVyX3RleHR1cmVfbG9kID0g
MTsKLSAgICBJbml0aWFsaXplQ29tcGlsZXIoKTsKLQotICAgIFRlc3RTaGFkZXJFeHRlbnNpb24o
JlRleHR1cmVMT0RTaGRyWzFdLCAxLCBmYWxzZSk7Ci0gICAgVGVzdFNoYWRlckV4dGVuc2lvbihU
ZXh0dXJlTE9EU2hkciwgMiwgdHJ1ZSk7Ci0gICAgVGVzdFNoYWRlckV4dGVuc2lvbigmVGV4dHVy
ZUxPRFNoZHJbMV0sIDEsIGZhbHNlKTsKLSAgICBUZXN0U2hhZGVyRXh0ZW5zaW9uKFRleHR1cmVM
T0RTaGRyLCAyLCB0cnVlKTsKLX0KLQotLy8gVGVzdCBhIGJ1ZyB3aGVyZSB3ZSBjb3VsZCBtb2Rp
ZnkgdGhlIHZhbHVlIG9mIGEgYnVpbHRpbiB2YXJpYWJsZS4KLVRFU1RfRihTaGFkZXJFeHRlbnNp
b25UZXN0LCBCdWlsdGluUmV3cml0aW5nQnVnKQotewotICAgIG1SZXNvdXJjZXMuTWF4RHJhd0J1
ZmZlcnMgPSA0OwotICAgIG1SZXNvdXJjZXMuRVhUX2RyYXdfYnVmZmVycyA9IDE7Ci0gICAgSW5p
dGlhbGl6ZUNvbXBpbGVyKCk7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5n
ID0KLSAgICAgICAgIiNleHRlbnNpb24gR0xfRVhUX2RyYXdfYnVmZmVycyA6IHJlcXVpcmVcbiIK
LSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgotICAgICAgICAiICAgIGdsX0ZyYWdEYXRhW2dsX01heERyYXdCdWZmZXJzXSA9IHZl
YzQoMC4wKTtcbiIKLSAgICAgICAgIn0iOwotCi0gICAgY29uc3QgY2hhciAqc2hhZGVyU3RyaW5n
c1tdID0geyBzaGFkZXJTdHJpbmcuY19zdHIoKSB9OwotCi0gICAgVGVzdFNoYWRlckV4dGVuc2lv
bihzaGFkZXJTdHJpbmdzLCAxLCBmYWxzZSk7Ci0gICAgVGVzdFNoYWRlckV4dGVuc2lvbihzaGFk
ZXJTdHJpbmdzLCAxLCBmYWxzZSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvU2hhZGVyVmFyaWFibGVfdGVzdC5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvU2hhZGVyVmFy
aWFibGVfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiOTBmMWY1ZDNl
Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29t
cGlsZXJfdGVzdHMvU2hhZGVyVmFyaWFibGVfdGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0
MjEgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBDb2xsZWN0VmFyaWFibGVzX3Rlc3QuY3BwOgot
Ly8gICBTb21lIHRlc3RzIGZvciBzaGFkZXIgaW5zcGVjdGlvbgotLy8KLQotI2luY2x1ZGUgImFu
Z2xlX2dsLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9Db21waWxlci5oIgotI2lu
Y2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0K
LW5hbWVzcGFjZSBzaAotewotCi1URVNUKFNoYWRlclZhcmlhYmxlVGVzdCwgRmluZEluZm9CeU1h
cHBlZE5hbWUpCi17Ci0gICAgLy8gc3RydWN0IEEgewotICAgIC8vICAgZmxvYXQgeFsyXTsKLSAg
ICAvLyAgIHZlYzMgeTsKLSAgICAvLyB9OwotICAgIC8vIHN0cnVjdCBCIHsKLSAgICAvLyAgIEEg
YVszXTsKLSAgICAvLyB9OwotICAgIC8vIEIgdW5pWzJdOwotICAgIFNoYWRlclZhcmlhYmxlIHVu
aTsKLSAgICB1bmkuYXJyYXlTaXplID0gMjsKLSAgICB1bmkubmFtZSA9ICJ1bmkiOwotICAgIHVu
aS5tYXBwZWROYW1lID0gIm1fdW5pIjsKLSAgICB1bmkuc3RydWN0TmFtZSA9ICJCIjsKLSAgICB7
Ci0gICAgICAgIFNoYWRlclZhcmlhYmxlIGE7Ci0gICAgICAgIGEuYXJyYXlTaXplID0gMzsKLSAg
ICAgICAgYS5uYW1lID0gImEiOwotICAgICAgICBhLm1hcHBlZE5hbWUgPSAibV9hIjsKLSAgICAg
ICAgYS5zdHJ1Y3ROYW1lID0gIkEiOwotICAgICAgICB7Ci0gICAgICAgICAgICBTaGFkZXJWYXJp
YWJsZSB4KEdMX0ZMT0FULCAyKTsKLSAgICAgICAgICAgIHgubmFtZSA9ICJ4IjsKLSAgICAgICAg
ICAgIHgubWFwcGVkTmFtZSA9ICJtX3giOwotICAgICAgICAgICAgYS5maWVsZHMucHVzaF9iYWNr
KHgpOwotCi0gICAgICAgICAgICBTaGFkZXJWYXJpYWJsZSB5KEdMX0ZMT0FUX1ZFQzMsIDApOwot
ICAgICAgICAgICAgeS5uYW1lID0gInkiOwotICAgICAgICAgICAgeS5tYXBwZWROYW1lID0gIm1f
eSI7Ci0gICAgICAgICAgICBhLmZpZWxkcy5wdXNoX2JhY2soeSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgdW5pLmZpZWxkcy5wdXNoX2JhY2soYSk7Ci0gICAgfQotCi0gICAgY29uc3QgU2hhZGVyVmFy
aWFibGUgKmxlYWZWYXIgPSBudWxscHRyOwotICAgIHN0ZDo6c3RyaW5nIG9yaWdpbmFsRnVsbE5h
bWU7Ci0KLSAgICBzdGQ6OnN0cmluZyBtYXBwZWRGdWxsTmFtZSA9ICJ3cm9uZ05hbWUiOwotICAg
IEVYUEVDVF9GQUxTRSh1bmkuZmluZEluZm9CeU1hcHBlZE5hbWUoCi0gICAgICAgIG1hcHBlZEZ1
bGxOYW1lLCAmbGVhZlZhciwgJm9yaWdpbmFsRnVsbE5hbWUpKTsKLQotICAgIG1hcHBlZEZ1bGxO
YW1lID0gIm1fdW5pIjsKLSAgICBFWFBFQ1RfVFJVRSh1bmkuZmluZEluZm9CeU1hcHBlZE5hbWUo
Ci0gICAgICAgIG1hcHBlZEZ1bGxOYW1lLCAmbGVhZlZhciwgJm9yaWdpbmFsRnVsbE5hbWUpKTsK
LSAgICBFWFBFQ1RfRVEoJnVuaSwgbGVhZlZhcik7Ci0gICAgRVhQRUNUX1NUUkVRKCJ1bmkiLCBv
cmlnaW5hbEZ1bGxOYW1lLmNfc3RyKCkpOwotCi0gICAgbWFwcGVkRnVsbE5hbWUgPSAibV91bmlb
MF0ubV9hWzFdLndyb25nTmFtZSI7Ci0gICAgRVhQRUNUX0ZBTFNFKHVuaS5maW5kSW5mb0J5TWFw
cGVkTmFtZSgKLSAgICAgICAgbWFwcGVkRnVsbE5hbWUsICZsZWFmVmFyLCAmb3JpZ2luYWxGdWxs
TmFtZSkpOwotCi0gICAgbWFwcGVkRnVsbE5hbWUgPSAibV91bmlbMF0ubV9hWzFdLm1feCI7Ci0g
ICAgRVhQRUNUX1RSVUUodW5pLmZpbmRJbmZvQnlNYXBwZWROYW1lKAotICAgICAgICBtYXBwZWRG
dWxsTmFtZSwgJmxlYWZWYXIsICZvcmlnaW5hbEZ1bGxOYW1lKSk7Ci0gICAgRVhQRUNUX0VRKCYo
dW5pLmZpZWxkc1swXS5maWVsZHNbMF0pLCBsZWFmVmFyKTsKLSAgICBFWFBFQ1RfU1RSRVEoInVu
aVswXS5hWzFdLngiLCBvcmlnaW5hbEZ1bGxOYW1lLmNfc3RyKCkpOwotCi0gICAgbWFwcGVkRnVs
bE5hbWUgPSAibV91bmlbMF0ubV9hWzFdLm1feFswXSI7Ci0gICAgRVhQRUNUX1RSVUUodW5pLmZp
bmRJbmZvQnlNYXBwZWROYW1lKAotICAgICAgICBtYXBwZWRGdWxsTmFtZSwgJmxlYWZWYXIsICZv
cmlnaW5hbEZ1bGxOYW1lKSk7Ci0gICAgRVhQRUNUX0VRKCYodW5pLmZpZWxkc1swXS5maWVsZHNb
MF0pLCBsZWFmVmFyKTsKLSAgICBFWFBFQ1RfU1RSRVEoInVuaVswXS5hWzFdLnhbMF0iLCBvcmln
aW5hbEZ1bGxOYW1lLmNfc3RyKCkpOwotCi0gICAgbWFwcGVkRnVsbE5hbWUgPSAibV91bmlbMF0u
bV9hWzFdLm1feSI7Ci0gICAgRVhQRUNUX1RSVUUodW5pLmZpbmRJbmZvQnlNYXBwZWROYW1lKAot
ICAgICAgICBtYXBwZWRGdWxsTmFtZSwgJmxlYWZWYXIsICZvcmlnaW5hbEZ1bGxOYW1lKSk7Ci0g
ICAgRVhQRUNUX0VRKCYodW5pLmZpZWxkc1swXS5maWVsZHNbMV0pLCBsZWFmVmFyKTsKLSAgICBF
WFBFQ1RfU1RSRVEoInVuaVswXS5hWzFdLnkiLCBvcmlnaW5hbEZ1bGxOYW1lLmNfc3RyKCkpOwot
fQotCi1URVNUKFNoYWRlclZhcmlhYmxlVGVzdCwgSXNTYW1lVW5pZm9ybVdpdGhEaWZmZXJlbnRG
aWVsZE9yZGVyKQotewotICAgIC8vIHN0cnVjdCBBIHsKLSAgICAvLyAgIGZsb2F0IHg7Ci0gICAg
Ly8gICBmbG9hdCB5OwotICAgIC8vIH07Ci0gICAgLy8gdW5pZm9ybSBBIHVuaTsKLSAgICBVbmlm
b3JtIHZ4X2E7Ci0gICAgdnhfYS5hcnJheVNpemUgPSAwOwotICAgIHZ4X2EubmFtZSA9ICJ1bmki
OwotICAgIHZ4X2EubWFwcGVkTmFtZSA9ICJtX3VuaSI7Ci0gICAgdnhfYS5zdHJ1Y3ROYW1lID0g
IkEiOwotICAgIHsKLSAgICAgICAgU2hhZGVyVmFyaWFibGUgeChHTF9GTE9BVCwgMCk7Ci0gICAg
ICAgIHgubmFtZSA9ICJ4IjsKLSAgICAgICAgeC5tYXBwZWROYW1lID0gIm1feCI7Ci0gICAgICAg
IHZ4X2EuZmllbGRzLnB1c2hfYmFjayh4KTsKLQotICAgICAgICBTaGFkZXJWYXJpYWJsZSB5KEdM
X0ZMT0FULCAwKTsKLSAgICAgICAgeS5uYW1lID0gInkiOwotICAgICAgICB5Lm1hcHBlZE5hbWUg
PSAibV95IjsKLSAgICAgICAgdnhfYS5maWVsZHMucHVzaF9iYWNrKHkpOwotICAgIH0KLQotICAg
IC8vIHN0cnVjdCBBIHsKLSAgICAvLyAgIGZsb2F0IHk7Ci0gICAgLy8gICBmbG9hdCB4OwotICAg
IC8vIH07Ci0gICAgLy8gdW5pZm9ybSBBIHVuaTsKLSAgICBVbmlmb3JtIGZ4X2E7Ci0gICAgZnhf
YS5hcnJheVNpemUgPSAwOwotICAgIGZ4X2EubmFtZSA9ICJ1bmkiOwotICAgIGZ4X2EubWFwcGVk
TmFtZSA9ICJtX3VuaSI7Ci0gICAgZnhfYS5zdHJ1Y3ROYW1lID0gIkEiOwotICAgIHsKLSAgICAg
ICAgU2hhZGVyVmFyaWFibGUgeShHTF9GTE9BVCwgMCk7Ci0gICAgICAgIHkubmFtZSA9ICJ5IjsK
LSAgICAgICAgeS5tYXBwZWROYW1lID0gIm1feSI7Ci0gICAgICAgIGZ4X2EuZmllbGRzLnB1c2hf
YmFjayh5KTsKLQotICAgICAgICBTaGFkZXJWYXJpYWJsZSB4KEdMX0ZMT0FULCAwKTsKLSAgICAg
ICAgeC5uYW1lID0gIngiOwotICAgICAgICB4Lm1hcHBlZE5hbWUgPSAibV94IjsKLSAgICAgICAg
ZnhfYS5maWVsZHMucHVzaF9iYWNrKHgpOwotICAgIH0KLQotICAgIEVYUEVDVF9GQUxTRSh2eF9h
LmlzU2FtZVVuaWZvcm1BdExpbmtUaW1lKGZ4X2EpKTsKLX0KLQotVEVTVChTaGFkZXJWYXJpYWJs
ZVRlc3QsIElzU2FtZVVuaWZvcm1XaXRoRGlmZmVyZW50U3RydWN0TmFtZXMpCi17Ci0gICAgLy8g
c3RydWN0IEEgewotICAgIC8vICAgZmxvYXQgeDsKLSAgICAvLyAgIGZsb2F0IHk7Ci0gICAgLy8g
fTsKLSAgICAvLyB1bmlmb3JtIEEgdW5pOwotICAgIFVuaWZvcm0gdnhfYTsKLSAgICB2eF9hLmFy
cmF5U2l6ZSA9IDA7Ci0gICAgdnhfYS5uYW1lID0gInVuaSI7Ci0gICAgdnhfYS5tYXBwZWROYW1l
ID0gIm1fdW5pIjsKLSAgICB2eF9hLnN0cnVjdE5hbWUgPSAiQSI7Ci0gICAgewotICAgICAgICBT
aGFkZXJWYXJpYWJsZSB4KEdMX0ZMT0FULCAwKTsKLSAgICAgICAgeC5uYW1lID0gIngiOwotICAg
ICAgICB4Lm1hcHBlZE5hbWUgPSAibV94IjsKLSAgICAgICAgdnhfYS5maWVsZHMucHVzaF9iYWNr
KHgpOwotCi0gICAgICAgIFNoYWRlclZhcmlhYmxlIHkoR0xfRkxPQVQsIDApOwotICAgICAgICB5
Lm5hbWUgPSAieSI7Ci0gICAgICAgIHkubWFwcGVkTmFtZSA9ICJtX3kiOwotICAgICAgICB2eF9h
LmZpZWxkcy5wdXNoX2JhY2soeSk7Ci0gICAgfQotCi0gICAgLy8gc3RydWN0IEIgewotICAgIC8v
ICAgZmxvYXQgeDsKLSAgICAvLyAgIGZsb2F0IHk7Ci0gICAgLy8gfTsKLSAgICAvLyB1bmlmb3Jt
IEIgdW5pOwotICAgIFVuaWZvcm0gZnhfYTsKLSAgICBmeF9hLmFycmF5U2l6ZSA9IDA7Ci0gICAg
ZnhfYS5uYW1lID0gInVuaSI7Ci0gICAgZnhfYS5tYXBwZWROYW1lID0gIm1fdW5pIjsKLSAgICB7
Ci0gICAgICAgIFNoYWRlclZhcmlhYmxlIHgoR0xfRkxPQVQsIDApOwotICAgICAgICB4Lm5hbWUg
PSAieCI7Ci0gICAgICAgIHgubWFwcGVkTmFtZSA9ICJtX3giOwotICAgICAgICBmeF9hLmZpZWxk
cy5wdXNoX2JhY2soeCk7Ci0KLSAgICAgICAgU2hhZGVyVmFyaWFibGUgeShHTF9GTE9BVCwgMCk7
Ci0gICAgICAgIHkubmFtZSA9ICJ5IjsKLSAgICAgICAgeS5tYXBwZWROYW1lID0gIm1feSI7Ci0g
ICAgICAgIGZ4X2EuZmllbGRzLnB1c2hfYmFjayh5KTsKLSAgICB9Ci0KLSAgICBmeF9hLnN0cnVj
dE5hbWUgPSAiQiI7Ci0gICAgRVhQRUNUX0ZBTFNFKHZ4X2EuaXNTYW1lVW5pZm9ybUF0TGlua1Rp
bWUoZnhfYSkpOwotCi0gICAgZnhfYS5zdHJ1Y3ROYW1lID0gIkEiOwotICAgIEVYUEVDVF9UUlVF
KHZ4X2EuaXNTYW1lVW5pZm9ybUF0TGlua1RpbWUoZnhfYSkpOwotCi0gICAgZnhfYS5zdHJ1Y3RO
YW1lID0gIiI7Ci0gICAgRVhQRUNUX0ZBTFNFKHZ4X2EuaXNTYW1lVW5pZm9ybUF0TGlua1RpbWUo
ZnhfYSkpOwotfQotCi1URVNUKFNoYWRlclZhcmlhYmxlVGVzdCwgSXNTYW1lVmFyeWluZ1dpdGhE
aWZmZXJlbnRJbnZhcmlhbmNlKQotewotICAgIC8vIGludmFyaWFudCB2YXJ5aW5nIGZsb2F0IHZh
cnk7Ci0gICAgVmFyeWluZyB2eDsKLSAgICB2eC50eXBlID0gR0xfRkxPQVQ7Ci0gICAgdnguYXJy
YXlTaXplID0gMDsKLSAgICB2eC5wcmVjaXNpb24gPSBHTF9NRURJVU1fRkxPQVQ7Ci0gICAgdngu
bmFtZSA9ICJ2YXJ5IjsKLSAgICB2eC5tYXBwZWROYW1lID0gIm1fdmFyeSI7Ci0gICAgdnguc3Rh
dGljVXNlID0gdHJ1ZTsKLSAgICB2eC5pc0ludmFyaWFudCA9IHRydWU7Ci0KLSAgICAvLyB2YXJ5
aW5nIGZsb2F0IHZhcnk7Ci0gICAgVmFyeWluZyBmeDsKLSAgICBmeC50eXBlID0gR0xfRkxPQVQ7
Ci0gICAgZnguYXJyYXlTaXplID0gMDsKLSAgICBmeC5wcmVjaXNpb24gPSBHTF9NRURJVU1fRkxP
QVQ7Ci0gICAgZngubmFtZSA9ICJ2YXJ5IjsKLSAgICBmeC5tYXBwZWROYW1lID0gIm1fdmFyeSI7
Ci0gICAgZnguc3RhdGljVXNlID0gdHJ1ZTsKLSAgICBmeC5pc0ludmFyaWFudCA9IGZhbHNlOwot
Ci0gICAgLy8gRGVmYXVsdCB0byBFU1NMMSBiZWhhdmlvcjogaW52YXJpYW5jZSBtdXN0IG1hdGNo
Ci0gICAgRVhQRUNUX0ZBTFNFKHZ4LmlzU2FtZVZhcnlpbmdBdExpbmtUaW1lKGZ4KSk7Ci0gICAg
RVhQRUNUX0ZBTFNFKHZ4LmlzU2FtZVZhcnlpbmdBdExpbmtUaW1lKGZ4LCAxMDApKTsKLSAgICAv
LyBFU1NMMyBiZWhhdmlvcjogaW52YXJpYW5jZSBkb2Vzbid0IG5lZWQgdG8gbWF0Y2gKLSAgICBF
WFBFQ1RfVFJVRSh2eC5pc1NhbWVWYXJ5aW5nQXRMaW5rVGltZShmeCwgMzAwKSk7Ci0KLSAgICAv
LyBpbnZhcmlhbnQgdmFyeWluZyBmbG9hdCB2YXJ5OwotICAgIGZ4LmlzSW52YXJpYW50ID0gdHJ1
ZTsKLSAgICBFWFBFQ1RfVFJVRSh2eC5pc1NhbWVWYXJ5aW5nQXRMaW5rVGltZShmeCkpOwotICAg
IEVYUEVDVF9UUlVFKHZ4LmlzU2FtZVZhcnlpbmdBdExpbmtUaW1lKGZ4LCAxMDApKTsKLSAgICBF
WFBFQ1RfVFJVRSh2eC5pc1NhbWVWYXJ5aW5nQXRMaW5rVGltZShmeCwgMzAwKSk7Ci19Ci0KLS8v
IFRlc3QgdGhhdCB1c2luZyBpbnZhcmlhbnQgdmFyeWluZ3MgZG9lc24ndCB0cmlnZ2VyIGEgZG91
YmxlIGRlbGV0ZS4KLVRFU1QoU2hhZGVyVmFyaWFibGVUZXN0LCBJbnZhcmlhbnREb3VibGVEZWxl
dGVCdWcpCi17Ci0gICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKLSAgICBTaEluaXRC
dWlsdEluUmVzb3VyY2VzKCZyZXNvdXJjZXMpOwotCi0gICAgU2hIYW5kbGUgY29tcGlsZXIgPSBT
aENvbnN0cnVjdENvbXBpbGVyKEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dMRVMyX1NQRUMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIX0dMU0xfQ09NUEFUSUJJ
TElUWV9PVVRQVVQsICZyZXNvdXJjZXMpOwotICAgIEVYUEVDVF9ORShzdGF0aWNfY2FzdDxTaEhh
bmRsZT4oMCksIGNvbXBpbGVyKTsKLQotICAgIGNvbnN0IGNoYXIgKnByb2dyYW1bXSA9Ci0gICAg
ewotICAgICAgICAiYXR0cmlidXRlIHZlYzQgcG9zaXRpb247XG4iCi0gICAgICAgICJ2YXJ5aW5n
IGZsb2F0IHY7XG4iCi0gICAgICAgICJpbnZhcmlhbnQgdjtcbiIKLSAgICAgICAgInZvaWQgbWFp
bigpIHtcbiIKLSAgICAgICAgIiAgdiA9IDEuMDtcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRpb24g
PSBwb3NpdGlvbjtcbiIKLSAgICAgICAgIn0iCi0gICAgfTsKLQotICAgIEVYUEVDVF9UUlVFKFNo
Q29tcGlsZShjb21waWxlciwgcHJvZ3JhbSwgMSwgU0hfT0JKRUNUX0NPREUpKTsKLSAgICBFWFBF
Q1RfVFJVRShTaENvbXBpbGUoY29tcGlsZXIsIHByb2dyYW0sIDEsIFNIX09CSkVDVF9DT0RFKSk7
Ci0gICAgU2hEZXN0cnVjdChjb21waWxlcik7Ci19Ci0KLVRFU1QoU2hhZGVyVmFyaWFibGVUZXN0
LCBJbGxlZ2FsSW52YXJpYW50VmFyeWluZykKLXsKLSAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVz
b3VyY2VzOwotICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7Ci0KLSAgICBT
aEhhbmRsZSBjb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoR0xfVkVSVEVYX1NIQURFUiwg
U0hfR0xFUzJfU1BFQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCwgJnJlc291cmNlcyk7Ci0gICAgRVhQRUNU
X05FKHN0YXRpY19jYXN0PFNoSGFuZGxlPigwKSwgY29tcGlsZXIpOwotCi0gICAgY29uc3QgY2hh
ciAqcHJvZ3JhbTFbXSA9Ci0gICAgewotICAgICAgICAidm9pZCBmb28oKSB7XG4iCi0gICAgICAg
ICIgIHZlYzQgdjtcbiIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgInZhcnlpbmcgdmVjNCB2X3Zh
cnlpbmc7XG4iCi0gICAgICAgICJpbnZhcmlhbnQgdl92YXJ5aW5nO1xuIgotICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgotICAgICAgICAiICBmb28oKTtcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRp
b24gPSB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJ9IgotICAgIH07Ci0gICAgY29uc3QgY2hhciAq
cHJvZ3JhbTJbXSA9Ci0gICAgewotICAgICAgICAidmFyeWluZyB2ZWM0IHZfdmFyeWluZztcbiIK
LSAgICAgICAgInZvaWQgZm9vKCkge1xuIgotICAgICAgICAiICBpbnZhcmlhbnQgdl92YXJ5aW5n
O1xuIgotICAgICAgICAifVxuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAi
ICBmb28oKTtcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2X3Zhcnlpbmc7XG4iCi0gICAg
ICAgICJ9IgotICAgIH07Ci0KLSAgICBFWFBFQ1RfVFJVRShTaENvbXBpbGUoY29tcGlsZXIsIHBy
b2dyYW0xLCAxLCBTSF9WQVJJQUJMRVMpKTsKLSAgICBFWFBFQ1RfRkFMU0UoU2hDb21waWxlKGNv
bXBpbGVyLCBwcm9ncmFtMiwgMSwgU0hfVkFSSUFCTEVTKSk7Ci19Ci0KLVRFU1QoU2hhZGVyVmFy
aWFibGVUZXN0LCBJbnZhcmlhbnRMZWFrQWNyb3NzU2hhZGVycykKLXsKLSAgICBTaEJ1aWx0SW5S
ZXNvdXJjZXMgcmVzb3VyY2VzOwotICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNl
cyk7Ci0KLSAgICBTaEhhbmRsZSBjb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoR0xfVkVS
VEVYX1NIQURFUiwgU0hfR0xFUzJfU1BFQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCwgJnJlc291cmNlcyk7
Ci0gICAgRVhQRUNUX05FKHN0YXRpY19jYXN0PFNoSGFuZGxlPigwKSwgY29tcGlsZXIpOwotCi0g
ICAgY29uc3QgY2hhciAqcHJvZ3JhbTFbXSA9Ci0gICAgewotICAgICAgICAidmFyeWluZyB2ZWM0
IHZfdmFyeWluZztcbiIKLSAgICAgICAgImludmFyaWFudCB2X3Zhcnlpbmc7XG4iCi0gICAgICAg
ICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdl92YXJ5aW5nO1xu
IgotICAgICAgICAifSIKLSAgICB9OwotICAgIGNvbnN0IGNoYXIgKnByb2dyYW0yW10gPQotICAg
IHsKLSAgICAgICAgInZhcnlpbmcgdmVjNCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJ2b2lkIG1h
aW4oKSB7XG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdl92YXJ5aW5nO1xuIgotICAgICAg
ICAifSIKLSAgICB9OwotCi0gICAgRVhQRUNUX1RSVUUoU2hDb21waWxlKGNvbXBpbGVyLCBwcm9n
cmFtMSwgMSwgU0hfVkFSSUFCTEVTKSk7Ci0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlZhcnlp
bmc+ICp2YXJ5aW5ncyA9IFNoR2V0VmFyeWluZ3MoY29tcGlsZXIpOwotICAgIGZvciAoY29uc3Qg
c2g6OlZhcnlpbmcgJnZhcnlpbmcgOiAqdmFyeWluZ3MpCi0gICAgewotICAgICAgICBpZiAodmFy
eWluZy5uYW1lID09ICJ2X3ZhcnlpbmciKQotICAgICAgICAgICAgRVhQRUNUX1RSVUUodmFyeWlu
Zy5pc0ludmFyaWFudCk7Ci0gICAgfQotICAgIEVYUEVDVF9UUlVFKFNoQ29tcGlsZShjb21waWxl
ciwgcHJvZ3JhbTIsIDEsIFNIX1ZBUklBQkxFUykpOwotICAgIHZhcnlpbmdzID0gU2hHZXRWYXJ5
aW5ncyhjb21waWxlcik7Ci0gICAgZm9yIChjb25zdCBzaDo6VmFyeWluZyAmdmFyeWluZyA6ICp2
YXJ5aW5ncykKLSAgICB7Ci0gICAgICAgIGlmICh2YXJ5aW5nLm5hbWUgPT0gInZfdmFyeWluZyIp
Ci0gICAgICAgICAgICBFWFBFQ1RfRkFMU0UodmFyeWluZy5pc0ludmFyaWFudCk7Ci0gICAgfQot
fQotCi1URVNUKFNoYWRlclZhcmlhYmxlVGVzdCwgR2xvYmFsSW52YXJpYW50TGVha0Fjcm9zc1No
YWRlcnMpCi17Ci0gICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKLSAgICBTaEluaXRC
dWlsdEluUmVzb3VyY2VzKCZyZXNvdXJjZXMpOwotCi0gICAgU2hIYW5kbGUgY29tcGlsZXIgPSBT
aENvbnN0cnVjdENvbXBpbGVyKEdMX1ZFUlRFWF9TSEFERVIsIFNIX0dMRVMyX1NQRUMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIX0dMU0xfQ09NUEFUSUJJ
TElUWV9PVVRQVVQsICZyZXNvdXJjZXMpOwotICAgIEVYUEVDVF9ORShzdGF0aWNfY2FzdDxTaEhh
bmRsZT4oMCksIGNvbXBpbGVyKTsKLQotICAgIGNvbnN0IGNoYXIgKnByb2dyYW0xW10gPQotICAg
IHsKLSAgICAgICAgIiNwcmFnbWEgU1RER0wgaW52YXJpYW50KGFsbClcbiIKLSAgICAgICAgInZh
cnlpbmcgdmVjNCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAg
ICAgICIgIGdsX1Bvc2l0aW9uID0gdl92YXJ5aW5nO1xuIgotICAgICAgICAifSIKLSAgICB9Owot
ICAgIGNvbnN0IGNoYXIgKnByb2dyYW0yW10gPQotICAgIHsKLSAgICAgICAgInZhcnlpbmcgdmVj
NCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGds
X1Bvc2l0aW9uID0gdl92YXJ5aW5nO1xuIgotICAgICAgICAifSIKLSAgICB9OwotCi0gICAgRVhQ
RUNUX1RSVUUoU2hDb21waWxlKGNvbXBpbGVyLCBwcm9ncmFtMSwgMSwgU0hfVkFSSUFCTEVTKSk7
Ci0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8c2g6OlZhcnlpbmc+ICp2YXJ5aW5ncyA9IFNoR2V0VmFy
eWluZ3MoY29tcGlsZXIpOwotICAgIGZvciAoY29uc3Qgc2g6OlZhcnlpbmcgJnZhcnlpbmcgOiAq
dmFyeWluZ3MpCi0gICAgewotICAgICAgICBpZiAodmFyeWluZy5uYW1lID09ICJ2X3Zhcnlpbmci
KQotICAgICAgICAgICAgRVhQRUNUX1RSVUUodmFyeWluZy5pc0ludmFyaWFudCk7Ci0gICAgfQot
ICAgIEVYUEVDVF9UUlVFKFNoQ29tcGlsZShjb21waWxlciwgcHJvZ3JhbTIsIDEsIFNIX1ZBUklB
QkxFUykpOwotICAgIHZhcnlpbmdzID0gU2hHZXRWYXJ5aW5ncyhjb21waWxlcik7Ci0gICAgZm9y
IChjb25zdCBzaDo6VmFyeWluZyAmdmFyeWluZyA6ICp2YXJ5aW5ncykKLSAgICB7Ci0gICAgICAg
IGlmICh2YXJ5aW5nLm5hbWUgPT0gInZfdmFyeWluZyIpCi0gICAgICAgICAgICBFWFBFQ1RfRkFM
U0UodmFyeWluZy5pc0ludmFyaWFudCk7Ci0gICAgfQotfQotCi1URVNUKFNoYWRlclZhcmlhYmxl
VGVzdCwgQnVpbHRpbkludmFyaWFudFZhcnlpbmcpCi17Ci0KLSAgICBTaEJ1aWx0SW5SZXNvdXJj
ZXMgcmVzb3VyY2VzOwotICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7Ci0K
LSAgICBTaEhhbmRsZSBjb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoR0xfVkVSVEVYX1NI
QURFUiwgU0hfR0xFUzJfU1BFQywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCwgJnJlc291cmNlcyk7Ci0gICAg
RVhQRUNUX05FKHN0YXRpY19jYXN0PFNoSGFuZGxlPigwKSwgY29tcGlsZXIpOwotCi0gICAgY29u
c3QgY2hhciAqcHJvZ3JhbTFbXSA9Ci0gICAgewotICAgICAgICAiaW52YXJpYW50IGdsX1Bvc2l0
aW9uO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBnbF9Qb3NpdGlv
biA9IHZlYzQoMCwgMCwgMCwgMCk7XG4iCi0gICAgICAgICJ9IgotICAgIH07Ci0gICAgY29uc3Qg
Y2hhciAqcHJvZ3JhbTJbXSA9Ci0gICAgewotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAg
ICAgICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwgMCwgMCwgMCk7XG4iCi0gICAgICAgICJ9Igot
ICAgIH07Ci0gICAgY29uc3QgY2hhciAqcHJvZ3JhbTNbXSA9Ci0gICAgewotICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgotICAgICAgICAiICBpbnZhcmlhbnQgZ2xfUG9zaXRpb247XG4iCi0gICAg
ICAgICIgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLCAwLCAwLCAwKTtcbiIKLSAgICAgICAgIn0iCi0g
ICAgfTsKLQotICAgIEVYUEVDVF9UUlVFKFNoQ29tcGlsZShjb21waWxlciwgcHJvZ3JhbTEsIDEs
IFNIX1ZBUklBQkxFUykpOwotICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHNoOjpWYXJ5aW5nPiAqdmFy
eWluZ3MgPSBTaEdldFZhcnlpbmdzKGNvbXBpbGVyKTsKLSAgICBmb3IgKGNvbnN0IHNoOjpWYXJ5
aW5nICZ2YXJ5aW5nIDogKnZhcnlpbmdzKQotICAgIHsKLSAgICAgICAgaWYgKHZhcnlpbmcubmFt
ZSA9PSAiZ2xfUG9zaXRpb24iKQotICAgICAgICAgICAgRVhQRUNUX1RSVUUodmFyeWluZy5pc0lu
dmFyaWFudCk7Ci0gICAgfQotICAgIEVYUEVDVF9UUlVFKFNoQ29tcGlsZShjb21waWxlciwgcHJv
Z3JhbTIsIDEsIFNIX1ZBUklBQkxFUykpOwotICAgIHZhcnlpbmdzID0gU2hHZXRWYXJ5aW5ncyhj
b21waWxlcik7Ci0gICAgZm9yIChjb25zdCBzaDo6VmFyeWluZyAmdmFyeWluZyA6ICp2YXJ5aW5n
cykKLSAgICB7Ci0gICAgICAgIGlmICh2YXJ5aW5nLm5hbWUgPT0gImdsX1Bvc2l0aW9uIikKLSAg
ICAgICAgICAgIEVYUEVDVF9GQUxTRSh2YXJ5aW5nLmlzSW52YXJpYW50KTsKLSAgICB9Ci0gICAg
RVhQRUNUX0ZBTFNFKFNoQ29tcGlsZShjb21waWxlciwgcHJvZ3JhbTMsIDEsIFNIX1ZBUklBQkxF
UykpOwotfQotCi19ICAvLyBuYW1lc3BhY2Ugc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9UeXBlVHJhY2tpbmdfdGVzdC5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvVHlwZVRy
YWNraW5nX3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGYwNWZiYzIz
Yy4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2Nv
bXBpbGVyX3Rlc3RzL1R5cGVUcmFja2luZ190ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1
NyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIFR5cGVUcmFja2luZ190ZXN0LmNwcDoKLS8vICAg
VGVzdCBmb3IgdHJhY2tpbmcgdHlwZXMgcmVzdWx0aW5nIGZyb20gbWF0aCBvcGVyYXRpb25zLCBp
bmNsdWRpbmcgdGhlaXIKLS8vICAgcHJlY2lzaW9uLgotLy8KLQotI2luY2x1ZGUgImFuZ2xlX2ds
LmgiCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLSNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxh
bmcuaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0b3JFU1NMLmgiCi0K
LWNsYXNzIFR5cGVUcmFja2luZ1Rlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAotewotICBwdWJs
aWM6Ci0gICAgVHlwZVRyYWNraW5nVGVzdCgpIHt9Ci0KLSAgcHJvdGVjdGVkOgotICAgIHZpcnR1
YWwgdm9pZCBTZXRVcCgpCi0gICAgewotICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3Vy
Y2VzOwotICAgICAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZyZXNvdXJjZXMpOwotICAgICAg
ICByZXNvdXJjZXMuRnJhZ21lbnRQcmVjaXNpb25IaWdoID0gMTsKLQotICAgICAgICBtVHJhbnNs
YXRvciA9IG5ldyBUcmFuc2xhdG9yRVNTTChHTF9GUkFHTUVOVF9TSEFERVIsIFNIX0dMRVMzX1NQ
RUMpOwotICAgICAgICBBU1NFUlRfVFJVRShtVHJhbnNsYXRvci0+SW5pdChyZXNvdXJjZXMpKTsK
LSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQotICAgIHsKLSAgICAgICAgZGVs
ZXRlIG1UcmFuc2xhdG9yOwotICAgIH0KLQotICAgIHZvaWQgY29tcGlsZShjb25zdCBzdGQ6OnN0
cmluZyYgc2hhZGVyU3RyaW5nKQotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciAqc2hhZGVyU3Ry
aW5nc1tdID0geyBzaGFkZXJTdHJpbmcuY19zdHIoKSB9OwotICAgICAgICBib29sIGNvbXBpbGF0
aW9uU3VjY2VzcyA9IG1UcmFuc2xhdG9yLT5jb21waWxlKHNoYWRlclN0cmluZ3MsIDEsIFNIX0lO
VEVSTUVESUFURV9UUkVFKTsKLSAgICAgICAgVEluZm9TaW5rICZpbmZvU2luayA9IG1UcmFuc2xh
dG9yLT5nZXRJbmZvU2luaygpOwotICAgICAgICBtSW5mb0xvZyAgICAgICAgICAgICAgICAgICAg
PSBSZW1vdmVTeW1ib2xJZHNGcm9tSW5mb0xvZyhpbmZvU2luay5pbmZvLmNfc3RyKCkpOwotICAg
ICAgICBpZiAoIWNvbXBpbGF0aW9uU3VjY2VzcykKLSAgICAgICAgICAgIEZBSUwoKSA8PCAiU2hh
ZGVyIGNvbXBpbGF0aW9uIGZhaWxlZCAiIDw8IG1JbmZvTG9nOwotICAgIH0KLQotICAgIGJvb2wg
Zm91bmRFcnJvckluSW50ZXJtZWRpYXRlVHJlZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1
cm4gZm91bmRJbkludGVybWVkaWF0ZVRyZWUoIkVSUk9SOiIpOwotICAgIH0KLQotICAgIGJvb2wg
Zm91bmRJbkludGVybWVkaWF0ZVRyZWUoY29uc3QgY2hhciogc3RyaW5nVG9GaW5kKSBjb25zdAot
ICAgIHsKLSAgICAgICAgcmV0dXJuIG1JbmZvTG9nLmZpbmQoc3RyaW5nVG9GaW5kKSAhPSBzdGQ6
OnN0cmluZzo6bnBvczsKLSAgICB9Ci0KLSAgcHJpdmF0ZToKLSAgICAvLyBSZW1vdmUgc3ltYm9s
IGlkcyBmcm9tIGluZm8gbG9nIC0gdGhlIHRlc3RzIGRvbid0IGNhcmUgYWJvdXQgdGhlbS4KLSAg
ICBzdGF0aWMgc3RkOjpzdHJpbmcgUmVtb3ZlU3ltYm9sSWRzRnJvbUluZm9Mb2coY29uc3QgY2hh
ciAqaW5mb0xvZykKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGZpbHRlcmVkTG9nKGluZm9M
b2cpOwotICAgICAgICBzaXplX3QgaWRQcmVmaXhQb3MgPSAwdTsKLSAgICAgICAgZG8KLSAgICAg
ICAgewotICAgICAgICAgICAgaWRQcmVmaXhQb3MgPSBmaWx0ZXJlZExvZy5maW5kKCIgKHN5bWJv
bCBpZCIpOwotICAgICAgICAgICAgaWYgKGlkUHJlZml4UG9zICE9IHN0ZDo6c3RyaW5nOjpucG9z
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHNpemVfdCBpZFN1ZmZpeFBvcyA9IGZp
bHRlcmVkTG9nLmZpbmQoIikiLCBpZFByZWZpeFBvcyk7Ci0gICAgICAgICAgICAgICAgZmlsdGVy
ZWRMb2cuZXJhc2UoaWRQcmVmaXhQb3MsIGlkU3VmZml4UG9zIC0gaWRQcmVmaXhQb3MgKyAxdSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gd2hpbGUgKGlkUHJlZml4UG9zICE9IHN0ZDo6c3Ry
aW5nOjpucG9zKTsKLSAgICAgICAgcmV0dXJuIGZpbHRlcmVkTG9nOwotICAgIH0KLQotICAgIFRy
YW5zbGF0b3JFU1NMICptVHJhbnNsYXRvcjsKLSAgICBzdGQ6OnN0cmluZyBtSW5mb0xvZzsKLX07
Ci0KLVRFU1RfRihUeXBlVHJhY2tpbmdUZXN0LCBGdW5jdGlvblByb3RvdHlwZU1hbmdsaW5nKQot
ewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJmbG9hdCBmdW4oZmxvYXQgYSk7XG4iCi0g
ICAgICAgICJ1bmlmb3JtIGZsb2F0IGY7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0g
ICAgICAgICIgICBmbG9hdCBmZiA9IGZ1bihmKTtcbiIKLSAgICAgICAgIiAgIGdsX0ZyYWdDb2xv
ciA9IHZlYzQoZmYpO1xuIgotICAgICAgICAifVxuIgotICAgICAgICAiZmxvYXQgZnVuKGZsb2F0
IGEpIHtcbiIKLSAgICAgICAgIiAgIHJldHVybiBhICogMi4wO1xuIgotICAgICAgICAifVxuIjsK
LSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJ
bkludGVybWVkaWF0ZVRyZWUoKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0
ZVRyZWUoIkZ1bmN0aW9uIFByb3RvdHlwZTogZnVuKGYxOyIpKTsKLSAgICBBU1NFUlRfVFJVRShm
b3VuZEluSW50ZXJtZWRpYXRlVHJlZSgiRnVuY3Rpb24gRGVmaW5pdGlvbjogZnVuKGYxOyIpKTsK
LX0KLQotVEVTVF9GKFR5cGVUcmFja2luZ1Rlc3QsIEJ1aWx0SW5GdW5jdGlvblJlc3VsdFByZWNp
c2lvbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBmbG9hdCBmO1xu
IgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgZmxvYXQgZmYgPSBzaW4o
Zik7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGZmKTtcbiIKLSAgICAgICAg
In1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9GQUxTRShmb3Vu
ZEVycm9ySW5JbnRlcm1lZGlhdGVUcmVlKCkpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRl
cm1lZGlhdGVUcmVlKCJzaW5lIChtZWRpdW1wIGZsb2F0KSIpKTsKLX0KLQotVEVTVF9GKFR5cGVU
cmFja2luZ1Rlc3QsIEJpbmFyeU1hdGhSZXN1bHRQcmVjaXNpb24pCi17Ci0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgZjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKLSAgICAgICAgIiAgIGZsb2F0IGZmID0gZiAqIDAuNTtcbiIKLSAgICAgICAgIiAgIGds
X0ZyYWdDb2xvciA9IHZlYzQoZmYpO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNo
YWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRy
ZWUoKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoIm11bHRpcGx5
IChtZWRpdW1wIGZsb2F0KSIpKTsKLX0KLQotVEVTVF9GKFR5cGVUcmFja2luZ1Rlc3QsIEJ1aWx0
SW5WZWNGdW5jdGlvblJlc3VsdFR5cGVBbmRQcmVjaXNpb24pCi17Ci0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc
biIKLSAgICAgICAgInVuaWZvcm0gdmVjMiBhO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xu
IgotICAgICAgICAiICAgZmxvYXQgYiA9IGxlbmd0aChhKTtcbiIKLSAgICAgICAgIiAgIGZsb2F0
IGMgPSBkb3QoYSwgdmVjMigwLjUpKTtcbiIKLSAgICAgICAgIiAgIGZsb2F0IGQgPSBkaXN0YW5j
ZSh2ZWMyKDAuNSksIGEpO1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChiLCBj
LCBkLCAxLjApO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7
Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoImxlbmd0aCAobWVkaXVtcCBmbG9h
dCkiKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoImRvdC1wcm9k
dWN0IChtZWRpdW1wIGZsb2F0KSIpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRp
YXRlVHJlZSgiZGlzdGFuY2UgKG1lZGl1bXAgZmxvYXQpIikpOwotfQotCi1URVNUX0YoVHlwZVRy
YWNraW5nVGVzdCwgQnVpbHRJbk1hdEZ1bmN0aW9uUmVzdWx0VHlwZUFuZFByZWNpc2lvbikKLXsK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgIiN2ZXJzaW9u
IDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAg
ICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDQgbTtcbiIK
LSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIG1hdDN4MiB0bXAzMiA9IG1h
dDN4MihtKTtcbiIKLSAgICAgICAgIiAgIG1hdDJ4MyB0bXAyMyA9IG1hdDJ4MyhtKTtcbiIKLSAg
ICAgICAgIiAgIG1hdDR4MiB0bXA0MiA9IG1hdDR4MihtKTtcbiIKLSAgICAgICAgIiAgIG1hdDJ4
NCB0bXAyNCA9IG1hdDJ4NChtKTtcbiIKLSAgICAgICAgIiAgIG1hdDR4MyB0bXA0MyA9IG1hdDR4
MyhtKTtcbiIKLSAgICAgICAgIiAgIG1hdDN4NCB0bXAzNCA9IG1hdDN4NChtKTtcbiIKLSAgICAg
ICAgIiAgIG15X0ZyYWdDb2xvciA9IHZlYzQodG1wMzJbMl1bMV0gKiB0bXAyM1sxXVsyXSwgdG1w
NDJbM11bMV0gKiB0bXAyNFsxXVszXSwgdG1wNDNbM11bMl0gKiB0bXAzNFsyXVszXSwgMS4wKTtc
biIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VS
VF9GQUxTRShmb3VuZEVycm9ySW5JbnRlcm1lZGlhdGVUcmVlKCkpOwotICAgIEFTU0VSVF9UUlVF
KGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJDb25zdHJ1Y3QgbWF0MngzIChtZWRpdW1wIDJYMyBt
YXRyaXggb2YgZmxvYXQpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVU
cmVlKCJDb25zdHJ1Y3QgbWF0M3gyIChtZWRpdW1wIDNYMiBtYXRyaXggb2YgZmxvYXQpIikpOwot
ICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJDb25zdHJ1Y3QgbWF0Mng0
IChtZWRpdW1wIDJYNCBtYXRyaXggb2YgZmxvYXQpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5k
SW5JbnRlcm1lZGlhdGVUcmVlKCJDb25zdHJ1Y3QgbWF0NHgyIChtZWRpdW1wIDRYMiBtYXRyaXgg
b2YgZmxvYXQpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJD
b25zdHJ1Y3QgbWF0M3g0IChtZWRpdW1wIDNYNCBtYXRyaXggb2YgZmxvYXQpIikpOwotICAgIEFT
U0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJDb25zdHJ1Y3QgbWF0NHgzIChtZWRp
dW1wIDRYMyBtYXRyaXggb2YgZmxvYXQpIikpOwotfQotCi1URVNUX0YoVHlwZVRyYWNraW5nVGVz
dCwgQnVpbHRJbkZ1bmN0aW9uQ2hvb3Nlc0hpZ2hlclByZWNpc2lvbikKLXsKLSAgICBjb25zdCBz
dGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBsb3dwIGZsb2F0
O1xuIgotICAgICAgICAidW5pZm9ybSBtZWRpdW1wIHZlYzIgYTtcbiIKLSAgICAgICAgInVuaWZv
cm0gbG93cCB2ZWMyIGI7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIg
ICBmbG9hdCBjID0gZG90KGEsIGIpO1xuIgotICAgICAgICAiICAgZmxvYXQgZCA9IGRpc3RhbmNl
KGIsIGEpO1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNChjLCBkLCAwLjAsIDEu
MCk7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBB
U1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50ZXJtZWRpYXRlVHJlZSgpKTsKLSAgICBBU1NFUlRf
VFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgiZG90LXByb2R1Y3QgKG1lZGl1bXAgZmxvYXQp
IikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJkaXN0YW5jZSAo
bWVkaXVtcCBmbG9hdCkiKSk7Ci19Ci0KLVRFU1RfRihUeXBlVHJhY2tpbmdUZXN0LCBCdWlsdElu
Qm9vbEZ1bmN0aW9uUmVzdWx0VHlwZSkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nID0KLSAgICAgICAgInVuaWZvcm0gYnZlYzQgYmVlcztcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGJvb2wgYiA9IGFueShiZWVzKTtcbiIKLSAgICAgICAg
IiAgIGJvb2wgYyA9IGFsbChiZWVzKTtcbiIKLSAgICAgICAgIiAgIGJ2ZWM0IGQgPSBub3QoYmVl
cyk7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGIgPyAxLjAgOiAwLjAsIGMg
PyAxLjAgOiAwLjAsIGQueCA/IDEuMCA6IDAuMCwgMS4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0g
ICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9GQUxTRShmb3VuZEVycm9ySW5J
bnRlcm1lZGlhdGVUcmVlKCkpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVU
cmVlKCJhbnkgKGJvb2wpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVU
cmVlKCJhbGwgKGJvb2wpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVU
cmVlKCJOZWdhdGUgY29uZGl0aW9uYWwgKDQtY29tcG9uZW50IHZlY3RvciBvZiBib29sKSIpKTsK
LX0KLQotVEVTVF9GKFR5cGVUcmFja2luZ1Rlc3QsIEJ1aWx0SW5WZWNUb0Jvb2xGdW5jdGlvblJl
c3VsdFR5cGUpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjMiBh
cHBsZXM7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzIgb3JhbmdlcztcbiIKLSAgICAgICAgInVu
aWZvcm0gaXZlYzIgZm9vO1xuIgotICAgICAgICAidW5pZm9ybSBpdmVjMiBiYXI7XG4iCi0gICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBidmVjMiBhID0gbGVzc1RoYW4oYXBw
bGVzLCBvcmFuZ2VzKTtcbiIKLSAgICAgICAgIiAgIGJ2ZWMyIGIgPSBncmVhdGVyVGhhbihmb28s
IGJhcik7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGFueShhKSA/IDEuMCA6
IDAuMCwgYW55KGIpID8gMS4wIDogMC4wLCAwLjAsIDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwot
ICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvcklu
SW50ZXJtZWRpYXRlVHJlZSgpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRl
VHJlZSgiTGVzcyBUaGFuICgyLWNvbXBvbmVudCB2ZWN0b3Igb2YgYm9vbCkiKSk7Ci0gICAgQVNT
RVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoIkdyZWF0ZXIgVGhhbiAoMi1jb21wb25l
bnQgdmVjdG9yIG9mIGJvb2wpIikpOwotfQotCi1URVNUX0YoVHlwZVRyYWNraW5nVGVzdCwgVGV4
dHVyZTJEUmVzdWx0VHlwZUFuZFByZWNpc2lvbikKLXsKLSAgICAvLyBFU1NMIHNwZWMgc2VjdGlv
biA0LjUuMzogc2FtcGxlcjJEIGFuZCBzYW1wbGVyQ3ViZSBhcmUgbG93cCBieSBkZWZhdWx0Ci0g
ICAgLy8gRVNTTCBzcGVjIHNlY3Rpb24gODogRm9yIHRoZSB0ZXh0dXJlIGZ1bmN0aW9ucywgdGhl
IHByZWNpc2lvbiBvZiB0aGUgcmV0dXJuIHR5cGUgbWF0Y2hlcyB0aGUgcHJlY2lzaW9uIG9mIHRo
ZSBzYW1wbGVyIHR5cGUuCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0g
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gc2Ft
cGxlcjJEIHM7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzIgYTtcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKLSAgICAgICAgIiAgIHZlYzQgYyA9IHRleHR1cmUyRChzLCBhKTtcbiIKLSAg
ICAgICAgIiAgIGdsX0ZyYWdDb2xvciA9IGM7XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBp
bGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50ZXJtZWRp
YXRlVHJlZSgpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgidGV4
dHVyZTJEKHMyMTt2ZjI7IChsb3dwIDQtY29tcG9uZW50IHZlY3RvciBvZiBmbG9hdCkiKSk7Ci19
Ci0KLVRFU1RfRihUeXBlVHJhY2tpbmdUZXN0LCBUZXh0dXJlQ3ViZVJlc3VsdFR5cGVBbmRQcmVj
aXNpb24pCi17Ci0gICAgLy8gRVNTTCBzcGVjIHNlY3Rpb24gNC41LjM6IHNhbXBsZXIyRCBhbmQg
c2FtcGxlckN1YmUgYXJlIGxvd3AgYnkgZGVmYXVsdAotICAgIC8vIEVTU0wgc3BlYyBzZWN0aW9u
IDg6IEZvciB0aGUgdGV4dHVyZSBmdW5jdGlvbnMsIHRoZSBwcmVjaXNpb24gb2YgdGhlIHJldHVy
biB0eXBlIG1hdGNoZXMgdGhlIHByZWNpc2lvbiBvZiB0aGUgc2FtcGxlciB0eXBlLgotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXJDdWJlIHNjO1xuIgotICAgICAg
ICAidW5pZm9ybSB2ZWMzIGE7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAg
ICIgICB2ZWM0IGMgPSB0ZXh0dXJlQ3ViZShzYywgYSk7XG4iCi0gICAgICAgICIgICBnbF9GcmFn
Q29sb3IgPSBjO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7
Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7Ci0gICAg
QVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoInRleHR1cmVDdWJlKHNDMTt2ZjM7
IChsb3dwIDQtY29tcG9uZW50IHZlY3RvciBvZiBmbG9hdCkiKSk7Ci19Ci0KLVRFU1RfRihUeXBl
VHJhY2tpbmdUZXN0LCBUZXh0dXJlU2l6ZVJlc3VsdFR5cGVBbmRQcmVjaXNpb24pCi17Ci0gICAg
Ly8gRVNTTCAzLjAgc3BlYyBzZWN0aW9uIDg6IHRleHR1cmVTaXplIGhhcyBwcmVkZWZpbmVkIHBy
ZWNpc2lvbiBoaWdocAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAg
ICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInVuaWZv
cm0gc2FtcGxlcjJEIHM7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIg
ICBpdmVjMiBzaXplID0gdGV4dHVyZVNpemUocywgMCk7XG4iCi0gICAgICAgICIgICBpZiAoc2l6
ZS54ID4gMTAwKSB7XG4iCi0gICAgICAgICIgICAgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLjAs
IDEuMCwgMC4wLCAxLjApO1xuIgotICAgICAgICAiICAgfSBlbHNlIHtcbiIKLSAgICAgICAgIiAg
ICAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7XG4iCi0gICAgICAg
ICIgICB9XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nKTsKLSAg
ICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50ZXJtZWRpYXRlVHJlZSgpKTsKLSAgICBBU1NF
UlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgidGV4dHVyZVNpemUoczIxO2kxOyAoaGln
aHAgMi1jb21wb25lbnQgdmVjdG9yIG9mIGludCkiKSk7Ci19Ci0KLVRFU1RfRihUeXBlVHJhY2tp
bmdUZXN0LCBCdWlsdEluQ29uc3RydWN0b3JSZXN1bHRUeXBlQW5kUHJlY2lzaW9uKQotewotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IHUxO1xuIgotICAgICAgICAi
dW5pZm9ybSBmbG9hdCB1MjtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgdTM7XG4iCi0gICAg
ICAgICJ1bmlmb3JtIGZsb2F0IHU0O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAg
ICAgICAiICAgdmVjNCBhID0gdmVjNCh1MSwgdTIsIHUzLCB1NCk7XG4iCi0gICAgICAgICIgICBn
bF9GcmFnQ29sb3IgPSBhO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0
cmluZyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7
Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoIkNvbnN0cnVjdCB2ZWM0
IChtZWRpdW1wIDQtY29tcG9uZW50IHZlY3RvciBvZiBmbG9hdCkiKSk7Ci19Ci0KLVRFU1RfRihU
eXBlVHJhY2tpbmdUZXN0LCBTdHJ1Y3RDb25zdHJ1Y3RvclJlc3VsdE5vUHJlY2lzaW9uKQotewot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgdTE7XG4iCi0gICAgICAg
ICJ1bmlmb3JtIHZlYzQgdTI7XG4iCi0gICAgICAgICJzdHJ1Y3QgUyB7IGhpZ2hwIHZlYzQgYTsg
aGlnaHAgdmVjNCBiOyB9O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAi
ICAgUyBzID0gUyh1MSwgdTIpO1xuIgotICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gcy5hO1xu
IgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJU
X0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7Ci0gICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkludGVybWVkaWF0ZVRyZWUoIkNvbnN0cnVjdCBzdHJ1Y3R1cmUgKHN0cnVjdHVyZSki
KSk7Ci19Ci0KLVRFU1RfRihUeXBlVHJhY2tpbmdUZXN0LCBQYWNrUmVzdWx0VHlwZUFuZFByZWNp
c2lvbikKLXsKLSAgICAvLyBFU1NMIDMuMCBzcGVjIHNlY3Rpb24gOC40OiBwYWNrIGZ1bmN0aW9u
cyBoYXZlIHByZWRlZmluZWQgcHJlY2lzaW9uIGhpZ2hwCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgaW50
O1xuIgotICAgICAgICAidW5pZm9ybSB2ZWMyIHV2O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlf
RnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgdWlu
dCB1MCA9IHBhY2tTbm9ybTJ4MTYodXYpO1xuIgotICAgICAgICAiICAgdWludCB1MSA9IHBhY2tV
bm9ybTJ4MTYodXYpO1xuIgotICAgICAgICAiICAgdWludCB1MiA9IHBhY2tIYWxmMngxNih1dik7
XG4iCi0gICAgICAgICIgICBpZiAodTAgKyB1MSArIHUyID4gMTAwdSkge1xuIgotICAgICAgICAi
ICAgICAgIG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTtcbiIKLSAgICAg
ICAgIiAgIH0gZWxzZSB7XG4iCi0gICAgICAgICIgICAgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgx
LjAsIDAuMCwgMC4wLCAxLjApO1xuIgotICAgICAgICAiICAgfVxuIgotICAgICAgICAifVxuIjsK
LSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJ
bkludGVybWVkaWF0ZVRyZWUoKSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0
ZVRyZWUoInBhY2sgU25vcm0gMngxNiAoaGlnaHAgdWludCkiKSk7Ci0gICAgQVNTRVJUX1RSVUUo
Zm91bmRJbkludGVybWVkaWF0ZVRyZWUoInBhY2sgVW5vcm0gMngxNiAoaGlnaHAgdWludCkiKSk7
Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoInBhY2sgaGFsZiAyeDE2
IChoaWdocCB1aW50KSIpKTsKLX0KLQotVEVTVF9GKFR5cGVUcmFja2luZ1Rlc3QsIFVucGFja05v
cm1SZXN1bHRUeXBlQW5kUHJlY2lzaW9uKQotewotICAgIC8vIEVTU0wgMy4wIHNwZWMgc2VjdGlv
biA4LjQ6IHVucGFjayhTL1Upbm9ybTJ4MTYgaGFzIHByZWRlZmluZWQgcHJlY2lzaW9uIGhpZ2hw
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICIjdmVyc2lv
biAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgaW50O1xuIgotICAgICAgICAidW5pZm9ybSB1aW50IHV1O1xu
IgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgotICAgICAgICAiICAgdmVjMiB2MCA9IHVucGFja1Nub3JtMngxNih1dSk7XG4iCi0g
ICAgICAgICIgICB2ZWMyIHYxID0gdW5wYWNrVW5vcm0yeDE2KHV1KTtcbiIKLSAgICAgICAgIiAg
IGlmICh2MC54ICogdjEueCA+IDEuMCkge1xuIgotICAgICAgICAiICAgICAgIG15X0ZyYWdDb2xv
ciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTtcbiIKLSAgICAgICAgIiAgIH0gZWxzZSB7XG4i
Ci0gICAgICAgICIgICAgICAgbXlfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjAp
O1xuIgotICAgICAgICAiICAgfVxuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRl
clN0cmluZyk7Ci0gICAgQVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUo
KSk7Ci0gICAgQVNTRVJUX1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoInVucGFjayBTbm9y
bSAyeDE2IChoaWdocCAyLWNvbXBvbmVudCB2ZWN0b3Igb2YgZmxvYXQpIikpOwotICAgIEFTU0VS
VF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJ1bnBhY2sgVW5vcm0gMngxNiAoaGlnaHAg
Mi1jb21wb25lbnQgdmVjdG9yIG9mIGZsb2F0KSIpKTsKLX0KLQotVEVTVF9GKFR5cGVUcmFja2lu
Z1Rlc3QsIFVucGFja0hhbGZSZXN1bHRUeXBlQW5kUHJlY2lzaW9uKQotewotICAgIC8vIEVTU0wg
My4wIHNwZWMgc2VjdGlvbiA4LjQ6IHVucGFja0hhbGYyeDE2IGhhcyBwcmVkZWZpbmVkIHByZWNp
c2lvbiBtZWRpdW1wCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAg
ICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtc
biIKLSAgICAgICAgInByZWNpc2lvbiBoaWdocCBpbnQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHVp
bnQgdXU7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2
b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICB2ZWMyIHYgPSB1bnBhY2tIYWxmMngxNih1dSk7
XG4iCi0gICAgICAgICIgICBpZiAodi54ID4gMS4wKSB7XG4iCi0gICAgICAgICIgICAgICAgbXlf
RnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApO1xuIgotICAgICAgICAiICAgfSBl
bHNlIHtcbiIKLSAgICAgICAgIiAgICAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAw
LjAsIDEuMCk7XG4iCi0gICAgICAgICIgICB9XG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBp
bGUoc2hhZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50ZXJtZWRp
YXRlVHJlZSgpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgidW5w
YWNrIGhhbGYgMngxNiAobWVkaXVtcCAyLWNvbXBvbmVudCB2ZWN0b3Igb2YgZmxvYXQpIikpOwot
fQotCi1URVNUX0YoVHlwZVRyYWNraW5nVGVzdCwgQnVpbHRJbkFic1NpZ25GdW5jdGlvbkZsb2F0
UmVzdWx0VHlwZUFuZFByZWNpc2lvbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAi
dW5pZm9ybSBmbG9hdCBmdmFsMTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAg
ICAgIiAgIGZsb2F0IGZ2YWwyID0gYWJzKGZ2YWwxKTtcbiIKLSAgICAgICAgIiAgIGZsb2F0IGZ2
YWwzID0gc2lnbihmdmFsMSk7XG4iCi0gICAgICAgICIgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGZ2
YWwxLCAwLjAsIDAuMCwgMS4wKTsgXG4iCi0gICAgICAgICJ9XG4iOwotICAgIGNvbXBpbGUoc2hh
ZGVyU3RyaW5nKTsKLSAgICBBU1NFUlRfRkFMU0UoZm91bmRFcnJvckluSW50ZXJtZWRpYXRlVHJl
ZSgpKTsKLSAgICBBU1NFUlRfVFJVRShmb3VuZEluSW50ZXJtZWRpYXRlVHJlZSgiQWJzb2x1dGUg
dmFsdWUgKG1lZGl1bXAgZmxvYXQpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1l
ZGlhdGVUcmVlKCJTaWduIChtZWRpdW1wIGZsb2F0KSIpKTsKLX0KLQotVEVTVF9GKFR5cGVUcmFj
a2luZ1Rlc3QsIEJ1aWx0SW5BYnNTaWduRnVuY3Rpb25JbnRSZXN1bHRUeXBlQW5kUHJlY2lzaW9u
KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGludDtcbiIKLSAgICAgICAgInVuaWZvcm0gaW50IGl2
YWwxO1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9p
ZCBtYWluKCkge1xuIgotICAgICAgICAiICAgaW50IGl2YWwyID0gYWJzKGl2YWwxKTtcbiIKLSAg
ICAgICAgIiAgIGludCBpdmFsMyA9IHNpZ24oaXZhbDEpO1xuIgotICAgICAgICAiICAgbXlfRnJh
Z0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMC4wLCAxLjApOyBcbiIKLSAgICAgICAgIn1cbiI7Ci0g
ICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIEFTU0VSVF9GQUxTRShmb3VuZEVycm9ySW5J
bnRlcm1lZGlhdGVUcmVlKCkpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVU
cmVlKCJBYnNvbHV0ZSB2YWx1ZSAobWVkaXVtcCBpbnQpIikpOwotICAgIEFTU0VSVF9UUlVFKGZv
dW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJTaWduIChtZWRpdW1wIGludCkiKSk7Ci19Ci0KLVRFU1Rf
RihUeXBlVHJhY2tpbmdUZXN0LCBCdWlsdEluRmxvYXRCaXRzVG9JbnRSZXN1bHRUeXBlQW5kUHJl
Y2lzaW9uKQotewotICAgIC8vIEVTU0wgMy4wMCBzZWN0aW9uIDguMzogZmxvYXRCaXRzVG8oVSlp
bnQgcmV0dXJucyBhIGhpZ2hwIHZhbHVlLgotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJT
dHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGludDtcbiIKLSAg
ICAgICAgInVuaWZvcm0gZmxvYXQgZjtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xv
cjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgIGludCBpID0gZmxv
YXRCaXRzVG9JbnQoZik7XG4iCi0gICAgICAgICIgICB1aW50IHUgPSBmbG9hdEJpdHNUb1VpbnQo
Zik7XG4iCi0gICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMC4wLCAwLjAsIDEu
MCk7IFxuIgotICAgICAgICAifVxuIjsKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAg
QVNTRVJUX0ZBTFNFKGZvdW5kRXJyb3JJbkludGVybWVkaWF0ZVRyZWUoKSk7Ci0gICAgQVNTRVJU
X1RSVUUoZm91bmRJbkludGVybWVkaWF0ZVRyZWUoImZsb2F0IGJpdHMgdG8gaW50IChoaWdocCBp
bnQpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJmbG9hdCBi
aXRzIHRvIHVpbnQgKGhpZ2hwIHVpbnQpIikpOwotfQotCi1URVNUX0YoVHlwZVRyYWNraW5nVGVz
dCwgQnVpbHRJbkludEJpdHNUb0Zsb2F0UmVzdWx0VHlwZUFuZFByZWNpc2lvbikKLXsKLSAgICAv
LyBFU1NMIDMuMDAgc2VjdGlvbiA4LjM6ICh1KWludEJpdHNUb0Zsb2F0IHJldHVybnMgYSBoaWdo
cCB2YWx1ZS4KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAgICAg
IiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBpbnQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIGlu
dCBpO1xuIgotICAgICAgICAidW5pZm9ybSB1aW50IHU7XG4iCi0gICAgICAgICJvdXQgdmVjNCBt
eV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICBm
bG9hdCBmMSA9IGludEJpdHNUb0Zsb2F0KGkpO1xuIgotICAgICAgICAiICAgZmxvYXQgZjIgPSB1
aW50Qml0c1RvRmxvYXQodSk7XG4iCi0gICAgICAgICIgICBteV9GcmFnQ29sb3IgPSB2ZWM0KGYx
LCBmMiwgMC4wLCAxLjApOyBcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJT
dHJpbmcpOwotICAgIEFTU0VSVF9GQUxTRShmb3VuZEVycm9ySW5JbnRlcm1lZGlhdGVUcmVlKCkp
OwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlhdGVUcmVlKCJpbnQgYml0cyB0byBm
bG9hdCAoaGlnaHAgZmxvYXQpIikpOwotICAgIEFTU0VSVF9UUlVFKGZvdW5kSW5JbnRlcm1lZGlh
dGVUcmVlKCJ1aW50IGJpdHMgdG8gZmxvYXQgKGhpZ2hwIGZsb2F0KSIpKTsKLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9jb21waWxlcl90ZXN0cy9VbnJv
bGxGbGF0dGVuX3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2Nv
bXBpbGVyX3Rlc3RzL1Vucm9sbEZsYXR0ZW5fdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDM4MTljM2JlYTQwLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvVW5yb2xsRmxhdHRlbl90ZXN0LmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDIwNyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE1
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIFVucm9sbEZs
YXR0ZW5fdGVzdC5jcHA6Ci0vLyAgIFRlc3QgZm9yIHRoZSBvdXRwdXR0aW5nIG9mIFtbdW5yb2xs
XV0gYW5kIFtbZmxhdHRlbl1dIGZvciB0aGUgRDNEIGNvbXBpbGVyLgotLy8gICBUaGlzIHRlc3Qg
Y2FuIG9ubHkgYmUgZW5hYmxlZCB3aGVuIEhMU0wgc3VwcG9ydCBpcyBlbmFibGVkLgotLy8KLQot
I2luY2x1ZGUgImFuZ2xlX2dsLmgiCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKLSNp
bmNsdWRlICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgot
I2luY2x1ZGUgInRlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5oIgotCi1uYW1lc3BhY2UK
LXsKLQotY2xhc3MgVW5yb2xsRmxhdHRlblRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAotewot
ICBwdWJsaWM6Ci0gICAgVW5yb2xsRmxhdHRlblRlc3QoKSB7fQotCi0gIHByb3RlY3RlZDoKLSAg
ICB2b2lkIGNvbXBpbGUoY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZykKLSAgICB7Ci0g
ICAgICAgIHN0ZDo6c3RyaW5nIGluZm9Mb2c7Ci0gICAgICAgIGJvb2wgY29tcGlsYXRpb25TdWNj
ZXNzID0KLSAgICAgICAgICAgIGNvbXBpbGVUZXN0U2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwg
U0hfR0xFUzJfU1BFQywgU0hfSExTTF80XzFfT1VUUFVULCBzaGFkZXJTdHJpbmcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTSF9WQVJJQUJMRVMsICZtVHJhbnNsYXRlZFNvdXJjZSwg
JmluZm9Mb2cpOwotICAgICAgICBpZiAoIWNvbXBpbGF0aW9uU3VjY2VzcykKLSAgICAgICAgewot
ICAgICAgICAgICAgRkFJTCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkICIgPDwgaW5m
b0xvZzsKLSAgICAgICAgfQotICAgICAgICAvLyBJZ25vcmUgdGhlIGJlZ2lubmluZyBvZiB0aGUg
c2hhZGVyIHRvIGF2b2lkIHRoZSBkZWZpbml0aW9ucyBvZiBMT09QIGFuZCBGTEFUVEVOCi0gICAg
ICAgIG1DdXJyZW50UG9zaXRpb24gPSBzdGF0aWNfY2FzdDxpbnQ+KG1UcmFuc2xhdGVkU291cmNl
LmZpbmQoIkdMX1VTRVNfRlJBR19DT0xPUiIpKTsKLSAgICB9Ci0KLSAgICB2b2lkIGV4cGVjdChj
b25zdCBjaGFyICpwYXR0ZXJuc1tdLCBzaXplX3QgY291bnQpCi0gICAgewotICAgICAgICBjb25z
dCBjaGFyICpiYWRQYXR0ZXJuc1tdID0geyBVTlJPTEwsIEZMQVRURU4gfTsKLSAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBj
b25zdCBjaGFyICpwYXR0ZXJuID0gcGF0dGVybnNbaV07Ci0gICAgICAgICAgICBhdXRvIHBvc2l0
aW9uID0gbVRyYW5zbGF0ZWRTb3VyY2UuZmluZChwYXR0ZXJuLCBtQ3VycmVudFBvc2l0aW9uKTsK
LSAgICAgICAgICAgIGlmIChwb3NpdGlvbiA9PSBzdGQ6OnN0cmluZzo6bnBvcykKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBGQUlMKCkgPDwgIkNvdWxkbid0IGZpbmQgJyIgPDwgcGF0
dGVybiA8PCAiJyBhZnRlciBleHBlY3RhdGlvbnMgJyIKLSAgICAgICAgICAgICAgICAgICAgICAg
PDwgbUV4cGVjdGF0aW9uTGlzdCA8PCAiJyBpbiB0cmFuc2xhdGVkIHNvdXJjZTpcbiIgPDwgbVRy
YW5zbGF0ZWRTb3VyY2U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZvciAoc2l6ZV90
IGogPSAwOyBqIDwgQXJyYXlTaXplKGJhZFBhdHRlcm5zKTsgaisrKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmJhZFBhdHRlcm4gPSBiYWRQYXR0ZXJuc1tqXTsK
LSAgICAgICAgICAgICAgICBpZiAocGF0dGVybiAhPSBiYWRQYXR0ZXJuICYmCi0gICAgICAgICAg
ICAgICAgICAgIG1UcmFuc2xhdGVkU291cmNlLmZpbmQoYmFkUGF0dGVybiwgbUN1cnJlbnRQb3Np
dGlvbikgPCBwb3NpdGlvbikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IEZBSUwoKSA8PCAiRm91bmQgJyIgPDwgYmFkUGF0dGVybiA8PCAiJyBiZWZvcmUgJyIgPDwgcGF0
dGVybiA8PCAiJyBhZnRlciBleHBlY3RhdGlvbnMgJyIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDw8IG1FeHBlY3RhdGlvbkxpc3QgPDwgIicgaW4gdHJhbnNsYXRlZCBzb3VyY2U6XG4iIDw8
IG1UcmFuc2xhdGVkU291cmNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIG1FeHBlY3RhdGlvbkxpc3QgKz0gIiAtICIgKyBzdGQ6OnN0cmluZyhwYXR0ZXJu
KTsKLSAgICAgICAgICAgIG1DdXJyZW50UG9zaXRpb24gPSBzdGF0aWNfY2FzdDxpbnQ+KHBvc2l0
aW9uKSArIDE7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgY2hhciAqVU5S
T0xMOwotICAgIHN0YXRpYyBjb25zdCBjaGFyICpGTEFUVEVOOwotCi0gIHByaXZhdGU6Ci0gICAg
c3RkOjpzdHJpbmcgbVRyYW5zbGF0ZWRTb3VyY2U7Ci0KLSAgICBpbnQgbUN1cnJlbnRQb3NpdGlv
bjsKLSAgICBzdGQ6OnN0cmluZyBtRXhwZWN0YXRpb25MaXN0OwotfTsKLQotY29uc3QgY2hhciAq
VW5yb2xsRmxhdHRlblRlc3Q6OlVOUk9MTCA9ICJMT09QIjsKLWNvbnN0IGNoYXIgKlVucm9sbEZs
YXR0ZW5UZXN0OjpGTEFUVEVOID0gIkZMQVRURU4iOwotCi0vLyBDaGVjayB0aGF0IHRoZSBub3Ro
aW5nIGlzIGFkZGVkIGlmIHRoZXJlIGlzIG5vIGdyYWRpZW50IG9wZXJhdGlvbgotLy8gZXZlbiB3
aGVuIHRoZXJlIGlzIGlmcyBhbmQgZGlzY29udGludW91cyBsb29wcwotVEVTVF9GKFVucm9sbEZs
YXR0ZW5UZXN0LCBOb0dyYWRpZW50KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJT
dHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1
bmlmb3JtIGZsb2F0IGY7XG4iCi0gICAgICAgICJmbG9hdCBmdW4oZmxvYXQgYSl7XG4iIC8vIDEK
LSAgICAgICAgIiAgICBpZiAoYSA+IDEuMCkge3JldHVybiBmO31cbiIgLy8gMgotICAgICAgICAi
ICAgIGVsc2Uge3JldHVybiBhICsgMS4wO31cbiIKLSAgICAgICAgIn1cbiIKLSAgICAgICAgImZs
b2F0IGZ1bjIoZmxvYXQgYSl7XG4iIC8vIDMKLSAgICAgICAgIiAgICBmb3IgKGludCBpID0gMDsg
aSA8IDEwOyBpKyspIHtcbiIgLy8gNAotICAgICAgICAiICAgICAgICBpZiAoYSA+IDEuMCkge2Jy
ZWFrO31cbiIgLy8gNQotICAgICAgICAiICAgICAgICBhID0gZnVuKGEpO1xuIiAvLyA2Ci0gICAg
ICAgICIgICAgfVxuIgotICAgICAgICAiICAgIHJldHVybiBhO1xuIgotICAgICAgICAifVxuIgot
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAgIGZsb2F0IGFjY3VtID0gMC4w
O1xuIgotICAgICAgICAiICAgIGlmIChmIDwgNS4wKSB7YWNjdW0gPSBmdW4yKGFjY3VtKTt9XG4i
IC8vIDcKLSAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGFjY3VtKTtcbiIKLSAgICAg
ICAgIn1cbiI7Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIC8vIDEgLSBzaG91bGRu
J3QgZ2V0IGEgTG9kMCB2ZXJzaW9uIGdlbmVyYXRlZAotICAgIC8vIDIgLSBubyBGTEFUVEVOIGJl
Y2F1c2UgZG9lcyBub3QgY29udGFpbiBkaXNjb250IGxvb3AKLSAgICAvLyAzIC0gc2hvdWxkbid0
IGdldCBhIExvZDAgdmVyc2lvbiBnZW5lcmF0ZWQKLSAgICAvLyA0IC0gbm8gTE9PUCBiZWNhdXNl
IGRpc2NvbnQsIGFuZCBhbHNvIG5vIGdyYWRpZW50Ci0gICAgLy8gNSAtIG5vIEZMQVRURU4gYmVj
YXVzZSBkb2VzIG5vdCBjb250YWluIGxvb3Agd2l0aCBhIGdyYWRpZW50Ci0gICAgLy8gNiAtIGNh
bGwgbm9uLUxvZDAgdmVyc2lvbgotICAgIC8vIDcgLSBubyBGTEFUVEVOCi0gICAgY29uc3QgY2hh
ciAqZXhwZWN0YXRpb25zW10gPQotICAgIHsKLSAgICAgICAgImZ1bigiLCAiaWYiLAotICAgICAg
ICAiZnVuMigiLCAiZm9yIiwgImlmIiwgImJyZWFrIiwgImZ1bigiLAotICAgICAgICAibWFpbigi
LCAiaWYiLCAiZnVuMigiCi0gICAgfTsKLSAgICBleHBlY3QoZXhwZWN0YXRpb25zLCBBcnJheVNp
emUoZXhwZWN0YXRpb25zKSk7Ci19Ci0KLS8vIENoZWNrIHRoYXQgd2hlbiB3ZSBoYXZlIGEgZ3Jh
ZGllbnQgaW4gYSBub24tZGlzY29udGludW91cyBsb29wCi0vLyB3ZSB1c2UgdGhlIHJlZ3VsYXIg
dmVyc2lvbiBvZiB0aGUgZnVuY3Rpb25zLiBBbHNvIGNoZWNrcyB0aGF0Ci0vLyBMT09QIGlzIGdl
bmVyYXRlZCBmb3IgdGhlIGxvb3AgY29udGFpbmluZyB0aGUgZ3JhZGllbnQuCi1URVNUX0YoVW5y
b2xsRmxhdHRlblRlc3QsIEdyYWRpZW50Tm90SW5EaXNjb250KQotewotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCi0gICAgICAgICJ1bmlmb3JtIGZsb2F0IGY7XG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBs
ZXIyRCB0ZXg7IgotICAgICAgICAiZmxvYXQgZnVuKGZsb2F0IGEpe1xuIiAvLyAxCi0gICAgICAg
ICIgICAgcmV0dXJuIHRleHR1cmUyRCh0ZXgsIHZlYzIoMC41LCBmKSkueDtcbiIgLy8gMgotICAg
ICAgICAifVxuIgotICAgICAgICAiZmxvYXQgZnVuMihmbG9hdCBhKXtcbiIgLy8gMwotICAgICAg
ICAiICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTA7IGkrKykge1xuIiAvLyA0Ci0gICAgICAgICIg
ICAgICAgIGlmIChhID4gMS4wKSB7fVxuIiAvLyA1Ci0gICAgICAgICIgICAgICAgIGEgPSBmdW4o
YSk7XG4iIC8vIDYKLSAgICAgICAgIiAgICAgICAgYSArPSB0ZXh0dXJlMkQodGV4LCB2ZWMyKGEs
IDAuMCkpLng7IiAvLyA3Ci0gICAgICAgICIgICAgfVxuIgotICAgICAgICAiICAgIHJldHVybiBh
O1xuIgotICAgICAgICAifVxuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAi
ICAgIGZsb2F0IGFjY3VtID0gMC4wO1xuIgotICAgICAgICAiICAgIGlmIChmIDwgNS4wKSB7YWNj
dW0gPSBmdW4yKGFjY3VtKTt9XG4iIC8vIDgKLSAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KGFjY3VtKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgLy8gMSAtIHNob3VsZG4ndCBnZXQg
YSBMb2QwIHZlcnNpb24gZ2VuZXJhdGVkCi0gICAgLy8gMiAtIG5vIExvZDAgdmVyc2lvbiBnZW5l
cmF0ZWQKLSAgICAvLyAzIC0gc2hvdWxkbid0IGdldCBhIExvZDAgdmVyc2lvbiBnZW5lcmF0ZWQg
KG5vdCBpbiBkaXNjb250IGxvb3ApCi0gICAgLy8gNCAtIHNob3VsZCBoYXZlIExPT1AgYmVjYXVz
ZSBpdCBjb250YWlucyBhIGdyYWRpZW50IG9wZXJhdGlvbiAoZXZlbiBpZiBMb2QwKQotICAgIC8v
IDUgLSBubyBGTEFUVEVOIGJlY2F1c2UgZG9lc24ndCBjb250YWluIGxvb3Agd2l0aCBhIGdyYWRp
ZW50Ci0gICAgLy8gNiAtIGNhbGwgbm9uLUxvZDAgdmVyc2lvbgotICAgIC8vIDcgLSBjYWxsIG5v
bi1Mb2QwIHZlcnNpb24KLSAgICAvLyA4IC0gRkxBVFRFTiBiZWNhdXNlIGl0IGNvbnRhaW5zIGEg
bG9vcCB3aXRoIGEgZ3JhZGllbnQKLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0gICAgY29u
c3QgY2hhciAqZXhwZWN0YXRpb25zW10gPQotICAgIHsKLSAgICAgICAgImZ1bigiLCAidGV4dHVy
ZTJEKCIsCi0gICAgICAgICJmdW4yKCIsICJMT09QIiwgImZvciIsICJpZiIsICJmdW4oIiwgInRl
eHR1cmUyRCgiLAotICAgICAgICAibWFpbigiLCAiRkxBVFRFTiIsICJpZiIsICJmdW4yKCIKLSAg
ICB9OwotICAgIGV4cGVjdChleHBlY3RhdGlvbnMsIEFycmF5U2l6ZShleHBlY3RhdGlvbnMpKTsK
LX0KLQotLy8gQ2hlY2sgdGhhdCB3aGVuIHdlIGhhdmUgYSBncmFkaWVudCBpbiBhIGRpc2NvbnRp
bnVvdXMgbG9vcAotLy8gd2UgdXNlIHRoZSBMb2QwIHZlcnNpb24gb2YgdGhlIGZ1bmN0aW9ucy4K
LVRFU1RfRihVbnJvbGxGbGF0dGVuVGVzdCwgR3JhZGllbnRJbkRpc2NvbnQpCi17Ci0gICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gZmxvYXQgZjtcbiIKLSAgICAgICAgInVuaWZv
cm0gc2FtcGxlcjJEIHRleDsiCi0gICAgICAgICJmbG9hdCBmdW4oZmxvYXQgYSl7XG4iIC8vIDEK
LSAgICAgICAgIiAgICByZXR1cm4gdGV4dHVyZTJEKHRleCwgdmVjMigwLjUsIGYpKS54O1xuIiAv
LyAyCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJmbG9hdCBmdW4yKGZsb2F0IGEpe1xuIiAvLyAz
Ci0gICAgICAgICIgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG4iIC8vIDQKLSAg
ICAgICAgIiAgICAgICAgaWYgKGEgPiAxLjApIHticmVhazt9XG4iIC8vIDUKLSAgICAgICAgIiAg
ICAgICAgYSA9IGZ1bihhKTtcbiIgLy8gNgotICAgICAgICAiICAgICAgICBhICs9IHRleHR1cmUy
RCh0ZXgsIHZlYzIoYSwgMC4wKSkueDsiIC8vIDcKLSAgICAgICAgIiAgICB9XG4iCi0gICAgICAg
ICIgICAgcmV0dXJuIGE7XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCi0gICAgICAgICIgICAgZmxvYXQgYWNjdW0gPSAwLjA7XG4iCi0gICAgICAgICIgICAgaWYg
KGYgPCA1LjApIHthY2N1bSA9IGZ1bjIoYWNjdW0pO31cbiIgLy8gOAotICAgICAgICAiICAgIGds
X0ZyYWdDb2xvciA9IHZlYzQoYWNjdW0pO1xuIgotICAgICAgICAifVxuIjsKLSAgICAvLyAxIC0g
c2hvdWxkIGdldCBhIExvZDAgdmVyc2lvbiBnZW5lcmF0ZWQgKGdyYWRpZW50ICsgZGlzY29udCBs
b29wKQotICAgIC8vIDIgLSB3aWxsIGdldCB0aGUgTG9kMCBpZiBpbiBmdW5Mb2QwCi0gICAgLy8g
MyAtIHNob3VsZG4ndCBnZXQgYSBMb2QwIHZlcnNpb24gZ2VuZXJhdGVkIChub3QgaW4gZGlzY29u
dCBsb29wKQotICAgIC8vIDQgLSBzaG91bGQgaGF2ZSBMT09QIGJlY2F1c2UgaXQgY29udGFpbnMg
YSBncmFkaWVudCBvcGVyYXRpb24gKGV2ZW4gaWYgTG9kMCkKLSAgICAvLyA1IC0gbm8gRkxBVFRF
TiBiZWNhdXNlIGRvZXNuJ3QgY29udGFpbiBhIGxvb3Agd2l0aCBhIGdyYWRpZW50Ci0gICAgLy8g
NiAtIGNhbGwgTG9kMCB2ZXJzaW9uCi0gICAgLy8gNyAtIGNhbGwgTG9kMCB2ZXJzaW9uCi0gICAg
Ly8gOCAtIEZMQVRURU4gYmVjYXVzZSBpdCBjb250YWlucyBhIGxvb3Agd2l0aCBhIGdyYWRpZW50
Ci0gICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotICAgIGNvbnN0IGNoYXIgKmV4cGVjdGF0aW9u
c1tdID0KLSAgICB7Ci0gICAgICAgICJmdW4oIiwgInRleHR1cmUyRCgiLAotICAgICAgICAiZnVu
TG9kMCgiLCAidGV4dHVyZTJETG9kMCgiLAotICAgICAgICAiZnVuMigiLCAiTE9PUCIsICJmb3Ii
LCAiaWYiLCAiYnJlYWsiLCAiZnVuTG9kMCgiLCAidGV4dHVyZTJETG9kMCIsCi0gICAgICAgICJt
YWluKCIsICJGTEFUVEVOIiwgImlmIiwgImZ1bjIoIgotICAgIH07Ci0gICAgZXhwZWN0KGV4cGVj
dGF0aW9ucywgQXJyYXlTaXplKGV4cGVjdGF0aW9ucykpOwotfQotCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvVmFyaWFibGVQ
YWNrZXJfdGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGls
ZXJfdGVzdHMvVmFyaWFibGVQYWNrZXJfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGRkOWIwYjViNmQ5Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMvVmFyaWFibGVQYWNrZXJfdGVzdC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwyMzcgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLSNpbmNsdWRl
ICJndGVzdC9ndGVzdC5oIgotI2luY2x1ZGUgImFuZ2xlX2dsLmgiCi0jaW5jbHVkZSAiY29tbW9u
L3V0aWxpdGllcy5oIgotI2luY2x1ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCi0jaW5jbHVkZSAi
Y29tcGlsZXIvdHJhbnNsYXRvci9WYXJpYWJsZVBhY2tlci5oIgotCi1zdGF0aWMgc2g6OkdMZW51
bSB0eXBlc1tdID0gewotICBHTF9GTE9BVF9NQVQ0LCAgICAgICAgICAgIC8vIDAKLSAgR0xfRkxP
QVRfTUFUMiwgICAgICAgICAgICAvLyAxCi0gIEdMX0ZMT0FUX1ZFQzQsICAgICAgICAgICAgLy8g
MgotICBHTF9JTlRfVkVDNCwgICAgICAgICAgICAgIC8vIDMKLSAgR0xfQk9PTF9WRUM0LCAgICAg
ICAgICAgICAvLyA0Ci0gIEdMX0ZMT0FUX01BVDMsICAgICAgICAgICAgLy8gNQotICBHTF9GTE9B
VF9WRUMzLCAgICAgICAgICAgIC8vIDYKLSAgR0xfSU5UX1ZFQzMsICAgICAgICAgICAgICAvLyA3
Ci0gIEdMX0JPT0xfVkVDMywgICAgICAgICAgICAgLy8gOAotICBHTF9GTE9BVF9WRUMyLCAgICAg
ICAgICAgIC8vIDkKLSAgR0xfSU5UX1ZFQzIsICAgICAgICAgICAgICAvLyAxMAotICBHTF9CT09M
X1ZFQzIsICAgICAgICAgICAgIC8vIDExCi0gIEdMX0ZMT0FULCAgICAgICAgICAgICAgICAgLy8g
MTIKLSAgR0xfSU5ULCAgICAgICAgICAgICAgICAgICAvLyAxMwotICBHTF9CT09MLCAgICAgICAg
ICAgICAgICAgIC8vIDE0Ci0gIEdMX1NBTVBMRVJfMkQsICAgICAgICAgICAgLy8gMTUKLSAgR0xf
U0FNUExFUl9DVUJFLCAgICAgICAgICAvLyAxNgotICBHTF9TQU1QTEVSX0VYVEVSTkFMX09FUywg
IC8vIDE3Ci0gIEdMX1NBTVBMRVJfMkRfUkVDVF9BUkIsICAgLy8gMTgKLSAgR0xfVU5TSUdORURf
SU5ULCAgICAgICAgICAvLyAxOQotICBHTF9VTlNJR05FRF9JTlRfVkVDMiwgICAgIC8vIDIwCi0g
IEdMX1VOU0lHTkVEX0lOVF9WRUMzLCAgICAgLy8gMjEKLSAgR0xfVU5TSUdORURfSU5UX1ZFQzQs
ICAgICAvLyAyMgotICBHTF9GTE9BVF9NQVQyeDMsICAgICAgICAgIC8vIDIzCi0gIEdMX0ZMT0FU
X01BVDJ4NCwgICAgICAgICAgLy8gMjQKLSAgR0xfRkxPQVRfTUFUM3gyLCAgICAgICAgICAvLyAy
NQotICBHTF9GTE9BVF9NQVQzeDQsICAgICAgICAgIC8vIDI2Ci0gIEdMX0ZMT0FUX01BVDR4Miwg
ICAgICAgICAgLy8gMjcKLSAgR0xfRkxPQVRfTUFUNHgzLCAgICAgICAgICAvLyAyOAotICBHTF9T
QU1QTEVSXzNELCAgICAgICAgICAgIC8vIDI5Ci0gIEdMX1NBTVBMRVJfMkRfQVJSQVksICAgICAg
Ly8gMzAKLSAgR0xfU0FNUExFUl8yRF9TSEFET1csICAgICAvLyAzMQotICBHTF9TQU1QTEVSX0NV
QkVfU0hBRE9XLCAgIC8vIDMyCi0gIEdMX1NBTVBMRVJfMkRfQVJSQVlfU0hBRE9XLCAvLyAzMwot
ICBHTF9JTlRfU0FNUExFUl8yRCwgICAgICAgIC8vIDM0Ci0gIEdMX0lOVF9TQU1QTEVSX0NVQkUs
ICAgICAgLy8gMzUKLSAgR0xfSU5UX1NBTVBMRVJfM0QsICAgICAgICAvLyAzNgotICBHTF9JTlRf
U0FNUExFUl8yRF9BUlJBWSwgIC8vIDM3Ci0gIEdMX1VOU0lHTkVEX0lOVF9TQU1QTEVSXzJELCAv
LyAzOAotICBHTF9VTlNJR05FRF9JTlRfU0FNUExFUl9DVUJFLCAvLyAzOQotICBHTF9VTlNJR05F
RF9JTlRfU0FNUExFUl8zRCwgLy8gNDAKLSAgR0xfVU5TSUdORURfSU5UX1NBTVBMRVJfMkRfQVJS
QVksIC8vIDQxCi19OwotCi1zdGF0aWMgc2g6OkdMZW51bSBub25TcU1hdFR5cGVzW10gPSB7Ci0g
IEdMX0ZMT0FUX01BVDJ4MywKLSAgR0xfRkxPQVRfTUFUMng0LAotICBHTF9GTE9BVF9NQVQzeDIs
Ci0gIEdMX0ZMT0FUX01BVDN4NCwKLSAgR0xfRkxPQVRfTUFUNHgyLAotICBHTF9GTE9BVF9NQVQ0
eDMKLX07Ci0KLVRFU1QoVmFyaWFibGVQYWNraW5nLCBQYWNrKSB7Ci0gICAgVmFyaWFibGVQYWNr
ZXIgcGFja2VyOwotICAgIHN0ZDo6dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4gdmFyczsKLSAg
ICBjb25zdCBpbnQga01heFJvd3MgPSAxNjsKLSAgICAvLyB0ZXN0IG5vIHZhcnMuCi0gICAgRVhQ
RUNUX1RSVUUocGFja2VyLkNoZWNrVmFyaWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyhrTWF4Um93
cywgdmFycykpOwotCi0gICAgZm9yIChzaXplX3QgdHQgPSAwOyB0dCA8IEFycmF5U2l6ZSh0eXBl
cyk7ICsrdHQpCi0gICAgewotICAgICAgICBzaDo6R0xlbnVtIHR5cGUgICAgICAgICAgICA9IHR5
cGVzW3R0XTsKLSAgICAgICAgaW50IG51bV9yb3dzICAgICAgICAgICAgICAgPSBWYXJpYWJsZVBh
Y2tlcjo6R2V0TnVtUm93cyh0eXBlKTsKLSAgICAgICAgaW50IG51bV9jb21wb25lbnRzX3Blcl9y
b3cgPSBWYXJpYWJsZVBhY2tlcjo6R2V0TnVtQ29tcG9uZW50c1BlclJvdyh0eXBlKTsKLSAgICAg
ICAgLy8gQ2hlY2sgMSBvZiB0aGUgdHlwZS4KLSAgICAgICAgdmFycy5jbGVhcigpOwotICAgICAg
ICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUodHlwZSwgMCkpOwotICAgICAgICBF
WFBFQ1RfVFJVRShwYWNrZXIuQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKGtNYXhS
b3dzLCB2YXJzKSk7Ci0KLSAgICAgICAgLy8gQ2hlY2sgZXhhY3RseSB0aGUgcmlnaHQgYW1vdW50
IG9mIDEgdHlwZSBhcyBhbiBhcnJheS4KLSAgICAgICAgaW50IG51bV92YXJzID0ga01heFJvd3Mg
LyBudW1fcm93czsKLSAgICAgICAgdmFycy5jbGVhcigpOwotICAgICAgICB2YXJzLnB1c2hfYmFj
ayhzaDo6U2hhZGVyVmFyaWFibGUodHlwZSwgbnVtX3ZhcnMgPT0gMSA/IDAgOiBudW1fdmFycykp
OwotICAgICAgICBFWFBFQ1RfVFJVRShwYWNrZXIuQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5n
TGltaXRzKGtNYXhSb3dzLCB2YXJzKSk7Ci0KLSAgICAgICAgLy8gdGVzdCB0b28gbWFueQotICAg
ICAgICB2YXJzLmNsZWFyKCk7Ci0gICAgICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJp
YWJsZSh0eXBlLCBudW1fdmFycyA9PSAwID8gMCA6IChudW1fdmFycyArIDEpKSk7Ci0gICAgICAg
IEVYUEVDVF9GQUxTRShwYWNrZXIuQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKGtN
YXhSb3dzLCB2YXJzKSk7Ci0KLSAgICAgICAgLy8gQ2hlY2sgZXhhY3RseSB0aGUgcmlnaHQgYW1v
dW50IG9mIDEgdHlwZSBhcyBpbmRpdmlkdWFsIHZhcnMuCi0gICAgICAgIG51bV92YXJzID0KLSAg
ICAgICAgICAgIGtNYXhSb3dzIC8gbnVtX3Jvd3MgKiAoKG51bV9jb21wb25lbnRzX3Blcl9yb3cg
PiAyKSA/IDEgOiAoNCAvIG51bV9jb21wb25lbnRzX3Blcl9yb3cpKTsKLSAgICAgICAgdmFycy5j
bGVhcigpOwotICAgICAgICBmb3IgKGludCBpaSA9IDA7IGlpIDwgbnVtX3ZhcnM7ICsraWkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZSh0
eXBlLCAwKSk7Ci0gICAgICAgIH0KLSAgICAgICAgRVhQRUNUX1RSVUUocGFja2VyLkNoZWNrVmFy
aWFibGVzV2l0aGluUGFja2luZ0xpbWl0cyhrTWF4Um93cywgdmFycykpOwotCi0gICAgICAgIC8v
IENoZWNrIDEgdG9vIG1hbnkuCi0gICAgICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJp
YWJsZSh0eXBlLCAwKSk7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShwYWNrZXIuQ2hlY2tWYXJpYWJs
ZXNXaXRoaW5QYWNraW5nTGltaXRzKGtNYXhSb3dzLCB2YXJzKSk7Ci0gICAgfQotCi0gICAgLy8g
VGVzdCBleGFtcGxlIGZyb20gR0xTTCBFUyAzLjAgc3BlYyBjaGFwdGVyIDExLgotICAgIHZhcnMu
Y2xlYXIoKTsKLSAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfRkxPQVRf
VkVDNCwgMCkpOwotICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShHTF9GTE9B
VF9NQVQzLCAwKSk7Ci0gICAgdmFycy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX0ZM
T0FUX01BVDMsIDApKTsKLSAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xf
RkxPQVRfVkVDMiwgNikpOwotICAgIHZhcnMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShH
TF9GTE9BVF9WRUMyLCA0KSk7Ci0gICAgdmFycy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxl
KEdMX0ZMT0FUX1ZFQzIsIDApKTsKLSAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFi
bGUoR0xfRkxPQVQsIDMpKTsKLSAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUo
R0xfRkxPQVQsIDIpKTsKLSAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xf
RkxPQVQsIDApKTsKLSAgICBFWFBFQ1RfVFJVRShwYWNrZXIuQ2hlY2tWYXJpYWJsZXNXaXRoaW5Q
YWNraW5nTGltaXRzKGtNYXhSb3dzLCB2YXJzKSk7Ci19Ci0KLVRFU1QoVmFyaWFibGVQYWNraW5n
LCBQYWNrU2l6ZXMpIHsKLSAgZm9yIChzaXplX3QgdHQgPSAwOyB0dCA8IEFycmF5U2l6ZSh0eXBl
cyk7ICsrdHQpIHsKLSAgICBHTGVudW0gdHlwZSA9IHR5cGVzW3R0XTsKLQotICAgIGludCBleHBl
Y3RlZENvbXBvbmVudHMgPSBnbDo6VmFyaWFibGVDb21wb25lbnRDb3VudCh0eXBlKTsKLSAgICBp
bnQgZXhwZWN0ZWRSb3dzID0gZ2w6OlZhcmlhYmxlUm93Q291bnQodHlwZSk7Ci0KLSAgICBpZiAo
dHlwZSA9PSBHTF9GTE9BVF9NQVQyKSB7Ci0gICAgICBleHBlY3RlZENvbXBvbmVudHMgPSA0Owot
ICAgIH0gZWxzZSBpZiAoZ2w6OklzTWF0cml4VHlwZSh0eXBlKSkgewotICAgICAgaW50IHNxdWFy
ZVNpemUgPSBzdGQ6Om1heChnbDo6VmFyaWFibGVSb3dDb3VudCh0eXBlKSwKLSAgICAgICAgICBn
bDo6VmFyaWFibGVDb2x1bW5Db3VudCh0eXBlKSk7Ci0gICAgICBleHBlY3RlZENvbXBvbmVudHMg
PSBzcXVhcmVTaXplOwotICAgICAgZXhwZWN0ZWRSb3dzID0gc3F1YXJlU2l6ZTsKLSAgICB9Ci0K
LSAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRDb21wb25lbnRzLAotICAgICAgVmFyaWFibGVQYWNrZXI6
OkdldE51bUNvbXBvbmVudHNQZXJSb3codHlwZSkpOwotICAgIEVYUEVDVF9FUShleHBlY3RlZFJv
d3MsIFZhcmlhYmxlUGFja2VyOjpHZXROdW1Sb3dzKHR5cGUpKTsKLSAgfQotfQotCi0vLyBDaGVj
ayBzcGVjaWFsIGFzc3VtcHRpb25zIGFib3V0IHBhY2tpbmcgbm9uLXNxdWFyZSBtYXRzCi1URVNU
KFZhcmlhYmxlUGFja2luZywgTm9uU3F1YXJlTWF0cykgewotCi0gIGZvciAoc2l6ZV90IG10ID0g
MDsgbXQgPCBBcnJheVNpemUobm9uU3FNYXRUeXBlcyk7ICsrbXQpIHsKLSAgICAKLSAgICBHTGVu
dW0gdHlwZSA9IG5vblNxTWF0VHlwZXNbbXRdOwotCi0gICAgaW50IHJvd3MgPSBnbDo6VmFyaWFi
bGVSb3dDb3VudCh0eXBlKTsKLSAgICBpbnQgY29scyA9IGdsOjpWYXJpYWJsZUNvbHVtbkNvdW50
KHR5cGUpOwotICAgIGludCBzcXVhcmVTaXplID0gc3RkOjptYXgocm93cywgY29scyk7Ci0KLSAg
ICBzdGQ6OnZlY3RvcjxzaDo6U2hhZGVyVmFyaWFibGU+IHZhcnM7Ci0gICAgdmFycy5wdXNoX2Jh
Y2soc2g6OlNoYWRlclZhcmlhYmxlKHR5cGUsIDApKTsKLQotICAgIC8vIEZpbGwgY29sdW1ucwot
ICAgIGZvciAoaW50IHJvdyA9IDA7IHJvdyA8IHNxdWFyZVNpemU7IHJvdysrKSB7Ci0gICAgICBm
b3IgKGludCBjb2wgPSBzcXVhcmVTaXplOyBjb2wgPCA0OyArK2NvbCkgewotICAgICAgICB2YXJz
LnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfRkxPQVQsIDApKTsKLSAgICAgIH0KLSAg
ICB9Ci0KLSAgICBWYXJpYWJsZVBhY2tlciBwYWNrZXI7Ci0KLSAgICBFWFBFQ1RfVFJVRShwYWNr
ZXIuQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKHNxdWFyZVNpemUsIHZhcnMpKTsK
LQotICAgIC8vIGFuZCBvbmUgc2NhbGFyIGFuZCBwYWNraW5nIHNob3VsZCBmYWlsCi0gICAgdmFy
cy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX0ZMT0FULCAwKSk7Ci0gICAgRVhQRUNU
X0ZBTFNFKHBhY2tlci5DaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMoc3F1YXJlU2l6
ZSwgdmFycykpOwotICB9Ci19Ci0KLS8vIFNjYWxhciB0eXBlIHZhcmlhYmxlcyBjYW4gYmUgcGFj
a2VkIHNoYXJpbmcgcm93cyB3aXRoIG90aGVyIHZhcmlhYmxlcy4KLVRFU1QoVmFyaWFibGVQYWNr
aW5nLCBSZXVzZVJvd3MpCi17Ci0gICAgVmFyaWFibGVQYWNrZXIgcGFja2VyOwotICAgIHN0ZDo6
dmVjdG9yPHNoOjpTaGFkZXJWYXJpYWJsZT4gdmFyczsKLSAgICBjb25zdCBpbnQga01heFJvd3Mg
PSA1MTI7Ci0KLSAgICAvLyB1bmlmb3JtIGJvb2wgdTBbMTI5XTsKLSAgICAvLyB1bmlmb3JtIGJv
b2wgdTFbMTI5XTsKLSAgICAvLyB1bmlmb3JtIGJvb2wgdTJbMTI5XTsKLSAgICAvLyB1bmlmb3Jt
IGJvb2wgdTNbMTI5XTsKLSAgICB7Ci0gICAgICAgIGludCBudW1fYXJyYXlzID0gNDsKLSAgICAg
ICAgaW50IG51bV9lbGVtZW50c19wZXJfYXJyYXkgPSBrTWF4Um93cyAvIG51bV9hcnJheXMgKyAx
OwotICAgICAgICBmb3IgKGludCBpaSA9IDA7IGlpIDwgbnVtX2FycmF5czsgKytpaSkKLSAgICAg
ICAgewotICAgICAgICAgICAgdmFycy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX0JP
T0wsIG51bV9lbGVtZW50c19wZXJfYXJyYXkpKTsKLSAgICAgICAgfQotICAgICAgICBFWFBFQ1Rf
VFJVRShwYWNrZXIuQ2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKGtNYXhSb3dzLCB2
YXJzKSk7Ci0gICAgfQotCi0gICAgdmFycy5jbGVhcigpOwotICAgIC8vIHVuaWZvcm0gdmVjMiB1
MFsyNTddOwotICAgIC8vIHVuaWZvcm0gZmxvYXQgdTFbMjU3XTsKLSAgICAvLyB1bmlmb3JtIGlu
dCB1MVsyNTddOwotICAgIHsKLSAgICAgICAgaW50IG51bV9lbGVtZW50c19wZXJfYXJyYXkgPSBr
TWF4Um93cyAvIDIgKyAxOwotICAgICAgICB2YXJzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFi
bGUoR0xfRkxPQVRfVkVDMiwgbnVtX2VsZW1lbnRzX3Blcl9hcnJheSkpOwotICAgICAgICB2YXJz
LnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfRkxPQVQsIG51bV9lbGVtZW50c19wZXJf
YXJyYXkpKTsKLSAgICAgICAgdmFycy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX0lO
VCwgbnVtX2VsZW1lbnRzX3Blcl9hcnJheSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShwYWNrZXIu
Q2hlY2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKGtNYXhSb3dzLCB2YXJzKSk7Ci0gICAg
fQotfQotCi0vLyBDaGVjayB0aGUgcGFja2VyIHN1cHBvcnRzIGFuZCBmbGF0dGVucyBzdHJ1Y3R1
cmVzLgotVEVTVChWYXJpYWJsZVBhY2tpbmcsIFN0cnVjdCkKLXsKLSAgICBWYXJpYWJsZVBhY2tl
ciBwYWNrZXI7Ci0gICAgc3RkOjp2ZWN0b3I8c2g6OlNoYWRlclZhcmlhYmxlPiBmaWVsZHM7Ci0g
ICAgY29uc3QgaW50IGtNYXhSb3dzID0gMTY7Ci0KLSAgICAvLyBUZXN0IGV4YW1wbGUgZnJvbSBH
TFNMIEVTIDMuMCBzcGVjIGNoYXB0ZXIgMTEsIGJ1dCB3aXRoIHN0cnVjdHMKLSAgICBzdGQ6OnZl
Y3RvcjxzaDo6U2hhZGVyVmFyaWFibGU+IHZhcnM7Ci0gICAgdmFycy5wdXNoX2JhY2soc2g6OlNo
YWRlclZhcmlhYmxlKEdMX1NUUlVDVF9BTkdMRVgsIDApKTsKLQotICAgIHNoOjpTaGFkZXJWYXJp
YWJsZSAmcGFyZW50U3RydWN0ID0gdmFyc1swXTsKLSAgICBwYXJlbnRTdHJ1Y3QuZmllbGRzLnB1
c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfRkxPQVRfVkVDNCwgMCkpOwotICAgIHBhcmVu
dFN0cnVjdC5maWVsZHMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShHTF9GTE9BVF9NQVQz
LCAwKSk7Ci0KLSAgICBwYXJlbnRTdHJ1Y3QuZmllbGRzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFy
aWFibGUoR0xfU1RSVUNUX0FOR0xFWCwgMCkpOwotICAgIHNoOjpTaGFkZXJWYXJpYWJsZSAmaW5u
ZXJTdHJ1Y3QgPSBwYXJlbnRTdHJ1Y3QuZmllbGRzLmJhY2soKTsKLSAgICBpbm5lclN0cnVjdC5m
aWVsZHMucHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShHTF9GTE9BVF9NQVQzLCAwKSk7Ci0g
ICAgaW5uZXJTdHJ1Y3QuZmllbGRzLnB1c2hfYmFjayhzaDo6U2hhZGVyVmFyaWFibGUoR0xfRkxP
QVRfVkVDMiwgNikpOwotICAgIGlubmVyU3RydWN0LmZpZWxkcy5wdXNoX2JhY2soc2g6OlNoYWRl
clZhcmlhYmxlKEdMX0ZMT0FUX1ZFQzIsIDQpKTsKLQotICAgIHBhcmVudFN0cnVjdC5maWVsZHMu
cHVzaF9iYWNrKHNoOjpTaGFkZXJWYXJpYWJsZShHTF9GTE9BVF9WRUMyLCAwKSk7Ci0gICAgcGFy
ZW50U3RydWN0LmZpZWxkcy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxlKEdMX0ZMT0FULCAz
KSk7Ci0gICAgcGFyZW50U3RydWN0LmZpZWxkcy5wdXNoX2JhY2soc2g6OlNoYWRlclZhcmlhYmxl
KEdMX0ZMT0FULCAyKSk7Ci0gICAgcGFyZW50U3RydWN0LmZpZWxkcy5wdXNoX2JhY2soc2g6OlNo
YWRlclZhcmlhYmxlKEdMX0ZMT0FULCAwKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShwYWNrZXIuQ2hl
Y2tWYXJpYWJsZXNXaXRoaW5QYWNraW5nTGltaXRzKGtNYXhSb3dzLCB2YXJzKSk7Ci19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvY29tcGlsZXJfdGVzdHMv
V29ya0dyb3VwU2l6ZV90ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9jb21waWxlcl90ZXN0cy9Xb3JrR3JvdXBTaXplX3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmMmE5ZDRlOGQ5My4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2NvbXBpbGVyX3Rlc3RzL1dvcmtHcm91cFNpemVfdGVzdC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAy
MDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIFdvcmtH
cm91cFNpemVfdGVzdC5jcHA6Ci0vLyB0ZXN0cyBmb3IgbG9jYWwgZ3JvdXAgc2l6ZSBpbiBhIGNv
bXB1dGUgc2hhZGVyCi0vLwotCi0jaW5jbHVkZSAiYW5nbGVfZ2wuaCIKLSNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgotI2luY2x1ZGUgIkdMU0xBTkcvU2hhZGVyTGFuZy5oIgotI2luY2x1ZGUgImNv
bXBpbGVyL3RyYW5zbGF0b3IvVHJhbnNsYXRvckVTU0wuaCIKLSNpbmNsdWRlICJ0ZXN0cy90ZXN0
X3V0aWxzL2NvbXBpbGVyX3Rlc3QuaCIKLQotY2xhc3MgV29ya0dyb3VwU2l6ZVRlc3QgOiBwdWJs
aWMgdGVzdGluZzo6VGVzdAotewotICBwdWJsaWM6Ci0gICAgV29ya0dyb3VwU2l6ZVRlc3QoKSB7
fQotCi0gIHByb3RlY3RlZDoKLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIFNoQnVpbHRJblJlc291cmNlcyByZXNvdXJjZXM7Ci0gICAgICAgIFNoSW5pdEJ1aWx0SW5S
ZXNvdXJjZXMoJnJlc291cmNlcyk7Ci0KLSAgICAgICAgbVRyYW5zbGF0b3IgPSBuZXcgVHJhbnNs
YXRvckVTU0woR0xfQ09NUFVURV9TSEFERVIsIFNIX0dMRVMzXzFfU1BFQyk7Ci0gICAgICAgIEFT
U0VSVF9UUlVFKG1UcmFuc2xhdG9yLT5Jbml0KHJlc291cmNlcykpOwotICAgIH0KLQotICAgIHZv
aWQgVGVhckRvd24oKSBvdmVycmlkZSB7IFNhZmVEZWxldGUobVRyYW5zbGF0b3IpOyB9Ci0KLSAg
ICAvLyBSZXR1cm4gdHJ1ZSB3aGVuIGNvbXBpbGF0aW9uIHN1Y2NlZWRzCi0gICAgYm9vbCBjb21w
aWxlKGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcpCi0gICAgewotICAgICAgICBjb25z
dCBjaGFyICpzaGFkZXJTdHJpbmdzW10gPSB7c2hhZGVyU3RyaW5nLmNfc3RyKCl9OwotICAgICAg
ICBib29sIHN0YXR1cyA9IG1UcmFuc2xhdG9yLT5jb21waWxlKHNoYWRlclN0cmluZ3MsIDEsIFNI
X0lOVEVSTUVESUFURV9UUkVFIHwgU0hfVkFSSUFCTEVTKTsKLSAgICAgICAgVEluZm9TaW5rICZp
bmZvU2luayA9IG1UcmFuc2xhdG9yLT5nZXRJbmZvU2luaygpOwotICAgICAgICBtSW5mb0xvZyAg
ICAgICAgICAgID0gaW5mb1NpbmsuaW5mby5jX3N0cigpOwotICAgICAgICByZXR1cm4gc3RhdHVz
OwotICAgIH0KLQotICBwcm90ZWN0ZWQ6Ci0gICAgc3RkOjpzdHJpbmcgbUluZm9Mb2c7Ci0gICAg
VHJhbnNsYXRvckVTU0wgKm1UcmFuc2xhdG9yID0gbnVsbHB0cjsKLX07Ci0KLS8vIGNoZWNrcyB3
aGV0aGVyIGNvbXBpbGVyIGhhcyBwYXJzZWQgdGhlIGxvY2FsIHNpemUgbGF5b3V0IHF1YWxpZmll
cnMgcWNvcnJlY3RseQotVEVTVF9GKFdvcmtHcm91cFNpemVUZXN0LCBPbmx5TG9jYWxTaXplWFNw
ZWNpZmllZCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nID0KLSAgICAg
ICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAibGF5b3V0KGxvY2FsX3NpemVfeD01KSBp
bjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBj
b21waWxlKHNoYWRlclN0cmluZyk7Ci0KLSAgICBjb25zdCBzaDo6V29ya0dyb3VwU2l6ZSAmbG9j
YWxTaXplID0gbVRyYW5zbGF0b3ItPmdldENvbXB1dGVTaGFkZXJMb2NhbFNpemUoKTsKLSAgICBB
U1NFUlRfRVEoNSwgbG9jYWxTaXplWzBdKTsKLSAgICBBU1NFUlRfRVEoMSwgbG9jYWxTaXplWzFd
KTsKLSAgICBBU1NFUlRfRVEoMSwgbG9jYWxTaXplWzJdKTsKLX0KLQotLy8gY2hlY2tzIHdoZXRo
ZXIgY29tcGlsZXIgaGFzIHBhcnNlZCB0aGUgbG9jYWwgc2l6ZSBsYXlvdXQgcXVhbGlmaWVycyBx
Y29ycmVjdGx5Ci1URVNUX0YoV29ya0dyb3VwU2l6ZVRlc3QsIExvY2FsU2l6ZVhhbmRaKQotewot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNpb24g
MzEwIGVzXG4iCi0gICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94PTUsIGxvY2FsX3NpemVfej0x
MCkgaW47XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICJ9XG4iOwotCi0g
ICAgY29tcGlsZShzaGFkZXJTdHJpbmcpOwotCi0gICAgY29uc3Qgc2g6OldvcmtHcm91cFNpemUg
JmxvY2FsU2l6ZSA9IG1UcmFuc2xhdG9yLT5nZXRDb21wdXRlU2hhZGVyTG9jYWxTaXplKCk7Ci0g
ICAgQVNTRVJUX0VRKDUsIGxvY2FsU2l6ZVswXSk7Ci0gICAgQVNTRVJUX0VRKDEsIGxvY2FsU2l6
ZVsxXSk7Ci0gICAgQVNTRVJUX0VRKDEwLCBsb2NhbFNpemVbMl0pOwotfQotCi0vLyBjaGVja3Mg
d2hldGhlciBjb21waWxlciBoYXMgcGFyc2VkIHRoZSBsb2NhbCBzaXplIGxheW91dCBxdWFsaWZp
ZXJzIHFjb3JyZWN0bHkKLVRFU1RfRihXb3JrR3JvdXBTaXplVGVzdCwgTG9jYWxTaXplQWxsKQot
ewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcgPQotICAgICAgICAiI3ZlcnNp
b24gMzEwIGVzXG4iCi0gICAgICAgICJsYXlvdXQobG9jYWxfc2l6ZV94PTUsIGxvY2FsX3NpemVf
ej0xMCwgbG9jYWxfc2l6ZV95PTE1KSBpbjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
LSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb21waWxlKHNoYWRlclN0cmluZyk7Ci0KLSAgICBjb25z
dCBzaDo6V29ya0dyb3VwU2l6ZSAmbG9jYWxTaXplID0gbVRyYW5zbGF0b3ItPmdldENvbXB1dGVT
aGFkZXJMb2NhbFNpemUoKTsKLSAgICBBU1NFUlRfRVEoNSwgbG9jYWxTaXplWzBdKTsKLSAgICBB
U1NFUlRfRVEoMTUsIGxvY2FsU2l6ZVsxXSk7Ci0gICAgQVNTRVJUX0VRKDEwLCBsb2NhbFNpemVb
Ml0pOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2Rl
cXAuZ3lwaSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwLmd5cGkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiZjZjNTY0OGMxLi4wMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcC5neXBpCisrKyAvZGV2L251
bGwKQEAgLTEsMTkwNCArMCwwIEBACi0jIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSMgZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KLQotewotICAgICd2YXJpYWJsZXMnOgotICAgIHsKLSAgICAg
ICAgIyBEZWZpbmUgdGhlc2UgdmFyaWFibGVzIHdpdGhpbiBhbiBpbm5lciB2YXJpYWJsZXMgZGlj
dC4KLSAgICAgICAgIyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBnZXQgdGhlc2UgdmFyaWFibGVzIGRl
ZmluZWQgZm9yIHRoZSBjb25kaXRpb25zCi0gICAgICAgICMgd2l0aGluIHRoZSBvdXRlciB2YXJp
YWJsZXMgZGljdCB3aGljaCBvcGVyYXRlIG9uIHRoZXNlIHZhcmlhYmxlcy4KLSAgICAgICAgJ3Zh
cmlhYmxlcyc6Ci0gICAgICAgIHsKLSAgICAgICAgICAgICdhbmdsZV9idWlsZF93aW5ydCUnOiAw
LAotICAgICAgICB9LAotCi0gICAgICAgICMgQ29weSBjb25kaXRpb25hbGx5LXNldCB2YXJpYWJs
ZXMgdG8gdGhlIG91dGVyIHZhcmlhYmxlcyBkaWN0LgotICAgICAgICAnYW5nbGVfYnVpbGRfd2lu
cnQlJzogJzwoYW5nbGVfYnVpbGRfd2lucnQpJywKLQotICAgICAgICAnZGVxcF9wYXRoJzogJzwo
REVQVEgpL3RoaXJkX3BhcnR5L2RlcXAvc3JjJywKLSAgICAgICAgJ2xpYnBuZ19wYXRoJzogJzwo
REVQVEgpL3RoaXJkX3BhcnR5L2xpYnBuZycsCi0gICAgICAgICd6bGliX3BhdGgnOiAnPChERVBU
SCkvdGhpcmRfcGFydHkvemxpYicsCi0KLSAgICAgICAgJ2FuZ2xlX2J1aWxkX2RlcXBfbGlicmFy
aWVzJScgOiAwLAotICAgICAgICAnYW5nbGVfYnVpbGRfZGVxcF9ndGVzdF9zdXBwb3J0JScgOiAw
LAotICAgICAgICAnYW5nbGVfYnVpbGRfZGVxcF9leGVjdXRhYmxlcyUnIDogMCwKLSAgICAgICAg
J2FuZ2xlX2J1aWxkX2RlcXBfZ3Rlc3RfZXhlY3V0YWJsZXMlJyA6MCwKLQotICAgICAgICAnY2xh
bmdfd2FybmluZ19mbGFncyc6Ci0gICAgICAgIFsKLSAgICAgICAgICAgICAjIHRjdTo6Q29tbWFu
ZExpbmUgaGFzIHZpcnR1YWwgZnVuY3Rpb25zIGJ1dCBubyB2aXJ0dWFsIGRlc3RydWN0b3IKLSAg
ICAgICAgICAgICctV25vLW5vLWRlbGV0ZS1ub24tdmlydHVhbC1kdG9yJywKLSAgICAgICAgXSwK
LQotICAgICAgICAnZGVxcF93aW5fY2ZsYWdzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJy9F
SHNjJywgICAjIGRFUVAgcmVxdWlyZXMgZXhjZXB0aW9ucwotICAgICAgICAgICAgJy93ZDQwOTEn
LCAjIHR5cGVkZWYgaWdub3JlZCB3aGVuIG5vIHZhcmlhYmxlIGlzIGRlY2xhcmVkCi0gICAgICAg
ICAgICAnL3dkNDEwMCcsCi0gICAgICAgICAgICAnL3dkNDEyNScsICMgZGVjaW1hbCBkaWdpdCB0
ZXJtaW5hdGVzIG9jdGFsIGVzY2FwZSBzZXF1ZW5jZQotICAgICAgICAgICAgJy93ZDQxMjcnLCAj
IGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gY29uc3RhbnQKLSAgICAgICAgICAgICcvd2Q0MjQ0Jywg
IyBwb3NzaWJsZSBsb3NzIG9mIGRhdGEKLSAgICAgICAgICAgICcvd2Q0MjQ1JywgIyBhcmd1bWVu
dCBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2gKLSAgICAgICAgICAgICcvd2Q0Mjk3JywgIyBmdW5j
dGlvbiBhc3N1bWVkIG5vdCB0byB0aHJvdyBhbiBleGNlcHRpb24gYnV0IGRvZXMKLSAgICAgICAg
ICAgICcvd2Q0Mzg5JywgIyBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2gKLSAgICAgICAgICAgICcv
d2Q0NTEwJywgIyBkZWZhdWx0IGNvbnN0cnVjdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKLSAg
ICAgICAgICAgICcvd2Q0NTEyJywKLSAgICAgICAgICAgICcvd2Q0NjEwJywgIyBjYW5ub3QgYmUg
aW5zdGFudGlhdGVkCi0gICAgICAgICAgICAnL3dkNDYxMScsICMgc2V0am1wIGludGVyYWN0aW9u
IG5vbi1wb3J0YWJsZQotICAgICAgICAgICAgJy93ZDQ3MDEnLCAjIHBvdGVudGlhbGx5IHVuaW5p
dCB1c2VkCi0gICAgICAgICAgICAnL3dkNDcwMicsICMgdW5yZWFjaGFibGUgY29kZQotICAgICAg
ICAgICAgJy93ZDQ3MDYnLCAjIGFzc2lnbm1lbnQgd2l0aGluIGNvbmRpdGlvbmFsIGV4cHJlc3Np
b24KLSAgICAgICAgICAgICcvd2Q0ODM4JywgIyBjb252ZXJzaW9uIHJlcXVpcmVzIGEgbmFycm93
aW5nIGNvbnZlcnNpb24KLSAgICAgICAgICAgICcvd2Q0OTk2JywgIyBkZXByZWNhdGVkCi0gICAg
ICAgIF0sCi0gICAgICAgICdkZXFwX2RlZmluZXMnOgotICAgICAgICBbCi0gICAgICAgICAgICAn
REVRUF9TVVBQT1JUX0dMRVMzMT0xJywKLSAgICAgICAgICAgICdERVFQX1NVUFBPUlRfR0xFUzM9
MScsCi0gICAgICAgICAgICAnREVRUF9TVVBQT1JUX0dMRVMyPTEnLAotICAgICAgICAgICAgJ0RF
UVBfU1VQUE9SVF9FR0w9MScsCi0gICAgICAgICAgICAnREVRUF9UQVJHRVRfTkFNRT0iYW5nbGUi
JywKLSAgICAgICAgICAgICdERVFQX0dMRVMzMV9SVU5USU1FX0xPQUQ9MScsCi0gICAgICAgICAg
ICAnREVRUF9HTEVTM19SVU5USU1FX0xPQUQ9MScsCi0gICAgICAgICAgICAnREVRUF9HTEVTMl9S
VU5USU1FX0xPQUQ9MScsCi0gICAgICAgICAgICAnUVBfU1VQUE9SVF9QTkc9MScsCi0gICAgICAg
ICAgICAnX0hBU19FWENFUFRJT05TPTEnLAotICAgICAgICBdLAotICAgICAgICAnZGVxcF91bmRl
ZmluZXMnOgotICAgICAgICBbCi0gICAgICAgICAgICAnV0lOMzJfTEVBTl9BTkRfTUVBTicsCi0g
ICAgICAgICAgICAnTk9NSU5NQVgnLAotICAgICAgICAgICAgJ19IQVNfRVhDRVBUSU9OUz0wJywK
LSAgICAgICAgXSwKLSAgICAgICAgJ2RlcXBfaW5jbHVkZV9kaXJzJzoKLSAgICAgICAgWwotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVjdXRvcicsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL2V4ZWNzZXJ2ZXInLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29t
bW9uJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWJhc2Un
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXBvb2wnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldGhyZWFkJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXV0aWwnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2Rlc3RyZWFtJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2VnbCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9lZ2wvd3JhcHBlcicsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9vcGVuZ2wnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL3Np
bXBsZXJlZmVyZW5jZScsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVu
Z2wvd3JhcHBlcicsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9wbGF0Zm9y
bS9udWxsJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3FwaGVscGVyJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXInLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMi9hY2N1cmFjeScsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMyL3N0cmVzcycsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvdXNlY2FzZXMnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9hY2N1cmFjeScsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcycsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvdXNlY2FzZXMnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMScsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMxL2Z1bmN0aW9uYWwnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzMS9zdHJlc3MnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hh
cmVkJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHVzZWNhc2VzJywKLSAg
ICAgICAgICAgICc8KGxpYnBuZ19wYXRoKScsCi0gICAgICAgICAgICAnPCh6bGliX3BhdGgpJywK
LSAgICAgICAgXSwKLSAgICAgICAgJ2RlcXBfZ2xlczJfc291cmNlcyc6Ci0gICAgICAgIFsKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9hY2N1cmFjeS9lczJhQWNjdXJh
Y3lUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Fj
Y3VyYWN5L2VzMmFBY2N1cmFjeVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvYWNjdXJhY3kvZXMyYVRleHR1cmVGaWx0ZXJpbmdUZXN0cy5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2FjY3VyYWN5L2VzMmFUZXh0
dXJlRmlsdGVyaW5nVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMi9hY2N1cmFjeS9lczJhVGV4dHVyZU1pcG1hcFRlc3RzLmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvYWNjdXJhY3kvZXMyYVRleHR1cmVNaXBtYXBU
ZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2FjY3Vy
YWN5L2VzMmFWYXJ5aW5nSW50ZXJwb2xhdGlvblRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvYWNjdXJhY3kvZXMyYVZhcnlpbmdJbnRlcnBvbGF0aW9u
VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5j
dGlvbmFsL2VzMmZBcGlDYXNlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmQXBpQ2FzZS5ocHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkF0dHJpYkxvY2F0aW9uVGVzdHMu
Y3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFs
L2VzMmZBdHRyaWJMb2NhdGlvblRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmQmxlbmRUZXN0cy5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkJsZW5kVGVzdHMu
aHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFs
L2VzMmZCb29sZWFuU3RhdGVRdWVyeVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmQm9vbGVhblN0YXRlUXVlcnlUZXN0cy5o
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwv
ZXMyZkJ1ZmZlck9iamVjdFF1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZCdWZmZXJPYmplY3RRdWVyeVRlc3RzLmhw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9l
czJmQnVmZmVyVGVzdFV0aWwuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZCdWZmZXJUZXN0VXRpbC5ocHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkJ1ZmZlcldyaXRlVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlv
bmFsL2VzMmZCdWZmZXJXcml0ZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmQ2xpcHBpbmdUZXN0cy5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkNsaXBwaW5n
VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5j
dGlvbmFsL2VzMmZDb2xvckNsZWFyVGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkNvbG9yQ2xlYXJUZXN0LmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRGVidWdN
YXJrZXJUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMy
L2Z1bmN0aW9uYWwvZXMyZkRlYnVnTWFya2VyVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZEZWZhdWx0VmVydGV4QXR0cmli
dXRlVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9m
dW5jdGlvbmFsL2VzMmZEZWZhdWx0VmVydGV4QXR0cmlidXRlVGVzdHMuaHBwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZEZXB0aFJhbmdl
VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5j
dGlvbmFsL2VzMmZEZXB0aFJhbmdlVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZEZXB0aFN0ZW5jaWxDbGVhclRlc3RzLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9l
czJmRGVwdGhTdGVuY2lsQ2xlYXJUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkRlcHRoU3RlbmNpbFRlc3RzLmNwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRGVw
dGhTdGVuY2lsVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMi9mdW5jdGlvbmFsL2VzMmZEZXB0aFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRGVwdGhUZXN0cy5ocHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkRpdGhl
cmluZ1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
ZnVuY3Rpb25hbC9lczJmRGl0aGVyaW5nVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZEcmF3VGVzdHMuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZEcmF3VGVz
dHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlv
bmFsL2VzMmZGYm9BcGlUZXN0LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRmJvQXBpVGVzdC5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkZib0NvbXBsZXRlbmVzc1Rl
c3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rp
b25hbC9lczJmRmJvQ29tcGxldGVuZXNzVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZGYm9SZW5kZXJUZXN0LmNwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRmJv
UmVuZGVyVGVzdC5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMy
L2Z1bmN0aW9uYWwvZXMyZkZib1N0YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkZib1N0YXRlUXVlcnlUZXN0
cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9u
YWwvZXMyZkZsb2F0U3RhdGVRdWVyeVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRmxvYXRTdGF0ZVF1ZXJ5VGVzdHMuaHBw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2Vz
MmZGbHVzaEZpbmlzaFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRmx1c2hGaW5pc2hUZXN0cy5ocHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkZyYWdPcEludGVy
YWN0aW9uVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9mdW5jdGlvbmFsL2VzMmZGcmFnT3BJbnRlcmFjdGlvblRlc3RzLmhwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmRnVuY3Rpb25hbFRl
c3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rp
b25hbC9lczJmRnVuY3Rpb25hbFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmSW1wbGVtZW50YXRpb25MaW1pdFRlc3RzLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9l
czJmSW1wbGVtZW50YXRpb25MaW1pdFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwv
ZXMyZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZMaWZldGltZVRlc3RzLmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmTGlmZXRp
bWVUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1
bmN0aW9uYWwvZXMyZkxpZ2h0QW1vdW50VGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZkxpZ2h0QW1vdW50VGVzdC5ocHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZk11
bHRpc2FtcGxlVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMi9mdW5jdGlvbmFsL2VzMmZNdWx0aXNhbXBsZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmTmVnYXRpdmVCdWZmZXJB
cGlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1
bmN0aW9uYWwvZXMyZk5lZ2F0aXZlQnVmZmVyQXBpVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZOZWdhdGl2ZUZyYWdtZW50
QXBpVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9m
dW5jdGlvbmFsL2VzMmZOZWdhdGl2ZUZyYWdtZW50QXBpVGVzdHMuaHBwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZOZWdhdGl2ZVNoYWRl
ckFwaVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
ZnVuY3Rpb25hbC9lczJmTmVnYXRpdmVTaGFkZXJBcGlUZXN0cy5ocHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZk5lZ2F0aXZlU3RhdGVB
cGlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1
bmN0aW9uYWwvZXMyZk5lZ2F0aXZlU3RhdGVBcGlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZk5lZ2F0aXZlVGV4dHVyZUFw
aVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVu
Y3Rpb25hbC9lczJmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZOZWdhdGl2ZVZlcnRleEFy
cmF5QXBpVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9mdW5jdGlvbmFsL2VzMmZOZWdhdGl2ZVZlcnRleEFycmF5QXBpVGVzdHMuaHBwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZQb2x5Z29u
T2Zmc2V0VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9mdW5jdGlvbmFsL2VzMmZQb2x5Z29uT2Zmc2V0VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZQcmVyZXF1aXNpdGVUZXN0
cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9u
YWwvZXMyZlByZXJlcXVpc2l0ZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmUmFuZG9tRnJhZ21lbnRPcFRlc3RzLmNwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJm
UmFuZG9tRnJhZ21lbnRPcFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmUmFuZG9tU2hhZGVyVGVzdHMuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZSYW5kb21T
aGFkZXJUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMy
L2Z1bmN0aW9uYWwvZXMyZlJhc3Rlcml6YXRpb25UZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlJhc3Rlcml6YXRpb25UZXN0
cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9u
YWwvZXMyZlJib1N0YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlJib1N0YXRlUXVlcnlUZXN0cy5ocHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlJl
YWRQaXhlbHNUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMyL2Z1bmN0aW9uYWwvZXMyZlJlYWRQaXhlbHNUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNjaXNzb3JUZXN0cy5jcHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMy
ZlNjaXNzb3JUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlckFsZ29yaXRobVRlc3RzLmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVyQWxnb3Jp
dGhtVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9m
dW5jdGlvbmFsL2VzMmZTaGFkZXJBcGlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlckFwaVRlc3RzLmhwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hh
ZGVyQnVpbHRpblZhclRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVyQnVpbHRpblZhclRlc3RzLmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVy
Q29uc3RFeHByVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJDb25zdEV4cHJUZXN0cy5ocHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlckRpc2Nh
cmRUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1
bmN0aW9uYWwvZXMyZlNoYWRlckRpc2NhcmRUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlckV4ZWN1dGVUZXN0LmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9l
czJmU2hhZGVyRXhlY3V0ZVRlc3QuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJGcmFnRGF0YVRlc3RzLmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVy
RnJhZ0RhdGFUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlckluZGV4aW5nVGVzdHMuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJJbmRleGlu
Z1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVu
Y3Rpb25hbC9lczJmU2hhZGVySW52YXJpYW5jZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVySW52YXJpYW5jZVRl
c3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rp
b25hbC9lczJmU2hhZGVyTG9vcFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVyTG9vcFRlc3RzLmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVy
TWF0cml4VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi9mdW5jdGlvbmFsL2VzMmZTaGFkZXJNYXRyaXhUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlck9wZXJhdG9yVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlv
bmFsL2VzMmZTaGFkZXJPcGVyYXRvclRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVyUmV0dXJuVGVzdHMuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZT
aGFkZXJSZXR1cm5UZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlclN0
YXRlUXVlcnlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlclN0cnVjdFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU2hhZGVyU3RydWN0VGVz
dHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlv
bmFsL2VzMmZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlNoYWRlclRleHR1cmVGdW5j
dGlvblRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
ZnVuY3Rpb25hbC9lczJmU3RlbmNpbFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU3RlbmNpbFRlc3RzLmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmU3RyaW5n
UXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMy
L2Z1bmN0aW9uYWwvZXMyZlN0cmluZ1F1ZXJ5VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZUZXh0dXJlQ29tcGxldGVuZXNz
VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5j
dGlvbmFsL2VzMmZUZXh0dXJlQ29tcGxldGVuZXNzVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZUZXh0dXJlRmlsdGVyaW5n
VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5j
dGlvbmFsL2VzMmZUZXh0dXJlRmlsdGVyaW5nVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZUZXh0dXJlRm9ybWF0VGVzdHMu
Y3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFs
L2VzMmZUZXh0dXJlRm9ybWF0VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZUZXh0dXJlTWlwbWFwVGVzdHMuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZUZXh0
dXJlTWlwbWFwVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMi9mdW5jdGlvbmFsL2VzMmZUZXh0dXJlU2l6ZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmVGV4dHVyZVNpemVUZXN0
cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9u
YWwvZXMyZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5jdGlvbmFsL2VzMmZUZXh0dXJlU3BlY2lmaWNhdGlv
blRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVu
Y3Rpb25hbC9lczJmVGV4dHVyZVN0YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlRleHR1cmVTdGF0ZVF1ZXJ5
VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9mdW5j
dGlvbmFsL2VzMmZUZXh0dXJlVW5pdFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmVGV4dHVyZVVuaXRUZXN0cy5ocHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL2Z1bmN0aW9uYWwvZXMyZlRl
eHR1cmVXcmFwVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMi9mdW5jdGlvbmFsL2VzMmZUZXh0dXJlV3JhcFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmVW5pZm9ybUFwaVRlc3Rz
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25h
bC9lczJmVW5pZm9ybUFwaVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmVmVydGV4QXJyYXlUZXN0LmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmVmVydGV4QXJy
YXlUZXN0LmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvZnVu
Y3Rpb25hbC9lczJmVmVydGV4VGV4dHVyZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczIvZnVuY3Rpb25hbC9lczJmVmVydGV4VGV4dHVyZVRlc3RzLmhw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2Uv
ZXMycEJsZW5kVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMi9wZXJmb3JtYW5jZS9lczJwQmxlbmRUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBEcmF3Q2FsbEJhdGNoaW5nVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3Jt
YW5jZS9lczJwRHJhd0NhbGxCYXRjaGluZ1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFBlcmZvcm1hbmNlVGVzdHMuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9l
czJwUGVyZm9ybWFuY2VUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBSZWR1bmRhbnRTdGF0ZUNoYW5nZVRlc3RzLmNwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMy
cFJlZHVuZGFudFN0YXRlQ2hhbmdlVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwU2hhZGVyQ29tcGlsYXRpb25DYXNlcy5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNl
L2VzMnBTaGFkZXJDb21waWxhdGlvbkNhc2VzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFNoYWRlckNvbXBpbGVyVGVzdHMuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9l
czJwU2hhZGVyQ29tcGlsZXJUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBTaGFkZXJDb250cm9sU3RhdGVtZW50VGVzdHMu
Y3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5j
ZS9lczJwU2hhZGVyQ29udHJvbFN0YXRlbWVudFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFNoYWRlck9wZXJhdG9yVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3Jt
YW5jZS9lczJwU2hhZGVyT3BlcmF0b3JUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBTaGFkZXJPcHRpbWl6YXRpb25UZXN0
cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1h
bmNlL2VzMnBTaGFkZXJPcHRpbWl6YXRpb25UZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBTdGF0ZUNoYW5nZUNhbGxUZXN0
cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1h
bmNlL2VzMnBTdGF0ZUNoYW5nZUNhbGxUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBTdGF0ZUNoYW5nZVRlc3RzLmNwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMy
cFN0YXRlQ2hhbmdlVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwVGV4dHVyZUNhc2VzLmNwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFRleHR1cmVDYXNlcy5o
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNl
L2VzMnBUZXh0dXJlQ291bnRUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBUZXh0dXJlQ291bnRUZXN0cy5ocHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3BlcmZvcm1hbmNlL2VzMnBUZXh0
dXJlRmlsdGVyaW5nVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVyZm9ybWFuY2UvZXMycFRleHR1
cmVGb3JtYXRUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMyL3BlcmZvcm1hbmNlL2VzMnBUZXh0dXJlRm9ybWF0VGVzdHMuaHBwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9wZXJmb3JtYW5jZS9lczJwVGV4dHVyZVVwbG9h
ZFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvcGVy
Zm9ybWFuY2UvZXMycFRleHR1cmVVcGxvYWRUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMyL3N0cmVzcy9lczJzRHJhd1Rlc3RzLmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvc3RyZXNzL2VzMnNEcmF3VGVzdHMuaHBw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9zdHJlc3MvZXMyc0xv
bmdSdW5uaW5nVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMi9zdHJlc3MvZXMyc0xvbmdSdW5uaW5nVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9zdHJlc3MvZXMyc01lbW9yeVRlc3RzLmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvc3RyZXNzL2VzMnNNZW1vcnlUZXN0
cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3N0cmVzcy9l
czJzU3BlY2lhbEZsb2F0VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMi9zdHJlc3MvZXMyc1NwZWNpYWxGbG9hdFRlc3RzLmhwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvc3RyZXNzL2VzMnNTdHJlc3NUZXN0cy5jcHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3N0cmVzcy9lczJzU3Ry
ZXNzVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi9z
dHJlc3MvZXMyc1ZlcnRleEFycmF5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMi9zdHJlc3MvZXMyc1ZlcnRleEFycmF5VGVzdHMuaHBwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMi90ZXMyQ2FwYWJpbGl0eVRlc3RzLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIvdGVzMkNhcGFiaWxp
dHlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3Rl
czJDb250ZXh0LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczIv
dGVzMkNvbnRleHQuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
Mi90ZXMySW5mb1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczIvdGVzMkluZm9UZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMyL3RlczJUZXN0Q2FzZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMyL3RlczJUZXN0Q2FzZS5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMyL3RlczJUZXN0UGFja2FnZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMyL3RlczJUZXN0UGFja2FnZS5ocHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMyL3RlczJUZXN0UGFja2FnZUVudHJ5LmNwcCcsCi0g
ICAgICAgIF0sCi0gICAgICAgICdkZXFwX2dsZXMzX3NvdXJjZXMnOgotICAgICAgICBbCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvYWNjdXJhY3kvZXMzYUFjY3VyYWN5
VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9hY2N1
cmFjeS9lczNhQWNjdXJhY3lUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2FjY3VyYWN5L2VzM2FUZXh0dXJlRmlsdGVyaW5nVGVzdHMuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9hY2N1cmFjeS9lczNhVGV4dHVy
ZUZpbHRlcmluZ1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvYWNjdXJhY3kvZXMzYVRleHR1cmVNaXBtYXBUZXN0cy5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2FjY3VyYWN5L2VzM2FUZXh0dXJlTWlwbWFwVGVz
dHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9hY2N1cmFj
eS9lczNhVmFyeWluZ0ludGVycG9sYXRpb25UZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2FjY3VyYWN5L2VzM2FWYXJ5aW5nSW50ZXJwb2xhdGlvblRl
c3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmQXBpQ2FzZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkFwaUNhc2UuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZBU1RDRGVjb21wcmVzc2lvbkNhc2Vz
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmQVNUQ0RlY29tcHJlc3Npb25DYXNlcy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkF0dHJpYkxvY2F0aW9uVGVzdHMuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2Vz
M2ZBdHRyaWJMb2NhdGlvblRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQmxlbmRUZXN0cy5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkJsZW5kVGVzdHMuaHBw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2Vz
M2ZCb29sZWFuU3RhdGVRdWVyeVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQm9vbGVhblN0YXRlUXVlcnlUZXN0cy5ocHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMz
ZkJ1ZmZlckNvcHlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkJ1ZmZlckNvcHlUZXN0cy5ocHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkJ1ZmZlck1hcFRlc3Rz
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmQnVmZmVyTWFwVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZCdWZmZXJPYmplY3RRdWVyeVRlc3RzLmNwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQnVm
ZmVyT2JqZWN0UXVlcnlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkJ1ZmZlcldyaXRlVGVzdHMuY3BwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZCdWZmZXJXcml0
ZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVu
Y3Rpb25hbC9lczNmQnVpbHRpblByZWNpc2lvblRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQnVpbHRpblByZWNpc2lvblRl
c3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmQ2xpcHBpbmdUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkNsaXBwaW5nVGVzdHMuaHBwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZDb2xvckNsZWFy
VGVzdC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0
aW9uYWwvZXMzZkNvbG9yQ2xlYXJUZXN0LmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmQ29tcHJlc3NlZFRleHR1cmVUZXN0cy5jcHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMz
ZkNvbXByZXNzZWRUZXh0dXJlVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZEZWZhdWx0VmVydGV4QXJyYXlPYmplY3RUZXN0
cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9u
YWwvZXMzZkRlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRGVmYXVsdFZlcnRleEF0
dHJpYnV0ZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvZnVuY3Rpb25hbC9lczNmRGVmYXVsdFZlcnRleEF0dHJpYnV0ZVRlc3RzLmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRGVwdGhT
dGVuY2lsQ2xlYXJUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkRlcHRoU3RlbmNpbENsZWFyVGVzdHMuaHBwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZEZXB0aFN0
ZW5jaWxUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
L2Z1bmN0aW9uYWwvZXMzZkRlcHRoU3RlbmNpbFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRGVwdGhUZXN0cy5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkRl
cHRoVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9m
dW5jdGlvbmFsL2VzM2ZEaXRoZXJpbmdUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkRpdGhlcmluZ1Rlc3RzLmhwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRHJh
d1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVu
Y3Rpb25hbC9lczNmRHJhd1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvQXBpVGVzdHMuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGYm9BcGlUZXN0cy5o
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwv
ZXMzZkZib0NvbG9yYnVmZmVyVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGYm9Db2xvcmJ1ZmZlclRlc3RzLmhwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJv
Q29tcGxldGVuZXNzVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGYm9Db21wbGV0ZW5lc3NUZXN0cy5ocHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZib0RlcHRo
YnVmZmVyVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
My9mdW5jdGlvbmFsL2VzM2ZGYm9EZXB0aGJ1ZmZlclRlc3RzLmhwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvSW52YWxpZGF0ZVRl
c3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmRmJvSW52YWxpZGF0ZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvTXVsdGlzYW1wbGVUZXN0cy5jcHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMz
ZkZib011bHRpc2FtcGxlVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGYm9SZW5kZXJUZXN0LmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRmJvUmVuZGVyVGVz
dC5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9u
YWwvZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZib1N0YXRlUXVlcnlUZXN0cy5ocHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZi
b1N0ZW5jaWxidWZmZXJUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZib1N0ZW5jaWxidWZmZXJUZXN0cy5ocHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZib1Rl
c3RDYXNlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVu
Y3Rpb25hbC9lczNmRmJvVGVzdENhc2UuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGYm9UZXN0VXRpbC5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZib1Rlc3RVdGls
LmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmRmxvYXRTdGF0ZVF1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGbG9hdFN0YXRlUXVlcnlUZXN0cy5ocHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMz
ZkZsdXNoRmluaXNoVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGbHVzaEZpbmlzaFRlc3RzLmhwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRnJhZ0RlcHRoVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZGcmFnRGVwdGhUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZyYWdtZW50T3V0cHV0VGVzdHMuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZGcmFn
bWVudE91dHB1dFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvZnVuY3Rpb25hbC9lczNmRnJhZ09wSW50ZXJhY3Rpb25UZXN0cy5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZyYWdPcElu
dGVyYWN0aW9uVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9mdW5jdGlvbmFsL2VzM2ZGcmFtZWJ1ZmZlckJsaXRUZXN0cy5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkZyYW1lYnVmZmVy
QmxpdFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmRnVuY3Rpb25hbFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmRnVuY3Rpb25hbFRlc3RzLmhwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNm
SW1wbGVtZW50YXRpb25MaW1pdFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmSW1wbGVtZW50YXRpb25MaW1pdFRlc3RzLmhw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmSW5kZXhlZFN0YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkluZGV4ZWRTdGF0ZVF1ZXJ5VGVzdHMuaHBw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2Vz
M2ZJbnN0YW5jZWRSZW5kZXJpbmdUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkluc3RhbmNlZFJlbmRlcmluZ1Rlc3RzLmhw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmSW50ZWdlcjY0U3RhdGVRdWVyeVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmSW50ZWdlcjY0U3RhdGVRdWVyeVRlc3Rz
LmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmSW50ZWdlclN0YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZkludGVnZXJTdGF0ZVF1ZXJ5VGVzdHMu
aHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFs
L2VzM2ZJbnRlcm5hbEZvcm1hdFF1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZJbnRlcm5hbEZvcm1hdFF1ZXJ5VGVz
dHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZMaWZldGltZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmTGlmZXRpbWVUZXN0cy5ocHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZk11bHRpc2FtcGxl
VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5j
dGlvbmFsL2VzM2ZNdWx0aXNhbXBsZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmTmVnYXRpdmVCdWZmZXJBcGlUZXN0cy5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwv
ZXMzZk5lZ2F0aXZlQnVmZmVyQXBpVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZOZWdhdGl2ZUZyYWdtZW50QXBpVGVzdHMu
Y3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFs
L2VzM2ZOZWdhdGl2ZUZyYWdtZW50QXBpVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZOZWdhdGl2ZVNoYWRlckFwaVRlc3Rz
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmTmVnYXRpdmVTaGFkZXJBcGlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZk5lZ2F0aXZlU3RhdGVBcGlUZXN0cy5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwv
ZXMzZk5lZ2F0aXZlU3RhdGVBcGlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZk5lZ2F0aXZlVGV4dHVyZUFwaVRlc3RzLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZOZWdhdGl2ZVZlcnRleEFycmF5QXBpVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZOZWdhdGl2ZVZlcnRleEFycmF5QXBpVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZPY2NsdXNpb25RdWVyeVRl
c3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmT2NjbHVzaW9uUXVlcnlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlBpeGVsQnVmZmVyT2JqZWN0VGVzdHMu
Y3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFs
L2VzM2ZQaXhlbEJ1ZmZlck9iamVjdFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmUG9seWdvbk9mZnNldFRlc3RzLmNwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNm
UG9seWdvbk9mZnNldFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmUHJlcmVxdWlzaXRlVGVzdHMuY3BwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZQcmVyZXF1aXNp
dGVUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1
bmN0aW9uYWwvZXMzZlByaW1pdGl2ZVJlc3RhcnRUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlByaW1pdGl2ZVJlc3RhcnRU
ZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0
aW9uYWwvZXMzZlJhbmRvbUZyYWdtZW50T3BUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlJhbmRvbUZyYWdtZW50T3BUZXN0
cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9u
YWwvZXMzZlJhbmRvbVNoYWRlclRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmUmFuZG9tU2hhZGVyVGVzdHMuaHBwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZSYXN0
ZXJpemF0aW9uVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9mdW5jdGlvbmFsL2VzM2ZSYXN0ZXJpemF0aW9uVGVzdHMuaHBwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZSYXN0ZXJpemVyRGlz
Y2FyZFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
ZnVuY3Rpb25hbC9lczNmUmFzdGVyaXplckRpc2NhcmRUZXN0cy5ocHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlJib1N0YXRlUXVlcnlU
ZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0
aW9uYWwvZXMzZlJib1N0YXRlUXVlcnlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlJlYWRQaXhlbHNUZXN0cy5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlJl
YWRQaXhlbHNUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzL2Z1bmN0aW9uYWwvZXMzZlNhbXBsZXJPYmplY3RUZXN0cy5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNhbXBsZXJPYmplY3RU
ZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0
aW9uYWwvZXMzZlNhbXBsZXJTdGF0ZVF1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTYW1wbGVyU3RhdGVRdWVyeVRl
c3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmU2Npc3NvclRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2Npc3NvclRlc3RzLmhwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyQXBpVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZTaGFkZXJBcGlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckJ1aWx0aW5WYXJUZXN0cy5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNo
YWRlckJ1aWx0aW5WYXJUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckNvbW1vbkZ1bmN0aW9uVGVzdHMuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZT
aGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyQ29uc3RFeHByVGVzdHMuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZT
aGFkZXJDb25zdEV4cHJUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckRlcml2YXRlVGVzdHMuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJE
ZXJpdmF0ZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvZnVuY3Rpb25hbC9lczNmU2hhZGVyRGlzY2FyZFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyRGlzY2FyZFRl
c3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rp
b25hbC9lczNmU2hhZGVyRnJhZ0RhdGFUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckZyYWdEYXRhVGVzdHMuaHBw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2Vz
M2ZTaGFkZXJJbmRleGluZ1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVySW5kZXhpbmdUZXN0cy5ocHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRl
ckludmFyaWFuY2VUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckludmFyaWFuY2VUZXN0cy5ocHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlckxv
b3BUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1
bmN0aW9uYWwvZXMzZlNoYWRlckxvb3BUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlck1hdHJpeFRlc3RzLmNwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNm
U2hhZGVyTWF0cml4VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJPcGVyYXRvclRlc3RzLmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyT3Bl
cmF0b3JUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
L2Z1bmN0aW9uYWwvZXMzZlNoYWRlclBhY2tpbmdGdW5jdGlvblRlc3RzLmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyUGFj
a2luZ0Z1bmN0aW9uVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJQcmVjaXNpb25UZXN0cy5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlclBy
ZWNpc2lvblRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvZnVuY3Rpb25hbC9lczNmU2hhZGVyUmV0dXJuVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJSZXR1cm5UZXN0
cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9u
YWwvZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlNoYWRlclN0YXRlUXVlcnlUZXN0cy5o
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwv
ZXMzZlNoYWRlclN0cnVjdFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyU3RydWN0VGVzdHMuaHBwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTaGFkZXJT
d2l0Y2hUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
L2Z1bmN0aW9uYWwvZXMzZlNoYWRlclN3aXRjaFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU2hhZGVyVGV4dHVyZUZ1bmN0
aW9uVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9m
dW5jdGlvbmFsL2VzM2ZTaGFkZXJUZXh0dXJlRnVuY3Rpb25UZXN0cy5ocHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlN0ZW5jaWxUZXN0
cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9u
YWwvZXMzZlN0ZW5jaWxUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlN0cmluZ1F1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZTdHJpbmdRdWVy
eVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVu
Y3Rpb25hbC9lczNmU3luY1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmU3luY1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmVGV4dHVyZUZpbHRlcmlu
Z1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVu
Y3Rpb25hbC9lczNmVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmVGV4dHVyZUZvcm1hdFRlc3Rz
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25h
bC9lczNmVGV4dHVyZUZvcm1hdFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmVGV4dHVyZU1pcG1hcFRlc3RzLmNwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmVGV4
dHVyZU1pcG1hcFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMvZnVuY3Rpb25hbC9lczNmVGV4dHVyZVNoYWRvd1Rlc3RzLmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmVGV4dHVyZVNoYWRv
d1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVu
Y3Rpb25hbC9lczNmVGV4dHVyZVNpemVUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRleHR1cmVTaXplVGVzdHMuaHBwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZU
ZXh0dXJlU3BlY2lmaWNhdGlvblRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmVGV4dHVyZVNwZWNpZmljYXRpb25UZXN0cy5o
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwv
ZXMzZlRleHR1cmVTdGF0ZVF1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0dXJlU3RhdGVRdWVyeVRlc3RzLmhw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9l
czNmVGV4dHVyZVN3aXp6bGVUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRleHR1cmVTd2l6emxlVGVzdHMuaHBwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZUZXh0
dXJlVW5pdFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMvZnVuY3Rpb25hbC9lczNmVGV4dHVyZVVuaXRUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRleHR1cmVXcmFwVGVzdHMu
Y3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFs
L2VzM2ZUZXh0dXJlV3JhcFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNmVHJhbnNmb3JtRmVlZGJhY2tUZXN0cy5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlRy
YW5zZm9ybUZlZWRiYWNrVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZVbmlmb3JtQXBpVGVzdHMuY3BwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZVbmlmb3JtQXBp
VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5j
dGlvbmFsL2VzM2ZVbmlmb3JtQmxvY2tUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlVuaWZvcm1CbG9ja1Rlc3RzLmhwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvZnVuY3Rpb25hbC9lczNm
VmVydGV4QXJyYXlPYmplY3RUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzL2Z1bmN0aW9uYWwvZXMzZlZlcnRleEFycmF5T2JqZWN0VGVzdHMuaHBwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZW
ZXJ0ZXhBcnJheVRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9mdW5jdGlvbmFsL2VzM2ZWZXJ0ZXhBcnJheVRlc3QuaHBwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlvbmFsL2VzM2ZWZXJ0ZXhUZXh0dXJlVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9mdW5jdGlv
bmFsL2VzM2ZWZXJ0ZXhUZXh0dXJlVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwQmxlbmRUZXN0cy5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BCbGVuZFRl
c3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9y
bWFuY2UvZXMzcEJ1ZmZlckRhdGFVcGxvYWRUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BCdWZmZXJEYXRhVXBsb2FkVGVz
dHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3Jt
YW5jZS9lczNwRGVwdGhUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BEZXB0aFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFBlcmZvcm1hbmNlVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3Jt
YW5jZS9lczNwUGVyZm9ybWFuY2VUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BSZWR1bmRhbnRTdGF0ZUNoYW5nZVRlc3Rz
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFu
Y2UvZXMzcFJlZHVuZGFudFN0YXRlQ2hhbmdlVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwU2hhZGVyQ29tcGlsYXRpb25D
YXNlcy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZv
cm1hbmNlL2VzM3BTaGFkZXJDb21waWxhdGlvbkNhc2VzLmhwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFNoYWRlckNvbXBpbGVyVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJmb3Jt
YW5jZS9lczNwU2hhZGVyQ29tcGlsZXJUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BTaGFkZXJDb250cm9sU3RhdGVtZW50
VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9wZXJm
b3JtYW5jZS9lczNwU2hhZGVyQ29udHJvbFN0YXRlbWVudFRlc3RzLmhwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFNoYWRlck9wZXJh
dG9yVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9w
ZXJmb3JtYW5jZS9lczNwU2hhZGVyT3BlcmF0b3JUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BTaGFkZXJPcHRpbWl6YXRp
b25UZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3Bl
cmZvcm1hbmNlL2VzM3BTaGFkZXJPcHRpbWl6YXRpb25UZXN0cy5ocHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BTdGF0ZUNoYW5nZUNh
bGxUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3Bl
cmZvcm1hbmNlL2VzM3BTdGF0ZUNoYW5nZUNhbGxUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BTdGF0ZUNoYW5nZVRlc3Rz
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFu
Y2UvZXMzcFN0YXRlQ2hhbmdlVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwVGV4dHVyZUNhc2VzLmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMzcFRleHR1cmVD
YXNlcy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZv
cm1hbmNlL2VzM3BUZXh0dXJlQ291bnRUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BUZXh0dXJlQ291bnRUZXN0cy5ocHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2Vz
M3BUZXh0dXJlRmlsdGVyaW5nVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMy9wZXJmb3JtYW5jZS9lczNwVGV4dHVyZUZpbHRlcmluZ1Rlc3RzLmhwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvcGVyZm9ybWFuY2UvZXMz
cFRleHR1cmVGb3JtYXRUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzL3BlcmZvcm1hbmNlL2VzM3BUZXh0dXJlRm9ybWF0VGVzdHMuaHBwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMzc0RyYXdUZXN0cy5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNz
RHJhd1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMv
c3RyZXNzL2VzM3NMb25nUnVubmluZ1NoYWRlclRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvc3RyZXNzL2VzM3NMb25nUnVubmluZ1NoYWRlclRlc3Rz
LmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvc3RyZXNzL2Vz
M3NMb25nUnVubmluZ1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvc3RyZXNzL2VzM3NMb25nUnVubmluZ1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvc3RyZXNzL2VzM3NMb25nU2hhZGVyVGVzdHMuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMzc0xv
bmdTaGFkZXJUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzL3N0cmVzcy9lczNzTWVtb3J5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMzc01lbW9yeVRlc3RzLmhwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvc3RyZXNzL2VzM3NPY2NsdXNpb25RdWVyeVRl
c3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvc3RyZXNz
L2VzM3NPY2NsdXNpb25RdWVyeVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMvc3RyZXNzL2VzM3NTcGVjaWFsRmxvYXRUZXN0cy5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNzU3BlY2lhbEZsb2F0
VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJl
c3MvZXMzc1N0cmVzc1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMvc3RyZXNzL2VzM3NTdHJlc3NUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzL3N0cmVzcy9lczNzU3luY1Rlc3RzLmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvc3RyZXNzL2VzM3NTeW5jVGVzdHMuaHBw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy9zdHJlc3MvZXMzc1Zl
cnRleEFycmF5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMy9zdHJlc3MvZXMzc1ZlcnRleEFycmF5VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMy90ZXMzQ29udGV4dC5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3RlczNDb250ZXh0LmhwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMvdGVzM0luZm9UZXN0cy5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzL3RlczNJbmZvVGVzdHMuaHBwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy90ZXMzVGVzdENhc2UuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy90ZXMzVGVzdENhc2UuaHBwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy90ZXMzVGVzdFBhY2thZ2Uu
Y3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy90ZXMzVGVzdFBh
Y2thZ2UuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMy90ZXMz
VGVzdFBhY2thZ2VFbnRyeS5jcHAnLAotICAgICAgICBdLAotICAgICAgICAnZGVxcF9nbGVzMzFf
c291cmNlcyc6Ci0gICAgICAgIFsKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMzEvZnVuY3Rpb25hbC9lczMxZkFkdmFuY2VkQmxlbmRUZXN0cy5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmQWR2YW5jZWRC
bGVuZFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMx
L2Z1bmN0aW9uYWwvZXMzMWZBbmRyb2lkRXh0ZW5zaW9uUGFja0VTMzFBVGVzdHMuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkFu
ZHJvaWRFeHRlbnNpb25QYWNrRVMzMUFUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmQXRvbWljQ291bnRlclRlc3RzLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwv
ZXMzMWZBdG9taWNDb3VudGVyVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkJhc2ljQ29tcHV0ZVNoYWRlclRlc3RzLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwv
ZXMzMWZCYXNpY0NvbXB1dGVTaGFkZXJUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmQm9vbGVhblN0YXRlUXVlcnlUZXN0
cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlv
bmFsL2VzMzFmQm9vbGVhblN0YXRlUXVlcnlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmQnVpbHRpblByZWNpc2lvblRl
c3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZCdWlsdGluUHJlY2lzaW9uVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkNvbXB1dGVTaGFkZXJCdWls
dGluVmFyVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
MzEvZnVuY3Rpb25hbC9lczMxZkNvbXB1dGVTaGFkZXJCdWlsdGluVmFyVGVzdHMuaHBwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkNv
cHlJbWFnZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZDb3B5SW1hZ2VUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmRGVidWdUZXN0cy5jcHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2Vz
MzFmRGVidWdUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzMS9mdW5jdGlvbmFsL2VzMzFmRGVmYXVsdFZlcnRleEFycmF5T2JqZWN0VGVzdHMuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMx
ZkRlZmF1bHRWZXJ0ZXhBcnJheU9iamVjdFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZEcmF3QnVmZmVyc0luZGV4ZWRU
ZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5j
dGlvbmFsL2VzMzFmRHJhd0J1ZmZlcnNJbmRleGVkVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkRyYXdUZXN0cy5jcHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2Vz
MzFmRHJhd1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZGYm9Db2xvcmJ1ZmZlclRlc3RzLmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZGYm9Db2xvcmJ1
ZmZlclRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMx
L2Z1bmN0aW9uYWwvZXMzMWZGYm9Ob0F0dGFjaG1lbnRUZXN0cy5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmRmJvTm9BdHRhY2ht
ZW50VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEv
ZnVuY3Rpb25hbC9lczMxZkZib1Rlc3RDYXNlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZGYm9UZXN0Q2FzZS5ocHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmRmJv
VGVzdFV0aWwuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEv
ZnVuY3Rpb25hbC9lczMxZkZib1Rlc3RVdGlsLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZGcmFtZWJ1ZmZlckRlZmF1bHRTdGF0
ZVF1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
MzEvZnVuY3Rpb25hbC9lczMxZkZyYW1lYnVmZmVyRGVmYXVsdFN0YXRlUXVlcnlUZXN0cy5ocHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2Vz
MzFmRnVuY3Rpb25hbFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZGdW5jdGlvbmFsVGVzdHMuaHBwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkdlb21ldHJ5
U2hhZGVyVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
MzEvZnVuY3Rpb25hbC9lczMxZkdlb21ldHJ5U2hhZGVyVGVzdHMuaHBwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkluZGV4ZWRTdGF0
ZVF1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
MzEvZnVuY3Rpb25hbC9lczMxZkluZGV4ZWRTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkluZGlyZWN0
Q29tcHV0ZURpc3BhdGNoVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkluZGlyZWN0Q29tcHV0ZURpc3BhdGNoVGVzdHMu
aHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25h
bC9lczMxZkluZm9Mb2dRdWVyeVNoYXJlZC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmSW5mb0xvZ1F1ZXJ5U2hhcmVkLmhwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMz
MWZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZJbnRlZ2VyU3RhdGVRdWVyeVRlc3RzLmhw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwv
ZXMzMWZJbnRlcm5hbEZvcm1hdFF1ZXJ5VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZkludGVybmFsRm9ybWF0UXVlcnlU
ZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5j
dGlvbmFsL2VzMzFmTGF5b3V0QmluZGluZ1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZMYXlvdXRCaW5kaW5nVGVzdHMu
aHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25h
bC9lczMxZk11bHRpc2FtcGxlU2hhZGVyUmVuZGVyQ2FzZS5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTXVsdGlzYW1wbGVTaGFk
ZXJSZW5kZXJDYXNlLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZNdWx0aXNhbXBsZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZNdWx0aXNhbXBsZVRl
c3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZOZWdhdGl2ZUFkdmFuY2VkQmxlbmRFcXVhdGlvblRlc3RzLmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdh
dGl2ZUFkdmFuY2VkQmxlbmRFcXVhdGlvblRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZUF0b21pY0NvdW50
ZXJUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9m
dW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVBdG9taWNDb3VudGVyVGVzdHMuaHBwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZl
QnVmZmVyQXBpVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlQnVmZmVyQXBpVGVzdHMuaHBwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0
aXZlRnJhZ21lbnRBcGlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVGcmFnbWVudEFwaVRlc3RzLmhwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMz
MWZOZWdhdGl2ZVByZWNpc2VUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVQcmVjaXNlVGVzdHMuaHBwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMx
Zk5lZ2F0aXZlU2hhZGVyQXBpVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlU2hhZGVyQXBpVGVzdHMuaHBw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9l
czMxZk5lZ2F0aXZlU2hhZGVyRGlyZWN0aXZlVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlU2hhZGVyRGly
ZWN0aXZlVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
MzEvZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlU2hhZGVyRnVuY3Rpb25UZXN0cy5jcHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVn
YXRpdmVTaGFkZXJGdW5jdGlvblRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVNoYWRlckltYWdlTG9hZFN0
b3JlVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEv
ZnVuY3Rpb25hbC9lczMxZk5lZ2F0aXZlU2hhZGVySW1hZ2VMb2FkU3RvcmVUZXN0cy5ocHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFm
TmVnYXRpdmVTdGF0ZUFwaVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdhdGl2ZVN0YXRlQXBpVGVzdHMuaHBwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMx
Zk5lZ2F0aXZlVGVzdFNoYXJlZC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVUZXN0U2hhcmVkLmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZOZWdh
dGl2ZVRleHR1cmVBcGlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVUZXh0dXJlQXBpVGVzdHMuaHBwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMx
Zk5lZ2F0aXZlVmVydGV4QXJyYXlBcGlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmTmVnYXRpdmVWZXJ0ZXhBcnJheUFw
aVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1
bmN0aW9uYWwvZXMzMWZPcGFxdWVUeXBlSW5kZXhpbmdUZXN0cy5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmT3BhcXVlVHlwZUlu
ZGV4aW5nVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
MzEvZnVuY3Rpb25hbC9lczMxZlByaW1pdGl2ZUJvdW5kaW5nQm94VGVzdHMuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlByaW1p
dGl2ZUJvdW5kaW5nQm94VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlByb2dyYW1JbnRlcmZhY2VEZWZpbml0aW9uLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwv
ZXMzMWZQcm9ncmFtSW50ZXJmYWNlRGVmaW5pdGlvbi5ocHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmUHJvZ3JhbUludGVyZmFjZURl
ZmluaXRpb25VdGlsLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL2Z1bmN0aW9uYWwvZXMzMWZQcm9ncmFtSW50ZXJmYWNlRGVmaW5pdGlvblV0aWwuaHBwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMx
ZlByb2dyYW1JbnRlcmZhY2VRdWVyeVRlc3RDYXNlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZQcm9ncmFtSW50ZXJmYWNlUXVl
cnlUZXN0Q2FzZS5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
MS9mdW5jdGlvbmFsL2VzMzFmUHJvZ3JhbUludGVyZmFjZVF1ZXJ5VGVzdHMuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlByb2dy
YW1JbnRlcmZhY2VRdWVyeVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZQcm9ncmFtUGlwZWxpbmVTdGF0ZVF1ZXJ5VGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rp
b25hbC9lczMxZlByb2dyYW1QaXBlbGluZVN0YXRlUXVlcnlUZXN0cy5ocHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmUHJvZ3JhbVN0
YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzMS9mdW5jdGlvbmFsL2VzMzFmUHJvZ3JhbVN0YXRlUXVlcnlUZXN0cy5ocHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmUHJvZ3Jh
bVVuaWZvcm1UZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzMS9mdW5jdGlvbmFsL2VzMzFmUHJvZ3JhbVVuaWZvcm1UZXN0cy5ocHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU1NCT0FycmF5
TGVuZ3RoVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
MzEvZnVuY3Rpb25hbC9lczMxZlNTQk9BcnJheUxlbmd0aFRlc3RzLmhwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTU0JPTGF5b3V0
Q2FzZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5j
dGlvbmFsL2VzMzFmU1NCT0xheW91dENhc2UuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNTQk9MYXlvdXRUZXN0cy5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFm
U1NCT0xheW91dFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTYW1wbGVTaGFkaW5nVGVzdHMuY3BwJywKLSAgICAgICAg
ICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNhbXBsZVNo
YWRpbmdUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
MS9mdW5jdGlvbmFsL2VzMzFmU2FtcGxlVmFyaWFibGVUZXN0cy5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2FtcGxlVmFyaWFi
bGVUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9m
dW5jdGlvbmFsL2VzMzFmU2FtcGxlclN0YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2FtcGxlclN0YXRl
UXVlcnlUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMz
MS9mdW5jdGlvbmFsL2VzMzFmU2VwYXJhdGVTaGFkZXJUZXN0cy5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2VwYXJhdGVTaGFk
ZXJUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9m
dW5jdGlvbmFsL2VzMzFmU2hhZGVyQXRvbWljT3BUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVyQXRvbWljT3BU
ZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5j
dGlvbmFsL2VzMzFmU2hhZGVyQnVpbHRpbkNvbnN0YW50VGVzdHMuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNoYWRlckJ1aWx0
aW5Db25zdGFudFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmNwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZT
aGFkZXJDb21tb25GdW5jdGlvblRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJIZWxwZXJJbnZvY2F0aW9uVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rp
b25hbC9lczMxZlNoYWRlckhlbHBlckludm9jYXRpb25UZXN0cy5ocHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVySW1hZ2VM
b2FkU3RvcmVUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
ZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVySW1hZ2VMb2FkU3RvcmVUZXN0cy5ocHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hh
ZGVySW50ZWdlckZ1bmN0aW9uVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNoYWRlckludGVnZXJGdW5jdGlvblRlc3Rz
LmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9u
YWwvZXMzMWZTaGFkZXJNdWx0aXNhbXBsZUludGVycG9sYXRpb25TdGF0ZVF1ZXJ5VGVzdHMuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9l
czMxZlNoYWRlck11bHRpc2FtcGxlSW50ZXJwb2xhdGlvblN0YXRlUXVlcnlUZXN0cy5ocHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFm
U2hhZGVyTXVsdGlzYW1wbGVJbnRlcnBvbGF0aW9uVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNoYWRlck11bHRpc2Ft
cGxlSW50ZXJwb2xhdGlvblRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21v
ZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTaGFkZXJQYWNraW5nRnVuY3Rpb25UZXN0cy5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFs
L2VzMzFmU2hhZGVyUGFja2luZ0Z1bmN0aW9uVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNoYWRlclNoYXJlZFZhclRl
c3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZTaGFkZXJTaGFyZWRWYXJUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmU2hhZGVyU3RhdGVRdWVyeVRl
c3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZTaGFkZXJTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlNoYWRlclRleHR1cmVTaXpl
VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVu
Y3Rpb25hbC9lczMxZlNoYWRlclRleHR1cmVTaXplVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlN0ZW5jaWxUZXh0dXJp
bmdUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9m
dW5jdGlvbmFsL2VzMzFmU3RlbmNpbFRleHR1cmluZ1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZTeW5jaHJvbml6YXRp
b25UZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9m
dW5jdGlvbmFsL2VzMzFmU3luY2hyb25pemF0aW9uVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlRlc3NlbGxhdGlvbkdl
b21ldHJ5SW50ZXJhY3Rpb25UZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGVzc2VsbGF0aW9uR2VvbWV0cnlJbnRlcmFj
dGlvblRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMx
L2Z1bmN0aW9uYWwvZXMzMWZUZXNzZWxsYXRpb25UZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGVzc2VsbGF0aW9uVGVz
dHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rp
b25hbC9lczMxZlRleHR1cmVCb3JkZXJDbGFtcFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZUZXh0dXJlQm9yZGVyQ2xh
bXBUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9m
dW5jdGlvbmFsL2VzMzFmVGV4dHVyZUJ1ZmZlclRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZUZXh0dXJlQnVmZmVyVGVz
dHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rp
b25hbC9lczMxZlRleHR1cmVGaWx0ZXJpbmdUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVyZUZpbHRlcmluZ1Rl
c3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZUZXh0dXJlRm9ybWF0VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlRleHR1cmVGb3JtYXRUZXN0cy5o
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFs
L2VzMzFmVGV4dHVyZUdhdGhlclRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZUZXh0dXJlR2F0aGVyVGVzdHMuaHBwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMx
ZlRleHR1cmVMZXZlbFN0YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVyZUxldmVsU3RhdGVRdWVy
eVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1
bmN0aW9uYWwvZXMzMWZUZXh0dXJlTXVsdGlzYW1wbGVUZXN0cy5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVGV4dHVyZU11bHRp
c2FtcGxlVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVz
MzEvZnVuY3Rpb25hbC9lczMxZlRleHR1cmVTcGVjaWZpY2F0aW9uVGVzdHMuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlRleHR1
cmVTcGVjaWZpY2F0aW9uVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlRleHR1cmVTdGF0ZVF1ZXJ5VGVzdHMuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMx
ZlRleHR1cmVTdGF0ZVF1ZXJ5VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlVuaWZvcm1CbG9ja1Rlc3RzLmNwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZV
bmlmb3JtQmxvY2tUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsZXMzMS9mdW5jdGlvbmFsL2VzMzFmVW5pZm9ybUxvY2F0aW9uVGVzdHMuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlVuaWZv
cm1Mb2NhdGlvblRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
Z2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZWZXJ0ZXhBdHRyaWJ1dGVCaW5kaW5nU3RhdGVRdWVyeVRl
c3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0
aW9uYWwvZXMzMWZWZXJ0ZXhBdHRyaWJ1dGVCaW5kaW5nU3RhdGVRdWVyeVRlc3RzLmhwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL2Z1bmN0aW9uYWwvZXMzMWZW
ZXJ0ZXhBdHRyaWJ1dGVCaW5kaW5nVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMzEvZnVuY3Rpb25hbC9lczMxZlZlcnRleEF0dHJpYnV0ZUJpbmRpbmdU
ZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9zdHJl
c3MvZXMzMXNEcmF3VGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbGVzMzEvc3RyZXNzL2VzMzFzRHJhd1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZ2xlczMxL3N0cmVzcy9lczMxc1N0cmVzc1Rlc3RzLmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL3N0cmVzcy9lczMxc1N0cmVzc1Rl
c3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL3N0cmVz
cy9lczMxc1Rlc3NlbGxhdGlvbkdlb21ldHJ5SW50ZXJhY3Rpb25UZXN0cy5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS9zdHJlc3MvZXMzMXNUZXNzZWxsYXRp
b25HZW9tZXRyeUludGVyYWN0aW9uVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9nbGVzMzEvc3RyZXNzL2VzMzFzVmVydGV4QXR0cmlidXRlQmluZGluZ1Rlc3Rz
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL3N0cmVzcy9l
czMxc1ZlcnRleEF0dHJpYnV0ZUJpbmRpbmdUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsZXMzMS90ZXMzMUNvbnRleHQuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvdGVzMzFDb250ZXh0LmhwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL3RlczMxSW5mb1Rlc3RzLmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL3RlczMxSW5mb1Rlc3RzLmhwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xlczMxL3RlczMxVGVzdENhc2Uu
Y3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbGVzMzEvdGVzMzFUZXN0
Q2FzZS5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsZXMzMS90ZXMz
MVRlc3RQYWNrYWdlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xl
czMxL3RlczMxVGVzdFBhY2thZ2UuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbGVzMzEvdGVzMzFUZXN0UGFja2FnZUVudHJ5LmNwcCcKLSAgICAgICAgXSwKLSAgICAg
ICAgJ2RlcXBfZWdsX3NvdXJjZXMnOgotICAgICAgICBbCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZWdsL3RlZ2xBbmRyb2lkVXRpbC5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQW5kcm9pZFV0aWwuaHBwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEFwaUNhc2UuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEFwaUNhc2UuaHBwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEJ1ZmZlckFnZVRlc3RzLmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xCdWZmZXJBZ2VUZXN0cy5ocHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQ2hvb3NlQ29uZmlnUmVm
ZXJlbmNlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xD
aG9vc2VDb25maWdSZWZlcmVuY2UuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9lZ2wvdGVnbENob29zZUNvbmZpZ1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xDaG9vc2VDb25maWdUZXN0cy5ocHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQ2xpZW50RXh0ZW5zaW9uVGVzdHMuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbENsaWVudEV4dGVu
c2lvblRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3Rl
Z2xDb2xvckNsZWFyQ2FzZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2VnbC90ZWdsQ29sb3JDbGVhckNhc2UuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9lZ2wvdGVnbENvbG9yQ2xlYXJUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQ29sb3JDbGVhclRlc3RzLmhwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xDb25maWdMaXN0LmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xDb25maWdMaXN0LmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xDcmVhdGVDb250ZXh0RXh0VGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbENyZWF0
ZUNvbnRleHRFeHRUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2VnbC90ZWdsQ3JlYXRlQ29udGV4dFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZWdsL3RlZ2xDcmVhdGVDb250ZXh0VGVzdHMuaHBwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbENyZWF0ZVN1cmZhY2VUZXN0cy5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsQ3JlYXRlU3VyZmFjZVRl
c3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xHZXRQ
cm9jQWRkcmVzc1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
ZWdsL3RlZ2xHZXRQcm9jQWRkcmVzc1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZWdsL3RlZ2xHTEVTMVJlbmRlclV0aWwuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEdMRVMxUmVuZGVyVXRpbC5ocHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsR0xFUzJSZW5kZXJVdGlsLmNwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xHTEVTMlJlbmRlclV0
aWwuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEdMRVMy
U2hhcmVkUmVuZGVyaW5nUGVyZlRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L21vZHVsZXMvZWdsL3RlZ2xHTEVTMlNoYXJlZFJlbmRlcmluZ1BlcmZUZXN0cy5ocHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsR0xFUzJTaGFyaW5nVGVzdHMu
Y3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbEdMRVMyU2hh
cmluZ1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3Rl
Z2xHTEVTMlNoYXJpbmdUaHJlYWRlZFRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZWdsL3RlZ2xHTEVTMlNoYXJpbmdUaHJlYWRlZFRlc3RzLmhwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xJbWFnZUZvcm1hdFRlc3RzLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xJbWFnZUZvcm1h
dFRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xJ
bWFnZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3Rl
Z2xJbWFnZVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWds
L3RlZ2xJbWFnZVV0aWwuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9l
Z2wvdGVnbEltYWdlVXRpbC5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2VnbC90ZWdsSW5mb1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZWdsL3RlZ2xJbmZvVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9lZ2wvdGVnbE1ha2VDdXJyZW50UGVyZlRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xNYWtlQ3VycmVudFBlcmZUZXN0cy5ocHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsTWVtb3J5U3RyZXNzVGVzdHMu
Y3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE1lbW9yeVN0
cmVzc1Rlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3Rl
Z2xNdWx0aUNvbnRleHRUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2VnbC90ZWdsTXVsdGlDb250ZXh0VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE11bHRpVGhyZWFkVGVzdHMuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE11bHRpVGhyZWFkVGVzdHMuaHBwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE5hdGl2ZUNvbG9yTWFwcGlu
Z1Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xO
YXRpdmVDb2xvck1hcHBpbmdUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9t
b2R1bGVzL2VnbC90ZWdsTmF0aXZlQ29vcmRNYXBwaW5nVGVzdHMuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbE5hdGl2ZUNvb3JkTWFwcGluZ1Rlc3RzLmhw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xOZWdhdGl2ZUFw
aVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xO
ZWdhdGl2ZUFwaVRlc3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMv
ZWdsL3RlZ2xOZWdhdGl2ZVBhcnRpYWxVcGRhdGVUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsTmVnYXRpdmVQYXJ0aWFsVXBkYXRlVGVzdHMuaHBw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFByZXNlcnZpbmdT
d2FwVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVn
bFByZXNlcnZpbmdTd2FwVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9lZ2wvdGVnbFBhcnRpYWxVcGRhdGVUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsUGFydGlhbFVwZGF0ZVRlc3RzLmhwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xRdWVyeUNvbmZpZ1Rlc3RzLmNwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xRdWVyeUNvbmZpZ1Rl
c3RzLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xRdWVy
eUNvbnRleHRUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2Vn
bC90ZWdsUXVlcnlDb250ZXh0VGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9lZ2wvdGVnbFF1ZXJ5U3VyZmFjZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xRdWVyeVN1cmZhY2VUZXN0cy5ocHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsUmVuZGVyQ2FzZS5jcHAnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsUmVuZGVyQ2FzZS5ocHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsUmVuZGVyVGVzdHMuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFJlbmRlclRlc3Rz
LmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xSZXNpemVU
ZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsUmVz
aXplVGVzdHMuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVn
bFNpbXBsZUNvbmZpZ0Nhc2UuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9lZ2wvdGVnbFNpbXBsZUNvbmZpZ0Nhc2UuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvbW9kdWxlcy9lZ2wvdGVnbFN1cmZhY2VsZXNzQ29udGV4dFRlc3RzLmNwcCcsCi0gICAgICAg
ICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xTdXJmYWNlbGVzc0NvbnRleHRUZXN0
cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsU3dhcEJ1
ZmZlcnNUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90
ZWdsU3dhcEJ1ZmZlcnNUZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1
bGVzL2VnbC90ZWdsU3dhcEJ1ZmZlcnNXaXRoRGFtYWdlVGVzdHMuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFN3YXBCdWZmZXJzV2l0aERhbWFnZVRlc3Rz
LmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xTeW5jVGVz
dHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFN5bmNU
ZXN0cy5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90ZWdsVGVz
dENhc2UuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9lZ2wvdGVnbFRl
c3RDYXNlLmhwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZWdsL3RlZ2xU
ZXN0UGFja2FnZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2VnbC90
ZWdsVGVzdFBhY2thZ2UuaHBwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9l
Z2wvdGVnbFRlc3RQYWNrYWdlRW50cnkuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9lZ2wvdGVnbFZHUmVuZGVyVXRpbC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9tb2R1bGVzL2VnbC90ZWdsVkdSZW5kZXJVdGlsLmhwcCcsCi0gICAgICAgIF0sCi0gICAg
ICAgICdkZXFwX2xpYnRlc3Rlcl9kZWNwcF9zb3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlQXJyYXlCdWZmZXIuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZUJs
b2NrQnVmZmVyLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxp
YnMvZGVjcHAvZGVDb21tYW5kTGluZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9m
cmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlRGVmcy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlRGlyZWN0b3J5SXRlcmF0b3IuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZUR5bmFtaWNM
aWJyYXJ5LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMv
ZGVjcHAvZGVGaWxlUGF0aC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdv
cmsvZGVsaWJzL2RlY3BwL2RlTWVtUG9vbC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlTXV0ZXguY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZVBvb2xBcnJheS5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlUG9vbFN0cmluZy5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2Rl
UHJvY2Vzcy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJz
L2RlY3BwL2RlUmFuZG9tLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9kZWxpYnMvZGVjcHAvZGVSaW5nQnVmZmVyLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVTZW1hcGhvcmUuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZVNoYXJlZFB0ci5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2RlU2hhMS5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlY3BwL2Rl
U29ja2V0LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMv
ZGVjcHAvZGVTVExVdGlsLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9kZWxpYnMvZGVjcHAvZGVTdHJpbmdVdGlsLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVUaHJlYWQuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWNwcC9kZVRocmVhZExvY2FsLmNwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVjcHAvZGVUaHJlYWRT
YWZlUmluZ0J1ZmZlci5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsv
ZGVsaWJzL2RlY3BwL2RlVW5pcXVlUHRyLmNwcCcsCi0gICAgICAgIF0sCi0gICAgICAgICdkZXFw
X2xpYnRlc3Rlcl9zb3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9leGVjc2VydmVyL3hzRGVmcy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9leGVj
c2VydmVyL3hzRXhlY3V0aW9uU2VydmVyLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L2V4ZWNzZXJ2ZXIveHNQb3NpeEZpbGVSZWFkZXIuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvZXhlY3NlcnZlci94c1Bvc2l4VGVzdFByb2Nlc3MuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZXhlY3NlcnZlci94c1Byb3RvY29sLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL2V4ZWNzZXJ2ZXIveHNUY3BTZXJ2ZXIuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvZXhlY3NlcnZlci94c1Rlc3REcml2ZXIuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvZXhlY3NlcnZlci94c1Rlc3RQcm9jZXNzLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL2V4ZWN1dG9yL3hlQmF0Y2hFeGVjdXRvci5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9leGVjdXRvci94ZUJhdGNoUmVzdWx0LmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL2V4ZWN1dG9yL3hlQ2FsbFF1ZXVlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2V4ZWN1dG9yL3hlQ29tbUxpbmsuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvZXhlY3V0b3IveGVDb250YWluZXJGb3JtYXRQYXJzZXIuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZXhlY3V0b3IveGVEZWZzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL2V4ZWN1dG9yL3hlTG9jYWxUY3BJcExpbmsuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvZXhlY3V0b3IveGVUY3BJcExpbmsuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0
aCkvZXhlY3V0b3IveGVUZXN0Q2FzZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9l
eGVjdXRvci94ZVRlc3RDYXNlTGlzdFBhcnNlci5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9leGVjdXRvci94ZVRlc3RDYXNlUmVzdWx0LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2V4ZWN1dG9yL3hlVGVzdExvZ1BhcnNlci5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9leGVjdXRvci94ZVRlc3RMb2dXcml0ZXIuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvZXhlY3V0b3IveGVUZXN0UmVzdWx0UGFyc2VyLmNwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2V4ZWN1dG9yL3hlWE1MUGFyc2VyLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL2V4ZWN1dG9yL3hlWE1MV3JpdGVyLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1QXBwLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1QXN0Y1V0aWwuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VCaWxpbmVhckltYWdlQ29tcGFyZS5jcHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdUNvbW1hbmRM
aW5lLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1
Q29tcHJlc3NlZFRleHR1cmUuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3
b3JrL2NvbW1vbi90Y3VDUFVXYXJtdXAuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
ZnJhbWV3b3JrL2NvbW1vbi90Y3VEZWZzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L2ZyYW1ld29yay9jb21tb24vdGN1RWl0aGVyLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL2ZyYW1ld29yay9jb21tb24vdGN1RmFjdG9yeVJlZ2lzdHJ5LmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1RmxvYXRGb3JtYXQuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VGdW5jdGlvbkxpYnJh
cnkuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VG
dXp6eUltYWdlQ29tcGFyZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdv
cmsvY29tbW9uL3RjdUltYWdlQ29tcGFyZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvY29tbW9uL3RjdUltYWdlSU8uY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VJbnRlcnZhbC5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVBsYXRmb3JtLmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1UmFuZG9tVmFsdWVJdGVyYXRvci5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVJlbmRl
clRhcmdldC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9u
L3RjdVJlc291cmNlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9j
b21tb24vdGN1UmVzdWx0Q29sbGVjdG9yLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L2ZyYW1ld29yay9jb21tb24vdGN1UkdCQS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvY29tbW9uL3RjdVN0cmluZ1RlbXBsYXRlLmNwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1U3VyZmFjZS5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVRlc3RDYXNlLmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9jb21tb24vdGN1VGVzdENvbnRleHQuY3Bw
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VUZXN0SGll
cmFyY2h5SXRlcmF0b3IuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L2NvbW1vbi90Y3VUZXN0SGllcmFyY2h5VXRpbC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVRlc3RMb2cuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VUZXN0UGFja2FnZS5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVRlc3RTZXNzaW9uRXhlY3V0b3Iu
Y3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VUZXhD
b21wYXJlVmVyaWZpZXIuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L2NvbW1vbi90Y3VUZXhMb29rdXBWZXJpZmllci5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVRleHR1cmUuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VUZXh0dXJlVXRpbC5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVRleFZlcmlmaWVyVXRpbC5jcHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvY29tbW9uL3RjdVRocmVhZFV0
aWwuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2NvbW1vbi90Y3VT
ZWVkQnVpbGRlci5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVs
aWJzL2RlYmFzZS9kZURlZnMuYycsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9kZWxpYnMvZGViYXNlL2RlRmxvYXQxNi5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
ZnJhbWV3b3JrL2RlbGlicy9kZWJhc2UvZGVJbnQzMi5jJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWJhc2UvZGVJbnQzMlRlc3QuYycsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGViYXNlL2RlTWF0aC5jJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZWJhc2UvZGVNZW1vcnkuYycs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGViYXNlL2RlUmFu
ZG9tLmMnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RlYmFz
ZS9kZVN0cmluZy5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGli
cy9kZWJhc2UvZGVTaGExLmMnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsv
ZGVsaWJzL2RlaW1hZ2UvZGVJbWFnZS5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL2RlbGlicy9kZWltYWdlL2RlVGFyZ2EuYycsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL2ZyYW1ld29yay9kZWxpYnMvZGVwb29sL2RlTWVtUG9vbC5jJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXBvb2wvZGVQb29sQXJyYXkuYycsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVwb29sL2RlUG9vbEhhc2hB
cnJheS5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXBv
b2wvZGVQb29sSGFzaC5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2Rl
bGlicy9kZXBvb2wvZGVQb29sSGFzaFNldC5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
ZnJhbWV3b3JrL2RlbGlicy9kZXBvb2wvZGVQb29sSGVhcC5jJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXBvb2wvZGVQb29sTXVsdGlTZXQuYycsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVwb29sL2RlUG9vbFNldC5j
JywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXBvb2wvZGVQ
b29sU3RyaW5nQnVpbGRlci5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L2RlbGlicy9kZXBvb2wvZGVQb29sVGVzdC5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
ZnJhbWV3b3JrL2RlbGlicy9kZXN0cmVhbS9kZUZpbGVTdHJlYW0uYycsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGVzdHJlYW0vZGVSaW5nYnVmZmVyLmMnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2Rlc3RyZWFtL2RlU3Ry
ZWFtQ3B5VGhyZWFkLmMnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVs
aWJzL2Rlc3RyZWFtL2RlVGhyZWFkU3RyZWFtLmMnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvZGVsaWJzL2RldGhyZWFkL2RlQXRvbWljLmMnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldGhyZWFkL2RlU2luZ2xldG9uLmMnLAotICAg
ICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldGhyZWFkL2RlVGhyZWFk
VGVzdC5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXV0
aWwvZGVDbG9jay5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGli
cy9kZXV0aWwvZGVDb21tYW5kTGluZS5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL2RlbGlicy9kZXV0aWwvZGVEeW5hbWljTGlicmFyeS5jJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXV0aWwvZGVGaWxlLmMnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldXRpbC9kZVByb2Nlc3MuYycsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGV1dGlsL2RlU29ja2V0
LmMnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldXRpbC9k
ZVRpbWVyLmMnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2Rl
dXRpbC9kZVRpbWVyVGVzdC5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L2VnbC9lZ2x1Q2FsbExvZ1dyYXBwZXIuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
ZnJhbWV3b3JrL2VnbC9lZ2x1Q29uZmlnRmlsdGVyLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9lZ2wvZWdsdUNvbmZpZ0luZm8uY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2VnbC9lZ2x1RGVmcy5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvZWdsL2VnbHVHTENvbnRleHRGYWN0b3J5LmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9lZ2wvZWdsdUdMRnVuY3Rpb25Mb2FkZXIu
Y3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2VnbC9lZ2x1R0xVdGls
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9lZ2wvZWdsdU5hdGl2
ZURpc3BsYXkuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2VnbC9l
Z2x1TmF0aXZlUGl4bWFwLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9lZ2wvZWdsdU5hdGl2ZVdpbmRvdy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9m
cmFtZXdvcmsvZWdsL2VnbHVQbGF0Zm9ybS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvZWdsL2VnbHVTdGF0aWNFU0xpYnJhcnkuY3BwJywKLSAgICAgICAgICAgICc8
KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2VnbC9lZ2x1U3RyVXRpbC5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZWdsL2VnbHVVbmlxdWUuY3BwJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2VnbC9lZ2x1VXRpbC5jcHAnLAotICAgICAgICAgICAg
JzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZWdsL3dyYXBwZXIvZWdsd0RlZnMuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2VnbC93cmFwcGVyL2VnbHdGdW5jdGlvbnMu
Y3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2VnbC93cmFwcGVyL2Vn
bHdMaWJyYXJ5LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVu
Z2wvZ2x1Q2FsbExvZ1dyYXBwZXIuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL29wZW5nbC9nbHVDb250ZXh0RmFjdG9yeS5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdUNvbnRleHRJbmZvLmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvZ2x1RGVmcy5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdURyYXdVdGlsLmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvZ2x1RHVtbXlSZW5kZXJDb250
ZXh0LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvZ2x1
RVMzUGx1c1dyYXBwZXJDb250ZXh0LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9vcGVuZ2wvZ2x1RmJvUmVuZGVyQ29udGV4dC5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdU9iamVjdFdyYXBwZXIuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVQaXhlbFRyYW5zZmVyLmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvZ2x1UGxhdGZv
cm0uY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVQ
cm9ncmFtSW50ZXJmYWNlUXVlcnkuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL29wZW5nbC9nbHVSZW5kZXJDb25maWcuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVSZW5kZXJDb250ZXh0LmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvZ2x1U2hhZGVyTGlicmFyeS5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL2dsdVNoYWRlclByb2dy
YW0uY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVT
aGFkZXJVdGlsLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVu
Z2wvZ2x1U3RhdGVSZXNldC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdv
cmsvb3BlbmdsL2dsdVN0clV0aWwuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL29wZW5nbC9nbHVUZXh0dXJlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgp
L2ZyYW1ld29yay9vcGVuZ2wvZ2x1VGV4dHVyZVV0aWwuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9nbHVWYXJUeXBlLmNwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvZ2x1VmFyVHlwZVV0aWwuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC9zaW1wbGVyZWZlcmVuY2Uvc2ds
ckNvbnRleHQuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5n
bC9zaW1wbGVyZWZlcmVuY2Uvc2dsckNvbnRleHRVdGlsLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvc2ltcGxlcmVmZXJlbmNlL3NnbHJDb250ZXh0V3Jh
cHBlci5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL3Np
bXBsZXJlZmVyZW5jZS9zZ2xyR0xDb250ZXh0LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL2ZyYW1ld29yay9vcGVuZ2wvc2ltcGxlcmVmZXJlbmNlL3NnbHJSZWZlcmVuY2VDb250ZXh0
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9vcGVuZ2wvc2ltcGxl
cmVmZXJlbmNlL3NnbHJSZWZlcmVuY2VVdGlscy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9mcmFtZXdvcmsvb3BlbmdsL3NpbXBsZXJlZmVyZW5jZS9zZ2xyU2hhZGVyUHJvZ3JhbS5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL3dyYXBwZXIv
Z2x3RGVmcy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3Blbmds
L3dyYXBwZXIvZ2x3RnVuY3Rpb25zLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9vcGVuZ2wvd3JhcHBlci9nbHdJbml0RVMyMERpcmVjdC5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvb3BlbmdsL3dyYXBwZXIvZ2x3SW5pdEVTMzBEaXJl
Y3QuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL29wZW5nbC93cmFw
cGVyL2dsd0luaXRGdW5jdGlvbnMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL29wZW5nbC93cmFwcGVyL2dsd1dyYXBwZXIuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvZnJhbWV3b3JrL3BsYXRmb3JtL251bGwvdGN1TnVsbENvbnRleHRGYWN0b3J5LmNw
cCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9wbGF0Zm9ybS9udWxsL3Rj
dU51bGxDb250ZXh0RmFjdG9yeS5ocHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFt
ZXdvcmsvcGxhdGZvcm0vbnVsbC90Y3VOdWxsUmVuZGVyQ29udGV4dC5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcXBoZWxwZXIvcXBDcmFzaEhhbmRsZXIuYycsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9xcGhlbHBlci9xcERlYnVnT3V0LmMn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcXBoZWxwZXIvcXBJbmZvLmMn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcXBoZWxwZXIvcXBUZXN0TG9n
LmMnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcXBoZWxwZXIvcXBXYXRj
aERvZy5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3FwaGVscGVyL3Fw
WG1sV3JpdGVyLmMnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmFuZG9t
c2hhZGVycy9yc2dCaW5hcnlPcHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJh
bWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnQnVpbHRpbkZ1bmN0aW9ucy5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dEZWZzLmNwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yYW5kb21zaGFkZXJzL3JzZ0V4ZWN1
dGlvbkNvbnRleHQuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3Jh
bmRvbXNoYWRlcnMvcnNnRXhwcmVzc2lvbi5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dFeHByZXNzaW9uR2VuZXJhdG9yLmNwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yYW5kb21zaGFkZXJzL3JzZ0Z1bmN0
aW9uR2VuZXJhdG9yLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9y
YW5kb21zaGFkZXJzL3JzZ0dlbmVyYXRvclN0YXRlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9yYW5kb21zaGFkZXJzL3JzZ05hbWVBbGxvY2F0b3IuY3BwJywKLSAg
ICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnUGFyYW1l
dGVycy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmFuZG9tc2hh
ZGVycy9yc2dQcmV0dHlQcmludGVyLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9yYW5kb21zaGFkZXJzL3JzZ1Byb2dyYW1FeGVjdXRvci5jcHAnLAotICAgICAgICAg
ICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dQcm9ncmFtR2VuZXJh
dG9yLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yYW5kb21zaGFk
ZXJzL3JzZ1NhbXBsZXJzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9yYW5kb21zaGFkZXJzL3JzZ1NoYWRlci5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dTaGFkZXJHZW5lcmF0b3IuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRvbXNoYWRlcnMvcnNnU3RhdGVtZW50
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yYW5kb21zaGFkZXJz
L3JzZ1Rva2VuLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yYW5k
b21zaGFkZXJzL3JzZ1V0aWxzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1l
d29yay9yYW5kb21zaGFkZXJzL3JzZ1ZhcmlhYmxlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFw
X3BhdGgpL2ZyYW1ld29yay9yYW5kb21zaGFkZXJzL3JzZ1ZhcmlhYmxlTWFuYWdlci5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmFuZG9tc2hhZGVycy9yc2dWYXJp
YWJsZVR5cGUuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JhbmRv
bXNoYWRlcnMvcnNnVmFyaWFibGVWYWx1ZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9mcmFtZXdvcmsvcmVmZXJlbmNlcmVuZGVyZXIvcnJEZWZzLmNwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yckZyYWdtZW50T3BlcmF0
aW9ucy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmVmZXJlbmNl
cmVuZGVyZXIvcnJNdWx0aXNhbXBsZVBpeGVsQnVmZmVyQWNjZXNzLmNwcCcsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yclByaW1pdGl2ZVBh
Y2tldC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvcmVmZXJlbmNl
cmVuZGVyZXIvcnJSYXN0ZXJpemVyLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2Zy
YW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yclJlbmRlcmVyLmNwcCcsCi0gICAgICAgICAgICAn
PChkZXFwX3BhdGgpL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yclNoYWRlcnMuY3BwJywK
LSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3JlZmVyZW5jZXJlbmRlcmVyL3Jy
U2hhZGluZ0NvbnRleHQuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3Jr
L3JlZmVyZW5jZXJlbmRlcmVyL3JyVmVydGV4QXR0cmliLmNwcCcsCi0gICAgICAgICAgICAnPChk
ZXFwX3BhdGgpL2ZyYW1ld29yay9yZWZlcmVuY2VyZW5kZXJlci9yclZlcnRleFBhY2tldC5jcHAn
LAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc0F0dHJpYnV0
ZUxvY2F0aW9uVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9n
bHNoYXJlZC9nbHNCdWZmZXJUZXN0VXRpbC5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRo
KS9tb2R1bGVzL2dsc2hhcmVkL2dsc0J1aWx0aW5QcmVjaXNpb25UZXN0cy5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc0NhbGlicmF0aW9uLmNwcCcs
Ci0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzRHJhd1Rlc3Qu
Y3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNGYm9D
b21wbGV0ZW5lc3NUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVz
L2dsc2hhcmVkL2dsc0Zib1V0aWwuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9k
dWxlcy9nbHNoYXJlZC9nbHNGcmFnbWVudE9wVXRpbC5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc0ZyYWdPcEludGVyYWN0aW9uQ2FzZS5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc0ludGVyYWN0aW9u
VGVzdFV0aWwuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJl
ZC9nbHNMaWZldGltZVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVs
ZXMvZ2xzaGFyZWQvZ2xzTG9uZ1N0cmVzc0Nhc2UuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNMb25nU3RyZXNzVGVzdFV0aWwuY3BwJywKLSAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNNZW1vcnlTdHJlc3NDYXNl
LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzUmFu
ZG9tU2hhZGVyQ2FzZS5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2ds
c2hhcmVkL2dsc1JhbmRvbVNoYWRlclByb2dyYW0uY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBf
cGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNSYW5kb21Vbmlmb3JtQmxvY2tDYXNlLmNwcCcsCi0g
ICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzUmFzdGVyaXphdGlv
blRlc3RVdGlsLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFy
ZWQvZ2xzU2FtcGxlck9iamVjdFRlc3QuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbHNoYXJlZC9nbHNTY2lzc29yVGVzdHMuY3BwJywKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNTaGFkZXJDb25zdEV4cHJUZXN0cy5jcHAnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc1NoYWRlckV4ZWNV
dGlsLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xz
U2hhZGVyTGlicmFyeUNhc2UuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxl
cy9nbHNoYXJlZC9nbHNTaGFkZXJMaWJyYXJ5LmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3Bh
dGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzU2hhZGVyUGVyZm9ybWFuY2VDYXNlLmNwcCcsCi0gICAg
ICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xzaGFyZWQvZ2xzU2hhZGVyUGVyZm9ybWFu
Y2VNZWFzdXJlci5jcHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hh
cmVkL2dsc1NoYWRlclJlbmRlckNhc2UuY3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkv
bW9kdWxlcy9nbHNoYXJlZC9nbHNTdGF0ZVF1ZXJ5VXRpbC5jcHAnLAotICAgICAgICAgICAgJzwo
ZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc1N0YXRlQ2hhbmdlUGVyZlRlc3RDYXNlcy5j
cHAnLAotICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc1RleHR1
cmVCdWZmZXJDYXNlLmNwcCcsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL21vZHVsZXMvZ2xz
aGFyZWQvZ2xzVGV4dHVyZVN0YXRlUXVlcnlUZXN0cy5jcHAnLAotICAgICAgICAgICAgJzwoZGVx
cF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc1RleHR1cmVUZXN0VXRpbC5jcHAnLAotICAgICAg
ICAgICAgJzwoZGVxcF9wYXRoKS9tb2R1bGVzL2dsc2hhcmVkL2dsc1VuaWZvcm1CbG9ja0Nhc2Uu
Y3BwJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvbW9kdWxlcy9nbHNoYXJlZC9nbHNWZXJ0
ZXhBcnJheVRlc3RzLmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvdGVzdHMv
ZGVxcF9zdXBwb3J0L3RjdUFOR0xFTmF0aXZlRGlzcGxheUZhY3RvcnkuY3BwJywKLSAgICAgICAg
ICAgICc8KGFuZ2xlX3BhdGgpL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvdGN1QU5HTEVOYXRpdmVE
aXNwbGF5RmFjdG9yeS5oJywKLSAgICAgICAgICAgICMgVE9ETyhqbWFkaWxsKTogaW50ZWdyYXRl
IHdpdGggZEVRUAotICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL3Rlc3RzL2RlcXBfc3Vw
cG9ydC90Y3VSYW5kb21PcmRlckV4ZWN1dG9yLmNwcCcsCi0gICAgICAgICAgICAnPChhbmdsZV9w
YXRoKS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L3RjdVJhbmRvbU9yZGVyRXhlY3V0b3IuaCcsCi0g
ICAgICAgIF0sCi0gICAgICAgICdkZXFwX2xpYnRlc3Rlcl9zb3VyY2VzX3dpbic6Ci0gICAgICAg
IFsKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXRocmVhZC93
aW4zMi9kZU11dGV4V2luMzIuYycsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29y
ay9kZWxpYnMvZGV0aHJlYWQvd2luMzIvZGVTZW1hcGhvcmVXaW4zMi5jJywKLSAgICAgICAgICAg
ICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXRocmVhZC93aW4zMi9kZVRocmVhZExv
Y2FsV2luMzIuYycsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMv
ZGV0aHJlYWQvd2luMzIvZGVUaHJlYWRXaW4zMi5jJywKLSAgICAgICAgXSwKLSAgICAgICAgJ2Rl
cXBfbGlidGVzdGVyX3NvdXJjZXNfdW5peCc6Ci0gICAgICAgIFsKLSAgICAgICAgICAgICc8KGRl
cXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9kZXRocmVhZC91bml4L2RlTXV0ZXhVbml4LmMnLAot
ICAgICAgICAgICAgJzwoZGVxcF9wYXRoKS9mcmFtZXdvcmsvZGVsaWJzL2RldGhyZWFkL3VuaXgv
ZGVOYW1lZFNlbWFwaG9yZVVuaXguYycsCi0gICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1l
d29yay9kZWxpYnMvZGV0aHJlYWQvdW5peC9kZVNlbWFwaG9yZVVuaXguYycsCi0gICAgICAgICAg
ICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9kZWxpYnMvZGV0aHJlYWQvdW5peC9kZVRocmVhZExv
Y2FsVW5peC5jJywKLSAgICAgICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL2RlbGlicy9k
ZXRocmVhZC91bml4L2RlVGhyZWFkVW5peC5jJywKLSAgICAgICAgXSwKLSAgICAgICAgJ2RlcXBf
Z3B1X3Rlc3RfZXhwZWN0YXRpb25zX3NvdXJjZXMnOgotICAgICAgICBbCi0gICAgICAgICAgICAn
dGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV9pbmZvLmNjJywKLSAgICAgICAg
ICAgICd0aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X2luZm8uaCcsCi0gICAg
ICAgICAgICAndGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2NvbmZp
Zy5jYycsCi0gICAgICAgICAgICAndGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dw
dV90ZXN0X2NvbmZpZy5oJywKLSAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBl
Y3RhdGlvbnMvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNlci5jYycsCi0gICAgICAgICAgICAn
dGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19w
YXJzZXIuaCcsCi0gICAgICAgIF0sCi0gICAgICAgICdjb25kaXRpb25zJzoKLSAgICAgICAgWwot
ICAgICAgICAgICAgWycoT1M9PSJ3aW4iIG9yIE9TPT0ibGludXgiIG9yIE9TPT0ibWFjIiknLAot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICMgQnVpbGQgdGhlIGRFUVAgbGlicmFyaWVz
IGZvciBhbGwgV2luZG93cy9MaW51eCBidWlsZHMKLSAgICAgICAgICAgICAgICAnYW5nbGVfYnVp
bGRfZGVxcF9saWJyYXJpZXMlJzogMSwKLSAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgWyco
KE9TPT0id2luIiBvciBPUz09ImxpbnV4IiBvciBPUz09Im1hYyIpIGFuZCBhbmdsZV9idWlsZF93
aW5ydD09MCknLAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICMgQnVpbGQgdGhlIGRF
UVAgR29vZ2xlVGVzdCBzdXBwb3J0IGhlbHBlcnMgZm9yIGFsbCBXaW5kb3dzL0xpbnV4IGJ1aWxk
cyBleGNlcHQgV2luUlQKLSAgICAgICAgICAgICAgICAjIEdvb2dsZVRlc3QgZG9lc24ndCBzdXBw
b3J0IFdpblJUCi0gICAgICAgICAgICAgICAgJ2FuZ2xlX2J1aWxkX2RlcXBfZ3Rlc3Rfc3VwcG9y
dCUnOiAxLAotICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICBbJygoT1M9PSJ3aW4iIG9yIE9T
PT0ibGludXgiIG9yIE9TPT0ibWFjIikgYW5kIGFuZ2xlX2J1aWxkX3dpbnJ0PT0wKScsCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIyBCdWlsZCB0aGUgZEVRUCBleGVjdXRhYmxlcyBm
b3IgYWxsIHN0YW5kYWxvbmUgV2luZG93cy9MaW51eCBidWlsZHMgZXhjZXB0IFdpblJUCi0gICAg
ICAgICAgICAgICAgIyBHWVAgZG9lc24ndCBzdXBwb3J0IGdlbmVyYXRpbmcgc3RhbmRhbG9uZSBX
aW5SVCBleGVjdXRhYmxlcwotICAgICAgICAgICAgICAgICdhbmdsZV9idWlsZF9kZXFwX2V4ZWN1
dGFibGVzJSc6IDEsCi0KLSAgICAgICAgICAgICAgICAjIEJ1aWxkIHRoZSBHb29nbGVUZXN0IHZl
cnNpb25zIG9mIGRFUVAgZm9yIGFsbCBzdGFuZGFsb25lIFdpbmRvd3MvTGludXggYnVpbGRzIGV4
Y2VwdCBXaW5SVAotICAgICAgICAgICAgICAgICMgR29vZ2xlVGVzdCBkb2Vzbid0IHN1cHBvcnQg
V2luUlQKLSAgICAgICAgICAgICAgICAnYW5nbGVfYnVpbGRfZGVxcF9ndGVzdF9leGVjdXRhYmxl
cyUnOiAxLAotICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICBbJ09TPT0ibGludXgiIGFuZCB1
c2VfeDExPT0xJywKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZGVxcF9pbmNsdWRl
X2RpcnMnOgotICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgJzwoZGVxcF9w
YXRoKS9mcmFtZXdvcmsvcGxhdGZvcm0veDExJywKLSAgICAgICAgICAgICAgICBdLAotICAgICAg
ICAgICAgfV0sCi0gICAgICAgICAgICBbJ09TPT0ibGludXgiJywKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAnZGVxcF9kZWZpbmVzJzoKLSAgICAgICAgICAgICAgICBbCi0gICAgICAg
ICAgICAgICAgICAgICMgQXNrIHRoZSBzeXN0ZW0gaGVhZGVycyB0byBleHBvc2UgYWxsIHRoZSBy
ZWd1bGFyIGZ1bmN0aW9uIG90aGVyd2lzZQotICAgICAgICAgICAgICAgICAgICAjIGRFUVAgZG9l
c24ndCBjb21waWxlIGFuZCBwcm9kdWNlcyB3YXJuaW5ncyBhYm91dCBpbXBsaWNpdGx5IGRlZmlu
ZWQKLSAgICAgICAgICAgICAgICAgICAgIyBmdW5jdGlvbnMuCi0gICAgICAgICAgICAgICAgICAg
ICMgVGhpcyBoYXMgdG8gYmUgR05VX1NPVVJDRSBhcyBvbiBMaW51eCBkRVFQIHVzZXMgc3lzY2Fs
bCgpCi0gICAgICAgICAgICAgICAgICAgICdfR05VX1NPVVJDRScsCi0gICAgICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgWydPUz09Im1hYyInLAotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICdkZXFwX2luY2x1ZGVfZGlycyc6Ci0gICAgICAgICAgICAg
ICAgWwotICAgICAgICAgICAgICAgICAgICAnPChkZXFwX3BhdGgpL2ZyYW1ld29yay9wbGF0Zm9y
bS9vc3gnLAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgJ2RlcXBfZGVmaW5l
cyc6Ci0gICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAjIEFzayB0aGUgc3lz
dGVtIGhlYWRlcnMgdG8gZXhwb3NlIGFsbCB0aGUgcmVndWxhciBmdW5jdGlvbiBvdGhlcndpc2UK
LSAgICAgICAgICAgICAgICAgICAgIyBkRVFQIGRvZXNuJ3QgY29tcGlsZSBhbmQgcHJvZHVjZXMg
d2FybmluZ3MgYWJvdXQgaW1wbGljaXRseSBkZWZpbmVkCi0gICAgICAgICAgICAgICAgICAgICMg
ZnVuY3Rpb25zLgotICAgICAgICAgICAgICAgICAgICAnX1hPUEVOX1NPVVJDRT02MDAnLAotICAg
ICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICB9XSwKLSAgICAgICAgICAgIFsndXNlX296b25l
PT0xJywKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAnZGVxcF9kZWZpbmVzJzoKLSAg
ICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICdBTkdMRV9VU0VfT1pPTkUnLAot
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICB9XSwKLSAgICAgICAgXSwKLSAgICB9LAot
ICAgICdjb25kaXRpb25zJzoKLSAgICBbCi0gICAgICAgIFsnYW5nbGVfYnVpbGRfZGVxcF9saWJy
YXJpZXM9PTEnLAotICAgICAgICB7Ci0gICAgICAgICAgICAndGFyZ2V0cyc6Ci0gICAgICAgICAg
ICBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUn
OiAnYW5nbGVfemxpYicsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ3N0YXRpY19saWJy
YXJ5JywKLSAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVzJzogWyAnLi4vLi4vYnVpbGQvY29t
bW9uX2RlZmluZXMuZ3lwaScsIF0sCi0gICAgICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMn
OgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGli
X3BhdGgpJywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2Rp
cmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnOgotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzoKLSAgICAgICAgICAgICAgICAgICAgICAg
IFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGliX3BhdGgpJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgICdtc3ZzX3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgJ1ZDQ0xDb21waWxlclRvb2wnOgotICAgICAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBZGRpdGlvbmFsT3B0aW9ucyc6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnL3dkNDEzMScsICMgb2xkLXN0eWxlIGRlY2xhcmF0b3IKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJy93ZDQyNDQnLCAjIENvbnZlcnNpb24gZnJvbSAndHlwZTEnIHRvICd0
eXBlMicsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnL3dkNDMyNCcsICMgc3RydWN0dXJlIHdhcyBwYWRkZWQKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJy93ZDQ3MDEnLCAjIHBvdGVudGlhbGx5IHVuaW5pdCB1c2VkCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvd2Q0OTk2JywgIyBkZXByZWNhdGVkCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzoK
LSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgWydhbmdsZV9i
dWlsZF93aW5ydD09MScsCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIyBJbiB6bGliLCBkZWZsYXRlLmMvaW5zZXJ0X3N0cmluZ19zc2UgYXNz
dW1lcyBfTVNDX1ZFUiBpcyBvbmx5IHVzZWQgZm9yIHg4NiBvciB4NjQKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjIFRvIGNvbXBpbGUgdGhpcyBmdW5jdGlvbiBmb3IgQVJNIHVzaW5nIE1T
Qywgd2UgdHJpY2sgaXQgYnkgZGVmaW5pbmcgX19jbGFuZ19fCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIyBfX2NsYW5nX18gaXNuJ3QgdXNlZCBlbHNld2hlcmUgemxpYiwgc28gdGhpcyB3
b3JrYXJvdW5kIHNob3VsZG4ndCBpbXBhY3QgYW55dGhpbmcgZWxzZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX2NsYW5nX18nLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAg
ICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAgICAg
ICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGliX3BhdGgpL2FkbGVy
MzIuYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGliX3BhdGgpL2NvbXByZXNzLmMn
LAotICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS9jcmMzMi5jJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvY3JjMzIuaCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAnPCh6bGliX3BhdGgpL2RlZmxhdGUuYycsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAnPCh6bGliX3BhdGgpL2RlZmxhdGUuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAn
PCh6bGliX3BhdGgpL2d6Y2xvc2UuYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGli
X3BhdGgpL2d6Z3V0cy5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkv
Z3psaWIuYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGliX3BhdGgpL2d6cmVhZC5j
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvZ3p3cml0ZS5jJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvaW5mYmFjay5jJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvaW5mZmFzdC5jJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICc8KHpsaWJfcGF0aCkvaW5mZmFzdC5oJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICc8KHpsaWJfcGF0aCkvaW5mZml4ZWQuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAn
PCh6bGliX3BhdGgpL2luZmxhdGUuYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGli
X3BhdGgpL2luZmxhdGUuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGliX3BhdGgp
L2luZnRyZWVzLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS9pbmZ0
cmVlcy5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvbW96emNvbmYu
aCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGliX3BhdGgpL3RyZWVzLmMnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS90cmVlcy5oJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvdW5jb21wci5jJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICc8KHpsaWJfcGF0aCkveDg2LmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzwo
emxpYl9wYXRoKS96Y29uZi5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0
aCkvemxpYi5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8KHpsaWJfcGF0aCkvenV0aWwu
YycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPCh6bGliX3BhdGgpL3p1dGlsLmgnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgJzwoemxpYl9wYXRoKS9zaW1kX3N0dWIuYycsCi0gICAgICAg
ICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2FuZ2xlX2xpYnBuZycsCi0gICAg
ICAgICAgICAgICAgICAgICd0eXBlJzogJ3N0YXRpY19saWJyYXJ5JywKLSAgICAgICAgICAgICAg
ICAgICAgJ2luY2x1ZGVzJzogWyAnLi4vLi4vYnVpbGQvY29tbW9uX2RlZmluZXMuZ3lwaScsIF0s
Ci0gICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOgotICAgICAgICAgICAgICAgICAg
ICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfemxpYicKLSAgICAgICAgICAgICAg
ICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ21zdnNfc2V0dGluZ3MnOgotICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnVkNDTENvbXBpbGVyVG9vbCc6
Ci0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
J0FkZGl0aW9uYWxPcHRpb25zJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvd2Q0MDE4JywgIyBzaWduZWQvdW5zaWduZWQg
bWlzbWF0Y2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy93ZDQwMjgnLCAjIHBh
cmFtZXRlciBkaWZmZXJzIGZyb20gZGVjbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnL3dkNDEwMScsICMgdW5yZWZlcmVuY2VkIGxvY2FsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcvd2Q0MTg5JywgIyB1bnJlZmVyZW5jZWQgYnV0IGluaXR0ZWQKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJy93ZDQyNDQnLCAjIENvbnZlcnNpb24gZnJvbSAndHlw
ZTEnIHRvICd0eXBlMicsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnL3dkNDI2NycsICMgQ29udmVyc2lvbiBmcm9tICdzaXplX3QnIHRvICd0
eXBlJywgcG9zc2libGUgbG9zcyBvZiBkYXRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICAgICAgICAgJzwobGlicG5nX3BhdGgpL3BuZy5jJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICc8KGxpYnBuZ19wYXRoKS9wbmdlcnJvci5jJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICc8KGxpYnBuZ19wYXRoKS9wbmdnZXQuYycsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAnPChsaWJwbmdfcGF0aCkvcG5nbWVtLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAg
JzwobGlicG5nX3BhdGgpL3BuZ3ByZWFkLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzwo
bGlicG5nX3BhdGgpL3BuZ3JlYWQuYycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnPChsaWJw
bmdfcGF0aCkvcG5ncmlvLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzwobGlicG5nX3Bh
dGgpL3BuZ3J0cmFuLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzwobGlicG5nX3BhdGgp
L3BuZ3J1dGlsLmMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzwobGlicG5nX3BhdGgpL3Bu
Z3NldC5jJywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8KGxpYnBuZ19wYXRoKS9wbmd0cmFu
cy5jJywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8KGxpYnBuZ19wYXRoKS9wbmd3aW8uYycs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAnPChsaWJwbmdfcGF0aCkvcG5nd3JpdGUuYycsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAnPChsaWJwbmdfcGF0aCkvcG5nd3RyYW4uYycsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnPChsaWJwbmdfcGF0aCkvcG5nd3V0aWwuYycsCi0gICAgICAg
ICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sICMgdGFy
Z2V0cwotICAgICAgICB9XSwgIyBhbmdsZV9idWlsZF9kZXFwX2xpYnJhcmllcz09MQotICAgICAg
ICBbJ2FuZ2xlX2J1aWxkX2RlcXBfbGlicmFyaWVzPT0xJywKLSAgICAgICAgewotICAgICAgICAg
ICAgJ3RhcmdldHMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2FuZ2xlX2RlcXBfc3VwcG9ydCcsCi0gICAgICAg
ICAgICAgICAgICAgICd0eXBlJzogJ25vbmUnLAotICAgICAgICAgICAgICAgICAgICAnZGlyZWN0
X2RlcGVuZGVudF9zZXR0aW5ncyc6Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICdjb25maWd1cmF0aW9ucyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbW1vbl9CYXNlJzoKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtc3Zz
X2NvbmZpZ3VyYXRpb25fYXR0cmlidXRlcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZEVRUCByZXF1aXJl
cyBBU0NJSQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NoYXJhY3RlclNl
dCc6ICcwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ21zdnNfc2V0dGluZ3MnOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVkNM
aW5rZXJUb29sJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0wJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FkZGl0aW9uYWxEZXBlbmRlbmNpZXMnOgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYmdoZWxwLmxp
YicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2dkaTMyLmxpYicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3VzZXIzMi5saWInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICd3czJfMzIubGliJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dpbnJ0PT0xJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIyBEaXNhYmxlIENPTURBVCBvcHRpbWl6YXRpb25zLCBkaXNhYmxlZCBi
eSBkZWZhdWx0IGZvciBub24tV2luUlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdBZGRpdGlvbmFsT3B0aW9ucyc6IFsnL09QVDpOT1JFRicsICcvT1BU
Ok5PSUNGJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjIEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMgYXV0b21hdGljYWxseSBjb25maWd1cmVzIHRoZSBy
ZXF1aXJlZCAubGlicwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0FkZGl0aW9uYWxEZXBlbmRlbmNpZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICclKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEZWJ1Z19C
YXNlJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdtc3ZzX3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZDQ0xDb21waWxl
clRvb2wnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSdW50aW1lVHlwZUluZm8nOiAndHJ1ZScs
ICMgZEVRUCBuZWVkcyBSVFRJCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUmVsZWFzZV9CYXNl
JzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdtc3ZzX3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZDQ0xDb21waWxlclRv
b2wnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdSdW50aW1lVHlwZUluZm8nOiAndHJ1ZScsICMg
ZEVRUCBuZWVkcyBSVFRJCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgIyBSZS1lbmFibGUgUlRUSSBhbmQgZXhjZXB0aW9ucywgZEVRUCBuZWVkcyB0aGVtLgot
ICAgICAgICAgICAgICAgICAgICAgICAgJ2NmbGFnc19jYyEnOgotICAgICAgICAgICAgICAgICAg
ICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLWV4Y2VwdGlvbnMnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICctZm5vLXJ0dGknLAotICAgICAgICAgICAgICAg
ICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMnOiBbJzxA
KGRlcXBfaW5jbHVkZV9kaXJzKSddLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMn
OiBbJzxAKGRlcXBfZGVmaW5lcyknXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVz
ISc6IFsgJzxAKGRlcXBfdW5kZWZpbmVzKScgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdt
c3ZzX3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnVkNDTENvbXBpbGVyVG9vbCc6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWRkaXRpb25hbE9wdGlv
bnMnOiBbJzxAKGRlcXBfd2luX2NmbGFncyknXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICdjb25kaXRpb25zJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbJ2NsYW5nPT0xJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVE9ETyhqbWFkaWxsKTogUmVtb3Zl
IHRoaXMgb25jZSB3ZSBmaXggZEVRUC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2NmbGFnc19jYyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICctV25vLWRlbGV0ZS1ub24tdmlydHVhbC1kdG9y
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ09TPT0id2luIics
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnY2ZsYWdzJzogWyc8QChkZXFwX3dpbl9jZmxhZ3MpJ10sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdjZmxhZ3NfY2MnOiBbJzxAKGRlcXBfd2luX2NmbGFncyknXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICc8KGRlcXBfcGF0aCkvZnJhbWV3b3JrL3BsYXRmb3JtL3dpbjMyJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzoKLSAgICAgICAgICAgICAgICAgICAgWwot
ICAgICAgICAgICAgICAgICAgICAgICAgWydhbmdsZV9idWlsZF93aW5ydD09MScsCi0gICAgICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUnIDog
J3NoYXJlZF9saWJyYXJ5JywKLSAgICAgICAgICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAg
ICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAjIENv
bXBpbGUgZGVjcHAgc2VwYXJhdGVseSBiZWNhdXNlIE1TVkMgaWdub3JlcyB0aGUgZXh0ZW5zaW9u
IG9mIHRoZSBmaWxlcyB3aGVuCi0gICAgICAgICAgICAgICAgIyBvdXRwdXR0aW5nIHRoZSBvYmog
ZmlsZSwgYW5kIGxhdGVyIHRoaW5rcyB0aGF0IGEgZGVjcHAgb2JqIGFuZCBhbm90aGVyIG9iaiBh
cmUgdGhlCi0gICAgICAgICAgICAgICAgIyBzYW1lLCBpZ25vcmluZyBvbmUgYW5kIGV2ZW50dWFs
bHkgcHJvZHVjaW5nIGEgbGluayBlcnJvci4gVGhlIHByb2JsZW0gb2NjdXJzIGZvcgotICAgICAg
ICAgICAgICAgICMgZXhhbXBsZSBiZXR3ZWVuIGRlY3BwL2RlUmFuZG9tLmNwcCBhbmQgZGViYXNl
L2RlUmFuZG9tLmMKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICd0YXJn
ZXRfbmFtZSc6ICdhbmdsZV9kZXFwX2RlY3BwJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUn
OiAnc3RhdGljX2xpYnJhcnknLAotICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzog
WyAnYW5nbGVfZGVxcF9zdXBwb3J0JyBdLAotICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6
Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8QChkZXFw
X2xpYnRlc3Rlcl9kZWNwcF9zb3VyY2VzKScsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAg
ICAgICAgICAgICAgICAgICMgSW4gYSBjaHJvbWl1bSBidWlsZCBkbCBpcyByZXF1aXJlZCBmb3Ig
ZGVEeW5hbWljTGlicmFyeQotICAgICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6Ci0gICAg
ICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgIFsnT1M9PSJsaW51eCIn
LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdsaW5rX3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJyYXJpZXMnOiBbJy1sZGwnXQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAg
ICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZGVxcF9saWJ0ZXN0
ZXInLAotICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCi0gICAg
ICAgICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0g
ICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfZGVxcF9kZWNwcCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAnYW5nbGVfZGVxcF9zdXBwb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICdhbmdsZV9saWJwbmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkv
c3JjL2FuZ2xlLmd5cDpsaWJFR0wnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzwoYW5nbGVf
cGF0aCkvdXRpbC91dGlsLmd5cDphbmdsZV91dGlsJywKLSAgICAgICAgICAgICAgICAgICAgXSwK
LSAgICAgICAgICAgICAgICAgICAgJ2V4cG9ydF9kZXBlbmRlbnRfc2V0dGluZ3MnOgotICAgICAg
ICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfZGVxcF9zdXBw
b3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3V0aWwvdXRpbC5n
eXA6YW5nbGVfdXRpbCcsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAg
ICAgICdpbmNsdWRlX2RpcnMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAg
ICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9pbmNsdWRlJywKLSAgICAgICAgICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnOgotICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJz
JzoKLSAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnPChhbmdsZV9wYXRoKS9pbmNsdWRlJywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FOR0xFX0RFUVBfTElCVEVTVEVSX0lN
UExFTUVOVEFUSU9OJywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICdtc3ZzX3NldHRpbmdzJzoKLSAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ1ZDQ0xDb21waWxlclRvb2wn
OgotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdBZGRpdGlvbmFsT3B0aW9ucyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL2JpZ29iaicsICMgbmVlZGVkIGZvciBnbHNC
dWlsdGluUHJlY2lzaW9uVGVzdHMuY3BwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcvd2Q0MjUxJywgIyBuZWVkZWQgZm9yIGFuZ2xlX3V0aWwgU1RMIG9iamVjdHMgbm90IGhhdmlu
ZyBETEwgaW50ZXJmYWNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAg
ICAgICAgICAgJzxAKGRlcXBfbGlidGVzdGVyX3NvdXJjZXMpJywKLSAgICAgICAgICAgICAgICAg
ICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgotICAgICAgICAgICAgICAg
ICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICBbJ09TPT0ibWFjIicsCi0gICAgICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdF9kZXBl
bmRlbnRfc2V0dGluZ3MnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3hjb2RlX3NldHRpbmdzJzoKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J0RZTElCX0lOU1RBTExfTkFNRV9CQVNFJzogJ0BycGF0aCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgICAgICAgICAgWydPUz09IndpbiIn
LAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdzb3VyY2VzJzogWyAnPEAoZGVxcF9saWJ0ZXN0ZXJfc291cmNlc193aW4pJywgXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgICAgICAgICAgWydPUz09Imxp
bnV4IiBvciBPUz09Im1hYyInLAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzogWyAnPEAoZGVxcF9saWJ0ZXN0ZXJfc291cmNl
c191bml4KScsIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFsnT1M9PSJsaW51eCInLAotICAgICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdsaW5rX3NldHRpbmdzJzoKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJyYXJp
ZXMnOiBbJy1scnQnXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAg
ICB9LAotCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25h
bWUnOiAnYW5nbGVfZGVxcF9saWJnbGVzMicsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJzog
J3NoYXJlZF9saWJyYXJ5JywKLSAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6Ci0g
ICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFw
X2xpYnRlc3RlcicsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAg
ICdkZWZpbmVzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAg
ICAgJ0FOR0xFX0RFUVBfR0xFUzJfVEVTVFMnLAotICAgICAgICAgICAgICAgICAgICBdLAotICAg
ICAgICAgICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6Ci0gICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAg
ICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVfREVR
UF9HTEVTMl9URVNUUycsCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICAg
ICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8QChkZXFwX2dsZXMyX3NvdXJjZXMp
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9saWJ0
ZXN0ZXJfbWFpbi5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcXBfc3VwcG9ydC90
Y3VBTkdMRVBsYXRmb3JtLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZGVxcF9zdXBw
b3J0L3RjdUFOR0xFUGxhdGZvcm0uaCcsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Rh
cmdldF9uYW1lJzogJ2FuZ2xlX2RlcXBfbGliZ2xlczMnLAotICAgICAgICAgICAgICAgICAgICAn
dHlwZSc6ICdzaGFyZWRfbGlicmFyeScsCi0gICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNp
ZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnYW5n
bGVfZGVxcF9saWJ0ZXN0ZXInLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAg
ICAgICAgICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICdBTkdMRV9ERVFQX0dMRVMzX1RFU1RTJywKLSAgICAgICAgICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnOgotICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyc6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FO
R0xFX0RFUVBfR0xFUzNfVEVTVFMnLAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAg
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAg
ICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnPEAoZGVxcF9nbGVzM19z
b3VyY2VzKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZGVxcF9zdXBwb3J0L2FuZ2xlX2Rl
cXBfbGlidGVzdGVyX21haW4uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkZXFwX3N1
cHBvcnQvdGN1QU5HTEVQbGF0Zm9ybS5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Rl
cXBfc3VwcG9ydC90Y3VBTkdMRVBsYXRmb3JtLmgnLAotICAgICAgICAgICAgICAgICAgICBdLAot
ICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9kZXFwX2xpYmdsZXMzMScsCi0gICAgICAgICAgICAg
ICAgICAgICd0eXBlJzogJ3NoYXJlZF9saWJyYXJ5JywKLSAgICAgICAgICAgICAgICAgICAgJ2Rl
cGVuZGVuY2llcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICdhbmdsZV9kZXFwX2xpYnRlc3RlcicsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAg
ICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAgICAgICAgICAgJ0FOR0xFX0RFUVBfR0xFUzMxX1RFU1RTJywKLSAgICAgICAgICAg
ICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGlu
Z3MnOgotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnZGVm
aW5lcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0FOR0xFX0RFUVBfR0xFUzMxX1RFU1RTJywKLSAgICAgICAgICAgICAgICAgICAgICAg
IF0sCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICdzb3VyY2Vz
JzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJzxAKGRl
cXBfZ2xlczMxX3NvdXJjZXMpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdkZXFwX3N1cHBv
cnQvYW5nbGVfZGVxcF9saWJ0ZXN0ZXJfbWFpbi5jcHAnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgJ2RlcXBfc3VwcG9ydC90Y3VBTkdMRVBsYXRmb3JtLmNwcCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnZGVxcF9zdXBwb3J0L3RjdUFOR0xFUGxhdGZvcm0uaCcsCi0gICAgICAgICAgICAg
ICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2FuZ2xlX2RlcXBfbGliZWdsJywKLSAgICAg
ICAgICAgICAgICAgICAgJ3R5cGUnOiAnc2hhcmVkX2xpYnJhcnknLAotICAgICAgICAgICAgICAg
ICAgICAnZGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAg
ICAgICAgICAgICAgJ2FuZ2xlX2RlcXBfbGlidGVzdGVyJywKLSAgICAgICAgICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAgICAgICAgICAgICBb
Ci0gICAgICAgICAgICAgICAgICAgICAgICAnQU5HTEVfREVRUF9FR0xfVEVTVFMnLAotICAgICAg
ICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9z
ZXR0aW5ncyc6Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICdkZWZpbmVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnQU5HTEVfREVRUF9FR0xfVEVTVFMnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgXSwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJj
ZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnPEAo
ZGVxcF9lZ2xfc291cmNlcyknLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcXBfc3VwcG9y
dC9hbmdsZV9kZXFwX2xpYnRlc3Rlcl9tYWluLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAnZGVxcF9zdXBwb3J0L3RjdUFOR0xFUGxhdGZvcm0uY3BwJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICdkZXFwX3N1cHBvcnQvdGN1QU5HTEVQbGF0Zm9ybS5oJywKLSAgICAgICAgICAgICAg
ICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwgIyB0YXJnZXRzCi0g
ICAgICAgIH1dLCAjIGFuZ2xlX2J1aWxkX2RlcXBfbGlicmFyaWVzCi0gICAgICAgIFsnYW5nbGVf
YnVpbGRfZGVxcF9leGVjdXRhYmxlcz09MScsCi0gICAgICAgIHsKLSAgICAgICAgICAgICJ0YXJn
ZXRzIjoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9kZXFwX2dsZXMyX3Rlc3RzJywKLSAgICAgICAgICAg
ICAgICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCi0gICAgICAgICAgICAgICAgICAgICdkZXBl
bmRlbmNpZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAg
ICAnYW5nbGVfZGVxcF9saWJnbGVzMicsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICAgICAgICAgICdzb3VyY2VzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAg
ICAgICAgICAgICAgICAgJ2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX3Rlc3RzX21haW4uY3BwJywK
LSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZGVxcF9n
bGVzM190ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAot
ICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAgICAgICAgICAg
WwotICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX2RlcXBfbGliZ2xlczMnLAotICAgICAg
ICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAg
ICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICdkZXFwX3N1cHBvcnQvYW5n
bGVfZGVxcF90ZXN0c19tYWluLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3Rh
cmdldF9uYW1lJzogJ2FuZ2xlX2RlcXBfZ2xlczMxX3Rlc3RzJywKLSAgICAgICAgICAgICAgICAg
ICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCi0gICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNp
ZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnYW5n
bGVfZGVxcF9saWJnbGVzMzEnLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAg
ICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICdkZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF90ZXN0c19tYWluLmNwcCcsCi0gICAg
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2FuZ2xlX2RlcXBfZWdsX3Rl
c3RzJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCi0gICAgICAg
ICAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnYW5nbGVfZGVxcF9saWJlZ2wnLAotICAgICAgICAgICAgICAg
ICAgICBdLAotICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICAgICAg
ICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICdkZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF90
ZXN0c19tYWluLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgIF0sICMgdGFyZ2V0cwotICAgICAgICB9XSwgIyBhbmdsZV9idWlsZF9k
ZXFwX2V4ZWN1dGFibGVzCi0gICAgICAgIFsnYW5nbGVfYnVpbGRfZGVxcF9ndGVzdF9zdXBwb3J0
PT0xJywKLSAgICAgICAgewotICAgICAgICAgICAgJ3RhcmdldHMnOgotICAgICAgICAgICAgWwot
ICAgICAgICAgICAgICAgICMgSGVscGVyIHRhcmdldCBmb3Igc3luY2hpbmcgb3VyIGltcGxlbWVu
dGF0aW9uIHdpdGggY2hyb21lJ3MKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9kZXFwX2d0ZXN0X3N1cHBvcnQnLAotICAgICAgICAg
ICAgICAgICAgICAndHlwZSc6ICdub25lJywKLSAgICAgICAgICAgICAgICAgICAgJ2RlcGVuZGVu
Y2llcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICdh
bmdsZV90ZXN0X3N1cHBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzwoYW5nbGVfcGF0
aCkvdXRpbC91dGlsLmd5cDphbmdsZV91dGlsJywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8
KGFuZ2xlX3BhdGgpL3NyYy9hbmdsZS5neXA6YW5nbGVfY29tbW9uJywKLSAgICAgICAgICAgICAg
ICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2V4cG9ydF9kZXBlbmRlbnRfc2V0dGluZ3Mn
OgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVf
dGVzdF9zdXBwb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3V0
aWwvdXRpbC5neXA6YW5nbGVfdXRpbCcsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0KLSAgICAg
ICAgICAgICAgICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnOgotICAgICAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVxcF9z
dXBwb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkvZ3B1X3Rl
c3RfZXhwZWN0YXRpb25zJywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJzxAKGRlcXBfZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3Nv
dXJjZXMpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVxcF9zdXBwb3J0L2FuZ2xl
X2RlcXBfZ3Rlc3QuY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjIFJlLWRlZmluZSB0aGUgbWlzc2luZyBXaW5kb3dz
IG1hY3JvcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8QChkZXFwX3VuZGVmaW5lcykn
LAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLQotICAgICAgICAgICAgICAgICAgICAgICAg
J21zdnNfc2V0dGluZ3MnOgotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdWQ0xpbmtlclRvb2wnOgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FkZGl0aW9uYWxEZXBlbmRl
bmNpZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAndXNlcjMyLmxpYicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAgICAgICAgICdjb25kaXRpb25z
JzoKLSAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjIE5PVEUoc21jZ3J1ZXIpOiBHdWFyZGluZyB3aXRoIHVzZV9saWJwY2kgYWxsb3dzIGd5cCB0
byBydW4gc3VjY2Vzc2Z1bGx5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvbiBzeXN0
ZW1zIHdpdGhvdXQgbGlicGNpLCBidXQgdGhlIHRlc3QgdGFyZ2V0cyB3aWxsIG5vdCBjb21waWxl
IG9yIGxpbmsuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWydPUz09ImxpbnV4IiBhbmQg
dXNlX2xpYnBjaT09MScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnbGRmbGFncyc6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8IUAoPChw
a2ctY29uZmlnKSAtLWxpYnMtb25seS1MIC0tbGlicy1vbmx5LW90aGVyIGxpYnBjaSknLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnbGlicmFyaWVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwhQCg8KHBrZy1jb25maWcpIC0t
bGlicy1vbmx5LWwgbGlicGNpKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWydPUz09Im1hYyInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhp
cmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2NvbmZpZ19tYWMubW0nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnbGlua19zZXR0aW5ncyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWJyYXJpZXMnOgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICckKFNES1JPT1QpL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29y
a3MvSU9LaXQuZnJhbWV3b3JrJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLCAjIHRhcmdldHMK
LSAgICAgICAgfV0sICMgYW5nbGVfYnVpbGRfZGVxcF9ndGVzdF9zdXBwb3J0Ci0gICAgICAgIFsn
YW5nbGVfYnVpbGRfZGVxcF9ndGVzdF9leGVjdXRhYmxlcz09MScsCi0gICAgICAgIHsKLSAgICAg
ICAgICAgICJ0YXJnZXRzIjoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9kZXFwX2d0ZXN0X2dsZXMyX3Rl
c3RzJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnZXhlY3V0YWJsZScsCi0gICAgICAg
ICAgICAgICAgICAgICdpbmNsdWRlcyc6IFsgJy4uLy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5
cGknLCBdLAotICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAg
ICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX2RlcXBfZ3Rlc3Rfc3Vw
cG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfZGVxcF9saWJnbGVzMicsCi0g
ICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdzb3VyY2VzJzoKLSAg
ICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJ2RlcXBfc3VwcG9y
dC9hbmdsZV9kZXFwX2d0ZXN0X21haW4uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZGVxcF9ndGVzdF9nbGVzM190ZXN0cycsCi0gICAgICAg
ICAgICAgICAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAotICAgICAgICAgICAgICAgICAgICAn
aW5jbHVkZXMnOiBbICcuLi8uLi9idWlsZC9jb21tb25fZGVmaW5lcy5neXBpJywgXSwKLSAgICAg
ICAgICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICdhbmdsZV9kZXFwX2d0ZXN0X3N1cHBvcnQnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgJ2FuZ2xlX2RlcXBfbGliZ2xlczMnLAotICAgICAgICAgICAgICAg
ICAgICBdLAotICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICAgICAg
ICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICdkZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9n
dGVzdF9tYWluLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAg
fSwKLQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1l
JzogJ2FuZ2xlX2RlcXBfZ3Rlc3RfZ2xlczMxX3Rlc3RzJywKLSAgICAgICAgICAgICAgICAgICAg
J3R5cGUnOiAnZXhlY3V0YWJsZScsCi0gICAgICAgICAgICAgICAgICAgICdpbmNsdWRlcyc6IFsg
Jy4uLy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLCBdLAotICAgICAgICAgICAgICAgICAg
ICAnZGVwZW5kZW5jaWVzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAg
ICAgICAgICAgJ2FuZ2xlX2RlcXBfZ3Rlc3Rfc3VwcG9ydCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAnYW5nbGVfZGVxcF9saWJnbGVzMzEnLAotICAgICAgICAgICAgICAgICAgICBdLAotICAg
ICAgICAgICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICdkZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9ndGVzdF9tYWluLmNw
cCcsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLQotICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3RhcmdldF9uYW1lJzogJ2FuZ2xlX2Rl
cXBfZ3Rlc3RfZWdsX3Rlc3RzJywKLSAgICAgICAgICAgICAgICAgICAgJ3R5cGUnOiAnZXhlY3V0
YWJsZScsCi0gICAgICAgICAgICAgICAgICAgICdpbmNsdWRlcyc6IFsgJy4uLy4uL2J1aWxkL2Nv
bW1vbl9kZWZpbmVzLmd5cGknLCBdLAotICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVz
JzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xl
X2RlcXBfZ3Rlc3Rfc3VwcG9ydCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfZGVx
cF9saWJlZ2wnLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAn
c291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICdkZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9ndGVzdF9tYWluLmNwcCcsCi0gICAgICAgICAgICAg
ICAgICAgIF0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIF0sICMgdGFyZ2V0cwot
ICAgICAgICB9XSwgIyBhbmdsZV9idWlsZF9kZXFwX2d0ZXN0X2V4ZWN1dGFibGVzCi0gICAgXSwg
IyBjb25kaXRpb25zCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBfZ3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX2d0ZXN0LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNkYmI1Y2FkZmEuLjAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvYW5nbGVfZGVx
cF9ndGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMTIgKzAsMCBAQAotLy8KLS8vIENvcHly
aWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8v
IGFuZ2xlX2RlcXBfZ3Rlc3Q6Ci0vLyAgIGRFUVAgYW5kIEdvb2dsZVRlc3QgaW50ZWdyYXRpb24g
bG9naWMuIENhbGxzIHRocm91Z2ggdG8gdGhlIHJhbmRvbQotLy8gICBvcmRlciBleGVjdXRvci4K
LQotI2luY2x1ZGUgPGZzdHJlYW0+Ci0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0KLSNpbmNsdWRlIDxn
dGVzdC9ndGVzdC5oPgotCi0jaW5jbHVkZSAiYW5nbGVfZGVxcF9saWJ0ZXN0ZXIuaCIKLSNpbmNs
dWRlICJjb21tb24vYW5nbGV1dGlscy5oIgotI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgotI2lu
Y2x1ZGUgImNvbW1vbi9PcHRpb25hbC5oIgotI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgot
I2luY2x1ZGUgImNvbW1vbi9zdHJpbmdfdXRpbHMuaCIKLSNpbmNsdWRlICJncHVfdGVzdF9leHBl
Y3RhdGlvbnNfcGFyc2VyLmgiCi0jaW5jbHVkZSAic3lzdGVtX3V0aWxzLmgiCi0KLW5hbWVzcGFj
ZQotewotCi0jaWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9BTkRST0lEKQotY29uc3QgY2hhciAq
Z19DYXNlTGlzdFJlbGF0aXZlUGF0aCA9Ci0gICAgIi8uLi8uLi9zZGNhcmQvY2hyb21pdW1fdGVz
dHNfcm9vdC90aGlyZF9wYXJ0eS9kZXFwL3NyYy9hbmRyb2lkL2N0cy9tYXN0ZXIvIjsKLSNlbHNl
Ci1jb25zdCBjaGFyICpnX0Nhc2VMaXN0UmVsYXRpdmVQYXRoID0gIi8uLi8uLi90aGlyZF9wYXJ0
eS9kZXFwL3NyYy9hbmRyb2lkL2N0cy9tYXN0ZXIvIjsKLSNlbmRpZgotCi1jb25zdCBjaGFyICpn
X1Rlc3RFeHBlY3RhdGlvbnNTZWFyY2hQYXRoc1tdID0gewotICAgICIvLi4vLi4vc3JjL3Rlc3Rz
L2RlcXBfc3VwcG9ydC8iLCAiLy4uLy4uL3RoaXJkX3BhcnR5L2FuZ2xlL3NyYy90ZXN0cy9kZXFw
X3N1cHBvcnQvIiwKLSAgICAiL2RlcXBfc3VwcG9ydC8iLCAiLy4uLy4uL3NkY2FyZC9jaHJvbWl1
bV90ZXN0c19yb290L3RoaXJkX3BhcnR5L2FuZ2xlL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvIiwK
LX07Ci0KLWNvbnN0IGNoYXIgKmdfQ2FzZUxpc3RGaWxlc1tdID0gewotICAgICJnbGVzMi1tYXN0
ZXIudHh0IiwgImdsZXMzLW1hc3Rlci50eHQiLCAiZ2xlczMxLW1hc3Rlci50eHQiLCAiZWdsLW1h
c3Rlci50eHQiLAotfTsKLQotY29uc3QgY2hhciAqZ19UZXN0RXhwZWN0YXRpb25zRmlsZXNbXSA9
IHsKLSAgICAiZGVxcF9nbGVzMl90ZXN0X2V4cGVjdGF0aW9ucy50eHQiLCAiZGVxcF9nbGVzM190
ZXN0X2V4cGVjdGF0aW9ucy50eHQiLAotICAgICJkZXFwX2dsZXMzMV90ZXN0X2V4cGVjdGF0aW9u
cy50eHQiLCAiZGVxcF9lZ2xfdGVzdF9leHBlY3RhdGlvbnMudHh0IiwKLX07Ci0KLS8vIER1cmlu
ZyB0aGUgQ2FzZUxpc3QgaW5pdGlhbGl6YXRpb24gd2UgY2Fubm90IHVzZSB0aGUgR1RFU1QgRkFJ
TCBtYWNybyB0byBxdWl0IHRoZSBwcm9ncmFtIGJlY2F1c2UKLS8vIHRoZSBpbml0aWFsaXphdGlv
biBpcyBjYWxsZWQgb3V0c2lkZSBvZiB0ZXN0cyB0aGUgZmlyc3QgdGltZS4KLXZvaWQgRGllKCkK
LXsKLSAgICBleGl0KEVYSVRfRkFJTFVSRSk7Ci19Ci0KLU9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBG
aW5kVGVzdEV4cGVjdGF0aW9uc1BhdGgoY29uc3Qgc3RkOjpzdHJpbmcgJmV4ZURpciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB0
ZXN0TW9kdWxlSW5kZXgpCi17Ci0gICAgZm9yIChjb25zdCBjaGFyICp0ZXN0UGF0aCA6IGdfVGVz
dEV4cGVjdGF0aW9uc1NlYXJjaFBhdGhzKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJpbmdzdHJl
YW0gdGVzdEV4cGVjdGF0aW9uc1BhdGhTdHI7Ci0gICAgICAgIHRlc3RFeHBlY3RhdGlvbnNQYXRo
U3RyIDw8IGV4ZURpciA8PCB0ZXN0UGF0aCA8PCBnX1Rlc3RFeHBlY3RhdGlvbnNGaWxlc1t0ZXN0
TW9kdWxlSW5kZXhdOwotCi0gICAgICAgIHN0ZDo6c3RyaW5nIHBhdGggPSB0ZXN0RXhwZWN0YXRp
b25zUGF0aFN0ci5zdHIoKTsKLSAgICAgICAgc3RkOjppZnN0cmVhbSBpbkZpbGUocGF0aC5jX3N0
cigpKTsKLSAgICAgICAgaWYgKCFpbkZpbGUuZmFpbCgpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpbkZpbGUuY2xvc2UoKTsKLSAgICAgICAgICAgIHJldHVybiBPcHRpb25hbDxzdGQ6OnN0cmlu
Zz4ocGF0aCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gT3B0aW9uYWw8c3RkOjpz
dHJpbmc+OjpJbnZhbGlkKCk7Ci19Ci0KLWNsYXNzIGRFUVBDYXNlTGlzdAotewotICBwdWJsaWM6
Ci0gICAgZEVRUENhc2VMaXN0KHNpemVfdCB0ZXN0TW9kdWxlSW5kZXgpOwotCi0gICAgc3RydWN0
IENhc2VJbmZvCi0gICAgewotICAgICAgICBDYXNlSW5mbyhjb25zdCBzdGQ6OnN0cmluZyAmZEVR
UE5hbWUsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZnVGVzdE5hbWUsCi0g
ICAgICAgICAgICAgICAgIGludCBleHBlY3RhdGlvbikKLSAgICAgICAgICAgIDogbURFUVBOYW1l
KGRFUVBOYW1lKSwKLSAgICAgICAgICAgICAgbUdUZXN0TmFtZShnVGVzdE5hbWUpLAotICAgICAg
ICAgICAgICBtRXhwZWN0YXRpb24oZXhwZWN0YXRpb24pCi0gICAgICAgIHsKLSAgICAgICAgfQot
Ci0gICAgICAgIHN0ZDo6c3RyaW5nIG1ERVFQTmFtZTsKLSAgICAgICAgc3RkOjpzdHJpbmcgbUdU
ZXN0TmFtZTsKLSAgICAgICAgaW50IG1FeHBlY3RhdGlvbjsKLSAgICB9OwotCi0gICAgdm9pZCBp
bml0aWFsaXplKCk7Ci0KLSAgICBjb25zdCBDYXNlSW5mbyAmZ2V0Q2FzZUluZm8oc2l6ZV90IGNh
c2VJbmRleCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtSW5pdGlhbGl6ZWQpOwotICAg
ICAgICBBU1NFUlQoY2FzZUluZGV4IDwgbUNhc2VJbmZvTGlzdC5zaXplKCkpOwotICAgICAgICBy
ZXR1cm4gbUNhc2VJbmZvTGlzdFtjYXNlSW5kZXhdOwotICAgIH0KLQotICAgIHNpemVfdCBudW1D
YXNlcygpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobUluaXRpYWxpemVkKTsKLSAgICAg
ICAgcmV0dXJuIG1DYXNlSW5mb0xpc3Quc2l6ZSgpOwotICAgIH0KLQotICBwcml2YXRlOgotICAg
IHN0ZDo6dmVjdG9yPENhc2VJbmZvPiBtQ2FzZUluZm9MaXN0OwotICAgIGdwdTo6R1BVVGVzdEV4
cGVjdGF0aW9uc1BhcnNlciBtVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjsKLSAgICBncHU6OkdQVVRl
c3RCb3RDb25maWcgbVRlc3RDb25maWc7Ci0gICAgc2l6ZV90IG1UZXN0TW9kdWxlSW5kZXg7Ci0g
ICAgYm9vbCBtSW5pdGlhbGl6ZWQ7Ci19OwotCi1kRVFQQ2FzZUxpc3Q6OmRFUVBDYXNlTGlzdChz
aXplX3QgdGVzdE1vZHVsZUluZGV4KQotICAgIDogbVRlc3RNb2R1bGVJbmRleCh0ZXN0TW9kdWxl
SW5kZXgpLAotICAgICAgbUluaXRpYWxpemVkKGZhbHNlKQotewotfQotCi12b2lkIGRFUVBDYXNl
TGlzdDo6aW5pdGlhbGl6ZSgpCi17Ci0gICAgaWYgKG1Jbml0aWFsaXplZCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtSW5pdGlhbGl6ZWQgPSB0cnVlOwotCi0gICAgc3Rk
OjpzdHJpbmcgZXhlRGlyID0gYW5nbGU6OkdldEV4ZWN1dGFibGVEaXJlY3RvcnkoKTsKLQotICAg
IHN0ZDo6c3RyaW5nc3RyZWFtIGNhc2VMaXN0UGF0aFN0cjsKLSAgICBjYXNlTGlzdFBhdGhTdHIg
PDwgZXhlRGlyIDw8IGdfQ2FzZUxpc3RSZWxhdGl2ZVBhdGggPDwgZ19DYXNlTGlzdEZpbGVzW21U
ZXN0TW9kdWxlSW5kZXhdOwotICAgIHN0ZDo6c3RyaW5nIGNhc2VMaXN0UGF0aCA9IGNhc2VMaXN0
UGF0aFN0ci5zdHIoKTsKLQotICAgIE9wdGlvbmFsPHN0ZDo6c3RyaW5nPiB0ZXN0RXhwZWN0YXRp
b25zUGF0aCA9IEZpbmRUZXN0RXhwZWN0YXRpb25zUGF0aChleGVEaXIsIG1UZXN0TW9kdWxlSW5k
ZXgpOwotICAgIGlmICghdGVzdEV4cGVjdGF0aW9uc1BhdGgudmFsaWQoKSkKLSAgICB7Ci0gICAg
ICAgIHN0ZDo6Y2VyciA8PCAiRmFpbGVkIHRvIGZpbmQgdGVzdCBleHBlY3RhdGlvbnMgZmlsZS4i
IDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgRGllKCk7Ci0gICAgfQotCi0gICAgaWYgKCFtVGVzdEV4
cGVjdGF0aW9uc1BhcnNlci5Mb2FkVGVzdEV4cGVjdGF0aW9uc0Zyb21GaWxlKHRlc3RFeHBlY3Rh
dGlvbnNQYXRoLnZhbHVlKCkpKQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gZXJy
b3JNc2dTdHJlYW07Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byAmbWVzc2FnZSA6IG1UZXN0RXhw
ZWN0YXRpb25zUGFyc2VyLkdldEVycm9yTWVzc2FnZXMoKSkKLSAgICAgICAgewotICAgICAgICAg
ICAgZXJyb3JNc2dTdHJlYW0gPDwgc3RkOjplbmRsIDw8ICIgIiA8PCBtZXNzYWdlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgc3RkOjpjZXJyIDw8ICJGYWlsZWQgdG8gbG9hZCB0ZXN0IGV4cGVjdGF0
aW9ucy4iIDw8IGVycm9yTXNnU3RyZWFtLnN0cigpIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgRGll
KCk7Ci0gICAgfQotCi0gICAgaWYgKCFtVGVzdENvbmZpZy5Mb2FkQ3VycmVudENvbmZpZyhudWxs
cHRyKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y2VyciA8PCAiRmFpbGVkIHRvIGxvYWQgdGVzdCBj
b25maWd1cmF0aW9uLiIgPDwgc3RkOjplbmRsOwotICAgICAgICBEaWUoKTsKLSAgICB9Ci0KLSAg
ICBzdGQ6Omlmc3RyZWFtIGNhc2VMaXN0U3RyZWFtKGNhc2VMaXN0UGF0aCk7Ci0gICAgaWYgKGNh
c2VMaXN0U3RyZWFtLmZhaWwoKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y2VyciA8PCAiRmFpbGVk
IHRvIGxvYWQgdGhlIGNhc2UgbGlzdC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgRGllKCk7Ci0g
ICAgfQotCi0gICAgd2hpbGUgKCFjYXNlTGlzdFN0cmVhbS5lb2YoKSkKLSAgICB7Ci0gICAgICAg
IHN0ZDo6c3RyaW5nIGluU3RyaW5nOwotICAgICAgICBzdGQ6OmdldGxpbmUoY2FzZUxpc3RTdHJl
YW0sIGluU3RyaW5nKTsKLQotICAgICAgICBzdGQ6OnN0cmluZyBkRVFQTmFtZSA9IGFuZ2xlOjpU
cmltU3RyaW5nKGluU3RyaW5nLCBhbmdsZTo6a1doaXRlc3BhY2VBU0NJSSk7Ci0gICAgICAgIGlm
IChkRVFQTmFtZS5lbXB0eSgpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIHN0ZDo6
c3RyaW5nIGdUZXN0TmFtZSA9IGRFUVBOYW1lLnN1YnN0cihkRVFQTmFtZS5maW5kKCcuJykgKyAx
KTsKLSAgICAgICAgaWYgKGdUZXN0TmFtZS5lbXB0eSgpKQotICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgIHN0ZDo6cmVwbGFjZShnVGVzdE5hbWUuYmVnaW4oKSwgZ1Rlc3ROYW1lLmVuZCgp
LCAnLicsICdfJyk7Ci0KLSAgICAgICAgLy8gT2NjdXJzIGluIHNvbWUgbHVtaW5hbmNlIHRlc3Rz
Ci0gICAgICAgIGdUZXN0TmFtZS5lcmFzZShzdGQ6OnJlbW92ZShnVGVzdE5hbWUuYmVnaW4oKSwg
Z1Rlc3ROYW1lLmVuZCgpLCAnLScpLCBnVGVzdE5hbWUuZW5kKCkpOwotCi0gICAgICAgIGludCBl
eHBlY3RhdGlvbiA9IG1UZXN0RXhwZWN0YXRpb25zUGFyc2VyLkdldFRlc3RFeHBlY3RhdGlvbihk
RVFQTmFtZSwgbVRlc3RDb25maWcpOwotICAgICAgICBpZiAoZXhwZWN0YXRpb24gIT0gZ3B1OjpH
UFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjprR3B1VGVzdFNraXApCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIG1DYXNlSW5mb0xpc3QucHVzaF9iYWNrKENhc2VJbmZvKGRFUVBOYW1lLCBnVGVzdE5h
bWUsIGV4cGVjdGF0aW9uKSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXRlbXBsYXRlIDxzaXpl
X3QgVGVzdE1vZHVsZUluZGV4PgotY2xhc3MgZEVRUFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz
dFdpdGhQYXJhbTxzaXplX3Q+Ci17Ci0gIHB1YmxpYzoKLSAgICBzdGF0aWMgdGVzdGluZzo6aW50
ZXJuYWw6OlBhcmFtR2VuZXJhdG9yPHNpemVfdD4gR2V0VGVzdGluZ1JhbmdlKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0ZXN0aW5nOjpSYW5nZTxzaXplX3Q+KDAsIEdldENhc2VMaXN0KCkubnVt
Q2FzZXMoKSk7Ci0gICAgfQotCi0gICAgc3RhdGljIHN0ZDo6c3RyaW5nIEdldENhc2VHVGVzdE5h
bWUoc2l6ZV90IGNhc2VJbmRleCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IGF1dG8gJmNhc2VJbmZv
ID0gR2V0Q2FzZUxpc3QoKS5nZXRDYXNlSW5mbyhjYXNlSW5kZXgpOwotICAgICAgICByZXR1cm4g
Y2FzZUluZm8ubUdUZXN0TmFtZTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgY29uc3QgZEVRUENhc2VM
aXN0ICZHZXRDYXNlTGlzdCgpCi0gICAgewotICAgICAgICBzdGF0aWMgZEVRUENhc2VMaXN0IHND
YXNlTGlzdChUZXN0TW9kdWxlSW5kZXgpOwotICAgICAgICBzQ2FzZUxpc3QuaW5pdGlhbGl6ZSgp
OwotICAgICAgICByZXR1cm4gc0Nhc2VMaXN0OwotICAgIH0KLQotICAgIHN0YXRpYyB2b2lkIFNl
dFVwVGVzdENhc2UoKQotICAgIHsKLSAgICAgICAgc1Bhc3NlcyAgICAgICAgICAgPSAwOwotICAg
ICAgICBzRmFpbHMgICAgICAgICAgICA9IDA7Ci0gICAgICAgIHNVbmV4cGVjdGVkUGFzc2VzID0g
MDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBUZWFyRG93blRlc3RDYXNlKCk7Ci0KLSAgcHJv
dGVjdGVkOgotICAgIHZvaWQgcnVuVGVzdCgpCi0gICAgewotICAgICAgICBjb25zdCBhdXRvICZj
YXNlSW5mbyA9IEdldENhc2VMaXN0KCkuZ2V0Q2FzZUluZm8oR2V0UGFyYW0oKSk7Ci0gICAgICAg
IHN0ZDo6Y291dCA8PCBjYXNlSW5mby5tREVRUE5hbWUgPDwgc3RkOjplbmRsOwotCi0gICAgICAg
IGJvb2wgcmVzdWx0ID0gZGVxcF9saWJ0ZXN0ZXJfcnVuKGNhc2VJbmZvLm1ERVFQTmFtZS5jX3N0
cigpKTsKLQotICAgICAgICBpZiAoY2FzZUluZm8ubUV4cGVjdGF0aW9uID09IGdwdTo6R1BVVGVz
dEV4cGVjdGF0aW9uc1BhcnNlcjo6a0dwdVRlc3RQYXNzKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBFWFBFQ1RfVFJVRShyZXN1bHQpOwotICAgICAgICAgICAgc1Bhc3NlcyArPSAocmVzdWx0ID8g
MXUgOiAwdSk7Ci0gICAgICAgICAgICBzRmFpbHMgKz0gKCFyZXN1bHQgPyAxdSA6IDB1KTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlIGlmIChyZXN1bHQpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBleHBlY3RlZCB0byBmYWlsIGJ1dCBwYXNzZWQhIiA8PCBzdGQ6
OmVuZGw7Ci0gICAgICAgICAgICBzVW5leHBlY3RlZFBhc3NlcysrOwotICAgICAgICB9Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgc0ZhaWxzKys7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBzdGF0aWMgdW5zaWduZWQgaW50IHNQYXNzZXM7Ci0gICAgc3RhdGljIHVuc2ln
bmVkIGludCBzRmFpbHM7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGludCBzVW5leHBlY3RlZFBhc3Nl
czsKLX07Ci0KLXRlbXBsYXRlIDxzaXplX3QgVGVzdE1vZHVsZUluZGV4PgotdW5zaWduZWQgaW50
IGRFUVBUZXN0PFRlc3RNb2R1bGVJbmRleD46OnNQYXNzZXMgICAgICAgICAgID0gMDsKLXRlbXBs
YXRlIDxzaXplX3QgVGVzdE1vZHVsZUluZGV4PgotdW5zaWduZWQgaW50IGRFUVBUZXN0PFRlc3RN
b2R1bGVJbmRleD46OnNGYWlscyAgICAgICAgICAgID0gMDsKLXRlbXBsYXRlIDxzaXplX3QgVGVz
dE1vZHVsZUluZGV4PgotdW5zaWduZWQgaW50IGRFUVBUZXN0PFRlc3RNb2R1bGVJbmRleD46OnNV
bmV4cGVjdGVkUGFzc2VzID0gMDsKLQotLy8gc3RhdGljCi10ZW1wbGF0ZSA8c2l6ZV90IFRlc3RN
b2R1bGVJbmRleD4KLXZvaWQgZEVRUFRlc3Q8VGVzdE1vZHVsZUluZGV4Pjo6VGVhckRvd25UZXN0
Q2FzZSgpCi17Ci0gICAgdW5zaWduZWQgaW50IHRvdGFsID0gc1Bhc3NlcyArIHNGYWlsczsKLSAg
ICBmbG9hdCBwYXNzRnJhYyAgICAgPSBzdGF0aWNfY2FzdDxmbG9hdD4oc1Bhc3NlcykgLyBzdGF0
aWNfY2FzdDxmbG9hdD4odG90YWwpICogMTAwLjBmOwotICAgIGZsb2F0IGZhaWxGcmFjICAgICA9
IHN0YXRpY19jYXN0PGZsb2F0PihzRmFpbHMpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHRvdGFsKSAq
IDEwMC4wZjsKLSAgICBzdGQ6OmNvdXQgPDwgIlBhc3NlZDogIiA8PCBzUGFzc2VzIDw8ICIvIiA8
PCB0b3RhbCA8PCAiIHRlc3RzLiAoIiA8PCBwYXNzRnJhYyA8PCAiJSkiCi0gICAgICAgICAgICAg
IDw8IHN0ZDo6ZW5kbDsKLSAgICBpZiAoc0ZhaWxzID4gMCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6
Y291dCA8PCAiRmFpbGVkOiAiIDw8IHNGYWlscyA8PCAiLyIgPDwgdG90YWwgPDwgIiB0ZXN0cy4g
KCIgPDwgZmFpbEZyYWMgPDwgIiUpIgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwot
ICAgIH0KLSAgICBpZiAoc1VuZXhwZWN0ZWRQYXNzZXMgPiAwKQotICAgIHsKLSAgICAgICAgc3Rk
Ojpjb3V0IDw8IHNVbmV4cGVjdGVkUGFzc2VzIDw8ICIgdGVzdHMgdW5leHBlY3RlZGx5IHBhc3Nl
ZC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICB9Ci19Ci0KLS8vIFRPRE8oam1hZGlsbCk6IGFkZCBkaWZm
ZXJlbnQgcGxhdGZvcm0gY29uZmlncywgb3IgYWJpbGl0eSB0byBjaG9vc2UgcGxhdGZvcm0KLSNk
ZWZpbmUgQU5HTEVfSU5TVEFOVElBVEVfREVRUF9URVNUX0NBU0UoREVRUF9URVNULCBOKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAotICAgIGNsYXNzIERFUVBfVEVTVCA6IHB1YmxpYyBkRVFQ
VGVzdDxOPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFRFU1RfUChE
RVFQX1RFU1QsIERlZmF1bHQpIHsgcnVuVGVzdCgpOyB9ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBJTlNUQU5USUFURV9U
RVNUX0NBU0VfUCgsIERFUVBfVEVTVCwgREVRUF9URVNUOjpHZXRUZXN0aW5nUmFuZ2UoKSwgICAg
ICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKGNvbnN0IHRlc3Rpbmc6OlRl
c3RQYXJhbUluZm88c2l6ZV90PiAmaW5mbykgeyAgICBcCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBERVFQX1RFU1Q6OkdldENhc2VHVGVzdE5hbWUoaW5mby5wYXJhbSk7
IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQotCi0jaWZkZWYgQU5HTEVfREVRUF9H
TEVTMl9URVNUUwotQU5HTEVfSU5TVEFOVElBVEVfREVRUF9URVNUX0NBU0UoZEVRUF9HTEVTMiwg
MCk7Ci0jZW5kaWYKLQotI2lmZGVmIEFOR0xFX0RFUVBfR0xFUzNfVEVTVFMKLUFOR0xFX0lOU1RB
TlRJQVRFX0RFUVBfVEVTVF9DQVNFKGRFUVBfR0xFUzMsIDEpOwotI2VuZGlmCi0KLSNpZmRlZiBB
TkdMRV9ERVFQX0dMRVMzMV9URVNUUwotQU5HTEVfSU5TVEFOVElBVEVfREVRUF9URVNUX0NBU0Uo
ZEVRUF9HTEVTMzEsIDIpOwotI2VuZGlmCi0KLSNpZmRlZiBBTkdMRV9ERVFQX0VHTF9URVNUUwot
QU5HTEVfSU5TVEFOVElBVEVfREVRUF9URVNUX0NBU0UoZEVRUF9FR0wsIDMpOwotI2VuZGlmCi0K
LX0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX2d0ZXN0X21haW4uY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFw
X2d0ZXN0X21haW4uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTQ4MjBhMjZi
OC4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2Rl
cXBfc3VwcG9ydC9hbmdsZV9kZXFwX2d0ZXN0X21haW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MTkgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIGFuZ2xlX2RlcXBfZ3Rlc3RfbWFpbjoKLS8vICAgRW50
cnkgcG9pbnQgZm9yIHN0YW5kYWxvbmUgZEVRUCB0ZXN0cy4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+Ci0KLSNpbmNsdWRlICJhbmdsZV9kZXFwX2xpYnRlc3Rlci5oIgotCi1pbnQgbWFpbihp
bnQgYXJnYywgY2hhciAqKmFyZ3YpCi17Ci0gICAgdGVzdGluZzo6SW5pdEdvb2dsZVRlc3QoJmFy
Z2MsIGFyZ3YpOwotICAgIGludCBydCA9IFJVTl9BTExfVEVTVFMoKTsKLSAgICBkZXFwX2xpYnRl
c3Rlcl9zaHV0ZG93bl9wbGF0Zm9ybSgpOwotICAgIHJldHVybiBydDsKLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvYW5nbGVfZGVx
cF9saWJ0ZXN0ZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1
cHBvcnQvYW5nbGVfZGVxcF9saWJ0ZXN0ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggM2U2MGY3NGZlNTEuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9saWJ0ZXN0ZXIuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDM0ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQoYykgMjAxNCBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIGFuZ2xlX2RlcXBfbGlidGVz
dGVyLmg6Ci0vLyAgIEV4cG9ydHMgZm9yIHRoZSBBTkdMRSBkRVFQIGxpYnRlc3RlciBtb2R1bGUu
Ci0KLSNpZm5kZWYgQU5HTEVfREVRUF9MSUJURVNURVJfSF8KLSNkZWZpbmUgQU5HTEVfREVRUF9M
SUJURVNURVJfSF8KLQotI2lmIGRlZmluZWQoX1dJTjMyKQotIyAgIGlmIGRlZmluZWQoQU5HTEVf
REVRUF9MSUJURVNURVJfSU1QTEVNRU5UQVRJT04pCi0jICAgICAgIGRlZmluZSBBTkdMRV9MSUJU
RVNURVJfRVhQT1JUIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQotIyAgIGVsc2UKLSMgICAgICAgZGVm
aW5lIEFOR0xFX0xJQlRFU1RFUl9FWFBPUlQgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jICAgZW5k
aWYKLSNlbGlmIGRlZmluZWQoX19HTlVDX18pCi0jICAgaWYgZGVmaW5lZChBTkdMRV9ERVFQX0xJ
QlRFU1RFUl9JTVBMRU1FTlRBVElPTikKLSMgICAgICAgZGVmaW5lIEFOR0xFX0xJQlRFU1RFUl9F
WFBPUlQgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCi0jICAgZWxzZQot
IyAgICAgICBkZWZpbmUgQU5HTEVfTElCVEVTVEVSX0VYUE9SVAotIyAgIGVuZGlmCi0jZWxzZQot
IyAgIGRlZmluZSBBTkdMRV9MSUJURVNURVJfRVhQT1JUCi0jZW5kaWYKLQotLy8gRXhwb3J0ZWQg
dG8gdGhlIHRlc3RlciBhcHAuCi1BTkdMRV9MSUJURVNURVJfRVhQT1JUIGludCBkZXFwX2xpYnRl
c3Rlcl9tYWluKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pOwotQU5HTEVfTElCVEVTVEVS
X0VYUE9SVCB2b2lkIGRlcXBfbGlidGVzdGVyX3NodXRkb3duX3BsYXRmb3JtKCk7Ci1BTkdMRV9M
SUJURVNURVJfRVhQT1JUIGJvb2wgZGVxcF9saWJ0ZXN0ZXJfcnVuKGNvbnN0IGNoYXIgKmNhc2VO
YW1lKTsKLQotI2VuZGlmIC8vIEFOR0xFX0RFUVBfTElCVEVTVEVSX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2FuZ2xlX2RlcXBf
bGlidGVzdGVyX21haW4uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2Rl
cXBfc3VwcG9ydC9hbmdsZV9kZXFwX2xpYnRlc3Rlcl9tYWluLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMWViMjRhOTJhOTAuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvYW5nbGVfZGVxcF9saWJ0ZXN0ZXJf
bWFpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDMgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdo
dCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0v
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIGRl
cXBfbGlidGVzdGVyX21haW4uY3BwOiBFbnRyeSBwb2ludCBmb3IgdGVzdGVyIERMTC4KLQotI2lu
Y2x1ZGUgPGNzdGRpbz4KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotI2luY2x1ZGUgImFuZ2xlX2Rl
cXBfbGlidGVzdGVyLmgiCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKLSNpbmNsdWRl
ICJkZU1hdGguaCIKLSNpbmNsdWRlICJkZVVuaXF1ZVB0ci5ocHAiCi0jaW5jbHVkZSAidGN1QXBw
LmhwcCIKLSNpbmNsdWRlICJ0Y3VDb21tYW5kTGluZS5ocHAiCi0jaW5jbHVkZSAidGN1RGVmcy5o
cHAiCi0jaW5jbHVkZSAidGN1UGxhdGZvcm0uaHBwIgotI2luY2x1ZGUgInRjdVJhbmRvbU9yZGVy
RXhlY3V0b3IuaCIKLSNpbmNsdWRlICJ0Y3VSZXNvdXJjZS5ocHAiCi0jaW5jbHVkZSAidGN1VGVz
dExvZy5ocHAiCi0jaW5jbHVkZSAic3lzdGVtX3V0aWxzLmgiCi0KLSNpZiAoREVfT1MgPT0gREVf
T1NfV0lOMzIpCi0jaW5jbHVkZSA8V2luZG93cy5oPgotI2VsaWYgKERFX09TID09IERFX09TX1VO
SVgpIHx8IChERV9PUyA9PSBERV9PU19PU1gpCi0jaW5jbHVkZSA8c3lzL3VuaXN0ZC5oPgotI2lu
Y2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZWxpZiAoREVfT1Mg
PT0gREVfT1NfQU5EUk9JRCkKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2VuZGlmCi0KLXRjdTo6
UGxhdGZvcm0gKmNyZWF0ZVBsYXRmb3JtKCk7Ci0KLW5hbWVzcGFjZQotewotCi10Y3U6OlBsYXRm
b3JtICpnX3BsYXRmb3JtID0gbnVsbHB0cjsKLXRjdTo6Q29tbWFuZExpbmUgKmdfY21kTGluZSA9
IG51bGxwdHI7Ci10Y3U6OkRpckFyY2hpdmUgKmdfYXJjaGl2ZSA9IG51bGxwdHI7Ci10Y3U6OlRl
c3RMb2cgKmdfbG9nID0gbnVsbHB0cjsKLXRjdTo6VGVzdENvbnRleHQgKmdfdGVzdEN0eCA9IG51
bGxwdHI7Ci10Y3U6OlRlc3RQYWNrYWdlUm9vdCAqZ19yb290ID0gbnVsbHB0cjsKLXRjdTo6UmFu
ZG9tT3JkZXJFeGVjdXRvciAqZ19leGVjdXRvciA9IG51bGxwdHI7Ci0KLWNvbnN0IGNoYXIgKmdf
ZEVRUERhdGFTZWFyY2hEaXJzW10gPSB7Ci0gICAgImRhdGEiLAotICAgICJ0aGlyZF9wYXJ0eS9k
ZXFwL2RhdGEiLAotICAgICIuLi90aGlyZF9wYXJ0eS9kZXFwL3NyYy9kYXRhIiwKLSAgICAiZGVx
cF9zdXBwb3J0L2RhdGEiLAotICAgICJ0aGlyZF9wYXJ0eS9kZXFwL3NyYy9kYXRhIiwKLSAgICAi
Li4vLi4vdGhpcmRfcGFydHkvZGVxcC9zcmMvZGF0YSIsCi0gICAgIi4uLy4uLy4uL3RoaXJkX3Bh
cnR5L2RlcXAvc3JjL2RhdGEiLAotICAgICIuLi8uLi9zZGNhcmQvY2hyb21pdW1fdGVzdHNfcm9v
dC90aGlyZF9wYXJ0eS9kZXFwL3NyYy9kYXRhIiwKLX07Ci0KLS8vIFRPRE8oam1hZGlsbCk6IHVw
c3RyZWFtIHRvIGRFUVA/Ci0jaWYgKERFX09TID09IERFX09TX1dJTjMyKQotZGVCb29sIGRlSXNE
aXIoY29uc3QgY2hhciAqZmlsZW5hbWUpCi17Ci0gICAgV0lOMzJfRklMRV9BVFRSSUJVVEVfREFU
QSBmaWxlSW5mb3JtYXRpb247Ci0KLSAgICBCT09MIHJlc3VsdCA9IEdldEZpbGVBdHRyaWJ1dGVz
RXhBKGZpbGVuYW1lLCBHZXRGaWxlRXhJbmZvU3RhbmRhcmQsICZmaWxlSW5mb3JtYXRpb24pOwot
ICAgIGlmIChyZXN1bHQpCi0gICAgewotICAgICAgICBEV09SRCBhdHRyaWJzID0gZmlsZUluZm9y
bWF0aW9uLmR3RmlsZUF0dHJpYnV0ZXM7Ci0gICAgICAgIHJldHVybiAoYXR0cmlicyAhPSBJTlZB
TElEX0ZJTEVfQVRUUklCVVRFUykgJiYgKChhdHRyaWJzICYgRklMRV9BVFRSSUJVVEVfRElSRUNU
T1JZKSA+IDApOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLSNlbGlmIChERV9PUyA9
PSBERV9PU19VTklYKSB8fCAoREVfT1MgPT0gREVfT1NfT1NYKSB8fCAoREVfT1MgPT0gREVfT1Nf
QU5EUk9JRCkKLWRlQm9vbCBkZUlzRGlyKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotewotICAgIHN0
cnVjdCBzdGF0IHN0OwotICAgIGludCByZXN1bHQgPSBzdGF0KGZpbGVuYW1lLCAmc3QpOwotICAg
IHJldHVybiByZXN1bHQgPT0gMCAmJiAoKHN0LnN0X21vZGUgJiBTX0lGRElSKSA9PSBTX0lGRElS
KTsKLX0KLSNlbHNlCi0jZXJyb3IgVE9ETyhqbWFkaWxsKTogc3VwcG9ydCBvdGhlciBwbGF0Zm9y
bXMKLSNlbmRpZgotCi1ib29sIEZpbmREYXRhRGlyKHN0ZDo6c3RyaW5nICpkYXRhRGlyT3V0KQot
ewotICAgIGZvciAoYXV0byBzZWFyY2hEaXIgOiBnX2RFUVBEYXRhU2VhcmNoRGlycykKLSAgICB7
Ci0gICAgICAgIGlmIChkZUlzRGlyKChzdGQ6OnN0cmluZyhzZWFyY2hEaXIpICsgIi9nbGVzMiIp
LmNfc3RyKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgICAqZGF0YURpck91dCA9IHNlYXJjaERp
cjsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpz
dHJpbmdzdHJlYW0gZGlyU3RyZWFtOwotICAgICAgICBkaXJTdHJlYW0gPDwgYW5nbGU6OkdldEV4
ZWN1dGFibGVEaXJlY3RvcnkoKSA8PCAiLyIgPDwgc2VhcmNoRGlyOwotICAgICAgICBzdGQ6OnN0
cmluZyBkYXRhRGlyID0gZGlyU3RyZWFtLnN0cigpOwotICAgICAgICBkaXJTdHJlYW0gPDwgIi9n
bGVzMiI7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIHNlYXJjaFBhdGggPSBkaXJTdHJlYW0uc3RyKCk7
Ci0KLSAgICAgICAgaWYgKGRlSXNEaXIoc2VhcmNoUGF0aC5jX3N0cigpKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgKmRhdGFEaXJPdXQgPSBkYXRhRGlyOwotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXN0ZDo6c3Ry
aW5nIEdldExvZ0ZpbGVOYW1lKHN0ZDo6c3RyaW5nIGRlcXBEYXRhRGlyKQotewotI2lmIChERV9P
UyA9PSBERV9PU19BTkRST0lEKQotICAgIC8vIE9uIEFuZHJvaWQgZXhlY3V0YWJsZSBkaXIgaXMg
bm90IHdyaXRhYmxlLCBzbyB1c2UgZGF0YSBkaXIgaW5zdGVhZAotICAgIHJldHVybiBkZXFwRGF0
YURpciArICIvIiArIGdfY21kTGluZS0+Z2V0TG9nRmlsZU5hbWUoKTsKLSNlbHNlCi0gICAgcmV0
dXJuIGdfY21kTGluZS0+Z2V0TG9nRmlsZU5hbWUoKTsKLSNlbmRpZgotfQotCi1ib29sIEluaXRQ
bGF0Zm9ybShpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQotewotICAgIHRyeQotICAgIHsK
LSNpZiAoREVfT1MgIT0gREVfT1NfV0lOMzIpCi0gICAgICAgIC8vIFNldCBzdGRvdXQgdG8gbGlu
ZS1idWZmZXJlZCBtb2RlICh3aWxsIGJlIGZ1bGx5IGJ1ZmZlcmVkIGJ5IGRlZmF1bHQgaWYgc3Rk
b3V0IGlzIHBpcGUpLgotICAgICAgICBzZXR2YnVmKHN0ZG91dCwgREVfTlVMTCwgX0lPTEJGLCA0
ICogMTAyNCk7Ci0jZW5kaWYKLSAgICAgICAgZ19wbGF0Zm9ybSA9IGNyZWF0ZVBsYXRmb3JtKCk7
Ci0KLSAgICAgICAgaWYgKCFkZVNldFJvdW5kaW5nTW9kZShERV9ST1VORElOR01PREVfVE9fTkVB
UkVTVCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiRmFpbGVkIHRvIHNl
dCBmbG9hdGluZyBwb2ludCByb3VuZGluZyBtb2RlLiIgPDwgc3RkOjplbmRsOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpzdHJpbmcgZGVxcERh
dGFEaXI7Ci0gICAgICAgIGlmICghRmluZERhdGFEaXIoJmRlcXBEYXRhRGlyKSkKLSAgICAgICAg
ewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJGYWlsZWQgdG8gZmluZCBkRVFQIGRhdGEgZGly
ZWN0b3J5LiIgPDwgc3RkOjplbmRsOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZ19jbWRMaW5lID0gbmV3IHRjdTo6Q29tbWFuZExpbmUoYXJnYywgYXJn
dik7Ci0gICAgICAgIGdfYXJjaGl2ZSA9IG5ldyB0Y3U6OkRpckFyY2hpdmUoZGVxcERhdGFEaXIu
Y19zdHIoKSk7Ci0gICAgICAgIGdfbG9nICAgICA9IG5ldyB0Y3U6OlRlc3RMb2coR2V0TG9nRmls
ZU5hbWUoZGVxcERhdGFEaXIpLmNfc3RyKCksIGdfY21kTGluZS0+Z2V0TG9nRmxhZ3MoKSk7Ci0g
ICAgICAgIGdfdGVzdEN0eCA9IG5ldyB0Y3U6OlRlc3RDb250ZXh0KCpnX3BsYXRmb3JtLCAqZ19h
cmNoaXZlLCAqZ19sb2csICpnX2NtZExpbmUsIERFX05VTEwpOwotICAgICAgICBnX3Jvb3QgPSBu
ZXcgdGN1OjpUZXN0UGFja2FnZVJvb3QoKmdfdGVzdEN0eCwgdGN1OjpUZXN0UGFja2FnZVJlZ2lz
dHJ5OjpnZXRTaW5nbGV0b24oKSk7Ci0gICAgICAgIGdfZXhlY3V0b3IgPSBuZXcgdGN1OjpSYW5k
b21PcmRlckV4ZWN1dG9yKCpnX3Jvb3QsICpnX3Rlc3RDdHgpOwotICAgIH0KLSAgICBjYXRjaCAo
Y29uc3Qgc3RkOjpleGNlcHRpb24mIGUpCi0gICAgewotICAgICAgICB0Y3U6OmRpZSgiJXMiLCBl
LndoYXQoKSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1
ZTsKLX0KLQotfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCi0KLS8vIEV4cG9ydGVkIHRvIHRoZSB0
ZXN0ZXIgYXBwLgotQU5HTEVfTElCVEVTVEVSX0VYUE9SVCBpbnQgZGVxcF9saWJ0ZXN0ZXJfbWFp
bihpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQotewotICAgIGlmICghSW5pdFBsYXRmb3Jt
KGFyZ2MsIGFyZ3YpKQotICAgIHsKLSAgICAgICAgdGN1OjpkaWUoIkNvdWxkIG5vdCBpbml0aWFs
aXplIHRoZSBkRVFQIHBsYXRmb3JtIik7Ci0gICAgfQotCi0gICAgdHJ5Ci0gICAgewotICAgICAg
ICBkZTo6VW5pcXVlUHRyPHRjdTo6QXBwPiBhcHAobmV3IHRjdTo6QXBwKCpnX3BsYXRmb3JtLCAq
Z19hcmNoaXZlLCAqZ19sb2csICpnX2NtZExpbmUpKTsKLQotICAgICAgICAvLyBNYWluIGxvb3Au
Ci0gICAgICAgIGZvciAoOzspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghYXBwLT5pdGVy
YXRlKCkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgY2F0
Y2ggKGNvbnN0IHN0ZDo6ZXhjZXB0aW9uICZlKQotICAgIHsKLSAgICAgICAgZGVxcF9saWJ0ZXN0
ZXJfc2h1dGRvd25fcGxhdGZvcm0oKTsKLSAgICAgICAgdGN1OjpkaWUoIiVzIiwgZS53aGF0KCkp
OwotICAgIH0KLQotICAgIGRlcXBfbGlidGVzdGVyX3NodXRkb3duX3BsYXRmb3JtKCk7Ci0gICAg
cmV0dXJuIDA7Ci19Ci0KLUFOR0xFX0xJQlRFU1RFUl9FWFBPUlQgdm9pZCBkZXFwX2xpYnRlc3Rl
cl9zaHV0ZG93bl9wbGF0Zm9ybSgpCi17Ci0gICAgZGVsZXRlIGdfZXhlY3V0b3I7Ci0gICAgZGVs
ZXRlIGdfcm9vdDsKLSAgICBkZWxldGUgZ190ZXN0Q3R4OwotICAgIGRlbGV0ZSBnX2xvZzsKLSAg
ICBkZWxldGUgZ19hcmNoaXZlOwotICAgIGRlbGV0ZSBnX2NtZExpbmU7Ci0gICAgZGVsZXRlIGdf
cGxhdGZvcm07Ci19Ci0KLUFOR0xFX0xJQlRFU1RFUl9FWFBPUlQgYm9vbCBkZXFwX2xpYnRlc3Rl
cl9ydW4oY29uc3QgY2hhciAqY2FzZU5hbWUpCi17Ci0gICAgY29uc3QgY2hhciAqZW1wdHlTdHJp
bmcgPSAiIjsKLSAgICBpZiAoZ19wbGF0Zm9ybSA9PSBudWxscHRyICYmICFJbml0UGxhdGZvcm0o
MSwgJmVtcHR5U3RyaW5nKSkKLSAgICB7Ci0gICAgICAgIHRjdTo6ZGllKCJGYWlsZWQgdG8gaW5p
dGlhbGl6ZSBwbGF0Zm9ybS4iKTsKLSAgICB9Ci0KLSAgICB0cnkKLSAgICB7Ci0gICAgICAgIC8v
IFBvbGwgcGxhdGZvcm0gZXZlbnRzCi0gICAgICAgIGNvbnN0IGJvb2wgcGxhdGZvcm1PayA9IGdf
cGxhdGZvcm0tPnByb2Nlc3NFdmVudHMoKTsKLQotICAgICAgICBpZiAocGxhdGZvcm1PaykKLSAg
ICAgICAgewotICAgICAgICAgICAgY29uc3QgdGN1OjpUZXN0U3RhdHVzICZyZXN1bHQgPSBnX2V4
ZWN1dG9yLT5leGVjdXRlKGNhc2VOYW1lKTsKLSAgICAgICAgICAgIHN3aXRjaCAocmVzdWx0Lmdl
dENvZGUoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjYXNlIFFQX1RFU1RfUkVT
VUxUX1BBU1M6Ci0gICAgICAgICAgICAgICAgY2FzZSBRUF9URVNUX1JFU1VMVF9OT1RfU1VQUE9S
VEVEOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICBj
YXNlIFFQX1RFU1RfUkVTVUxUX1FVQUxJVFlfV0FSTklORzoKLSAgICAgICAgICAgICAgICAgICAg
c3RkOjpjb3V0IDw8ICJRdWFsaXR5IHdhcm5pbmchICIgPDwgcmVzdWx0LmdldERlc2NyaXB0aW9u
KCkgPDwgc3RkOjplbmRsOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgICAgICAgICBjYXNlIFFQX1RFU1RfUkVTVUxUX0NPTVBBVElCSUxJVFlfV0FSTklORzoKLSAg
ICAgICAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJDb21wYXRpYmxpdHkgd2FybmluZyEgIiA8
PCByZXN1bHQuZ2V0RGVzY3JpcHRpb24oKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBl
bHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiQWJvcnRlZCB0ZXN0ISIg
PDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoIChjb25zdCBzdGQ6OmV4
Y2VwdGlvbiAmZSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiRXhjZXB0aW9uIHJ1bm5p
bmcgdGVzdDogIiA8PCBlLndoYXQoKSA8PCBzdGQ6OmVuZGw7Ci0gICAgfQotCi0gICAgcmV0dXJu
IGZhbHNlOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX3Rlc3RzX21haW4uY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9hbmdsZV9kZXFwX3Rlc3RzX21haW4uY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjhmMWMxY2ZlOC4uMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9hbmds
ZV9kZXFwX3Rlc3RzX21haW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotLy8K
LS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJT
RC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl
LgotLy8KLQotLy8gYW5nbGVfZGVxcF90ZXN0c19tYWluLmNwcDogRW50cnkgcG9pbnQgZm9yIEFO
R0xFJ3MgZEVRUCB0ZXN0cy4KLQotI2luY2x1ZGUgImFuZ2xlX2RlcXBfbGlidGVzdGVyLmgiCi0K
LWludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCi17Ci0gICAgcmV0dXJuIGRl
cXBfbGlidGVzdGVyX21haW4oYXJnYywgYXJndik7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBfZWdsX3Rlc3RfZXhwZWN0
YXRpb25zLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBv
cnQvZGVxcF9lZ2xfdGVzdF9leHBlY3RhdGlvbnMudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3ODlkM2E2ZmUxNi4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9kZXFwX2VnbF90ZXN0X2V4cGVjdGF0aW9ucy50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyNjAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTUgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLS8vIFRoaXMgZmlsZSBjb250
YWlucyBhIGxpc3Qgb2YgZGVmZWN0aXZlIGRFUVAgY29uZm9ybWFuY2UgdGVzdHMuIFRoZSBleHBl
Y3RlZAotLy8gZm9ybWF0IGlzOgotLy8gIHtCVUcjfSB7TU9ESUZJRVJTfSA6IHtURVNUX05BTUV9
ID0ge1BBU1MsRkFJTCxGTEFLWSxUSU1FT1VULFNLSVB9Ci0vLwotLy8gTU9ESUZJRVJTIGNhbiBi
ZSBhIGNvbWJpbmF0aW9uIG9mIHRoZSBiZWxvdyBsaXN0OgotLy8gIFdJTiBYUCBWSVNUQSBXSU43
IE1BQyBMRU9QQVJEIFNOT1dMRU9QQVJEIExJT04gTElOVVggQ0hST01FT1MgTU9VTlRBSU5MSU9O
Ci0vLyAgTUFWRVJJQ0tTCi0vLyAgTlZJRElBIEFNRCBJTlRFTAotLy8gIDB4YWJjZCAtIEdQVSBQ
Q0kgZGV2aWNlIElELiBTcGVjaWZ5aW5nIGEgUENJIGlkIHJlcXVpcmVzIGEgdmVuZG9yLgotLy8g
IERFQlVHIFJFTEVBU0UKLS8vIFRPRE8oam1hZGlsbCk6IEFkZCBBTkdMRSBSZW5kZXJlciBzZWxl
Y3Rpb24gbW9kaWZpZXJzCi0vLwotLy8gVEVTVF9OQU1FIGNhbiBiZSBhIHNwZWNpZmljIHRlc3Qg
bmFtZSwgb3IgaGF2ZSBhICcqJyBpbiB0aGUgZW5kLCB3aGljaAotLy8gaW5kaWNhdGVzIGEgcHJl
Zml4IG1hdGNoaW5nLgotLy8KLS8vIEV4YW1wbGVzOgotLy8gIDkxNTMwIE1BQyBXSU4gTElOVVgg
OiBjb250ZXh0X2xvc3RfcmVzdG9yZWQgPSBUSU1FT1VUCi0vLyAgOTE1MzMgV0lOIDogZ2xfbWlu
X3VuaWZvcm1zID0gRkFJTAotLy8gIDkxNTMxIE1BQyBXSU4gTElOVVggOiBjb25mb3JtYW5jZV9t
b3JlXyogPSBTS0lQCi0vLyAgOTE1MzIgTUFDIE5WSURJQSAweDA2NDAgOiB0ZXhfaW1hZ2VfYW5k
X3N1Yl9pbWFnZV8yZF93aXRoX3ZpZGVvID0gUEFTUyBGQUlMCi0KLS8vIEFOR0xFIGRvZXMgbm90
IHlldCBzdXBwb3J0IG11bHRpdGhyZWFkaW5nCi0xMzQwIFdJTiBNQUMgTElOVVggOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLnNoYXJpbmcuZ2xlczIubXVsdGl0aHJlYWQuKiA9IFNLSVAKLTEzNDAgV0lO
IE1BQyBMSU5VWCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubXVsdGl0aHJlYWQuKiA9IFNLSVAKLTEz
NDAgV0lOIE1BQyBMSU5VWCA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLm11bHRpX3RocmVh
ZC4qID0gU0tJUAotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vICBUZW1wcm9yeSBl
bnRyaWVzOiB0aGV5IHNob3VsZCBiZSByZW1vdmVkIG9uY2UgdGhlIGJ1Z3MgYXJlIGZpeGVkLgot
Ly8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLS8vIFRPRE8oam1hZGlsbCk6IFRyaWFnZSB0
aGVzZSBpbnRvIHBlcm1hbmFuZW50IGFuZCB0ZW1wb3JhcnkgZmFpbHVyZXMuCi0xMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUud2luZG93LnJnYjU2NV9u
b19kZXB0aF9ub19zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFs
LnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLndpbmRvdy5yZ2I1NjVfZGVwdGhfbm9fc3RlbmNpbCA9IFNL
SVAKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS53
aW5kb3cucmdiNTY1X2RlcHRoX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUud2luZG93LnJnYjg4OF9ub19kZXB0aF9ub19z
dGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZh
Y2Uuc2ltcGxlLndpbmRvdy5yZ2I4ODhfZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS53aW5kb3cucmdiODg4
X2RlcHRoX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVl
cnlfc3VyZmFjZS5zaW1wbGUud2luZG93LnJnYmE0NDQ0X25vX2RlcHRoX25vX3N0ZW5jaWwgPSBT
S0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUu
d2luZG93LnJnYmE0NDQ0X2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAt
RUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUud2luZG93LnJnYmE0NDQ0X2RlcHRo
X3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3Vy
ZmFjZS5zaW1wbGUud2luZG93LnJnYmE1NTUxX25vX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCi0x
MzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUud2luZG93
LnJnYmE1NTUxX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUud2luZG93LnJnYmE1NTUxX2RlcHRoX3N0ZW5j
aWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5z
aW1wbGUud2luZG93LnJnYmE4ODg4X25vX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJ
TiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUud2luZG93LnJnYmE4
ODg4X2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9u
YWwucXVlcnlfc3VyZmFjZS5zaW1wbGUud2luZG93LnJnYmE4ODg4X2RlcHRoX3N0ZW5jaWwgPSBT
S0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUu
cGJ1ZmZlci5yZ2I1NjVfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5wYnVmZmVyLnJnYjU2NV9kZXB0
aF9ub19zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5
X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdiNTY1X2RlcHRoX3N0ZW5jaWwgPSBTS0lQCi0xMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUucGJ1ZmZlci5y
Z2I4ODhfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVu
Y3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5wYnVmZmVyLnJnYjg4OF9kZXB0aF9ub19zdGVu
Y2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uu
c2ltcGxlLnBidWZmZXIucmdiODg4X2RlcHRoX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2JhNDQ0NF9u
b19kZXB0aF9ub19zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFs
LnF1ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdiYTQ0NDRfZGVwdGhfbm9fc3RlbmNpbCA9
IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBs
ZS5wYnVmZmVyLnJnYmE0NDQ0X2RlcHRoX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAt
RUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2JhNTU1MV9ub19k
ZXB0aF9ub19zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1
ZXJ5X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdiYTU1NTFfZGVwdGhfbm9fc3RlbmNpbCA9IFNL
SVAKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5w
YnVmZmVyLnJnYmE1NTUxX2RlcHRoX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zaW1wbGUucGJ1ZmZlci5yZ2JhODg4OF9ub19kZXB0
aF9ub19zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5
X3N1cmZhY2Uuc2ltcGxlLnBidWZmZXIucmdiYTg4ODhfZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAK
LTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNpbXBsZS5wYnVm
ZmVyLnJnYmE4ODg4X2RlcHRoX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLndpbmRvdy5yZ2I1NjVfbm9fZGVw
dGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVy
eV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUud2luZG93LnJnYjU2NV9kZXB0aF9ub19zdGVuY2lsID0g
U0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0
dHJpYnV0ZS53aW5kb3cucmdiNTY1X2RlcHRoX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLndpbmRvdy5yZ2I4
ODhfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUud2luZG93LnJnYjg4OF9kZXB0aF9ub19z
dGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZh
Y2Uuc2V0X2F0dHJpYnV0ZS53aW5kb3cucmdiODg4X2RlcHRoX3N0ZW5jaWwgPSBTS0lQCi0xMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLndp
bmRvdy5yZ2JhNDQ0NF9ub19kZXB0aF9ub19zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS53aW5kb3cucmdiYTQ0
NDRfZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUud2luZG93LnJnYmE0NDQ0X2RlcHRoX3N0ZW5j
aWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5z
ZXRfYXR0cmlidXRlLndpbmRvdy5yZ2JhNTU1MV9ub19kZXB0aF9ub19zdGVuY2lsID0gU0tJUAot
MTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0
ZS53aW5kb3cucmdiYTU1NTFfZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUud2luZG93LnJnYmE1
NTUxX2RlcHRoX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
cXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLndpbmRvdy5yZ2JhODg4OF9ub19kZXB0aF9ub19z
dGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZh
Y2Uuc2V0X2F0dHJpYnV0ZS53aW5kb3cucmdiYTg4ODhfZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAK
LTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1
dGUud2luZG93LnJnYmE4ODg4X2RlcHRoX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAt
RUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLnBidWZmZXIucmdiNTY1
X25vX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9u
YWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLnBidWZmZXIucmdiNTY1X2RlcHRoX25vX3N0
ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFj
ZS5zZXRfYXR0cmlidXRlLnBidWZmZXIucmdiNTY1X2RlcHRoX3N0ZW5jaWwgPSBTS0lQCi0xMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLnBi
dWZmZXIucmdiODg4X25vX2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAt
RUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLnBidWZmZXIucmdiODg4
X2RlcHRoX25vX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
cXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLnBidWZmZXIucmdiODg4X2RlcHRoX3N0ZW5jaWwg
PSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRf
YXR0cmlidXRlLnBidWZmZXIucmdiYTQ0NDRfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUu
cGJ1ZmZlci5yZ2JhNDQ0NF9kZXB0aF9ub19zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYmE0
NDQ0X2RlcHRoX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
cXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLnBidWZmZXIucmdiYTU1NTFfbm9fZGVwdGhfbm9f
c3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5xdWVyeV9zdXJm
YWNlLnNldF9hdHRyaWJ1dGUucGJ1ZmZlci5yZ2JhNTU1MV9kZXB0aF9ub19zdGVuY2lsID0gU0tJ
UAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5X3N1cmZhY2Uuc2V0X2F0dHJp
YnV0ZS5wYnVmZmVyLnJnYmE1NTUxX2RlcHRoX3N0ZW5jaWwgPSBTS0lQCi0xMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfc3VyZmFjZS5zZXRfYXR0cmlidXRlLnBidWZmZXIucmdi
YTg4ODhfbm9fZGVwdGhfbm9fc3RlbmNpbCA9IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVu
Y3Rpb25hbC5xdWVyeV9zdXJmYWNlLnNldF9hdHRyaWJ1dGUucGJ1ZmZlci5yZ2JhODg4OF9kZXB0
aF9ub19zdGVuY2lsID0gU0tJUAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnF1ZXJ5
X3N1cmZhY2Uuc2V0X2F0dHJpYnV0ZS5wYnVmZmVyLnJnYmE4ODg4X2RlcHRoX3N0ZW5jaWwgPSBT
S0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucXVlcnlfY29uZmlnLmdldF9jb25m
aWdzLmdldF9jb25maWdzX2JvdW5kcyA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS5idWZmZXJfc2l6ZSA9IEZB
SUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5z
ZWxlY3Rpb25fb25seS5yZWRfc2l6ZSA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS5ncmVlbl9zaXplID0gRkFJ
TAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNl
bGVjdGlvbl9vbmx5LmJsdWVfc2l6ZSA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25seS5sdW1pbmFuY2Vfc2l6ZSA9
IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBs
ZS5zZWxlY3Rpb25fb25seS5hbHBoYV9zaXplID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5m
dW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5LmFscGhhX21hc2tf
c2l6ZSA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmln
LnNpbXBsZS5zZWxlY3Rpb25fb25seS5iaW5kX3RvX3RleHR1cmVfcmdiID0gRkFJTAotMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9v
bmx5LmJpbmRfdG9fdGV4dHVyZV9yZ2JhID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5LmNvbG9yX2J1ZmZlcl90
eXBlID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcu
c2ltcGxlLnNlbGVjdGlvbl9vbmx5LmNvbmZpZ19jYXZlYXQgPSBGQUlMCi0xMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkuY29u
ZmlnX2lkID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25m
aWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5LmRlcHRoX3NpemUgPSBGQUlMCi0xMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkubGV2
ZWwgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5z
aW1wbGUuc2VsZWN0aW9uX29ubHkubWF4X3N3YXBfaW50ZXJ2YWwgPSBGQUlMCi0xMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHku
bWluX3N3YXBfaW50ZXJ2YWwgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
Y2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkubmF0aXZlX3JlbmRlcmFibGUgPSBG
QUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUu
c2VsZWN0aW9uX29ubHkubmF0aXZlX3Zpc3VhbF90eXBlID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5LnNhbXBs
ZV9idWZmZXJzID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9j
b25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5LnNhbXBsZXMgPSBGQUlMCi0xMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkuc3Rl
bmNpbF9zaXplID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9j
b25maWcuc2ltcGxlLnNlbGVjdGlvbl9vbmx5LnN1cmZhY2VfdHlwZSA9IEZBSUwKLTEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fb25s
eS50cmFuc3BhcmVudF9yZWRfdmFsdWUgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkudHJhbnNwYXJlbnRfZ3Jl
ZW5fdmFsdWUgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2Nv
bmZpZy5zaW1wbGUuc2VsZWN0aW9uX29ubHkudHJhbnNwYXJlbnRfYmx1ZV92YWx1ZSA9IEZBSUwK
LTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxl
Y3Rpb25fYW5kX3NvcnQuYnVmZmVyX3NpemUgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0LnJlZF9zaXpl
ID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2lt
cGxlLnNlbGVjdGlvbl9hbmRfc29ydC5ncmVlbl9zaXplID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQ
LUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC5i
bHVlX3NpemUgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2Nv
bmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0Lmx1bWluYW5jZV9zaXplID0gRkFJTAotMTM0
MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlv
bl9hbmRfc29ydC5hbHBoYV9zaXplID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC5hbHBoYV9tYXNrX3Np
emUgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5z
aW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0LmJpbmRfdG9fdGV4dHVyZV9yZ2IgPSBGQUlMCi0xMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9u
X2FuZF9zb3J0LmJpbmRfdG9fdGV4dHVyZV9yZ2JhID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC5jb2xv
cl9idWZmZXJfdHlwZSA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9v
c2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQuY29uZmlnX2NhdmVhdCA9IEZBSUwK
LTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxl
Y3Rpb25fYW5kX3NvcnQuY29uZmlnX2lkID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC5kZXB0aF9zaXpl
ID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2lt
cGxlLnNlbGVjdGlvbl9hbmRfc29ydC5sZXZlbCA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQubWF4X3N3
YXBfaW50ZXJ2YWwgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3Nl
X2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0Lm1pbl9zd2FwX2ludGVydmFsID0gRkFJ
TAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25maWcuc2ltcGxlLnNl
bGVjdGlvbl9hbmRfc29ydC5uYXRpdmVfcmVuZGVyYWJsZSA9IEZBSUwKLTEzNDAgV0lOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQu
bmF0aXZlX3Zpc3VhbF90eXBlID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFs
LmNob29zZV9jb25maWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC5zYW1wbGVfYnVmZmVycyA9
IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBs
ZS5zZWxlY3Rpb25fYW5kX3NvcnQuc2FtcGxlcyA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQuc3RlbmNp
bF9zaXplID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmNob29zZV9jb25m
aWcuc2ltcGxlLnNlbGVjdGlvbl9hbmRfc29ydC5zdXJmYWNlX3R5cGUgPSBGQUlMCi0xMzQwIFdJ
TiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2Fu
ZF9zb3J0LnRyYW5zcGFyZW50X3JlZF92YWx1ZSA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnNpbXBsZS5zZWxlY3Rpb25fYW5kX3NvcnQudHJhbnNw
YXJlbnRfZ3JlZW5fdmFsdWUgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
Y2hvb3NlX2NvbmZpZy5zaW1wbGUuc2VsZWN0aW9uX2FuZF9zb3J0LnRyYW5zcGFyZW50X2JsdWVf
dmFsdWUgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2NvbmZp
Zy5yYW5kb20uY29sb3Jfc2l6ZXMgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9u
YWwuY2hvb3NlX2NvbmZpZy5yYW5kb20uY29sb3JfZGVwdGhfc3RlbmNpbF9zaXplcyA9IEZBSUwK
LTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5jaG9vc2VfY29uZmlnLnJhbmRvbS5idWZm
ZXJfc2l6ZXMgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuY2hvb3NlX2Nv
bmZpZy5yYW5kb20uc3VyZmFjZV90eXBlID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLmNob29zZV9jb25maWcucmFuZG9tLnNhbXBsZV9idWZmZXJzID0gRkFJTAotMTM0MCBX
SU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLnJlbmRlci5zaW5nbGVfY29udGV4dC5nbGVzMi5yZ2Jh
NTU1MV93aW5kb3cgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVy
LnNpbmdsZV9jb250ZXh0LmdsZXMyLnJnYmE1NTUxX3BidWZmZXIgPSBGQUlMCi0xMzQwIFdJTiA6
IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLnNpbmdsZV9jb250ZXh0LmdsZXMzLnJnYmE1NTUx
X3dpbmRvdyA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIuc2lu
Z2xlX2NvbnRleHQuZ2xlczMucmdiYTU1NTFfcGJ1ZmZlciA9IEZBSUwKLTEzNDAgV0lOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5yZW5kZXIubXVsdGlfY29udGV4dC5nbGVzMi5yZ2JhNTU1MV93aW5k
b3cgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLm11bHRpX2Nv
bnRleHQuZ2xlczIucmdiYTU1NTFfcGJ1ZmZlciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5yZW5kZXIubXVsdGlfY29udGV4dC5nbGVzMy5yZ2JhNTU1MV93aW5kb3cgPSBG
QUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLm11bHRpX2NvbnRleHQu
Z2xlczMucmdiYTU1NTFfcGJ1ZmZlciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rp
b25hbC5yZW5kZXIubXVsdGlfY29udGV4dC5nbGVzMl9nbGVzMy5yZ2JhNTU1MV93aW5kb3cgPSBG
QUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVuZGVyLm11bHRpX2NvbnRleHQu
Z2xlczJfZ2xlczMucmdiYTU1NTFfcGJ1ZmZlciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5pbWFnZS5tb2RpZnkudGV4X3JnYjhfdGV4X3N1YmltYWdlX3JnYjU2NSA9IEZB
SUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5pbWFnZS5tb2RpZnkudGV4X3JnYjU2
NV90ZXhfc3ViaW1hZ2VfcmdiOCA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5pbWFnZS5tb2RpZnkudGV4X3JnYmE4X3RleF9zdWJpbWFnZV9yZ2JhNV9hMSA9IEZBSUwKLTEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5pbWFnZS5tb2RpZnkudGV4X3JnYmE4X3RleF9z
dWJpbWFnZV9yZ2JhNCA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5pbWFn
ZS5tb2RpZnkudGV4X3JnYmE1X2ExX3RleF9zdWJpbWFnZV9yZ2JhOCA9IEZBSUwKLTEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5pbWFnZS5tb2RpZnkudGV4X3JnYmE1X2ExX3RleF9zdWJp
bWFnZV9yZ2JhNCA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5pbWFnZS5t
b2RpZnkudGV4X3JnYmE0X3RleF9zdWJpbWFnZV9yZ2JhOCA9IEZBSUwKLTEzNDAgV0lOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5pbWFnZS5tb2RpZnkudGV4X3JnYmE0X3RleF9zdWJpbWFnZV9yZ2Jh
NV9hMSA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5pbWFnZS5tb2RpZnku
cmVuZGVyYnVmZmVyX3JnYmE0X3RleF9zdWJpbWFnZV9yZ2JhOCA9IEZBSUwKLTEzNDAgV0lOIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5pbWFnZS5tb2RpZnkucmVuZGVyYnVmZmVyX3JnYmE0X3RleF9z
dWJpbWFnZV9yZ2JhNV9hMSA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5p
bWFnZS5tb2RpZnkucmVuZGVyYnVmZmVyX3JnYjVfYTFfdGV4X3N1YmltYWdlX3JnYmE4ID0gRkFJ
TAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLmltYWdlLm1vZGlmeS5yZW5kZXJidWZm
ZXJfcmdiNV9hMV90ZXhfc3ViaW1hZ2VfcmdiYTQgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdM
LmZ1bmN0aW9uYWwuaW1hZ2UubW9kaWZ5LnJlbmRlcmJ1ZmZlcl9yZ2I1NjVfdGV4X3N1YmltYWdl
X3JnYjggPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmVnYXRpdmVfYXBp
LmNob29zZV9jb25maWcgPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmVn
YXRpdmVfYXBpLmdldF9kaXNwbGF5ID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlv
bmFsLm5lZ2F0aXZlX2FwaS5zdXJmYWNlX2F0dHJpYiA9IFNLSVAKLTEzNDAgV0lOIDogZEVRUC1F
R0wuZnVuY3Rpb25hbC5uZWdhdGl2ZV9hcGkuc3dhcF9pbnRlcnZhbCA9IEZBSUwKLTEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5zd2FwX2J1ZmZlcnMucmdiNTY1X25vX2RlcHRoX25vX3N0
ZW5jaWwgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJz
LnJnYjU2NV9kZXB0aF9ub19zdGVuY2lsID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLnN3YXBfYnVmZmVycy5yZ2I1NjVfZGVwdGhfc3RlbmNpbCA9IEZBSUwKLTEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5zd2FwX2J1ZmZlcnMucmdiODg4X25vX2RlcHRoX25vX3N0
ZW5jaWwgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwuc3dhcF9idWZmZXJz
LnJnYjg4OF9kZXB0aF9ub19zdGVuY2lsID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLnN3YXBfYnVmZmVycy5yZ2I4ODhfZGVwdGhfc3RlbmNpbCA9IEZBSUwKLTEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5zd2FwX2J1ZmZlcnMucmdiYTQ0NDRfbm9fZGVwdGhfbm9f
c3RlbmNpbCA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5zd2FwX2J1ZmZl
cnMucmdiYTQ0NDRfZGVwdGhfbm9fc3RlbmNpbCA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5zd2FwX2J1ZmZlcnMucmdiYTQ0NDRfZGVwdGhfc3RlbmNpbCA9IEZBSUwKLTEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5zd2FwX2J1ZmZlcnMucmdiYTU1NTFfbm9fZGVw
dGhfbm9fc3RlbmNpbCA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5zd2Fw
X2J1ZmZlcnMucmdiYTU1NTFfZGVwdGhfbm9fc3RlbmNpbCA9IEZBSUwKLTEzNDAgV0lOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5zd2FwX2J1ZmZlcnMucmdiYTU1NTFfZGVwdGhfc3RlbmNpbCA9IEZB
SUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5zd2FwX2J1ZmZlcnMucmdiYTg4ODhf
bm9fZGVwdGhfbm9fc3RlbmNpbCA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25h
bC5zd2FwX2J1ZmZlcnMucmdiYTg4ODhfZGVwdGhfbm9fc3RlbmNpbCA9IEZBSUwKLTEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5zd2FwX2J1ZmZlcnMucmdiYTg4ODhfZGVwdGhfc3RlbmNp
bCA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFw
cGluZy5uYXRpdmVfd2luZG93LnJnYjU2NV9ub19kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJ
TAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5h
dGl2ZV93aW5kb3cucmdiNTY1X25vX2RlcHRoX25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAotMTM0
MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93
aW5kb3cucmdiNTY1X2RlcHRoX25vX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I1
NjVfZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I1NjVfZGVwdGhf
c3RlbmNpbF9jbGVhciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRp
dmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYjU2NV9kZXB0aF9zdGVuY2lsX3JlbmRl
ciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFw
cGluZy5uYXRpdmVfd2luZG93LnJnYjg4OF9ub19kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJ
TAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5h
dGl2ZV93aW5kb3cucmdiODg4X25vX2RlcHRoX25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAotMTM0
MCBXSU4gOiBkRVFQLUVHTC5mdW5jdGlvbmFsLm5hdGl2ZV9jb2xvcl9tYXBwaW5nLm5hdGl2ZV93
aW5kb3cucmdiODg4X2RlcHRoX25vX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I4
ODhfZGVwdGhfbm9fc3RlbmNpbF9yZW5kZXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I4ODhfZGVwdGhf
c3RlbmNpbF9jbGVhciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRp
dmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYjg4OF9kZXB0aF9zdGVuY2lsX3JlbmRl
ciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFw
cGluZy5uYXRpdmVfd2luZG93LnJnYmE0NDQ0X25vX2RlcHRoX25vX3N0ZW5jaWxfY2xlYXIgPSBG
QUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcu
bmF0aXZlX3dpbmRvdy5yZ2JhNDQ0NF9ub19kZXB0aF9ub19zdGVuY2lsX3JlbmRlciA9IEZBSUwK
LTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRp
dmVfd2luZG93LnJnYmE0NDQ0X2RlcHRoX25vX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJ
TiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRv
dy5yZ2JhNDQ0NF9kZXB0aF9ub19zdGVuY2lsX3JlbmRlciA9IEZBSUwKLTEzNDAgV0lOIDogZEVR
UC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYmE0
NDQ0X2RlcHRoX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0
aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNDQ0NF9kZXB0aF9z
dGVuY2lsX3JlbmRlciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRp
dmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYmE1NTUxX25vX2RlcHRoX25vX3N0ZW5j
aWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nv
bG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNTU1MV9ub19kZXB0aF9ub19zdGVuY2lsX3Jl
bmRlciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3Jf
bWFwcGluZy5uYXRpdmVfd2luZG93LnJnYmE1NTUxX2RlcHRoX25vX3N0ZW5jaWxfY2xlYXIgPSBG
QUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcu
bmF0aXZlX3dpbmRvdy5yZ2JhNTU1MV9kZXB0aF9ub19zdGVuY2lsX3JlbmRlciA9IEZBSUwKLTEz
NDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVf
d2luZG93LnJnYmE1NTUxX2RlcHRoX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRF
UVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2Jh
NTU1MV9kZXB0aF9zdGVuY2lsX3JlbmRlciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVu
Y3Rpb25hbC5uYXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYmE4ODg4X25vX2Rl
cHRoX25vX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9u
YWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhODg4OF9ub19kZXB0aF9u
b19zdGVuY2lsX3JlbmRlciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5u
YXRpdmVfY29sb3JfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYmE4ODg4X2RlcHRoX25vX3N0ZW5j
aWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nv
bG9yX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhODg4OF9kZXB0aF9ub19zdGVuY2lsX3JlbmRl
ciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29sb3JfbWFw
cGluZy5uYXRpdmVfd2luZG93LnJnYmE4ODg4X2RlcHRoX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCi0x
MzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2NvbG9yX21hcHBpbmcubmF0aXZl
X3dpbmRvdy5yZ2JhODg4OF9kZXB0aF9zdGVuY2lsX3JlbmRlciA9IEZBSUwKLTEzNDAgV0lOIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJn
YjU2NV9ub19kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiNTY1X25v
X2RlcHRoX25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiNTY1X2RlcHRoX25v
X3N0ZW5jaWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0
aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I1NjVfZGVwdGhfbm9fc3RlbmNpbF9y
ZW5kZXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3Jk
X21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I1NjVfZGVwdGhfc3RlbmNpbF9jbGVhciA9IEZBSUwK
LTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRp
dmVfd2luZG93LnJnYjU2NV9kZXB0aF9zdGVuY2lsX3JlbmRlciA9IEZBSUwKLTEzNDAgV0lOIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJn
Yjg4OF9ub19kZXB0aF9ub19zdGVuY2lsX2NsZWFyID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVH
TC5mdW5jdGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiODg4X25v
X2RlcHRoX25vX3N0ZW5jaWxfcmVuZGVyID0gRkFJTAotMTM0MCBXSU4gOiBkRVFQLUVHTC5mdW5j
dGlvbmFsLm5hdGl2ZV9jb29yZF9tYXBwaW5nLm5hdGl2ZV93aW5kb3cucmdiODg4X2RlcHRoX25v
X3N0ZW5jaWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0
aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I4ODhfZGVwdGhfbm9fc3RlbmNpbF9y
ZW5kZXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3Jk
X21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2I4ODhfZGVwdGhfc3RlbmNpbF9jbGVhciA9IEZBSUwK
LTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRp
dmVfd2luZG93LnJnYjg4OF9kZXB0aF9zdGVuY2lsX3JlbmRlciA9IEZBSUwKLTEzNDAgV0lOIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJn
YmE0NDQ0X25vX2RlcHRoX25vX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAt
RUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNDQ0
NF9ub19kZXB0aF9ub19zdGVuY2lsX3JlbmRlciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wu
ZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYmE0NDQ0X2Rl
cHRoX25vX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9u
YWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNDQ0NF9kZXB0aF9ub19z
dGVuY2lsX3JlbmRlciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRp
dmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYmE0NDQ0X2RlcHRoX3N0ZW5jaWxfY2xl
YXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21h
cHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNDQ0NF9kZXB0aF9zdGVuY2lsX3JlbmRlciA9IEZBSUwK
LTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRp
dmVfd2luZG93LnJnYmE1NTUxX25vX2RlcHRoX25vX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCi0xMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dp
bmRvdy5yZ2JhNTU1MV9ub19kZXB0aF9ub19zdGVuY2lsX3JlbmRlciA9IEZBSUwKLTEzNDAgV0lO
IDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93
LnJnYmE1NTUxX2RlcHRoX25vX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAt
RUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNTU1
MV9kZXB0aF9ub19zdGVuY2lsX3JlbmRlciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVu
Y3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJnYmE1NTUxX2RlcHRo
X3N0ZW5jaWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0
aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhNTU1MV9kZXB0aF9zdGVuY2lsX3Jl
bmRlciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRf
bWFwcGluZy5uYXRpdmVfd2luZG93LnJnYmE4ODg4X25vX2RlcHRoX25vX3N0ZW5jaWxfY2xlYXIg
PSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBp
bmcubmF0aXZlX3dpbmRvdy5yZ2JhODg4OF9ub19kZXB0aF9ub19zdGVuY2lsX3JlbmRlciA9IEZB
SUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5u
YXRpdmVfd2luZG93LnJnYmE4ODg4X2RlcHRoX25vX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCi0xMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dp
bmRvdy5yZ2JhODg4OF9kZXB0aF9ub19zdGVuY2lsX3JlbmRlciA9IEZBSUwKLTEzNDAgV0lOIDog
ZEVRUC1FR0wuZnVuY3Rpb25hbC5uYXRpdmVfY29vcmRfbWFwcGluZy5uYXRpdmVfd2luZG93LnJn
YmE4ODg4X2RlcHRoX3N0ZW5jaWxfY2xlYXIgPSBGQUlMCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1
bmN0aW9uYWwubmF0aXZlX2Nvb3JkX21hcHBpbmcubmF0aXZlX3dpbmRvdy5yZ2JhODg4OF9kZXB0
aF9zdGVuY2lsX3JlbmRlciA9IEZBSUwKLTEzNDAgV0lOIDogZEVRUC1FR0wuZnVuY3Rpb25hbC5n
ZXRfcHJvY19hZGRyZXNzLmV4dGVuc2lvbi5lZ2xfZXh0X3BsYXRmb3JtX2Jhc2UgPSBGQUlMCi0x
MzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucHJlc2VydmVfc3dhcC5wcmVzZXJ2ZS5ub19y
ZWFkX2JlZm9yZV9zd2FwLiogPSBTS0lQCi0xMzQwIFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwu
cHJlc2VydmVfc3dhcC5wcmVzZXJ2ZS5yZWFkX2JlZm9yZV9zd2FwLiogPSBTS0lQCi0xMzQwIFdJ
TiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVzaXplLmJhY2tfYnVmZmVyLiogPSBTS0lQCi0xMzQw
IFdJTiA6IGRFUVAtRUdMLmZ1bmN0aW9uYWwucmVzaXplLnBpeGVsX2RlbnNpdHkuKiA9IFNLSVAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBv
cnQvZGVxcF9nbGVzMl90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBfZ2xlczJfdGVzdF9leHBlY3RhdGlvbnMu
dHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjg4ZjdjNmQ0MC4uMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9k
ZXFwX2dsZXMyX3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI0NCAr
MCwwIEBACi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KLQotLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGEgbGlzdCBvZiBkZWZlY3RpdmUgZEVR
UCBjb25mb3JtYW5jZSB0ZXN0cy4gVGhlIGV4cGVjdGVkCi0vLyBmb3JtYXQgaXM6Ci0vLyAge0JV
RyN9IHtNT0RJRklFUlN9IDoge1RFU1RfTkFNRX0gPSB7UEFTUyxGQUlMLEZMQUtZLFRJTUVPVVQs
U0tJUH0KLS8vCi0vLyBNT0RJRklFUlMgY2FuIGJlIGEgY29tYmluYXRpb24gb2YgdGhlIGJlbG93
IGxpc3Q6Ci0vLyAgV0lOIFhQIFZJU1RBIFdJTjcgTUFDIExFT1BBUkQgU05PV0xFT1BBUkQgTElP
TiBMSU5VWCBDSFJPTUVPUyBNT1VOVEFJTkxJT04KLS8vICBNQVZFUklDS1MKLS8vICBOVklESUEg
QU1EIElOVEVMCi0vLyAgMHhhYmNkIC0gR1BVIFBDSSBkZXZpY2UgSUQuIFNwZWNpZnlpbmcgYSBQ
Q0kgaWQgcmVxdWlyZXMgYSB2ZW5kb3IuCi0vLyAgREVCVUcgUkVMRUFTRQotLy8gVE9ETyhqbWFk
aWxsKTogQWRkIEFOR0xFIFJlbmRlcmVyIHNlbGVjdGlvbiBtb2RpZmllcnMKLS8vCi0vLyBURVNU
X05BTUUgY2FuIGJlIGEgc3BlY2lmaWMgdGVzdCBuYW1lLCBvciBoYXZlIGEgJyonIGluIHRoZSBl
bmQsIHdoaWNoCi0vLyBpbmRpY2F0ZXMgYSBwcmVmaXggbWF0Y2hpbmcuCi0vLwotLy8gRXhhbXBs
ZXM6Ci0vLyAgOTE1MzAgTUFDIFdJTiBMSU5VWCA6IGNvbnRleHRfbG9zdF9yZXN0b3JlZCA9IFRJ
TUVPVVQKLS8vICA5MTUzMyBXSU4gOiBnbF9taW5fdW5pZm9ybXMgPSBGQUlMCi0vLyAgOTE1MzEg
TUFDIFdJTiBMSU5VWCA6IGNvbmZvcm1hbmNlX21vcmVfKiA9IFNLSVAKLS8vICA5MTUzMiBNQUMg
TlZJRElBIDB4MDY0MCA6IHRleF9pbWFnZV9hbmRfc3ViX2ltYWdlXzJkX3dpdGhfdmlkZW8gPSBQ
QVNTIEZBSUwKLQotLy8gVE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCB3aHkgdGhlc2UgZmFpbCBv
biB0aGUgYm90cywgYnV0IG5vdCBsb2NhbGx5LgotMTAxOCBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLmhpZ2hwLmxvb3BfMiA9IEZBSUwKLTEwMTggV0lOIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5tZWRpdW1wLmxvb3BfMiA9
IEZBSUwKLQotLy8gU2tpcCB0aGVzZSB0ZXN0cyBkdWUgdG8gdGltZW91dHMKLTEwMzQgV0lOIExJ
TlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mbHVzaF9maW5pc2guKiA9IFNLSVAKLQot
Ly8gRG9uJ3QgcnVuIHRoZXNlIHRlc3RzIGZvciBmYXN0ZXIgdHVybm92ZXIKLTk5OCBXSU4gTElO
VVggTUFDIDogZEVRUC1HTEVTMi5wZXJmb3JtYW5jZS4qID0gU0tJUAotOTk4IFdJTiBMSU5VWCBN
QUMgOiBkRVFQLUdMRVMyLnN0cmVzcy4qID0gU0tJUAotCi0vLyBUZXN0cyB0aGF0IHdlIGZhaWwg
YmVjYXVzZSB0aGV5J3JlIG5vdCBpbiBsaW5lIHdpdGggdGhlIFdlYkdMIHNwZWMKLTEzMzUgV0lO
IExJTlVYIE1BQyBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMucHJlcHJv
Y2Vzc29yLmNvbmRpdGlvbmFsX2luY2x1c2lvbi5iYXNpY18yKiA9IEZBSUwKLQotLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KLS8vCi0vLyAgVGVtcG9yYXJ5IGVudHJpZXM6IHRoZXkgc2hvdWxkIGJl
IHJlbW92ZWQgb25jZSB0aGUgYnVncyBhcmUgZml4ZWQuCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KLQotLy8gV2luZG93cyBvbmx5IGZhaWx1cmVzCi0KLS8vIFRoZXNlIHRlc3RzIGNyYXNo
IGZvciB1bmtub3duIHJlYXNvbiB1bmRlciBhIG5ld2VyIEQzRENvbXBpbGVyXzQ3LmRsbAotLy8g
VE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCBpZiB3ZSBjYW4gc29sdmUgdGhlc2UgY3Jhc2hlcwot
MTI1MiBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5yYW5kb20udHJpZ29ub21l
dHJpYy52ZXJ0ZXguNjMgPSBTS0lQCi0xMjUyIFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5z
aGFkZXJzLnJhbmRvbS50cmlnb25vbWV0cmljLmZyYWdtZW50LjYzID0gU0tJUAotCi0vLyBUT0RP
KGptYWRpbGwpOiB0cmlhZ2UgdGhlc2UgaW50byB0ZW1wb3JhcnkgYW5kIHBlcm1hbmVudCBzdXBw
cmVzc2lvbnMKLQotMTAyNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLnJlbmRlci5j
b2xvcl9jbGVhci5yYm9fcmdiNV9hMSA9IEZBSUwKLTEwMjcgV0lOIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLmZiby5yZW5kZXIuY29sb3JfY2xlYXIucmJvX3JnYjVfYTFfc3RlbmNpbF9pbmRleDgg
PSBGQUlMCi0xMDI3IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8ucmVuZGVyLmNvbG9y
X2NsZWFyLnJib19yZ2I1X2ExX2RlcHRoX2NvbXBvbmVudDE2ID0gRkFJTAotMTAyNyBXSU4gOiBk
RVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLnJlbmRlci5zdGVuY2lsX2NsZWFyLnJib19yZ2I1X2Ex
X3N0ZW5jaWxfaW5kZXg4ID0gRkFJTAotMTAyNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwu
ZmJvLnJlbmRlci5zaGFyZWRfY29sb3JidWZmZXIudGV4MmRfcmdiX3N0ZW5jaWxfaW5kZXg4ID0g
RkFJTAotMTAyNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLnJlbmRlci5zaGFyZWRf
Y29sb3JidWZmZXIudGV4MmRfcmdiYV9zdGVuY2lsX2luZGV4OCA9IEZBSUwKLTEwMjcgV0lOIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5yZW5kZXIuc2hhcmVkX2NvbG9yYnVmZmVyLnJib19y
Z2I1NjVfc3RlbmNpbF9pbmRleDggPSBGQUlMCi0xMDI3IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5mYm8ucmVuZGVyLnNoYXJlZF9jb2xvcmJ1ZmZlci5yYm9fcmdiNV9hMV9zdGVuY2lsX2lu
ZGV4OCA9IEZBSUwKLTEwMjcgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5yZW5kZXIu
c2hhcmVkX2NvbG9yYnVmZmVyLnJib19yZ2JhNF9zdGVuY2lsX2luZGV4OCA9IEZBSUwKLTEwMjcg
V0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5yZW5kZXIucmVjcmVhdGVfY29sb3JidWZm
ZXIucmViaW5kX3RleDJkX3JnYl9zdGVuY2lsX2luZGV4OCA9IEZBSUwKLTEwMjcgV0lOIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmZiby5yZW5kZXIucmVjcmVhdGVfY29sb3JidWZmZXIucmViaW5k
X3RleDJkX3JnYmFfc3RlbmNpbF9pbmRleDggPSBGQUlMCi0xMDI3IFdJTiA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC5mYm8ucmVuZGVyLnJlY3JlYXRlX2NvbG9yYnVmZmVyLnJlYmluZF9yYm9fcmdi
NTY1X3N0ZW5jaWxfaW5kZXg4ID0gRkFJTAotMTAyNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwuZmJvLnJlbmRlci5yZWNyZWF0ZV9jb2xvcmJ1ZmZlci5yZWJpbmRfcmJvX3JnYjVfYTFfc3Rl
bmNpbF9pbmRleDggPSBGQUlMCi0xMDI3IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8u
cmVuZGVyLnJlY3JlYXRlX2NvbG9yYnVmZmVyLnJlYmluZF9yYm9fcmdiYTRfc3RlbmNpbF9pbmRl
eDggPSBGQUlMCi0xMDI3IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8ucmVuZGVyLnJl
Y3JlYXRlX2NvbG9yYnVmZmVyLm5vX3JlYmluZF90ZXgyZF9yZ2Jfc3RlbmNpbF9pbmRleDggPSBG
QUlMCi0xMDI3IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8ucmVuZGVyLnJlY3JlYXRl
X2NvbG9yYnVmZmVyLm5vX3JlYmluZF90ZXgyZF9yZ2JhX3N0ZW5jaWxfaW5kZXg4ID0gRkFJTAot
MTAzMyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwucG9seWdvbl9vZmZzZXQuZml4ZWQxNl9y
ZW5kZXJfd2l0aF91bml0cyA9IEZBSUwKLTEwMTcgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LnNoYWRlcnMubG9vcHMuZm9yX2NvbnN0YW50X2l0ZXJhdGlvbnMubmVzdGVkX3RyaWNreV9kYXRh
Zmxvd18qID0gRkFJTAotMTAxNyBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5s
b29wcy53aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLm5lc3RlZF90cmlja3lfZGF0YWZsb3dfKiA9
IEZBSUwKLTEwMTcgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9f
d2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5uZXN0ZWRfdHJpY2t5X2RhdGFmbG93XyogPSBGQUlM
Ci05ODkgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMucHJlcHJvY2Vzc29yLnBy
YWdtYXMuaW52YWxpZF9wcmFnbWFfaW52YWxpZF8qID0gRkFJTAotMTAxOCBXSU4gOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy52ZXJ0ZXgudGV4dHVyZWN1
YmVsb2QgPSBGQUlMCi0xMDIwIFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1p
cG1hcC5jdWJlLmJhc2ljLmxpbmVhcl9uZWFyZXN0ID0gRkFJTAotMTAyMCBXSU4gOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5iYXNpYy5saW5lYXJfbGluZWFyID0g
RkFJTAotMTAyMCBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3Vi
ZS5wcm9qZWN0ZWQubGluZWFyX25lYXJlc3QgPSBGQUlMCi0xMDIwIFdJTiA6IGRFUVAtR0xFUzIu
ZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLmJpYXMubGluZWFyX25lYXJlc3QgPSBGQUlM
Ci0xMDIwIFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLmJp
YXMubGluZWFyX2xpbmVhciA9IEZBSUwKLTEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LmZyYWdtZW50X29wcy5kZXB0aF9zdGVuY2lsLnN0ZW5jaWxfZGVwdGhfZnVuY3Muc3RlbmNpbF8q
ID0gRkFJTAotMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmRl
cHRoX3N0ZW5jaWwuc3RlbmNpbF9vcHMuKiA9IEZBSUwKLTEwMjUgV0lOIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLmZyYWdtZW50X29wcy5kZXB0aF9zdGVuY2lsLndyaXRlX21hc2suKiA9IEZBSUwK
LTEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5kZXB0aF9zdGVu
Y2lsLnJhbmRvbS4qID0gRkFJTAotMTAyNSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJh
Z21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9jb25zdGFudF9j
b2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwKLTEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfY29u
c3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAotMTAyNSBXSU4gOiBk
RVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5j
X2RzdF9mdW5jLmFkZF9vbmVfbWludXNfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBG
QUlMCi0xMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQu
ZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFudF9jb2xvcl9v
bmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlMCi0xMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVu
Y3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRk
X2NvbnN0YW50X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAotMTAyNSBXSU4gOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9m
dW5jLmFkZF9jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBGQUlMCi0x
MDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRp
b25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFudF9hbHBoYV9jb25zdGFu
dF9jb2xvciA9IEZBSUwKLTEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50
X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0
YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZBSUwKLTEwMjUgV0lOIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19k
c3RfZnVuYy5zdWJ0cmFjdF9jb25zdGFudF9jb2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwKLTEw
MjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5lcXVhdGlv
bl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9jb25zdGFudF9jb2xvcl9vbmVfbWludXNfY29u
c3RhbnRfYWxwaGEgPSBGQUlMCi0xMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFn
bWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rfb25lX21p
bnVzX2NvbnN0YW50X2NvbG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAotMTAyNSBXSU4gOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19mdW5jX2Rz
dF9mdW5jLnN1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9jb2xvcl9vbmVfbWludXNfY29uc3Rh
bnRfYWxwaGEgPSBGQUlMCi0xMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVu
dF9vcHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29uc3RhbnRf
YWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCi0xMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJh
Y3RfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAotMTAyNSBX
SU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3Ny
Y19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9hbHBoYV9jb25zdGFu
dF9jb2xvciA9IEZBSUwKLTEwMjUgV0lOIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZyYWdtZW50
X29wcy5ibGVuZC5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9vbmVfbWludXNf
Y29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAotMTAyNSBXSU4g
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9uX3NyY19m
dW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3RfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxw
aGEgPSBGQUlMCi0xMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMu
YmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9jb25zdGFu
dF9jb2xvcl9vbmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlMCi0xMDI1IFdJTiA6IGRFUVAt
R0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0
X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfY29sb3JfY29uc3RhbnRf
YWxwaGEgPSBGQUlMCi0xMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9v
cHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9vbmVf
bWludXNfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAotMTAy
NSBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmVxdWF0aW9u
X3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3RfY29uc3RhbnRfYWxwaGFfY29uc3Rh
bnRfY29sb3IgPSBGQUlMCi0xMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVu
dF9vcHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9j
b25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBGQUlMCi0xMDI1IFdJTiA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1
bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfY29u
c3RhbnRfY29sb3IgPSBGQUlMCi0xMDI1IFdJTiA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mcmFn
bWVudF9vcHMuYmxlbmQuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFj
dF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJ
TAotMTQxOCBXSU4gOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuY2xpcHBpbmcudHJpYW5nbGVfdmVy
dGV4LmNsaXBfdGhyZWUuY2xpcF9wb3NfeF9wb3NfeV9wb3Nfel9hbmRfbmVnX3hfcG9zX3lfcG9z
X3pfYW5kX25lZ194X25lZ195X25lZ196ID0gRkFJTAotCi0vLyBGYWlsdXJlcyBvbiB0aGUgZEVR
UCBXaW5kb3dzIGJvdHMgdGhhdCBkbyBub3QgcmVwcm9kdWNlIGxvY2FsbHkKLTExMDggV0lOIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuc3RydWN0LmxvY2FsLmR5bmFtaWNfbG9vcF9z
dHJ1Y3RfYXJyYXlfZnJhZ21lbnQgPSBGQUlMCi0KLS8vIExpbnV4IG9ubHkgZmFpbHVyZXMKLQot
MTA1MSBMSU5VWCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmZ1bmN0aW9ucy5hcnJh
eV9hcmd1bWVudHMuY29weV9nbG9iYWxfaW5vdXRfb25fY2FsbF9mcmFnbWVudCA9IEZBSUwKLTEw
NTEgTElOVVggOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5mdW5jdGlvbnMuYXJyYXlf
YXJndW1lbnRzLmNvcHlfZ2xvYmFsX2lub3V0X29uX2NhbGxfdmVydGV4ID0gRkFJTAotMTAxOSBM
SU5VWCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLnNpemUuY3ViZS4yNTZ4MjU2X3Jn
YmE0NDQ0ID0gRkFJTAotMTAxOSBMSU5VWCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJl
LnNpemUuY3ViZS41MTJ4NTEyX3JnYmE0NDQ0ID0gRkFJTAotMTAyMCBMSU5VWCA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5wcm9qZWN0ZWQubmVhcmVzdF9saW5lYXIq
ID0gRkFJTAotMTAyMCBMSU5VWCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1h
cC4yZC5wcm9qZWN0ZWQubGluZWFyX2xpbmVhciogPSBGQUlMCi0KLS8vIEZhaWx1cmVzIG9uIHRo
ZSBMaW51eCBkRVFQIGJvdCB0aGF0IGRvIG5vdCBhcHBlYXIgb24gdGhlIHdvcmtzdGF0aW9uCi0x
MTQzIExJTlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMucmFuZG9tLmFsbF9mZWF0
dXJlcy52ZXJ0ZXguMTMgPSBGQUlMCi0xMTQzIExJTlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LnNoYWRlcnMuaW52YXJpYW5jZS5tZWRpdW1wLmNvbW1vbl9zdWJleHByZXNzaW9uXzEgPSBGQUlM
Ci0xMTQzIExJTlVYIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5o
aWdocC5jb21tb25fc3ViZXhwcmVzc2lvbl8xID0gRkFJTAotMTE0MyBMSU5VWCA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLnByb2plY3RlZC5saW5lYXJfbmVhcmVz
dCA9IEZBSUwKLQotLy8gTWFjIHNwZWNpZmljIGZhaWx1cmVzCi0xMTQzIE1BQyA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UubWVkaXVtcC5jb21tb25fc3ViZXhwcmVz
c2lvbl8xID0gRkFJTAotMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5p
bnZhcmlhbmNlLmhpZ2hwLmNvbW1vbl9zdWJleHByZXNzaW9uXzEgPSBGQUlMCi0xMTQzIE1BQyA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnByZXByb2Nlc3Nvci5wcmFnbWFzLnByYWdt
YV8qID0gRkFJTAotMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5saW5r
YWdlLnZhcnlpbmdfNCA9IEZBSUwKLTExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNo
YWRlcnMuc2NvcGluZy52YWxpZC5sb2NhbF9pbnRfdmFyaWFibGVfaGlkZXNfc3RydWN0X3R5cGVf
KiA9IEZBSUwKLTExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuc2NvcGlu
Zy52YWxpZC5sb2NhbF9zdHJ1Y3RfdmFyaWFibGVfaGlkZXNfc3RydWN0X3R5cGVfKiA9IEZBSUwK
LTExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuc2NvcGluZy52YWxpZC5m
dW5jdGlvbl9wYXJhbWV0ZXJfaGlkZXNfc3RydWN0X3R5cGVfKiA9IEZBSUwKLTExNDMgTUFDIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5oaWdocC5jb21tb25fc3Vi
ZXhwcmVzc2lvbl8zID0gRkFJTAotMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hh
ZGVycy5pbnZhcmlhbmNlLmhpZ2hwLmxvb3BfMCA9IEZBSUwKLTExNDMgTUFDIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5oaWdocC5sb29wXzEgPSBGQUlMCi0xMTQz
IE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmludmFyaWFuY2UubWVkaXVtcC5j
b21tb25fc3ViZXhwcmVzc2lvbl8zID0gRkFJTAotMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLm1lZGl1bXAubG9vcF8wID0gRkFJTAotMTE0MyBNQUMg
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLm1lZGl1bXAubG9vcF8x
ID0gRkFJTAotMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlh
bmNlLmxvd3AuY29tbW9uX3N1YmV4cHJlc3Npb25fMSA9IEZBSUwKLTExNDMgTUFDIDogZEVRUC1H
TEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuaW52YXJpYW5jZS5sb3dwLmNvbW1vbl9zdWJleHByZXNz
aW9uXzMgPSBGQUlMCi0xMTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmlu
dmFyaWFuY2UubG93cC5sb29wXzAgPSBGQUlMCi0xMTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5zaGFkZXJzLmludmFyaWFuY2UubG93cC5sb29wXzEgPSBGQUlMCi0xMTQzIE1BQyA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnJhbmRvbS50cmlnb25vbWV0cmljLnZlcnRleC40
MyA9IEZBSUwKLTExNDMgTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMucmFuZG9t
LnRyaWdvbm9tZXRyaWMudmVydGV4LjY1ID0gRkFJTAotMTE0MyBNQUMgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwudGV4dHVyZS5zaXplLmN1YmUuMjU2eDI1Nl9yZ2JhNDQ0NCA9IEZBSUwKLTExNDMg
TUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUuc2l6ZS5jdWJlLjUxMng1MTJfcmdi
YTQ0NDQgPSBGQUlMCi0xMTQzIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1p
cG1hcC5jdWJlLnByb2plY3RlZC5saW5lYXJfbGluZWFyID0gRkFJTAotMTE0MyBNQUMgOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5zcGVjaWZpY2F0aW9uLmJhc2ljX2NvcHl0ZXhpbWFn
ZTJkLmN1YmVfKiA9IEZBSUwKLQotLy8gQW5kcm9pZCBvbmx5IGZhaWx1cmVzCi0xNDg0IEFORFJP
SUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudmVydGV4X2FycmF5cy4qID0gU0tJUAotMTQ4NSBB
TkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmNsaXBwaW5nLnRyaWFuZ2xlX3ZlcnRleC5j
bGlwX3RocmVlLmNsaXBfbmVnX3hfbmVnX3pfYW5kX3Bvc194X3Bvc196X2FuZF9uZWdfeF9uZWdf
eV9wb3NfeiA9IEZBSUwKLTE0ODYgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8u
Y29tcGxldGVuZXNzLmF0dGFjaG1lbnRfY29tYmluYXRpb25zLm5vbmVfbm9uZV9ub25lX3RleCA9
IEZBSUwKLTE0ODYgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVu
ZXNzLmF0dGFjaG1lbnRfY29tYmluYXRpb25zLm5vbmVfbm9uZV9yYm9fdGV4ID0gRkFJTAotMTQ4
NiBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MuYXR0YWNo
bWVudF9jb21iaW5hdGlvbnMubm9uZV9ub25lX3RleF9ub25lID0gRkFJTAotMTQ4NiBBTkRST0lE
IDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MuYXR0YWNobWVudF9jb21i
aW5hdGlvbnMubm9uZV9ub25lX3RleF9yYm8gPSBGQUlMCi0xNDg2IEFORFJPSUQgOiBkRVFQLUdM
RVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5hdHRhY2htZW50X2NvbWJpbmF0aW9ucy5u
b25lX25vbmVfdGV4X3RleCA9IEZBSUwKLTE0ODYgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5mYm8uY29tcGxldGVuZXNzLmF0dGFjaG1lbnRfY29tYmluYXRpb25zLnJib19ub25lX25v
bmVfdGV4ID0gRkFJTAotMTQ4NiBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5j
b21wbGV0ZW5lc3MuYXR0YWNobWVudF9jb21iaW5hdGlvbnMucmJvX25vbmVfcmJvX3RleCA9IEZB
SUwKLTE0ODYgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNz
LmF0dGFjaG1lbnRfY29tYmluYXRpb25zLnJib19ub25lX3RleF9ub25lID0gRkFJTAotMTQ4NiBB
TkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MuYXR0YWNobWVu
dF9jb21iaW5hdGlvbnMucmJvX25vbmVfdGV4X3JibyA9IEZBSUwKLTE0ODYgQU5EUk9JRCA6IGRF
UVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLmF0dGFjaG1lbnRfY29tYmluYXRp
b25zLnJib19ub25lX3RleF90ZXggPSBGQUlMCi0xNDg2IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5hdHRhY2htZW50X2NvbWJpbmF0aW9ucy50ZXhfbm9u
ZV9ub25lX3RleCA9IEZBSUwKLTE0ODYgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5m
Ym8uY29tcGxldGVuZXNzLmF0dGFjaG1lbnRfY29tYmluYXRpb25zLnRleF9ub25lX3Jib190ZXgg
PSBGQUlMCi0xNDg2IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRl
bmVzcy5hdHRhY2htZW50X2NvbWJpbmF0aW9ucy50ZXhfbm9uZV90ZXhfbm9uZSA9IEZBSUwKLTE0
ODYgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLmF0dGFj
aG1lbnRfY29tYmluYXRpb25zLnRleF9ub25lX3RleF9yYm8gPSBGQUlMCi0xNDg2IEFORFJPSUQg
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5hdHRhY2htZW50X2NvbWJp
bmF0aW9ucy50ZXhfbm9uZV90ZXhfdGV4ID0gRkFJTAotMTQ4NyBBTkRST0lEIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLmNvbG9yMC5k
ZXB0aF9zdGVuY2lsX3Vuc2lnbmVkX2ludF8yNF84ID0gRkFJTAotMTQ4NyBBTkRST0lEIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLmNv
bG9yMC5zcmdiOCA9IEZBSUwKLTE0ODcgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5m
Ym8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUudGV4dHVyZS5zdGVuY2lsLmRlcHRoX3N0ZW5jaWxf
dW5zaWduZWRfaW50XzI0XzggPSBGQUlMCi0xNDg3IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0
aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuc3RlbmNpbC5zcmdiOCA9
IEZBSUwKLTE0ODcgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVu
ZXNzLnJlbmRlcmFibGUudGV4dHVyZS5kZXB0aC5kZXB0aF9zdGVuY2lsX3Vuc2lnbmVkX2ludF8y
NF84ID0gRkFJTAotMTQ4NyBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21w
bGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLmRlcHRoLnNyZ2I4ID0gRkFJTAotMTQ4OCBBTkRS
T0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMucmV0dXJuLmNvbmRpdGlvbmFsX3Jl
dHVybl9hbHdheXNfdmVydGV4ID0gRkFJTAotMTQ4OCBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLnNoYWRlcnMucmV0dXJuLmNvbmRpdGlvbmFsX3JldHVybl9hbHdheXNfZnJhZ21lbnQg
PSBGQUlMCi0xNDg4IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5yZXR1
cm4ub3V0cHV0X3dyaXRlX2Fsd2F5c192ZXJ0ZXggPSBGQUlMCi0xNDg4IEFORFJPSUQgOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5yZXR1cm4ub3V0cHV0X3dyaXRlX2Fsd2F5c19mcmFn
bWVudCA9IEZBSUwKLTE0ODkgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJl
Lm1pcG1hcC4yZC5nZW5lcmF0ZS5hOF9mYXN0ZXN0ID0gRkFJTAotMTQ4OSBBTkRST0lEIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLmdlbmVyYXRlLmE4X25pY2VzdCA9
IEZBSUwKLTE0ODkgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1h
cC4yZC5nZW5lcmF0ZS5sOF9mYXN0ZXN0ID0gRkFJTAotMTQ4OSBBTkRST0lEIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLmdlbmVyYXRlLmw4X25pY2VzdCA9IEZBSUwK
LTE0ODkgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5n
ZW5lcmF0ZS5sYTg4X2Zhc3Rlc3QgPSBGQUlMCi0xNDg5IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1
bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQuZ2VuZXJhdGUubGE4OF9uaWNlc3QgPSBGQUlMCi0x
NDg5IEFORFJPSUQgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5n
ZW5lcmF0ZS5hOF9mYXN0ZXN0ID0gRkFJTAotMTQ4OSBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5j
dGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUuZ2VuZXJhdGUuYThfbmljZXN0ID0gRkFJTAotMTQ4
OSBBTkRST0lEIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLmN1YmUuZ2Vu
ZXJhdGUubDhfZmFzdGVzdCA9IEZBSUwKLTE0ODkgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLmdlbmVyYXRlLmw4X25pY2VzdCA9IEZBSUwKLTE0ODkg
QU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLmdlbmVy
YXRlLmxhODhfZmFzdGVzdCA9IEZBSUwKLTE0ODkgQU5EUk9JRCA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC50ZXh0dXJlLm1pcG1hcC5jdWJlLmdlbmVyYXRlLmxhODhfbmljZXN0ID0gRkFJTAotCi0v
LyBXaW5kb3dzIGFuZCBMaW51eCBmYWlsdXJlcwotMTAyMCBXSU4gTElOVVggOiBkRVFQLUdMRVMy
LmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuY3ViZS5wcm9qZWN0ZWQubGluZWFyX2xpbmVhciA9
IEZBSUwKLQotLy8gV2luZG93cyBMaW51eCBhbmQgTWFjIGZhaWx1cmVzCi05ODkgV0lOIExJTlVY
IE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnByZXByb2Nlc3Nvci5leHRlbnNp
b25zLmFmdGVyX25vbl9wcmVwcm9jZXNzaW5nX3Rva2Vuc192ZXJ0ZXggPSBGQUlMCi05ODkgV0lO
IExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnByZXByb2Nlc3Nvci5l
eHRlbnNpb25zLmFmdGVyX25vbl9wcmVwcm9jZXNzaW5nX3Rva2Vuc19mcmFnbWVudCA9IEZBSUwK
LTEwMTUgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLmZ1bmN0
aW9ucy5pbnZhbGlkLnJldHVybl9hcnJheV9pbl9zdHJ1Y3RfdmVydGV4ID0gRkFJTAotMTAxNSBX
SU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuZnVuY3Rpb25zLmlu
dmFsaWQucmV0dXJuX2FycmF5X2luX3N0cnVjdF9mcmFnbWVudCA9IEZBSUwKLTEwMTYgV0lOIExJ
TlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnNjb3BpbmcudmFsaWQubG9j
YWxfdmFyaWFibGVfaGlkZXNfZnVuY3Rpb25fcGFyYW1ldGVyX3ZlcnRleCA9IEZBSUwKLTEwMTYg
V0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5zaGFkZXJzLnNjb3BpbmcudmFs
aWQubG9jYWxfdmFyaWFibGVfaGlkZXNfZnVuY3Rpb25fcGFyYW1ldGVyX2ZyYWdtZW50ID0gRkFJ
TAotMTAxNiBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnNoYWRlcnMuc2Nv
cGluZy5pbnZhbGlkLnJlZGVjbGFyZV9mdW5jdGlvbl92ZXJ0ZXggPSBGQUlMCi0xMDE2IFdJTiBM
SU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuc2hhZGVycy5zY29waW5nLmludmFsaWQu
cmVkZWNsYXJlX2Z1bmN0aW9uX2ZyYWdtZW50ID0gRkFJTAotMTAyMCBXSU4gTElOVVggTUFDIDog
ZEVRUC1HTEVTMi5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLnByb2plY3RlZC5uZWFyZXN0
X25lYXJlc3QqID0gRkFJTAotMTAyMCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLnRleHR1cmUubWlwbWFwLjJkLnByb2plY3RlZC5saW5lYXJfbmVhcmVzdCogPSBGQUlMCi0x
MDI1IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLnJh
bmRvbS4qID0gRkFJTAotMTAyNSBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFs
LmZyYWdtZW50X29wcy5pbnRlcmFjdGlvbi5iYXNpY19zaGFkZXIuKiA9IEZBSUwKLTEwMjcgV0lO
IExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8ucmVuZGVyLnJlcGVhdGVkX2Ns
ZWFyLnRleDJkX3JnYiA9IEZBSUwKLTEwMjcgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVu
Y3Rpb25hbC5mYm8ucmVuZGVyLnJlcGVhdGVkX2NsZWFyLnRleDJkX3JnYmEgPSBGQUlMCi0xMDI4
IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5y
ZW5kZXJhYmxlLnRleHR1cmUuY29sb3IwLnJnYl9mbG9hdCA9IEZBSUwKLTEwMjggV0lOIExJTlVY
IE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUu
dGV4dHVyZS5jb2xvcjAucmdiX2hhbGZfZmxvYXRfb2VzID0gRkFJTAotMTAyOCBXSU4gTElOVVgg
TUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50
ZXh0dXJlLmNvbG9yMC5yZ2JhX2Zsb2F0ID0gRkFJTAotMTAyOCBXSU4gTElOVVggTUFDIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLmNv
bG9yMC5yZ2JhX2hhbGZfZmxvYXRfb2VzID0gRkFJTAotMTAyOCBXSU4gTElOVVggTUFDIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLmNv
bG9yMC5zcmdiOCA9IEZBSUwKLTEwMjggV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rp
b25hbC5mYm8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUudGV4dHVyZS5zdGVuY2lsLnNyZ2I4ID0g
RkFJTAotMTAyOCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmZiby5jb21w
bGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLmRlcHRoLmRlcHRoX2NvbXBvbmVudF91bnNpZ25l
ZF9zaG9ydCA9IEZBSUwKLTEwMjggV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25h
bC5mYm8uY29tcGxldGVuZXNzLnJlbmRlcmFibGUudGV4dHVyZS5kZXB0aC5kZXB0aF9jb21wb25l
bnRfdW5zaWduZWRfaW50ID0gRkFJTAotMTAyOCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5m
dW5jdGlvbmFsLmZiby5jb21wbGV0ZW5lc3MucmVuZGVyYWJsZS50ZXh0dXJlLmRlcHRoLnNyZ2I4
ID0gRkFJTAotMTEyOCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLm5lZ2F0
aXZlX2FwaS50ZXh0dXJlLmNvbXByZXNzZWR0ZXhzdWJpbWFnZTJkX2ludmFsaWRfc2l6ZSA9IEZB
SUwKLTEwMjkgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5uZWdhdGl2ZV9h
cGkudGV4dHVyZS50ZXhpbWFnZTJkX2ludmFsaWRfZm9ybWF0ID0gRkFJTAotMTAyOSBXSU4gTElO
VVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLm5lZ2F0aXZlX2FwaS50ZXh0dXJlLnRleGlt
YWdlMmRfaW52YWxpZF9pbnRlcm5hbGZvcm1hdCA9IEZBSUwKLTEwMjkgV0lOIExJTlVYIE1BQyA6
IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5uZWdhdGl2ZV9hcGkudGV4dHVyZS50ZXhzdWJpbWFnZTJk
X2ludmFsaWRfdHlwZSA9IEZBSUwKLTEwMjkgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVu
Y3Rpb25hbC5uZWdhdGl2ZV9hcGkudGV4dHVyZS50ZXhzdWJpbWFnZTJkX29mZnNldF9hbGxvd2Vk
ID0gRkFJTAotMTAzMCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmF0dHJp
YnV0ZV9sb2NhdGlvbi5iaW5kX2FsaWFzaW5nLmNvbmRfZmxvYXQgPSBGQUlMCi0xMDMwIFdJTiBM
SU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRf
YWxpYXNpbmcubWF4X2NvbmRfZmxvYXQgPSBGQUlMCi0xMDMwIFdJTiBMSU5VWCBNQUMgOiBkRVFQ
LUdMRVMyLmZ1bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcuY29uZF92
ZWMyID0gRkFJTAotMTAzMCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmF0
dHJpYnV0ZV9sb2NhdGlvbi5iaW5kX2FsaWFzaW5nLm1heF9jb25kX3ZlYzIgPSBGQUlMCi0xMDMw
IFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9u
LmJpbmRfYWxpYXNpbmcuY29uZF92ZWMzID0gRkFJTAotMTAzMCBXSU4gTElOVVggTUFDIDogZEVR
UC1HTEVTMi5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5kX2FsaWFzaW5nLm1heF9j
b25kX3ZlYzMgPSBGQUlMCi0xMDMwIFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcuY29uZF92ZWM0ID0gRkFJTAotMTAz
MCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlv
bi5iaW5kX2FsaWFzaW5nLm1heF9jb25kX3ZlYzQgPSBGQUlMCi0xMDMwIFdJTiBMSU5VWCBNQUMg
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcu
Y29uZF9tYXQyID0gRkFJTAotMTAzMCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlv
bmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5kX2FsaWFzaW5nLmNvbmRfbWF0Ml9vZmZzZXRfMSA9
IEZBSUwKLTEwMzAgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1
dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5tYXhfY29uZF9tYXQyID0gRkFJTAotMTAzMCBXSU4g
TElOVVggTUFDIDogZEVRUC1HTEVTMi5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5k
X2FsaWFzaW5nLmNvbmRfbWF0MyA9IEZBSUwKLTEwMzAgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xF
UzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9jYXRpb24uYmluZF9hbGlhc2luZy5jb25kX21hdDNf
b2Zmc2V0XzEgPSBGQUlMCi0xMDMwIFdJTiBMSU5VWCBNQUMgOiBkRVFQLUdMRVMyLmZ1bmN0aW9u
YWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcubWF4X2NvbmRfbWF0MyA9IEZBSUwK
LTEwMzAgV0lOIExJTlVYIE1BQyA6IGRFUVAtR0xFUzIuZnVuY3Rpb25hbC5hdHRyaWJ1dGVfbG9j
YXRpb24uYmluZF9hbGlhc2luZy5jb25kX21hdDQgPSBGQUlMCi0xMDMwIFdJTiBMSU5VWCBNQUMg
OiBkRVFQLUdMRVMyLmZ1bmN0aW9uYWwuYXR0cmlidXRlX2xvY2F0aW9uLmJpbmRfYWxpYXNpbmcu
Y29uZF9tYXQ0X29mZnNldF8xID0gRkFJTAotMTAzMCBXSU4gTElOVVggTUFDIDogZEVRUC1HTEVT
Mi5mdW5jdGlvbmFsLmF0dHJpYnV0ZV9sb2NhdGlvbi5iaW5kX2FsaWFzaW5nLm1heF9jb25kX21h
dDQgPSBGQUlMCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
ZGVxcF9zdXBwb3J0L2RlcXBfZ2xlczMxX3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvZGVxcF9nbGVzMzFfdGVzdF9l
eHBlY3RhdGlvbnMudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OWFjYjc0NmUy
OS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2Rl
cXBfc3VwcG9ydC9kZXFwX2dsZXMzMV90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIC9kZXYvbnVs
bApAQCAtMSwyNyArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KLQotLy8gVGhpcyBmaWxlIGNvbnRhaW5zIGEgbGlzdCBvZiBk
ZWZlY3RpdmUgZEVRUCBjb25mb3JtYW5jZSB0ZXN0cy4gVGhlIGV4cGVjdGVkCi0vLyBmb3JtYXQg
aXM6Ci0vLyAge0JVRyN9IHtNT0RJRklFUlN9IDoge1RFU1RfTkFNRX0gPSB7UEFTUyxGQUlMLEZM
QUtZLFRJTUVPVVQsU0tJUH0KLS8vCi0vLyBNT0RJRklFUlMgY2FuIGJlIGEgY29tYmluYXRpb24g
b2YgdGhlIGJlbG93IGxpc3Q6Ci0vLyAgV0lOIFhQIFZJU1RBIFdJTjcgTUFDIExFT1BBUkQgU05P
V0xFT1BBUkQgTElPTiBMSU5VWCBDSFJPTUVPUyBNT1VOVEFJTkxJT04KLS8vICBNQVZFUklDS1MK
LS8vICBOVklESUEgQU1EIElOVEVMCi0vLyAgMHhhYmNkIC0gR1BVIFBDSSBkZXZpY2UgSUQuIFNw
ZWNpZnlpbmcgYSBQQ0kgaWQgcmVxdWlyZXMgYSB2ZW5kb3IuCi0vLyAgREVCVUcgUkVMRUFTRQot
Ly8gVE9ETyhqbWFkaWxsKTogQWRkIEFOR0xFIFJlbmRlcmVyIHNlbGVjdGlvbiBtb2RpZmllcnMK
LS8vCi0vLyBURVNUX05BTUUgY2FuIGJlIGEgc3BlY2lmaWMgdGVzdCBuYW1lLCBvciBoYXZlIGEg
JyonIGluIHRoZSBlbmQsIHdoaWNoCi0vLyBpbmRpY2F0ZXMgYSBwcmVmaXggbWF0Y2hpbmcuCi0v
LwotLy8gRXhhbXBsZXM6Ci0vLyAgOTE1MzAgTUFDIFdJTiBMSU5VWCA6IGNvbnRleHRfbG9zdF9y
ZXN0b3JlZCA9IFRJTUVPVVQKLS8vICA5MTUzMyBXSU4gOiBnbF9taW5fdW5pZm9ybXMgPSBGQUlM
Ci0vLyAgOTE1MzEgTUFDIFdJTiBMSU5VWCA6IGNvbmZvcm1hbmNlX21vcmVfKiA9IFNLSVAKLS8v
ICA5MTUzMiBNQUMgTlZJRElBIDB4MDY0MCA6IHRleF9pbWFnZV9hbmRfc3ViX2ltYWdlXzJkX3dp
dGhfdmlkZW8gPSBQQVNTIEZBSUwKLQotMTQ0MiBERUJVRyA6IGRFUVBfR0xFUzMxLiogPSBGQUlM
Ci0xNDQyIFJFTEVBU0UgOiBkRVFQX0dMRVMzMS4qID0gRkFJTApkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC9kZXFwX2dsZXMzX3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFw
X3N1cHBvcnQvZGVxcF9nbGVzM190ZXN0X2V4cGVjdGF0aW9ucy50eHQKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGRhMzBlNGZhYWU5Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0L2RlcXBfZ2xlczNfdGVzdF9leHBl
Y3RhdGlvbnMudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjkyICswLDAgQEAKLS8vIENvcHlyaWdo
dCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0v
LyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNl
bnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotCi0vLyBUaGlz
IGZpbGUgY29udGFpbnMgYSBsaXN0IG9mIGRlZmVjdGl2ZSBkRVFQIGNvbmZvcm1hbmNlIHRlc3Rz
LiBUaGUgZXhwZWN0ZWQKLS8vIGZvcm1hdCBpczoKLS8vICB7QlVHI30ge01PRElGSUVSU30gOiB7
VEVTVF9OQU1FfSA9IHtQQVNTLEZBSUwsRkxBS1ksVElNRU9VVCxTS0lQfQotLy8KLS8vIE1PRElG
SUVSUyBjYW4gYmUgYSBjb21iaW5hdGlvbiBvZiB0aGUgYmVsb3cgbGlzdDoKLS8vICBXSU4gWFAg
VklTVEEgV0lONyBNQUMgTEVPUEFSRCBTTk9XTEVPUEFSRCBMSU9OIExJTlVYIENIUk9NRU9TIE1P
VU5UQUlOTElPTgotLy8gIE1BVkVSSUNLUwotLy8gIE5WSURJQSBBTUQgSU5URUwKLS8vICAweGFi
Y2QgLSBHUFUgUENJIGRldmljZSBJRC4gU3BlY2lmeWluZyBhIFBDSSBpZCByZXF1aXJlcyBhIHZl
bmRvci4KLS8vICBERUJVRyBSRUxFQVNFCi0vLyBUT0RPKGptYWRpbGwpOiBBZGQgQU5HTEUgUmVu
ZGVyZXIgc2VsZWN0aW9uIG1vZGlmaWVycwotLy8KLS8vIFRFU1RfTkFNRSBjYW4gYmUgYSBzcGVj
aWZpYyB0ZXN0IG5hbWUsIG9yIGhhdmUgYSAnKicgaW4gdGhlIGVuZCwgd2hpY2gKLS8vIGluZGlj
YXRlcyBhIHByZWZpeCBtYXRjaGluZy4KLS8vCi0vLyBFeGFtcGxlczoKLS8vICA5MTUzMCBNQUMg
V0lOIExJTlVYIDogY29udGV4dF9sb3N0X3Jlc3RvcmVkID0gVElNRU9VVAotLy8gIDkxNTMzIFdJ
TiA6IGdsX21pbl91bmlmb3JtcyA9IEZBSUwKLS8vICA5MTUzMSBNQUMgV0lOIExJTlVYIDogY29u
Zm9ybWFuY2VfbW9yZV8qID0gU0tJUAotLy8gIDkxNTMyIE1BQyBOVklESUEgMHgwNjQwIDogdGV4
X2ltYWdlX2FuZF9zdWJfaW1hZ2VfMmRfd2l0aF92aWRlbyA9IFBBU1MgRkFJTAotCi0vLyBEb24n
dCBydW4gdGhlc2UgdGVzdHMgZm9yIGZhc3RlciB0dXJub3ZlcgotOTk4IFdJTiBMSU5VWCA6IGRF
UVAtR0xFUzMucGVyZm9ybWFuY2UuKiA9IFNLSVAKLTk5OCBXSU4gTElOVVggOiBkRVFQLUdMRVMz
LnN0cmVzcy4qID0gU0tJUAotMTEwMSBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
Zmx1c2hfZmluaXNoLiogPSBTS0lQCi0KLS8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgd2h5
IHRoZXNlIGZhaWwgb24gdGhlIGJvdHMsIGJ1dCBub3QgbG9jYWxseS4KLTExMDggV0lOIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuc3RydWN0LmxvY2FsLmR5bmFtaWNfbG9vcF9zdHJ1
Y3RfYXJyYXlfZnJhZ21lbnQgPSBGQUlMCi0xMDk0IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5zaGFkZXJzLmludmFyaWFuY2UuaGlnaHAubG9vcF8yID0gRkFJTAotMTA5NCBXSU4gOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5pbnZhcmlhbmNlLm1lZGl1bXAubG9vcF8yID0gRkFJ
TAotCi0vLyBXZSBjYW4ndCBzdXBwb3J0IGRpc3RpbmN0IHRleHR1cmUgc2l6ZXMgaW4gRDNEMTEu
Ci0xMDk3IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mYm8uY29tcGxldGVuZXNzLnNpemUu
ZGlzdGluY3QgPSBGQUlMCi0KLS8vIEZhaWwgYmVjYXVzZSB3ZSBzdXBwb3J0IHRoZXNlIGZvcm1h
dHMgdGhyb3VnaCB0aGUgQU5HTEVfZGVwdGhfdGV4dHVyZSBleHRlbnNpb24gaW5zdGVhZCBvZiBP
RVNfZGVwdGhfdGV4dHVyZQotNjA1NzU0IE1BQyBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuZGVwdGguZGVwdGhfY29t
cG9uZW50X3Vuc2lnbmVkX3Nob3J0ID0gRkFJTAotNjA1NzU0IE1BQyBXSU4gTElOVVggOiBkRVFQ
LUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmNvbXBsZXRlbmVzcy5yZW5kZXJhYmxlLnRleHR1cmUuZGVw
dGguZGVwdGhfY29tcG9uZW50X3Vuc2lnbmVkX2ludCA9IEZBSUwKLQotLy8gVGVzdHMgdGhhdCB3
ZSBmYWlsIGJlY2F1c2UgdGhleSdyZSBub3QgaW4gbGluZSB3aXRoIHRoZSBXZWJHTCBzcGVjCi0x
MzM1IE1BQyBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5wcmVwcm9j
ZXNzb3IuY29uZGl0aW9uYWxfaW5jbHVzaW9uLmJhc2ljXzIqID0gRkFJTAotMTMzNSBNQUMgV0lO
IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMucHJlcHJvY2Vzc29yLmNvbmRp
dGlvbmFsX2luY2x1c2lvbi5kZWZpbmVkX21hY3JvX2RlZmluZWRfdGVzdCogPSBGQUlMCi0xMzM1
IE1BQyBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5wcmVwcm9jZXNz
b3IuY29uZGl0aW9uYWxfaW5jbHVzaW9uLmRlZmluZWRfbWFjcm9fdW5kZWYqID0gRkFJTAotMTMz
NSBNQUMgV0lOIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMucHJlcHJvY2Vz
c29yLmNvbmRpdGlvbmFsX2luY2x1c2lvbi5kZWZpbmVfZGVmaW5lZCogPSBGQUlMCi0xMzM1IE1B
QyBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5wcmVwcm9jZXNzb3Iu
Y29uZGl0aW9uYWxfaW5jbHVzaW9uLmRlZmluZV9kZWZpbmVkX291dHNpZGVfaWYqID0gRkFJTAot
Ci0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vICBUZW1wb3JhcnkgZW50cmllczogdGhl
eSBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHRoZSBidWdzIGFyZSBmaXhlZC4KLS8vCi0vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLwotCi0vLyBUT0RPKGptYWRpbGwpOiBGaW5kIHdoeSB0aGlzIGZhaWxz
IHdoZW4gcnVuIGluIGEgY2VydGFpbiBzZXF1ZW5jZSwgYnV0IG5vdCBzaW5nbHkuCi0xMDk4IFdJ
TiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC51bmlmb3JtX2FwaS5yYW5kb20uNTAgPSBGQUlMCi0K
LS8vIE1pc3NpbmcgdGhlIFNhbXBsZUNtcCBpbnN0cnVjdGlvbiBpbiB2ZXJ0ZXggc2hhZGVycy4K
LTE0MzUgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlv
bnMudGV4dHVyZWxvZC5zYW1wbGVyMmRzaGFkb3dfdmVydGV4ID0gRkFJTAotMTQzNSBXSU4gOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlbG9k
b2Zmc2V0LnNhbXBsZXIyZHNoYWRvd192ZXJ0ZXggPSBGQUlMCi0xNDM1IFdJTiA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVwcm9qbG9kLnNh
bXBsZXIyZHNoYWRvd192ZXJ0ZXggPSBGQUlMCi0xNDM1IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVwcm9qbG9kb2Zmc2V0LnNhbXBs
ZXIyZHNoYWRvd192ZXJ0ZXggPSBGQUlMCi0KLS8vIFNhbXBsZUNtcCBpcyBtaXNzaW5nIGdyYWRp
ZW50L29mZnNldCBwYXJhbWV0ZXJzIGluIEhMU0wuCi0xNDM2IFdJTiA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVsb2Quc2FtcGxlcjJkc2hh
ZG93X2ZyYWdtZW50ID0gRkFJTAotMTQzNiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hh
ZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlbG9kb2Zmc2V0LnNhbXBsZXIyZHNoYWRvd19m
cmFnbWVudCA9IEZBSUwKLTE0MzYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMu
dGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZXByb2psb2Quc2FtcGxlcjJkc2hhZG93X2ZyYWdtZW50
ID0gRkFJTAotMTQzNiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJl
X2Z1bmN0aW9ucy50ZXh0dXJlcHJvamxvZG9mZnNldC5zYW1wbGVyMmRzaGFkb3dfZnJhZ21lbnQg
PSBGQUlMCi0xNDM2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVf
ZnVuY3Rpb25zLnRleHR1cmVncmFkLnNhbXBsZXIyZHNoYWRvd192ZXJ0ZXggPSBGQUlMCi0xNDM2
IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRl
eHR1cmVncmFkLnNhbXBsZXIyZHNoYWRvd19mcmFnbWVudCA9IEZBSUwKLTE0MzYgV0lOIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWdyYWQu
c2FtcGxlcjJkYXJyYXlzaGFkb3dfdmVydGV4ID0gRkFJTAotMTQzNiBXSU4gOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZC5zYW1wbGVy
MmRhcnJheXNoYWRvd19mcmFnbWVudCA9IEZBSUwKLTE0MzYgV0lOIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWdyYWRvZmZzZXQuc2FtcGxl
cjJkc2hhZG93X3ZlcnRleCA9IEZBSUwKLTE0MzYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFs
LnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWdyYWRvZmZzZXQuc2FtcGxlcjJkc2hh
ZG93X2ZyYWdtZW50ID0gRkFJTAotMTQzNiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hh
ZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlZ3JhZG9mZnNldC5zYW1wbGVyMmRhcnJheXNo
YWRvd192ZXJ0ZXggPSBGQUlMCi0xNDM2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFk
ZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVncmFkb2Zmc2V0LnNhbXBsZXIyZGFycmF5c2hh
ZG93X2ZyYWdtZW50ID0gRkFJTAotMTQzNiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hh
ZGVycy50ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlcHJvamdyYWQuc2FtcGxlcjJkc2hhZG93X3Zl
cnRleCA9IEZBSUwKLTE0MzYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4
dHVyZV9mdW5jdGlvbnMudGV4dHVyZXByb2pncmFkLnNhbXBsZXIyZHNoYWRvd19mcmFnbWVudCA9
IEZBSUwKLTE0MzYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9m
dW5jdGlvbnMudGV4dHVyZXByb2pncmFkb2Zmc2V0LnNhbXBsZXIyZHNoYWRvd192ZXJ0ZXggPSBG
QUlMCi0xNDM2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLnRleHR1cmVfZnVu
Y3Rpb25zLnRleHR1cmVwcm9qZ3JhZG9mZnNldC5zYW1wbGVyMmRzaGFkb3dfZnJhZ21lbnQgPSBG
QUlMCi0KLS8vIFRPRE8oam1hZGlsbCwgY3dhbGxleik6IHRyaWFnZSB0aGUgZmFpbHVyZXMgYmVs
b3cgaW50byBwZXJtYW5lbnQgYW5kIHRlbXBvcmFyeSBmYWlsdXJlcwotCi0vLyBXaW5kb3dzIGFu
ZCBMaW51eCBmYWlsdXJlcwotCi0xMTAxIFdJTiBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5uZWdhdGl2ZV9hcGkudGV4dHVyZS5jb21wcmVzc2VkdGV4c3ViaW1hZ2UyZCA9IEZBSUwKLTEx
MDEgV0lOIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLm5lZ2F0aXZlX2FwaS50ZXh0dXJl
LmNvbXByZXNzZWR0ZXhzdWJpbWFnZTJkX2ludmFsaWRfc2l6ZSA9IEZBSUwKLTExMDEgV0lOIExJ
TlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLm5lZ2F0aXZlX2FwaS50ZXh0dXJlLmNvbXByZXNz
ZWR0ZXhzdWJpbWFnZTNkID0gRkFJTAotMTEwMSBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwubmVnYXRpdmVfYXBpLnRleHR1cmUuY29tcHJlc3NlZHRleHN1YmltYWdlM2RfaW52YWxp
ZF9idWZmZXJfdGFyZ2V0ID0gRkFJTAotMTA5NSBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwudGV4dHVyZS5taXBtYXAuMmQucHJvamVjdGVkLm5lYXJlc3RfbmVhcmVzdF9jbGFtcCA9
IEZBSUwKLTEwOTUgV0lOIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUubWlw
bWFwLjJkLnByb2plY3RlZC5uZWFyZXN0X25lYXJlc3RfcmVwZWF0ID0gRkFJTAotMTA5NSBXSU4g
TElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQucHJvamVjdGVk
Lm5lYXJlc3RfbmVhcmVzdF9taXJyb3IgPSBGQUlMCi0xMDk1IFdJTiBMSU5VWCA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5wcm9qZWN0ZWQubGluZWFyX25lYXJlc3Rf
Y2xhbXAgPSBGQUlMCi0xMDk1IFdJTiBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0
dXJlLm1pcG1hcC4yZC5wcm9qZWN0ZWQubGluZWFyX25lYXJlc3RfcmVwZWF0ID0gRkFJTAotMTA5
NSBXSU4gTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQucHJv
amVjdGVkLmxpbmVhcl9uZWFyZXN0X21pcnJvciA9IEZBSUwKLQotLy8gV2luZG93cyBvbmx5IGZh
aWx1cmUKLQotMTA5MyBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5idWlsdGlu
X2Z1bmN0aW9ucy5wcmVjaXNpb24udGFuaC5oaWdocF92ZXJ0ZXguc2NhbGFyID0gRkFJTAotMTA5
MyBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5idWlsdGluX2Z1bmN0aW9ucy5w
cmVjaXNpb24udGFuaC5oaWdocF92ZXJ0ZXgudmVjMiA9IEZBSUwKLTEwOTMgV0lOIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMuYnVpbHRpbl9mdW5jdGlvbnMucHJlY2lzaW9uLnRhbmgu
aGlnaHBfdmVydGV4LnZlYzMgPSBGQUlMCi0xMDkzIFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5zaGFkZXJzLmJ1aWx0aW5fZnVuY3Rpb25zLnByZWNpc2lvbi50YW5oLmhpZ2hwX3ZlcnRleC52
ZWM0ID0gRkFJTAotMTA5MyBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5idWls
dGluX2Z1bmN0aW9ucy5wcmVjaXNpb24udGFuaC5oaWdocF9mcmFnbWVudC5zY2FsYXIgPSBGQUlM
Ci0xMDkzIFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmJ1aWx0aW5fZnVuY3Rp
b25zLnByZWNpc2lvbi50YW5oLmhpZ2hwX2ZyYWdtZW50LnZlYzIgPSBGQUlMCi0xMDkzIFdJTiA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmJ1aWx0aW5fZnVuY3Rpb25zLnByZWNpc2lv
bi50YW5oLmhpZ2hwX2ZyYWdtZW50LnZlYzMgPSBGQUlMCi0xMDkzIFdJTiA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5zaGFkZXJzLmJ1aWx0aW5fZnVuY3Rpb25zLnByZWNpc2lvbi50YW5oLmhpZ2hw
X2ZyYWdtZW50LnZlYzQgPSBGQUlMCi0xMDkyIFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5z
aGFkZXJzLnRleHR1cmVfZnVuY3Rpb25zLnRleHR1cmVvZmZzZXQuc2FtcGxlcjNkX2ZpeGVkX2Zy
YWdtZW50ID0gRkFJTAotMTA5MiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50
ZXh0dXJlX2Z1bmN0aW9ucy50ZXh0dXJlb2Zmc2V0LnNhbXBsZXIzZF9mbG9hdF9mcmFnbWVudCA9
IEZBSUwKLTEwOTIgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9m
dW5jdGlvbnMudGV4dHVyZXByb2pvZmZzZXQuc2FtcGxlcjNkX2ZpeGVkX2ZyYWdtZW50ID0gRkFJ
TAotMTA5MiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy50ZXh0dXJlX2Z1bmN0
aW9ucy50ZXh0dXJlcHJvam9mZnNldC5zYW1wbGVyM2RfZmxvYXRfZnJhZ21lbnQgPSBGQUlMCi0x
MDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuZGVwdGhfc3RlbmNp
bC5zdGVuY2lsX2RlcHRoX2Z1bmNzLnN0ZW5jaWxfKiA9IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5kZXB0aF9zdGVuY2lsLnN0ZW5jaWxfb3BzLiog
PSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuZGVw
dGhfc3RlbmNpbC53cml0ZV9tYXNrLiogPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5mcmFnbWVudF9vcHMuZGVwdGhfc3RlbmNpbC5yYW5kb20uKiA9IEZBSUwKLTEwOTYg
V0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2Zy
YW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9jb25zdGFudF9jb2xvcl9j
b25zdGFudF9hbHBoYSA9IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZy
YWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2Rz
dF9mdW5jLmFkZF9jb25zdGFudF9jb2xvcl9vbmVfbWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlM
Ci0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVm
YXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21pbnVz
X2NvbnN0YW50X2NvbG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1
YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFudF9jb2xvcl9vbmVf
bWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNf
ZnVuY19kc3RfZnVuYy5hZGRfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCi0x
MDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVs
dF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfY29uc3RhbnRfYWxw
aGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRp
b25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFudF9hbHBoYV9jb25zdGFu
dF9jb2xvciA9IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50
X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5j
LmFkZF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0g
RkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5k
LmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rf
Y29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVh
dGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9jb25zdGFudF9jb2xvcl9vbmVfbWludXNf
Y29uc3RhbnRfYWxwaGEgPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5m
cmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19k
c3RfZnVuYy5zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEg
PSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxl
bmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFj
dF9vbmVfbWludXNfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJ
TAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRl
ZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29u
c3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlv
bl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29u
c3RhbnRfY29sb3IgPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFn
bWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3Rf
ZnVuYy5zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBG
QUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQu
ZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9v
bmVfbWludXNfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAot
MTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1
bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFj
dF9jb25zdGFudF9jb2xvcl9jb25zdGFudF9hbHBoYSA9IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0X2ZyYW1lYnVmZmVyLmVx
dWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3RfY29uc3RhbnRfY29sb3Jf
b25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25f
c3JjX2Z1bmNfZHN0X2Z1bmMucmV2ZXJzZV9zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfY29s
b3JfY29uc3RhbnRfYWxwaGEgPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVu
Y19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9jb2xvcl9vbmVf
bWludXNfY29uc3RhbnRfYWxwaGEgPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNf
ZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X2NvbnN0YW50X2FscGhhX2NvbnN0YW50X2Nv
bG9yID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3Bz
LmJsZW5kLmRlZmF1bHRfZnJhbWVidWZmZXIuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMucmV2
ZXJzZV9zdWJ0cmFjdF9jb25zdGFudF9hbHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBG
QUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQu
ZGVmYXVsdF9mcmFtZWJ1ZmZlci5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1
YnRyYWN0X29uZV9taW51c19jb25zdGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9IEZBSUwKLTEw
OTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5kZWZhdWx0
X2ZyYW1lYnVmZmVyLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3Rf
b25lX21pbnVzX2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZBSUwK
LTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9f
c3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfY29uc3RhbnRfY29sb3JfY29uc3Rh
bnRfYWxwaGEgPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVu
dF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX2NvbnN0
YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKLTEwOTYgV0lOIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9z
cmNfZnVuY19kc3RfZnVuYy5hZGRfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX2NvbnN0YW50X2Fs
cGhhID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3Bz
LmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9vbmVfbWludXNf
Y29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAotMTA5NiBXSU4g
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0
aW9uX3NyY19mdW5jX2RzdF9mdW5jLmFkZF9jb25zdGFudF9hbHBoYV9jb25zdGFudF9jb2xvciA9
IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVu
ZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5hZGRfY29uc3RhbnRfYWxwaGFf
b25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2Rz
dF9mdW5jLmFkZF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfY29uc3RhbnRfY29sb3IgPSBGQUlM
Ci0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZmJv
X3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuYWRkX29uZV9taW51c19jb25zdGFudF9h
bHBoYV9vbmVfbWludXNfY29uc3RhbnRfY29sb3IgPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1
bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29uc3RhbnRfY29sb3JfY29uc3RhbnRfYWxwaGEgPSBGQUlM
Ci0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVudF9vcHMuYmxlbmQuZmJv
X3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3RfY29uc3RhbnRfY29sb3Jf
b25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2Rz
dF9mdW5jLnN1YnRyYWN0X29uZV9taW51c19jb25zdGFudF9jb2xvcl9jb25zdGFudF9hbHBoYSA9
IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVu
ZC5mYm9fc3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9vbmVfbWludXNf
Y29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2FscGhhID0gRkFJTAotMTA5NiBXSU4g
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0
aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X2NvbnN0YW50X2FscGhhX2NvbnN0YW50X2Nv
bG9yID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3Bz
LmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnN1YnRyYWN0X2NvbnN0
YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZBSUwKLTEwOTYgV0lOIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9z
cmNfZnVuY19kc3RfZnVuYy5zdWJ0cmFjdF9vbmVfbWludXNfY29uc3RhbnRfYWxwaGFfY29uc3Rh
bnRfY29sb3IgPSBGQUlMCi0xMDk2IFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5mcmFnbWVu
dF9vcHMuYmxlbmQuZmJvX3NyZ2IuZXF1YXRpb25fc3JjX2Z1bmNfZHN0X2Z1bmMuc3VidHJhY3Rf
b25lX21pbnVzX2NvbnN0YW50X2FscGhhX29uZV9taW51c19jb25zdGFudF9jb2xvciA9IEZBSUwK
LTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9f
c3JnYi5lcXVhdGlvbl9zcmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X2NvbnN0YW50
X2NvbG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9m
dW5jLnJldmVyc2Vfc3VidHJhY3RfY29uc3RhbnRfY29sb3Jfb25lX21pbnVzX2NvbnN0YW50X2Fs
cGhhID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3Bz
LmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJh
Y3Rfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yX2NvbnN0YW50X2FscGhhID0gRkFJTAotMTA5NiBX
SU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVx
dWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0
YW50X2NvbG9yX29uZV9taW51c19jb25zdGFudF9hbHBoYSA9IEZBSUwKLTEwOTYgV0lOIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLmZyYWdtZW50X29wcy5ibGVuZC5mYm9fc3JnYi5lcXVhdGlvbl9z
cmNfZnVuY19kc3RfZnVuYy5yZXZlcnNlX3N1YnRyYWN0X2NvbnN0YW50X2FscGhhX2NvbnN0YW50
X2NvbG9yID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRf
b3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3Vi
dHJhY3RfY29uc3RhbnRfYWxwaGFfb25lX21pbnVzX2NvbnN0YW50X2NvbG9yID0gRkFJTAotMTA5
NiBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdi
LmVxdWF0aW9uX3NyY19mdW5jX2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3Rfb25lX21pbnVzX2Nv
bnN0YW50X2FscGhhX2NvbnN0YW50X2NvbG9yID0gRkFJTAotMTA5NiBXSU4gOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwuZnJhZ21lbnRfb3BzLmJsZW5kLmZib19zcmdiLmVxdWF0aW9uX3NyY19mdW5j
X2RzdF9mdW5jLnJldmVyc2Vfc3VidHJhY3Rfb25lX21pbnVzX2NvbnN0YW50X2FscGhhX29uZV9t
aW51c19jb25zdGFudF9jb2xvciA9IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLmZyYWdtZW50X29wcy5yYW5kb20uKiA9IEZBSUwKLTEwOTYgV0lOIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLmZyYWdtZW50X29wcy5pbnRlcmFjdGlvbi5iYXNpY19zaGFkZXIuKiA9IEZBSUwK
LTEwOTggV0lOIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnVuaWZvcm1fYXBpLnJhbmRvbS44ID0g
RkFJTAotMTA5OCBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudW5pZm9ybV9hcGkucmFuZG9t
LjgxID0gRkFJTAotMTEwMSBXSU4gOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwucG9seWdvbl9vZmZz
ZXQuZml4ZWQxNl9yZW5kZXJfd2l0aF91bml0cyA9IEZBSUwKLTExMDEgV0lOIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnBvbHlnb25fb2Zmc2V0LmZpeGVkMjRfcmVuZGVyX3dpdGhfdW5pdHMgPSBG
QUlMCi0xMTAxIFdJTiA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5saWZldGltZS5hdHRhY2guZGVs
ZXRlZF9pbnB1dC5idWZmZXJfdmVydGV4X2FycmF5ID0gRkFJTAotCi0vLyBXaW5kb3dzIEludGVs
LXNwZWNpZmljIGZhaWx1cmVzCi0KLTEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlv
bmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWxvZC5pc2FtcGxlcmN1YmVfKiA9
IEZBSUwKLTEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4
dHVyZV9mdW5jdGlvbnMudGV4dHVyZWxvZC51c2FtcGxlcmN1YmVfKiA9IEZBSUwKLTEzNDkgV0lO
IElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMu
dGV4dHVyZWdyYWQuaXNhbXBsZXJjdWJlX3ZlcnRleCA9IEZBSUwKLTEzNDkgV0lOIElOVEVMIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWdy
YWQudXNhbXBsZXJjdWJlX3ZlcnRleCA9IEZBSUwKLTEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnNoYWRlcnMudGV4dHVyZV9mdW5jdGlvbnMudGV4dHVyZWdyYWQudXNhbXBs
ZXJjdWJlX2ZyYWdtZW50ID0gRkFJTAotMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwudGV4dHVyZS51bml0cy4yX3VuaXRzLm9ubHlfY3ViZS4wID0gRkFJTAotMTM0OSBXSU4g
SU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy4yX3VuaXRzLm9ubHlf
Y3ViZS4yID0gRkFJTAotMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4
dHVyZS51bml0cy4yX3VuaXRzLm9ubHlfY3ViZS40ID0gRkFJTAotMTM0OSBXSU4gSU5URUwgOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy4yX3VuaXRzLm9ubHlfY3ViZS43ID0g
RkFJTAotMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0
cy4yX3VuaXRzLm9ubHlfY3ViZS44ID0gRkFJTAotMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy4yX3VuaXRzLm1peGVkLjQgPSBGQUlMCi0xMzQ5IFdJ
TiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjRfdW5pdHMub25s
eV9jdWJlLjAgPSBGQUlMCi0xMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50
ZXh0dXJlLnVuaXRzLjRfdW5pdHMub25seV9jdWJlLjEgPSBGQUlMCi0xMzQ5IFdJTiBJTlRFTCA6
IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjRfdW5pdHMub25seV9jdWJlLjIg
PSBGQUlMCi0xMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVu
aXRzLjRfdW5pdHMub25seV9jdWJlLjYgPSBGQUlMCi0xMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjRfdW5pdHMub25seV9jdWJlLjcgPSBGQUlMCi0x
MzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjRfdW5p
dHMub25seV9jdWJlLjggPSBGQUlMCi0xMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC50ZXh0dXJlLnVuaXRzLjRfdW5pdHMub25seV9jdWJlLjkgPSBGQUlMCi0xMzQ5IFdJTiBJ
TlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjRfdW5pdHMubWl4ZWQu
NCA9IEZBSUwKLTEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUu
dW5pdHMuNF91bml0cy5taXhlZC42ID0gRkFJTAotMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMz
LmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy40X3VuaXRzLm1peGVkLjcgPSBGQUlMCi0xMzQ5IFdJ
TiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLjhfdW5pdHMub25s
eV9jdWJlLiogPSBGQUlMCi0xMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC50
ZXh0dXJlLnVuaXRzLjhfdW5pdHMubWl4ZWQuMiA9IEZBSUwKLTEzNDkgV0lOIElOVEVMIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuOF91bml0cy5taXhlZC4zID0gRkFJTAot
MTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy44X3Vu
aXRzLm1peGVkLjQgPSBGQUlMCi0xMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC50ZXh0dXJlLnVuaXRzLjhfdW5pdHMubWl4ZWQuNiA9IEZBSUwKLTEzNDkgV0lOIElOVEVMIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUudW5pdHMuOF91bml0cy5taXhlZC43ID0gRkFJ
TAotMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy5h
bGxfdW5pdHMub25seV9jdWJlLiogPSBGQUlMCi0xMzQ5IFdJTiBJTlRFTCA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLmFsbF91bml0cy5taXhlZC4yID0gRkFJTAotMTM0OSBX
SU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy5hbGxfdW5pdHMu
bWl4ZWQuMyA9IEZBSUwKLTEzNDkgV0lOIElOVEVMIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRl
eHR1cmUudW5pdHMuYWxsX3VuaXRzLm1peGVkLjQgPSBGQUlMCi0xMzQ5IFdJTiBJTlRFTCA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLnVuaXRzLmFsbF91bml0cy5taXhlZC42ID0gRkFJ
TAotMTM0OSBXSU4gSU5URUwgOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS51bml0cy5h
bGxfdW5pdHMubWl4ZWQuNyA9IEZBSUwKLQotLy8gTGludXggb25seSBmYWlsdXJlcwotCi0vLyBV
Qk8gdGVzdHMgdHJpZ2dlciBjcmFzaGVzIHdoZW4gZ2V0dGluZyB0aGUgcHJvZ3JhbSBpbmZvIGxv
Zywgc2tpcCB0aGVtIHVudGlsIHRoaXMgaXMgZml4ZWQuCi0xMzIzIExJTlVYIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnViby4qID0gU0tJUAotCi0xMzIzIExJTlVYIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLmRyYXcucmFuZG9tLjIxMCA9IEZBSUwKLTEzMjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuZmJvLmJsaXQuZGVmYXVsdF9mcmFtZWJ1ZmZlci5zcmdiOF9hbHBoYTggPSBGQUlM
Ci0xMzIzIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5ibGl0LmRlZmF1bHRfZnJh
bWVidWZmZXIuc3JnYjhfYWxwaGE4X2xpbmVhcl9vdXRfb2ZfYm91bmRzX2JsaXRfdG9fZGVmYXVs
dCA9IEZBSUwKLTEzMjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQuZGVm
YXVsdF9mcmFtZWJ1ZmZlci5zcmdiOF9hbHBoYThfbGluZWFyX3NjYWxlX2JsaXRfdG9fZGVmYXVs
dCA9IEZBSUwKLTEzMjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmJsaXQuZGVm
YXVsdF9mcmFtZWJ1ZmZlci5zcmdiOF9hbHBoYThfbmVhcmVzdF9zY2FsZV9ibGl0X3RvX2RlZmF1
bHQgPSBGQUlMCi0xMzIzIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5kZXB0aC5k
ZXB0aF90ZXN0X2NsYW1wLmRlcHRoX2NvbXBvbmVudDMyZiA9IEZBSUwKLTEzMjMgTElOVVggOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuZmJvLmRlcHRoLmRlcHRoX3Rlc3RfY2xhbXAuZGVwdGgzMmZf
c3RlbmNpbDggPSBGQUlMCi0xMzIzIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5k
ZXB0aC5kZXB0aF93cml0ZV9jbGFtcC5kZXB0aF9jb21wb25lbnQzMmYgPSBGQUlMCi0xMzIzIExJ
TlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLmZiby5kZXB0aC5kZXB0aF93cml0ZV9jbGFtcC5k
ZXB0aDMyZl9zdGVuY2lsOCA9IEZBSUwKLTEzMjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9u
YWwucmFzdGVyaXphdGlvbi5mYm8ucmJvX211bHRpc2FtcGxlX21heC5wcmltaXRpdmVzLnBvaW50
cyA9IEZBSUwKLTEzMjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc3RhdGVfcXVlcnku
aW50ZWdlcnM2NC5tYXhfc2VydmVyX3dhaXRfdGltZW91dF9nZXRmbG9hdCA9IEZBSUwKLTEzMjMg
TElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAuMmQucHJvamVjdGVk
LmxpbmVhcl9saW5lYXJfY2xhbXAgPSBGQUlMCi0xMzIzIExJTlVYIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLnByb2plY3RlZC5saW5lYXJfbGluZWFyX21pcnJvciA9
IEZBSUwKLTEzMjMgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwudGV4dHVyZS5taXBtYXAu
MmQucHJvamVjdGVkLmxpbmVhcl9saW5lYXJfcmVwZWF0ID0gRkFJTAotMTMyMyBMSU5VWCA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC50ZXh0dXJlLm1pcG1hcC4yZC5wcm9qZWN0ZWQubmVhcmVzdF9s
aW5lYXJfY2xhbXAgPSBGQUlMCi0xMzIzIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRl
eHR1cmUubWlwbWFwLjJkLnByb2plY3RlZC5uZWFyZXN0X2xpbmVhcl9taXJyb3IgPSBGQUlMCi0x
MzIzIExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnRleHR1cmUubWlwbWFwLjJkLnByb2pl
Y3RlZC5uZWFyZXN0X2xpbmVhcl9yZXBlYXQgPSBGQUlMCi0xMDk4IExJTlVYIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnVuaWZvcm1fYXBpLnJhbmRvbS42ID0gRkFJTAotCi0vLyBXaGlsZSBsb29w
cyB3aXRoICdjb250aW51ZScgc2VlbSBmbGFreSBvbiBMaW51eC4gKFBvc3NpYmx5IGFsbCBHTCBy
ZW5kZXJlcnMpCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9v
cHMud2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5jb25kaXRpb25hbF9jb250aW51ZV92ZXJ0ZXgg
PSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMu
d2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5jb25kaXRpb25hbF9jb250aW51ZV9mcmFnbWVudCA9
IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53
aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLnVuY29uZGl0aW9uYWxfY29udGludWVfdmVydGV4ID0g
RkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndo
aWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMudW5jb25kaXRpb25hbF9jb250aW51ZV9mcmFnbWVudCA9
IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53
aGlsZV9jb25zdGFudF9pdGVyYXRpb25zLm9ubHlfY29udGludWVfdmVydGV4ID0gRkFJTAotMTMy
NCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2NvbnN0
YW50X2l0ZXJhdGlvbnMub25seV9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKLTEzMjQgTElOVVgg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9jb25zdGFudF9pdGVy
YXRpb25zLmRvdWJsZV9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5k
b3VibGVfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5taXhlZF9i
cmVha19jb250aW51ZV92ZXJ0ZXggPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfY29uc3RhbnRfaXRlcmF0aW9ucy5taXhlZF9icmVh
a19jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMuY29uZGl0aW9uYWxf
Y29udGludWVfdmVydGV4ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25h
bC5zaGFkZXJzLmxvb3BzLndoaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5jb25kaXRpb25hbF9jb250
aW51ZV9mcmFnbWVudCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
c2hhZGVycy5sb29wcy53aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMudW5jb25kaXRpb25hbF9jb250
aW51ZV92ZXJ0ZXggPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNo
YWRlcnMubG9vcHMud2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLnVuY29uZGl0aW9uYWxfY29udGlu
dWVfZnJhZ21lbnQgPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNo
YWRlcnMubG9vcHMud2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLm9ubHlfY29udGludWVfdmVydGV4
ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3Bz
LndoaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5vbmx5X2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAot
MTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX3Vu
aWZvcm1faXRlcmF0aW9ucy5kb3VibGVfY29udGludWVfdmVydGV4ID0gRkFJTAotMTMyNCBMSU5V
WCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX3VuaWZvcm1faXRl
cmF0aW9ucy5kb3VibGVfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCi0xMzI0IExJTlVYIDogZEVR
UC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfdW5pZm9ybV9pdGVyYXRpb25z
Lm1peGVkX2JyZWFrX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdM
RVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMubWl4
ZWRfYnJlYWtfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVT
My5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfZHluYW1pY19pdGVyYXRpb25zLmNvbmRp
dGlvbmFsX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMuY29uZGl0aW9u
YWxfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5j
dGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfZHluYW1pY19pdGVyYXRpb25zLnVuY29uZGl0aW9u
YWxfY29udGludWVfdmVydGV4ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy51bmNvbmRpdGlvbmFs
X2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rp
b25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5vbmx5X2NvbnRpbnVl
X3ZlcnRleCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVy
cy5sb29wcy53aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMub25seV9jb250aW51ZV9mcmFnbWVudCA9
IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53
aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKLTEz
MjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy53aGlsZV9keW5h
bWljX2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAotMTMyNCBMSU5V
WCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLndoaWxlX2R5bmFtaWNfaXRl
cmF0aW9ucy5taXhlZF9icmVha19jb250aW51ZV92ZXJ0ZXggPSBGQUlMCi0xMzI0IExJTlVYIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMud2hpbGVfZHluYW1pY19pdGVyYXRp
b25zLm1peGVkX2JyZWFrX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2NvbnN0YW50X2l0ZXJh
dGlvbnMuY29uZGl0aW9uYWxfY29udGludWVfdmVydGV4ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRF
UVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2NvbnN0YW50X2l0ZXJh
dGlvbnMuY29uZGl0aW9uYWxfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCi0xMzI0IExJTlVYIDog
ZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfY29uc3RhbnRfaXRl
cmF0aW9ucy51bmNvbmRpdGlvbmFsX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKLTEzMjQgTElOVVgg
OiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9jb25zdGFudF9p
dGVyYXRpb25zLnVuY29uZGl0aW9uYWxfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCi0xMzI0IExJ
TlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfY29uc3Rh
bnRfaXRlcmF0aW9ucy5vbmx5X2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKLTEzMjQgTElOVVggOiBk
RVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9jb25zdGFudF9pdGVy
YXRpb25zLm9ubHlfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1H
TEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfY29uc3RhbnRfaXRlcmF0aW9u
cy5kb3VibGVfY29udGludWVfdmVydGV4ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMuZG91
YmxlX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMubWl4ZWRf
YnJlYWtfY29udGludWVfdmVydGV4ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVu
Y3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2NvbnN0YW50X2l0ZXJhdGlvbnMubWl4ZWRf
YnJlYWtfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLmNvbmRp
dGlvbmFsX2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1
bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMuY29uZGl0
aW9uYWxfY29udGludWVfZnJhZ21lbnQgPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5m
dW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLnVuY29u
ZGl0aW9uYWxfY29udGludWVfdmVydGV4ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMu
ZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX3VuaWZvcm1faXRlcmF0aW9ucy51bmNv
bmRpdGlvbmFsX2NvbnRpbnVlX2ZyYWdtZW50ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xF
UzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5v
bmx5X2NvbnRpbnVlX3ZlcnRleCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0
aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMub25seV9jb250
aW51ZV9mcmFnbWVudCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwu
c2hhZGVycy5sb29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRpbnVl
X3ZlcnRleCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVy
cy5sb29wcy5kb193aGlsZV91bmlmb3JtX2l0ZXJhdGlvbnMuZG91YmxlX2NvbnRpbnVlX2ZyYWdt
ZW50ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxv
b3BzLmRvX3doaWxlX3VuaWZvcm1faXRlcmF0aW9ucy5taXhlZF9icmVha19jb250aW51ZV92ZXJ0
ZXggPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9v
cHMuZG9fd2hpbGVfdW5pZm9ybV9pdGVyYXRpb25zLm1peGVkX2JyZWFrX2NvbnRpbnVlX2ZyYWdt
ZW50ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxv
b3BzLmRvX3doaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy5jb25kaXRpb25hbF9jb250aW51ZV92ZXJ0
ZXggPSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9v
cHMuZG9fd2hpbGVfZHluYW1pY19pdGVyYXRpb25zLmNvbmRpdGlvbmFsX2NvbnRpbnVlX2ZyYWdt
ZW50ID0gRkFJTAotMTMyNCBMSU5VWCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxv
b3BzLmRvX3doaWxlX2R5bmFtaWNfaXRlcmF0aW9ucy51bmNvbmRpdGlvbmFsX2NvbnRpbnVlX3Zl
cnRleCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5s
b29wcy5kb193aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMudW5jb25kaXRpb25hbF9jb250aW51ZV9m
cmFnbWVudCA9IEZBSUwKLTEzMjQgTElOVVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVy
cy5sb29wcy5kb193aGlsZV9keW5hbWljX2l0ZXJhdGlvbnMub25seV9jb250aW51ZV92ZXJ0ZXgg
PSBGQUlMCi0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMu
ZG9fd2hpbGVfZHluYW1pY19pdGVyYXRpb25zLm9ubHlfY29udGludWVfZnJhZ21lbnQgPSBGQUlM
Ci0xMzI0IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hp
bGVfZHluYW1pY19pdGVyYXRpb25zLmRvdWJsZV9jb250aW51ZV92ZXJ0ZXggPSBGQUlMCi0xMzI0
IExJTlVYIDogZEVRUC1HTEVTMy5mdW5jdGlvbmFsLnNoYWRlcnMubG9vcHMuZG9fd2hpbGVfZHlu
YW1pY19pdGVyYXRpb25zLmRvdWJsZV9jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKLTEzMjQgTElO
VVggOiBkRVFQLUdMRVMzLmZ1bmN0aW9uYWwuc2hhZGVycy5sb29wcy5kb193aGlsZV9keW5hbWlj
X2l0ZXJhdGlvbnMubWl4ZWRfYnJlYWtfY29udGludWVfdmVydGV4ID0gRkFJTAotMTMyNCBMSU5V
WCA6IGRFUVAtR0xFUzMuZnVuY3Rpb25hbC5zaGFkZXJzLmxvb3BzLmRvX3doaWxlX2R5bmFtaWNf
aXRlcmF0aW9ucy5taXhlZF9icmVha19jb250aW51ZV9mcmFnbWVudCA9IEZBSUwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvdGN1QU5H
TEVOYXRpdmVEaXNwbGF5RmFjdG9yeS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZGVxcF9zdXBwb3J0L3RjdUFOR0xFTmF0aXZlRGlzcGxheUZhY3RvcnkuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzQzMmI0NzA0NC4uMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VBTkdMRU5h
dGl2ZURpc3BsYXlGYWN0b3J5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyNiArMCwwIEBACi0v
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLSAqIGRyYXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gVGVzdGVy
IENvcmUKLSAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCi0g
KiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICog
TGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNl
bnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNl
IHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vu
c2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNF
LTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg
dG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNl
IGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJ
RVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4K
LSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBw
ZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAq
LwotCi0jaW5jbHVkZSAidGN1QU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9yeS5oIgotCi0jaW5jbHVk
ZSA8RUdML2VnbC5oPgotI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KLQotI2luY2x1ZGUgImRlQ2xv
Y2suaCIKLSNpbmNsdWRlICJkZU1lbW9yeS5oIgotI2luY2x1ZGUgImRlVGhyZWFkLmgiCi0jaW5j
bHVkZSAiZWdsdURlZnMuaHBwIgotI2luY2x1ZGUgImVnbHdMaWJyYXJ5LmhwcCIKLSNpbmNsdWRl
ICJPU1BpeG1hcC5oIgotI2luY2x1ZGUgIk9TV2luZG93LmgiCi0jaW5jbHVkZSAidGN1VGV4dHVy
ZS5ocHAiCi0KLS8vIGNsYW5nLWZvcm1hdCBvZmYKLSNpZiAoREVfT1MgPT0gREVfT1NfV0lOMzIp
Ci0gICAgI2RlZmluZSBBTkdMRV9FR0xfTElCUkFSWV9OQU1FICJsaWJFR0wuZGxsIgotI2VsaWYg
KERFX09TID09IERFX09TX1VOSVgpIHx8IChERV9PUyA9PSBERV9PU19BTkRST0lEKQotICAgICNk
ZWZpbmUgQU5HTEVfRUdMX0xJQlJBUllfTkFNRSAibGliRUdMLnNvIgotI2VsaWYgKERFX09TID09
IERFX09TX09TWCkKLSAgICAjZGVmaW5lIEFOR0xFX0VHTF9MSUJSQVJZX05BTUUgImxpYkVHTC5k
eWxpYiIKLSNlbHNlCi0gICAgI2Vycm9yICJVbnN1cHBvcnRlZCBwbGF0Zm9ybSIKLSNlbmRpZgot
Ly8gY2xhbmctZm9ybWF0IG9uCi0KLW5hbWVzcGFjZSB0Y3UKLXsKLW5hbWVzcGFjZQotewotCi1l
bnVtCi17Ci0gICAgREVGQVVMVF9TVVJGQUNFX1dJRFRIICAgICAgID0gNDAwLAotICAgIERFRkFV
TFRfU1VSRkFDRV9IRUlHSFQgICAgICA9IDMwMCwKLSAgICBXQUlUX1dJTkRPV19WSVNJQkxFX01T
ICAgICAgPSA1MDAgICAvLyE8IFRpbWUgdG8gd2FpdCBiZWZvcmUgaXNzdWluZyBzY3JlZW5zaG90
IGFmdGVyIGNoYW5naW5nIHdpbmRvdyB2aXNpYmlsaXR5IChoYWNrIGZvciBEV00pCi19OwotCi1z
dGF0aWMgY29uc3QgZWdsdTo6TmF0aXZlRGlzcGxheTo6Q2FwYWJpbGl0eSBESVNQTEFZX0NBUEFC
SUxJVElFUyA9IGVnbHU6Ok5hdGl2ZURpc3BsYXk6OkNBUEFCSUxJVFlfR0VUX0RJU1BMQVlfUExB
VEZPUk07Ci1zdGF0aWMgY29uc3QgZWdsdTo6TmF0aXZlUGl4bWFwOjpDYXBhYmlsaXR5ICBCSVRN
QVBfQ0FQQUJJTElUSUVTICA9IGVnbHU6Ok5hdGl2ZVBpeG1hcDo6Q0FQQUJJTElUWV9DUkVBVEVf
U1VSRkFDRV9MRUdBQ1k7Ci1zdGF0aWMgY29uc3QgZWdsdTo6TmF0aXZlV2luZG93OjpDYXBhYmls
aXR5ICBXSU5ET1dfQ0FQQUJJTElUSUVTICA9IChlZ2x1OjpOYXRpdmVXaW5kb3c6OkNhcGFiaWxp
dHkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoZWdsdTo6TmF0aXZlV2luZG93OjpDQVBBQklMSVRZX0NSRUFURV9T
VVJGQUNFX0xFR0FDWSAgICB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsdTo6TmF0aXZlV2luZG93OjpDQVBB
QklMSVRZX0dFVF9TVVJGQUNFX1NJWkUgICAgICAgICB8Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsdTo6TmF0
aXZlV2luZG93OjpDQVBBQklMSVRZX0dFVF9TQ1JFRU5fU0laRSAgICAgICAgICB8Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZWdsdTo6TmF0aXZlV2luZG93OjpDQVBBQklMSVRZX1JFQURfU0NSRUVOX1BJWEVMUyAg
ICAgICB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZWdsdTo6TmF0aXZlV2luZG93OjpDQVBBQklMSVRZX1NFVF9T
VVJGQUNFX1NJWkUgICAgICAgICB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWdsdTo6TmF0aXZlV2luZG93OjpD
QVBBQklMSVRZX0NIQU5HRV9WSVNJQklMSVRZKTsKLQotY2xhc3MgQU5HTEVOYXRpdmVEaXNwbGF5
IDogcHVibGljIGVnbHU6Ok5hdGl2ZURpc3BsYXkKLXsKLSAgcHVibGljOgotICAgIEFOR0xFTmF0
aXZlRGlzcGxheShjb25zdCBzdGQ6OnZlY3RvcjxlZ2x3OjpFR0xBdHRyaWI+ICZhdHRyaWJzKTsK
LSAgICB2aXJ0dWFsIH5BTkdMRU5hdGl2ZURpc3BsYXkoKSB7fQotCi0gICAgdm9pZCAqZ2V0UGxh
dGZvcm1OYXRpdmUoKSBvdmVycmlkZSB7IHJldHVybiBtRGV2aWNlQ29udGV4dDsgfQotICAgIGNv
bnN0IGVnbHc6OkVHTEF0dHJpYiAqZ2V0UGxhdGZvcm1BdHRyaWJ1dGVzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gJm1QbGF0Zm9ybUF0dHJpYnV0ZXNbMF07IH0KLSAgICBjb25zdCBlZ2x3OjpM
aWJyYXJ5ICZnZXRMaWJyYXJ5KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbUxpYnJhcnk7IH0K
LQotICAgIEVHTE5hdGl2ZURpc3BsYXlUeXBlIGdldERldmljZUNvbnRleHQoKSB7IHJldHVybiBt
RGV2aWNlQ29udGV4dDsgfQotCi0gIHByaXZhdGU6Ci0gICAgRUdMTmF0aXZlRGlzcGxheVR5cGUg
bURldmljZUNvbnRleHQ7Ci0gICAgZWdsdzo6RGVmYXVsdExpYnJhcnkgbUxpYnJhcnk7Ci0gICAg
c3RkOjp2ZWN0b3I8ZWdsdzo6RUdMQXR0cmliPiBtUGxhdGZvcm1BdHRyaWJ1dGVzOwotfTsKLQot
Y2xhc3MgTmF0aXZlUGl4bWFwRmFjdG9yeSA6IHB1YmxpYyBlZ2x1OjpOYXRpdmVQaXhtYXBGYWN0
b3J5Ci17Ci0gIHB1YmxpYzoKLSAgICBOYXRpdmVQaXhtYXBGYWN0b3J5KCk7Ci0gICAgfk5hdGl2
ZVBpeG1hcEZhY3RvcnkoKSB7fQotCi0gICAgZWdsdTo6TmF0aXZlUGl4bWFwICpjcmVhdGVQaXht
YXAoZWdsdTo6TmF0aXZlRGlzcGxheSAqbmF0aXZlRGlzcGxheSwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KSBjb25zdCBvdmVycmlkZTsKLSAgICBlZ2x1OjpOYXRpdmVQaXhtYXAgKmNyZWF0ZVBpeG1h
cChlZ2x1OjpOYXRpdmVEaXNwbGF5ICpuYXRpdmVEaXNwbGF5LCBlZ2x3OjpFR0xEaXNwbGF5IGRp
c3BsYXksIGVnbHc6OkVHTENvbmZpZyBjb25maWcsIGNvbnN0IGVnbHc6OkVHTEF0dHJpYiogYXR0
cmliTGlzdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSBjb25zdCBvdmVycmlkZTsKLX07Ci0KLWNs
YXNzIE5hdGl2ZVBpeG1hcCA6IHB1YmxpYyBlZ2x1OjpOYXRpdmVQaXhtYXAKLXsKLSAgcHVibGlj
OgotICAgIE5hdGl2ZVBpeG1hcChFR0xOYXRpdmVEaXNwbGF5VHlwZSBkaXNwbGF5LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQsIGludCBiaXREZXB0aCk7Ci0gICAgdmlydHVhbCB+TmF0aXZlUGl4bWFw
KCk7Ci0KLSAgICBlZ2x3OjpFR0xOYXRpdmVQaXhtYXBUeXBlIGdldExlZ2FjeU5hdGl2ZSgpIG92
ZXJyaWRlOwotCi0gIHByaXZhdGU6Ci0gICAgT1NQaXhtYXAgKm1QaXhtYXA7Ci19OwotCi1jbGFz
cyBOYXRpdmVXaW5kb3dGYWN0b3J5IDogcHVibGljIGVnbHU6Ok5hdGl2ZVdpbmRvd0ZhY3RvcnkK
LXsKLSAgcHVibGljOgotICAgIE5hdGl2ZVdpbmRvd0ZhY3RvcnkoRXZlbnRTdGF0ZSAqZXZlbnRT
dGF0ZSk7Ci0gICAgfk5hdGl2ZVdpbmRvd0ZhY3RvcnkoKSBvdmVycmlkZSB7fQotCi0gICAgZWds
dTo6TmF0aXZlV2luZG93ICpjcmVhdGVXaW5kb3coZWdsdTo6TmF0aXZlRGlzcGxheSAqbmF0aXZl
RGlzcGxheSwgY29uc3QgZWdsdTo6V2luZG93UGFyYW1zICZwYXJhbXMpIGNvbnN0IG92ZXJyaWRl
OwotCi0gIHByaXZhdGU6Ci0gICAgRXZlbnRTdGF0ZSAqbUV2ZW50czsKLX07Ci0KLWNsYXNzIE5h
dGl2ZVdpbmRvdyA6IHB1YmxpYyBlZ2x1OjpOYXRpdmVXaW5kb3cKLXsKLSAgcHVibGljOgotICAg
IE5hdGl2ZVdpbmRvdyhBTkdMRU5hdGl2ZURpc3BsYXkgKm5hdGl2ZURpc3BsYXksIGNvbnN0IGVn
bHU6OldpbmRvd1BhcmFtcyAmcGFyYW1zLCBFdmVudFN0YXRlICpldmVudFN0YXRlKTsKLSAgICB+
TmF0aXZlV2luZG93KCkgb3ZlcnJpZGU7Ci0KLSAgICBlZ2x3OjpFR0xOYXRpdmVXaW5kb3dUeXBl
IGdldExlZ2FjeU5hdGl2ZSgpIG92ZXJyaWRlOwotICAgIElWZWMyIGdldFN1cmZhY2VTaXplKCkg
Y29uc3Qgb3ZlcnJpZGU7Ci0gICAgSVZlYzIgZ2V0U2NyZWVuU2l6ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIGdldFN1cmZhY2VTaXplKCk7IH0KLSAgICB2b2lkIHByb2Nlc3NFdmVudHMoKSBv
dmVycmlkZTsKLSAgICB2b2lkIHNldFN1cmZhY2VTaXplKElWZWMyIHNpemUpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2V0VmlzaWJpbGl0eShlZ2x1OjpXaW5kb3dQYXJhbXM6OlZpc2liaWxpdHkgdmlz
aWJpbGl0eSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWFkU2NyZWVuUGl4ZWxzKHRjdTo6VGV4dHVy
ZUxldmVsKiBkc3QpIGNvbnN0IG92ZXJyaWRlOwotCi0gIHByaXZhdGU6Ci0gICAgT1NXaW5kb3cg
Km1XaW5kb3c7Ci0gICAgRXZlbnRTdGF0ZSAqbUV2ZW50czsKLX07Ci0KLS8vIEFOR0xFIE5hdGl2
ZURpc3BsYXkKLQotQU5HTEVOYXRpdmVEaXNwbGF5OjpBTkdMRU5hdGl2ZURpc3BsYXkoY29uc3Qg
c3RkOjp2ZWN0b3I8RUdMQXR0cmliPiAmYXR0cmlicykKLSAgICA6IGVnbHU6Ok5hdGl2ZURpc3Bs
YXkoRElTUExBWV9DQVBBQklMSVRJRVMsIEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSwgIkVHTF9F
WFRfcGxhdGZvcm1fYmFzZSIpLAotICAgICAgbURldmljZUNvbnRleHQoRUdMX0RFRkFVTFRfRElT
UExBWSksCi0gICAgICBtTGlicmFyeShBTkdMRV9FR0xfTElCUkFSWV9OQU1FKSwKLSAgICAgIG1Q
bGF0Zm9ybUF0dHJpYnV0ZXMoYXR0cmlicykKLXsKLX0KLQotLy8gTmF0aXZlUGl4bWFwCi0KLU5h
dGl2ZVBpeG1hcDo6TmF0aXZlUGl4bWFwKEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRpc3BsYXksIGlu
dCB3aWR0aCwgaW50IGhlaWdodCwgaW50IGJpdERlcHRoKQotICAgIDogZWdsdTo6TmF0aXZlUGl4
bWFwKEJJVE1BUF9DQVBBQklMSVRJRVMpLAotICAgICAgbVBpeG1hcChDcmVhdGVPU1BpeG1hcCgp
KQotewotICAgIGlmICghbVBpeG1hcCkKLSAgICB7Ci0gICAgICAgIHRocm93IFJlc291cmNlRXJy
b3IoIkZhaWxlZCB0byBjcmVhdGUgcGl4bWFwIiwgREVfTlVMTCwgX19GSUxFX18sIF9fTElORV9f
KTsKLSAgICB9Ci0KLSAgICBpZiAoIW1QaXhtYXAtPmluaXRpYWxpemUoZGlzcGxheSwgd2lkdGgs
IGhlaWdodCwgYml0RGVwdGgpKQotICAgIHsKLSAgICAgICAgdGhyb3cgUmVzb3VyY2VFcnJvcigi
RmFpbGVkIHRvIGluaXRpYWxpemUgcGl4bWFwIiwgREVfTlVMTCwgX19GSUxFX18sIF9fTElORV9f
KTsKLSAgICB9Ci19Ci0KLU5hdGl2ZVBpeG1hcDo6fk5hdGl2ZVBpeG1hcCgpCi17Ci0gICAgZGVs
ZXRlIG1QaXhtYXA7Ci19Ci0KLWVnbHc6OkVHTE5hdGl2ZVBpeG1hcFR5cGUgTmF0aXZlUGl4bWFw
OjpnZXRMZWdhY3lOYXRpdmUoKQotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGVnbHc6
OkVHTE5hdGl2ZVBpeG1hcFR5cGU+KG1QaXhtYXAtPmdldE5hdGl2ZVBpeG1hcCgpKTsKLX0KLQot
Ly8gTmF0aXZlUGl4bWFwRmFjdG9yeQotCi1OYXRpdmVQaXhtYXBGYWN0b3J5OjpOYXRpdmVQaXht
YXBGYWN0b3J5KCkKLSAgICA6IGVnbHU6Ok5hdGl2ZVBpeG1hcEZhY3RvcnkoImJpdG1hcCIsICJB
TkdMRSBCaXRtYXAiLCBCSVRNQVBfQ0FQQUJJTElUSUVTKQotewotfQotCi1lZ2x1OjpOYXRpdmVQ
aXhtYXAgKk5hdGl2ZVBpeG1hcEZhY3Rvcnk6OmNyZWF0ZVBpeG1hcCAoZWdsdTo6TmF0aXZlRGlz
cGxheSogbmF0aXZlRGlzcGxheSwgZWdsdzo6RUdMRGlzcGxheSBkaXNwbGF5LCBlZ2x3OjpFR0xD
b25maWcgY29uZmlnLCBjb25zdCBlZ2x3OjpFR0xBdHRyaWIqIGF0dHJpYkxpc3QsIGludCB3aWR0
aCwgaW50IGhlaWdodCkgY29uc3QKLXsKLSAgICBjb25zdCBlZ2x3OjpMaWJyYXJ5JiAgICBlZ2wg
ICAgICAgICA9IG5hdGl2ZURpc3BsYXktPmdldExpYnJhcnkoKTsKLSAgICBpbnQgICAgICAgICAg
ICAgcmVkQml0cyAgICAgPSAwOwotICAgIGludCAgICAgICAgICAgICBncmVlbkJpdHMgICA9IDA7
Ci0gICAgaW50ICAgICAgICAgICAgIGJsdWVCaXRzICAgID0gMDsKLSAgICBpbnQgICAgICAgICAg
ICAgYWxwaGFCaXRzICAgPSAwOwotICAgIGludCAgICAgICAgICAgICBiaXRTdW0gICAgICA9IDA7
Ci0KLSAgICBERV9BU1NFUlQoZGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSk7Ci0KLSAgICBlZ2wu
Z2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX1JFRF9TSVpFLCAgICAgICZyZWRC
aXRzKTsKLSAgICBlZ2wuZ2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX0dSRUVO
X1NJWkUsICAgICZncmVlbkJpdHMpOwotICAgIGVnbC5nZXRDb25maWdBdHRyaWIoZGlzcGxheSwg
Y29uZmlnLCBFR0xfQkxVRV9TSVpFLCAgICAgJmJsdWVCaXRzKTsKLSAgICBlZ2wuZ2V0Q29uZmln
QXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX0FMUEhBX1NJWkUsICAgICZhbHBoYUJpdHMpOwot
ICAgIEVHTFVfQ0hFQ0tfTVNHKGVnbCwgImVnbEdldENvbmZpZ0F0dHJpYigpIik7Ci0KLSAgICBi
aXRTdW0gPSByZWRCaXRzK2dyZWVuQml0cytibHVlQml0cythbHBoYUJpdHM7Ci0KLSAgICByZXR1
cm4gbmV3IE5hdGl2ZVBpeG1hcChkeW5hbWljX2Nhc3Q8QU5HTEVOYXRpdmVEaXNwbGF5Kj4obmF0
aXZlRGlzcGxheSktPmdldERldmljZUNvbnRleHQoKSwgd2lkdGgsIGhlaWdodCwgYml0U3VtKTsK
LX0KLQotZWdsdTo6TmF0aXZlUGl4bWFwICpOYXRpdmVQaXhtYXBGYWN0b3J5OjpjcmVhdGVQaXht
YXAoZWdsdTo6TmF0aXZlRGlzcGxheSogbmF0aXZlRGlzcGxheSwgaW50IHdpZHRoLCBpbnQgaGVp
Z2h0KSBjb25zdAotewotICAgIGNvbnN0IGludCBkZWZhdWx0RGVwdGggPSAzMjsKLSAgICByZXR1
cm4gbmV3IE5hdGl2ZVBpeG1hcChkeW5hbWljX2Nhc3Q8QU5HTEVOYXRpdmVEaXNwbGF5Kj4obmF0
aXZlRGlzcGxheSktPmdldERldmljZUNvbnRleHQoKSwgd2lkdGgsIGhlaWdodCwgZGVmYXVsdERl
cHRoKTsKLX0KLQotLy8gTmF0aXZlV2luZG93RmFjdG9yeQotCi1OYXRpdmVXaW5kb3dGYWN0b3J5
OjpOYXRpdmVXaW5kb3dGYWN0b3J5KEV2ZW50U3RhdGUgKmV2ZW50U3RhdGUpCi0gICAgOiBlZ2x1
OjpOYXRpdmVXaW5kb3dGYWN0b3J5KCJ3aW5kb3ciLCAiQU5HTEUgV2luZG93IiwgV0lORE9XX0NB
UEFCSUxJVElFUyksCi0gICAgICBtRXZlbnRzKGV2ZW50U3RhdGUpCi17Ci19Ci0KLWVnbHU6Ok5h
dGl2ZVdpbmRvdyAqTmF0aXZlV2luZG93RmFjdG9yeTo6Y3JlYXRlV2luZG93KGVnbHU6Ok5hdGl2
ZURpc3BsYXkqIG5hdGl2ZURpc3BsYXksIGNvbnN0IGVnbHU6OldpbmRvd1BhcmFtcyYgcGFyYW1z
KSBjb25zdAotewotICAgIHJldHVybiBuZXcgTmF0aXZlV2luZG93KGR5bmFtaWNfY2FzdDxBTkdM
RU5hdGl2ZURpc3BsYXkqPihuYXRpdmVEaXNwbGF5KSwgcGFyYW1zLCBtRXZlbnRzKTsKLX0KLQot
Ly8gTmF0aXZlV2luZG93Ci0KLU5hdGl2ZVdpbmRvdzo6TmF0aXZlV2luZG93KEFOR0xFTmF0aXZl
RGlzcGxheSAqbmF0aXZlRGlzcGxheSwgY29uc3QgZWdsdTo6V2luZG93UGFyYW1zJiBwYXJhbXMs
IEV2ZW50U3RhdGUgKmV2ZW50U3RhdGUpCi0gICAgOiBlZ2x1OjpOYXRpdmVXaW5kb3coV0lORE9X
X0NBUEFCSUxJVElFUyksCi0gICAgICBtV2luZG93KENyZWF0ZU9TV2luZG93KCkpLAotICAgICAg
bUV2ZW50cyhldmVudFN0YXRlKQotewotICAgIGJvb2wgaW5pdGlhbGl6ZWQgPSBtV2luZG93LT5p
bml0aWFsaXplKCJkRVFQIEFOR0xFIFRlc3RzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwYXJhbXMud2lkdGggPT0gZWdsdTo6V2luZG93UGFyYW1zOjpTSVpF
X0RPTlRfQ0FSRSA/IERFRkFVTFRfU1VSRkFDRV9XSURUSCA6IHBhcmFtcy53aWR0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuaGVpZ2h0ID09IGVn
bHU6OldpbmRvd1BhcmFtczo6U0laRV9ET05UX0NBUkUgPyBERUZBVUxUX1NVUkZBQ0VfSEVJR0hU
IDogcGFyYW1zLmhlaWdodCk7Ci0gICAgVENVX0NIRUNLKGluaXRpYWxpemVkKTsKLQotICAgIGlm
IChwYXJhbXMudmlzaWJpbGl0eSAhPSBlZ2x1OjpXaW5kb3dQYXJhbXM6OlZJU0lCSUxJVFlfRE9O
VF9DQVJFKQotICAgICAgICBzZXRWaXNpYmlsaXR5KHBhcmFtcy52aXNpYmlsaXR5KTsKLX0KLQot
dm9pZCBOYXRpdmVXaW5kb3c6OnNldFZpc2liaWxpdHkoZWdsdTo6V2luZG93UGFyYW1zOjpWaXNp
YmlsaXR5IHZpc2liaWxpdHkpCi17Ci0gICAgc3dpdGNoICh2aXNpYmlsaXR5KQotICAgIHsKLSAg
ICAgIGNhc2UgZWdsdTo6V2luZG93UGFyYW1zOjpWSVNJQklMSVRZX0hJRERFTjoKLSAgICAgICAg
bVdpbmRvdy0+c2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNl
IGVnbHU6OldpbmRvd1BhcmFtczo6VklTSUJJTElUWV9WSVNJQkxFOgotICAgICAgY2FzZSBlZ2x1
OjpXaW5kb3dQYXJhbXM6OlZJU0lCSUxJVFlfRlVMTFNDUkVFTjoKLSAgICAgICAgLy8gXHRvZG8g
WzIwMTQtMDMtMTIgcHlyeV0gSW1wbGVtZW50IEZVTExTQ1JFRU4sIG9yIGF0IGxlYXN0IFNXX01B
WElNSVpFLgotICAgICAgICBtV2luZG93LT5zZXRWaXNpYmxlKHRydWUpOwotICAgICAgICBicmVh
azsKLQotICAgICAgZGVmYXVsdDoKLSAgICAgICAgREVfQVNTRVJUKERFX0ZBTFNFKTsKLSAgICB9
Ci19Ci0KLU5hdGl2ZVdpbmRvdzo6fk5hdGl2ZVdpbmRvdygpCi17Ci0gICAgZGVsZXRlIG1XaW5k
b3c7Ci19Ci0KLWVnbHc6OkVHTE5hdGl2ZVdpbmRvd1R5cGUgTmF0aXZlV2luZG93OjpnZXRMZWdh
Y3lOYXRpdmUoKQotewotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGVnbHc6OkVHTE5hdGl2
ZVdpbmRvd1R5cGU+KG1XaW5kb3ctPmdldE5hdGl2ZVdpbmRvdygpKTsKLX0KLQotSVZlYzIgTmF0
aXZlV2luZG93OjpnZXRTdXJmYWNlU2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIElWZWMyKG1X
aW5kb3ctPmdldFdpZHRoKCksIG1XaW5kb3ctPmdldEhlaWdodCgpKTsKLX0KLQotdm9pZCBOYXRp
dmVXaW5kb3c6OnByb2Nlc3NFdmVudHMoKQotewotICAgIG1XaW5kb3ctPm1lc3NhZ2VMb29wKCk7
Ci0KLSAgICAvLyBMb29rIGZvciBhIHF1aXQgZXZlbnQgdG8gZm9yd2FyZCB0byB0aGUgRXZlbnRT
dGF0ZQotICAgIEV2ZW50IGV2ZW50OwotICAgIHdoaWxlIChtV2luZG93LT5wb3BFdmVudCgmZXZl
bnQpKQotICAgIHsKLSAgICAgICAgaWYgKGV2ZW50LlR5cGUgPT0gRXZlbnQ6OkVWRU5UX0NMT1NF
RCkKLSAgICAgICAgewotICAgICAgICAgICAgbUV2ZW50cy0+c2lnbmFsUXVpdEV2ZW50KCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgTmF0aXZlV2luZG93OjpzZXRTdXJmYWNlU2l6ZShJ
VmVjMiBzaXplKQotewotICAgIG1XaW5kb3ctPnJlc2l6ZShzaXplLngoKSwgc2l6ZS55KCkpOwot
fQotCi12b2lkIE5hdGl2ZVdpbmRvdzo6cmVhZFNjcmVlblBpeGVscyh0Y3U6OlRleHR1cmVMZXZl
bCAqZHN0KSBjb25zdAotewotICAgIGRzdC0+c2V0U3RvcmFnZShUZXh0dXJlRm9ybWF0KFRleHR1
cmVGb3JtYXQ6OkJHUkEsIFRleHR1cmVGb3JtYXQ6OlVOT1JNX0lOVDgpLCBtV2luZG93LT5nZXRX
aWR0aCgpLCBtV2luZG93LT5nZXRIZWlnaHQoKSk7Ci0gICAgYm9vbCBzdWNjZXNzID0gbVdpbmRv
dy0+dGFrZVNjcmVlbnNob3QocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZHN0LT5nZXRBY2Nl
c3MoKS5nZXREYXRhUHRyKCkpKTsKLSAgICBERV9BU1NFUlQoc3VjY2Vzcyk7Ci0gICAgREVfVU5S
RUYoc3VjY2Vzcyk7Ci19Ci0KLX0gLy8gYW5vbnltb3VzCi0KLUFOR0xFTmF0aXZlRGlzcGxheUZh
Y3Rvcnk6OkFOR0xFTmF0aXZlRGlzcGxheUZhY3RvcnkoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZkZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8ZWdsdzo6RUdMQXR0
cmliPiAmcGxhdGZvcm1BdHRyaWJ1dGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFdmVudFN0YXRlICpldmVudFN0YXRlKQotICAgIDogZWds
dTo6TmF0aXZlRGlzcGxheUZhY3RvcnkobmFtZSwgZGVzY3JpcHRpb24sIERJU1BMQVlfQ0FQQUJJ
TElUSUVTLCBFR0xfUExBVEZPUk1fQU5HTEVfQU5HTEUsICJFR0xfRVhUX3BsYXRmb3JtX2Jhc2Ui
KSwKLSAgICAgIG1QbGF0Zm9ybUF0dHJpYnV0ZXMocGxhdGZvcm1BdHRyaWJ1dGVzKQotewotICAg
IG1fbmF0aXZlV2luZG93UmVnaXN0cnkucmVnaXN0ZXJGYWN0b3J5KG5ldyBOYXRpdmVXaW5kb3dG
YWN0b3J5KGV2ZW50U3RhdGUpKTsKLSAgICBtX25hdGl2ZVBpeG1hcFJlZ2lzdHJ5LnJlZ2lzdGVy
RmFjdG9yeShuZXcgTmF0aXZlUGl4bWFwRmFjdG9yeSgpKTsKLX0KLQotQU5HTEVOYXRpdmVEaXNw
bGF5RmFjdG9yeTo6fkFOR0xFTmF0aXZlRGlzcGxheUZhY3RvcnkoKQotewotfQotCi1lZ2x1OjpO
YXRpdmVEaXNwbGF5ICpBTkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5OjpjcmVhdGVEaXNwbGF5KGNv
bnN0IGVnbHc6OkVHTEF0dHJpYiAqYXR0cmliTGlzdCkgY29uc3QKLXsKLSAgICBERV9VTlJFRihh
dHRyaWJMaXN0KTsKLSAgICByZXR1cm4gbmV3IEFOR0xFTmF0aXZlRGlzcGxheShtUGxhdGZvcm1B
dHRyaWJ1dGVzKTsKLX0KLQotfSAvLyB0Y3UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvdGN1QU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9y
eS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VB
TkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDhlZWNmNzU3ZjI2Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZGVxcF9zdXBwb3J0L3RjdUFOR0xFTmF0aXZlRGlzcGxheUZhY3RvcnkuaAorKysg
L2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogZHJhd0Vs
ZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBUZXN0ZXIgQ29yZQotICogLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICoKLSAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lk
IE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExp
Y2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0
aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBt
YXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3
dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVk
IGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICog
ZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElT
IiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5E
LCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUg
c3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlv
bnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKgotICovCi0KLSNpZm5kZWYgVENVX0FOR0xFX1dJTjMy
X05BVElWRV9ESVNQTEFZX0ZBQ1RPUllfSF8KLSNkZWZpbmUgVENVX0FOR0xFX1dJTjMyX05BVElW
RV9ESVNQTEFZX0ZBQ1RPUllfSF8KLQotI2luY2x1ZGUgInRjdURlZnMuaHBwIgotI2luY2x1ZGUg
ImVnbHVOYXRpdmVEaXNwbGF5LmhwcCIKLSNpbmNsdWRlICJlZ2x3RGVmcy5ocHAiCi0KLW5hbWVz
cGFjZSB0Y3UKLXsKLQotY2xhc3MgRXZlbnRTdGF0ZQotewotICBwdWJsaWM6Ci0gICAgRXZlbnRT
dGF0ZSgpCi0gICAgICAgIDogbVF1aXQoZmFsc2UpCi0gICAgewotICAgIH0KLSAgICBib29sIHF1
aXRTaWduYWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1RdWl0OyB9OwotICAgIHZvaWQgc2lnbmFsUXVp
dEV2ZW50KCkgeyBtUXVpdCA9IHRydWU7IH07Ci0KLSAgcHJpdmF0ZToKLSAgICBib29sIG1RdWl0
OwotfTsKLQotY2xhc3MgQU5HTEVOYXRpdmVEaXNwbGF5RmFjdG9yeSA6IHB1YmxpYyBlZ2x1OjpO
YXRpdmVEaXNwbGF5RmFjdG9yeQotewotICBwdWJsaWM6Ci0gICAgQU5HTEVOYXRpdmVEaXNwbGF5
RmFjdG9yeShjb25zdCBzdGQ6OnN0cmluZyAmbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZkZXNjcmlwdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGVnbHc6OkVHTEF0dHJpYj4gJnBsYXRmb3Jt
QXR0cmlidXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50U3RhdGUgKmV2
ZW50U3RhdGUpOwotICAgIH5BTkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5KCkgb3ZlcnJpZGU7Ci0K
LSAgICBlZ2x1OjpOYXRpdmVEaXNwbGF5ICpjcmVhdGVEaXNwbGF5KGNvbnN0IGVnbHc6OkVHTEF0
dHJpYiogYXR0cmliTGlzdCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgcHJpdmF0ZToKLSAgICBzdGQ6
OnZlY3RvcjxlZ2x3OjpFR0xBdHRyaWI+IG1QbGF0Zm9ybUF0dHJpYnV0ZXM7Ci19OwotCi19IC8v
IHRjdQotCi0jZW5kaWYgLy8gVENVX0FOR0xFX1dJTjMyX05BVElWRV9ESVNQTEFZX0ZBQ1RPUllf
SF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1
cHBvcnQvdGN1QU5HTEVQbGF0Zm9ybS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZGVxcF9zdXBwb3J0L3RjdUFOR0xFUGxhdGZvcm0uY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA0NDQxY2RlOThlNC4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VBTkdMRVBsYXRmb3JtLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIGRy
YXdFbGVtZW50cyBRdWFsaXR5IFByb2dyYW0gVGVzdGVyIENvcmUKLSAqIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCi0gKiBDb3B5cmlnaHQgMjAxNCBUaGUgQW5k
cm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNo
ZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1
c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZ
b3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6
Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1
aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUK
LSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJB
UyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkg
S0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3Ig
dGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0
YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICoKLSAqLwotCi0jaW5jbHVkZSAidGN1QU5HTEVQ
bGF0Zm9ybS5oIgotCi0jaW5jbHVkZSA8RUdML2VnbC5oPgotI2luY2x1ZGUgPEVHTC9lZ2xleHQu
aD4KLQotI2luY2x1ZGUgImVnbHVHTENvbnRleHRGYWN0b3J5LmhwcCIKLSNpbmNsdWRlICJzeXN0
ZW1fdXRpbHMuaCIKLSNpbmNsdWRlICJ0Y3VBTkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5LmgiCi0j
aW5jbHVkZSAidGN1TnVsbENvbnRleHRGYWN0b3J5LmhwcCIKLQotbmFtZXNwYWNlIHRjdQotewot
Ci1BTkdMRVBsYXRmb3JtOjpBTkdMRVBsYXRmb3JtKCkKLXsKLSAgICBhbmdsZTo6U2V0TG93UHJp
b3JpdHlQcm9jZXNzKCk7Ci0KLSNpZiAoREVfT1MgPT0gREVfT1NfV0lOMzIpCi0gICAgc3RkOjp2
ZWN0b3I8ZWdsdzo6RUdMQXR0cmliPiBkM2QxMUF0dHJpYnM7Ci0gICAgZDNkMTFBdHRyaWJzLnB1
c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSk7Ci0gICAgZDNkMTFBdHRyaWJz
LnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSk7Ci0gICAgZDNk
MTFBdHRyaWJzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEUp
OwotICAgIGQzZDExQXR0cmlicy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9U
WVBFX0hBUkRXQVJFX0FOR0xFKTsKLSAgICBkM2QxMUF0dHJpYnMucHVzaF9iYWNrKEVHTF9OT05F
KTsKLQotICAgIGF1dG8gKmQzZDExRmFjdG9yeSA9IG5ldyBBTkdMRU5hdGl2ZURpc3BsYXlGYWN0
b3J5KAotICAgICAgICAiYW5nbGUtZDNkMTEiLCAiQU5HTEUgRDNEMTEgRGlzcGxheSIsIGQzZDEx
QXR0cmlicywgJm1FdmVudHMpOwotICAgIG1fbmF0aXZlRGlzcGxheUZhY3RvcnlSZWdpc3RyeS5y
ZWdpc3RlckZhY3RvcnkoZDNkMTFGYWN0b3J5KTsKLQotICAgIHN0ZDo6dmVjdG9yPGVnbHc6OkVH
TEF0dHJpYj4gZDNkOUF0dHJpYnM7Ci0gICAgZDNkOUF0dHJpYnMucHVzaF9iYWNrKEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX0FOR0xFKTsKLSAgICBkM2Q5QXR0cmlicy5wdXNoX2JhY2soRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfRDNEOV9BTkdMRSk7Ci0gICAgZDNkOUF0dHJpYnMucHVzaF9iYWNr
KEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9BTkdMRSk7Ci0gICAgZDNkOUF0dHJpYnMu
cHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRSk7
Ci0gICAgZDNkOUF0dHJpYnMucHVzaF9iYWNrKEVHTF9OT05FKTsKLQotICAgIGF1dG8gKmQzZDlG
YWN0b3J5ID0gbmV3IEFOR0xFTmF0aXZlRGlzcGxheUZhY3RvcnkoCi0gICAgICAgICJhbmdsZS1k
M2Q5IiwgIkFOR0xFIEQzRDkgRGlzcGxheSIsIGQzZDlBdHRyaWJzLCAmbUV2ZW50cyk7Ci0gICAg
bV9uYXRpdmVEaXNwbGF5RmFjdG9yeVJlZ2lzdHJ5LnJlZ2lzdGVyRmFjdG9yeShkM2Q5RmFjdG9y
eSk7Ci0KLSAgICBzdGQ6OnZlY3RvcjxlZ2x3OjpFR0xBdHRyaWI+IGQzZDExOTNBdHRyaWJzOwot
ICAgIGQzZDExOTNBdHRyaWJzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdM
RSk7Ci0gICAgZDNkMTE5M0F0dHJpYnMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X0QzRDExX0FOR0xFKTsKLSAgICBkM2QxMTkzQXR0cmlicy5wdXNoX2JhY2soRUdMX1BMQVRGT1JN
X0FOR0xFX0RFVklDRV9UWVBFX0FOR0xFKTsKLSAgICBkM2QxMTkzQXR0cmlicy5wdXNoX2JhY2so
RUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0hBUkRXQVJFX0FOR0xFKTsKLSAgICBkM2Qx
MTkzQXR0cmlicy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01BSk9S
X0FOR0xFKTsKLSAgICBkM2QxMTkzQXR0cmlicy5wdXNoX2JhY2soOSk7Ci0gICAgZDNkMTE5M0F0
dHJpYnMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NSU5PUl9BTkdM
RSk7Ci0gICAgZDNkMTE5M0F0dHJpYnMucHVzaF9iYWNrKDMpOwotICAgIGQzZDExOTNBdHRyaWJz
LnB1c2hfYmFjayhFR0xfTk9ORSk7Ci0KLSAgICBhdXRvICpkM2QxMTkzRmFjdG9yeSA9IG5ldyBB
TkdMRU5hdGl2ZURpc3BsYXlGYWN0b3J5KAotICAgICAgICAiYW5nbGUtZDNkMTEtZmw5MyIsICJB
TkdMRSBEM0QxMSBGTDlfMyBEaXNwbGF5IiwgZDNkMTE5M0F0dHJpYnMsICZtRXZlbnRzKTsKLSAg
ICBtX25hdGl2ZURpc3BsYXlGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXJGYWN0b3J5KGQzZDExOTNG
YWN0b3J5KTsKLSNlbmRpZiAvLyAoREVfT1MgPT0gREVfT1NfV0lOMzIpCi0KLSNpZiBkZWZpbmVk
KEFOR0xFX1VTRV9PWk9ORSkgfHwgKERFX09TID09IERFX09TX0FORFJPSUQpCi0gICAgc3RkOjp2
ZWN0b3I8ZWdsdzo6RUdMQXR0cmliPiBnbGVzQXR0cmliczsKLSAgICBnbGVzQXR0cmlicy5wdXNo
X2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfQU5HTEUpOwotICAgIGdsZXNBdHRyaWJzLnB1
c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRSk7Ci0gICAgZ2xl
c0F0dHJpYnMucHVzaF9iYWNrKEVHTF9OT05FKTsKLQotICAgIGF1dG8gKmdsZXNGYWN0b3J5ID0g
bmV3IEFOR0xFTmF0aXZlRGlzcGxheUZhY3RvcnkoCi0gICAgICAgICJhbmdsZS1nbGVzIiwgIkFO
R0xFIE9wZW5HTCBFUyBEaXNwbGF5IiwgZ2xlc0F0dHJpYnMsICZtRXZlbnRzKTsKLSAgICBtX25h
dGl2ZURpc3BsYXlGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXJGYWN0b3J5KGdsZXNGYWN0b3J5KTsK
LSNlbmRpZgotCi0gICAgc3RkOjp2ZWN0b3I8ZWdsdzo6RUdMQXR0cmliPiBnbEF0dHJpYnM7Ci0g
ICAgZ2xBdHRyaWJzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9BTkdMRSk7Ci0g
ICAgZ2xBdHRyaWJzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5H
TEUpOwotICAgIGdsQXR0cmlicy5wdXNoX2JhY2soRUdMX05PTkUpOwotCi0gICAgYXV0byAqZ2xG
YWN0b3J5ID0gbmV3IEFOR0xFTmF0aXZlRGlzcGxheUZhY3RvcnkoCi0gICAgICAgICJhbmdsZS1n
bCIsICJBTkdMRSBPcGVuR0wgRGlzcGxheSIsIGdsQXR0cmlicywgJm1FdmVudHMpOwotICAgIG1f
bmF0aXZlRGlzcGxheUZhY3RvcnlSZWdpc3RyeS5yZWdpc3RlckZhY3RvcnkoZ2xGYWN0b3J5KTsK
LQotICAgIG1fY29udGV4dEZhY3RvcnlSZWdpc3RyeS5yZWdpc3RlckZhY3RvcnkobmV3IGVnbHU6
OkdMQ29udGV4dEZhY3RvcnkobV9uYXRpdmVEaXNwbGF5RmFjdG9yeVJlZ2lzdHJ5KSk7Ci0KLSAg
ICAvLyBBZGQgTnVsbCBjb250ZXh0IHR5cGUgZm9yIHVzZSBpbiBnZW5lcmF0aW5nIGNhc2UgbGlz
dHMKLSAgICBtX2NvbnRleHRGYWN0b3J5UmVnaXN0cnkucmVnaXN0ZXJGYWN0b3J5KG5ldyBudWxs
OjpOdWxsR0xDb250ZXh0RmFjdG9yeSgpKTsKLX0KLQotQU5HTEVQbGF0Zm9ybTo6fkFOR0xFUGxh
dGZvcm0oKQotewotfQotCi1ib29sIEFOR0xFUGxhdGZvcm06OnByb2Nlc3NFdmVudHMoKQotewot
ICAgIHJldHVybiAhbUV2ZW50cy5xdWl0U2lnbmFsZWQoKTsKLX0KLQotfSAvLyB0Y3UKLQotLy8g
Q3JlYXRlIHBsYXRmb3JtCi10Y3U6OlBsYXRmb3JtICpjcmVhdGVQbGF0Zm9ybSgpCi17Ci0gICAg
cmV0dXJuIG5ldyB0Y3U6OkFOR0xFUGxhdGZvcm0oKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvdGN1QU5HTEVQbGF0Zm9ybS5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VBTkdM
RVBsYXRmb3JtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2MmMxYzYwZjI1Li4w
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9z
dXBwb3J0L3RjdUFOR0xFUGxhdGZvcm0uaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAK
LS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBUZXN0
ZXIgQ29yZQotICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICoK
LSAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0g
KiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKgot
ICovCi0KLSNpZm5kZWYgVENVX0FOR0xFX1dJTjMyX1BMQVRGT1JNX0hfCi0jZGVmaW5lIFRDVV9B
TkdMRV9XSU4zMl9QTEFURk9STV9IXwotCi0jaW5jbHVkZSAidGN1RGVmcy5ocHAiCi0jaW5jbHVk
ZSAidGN1UGxhdGZvcm0uaHBwIgotI2luY2x1ZGUgImdsdVBsYXRmb3JtLmhwcCIKLQotI2lmbmRl
ZiBfRUdMVVBMQVRGT1JNX0hQUAotIyAgIGluY2x1ZGUgImVnbHVQbGF0Zm9ybS5ocHAiCi0jZW5k
aWYKLQotI2luY2x1ZGUgInRjdUFOR0xFTmF0aXZlRGlzcGxheUZhY3RvcnkuaCIKLQotbmFtZXNw
YWNlIHRjdQotewotCi1jbGFzcyBBTkdMRVBsYXRmb3JtIDogcHVibGljIHRjdTo6UGxhdGZvcm0s
Ci0gICAgICAgICAgICAgICAgICAgICAgcHJpdmF0ZSBnbHU6OlBsYXRmb3JtLAotICAgICAgICAg
ICAgICAgICAgICAgIHByaXZhdGUgZWdsdTo6UGxhdGZvcm0KLXsKLSAgcHVibGljOgotICAgIEFO
R0xFUGxhdGZvcm0oKTsKLSAgICB+QU5HTEVQbGF0Zm9ybSgpOwotCi0gICAgYm9vbCBwcm9jZXNz
RXZlbnRzKCkgb3ZlcnJpZGU7Ci0KLSAgICBjb25zdCBnbHU6OlBsYXRmb3JtICZnZXRHTFBsYXRm
b3JtKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgZ2x1OjpQbGF0
Zm9ybSY+KCp0aGlzKTsgfQotICAgIGNvbnN0IGVnbHU6OlBsYXRmb3JtICZnZXRFR0xQbGF0Zm9y
bSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IGVnbHU6OlBsYXRm
b3JtJj4oKnRoaXMpOyB9Ci0KLSAgcHJpdmF0ZToKLSAgICBFdmVudFN0YXRlIG1FdmVudHM7Ci19
OwotCi19IC8vIHRjdQotCi0jZW5kaWYgLy8gVENVX0FOR0xFX1dJTjMyX1BMQVRGT1JNX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0
L3RjdVJhbmRvbU9yZGVyRXhlY3V0b3IuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VSYW5kb21PcmRlckV4ZWN1dG9yLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMzc0NWJjM2NlZjYuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9kZXFwX3N1cHBvcnQvdGN1UmFuZG9tT3JkZXJF
eGVjdXRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODIgKzAsMCBAQAotLyotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0gKiBkcmF3RWxlbWVudHMgUXVhbGl0eSBQcm9ncmFtIFRlc3RlciBDb3JlCi0gKiAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKgotICogQ29weXJpZ2h0
IDIwMTQgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVu
ZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICog
eW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBM
aWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgot
ICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0g
KiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRp
bmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmli
dXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJ
VElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhl
IExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMg
YW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqCi0gKi8vKiEKLSAqIFxm
aWxlCi0gKiBcYnJpZWYgRXhlY3V0b3Igd2hpY2ggY2FuIHJ1biByYW5kb21seSBhY2Nlc3NlZCB0
ZXN0cy4KLSAqLy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0jaW5jbHVkZSAidGN1UmFuZG9tT3JkZXJFeGVj
dXRvci5oIgotCi0jaW5jbHVkZSAidGN1Q29tbWFuZExpbmUuaHBwIgotI2luY2x1ZGUgInRjdVRl
c3RMb2cuaHBwIgotI2luY2x1ZGUgImRlU3RyaW5nVXRpbC5ocHAiCi0jaW5jbHVkZSAiZGVDbG9j
ay5oIgotCi0jaW5jbHVkZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRl
IDxmc3RyZWFtPgotCi11c2luZyBzdGQ6OnZlY3RvcjsKLXVzaW5nIHN0ZDo6c3RyaW5nOwotCi1u
YW1lc3BhY2UgdGN1Ci17Ci0KLVJhbmRvbU9yZGVyRXhlY3V0b3I6OlJhbmRvbU9yZGVyRXhlY3V0
b3IoVGVzdFBhY2thZ2VSb290ICZyb290LCBUZXN0Q29udGV4dCAmdGVzdEN0eCkKLSAgICA6IG1f
dGVzdEN0eCh0ZXN0Q3R4KSwgbV9pbmZsYXRlcih0ZXN0Q3R4KQotewotICAgIG1fbm9kZVN0YWNr
LnB1c2hfYmFjayhOb2RlU3RhY2tFbnRyeSgmcm9vdCkpOwotICAgIHJvb3QuZ2V0Q2hpbGRyZW4o
bV9ub2RlU3RhY2tbMF0uY2hpbGRyZW4pOwotfQotCi1SYW5kb21PcmRlckV4ZWN1dG9yOjp+UmFu
ZG9tT3JkZXJFeGVjdXRvcih2b2lkKQotewotICAgIHBydW5lU3RhY2soMSk7Ci19Ci0KLXZvaWQg
UmFuZG9tT3JkZXJFeGVjdXRvcjo6cHJ1bmVTdGFjayhzaXplX3QgbmV3U3RhY2tTaXplKQotewot
ICAgIC8vIFxub3RlIFJvb3QgaXMgbm90IG1hbmFnZWQgYnkgdXMKLSAgICBERV9BU1NFUlQoZGU6
OmluUmFuZ2UobmV3U3RhY2tTaXplLCBzaXplX3QoMSksIG1fbm9kZVN0YWNrLnNpemUoKSkpOwot
Ci0gICAgd2hpbGUgKG1fbm9kZVN0YWNrLnNpemUoKSA+IG5ld1N0YWNrU2l6ZSkKLSAgICB7Ci0g
ICAgICAgIE5vZGVTdGFja0VudHJ5ICZjdXJFbnRyeSA9IG1fbm9kZVN0YWNrLmJhY2soKTsKLSAg
ICAgICAgY29uc3QgYm9vbCBpc1BrZyA9IGN1ckVudHJ5Lm5vZGUtPmdldE5vZGVUeXBlKCkgPT0g
Tk9ERVRZUEVfUEFDS0FHRTsKLQotICAgICAgICBERV9BU1NFUlQoKG1fbm9kZVN0YWNrLnNpemUo
KSA9PSAyKSA9PSBpc1BrZyk7Ci0KLSAgICAgICAgaWYgKGN1ckVudHJ5Lm5vZGUpICAvLyBKdXN0
IGluIGNhc2Ugd2UgYXJlIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2xlYW51
cCBwYXRoIGFmdGVyIHBhcnRpYWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwcnVu
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoY3VyRW50cnkubm9kZS0+Z2V0Tm9kZVR5cGUo
KSA9PSBOT0RFVFlQRV9HUk9VUCkKLSAgICAgICAgICAgICAgICBtX2luZmxhdGVyLmxlYXZlR3Jv
dXBOb2RlKHN0YXRpY19jYXN0PFRlc3RDYXNlR3JvdXAgKj4oY3VyRW50cnkubm9kZSkpOwotICAg
ICAgICAgICAgZWxzZSBpZiAoY3VyRW50cnkubm9kZS0+Z2V0Tm9kZVR5cGUoKSA9PSBOT0RFVFlQ
RV9QQUNLQUdFKQotICAgICAgICAgICAgICAgIG1faW5mbGF0ZXIubGVhdmVUZXN0UGFja2FnZShz
dGF0aWNfY2FzdDxUZXN0UGFja2FnZSAqPihjdXJFbnRyeS5ub2RlKSk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgREVfQVNTRVJUKGN1ckVudHJ5LmNoaWxkcmVuLmVtcHR5KCkp
OwotCi0gICAgICAgICAgICBjdXJFbnRyeS5ub2RlID0gREVfTlVMTDsKLSAgICAgICAgICAgIGN1
ckVudHJ5LmNoaWxkcmVuLmNsZWFyKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXNQa2cp
Ci0gICAgICAgICAgICBtX2Nhc2VFeGVjdXRvci5jbGVhcigpOwotCi0gICAgICAgIG1fbm9kZVN0
YWNrLnBvcF9iYWNrKCk7Ci0gICAgfQotfQotCi1zdGF0aWMgVGVzdE5vZGUgKmZpbmROb2RlQnlO
YW1lKHZlY3RvcjxUZXN0Tm9kZSAqPiAmbm9kZXMsIGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKQot
ewotICAgIGZvciAodmVjdG9yPFRlc3ROb2RlICo+Ojpjb25zdF9pdGVyYXRvciBub2RlID0gbm9k
ZXMuYmVnaW4oKTsgbm9kZSAhPSBub2Rlcy5lbmQoKTsgKytub2RlKQotICAgIHsKLSAgICAgICAg
aWYgKG5hbWUgPT0gKCpub2RlKS0+Z2V0TmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuICpub2Rl
OwotICAgIH0KLQotICAgIHJldHVybiBERV9OVUxMOwotfQotCi1UZXN0Q2FzZSAqUmFuZG9tT3Jk
ZXJFeGVjdXRvcjo6c2Vla1RvQ2FzZShjb25zdCBzdHJpbmcgJnBhdGgpCi17Ci0gICAgY29uc3Qg
dmVjdG9yPHN0cmluZz4gY29tcG9uZW50cyA9IGRlOjpzcGxpdFN0cmluZyhwYXRoLCAnLicpOwot
ICAgIHNpemVfdCBjb21wTmR4OwotCi0gICAgREVfQVNTRVJUKCFtX25vZGVTdGFjay5lbXB0eSgp
ICYmIG1fbm9kZVN0YWNrLmZyb250KCkubm9kZS0+Z2V0Tm9kZVR5cGUoKSA9PSBOT0RFVFlQRV9S
T09UKTsKLQotICAgIGZvciAoY29tcE5keCA9IDA7IGNvbXBOZHggPCBjb21wb25lbnRzLnNpemUo
KTsgY29tcE5keCsrKQotICAgIHsKLSAgICAgICAgY29uc3Qgc2l6ZV90IHN0YWNrUG9zID0gY29t
cE5keCArIDE7Ci0KLSAgICAgICAgaWYgKHN0YWNrUG9zID49IG1fbm9kZVN0YWNrLnNpemUoKSkK
LSAgICAgICAgICAgIGJyZWFrOyAgLy8gU3RhY2sgZW5kCi0gICAgICAgIGVsc2UgaWYgKGNvbXBv
bmVudHNbY29tcE5keF0gIT0gbV9ub2RlU3RhY2tbc3RhY2tQb3NdLm5vZGUtPmdldE5hbWUoKSkK
LSAgICAgICAgewotICAgICAgICAgICAgLy8gQ3VycmVudCBzdGFjayBkb2Vzbid0IG1hdGNoIGFu
eSBtb3JlLCBwcnVuZS4KLSAgICAgICAgICAgIHBydW5lU3RhY2soc3RhY2tQb3MpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBERV9BU1NFUlQobV9ub2RlU3Rh
Y2suc2l6ZSgpID09IGNvbXBOZHggKyAxKTsKLQotICAgIGZvciAoOyBjb21wTmR4IDwgY29tcG9u
ZW50cy5zaXplKCk7IGNvbXBOZHgrKykKLSAgICB7Ci0gICAgICAgIGNvbnN0IHNpemVfdCBwYXJl
bnRTdGFja1BvcyA9IGNvbXBOZHg7Ci0gICAgICAgIFRlc3ROb2RlICpjb25zdCBjdXJOb2RlID0K
LSAgICAgICAgICAgIGZpbmROb2RlQnlOYW1lKG1fbm9kZVN0YWNrW3BhcmVudFN0YWNrUG9zXS5j
aGlsZHJlbiwgY29tcG9uZW50c1tjb21wTmR4XSk7Ci0KLSAgICAgICAgaWYgKCFjdXJOb2RlKQot
ICAgICAgICAgICAgdGhyb3cgRXhjZXB0aW9uKHN0cmluZygiVGVzdCBoaWVyYXJjaHkgbm9kZSBu
b3QgZm91bmQ6ICIpICsgcGF0aCk7Ci0KLSAgICAgICAgbV9ub2RlU3RhY2sucHVzaF9iYWNrKE5v
ZGVTdGFja0VudHJ5KGN1ck5vZGUpKTsKLQotICAgICAgICBpZiAoY3VyTm9kZS0+Z2V0Tm9kZVR5
cGUoKSA9PSBOT0RFVFlQRV9QQUNLQUdFKQotICAgICAgICB7Ci0gICAgICAgICAgICBUZXN0UGFj
a2FnZSAqY29uc3QgdGVzdFBhY2thZ2UgPSBzdGF0aWNfY2FzdDxUZXN0UGFja2FnZSAqPihjdXJO
b2RlKTsKLQotICAgICAgICAgICAgbV9pbmZsYXRlci5lbnRlclRlc3RQYWNrYWdlKHRlc3RQYWNr
YWdlLCBtX25vZGVTdGFjay5iYWNrKCkuY2hpbGRyZW4pOwotICAgICAgICAgICAgREVfQVNTRVJU
KCFtX2Nhc2VFeGVjdXRvcik7Ci0gICAgICAgICAgICBtX2Nhc2VFeGVjdXRvciA9IGRlOjpNb3Zl
UHRyPFRlc3RDYXNlRXhlY3V0b3I+KHRlc3RQYWNrYWdlLT5jcmVhdGVFeGVjdXRvcigpKTsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlIGlmIChjdXJOb2RlLT5nZXROb2RlVHlwZSgpID09IE5PREVU
WVBFX0dST1VQKQotICAgICAgICAgICAgbV9pbmZsYXRlci5lbnRlckdyb3VwTm9kZShzdGF0aWNf
Y2FzdDxUZXN0Q2FzZUdyb3VwICo+KGN1ck5vZGUpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX25vZGVTdGFjay5iYWNrKCkuY2hpbGRyZW4pOwotICAgICAgICBlbHNl
IGlmIChjb21wTmR4ICsgMSAhPSBjb21wb25lbnRzLnNpemUoKSkKLSAgICAgICAgICAgIHRocm93
IEV4Y2VwdGlvbihzdHJpbmcoIkludmFsaWQgdGVzdCBoaWVyYXJjaHkgcGF0aDogIikgKyBwYXRo
KTsKLSAgICB9Ci0KLSAgICBERV9BU1NFUlQobV9ub2RlU3RhY2suc2l6ZSgpID09IGNvbXBvbmVu
dHMuc2l6ZSgpICsgMSk7Ci0KLSAgICBpZiAoaXNUZXN0Tm9kZVR5cGVFeGVjdXRhYmxlKG1fbm9k
ZVN0YWNrLmJhY2soKS5ub2RlLT5nZXROb2RlVHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIGR5bmFt
aWNfY2FzdDxUZXN0Q2FzZSAqPihtX25vZGVTdGFjay5iYWNrKCkubm9kZSk7Ci0gICAgZWxzZQot
ICAgICAgICB0aHJvdyBFeGNlcHRpb24oc3RyaW5nKCJOb3QgYSB0ZXN0IGNhc2U6ICIpICsgcGF0
aCk7Ci19Ci0KLXN0YXRpYyBxcFRlc3RDYXNlVHlwZSBub2RlVHlwZVRvVGVzdENhc2VUeXBlKFRl
c3ROb2RlVHlwZSBub2RlVHlwZSkKLXsKLSAgICBzd2l0Y2ggKG5vZGVUeXBlKQotICAgIHsKLSAg
ICAgICAgY2FzZSBOT0RFVFlQRV9TRUxGX1ZBTElEQVRFOgotICAgICAgICAgICAgcmV0dXJuIFFQ
X1RFU1RfQ0FTRV9UWVBFX1NFTEZfVkFMSURBVEU7Ci0gICAgICAgIGNhc2UgTk9ERVRZUEVfUEVS
Rk9STUFOQ0U6Ci0gICAgICAgICAgICByZXR1cm4gUVBfVEVTVF9DQVNFX1RZUEVfUEVSRk9STUFO
Q0U7Ci0gICAgICAgIGNhc2UgTk9ERVRZUEVfQ0FQQUJJTElUWToKLSAgICAgICAgICAgIHJldHVy
biBRUF9URVNUX0NBU0VfVFlQRV9DQVBBQklMSVRZOwotICAgICAgICBjYXNlIE5PREVUWVBFX0FD
Q1VSQUNZOgotICAgICAgICAgICAgcmV0dXJuIFFQX1RFU1RfQ0FTRV9UWVBFX0FDQ1VSQUNZOwot
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgREVfQVNTRVJUKGZhbHNlKTsKLSAgICAgICAg
ICAgIHJldHVybiBRUF9URVNUX0NBU0VfVFlQRV9MQVNUOwotICAgIH0KLX0KLQotVGVzdFN0YXR1
cyBSYW5kb21PcmRlckV4ZWN1dG9yOjpleGVjdXRlKGNvbnN0IHN0ZDo6c3RyaW5nICZjYXNlUGF0
aCkKLXsKLSAgICBUZXN0Q2FzZSAqY29uc3QgdGVzdENhc2UgPSBzZWVrVG9DYXNlKGNhc2VQYXRo
KTsKLSAgICBUZXN0TG9nICZsb2cgPSBtX3Rlc3RDdHguZ2V0TG9nKCk7Ci0gICAgY29uc3QgcXBU
ZXN0Q2FzZVR5cGUgY2FzZVR5cGUgPSBub2RlVHlwZVRvVGVzdENhc2VUeXBlKHRlc3RDYXNlLT5n
ZXROb2RlVHlwZSgpKTsKLQotICAgIG1fdGVzdEN0eC5zZXRUZXJtaW5hdGVBZnRlcihmYWxzZSk7
Ci0gICAgbG9nLnN0YXJ0Q2FzZShjYXNlUGF0aC5jX3N0cigpLCBjYXNlVHlwZSk7Ci0KLSAgICB7
Ci0gICAgICAgIGNvbnN0IFRlc3RTdGF0dXMgcmVzdWx0ID0gZXhlY3V0ZUlubmVyKHRlc3RDYXNl
LCBjYXNlUGF0aCk7Ci0gICAgICAgIGxvZy5lbmRDYXNlKHJlc3VsdC5nZXRDb2RlKCksIHJlc3Vs
dC5nZXREZXNjcmlwdGlvbigpLmNfc3RyKCkpOwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
IH0KLX0KLQotdGN1OjpUZXN0U3RhdHVzIFJhbmRvbU9yZGVyRXhlY3V0b3I6OmV4ZWN1dGVJbm5l
cihUZXN0Q2FzZSAqdGVzdENhc2UsIGNvbnN0IHN0ZDo6c3RyaW5nICZjYXNlUGF0aCkKLXsKLSAg
ICBUZXN0TG9nICZsb2cgPSBtX3Rlc3RDdHguZ2V0TG9nKCk7Ci0gICAgY29uc3QgZGVVaW50NjQg
dGVzdFN0YXJ0VGltZSA9IGRlR2V0TWljcm9zZWNvbmRzKCk7Ci0KLSAgICBtX3Rlc3RDdHguc2V0
VGVzdFJlc3VsdChRUF9URVNUX1JFU1VMVF9MQVNULCAiIik7Ci0KLSAgICAvLyBJbml0aWFsaXpl
LCB3aWxsIHJldHVybiBpbW1lZGlhdGVseSBpZiBmYWlscwotICAgIHRyeQotICAgIHsKLSAgICAg
ICAgbV9jYXNlRXhlY3V0b3ItPmluaXQodGVzdENhc2UsIGNhc2VQYXRoKTsKLSAgICB9Ci0gICAg
Y2F0Y2ggKGNvbnN0IHN0ZDo6YmFkX2FsbG9jICYpCi0gICAgewotICAgICAgICBtX3Rlc3RDdHgu
c2V0VGVybWluYXRlQWZ0ZXIodHJ1ZSk7Ci0gICAgICAgIHJldHVybiBUZXN0U3RhdHVzKFFQX1RF
U1RfUkVTVUxUX1JFU09VUkNFX0VSUk9SLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFp
bGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBpbiB0ZXN0IGNhc2UgaW5pdCIpOwotICAgIH0KLSAgICBj
YXRjaCAoY29uc3QgVGVzdEV4Y2VwdGlvbiAmZSkKLSAgICB7Ci0gICAgICAgIERFX0FTU0VSVChl
LmdldFRlc3RSZXN1bHQoKSAhPSBRUF9URVNUX1JFU1VMVF9MQVNUKTsKLSAgICAgICAgbV90ZXN0
Q3R4LnNldFRlcm1pbmF0ZUFmdGVyKGUuaXNGYXRhbCgpKTsKLSAgICAgICAgbG9nIDw8IGU7Ci0g
ICAgICAgIHJldHVybiBUZXN0U3RhdHVzKGUuZ2V0VGVzdFJlc3VsdCgpLCBlLmdldE1lc3NhZ2Uo
KSk7Ci0gICAgfQotICAgIGNhdGNoIChjb25zdCBFeGNlcHRpb24gJmUpCi0gICAgewotICAgICAg
ICBsb2cgPDwgZTsKLSAgICAgICAgcmV0dXJuIFRlc3RTdGF0dXMoUVBfVEVTVF9SRVNVTFRfRkFJ
TCwgZS5nZXRNZXNzYWdlKCkpOwotICAgIH0KLQotICAgIC8vIEV4ZWN1dGUKLSAgICBmb3IgKDs7
KQotICAgIHsKLSAgICAgICAgVGVzdENhc2U6Okl0ZXJhdGVSZXN1bHQgaXRlcmF0ZVJlc3VsdCA9
IFRlc3RDYXNlOjpTVE9QOwotCi0gICAgICAgIG1fdGVzdEN0eC50b3VjaFdhdGNoZG9nKCk7Ci0K
LSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGl0ZXJhdGVSZXN1bHQgPSBtX2Nh
c2VFeGVjdXRvci0+aXRlcmF0ZSh0ZXN0Q2FzZSk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2gg
KGNvbnN0IHN0ZDo6YmFkX2FsbG9jICYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1fdGVzdEN0
eC5zZXRUZXN0UmVzdWx0KFFQX1RFU1RfUkVTVUxUX1JFU09VUkNFX0VSUk9SLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnkgZHVy
aW5nIHRlc3QgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4ZWN1dGlv
biIpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChjb25zdCBUZXN0RXhjZXB0aW9uICZlKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBsb2cgPDwgZTsKLSAgICAgICAgICAgIG1fdGVzdEN0eC5z
ZXRUZXN0UmVzdWx0KGUuZ2V0VGVzdFJlc3VsdCgpLCBlLmdldE1lc3NhZ2UoKSk7Ci0gICAgICAg
ICAgICBtX3Rlc3RDdHguc2V0VGVybWluYXRlQWZ0ZXIoZS5pc0ZhdGFsKCkpOwotICAgICAgICB9
Ci0gICAgICAgIGNhdGNoIChjb25zdCBFeGNlcHRpb24gJmUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGxvZyA8PCBlOwotICAgICAgICAgICAgbV90ZXN0Q3R4LnNldFRlc3RSZXN1bHQoUVBfVEVT
VF9SRVNVTFRfRkFJTCwgZS5nZXRNZXNzYWdlKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KGl0ZXJhdGVSZXN1bHQgPT0gVGVzdENhc2U6OlNUT1ApCi0gICAgICAgICAgICBicmVhazsKLSAg
ICB9Ci0KLSAgICBERV9BU1NFUlQobV90ZXN0Q3R4LmdldFRlc3RSZXN1bHQoKSAhPSBRUF9URVNU
X1JFU1VMVF9MQVNUKTsKLQotICAgIGlmIChtX3Rlc3RDdHguZ2V0VGVzdFJlc3VsdCgpID09IFFQ
X1RFU1RfUkVTVUxUX1JFU09VUkNFX0VSUk9SKQotICAgICAgICBtX3Rlc3RDdHguc2V0VGVybWlu
YXRlQWZ0ZXIodHJ1ZSk7Ci0KLSAgICAvLyBEZS1pbml0aWFsaXplCi0gICAgdHJ5Ci0gICAgewot
ICAgICAgICBtX2Nhc2VFeGVjdXRvci0+ZGVpbml0KHRlc3RDYXNlKTsKLSAgICB9Ci0gICAgY2F0
Y2ggKGNvbnN0IHRjdTo6RXhjZXB0aW9uICZlKQotICAgIHsKLSAgICAgICAgbG9nIDw8IGUgPDwg
VGVzdExvZzo6TWVzc2FnZSA8PCAiRXJyb3IgaW4gdGVzdCBjYXNlIGRlaW5pdCwgdGVzdCBwcm9n
cmFtICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lsbCB0ZXJt
aW5hdGUuIgotICAgICAgICAgICAgPDwgVGVzdExvZzo6RW5kTWVzc2FnZTsKLSAgICAgICAgbV90
ZXN0Q3R4LnNldFRlcm1pbmF0ZUFmdGVyKHRydWUpOwotICAgIH0KLQotICAgIGlmIChtX3Rlc3RD
dHguZ2V0V2F0Y2hEb2coKSkKLSAgICAgICAgcXBXYXRjaERvZ19yZXNldChtX3Rlc3RDdHguZ2V0
V2F0Y2hEb2coKSk7Ci0KLSAgICB7Ci0gICAgICAgIGNvbnN0IFRlc3RTdGF0dXMgcmVzdWx0ID0K
LSAgICAgICAgICAgIFRlc3RTdGF0dXMobV90ZXN0Q3R4LmdldFRlc3RSZXN1bHQoKSwgbV90ZXN0
Q3R4LmdldFRlc3RSZXN1bHREZXNjKCkpOwotICAgICAgICBtX3Rlc3RDdHguc2V0VGVzdFJlc3Vs
dChRUF9URVNUX1JFU1VMVF9MQVNULCAiIik7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
fQotfQotCi19ICAvLyB0Y3UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9kZXFwX3N1cHBvcnQvdGN1UmFuZG9tT3JkZXJFeGVjdXRvci5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2RlcXBfc3VwcG9ydC90Y3VSYW5kb21PcmRlckV4ZWN1
dG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4YzcwODUyOWMwLi4wMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZGVxcF9zdXBwb3J0
L3RjdVJhbmRvbU9yZGVyRXhlY3V0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAK
LS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotICogZHJhd0VsZW1lbnRzIFF1YWxpdHkgUHJvZ3JhbSBUZXN0
ZXIgQ29yZQotICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICoK
LSAqIENvcHlyaWdodCAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0g
KiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxp
Y2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu
Y2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGlj
ZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO
U0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVl
ZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vu
c2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFO
VElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVk
LgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5n
IHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKgot
ICovIC8qIQotICogXGZpbGUKLSAqIFxicmllZiBHZW5lcmljIG1haW4oKS4KLSAqLyAvKi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKi8KLQotI2lmbmRlZiBUQ1VfUkFORE9NX09SREVSX0VYRUNVVE9SX0hfCi0jZGVmaW5l
IFRDVV9SQU5ET01fT1JERVJfRVhFQ1VUT1JfSF8KLQotI2luY2x1ZGUgInRjdVRlc3RIaWVyYXJj
aHlJdGVyYXRvci5ocHAiCi0jaW5jbHVkZSAiZGVVbmlxdWVQdHIuaHBwIgotCi1uYW1lc3BhY2Ug
dGN1Ci17Ci0KLWNsYXNzIFJhbmRvbU9yZGVyRXhlY3V0b3IKLXsKLSAgIHB1YmxpYzoKLSAgICBS
YW5kb21PcmRlckV4ZWN1dG9yKFRlc3RQYWNrYWdlUm9vdCAmcm9vdCwgVGVzdENvbnRleHQgJnRl
c3RDdHgpOwotICAgIH5SYW5kb21PcmRlckV4ZWN1dG9yKHZvaWQpOwotCi0gICAgVGVzdFN0YXR1
cyBleGVjdXRlKGNvbnN0IHN0ZDo6c3RyaW5nICZwYXRoKTsKLQotICAgcHJpdmF0ZToKLSAgICB2
b2lkIHBydW5lU3RhY2soc2l6ZV90IG5ld1N0YWNrU2l6ZSk7Ci0gICAgVGVzdENhc2UgKnNlZWtU
b0Nhc2UoY29uc3Qgc3RkOjpzdHJpbmcgJnBhdGgpOwotCi0gICAgVGVzdFN0YXR1cyBleGVjdXRl
SW5uZXIoVGVzdENhc2UgKnRlc3RDYXNlLCBjb25zdCBzdGQ6OnN0cmluZyAmY2FzZVBhdGgpOwot
Ci0gICAgc3RydWN0IE5vZGVTdGFja0VudHJ5Ci0gICAgewotICAgICAgICBUZXN0Tm9kZSAqbm9k
ZTsKLSAgICAgICAgc3RkOjp2ZWN0b3I8VGVzdE5vZGUgKj4gY2hpbGRyZW47Ci0KLSAgICAgICAg
Tm9kZVN0YWNrRW50cnkodm9pZCkgOiBub2RlKERFX05VTEwpIHt9Ci0gICAgICAgIE5vZGVTdGFj
a0VudHJ5KFRlc3ROb2RlICpub2RlXykgOiBub2RlKG5vZGVfKSB7fQotICAgIH07Ci0KLSAgICBU
ZXN0Q29udGV4dCAmbV90ZXN0Q3R4OwotCi0gICAgRGVmYXVsdEhpZXJhcmNoeUluZmxhdGVyIG1f
aW5mbGF0ZXI7Ci0gICAgc3RkOjp2ZWN0b3I8Tm9kZVN0YWNrRW50cnk+IG1fbm9kZVN0YWNrOwot
Ci0gICAgZGU6Ok1vdmVQdHI8VGVzdENhc2VFeGVjdXRvcj4gbV9jYXNlRXhlY3V0b3I7Ci19Owot
Ci19ICAvLyB0Y3UKLQotI2VuZGlmICAvLyBUQ1VfUkFORE9NX09SREVSX0VYRUNVVE9SX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VH
TENvbnRleHRDb21wYXRpYmlsaXR5VGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZWdsX3Rlc3RzL0VHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdC5jcHAKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzYzU4YWZiYTk3Li4wMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTENvbnRleHRDb21w
YXRpYmlsaXR5VGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODcgKzAsMCBAQAotLy8KLS8v
IENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KLS8vCi0KLS8vIEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdC5jcHA6Ci0vLyAgIFRoaXMg
dGVzdCB3aWxsIHRyeSB0byB1c2UgYWxsIGNvbWJpbmF0aW9ucyBvZiBjb250ZXh0IGNvbmZpZ3Mg
YW5kCi0vLyAgIHN1cmZhY2UgY29uZmlncy4gSWYgdGhlIGNvbmZpZ3MgYXJlIGNvbXBhdGlibGUs
IGl0IGNoZWNrcyB0aGF0IHNpbXBsZQotLy8gICByZW5kZXJpbmcgd29ya3MsIG90aGVyd2lzZSBp
dCBjaGVja3MgYW4gZXJyb3IgaXMgZ2VuZXJhdGVkIG9uZSBNYWtlQ3VycmVudC4KLSNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgotCi0jaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgPEVHTC9lZ2wu
aD4KLSNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+Ci0KLSNpbmNsdWRlICJPU1dpbmRvdy5oIgotI2lu
Y2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0jaW5jbHVkZSAidGVzdF91dGlscy9hbmds
ZV90ZXN0X2NvbmZpZ3MuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UK
LXsKLQotY29uc3QgRUdMaW50IGNvbnRleHRBdHRyaWJzW10gPQotewotICAgIEVHTF9DT05URVhU
X0NMSUVOVF9WRVJTSU9OLCAyLAotICAgIEVHTF9OT05FCi19OwotCi19Ci0KLWNsYXNzIEVHTENv
bnRleHRDb21wYXRpYmlsaXR5VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHVibGljOgot
ICAgIEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdCgpCi0gICAgICA6IG1EaXNwbGF5KDApCi0g
ICAgewotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAg
UEZORUdMR0VUUExBVEZPUk1ESVNQTEFZRVhUUFJPQyBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQg
PSByZWludGVycHJldF9jYXN0PFBGTkVHTEdFVFBMQVRGT1JNRElTUExBWUVYVFBST0M+KGVnbEdl
dFByb2NBZGRyZXNzKCJlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQiKSk7Ci0gICAgICAgIEFTU0VS
VF9UUlVFKGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCAhPSBudWxscHRyKTsKLQotICAgICAgICBF
R0xpbnQgZGlzcGF0dHJzW10gPQotICAgICAgICB7Ci0gICAgICAgICAgICBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9BTkdMRSwgR2V0UGFyYW0oKS5nZXRSZW5kZXJlcigpLAotICAgICAgICAgICAg
RUdMX05PTkUKLSAgICAgICAgfTsKLSAgICAgICAgbURpc3BsYXkgPSBlZ2xHZXRQbGF0Zm9ybURp
c3BsYXlFWFQoCi0gICAgICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfQU5HTEUsIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCAqPihFR0xfREVGQVVMVF9ESVNQTEFZKSwgZGlzcGF0dHJzKTsKLSAgICAg
ICAgQVNTRVJUX1RSVUUobURpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkpOwotCi0gICAgICAgIEFT
U0VSVF9UUlVFKGVnbEluaXRpYWxpemUobURpc3BsYXksIG51bGxwdHIsIG51bGxwdHIpID09IEVH
TF9UUlVFKTsKLQotICAgICAgICBpbnQgbkNvbmZpZ3MgPSAwOwotICAgICAgICBBU1NFUlRfVFJV
RShlZ2xHZXRDb25maWdzKG1EaXNwbGF5LCBudWxscHRyLCAwLCAmbkNvbmZpZ3MpID09IEVHTF9U
UlVFKTsKLSAgICAgICAgQVNTRVJUX1RSVUUobkNvbmZpZ3MgIT0gMCk7Ci0KLSAgICAgICAgaW50
IG5SZXR1cm5lZENvbmZpZ3MgPSAwOwotICAgICAgICBtQ29uZmlncy5yZXNpemUobkNvbmZpZ3Mp
OwotICAgICAgICBBU1NFUlRfVFJVRShlZ2xHZXRDb25maWdzKG1EaXNwbGF5LCBtQ29uZmlncy5k
YXRhKCksIG5Db25maWdzLCAmblJldHVybmVkQ29uZmlncykgPT0gRUdMX1RSVUUpOwotICAgICAg
ICBBU1NFUlRfVFJVRShuQ29uZmlncyA9PSBuUmV0dXJuZWRDb25maWdzKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGVnbE1ha2VDdXJyZW50
KG1EaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19DT05URVhU
KTsKLSAgICAgICAgZWdsVGVybWluYXRlKG1EaXNwbGF5KTsKLSAgICB9OwotCi0gIHByb3RlY3Rl
ZDoKLSAgICBib29sIGFyZUNvbmZpZ3NDb21wYXRpYmxlKEVHTENvbmZpZyBjMSwgRUdMQ29uZmln
IGMyLCBFR0xpbnQgc3VyZmFjZUJpdCkKLSAgICB7Ci0gICAgICAgIEVHTGludCBjb2xvckJ1ZmZl
clR5cGUxLCBjb2xvckJ1ZmZlclR5cGUyOwotICAgICAgICBFR0xpbnQgcmVkMSwgcmVkMiwgZ3Jl
ZW4xLCBncmVlbjIsIGJsdWUxLCBibHVlMiwgYWxwaGExLCBhbHBoYTI7Ci0gICAgICAgIEVHTGlu
dCBkZXB0aDEsIGRlcHRoMiwgc3RlbmNpbDEsIHN0ZW5jaWwyOwotICAgICAgICBFR0xpbnQgc3Vy
ZmFjZVR5cGUxLCBzdXJmYWNlVHlwZTI7Ci0KLSAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1E
aXNwbGF5LCBjMSwgRUdMX0NPTE9SX0JVRkZFUl9UWVBFLCAmY29sb3JCdWZmZXJUeXBlMSk7Ci0g
ICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgYzIsIEVHTF9DT0xPUl9CVUZGRVJf
VFlQRSwgJmNvbG9yQnVmZmVyVHlwZTIpOwotCi0gICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYiht
RGlzcGxheSwgYzEsIEVHTF9SRURfU0laRSwgJnJlZDEpOwotICAgICAgICBlZ2xHZXRDb25maWdB
dHRyaWIobURpc3BsYXksIGMyLCBFR0xfUkVEX1NJWkUsICZyZWQyKTsKLSAgICAgICAgZWdsR2V0
Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjMSwgRUdMX0dSRUVOX1NJWkUsICZncmVlbjEpOwotICAg
ICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIGMyLCBFR0xfR1JFRU5fU0laRSwgJmdy
ZWVuMik7Ci0gICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgYzEsIEVHTF9CTFVF
X1NJWkUsICZibHVlMSk7Ci0gICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgYzIs
IEVHTF9CTFVFX1NJWkUsICZibHVlMik7Ci0gICAgICAgIGVnbEdldENvbmZpZ0F0dHJpYihtRGlz
cGxheSwgYzEsIEVHTF9BTFBIQV9TSVpFLCAmYWxwaGExKTsKLSAgICAgICAgZWdsR2V0Q29uZmln
QXR0cmliKG1EaXNwbGF5LCBjMiwgRUdMX0FMUEhBX1NJWkUsICZhbHBoYTIpOwotCi0gICAgICAg
IGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgYzEsIEVHTF9ERVBUSF9TSVpFLCAmZGVwdGgx
KTsKLSAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBjMiwgRUdMX0RFUFRIX1NJ
WkUsICZkZXB0aDIpOwotICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIGMxLCBF
R0xfU1RFTkNJTF9TSVpFLCAmc3RlbmNpbDEpOwotICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIo
bURpc3BsYXksIGMyLCBFR0xfU1RFTkNJTF9TSVpFLCAmc3RlbmNpbDIpOwotCi0gICAgICAgIGVn
bEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgYzEsIEVHTF9TVVJGQUNFX1RZUEUsICZzdXJmYWNl
VHlwZTEpOwotICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIGMyLCBFR0xfU1VS
RkFDRV9UWVBFLCAmc3VyZmFjZVR5cGUyKTsKLQotICAgICAgICByZXR1cm4gY29sb3JCdWZmZXJU
eXBlMSA9PSBjb2xvckJ1ZmZlclR5cGUyICYmCi0gICAgICAgICAgICAgICByZWQxID09IHJlZDIg
JiYgZ3JlZW4xID09IGdyZWVuMiAmJiBibHVlMSA9PSBibHVlMiAmJiBhbHBoYTEgPT0gYWxwaGEy
ICYmCi0gICAgICAgICAgICAgICBkZXB0aDEgPT0gZGVwdGgyICYmIHN0ZW5jaWwxID09IHN0ZW5j
aWwyICYmCi0gICAgICAgICAgICAgICAoc3VyZmFjZVR5cGUxICYgc3VyZmFjZUJpdCkgIT0gMCAm
JgotICAgICAgICAgICAgICAgKHN1cmZhY2VUeXBlMiAmIHN1cmZhY2VCaXQpICE9IDA7Ci0gICAg
fQotCi0gICAgdm9pZCB0ZXN0V2luZG93Q29tcGF0aWJpbGl0eShFR0xDb25maWcgd2luZG93Q29u
ZmlnLCBFR0xDb25maWcgY29udGV4dENvbmZpZywgYm9vbCBjb21wYXRpYmxlKSBjb25zdAotICAg
IHsKLSAgICAgICAgT1NXaW5kb3cgKm9zV2luZG93ID0gQ3JlYXRlT1NXaW5kb3coKTsKLSAgICAg
ICAgQVNTRVJUX1RSVUUob3NXaW5kb3cgIT0gbnVsbHB0cik7Ci0gICAgICAgIG9zV2luZG93LT5p
bml0aWFsaXplKCJFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QiLCA1MDAsIDUwMCk7Ci0gICAg
ICAgIG9zV2luZG93LT5zZXRWaXNpYmxlKHRydWUpOwotCi0gICAgICAgIEVHTENvbnRleHQgY29u
dGV4dCA9IGVnbENyZWF0ZUNvbnRleHQobURpc3BsYXksIGNvbnRleHRDb25maWcsIEVHTF9OT19D
T05URVhULCBjb250ZXh0QXR0cmlicyk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKGNvbnRleHQgIT0g
RUdMX05PX0NPTlRFWFQpOwotCi0gICAgICAgIEVHTFN1cmZhY2Ugd2luZG93ID0gZWdsQ3JlYXRl
V2luZG93U3VyZmFjZShtRGlzcGxheSwgd2luZG93Q29uZmlnLCBvc1dpbmRvdy0+Z2V0TmF0aXZl
V2luZG93KCksIG51bGxwdHIpOwotICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAg
ICAgICBpZiAoY29tcGF0aWJsZSkKLSAgICAgICAgewotICAgICAgICAgICAgdGVzdENsZWFyU3Vy
ZmFjZSh3aW5kb3csIGNvbnRleHQpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ewotICAgICAgICAgICAgdGVzdE1ha2VDdXJyZW50RmFpbHMod2luZG93LCBjb250ZXh0KTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKG1EaXNwbGF5LCB3aW5kb3cpOwot
ICAgICAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgICAgICBlZ2xEZXN0cm95Q29udGV4
dChtRGlzcGxheSwgY29udGV4dCk7Ci0gICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0g
ICAgICAgIFNhZmVEZWxldGUob3NXaW5kb3cpOwotICAgIH0KLQotICAgIHZvaWQgdGVzdFBidWZm
ZXJDb21wYXRpYmlsaXR5KEVHTENvbmZpZyBwYnVmZmVyQ29uZmlnLCBFR0xDb25maWcgY29udGV4
dENvbmZpZywgYm9vbCBjb21wYXRpYmxlKSBjb25zdAotICAgIHsKLSAgICAgICAgRUdMQ29udGV4
dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChtRGlzcGxheSwgY29udGV4dENvbmZpZywgRUdM
X05PX0NPTlRFWFQsIGNvbnRleHRBdHRyaWJzKTsKLSAgICAgICAgQVNTRVJUX1RSVUUoY29udGV4
dCAhPSBFR0xfTk9fQ09OVEVYVCk7Ci0KLSAgICAgICAgY29uc3QgRUdMaW50IHBCdWZmZXJBdHRy
aWJzW10gPQotICAgICAgICB7Ci0gICAgICAgICAgICBFR0xfV0lEVEgsIDUwMCwKLSAgICAgICAg
ICAgIEVHTF9IRUlHSFQsIDUwMCwKLSAgICAgICAgICAgIEVHTF9OT05FLAotICAgICAgICB9Owot
ICAgICAgICBFR0xTdXJmYWNlIHBidWZmZXIgPSBlZ2xDcmVhdGVQYnVmZmVyU3VyZmFjZShtRGlz
cGxheSwgcGJ1ZmZlckNvbmZpZywgcEJ1ZmZlckF0dHJpYnMpOwotICAgICAgICBBU1NFUlRfVFJV
RShwYnVmZmVyICE9IEVHTF9OT19TVVJGQUNFKTsKLQotICAgICAgICBpZiAoY29tcGF0aWJsZSkK
LSAgICAgICAgewotICAgICAgICAgICAgdGVzdENsZWFyU3VyZmFjZShwYnVmZmVyLCBjb250ZXh0
KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RN
YWtlQ3VycmVudEZhaWxzKHBidWZmZXIsIGNvbnRleHQpOwotICAgICAgICB9Ci0KLSAgICAgICAg
ZWdsRGVzdHJveVN1cmZhY2UobURpc3BsYXksIHBidWZmZXIpOwotICAgICAgICBBU1NFUlRfRUdM
X1NVQ0NFU1MoKTsKLQotICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChtRGlzcGxheSwgY29udGV4
dCk7Ci0gICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotICAgIH0KLQotICAgIHN0ZDo6dmVj
dG9yPEVHTENvbmZpZz4gbUNvbmZpZ3M7Ci0gICAgRUdMRGlzcGxheSBtRGlzcGxheTsKLQotICBw
cml2YXRlOgotICAgIHZvaWQgdGVzdENsZWFyU3VyZmFjZShFR0xTdXJmYWNlIHN1cmZhY2UsIEVH
TENvbnRleHQgY29udGV4dCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGVnbE1ha2VDdXJyZW50KG1E
aXNwbGF5LCBzdXJmYWNlLCBzdXJmYWNlLCBjb250ZXh0KTsKLSAgICAgICAgQVNTRVJUX0VHTF9T
VUNDRVNTKCk7Ci0KLSAgICAgICAgZ2xWaWV3cG9ydCgwLCAwLCA1MDAsIDUwMCk7Ci0gICAgICAg
IGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAxLjBmLCAxLjBmKTsKLSAgICAgICAgZ2xDbGVhcihH
TF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAg
ICAgIEVYUEVDVF9QSVhFTF9FUSgyNTAsIDI1MCwgMCwgMCwgMjU1LCAyNTUpOwotCi0gICAgICAg
IGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0Us
IEVHTF9OT19DT05URVhUKTsKLSAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0gICAgfQot
Ci0gICAgdm9pZCB0ZXN0TWFrZUN1cnJlbnRGYWlscyhFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTENv
bnRleHQgY29udGV4dCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGVnbE1ha2VDdXJyZW50KG1EaXNw
bGF5LCBzdXJmYWNlLCBzdXJmYWNlLCBjb250ZXh0KTsKLSAgICAgICAgRVhQRUNUX0VHTF9FUlJP
UihFR0xfQkFEX01BVENIKTsKLSAgICB9Ci19OwotCi0vLyBUaGUgdGVzdCBpcyBzcGxpdCBpbiBz
ZXZlcmFsIHN1YnRlc3Qgc28gdGhhdCBzaW1wbGUgY2FzZXMKLS8vIGFyZSB0ZXN0ZWQgc2VwYXJh
dGVseS4gQWxzbyBlYWNoIHN1cmZhY2UgdHlwZXMgYXJlIG5vdCB0ZXN0ZWQKLS8vIHRvZ2V0aGVy
LgotCi0vLyBCYXNpYyB0ZXN0IGNoZWNraW5nIGNvbnRleHRzIGFuZCB3aW5kb3dzIGNyZWF0ZWQg
d2l0aCB0aGUKLS8vIHNhbWUgY29uZmlnIGNhbiByZW5kZXIuCi1URVNUX1AoRUdMQ29udGV4dENv
bXBhdGliaWxpdHlUZXN0LCBXaW5kb3dTYW1lQ29uZmlnKQotewotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbUNvbmZpZ3Muc2l6ZSgpOyBpKyspCi0gICAgewotICAgICAgICBFR0xDb25maWcg
Y29uZmlnID0gbUNvbmZpZ3NbaV07Ci0KLSAgICAgICAgRUdMaW50IHN1cmZhY2VUeXBlOwotICAg
ICAgICBlZ2xHZXRDb25maWdBdHRyaWIobURpc3BsYXksIGNvbmZpZywgRUdMX1NVUkZBQ0VfVFlQ
RSwgJnN1cmZhY2VUeXBlKTsKLSAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICAg
ICAgaWYgKChzdXJmYWNlVHlwZSAmIEVHTF9XSU5ET1dfQklUKSAhPSAwKQotICAgICAgICB7Ci0g
ICAgICAgICAgICB0ZXN0V2luZG93Q29tcGF0aWJpbGl0eShjb25maWcsIGNvbmZpZywgdHJ1ZSk7
Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS8vIEJhc2ljIHRlc3QgY2hlY2tpbmcgY29udGV4dHMg
YW5kIHBidWZmZXJzIGNyZWF0ZWQgd2l0aCB0aGUKLS8vIHNhbWUgY29uZmlnIGNhbiByZW5kZXIu
Ci1URVNUX1AoRUdMQ29udGV4dENvbXBhdGliaWxpdHlUZXN0LCBQYnVmZmVyU2FtZUNvbmZpZykK
LXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1Db25maWdzLnNpemUoKTsgaSsrKQotICAg
IHsKLSAgICAgICAgRUdMQ29uZmlnIGNvbmZpZyA9IG1Db25maWdzW2ldOwotCi0gICAgICAgIEVH
TGludCBzdXJmYWNlVHlwZTsKLSAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKG1EaXNwbGF5LCBj
b25maWcsIEVHTF9TVVJGQUNFX1RZUEUsICZzdXJmYWNlVHlwZSk7Ci0gICAgICAgIEFTU0VSVF9F
R0xfU1VDQ0VTUygpOwotCi0gICAgICAgIGlmICgoc3VyZmFjZVR5cGUgJiBFR0xfUEJVRkZFUl9C
SVQpICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlc3RQYnVmZmVyQ29tcGF0aWJpbGl0
eShjb25maWcsIGNvbmZpZywgdHJ1ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS8vIENoZWNr
IHRoYXQgYSBjb250ZXh0IHJlbmRlcmluZyB0byBhIHdpbmRvdyB3aXRoIGEgZGlmZmVyZW50Ci0v
LyBjb25maWcgd29ya3Mgb3IgZXJyb3JzIGFjY29yZGluZyB0byB0aGUgRUdMIGNvbXBhdGliaWxp
dHkgcnVsZXMKLVRFU1RfUChFR0xDb250ZXh0Q29tcGF0aWJpbGl0eVRlc3QsIFdpbmRvd0RpZmZl
cmVudENvbmZpZykKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1Db25maWdzLnNpemUo
KTsgaSsrKQotICAgIHsKLSAgICAgICAgRUdMQ29uZmlnIGNvbmZpZzEgPSBtQ29uZmlnc1tpXTsK
LSAgICAgICAgRUdMaW50IHN1cmZhY2VUeXBlOwotICAgICAgICBlZ2xHZXRDb25maWdBdHRyaWIo
bURpc3BsYXksIGNvbmZpZzEsIEVHTF9TVVJGQUNFX1RZUEUsICZzdXJmYWNlVHlwZSk7Ci0gICAg
ICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgICAgIGlmICgoc3VyZmFjZVR5cGUgJiBF
R0xfV0lORE9XX0JJVCkgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIH0KLQotICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG1Db25maWdzLnNpemUo
KTsgaisrKQotICAgICAgICB7Ci0gICAgICAgICAgICBFR0xDb25maWcgY29uZmlnMiA9IG1Db25m
aWdzW2pdOwotICAgICAgICAgICAgdGVzdFdpbmRvd0NvbXBhdGliaWxpdHkoY29uZmlnMSwgY29u
ZmlnMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZUNvbmZpZ3NDb21w
YXRpYmxlKGNvbmZpZzEsIGNvbmZpZzIsIEVHTF9XSU5ET1dfQklUKSk7Ci0gICAgICAgIH0KLSAg
ICB9Ci19Ci0KLS8vIENoZWNrIHRoYXQgYSBjb250ZXh0IHJlbmRlcmluZyB0byBhIHBidWZmZXIg
d2l0aCBhIGRpZmZlcmVudAotLy8gY29uZmlnIHdvcmtzIG9yIGVycm9ycyBhY2NvcmRpbmcgdG8g
dGhlIEVHTCBjb21wYXRpYmlsaXR5IHJ1bGVzCi1URVNUX1AoRUdMQ29udGV4dENvbXBhdGliaWxp
dHlUZXN0LCBQYnVmZmVyRGlmZmVyZW50Q29uZmlnKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbUNvbmZpZ3Muc2l6ZSgpOyBpKyspCi0gICAgewotICAgICAgICBFR0xDb25maWcgY29u
ZmlnMSA9IG1Db25maWdzW2ldOwotICAgICAgICBFR0xpbnQgc3VyZmFjZVR5cGU7Ci0gICAgICAg
IGVnbEdldENvbmZpZ0F0dHJpYihtRGlzcGxheSwgY29uZmlnMSwgRUdMX1NVUkZBQ0VfVFlQRSwg
JnN1cmZhY2VUeXBlKTsKLSAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICAgICAg
aWYgKChzdXJmYWNlVHlwZSAmIEVHTF9QQlVGRkVSX0JJVCkgPT0gMCkKLSAgICAgICAgewotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKHNpemVfdCBqID0g
MDsgaiA8IG1Db25maWdzLnNpemUoKTsgaisrKQotICAgICAgICB7Ci0gICAgICAgICAgICBFR0xD
b25maWcgY29uZmlnMiA9IG1Db25maWdzW2pdOwotICAgICAgICAgICAgdGVzdFBidWZmZXJDb21w
YXRpYmlsaXR5KGNvbmZpZzEsIGNvbmZpZzIsIGFyZUNvbmZpZ3NDb21wYXRpYmxlKGNvbmZpZzEs
IGNvbmZpZzIsIEVHTF9QQlVGRkVSX0JJVCkpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1BTkdM
RV9JTlNUQU5USUFURV9URVNUKEVHTENvbnRleHRDb21wYXRpYmlsaXR5VGVzdCwgRVMyX0QzRDko
KSwgRVMyX0QzRDExKCksIEVTMl9PUEVOR0woKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTENvbnRleHRTaGFyaW5nVGVzdC5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTENvbnRleHRT
aGFyaW5nVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjNjZiNzkwOTYx
Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWds
X3Rlc3RzL0VHTENvbnRleHRTaGFyaW5nVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NyAr
MCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIEVHTENvbnRleHRTaGFyaW5nVGVzdC5jcHA6Ci0vLyAg
IFRlc3RzIHJlbGF0aW5nIHRvIHNoYXJlZCBDb250ZXh0cy4KLQotI2luY2x1ZGUgPGd0ZXN0L2d0
ZXN0Lmg+Ci0KLSNpbmNsdWRlIDxFR0wvZWdsLmg+Ci0jaW5jbHVkZSA8RUdML2VnbGV4dC5oPgot
Ci0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLSNpbmNsdWRlICJ0ZXN0X3V0aWxz
L2FuZ2xlX3Rlc3RfY29uZmlncy5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVz
cGFjZQotewotCi1FR0xCb29sZWFuIFNhZmVEZXN0cm95Q29udGV4dChFR0xEaXNwbGF5IGRpc3Bs
YXksIEVHTENvbnRleHQgJmNvbnRleHQpCi17Ci0gICAgRUdMQm9vbGVhbiByZXN1bHQgPSBFR0xf
VFJVRTsKLSAgICBpZiAoY29udGV4dCAhPSBFR0xfTk9fQ09OVEVYVCkKLSAgICB7Ci0gICAgICAg
IHJlc3VsdCAgPSBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICAgICAg
Y29udGV4dCA9IEVHTF9OT19DT05URVhUOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci1jbGFzcyBFR0xDb250ZXh0U2hhcmluZ1Rlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHB1
YmxpYzoKLSAgICBFR0xDb250ZXh0U2hhcmluZ1Rlc3QoKSA6IG1Db250ZXh0c3tFR0xfTk9fQ09O
VEVYVCwgRUdMX05PX0NPTlRFWFR9LCBtVGV4dHVyZSgwKSB7fQotCi0gICAgdm9pZCBUZWFyRG93
bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVy
ZSk7Ci0KLSAgICAgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gZ2V0RUdMV2luZG93KCktPmdldERp
c3BsYXkoKTsKLQotICAgICAgICBpZiAoZGlzcGxheSAhPSBFR0xfTk9fRElTUExBWSkKLSAgICAg
ICAgewotICAgICAgICAgICAgZm9yIChhdXRvICZjb250ZXh0IDogbUNvbnRleHRzKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIFNhZmVEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250
ZXh0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVh
ckRvd24oKTsKLSAgICB9Ci0KLSAgICBFR0xDb250ZXh0IG1Db250ZXh0c1syXTsKLSAgICBHTHVp
bnQgbVRleHR1cmU7Ci19OwotCi0vLyBUZXN0cyB0aGF0IGNyZWF0aW5nIHJlc291cmNlcyB3b3Jr
cyBhZnRlciBmcmVlaW5nIHRoZSBzaGFyZSBjb250ZXh0LgotVEVTVF9QKEVHTENvbnRleHRTaGFy
aW5nVGVzdCwgQmluZFRleHR1cmVBZnRlclNoYXJlQ29udGV4dEZyZWUpCi17Ci0gICAgRUdMRGlz
cGxheSBkaXNwbGF5ID0gZ2V0RUdMV2luZG93KCktPmdldERpc3BsYXkoKTsKLSAgICBFR0xDb25m
aWcgY29uZmlnICAgPSBnZXRFR0xXaW5kb3coKS0+Z2V0Q29uZmlnKCk7Ci0gICAgRUdMU3VyZmFj
ZSBzdXJmYWNlID0gZ2V0RUdMV2luZG93KCktPmdldFN1cmZhY2UoKTsKLQotICAgIGNvbnN0IEVH
TGludCBjb250ZXh0QXR0cmlic1tdID0ge0VHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEVHTFdpbmRvdygpLT5nZXRDbGll
bnRNYWpvclZlcnNpb24oKSwgRUdMX05PTkV9OwotCi0gICAgbUNvbnRleHRzWzBdID0gZWdsQ3Jl
YXRlQ29udGV4dChkaXNwbGF5LCBjb25maWcsIG51bGxwdHIsIGNvbnRleHRBdHRyaWJzKTsKLSAg
ICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLSAgICBBU1NFUlRfVFJVRShtQ29udGV4dHNbMF0gIT0g
RUdMX05PX0NPTlRFWFQpOwotICAgIG1Db250ZXh0c1sxXSA9IGVnbENyZWF0ZUNvbnRleHQoZGlz
cGxheSwgY29uZmlnLCBtQ29udGV4dHNbMV0sIGNvbnRleHRBdHRyaWJzKTsKLSAgICBBU1NFUlRf
RUdMX1NVQ0NFU1MoKTsKLSAgICBBU1NFUlRfVFJVRShtQ29udGV4dHNbMV0gIT0gRUdMX05PX0NP
TlRFWFQpOwotCi0gICAgQVNTRVJUX0VHTF9UUlVFKFNhZmVEZXN0cm95Q29udGV4dChkaXNwbGF5
LCBtQ29udGV4dHNbMF0pKTsKLSAgICBBU1NFUlRfRUdMX1RSVUUoZWdsTWFrZUN1cnJlbnQoZGlz
cGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgbUNvbnRleHRzWzFdKSk7Ci0gICAgQVNTRVJUX0VHTF9T
VUNDRVNTKCk7Ci0KLSAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZSk7Ci0gICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci19Ci0KLX0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotQU5HTEVfSU5TVEFOVElBVEVf
VEVTVChFR0xDb250ZXh0U2hhcmluZ1Rlc3QsIEVTMl9EM0Q5KCksIEVTMl9EM0QxMSgpLCBFUzJf
T1BFTkdMKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2VnbF90ZXN0cy9FR0xEZXZpY2VUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9lZ2xfdGVzdHMvRUdMRGV2aWNlVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDcyMTc1NDE4MTMzLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTERldmljZVRlc3QuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsNTg3ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpZm5kZWYgQU5HTEVfRU5BQkxFX0Qz
RDkKLSNkZWZpbmUgQU5HTEVfRU5BQkxFX0QzRDkKLSNlbmRpZgotCi0jaWZuZGVmIEFOR0xFX0VO
QUJMRV9EM0QxMQotI2RlZmluZSBBTkdMRV9FTkFCTEVfRDNEMTEKLSNlbmRpZgotCi0jaW5jbHVk
ZSA8ZDNkMTEuaD4KLQotI2luY2x1ZGUgImNvbV91dGlscy5oIgotI2luY2x1ZGUgIk9TV2luZG93
LmgiCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFtZXNwYWNl
IGFuZ2xlOwotCi1jbGFzcyBFR0xEZXZpY2VDcmVhdGlvblRlc3QgOiBwdWJsaWMgdGVzdGluZzo6
VGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgRUdMRGV2aWNlQ3JlYXRpb25UZXN0KCkKLSAgICAg
ICAgOiBtRDNEMTFBdmFpbGFibGUoZmFsc2UpLAotICAgICAgICAgIG1EM0QxMU1vZHVsZShudWxs
cHRyKSwKLSAgICAgICAgICBtRDNEMTFDcmVhdGVEZXZpY2UobnVsbHB0ciksCi0gICAgICAgICAg
bURldmljZShudWxscHRyKSwKLSAgICAgICAgICBtRGV2aWNlQ29udGV4dChudWxscHRyKSwKLSAg
ICAgICAgICBtRGV2aWNlQ3JlYXRpb25EM0QxMUV4dEF2YWlsYWJsZShmYWxzZSksCi0gICAgICAg
ICAgbU9TV2luZG93KG51bGxwdHIpLAotICAgICAgICAgIG1EaXNwbGF5KEVHTF9OT19ESVNQTEFZ
KSwKLSAgICAgICAgICBtU3VyZmFjZShFR0xfTk9fU1VSRkFDRSksCi0gICAgICAgICAgbUNvbnRl
eHQoRUdMX05PX0NPTlRFWFQpLAotICAgICAgICAgIG1Db25maWcoMCkKLSAgICB7Ci0gICAgfQot
Ci0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBtRDNEMTFNb2R1bGUg
PSBMb2FkTGlicmFyeShURVhUKCJkM2QxMS5kbGwiKSk7Ci0gICAgICAgIGlmIChtRDNEMTFNb2R1
bGUgPT0gbnVsbHB0cikKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJVbmFi
bGUgdG8gTG9hZExpYnJhcnkgRDNEMTEiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIG1EM0QxMUNyZWF0ZURldmljZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8UEZOX0QzRDExX0NSRUFURV9ERVZJQ0U+KAotICAgICAgICAgICAgR2V0UHJvY0FkZHJl
c3MobUQzRDExTW9kdWxlLCAiRDNEMTFDcmVhdGVEZXZpY2UiKSk7Ci0gICAgICAgIGlmIChtRDNE
MTFDcmVhdGVEZXZpY2UgPT0gbnVsbHB0cikKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpj
b3V0IDw8ICJDb3VsZCBub3QgcmV0cmlldmUgRDNEMTFDcmVhdGVEZXZpY2UgZnJvbSBkM2QxMS5k
bGwiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAg
ICAgIG1EM0QxMUF2YWlsYWJsZSA9IHRydWU7Ci0KLSAgICAgICAgY29uc3QgY2hhciAqZXh0ZW5z
aW9uU3RyaW5nID0KLSAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4oZWdsUXVl
cnlTdHJpbmcoRUdMX05PX0RJU1BMQVksIEVHTF9FWFRFTlNJT05TKSk7Ci0gICAgICAgIGlmIChz
dHJzdHIoZXh0ZW5zaW9uU3RyaW5nLCAiRUdMX0FOR0xFX2RldmljZV9jcmVhdGlvbiIpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoc3Ryc3RyKGV4dGVuc2lvblN0cmluZywgIkVHTF9BTkdM
RV9kZXZpY2VfY3JlYXRpb25fZDNkMTEiKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBtRGV2aWNlQ3JlYXRpb25EM0QxMUV4dEF2YWlsYWJsZSA9IHRydWU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIFNhZmVSZWxlYXNlKG1EZXZpY2UpOwotICAgICAgICBTYWZlUmVsZWFzZShtRGV2
aWNlQ29udGV4dCk7Ci0KLSAgICAgICAgU2FmZURlbGV0ZShtT1NXaW5kb3cpOwotCi0gICAgICAg
IGlmIChtU3VyZmFjZSAhPSBFR0xfTk9fU1VSRkFDRSkKLSAgICAgICAgewotICAgICAgICAgICAg
ZWdsRGVzdHJveVN1cmZhY2UobURpc3BsYXksIG1TdXJmYWNlKTsKLSAgICAgICAgICAgIG1TdXJm
YWNlID0gRUdMX05PX1NVUkZBQ0U7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobUNvbnRleHQg
IT0gRUdMX05PX0NPTlRFWFQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVnbERlc3Ryb3lDb250
ZXh0KG1EaXNwbGF5LCBtQ29udGV4dCk7Ci0gICAgICAgICAgICBtQ29udGV4dCA9IEVHTF9OT19D
T05URVhUOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1EaXNwbGF5ICE9IEVHTF9OT19ESVNQ
TEFZKQotICAgICAgICB7Ci0gICAgICAgICAgICBlZ2xUZXJtaW5hdGUobURpc3BsYXkpOwotICAg
ICAgICAgICAgbURpc3BsYXkgPSBFR0xfTk9fRElTUExBWTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHZvaWQgQ3JlYXRlRDNEMTFEZXZpY2UoKQotICAgIHsKLSAgICAgICAgQVNTRVJUX1RSVUUo
bUQzRDExQXZhaWxhYmxlKTsKLSAgICAgICAgQVNTRVJUX0VRKG51bGxwdHIsIG1EZXZpY2UpOyAg
Ly8gVGhlIGRldmljZSBzaG91bGRuJ3QgYmUgY3JlYXRlZCB0d2ljZQotCi0gICAgICAgIEhSRVNV
TFQgaHIgPQotICAgICAgICAgICAgbUQzRDExQ3JlYXRlRGV2aWNlKG51bGxwdHIsIEQzRF9EUklW
RVJfVFlQRV9IQVJEV0FSRSwgMCwgMCwgbnVsbHB0ciwgMCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEM0QxMV9TREtfVkVSU0lPTiwgJm1EZXZpY2UsICZtRmVhdHVyZUxldmVsLCAm
bURldmljZUNvbnRleHQpOwotCi0gICAgICAgIEFTU0VSVF9UUlVFKFNVQ0NFRURFRChocikpOwot
ICAgICAgICBBU1NFUlRfR0UobUZlYXR1cmVMZXZlbCwgRDNEX0ZFQVRVUkVfTEVWRUxfOV8zKTsK
LSAgICB9Ci0KLSAgICB2b2lkIENyZWF0ZUQzRDExRkw5XzNEZXZpY2UoKQotICAgIHsKLSAgICAg
ICAgQVNTRVJUX1RSVUUobUQzRDExQXZhaWxhYmxlKTsKLSAgICAgICAgQVNTRVJUX0VRKG51bGxw
dHIsIG1EZXZpY2UpOwotCi0gICAgICAgIEQzRF9GRUFUVVJFX0xFVkVMIGZsOTMgPSBEM0RfRkVB
VFVSRV9MRVZFTF85XzM7Ci0KLSAgICAgICAgSFJFU1VMVCBociA9Ci0gICAgICAgICAgICBtRDNE
MTFDcmVhdGVEZXZpY2UobnVsbHB0ciwgRDNEX0RSSVZFUl9UWVBFX0hBUkRXQVJFLCAwLCAwLCAm
Zmw5MywgMSwgRDNEMTFfU0RLX1ZFUlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJm1EZXZpY2UsICZtRmVhdHVyZUxldmVsLCAmbURldmljZUNvbnRleHQpOwotCi0gICAgICAg
IEFTU0VSVF9UUlVFKFNVQ0NFRURFRChocikpOwotICAgIH0KLQotICAgIHZvaWQgQ3JlYXRlV2lu
ZG93U3VyZmFjZSgpCi0gICAgewotICAgICAgICBFR0xpbnQgbWFqb3JWZXJzaW9uLCBtaW5vclZl
cnNpb247Ci0gICAgICAgIEFTU0VSVF9FR0xfVFJVRShlZ2xJbml0aWFsaXplKG1EaXNwbGF5LCAm
bWFqb3JWZXJzaW9uLCAmbWlub3JWZXJzaW9uKSk7Ci0KLSAgICAgICAgZWdsQmluZEFQSShFR0xf
T1BFTkdMX0VTX0FQSSk7Ci0gICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgICAg
IC8vIENob29zZSBhIGNvbmZpZwotICAgICAgICBjb25zdCBFR0xpbnQgY29uZmlnQXR0cmlidXRl
c1tdID0ge0VHTF9OT05FfTsKLSAgICAgICAgRUdMaW50IGNvbmZpZ0NvdW50ID0gMDsKLSAgICAg
ICAgQVNTRVJUX0VHTF9UUlVFKGVnbENob29zZUNvbmZpZyhtRGlzcGxheSwgY29uZmlnQXR0cmli
dXRlcywgJm1Db25maWcsIDEsICZjb25maWdDb3VudCkpOwotCi0gICAgICAgIC8vIENyZWF0ZSBh
biBPUyBXaW5kb3cKLSAgICAgICAgbU9TV2luZG93ID0gQ3JlYXRlT1NXaW5kb3coKTsKLSAgICAg
ICAgbU9TV2luZG93LT5pbml0aWFsaXplKCJFR0xTdXJmYWNlVGVzdCIsIDY0LCA2NCk7Ci0KLSAg
ICAgICAgLy8gQ3JlYXRlIHdpbmRvdyBzdXJmYWNlCi0gICAgICAgIG1TdXJmYWNlID0gZWdsQ3Jl
YXRlV2luZG93U3VyZmFjZShtRGlzcGxheSwgbUNvbmZpZywgbU9TV2luZG93LT5nZXROYXRpdmVX
aW5kb3coKSwgbnVsbHB0cik7Ci0gICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAg
ICAgIC8vIENyZWF0ZSBFR0wgY29udGV4dAotICAgICAgICBFR0xpbnQgY29udGV4dEF0dGlidXRl
c1tdID0ge0VHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCAyLCBFR0xfTk9ORX07Ci0gICAgICAg
IG1Db250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChtRGlzcGxheSwgbUNvbmZpZywgbnVsbHB0ciwg
Y29udGV4dEF0dGlidXRlcyk7Ci0gICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAg
ICAgIC8vIE1ha2UgdGhlIHN1cmZhY2UgY3VycmVudAotICAgICAgICBlZ2xNYWtlQ3VycmVudCht
RGlzcGxheSwgbVN1cmZhY2UsIG1TdXJmYWNlLCBtQ29udGV4dCk7Ci0gICAgICAgIEFTU0VSVF9F
R0xfU1VDQ0VTUygpOwotICAgIH0KLQotICAgIC8vIFRoaXMgdHJpZ2dlcnMgYSBEM0QgZGV2aWNl
IGxvc3Qgb24gY3VycmVudCBXaW5kb3dzIHN5c3RlbXMKLSAgICAvLyBUaGlzIGJlaGF2aW9yIGNv
dWxkIHBvdGVudGlhbGx5IGNoYW5nZSBpbiB0aGUgZnV0dXJlCi0gICAgdm9pZCB0cmlnZ2VyOV8z
RGV2aWNlTG9zdCgpCi0gICAgewotICAgICAgICBJRDNEMTFCdWZmZXIgKmdzQnVmZmVyICAgICAg
ID0gbnVsbHB0cjsKLSAgICAgICAgRDNEMTFfQlVGRkVSX0RFU0MgYnVmZmVyRGVzYyA9IHswfTsK
LSAgICAgICAgYnVmZmVyRGVzYy5CeXRlV2lkdGggICAgICAgICA9IDY0OwotICAgICAgICBidWZm
ZXJEZXNjLlVzYWdlICAgICAgICAgICAgID0gRDNEMTFfVVNBR0VfREVGQVVMVDsKLSAgICAgICAg
YnVmZmVyRGVzYy5CaW5kRmxhZ3MgICAgICAgICA9IEQzRDExX0JJTkRfQ09OU1RBTlRfQlVGRkVS
OwotCi0gICAgICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlQnVmZmVyKCZidWZm
ZXJEZXNjLCBudWxscHRyLCAmZ3NCdWZmZXIpOwotICAgICAgICBBU1NFUlRfVFJVRShTVUNDRUVE
RUQocmVzdWx0KSk7Ci0KLSAgICAgICAgbURldmljZUNvbnRleHQtPkdTU2V0Q29uc3RhbnRCdWZm
ZXJzKDAsIDEsICZnc0J1ZmZlcik7Ci0gICAgICAgIFNhZmVSZWxlYXNlKGdzQnVmZmVyKTsKLSAg
ICAgICAgZ3NCdWZmZXIgPSBudWxscHRyOwotCi0gICAgICAgIHJlc3VsdCA9IG1EZXZpY2UtPkdl
dERldmljZVJlbW92ZWRSZWFzb24oKTsKLSAgICAgICAgQVNTRVJUX1RSVUUoRkFJTEVEKHJlc3Vs
dCkpOwotICAgIH0KLQotICAgIGJvb2wgbUQzRDExQXZhaWxhYmxlOwotICAgIEhNT0RVTEUgbUQz
RDExTW9kdWxlOwotICAgIFBGTl9EM0QxMV9DUkVBVEVfREVWSUNFIG1EM0QxMUNyZWF0ZURldmlj
ZTsKLQotICAgIElEM0QxMURldmljZSAqbURldmljZTsKLSAgICBJRDNEMTFEZXZpY2VDb250ZXh0
ICptRGV2aWNlQ29udGV4dDsKLSAgICBEM0RfRkVBVFVSRV9MRVZFTCBtRmVhdHVyZUxldmVsOwot
Ci0gICAgYm9vbCBtRGV2aWNlQ3JlYXRpb25EM0QxMUV4dEF2YWlsYWJsZTsKLQotICAgIE9TV2lu
ZG93ICptT1NXaW5kb3c7Ci0KLSAgICBFR0xEaXNwbGF5IG1EaXNwbGF5OwotICAgIEVHTFN1cmZh
Y2UgbVN1cmZhY2U7Ci0gICAgRUdMQ29udGV4dCBtQ29udGV4dDsKLSAgICBFR0xDb25maWcgbUNv
bmZpZzsKLX07Ci0KLS8vIFRlc3QgdGhhdCBjcmVhdGluZyBhIEVHTERldmljZUVYVCBmcm9tIEQz
RDExIGRldmljZSB3b3JrcywgYW5kIGl0IGNhbiBiZSBxdWVyaWVkIHRvIHJldHJpZXZlCi0vLyBE
M0QxMSBkZXZpY2UKLVRFU1RfRihFR0xEZXZpY2VDcmVhdGlvblRlc3QsIEJhc2ljRDNEMTFEZXZp
Y2UpCi17Ci0gICAgaWYgKCFtRGV2aWNlQ3JlYXRpb25EM0QxMUV4dEF2YWlsYWJsZSB8fCAhbUQz
RDExQXZhaWxhYmxlKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJFR0xEZXZpY2UgY3Jl
YXRpb24gYW5kL29yIEQzRDExIG5vdCBhdmFpbGFibGUsIHNraXBwaW5nIHRlc3QiIDw8IHN0ZDo6
ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENyZWF0ZUQzRDExRGV2aWNlKCk7
Ci0KLSAgICBFR0xEZXZpY2VFWFQgZWdsRGV2aWNlID0KLSAgICAgICAgZWdsQ3JlYXRlRGV2aWNl
QU5HTEUoRUdMX0QzRDExX0RFVklDRV9BTkdMRSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KG1E
ZXZpY2UpLCBudWxscHRyKTsKLSAgICBBU1NFUlRfTkUoRUdMX05PX0RFVklDRV9FWFQsIGVnbERl
dmljZSk7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBFR0xBdHRyaWIgZGV2aWNl
QXR0cmliOwotICAgIGVnbFF1ZXJ5RGV2aWNlQXR0cmliRVhUKGVnbERldmljZSwgRUdMX0QzRDEx
X0RFVklDRV9BTkdMRSwgJmRldmljZUF0dHJpYik7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7
Ci0KLSAgICBJRDNEMTFEZXZpY2UgKnF1ZXJpZWREZXZpY2UgPSByZWludGVycHJldF9jYXN0PElE
M0QxMURldmljZSAqPihkZXZpY2VBdHRyaWIpOwotICAgIEFTU0VSVF9FUShtRmVhdHVyZUxldmVs
LCBxdWVyaWVkRGV2aWNlLT5HZXRGZWF0dXJlTGV2ZWwoKSk7Ci0KLSAgICBlZ2xSZWxlYXNlRGV2
aWNlQU5HTEUoZWdsRGV2aWNlKTsKLX0KLQotLy8gVGVzdCB0aGF0IGNyZWF0aW5nIGEgRUdMRGV2
aWNlRVhUIGZyb20gRDNEMTEgZGV2aWNlIHdvcmtzLCBhbmQgaXQgY2FuIGJlIHF1ZXJpZWQgdG8g
cmV0cmlldmUKLS8vIEQzRDExIGRldmljZQotVEVTVF9GKEVHTERldmljZUNyZWF0aW9uVGVzdCwg
QmFzaWNEM0QxMURldmljZVZpYUZ1bmNQb2ludGVyKQotewotICAgIGlmICghbURldmljZUNyZWF0
aW9uRDNEMTFFeHRBdmFpbGFibGUgfHwgIW1EM0QxMUF2YWlsYWJsZSkKLSAgICB7Ci0gICAgICAg
IHN0ZDo6Y291dCA8PCAiRUdMRGV2aWNlIGNyZWF0aW9uIGFuZC9vciBEM0QxMSBub3QgYXZhaWxh
YmxlLCBza2lwcGluZyB0ZXN0IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBDcmVhdGVEM0QxMURldmljZSgpOwotCi0gICAgUEZORUdMQ1JFQVRFREVWSUNFQU5H
TEVQUk9DIGNyZWF0ZURldmljZUFOR0xFID0KLSAgICAgICAgKFBGTkVHTENSRUFURURFVklDRUFO
R0xFUFJPQyllZ2xHZXRQcm9jQWRkcmVzcygiZWdsQ3JlYXRlRGV2aWNlQU5HTEUiKTsKLSAgICBQ
Rk5FR0xSRUxFQVNFREVWSUNFQU5HTEVQUk9DIHJlbGVhc2VEZXZpY2VBTkdMRSA9Ci0gICAgICAg
IChQRk5FR0xSRUxFQVNFREVWSUNFQU5HTEVQUk9DKWVnbEdldFByb2NBZGRyZXNzKCJlZ2xSZWxl
YXNlRGV2aWNlQU5HTEUiKTsKLQotICAgIEVHTERldmljZUVYVCBlZ2xEZXZpY2UgPQotICAgICAg
ICBjcmVhdGVEZXZpY2VBTkdMRShFR0xfRDNEMTFfREVWSUNFX0FOR0xFLCByZWludGVycHJldF9j
YXN0PHZvaWQgKj4obURldmljZSksIG51bGxwdHIpOwotICAgIEFTU0VSVF9ORShFR0xfTk9fREVW
SUNFX0VYVCwgZWdsRGV2aWNlKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgIEVH
TEF0dHJpYiBkZXZpY2VBdHRyaWI7Ci0gICAgZWdsUXVlcnlEZXZpY2VBdHRyaWJFWFQoZWdsRGV2
aWNlLCBFR0xfRDNEMTFfREVWSUNFX0FOR0xFLCAmZGV2aWNlQXR0cmliKTsKLSAgICBBU1NFUlRf
RUdMX1NVQ0NFU1MoKTsKLQotICAgIElEM0QxMURldmljZSAqcXVlcmllZERldmljZSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8SUQzRDExRGV2aWNlICo+KGRldmljZUF0dHJpYik7Ci0gICAgQVNTRVJUX0VR
KG1GZWF0dXJlTGV2ZWwsIHF1ZXJpZWREZXZpY2UtPkdldEZlYXR1cmVMZXZlbCgpKTsKLQotICAg
IHJlbGVhc2VEZXZpY2VBTkdMRShlZ2xEZXZpY2UpOwotfQotCi0vLyBUZXN0IHRoYXQgY3JlYXRp
bmcgYSBFR0xEZXZpY2VFWFQgZnJvbSBEM0QxMSBkZXZpY2Ugd29ya3MsIGFuZCBjYW4gYmUgdXNl
ZCBmb3IgcmVuZGVyaW5nCi1URVNUX0YoRUdMRGV2aWNlQ3JlYXRpb25UZXN0LCBSZW5kZXJpbmdV
c2luZ0QzRDExRGV2aWNlKQotewotICAgIGlmICghbUQzRDExQXZhaWxhYmxlKQotICAgIHsKLSAg
ICAgICAgc3RkOjpjb3V0IDw8ICJEM0QxMSBub3QgYXZhaWxhYmxlLCBza2lwcGluZyB0ZXN0IiA8
PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDcmVhdGVEM0QxMURl
dmljZSgpOwotCi0gICAgRUdMRGV2aWNlRVhUIGVnbERldmljZSA9Ci0gICAgICAgIGVnbENyZWF0
ZURldmljZUFOR0xFKEVHTF9EM0QxMV9ERVZJQ0VfQU5HTEUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCAqPihtRGV2aWNlKSwgbnVsbHB0cik7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAg
ICAvLyBDcmVhdGUgYW4gRUdMRGlzcGxheSB1c2luZyB0aGUgRUdMRGV2aWNlCi0gICAgbURpc3Bs
YXkgPSBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQoRUdMX1BMQVRGT1JNX0RFVklDRV9FWFQsIGVn
bERldmljZSwgbnVsbHB0cik7Ci0gICAgQVNTRVJUX05FKEVHTF9OT19ESVNQTEFZLCBtRGlzcGxh
eSk7Ci0KLSAgICAvLyBDcmVhdGUgYSBzdXJmYWNlIHVzaW5nIHRoZSBkaXNwbGF5Ci0gICAgQ3Jl
YXRlV2luZG93U3VyZmFjZSgpOwotCi0gICAgLy8gUGVyZm9ybSBzb21lIHZlcnkgYmFzaWMgcmVu
ZGVyaW5nCi0gICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOwotICAgIGds
Q2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDMyLCAzMiwg
MjU1LCAwLCAyNTUsIDI1NSk7Ci0KLSAgICAvLyBOb3RlIHRoYXQgd2UgbXVzdCBjYWxsIFRlYXJE
b3duKCkgYmVmb3JlIHdlIHJlbGVhc2UgdGhlIEVHTCBkZXZpY2UsIHNpbmNlIHRoZSBkaXNwbGF5
Ci0gICAgLy8gZGVwZW5kcyBvbiB0aGUgZGV2aWNlCi0gICAgVGVhckRvd24oKTsKLQotICAgIGVn
bFJlbGVhc2VEZXZpY2VBTkdMRShlZ2xEZXZpY2UpOwotfQotCi0vLyBUZXN0IHRoYXQgQU5HTEUg
ZG9lc24ndCB0cnkgdG8gcmVjcmVhdGUgYSBEM0QxMSBkZXZpY2UgaWYgdGhlIGlucHV0dGVkIG9u
ZSBpcyBsb3N0Ci1URVNUX0YoRUdMRGV2aWNlQ3JlYXRpb25UZXN0LCBEM0QxMURldmljZVJlY292
ZXJ5KQotewotICAgIGlmICghbUQzRDExQXZhaWxhYmxlKQotICAgIHsKLSAgICAgICAgc3RkOjpj
b3V0IDw8ICJEM0QxMSBub3QgYXZhaWxhYmxlLCBza2lwcGluZyB0ZXN0IiA8PCBzdGQ6OmVuZGw7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBGb3JjZSBGZWF0dXJlIExldmVsIDlf
MyBzbyB3ZSBjYW4gZWFzaWx5IHRyaWdnZXIgYSBkZXZpY2UgbG9zdCBsYXRlcgotICAgIENyZWF0
ZUQzRDExRkw5XzNEZXZpY2UoKTsKLQotICAgIEVHTERldmljZUVYVCBlZ2xEZXZpY2UgPQotICAg
ICAgICBlZ2xDcmVhdGVEZXZpY2VBTkdMRShFR0xfRDNEMTFfREVWSUNFX0FOR0xFLCByZWludGVy
cHJldF9jYXN0PHZvaWQgKj4obURldmljZSksIG51bGxwdHIpOwotICAgIEFTU0VSVF9FR0xfU1VD
Q0VTUygpOwotCi0gICAgLy8gQ3JlYXRlIGFuIEVHTERpc3BsYXkgdXNpbmcgdGhlIEVHTERldmlj
ZQotICAgIG1EaXNwbGF5ID0gZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUKEVHTF9QTEFURk9STV9E
RVZJQ0VfRVhULCBlZ2xEZXZpY2UsIG51bGxwdHIpOwotICAgIEFTU0VSVF9UUlVFKG1EaXNwbGF5
ICE9IEVHTF9OT19ESVNQTEFZKTsKLQotICAgIC8vIENyZWF0ZSBhIHN1cmZhY2UgdXNpbmcgdGhl
IGRpc3BsYXkKLSAgICBDcmVhdGVXaW5kb3dTdXJmYWNlKCk7Ci0KLSAgICAvLyBQZXJmb3JtIHNv
bWUgdmVyeSBiYXNpYyByZW5kZXJpbmcKLSAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMS4w
ZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICBFWFBFQ1Rf
UElYRUxfRVEoMzIsIDMyLCAyNTUsIDAsIDI1NSwgMjU1KTsKLSAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKLQotICAgIC8vIEFOR0xFJ3MgU3dhcENoYWluMTE6OmluaXRQYXNzVGhyb3VnaFJlc291
cmNlcyBkb2Vzbid0IGhhbmRsZSBkZXZpY2UgbG9zdCBiZWZvcmUKLSAgICAvLyBlZ2xTd2FwQnVm
ZmVycywgc28gd2UgbXVzdCBjYWxsIGVnbFN3YXBCdWZmZXJzIGJlZm9yZSB3ZSBsb3NlIHRoZSBk
ZXZpY2UuCi0gICAgQVNTRVJUX0VHTF9UUlVFKGVnbFN3YXBCdWZmZXJzKG1EaXNwbGF5LCBtU3Vy
ZmFjZSkpOwotCi0gICAgLy8gVHJpZ2dlciBhIGxvc3QgZGV2aWNlCi0gICAgdHJpZ2dlcjlfM0Rl
dmljZUxvc3QoKTsKLQotICAgIC8vIERlc3Ryb3kgdGhlIG9sZCBFR0wgV2luZG93IFN1cmZhY2UK
LSAgICBpZiAobVN1cmZhY2UgIT0gRUdMX05PX1NVUkZBQ0UpCi0gICAgewotICAgICAgICBlZ2xE
ZXN0cm95U3VyZmFjZShtRGlzcGxheSwgbVN1cmZhY2UpOwotICAgICAgICBtU3VyZmFjZSA9IEVH
TF9OT19TVVJGQUNFOwotICAgIH0KLQotICAgIC8vIFRyeSB0byBjcmVhdGUgYSBuZXcgd2luZG93
IHN1cmZhY2UuIEluIGNlcnRhaW4gY29uZmlndXJhdGlvbnMgdGhpcyB3aWxsIHJlY3JlYXRlIHRo
ZSBEM0QxMQotICAgIC8vIGRldmljZS4gV2Ugd2FudCB0byB0ZXN0IHRoYXQgaXQgZG9lc24ndCBy
ZWNyZWF0ZSB0aGUgRDNEMTEgZGV2aWNlIHdoZW4gRUdMRGV2aWNlRVhUIGlzCi0gICAgLy8gdXNl
ZC4gVGhlIHdpbmRvdyBzdXJmYWNlIGNyZWF0aW9uIHNob3VsZCBmYWlsIGlmIGEgbmV3IEQzRDEx
IGRldmljZSBpc24ndCBjcmVhdGVkLgotICAgIG1TdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3Vy
ZmFjZShtRGlzcGxheSwgbUNvbmZpZywgbU9TV2luZG93LT5nZXROYXRpdmVXaW5kb3coKSwgbnVs
bHB0cik7Ci0gICAgQVNTRVJUX0VRKEVHTF9OT19TVVJGQUNFLCBtU3VyZmFjZSk7Ci0gICAgQVNT
RVJUX0VHTF9FUlJPUihFR0xfQkFEX0FMTE9DKTsKLQotICAgIC8vIEdldCB0aGUgRDNEMTEgZGV2
aWNlIG91dCBvZiB0aGUgRUdMRGlzcGxheSBhZ2Fpbi4gSXQgc2hvdWxkIGJlIHRoZSBzYW1lIG9u
ZSBhcyBhYm92ZS4KLSAgICBFR0xBdHRyaWIgZGV2aWNlICAgICAgID0gMDsKLSAgICBFR0xBdHRy
aWIgbmV3RWdsRGV2aWNlID0gMDsKLSAgICBBU1NFUlRfRUdMX1RSVUUoZWdsUXVlcnlEaXNwbGF5
QXR0cmliRVhUKG1EaXNwbGF5LCBFR0xfREVWSUNFX0VYVCwgJm5ld0VnbERldmljZSkpOwotICAg
IEFTU0VSVF9FR0xfVFJVRShlZ2xRdWVyeURldmljZUF0dHJpYkVYVChyZWludGVycHJldF9jYXN0
PEVHTERldmljZUVYVD4obmV3RWdsRGV2aWNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTF9EM0QxMV9ERVZJQ0VfQU5HTEUsICZkZXZpY2UpKTsK
LSAgICBJRDNEMTFEZXZpY2UgKm5ld0RldmljZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SUQzRDExRGV2
aWNlICo+KGRldmljZSk7Ci0KLSAgICBBU1NFUlRfRVEocmVpbnRlcnByZXRfY2FzdDxFR0xEZXZp
Y2VFWFQ+KG5ld0VnbERldmljZSksIGVnbERldmljZSk7Ci0gICAgQVNTRVJUX0VRKG5ld0Rldmlj
ZSwgbURldmljZSk7Ci0KLSAgICAvLyBOb3RlIHRoYXQgd2UgbXVzdCBjYWxsIFRlYXJEb3duKCkg
YmVmb3JlIHdlIHJlbGVhc2UgdGhlIEVHTCBkZXZpY2UsIHNpbmNlIHRoZSBkaXNwbGF5Ci0gICAg
Ly8gZGVwZW5kcyBvbiB0aGUgZGV2aWNlCi0gICAgVGVhckRvd24oKTsKLQotICAgIGVnbFJlbGVh
c2VEZXZpY2VBTkdMRShlZ2xEZXZpY2UpOwotfQotCi0vLyBUZXN0IHRoYXQgY2FsbGluZyBlZ2xH
ZXRQbGF0Zm9ybURpc3BsYXlFWFQgd2l0aCB0aGUgc2FtZSBkZXZpY2UgcmV0dXJucyB0aGUgc2Ft
ZSBkaXNwbGF5Ci1URVNUX0YoRUdMRGV2aWNlQ3JlYXRpb25UZXN0LCBnZXRQbGF0Zm9ybURpc3Bs
YXlUd2ljZSkKLXsKLSAgICBpZiAoIW1EM0QxMUF2YWlsYWJsZSkKLSAgICB7Ci0gICAgICAgIHN0
ZDo6Y291dCA8PCAiRDNEMTEgbm90IGF2YWlsYWJsZSwgc2tpcHBpbmcgdGVzdCIgPDwgc3RkOjpl
bmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQ3JlYXRlRDNEMTFEZXZpY2UoKTsK
LQotICAgIEVHTERldmljZUVYVCBlZ2xEZXZpY2UgPQotICAgICAgICBlZ2xDcmVhdGVEZXZpY2VB
TkdMRShFR0xfRDNEMTFfREVWSUNFX0FOR0xFLCByZWludGVycHJldF9jYXN0PHZvaWQgKj4obURl
dmljZSksIG51bGxwdHIpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgLy8gQ3Jl
YXRlIGFuIEVHTERpc3BsYXkgdXNpbmcgdGhlIEVHTERldmljZQotICAgIEVHTERpc3BsYXkgZGlz
cGxheTEgPSBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQoRUdMX1BMQVRGT1JNX0RFVklDRV9FWFQs
IGVnbERldmljZSwgbnVsbHB0cik7Ci0gICAgQVNTRVJUX05FKEVHTF9OT19ESVNQTEFZLCBkaXNw
bGF5MSk7Ci0KLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkyID0gZWdsR2V0UGxhdGZvcm1EaXNwbGF5
RVhUKEVHTF9QTEFURk9STV9ERVZJQ0VfRVhULCBlZ2xEZXZpY2UsIG51bGxwdHIpOwotICAgIEFT
U0VSVF9ORShFR0xfTk9fRElTUExBWSwgZGlzcGxheTIpOwotCi0gICAgQVNTRVJUX0VRKGRpc3Bs
YXkxLCBkaXNwbGF5Mik7Ci0KLSAgICBlZ2xUZXJtaW5hdGUoZGlzcGxheTEpOwotICAgIGVnbFJl
bGVhc2VEZXZpY2VBTkdMRShlZ2xEZXZpY2UpOwotfQotCi0vLyBUZXN0IHRoYXQgY3JlYXRpbmcg
YSBFR0xEZXZpY2VFWFQgZnJvbSBhbiBpbnZhbGlkIEQzRDExIGRldmljZSBmYWlscwotVEVTVF9G
KEVHTERldmljZUNyZWF0aW9uVGVzdCwgSW52YWxpZEQzRDExRGV2aWNlKQotewotICAgIGlmICgh
bURldmljZUNyZWF0aW9uRDNEMTFFeHRBdmFpbGFibGUgfHwgIW1EM0QxMUF2YWlsYWJsZSkKLSAg
ICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiRUdMRGV2aWNlIGNyZWF0aW9uIGFuZC9vciBEM0Qx
MSBub3QgYXZhaWxhYmxlLCBza2lwcGluZyB0ZXN0IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBDcmVhdGVEM0QxMURldmljZSgpOwotCi0gICAgLy8gVXNlIG1E
ZXZpY2VDb250ZXh0IGluc3RlYWQgb2YgbURldmljZQotICAgIEVHTERldmljZUVYVCBlZ2xEZXZp
Y2UgPSBlZ2xDcmVhdGVEZXZpY2VBTkdMRSgKLSAgICAgICAgRUdMX0QzRDExX0RFVklDRV9BTkdM
RSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KG1EZXZpY2VDb250ZXh0KSwgbnVsbHB0cik7Ci0g
ICAgRVhQRUNUX0VRKEVHTF9OT19ERVZJQ0VfRVhULCBlZ2xEZXZpY2UpOwotICAgIEVYUEVDVF9F
R0xfRVJST1IoRUdMX0JBRF9BVFRSSUJVVEUpOwotfQotCi0vLyBUZXN0IHRoYXQgRUdMRGV2aWNl
RVhUIGhvbGRzIGEgcmVmIHRvIHRoZSBEM0QxMSBkZXZpY2UKLVRFU1RfRihFR0xEZXZpY2VDcmVh
dGlvblRlc3QsIEQzRDExRGV2aWNlUmVmZXJlbmNlQ291bnRpbmcpCi17Ci0gICAgaWYgKCFtRGV2
aWNlQ3JlYXRpb25EM0QxMUV4dEF2YWlsYWJsZSB8fCAhbUQzRDExQXZhaWxhYmxlKQotICAgIHsK
LSAgICAgICAgc3RkOjpjb3V0IDw8ICJFR0xEZXZpY2UgY3JlYXRpb24gYW5kL29yIEQzRDExIG5v
dCBhdmFpbGFibGUsIHNraXBwaW5nIHRlc3QiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIENyZWF0ZUQzRDExRGV2aWNlKCk7Ci0KLSAgICBFR0xEZXZpY2VFWFQg
ZWdsRGV2aWNlID0KLSAgICAgICAgZWdsQ3JlYXRlRGV2aWNlQU5HTEUoRUdMX0QzRDExX0RFVklD
RV9BTkdMRSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KG1EZXZpY2UpLCBudWxscHRyKTsKLSAg
ICBBU1NFUlRfTkUoRUdMX05PX0RFVklDRV9FWFQsIGVnbERldmljZSk7Ci0gICAgQVNTRVJUX0VH
TF9TVUNDRVNTKCk7Ci0KLSAgICAvLyBOb3cgcmVsZWFzZSBvdXIgRDNEMTEgZGV2aWNlL2NvbnRl
eHQKLSAgICBTYWZlUmVsZWFzZShtRGV2aWNlKTsKLSAgICBTYWZlUmVsZWFzZShtRGV2aWNlQ29u
dGV4dCk7Ci0KLSAgICBFR0xBdHRyaWIgZGV2aWNlQXR0cmliOwotICAgIGVnbFF1ZXJ5RGV2aWNl
QXR0cmliRVhUKGVnbERldmljZSwgRUdMX0QzRDExX0RFVklDRV9BTkdMRSwgJmRldmljZUF0dHJp
Yik7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBJRDNEMTFEZXZpY2UgKnF1ZXJp
ZWREZXZpY2UgPSByZWludGVycHJldF9jYXN0PElEM0QxMURldmljZSAqPihkZXZpY2VBdHRyaWIp
OwotICAgIEFTU0VSVF9FUShtRmVhdHVyZUxldmVsLCBxdWVyaWVkRGV2aWNlLT5HZXRGZWF0dXJl
TGV2ZWwoKSk7Ci0KLSAgICBlZ2xSZWxlYXNlRGV2aWNlQU5HTEUoZWdsRGV2aWNlKTsKLX0KLQot
Ly8gVGVzdCB0aGF0IGNyZWF0aW5nIGEgRUdMRGV2aWNlRVhUIGZyb20gYSBEM0Q5IGRldmljZSBm
YWlscwotVEVTVF9GKEVHTERldmljZUNyZWF0aW9uVGVzdCwgQW55RDNEOURldmljZSkKLXsKLSAg
ICBpZiAoIW1EZXZpY2VDcmVhdGlvbkQzRDExRXh0QXZhaWxhYmxlKQotICAgIHsKLSAgICAgICAg
c3RkOjpjb3V0IDw8ICJFR0xEZXZpY2UgY3JlYXRpb24gbm90IGF2YWlsYWJsZSwgc2tpcHBpbmcg
dGVzdCIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3RkOjpz
dHJpbmcgZmFrZUQzRERldmljZSA9ICJUaGlzIGlzIGEgc3RyaW5nLCBub3QgYSBEM0QgZGV2aWNl
IjsKLQotICAgIEVHTERldmljZUVYVCBlZ2xEZXZpY2UgPSBlZ2xDcmVhdGVEZXZpY2VBTkdMRSgK
LSAgICAgICAgRUdMX0QzRDlfREVWSUNFX0FOR0xFLCByZWludGVycHJldF9jYXN0PHZvaWQgKj4o
JmZha2VEM0REZXZpY2UpLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfRVEoRUdMX05PX0RFVklDRV9F
WFQsIGVnbERldmljZSk7Ci0gICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX0FUVFJJQlVURSk7
Ci19Ci0KLWNsYXNzIEVHTERldmljZVF1ZXJ5VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAg
cHJvdGVjdGVkOgotICAgIEVHTERldmljZVF1ZXJ5VGVzdCgpCi0gICAgewotICAgICAgICBtUXVl
cnlEaXNwbGF5QXR0cmliRVhUID0gbnVsbHB0cjsKLSAgICAgICAgbVF1ZXJ5RGV2aWNlQXR0cmli
RVhUICA9IG51bGxwdHI7Ci0gICAgICAgIG1RdWVyeURldmljZVN0cmluZ0VYVCAgPSBudWxscHRy
OwotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQU5H
TEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvblN0cmluZyA9
Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KGVnbFF1ZXJ5U3RyaW5nKGdl
dEVHTFdpbmRvdygpLT5nZXREaXNwbGF5KCksIEVHTF9FWFRFTlNJT05TKSk7Ci0gICAgICAgIGlm
IChzdHJzdHIoZXh0ZW5zaW9uU3RyaW5nLCAiRUdMX0VYVF9kZXZpY2VfcXVlcnkiKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgbVF1ZXJ5RGlzcGxheUF0dHJpYkVYVCA9Ci0gICAgICAgICAgICAg
ICAgKFBGTkVHTFFVRVJZRElTUExBWUFUVFJJQkVYVFBST0MpZWdsR2V0UHJvY0FkZHJlc3MoImVn
bFF1ZXJ5RGlzcGxheUF0dHJpYkVYVCIpOwotICAgICAgICAgICAgbVF1ZXJ5RGV2aWNlQXR0cmli
RVhUID0KLSAgICAgICAgICAgICAgICAoUEZORUdMUVVFUllERVZJQ0VBVFRSSUJFWFRQUk9DKWVn
bEdldFByb2NBZGRyZXNzKCJlZ2xRdWVyeURldmljZUF0dHJpYkVYVCIpOwotICAgICAgICAgICAg
bVF1ZXJ5RGV2aWNlU3RyaW5nRVhUID0KLSAgICAgICAgICAgICAgICAoUEZORUdMUVVFUllERVZJ
Q0VTVFJJTkdFWFRQUk9DKWVnbEdldFByb2NBZGRyZXNzKCJlZ2xRdWVyeURldmljZVN0cmluZ0VY
VCIpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFtUXVlcnlEZXZpY2VTdHJpbmdFWFQpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEZBSUwoKSA8PCAiQU5HTEUgZXh0ZW5zaW9uIEVHTF9FWFRf
ZGV2aWNlX3F1ZXJ5IGV4cG9ydCBlZ2xRdWVyeURldmljZVN0cmluZ0VYVCB3YXMgbm90ICIKLSAg
ICAgICAgICAgICAgICAgICAgICAiZm91bmQiOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFt
UXVlcnlEaXNwbGF5QXR0cmliRVhUKQotICAgICAgICB7Ci0gICAgICAgICAgICBGQUlMKCkgPDwg
IkFOR0xFIGV4dGVuc2lvbiBFR0xfRVhUX2RldmljZV9xdWVyeSBleHBvcnQgZWdsUXVlcnlEaXNw
bGF5QXR0cmliRVhUIHdhcyAiCi0gICAgICAgICAgICAgICAgICAgICAgIm5vdCBmb3VuZCI7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoIW1RdWVyeURldmljZUF0dHJpYkVYVCkKLSAgICAgICAg
ewotICAgICAgICAgICAgRkFJTCgpIDw8ICJBTkdMRSBleHRlbnNpb24gRUdMX0VYVF9kZXZpY2Vf
cXVlcnkgZXhwb3J0IGVnbFF1ZXJ5RGV2aWNlQXR0cmliRVhUIHdhcyBub3QgIgotICAgICAgICAg
ICAgICAgICAgICAgICJmb3VuZCI7Ci0gICAgICAgIH0KLQotICAgICAgICBFR0xBdHRyaWIgYW5n
bGVEZXZpY2UgPSAwOwotICAgICAgICBFWFBFQ1RfRUdMX1RSVUUoCi0gICAgICAgICAgICBtUXVl
cnlEaXNwbGF5QXR0cmliRVhUKGdldEVHTFdpbmRvdygpLT5nZXREaXNwbGF5KCksIEVHTF9ERVZJ
Q0VfRVhULCAmYW5nbGVEZXZpY2UpKTsKLSAgICAgICAgZXh0ZW5zaW9uU3RyaW5nID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgY2hhciAqPigKLSAgICAgICAgICAgIG1RdWVyeURldmljZVN0cmluZ0VYVChy
ZWludGVycHJldF9jYXN0PEVHTERldmljZUVYVD4oYW5nbGVEZXZpY2UpLCBFR0xfRVhURU5TSU9O
UykpOwotICAgICAgICBpZiAoc3Ryc3RyKGV4dGVuc2lvblN0cmluZywgIkVHTF9BTkdMRV9kZXZp
Y2VfZDNkIikgPT0gTlVMTCkKLSAgICAgICAgewotICAgICAgICAgICAgRkFJTCgpIDw8ICJBTkdM
RSBleHRlbnNpb24gRUdMX0FOR0xFX2RldmljZV9kM2Qgd2FzIG5vdCBmb3VuZCI7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUgeyBBTkdMRVRlc3Q6OlRl
YXJEb3duKCk7IH0KLQotICAgIFBGTkVHTFFVRVJZRElTUExBWUFUVFJJQkVYVFBST0MgbVF1ZXJ5
RGlzcGxheUF0dHJpYkVYVDsKLSAgICBQRk5FR0xRVUVSWURFVklDRUFUVFJJQkVYVFBST0MgbVF1
ZXJ5RGV2aWNlQXR0cmliRVhUOwotICAgIFBGTkVHTFFVRVJZREVWSUNFU1RSSU5HRVhUUFJPQyBt
UXVlcnlEZXZpY2VTdHJpbmdFWFQ7Ci19OwotCi0vLyBUaGlzIHRlc3QgYXR0ZW1wdHMgdG8gb2J0
YWluIGEgRDNEMTEgZGV2aWNlIGFuZCBhIEQzRDkgZGV2aWNlIHVzaW5nIHRoZSBlZ2xRdWVyeURl
dmljZUF0dHJpYkVYVAotLy8gZnVuY3Rpb24uCi0vLyBJZiB0aGUgdGVzdCBpcyBjb25maWd1cmVk
IHRvIHVzZSBEM0QxMSB0aGVuIGl0IHNob3VsZCBzdWNjZWVkIHRvIG9idGFpbiBhIEQzRDExIGRl
dmljZS4KLS8vIElmIHRoZSB0ZXN0IGlzIGNvbmZpdHVyZWQgdG8gdXNlIEQzRDksIHRoZW4gaXQg
c2hvdWxkIHN1Y2NlZWQgdG8gb2J0YWluIGEgRDNEOSBkZXZpY2UuCi1URVNUX1AoRUdMRGV2aWNl
UXVlcnlUZXN0LCBRdWVyeURldmljZSkKLXsKLSAgICBFR0xBdHRyaWIgZGV2aWNlICAgICAgPSAw
OwotICAgIEVHTEF0dHJpYiBhbmdsZURldmljZSA9IDA7Ci0gICAgaWYgKGdldFBsYXRmb3JtUmVu
ZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKLSAgICB7Ci0g
ICAgICAgIEVYUEVDVF9FR0xfVFJVRSgKLSAgICAgICAgICAgIG1RdWVyeURpc3BsYXlBdHRyaWJF
WFQoZ2V0RUdMV2luZG93KCktPmdldERpc3BsYXkoKSwgRUdMX0RFVklDRV9FWFQsICZhbmdsZURl
dmljZSkpOwotICAgICAgICBFWFBFQ1RfRUdMX1RSVUUobVF1ZXJ5RGV2aWNlQXR0cmliRVhUKHJl
aW50ZXJwcmV0X2Nhc3Q8RUdMRGV2aWNlRVhUPihhbmdsZURldmljZSksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0QzRDExX0RFVklDRV9BTkdMRSwg
JmRldmljZSkpOwotICAgICAgICBJRDNEMTFEZXZpY2UgKmQzZDExRGV2aWNlID0gcmVpbnRlcnBy
ZXRfY2FzdDxJRDNEMTFEZXZpY2UgKj4oZGV2aWNlKTsKLSAgICAgICAgSURYR0lEZXZpY2UgKmR4
Z2lEZXZpY2UgPSBEeW5hbWljQ2FzdENvbU9iamVjdDxJRFhHSURldmljZT4oZDNkMTFEZXZpY2Up
OwotICAgICAgICBFWFBFQ1RfVFJVRShkeGdpRGV2aWNlICE9IG51bGxwdHIpOwotICAgICAgICBT
YWZlUmVsZWFzZShkeGdpRGV2aWNlKTsKLSAgICB9Ci0KLSAgICBpZiAoZ2V0UGxhdGZvcm1SZW5k
ZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDlfQU5HTEUpCi0gICAgewotICAg
ICAgICBFWFBFQ1RfRUdMX1RSVUUoCi0gICAgICAgICAgICBtUXVlcnlEaXNwbGF5QXR0cmliRVhU
KGdldEVHTFdpbmRvdygpLT5nZXREaXNwbGF5KCksIEVHTF9ERVZJQ0VfRVhULCAmYW5nbGVEZXZp
Y2UpKTsKLSAgICAgICAgRVhQRUNUX0VHTF9UUlVFKG1RdWVyeURldmljZUF0dHJpYkVYVChyZWlu
dGVycHJldF9jYXN0PEVHTERldmljZUVYVD4oYW5nbGVEZXZpY2UpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9EM0Q5X0RFVklDRV9BTkdMRSwgJmRl
dmljZSkpOwotICAgICAgICBJRGlyZWN0M0REZXZpY2U5ICpkM2Q5RGV2aWNlID0gcmVpbnRlcnBy
ZXRfY2FzdDxJRGlyZWN0M0REZXZpY2U5ICo+KGRldmljZSk7Ci0gICAgICAgIElEaXJlY3QzRDkg
KmQzZDkgPSBudWxscHRyOwotICAgICAgICBFWFBFQ1RfRVEoU19PSywgZDNkOURldmljZS0+R2V0
RGlyZWN0M0QoJmQzZDkpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoZDNkOSAhPSBudWxscHRyKTsK
LSAgICAgICAgU2FmZVJlbGVhc2UoZDNkOSk7Ci0gICAgfQotfQotCi0vLyBUaGlzIHRlc3QgYXR0
ZW1wdHMgdG8gb2J0YWluIGEgRDNEMTEgZGV2aWNlIGZyb20gYSBEM0Q5IGNvbmZpZ3VyZWQgc3lz
dGVtIGFuZCBhIEQzRDkgZGV2aWNlIGZyb20KLS8vIGEgRDNEMTEgY29uZmlndXJlZCBzeXN0ZW0g
dXNpbmcgdGhlIGVnbFF1ZXJ5RGV2aWNlQXR0cmliRVhUIGZ1bmN0aW9uLgotLy8gSWYgdGhlIHRl
c3QgaXMgY29uZmlndXJlZCB0byB1c2UgRDNEMTEgdGhlbiBpdCBzaG91bGQgZmFpbCB0byBvYnRh
aW4gYSBEM0QxMSBkZXZpY2UuCi0vLyBJZiB0aGUgdGVzdCBpcyBjb25maXR1cmVkIHRvIHVzZSBE
M0Q5LCB0aGVuIGl0IHNob3VsZCBmYWlsIHRvIG9idGFpbiBhIEQzRDkgZGV2aWNlLgotVEVTVF9Q
KEVHTERldmljZVF1ZXJ5VGVzdCwgUXVlcnlEZXZpY2VCYWRBdHRyaWJ1dGUpCi17Ci0gICAgRUdM
QXR0cmliIGRldmljZSAgICAgID0gMDsKLSAgICBFR0xBdHRyaWIgYW5nbGVEZXZpY2UgPSAwOwot
ICAgIGlmIChnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVf
RDNEMTFfQU5HTEUpCi0gICAgewotICAgICAgICBFWFBFQ1RfRUdMX1RSVUUoCi0gICAgICAgICAg
ICBtUXVlcnlEaXNwbGF5QXR0cmliRVhUKGdldEVHTFdpbmRvdygpLT5nZXREaXNwbGF5KCksIEVH
TF9ERVZJQ0VfRVhULCAmYW5nbGVEZXZpY2UpKTsKLSAgICAgICAgRVhQRUNUX0VHTF9GQUxTRSht
UXVlcnlEZXZpY2VBdHRyaWJFWFQocmVpbnRlcnByZXRfY2FzdDxFR0xEZXZpY2VFWFQ+KGFuZ2xl
RGV2aWNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RUdMX0QzRDlfREVWSUNFX0FOR0xFLCAmZGV2aWNlKSk7Ci0gICAgfQotCi0gICAgaWYgKGdldFBs
YXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFKQot
ICAgIHsKLSAgICAgICAgRVhQRUNUX0VHTF9UUlVFKAotICAgICAgICAgICAgbVF1ZXJ5RGlzcGxh
eUF0dHJpYkVYVChnZXRFR0xXaW5kb3coKS0+Z2V0RGlzcGxheSgpLCBFR0xfREVWSUNFX0VYVCwg
JmFuZ2xlRGV2aWNlKSk7Ci0gICAgICAgIEVYUEVDVF9FR0xfRkFMU0UobVF1ZXJ5RGV2aWNlQXR0
cmliRVhUKHJlaW50ZXJwcmV0X2Nhc3Q8RUdMRGV2aWNlRVhUPihhbmdsZURldmljZSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9EM0QxMV9ERVZJ
Q0VfQU5HTEUsICZkZXZpY2UpKTsKLSAgICB9Ci19Ci0KLS8vIEVuc3VyZSB0aGF0OgotLy8gICAg
LSBjYWxsaW5nIGdldFBsYXRmb3JtRGlzcGxheUVYVCB1c2luZyBBTkdMRV9QbGF0Zm9ybSB3aXRo
IHNvbWUgcGFyYW1ldGVycwotLy8gICAgLSBleHRyYWN0aW5nIHRoZSBFR0xEZXZpY2VFWFQgZnJv
bSB0aGUgRUdMRGlzcGxheQotLy8gICAgLSBjYWxsaW5nIGdldFBsYXRmb3JtRGlzcGxheUVYVCB3
aXRoIHRoaXMgRUdMRGV2aWNlRVhUCi0vLyByZXN1bHRzIGluIHRoZSBzYW1lIEVHTERpc3BsYXkg
YmVpbmcgcmV0dXJuZWQgZnJvbSBnZXRQbGF0Zm9ybURpc3BsYXlFWFQgYm90aCB0aW1lcwotVEVT
VF9QKEVHTERldmljZVF1ZXJ5VGVzdCwgZ2V0UGxhdGZvcm1EaXNwbGF5RGV2aWNlUmV1c2UpCi17
Ci0gICAgRUdMQXR0cmliIGVnbERldmljZSA9IDA7Ci0gICAgRVhQRUNUX0VHTF9UUlVFKAotICAg
ICAgICAgICAgICBlZ2xRdWVyeURpc3BsYXlBdHRyaWJFWFQoZ2V0RUdMV2luZG93KCktPmdldERp
c3BsYXkoKSwgRUdMX0RFVklDRV9FWFQsICZlZ2xEZXZpY2UpKTsKLQotICAgIEVHTERpc3BsYXkg
ZGlzcGxheTIgPSBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQoCi0gICAgICAgIEVHTF9QTEFURk9S
TV9ERVZJQ0VfRVhULCByZWludGVycHJldF9jYXN0PEVHTERldmljZUVYVD4oZWdsRGV2aWNlKSwg
bnVsbHB0cik7Ci0gICAgRVhQRUNUX0VRKGdldEVHTFdpbmRvdygpLT5nZXREaXNwbGF5KCksIGRp
c3BsYXkyKTsKLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25z
IChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlCi0v
LyB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKEVH
TERldmljZVF1ZXJ5VGVzdCwgRVMyX0QzRDkoKSwgRVMyX0QzRDExKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xQcmVzZW50UGF0
aEQzRDExVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rl
c3RzL0VHTFByZXNlbnRQYXRoRDNEMTFUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYzczYzdjNGZmNjIuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMUHJlc2VudFBhdGhEM0QxMVRlc3QuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMzc4ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJ0ZXN0X3V0
aWxzL0FOR0xFVGVzdC5oIgotCi0jaW5jbHVkZSA8Y3N0ZGludD4KLSNpbmNsdWRlICJjb21fdXRp
bHMuaCIKLSNpbmNsdWRlICJPU1dpbmRvdy5oIgotI2luY2x1ZGUgPGQzZDExLmg+Ci0KLXVzaW5n
IG5hbWVzcGFjZSBhbmdsZTsKLQotY2xhc3MgRUdMUHJlc2VudFBhdGhEM0QxMSA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPFBsYXRmb3JtUGFyYW1ldGVycz4KLXsKLSAgcHJvdGVjdGVk
OgotICAgIEVHTFByZXNlbnRQYXRoRDNEMTEoKQotICAgICAgICA6IG1EaXNwbGF5KEVHTF9OT19E
SVNQTEFZKSwKLSAgICAgICAgICBtQ29udGV4dChFR0xfTk9fQ09OVEVYVCksCi0gICAgICAgICAg
bVN1cmZhY2UoRUdMX05PX1NVUkZBQ0UpLAotICAgICAgICAgIG1PZmZzY3JlZW5TdXJmYWNlRDNE
MTFUZXh0dXJlKG51bGxwdHIpLAotICAgICAgICAgIG1Db25maWcoMCksCi0gICAgICAgICAgbU9T
V2luZG93KG51bGxwdHIpLAotICAgICAgICAgIG1XaW5kb3dXaWR0aCgwKQotICAgIHsKLSAgICB9
Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIG1PU1dpbmRvdyAg
ICA9IENyZWF0ZU9TV2luZG93KCk7Ci0gICAgICAgIG1XaW5kb3dXaWR0aCA9IDY0OwotICAgICAg
ICBtT1NXaW5kb3ctPmluaXRpYWxpemUoIkVHTFByZXNlbnRQYXRoRDNEMTEiLCBtV2luZG93V2lk
dGgsIG1XaW5kb3dXaWR0aCk7Ci0gICAgfQotCi0gICAgdm9pZCBpbml0aWFsaXplRUdMKGJvb2wg
dXNlUHJlc2VudFBhdGhGYXN0KQotICAgIHsKLSAgICAgICAgaW50IGNsaWVudFZlcnNpb24gPSBH
ZXRQYXJhbSgpLm1ham9yVmVyc2lvbjsKLQotICAgICAgICBjb25zdCBjaGFyICpleHRlbnNpb25T
dHJpbmcgPQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihlZ2xRdWVyeVN0
cmluZyhFR0xfTk9fRElTUExBWSwgRUdMX0VYVEVOU0lPTlMpKTsKLSAgICAgICAgQVNTRVJUX05F
KG51bGxwdHIsIHN0cnN0cihleHRlbnNpb25TdHJpbmcsICJFR0xfQU5HTEVfZXhwZXJpbWVudGFs
X3ByZXNlbnRfcGF0aCIpKTsKLQotICAgICAgICBQRk5FR0xHRVRQTEFURk9STURJU1BMQVlFWFRQ
Uk9DIGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCA9Ci0gICAgICAgICAgICByZWludGVycHJldF9j
YXN0PFBGTkVHTEdFVFBMQVRGT1JNRElTUExBWUVYVFBST0M+KAotICAgICAgICAgICAgICAgIGVn
bEdldFByb2NBZGRyZXNzKCJlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQiKSk7Ci0gICAgICAgIEFT
U0VSVF9ORShudWxscHRyLCBlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQpOwotCi0gICAgICAgIC8v
IFNldCB1cCBFR0wgRGlzcGxheQotICAgICAgICBFR0xpbnQgZGlzcGxheUF0dHJpYnNbXSA9IHsK
LSAgICAgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFLCBHZXRQYXJhbSgpLmdl
dFJlbmRlcmVyKCksCi0gICAgICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05f
TUFKT1JfQU5HTEUsIEdldFBhcmFtKCkuZWdsUGFyYW1ldGVycy5tYWpvclZlcnNpb24sCi0gICAg
ICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUFKT1JfQU5HTEUsIEdldFBh
cmFtKCkuZWdsUGFyYW1ldGVycy5tYWpvclZlcnNpb24sCi0gICAgICAgICAgICBFR0xfRVhQRVJJ
TUVOVEFMX1BSRVNFTlRfUEFUSF9BTkdMRSwKLSAgICAgICAgICAgIHVzZVByZXNlbnRQYXRoRmFz
dCA/IEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0ZBU1RfQU5HTEUKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA6IEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0NPUFlf
QU5HTEUsCi0gICAgICAgICAgICBFR0xfTk9ORX07Ci0gICAgICAgIG1EaXNwbGF5ID0KLSAgICAg
ICAgICAgIGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVChFR0xfUExBVEZPUk1fQU5HTEVfQU5HTEUs
IEVHTF9ERUZBVUxUX0RJU1BMQVksIGRpc3BsYXlBdHRyaWJzKTsKLSAgICAgICAgQVNTRVJUX1RS
VUUoRUdMX05PX0RJU1BMQVkgIT0gbURpc3BsYXkpOwotICAgICAgICBBU1NFUlRfRUdMX1RSVUUo
ZWdsSW5pdGlhbGl6ZShtRGlzcGxheSwgTlVMTCwgTlVMTCkpOwotCi0gICAgICAgIC8vIENob29z
ZSB0aGUgRUdMIGNvbmZpZwotICAgICAgICBFR0xpbnQgbnVtQ29uZmlnczsKLSAgICAgICAgRUdM
aW50IGNvbmZpZ0F0dHJpYnNbXSA9IHtFR0xfUkVEX1NJWkUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xf
R1JFRU5fU0laRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9CTFVFX1NJWkUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgOCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xfQUxQSEFfU0laRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA4LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9SRU5ERVJBQkxFX1RZUEUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50VmVyc2lvbiA9PSAzID8gRUdM
X09QRU5HTF9FUzNfQklUIDogRUdMX09QRU5HTF9FUzJfQklULAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEVHTF9TVVJGQUNFX1RZUEUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgRUdMX1BCVUZGRVJfQklULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTF9OT05FfTsKLSAgICAgICAgQVNTRVJUX0VHTF9UUlVFKGVnbENob29zZUNvbmZp
ZyhtRGlzcGxheSwgY29uZmlnQXR0cmlicywgJm1Db25maWcsIDEsICZudW1Db25maWdzKSk7Ci0g
ICAgICAgIEFTU0VSVF9FUSgxLCBudW1Db25maWdzKTsKLQotICAgICAgICAvLyBTZXQgdXAgdGhl
IEVHTCBjb250ZXh0Ci0gICAgICAgIEVHTGludCBjb250ZXh0QXR0cmlic1tdID0ge0VHTF9DT05U
RVhUX0NMSUVOVF9WRVJTSU9OLCBjbGllbnRWZXJzaW9uLCBFR0xfTk9ORX07Ci0gICAgICAgIG1D
b250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChtRGlzcGxheSwgbUNvbmZpZywgTlVMTCwgY29udGV4
dEF0dHJpYnMpOwotICAgICAgICBBU1NFUlRfVFJVRShFR0xfTk9fQ09OVEVYVCAhPSBtQ29udGV4
dCk7Ci0gICAgfQotCi0gICAgdm9pZCBjcmVhdGVXaW5kb3dTdXJmYWNlKCkKLSAgICB7Ci0gICAg
ICAgIG1TdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZShtRGlzcGxheSwgbUNvbmZpZywg
bU9TV2luZG93LT5nZXROYXRpdmVXaW5kb3coKSwgbnVsbHB0cik7Ci0gICAgfQotCi0gICAgdm9p
ZCBjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlclN1cmZhY2UoKQotICAgIHsKLSAgICAgICAg
RUdMQXR0cmliIGRldmljZSAgICAgID0gMDsKLSAgICAgICAgRUdMQXR0cmliIGFuZ2xlRGV2aWNl
ID0gMDsKLQotICAgICAgICBQRk5FR0xRVUVSWURJU1BMQVlBVFRSSUJFWFRQUk9DIHF1ZXJ5RGlz
cGxheUF0dHJpYkVYVDsKLSAgICAgICAgUEZORUdMUVVFUllERVZJQ0VBVFRSSUJFWFRQUk9DIHF1
ZXJ5RGV2aWNlQXR0cmliRVhUOwotCi0gICAgICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvblN0cmlu
ZyA9Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KGVnbFF1ZXJ5U3RyaW5n
KG1EaXNwbGF5LCBFR0xfRVhURU5TSU9OUykpOwotICAgICAgICBFWFBFQ1RfVFJVRShzdHJzdHIo
ZXh0ZW5zaW9uU3RyaW5nLCAiRUdMX0VYVF9kZXZpY2VfcXVlcnkiKSk7Ci0KLSAgICAgICAgcXVl
cnlEaXNwbGF5QXR0cmliRVhUID0KLSAgICAgICAgICAgIChQRk5FR0xRVUVSWURJU1BMQVlBVFRS
SUJFWFRQUk9DKWVnbEdldFByb2NBZGRyZXNzKCJlZ2xRdWVyeURpc3BsYXlBdHRyaWJFWFQiKTsK
LSAgICAgICAgcXVlcnlEZXZpY2VBdHRyaWJFWFQgPQotICAgICAgICAgICAgKFBGTkVHTFFVRVJZ
REVWSUNFQVRUUklCRVhUUFJPQyllZ2xHZXRQcm9jQWRkcmVzcygiZWdsUXVlcnlEZXZpY2VBdHRy
aWJFWFQiKTsKLSAgICAgICAgQVNTRVJUX05FKG51bGxwdHIsIHF1ZXJ5RGlzcGxheUF0dHJpYkVY
VCk7Ci0gICAgICAgIEFTU0VSVF9ORShudWxscHRyLCBxdWVyeURldmljZUF0dHJpYkVYVCk7Ci0K
LSAgICAgICAgQVNTRVJUX0VHTF9UUlVFKHF1ZXJ5RGlzcGxheUF0dHJpYkVYVChtRGlzcGxheSwg
RUdMX0RFVklDRV9FWFQsICZhbmdsZURldmljZSkpOwotICAgICAgICBBU1NFUlRfRUdMX1RSVUUo
cXVlcnlEZXZpY2VBdHRyaWJFWFQocmVpbnRlcnByZXRfY2FzdDxFR0xEZXZpY2VFWFQ+KGFuZ2xl
RGV2aWNlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVH
TF9EM0QxMV9ERVZJQ0VfQU5HTEUsICZkZXZpY2UpKTsKLSAgICAgICAgSUQzRDExRGV2aWNlICpk
M2QxMURldmljZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8SUQzRDExRGV2aWNlICo+KGRldmljZSk7Ci0K
LSAgICAgICAgRDNEMTFfVEVYVFVSRTJEX0RFU0MgdGV4dHVyZURlc2MgPSB7MH07Ci0gICAgICAg
IHRleHR1cmVEZXNjLldpZHRoICAgICAgICAgICAgICAgID0gbVdpbmRvd1dpZHRoOwotICAgICAg
ICB0ZXh0dXJlRGVzYy5IZWlnaHQgICAgICAgICAgICAgICA9IG1XaW5kb3dXaWR0aDsKLSAgICAg
ICAgdGV4dHVyZURlc2MuRm9ybWF0ICAgICAgICAgICAgICAgPSBEWEdJX0ZPUk1BVF9COEc4UjhB
OF9VTk9STTsKLSAgICAgICAgdGV4dHVyZURlc2MuTWlwTGV2ZWxzICAgICAgICAgICAgPSAxOwot
ICAgICAgICB0ZXh0dXJlRGVzYy5BcnJheVNpemUgICAgICAgICAgICA9IDE7Ci0gICAgICAgIHRl
eHR1cmVEZXNjLlNhbXBsZURlc2MuQ291bnQgICAgID0gMTsKLSAgICAgICAgdGV4dHVyZURlc2Mu
U2FtcGxlRGVzYy5RdWFsaXR5ICAgPSAwOwotICAgICAgICB0ZXh0dXJlRGVzYy5Vc2FnZSAgICAg
ICAgICAgICAgICA9IEQzRDExX1VTQUdFX0RFRkFVTFQ7Ci0gICAgICAgIHRleHR1cmVEZXNjLkJp
bmRGbGFncyAgICAgICAgICAgID0gRDNEMTFfQklORF9SRU5ERVJfVEFSR0VUIHwgRDNEMTFfQklO
RF9TSEFERVJfUkVTT1VSQ0U7Ci0gICAgICAgIHRleHR1cmVEZXNjLkNQVUFjY2Vzc0ZsYWdzICAg
ICAgID0gMDsKLSAgICAgICAgdGV4dHVyZURlc2MuTWlzY0ZsYWdzICAgICAgICAgICAgPSBEM0Qx
MV9SRVNPVVJDRV9NSVNDX1NIQVJFRDsKLQotICAgICAgICBBU1NFUlRfVFJVRShTVUNDRUVERUQo
Ci0gICAgICAgICAgICBkM2QxMURldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZ0ZXh0dXJlRGVzYywg
bnVsbHB0ciwgJm1PZmZzY3JlZW5TdXJmYWNlRDNEMTFUZXh0dXJlKSkpOwotCi0gICAgICAgIElE
WEdJUmVzb3VyY2UgKmR4Z2lSZXNvdXJjZSA9Ci0gICAgICAgICAgICBEeW5hbWljQ2FzdENvbU9i
amVjdDxJRFhHSVJlc291cmNlPihtT2Zmc2NyZWVuU3VyZmFjZUQzRDExVGV4dHVyZSk7Ci0gICAg
ICAgIEFTU0VSVF9ORShudWxscHRyLCBkeGdpUmVzb3VyY2UpOwotCi0gICAgICAgIEhBTkRMRSBz
aGFyZWRIYW5kbGUgPSAwOwotICAgICAgICBBU1NFUlRfVFJVRShTVUNDRUVERUQoZHhnaVJlc291
cmNlLT5HZXRTaGFyZWRIYW5kbGUoJnNoYXJlZEhhbmRsZSkpKTsKLSAgICAgICAgU2FmZVJlbGVh
c2UoZHhnaVJlc291cmNlKTsKLQotICAgICAgICBFR0xpbnQgcEJ1ZmZlckF0dHJpYnV0ZXNbXSA9
IHtFR0xfV0lEVEgsICAgICAgICAgIG1XaW5kb3dXaWR0aCwgICAgICAgRUdMX0hFSUdIVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVdpbmRvd1dpZHRoLCAgICAgICBF
R0xfVEVYVFVSRV9UQVJHRVQsIEVHTF9URVhUVVJFXzJELAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBFR0xfVEVYVFVSRV9GT1JNQVQsIEVHTF9URVhUVVJFX1JHQkEsICAg
RUdMX05PTkV9OwotCi0gICAgICAgIG1TdXJmYWNlID0gZWdsQ3JlYXRlUGJ1ZmZlckZyb21DbGll
bnRCdWZmZXIobURpc3BsYXksIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5ETEVfQU5HTEUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hh
cmVkSGFuZGxlLCBtQ29uZmlnLCBwQnVmZmVyQXR0cmlidXRlcyk7Ci0gICAgICAgIEFTU0VSVF9U
UlVFKEVHTF9OT19TVVJGQUNFICE9IG1TdXJmYWNlKTsKLSAgICB9Ci0KLSAgICB2b2lkIG1ha2VD
dXJyZW50KCkgeyBBU1NFUlRfRUdMX1RSVUUoZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIG1TdXJm
YWNlLCBtU3VyZmFjZSwgbUNvbnRleHQpKTsgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBTYWZlUmVsZWFzZShtT2Zmc2NyZWVuU3VyZmFjZUQzRDExVGV4
dHVyZSk7Ci0KLSAgICAgICAgaWYgKG1EaXNwbGF5ICE9IEVHTF9OT19ESVNQTEFZKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBlZ2xNYWtlQ3VycmVudChtRGlzcGxheSwgRUdMX05PX1NVUkZBQ0Us
IEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7Ci0KLSAgICAgICAgICAgIGlmIChtU3Vy
ZmFjZSAhPSBFR0xfTk9fU1VSRkFDRSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBl
Z2xEZXN0cm95U3VyZmFjZShtRGlzcGxheSwgbVN1cmZhY2UpOwotICAgICAgICAgICAgICAgIG1T
dXJmYWNlID0gRUdMX05PX1NVUkZBQ0U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlm
IChtQ29udGV4dCAhPSBFR0xfTk9fQ09OVEVYVCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBlZ2xEZXN0cm95Q29udGV4dChtRGlzcGxheSwgbUNvbnRleHQpOwotICAgICAgICAgICAg
ICAgIG1Db250ZXh0ID0gRUdMX05PX0NPTlRFWFQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGVnbFRlcm1pbmF0ZShtRGlzcGxheSk7Ci0gICAgICAgICAgICBtRGlzcGxheSA9IEVHTF9O
T19ESVNQTEFZOwotICAgICAgICB9Ci0KLSAgICAgICAgbU9TV2luZG93LT5kZXN0cm95KCk7Ci0g
ICAgICAgIFNhZmVEZWxldGUobU9TV2luZG93KTsKLSAgICB9Ci0KLSAgICB2b2lkIGRyYXdRdWFk
VXNpbmdHTCgpCi0gICAgewotICAgICAgICBHTHVpbnQgbTJEUHJvZ3JhbTsKLSAgICAgICAgR0xp
bnQgbVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbjsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAgICAgU0hBREVSX1NPVVJDRShwcmVjaXNp
b24gaGlnaHAgZmxvYXQ7IGF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOyB2YXJ5aW5nIHZlYzIgdGV4
Y29vcmQ7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfUG9z
aXRpb24gPSB2ZWM0KHBvc2l0aW9uLnh5LCAwLjAsIDEuMCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgIH0pOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdt
ZW50U2hhZGVyU291cmNlMkQgPQotICAgICAgICAgICAgU0hBREVSX1NPVVJDRShwcmVjaXNpb24g
aGlnaHAgZmxvYXQ7IHVuaWZvcm0gc2FtcGxlcjJEIHRleDsgdmFyeWluZyB2ZWMyIHRleGNvb3Jk
OwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xv
ciA9IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
fSk7Ci0KLSAgICAgICAgbTJEUHJvZ3JhbSAgICAgICAgICAgICAgICA9IENvbXBpbGVQcm9ncmFt
KHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UyRCk7Ci0gICAgICAgIG1U
ZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtMkRQcm9ncmFt
LCAidGV4Iik7Ci0KLSAgICAgICAgdWludDhfdCB0ZXh0dXJlSW5pdERhdGFbMTZdID0gewotICAg
ICAgICAgICAgMjU1LCAwLCAgIDAsICAgMjU1LCAgLy8gUmVkCi0gICAgICAgICAgICAwLCAgIDI1
NSwgMCwgICAyNTUsICAvLyBHcmVlbgotICAgICAgICAgICAgMCwgICAwLCAgIDI1NSwgMjU1LCAg
Ly8gQmx1ZQotICAgICAgICAgICAgMjU1LCAyNTUsIDAsICAgMjU1ICAgLy8gUmVkICsgR3JlZW4K
LSAgICAgICAgfTsKLQotICAgICAgICAvLyBDcmVhdGUgYSBzaW1wbGUgUkdCQSB0ZXh0dXJlCi0g
ICAgICAgIEdMdWludCB0ZXggPSAwOwotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOwot
ICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7Ci0gICAgICAgIGdsVGV4
SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUluaXREYXRhKTsKLSAg
ICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRF
UiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotICAgICAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLQotICAgICAgICAvLyBEcmF3IGEgcXVhZCB1c2luZyB0aGUgdGV4dHVyZQotICAg
ICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgICAgICBnbFVzZVByb2dyYW0o
bTJEUHJvZ3JhbSk7Ci0gICAgICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRp
b24sIDApOwotCi0gICAgICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxv
Y2F0aW9uKG0yRFByb2dyYW0sICJwb3NpdGlvbiIpOwotICAgICAgICBnbFVzZVByb2dyYW0obTJE
UHJvZ3JhbSk7Ci0gICAgICAgIGNvbnN0IEdMZmxvYXQgdmVydGljZXNbXSA9Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIC0xLjBmLCAgMS4wZiwgMC41ZiwKLSAgICAgICAgICAgIC0xLjBmLCAtMS4w
ZiwgMC41ZiwKLSAgICAgICAgICAgICAxLjBmLCAtMS4wZiwgMC41ZiwKLSAgICAgICAgICAgIC0x
LjBmLCAgMS4wZiwgMC41ZiwKLSAgICAgICAgICAgICAxLjBmLCAtMS4wZiwgMC41ZiwKLSAgICAg
ICAgICAgICAxLjBmLCAgMS4wZiwgMC41ZiwKLSAgICAgICAgfTsKLQotICAgICAgICBnbFZlcnRl
eEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgMywgR0xfRkxPQVQsIEdMX0ZBTFNFLCAw
LCB2ZXJ0aWNlcyk7Ci0gICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25M
b2NhdGlvbik7Ci0KLSAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgNik7Ci0g
ICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbSht
MkRQcm9ncmFtKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNoZWNrUGl4ZWxzVXNpbmdHTCgpCi0gICAg
ewotICAgICAgICAvLyBOb3RlIHRoYXQgdGhlIHRleHR1cmUgaXMgaW4gQkdSQSBmb3JtYXQKLSAg
ICAgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDI1NSwgMCwgMCwgMjU1KTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gUmVkCi0gICAgICAgIEVYUEVDVF9QSVhFTF9FUShtV2lu
ZG93V2lkdGggLSAxLCAwLCAwLCAyNTUsIDAsIDI1NSk7ICAgICAgICAgICAgICAgICAgIC8vIEdy
ZWVuCi0gICAgICAgIEVYUEVDVF9QSVhFTF9FUSgwLCBtV2luZG93V2lkdGggLSAxLCAwLCAwLCAy
NTUsIDI1NSk7ICAgICAgICAgICAgICAgICAgIC8vIEJsdWUKLSAgICAgICAgRVhQRUNUX1BJWEVM
X0VRKG1XaW5kb3dXaWR0aCAtIDEsIG1XaW5kb3dXaWR0aCAtIDEsIDI1NSwgMjU1LCAwLCAyNTUp
OyAgLy8gUmVkICsgZ3JlZW4KLSAgICB9Ci0KLSAgICB2b2lkIGNoZWNrUGl4ZWxzVXNpbmdEM0Qo
Ym9vbCB1c2luZ1ByZXNlbnRQYXRoRmFzdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9ORShudWxs
cHRyLCBtT2Zmc2NyZWVuU3VyZmFjZUQzRDExVGV4dHVyZSk7Ci0KLSAgICAgICAgRDNEMTFfVEVY
VFVSRTJEX0RFU0MgdGV4dHVyZURlc2MgPSB7MH07Ci0gICAgICAgIElEM0QxMURldmljZSAqZGV2
aWNlOwotICAgICAgICBJRDNEMTFEZXZpY2VDb250ZXh0ICpjb250ZXh0OwotICAgICAgICBtT2Zm
c2NyZWVuU3VyZmFjZUQzRDExVGV4dHVyZS0+R2V0RGVzYygmdGV4dHVyZURlc2MpOwotICAgICAg
ICBtT2Zmc2NyZWVuU3VyZmFjZUQzRDExVGV4dHVyZS0+R2V0RGV2aWNlKCZkZXZpY2UpOwotICAg
ICAgICBkZXZpY2UtPkdldEltbWVkaWF0ZUNvbnRleHQoJmNvbnRleHQpOwotICAgICAgICBBU1NF
UlRfTkUobnVsbHB0ciwgZGV2aWNlKTsKLSAgICAgICAgQVNTRVJUX05FKG51bGxwdHIsIGNvbnRl
eHQpOwotCi0gICAgICAgIHRleHR1cmVEZXNjLkNQVUFjY2Vzc0ZsYWdzICA9IEQzRDExX0NQVV9B
Q0NFU1NfUkVBRDsKLSAgICAgICAgdGV4dHVyZURlc2MuVXNhZ2UgICAgICAgICAgID0gRDNEMTFf
VVNBR0VfU1RBR0lORzsKLSAgICAgICAgdGV4dHVyZURlc2MuQmluZEZsYWdzICAgICAgID0gMDsK
LSAgICAgICAgdGV4dHVyZURlc2MuTWlzY0ZsYWdzICAgICAgID0gMDsKLSAgICAgICAgSUQzRDEx
VGV4dHVyZTJEICpjcHVUZXh0dXJlID0gbnVsbHB0cjsKLSAgICAgICAgQVNTRVJUX1RSVUUoU1VD
Q0VFREVEKGRldmljZS0+Q3JlYXRlVGV4dHVyZTJEKCZ0ZXh0dXJlRGVzYywgbnVsbHB0ciwgJmNw
dVRleHR1cmUpKSk7Ci0KLSAgICAgICAgY29udGV4dC0+Q29weVJlc291cmNlKGNwdVRleHR1cmUs
IG1PZmZzY3JlZW5TdXJmYWNlRDNEMTFUZXh0dXJlKTsKLQotICAgICAgICBEM0QxMV9NQVBQRURf
U1VCUkVTT1VSQ0UgbWFwcGVkU3VicmVzb3VyY2U7Ci0gICAgICAgIGNvbnRleHQtPk1hcChjcHVU
ZXh0dXJlLCAwLCBEM0QxMV9NQVBfUkVBRCwgMCwgJm1hcHBlZFN1YnJlc291cmNlKTsKLSAgICAg
ICAgQVNTRVJUX0VRKHN0YXRpY19jYXN0PFVJTlQ+KG1XaW5kb3dXaWR0aCAqIDQpLCBtYXBwZWRT
dWJyZXNvdXJjZS5Sb3dQaXRjaCk7Ci0gICAgICAgIEFTU0VSVF9FUShzdGF0aWNfY2FzdDxVSU5U
PihtV2luZG93V2lkdGggKiBtV2luZG93V2lkdGggKiA0KSwgbWFwcGVkU3VicmVzb3VyY2UuRGVw
dGhQaXRjaCk7Ci0KLSAgICAgICAgYW5nbGU6OkdMQ29sb3IgKmJ5dGVEYXRhID0gcmVpbnRlcnBy
ZXRfY2FzdDxhbmdsZTo6R0xDb2xvciAqPihtYXBwZWRTdWJyZXNvdXJjZS5wRGF0YSk7Ci0KLSAg
ICAgICAgLy8gTm90ZSB0aGF0IHRoZSB0ZXh0dXJlIGlzIGluIEJHUkEgZm9ybWF0LCBhbHRob3Vn
aCB0aGUgR0xDb2xvciBzdHJ1Y3QgaXMgUkdCQQotICAgICAgICBHTENvbG9yIGV4cGVjdGVkVG9w
TGVmdFBpeGVsICAgICA9IEdMQ29sb3IoMCwgICAwLCAyNTUsIDI1NSk7ICAvLyBSZWQKLSAgICAg
ICAgR0xDb2xvciBleHBlY3RlZFRvcFJpZ2h0UGl4ZWwgICAgPSBHTENvbG9yKDAsIDI1NSwgICAw
LCAyNTUpOyAgLy8gR3JlZW4KLSAgICAgICAgR0xDb2xvciBleHBlY3RlZEJvdHRvbUxlZnRQaXhl
bCAgPSBHTENvbG9yKDI1NSwgMCwgICAwLCAyNTUpOyAgLy8gQmx1ZQotICAgICAgICBHTENvbG9y
IGV4cGVjdGVkQm90dG9tUmlnaHRQaXhlbCA9IEdMQ29sb3IoMCwgMjU1LCAyNTUsIDI1NSk7ICAv
LyBSZWQgKyBHcmVlbgotCi0gICAgICAgIGlmICh1c2luZ1ByZXNlbnRQYXRoRmFzdCkKLSAgICAg
ICAgewotICAgICAgICAgICAgLy8gSW52ZXJ0IHRoZSBleHBlY3RlZCB2YWx1ZXMKLSAgICAgICAg
ICAgIEdMQ29sb3IgdGVtcFRvcExlZnQgICAgICA9IGV4cGVjdGVkVG9wTGVmdFBpeGVsOwotICAg
ICAgICAgICAgR0xDb2xvciB0ZW1wVG9wUmlnaHQgICAgID0gZXhwZWN0ZWRUb3BSaWdodFBpeGVs
OwotICAgICAgICAgICAgZXhwZWN0ZWRUb3BMZWZ0UGl4ZWwgICAgID0gZXhwZWN0ZWRCb3R0b21M
ZWZ0UGl4ZWw7Ci0gICAgICAgICAgICBleHBlY3RlZFRvcFJpZ2h0UGl4ZWwgICAgPSBleHBlY3Rl
ZEJvdHRvbVJpZ2h0UGl4ZWw7Ci0gICAgICAgICAgICBleHBlY3RlZEJvdHRvbUxlZnRQaXhlbCAg
PSB0ZW1wVG9wTGVmdDsKLSAgICAgICAgICAgIGV4cGVjdGVkQm90dG9tUmlnaHRQaXhlbCA9IHRl
bXBUb3BSaWdodDsKLSAgICAgICAgfQotCi0gICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFRvcExl
ZnRQaXhlbCwgYnl0ZURhdGFbMF0pOwotICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRUb3BSaWdo
dFBpeGVsLCBieXRlRGF0YVsobVdpbmRvd1dpZHRoIC0gMSldKTsKLSAgICAgICAgRVhQRUNUX0VR
KGV4cGVjdGVkQm90dG9tTGVmdFBpeGVsLCBieXRlRGF0YVsobVdpbmRvd1dpZHRoIC0gMSkgKiBt
V2luZG93V2lkdGhdKTsKLSAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVkQm90dG9tUmlnaHRQaXhl
bCwKLSAgICAgICAgICAgICAgICAgIGJ5dGVEYXRhWyhtV2luZG93V2lkdGggLSAxKSAqIG1XaW5k
b3dXaWR0aCArIChtV2luZG93V2lkdGggLSAxKV0pOwotCi0gICAgICAgIGNvbnRleHQtPlVubWFw
KGNwdVRleHR1cmUsIDApOwotICAgICAgICBTYWZlUmVsZWFzZShjcHVUZXh0dXJlKTsKLSAgICAg
ICAgU2FmZVJlbGVhc2UoZGV2aWNlKTsKLSAgICAgICAgU2FmZVJlbGVhc2UoY29udGV4dCk7Ci0g
ICAgfQotCi0gICAgRUdMRGlzcGxheSBtRGlzcGxheTsKLSAgICBFR0xDb250ZXh0IG1Db250ZXh0
OwotICAgIEVHTFN1cmZhY2UgbVN1cmZhY2U7Ci0gICAgSUQzRDExVGV4dHVyZTJEICptT2Zmc2Ny
ZWVuU3VyZmFjZUQzRDExVGV4dHVyZTsKLSAgICBFR0xDb25maWcgbUNvbmZpZzsKLSAgICBPU1dp
bmRvdyAqbU9TV2luZG93OwotICAgIEdMaW50IG1XaW5kb3dXaWR0aDsKLX07Ci0KLS8vIFRlc3Qg
dGhhdCByZW5kZXJpbmcgYmFzaWMgY29udGVudCBvbnRvIGEgd2luZG93IHN1cmZhY2Ugd2hlbiBw
cmVzZW50IHBhdGggZmFzdAotLy8gaXMgZW5hYmxlZCB3b3JrcyBhcyBleHBlY3RlZAotVEVTVF9Q
KEVHTFByZXNlbnRQYXRoRDNEMTEsIFdpbmRvd1ByZXNlbnRQYXRoRmFzdCkKLXsKLSAgICBpbml0
aWFsaXplRUdMKHRydWUpOwotICAgIGNyZWF0ZVdpbmRvd1N1cmZhY2UoKTsKLSAgICBtYWtlQ3Vy
cmVudCgpOwotCi0gICAgZHJhd1F1YWRVc2luZ0dMKCk7Ci0KLSAgICBjaGVja1BpeGVsc1VzaW5n
R0woKTsKLX0KLQotLy8gVGVzdCB0aGF0IHJlbmRlcmluZyBiYXNpYyBjb250ZW50IG9udG8gYSBj
bGllbnQgYnVmZmVyIHN1cmZhY2Ugd2hlbiBwcmVzZW50IHBhdGggZmFzdAotLy8gd29ya3MgYXMg
ZXhwZWN0ZWQsIGFuZCBpcyBhbHNvIG9yaWVudGVkIHRoZSBjb3JyZWN0IHdheSBhcm91bmQKLVRF
U1RfUChFR0xQcmVzZW50UGF0aEQzRDExLCBDbGllbnRCdWZmZXJQcmVzZW50UGF0aEZhc3QpCi17
Ci0gICAgaW5pdGlhbGl6ZUVHTCh0cnVlKTsKLSAgICBjcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1
ZmZlclN1cmZhY2UoKTsKLSAgICBtYWtlQ3VycmVudCgpOwotCi0gICAgZHJhd1F1YWRVc2luZ0dM
KCk7Ci0KLSAgICBjaGVja1BpeGVsc1VzaW5nR0woKTsKLSAgICBjaGVja1BpeGVsc1VzaW5nRDNE
KHRydWUpOwotfQotCi0vLyBUZXN0IHRoYXQgcmVuZGVyaW5nIGJhc2ljIGNvbnRlbnQgb250byBh
IHdpbmRvdyBzdXJmYWNlIHdoZW4gcHJlc2VudCBwYXRoIGZhc3QKLS8vIGlzIGRpc2FibGVkIHdv
cmtzIGFzIGV4cGVjdGVkCi1URVNUX1AoRUdMUHJlc2VudFBhdGhEM0QxMSwgV2luZG93UHJlc2Vu
dFBhdGhDb3B5KQotewotICAgIGluaXRpYWxpemVFR0woZmFsc2UpOwotICAgIGNyZWF0ZVdpbmRv
d1N1cmZhY2UoKTsKLSAgICBtYWtlQ3VycmVudCgpOwotCi0gICAgZHJhd1F1YWRVc2luZ0dMKCk7
Ci0KLSAgICBjaGVja1BpeGVsc1VzaW5nR0woKTsKLX0KLQotLy8gVGVzdCB0aGF0IHJlbmRlcmlu
ZyBiYXNpYyBjb250ZW50IG9udG8gYSBjbGllbnQgYnVmZmVyIHN1cmZhY2Ugd2hlbiBwcmVzZW50
IHBhdGgKLS8vIGZhc3QgaXMgZGlzYWJsZWQgd29ya3MgYXMgZXhwZWN0ZWQsIGFuZCBpcyBhbHNv
IG9yaWVudGVkIHRoZSBjb3JyZWN0IHdheSBhcm91bmQKLVRFU1RfUChFR0xQcmVzZW50UGF0aEQz
RDExLCBDbGllbnRCdWZmZXJQcmVzZW50UGF0aENvcHkpCi17Ci0gICAgaW5pdGlhbGl6ZUVHTChm
YWxzZSk7Ci0gICAgY3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXJTdXJmYWNlKCk7Ci0gICAg
bWFrZUN1cnJlbnQoKTsKLQotICAgIGRyYXdRdWFkVXNpbmdHTCgpOwotCi0gICAgY2hlY2tQaXhl
bHNVc2luZ0dMKCk7Ci0gICAgY2hlY2tQaXhlbHNVc2luZ0QzRChmYWxzZSk7Ci19Ci0KLUFOR0xF
X0lOU1RBTlRJQVRFX1RFU1QoRUdMUHJlc2VudFBhdGhEM0QxMSwgRVMyX0QzRDExKCksIEVTMl9E
M0QxMV9GTDlfMygpKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFF1ZXJ5Q29udGV4
dFRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9F
R0xRdWVyeUNvbnRleHRUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY0
YTQzZjIzZDAuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9lZ2xfdGVzdHMvRUdMUXVlcnlDb250ZXh0VGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxNTMgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNSBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgot
Ci0jaW5jbHVkZSA8RUdML2VnbC5oPgotI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KLQotI2luY2x1
ZGUgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdzLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBh
bmdsZTsKLQotY2xhc3MgRUdMUXVlcnlDb250ZXh0VGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
V2l0aFBhcmFtPFBsYXRmb3JtUGFyYW1ldGVycz4KLXsKLSAgcHVibGljOgotICAgIHZvaWQgU2V0
VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaW50IGNsaWVudFZlcnNpb24gPSBHZXRQYXJh
bSgpLm1ham9yVmVyc2lvbjsKLQotICAgICAgICBQRk5FR0xHRVRQTEFURk9STURJU1BMQVlFWFRQ
Uk9DIGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMR0VU
UExBVEZPUk1ESVNQTEFZRVhUUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbEdldFBsYXRmb3Jt
RGlzcGxheUVYVCIpKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoZWdsR2V0UGxhdGZvcm1EaXNwbGF5
RVhUICE9IE5VTEwpOwotCi0gICAgICAgIEVHTGludCBkaXNwYXR0cnNbXSA9Ci0gICAgICAgIHsK
LSAgICAgICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFLCBHZXRQYXJhbSgpLmdl
dFJlbmRlcmVyKCksCi0gICAgICAgICAgICBFR0xfTk9ORQotICAgICAgICB9OwotICAgICAgICBt
RGlzcGxheSA9IGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCgKLSAgICAgICAgICAgIEVHTF9QTEFU
Rk9STV9BTkdMRV9BTkdMRSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KEVHTF9ERUZBVUxUX0RJ
U1BMQVkpLCBkaXNwYXR0cnMpOwotICAgICAgICBFWFBFQ1RfVFJVRShtRGlzcGxheSAhPSBFR0xf
Tk9fRElTUExBWSk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKGVnbEluaXRpYWxpemUobURpc3BsYXks
IE5VTEwsIE5VTEwpICE9IEVHTF9GQUxTRSk7Ci0KLSAgICAgICAgRUdMaW50IG5jZmc7Ci0gICAg
ICAgIEVHTGludCBjZmdhdHRyc1tdID0KLSAgICAgICAgewotICAgICAgICAgICAgRUdMX1JFRF9T
SVpFLCA4LAotICAgICAgICAgICAgRUdMX0dSRUVOX1NJWkUsIDgsCi0gICAgICAgICAgICBFR0xf
QkxVRV9TSVpFLCA4LAotICAgICAgICAgICAgRUdMX1JFTkRFUkFCTEVfVFlQRSwgY2xpZW50VmVy
c2lvbiA9PSAzID8gRUdMX09QRU5HTF9FUzNfQklUIDogRUdMX09QRU5HTF9FUzJfQklULAotICAg
ICAgICAgICAgRUdMX1NVUkZBQ0VfVFlQRSwgRUdMX1BCVUZGRVJfQklULAotICAgICAgICAgICAg
RUdMX05PTkUKLSAgICAgICAgfTsKLSAgICAgICAgRVhQRUNUX1RSVUUoZWdsQ2hvb3NlQ29uZmln
KG1EaXNwbGF5LCBjZmdhdHRycywgJm1Db25maWcsIDEsICZuY2ZnKSAhPSBFR0xfRkFMU0UpOwot
ICAgICAgICBFWFBFQ1RfVFJVRShuY2ZnID09IDEpOwotCi0gICAgICAgIEVHTGludCBjdHhhdHRy
c1tdID0KLSAgICAgICAgewotICAgICAgICAgICAgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04s
IGNsaWVudFZlcnNpb24sCi0gICAgICAgICAgICBFR0xfTk9ORQotICAgICAgICB9OwotICAgICAg
ICBtQ29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQobURpc3BsYXksIG1Db25maWcsIE5VTEwsIGN0
eGF0dHJzKTsKLSAgICAgICAgRVhQRUNUX1RSVUUobUNvbnRleHQgIT0gRUdMX05PX0NPTlRFWFQp
OwotCi0gICAgICAgIEVHTGludCBzdXJmYXR0cnNbXSA9Ci0gICAgICAgIHsKLSAgICAgICAgICAg
IEVHTF9XSURUSCwgMTYsCi0gICAgICAgICAgICBFR0xfSEVJR0hULCAxNiwKLSAgICAgICAgICAg
IEVHTF9OT05FCi0gICAgICAgIH07Ci0gICAgICAgIG1TdXJmYWNlID0gZWdsQ3JlYXRlUGJ1ZmZl
clN1cmZhY2UobURpc3BsYXksIG1Db25maWcsIHN1cmZhdHRycyk7Ci0gICAgICAgIEVYUEVDVF9U
UlVFKG1TdXJmYWNlICE9IEVHTF9OT19TVVJGQUNFKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJE
b3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBF
R0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsKLSAgICAgICAg
ZWdsRGVzdHJveUNvbnRleHQobURpc3BsYXksIG1Db250ZXh0KTsKLSAgICAgICAgZWdsRGVzdHJv
eVN1cmZhY2UobURpc3BsYXksIG1TdXJmYWNlKTsKLSAgICAgICAgZWdsVGVybWluYXRlKG1EaXNw
bGF5KTsKLSAgICB9Ci0KLSAgICBFR0xEaXNwbGF5IG1EaXNwbGF5OwotICAgIEVHTENvbmZpZyBt
Q29uZmlnOwotICAgIEVHTENvbnRleHQgbUNvbnRleHQ7Ci0gICAgRUdMU3VyZmFjZSBtU3VyZmFj
ZTsKLX07Ci0KLVRFU1RfUChFR0xRdWVyeUNvbnRleHRUZXN0LCBHZXRDb25maWdJRCkKLXsKLSAg
ICBFR0xpbnQgY29uZmlnSWQsIGNvbnRleHRDb25maWdJZDsKLSAgICBFWFBFQ1RfVFJVRShlZ2xH
ZXRDb25maWdBdHRyaWIobURpc3BsYXksIG1Db25maWcsIEVHTF9DT05GSUdfSUQsICZjb25maWdJ
ZCkgIT0gRUdMX0ZBTFNFKTsKLSAgICBFWFBFQ1RfVFJVRShlZ2xRdWVyeUNvbnRleHQobURpc3Bs
YXksIG1Db250ZXh0LCBFR0xfQ09ORklHX0lELCAmY29udGV4dENvbmZpZ0lkKSAhPSBFR0xfRkFM
U0UpOwotICAgIEVYUEVDVF9UUlVFKGNvbmZpZ0lkID09IGNvbnRleHRDb25maWdJZCk7Ci19Ci0K
LVRFU1RfUChFR0xRdWVyeUNvbnRleHRUZXN0LCBHZXRDbGllbnRUeXBlKQotewotICAgIEVHTGlu
dCBjbGllbnRUeXBlOwotICAgIEVYUEVDVF9UUlVFKGVnbFF1ZXJ5Q29udGV4dChtRGlzcGxheSwg
bUNvbnRleHQsIEVHTF9DT05URVhUX0NMSUVOVF9UWVBFLCAmY2xpZW50VHlwZSkgIT0gRUdMX0ZB
TFNFKTsKLSAgICBFWFBFQ1RfVFJVRShjbGllbnRUeXBlID09IEVHTF9PUEVOR0xfRVNfQVBJKTsK
LX0KLQotVEVTVF9QKEVHTFF1ZXJ5Q29udGV4dFRlc3QsIEdldENsaWVudFZlcnNpb24pCi17Ci0g
ICAgRUdMaW50IGNsaWVudFZlcnNpb247Ci0gICAgRVhQRUNUX1RSVUUoZWdsUXVlcnlDb250ZXh0
KG1EaXNwbGF5LCBtQ29udGV4dCwgRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sICZjbGllbnRW
ZXJzaW9uKSAhPSBFR0xfRkFMU0UpOwotICAgIEVYUEVDVF9UUlVFKGNsaWVudFZlcnNpb24gPT0g
R2V0UGFyYW0oKS5tYWpvclZlcnNpb24pOwotfQotCi1URVNUX1AoRUdMUXVlcnlDb250ZXh0VGVz
dCwgR2V0UmVuZGVyQnVmZmVyTm9TdXJmYWNlKQotewotICAgIEVHTGludCByZW5kZXJCdWZmZXI7
Ci0gICAgRVhQRUNUX1RSVUUoZWdsUXVlcnlDb250ZXh0KG1EaXNwbGF5LCBtQ29udGV4dCwgRUdM
X1JFTkRFUl9CVUZGRVIsICZyZW5kZXJCdWZmZXIpICE9IEVHTF9GQUxTRSk7Ci0gICAgRVhQRUNU
X1RSVUUocmVuZGVyQnVmZmVyID09IEVHTF9OT05FKTsKLX0KLQotVEVTVF9QKEVHTFF1ZXJ5Q29u
dGV4dFRlc3QsIEdldFJlbmRlckJ1ZmZlckJvdW5kU3VyZmFjZSkKLXsKLSAgICBFR0xpbnQgcmVu
ZGVyQnVmZmVyLCBjb250ZXh0UmVuZGVyQnVmZmVyOwotICAgIEVYUEVDVF9UUlVFKGVnbFF1ZXJ5
U3VyZmFjZShtRGlzcGxheSwgbVN1cmZhY2UsIEVHTF9SRU5ERVJfQlVGRkVSLCAmcmVuZGVyQnVm
ZmVyKSAhPSBFR0xfRkFMU0UpOwotICAgIEVYUEVDVF9UUlVFKGVnbE1ha2VDdXJyZW50KG1EaXNw
bGF5LCBtU3VyZmFjZSwgbVN1cmZhY2UsIG1Db250ZXh0KSAhPSBFR0xfRkFMU0UpOwotICAgIEVY
UEVDVF9UUlVFKGVnbFF1ZXJ5Q29udGV4dChtRGlzcGxheSwgbUNvbnRleHQsIEVHTF9SRU5ERVJf
QlVGRkVSLCAmY29udGV4dFJlbmRlckJ1ZmZlcikgIT0gRUdMX0ZBTFNFKTsKLSAgICBFWFBFQ1Rf
VFJVRShyZW5kZXJCdWZmZXIgPT0gY29udGV4dFJlbmRlckJ1ZmZlcik7Ci19Ci0KLVRFU1RfUChF
R0xRdWVyeUNvbnRleHRUZXN0LCBCYWREaXNwbGF5KQotewotICAgIEVHTGludCB2YWw7Ci0gICAg
RVhQRUNUX1RSVUUoZWdsUXVlcnlDb250ZXh0KEVHTF9OT19ESVNQTEFZLCBtQ29udGV4dCwgRUdM
X0NPTlRFWFRfQ0xJRU5UX1RZUEUsICZ2YWwpID09IEVHTF9GQUxTRSk7Ci0gICAgRVhQRUNUX1RS
VUUoZWdsR2V0RXJyb3IoKSA9PSBFR0xfQkFEX0RJU1BMQVkpOwotfQotCi1URVNUX1AoRUdMUXVl
cnlDb250ZXh0VGVzdCwgTm90SW5pdGlhbGl6ZWQpCi17Ci0gICAgRUdMaW50IHZhbDsKLSAgICBU
ZWFyRG93bigpOwotICAgIEVYUEVDVF9UUlVFKGVnbFF1ZXJ5Q29udGV4dChtRGlzcGxheSwgbUNv
bnRleHQsIEVHTF9DT05URVhUX0NMSUVOVF9UWVBFLCAmdmFsKSA9PSBFR0xfRkFMU0UpOwotICAg
IEVYUEVDVF9UUlVFKGVnbEdldEVycm9yKCkgPT0gRUdMX05PVF9JTklUSUFMSVpFRCk7Ci0KLSAg
ICBtRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOwotICAgIG1TdXJmYWNlID0gRUdMX05PX1NVUkZB
Q0U7Ci0gICAgbUNvbnRleHQgPSBFR0xfTk9fQ09OVEVYVDsKLX0KLQotVEVTVF9QKEVHTFF1ZXJ5
Q29udGV4dFRlc3QsIEJhZENvbnRleHQpCi17Ci0gICAgRUdMaW50IHZhbDsKLSAgICBFWFBFQ1Rf
VFJVRShlZ2xRdWVyeUNvbnRleHQobURpc3BsYXksIEVHTF9OT19DT05URVhULCBFR0xfQ09OVEVY
VF9DTElFTlRfVFlQRSwgJnZhbCkgPT0gRUdMX0ZBTFNFKTsKLSAgICBFWFBFQ1RfVFJVRShlZ2xH
ZXRFcnJvcigpID09IEVHTF9CQURfQ09OVEVYVCk7Ci19Ci0KLVRFU1RfUChFR0xRdWVyeUNvbnRl
eHRUZXN0LCBCYWRBdHRyaWJ1dGUpCi17Ci0gICAgRUdMaW50IHZhbDsKLSAgICBFWFBFQ1RfVFJV
RShlZ2xRdWVyeUNvbnRleHQobURpc3BsYXksIG1Db250ZXh0LCBFR0xfSEVJR0hULCAmdmFsKSA9
PSBFR0xfRkFMU0UpOwotICAgIEVYUEVDVF9UUlVFKGVnbEdldEVycm9yKCkgPT0gRUdMX0JBRF9B
VFRSSUJVVEUpOwotfQotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKEVHTFF1ZXJ5Q29udGV4dFRl
c3QsIEVTMl9EM0Q5KCksIEVTMl9EM0QxMSgpLCBFUzJfRDNEMTFfRkw5XzMoKSwgRVMyX09QRU5H
TCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMv
RUdMUm9idXN0bmVzc1Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2VnbF90ZXN0cy9FR0xSb2J1c3RuZXNzVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDA0ODJhN2ZlNTBmLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFJvYnVzdG5lc3NUZXN0LmNwcAorKysgL2Rldi9u
dWxsCkBAIC0xLDIzNCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gRUdMUm9idXN0bmVzc1Rl
c3QuY3BwOiB0ZXN0cyBmb3IgRUdMX0VYVF9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzCi0KLSNp
bmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaW5jbHVkZSA8RUdML2VnbC5oPgotI2luY2x1ZGUg
PEVHTC9lZ2xleHQuaD4KLQotI2luY2x1ZGUgIk9TV2luZG93LmgiCi0jaW5jbHVkZSAidGVzdF91
dGlscy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1jbGFzcyBFR0xS
b2J1c3RuZXNzVGVzdCA6IHB1YmxpYyA6OnRlc3Rpbmc6OlRlc3RXaXRoUGFyYW08YW5nbGU6OlBs
YXRmb3JtUGFyYW1ldGVycz4KLXsKLSAgcHVibGljOgotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlk
ZQotICAgIHsKLSAgICAgICAgbU9TV2luZG93ID0gQ3JlYXRlT1NXaW5kb3coKTsKLSAgICAgICAg
bU9TV2luZG93LT5pbml0aWFsaXplKCJFR0xSb2J1c3RuZXNzVGVzdCIsIDUwMCwgNTAwKTsKLSAg
ICAgICAgbU9TV2luZG93LT5zZXRWaXNpYmxlKHRydWUpOwotCi0gICAgICAgIGF1dG8gZWdsR2V0
UGxhdGZvcm1EaXNwbGF5RVhUID0gcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xHRVRQTEFURk9STURJ
U1BMQVlFWFRQUk9DPigKLSAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJlZ2xHZXRQbGF0
Zm9ybURpc3BsYXlFWFQiKSk7Ci0KLSAgICAgICAgY29uc3QgYXV0byAmcGxhdGZvcm0gPSBHZXRQ
YXJhbSgpLmVnbFBhcmFtZXRlcnM7Ci0KLSAgICAgICAgc3RkOjp2ZWN0b3I8RUdMaW50PiBkaXNw
bGF5QXR0cmlidXRlczsKLSAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX0FOR0xFKTsKLSAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVz
aF9iYWNrKHBsYXRmb3JtLnJlbmRlcmVyKTsKLSAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVz
aF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NQUpPUl9BTkdMRSk7Ci0gICAg
ICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhwbGF0Zm9ybS5tYWpvclZlcnNpb24pOwot
ICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX1BMQVRGT1JNX0FOR0xFX01B
WF9WRVJTSU9OX01JTk9SX0FOR0xFKTsKLSAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9i
YWNrKHBsYXRmb3JtLm1pbm9yVmVyc2lvbik7Ci0KLSAgICAgICAgaWYgKHBsYXRmb3JtLmRldmlj
ZVR5cGUgIT0gRUdMX0RPTlRfQ0FSRSkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcGxheUF0
dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9BTkdMRSk7
Ci0gICAgICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2socGxhdGZvcm0uZGV2aWNl
VHlwZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2so
RUdMX05PTkUpOwotCi0gICAgICAgIG1EaXNwbGF5ID0gZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhU
KEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KG1PU1dpbmRvdy0+Z2V0TmF0
aXZlRGlzcGxheSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmRpc3BsYXlBdHRyaWJ1dGVzWzBdKTsKLSAgICAgICAgQVNTRVJUX05FKEVHTF9OT19ESVNQ
TEFZLCBtRGlzcGxheSk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUoZWdsSW5pdGlhbGl6ZShtRGlz
cGxheSwgbnVsbHB0ciwgbnVsbHB0cikgPT0gRUdMX1RSVUUpOwotCi0gICAgICAgIGNvbnN0IGNo
YXIgKmV4dGVuc2lvbnMgPSBlZ2xRdWVyeVN0cmluZyhtRGlzcGxheSwgRUdMX0VYVEVOU0lPTlMp
OwotICAgICAgICBpZiAoc3Ryc3RyKGV4dGVuc2lvbnMsICJFR0xfRVhUX2NyZWF0ZV9jb250ZXh0
X3JvYnVzdG5lc3MiKSA9PSBudWxscHRyKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3Qgc2tpcHBlZCBkdWUgdG8gbWlzc2luZyBFR0xfRVhUX2NyZWF0ZV9jb250ZXh0
X3JvYnVzdG5lc3MiCi0gICAgICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IG5Db25maWdzID0gMDsKLSAg
ICAgICAgQVNTRVJUX1RSVUUoZWdsR2V0Q29uZmlncyhtRGlzcGxheSwgbnVsbHB0ciwgMCwgJm5D
b25maWdzKSA9PSBFR0xfVFJVRSk7Ci0gICAgICAgIEFTU0VSVF9MRSgxLCBuQ29uZmlncyk7Ci0K
LSAgICAgICAgaW50IG5SZXR1cm5lZENvbmZpZ3MgPSAwOwotICAgICAgICBBU1NFUlRfVFJVRShl
Z2xHZXRDb25maWdzKG1EaXNwbGF5LCAmbUNvbmZpZywgMSwgJm5SZXR1cm5lZENvbmZpZ3MpID09
IEVHTF9UUlVFKTsKLSAgICAgICAgQVNTRVJUX0VRKDEsIG5SZXR1cm5lZENvbmZpZ3MpOwotCi0g
ICAgICAgIG1XaW5kb3cgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKG1EaXNwbGF5LCBtQ29uZmln
LCBtT1NXaW5kb3ctPmdldE5hdGl2ZVdpbmRvdygpLCBudWxscHRyKTsKLSAgICAgICAgQVNTRVJU
X0VHTF9TVUNDRVNTKCk7Ci0KLSAgICAgICAgbUluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICB9Ci0K
LSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGVnbERlc3Ryb3lT
dXJmYWNlKG1EaXNwbGF5LCBtV2luZG93KTsKLSAgICAgICAgZWdsRGVzdHJveUNvbnRleHQobURp
c3BsYXksIG1Db250ZXh0KTsKLSAgICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIEVHTF9O
T19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwotICAgICAgICBlZ2xU
ZXJtaW5hdGUobURpc3BsYXkpOwotICAgICAgICBFWFBFQ1RfRUdMX1NVQ0NFU1MoKTsKLQotICAg
ICAgICBTYWZlRGVsZXRlKG1PU1dpbmRvdyk7Ci0gICAgfQotCi0gICAgdm9pZCBjcmVhdGVDb250
ZXh0KEVHTGludCByZXNldFN0cmF0ZWd5KQotICAgIHsKLSAgICAgICAgY29uc3QgRUdMaW50IGNv
bnRleHRBdHRyaWJzW10gPSB7RUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT04sIDIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9DT05URVhUX09QRU5HTF9SRVNF
VF9OT1RJRklDQVRJT05fU1RSQVRFR1lfRVhULAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXNldFN0cmF0ZWd5LCBFR0xfTk9ORX07Ci0gICAgICAgIG1Db250ZXh0
ID0gZWdsQ3JlYXRlQ29udGV4dChtRGlzcGxheSwgbUNvbmZpZywgRUdMX05PX0NPTlRFWFQsIGNv
bnRleHRBdHRyaWJzKTsKLSAgICAgICAgQVNTRVJUX05FKEVHTF9OT19DT05URVhULCBtQ29udGV4
dCk7Ci0KLSAgICAgICAgZWdsTWFrZUN1cnJlbnQobURpc3BsYXksIG1XaW5kb3csIG1XaW5kb3cs
IG1Db250ZXh0KTsKLSAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICAgICAgY29u
c3QgY2hhciAqZXh0ZW5zaW9uU3RyaW5nID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+
KGdsR2V0U3RyaW5nKEdMX0VYVEVOU0lPTlMpKTsKLSAgICAgICAgQVNTRVJUX05FKG51bGxwdHIs
IHN0cnN0cihleHRlbnNpb25TdHJpbmcsICJHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIikpOwot
Ci0gICAgICAgIG1EcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSA9Ci0gICAgICAgICAgICAoUEZO
R0xEUkFXRUxFTUVOVFNJTlNUQU5DRURBTkdMRVBST0MpZWdsR2V0UHJvY0FkZHJlc3MoImdsRHJh
d0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUiKTsKLSAgICAgICAgQVNTRVJUX05FKG51bGxwdHIsIG1E
cmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSk7Ci0gICAgfQotCi0gICAgdm9pZCBmb3JjZUNvbnRl
eHRSZXNldCgpCi0gICAgewotICAgICAgICAvLyBDYXVzZSBhIEdQVSByZXNldCBieSBkcmF3aW5n
IDEwMCwwMDAsMDAwIGZ1bGxzY3JlZW4gcXVhZHMKLSAgICAgICAgR0x1aW50IHByb2dyYW0gPSBD
b21waWxlUHJvZ3JhbSgKLSAgICAgICAgICAgICJhdHRyaWJ1dGUgdmVjNCBwb3M7XG4iCi0gICAg
ICAgICAgICAidm9pZCBtYWluKCkge2dsX1Bvc2l0aW9uID0gcG9zO31cbiIsCi0gICAgICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKCkg
e2dsX0ZyYWdDb2xvciA9IHZlYzQoMS4wKTt9XG4iKTsKLSAgICAgICAgQVNTRVJUX05FKDB1LCBw
cm9ncmFtKTsKLSAgICAgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOwotCi0gICAgICAgIEdMZmxv
YXQgdmVydGljZXNbXSA9IHsKLSAgICAgICAgICAgIC0xLjBmLCAtMS4wZiwgMC4wZiwgMS4wZiwg
LTEuMGYsIDEuMGYsIDAuMGYsIDEuMGYsCi0gICAgICAgICAgICAxLjBmLCAgLTEuMGYsIDAuMGYs
IDEuMGYsIDEuMGYsICAxLjBmLCAwLjBmLCAxLjBmLAotICAgICAgICB9OwotCi0gICAgICAgIGNv
bnN0IGludCBrTnVtUXVhZHMgPSAxMDAwMDsKLSAgICAgICAgc3RkOjp2ZWN0b3I8R0x1c2hvcnQ+
IGluZGljZXMoNiAqIGtOdW1RdWFkcyk7Ci0KLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBrTnVtUXVhZHM7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgaW5kaWNlc1tpICogNiAr
IDBdID0gMDsKLSAgICAgICAgICAgIGluZGljZXNbaSAqIDYgKyAxXSA9IDE7Ci0gICAgICAgICAg
ICBpbmRpY2VzW2kgKiA2ICsgMl0gPSAyOwotICAgICAgICAgICAgaW5kaWNlc1tpICogNiArIDNd
ID0gMTsKLSAgICAgICAgICAgIGluZGljZXNbaSAqIDYgKyA0XSA9IDI7Ci0gICAgICAgICAgICBp
bmRpY2VzW2kgKiA2ICsgNV0gPSAzOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2xCaW5kQXR0cmli
TG9jYXRpb24ocHJvZ3JhbSwgMCwgInBvcyIpOwotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50
ZXIoMCwgNCwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB2ZXJ0aWNlcyk7Ci0gICAgICAgIGdsRW5h
YmxlVmVydGV4QXR0cmliQXJyYXkoMCk7Ci0KLSAgICAgICAgZ2xWaWV3cG9ydCgwLCAwLCBtT1NX
aW5kb3ctPmdldFdpZHRoKCksIG1PU1dpbmRvdy0+Z2V0SGVpZ2h0KCkpOwotICAgICAgICBnbENs
ZWFyQ29sb3IoMS4wLCAwLjAsIDAuMCwgMS4wKTsKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9C
VUZGRVJfQklUKTsKLSAgICAgICAgbURyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFKEdMX1RSSUFO
R0xFUywga051bVF1YWRzICogNiwgR0xfVU5TSUdORURfU0hPUlQsIGluZGljZXMuZGF0YSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAwMDApOwotCi0gICAgICAgIGds
RmluaXNoKCk7Ci0gICAgfQotCi0gIHByb3RlY3RlZDoKLSAgICBFR0xEaXNwbGF5IG1EaXNwbGF5
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBFR0xfTk9fRElT
UExBWTsKLSAgICBFR0xTdXJmYWNlIG1XaW5kb3cgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBFR0xfTk9fU1VSRkFDRTsKLSAgICBib29sIG1Jbml0aWFsaXpl
ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBmYWxzZTsK
LSAgICBQRk5HTERSQVdFTEVNRU5UU0lOU1RBTkNFREFOR0xFUFJPQyBtRHJhd0VsZW1lbnRzSW5z
dGFuY2VkQU5HTEUgPSBudWxscHRyOwotCi0gIHByaXZhdGU6Ci0gICAgRUdMQ29udGV4dCBtQ29u
dGV4dCA9IEVHTF9OT19DT05URVhUOwotICAgIEVHTENvbmZpZyBtQ29uZmlnICAgPSAwOwotICAg
IE9TV2luZG93ICptT1NXaW5kb3cgPSBudWxscHRyOwotfTsKLQotLy8gQ2hlY2sgZ2xHZXRHcmFw
aGljc1Jlc2V0U3RhdHVzRVhUIHJldHVybnMgR0xfTk9fRVJST1IgaWYgd2UgZGlkIG5vdGhpbmcK
LVRFU1RfUChFR0xSb2J1c3RuZXNzVGVzdCwgTm9FcnJvckJ5RGVmYXVsdCkKLXsKLSAgICBpZiAo
IW1Jbml0aWFsaXplZCkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgQVNTRVJU
X1RSVUUoZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKCkgPT0gR0xfTk9fRVJST1IpOwotfQot
Ci0vLyBDaGVja3MgdGhhdCB0aGUgYXBwbGljYXRpb24gZ2V0cyBubyBsb3NzIHdpdGggTk9fUkVT
RVRfTk9USUZJQ0FUSU9OCi1URVNUX1AoRUdMUm9idXN0bmVzc1Rlc3QsIERJU0FCTEVEX05vUmVz
ZXROb3RpZmljYXRpb24pCi17Ci0gICAgaWYgKCFtSW5pdGlhbGl6ZWQpCi0gICAgewotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgY3JlYXRlQ29udGV4dChFR0xfTk9fUkVTRVRfTk9USUZJ
Q0FUSU9OX0VYVCk7Ci0KLSAgICBpZiAoIUlzV2luZG93cygpKQotICAgIHsKLSAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIG5vbiBXaW5kb3dzIHBsYXRmb3JtcyBiZWNhdXNl
IGRyaXZlcnMgY2FuJ3QgcmVjb3Zlci4gIgotICAgICAgICAgICAgICAgICAgPDwgIlNlZSAiIDw8
IF9fRklMRV9fIDw8ICI6IiA8PCBfX0xJTkVfXyA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgc3RkOjpjb3V0IDw8ICJDYXVzaW5nIGEgR1BVIHJlc2V0LCBicmFjZSBm
b3IgaW1wYWN0LiIgPDwgc3RkOjplbmRsOwotCi0gICAgZm9yY2VDb250ZXh0UmVzZXQoKTsKLSAg
ICBBU1NFUlRfVFJVRShnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQoKSA9PSBHTF9OT19FUlJP
Uik7Ci19Ci0KLS8vIENoZWNrcyB0aGF0IHJlc2V0dGluZyB0aGUgQU5HTEUgZGlzcGxheSBhbGxv
d3MgdG8gZ2V0IHJpZCBvZiB0aGUgY29udGV4dCBsb3NzLgotLy8gQWxzbyBjaGVja3MgdGhhdCB0
aGUgYXBwbGljYXRpb24gZ2V0cyBub3RpZmllZCBvZiB0aGUgbG9zcyBvZiB0aGUgZGlzcGxheS4K
LS8vIFdlIGNvYWxlc2NlIGJvdGggdGVzdHMgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2YgVERScyBk
b25lIG9uIFdpbmRvd3M6IGJ5IGRlZmF1bHQKLS8vIGhhdmluZyBtb3JlIHRoYW4gNSBURFJzIGlu
IGEgbWludXRlIHdpbGwgY2F1c2UgV2luZG93cyB0byBkaXNhYmxlIHRoZSBHUFUgdW50aWwKLS8v
IHRoZSBjb21wdXRlciBpcyByZWJvb3RlZC4KLVRFU1RfUChFR0xSb2J1c3RuZXNzVGVzdCwgRElT
QUJMRURfUmVzZXR0aW5nRGlzcGxheVdvcmtzKQotewotICAgIGlmICghbUluaXRpYWxpemVkKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNyZWF0ZUNvbnRleHQoRUdMX0xP
U0VfQ09OVEVYVF9PTl9SRVNFVF9FWFQpOwotCi0gICAgaWYgKCFJc1dpbmRvd3MoKSkKLSAgICB7
Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBub24gV2luZG93cyBwbGF0
Zm9ybXMgYmVjYXVzZSBkcml2ZXJzIGNhbid0IHJlY292ZXIuICIKLSAgICAgICAgICAgICAgICAg
IDw8ICJTZWUgIiA8PCBfX0ZJTEVfXyA8PCAiOiIgPDwgX19MSU5FX18gPDwgc3RkOjplbmRsOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHN0ZDo6Y291dCA8PCAiQ2F1c2luZyBhIEdQVSBy
ZXNldCwgYnJhY2UgZm9yIGltcGFjdC4iIDw8IHN0ZDo6ZW5kbDsKLQotICAgIGZvcmNlQ29udGV4
dFJlc2V0KCk7Ci0gICAgQVNTRVJUX1RSVUUoZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKCkg
IT0gR0xfTk9fRVJST1IpOwotCi0gICAgVGVhckRvd24oKTsKLSAgICBTZXRVcCgpOwotICAgIEFT
U0VSVF9UUlVFKGdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCgpID09IEdMX05PX0VSUk9SKTsK
LX0KLQotLy8gVGVzdHMgY2F1c2luZyBHUFUgcmVzZXRzIGFyZSBkaXNhYmxlZCwgdXNlIHRoZSBm
b2xsb3dpbmcgYXJncyB0byBydW4gdGhlbToKLS8vIC0tZ3Rlc3RfYWxzb19ydW5fZGlzYWJsZWRf
dGVzdHMgLS1ndGVzdF9maWx0ZXI9RUdMUm9idXN0bmVzc1Rlc3RcKgotCi0vLyBOb3RlIHRoYXQg
b24gV2luZG93cyB0aGUgT3BlbkdMIGRyaXZlciBmYWlscyBoYXJkIChwb3B1cCB0aGF0IGNsb3Nl
cyB0aGUgYXBwbGljYXRpb24pCi0vLyBpZiB0aGVyZSB3YXMgYSBURFIgY2F1c2VkIGJ5IEQzRCBz
byB3ZSBkb24ndCBydW4gRDNEIHRlc3RzIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlIE9wZW5HTCB0
ZXN0cy4KLSNkZWZpbmUgRDNEX0hBU19QUklPUklUWSAxCi0jaWYgRDNEX0hBU19QUklPUklUWSAm
JiAoZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNEOSkgfHwgZGVmaW5lZChBTkdMRV9FTkFCTEVfRDNE
MTEpKQotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChFR0xSb2J1c3RuZXNzVGVzdCwgRVMyX0QzRDko
KSwgRVMyX0QzRDExKCkpOwotI2Vsc2UKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRUdMUm9idXN0
bmVzc1Rlc3QsIEVTMl9PUEVOR0woKSk7Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMU2FuaXR5Q2hlY2tUZXN0LmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMU2FuaXR5Q2hl
Y2tUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkyZjliYzE2OGYuLjAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVz
dHMvRUdMU2FuaXR5Q2hlY2tUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAK
LS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KLS8vCi0KLS8vIEVHTFNhbml0eUNoZWNrVGVzdC5jcHA6Ci0vLyAgICAgIHRlc3RzIHVz
ZWQgdG8gY2hlY2sgc2V0dXAgaW4gd2hpY2ggdGVzdHMgYXJlIHJ1bi4KLQotI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+Ci0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi0vLyBD
aGVja3MgdGhlIHRlc3RzIGFyZSBydW5uaW5nIGFnYWluc3QgQU5HTEUKLVRFU1QoRUdMU2FuaXR5
Q2hlY2tUZXN0LCBJc1J1bm5pbmdPbkFOR0xFKQotewotICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lv
blN0cmluZyA9Ci0gICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIgKj4oZWdsUXVlcnlTdHJp
bmcoRUdMX05PX0RJU1BMQVksIEVHTF9FWFRFTlNJT05TKSk7Ci0gICAgQVNTRVJUX05FKHN0cnN0
cihleHRlbnNpb25TdHJpbmcsICJFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGUiKSwgbnVsbHB0cik7
Ci19Ci0KLS8vIENoZWNrcyB0aGF0IGdldHRpbmcgZnVuY3Rpb24gcG9pbnRlciB3b3JrcwotVEVT
VChFR0xTYW5pdHlDaGVja1Rlc3QsIEhhc0dldFBsYXRmb3JtRGlzcGxheUVYVCkKLXsKLSAgICBQ
Rk5FR0xHRVRQTEFURk9STURJU1BMQVlFWFRQUk9DIGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCA9
Ci0gICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMR0VUUExBVEZPUk1ESVNQTEFZRVhUUFJP
Qz4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZWdsR2V0UGxhdGZvcm1EaXNwbGF5
RVhUIikpOwotCi0gICAgQVNTRVJUX05FKGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVCwgbnVsbHB0
cik7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWds
X3Rlc3RzL0VHTFN0cmVhbVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2VnbF90ZXN0cy9FR0xTdHJlYW1UZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYjY2N2NmNzc4NWMuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMU3RyZWFtVGVzdC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSw1NDcgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIEVHTFN0cmVhbVRlc3Q6Ci0vLyAgIFRlc3Rz
IHBlcnRhaW5pbmcgdG8gZWdsOjpTdHJlYW0uCi0vLwotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3Qu
aD4KLQotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgIm1lZGlhL3l1dnRlc3QuaW5sIgot
I2luY2x1ZGUgIk9TV2luZG93LmgiCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIK
LQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3MgRUdMU3Ry
ZWFtVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIEVHTFN0cmVh
bVRlc3QoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0
V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAg
IHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0g
ICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRz
KDI0KTsKLSAgICB9Ci19OwotCi0vLyBUZXN0cyB2YWxpZGF0aW9uIG9mIHRoZSBzdHJlYW0gQVBJ
Ci1URVNUX1AoRUdMU3RyZWFtVGVzdCwgU3RyZWFtVmFsaWRhdGlvblRlc3QpCi17Ci0gICAgRUdM
V2luZG93ICp3aW5kb3cgICAgICAgICAgICA9IGdldEVHTFdpbmRvdygpOwotICAgIEVHTERpc3Bs
YXkgZGlzcGxheSAgICAgICAgICAgPSB3aW5kb3ctPmdldERpc3BsYXkoKTsKLSAgICBjb25zdCBj
aGFyICpleHRlbnNpb25zU3RyaW5nID0gZWdsUXVlcnlTdHJpbmcoZGlzcGxheSwgRUdMX0VYVEVO
U0lPTlMpOwotICAgIGlmIChzdHJzdHIoZXh0ZW5zaW9uc1N0cmluZywgIkVHTF9LSFJfc3RyZWFt
IikgPT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiU3RyZWFtIGV4dGVu
c2lvbiBub3Qgc3VwcG9ydGVkIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBjb25zdCBFR0xpbnQgc3RyZWFtQXR0cmlidXRlc0JhZFtdID0gewotICAgICAgICBF
R0xfU1RSRUFNX1NUQVRFX0tIUiwKLSAgICAgICAgMCwKLSAgICAgICAgRUdMX05PTkUsCi0gICAg
ICAgIEVHTF9QUk9EVUNFUl9GUkFNRV9LSFIsCi0gICAgICAgIDAsCi0gICAgICAgIEVHTF9OT05F
LAotICAgICAgICBFR0xfQ09OU1VNRVJfRlJBTUVfS0hSLAotICAgICAgICAwLAotICAgICAgICBF
R0xfTk9ORSwKLSAgICAgICAgRUdMX0NPTlNVTUVSX0xBVEVOQ1lfVVNFQ19LSFIsCi0gICAgICAg
IC0xLAotICAgICAgICBFR0xfTk9ORSwKLSAgICAgICAgRUdMX1JFRF9TSVpFLAotICAgICAgICBF
R0xfRE9OVF9DQVJFLAotICAgICAgICBFR0xfTk9ORSwKLSAgICB9OwotCi0gICAgLy8gVmFsaWRh
dGUgY3JlYXRlIHN0cmVhbSBhdHRyaWJ1dGVzCi0gICAgRUdMU3RyZWFtS0hSIHN0cmVhbSA9IGVn
bENyZWF0ZVN0cmVhbUtIUihkaXNwbGF5LCAmc3RyZWFtQXR0cmlidXRlc0JhZFswXSk7Ci0gICAg
QVNTRVJUX0VHTF9FUlJPUihFR0xfQkFEX0FDQ0VTUyk7Ci0gICAgQVNTRVJUX0VRKEVHTF9OT19T
VFJFQU1fS0hSLCBzdHJlYW0pOwotCi0gICAgc3RyZWFtID0gZWdsQ3JlYXRlU3RyZWFtS0hSKGRp
c3BsYXksICZzdHJlYW1BdHRyaWJ1dGVzQmFkWzNdKTsKLSAgICBBU1NFUlRfRUdMX0VSUk9SKEVH
TF9CQURfQUNDRVNTKTsKLSAgICBBU1NFUlRfRVEoRUdMX05PX1NUUkVBTV9LSFIsIHN0cmVhbSk7
Ci0KLSAgICBzdHJlYW0gPSBlZ2xDcmVhdGVTdHJlYW1LSFIoZGlzcGxheSwgJnN0cmVhbUF0dHJp
YnV0ZXNCYWRbNl0pOwotICAgIEFTU0VSVF9FR0xfRVJST1IoRUdMX0JBRF9BQ0NFU1MpOwotICAg
IEFTU0VSVF9FUShFR0xfTk9fU1RSRUFNX0tIUiwgc3RyZWFtKTsKLQotICAgIHN0cmVhbSA9IGVn
bENyZWF0ZVN0cmVhbUtIUihkaXNwbGF5LCAmc3RyZWFtQXR0cmlidXRlc0JhZFs5XSk7Ci0gICAg
QVNTRVJUX0VHTF9FUlJPUihFR0xfQkFEX1BBUkFNRVRFUik7Ci0gICAgQVNTRVJUX0VRKEVHTF9O
T19TVFJFQU1fS0hSLCBzdHJlYW0pOwotCi0gICAgc3RyZWFtID0gZWdsQ3JlYXRlU3RyZWFtS0hS
KGRpc3BsYXksICZzdHJlYW1BdHRyaWJ1dGVzQmFkWzEyXSk7Ci0gICAgQVNTRVJUX0VHTF9FUlJP
UihFR0xfQkFEX0FUVFJJQlVURSk7Ci0gICAgQVNTRVJUX0VRKEVHTF9OT19TVFJFQU1fS0hSLCBz
dHJlYW0pOwotCi0gICAgY29uc3QgRUdMaW50IHN0cmVhbUF0dHJpYnV0ZXNbXSA9IHsKLSAgICAg
ICAgRUdMX0NPTlNVTUVSX0xBVEVOQ1lfVVNFQ19LSFIsIDAsIEVHTF9OT05FLAotICAgIH07Ci0K
LSAgICBzdHJlYW0gPSBlZ2xDcmVhdGVTdHJlYW1LSFIoRUdMX05PX0RJU1BMQVksIHN0cmVhbUF0
dHJpYnV0ZXMpOwotICAgIEFTU0VSVF9FR0xfRVJST1IoRUdMX0JBRF9ESVNQTEFZKTsKLSAgICBB
U1NFUlRfRVEoRUdMX05PX1NUUkVBTV9LSFIsIHN0cmVhbSk7Ci0KLSAgICAvLyBDcmVhdGUgYW4g
YWN0dWFsIHN0cmVhbQotICAgIHN0cmVhbSA9IGVnbENyZWF0ZVN0cmVhbUtIUihkaXNwbGF5LCBz
dHJlYW1BdHRyaWJ1dGVzKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLSAgICBBU1NFUlRf
TkUoRUdMX05PX1NUUkVBTV9LSFIsIHN0cmVhbSk7Ci0KLSAgICAvLyBBc3NlcnQgaXQgaXMgaW4g
dGhlIGNyZWF0ZWQgc3RhdGUKLSAgICBFR0xpbnQgc3RhdGU7Ci0gICAgZWdsUXVlcnlTdHJlYW1L
SFIoZGlzcGxheSwgc3RyZWFtLCBFR0xfU1RSRUFNX1NUQVRFX0tIUiwgJnN0YXRlKTsKLSAgICBB
U1NFUlRfRUdMX1NVQ0NFU1MoKTsKLSAgICBBU1NFUlRfRVEoRUdMX1NUUkVBTV9TVEFURV9DUkVB
VEVEX0tIUiwgc3RhdGUpOwotCi0gICAgLy8gVGVzdCBnZXR0aW5nIGFuZCBzZXR0aW5nIHRoZSBs
YXRlbmN5Ci0gICAgRUdMaW50IGxhdGVuY3kgPSAxMDsKLSAgICBlZ2xTdHJlYW1BdHRyaWJLSFIo
ZGlzcGxheSwgc3RyZWFtLCBFR0xfQ09OU1VNRVJfTEFURU5DWV9VU0VDX0tIUiwgbGF0ZW5jeSk7
Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0gICAgZWdsUXVlcnlTdHJlYW1LSFIoZGlzcGxh
eSwgc3RyZWFtLCBFR0xfQ09OU1VNRVJfTEFURU5DWV9VU0VDX0tIUiwgJmxhdGVuY3kpOwotICAg
IEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotICAgIEFTU0VSVF9FUSgxMCwgbGF0ZW5jeSk7Ci0gICAg
ZWdsU3RyZWFtQXR0cmliS0hSKGRpc3BsYXksIHN0cmVhbSwgRUdMX0NPTlNVTUVSX0xBVEVOQ1lf
VVNFQ19LSFIsIC0xKTsKLSAgICBBU1NFUlRfRUdMX0VSUk9SKEVHTF9CQURfUEFSQU1FVEVSKTsK
LSAgICBBU1NFUlRfRVEoMTAsIGxhdGVuY3kpOwotCi0gICAgLy8gVGVzdCB0aGUgNjQtYml0IHF1
ZXJpZXMKLSAgICBFR0x1aW50NjRLSFIgdmFsdWU7Ci0gICAgZWdsUXVlcnlTdHJlYW11NjRLSFIo
ZGlzcGxheSwgc3RyZWFtLCBFR0xfQ09OU1VNRVJfRlJBTUVfS0hSLCAmdmFsdWUpOwotICAgIEFT
U0VSVF9FR0xfU1VDQ0VTUygpOwotICAgIGVnbFF1ZXJ5U3RyZWFtdTY0S0hSKGRpc3BsYXksIHN0
cmVhbSwgRUdMX1BST0RVQ0VSX0ZSQU1FX0tIUiwgJnZhbHVlKTsKLSAgICBBU1NFUlRfRUdMX1NV
Q0NFU1MoKTsKLQotICAgIC8vIERlc3Ryb3kgdGhlIHN0cmVhbQotICAgIGVnbERlc3Ryb3lTdHJl
YW1LSFIoZGlzcGxheSwgc3RyZWFtKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLX0KLQot
Ly8gVGVzdHMgdmFsaWRhdGlvbiBvZiBzdHJlYW0gY29uc3VtZXIgZ2x0ZXh0dXJlIEFQSQotVEVT
VF9QKEVHTFN0cmVhbVRlc3QsIFN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlVmFsaWRhdGlvblRlc3Qp
Ci17Ci0gICAgRUdMV2luZG93ICp3aW5kb3cgICAgICAgICAgICA9IGdldEVHTFdpbmRvdygpOwot
ICAgIEVHTERpc3BsYXkgZGlzcGxheSAgICAgICAgICAgPSB3aW5kb3ctPmdldERpc3BsYXkoKTsK
LSAgICBjb25zdCBjaGFyICpleHRlbnNpb25zU3RyaW5nID0gZWdsUXVlcnlTdHJpbmcoZGlzcGxh
eSwgRUdMX0VYVEVOU0lPTlMpOwotICAgIGlmIChzdHJzdHIoZXh0ZW5zaW9uc1N0cmluZywgIkVH
TF9LSFJfc3RyZWFtX2NvbnN1bWVyX2dsdGV4dHVyZSIpID09IG51bGxwdHIpCi0gICAgewotICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlN0cmVhbSBjb25zdW1lciBnbHRleHR1cmUgZXh0ZW5zaW9uIG5v
dCBzdXBwb3J0ZWQiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGNvbnN0IEVHTGludCBzdHJlYW1BdHRyaWJ1dGVzW10gPSB7Ci0gICAgICAgIEVHTF9DT05TVU1F
Ul9MQVRFTkNZX1VTRUNfS0hSLCAwLCBFR0xfQ09OU1VNRVJfQUNRVUlSRV9USU1FT1VUX1VTRUNf
S0hSLCAwLCBFR0xfTk9ORSwKLSAgICB9OwotCi0gICAgRUdMU3RyZWFtS0hSIHN0cmVhbSA9IGVn
bENyZWF0ZVN0cmVhbUtIUihkaXNwbGF5LCBzdHJlYW1BdHRyaWJ1dGVzKTsKLSAgICBBU1NFUlRf
RUdMX1NVQ0NFU1MoKTsKLQotICAgIEVHTEJvb2xlYW4gcmVzdWx0ID0gZWdsU3RyZWFtQ29uc3Vt
ZXJHTFRleHR1cmVFeHRlcm5hbEtIUihkaXNwbGF5LCBzdHJlYW0pOwotICAgIEFTU0VSVF9FR0xf
RkFMU0UocmVzdWx0KTsKLSAgICBBU1NFUlRfRUdMX0VSUk9SKEVHTF9CQURfQUNDRVNTKTsKLQot
ICAgIEdMdWludCB0ZXg7Ci0gICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4KTsKLSAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCB0ZXgpOwotICAgIHJlc3VsdCA9IGVnbFN0
cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWxLSFIoZGlzcGxheSwgc3RyZWFtKTsKLSAgICBB
U1NFUlRfRUdMX1RSVUUocmVzdWx0KTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAg
IEVHTGludCBzdGF0ZTsKLSAgICBlZ2xRdWVyeVN0cmVhbUtIUihkaXNwbGF5LCBzdHJlYW0sIEVH
TF9TVFJFQU1fU1RBVEVfS0hSLCAmc3RhdGUpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwot
ICAgIEFTU0VSVF9FUShFR0xfU1RSRUFNX1NUQVRFX0NPTk5FQ1RJTkdfS0hSLCBzdGF0ZSk7Ci0K
LSAgICBlZ2xEZXN0cm95U3RyZWFtS0hSKGRpc3BsYXksIHN0cmVhbSk7Ci0gICAgQVNTRVJUX0VH
TF9TVUNDRVNTKCk7Ci19Ci0KLS8vIFRlc3RzIHZhbGlkYXRpb24gb2Ygc3RyZWFtIGNvbnN1bWVy
IGdsdGV4dHVyZSB5dXYgQVBJCi1URVNUX1AoRUdMU3RyZWFtVGVzdCwgU3RyZWFtQ29uc3VtZXJH
TFRleHR1cmVZVVZWYWxpZGF0aW9uVGVzdCkKLXsKLSAgICBFR0xXaW5kb3cgKndpbmRvdyAgICAg
ICAgICAgID0gZ2V0RUdMV2luZG93KCk7Ci0gICAgRUdMRGlzcGxheSBkaXNwbGF5ICAgICAgICAg
ICA9IHdpbmRvdy0+Z2V0RGlzcGxheSgpOwotICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvbnNTdHJp
bmcgPSBlZ2xRdWVyeVN0cmluZyhkaXNwbGF5LCBFR0xfRVhURU5TSU9OUyk7Ci0gICAgaWYgKHN0
cnN0cihleHRlbnNpb25zU3RyaW5nLCAiRUdMX05WX3N0cmVhbV9jb25zdW1lcl9nbHRleHR1cmVf
eXV2IikgPT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiU3RyZWFtIGNv
bnN1bWVyIGdsdGV4dHVyZSB5dXYgZXh0ZW5zaW9uIG5vdCBzdXBwb3J0ZWQiIDw8IHN0ZDo6ZW5k
bDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0IEVHTGludCBzdHJlYW1BdHRy
aWJ1dGVzW10gPSB7Ci0gICAgICAgIEVHTF9DT05TVU1FUl9MQVRFTkNZX1VTRUNfS0hSLCAwLCBF
R0xfQ09OU1VNRVJfQUNRVUlSRV9USU1FT1VUX1VTRUNfS0hSLCAwLCBFR0xfTk9ORSwKLSAgICB9
OwotCi0gICAgRUdMU3RyZWFtS0hSIHN0cmVhbSA9IGVnbENyZWF0ZVN0cmVhbUtIUihkaXNwbGF5
LCBzdHJlYW1BdHRyaWJ1dGVzKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgIEVH
TEF0dHJpYiBjb25zdW1lckF0dHJpYnV0ZXNCYWRbXSA9IHsKLSAgICAgICAgRUdMX0NPTE9SX0JV
RkZFUl9UWVBFLAotICAgICAgICBFR0xfWVVWX0JVRkZFUl9FWFQsICAvLyAwCi0gICAgICAgIEVH
TF9ZVVZfTlVNQkVSX09GX1BMQU5FU19FWFQsCi0gICAgICAgIDAsCi0gICAgICAgIEVHTF9OT05F
LAotICAgICAgICBFR0xfQ09MT1JfQlVGRkVSX1RZUEUsCi0gICAgICAgIEVHTF9ZVVZfQlVGRkVS
X0VYVCwgIC8vIDUKLSAgICAgICAgRUdMX1lVVl9OVU1CRVJfT0ZfUExBTkVTX0VYVCwKLSAgICAg
ICAgMSwKLSAgICAgICAgRUdMX05PTkUsCi0gICAgICAgIEVHTF9DT0xPUl9CVUZGRVJfVFlQRSwK
LSAgICAgICAgRUdMX1lVVl9CVUZGRVJfRVhULCAgLy8gMTAKLSAgICAgICAgRUdMX1lVVl9OVU1C
RVJfT0ZfUExBTkVTX0VYVCwKLSAgICAgICAgMSwKLSAgICAgICAgRUdMX1lVVl9QTEFORTBfVEVY
VFVSRV9VTklUX05WLAotICAgICAgICA5OTk5LAotICAgICAgICBFR0xfTk9ORSwKLSAgICAgICAg
RUdMX0NPTE9SX0JVRkZFUl9UWVBFLAotICAgICAgICBFR0xfWVVWX0JVRkZFUl9FWFQsICAvLyAx
NwotICAgICAgICBFR0xfWVVWX05VTUJFUl9PRl9QTEFORVNfRVhULAotICAgICAgICAxLAotICAg
ICAgICBFR0xfWVVWX1BMQU5FMF9URVhUVVJFX1VOSVRfTlYsCi0gICAgICAgIDAsCi0gICAgICAg
IEVHTF9ZVVZfUExBTkUxX1RFWFRVUkVfVU5JVF9OViwKLSAgICAgICAgMSwKLSAgICAgICAgRUdM
X05PTkUsCi0gICAgICAgIEVHTF9DT0xPUl9CVUZGRVJfVFlQRSwKLSAgICAgICAgRUdMX1lVVl9C
VUZGRVJfRVhULCAgLy8gMjYKLSAgICAgICAgRUdMX1lVVl9OVU1CRVJfT0ZfUExBTkVTX0VYVCwK
LSAgICAgICAgMiwKLSAgICAgICAgRUdMX1lVVl9QTEFORTBfVEVYVFVSRV9VTklUX05WLAotICAg
ICAgICAwLAotICAgICAgICBFR0xfWVVWX1BMQU5FMV9URVhUVVJFX1VOSVRfTlYsCi0gICAgICAg
IDAsCi0gICAgICAgIEVHTF9OT05FLAotICAgIH07Ci0KLSAgICBFR0xBdHRyaWIgY29uc3VtZXJB
dHRyaWJ1dGVzW10gPSB7Ci0gICAgICAgIEVHTF9DT0xPUl9CVUZGRVJfVFlQRSwKLSAgICAgICAg
RUdMX1lVVl9CVUZGRVJfRVhULAotICAgICAgICBFR0xfWVVWX05VTUJFUl9PRl9QTEFORVNfRVhU
LAotICAgICAgICAyLAotICAgICAgICBFR0xfWVVWX1BMQU5FMF9URVhUVVJFX1VOSVRfTlYsCi0g
ICAgICAgIDAsCi0gICAgICAgIEVHTF9ZVVZfUExBTkUxX1RFWFRVUkVfVU5JVF9OViwKLSAgICAg
ICAgMSwKLSAgICAgICAgRUdMX05PTkUsCi0gICAgfTsKLQotICAgIEVHTEJvb2xlYW4gcmVzdWx0
ID0KLSAgICAgICAgZWdsU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVFeHRlcm5hbEF0dHJpYnNOVihk
aXNwbGF5LCBzdHJlYW0sICZjb25zdW1lckF0dHJpYnV0ZXNCYWRbMF0pOwotICAgIEFTU0VSVF9F
R0xfRkFMU0UocmVzdWx0KTsKLSAgICBBU1NFUlRfRUdMX0VSUk9SKEVHTF9CQURfTUFUQ0gpOwot
Ci0gICAgcmVzdWx0ID0KLSAgICAgICAgZWdsU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVFeHRlcm5h
bEF0dHJpYnNOVihkaXNwbGF5LCBzdHJlYW0sICZjb25zdW1lckF0dHJpYnV0ZXNCYWRbNV0pOwot
ICAgIEFTU0VSVF9FR0xfRkFMU0UocmVzdWx0KTsKLSAgICBBU1NFUlRfRUdMX0VSUk9SKEVHTF9C
QURfTUFUQ0gpOwotCi0gICAgcmVzdWx0ID0KLSAgICAgICAgZWdsU3RyZWFtQ29uc3VtZXJHTFRl
eHR1cmVFeHRlcm5hbEF0dHJpYnNOVihkaXNwbGF5LCBzdHJlYW0sICZjb25zdW1lckF0dHJpYnV0
ZXNCYWRbMTBdKTsKLSAgICBBU1NFUlRfRUdMX0ZBTFNFKHJlc3VsdCk7Ci0gICAgQVNTRVJUX0VH
TF9FUlJPUihFR0xfQkFEX0FDQ0VTUyk7Ci0KLSAgICByZXN1bHQgPQotICAgICAgICBlZ2xTdHJl
YW1Db25zdW1lckdMVGV4dHVyZUV4dGVybmFsQXR0cmlic05WKGRpc3BsYXksIHN0cmVhbSwgJmNv
bnN1bWVyQXR0cmlidXRlc0JhZFsxN10pOwotICAgIEFTU0VSVF9FR0xfRkFMU0UocmVzdWx0KTsK
LSAgICBBU1NFUlRfRUdMX0VSUk9SKEVHTF9CQURfTUFUQ0gpOwotCi0gICAgcmVzdWx0ID0gZWds
U3RyZWFtQ29uc3VtZXJHTFRleHR1cmVFeHRlcm5hbEF0dHJpYnNOVihkaXNwbGF5LCBzdHJlYW0s
IGNvbnN1bWVyQXR0cmlidXRlcyk7Ci0gICAgQVNTRVJUX0VHTF9GQUxTRShyZXN1bHQpOwotICAg
IEFTU0VSVF9FR0xfRVJST1IoRUdMX0JBRF9BQ0NFU1MpOwotCi0gICAgR0x1aW50IHRleFsyXTsK
LSAgICBnbEdlblRleHR1cmVzKDIsIHRleCk7Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRV
UkUwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCB0ZXhbMF0p
OwotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFX0VYVEVSTkFMX09FUywgdGV4WzFdKTsKLQotICAgIHJlc3VsdCA9Ci0gICAgICAg
IGVnbFN0cmVhbUNvbnN1bWVyR0xUZXh0dXJlRXh0ZXJuYWxBdHRyaWJzTlYoZGlzcGxheSwgc3Ry
ZWFtLCAmY29uc3VtZXJBdHRyaWJ1dGVzQmFkWzI2XSk7Ci0gICAgQVNTRVJUX0VHTF9GQUxTRShy
ZXN1bHQpOwotICAgIEFTU0VSVF9FR0xfRVJST1IoRUdMX0JBRF9BQ0NFU1MpOwotCi0gICAgcmVz
dWx0ID0gZWdsU3RyZWFtQ29uc3VtZXJHTFRleHR1cmVFeHRlcm5hbEF0dHJpYnNOVihkaXNwbGF5
LCBzdHJlYW0sIGNvbnN1bWVyQXR0cmlidXRlcyk7Ci0gICAgQVNTRVJUX0VHTF9UUlVFKHJlc3Vs
dCk7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBFR0xpbnQgc3RhdGU7Ci0gICAg
ZWdsUXVlcnlTdHJlYW1LSFIoZGlzcGxheSwgc3RyZWFtLCBFR0xfU1RSRUFNX1NUQVRFX0tIUiwg
JnN0YXRlKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLSAgICBBU1NFUlRfRVEoRUdMX1NU
UkVBTV9TVEFURV9DT05ORUNUSU5HX0tIUiwgc3RhdGUpOwotCi0gICAgZWdsRGVzdHJveVN0cmVh
bUtIUihkaXNwbGF5LCBzdHJlYW0pOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotfQotCi0v
LyBUZXN0cyB0aGF0IGRlbGV0aW5nIGEgdGV4dHVyZSBpbnZhbGlkYXRlcyB0aGUgYXNzb2NpYXRl
ZCBzdHJlYW0KLVRFU1RfUChFR0xTdHJlYW1UZXN0LCBTdHJlYW1Db25zdW1lckdMVGV4dHVyZVlV
VkRlbGV0aW9uVGVzdCkKLXsKLSAgICBFR0xXaW5kb3cgKndpbmRvdyAgICAgICAgICAgID0gZ2V0
RUdMV2luZG93KCk7Ci0gICAgRUdMRGlzcGxheSBkaXNwbGF5ICAgICAgICAgICA9IHdpbmRvdy0+
Z2V0RGlzcGxheSgpOwotICAgIGNvbnN0IGNoYXIgKmV4dGVuc2lvbnNTdHJpbmcgPSBlZ2xRdWVy
eVN0cmluZyhkaXNwbGF5LCBFR0xfRVhURU5TSU9OUyk7Ci0gICAgaWYgKHN0cnN0cihleHRlbnNp
b25zU3RyaW5nLCAiRUdMX0FOR0xFX3N0cmVhbV9wcm9kdWNlcl9kM2RfdGV4dHVyZV9udjEyIikg
PT0gbnVsbHB0cikKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiU3RyZWFtIHByb2R1Y2Vy
IGQzZCBudjEyIHRleHR1cmUgbm90IHN1cHBvcnRlZCIgPDwgc3RkOjplbmRsOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgY29uc3QgRUdMaW50IHN0cmVhbUF0dHJpYnV0ZXNbXSA9IHsK
LSAgICAgICAgRUdMX0NPTlNVTUVSX0xBVEVOQ1lfVVNFQ19LSFIsIDAsIEVHTF9DT05TVU1FUl9B
Q1FVSVJFX1RJTUVPVVRfVVNFQ19LSFIsIDAsIEVHTF9OT05FLAotICAgIH07Ci0KLSAgICBFR0xT
dHJlYW1LSFIgc3RyZWFtID0gZWdsQ3JlYXRlU3RyZWFtS0hSKGRpc3BsYXksIHN0cmVhbUF0dHJp
YnV0ZXMpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgRUdMQXR0cmliIGNvbnN1
bWVyQXR0cmlidXRlc1tdID0gewotICAgICAgICBFR0xfQ09MT1JfQlVGRkVSX1RZUEUsCi0gICAg
ICAgIEVHTF9ZVVZfQlVGRkVSX0VYVCwKLSAgICAgICAgRUdMX1lVVl9OVU1CRVJfT0ZfUExBTkVT
X0VYVCwKLSAgICAgICAgMiwKLSAgICAgICAgRUdMX1lVVl9QTEFORTBfVEVYVFVSRV9VTklUX05W
LAotICAgICAgICAwLAotICAgICAgICBFR0xfWVVWX1BMQU5FMV9URVhUVVJFX1VOSVRfTlYsCi0g
ICAgICAgIDEsCi0gICAgICAgIEVHTF9OT05FLAotICAgIH07Ci0KLSAgICBHTHVpbnQgdGV4WzJd
OwotICAgIGdsR2VuVGV4dHVyZXMoMiwgdGV4KTsKLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVY
VFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIHRleFsw
XSk7Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUxKTsKLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCB0ZXhbMV0pOwotCi0gICAgRUdMQm9vbGVhbiByZXN1
bHQgPQotICAgICAgICBlZ2xTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dGVybmFsQXR0cmlic05W
KGRpc3BsYXksIHN0cmVhbSwgY29uc3VtZXJBdHRyaWJ1dGVzKTsKLSAgICBBU1NFUlRfRUdMX1RS
VUUocmVzdWx0KTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgIEVHTEF0dHJpYiBw
cm9kdWNlckF0dHJpYnV0ZXNbXSA9IHsKLSAgICAgICAgRUdMX05PTkUsCi0gICAgfTsKLQotICAg
IHJlc3VsdCA9IGVnbENyZWF0ZVN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5WMTJBTkdMRShkaXNw
bGF5LCBzdHJlYW0sIHByb2R1Y2VyQXR0cmlidXRlcyk7Ci0gICAgQVNTRVJUX0VHTF9UUlVFKHJl
c3VsdCk7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBFR0xpbnQgc3RhdGU7Ci0g
ICAgZWdsUXVlcnlTdHJlYW1LSFIoZGlzcGxheSwgc3RyZWFtLCBFR0xfU1RSRUFNX1NUQVRFX0tI
UiwgJnN0YXRlKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLSAgICBBU1NFUlRfRVEoRUdM
X1NUUkVBTV9TVEFURV9FTVBUWV9LSFIsIHN0YXRlKTsKLQotICAgIC8vIERlbGV0ZSB0aGUgZmly
c3QgdGV4dHVyZSwgd2hpY2ggc2hvdWxkIGJlIGVub3VnaCB0byBpbnZhbGlkYXRlIHRoZSBzdHJl
YW0KLSAgICBnbERlbGV0ZVRleHR1cmVzKDEsIHRleCk7Ci0KLSAgICBlZ2xRdWVyeVN0cmVhbUtI
UihkaXNwbGF5LCBzdHJlYW0sIEVHTF9TVFJFQU1fU1RBVEVfS0hSLCAmc3RhdGUpOwotICAgIEFT
U0VSVF9FR0xfU1VDQ0VTUygpOwotICAgIEFTU0VSVF9FUShFR0xfU1RSRUFNX1NUQVRFX0RJU0NP
Tk5FQ1RFRF9LSFIsIHN0YXRlKTsKLQotICAgIGVnbERlc3Ryb3lTdHJlYW1LSFIoZGlzcGxheSwg
c3RyZWFtKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLX0KLQotLy8gRW5kMmVuZCB0ZXN0
IGZvciByZW5kZXJpbmcgYW4gTlYxMiB0ZXh0dXJlLiBSZW5kZXJzIGEgWVVWIHF1YWQsIHJlYWRz
IGJhY2sgdGhlIFJHQiB2YWx1ZXMsIGFuZAotLy8gZW5zdXJlcyB0aGV5IGFyZSBjb3JyZWN0Ci1U
RVNUX1AoRUdMU3RyZWFtVGVzdCwgU3RyZWFtUHJvZHVjZXJUZXh0dXJlTlYxMkVuZDJFbmQpCi17
Ci0gICAgRUdMV2luZG93ICp3aW5kb3cgICAgICAgICAgICA9IGdldEVHTFdpbmRvdygpOwotICAg
IEVHTERpc3BsYXkgZGlzcGxheSAgICAgICAgICAgPSB3aW5kb3ctPmdldERpc3BsYXkoKTsKLSAg
ICBpZiAoIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKGRpc3BsYXksICJFR0xfQU5HTEVfc3Ry
ZWFtX3Byb2R1Y2VyX2QzZF90ZXh0dXJlX252MTIiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291
dCA8PCAiU3RyZWFtIHByb2R1Y2VyIGQzZCBudjEyIHRleHR1cmUgbm90IHN1cHBvcnRlZCIgPDwg
c3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYm9vbCB1c2VFU1NMM1No
YWRlcnMgPQotICAgICAgICBnZXRDbGllbnRNYWpvclZlcnNpb24oKSA+PSAzICYmIGV4dGVuc2lv
bkVuYWJsZWQoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMiKTsKLQotICAgIC8vIHl1
diB0byByZ2IgY29udmVyc2lvbiBzaGFkZXIgdXNpbmcgTWljcm9zb2Z0J3MgZ2l2ZW4gY29udmVy
c2lvbiBmb3JtdWxhcwotICAgIHN0ZDo6c3RyaW5nIHl1dlZTLCB5dXZQUzsKLSAgICBpZiAodXNl
RVNTTDNTaGFkZXJzKQotICAgIHsKLSAgICAgICAgeXV2VlMgPQotICAgICAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIgotICAgICAgICAgICAgImluIGhpZ2hwIHZlYzQgcG9zaXRpb247XG4iCi0g
ICAgICAgICAgICAib3V0IHZlYzIgdGV4Y29vcmQ7XG4iCi0gICAgICAgICAgICAidm9pZCBtYWlu
KHZvaWQpXG4iCi0gICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlv
biA9IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgIiAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54
eSAqIDAuNSkgKyAwLjU7XG4iCi0gICAgICAgICAgICAiICAgIHRleGNvb3JkLnkgPSAxLjAgLSB0
ZXhjb29yZC55O1xuIgotICAgICAgICAgICAgIn1cbiI7Ci0gICAgICAgIHl1dlBTID0KLSAgICAg
ICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgICAgICIjZXh0ZW5zaW9uIEdMX09F
U19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMgOiByZXF1aXJlXG4iCi0gICAgICAgICAgICAiI2V4
dGVuc2lvbiBHTF9OVl9FR0xfc3RyZWFtX2NvbnN1bWVyX2V4dGVybmFsIDogcmVxdWlyZVxuIgot
ICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAgICAgICJpbiB2
ZWMyIHRleGNvb3JkO1xuIgotICAgICAgICAgICAgIm91dCB2ZWM0IGNvbG9yO1xuIgotICAgICAg
ICAgICAgInVuaWZvcm0gc2FtcGxlckV4dGVybmFsT0VTIHk7XG4iCi0gICAgICAgICAgICAidW5p
Zm9ybSBzYW1wbGVyRXh0ZXJuYWxPRVMgdXZcbjsiCi0gICAgICAgICAgICAidm9pZCBtYWluKHZv
aWQpXG4iCi0gICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgICBmbG9hdCBjID0gdGV4
dHVyZSh5LCB0ZXhjb29yZCkuciAtICgxNi4wIC8gMjU2LjApO1xuIgotICAgICAgICAgICAgIiAg
ICBmbG9hdCBkID0gdGV4dHVyZSh1diwgdGV4Y29vcmQpLnIgLSAwLjU7XG4iCi0gICAgICAgICAg
ICAiICAgIGZsb2F0IGUgPSB0ZXh0dXJlKHV2LCB0ZXhjb29yZCkuZyAtIDAuNTtcbiIKLSAgICAg
ICAgICAgICIgICAgZmxvYXQgciA9IDEuMTY0MzgzICogYyArIDEuNTk2MDI3ICogZTtcbiIKLSAg
ICAgICAgICAgICIgICAgZmxvYXQgZyA9IDEuMTY0MzgzICogYyAtIDAuMzkxNzYyICogZCAtIDAu
ODEyOTY4ICogZTtcbiIKLSAgICAgICAgICAgICIgICAgZmxvYXQgYiA9IDEuMTY0MzgzICogYyAr
IDIuMDE3MjMyICogZDtcbiIKLSAgICAgICAgICAgICIgICAgY29sb3IgPSB2ZWM0KHIsIGcsIGIs
IDEuMCk7XG4iCi0gICAgICAgICAgICAifVxuIjsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAg
ICAgICAgeXV2VlMgPQotICAgICAgICAgICAgImF0dHJpYnV0ZSBoaWdocCB2ZWM0IHBvc2l0aW9u
O1xuIgotICAgICAgICAgICAgInZhcnlpbmcgdmVjMiB0ZXhjb29yZDtcbiIKLSAgICAgICAgICAg
ICJ2b2lkIG1haW4odm9pZClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAg
IGdsX1Bvc2l0aW9uID0gcG9zaXRpb247XG4iCi0gICAgICAgICAgICAiICAgIHRleGNvb3JkID0g
KHBvc2l0aW9uLnh5ICogMC41KSArIDAuNTtcbiIKLSAgICAgICAgICAgICIgICAgdGV4Y29vcmQu
eSA9IDEuMCAtIHRleGNvb3JkLnk7XG4iCi0gICAgICAgICAgICAifVxuIjsKLQotICAgICAgICB5
dXZQUyA9Ci0gICAgICAgICAgICAiI2V4dGVuc2lvbiBHTF9OVl9FR0xfc3RyZWFtX2NvbnN1bWVy
X2V4dGVybmFsIDogcmVxdWlyZVxuIgotICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9h
dDtcbiIKLSAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7XG4iCi0gICAgICAgICAg
ICAidW5pZm9ybSBzYW1wbGVyRXh0ZXJuYWxPRVMgeTtcbiIKLSAgICAgICAgICAgICJ1bmlmb3Jt
IHNhbXBsZXJFeHRlcm5hbE9FUyB1dlxuOyIKLSAgICAgICAgICAgICJ2b2lkIG1haW4odm9pZClc
biIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIGZsb2F0IGMgPSB0ZXh0dXJl
MkQoeSwgdGV4Y29vcmQpLnIgLSAoMTYuMCAvIDI1Ni4wKTtcbiIKLSAgICAgICAgICAgICIgICAg
ZmxvYXQgZCA9IHRleHR1cmUyRCh1diwgdGV4Y29vcmQpLnIgLSAwLjU7XG4iCi0gICAgICAgICAg
ICAiICAgIGZsb2F0IGUgPSB0ZXh0dXJlMkQodXYsIHRleGNvb3JkKS5nIC0gMC41O1xuIgotICAg
ICAgICAgICAgIiAgICBmbG9hdCByID0gMS4xNjQzODMgKiBjICsgMS41OTYwMjcgKiBlO1xuIgot
ICAgICAgICAgICAgIiAgICBmbG9hdCBnID0gMS4xNjQzODMgKiBjIC0gMC4zOTE3NjIgKiBkIC0g
MC44MTI5NjggKiBlO1xuIgotICAgICAgICAgICAgIiAgICBmbG9hdCBiID0gMS4xNjQzODMgKiBj
ICsgMi4wMTcyMzIgKiBkO1xuIgotICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KHIsIGcsIGIsIDEuMCk7XG4iCi0gICAgICAgICAgICAifVxuIjsKLSAgICB9Ci0KLSAgICBHTHVp
bnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHl1dlZTLCB5dXZQUyk7Ci0gICAgQVNTRVJUX05F
KDB1LCBwcm9ncmFtKTsKLSAgICBHTHVpbnQgeVVuaWZvcm0gID0gZ2xHZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgInkiKTsKLSAgICBHTHVpbnQgdXZVbmlmb3JtID0gZ2xHZXRVbmlmb3JtTG9j
YXRpb24ocHJvZ3JhbSwgInV2Iik7Ci0KLSAgICAvLyBGZXRjaCB0aGUgRDNEMTEgZGV2aWNlCi0g
ICAgRUdMRGV2aWNlRVhUIGVnbERldmljZTsKLSAgICBlZ2xRdWVyeURpc3BsYXlBdHRyaWJFWFQo
ZGlzcGxheSwgRUdMX0RFVklDRV9FWFQsIChFR0xBdHRyaWIgKikmZWdsRGV2aWNlKTsKLSAgICBJ
RDNEMTFEZXZpY2UgKmRldmljZTsKLSAgICBlZ2xRdWVyeURldmljZUF0dHJpYkVYVChlZ2xEZXZp
Y2UsIEVHTF9EM0QxMV9ERVZJQ0VfQU5HTEUsIChFR0xBdHRyaWIgKikmZGV2aWNlKTsKLQotICAg
IC8vIENyZWF0ZSB0aGUgTlYxMiBEM0QxMSB0ZXh0dXJlCi0gICAgSFJFU1VMVCByZXM7Ci0gICAg
RDNEMTFfVEVYVFVSRTJEX0RFU0MgZGVzYzsKLSAgICBkZXNjLldpZHRoICAgICAgICAgICAgICA9
IHl1dnRlc3Rfd2lkdGg7Ci0gICAgZGVzYy5IZWlnaHQgICAgICAgICAgICAgPSB5dXZ0ZXN0X2hl
aWdodDsKLSAgICBkZXNjLkZvcm1hdCAgICAgICAgICAgICA9IERYR0lfRk9STUFUX05WMTI7Ci0g
ICAgZGVzYy5NaXBMZXZlbHMgICAgICAgICAgPSAxOwotICAgIGRlc2MuQXJyYXlTaXplICAgICAg
ICAgID0gMTsKLSAgICBkZXNjLlNhbXBsZURlc2MuQ291bnQgICA9IDE7Ci0gICAgZGVzYy5TYW1w
bGVEZXNjLlF1YWxpdHkgPSAwOwotICAgIGRlc2MuVXNhZ2UgICAgICAgICAgICAgID0gRDNEMTFf
VVNBR0VfREVGQVVMVDsKLSAgICBkZXNjLkJpbmRGbGFncyAgICAgICAgICA9IEQzRDExX0JJTkRf
U0hBREVSX1JFU09VUkNFOwotICAgIGRlc2MuQ1BVQWNjZXNzRmxhZ3MgICAgID0gMDsKLSAgICBk
ZXNjLk1pc2NGbGFncyAgICAgICAgICA9IDA7Ci0KLSAgICBEM0QxMV9TVUJSRVNPVVJDRV9EQVRB
IHN1YnJlczsKLSAgICBzdWJyZXMucFN5c01lbSAgICAgICAgICA9IHl1dnRlc3RfZGF0YTsKLSAg
ICBzdWJyZXMuU3lzTWVtUGl0Y2ggICAgICA9IHl1dnRlc3Rfd2lkdGg7Ci0gICAgc3VicmVzLlN5
c01lbVNsaWNlUGl0Y2ggPSB5dXZ0ZXN0X3dpZHRoICogeXV2dGVzdF9oZWlnaHQgKiAzIC8gMjsK
LQotICAgIElEM0QxMVRleHR1cmUyRCAqdGV4dHVyZSA9IG51bGxwdHI7Ci0gICAgcmVzICAgICAg
ICAgICAgICAgICAgICAgID0gZGV2aWNlLT5DcmVhdGVUZXh0dXJlMkQoJmRlc2MsICZzdWJyZXMs
ICZ0ZXh0dXJlKTsKLQotICAgIC8vIENyZWF0ZSB0aGUgc3RyZWFtCi0gICAgY29uc3QgRUdMaW50
IHN0cmVhbUF0dHJpYnV0ZXNbXSA9IHsKLSAgICAgICAgRUdMX0NPTlNVTUVSX0xBVEVOQ1lfVVNF
Q19LSFIsIDAsIEVHTF9DT05TVU1FUl9BQ1FVSVJFX1RJTUVPVVRfVVNFQ19LSFIsIDAsIEVHTF9O
T05FLAotICAgIH07Ci0KLSAgICBFR0xTdHJlYW1LSFIgc3RyZWFtID0gZWdsQ3JlYXRlU3RyZWFt
S0hSKGRpc3BsYXksIHN0cmVhbUF0dHJpYnV0ZXMpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygp
OwotCi0gICAgRUdMQXR0cmliIGNvbnN1bWVyQXR0cmlidXRlc1tdID0gewotICAgICAgICBFR0xf
Q09MT1JfQlVGRkVSX1RZUEUsCi0gICAgICAgIEVHTF9ZVVZfQlVGRkVSX0VYVCwKLSAgICAgICAg
RUdMX1lVVl9OVU1CRVJfT0ZfUExBTkVTX0VYVCwKLSAgICAgICAgMiwKLSAgICAgICAgRUdMX1lV
Vl9QTEFORTBfVEVYVFVSRV9VTklUX05WLAotICAgICAgICAwLAotICAgICAgICBFR0xfWVVWX1BM
QU5FMV9URVhUVVJFX1VOSVRfTlYsCi0gICAgICAgIDEsCi0gICAgICAgIEVHTF9OT05FLAotICAg
IH07Ci0KLSAgICBHTHVpbnQgdGV4WzJdOwotICAgIGdsR2VuVGV4dHVyZXMoMiwgdGV4KTsKLSAg
ICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV9FWFRFUk5BTF9PRVMsIHRleFswXSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfRVhURVJOQUxfT0VTLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUxKTsK
LSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCB0ZXhbMV0pOwotICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9NSU5f
RklMVEVSLCBHTF9MSU5FQVIpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgRUdM
Qm9vbGVhbiByZXN1bHQgPQotICAgICAgICBlZ2xTdHJlYW1Db25zdW1lckdMVGV4dHVyZUV4dGVy
bmFsQXR0cmlic05WKGRpc3BsYXksIHN0cmVhbSwgY29uc3VtZXJBdHRyaWJ1dGVzKTsKLSAgICBB
U1NFUlRfRUdMX1RSVUUocmVzdWx0KTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAg
IEVHTEF0dHJpYiBwcm9kdWNlckF0dHJpYnV0ZXNbXSA9IHsKLSAgICAgICAgRUdMX05PTkUsCi0g
ICAgfTsKLQotICAgIHJlc3VsdCA9IGVnbENyZWF0ZVN0cmVhbVByb2R1Y2VyRDNEVGV4dHVyZU5W
MTJBTkdMRShkaXNwbGF5LCBzdHJlYW0sIHByb2R1Y2VyQXR0cmlidXRlcyk7Ci0gICAgQVNTRVJU
X0VHTF9UUlVFKHJlc3VsdCk7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICAvLyBJ
bnNlcnQgdGhlIGZyYW1lCi0gICAgRUdMQXR0cmliIGZyYW1lQXR0cmlidXRlc1tdID0gewotICAg
ICAgICBFR0xfRDNEX1RFWFRVUkVfU1VCUkVTT1VSQ0VfSURfQU5HTEUsIDAsIEVHTF9OT05FLAot
ICAgIH07Ci0gICAgcmVzdWx0ID0gZWdsU3RyZWFtUG9zdEQzRFRleHR1cmVOVjEyQU5HTEUoZGlz
cGxheSwgc3RyZWFtLCAodm9pZCAqKXRleHR1cmUsIGZyYW1lQXR0cmlidXRlcyk7Ci0gICAgQVNT
RVJUX0VHTF9UUlVFKHJlc3VsdCk7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBF
R0xpbnQgc3RhdGU7Ci0gICAgZWdsUXVlcnlTdHJlYW1LSFIoZGlzcGxheSwgc3RyZWFtLCBFR0xf
U1RSRUFNX1NUQVRFX0tIUiwgJnN0YXRlKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLSAg
ICBBU1NFUlRfRVEoRUdMX1NUUkVBTV9TVEFURV9ORVdfRlJBTUVfQVZBSUxBQkxFX0tIUiwgc3Rh
dGUpOwotCi0gICAgZWdsU3RyZWFtQ29uc3VtZXJBY3F1aXJlS0hSKGRpc3BsYXksIHN0cmVhbSk7
Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7
Ci0gICAgZ2xVbmlmb3JtMWkoeVVuaWZvcm0sIDApOwotICAgIGdsVW5pZm9ybTFpKHV2VW5pZm9y
bSwgMSk7Ci0gICAgZHJhd1F1YWQocHJvZ3JhbSwgInBvc2l0aW9uIiwgMC4wZik7Ci0gICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBlZ2xTdHJlYW1Db25zdW1lclJlbGVhc2VLSFIoZGlz
cGxheSwgc3RyZWFtKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgIGVnbFN3YXBC
dWZmZXJzKGRpc3BsYXksIHdpbmRvdy0+Z2V0U3VyZmFjZSgpKTsKLSAgICBTYWZlUmVsZWFzZSh0
ZXh0dXJlKTsKLX0KLQotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChFR0xTdHJlYW1UZXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBF
UzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMz
X09QRU5HTCgpKTsKLX0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMU3VyZmFjZVRlc3QuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xTdXJmYWNl
VGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxM2IwMWQ0NGU5Li4wMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3Rz
L0VHTFN1cmZhY2VUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxNyArMCwwIEBACi0vLwot
Ly8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
Ci0vLwotLy8gRUdMU3VyZmFjZVRlc3Q6Ci0vLyAgIFRlc3RzIHBlcnRhaW5pbmcgdG8gZWdsOjpT
dXJmYWNlLgotLy8KLQotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLSNpbmNsdWRlIDx2ZWN0
b3I+Ci0KLSNpbmNsdWRlICJPU1dpbmRvdy5oIgotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVU
ZXN0LmgiCi0KLW5hbWVzcGFjZQotewotCi1jbGFzcyBFR0xTdXJmYWNlVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBFR0xTdXJmYWNlVGVzdCgpCi0gICAg
ICAgIDogbURpc3BsYXkoRUdMX05PX0RJU1BMQVkpLAotICAgICAgICAgIG1XaW5kb3dTdXJmYWNl
KEVHTF9OT19TVVJGQUNFKSwKLSAgICAgICAgICBtUGJ1ZmZlclN1cmZhY2UoRUdMX05PX1NVUkZB
Q0UpLAotICAgICAgICAgIG1Db250ZXh0KEVHTF9OT19DT05URVhUKSwKLSAgICAgICAgICBtU2Vj
b25kQ29udGV4dChFR0xfTk9fQ09OVEVYVCksCi0gICAgICAgICAgbU9TV2luZG93KG51bGxwdHIp
Ci0gICAgewotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgbU9TV2luZG93ID0gQ3JlYXRlT1NXaW5kb3coKTsKLSAgICAgICAgbU9TV2luZG93LT5pbml0
aWFsaXplKCJFR0xTdXJmYWNlVGVzdCIsIDY0LCA2NCk7Ci0gICAgfQotCi0gICAgLy8gUmVsZWFz
ZSBhbnkgcmVzb3VyY2VzIGNyZWF0ZWQgaW4gdGhlIHRlc3QgYm9keQotICAgIHZvaWQgVGVhckRv
d24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKG1EaXNwbGF5ICE9IEVHTF9OT19ESVNQ
TEFZKQotICAgICAgICB7Ci0gICAgICAgICAgICBlZ2xNYWtlQ3VycmVudChtRGlzcGxheSwgRUdM
X05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7Ci0KLSAgICAgICAg
ICAgIGlmIChtV2luZG93U3VyZmFjZSAhPSBFR0xfTk9fU1VSRkFDRSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShtRGlzcGxheSwgbVdpbmRvd1N1cmZh
Y2UpOwotICAgICAgICAgICAgICAgIG1XaW5kb3dTdXJmYWNlID0gRUdMX05PX1NVUkZBQ0U7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChtUGJ1ZmZlclN1cmZhY2UgIT0gRUdMX05P
X1NVUkZBQ0UpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZWdsRGVzdHJveVN1cmZh
Y2UobURpc3BsYXksIG1QYnVmZmVyU3VyZmFjZSk7Ci0gICAgICAgICAgICAgICAgbVBidWZmZXJT
dXJmYWNlID0gRUdMX05PX1NVUkZBQ0U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlm
IChtQ29udGV4dCAhPSBFR0xfTk9fQ09OVEVYVCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBlZ2xEZXN0cm95Q29udGV4dChtRGlzcGxheSwgbUNvbnRleHQpOwotICAgICAgICAgICAg
ICAgIG1Db250ZXh0ID0gRUdMX05PX0NPTlRFWFQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGlmIChtU2Vjb25kQ29udGV4dCAhPSBFR0xfTk9fQ09OVEVYVCkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChtRGlzcGxheSwgbVNlY29uZENvbnRl
eHQpOwotICAgICAgICAgICAgICAgIG1TZWNvbmRDb250ZXh0ID0gRUdMX05PX0NPTlRFWFQ7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGVnbFRlcm1pbmF0ZShtRGlzcGxheSk7Ci0gICAg
ICAgICAgICBtRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOwotICAgICAgICB9Ci0KLSAgICAgICAg
bU9TV2luZG93LT5kZXN0cm95KCk7Ci0gICAgICAgIFNhZmVEZWxldGUobU9TV2luZG93KTsKLQot
ICAgICAgICBBU1NFUlRfVFJVRShtV2luZG93U3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSAmJiBt
Q29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCk7Ci0gICAgfQotCi0gICAgdm9pZCBpbml0aWFsaXpl
RGlzcGxheShFR0xlbnVtIHBsYXRmb3JtVHlwZSkKLSAgICB7Ci0gICAgICAgIFBGTkVHTEdFVFBM
QVRGT1JNRElTUExBWUVYVFBST0MgZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUID0gcmVpbnRlcnBy
ZXRfY2FzdDxQRk5FR0xHRVRQTEFURk9STURJU1BMQVlFWFRQUk9DPihlZ2xHZXRQcm9jQWRkcmVz
cygiZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUIikpOwotICAgICAgICBBU1NFUlRfVFJVRShlZ2xH
ZXRQbGF0Zm9ybURpc3BsYXlFWFQgIT0gbnVsbHB0cik7Ci0KLSAgICAgICAgc3RkOjp2ZWN0b3I8
RUdMaW50PiBkaXNwbGF5QXR0cmlidXRlczsKLSAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMucHVz
aF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0FOR0xFKTsKLSAgICAgICAgZGlzcGxheUF0
dHJpYnV0ZXMucHVzaF9iYWNrKHBsYXRmb3JtVHlwZSk7Ci0gICAgICAgIGRpc3BsYXlBdHRyaWJ1
dGVzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfTUFYX1ZFUlNJT05fTUFKT1JfQU5HTEUp
OwotICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX0RPTlRfQ0FSRSk7Ci0g
ICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfTUFY
X1ZFUlNJT05fTUlOT1JfQU5HTEUpOwotICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2Jh
Y2soRUdMX0RPTlRfQ0FSRSk7Ci0KLSAgICAgICAgaWYgKHBsYXRmb3JtVHlwZSA9PSBFR0xfUExB
VEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFIHx8IHBsYXRmb3JtVHlwZSA9PSBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcGxh
eUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9BTkdM
RSk7Ci0gICAgICAgICAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX1BMQVRGT1JN
X0FOR0xFX0RFVklDRV9UWVBFX0hBUkRXQVJFX0FOR0xFKTsKLSAgICAgICAgfQotICAgICAgICBk
aXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX05PTkUpOwotCi0gICAgICAgIG1EaXNwbGF5
ID0gZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUKEVHTF9QTEFURk9STV9BTkdMRV9BTkdMRSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkICo+KG1PU1dpbmRvdy0+Z2V0TmF0aXZlRGlzcGxheSgpKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUF0dHJpYnV0ZXMuZGF0YSgpKTsK
LSAgICAgICAgQVNTRVJUX1RSVUUobURpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkpOwotCi0gICAg
ICAgIEVHTGludCBtYWpvclZlcnNpb24sIG1pbm9yVmVyc2lvbjsKLSAgICAgICAgQVNTRVJUX1RS
VUUoZWdsSW5pdGlhbGl6ZShtRGlzcGxheSwgJm1ham9yVmVyc2lvbiwgJm1pbm9yVmVyc2lvbikg
PT0gRUdMX1RSVUUpOwotCi0gICAgICAgIGVnbEJpbmRBUEkoRUdMX09QRU5HTF9FU19BUEkpOwot
ICAgICAgICBBU1NFUlRfVFJVRShlZ2xHZXRFcnJvcigpID09IEVHTF9TVUNDRVNTKTsKLSAgICB9
Ci0KLSAgICB2b2lkIGluaXRpYWxpemVTdXJmYWNlKEVHTENvbmZpZyBjb25maWcpCi0gICAgewot
ICAgICAgICBtQ29uZmlnID0gY29uZmlnOwotCi0gICAgICAgIHN0ZDo6dmVjdG9yPEVHTGludD4g
c3VyZmFjZUF0dHJpYnV0ZXM7Ci0gICAgICAgIHN1cmZhY2VBdHRyaWJ1dGVzLnB1c2hfYmFjayhF
R0xfTk9ORSk7Ci0gICAgICAgIHN1cmZhY2VBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfTk9ORSk7
Ci0KLSAgICAgICAgLy8gQ3JlYXRlIGZpcnN0IHdpbmRvdyBzdXJmYWNlCi0gICAgICAgIG1XaW5k
b3dTdXJmYWNlID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZShtRGlzcGxheSwgbUNvbmZpZywgbU9T
V2luZG93LT5nZXROYXRpdmVXaW5kb3coKSwgJnN1cmZhY2VBdHRyaWJ1dGVzWzBdKTsKLSAgICAg
ICAgQVNTRVJUX1RSVUUoZWdsR2V0RXJyb3IoKSA9PSBFR0xfU1VDQ0VTUyk7Ci0KLSAgICAgICAg
bVBidWZmZXJTdXJmYWNlID0gZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2UobURpc3BsYXksIG1Db25m
aWcsICZzdXJmYWNlQXR0cmlidXRlc1swXSk7Ci0KLSAgICAgICAgRUdMaW50IGNvbnRleHRBdHRp
YnV0ZXNbXSA9Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEVHTF9DT05URVhUX0NMSUVOVF9WRVJT
SU9OLCAyLAotICAgICAgICAgICAgRUdMX05PTkUKLSAgICAgICAgfTsKLQotICAgICAgICBtQ29u
dGV4dCA9IGVnbENyZWF0ZUNvbnRleHQobURpc3BsYXksIG1Db25maWcsIG51bGxwdHIsIGNvbnRl
eHRBdHRpYnV0ZXMpOwotICAgICAgICBBU1NFUlRfVFJVRShlZ2xHZXRFcnJvcigpID09IEVHTF9T
VUNDRVNTKTsKLQotICAgICAgICBtU2Vjb25kQ29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQobURp
c3BsYXksIG1Db25maWcsIG51bGxwdHIsIGNvbnRleHRBdHRpYnV0ZXMpOwotICAgICAgICBBU1NF
UlRfVFJVRShlZ2xHZXRFcnJvcigpID09IEVHTF9TVUNDRVNTKTsKLSAgICB9Ci0KLSAgICB2b2lk
IGluaXRpYWxpemVTdXJmYWNlV2l0aERlZmF1bHRDb25maWcoKQotICAgIHsKLSAgICAgICAgY29u
c3QgRUdMaW50IGNvbmZpZ0F0dHJpYnV0ZXNbXSA9Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEVH
TF9SRURfU0laRSwgRUdMX0RPTlRfQ0FSRSwKLSAgICAgICAgICAgIEVHTF9HUkVFTl9TSVpFLCBF
R0xfRE9OVF9DQVJFLAotICAgICAgICAgICAgRUdMX0JMVUVfU0laRSwgRUdMX0RPTlRfQ0FSRSwK
LSAgICAgICAgICAgIEVHTF9BTFBIQV9TSVpFLCBFR0xfRE9OVF9DQVJFLAotICAgICAgICAgICAg
RUdMX0RFUFRIX1NJWkUsIEVHTF9ET05UX0NBUkUsCi0gICAgICAgICAgICBFR0xfU1RFTkNJTF9T
SVpFLCBFR0xfRE9OVF9DQVJFLAotICAgICAgICAgICAgRUdMX1NBTVBMRV9CVUZGRVJTLCAwLAot
ICAgICAgICAgICAgRUdMX05PTkUKLSAgICAgICAgfTsKLQotICAgICAgICBFR0xpbnQgY29uZmln
Q291bnQ7Ci0gICAgICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAgICAgIEFTU0VSVF9UUlVFKGVn
bENob29zZUNvbmZpZyhtRGlzcGxheSwgY29uZmlnQXR0cmlidXRlcywgJmNvbmZpZywgMSwgJmNv
bmZpZ0NvdW50KSB8fCAoY29uZmlnQ291bnQgIT0gMSkgPT0gRUdMX1RSVUUpOwotCi0gICAgICAg
IGluaXRpYWxpemVTdXJmYWNlKGNvbmZpZyk7Ci0gICAgfQotCi0gICAgR0x1aW50IGNyZWF0ZVBy
b2dyYW0oKQotICAgIHsKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdFZlcnRleFNoYWRl
clNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgYXR0cmlidXRl
IGhpZ2hwIHZlYzQgcG9zaXRpb247Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdEZy
YWdtZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAg
ICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFn
Q29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICk7Ci0KLSAgICAgICAgcmV0dXJuIENvbXBpbGVQcm9ncmFtKHRlc3RWZXJ0ZXhTaGFkZXJTb3Vy
Y2UsIHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgfQotCi0gICAgdm9pZCBkcmF3V2l0
aFByb2dyYW0oR0x1aW50IHByb2dyYW0pCi0gICAgewotICAgICAgICBnbENsZWFyQ29sb3IoMCwg
MCwgMCwgMSk7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICAg
ICAgR0xpbnQgcG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwg
InBvc2l0aW9uIik7Ci0KLSAgICAgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOwotCi0gICAgICAg
IGNvbnN0IEdMZmxvYXQgdmVydGljZXNbXSA9Ci0gICAgICAgIHsKLSAgICAgICAgICAgIC0xLjBm
LCAgMS4wZiwgMC41ZiwKLSAgICAgICAgICAgIC0xLjBmLCAtMS4wZiwgMC41ZiwKLSAgICAgICAg
ICAgICAxLjBmLCAtMS4wZiwgMC41ZiwKLQotICAgICAgICAgICAgLTEuMGYsICAxLjBmLCAwLjVm
LAotICAgICAgICAgICAgIDEuMGYsIC0xLjBmLCAwLjVmLAotICAgICAgICAgICAgIDEuMGYsICAx
LjBmLCAwLjVmLAotICAgICAgICB9OwotCi0gICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihw
b3NpdGlvbkxvY2F0aW9uLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHZlcnRpY2VzKTsKLSAg
ICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKLQotICAg
ICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCA2KTsKLQotICAgICAgICBnbERpc2Fi
bGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKLSAgICAgICAgZ2xWZXJ0ZXhB
dHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDQsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwg
TlVMTCk7Ci0KLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKG1PU1dpbmRvdy0+Z2V0V2lkdGgoKSAv
IDIsIG1PU1dpbmRvdy0+Z2V0SGVpZ2h0KCkgLyAyLCAyNTUsIDAsIDAsIDI1NSk7Ci0gICAgfQot
Ci0gICAgdm9pZCBydW5NZXNzYWdlTG9vcFRlc3QoRUdMU3VyZmFjZSBzZWNvbmRTdXJmYWNlLCBF
R0xDb250ZXh0IHNlY29uZENvbnRleHQpCi0gICAgewotICAgICAgICBlZ2xNYWtlQ3VycmVudCht
RGlzcGxheSwgbVdpbmRvd1N1cmZhY2UsIG1XaW5kb3dTdXJmYWNlLCBtQ29udGV4dCk7Ci0gICAg
ICAgIEFTU0VSVF9UUlVFKGVnbEdldEVycm9yKCkgPT0gRUdMX1NVQ0NFU1MpOwotCi0gICAgICAg
IC8vIE1ha2UgYSBzZWNvbmQgY29udGV4dCBjdXJyZW50Ci0gICAgICAgIGVnbE1ha2VDdXJyZW50
KG1EaXNwbGF5LCBzZWNvbmRTdXJmYWNlLCBzZWNvbmRTdXJmYWNlLCBzZWNvbmRDb250ZXh0KTsK
LSAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlKTsKLQot
ICAgICAgICAvLyBDcmVhdGUgc2Vjb25kIHdpbmRvdyBzdXJmYWNlCi0gICAgICAgIHN0ZDo6dmVj
dG9yPEVHTGludD4gc3VyZmFjZUF0dHJpYnV0ZXM7Ci0gICAgICAgIHN1cmZhY2VBdHRyaWJ1dGVz
LnB1c2hfYmFjayhFR0xfTk9ORSk7Ci0gICAgICAgIHN1cmZhY2VBdHRyaWJ1dGVzLnB1c2hfYmFj
ayhFR0xfTk9ORSk7Ci0KLSAgICAgICAgbVdpbmRvd1N1cmZhY2UgPSBlZ2xDcmVhdGVXaW5kb3dT
dXJmYWNlKG1EaXNwbGF5LCBtQ29uZmlnLCBtT1NXaW5kb3ctPmdldE5hdGl2ZVdpbmRvdygpLCAm
c3VyZmFjZUF0dHJpYnV0ZXNbMF0pOwotICAgICAgICBBU1NFUlRfVFJVRShlZ2xHZXRFcnJvcigp
ID09IEVHTF9TVUNDRVNTKTsKLQotICAgICAgICBlZ2xNYWtlQ3VycmVudChtRGlzcGxheSwgbVdp
bmRvd1N1cmZhY2UsIG1XaW5kb3dTdXJmYWNlLCBtQ29udGV4dCk7Ci0gICAgICAgIEFTU0VSVF9U
UlVFKGVnbEdldEVycm9yKCkgPT0gRUdMX1NVQ0NFU1MpOwotCi0gICAgICAgIG1PU1dpbmRvdy0+
c2lnbmFsVGVzdEV2ZW50KCk7Ci0gICAgICAgIG1PU1dpbmRvdy0+bWVzc2FnZUxvb3AoKTsKLSAg
ICAgICAgQVNTRVJUX1RSVUUobU9TV2luZG93LT5kaWRUZXN0RXZlbnRGaXJlKCkpOwotCi0gICAg
ICAgIC8vIFNpbXBsZSBvcGVyYXRpb24gdG8gdGVzdCB0aGUgRkJPIGlzIHNldCBhcHByb3ByaWF0
ZWx5Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgfQotCi0gICAg
RUdMRGlzcGxheSBtRGlzcGxheTsKLSAgICBFR0xTdXJmYWNlIG1XaW5kb3dTdXJmYWNlOwotICAg
IEVHTFN1cmZhY2UgbVBidWZmZXJTdXJmYWNlOwotICAgIEVHTENvbnRleHQgbUNvbnRleHQ7Ci0g
ICAgRUdMQ29udGV4dCBtU2Vjb25kQ29udGV4dDsKLSAgICBFR0xDb25maWcgbUNvbmZpZzsKLSAg
ICBPU1dpbmRvdyAqbU9TV2luZG93OwotfTsKLQotLy8gVGVzdCBhIHN1cmZhY2UgYnVnIHdoZXJl
IHdlIGNvdWxkIGhhdmUgdHdvIFdpbmRvdyBzdXJmYWNlcyBhY3RpdmUKLS8vIGF0IG9uZSB0aW1l
LCBibG9ja2luZyBtZXNzYWdlIGxvb3BzLiBTZWUgaHR0cDovL2NyYnVnLmNvbS80NzUwODUKLVRF
U1RfRihFR0xTdXJmYWNlVGVzdCwgTWVzc2FnZUxvb3BCdWcpCi17Ci0gICAgY29uc3QgY2hhciAq
ZXh0ZW5zaW9uc1N0cmluZyA9IGVnbFF1ZXJ5U3RyaW5nKEVHTF9OT19ESVNQTEFZLCBFR0xfRVhU
RU5TSU9OUyk7Ci0gICAgaWYgKHN0cnN0cihleHRlbnNpb25zU3RyaW5nLCAiRUdMX0FOR0xFX3Bs
YXRmb3JtX2FuZ2xlX2QzZCIpID09IG51bGxwdHIpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQg
PDwgIkQzRCBQbGF0Zm9ybSBub3Qgc3VwcG9ydGVkIGluIEFOR0xFIiA8PCBzdGQ6OmVuZGw7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbml0aWFsaXplRGlzcGxheShFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSk7Ci0gICAgaW5pdGlhbGl6ZVN1cmZhY2VXaXRoRGVm
YXVsdENvbmZpZygpOwotCi0gICAgcnVuTWVzc2FnZUxvb3BUZXN0KEVHTF9OT19TVVJGQUNFLCBF
R0xfTk9fQ09OVEVYVCk7Ci19Ci0KLS8vIFRlc3RzIHRoZSBtZXNzYWdlIGxvb3AgYnVnLCBidXQg
d2l0aCBzZXR0aW5nIGEgc2Vjb25kIGNvbnRleHQKLS8vIGluc3RlYWQgb2YgbnVsbC4KLVRFU1Rf
RihFR0xTdXJmYWNlVGVzdCwgTWVzc2FnZUxvb3BCdWdDb250ZXh0KQotewotICAgIGNvbnN0IGNo
YXIgKmV4dGVuc2lvbnNTdHJpbmcgPSBlZ2xRdWVyeVN0cmluZyhFR0xfTk9fRElTUExBWSwgRUdM
X0VYVEVOU0lPTlMpOwotICAgIGlmIChzdHJzdHIoZXh0ZW5zaW9uc1N0cmluZywgIkVHTF9BTkdM
RV9wbGF0Zm9ybV9hbmdsZV9kM2QiKSA9PSBudWxscHRyKQotICAgIHsKLSAgICAgICAgc3RkOjpj
b3V0IDw8ICJEM0QgUGxhdGZvcm0gbm90IHN1cHBvcnRlZCBpbiBBTkdMRSIgPDwgc3RkOjplbmRs
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaW5pdGlhbGl6ZURpc3BsYXkoRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpOwotICAgIGluaXRpYWxpemVTdXJmYWNlV2l0
aERlZmF1bHRDb25maWcoKTsKLQotICAgIHJ1bk1lc3NhZ2VMb29wVGVzdChtUGJ1ZmZlclN1cmZh
Y2UsIG1TZWNvbmRDb250ZXh0KTsKLX0KLQotLy8gVGVzdCBhIGJ1ZyB3aGVyZSBjYWxsaW5nIG1h
a2VDdXJyZW50IHR3aWNlIHdvdWxkIHJlbGVhc2UgdGhlIHN1cmZhY2UKLVRFU1RfRihFR0xTdXJm
YWNlVGVzdCwgTWFrZUN1cnJlbnRUd2ljZSkKLXsKLSNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JN
X0FQUExFKSAmJiAhZGVmaW5lZChBTkdMRV9TVEFOREFMT05FX0JVSUxEKQotICAgIC8vIFRPRE8o
Y3dhbGxleikgTWFrZSBjb250ZXh0IGNyZWF0aW9uIHJldHVybiBhdCBsZWFzdCBhbiBPcGVuR0wg
RVMgMiBjb250ZXh0IG9uCi0gICAgLy8gdGhlIE1hYyB0cnlib3RzLgotICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIHRlbXBvcmFyaWx5IHNraXBwZWQgb24gdGhlIE1hYyB0cnlib3RzIiA8
PCBzdGQ6OmVuZGw7Ci0gICAgcmV0dXJuOwotI2VuZGlmCi0KLSAgICBpbml0aWFsaXplRGlzcGxh
eShFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xFKTsKLSAgICBpbml0aWFsaXpl
U3VyZmFjZVdpdGhEZWZhdWx0Q29uZmlnKCk7Ci0KLSAgICBlZ2xNYWtlQ3VycmVudChtRGlzcGxh
eSwgbVdpbmRvd1N1cmZhY2UsIG1XaW5kb3dTdXJmYWNlLCBtQ29udGV4dCk7Ci0gICAgQVNTRVJU
X1RSVUUoZWdsR2V0RXJyb3IoKSA9PSBFR0xfU1VDQ0VTUyk7Ci0KLSAgICBlZ2xNYWtlQ3VycmVu
dChtRGlzcGxheSwgbVdpbmRvd1N1cmZhY2UsIG1XaW5kb3dTdXJmYWNlLCBtQ29udGV4dCk7Ci0g
ICAgQVNTRVJUX1RSVUUoZWdsR2V0RXJyb3IoKSA9PSBFR0xfU1VDQ0VTUyk7Ci0KLSAgICAvLyBT
aW1wbGUgb3BlcmF0aW9uIHRvIHRlc3QgdGhlIEZCTyBpcyBzZXQgYXBwcm9wcmlhdGVseQotICAg
IGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci19Ci0KLS8vIFRlc3QgdGhhdCB0aGUgRDNE
IHdpbmRvdyBzdXJmYWNlIGlzIGNvcnJlY3RseSByZXNpemVkIGFmdGVyIGNhbGxpbmcgc3dhcEJ1
ZmZlcnMKLVRFU1RfRihFR0xTdXJmYWNlVGVzdCwgUmVzaXplRDNEV2luZG93KQotewotICAgIGNv
bnN0IGNoYXIgKmV4dGVuc2lvbnNTdHJpbmcgPSBlZ2xRdWVyeVN0cmluZyhFR0xfTk9fRElTUExB
WSwgRUdMX0VYVEVOU0lPTlMpOwotICAgIGlmIChzdHJzdHIoZXh0ZW5zaW9uc1N0cmluZywgIkVH
TF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kM2QiKSA9PSBudWxscHRyKQotICAgIHsKLSAgICAgICAg
c3RkOjpjb3V0IDw8ICJEM0QgUGxhdGZvcm0gbm90IHN1cHBvcnRlZCBpbiBBTkdMRSIgPDwgc3Rk
OjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaW5pdGlhbGl6ZURpc3BsYXko
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpOwotICAgIGluaXRpYWxpemVTdXJm
YWNlV2l0aERlZmF1bHRDb25maWcoKTsKLQotICAgIGVnbFN3YXBCdWZmZXJzKG1EaXNwbGF5LCBt
V2luZG93U3VyZmFjZSk7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBFR0xpbnQg
aGVpZ2h0OwotICAgIGVnbFF1ZXJ5U3VyZmFjZShtRGlzcGxheSwgbVdpbmRvd1N1cmZhY2UsIEVH
TF9IRUlHSFQsICZoZWlnaHQpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotICAgIEFTU0VS
VF9FUSg2NCwgaGVpZ2h0KTsgIC8vIGluaXRpYWwgc2l6ZQotCi0gICAgLy8gc2V0IHdpbmRvdydz
IGhlaWdodCB0byAwCi0gICAgbU9TV2luZG93LT5yZXNpemUoNjQsIDApOwotCi0gICAgZWdsU3dh
cEJ1ZmZlcnMobURpc3BsYXksIG1XaW5kb3dTdXJmYWNlKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NF
U1MoKTsKLQotICAgIGVnbFF1ZXJ5U3VyZmFjZShtRGlzcGxheSwgbVdpbmRvd1N1cmZhY2UsIEVH
TF9IRUlHSFQsICZoZWlnaHQpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotICAgIEFTU0VS
VF9FUSgwLCBoZWlnaHQpOwotCi0gICAgLy8gcmVzdG9yZSB3aW5kb3cncyBoZWlnaHQKLSAgICBt
T1NXaW5kb3ctPnJlc2l6ZSg2NCwgNjQpOwotCi0gICAgZWdsU3dhcEJ1ZmZlcnMobURpc3BsYXks
IG1XaW5kb3dTdXJmYWNlKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgIGVnbFF1
ZXJ5U3VyZmFjZShtRGlzcGxheSwgbVdpbmRvd1N1cmZhY2UsIEVHTF9IRUlHSFQsICZoZWlnaHQp
OwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotICAgIEFTU0VSVF9FUSg2NCwgaGVpZ2h0KTsK
LX0KLQotLy8gVGVzdCBjcmVhdGluZyBhIHN1cmZhY2UgdGhhdCBzdXBwb3J0cyBhIEVHTENvbmZp
ZyB3aXRoIDE2Yml0Ci0vLyBzdXBwb3J0IEdMX1JHQjU2NQotVEVTVF9GKEVHTFN1cmZhY2VUZXN0
LCBDcmVhdGVXaXRoRUdMQ29uZmlnNTY1MFN1cHBvcnQpCi17Ci0gICAgaWYgKCFBTkdMRVRlc3Q6
OmVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKEVHTF9OT19ESVNQTEFZLCAiRUdMX0FOR0xFX3Bs
YXRmb3JtX2FuZ2xlX2QzZCIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJEM0QgUGxh
dGZvcm0gbm90IHN1cHBvcnRlZCBpbiBBTkdMRSIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgY29uc3QgRUdMaW50IGNvbmZpZ0F0dHJpYnV0ZXNbXSA9Ci0gICAg
ewotICAgICAgICBFR0xfUkVEX1NJWkUsIDUsCi0gICAgICAgIEVHTF9HUkVFTl9TSVpFLCA2LAot
ICAgICAgICBFR0xfQkxVRV9TSVpFLCA1LAotICAgICAgICBFR0xfQUxQSEFfU0laRSwgMCwKLSAg
ICAgICAgRUdMX0RFUFRIX1NJWkUsIDAsCi0gICAgICAgIEVHTF9TVEVOQ0lMX1NJWkUsIDAsCi0g
ICAgICAgIEVHTF9TQU1QTEVfQlVGRkVSUywgMCwKLSAgICAgICAgRUdMX05PTkUKLSAgICB9Owot
Ci0gICAgaW5pdGlhbGl6ZURpc3BsYXkoRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5H
TEUpOwotICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAgaWYgKEVHTFdpbmRvdzo6RmluZEVHTENv
bmZpZyhtRGlzcGxheSwgY29uZmlnQXR0cmlidXRlcywgJmNvbmZpZykgPT0gRUdMX0ZBTFNFKQot
ICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJFR0xDb25maWcgZm9yIGEgR0xfUkdCNTY1IHN1
cmZhY2UgaXMgbm90IHN1cHBvcnRlZCwgc2tpcHBpbmcgdGVzdCIgPDwgc3RkOjplbmRsOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaW5pdGlhbGl6ZVN1cmZhY2UoY29uZmlnKTsKLQot
ICAgIGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSwgbVdpbmRvd1N1cmZh
Y2UsIG1Db250ZXh0KTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgIEdMdWludCBw
cm9ncmFtID0gY3JlYXRlUHJvZ3JhbSgpOwotICAgIEFTU0VSVF9ORSgwdSwgcHJvZ3JhbSk7Ci0g
ICAgZHJhd1dpdGhQcm9ncmFtKHByb2dyYW0pOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwot
ICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKLX0KLQotLy8gVGVzdCBjcmVhdGluZyBhIHN1
cmZhY2UgdGhhdCBzdXBwb3J0cyBhIEVHTENvbmZpZyB3aXRoIDE2Yml0Ci0vLyBzdXBwb3J0IEdM
X1JHQkE0Ci1URVNUX0YoRUdMU3VyZmFjZVRlc3QsIENyZWF0ZVdpdGhFR0xDb25maWc0NDQ0U3Vw
cG9ydCkKLXsKLSAgICBpZiAoIUFOR0xFVGVzdDo6ZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQo
RUdMX05PX0RJU1BMQVksICJFR0xfQU5HTEVfcGxhdGZvcm1fYW5nbGVfZDNkIikpCi0gICAgewot
ICAgICAgICBzdGQ6OmNvdXQgPDwgIkQzRCBQbGF0Zm9ybSBub3Qgc3VwcG9ydGVkIGluIEFOR0xF
IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBFR0xp
bnQgY29uZmlnQXR0cmlidXRlc1tdID0KLSAgICB7Ci0gICAgICAgIEVHTF9SRURfU0laRSwgNCwK
LSAgICAgICAgRUdMX0dSRUVOX1NJWkUsIDQsCi0gICAgICAgIEVHTF9CTFVFX1NJWkUsIDQsCi0g
ICAgICAgIEVHTF9BTFBIQV9TSVpFLCA0LAotICAgICAgICBFR0xfREVQVEhfU0laRSwgMCwKLSAg
ICAgICAgRUdMX1NURU5DSUxfU0laRSwgMCwKLSAgICAgICAgRUdMX1NBTVBMRV9CVUZGRVJTLCAw
LAotICAgICAgICBFR0xfTk9ORQotICAgIH07Ci0KLSAgICBpbml0aWFsaXplRGlzcGxheShFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSk7Ci0gICAgRUdMQ29uZmlnIGNvbmZpZzsK
LSAgICBpZiAoRUdMV2luZG93OjpGaW5kRUdMQ29uZmlnKG1EaXNwbGF5LCBjb25maWdBdHRyaWJ1
dGVzLCAmY29uZmlnKSA9PSBFR0xfRkFMU0UpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwg
IkVHTENvbmZpZyBmb3IgYSBHTF9SR0JBNCBzdXJmYWNlIGlzIG5vdCBzdXBwb3J0ZWQsIHNraXBw
aW5nIHRlc3QiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlu
aXRpYWxpemVTdXJmYWNlKGNvbmZpZyk7Ci0KLSAgICBlZ2xNYWtlQ3VycmVudChtRGlzcGxheSwg
bVdpbmRvd1N1cmZhY2UsIG1XaW5kb3dTdXJmYWNlLCBtQ29udGV4dCk7Ci0gICAgQVNTRVJUX0VH
TF9TVUNDRVNTKCk7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IGNyZWF0ZVByb2dyYW0oKTsKLSAg
ICBBU1NFUlRfTkUoMHUsIHByb2dyYW0pOwotICAgIGRyYXdXaXRoUHJvZ3JhbShwcm9ncmFtKTsK
LSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7
Ci19Ci0KLS8vIFRlc3QgY3JlYXRpbmcgYSBzdXJmYWNlIHRoYXQgc3VwcG9ydHMgYSBFR0xDb25m
aWcgd2l0aCAxNmJpdAotLy8gc3VwcG9ydCBHTF9SR0I1X0ExCi1URVNUX0YoRUdMU3VyZmFjZVRl
c3QsIENyZWF0ZVdpdGhFR0xDb25maWc1NTUxU3VwcG9ydCkKLXsKLSAgICBpZiAoIUFOR0xFVGVz
dDo6ZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQoRUdMX05PX0RJU1BMQVksICJFR0xfQU5HTEVf
cGxhdGZvcm1fYW5nbGVfZDNkIikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIkQzRCBQ
bGF0Zm9ybSBub3Qgc3VwcG9ydGVkIGluIEFOR0xFIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBFR0xpbnQgY29uZmlnQXR0cmlidXRlc1tdID0KLSAg
ICB7Ci0gICAgICAgIEVHTF9SRURfU0laRSwgNSwKLSAgICAgICAgRUdMX0dSRUVOX1NJWkUsIDUs
Ci0gICAgICAgIEVHTF9CTFVFX1NJWkUsIDUsCi0gICAgICAgIEVHTF9BTFBIQV9TSVpFLCAxLAot
ICAgICAgICBFR0xfREVQVEhfU0laRSwgMCwKLSAgICAgICAgRUdMX1NURU5DSUxfU0laRSwgMCwK
LSAgICAgICAgRUdMX1NBTVBMRV9CVUZGRVJTLCAwLAotICAgICAgICBFR0xfTk9ORQotICAgIH07
Ci0KLSAgICBpbml0aWFsaXplRGlzcGxheShFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9B
TkdMRSk7Ci0gICAgRUdMQ29uZmlnIGNvbmZpZzsKLSAgICBpZiAoRUdMV2luZG93OjpGaW5kRUdM
Q29uZmlnKG1EaXNwbGF5LCBjb25maWdBdHRyaWJ1dGVzLCAmY29uZmlnKSA9PSBFR0xfRkFMU0Up
Ci0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIkVHTENvbmZpZyBmb3IgYSBHTF9SR0I1X0Ex
IHN1cmZhY2UgaXMgbm90IHN1cHBvcnRlZCwgc2tpcHBpbmcgdGVzdCIgPDwgc3RkOjplbmRsOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaW5pdGlhbGl6ZVN1cmZhY2UoY29uZmlnKTsK
LQotICAgIGVnbE1ha2VDdXJyZW50KG1EaXNwbGF5LCBtV2luZG93U3VyZmFjZSwgbVdpbmRvd1N1
cmZhY2UsIG1Db250ZXh0KTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgIEdMdWlu
dCBwcm9ncmFtID0gY3JlYXRlUHJvZ3JhbSgpOwotICAgIEFTU0VSVF9ORSgwdSwgcHJvZ3JhbSk7
Ci0gICAgZHJhd1dpdGhQcm9ncmFtKHByb2dyYW0pOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OwotICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKLX0KLQotLy8gVGVzdCBjcmVhdGluZyBh
IHN1cmZhY2UgdGhhdCBzdXBwb3J0cyBhIEVHTENvbmZpZyB3aXRob3V0IGFscGhhIHN1cHBvcnQK
LVRFU1RfRihFR0xTdXJmYWNlVGVzdCwgQ3JlYXRlV2l0aEVHTENvbmZpZzg4ODBTdXBwb3J0KQot
ewotICAgIGlmICghQU5HTEVUZXN0OjplZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZChFR0xfTk9f
RElTUExBWSwgIkVHTF9BTkdMRV9wbGF0Zm9ybV9hbmdsZV9kM2QiKSkKLSAgICB7Ci0gICAgICAg
IHN0ZDo6Y291dCA8PCAiRDNEIFBsYXRmb3JtIG5vdCBzdXBwb3J0ZWQgaW4gQU5HTEUiIDw8IHN0
ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0IEVHTGludCBjb25m
aWdBdHRyaWJ1dGVzW10gPQotICAgIHsKLSAgICAgICAgRUdMX1JFRF9TSVpFLCA4LAotICAgICAg
ICBFR0xfR1JFRU5fU0laRSwgOCwKLSAgICAgICAgRUdMX0JMVUVfU0laRSwgOCwKLSAgICAgICAg
RUdMX0FMUEhBX1NJWkUsIDAsCi0gICAgICAgIEVHTF9ERVBUSF9TSVpFLCAwLAotICAgICAgICBF
R0xfU1RFTkNJTF9TSVpFLCAwLAotICAgICAgICBFR0xfU0FNUExFX0JVRkZFUlMsIDAsCi0gICAg
ICAgIEVHTF9OT05FCi0gICAgfTsKLQotICAgIGluaXRpYWxpemVEaXNwbGF5KEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKTsKLSAgICBFR0xDb25maWcgY29uZmlnOwotICAgIGlm
IChFR0xXaW5kb3c6OkZpbmRFR0xDb25maWcobURpc3BsYXksIGNvbmZpZ0F0dHJpYnV0ZXMsICZj
b25maWcpID09IEVHTF9GQUxTRSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiRUdMQ29u
ZmlnIGZvciBhIEdMX1JHQjhfT0VTIHN1cmZhY2UgaXMgbm90IHN1cHBvcnRlZCwgc2tpcHBpbmcg
dGVzdCIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGluaXRpYWxpemVTdXJmYWNlKGNvbmZpZyk7Ci0KLSAgICBlZ2xNYWtlQ3Vy
cmVudChtRGlzcGxheSwgbVdpbmRvd1N1cmZhY2UsIG1XaW5kb3dTdXJmYWNlLCBtQ29udGV4dCk7
Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IGNyZWF0
ZVByb2dyYW0oKTsKLSAgICBBU1NFUlRfTkUoMHUsIHByb2dyYW0pOwotICAgIGRyYXdXaXRoUHJv
Z3JhbShwcm9ncmFtKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBnbERlbGV0ZVBy
b2dyYW0ocHJvZ3JhbSk7Ci19Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFN5bmNDb250cm9sVGVzdC5jcHAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFN5bmNDb250cm9sVGVzdC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5MzkxMDk3MDM3Li4wMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWdsX3Rlc3RzL0VHTFN5bmND
b250cm9sVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzAgKzAsMCBAQAotLy8KLS8vIENv
cHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8K
LQotI2lmbmRlZiBBTkdMRV9FTkFCTEVfRDNEOQotI2RlZmluZSBBTkdMRV9FTkFCTEVfRDNEOQot
I2VuZGlmCi0KLSNpZm5kZWYgQU5HTEVfRU5BQkxFX0QzRDExCi0jZGVmaW5lIEFOR0xFX0VOQUJM
RV9EM0QxMQotI2VuZGlmCi0KLSNpbmNsdWRlIDxkM2QxMS5oPgotI2luY2x1ZGUgPEVHTC9lZ2wu
aD4KLSNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+Ci0KLSNpbmNsdWRlICJjb21fdXRpbHMuaCIKLSNp
bmNsdWRlICJPU1dpbmRvdy5oIgotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0K
LXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotdHlwZWRlZiBFR0xCb29sZWFuKEVHTEFQSUVOVFJZ
UCBQRk5FR0xHRVRTWU5DVkFMVUVTQ0hST01JVU1QUk9DKShFR0xEaXNwbGF5IGRweSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMU3VyZmFjZSBzdXJmYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0x1aW50NjRLSFIgKnVzdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRUdMdWludDY0S0hSICptc2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTHVpbnQ2NEtIUiAqc2JjKTsKLQotY2xh
c3MgRUdMU3luY0NvbnRyb2xUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QKLXsKLSAgcHJvdGVj
dGVkOgotICAgIEVHTFN5bmNDb250cm9sVGVzdCgpIHt9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIG1EM0QxMU1vZHVsZSA9IExvYWRMaWJyYXJ5KFRFWFQoImQz
ZDExLmRsbCIpKTsKLSAgICAgICAgaWYgKG1EM0QxMU1vZHVsZSA9PSBudWxscHRyKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlVuYWJsZSB0byBMb2FkTGlicmFyeSBEM0Qx
MSIgPDwgc3RkOjplbmRsOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgbUQzRDExQ3JlYXRlRGV2aWNlID0gcmVpbnRlcnByZXRfY2FzdDxQRk5fRDNEMTFfQ1JFQVRF
X0RFVklDRT4oCi0gICAgICAgICAgICBHZXRQcm9jQWRkcmVzcyhtRDNEMTFNb2R1bGUsICJEM0Qx
MUNyZWF0ZURldmljZSIpKTsKLSAgICAgICAgaWYgKG1EM0QxMUNyZWF0ZURldmljZSA9PSBudWxs
cHRyKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIkNvdWxkIG5vdCByZXRy
aWV2ZSBEM0QxMUNyZWF0ZURldmljZSBmcm9tIGQzZDExLmRsbCIgPDwgc3RkOjplbmRsOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbUQzRDExQXZhaWxhYmxlID0g
dHJ1ZTsKLQotICAgICAgICBjb25zdCBjaGFyICpleHRlbnNpb25TdHJpbmcgPQotICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihlZ2xRdWVyeVN0cmluZyhFR0xfTk9fRElTUExB
WSwgRUdMX0VYVEVOU0lPTlMpKTsKLSAgICAgICAgaWYgKHN0cnN0cihleHRlbnNpb25TdHJpbmcs
ICJFR0xfQU5HTEVfZGV2aWNlX2NyZWF0aW9uIikpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
IChzdHJzdHIoZXh0ZW5zaW9uU3RyaW5nLCAiRUdMX0FOR0xFX2RldmljZV9jcmVhdGlvbl9kM2Qx
MSIpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1EZXZpY2VDcmVhdGlvbkQzRDEx
RXh0QXZhaWxhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IGVnbEdldFN5bmNWYWx1ZXNDSFJPTUlVTSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZORUdMR0VUU1lO
Q1ZBTFVFU0NIUk9NSVVNUFJPQz4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZWds
R2V0U3luY1ZhbHVlc0NIUk9NSVVNIikpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBv
dmVycmlkZQotICAgIHsKLSAgICAgICAgU2FmZVJlbGVhc2UobURldmljZSk7Ci0gICAgICAgIFNh
ZmVSZWxlYXNlKG1EZXZpY2VDb250ZXh0KTsKLQotICAgICAgICBTYWZlRGVsZXRlKG1PU1dpbmRv
dyk7Ci0KLSAgICAgICAgaWYgKG1TdXJmYWNlICE9IEVHTF9OT19TVVJGQUNFKQotICAgICAgICB7
Ci0gICAgICAgICAgICBlZ2xEZXN0cm95U3VyZmFjZShtRGlzcGxheSwgbVN1cmZhY2UpOwotICAg
ICAgICAgICAgbVN1cmZhY2UgPSBFR0xfTk9fU1VSRkFDRTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChtQ29udGV4dCAhPSBFR0xfTk9fQ09OVEVYVCkKLSAgICAgICAgewotICAgICAgICAgICAg
ZWdsRGVzdHJveUNvbnRleHQobURpc3BsYXksIG1Db250ZXh0KTsKLSAgICAgICAgICAgIG1Db250
ZXh0ID0gRUdMX05PX0NPTlRFWFQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobURpc3BsYXkg
IT0gRUdMX05PX0RJU1BMQVkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVnbFRlcm1pbmF0ZSht
RGlzcGxheSk7Ci0gICAgICAgICAgICBtRGlzcGxheSA9IEVHTF9OT19ESVNQTEFZOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgdm9pZCBDcmVhdGVEM0QxMURldmljZSgpCi0gICAgewotICAgICAg
ICBBU1NFUlRfVFJVRShtRDNEMTFBdmFpbGFibGUpOwotICAgICAgICBBU1NFUlRfRVEobnVsbHB0
ciwgbURldmljZSk7ICAvLyBUaGUgZGV2aWNlIHNob3VsZG4ndCBiZSBjcmVhdGVkIHR3aWNlCi0K
LSAgICAgICAgSFJFU1VMVCBociA9Ci0gICAgICAgICAgICBtRDNEMTFDcmVhdGVEZXZpY2UobnVs
bHB0ciwgRDNEX0RSSVZFUl9UWVBFX0hBUkRXQVJFLCAwLCAwLCBudWxscHRyLCAwLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEQzRDExX1NES19WRVJTSU9OLCAmbURldmljZSwgJm1G
ZWF0dXJlTGV2ZWwsICZtRGV2aWNlQ29udGV4dCk7Ci0KLSAgICAgICAgQVNTRVJUX1RSVUUoU1VD
Q0VFREVEKGhyKSk7Ci0gICAgfQotCi0gICAgdm9pZCBJbml0aWFsaXplRGlzcGxheSgpCi0gICAg
ewotICAgICAgICBFR0xpbnQgZGlzcGxheUF0dHJpYnNbXSA9IHtFR0xfUExBVEZPUk1fQU5HTEVf
VFlQRV9BTkdMRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NQUpPUl9BTkdMRSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0RPTlRfQ0FSRSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX01BWF9WRVJTSU9OX01J
Tk9SX0FOR0xFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfRE9OVF9D
QVJFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfUExBVEZPUk1fQU5H
TEVfREVWSUNFX1RZUEVfQU5HTEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX05PTkV9OwotCi0gICAgICAgIC8vIENyZWF0
ZSBhbiBPUyBXaW5kb3cKLSAgICAgICAgbU9TV2luZG93ID0gQ3JlYXRlT1NXaW5kb3coKTsKLSAg
ICAgICAgbU9TV2luZG93LT5pbml0aWFsaXplKCJFR0xTeW5jQ29udHJvbFRlc3QiLCA2NCwgNjQp
OwotICAgICAgICBtT1NXaW5kb3ctPnNldFZpc2libGUodHJ1ZSk7Ci0KLSAgICAgICAgLy8gQ3Jl
YXRlIGFuIEVHTERpc3BsYXkgdXNpbmcgdGhlIEVHTERldmljZQotICAgICAgICBtRGlzcGxheSA9
IGVnbEdldFBsYXRmb3JtRGlzcGxheUVYVChFR0xfUExBVEZPUk1fQU5HTEVfQU5HTEUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCAqPihtT1NXaW5kb3ctPmdldE5hdGl2ZURpc3BsYXkoKSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlBdHRyaWJzKTsKLSAgICAgICAgQVNT
RVJUX1RSVUUobURpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkpOwotCi0gICAgICAgIEVHTGludCBt
YWpvclZlcnNpb24sIG1pbm9yVmVyc2lvbjsKLSAgICAgICAgQVNTRVJUX1RSVUUoZWdsSW5pdGlh
bGl6ZShtRGlzcGxheSwgJm1ham9yVmVyc2lvbiwgJm1pbm9yVmVyc2lvbikgPT0gRUdMX1RSVUUp
OwotICAgIH0KLQotICAgIHZvaWQgQ3JlYXRlV2luZG93U3VyZmFjZSgpCi0gICAgewotICAgICAg
ICBlZ2xCaW5kQVBJKEVHTF9PUEVOR0xfRVNfQVBJKTsKLSAgICAgICAgQVNTRVJUX0VHTF9TVUND
RVNTKCk7Ci0KLSAgICAgICAgLy8gQ2hvb3NlIGEgY29uZmlnCi0gICAgICAgIGNvbnN0IEVHTGlu
dCBjb25maWdBdHRyaWJ1dGVzW10gPSB7RUdMX05PTkV9OwotCi0gICAgICAgIEVHTGludCBjb25m
aWdDb3VudCA9IDA7Ci0gICAgICAgIEFTU0VSVF9FR0xfVFJVRShlZ2xDaG9vc2VDb25maWcobURp
c3BsYXksIGNvbmZpZ0F0dHJpYnV0ZXMsICZtQ29uZmlnLCAxLCAmY29uZmlnQ291bnQpKTsKLQot
ICAgICAgICBjb25zdCBFR0xpbnQgc3VyZmFjZUF0dHJpYnV0ZXNbXSA9IHtFR0xfRElSRUNUX0NP
TVBPU0lUSU9OX0FOR0xFLCBFR0xfVFJVRSwgRUdMX05PTkV9OwotCi0gICAgICAgIC8vIENyZWF0
ZSB3aW5kb3cgc3VyZmFjZQotICAgICAgICBtU3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZh
Y2UobURpc3BsYXksIG1Db25maWcsIG1PU1dpbmRvdy0+Z2V0TmF0aXZlV2luZG93KCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJmYWNlQXR0cmlidXRlcyk7
Ci0gICAgICAgIGlmIChtU3VyZmFjZSA9PSBudWxscHRyKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBzdGQ6OmNvdXQgPDwgIlVuYWJsZSB0byBjcmVhdGUgd2luZG93IHN1cmZhY2Ugd2l0aCBEaXJl
Y3QgQ29tcG9zaXRpb24iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIG1EaXJlY3RDb21wb3NpdGlvblN1cmZhY2VBdmFpbGFibGUgPSB0cnVl
OwotCi0gICAgICAgIC8vIENyZWF0ZSBFR0wgY29udGV4dAotICAgICAgICBFR0xpbnQgY29udGV4
dEF0dGlidXRlc1tdID0ge0VHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OLCAyLCBFR0xfTk9ORX07
Ci0KLSAgICAgICAgbUNvbnRleHQgPSBlZ2xDcmVhdGVDb250ZXh0KG1EaXNwbGF5LCBtQ29uZmln
LCBudWxscHRyLCBjb250ZXh0QXR0aWJ1dGVzKTsKLSAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNT
KCk7Ci0KLSAgICAgICAgLy8gTWFrZSB0aGUgc3VyZmFjZSBjdXJyZW50Ci0gICAgICAgIGVnbE1h
a2VDdXJyZW50KG1EaXNwbGF5LCBtU3VyZmFjZSwgbVN1cmZhY2UsIG1Db250ZXh0KTsKLSAgICAg
ICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0gICAgfQotCi0gICAgYm9vbCBtRDNEMTFBdmFpbGFi
bGUgICAgICAgICAgICAgICAgICAgICAgID0gZmFsc2U7Ci0gICAgSE1PRFVMRSBtRDNEMTFNb2R1
bGUgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5fRDNEMTFfQ1JFQVRF
X0RFVklDRSBtRDNEMTFDcmVhdGVEZXZpY2UgPSBudWxscHRyOwotCi0gICAgSUQzRDExRGV2aWNl
ICptRGV2aWNlICAgICAgICAgICAgICAgPSBudWxscHRyOwotICAgIElEM0QxMURldmljZUNvbnRl
eHQgKm1EZXZpY2VDb250ZXh0ID0gbnVsbHB0cjsKLSAgICBEM0RfRkVBVFVSRV9MRVZFTCBtRmVh
dHVyZUxldmVsOwotCi0gICAgYm9vbCBtRGV2aWNlQ3JlYXRpb25EM0QxMUV4dEF2YWlsYWJsZSA9
IGZhbHNlOwotCi0gICAgYm9vbCBtRGlyZWN0Q29tcG9zaXRpb25TdXJmYWNlQXZhaWxhYmxlID0g
ZmFsc2U7Ci0KLSAgICBPU1dpbmRvdyAqbU9TV2luZG93ID0gbnVsbHB0cjsKLQotICAgIEVHTERp
c3BsYXkgbURpc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gRUdM
X05PX0RJU1BMQVk7Ci0gICAgRUdMU3VyZmFjZSBtU3VyZmFjZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPSBFR0xfTk9fU1VSRkFDRTsKLSAgICBFR0xDb250ZXh0IG1Db250
ZXh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IEVHTF9OT19DT05URVhU
OwotICAgIEVHTENvbmZpZyBtQ29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gMDsKLSAgICBQRk5FR0xHRVRTWU5DVkFMVUVTQ0hST01JVU1QUk9DIGVnbEdldFN5
bmNWYWx1ZXNDSFJPTUlVTSA9IG51bGxwdHI7Ci19OwotCi0vLyBCYXNpYyB0ZXN0IGZvciBlZ2xH
ZXRTeW5jVmFsdWVzQ0hST01JVU0gZXh0ZW5zaW9uLiBWZXJpZmllcyB0aGF0IGVnbEdldFN5bmNW
YWx1ZXNDSFJPTUlVTQotLy8gY2FuIGJlIGNhbGxlZCBvbiBEWDExIHdpdGggZGlyZWN0IGNvbXBv
c2l0aW9uIGFuZCB0aGF0IGl0IHJldHVybnMgcmVhc29uYWJsZSBlbm91Z2ggdmFsdWVzLgotVEVT
VF9GKEVHTFN5bmNDb250cm9sVGVzdCwgU3luY1ZhbHVlc1Rlc3QpCi17Ci0gICAgc3RhdGljIGNv
bnN0IERXT1JEIGtQb2xsSW50ZXJ2YWwgICAgPSAxMDsKLSAgICBzdGF0aWMgY29uc3QgaW50IGtO
dW1Qb2xsSXRlcmF0aW9ucyA9IDEwMDsKLQotICAgIGlmICghbUQzRDExQXZhaWxhYmxlKQotICAg
IHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJEM0QxMSBub3QgYXZhaWxhYmxlLCBza2lwcGluZyB0
ZXN0IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBDcmVhdGVE
M0QxMURldmljZSgpOwotICAgIEluaXRpYWxpemVEaXNwbGF5KCk7Ci0gICAgQ3JlYXRlV2luZG93
U3VyZmFjZSgpOwotCi0gICAgaWYgKCFtRGlyZWN0Q29tcG9zaXRpb25TdXJmYWNlQXZhaWxhYmxl
KQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJEaXJlY3QgQ29tcG9zaXRpb24gc3VyZmFj
ZSBub3QgYXZhaWxhYmxlLCBza2lwcGluZyB0ZXN0IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBjaGFyICpleHRlbnNpb25TdHJpbmcgPQotICAgICAg
ICBzdGF0aWNfY2FzdDxjb25zdCBjaGFyICo+KGVnbFF1ZXJ5U3RyaW5nKG1EaXNwbGF5LCBFR0xf
RVhURU5TSU9OUykpOwotICAgIEFTU0VSVF9UUlVFKHN0cnN0cihleHRlbnNpb25TdHJpbmcsICJF
R0xfQ0hST01JVU1fc3luY19jb250cm9sIikpOwotCi0gICAgRUdMdWludDY0S0hSIHVzdCA9IDAs
IG1zYyA9IDAsIHNiYyA9IDA7Ci0gICAgLy8gSXQgYXBwZWFycyB0aGVyZSBpcyBhIHJhY2UgY29u
ZGl0aW9uIHNvIHRoZSB2ZXJ5IGZpcnN0IGNhbGwgdG8gZWdsR2V0U3luY1ZhbHVlc0NIUk9NSVVN
Ci0gICAgLy8gY2FuIGZhaWwgd2l0aGluIEQzRCB3aXRoIERYR0lfRVJST1JfRlJBTUVfU1RBVElT
VElDU19ESVNKT0lOVC4KLSAgICAvLyBTaG91bGQgdGhhdCBiZSBoYW5kbGVkIGluc2lkZSBlZ2xH
ZXRTeW5jVmFsdWVzQ0hST01JVU0/Ci0gICAgZWdsR2V0U3luY1ZhbHVlc0NIUk9NSVVNKG1EaXNw
bGF5LCBtU3VyZmFjZSwgJnVzdCwgJm1zYywgJnNiYyk7Ci0KLSAgICBBU1NFUlRfRUdMX1RSVUUo
ZWdsR2V0U3luY1ZhbHVlc0NIUk9NSVVNKG1EaXNwbGF5LCBtU3VyZmFjZSwgJnVzdCwgJm1zYywg
JnNiYykpOwotICAgIC8vIEluaXRpYWwgbXNjIGFuZCBzYmMgdmFsdWUgc2hvdWxkIGJlIHRydWUu
IEluaXRpYWwgdXN0IHZhbHVlIGlzIHVuc3BlY2lmaWVkLgotICAgIEFTU0VSVF9FUSgwdWxsLCBt
c2MpOwotICAgIEFTU0VSVF9FUSgwdWxsLCBzYmMpOwotCi0gICAgLy8gUGVyZm9ybSBzb21lIHZl
cnkgYmFzaWMgcmVuZGVyaW5nLgotICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAwLjBmLCAxLjBmLCAx
LjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotCi0gICAgQVNTRVJUX0VHTF9UUlVFKGVnbFN3YXBCdWZmZXJzKG1EaXNwbGF5
LCBtU3VyZmFjZSkpOwotCi0gICAgLy8gUG9sbCB1bnRpbCBzYmMgdmFsdWUgaW5jcmVhc2VzLiBO
b3JtYWxseSBpdCBzaG91bGQgY2hhbmdlIHdpdGhpbiAxNi0xNyBtcy4KLSAgICBmb3IgKGludCBp
ID0gMDsgaSA8IGtOdW1Qb2xsSXRlcmF0aW9uczsgaSsrKQotICAgIHsKLSAgICAgICAgOjpTbGVl
cChrUG9sbEludGVydmFsKTsKLSAgICAgICAgQVNTRVJUX0VHTF9UUlVFKGVnbEdldFN5bmNWYWx1
ZXNDSFJPTUlVTShtRGlzcGxheSwgbVN1cmZhY2UsICZ1c3QsICZtc2MsICZzYmMpKTsKLSAgICAg
ICAgaWYgKHNiYyA+IDApCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICAvLyBzYmMg
c2hvdWxkIGNoYW5nZSB0byAxLiBtc2MgYW5kIHVzdCB0byBzb21lIG5vbi16ZXJvIHZhbHVlcy4K
LSAgICBBU1NFUlRfRVEoMXVsbCwgc2JjKTsKLSAgICBBU1NFUlRfR1QodXN0LCAwdWxsKTsKLSAg
ICBBU1NFUlRfR1QobXNjLCAwdWxsKTsKLQotICAgIC8vIFBlcmZvcm0gbW9yZSByZW5kZXJpbmcu
Ci0gICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDEuMGYsIDEuMGYpOwotICAgIGdsQ2xlYXIo
R0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBB
U1NFUlRfRUdMX1RSVUUoZWdsU3dhcEJ1ZmZlcnMobURpc3BsYXksIG1TdXJmYWNlKSk7Ci0KLSAg
ICAvLyBQb2xsIHVudGlsIHNiYyB2YWx1ZSBpbmNyZWFzZXMuIE5vcm1hbGx5IGl0IHNob3VsZCBj
aGFuZ2Ugd2l0aGluIDE2LTE3IG1zLgotICAgIEVHTHVpbnQ2NEtIUiB1c3QyID0gMCwgbXNjMiA9
IDAsIHNiYzIgPSAwOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwga051bVBvbGxJdGVyYXRpb25z
OyBpKyspCi0gICAgewotICAgICAgICA6OlNsZWVwKGtQb2xsSW50ZXJ2YWwpOwotICAgICAgICBB
U1NFUlRfRUdMX1RSVUUoZWdsR2V0U3luY1ZhbHVlc0NIUk9NSVVNKG1EaXNwbGF5LCBtU3VyZmFj
ZSwgJnVzdDIsICZtc2MyLCAmc2JjMikpOwotICAgICAgICBpZiAoc2JjMiA+IHNiYykKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIC8vIHNiYzIgc2hvdWxkIGJlIDIuIG1zYzIgYW5k
IHVzdDIgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBwcmV2aW91cyBtc2MgYW5kIHVzdCB2YWx1ZXMu
Ci0gICAgQVNTRVJUX0VRKDJ1bGwsIHNiYzIpOwotICAgIEFTU0VSVF9HVCgodXN0MiAtIHVzdCks
IDB1bGwpOwotICAgIEFTU0VSVF9HVCgobXNjMiAtIG1zYyksIDB1bGwpOwotfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xUaHJlYWRU
ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdM
VGhyZWFkVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwNWNjYzI1Zjli
Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZWds
X3Rlc3RzL0VHTFRocmVhZFRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAot
I2luY2x1ZGUgImd0ZXN0L2d0ZXN0LmgiCi0KLSNpbmNsdWRlIDxFR0wvZWdsLmg+Ci0jaW5jbHVk
ZSA8RUdML2VnbGV4dC5oPgotCi10eXBlZGVmIEVHTEFQSSBFR0xEaXNwbGF5IEVHTEFQSUVOVFJZ
IEVHTEdldERpc3BsYXkoRUdMTmF0aXZlRGlzcGxheVR5cGUgZGlzcGxheV9pZCk7Ci10eXBlZGVm
IEVHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIEVHTEluaXRpYWxpemUoRUdMRGlzcGxheSBk
cHksIEVHTGludCAqbWFqb3IsIEVHTGludCAqbWlub3IpOwotdHlwZWRlZiBFR0xBUEkgRUdMQ29u
dGV4dCBFR0xBUElFTlRSWSBFR0xHZXRDdXJyZW50Q29udGV4dCh2b2lkKTsKLXR5cGVkZWYgRUdM
QVBJIEVHTFN1cmZhY2UgRUdMQVBJRU5UUlkgRUdMR2V0Q3VycmVudFN1cmZhY2UoRUdMaW50IHJl
YWRkcmF3KTsKLXR5cGVkZWYgRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgRUdMVGVybWlu
YXRlKEVHTERpc3BsYXkgZHB5KTsKLQotY2xhc3MgRUdMVGhyZWFkVGVzdCA6IHB1YmxpYyB0ZXN0
aW5nOjpUZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7fQotICAg
IHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHt9Ci0KLSAgICBFR0xHZXREaXNwbGF5ICptR2V0RGlz
cGxheTsKLSAgICBFR0xJbml0aWFsaXplICptSW5pdGlhbGl6ZTsKLSAgICBFR0xHZXRDdXJyZW50
Q29udGV4dCAqbUdldEN1cnJlbnRDb250ZXh0OwotICAgIEVHTEdldEN1cnJlbnRTdXJmYWNlICpt
R2V0Q3VycmVudFN1cmZhY2U7Ci0KLSAgICBFR0xEaXNwbGF5IG1EaXNwbGF5OwotCi0gICAgSE1P
RFVMRSBtRUdMOwotICAgIEhNT0RVTEUgbUdMRVN2MjsKLQotICAgIHN0YXRpYyBEV09SRCBXSU5B
UEkgVGhyZWFkaW5nVGVzdEVudHJ5UG9pbnQoTFBWT0lEIHRoaXNQb2ludGVyKTsKLQotICBwcml2
YXRlOgotICAgIHZvaWQgVGhyZWFkaW5nVGVzdCgpOwotfTsKLQotRFdPUkQgV0lOQVBJIEVHTFRo
cmVhZFRlc3Q6OlRocmVhZGluZ1Rlc3RFbnRyeVBvaW50KExQVk9JRCBscFBhcmFtZXRlcikKLXsK
LSAgICBFR0xUaHJlYWRUZXN0ICp0ZXN0ID0gKEVHTFRocmVhZFRlc3QgKilscFBhcmFtZXRlcjsK
LSAgICB0ZXN0LT5UaHJlYWRpbmdUZXN0KCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZvaWQgRUdM
VGhyZWFkVGVzdDo6VGhyZWFkaW5nVGVzdCgpCi17Ci0gICAgbUVHTCA9IExvYWRMaWJyYXJ5KFRF
WFQoImxpYkVHTC5kbGwiKSk7Ci0gICAgbUdMRVN2MiA9IExvYWRMaWJyYXJ5KFRFWFQoImxpYkdM
RVN2Mi5kbGwiKSk7Ci0KLSAgICBFWFBFQ1RfVFJVRShtRUdMICE9IE5VTEwpOwotICAgIEVYUEVD
VF9UUlVFKG1HTEVTdjIgIT0gTlVMTCk7Ci0KLSAgICBtR2V0RGlzcGxheSA9IChFR0xHZXREaXNw
bGF5ICopR2V0UHJvY0FkZHJlc3MobUVHTCwgImVnbEdldERpc3BsYXkiKTsKLSAgICBtSW5pdGlh
bGl6ZSA9IChFR0xJbml0aWFsaXplICopR2V0UHJvY0FkZHJlc3MobUVHTCwgImVnbEluaXRpYWxp
emUiKTsKLSAgICBtR2V0Q3VycmVudENvbnRleHQgPSAoRUdMR2V0Q3VycmVudENvbnRleHQgKilH
ZXRQcm9jQWRkcmVzcyhtRUdMLCAiZWdsR2V0Q3VycmVudENvbnRleHQiKTsKLSAgICBtR2V0Q3Vy
cmVudFN1cmZhY2UgPSAoRUdMR2V0Q3VycmVudFN1cmZhY2UgKilHZXRQcm9jQWRkcmVzcyhtRUdM
LCAiZWdsR2V0Q3VycmVudFN1cmZhY2UiKTsKLQotICAgIEVYUEVDVF9UUlVFKG1HZXREaXNwbGF5
ICE9IE5VTEwpOwotICAgIEVYUEVDVF9UUlVFKG1Jbml0aWFsaXplICE9IE5VTEwpOwotICAgIEVY
UEVDVF9UUlVFKG1HZXRDdXJyZW50Q29udGV4dCAhPSBOVUxMKTsKLSAgICBFWFBFQ1RfVFJVRSht
R2V0Q3VycmVudFN1cmZhY2UgIT0gTlVMTCk7Ci0KLSAgICBtRGlzcGxheSA9IG1HZXREaXNwbGF5
KEVHTF9EM0QxMV9FTFNFX0QzRDlfRElTUExBWV9BTkdMRSk7Ci0KLSAgICBFWFBFQ1RfVFJVRSht
RGlzcGxheSE9IEVHTF9OT19ESVNQTEFZKTsKLQotICAgIG1Jbml0aWFsaXplKG1EaXNwbGF5LCBO
VUxMLCBOVUxMKTsKLSAgICBtR2V0Q3VycmVudENvbnRleHQoKTsKLX0KLQotVEVTVF9GKEVHTFRo
cmVhZFRlc3QsIHRocmVhZF9pbml0X2NyYXNoKQotewotICAgIERXT1JEIHRocmVhZElkOwotICAg
IEhBTkRMRSB0aHJlYWRIYW5kbGUgPSBDcmVhdGVUaHJlYWQoTlVMTCwgMCwgRUdMVGhyZWFkVGVz
dDo6VGhyZWFkaW5nVGVzdEVudHJ5UG9pbnQsIHRoaXMsIDAsICZ0aHJlYWRJZCk7Ci0gICAgRVhQ
RUNUX1RSVUUodGhyZWFkSGFuZGxlICE9IE5VTEwpOwotCi0gICAgLy8gd2FpdCBmb3Igc2lnbmFs
IGZyb20gdGhyZWFkCi0gICAgRFdPUkQgd2FpdFJlc3VsdCA9IFdhaXRGb3JTaW5nbGVPYmplY3Qo
dGhyZWFkSGFuZGxlLCAxMDAwKTsKLSAgICBFWFBFQ1RfRVEod2FpdFJlc3VsdCwgV0FJVF9PQkpF
Q1RfMCk7Ci0KLSAgICAvLyBjcmFzaCwgYmVjYXVzZSB0aGUgVExTIHZhbHVlIGlzIE5VTEwgb24g
bWFpbiB0aHJlYWQKLSAgICBtR2V0Q3VycmVudFN1cmZhY2UoRUdMX0RSQVcpOwotICAgIG1HZXRD
dXJyZW50Q29udGV4dCgpOwotCi0gICAgYXV0byB0ZXJtaW5hdGUgPSAoRUdMVGVybWluYXRlICop
R2V0UHJvY0FkZHJlc3MobUVHTCwgImVnbFRlcm1pbmF0ZSIpOwotICAgIHRlcm1pbmF0ZShtRGlz
cGxheSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
ZWdsX3Rlc3RzL0VHTFgxMVZpc3VhbFRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2VnbF90ZXN0cy9FR0xYMTFWaXN1YWxUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNGQ1MTc5OTY0MjMuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvRUdMWDExVmlzdWFsVGVzdC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSwyMTYgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNSBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIEVHTFgxMVZp
c3VhbFRlc3QuY3BwOiB0ZXN0cyBmb3IgRUdMX0FOR0xFX3gxMV92aXN1YWwgZXh0ZW5zaW9uCi0K
LSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgotCi0jaW5jbHVkZSA8RUdML2VnbC5oPgotI2luY2x1
ZGUgPEVHTC9lZ2xleHQuaD4KLSNpbmNsdWRlIDxYMTEvWGxpYi5oPgotCi0jaW5jbHVkZSAiT1NX
aW5kb3cuaCIKLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotI2luY2x1ZGUgIngx
MS9YMTFXaW5kb3cuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsK
LQotY29uc3QgRUdMaW50IGNvbnRleHRBdHRyaWJzW10gPSB7RUdMX0NPTlRFWFRfQ0xJRU5UX1ZF
UlNJT04sIDIsIEVHTF9OT05FfTsKLX0KLQotY2xhc3MgRUdMWDExVmlzdWFsSGludFRlc3QgOiBw
dWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGFuZ2xlOjpQbGF0Zm9ybVBhcmFtZXRlcnM+
Ci17Ci0gIHB1YmxpYzoKLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IG1FZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkVHTEdFVFBM
QVRGT1JNRElTUExBWUVYVFBST0M+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImVn
bEdldFBsYXRmb3JtRGlzcGxheUVYVCIpKTsKLQotICAgICAgICBtRGlzcGxheSA9IFhPcGVuRGlz
cGxheShOVUxMKTsKLSAgICB9Ci0KLSAgICBzdGQ6OnZlY3RvcjxFR0xpbnQ+IGdldERpc3BsYXlB
dHRyaWJ1dGVzKGludCB2aXN1YWxJZCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHN0ZDo6dmVjdG9y
PEVHTGludD4gYXR0cmliczsKLQotICAgICAgICBhdHRyaWJzLnB1c2hfYmFjayhFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9BTkdMRSk7Ci0gICAgICAgIGF0dHJpYnMucHVzaF9iYWNrKEdldFBhcmFt
KCkuZ2V0UmVuZGVyZXIoKSk7Ci0gICAgICAgIGF0dHJpYnMucHVzaF9iYWNrKEVHTF9YMTFfVklT
VUFMX0lEX0FOR0xFKTsKLSAgICAgICAgYXR0cmlicy5wdXNoX2JhY2sodmlzdWFsSWQpOwotICAg
ICAgICBhdHRyaWJzLnB1c2hfYmFjayhFR0xfTk9ORSk7Ci0KLSAgICAgICAgcmV0dXJuIGF0dHJp
YnM7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgaW50IGNob29zZURpZmZlcmVudFZpc3VhbCh1bnNp
Z25lZCBpbnQgdmlzdWFsSWQpCi0gICAgewotICAgICAgICBpbnQgbnVtVmlzdWFsczsKLSAgICAg
ICAgWFZpc3VhbEluZm8gdmlzdWFsVGVtcGxhdGU7Ci0gICAgICAgIHZpc3VhbFRlbXBsYXRlLnNj
cmVlbiA9IERlZmF1bHRTY3JlZW4obURpc3BsYXkpOwotCi0gICAgICAgIFhWaXN1YWxJbmZvICp2
aXN1YWxzID0KLSAgICAgICAgICAgIFhHZXRWaXN1YWxJbmZvKG1EaXNwbGF5LCBWaXN1YWxTY3Jl
ZW5NYXNrLCAmdmlzdWFsVGVtcGxhdGUsICZudW1WaXN1YWxzKTsKLSAgICAgICAgRVhQRUNUX1RS
VUUobnVtVmlzdWFscyA+PSAyKTsKLQotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVZp
c3VhbHM7ICsraSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHZpc3VhbHNbaV0udmlzdWFs
aWQgIT0gdmlzdWFsSWQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IHJlc3Vs
dCA9IHZpc3VhbHNbaV0udmlzdWFsaWQ7Ci0gICAgICAgICAgICAgICAgWEZyZWUodmlzdWFscyk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0K
LSAgcHJvdGVjdGVkOgotICAgIFBGTkVHTEdFVFBMQVRGT1JNRElTUExBWUVYVFBST0MgbUVnbEdl
dFBsYXRmb3JtRGlzcGxheUVYVDsKLSAgICBEaXNwbGF5ICptRGlzcGxheTsKLX07Ci0KLS8vIFRl
c3QgdGhhdCBkaXNwbGF5IGNyZWF0aW9uIGZhaWxzIGlmIHRoZSB2aXN1YWwgSUQgcGFzc2VkIGlu
IGludmFsaWQuCi1URVNUX1AoRUdMWDExVmlzdWFsSGludFRlc3QsIEludmFsaWRWaXN1YWxJRCkK
LXsKLSAgICAvLyBUaGUgdGVzdCBwbGF0Zm9ybSB3aWxsIGxvZyBhbiBlcnJvciBpbiB0aGlzIG5l
Z2F0aXZlIHRlc3QuCi0gICAgSWdub3JlQU5HTEVQbGF0Zm9ybU1lc3NhZ2VzKCk7Ci0KLSAgICBz
dGF0aWMgY29uc3QgaW50IGdJbnZhbGlkVmlzdWFsSWQgPSAtMTsKLSAgICBhdXRvIGF0dHJpYnV0
ZXMgICAgICAgICAgICAgICAgICAgPSBnZXREaXNwbGF5QXR0cmlidXRlcyhnSW52YWxpZFZpc3Vh
bElkKTsKLQotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9Ci0gICAgICAgIG1FZ2xHZXRQbGF0Zm9y
bURpc3BsYXlFWFQoRUdMX1BMQVRGT1JNX0FOR0xFX0FOR0xFLCBFR0xfREVGQVVMVF9ESVNQTEFZ
LCBhdHRyaWJ1dGVzLmRhdGEoKSk7Ci0gICAgQVNTRVJUX1RSVUUoZGlzcGxheSAhPSBFR0xfTk9f
RElTUExBWSk7Ci0KLSAgICBBU1NFUlRfVFJVRShFR0xfRkFMU0UgPT0gZWdsSW5pdGlhbGl6ZShk
aXNwbGF5LCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAgQVNTRVJUX0VHTF9FUlJPUihFR0xfTk9U
X0lOSVRJQUxJWkVEKTsKLX0KLQotLy8gVGVzdCB0aGF0IGNvbnRleHQgY3JlYXRpb24gd2l0aCBh
IHZpc3VhbCBJRCBzdWNjZWVkcywgdGhhdCB0aGUgY29udGV4dCBleHBvc2VzCi0vLyBvbmx5IG9u
ZSBjb25maWcsIGFuZCB0aGF0IGEgY2xlYXIgb24gYSBzdXJmYWNlIHdpdGggdGhpcyBjb25maWcg
d29ya3MuCi1URVNUX1AoRUdMWDExVmlzdWFsSGludFRlc3QsIFZhbGlkVmlzdWFsSURBbmRDbGVh
cikKLXsKLSAgICAvLyBXZSdsbCB0ZXN0IHRoZSBleHRlbnNpb24gd2l0aCBvbmUgdmlzdWFsIElE
IGJ1dCB3ZSBkb24ndCBjYXJlIHdoaWNoIG9uZS4gVGhpcyBtZWFucyB3ZQotICAgIC8vIGNhbiB1
c2UgT1NXaW5kb3cgdG8gY3JlYXRlIGEgd2luZG93IGFuZCBqdXN0IGdyYWIgaXRzIHZpc3VhbC4K
LSAgICBPU1dpbmRvdyAqb3NXaW5kb3cgPSBDcmVhdGVPU1dpbmRvdygpOwotICAgIG9zV2luZG93
LT5pbml0aWFsaXplKCJFR0xYMTFWaXN1YWxIaW50VGVzdCIsIDUwMCwgNTAwKTsKLSAgICBvc1dp
bmRvdy0+c2V0VmlzaWJsZSh0cnVlKTsKLQotICAgIFdpbmRvdyB4V2luZG93ID0gb3NXaW5kb3ct
PmdldE5hdGl2ZVdpbmRvdygpOwotCi0gICAgWFdpbmRvd0F0dHJpYnV0ZXMgd2luZG93QXR0cmli
dXRlczsKLSAgICBBU1NFUlRfTkUoMCwgWEdldFdpbmRvd0F0dHJpYnV0ZXMobURpc3BsYXksIHhX
aW5kb3csICZ3aW5kb3dBdHRyaWJ1dGVzKSk7Ci0gICAgaW50IHZpc3VhbElkID0gd2luZG93QXR0
cmlidXRlcy52aXN1YWwtPnZpc3VhbGlkOwotCi0gICAgYXV0byBhdHRyaWJ1dGVzID0gZ2V0RGlz
cGxheUF0dHJpYnV0ZXModmlzdWFsSWQpOwotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9Ci0gICAg
ICAgIG1FZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQoRUdMX1BMQVRGT1JNX0FOR0xFX0FOR0xFLCBF
R0xfREVGQVVMVF9ESVNQTEFZLCBhdHRyaWJ1dGVzLmRhdGEoKSk7Ci0gICAgQVNTRVJUX05FKEVH
TF9OT19ESVNQTEFZLCBkaXNwbGF5KTsKLQotICAgIEFTU0VSVF9UUlVFKEVHTF9UUlVFID09IGVn
bEluaXRpYWxpemUoZGlzcGxheSwgbnVsbHB0ciwgbnVsbHB0cikpOwotCi0gICAgLy8gV2hpbGUg
dGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgdGhlIGV4dGVuc2lvbiwgdGVzdCB0aGF0IG91ciBpbXBs
ZW1lbnRhdGlvbiByZXR1cm5zIG9ubHkgb25lCi0gICAgLy8gY29uZmlnLCB3aXRoIHRoZSBzYW1l
IG5hdGl2ZSB2aXN1YWwgSWQgdGhhdCB3ZSBwcm92aWRlZC4KLSAgICBpbnQgbkNvbmZpZ3MgPSAw
OwotICAgIEFTU0VSVF9UUlVFKEVHTF9UUlVFID09IGVnbEdldENvbmZpZ3MoZGlzcGxheSwgbnVs
bHB0ciwgMCwgJm5Db25maWdzKSk7Ci0gICAgQVNTRVJUX0VRKDEsIG5Db25maWdzKTsKLQotICAg
IGludCBuUmV0dXJuZWRDb25maWdzID0gMDsKLSAgICBFR0xDb25maWcgY29uZmlnOwotICAgIEFT
U0VSVF9UUlVFKEVHTF9UUlVFID09IGVnbEdldENvbmZpZ3MoZGlzcGxheSwgJmNvbmZpZywgMSwg
Jm5SZXR1cm5lZENvbmZpZ3MpKTsKLSAgICBBU1NFUlRfRVEobkNvbmZpZ3MsIG5SZXR1cm5lZENv
bmZpZ3MpOwotCi0gICAgRUdMaW50IGVnbE5hdGl2ZUlkOwotICAgIEFTU0VSVF9UUlVFKEVHTF9U
UlVFID09IGVnbEdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9OQVRJVkVfVklT
VUFMX0lELCAmZWdsTmF0aXZlSWQpKTsKLSAgICBBU1NFUlRfRVEodmlzdWFsSWQsIGVnbE5hdGl2
ZUlkKTsKLQotICAgIC8vIEZpbmFsbHksIHRyeSB0byBkbyBhIGNsZWFyIG9uIHRoZSB3aW5kb3cu
Ci0gICAgRUdMQ29udGV4dCBjb250ZXh0ID0gZWdsQ3JlYXRlQ29udGV4dChkaXNwbGF5LCBjb25m
aWcsIEVHTF9OT19DT05URVhULCBjb250ZXh0QXR0cmlicyk7Ci0gICAgQVNTRVJUX05FKEVHTF9O
T19DT05URVhULCBjb250ZXh0KTsKLQotICAgIEVHTFN1cmZhY2Ugd2luZG93ID0gZWdsQ3JlYXRl
V2luZG93U3VyZmFjZShkaXNwbGF5LCBjb25maWcsIHhXaW5kb3csIG51bGxwdHIpOwotICAgIEFT
U0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgd2luZG93
LCB3aW5kb3csIGNvbnRleHQpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgZ2xW
aWV3cG9ydCgwLCAwLCA1MDAsIDUwMCk7Ci0gICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDEu
MGYsIDEuMGYpOwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDI1MCwgMjUwLCAwLCAwLCAyNTUs
IDI1NSk7Ci0KLSAgICAvLyBUZWFyZG93bgotICAgIGVnbERlc3Ryb3lTdXJmYWNlKGRpc3BsYXks
IHdpbmRvdyk7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBlZ2xEZXN0cm95Q29u
dGV4dChkaXNwbGF5LCBjb250ZXh0KTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLQotICAg
IFNhZmVEZWxldGUob3NXaW5kb3cpOwotCi0gICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgRUdM
X05PX1NVUkZBQ0UsIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fQ09OVEVYVCk7Ci0gICAgZWdsVGVy
bWluYXRlKGRpc3BsYXkpOwotfQotCi0vLyBUZXN0IHRoYXQgRUdMX0JBRF9NQVRDSCBpcyBnZW5l
cmF0ZWQgd2hlbiB0cnlpbmcgdG8gY3JlYXRlIGFuIEVHTCB3aW5kb3cgZnJvbQotLy8gYW4gWDEx
IHdpbmRvdyB3aG9zZSB2aXN1YWwgSUQgZG9lc24ndCBtYXRjaCB0aGUgdmlzdWFsIElEIHBhc3Nl
ZCBhdCBkaXNwbGF5IGNyZWF0aW9uLgotVEVTVF9QKEVHTFgxMVZpc3VhbEhpbnRUZXN0LCBJbnZh
bGlkV2luZG93VmlzdWFsSUQpCi17Ci0gICAgLy8gR2V0IHRoZSBkZWZhdWx0IHZpc3VhbCBJRCwg
YXMgYSBnb29kIGd1ZXNzIG9mIGEgdmlzdWFsIGlkIGZvciB3aGljaCBkaXNwbGF5Ci0gICAgLy8g
Y3JlYXRpb24gd2lsbCBzdWNjZWVkLgotICAgIGludCB2aXN1YWxJZDsKLSAgICB7Ci0gICAgICAg
IE9TV2luZG93ICpvc1dpbmRvdyA9IENyZWF0ZU9TV2luZG93KCk7Ci0gICAgICAgIG9zV2luZG93
LT5pbml0aWFsaXplKCJFR0xYMTFWaXN1YWxIaW50VGVzdCIsIDUwMCwgNTAwKTsKLSAgICAgICAg
b3NXaW5kb3ctPnNldFZpc2libGUodHJ1ZSk7Ci0KLSAgICAgICAgV2luZG93IHhXaW5kb3cgPSBv
c1dpbmRvdy0+Z2V0TmF0aXZlV2luZG93KCk7Ci0KLSAgICAgICAgWFdpbmRvd0F0dHJpYnV0ZXMg
d2luZG93QXR0cmlidXRlczsKLSAgICAgICAgQVNTRVJUX05FKDAsIFhHZXRXaW5kb3dBdHRyaWJ1
dGVzKG1EaXNwbGF5LCB4V2luZG93LCAmd2luZG93QXR0cmlidXRlcykpOwotICAgICAgICB2aXN1
YWxJZCA9IHdpbmRvd0F0dHJpYnV0ZXMudmlzdWFsLT52aXN1YWxpZDsKLQotICAgICAgICBTYWZl
RGVsZXRlKG9zV2luZG93KTsKLSAgICB9Ci0KLSAgICBhdXRvIGF0dHJpYnV0ZXMgPSBnZXREaXNw
bGF5QXR0cmlidXRlcyh2aXN1YWxJZCk7Ci0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0KLSAgICAg
ICAgbUVnbEdldFBsYXRmb3JtRGlzcGxheUVYVChFR0xfUExBVEZPUk1fQU5HTEVfQU5HTEUsIEVH
TF9ERUZBVUxUX0RJU1BMQVksIGF0dHJpYnV0ZXMuZGF0YSgpKTsKLSAgICBBU1NFUlRfTkUoRUdM
X05PX0RJU1BMQVksIGRpc3BsYXkpOwotCi0gICAgQVNTRVJUX1RSVUUoRUdMX1RSVUUgPT0gZWds
SW5pdGlhbGl6ZShkaXNwbGF5LCBudWxscHRyLCBudWxscHRyKSk7Ci0KLQotICAgIC8vIEluaXRp
YWxpemUgdGhlIHdpbmRvdyB3aXRoIGEgdmlzdWFsIGlkIGRpZmZlcmVudCBmcm9tIHRoZSBkaXNw
bGF5J3MgdmlzdWFsIGlkCi0gICAgaW50IG90aGVyVmlzdWFsSWQgPSBjaG9vc2VEaWZmZXJlbnRW
aXN1YWwodmlzdWFsSWQpOwotICAgIEFTU0VSVF9ORSh2aXN1YWxJZCwgb3RoZXJWaXN1YWxJZCk7
Ci0KLSAgICBPU1dpbmRvdyAqb3NXaW5kb3cgPSBuZXcgWDExV2luZG93KG90aGVyVmlzdWFsSWQp
OwotICAgIG9zV2luZG93LT5pbml0aWFsaXplKCJFR0xYMTFWaXN1YWxIaW50VGVzdCIsIDUwMCwg
NTAwKTsKLSAgICBvc1dpbmRvdy0+c2V0VmlzaWJsZSh0cnVlKTsKLQotICAgIFdpbmRvdyB4V2lu
ZG93ID0gb3NXaW5kb3ctPmdldE5hdGl2ZVdpbmRvdygpOwotCi0gICAgLy8gQ3JlYXRpbmcgdGhl
IEVHTCB3aW5kb3cgc2hvdWxkIGZhaWwgd2l0aCBFR0xfQkFEX01BVENICi0gICAgaW50IG5SZXR1
cm5lZENvbmZpZ3MgPSAwOwotICAgIEVHTENvbmZpZyBjb25maWc7Ci0gICAgQVNTRVJUX1RSVUUo
RUdMX1RSVUUgPT0gZWdsR2V0Q29uZmlncyhkaXNwbGF5LCAmY29uZmlnLCAxLCAmblJldHVybmVk
Q29uZmlncykpOwotICAgIEFTU0VSVF9FUSgxLCBuUmV0dXJuZWRDb25maWdzKTsKLQotICAgIEVH
TFN1cmZhY2Ugd2luZG93ID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZShkaXNwbGF5LCBjb25maWcs
IHhXaW5kb3csIG51bGxwdHIpOwotICAgIEFTU0VSVF9FUShFR0xfTk9fU1VSRkFDRSwgd2luZG93
KTsKLSAgICBBU1NFUlRfRUdMX0VSUk9SKEVHTF9CQURfTUFUQ0gpOwotCi0gICAgU2FmZURlbGV0
ZShvc1dpbmRvdyk7Ci19Ci0KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRUdMWDExVmlzdWFsSGlu
dFRlc3QsIEVTMl9PUEVOR0woKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZWdsX3Rlc3RzL21lZGlhL3l1dnRlc3QuaW5sIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2VnbF90ZXN0cy9tZWRpYS95dXZ0ZXN0LmlubApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNzI3MWNmODBhZDYuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9lZ2xfdGVzdHMvbWVkaWEveXV2dGVzdC5pbmwK
KysrIC9kZXYvbnVsbApAQCAtMSwxNTQ4ICswLDAgQEAKLS8vIEdFTkVSQVRFRCBGSUxFIC0gRE8g
Tk9UIEVESVQuCi0vLyBHZW5lcmF0ZWQgYnkgc2NyaXB0cy9ibXBfdG9feXV2LnB5IHVzaW5nIGRh
dGEgZnJvbSB5dXZ0ZXN0LmJtcAotLy8KLS8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IHl1dnRlc3Rf
d2lkdGggPSAxMjg7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHl1dnRlc3RfaGVpZ2h0ID0gMTI4Owot
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgeXV2dGVzdF9kYXRhW10gPQotewotICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwxMzIsMTYsMTYsMTYsMTYsMTA1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKLSAgICAyMzUsMjMsMTYsMTYsMTYsMTYsMTYsMTYsNDQsMTUzLDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMTYs
MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsNzgsMjI4LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDE2LDE2LDE2LDE3Myw0NCwxNiwxNiwx
NiwxNiwxNiwxNiw0NCwxNTMsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDE2LDE2LDE2LDIyOCwyMzUsMjM1LDIyMSwxMTIsMTYsMTYsMTYsMTYsMTYs
NzgsMjI4LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMzcsMTYs
MTYsOTIsMjM1LDIzNSwyMzUsMjM1LDE1Myw0NCwxNiwxNiwxNiwxNiwxNiwKLSAgICA5MiwyMjgs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIxMiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2
LDE4NiwyMDMsMjM0LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMTQ2LDE2LDE2LDE2LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIyMSwxMTIsMTYsMTYsMTYsCi0gICAgMTYsMTYsMTYsOTIsMjI4LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMTksMTg3LDE2MCwxNTAsMTUwLDE1MCwxNDAsMTI3LDEyMSwxMjEsMTIxLAotICAgIDE1
MiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMjAz
LDIzNCwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwxNiwxNiwxNiwxMDUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE1
Myw0NCwxNiwKLSAgICAxNiwxNiwxNiwxNiw3OCwyMjgsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjE5LAotICAgIDE4NywxNjAsMTUwLDE1MCwxNTAsMTUwLDE1MCwxNDksMTMy
LDEyMSwxMjEsMTIxLDEyMSwxMjEsMTIxLDE1MiwKLSAgICAxODYsMTg2LDE4NiwxODYsMTg2LDE4
NiwxODYsMTg1LDE1NCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsCi0gICAgMTM0LDEzNCwx
MzQsMTY5LDIzMiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxMywxNzEsMTM1LDEyMCwxMjAsMTIwLDEyMCwx
MjAsMTIwLDEyMCwKLSAgICAxMjAsMTIwLDEyMCwxMjAsMTIwLDE2NywyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMyLAotICAgIDE3MiwxMzQsMjcsMTYs
MTYsMTYsMTMwLDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxNjksMTUxLAotICAgIDQ0LDE2
LDE2LDE2LDE2LDQ0LDE1MywyMzUsMjM1LDIzNSwyMzUsMjM1LDIxOSwxODcsMTYwLDE1MCwKLSAg
ICAxNTAsMTUwLDE1MCwxNTAsMTUwLDE1MCwxNDksMTI5LDEyMSwxMjEsMTIxLDEyMSwxMjEsMTIx
LDEyMSwxODUsCi0gICAgMTg2LDE4NiwxODUsMTQ2LDEyMSwxMjEsMTIyLDEzMSwxMzQsMTM0LDEz
NCwxMzQsMTM0LDEzNCwxMzQsMTM0LAotICAgIDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwx
MzQsMTY5LDIzMiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUs
MjMxLDE1NiwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsCi0gICAgMTIw
LDEyMCwxMjAsMTIwLDEyMCwxMjQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMTg3LDEzNCwKLSAgICAxMzQsMTM0LDEwMSwyNCwxNiwxNiw1NywxMzQsMTM0LDEz
NCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwKLSAgICAxMzQsMTM0LDc1LDE2LDE2LDE2LDE2LDc4
LDIyOCwyMTksMTg3LDE2MCwxNTAsMTUwLDE1MCwxNTAsCi0gICAgMTUwLDE1MCwxNTAsMTUwLDE1
MCwxNDgsMTM0LDEyMSwxMjEsMTIxLDEyMSwxMzYsMTcyLDIyNSwyMTIsMTg2LAotICAgIDE4Niwx
ODYsMTYzLDE1MCwxNTAsMTQ5LDEzOCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEz
NCwKLSAgICAxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDE2OSwy
MzIsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMTMsMTcxLDEzNSwxMjAsMTIwLDEyMCwxMjAs
MTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLAotICAgIDEyMCwxMjAsMTIwLDEyMCwxMzUsMTky
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEzNywxMzQsCi0g
ICAgMTM0LDEzNCwxMzQsODYsMTYsMTYsMTYsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEz
NCwxMzQsCi0gICAgMTM0LDEzNCwxMzQsODYsMjQsMTYsMTYsMTYsNDUsMTI5LDE1MCwxNTAsMTUw
LDE1MCwxNTAsMTU4LAotICAgIDE4NCwyMTQsMjM1LDIzNSwxNzIsMTIxLDEyMSwxMjEsMTIxLDE3
OCwyMzUsMjM1LDIzNSwyMzUsMTg4LDE4NiwKLSAgICAxODYsMTg4LDIwMCwxNTgsMTQ5LDEzOSwx
MzQsMTM0LDEzNCwxNDMsMTU4LDEzNiwxMjEsMTIxLDEyMSwxMjEsCi0gICAgMTQ2LDE3OCwxNjYs
MTQwLDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTQ3LDE5NywxOTksMTQyLAotICAg
IDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxNjQsMjA2LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMzQsMTM0LAotICAgIDEzNCwxOTQsMjM1LDIzNSwz
NywxNiwxNiwxNjYsMjM1LDIzNSwyMzUsMjM1LDIzNSwxOTcsMTQ3LDEzNCwKLSAgICAxMzQsMTM0
LDEzNCwxMzQsMTI2LDY4LDE2LDE2LDE2LDIwLDg3LDE1MCwxNTgsMTg0LDIxNCwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMTk5LDEyNSwxMjEsMTIxLDEyNSwxODEsMjM1LDIzNSwyMzUsMjM1LDIyNiwx
ODYsMTg2LAotICAgIDE4NiwyMTcsMjM1LDIzMiwxNTUsMTM0LDEzNCwxMzQsMTQxLDE1MCwxNTAs
MTc0LDIyNSwxNzgsMTM2LDEyMSwKLSAgICAxMjEsMTIxLDE1NCwxODYsMTg2LDE4NiwyMDAsMTk2
LDE0NywxMzQsMTM0LDEzNCwxMzAsMTIzLDEyMCwxMjAsCi0gICAgMTIwLDEyMCwxMjAsMTIwLDEy
MCwxMzEsMTg1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDEzNCwxMzQsCi0gICAgMTM0LDIzNSwyMzUsMjM1LDExMiwxNiwxNiw1NywyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjA2LDE0NywxMzQsMTM0LDgy
LDIwLDE2LDE2LDE2LDcyLDIyOCwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjMyLDE1NywxMjEsMTIx
LDEyMSwxMjUsMjI1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjAzLDE4NiwxODYsCi0gICAgMjAyLDIz
NSwyMzIsMTYzLDEzNCwxMzQsMTM0LDE2MSwxNTUsMTUwLDE1MCwxNTAsMTc0LDIzMiwyMzUsMjM1
LAotICAgIDIyOCwxNzIsMTIxLDE1MSwxODYsMTg2LDE4NiwxNjUsMTEzLDExMSwxMjAsMTIyLDEy
MCwxMjAsMTIwLDEyMCwKLSAgICAxMjAsMTIwLDEzNSwxNjcsMjA2LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTM0LDEzNCwKLSAg
ICAxMzQsMjM1LDIzNSwyMzUsMjE1LDE2LDE2LDE2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDE0NSwxMzYsMTM0LDExNSw0MiwxNiwxNiwxNiw3
OCwyMjgsMjM1LDIzNSwKLSAgICAyMzUsMTcyLDEyMSwxMjEsMTIxLDEyNSwxODEsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMTg4LDE4NiwxODYsCi0gICAgMjI2LDIzMiwxNjMsMTM0LDEzNCwxMzQs
MTg0LDIzNSwyMzAsMTg3LDE1MCwxNTAsMTUwLDE2MCwyMDMsMjM1LAotICAgIDIzMSwxNTgsMTEx
LDExMSwxNDksMTg2LDE4NiwxODYsMTUxLDExOSwxMjAsMTIwLDEyMCwxMjAsMTIxLDEyNiwKLSAg
ICAxMzMsMTQyLDIzMSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzMsMTY5LDE4OSwKLSAgICAxODksMTg5LDE4OSwxODks
MTg5LDE2LDE2LDE2LDg3LDE4OSwxODksMTg5LDE5NSwyMTcsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMTUwLDE1MCwxNTAsMTY3LDEzNCw3MSwxNiwxNiwxNiw3MSwyMjgsMjM1LAotICAg
IDIzNSwxMjUsMTIxLDEyMSwxNjgsMjI1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxODYs
MTg2LDE4NiwKLSAgICAyMzIsMTYzLDEzNCwxMzQsMTM0LDE4NCwyMzUsMjM1LDIzNSwyMzUsMTky
LDE1MCwxNTAsMTUwLDE0OCwxMzAsCi0gICAgMTExLDExMSwxMTEsMTExLDExMSwxNDksMTY2LDEz
MywxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMSwxMzMsMTM0LAotICAgIDEzNCwxMzQsMTM0LDE1Miwy
MzIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjMzLDIwMiwxODksMTg5LAotICAgIDE4OSwxODksMTg5LDE4OSwxODksMzIsMTYsMTYsMTYsODcs
MTg5LDE4OSwxODksMTg5LDE5NSwyMTcsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDE1MCwxNTAsMTUw
LDIzNSwxODQsMTM0LDc1LDE2LDE2LDE2LDIwLDc3LAotICAgIDEyMSw5OCwxMjEsMTIxLDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjEyLDE4NiwxODYsMTg1LAotICAgIDE2MywxMzQs
MTM0LDEzNCwxODQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjAwLDE1MywxMjYsMTExLDExMSwK
LSAgICAxMTEsMTExLDExMSwxMjUsMTQ4LDEzNCwxMjAsMTIwLDEyMCwxMjAsMTIxLDE1MiwyMjQs
MjAwLDEyOSwxMzIsCi0gICAgMTM0LDEzNCwxMzQsMTM0LDEzNywyMzIsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMywyMDIsMTg5LDE4OSwxODksCi0gICAg
MTg5LDE4OSwxODksMTg5LDE4OSwxNDAsMjcsMTYsMTYsMTYsMTg5LDE4OSwxODksMTg5LDE4OSwx
ODksCi0gICAgMTk1LDIxNywyMzUsMjM1LDE1MCwxNTAsMTUwLDIzNSwyMzUsMTk0LDE0Nyw3NSwx
NiwxNiwxNiwxNiwKLSAgICAxNiwxNiw1MiwxNTcsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwxODgsMTg2LDE4NSwxNDksCi0gICAgMTM0LDEzNCwxMzQsMTg0LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMTYzLDExMSwxMTEsMTExLAotICAgIDExMiwxMTgsMTI3LDEyMCwx
MjAsMTIwLDEyMCwxMjAsMTIyLDE1MCwxMzksMTIxLDE1MywyMzUsMjM1LDIwNiwKLSAgICAxNDAs
MTM0LDEzNCwxMzQsMTM0LDEzNCwxNzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzMsMjAyLDE4OSwxODksMTg5LDE2MSwKLSAgICAxMzQsMTM0LDEzNCwyMzUsMjM1LDIz
NSwxNzMsMTYsMTYsMTYsMjM1LDIzMiwyMTIsMTkyLDE4OSwxODksCi0gICAgMTg5LDE4OSwxODks
MTg5LDE4OSwxODksMTc2LDIzMywyMzUsMjM1LDIzNSwyMTYsMTA5LDMxLDE2LDE2LAotICAgIDE2
LDE2LDE2LDE1MiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4NiwxODUsMTQ5LDEz
NCwKLSAgICAxMzQsMTM0LDE4NCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMxLDE1OCwx
MTEsMTExLDExNSwxMjAsCi0gICAgMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTMxLDE1OSwxODAs
MTg2LDE3NCwxMjEsMTIxLDE5OSwyMzUsMjM1LAotICAgIDIzNSwyMjcsMTQ0LDEzNCwxMzQsMTM0
LDEzNCwxNDYsMjMxLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjIwLDE5OCwxODksMTg5LDE4
OSwyMTIsMTk3LAotICAgIDEzNCwxMzQsMTM0LDE2MywyMzUsMjM1LDIzNSwzNywxNiwxNiwxNjYs
MjM1LDIzNSwyMzIsMjEyLDE5MiwKLSAgICAxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5
LDE4OSwxODksMjA1LDIzMywyMzUsMTg0LDExOSw4OSwKLSAgICA0OSwxNiwxNiwzNywxNTMsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM0LDE3MCwxNDQsMTM0LDEzNCwKLSAgICAxMzQsMTg0LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzEsMTQ2LDExMiwxMTYsMTIwLDEyMCwxMjAsCi0g
ICAgMTIwLDEyMCwxMjAsMTI4LDE2NywyMDYsMjM1LDIzMSwxODYsMTg2LDE4NiwxMjMsMTIxLDE0
MywyMzUsMjM1LAotICAgIDIzNSwyMzUsMjIzLDEyMiwxMzIsMTM0LDEzNCwxMzQsMTM3LDIyOCwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMTAsMTg5LDE4OSwxODksMTg5LDIxMiwyMzUsMjM1LAotICAgIDE0
NCwxMzQsMTM0LDEzNCwyMDMsMjM1LDIzNSwxMTIsMTYsMTYsNTcsMjM1LDIzNSwyMzUsMjM1LDIz
MiwKLSAgICAyMTIsMTk1LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwx
OTQsMjA4LDE2NSwxMzMsCi0gICAgMTIzLDIwLDE2LDE2LDE2LDU5LDIyNSwyMzUsMjM1LDIzNSwy
MzIsMTU3LDEzNCwxMzQsMTM0LDEzNCwKLSAgICAxODQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwxNTMsMTE3LDEyMCwxMjAsMTIwLDEyMCwxMjAsCi0gICAgMTIzLDEzMiwxNDIsMTUw
LDE3NCwyMzUsMjM1LDIzNSwxOTEsMTg2LDE4NiwxNjUsMTIxLDEyMSwxOTksMjM1LAotICAgIDIz
NSwyMzUsMjM1LDE5NiwxMjksMTMyLDEzNCwxMzQsMTM0LDEzOSwyMzIsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxMywx
ODksMTg5LDE4OSwxOTEsMjEzLDIzNSwyMzUsMjM1LAotICAgIDIwNiwxNDcsMTM0LDEzNCwxMzQs
MTc1LDIzNSwyMTUsMjMsMTYsMTYsMTY2LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwxNzksMTUwLDE2NCwxODcsMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODMsCi0g
ICAgMTY1LDExMSwyNCwxNiwxNiwxNiw1NywyMjUsMjM1LDIzNSwxNjYsMTM1LDE2OSwxODksMTg5
LDE4OSwKLSAgICAxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODUsMTcxLDEyNywxMjAsMTIwLDEy
MCwxMjAsMTIwLDEzNSwxODgsCi0gICAgMjA4LDE1NSwxNTAsMTUwLDE1MCwyMDgsMjM1LDIzNSwy
MTUsMTg2LDE4NiwxODYsMTIxLDEyMSwxNDMsMjMyLAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjI5LDE1MSwxMzQsMTM0LDEzNCwxNjMsMjMyLDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE5MSwxODksMTg5LDE5MSwyMzEsMjM1
LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMjUsMTM3LDEzNCwxMzQsMTM0LDIzNSwyMzUsMTEyLDE2
LDE2LDU3LDIyOCwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwxNTIsMTUwLDE1MCwyMTks
MjM1LDIzNSwyMTcsMTk1LDE4OSwxODksMTg5LDE4OSwxODksCi0gICAgMTg5LDE4OSwxNzgsOTIs
MTYsMTYsMTYsMTYsNTcsMTQwLDEzNSwxNzMsMTg5LDE4OSwxODksMTg5LAotICAgIDE4OSwxODks
MTg5LDE4OSwxODAsMTQ4LDEyNSwxMjAsMTIwLDEyMCwxMjAsMTIwLDE0OSwxOTksMjM1LDIzNSwK
LSAgICAyMzUsMjMwLDE3OSwxNTAsMTUwLDE2NiwyMzUsMjM1LDIzNSwxODYsMTg2LDE4NiwxMjUs
MTIxLDEyMSwxNjEsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEyMiwxMzQsMTM0
LDEzNCwxNjksMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMTg5LDE4OSwxODksMjE3LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIzNSwyMDMsMTM0LDEzNCwxMzQsMTcwLDIxNywyMTUsMjMsMTYsMTYsOTIsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMTUwLDE1MCwxNTAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjI3LDE3NywxODAsMTg5LAotICAgIDE4OSwxODksMTg5LDE4OSwxMDIsMTYsMTYsMTYsMTYsNTcs
MTY5LDE4OSwxODksMTg5LDE4OSwxODksCi0gICAgMTg5LDE4OSwxNzAsMTQwLDEyMCwxMjAsMTIw
LDEyMCwxMjAsMTIyLDE0NiwxNzgsMjMzLDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjI3LDE1
MiwxNTAsMTUwLDE5NSwyMzUsMjM1LDE4NiwxODYsMTg2LDE4OSwxMjEsMTIxLDEyMSwKLSAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTExLDEyMiwxMzQsMTM0LDEzNCwxNjAsMjM1LDIz
NSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxODks
MTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwxNDQsMTM0
LDEzNCwxMzQsMTQ5LDE4NSwxMjcsMTYsMTYsMTYsMTA1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwy
MzUsMTUwLDE1MCwxNTAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEyNSwxMjEsMTM1LAot
ICAgIDIwMCwxOTEsMTg5LDE4OSwxODksMTI0LDM4LDE2LDE2LDE2LDEyNCwxNzgsMTcyLDE0Mywx
NTYsMTQ5LAotICAgIDEzOSwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjgsMTU2LDE4NSwxODks
MTg5LDE5NSwxNzYsOTUsOTUsCi0gICAgMTUyLDIzNSwyMzUsMTk1LDE1MCwxNTAsMTUyLDIyMiwy
MzUsMTg2LDE4NiwxODYsMjM1LDEyMSwxMjEsMTIxLAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwxMTEsMTExLDEzMiwxMzQsMTM0LDEzNCwyMTMsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMzLDE4OSwxODksMTg5LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIwMywxMzksMTM0LDEzNCwxMzQsMTUyLDE4
NiwzMywxNiwxNiwxNiwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDE1MCwxNTAsMTUwLDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIyOCwxMjEsMTIxLDEyMSwKLSAgICAyMDgsMTg5LDE4OSwxODks
MTg5LDE4OSwxODksMzIsMjMsNTgsMTA3LDEyMCwxMjAsMTIwLDEyMCwxMjAsCi0gICAgMTIwLDEy
MCwxMjAsMTIwLDEyMCwxNDksMTUwLDExMSwxMTEsMTUyLDE4OSwxODksMTg5LDE4OSwxNjMsOTcs
Ci0gICAgOTUsOTUsOTUsMTUyLDE2OCwxNTAsMTUwLDE2OCwyMzUsMTg2LDE4NiwxODYsMjM1LDEy
MSwxMjEsMTIxLAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMTEsMTExLDExNywx
NDcsMTM0LDEzNCwxODIsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjEwLDE4OSwxODksMTkxLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIz
NSwyMzUsMjM1LDIzNSwyMjksMTc3LDEzNCwxMzQsMTM0LDE0OSwxMzgsMTYsMTYsMTYsNzgsMjM1
LAotICAgIDIzNSwyMzUsMjM1LDE1MCwxNTAsMTUwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE5
MiwxMjEsMTIxLDE1OCwKLSAgICAxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODAsMTI2LDExNSwx
MjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsCi0gICAgMTIwLDEyMCwxMjMsMTM0LDIwMywyMzUs
MTE1LDExMSwxMTEsMTc2LDIxNiwxOTIsMTg5LDE4OSwxODksMTYzLAotICAgIDk3LDk1LDk1LDk1
LDIyNCwxNTIsMTUwLDE1MCwyMDgsMTg2LDE4NiwxODYsMjM1LDEyMSwxMjEsMTIxLAotICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMTEsMTExLDExMSwyMTAsMTM0LDEzNCwxNDAsMTk3
LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTkxLDE4OSwx
ODksMjEzLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDE0NCwxMzQsMTM0LDEzNCwxNzAsMzIsMTYsMTYsMTYsMTQ0LAotICAgIDIzNCwyMzUsMjM1
LDE1MCwxNTAsMTUwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE1MywxMjEsMTI3LDE4OSwKLSAg
ICAxODksMTg5LDIwMSwyMTMsMTYyLDEyOCwxMjAsMTIwLDEyMCwxMjAsMTIwLDExNywxMDEsMTQw
LDE1NiwxNzIsCi0gICAgMTczLDE2NiwxNDgsMTM0LDEzNywxODcsMTExLDExMSwxMTEsMjM1LDIz
NSwyMzIsMjEwLDE4OSwxODksMTg5LAotICAgIDE2Myw5Nyw5NSw5NSwyMzUsMTg3LDE1MCwxNTAs
MTY2LDE4NiwxODYsMTg2LDIzNSwxMjEsMTIxLDEyMSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMTExLDExMSwxMTEsMjM1LDE0NCwxMzQsMTM0LDEzNCwxNjMsCi0gICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMzLDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMDYsMTQ3LDEzNCwx
MzQsMTQ2LDEzOCwzNywxNiwxNiw0OCwKLSAgICAxOTQsMjM0LDIzNSwxNTAsMTUwLDE1MCwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwxMjUsMTQ2LDE4NSwxODksCi0gICAgMTg1LDE2NSwxMzksMTIx
LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTI3LDY4LDIzLDE2LDIxLDEwOCwxODksCi0gICAgMTg5LDE4
OSwxODksMTg5LDE4OSwxODksMTgyLDE1NCwxMzIsMTc1LDIxMCwyMzUsMjM1LDIxMiwxODksMTg5
LAotICAgIDE4OSwxNTcsOTUsOTUsMjM1LDIyNywxNTIsMTUwLDE1MCwxODYsMTg2LDE4NiwyMzUs
MTIxLDEyMSwxMjEsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDExMSwxMTEsMTEx
LDIzNSwyMTAsMTQwLDEzNCwxMzQsMTM0LAotICAgIDIwMywyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIxMCwxODksMTg5LDE5MSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIyNSwxMzcsMTM0LDEzNCwxNTcsMTc0LDIxLDE2
LDE2LAotICAgIDY0LDE4NywyMTcsMTUwLDE1MCwxNTAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzMs
MTY4LDE3NCwxNTYsMTM2LAotICAgIDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMzgsMTY1
LDIxMiwxNjAsMjEsMTYsMTYsMTYsNjUsCi0gICAgMTg0LDE4OSwxODksMTg5LDE4OSwxODksMTg5
LDE4OSwxODgsMTczLDE2MCwxNDYsMTM0LDE0NywxOTMsMTg5LAotICAgIDE4OSwxODksOTUsOTUs
MjM1LDIzNSwxOTIsMTUwLDE1MCwxODYsMTg2LDE4NiwyMzUsMTIxLDEyMSwxMjEsCi0gICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEyMywxMTEsMTE1LDIzNSwyMzUsMjI5LDE2OSwxMzQs
MTM0LAotICAgIDE1MywyMzIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDE5MSwxODksMTg5LDIx
MywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwxOTQsMTM0LDEzNCwxMzQsMTQ3LDEyMywxNiwxNiwKLSAgICAxNiw2NCwxODYs
MTgyLDE2MywxNTAsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNzgsMTM0LDEyMCwxMjAsMTIwLAotICAg
IDEyMCwxMjAsMTIwLDEyMCwxMjQsMTU0LDE3OCwxODksMTg5LDIzNSwyMzUsMTYzLDUzLDE2LDE2
LDE2LAotICAgIDcwLDE4NCwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODks
MTgyLDE1NCwxMzQsMTg0LAotICAgIDE4OSwxODksMTQyLDk2LDIzNSwyMzUsMjMyLDE2NiwxNTAs
MTg2LDE4NiwxODYsMjM1LDEyMSwxMjEsMTIxLAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMDAsMTQyLDE4OCwyMzUsMjM1LDIzNSwyMjUsMTM3LDEzNCwKLSAgICAxMzQsMTYzLDIz
MiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwxODksMTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4NCwx
MzQsMTM0LDEzNCwxMzQsODksMTYsCi0gICAgMTYsMTYsMTMzLDE4NiwxODYsMTc4LDIyNywyMzUs
MjM1LDE5OSwxMzksMTIwLDEyMCwxMjAsMTIwLDEyMCwKLSAgICAxMjAsMTIzLDEyNywxNzAsMjM1
LDIyNywxODksMTg5LDE4OSwyMzUsMjM1LDIxNSwxODYsOTYsMTYsMTYsCi0gICAgMTYsNjksMTg5
LDE4OSwxOTEsMTI4LDE1MCwxNzksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTgyLDE4MSwKLSAg
ICAxODksMTg5LDE3OSwxMjMsMjMyLDIzNSwyMzUsMjE5LDE1MCwxODYsMTg2LDE4NiwyMzUsMTIx
LDEyMSwxMjEsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwxOTQsMTM0LAotICAgIDEzNCwxMzQsMTY5LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE5NCwxNDAsMTM0LDEzNCwxMzQs
OTAsCi0gICAgMTYsMTYsNDksMTgxLDE4NiwxODYsMTg4LDE4MywxNDIsMTIwLDEyMCwxMjAsMTIw
LDEyMiwxMjQsMTI4LAotICAgIDEzMywxMzQsMTg0LDIzNSwyMzMsMjAxLDE4OSwxODksMjA0LDIz
NSwyMzUsMjM1LDE5MSwxODYsMTAxLDE2LAotICAgIDE2LDE2LDEzOSwxODksMTg5LDE3MiwxMTMs
MTExLDIyOSwyMTcsMjA3LDE5MiwxODksMTg5LDE4OSwxODksCi0gICAgMTg5LDE4OSwxODksMTUx
LDEzNCwxNjksMjMyLDIzNSwxNTAsMTg2LDE4NiwxODYsMjM1LDEyMSwxMjEsMTIxLAotICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDE4NCwKLSAgICAxMzQsMTM0LDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwxODksMTg5LDE4OSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjI5LDE0NCwxMzQsMTM0LDEyMywKLSAgICAyMCwxNiwx
Niw1OSwxNjgsMTUwLDEyOSwxMjAsMTIwLDEyMCwxMjAsMTIyLDE0OCwxMzMsMTM0LDEzNCwKLSAg
ICAxMzQsMTg0LDIzNSwyMzUsMjEwLDE4OSwxODksMTg5LDIyNywyMzUsMjM1LDIzNSwyMTUsMTg2
LDE4Niw4NiwKLSAgICAxNiwxNiwzNiwxMjUsMTg5LDE4OSwxNjcsMTEzLDIzNSwyMzUsMjM1LDIz
MiwyMTIsMTkyLDE4OSwxODksCi0gICAgMTg5LDE4OSwxODksMTg0LDE2NiwxNDgsMTYyLDE4MSwx
NTAsMTg2LDE4NiwxODYsMjM1LDEyMSwxMjEsMTIxLAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAxMzQsMTM0
LDEzNCwxOTcsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwxODksMTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIwMywxNDAsMTM0LDEzNCwKLSAgICA4NiwzNSw3NSwxMDcsMTIwLDEyMCwxMjAs
MTIwLDEyMCwxMjIsMTUwLDE4MywxNDgsMTM0LDEzNCwxMzcsCi0gICAgMTg3LDIzNSwyMzUsMjM1
LDE5MSwxODksMTg5LDIxMiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxMSwxODYsMTcwLAotICAgIDIx
LDE2LDE2LDE2LDY1LDE4OSwxODksMTY3LDIzMywyMzUsMjM1LDIzNSwyMzUsMjMyLDIxMCwxODQs
Ci0gICAgMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTgyLDE1NiwxNDgsMTg2LDE4NiwxODYsMjM1
LDEyMSwxMjEsMTIxLAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAxNDQsMTM0LDEzNCwxMzQsMTYzLDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUs
MjM1LDIyNywxODksMTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMjks
MTc5LDEzMywKLSAgICAxMjQsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTI3LDE1MCwxODMsMTg5
LDE2OCwxMzQsMTM0LDEzMSwyMjUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDE4OSwxODksMTg5LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTcsMTkyLAotICAgIDE0MywyOCwxNiwxNiwxNiwx
MzUsMTg5LDE4OSwyMDIsMjM1LDIzNSwyMzUsMjM1LDE1Miw5NSwxMDUsCi0gICAgMTM3LDE3Niwx
ODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODQsMTY1LDEyMSwxMjEsMTIxLAot
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICAyMDMsMTQwLDEzNCwxMzQsMTM0LDIzMiwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIwNSwxODksMTg5
LDIwNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTkyLDEyMiwKLSAgICAx
MjAsMTIwLDEyMCwxMjAsMTExLDkzLDE4MiwxODksMTg5LDE4OSwxNjksMTM0LDEzNCwxMzQsMTc2
LDE4OSwKLSAgICAyMjcsMjM1LDIzNSwyMzUsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIwOSw4NCwxNiwxNiw0MSwxODksMTg5LDE4OSwx
NjcsMTUwLDE1MCwxNTAsMTUwLDE1MCwxNTAsCi0gICAgMTUwLDE1MywxODksMTg5LDE4OSwxODYs
MTg5LDE4OSwxODksMTg5LDE4OSwxODksMTczLDEzMSwxMjIsMTI1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjI5LDE0NCwxMzQsMTM0LDE2OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDE5MSwxODksMTg5LDIyNywyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjEzLDE3MSwxMzUsMTIwLDEyMCwKLSAgICAxMjAsMTIwLDEwNiw0Miwx
NiwxNiw3NiwxODksMTg5LDE3NSwxMzQsMTM0LDEzNCwxNjAsMTg2LDE4NiwKLSAgICAxODYsMjEy
LDIzNSwyMzUsMTg5LDE4OSwxODksMTg3LDE2MCwxNTAsMTUwLDE1MCwxNTAsMTUwLDE1MCwxNTAs
Ci0gICAgMTUwLDE1MCwxMzcsMjAsMTYsMTYsODgsMTg5LDE4OSwxODYsMTUzLDE1MCwxNTAsMTUw
LDE1MCwxNTAsCi0gICAgMTUwLDE1MCwxODksMTg5LDE4OSwxMjYsMTU3LDE4NSwxODksMTg5LDE4
OSwxODksMTg5LDE4MiwxNTUsMTkxLAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDE5NCwxMzQs
MTM0LDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1
LDIzNSwyMzUsMjM1LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMSwxNTYsMTIw
LDEyMCwxMjAsMTIwLDEyMCwKLSAgICAxMzksMjAyLDEzNyw3NSwxNiwxNiwxNiwxODQsMTg5LDEz
NCwxMzQsMTM0LDE2MywxODYsMTg2LDE4NiwKLSAgICAxODYsMTg2LDE5NCwyMTcsMTg5LDE4OSwx
ODksMTUwLDE1MCwxNTAsMTUwLDE1MCwxNTAsMTUwLDE1MCwxNTAsCi0gICAgMTUwLDE1MCwxNTAs
OTUsMTYsMTYsMTksMTUxLDE4OSwxODksMTc1LDE0OSwxMzIsMTIxLDEyMSwxMjEsCi0gICAgMTIx
LDEyMSwxODksMTg5LDE4OSwxNjIsMTg2LDE4NiwxODYsMTgyLDE2NCwxODksMTg5LDE4OSwxODks
MTg1LAotICAgIDIyNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwxMzQsMTM0LDEzNCwyMzIsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDE4OSwx
ODksMTg5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMxLDE1MywxMjAsMTIwLDEyMCwxMjAsMTMxLDE3NCwK
LSAgICAyMzEsMjM1LDIwMywxNDcsMjcsMTYsMTYsNjUsMTg0LDEzNCwxMzQsMTg0LDIzNSwxOTks
MTM3LDE3MiwKLSAgICAxODYsMTg2LDE4NiwxODYsMTg5LDE4OSwxODksMTUwLDE1MCwxNTAsMTUw
LDE1MCwxNTAsMTUwLDE1MCwxNTAsCi0gICAgMTUwLDE2MCwxNzQsMTkyLDU4LDE2LDE2LDQyLDE4
OSwxODksMTg5LDEzMiwxMjEsMTIxLDEyMSwxMjEsCi0gICAgMTIxLDEyMSwxODksMTg5LDE4OSwx
ODYsMTg2LDE4NiwxODYsMTUyLDEzNiwxNzksMTg4LDE4OSwxODksMTg5LAotICAgIDE4OCwxNzYs
MjMyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwxNDQsMTM0LDEzNCwxNjksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
MSwxNjQsMTIwLDEyMCwxMjAsMTIwLDE2NCwyMDYsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMTI1LDE2LDE2LDE2LDY1LDEzNCwxNjAsMjM1LDIzNSwyMzUsMTk5LDEyOSwKLSAgICAxNTIs
MTgyLDE4NiwxODYsMTg5LDE4OSwxODksMTgyLDIxNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDE5OCwxOSwxNiwxNiw5OSwxODksMTg5LDE3OSwxMzQs
MTM0LDEzNCwxMzQsCi0gICAgMTM0LDEzNCwxODksMTg5LDE4OSwxMzQsMTM0LDEzNCwxMzQsMTM0
LDEzNCwxMzQsMTM3LDE2MSwxODgsMTg5LAotICAgIDE4OSwxODksMTczLDE5NywyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwx
OTQsMTM0LDEzNCwxMzQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMjM1LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzEsMTY0LDEyMCwxMjAsMTIwLDEyMCwxMjAs
MTc3LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMTc1LDc2LDE2LDE2LDE2
LDk3LDEzNCwxNDcsMTk3LDIzNSwyMzUsMjI1LAotICAgIDE0OSwxMjcsMTU4LDE4NiwxODksMTg5
LDE4OSwxODgsMjEyLDIyNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMiwKLSAgICAxNzIsMTM0LDEz
NCwxMzQsMTM0LDc1LDE2LDE2LDIwLDE2MSwxODksMTg5LDE0NiwxMzQsMTM0LDEzNCwKLSAgICAx
MzQsMTM0LDE4OSwxODksMTg5LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDE0
NiwxODIsCi0gICAgMTg5LDE4OSwxODksMTg0LDE3OCwyMjIsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwxMzQsMTM0LDEzNCwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMTg5
LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIz
NSwyMzUsMTk5LDE0MiwxMjAsMTIwLDEyMCwxMjAsMTM1LDE4OCwyMzUsMjM1LDIzNSwyMzUsMjM1
LAotICAgIDIzNSwyMzUsMjM1LDIxNiwxMzQsMTU0LDg3LDE2LDE2LDM4LDEzMCwxMzQsMTM0LDE2
MywyMjksMTc0LAotICAgIDE1MCwxNDYsMTI4LDE1NCwxODksMTg5LDE4OSwxODYsMTg2LDE4Niwy
MDUsMjM1LDIzNSwyMzIsMTcyLDEzNCwKLSAgICAxMzQsMTM0LDEzNCwxMzQsMTM0LDEzMCwzOCwx
NiwxNiw0OSwxODQsMTg5LDE2MywxMzQsMTM0LDEzNCwKLSAgICAxMzQsMTM0LDE4OSwxODksMTg5
LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzQsMTM0LDEzNCwxMzcsCi0gICAgMTcyLDE4
OSwxODksMTg5LDE4OSwxODksMTkwLDIwOCwyMjQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAotICAgIDIzNSwyMzUsMjM1LDIzNSwxMzQsMTM0LDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMTg5LDE4OSwxODksMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzMSwxNTYsMTIwLDEyMCwxMjAs
MTIwLDEzNSwxODgsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMTc1
LDEzNCwxMzQsMTczLDE3MywyMSwxNiwxNiw0OSwxMzQsMTM0LDEzNCwxMzYsMTQzLAotICAgIDE1
MCwxNTAsMTg0LDE3NywxODksMTg5LDE4OSwxODYsMTg2LDE4NiwxODYsMTcwLDIyOSwxNjMsMTM0
LDEzNCwKLSAgICAxMzQsMTM0LDEzNCwxMzQsMTM0LDEzMSwxMDAsMTksMTYsMTYsNjUsMTg5LDE5
MCwxODYsMTg2LDE4NiwKLSAgICAxODYsMTc1LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMjksMTg0LDE0NywxMzQsCi0gICAgMTM0LDE1NiwxODIsMTg5LDE4OSwxODks
MTg5LDE4OSwxODksMjAyLDIzMywyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwxMzQsMTM0LDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjM1LDIzNSwyMzUsMTg5LDE4OSwxODksMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjMxLDE1MywxMjAsMTIwLDEyMCwxMjAsMTE1LDExMSwxMTEsMTExLDEx
MSwxMTEsMTExLDExMSwxNTQsMjMxLAotICAgIDIzNSwyMTYsMTM0LDEzNCwxMzQsMTg4LDE4OSwx
MTgsMTYsMTYsMTYsMTAyLDEzNCwxMzQsMTM0LDEzNCwKLSAgICAxMzYsMTcwLDIzNSwyMzUsMTg5
LDE4OSwxODksMTQ2LDE4MCwxODYsMTg1LDE1NCwxMzQsMTM0LDEzNCwxMzQsCi0gICAgMTQ3LDE5
NCwxOTksMTQyLDExMSwxMTEsMTExLDgzLDE2LDE2LDE2LDEzNSwxODksMTg4LDE4NiwxOTIsCi0g
ICAgMTczLDk1LDE4OSwxODksMTg5LDIzMSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjI5LDE3OSwxMzQsMTQ0LDE2NSwxODIsMTg5LDE4OSwxODksMTg5LDE3
MywxNjksMjMyLDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwxMzQsMTM0LDEzNCwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUs
MTg5LDE4OSwxODksMjMzLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzEsCi0gICAgMTUz
LDEyMCwxMjAsMTIwLDExNywxMTIsMTExLDExMSwxMTEsMTExLDExMSwxMTEsMTExLDExMSwxMTEs
MTExLAotICAgIDExMSwxNDAsMTM0LDEzNCwxNDcsMTg5LDE4OSwxODksNzEsMTYsMTYsNDEsMTM5
LDEzNCwxMzQsMTM0LAotICAgIDEzNCwxMzQsMTM0LDE2OSwxODksMTg5LDE4OSwxOTIsMTUyLDE4
MiwxNTcsMTM0LDEzNCwxMzQsMTM0LDE0OSwKLSAgICAxMjEsMTIxLDEyMSwxMTQsMTExLDExMSwx
MTMsMjM0LDkyLDE2LDE2LDQ5LDE4NCwxODksMjA3LDIzNSwKLSAgICAyMzUsMTY1LDE4OSwxODks
MTg5LDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1
LDIzNSwxOTcsMTQ3LDEzNCwxMzQsMTQ0LDE2OSwxODksMTg5LDE4OSwxODksMTg5LDE3MCwxMzUs
MTQ3LAotICAgIDE5NywyMzUsMjM1LDIzNSwxMzQsMTM0LDEzNCwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMTk0LDE4OSwxODksMjAyLDIz
MywyMzUsMjM1LDIzNSwyMzUsMjM1LDE5OSwxNDIsCi0gICAgMTIwLDEyMCwxMjAsMTE1LDExMSwx
MTEsMTExLDExMSwxMTEsMTExLDExMSwxMTEsMTExLDExMSwxMTEsMTExLAotICAgIDExNSwxMzQs
MTM0LDEzNCwxMTUsMTg5LDE4OSwxODksMTAyLDE5LDE2LDE2LDE2LDUxLDE0NywxMzgsCi0gICAg
MTM0LDEzNCwxMzQsMTM0LDE4OSwxODksMTg5LDIzNSwyMzUsMTg2LDEzNCwxMzQsMTM0LDE0MCwx
NjUsMTY4LAotICAgIDEyMSwxMjEsMTE0LDExMSwxMTEsMTExLDE3NiwyMDgsMTcwLDIxLDE2LDE2
LDY1LDE4NCwxOTksMjM1LAotICAgIDIzNSwyMzUsMTg5LDE4OSwxODksOTUsMTY5LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDE5NywxNDcsMTYxLDE4OSwxODksMTg5LDE4OSwxODksMTg0LDE2NiwKLSAgICAxNDgsMTYzLDIz
NSwyMzUsMTM0LDEzNCwxMzQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIxNiwxODksMTg5LDE4OSwyMDIsMjMzLDIzNSwyMzUsMjMxLDE1
NiwxMjAsMTIwLAotICAgIDEyMCwxMjAsMTE3LDExMSwxMTEsMTc2LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwxODgsMTI3LDEyNCwKLSAgICAxMzQsMTM0LDEzNCwxMjcsMTExLDE4OSwxODks
MTg5LDExMSw3MiwxNiwxNiwxNiwxNiw5MiwxODUsCi0gICAgMTg0LDE0NywxMzQsMTM0LDE4OSwx
ODksMTg5LDE1NiwxNzksMTM0LDEzNCwxMzQsMTM1LDE4NiwxODYsMTg2LAotICAgIDE0NiwxMTUs
MTExLDExMSwxMTEsMTczLDIxMiwxODYsMTg2LDExNywxNiwxNiwxNiw2NSwxODQsMjI3LAotICAg
IDIzNSwyMzUsMTg5LDE4OSwxODksOTUsOTksMjEzLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMjksMTgyLDE4Miwx
ODksMTg5LDE4OSwxODksMTg5LAotICAgIDE4OSwxODIsMTU0LDEzNCwxMzQsMTM0LDEzNCwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIxMiwxODksMTg5LDE4OSwyMDIsMjMzLDIzMSwxNTMsMTIwLDEyMCwxMjAsCi0gICAgMTI0LDE1
NiwxMTEsMTExLDE0MiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTYsMTM0
LAotICAgIDEzNCwxMzQsMTM0LDExNSwxMTEsMTg5LDE4OSwxODksMTExLDExMSw3NSwyOCwxNiwx
NiwzNCwxMDgsCi0gICAgMTExLDExMSwxMjIsMTM0LDE4OSwxODksMTg5LDEzNCwxMzQsMTM0LDEz
NCwxMzMsMTI5LDE4MCwxODYsMTg2LAotICAgIDE4NiwxNjUsMTExLDExMSwxNzMsMjEyLDE4Niwx
ODYsMTg2LDE4OCwxMjUsMTYsMTYsMTYsNjUsMjA4LAotICAgIDIzNSwyMzUsMTg5LDE4OSwxODks
OTUsOTUsMTMwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE5NywxNDcsMTU2LDE4MiwxODksMTg5LAot
ICAgIDE4OSwxODksMTg5LDE3MywxMzQsMTM0LDEzNywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTIsMTg5LDE4OSwxODks
MjAyLDE3MCwxMjAsMTIwLDEyMCwxNjcsCi0gICAgMjI0LDE0NiwxMTEsMTExLDE4NCwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNjYsMTM0LAotICAgIDEzNCwxNDcsMTg3LDIz
NSwyMzUsMTg5LDE4OSwxODksMTUwLDE1MCwxNTAsMTQ4LDIxLDE2LDE2LDQzLAotICAgIDEwOCwx
MTEsMTExLDEyMCwxODksMTg5LDE4OSwxMzQsMTM0LDEzNCwxMzQsMTIyLDExNiwxNDAsMTgzLDE4
NiwKLSAgICAxODYsMTg2LDE0MCwxMzcsMjM0LDE4OCwxODYsMTg2LDE4OCwyMTcsMjM1LDEyNSwx
NiwxNiwxNiw2OSwKLSAgICAyMzUsMjM1LDE4OSwxODksMTg5LDk1LDk1LDk1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE5NywxNTUsMTY1LAotICAgIDE4NiwxODksMTg5LDE4OSwx
MzQsMTM0LDEzNywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjEyLDE4OSwxODksMTg3LDEyMywxMjAsMTIwLDE3Nywy
MzUsCi0gICAgMjM1LDExNSwxMTEsMTExLDIyMywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIxNiwxMzQsMTM0LAotICAgIDEzNCwyMTYsMjM1LDIzNSwyMjcsMTg5LDE4OSwxODksMTky
LDE1MCwxNTAsMTUwLDEwMiwxNiwxNiwxNiwKLSAgICA0MywxMDgsMTExLDExMSwxODIsMTg5LDE4
OSwxNTEsMTM0LDEzNCwxMzQsMTI4LDExMiwxMTEsMTI2LDE4MCwKLSAgICAxODYsMTg2LDE4Niwx
NjgsMTc1LDE4NiwxODYsMTg4LDIxNywyMzUsMjM1LDIzNSwxMjEsMTYsMTYsMTYsCi0gICAgMTMy
LDIzMiwxODksMTg5LDE4OSw5NSw5NSw5NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzIsMTk0LDE4OSwxODgsMTM0LDE0NywxOTcsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMDksMTQ2LDEyMCwxMjAsMTIwLDEyNCwyMzUsMjM1LAotICAgIDIzNSwxMTEsMTEx
LDExMSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4NywxMzQsMTM0LDEzNCwKLSAg
ICAxNjYsMjM1LDIzNSwyMzUsMjA1LDE4OSwxODksMjA0LDIzNSwxOTIsMTUwLDE1MCwxNTAsODIs
MTYsMTYsCi0gICAgMTYsNzgsMjI4LDIzNSwxOTIsMTg5LDE4OSwxNzksMTM1LDEzNCwxMzQsMTM0
LDEzMSwxMjAsMTExLDEzNSwKLSAgICAxODIsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMjEyLDIz
NSwyMzUsMjM1LDIzNSwyMzUsMTAwLDE2LDE2LAotICAgIDIyLDE4NiwxODksMTg5LDIwMSw5NSw5
NSw5NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxOTksMTQyLDEyMCwKLSAgICAx
NTYsMjIyLDIwMSwyMTcsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNzEsMTIwLDEyMCwx
MjAsMTIwLDE2MywyMzMsMjM1LAotICAgIDIzNSwxMTEsMTExLDExMSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDEzNywxMzQsMTM0LDEzNCwKLSAgICAyMTYsMjM1LDIzNSwyMzUsMTkx
LDE4OSwxODksMjI3LDIzNSwyMzUsMjAwLDE1NSwxNTAsMTUwLDgyLDE2LAotICAgIDE2LDE2LDky
LDIzMiwxNDYsMTg4LDE4OSwxODksMTczLDE3MiwxMzQsMTM0LDEzNCwxMzQsMTMxLDEyMCwKLSAg
ICAxMTYsMTcwLDE4NiwxODYsMTg2LDE4NiwxNDksMTM3LDIzMiwyMzUsMjM1LDIzNSwyMzUsMjA2
LDQ5LDE2LAotICAgIDE2LDM5LDEyNCwxODksMjE2LDk1LDk1LDk1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDE4MSwxMjAsMTIwLDEyMCwxMjAsMTIwLAotICAgIDEyMCwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjMxLDEyNCwxMjAsMTIwLDEyOSwxNjEsMTg5LDIwMiwyMzMsCi0g
ICAgMjM1LDExMSwxMTEsMTExLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzIsMTM0LDEz
NCwxMzQsMTg3LAotICAgIDIzNSwyMzUsMjM1LDIzNSwxODksMTg5LDE4OSwyMzUsMjM1LDIzNSwy
MzUsMjMwLDE5MiwxNTUsMTUwLDgyLAotICAgIDE2LDE2LDE2LDE2NywxMzMsMTU2LDE4OSwxODks
MTg5LDIwMiwxOTEsMTM0LDEzNCwxMzQsMTM0LDEzNCwKLSAgICAxMzcsMTY2LDE4NiwxODYsMTg2
LDE4NiwxMzUsMTExLDExOCwxODgsMjM1LDIzNSwyMzUsMjMzLDE2MywyMSwKLSAgICAxNiwxNiwx
Niw2NSwyMjQsOTUsOTUsOTUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTgxLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEy
MCwxMjQsCi0gICAgMTkyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNzEs
MTIwLDEyMCwxMjQsMjEyLDE4OSwxODksMTg5LDE4OSwKLSAgICAxODksMTcyLDEyMywxMTEsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMyLDE2MywxMzQsMTM0LDEzNywyMzUsCi0gICAgMjM1LDIz
NSwyMzUsMjM1LDE4OSwxODksMTg5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzMCwxODcsMTUw
LAotICAgIDI5LDE2LDE2LDQ4LDEzMCwxMzQsMTYxLDE4OSwxODksMTg5LDE2NiwxMTIsMTIyLDEz
MiwxMzQsMTM0LAotICAgIDEzNCwxMzQsMTQ5LDE4NSwxODYsMTg2LDE3MywxMTMsMTExLDExMSwx
MjMsMTYyLDIwNCwyMzUsMjI3LDEzMCwKLSAgICAyNywxNiwxNiwxNiw3OCw5Miw5NSw5NSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMTk5LDE0MiwxMjAsMTIw
LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMzUsMTcxLDIyNCwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEyNCwxMjAsMTIwLDE4MSwyMzUsMjEyLDE4
OSwxODksMTg5LAotICAgIDE4OSwxODksMTg3LDE0OCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwx
NzksMTM0LDEzNCwxMzQsMTEzLDk1LAotICAgIDk1LDk1LDk1LDk1LDE4OSwxODksMTg5LDExMywx
ODIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTc2LAotICAgIDk1LDE2LDE2LDE2LDU3LDEzNCwx
MzcsMjExLDE4OSwxODksMTg3LDEyMywxMTEsMTY0LDE3NywxMzcsCi0gICAgMTM0LDEzNCwxMzQs
MTU3LDE4NywxODYsMTg2LDE2NSwxMTMsMTExLDExMSwxMTEsMTExLDExMSwxMzgsMTc4LAotICAg
IDE3OCw5MiwxNiwxNiwxNiwzOCw5NSw5NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxMywxNzEsMTM1
LAotICAgIDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTM1LDE5
MiwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjMxLDEyMCwxMjAsMTIwLDIzNSwyMzUsMjM1LDIxNywxOTUsMTg5LAotICAgIDE4OSwxODksMTg5
LDE4OSwxODksMTg5LDIwOCwyMzUsMjM1LDIzNSwxMzcsMTM0LDEzNCwxMTYsOTUsOTUsCi0gICAg
OTUsOTUsOTUsOTUsMTg5LDE4OSwxODksOTUsOTUsMTEzLDE4MiwyMzUsMjM1LDIzNSwyMzUsMjMw
LAotICAgIDE2MCw3NSwxNiwxNiwxNiwxMzYsMTk3LDIxNCwxNzgsMTg5LDE4OSwxNzIsMTczLDIw
OCwxODYsMTgzLAotICAgIDE1NywxMzQsMTM0LDEzNCwxMzQsMTM0LDE0OSwxODYsMTY3LDExNCwx
MTEsMTExLDExMSwxMTEsMTExLDEzMSwKLSAgICAxODksMTg3LDExNCwxMjAsMTIwLDEyMCwxMjAs
MTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsCi0gICAgMTIwLDEyMCwxMjAsMTIw
LDEyMCwxMjAsMTIwLDEyMCwxMzUsMTkyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNjQsMTIwLDEyMCwxMjQsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjI4LDE3MiwxODksMTg5LDE4OSwxODksMTg5LDIxNywy
MzUsMjE2LDEzNCwxMzQsMTM0LDk1LDk1LDk1LAotICAgIDk1LDk1LDk1LDk1LDE4OSwxODksMTg5
LDk1LDk1LDk1LDk1LDExMywxODIsMjM1LDIzNSwyMzUsCi0gICAgMjE2LDEyOSwyNywxNiwxNiw2
MCwxODUsMTE5LDEyNSwxODcsMTg5LDE4OSwxOTQsMTg2LDE4NiwxODYsCi0gICAgMTg4LDE3NSwx
MzQsMTM0LDEzNCwxMzQsMTM0LDE3MCwxODYsMTc4LDE2NSwxNjYsMTMxLDExMSwxMTEsMTIyLAot
ICAgIDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwx
MjAsMTIwLDEyMCwKLSAgICAxMjAsMTIwLDEzNSwxNzEsMjI0LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjEzLDEyMCwxMjAsMTIwLDE4MSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAy
MzUsMTExLDE0OCwxNzksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4NCwxNzksMTE5LDk1
LDk1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwxODksMTg5LDE4OSwxNjUsMTAzLDk1LDk1LDk1LDk1
LDEyNiwyMzEsMjM1LAotICAgIDIxNiwxMzQsODYsMTYsMTYsMTYsNDMsMTExLDExMSwxNDksMTg5
LDE4OSwxODksMTg4LDE4NiwxODgsCi0gICAgMjMxLDIzNSwxOTcsMTQ3LDEzNCwxMzQsMTM0LDEz
OSwxNjYsMTg2LDE2NiwxMzUsMTIwLDEyMCwxMjAsMTIwLAotICAgIDEyMCwxMjAsMTIwLDEyMCwx
MjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMzUsMTY3LDIwNiwKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMTYwLDEyMCwxMjAsMTU2
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMTExLDExMSwxMTEsMjIwLDE5
MiwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE3OCwxMzAsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDE4OSwxODksMTg5LDIzNSwyMjYsMTY1LDEwMyw5NSw5NSw5NSwxNDgsMTg3LAotICAg
IDEzNCwxMzQsMTM0LDc0LDE2LDE2LDE2LDgxLDEyMCwxOTksMjEyLDE4OSwxODksMTg5LDE5MCwy
MTYsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIyNSwxMzcsMTM0LDEzNCwxMzAsMTI2LDEyMCwxMjAs
MTIwLDEyMCwxMjAsMTIwLAotICAgIDEyMCwxMjAsMTI5LDE0Nyw5MywxOSwxNiwxNiwxNiw0Mywx
MTksMTYyLDIwNCwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMTI0LDEyMCwxMjAsMjEzLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKLSAgICAyMzUsMTExLDExMSwxMTEsMjM1LDIzMiwyMTIsMTk0LDE4OSwxODksMTg5LDE4
OSwxODksMTg5LDE4OSwxODksCi0gICAgMTg5LDE4OSwxOTUsMjE3LDE4OSwxODksMTg5LDIzNSwy
MzUsMjM1LDIyNiwxNTcsOTUsOTUsMTE4LDEzNCwKLSAgICAxMzQsMTM0LDEzNCwxMTcsNTUsMTYs
MTYsMTYsNzAsMTUwLDE5MCwxODgsMTg5LDE4OSwxODksMTk1LAotICAgIDIxNywyMzUsMjM1LDIz
NSwyMzUsMjA2LDEzNCwxMjMsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyOSwKLSAgICAx
NjEsMTg5LDE4OSwxODMsMTAzLDc3LDIyLDE2LDE2LDE2LDM3LDk2LDExMSwxNDYsMjMxLDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMTIwLDEy
MCwxMjAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMTExLDExMSwx
MTEsMjM1LDIzNSwyMzUsMTk3LDEzNCwxMzQsMTYwLDIyNywyMTAsMTg3LDE4OSwxODksCi0gICAg
MTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDIxNywyMzUsMjM1LDIzNSwyMzUsMTM5LDEwMiwx
MzQsMTM0LAotICAgIDEzNCwxMzMsMTIyLDExMSwxMDIsMTksMTYsMTYsMTYsMTUwLDE1MSwxODYs
MTg4LDE4OSwxODksMTg5LAotICAgIDE4OSwxOTUsMTg3LDE0MiwxMjAsMTIwLDEyMCwxMjAsMTIw
LDEyMCwxMjEsMTI5LDE1MiwxODYsMTg5LDE4OSwKLSAgICAxODksMTg5LDE4OSwxODksOTUsMTY1
LDIwNiw5MywxNiwxNiwxNiwxOSw2NiwxMTEsMTIzLDE2MiwKLSAgICAyMDQsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzEsMTIwLDEyMCwxMjAsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMTExLDExMSwxMTEsMjM1LDIzNSwyMzIsMTU2LDEz
NCwxMzQsMTk0LDIzNSwyMzUsMjIwLDE0NCwxNzgsCi0gICAgMTg5LDE4OSwxODksMTg5LDE4OSwx
ODksMTg5LDE4OSwxOTQsMjA4LDIyNCwyMzUsMjIzLDEyOSwxMzQsMTM0LAotICAgIDEzMiwxMjAs
MTExLDExMSwxMTMsMTM4LDE2LDE2LDE2LDE0NSwxNzEsMTg2LDE4NiwxODUsMTQ3LDEyMCwKLSAg
ICAxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMiwxMjYsMTMzLDEzNCwxNTEsMTg4
LDE4OSwxODksCi0gICAgMTg5LDE4OSwxODksMTg5LDEzOSwyMzUsMjM1LDIzNSwxMzksMjMsMTYs
MTYsMTYsNTgsMTExLDExMSwKLSAgICAxMTEsMTQ2LDIzMSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwxNzEsMTIwLDEyMCwxMjQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMTExLDExMSwxMTEsMjMxLDIzNSwxNzksMTM0LDEzNCwxMzQsMjI1LDIzNSwyMzUs
MjM1LDE1Nyw5NSwKLSAgICA5NSwxMjYsMjEwLDE5NSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwx
ODksMTg5LDE4OSwxODksMTg5LDE4OSwKLSAgICAxODksMTg5LDE4OSwxODksMTg5LDE4OSwzMiwx
NiwxNiw5MSwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwKLSAgICAxMjAsMTIwLDEyMCwxMjAsMTIw
LDEyMCwxMjksMTUwLDE4MywxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODcsCi0gICAgMTMzLDE4
OSwxODksMTg5LDIwOCwyMzUsMjM1LDIzNSwyMzUsMjAxLDY0LDE2LDE2LDE2LDU1LDExMSwKLSAg
ICAxMTEsMTExLDE0NiwyMzEsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwxMjQsMTIwLDEyMCwx
ODEsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMTIzLDExMSwxMTEs
MTU0LDIzNSwxMzcsMTM0LDEzNCwxODcsMjM1LDIzNSwyMzUsMjM1LDIyMiw5OSwKLSAgICA5NSw5
NSwxMzQsMjMxLDIzNSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5
LAotICAgIDE4OSwxODksMTg5LDE4OSwxODksMTg5LDExOCw4MSwxMjAsMTIwLDEyMCwxMjAsMTIw
LDEyMCwxMjAsMTIwLAotICAgIDEyMCwxMjAsMTI5LDE1MCwxODMsMTg5LDE4OSwxODksMTg5LDE4
OSwxODksMTg5LDE4OSwxODksMTg4LDE2MiwKLSAgICAxMDYsMTg5LDE4OSwxODksMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDM3LDE2LDE2LDE2LDE2LAotICAgIDQ5LDEwOCwxMTEsMTIzLDE2
MiwyMDQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMTIwLDEyMCwxMjAsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDE4NCwxMTEsMTExLDExMSwyMjksMTM0LDEzNCwxMzQs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTc4LAotICAgIDk1LDk1LDk1LDEzNCwyMzUsMTk0LDE4
OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwKLSAgICAxODksMTg5LDE4OSwx
NzYsMTUwLDEyOSwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyOSwxNjEsCi0gICAg
MTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg4LDE2NSwx
MzksMTM0LAotICAgIDEzNCwxODksMTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MTczLDMwLDE2LDE2LDE2LAotICAgIDE2LDI4LDc1LDExMSwxMTEsMTExLDExMSwxNTQsMjMxLDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUs
MjM1LDEyMCwxMjAsMTIwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMTExLDExMSwxMTEsMTk0LDEzNCwxMzQsMTYwLDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAxNjUsOTUsOTUsOTUsMTkxLDIyMiwxOTQsMTg5LDE4OSwxODksMTg5LDE4
OCwxNzMsMTU5LDEzNSwxMTgsCi0gICAgMTAyLDEwOSwxMjEsMTIwLDEyMCwxMjAsMTIwLDEyMCwx
MjAsMTIwLDEwNyw1NSwxNjYsMjI3LDE3OSwxNTAsCi0gICAgMTUwLDE1MCwxNTAsMTY3LDIwMywx
ODksMTg5LDE4OSwxODksMTg5LDE4OSwxODQsMTY0LDE3MCwxMzcsMTM0LAotICAgIDEzNCwxODks
MTg5LDE4OSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE3Myw0NCwxNiwxNiwKLSAg
ICAxNiwxNiwxNiwxNiwxNiw0OSwxMDgsMTExLDE0NiwyMzEsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwxMjAsMTIwLDEyMCwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDEyMywxMTEsMTEyLDEz
NiwxMzQsMTM0LDE5NCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDE1Miw5
NSw5NSw5NSw5NiwxMzIsMTM5LDE4OCwxODksMTg5LDE4OSwxNzgsMTYxLDE0MiwxMjUsCi0gICAg
MTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyOCwxNTksODYsMTYsMTYsNTcsMjM1LDIzNSwy
MTQsCi0gICAgMTYzLDE1MCwxNTAsMTUwLDE3NCwyMTYsMTk1LDE4OSwxODksMTg5LDE4OSwxODks
MTg5LDE4OSwxODgsMTY1LAotICAgIDEzNCwxODksMTg5LDE4OSwxMzQsMTU4LDIxMCwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE0NiwKLSAgICAzMCwxNiwxNiwxNiwxNiwxNiwyOCw3
NSwxMTEsMTI3LDE4OCwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMTIwLDEyMCwxMjAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwxODQsMTExLDEyNCwxMzQsMTM0LDEzNCwyMjUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMjIsOTksMTEzLDEzNCwxMzQsMTM0LDEzNCwxNTEs
MTcwLDE1MCwxMjksMTIwLDEyMCwxMjAsMTIwLAotICAgIDEyMCwxMjAsMTIwLDEyOCwxNjcsMjAw
LDE3OSwxODYsMTg2LDE2OSwyMSwxNiwxNiwxMzIsMjM1LDIzNSwKLSAgICAyMzUsMTkyLDE1MCwx
NTAsMTUwLDE3NSwxNzMsMTQ2LDEzNSwxNTQsMTc4LDE4OSwxODksMTg5LDE4OSwxODksCi0gICAg
MTg0LDE4OSwxODksMTg5LDEzNCwxMzQsMTM0LDEzOCwyMTYsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAotICAgIDIyMSwxMjUsNDQsMTYsMTYsMTYsMTYsMTYsMTYsMTYsNTUsMTIzLDE2Miwy
MDQsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDEyMCwxMjAsMTIw
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDE3
MywxMzMsMTM0LDEzNCwxNDQsMjMxLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAy
MzUsMjM1LDE2NCwxMzEsMTI2LDEyMiwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEy
MCwxMjAsCi0gICAgMTI3LDE0NiwxNjIsMjA4LDIyMywyMDAsMTg2LDE4NiwxODYsMTUyLDY4LDE2
LDE2LDIzLDIwMSwyMzUsCi0gICAgMjM1LDIzNSwxODcsMTUwLDE1MCwxNTAsMTE5LDk1LDk1LDk1
LDk1LDEzMSwxOTYsMTkyLDE4OSwxODksCi0gICAgMTg5LDE4OSwxODksMTg3LDEzNCwxMzQsMTM0
LDEzNCwxMzMsMTUwLDIzMiwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIz
NSwxNDYsMzAsMTYsMTYsMTYsMTYsMTYsMTYsNDksMTA4LDEyNywxODgsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDIzNSwyMzUsMjM1LDIzNSwxMjAsMTIwLDEyMCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMTYsMTM0LDEzNCwxMzQsMTExLDE1NCwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDE5NywxMjQsMTIwLDEyMCwxMjAsMTIw
LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTE4LDExMiwxMTQsMTY0LAotICAgIDE4OSwxODksMTg5LDE4
OSwxODksMTg5LDE4OCwxODcsMTU4LDEyMSwxMTgsMzYsMTYsMTYsNDQsMTUzLAotICAgIDIzNSwx
OTEsMTIxLDEzMiwxNTAsMTUwLDE1MCwxMTAsOTUsMTA4LDE2MSwyMzEsMjM1LDIzMiwyMTAsMTg5
LAotICAgIDE4OSwxODksMTg5LDE5NCwxNzAsMTM1LDEzMywxMzQsMTM0LDEzNCwxNDQsMjMyLDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIyMSwxMjUsNDQsMTYsMTYs
MTYsMTYsMTYsNDMsMTA4LDExMSwKLSAgICAxNDYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDEy
MCwxMjAsMTIwLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwy
MzUsMjM1LDE2OSwxMzQsMTM0LDEyNywxMTEsMTExLDExMSwxMTEsMTExLDExMSwxMTEsMTEyLDEx
NiwKLSAgICAxMTksMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMTcsMTEwLDEwMSw5
NSw5NSw5NSw5NSwKLSAgICAxMzksMTc4LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxNzAs
MTYwLDEyNCwyMCwxNiwxNiwxNiwKLSAgICAzOCw5NSw5NSw5NiwxMzksMTUwLDE1MCwxNTAsMjAx
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxNywKLSAgICAxOTIsMTg5LDE4NywxODYsMjAwLDIz
NSwxNzksMTM0LDEzNCwxMzQsMTM0LDE0NiwxOTcsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNzMsNDQsMTYsMTYsMTYsMTYsMTYsNDksCi0gICAgMTA4
LDExMSwxNjIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwxMjAsMTIwLDEyMCwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwxMzcsMTM0LDEzNCwxMjUsMTExLDEx
MSwxMTIsMTE2LDExOSwxMjAsMTIwLDEyMCwxMjAsCi0gICAgMTIwLDEyMCwxMjAsMTIxLDEyMSwx
MTQsMTExLDE3MywyMzUsMjMxLDIwMCwxNjksMTQzLDEyMSw5NSw5NSwKLSAgICA5NSw5NSwxMTMs
MTQ4LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTI5LDI3LDE2LDE2LAotICAgIDE2
LDE0MiwxMjEsMTE2LDE1NiwxNTgsMTUwLDE1MCwxNjAsMjI0LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAotICAgIDIzNSwyMTEsMTg2LDE4NiwxODYsMjIwLDIzNSwyMjksMTUyLDEzNCwxMzQsMTM0
LDEzNCwxNjMsMjMyLDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDEyNSwxNiwxNiwxNiwxNiwKLSAgICAyOCw3NSwxMTUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIz
NSwxMjAsMTIwLDEyMCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAy
MzUsMjM1LDIzNSwxMzQsMTM0LDEzNCwyMDAsMTI1LDExOSwxMjAsMTIwLDEyMCwxMjAsMTIwLDEy
MCwxMjAsCi0gICAgMTIwLDEyMSwxMjYsMTMyLDExMSwxMjcsMTg0LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjA4LAotICAgIDk1LDk1LDk1LDExMywxODYsMTg3LDE4OCwxNzEsMTg5
LDE4OSwxODksMTg5LDE4OSwxNzgsMTYsMTYsCi0gICAgMTYsNzYsMTg0LDE4OSwxODksMTk0LDE3
OSwxNjksMTYyLDE2OCwyMjIsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIwNiwx
ODYsMTg2LDE5NiwyMzUsMjM1LDIzNSwxOTAsMTQwLDEzNCwxMzQsMTM0LDE2MywyMzIsCi0gICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTUzLDQ0LDE2
LDE2LAotICAgIDE2LDE2LDY1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMTIwLDEyMCwxMjAsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMTM0LDEzMSwxMjYs
MTM1LDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMzQsMTM3LAotICAgIDEzMCwxMzQsMTQ3
LDE5NywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICA5NSw5NSw5NSwyMzUsMTg2LDE4NiwxODYsMjM1LDIzNSwyMjQsMjEzLDIwNCwxODAsMTg5LDMy
LDE2LAotICAgIDE2LDE2LDY1LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4
OSwxODksMTg5LDE5NSwKLSAgICAyMTcsMjM1LDIzMSwxODgsMTg2LDE4NiwyMjAsMjM1LDIzNSwy
MzUsMjI5LDE3OSwxMzQsMTM0LDEzNCwxNjMsCi0gICAgMjMyLDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxNDYsMzAsCi0gICAgMTYsMTYsMTYsOTIs
MjI4LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1
LDIzNSwyMzUsMjM1LDEyMCwxMjAsMTIwLDE2NywyMzUsMjM1LDIzNSwyMzUsMTk5LDE0MiwxMjAs
MTIwLAotICAgIDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyNCwxNjcsMjA2
LDIzNSwyMzUsMTc5LDEzNCwKLSAgICAxMzQsMTM0LDIxNiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgOTUsOTUsOTUsMjM1LDE4NiwxODYs
MTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjEzLDEyNSw5OCwzMSwKLSAgICAxNiwxNiwxNiwxNDEs
MTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwxODksCi0gICAgMTg5
LDE4OSwxODksMTg5LDE4OCwxODYsMTg2LDIwMywyMzQsMjM1LDIzNSwyMzUsMTg0LDEzNCwxMzQs
MTM0LAotICAgIDE0NywxOTcsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIyMSwKLSAgICAzNywxNiwxNiwxNiw5MiwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwxMzEsMTIwLDEy
MCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAsMTIwLDEyMCwKLSAgICAxMjAsMTIwLDEyMCwx
MjAsMTIwLDEyMCwxMjAsMTMxLDE3MSwyMjQsMjM1LDIzNSwyMzUsMjM1LDEzNywxMzQsCi0gICAg
MTM0LDE4NCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAotICAgIDk1LDk1LDk1LDIzNSwxODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwxOTIsMTI1LDEyMSwKLSAgICA1OSwxNiwxNiw1NywyMjgsMjI3LDIyMCwyMTIsMTk4LDE4
NSwxODksMTg5LDE4OSwxODksMTg5LDE4OSwKLSAgICAxODksMTg5LDE4OSwxODksMTg5LDE4Niwx
ODYsMTg2LDIwMCwyMzUsMjM1LDIzNSwyMzUsMTg0LDEzNCwxMzQsCi0gICAgMTM0LDEzNCwxNTYs
MjE5LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDE3Myw0NCwxNiwxNiwxNiwxNiwxMDUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIwMywxMjgsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMjAs
MTIwLDEyMCwxMjAsMTIwLAotICAgIDEyMCwxMjAsMTIwLDEyMCwxMjIsMTI2LDIwNiwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzIsMTM0LDEzNCwKLSAgICAxMzQsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgOTUsOTUsOTUs
MjM1LDE4NiwxODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTAsMTM2LAotICAg
IDExMSwxOSwxNiwxNiw3OCwyMjgsMjM1LDIzNSwyMzUsMjMwLDE3NiwxNTAsMTUwLDE1MCwxOTUs
MjEyLAotICAgIDE5NSwxODksMTg5LDE5NSwyMDgsMTkyLDE4NiwxODYsMTg2LDIyMCwyMzUsMjM1
LDIzNSwyMzUsMTk0LDE0MCwKLSAgICAxMzQsMTM0LDEzNCwxMzcsMTg3LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwzNywxNiwxNiwxNiwx
NiwxMDUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIwMywxMzUsMTIwLDEyMCwxMjAsMTIwLDEyMCwxMzUsMTcxLDIyNCwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMTM0LDEzNCwxMzQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE3OSwx
MzQsMTM0LAotICAgIDEzNywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICA5NSw5NSw5NSwyMzUsMTg2LDE4NiwxODYsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMjgsCi0gICAgMTU3LDc4LDE2LDE2LDE2LDc4LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMTkwLDE1MCwxNTAsMTUyLDIyMiwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMDYsMTg2LDE4NiwxOTYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMjksCi0gICAg
MTg0LDEzNywxMzQsMTM0LDEzNCwxNjMsMjMyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAotICAgIDIzNSwyMzUsMTczLDQ0LDE2LDE2LDE2LDE2LDc4LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMTM0LDEzNCwxMzQs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMyLDEzNywxMzQsMTM0LAotICAgIDE4NywyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICA5NSw5NSw5NSwyMzUsMTg2LDE4NiwxODYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCi0gICAgMjM1LDE3NSw2OCwxNiwxNiwxNiwxNjYsMjM1LDIzNSwyMzUsMjM1LDIzMiwx
NjYsMTUwLDE1MCwxNjgsCi0gICAgMjMyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjMxLDE4OCwxODYs
MTg2LDIyMCwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMTksMTU2LDEzNCwxMzQsMTM0
LDE2MywyMzIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMTczLDMwLDE2LDE2LDE2LDE2NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMTM0LDEzNCwxMzQsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMTc1LDEzNCwxMzQsMTM3LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICA5NSw5NSw5NSwyMzUsMTg2LDE4
NiwxODYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzMiwx
NDMsNTksMTYsMTYsNDQsMjAxLDIzNSwyMzUsMjM1LDIzNSwyMTksMTUyLDE1MCwxNTAsCi0gICAg
MTc0LDIzMiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIwOCwxODYsMTg2LDE4NiwyMDAsMjM1LDIzNSwy
MzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDE4MiwxMzQsMTM0LDEzNCwxNjMsMjMyLDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDE3Myw0NCwxNiwx
NiwxNiwxMDUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwy
MzUsMTM0LDEzNCwxMzQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMjksMTM3LDEzNCwxMzQsMTg3LAot
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICA5NSw5NSw5NSwyMzUsMTg2LDE4NiwxODYsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMTMsMTE0LDE5LDE2LDE2LDQ2LDE1
MywyMzUsMjM1LDIzNSwyMzUsMTk4LDE1MCwxNTAsCi0gICAgMTUwLDE3NCwyMzIsMjM1LDIzNSwy
MzUsMjM1LDIzMSwxODgsMTg2LDE4NiwxODYsMjIwLDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwxODQsMTM0LDEzNCwxMzQsMTYzLDIzMiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTUsMjMsMTYsMTYsMTYsMTA1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMTM0LDEzNCwxMzQsMjM1LDIz
NSwyMzUsMjM1LDIzNSwxOTcsMTM0LDEzNCwxNjAsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICA5NSw5
NSw5NSwyMzUsMTg2LDE4NiwxODYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjAzLDg3LDE2LDE2LDE2LDQ2LDE5OSwyMzUsMjM1LDIzNSwyMzUs
MTkyLDE1MCwKLSAgICAxNTAsMTUwLDE3NCwyMzIsMjM1LDIzNSwyMzUsMjM1LDIyMCwxOTIsMTg2
LDE4NiwxODYsMjAwLDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwxODQsMTM0LDEz
NCwxMzQsMTYzLDIzMiwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwxNjYsMzAsMTYsMTYsMTYsMjI4LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwxMzQsMTM0LDEzNCwyMzUsMjM1LDIzNSwyMzUsMjMyLDE1NiwxMzQs
MTM0LDE5NCwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjA4LAotICAgIDk1LDk1LDk1LDIzNSwxODYsMTg2LDE4Niwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDExNSwxNiwxNiwxNiw5NiwxOTIsMjM1LDIzNSwyMzUsMjM1LDE5MiwKLSAgICAxNTAsMTUw
LDE1MCwxNzQsMjMyLDIzNSwyMzUsMjM1LDIzNSwyMzEsMTg4LDE4NiwxODYsMTg2LDIyMCwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg0LDEzNCwxMzQsMTM0LDE2MywyMzIsMjM1
LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTczLDMw
LDE2LDE2LDkyLDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwxMzQs
MTM0LDEzNCwyMzIsMjM1LDIzNSwyMzUsMTcyLDEzNCwxMzQsMTM0LDIyNSwyMzUsCi0gICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MTM5LAotICAgIDk1LDk1LDEzOSwyMzUsMTkxLDE4NiwxODYsMjIwLDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTAxLDE2LDE2LDM2
LDExOCwxNTMsMjMyLDIzNSwyMzUsMjM1LAotICAgIDE5MiwxNTAsMTUwLDE1MCwxNzQsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMjAsMTkyLDE4NiwxODYsMTk2LDIzNCwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMTg0LDEzNCwxMzQsMTM0LDE2MywyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTQ2LDE2LDE2LDIzLDIyOCwyMzUs
MjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwxNDQsMTM0LDEzNCwxNjMsMjMyLDIz
NSwyMTYsMTM0LDEzNCwxMzQsMTg3LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMDgsOTUsCi0gICAgOTUsOTUsMjA4
LDIzNSwyMDgsMTg2LDE4NiwxOTYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTUsMjIsMTYsMTYsNDYsMTE4LDE1MywyMzIsMjM1
LDIzNSwKLSAgICAyMzUsMTkyLDE1MCwxNTAsMTUwLDIwOCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
MSwxODgsMTg2LDE4NiwyMDAsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwx
ODQsMTM0LDEzNCwxMzQsMTg3LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwxNTMsNzEsMTUzLDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwxOTQsMTM0LDEzNCwxMzQsMTY5LDIzNSwxNjksMTM0LDEzNCwxNjYs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwxMzksOTUsCi0gICAgOTUsMTM5LDIzNSwyMzUsMjMxLDE4NiwxODYs
MTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDE0NiwxNiwxNiwxNiw0NiwxMTgsMTUzLDIzMiwyMzUsCi0gICAgMjM1LDIz
NSwxODQsMTUwLDE1MCwxNjYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjE1LDE4NiwxODYsMTg2
LAotICAgIDIyMCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4MiwxMzQsMTM0LDEz
NywyMTksMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwxODQsMTM0LDEzNCwxMzQsMTc1LDEzNywxMzQsMTM0LDIxNiwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjA4
LDk1LDk1LAotICAgIDk1LDIwOCwyMzUsMjM1LDIzNSwxODYsMTg2LDE4NiwyMzQsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MTI1LDE2LDE2LDE2LDM5LDExOCwxMjEsMTY4LAotICAgIDIzNSwyMzUsMjI3LDE1MiwxNTAsMTUw
LDE5NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMDYsMTg2LDE4NiwKLSAgICAxODYsMjAzLDIz
NCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzIsMTUzLDEzNCwxMzQsMTQ0LDE3NSwyMTAsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDE0NCwxMzQs
MTM0LDEzNCwxMzQsMTM0LDEzNCwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEzOSw5NSw5NSwKLSAgICAxMzks
MjM1LDIzNSwyMzUsMjM1LDE5MSwxODYsMTg2LDIwMywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTI1LDE2LDE2LDE2
LDU2LDEyMSwxMjUsCi0gICAgMjM1LDIzNSwyMzUsMTkyLDE1MCwxNTAsMTUyLDIyMiwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzMSwxODgsMTg2LAotICAgIDE4NiwxODYsMjAzLDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMTYsMTM3LDEzNCwxMzQsMTM0LDEzNCwKLSAgICAxNjYsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjA2LDE0MCwxMzQsMTM0LDEzNCwxMzQs
MTM3LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMjYsOTksOTUsOTUsCi0gICAgMjA4LDIzNSwyMzUsMjM1LDIzNSwy
MTUsMTg2LDE4NiwxODYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMjUsMTYsMTYsMTYsOTgsMTkyLAotICAg
IDIzNSwyMzUsMjM1LDIzMiwxNjYsMTUwLDE1MCwxNjgsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjIwLDE5MiwKLSAgICAxODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIwNiwxNDcsMTM0LDEzNCwxMzQsCi0gICAgMTM0LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMDYsMTQ3LDEzNCwxMzQsMTQ3LDE5NywyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MTgyLDk1LDk1LDEzMCwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxODYsMTg2LDE4Niwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSw4NSwxNiwxNiwzMCwyMDgsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIxOSwxNTIsMTUwLDE1MCwyMTYsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDE4
NiwxODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTYsMTc5
LDE2MCwKLSAgICAxOTcsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMzAsOTUsOTUsMTc4LAot
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE4NiwxODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIyMSw0NCwxNiwxNiw2NCwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDE4NCwxNTAsMTUw
LDE5MCwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMTg2LDE4NiwxODYsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTgyLDk1LDk1LDk1LDIyMiwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwxODYsMTg2LDE4NiwyMzQsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTg3LDIzLDE2
LDE2LAotICAgIDEzMiwyMzUsMjM1LDIzNSwyMzUsMjE0LDE1MCwxNTAsMTUwLDE4NCwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAxODYsMTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDE2OSw5NSwKLSAgICAxNTIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjIyLDEwMyw5NSw5NSwxNTIsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE5MSwx
ODYsMTg2LDIwMywyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTI1LDE2LDE2LAotICAgIDIzLDIw
MSwyMzUsMjM1LDIzNSwyMzUsMTU4LDE1MCwxNTAsMTUyLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAotICAgIDE4NiwxODYsMTg2LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsOTksOTUsCi0gICAg
OTUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTQzLDk1LDk1LDExMywyMzEs
MjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxNSwxODYsMTg2LDE4NiwyMzQsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjI4LDU3LDE2LAotICAgIDE2LDY0LDIyOCwyMzUsMjM1LDIzNSwy
MDgsMTYwLDE2MCwyMDMsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMTg2LDE4NiwxODYs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSw5NSw5NSwKLSAgICA5NSw5NSwxNTIsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMTkxLDk5LDk1LDk1LDIwMCwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwxOTEsMTg2LDE4NiwyMDMsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDE5NCwyMywKLSAgICAxNiwxNiw3OCwyMjgsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMTg2LDE4NiwxODYsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwxMDgsOTUsCi0gICAgOTUsOTUsOTUsOTUsOTUsOTUsOTUsOTUsOTUsOTUsOTUsOTUsOTks
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIxNSwxODYsMTg2
LDE4NiwyMzQsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEzOSwKLSAgICAxNiwxNiwxNiw3OCwy
MjgsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAxODYs
MTg2LDE4NiwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDE5NiwxMTMsCi0gICAgOTUsOTUsOTUs
OTUsOTUsOTUsOTUsOTUsOTUsOTUsOTUsOTksMTY5LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTkxLDE4NiwxODYsMjAwLDIzNCwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMTI1LDE2LDE2LDE2LDc4LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzQsCi0gICAgMTg2LDE4NiwxODYsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDE5NiwxMTMsOTUsOTUsOTUsOTUsOTUsOTUsOTUsMTEzLDE1
NywyMjIsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjE1LDE4NiwxODYsMTg2LDIwMCwyMzQsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1
LDEyNSwxNiwxNiwxNiwxODcsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzQsMjAw
LAotICAgIDE4NiwxODYsMTg4LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjExLDE4
NiwxODYsMTg2LDIwMCwyMzQsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDk5LDE2LDE2
LDExOSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM0LDIwMCwxODYsCi0gICAgMTg2LDE4
NiwyMTIsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjExLDE4NiwxODYsMTg2
LDE5MiwyMTcsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMTgwLDE2LDE2LDQ0LDIyOCwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMDgsMTg2LDE4NiwKLSAgICAxODYsMjExLDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjExLDE4NiwxODYsMTg2LDE4NiwKLSAg
ICAyMDAsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMzcsMTYsMTYsNzgsMjI4LDIzNCwyMDUsMTg2LDE4
NiwxODYsMTg2LDE4NiwxODYsCi0gICAgMjExLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMTUsMTkwLDE4NiwxODYsCi0gICAgMTg2LDIyMCwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM0LDEyOCwxNiwxNiwxNiw2NCwxODEsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYs
MTg4LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzMiwyMDMsMTg2LAotICAgIDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4
NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwKLSAgICAxODYsMTg2LDE4Niwx
ODYsMTAxLDE2LDE2LDE2LDY0LDE4MSwxODYsMTg2LDE4NiwxODYsMTkyLDIxNywKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjMxLDE4OCwKLSAgICAxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYs
MTg2LDE4NiwxODYsMTg2LDE4NiwxODYsCi0gICAgMTg2LDE4NiwxODYsMTg2LDE4NiwxMDEsMTYs
MTYsMTYsNjYsMjA5LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMjAsCi0g
ICAgMTkyLDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4NiwxODYsMTg2LDE4
NiwxODYsMTg2LAotICAgIDE4NiwxODYsMTg2LDE5MiwyMTUsMjM1LDEyNSwxNiwxNiwxNiw3OCwy
MjgsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTI1LDE2LDE2LDE2LDc4LDIyOCwyMzUsMjM1
LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwxMjUsMTYsMTYsMTYsNzgsMjI4LDIzNSwyMzUsCi0gICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDEyNSwxNiwxNiwxNiw3OCwyMjgsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MTI1LDE2LDE2LDE2LDc4LDIyOCwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwxMjUsMTYsMTYs
MTYsNzgsCi0gICAgMjI4LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDEyNSwxNiwxNiwxNiwKLSAgICA3
OCwyMjgsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMTI1LDE2LDE2LAotICAgIDE2LDc4LDIyOCwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwxMjUsMTYsCi0gICAgMTYsMTYsMTYsMTYsMTA1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMTI1LAotICAgIDE2LDE2LDE2LDE2LDIzLDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDE1Myw0NCwxNiw0NCwxNTMsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAot
ICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAg
ICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwK
LSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAg
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0g
ICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
Ci0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAg
IDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwy
MzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUs
MjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwy
MzUsCi0gICAgMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUs
MjM1LDIzNSwyMzUsMjM1LAotICAgIDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1
LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwKLSAgICAyMzUsMjM1LDIzNSwyMzUsMjM1LDIz
NSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsMjM1LDIzNSwyMzUsCi0gICAgMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAot
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwK
LSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0g
ICAgMTI4LDEyOCwxMzYsMTI4LDEzNiwxMjgsMTM2LDEyOCwxMzYsMTI4LDEzNiwxMjgsMTI4LDEy
OCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDExMiwxNDUsOTksMTU5LDk5LDE1
OSw4MywxNzYsODEsMTUzLDg4LDEzMSwxMDEsODQsMTA1LDczLAotICAgIDEzMywxMTQsMTQ0LDEy
OSwxNDQsMTI5LDE0NCwxMjksMTMxLDEzOCwxMjMsMTQzLDEyMywxNDMsMTIxLDE0MywKLSAgICAx
MTUsMTQzLDExNSwxNDMsMTI3LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTMzLDEyMSwxNTIsOTUsMTU1LDkw
LDE1NSw5MCwxNTUsOTAsCi0gICAgMTU1LDkwLDE1NSw5MCwxNTUsOTAsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTIyLDEzNSwKLSAgICAxMDcsMTUyLDExOCwx
NDAsMTI4LDEyOCwxMTEsMTQ3LDEwMywxNTgsMTAzLDE1OCwxMDMsMTU4LDEwNywxNTMsCi0gICAg
MTE1LDE0MywxMjIsMTM1LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDExMiwxNDUsOTQsMTY1LDc0
LDE4NiwKLSAgICA3MSwxOTAsNzEsMTkwLDcxLDE5MCw4NywxMzgsMTA1LDczLDEwNSw3MywxMTAs
ODUsMTIwLDEwMCwKLSAgICAxNDQsMTI5LDEyMCwxNDcsODgsMTMxLDEwMCwxMjAsMTAzLDE1OCwx
MDMsMTU4LDEwMywxNTgsMTAzLDE1OCwKLSAgICAxMDMsMTU4LDEwMywxNTgsMTAzLDE1OCwxMDMs
MTU4LDEwNywxNTMsMTE1LDE0MywxMjcsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMzMsMTIx
LDE1Myw5NCwxODMsNTIsMTgzLDUyLDE4Myw1MiwxODMsNTIsMTgzLDUyLAotICAgIDE4Myw1Miwx
ODMsNTIsMTc5LDU3LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEwMywxNTcsCi0gICAgMTAzLDE1OCwxMTUsMTQzLDEyOCwxMjgsMTI4LDEyOCwxMTUsMTQzLDEx
NSwxNDMsMTE1LDE0MywxMDQsMTU2LAotICAgIDEwMywxNTgsMTAzLDE1OCwxMTUsMTQzLDEyOCwx
MjgsMTIyLDEzNSw4NCwxNzUsNzMsMTg3LDkyLDE2NywKLSAgICAxMTEsMTQ2LDEyOCwxMjgsMTEw
LDg1LDEwNSw3MywxMTEsODcsMTI4LDEyOCwxMjgsMTI4LDE0NCwxMjksCi0gICAgMTQ0LDEyOSwx
MTYsMTQwLDg4LDE3MiwxMDMsMTU4LDk1LDE2Niw4OCwxNDgsMTE1LDk5LDEwNiw3NiwKLSAgICAx
MTIsODMsMTI3LDEyMCwxMjMsMTQzLDEyMSwxNDMsMTA0LDE1NiwxMDMsMTU4LDExNywxMzksMTY0
LDc4LAotICAgIDE4Myw1MiwxODMsNTIsMTgzLDUyLDE2Nyw3MywxMzUsMTE4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEwMywxNTgsCi0gICAgMTAzLDE1OCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAg
IDEyOCwxMjgsMTI0LDEzMiw5MywxNjcsMTA4LDE1MSwxMjUsMTMxLDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAotICAgIDEyOCwxMjgsMTA4LDgxLDEwNSw3MywxMTEsODgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTQ0LDEyOSwKLSAgICAxMzUsMTI4LDExOCwxMzksMTAzLDE1OCwxMDksMTUwLDk5
LDE1OSw3MSwxOTAsNzksMTgxLDExNywxMzksCi0gICAgMTI4LDEyNiwxMzAsMTE4LDE0NywxMzcs
MTQ0LDEyOSwxNTYsMTM1LDE2Niw4OSwxODMsNTIsMTgxLDUzLAotICAgIDE0NywxMDAsMTUyLDk1
LDEzNSwxMTgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyMywxNjEsCi0gICAgMTI4LDE2MiwxMjgsMTYyLDEyOCwxNjIsMTI4LDEyOCwx
MjgsMTM1LDEyOCwxNjIsMTI4LDE1OSwxMjgsMTQyLAotICAgIDEyOCwxMjgsMTI4LDEyOCw3MSwx
OTAsNzEsMTkwLDEwOSwxNTAsMTIyLDEzNSwxMjgsMTI4LDEyNywxMjgsCi0gICAgMTI3LDEyNSwx
MDUsNzMsMTIxLDExMSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMzEsMTI4LDE0NCwxMjksCi0g
ICAgMTE4LDEzOSwxMDMsMTU4LDEwOSwxNTAsMTI4LDEyOCwxMjgsMTI4LDExMywxNDMsNzQsMTg3
LDExMywxNzUsCi0gICAgMTU0LDE2MSwxNTQsMTYxLDE1OSwxMjYsMTcwLDc4LDE4Myw1MiwxODEs
NTIsMTU3LDg4LDEyMiwxNTIsCi0gICAgMTAzLDE1OCwxMDMsMTU4LDEyMSwxNDIsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTU3LDEyOCwxNjIs
Ci0gICAgMTE1LDE2MCwxMTUsMTYwLDEyOCwxNDUsMTI4LDEyOSwxMjgsMTI4LDEyOCwxNDUsMTI4
LDE1MywxMjgsMTYyLAotICAgIDEyOCwxNTksMTI4LDE0NSw5OSwxNzYsODksMTgwLDEyOCwxMjgs
MTE3LDE0MSwxMjMsMTMzLDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjQsMTE4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTQ0LDEyOSwxMjksMTQwLAotICAgIDEwMywxNTgsMTA5LDE1
MCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE0NywxNTUsMTU5LDE0MCwKLSAgICAx
NzEsOTYsMTc5LDU4LDE4Myw1MiwxODAsNTUsMTY0LDg4LDEzMCwxMDMsMTA4LDgwLDEyOCwxMjgs
Ci0gICAgMTE3LDE0MiwxMTQsMTU2LDEwMywxNTgsMTA4LDE1MiwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMzcsMTI4LDE1OCwxMjgsMTYyLDEyOCwxMzYsCi0gICAgMTA0LDE1NiwxMDMs
MTU4LDEyNCwxMzMsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTM2LAotICAg
IDEyOCwxNTMsMTI4LDE2MiwxMjgsMTYyLDEyOCwxNjIsMTI4LDE2MiwxMjgsMTU2LDEyOCwxNDMs
MTEwLDE0MiwKLSAgICAxMTMsMTQ2LDEyOCwxMjgsMTI4LDEyOCwxMjcsMTI4LDEyOCwxMjgsMTI3
LDEyOCwxMTcsMTQ4LDEwMywxNTgsCi0gICAgMTA5LDE1MCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDE2MCwxMTksMTc2LDc4LDE4Myw1MiwKLSAgICAxNzksNTYsMTQwLDEwNCwxMjQs
MTI4LDEyOCwxMjgsMTQzLDEyOSwxNDQsMTI5LDEwNSw3MywxMjQsMTE5LAotICAgIDEyOCwxMjgs
MTI5LDEyOSwxMjEsMTU3LDEwMywxNTgsMTA5LDE1NywxMjcsMTI4LDEyOCwxMjgsMTI4LDEyOCwK
LSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTYy
LDEyOCwxNjEsMTI4LDEzNiwxMjgsMTI4LAotICAgIDEyNCwxMzIsMTAzLDE1NywxMDMsMTU4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwx
MjgsNzEsMTkwLDEyMCwxNTEsMTI4LDE0NSwxMjgsMTU5LDEyOCwxNjIsMTI4LDE2MiwKLSAgICAx
MjMsMTUzLDEyNywxNDQsMTI4LDEyOCwxMjUsMTMxLDEyMywxMzMsMTA3LDE1MywxMjMsMTYxLDEy
OCwxNjIsCi0gICAgMTI4LDE2MiwxMjgsMTYyLDEzMSwxNTUsMTU1LDEwNywxODAsNTgsMTgzLDUy
LDE3Niw2MSwxNTIsOTUsCi0gICAgMTIzLDEzMyw4MSwxNzksNzEsMTkwLDEyOCwxMjgsMTMxLDEy
OCwxNDQsMTI5LDEwNSw3MywxMDcsNzgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI0
LDE0MCwxMDMsMTU4LDEwNiwxNTMsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNjIsMTI4LDEzNCwxMjgsMTI4LDEy
OCwxMjgsCi0gICAgMTI4LDEyOCwxMjQsMTMzLDEwMywxNTgsMTE1LDE0OSwxMzUsMTI5LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCw3MSwxOTAsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEzMSwxMTUsMTExLAotICAgIDEyNywxNTIsMTI4LDE2MiwxMjgs
MTUzLDEyOCwxMzAsMTI4LDEyOCwxMjMsMTU0LDEzNSwxNDgsMTQwLDEyNywKLSAgICAxNTEsMTEz
LDE2Myw5MSwxODMsNTIsMTgzLDUyLDE2OCw4MSwxNDUsMTI3LDEyOCwxNDMsMTE0LDE3MywKLSAg
ICAxMTksMTU1LDEyNSwxMzEsNzEsMTkwLDg2LDE3MiwxMjgsMTI4LDE0NCwxMjksMTIzLDExNywx
MDUsNzMsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNDEsMTYwLDEwMywx
NTgsMTA2LDE1NCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTM4LDEyOCwxNjIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEy
OCwxMjgsMTI4LDExNiwxNDMsMTAzLDE1OCwxMTAsMTUzLDEzNCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAotICAgIDEyOCwxMjgsMTI4LDEyOCw3MSwxOTAsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTIz
LDExNSwxMDUsNzMsCi0gICAgMTI4LDE1NSwxMjgsMTYyLDEyOCwxNjIsMTMxLDE1NSwxNTUsOTAs
MTc5LDU3LDE4Myw1MiwxODMsNTIsCi0gICAgMTgzLDUyLDE3Niw2MCwxNTgsODYsMTU1LDEzNywx
NTQsMTYxLDEyOCwxNTIsMTI4LDE2MiwxMjQsMTcwLAotICAgIDEwMCwyMTgsMTAwLDIxOSwxMDIs
MTU2LDcxLDE5MCwxMTksMTM3LDE0NCwxMjksMTI4LDEyOCwxMDUsNzMsCi0gICAgMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNTQsMTYxLDExNCwxNDQsMTAzLDE1OCwxMjMsMTMzLAot
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTYxLDEyOCwxNjIs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTEz
LDE0NiwxMDMsMTU4LDEyMSwxNDUsMTI5LDEyOCwxMjgsMTI4LAotICAgIDEzNCwxMjgsMTI4LDEy
OCw3MSwxOTAsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTA5LDgxLDExNiwxMTgsCi0gICAgMTI5
LDE1OCwxNDIsMTIxLDE1OCw4NSwxODMsNTIsMTgzLDUyLDE2OCw3MiwxNDgsMTAwLDE0MCwxMjgs
Ci0gICAgMTMxLDE1MywxMTgsMTYwLDExNiwxNTksMTM5LDE2MSwxMzEsMTU5LDEyNSwxMzEsMTI4
LDEzNywxMjgsMTYyLAotICAgIDEyNCwxNzAsMTAwLDIxOSwxMjgsMTI4LDcxLDE4OSw3NiwxODQs
MTQ0LDEyOSwxMjgsMTI4LDEwNSw3MywKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDE1NCwxNjEsMTI4LDEyOCwxMDQsMTU3LDEwMywxNTgsCi0gICAgMTI0LDEzMywxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNjIsMTI4LDE1MiwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDExMSwxNDgsMTAzLDE1
OCwxMjMsMTQyLDEyOCwxMjgsCi0gICAgMTMwLDEyOCwxMzksMTI4LDg0LDE3OCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxNDYsMTAyLDE2OCw4MSwKLSAgICAxODMsNTIsMTgzLDUyLDE4MCw1NSwx
NTksOTgsMTM3LDE0MywxMjgsMTI4LDEzMCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTQ3LDEyOCwx
NjIsMTI4LDE2MiwxMjgsMTYyLDEyNywxNjEsMTIxLDE2MSwxMTQsMTU5LDExMywxNTQsCi0gICAg
MTI4LDE2MiwxMDUsMTk2LDEyOCwxMjgsMTEyLDE0NCw3MSwxOTAsMTQ0LDEyOSwxMjgsMTI4LDEw
NSw3MywKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE1MSwxNTcsMTI4LDEy
OCwxMjcsMTI5LDEwMywxNTcsCi0gICAgMTA1LDE1NSwxMjcsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxNjIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTEwLDE0OSwxMDMsMTU4LDExMSwxNDgs
Ci0gICAgMTI4LDEyOCwxMzUsMTI4LDE0NCwxMjksMTM3LDEyOCwxNTAsOTcsMTc4LDYwLDE4Myw1
MiwxNjksNjcsCi0gICAgMTQ3LDEwMCwxMzEsMTIyLDEyOCwxMjgsMTI4LDE2MiwxMjgsMTU2LDEy
OCwxMjgsMTQzLDEyOSwxMzIsMTI4LAotICAgIDEyOCwxMjgsMTI4LDE1NSwxMjgsMTYxLDE0Nywx
NjEsMTI4LDE0NywxMjgsMTU1LDEyOCwxNjIsMTI2LDE2MSwKLSAgICAxMjgsMTYyLDEyNSwxNjEs
MTE1LDE0MywxMjcsMTI4LDcxLDE5MCwxNDQsMTI5LDEyOCwxMjgsMTA1LDczLAotICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTIzLDEz
NCwKLSAgICAxMDMsMTU4LDEwNywxNTMsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDE2MiwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDExMywxNDYsMTAzLDE1OCwKLSAgICAxMjAsMTM3LDE0
MywxMDYsMTY1LDg1LDE4MCw1NywxODMsNTIsMTcxLDc2LDEzMywxMjgsMTAzLDE1OCwKLSAgICAx
MTAsMTUwLDEyOCwxMjgsMTI4LDE1MywxMjgsMTYyLDEyOCwxMzEsMTI4LDEyOCwxMzEsMTI4LDE0
NCwxMjksCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxNTAsMTMxLDE2MSwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEzNiwxMjgsMTU0LAotICAgIDEyOCwxNjIsMTI4LDE2MiwxMjMsMTYxLDExNywxNTUs
ODEsMTgwLDE0NCwxMjksMTI4LDEyOCwxMDUsNzMsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEwNCwxNTYs
MTAzLDE1OCwxMTksMTM4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwK
LSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDE0MiwxMjgsMTYyLDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMzEsMTIyLAotICAgIDE3Miw2NywxODMsNTIsMTgwLDU1LDE2Miw4
NywxNDMsMTMxLDEyNSwxNTksMTAzLDE1OCwxMjAsMTM1LAotICAgIDEyOSwxMjgsMTI4LDEyOCwx
MjgsMTYyLDEyOCwxNjIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTMxLDEyOCwKLSAgICAxMzMs
MTI4LDEyNSwxMzEsMTI4LDEyOCwxMjgsMTYyLDEyOCwxNTcsOTksMTU5LDk5LDE1OSw4NSwyMDQs
Ci0gICAgODEsMTkyLDEyOCwxNjIsMTI4LDE2MiwxMjgsMTYyLDEyOCwxNjIsMTI4LDE2MiwxMTcs
MTI4LDEwNSw3NCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI0LDEzMywxMDQsMTU2LDEwMywxNTgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTYxLDEyOCwxNjIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTQ3LDEwMiwxNzEsNjgsMTgz
LDUyLAotICAgIDE3OCw1OCwxMjksMTI0LDEyOCwxMjgsMTI3LDEzNCwxMjgsMTYyLDEwMywxNTgs
MTEzLDE1MCwxNDQsMTI5LAotICAgIDE0MywxMjgsMTM1LDEyOCwxMjgsMTYyLDEyOCwxNjIsNzQs
MTg2LDcxLDE5MCw3MSwxOTAsNzEsMTkwLAotICAgIDcxLDE5MCw3MywxODcsMTI4LDEyOCwxMzEs
MTM3LDEyOCwxNjIsOTEsMTgwLDgxLDE1Myw4OCwxMzEsCi0gICAgODgsMTMxLDEyOCwxNjIsMTI4
LDE2MiwxMzAsMTI1LDEzNiwxNDUsMTI0LDE1MywxMjgsMTYyLDEyMCwxNTQsCi0gICAgMTI3LDEz
MSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAotICAgIDEyOCwxMjgsMTIzLDEzNCwxMDMsMTU4LDEyNywxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDE2MiwxMjgsMTYyLDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI5LDEyNywxNTYsODksMTgzLDUyLDE3Miw2NiwxNTIsOTMsCi0gICAgMTI5LDEyNywxMjQsMTMz
LDEyMCwxMzcsMTI4LDEyOCwxMjgsMTQ5LDEwNiwxNTQsMTI4LDEyOCwxMTYsOTcsCi0gICAgMTMz
LDExNCwxNDQsMTI5LDEyOCwxNjIsMTI4LDE2Miw5MiwxNjcsOTksMTU5LDk5LDE1OSw5OSwxNTks
Ci0gICAgOTksMTU5LDEwNywxNTAsMTI1LDEzMSwxMjgsMTI4LDEyNiwxNTMsMTI4LDE2MiwxMDQs
MTE1LDEwNCwxMTUsCi0gICAgMTA0LDExNSwxMjgsMTYyLDEyOCwxNjIsMTIzLDE0MywxMjMsMTQz
LDEwNSwxMTksMTE2LDE1OSwxMjcsMTYxLAotICAgIDEyNywxNjEsMTIzLDE0NCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwx
MjgsMTAzLDE1OCwxMDcsMTUzLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxNjIsMTI4LDE2MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxNTEsOTYsMTgzLDUyLDE4Myw1MiwxNjYsNzQs
MTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMDgsMTUyLDEyOCwxMzUsMTI4
LDEyOCwxMDMsMTU3LDExMSwxNDgsMTI2LDEyOSwKLSAgICA4NCwxNTUsMTEyLDEwMiwxMjgsMTYy
LDEyOCwxNjIsMTM5LDEyOCwxMzMsMTI4LDEyOCwxMjgsMTIwLDEzNywKLSAgICAxMDcsMTUyLDEw
MywxNTgsMTAzLDE1OCwxMjUsMTMxLDEyNywxMjgsMTI4LDE2MSwxMTMsMTU5LDEwMywxNTgsCi0g
ICAgMTAzLDE1OCwxMjgsMTYyLDEyOCwxNjIsMTAzLDE1OCwxMDMsMTU4LDEwMywxNTgsMTAzLDE1
OCwxMDYsMTU4LAotICAgIDEyNCwxNjEsMTI4LDE2MiwxMjQsMTU5LDEyNywxNDMsMTI4LDEzMiwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTAzLDE1OCwxMDMs
MTU4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4
LDEyOCwxNjIsMTI4LDE2MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEy
OSwxMjcsMTc0LDY0LDE4Myw1MiwxNzUsODEsMTUyLDEyOSwxNDEsMTQ0LDE0MSwxNDQsMTM2LDEz
OSwKLSAgICAxMjgsMTI4LDEwOCwxNTIsMTAzLDE1OCwxMjgsMTYwLDEyOCwxMjgsMTI0LDEzMiwx
MDMsMTU4LDEwMSwxNjAsCi0gICAgODUsMTc2LDExMSwxNDYsMTI4LDE2MiwxMjgsMTYyLDE0Miwx
MjYsMTQzLDEyOSwxMTQsMTQyLDEwMywxNTgsCi0gICAgMTA0LDE1NiwxMTIsMTM0LDEyOCwxNTks
MTQzLDE1NywxMjgsMTI4LDEyOCwxMzMsMTI5LDE2MCwxNDQsMTI5LAotICAgIDEzNSwxNDIsMTI4
LDE2MiwxMjgsMTYyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyNywxMjksMTE3LDE0MSwKLSAg
ICAxMTQsMTQ0LDExNCwxNTksMTIyLDE2MSwxMjgsMTYyLDEyOCwxNjIsMTI0LDE0NSwxMjcsMTI4
LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEwMywxNTgsMTAzLDE1OCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTYwLDEyOCwx
NjIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTM2LDExNiwKLSAgICAxNzUsNjMsMTgzLDUyLDE2
MiwxMjgsMTU0LDE2MSwxNTQsMTYxLDE1NCwxNjEsMTU0LDE2MSwxNTQsMTYxLAotICAgIDE0OSwx
NjAsMTAzLDE1OCwxMjUsMTU3LDEyOCwxNjIsMTI4LDE1NSwxMjgsMTI4LDEwNiwxNTEsOTcsMTY0
LAotICAgIDEwMywxNTgsMTAzLDE1OCwxMjgsMTYyLDEyOCwxNjIsMTIzLDExMiwxMTIsMTUxLDEw
MywxNTgsMTE1LDE0OSwKLSAgICAxMDUsNzMsMTIzLDEwNiwxNTQsMTYxLDE0NywxNTEsMTM3LDEy
OSwxMjgsMTI4LDEyOCwxNDksMTMxLDE0NCwKLSAgICAxMjgsMTI4LDEyOCwxNjIsMTI4LDE2Miwx
MjEsMTQ5LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjMs
MTMzLDExNSwxNDMsMTEzLDE0OCwxMjIsMTYxLDEyOCwxNjIsMTI4LDE2MiwxMTQsMTU5LAotICAg
IDExNCwxNDksMTI4LDEyOCwxMDMsMTU4LDEwMywxNTgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEzNSwxMjgsMTYyLDEyOCwxNTcsMTI4
LDEyOCwxNDksMTAwLDE4Myw1MiwKLSAgICAxODIsNTMsMTYxLDEzMywxNTEsMTU3LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTM3LDE0NSwKLSAgICAxMDMsMTU4LDEwMywxNTgsMTU0
LDE2MSwxMjgsMTYyLDE1NCwxNjEsMTM2LDEzOCwxMjgsMTI4LDEzOCwxNDEsCi0gICAgMTM1LDE1
MiwxMTYsMTU5LDEyOCwxNjIsMTI4LDE2MiwxMDgsMTUxLDEwMywxNTgsMTA1LDEzMiwxNDQsMTI5
LAotICAgIDEzMiwxMTEsMTU0LDE2MSwxNDcsMTUzLDEzOSwxMjgsMTQ0LDEyOSwxMjgsMTI4LDEy
OCwxMjgsMTI4LDE0OSwKLSAgICAxMjgsMTI4LDEyOCwxNjIsMTI4LDE2MiwxMDAsMjE3LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjcsMTI5LDEyMiwxNTAsMTIxLDE2MSwxMjgsMTYyLAotICAgIDEyOCwxNjIsMTIw
LDE2MCwxMDMsMTU4LDEwMywxNTcsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTM2LDEyOCwxNjIsMTI4LDE1NSwxODMsNTIs
MTY5LDcxLAotICAgIDEzMCwxMjQsMTU0LDE2MSwxMzQsMTM2LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTA3LDE1MywKLSAgICAxMDMsMTU4LDEyMiwxMzUsMTI4LDEzMSwxMjgsMTYy
LDg1LDE3NCw3MSwxOTAsMTEzLDE0NCwxMjgsMTI4LAotICAgIDE0NCwxNDgsMTU0LDE2MSwxMjks
MTYxLDEyOCwxNjIsMTAzLDE1OCwxMDMsMTU4LDE0MCwxMzcsMTQ2LDE0MSwKLSAgICAxNDQsMTI5
LDE0NywxMzksMTMxLDEyMiwxNDQsMTI5LDEzOSwxMjgsMTI4LDEyOCwxMjgsMTI5LDEyOCwxMjgs
Ci0gICAgMTI4LDEyOCwxMjgsMTYyLDEyOCwxNjIsMTAwLDIxOSwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTE5LDE0MSwKLSAgICAxMjcsMTQ1LDEyOCwxNjIsMTAzLDE1OCwx
MTEsMTQ4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxNDQsMTEzLDE4Myw1MiwxODMsNTIsMTI4LDEyOCwKLSAgICAx
MjgsMTI4LDE1NCwxNjEsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMTAsMTQ5LDEw
MywxNTgsCi0gICAgMTE3LDE0MSwxMjgsMTI4LDEyOCwxNTUsMTI4LDE2MiwxMjgsMTI4LDg4LDE3
MSw3MSwxOTAsMTEzLDE0MywKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTE4LDEzNSwxMjgsMTYyLDEx
MiwxNTksMTAzLDE1OCwxMDYsMTU4LDEzMiwxNTksCi0gICAgMTQ5LDE0NSwxNDQsMTI5LDE0NCwx
MjksMTQ1LDEzNCwxMjcsMTI3LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTMxLAotICAgIDEyOCwxMjgs
MTI4LDE1NSwxMjgsMTQ3LDEwMCwyMTksMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwK
LSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTQxLDExMCwxNTUs
OTAsMTc4LDU5LAotICAgIDE3NCw2NCwxMjgsMTQwLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTgyLDUzLDE4Miw1MywxMzksMTM5LDEyOCwxNTcsCi0gICAgMTI4LDE0NSwxNTIsMTYxLDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyNywxMjgsMTAzLDE1OCwxMDMsMTU3LAotICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTYyLDEyOCwxNjIsMTI4LDEyOCwxMjgsMTI4LDExMywxNDMsODMsMTc2
LAotICAgIDEyNSwxMzEsMTI4LDEyOCwxMDMsMTU2LDEyMiwxNjEsMTI4LDE2MiwxMjgsMTQ4LDEx
NiwxNTksMTAzLDE1OCwKLSAgICAxMDYsMTU3LDEyOSwxMzksMTQ0LDEyOSwxNDgsMTQzLDE1MSwx
NTYsMTQwLDE0MywxMzEsMTMyLDEyOCwxNDIsCi0gICAgMTI4LDEyOSwxMjgsMTI4LDEyOCwxMjks
MTAwLDIxOSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTM2
LDExNiwxNTUsOTAsMTU1LDkwLDE4Myw1MiwxODMsNTIsMTgzLDUyLDE3MSw2OCwKLSAgICAxMzgs
MTEzLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI5LDEyNywxODMsNTIsMTQxLDExMCwx
MjgsMTM2LDEyOCwxNTksCi0gICAgMTI4LDE2MiwxMjgsMTYxLDEyOCwxNDUsMTI4LDEzOCwxMjgs
MTI4LDEwOSwxNTEsMTAzLDE1OCwxMDEsMjA0LAotICAgIDEwMCwyMTksMTAwLDIxOSwxMjgsMTYy
LDEyOCwxNjIsMTA5LDE5MCwxMjMsMTQ1LDEyOCwxMjgsMTI4LDEyOCwKLSAgICA4NiwxNzMsMTI4
LDEyOCwxMjMsMTMzLDExMSwxNDgsMTMwLDE2MSwxMjgsMTYxLDE0NywxNTMsMTMxLDEzNiwKLSAg
ICAxMTIsMTUxLDEwMywxNTgsMTIzLDE0NCwxMjksMTM5LDE0NywxNDMsMTU0LDE2MSwxNTQsMTYx
LDE1MSwxNTcsCi0gICAgMTI4LDE2MCwxNDUsMTA3LDE1NSw5MCwxNDEsMTM1LDE1NSw5MCwxNTUs
OTAsMTU1LDkwLDE3MSw2OCwKLSAgICAxODMsNTIsMTgzLDUyLDE4Myw1MiwxODMsNTIsMTc5LDU3
LDE1NSw5MCwxMzgsMTEzLDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDE3Miw2NiwxODMsNTIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4
LDEzMCwxMzUsMTYxLDEyOCwxNjIsMTI4LDE2MiwxMjgsMTQ1LDExNSwxNjAsMTEyLDE1NywxMDAs
MjE5LAotICAgIDExNCwxNzMsMTE0LDE3MywxMjgsMTYyLDEyOCwxNjIsMTAxLDIxNiwxMDAsMjE5
LDEwOSwxOTAsMTI3LDEyOSwKLSAgICAxMTksMTM4LDEyMCwxMzgsMTI4LDEyOCwxMzMsMTM5LDE1
MiwxNjEsMTI4LDE2MiwxMjksMTU3LDE0NCwxMjksCi0gICAgMTM3LDEyOCwxMTEsMTQ4LDEwMywx
NTgsMTAzLDE1OCwxMzYsMTM0LDE0MywxMDksMTY2LDEwNCwxNjksMTA1LAotICAgIDE4Myw1Miwx
ODMsNTIsMTgzLDUyLDE4Myw1MiwxODMsNTIsMTgzLDUyLDE4Myw1MiwxNzIsNjcsCi0gICAgMTU1
LDkwLDE1Miw5NSwxMzAsMTI0LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTgzLDUyLDE1Miw5
NSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDE1NCwxNjEsMTI4LDEzMywx
MjgsMTUzLDEyOCwxNjIsMTI4LDE2MiwxMjgsMTYyLDEyNiwxNjUsCi0gICAgMTI4LDE0NSwxMjgs
MTQyLDEyOCwxNjIsMTI4LDE2MiwxMjcsMTMxLDExNCwxNzMsMTAwLDIxOSwxMDcsMTg0LAotICAg
IDEwMywxNTgsMTAzLDE1OCwxMzMsMTM0LDEyOCwxMjgsMTI0LDE1OCwxMTMsMTUzLDEyOCwxNjIs
MTMwLDE1NywKLSAgICAxMjgsMTM0LDEyOCwxMjgsMTI3LDEyOSwxMTYsMTQxLDE1NSw4OCwxODMs
NTIsMTgzLDUyLDE4Myw1MiwKLSAgICAxNjYsODQsMTUyLDExNCwxMzgsMTcyLDEyOCwxMjksMTI4
LDEyOCwxNDMsMTQ2LDE0NCwxNDgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAot
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjksMTI3LDE4Myw1MiwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTU0LDE2MSwxMjgsMTI4LDEyNywxMjgsMTAzLDE1OCwx
MTMsMTQ1LDEyOCwxMzcsMTIxLDE3NSwKLSAgICAxMjgsMTYyLDEyOCwxNjIsMTI4LDE2MiwxMjgs
MTYyLDEyOCwxNDMsMTI4LDEzMiwxMTcsMTYzLDEwMywxNTgsCi0gICAgMTA1LDE1OSwxNDEsMTU5
LDE1MiwxNTcsMTI4LDEyOCwxMjgsMTI4LDkyLDE3MiwxNDAsMTM3LDE0NSwxMjcsCi0gICAgMTU1
LDEwNywxNjQsODIsMTgzLDUyLDE4Myw1MiwxODEsNTMsMTQ1LDEwMSwxMTgsMTQ4LDEyOCwxNjIs
Ci0gICAgMTI4LDE2MiwxMjgsMTYyLDEwNCwyMDUsMTMwLDEzMCwxMjgsMTI4LDEyOCwxMjgsMTM1
LDEzNiwxNTMsMTU5LAotICAgIDE0NCwxNDgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgs
MTI4LDE3MCw3MCwxODMsNTIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAx
MjgsMTI4LDE1NCwxNjEsMTM3LDEzOSwxMDksMTUxLDEwMywxNTgsMTI3LDEyOSwxMjgsMTI4LDEx
OCwxNTcsCi0gICAgMTAwLDIxOSwxMTgsMTY5LDEyOCwxNDUsMTI4LDE2MiwxMjgsMTYyLDEyOCwx
NjIsMTI4LDE2MiwxMjgsMTYyLAotICAgIDEyOCwxNjIsMTI4LDE2MiwxMjgsMTYyLDEyOCwxMzgs
MTU1LDkwLDE4Myw1MiwxODMsNTIsMTgzLDUyLAotICAgIDE4Myw1MiwxNzksNTksMTU4LDEwMSwx
NTIsMTE0LDEzMCwxNTYsMTI4LDE2MiwxMjgsMTYyLDEyNywxNjEsCi0gICAgMTA2LDE5NywxMjgs
MTYyLDEyNSwxMzYsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMzMsMTM0LAotICAg
IDE0NSwxNTAsMTUwLDE1NiwxMzYsMTM4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDE4Myw1MiwxODMsNTIs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDE1NCwxNjEsMTU0
LDE2MSwxMDMsMTU4LDEwNiwxNTQsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTA3LDE5
NiwxMDAsMjE5LDEyMywxNDIsMTI4LDE2MCwxMjgsMTYyLDEyOCwxNjIsMTI0LDE2MSwxMzAsMTYx
LAotICAgIDEyNywxNjksMTUwLDExNiwxNzEsNzYsMTgzLDUyLDE4Myw1MiwxNzksNTcsMTU1LDkw
LDEzMywxMTcsCi0gICAgOTksMTc2LDk5LDE3NiwxMjcsMTU2LDEyOCwxNjIsMTI4LDE2MiwxMjgs
MTYyLDEyNiwxNjAsMTA2LDE1NywKLSAgICAxMDMsMTU4LDEyOCwxNjIsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMzYsMTM4LDE0
MSwxNDQsMTU0LDE2MCwxMzgsMTQwLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTgzLDUyLDE4Myw1MiwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTQ1LDE0OSwxMzksMTYwLDEwMywxNTgsMTIyLDEz
NSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEwMCwyMTcsMTAxLDE4OCwx
MDMsMTYzLDExOSwxNjAsMTQzLDEzMSwxNTksOTgsMTc0LDY5LAotICAgIDE4Myw1MiwxODMsNTIs
MTcyLDY3LDE1OSw4NSwxNTIsMTEzLDEyOCwxMjcsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEwNCwx
NTQsNzEsMTkwLDc5LDE4MSwxMjIsMTYyLDEyMCwxNzgsMTI2LDE2NSwxMjgsMTYyLDEyOCwxNjAs
Ci0gICAgMTE2LDE1NiwxMjgsMTYyLDEwMywxNTQsMTEyLDE0NiwxMjYsMTI5LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEzMCwxMzAsMTQxLDE0
NCwxMzgsMTQwLDEzNiwxMzgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgs
MTI4LDE4Myw1MiwxODMsNTIsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAx
MjgsMTI4LDEyOCwxMjgsMTA0LDE1OCwxMDMsMTU4LDEzNywxMzksMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsCi0gICAgMTI4LDEyOCwxNDAsMTE0LDE2NSw3NSwxODMsNTIsMTgzLDUyLDE4Myw1Miwx
NzksNjAsMTU5LDk5LAotICAgIDE1MywxMTIsMTM1LDE0NiwxMjgsMTQ5LDEzOSwxMzksMTM0LDEx
NSwxMTEsODcsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTAwLDE4Miw3MSwxOTAsNzks
MTk4LDEwMCwyMTksMTA2LDE5NywxMjYsMTQxLDEyOCwxNTQsCi0gICAgMTI4LDE2MiwxMjgsMTYy
LDEwOSwxMzUsMTAzLDE1NiwxMDMsMTU2LDExNywxMjksMTI4LDEyOCwxMjgsMTI4LAotICAgIDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEzMiwxMzMsMTUy
LDE1OCwKLSAgICAxMzcsMTQwLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDE4Myw1MiwxODMsNTIsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTAzLDE1
OCwxMzEsMTU4LDE1NCwxNjEsMTYyLDEzMCwxNjgsMTA2LDE3MSw5NiwKLSAgICAxODEsNTksMTgz
LDUyLDE3Miw3NCwxNjgsMTA2LDE1NSw5MCwxMzUsMTM1LDEwNSwyMDMsMTAwLDIxOSwKLSAgICAx
MDYsMjA1LDExNywxODUsMTI5LDE1OSwxMjgsMTYyLDEyOCwxNjIsMTIzLDE0MiwxMjcsMTM4LDEy
OCwxMjgsCi0gICAgMTI0LDE0MSwxMDQsMjExLDkyLDE4OCw3MSwxOTAsOTUsMTY2LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxNDIsMTQxLDEzNSwxNDIsMTI5LDEyMiwxMjMsMTA1
LDE1MCwxMDMsMTU4LDExMSwxNDgsMTI3LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTQzLDE0Niwx
NDksMTU0LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAot
ICAgIDEyOCwxMjgsMTI4LDEyOCwxODMsNTIsMTgzLDUyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDExMSwxNDgsMTU1LDk5LDE4MCw2MiwxODMs
NTIsMTgzLDUyLDE3OSw1NywKLSAgICAxNTMsOTIsMTI3LDEyNiwxNDEsMTQ0LDEzMywxMzQsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMDAsMjE5LDEwMCwyMTksMTQ0LDEy
OSwxMzksMTM4LDEyOCwxNDUsMTI4LDE1MywxMjYsMTU0LDEyOCwxMjksCi0gICAgMTI4LDEyOCwx
MjgsMTQ5LDEyOCwxNjIsMTE5LDE2NSwxMDgsMTcxLDEyMywxNTAsMTI4LDE0NSwxMjgsMTQ1LAot
ICAgIDEyOCwxMzQsMTM0LDEyOCwxNDQsMTI5LDEzMCwxMjgsMTI4LDEyOCwxMTUsMTQzLDEwMywx
NTgsMTA2LDE1MywKLSAgICAxMjcsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjksMTI5LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEy
OCwxODAsNTUsMTgzLDUyLDE1NSw5MCwxNTUsOTAsMTY0LDc4LDE4Myw1MiwKLSAgICAxODMsNTIs
MTgzLDUyLDE4Myw1MiwxODMsNTIsMTcxLDY4LDE0NCwxMDUsMTI4LDEyOCwxMDksMTUxLAotICAg
IDEwMywxNTgsMTI1LDEzMSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKLSAgICAxMDAsMjE5LDEwMCwyMTksMTQ0LDEyOSwxNDQsMTI5LDEyOCwxMjgsMTI4
LDEyOCwxMjYsMTIzLDEwOSw4NSwKLSAgICAxMjMsMTE3LDEyOCwxMjgsMTI4LDE0NSwxMjgsMTUw
LDEyNiwxNTgsMTI4LDE2MiwxMjgsMTYyLDEyOCwxNjIsCi0gICAgMTI4LDE2MiwxMjgsMTYyLDEz
MSwxNTQsMTQ0LDEyOSwxMzQsMTI4LDEyOCwxMjgsMTIyLDEzNSwxMDMsMTU4LAotICAgIDEwNCwx
NTYsMTE4LDE0MCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEzNSwxMTcsMTc5LDU3LDE4Myw1
MiwxODMsNTIsMTc5LDU3LDE1OCw4NiwKLSAgICAxNTUsOTAsMTU1LDkwLDEzOCwxMTEsMTM1LDEx
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMDMsMTU4LAotICAgIDEwMywxNTcsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMDAs
MjE5LDEwMCwyMTksMTQ0LDEyOSwxNDQsMTI5LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyNSwx
MjIsCi0gICAgMTA5LDg0LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTA4LDE0OSw3
MSwxOTAsODcsMTcyLAotICAgIDEyOCwxNDIsMTI4LDE0NSwxMjksMTM0LDE0MSwxMjksMTQ0LDEy
OSwxMjgsMTI4LDEyOCwxMjgsMTIzLDEzNCwKLSAgICAxMDksMTUwLDEwMywxNTgsMTEwLDE1MCwx
MjcsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTAzLDE1OCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjAsMTM3LDEwMywxNTgsCi0gICAgMTIyLDEzNSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEwMCwyMTksMTAwLDIxOSwx
NDQsMTI5LDE0NCwxMjksMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgs
MTI4LDExMyw5MSwxMjgsMTI4LDEyNywxMjUsMTI4LDEyOCwxMjgsMTI4LDk5LDE1OSw3MSwxOTAs
Ci0gICAgMTA2LDE1MSwxMjgsMTI4LDEyOCwxMjgsMTI5LDEyOCwxNDQsMTI5LDEzOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTE4LDE0MCwxMDMsMTU4LDEwNiwxNTMsMTI3LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAg
IDEyOCwxMjgsMTI4LDEyOCwxMDMsMTU4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEwMywxNTcs
MTA2LDE1NCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTAwLDIxOSwxMDAsMjE5LDE0NCwxMjksMTQ0LDEy
OSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI2LDEyMywx
MjEsMTEyLDEyOCwxMjgsMTE3LDEwMiwxMjgsMTI4LDEyOCwxMjgsODUsMTc0LAotICAgIDcxLDE5
MCwxMDYsMTUxLDEyOCwxMjgsMTI4LDEyOCwxMzgsMTI4LDE0NCwxMjksMTM4LDEyOCwxMjgsMTI4
LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjIsMTM1LDEwMywxNTgsMTA2LDE1MywxMjcsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4
LDEyOCwxMDMsMTU4LDEyNywxMjgsMTI4LDEyOCwxMTksMTM4LDEwMywxNTgsMTIyLDEzNSwKLSAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCi0gICAgMTAwLDIxOSwxMDQsMjA1LDE0MywxMjksMTQ0LDEyOSwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyNywx
MjcsMTI4LDEyOCwxMTMsOTAsMTI3LDEyNywxMjgsMTI4LAotICAgIDg1LDE3NCw3MSwxOTAsMTA2
LDE1MSwxMjgsMTI4LDEyOCwxMjgsMTM4LDEyOCwxNDQsMTI5LDEzNywxMjgsCi0gICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTIyLDEzNSwxMDMsMTU4LDEwNiwxNTMsMTI4LDEyOCwxMjgsMTI4
LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEwMywxNTgs
MTA2LDE1MywxMjgsMTI4LDEwMywxNTgsMTA3LDE1MywxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTE2LDE2OCwKLSAg
ICAxMDAsMjE5LDEyNSwxMzYsMTMzLDEyOCwxNDQsMTI5LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
NCwxMjAsMTA5LDgxLDEyNywxMjcsCi0gICAgMTI4LDEyOCw4MiwxNzcsNzEsMTkwLDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEzOSwxMjgsMTQ0LDEyOSwKLSAgICAxMzAsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyMiwxMzUsMTAzLDE1OCwxMTAsMTQ5LDEyOCwxMjgsCi0gICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTIyLDEzNSwxMDMsMTU4LDEwOCwx
NTIsMTAzLDE1OCwxMjUsMTMxLDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMDAsMjE5LAotICAgIDEwNCwyMDUsMTI4
LDEyOCwxMjgsMTI4LDE0NCwxMjksMTMzLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjUsMTIy
LDEwNSw3MywKLSAgICAxMjgsMTI4LDEyNSwxMzEsNzEsMTkwLDg2LDE3MiwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxNDQsMTI5LAotICAgIDE0NCwxMjksMTMzLDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMTUsMTQzLDEwMywxNTgsMTA4LDE1MiwKLSAgICAxMTksMTM4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDExMywxNDYsMTAzLDE1OCwxMDQsMTU2LDEy
OCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjIsMTQ4LDEwMCwyMTksCi0gICAgMTI1LDEzNiwxMjgsMTI4LDEyOCwxMjgs
MTQ0LDEyOSwxNDQsMTI5LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTIxLDExMSwKLSAg
ICAxMjgsMTI4LDEyOCwxMjgsOTksMTU5LDcxLDE5MCwxMjIsMTM1LDEyOCwxMjgsMTI4LDEyOCwx
MzAsMTI4LAotICAgIDE0NCwxMjksMTQ0LDEyOSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDExNywxNDEsMTA4LDE1MSwKLSAgICAxMTEsMTQ4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MDMsMjA3LDEwMCwyMTksCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTQ0LDEyOSwxNDQs
MTI5LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCw3MSwxOTAsODQsMTc1LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAg
IDE0NCwxMjksMTQ0LDEyOSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTA4LDE5MywKLSAgICAxMDUs
MjAwLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTE3LDE2MiwxMDAsMjE5LDExOSwx
NTYsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTM5LDEyOCwxNDQsMTI5LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCw5MywxNjUsNzQsMTg2LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDE0NCwxMjksMTQ0
LDEyOSwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTAxLDIxNSwKLSAgICAxMDAsMjE5LDEwNSwyMDAs
MTE0LDE3MywxMTQsMTczLDExNCwxNzMsMTAwLDIxNywxMDAsMjE3LDEyOCwxMjgsCi0gICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxNDQsMTI5LDE0MSwxMjksMTI4LDEyOCwxMjgs
MTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTQ0LDEyOSwxNDQsMTI5LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwK
LSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjQsMTQxLAotICAgIDExMCwxODYsMTAwLDIxOSwxMDAsMjE5LDEw
MCwyMTksMTAwLDIxOSwxMDYsMTk5LDEyMSwxNDksMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEzOSwxMjgsMTQ0LDEyOSwxMzQsMTI4LDEyOCwxMjgsCi0gICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxNDQsMTI5LDE0NCwxMjksMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxNDAsMTI4LDE0NCwxMjksMTM1LDEyOCwKLSAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0g
ICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxNDIsMTI5LAotICAgIDE0NCwxMjksMTMxLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTM5LDEyOCwxNDQsMTI5LAotICAgIDE0MiwxMjksMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEzNiwxMjgsMTQ0LDEyOSwxNDQsMTI5LDE0NCwxMjks
Ci0gICAgMTMyLDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEzNCwxMjgsCi0gICAgMTQ0LDEyOSwxNDQsMTI5LDE0NCwxMjksMTQ0LDEy
OSwxNDQsMTI5LDE0NCwxMjksMTQ0LDEyOSwxNDQsMTI5LAotICAgIDE0NCwxMjksMTQ0LDEyOSwx
NDAsMTI5LDEyOCwxMjgsMTMwLDEyOCwxMzksMTI4LDEzNiwxMjgsMTM1LDEyOCwKLSAgICAxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAot
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwKLSAgICAxMzUsMTI4LDEzNiwxMjgsMTM2LDEyOCwxMzYsMTI4LDEzNiwxMjgs
MTM2LDEyOCwxMzYsMTI4LDEzNiwxMjgsCi0gICAgMTM2LDEyOCwxMzYsMTI4LDEzMSwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwK
LSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAg
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0g
ICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
Ci0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAg
IDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAot
ICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAg
ICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsCi0gICAgMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwx
MjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgs
MTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi0gICAgMTI4
LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgs
MTI4LAotICAgIDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4
LDEyOCwxMjgsMTI4LDEyOCwKLSAgICAxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEy
OCwxMjgsMTI4LDEyOCwxMjgsMTI4LDEyOCwxMjgsCi19OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90
ZXN0cy9CaW5kR2VuZXJhdGVzUmVzb3VyY2VUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9CaW5kR2VuZXJhdGVzUmVzb3VyY2VUZXN0LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThhZTczOWY4NjUuLjAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9CaW5kR2VuZXJhdGVz
UmVzb3VyY2VUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0vLwotLy8g
Q29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0v
LwotCi0vLyBCaW5kR2VuZXJhdGVzUmVzb3VyY2VUZXN0LmNwcCA6IFRlc3RzIG9mIHRoZSBHTF9D
SFJPTUlVTV9iaW5kX2dlbmVyYXRlc19yZXNvdXJjZSBleHRlbnNpb24uCi0KLSNpbmNsdWRlICJ0
ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi1uYW1lc3BhY2UgYW5nbGUKLXsKLQotY2xhc3MgQmlu
ZEdlbmVyYXRlc1Jlc291cmNlVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVk
OgotICAgIEJpbmRHZW5lcmF0ZXNSZXNvdXJjZVRlc3QoKSB7IHNldEJpbmRHZW5lcmF0ZXNSZXNv
dXJjZShmYWxzZSk7IH0KLX07Ci0KLS8vIENvbnRleHQgY3JlYXRpb24gd291bGQgZmFpbCBpZiBF
R0xfQ0hST01JVU1fY3JlYXRlX2NvbnRleHRfYmluZF9nZW5lcmF0ZXNfcmVzb3VyY2Ugd2FzIG5v
dAotLy8gYXZhaWxhYmxlIHNvIHRoZSBHTCBleHRlbnNpb24gc2hvdWxkIGFsd2F5cyBiZSBwcmVz
ZW50Ci1URVNUX1AoQmluZEdlbmVyYXRlc1Jlc291cmNlVGVzdCwgRXh0ZW5zaW9uU3RyaW5nRXhw
b3NlZCkKLXsKLSAgICBFWFBFQ1RfVFJVRShleHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9i
aW5kX2dlbmVyYXRlc19yZXNvdXJjZSIpKTsKLX0KLQotLy8gVmVyaWZ5IHRoYXQgR0xfQklORF9H
RU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU0gY2FuIGJlIHF1ZXJpZWQgYnV0IG5vdCBjaGFuZ2Vk
Ci1URVNUX1AoQmluZEdlbmVyYXRlc1Jlc291cmNlVGVzdCwgUXVlcnlWYWxpZGF0aW9uKQotewot
ICAgIEdMaW50IGludFZhbHVlID0gMjsKLSAgICBnbEdldEludGVnZXJ2KEdMX0JJTkRfR0VORVJB
VEVTX1JFU09VUkNFX0NIUk9NSVVNLCAmaW50VmFsdWUpOwotICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOwotICAgIEVYUEVDVF9FUShpbnRWYWx1ZSwgR0xfRkFMU0UpOwotCi0gICAgZmxvYXQgZmxv
YXRWYWx1ZSA9IDIuMGY7Ci0gICAgZ2xHZXRGbG9hdHYoR0xfQklORF9HRU5FUkFURVNfUkVTT1VS
Q0VfQ0hST01JVU0sICZmbG9hdFZhbHVlKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAg
ICBFWFBFQ1RfRVEoZmxvYXRWYWx1ZSwgMC4wZik7Ci0KLSAgICBHTGJvb2xlYW4gYm9vbFZhbHVl
ID0gR0xfVFJVRTsKLSAgICBnbEdldEJvb2xlYW52KEdMX0JJTkRfR0VORVJBVEVTX1JFU09VUkNF
X0NIUk9NSVVNLCAmYm9vbFZhbHVlKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBF
WFBFQ1RfRVEoYm9vbFZhbHVlLCBHTF9GQUxTRSk7Ci0KLSAgICBib29sVmFsdWUgPSBnbElzRW5h
YmxlZChHTF9CSU5EX0dFTkVSQVRFU19SRVNPVVJDRV9DSFJPTUlVTSk7Ci0gICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VRKGJvb2xWYWx1ZSwgR0xfRkFMU0UpOwotCi0gICAg
Z2xFbmFibGUoR0xfQklORF9HRU5FUkFURVNfUkVTT1VSQ0VfQ0hST01JVU0pOwotICAgIEVYUEVD
VF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgZ2xEaXNhYmxlKEdMX0JJTkRfR0VO
RVJBVEVTX1JFU09VUkNFX0NIUk9NSVVNKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJ
RF9FTlVNKTsKLX0KLQotLy8gVGVzdCB0aGF0IGJ1ZmZlcnMgY2Fubm90IGJlIGdlbmVyYXRlZCBv
biBiaW5kCi1URVNUX1AoQmluZEdlbmVyYXRlc1Jlc291cmNlVGVzdCwgQnVmZmVycykKLXsKLSAg
ICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIDIpOwotICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfRUxF
TUVOVF9BUlJBWV9CVUZGRVIsIDApOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAg
aWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMpCi0gICAgewotICAgICAgICBnbEJpbmRC
dWZmZXJCYXNlKEdMX1VOSUZPUk1fQlVGRkVSLCAwLCAzKTsKLSAgICAgICAgRVhQRUNUX0dMX0VS
Uk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLQotICAgICAgICBnbEJpbmRCdWZmZXJCYXNlKEdM
X1VOSUZPUk1fQlVGRkVSLCAwLCAwKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0K
LSAgICAgICAgZ2xCaW5kQnVmZmVyUmFuZ2UoR0xfVU5JRk9STV9CVUZGRVIsIDAsIDQsIDEsIDIp
OwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAg
ICAgIGdsQmluZEJ1ZmZlclJhbmdlKEdMX1VOSUZPUk1fQlVGRkVSLCAwLCAwLCAxLCAyKTsKLSAg
ICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQgdGV4
dHVyZXMgY2Fubm90IGJlIGdlbmVyYXRlZCBvbiBiaW5kCi1URVNUX1AoQmluZEdlbmVyYXRlc1Jl
c291cmNlVGVzdCwgVGV4dHVyZXMpCi17Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCAyKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKLX0KLQotLy8gVGVzdCB0aGF0IGZyYW1lYnVmZmVycyBjYW5ub3QgYmUgZ2VuZXJhdGVkIG9u
IGJpbmQKLVRFU1RfUChCaW5kR2VuZXJhdGVzUmVzb3VyY2VUZXN0LCBGcmFtZWJ1ZmZlcnMpCi17
Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDIpOwotICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgMCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRl
c3QgdGhhdCByZW5kZXJidWZmZXIgY2Fubm90IGJlIGdlbmVyYXRlZCBvbiBiaW5kCi1URVNUX1Ao
QmluZEdlbmVyYXRlc1Jlc291cmNlVGVzdCwgUmVuZGVyYnVmZmVycykKLXsKLSAgICBnbEJpbmRS
ZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCAyKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xf
SU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJV
RkZFUiwgMCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFVzZSB0aGlzIHRv
IHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2gg
R0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZQotLy8gdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0
LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChCaW5kR2VuZXJhdGVzUmVzb3VyY2VUZXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBF
UzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAotICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgIEVTM19PUEVOR0xFUygpKTsKLQotfSAgLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQmluZFVuaWZvcm1Mb2NhdGlv
blRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0Jp
bmRVbmlmb3JtTG9jYXRpb25UZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NzMyYTExMDY4M2YuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9CaW5kVW5pZm9ybUxvY2F0aW9uVGVzdC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSw0ODQgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBm
b3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gQmluZFVuaWZvcm1Mb2NhdGlvblRl
c3QuY3BwIDogVGVzdHMgb2YgdGhlIEdMX0NIUk9NSVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbiBl
eHRlbnNpb24uCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi0jaW5jbHVk
ZSA8Y21hdGg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17Ci0KLWNs
YXNzIEJpbmRVbmlmb3JtTG9jYXRpb25UZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90
ZWN0ZWQ6Ci0gICAgQmluZFVuaWZvcm1Mb2NhdGlvblRlc3QoKQotICAgIHsKLSAgICAgICAgc2V0
V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAg
IHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAg
ICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4
KTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFO
R0xFVGVzdDo6U2V0VXAoKTsKLSAgICAgICAgbUJpbmRVbmlmb3JtTG9jYXRpb24gPSByZWludGVy
cHJldF9jYXN0PFBGTkdMQklORFVOSUZPUk1MT0NBVElPTkNIUk9NSVVNUFJPQz4oCi0gICAgICAg
ICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xCaW5kVW5pZm9ybUxvY2F0aW9uQ0hST01JVU0iKSk7
Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBp
ZiAobVByb2dyYW0gIT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xEZWxldGVQcm9ncmFt
KG1Qcm9ncmFtKTsKLSAgICAgICAgfQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0g
ICAgfQotCi0gICAgdHlwZWRlZiB2b2lkKEdMX0FQSUVOVFJZUCBQRk5HTEJJTkRVTklGT1JNTE9D
QVRJT05DSFJPTUlVTVBST0MpKEdMdWludCBtUHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9j
YXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdMY2hhciAqbmFtZSk7Ci0gICAgUEZOR0xCSU5EVU5J
Rk9STUxPQ0FUSU9OQ0hST01JVU1QUk9DIG1CaW5kVW5pZm9ybUxvY2F0aW9uID0gbnVsbHB0cjsK
LQotICAgIEdMdWludCBtUHJvZ3JhbSA9IDA7Ci19OwotCi0vLyBUZXN0IGJhc2ljIGZ1bmN0aW9u
YWxpdHkgb2YgR0xfQ0hST01JVU1fYmluZF91bmlmb3JtX2xvY2F0aW9uCi1URVNUX1AoQmluZFVu
aWZvcm1Mb2NhdGlvblRlc3QsIEJhc2ljKQotewotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgi
R0xfQ0hST01JVU1fYmluZF91bmlmb3JtX2xvY2F0aW9uIikpCi0gICAgewotICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX0NIUk9NSVVNX2JpbmRfdW5pZm9ybV9s
b2NhdGlvbiBpcyBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5k
bDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9ORShtQmluZFVuaWZvcm1M
b2NhdGlvbiwgbnVsbHB0cik7Ci0KLSAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgdnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBhdHRy
aWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOwotICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247Ci0gICAgICAgIH0KLSAgICApOwot
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgKAot
ICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLSAgICAgICAgdW5pZm9ybSB2ZWM0IHVf
Y29sb3JDOwotICAgICAgICB1bmlmb3JtIHZlYzQgdV9jb2xvckJbMl07Ci0gICAgICAgIHVuaWZv
cm0gdmVjNCB1X2NvbG9yQTsKLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgZ2xfRnJhZ0NvbG9yID0gdV9jb2xvckEgKyB1X2NvbG9yQlswXSArIHVfY29sb3JCWzFd
ICsgdV9jb2xvckM7Ci0gICAgICAgIH0KLSAgICApOwotICAgIC8vIGNsYW5nLWZvcm1hdCBvbgot
Ci0gICAgR0xpbnQgY29sb3JBTG9jYXRpb24gPSAzOwotICAgIEdMaW50IGNvbG9yQkxvY2F0aW9u
ID0gMTA7Ci0gICAgR0xpbnQgY29sb3JDTG9jYXRpb24gPSA1OwotCi0gICAgR0x1aW50IHZzID0g
Q29tcGlsZVNoYWRlcihHTF9WRVJURVhfU0hBREVSLCB2c1NvdXJjZSk7Ci0gICAgR0x1aW50IGZz
ID0gQ29tcGlsZVNoYWRlcihHTF9GUkFHTUVOVF9TSEFERVIsIGZzU291cmNlKTsKLQotICAgIG1Q
cm9ncmFtID0gZ2xDcmVhdGVQcm9ncmFtKCk7Ci0KLSAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbiht
UHJvZ3JhbSwgY29sb3JBTG9jYXRpb24sICJ1X2NvbG9yQSIpOwotICAgIG1CaW5kVW5pZm9ybUxv
Y2F0aW9uKG1Qcm9ncmFtLCBjb2xvckJMb2NhdGlvbiwgInVfY29sb3JCWzBdIik7Ci0gICAgbUJp
bmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIGNvbG9yQ0xvY2F0aW9uLCAidV9jb2xvckMiKTsK
LQotICAgIGdsQXR0YWNoU2hhZGVyKG1Qcm9ncmFtLCB2cyk7Ci0gICAgZ2xEZWxldGVTaGFkZXIo
dnMpOwotCi0gICAgZ2xBdHRhY2hTaGFkZXIobVByb2dyYW0sIGZzKTsKLSAgICBnbERlbGV0ZVNo
YWRlcihmcyk7Ci0KLSAgICAvLyBMaW5rIHRoZSBtUHJvZ3JhbQotICAgIGdsTGlua1Byb2dyYW0o
bVByb2dyYW0pOwotICAgIC8vIENoZWNrIHRoZSBsaW5rIHN0YXR1cwotICAgIEdMaW50IGxpbmtl
ZCA9IDA7Ci0gICAgZ2xHZXRQcm9ncmFtaXYobVByb2dyYW0sIEdMX0xJTktfU1RBVFVTLCAmbGlu
a2VkKTsKLSAgICBBU1NFUlRfRVEoMSwgbGlua2VkKTsKLQotICAgIGdsVXNlUHJvZ3JhbShtUHJv
Z3JhbSk7Ci0KLSAgICBzdGF0aWMgY29uc3QgZmxvYXQgY29sb3JCW10gPSB7Ci0gICAgICAgIDAu
MGYsIDAuNTBmLCAwLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAwLjc1ZiwgMC4wZiwKLSAgICB9Owot
Ci0gICAgZ2xVbmlmb3JtNGYoY29sb3JBTG9jYXRpb24sIDAuMjVmLCAwLjBmLCAwLjBmLCAwLjBm
KTsKLSAgICBnbFVuaWZvcm00ZnYoY29sb3JCTG9jYXRpb24sIDIsIGNvbG9yQik7Ci0gICAgZ2xV
bmlmb3JtNGYoY29sb3JDTG9jYXRpb24sIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOwotCi0gICAg
ZHJhd1F1YWQobVByb2dyYW0sICJhX3Bvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfUElYRUxfTkVBUigwLCAwLCA2NCwgMTI4LCAxOTIsIDI1
NSwgMS4wKTsKLX0KLQotLy8gVGVzdCB0aGF0IGNvbmZsaWN0cyBhcmUgZGV0ZWN0ZWQgd2hlbiB0
d28gdW5pZm9ybXMgYXJlIGJvdW5kIHRvIHRoZSBzYW1lIGxvY2F0aW9uCi1URVNUX1AoQmluZFVu
aWZvcm1Mb2NhdGlvblRlc3QsIENvbmZsaWN0c0RldGVjdGlvbikKLXsKLSAgICBpZiAoIWV4dGVu
c2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbiIpKQotICAgIHsK
LSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9DSFJPTUlVTV9i
aW5kX3VuaWZvcm1fbG9jYXRpb24gaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAg
ICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTkUo
bnVsbHB0ciwgbUJpbmRVbmlmb3JtTG9jYXRpb24pOwotCi0gICAgLy8gY2xhbmctZm9ybWF0IG9m
ZgotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICgK
LSAgICAgICAgYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKLSAgICAgICAgdm9pZCBtYWluKCkK
LSAgICAgICAgewotICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOwotICAgICAg
ICB9Ci0gICAgKTsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzU291cmNlID0gU0hBREVSX1NP
VVJDRQotICAgICgKLSAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Ci0gICAgICAgIHVu
aWZvcm0gdmVjNCB1X2NvbG9yQTsKLSAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3JCOwotICAg
ICAgICB2b2lkIG1haW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB1
X2NvbG9yQSArIHVfY29sb3JCOwotICAgICAgICB9Ci0gICAgKTsKLSAgICAvLyBjbGFuZy1mb3Jt
YXQgb24KLQotICAgIEdMaW50IGNvbG9yQUxvY2F0aW9uID0gMzsKLSAgICBHTGludCBjb2xvckJM
b2NhdGlvbiA9IDQ7Ci0KLSAgICBHTHVpbnQgdnMgPSBDb21waWxlU2hhZGVyKEdMX1ZFUlRFWF9T
SEFERVIsIHZzU291cmNlKTsKLSAgICBHTHVpbnQgZnMgPSBDb21waWxlU2hhZGVyKEdMX0ZSQUdN
RU5UX1NIQURFUiwgZnNTb3VyY2UpOwotCi0gICAgbVByb2dyYW0gPSBnbENyZWF0ZVByb2dyYW0o
KTsKLSAgICBnbEF0dGFjaFNoYWRlcihtUHJvZ3JhbSwgdnMpOwotICAgIGdsRGVsZXRlU2hhZGVy
KHZzKTsKLSAgICBnbEF0dGFjaFNoYWRlcihtUHJvZ3JhbSwgZnMpOwotICAgIGdsRGVsZXRlU2hh
ZGVyKGZzKTsKLQotICAgIG1CaW5kVW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCBjb2xvckFMb2Nh
dGlvbiwgInVfY29sb3JBIik7Ci0gICAgLy8gQmluZCB1X2NvbG9yQiB0byBsb2NhdGlvbiBhLCBj
YXVzaW5nIGNvbmZsaWN0cywgbGluayBzaG91bGQgZmFpbC4KLSAgICBtQmluZFVuaWZvcm1Mb2Nh
dGlvbihtUHJvZ3JhbSwgY29sb3JBTG9jYXRpb24sICJ1X2NvbG9yQiIpOwotICAgIGdsTGlua1By
b2dyYW0obVByb2dyYW0pOwotICAgIEdMaW50IGxpbmtlZCA9IDA7Ci0gICAgZ2xHZXRQcm9ncmFt
aXYobVByb2dyYW0sIEdMX0xJTktfU1RBVFVTLCAmbGlua2VkKTsKLSAgICBBU1NFUlRfRVEoMCwg
bGlua2VkKTsKLQotICAgIC8vIEJpbmQgdV9jb2xvckIgdG8gbG9jYXRpb24gYiwgbm8gY29uZmxp
Y3RzLCBsaW5rIHNob3VsZCBzdWNjZWVkLgotICAgIG1CaW5kVW5pZm9ybUxvY2F0aW9uKG1Qcm9n
cmFtLCBjb2xvckJMb2NhdGlvbiwgInVfY29sb3JCIik7Ci0gICAgZ2xMaW5rUHJvZ3JhbShtUHJv
Z3JhbSk7Ci0gICAgbGlua2VkID0gMDsKLSAgICBnbEdldFByb2dyYW1pdihtUHJvZ3JhbSwgR0xf
TElOS19TVEFUVVMsICZsaW5rZWQpOwotICAgIEVYUEVDVF9FUSgxLCBsaW5rZWQpOwotfQotCi0v
LyBUZXN0IGEgdXNlIGNhc2Ugb2YgdGhlIGNocm9taXVtIGNvbXBvc2l0b3IKLVRFU1RfUChCaW5k
VW5pZm9ybUxvY2F0aW9uVGVzdCwgQ29tcG9zaXRvcikKLXsKLSAgICBpZiAoIWV4dGVuc2lvbkVu
YWJsZWQoIkdMX0NIUk9NSVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbiIpKQotICAgIHsKLSAgICAg
ICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9DSFJPTUlVTV9iaW5kX3Vu
aWZvcm1fbG9jYXRpb24gaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBz
dGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTkUobnVsbHB0
ciwgbUJpbmRVbmlmb3JtTG9jYXRpb24pOwotCi0gICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAg
ICAgYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsKLSAgICAgICAgYXR0cmlidXRlIHZlYzIgYV90
ZXhDb29yZDsKLSAgICAgICAgdW5pZm9ybSBtYXQ0IG1hdHJpeDsKLSAgICAgICAgdW5pZm9ybSB2
ZWMyIGNvbG9yX2FbNF07Ci0gICAgICAgIHVuaWZvcm0gdmVjNCBjb2xvcl9iOwotICAgICAgICB2
YXJ5aW5nIHZlYzQgdl9jb2xvcjsKLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgdl9jb2xvci54eSA9IGNvbG9yX2FbMF0gKyBjb2xvcl9hWzFdOwotICAgICAgICAg
ICAgdl9jb2xvci56dyA9IGNvbG9yX2FbMl0gKyBjb2xvcl9hWzNdOwotICAgICAgICAgICAgdl9j
b2xvciArPSBjb2xvcl9iOwotICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBtYXRyaXggKiBhX3Bv
c2l0aW9uOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzU291
cmNlID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7Ci0gICAgICAgIHZhcnlpbmcgdmVjNCB2X2NvbG9yOwotICAgICAgICB1bmlmb3JtIGZsb2F0
IGFscGhhOwotICAgICAgICB1bmlmb3JtIHZlYzQgbXVsdGlwbGllcjsKLSAgICAgICAgdW5pZm9y
bSB2ZWMzIGNvbG9yX2NbOF07Ci0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHZlYzQgY29sb3JfY19zdW0gPSB2ZWM0KDAuMCk7Ci0gICAgICAgICAgICBjb2xvcl9j
X3N1bS54eXogKz0gY29sb3JfY1swXTsKLSAgICAgICAgICAgIGNvbG9yX2Nfc3VtLnh5eiArPSBj
b2xvcl9jWzFdOwotICAgICAgICAgICAgY29sb3JfY19zdW0ueHl6ICs9IGNvbG9yX2NbMl07Ci0g
ICAgICAgICAgICBjb2xvcl9jX3N1bS54eXogKz0gY29sb3JfY1szXTsKLSAgICAgICAgICAgIGNv
bG9yX2Nfc3VtLnh5eiArPSBjb2xvcl9jWzRdOwotICAgICAgICAgICAgY29sb3JfY19zdW0ueHl6
ICs9IGNvbG9yX2NbNV07Ci0gICAgICAgICAgICBjb2xvcl9jX3N1bS54eXogKz0gY29sb3JfY1s2
XTsKLSAgICAgICAgICAgIGNvbG9yX2Nfc3VtLnh5eiArPSBjb2xvcl9jWzddOwotICAgICAgICAg
ICAgY29sb3JfY19zdW0udyA9IGFscGhhOwotICAgICAgICAgICAgY29sb3JfY19zdW0gKj0gbXVs
dGlwbGllcjsKLSAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZfY29sb3IgKyBjb2xvcl9jX3N1
bTsKLSAgICAgICAgfQotICAgICk7Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICBpbnQg
Y291bnRlciAgICAgICAgICAgID0gNjsKLSAgICBpbnQgbWF0cml4TG9jYXRpb24gICAgID0gY291
bnRlcisrOwotICAgIGludCBjb2xvckFMb2NhdGlvbiAgICAgPSBjb3VudGVyKys7Ci0gICAgaW50
IGNvbG9yQkxvY2F0aW9uICAgICA9IGNvdW50ZXIrKzsKLSAgICBpbnQgYWxwaGFMb2NhdGlvbiAg
ICAgID0gY291bnRlcisrOwotICAgIGludCBtdWx0aXBsaWVyTG9jYXRpb24gPSBjb3VudGVyKys7
Ci0gICAgaW50IGNvbG9yQ0xvY2F0aW9uICAgICA9IGNvdW50ZXIrKzsKLQotICAgIEdMdWludCB2
cyA9IENvbXBpbGVTaGFkZXIoR0xfVkVSVEVYX1NIQURFUiwgdnNTb3VyY2UpOwotICAgIEdMdWlu
dCBmcyA9IENvbXBpbGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmc1NvdXJjZSk7Ci0KLSAg
ICBtUHJvZ3JhbSA9IGdsQ3JlYXRlUHJvZ3JhbSgpOwotCi0gICAgbUJpbmRVbmlmb3JtTG9jYXRp
b24obVByb2dyYW0sIG1hdHJpeExvY2F0aW9uLCAibWF0cml4Iik7Ci0gICAgbUJpbmRVbmlmb3Jt
TG9jYXRpb24obVByb2dyYW0sIGNvbG9yQUxvY2F0aW9uLCAiY29sb3JfYSIpOwotICAgIG1CaW5k
VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCBjb2xvckJMb2NhdGlvbiwgImNvbG9yX2IiKTsKLSAg
ICBtQmluZFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgYWxwaGFMb2NhdGlvbiwgImFscGhhIik7
Ci0gICAgbUJpbmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIG11bHRpcGxpZXJMb2NhdGlvbiwg
Im11bHRpcGxpZXIiKTsKLSAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgY29sb3JD
TG9jYXRpb24sICJjb2xvcl9jIik7Ci0KLSAgICBnbEF0dGFjaFNoYWRlcihtUHJvZ3JhbSwgdnMp
OwotICAgIGdsRGVsZXRlU2hhZGVyKHZzKTsKLSAgICBnbEF0dGFjaFNoYWRlcihtUHJvZ3JhbSwg
ZnMpOwotICAgIGdsRGVsZXRlU2hhZGVyKGZzKTsKLQotICAgIC8vIExpbmsgdGhlIG1Qcm9ncmFt
Ci0gICAgZ2xMaW5rUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgLy8gQ2hlY2sgdGhlIGxpbmsgc3Rh
dHVzCi0gICAgR0xpbnQgbGlua2VkID0gMDsKLSAgICBnbEdldFByb2dyYW1pdihtUHJvZ3JhbSwg
R0xfTElOS19TVEFUVVMsICZsaW5rZWQpOwotICAgIEFTU0VSVF9FUSgxLCBsaW5rZWQpOwotCi0g
ICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgIHN0YXRpYyBjb25zdCBmbG9hdCBjb2xv
ckFbXSA9IHsKLSAgICAgICAgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4xZiwgMC4x
ZiwgMC4xZiwKLSAgICB9OwotCi0gICAgc3RhdGljIGNvbnN0IGZsb2F0IGNvbG9yQ1tdID0gewot
ICAgICAgICAwLjFmLCAwLjFmLCAwLjFmLCAwLjFmLCAwLjFmLCAwLjFmLCAwLjFmLCAwLjFmLCAw
LjFmLCAwLjFmLCAwLjFmLCAwLjFmLAotICAgICAgICAwLjFmLCAwLjFmLCAwLjFmLCAwLjFmLCAw
LjFmLCAwLjFmLCAwLjFmLCAwLjFmLCAwLjFmLCAwLjFmLCAwLjFmLCAwLjFmLAotICAgIH07Ci0K
LSAgICBzdGF0aWMgY29uc3QgZmxvYXQgaWRlbnRpdHlbXSA9IHsKLSAgICAgICAgMSwgMCwgMCwg
MCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwKLSAgICB9OwotCi0gICAgZ2xV
bmlmb3JtTWF0cml4NGZ2KG1hdHJpeExvY2F0aW9uLCAxLCBmYWxzZSwgaWRlbnRpdHkpOwotICAg
IGdsVW5pZm9ybTJmdihjb2xvckFMb2NhdGlvbiwgNCwgY29sb3JBKTsKLSAgICBnbFVuaWZvcm00
Zihjb2xvckJMb2NhdGlvbiwgMC4yZiwgMC4yZiwgMC4yZiwgMC4yZik7Ci0gICAgZ2xVbmlmb3Jt
MWYoYWxwaGFMb2NhdGlvbiwgMC44Zik7Ci0gICAgZ2xVbmlmb3JtNGYobXVsdGlwbGllckxvY2F0
aW9uLCAwLjVmLCAwLjVmLCAwLjVmLCAwLjVmKTsKLSAgICBnbFVuaWZvcm0zZnYoY29sb3JDTG9j
YXRpb24sIDgsIGNvbG9yQyk7Ci0KLSAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCA2
KTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAiYV9wb3NpdGlvbiIsIDAuNWYpOwotCi0gICAg
RVhQRUNUX1BJWEVMX0VRKDAsIDAsIDIwNCwgMjA0LCAyMDQsIDIwNCk7Ci19Ci0KLS8vIFRlc3Qg
dGhhdCB1bnVzZWQgdW5pZm9ybXMgZG9uJ3QgY29uZmxpY3Qgd2hlbiBib3VuZCB0byB0aGUgc2Ft
ZSBsb2NhdGlvbgotVEVTVF9QKEJpbmRVbmlmb3JtTG9jYXRpb25UZXN0LCBVbnVzZWRVbmlmb3Jt
VXBkYXRlKQotewotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQ0hST01JVU1fYmluZF91
bmlmb3JtX2xvY2F0aW9uIikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBiZWNhdXNlIEdMX0NIUk9NSVVNX2JpbmRfdW5pZm9ybV9sb2NhdGlvbiBpcyBub3QgYXZh
aWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEFTU0VSVF9ORShudWxscHRyLCBtQmluZFVuaWZvcm1Mb2NhdGlvbik7
Ci0KLSAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgdnNTb3Vy
Y2UgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0
aW9uOwotICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9Qb3Np
dGlvbiA9IGFfcG9zaXRpb247Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgZnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDsKLSAgICAgICAgdW5pZm9ybSB2ZWM0IHVfY29sb3JBOwotICAgICAgICB1
bmlmb3JtIGZsb2F0IHVfY29sb3JVOwotICAgICAgICB1bmlmb3JtIHZlYzQgdV9jb2xvckM7Ci0g
ICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9
IHVfY29sb3JBICsgdV9jb2xvckM7Ci0gICAgICAgIH0KLSAgICApOwotICAgIC8vIGNsYW5nLWZv
cm1hdCBvbgotCi0gICAgY29uc3QgR0xpbnQgY29sb3JVTG9jYXRpb24gICAgICA9IDE7Ci0gICAg
Y29uc3QgR0xpbnQgbm9uZXhpc3RpbmdMb2NhdGlvbiA9IDU7Ci0gICAgY29uc3QgR0xpbnQgdW5i
b3VuZExvY2F0aW9uICAgICA9IDY7Ci0KLSAgICBHTHVpbnQgdnMgPSBDb21waWxlU2hhZGVyKEdM
X1ZFUlRFWF9TSEFERVIsIHZzU291cmNlKTsKLSAgICBHTHVpbnQgZnMgPSBDb21waWxlU2hhZGVy
KEdMX0ZSQUdNRU5UX1NIQURFUiwgZnNTb3VyY2UpOwotCi0gICAgbVByb2dyYW0gPSBnbENyZWF0
ZVByb2dyYW0oKTsKLSAgICBtQmluZFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgY29sb3JVTG9j
YXRpb24sICJ1X2NvbG9yVSIpOwotICAgIC8vIFRoZSBub24tZXhpc3RpbmcgdW5pZm9ybSBzaG91
bGQgYmVoYXZlIGxpa2UgZXhpc3RpbmcsIGJ1dCBvcHRpbWl6ZWQgYXdheQotICAgIC8vIHVuaWZv
cm0uCi0gICAgbUJpbmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIG5vbmV4aXN0aW5nTG9jYXRp
b24sICJub25leGlzdGluZyIpOwotICAgIC8vIExldCBBIGFuZCBDIGJlIGFzc2lnbmVkIGF1dG9t
YXRpYyBsb2NhdGlvbnMuCi0gICAgZ2xBdHRhY2hTaGFkZXIobVByb2dyYW0sIHZzKTsKLSAgICBn
bERlbGV0ZVNoYWRlcih2cyk7Ci0gICAgZ2xBdHRhY2hTaGFkZXIobVByb2dyYW0sIGZzKTsKLSAg
ICBnbERlbGV0ZVNoYWRlcihmcyk7Ci0gICAgZ2xMaW5rUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAg
R0xpbnQgbGlua2VkID0gMDsKLSAgICBnbEdldFByb2dyYW1pdihtUHJvZ3JhbSwgR0xfTElOS19T
VEFUVVMsICZsaW5rZWQpOwotICAgIEFTU0VSVF9FUSgxLCBsaW5rZWQpOwotICAgIGdsVXNlUHJv
Z3JhbShtUHJvZ3JhbSk7Ci0KLSAgICAvLyBObyBlcnJvcnMgb24gYm91bmQgbG9jYXRpb25zLCBz
aW5jZSBjYWxsZXIgZG9lcyBub3Qga25vdwotICAgIC8vIGlmIHRoZSBkcml2ZXIgb3B0aW1pemVz
IHRoZW0gYXdheSBvciBub3QuCi0gICAgZ2xVbmlmb3JtMWYoY29sb3JVTG9jYXRpb24sIDAuMjVm
KTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIE5vIGVycm9ycyBvbiBib3Vu
ZCBsb2NhdGlvbnMgb2YgbmFtZXMgdGhhdCBkbyBub3QgZXhpc3QKLSAgICAvLyBpbiB0aGUgc2hh
ZGVyLiBPdGhlcndpc2UgaXQgd291bGQgYmUgaW5jb25zaXN0ZW50IHdydCB0aGUKLSAgICAvLyBv
cHRpbWl6YXRpb24gY2FzZS4KLSAgICBnbFVuaWZvcm0xZihub25leGlzdGluZ0xvY2F0aW9uLCAw
LjI1Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBUaGUgYWJvdmUgYXJl
IGVxdWFsIHRvIHVwZGF0aW5nIC0xLgotICAgIGdsVW5pZm9ybTFmKC0xLCAwLjI1Zik7Ci0gICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBObyBlcnJvcnMgd2hlbiB1cGRhdGluZyB3
aXRoIG90aGVyIHR5cGUgZWl0aGVyLgotICAgIC8vIFRoZSB0eXBlIGNhbiBub3QgYmUga25vd24g
d2l0aCB0aGUgbm9uLWV4aXN0aW5nIGNhc2UuCi0gICAgZ2xVbmlmb3JtMmYoY29sb3JVTG9jYXRp
b24sIDAuMjVmLCAwLjI1Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgZ2xVbmlm
b3JtMmYobm9uZXhpc3RpbmdMb2NhdGlvbiwgMC4yNWYsIDAuMjVmKTsKLSAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKLSAgICBnbFVuaWZvcm0yZigtMSwgMC4yNWYsIDAuMjVmKTsKLSAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIEVuc3VyZSB0aGF0IGRyaXZlciBvciBBTkdMRSBo
YXMgb3B0aW1pemVkIHRoZSB2YXJpYWJsZQotICAgIC8vIGF3YXkgYW5kIHRoZSB0ZXN0IHRlc3Rz
IHdoYXQgaXQgaXMgc3VwcG9zZWQgdG8uCi0gICAgRVhQRUNUX0VRKC0xLCBnbEdldFVuaWZvcm1M
b2NhdGlvbihtUHJvZ3JhbSwgInVfY29sb3JVIikpOwotCi0gICAgLy8gVGhlIGJvdW5kIGxvY2F0
aW9uIGdldHMgbWFya2VkIGFzIHVzZWQgYW5kIHRoZSBkcml2ZXIKLSAgICAvLyBkb2VzIG5vdCBh
bGxvY2F0ZSBvdGhlciB2YXJpYWJsZXMgdG8gdGhhdCBsb2NhdGlvbi4KLSAgICBFWFBFQ1RfTkUo
Y29sb3JVTG9jYXRpb24sIGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidV9jb2xvckEi
KSk7Ci0gICAgRVhQRUNUX05FKGNvbG9yVUxvY2F0aW9uLCBnbEdldFVuaWZvcm1Mb2NhdGlvbiht
UHJvZ3JhbSwgInVfY29sb3JDIikpOwotICAgIEVYUEVDVF9ORShub25leGlzdGluZ0xvY2F0aW9u
LCBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInVfY29sb3JBIikpOwotICAgIEVYUEVD
VF9ORShub25leGlzdGluZ0xvY2F0aW9uLCBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwg
InVfY29sb3JDIikpOwotCi0gICAgLy8gVW5pbnR1aXRpdmU6IHdoaWxlIHNwZWNpZnlpbmcgdmFs
dWUgd29ya3MsIGdldHRpbmcgdGhlIHZhbHVlIGRvZXMgbm90LgotICAgIEdMZmxvYXQgZ2V0UmVz
dWx0ID0gMC4wZjsKLSAgICBnbEdldFVuaWZvcm1mdihtUHJvZ3JhbSwgY29sb3JVTG9jYXRpb24s
ICZnZXRSZXN1bHQpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci0gICAgZ2xHZXRVbmlmb3JtZnYobVByb2dyYW0sIG5vbmV4aXN0aW5nTG9jYXRpb24sICZnZXRS
ZXN1bHQpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAg
Z2xHZXRVbmlmb3JtZnYobVByb2dyYW0sIC0xLCAmZ2V0UmVzdWx0KTsKLSAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgLy8gVXBkYXRpbmcgYW4gdW5ib3Vu
ZCwgbm9uLWV4aXN0aW5nIGxvY2F0aW9uIHN0aWxsIGNhdXNlcwotICAgIC8vIGFuIGVycm9yLgot
ICAgIGdsVW5pZm9ybTFmKHVuYm91bmRMb2NhdGlvbiwgMC4yNWYpOwotICAgIEVYUEVDVF9HTF9F
UlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLS8vIFRlc3QgZm9yIGEgYnVnIHdoZXJl
IHVzaW5nIGEgc2FtcGxlciBjYXVzZWQgR0wgZXJyb3IgaWYgdGhlIG1Qcm9ncmFtIGhhZAotLy8g
dW5pZm9ybXMgdGhhdCB3ZXJlIG9wdGltaXplZCBhd2F5IGJ5IHRoZSBkcml2ZXIuIFRoaXMgd2Fz
IG9ubHkgYSBwcm9ibGVtIHdpdGgKLS8vIGdsQmluZFVuaWZvcm1Mb2NhdGlvbkNIUk9NSVVNIGlt
cGxlbWVudGF0aW9uLiBUaGlzIGNvdWxkIGJlIHJlcHJvZWQgYnkKLS8vIGJpbmRpbmcgdGhlIHNh
bXBsZXIgdG8gYSBsb2NhdGlvbiBoaWdoZXIgdGhhbiB0aGUgYW1vdW50IG9mIGFjdGl2ZSB1bmlm
b3Jtcy4KLVRFU1RfUChCaW5kVW5pZm9ybUxvY2F0aW9uVGVzdCwgVXNlU2FtcGxlcldoZW5VbnVz
ZWRVbmlmb3JtcykKLXsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX2Jp
bmRfdW5pZm9ybV9sb2NhdGlvbiIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IHNraXBwZWQgYmVjYXVzZSBHTF9DSFJPTUlVTV9iaW5kX3VuaWZvcm1fbG9jYXRpb24gaXMgbm90
IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlRfTkUobnVsbHB0ciwgbUJpbmRVbmlmb3JtTG9jYXRp
b24pOwotCi0gICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZz
U291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDApOwotICAgICAgICB9Ci0gICAg
KTsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzU291cmNlID0gU0hBREVSX1NPVVJDRQotICAg
ICgKLSAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4OwotICAgICAgICB2b2lkIG1haW4oKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB2ZWMy
KDEpKTsKLSAgICAgICAgfQotICAgICk7Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICBj
b25zdCBHTHVpbnQgdGV4TG9jYXRpb24gPSA1NDsKLQotICAgIEdMdWludCB2cyA9IENvbXBpbGVT
aGFkZXIoR0xfVkVSVEVYX1NIQURFUiwgdnNTb3VyY2UpOwotICAgIEdMdWludCBmcyA9IENvbXBp
bGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmc1NvdXJjZSk7Ci0KLSAgICBtUHJvZ3JhbSA9
IGdsQ3JlYXRlUHJvZ3JhbSgpOwotICAgIG1CaW5kVW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCB0
ZXhMb2NhdGlvbiwgInRleCIpOwotCi0gICAgZ2xBdHRhY2hTaGFkZXIobVByb2dyYW0sIHZzKTsK
LSAgICBnbERlbGV0ZVNoYWRlcih2cyk7Ci0gICAgZ2xBdHRhY2hTaGFkZXIobVByb2dyYW0sIGZz
KTsKLSAgICBnbERlbGV0ZVNoYWRlcihmcyk7Ci0KLSAgICBnbExpbmtQcm9ncmFtKG1Qcm9ncmFt
KTsKLQotICAgIEdMaW50IGxpbmtlZCA9IDA7Ci0gICAgZ2xHZXRQcm9ncmFtaXYobVByb2dyYW0s
IEdMX0xJTktfU1RBVFVTLCAmbGlua2VkKTsKLSAgICBFWFBFQ1RfTkUoMCwgbGlua2VkKTsKLSAg
ICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIGdsVW5pZm9ybTFpKHRleExvY2F0aW9uLCAw
KTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0
IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1h
am9yIHZlcnNpb24pIHRoZXNlCi0vLyB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi1BTkdM
RV9JTlNUQU5USUFURV9URVNUKEJpbmRVbmlmb3JtTG9jYXRpb25UZXN0LAotICAgICAgICAgICAg
ICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09Q
RU5HTEVTKCkpOwotCi19ICAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9CbGVuZE1pbk1heFRlc3QuY3BwIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0JsZW5kTWluTWF4VGVzdC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5ZjUyNTFlNTY1Li4wMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQmxlbmRNaW5N
YXhUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1NSArMCwwIEBACi0vLwotLy8gQ29weXJp
Z2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0j
aW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xl
OwotCi1jbGFzcyBCbGVuZE1pbk1heFRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3Rl
Y3RlZDoKLSAgICBCbGVuZE1pbk1heFRlc3QoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lk
dGgoMTI4KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZp
Z1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0
Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICAg
ICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsKLQotICAgICAgICBtUHJvZ3JhbSA9IDA7Ci0gICAg
ICAgIG1Db2xvckxvY2F0aW9uID0gLTE7Ci0gICAgICAgIG1GcmFtZWJ1ZmZlciA9IDA7Ci0gICAg
ICAgIG1Db2xvclJlbmRlcmJ1ZmZlciA9IDA7Ci0gICAgfQotCi0gICAgc3RydWN0IENvbG9yCi0g
ICAgewotICAgICAgICBmbG9hdCB2YWx1ZXNbNF07Ci0gICAgfTsKLQotICAgIHN0YXRpYyBmbG9h
dCBnZXRFeHBlY3RlZChib29sIGJsZW5kTWluLCBmbG9hdCBjdXJDb2xvciwgZmxvYXQgcHJldkNv
bG9yKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJsZW5kTWluID8gc3RkOjptaW4oY3VyQ29sb3Is
IHByZXZDb2xvcikgOiBzdGQ6Om1heChjdXJDb2xvciwgcHJldkNvbG9yKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIHJ1blRlc3QoR0xlbnVtIGNvbG9yRm9ybWF0LCBHTGVudW0gdHlwZSkKLSAgICB7Ci0g
ICAgICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJs
ZWQoIkdMX0VYVF9ibGVuZF9taW5tYXgiKSkKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBFUzMgb3IgR0xfRVhUX2JsZW5kX21pbm1heCBp
cyBub3QgYXZhaWxhYmxlLiIgPDwgc3RkOjplbmRsOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0KLSAgICAgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBmaWd1cmUgb3V0IHdoeSB0aGlz
IGZhaWxzCi0gICAgICAgIGlmIChJc0ludGVsKCkgJiYgR2V0UGFyYW0oKSA9PSBFUzJfT1BFTkdM
KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9u
IE9wZW5HTCBJbnRlbCBkdWUgdG8gZmxha3luZXNzLiIgPDwgc3RkOjplbmRsOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgU2V0VXBGcmFtZWJ1ZmZlcihjb2xvckZv
cm1hdCk7Ci0KLSAgICAgICAgaW50IG1pblZhbHVlID0gMDsKLSAgICAgICAgaW50IG1heFZhbHVl
ID0gMTsKLSAgICAgICAgaWYgKHR5cGUgPT0gR0xfRkxPQVQpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIG1pblZhbHVlID0gLTEwMjQ7Ci0gICAgICAgICAgICBtYXhWYWx1ZSA9IDEwMjQ7Ci0gICAg
ICAgIH0KLQotICAgICAgICBjb25zdCBzaXplX3QgY29sb3JDb3VudCA9IDEyODsKLSAgICAgICAg
Q29sb3IgY29sb3JzW2NvbG9yQ291bnRdOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNvbG9yQ291bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9
IDA7IGogPCA0OyBqKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29sb3JzW2ld
LnZhbHVlc1tqXSA9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0PihtaW5W
YWx1ZSArIChyYW5kKCkgJSAobWF4VmFsdWUgLSBtaW5WYWx1ZSkpKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotCi0gICAgICAgIGZsb2F0IHByZXZDb2xvcls0XTsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBjb2xvckNvdW50OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGNvbnN0IENvbG9yICZjb2xvciA9IGNvbG9yc1tpXTsKLSAgICAgICAgICAgIGdsVXNlUHJvZ3Jh
bShtUHJvZ3JhbSk7Ci0gICAgICAgICAgICBnbFVuaWZvcm00ZihtQ29sb3JMb2NhdGlvbiwgY29s
b3IudmFsdWVzWzBdLCBjb2xvci52YWx1ZXNbMV0sIGNvbG9yLnZhbHVlc1syXSwgY29sb3IudmFs
dWVzWzNdKTsKLQotICAgICAgICAgICAgYm9vbCBibGVuZE1pbiA9IChyYW5kKCkgJSAyID09IDAp
OwotICAgICAgICAgICAgZ2xCbGVuZEVxdWF0aW9uKGJsZW5kTWluID8gR0xfTUlOIDogR0xfTUFY
KTsKLQotICAgICAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJhUG9zaXRpb24iLCAwLjVmKTsK
LQotICAgICAgICAgICAgZmxvYXQgcGl4ZWxbNF07Ci0gICAgICAgICAgICBpZiAodHlwZSA9PSBH
TF9VTlNJR05FRF9CWVRFKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEdMdWJ5dGUg
dWJ5dGVQaXhlbFs0XTsKLSAgICAgICAgICAgICAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMSwgMSwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgdWJ5dGVQaXhlbCk7Ci0gICAgICAgICAgICAgICAg
Zm9yIChzaXplX3QgY29tcG9uZW50SWR4ID0gMDsgY29tcG9uZW50SWR4IDwgQXJyYXlTaXplKHBp
eGVsKTsgY29tcG9uZW50SWR4KyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICBwaXhlbFtjb21wb25lbnRJZHhdID0gdWJ5dGVQaXhlbFtjb21wb25lbnRJZHhdIC8gMjU1
LjBmOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2Ug
aWYgKHR5cGUgPT0gR0xfRkxPQVQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xS
ZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX0ZMT0FULCBwaXhlbCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
RkFJTCgpIDw8ICJVbmV4cGVjdGVkIHBpeGVsIHR5cGUiOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBpZiAoaSA+IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3Qg
ZmxvYXQgZXJyb3JSYW5nZSA9IDEuMGYgLyAyNTUuMGY7Ci0gICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgY29tcG9uZW50SWR4ID0gMDsgY29tcG9uZW50SWR4IDwgQXJyYXlTaXplKHBpeGVsKTsg
Y29tcG9uZW50SWR4KyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBF
WFBFQ1RfTkVBUigKLSAgICAgICAgICAgICAgICAgICAgICAgIGdldEV4cGVjdGVkKGJsZW5kTWlu
LCBjb2xvci52YWx1ZXNbY29tcG9uZW50SWR4XSwgcHJldkNvbG9yW2NvbXBvbmVudElkeF0pLAot
ICAgICAgICAgICAgICAgICAgICAgICAgcGl4ZWxbY29tcG9uZW50SWR4XSwgZXJyb3JSYW5nZSk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtZW1jcHko
cHJldkNvbG9yLCBwaXhlbCwgc2l6ZW9mKHBpeGVsKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgp
OwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRlc3RWZXJ0ZXhTaGFkZXJTb3VyY2UgPSBT
SEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIGF0dHJpYnV0ZSBoaWdocCB2ZWM0
IGFQb3NpdGlvbjsKLQotICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBhUG9zaXRpb247Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdEZyYWdtZW50U2hh
ZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICB1bmlmb3Jt
IGhpZ2hwIHZlYzQgY29sb3I7Ci0gICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgKTsKLQotICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHRlc3RW
ZXJ0ZXhTaGFkZXJTb3VyY2UsIHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgICAgIGlm
IChtUHJvZ3JhbSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBGQUlMKCkgPDwgInNoYWRl
ciBjb21waWxhdGlvbiBmYWlsZWQuIjsKLSAgICAgICAgfQotCi0gICAgICAgIG1Db2xvckxvY2F0
aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJjb2xvciIpOwotCi0gICAgICAg
IGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICAgICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAs
IDApOwotICAgICAgICBnbENsZWFyRGVwdGhmKDAuMCk7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09M
T1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQpOwotCi0gICAgICAgIGdsRW5hYmxl
KEdMX0JMRU5EKTsKLSAgICAgICAgZ2xEaXNhYmxlKEdMX0RFUFRIX1RFU1QpOwotICAgIH0KLQot
ICAgIHZvaWQgU2V0VXBGcmFtZWJ1ZmZlcihHTGVudW0gY29sb3JGb3JtYXQpCi0gICAgewotICAg
ICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbUZyYW1lYnVmZmVyKTsKLSAgICAgICAgZ2xCaW5k
RnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKLSAgICAgICAg
Z2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKLQot
ICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1Db2xvclJlbmRlcmJ1ZmZlcik7Ci0gICAg
ICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1Db2xvclJlbmRlcmJ1ZmZl
cik7Ci0gICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIGNvbG9y
Rm9ybWF0LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0gICAgICAgIGds
RnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRU
QUNITUVOVDAsIEdMX1JFTkRFUkJVRkZFUiwgbUNvbG9yUmVuZGVyYnVmZmVyKTsKLQotICAgICAg
ICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7Ci0gICAgICAgIGdsQ2xlYXIo
R0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0g
ICAgfQotCi0gICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKLSAgICB7Ci0gICAgICAgIGdsRGVs
ZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZt
RnJhbWVidWZmZXIpOwotICAgICAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1Db2xvclJl
bmRlcmJ1ZmZlcik7Ci0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQot
ICAgIEdMdWludCBtUHJvZ3JhbTsKLSAgICBHTGludCBtQ29sb3JMb2NhdGlvbjsKLQotICAgIEdM
dWludCBtRnJhbWVidWZmZXI7Ci0gICAgR0x1aW50IG1Db2xvclJlbmRlcmJ1ZmZlcjsKLX07Ci0K
LVRFU1RfUChCbGVuZE1pbk1heFRlc3QsIFJHQkE4KQotewotICAgIHJ1blRlc3QoR0xfUkdCQTgs
IEdMX1VOU0lHTkVEX0JZVEUpOwotfQotCi1URVNUX1AoQmxlbmRNaW5NYXhUZXN0LCBSR0JBMzJG
KQotewotICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgfHwgIWV4dGVuc2lvbkVu
YWJsZWQoIkdMX0VYVF9jb2xvcl9idWZmZXJfZmxvYXQiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgRVMzIGFuZCBHTF9FWFRfY29sb3JfYnVmZmVy
X2Zsb2F0IGFyZSBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5k
bDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpZ3Vy
ZSBvdXQgd2h5IHRoaXMgaXMgYnJva2VuIG9uIEludGVsCi0gICAgaWYgKElzSW50ZWwoKSAmJiAo
R2V0UGFyYW0oKSA9PSBFUzJfRDNEMTEoKSB8fCBHZXRQYXJhbSgpID09IEVTMl9EM0Q5KCkpKQot
ICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgT3BlbkdM
LiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gVE9ETyAo
YnVnIDEyODQpOiBJbnZlc3RpZ2F0ZSBSR0JBMzJmIEQzRCBTREsgTGF5ZXJzIG1lc3NhZ2VzIG9u
IEQzRDExX0ZMOV8zCi0gICAgaWYgKElzRDNEMTFfRkw5MygpKQotICAgIHsKLSAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gRmVhdHVyZSBMZXZlbCA5XzMuIiA8PCBzdGQ6OmVu
ZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBydW5UZXN0KEdMX1JHQkEzMkYsIEdM
X0ZMT0FUKTsKLX0KLQotVEVTVF9QKEJsZW5kTWluTWF4VGVzdCwgUkdCQTE2RikKLXsKLSAgICBp
ZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9F
WFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgRVMzIG9yIEdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9m
bG9hdCBpcyBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFRPRE8oam1hZGlsbCk6IGZpZ3VyZSBv
dXQgd2h5IHRoaXMgZmFpbHMKLSAgICBpZiAoSXNJbnRlbCgpICYmIChHZXRQYXJhbSgpID09IEVT
Ml9EM0QxMSgpIHx8IEdldFBhcmFtKCkgPT0gRVMyX0QzRDkoKSkpCi0gICAgewotICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBkdWUgdG8gZmFpbHVyZXMuIiA8PCBz
dGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBydW5UZXN0KEdMX1JHQkEx
NkYsIEdMX0ZMT0FUKTsKLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3Vy
YXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRo
ZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1Qo
QmxlbmRNaW5NYXhUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
RVMzX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgIEVTM19PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9CbGl0RnJhbWVidWZmZXJB
TkdMRVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L0JsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGU0MGE0MTFkYjZkLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZ2xfdGVzdHMvQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDEwNzAgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRp
bHMvQU5HTEVUZXN0LmgiCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL2dsX3JhaWkuaCIKLQotdXNp
bmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1jbGFzcyBCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QgOiBw
dWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBCbGl0RnJhbWVidWZmZXJBTkdM
RVRlc3QoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMjU2KTsKLSAgICAgICAgc2V0
V2luZG93SGVpZ2h0KDI1Nik7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAg
IHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0g
ICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRz
KDI0KTsKLSAgICAgICAgc2V0Q29uZmlnU3RlbmNpbEJpdHMoOCk7Ci0KLSAgICAgICAgbUNoZWNr
ZXJQcm9ncmFtID0gMDsKLSAgICAgICAgbUJsdWVQcm9ncmFtID0gMDsKLQotICAgICAgICBtT3Jp
Z2luYWxGQk8gPSAwOwotCi0gICAgICAgIG1Vc2VyRkJPID0gMDsKLSAgICAgICAgbVVzZXJDb2xv
ckJ1ZmZlciA9IDA7Ci0gICAgICAgIG1Vc2VyRGVwdGhTdGVuY2lsQnVmZmVyID0gMDsKLQotICAg
ICAgICBtU21hbGxGQk8gPSAwOwotICAgICAgICBtU21hbGxDb2xvckJ1ZmZlciA9IDA7Ci0gICAg
ICAgIG1TbWFsbERlcHRoU3RlbmNpbEJ1ZmZlciA9IDA7Ci0KLSAgICAgICAgbUNvbG9yT25seUZC
TyA9IDA7Ci0gICAgICAgIG1Db2xvck9ubHlDb2xvckJ1ZmZlciA9IDA7Ci0KLSAgICAgICAgbURp
ZmZGb3JtYXRGQk8gPSAwOwotICAgICAgICBtRGlmZkZvcm1hdENvbG9yQnVmZmVyID0gMDsKLQot
ICAgICAgICBtRGlmZlNpemVGQk8gPSAwOwotICAgICAgICBtRGlmZlNpemVDb2xvckJ1ZmZlciA9
IDA7Ci0KLSAgICAgICAgbU1SVEZCTyA9IDA7Ci0gICAgICAgIG1NUlRDb2xvckJ1ZmZlcjAgPSAw
OwotICAgICAgICBtTVJUQ29sb3JCdWZmZXIxID0gMDsKLQotICAgICAgICBtUkdCQUNvbG9yYnVm
ZmVyID0gMDsKLSAgICAgICAgbVJHQkFGQk8gPSAwOwotCi0gICAgICAgIG1CR1JBTXVsdGlzYW1w
bGVkUmVuZGVyYnVmZmVyID0gMDsKLSAgICAgICAgbUJHUkFNdWx0aXNhbXBsZWRGQk8gPSAwOwot
ICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCi0gICAgewotICAgICAgICBBTkdMRVRl
c3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgcGFzc3Rocm91Z2hWUyA9
IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZs
b2F0OwotICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247Ci0gICAgICAgICAgICB2
YXJ5aW5nIHZlYzQgcG9zOwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAgICAgICAg
ICAgcG9zID0gcG9zaXRpb247Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgY2hlY2tlcmVkRlMgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgK
LSAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSAgICAgICAgICAgIHZhcnlpbmcg
dmVjNCBwb3M7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHBvcy54ICogcG9zLnkgPiAwLjApCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEu
MCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAs
IDAuMCwgMS4wKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7
Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgYmx1ZUZTID0gU0hBREVSX1NPVVJDRQotICAg
ICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0gICAgICAgICAgICB2
YXJ5aW5nIHZlYzQgcG9zOwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDEuMCwgMS4w
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBtQ2hlY2tlclByb2dyYW0g
PSBDb21waWxlUHJvZ3JhbShwYXNzdGhyb3VnaFZTLCBjaGVja2VyZWRGUyk7Ci0gICAgICAgIG1C
bHVlUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHBhc3N0aHJvdWdoVlMsIGJsdWVGUyk7Ci0gICAg
ICAgIGlmIChtQ2hlY2tlclByb2dyYW0gPT0gMCB8fCBtQmx1ZVByb2dyYW0gPT0gMCkKLSAgICAg
ICAgewotICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7
Ci0gICAgICAgIH0KLQotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBH
TGludCBvcmlnaW5hbEZCTzsKLSAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9GUkFNRUJVRkZFUl9C
SU5ESU5HLCAmb3JpZ2luYWxGQk8pOwotICAgICAgICBpZiAob3JpZ2luYWxGQk8gPj0gMCkKLSAg
ICAgICAgewotICAgICAgICAgICAgbU9yaWdpbmFsRkJPID0gKEdMdWludClvcmlnaW5hbEZCTzsK
LSAgICAgICAgfQotCi0gICAgICAgIEdMZW51bSBmb3JtYXQgPSBHTF9CR1JBOF9FWFQ7Ci0gICAg
ICAgIAotICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbVVzZXJGQk8pOwotICAgICAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVVzZXJGQk8pOwotICAgICAgICBnbEdl
blRleHR1cmVzKDEsICZtVXNlckNvbG9yQnVmZmVyKTsKLSAgICAgICAgZ2xHZW5SZW5kZXJidWZm
ZXJzKDEsICZtVXNlckRlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgbVVzZXJDb2xvckJ1ZmZlcik7Ci0gICAgICAgIGdsVGV4U3RvcmFnZTJE
RVhUKEdMX1RFWFRVUkVfMkQsIDEsIGZvcm1hdCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93
SGVpZ2h0KCkpOwotICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVVzZXJDb2xvckJ1ZmZlciwg
MCk7Ci0gICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1Vc2VyRGVw
dGhTdGVuY2lsQnVmZmVyKTsKLSAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRF
UkJVRkZFUiwgR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMsIGdldFdpbmRvd1dpZHRoKCksIGdldFdp
bmRvd0hlaWdodCgpKTsKLSAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFN
RUJVRkZFUiwgR0xfREVQVEhfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBtVXNlckRlcHRo
U3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLCBtVXNlckRl
cHRoU3RlbmNpbEJ1ZmZlcik7Ci0KLSAgICAgICAgQVNTRVJUX0dMRU5VTV9FUShHTF9GUkFNRUJV
RkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7
Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIGdsR2VuRnJhbWVidWZm
ZXJzKDEsICZtU21hbGxGQk8pOwotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiwgbVNtYWxsRkJPKTsKLSAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVNtYWxsQ29sb3JC
dWZmZXIpOwotICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1TbWFsbERlcHRoU3RlbmNp
bEJ1ZmZlcik7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVNtYWxsQ29s
b3JCdWZmZXIpOwotICAgICAgICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJELCAxLCBm
b3JtYXQsIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIpOwotICAg
ICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRB
Q0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVNtYWxsQ29sb3JCdWZmZXIsIDApOwotICAgICAgICBn
bEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtU21hbGxEZXB0aFN0ZW5jaWxCdWZm
ZXIpOwotICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9E
RVBUSDI0X1NURU5DSUw4X09FUywgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdo
dCgpIC8gMik7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIEdMX0RFUFRIX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwgbVNtYWxsRGVwdGhTdGVu
Y2lsQnVmZmVyKTsKLSAgICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1TbWFsbERlcHRo
U3RlbmNpbEJ1ZmZlcik7Ci0KLSAgICAgICAgQVNTRVJUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZF
Ul9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7Ci0g
ICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIGdsR2VuRnJhbWVidWZmZXJz
KDEsICZtQ29sb3JPbmx5RkJPKTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIG1Db2xvck9ubHlGQk8pOwotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtQ29sb3JP
bmx5Q29sb3JCdWZmZXIpOwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1D
b2xvck9ubHlDb2xvckJ1ZmZlcik7Ci0gICAgICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRV
UkVfMkQsIDEsIGZvcm1hdCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwot
ICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9B
VFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbUNvbG9yT25seUNvbG9yQnVmZmVyLCAwKTsKLQot
ICAgICAgICBBU1NFUlRfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNr
RnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLSAgICAgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1EaWZmRm9ybWF0RkJP
KTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1EaWZmRm9ybWF0
RkJPKTsKLSAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbURpZmZGb3JtYXRDb2xvckJ1ZmZlcik7
Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbURpZmZGb3JtYXRDb2xvckJ1
ZmZlcik7Ci0gICAgICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JH
QjU2NSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgICAgICBnbEZy
YW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwg
R0xfVEVYVFVSRV8yRCwgbURpZmZGb3JtYXRDb2xvckJ1ZmZlciwgMCk7Ci0KLSAgICAgICAgQVNT
RVJUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtRGlmZlNpemVGQk8pOwotICAgICAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbURpZmZTaXplRkJPKTsKLSAgICAgICAg
Z2xHZW5UZXh0dXJlcygxLCAmbURpZmZTaXplQ29sb3JCdWZmZXIpOwotICAgICAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1EaWZmU2l6ZUNvbG9yQnVmZmVyKTsKLSAgICAgICAgZ2xU
ZXhTdG9yYWdlMkRFWFQoR0xfVEVYVFVSRV8yRCwgMSwgZm9ybWF0LCBnZXRXaW5kb3dXaWR0aCgp
KjIsIGdldFdpbmRvd0hlaWdodCgpKjIpOwotICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJE
KEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbURp
ZmZTaXplQ29sb3JCdWZmZXIsIDApOwotCi0gICAgICAgIEFTU0VSVF9HTEVOVU1fRVEoR0xfRlJB
TUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZF
UikpOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBpZiAoZXh0ZW5z
aW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbU1SVEZCTyk7Ci0gICAgICAgICAgICBnbEJpbmRGcmFt
ZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbU1SVEZCTyk7Ci0gICAgICAgICAgICBnbEdlblRleHR1
cmVzKDEsICZtTVJUQ29sb3JCdWZmZXIwKTsKLSAgICAgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwg
Jm1NUlRDb2xvckJ1ZmZlcjEpOwotICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBtTVJUQ29sb3JCdWZmZXIwKTsKLSAgICAgICAgICAgIGdsVGV4U3RvcmFnZTJERVhUKEdM
X1RFWFRVUkVfMkQsIDEsIGZvcm1hdCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0
KCkpOwotICAgICAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwg
R0xfQ09MT1JfQVRUQUNITUVOVDBfRVhULCBHTF9URVhUVVJFXzJELCBtTVJUQ29sb3JCdWZmZXIw
LCAwKTsKLSAgICAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbU1SVENvbG9y
QnVmZmVyMSk7Ci0gICAgICAgICAgICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJELCAx
LCBmb3JtYXQsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKLSAgICAgICAg
ICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFD
SE1FTlQxX0VYVCwgR0xfVEVYVFVSRV8yRCwgbU1SVENvbG9yQnVmZmVyMSwgMCk7Ci0KLSAgICAg
ICAgICAgIEFTU0VSVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotICAgICAgICAgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgi
R0xfQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKSkKLSAgICAgICAgewotICAgICAgICAg
ICAgLy8gVGVzdCBibGl0IGJldHdlZW4gUkdCQSBhbmQgbXVsdGlzYW1wbGVkIEJHUkEKLSAgICAg
ICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1SR0JBQ29sb3JidWZmZXIpOwotICAgICAgICAgICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtUkdCQUNvbG9yYnVmZmVyKTsKLSAgICAgICAg
ICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4X09FUywgZ2V0
V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotCi0gICAgICAgICAgICBnbEdlbkZy
YW1lYnVmZmVycygxLCAmbVJHQkFGQk8pOwotICAgICAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIG1SR0JBRkJPKTsKLSAgICAgICAgICAgIGdsRnJhbWVidWZmZXJUZXh0
dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJE
LCBtUkdCQUNvbG9yYnVmZmVyLCAwKTsKLQotICAgICAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0gICAgICAgICAgICBBU1NFUlRfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRF
LCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLQotICAgICAgICAg
ICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtQkdSQU11bHRpc2FtcGxlZFJlbmRlcmJ1ZmZlcik7
Ci0gICAgICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtQkdSQU11
bHRpc2FtcGxlZFJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3Jh
Z2VNdWx0aXNhbXBsZUFOR0xFKEdMX1JFTkRFUkJVRkZFUiwgMSwgR0xfQkdSQThfRVhULCBnZXRX
aW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0KLSAgICAgICAgICAgIGdsR2VuRnJh
bWVidWZmZXJzKDEsICZtQkdSQU11bHRpc2FtcGxlZEZCTyk7Ci0gICAgICAgICAgICBnbEJpbmRG
cmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUJHUkFNdWx0aXNhbXBsZWRGQk8pOwotICAgICAg
ICAgICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1Jf
QVRUQUNITUVOVDAsIEdMX1JFTkRFUkJVRkZFUiwgbUJHUkFNdWx0aXNhbXBsZWRSZW5kZXJidWZm
ZXIpOwotCi0gICAgICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgICAgIEFT
U0VSVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2xCaW5kRnJh
bWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1PcmlnaW5hbEZCTyk7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB2b2lkIFRlYXJEb3duKCkKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtQ2hl
Y2tlclByb2dyYW0pOwotICAgICAgICBnbERlbGV0ZVByb2dyYW0obUJsdWVQcm9ncmFtKTsKLQot
ICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbVVzZXJGQk8pOwotICAgICAgICBnbERl
bGV0ZVRleHR1cmVzKDEsICZtVXNlckNvbG9yQnVmZmVyKTsKLSAgICAgICAgZ2xEZWxldGVSZW5k
ZXJidWZmZXJzKDEsICZtVXNlckRlcHRoU3RlbmNpbEJ1ZmZlcik7Ci0KLSAgICAgICAgZ2xEZWxl
dGVGcmFtZWJ1ZmZlcnMoMSwgJm1TbWFsbEZCTyk7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMo
MSwgJm1TbWFsbENvbG9yQnVmZmVyKTsKLSAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEs
ICZtU21hbGxEZXB0aFN0ZW5jaWxCdWZmZXIpOwotCi0gICAgICAgIGdsRGVsZXRlRnJhbWVidWZm
ZXJzKDEsICZtQ29sb3JPbmx5RkJPKTsKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVNt
YWxsRGVwdGhTdGVuY2lsQnVmZmVyKTsKLQotICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygx
LCAmbURpZmZGb3JtYXRGQk8pOwotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtRGlmZkZv
cm1hdENvbG9yQnVmZmVyKTsKLQotICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbURp
ZmZTaXplRkJPKTsKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbURpZmZTaXplQ29sb3JC
dWZmZXIpOwotCi0gICAgICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZHJhd19idWZm
ZXJzIikpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZt
TVJURkJPKTsKLSAgICAgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1NUlRDb2xvckJ1ZmZl
cjApOwotICAgICAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbU1SVENvbG9yQnVmZmVyMSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobVJHQkFDb2xvcmJ1ZmZlciAhPSAwKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtUkdCQUNvbG9yYnVmZmVyKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChtUkdCQUZCTyAhPSAwKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbUJHUkFNdWx0aXNhbXBsZWRGQk8pOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1CR1JBTXVsdGlzYW1wbGVkUmVuZGVyYnVmZmVyICE9
IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbUJH
UkFNdWx0aXNhbXBsZWRSZW5kZXJidWZmZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1C
R1JBTXVsdGlzYW1wbGVkRkJPICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsRGVsZXRl
RnJhbWVidWZmZXJzKDEsICZtQkdSQU11bHRpc2FtcGxlZEZCTyk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgR0x1aW50IG1DaGVja2Vy
UHJvZ3JhbTsKLSAgICBHTHVpbnQgbUJsdWVQcm9ncmFtOwotCi0gICAgR0x1aW50IG1PcmlnaW5h
bEZCTzsKLQotICAgIEdMdWludCBtVXNlckZCTzsKLSAgICBHTHVpbnQgbVVzZXJDb2xvckJ1ZmZl
cjsKLSAgICBHTHVpbnQgbVVzZXJEZXB0aFN0ZW5jaWxCdWZmZXI7Ci0KLSAgICBHTHVpbnQgbVNt
YWxsRkJPOwotICAgIEdMdWludCBtU21hbGxDb2xvckJ1ZmZlcjsKLSAgICBHTHVpbnQgbVNtYWxs
RGVwdGhTdGVuY2lsQnVmZmVyOwotCi0gICAgR0x1aW50IG1Db2xvck9ubHlGQk87Ci0gICAgR0x1
aW50IG1Db2xvck9ubHlDb2xvckJ1ZmZlcjsKLQotICAgIEdMdWludCBtRGlmZkZvcm1hdEZCTzsK
LSAgICBHTHVpbnQgbURpZmZGb3JtYXRDb2xvckJ1ZmZlcjsKLQotICAgIEdMdWludCBtRGlmZlNp
emVGQk87Ci0gICAgR0x1aW50IG1EaWZmU2l6ZUNvbG9yQnVmZmVyOwotCi0gICAgR0x1aW50IG1N
UlRGQk87Ci0gICAgR0x1aW50IG1NUlRDb2xvckJ1ZmZlcjA7Ci0gICAgR0x1aW50IG1NUlRDb2xv
ckJ1ZmZlcjE7Ci0KLSAgICBHTHVpbnQgbVJHQkFDb2xvcmJ1ZmZlcjsKLSAgICBHTHVpbnQgbVJH
QkFGQk87Ci0KLSAgICBHTHVpbnQgbUJHUkFNdWx0aXNhbXBsZWRSZW5kZXJidWZmZXI7Ci0gICAg
R0x1aW50IG1CR1JBTXVsdGlzYW1wbGVkRkJPOwotfTsKLQotLy8gRHJhdyB0byB1c2VyLWNyZWF0
ZWQgZnJhbWVidWZmZXIsIGJsaXQgd2hvbGUtYnVmZmVyIGNvbG9yIHRvIG9yaWdpbmFsIGZyYW1l
YnVmZmVyLgotVEVTVF9QKEJsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgQmxpdENvbG9yVG9EZWZh
dWx0KQotewotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtVXNlckZCTyk7
Ci0KLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklU
IHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLQotICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3Jh
bSwgInBvc2l0aW9uIiwgMC44Zik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUsIG1Vc2VyRkJPKTsK
LSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCBtT3JpZ2lu
YWxGQk8pOwotCi0gICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0
aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93
SGVpZ2h0KCksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09MT1JfQlVGRkVSX0JJ
VCwgR0xfTkVBUkVTVCk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtT3JpZ2luYWxGQk8pOwotCi0gICAgRVhQRUNU
X1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgp
IC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdp
bmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAw
LCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMg
KiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7Ci0gICAgRVhQRUNU
X1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgp
IC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsKLX0KLQotLy8gRHJhdyB0byBzeXN0ZW0gZnJhbWVi
dWZmZXIsIGJsaXQgd2hvbGUtYnVmZmVyIGNvbG9yIHRvIHVzZXItY3JlYXRlZCBmcmFtZWJ1ZmZl
ci4KLVRFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIFJldmVyc2VDb2xvckJsaXQpCi17
Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1PcmlnaW5hbEZCTyk7Ci0K
LSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwg
R0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLQotICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwg
InBvc2l0aW9uIiwgMC44Zik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGds
QmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7
Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwgbVVzZXJG
Qk8pOwotCi0gICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0aCgp
LCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVp
Z2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklULCBH
TF9ORUFSRVNUKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJh
bWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1Vc2VyRkJPKTsKLQotICAgIEVYUEVDVF9QSVhFTF9F
USggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1
NSwgICAwLCAgIDAsIDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0
aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsK
LSAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2lu
ZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9F
USggICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAg
MCwgMjU1LCAgIDAsIDI1NSk7Ci19Ci0KLS8vIGJsaXQgZnJvbSB1c2VyLWNyZWF0ZWQgRkJPIHRv
IHN5c3RlbSBmcmFtZWJ1ZmZlciwgd2l0aCB0aGUgc2Npc3NvciB0ZXN0IGVuYWJsZWQuCi1URVNU
X1AoQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0LCBTY2lzc29yZWRCbGl0KQotewotICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtVXNlckZCTyk7Ci0KLSAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZG
RVJfQklUKTsKLQotICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC44
Zik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVy
KEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7Ci0gICAgZ2xCaW5kRnJh
bWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8pOwotCi0gICAgZ2xD
bGVhckNvbG9yKDEuMCwgMS4wLCAxLjAsIDEuMCk7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZG
RVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7Ci0K
LSAgICBnbFNjaXNzb3IoZ2V0V2luZG93V2lkdGgoKSAvIDIsIDAsIGdldFdpbmRvd1dpZHRoKCkg
LyAyLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0gICAgZ2xFbmFibGUoR0xfU0NJU1NPUl9URVNUKTsK
LQotICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0
V2luZG93SGVpZ2h0KCksIDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgp
LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX05F
QVJFU1QpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbERpc2FibGUoR0xf
U0NJU1NPUl9URVNUKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBt
T3JpZ2luYWxGQk8pOwotCi0gICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgp
IC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAyNTUsIDI1NSwgMjU1KTsKLSAg
ICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93
SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAwLCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgz
ICogZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwg
ICAwLCAgIDAsIDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgp
IC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAyNTUsIDI1NSwgMjU1KTsKLX0K
LQotLy8gYmxpdCBmcm9tIHN5c3RlbSBGQk8gdG8gdXNlci1jcmVhdGVkIGZyYW1lYnVmZmVyLCB3
aXRoIHRoZSBzY2lzc29yIHRlc3QgZW5hYmxlZC4KLVRFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdM
RVRlc3QsIFJldmVyc2VTY2lzc29yZWRCbGl0KQotewotICAgIC8vIFRPRE8oam1hZGlsbCk6IFRy
aWFnZSB0aGlzIGRyaXZlciBidWcuCi0gICAgaWYgKElzQU1EKCkgJiYgSXNEM0QxMSgpKQotICAg
IHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gQU1EIEQzRDExLiIgPDwg
c3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZ2xCaW5kRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIG1PcmlnaW5hbEZCTyk7Ci0KLSAgICBnbENsZWFyKEdMX0NPTE9S
X0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklU
KTsKLQotICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC44Zik7Ci0K
LSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RS
QVdfRlJBTUVCVUZGRVJfQU5HTEUsIG1Vc2VyRkJPKTsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFLCBtT3JpZ2luYWxGQk8pOwotCi0gICAgZ2xDbGVhckNv
bG9yKDEuMCwgMS4wLCAxLjAsIDEuMCk7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklU
IHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7Ci0gICAgCi0g
ICAgZ2xTY2lzc29yKGdldFdpbmRvd1dpZHRoKCkgLyAyLCAwLCBnZXRXaW5kb3dXaWR0aCgpIC8g
MiwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgIGdsRW5hYmxlKEdMX1NDSVNTT1JfVEVTVCk7Ci0K
LSAgICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdp
bmRvd0hlaWdodCgpLCAwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwg
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9ORUFS
RVNUKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xEaXNhYmxlKEdMX1ND
SVNTT1JfVEVTVCk7Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVVz
ZXJGQk8pOwotICAgIAotICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAv
IDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgMjU1LCAyNTUsIDI1NSk7Ci0gICAg
RVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hl
aWdodCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMyAq
IGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAg
MCwgICAwLCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2luZG93V2lkdGgoKSAv
IDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgMjU1LCAyNTUsIDI1NSk7Ci19Ci0K
LS8vIGJsaXQgZnJvbSB1c2VyLWNyZWF0ZWQgRkJPIHRvIHN5c3RlbSBmcmFtZWJ1ZmZlciwgdXNp
bmcgcmVnaW9uIGxhcmdlciB0aGFuIGJ1ZmZlci4KLVRFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdM
RVRlc3QsIE92ZXJzaXplZEJsaXQpCi17Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIG1Vc2VyRkJPKTsKLQotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdM
X0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwotCi0gICAgZHJhd1F1
YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjhmKTsKLQotICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9B
TkdMRSwgbU9yaWdpbmFsRkJPKTsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1F
QlVGRkVSX0FOR0xFLCBtVXNlckZCTyk7Ci0KLSAgICBnbENsZWFyQ29sb3IoMS4wLCAxLjAsIDEu
MCwgMS4wKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZG
RVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLQotICAgIGdsQmxpdEZyYW1lYnVmZmVy
QU5HTEUoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSAqIDIsIGdldFdpbmRvd0hlaWdodCgpICogMiwg
MCwgMCwgZ2V0V2luZG93V2lkdGgoKSAqIDIsIGdldFdpbmRvd0hlaWdodCgpICogMiwgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsK
LQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIG1PcmlnaW5hbEZCTyk7Ci0KLSAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdl
dFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwg
ICAwLCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQs
ICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1NSk7Ci0gICAgRVhQ
RUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdo
dCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdl
dFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwg
ICAwLCAyNTUpOwotfQotCi0vLyBibGl0IGZyb20gc3lzdGVtIEZCTyB0byB1c2VyLWNyZWF0ZWQg
ZnJhbWVidWZmZXIsIHVzaW5nIHJlZ2lvbiBsYXJnZXIgdGhhbiBidWZmZXIuCi1URVNUX1AoQmxp
dEZyYW1lYnVmZmVyQU5HTEVUZXN0LCBSZXZlcnNlT3ZlcnNpemVkQmxpdCkKLXsKLSAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbU9yaWdpbmFsRkJPKTsKLQotICAgIGdsQ2xl
YXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lM
X0JVRkZFUl9CSVQpOwotCi0gICAgZHJhd1F1YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRpb24i
LCAwLjhmKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVi
dWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8pOwotICAgIGdsQmluZEZy
YW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7Ci0KLSAg
ICBnbENsZWFyQ29sb3IoMS4wLCAxLjAsIDEuMCwgMS4wKTsKLSAgICBnbENsZWFyKEdMX0NPTE9S
X0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklU
KTsKLQotICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSAq
IDIsIGdldFdpbmRvd0hlaWdodCgpICogMiwgMCwgMCwgZ2V0V2luZG93V2lkdGgoKSAqIDIsIGdl
dFdpbmRvd0hlaWdodCgpICogMiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT0xP
Ul9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQot
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtVXNlckZCTyk7Ci0KLSAgICBF
WFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVp
Z2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgzICog
Z2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgMjU1
LCAgIDAsIDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8g
NCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKLSAgICBF
WFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVp
Z2h0KCkgLyA0LCAgIDAsIDI1NSwgICAwLCAyNTUpOwotfQotCi0vLyBibGl0IGZyb20gdXNlci1j
cmVhdGVkIEZCTyB0byBzeXN0ZW0gZnJhbWVidWZmZXIsIHdpdGggZGVwdGggYnVmZmVyLgotVEVT
VF9QKEJsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgQmxpdFdpdGhEZXB0aCkKLXsKLSAgICBnbEJp
bmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVVzZXJGQk8pOwotCi0gICAgZ2xEZXB0aE1h
c2soR0xfVFJVRSk7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhf
QlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7Ci0KLSAgICBnbEVuYWJsZShHTF9E
RVBUSF9URVNUKTsKLQotICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC4zZik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEZyYW1lYnVm
ZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7Ci0gICAgZ2xCaW5k
RnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8pOwotCi0gICAg
Z2xDbGVhckNvbG9yKDEuMCwgMS4wLCAxLjAsIDEuMCk7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9C
VUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7
Ci0KLSAgICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdl
dFdpbmRvd0hlaWdodCgpLCAwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQo
KSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xf
REVQVEhfQlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbU9yaWdpbmFsRkJPKTsK
LQotICAgIC8vIGlmIGJsaXQgaXMgaGFwcGVuaW5nIGNvcnJlY3RseSwgdGhpcyBxdWFkIHdpbGwg
bm90IGRyYXcsIGJlY2F1c2UgaXQgaXMgYmVoaW5kIHRoZSBibGl0dGVkIG9uZQotICAgIGRyYXdR
dWFkKG1CbHVlUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC44Zik7Ci0KLSAgICBnbERpc2FibGUoR0xf
REVQVEhfVEVTVCk7Ci0KLSAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkg
LyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOwotICAg
IEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dI
ZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDMg
KiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAg
IDAsICAgMCwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkg
LyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAwLCAyNTUpOwotfQot
Ci0vLyBibGl0IGZyb20gc3lzdGVtIEZCTyB0byB1c2VyLWNyZWF0ZWQgZnJhbWVidWZmZXIsIHdp
dGggZGVwdGggYnVmZmVyLgotVEVTVF9QKEJsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgUmV2ZXJz
ZUJsaXRXaXRoRGVwdGgpCi17Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIs
IG1PcmlnaW5hbEZCTyk7Ci0KLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9E
RVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLQotICAgIGdsRW5hYmxl
KEdMX0RFUFRIX1RFU1QpOwotCi0gICAgZHJhd1F1YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRp
b24iLCAwLjNmKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJh
bWVidWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8pOwotICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7Ci0K
LSAgICBnbENsZWFyQ29sb3IoMS4wZiwgMS4wZiwgMS4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihH
TF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVG
RkVSX0JJVCk7Ci0KLSAgICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdldFdpbmRvd1dp
ZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5k
b3dIZWlnaHQoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJf
QklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7Ci0gICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVVzZXJG
Qk8pOwotCi0gICAgLy8gaWYgYmxpdCBpcyBoYXBwZW5pbmcgY29ycmVjdGx5LCB0aGlzIHF1YWQg
d2lsbCBub3QgZHJhdywgYmVjYXVzZSBpdCBpcyBiZWhpbmQgdGhlIGJsaXR0ZWQgb25lCi0KLSAg
ICBkcmF3UXVhZChtQmx1ZVByb2dyYW0sICJwb3NpdGlvbiIsIDAuOGYpOwotCi0gICAgZ2xEaXNh
YmxlKEdMX0RFUFRIX1RFU1QpOwotCi0gICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dX
aWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1
KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0
V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAwLCAyNTUpOwotICAgIEVYUEVDVF9QSVhF
TF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQs
IDI1NSwgICAwLCAgIDAsIDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dX
aWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1
KTsKLX0KLQotLy8gYmxpdCBmcm9tIG9uZSByZWdpb24gb2YgdGhlIHN5c3RlbSBmYm8gdG8gYW5v
dGhlci0tIHRoaXMgc2hvdWxkIGZhaWwuCi1URVNUX1AoQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0
LCBCbGl0U2FtZUJ1ZmZlck9yaWdpbmFsKQotewotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZS
QU1FQlVGRkVSLCBtT3JpZ2luYWxGQk8pOwotCi0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJf
QklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7Ci0KLSAg
ICBkcmF3UXVhZChtQ2hlY2tlclByb2dyYW0sICJwb3NpdGlvbiIsIDAuM2YpOwotCi0gICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbEJsaXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdl
dFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSwgZ2V0V2luZG93V2lkdGgoKSAv
IDIsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOwotICAgIEVY
UEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLS8vIGJsaXQgZnJvbSBv
bmUgcmVnaW9uIG9mIHRoZSBzeXN0ZW0gZmJvIHRvIGFub3RoZXIuCi1URVNUX1AoQmxpdEZyYW1l
YnVmZmVyQU5HTEVUZXN0LCBCbGl0U2FtZUJ1ZmZlclVzZXIpCi17Ci0gICAgZ2xCaW5kRnJhbWVi
dWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1Vc2VyRkJPKTsKLQotICAgIGdsQ2xlYXIoR0xfQ09MT1Jf
QlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQp
OwotCi0gICAgZHJhd1F1YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjNmKTsKLQot
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgw
LCAwLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCksIGdldFdpbmRvd1dp
ZHRoKCkgLyAyLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsK
LSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi1URVNUX1Ao
QmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0LCBCbGl0UGFydGlhbENvbG9yKQotewotICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtVXNlckZCTyk7Ci0KLSAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZG
RVJfQklUKTsKLQotICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41
Zik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVy
KEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7Ci0gICAgZ2xCaW5kRnJh
bWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8pOwotCi0gICAgZ2xD
bGVhckNvbG9yKDEuMCwgMS4wLCAxLjAsIDEuMCk7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZG
RVJfQklUfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLQot
ICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdl
dFdpbmRvd0hlaWdodCgpIC8gMiwgMCwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBnZXRXaW5kb3dX
aWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsKLQotICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1PcmlnaW5h
bEZCTyk7Ci0KLSAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAg
ICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsIDI1NSwgMjU1LCAyNTUpOwotICAgIEVYUEVD
VF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQo
KSAvIDQsIDI1NSwgMjU1LCAyNTUsIDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRX
aW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAyNTUsIDI1
NSwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAz
ICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOwotfQotCi1URVNU
X1AoQmxpdEZyYW1lYnVmZmVyQU5HTEVUZXN0LCBCbGl0RGlmZmVyZW50U2l6ZXMpCi17Ci0gICAg
Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1Vc2VyRkJPKTsKLQotICAgIGdsQ2xl
YXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lM
X0JVRkZFUl9CSVQpOwotCi0gICAgZHJhd1F1YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRpb24i
LCAwLjVmKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVi
dWZmZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwgbVNtYWxsRkJPKTsKLSAgICBnbEJpbmRG
cmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFLCBtVXNlckZCTyk7Ci0KLSAgICBn
bENsZWFyQ29sb3IoMS4wLCAxLjAsIDEuMCwgMS4wKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JV
RkZFUl9CSVR8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwot
Ci0gICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRX
aW5kb3dIZWlnaHQoKSwgMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9ORUFS
RVNUKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIG1TbWFsbEZCTyk7Ci0KLSAgICBFWFBFQ1RfUElYRUxfRVEoICAg
IGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAyNTUsICAg
MCwgICAwLCAyNTUpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLVRFU1RfUChC
bGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIEJsaXRXaXRoTWlzc2luZ0F0dGFjaG1lbnRzKQotewot
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtQ29sb3JPbmx5RkJPKTsKLQot
ICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgZHJhd1F1YWQobUNoZWNrZXJQ
cm9ncmFtLCAicG9zaXRpb24iLCAwLjNmKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RS
QVdfRlJBTUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7Ci0gICAgZ2xCaW5kRnJhbWVidWZm
ZXIoR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwgbUNvbG9yT25seUZCTyk7Ci0KLSAgICBnbENs
ZWFyQ29sb3IoMS4wLCAxLjAsIDEuMCwgMS4wKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZF
Ul9CSVR8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwotCi0g
ICAgLy8gZGVwdGggYmxpdCByZXF1ZXN0IHNob3VsZCBiZSBzaWxlbnRseSBpZ25vcmVkLCBiZWNh
dXNlIHRoZSByZWFkIEZCTyBoYXMgbm8gZGVwdGggYXR0YWNobWVudAotICAgIGdsQmxpdEZyYW1l
YnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAs
IDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQsIEdM
X05FQVJFU1QpOyAKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJh
bWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1PcmlnaW5hbEZCTyk7Ci0KLSAgICBFWFBFQ1RfUElY
RUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0
LCAyNTUsICAgMCwgICAwLCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93
V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgMjU1LCAgIDAsIDI1
NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdl
dFdpbmRvd0hlaWdodCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKLSAgICBFWFBFQ1RfUElY
RUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0
LCAgIDAsIDI1NSwgICAwLCAyNTUpOwotCi0gICAgLy8gdW5saWtlIGluIHRoZSBkZXB0aCBibGl0
IHRlc3RzLCB0aGlzICpzaG91bGQqIGRyYXcgYSBibHVlIHF1YWQsIGJlY2F1c2UgZGVwdGggaW5m
bwotICAgIC8vIGhhcyBub3QgYmVlbiBjb3BpZWQKLSAgICBnbEVuYWJsZShHTF9ERVBUSF9URVNU
KTsKLSAgICBkcmF3UXVhZChtQmx1ZVByb2dyYW0sICJwb3NpdGlvbiIsIDAuOGYpOwotICAgIGds
RGlzYWJsZShHTF9ERVBUSF9URVNUKTsKLQotICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2lu
ZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgICAwLCAyNTUs
IDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAg
IGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAgIDAsIDI1NSwgMjU1KTsKLSAgICBFWFBFQ1Rf
UElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkg
LyA0LCAgIDAsICAgMCwgMjU1LCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9FUSggICAgZ2V0V2lu
ZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwgICAwLCAyNTUs
IDI1NSk7Ci19Ci0KLVRFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIEJsaXRTdGVuY2ls
KQotewotICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgaWYgd2UgY2FuIGZpeCB0aGlz
IG9uIEQzRDkuCi0gICAgLy8gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmdsZXByb2plY3Qv
aXNzdWVzL2RldGFpbD9pZD04MDkKLSAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVu
ZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFKQotICAgIHsKLSAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgRDNEOS4iIDw8IHN0ZDo6
ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBtVXNlckZCTyk7Ci0KLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9C
SVQpOwotICAgIC8vIGZpbGwgdGhlIHN0ZW5jaWwgYnVmZmVyIHdpdGggMHgxCi0gICAgZ2xTdGVu
Y2lsRnVuYyhHTF9BTFdBWVMsIDB4MSwgMHhGRik7Ci0gICAgZ2xTdGVuY2lsT3AoR0xfUkVQTEFD
RSwgR0xfUkVQTEFDRSwgR0xfUkVQTEFDRSk7Ci0gICAgZ2xFbmFibGUoR0xfU1RFTkNJTF9URVNU
KTsgCi0gICAgZHJhd1F1YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjNmKTsKLQot
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5h
bEZCTyk7Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwg
bVVzZXJGQk8pOwotCi0gICAgZ2xDbGVhckNvbG9yKDEuMCwgMS4wLCAxLjAsIDEuMCk7Ci0gICAg
Z2xDbGVhclN0ZW5jaWwoMHgwKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVR8IEdM
X0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwotCi0gICAgLy8gZGVw
dGggYmxpdCByZXF1ZXN0IHNob3VsZCBiZSBzaWxlbnRseSBpZ25vcmVkLCBiZWNhdXNlIHRoZSBy
ZWFkIEZCTyBoYXMgbm8gZGVwdGggYXR0YWNobWVudAotICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5H
TEUoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIDAsIGdldFdp
bmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCwgR0xfTkVBUkVT
VCk7IAotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgbU9yaWdpbmFsRkJPKTsKLQotICAgIEVYUEVDVF9QSVhFTF9FUSgg
ICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwg
ICAwLCAgIDAsIDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDMgKiBnZXRXaW5kb3dXaWR0aCgp
IC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsKLSAg
ICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAzICogZ2V0V2luZG93
SGVpZ2h0KCkgLyA0LCAyNTUsICAgMCwgICAwLCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgg
ICAgZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsICAgMCwg
MjU1LCAgIDAsIDI1NSk7Ci0KLSAgICBnbFN0ZW5jaWxGdW5jKEdMX0VRVUFMLCAweDEsIDB4RkYp
OyAvLyBvbmx5IHBhc3MgaWYgc3RlbmNpbCBidWZmZXIgYXQgcGl4ZWwgcmVhZHMgMHgxCi0gICAg
ZHJhd1F1YWQobUJsdWVQcm9ncmFtLCAicG9zaXRpb24iLCAwLjhmKTsgLy8gYmx1ZSBxdWFkIHdp
bGwgZHJhdyBpZiBzdGVuY2lsIGJ1ZmZlciB3YXMgY29waWVkCi0gICAgZ2xEaXNhYmxlKEdMX1NU
RU5DSUxfVEVTVCk7Ci0KLSAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkg
LyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsICAgMCwgMjU1LCAyNTUpOwotICAg
IEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsICAgICBnZXRXaW5kb3dI
ZWlnaHQoKSAvIDQsICAgMCwgICAwLCAyNTUsIDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDMg
KiBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgICAwLCAg
IDAsIDI1NSwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoICAgIGdldFdpbmRvd1dpZHRoKCkg
LyA0LCAzICogZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsICAgMCwgMjU1LCAyNTUpOwotfQot
Ci0vLyBtYWtlIHN1cmUgdGhhdCBhdHRlbXB0aW5nIHRvIGJsaXQgYSBwYXJ0aWFsIGRlcHRoIGJ1
ZmZlciBpc3N1ZXMgYW4gZXJyb3IKLVRFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIEJs
aXRQYXJ0aWFsRGVwdGhTdGVuY2lsKQotewotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCBtVXNlckZCTyk7Ci0KLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBH
TF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLQotICAgIGRyYXdR
dWFkKG1DaGVja2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVJf
QU5HTEUsIG1PcmlnaW5hbEZCTyk7Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFN
RUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8pOwotCi0gICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgw
LCAwLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCAwLCAwLCAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5k
b3dIZWlnaHQoKSAvIDIsIEdMX0RFUFRIX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOwotICAgIEVY
UEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLS8vIFRlc3QgYmxpdCB3
aXRoIE1SVCBmcmFtZWJ1ZmZlcnMKLVRFU1RfUChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIEJs
aXRNUlQpCi17Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJz
IikpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xlbnVtIGRyYXdCdWZm
ZXJzW10gPSB7IEdMX0NPTE9SX0FUVEFDSE1FTlQwX0VYVCwgR0xfQ09MT1JfQVRUQUNITUVOVDFf
RVhUIH07Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbU1SVEZCTyk7
Ci0gICAgZ2xEcmF3QnVmZmVyc0VYVCgyLCBkcmF3QnVmZmVycyk7Ci0KLSAgICBnbEJpbmRGcmFt
ZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUNvbG9yT25seUZCTyk7Ci0KLSAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIAotICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwg
InBvc2l0aW9uIiwgMC44Zik7Ci0gICAgCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFLCBtQ29sb3JPbmx5
RkJPKTsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCBt
TVJURkJPKTsKLQotICAgIGdsQmxpdEZyYW1lYnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2luZG93V2lk
dGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRv
d0hlaWdodCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTE9SX0JVRkZFUl9C
SVQsIEdMX05FQVJFU1QpOwotICAgIAotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAg
Z2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1NUlRGQk8pOwotCi0gICAgRVhQRUNU
X1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRvd0hlaWdodCgp
IC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMyAqIGdldFdp
bmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAsIDI1NSwgICAw
LCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgoKSAvIDQsIDMg
KiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7Ci0gICAgRVhQRUNU
X1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRvd0hlaWdodCgp
IC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsKLQotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQo
R0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQxX0VYVCwgR0xfVEVYVFVSRV8yRCwg
MCwgMCk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09M
T1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1NUlRDb2xvckJ1ZmZlcjAsIDApOwotCi0g
ICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgICAgIGdldFdpbmRv
d0hlaWdodCgpIC8gNCwgMjU1LCAgIDAsICAgMCwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEo
MyAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCAgICAgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCAgIDAs
IDI1NSwgICAwLCAyNTUpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgzICogZ2V0V2luZG93V2lkdGgo
KSAvIDQsIDMgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDI1NSwgICAwLCAgIDAsIDI1NSk7Ci0g
ICAgRVhQRUNUX1BJWEVMX0VRKCAgICBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgMyAqIGdldFdpbmRv
d0hlaWdodCgpIC8gNCwgICAwLCAyNTUsICAgMCwgMjU1KTsKLQotICAgIGdsRnJhbWVidWZmZXJU
ZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJF
XzJELCBtTVJUQ29sb3JCdWZmZXIwLCAwKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdM
X0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMV9FWFQsIEdMX1RFWFRVUkVfMkQsIG1N
UlRDb2xvckJ1ZmZlcjEsIDApOwotfQotCi0vLyBNYWtlIHN1cmUgdGhhdCBhdHRlbXB0cyB0byBz
dHJldGNoIGluIGEgYmxpdCBjYWxsIGlzc3VlIGFuIGVycm9yCi1URVNUX1AoQmxpdEZyYW1lYnVm
ZmVyQU5HTEVUZXN0LCBFcnJvclN0cmV0Y2hpbmcpCi17Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIG1Vc2VyRkJPKTsKLQotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVS
X0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwotCi0g
ICAgZHJhd1F1YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRFJBV19GUkFN
RUJVRkZFUl9BTkdMRSwgbU9yaWdpbmFsRkJPKTsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9S
RUFEX0ZSQU1FQlVGRkVSX0FOR0xFLCBtVXNlckZCTyk7Ci0KLSAgICBnbEJsaXRGcmFtZWJ1ZmZl
ckFOR0xFKDAsIDAsIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIs
IDAsIDAsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0V2luZG93V2lkdGgoKSwgZ2V0
V2luZG93SGVpZ2h0KCksIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOwotICAgIEVY
UEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLS8vIE1ha2Ugc3VyZSB0
aGF0IGF0dGVtcHRzIHRvIGZsaXAgaW4gYSBibGl0IGNhbGwgaXNzdWUgYW4gZXJyb3IKLVRFU1Rf
UChCbGl0RnJhbWVidWZmZXJBTkdMRVRlc3QsIEVycm9yRmxpcHBpbmcpCi17Ci0gICAgZ2xCaW5k
RnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1Vc2VyRkJPKTsKLQotICAgIGdsQ2xlYXIoR0xf
Q09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZF
Ul9CSVQpOwotCi0gICAgZHJhd1F1YWQobUNoZWNrZXJQcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwgbU9yaWdpbmFsRkJPKTsKLSAgICBnbEJpbmRGcmFt
ZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFLCBtVXNlckZCTyk7Ci0KLSAgICBnbEJs
aXRGcmFtZWJ1ZmZlckFOR0xFKDAsIDAsIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dI
ZWlnaHQoKSAvIDIsIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIs
IAotICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgR0xfQ09MT1JfQlVGRkVSX0JJVCwg
R0xfTkVBUkVTVCk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotVEVTVF9QKEJsaXRGcmFtZWJ1ZmZlckFOR0xFVGVzdCwgRXJyb3JzKQotewotICAgIGds
QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtVXNlckZCTyk7Ci0KLSAgICBnbENsZWFy
KEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9C
VUZGRVJfQklUKTsKLQotICAgIGRyYXdRdWFkKG1DaGVja2VyUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEZyYW1lYnVm
ZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVJfQU5HTEUsIG1PcmlnaW5hbEZCTyk7Ci0gICAgZ2xCaW5k
RnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwgbVVzZXJGQk8pOwotCi0gICAg
Z2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dI
ZWlnaHQoKSwgMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTElORUFSKTsK
LSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgIGdsQmxpdEZyYW1l
YnVmZmVyQU5HTEUoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAs
IDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xfQ09MT1JfQlVGRkVSX0JJVCB8IDIzNCwgR0xfTkVBUkVTVCk7Ci0gICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZm
ZXIoR0xfRFJBV19GUkFNRUJVRkZFUl9BTkdMRSwgbURpZmZGb3JtYXRGQk8pOwotCi0gICAgZ2xC
bGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWln
aHQoKSwgMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9ORUFSRVNUKTsKLSAg
ICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgaWYgKGV4dGVu
c2lvbkVuYWJsZWQoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikpCi0gICAgewot
ICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSLCBtQkdSQU11bHRp
c2FtcGxlZEZCTyk7Ci0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZG
RVIsIG1SR0JBRkJPKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAg
Z2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dI
ZWlnaHQoKSwgMCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTkVBUkVT
VCk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAg
fQotCi19Ci0KLS8vIFRPRE8oZ2VvZmZsYW5nKTogRml4IHRoZSBkZXBlbmRlbmNlIG9uIGdsQmxp
dEZyYW1lYnVmZmVyQU5HTEUgd2l0aG91dCBjaGVja3MgYW5kIGFzc3VtaW5nIHRoZQotLy8gZGVm
YXVsdCBmcmFtZWJ1ZmZlciBpcyBCR1JBIHRvIGVuYWJsZSB0aGUgR0wgYW5kIEdMRVMgYmFja2Vu
ZHMuIChodHRwOi8vYW5nbGVidWcuY29tLzEyODkpCi0KLWNsYXNzIEJsaXRGcmFtZWJ1ZmZlclRl
c3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBCbGl0RnJhbWVidWZm
ZXJUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDI1Nik7Ci0gICAgICAgIHNl
dFdpbmRvd0hlaWdodCgyNTYpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAg
ICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwot
ICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0RlcHRoQml0
cygyNCk7Ci0gICAgICAgIHNldENvbmZpZ1N0ZW5jaWxCaXRzKDgpOwotICAgIH0KLX07Ci0KLS8v
IFRlc3RzIHJlc29sdmluZyBhIG11bHRpc2FtcGxlIGRlcHRoIGJ1ZmZlci4KLVRFU1RfUChCbGl0
RnJhbWVidWZmZXJUZXN0LCBNdWx0aXNhbXBsZURlcHRoKQotewotICAgIC8vIFRPRE8oam1hZGls
bCk6IFRyaWFnZSB0aGlzIGRyaXZlciBidWcuCi0gICAgaWYgKElzQU1EKCkgJiYgSXNEM0QxMSgp
KQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gQU1EIEQzRDEx
LiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xSZW5kZXJi
dWZmZXIgcmVuZGVyYnVmOwotICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIs
IHJlbmRlcmJ1Zi5nZXQoKSk7Ci0gICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUo
R0xfUkVOREVSQlVGRkVSLCAyLCBHTF9ERVBUSF9DT01QT05FTlQyNCwgMjU2LCAyNTYpOwotCi0g
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleCA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKLSAgICAgICAgImluIHZlYzIgcG9zaXRpb247XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAwLjUpO1xu
IgotICAgICAgICAifSI7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50ID0KLSAgICAg
ICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAib3V0IG1lZGl1bXAgdmVjNCByZWQ7XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICByZWQgPSB2ZWM0KDEuMCwg
MC4wLCAwLjAsIDEuMCk7XG4iCi0gICAgICAgICIgICBnbF9GcmFnRGVwdGggPSAwLjU7XG4iCi0g
ICAgICAgICJ9IjsKLQotICAgIEFOR0xFX0dMX1BST0dSQU0oZHJhd1JlZCwgdmVydGV4LCBmcmFn
bWVudCk7Ci0KLSAgICBHTEZyYW1lYnVmZmVyIGZyYW1lYnVmZmVyOwotICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlci5nZXQoKSk7Ci0gICAgZ2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfREVQVEhfQVRUQUNITUVOVCwgR0xf
UkVOREVSQlVGRkVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyYnVmLmdl
dCgpKTsKLQotICAgIEFTU0VSVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGds
Q2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotCi0gICAgZ2xDbGVhckRl
cHRoZigwLjVmKTsKLSAgICBnbENsZWFyKEdMX0RFUFRIX0JVRkZFUl9CSVQpOwotCi0gICAgR0xS
ZW5kZXJidWZmZXIgZGVzdFJlbmRlcmJ1ZjsKLSAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVO
REVSQlVGRkVSLCBkZXN0UmVuZGVyYnVmLmdldCgpKTsKLSAgICBnbFJlbmRlcmJ1ZmZlclN0b3Jh
Z2UoR0xfUkVOREVSQlVGRkVSLCBHTF9ERVBUSF9DT01QT05FTlQyNCwgMjU2LCAyNTYpOwotCi0g
ICAgR0xGcmFtZWJ1ZmZlciByZXNvbHZlZDsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFX
X0ZSQU1FQlVGRkVSLCByZXNvbHZlZC5nZXQoKSk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJC
VUZGRVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0UmVuZGVyYnVmLmdldCgp
KTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJBTUVCVUZGRVIsIGZyYW1lYnVm
ZmVyLmdldCgpKTsKLSAgICBnbEJsaXRGcmFtZWJ1ZmZlcigwLCAwLCAyNTYsIDI1NiwgMCwgMCwg
MjU2LCAyNTYsIEdMX0RFUFRIX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOwotCi0gICAgZ2xCaW5k
RnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIHJlc29sdmVkLmdldCgpKTsKLQotICAgIEdMVGV4
dHVyZSBjb2xvcmJ1ZjsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGNvbG9yYnVm
LmdldCgpKTsKLSAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOCwg
MjU2LCAyNTYpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdM
X0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBjb2xvcmJ1Zi5nZXQoKSwgMCk7Ci0K
LSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIENsZWFyIHRvIGdyZWVuCi0gICAg
Z2xDbGVhckNvbG9yKDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYpOwotICAgIGdsQ2xlYXIoR0xfQ09M
T1JfQlVGRkVSX0JJVCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6
OmdyZWVuKTsKLQotICAgIC8vIERyYXcgd2l0aCAwLjVmIHRlc3QgYW5kIHRoZSB0ZXN0IHNob3Vs
ZCBwYXNzLgotICAgIGdsRW5hYmxlKEdMX0RFUFRIX1RFU1QpOwotICAgIGdsRGVwdGhGdW5jKEdM
X0VRVUFMKTsKLSAgICBkcmF3UXVhZChkcmF3UmVkLmdldCgpLCAicG9zaXRpb24iLCAwLjVmKTsK
LSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6cmVkKTsKLQotICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IHJlc29sdmluZyBhIG11bHRpc2FtcGxl
ZCBzdGVuY2lsIGJ1ZmZlci4KLVRFU1RfUChCbGl0RnJhbWVidWZmZXJUZXN0LCBNdWx0aXNhbXBs
ZVN0ZW5jaWwpCi17Ci0gICAgR0xSZW5kZXJidWZmZXIgcmVuZGVyYnVmOwotICAgIGdsQmluZFJl
bmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1Zi5nZXQoKSk7Ci0gICAgZ2xSZW5k
ZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCAyLCBHTF9TVEVOQ0lM
X0lOREVYOCwgMjU2LCAyNTYpOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleCA9Ci0g
ICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgImluIHZlYzIgcG9zaXRpb247XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVj
NChwb3NpdGlvbiwgMC4wLCAxLjApO1xuIgotICAgICAgICAifSI7Ci0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgJmZyYWdtZW50ID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAi
b3V0IG1lZGl1bXAgdmVjNCByZWQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAg
ICAgICIgICByZWQgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7XG4iCi0gICAgICAgICJ9IjsK
LQotICAgIEFOR0xFX0dMX1BST0dSQU0oZHJhd1JlZCwgdmVydGV4LCBmcmFnbWVudCk7Ci0KLSAg
ICBHTEZyYW1lYnVmZmVyIGZyYW1lYnVmZmVyOwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZS
QU1FQlVGRkVSLCBmcmFtZWJ1ZmZlci5nZXQoKSk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZG
RVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJidWYuZ2V0KCkpOwotCi0g
ICAgQVNTRVJUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7Ci0KLSAgICAvLyBmaWxsIHRoZSBzdGVuY2ls
IGJ1ZmZlciB3aXRoIDB4MQotICAgIGdsU3RlbmNpbEZ1bmMoR0xfQUxXQVlTLCAweDEsIDB4RkYp
OwotICAgIGdsU3RlbmNpbE9wKEdMX1JFUExBQ0UsIEdMX1JFUExBQ0UsIEdMX1JFUExBQ0UpOwot
ICAgIGdsRW5hYmxlKEdMX1NURU5DSUxfVEVTVCk7Ci0gICAgZHJhd1F1YWQoZHJhd1JlZC5nZXQo
KSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBHTFRleHR1cmUgZGVzdENvbG9yYnVmOwotICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgZGVzdENvbG9yYnVmLmdldCgpKTsKLSAgICBn
bFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOCwgMjU2LCAyNTYpOwotCi0g
ICAgR0xSZW5kZXJidWZmZXIgZGVzdFJlbmRlcmJ1ZjsKLSAgICBnbEJpbmRSZW5kZXJidWZmZXIo
R0xfUkVOREVSQlVGRkVSLCBkZXN0UmVuZGVyYnVmLmdldCgpKTsKLSAgICBnbFJlbmRlcmJ1ZmZl
clN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9TVEVOQ0lMX0lOREVYOCwgMjU2LCAyNTYpOwot
Ci0gICAgR0xGcmFtZWJ1ZmZlciByZXNvbHZlZDsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9E
UkFXX0ZSQU1FQlVGRkVSLCByZXNvbHZlZC5nZXQoKSk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1
cmUyRChHTF9EUkFXX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVS
RV8yRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RDb2xvcmJ1Zi5nZXQoKSwgMCk7
Ci0gICAgZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCBHTF9T
VEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3RSZW5kZXJidWYuZ2V0KCkpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfUkVBRF9GUkFNRUJVRkZFUiwgZnJhbWVidWZmZXIuZ2V0KCkpOwotICAgIGdsQmxpdEZyYW1l
YnVmZmVyKDAsIDAsIDI1NiwgMjU2LCAwLCAwLCAyNTYsIDI1NiwgR0xfU1RFTkNJTF9CVUZGRVJf
QklULCBHTF9ORUFSRVNUKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVS
LCByZXNvbHZlZC5nZXQoKSk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8v
IENsZWFyIHRvIGdyZWVuCi0gICAgZ2xDbGVhckNvbG9yKDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYp
OwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NP
TE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKLQotICAgIC8vIERyYXcgcmVkIGlmIHRoZSBz
dGVuY2lsIGlzIDB4MSwgd2hpY2ggc2hvdWxkIGJlIHRydWUgYWZ0ZXIgdGhlIGJsaXQvcmVzb2x2
ZS4KLSAgICBnbFN0ZW5jaWxGdW5jKEdMX0VRVUFMLCAweDEsIDB4RkYpOwotICAgIGRyYXdRdWFk
KGRyYXdSZWQuZ2V0KCksICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xP
Ul9FUSgwLCAwLCBHTENvbG9yOjpyZWQpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19
Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGlj
aCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQg
YmUgcnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKEJsaXRGcmFtZWJ1ZmZlckFO
R0xFVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgRVMyX0QzRDExKEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0NPUFlf
QU5HTEUpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoRUdMX0VYUEVSSU1FTlRB
TF9QUkVTRU5UX1BBVEhfRkFTVF9BTkdMRSkpOwotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKEJs
aXRGcmFtZWJ1ZmZlclRlc3QsIEVTM19EM0QxMSgpKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVz
dHMvQnVmZmVyRGF0YVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL0J1ZmZlckRhdGFUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNTcyY2NlOWM4YmIuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbF90ZXN0cy9CdWZmZXJEYXRhVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw1NDAgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0
LmgiCi0KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1j
bGFzcyBCdWZmZXJEYXRhVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgot
ICAgIEJ1ZmZlckRhdGFUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDE2KTsK
LSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDE2KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4
KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVl
Qml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgICAgICBzZXRDb25m
aWdEZXB0aEJpdHMoMjQpOwotCi0gICAgICAgIG1CdWZmZXIgPSAwOwotICAgICAgICBtUHJvZ3Jh
bSA9IDA7Ci0gICAgICAgIG1BdHRyaWJMb2NhdGlvbiA9IC0xOwotICAgIH0KLQotICAgIHZvaWQg
U2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0g
ICAgICAgIGNvbnN0IGNoYXIgKiB2c1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAot
ICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247Ci0gICAgICAgICAgICBhdHRyaWJ1
dGUgZmxvYXQgaW5fYXR0cmliOwotICAgICAgICAgICAgdmFyeWluZyBmbG9hdCB2X2F0dHJpYjsK
LSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
dl9hdHRyaWIgPSBpbl9hdHRyaWI7Ci0gICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwb3Np
dGlvbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBjb25zdCBjaGFyICog
ZnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIHByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OwotICAgICAgICAgICAgdmFyeWluZyBmbG9hdCB2X2F0dHJpYjsKLSAg
ICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCh2X2F0dHJpYiwgMCwgMCwgMSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICk7Ci0KLSAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtQnVmZmVyKTsKLSAgICAgICAgQVNT
RVJUX05FKG1CdWZmZXIsIDBVKTsKLQotICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFt
KHZzU291cmNlLCBmc1NvdXJjZSk7Ci0gICAgICAgIEFTU0VSVF9ORShtUHJvZ3JhbSwgMFUpOwot
Ci0gICAgICAgIG1BdHRyaWJMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0s
ICJpbl9hdHRyaWIiKTsKLSAgICAgICAgQVNTRVJUX05FKG1BdHRyaWJMb2NhdGlvbiwgLTEpOwot
Ci0gICAgICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKLSAgICAgICAgZ2xDbGVhckRlcHRo
ZigwLjApOwotICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9C
VUZGRVJfQklUKTsKLQotICAgICAgICBnbERpc2FibGUoR0xfREVQVEhfVEVTVCk7Ci0KLSAgICAg
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92
ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1CdWZmZXIpOwotICAg
ICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVh
ckRvd24oKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbUJ1ZmZlcjsKLSAgICBHTHVpbnQgbVByb2dy
YW07Ci0gICAgR0xpbnQgbUF0dHJpYkxvY2F0aW9uOwotfTsKLQotVEVTVF9QKEJ1ZmZlckRhdGFU
ZXN0LCBOVUxMRGF0YSkKLXsKLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVm
ZmVyKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGNvbnN0IGludCBudW1JdGVy
YXRpb25zID0gMTI4OwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtSXRlcmF0aW9uczsgKytp
KQotICAgIHsKLSAgICAgICAgR0xzaXplaSBidWZmZXJTaXplID0gc2l6ZW9mKEdMZmxvYXQpICog
KGkgKyAxKTsKLSAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgYnVmZmVyU2l6
ZSwgTlVMTCwgR0xfU1RBVElDX0RSQVcpOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
LQotICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IGJ1ZmZlclNpemU7IGorKykKLSAgICAgICAg
ewotICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBidWZmZXJTaXplIC0gajsgaysrKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsQnVmZmVyU3ViRGF0YShHTF9BUlJBWV9C
VUZGRVIsIGssIGosIE5VTEwpOwotICAgICAgICAgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi1URVNUX1AoQnVmZmVyRGF0
YVRlc3QsIFplcm9Ob25OVUxMRGF0YSkKLXsKLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVG
RkVSLCBtQnVmZmVyKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGNoYXIgKnpl
cm9EYXRhID0gbmV3IGNoYXJbMF07Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwg
MCwgemVyb0RhdGEsIEdMX1NUQVRJQ19EUkFXKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
LQotICAgIGdsQnVmZmVyU3ViRGF0YShHTF9BUlJBWV9CVUZGRVIsIDAsIDAsIHplcm9EYXRhKTsK
LSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGRlbGV0ZSBbXSB6ZXJvRGF0YTsKLX0K
LQotVEVTVF9QKEJ1ZmZlckRhdGFUZXN0LCBOVUxMUmVzb2x2ZWREYXRhKQotewotICAgIGdsQmlu
ZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXIpOwotICAgIGdsQnVmZmVyRGF0YShHTF9B
UlJBWV9CVUZGRVIsIDEyOCwgTlVMTCwgR0xfRFlOQU1JQ19EUkFXKTsKLQotICAgIGdsVXNlUHJv
Z3JhbShtUHJvZ3JhbSk7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1BdHRyaWJMb2NhdGlv
biwgMSwgR0xfRkxPQVQsIEdMX0ZBTFNFLCA0LCBOVUxMKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KG1BdHRyaWJMb2NhdGlvbik7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JV
RkZFUiwgMCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci19
Ci0KLS8vIFRlc3RzIHRoYXQgYSBodWdlIGFsbG9jYXRpb24gcmV0dXJucyBHTF9PVVRfT0ZfTUVN
T1JZCi0vLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IGhvdyB0byB0ZXN0IHRoaXMgcmVsaWFi
bHkgb24gdGhlIENocm9taXVtIGJvdHMKLVRFU1RfUChCdWZmZXJEYXRhVGVzdCwgRElTQUJMRURf
SHVnZVNldERhdGFTaG91bGROb3RDcmFzaCkKLXsKLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlf
QlVGRkVSLCBtQnVmZmVyKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIEdMc2l6
ZWkgYWxsb2NTaXplID0gc3RkOjpudW1lcmljX2xpbWl0czxHTHNpemVpPjo6bWF4KCkgPj4gMjsK
LQotICAgIHVpbnQ4X3QgKmRhdGEgPSBOVUxMOwotICAgIHdoaWxlIChkYXRhID09IE5VTEwgJiYg
YWxsb2NTaXplID49IDQpCi0gICAgewotICAgICAgICBkYXRhID0gbmV3IChzdGQ6Om5vdGhyb3cp
IHVpbnQ4X3RbYWxsb2NTaXplXTsKLQotICAgICAgICBpZiAoZGF0YSA9PSBOVUxMKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBhbGxvY1NpemUgPj49IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBBU1NFUlRfTkUoc3RhdGljX2Nhc3Q8dWludDhfdCo+KE5VTEwpLCBkYXRhKTsKLSAgICBtZW1z
ZXQoZGF0YSwgMCwgYWxsb2NTaXplKTsKLQotICAgIGZsb2F0ICogZlZhbHVlID0gcmVpbnRlcnBy
ZXRfY2FzdDxmbG9hdCo+KGRhdGEpOwotICAgIGZvciAodW5zaWduZWQgaW50IGYgPSAwOyBmIDwg
NjsgZisrKQotICAgIHsKLSAgICAgICAgZlZhbHVlW2ZdID0gMS4wZjsKLSAgICB9Ci0KLSAgICBn
bEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBhbGxvY1NpemUsIGRhdGEsIEdMX1NUQVRJQ19E
UkFXKTsKLQotICAgIEdMZW51bSBlcnJvciA9IGdsR2V0RXJyb3IoKTsKLSAgICBpZiAoZXJyb3Ig
PT0gR0xfTk9fRVJST1IpCi0gICAgewotICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgZmFpbCBiZWNh
dXNlIG9mIGFuIG91dCBvZiBtZW1vcnkgZXJyb3IsIHRyeSBkcmF3aW5nIGEgcXVhZAotICAgICAg
ICAvLyB1c2luZyB0aGUgbGFyZ2UgYnVmZmVyCi0KLSAgICAgICAgLy8gRElTQUJMRUQgYmVjYXVz
ZSBpdCB0YWtlcyBhIGxvbmcgdGltZSwgYnV0IGxlZnQgZm9yIHBvc3Rlcml0eQotCi0gICAgICAg
IC8vZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAgICAgLy9nbFZlcnRleEF0dHJpYlBvaW50
ZXIobUF0dHJpYkxvY2F0aW9uLCAxLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDQsIE5VTEwpOwotICAg
ICAgICAvL2dsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobUF0dHJpYkxvY2F0aW9uKTsKLSAgICAg
ICAgLy9nbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKLSAgICAgICAgLy9kcmF3UXVh
ZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgICAgIC8vc3dhcEJ1ZmZlcnMoKTsK
LQotICAgICAgICAvLy8vIERyYXcgb3BlcmF0aW9ucyBjYW4gYWxzbyBnZW5lcmF0ZSBvdXQtb2Yt
bWVtb3J5LCB3aGljaCBpcyBpbi1zcGVjCi0gICAgICAgIC8vZXJyb3IgPSBnbEdldEVycm9yKCk7
Ci0gICAgICAgIC8vaWYgKGVycm9yID09IEdMX05PX0VSUk9SKQotICAgICAgICAvL3sKLSAgICAg
ICAgLy8gICAgR0xpbnQgdmlld3BvcnRTaXplWzRdOwotICAgICAgICAvLyAgICBnbEdldEludGVn
ZXJ2KEdMX1ZJRVdQT1JULCB2aWV3cG9ydFNpemUpOwotCi0gICAgICAgIC8vICAgIEdMaW50IG1p
ZFBpeGVsWCA9ICh2aWV3cG9ydFNpemVbMF0gKyB2aWV3cG9ydFNpemVbMl0pIC8gMjsKLSAgICAg
ICAgLy8gICAgR0xpbnQgbWlkUGl4ZWxZID0gKHZpZXdwb3J0U2l6ZVsxXSArIHZpZXdwb3J0U2l6
ZVszXSkgLyAyOwotCi0gICAgICAgIC8vICAgIEVYUEVDVF9QSVhFTF9FUShtaWRQaXhlbFgsIG1p
ZFBpeGVsWSwgMjU1LCAwLCAwLCAyNTUpOwotICAgICAgICAvL30KLSAgICAgICAgLy9lbHNlCi0g
ICAgICAgIC8vewotICAgICAgICAvLyAgICBFWFBFQ1RfRVEoR0xfT1VUX09GX01FTU9SWSwgZXJy
b3IpOwotICAgICAgICAvL30KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgRVhQRUNU
X0dMRU5VTV9FUShHTF9PVVRfT0ZfTUVNT1JZLCBlcnJvcik7Ci0gICAgfQotCi0gICAgZGVsZXRl
W10gZGF0YTsKLX0KLQotLy8gSW50ZXJuYWxseSBpbiBEM0QsIHdlIHByb21vdGUgZHluYW1pYyBk
YXRhIHRvIHN0YXRpYyBhZnRlciBtYW55IGRyYXcgbG9vcHMuIFRoaXMgY29kZSB0ZXN0cwotLy8g
cGF0aC4KLVRFU1RfUChCdWZmZXJEYXRhVGVzdCwgUmVwZWF0ZWREcmF3V2l0aER5bmFtaWMpCi17
Ci0gICAgc3RkOjp2ZWN0b3I8R0xmbG9hdD4gZGF0YTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8
IDE2OyArK2kpCi0gICAgewotICAgICAgICBkYXRhLnB1c2hfYmFjayhzdGF0aWNfY2FzdDxHTGZs
b2F0PihpKSk7Ci0gICAgfQotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBnbEJp
bmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVyKTsKLSAgICBnbEJ1ZmZlckRhdGEoR0xf
QVJSQVlfQlVGRkVSLCBzaXplb2YoR0xmbG9hdCkgKiBkYXRhLnNpemUoKSwgZGF0YS5kYXRhKCks
IEdMX0RZTkFNSUNfRFJBVyk7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1BdHRyaWJMb2Nh
dGlvbiwgMSwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBudWxscHRyKTsKLSAgICBnbEJpbmRCdWZm
ZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1B
dHRyaWJMb2NhdGlvbik7Ci0KLSAgICBmb3IgKGludCBkcmF3Q291bnQgPSAwOyBkcmF3Q291bnQg
PCA0MDsgKytkcmF3Q291bnQpCi0gICAgewotICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBv
c2l0aW9uIiwgMC41Zik7Ci0gICAgfQotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0K
LWNsYXNzIEluZGV4ZWRCdWZmZXJDb3B5VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJv
dGVjdGVkOgotICAgIEluZGV4ZWRCdWZmZXJDb3B5VGVzdCgpCi0gICAgewotICAgICAgICBzZXRX
aW5kb3dXaWR0aCgxNik7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgxNik7Ci0gICAgICAgIHNl
dENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAg
ICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsK
LSAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVw
KCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAg
ICBjb25zdCBjaGFyICogdnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAg
ICAgICAgIGF0dHJpYnV0ZSB2ZWMzIGluX2F0dHJpYjsKLSAgICAgICAgICAgIHZhcnlpbmcgdmVj
MyB2X2F0dHJpYjsKLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgdl9hdHRyaWIgPSBpbl9hdHRyaWI7Ci0gICAgICAgICAgICAgICAgZ2xfUG9z
aXRpb24gPSB2ZWM0KDAuMCwgMC4wLCAwLjUsIDEuMCk7Ci0gICAgICAgICAgICAgICAgZ2xfUG9p
bnRTaXplID0gMTAwLjA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgY29u
c3QgY2hhciAqIGZzU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAg
ICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLSAgICAgICAgICAgIHZhcnlpbmcgdmVjMyB2X2F0
dHJpYjsKLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2X2F0dHJpYiwgMSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICk7Ci0KLSAgICAgICAgZ2xHZW5CdWZmZXJzKDIsIG1CdWZmZXJzKTsKLSAgICAgICAg
QVNTRVJUX05FKG1CdWZmZXJzWzBdLCAwVSk7Ci0gICAgICAgIEFTU0VSVF9ORShtQnVmZmVyc1sx
XSwgMFUpOwotCi0gICAgICAgIGdsR2VuQnVmZmVycygxLCAmbUVsZW1lbnRCdWZmZXIpOwotICAg
ICAgICBBU1NFUlRfTkUobUVsZW1lbnRCdWZmZXIsIDBVKTsKLQotICAgICAgICBtUHJvZ3JhbSA9
IENvbXBpbGVQcm9ncmFtKHZzU291cmNlLCBmc1NvdXJjZSk7Ci0gICAgICAgIEFTU0VSVF9ORSht
UHJvZ3JhbSwgMFUpOwotCi0gICAgICAgIG1BdHRyaWJMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9j
YXRpb24obVByb2dyYW0sICJpbl9hdHRyaWIiKTsKLSAgICAgICAgQVNTRVJUX05FKG1BdHRyaWJM
b2NhdGlvbiwgLTEpOwotCi0gICAgICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAwKTsKLSAgICAg
ICAgZ2xEaXNhYmxlKEdMX0RFUFRIX1RFU1QpOwotICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JV
RkZFUl9CSVQpOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAg
IHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVCdWZmZXJz
KDIsIG1CdWZmZXJzKTsKLSAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtRWxlbWVudEJ1ZmZl
cik7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICAgICAgQU5HTEVU
ZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQotICAgIEdMdWludCBtQnVmZmVyc1syXTsKLSAgICBH
THVpbnQgbUVsZW1lbnRCdWZmZXI7Ci0gICAgR0x1aW50IG1Qcm9ncmFtOwotICAgIEdMaW50IG1B
dHRyaWJMb2NhdGlvbjsKLX07Ci0KLS8vIFRoZSBmb2xsb3dpbmcgdGVzdCBjb3ZlcnMgYW4gQU5H
TEUgYnVnIHdoZXJlIG91ciBpbmRleCByYW5nZXMKLS8vIHdlcmVuJ3QgdXBkYXRlZCBmcm9tIENv
cHlCdWZmZXJTdWJEYXRhIGNhbGxzCi0vLyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2FuZ2xl
cHJvamVjdC9pc3N1ZXMvZGV0YWlsP2lkPTcwOQotVEVTVF9QKEluZGV4ZWRCdWZmZXJDb3B5VGVz
dCwgSW5kZXhSYW5nZUJ1ZykKLXsKLSAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IEZpZ3VyZSBvdXQg
d2h5IHRoaXMgZmFpbHMgb24gQU1EIE9wZW5HTCAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xMjkxKQot
ICAgIGlmIChJc0FNRCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3QgZGlzYWJsZWQgb24gQU1EIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIHVuc2lnbmVkIGNoYXIgdmVydGV4RGF0YVtdID0geyAyNTUsIDAsIDAs
IDAsIDAsIDAgfTsKLSAgICB1bnNpZ25lZCBpbnQgaW5kZXhEYXRhW10gPSB7IDAsIDEgfTsKLQot
ICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXJzWzBdKTsKLSAgICBnbEJ1
ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBzaXplb2YoY2hhcikgKiA2LCB2ZXJ0ZXhEYXRhLCBH
TF9TVEFUSUNfRFJBVyk7Ci0KLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIGdsVmVy
dGV4QXR0cmliUG9pbnRlcihtQXR0cmliTG9jYXRpb24sIDMsIEdMX1VOU0lHTkVEX0JZVEUsIEdM
X1RSVUUsIDMsIE5VTEwpOwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobUF0dHJpYkxv
Y2F0aW9uKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kQnVmZmVy
KEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBtRWxlbWVudEJ1ZmZlcik7Ci0gICAgZ2xCdWZmZXJE
YXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBzaXplb2YoaW50KSAqIDEsIGluZGV4RGF0YSwg
R0xfU1RBVElDX0RSQVcpOwotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xEcmF3RWxlbWVudHMoR0xfUE9JTlRTLCAxLCBH
TF9VTlNJR05FRF9JTlQsIE5VTEwpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAg
RVhQRUNUX1BJWEVMX0VRKDAsIDAsIDI1NSwgMCwgMCwgMjU1KTsKLQotICAgIGdsQmluZEJ1ZmZl
cihHTF9DT1BZX1JFQURfQlVGRkVSLCBtQnVmZmVyc1sxXSk7Ci0gICAgZ2xCdWZmZXJEYXRhKEdM
X0NPUFlfUkVBRF9CVUZGRVIsIDQsICZpbmRleERhdGFbMV0sIEdMX1NUQVRJQ19EUkFXKTsKLQot
ICAgIGdsQmluZEJ1ZmZlcihHTF9DT1BZX1dSSVRFX0JVRkZFUiwgbUVsZW1lbnRCdWZmZXIpOwot
Ci0gICAgZ2xDb3B5QnVmZmVyU3ViRGF0YShHTF9DT1BZX1JFQURfQlVGRkVSLCBHTF9DT1BZX1dS
SVRFX0JVRkZFUiwgMCwgMCwgc2l6ZW9mKGludCkpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIEVYUEVDVF9QSVhF
TF9FUSgwLCAwLCAwLCAwLCAwLCAwKTsKLQotICAgIHVuc2lnbmVkIGNoYXIgbmV3RGF0YVtdID0g
eyAwLCAyNTUsIDAgfTsKLSAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfQVJSQVlfQlVGRkVSLCAzLCAz
LCBuZXdEYXRhKTsKLQotICAgIGdsRHJhd0VsZW1lbnRzKEdMX1BPSU5UUywgMSwgR0xfVU5TSUdO
RURfSU5ULCBOVUxMKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9Q
SVhFTF9FUSgwLCAwLCAwLCAyNTUsIDAsIDI1NSk7Ci19Ci0KLWNsYXNzIEJ1ZmZlckRhdGFUZXN0
RVMzIDogcHVibGljIEJ1ZmZlckRhdGFUZXN0Ci17Ci19OwotCi0vLyBUaGUgZm9sbG93aW5nIHRl
c3QgY292ZXJzIGFuIEFOR0xFIGJ1ZyB3aGVyZSB0aGUgYnVmZmVyIHN0b3JhZ2UKLS8vIGlzIG5v
dCByZXNpemVkIGJ5IEJ1ZmZlcjExOjpnZXRMYXRlc3RCdWZmZXJTdG9yYWdlIHdoZW4gbmVlZGVk
LgotLy8gaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9hbmdsZXByb2plY3QvaXNzdWVzL2RldGFp
bD9pZD04OTcKLVRFU1RfUChCdWZmZXJEYXRhVGVzdEVTMywgQnVmZmVyUmVzaXppbmcpCi17Ci0g
ICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7Ci0gICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICAvLyBBbGxvY2F0ZSBhIGJ1ZmZlciB3aXRoIG9uZSBieXRlCi0g
ICAgdWludDhfdCBzaW5nbGVCeXRlW10gPSB7IDB4YWEgfTsKLSAgICBnbEJ1ZmZlckRhdGEoR0xf
QVJSQVlfQlVGRkVSLCAxLCBzaW5nbGVCeXRlLCBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICAvLyBS
ZXNpemUgdGhlIGJ1ZmZlcgotICAgIC8vIFRvIHRyaWdnZXIgdGhlIGJ1ZywgdGhlIGJ1ZmZlciBu
ZWVkIHRvIGJlIGJpZyBlbm91Z2ggYmVjYXVzZSBzb21lIGhhcmR3YXJlIGNvcHkgYnVmZmVycwot
ICAgIC8vIGJ5IGNodW5rcyBvZiBwYWdlcyBpbnN0ZWFkIG9mIHRoZSBtaW5pbXVtIG51bWJlciBv
ZiBieXRlcyBuZWVlZGVkLgotICAgIGNvbnN0IHNpemVfdCBudW1CeXRlcyA9IDQwOTYqNDsKLSAg
ICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBudW1CeXRlcywgTlVMTCwgR0xfU1RBVElD
X0RSQVcpOwotCi0gICAgLy8gQ29weSB0aGUgb3JpZ2luYWwgZGF0YSB0byB0aGUgYnVmZmVyCi0g
ICAgdWludDhfdCBzcmNCeXRlc1tudW1CeXRlc107Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBudW1CeXRlczsgKytpKQotICAgIHsKLSAgICAgICAgc3JjQnl0ZXNbaV0gPSBzdGF0aWNfY2Fz
dDx1aW50OF90PihpKTsKLSAgICB9Ci0KLSAgICB2b2lkICpkZXN0ID0gZ2xNYXBCdWZmZXJSYW5n
ZShHTF9BUlJBWV9CVUZGRVIsIDAsIG51bUJ5dGVzLCBHTF9NQVBfV1JJVEVfQklUIHwgR0xfTUFQ
X0lOVkFMSURBVEVfQlVGRkVSX0JJVCk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQot
ICAgIG1lbWNweShkZXN0LCBzcmNCeXRlcywgbnVtQnl0ZXMpOwotICAgIGdsVW5tYXBCdWZmZXIo
R0xfQVJSQVlfQlVGRkVSKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8g
Q3JlYXRlIGEgbmV3IGJ1ZmZlciBhbmQgY29weSB0aGUgZGF0YSB0byBpdAotICAgIEdMdWludCBy
ZWFkQnVmZmVyOwotICAgIGdsR2VuQnVmZmVycygxLCAmcmVhZEJ1ZmZlcik7Ci0gICAgZ2xCaW5k
QnVmZmVyKEdMX0NPUFlfV1JJVEVfQlVGRkVSLCByZWFkQnVmZmVyKTsKLSAgICB1aW50OF90IHpl
cm9zW251bUJ5dGVzXTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUJ5dGVzOyArK2kp
Ci0gICAgewotICAgICAgICB6ZXJvc1tpXSA9IDA7Ci0gICAgfQotICAgIGdsQnVmZmVyRGF0YShH
TF9DT1BZX1dSSVRFX0JVRkZFUiwgbnVtQnl0ZXMsIHplcm9zLCBHTF9TVEFUSUNfRFJBVyk7Ci0g
ICAgZ2xDb3B5QnVmZmVyU3ViRGF0YShHTF9BUlJBWV9CVUZGRVIsIEdMX0NPUFlfV1JJVEVfQlVG
RkVSLCAwLCAwLCBudW1CeXRlcyk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAg
IC8vIFJlYWQgYmFjayB0aGUgZGF0YSBhbmQgY29tcGFyZSBpdCB0byB0aGUgb3JpZ2luYWwKLSAg
ICB1aW50OF90ICpkYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oZ2xNYXBCdWZmZXJS
YW5nZShHTF9DT1BZX1dSSVRFX0JVRkZFUiwgMCwgbnVtQnl0ZXMsIEdMX01BUF9SRUFEX0JJVCkp
OwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG51bUJ5dGVzOyArK2kpCi0gICAgewotICAgICAgICBFWFBFQ1RfRVEoc3JjQnl0ZXNbaV0s
IGRhdGFbaV0pOwotICAgIH0KLSAgICBnbFVubWFwQnVmZmVyKEdMX0NPUFlfV1JJVEVfQlVGRkVS
KTsKLQotICAgIGdsRGVsZXRlQnVmZmVycygxLCAmcmVhZEJ1ZmZlcik7Ci0KLSAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3Vy
YXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRo
ZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1Qo
QnVmZmVyRGF0YVRlc3QsIEVTMl9EM0Q5KCksIEVTMl9EM0QxMSgpLCBFUzJfT1BFTkdMKCksIEVT
Ml9PUEVOR0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoQnVmZmVyRGF0YVRlc3RFUzMs
IEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKLUFOR0xFX0lOU1RB
TlRJQVRFX1RFU1QoSW5kZXhlZEJ1ZmZlckNvcHlUZXN0LCBFUzNfRDNEMTEoKSwgRVMzX09QRU5H
TCgpLCBFUzNfT1BFTkdMRVMoKSk7Ci0KLSNpZmRlZiBfV0lONjQKLQotLy8gVGVzdCBhIGJ1ZyB3
aGVyZSBhbiBpbnRlZ2VyIG92ZXJmbG93IGJ1ZyBjb3VsZCB0cmlnZ2VyIGEgY3Jhc2ggaW4gRDNE
LgotLy8gVGhlIHRlc3QgdXNlcyA4IGJ1ZmZlcnMgd2l0aCBhIHNpemUganVzdCB1bmRlciAweDIw
MDAwMDAgdG8gb3ZlcmZsb3cgbWF4IHVpbnQKLS8vICh3aXRoIHRoZSBpbnRlcm5hbCBEM0Qgcm91
bmRpbmcgdG8gMTYtYnl0ZSB2YWx1ZXMpIGFuZCB0cmlnZ2VyIHRoZSBidWcuCi0vLyBPbmx5IGhh
bmRsZSB0aGlzIGJ1ZyBvbiA2NC1iaXQgV2luZG93cyBmb3Igbm93LiBIYXJkZXIgdG8gcmVwcm8g
b24gMzItYml0LgotY2xhc3MgQnVmZmVyRGF0YU92ZXJmbG93VGVzdCA6IHB1YmxpYyBBTkdMRVRl
c3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIEJ1ZmZlckRhdGFPdmVyZmxvd1Rlc3QoKQotICAgICAg
ICA6IG1Qcm9ncmFtKDApCi0gICAgewotICAgIH0KLQotICAgIH5CdWZmZXJEYXRhT3ZlcmZsb3dU
ZXN0KCkKLSAgICB7Ci0gICAgICAgIGlmICghbUJ1ZmZlcnMuZW1wdHkoKSkKLSAgICAgICAgewot
ICAgICAgICAgICAgZ2xEZWxldGVCdWZmZXJzKHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1CdWZmZXJz
LnNpemUoKSksICZtQnVmZmVyc1swXSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1Qcm9ncmFt
ICE9IDB1KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0p
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBtQnVmZmVyczsK
LSAgICBHTHVpbnQgbVByb2dyYW07Ci19OwotCi0vLyBTZWUgZGVzY3JpcHRpb24gYWJvdmUuCi1U
RVNUX1AoQnVmZmVyRGF0YU92ZXJmbG93VGVzdCwgVmVydGV4QnVmZmVySW50ZWdlck92ZXJmbG93
KQotewotICAgIC8vIFRoZXNlIHZhbHVlcyBhcmUgc3BlY2lhbCwgdG8gdHJpZ2dlciB0aGUgcm91
bmRpbmcgYnVnLgotICAgIHVuc2lnbmVkIGludCBudW1JdGVtcyA9IDB4N0ZGRkZGRTsKLSAgICBH
THNpemVpIGJ1ZmZlckNudCA9IDg7Ci0KLSAgICBtQnVmZmVycy5yZXNpemUoYnVmZmVyQ250KTsK
LQotICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHZlcnRleFNoYWRlclN0cjsKLQotICAgIGZvciAoR0xz
aXplaSBidWZmZXJJbmRleCA9IDA7IGJ1ZmZlckluZGV4IDwgYnVmZmVyQ250OyArK2J1ZmZlcklu
ZGV4KQotICAgIHsKLSAgICAgICAgdmVydGV4U2hhZGVyU3RyIDw8ICJhdHRyaWJ1dGUgZmxvYXQg
YXR0cmliIiA8PCBidWZmZXJJbmRleCA8PCAiO1xuIjsKLSAgICB9Ci0KLSAgICB2ZXJ0ZXhTaGFk
ZXJTdHIgPDwgImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgICAgICAg
ICAgICAidmFyeWluZyBmbG9hdCB2X2F0dHJpYjtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
InZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIiAgZ2xfUG9zaXRpb24g
PSB2ZWM0KHBvc2l0aW9uLCAwLCAxKTtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIiAgdl9h
dHRyaWIgPSAwLjA7XG4iOwotCi0gICAgZm9yIChHTHNpemVpIGJ1ZmZlckluZGV4ID0gMDsgYnVm
ZmVySW5kZXggPCBidWZmZXJDbnQ7ICsrYnVmZmVySW5kZXgpCi0gICAgewotICAgICAgICB2ZXJ0
ZXhTaGFkZXJTdHIgPDwgInZfYXR0cmliICs9IGF0dHJpYiIgPDwgYnVmZmVySW5kZXggPDwgIjtc
biI7Ci0gICAgfQotCi0gICAgdmVydGV4U2hhZGVyU3RyIDw8ICJ9IjsKLQotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRlciA9Ci0gICAgICAgICJ2YXJ5aW5nIGhpZ2hwIGZsb2F0
IHZfYXR0cmliO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBnbF9G
cmFnQ29sb3IgPSB2ZWM0KHZfYXR0cmliLCAwLCAwLCAxKTtcbiIKLSAgICAgICAgIn0iOwotCi0g
ICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTdHIuc3RyKCksIGZyYWdt
ZW50U2hhZGVyKTsKLSAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKLSAgICBnbFVzZVByb2dy
YW0obVByb2dyYW0pOwotCi0gICAgZ2xHZW5CdWZmZXJzKGJ1ZmZlckNudCwgJm1CdWZmZXJzWzBd
KTsKLQotICAgIHN0ZDo6dmVjdG9yPEdMZmxvYXQ+IGRhdGEobnVtSXRlbXMsIDEuMGYpOwotCi0g
ICAgZm9yIChHTHNpemVpIGJ1ZmZlckluZGV4ID0gMDsgYnVmZmVySW5kZXggPCBidWZmZXJDbnQ7
ICsrYnVmZmVySW5kZXgpCi0gICAgewotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVG
RkVSLCBtQnVmZmVyc1tidWZmZXJJbmRleF0pOwotICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfQVJS
QVlfQlVGRkVSLCBudW1JdGVtcyAqIHNpemVvZihmbG9hdCksICZkYXRhWzBdLCBHTF9EWU5BTUlD
X0RSQVcpOwotCi0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGF0dHJpYk5hbWVTdHI7Ci0gICAg
ICAgIGF0dHJpYk5hbWVTdHIgPDwgImF0dHJpYiIgPDwgYnVmZmVySW5kZXg7Ci0KLSAgICAgICAg
R0xpbnQgYXR0cmliTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCBhdHRy
aWJOYW1lU3RyLnN0cigpLmNfc3RyKCkpOwotICAgICAgICBBU1NFUlRfTkUoLTEsIGF0dHJpYkxv
Y2F0aW9uKTsKLQotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoYXR0cmliTG9jYXRpb24s
IDEsIEdMX0ZMT0FULCBHTF9GQUxTRSwgNCwgbnVsbHB0cik7Ci0gICAgICAgIGdsRW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkoYXR0cmliTG9jYXRpb24pOwotICAgIH0KLQotICAgIEdMaW50IHBvc2l0
aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAicG9zaXRpb24iKTsK
LSAgICBBU1NFUlRfTkUoLTEsIHBvc2l0aW9uTG9jYXRpb24pOwotICAgIGdsRGlzYWJsZVZlcnRl
eEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOwotICAgIGdsVmVydGV4QXR0cmliMmYocG9z
aXRpb25Mb2NhdGlvbiwgMS4wZiwgMS4wZik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
LSAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCBudW1JdGVtcyk7Ci0gICAgRVhQRUNU
X0dMX0VSUk9SKEdMX09VVF9PRl9NRU1PUlkpOwotfQotCi1BTkdMRV9JTlNUQU5USUFURV9URVNU
KEJ1ZmZlckRhdGFPdmVyZmxvd1Rlc3QsIEVTM19EM0QxMSgpKTsKLQotI2VuZGlmICAvLyBfV0lO
NjQKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9CdWlsdGluVmFyaWFibGVUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9nbF90ZXN0cy9CdWlsdGluVmFyaWFibGVUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggY2JiMzk5ZGQ2ZTguLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9CdWlsdGluVmFyaWFibGVUZXN0LmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDIwOSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gQnVpbHRpblZhcmlhYmxl
VGVzdDoKLS8vICAgVGVzdHMgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSBidWlsdGluIEdMU0wgdmFy
aWFibGVzLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLXVzaW5n
IG5hbWVzcGFjZSBhbmdsZTsKLQotY2xhc3MgQnVpbHRpblZhcmlhYmxlVmVydGV4SWRUZXN0IDog
cHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgQnVpbHRpblZhcmlhYmxlVmVy
dGV4SWRUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDY0KTsKLSAgICAgICAg
c2V0V2luZG93SGVpZ2h0KDY0KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAg
ICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsK
LSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdEZXB0aEJp
dHMoMjQpOwotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291
cmNlID0KLSAgICAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgICAgICJwcmVj
aXNpb24gaGlnaHAgZmxvYXQ7XG4iCi0gICAgICAgICAgICAiaW4gdmVjNCBwb3NpdGlvbjtcbiIK
LSAgICAgICAgICAgICJpbiBpbnQgZXhwZWN0ZWRJRDsiCi0gICAgICAgICAgICAib3V0IHZlYzQg
Y29sb3I7XG4iCi0gICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKClcbiIK
LSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRp
b247XG4iCi0gICAgICAgICAgICAiICAgIGNvbG9yID0gdmVjNChnbF9WZXJ0ZXhJRCAhPSBleHBl
Y3RlZElELCBnbF9WZXJ0ZXhJRCA9PSBleHBlY3RlZElELCAwLjAsIDEuMCk7IgotICAgICAgICAg
ICAgIn1cbiI7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnNTb3VyY2UgPQotICAgICAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBm
bG9hdDtcbiIKLSAgICAgICAgICAgICJpbiB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAgICAgIm91
dCB2ZWM0IGZyYWdDb2xvcjtcbiIKLSAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAg
ICAgICAgIntcbiIKLSAgICAgICAgICAgICIgICAgZnJhZ0NvbG9yID0gY29sb3I7XG4iCi0gICAg
ICAgICAgICAifVxuIjsKLQotICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzU291
cmNlLCBmc1NvdXJjZSk7Ci0gICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotCi0gICAg
ICAgIG1Qb3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInBv
c2l0aW9uIik7Ci0gICAgICAgIEFTU0VSVF9ORSgtMSwgbVBvc2l0aW9uTG9jYXRpb24pOwotICAg
ICAgICBtRXhwZWN0ZWRJZExvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwg
ImV4cGVjdGVkSUQiKTsKLSAgICAgICAgQVNTRVJUX05FKC0xLCBtRXhwZWN0ZWRJZExvY2F0aW9u
KTsKLQotICAgICAgICBzdGF0aWMgY29uc3QgZmxvYXQgcG9zaXRpb25zW10gPQotICAgICAgICB7
Ci0gICAgICAgICAgICAgMC41LCAgMC41LAotICAgICAgICAgICAgLTAuNSwgIDAuNSwKLSAgICAg
ICAgICAgICAwLjUsIC0wLjUsCi0gICAgICAgICAgICAtMC41LCAtMC41Ci0gICAgICAgIH07Ci0g
ICAgICAgIGdsR2VuQnVmZmVycygxLCAmbVBvc2l0aW9uQnVmZmVyKTsKLSAgICAgICAgZ2xCaW5k
QnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVBvc2l0aW9uQnVmZmVyKTsKLSAgICAgICAgZ2xCdWZm
ZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKHBvc2l0aW9ucyksIHBvc2l0aW9ucywgR0xf
U1RBVElDX0RSQVcpOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQot
ICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVCdWZm
ZXJzKDEsICZtUG9zaXRpb25CdWZmZXIpOwotICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1F
eHBlY3RlZElkQnVmZmVyKTsKLSAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtSW5kZXhCdWZm
ZXIpOwotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotCi0gICAgICAgIEFOR0xF
VGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICAvLyBSZW5kZXJzIGEgcHJpbWl0aXZlIHVz
aW5nIHRoZSBzcGVjaWZpZWQgbW9kZSwgZWFjaCB2ZXJ0ZXggY29sb3Igd2lsbAotICAgIC8vIGJl
IGdyZWVuIGlmIGdsX1ZlcnRleElEIGlzIGNvcnJlY3QsIHJlZCBvdGhlcndpc2UuCi0gICAgdm9p
ZCBydW5UZXN0KEdMdWludCBkcmF3TW9kZSwgY29uc3Qgc3RkOjp2ZWN0b3I8R0xpbnQ+ICZpbmRp
Y2VzLCBpbnQgY291bnQpCi0gICAgewotICAgICAgICBnbENsZWFyQ29sb3IoMC4wLCAwLjAsIDAu
MCwgMS4wKTsKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLQotICAgICAg
ICBnbEdlbkJ1ZmZlcnMoMSwgJm1JbmRleEJ1ZmZlcik7Ci0gICAgICAgIGdsQmluZEJ1ZmZlcihH
TF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgbUluZGV4QnVmZmVyKTsKLSAgICAgICAgZ2xCdWZmZXJE
YXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBzaXplb2YoR0xpbnQpICogaW5kaWNlcy5zaXpl
KCksIGluZGljZXMuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgR0xfU1RBVElDX0RSQVcp
OwotCi0gICAgICAgIHN0ZDo6dmVjdG9yPEdMaW50PiBleHBlY3RlZElkcyA9IG1ha2VSYW5nZShj
b3VudCk7Ci0KLSAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtRXhwZWN0ZWRJZEJ1ZmZlcik7Ci0g
ICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1FeHBlY3RlZElkQnVmZmVyKTsK
LSAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKEdMaW50KSAqIGV4
cGVjdGVkSWRzLnNpemUoKSwgZXhwZWN0ZWRJZHMuZGF0YSgpLAotICAgICAgICAgICAgICAgICAg
ICAgR0xfU1RBVElDX0RSQVcpOwotCi0gICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZG
RVIsIG1Qb3NpdGlvbkJ1ZmZlcik7Ci0gICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtUG9z
aXRpb25Mb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAwKTsKLSAgICAgICAgZ2xF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtUG9zaXRpb25Mb2NhdGlvbik7Ci0KLSAgICAgICAgZ2xC
aW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUV4cGVjdGVkSWRCdWZmZXIpOwotICAgICAgICBn
bFZlcnRleEF0dHJpYklQb2ludGVyKG1FeHBlY3RlZElkTG9jYXRpb24sIDEsIEdMX0lOVCwgMCwg
MCk7Ci0gICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobUV4cGVjdGVkSWRMb2NhdGlv
bik7Ci0KLSAgICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAgICAgZ2xCaW5kQnVm
ZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBtSW5kZXhCdWZmZXIpOwotICAgICAgICBnbERy
YXdFbGVtZW50cyhkcmF3TW9kZSwgY291bnQsIEdMX1VOU0lHTkVEX0lOVCwgMCk7Ci0KLSAgICAg
ICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzKGdldFdpbmRvd1dpZHRoKCkgKiBnZXRXaW5k
b3dIZWlnaHQoKSk7Ci0gICAgICAgIGdsUmVhZFBpeGVscygwLCAwLCBnZXRXaW5kb3dXaWR0aCgp
LCBnZXRXaW5kb3dIZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAg
ICAgICAgICAgICAgIHBpeGVscy5kYXRhKCkpOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotCi0gICAgICAgIGNvbnN0IEdMQ29sb3IgZ3JlZW4oMCwgMjU1LCAwLCAyNTUpOwotICAg
ICAgICBjb25zdCBHTENvbG9yIGJsYWNrKDAsIDAsIDAsIDI1NSk7Ci0KLSAgICAgICAgZm9yIChj
b25zdCBhdXRvICZwaXhlbCA6IHBpeGVscykKLSAgICAgICAgewotICAgICAgICAgICAgRVhQRUNU
X1RSVUUocGl4ZWwgPT0gZ3JlZW4gfHwgcGl4ZWwgPT0gYmxhY2spOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IG1ha2VSYW5nZShpbnQgbikgY29uc3QKLSAgICB7
Ci0gICAgICAgIHN0ZDo6dmVjdG9yPEdMaW50PiByZXN1bHQ7Ci0gICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbjsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQucHVzaF9iYWNr
KGkpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBH
THVpbnQgbVBvc2l0aW9uQnVmZmVyICAgPSAwOwotICAgIEdMdWludCBtRXhwZWN0ZWRJZEJ1ZmZl
ciA9IDA7Ci0gICAgR0x1aW50IG1JbmRleEJ1ZmZlciAgICAgID0gMDsKLQotICAgIEdMdWludCBt
UHJvZ3JhbSAgICAgICAgICAgPSAwOwotICAgIEdMaW50IG1Qb3NpdGlvbkxvY2F0aW9uICAgPSAt
MTsKLSAgICBHTGludCBtRXhwZWN0ZWRJZExvY2F0aW9uID0gLTE7Ci19OwotCi0vLyBUZXN0IGds
X1ZlcnRleElEIHdoZW4gcmVuZGVyaW5nIHBvaW50cwotVEVTVF9QKEJ1aWx0aW5WYXJpYWJsZVZl
cnRleElkVGVzdCwgUG9pbnRzKQotewotICAgIHJ1blRlc3QoR0xfUE9JTlRTLCBtYWtlUmFuZ2Uo
NCksIDQpOwotfQotCi0vLyBUZXN0IGdsX1ZlcnRleElEIHdoZW4gcmVuZGVyaW5nIGxpbmUgc3Ry
aXBzCi1URVNUX1AoQnVpbHRpblZhcmlhYmxlVmVydGV4SWRUZXN0LCBMaW5lU3RyaXApCi17Ci0g
ICAgcnVuVGVzdChHTF9MSU5FX1NUUklQLCBtYWtlUmFuZ2UoNCksIDQpOwotfQotCi0vLyBUZXN0
IGdsX1ZlcnRleElEIHdoZW4gcmVuZGVyaW5nIGxpbmUgbG9vcHMKLVRFU1RfUChCdWlsdGluVmFy
aWFibGVWZXJ0ZXhJZFRlc3QsIExpbmVMb29wKQotewotICAgIHJ1blRlc3QoR0xfTElORV9MT09Q
LCBtYWtlUmFuZ2UoNCksIDQpOwotfQotCi0vLyBUZXN0IGdsX1ZlcnRleElEIHdoZW4gcmVuZGVy
aW5nIGxpbmVzCi1URVNUX1AoQnVpbHRpblZhcmlhYmxlVmVydGV4SWRUZXN0LCBMaW5lcykKLXsK
LSAgICBydW5UZXN0KEdMX0xJTkVTLCBtYWtlUmFuZ2UoNCksIDQpOwotfQotCi0vLyBUZXN0IGds
X1ZlcnRleElEIHdoZW4gcmVuZGVyaW5nIHRyaWFuZ2xlIHN0cmlwcwotVEVTVF9QKEJ1aWx0aW5W
YXJpYWJsZVZlcnRleElkVGVzdCwgVHJpYW5nbGVTdHJpcCkKLXsKLSAgICBydW5UZXN0KEdMX1RS
SUFOR0xFX1NUUklQLCBtYWtlUmFuZ2UoNCksIDQpOwotfQotCi0vLyBUZXN0IGdsX1ZlcnRleElE
IHdoZW4gcmVuZGVyaW5nIHRyaWFuZ2xlIGZhbnMKLVRFU1RfUChCdWlsdGluVmFyaWFibGVWZXJ0
ZXhJZFRlc3QsIFRyaWFuZ2xlRmFuKQotewotICAgIHN0ZDo6dmVjdG9yPEdMaW50PiBpbmRpY2Vz
OwotICAgIGluZGljZXMucHVzaF9iYWNrKDApOwotICAgIGluZGljZXMucHVzaF9iYWNrKDEpOwot
ICAgIGluZGljZXMucHVzaF9iYWNrKDMpOwotICAgIGluZGljZXMucHVzaF9iYWNrKDIpOwotICAg
IHJ1blRlc3QoR0xfVFJJQU5HTEVfRkFOLCBpbmRpY2VzLCA0KTsKLX0KLQotLy8gVGVzdCBnbF9W
ZXJ0ZXhJRCB3aGVuIHJlbmRlcmluZyB0cmlhbmdsZXMKLVRFU1RfUChCdWlsdGluVmFyaWFibGVW
ZXJ0ZXhJZFRlc3QsIFRyaWFuZ2xlcykKLXsKLSAgICBzdGQ6OnZlY3RvcjxHTGludD4gaW5kaWNl
czsKLSAgICBpbmRpY2VzLnB1c2hfYmFjaygwKTsKLSAgICBpbmRpY2VzLnB1c2hfYmFjaygxKTsK
LSAgICBpbmRpY2VzLnB1c2hfYmFjaygyKTsKLSAgICBpbmRpY2VzLnB1c2hfYmFjaygxKTsKLSAg
ICBpbmRpY2VzLnB1c2hfYmFjaygyKTsKLSAgICBpbmRpY2VzLnB1c2hfYmFjaygzKTsKLSAgICBy
dW5UZXN0KEdMX1RSSUFOR0xFUywgaW5kaWNlcywgNik7Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNl
bGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xF
UyBtYWpvciB2ZXJzaW9uKSB0aGVzZQotLy8gdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0Lgot
QU5HTEVfSU5TVEFOVElBVEVfVEVTVChCdWlsdGluVmFyaWFibGVWZXJ0ZXhJZFRlc3QsIEVTM19E
M0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9DbGVhclRlc3QuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NsZWFyVGVzdC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3Y2UwNDFlNjI0Li4wMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ2xlYXJUZXN0LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDQ4MSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAi
dGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotI2luY2x1ZGUgInJhbmRvbV91dGlscy5oIgotI2lu
Y2x1ZGUgIlZlY3Rvci5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQot
ewotCi1WZWN0b3I0IFJhbmRvbVZlYzQoaW50IHNlZWQsIGZsb2F0IG1pblZhbHVlLCBmbG9hdCBt
YXhWYWx1ZSkKLXsKLSAgICBSTkcgcm5nKHNlZWQpOwotICAgIHNyYW5kKHNlZWQpOwotICAgIHJl
dHVybiBWZWN0b3I0KAotICAgICAgICBybmcucmFuZG9tRmxvYXRCZXR3ZWVuKG1pblZhbHVlLCBt
YXhWYWx1ZSksIHJuZy5yYW5kb21GbG9hdEJldHdlZW4obWluVmFsdWUsIG1heFZhbHVlKSwKLSAg
ICAgICAgcm5nLnJhbmRvbUZsb2F0QmV0d2VlbihtaW5WYWx1ZSwgbWF4VmFsdWUpLCBybmcucmFu
ZG9tRmxvYXRCZXR3ZWVuKG1pblZhbHVlLCBtYXhWYWx1ZSkpOwotfQotCi1HTENvbG9yIFZlYzRU
b0NvbG9yKGNvbnN0IFZlY3RvcjQgJnZlYykKLXsKLSAgICBHTENvbG9yIGNvbG9yOwotICAgIGNv
bG9yLlIgPSBzdGF0aWNfY2FzdDx1aW50OF90Pih2ZWMueCAqIDI1NS4wZik7Ci0gICAgY29sb3Iu
RyA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHZlYy55ICogMjU1LjBmKTsKLSAgICBjb2xvci5CID0g
c3RhdGljX2Nhc3Q8dWludDhfdD4odmVjLnogKiAyNTUuMGYpOwotICAgIGNvbG9yLkEgPSBzdGF0
aWNfY2FzdDx1aW50OF90Pih2ZWMudyAqIDI1NS4wZik7Ci0gICAgcmV0dXJuIGNvbG9yOwotfTsK
LQotY2xhc3MgQ2xlYXJUZXN0QmFzZSA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVk
OgotICAgIENsZWFyVGVzdEJhc2UoKSA6IG1Qcm9ncmFtKDApCi0gICAgewotICAgICAgICBzZXRX
aW5kb3dXaWR0aCgxMjgpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKLSAgICAgICAg
c2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAg
ICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgp
OwotICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOwotICAgIH0KLQotICAgIHZvaWQgU2V0
VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAg
ICAgIG1GQk9zLnJlc2l6ZSgyLCAwKTsKLSAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMiwgbUZC
T3MuZGF0YSgpKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3Jh
bShtUHJvZ3JhbSk7Ci0KLSAgICAgICAgaWYgKCFtRkJPcy5lbXB0eSgpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycyhzdGF0aWNfY2FzdDxHTHNpemVpPihtRkJP
cy5zaXplKCkpLCBtRkJPcy5kYXRhKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFtVGV4
dHVyZXMuZW1wdHkoKSkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xEZWxldGVUZXh0dXJlcyhz
dGF0aWNfY2FzdDxHTHNpemVpPihtVGV4dHVyZXMuc2l6ZSgpKSwgbVRleHR1cmVzLmRhdGEoKSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0g
ICAgdm9pZCBzZXR1cERlZmF1bHRQcm9ncmFtKCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAg
ICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwotICAgICAgICAgICAgYXR0cmlidXRlIHZl
YzQgcG9zaXRpb247Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJj
ZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hw
IGZsb2F0OwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFt
KHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgICAgICBBU1NF
UlRfTkUoMHUsIG1Qcm9ncmFtKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVByb2dyYW07Ci0gICAg
c3RkOjp2ZWN0b3I8R0x1aW50PiBtRkJPczsKLSAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1UZXh0
dXJlczsKLX07Ci0KLWNsYXNzIENsZWFyVGVzdCA6IHB1YmxpYyBDbGVhclRlc3RCYXNlIHt9Owot
Y2xhc3MgQ2xlYXJUZXN0RVMzIDogcHVibGljIENsZWFyVGVzdEJhc2Uge307Ci0KLS8vIFRlc3Qg
Y2xlYXJpbmcgdGhlIGRlZmF1bHQgZnJhbWVidWZmZXIKLVRFU1RfUChDbGVhclRlc3QsIERlZmF1
bHRGcmFtZWJ1ZmZlcikKLXsKLSAgICBnbENsZWFyQ29sb3IoMC4yNWYsIDAuNWYsIDAuNWYsIDAu
NWYpOwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgRVhQRUNUX1BJWEVM
X05FQVIoMCwgMCwgNjQsIDEyOCwgMTI4LCAxMjgsIDEuMCk7Ci19Ci0KLS8vIFRlc3QgY2xlYXJp
bmcgYSBSR0JBOCBGcmFtZWJ1ZmZlcgotVEVTVF9QKENsZWFyVGVzdCwgUkdCQThGcmFtZWJ1ZmZl
cikKLXsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCT3NbMF0pOwot
Ci0gICAgR0x1aW50IHRleHR1cmU7Ci0gICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZSk7Ci0K
LSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOwotICAgIGdsVGV4SW1h
Z2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5k
b3dIZWlnaHQoKSwgMCwgR0xfUkdCQSwKLSAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllU
RSwgbnVsbHB0cik7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwg
R0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleHR1cmUsIDApOwotCi0gICAg
Z2xDbGVhckNvbG9yKDAuNWYsIDAuNWYsIDAuNWYsIDAuNWYpOwotICAgIGdsQ2xlYXIoR0xfQ09M
T1JfQlVGRkVSX0JJVCk7Ci0KLSAgICBFWFBFQ1RfUElYRUxfTkVBUigwLCAwLCAxMjgsIDEyOCwg
MTI4LCAxMjgsIDEuMCk7Ci19Ci0KLVRFU1RfUChDbGVhclRlc3QsIENsZWFySXNzdWUpCi17Ci0g
ICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGlzIGJyb2tlbiBvbiBJ
bnRlbCBPcGVuR0wKLSAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9
PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCi0gICAgewotICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBnbEVuYWJsZShHTF9ERVBUSF9URVNUKTsK
LSAgICBnbERlcHRoRnVuYyhHTF9MRVFVQUwpOwotCi0gICAgZ2xDbGVhckNvbG9yKDAuMCwgMS4w
LCAwLjAsIDEuMCk7Ci0gICAgZ2xDbGVhckRlcHRoZigwLjApOwotICAgIGdsQ2xlYXIoR0xfQ09M
T1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQpOwotCi0gICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCT3Nb
MF0pOwotCi0gICAgR0x1aW50IHJibzsKLSAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJnJibyk7
Ci0gICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgcmJvKTsKLSAgICBnbFJl
bmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9SR0I1NjUsIDE2LCAxNik7Ci0K
LSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9SRU5ERVJCVUZGRVIs
IHJibyk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQ2xlYXJDb2xvcigx
LjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyRGVwdGhmKDEuMGYpOwotICAgIGds
Q2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQpOwotCi0gICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiwgMCk7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7Ci0KLSAgICBz
ZXR1cERlZmF1bHRQcm9ncmFtKCk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIs
IDAuNWYpOwotCi0gICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDI1NSwgMCwgMjU1KTsKLX0K
LQotLy8gUmVxdWlyZXMgRVMzCi0vLyBUaGlzIHRlc3RzIGEgYnVnIHdoZXJlIGluIGEgbWFza2Vk
IGNsZWFyIHdoZW4gY2FsbGluZyAiQ2xlYXJCdWZmZXIiLCB3ZSB3b3VsZAotLy8gbWlzdGFrZW5s
eSBjbGVhciBldmVyeSBjaGFubmVsIChpbmNsdWRpbmcgdGhlIG1hc2tlZC1vdXQgb25lcykKLVRF
U1RfUChDbGVhclRlc3RFUzMsIE1hc2tlZENsZWFyQnVmZmVyQnVnKQotewotICAgIHVuc2lnbmVk
IGNoYXIgcGl4ZWxEYXRhW10gPSB7IDI1NSwgMjU1LCAyNTUsIDI1NSB9OwotCi0gICAgZ2xCaW5k
RnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GQk9zWzBdKTsKLQotICAgIEdMdWludCB0ZXh0
dXJlc1syXTsKLSAgICBnbEdlblRleHR1cmVzKDIsICZ0ZXh0dXJlc1swXSk7Ci0KLSAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmVzWzBdKTsKLSAgICBnbFRleEltYWdlMkQo
R0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgcGl4ZWxEYXRhKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVG
RkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZXNbMF0sIDAp
OwotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1sxXSk7Ci0gICAg
Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsRGF0YSk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUy
RChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDEsIEdMX1RFWFRVUkVfMkQsIHRl
eHR1cmVzWzFdLCAwKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9Q
SVhFTF9FUSgwLCAwLCAyNTUsIDI1NSwgMjU1LCAyNTUpOwotCi0gICAgZmxvYXQgY2xlYXJWYWx1
ZVtdID0geyAwLCAwLjVmLCAwLjVmLCAxLjBmIH07Ci0gICAgR0xlbnVtIGRyYXdCdWZmZXJzW10g
PSB7IEdMX05PTkUsIEdMX0NPTE9SX0FUVEFDSE1FTlQxIH07Ci0gICAgZ2xEcmF3QnVmZmVycygy
LCBkcmF3QnVmZmVycyk7Ci0gICAgZ2xDb2xvck1hc2soR0xfVFJVRSwgR0xfVFJVRSwgR0xfRkFM
U0UsIEdMX1RSVUUpOwotICAgIGdsQ2xlYXJCdWZmZXJmdihHTF9DT0xPUiwgMSwgY2xlYXJWYWx1
ZSk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMCwg
MCwgMjU1LCAyNTUsIDI1NSwgMjU1KTsKLQotICAgIGdsUmVhZEJ1ZmZlcihHTF9DT0xPUl9BVFRB
Q0hNRU5UMSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBFWFBFQ1RfUElYRUxf
TkVBUigwLCAwLCAwLCAxMjcsIDI1NSwgMjU1LCAxKTsKLQotICAgIGdsRGVsZXRlVGV4dHVyZXMo
MiwgdGV4dHVyZXMpOwotfQotCi1URVNUX1AoQ2xlYXJUZXN0RVMzLCBCYWRGQk9TZXJpYWxCdWcp
Ci17Ci0gICAgLy8gRmlyc3QgbWFrZSBhIHNpbXBsZSBmcmFtZWJ1ZmZlciwgYW5kIGNsZWFyIGl0
IHRvIGdyZWVuCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GQk9zWzBd
KTsKLQotICAgIEdMdWludCB0ZXh0dXJlc1syXTsKLSAgICBnbEdlblRleHR1cmVzKDIsICZ0ZXh0
dXJlc1swXSk7Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmVzWzBd
KTsKLSAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOCwgZ2V0V2lu
ZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJl
MkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0
ZXh0dXJlc1swXSwgMCk7Ci0KLSAgICBHTGVudW0gZHJhd0J1ZmZlcnNbXSA9IHsgR0xfQ09MT1Jf
QVRUQUNITUVOVDAgfTsKLSAgICBnbERyYXdCdWZmZXJzKDEsIGRyYXdCdWZmZXJzKTsKLQotICAg
IGZsb2F0IGNsZWFyVmFsdWVzMVtdID0geyAwLjBmLCAxLjBmLCAwLjBmLCAxLjBmIH07Ci0gICAg
Z2xDbGVhckJ1ZmZlcmZ2KEdMX0NPTE9SLCAwLCBjbGVhclZhbHVlczEpOwotCi0gICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDI1NSwgMCwgMjU1
KTsKLQotICAgIC8vIE5leHQgbWFrZSBhIHNlY29uZCBmcmFtZWJ1ZmZlciwgYW5kIGRyYXcgaXQg
dG8gcmVkCi0gICAgLy8gKFRyaWdnZXJzIGJhZCBhcHBsaWVkIHJlbmRlciB0YXJnZXQgc2VyaWFs
KQotICAgIEdMdWludCBmYm8yOwotICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZmYm8yKTsKLSAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCBmYm8yKTsKLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVy
ZXNbMV0pOwotICAgIGdsVGV4U3RvcmFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4LCBn
ZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRl
eHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVf
MkQsIHRleHR1cmVzWzFdLCAwKTsKLQotICAgIGdsRHJhd0J1ZmZlcnMoMSwgZHJhd0J1ZmZlcnMp
OwotCi0gICAgc2V0dXBEZWZhdWx0UHJvZ3JhbSgpOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAi
cG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVD
VF9QSVhFTF9FUSgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7Ci0KLSAgICAvLyBDaGVjayB0aGF0IHRo
ZSBmaXJzdCBmcmFtZWJ1ZmZlciBpcyBzdGlsbCBncmVlbi4KLSAgICBnbEJpbmRGcmFtZWJ1ZmZl
cihHTF9GUkFNRUJVRkZFUiwgbUZCT3NbMF0pOwotICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAw
LCAyNTUsIDAsIDI1NSk7Ci0KLSAgICBnbERlbGV0ZVRleHR1cmVzKDIsIHRleHR1cmVzKTsKLSAg
ICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZmJvMik7Ci19Ci0KLS8vIFRlc3QgdGhhdCBTUkdC
IGZyYW1lYnVmZmVycyBjbGVhciB0byB0aGUgbGluZWFyaXplZCBjbGVhciBjb2xvcgotVEVTVF9Q
KENsZWFyVGVzdEVTMywgU1JHQkNsZWFyKQotewotICAgIC8vIFRPRE8oam1hZGlsbCk6IGZpZ3Vy
ZSBvdXQgd2h5IHRoaXMgZmFpbHMKLSAgICBpZiAoSXNJbnRlbCgpICYmIEdldFBhcmFtKCkgPT0g
RVMzX09QRU5HTCgpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQg
b24gSW50ZWwgZHVlIHRvIGZhaWx1cmVzLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgLy8gRmlyc3QgbWFrZSBhIHNpbXBsZSBmcmFtZWJ1ZmZlciwgYW5kIGNs
ZWFyIGl0Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GQk9zWzBdKTsK
LQotICAgIEdMdWludCB0ZXh0dXJlOwotICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUpOwot
Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKLSAgICBnbFRleFN0
b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9TUkdCOF9BTFBIQTgsIGdldFdpbmRvd1dpZHRo
KCksIGdldFdpbmRvd0hlaWdodCgpKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZS
QU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSwg
MCk7Ci0KLSAgICBnbENsZWFyQ29sb3IoMC41ZiwgMC41ZiwgMC41ZiwgMC41Zik7Ci0gICAgZ2xD
bGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLQotICAgIEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAs
IDE4OCwgMTg4LCAxODgsIDEyOCwgMS4wKTsKLX0KLQotLy8gVGVzdCB0aGF0IGZyYW1lYnVmZmVy
cyB3aXRoIG1peGVkIFNSR0IvTGluZWFyIGF0dGFjaG1lbnRzIGNsZWFyIHRvIHRoZSBjb3JyZWN0
IGNvbG9yIGZvciBlYWNoCi0vLyBhdHRhY2htZW50Ci1URVNUX1AoQ2xlYXJUZXN0RVMzLCBNaXhl
ZFNSR0JDbGVhcikKLXsKLSAgICAvLyBUT0RPKGN3YWxsZXopIGZpZ3VyZSBvdXQgd2h5IGl0IGlz
IGJyb2tlbiBvbiBJbnRlbCBvbiBNYWMKLSNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FQUExF
KQotICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIG9uIE1hYy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0gICAgLy8gVE9ETyhqbWFkaWxsKTogZmlndXJlIG91
dCB3aHkgdGhpcyBmYWlscwotICAgIGlmIChJc0ludGVsKCkgJiYgR2V0UGFyYW0oKSA9PSBFUzNf
T1BFTkdMKCkpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJ
bnRlbCBkdWUgdG8gZmFpbHVyZXMuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCT3NbMF0pOwot
Ci0gICAgR0x1aW50IHRleHR1cmVzWzJdOwotICAgIGdsR2VuVGV4dHVyZXMoMiwgJnRleHR1cmVz
WzBdKTsKLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZXNbMF0pOwot
ICAgIGdsVGV4U3RvcmFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1NSR0I4X0FMUEhBOCwgZ2V0
V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0
dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJE
LCB0ZXh0dXJlc1swXSwgMCk7Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRl
eHR1cmVzWzFdKTsKLSAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JB
OCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgIGdsRnJhbWVidWZm
ZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQxLCBHTF9URVhU
VVJFXzJELCB0ZXh0dXJlc1sxXSwgMCk7Ci0KLSAgICBHTGVudW0gZHJhd0J1ZmZlcnNbXSA9IHtH
TF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfQ09MT1JfQVRUQUNITUVOVDF9OwotICAgIGdsRHJhd0J1
ZmZlcnMoMiwgZHJhd0J1ZmZlcnMpOwotCi0gICAgLy8gQ2xlYXIgYm90aCB0ZXh0dXJlcwotICAg
IGdsQ2xlYXJDb2xvcigwLjVmLCAwLjVmLCAwLjVmLCAwLjVmKTsKLSAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQpOwotCi0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJV
RkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIDAsIDApOwotICAgIGds
RnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQx
LCBHTF9URVhUVVJFXzJELCAwLCAwKTsKLQotICAgIC8vIENoZWNrIHZhbHVlIG9mIHRleHR1cmUw
Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRU
QUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleHR1cmVzWzBdLCAwKTsKLSAgICBFWFBFQ1RfUElY
RUxfTkVBUigwLCAwLCAxODgsIDE4OCwgMTg4LCAxMjgsIDEuMCk7Ci0KLSAgICAvLyBDaGVjayB2
YWx1ZSBvZiB0ZXh0dXJlMQotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZG
RVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXh0dXJlc1sxXSwgMCk7
Ci0gICAgRVhQRUNUX1BJWEVMX05FQVIoMCwgMCwgMTI4LCAxMjgsIDEyOCwgMTI4LCAxLjApOwot
fQotCi0vLyBUaGlzIHRlc3QgY292ZXJzIGEgRDNEMTEgYnVnIHdoZXJlIGNhbGxpbmcgQ2xlYXJS
ZW5kZXJUYXJnZXRWaWV3IHNvbWV0aW1lcyB3b3VsZG4ndCBzeW5jCi0vLyBiZWZvcmUgYSBkcmF3
IGNhbGwuIFRoZSB0ZXN0IGRyYXdzIHNtYWxsIHF1YWRzIHRvIGEgbGFyZ2VyIEZCTyAodGhlIGRl
ZmF1bHQgYmFjayBidWZmZXIpLgotLy8gQmVmb3JlIGVhY2ggYmxpdCB0byB0aGUgYmFjayBidWZm
ZXIgaXQgY2xlYXJzIHRoZSBxdWFkIHRvIGEgY2VydGFpbiBjb2xvciB1c2luZwotLy8gQ2xlYXJC
dWZmZXJmdiB0byBnaXZlIGEgc29saWQgY29sb3IuIFRoZSBzeW5jIHByb2JsZW0gZ29lcyBhd2F5
IGlmIHdlIGluc2VydCBhIGNhbGwgdG8KLS8vIGZsdXNoIG9yIGZpbmlzaCBhZnRlciBDbGVhckJ1
ZmZlcmZ2IG9yIGVhY2ggZHJhdy4KLVRFU1RfUChDbGVhclRlc3RFUzMsIFJlcGVhdGVkQ2xlYXIp
Ci17Ci0gICAgaWYgKElzRDNEMTEoKSAmJiAoSXNOVklESUEoKSB8fCBJc0ludGVsKCkpKQotICAg
IHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gTnZpZGlhIGFuZCBJbnRl
bCBEM0QxMS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhTb3VyY2UgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCi0gICAgICAgICJpbiBoaWdocCB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAib3V0IGhp
Z2hwIHZlYzIgdl9jb29yZDtcbiIKLSAgICAgICAgInZvaWQgbWFpbih2b2lkKVxuIgotICAgICAg
ICAie1xuIgotICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMCwgMSk7
XG4iCi0gICAgICAgICIgICAgdmVjMiB0ZXhDb29yZCA9IChwb3NpdGlvbiAqIDAuNSkgKyAwLjU7
XG4iCi0gICAgICAgICIgICAgdl9jb29yZCA9IHRleENvb3JkO1xuIgotICAgICAgICAifVxuIjsK
LQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNvdXJjZSA9Ci0gICAgICAgICIjdmVy
c2lvbiAzMDAgZXNcbiIKLSAgICAgICAgImluIGhpZ2hwIHZlYzIgdl9jb29yZDtcbiIKLSAgICAg
ICAgIm91dCBoaWdocCB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQg
dGV4O1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAg
IiAgICBjb2xvciA9IHRleHR1cmUodGV4LCB2X2Nvb3JkKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0K
LSAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNvdXJjZSwgZnJhZ21lbnRTb3Vy
Y2UpOwotICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotCi0gICAgbVRleHR1cmVzLnJlc2l6
ZSgxLCAwKTsKLSAgICBnbEdlblRleHR1cmVzKDEsIG1UZXh0dXJlcy5kYXRhKCkpOwotCi0gICAg
R0xlbnVtIGZvcm1hdCAgICAgICAgICAgPSBHTF9SR0JBODsKLSAgICBjb25zdCBpbnQgbnVtUm93
c0NvbHMgICA9IDM7Ci0gICAgY29uc3QgaW50IGNlbGxTaXplICAgICAgPSAzMjsKLSAgICBjb25z
dCBpbnQgZmJvU2l6ZSAgICAgICA9IGNlbGxTaXplOwotICAgIGNvbnN0IGludCBiYWNrRkJPU2l6
ZSAgID0gY2VsbFNpemUgKiBudW1Sb3dzQ29sczsKLSAgICBjb25zdCBmbG9hdCBmbXRWYWx1ZU1p
biA9IDAuMGY7Ci0gICAgY29uc3QgZmxvYXQgZm10VmFsdWVNYXggPSAxLjBmOwotCi0gICAgZ2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOwotICAgIGdsVGV4U3RvcmFn
ZTJEKEdMX1RFWFRVUkVfMkQsIDEsIGZvcm1hdCwgZmJvU2l6ZSwgZmJvU2l6ZSk7Ci0gICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9U
T19FREdFKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9X
UkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwot
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJB
TUVCVUZGRVIsIG1GQk9zWzBdKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1F
QlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBd
LCAwKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIEFTU0VSVF9HTEVOVU1fRVEo
R0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFN
RUJVRkZFUikpOwotCi0gICAgLy8gbGFyZ2VyIGZibyBib3VuZCAtLSBjbGVhciB0byB0cmFuc3Bh
cmVudCBibGFjawotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgR0xpbnQgdW5pTG9j
ID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ0ZXgiKTsKLSAgICBBU1NFUlRfTkUo
LTEsIHVuaUxvYyk7Ci0gICAgZ2xVbmlmb3JtMWkodW5pTG9jLCAwKTsKLSAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7Ci0KLSAgICBHTGludCBwb3NpdGlvbkxv
Y2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInBvc2l0aW9uIik7Ci0gICAg
QVNTRVJUX05FKC0xLCBwb3NpdGlvbkxvY2F0aW9uKTsKLQotICAgIGdsVXNlUHJvZ3JhbShtUHJv
Z3JhbSk7Ci0KLSAgICBmb3IgKGludCBjZWxsWSA9IDA7IGNlbGxZIDwgbnVtUm93c0NvbHM7IGNl
bGxZKyspCi0gICAgewotICAgICAgICBmb3IgKGludCBjZWxsWCA9IDA7IGNlbGxYIDwgbnVtUm93
c0NvbHM7IGNlbGxYKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGludCBzZWVkICAgICAgICAg
ICAgPSBjZWxsWCArIGNlbGxZICogbnVtUm93c0NvbHM7Ci0gICAgICAgICAgICBjb25zdCBWZWN0
b3I0IGNvbG9yID0gUmFuZG9tVmVjNChzZWVkLCBmbXRWYWx1ZU1pbiwgZm10VmFsdWVNYXgpOwot
Ci0gICAgICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCT3NbMF0p
OwotICAgICAgICAgICAgZ2xDbGVhckJ1ZmZlcmZ2KEdMX0NPTE9SLCAwLCBjb2xvci5kYXRhKCkp
OwotCi0gICAgICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgMCk7Ci0K
LSAgICAgICAgICAgIC8vIE1ldGhvZCAxOiBTZXQgdmlld3BvcnQgYW5kIGRyYXcgZnVsbC12aWV3
cG9ydCBxdWFkCi0gICAgICAgICAgICBnbFZpZXdwb3J0KGNlbGxYICogY2VsbFNpemUsIGNlbGxZ
ICogY2VsbFNpemUsIGNlbGxTaXplLCBjZWxsU2l6ZSk7Ci0gICAgICAgICAgICBkcmF3UXVhZCht
UHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICAgICAgICAgIC8vIFVuY29tbWVudGlu
ZyB0aGUgZ2xGaW5pc2ggY2FsbCBzZWVtcyB0byBtYWtlIHRoZSB0ZXN0IHBhc3MuCi0gICAgICAg
ICAgICAvLyBnbEZpbmlzaCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RkOjp2ZWN0b3I8
R0xDb2xvcj4gcGl4ZWxEYXRhKGJhY2tGQk9TaXplICogYmFja0ZCT1NpemUpOwotICAgIGdsUmVh
ZFBpeGVscygwLCAwLCBiYWNrRkJPU2l6ZSwgYmFja0ZCT1NpemUsIEdMX1JHQkEsIEdMX1VOU0lH
TkVEX0JZVEUsIHBpeGVsRGF0YS5kYXRhKCkpOwotCi0gICAgZm9yIChpbnQgY2VsbFkgPSAwOyBj
ZWxsWSA8IG51bVJvd3NDb2xzOyBjZWxsWSsrKQotICAgIHsKLSAgICAgICAgZm9yIChpbnQgY2Vs
bFggPSAwOyBjZWxsWCA8IG51bVJvd3NDb2xzOyBjZWxsWCsrKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpbnQgc2VlZCAgICAgICAgICAgICAgPSBjZWxsWCArIGNlbGxZICogbnVtUm93c0NvbHM7
Ci0gICAgICAgICAgICBjb25zdCBWZWN0b3I0IGNvbG9yICAgPSBSYW5kb21WZWM0KHNlZWQsIGZt
dFZhbHVlTWluLCBmbXRWYWx1ZU1heCk7Ci0gICAgICAgICAgICBHTENvbG9yIGV4cGVjdGVkQ29s
b3IgPSBWZWM0VG9Db2xvcihjb2xvcik7Ci0KLSAgICAgICAgICAgIGludCB0ZXN0TiAgICAgICAg
ICAgPSBjZWxsWCAqIGNlbGxTaXplICsgY2VsbFkgKiBiYWNrRkJPU2l6ZSAqIGNlbGxTaXplICsg
YmFja0ZCT1NpemUgKyAxOwotICAgICAgICAgICAgR0xDb2xvciBhY3R1YWxDb2xvciA9IHBpeGVs
RGF0YVt0ZXN0Tl07Ci0gICAgICAgICAgICBFWFBFQ1RfTkVBUihleHBlY3RlZENvbG9yLlIsIGFj
dHVhbENvbG9yLlIsIDEpOwotICAgICAgICAgICAgRVhQRUNUX05FQVIoZXhwZWN0ZWRDb2xvci5H
LCBhY3R1YWxDb2xvci5HLCAxKTsKLSAgICAgICAgICAgIEVYUEVDVF9ORUFSKGV4cGVjdGVkQ29s
b3IuQiwgYWN0dWFsQ29sb3IuQiwgMSk7Ci0gICAgICAgICAgICBFWFBFQ1RfTkVBUihleHBlY3Rl
ZENvbG9yLkEsIGFjdHVhbENvbG9yLkEsIDEpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25m
aWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9u
KSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9U
RVNUKENsZWFyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVT
M19EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMy
X09QRU5HTEVTKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKLUFO
R0xFX0lOU1RBTlRJQVRFX1RFU1QoQ2xlYXJUZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09QRU5H
TCgpLCBFUzNfT1BFTkdMRVMoKSk7Ci0KLX0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db2xvck1h
c2tUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9D
b2xvck1hc2tUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDJhZDYzOGFh
OGEuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9n
bF90ZXN0cy9Db2xvck1hc2tUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBA
Ci0vLwotLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCi0vLwotCi0vLyBDb2xvck1hc2tUZXN0LmNwcDogVGVzdCBHTEVTIGZ1bmN0aW9uYWxp
dHkgcmVsYXRlZCB0byBjb2xvciBtYXNrcywgcGFydGljdWxhcmx5IGFuIEFNRCBEM0Q5Ci0vLyBk
cml2ZXIgYnVnLgotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotbmFtZXNw
YWNlIGFuZ2xlCi17Ci1jbGFzcyBDb2xvck1hc2tUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewot
ICBwcm90ZWN0ZWQ6Ci0gICAgQ29sb3JNYXNrVGVzdCgpIDogbVByb2dyYW0oMCkKLSAgICB7Ci0g
ICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgp
OwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJp
dHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdB
bHBoYUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7Ci0gICAgfQotCi0g
ICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVw
KCk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdnNTb3VyY2UgPQotICAgICAgICAgICAg
InByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAgICAgICJhdHRyaWJ1dGUgdmVjNCBw
b3NpdGlvbjtcbiIKLSAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICJ2b2lkIG1haW4oKVxu
IgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3Np
dGlvbjtcbiIKLSAgICAgICAgICAgICJ9XG4iOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IGZzU291cmNlID0KLSAgICAgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCi0gICAg
ICAgICAgICAidW5pZm9ybSB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAgICAgIlxuIgotICAgICAg
ICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAg
ICBnbF9GcmFnQ29sb3IgPSBjb2xvcjtcbiIKLSAgICAgICAgICAgICJ9XG4iOwotCi0gICAgICAg
IG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnNTb3VyY2UsIGZzU291cmNlKTsKLSAgICAgICAg
QVNTRVJUX05FKDB1LCBtUHJvZ3JhbSkgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsK
LQotICAgICAgICBtQ29sb3JVbmlmb3JtID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0s
ICJjb2xvciIpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsK
LSAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgICAgICBBTkdMRVRlc3Q6
OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgR0x1aW50IG1Qcm9ncmFtICAgICA9IDA7Ci0gICAg
R0xpbnQgbUNvbG9yVW5pZm9ybSA9IC0xOwotfTsKLQotLy8gU29tZSBBVEkgY2FyZHMgaGF2ZSBh
IGJ1ZyB3aGVyZSBhIGRyYXcgd2l0aCBhIHplcm8gY29sb3Igd3JpdGUgbWFzayBjYW4gY2F1c2Ug
bGF0ZXIgZHJhd3MgdG8gaGF2ZQotLy8gaW5jb3JyZWN0IHJlc3VsdHMuIFRlc3QgdG8gbWFrZSBz
dXJlIHRoaXMgYnVnIGlzIG5vdCBleHBvc2VkLgotVEVTVF9QKENvbG9yTWFza1Rlc3QsIEFNRFpl
cm9Db2xvck1hc2tCdWcpCi17Ci0gICAgaW50IHggPSBnZXRXaW5kb3dXaWR0aCgpIC8gMjsKLSAg
ICBpbnQgeSA9IGdldFdpbmRvd0hlaWdodCgpIC8gMjsKLQotICAgIC8vIENsZWFyIHRvIGJsdWUK
LSAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMS4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihH
TF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoeCwgeSwgMCwgMCwgMjU1
LCAyNTUpOwotCi0gICAgLy8gRHJhdyBhIHF1YWQgd2l0aCBhbGwgY29sb3JzIG1hc2tlZCBhbmQg
YmxlbmRpbmcgZGlzYWJsZWQsIHNob3VsZCByZW1haW4gYmx1ZQotICAgIGdsQ29sb3JNYXNrKEdM
X0ZBTFNFLCBHTF9GQUxTRSwgR0xfRkFMU0UsIEdMX0ZBTFNFKTsKLSAgICBnbERpc2FibGUoR0xf
QkxFTkQpOwotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgZ2xVbmlmb3JtNGYobUNv
bG9yVW5pZm9ybSwgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZik7Ci0gICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVY
UEVDVF9QSVhFTF9FUSh4LCB5LCAwLCAwLCAyNTUsIDI1NSk7Ci0KLSAgICAvLyBSZS1lbmFibGUg
dGhlIGNvbG9yIG1hc2ssIHNob3VsZCBiZSByZWQgKHdpdGggYmxlbmQgZGlzYWJsZWQsIHRoZSBy
ZWQgc2hvdWxkIG92ZXJ3cml0ZQotICAgIC8vIGV2ZXJ5dGhpbmcpCi0gICAgZ2xDb2xvck1hc2so
R0xfVFJVRSwgR0xfVFJVRSwgR0xfVFJVRSwgR0xfVFJVRSk7Ci0gICAgZ2xVc2VQcm9ncmFtKG1Q
cm9ncmFtKTsKLSAgICBnbFVuaWZvcm00ZihtQ29sb3JVbmlmb3JtLCAxLjBmLCAwLjBmLCAwLjBm
LCAwLjBmKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBkcmF3UXVhZChtUHJvZ3Jh
bSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKHgsIHksIDI1NSwgMCwg
MCwgMCk7Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAo
ZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZQotLy8g
dGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LiBEM0QxMSBGZWF0dXJlIExldmVsIDlfMyB1c2Vz
IGRpZmZlcmVudCBEM0QgZm9ybWF0cyBmb3IgdmVydGV4Ci0vLyBhdHRyaWJzIGNvbXBhcmVkIHRv
IEZlYXR1cmUgTGV2ZWxzIDEwXzArLCBzbyB3ZSBzaG91bGQgdGVzdCB0aGVtIHNlcGFyYXRlbHku
Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKENvbG9yTWFza1Rlc3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgRVMyX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdM
KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAotICAgICAgICAgICAg
ICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7Ci0KLX0gIC8vIG5hbWVzcGFjZSBhbmdsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvbXB1
dGVTaGFkZXJUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90
ZXN0cy9Db21wdXRlU2hhZGVyVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDYxYjExNDZjMmU2Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvQ29tcHV0ZVNoYWRlclRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMjI2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBDb21wdXRlU2hhZGVyVGVzdDoKLS8vICAgQ29t
cHV0ZSBzaGFkZXIgc3BlY2lmaWMgdGVzdHMuCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xF
VGVzdC5oIgotI2luY2x1ZGUgInRlc3RfdXRpbHMvZ2xfcmFpaS5oIgotI2luY2x1ZGUgPHZlY3Rv
cj4KLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3MgQ29t
cHV0ZVNoYWRlclRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBD
b21wdXRlU2hhZGVyVGVzdCgpIHt9Ci19OwotCi1jbGFzcyBDb21wdXRlU2hhZGVyVGVzdEVTMyA6
IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIENvbXB1dGVTaGFkZXJUZXN0
RVMzKCkge30KLX07Ci0KLS8vIGxpbmsgYSBzaW1wbGUgY29tcHV0ZSBwcm9ncmFtLiBJdCBzaG91
bGQgYmUgc3VjY2Vzc2Z1bC4KLVRFU1RfUChDb21wdXRlU2hhZGVyVGVzdCwgTGlua0NvbXB1dGVQ
cm9ncmFtKQotewotICAgIGlmIChJc0ludGVsKCkgJiYgSXNMaW51eCgpKQotICAgIHsKLSAgICAg
ICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgTGludXggZHVlIHRvIGZhaWx1
cmVzLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgY3NTb3VyY2UgPQotICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCi0gICAg
ICAgICJsYXlvdXQobG9jYWxfc2l6ZV94PTEpIGluO1xuIgotICAgICAgICAidm9pZCBtYWluKClc
biIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBBTkdMRV9HTF9DT01QVVRF
X1BST0dSQU0ocHJvZ3JhbSwgY3NTb3VyY2UpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci19Ci0KLS8vIGxpbmsgYSBzaW1wbGUgY29tcHV0ZSBwcm9ncmFtLiBUaGVyZSBpcyBubyBsb2Nh
bCBzaXplIGFuZCBsaW5raW5nIHNob3VsZCBmYWlsLgotVEVTVF9QKENvbXB1dGVTaGFkZXJUZXN0
LCBMaW5rQ29tcHV0ZVByb2dyYW1Ob0xvY2FsU2l6ZUxpbmtFcnJvcikKLXsKLSAgICBjb25zdCBz
dGQ6OnN0cmluZyBjc1NvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAg
ICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAg
R0x1aW50IHByb2dyYW0gPSBDb21waWxlQ29tcHV0ZVByb2dyYW0oY3NTb3VyY2UsIGZhbHNlKTsK
LSAgICBFWFBFQ1RfRVEoMHUsIHByb2dyYW0pOwotCi0gICAgZ2xEZWxldGVQcm9ncmFtKHByb2dy
YW0pOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIGxpbmsgYSBzaW1wbGUg
Y29tcHV0ZSBwcm9ncmFtLgotLy8gbWFrZSBzdXJlIHRoYXQgdW5pZm9ybXMgYW5kIHVuaWZvcm0g
c2FtcGxlcnMgZ2V0IHJlY29yZGVkCi1URVNUX1AoQ29tcHV0ZVNoYWRlclRlc3QsIExpbmtDb21w
dXRlUHJvZ3JhbVdpdGhVbmlmb3JtcykKLXsKLSAgICBpZiAoSXNJbnRlbCgpICYmIElzTGludXgo
KSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIExp
bnV4IGR1ZSB0byBmYWlsdXJlcy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBjc1NvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAz
MTAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIHNhbXBsZXIyRDtcbiIKLSAgICAg
ICAgImxheW91dChsb2NhbF9zaXplX3g9MSkgaW47XG4iCi0gICAgICAgICJ1bmlmb3JtIGludCBt
eVVuaWZvcm1JbnQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCBteVVuaWZvcm1TYW1w
bGVyO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAg
ImludCBxID0gbXlVbmlmb3JtSW50O1xuIgotICAgICAgICAidGV4dHVyZShteVVuaWZvcm1TYW1w
bGVyLCB2ZWMyKDAuMCkpO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIEFOR0xFX0dMX0NPTVBV
VEVfUFJPR1JBTShwcm9ncmFtLCBjc1NvdXJjZSk7Ci0KLSAgICBHTGludCB1bmlmb3JtTG9jID0g
Z2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbS5nZXQoKSwgIm15VW5pZm9ybUludCIpOwotICAg
IEVYUEVDVF9ORSgtMSwgdW5pZm9ybUxvYyk7Ci0KLSAgICB1bmlmb3JtTG9jID0gZ2xHZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbS5nZXQoKSwgIm15VW5pZm9ybVNhbXBsZXIiKTsKLSAgICBFWFBF
Q1RfTkUoLTEsIHVuaWZvcm1Mb2MpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0K
LS8vIEF0dGFjaCBib3RoIGNvbXB1dGUgYW5kIG5vbi1jb21wdXRlIHNoYWRlcnMuIEEgbGluayB0
aW1lIGVycm9yIHNob3VsZCBvY2N1ci4KLS8vIE9wZW5HTCBFUyAzLjEwLCA3LjMgUHJvZ3JhbSBP
YmplY3RzCi1URVNUX1AoQ29tcHV0ZVNoYWRlclRlc3QsIEF0dGFjaE11bHRpcGxlU2hhZGVycykK
LXsKLSAgICBpZiAoSXNJbnRlbCgpICYmIElzTGludXgoKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIExpbnV4IGR1ZSB0byBmYWlsdXJlcy4iIDw8
IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyBjc1NvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgImxheW91
dChsb2NhbF9zaXplX3g9MSkgaW47XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAg
ICAie1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291cmNl
ID0KLSAgICAgICAgIiN2ZXJzaW9uIDMxMCBlc1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIK
LSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBm
c1NvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgInZvaWQgbWFp
bigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgR0x1aW50IHByb2dy
YW0gPSBnbENyZWF0ZVByb2dyYW0oKTsKLQotICAgIEdMdWludCB2cyA9IENvbXBpbGVTaGFkZXIo
R0xfVkVSVEVYX1NIQURFUiwgdnNTb3VyY2UpOwotICAgIEdMdWludCBmcyA9IENvbXBpbGVTaGFk
ZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmc1NvdXJjZSk7Ci0gICAgR0x1aW50IGNzID0gQ29tcGls
ZVNoYWRlcihHTF9DT01QVVRFX1NIQURFUiwgY3NTb3VyY2UpOwotCi0gICAgRVhQRUNUX05FKDB1
LCB2cyk7Ci0gICAgRVhQRUNUX05FKDB1LCBmcyk7Ci0gICAgRVhQRUNUX05FKDB1LCBjcyk7Ci0K
LSAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCB2cyk7Ci0gICAgZ2xEZWxldGVTaGFkZXIodnMp
OwotCi0gICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwgZnMpOwotICAgIGdsRGVsZXRlU2hhZGVy
KGZzKTsKLQotICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW0sIGNzKTsKLSAgICBnbERlbGV0ZVNo
YWRlcihjcyk7Ci0KLSAgICBnbExpbmtQcm9ncmFtKHByb2dyYW0pOwotCi0gICAgR0xpbnQgbGlu
a1N0YXR1czsKLSAgICBnbEdldFByb2dyYW1pdihwcm9ncmFtLCBHTF9MSU5LX1NUQVRVUywgJmxp
bmtTdGF0dXMpOwotCi0gICAgRVhQRUNUX0VRKDAsIGxpbmtTdGF0dXMpOwotCi0gICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIEF0dGFjaCBhIHZlcnRleCwgZnJhZ21lbnQgYW5kIGNv
bXB1dGUgc2hhZGVyLgotLy8gUXVlcnkgZm9yIHRoZSBudW1iZXIgb2YgYXR0YWNoZWQgc2hhZGVy
cyBhbmQgY2hlY2sgdGhlIGNvdW50LgotVEVTVF9QKENvbXB1dGVTaGFkZXJUZXN0LCBBdHRhY2ht
ZW50Q291bnQpCi17Ci0gICAgaWYgKElzSW50ZWwoKSAmJiBJc0xpbnV4KCkpCi0gICAgewotICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBMaW51eCBkdWUgdG8gZmFp
bHVyZXMuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgY3NTb3VyY2UgPQotICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCi0gICAg
ICAgICJsYXlvdXQobG9jYWxfc2l6ZV94PTEpIGluO1xuIgotICAgICAgICAidm9pZCBtYWluKClc
biIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyB2c1NvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMTAgZXNcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgZnNTb3VyY2UgPQotICAgICAgICAiI3ZlcnNpb24gMzEwIGVzXG4iCi0gICAgICAg
ICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAifVxuIjsKLQotICAgIEdM
dWludCBwcm9ncmFtID0gZ2xDcmVhdGVQcm9ncmFtKCk7Ci0KLSAgICBHTHVpbnQgdnMgPSBDb21w
aWxlU2hhZGVyKEdMX1ZFUlRFWF9TSEFERVIsIHZzU291cmNlKTsKLSAgICBHTHVpbnQgZnMgPSBD
b21waWxlU2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgZnNTb3VyY2UpOwotICAgIEdMdWludCBj
cyA9IENvbXBpbGVTaGFkZXIoR0xfQ09NUFVURV9TSEFERVIsIGNzU291cmNlKTsKLQotICAgIEVY
UEVDVF9ORSgwdSwgdnMpOwotICAgIEVYUEVDVF9ORSgwdSwgZnMpOwotICAgIEVYUEVDVF9ORSgw
dSwgY3MpOwotCi0gICAgZ2xBdHRhY2hTaGFkZXIocHJvZ3JhbSwgdnMpOwotICAgIGdsRGVsZXRl
U2hhZGVyKHZzKTsKLQotICAgIGdsQXR0YWNoU2hhZGVyKHByb2dyYW0sIGZzKTsKLSAgICBnbERl
bGV0ZVNoYWRlcihmcyk7Ci0KLSAgICBnbEF0dGFjaFNoYWRlcihwcm9ncmFtLCBjcyk7Ci0gICAg
Z2xEZWxldGVTaGFkZXIoY3MpOwotCi0gICAgR0xpbnQgbnVtQXR0YWNoZWRTaGFkZXJzOwotICAg
IGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0FUVEFDSEVEX1NIQURFUlMsICZudW1BdHRhY2hl
ZFNoYWRlcnMpOwotCi0gICAgRVhQRUNUX0VRKDMsIG51bUF0dGFjaGVkU2hhZGVycyk7Ci0KLSAg
ICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
LX0KLQotLy8gQ2hlY2sgdGhhdCBpdCBpcyBub3QgcG9zc2libGUgdG8gY3JlYXRlIGEgY29tcHV0
ZSBzaGFkZXIgd2hlbiB0aGUgY29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IEVTCi0vLyAzLjEwCi1U
RVNUX1AoQ29tcHV0ZVNoYWRlclRlc3RFUzMsIE5vdFN1cHBvcnRlZCkKLXsKLSAgICBHTHVpbnQg
Y29tcHV0ZVNoYWRlckhhbmRsZSA9IGdsQ3JlYXRlU2hhZGVyKEdMX0NPTVBVVEVfU0hBREVSKTsK
LSAgICBFWFBFQ1RfRVEoMHUsIGNvbXB1dGVTaGFkZXJIYW5kbGUpOwotICAgIEVYUEVDVF9HTF9F
UlJPUihHTF9JTlZBTElEX0VOVU0pOwotfQotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKENvbXB1
dGVTaGFkZXJUZXN0LCBFUzMxX09QRU5HTCgpLCBFUzMxX09QRU5HTEVTKCkpOwotQU5HTEVfSU5T
VEFOVElBVEVfVEVTVChDb21wdXRlU2hhZGVyVGVzdEVTMywgRVMzX09QRU5HTCgpLCBFUzNfT1BF
TkdMRVMoKSk7Ci0KLX0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvcHlDb21wcmVzc2VkVGV4dHVyZVRlc3QuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvcHlDb21wcmVz
c2VkVGV4dHVyZVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDQxNTE5
NDlkZC4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL0NvcHlDb21wcmVzc2VkVGV4dHVyZVRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMzY5ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIENvcHlDb21wcmVzc2VkVGV4dHVyZVRlc3Qu
Y3BwOiBUZXN0cyBvZiB0aGUgR0xfQ0hST01JVU1fY29weV9jb21wcmVzc2VkX3RleHR1cmUgZXh0
ZW5zaW9uCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi1uYW1lc3BhY2Ug
YW5nbGUKLXsKLQotY2xhc3MgQ29weUNvbXByZXNzZWRUZXh0dXJlVGVzdCA6IHB1YmxpYyBBTkdM
RVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIENvcHlDb21wcmVzc2VkVGV4dHVyZVRlc3QoKQot
ICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMjU2KTsKLSAgICAgICAgc2V0V2luZG93SGVp
Z2h0KDI1Nik7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZp
Z0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNl
dENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBnbEdlblRleHR1
cmVzKDIsIG1UZXh0dXJlcyk7Ci0KLSAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSgK
LSAgICAgICAgICAgICJhdHRyaWJ1dGUgdmVjMiBhX3Bvc2l0aW9uO1xuIgotICAgICAgICAgICAg
InZhcnlpbmcgdmVjMiB2X3RleGNvb3JkO1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpXG4i
Ci0gICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgIGdsX1Bvc2l0aW9uID0gdmVjNChh
X3Bvc2l0aW9uLCAwLjAsIDEuMCk7XG4iCi0gICAgICAgICAgICAiICAgdl90ZXhjb29yZCA9IChh
X3Bvc2l0aW9uICsgMS4wKSAqIDAuNTtcbiIKLSAgICAgICAgICAgICJ9XG4iLAotICAgICAgICAg
ICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAgICAgInVuaWZvcm0gc2Ft
cGxlcjJEIHVfdGV4dHVyZTtcbiIKLSAgICAgICAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhjb29y
ZDtcbiIKLSAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAgICAgIntcbiIKLSAg
ICAgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHVfdGV4dHVyZSwgdl90ZXhj
b29yZCk7XG4iCi0gICAgICAgICAgICAifVxuIik7Ci0gICAgICAgIEFTU0VSVF9ORSgwdSwgbVBy
b2dyYW0pOwotCi0gICAgICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9jb3B5
X2NvbXByZXNzZWRfdGV4dHVyZSIpKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbENvbXByZXNz
ZWRDb3B5VGV4dHVyZUNIUk9NSVVNID0KLSAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0
PFBGTkdMQ09NUFJFU1NFRENPUFlURVhUVVJFQ0hST01JVU1QUk9DPigKLSAgICAgICAgICAgICAg
ICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0i
KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAg
ICB7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMiwgbVRleHR1cmVzKTsKLSAgICAgICAgZ2xE
ZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7
Ci0gICAgfQotCi0gICAgYm9vbCBjaGVja0V4dGVuc2lvbnMoKSBjb25zdAotICAgIHsKLSAgICAg
ICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9jb3B5X2NvbXByZXNzZWRfdGV4
dHVyZSIpKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQKLSAgICAgICAgICAgICAg
ICA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfQ0hST01JVU1fY29weV9jb21wcmVzc2VkX3Rl
eHR1cmUgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgRVhQRUNUX05F
KG51bGxwdHIsIGdsQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0pOwotICAgICAgICBpZiAo
Z2xDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTSA9PSBudWxscHRyKQotICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVByb2dyYW0gICAgID0gMDsKLSAgICBHTHVpbnQgbVRl
eHR1cmVzWzJdID0gezAsIDB9OwotCi0gICAgUEZOR0xDT01QUkVTU0VEQ09QWVRFWFRVUkVDSFJP
TUlVTVBST0MgZ2xDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTSA9IG51bGxwdHI7Ci19Owot
Ci1uYW1lc3BhY2UKLXsKLQotY29uc3QgR0xDb2xvciAmQ29tcHJlc3NlZEltYWdlQ29sb3IgPSBH
TENvbG9yOjpyZWQ7Ci0KLS8vIFNpbmdsZSBjb21wcmVzc2VkIEFUQyBibG9jayBvZiBzb3VyY2Ug
cGl4ZWxzIGFsbCBzZXQgdG86Ci0vLyBDb21wcmVzc2VkSW1hZ2VDb2xvci4KLWNvbnN0IHVpbnQ4
X3QgQ29tcHJlc3NlZEltYWdlQVRDWzhdID0gezB4MCwgMHg3YywgMHgwLCAweGY4LCAweDU1LCAw
eDU1LCAweDU1LCAweDU1fTsKLQotLy8gU2luZ2xlIGNvbXByZXNzZWQgQVRDSUEgYmxvY2sgb2Yg
c291cmNlIHBpeGVscyBhbGwgc2V0IHRvOgotLy8gQ29tcHJlc3NlZEltYWdlQ29sb3IuCi1jb25z
dCB1aW50OF90IENvbXByZXNzZWRJbWFnZUFUQ0lBWzE2XSA9IHsweGZmLCAweGZmLCAweDAsIDB4
MCwgIDB4MCwgIDB4MCwgIDB4MCwgIDB4MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4MCwgIDB4N2MsIDB4MCwgMHhmOCwgMHg1NSwgMHg1NSwgMHg1NSwgMHg1
NX07Ci0KLS8vIFNpbmdsZSBjb21wcmVzc2VkIERYVDEgYmxvY2sgb2Ygc291cmNlIHBpeGVscyBh
bGwgc2V0IHRvOgotLy8gQ29tcHJlc3NlZEltYWdlQ29sb3IuCi1jb25zdCB1aW50OF90IENvbXBy
ZXNzZWRJbWFnZURYVDFbOF0gPSB7MHgwMCwgMHhmOCwgMHgwMCwgMHhmOCwgMHhhYSwgMHhhYSwg
MHhhYSwgMHhhYX07Ci0KLS8vIFNpbmdsZSBjb21wcmVzc2VkIERYVDUgYmxvY2sgb2Ygc291cmNl
IHBpeGVscyBhbGwgc2V0IHRvOgotLy8gQ29tcHJlc3NlZEltYWdlQ29sb3IuCi1jb25zdCB1aW50
OF90IENvbXByZXNzZWRJbWFnZURYVDVbMTZdID0gezB4ZmYsIDB4ZmYsIDB4MCwgMHgwLCAgMHgw
LCAgMHgwLCAgMHgwLCAgMHgwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDAsICAweGY4LCAweDAsIDB4ZjgsIDB4YWEsIDB4YWEsIDB4YWEsIDB4YWF9OwotCi0v
LyBTaW5nbGUgY29tcHJlc3NlZCBEWFQxIGJsb2NrIG9mIHNvdXJjZSBwaXhlbHMgYWxsIHNldCB0
bzoKLS8vIENvbXByZXNzZWRJbWFnZUNvbG9yLgotY29uc3QgdWludDhfdCBDb21wcmVzc2VkSW1h
Z2VFVEMxWzhdID0gezB4MCwgMHgwLCAweGY4LCAweDIsIDB4ZmYsIDB4ZmYsIDB4MCwgMHgwfTsK
LQotfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi0vLyBUZXN0IHRvIGVuc3VyZSB0aGF0IHRo
ZSBiYXNpYyBmdW5jdGlvbmFsaXR5IG9mIHRoZSBleHRlbnNpb24gd29ya3MuCi1URVNUX1AoQ29w
eUNvbXByZXNzZWRUZXh0dXJlVGVzdCwgQmFzaWMpCi17Ci0gICAgaWYgKCFjaGVja0V4dGVuc2lv
bnMoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoIWV4dGVuc2lv
bkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKSkKLSAgICB7Ci0gICAg
ICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfRVhUX3RleHR1cmVfY29t
cHJlc3Npb25fZHh0MSBpcyBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0
ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURH
RSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJ
TFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4SW1h
Z2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULCA0
LCA0LCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKENvbXByZXNzZWRJbWFn
ZURYVDEpLCBDb21wcmVzc2VkSW1hZ2VEWFQxKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsKLSAgICBn
bFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1Q
X1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7
Ci0gICAgZ2xDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0
dXJlc1sxXSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBMb2FkIHRleHR1
cmUuCi0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7Ci0gICAgR0xpbnQgdGV4dHVyZUxvYyA9IGds
R2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidV90ZXh0dXJlIik7Ci0gICAgZ2xVc2VQcm9n
cmFtKG1Qcm9ncmFtKTsKLSAgICBnbFVuaWZvcm0xaSh0ZXh0dXJlTG9jLCAwKTsKLQotICAgIC8v
IERyYXcuCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJhX3Bvc2l0aW9uIiwgMC41Zik7Ci0KLSAg
ICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hl
aWdodCgpIC8gMiwgQ29tcHJlc3NlZEltYWdlQ29sb3IpOwotICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotfQotCi0vLyBUZXN0IHZhbGlkYXRpb24gb2YgY29tcHJlc3NlZCBmb3JtYXRzCi1URVNU
X1AoQ29weUNvbXByZXNzZWRUZXh0dXJlVGVzdCwgSW50ZXJuYWxGb3JtYXQpCi17Ci0gICAgaWYg
KCFjaGVja0V4dGVuc2lvbnMoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBzdHJ1Y3QgRGF0YQotICAgIHsKLSAgICAgICAgR0xpbnQgZm9ybWF0OwotICAgICAgICBjb25z
dCB1aW50OF90ICpkYXRhOwotICAgICAgICBHTHNpemVpIGRhdGFTaXplOwotCi0gICAgICAgIERh
dGEoKSA6IERhdGEoR0xfTk9ORSwgbnVsbHB0ciwgMCkge30KLSAgICAgICAgRGF0YShHTGludCBm
b3JtYXQsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsIEdMc2l6ZWkgZGF0YVNpemUpCi0gICAgICAgICAg
ICA6IGZvcm1hdChmb3JtYXQpLCBkYXRhKGRhdGEpLCBkYXRhU2l6ZShkYXRhU2l6ZSkKLSAgICAg
ICAgewotICAgICAgICB9Ci0gICAgfTsKLSAgICBzdGQ6OnZlY3RvcjxEYXRhPiBzdXBwb3J0ZWRG
b3JtYXRzOwotCi0gICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQoIkdMX0FNRF9jb21wcmVzc2VkX0FU
Q190ZXh0dXJlIikpCi0gICAgewotICAgICAgICBzdXBwb3J0ZWRGb3JtYXRzLnB1c2hfYmFjaygK
LSAgICAgICAgICAgIERhdGEoR0xfQVRDX1JHQl9BTUQsIENvbXByZXNzZWRJbWFnZUFUQywgc2l6
ZW9mKENvbXByZXNzZWRJbWFnZUFUQykpKTsKLSAgICAgICAgc3VwcG9ydGVkRm9ybWF0cy5wdXNo
X2JhY2soRGF0YShHTF9BVENfUkdCQV9JTlRFUlBPTEFURURfQUxQSEFfQU1ELCBDb21wcmVzc2Vk
SW1hZ2VBVENJQSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl
b2YoQ29tcHJlc3NlZEltYWdlQVRDSUEpKSk7Ci0gICAgfQotICAgIGlmIChleHRlbnNpb25FbmFi
bGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIikpCi0gICAgewotICAgICAgICBz
dXBwb3J0ZWRGb3JtYXRzLnB1c2hfYmFjayhEYXRhKEdMX0NPTVBSRVNTRURfUkdCX1MzVENfRFhU
MV9FWFQsIENvbXByZXNzZWRJbWFnZURYVDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZW9mKENvbXByZXNzZWRJbWFnZURYVDEpKSk7Ci0gICAgfQotICAgIGlm
IChleHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDUiKSkK
LSAgICB7Ci0gICAgICAgIHN1cHBvcnRlZEZvcm1hdHMucHVzaF9iYWNrKERhdGEoR0xfQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUNV9FWFQsIENvbXByZXNzZWRJbWFnZURYVDUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKENvbXByZXNzZWRJbWFnZURYVDUp
KSk7Ci0gICAgfQotICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfY29tcHJlc3NlZF9F
VEMxX1JHQjhfdGV4dHVyZSIpKQotICAgIHsKLSAgICAgICAgc3VwcG9ydGVkRm9ybWF0cy5wdXNo
X2JhY2soCi0gICAgICAgICAgICBEYXRhKEdMX0VUQzFfUkdCOF9PRVMsIENvbXByZXNzZWRJbWFn
ZUVUQzEsIHNpemVvZihDb21wcmVzc2VkSW1hZ2VFVEMxKSkpOwotICAgIH0KLQotICAgIGZvciAo
Y29uc3QgYXV0byAmc3VwcG9ydGVkRm9ybWF0IDogc3VwcG9ydGVkRm9ybWF0cykKLSAgICB7Ci0g
ICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKLSAgICAg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9D
TEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0g
ICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxU
RVIsIEdMX05FQVJFU1QpOwotICAgICAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAsIHN1cHBvcnRlZEZvcm1hdC5mb3JtYXQsIDQsIDQsIDAsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkRm9ybWF0LmRhdGFTaXplLCBzdXBwb3J0ZWRGb3Jt
YXQuZGF0YSk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsKLSAgICAgICAgZ2xUZXhQYXJh
bWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdF
KTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JB
UF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJF
U1QpOwotICAgICAgICBnbENvbXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1sw
XSwgbVRleHR1cmVzWzFdKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQot
fQotCi0vLyBUZXN0IHRoYXQgdW5jb21wcmVzc2VkIHRleHR1cmVzIGdlbmVyYXRlIGVycm9ycyB3
aGVuIGNvcHlpbmcKLVRFU1RfUChDb3B5Q29tcHJlc3NlZFRleHR1cmVUZXN0LCBJbnRlcm5hbEZv
cm1hdE5vdFN1cHBvcnRlZCkKLXsKLSAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQotICAgIHsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmVzWzBdKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xf
TkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZHTENvbG9y
OjpyZWQpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0pOwotICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQ
YXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19F
REdFKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdf
RklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKLQotICAgIC8vIENoZWNrIHRoYXQgdGhlIEdMX1JHQkEgZm9ybWF0IHJlcG9ydHMgYW4g
ZXJyb3IuCi0gICAgZ2xDb21wcmVzc2VkQ29weVRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0s
IG1UZXh0dXJlc1sxXSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotLy8gVGVzdCB2YWxpZGF0aW9uIG9mIHRleHR1cmUgSURzCi1URVNUX1AoQ29weUNv
bXByZXNzZWRUZXh0dXJlVGVzdCwgSW52YWxpZFRleHR1cmVJZHMpCi17Ci0gICAgaWYgKCFjaGVj
a0V4dGVuc2lvbnMoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7Ci0gICAgZ2xUZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsK
LSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdM
X0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsQ29t
cHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfQ09NUFJFU1NFRF9SR0JfUzNU
Q19EWFQxX0VYVCwgNCwgNCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihD
b21wcmVzc2VkSW1hZ2VEWFQxKSwgQ29tcHJlc3NlZEltYWdlRFhUMSk7Ci0gICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJl
c1sxXSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JB
UF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwot
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIs
IEdMX05FQVJFU1QpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xDb21wcmVz
c2VkQ29weVRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIDk5OTkzKTsKLSAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICBnbENvbXByZXNzZWRDb3B5VGV4dHVy
ZUNIUk9NSVVNKDk5OTk0LCBtVGV4dHVyZXNbMV0pOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9J
TlZBTElEX1ZBTFVFKTsKLQotICAgIGdsQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0oOTk5
OTUsIDk5OTk2KTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAg
ICBnbENvbXByZXNzZWRDb3B5VGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVz
WzFdKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCB0aGF0IG9ubHkg
MkQgdGV4dHVyZXMgYXJlIHZhbGlkCi1URVNUX1AoQ29weUNvbXByZXNzZWRUZXh0dXJlVGVzdCwg
QmluZGluZ1BvaW50cykKLXsKLSAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJF
X01BUCwgbVRleHR1cmVzWzBdKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJF
X01BUCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBf
VE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIEdMX1RF
WFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfQ1VCRV9NQVAsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAg
Zm9yIChHTGVudW0gZmFjZSA9IEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDsgZmFjZSA8
PSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1o7Ci0gICAgICAgICBmYWNlKyspCi0gICAg
ewotICAgICAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKGZhY2UsIDAsIEdMX0NPTVBSRVNTRURf
UkdCX1MzVENfRFhUMV9FWFQsIDQsIDQsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZW9mKENvbXByZXNzZWRJbWFnZURYVDEpLCBDb21wcmVzc2VkSW1hZ2VEWFQxKTsKLSAg
ICB9Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfQ1VCRV9NQVAsIG1UZXh0dXJlc1sxXSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RF
WFRVUkVfQ1VCRV9NQVAsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAg
ICBnbFRleFBhcmFtZXRlcmYoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9XUkFQX1Qs
IEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0NVQkVf
TUFQLCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJF
U1QpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xDb21wcmVzc2VkQ29weVRl
eHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSk7Ci0gICAgRVhQRUNUX0dM
X0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotfQotCi0vLyBUZXN0IHRoZSBkZXN0aW5hdGlvbiB0
ZXh0dXJlIGNhbm5vdCBiZSBpbW11dGFibGUKLVRFU1RfUChDb3B5Q29tcHJlc3NlZFRleHR1cmVU
ZXN0LCBJbW11dGFibGUpCi17Ci0gICAgaWYgKCFjaGVja0V4dGVuc2lvbnMoKSB8fCBnZXRDbGll
bnRNYWpvclZlcnNpb24oKSA8IDMpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOwotICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9f
RURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JB
UF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAg
ICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX0NPTVBSRVNTRURf
UkdCX1MzVENfRFhUMV9FWFQsIDQsIDQsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplb2YoQ29tcHJlc3NlZEltYWdlRFhUMSksIENvbXByZXNzZWRJbWFnZURYVDEpOwotICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBt
VGV4dHVyZXNbMV0pOwotICAgIGdsVGV4U3RvcmFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX0NP
TVBSRVNTRURfUkdCX1MzVENfRFhUMV9FWFQsIDQsIDQpOwotICAgIGdsVGV4UGFyYW1ldGVyZihH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAg
Z2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFN
UF9UT19FREdFKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKLQotICAgIGdsQ29tcHJlc3NlZENvcHlUZXh0dXJlQ0hST01JVU0obVRleHR1
cmVzWzBdLCBtVGV4dHVyZXNbMV0pOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9u
cyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZQot
Ly8gdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChD
b3B5Q29tcHJlc3NlZFRleHR1cmVUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNE
OSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgRVMzX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0wo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAotICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5H
TEVTKCkpOwotCi19ICAvLyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db3B5VGV4SW1hZ2VUZXN0LmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db3B5VGV4SW1hZ2VUZXN0
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNiNzQyNjFiNmQuLjAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Db3B5
VGV4SW1hZ2VUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0MyArMCwwIEBACi0vLwotLy8g
Q29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0v
LwotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotbmFtZXNwYWNlIGFuZ2xl
Ci17Ci0KLWNsYXNzIENvcHlUZXhJbWFnZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHBy
b3RlY3RlZDoKLSAgICBDb3B5VGV4SW1hZ2VUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRv
d1dpZHRoKDE2KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDE2KTsKLSAgICAgICAgc2V0Q29u
ZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBz
ZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAg
IH0KLQotICAgIEdMdWludCBjcmVhdGVGcmFtZWJ1ZmZlcihHTGVudW0gZm9ybWF0LCBHTGVudW0g
dHlwZSwgR0xmbG9hdCBjb2xvcls0XSkgY29uc3QKLSAgICB7Ci0gICAgICAgIEdMdWludCBmYm87
Ci0gICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZmYm8pOwotICAgICAgICBnbEJpbmRGcmFt
ZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmJvKTsKLQotICAgICAgICBHTHVpbnQgdGV4dHVyZSA9
IGNyZWF0ZVRleHR1cmUoZm9ybWF0LCB0eXBlKTsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCB0ZXh0dXJlKTsKLSAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9G
UkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleHR1cmUs
IDApOwotCi0gICAgICAgIGdsQ2xlYXJDb2xvcihjb2xvclswXSwgY29sb3JbMV0sIGNvbG9yWzJd
LCBjb2xvclszXSk7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAg
ICAgICAgcmV0dXJuIGZibzsKLSAgICB9Ci0KLSAgICBHTHVpbnQgY3JlYXRlVGV4dHVyZShHTGVu
dW0gZm9ybWF0LCBHTGVudW0gdHlwZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIEdMdWludCB0ZXg7
Ci0gICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleCk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgdGV4KTsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDAsIGZvcm1hdCwgMTYsIDE2LCAwLCBmb3JtYXQsIHR5cGUsIG51bGxwdHIpOwotCi0gICAgICAg
IC8vIERpc2FibGUgbWlwbWFwcGluZwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICAgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVT
VCk7Ci0KLSAgICAgICAgcmV0dXJuIHRleDsKLSAgICB9Ci0KLSAgICBHTHVpbnQgY3JlYXRlVGV4
dHVyZUZyb21Db3B5VGV4SW1hZ2UoR0x1aW50IGZibywgR0xlbnVtIGZvcm1hdCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEdMdWludCB0ZXg7Ci0gICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleCk7
Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4KTsKLQotICAgICAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmJvKTsKLSAgICAgICAgZ2xDb3B5VGV4
SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBmb3JtYXQsIDAsIDAsIDE2LCAxNiwgMCk7Ci0KLSAg
ICAgICAgLy8gRGlzYWJsZSBtaXBtYXBwaW5nCi0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgICAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9O
RUFSRVNUKTsKLQotICAgICAgICByZXR1cm4gdGV4OwotICAgIH0KLQotICAgIHZvaWQgY29weVRl
eHR1cmVXaXRoQ29weVRleFN1YkltYWdlKEdMdWludCBmYm8sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xpbnQgeG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGludCB5b2Zmc2V0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMaW50IHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xzaXplaSBoKSBjb25zdAotICAgIHsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCB0ZXh0dXJlKTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIs
IGZibyk7Ci0gICAgICAgIGdsQ29weVRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgeG9m
ZnNldCwgeW9mZnNldCwgeCwgeSwgdywgaCk7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92
ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgdnNTb3VyY2UgPQotICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBm
bG9hdDtcbiIKLSAgICAgICAgICAgICJhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjtcbiIKLSAgICAg
ICAgICAgICJ2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7XG4iCi0gICAgICAgICAgICAiXG4iCi0gICAg
ICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAi
ICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247XG4iCi0gICAgICAgICAgICAiICAgIHRleGNvb3Jk
ID0gKHBvc2l0aW9uLnh5ICogMC41KSArIDAuNTtcbiIKLSAgICAgICAgICAgICIgICAgdGV4Y29v
cmQueSA9IDEuMCAtIHRleGNvb3JkLnk7XG4iCi0gICAgICAgICAgICAifVxuIjsKLQotICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyB0ZXh0dXJlRlNTb3VyY2UgPQotICAgICAgICAgICAgInByZWNp
c2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7
XG4iCi0gICAgICAgICAgICAidmFyeWluZyB2ZWMyIHRleGNvb3JkO1xuIgotICAgICAgICAgICAg
IlxuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgICAie1xuIgotICAg
ICAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB0ZXhjb29yZCk7XG4i
Ci0gICAgICAgICAgICAifVxuIjsKLQotICAgICAgICBtVGV4dHVyZVByb2dyYW0gPSBDb21waWxl
UHJvZ3JhbSh2c1NvdXJjZSwgdGV4dHVyZUZTU291cmNlKTsKLSAgICAgICAgaWYgKG1UZXh0dXJl
UHJvZ3JhbSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBGQUlMKCkgPDwgInNoYWRlciBj
b21waWxhdGlvbiBmYWlsZWQuIjsKLSAgICAgICAgfQotCi0gICAgICAgIG1UZXh0dXJlVW5pZm9y
bUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVRleHR1cmVQcm9ncmFtLCAidGV4Iik7
Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFy
RG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVRleHR1cmVQ
cm9ncmFtKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAg
dm9pZCB2ZXJpZnlSZXN1bHRzKEdMdWludCB0ZXh0dXJlLCBHTHVieXRlIGRhdGFbNF0sIEdMaW50
IHgsIEdMaW50IHkpCi0gICAgewotICAgICAgICBnbFZpZXdwb3J0KDAsIDAsIDE2LCAxNik7Ci0K
LSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOwotCi0gICAgICAg
IC8vIERyYXcgYSBxdWFkIHdpdGggdGhlIHRhcmdldCB0ZXh0dXJlCi0gICAgICAgIGdsVXNlUHJv
Z3JhbShtVGV4dHVyZVByb2dyYW0pOwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIHRleHR1cmUpOwotICAgICAgICBnbFVuaWZvcm0xaShtVGV4dHVyZVVuaWZvcm1Mb2NhdGlv
biwgMCk7Ci0KLSAgICAgICAgZHJhd1F1YWQobVRleHR1cmVQcm9ncmFtLCAicG9zaXRpb24iLCAw
LjVmKTsKLQotICAgICAgICAvLyBFeHBlY3QgdGhhdCB0aGUgcmVuZGVyZWQgcXVhZCBoYXMgdGhl
IHNhbWUgY29sb3IgYXMgdGhlIHNvdXJjZSB0ZXh0dXJlCi0gICAgICAgIEVYUEVDVF9QSVhFTF9O
RUFSKHgsIHksIGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0sIGRhdGFbM10sIDEuMCk7Ci0gICAg
fQotCi0gICAgR0x1aW50IG1UZXh0dXJlUHJvZ3JhbTsKLSAgICBHTGludCBtVGV4dHVyZVVuaWZv
cm1Mb2NhdGlvbjsKLX07Ci0KLVRFU1RfUChDb3B5VGV4SW1hZ2VUZXN0LCBSR0JBVG9MKQotewot
ICAgIEdMZmxvYXQgY29sb3JbXSA9IHsKLSAgICAgICAgMC4yNWYsIDEuMGYsIDAuNzVmLCAwLjVm
LAotICAgIH07Ci0KLSAgICBHTHVpbnQgZmJvID0gY3JlYXRlRnJhbWVidWZmZXIoR0xfUkdCQSwg
R0xfVU5TSUdORURfQllURSwgY29sb3IpOwotICAgIEdMdWludCB0ZXggPSBjcmVhdGVUZXh0dXJl
RnJvbUNvcHlUZXhJbWFnZShmYm8sIEdMX0xVTUlOQU5DRSk7Ci0KLSAgICBHTHVieXRlIGV4cGVj
dGVkW10gPSB7Ci0gICAgICAgIDY0LCA2NCwgNjQsIDI1NSwKLSAgICB9OwotICAgIHZlcmlmeVJl
c3VsdHModGV4LCBleHBlY3RlZCwgMCwgMCk7Ci19Ci0KLVRFU1RfUChDb3B5VGV4SW1hZ2VUZXN0
LCBSR0JUb0wpCi17Ci0gICAgLy8gVE9ETyAoZ2VvZmZsYW5nKTogRmlndXJlIG91dCB3aHkgQ29w
eVRleFtTdWJdSW1hZ2UgZG9lc24ndCB3b3JrIHdpdGgKLSAgICAvLyBSR0ItPkwgb24gb2xkZXIg
SW50ZWwgY2hpcHMKLSAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9
PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCi0gICAgewotICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTGZsb2F0IGNvbG9yW10gPSB7Ci0gICAg
ICAgIDAuMjVmLCAxLjBmLCAwLjc1ZiwgMC41ZiwKLSAgICB9OwotCi0gICAgR0x1aW50IGZibyA9
IGNyZWF0ZUZyYW1lYnVmZmVyKEdMX1JHQiwgR0xfVU5TSUdORURfQllURSwgY29sb3IpOwotICAg
IEdMdWludCB0ZXggPSBjcmVhdGVUZXh0dXJlRnJvbUNvcHlUZXhJbWFnZShmYm8sIEdMX0xVTUlO
QU5DRSk7Ci0KLSAgICBHTHVieXRlIGV4cGVjdGVkW10gPSB7Ci0gICAgICAgIDY0LCA2NCwgNjQs
IDI1NSwKLSAgICB9OwotICAgIHZlcmlmeVJlc3VsdHModGV4LCBleHBlY3RlZCwgMCwgMCk7Ci19
Ci0KLVRFU1RfUChDb3B5VGV4SW1hZ2VUZXN0LCBSR0JBVG9MQSkKLXsKLSAgICBHTGZsb2F0IGNv
bG9yW10gPSB7Ci0gICAgICAgIDAuMjVmLCAxLjBmLCAwLjc1ZiwgMC41ZiwKLSAgICB9OwotCi0g
ICAgR0x1aW50IGZibyA9IGNyZWF0ZUZyYW1lYnVmZmVyKEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIGNvbG9yKTsKLSAgICBHTHVpbnQgdGV4ID0gY3JlYXRlVGV4dHVyZUZyb21Db3B5VGV4SW1h
Z2UoZmJvLCBHTF9MVU1JTkFOQ0VfQUxQSEEpOwotCi0gICAgR0x1Ynl0ZSBleHBlY3RlZFtdID0g
ewotICAgICAgICA2NCwgNjQsIDY0LCAxMjcsCi0gICAgfTsKLSAgICB2ZXJpZnlSZXN1bHRzKHRl
eCwgZXhwZWN0ZWQsIDAsIDApOwotfQotCi1URVNUX1AoQ29weVRleEltYWdlVGVzdCwgUkdCQVRv
QSkKLXsKLSAgICBHTGZsb2F0IGNvbG9yW10gPSB7Ci0gICAgICAgIDAuMjVmLCAxLjBmLCAwLjc1
ZiwgMC41ZiwKLSAgICB9OwotCi0gICAgR0x1aW50IGZibyA9IGNyZWF0ZUZyYW1lYnVmZmVyKEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGNvbG9yKTsKLSAgICBHTHVpbnQgdGV4ID0gY3JlYXRl
VGV4dHVyZUZyb21Db3B5VGV4SW1hZ2UoZmJvLCBHTF9BTFBIQSk7Ci0KLSAgICBHTHVieXRlIGV4
cGVjdGVkW10gPSB7Ci0gICAgICAgIDAsIDAsIDAsIDEyNywKLSAgICB9OwotICAgIHZlcmlmeVJl
c3VsdHModGV4LCBleHBlY3RlZCwgMCwgMCk7Ci19Ci0KLVRFU1RfUChDb3B5VGV4SW1hZ2VUZXN0
LCBTdWJJbWFnZVJHQkFUb0wpCi17Ci0gICAgR0xmbG9hdCBjb2xvcjBbXSA9IHsKLSAgICAgICAg
MC4yNWYsIDEuMGYsIDAuNzVmLCAwLjVmLAotICAgIH07Ci0gICAgR0x1aW50IGZibzAgPSBjcmVh
dGVGcmFtZWJ1ZmZlcihHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBjb2xvcjApOwotICAgIEdM
dWludCB0ZXggID0gY3JlYXRlVGV4dHVyZUZyb21Db3B5VGV4SW1hZ2UoZmJvMCwgR0xfTFVNSU5B
TkNFKTsKLQotICAgIEdMZmxvYXQgY29sb3IxW10gPSB7Ci0gICAgICAgIDAuNWYsIDAuMjVmLCAx
LjBmLCAwLjc1ZiwKLSAgICB9OwotICAgIEdMdWludCBmYm8xID0gY3JlYXRlRnJhbWVidWZmZXIo
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgY29sb3IxKTsKLSAgICBjb3B5VGV4dHVyZVdpdGhD
b3B5VGV4U3ViSW1hZ2UoZmJvMSwgdGV4LCAyLCA0LCA1LCA2LCA4LCA4KTsKLQotICAgIEdMdWJ5
dGUgZXhwZWN0ZWQwW10gPSB7Ci0gICAgICAgIDY0LCA2NCwgNjQsIDI1NSwKLSAgICB9OwotICAg
IHZlcmlmeVJlc3VsdHModGV4LCBleHBlY3RlZDAsIDAsIDApOwotCi0gICAgR0x1Ynl0ZSBleHBl
Y3RlZDFbXSA9IHsKLSAgICAgICAgMTI3LCAxMjcsIDEyNywgMjU1LAotICAgIH07Ci0gICAgdmVy
aWZ5UmVzdWx0cyh0ZXgsIGV4cGVjdGVkMSwgNywgNyk7Ci19Ci0KLVRFU1RfUChDb3B5VGV4SW1h
Z2VUZXN0LCBTdWJJbWFnZVJHQkFUb0xBKQotewotICAgIEdMZmxvYXQgY29sb3IwW10gPSB7Ci0g
ICAgICAgIDAuMjVmLCAxLjBmLCAwLjc1ZiwgMC41ZiwKLSAgICB9OwotICAgIEdMdWludCBmYm8w
ID0gY3JlYXRlRnJhbWVidWZmZXIoR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgY29sb3IwKTsK
LSAgICBHTHVpbnQgdGV4ICA9IGNyZWF0ZVRleHR1cmVGcm9tQ29weVRleEltYWdlKGZibzAsIEdM
X0xVTUlOQU5DRV9BTFBIQSk7Ci0KLSAgICBHTGZsb2F0IGNvbG9yMVtdID0gewotICAgICAgICAw
LjVmLCAwLjI1ZiwgMS4wZiwgMC43NWYsCi0gICAgfTsKLSAgICBHTHVpbnQgZmJvMSA9IGNyZWF0
ZUZyYW1lYnVmZmVyKEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGNvbG9yMSk7Ci0gICAgY29w
eVRleHR1cmVXaXRoQ29weVRleFN1YkltYWdlKGZibzEsIHRleCwgMiwgNCwgNSwgNiwgOCwgOCk7
Ci0KLSAgICBHTHVieXRlIGV4cGVjdGVkMFtdID0gewotICAgICAgICA2NCwgNjQsIDY0LCAxMjcs
Ci0gICAgfTsKLSAgICB2ZXJpZnlSZXN1bHRzKHRleCwgZXhwZWN0ZWQwLCAwLCAwKTsKLQotICAg
IEdMdWJ5dGUgZXhwZWN0ZWQxW10gPSB7Ci0gICAgICAgIDEyNywgMTI3LCAxMjcsIDE5MiwKLSAg
ICB9OwotICAgIHZlcmlmeVJlc3VsdHModGV4LCBleHBlY3RlZDEsIDcsIDcpOwotfQotCi1URVNU
X1AoQ29weVRleEltYWdlVGVzdCwgU3ViSW1hZ2VSR0JUb0wpCi17Ci0gICAgLy8gVE9ETyAoZ2Vv
ZmZsYW5nKTogRmlndXJlIG91dCB3aHkgQ29weVRleFtTdWJdSW1hZ2UgZG9lc24ndCB3b3JrIHdp
dGgKLSAgICAvLyBSR0ItPkwgb24gb2xkZXIgSW50ZWwgY2hpcHMKLSAgICBpZiAoSXNJbnRlbCgp
ICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVO
R0xfQU5HTEUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJ
bnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBHTGZsb2F0IGNvbG9yMFtdID0gewotICAgICAgICAwLjI1ZiwgMS4wZiwgMC43NWYsIDAuNWYs
Ci0gICAgfTsKLSAgICBHTHVpbnQgZmJvMCA9IGNyZWF0ZUZyYW1lYnVmZmVyKEdMX1JHQiwgR0xf
VU5TSUdORURfQllURSwgY29sb3IwKTsKLSAgICBHTHVpbnQgdGV4ICA9IGNyZWF0ZVRleHR1cmVG
cm9tQ29weVRleEltYWdlKGZibzAsIEdMX0xVTUlOQU5DRSk7Ci0KLSAgICBHTGZsb2F0IGNvbG9y
MVtdID0gewotICAgICAgICAwLjVmLCAwLjI1ZiwgMS4wZiwgMC43NWYsCi0gICAgfTsKLSAgICBH
THVpbnQgZmJvMSA9IGNyZWF0ZUZyYW1lYnVmZmVyKEdMX1JHQiwgR0xfVU5TSUdORURfQllURSwg
Y29sb3IxKTsKLSAgICBjb3B5VGV4dHVyZVdpdGhDb3B5VGV4U3ViSW1hZ2UoZmJvMSwgdGV4LCAy
LCA0LCA1LCA2LCA4LCA4KTsKLQotICAgIEdMdWJ5dGUgZXhwZWN0ZWQwW10gPSB7Ci0gICAgICAg
IDY0LCA2NCwgNjQsIDI1NSwKLSAgICB9OwotICAgIHZlcmlmeVJlc3VsdHModGV4LCBleHBlY3Rl
ZDAsIDAsIDApOwotCi0gICAgR0x1Ynl0ZSBleHBlY3RlZDFbXSA9IHsKLSAgICAgICAgMTI3LCAx
MjcsIDEyNywgMjU1LAotICAgIH07Ci0gICAgdmVyaWZ5UmVzdWx0cyh0ZXgsIGV4cGVjdGVkMSwg
NywgNyk7Ci19Ci0KLS8vIHNwZWNpYWxpemF0aW9uIG9mIENvcHlUZXhJbWFnZVRlc3QgaXMgYWRk
ZWQgc28gdGhhdCBzb21lIHRlc3RzIGNhbiBiZSBleHBsaWNpdGx5IHJ1biB3aXRoIGFuIEVTMwot
Ly8gY29udGV4dAotY2xhc3MgQ29weVRleEltYWdlVGVzdEVTMyA6IHB1YmxpYyBDb3B5VGV4SW1h
Z2VUZXN0Ci17Ci19OwotCi0vLyAgVGhlIHRlc3QgdmVyaWZpZXMgdGhhdCBnbENvcHlUZXhTdWJJ
bWFnZTJEIGdlbmVyYXRlcyBhIEdMX0lOVkFMSURfT1BFUkFUSU9OIGVycm9yCi0vLyAgd2hlbiB0
aGUgcmVhZCBidWZmZXIgaXMgR0xfTk9ORS4KLS8vICBSZWZlcmVuY2U6IEdMRVMgMy4wLjQsIFNl
Y3Rpb24gMy44LjUgQWx0ZXJuYXRlIFRleHR1cmUgSW1hZ2UgU3BlY2lmaWNhdGlvbiBDb21tYW5k
cwotVEVTVF9QKENvcHlUZXhJbWFnZVRlc3RFUzMsIFJlYWRCdWZmZXJJc05vbmUpCi17Ci0gICAg
R0xmbG9hdCBjb2xvcltdID0gewotICAgICAgICAwLjI1ZiwgMS4wZiwgMC43NWYsIDAuNWYsCi0g
ICAgfTsKLQotICAgIEdMdWludCBmYm8gPSBjcmVhdGVGcmFtZWJ1ZmZlcihHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLCBjb2xvcik7Ci0gICAgR0x1aW50IHRleCA9IGNyZWF0ZVRleHR1cmVGcm9t
Q29weVRleEltYWdlKGZibywgR0xfUkdCQSk7Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9G
UkFNRUJVRkZFUiwgZmJvKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7
Ci0KLSAgICBnbFJlYWRCdWZmZXIoR0xfTk9ORSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKLSAgICBnbENvcHlUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDAs
IDQsIDQpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0KLSAg
ICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZmJvKTsKLSAgICBnbERlbGV0ZVRleHR1cmVzKDEs
ICZ0ZXgpOwotfQotCi0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMg
KGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UKLS8v
IHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoQ29w
eVRleEltYWdlVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRI
X0NPUFlfQU5HTEUpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoRUdMX0VYUEVS
SU1FTlRBTF9QUkVTRU5UX1BBVEhfRkFTVF9BTkdMRSksCi0gICAgICAgICAgICAgICAgICAgICAg
IEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgzLCAzKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkpOwotCi1BTkdMRV9JTlNUQU5U
SUFURV9URVNUKENvcHlUZXhJbWFnZVRlc3RFUzMsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCks
IEVTM19PUEVOR0xFUygpKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbF90ZXN0cy9Db3B5VGV4dHVyZVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0NvcHlUZXh0dXJlVGVzdC5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1Mzg2MWU3ZDc5Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvQ29weVRleHR1cmVUZXN0LmNw
cAorKysgL2Rldi9udWxsCkBAIC0xLDU2NiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTYg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBDb3B5VGV4
dHVyZVRlc3QuY3BwOiBUZXN0cyBvZiB0aGUgR0xfQ0hST01JVU1fY29weV90ZXh0dXJlIGV4dGVu
c2lvbgotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotbmFtZXNwYWNlIGFu
Z2xlCi17Ci0KLWNsYXNzIENvcHlUZXh0dXJlVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAg
cHJvdGVjdGVkOgotICAgIENvcHlUZXh0dXJlVGVzdCgpCi0gICAgewotICAgICAgICBzZXRXaW5k
b3dXaWR0aCgyNTYpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMjU2KTsKLSAgICAgICAgc2V0
Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAg
ICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwot
ICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQU5HTEVU
ZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGdsR2VuVGV4dHVyZXMoMiwgbVRleHR1cmVzKTsKLSAg
ICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0pOwotCi0gICAg
ICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xf
Q0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwot
ICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklM
VEVSLCBHTF9ORUFSRVNUKTsKLQotICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbUZyYW1l
YnVmZmVyKTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFt
ZWJ1ZmZlcik7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIs
IEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0KLSAgICAgICAgaWYgKGV4dGVuc2lvbkVu
YWJsZWQoIkdMX0NIUk9NSVVNX2NvcHlfdGV4dHVyZSIpKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBnbENvcHlUZXh0dXJlQ0hST01JVU0gPSByZWludGVycHJldF9jYXN0PFBGTkdMQ09QWVRFWFRV
UkVDSFJPTUlVTVBST0M+KAotICAgICAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbENv
cHlUZXh0dXJlQ0hST01JVU0iKSk7Ci0gICAgICAgICAgICBnbENvcHlTdWJUZXh0dXJlQ0hST01J
VU0gPSByZWludGVycHJldF9jYXN0PFBGTkdMQ09QWVNVQlRFWFRVUkVDSFJPTUlVTVBST0M+KAot
ICAgICAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbENvcHlTdWJUZXh0dXJlQ0hST01J
VU0iKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMiwgbVRleHR1cmVzKTsKLSAgICAgICAg
Z2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1GcmFtZWJ1ZmZlcik7Ci0KLSAgICAgICAgQU5HTEVU
ZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQotICAgIGJvb2wgY2hlY2tFeHRlbnNpb25zKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQ0hST01JVU1fY29w
eV90ZXh0dXJlIikpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBz
a2lwcGVkIGJlY2F1c2UgR0xfQ0hST01JVU1fY29weV90ZXh0dXJlIGlzIG5vdCBhdmFpbGFibGUu
IgotICAgICAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIEVYUEVDVF9ORShudWxscHRyLCBnbENvcHlU
ZXh0dXJlQ0hST01JVU0pOwotICAgICAgICBFWFBFQ1RfTkUobnVsbHB0ciwgZ2xDb3B5U3ViVGV4
dHVyZUNIUk9NSVVNKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgR0x1aW50
IG1UZXh0dXJlc1syXSA9IHsKLSAgICAgICAgMCwgMCwKLSAgICB9OwotICAgIEdMdWludCBtRnJh
bWVidWZmZXIgPSAwOwotCi0gICAgUEZOR0xDT1BZVEVYVFVSRUNIUk9NSVVNUFJPQyBnbENvcHlU
ZXh0dXJlQ0hST01JVU0gICAgICAgPSBudWxscHRyOwotICAgIFBGTkdMQ09QWVNVQlRFWFRVUkVD
SFJPTUlVTVBST0MgZ2xDb3B5U3ViVGV4dHVyZUNIUk9NSVVNID0gbnVsbHB0cjsKLX07Ci0KLS8v
IFRlc3QgdG8gZW5zdXJlIHRoYXQgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGV4dGVu
c2lvbiB3b3Jrcy4KLVRFU1RfUChDb3B5VGV4dHVyZVRlc3QsIEJhc2ljQ29weVRleHR1cmUpCi17
Ci0gICAgaWYgKCFjaGVja0V4dGVuc2lvbnMoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBHTENvbG9yIHBpeGVscyA9IEdMQ29sb3I6OnJlZDsKLQotICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKLSAgICBnbFRleEltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwgJnBpeGVscyk7Ci0KLSAgICBnbENvcHlUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBt
VGV4dHVyZXNbMV0sIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBmYWxzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgcGl4ZWxzKTsKLX0KLQotLy8g
VGVzdCB0byBlbnN1cmUgdGhhdCB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZXh0ZW5z
aW9uIHdvcmtzLgotVEVTVF9QKENvcHlUZXh0dXJlVGVzdCwgQmFzaWNDb3B5U3ViVGV4dHVyZSkK
LXsKLSAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIEdMQ29sb3IgcGl4ZWxzID0gR0xDb2xvcjo6cmVkOwotCi0gICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOwotICAgIGdsVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLCAmcGl4ZWxzKTsKLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1
cmVzWzFdKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMSwg
MSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0KLSAgICBnbENvcHlT
dWJUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0sIDAsIDAsIDAsIDAs
IDEsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci0KLSAgICAvLyBDaGVjayB0aGF0IEZCIGlzIGNvbXBsZXRlLgotICAgIEVYUEVDVF9HTEVOVU1f
RVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9G
UkFNRUJVRkZFUikpOwotCi0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIHBpeGVscyk7
Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCB0aGF0IENvcHlUZXh0
dXJlIGNhbm5vdCByZWRlZmluZSBhbiBpbW11dGFibGUgdGV4dHVyZSBhbmQgQ29weVN1YlRleHR1
cmUgY2FuIGNvcHkgZGF0YSB0bwotLy8gaW1tdXRhYmxlIHRleHR1cmVzCi1URVNUX1AoQ29weVRl
eHR1cmVUZXN0LCBJbW11dGFibGVUZXh0dXJlKQotewotICAgIGlmICghY2hlY2tFeHRlbnNpb25z
KCkpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdldENsaWVudE1h
am9yVmVyc2lvbigpIDwgMyAmJgotICAgICAgICAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90
ZXh0dXJlX3N0b3JhZ2UiKSB8fCAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3JnYjhfcmdiYTgi
KSkpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQKLSAgICAgICAgICAgIDw8ICJUZXN0IHNraXBw
ZWQgZHVlIHRvIG1pc3NpbmcgRVMzIG9yIEdMX0VYVF90ZXh0dXJlX3N0b3JhZ2Ugb3IgR0xfT0VT
X3JnYjhfcmdiYTgiCi0gICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBHTENvbG9yIHBpeGVscyA9IEdMQ29sb3I6OnJlZDsKLQotICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKLSAgICBnbFRleFN0b3JhZ2Uy
REVYVChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOF9PRVMsIDEsIDEpOwotICAgIGdsVGV4U3Vi
SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCAmcGl4ZWxzKTsKLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRl
eHR1cmVzWzFdKTsKLSAgICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJELCAxLCBHTF9S
R0JBOF9PRVMsIDEsIDEpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZG
RVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0sIDAp
OwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gU2hvdWxkIGdlbmVyYXRlIGFu
IGVycm9yIHdoZW4gdGhlIHRleHR1cmUgaXMgcmVkZWZpbmVkCi0gICAgZ2xDb3B5VGV4dHVyZUNI
Uk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLCBmYWxzZSwgZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKLSAg
ICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgLy8gU2hvdWxk
IHN1Y2NlZWQgd2hlbiB1c2luZyBDb3B5U3ViVGV4dHVyZQotICAgIGdsQ29weVN1YlRleHR1cmVD
SFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgMCwgMCwgMCwgMCwgMSwgMSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBD
aGVjayB0aGF0IEZCIGlzIGNvbXBsZXRlLgotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVC
VUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikp
OwotCi0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIHBpeGVscyk7Ci0KLSAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCB2YWxpZGF0aW9uIG9mIGludGVybmFsIGZv
cm1hdHMgaW4gQ29weVRleHR1cmUgYW5kIENvcHlTdWJUZXh0dXJlCi1URVNUX1AoQ29weVRleHR1
cmVUZXN0LCBJbnRlcm5hbEZvcm1hdCkKLXsKLSAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHN0ZDo6dmVjdG9yPEdMaW50PiBz
b3VyY2VGb3JtYXRzOwotICAgIHNvdXJjZUZvcm1hdHMucHVzaF9iYWNrKEdMX0FMUEhBKTsKLSAg
ICBzb3VyY2VGb3JtYXRzLnB1c2hfYmFjayhHTF9SR0IpOwotICAgIHNvdXJjZUZvcm1hdHMucHVz
aF9iYWNrKEdMX1JHQkEpOwotICAgIHNvdXJjZUZvcm1hdHMucHVzaF9iYWNrKEdMX0xVTUlOQU5D
RSk7Ci0gICAgc291cmNlRm9ybWF0cy5wdXNoX2JhY2soR0xfTFVNSU5BTkNFX0FMUEhBKTsKLQot
ICAgIHN0ZDo6dmVjdG9yPEdMaW50PiBkZXN0Rm9ybWF0czsKLSAgICBkZXN0Rm9ybWF0cy5wdXNo
X2JhY2soR0xfUkdCKTsKLSAgICBkZXN0Rm9ybWF0cy5wdXNoX2JhY2soR0xfUkdCQSk7Ci0KLSAg
ICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4Iikp
Ci0gICAgewotICAgICAgICBzb3VyY2VGb3JtYXRzLnB1c2hfYmFjayhHTF9CR1JBX0VYVCk7Ci0g
ICAgICAgIGRlc3RGb3JtYXRzLnB1c2hfYmFjayhHTF9CR1JBX0VYVCk7Ci0gICAgfQotCi0gICAg
Ly8gVGVzdCB3aXRoIGdsQ29weVRleHR1cmUKLSAgICBmb3IgKEdMaW50IHNvdXJjZUZvcm1hdCA6
IHNvdXJjZUZvcm1hdHMpCi0gICAgewotICAgICAgICBmb3IgKEdMaW50IGRlc3RGb3JtYXQgOiBk
ZXN0Rm9ybWF0cykKLSAgICAgICAgewotICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCBtVGV4dHVyZXNbMF0pOwotICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAsIHNvdXJjZUZvcm1hdCwgMSwgMSwgMCwgc291cmNlRm9ybWF0LCBHTF9VTlNJR05F
RF9CWVRFLAotICAgICAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICAgICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgICAgIGdsQ29weVRleHR1cmVDSFJPTUlV
TShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgZGVzdEZvcm1hdCwgR0xfVU5TSUdORURfQllU
RSwgZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIGZhbHNl
KTsKLQotICAgICAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICAvLyBUZXN0IHdpdGggZ2xDb3B5U3ViVGV4dHVyZQotICAgIGZvciAoR0xpbnQgc291
cmNlRm9ybWF0IDogc291cmNlRm9ybWF0cykKLSAgICB7Ci0gICAgICAgIGZvciAoR0xpbnQgZGVz
dEZvcm1hdCA6IGRlc3RGb3JtYXRzKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7Ci0gICAgICAgICAgICBnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMCwgc291cmNlRm9ybWF0LCAxLCAxLCAwLCBzb3VyY2VGb3JtYXQs
IEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0g
ICAgICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICAgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0pOwotICAgICAgICAgICAgZ2xUZXhJbWFn
ZTJEKEdMX1RFWFRVUkVfMkQsIDAsIGRlc3RGb3JtYXQsIDEsIDEsIDAsIGRlc3RGb3JtYXQsIEdM
X1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAg
ICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICAgICAgZ2xDb3B5U3ViVGV4
dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdLCAwLCAwLCAwLCAwLCAxLCAx
LCBmYWxzZSwgZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFs
c2UpOwotCi0gICAgICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgfQotICAg
IH0KLX0KLQotLy8gQ2hlY2sgdGhhdCBpbnZhbGlkIGludGVybmFsIGZvcm1hdHMgcmV0dXJuIGVy
cm9ycy4KLVRFU1RfUChDb3B5VGV4dHVyZVRlc3QsIEludGVybmFsRm9ybWF0Tm90U3VwcG9ydGVk
KQotewotICAgIGlmICghY2hlY2tFeHRlbnNpb25zKCkpCi0gICAgewotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0p
OwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKLQotICAgIHN0ZDo6dmVjdG9yPEdMaW50PiB1bnN1cHBvcnRlZERlc3RGb3JtYXRzOwot
ICAgIHVuc3VwcG9ydGVkRGVzdEZvcm1hdHMucHVzaF9iYWNrKEdMX0FMUEhBKTsKLSAgICB1bnN1
cHBvcnRlZERlc3RGb3JtYXRzLnB1c2hfYmFjayhHTF9MVU1JTkFOQ0UpOwotICAgIHVuc3VwcG9y
dGVkRGVzdEZvcm1hdHMucHVzaF9iYWNrKEdMX0xVTUlOQU5DRV9BTFBIQSk7Ci0KLSAgICBpZiAo
IWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpKQotICAg
IHsKLSAgICAgICAgdW5zdXBwb3J0ZWREZXN0Rm9ybWF0cy5wdXNoX2JhY2soR0xfQkdSQV9FWFQp
OwotICAgIH0KLQotICAgIC8vIENoZWNrIHVuc3VwcG9ydGVkIGZvcm1hdCByZXBvcnRzIGFuIGVy
cm9yLgotICAgIGZvciAoR0xpbnQgdW5zdXBwb3J0ZWREZXN0Rm9ybWF0IDogdW5zdXBwb3J0ZWRE
ZXN0Rm9ybWF0cykKLSAgICB7Ci0gICAgICAgIGdsQ29weVRleHR1cmVDSFJPTUlVTShtVGV4dHVy
ZXNbMF0sIG1UZXh0dXJlc1sxXSwgdW5zdXBwb3J0ZWREZXN0Rm9ybWF0LCBHTF9VTlNJR05FRF9C
WVRFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIGZhbHNlLCBmYWxzZSk7
Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgfQot
Ci0gICAgZm9yIChHTGludCB1bnN1cHBvcnRlZERlc3RGb3JtYXQgOiB1bnN1cHBvcnRlZERlc3RG
b3JtYXRzKQotICAgIHsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4
dHVyZXNbMV0pOwotICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgdW5zdXBw
b3J0ZWREZXN0Rm9ybWF0LCAxLCAxLCAwLCB1bnN1cHBvcnRlZERlc3RGb3JtYXQsCi0gICAgICAg
ICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLSAgICAgICAgZ2xDb3B5
U3ViVGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdLCAwLCAwLCAwLCAw
LCAxLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdG8gZW5zdXJlIHRoYXQg
dGhlIGRlc3RpbmF0aW9uIHRleHR1cmUgaXMgcmVkZWZpbmVkIGlmIHRoZSBwcm9wZXJ0aWVzIGFy
ZSBkaWZmZXJlbnQuCi1URVNUX1AoQ29weVRleHR1cmVUZXN0LCBSZWRlZmluZURlc3RpbmF0aW9u
VGV4dHVyZSkKLXsKLSAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQotICAgIHsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIEdMQ29sb3IgcGl4ZWxzWzRdID0ge0dMQ29sb3I6OnJlZCwg
R0xDb2xvcjo6cmVkLCBHTENvbG9yOjpyZWQsIEdMQ29sb3I6OnJlZH07Ci0KLSAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIHBpeGVscyk7Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJl
c1sxXSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX0JHUkFfRVhULCAx
LCAxLCAwLCBHTF9CR1JBX0VYVCwgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzKTsKLSAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIEdMX0lOVkFMSURfT1BFUkFUSU9OIGR1ZSB0byAi
aW50cmluc2ljIGZvcm1hdCIgIT0gImludGVybmFsIGZvcm1hdCIuCi0gICAgZ2xUZXhTdWJJbWFn
ZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIHBpeGVscyk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LSAgICAvLyBHTF9JTlZBTElEX1ZBTFVFIGR1ZSB0byBiYWQgZGltZW5zaW9ucy4KLSAgICBnbFRl
eFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMSwgMSwgMSwgMSwgR0xfQkdSQV9FWFQsIEdM
X1VOU0lHTkVEX0JZVEUsIHBpeGVscyk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURf
VkFMVUUpOwotCi0gICAgLy8gSWYgdGhlIGRlc3QgdGV4dHVyZSBoYXMgZGlmZmVyZW50IHByb3Bl
cnRpZXMsIGdsQ29weVRleHR1cmVDSFJPTUlVTSgpCi0gICAgLy8gcmVkZWZpbmVzIHRoZW0uCi0g
ICAgZ2xDb3B5VGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgbVRleHR1cmVzWzFdLCBHTF9S
R0JBLCBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSwgZmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGZhbHNlKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIGdsVGV4
U3ViSW1hZ2UyRCgpIHN1Y2NlZWRzIGJlY2F1c2UgbVRleHR1cmVzWzFdIGlzIHJlZGVmaW5lZCBp
bnRvIDJ4MgotICAgIC8vIGRpbWVuc2lvbiBhbmQgR0xfUkdCQSBmb3JtYXQuCi0gICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0pOwotICAgIGdsVGV4U3ViSW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAwLCAxLCAxLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCBwaXhlbHMpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gQ2hlY2sgdGhh
dCBGQiBpcyBjb21wbGV0ZS4KLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NP
TVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLQotICAg
IEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgxLCAxLCBwaXhlbHNbM10pOwotICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOwotfQotCi0vLyBUZXN0IHRoYXQgaW52YWxpZCBkaW1lbnNpb25zIGluIENvcHlT
dWJUZXh0dXJlIGFyZSB2YWxpZGF0ZWQKLVRFU1RfUChDb3B5VGV4dHVyZVRlc3QsIENvcHlTdWJU
ZXh0dXJlRGltZW5zaW9uKQotewotICAgIGlmICghY2hlY2tFeHRlbnNpb25zKCkpCi0gICAgewot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCBtVGV4dHVyZXNbMF0pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9S
R0JBLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLQotICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsKLSAgICBnbFRleElt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMywgMywgMCwgR0xfUkdCQSwgR0xfVU5T
SUdORURfQllURSwgbnVsbHB0cik7Ci0KLSAgICBnbENvcHlTdWJUZXh0dXJlQ0hST01JVU0obVRl
eHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0sIDEsIDEsIDAsIDAsIDEsIDEsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8geG9mZnNldCA8IDAK
LSAgICBnbENvcHlTdWJUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0s
IC0xLCAxLCAwLCAwLCAxLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKLSAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICAvLyB4IDwgMAotICAgIGdsQ29weVN1YlRl
eHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgMSwgMSwgLTEsIDAsIDEs
IDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X1ZBTFVFKTsKLQotICAgIC8vIHhvZmZzZXQgKyB3aWR0aCA+IGRlc3Rfd2lkdGgKLSAgICBnbENv
cHlTdWJUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0sIDIsIDIsIDAs
IDAsIDIsIDIsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9J
TlZBTElEX1ZBTFVFKTsKLQotICAgIC8vIHggKyB3aWR0aCA+IHNvdXJjZV93aWR0aAotICAgIGds
Q29weVN1YlRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgMCwgMCwg
MSwgMSwgMiwgMiwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdM
X0lOVkFMSURfVkFMVUUpOwotfQotCi0vLyBUZXN0IHRoYXQgaW52YWxpZCBJRHMgaW4gQ29weVRl
eHR1cmUgYXJlIHZhbGlkYXRlZAotVEVTVF9QKENvcHlUZXh0dXJlVGVzdCwgQ29weVRleHR1cmVJ
bnZhbGlkVGV4dHVyZUlkcykKLXsKLSAgICBpZiAoIWNoZWNrRXh0ZW5zaW9ucygpKQotICAgIHsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmVzWzBdKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xf
UkdCQSwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0KLSAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7Ci0gICAgZ2xUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDMsIDMsIDAsIEdMX1JHQkEsIEdMX1VO
U0lHTkVEX0JZVEUsIG51bGxwdHIpOwotCi0gICAgZ2xDb3B5VGV4dHVyZUNIUk9NSVVNKG1UZXh0
dXJlc1swXSwgOTk5OTMsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGZhbHNlLCBmYWxzZSwg
ZmFsc2UpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIGds
Q29weVRleHR1cmVDSFJPTUlVTSg5OTk5NCwgbVRleHR1cmVzWzFdLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xf
SU5WQUxJRF9WQUxVRSk7Ci0KLSAgICBnbENvcHlUZXh0dXJlQ0hST01JVU0oOTk5OTUsIDk5OTk2
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKLSAgICBF
WFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICBnbENvcHlUZXh0dXJlQ0hS
T01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0sIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIGZhbHNlLCBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwotICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IHRoYXQgaW52YWxpZCBJRHMgaW4g
Q29weVN1YlRleHR1cmUgYXJlIHZhbGlkYXRlZAotVEVTVF9QKENvcHlUZXh0dXJlVGVzdCwgQ29w
eVN1YlRleHR1cmVJbnZhbGlkVGV4dHVyZUlkcykKLXsKLSAgICBpZiAoIWNoZWNrRXh0ZW5zaW9u
cygpKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgR0xfUkdCQSwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVs
bHB0cik7Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7
Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDMsIDMsIDAsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotCi0gICAgZ2xDb3B5U3ViVGV4dHVy
ZUNIUk9NSVVNKG1UZXh0dXJlc1swXSwgOTk5OTMsIDEsIDEsIDAsIDAsIDEsIDEsIGZhbHNlLCBm
YWxzZSwgZmFsc2UpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQot
ICAgIGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTSg5OTk5NCwgbVRleHR1cmVzWzFdLCAxLCAxLCAw
LCAwLCAxLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xf
SU5WQUxJRF9WQUxVRSk7Ci0KLSAgICBnbENvcHlTdWJUZXh0dXJlQ0hST01JVU0oOTk5OTUsIDk5
OTk2LCAxLCAxLCAwLCAwLCAxLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKLSAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICBnbENvcHlTdWJUZXh0dXJlQ0hST01J
VU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0sIDEsIDEsIDAsIDAsIDEsIDEsIGZhbHNlLCBm
YWxzZSwgZmFsc2UpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IHRo
YXQgdXNpbmcgYW4gb2Zmc2V0IGluIENvcHlTdWJUZXh0dXJlIHdvcmtzIGNvcnJlY3RseQotVEVT
VF9QKENvcHlUZXh0dXJlVGVzdCwgQ29weVN1YlRleHR1cmVPZmZzZXQpCi17Ci0gICAgaWYgKCFj
aGVja0V4dGVuc2lvbnMoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBH
TENvbG9yIHJnYmFQaXhlbHNbNCAqIDRdID0ge0dMQ29sb3I6OnJlZCwgR0xDb2xvcjo6Z3JlZW4s
IEdMQ29sb3I6OmJsdWUsIEdMQ29sb3I6OmJsYWNrfTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDAsIEdMX1JHQkEsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHJnYmFQaXhl
bHMpOwotCi0gICAgR0xDb2xvciB0cmFuc3BhcmVudFBpeGVsc1s0ICogNF0gPSB7R0xDb2xvcjo6
dHJhbnNwYXJlbnRCbGFjaywgR0xDb2xvcjo6dHJhbnNwYXJlbnRCbGFjaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTENvbG9yOjp0cmFuc3BhcmVudEJsYWNrLCBH
TENvbG9yOjp0cmFuc3BhcmVudEJsYWNrfTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIG1UZXh0dXJlc1sxXSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdM
X1JHQkEsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHRyYW5zcGFyZW50UGl4
ZWxzKTsKLQotICAgIGdsQ29weVN1YlRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0
dXJlc1sxXSwgMSwgMSwgMCwgMCwgMSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Ci0gICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgZ2xDb3B5U3ViVGV4dHVyZUNIUk9NSVVNKG1UZXh0dXJl
c1swXSwgbVRleHR1cmVzWzFdLCAxLCAwLCAxLCAwLCAxLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNl
KTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBnbENvcHlTdWJUZXh0dXJlQ0hST01J
VU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0sIDAsIDEsIDAsIDEsIDEsIDEsIGZhbHNlLCBm
YWxzZSwgZmFsc2UpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gQ2hlY2sg
dGhhdCBGQiBpcyBjb21wbGV0ZS4KLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVS
X0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLQot
ICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjp0cmFuc3BhcmVudEJsYWNr
KTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMSwgMSwgR0xDb2xvcjo6cmVkKTsKLSAgICBF
WFBFQ1RfUElYRUxfQ09MT1JfRVEoMSwgMCwgR0xDb2xvcjo6Z3JlZW4pOwotICAgIEVYUEVDVF9Q
SVhFTF9DT0xPUl9FUSgwLCAxLCBHTENvbG9yOjpibHVlKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKLX0KLQotLy8gVGVzdCB0aGF0IGZsaXBwaW5nIHRoZSBZIGNvbXBvbmVudCB3b3JrcyBj
b3JyZWN0bHkKLVRFU1RfUChDb3B5VGV4dHVyZVRlc3QsIEZsaXBZKQotewotICAgIGlmICghY2hl
Y2tFeHRlbnNpb25zKCkpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xD
b2xvciByZ2JhUGl4ZWxzWzRdID0ge0dMQ29sb3IoMjU1dSwgMjU1dSwgMjU1dSwgMjU1dSksIEdM
Q29sb3IoMTI3dSwgMTI3dSwgMTI3dSwgMTI3dSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMQ29sb3IoNjN1LCA2M3UsIDYzdSwgMTI3dSksIEdMQ29sb3IoMjU1dSwgMjU1dSwgMjU1
dSwgMHUpfTsKLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBd
KTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMiwgMiwgMCwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcmdiYVBpeGVscyk7Ci0KLSAgICBnbENvcHlUZXh0
dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNbMV0sIEdMX1JHQkEsIEdMX1VOU0lH
TkVEX0JZVEUsIEdMX1RSVUUsIEdMX0ZBTFNFLAotICAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9GQUxTRSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBDaGVjayB0aGF0
IEZCIGlzIGNvbXBsZXRlLgotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09N
UExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotCi0gICAg
RVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIHJnYmFQaXhlbHNbMl0pOwotICAgIEVYUEVDVF9Q
SVhFTF9DT0xPUl9FUSgxLCAwLCByZ2JhUGl4ZWxzWzNdKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09M
T1JfRVEoMCwgMSwgcmdiYVBpeGVsc1swXSk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDEs
IDEsIHJnYmFQaXhlbHNbMV0pOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBU
ZXN0IHRoYXQgcHJlbXVsdGlweWluZyB0aGUgYWxwaGEgb24gY29weSB3b3JrcyBjb3JyZWN0bHkK
LVRFU1RfUChDb3B5VGV4dHVyZVRlc3QsIFByZW11bHRpcGx5QWxwaGEpCi17Ci0gICAgaWYgKCFj
aGVja0V4dGVuc2lvbnMoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBH
TENvbG9yIHJnYmFQaXhlbHNbNF0gPSB7R0xDb2xvcigyNTV1LCAyNTV1LCAyNTV1LCAyNTV1KSwg
R0xDb2xvcigyNTV1LCAyNTV1LCAyNTV1LCAxMjd1KSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xDb2xvcigxMjd1LCAxMjd1LCAxMjd1LCAxMjd1KSwgR0xDb2xvcigyNTV1LCAyNTV1
LCAyNTV1LCAwdSl9OwotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVy
ZXNbMF0pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAyLCAy
LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCByZ2JhUGl4ZWxzKTsKLQotICAgIGdsQ29w
eVRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0dXJlc1sxXSwgR0xfUkdCQSwgR0xf
VU5TSUdORURfQllURSwgR0xfRkFMU0UsIEdMX1RSVUUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX0ZBTFNFKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIENoZWNr
IHRoYXQgRkIgaXMgY29tcGxldGUuCi0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZF
Ul9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7Ci0K
LSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfTkVBUigwLCAwLCBHTENvbG9yKDI1NSwgMjU1LCAyNTUs
IDI1NSksIDEuMCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMSwgMCwgR0xDb2xvcigx
MjcsIDEyNywgMTI3LCAxMjcpLCAxLjApOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDAs
IDEsIEdMQ29sb3IoNjMsIDYzLCA2MywgMTI3KSwgMS4wKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09M
T1JfTkVBUigxLCAxLCBHTENvbG9yKDAsIDAsIDAsIDApLCAxLjApOwotICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOwotfQotCi0vLyBUZXN0IHRoYXQgdW5tdWx0aXB5aW5nIHRoZSBhbHBoYSBvbiBj
b3B5IHdvcmtzIGNvcnJlY3RseQotVEVTVF9QKENvcHlUZXh0dXJlVGVzdCwgVW5tdWx0aXBseUFs
cGhhKQotewotICAgIGlmICghY2hlY2tFeHRlbnNpb25zKCkpCi0gICAgewotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgR0xDb2xvciByZ2JhUGl4ZWxzWzRdID0ge0dMQ29sb3IoMjU1dSwg
MjU1dSwgMjU1dSwgMjU1dSksIEdMQ29sb3IoMTI3dSwgMTI3dSwgMTI3dSwgMTI3dSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMQ29sb3IoNjN1LCA2M3UsIDYzdSwgMTI3dSksIEdM
Q29sb3IoMjU1dSwgMjU1dSwgMjU1dSwgMHUpfTsKLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgR0xfUkdCQSwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcmdiYVBpeGVs
cyk7Ci0KLSAgICBnbENvcHlUZXh0dXJlQ0hST01JVU0obVRleHR1cmVzWzBdLCBtVGV4dHVyZXNb
MV0sIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIEdMX0ZBTFNFLCBHTF9GQUxTRSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfVFJVRSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci0KLSAgICAvLyBDaGVjayB0aGF0IEZCIGlzIGNvbXBsZXRlLgotICAgIEVYUEVDVF9HTEVOVU1f
RVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9G
UkFNRUJVRkZFUikpOwotCi0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMCwgMCwgR0xDb2xv
cigyNTUsIDI1NSwgMjU1LCAyNTUpLCAxLjApOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFS
KDEsIDAsIEdMQ29sb3IoMjU1LCAyNTUsIDI1NSwgMTI3KSwgMS4wKTsKLSAgICBFWFBFQ1RfUElY
RUxfQ09MT1JfTkVBUigwLCAxLCBHTENvbG9yKDEyNywgMTI3LCAxMjcsIDEyNyksIDEuMCk7Ci0g
ICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMSwgMSwgR0xDb2xvcigyNTUsIDI1NSwgMjU1LCAw
KSwgMS4wKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCB0aGF0IHVu
bXVsdGlweWluZyBhbmQgcHJlbXVsdGlwbHlpbmcgdGhlIGFscGhhIGlzIHRoZSBzYW1lIGFzIGRv
aW5nIG5laXRoZXIKLVRFU1RfUChDb3B5VGV4dHVyZVRlc3QsIFVubXVsdGlwbHlBbmRQcmVtdWx0
cGx5QWxwaGEpCi17Ci0gICAgaWYgKCFjaGVja0V4dGVuc2lvbnMoKSkKLSAgICB7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBHTENvbG9yIHJnYmFQaXhlbHNbNF0gPSB7R0xDb2xvcigy
NTV1LCAyNTV1LCAyNTV1LCAyNTV1KSwgR0xDb2xvcigxMjd1LCAxMjd1LCAxMjd1LCAxMjd1KSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xDb2xvcig2M3UsIDYzdSwgNjN1LCAxMjd1
KSwgR0xDb2xvcigyNTV1LCAyNTV1LCAyNTV1LCAwdSl9OwotCi0gICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCBHTF9SR0JBLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCByZ2Jh
UGl4ZWxzKTsKLQotICAgIGdsQ29weVRleHR1cmVDSFJPTUlVTShtVGV4dHVyZXNbMF0sIG1UZXh0
dXJlc1sxXSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgR0xfRkFMU0UsIEdMX1RSVUUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1RSVUUpOwotICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOwotCi0gICAgLy8gQ2hlY2sgdGhhdCBGQiBpcyBjb21wbGV0ZS4KLSAgICBFWFBFQ1RfR0xF
TlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMo
R0xfRlJBTUVCVUZGRVIpKTsKLQotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDAsIDAsIEdM
Q29sb3IoMjU1LCAyNTUsIDI1NSwgMjU1KSwgMS4wKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1Jf
TkVBUigxLCAwLCBHTENvbG9yKDEyNywgMTI3LCAxMjcsIDEyNyksIDEuMCk7Ci0gICAgRVhQRUNU
X1BJWEVMX0NPTE9SX05FQVIoMCwgMSwgR0xDb2xvcig2MywgNjMsIDYzLCAxMjcpLCAxLjApOwot
ICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKDEsIDEsIEdMQ29sb3IoMjU1LCAyNTUsIDI1NSwg
MCksIDEuMCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFVzZSB0aGlzIHRv
IHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2gg
R0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZQotLy8gdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0
LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChDb3B5VGV4dHVyZVRlc3QsIEVTMl9EM0Q5KCksIEVT
Ml9EM0QxMSgpLCBFUzJfT1BFTkdMKCksIEVTMl9PUEVOR0xFUygpKTsKLQotfSAgLy8gbmFtZXNw
YWNlIGFuZ2xlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvQ3ViZU1hcFRleHR1cmVUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbF90ZXN0cy9DdWJlTWFwVGV4dHVyZVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxMGZjZTE1YjA1ZS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0N1YmVNYXBUZXh0dXJlVGVzdC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgInRl
c3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotY2xhc3Mg
Q3ViZU1hcFRleHR1cmVUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0g
ICAgQ3ViZU1hcFRleHR1cmVUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDI1
Nik7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgyNTYpOwotICAgICAgICBzZXRDb25maWdSZWRC
aXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZp
Z0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotCi0g
ICAgdmlydHVhbCB2b2lkIFNldFVwKCkKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAo
KTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2c1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UK
LSAgICAgICAgKAotICAgICAgICAgICAgYXR0cmlidXRlIGhpZ2hwIHZlYzQgcG9zaXRpb247Ci0g
ICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0g
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAg
ICAoCi0gICAgICAgICAgICB1bmlmb3JtIGhpZ2hwIHZlYzQgY29sb3I7Ci0gICAgICAgICAgICB2
b2lkIG1haW4odm9pZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29s
b3IgPSBjb2xvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBtUHJvZ3Jh
bSA9IENvbXBpbGVQcm9ncmFtKHZzU291cmNlLCBmc1NvdXJjZSk7Ci0gICAgICAgIGlmIChtUHJv
Z3JhbSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBGQUlMKCkgPDwgInNoYWRlciBjb21w
aWxhdGlvbiBmYWlsZWQuIjsKLSAgICAgICAgfQotCi0gICAgICAgIG1Db2xvckxvY2F0aW9uID0g
Z2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJjb2xvciIpOwotCi0gICAgICAgIGdsVXNl
UHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICAgICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDApOwot
ICAgICAgICBnbENsZWFyRGVwdGhmKDAuMCk7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVG
RkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQpOwotCi0gICAgICAgIGdsRW5hYmxlKEdMX0JM
RU5EKTsKLSAgICAgICAgZ2xEaXNhYmxlKEdMX0RFUFRIX1RFU1QpOwotCi0gICAgICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCi0g
ICAgewotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotCi0gICAgICAgIEFOR0xF
VGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVByb2dyYW07Ci0gICAgR0xp
bnQgbUNvbG9yTG9jYXRpb247Ci19OwotCi0vLyBWZXJpZnkgdGhhdCByZW5kZXJpbmcgdG8gdGhl
IGZhY2VzIG9mIGEgY3ViZSBtYXAgY29uc2VjdXRpdmVseSB3aWxsIGNvcnJlY3RseSByZW5kZXIg
dG8gZWFjaCBmYWNlLgotVEVTVF9QKEN1YmVNYXBUZXh0dXJlVGVzdCwgUmVuZGVyVG9GYWNlc0Nv
bnNlY3V0aXZlbHkpCi17Ci0gICAgY29uc3QgR0xmbG9hdCBmYWNlQ29sb3JzW10gPQotICAgIHsK
LSAgICAgICAgMS4wZiwgMC4wZiwgMC4wZiwgMS4wZiwKLSAgICAgICAgMC4wZiwgMS4wZiwgMC4w
ZiwgMS4wZiwKLSAgICAgICAgMC4wZiwgMC4wZiwgMS4wZiwgMS4wZiwKLSAgICAgICAgMS4wZiwg
MS4wZiwgMC4wZiwgMS4wZiwKLSAgICAgICAgMS4wZiwgMC4wZiwgMS4wZiwgMS4wZiwKLSAgICAg
ICAgMC4wZiwgMS4wZiwgMS4wZiwgMS4wZiwKLSAgICB9OwotCi0gICAgR0x1aW50IHRleCA9IDA7
Ci0gICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4KTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfQ1VCRV9NQVAsIHRleCk7Ci0gICAgZ2xUZXhTdG9yYWdlMkRFWFQoR0xfVEVYVFVSRV9DVUJF
X01BUCwgMSwgR0xfUkdCQThfT0VTLCAxLCAxKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
LQotICAgIEdMdWludCBmYm8gPSAwOwotICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZmYm8pOwot
ICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8pOwotICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotCi0gICAgZm9yIChHTGVudW0gZmFjZSA9IDA7IGZhY2UgPCA2OyBmYWNl
KyspCi0gICAgewotICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YICsg
ZmFjZSwgdGV4LCAwKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAg
Z2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgICAgICBjb25zdCBHTGZsb2F0ICpmYWNlQ29s
b3IgPSBmYWNlQ29sb3JzICsgKGZhY2UgKiA0KTsKLSAgICAgICAgZ2xVbmlmb3JtNGYobUNvbG9y
TG9jYXRpb24sIGZhY2VDb2xvclswXSwgZmFjZUNvbG9yWzFdLCBmYWNlQ29sb3JbMl0sIGZhY2VD
b2xvclszXSk7Ci0KLSAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYp
OwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICBmb3IgKEdMZW51
bSBmYWNlID0gMDsgZmFjZSA8IDY7IGZhY2UrKykKLSAgICB7Ci0gICAgICAgIGdsRnJhbWVidWZm
ZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhU
VVJFX0NVQkVfTUFQX1BPU0lUSVZFX1ggKyBmYWNlLCB0ZXgsIDApOwotICAgICAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKLQotICAgICAgICBjb25zdCBHTGZsb2F0ICpmYWNlQ29sb3IgPSBmYWNl
Q29sb3JzICsgKGZhY2UgKiA0KTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIGZhY2VD
b2xvclswXSAqIDI1NSwgZmFjZUNvbG9yWzFdICogMjU1LCBmYWNlQ29sb3JbMl0gKiAyNTUsIGZh
Y2VDb2xvclszXSAqIDI1NSk7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIH0K
LQotICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmYm8pOwotICAgIGdsRGVsZXRlVGV4dHVy
ZXMoMSwgJnRleCk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVXNlIHRo
aXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3
aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5z
dC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoQ3ViZU1hcFRleHR1cmVUZXN0LAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0Qz
RDExX0ZMOV8zKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBF
UzJfT1BFTkdMRVMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0Qz
RDExRW11bGF0ZWRJbmRleGVkQnVmZmVyVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvZ2xfdGVzdHMvRDNEMTFFbXVsYXRlZEluZGV4ZWRCdWZmZXJUZXN0LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIyN2U3YmZjMWQuLjAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EM0QxMUVtdWxh
dGVkSW5kZXhlZEJ1ZmZlclRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTkzICswLDAgQEAK
LS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KLS8vCi0vLyBEM0QxMUVtdWxhdGVkSW5kZXhlZEJ1ZmZlclRlc3Q6Ci0vLyAgIFRlc3Rz
IHRvIHZhbGlkYXRlIG91ciBEM0QxMSBzdXBwb3J0IGZvciBlbXVsYXRpbmcgYW4gaW5kZXhlZAot
Ly8gICB2ZXJ0ZXggYnVmZmVyLgotLy8KLQotI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMu
aCIKLSNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVu
ZGVyZXIvZDNkL2QzZDExL0J1ZmZlcjExLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIv
ZDNkL2QzZDExL0NvbnRleHQxMS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9k
M2QxMS9SZW5kZXJlcjExLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0luZGV4
RGF0YU1hbmFnZXIuaCIKLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotI2luY2x1
ZGUgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5oIgotCi11c2luZyBuYW1lc3Bh
Y2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1jbGFzcyBEM0QxMUVtdWxhdGVkSW5kZXhlZEJ1
ZmZlclRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLQotICAgIHZvaWQg
U2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotICAg
ICAgICBBU1NFUlRfRVEoRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsIEdldFBh
cmFtKCkuZ2V0UmVuZGVyZXIoKSk7Ci0KLSAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBy
ZWludGVycHJldF9jYXN0PGdsOjpDb250ZXh0ICo+KGdldEVHTFdpbmRvdygpLT5nZXRDb250ZXh0
KCkpOwotICAgICAgICByeDo6Q29udGV4dDExICpjb250ZXh0MTEgPSByeDo6R2V0SW1wbEFzPHJ4
OjpDb250ZXh0MTE+KGNvbnRleHQpOwotICAgICAgICBtUmVuZGVyZXIgICAgICAgICAgICAgICAg
PSBjb250ZXh0MTEtPmdldFJlbmRlcmVyKCk7Ci0KLSAgICAgICAgbVNvdXJjZUJ1ZmZlciA9IG5l
dyByeDo6QnVmZmVyMTEobVJlbmRlcmVyKTsKLSAgICAgICAgR0xmbG9hdCB0ZXN0RGF0YVtdID0g
eyAxLjBmLCAyLjBmLCAzLjBmLCA0LjBmLCA1LjBmLCA2LjBmIH07Ci0gICAgICAgIGdsOjpFcnJv
ciBlcnJvciA9Ci0gICAgICAgICAgICBtU291cmNlQnVmZmVyLT5zZXREYXRhKEdMX0FSUkFZX0JV
RkZFUiwgdGVzdERhdGEsIHNpemVvZih0ZXN0RGF0YSksIEdMX1NUQVRJQ19EUkFXKTsKLSAgICAg
ICAgQVNTRVJUX0ZBTFNFKGVycm9yLmlzRXJyb3IoKSk7Ci0KLSAgICAgICAgbVRyYW5zbGF0ZWRB
dHRyaWJ1dGUuYmFzZU9mZnNldCAgICAgICAgICAgID0gMDsKLSAgICAgICAgbVRyYW5zbGF0ZWRB
dHRyaWJ1dGUudXNlc0ZpcnN0VmVydGV4T2Zmc2V0ID0gZmFsc2U7Ci0gICAgICAgIG1UcmFuc2xh
dGVkQXR0cmlidXRlLnN0cmlkZSA9IHNpemVvZihHTGZsb2F0KTsKLQotICAgICAgICBHTHVieXRl
IGluZGljZXNbXSA9IHswLCAwLCAzLCA0LCAyLCAxLCAxfTsKLQotICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IEFycmF5U2l6ZShpbmRpY2VzKTsgaSsrKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBtRXhwZWN0ZWRFeHBhbmRlZERhdGEucHVzaF9iYWNrKHRlc3REYXRhW2luZGljZXNbaV1d
KTsKLSAgICAgICAgICAgIG11Ynl0ZUluZGljZXMucHVzaF9iYWNrKGluZGljZXNbaV0pOwotICAg
ICAgICAgICAgbXVpbnRJbmRpY2VzLnB1c2hfYmFjayhpbmRpY2VzW2ldKTsKLSAgICAgICAgICAg
IG11c2hvcnRJbmRpY2VzLnB1c2hfYmFjayhpbmRpY2VzW2ldKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgU2FmZURlbGV0
ZShtU291cmNlQnVmZmVyKTsKLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwotICAgIH0K
LQotICAgIHZvaWQgY3JlYXRlTWFwcGFibGVDb21wYXJlQnVmZmVyRnJvbUVtdWxhdGVkQnVmZmVy
KElEM0QxMUJ1ZmZlciAqc291cmNlQnVmZmVyLCBHTHVpbnQgc2l6ZSwgSUQzRDExQnVmZmVyICoq
bWFwcGFibGVCdWZmZXIpCi0gICAgewotICAgICAgICAqbWFwcGFibGVCdWZmZXIgPSBudWxscHRy
OwotCi0gICAgICAgIEQzRDExX0JVRkZFUl9ERVNDIGJ1ZmZlckRlc2M7Ci0gICAgICAgIGJ1ZmZl
ckRlc2MuQnl0ZVdpZHRoID0gc2l6ZTsKLSAgICAgICAgYnVmZmVyRGVzYy5NaXNjRmxhZ3MgPSAw
OwotICAgICAgICBidWZmZXJEZXNjLlN0cnVjdHVyZUJ5dGVTdHJpZGUgPSAwOwotICAgICAgICBi
dWZmZXJEZXNjLlVzYWdlID0gRDNEMTFfVVNBR0VfU1RBR0lORzsKLSAgICAgICAgYnVmZmVyRGVz
Yy5CaW5kRmxhZ3MgPSAwOwotICAgICAgICBidWZmZXJEZXNjLkNQVUFjY2Vzc0ZsYWdzID0gRDNE
MTFfQ1BVX0FDQ0VTU19SRUFEIHwgRDNEMTFfQ1BVX0FDQ0VTU19XUklURTsKLQotICAgICAgICBI
UkVTVUxUIGhyID0gbVJlbmRlcmVyLT5nZXREZXZpY2UoKS0+Q3JlYXRlQnVmZmVyKCZidWZmZXJE
ZXNjLCBudWxscHRyLCBtYXBwYWJsZUJ1ZmZlcik7Ci0gICAgICAgIEFTU0VSVF9UUlVFKFNVQ0NF
RURFRChocikpOwotCi0gICAgICAgIEQzRDExX0JPWCBzcmNCb3g7Ci0gICAgICAgIHNyY0JveC5s
ZWZ0ID0gMDsKLSAgICAgICAgc3JjQm94LnJpZ2h0ID0gc2l6ZTsKLSAgICAgICAgc3JjQm94LnRv
cCA9IDA7Ci0gICAgICAgIHNyY0JveC5ib3R0b20gPSAxOwotICAgICAgICBzcmNCb3guZnJvbnQg
PSAwOwotICAgICAgICBzcmNCb3guYmFjayA9IDE7Ci0KLSAgICAgICAgbVJlbmRlcmVyLT5nZXRE
ZXZpY2VDb250ZXh0KCktPkNvcHlTdWJyZXNvdXJjZVJlZ2lvbigqbWFwcGFibGVCdWZmZXIsIDAs
IDAsIDAsIDAsIHNvdXJjZUJ1ZmZlciwgMCwgJnNyY0JveCk7Ci0gICAgfQotCi0gICAgdm9pZCBj
b21wYXJlQ29udGVudHMoSUQzRDExQnVmZmVyICphY3R1YWwpCi0gICAgewotICAgICAgICBJRDNE
MTFCdWZmZXIgKmNvbXBhcmVCdWZmZXIgPSBudWxscHRyOwotICAgICAgICBjcmVhdGVNYXBwYWJs
ZUNvbXBhcmVCdWZmZXJGcm9tRW11bGF0ZWRCdWZmZXIoCi0gICAgICAgICAgICBhY3R1YWwsIHNp
emVvZihHTGZsb2F0KSAqIHN0YXRpY19jYXN0PEdMdWludD4obUV4cGVjdGVkRXhwYW5kZWREYXRh
LnNpemUoKSksCi0gICAgICAgICAgICAmY29tcGFyZUJ1ZmZlcik7Ci0KLSAgICAgICAgRDNEMTFf
TUFQUEVEX1NVQlJFU09VUkNFIG1hcHBlZFJlc291cmNlOwotICAgICAgICBIUkVTVUxUIGhyID0g
bVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0KCktPk1hcChjb21wYXJlQnVmZmVyLCAwLCBEM0Qx
MV9NQVBfUkVBRCwgMCwgJm1hcHBlZFJlc291cmNlKTsKLSAgICAgICAgQVNTRVJUX1RSVUUoU1VD
Q0VFREVEKGhyKSk7Ci0KLSAgICAgICAgR0xmbG9hdCogY29tcGFyZURhdGEgPSBzdGF0aWNfY2Fz
dDxHTGZsb2F0Kj4obWFwcGVkUmVzb3VyY2UucERhdGEpOwotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1FeHBlY3RlZEV4cGFuZGVkRGF0YS5zaXplKCk7IGkrKykKLSAgICAgICAgewot
ICAgICAgICAgICAgRVhQRUNUX0VRKG1FeHBlY3RlZEV4cGFuZGVkRGF0YVtpXSwgY29tcGFyZURh
dGFbaV0pOwotICAgICAgICB9Ci0KLSAgICAgICAgbVJlbmRlcmVyLT5nZXREZXZpY2VDb250ZXh0
KCktPlVubWFwKGNvbXBhcmVCdWZmZXIsIDApOwotICAgICAgICBTYWZlUmVsZWFzZShjb21wYXJl
QnVmZmVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGVtdWxhdGVBbmRDb21wYXJlKHJ4OjpTb3VyY2VJ
bmRleERhdGEgKnNyY0RhdGEpCi0gICAgewotICAgICAgICBhdXRvIGJ1ZmZlck9yRXJyb3IgPQot
ICAgICAgICAgICAgbVNvdXJjZUJ1ZmZlci0+Z2V0RW11bGF0ZWRJbmRleGVkQnVmZmVyKHNyY0Rh
dGEsIG1UcmFuc2xhdGVkQXR0cmlidXRlLCAwKTsKLSAgICAgICAgQVNTRVJUX0ZBTFNFKGJ1ZmZl
ck9yRXJyb3IuaXNFcnJvcigpKTsKLSAgICAgICAgSUQzRDExQnVmZmVyICplbXVsYXRlZEJ1ZmZl
ciA9IGJ1ZmZlck9yRXJyb3IuZ2V0UmVzdWx0KCk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKGVtdWxh
dGVkQnVmZmVyICE9IG51bGxwdHIpOwotICAgICAgICBjb21wYXJlQ29udGVudHMoZW11bGF0ZWRC
dWZmZXIpOwotICAgIH0KLQotICBwcm90ZWN0ZWQ6Ci0gICAgcng6OkJ1ZmZlcjExICptU291cmNl
QnVmZmVyOwotICAgIHJ4OjpSZW5kZXJlcjExICptUmVuZGVyZXI7Ci0gICAgcng6OlRyYW5zbGF0
ZWRBdHRyaWJ1dGUgbVRyYW5zbGF0ZWRBdHRyaWJ1dGU7Ci0gICAgc3RkOjp2ZWN0b3I8R0xmbG9h
dD4gbUV4cGVjdGVkRXhwYW5kZWREYXRhOwotICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IG11Ynl0
ZUluZGljZXM7Ci0gICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBtdWludEluZGljZXM7Ci0gICAgc3Rk
Ojp2ZWN0b3I8R0x1c2hvcnQ+IG11c2hvcnRJbmRpY2VzOwotfTsKLQotLy8gVGhpcyB0ZXN0cyB0
aGF0IGEgR0xfVU5TSUdORURfQllURSBpbmRpY2VzIGxpc3QgY2FuIGJlIHN1Y2Nlc3NmdWxseSBl
eHBhbmRlZAotLy8gaW50byBhIHZhbGlkIGVtdWxhdGVkIGluZGV4ZWQgYnVmZmVyLgotVEVTVF9Q
KEQzRDExRW11bGF0ZWRJbmRleGVkQnVmZmVyVGVzdCwgVGVzdE5hdGl2ZVRvRXhwYW5kZWRVc2lu
Z0dMdWJ5dGVJbmRpY2VzKQotewotICAgIHJ4OjpTb3VyY2VJbmRleERhdGEgc3JjRGF0YSA9IHtu
dWxscHRyLCBtdWJ5dGVJbmRpY2VzLmRhdGEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihtdWJ5dGVJbmRpY2VzLnNpemUoKSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIGZh
bHNlfTsKLSAgICBlbXVsYXRlQW5kQ29tcGFyZSgmc3JjRGF0YSk7Ci19Ci0KLS8vIFRoaXMgdGVz
dHMgdGhhdCBhIEdMX1VOU0lHTkVEX1NIT1JUIGluZGljZXMgbGlzdCBjYW4gYmUgc3VjY2Vzc2Z1
bGx5IGV4cGFuZGVkCi0vLyBpbnRvIGEgdmFsaWQgZW11bGF0ZWQgaW5kZXhlZCBidWZmZXIuCi1U
RVNUX1AoRDNEMTFFbXVsYXRlZEluZGV4ZWRCdWZmZXJUZXN0LCBUZXN0TmF0aXZlVG9FeHBhbmRl
ZFVzaW5nR0x1c2hvcnRJbmRpY2VzKQotewotICAgIHJ4OjpTb3VyY2VJbmRleERhdGEgc3JjRGF0
YSA9IHtudWxscHRyLCBtdXNob3J0SW5kaWNlcy5kYXRhKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obXVzaG9ydEluZGljZXMu
c2l6ZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURf
U0hPUlQsIGZhbHNlfTsKLSAgICBlbXVsYXRlQW5kQ29tcGFyZSgmc3JjRGF0YSk7Ci19Ci0KLS8v
IFRoaXMgdGVzdHMgdGhhdCBhIEdMX1VOU0lHTkVEX0lOVCBpbmRpY2VzIGxpc3QgY2FuIGJlIHN1
Y2Nlc3NmdWxseSBleHBhbmRlZAotLy8gaW50byBhIHZhbGlkIGVtdWxhdGVkIGluZGV4ZWQgYnVm
ZmVyLgotVEVTVF9QKEQzRDExRW11bGF0ZWRJbmRleGVkQnVmZmVyVGVzdCwgVGVzdE5hdGl2ZVRv
RXhwYW5kZWRVc2luZ0dMdWludEluZGljZXMpCi17Ci0gICAgcng6OlNvdXJjZUluZGV4RGF0YSBz
cmNEYXRhID0ge251bGxwdHIsIG11aW50SW5kaWNlcy5kYXRhKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4obXVpbnRJbmRpY2Vz
LnNpemUoKSksIEdMX1VOU0lHTkVEX0lOVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZmFsc2V9OwotICAgIGVtdWxhdGVBbmRDb21wYXJlKCZzcmNEYXRhKTsKLX0KLQotLy8g
VGhpcyB0ZXN0cyB2ZXJpZmllcyB0aGF0IGEgQnVmZmVyMTEgY29udGVudHMgcmVtYWluIHVuY2hh
bmdlZCBhZnRlciBjYWxsaW5nIGdldEVtdWxhdGVkSW5kZXhlZEJ1ZmZlcgotVEVTVF9QKEQzRDEx
RW11bGF0ZWRJbmRleGVkQnVmZmVyVGVzdCwgVGVzdFNvdXJjZUJ1ZmZlclJlbWFpbnNVbnRvdWNo
ZWRBZnRlckV4cGFuZE9wZXJhdGlvbikKLXsKLSAgICAvLyBDb3B5IHRoZSBvcmlnaW5hbCBzb3Vy
Y2UgYnVmZmVyIGJlZm9yZSBhbnkgZXhwYW5kIGNhbGxzIGhhdmUgYmVlbiBtYWRlCi0gICAgcng6
OkJ1ZmZlcjExICpjbGVhblNvdXJjZUJ1ZmZlciA9IG5ldyByeDo6QnVmZmVyMTEobVJlbmRlcmVy
KTsKLSAgICBjbGVhblNvdXJjZUJ1ZmZlci0+Y29weVN1YkRhdGEobVNvdXJjZUJ1ZmZlciwgMCwg
MCwgbVNvdXJjZUJ1ZmZlci0+Z2V0U2l6ZSgpKTsKLQotICAgIC8vIERvIGEgYmFzaWMgZXhhbmRl
ZCBhbmQgY29tcGFyZSB0ZXN0LgotICAgIHJ4OjpTb3VyY2VJbmRleERhdGEgc3JjRGF0YSA9IHtu
dWxscHRyLCBtdWludEluZGljZXMuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG11aW50SW5kaWNlcy5zaXplKCkpLCBH
TF9VTlNJR05FRF9JTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNl
fTsKLSAgICBlbXVsYXRlQW5kQ29tcGFyZSgmc3JjRGF0YSk7Ci0KLSAgICBjb25zdCB1aW50OF90
ICpzb3VyY2VCdWZmZXJNZW0gPSBudWxscHRyOwotICAgIGNvbnN0IHVpbnQ4X3QgKmNsZWFuQnVm
ZmVyTWVtID0gbnVsbHB0cjsKLQotICAgIGdsOjpFcnJvciBlcnJvciA9IG1Tb3VyY2VCdWZmZXIt
PmdldERhdGEoJnNvdXJjZUJ1ZmZlck1lbSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGVycm9yLmlzRXJy
b3IoKSk7Ci0KLSAgICBlcnJvciA9IGNsZWFuU291cmNlQnVmZmVyLT5nZXREYXRhKCZjbGVhbkJ1
ZmZlck1lbSk7Ci0gICAgQVNTRVJUX0ZBTFNFKGVycm9yLmlzRXJyb3IoKSk7Ci0KLSAgICBpbnQg
cmVzdWx0ID0gbWVtY21wKHNvdXJjZUJ1ZmZlck1lbSwgY2xlYW5CdWZmZXJNZW0sIGNsZWFuU291
cmNlQnVmZmVyLT5nZXRTaXplKCkpOwotICAgIEFTU0VSVF9FUShyZXN1bHQsIDApOwotCi0gICAg
U2FmZURlbGV0ZShjbGVhblNvdXJjZUJ1ZmZlcik7Ci19Ci0KLUFOR0xFX0lOU1RBTlRJQVRFX1RF
U1QoRDNEMTFFbXVsYXRlZEluZGV4ZWRCdWZmZXJUZXN0LAotICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfRDNEMTEoKSk7Ci0KLX0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0QzRDExRm9ybWF0VGFi
bGVzVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
RDNEMTFGb3JtYXRUYWJsZXNUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZTQwN2QxMTkwZGEuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9EM0QxMUZvcm1hdFRhYmxlc1Rlc3QuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTUzICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVj
dCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBEM0QxMUZvcm1hdFRhYmxlc1Rlc3Q6Ci0v
LyAgIFRlc3RzIHRvIHZhbGlkYXRlIG91ciBEM0QxMSBzdXBwb3J0IHRhYmxlcyBtYXRjaCBoYXJk
d2FyZSBzdXBwb3J0LgotLy8KLQotI2luY2x1ZGUgImxpYkFOR0xFL2FuZ2xldHlwZXMuaCIKLSNp
bmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvZm9ybWF0dXRp
bHMuaCIKLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvQ29udGV4dDExLmgi
Ci0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL2R4Z2lfc3VwcG9ydF90YWJs
ZS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3JlbmRlcmVyL2QzZC9kM2QxMS9mb3JtYXR1dGlsczEx
LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL2QzZDExL1JlbmRlcmVyMTEuaCIK
LSNpbmNsdWRlICJsaWJBTkdMRS9yZW5kZXJlci9kM2QvZDNkMTEvdGV4dHVyZV9mb3JtYXRfdGFi
bGUuaCIKLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaCIKLSNp
bmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7
Ci0KLW5hbWVzcGFjZQotewotCi1jbGFzcyBEM0QxMUZvcm1hdFRhYmxlc1Rlc3QgOiBwdWJsaWMg
QU5HTEVUZXN0Ci17Ci0KLX07Ci0KLS8vIFRoaXMgdGVzdCBlbnVtZXJhdGVzIGFsbCBHTCBmb3Jt
YXRzIC0gZm9yIGVhY2gsIGl0IHF1ZXJpZXMgdGhlIEQzRCBzdXBwb3J0IGZvcgotLy8gdXNpbmcg
aXQgYXMgYSB0ZXh0dXJlLCBhIHJlbmRlciB0YXJnZXQsIGFuZCBzYW1wbGluZyBmcm9tIGl0IGlu
IHRoZSBzaGFkZXIuIEl0Ci0vLyBjaGVja3MgdGhpcyBhZ2FpbnN0IG91ciBzcGVlZC1vcHRpbWl6
ZWQgYmFrZWQgdGFibGVzLCBhbmQgdmFsaWRhdGVzIHRoZXkgd291bGQKLS8vIGdpdmUgdGhlIHNh
bWUgcmVzdWx0LgotLy8gVE9ETyhqbWFkaWxsKTogRmluZCBvdXQgd2h5IGluIDlfMywgc29tZSBm
b3JtYXQgcXVlcmllcyByZXR1cm4gYW4gZXJyb3IuCi0vLyBUaGUgZXJyb3Igc2VlbXMgdG8gYXBw
ZWFyIGZvciBmb3JtYXRzIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgb24gOV8zLgotVEVTVF9QKEQz
RDExRm9ybWF0VGFibGVzVGVzdCwgVGVzdEZvcm1hdFN1cHBvcnQpCi17Ci0gICAgQVNTRVJUX0VR
KEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLCBHZXRQYXJhbSgpLmdldFJlbmRl
cmVyKCkpOwotCi0gICAgLy8gSGFjayB0aGUgYW5nbGUhCi0gICAgZ2w6OkNvbnRleHQgKmNvbnRl
eHQgPSByZWludGVycHJldF9jYXN0PGdsOjpDb250ZXh0ICo+KGdldEVHTFdpbmRvdygpLT5nZXRD
b250ZXh0KCkpOwotICAgIHJ4OjpDb250ZXh0MTEgKmNvbnRleHQxMSA9IHJ4OjpHZXRJbXBsQXM8
cng6OkNvbnRleHQxMT4oY29udGV4dCk7Ci0gICAgcng6OlJlbmRlcmVyMTEgKnJlbmRlcmVyID0g
Y29udGV4dDExLT5nZXRSZW5kZXJlcigpOwotICAgIGNvbnN0IGF1dG8gJnRleHR1cmVDYXBzICA9
IHJlbmRlcmVyLT5nZXROYXRpdmVUZXh0dXJlQ2FwcygpOwotCi0gICAgSUQzRDExRGV2aWNlICpk
ZXZpY2UgPSByZW5kZXJlci0+Z2V0RGV2aWNlKCk7Ci0KLSAgICBjb25zdCBnbDo6Rm9ybWF0U2V0
ICZhbGxGb3JtYXRzID0gZ2w6OkdldEFsbFNpemVkSW50ZXJuYWxGb3JtYXRzKCk7Ci0gICAgZm9y
IChHTGVudW0gaW50ZXJuYWxGb3JtYXQgOiBhbGxGb3JtYXRzKQotICAgIHsKLSAgICAgICAgY29u
c3Qgcng6OmQzZDExOjpGb3JtYXQgJmZvcm1hdEluZm8gPQotICAgICAgICAgICAgcng6OmQzZDEx
OjpGb3JtYXQ6OkdldChpbnRlcm5hbEZvcm1hdCwgcmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZp
Y2VDYXBzKCkpOwotICAgICAgICBjb25zdCBhdXRvICZ0ZXh0dXJlSW5mbyA9IHRleHR1cmVDYXBz
LmdldChpbnRlcm5hbEZvcm1hdCk7Ci0KLSAgICAgICAgLy8gQml0cyBmb3IgdGV4dHVyaW5nCi0g
ICAgICAgIGNvbnN0IGdsOjpJbnRlcm5hbEZvcm1hdCAmaW50ZXJuYWxGb3JtYXRJbmZvID0gZ2w6
OkdldEludGVybmFsRm9ybWF0SW5mbyhpbnRlcm5hbEZvcm1hdCk7Ci0KLSAgICAgICAgVUlOVCB0
ZXhTdXBwb3J0TWFzayA9IEQzRDExX0ZPUk1BVF9TVVBQT1JUX1RFWFRVUkUyRDsKLSAgICAgICAg
aWYgKGludGVybmFsRm9ybWF0SW5mby5kZXB0aEJpdHMgPT0gMCAmJiBpbnRlcm5hbEZvcm1hdElu
Zm8uc3RlbmNpbEJpdHMgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgdGV4U3VwcG9ydE1h
c2sgfD0gRDNEMTFfRk9STUFUX1NVUFBPUlRfVEVYVFVSRUNVQkU7Ci0gICAgICAgICAgICBpZiAo
R2V0UGFyYW0oKS5tYWpvclZlcnNpb24gPiAyKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIHRleFN1cHBvcnRNYXNrIHw9IEQzRDExX0ZPUk1BVF9TVVBQT1JUX1RFWFRVUkUzRDsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIFVJTlQgdGV4U3VwcG9ydCAgPSAwOwot
ICAgICAgICBib29sIHRleFN1Y2Nlc3MgID0gU1VDQ0VFREVEKGRldmljZS0+Q2hlY2tGb3JtYXRT
dXBwb3J0KGZvcm1hdEluZm8udGV4Rm9ybWF0LCAmdGV4U3VwcG9ydCkpOwotICAgICAgICBib29s
IHRleHR1cmVhYmxlID0gdGV4U3VjY2VzcyAmJiAoKHRleFN1cHBvcnQgJiB0ZXhTdXBwb3J0TWFz
aykgPT0gdGV4U3VwcG9ydE1hc2spOwotICAgICAgICBFWFBFQ1RfRVEodGV4dHVyZWFibGUsIHRl
eHR1cmVJbmZvLnRleHR1cmFibGUpOwotCi0gICAgICAgIC8vIEJpdHMgZm9yIG1pcG1hcCBhdXRv
LWdlbi4KLSAgICAgICAgYm9vbCBleHBlY3RlZE1pcEdlbiA9IHRleFN1Y2Nlc3MgJiYgKCh0ZXhT
dXBwb3J0ICYgRDNEMTFfRk9STUFUX1NVUFBPUlRfTUlQX0FVVE9HRU4pICE9IDApOwotICAgICAg
ICBhdXRvIGZlYXR1cmVMZXZlbCAgID0gcmVuZGVyZXItPmdldFJlbmRlcmVyMTFEZXZpY2VDYXBz
KCkuZmVhdHVyZUxldmVsOwotICAgICAgICBjb25zdCBhdXRvICZkeGdpU3VwcG9ydCA9IHJ4Ojpk
M2QxMTo6R2V0RFhHSVN1cHBvcnQoZm9ybWF0SW5mby50ZXhGb3JtYXQsIGZlYXR1cmVMZXZlbCk7
Ci0gICAgICAgIGJvb2wgYWN0dWFsTWlwR2VuID0KLSAgICAgICAgICAgICgoZHhnaVN1cHBvcnQu
YWx3YXlzU3VwcG9ydGVkRmxhZ3MgJiBEM0QxMV9GT1JNQVRfU1VQUE9SVF9NSVBfQVVUT0dFTikg
IT0gMCk7Ci0gICAgICAgIEVYUEVDVF9FUSgwdSwgZHhnaVN1cHBvcnQub3B0aW9uYWxseVN1cHBv
cnRlZEZsYWdzICYgRDNEMTFfRk9STUFUX1NVUFBPUlRfTUlQX0FVVE9HRU4pOwotICAgICAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWRNaXBHZW4sIGFjdHVhbE1pcEdlbik7Ci0KLSAgICAgICAgLy8gQml0
cyBmb3IgZmlsdGVyaW5nCi0gICAgICAgIFVJTlQgZmlsdGVyU3VwcG9ydCA9IDA7Ci0gICAgICAg
IGJvb2wgZmlsdGVyU3VjY2VzcyA9Ci0gICAgICAgICAgICBTVUNDRUVERUQoZGV2aWNlLT5DaGVj
a0Zvcm1hdFN1cHBvcnQoZm9ybWF0SW5mby5zcnZGb3JtYXQsICZmaWx0ZXJTdXBwb3J0KSk7Ci0g
ICAgICAgIGJvb2wgZmlsdGVyYWJsZSA9IGZpbHRlclN1Y2Nlc3MgJiYgKChmaWx0ZXJTdXBwb3J0
ICYgRDNEMTFfRk9STUFUX1NVUFBPUlRfU0hBREVSX1NBTVBMRSkgIT0gMCk7Ci0gICAgICAgIEVY
UEVDVF9FUShmaWx0ZXJhYmxlLCB0ZXh0dXJlSW5mby5maWx0ZXJhYmxlKTsKLQotICAgICAgICAv
LyBCaXRzIGZvciByZW5kZXJhYmxlCi0gICAgICAgIGJvb2wgcmVuZGVyYWJsZSA9IGZhbHNlOwot
ICAgICAgICBVSU5UIHJlbmRlclN1cHBvcnQgICAgICAgPSAwdTsKLSAgICAgICAgRFhHSV9GT1JN
QVQgcmVuZGVyRm9ybWF0ID0gRFhHSV9GT1JNQVRfVU5LTk9XTjsKLSAgICAgICAgaWYgKGludGVy
bmFsRm9ybWF0SW5mby5kZXB0aEJpdHMgPiAwIHx8IGludGVybmFsRm9ybWF0SW5mby5zdGVuY2ls
Qml0cyA+IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJlbmRlckZvcm1hdCA9IGZvcm1hdElu
Zm8uZHN2Rm9ybWF0OwotICAgICAgICAgICAgYm9vbCBkZXB0aFN1Y2Nlc3MgPQotICAgICAgICAg
ICAgICAgIFNVQ0NFRURFRChkZXZpY2UtPkNoZWNrRm9ybWF0U3VwcG9ydChmb3JtYXRJbmZvLmRz
dkZvcm1hdCwgJnJlbmRlclN1cHBvcnQpKTsKLSAgICAgICAgICAgIHJlbmRlcmFibGUgPQotICAg
ICAgICAgICAgICAgIGRlcHRoU3VjY2VzcyAmJiAoKHJlbmRlclN1cHBvcnQgJiBEM0QxMV9GT1JN
QVRfU1VQUE9SVF9ERVBUSF9TVEVOQ0lMKSAhPSAwKTsKLSAgICAgICAgICAgIGlmIChyZW5kZXJh
YmxlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEVYUEVDVF9ORShEWEdJX0ZPUk1B
VF9VTktOT1dOLCBmb3JtYXRJbmZvLmRzdkZvcm1hdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByZW5kZXJGb3JtYXQgPSBm
b3JtYXRJbmZvLnJ0dkZvcm1hdDsKLSAgICAgICAgICAgIGJvb2wgcnRTdWNjZXNzID0KLSAgICAg
ICAgICAgICAgICBTVUNDRUVERUQoZGV2aWNlLT5DaGVja0Zvcm1hdFN1cHBvcnQoZm9ybWF0SW5m
by5ydHZGb3JtYXQsICZyZW5kZXJTdXBwb3J0KSk7Ci0gICAgICAgICAgICByZW5kZXJhYmxlID0g
cnRTdWNjZXNzICYmICgocmVuZGVyU3VwcG9ydCAmIEQzRDExX0ZPUk1BVF9TVVBQT1JUX1JFTkRF
Ul9UQVJHRVQpICE9IDApOwotICAgICAgICAgICAgaWYgKHJlbmRlcmFibGUpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgRVhQRUNUX05FKERYR0lfRk9STUFUX1VOS05PV04sIGZvcm1h
dEluZm8ucnR2Rm9ybWF0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBFWFBF
Q1RfRVEocmVuZGVyYWJsZSwgdGV4dHVyZUluZm8ucmVuZGVyYWJsZSk7Ci0gICAgICAgIGlmICgh
dGV4dHVyZUluZm8uc2FtcGxlQ291bnRzLmVtcHR5KCkpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEVYUEVDVF9UUlVFKHJlbmRlcmFibGUpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTXVsdGlz
YW1wbGUgY291bnRzCi0gICAgICAgIGlmIChyZW5kZXJhYmxlKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoKHJlbmRlclN1cHBvcnQgJiBEM0QxMV9GT1JNQVRfU1VQUE9SVF9NVUxUSVNBTVBM
RV9SRU5ERVJUQVJHRVQpICE9IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgRVhQ
RUNUX1RSVUUoIXRleHR1cmVJbmZvLnNhbXBsZUNvdW50cy5lbXB0eSgpKTsKLSAgICAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGludCBzYW1wbGVDb3VudCA9IDE7Ci0gICAgICAgICAgICAgICAg
ICAgICBzYW1wbGVDb3VudCA8PSBEM0QxMV9NQVhfTVVMVElTQU1QTEVfU0FNUExFX0NPVU5UOyBz
YW1wbGVDb3VudCAqPSAyKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
VUlOVCBxdWFsaXR5Q291bnQgID0gMDsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBzYW1wbGVT
dWNjZXNzID0gU1VDQ0VFREVEKGRldmljZS0+Q2hlY2tNdWx0aXNhbXBsZVF1YWxpdHlMZXZlbHMo
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJGb3JtYXQsIHNhbXBsZUNvdW50LCAmcXVh
bGl0eUNvdW50KSk7Ci0gICAgICAgICAgICAgICAgICAgIEdMdWludCBleHBlY3RlZENvdW50ID0g
KCFzYW1wbGVTdWNjZXNzIHx8IHF1YWxpdHlDb3VudCA9PSAwKSA/IDAgOiAxOwotICAgICAgICAg
ICAgICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRDb3VudCwgdGV4dHVyZUluZm8uc2FtcGxlQ291
bnRzLmNvdW50KHNhbXBsZUNvdW50KSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEVYUEVD
VF9UUlVFKHRleHR1cmVJbmZvLnNhbXBsZUNvdW50cy5lbXB0eSgpKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLX0KLQotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChEM0QxMUZvcm1h
dFRhYmxlc1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkwxMF8wKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9EM0QxMV9GTDEwXzEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMy
X0QzRDExX0ZMMTFfMCgpKTsKLQotfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRDNEMTFJbnB1dExh
eW91dENhY2hlVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xf
dGVzdHMvRDNEMTFJbnB1dExheW91dENhY2hlVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDdmMTgyZDJiMTNjLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRDNEMTFJbnB1dExheW91dENhY2hlVGVzdC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIEQzRDExSW5wdXRM
YXlvdXRDYWNoZVRlc3Q6Ci0vLyAgIFN0cmVzcyB0byB0byByZXByb2R1Y2UgYSBidWcgd2hlcmUg
d2Ugd2VyZW4ndCBmbHVpbmcgdGhlIGNhc2UgY29ycmVjdGx5LgotLy8KLQotI2luY2x1ZGUgPHNz
dHJlYW0+Ci0KLSNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0LmgiCi0jaW5jbHVkZSAibGliQU5H
TEUvcmVuZGVyZXIvZDNkL2QzZDExL0NvbnRleHQxMS5oIgotI2luY2x1ZGUgImxpYkFOR0xFL3Jl
bmRlcmVyL2QzZC9kM2QxMS9SZW5kZXJlcjExLmgiCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdM
RVRlc3QuaCIKLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuaCIK
LQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3MgRDNEMTFJ
bnB1dExheW91dENhY2hlVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgot
ICAgIEQzRDExSW5wdXRMYXlvdXRDYWNoZVRlc3QoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93
V2lkdGgoNjQpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoNjQpOwotICAgICAgICBzZXRDb25m
aWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotCi0g
ICAgR0x1aW50IG1ha2VQcm9ncmFtV2l0aEF0dHJpYkNvdW50KHVuc2lnbmVkIGludCBhdHRyaWJD
b3VudCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cnN0cjsKLQotICAgICAg
ICBzdHJzdHIgPDwgImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uOyIgPDwgc3RkOjplbmRsOwotICAg
ICAgICBmb3IgKHVuc2lnbmVkIGludCBhdHRyaWJJbmRleCA9IDA7IGF0dHJpYkluZGV4IDwgYXR0
cmliQ291bnQ7ICsrYXR0cmliSW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cnN0ciA8
PCAiYXR0cmlidXRlIGZsb2F0IGEiIDw8IGF0dHJpYkluZGV4IDw8ICI7IiA8PCBzdGQ6OmVuZGw7
Ci0gICAgICAgIH0KLSAgICAgICAgc3Ryc3RyIDw8ICJ2YXJ5aW5nIGZsb2F0IHY7IiA8PCBzdGQ6
OmVuZGwKLSAgICAgICAgICAgICAgIDw8ICJ2b2lkIG1haW4oKSB7IiA8PCBzdGQ6OmVuZGwKLSAg
ICAgICAgICAgICAgIDw8ICIgICAgdiA9IDAuMDsiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbnQgYXR0cmliSW5kZXggPSAwOyBhdHRyaWJJbmRleCA8IGF0dHJpYkNvdW50
OyArK2F0dHJpYkluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICBzdHJzdHIgPDwgIiAgICB2
ICs9IGEiIDw8IGF0dHJpYkluZGV4IDw8ICI7IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIH0KLSAg
ICAgICAgc3Ryc3RyIDw8ICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLjAsIDEu
MCk7IiA8PCBzdGQ6OmVuZGwKLSAgICAgICAgICAgICAgIDw8ICJ9IiA8PCBzdGQ6OmVuZGw7Ci0K
LSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgYmFzaWNGcmFnbWVudFNoYWRlciA9Ci0gICAgICAg
ICAgICAidmFyeWluZyBoaWdocCBmbG9hdCB2O1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbigp
IHsiCi0gICAgICAgICAgICAiICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2IC8gMjU1LjAsIDAuMCwg
MC4wLCAxLjApO1xuIgotICAgICAgICAgICAgIn1cbiI7Ci0KLSAgICAgICAgcmV0dXJuIENvbXBp
bGVQcm9ncmFtKHN0cnN0ci5zdHIoKSwgYmFzaWNGcmFnbWVudFNoYWRlcik7Ci0gICAgfQotfTsK
LQotLy8gU3RyZXNzIHRoZSBjYWNoZSBieSBzZXR0aW5nIGEgc21hbGwgY2FjaGUgc2l6ZSBhbmQg
ZHJhd2luZyB3aXRoIGEgYnVuY2ggb2Ygc2hhZGVycwotLy8gd2l0aCBkaWZmZXJlbnQgaW5wdXQg
c2lnbmF0dXJlcy4KLVRFU1RfUChEM0QxMUlucHV0TGF5b3V0Q2FjaGVUZXN0LCBTdHJlc3NUZXN0
KQotewotICAgIC8vIEhhY2sgdGhlIEFOR0xFIQotICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0g
cmVpbnRlcnByZXRfY2FzdDxnbDo6Q29udGV4dCAqPihnZXRFR0xXaW5kb3coKS0+Z2V0Q29udGV4
dCgpKTsKLSAgICByeDo6Q29udGV4dDExICpjb250ZXh0MTEgICAgICAgICAgICAgICA9IHJ4OjpH
ZXRJbXBsQXM8cng6OkNvbnRleHQxMT4oY29udGV4dCk7Ci0gICAgcng6OlJlbmRlcmVyMTEgKnJl
bmRlcmVyMTEgICAgICAgICAgICAgPSBjb250ZXh0MTEtPmdldFJlbmRlcmVyKCk7Ci0gICAgcng6
OklucHV0TGF5b3V0Q2FjaGUgKmlucHV0TGF5b3V0Q2FjaGUgPSByZW5kZXJlcjExLT5nZXRJbnB1
dExheW91dENhY2hlKCk7Ci0KLSAgICAvLyBDbGFtcCB0aGUgY2FjaGUgc2l6ZSB0byBzb21ldGhp
bmcgdGlueQotICAgIGlucHV0TGF5b3V0Q2FjaGUtPnNldENhY2hlU2l6ZSg0KTsKLQotICAgIEdM
aW50IG1heEF0dHJpYnMgPSAwOwotICAgIGNvbnRleHQtPmdldEludGVnZXJ2KEdMX01BWF9WRVJU
RVhfQVRUUklCUywgJm1heEF0dHJpYnMpOwotCi0gICAgLy8gUmVzZXJ2ZSBvbmUgYXR0cmliIGZv
ciBwb3NpdGlvbgotICAgIHVuc2lnbmVkIGludCBtYXhJbnB1dHMgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KG1heEF0dHJpYnMpIC0gMjsKLQotICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gcHJv
Z3JhbXM7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgYXR0cmliQ291bnQgPSAwOyBhdHRyaWJDb3Vu
dCA8PSBtYXhJbnB1dHM7ICsrYXR0cmliQ291bnQpCi0gICAgewotICAgICAgICBHTHVpbnQgcHJv
Z3JhbSA9IG1ha2VQcm9ncmFtV2l0aEF0dHJpYkNvdW50KGF0dHJpYkNvdW50KTsKLSAgICAgICAg
QVNTRVJUX05FKDB1LCBwcm9ncmFtKTsKLSAgICAgICAgcHJvZ3JhbXMucHVzaF9iYWNrKHByb2dy
YW0pOwotICAgIH0KLQotICAgIC8vIEl0ZXJhdGl2ZWx5IGRvIGEgc2ltcGxlIGRyb3Agb3BlcmF0
aW9uLCB0cnlpbmcgZXZlcnkgYXR0cmlidXRlIGNvdW50IGZyb20gMC4uTUFYX0FUVFJJQlMuCi0g
ICAgLy8gVGhpcyBzaG91bGQgdGhyYXNoIHRoZSBjYWNoZS4KLSAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpdGVyYXRpb25Db3VudCA9IDA7IGl0ZXJhdGlvbkNvdW50IDwgMTA7ICsraXRlcmF0aW9uQ291
bnQpCi0gICAgewotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBmb3Ig
KHVuc2lnbmVkIGludCBhdHRyaWJDb3VudCA9IDA7IGF0dHJpYkNvdW50IDw9IG1heElucHV0czsg
KythdHRyaWJDb3VudCkKLSAgICAgICAgewotICAgICAgICAgICAgR0x1aW50IHByb2dyYW0gPSBw
cm9ncmFtc1thdHRyaWJDb3VudF07Ci0gICAgICAgICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7
Ci0KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGF0dHJpYkluZGV4ID0gMDsgYXR0cmli
SW5kZXggPCBhdHRyaWJDb3VudDsgKythdHRyaWJJbmRleCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBhdHRyaWJOYW1lU3RyOwotICAgICAgICAgICAg
ICAgIGF0dHJpYk5hbWVTdHIgPDwgImEiIDw8IGF0dHJpYkluZGV4OwotICAgICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nIGF0dHJpYk5hbWUgPSBhdHRyaWJOYW1lU3RyLnN0cigpOwotCi0gICAgICAg
ICAgICAgICAgR0xpbnQgbG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sIGF0
dHJpYk5hbWUuY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgQVNTRVJUX05FKC0xLCBsb2NhdGlv
bik7Ci0gICAgICAgICAgICAgICAgZ2xWZXJ0ZXhBdHRyaWIxZihsb2NhdGlvbiwgMS4wZik7Ci0g
ICAgICAgICAgICAgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkobG9jYXRpb24pOwotICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICBkcmF3UXVhZChwcm9ncmFtLCAicG9zaXRpb24iLCAw
LjVmKTsKLSAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCBhdHRyaWJDb3VudCwgMCwg
MCwgMjU1dSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKEdMdWludCBwcm9ncmFtIDog
cHJvZ3JhbXMpCi0gICAgewotICAgICAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Ci0gICAg
fQotfQotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKEQzRDExSW5wdXRMYXlvdXRDYWNoZVRlc3Qs
IEVTMl9EM0QxMSgpKTsKLQotfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0QzREltYWdlRm9ybWF0
Q29udmVyc2lvblRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2ds
X3Rlc3RzL0QzREltYWdlRm9ybWF0Q29udmVyc2lvblRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkNjMxOWQzZjdiZC4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0QzREltYWdlRm9ybWF0Q29udmVyc2lvblRl
c3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjA3ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQg
MjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBEM0RJ
bWFnZUZvcm1hdENvbnZlcnNpb25UZXN0OgotLy8gICBCYXNpYyB0ZXN0cyB0byB2YWxpZGF0ZSBj
b2RlIHJlbGF0aW5nIHRvIEQzRCBJbWFnZSBmb3JtYXQgY29udmVyc2lvbnMuCi0KLSNpbmNsdWRl
ICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi0jaW5jbHVkZSAiaW1hZ2VfdXRpbC9pbWFnZWZv
cm1hdHMuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotY2xh
c3MgRDNESW1hZ2VGb3JtYXRDb252ZXJzaW9uVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAg
cHJvdGVjdGVkOgotICAgIEQzREltYWdlRm9ybWF0Q29udmVyc2lvblRlc3QoKQotICAgIHsKLSAg
ICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7
Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0
cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0Fs
cGhhQml0cyg4KTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2
ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAg
IHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0
aW9uOwotICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHRleGNvb3JkOwotCi0gICAgICAgICAgICB2
b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0g
dmVjNChwb3NpdGlvbi54eSwgMC4wLCAxLjApOwotICAgICAgICAgICAgICAgIHRleGNvb3JkID0g
KHBvc2l0aW9uLnh5ICogMC41KSArIDAuNTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQot
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZTJEID0gU0hBREVS
X1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0g
ICAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7Ci0gICAgICAgICAgICB2YXJ5aW5nIHZl
YzIgdGV4Y29vcmQ7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQpOwot
ICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIG0yRFByb2dyYW0gPSBDb21waWxl
UHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlMkQpOwotICAg
ICAgICBtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obTJE
UHJvZ3JhbSwgInRleCIpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG0yRFByb2dyYW0pOwotCi0gICAgICAgIEFO
R0xFVGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICAvLyBVc2VzIENvbG9yU3RydWN0VHlw
ZTo6d3JpdGVDb2xvciB0byBwb3B1bGF0ZSBpbml0aWFsIGRhdGEgZm9yIGEgdGV4dHVyZSwgcGFz
cyBpdCB0byBnbFRleEltYWdlMkQsIHRoZW4gcmVuZGVyIHdpdGggaXQuCi0gICAgLy8gVGhlIHJl
c3VsdGluZyBjb2xvcnMgc2hvdWxkIG1hdGNoIHRoZSBjb2xvcnMgcGFzc2VkIGludG8gOjp3cml0
ZUNvbG9yLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xvclN0cnVjdFR5cGU+Ci0gICAgdm9p
ZCBydW5UZXN0KEdMZW51bSB0ZXgyREZvcm1hdCwgR0xlbnVtIHRleDJEVHlwZSkKLSAgICB7Ci0g
ICAgICAgIGdsOjpDb2xvckYgc3JjQ29sb3JGWzRdOwotICAgICAgICBDb2xvclN0cnVjdFR5cGUg
cGl4ZWxzWzRdOwotCi0gICAgICAgIEdMdWludCB0ZXggPSAwOwotICAgICAgICBHTHVpbnQgZmJv
ID0gMDsKLSAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4KTsKLSAgICAgICAgZ2xHZW5GcmFt
ZWJ1ZmZlcnMoMSwgJmZibyk7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAg
ICAgIHNyY0NvbG9yRlswXS5yZWQgPSAxLjBmOyBzcmNDb2xvckZbMF0uZ3JlZW4gPSAwLjBmOyBz
cmNDb2xvckZbMF0uYmx1ZSA9IDAuMGY7IHNyY0NvbG9yRlswXS5hbHBoYSA9IDEuMGY7IC8vIFJl
ZAotICAgICAgICBzcmNDb2xvckZbMV0ucmVkID0gMC4wZjsgc3JjQ29sb3JGWzFdLmdyZWVuID0g
MS4wZjsgc3JjQ29sb3JGWzFdLmJsdWUgPSAwLjBmOyBzcmNDb2xvckZbMV0uYWxwaGEgPSAxLjBm
OyAvLyBHcmVlbgotICAgICAgICBzcmNDb2xvckZbMl0ucmVkID0gMC4wZjsgc3JjQ29sb3JGWzJd
LmdyZWVuID0gMC4wZjsgc3JjQ29sb3JGWzJdLmJsdWUgPSAxLjBmOyBzcmNDb2xvckZbMl0uYWxw
aGEgPSAxLjBmOyAvLyBCbHVlCi0gICAgICAgIHNyY0NvbG9yRlszXS5yZWQgPSAxLjBmOyBzcmND
b2xvckZbM10uZ3JlZW4gPSAxLjBmOyBzcmNDb2xvckZbM10uYmx1ZSA9IDAuMGY7IHNyY0NvbG9y
RlszXS5hbHBoYSA9IDEuMGY7IC8vIFJlZCArIEdyZWVuIChZZWxsb3cpCi0KLSAgICAgICAgLy8g
Q29udmVydCB0aGUgQ29sb3JGIGludG8gdGhlIHBpeGVscyB0aGF0IHdpbGwgYmUgZmVkIHRvIGds
VGV4SW1hZ2UyRAotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IDQ7IGkrKykK
LSAgICAgICAgewotICAgICAgICAgICAgQ29sb3JTdHJ1Y3RUeXBlOjp3cml0ZUNvbG9yKCYocGl4
ZWxzW2ldKSwgJihzcmNDb2xvckZbaV0pKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEdlbmVy
YXRlIHRoZSB0ZXh0dXJlCi0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4
KTsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIHRleDJERm9ybWF0LCAy
LCAyLCAwLCB0ZXgyREZvcm1hdCwgdGV4MkRUeXBlLCBwaXhlbHMpOwotICAgICAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNU
KTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFH
X0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0g
ICAgICAgIC8vIERyYXcgYSBxdWFkIHVzaW5nIHRoZSB0ZXh0dXJlCi0gICAgICAgIGdsQ2xlYXJD
b2xvcigwLCAwLCAwLCAwKTsKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsK
LSAgICAgICAgZ2xVc2VQcm9ncmFtKG0yRFByb2dyYW0pOwotICAgICAgICBnbFVuaWZvcm0xaSht
VGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uLCAwKTsKLSAgICAgICAgZHJhd1F1YWQobTJEUHJvZ3Jh
bSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0g
ICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHBpeGVsIGNvbG9ycyBtYXRjaCBzcmNDb2xvckYKLSAg
ICAgICAgRVhQRUNUX1BJWEVMX0VRKCAgICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAg
ICAgICAgIDAsIDI1NSwgICAwLCAgIDAsIDI1NSk7Ci0gICAgICAgIEVYUEVDVF9QSVhFTF9FUShn
ZXRXaW5kb3dIZWlnaHQoKSAtIDEsICAgICAgICAgICAgICAgICAgICAwLCAgIDAsIDI1NSwgICAw
LCAyNTUpOwotICAgICAgICBFWFBFQ1RfUElYRUxfRVEoICAgICAgICAgICAgICAgICAgICAwLCBn
ZXRXaW5kb3dXaWR0aCgpIC0gMSwgICAwLCAgIDAsIDI1NSwgMjU1KTsKLSAgICAgICAgRVhQRUNU
X1BJWEVMX0VRKGdldFdpbmRvd0hlaWdodCgpIC0gMSwgZ2V0V2luZG93V2lkdGgoKSAtIDEsIDI1
NSwgMjU1LCAgIDAsIDI1NSk7Ci0gICAgICAgIHN3YXBCdWZmZXJzKCk7Ci0KLSAgICAgICAgZ2xE
ZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZibyk7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwg
JnRleCk7Ci0gICAgfQotCi0gICAgR0x1aW50IG0yRFByb2dyYW07Ci0gICAgR0xpbnQgbVRleHR1
cmUyRFVuaWZvcm1Mb2NhdGlvbjsKLX07Ci0KLS8vIFZhbGlkYXRpb24gdGVzdCBmb3Igcng6OlI0
RzRCNEE0J3Mgd3JpdGVDb2xvciBmdW5jdGlvbnMKLVRFU1RfUChEM0RJbWFnZUZvcm1hdENvbnZl
cnNpb25UZXN0LCBXcml0ZUNvbG9yRnVuY3Rpb25SNEc0QjRBNCkKLXsKLSAgICAvLyBUaGVzZSB0
ZXN0cyBmYWlsIG9uIGNlcnRhaW4gSW50ZWwgbWFjaGluZXMgcnVubmluZyBhbiB1bi11cGRhdGVk
IHZlcnNpb24gb2YgV2luNwotICAgIC8vIFRoZSB0ZXN0cyBwYXNzIGFmdGVyIGluc3RhbGxpbmcg
dGhlIGxhdGVzdCB1cGRhdGVzIGZyb20gV2luZG93cyBVcGRhdGUuCi0gICAgLy8gVE9ETzogcmVl
bmFibGUgdGhlc2UgdGVzdHMgb25jZSB0aGUgYm90cyBoYXZlIGJlZW4gdXBkYXRlZAotICAgIGlm
IChJc0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdM
RV9UWVBFX0QzRDExX0FOR0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgb24gSW50ZWwgRDNEMTEuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBydW5UZXN0PFI0RzRCNEE0PihHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF80
XzRfNF80KTsKLX0KLQotLy8gVmFsaWRhdGlvbiB0ZXN0IGZvciByeDo6UjVHNUI1QTEncyB3cml0
ZUNvbG9yIGZ1bmN0aW9ucwotVEVTVF9QKEQzREltYWdlRm9ybWF0Q29udmVyc2lvblRlc3QsIFdy
aXRlQ29sb3JGdW5jdGlvblI1RzVCNUExKQotewotICAgIC8vIFRoZXNlIHRlc3RzIGZhaWwgb24g
Y2VydGFpbiBJbnRlbCBtYWNoaW5lcyBydW5uaW5nIGFuIHVuLXVwZGF0ZWQgdmVyc2lvbiBvZiBX
aW43Ci0gICAgLy8gVGhlIHRlc3RzIHBhc3MgYWZ0ZXIgaW5zdGFsbGluZyB0aGUgbGF0ZXN0IHVw
ZGF0ZXMgZnJvbSBXaW5kb3dzIFVwZGF0ZS4KLSAgICAvLyBUT0RPOiByZWVuYWJsZSB0aGVzZSB0
ZXN0cyBvbmNlIHRoZSBib3RzIGhhdmUgYmVlbiB1cGRhdGVkCi0gICAgaWYgKElzSW50ZWwoKSAm
JiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFf
QU5HTEUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRl
bCBEM0QxMS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJ1
blRlc3Q8UjVHNUI1QTE+KEdMX1JHQkEsIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEpOwotfQot
Ci0vLyBWYWxpZGF0aW9uIHRlc3QgZm9yIHJ4OjpSNUc2QjUncyB3cml0ZUNvbG9yIGZ1bmN0aW9u
cwotVEVTVF9QKEQzREltYWdlRm9ybWF0Q29udmVyc2lvblRlc3QsIFdyaXRlQ29sb3JGdW5jdGlv
blI1RzZCNSkKLXsKLSAgICAvLyBUaGVzZSB0ZXN0cyBmYWlsIG9uIGNlcnRhaW4gSW50ZWwgbWFj
aGluZXMgcnVubmluZyBhbiB1bi11cGRhdGVkIHZlcnNpb24gb2YgV2luNwotICAgIC8vIFRoZSB0
ZXN0cyBwYXNzIGFmdGVyIGluc3RhbGxpbmcgdGhlIGxhdGVzdCB1cGRhdGVzIGZyb20gV2luZG93
cyBVcGRhdGUuCi0gICAgLy8gVE9ETzogcmVlbmFibGUgdGhlc2UgdGVzdHMgb25jZSB0aGUgYm90
cyBoYXZlIGJlZW4gdXBkYXRlZAotICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5k
ZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKQotICAgIHsKLSAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgRDNEMTEuIiA8PCBzdGQ6
OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBydW5UZXN0PFI1RzZCNT4oR0xf
UkdCLCBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSk7Ci19Ci0KLS8vIFZhbGlkYXRpb24gdGVzdCBm
b3Igcng6OlI4RzhCOEE4J3Mgd3JpdGVDb2xvciBmdW5jdGlvbnMKLVRFU1RfUChEM0RJbWFnZUZv
cm1hdENvbnZlcnNpb25UZXN0LCBXcml0ZUNvbG9yRnVuY3Rpb25SOEc4QjhBOCkKLXsKLSAgICAv
LyBUaGVzZSB0ZXN0cyBmYWlsIG9uIGNlcnRhaW4gSW50ZWwgbWFjaGluZXMgcnVubmluZyBhbiB1
bi11cGRhdGVkIHZlcnNpb24gb2YgV2luNwotICAgIC8vIFRoZSB0ZXN0cyBwYXNzIGFmdGVyIGlu
c3RhbGxpbmcgdGhlIGxhdGVzdCB1cGRhdGVzIGZyb20gV2luZG93cyBVcGRhdGUuCi0gICAgLy8g
VE9ETzogcmVlbmFibGUgdGhlc2UgdGVzdHMgb25jZSB0aGUgYm90cyBoYXZlIGJlZW4gdXBkYXRl
ZAotICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgRDNEMTEuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBydW5UZXN0PFI4RzhCOEE4PihHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFKTsKLX0KLQotLy8gVmFsaWRhdGlvbiB0ZXN0IGZvciByeDo6UjhHOEI4J3Mgd3JpdGVD
b2xvciBmdW5jdGlvbnMKLVRFU1RfUChEM0RJbWFnZUZvcm1hdENvbnZlcnNpb25UZXN0LCBXcml0
ZUNvbG9yRnVuY3Rpb25SOEc4QjgpCi17Ci0gICAgLy8gVGhlc2UgdGVzdHMgZmFpbCBvbiBjZXJ0
YWluIEludGVsIG1hY2hpbmVzIHJ1bm5pbmcgYW4gdW4tdXBkYXRlZCB2ZXJzaW9uIG9mIFdpbjcK
LSAgICAvLyBUaGUgdGVzdHMgcGFzcyBhZnRlciBpbnN0YWxsaW5nIHRoZSBsYXRlc3QgdXBkYXRl
cyBmcm9tIFdpbmRvd3MgVXBkYXRlLgotICAgIC8vIFRPRE86IHJlZW5hYmxlIHRoZXNlIHRlc3Rz
IG9uY2UgdGhlIGJvdHMgaGF2ZSBiZWVuIHVwZGF0ZWQKLSAgICBpZiAoSXNJbnRlbCgpICYmIGdl
dFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdM
RSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIEQz
RDExLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZ2xQaXhl
bFN0b3JlaShHTF9VTlBBQ0tfQUxJR05NRU5ULCAxKTsKLSAgICBydW5UZXN0PFI4RzhCOD4oR0xf
UkdCLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNo
IGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZl
cnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLS8vIEV2ZW4gdGhvdWdo
IHRoaXMgdGVzdCBpcyBvbmx5IHJ1biBvbiBXaW5kb3dzIChzaW5jZSBpdCBpbmNsdWRlcyBpbWFn
ZWZvcm1hdHMuaCBmcm9tIHRoZSBEM0QgcmVuZGVyZXIpLCB3ZSBjYW4gc3RpbGwgcnVuIHRoZSB0
ZXN0Ci0vLyBhZ2FpbnN0IE9wZW5HTC4gVGhpcyBpcyB2YWx1YWJsZSwgc2luY2UgaXQgcHJvdmlk
ZXMgZXh0cmEgdmFsaWRhdGlvbiB1c2luZyBhIHJlbmRlcmVyIHRoYXQgZG9lc24ndCB1c2UgaW1h
Z2Vmb3JtYXRzLmggaXRzZWxmLgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChEM0RJbWFnZUZvcm1h
dENvbnZlcnNpb25UZXN0LCBFUzJfRDNEOSgpLCBFUzJfRDNEMTEoKSwgRVMyX0QzRDExX0ZMOV8z
KCksIEVTMl9PUEVOR0woKSk7Ci0KLX0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRFhUMUNvbXByZXNzZWRUZXh0dXJl
VGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRFhU
MUNvbXByZXNzZWRUZXh0dXJlVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDM0YjZiOWVjMzI4Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xfdGVzdHMvRFhUMUNvbXByZXNzZWRUZXh0dXJlVGVzdC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwzMjYgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0v
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMv
QU5HTEVUZXN0LmgiCi0KLSNpbmNsdWRlICJtZWRpYS9waXhlbC5pbmwiCi0KLXVzaW5nIG5hbWVz
cGFjZSBhbmdsZTsKLQotY2xhc3MgRFhUMUNvbXByZXNzZWRUZXh0dXJlVGVzdCA6IHB1YmxpYyBB
TkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIERYVDFDb21wcmVzc2VkVGV4dHVyZVRlc3Qo
KQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoNTEyKTsKLSAgICAgICAgc2V0V2luZG93
SGVpZ2h0KDUxMik7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENv
bmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAg
IHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgU2V0VXAo
KQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIHZzU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAg
ICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0gICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBwb3Np
dGlvbjsKLSAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsKLQotICAgICAgICAgICAg
dm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9
IHBvc2l0aW9uOwotICAgICAgICAgICAgICAgIHRleGNvb3JkID0gKHBvc2l0aW9uLnh5ICogMC41
KSArIDAuNTsKLSAgICAgICAgICAgICAgICB0ZXhjb29yZC55ID0gMS4wIC0gdGV4Y29vcmQueTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB0
ZXh0dXJlRlNTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIHBy
ZWNpc2lvbiBoaWdocCBmbG9hdDsKLSAgICAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJEIHRleDsK
LSAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsKLQotICAgICAgICAgICAgdm9pZCBt
YWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0
dXJlMkQodGV4LCB0ZXhjb29yZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAg
ICAgbVRleHR1cmVQcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnNTb3VyY2UsIHRleHR1cmVGU1Nv
dXJjZSk7Ci0gICAgICAgIGlmIChtVGV4dHVyZVByb2dyYW0gPT0gMCkKLSAgICAgICAgewotICAg
ICAgICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7Ci0gICAgICAg
IH0KLQotICAgICAgICBtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0
aW9uKG1UZXh0dXJlUHJvZ3JhbSwgInRleCIpOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCi0gICAgewotICAgICAg
ICBnbERlbGV0ZVByb2dyYW0obVRleHR1cmVQcm9ncmFtKTsKLQotICAgICAgICBBTkdMRVRlc3Q6
OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgR0x1aW50IG1UZXh0dXJlUHJvZ3JhbTsKLSAgICBH
TGludCBtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbjsKLX07Ci0KLVRFU1RfUChEWFQxQ29tcHJlc3Nl
ZFRleHR1cmVUZXN0LCBDb21wcmVzc2VkVGV4SW1hZ2UpCi17Ci0gICAgaWYgKCFleHRlbnNpb25F
bmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIikpCi0gICAgewotICAgICAg
ICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX2R4dDEgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEdMdWludCB0ZXh0dXJlOwotICAgIGdsR2VuVGV4dHVyZXMoMSwg
JnRleHR1cmUpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSk7Ci0g
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwg
R0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdF
KTsKLQotICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzBfd2lkdGgsIHBpeGVsXzBfaGVpZ2h0
LCAwLCBwaXhlbF8wX3NpemUsIHBpeGVsXzBfZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4SW1h
Z2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwg
cGl4ZWxfMV93aWR0aCwgcGl4ZWxfMV9oZWlnaHQsIDAsIHBpeGVsXzFfc2l6ZSwgcGl4ZWxfMV9k
YXRhKTsKLSAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDIsIEdMX0NP
TVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF8yX3dpZHRoLCBwaXhlbF8yX2hlaWdo
dCwgMCwgcGl4ZWxfMl9zaXplLCBwaXhlbF8yX2RhdGEpOwotICAgIGdsQ29tcHJlc3NlZFRleElt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgMywgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQs
IHBpeGVsXzNfd2lkdGgsIHBpeGVsXzNfaGVpZ2h0LCAwLCBwaXhlbF8zX3NpemUsIHBpeGVsXzNf
ZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCA0LCBHTF9D
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfNF93aWR0aCwgcGl4ZWxfNF9oZWln
aHQsIDAsIHBpeGVsXzRfc2l6ZSwgcGl4ZWxfNF9kYXRhKTsKLSAgICBnbENvbXByZXNzZWRUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIDUsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhU
LCBwaXhlbF81X3dpZHRoLCBwaXhlbF81X2hlaWdodCwgMCwgcGl4ZWxfNV9zaXplLCBwaXhlbF81
X2RhdGEpOwotICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgNiwgR0xf
Q09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzZfd2lkdGgsIHBpeGVsXzZfaGVp
Z2h0LCAwLCBwaXhlbF82X3NpemUsIHBpeGVsXzZfZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4
SW1hZ2UyRChHTF9URVhUVVJFXzJELCA3LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VCwgcGl4ZWxfN193aWR0aCwgcGl4ZWxfN19oZWlnaHQsIDAsIHBpeGVsXzdfc2l6ZSwgcGl4ZWxf
N19kYXRhKTsKLSAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDgsIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF84X3dpZHRoLCBwaXhlbF84X2hl
aWdodCwgMCwgcGl4ZWxfOF9zaXplLCBwaXhlbF84X2RhdGEpOwotICAgIGdsQ29tcHJlc3NlZFRl
eEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgOSwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9F
WFQsIHBpeGVsXzlfd2lkdGgsIHBpeGVsXzlfaGVpZ2h0LCAwLCBwaXhlbF85X3NpemUsIHBpeGVs
XzlfZGF0YSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsVXNlUHJvZ3Jh
bShtVGV4dHVyZVByb2dyYW0pOwotICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlVW5pZm9ybUxvY2F0
aW9uLCAwKTsKLQotICAgIGRyYXdRdWFkKG1UZXh0dXJlUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41
Zik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsRGVsZXRlVGV4dHVyZXMo
MSwgJnRleHR1cmUpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLVRFU1RfUChE
WFQxQ29tcHJlc3NlZFRleHR1cmVUZXN0LCBDb21wcmVzc2VkVGV4U3RvcmFnZSkKLXsKLSAgICBp
ZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiKSkK
LSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGR1ZSB0byBtaXNzaW5n
IEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYK
LSAgICAgICAgKCFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIikgfHwg
IWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19yZ2I4X3JnYmE4IikpKQotICAgIHsKLSAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgZHVlIHRvIG1pc3NpbmcgRVMzIG9yIEdMX0VYVF90
ZXh0dXJlX3N0b3JhZ2Ugb3IgR0xfT0VTX3JnYjhfcmdiYTgiIDw8IHN0ZDo6ZW5kbDsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIEdMdWludCB0ZXh0dXJlOwotICAgIGdsR2VuVGV4dHVy
ZXMoMSwgJnRleHR1cmUpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVy
ZSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJ
TFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9U
T19FREdFKTsKLQotICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCi0gICAgewot
ICAgICAgICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJELCBwaXhlbF9sZXZlbHMsIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF8wX3dpZHRoLCBwaXhlbF8wX2hl
aWdodCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGdsVGV4U3RvcmFnZTJEKEdM
X1RFWFRVUkVfMkQsIHBpeGVsX2xldmVscywgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9F
WFQsIHBpeGVsXzBfd2lkdGgsIHBpeGVsXzBfaGVpZ2h0KTsKLSAgICB9Ci0gICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIDAsIDAsIHBpeGVsXzBfd2lkdGgsIHBpeGVsXzBfaGVpZ2h0LCBHTF9DT01QUkVTU0VE
X1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfMF9zaXplLCBwaXhlbF8wX2RhdGEpOwotICAgIGds
Q29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgMCwgMCwgcGl4ZWxfMV93
aWR0aCwgcGl4ZWxfMV9oZWlnaHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBw
aXhlbF8xX3NpemUsIHBpeGVsXzFfZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAyLCAwLCAwLCBwaXhlbF8yX3dpZHRoLCBwaXhlbF8yX2hlaWdodCwg
R0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzJfc2l6ZSwgcGl4ZWxfMl9k
YXRhKTsKLSAgICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDMsIDAs
IDAsIHBpeGVsXzNfd2lkdGgsIHBpeGVsXzNfaGVpZ2h0LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQxX0VYVCwgcGl4ZWxfM19zaXplLCBwaXhlbF8zX2RhdGEpOwotICAgIGdsQ29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgNCwgMCwgMCwgcGl4ZWxfNF93aWR0aCwgcGl4
ZWxfNF9oZWlnaHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF80X3Np
emUsIHBpeGVsXzRfZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTF9URVhU
VVJFXzJELCA1LCAwLCAwLCBwaXhlbF81X3dpZHRoLCBwaXhlbF81X2hlaWdodCwgR0xfQ09NUFJF
U1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzVfc2l6ZSwgcGl4ZWxfNV9kYXRhKTsKLSAg
ICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDYsIDAsIDAsIHBpeGVs
XzZfd2lkdGgsIHBpeGVsXzZfaGVpZ2h0LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VCwgcGl4ZWxfNl9zaXplLCBwaXhlbF82X2RhdGEpOwotICAgIGdsQ29tcHJlc3NlZFRleFN1Yklt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgNywgMCwgMCwgcGl4ZWxfN193aWR0aCwgcGl4ZWxfN19oZWln
aHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF83X3NpemUsIHBpeGVs
XzdfZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCA4
LCAwLCAwLCBwaXhlbF84X3dpZHRoLCBwaXhlbF84X2hlaWdodCwgR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUMV9FWFQsIHBpeGVsXzhfc2l6ZSwgcGl4ZWxfOF9kYXRhKTsKLSAgICBnbENvbXBy
ZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDksIDAsIDAsIHBpeGVsXzlfd2lkdGgs
IHBpeGVsXzlfaGVpZ2h0LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxf
OV9zaXplLCBwaXhlbF85X2RhdGEpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICBnbFVzZVByb2dyYW0obVRleHR1cmVQcm9ncmFtKTsKLSAgICBnbFVuaWZvcm0xaShtVGV4dHVy
ZVVuaWZvcm1Mb2NhdGlvbiwgMCk7Ci0KLSAgICBkcmF3UXVhZChtVGV4dHVyZVByb2dyYW0sICJw
b3NpdGlvbiIsIDAuNWYpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbERl
bGV0ZVRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwot
fQotCi1jbGFzcyBEWFQxQ29tcHJlc3NlZFRleHR1cmVUZXN0RVMzIDogcHVibGljIERYVDFDb21w
cmVzc2VkVGV4dHVyZVRlc3QgeyB9OwotCi1jbGFzcyBEWFQxQ29tcHJlc3NlZFRleHR1cmVUZXN0
RDNEMTEgOiBwdWJsaWMgRFhUMUNvbXByZXNzZWRUZXh0dXJlVGVzdCB7IH07Ci0KLVRFU1RfUChE
WFQxQ29tcHJlc3NlZFRleHR1cmVUZXN0RVMzLCBQQk9Db21wcmVzc2VkVGV4SW1hZ2UpCi17Ci0g
ICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQx
IikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdM
X0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAg
ICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBH
THVpbnQgdGV4dHVyZTsKLSAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKLSAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUpOwotICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElO
RUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQ
X1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0KLSAgICBHTHVpbnQgYnVm
ZmVyOwotICAgIGdsR2VuQnVmZmVycygxLCAmYnVmZmVyKTsKLSAgICBnbEJpbmRCdWZmZXIoR0xf
UElYRUxfVU5QQUNLX0JVRkZFUiwgYnVmZmVyKTsKLSAgICBnbEJ1ZmZlckRhdGEoR0xfUElYRUxf
VU5QQUNLX0JVRkZFUiwgcGl4ZWxfMF9zaXplLCBOVUxMLCBHTF9TVFJFQU1fRFJBVyk7Ci0gICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfUElYRUxfVU5Q
QUNLX0JVRkZFUiwgMCwgcGl4ZWxfMF9zaXplLCBwaXhlbF8wX2RhdGEpOwotICAgIGdsQ29tcHJl
c3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUMV9FWFQsIHBpeGVsXzBfd2lkdGgsIHBpeGVsXzBfaGVpZ2h0LCAwLCBwaXhlbF8wX3NpemUs
IE5VTEwpOwotICAgIGdsQnVmZmVyU3ViRGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBw
aXhlbF8xX3NpemUsIHBpeGVsXzFfZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAxLCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxf
MV93aWR0aCwgcGl4ZWxfMV9oZWlnaHQsIDAsIHBpeGVsXzFfc2l6ZSwgTlVMTCk7Ci0gICAgZ2xC
dWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIDAsIHBpeGVsXzJfc2l6ZSwgcGl4
ZWxfMl9kYXRhKTsKLSAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDIs
IEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF8yX3dpZHRoLCBwaXhlbF8y
X2hlaWdodCwgMCwgcGl4ZWxfMl9zaXplLCBOVUxMKTsKLSAgICBnbEJ1ZmZlclN1YkRhdGEoR0xf
UElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgcGl4ZWxfM19zaXplLCBwaXhlbF8zX2RhdGEpOwotICAg
IGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMywgR0xfQ09NUFJFU1NFRF9S
R0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzNfd2lkdGgsIHBpeGVsXzNfaGVpZ2h0LCAwLCBwaXhl
bF8zX3NpemUsIE5VTEwpOwotICAgIGdsQnVmZmVyU3ViRGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVG
RkVSLCAwLCBwaXhlbF80X3NpemUsIHBpeGVsXzRfZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4
SW1hZ2UyRChHTF9URVhUVVJFXzJELCA0LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VCwgcGl4ZWxfNF93aWR0aCwgcGl4ZWxfNF9oZWlnaHQsIDAsIHBpeGVsXzRfc2l6ZSwgTlVMTCk7
Ci0gICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIDAsIHBpeGVsXzVf
c2l6ZSwgcGl4ZWxfNV9kYXRhKTsKLSAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDUsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF81X3dpZHRo
LCBwaXhlbF81X2hlaWdodCwgMCwgcGl4ZWxfNV9zaXplLCBOVUxMKTsKLSAgICBnbEJ1ZmZlclN1
YkRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgcGl4ZWxfNl9zaXplLCBwaXhlbF82X2Rh
dGEpOwotICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgNiwgR0xfQ09N
UFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzZfd2lkdGgsIHBpeGVsXzZfaGVpZ2h0
LCAwLCBwaXhlbF82X3NpemUsIE5VTEwpOwotICAgIGdsQnVmZmVyU3ViRGF0YShHTF9QSVhFTF9V
TlBBQ0tfQlVGRkVSLCAwLCBwaXhlbF83X3NpemUsIHBpeGVsXzdfZGF0YSk7Ci0gICAgZ2xDb21w
cmVzc2VkVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCA3LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNU
Q19EWFQxX0VYVCwgcGl4ZWxfN193aWR0aCwgcGl4ZWxfN19oZWlnaHQsIDAsIHBpeGVsXzdfc2l6
ZSwgTlVMTCk7Ci0gICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIDAs
IHBpeGVsXzhfc2l6ZSwgcGl4ZWxfOF9kYXRhKTsKLSAgICBnbENvbXByZXNzZWRUZXhJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDgsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhl
bF84X3dpZHRoLCBwaXhlbF84X2hlaWdodCwgMCwgcGl4ZWxfOF9zaXplLCBOVUxMKTsKLSAgICBn
bEJ1ZmZlclN1YkRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgcGl4ZWxfOV9zaXplLCBw
aXhlbF85X2RhdGEpOwotICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
OSwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzlfd2lkdGgsIHBpeGVs
XzlfaGVpZ2h0LCAwLCBwaXhlbF85X3NpemUsIE5VTEwpOwotCi0gICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7Ci0KLSAgICBnbFVzZVByb2dyYW0obVRleHR1cmVQcm9ncmFtKTsKLSAgICBnbFVuaWZv
cm0xaShtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiwgMCk7Ci0KLSAgICBkcmF3UXVhZChtVGV4dHVy
ZVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci0KLSAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZidWZmZXIpOwotICAgIGdsRGVsZXRlVGV4dHVy
ZXMoMSwgJnRleHR1cmUpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLQotVEVT
VF9QKERYVDFDb21wcmVzc2VkVGV4dHVyZVRlc3REM0QxMSwgUEJPQ29tcHJlc3NlZFRleFN0b3Jh
Z2UpCi17Ci0gICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9u
RW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSIpKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMg
JiYKLSAgICAgICAgKCFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIikg
fHwgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19yZ2I4X3JnYmE4IikpKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIEdMdWludCB0ZXh0dXJlOwotICAgIGdsR2VuVGV4dHVy
ZXMoMSwgJnRleHR1cmUpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVy
ZSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJ
TFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9U
T19FREdFKTsKLQotICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCi0gICAgewot
ICAgICAgICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJELCBwaXhlbF9sZXZlbHMsIEdM
X0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF8wX3dpZHRoLCBwaXhlbF8wX2hl
aWdodCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGdsVGV4U3RvcmFnZTJEKEdM
X1RFWFRVUkVfMkQsIHBpeGVsX2xldmVscywgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9F
WFQsIHBpeGVsXzBfd2lkdGgsIHBpeGVsXzBfaGVpZ2h0KTsKLSAgICB9Ci0gICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICBHTHVpbnQgYnVmZmVyOwotICAgIGdsR2VuQnVmZmVycygxLCAm
YnVmZmVyKTsKLSAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgYnVmZmVy
KTsKLSAgICBnbEJ1ZmZlckRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgcGl4ZWxfMF9zaXpl
LCBOVUxMLCBHTF9TVFJFQU1fRFJBVyk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICBnbEJ1ZmZlclN1YkRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgcGl4ZWxfMF9zaXpl
LCBwaXhlbF8wX2RhdGEpOwotICAgIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgMCwgMCwgcGl4ZWxfMF93aWR0aCwgcGl4ZWxfMF9oZWlnaHQsIEdMX0NPTVBSRVNT
RURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF8wX3NpemUsIE5VTEwpOwotICAgIGdsQnVmZmVy
U3ViRGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBwaXhlbF8xX3NpemUsIHBpeGVsXzFf
ZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAxLCAw
LCAwLCBwaXhlbF8xX3dpZHRoLCBwaXhlbF8xX2hlaWdodCwgR0xfQ09NUFJFU1NFRF9SR0JBX1Mz
VENfRFhUMV9FWFQsIHBpeGVsXzFfc2l6ZSwgTlVMTCk7Ci0gICAgZ2xCdWZmZXJTdWJEYXRhKEdM
X1BJWEVMX1VOUEFDS19CVUZGRVIsIDAsIHBpeGVsXzJfc2l6ZSwgcGl4ZWxfMl9kYXRhKTsKLSAg
ICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDIsIDAsIDAsIHBpeGVs
XzJfd2lkdGgsIHBpeGVsXzJfaGVpZ2h0LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VY
VCwgcGl4ZWxfMl9zaXplLCBOVUxMKTsKLSAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfUElYRUxfVU5Q
QUNLX0JVRkZFUiwgMCwgcGl4ZWxfM19zaXplLCBwaXhlbF8zX2RhdGEpOwotICAgIGdsQ29tcHJl
c3NlZFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMywgMCwgMCwgcGl4ZWxfM193aWR0aCwg
cGl4ZWxfM19oZWlnaHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF8z
X3NpemUsIE5VTEwpOwotICAgIGdsQnVmZmVyU3ViRGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVS
LCAwLCBwaXhlbF80X3NpemUsIHBpeGVsXzRfZGF0YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4U3Vi
SW1hZ2UyRChHTF9URVhUVVJFXzJELCA0LCAwLCAwLCBwaXhlbF80X3dpZHRoLCBwaXhlbF80X2hl
aWdodCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUMV9FWFQsIHBpeGVsXzRfc2l6ZSwgTlVM
TCk7Ci0gICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIDAsIHBpeGVs
XzVfc2l6ZSwgcGl4ZWxfNV9kYXRhKTsKLSAgICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDUsIDAsIDAsIHBpeGVsXzVfd2lkdGgsIHBpeGVsXzVfaGVpZ2h0LCBHTF9D
T01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwgcGl4ZWxfNV9zaXplLCBOVUxMKTsKLSAgICBn
bEJ1ZmZlclN1YkRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgcGl4ZWxfNl9zaXplLCBw
aXhlbF82X2RhdGEpOwotICAgIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgNiwgMCwgMCwgcGl4ZWxfNl93aWR0aCwgcGl4ZWxfNl9oZWlnaHQsIEdMX0NPTVBSRVNTRURf
UkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF82X3NpemUsIE5VTEwpOwotICAgIGdsQnVmZmVyU3Vi
RGF0YShHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCAwLCBwaXhlbF83X3NpemUsIHBpeGVsXzdfZGF0
YSk7Ci0gICAgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCA3LCAwLCAw
LCBwaXhlbF83X3dpZHRoLCBwaXhlbF83X2hlaWdodCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUMV9FWFQsIHBpeGVsXzdfc2l6ZSwgTlVMTCk7Ci0gICAgZ2xCdWZmZXJTdWJEYXRhKEdMX1BJ
WEVMX1VOUEFDS19CVUZGRVIsIDAsIHBpeGVsXzhfc2l6ZSwgcGl4ZWxfOF9kYXRhKTsKLSAgICBn
bENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDgsIDAsIDAsIHBpeGVsXzhf
d2lkdGgsIHBpeGVsXzhfaGVpZ2h0LCBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCwg
cGl4ZWxfOF9zaXplLCBOVUxMKTsKLSAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfUElYRUxfVU5QQUNL
X0JVRkZFUiwgMCwgcGl4ZWxfOV9zaXplLCBwaXhlbF85X2RhdGEpOwotICAgIGdsQ29tcHJlc3Nl
ZFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgOSwgMCwgMCwgcGl4ZWxfOV93aWR0aCwgcGl4
ZWxfOV9oZWlnaHQsIEdMX0NPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDFfRVhULCBwaXhlbF85X3Np
emUsIE5VTEwpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFVzZVByb2dy
YW0obVRleHR1cmVQcm9ncmFtKTsKLSAgICBnbFVuaWZvcm0xaShtVGV4dHVyZVVuaWZvcm1Mb2Nh
dGlvbiwgMCk7Ci0KLSAgICBkcmF3UXVhZChtVGV4dHVyZVByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbERlbGV0ZVRleHR1cmVz
KDEsICZ0ZXh0dXJlKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBVc2Ug
dGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIs
IHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2Fp
bnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChEWFQxQ29tcHJlc3NlZFRleHR1cmVUZXN0LAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMzX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwotCi0vLyBVc2UgdGhp
cyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdo
aWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0
LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChEWFQxQ29tcHJlc3NlZFRleHR1cmVUZXN0RVMzLCBF
UzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7Ci0KLUFOR0xFX0lOU1RB
TlRJQVRFX1RFU1QoRFhUMUNvbXByZXNzZWRUZXh0dXJlVGVzdEQzRDExLCBFUzJfRDNEMTEoKSwg
RVMzX0QzRDExKCksIEVTMl9EM0QxMV9GTDlfMygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EZWJ1Z01hcmtlclRlc3QuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RlYnVnTWFya2VyVGVzdC5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiZDRhNDMyMjcwLi4wMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRGVidWdN
YXJrZXJUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8vCi0vLyBDb3B5
cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0v
LyBEZWJ1Z01hcmtlclRlc3Q6Ci0vLyAgIEJhc2ljIHRlc3RzIHRvIGVuc3VyZSBFWFRfZGVidWdf
bWFya2VyIGVudHJ5IHBvaW50cyB3b3JrLgotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRl
c3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3Mg
RGVidWdNYXJrZXJUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAg
RGVidWdNYXJrZXJUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7Ci0g
ICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgp
OwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVC
aXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotfTsKLQotLy8g
U2ltcGxlIHRlc3QgdG8gZW5zdXJlIHRoZSB2YXJpb3VzIEVYVF9kZWJ1Z19tYXJrZXIgZW50cnkg
cG9pbnRzIGRvbid0IGNyYXNoLgotLy8gVGhlIGRlYnVnIG1hcmtlcnMgY2FuIGJlIHZhbGlkYXRl
ZCBieSBjYXB0dXJpbmcgdGhpcyB0ZXN0IHVuZGVyIFBJWC9HcmFwaGljcyBEaWFnbm9zdGljcy4K
LVRFU1RfUChEZWJ1Z01hcmtlclRlc3QsIEJhc2ljVmFsaWRhdGlvbikKLXsKLSAgICBpZiAoIWV4
dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9kZWJ1Z19tYXJrZXIiKSkKLSAgICB7Ci0gICAgICAgIHN0
ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGR1ZSB0byBtaXNzaW5nIEdMX0VYVF9kZWJ1Z19tYXJr
ZXIiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHN0ZDo6c3Ry
aW5nIGV2ZW50TWFya2VyQ2FwdGlvbiA9ICJUZXN0IGV2ZW50IG1hcmtlciBjYXB0aW9uIjsKLSAg
ICBzdGQ6OnN0cmluZyBncm91cE1hcmtlckNhcHRpb24gPSAiVGVzdCBncm91cCBtYXJrZXIgY2Fw
dGlvbiI7Ci0KLSAgICBnbFB1c2hHcm91cE1hcmtlckVYVChzdGF0aWNfY2FzdDxHTHNpemVpPihn
cm91cE1hcmtlckNhcHRpb24ubGVuZ3RoKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGdy
b3VwTWFya2VyQ2FwdGlvbi5jX3N0cigpKTsKLQotICAgIC8vIERvIHNvbWUgYmFzaWMgb3BlcmF0
aW9ucyBiZXR3ZWVuIGNhbGxzIHRvIGV4dGVuc2lvbiBlbnRyeSBwb2ludHMKLSAgICBnbENsZWFy
Q29sb3IoMS4wZiwgMS4wZiwgMS4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZG
RVJfQklUKTsKLQotICAgIGdsSW5zZXJ0RXZlbnRNYXJrZXJFWFQoc3RhdGljX2Nhc3Q8R0xzaXpl
aT4oZXZlbnRNYXJrZXJDYXB0aW9uLmxlbmd0aCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV2ZW50TWFya2VyQ2FwdGlvbi5jX3N0cigpKTsKLSAgICBnbENsZWFyQ29sb3IoMS4wZiwg
MC4wZiwgMC4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLQot
ICAgIGdsUHVzaEdyb3VwTWFya2VyRVhUKDAsIE5VTEwpOwotICAgIGdsQ2xlYXJDb2xvcigwLjBm
LCAxLjBmLCAwLjBmLCAwLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwot
Ci0gICAgZ2xQb3BHcm91cE1hcmtlckVYVCgpOwotICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBm
LCAxLjBmLCAwLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAg
Z2xQb3BHcm91cE1hcmtlckVYVCgpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0K
LS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCBy
ZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUg
cnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKERlYnVnTWFya2VyVGVzdCwgRVMy
X0QzRDkoKSwgRVMyX0QzRDExKCksIEVTMl9PUEVOR0woKSwgRVMyX09QRU5HTEVTKCkpOwotCi19
IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0RlYnVnVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvRGVidWdUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZmM3OWM1ZjY0NWIuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbF90ZXN0cy9EZWJ1Z1Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDUx
ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIERlYnVnVGVzdC5jcHAgOiBUZXN0cyBvZiB0aGUgR0xf
S0hSX2RlYnVnIGV4dGVuc2lvbgotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIK
LQotbmFtZXNwYWNlIGFuZ2xlCi17Ci0KLWNsYXNzIERlYnVnVGVzdCA6IHB1YmxpYyBBTkdMRVRl
c3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIERlYnVnVGVzdCgpIDogbURlYnVnRXh0ZW5zaW9uQXZh
aWxhYmxlKGZhbHNlKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAg
ICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0g
ICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMo
OCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnRGVw
dGhCaXRzKDI0KTsKLSAgICAgICAgc2V0RGVidWdFbmFibGVkKHRydWUpOwotICAgIH0KLQotICAg
IHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgp
OwotCi0gICAgICAgIG1EZWJ1Z0V4dGVuc2lvbkF2YWlsYWJsZSA9IGV4dGVuc2lvbkVuYWJsZWQo
IkdMX0tIUl9kZWJ1ZyIpOwotICAgICAgICBpZiAobURlYnVnRXh0ZW5zaW9uQXZhaWxhYmxlKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBnbEVuYWJsZShHTF9ERUJVR19PVVRQVVQpOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgYm9vbCBtRGVidWdFeHRlbnNpb25BdmFpbGFibGU7Ci19OwotCi1z
dHJ1Y3QgTWVzc2FnZQotewotICAgIEdMZW51bSBzb3VyY2U7Ci0gICAgR0xlbnVtIHR5cGU7Ci0g
ICAgR0x1aW50IGlkOwotICAgIEdMZW51bSBzZXZlcml0eTsKLSAgICBzdGQ6OnN0cmluZyBtZXNz
YWdlOwotICAgIGNvbnN0IHZvaWQgKnVzZXJQYXJhbTsKLX07Ci0KLXN0YXRpYyB2b2lkIEdMX0FQ
SUVOVFJZIENhbGxiYWNrKEdMZW51bSBzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdM
dWludCBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBzZXZlcml0
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR0xjaGFyICptZXNzYWdlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqdXNlclBhcmFtKQotewot
ICAgIE1lc3NhZ2UgbXtzb3VyY2UsIHR5cGUsIGlkLCBzZXZlcml0eSwgc3RkOjpzdHJpbmcobWVz
c2FnZSwgbGVuZ3RoKSwgdXNlclBhcmFtfTsKLSAgICBzdGQ6OnZlY3RvcjxNZXNzYWdlPiAqbWVz
c2FnZXMgPQotICAgICAgICBzdGF0aWNfY2FzdDxzdGQ6OnZlY3RvcjxNZXNzYWdlPiAqPihjb25z
dF9jYXN0PHZvaWQgKj4odXNlclBhcmFtKSk7Ci0gICAgbWVzc2FnZXMtPnB1c2hfYmFjayhtKTsK
LX0KLQotLy8gVGVzdCB0aGF0IGFsbCBBTkdMRSBiYWNrLWVuZHMgaGF2ZSBHTF9LSFJfZGVidWcg
ZW5hYmxlZAotVEVTVF9QKERlYnVnVGVzdCwgRW5hYmxlZCkKLXsKLSAgICBBU1NFUlRfVFJVRSht
RGVidWdFeHRlbnNpb25BdmFpbGFibGUpOwotfQotCi0vLyBUZXN0IHRoYXQgd2hlbiBkZWJ1ZyBv
dXRwdXQgaXMgZGlzYWJsZWQsIG5vIG1lc3NhZ2UgYXJlIG91dHB1dHRlZAotVEVTVF9QKERlYnVn
VGVzdCwgRGlzYWJsZWRPdXRwdXQpCi17Ci0gICAgaWYgKCFtRGVidWdFeHRlbnNpb25BdmFpbGFi
bGUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdM
X0tIUl9kZWJ1ZyBpcyBub3QgYXZhaWxhYmxlLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgZ2xEaXNhYmxlKEdMX0RFQlVHX09VVFBVVCk7Ci0KLSAgICBnbERl
YnVnTWVzc2FnZUluc2VydEtIUihHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04sIEdMX0RFQlVH
X1RZUEVfT1RIRVIsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfREVCVUdfU0VW
RVJJVFlfTk9USUZJQ0FUSU9OLCAtMSwgImRpc2NhcmRlZCIpOwotCi0gICAgR0xpbnQgbnVtTWVz
c2FnZXMgPSAwOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfREVCVUdfTE9HR0VEX01FU1NBR0VTLCAm
bnVtTWVzc2FnZXMpOwotICAgIEFTU0VSVF9FUSgwLCBudW1NZXNzYWdlcyk7Ci0KLSAgICBzdGQ6
OnZlY3RvcjxNZXNzYWdlPiBtZXNzYWdlczsKLSAgICBnbERlYnVnTWVzc2FnZUNhbGxiYWNrS0hS
KENhbGxiYWNrLCAmbWVzc2FnZXMpOwotICAgIGdsRW5hYmxlKEdMX0RFQlVHX09VVFBVVF9TWU5D
SFJPTk9VUyk7Ci0KLSAgICBBU1NFUlRfRVEoMHUsIG1lc3NhZ2VzLnNpemUoKSk7Ci19Ci0KLS8v
IFRlc3QgYSBiYXNpYyBmbG93IG9mIGluc2VydGluZyBhIG1lc3NhZ2UgYW5kIHJlYWRpbmcgaXQg
YmFjawotVEVTVF9QKERlYnVnVGVzdCwgSW5zZXJ0TWVzc2FnZSkKLXsKLSAgICBpZiAoIW1EZWJ1
Z0V4dGVuc2lvbkF2YWlsYWJsZSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBz
a2lwcGVkIGJlY2F1c2UgR0xfS0hSX2RlYnVnIGlzIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6OmVu
ZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBHTGVudW0gc291cmNlICAg
ICAgID0gR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OOwotICAgIGNvbnN0IEdMZW51bSB0eXBl
ICAgICAgICAgPSBHTF9ERUJVR19UWVBFX09USEVSOwotICAgIGNvbnN0IEdMdWludCBpZCAgICAg
ICAgICAgPSAxOwotICAgIGNvbnN0IEdMZW51bSBzZXZlcml0eSAgICAgPSBHTF9ERUJVR19TRVZF
UklUWV9OT1RJRklDQVRJT047Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgbWVzc2FnZSA9ICJNZXNz
YWdlIjsKLQotICAgIGdsRGVidWdNZXNzYWdlSW5zZXJ0S0hSKHNvdXJjZSwgdHlwZSwgaWQsIHNl
dmVyaXR5LCAtMSwgbWVzc2FnZS5jX3N0cigpKTsKLQotICAgIEdMaW50IG51bU1lc3NhZ2VzID0g
MDsKLSAgICBnbEdldEludGVnZXJ2KEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUywgJm51bU1lc3Nh
Z2VzKTsKLSAgICBBU1NFUlRfRVEoMSwgbnVtTWVzc2FnZXMpOwotCi0gICAgR0xpbnQgbWVzc2Fn
ZUxlbmd0aCA9IDA7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9ERUJVR19ORVhUX0xPR0dFRF9NRVNT
QUdFX0xFTkdUSCwgJm1lc3NhZ2VMZW5ndGgpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxH
TGludD4obWVzc2FnZS5sZW5ndGgoKSksIG1lc3NhZ2VMZW5ndGgpOwotCi0gICAgR0xlbnVtIHNv
dXJjZUJ1ZiAgID0gMDsKLSAgICBHTGVudW0gdHlwZUJ1ZiAgICAgPSAwOwotICAgIEdMZW51bSBp
ZEJ1ZiAgICAgICA9IDA7Ci0gICAgR0xlbnVtIHNldmVyaXR5QnVmID0gMDsKLSAgICBHTHNpemVp
IGxlbmd0aEJ1ZiA9IDA7Ci0gICAgc3RkOjp2ZWN0b3I8Y2hhcj4gbWVzc2FnZUJ1ZihtZXNzYWdl
TGVuZ3RoICsgMSk7Ci0gICAgR0x1aW50IHJldCA9Ci0gICAgICAgIGdsR2V0RGVidWdNZXNzYWdl
TG9nS0hSKDEsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1lc3NhZ2VCdWYuc2l6ZSgpKSwgJnNvdXJj
ZUJ1ZiwgJnR5cGVCdWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpZEJ1Ziwg
JnNldmVyaXR5QnVmLCAmbGVuZ3RoQnVmLCBtZXNzYWdlQnVmLmRhdGEoKSk7Ci0gICAgRVhQRUNU
X0VRKDF1LCByZXQpOwotICAgIEVYUEVDVF9FUShzb3VyY2UsIHNvdXJjZUJ1Zik7Ci0gICAgRVhQ
RUNUX0VRKHR5cGUsIHR5cGVCdWYpOwotICAgIEVYUEVDVF9FUShpZCwgaWRCdWYpOwotICAgIEVY
UEVDVF9FUShzZXZlcml0eSwgc2V2ZXJpdHlCdWYpOwotICAgIEVYUEVDVF9FUShsZW5ndGhCdWYs
IG1lc3NhZ2VMZW5ndGgpOwotICAgIEVYUEVDVF9TVFJFUShtZXNzYWdlLmNfc3RyKCksIG1lc3Nh
Z2VCdWYuZGF0YSgpKTsKLQotICAgIGdsR2V0SW50ZWdlcnYoR0xfREVCVUdfTE9HR0VEX01FU1NB
R0VTLCAmbnVtTWVzc2FnZXMpOwotICAgIEVYUEVDVF9FUSgwLCBudW1NZXNzYWdlcyk7Ci0KLSAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCBpbnNlcnRpbmcgbXVsdGlwbGUg
bWVzc2FnZXMKLVRFU1RfUChEZWJ1Z1Rlc3QsIEluc2VydE1lc3NhZ2VNdWx0aXBsZSkKLXsKLSAg
ICBpZiAoIW1EZWJ1Z0V4dGVuc2lvbkF2YWlsYWJsZSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291
dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfS0hSX2RlYnVnIGlzIG5vdCBhdmFpbGFibGUu
IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBHTGVu
dW0gc291cmNlICAgICAgICAgID0gR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OOwotICAgIGNv
bnN0IEdMZW51bSB0eXBlICAgICAgICAgICAgPSBHTF9ERUJVR19UWVBFX09USEVSOwotICAgIGNv
bnN0IEdMdWludCBzdGFydElEICAgICAgICAgPSAxOwotICAgIGNvbnN0IEdMZW51bSBzZXZlcml0
eSAgICAgICAgPSBHTF9ERUJVR19TRVZFUklUWV9OT1RJRklDQVRJT047Ci0gICAgY29uc3QgY2hh
ciBtZXNzYWdlUmVwZWF0Q2hhciA9ICdtJzsKLSAgICBjb25zdCBzaXplX3QgbWVzc2FnZUNvdW50
ICAgID0gMzI7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1lc3NhZ2VDb3VudDsgaSsr
KQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJpbmcgbWVzc2FnZShpICsgMSwgbWVzc2FnZVJlcGVh
dENoYXIpOwotICAgICAgICBnbERlYnVnTWVzc2FnZUluc2VydEtIUihzb3VyY2UsIHR5cGUsIHN0
YXJ0SUQgKyBzdGF0aWNfY2FzdDxHTHVpbnQ+KGkpLCBzZXZlcml0eSwgLTEsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UuY19zdHIoKSk7Ci0gICAgfQotCi0gICAgR0xp
bnQgbnVtTWVzc2FnZXMgPSAwOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfREVCVUdfTE9HR0VEX01F
U1NBR0VTLCAmbnVtTWVzc2FnZXMpOwotICAgIEFTU0VSVF9FUShzdGF0aWNfY2FzdDxHTGludD4o
bWVzc2FnZUNvdW50KSwgbnVtTWVzc2FnZXMpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtZXNzYWdlQ291bnQ7IGkrKykKLSAgICB7Ci0gICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfREVC
VUdfTE9HR0VEX01FU1NBR0VTLCAmbnVtTWVzc2FnZXMpOwotICAgICAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8R0xpbnQ+KG1lc3NhZ2VDb3VudCAtIGkpLCBudW1NZXNzYWdlcyk7Ci0KLSAgICAg
ICAgc3RkOjpzdHJpbmcgZXhwZWN0ZWRNZXNzYWdlKGkgKyAxLCBtZXNzYWdlUmVwZWF0Q2hhcik7
Ci0KLSAgICAgICAgR0xpbnQgbWVzc2FnZUxlbmd0aCA9IDA7Ci0gICAgICAgIGdsR2V0SW50ZWdl
cnYoR0xfREVCVUdfTkVYVF9MT0dHRURfTUVTU0FHRV9MRU5HVEgsICZtZXNzYWdlTGVuZ3RoKTsK
LSAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMaW50PihleHBlY3RlZE1lc3NhZ2UubGVu
Z3RoKCkpLCBtZXNzYWdlTGVuZ3RoKTsKLQotICAgICAgICBHTGVudW0gc291cmNlQnVmICAgPSAw
OwotICAgICAgICBHTGVudW0gdHlwZUJ1ZiAgICAgPSAwOwotICAgICAgICBHTGVudW0gaWRCdWYg
ICAgICAgPSAwOwotICAgICAgICBHTGVudW0gc2V2ZXJpdHlCdWYgPSAwOwotICAgICAgICBHTHNp
emVpIGxlbmd0aEJ1ZiA9IDA7Ci0gICAgICAgIHN0ZDo6dmVjdG9yPGNoYXI+IG1lc3NhZ2VCdWYo
bWVzc2FnZUxlbmd0aCArIDEpOwotICAgICAgICBHTHVpbnQgcmV0ID0KLSAgICAgICAgICAgIGds
R2V0RGVidWdNZXNzYWdlTG9nS0hSKDEsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1lc3NhZ2VCdWYu
c2l6ZSgpKSwgJnNvdXJjZUJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZ0eXBlQnVmLCAmaWRCdWYsICZzZXZlcml0eUJ1ZiwgJmxlbmd0aEJ1ZiwgbWVzc2FnZUJ1Zi5k
YXRhKCkpOwotICAgICAgICBFWFBFQ1RfRVEoMXUsIHJldCk7Ci0gICAgICAgIEVYUEVDVF9FUShz
b3VyY2UsIHNvdXJjZUJ1Zik7Ci0gICAgICAgIEVYUEVDVF9FUSh0eXBlLCB0eXBlQnVmKTsKLSAg
ICAgICAgRVhQRUNUX0VRKHN0YXJ0SUQgKyBpLCBpZEJ1Zik7Ci0gICAgICAgIEVYUEVDVF9FUShz
ZXZlcml0eSwgc2V2ZXJpdHlCdWYpOwotICAgICAgICBFWFBFQ1RfRVEobGVuZ3RoQnVmLCBtZXNz
YWdlTGVuZ3RoKTsKLSAgICAgICAgRVhQRUNUX1NUUkVRKGV4cGVjdGVkTWVzc2FnZS5jX3N0cigp
LCBtZXNzYWdlQnVmLmRhdGEoKSk7Ci0gICAgfQotCi0gICAgZ2xHZXRJbnRlZ2VydihHTF9ERUJV
R19MT0dHRURfTUVTU0FHRVMsICZudW1NZXNzYWdlcyk7Ci0gICAgRVhQRUNUX0VRKDAsIG51bU1l
c3NhZ2VzKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IHVzaW5n
IGEgZGVidWcgY2FsbGJhY2sKLVRFU1RfUChEZWJ1Z1Rlc3QsIERlYnVnQ2FsbGJhY2spCi17Ci0g
ICAgaWYgKCFtRGVidWdFeHRlbnNpb25BdmFpbGFibGUpCi0gICAgewotICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX0tIUl9kZWJ1ZyBpcyBub3QgYXZhaWxhYmxl
LiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3RkOjp2ZWN0
b3I8TWVzc2FnZT4gbWVzc2FnZXM7Ci0KLSAgICBnbERlYnVnTWVzc2FnZUNhbGxiYWNrS0hSKENh
bGxiYWNrLCAmbWVzc2FnZXMpOwotICAgIGdsRW5hYmxlKEdMX0RFQlVHX09VVFBVVF9TWU5DSFJP
Tk9VUyk7Ci0KLSAgICBjb25zdCBHTGVudW0gc291cmNlICAgICAgID0gR0xfREVCVUdfU09VUkNF
X0FQUExJQ0FUSU9OOwotICAgIGNvbnN0IEdMZW51bSB0eXBlICAgICAgICAgPSBHTF9ERUJVR19U
WVBFX09USEVSOwotICAgIGNvbnN0IEdMdWludCBpZCAgICAgICAgICAgPSAxOwotICAgIGNvbnN0
IEdMZW51bSBzZXZlcml0eSAgICAgPSBHTF9ERUJVR19TRVZFUklUWV9OT1RJRklDQVRJT047Ci0g
ICAgY29uc3Qgc3RkOjpzdHJpbmcgbWVzc2FnZSA9ICJNZXNzYWdlIjsKLQotICAgIGdsRGVidWdN
ZXNzYWdlSW5zZXJ0S0hSKHNvdXJjZSwgdHlwZSwgaWQsIHNldmVyaXR5LCAtMSwgbWVzc2FnZS5j
X3N0cigpKTsKLQotICAgIEdMaW50IG51bU1lc3NhZ2VzID0gMDsKLSAgICBnbEdldEludGVnZXJ2
KEdMX0RFQlVHX0xPR0dFRF9NRVNTQUdFUywgJm51bU1lc3NhZ2VzKTsKLSAgICBFWFBFQ1RfRVEo
MCwgbnVtTWVzc2FnZXMpOwotCi0gICAgQVNTRVJUX0VRKDF1LCBtZXNzYWdlcy5zaXplKCkpOwot
Ci0gICAgY29uc3QgTWVzc2FnZSAmbSA9IG1lc3NhZ2VzLmZyb250KCk7Ci0gICAgRVhQRUNUX0VR
KHNvdXJjZSwgbS5zb3VyY2UpOwotICAgIEVYUEVDVF9FUSh0eXBlLCBtLnR5cGUpOwotICAgIEVY
UEVDVF9FUShpZCwgbS5pZCk7Ci0gICAgRVhQRUNUX0VRKHNldmVyaXR5LCBtLnNldmVyaXR5KTsK
LSAgICBFWFBFQ1RfRVEobWVzc2FnZSwgbS5tZXNzYWdlKTsKLQotICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotfQotCi0vLyBUZXN0IHRoZSBnbEdldFBvaW50ZXJ2S0hSIGVudHJ5IHBvaW50Ci1U
RVNUX1AoRGVidWdUZXN0LCBHZXRQb2ludGVyKQotewotICAgIGlmICghbURlYnVnRXh0ZW5zaW9u
QXZhaWxhYmxlKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVj
YXVzZSBHTF9LSFJfZGVidWcgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIHN0ZDo6dmVjdG9yPE1lc3NhZ2U+IG1lc3NhZ2VzOwot
Ci0gICAgZ2xEZWJ1Z01lc3NhZ2VDYWxsYmFja0tIUihDYWxsYmFjaywgJm1lc3NhZ2VzKTsKLQot
ICAgIHZvaWQgKmNhbGxiYWNrID0gbnVsbHB0cjsKLSAgICBnbEdldFBvaW50ZXJ2S0hSKEdMX0RF
QlVHX0NBTExCQUNLX0ZVTkNUSU9OLCAmY2FsbGJhY2spOwotICAgIEVYUEVDVF9FUShyZWludGVy
cHJldF9jYXN0PHZvaWQgKj4oQ2FsbGJhY2spLCBjYWxsYmFjayk7Ci0KLSAgICB2b2lkICp1c2Vy
RGF0YSA9IG51bGxwdHI7Ci0gICAgZ2xHZXRQb2ludGVydktIUihHTF9ERUJVR19DQUxMQkFDS19V
U0VSX1BBUkFNLCAmdXNlckRhdGEpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDx2b2lkICo+
KCZtZXNzYWdlcyksIHVzZXJEYXRhKTsKLX0KLQotLy8gVGVzdCB1c2FnZSBvZiBtZXNzYWdlIGNv
bnRyb2wuICBFeGFtcGxlIHRha2VuIGZyb20gR0xfS0hSX2RlYnVnIHNwZWMuCi1URVNUX1AoRGVi
dWdUZXN0LCBNZXNzYWdlQ29udHJvbDEpCi17Ci0gICAgaWYgKCFtRGVidWdFeHRlbnNpb25BdmFp
bGFibGUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNl
IEdMX0tIUl9kZWJ1ZyBpcyBub3QgYXZhaWxhYmxlLiIgPDwgc3RkOjplbmRsOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgc3RkOjp2ZWN0b3I8TWVzc2FnZT4gbWVzc2FnZXM7Ci0KLSAg
ICBnbERlYnVnTWVzc2FnZUNhbGxiYWNrS0hSKENhbGxiYWNrLCAmbWVzc2FnZXMpOwotICAgIGds
RW5hYmxlKEdMX0RFQlVHX09VVFBVVF9TWU5DSFJPTk9VUyk7Ci0KLSAgICAvLyBTZXR1cCBvZiB0
aGUgZGVmYXVsdCBhY3RpdmUgZGVidWcgZ3JvdXA6IEZpbHRlciBldmVyeXRoaW5nIGluCi0gICAg
Z2xEZWJ1Z01lc3NhZ2VDb250cm9sS0hSKEdMX0RPTlRfQ0FSRSwgR0xfRE9OVF9DQVJFLCBHTF9E
T05UX0NBUkUsIDAsIE5VTEwsIEdMX1RSVUUpOwotCi0gICAgLy8gR2VuZXJhdGUgYSBkZWJ1ZyBt
YXJrZXIgZGVidWcgb3V0cHV0IG1lc3NhZ2UKLSAgICBnbERlYnVnTWVzc2FnZUluc2VydEtIUihH
TF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04sIEdMX0RFQlVHX1RZUEVfTUFSS0VSLCAxMDAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9O
LCAtMSwgIk1lc3NhZ2UgMSIpOwotCi0gICAgLy8gUHVzaCBkZWJ1ZyBncm91cCAxCi0gICAgZ2xQ
dXNoRGVidWdHcm91cEtIUihHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04sIDEsIC0xLCAiTWVz
c2FnZSAyIik7Ci0KLSAgICAvLyBTZXR1cCBvZiB0aGUgZGVidWcgZ3JvdXAgMTogRmlsdGVyIGV2
ZXJ5dGhpbmcgb3V0Ci0gICAgZ2xEZWJ1Z01lc3NhZ2VDb250cm9sS0hSKEdMX0RPTlRfQ0FSRSwg
R0xfRE9OVF9DQVJFLCBHTF9ET05UX0NBUkUsIDAsIE5VTEwsIEdMX0ZBTFNFKTsKLQotICAgIC8v
IFRoaXMgbWVzc2FnZSB3b24ndCBhcHBlYXIgaW4gdGhlIGRlYnVnIG91dHB1dCBsb2cgb2YKLSAg
ICBnbERlYnVnTWVzc2FnZUluc2VydEtIUihHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04sIEdM
X0RFQlVHX1RZUEVfTUFSS0VSLCAxMDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
REVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OLCAtMSwgIk1lc3NhZ2UgMyIpOwotCi0gICAgLy8g
UG9wIGRlYnVnIGdyb3VwIDEsIHJlc3RvcmUgdGhlIHZvbHVtZSBjb250cm9sIG9mIHRoZSBkZWZh
dWx0IGRlYnVnIGdyb3VwLgotICAgIGdsUG9wRGVidWdHcm91cEtIUigpOwotCi0gICAgLy8gR2Vu
ZXJhdGUgYSBkZWJ1ZyBtYXJrZXIgZGVidWcgb3V0cHV0IG1lc3NhZ2UKLSAgICBnbERlYnVnTWVz
c2FnZUluc2VydEtIUihHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04sIEdMX0RFQlVHX1RZUEVf
TUFSS0VSLCAxMDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfREVCVUdfU0VWRVJJ
VFlfTk9USUZJQ0FUSU9OLCAtMSwgIk1lc3NhZ2UgNSIpOwotCi0gICAgLy8gRXhwZWN0ZWQgZGVi
dWcgb3V0cHV0IGZyb20gdGhlIEdMIGltcGxlbWVudGF0aW9uCi0gICAgLy8gTWVzc2FnZSAxCi0g
ICAgLy8gTWVzc2FnZSAyCi0gICAgLy8gTWVzc2FnZSAyCi0gICAgLy8gTWVzc2FnZSA1Ci0gICAg
RVhQRUNUX0VRKDR1LCBtZXNzYWdlcy5zaXplKCkpOwotICAgIEVYUEVDVF9TVFJFUShtZXNzYWdl
c1swXS5tZXNzYWdlLmNfc3RyKCksICJNZXNzYWdlIDEiKTsKLSAgICBFWFBFQ1RfU1RSRVEobWVz
c2FnZXNbMV0ubWVzc2FnZS5jX3N0cigpLCAiTWVzc2FnZSAyIik7Ci0gICAgRVhQRUNUX1NUUkVR
KG1lc3NhZ2VzWzJdLm1lc3NhZ2UuY19zdHIoKSwgIk1lc3NhZ2UgMiIpOwotICAgIEVYUEVDVF9T
VFJFUShtZXNzYWdlc1szXS5tZXNzYWdlLmNfc3RyKCksICJNZXNzYWdlIDUiKTsKLQotICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IHVzYWdlIG9mIG1lc3NhZ2UgY29udHJv
bC4gIEV4YW1wbGUgdGFrZW4gZnJvbSBHTF9LSFJfZGVidWcgc3BlYy4KLVRFU1RfUChEZWJ1Z1Rl
c3QsIE1lc3NhZ2VDb250cm9sMikKLXsKLSAgICBpZiAoIW1EZWJ1Z0V4dGVuc2lvbkF2YWlsYWJs
ZSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xf
S0hSX2RlYnVnIGlzIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBzdGQ6OnZlY3RvcjxNZXNzYWdlPiBtZXNzYWdlczsKLQotICAgIGds
RGVidWdNZXNzYWdlQ2FsbGJhY2tLSFIoQ2FsbGJhY2ssICZtZXNzYWdlcyk7Ci0gICAgZ2xFbmFi
bGUoR0xfREVCVUdfT1VUUFVUX1NZTkNIUk9OT1VTKTsKLQotICAgIC8vIFNldHVwIHRoZSBjb250
cm9sIG9mIGRlIGRlYnVnIG91dHB1dCBmb3IgdGhlIGRlZmF1bHQgZGVidWcgZ3JvdXAKLSAgICBn
bERlYnVnTWVzc2FnZUNvbnRyb2xLSFIoR0xfRE9OVF9DQVJFLCBHTF9ET05UX0NBUkUsIEdMX0RP
TlRfQ0FSRSwgMCwgTlVMTCwgR0xfRkFMU0UpOwotICAgIGdsRGVidWdNZXNzYWdlQ29udHJvbEtI
UihHTF9ERUJVR19TT1VSQ0VfVEhJUkRfUEFSVFksIEdMX0RPTlRfQ0FSRSwgR0xfRE9OVF9DQVJF
LCAwLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GQUxTRSk7Ci0gICAg
c3RkOjp2ZWN0b3I8R0x1aW50PiBpZHMwID0gezEyMzQsIDIzNDUsIDM0NTYsIDQ1Njd9OwotICAg
IGdsRGVidWdNZXNzYWdlQ29udHJvbEtIUihHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04sIEdM
X0RFQlVHX1RZUEVfT1RIRVIsIEdMX0RPTlRfQ0FSRSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8R0x1aW50PihpZHMwLnNpemUoKSksIGlkczAuZGF0YSgpLCBHTF9G
QUxTRSk7Ci0gICAgZ2xEZWJ1Z01lc3NhZ2VDb250cm9sS0hSKEdMX0RFQlVHX1NPVVJDRV9BUFBM
SUNBVElPTiwgR0xfREVCVUdfVFlQRV9QT1JUQUJJTElUWSwgR0xfRE9OVF9DQVJFLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGlkczAuc2l6ZSgpKSwg
aWRzMC5kYXRhKCksIEdMX0ZBTFNFKTsKLQotICAgIC8vIFB1c2ggZGVidWcgZ3JvdXAgMQotICAg
IC8vIEluaGVyaXQgb2YgdGhlIGRlZmF1bHQgZGVidWcgZ3JvdXAgZGVidWcgb3V0cHV0IHZvbHVt
ZSBjb250cm9sCi0gICAgLy8gRmlsdGVyZWQgb3V0IGJ5IGdsRGVidWdNZXNzYWdlQ29udHJvbAot
ICAgIGdsUHVzaERlYnVnR3JvdXBLSFIoR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OLCAxLCAt
MSwgIk1lc3NhZ2UgMSIpOwotCi0gICAgLy8gSW4gdGhpcyBzZWN0aW9uIG9mIHRoZSBjb2RlLCB3
ZSBhcmUgaW50ZXJlc3RlZCBpbiBwZXJmb3JtYW5jZXMuCi0gICAgZ2xEZWJ1Z01lc3NhZ2VDb250
cm9sS0hSKEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPTiwgR0xfREVCVUdfVFlQRV9QRVJGT1JN
QU5DRSwgR0xfRE9OVF9DQVJFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxM
LCBHTF9UUlVFKTsKLSAgICAvLyBCdXQgd2UgYWxyZWFkeSBpZGVudGlmeSB0aGF0IHNvbWUgbWVz
c2FnZXMgYXJlIG5vdCByZWFsbHkgdXNlZnVsIGZvciB1cy4KLSAgICBzdGQ6OnZlY3RvcjxHTHVp
bnQ+IGlkczEgPSB7NTY3OCwgNjc4OX07Ci0gICAgZ2xEZWJ1Z01lc3NhZ2VDb250cm9sS0hSKEdM
X0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPTiwgR0xfREVCVUdfVFlQRV9PVEhFUiwgR0xfRE9OVF9D
QVJFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHVpbnQ+KGlk
czEuc2l6ZSgpKSwgaWRzMS5kYXRhKCksIEdMX0ZBTFNFKTsKLQotICAgIGdsRGVidWdNZXNzYWdl
SW5zZXJ0S0hSKEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPTiwgR0xfREVCVUdfVFlQRV9QRVJG
T1JNQU5DRSwgMTM1NywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ERUJVR19TRVZF
UklUWV9NRURJVU0sIC0xLCAiTWVzc2FnZSAyIik7Ci0gICAgZ2xEZWJ1Z01lc3NhZ2VJbnNlcnRL
SFIoR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZLCAgLy8gV2Ugc3RpbGwgZmlsdGVyIG91dCB0
aGVzZSBtZXNzYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9ERUJVR19UWVBF
X09USEVSLCAzNTc5LCBHTF9ERUJVR19TRVZFUklUWV9NRURJVU0sIC0xLCAiTWVzc2FnZSAzIik7
Ci0KLSAgICBnbFBvcERlYnVnR3JvdXBLSFIoKTsKLQotICAgIC8vIEV4cGVjdGVkIGRlYnVnIG91
dHB1dCBmcm9tIHRoZSBHTCBpbXBsZW1lbnRhdGlvbgotICAgIC8vIE1lc3NhZ2UgMgotICAgIEVY
UEVDVF9FUSgxdSwgbWVzc2FnZXMuc2l6ZSgpKTsKLSAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZXNb
MF0ubWVzc2FnZS5jX3N0cigpLCAiTWVzc2FnZSAyIik7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKLX0KLQotLy8gVGVzdCBiYXNpYyB1c2FnZSBvZiBzZXR0aW5nIGFuZCBnZXR0aW5nIGxh
YmVscwotVEVTVF9QKERlYnVnVGVzdCwgT2JqZWN0TGFiZWxzKQotewotICAgIGlmICghbURlYnVn
RXh0ZW5zaW9uQXZhaWxhYmxlKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgYmVjYXVzZSBHTF9LSFJfZGVidWcgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5k
bDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEdMdWludCByZW5kZXJidWZmZXIgPSAw
OwotICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVyKTsKLSAgICBnbEJpbmRS
ZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOwotCi0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgJmxhYmVsID0gInJlbmRlcmJ1ZmZlciI7Ci0gICAgZ2xPYmplY3RMYWJlbEtI
UihHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlciwgLTEsIGxhYmVsLmNfc3RyKCkpOwotCi0g
ICAgc3RkOjp2ZWN0b3I8Y2hhcj4gbGFiZWxCdWYobGFiZWwubGVuZ3RoKCkgKyAxKTsKLSAgICBH
THNpemVpIGxhYmVsTGVuZ3RoQnVmID0gMDsKLSAgICBnbEdldE9iamVjdExhYmVsS0hSKEdMX1JF
TkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyLCBzdGF0aWNfY2FzdDxHTHNpemVpPihsYWJlbEJ1Zi5z
aXplKCkpLAotICAgICAgICAgICAgICAgICAgICAgICAgJmxhYmVsTGVuZ3RoQnVmLCBsYWJlbEJ1
Zi5kYXRhKCkpOwotCi0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMc2l6ZWk+KGxhYmVsLmxl
bmd0aCgpKSwgbGFiZWxMZW5ndGhCdWYpOwotICAgIEVYUEVDVF9TVFJFUShsYWJlbC5jX3N0cigp
LCBsYWJlbEJ1Zi5kYXRhKCkpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBn
bERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7Ci0KLSAgICBnbE9iamVjdExh
YmVsS0hSKEdMX1JFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyLCAtMSwgbGFiZWwuY19zdHIoKSk7
Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgZ2xHZXRPYmpl
Y3RMYWJlbEtIUihHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlciwgc3RhdGljX2Nhc3Q8R0xz
aXplaT4obGFiZWxCdWYuc2l6ZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICZsYWJlbExl
bmd0aEJ1ZiwgbGFiZWxCdWYuZGF0YSgpKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJ
RF9WQUxVRSk7Ci19Ci0KLS8vIFRlc3QgYmFzaWMgdXNhZ2Ugb2Ygc2V0dGluZyBhbmQgZ2V0dGlu
ZyBsYWJlbHMKLVRFU1RfUChEZWJ1Z1Rlc3QsIE9iamVjdFB0ckxhYmVscykKLXsKLSAgICBpZiAo
IW1EZWJ1Z0V4dGVuc2lvbkF2YWlsYWJsZSB8fCBnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMp
Ci0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX0tI
Ul9kZWJ1ZyBvciBFUzMgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIEdMc3luYyBzeW5jID0gZ2xGZW5jZVN5bmMoR0xfU1lOQ19H
UFVfQ09NTUFORFNfQ09NUExFVEUsIDApOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmxhYmVs
ID0gInN5bmMiOwotICAgIGdsT2JqZWN0UHRyTGFiZWxLSFIoc3luYywgLTEsIGxhYmVsLmNfc3Ry
KCkpOwotCi0gICAgc3RkOjp2ZWN0b3I8Y2hhcj4gbGFiZWxCdWYobGFiZWwubGVuZ3RoKCkgKyAx
KTsKLSAgICBHTHNpemVpIGxhYmVsTGVuZ3RoQnVmID0gMDsKLSAgICBnbEdldE9iamVjdFB0ckxh
YmVsS0hSKHN5bmMsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGxhYmVsQnVmLnNpemUoKSksICZsYWJl
bExlbmd0aEJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsQnVmLmRhdGEoKSk7
Ci0KLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0xzaXplaT4obGFiZWwubGVuZ3RoKCkpLCBs
YWJlbExlbmd0aEJ1Zik7Ci0gICAgRVhQRUNUX1NUUkVRKGxhYmVsLmNfc3RyKCksIGxhYmVsQnVm
LmRhdGEoKSk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsRGVsZXRlU3lu
YyhzeW5jKTsKLQotICAgIGdsT2JqZWN0UHRyTGFiZWxLSFIoc3luYywgLTEsIGxhYmVsLmNfc3Ry
KCkpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIGdsR2V0
T2JqZWN0UHRyTGFiZWxLSFIoc3luYywgc3RhdGljX2Nhc3Q8R0xzaXplaT4obGFiZWxCdWYuc2l6
ZSgpKSwgJmxhYmVsTGVuZ3RoQnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxC
dWYuZGF0YSgpKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci19Ci0K
LS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCBy
ZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZQotLy8gdGVzdHMgc2hvdWxk
IGJlIHJ1biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChEZWJ1Z1Rlc3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNf
T1BFTkdMKCkpOwotCi19ICAvLyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EZXB0aFN0ZW5jaWxGb3JtYXRzVGVz
dC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRGVwdGhT
dGVuY2lsRm9ybWF0c1Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjJh
MTY1Nzg0Ny4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0RlcHRoU3RlbmNpbEZvcm1hdHNUZXN0LmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDE5MiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRl
c3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1jbGFzcyBEZXB0aFN0ZW5jaWxGb3Jt
YXRzVGVzdEJhc2UgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBEZXB0
aFN0ZW5jaWxGb3JtYXRzVGVzdEJhc2UoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgo
MTI4KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1Jl
ZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29u
ZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICB9Ci0K
LSAgICBib29sIGNoZWNrVGV4SW1hZ2VGb3JtYXRTdXBwb3J0KEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlKQotICAgIHsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAg
R0x1aW50IHRleCA9IDA7Ci0gICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleCk7Ci0gICAgICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4KTsKLSAgICAgICAgZ2xUZXhJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDAsIGZvcm1hdCwgMSwgMSwgMCwgZm9ybWF0LCB0eXBlLCBOVUxMKTsK
LSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4KTsKLQotICAgICAgICByZXR1cm4gKGds
R2V0RXJyb3IoKSA9PSBHTF9OT19FUlJPUik7Ci0gICAgfQotCi0gICAgYm9vbCBjaGVja1RleFN0
b3JhZ2VGb3JtYXRTdXBwb3J0KEdMZW51bSBpbnRlcm5hbEZvcm1hdCkKLSAgICB7Ci0gICAgICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIEdMdWludCB0ZXggPSAwOwotICAgICAg
ICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIHRleCk7Ci0gICAgICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEs
IGludGVybmFsRm9ybWF0LCAxLCAxKTsKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4
KTsKLQotICAgICAgICByZXR1cm4gKGdsR2V0RXJyb3IoKSA9PSBHTF9OT19FUlJPUik7Ci0gICAg
fQotCi0gICAgYm9vbCBjaGVja1JlbmRlcmJ1ZmZlckZvcm1hdFN1cHBvcnQoR0xlbnVtIGludGVy
bmFsRm9ybWF0KQotICAgIHsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAg
ICAgR0x1aW50IHJiID0gMDsKLSAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZyYik7Ci0g
ICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIHJiKTsKLSAgICAgICAg
Z2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgaW50ZXJuYWxGb3JtYXQsIDEs
IDEpOwotICAgICAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnJiKTsKLQotICAgICAgICBy
ZXR1cm4gKGdsR2V0RXJyb3IoKSA9PSBHTF9OT19FUlJPUik7Ci0gICAgfQotCi0gICAgdmlydHVh
bCB2b2lkIFNldFVwKCkKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNF
Ci0gICAgICAgICgKLSAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSAgICAgICAg
ICAgIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOwotICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHRl
eGNvb3JkOwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAgICAgICAgICAgdGV4Y29v
cmQgPSAocG9zaXRpb24ueHkgKiAwLjUpICsgMC41OwotICAgICAgICAgICAgfQotICAgICAgICAp
OwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hB
REVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
Ci0gICAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7Ci0gICAgICAgICAgICB2YXJ5aW5n
IHZlYzIgdGV4Y29vcmQ7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQp
OwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIG1Qcm9ncmFtID0gQ29tcGls
ZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAg
ICAgIGlmIChtUHJvZ3JhbSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBGQUlMKCkgPDwg
InNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKLSAgICAgICAgfQotCi0gICAgICAgIG1UZXh0
dXJlVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ0ZXgi
KTsKLSAgICAgICAgRVhQRUNUX05FKC0xLCBtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbik7Ci0KLSAg
ICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVRleHR1cmUpOwotICAgICAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQotICAgIHsKLSAg
ICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJl
cygxLCAmbVRleHR1cmUpOwotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAgICB9
Ci0KLSAgICBHTHVpbnQgbVByb2dyYW07Ci0gICAgR0x1aW50IG1UZXh0dXJlOwotICAgIEdMaW50
IG1UZXh0dXJlVW5pZm9ybUxvY2F0aW9uOwotfTsKLQotY2xhc3MgRGVwdGhTdGVuY2lsRm9ybWF0
c1Rlc3QgOiBwdWJsaWMgRGVwdGhTdGVuY2lsRm9ybWF0c1Rlc3RCYXNlCi17fTsKLQotY2xhc3Mg
RGVwdGhTdGVuY2lsRm9ybWF0c1Rlc3RFUzMgOiBwdWJsaWMgRGVwdGhTdGVuY2lsRm9ybWF0c1Rl
c3RCYXNlCi17fTsKLQotVEVTVF9QKERlcHRoU3RlbmNpbEZvcm1hdHNUZXN0LCBEZXB0aFRleHR1
cmUpCi17Ci0gICAgYm9vbCBzaG91bGRIYXZlVGV4dHVyZVN1cHBvcnQgPSBleHRlbnNpb25FbmFi
bGVkKCJHTF9BTkdMRV9kZXB0aF90ZXh0dXJlIik7Ci0gICAgRVhQRUNUX0VRKHNob3VsZEhhdmVU
ZXh0dXJlU3VwcG9ydCwgY2hlY2tUZXhJbWFnZUZvcm1hdFN1cHBvcnQoR0xfREVQVEhfQ09NUE9O
RU5ULCBHTF9VTlNJR05FRF9TSE9SVCkpOwotICAgIEVYUEVDVF9FUShzaG91bGRIYXZlVGV4dHVy
ZVN1cHBvcnQsIGNoZWNrVGV4SW1hZ2VGb3JtYXRTdXBwb3J0KEdMX0RFUFRIX0NPTVBPTkVOVCwg
R0xfVU5TSUdORURfSU5UKSk7Ci0KLSAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3Rl
eHR1cmVfc3RvcmFnZSIpKQotICAgIHsKLSAgICAgICAgRVhQRUNUX0VRKHNob3VsZEhhdmVUZXh0
dXJlU3VwcG9ydCwgY2hlY2tUZXhTdG9yYWdlRm9ybWF0U3VwcG9ydChHTF9ERVBUSF9DT01QT05F
TlQxNikpOwotICAgICAgICBFWFBFQ1RfRVEoc2hvdWxkSGF2ZVRleHR1cmVTdXBwb3J0LCBjaGVj
a1RleFN0b3JhZ2VGb3JtYXRTdXBwb3J0KEdMX0RFUFRIX0NPTVBPTkVOVDMyX09FUykpOwotICAg
IH0KLX0KLQotVEVTVF9QKERlcHRoU3RlbmNpbEZvcm1hdHNUZXN0LCBQYWNrZWREZXB0aFN0ZW5j
aWwpCi17Ci0gICAgLy8gRXhwZWN0ZWQgdG8gZmFpbCBpbiBEM0Q5IGlmIEdMX09FU19wYWNrZWRf
ZGVwdGhfc3RlbmNpbCBpcyBub3QgcHJlc2VudC4KLSAgICAvLyBFeHBlY3RlZCB0byBmYWlsIGlu
IEQzRDExIGlmIEdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCBvciBHTF9BTkdMRV9kZXB0aF90
ZXh0dXJlIGlzIG5vdCBwcmVzZW50LgotCi0gICAgYm9vbCBzaG91bGRIYXZlUmVuZGVyYnVmZmVy
U3VwcG9ydCA9IGV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIp
OwotICAgIEVYUEVDVF9FUShzaG91bGRIYXZlUmVuZGVyYnVmZmVyU3VwcG9ydCwgY2hlY2tSZW5k
ZXJidWZmZXJGb3JtYXRTdXBwb3J0KEdMX0RFUFRIMjRfU1RFTkNJTDhfT0VTKSk7Ci0KLSAgICBi
b29sIHNob3VsZEhhdmVUZXh0dXJlU3VwcG9ydCA9IGV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19w
YWNrZWRfZGVwdGhfc3RlbmNpbCIpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9kZXB0aF90ZXh0dXJlIik7Ci0gICAgRVhQ
RUNUX0VRKHNob3VsZEhhdmVUZXh0dXJlU3VwcG9ydCwgY2hlY2tUZXhJbWFnZUZvcm1hdFN1cHBv
cnQoR0xfREVQVEhfU1RFTkNJTF9PRVMsIEdMX1VOU0lHTkVEX0lOVF8yNF84X09FUykpOwotCi0g
ICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UiKSkKLSAgICB7
Ci0gICAgICAgIEVYUEVDVF9FUShzaG91bGRIYXZlVGV4dHVyZVN1cHBvcnQsIGNoZWNrVGV4U3Rv
cmFnZUZvcm1hdFN1cHBvcnQoR0xfREVQVEgyNF9TVEVOQ0lMOF9PRVMpKTsKLSAgICB9Ci19Ci0K
LVRFU1RfUChEZXB0aFN0ZW5jaWxGb3JtYXRzVGVzdEVTMywgRHJhd1dpdGhEZXB0aFN0ZW5jaWwp
Ci17Ci0gICAgR0x1c2hvcnQgZGF0YVsxNl07Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7
IGkgPCAxNjsgaSsrKQotICAgIHsKLSAgICAgICAgZGF0YVtpXSA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8R0x1c2hvcnQ+OjptYXgoKTsKLSAgICB9Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBtVGV4dHVyZSk7Ci0gICAgZ2xUZXhTdG9yYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xf
REVQVEhfQ09NUE9ORU5UMTYsIDQsIDQpOwotICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCAwLCAwLCA0LCA0LCBHTF9ERVBUSF9DT01QT05FTlQsIEdMX1VOU0lHTkVEX1NIT1JU
LCBkYXRhKTsKLQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJF
X01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotCi0gICAgZ2xVc2VQcm9n
cmFtKG1Qcm9ncmFtKTsKLSAgICBnbFVuaWZvcm0xaShtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiwg
MCk7Ci0KLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIGRyYXdRdWFkKG1Q
cm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgR0x1Ynl0ZSBwaXhlbFs0XTsKLSAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwgJnBpeGVsKTsKLQotICAgIC8vIE9ubHkgcmVxdWlyZSB0
aGUgcmVkIGFuZCBhbHBoYSBjaGFubmVscyBoYXZlIHRoZSBjb3JyZWN0IHZhbHVlcywgdGhlIGRl
cHRoIHRleHR1cmUgZXh0ZW5zaW9ucwotICAgIC8vIGxlYXZlIHRoZSBncmVlbiBhbmQgYmx1ZSBj
aGFubmVscyB1bmRlZmluZWQKLSAgICBBU1NFUlRfTkVBUigyNTUsIHBpeGVsWzBdLCAyLjApOwot
ICAgIEFTU0VSVF9FUSgyNTUsIHBpeGVsWzNdKTsKLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0
IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1h
am9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lO
U1RBTlRJQVRFX1RFU1QoRGVwdGhTdGVuY2lsRm9ybWF0c1Rlc3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgIEVTMl9PUEVOR0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRGVwdGhTdGVuY2ls
Rm9ybWF0c1Rlc3RFUzMsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9EaWZmZXJlbnRTdGVuY2lsTWFza3NUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbF90ZXN0cy9EaWZmZXJlbnRTdGVuY2lsTWFza3NUZXN0LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2UxY2Q4YTE5NDguLjAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EaWZmZXJlbnRTdGVuY2ls
TWFza3NUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi0vLwotLy8gQ29w
eXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwot
Ly8gRGlmZmVyZW50U3RlbmNpbE1hc2tzVGVzdDoKLS8vICAgVGVzdHMgdGhlIGVxdWFsaXR5IGJl
dHdlZW4gc3RlbmNpbFdyaXRlTWFzayBhbmQgc3RlbmNpbEJhY2tXcml0ZU1hc2suCi0vLwotCi0j
aW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xl
OwotCi1uYW1lc3BhY2UKLXsKLWNsYXNzIERpZmZlcmVudFN0ZW5jaWxNYXNrc1Rlc3QgOiBwdWJs
aWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBEaWZmZXJlbnRTdGVuY2lsTWFza3NU
ZXN0KCkgOiBtUHJvZ3JhbSgwKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsK
LSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMo
OCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1
ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICAgICAgc2V0Q29u
ZmlnRGVwdGhCaXRzKDI0KTsKLSAgICAgICAgc2V0Q29uZmlnU3RlbmNpbEJpdHMoOCk7Ci0gICAg
fQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6
OlNldFVwKCk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNl
ID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAg
ZmxvYXQ7Ci0gICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKLQotICAgICAgICAg
ICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9Qb3NpdGlv
biA9IHBvc2l0aW9uOwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAg
ICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0KLSAgICAgICAgICAgIHZv
aWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0g
dmVjNCgwLjAsIDAuMCwgMS4wLCAxLjApOwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0g
ICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFn
bWVudFNoYWRlclNvdXJjZSk7Ci0gICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotCi0g
ICAgICAgIGdsRW5hYmxlKEdMX1NURU5DSUxfVEVTVCk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgZ2xEaXNhYmxlKEdMX1NURU5DSUxfVEVTVCk7Ci0gICAgICAgIGlmIChtUHJvZ3JhbSAh
PSAwKQotICAgICAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgICAgICBB
TkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgR0x1aW50IG1Qcm9ncmFtOwotfTsK
LQotLy8gVGVzdHMgdGhhdCBlZmZlY3RpdmVseSBzYW1lIGZyb250IGFuZCBiYWNrIG1hc2tzIGFy
ZSBsZWdhbC4KLVRFU1RfUChEaWZmZXJlbnRTdGVuY2lsTWFza3NUZXN0LCBEcmF3V2l0aFNhbWVF
ZmZlY3RpdmVNYXNrKQotewotICAgIC8vIDB4MDBmZiBhbmQgMHgwMWZmIGFyZSBlZmZlY3RpdmVs
eSAweDAwZmYgYnkgYmVpbmcgbWFza2VkIGJ5IHRoZSBjdXJyZW50IHN0ZW5jaWwgYml0cywgOC4K
LSAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xfRlJPTlQsIDB4MDBmZik7Ci0gICAgZ2xTdGVu
Y2lsTWFza1NlcGFyYXRlKEdMX0JBQ0ssIDB4MDFmZik7Ci0KLSAgICBnbFVzZVByb2dyYW0obVBy
b2dyYW0pOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0g
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgZWZmZWN0aXZlbHkg
ZGlmZmVyZW50IGZyb250IGFuZCBiYWNrIG1hc2tzIGFyZSBpbGxlZ2FsLgotVEVTVF9QKERpZmZl
cmVudFN0ZW5jaWxNYXNrc1Rlc3QsIERyYXdXaXRoRGlmZmVyZW50TWFzaykKLXsKLSAgICBnbFN0
ZW5jaWxNYXNrU2VwYXJhdGUoR0xfRlJPTlQsIDB4MDAwMSk7Ci0gICAgZ2xTdGVuY2lsTWFza1Nl
cGFyYXRlKEdMX0JBQ0ssIDB4MDAwMik7Ci0KLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwot
Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgRVhQRUNU
X0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotY2xhc3MgRGlmZmVyZW50U3Rl
bmNpbE1hc2tzV2l0aG91dFN0ZW5jaWxCdWZmZXJUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewot
ICBwcm90ZWN0ZWQ6Ci0gICAgRGlmZmVyZW50U3RlbmNpbE1hc2tzV2l0aG91dFN0ZW5jaWxCdWZm
ZXJUZXN0KCkgOiBtUHJvZ3JhbSgwKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4
KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJp
dHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmln
Qmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICAgICAgc2V0
Q29uZmlnRGVwdGhCaXRzKDApOwotICAgICAgICBzZXRDb25maWdTdGVuY2lsQml0cygwKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVz
dDo6U2V0VXAoKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3Vy
Y2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIHByZWNpc2lvbiBoaWdo
cCBmbG9hdDsKLSAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOwotCi0gICAgICAg
ICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX1Bvc2l0
aW9uID0gcG9zaXRpb247Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAg
ICAgICgKLSAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLQotICAgICAgICAgICAg
dm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KDAuMCwgMC4wLCAxLjAsIDEuMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0K
LSAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZy
YWdtZW50U2hhZGVyU291cmNlKTsKLSAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7Ci0K
LSAgICAgICAgZ2xFbmFibGUoR0xfU1RFTkNJTF9URVNUKTsKLSAgICAgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBnbERpc2FibGUoR0xfU1RFTkNJTF9URVNUKTsKLSAgICAgICAgaWYgKG1Qcm9ncmFt
ICE9IDApCi0gICAgICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotCi0gICAgICAg
IEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVByb2dyYW07Ci19
OwotCi0vLyBUZXN0cyB0aGF0IGVmZmVjdGl2ZWx5IGRpZmZlcmVudCBmcm9udCBhbmQgYmFjayBt
YXNrcywgd2l0aG91dCBzdGVuY2lsIGJpdHMsIGFyZSBsZWdhbC4KLVRFU1RfUChEaWZmZXJlbnRT
dGVuY2lsTWFza3NXaXRob3V0U3RlbmNpbEJ1ZmZlclRlc3QsIERyYXdXaXRoRGlmZmVyZW50TWFz
aykKLXsKLSAgICBnbFN0ZW5jaWxNYXNrU2VwYXJhdGUoR0xfRlJPTlQsIDB4MDAwMSk7Ci0gICAg
Z2xTdGVuY2lsTWFza1NlcGFyYXRlKEdMX0JBQ0ssIDB4MDAwMik7Ci0KLSAgICBnbFVzZVByb2dy
YW0obVByb2dyYW0pOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYp
OwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVj
dCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBt
YWpvciB2ZXJzaW9uKSB0aGVzZQotLy8gdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgotQU5H
TEVfSU5TVEFOVElBVEVfVEVTVChEaWZmZXJlbnRTdGVuY2lsTWFza3NUZXN0LCBFUzJfRDNEOSgp
LCBFUzJfRDNEMTEoKSwgRVMzX0QzRDExKCksIEVTMl9PUEVOR0woKSwgRVMzX09QRU5HTCgpKTsK
LUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRGlmZmVyZW50U3RlbmNpbE1hc2tzV2l0aG91dFN0ZW5j
aWxCdWZmZXJUZXN0LCBFUzJfRDNEOSgpLCBFUzJfRDNEMTEoKSwgRVMzX0QzRDExKCksIEVTMl9P
UEVOR0woKSwgRVMzX09QRU5HTCgpKTsKLX0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0Rpc2NhcmRG
cmFtZWJ1ZmZlckVYVFRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL0Rpc2NhcmRGcmFtZWJ1ZmZlckVYVFRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxZTA5ZWQxMjBmMS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0Rpc2NhcmRGcmFtZWJ1ZmZlckVYVFRlc3Qu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAx
NSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRl
ICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLWNs
YXNzIERpc2NhcmRGcmFtZWJ1ZmZlckVYVFRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci1wcm90
ZWN0ZWQ6Ci0gICAgRGlzY2FyZEZyYW1lYnVmZmVyRVhUVGVzdCgpCi0gICAgewotICAgICAgICBz
ZXRXaW5kb3dXaWR0aCgyNTYpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMjU2KTsKLSAgICAg
ICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwot
ICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRz
KDgpOwotICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOwotICAgICAgICBzZXRDb25maWdT
dGVuY2lsQml0cyg4KTsKLSAgICB9Ci19OwotCi1URVNUX1AoRGlzY2FyZEZyYW1lYnVmZmVyRVhU
VGVzdCwgRXh0ZW5zaW9uRW5hYmxlZCkKLXsKLSAgICBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgcGxh
dGZvcm0gPSBHZXRQYXJhbSgpLmVnbFBhcmFtZXRlcnM7Ci0KLSAgICBpZiAocGxhdGZvcm0ucmVu
ZGVyZXIgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUpCi0gICAgewotICAg
ICAgICBFWFBFQ1RfVFJVRShleHRlbnNpb25FbmFibGVkKCJFWFRfZGlzY2FyZF9mcmFtZWJ1ZmZl
ciIpKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgLy8gT3RoZXIgcGxhdGZvcm1z
IGRvbid0IGN1cnJlbnRseSBpbXBsZW1lbnQgdGhpcyBleHRlbnNpb24KLSAgICAgICAgRVhQRUNU
X0ZBTFNFKGV4dGVuc2lvbkVuYWJsZWQoIkVYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyIikpOwotICAg
IH0KLX0KLQotVEVTVF9QKERpc2NhcmRGcmFtZWJ1ZmZlckVYVFRlc3QsIERlZmF1bHRGcmFtZWJ1
ZmZlcikKLXsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkVYVF9kaXNjYXJkX2ZyYW1lYnVm
ZmVyIikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNl
IEVYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyIGlzIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6OmVuZGw7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBUaGVzZSBzaG91bGQgc3VjY2VlZCBv
biB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlcgotICAgIGNvbnN0IEdMZW51bSBkaXNjYXJkczFbXSA9
IHsgR0xfQ09MT1JfRVhUIH07Ci0gICAgZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQoR0xfRlJBTUVC
VUZGRVIsIDEsIGRpc2NhcmRzMSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBj
b25zdCBHTGVudW0gZGlzY2FyZHMyW10gPSB7IEdMX0RFUFRIX0VYVCB9OwotICAgIGdsRGlzY2Fy
ZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSLCAxLCBkaXNjYXJkczIpOwotICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOwotCi0gICAgY29uc3QgR0xlbnVtIGRpc2NhcmRzM1tdID0geyBHTF9T
VEVOQ0lMX0VYVCB9OwotICAgIGdsRGlzY2FyZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVS
LCAxLCBkaXNjYXJkczMpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgY29uc3Qg
R0xlbnVtIGRpc2NhcmRzNFtdID0geyBHTF9TVEVOQ0lMX0VYVCwgR0xfQ09MT1JfRVhULCBHTF9E
RVBUSF9FWFQgfTsKLSAgICBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUiwg
MywgZGlzY2FyZHM0KTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFRoZXNl
IHNob3VsZCBmYWlsIG9uIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyCi0gICAgY29uc3QgR0xlbnVt
IGRpc2NhcmRzNVtdID0geyBHTF9DT0xPUl9BVFRBQ0hNRU5UMCB9OwotICAgIGdsRGlzY2FyZEZy
YW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSLCAxLCBkaXNjYXJkczUpOwotICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgY29uc3QgR0xlbnVtIGRpc2NhcmRzNltd
ID0geyBHTF9ERVBUSF9BVFRBQ0hNRU5UIH07Ci0gICAgZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQo
R0xfRlJBTUVCVUZGRVIsIDEsIGRpc2NhcmRzNik7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lO
VkFMSURfRU5VTSk7Ci0KLSAgICBjb25zdCBHTGVudW0gZGlzY2FyZHM3W10gPSB7IEdMX1NURU5D
SUxfQVRUQUNITUVOVCB9OwotICAgIGdsRGlzY2FyZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVG
RkVSLCAxLCBkaXNjYXJkczcpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0p
OwotfQotCi1URVNUX1AoRGlzY2FyZEZyYW1lYnVmZmVyRVhUVGVzdCwgTm9uRGVmYXVsdEZyYW1l
YnVmZmVyKQotewotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiRVhUX2Rpc2NhcmRfZnJhbWVi
dWZmZXIiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1
c2UgRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5k
bDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEdMdWludCB0ZXgyRDsKLSAgICBHTHVp
bnQgZnJhbWVidWZmZXI7Ci0KLSAgICAvLyBDcmVhdGUgYSBiYXNpYyBvZmYtc2NyZWVuIGZyYW1l
YnVmZmVyCi0gICAgLy8gRG9uJ3QgY3JlYXRlIGEgZGVwdGgvc3RlbmNpbCB0ZXh0dXJlLCB0byBl
bnN1cmUgdGhhdCBhbHNvIHdvcmtzIGNvcnJlY3RseQotICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRl
eDJEKTsKLSAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmZnJhbWVidWZmZXIpOwotICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4MkQpOwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlcik7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIEdMX1JHQiwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIEdM
X1JHQiwgR0xfVU5TSUdORURfQllURSwgTlVMTCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIp
OwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FU
VEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXgyRCwgMCk7Ci0gICAgQVNTRVJUX0dMRU5VTV9F
UShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZS
QU1FQlVGRkVSKSk7Ci0KLSAgICAvLyBUaGVzZSBzaG91bGQgZmFpbCBvbiB0aGUgbm9uLWRlZmF1
bHQgZnJhbWVidWZmZXIKLSAgICBjb25zdCBHTGVudW0gZGlzY2FyZHMxW10gPSB7IEdMX0NPTE9S
X0VYVCB9OwotICAgIGdsRGlzY2FyZEZyYW1lYnVmZmVyRVhUKEdMX0ZSQU1FQlVGRkVSLCAxLCBk
aXNjYXJkczEpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAg
Y29uc3QgR0xlbnVtIGRpc2NhcmRzMltdID0geyBHTF9ERVBUSF9FWFQgfTsKLSAgICBnbERpc2Nh
cmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUiwgMSwgZGlzY2FyZHMyKTsKLSAgICBFWFBF
Q1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgIGNvbnN0IEdMZW51bSBkaXNjYXJk
czNbXSA9IHsgR0xfU1RFTkNJTF9FWFQgfTsKLSAgICBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVChH
TF9GUkFNRUJVRkZFUiwgMSwgZGlzY2FyZHMzKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5W
QUxJRF9FTlVNKTsKLQotICAgIGNvbnN0IEdMZW51bSBkaXNjYXJkczRbXSA9IHsgR0xfU1RFTkNJ
TF9FWFQsIEdMX0NPTE9SX0VYVCwgR0xfREVQVEhfRVhUIH07Ci0gICAgZ2xEaXNjYXJkRnJhbWVi
dWZmZXJFWFQoR0xfRlJBTUVCVUZGRVIsIDMsIGRpc2NhcmRzNCk7Ci0gICAgRVhQRUNUX0dMX0VS
Uk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAvLyBUaGVzZSBzaG91bGQgc3VjY2VlZCBvbiB0
aGUgbm9uLWRlZmF1bHQgZnJhbWVidWZmZXIKLSAgICBjb25zdCBHTGVudW0gZGlzY2FyZHM1W10g
PSB7IEdMX0NPTE9SX0FUVEFDSE1FTlQwIH07Ci0gICAgZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQo
R0xfRlJBTUVCVUZGRVIsIDEsIGRpc2NhcmRzNSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci0KLSAgICBjb25zdCBHTGVudW0gZGlzY2FyZHM2W10gPSB7IEdMX0RFUFRIX0FUVEFDSE1FTlQg
fTsKLSAgICBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVChHTF9GUkFNRUJVRkZFUiwgMSwgZGlzY2Fy
ZHM2KTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGNvbnN0IEdMZW51bSBkaXNj
YXJkczdbXSA9IHsgR0xfU1RFTkNJTF9BVFRBQ0hNRU5UIH07Ci0gICAgZ2xEaXNjYXJkRnJhbWVi
dWZmZXJFWFQoR0xfRlJBTUVCVUZGRVIsIDEsIGRpc2NhcmRzNyk7Ci0gICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9u
cyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0
ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKERpc2Nh
cmRGcmFtZWJ1ZmZlckVYVFRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCks
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5H
TCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BF
TkdMRVMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvRHJhd0J1ZmZlcnNUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9EcmF3QnVmZmVyc1Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkYWYwOWU5M2M0YS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0RyYXdCdWZmZXJzVGVzdC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw1MTcgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0v
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMv
QU5HTEVUZXN0LmgiCi0jaW5jbHVkZSAidGVzdF91dGlscy9nbF9yYWlpLmgiCi0KLXVzaW5nIG5h
bWVzcGFjZSBhbmdsZTsKLQotY2xhc3MgRHJhd0J1ZmZlcnNUZXN0IDogcHVibGljIEFOR0xFVGVz
dAotewotICBwcm90ZWN0ZWQ6Ci0gICAgRHJhd0J1ZmZlcnNUZXN0KCkKLSAgICB7Ci0gICAgICAg
IHNldFdpbmRvd1dpZHRoKDEyOCk7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwotICAg
ICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7
Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJp
dHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7Ci0gICAgICAgIG1NYXhEcmF3
QnVmZmVycyA9IDA7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIFNldFVwKCkKLSAgICB7Ci0g
ICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICAvLyBUaGlzIHRlc3Qgc2VlbXMg
dG8gZmFpbCBvbiBhbiBuVmlkaWEgbWFjaGluZSB3aGVuIHRoZSB3aW5kb3cgaXMgaGlkZGVuCi0g
ICAgICAgIFNldFdpbmRvd1Zpc2libGUodHJ1ZSk7Ci0KLSAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZl
cnMoMSwgJm1GQk8pOwotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwg
bUZCTyk7Ci0KLSAgICAgICAgZ2xHZW5UZXh0dXJlcyg0LCBtVGV4dHVyZXMpOwotCi0gICAgICAg
IGZvciAoc2l6ZV90IHRleEluZGV4ID0gMDsgdGV4SW5kZXggPCBBcnJheVNpemUobVRleHR1cmVz
KTsgdGV4SW5kZXgrKykKLSAgICAgICAgewotICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCBtVGV4dHVyZXNbdGV4SW5kZXhdKTsKLSAgICAgICAgICAgIGdsVGV4SW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dI
ZWlnaHQoKSwgMCwgR0xfUkdCQSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05F
RF9CWVRFLCBudWxscHRyKTsKLSAgICAgICAgfQotCi0gICAgICAgIEdMZmxvYXQgZGF0YVtdID0K
LSAgICAgICAgewotICAgICAgICAgICAgLTEuMGYsIDEuMGYsCi0gICAgICAgICAgICAtMS4wZiwg
LTIuMGYsCi0gICAgICAgICAgICAyLjBmLCAxLjBmCi0gICAgICAgIH07Ci0KLSAgICAgICAgZ2xH
ZW5CdWZmZXJzKDEsICZtQnVmZmVyKTsKLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JV
RkZFUiwgbUJ1ZmZlcik7Ci0gICAgICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNp
emVvZihHTGZsb2F0KSAqIDYsIGRhdGEsIEdMX1NUQVRJQ19EUkFXKTsKLQotICAgICAgICBnbEdl
dEludGVnZXJ2KEdMX01BWF9EUkFXX0JVRkZFUlMsICZtTWF4RHJhd0J1ZmZlcnMpOwotCi0gICAg
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBUZWFy
RG93bigpCi0gICAgewotICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygxLCAmbUZCTyk7Ci0g
ICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoNCwgbVRleHR1cmVzKTsKLSAgICAgICAgZ2xEZWxldGVC
dWZmZXJzKDEsICZtQnVmZmVyKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0g
ICAgfQotCi0gICAgdm9pZCBzZXR1cE1SVFByb2dyYW1FU1NMMyhib29sIGJ1ZmZlckVuYWJsZWRb
OF0sIEdMdWludCAqcHJvZ3JhbU91dCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IHZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0g
ICAgICAgICAgICAiaW4gdmVjNCBwb3NpdGlvbjtcbiIKLSAgICAgICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCi0gICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247XG4iCi0gICAg
ICAgICAgICAifVxuIjsKLQotICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJzdHI7Ci0KLSAg
ICAgICAgc3Ryc3RyIDw8ICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgICAgICAgICAgICJw
cmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGlu
ZGV4ID0gMDsgaW5kZXggPCA4OyBpbmRleCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
YnVmZmVyRW5hYmxlZFtpbmRleF0pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3Ry
c3RyIDw8ICJsYXlvdXQobG9jYXRpb24gPSAiIDw8IGluZGV4IDw8ICIpICIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIm91dCB2ZWM0IHZhbHVlIiA8PCBpbmRleCA8PCAiO1xuIjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHN0cnN0ciA8PCAidm9pZCBtYWluKClcbiIK
LSAgICAgICAgICAgICAgICAgICJ7XG4iOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGlu
ZGV4ID0gMDsgaW5kZXggPCA4OyBpbmRleCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
YnVmZmVyRW5hYmxlZFtpbmRleF0pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IHIgPSAoaW5kZXggKyAxKSAmIDE7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IGcgPSAoaW5kZXggKyAxKSAmIDI7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGIg
PSAoaW5kZXggKyAxKSAmIDQ7Ci0KLSAgICAgICAgICAgICAgICBzdHJzdHIgPDwgIiAgICB2YWx1
ZSIgPDwgaW5kZXggPDwgIiA9IHZlYzQoIgotICAgICAgICAgICAgICAgICAgICAgICA8PCByIDw8
ICIuMCwgIiA8PCBnIDw8ICIuMCwgIgotICAgICAgICAgICAgICAgICAgICAgICA8PCBiIDw8ICIu
MCwgMS4wKTtcbiI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBzdHJzdHIg
PDwgIn1cbiI7Ci0KLSAgICAgICAgKnByb2dyYW1PdXQgPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhT
aGFkZXJTb3VyY2UsIHN0cnN0ci5zdHIoKSk7Ci0gICAgICAgIGlmICgqcHJvZ3JhbU91dCA9PSAw
KQotICAgICAgICB7Ci0gICAgICAgICAgICBGQUlMKCkgPDwgInNoYWRlciBjb21waWxhdGlvbiBm
YWlsZWQuIjsKLSAgICAgICAgfQotCi0gICAgICAgIGdsVXNlUHJvZ3JhbSgqcHJvZ3JhbU91dCk7
Ci0KLSAgICAgICAgR0xpbnQgbG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKCpwcm9ncmFt
T3V0LCAicG9zaXRpb24iKTsKLSAgICAgICAgQVNTRVJUX05FKGxvY2F0aW9uLCAtMSk7Ci0gICAg
ICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXIpOwotICAgICAgICBnbFZl
cnRleEF0dHJpYlBvaW50ZXIobG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgOCwgTlVM
TCk7Ci0gICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobG9jYXRpb24pOwotICAgIH0K
LQotICAgIHZvaWQgc2V0dXBNUlRQcm9ncmFtRVNTTDEoYm9vbCBidWZmZXJFbmFibGVkWzhdLCBH
THVpbnQgKnByb2dyYW1PdXQpCi0gICAgewotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0
ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uO1xu
IgotICAgICAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgICAgICIgICAgZ2xfUG9z
aXRpb24gPSBwb3NpdGlvbjtcbiIKLSAgICAgICAgICAgICJ9XG4iOwotCi0gICAgICAgIHN0ZDo6
c3RyaW5nc3RyZWFtIHN0cnN0cjsKLQotICAgICAgICBzdHJzdHIgPDwgIiNleHRlbnNpb24gR0xf
RVhUX2RyYXdfYnVmZmVycyA6IGVuYWJsZVxuIgotICAgICAgICAgICAgICAgICAgInByZWNpc2lv
biBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAg
ICAgICAgICAgICAgICAgIntcbiI7Ci0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaW5kZXgg
PSAwOyBpbmRleCA8IDg7IGluZGV4KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChidWZm
ZXJFbmFibGVkW2luZGV4XSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB1bnNpZ25l
ZCBpbnQgciA9IChpbmRleCArIDEpICYgMTsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
ZyA9IChpbmRleCArIDEpICYgMjsKLSAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYiA9IChp
bmRleCArIDEpICYgNDsKLQotICAgICAgICAgICAgICAgIHN0cnN0ciA8PCAiICAgIGdsX0ZyYWdE
YXRhWyIgPDwgaW5kZXggPDwgIl0gPSB2ZWM0KCIKLSAgICAgICAgICAgICAgICAgICAgPDwgciA8
PCAiLjAsICIgPDwgZyA8PCAiLjAsICIKLSAgICAgICAgICAgICAgICAgICAgPDwgYiA8PCAiLjAs
IDEuMCk7XG4iOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgc3Ryc3RyIDw8
ICJ9XG4iOwotCi0gICAgICAgICpwcm9ncmFtT3V0ID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hh
ZGVyU291cmNlLCBzdHJzdHIuc3RyKCkpOwotICAgICAgICBpZiAoKnByb2dyYW1PdXQgPT0gMCkK
LSAgICAgICAgewotICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFp
bGVkLiI7Ci0gICAgICAgIH0KLQotICAgICAgICBnbFVzZVByb2dyYW0oKnByb2dyYW1PdXQpOwot
Ci0gICAgICAgIEdMaW50IGxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbigqcHJvZ3JhbU91
dCwgInBvc2l0aW9uIik7Ci0gICAgICAgIEFTU0VSVF9ORShsb2NhdGlvbiwgLTEpOwotICAgICAg
ICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVyKTsKLSAgICAgICAgZ2xWZXJ0
ZXhBdHRyaWJQb2ludGVyKGxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDgsIE5VTEwp
OwotICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGxvY2F0aW9uKTsKLSAgICB9Ci0K
LSAgICB2b2lkIHNldHVwTVJUUHJvZ3JhbShib29sIGJ1ZmZlckVuYWJsZWRbOF0sIEdMdWludCAq
cHJvZ3JhbU91dCkKLSAgICB7Ci0gICAgICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA9
PSAzKQotICAgICAgICB7Ci0gICAgICAgICAgICBzZXR1cE1SVFByb2dyYW1FU1NMMyhidWZmZXJF
bmFibGVkLCBwcm9ncmFtT3V0KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEFTU0VSVF9FUShnZXRDbGllbnRNYWpvclZlcnNpb24oKSwgMik7Ci0gICAg
ICAgICAgICBzZXR1cE1SVFByb2dyYW1FU1NMMShidWZmZXJFbmFibGVkLCBwcm9ncmFtT3V0KTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIHN0YXRpYyBHTENvbG9yIGdldENvbG9yRm9ySW5kZXgo
dW5zaWduZWQgaW50IGluZGV4KQotICAgIHsKLSAgICAgICAgR0x1Ynl0ZSByID0gKCgoaW5kZXgg
KyAxKSAmIDEpID4gMCkgPyAyNTUgOiAwOwotICAgICAgICBHTHVieXRlIGcgPSAoKChpbmRleCAr
IDEpICYgMikgPiAwKSA/IDI1NSA6IDA7Ci0gICAgICAgIEdMdWJ5dGUgYiA9ICgoKGluZGV4ICsg
MSkgJiA0KSA+IDApID8gMjU1IDogMDsKLSAgICAgICAgcmV0dXJuIEdMQ29sb3IociwgZywgYiwg
MjU1dSk7Ci0gICAgfQotCi0gICAgdm9pZCB2ZXJpZnlBdHRhY2htZW50MkQodW5zaWduZWQgaW50
IGluZGV4LCBHTHVpbnQgdGV4dHVyZU5hbWUsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsKQot
ICAgIHsKLSAgICAgICAgZm9yIChHTGludCBjb2xvckF0dGFjaG1lbnQgPSAwOyBjb2xvckF0dGFj
aG1lbnQgPCBtTWF4RHJhd0J1ZmZlcnM7IGNvbG9yQXR0YWNobWVudCsrKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMCArIGNvbG9yQXR0YWNobWVudCwgR0xfVEVYVFVSRV8yRCwgMCwgMCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgdGFyZ2V0LCB0ZXh0dXJlTmFtZSwgbGV2ZWwpOwotCi0g
ICAgICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2lu
ZG93SGVpZ2h0KCkgLyAyLCBnZXRDb2xvckZvckluZGV4KGluZGV4KSk7Ci0gICAgfQotCi0gICAg
dm9pZCB2ZXJpZnlBdHRhY2htZW50TGF5ZXIodW5zaWduZWQgaW50IGluZGV4LCBHTHVpbnQgdGV4
dHVyZSwgR0xpbnQgbGV2ZWwsIEdMaW50IGxheWVyKQotICAgIHsKLSAgICAgICAgZm9yIChHTGlu
dCBjb2xvckF0dGFjaG1lbnQgPSAwOyBjb2xvckF0dGFjaG1lbnQgPCBtTWF4RHJhd0J1ZmZlcnM7
IGNvbG9yQXR0YWNobWVudCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbEZyYW1lYnVmZmVy
VGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCArIGNvbG9yQXR0
YWNobWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVEVYVFVSRV8y
RCwgMCwgMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVy
KEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4dHVyZSwgbGV2ZWwsIGxh
eWVyKTsKLQotICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAv
IDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgZ2V0Q29sb3JGb3JJbmRleChpbmRleCkpOwotICAg
IH0KLQotICAgIEdMdWludCBtRkJPOwotICAgIEdMdWludCBtVGV4dHVyZXNbNF07Ci0gICAgR0x1
aW50IG1CdWZmZXI7Ci0gICAgR0xpbnQgbU1heERyYXdCdWZmZXJzOwotfTsKLQotLy8gVmVyaWZ5
IHRoYXQgR0xfTUFYX0RSQVdfQlVGRkVSUyByZXR1cm5zIHRoZSBleHBlY3RlZCB2YWx1ZXMgZm9y
IEQzRDExCi1URVNUX1AoRHJhd0J1ZmZlcnNUZXN0LCBWZXJpZnlEM0RMaW1pdHMpCi17Ci0gICAg
RUdMUGxhdGZvcm1QYXJhbWV0ZXJzIHBsYXRmb3JtID0gR2V0UGFyYW0oKS5lZ2xQYXJhbWV0ZXJz
OwotICAgIGlmIChwbGF0Zm9ybS5yZW5kZXJlciA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9E
M0QxMV9BTkdMRSkKLSAgICB7Ci0gICAgICAgIGlmIChwbGF0Zm9ybS5tYWpvclZlcnNpb24gPT0g
OSAmJiBwbGF0Zm9ybS5taW5vclZlcnNpb24gPT0gMykKLSAgICAgICAgewotICAgICAgICAgICAg
Ly8gRDNEMTEgRmVhdHVyZSBMZXZlbCA5XzMgc3VwcG9ydHMgNCBkcmF3IGJ1ZmZlcnMKLSAgICAg
ICAgICAgIEFTU0VSVF9FUShtTWF4RHJhd0J1ZmZlcnMsIDQpOwotICAgICAgICB9Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgLy8gRDNEMTEgRmVhdHVyZSBMZXZlbCAxMF8w
KyBzdXBwb3J0cyA4IGRyYXcgYnVmZmVycwotICAgICAgICAgICAgQVNTRVJUX0VRKG1NYXhEcmF3
QnVmZmVycywgOCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgZm9yIG5vbi1EM0QxMSByZW5kZXJlcnMuIiA8PCBz
dGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KLVRFU1RfUChEcmF3QnVmZmVy
c1Rlc3QsIEdhcHMpCi17Ci0gICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAh
ZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2RyYXdfYnVmZmVycyIpKQotICAgIHsKLSAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBFUzMgb3IgR0xfRVhUX2RyYXdfYnVm
ZmVycyBpcyBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChJc1dpbmRvd3MoKSAmJiBJc0FNRCgp
ICYmIElzRGVza3RvcE9wZW5HTCgpKQotICAgIHsKLSAgICAgICAgLy8gVE9ETyh5bm92aWtvdik6
IEludmVzdGlnYXRlIHRoZSBmYWlsdXJlIChodHRwOi8vYW5nbGVidWcuY29tLzE1MzUpCi0gICAg
ICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBXaW5kb3dzIEFNRCBPcGVuR0wuIiA8
PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUy
RChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDEsIEdMX1RFWFRVUkVfMkQsIG1U
ZXh0dXJlc1swXSwgMCk7Ci0KLSAgICBib29sIGZsYWdzWzhdID0geyBmYWxzZSwgdHJ1ZSB9Owot
Ci0gICAgR0x1aW50IHByb2dyYW07Ci0gICAgc2V0dXBNUlRQcm9ncmFtKGZsYWdzLCAmcHJvZ3Jh
bSk7Ci0KLSAgICBjb25zdCBHTGVudW0gYnVmc1tdID0KLSAgICB7Ci0gICAgICAgIEdMX05PTkUs
Ci0gICAgICAgIEdMX0NPTE9SX0FUVEFDSE1FTlQxCi0gICAgfTsKLSAgICBnbFVzZVByb2dyYW0o
cHJvZ3JhbSk7Ci0gICAgZ2xEcmF3QnVmZmVyc0VYVCgyLCBidWZzKTsKLSAgICBnbERyYXdBcnJh
eXMoR0xfVFJJQU5HTEVTLCAwLCAzKTsKLQotICAgIHZlcmlmeUF0dGFjaG1lbnQyRCgxLCBtVGV4
dHVyZXNbMF0sIEdMX1RFWFRVUkVfMkQsIDApOwotCi0gICAgZ2xEZWxldGVQcm9ncmFtKHByb2dy
YW0pOwotfQotCi1URVNUX1AoRHJhd0J1ZmZlcnNUZXN0LCBGaXJzdEFuZExhc3QpCi17Ci0gICAg
aWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xf
RVhUX2RyYXdfYnVmZmVycyIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgYmVjYXVzZSBFUzMgb3IgR0xfRVhUX2RyYXdfYnVmZmVycyBpcyBub3QgYXZhaWxhYmxl
LiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChJc1dpbmRvd3MoKSAmJiBJc0FNRCgpICYmIElzRGVza3RvcE9wZW5HTCgp
KQotICAgIHsKLSAgICAgICAgLy8gVE9ETyh5bm92aWtvdik6IEludmVzdGlnYXRlIHRoZSBmYWls
dXJlIChodHRwczovL2FuZ2xlYnVnLmNvbS8xNTMzKQotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRl
c3QgZGlzYWJsZWQgb24gV2luZG93cyBBTUQgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4
dHVyZXNbMF0pOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdM
X0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sIDApOwotCi0g
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0pOwotICAgIGdsRnJh
bWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQzLCBH
TF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0sIDApOwotCi0gICAgYm9vbCBmbGFnc1s4XSA9IHsg
dHJ1ZSwgZmFsc2UsIGZhbHNlLCB0cnVlIH07Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbTsKLSAgICBz
ZXR1cE1SVFByb2dyYW0oZmxhZ3MsICZwcm9ncmFtKTsKLQotICAgIGNvbnN0IEdMZW51bSBidWZz
W10gPQotICAgIHsKLSAgICAgICAgR0xfQ09MT1JfQVRUQUNITUVOVDAsCi0gICAgICAgIEdMX05P
TkUsCi0gICAgICAgIEdMX05PTkUsCi0gICAgICAgIEdMX0NPTE9SX0FUVEFDSE1FTlQzCi0gICAg
fTsKLQotICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKLSAgICBnbERyYXdCdWZmZXJzRVhUKDQs
IGJ1ZnMpOwotICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOwotCi0gICAgdmVy
aWZ5QXR0YWNobWVudDJEKDAsIG1UZXh0dXJlc1swXSwgR0xfVEVYVFVSRV8yRCwgMCk7Ci0gICAg
dmVyaWZ5QXR0YWNobWVudDJEKDMsIG1UZXh0dXJlc1sxXSwgR0xfVEVYVFVSRV8yRCwgMCk7Ci0K
LSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFt
KTsKLX0KLQotVEVTVF9QKERyYXdCdWZmZXJzVGVzdCwgRmlyc3RIYWxmTlVMTCkKLXsKLSAgICBp
ZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9F
WFRfZHJhd19idWZmZXJzIikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBiZWNhdXNlIEVTMyBvciBHTF9FWFRfZHJhd19idWZmZXJzIGlzIG5vdCBhdmFpbGFibGUu
IgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKElzV2luZG93cygpICYmIElzQU1EKCkgJiYgSXNEZXNrdG9wT3BlbkdMKCkp
Ci0gICAgewotICAgICAgICAvLyBUT0RPKHlub3Zpa292KTogSW52ZXN0aWdhdGUgdGhlIGZhaWx1
cmUgKGh0dHBzOi8vYW5nbGVidWcuY29tLzE1MzMpCi0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVz
dCBkaXNhYmxlZCBvbiBXaW5kb3dzIEFNRCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBib29sIGZsYWdzWzhdID0geyBmYWxzZSB9OwotICAgIEdM
ZW51bSBidWZzWzhdID0geyBHTF9OT05FIH07Ci0KLSAgICBHTHVpbnQgaGFsZk1heERyYXdCdWZm
ZXJzID0gc3RhdGljX2Nhc3Q8R0x1aW50PihtTWF4RHJhd0J1ZmZlcnMpIC8gMjsKLQotICAgIGZv
ciAoR0x1aW50IHRleEluZGV4ID0gMDsgdGV4SW5kZXggPCBoYWxmTWF4RHJhd0J1ZmZlcnM7IHRl
eEluZGV4KyspCi0gICAgewotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1U
ZXh0dXJlc1t0ZXhJbmRleF0pOwotICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZS
QU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCArIGhhbGZNYXhEcmF3QnVmZmVycyArIHRl
eEluZGV4LCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbdGV4SW5kZXhdLCAwKTsKLSAgICAgICAg
ZmxhZ3NbdGV4SW5kZXggKyBoYWxmTWF4RHJhd0J1ZmZlcnNdID0gdHJ1ZTsKLSAgICAgICAgYnVm
c1t0ZXhJbmRleCArIGhhbGZNYXhEcmF3QnVmZmVyc10gPSBHTF9DT0xPUl9BVFRBQ0hNRU5UMCAr
IGhhbGZNYXhEcmF3QnVmZmVycyArIHRleEluZGV4OwotICAgIH0KLQotICAgIEdMdWludCBwcm9n
cmFtOwotICAgIHNldHVwTVJUUHJvZ3JhbShmbGFncywgJnByb2dyYW0pOwotCi0gICAgZ2xVc2VQ
cm9ncmFtKHByb2dyYW0pOwotICAgIGdsRHJhd0J1ZmZlcnNFWFQobU1heERyYXdCdWZmZXJzLCBi
dWZzKTsKLSAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCAzKTsKLQotICAgIGZvciAo
R0x1aW50IHRleEluZGV4ID0gMDsgdGV4SW5kZXggPCBoYWxmTWF4RHJhd0J1ZmZlcnM7IHRleElu
ZGV4KyspCi0gICAgewotICAgICAgICB2ZXJpZnlBdHRhY2htZW50MkQodGV4SW5kZXggKyBoYWxm
TWF4RHJhd0J1ZmZlcnMsIG1UZXh0dXJlc1t0ZXhJbmRleF0sIEdMX1RFWFRVUkVfMkQsIDApOwot
ICAgIH0KLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xEZWxldGVQcm9ncmFt
KHByb2dyYW0pOwotfQotCi1URVNUX1AoRHJhd0J1ZmZlcnNUZXN0LCBVbndyaXR0ZW5PdXRwdXRW
YXJpYWJsZXNTaG91bGROb3RDcmFzaCkKLXsKLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZHJhd19idWZmZXJzIikpCi0gICAg
ewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEVTMyBvciBHTF9F
WFRfZHJhd19idWZmZXJzIGlzIG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAgICAgICAgPDwg
c3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gQmluZCB0d28gcmVu
ZGVyIHRhcmdldHMgYnV0IHVzZSBhIHNoYWRlciB3aGljaCB3cml0ZXMgb25seSB0byB0aGUgZmly
c3Qgb25lLgotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsK
LSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRB
Q0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdLCAwKTsKLQotICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMSwgR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmVzWzFdLCAwKTsKLQotICAgIGJvb2wgZmxhZ3NbOF0gPSB7IHRydWUsIGZhbHNl
IH07Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbTsKLSAgICBzZXR1cE1SVFByb2dyYW0oZmxhZ3MsICZw
cm9ncmFtKTsKLQotICAgIGNvbnN0IEdMZW51bSBidWZzW10gPQotICAgIHsKLSAgICAgICAgR0xf
Q09MT1JfQVRUQUNITUVOVDAsCi0gICAgICAgIEdMX0NPTE9SX0FUVEFDSE1FTlQxLAotICAgICAg
ICBHTF9OT05FLAotICAgICAgICBHTF9OT05FLAotICAgIH07Ci0KLSAgICBnbFVzZVByb2dyYW0o
cHJvZ3JhbSk7Ci0gICAgZ2xEcmF3QnVmZmVyc0VYVCg0LCBidWZzKTsKLQotICAgIC8vIFRoaXMg
Y2FsbCBzaG91bGQgbm90IGNyYXNoIHdoZW4gd2UgZHluYW1pY2FsbHkgZ2VuZXJhdGUgdGhlIEhM
U0wgY29kZS4KLSAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCAzKTsKLQotICAgIHZl
cmlmeUF0dGFjaG1lbnQyRCgwLCBtVGV4dHVyZXNbMF0sIEdMX1RFWFRVUkVfMkQsIDApOwotCi0g
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7
Ci19Ci0KLS8vIFRlc3QgdGhhdCBiaW5kaW5nIG11bHRpcGxlIGxheWVycyBvZiBhIDNEIHRleHR1
cmUgd29ya3MgY29ycmVjdGx5Ci1URVNUX1AoRHJhd0J1ZmZlcnNUZXN0LCAzRFRleHR1cmVzKQot
ewotICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCi0gICAgewotICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEVTMyBpcyBub3QgYXZhaWxhYmxlLiIg
PDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xUZXh0dXJlIHRl
eHR1cmU7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzNELCB0ZXh0dXJlLmdldCgpKTsK
LSAgICBnbFRleEltYWdlM0QoR0xfVEVYVFVSRV8zRCwgMCwgR0xfUkdCQSwgZ2V0V2luZG93V2lk
dGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIGdldFdpbmRvd1dpZHRoKCksCi0gICAgICAgICAgICAg
ICAgIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotCi0gICAgZ2xGcmFt
ZWJ1ZmZlclRleHR1cmVMYXllcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAs
IHRleHR1cmUuZ2V0KCksIDAsIDApOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0xf
RlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQxLCB0ZXh0dXJlLmdldCgpLCAwLCAxKTsK
LSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9B
VFRBQ0hNRU5UMiwgdGV4dHVyZS5nZXQoKSwgMCwgMik7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1
cmVMYXllcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDMsIHRleHR1cmUuZ2V0
KCksIDAsIDMpOwotCi0gICAgYm9vbCBmbGFnc1s4XSA9IHt0cnVlLCB0cnVlLCB0cnVlLCB0cnVl
LCBmYWxzZX07Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbTsKLSAgICBzZXR1cE1SVFByb2dyYW0oZmxh
Z3MsICZwcm9ncmFtKTsKLQotICAgIGNvbnN0IEdMZW51bSBidWZzW10gPSB7Ci0gICAgICAgIEdM
X0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMSwgR0xfQ09MT1JfQVRUQUNI
TUVOVDIsIEdMX0NPTE9SX0FUVEFDSE1FTlQzLAotICAgIH07Ci0KLSAgICBnbFVzZVByb2dyYW0o
cHJvZ3JhbSk7Ci0gICAgZ2xEcmF3QnVmZmVyc0VYVCg0LCBidWZzKTsKLQotICAgIGdsRHJhd0Fy
cmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOwotCi0gICAgdmVyaWZ5QXR0YWNobWVudExheWVyKDAs
IHRleHR1cmUuZ2V0KCksIDAsIDApOwotICAgIHZlcmlmeUF0dGFjaG1lbnRMYXllcigxLCB0ZXh0
dXJlLmdldCgpLCAwLCAxKTsKLSAgICB2ZXJpZnlBdHRhY2htZW50TGF5ZXIoMiwgdGV4dHVyZS5n
ZXQoKSwgMCwgMik7Ci0gICAgdmVyaWZ5QXR0YWNobWVudExheWVyKDMsIHRleHR1cmUuZ2V0KCks
IDAsIDMpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbERlbGV0ZVByb2dy
YW0ocHJvZ3JhbSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBiaW5kaW5nIG11bHRpcGxlIGxheWVycyBv
ZiBhIDJEIGFycmF5IHRleHR1cmUgd29ya3MgY29ycmVjdGx5Ci1URVNUX1AoRHJhd0J1ZmZlcnNU
ZXN0LCAyREFycmF5VGV4dHVyZXMpCi17Ci0gICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigp
IDwgMykKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2Ug
RVMzIGlzIG5vdCBhdmFpbGFibGUuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBHTFRleHR1cmUgdGV4dHVyZTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkRfQVJSQVksIHRleHR1cmUuZ2V0KCkpOwotICAgIGdsVGV4SW1hZ2UzRChHTF9URVhUVVJF
XzJEX0FSUkFZLCAwLCBHTF9SR0JBLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQo
KSwKLSAgICAgICAgICAgICAgICAgZ2V0V2luZG93V2lkdGgoKSwgMCwgR0xfUkdCQSwgR0xfVU5T
SUdORURfQllURSwgbnVsbHB0cik7Ci0KLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdM
X0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4dHVyZS5nZXQoKSwgMCwgMCk7
Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1Jf
QVRUQUNITUVOVDEsIHRleHR1cmUuZ2V0KCksIDAsIDEpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0
dXJlTGF5ZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQyLCB0ZXh0dXJlLmdl
dCgpLCAwLCAyKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZUxheWVyKEdMX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMywgdGV4dHVyZS5nZXQoKSwgMCwgMyk7Ci0KLSAgICBib29s
IGZsYWdzWzhdID0ge3RydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlfTsKLQotICAgIEdMdWlu
dCBwcm9ncmFtOwotICAgIHNldHVwTVJUUHJvZ3JhbShmbGFncywgJnByb2dyYW0pOwotCi0gICAg
Y29uc3QgR0xlbnVtIGJ1ZnNbXSA9IHsKLSAgICAgICAgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X0NPTE9SX0FUVEFDSE1FTlQxLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMiwgR0xfQ09MT1JfQVRUQUNI
TUVOVDMsCi0gICAgfTsKLQotICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKLSAgICBnbERyYXdC
dWZmZXJzRVhUKDQsIGJ1ZnMpOwotCi0gICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwg
Myk7Ci0KLSAgICB2ZXJpZnlBdHRhY2htZW50TGF5ZXIoMCwgdGV4dHVyZS5nZXQoKSwgMCwgMCk7
Ci0gICAgdmVyaWZ5QXR0YWNobWVudExheWVyKDEsIHRleHR1cmUuZ2V0KCksIDAsIDEpOwotICAg
IHZlcmlmeUF0dGFjaG1lbnRMYXllcigyLCB0ZXh0dXJlLmdldCgpLCAwLCAyKTsKLSAgICB2ZXJp
ZnlBdHRhY2htZW50TGF5ZXIoMywgdGV4dHVyZS5nZXQoKSwgMCwgMyk7Ci0KLSAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKLQotICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKLX0KLQotLy8g
VXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRl
cmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4g
YWdhaW5zdC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRHJhd0J1ZmZlcnNUZXN0LAotICAgICAg
ICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMz
X0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAg
IEVTM19PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EcmF3RWxlbWVudHNUZXN0LmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9EcmF3RWxlbWVu
dHNUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFmM2MxZTlhMmEuLjAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9EcmF3RWxlbWVudHNUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyNiArMCwwIEBACi0v
LwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCi0vLwotLy8gRHJhd0VsZW1lbnRzVGVzdDoKLS8vICAgVGVzdHMgZm9yIGluZGV4ZWQgZHJh
d3MuCi0vLwotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFt
ZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3MgRHJhd0VsZW1lbnRzVGVzdCA6
IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIERyYXdFbGVtZW50c1Rlc3Qo
KSA6IG1Qcm9ncmFtKDB1KQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoNjQpOwotICAg
ICAgICBzZXRXaW5kb3dIZWlnaHQoNjQpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwot
ICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgfQotCi0gICAgfkRyYXdFbGVtZW50
c1Rlc3QoKQotICAgIHsKLSAgICAgICAgZm9yIChHTHVpbnQgaW5kZXhCdWZmZXIgOiBtSW5kZXhC
dWZmZXJzKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoaW5kZXhCdWZmZXIgIT0gMCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJmluZGV4QnVm
ZmVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoR0x1aW50IHZl
cnRleEFycmF5IDogbVZlcnRleEFycmF5cykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHZl
cnRleEFycmF5ICE9IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xEZWxldGVW
ZXJ0ZXhBcnJheXMoMSwgJnZlcnRleEFycmF5KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIGZvciAoR0x1aW50IHZlcnRleEJ1ZmZlciA6IG1WZXJ0ZXhCdWZmZXJzKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAodmVydGV4QnVmZmVyICE9IDApCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZ2ZXJ0ZXhCdWZmZXIpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1Qcm9ncmFtICE9IDB1KQotICAg
ICAgICB7Ci0gICAgICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBtSW5kZXhCdWZmZXJzOwotICAgIHN0
ZDo6dmVjdG9yPEdMdWludD4gbVZlcnRleEFycmF5czsKLSAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+
IG1WZXJ0ZXhCdWZmZXJzOwotICAgIEdMdWludCBtUHJvZ3JhbTsKLX07Ci0KLS8vIFRlc3QgYSBz
dGF0ZSBkZXN5bmMgdGhhdCBjYW4gb2NjdXIgd2hlbiB1c2luZyBhIHN0cmVhbWluZyBpbmRleCBi
dWZmZXIgaW4gR0wgaW4gY29uY2VydCB3aXRoCi0vLyBkZWxldGluZyB0aGUgYXBwbGllZCBpbmRl
eCBidWZmZXIuCi1URVNUX1AoRHJhd0VsZW1lbnRzVGVzdCwgRGVsZXRpbmdBZnRlclN0cmVhbWlu
Z0luZGV4ZXMpCi17Ci0gICAgLy8gSW5pdCBwcm9ncmFtCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
JnZlcnRleFNoYWRlciA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjtcbiIKLSAg
ICAgICAgImF0dHJpYnV0ZSB2ZWMyIHRlc3RGbGFnO1xuIgotICAgICAgICAidmFyeWluZyB2ZWMy
IHZfZGF0YTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgZ2xfUG9z
aXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLCAxKTtcbiIKLSAgICAgICAgIiAgdl9kYXRhID0gdGVz
dEZsYWc7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVu
dFNoYWRlciA9Ci0gICAgICAgICJ2YXJ5aW5nIGhpZ2hwIHZlYzIgdl9kYXRhO1xuIgotICAgICAg
ICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZfZGF0
YSwgMCwgMSk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dy
YW0odmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlcik7Ci0gICAgQVNTRVJUX05FKDB1LCBtUHJv
Z3JhbSk7Ci0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgIEdMaW50IHBvc2l0aW9u
TG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAicG9zaXRpb24iKTsKLSAg
ICBBU1NFUlRfTkUoLTEsIHBvc2l0aW9uTG9jYXRpb24pOwotCi0gICAgR0xpbnQgdGVzdEZsYWdM
b2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJ0ZXN0RmxhZyIpOwotICAg
IEFTU0VSVF9ORSgtMSwgdGVzdEZsYWdMb2NhdGlvbik7Ci0KLSAgICBtSW5kZXhCdWZmZXJzLnJl
c2l6ZSgzdSk7Ci0gICAgZ2xHZW5CdWZmZXJzKDMsICZtSW5kZXhCdWZmZXJzWzBdKTsKLQotICAg
IG1WZXJ0ZXhBcnJheXMucmVzaXplKDIpOwotICAgIGdsR2VuVmVydGV4QXJyYXlzKDIsICZtVmVy
dGV4QXJyYXlzWzBdKTsKLQotICAgIG1WZXJ0ZXhCdWZmZXJzLnJlc2l6ZSgyKTsKLSAgICBnbEdl
bkJ1ZmZlcnMoMiwgJm1WZXJ0ZXhCdWZmZXJzWzBdKTsKLQotICAgIHN0ZDo6dmVjdG9yPEdMdWlu
dD4gaW5kZXhEYXRhWzJdOwotICAgIGluZGV4RGF0YVswXS5wdXNoX2JhY2soMCk7Ci0gICAgaW5k
ZXhEYXRhWzBdLnB1c2hfYmFjaygxKTsKLSAgICBpbmRleERhdGFbMF0ucHVzaF9iYWNrKDIpOwot
ICAgIGluZGV4RGF0YVswXS5wdXNoX2JhY2soMik7Ci0gICAgaW5kZXhEYXRhWzBdLnB1c2hfYmFj
aygzKTsKLSAgICBpbmRleERhdGFbMF0ucHVzaF9iYWNrKDApOwotCi0gICAgaW5kZXhEYXRhWzFd
ID0gaW5kZXhEYXRhWzBdOwotICAgIGZvciAoR0x1aW50ICZpdGVtIDogaW5kZXhEYXRhWzFdKQot
ICAgIHsKLSAgICAgICAgaXRlbSArPSA0dTsKLSAgICB9Ci0KLSAgICBzdGQ6OnZlY3RvcjxHTGZs
b2F0PiBwb3NpdGlvbkRhdGE7Ci0gICAgLy8gcXVhZCB2ZXJ0cwotICAgIHBvc2l0aW9uRGF0YS5w
dXNoX2JhY2soLTEuMGYpOwotICAgIHBvc2l0aW9uRGF0YS5wdXNoX2JhY2soMS4wZik7Ci0gICAg
cG9zaXRpb25EYXRhLnB1c2hfYmFjaygtMS4wZik7Ci0gICAgcG9zaXRpb25EYXRhLnB1c2hfYmFj
aygtMS4wZik7Ci0gICAgcG9zaXRpb25EYXRhLnB1c2hfYmFjaygxLjBmKTsKLSAgICBwb3NpdGlv
bkRhdGEucHVzaF9iYWNrKC0xLjBmKTsKLSAgICBwb3NpdGlvbkRhdGEucHVzaF9iYWNrKDEuMGYp
OwotICAgIHBvc2l0aW9uRGF0YS5wdXNoX2JhY2soMS4wZik7Ci0KLSAgICAvLyBSZXBlYXQgcG9z
aXRpb24gZGF0YQotICAgIHBvc2l0aW9uRGF0YS5wdXNoX2JhY2soLTEuMGYpOwotICAgIHBvc2l0
aW9uRGF0YS5wdXNoX2JhY2soMS4wZik7Ci0gICAgcG9zaXRpb25EYXRhLnB1c2hfYmFjaygtMS4w
Zik7Ci0gICAgcG9zaXRpb25EYXRhLnB1c2hfYmFjaygtMS4wZik7Ci0gICAgcG9zaXRpb25EYXRh
LnB1c2hfYmFjaygxLjBmKTsKLSAgICBwb3NpdGlvbkRhdGEucHVzaF9iYWNrKC0xLjBmKTsKLSAg
ICBwb3NpdGlvbkRhdGEucHVzaF9iYWNrKDEuMGYpOwotICAgIHBvc2l0aW9uRGF0YS5wdXNoX2Jh
Y2soMS4wZik7Ci0KLSAgICBzdGQ6OnZlY3RvcjxHTGZsb2F0PiB0ZXN0RmxhZ0RhdGE7Ci0gICAg
Ly8gcmVkCi0gICAgdGVzdEZsYWdEYXRhLnB1c2hfYmFjaygxLjBmKTsKLSAgICB0ZXN0RmxhZ0Rh
dGEucHVzaF9iYWNrKDAuMGYpOwotICAgIHRlc3RGbGFnRGF0YS5wdXNoX2JhY2soMS4wZik7Ci0g
ICAgdGVzdEZsYWdEYXRhLnB1c2hfYmFjaygwLjBmKTsKLSAgICB0ZXN0RmxhZ0RhdGEucHVzaF9i
YWNrKDEuMGYpOwotICAgIHRlc3RGbGFnRGF0YS5wdXNoX2JhY2soMC4wZik7Ci0gICAgdGVzdEZs
YWdEYXRhLnB1c2hfYmFjaygxLjBmKTsKLSAgICB0ZXN0RmxhZ0RhdGEucHVzaF9iYWNrKDAuMGYp
OwotCi0gICAgLy8gZ3JlZW4KLSAgICB0ZXN0RmxhZ0RhdGEucHVzaF9iYWNrKDAuMGYpOwotICAg
IHRlc3RGbGFnRGF0YS5wdXNoX2JhY2soMS4wZik7Ci0gICAgdGVzdEZsYWdEYXRhLnB1c2hfYmFj
aygwLjBmKTsKLSAgICB0ZXN0RmxhZ0RhdGEucHVzaF9iYWNrKDEuMGYpOwotICAgIHRlc3RGbGFn
RGF0YS5wdXNoX2JhY2soMC4wZik7Ci0gICAgdGVzdEZsYWdEYXRhLnB1c2hfYmFjaygxLjBmKTsK
LSAgICB0ZXN0RmxhZ0RhdGEucHVzaF9iYWNrKDAuMGYpOwotICAgIHRlc3RGbGFnRGF0YS5wdXNo
X2JhY2soMS4wZik7Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIs
IG1JbmRleEJ1ZmZlcnNbMF0pOwotICAgIGdsQnVmZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JV
RkZFUiwgc2l6ZW9mKEdMdWludCkgKiBpbmRleERhdGFbMF0uc2l6ZSgpLCAmaW5kZXhEYXRhWzBd
WzBdLAotICAgICAgICAgICAgICAgICBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICBnbEJpbmRCdWZm
ZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1JbmRleEJ1ZmZlcnNbMl0pOwotICAgIGdsQnVm
ZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKEdMdWludCkgKiBpbmRleERh
dGFbMF0uc2l6ZSgpLCAmaW5kZXhEYXRhWzBdWzBdLAotICAgICAgICAgICAgICAgICBHTF9TVEFU
SUNfRFJBVyk7Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1J
bmRleEJ1ZmZlcnNbMV0pOwotICAgIGdsQnVmZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZF
Uiwgc2l6ZW9mKEdMdWludCkgKiBpbmRleERhdGFbMV0uc2l6ZSgpLCAmaW5kZXhEYXRhWzFdWzBd
LAotICAgICAgICAgICAgICAgICBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICAvLyBJbml0aWFsaXpl
IGZpcnN0IHZlcnRleCBhcnJheSB3aXRoIHNlY29uZCBpbmRleCBidWZmZXIKLSAgICBnbEJpbmRW
ZXJ0ZXhBcnJheShtVmVydGV4QXJyYXlzWzBdKTsKLQotICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVN
RU5UX0FSUkFZX0JVRkZFUiwgbUluZGV4QnVmZmVyc1sxXSk7Ci0gICAgZ2xCaW5kQnVmZmVyKEdM
X0FSUkFZX0JVRkZFUiwgbVZlcnRleEJ1ZmZlcnNbMF0pOwotICAgIGdsQnVmZmVyRGF0YShHTF9B
UlJBWV9CVUZGRVIsIHNpemVvZihHTGZsb2F0KSAqIHBvc2l0aW9uRGF0YS5zaXplKCksICZwb3Np
dGlvbkRhdGFbMF0sCi0gICAgICAgICAgICAgICAgIEdMX1NUQVRJQ19EUkFXKTsKLSAgICBnbFZl
cnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNF
LCBzaXplb2YoR0xmbG9hdCkgKiAyLCBudWxscHRyKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOwotCi0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JV
RkZFUiwgbVZlcnRleEJ1ZmZlcnNbMV0pOwotICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZG
RVIsIHNpemVvZihHTGZsb2F0KSAqIHRlc3RGbGFnRGF0YS5zaXplKCksICZ0ZXN0RmxhZ0RhdGFb
MF0sCi0gICAgICAgICAgICAgICAgIEdMX1NUQVRJQ19EUkFXKTsKLSAgICBnbFZlcnRleEF0dHJp
YlBvaW50ZXIodGVzdEZsYWdMb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCBzaXplb2Yo
R0xmbG9hdCkgKiAyLCBudWxscHRyKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHRl
c3RGbGFnTG9jYXRpb24pOwotCi0gICAgLy8gSW5pdGlhbGl6ZSBzZWNvbmQgdmVydGV4IGFycmF5
IHdpdGggZmlyc3QgaW5kZXggYnVmZmVyCi0gICAgZ2xCaW5kVmVydGV4QXJyYXkobVZlcnRleEFy
cmF5c1sxXSk7Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1J
bmRleEJ1ZmZlcnNbMF0pOwotCi0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVZl
cnRleEJ1ZmZlcnNbMF0pOwotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0
aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIHNpemVvZihHTGZsb2F0KSAqIDIsIG51bGxwdHIp
OwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7Ci0KLSAg
ICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4QnVmZmVyc1sxXSk7Ci0gICAg
Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHRlc3RGbGFnTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9G
QUxTRSwgc2l6ZW9mKEdMZmxvYXQpICogMiwgbnVsbHB0cik7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheSh0ZXN0RmxhZ0xvY2F0aW9uKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OwotCi0gICAgZ2xCaW5kVmVydGV4QXJyYXkobVZlcnRleEFycmF5c1swXSk7Ci0gICAgZ2xEcmF3
RWxlbWVudHMoR0xfVFJJQU5HTEVTLCA2LCBHTF9VTlNJR05FRF9JTlQsIG51bGxwdHIpOwotICAg
IEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAwLCAyNTUsIDAsIDI1NSk7Ci0KLSAgICBnbEJpbmRWZXJ0
ZXhBcnJheShtVmVydGV4QXJyYXlzWzFdKTsKLSAgICBnbERyYXdFbGVtZW50cyhHTF9UUklBTkdM
RVMsIDYsIEdMX1VOU0lHTkVEX0lOVCwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDAs
IDAsIDI1NSwgMCwgMCwgMjU1KTsKLQotICAgIGdsQmluZFZlcnRleEFycmF5KG1WZXJ0ZXhBcnJh
eXNbMF0pOwotICAgIGdsRHJhd0VsZW1lbnRzKEdMX1RSSUFOR0xFUywgNiwgR0xfVU5TSUdORURf
SU5ULCBudWxscHRyKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwgMjU1LCAwLCAyNTUp
OwotCi0gICAgLy8gVHJpZ2dlciB0aGUgYnVnIGhlcmUuCi0gICAgZ2xEZWxldGVCdWZmZXJzKDEs
ICZtSW5kZXhCdWZmZXJzWzJdKTsKLQotICAgIGdsRHJhd0VsZW1lbnRzKEdMX1RSSUFOR0xFUywg
NiwgR0xfVU5TSUdORURfSU5ULCBudWxscHRyKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwg
MCwgMjU1LCAwLCAyNTUpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLUFOR0xF
X0lOU1RBTlRJQVRFX1RFU1QoRHJhd0VsZW1lbnRzVGVzdCwgRVMzX09QRU5HTCgpLCBFUzNfT1BF
TkdMRVMoKSk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZ2xfdGVzdHMvRVRDVGV4dHVyZVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL0VUQ1RleHR1cmVUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMjRmZGQyMjYzMzUuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9FVENUZXh0dXJlVGVzdC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSw4NSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gRVRDVGV4dHVyZVRlc3Q6Ci0vLyAg
IFRlc3RzIGZvciBFVEMgbG9zc3kgZGVjb2RlIGZvcm1hdHMuCi0vLwotCi0jaW5jbHVkZSAidGVz
dF91dGlscy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3Bh
Y2UKLXsKLQotY2xhc3MgRVRDVGV4dHVyZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHBy
b3RlY3RlZDoKLSAgICBFVENUZXh0dXJlVGVzdCgpIDogbVRleHR1cmUoMHUpCi0gICAgewotICAg
ICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsK
LSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRz
KDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxw
aGFCaXRzKDgpOwotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1U
ZXh0dXJlKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9p
ZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEs
ICZtVGV4dHVyZSk7Ci0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQot
ICAgIEdMdWludCBtVGV4dHVyZTsKLX07Ci0KLS8vIFRlc3RzIGEgdGV4dHVyZSB3aXRoIEVUQzEg
bG9zc3kgZGVjb2RlIGZvcm1hdAotVEVTVF9QKEVUQ1RleHR1cmVUZXN0LCBFVEMxVmFsaWRhdGlv
bikKLXsKLSAgICBib29sIHN1cHBvcnRlZCA9IGV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2xv
c3N5X2V0Y19kZWNvZGUiKTsKLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRl
eHR1cmUpOwotCi0gICAgR0x1Ynl0ZSBwaXhlbFs4XSA9IHsgMHgwLCAweDAsIDB4ZjgsIDB4Miwg
MHg0MywgMHhmZiwgMHg0LCAweDEyIH07Ci0gICAgZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFLCA0LCA0LCAwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHBpeGVsKSwgcGl4ZWwpOwotICAgIGlm
IChzdXBwb3J0ZWQpCi0gICAgewotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAg
ICAgICBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDQs
IDQsIEdMX0VUQzFfUkdCOF9MT1NTWV9ERUNPREVfQU5HTEUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZW9mKHBpeGVsKSwgcGl4ZWwpOwotICAgICAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKLQotCi0gICAgICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMSwgR0xfRVRDMV9SR0I4X0xPU1NZX0RFQ09ERV9BTkdMRSwgMiwgMiwgMCwKLSAgICAg
ICAgICAgIHNpemVvZihwaXhlbCksIHBpeGVsKTsKLSAgICAgICAgZ2xDb21wcmVzc2VkVGV4SW1h
Z2UyRChHTF9URVhUVVJFXzJELCAyLCBHTF9FVEMxX1JHQjhfTE9TU1lfREVDT0RFX0FOR0xFLCAx
LCAxLCAwLAotICAgICAgICAgICAgc2l6ZW9mKHBpeGVsKSwgcGl4ZWwpOwotICAgIH0KLSAgICBl
bHNlCi0gICAgewotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLSAg
ICB9Ci19Ci0KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRVRDVGV4dHVyZVRlc3QsCi0gICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9E
M0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpKTsKLX0gIC8v
IGFub255bW91cyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbF90ZXN0cy9GZW5jZVN5bmNUZXN0cy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRmVuY2VTeW5jVGVzdHMuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxNTY4NTA5ZjY2OS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZlbmNlU3luY1Rlc3RzLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDI4MiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAidGVz
dF91dGlscy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1jbGFzcyBG
ZW5jZU5WVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIEZlbmNl
TlZUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7Ci0gICAgICAgIHNl
dFdpbmRvd0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAg
ICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwot
ICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0RlcHRoQml0
cygyNCk7Ci0gICAgfQotfTsKLQotY2xhc3MgRmVuY2VTeW5jVGVzdCA6IHB1YmxpYyBBTkdMRVRl
c3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIEZlbmNlU3luY1Rlc3QoKQotICAgIHsKLSAgICAgICAg
c2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAg
ICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsK
LSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0
cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsKLSAgICB9Ci19OwotCi0vLyBG
ZW5jZU5WIG9iamVjdHMgc2hvdWxkIHJlc3BvbmQgZmFsc2UgdG8gZ2xJc0ZlbmNlTlYgdW50aWwg
dGhleSd2ZSBiZWVuIHNldAotVEVTVF9QKEZlbmNlTlZUZXN0LCBJc0ZlbmNlKQotewotICAgIGlm
ICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfTlZfZmVuY2UiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIGR1ZSB0byBtaXNzaW5nIEdMX05WX2ZlbmNlIGV4dGVuc2lv
bi4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEdMdWludCBm
ZW5jZSA9IDA7Ci0gICAgZ2xHZW5GZW5jZXNOVigxLCAmZmVuY2UpOwotICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOwotCi0gICAgRVhQRUNUX0VRKEdMX0ZBTFNFLCBnbElzRmVuY2VOVihmZW5jZSkp
OwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xTZXRGZW5jZU5WKGZlbmNlLCBH
TF9BTExfQ09NUExFVEVEX05WKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIEVY
UEVDVF9FUShHTF9UUlVFLCBnbElzRmVuY2VOVihmZW5jZSkpOwotICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOwotfQotCi0vLyBUZXN0IGVycm9yIGNhc2VzIGZvciBhbGwgRmVuY2VOViBmdW5jdGlv
bnMKLVRFU1RfUChGZW5jZU5WVGVzdCwgRXJyb3JzKQotewotICAgIGlmICghZXh0ZW5zaW9uRW5h
YmxlZCgiR0xfTlZfZmVuY2UiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBz
a2lwcGVkIGR1ZSB0byBtaXNzaW5nIEdMX05WX2ZlbmNlIGV4dGVuc2lvbi4iIDw8IHN0ZDo6ZW5k
bDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIGdsVGVzdEZlbmNlTlYgc2hvdWxk
IHN0aWxsIHJldHVybiBUUlVFIGZvciBhbiBpbnZhbGlkIGZlbmNlIGFuZCBnZW5lcmF0ZSBhbiBJ
TlZBTElEX09QRVJBVElPTgotICAgIEVYUEVDVF9FUShHTF9UUlVFLCBnbFRlc3RGZW5jZU5WKDEw
KSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLQotICAgIEdM
dWludCBmZW5jZSA9IDIwOwotCi0gICAgLy8gZ2xHZW5GZW5jZXNOViBzaG91bGQgZ2VuZXJhdGUg
SU5WQUxJRF9WQUxVRSBmb3IgYSBuZWdhdGl2ZSBuIGFuZCBub3Qgd3JpdGUgYW55dGhpbmcgdG8g
dGhlIGZlbmNlcyBwb2ludGVyCi0gICAgZ2xHZW5GZW5jZXNOVigtMSwgJmZlbmNlKTsKLSAgICBF
WFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgRVhQRUNUX0VRKDIwdSwgZmVu
Y2UpOwotCi0gICAgLy8gR2VuZXJhdGUgYSByZWFsIGZlbmNlCi0gICAgZ2xHZW5GZW5jZXNOVigx
LCAmZmVuY2UpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gZ2xUZXN0RmVu
Y2VOViBzaG91bGQgc3RpbGwgcmV0dXJuIFRSVUUgZm9yIGEgZmVuY2UgdGhhdCBpcyBub3Qgc3Rh
cnRlZCBhbmQgZ2VuZXJhdGUgYW4gSU5WQUxJRF9PUEVSQVRJT04KLSAgICBFWFBFQ1RfRVEoR0xf
VFJVRSwgZ2xUZXN0RmVuY2VOVihmZW5jZSkpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZB
TElEX09QRVJBVElPTik7Ci0KLSAgICAvLyBnbEdldEZlbmNlaXZOViBzaG91bGQgZ2VuZXJhdGUg
YW4gSU5WQUxJRF9PUEVSQVRJT04gZm9yIGFuIGludmFsaWQgb3IgdW5zdGFydGVkIGZlbmNlIGFu
ZCBub3QgbW9kaWZ5IHRoZSBwYXJhbXMKLSAgICBHTGludCByZXN1bHQgPSAzMDsKLSAgICBnbEdl
dEZlbmNlaXZOVigxMCwgR0xfRkVOQ0VfU1RBVFVTX05WLCAmcmVzdWx0KTsKLSAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgIEVYUEVDVF9FUSgzMCwgcmVzdWx0
KTsKLQotICAgIGdsR2V0RmVuY2Vpdk5WKGZlbmNlLCBHTF9GRU5DRV9TVEFUVVNfTlYsICZyZXN1
bHQpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgRVhQ
RUNUX0VRKDMwLCByZXN1bHQpOwotCi0gICAgLy8gZ2xTZXRGZW5jZU5WIHNob3VsZCBnZW5lcmF0
ZSBhbiBlcnJvciBmb3IgYW55IGNvbmRpdGlvbiB0aGF0IGlzIG5vdCBBTExfQ09NUExFVEVEX05W
Ci0gICAgZ2xTZXRGZW5jZU5WKGZlbmNlLCAwKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5W
QUxJRF9FTlVNKTsKLQotICAgIC8vIGdsU2V0RmVuY2VOViBzaG91bGQgZ2VuZXJhdGUgSU5WQUxJ
RF9PUEVSQVRJT04gZm9yIGFuIGludmFsaWQgZmVuY2UKLSAgICBnbFNldEZlbmNlTlYoMTAsIEdM
X0FMTF9DT01QTEVURURfTlYpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJB
VElPTik7Ci19Ci0KLS8vIFRlc3QgdGhhdCBiYXNpYyB1c2FnZSB3b3JrcyBhbmQgZG9lc24ndCBn
ZW5lcmF0ZSBlcnJvcnMgb3IgY3Jhc2gKLVRFU1RfUChGZW5jZU5WVGVzdCwgQmFzaWNPcGVyYXRp
b25zKQotewotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfTlZfZmVuY2UiKSkKLSAgICB7
Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGR1ZSB0byBtaXNzaW5nIEdMX05W
X2ZlbmNlIGV4dGVuc2lvbi4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAwLjBmLCAxLjBmLCAxLjBmKTsKLQotICAgIEdMdWlu
dCBmZW5jZXNbMjBdID0geyAwIH07Ci0gICAgZ2xHZW5GZW5jZXNOVihzdGF0aWNfY2FzdDxHTHNp
emVpPihBcnJheVNpemUoZmVuY2VzKSksIGZlbmNlcyk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICBmb3IgKEdMdWludCBmZW5jZSA6IGZlbmNlcykKLSAgICB7Ci0gICAgICAgIGds
U2V0RmVuY2VOVihmZW5jZSwgR0xfQUxMX0NPTVBMRVRFRF9OVik7Ci0KLSAgICAgICAgZ2xDbGVh
cihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICB9Ci0KLSAgICBnbEZpbmlzaCgpOwotCi0gICAg
Zm9yIChHTHVpbnQgZmVuY2UgOiBmZW5jZXMpCi0gICAgewotICAgICAgICBHTGludCBzdGF0dXMg
PSAwOwotICAgICAgICBnbEdldEZlbmNlaXZOVihmZW5jZSwgR0xfRkVOQ0VfU1RBVFVTX05WLCAm
c3RhdHVzKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgLy8gRmVu
Y2Ugc2hvdWxkIGJlIGNvbXBsZXRlIG5vdyB0aGF0IEZpbmlzaCBoYXMgYmVlbiBjYWxsZWQKLSAg
ICAgICAgRVhQRUNUX0VRKEdMX1RSVUUsIHN0YXR1cyk7Ci0gICAgfQotCi0gICAgRVhQRUNUX1BJ
WEVMX0VRKDAsIDAsIDI1NSwgMCwgMjU1LCAyNTUpOwotfQotCi0vLyBGZW5jZVN5bmMgb2JqZWN0
cyBzaG91bGQgcmVzcG9uZCB0cnVlIHRvIElzU3luYyBhZnRlciB0aGV5IGFyZSBjcmVhdGVkIHdp
dGggZ2xGZW5jZVN5bmMKLVRFU1RfUChGZW5jZVN5bmNUZXN0LCBJc1N5bmMpCi17Ci0gICAgR0xz
eW5jIHN5bmMgPSBnbEZlbmNlU3luYyhHTF9TWU5DX0dQVV9DT01NQU5EU19DT01QTEVURSwgMCk7
Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBFWFBFQ1RfRVEoR0xfVFJVRSwgZ2xJ
c1N5bmMoc3luYykpOwotICAgIEVYUEVDVF9FUShHTF9GQUxTRSwgZ2xJc1N5bmMocmVpbnRlcnBy
ZXRfY2FzdDxHTHN5bmM+KDQwKSkpOwotfQotCi0vLyBUZXN0IGVycm9yIGNhc2VzIGZvciBhbGwg
RmVuY2VTeW5jIGZ1bmN0aW9uCi1URVNUX1AoRmVuY2VTeW5jVGVzdCwgRXJyb3JzKQotewotICAg
IEdMc3luYyBzeW5jID0gZ2xGZW5jZVN5bmMoR0xfU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUs
IDApOwotCi0gICAgLy8gRGVsZXRlU3luYyBnZW5lcmF0ZXMgSU5WQUxJRF9WQUxVRSB3aGVuIHRo
ZSBzeW5jIGlzIG5vdCB2YWxpZAotICAgIGdsRGVsZXRlU3luYyhyZWludGVycHJldF9jYXN0PEdM
c3luYz4oMjApKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAg
ICAvLyBnbEZlbmNlU3luYyBnZW5lcmF0ZXMgR0xfSU5WQUxJRF9FTlVNIGlmIHRoZSBjb25kaXRp
b24gaXMgbm90IEdMX1NZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFCi0gICAgRVhQRUNUX0VRKDAs
IGdsRmVuY2VTeW5jKDAsIDApKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVN
KTsKLQotICAgIC8vIGdsRmVuY2VTeW5jIGdlbmVyYXRlcyBHTF9JTlZBTElEX0VOVU0gaWYgdGhl
IGZsYWdzIGlzIG5vdCAwCi0gICAgRVhQRUNUX0VRKDAsIGdsRmVuY2VTeW5jKEdMX1NZTkNfR1BV
X0NPTU1BTkRTX0NPTVBMRVRFLCAxMCkpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X1ZBTFVFKTsKLQotICAgIC8vIGdsQ2xpZW50V2FpdFN5bmMgZ2VuZXJhdGVzIEdMX0lOVkFMSURf
VkFMVUUgYW5kIHJldHVybnMgR0xfV0FJVF9GQUlMRUQgaWYgZmxhZ3MgY29udGFpbnMgbW9yZSB0
aGFuIGp1c3QgR0xfU1lOQ19GTFVTSF9DT01NQU5EU19CSVQKLSAgICBFWFBFQ1RfR0xFTlVNX0VR
KEdMX1dBSVRfRkFJTEVELCBnbENsaWVudFdhaXRTeW5jKHN5bmMsIEdMX1NZTkNfRkxVU0hfQ09N
TUFORFNfQklUIHwgMHgyLCAwKSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFM
VUUpOwotCi0gICAgLy8gZ2xDbGllbnRXYWl0U3luYyBnZW5lcmF0ZXMgR0xfSU5WQUxJRF9WQUxV
RSBhbmQgcmV0dXJucyBHTF9XQUlUX0ZBSUxFRCBpZiB0aGUgc3luYyBvYmplY3QgaXMgbm90IHZh
bGlkCi0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9XQUlUX0ZBSUxFRCwgZ2xDbGllbnRXYWl0U3lu
YyhyZWludGVycHJldF9jYXN0PEdMc3luYz4oMzApLCBHTF9TWU5DX0ZMVVNIX0NPTU1BTkRTX0JJ
VCwgMCkpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIC8v
IGdsV2FpdFN5bmMgZ2VuZXJhdGVzIEdMX0lOVkFMSURfVkFMVUUgaWYgZmxhZ3MgaXMgbm9uLXpl
cm8KLSAgICBnbFdhaXRTeW5jKHN5bmMsIDEsIEdMX1RJTUVPVVRfSUdOT1JFRCk7Ci0gICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgLy8gZ2xXYWl0U3luYyBnZW5l
cmF0ZXMgR0xfSU5WQUxJRF9WQUxVRSBpZiBHTHVpbnQ2NCBpcyBub3QgR0xfVElNRU9VVF9JR05P
UkVECi0gICAgZ2xXYWl0U3luYyhzeW5jLCAwLCAwKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xf
SU5WQUxJRF9WQUxVRSk7Ci0KLSAgICAvLyBnbFdhaXRTeW5jIGdlbmVyYXRlcyBHTF9JTlZBTElE
X1ZBTFVFIGlmIHRoZSBzeW5jIG9iamVjdCBpcyBub3QgdmFsaWQKLSAgICBnbFdhaXRTeW5jKHJl
aW50ZXJwcmV0X2Nhc3Q8R0xzeW5jPigzMCksIDAsIEdMX1RJTUVPVVRfSUdOT1JFRCk7Ci0gICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgLy8gZ2xHZXRTeW5jaXYg
Z2VuZXJhdGVzIEdMX0lOVkFMSURfVkFMVUUgaWYgYnVmU2l6ZSBpcyBsZXNzIHRoYW4gemVybywg
cmVzdWx0cyBzaG91bGQgYmUgdW50b3VjaGVkCi0gICAgR0xzaXplaSBsZW5ndGggPSAyMDsKLSAg
ICBHTGludCB2YWx1ZSA9IDMwOwotICAgIGdsR2V0U3luY2l2KHN5bmMsIEdMX09CSkVDVF9UWVBF
LCAtMSwgJmxlbmd0aCwgJnZhbHVlKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9W
QUxVRSk7Ci0gICAgRVhQRUNUX0VRKDIwLCBsZW5ndGgpOwotICAgIEVYUEVDVF9FUSgzMCwgdmFs
dWUpOwotCi0gICAgLy8gZ2xHZXRTeW5jaXYgZ2VuZXJhdGVzIEdMX0lOVkFMSURfVkFMVUUgaWYg
dGhlIHN5bmMgb2JqZWN0IHRpcyBub3QgdmFsaWQsIHJlc3VsdHMgc2hvdWxkIGJlIHVudG91Y2hl
ZAotICAgIGdsR2V0U3luY2l2KHJlaW50ZXJwcmV0X2Nhc3Q8R0xzeW5jPigzMCksIEdMX09CSkVD
VF9UWVBFLCAxLCAmbGVuZ3RoLCAmdmFsdWUpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZB
TElEX1ZBTFVFKTsKLSAgICBFWFBFQ1RfRVEoMjAsIGxlbmd0aCk7Ci0gICAgRVhQRUNUX0VRKDMw
LCB2YWx1ZSk7Ci19Ci0KLS8vIFRlc3QgdXNhZ2Ugb2YgZ2xHZXRTeW5jaXYKLVRFU1RfUChGZW5j
ZVN5bmNUZXN0LCBCYXNpY1F1ZXJpZXMpCi17Ci0gICAgR0xzaXplaSBsZW5ndGggPSAwOwotICAg
IEdMaW50IHZhbHVlID0gMDsKLSAgICBHTHN5bmMgc3luYyA9IGdsRmVuY2VTeW5jKEdMX1NZTkNf
R1BVX0NPTU1BTkRTX0NPTVBMRVRFLCAwKTsKLQotICAgIGdsR2V0U3luY2l2KHN5bmMsIEdMX1NZ
TkNfQ09ORElUSU9OLCAxLCAmbGVuZ3RoLCAmdmFsdWUpOwotICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOwotICAgIEVYUEVDVF9FUShHTF9TWU5DX0dQVV9DT01NQU5EU19DT01QTEVURSwgdmFsdWUp
OwotCi0gICAgZ2xHZXRTeW5jaXYoc3luYywgR0xfT0JKRUNUX1RZUEUsIDEsICZsZW5ndGgsICZ2
YWx1ZSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VRKEdMX1NZTkNf
RkVOQ0UsIHZhbHVlKTsKLQotICAgIGdsR2V0U3luY2l2KHN5bmMsIEdMX1NZTkNfRkxBR1MsIDEs
ICZsZW5ndGgsICZ2YWx1ZSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNU
X0VRKDAsIHZhbHVlKTsKLX0KLQotLy8gVGVzdCB0aGF0IGJhc2ljIHVzYWdlIHdvcmtzIGFuZCBk
b2Vzbid0IGdlbmVyYXRlIGVycm9ycyBvciBjcmFzaAotVEVTVF9QKEZlbmNlU3luY1Rlc3QsIEJh
c2ljT3BlcmF0aW9ucykKLXsKLSAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6IEZpZ3VyZSBvdXQgd2h5
IHRoaXMgaXMgYnJva2VuIG9uIEludGVsIE9wZW5HTAotICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0
UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdM
RSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIE9w
ZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsQ2xl
YXJDb2xvcigxLjBmLCAwLjBmLCAxLjBmLCAxLjBmKTsKLQotICAgIEdMc3luYyBzeW5jID0gZ2xG
ZW5jZVN5bmMoR0xfU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUsIDApOwotCi0gICAgZ2xDbGVh
cihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICBnbFdhaXRTeW5jKHN5bmMsIDAsIEdMX1RJTUVP
VVRfSUdOT1JFRCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBHTHNpemVpIGxl
bmd0aCA9IDA7Ci0gICAgR0xpbnQgdmFsdWUgPSAwOwotICAgIHVuc2lnbmVkIGludCBsb29wQ291
bnQgPSAwOwotCi0gICAgZ2xGbHVzaCgpOwotCi0gICAgLy8gVXNlICdsb29wQ291bnQnIHRvIG1h
a2Ugc3VyZSB0aGUgdGVzdCBkb2Vzbid0IGdldCBzdHVjayBpbiBhbiBpbmZpbml0ZSBsb29wCi0g
ICAgd2hpbGUgKHZhbHVlICE9IEdMX1NJR05BTEVEICYmIGxvb3BDb3VudCA8PSAxMDAwMDAwKQot
ICAgIHsKLSAgICAgICAgbG9vcENvdW50Kys7Ci0KLSAgICAgICAgZ2xHZXRTeW5jaXYoc3luYywg
R0xfU1lOQ19TVEFUVVMsIDEsICZsZW5ndGgsICZ2YWx1ZSk7Ci0gICAgICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotICAgIH0KLQotICAgIEFTU0VSVF9HTEVOVU1fRVEoR0xfU0lHTkFMRUQsIHZh
bHVlKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMjA7IGkrKykKLSAgICB7Ci0gICAg
ICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgICAgIGdsQ2xpZW50V2FpdFN5
bmMoc3luYywgR0xfU1lOQ19GTFVTSF9DT01NQU5EU19CSVQsIEdMX1RJTUVPVVRfSUdOT1JFRCk7
Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIH0KLX0KLQotLy8gVXNlIHRoaXMg
dG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGlj
aCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4K
LUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRmVuY2VOVlRlc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
RVMyX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAotICAgICAgICAgICAgICAgICAgICAg
ICBFUzNfT1BFTkdMRVMoKSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKEZlbmNlU3luY1Rlc3Qs
IEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9GcmFtZWJ1ZmZlck1p
eGVkU2FtcGxlc1Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2ds
X3Rlc3RzL0ZyYW1lYnVmZmVyTWl4ZWRTYW1wbGVzVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDViYWY5MzAzYWIwLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRnJhbWVidWZmZXJNaXhlZFNhbXBsZXNUZXN0
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5MSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIw
MTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gQ0hST01J
VU1GcmFtZWJ1ZmZlck1peGVkU2FtcGxlc1Rlc3QKLS8vICAgVGVzdCBDSFJPTUlVTSBzdWJzZXQg
b2YgTlZfZnJhbWVidWZmZXJfbWl4ZWRfc2FtcGxlcy4KLS8vICAgVGhpcyBleHRlbnNpb24gYWxs
b3dzIHJlbmRlcmluZyB0byBhIGZyYW1lYnVmZmVyIHRoYXQgaGFzIGRpZmZlcmVudAotLy8gICBz
YW1wbGUgY291bnRzIGZvciBkaWZmZXJlbnQgcmVuZGVyIGJ1ZmZlcnMgKHN0ZW5jaWwsIGRlcHRo
LCBjb2xvcikKLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0jaW5jbHVkZSAi
c2hhZGVyX3V0aWxzLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17
Ci0KLWNvbnN0IEdMdWludCBrV2lkdGggID0gMTAwOwotY29uc3QgR0x1aW50IGtIZWlnaHQgPSAx
MDA7Ci0KLWNsYXNzIENIUk9NSVVNRnJhbWVidWZmZXJNaXhlZFNhbXBsZXNUZXN0IDogcHVibGlj
IEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgZW51bSBTZXR1cEZCT1R5cGUKLSAgICB7
Ci0gICAgICAgIE1peGVkU2FtcGxlRkJPLCAgIC8vIDEgY29sb3Igc2FtcGxlLCBOIHN0ZW5jaWwg
c2FtcGxlcy4KLSAgICAgICAgU2luZ2xlU2FtcGxlRkJPLCAgLy8gMSBjb2xvciBzYW1wbGUsIDEg
c3RlbmNpbCBzYW1wbGUuCi0gICAgfTsKLQotICAgIGJvb2wgaXNBcHBsaWNhYmxlKCkgY29uc3QK
LSAgICB7Ci0gICAgICAgIHJldHVybiBleHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9mcmFt
ZWJ1ZmZlcl9taXhlZF9zYW1wbGVzIikgJiYKLSAgICAgICAgICAgICAgIGV4dGVuc2lvbkVuYWJs
ZWQoIkdMX09FU19yZ2I4X3JnYmE4Iik7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgLy8gY2xh
bmctZm9ybWF0IG9mZgotICAgICAgICBzdGF0aWMgY29uc3QgY2hhcioga1ZlcnRleFNoYWRlclNv
dXJjZSA9Ci0gICAgICAgICAgICAiYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBwb3NpdGlvbjtcbiIK
LSAgICAgICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICAgICAiICBnbF9Qb3NpdGlv
biA9IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgIn1cbiI7Ci0KLSAgICAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGtGcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICAgICAidW5pZm9ybSBt
ZWRpdW1wIHZlYzQgY29sb3I7XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAg
ICAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7XG4iCi0gICAgICAgICAgICAifVxuIjsK
LQotICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KLSAgICAgICAgbVByb2dyYW0gPSBDb21waWxl
UHJvZ3JhbShrVmVydGV4U2hhZGVyU291cmNlLCBrRnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotCi0g
ICAgICAgIEdMdWludCBwb3NpdGlvbl9sb2MgPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFt
LCAicG9zaXRpb24iKTsKLSAgICAgICAgbUNvbG9yTG9jICAgICAgICAgICA9IGdsR2V0VW5pZm9y
bUxvY2F0aW9uKG1Qcm9ncmFtLCAiY29sb3IiKTsKLQotICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwg
Jm1WQk8pOwotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVkJPKTsKLQot
ICAgICAgICBzdGF0aWMgZmxvYXQgdmVydGljZXNbXSA9IHsKLSAgICAgICAgICAgIDEuMGYsICAx
LjBmLCAtMS4wZiwgMS4wZiwgIC0xLjBmLCAtMS4wZiwgLTEuMGYsIDEuMGYsIC0xLjBmLAotICAg
ICAgICAgICAgLTEuMGYsIDEuMGYsIC0xLjBmLCAtMS4wZiwgLTEuMGYsIDEuMGYsICAtMS4wZiwg
MS4wZiwgMS4wZiwKLSAgICAgICAgfTsKLSAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JV
RkZFUiwgc2l6ZW9mKHZlcnRpY2VzKSwgdmVydGljZXMsIEdMX1NUQVRJQ19EUkFXKTsKLSAgICAg
ICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbl9sb2MpOwotICAgICAgICBnbFZl
cnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25fbG9jLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAs
IDApOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZvaWQg
VGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZt
VkJPKTsKLSAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgICAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAg
fQotCi0gICAgdm9pZCBwcmVwYXJlRm9yRHJhdyhTZXR1cEZCT1R5cGUgZmJvX3R5cGUpCi0gICAg
ewotICAgICAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgICAgICBnbEdlblRl
eHR1cmVzKDEsICZtVGV4dHVyZSk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmUpOwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgICAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwot
ICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklM
VEVSLCBHTF9ORUFSRVNUKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgIGdsVGV4SW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCBrV2lkdGgsIGtIZWlnaHQsIDAsIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKLQotICAgICAgICBnbEdlblJlbmRlcmJ1
ZmZlcnMoMSwgJm1TdGVuY2lsUkIpOwotICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVO
REVSQlVGRkVSLCBtU3RlbmNpbFJCKTsKLQotICAgICAgICBpZiAoZmJvX3R5cGUgPT0gTWl4ZWRT
YW1wbGVGQk8pCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIENyZWF0ZSBhIHNhbXBsZSBidWZm
ZXIuCi0gICAgICAgICAgICBHTHNpemVpIG51bV9zYW1wbGVzID0gOCwgbWF4X3NhbXBsZXMgPSAw
OwotICAgICAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfU0FNUExFUywgJm1heF9zYW1wbGVz
KTsKLSAgICAgICAgICAgIG51bV9zYW1wbGVzID0gc3RkOjptaW4obnVtX3NhbXBsZXMsIG1heF9z
YW1wbGVzKTsKLSAgICAgICAgICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5H
TEUoR0xfUkVOREVSQlVGRkVSLCBudW1fc2FtcGxlcywgR0xfU1RFTkNJTF9JTkRFWDgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtXaWR0aCwga0hl
aWdodCk7Ci0gICAgICAgICAgICBHTGludCBwYXJhbSA9IDA7Ci0gICAgICAgICAgICBnbEdldFJl
bmRlcmJ1ZmZlclBhcmFtZXRlcml2KEdMX1JFTkRFUkJVRkZFUiwgR0xfUkVOREVSQlVGRkVSX1NB
TVBMRVMsICZwYXJhbSk7Ci0gICAgICAgICAgICBFWFBFQ1RfR1QocGFyYW0sIDEpOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgZ2xSZW5kZXJidWZmZXJT
dG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xfU1RFTkNJTF9JTkRFWDgsIGtXaWR0aCwga0hlaWdo
dCk7Ci0gICAgICAgIH0KLSAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZF
UiwgMCk7Ci0KLSAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1TYW1wbGVGQk8pOwotICAg
ICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbVNhbXBsZUZCTyk7Ci0gICAg
ICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFD
SE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZSwgMCk7Ci0gICAgICAgIGdsRnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xf
UkVOREVSQlVGRkVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdGVuY2ls
UkIpOwotICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0xlbnVtPihHTF9GUkFNRUJVRkZF
Ul9DT01QTEVURSksCi0gICAgICAgICAgICAgICAgICBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMo
R0xfRlJBTUVCVUZGRVIpKTsKLQotICAgICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAg
ICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKLSAgICAgICAgZ2xWaWV3cG9y
dCgwLCAwLCBrV2lkdGgsIGtIZWlnaHQpOwotICAgICAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4w
ZiwgMC4wZiwgMC4wZik7Ci0gICAgICAgIGdsQ2xlYXJTdGVuY2lsKDEpOwotICAgICAgICBnbENs
ZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwotICAgICAg
ICBnbEVuYWJsZShHTF9TVEVOQ0lMX1RFU1QpOwotICAgICAgICBnbEVuYWJsZShHTF9CTEVORCk7
Ci0gICAgICAgIGdsQmxlbmRGdW5jKEdMX1NSQ19BTFBIQSwgR0xfT05FX01JTlVTX1NSQ19BTFBI
QSk7Ci0gICAgICAgIGdsU3RlbmNpbE1hc2soMHhmZmZmZmZmZik7Ci0gICAgICAgIGdsU3RlbmNp
bEZ1bmMoR0xfRVFVQUwsIDEsIDB4ZmZmZmZmZmYpOwotICAgICAgICBnbFN0ZW5jaWxPcChHTF9L
RUVQLCBHTF9LRUVQLCBHTF9aRVJPKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGNsZWFudXAoKQotICAgIHsKLSAgICAgICAgZ2xCaW5kRnJhbWVi
dWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOwotICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygx
LCAmbVNhbXBsZUZCTyk7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlKTsK
LSAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtU3RlbmNpbFJCKTsKLQotICAgICAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVNhbXBsZUZCTzsK
LSAgICBHTHVpbnQgbVN0ZW5jaWxSQjsKLSAgICBHTHVpbnQgbVRleHR1cmU7Ci0KLSAgICBHTHVp
bnQgbVByb2dyYW07Ci0gICAgR0x1aW50IG1WQk87Ci0gICAgR0xpbnQgbUNvbG9yTG9jOwotfTsK
LQotfSAgLy8KLQotVEVTVF9QKENIUk9NSVVNRnJhbWVidWZmZXJNaXhlZFNhbXBsZXNUZXN0LCBT
dGF0ZVNldHRpbmdUZXN0KQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAgewotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xpbnQgdmFsdWUgPSAtMTsKLSAgICBnbEdldElu
dGVnZXJ2KEdMX0NPVkVSQUdFX01PRFVMQVRJT05fQ0hST01JVU0sICZ2YWx1ZSk7Ci0gICAgRVhQ
RUNUX0VRKEdMX05PTkUsIHZhbHVlKTsKLSAgICBHTGVudW0ga1ZhbHVlc1tdID0ge0dMX05PTkUs
IEdMX1JHQiwgR0xfUkdCQSwgR0xfQUxQSEF9OwotICAgIGZvciAoYXV0byBleHBlY3QgOiBrVmFs
dWVzKQotICAgIHsKLSAgICAgICAgZ2xDb3ZlcmFnZU1vZHVsYXRpb25DSFJPTUlVTShleHBlY3Qp
OwotICAgICAgICB2YWx1ZSA9IC0xOwotICAgICAgICBnbEdldEludGVnZXJ2KEdMX0NPVkVSQUdF
X01PRFVMQVRJT05fQ0hST01JVU0sICZ2YWx1ZSk7Ci0gICAgICAgIEVYUEVDVF9FUShleHBlY3Qs
IHN0YXRpY19jYXN0PEdMZW51bT4odmFsdWUpKTsKLSAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19j
YXN0PEdMZW51bT4oR0xfTk9fRVJST1IpLCBnbEdldEVycm9yKCkpOwotICAgIH0KLQotICAgIGds
Q292ZXJhZ2VNb2R1bGF0aW9uQ0hST01JVU0oR0xfQllURSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRp
Y19jYXN0PEdMZW51bT4oR0xfSU5WQUxJRF9FTlVNKSwgZ2xHZXRFcnJvcigpKTsKLSAgICB2YWx1
ZSA9IC0xOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfQ09WRVJBR0VfTU9EVUxBVElPTl9DSFJPTUlV
TSwgJnZhbHVlKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0xlbnVtPihHTF9BTFBIQSks
IHN0YXRpY19jYXN0PEdMZW51bT4odmFsdWUpKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8
R0xlbnVtPihHTF9OT19FUlJPUiksIGdsR2V0RXJyb3IoKSk7Ci19Ci0KLS8vIFRoZSB0ZXN0IHBh
dHRlcm4gaXMgYXMgZm9sbG93czoKLS8vIEEgZ3JlZW4gdHJpYW5nbGUgKGJvdHRvbSBsZWZ0LCB0
b3AgcmlnaHQsIHRvcCBsZWZ0KS4KLS8vIEEgYmx1ZSB0cmlhbmdsZSAodG9wIGxlZnQsIGJvdHRv
bSByaWdodCwgYm90dG9tIGxlZnQpLgotLy8gVGhlIHRyaWFuZ2xlcyB3aWxsIG92ZXJsYXAgYnV0
IG92ZXJsYXAgb25seSBjb250YWlucyBncmVlbiBwaXhlbHMsCi0vLyBkdWUgdG8gZWFjaCBkcmF3
IGVyYXNpbmcgaXRzIGFyZWEgZnJvbSBzdGVuY2lsLgotLy8gVGhlIGJsdWUgdHJpYW5nbGUgd2ls
bCBmaWxsIG9ubHkgdGhlIGFyZWEgKGJvdHRvbSBsZWZ0LCBjZW50ZXIsCi0vLyBib3R0b20gcmln
aHQpLgotCi0vLyBUaGUgdGVzdCB0ZXN0cyB0aGF0IENvdmVyYWdlTW9kdWxhdGlvbiBjYWxsIHdv
cmtzLgotLy8gVGhlIGZyYWN0aW9uYWwgcGl4ZWxzIG9mIGJvdGggdHJpYW5nbGVzIGVuZCB1cCBi
ZWluZyBtb2R1bGF0ZWQKLS8vIGJ5IHRoZSBjb3ZlcmFnZSBvZiB0aGUgZnJhZ21lbnQuIFRlc3Qg
dGhhdCBkcmF3aW5nIHdpdGggYW5kIHdpdGhvdXQKLS8vIENvdmVyYWdlTW9kdWxhdGlvbiBjYXVz
ZXMgdGhlIHJlc3VsdCB0byBiZSBkaWZmZXJlbnQuCi1URVNUX1AoQ0hST01JVU1GcmFtZWJ1ZmZl
ck1peGVkU2FtcGxlc1Rlc3QsIENvdmVyYWdlTW9kdWxhdGlvbikKLXsKLSAgICBpZiAoIWlzQXBw
bGljYWJsZSgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBzdGF0aWMgY29u
c3QgZmxvYXQga0JsdWVbXSAgPSB7MC4wZiwgMC4wZiwgMS4wZiwgMS4wZn07Ci0gICAgc3RhdGlj
IGNvbnN0IGZsb2F0IGtHcmVlbltdID0gezAuMGYsIDEuMGYsIDAuMGYsIDEuMGZ9OwotICAgIHN0
ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+IHJlc3VsdHNbM107Ci0gICAgY29uc3QgR0xpbnQga1Jl
c3VsdFNpemUgPSBrV2lkdGggKiBrSGVpZ2h0ICogNDsKLQotICAgIGZvciAoaW50IHBhc3MgPSAw
OyBwYXNzIDwgMzsgKytwYXNzKQotICAgIHsKLSAgICAgICAgcHJlcGFyZUZvckRyYXcoTWl4ZWRT
YW1wbGVGQk8pOwotICAgICAgICBpZiAocGFzcyA9PSAxKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBnbENvdmVyYWdlTW9kdWxhdGlvbkNIUk9NSVVNKEdMX1JHQkEpOwotICAgICAgICB9Ci0gICAg
ICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2MsIDEsIGtHcmVlbik7Ci0gICAgICAgIGdsRHJhd0Fy
cmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOwotCi0gICAgICAgIGdsVW5pZm9ybTRmdihtQ29sb3JM
b2MsIDEsIGtCbHVlKTsKLSAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMywgMyk7
Ci0gICAgICAgIGlmIChwYXNzID09IDEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsQ292ZXJh
Z2VNb2R1bGF0aW9uQ0hST01JVU0oR0xfTk9ORSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmVzdWx0
c1twYXNzXS5yZXNldChuZXcgdWludDhfdFtrUmVzdWx0U2l6ZV0pOwotICAgICAgICBtZW1zZXQo
cmVzdWx0c1twYXNzXS5nZXQoKSwgMTIzdSwga1Jlc3VsdFNpemUpOwotICAgICAgICBnbFJlYWRQ
aXhlbHMoMCwgMCwga1dpZHRoLCBrSGVpZ2h0LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBy
ZXN1bHRzW3Bhc3NdLmdldCgpKTsKLQotICAgICAgICBjbGVhbnVwKCk7Ci0gICAgfQotCi0gICAg
RVhQRUNUX05FKDAsIG1lbWNtcChyZXN1bHRzWzBdLmdldCgpLCByZXN1bHRzWzFdLmdldCgpLCBr
UmVzdWx0U2l6ZSkpOwotICAgIC8vIFZlcmlmeSB0aGF0IHJlbmRlcmluZyBpcyBkZXRlcm1pbmlz
dGljLCBzbyB0aGF0IHRoZSBwYXNzIGFib3ZlIGRvZXMgbm90Ci0gICAgLy8gY29tZSBmcm9tIG5v
bi1kZXRlcm1pbmlzdGljIHJlbmRlcmluZy4KLSAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKHJlc3Vs
dHNbMF0uZ2V0KCksIHJlc3VsdHNbMl0uZ2V0KCksIGtSZXN1bHRTaXplKSk7Ci19Ci0KLS8vIFRo
ZSB0ZXN0IHRlc3RzIHRoYXQgdGhlIHN0ZW5jaWwgYnVmZmVyIGNhbiBiZSBtdWx0aXNhbXBsZWQs
IGV2ZW4gdGhvdWdoIHRoZQotLy8gY29sb3IgYnVmZmVyIGlzIHNpbmdsZS1zYW1wbGVkLiBEcmF3
cyB0aGUgc2FtZSBwYXR0ZXJuIHdpdGggc2luZ2xlLXNhbXBsZQotLy8gc3RlbmNpbCBidWZmZXIg
YW5kIHdpdGggbXVsdGlzYW1wbGUgc3RlbmNpbCBidWZmZXIuIFRoZSBpbWFnZXMgc2hvdWxkIGRp
ZmZlci4KLVRFU1RfUChDSFJPTUlVTUZyYW1lYnVmZmVyTWl4ZWRTYW1wbGVzVGVzdCwgTXVsdGlz
YW1wbGVTdGVuY2lsRWZmZWN0aXZlKQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAg
ewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGZsb2F0IGtCbHVl
W10gID0gezAuMGYsIDAuMGYsIDEuMGYsIDEuMGZ9OwotICAgIHN0YXRpYyBjb25zdCBmbG9hdCBr
R3JlZW5bXSA9IHswLjBmLCAxLjBmLCAwLjBmLCAxLjBmfTsKLQotICAgIHN0ZDo6dW5pcXVlX3B0
cjx1aW50OF90W10+IHJlc3VsdHNbM107Ci0gICAgY29uc3QgR0xpbnQga1Jlc3VsdFNpemUgPSBr
V2lkdGggKiBrSGVpZ2h0ICogNDsKLQotICAgIGZvciAoaW50IHBhc3MgPSAwOyBwYXNzIDwgMzsg
KytwYXNzKQotICAgIHsKLSAgICAgICAgaWYgKHBhc3MgPT0gMSkKLSAgICAgICAgewotICAgICAg
ICAgICAgcHJlcGFyZUZvckRyYXcoTWl4ZWRTYW1wbGVGQk8pOwotICAgICAgICB9Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcHJlcGFyZUZvckRyYXcoU2luZ2xlU2FtcGxl
RkJPKTsKLSAgICAgICAgfQotICAgICAgICBnbFVuaWZvcm00ZnYobUNvbG9yTG9jLCAxLCBrR3Jl
ZW4pOwotICAgICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCAzKTsKLQotICAgICAg
ICBnbFVuaWZvcm00ZnYobUNvbG9yTG9jLCAxLCBrQmx1ZSk7Ci0gICAgICAgIGdsRHJhd0FycmF5
cyhHTF9UUklBTkdMRVMsIDMsIDMpOwotCi0gICAgICAgIHJlc3VsdHNbcGFzc10ucmVzZXQobmV3
IHVpbnQ4X3Rba1Jlc3VsdFNpemVdKTsKLSAgICAgICAgbWVtc2V0KHJlc3VsdHNbcGFzc10uZ2V0
KCksIDEydSwga1Jlc3VsdFNpemUpOwotICAgICAgICBnbFJlYWRQaXhlbHMoMCwgMCwga1dpZHRo
LCBrSGVpZ2h0LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCByZXN1bHRzW3Bhc3NdLmdldCgp
KTsKLQotICAgICAgICBjbGVhbnVwKCk7Ci0gICAgfQotCi0gICAgRVhQRUNUX05FKDAsIG1lbWNt
cChyZXN1bHRzWzBdLmdldCgpLCByZXN1bHRzWzFdLmdldCgpLCBrUmVzdWx0U2l6ZSkpOwotICAg
IC8vIFZlcmlmeSB0aGF0IHJlbmRlcmluZyBpcyBkZXRlcm1pbmlzdGljLCBzbyB0aGF0IHRoZSBw
YXNzIGFib3ZlIGRvZXMgbm90Ci0gICAgLy8gY29tZSBmcm9tIG5vbi1kZXRlcm1pbmlzdGljIHJl
bmRlcmluZy4KLSAgICBFWFBFQ1RfRVEoMCwgbWVtY21wKHJlc3VsdHNbMF0uZ2V0KCksIHJlc3Vs
dHNbMl0uZ2V0KCksIGtSZXN1bHRTaXplKSk7Ci19Ci0KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1Qo
Q0hST01JVU1GcmFtZWJ1ZmZlck1peGVkU2FtcGxlc1Rlc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRnJhbWVidWZmZXJSZW5kZXJN
aXBtYXBUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9GcmFtZWJ1ZmZlclJlbmRlck1pcG1hcFRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0NzFiZjUwMTg0OC4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1lYnVmZmVyUmVuZGVyTWlwbWFwVGVzdC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwyMDQgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRo
ZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgInRl
c3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotY2xhc3Mg
RnJhbWVidWZmZXJSZW5kZXJNaXBtYXBUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90
ZWN0ZWQ6Ci0gICAgRnJhbWVidWZmZXJSZW5kZXJNaXBtYXBUZXN0KCkKLSAgICB7Ci0gICAgICAg
IHNldFdpbmRvd1dpZHRoKDI1Nik7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgyNTYpOwotICAg
ICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7
Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJp
dHMoOCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIFNldFVwKCkKLSAgICB7Ci0gICAgICAg
IEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2c1NvdXJj
ZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgYXR0cmlidXRlIGhpZ2hw
IHZlYzQgcG9zaXRpb247Ci0gICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAgICAgICAg
fQotICAgICAgICApOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzU291cmNlID0gU0hB
REVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICB1bmlmb3JtIGhpZ2hwIHZlYzQgY29s
b3I7Ci0gICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBnbF9GcmFnQ29sb3IgPSBjb2xvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsK
LQotICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzU291cmNlLCBmc1NvdXJjZSk7
Ci0gICAgICAgIGlmIChtUHJvZ3JhbSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBGQUlM
KCkgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKLSAgICAgICAgfQotCi0gICAgICAg
IG1Db2xvckxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJjb2xvciIp
OwotCi0gICAgICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICAgICAgZ2xDbGVhckNv
bG9yKDAsIDAsIDAsIDApOwotICAgICAgICBnbENsZWFyRGVwdGhmKDAuMCk7Ci0gICAgICAgIGds
Q2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQpOwotCi0gICAg
ICAgIGdsRW5hYmxlKEdMX0JMRU5EKTsKLSAgICAgICAgZ2xEaXNhYmxlKEdMX0RFUFRIX1RFU1Qp
OwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZpcnR1YWwg
dm9pZCBUZWFyRG93bigpCi0gICAgewotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0p
OwotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQg
bVByb2dyYW07Ci0gICAgR0xpbnQgbUNvbG9yTG9jYXRpb247Ci19OwotCi0vLyBWYWxpZGF0ZSB0
aGF0IGlmIHdlIGFyZSBpbiBFUzMgb3IgR0xfT0VTX2Zib19yZW5kZXJfbWlwbWFwIGV4aXN0cywg
dGhlcmUgYXJlIG5vIHZhbGlkYXRpb24gZXJyb3JzCi0vLyB3aGVuIHVzaW5nIGEgbm9uLXplcm8g
bGV2ZWwgaW4gZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRC4KLVRFU1RfUChGcmFtZWJ1ZmZlclJlbmRl
ck1pcG1hcFRlc3QsIFZhbGlkYXRpb24pCi17Ci0gICAgYm9vbCByZW5kZXJUb01pcG1hcFN1cHBv
cnRlZCA9Ci0gICAgICAgIGV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19mYm9fcmVuZGVyX21pcG1h
cCIpIHx8IGdldENsaWVudE1ham9yVmVyc2lvbigpID4gMjsKLQotICAgIEdMdWludCB0ZXggPSAw
OwotICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCB0ZXgpOwotCi0gICAgY29uc3QgR0xpbnQgbGV2ZWxzID0gNTsKLSAgICBmb3IgKEdM
aW50IGkgPSAwOyBpIDwgbGV2ZWxzOyBpKyspCi0gICAgewotICAgICAgICBHTHNpemVpIHNpemUg
PSAxIDw8ICgobGV2ZWxzIC0gMSkgLSBpKTsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIGksIEdMX1JHQkEsIHNpemUsIHNpemUsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsIE5VTEwpOwotICAgIH0KLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgR0x1
aW50IGZibyA9IDA7Ci0gICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJmZibyk7Ci0gICAgZ2xCaW5k
RnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZibyk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgbGV2ZWxzOyBpKyspCi0gICAgewotICAg
ICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRB
Q0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgdGV4LCBpKTsKLQotICAgICAgICBpZiAoaSA+IDAgJiYg
IXJlbmRlclRvTWlwbWFwU3VwcG9ydGVkKQotICAgICAgICB7Ci0gICAgICAgICAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAg
ICAgICB7Ci0gICAgICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgICAgIEVY
UEVDVF9FUShnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpLCBHTGVudW0o
R0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGdsRGVs
ZXRlRnJhbWVidWZmZXJzKDEsICZmYm8pOwotICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleCk7
Ci19Ci0KLS8vIFJlbmRlciB0byB2YXJpb3VzIGxldmVscyBvZiBhIHRleHR1cmUgYW5kIGNoZWNr
IHRoYXQgdGhleSBoYXZlIHRoZSBjb3JyZWN0IGNvbG9yIGRhdGEgdmlhIFJlYWRQaXhlbHMKLVRF
U1RfUChGcmFtZWJ1ZmZlclJlbmRlck1pcG1hcFRlc3QsIFJlbmRlclRvTWlwbWFwKQotewotICAg
IC8vIFRPRE8oZ2VvZmZsYW5nKTogRmlndXJlIG91dCB3aHkgdGhpcyBpcyBicm9rZW4gb24gSW50
ZWwgT3BlbkdMCi0gICAgaWYgKElzSW50ZWwoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0g
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQotICAgIHsKLSAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgYm9vbCByZW5kZXJUb01pcG1hcFN1cHBvcnRl
ZCA9Ci0gICAgICAgIGV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19mYm9fcmVuZGVyX21pcG1hcCIp
IHx8IGdldENsaWVudE1ham9yVmVyc2lvbigpID4gMjsKLSAgICBpZiAoIXJlbmRlclRvTWlwbWFw
U3VwcG9ydGVkKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVj
YXVzZSBHTF9PRVNfZmJvX3JlbmRlcl9taXBtYXAgb3IgRVMzIGlzIG5vdCBhdmFpbGFibGUuIiA8
PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBHTGZsb2F0
IGxldmVsQ29sb3JzW10gPQotICAgIHsKLSAgICAgICAgMS4wZiwgMC4wZiwgMC4wZiwgMS4wZiwK
LSAgICAgICAgMC4wZiwgMS4wZiwgMC4wZiwgMS4wZiwKLSAgICAgICAgMC4wZiwgMC4wZiwgMS4w
ZiwgMS4wZiwKLSAgICAgICAgMS4wZiwgMS4wZiwgMC4wZiwgMS4wZiwKLSAgICAgICAgMS4wZiwg
MC4wZiwgMS4wZiwgMS4wZiwKLSAgICAgICAgMC4wZiwgMS4wZiwgMS4wZiwgMS4wZiwKLSAgICB9
OwotICAgIGNvbnN0IEdMaW50IHRlc3RMZXZlbHMgPSBzdGF0aWNfY2FzdDxHTGludD4oQXJyYXlT
aXplKGxldmVsQ29sb3JzKSAvIDQpOwotCi0gICAgR0x1aW50IHRleCA9IDA7Ci0gICAgZ2xHZW5U
ZXh0dXJlcygxLCAmdGV4KTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7
Ci0KLSAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdGVzdExldmVsczsgaSsrKQotICAgIHsKLSAg
ICAgICAgR0xzaXplaSBzaXplID0gMSA8PCAoKHRlc3RMZXZlbHMgLSAxKSAtIGkpOwotICAgICAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgaSwgR0xfUkdCQSwgc2l6ZSwgc2l6ZSwgMCwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgTlVMTCk7Ci0gICAgfQotCi0gICAgRVhQRUNUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICBHTHVpbnQgZmJvID0gMDsKLSAgICBnbEdlbkZyYW1lYnVmZmVy
cygxLCAmZmJvKTsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmJvKTsK
LSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFJlbmRlciB0byB0aGUgbGV2ZWxz
IG9mIHRoZSB0ZXh0dXJlIHdpdGggZGlmZmVyZW50IGNvbG9ycwotICAgIGZvciAoR0xpbnQgaSA9
IDA7IGkgPCB0ZXN0TGV2ZWxzOyBpKyspCi0gICAgewotICAgICAgICBnbEZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8y
RCwgdGV4LCBpKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgZ2xV
c2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAgICAgZ2xVbmlmb3JtNGZ2KG1Db2xvckxvY2F0aW9u
LCAxLCBsZXZlbENvbG9ycyArIChpICogNCkpOwotCi0gICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFt
LCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAg
fQotCi0gICAgLy8gVGVzdCB0aGF0IHRoZSBsZXZlbHMgb2YgdGhlIHRleHR1cmUgYXJlIGNvcnJl
Y3QKLSAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdGVzdExldmVsczsgaSsrKQotICAgIHsKLSAg
ICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRU
QUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleCwgaSk7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOwotCi0gICAgICAgIGNvbnN0IEdMZmxvYXQgKmNvbG9yID0gbGV2ZWxDb2xvcnMgKyAo
aSAqIDQpOwotICAgICAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgY29sb3JbMF0gKiAyNTUsIGNv
bG9yWzFdICogMjU1LCBjb2xvclsyXSAqIDI1NSwgY29sb3JbM10gKiAyNTUpOwotICAgIH0KLQot
ICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmYm8pOwotICAgIGdsRGVsZXRlVGV4dHVyZXMo
MSwgJnRleCk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVXNlIHRoaXMg
dG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGlj
aCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4K
LUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRnJhbWVidWZmZXJSZW5kZXJNaXBtYXBUZXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBF
UzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMz
X09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ZyYW1lYnVmZmVyVGVzdC5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvRnJhbWVidWZmZXJUZXN0
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDMwY2E4NDAwOTQuLjAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9GcmFt
ZWJ1ZmZlclRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzc5ICswLDAgQEAKLS8vCi0vLyBD
b3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8v
Ci0vLyBGcmFtZWJ1ZmZlciB0ZXN0czoKLS8vICAgVmFyaW91cyB0ZXN0cyByZWxhdGVkIGZvciBG
cmFtYnVmZmVycy4KLS8vCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi11
c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLWNsYXNzIEZyYW1lYnVmZmVyRm9ybWF0c1Rlc3QgOiBw
dWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBGcmFtZWJ1ZmZlckZvcm1hdHNU
ZXN0KCkgOiBtRnJhbWVidWZmZXIoMCksIG1UZXh0dXJlKDApLCBtUmVuZGVyYnVmZmVyKDApLCBt
UHJvZ3JhbSgwKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAg
c2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAg
ICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7
Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICB9Ci0KLSAgICB2b2lkIGNoZWNr
Qml0Q291bnQoR0x1aW50IGZibywgR0xlbnVtIGNoYW5uZWwsIEdMaW50IG1pbkJpdHMpCi0gICAg
ewotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmJvKTsKLQotICAg
ICAgICBHTGludCBiaXRzID0gMDsKLSAgICAgICAgZ2xHZXRJbnRlZ2VydihjaGFubmVsLCAmYml0
cyk7Ci0KLSAgICAgICAgaWYgKG1pbkJpdHMgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAg
RVhQRUNUX0VRKG1pbkJpdHMsIGJpdHMpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgewotICAgICAgICAgICAgRVhQRUNUX0dFKGJpdHMsIG1pbkJpdHMpOwotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgdm9pZCB0ZXN0Qml0Q291bnRzKEdMdWludCBmYm8sCi0gICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IG1pblJlZEJpdHMsCi0gICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IG1pbkdyZWVuQml0cywKLSAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbWluQmx1ZUJpdHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgIEdMaW50IG1pbkFscGhhQml0cywKLSAgICAgICAgICAg
ICAgICAgICAgICAgR0xpbnQgbWluRGVwdGhCaXRzLAotICAgICAgICAgICAgICAgICAgICAgICBH
TGludCBtaW5TdGVuY2lsQml0cykKLSAgICB7Ci0gICAgICAgIGNoZWNrQml0Q291bnQoZmJvLCBH
TF9SRURfQklUUywgbWluUmVkQml0cyk7Ci0gICAgICAgIGNoZWNrQml0Q291bnQoZmJvLCBHTF9H
UkVFTl9CSVRTLCBtaW5HcmVlbkJpdHMpOwotICAgICAgICBjaGVja0JpdENvdW50KGZibywgR0xf
QkxVRV9CSVRTLCBtaW5CbHVlQml0cyk7Ci0gICAgICAgIGNoZWNrQml0Q291bnQoZmJvLCBHTF9B
TFBIQV9CSVRTLCBtaW5BbHBoYUJpdHMpOwotICAgICAgICBjaGVja0JpdENvdW50KGZibywgR0xf
REVQVEhfQklUUywgbWluRGVwdGhCaXRzKTsKLSAgICAgICAgY2hlY2tCaXRDb3VudChmYm8sIEdM
X1NURU5DSUxfQklUUywgbWluU3RlbmNpbEJpdHMpOwotICAgIH0KLQotICAgIHZvaWQgdGVzdFRl
eHR1cmVGb3JtYXQoR0xlbnVtIGludGVybmFsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgbWluUmVkQml0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50
IG1pbkdyZWVuQml0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IG1pbkJsdWVC
aXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbWluQWxwaGFCaXRzKQotICAg
IHsKLSAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVRleHR1cmUpOwotICAgICAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsKLSAgICAgICAgZ2xUZXhTdG9yYWdlMkRF
WFQoR0xfVEVYVFVSRV8yRCwgMSwgaW50ZXJuYWxGb3JtYXQsIDEsIDEpOwotCi0gICAgICAgIGds
RnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQw
LCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZSwgMCk7Ci0KLSAgICAgICAgdGVzdEJpdENvdW50cyht
RnJhbWVidWZmZXIsIG1pblJlZEJpdHMsIG1pbkdyZWVuQml0cywgbWluQmx1ZUJpdHMsIG1pbkFs
cGhhQml0cywgMCwgMCk7Ci0gICAgfQotCi0gICAgdm9pZCB0ZXN0UmVuZGVyYnVmZmVyTXVsdGlz
YW1wbGVGb3JtYXQoaW50IG1pbkVTVmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGVudW0gYXR0YWNobWVudFR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGludGVybmFsRm9ybWF0KQotICAgIHsK
LSAgICAgICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGlzIGJyb2tl
biBvbiBJbnRlbCBPcGVuR0wKLSAgICAgICAgaWYgKElzSW50ZWwoKSAmJiBnZXRQbGF0Zm9ybVJl
bmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBPcGVu
R0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAg
ICAgICBpbnQgY2xpZW50VmVyc2lvbiA9IGdldENsaWVudE1ham9yVmVyc2lvbigpOwotICAgICAg
ICBpZiAoY2xpZW50VmVyc2lvbiA8IG1pbkVTVmVyc2lvbikKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gQ2hlY2sgdGhhdCBtdWx0aXNhbXBs
ZSBpcyBzdXBwb3J0ZWQgd2l0aCBhdCBsZWFzdCB0d28gc2FtcGxlcyAobWluaW11bSByZXF1aXJl
ZCBpcyAxKQotICAgICAgICBib29sIHN1cHBvcnRzMlNhbXBsZXMgPSBmYWxzZTsKLQotICAgICAg
ICBpZiAoY2xpZW50VmVyc2lvbiA9PSAyKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZXh0
ZW5zaW9uRW5hYmxlZCgiQU5HTEVfZnJhbWVidWZmZXJfbXVsdGlzYW1wbGUiKSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBpbnQgbWF4U2FtcGxlczsKLSAgICAgICAgICAgICAgICBn
bEdldEludGVnZXJ2KEdMX01BWF9TQU1QTEVTX0FOR0xFLCAmbWF4U2FtcGxlcyk7Ci0gICAgICAg
ICAgICAgICAgc3VwcG9ydHMyU2FtcGxlcyA9IG1heFNhbXBsZXMgPj0gMjsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGFzc2Vy
dChjbGllbnRWZXJzaW9uID49IDMpOwotICAgICAgICAgICAgaW50IG1heFNhbXBsZXM7Ci0gICAg
ICAgICAgICBnbEdldEludGVnZXJ2KEdMX01BWF9TQU1QTEVTLCAmbWF4U2FtcGxlcyk7Ci0gICAg
ICAgICAgICBzdXBwb3J0czJTYW1wbGVzID0gbWF4U2FtcGxlcyA+PSAyOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKCFzdXBwb3J0czJTYW1wbGVzKQotICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1SZW5k
ZXJidWZmZXIpOwotICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBt
UmVuZGVyYnVmZmVyKTsKLQotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICAgICAg
Z2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdMRShHTF9SRU5ERVJCVUZGRVIsIDIs
IGludGVybmFsRm9ybWF0LCAxMjgsIDEyOCk7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OwotICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBhdHRh
Y2htZW50VHlwZSwgR0xfUkVOREVSQlVGRkVSLCBtUmVuZGVyYnVmZmVyKTsKLSAgICAgICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCB0ZXN0WmVyb0hlaWdodFJlbmRl
cmJ1ZmZlcigpCi0gICAgewotICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMoMSwgJm1SZW5kZXJi
dWZmZXIpOwotICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtUmVu
ZGVyYnVmZmVyKTsKLSAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZF
UiwgR0xfUkdCQTgsIDEsIDApOwotICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfUkVOREVSQlVGRkVSLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1SZW5kZXJidWZmZXIpOwotICAgICAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBnbEdlbkZyYW1l
YnVmZmVycygxLCAmbUZyYW1lYnVmZmVyKTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcik7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigp
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0KLSAgICAg
ICAgaWYgKG1UZXh0dXJlICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsRGVsZXRlVGV4
dHVyZXMoMSwgJm1UZXh0dXJlKTsKLSAgICAgICAgICAgIG1UZXh0dXJlID0gMDsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChtUmVuZGVyYnVmZmVyICE9IDApCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbVJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgICAg
ICBtUmVuZGVyYnVmZmVyID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtRnJhbWVidWZm
ZXIgIT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwg
Jm1GcmFtZWJ1ZmZlcik7Ci0gICAgICAgICAgICBtRnJhbWVidWZmZXIgPSAwOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKG1Qcm9ncmFtICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGds
RGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgICAgICAgICBtUHJvZ3JhbSA9IDA7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBHTHVpbnQgbUZyYW1lYnVmZmVyOwotICAgIEdMdWludCBtVGV4
dHVyZTsKLSAgICBHTHVpbnQgbVJlbmRlcmJ1ZmZlcjsKLSAgICBHTHVpbnQgbVByb2dyYW07Ci19
OwotCi1URVNUX1AoRnJhbWVidWZmZXJGb3JtYXRzVGVzdCwgUkdCQTQpCi17Ci0gICAgdGVzdFRl
eHR1cmVGb3JtYXQoR0xfUkdCQTQsIDQsIDQsIDQsIDQpOwotfQotCi1URVNUX1AoRnJhbWVidWZm
ZXJGb3JtYXRzVGVzdCwgUkdCNTY1KQotewotICAgIHRlc3RUZXh0dXJlRm9ybWF0KEdMX1JHQjU2
NSwgNSwgNiwgNSwgMCk7Ci19Ci0KLVRFU1RfUChGcmFtZWJ1ZmZlckZvcm1hdHNUZXN0LCBSR0I4
KQotewotICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVu
YWJsZWQoIkdMX09FU19yZ2I4X3JnYmE4IikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3Qgc2tpcHBlZCBkdWUgdG8gbWlzc2luZyBFUzMgb3IgR0xfT0VTX3JnYjhfcmdiYTguIiA8
PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB0ZXN0VGV4dHVyZUZv
cm1hdChHTF9SR0I4X09FUywgOCwgOCwgOCwgMCk7Ci19Ci0KLVRFU1RfUChGcmFtZWJ1ZmZlckZv
cm1hdHNUZXN0LCBCR1JBOCkKLXsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90
ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IHNraXBwZWQgZHVlIHRvIG1pc3NpbmcgR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4
LiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdGVzdFRleHR1
cmVGb3JtYXQoR0xfQkdSQThfRVhULCA4LCA4LCA4LCA4KTsKLX0KLQotVEVTVF9QKEZyYW1lYnVm
ZmVyRm9ybWF0c1Rlc3QsIFJHQkE4KQotewotICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24o
KSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19yZ2I4X3JnYmE4IikpCi0gICAgewot
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBkdWUgdG8gbWlzc2luZyBFUzMgb3Ig
R0xfT0VTX3JnYjhfcmdiYTguIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICB0ZXN0VGV4dHVyZUZvcm1hdChHTF9SR0JBOF9PRVMsIDgsIDgsIDgsIDgpOwotfQot
Ci1URVNUX1AoRnJhbWVidWZmZXJGb3JtYXRzVGVzdCwgUmVuZGVyYnVmZmVyTXVsdGlzYW1wbGVf
REVQVEgxNikKLXsKLSAgICB0ZXN0UmVuZGVyYnVmZmVyTXVsdGlzYW1wbGVGb3JtYXQoMiwgR0xf
REVQVEhfQVRUQUNITUVOVCwgR0xfREVQVEhfQ09NUE9ORU5UMTYpOwotfQotCi1URVNUX1AoRnJh
bWVidWZmZXJGb3JtYXRzVGVzdCwgUmVuZGVyYnVmZmVyTXVsdGlzYW1wbGVfREVQVEgyNCkKLXsK
LSAgICB0ZXN0UmVuZGVyYnVmZmVyTXVsdGlzYW1wbGVGb3JtYXQoMywgR0xfREVQVEhfQVRUQUNI
TUVOVCwgR0xfREVQVEhfQ09NUE9ORU5UMjQpOwotfQotCi1URVNUX1AoRnJhbWVidWZmZXJGb3Jt
YXRzVGVzdCwgUmVuZGVyYnVmZmVyTXVsdGlzYW1wbGVfREVQVEgzMkYpCi17Ci0gICAgaWYgKGdl
dENsaWVudE1ham9yVmVyc2lvbigpIDwgMykKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAi
VGVzdCBza2lwcGVkIGR1ZSB0byBtaXNzaW5nIEVTMy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIHRlc3RSZW5kZXJidWZmZXJNdWx0aXNhbXBsZUZvcm1hdCgz
LCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9ERVBUSF9DT01QT05FTlQzMkYpOwotfQotCi1URVNU
X1AoRnJhbWVidWZmZXJGb3JtYXRzVGVzdCwgUmVuZGVyYnVmZmVyTXVsdGlzYW1wbGVfREVQVEgy
NF9TVEVOQ0lMOCkKLXsKLSAgICB0ZXN0UmVuZGVyYnVmZmVyTXVsdGlzYW1wbGVGb3JtYXQoMywg
R0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBHTF9ERVBUSDI0X1NURU5DSUw4KTsKLX0KLQot
VEVTVF9QKEZyYW1lYnVmZmVyRm9ybWF0c1Rlc3QsIFJlbmRlcmJ1ZmZlck11bHRpc2FtcGxlX0RF
UFRIMzJGX1NURU5DSUw4KQotewotICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMp
Ci0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBkdWUgdG8gbWlzc2lu
ZyBFUzMuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB0ZXN0
UmVuZGVyYnVmZmVyTXVsdGlzYW1wbGVGb3JtYXQoMywgR0xfREVQVEhfU1RFTkNJTF9BVFRBQ0hN
RU5ULCBHTF9ERVBUSDMyRl9TVEVOQ0lMOCk7Ci19Ci0KLVRFU1RfUChGcmFtZWJ1ZmZlckZvcm1h
dHNUZXN0LCBSZW5kZXJidWZmZXJNdWx0aXNhbXBsZV9TVEVOQ0lMX0lOREVYOCkKLXsKLSAgICAv
LyBUT0RPKGdlb2ZmbGFuZyk6IEZpZ3VyZSBvdXQgaG93IHRvIHN1cHBvcnQgR0xTVEVOQ0lMX0lO
REVYOCBvbiBkZXNrdG9wIEdMCi0gICAgaWYgKEdldFBhcmFtKCkuZ2V0UmVuZGVyZXIoKSA9PSBF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCi0gICAgewotICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBEZXNrdG9wIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHRlc3RSZW5kZXJidWZmZXJNdWx0aXNhbXBs
ZUZvcm1hdCgyLCBHTF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1NURU5DSUxfSU5ERVg4KTsKLX0K
LQotLy8gVGVzdCB0aGF0IGJpbmRpbmcgYW4gaW5jb21wbGV0ZSBjdWJlIG1hcCBpcyByZWplY3Rl
ZCBieSBBTkdMRS4KLVRFU1RfUChGcmFtZWJ1ZmZlckZvcm1hdHNUZXN0LCBJbmNvbXBsZXRlQ3Vi
ZU1hcCkKLXsKLSAgICAvLyBGaXJzdCBtYWtlIGEgY29tcGxldGUgQ3ViZU1hcC4KLSAgICBnbEdl
blRleHR1cmVzKDEsICZtVGV4dHVyZSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0NV
QkVfTUFQLCBtVGV4dHVyZSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBf
UE9TSVRJVkVfWCwgMCwgR0xfUkdCQSwgOCwgOCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwKLSAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSwgMCwgR0xfUkdCQSwgOCwgOCwgMCwgR0xfUkdCQSwgR0xf
VU5TSUdORURfQllURSwKLSAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgZ2xUZXhJbWFn
ZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiwgMCwgR0xfUkdCQSwgOCwgOCwgMCwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0g
ICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwgMCwgR0xfUkdC
QSwgOCwgOCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAgICAgICAg
bnVsbHB0cik7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVf
WSwgMCwgR0xfUkdCQSwgOCwgOCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAg
ICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9N
QVBfTkVHQVRJVkVfWiwgMCwgR0xfUkdCQSwgOCwgOCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwKLSAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfQ1VCRV9NQVAsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0g
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIEdMX1RFWFRVUkVfTUFHX0ZJ
TFRFUiwgR0xfTkVBUkVTVCk7Ci0KLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1F
QlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElW
RV9YLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbVRleHR1cmUsIDApOwotCi0gICAgLy8g
VmVyaWZ5IHRoZSBmcmFtZWJ1ZmZlciBpcyBjb21wbGV0ZS4KLSAgICBBU1NFUlRfR0xFTlVNX0VR
KEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJB
TUVCVUZGRVIpKTsKLQotICAgIC8vIE1ha2UgdGhlIEN1YmVNYXAgY3ViZS1pbmNvbXBsZXRlLgot
ICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1osIDAsIEdMX1JH
QkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAgICAg
ICAgbnVsbHB0cik7Ci0KLSAgICAvLyBWZXJpZnkgdGhlIGZyYW1lYnVmZmVyIGlzIGluY29tcGxl
dGUuCi0gICAgQVNTRVJUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFD
SE1FTlQsCi0gICAgICAgICAgICAgICAgICAgICBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xf
RlJBTUVCVUZGRVIpKTsKLQotICAgIC8vIFZlcmlmeSBkcmF3aW5nIHdpdGggdGhlIGluY29tcGxl
dGUgZnJhbWVidWZmZXIgcHJvZHVjZXMgYSBHTCBlcnJvcgotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
ICZ2cyA9ICJhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsgdm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlv
biA9IHBvc2l0aW9uOyB9IjsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmcHMgPSAidm9pZCBtYWlu
KCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEsIDAsIDAsIDEpOyB9IjsKLSAgICBtUHJvZ3JhbSA9
IENvbXBpbGVQcm9ncmFtKHZzLCBwcyk7Ci0gICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7Ci0g
ICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEFTU0VSVF9HTF9F
UlJPUihHTF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTik7Ci19Ci0KLS8vIFRlc3QgdGhh
dCBhIHJlbmRlcmJ1ZmZlciB3aXRoIHplcm8gaGVpZ2h0IGJ1dCBub256ZXJvIHdpZHRoIGlzIGhh
bmRsZWQgd2l0aG91dCBjcmFzaGVzL2Fzc2VydHMuCi1URVNUX1AoRnJhbWVidWZmZXJGb3JtYXRz
VGVzdCwgWmVyb0hlaWdodFJlbmRlcmJ1ZmZlcikKLXsKLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JW
ZXJzaW9uKCkgPCAzKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQg
ZHVlIHRvIG1pc3NpbmcgRVMzIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICB0ZXN0WmVyb0hlaWdodFJlbmRlcmJ1ZmZlcigpOwotfQotCi0vLyBVc2UgdGhpcyB0
byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNo
IEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UKLS8vIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5z
dC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRnJhbWVidWZmZXJGb3JtYXRzVGVzdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMy
X0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19P
UEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKLQotY2xhc3MgRnJhbWVidWZmZXJJbnZh
bGlkYXRlVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIEZyYW1l
YnVmZmVySW52YWxpZGF0ZVRlc3QoKSA6IG1GcmFtZWJ1ZmZlcigwKSwgbVJlbmRlcmJ1ZmZlcigw
KSB7fQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRl
c3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1GcmFtZWJ1ZmZl
cik7Ci0gICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmbVJlbmRlcmJ1ZmZlcik7Ci0gICAg
fQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0
ZUZyYW1lYnVmZmVycygxLCAmbUZyYW1lYnVmZmVyKTsKLSAgICAgICAgZ2xEZWxldGVSZW5kZXJi
dWZmZXJzKDEsICZtUmVuZGVyYnVmZmVyKTsKLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigp
OwotICAgIH0KLQotICAgIEdMdWludCBtRnJhbWVidWZmZXI7Ci0gICAgR0x1aW50IG1SZW5kZXJi
dWZmZXI7Ci19OwotCi0vLyBDb3ZlcnMgaW52YWxpZGF0aW5nIGFuIGluY29tcGxldGUgZnJhbWVi
dWZmZXIuIFRoaXMgc2hvdWxkIGJlIGEgbm8tb3AsIGJ1dCBzaG91bGQgbm90IGVycm9yLgotVEVT
VF9QKEZyYW1lYnVmZmVySW52YWxpZGF0ZVRlc3QsIEluY29tcGxldGUpCi17Ci0gICAgZ2xCaW5k
RnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcik7Ci0gICAgZ2xCaW5kUmVu
ZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgbVJlbmRlcmJ1ZmZlcik7Ci0gICAgZ2xGcmFtZWJ1
ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1JFTkRFUkJVRkZFUiwgbVJlbmRlcmJ1ZmZlcik7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9G
UkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQsCi0gICAgICAgICAgICAgICAgICAgICBn
bENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLQotICAgIHN0ZDo6dmVj
dG9yPEdMZW51bT4gYXR0YWNobWVudHM7Ci0gICAgYXR0YWNobWVudHMucHVzaF9iYWNrKEdMX0NP
TE9SX0FUVEFDSE1FTlQwKTsKLQotICAgIGdsSW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCAxLCBhdHRhY2htZW50cy5kYXRhKCkpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OwotfQotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKEZyYW1lYnVmZmVySW52YWxpZGF0ZVRlc3Qs
IEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9HTFNMVGVzdC5jcHAg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvR0xTTFRlc3QuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDYxMmRhMy4uMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0dMU0xUZXN0
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NDMgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAy
MDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1
ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLSNpbmNsdWRlICJsaWJBTkdMRS9Db250ZXh0
LmgiCi0jaW5jbHVkZSAibGliQU5HTEUvUHJvZ3JhbS5oIgotI2luY2x1ZGUgInRlc3RfdXRpbHMv
Z2xfcmFpaS5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1j
bGFzcyBHTFNMVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIEdM
U0xUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7Ci0gICAgICAgIHNl
dFdpbmRvd0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAg
ICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwot
ICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lk
IFNldFVwKCkKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBt
U2ltcGxlVlNTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIGF0
dHJpYnV0ZSB2ZWM0IGlucHV0QXR0cmlidXRlOwotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IGlucHV0QXR0cmlidXRl
OwotICAgICAgICAgICAgfQotICAgICAgICApOwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nIEdl
bmVyYXRlVmFyeWluZ1R5cGUoR0xpbnQgdmVjdG9yU2l6ZSkKLSAgICB7Ci0gICAgICAgIGNoYXIg
dmFyeWluZ1R5cGVbMTBdOwotCi0gICAgICAgIGlmICh2ZWN0b3JTaXplID09IDEpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHNwcmludGYodmFyeWluZ1R5cGUsICJmbG9hdCIpOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgc3ByaW50Zih2YXJ5aW5nVHlw
ZSwgInZlYyVkIiwgdmVjdG9yU2l6ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gc3Rk
OjpzdHJpbmcodmFyeWluZ1R5cGUpOwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nIEdlbmVyYXRl
VmVjdG9yVmFyeWluZ0RlY2xhcmF0aW9uKEdMaW50IHZlY3RvclNpemUsIEdMaW50IGFycmF5U2l6
ZSwgR0xpbnQgaWQpCi0gICAgewotICAgICAgICBjaGFyIGJ1ZmZbMTAwXTsKLQotICAgICAgICBp
ZiAoYXJyYXlTaXplID09IDEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwcmludGYoYnVmZiwg
InZhcnlpbmcgJXMgdiVkO1xuIiwgR2VuZXJhdGVWYXJ5aW5nVHlwZSh2ZWN0b3JTaXplKS5jX3N0
cigpLCBpZCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAg
ICBzcHJpbnRmKGJ1ZmYsICJ2YXJ5aW5nICVzIHYlZFslZF07XG4iLCBHZW5lcmF0ZVZhcnlpbmdU
eXBlKHZlY3RvclNpemUpLmNfc3RyKCksIGlkLCBhcnJheVNpemUpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZmYpOwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5n
IEdlbmVyYXRlVmVjdG9yVmFyeWluZ1NldHRpbmdDb2RlKEdMaW50IHZlY3RvclNpemUsIEdMaW50
IGFycmF5U2l6ZSwgR0xpbnQgaWQpCi0gICAgewotICAgICAgICBzdGQ6OnN0cmluZyByZXR1cm5T
dHJpbmc7Ci0gICAgICAgIGNoYXIgYnVmZlsxMDBdOwotCi0gICAgICAgIGlmIChhcnJheVNpemUg
PT0gMSkKLSAgICAgICAgewotICAgICAgICAgICAgc3ByaW50ZihidWZmLCAiXHQgdiVkID0gJXMo
MS4wKTtcbiIsIGlkLCBHZW5lcmF0ZVZhcnlpbmdUeXBlKHZlY3RvclNpemUpLmNfc3RyKCkpOwot
ICAgICAgICAgICAgcmV0dXJuU3RyaW5nICs9IGJ1ZmY7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz
ZQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFycmF5U2l6ZTsg
aSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZiwgIlx0IHYl
ZFslZF0gPSAlcygxLjApO1xuIiwgaWQsIGksIEdlbmVyYXRlVmFyeWluZ1R5cGUodmVjdG9yU2l6
ZSkuY19zdHIoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuU3RyaW5nICs9IGJ1ZmY7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcmV0dXJuU3RyaW5nOwotICAg
IH0KLQotICAgIHN0ZDo6c3RyaW5nIEdlbmVyYXRlVmVjdG9yVmFyeWluZ1VzZUNvZGUoR0xpbnQg
YXJyYXlTaXplLCBHTGludCBpZCkKLSAgICB7Ci0gICAgICAgIGlmIChhcnJheVNpemUgPT0gMSkK
LSAgICAgICAgewotICAgICAgICAgICAgY2hhciBidWZmWzEwMF07Ci0gICAgICAgICAgICBzcHJp
bnRmKGJ1ZmYsICJ2JWQgKyAiLCBpZCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmco
YnVmZik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBz
dGQ6OnN0cmluZyByZXR1cm5TdHJpbmc7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGFycmF5U2l6ZTsgaSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNoYXIgYnVm
ZlsxMDBdOwotICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZiwgInYlZFslZF0gKyAiLCBpZCwg
aSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuU3RyaW5nICs9IGJ1ZmY7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICByZXR1cm4gcmV0dXJuU3RyaW5nOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgdm9pZCBHZW5lcmF0ZUdMU0xXaXRoVmFyeWluZ3MoR0xpbnQgZmxvYXRDb3VudCwgR0xpbnQg
ZmxvYXRBcnJheUNvdW50LCBHTGludCB2ZWMyQ291bnQsIEdMaW50IHZlYzJBcnJheUNvdW50LCBH
TGludCB2ZWMzQ291bnQsIEdMaW50IHZlYzNBcnJheUNvdW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMaW50IHZlYzRDb3VudCwgR0xpbnQgdmVjNEFycmF5Q291bnQsIGJv
b2wgdXNlRnJhZ0Nvb3JkLCBib29sIHVzZVBvaW50Q29vcmQsIGJvb2wgdXNlUG9pbnRTaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKiBmcmFnbWVudFNo
YWRlciwgc3RkOjpzdHJpbmcqIHZlcnRleFNoYWRlcikKLSAgICB7Ci0gICAgICAgIC8vIEdlbmVy
YXRlIGEgc3RyaW5nIGRlY2xhcmluZyB0aGUgdmFyeWluZ3MsIHRvIHNoYXJlIGJldHdlZW4gdGhl
IGZyYWdtZW50IHNoYWRlciBhbmQgdGhlIHZlcnRleCBzaGFkZXIuCi0gICAgICAgIHN0ZDo6c3Ry
aW5nIHZhcnlpbmdEZWNsYXJhdGlvbjsKLQotICAgICAgICB1bnNpZ25lZCBpbnQgdmFyeWluZ0Nv
dW50ID0gMDsKLQotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgZmxvYXRDb3VudDsgaSsr
KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXJ5aW5nRGVjbGFyYXRpb24gKz0gR2VuZXJhdGVW
ZWN0b3JWYXJ5aW5nRGVjbGFyYXRpb24oMSwgMSwgdmFyeWluZ0NvdW50KTsKLSAgICAgICAgICAg
IHZhcnlpbmdDb3VudCArPSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChHTGludCBpID0g
MDsgaSA8IGZsb2F0QXJyYXlDb3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXJ5
aW5nRGVjbGFyYXRpb24gKz0gR2VuZXJhdGVWZWN0b3JWYXJ5aW5nRGVjbGFyYXRpb24oMSwgMiwg
dmFyeWluZ0NvdW50KTsKLSAgICAgICAgICAgIHZhcnlpbmdDb3VudCArPSAxOwotICAgICAgICB9
Ci0KLSAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IHZlYzJDb3VudDsgaSsrKQotICAgICAg
ICB7Ci0gICAgICAgICAgICB2YXJ5aW5nRGVjbGFyYXRpb24gKz0gR2VuZXJhdGVWZWN0b3JWYXJ5
aW5nRGVjbGFyYXRpb24oMiwgMSwgdmFyeWluZ0NvdW50KTsKLSAgICAgICAgICAgIHZhcnlpbmdD
b3VudCArPSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChHTGludCBpID0gMDsgaSA8IHZl
YzJBcnJheUNvdW50OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhcnlpbmdEZWNsYXJh
dGlvbiArPSBHZW5lcmF0ZVZlY3RvclZhcnlpbmdEZWNsYXJhdGlvbigyLCAyLCB2YXJ5aW5nQ291
bnQpOwotICAgICAgICAgICAgdmFyeWluZ0NvdW50ICs9IDE7Ci0gICAgICAgIH0KLQotICAgICAg
ICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjM0NvdW50OyBpKyspCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHZhcnlpbmdEZWNsYXJhdGlvbiArPSBHZW5lcmF0ZVZlY3RvclZhcnlpbmdEZWNsYXJh
dGlvbigzLCAxLCB2YXJ5aW5nQ291bnQpOwotICAgICAgICAgICAgdmFyeWluZ0NvdW50ICs9IDE7
Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjM0FycmF5Q291
bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgdmFyeWluZ0RlY2xhcmF0aW9uICs9IEdl
bmVyYXRlVmVjdG9yVmFyeWluZ0RlY2xhcmF0aW9uKDMsIDIsIHZhcnlpbmdDb3VudCk7Ci0gICAg
ICAgICAgICB2YXJ5aW5nQ291bnQgKz0gMTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoR0xp
bnQgaSA9IDA7IGkgPCB2ZWM0Q291bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgdmFy
eWluZ0RlY2xhcmF0aW9uICs9IEdlbmVyYXRlVmVjdG9yVmFyeWluZ0RlY2xhcmF0aW9uKDQsIDEs
IHZhcnlpbmdDb3VudCk7Ci0gICAgICAgICAgICB2YXJ5aW5nQ291bnQgKz0gMTsKLSAgICAgICAg
fQotCi0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCB2ZWM0QXJyYXlDb3VudDsgaSsrKQot
ICAgICAgICB7Ci0gICAgICAgICAgICB2YXJ5aW5nRGVjbGFyYXRpb24gKz0gR2VuZXJhdGVWZWN0
b3JWYXJ5aW5nRGVjbGFyYXRpb24oNCwgMiwgdmFyeWluZ0NvdW50KTsKLSAgICAgICAgICAgIHZh
cnlpbmdDb3VudCArPSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gR2VuZXJhdGUgdGhlIHZl
cnRleCBzaGFkZXIKLSAgICAgICAgdmVydGV4U2hhZGVyLT5jbGVhcigpOwotICAgICAgICB2ZXJ0
ZXhTaGFkZXItPmFwcGVuZCh2YXJ5aW5nRGVjbGFyYXRpb24pOwotICAgICAgICB2ZXJ0ZXhTaGFk
ZXItPmFwcGVuZCgiXG52b2lkIG1haW4oKVxue1xuIik7Ci0KLSAgICAgICAgdW5zaWduZWQgaW50
IGN1cnJlbnRWU1ZhcnlpbmcgPSAwOwotCi0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBm
bG9hdENvdW50OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZlcnRleFNoYWRlci0+YXBw
ZW5kKEdlbmVyYXRlVmVjdG9yVmFyeWluZ1NldHRpbmdDb2RlKDEsIDEsIGN1cnJlbnRWU1Zhcnlp
bmcpKTsKLSAgICAgICAgICAgIGN1cnJlbnRWU1ZhcnlpbmcgKz0gMTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBmbG9hdEFycmF5Q291bnQ7IGkrKykKLSAgICAg
ICAgewotICAgICAgICAgICAgdmVydGV4U2hhZGVyLT5hcHBlbmQoR2VuZXJhdGVWZWN0b3JWYXJ5
aW5nU2V0dGluZ0NvZGUoMSwgMiwgY3VycmVudFZTVmFyeWluZykpOwotICAgICAgICAgICAgY3Vy
cmVudFZTVmFyeWluZyArPSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChHTGludCBpID0g
MDsgaSA8IHZlYzJDb3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICB2ZXJ0ZXhTaGFk
ZXItPmFwcGVuZChHZW5lcmF0ZVZlY3RvclZhcnlpbmdTZXR0aW5nQ29kZSgyLCAxLCBjdXJyZW50
VlNWYXJ5aW5nKSk7Ci0gICAgICAgICAgICBjdXJyZW50VlNWYXJ5aW5nICs9IDE7Ci0gICAgICAg
IH0KLQotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjMkFycmF5Q291bnQ7IGkrKykK
LSAgICAgICAgewotICAgICAgICAgICAgdmVydGV4U2hhZGVyLT5hcHBlbmQoR2VuZXJhdGVWZWN0
b3JWYXJ5aW5nU2V0dGluZ0NvZGUoMiwgMiwgY3VycmVudFZTVmFyeWluZykpOwotICAgICAgICAg
ICAgY3VycmVudFZTVmFyeWluZyArPSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChHTGlu
dCBpID0gMDsgaSA8IHZlYzNDb3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICB2ZXJ0
ZXhTaGFkZXItPmFwcGVuZChHZW5lcmF0ZVZlY3RvclZhcnlpbmdTZXR0aW5nQ29kZSgzLCAxLCBj
dXJyZW50VlNWYXJ5aW5nKSk7Ci0gICAgICAgICAgICBjdXJyZW50VlNWYXJ5aW5nICs9IDE7Ci0g
ICAgICAgIH0KLQotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjM0FycmF5Q291bnQ7
IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgdmVydGV4U2hhZGVyLT5hcHBlbmQoR2VuZXJh
dGVWZWN0b3JWYXJ5aW5nU2V0dGluZ0NvZGUoMywgMiwgY3VycmVudFZTVmFyeWluZykpOwotICAg
ICAgICAgICAgY3VycmVudFZTVmFyeWluZyArPSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9y
IChHTGludCBpID0gMDsgaSA8IHZlYzRDb3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAg
ICB2ZXJ0ZXhTaGFkZXItPmFwcGVuZChHZW5lcmF0ZVZlY3RvclZhcnlpbmdTZXR0aW5nQ29kZSg0
LCAxLCBjdXJyZW50VlNWYXJ5aW5nKSk7Ci0gICAgICAgICAgICBjdXJyZW50VlNWYXJ5aW5nICs9
IDE7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjNEFycmF5
Q291bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgdmVydGV4U2hhZGVyLT5hcHBlbmQo
R2VuZXJhdGVWZWN0b3JWYXJ5aW5nU2V0dGluZ0NvZGUoNCwgMiwgY3VycmVudFZTVmFyeWluZykp
OwotICAgICAgICAgICAgY3VycmVudFZTVmFyeWluZyArPSAxOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKHVzZVBvaW50U2l6ZSkKLSAgICAgICAgewotICAgICAgICAgICAgdmVydGV4U2hhZGVy
LT5hcHBlbmQoImdsX1BvaW50U2l6ZSA9IDEuMDtcbiIpOwotICAgICAgICB9Ci0KLSAgICAgICAg
dmVydGV4U2hhZGVyLT5hcHBlbmQoIn1cbiIpOwotCi0gICAgICAgIC8vIEdlbmVyYXRlIHRoZSBm
cmFnbWVudCBzaGFkZXIKLSAgICAgICAgZnJhZ21lbnRTaGFkZXItPmNsZWFyKCk7Ci0gICAgICAg
IGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIpOwotICAg
ICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKHZhcnlpbmdEZWNsYXJhdGlvbik7Ci0gICAgICAg
IGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoIlxudm9pZCBtYWluKCkgXG57IFxuXHR2ZWM0IHJldENv
bG9yID0gdmVjNCgwLDAsMCwwKTtcbiIpOwotCi0gICAgICAgIHVuc2lnbmVkIGludCBjdXJyZW50
RlNWYXJ5aW5nID0gMDsKLQotICAgICAgICAvLyBNYWtlIHVzZSBvZiB0aGUgZmxvYXQgdmFyeWlu
Z3MKLSAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZCgiXHRyZXRDb2xvciArPSB2ZWM0KCIp
OwotCi0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCBmbG9hdENvdW50OyBpKyspCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoR2VuZXJhdGVWZWN0b3JW
YXJ5aW5nVXNlQ29kZSgxLCBjdXJyZW50RlNWYXJ5aW5nKSk7Ci0gICAgICAgICAgICBjdXJyZW50
RlNWYXJ5aW5nICs9IDE7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBp
IDwgZmxvYXRBcnJheUNvdW50OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZyYWdtZW50
U2hhZGVyLT5hcHBlbmQoR2VuZXJhdGVWZWN0b3JWYXJ5aW5nVXNlQ29kZSgyLCBjdXJyZW50RlNW
YXJ5aW5nKSk7Ci0gICAgICAgICAgICBjdXJyZW50RlNWYXJ5aW5nICs9IDE7Ci0gICAgICAgIH0K
LQotICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKCIwLjAsIDAuMCwgMC4wLCAwLjApO1xu
Iik7Ci0KLSAgICAgICAgLy8gTWFrZSB1c2Ugb2YgdGhlIHZlYzIgdmFyeWluZ3MKLSAgICAgICAg
ZnJhZ21lbnRTaGFkZXItPmFwcGVuZCgiXHRyZXRDb2xvciArPSB2ZWM0KCIpOwotCi0gICAgICAg
IGZvciAoR0xpbnQgaSA9IDA7IGkgPCB2ZWMyQ291bnQ7IGkrKykKLSAgICAgICAgewotICAgICAg
ICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZChHZW5lcmF0ZVZlY3RvclZhcnlpbmdVc2VDb2Rl
KDEsIGN1cnJlbnRGU1ZhcnlpbmcpKTsKLSAgICAgICAgICAgIGN1cnJlbnRGU1ZhcnlpbmcgKz0g
MTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCB2ZWMyQXJyYXlD
b3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5k
KEdlbmVyYXRlVmVjdG9yVmFyeWluZ1VzZUNvZGUoMiwgY3VycmVudEZTVmFyeWluZykpOwotICAg
ICAgICAgICAgY3VycmVudEZTVmFyeWluZyArPSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgZnJh
Z21lbnRTaGFkZXItPmFwcGVuZCgidmVjMigwLjAsIDAuMCksIDAuMCwgMC4wKTtcbiIpOwotCi0g
ICAgICAgIC8vIE1ha2UgdXNlIG9mIHRoZSB2ZWMzIHZhcnlpbmdzCi0gICAgICAgIGZyYWdtZW50
U2hhZGVyLT5hcHBlbmQoIlx0cmV0Q29sb3IgKz0gdmVjNCgiKTsKLQotICAgICAgICBmb3IgKEdM
aW50IGkgPSAwOyBpIDwgdmVjM0NvdW50OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZy
YWdtZW50U2hhZGVyLT5hcHBlbmQoR2VuZXJhdGVWZWN0b3JWYXJ5aW5nVXNlQ29kZSgxLCBjdXJy
ZW50RlNWYXJ5aW5nKSk7Ci0gICAgICAgICAgICBjdXJyZW50RlNWYXJ5aW5nICs9IDE7Ci0gICAg
ICAgIH0KLQotICAgICAgICBmb3IgKEdMaW50IGkgPSAwOyBpIDwgdmVjM0FycmF5Q291bnQ7IGkr
KykKLSAgICAgICAgewotICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZChHZW5lcmF0
ZVZlY3RvclZhcnlpbmdVc2VDb2RlKDIsIGN1cnJlbnRGU1ZhcnlpbmcpKTsKLSAgICAgICAgICAg
IGN1cnJlbnRGU1ZhcnlpbmcgKz0gMTsKLSAgICAgICAgfQotCi0gICAgICAgIGZyYWdtZW50U2hh
ZGVyLT5hcHBlbmQoInZlYzMoMC4wLCAwLjAsIDAuMCksIDAuMCk7XG4iKTsKLQotICAgICAgICAv
LyBNYWtlIHVzZSBvZiB0aGUgdmVjNCB2YXJ5aW5ncwotICAgICAgICBmcmFnbWVudFNoYWRlci0+
YXBwZW5kKCJcdHJldENvbG9yICs9ICIpOwotCi0gICAgICAgIGZvciAoR0xpbnQgaSA9IDA7IGkg
PCB2ZWM0Q291bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXIt
PmFwcGVuZChHZW5lcmF0ZVZlY3RvclZhcnlpbmdVc2VDb2RlKDEsIGN1cnJlbnRGU1Zhcnlpbmcp
KTsKLSAgICAgICAgICAgIGN1cnJlbnRGU1ZhcnlpbmcgKz0gMTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGZvciAoR0xpbnQgaSA9IDA7IGkgPCB2ZWM0QXJyYXlDb3VudDsgaSsrKQotICAgICAgICB7
Ci0gICAgICAgICAgICBmcmFnbWVudFNoYWRlci0+YXBwZW5kKEdlbmVyYXRlVmVjdG9yVmFyeWlu
Z1VzZUNvZGUoMiwgY3VycmVudEZTVmFyeWluZykpOwotICAgICAgICAgICAgY3VycmVudEZTVmFy
eWluZyArPSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgZnJhZ21lbnRTaGFkZXItPmFwcGVuZCgi
dmVjNCgwLjAsIDAuMCwgMC4wLCAwLjApO1xuIik7Ci0KLSAgICAgICAgLy8gU2V0IGdsX0ZyYWdD
b2xvciwgYW5kIHVzZSBzcGVjaWFsIHZhcmlhYmxlcyBpZiByZXF1ZXN0ZWQKLSAgICAgICAgZnJh
Z21lbnRTaGFkZXItPmFwcGVuZCgiXHRnbF9GcmFnQ29sb3IgPSByZXRDb2xvciIpOwotICAgICAg
ICAKLSAgICAgICAgaWYgKHVzZUZyYWdDb29yZCkKLSAgICAgICAgewotICAgICAgICAgICAgZnJh
Z21lbnRTaGFkZXItPmFwcGVuZCgiICsgZ2xfRnJhZ0Nvb3JkIik7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAodXNlUG9pbnRDb29yZCkKLSAgICAgICAgewotICAgICAgICAgICAgZnJhZ21lbnRT
aGFkZXItPmFwcGVuZCgiICsgdmVjNChnbF9Qb2ludENvb3JkLCAwLjAsIDAuMCkiKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZyYWdtZW50U2hhZGVyLT5hcHBlbmQoIjtcbn0iKTsKLSAgICB9Ci0K
LSAgICB2b2lkIFZhcnlpbmdUZXN0QmFzZShHTGludCBmbG9hdENvdW50LCBHTGludCBmbG9hdEFy
cmF5Q291bnQsIEdMaW50IHZlYzJDb3VudCwgR0xpbnQgdmVjMkFycmF5Q291bnQsIEdMaW50IHZl
YzNDb3VudCwgR0xpbnQgdmVjM0FycmF5Q291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgdmVjNENvdW50LCBHTGludCB2ZWM0QXJyYXlDb3VudCwgYm9vbCB1c2VGcmFnQ29vcmQs
IGJvb2wgdXNlUG9pbnRDb29yZCwgYm9vbCB1c2VQb2ludFNpemUsIGJvb2wgZXhwZWN0U3VjY2Vz
cykKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlOwotICAg
ICAgICBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2U7Ci0KLSAgICAgICAgR2VuZXJhdGVH
TFNMV2l0aFZhcnlpbmdzKGZsb2F0Q291bnQsIGZsb2F0QXJyYXlDb3VudCwgdmVjMkNvdW50LCB2
ZWMyQXJyYXlDb3VudCwgdmVjM0NvdW50LCB2ZWMzQXJyYXlDb3VudCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZlYzRDb3VudCwgdmVjNEFycmF5Q291bnQsIHVzZUZyYWdDb29y
ZCwgdXNlUG9pbnRDb29yZCwgdXNlUG9pbnRTaXplLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJmZyYWdtZW50U2hhZGVyU291cmNlLCAmdmVydGV4U2hhZGVyU291cmNlKTsKLQot
ICAgICAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJj
ZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotCi0gICAgICAgIGlmIChleHBlY3RTdWNjZXNzKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgRVhQRUNUX0VRKDB1LCBwcm9n
cmFtKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgQ29tcGlsZUdMU0xXaXRoVW5pZm9y
bXNBbmRTYW1wbGVycyhHTGludCB2ZXJ0ZXhVbmlmb3JtQ291bnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaW50IGZyYWdtZW50VW5pZm9ybUNvdW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGludCB2ZXJ0ZXhT
YW1wbGVyc0NvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTGludCBmcmFnbWVudFNhbXBsZXJzQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJvb2wgZXhwZWN0U3VjY2VzcykKLSAgICB7Ci0gICAgICAgIHN0
ZDo6c3RyaW5nc3RyZWFtIHZlcnRleFNoYWRlcjsKLSAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0g
ZnJhZ21lbnRTaGFkZXI7Ci0KLSAgICAgICAgLy8gR2VuZXJhdGUgdGhlIHZlcnRleCBzaGFkZXIK
LSAgICAgICAgdmVydGV4U2hhZGVyIDw8ICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiI7Ci0K
LSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2ZXJ0ZXhVbmlmb3JtQ291bnQ7IGkrKykKLSAg
ICAgICAgewotICAgICAgICAgICAgdmVydGV4U2hhZGVyIDw8ICJ1bmlmb3JtIHZlYzQgdiIgPDwg
aSA8PCAiO1xuIjsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmVy
dGV4U2FtcGxlcnNDb3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICB2ZXJ0ZXhTaGFk
ZXIgPDwgInVuaWZvcm0gc2FtcGxlcjJEIHMiIDw8IGkgPDwgIjtcbiI7Ci0gICAgICAgIH0KLQot
ICAgICAgICB2ZXJ0ZXhTaGFkZXIgPDwgInZvaWQgbWFpbigpXG57XG4iOwotCi0gICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgdmVydGV4VW5pZm9ybUNvdW50OyBpKyspCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHZlcnRleFNoYWRlciA8PCAiICAgIGdsX1Bvc2l0aW9uICs9ICB2IiA8PCBpIDw8
ICI7XG4iOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2ZXJ0ZXhT
YW1wbGVyc0NvdW50OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZlcnRleFNoYWRlciA8
PCAiICAgIGdsX1Bvc2l0aW9uICs9ICB0ZXh0dXJlMkQocyIgPDwgaSA8PCAiLCB2ZWMyKDAuMCwg
MC4wKSk7XG4iOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHZlcnRleFVuaWZvcm1Db3VudCA9
PSAwICYmIHZlcnRleFNhbXBsZXJzQ291bnQgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAg
dmVydGV4U2hhZGVyIDw8ICIgICBnbF9Qb3NpdGlvbiA9IHZlYzQoMC4wKTtcbiI7Ci0gICAgICAg
IH0KLQotICAgICAgICB2ZXJ0ZXhTaGFkZXIgPDwgIn1cbiI7Ci0KLSAgICAgICAgLy8gR2VuZXJh
dGUgdGhlIGZyYWdtZW50IHNoYWRlcgotICAgICAgICBmcmFnbWVudFNoYWRlciA8PCAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iOwotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJh
Z21lbnRVbmlmb3JtQ291bnQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAgZnJhZ21lbnRT
aGFkZXIgPDwgInVuaWZvcm0gdmVjNCB2IiA8PCBpIDw8ICI7XG4iOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFnbWVudFNhbXBsZXJzQ291bnQ7IGkrKykKLSAg
ICAgICAgewotICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXIgPDwgInVuaWZvcm0gc2FtcGxlcjJE
IHMiIDw8IGkgPDwgIjtcbiI7Ci0gICAgICAgIH0KLQotICAgICAgICBmcmFnbWVudFNoYWRlciA8
PCAidm9pZCBtYWluKClcbntcbiI7Ci0KLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFn
bWVudFVuaWZvcm1Db3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBmcmFnbWVudFNo
YWRlciA8PCAiICAgIGdsX0ZyYWdDb2xvciArPSAgdiIgPDwgaSA8PCAiO1xuIjsKLSAgICAgICAg
fQotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZnJhZ21lbnRTYW1wbGVyc0NvdW50OyBp
KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZyYWdtZW50U2hhZGVyIDw8ICIgICAgZ2xfRnJh
Z0NvbG9yICs9ICB0ZXh0dXJlMkQocyIgPDwgaSA8PCAiLCB2ZWMyKDAuMCwgMC4wKSk7XG4iOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGZyYWdtZW50VW5pZm9ybUNvdW50ID09IDAgJiYgZnJh
Z21lbnRTYW1wbGVyc0NvdW50ID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZyYWdtZW50
U2hhZGVyIDw8ICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApO1xu
IjsKLSAgICAgICAgfQotCi0gICAgICAgIGZyYWdtZW50U2hhZGVyIDw8ICJ9XG4iOwotCi0gICAg
ICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyLnN0cigpLCBm
cmFnbWVudFNoYWRlci5zdHIoKSk7Ci0KLSAgICAgICAgaWYgKGV4cGVjdFN1Y2Nlc3MpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoMHUsIHByb2dyYW0p
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgbVNpbXBsZVZTU291cmNlOwot
fTsKLQotY2xhc3MgR0xTTFRlc3RfRVMzIDogcHVibGljIEdMU0xUZXN0Ci17Ci0gICAgdm9pZCBT
ZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAg
ICAgICAgbVNpbXBsZVZTU291cmNlID0KLSAgICAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIK
LSAgICAgICAgICAgICJpbiB2ZWM0IGlucHV0QXR0cmlidXRlOyIKLSAgICAgICAgICAgICJ2b2lk
IG1haW4oKSIKLSAgICAgICAgICAgICJ7IgotICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9
IGlucHV0QXR0cmlidXRlOyIKLSAgICAgICAgICAgICJ9IjsKLSAgICB9Ci19OwotCi1URVNUX1Ao
R0xTTFRlc3QsIE5hbWVsZXNzU2NvcGVkU3RydWN0cykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIHBy
ZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotCi0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHN0cnVjdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZsb2F0
IHE7Ci0gICAgICAgICAgICB9IGI7Ci0KLSAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
MSwgMCwgMCwgMSk7Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3IuYSArPSBiLnE7Ci0gICAgICAg
IH0KLSAgICApOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShtU2ltcGxl
VlNTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBFWFBFQ1RfTkUoMHUsIHByb2dy
YW0pOwotfQotCi1URVNUX1AoR0xTTFRlc3QsIFNjb3BlZFN0cnVjdHNPcmRlckJ1ZykKLXsKLSAg
ICAvLyBUT0RPKGdlb2ZmbGFuZyk6IEZpbmQgb3V0IHdoeSB0aGlzIGRvZXNuJ3QgY29tcGlsZSBv
biBBcHBsZSBPcGVuR0wgZHJpdmVycwotICAgIC8vIChodHRwOi8vYW5nbGVidWcuY29tLzEyOTIp
Ci0gICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaW5kIG91dCB3aHkgdGhpcyBkb2Vzbid0IGNvbXBp
bGUgb24gQU1EIE9wZW5HTCBkcml2ZXJzCi0gICAgLy8gKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTI5
MSkKLSAgICBpZiAoSXNEZXNrdG9wT3BlbkdMKCkgJiYgKElzT1NYKCkgfHwgIUlzTlZJRElBKCkp
KQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIHRoaXMgT3Bl
bkdMIGNvbmZpZ3VyYXRpb24uIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9T
T1VSQ0UKLSAgICAoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotCi0gICAgICAg
IHN0cnVjdCBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZsb2F0IGY7Ci0gICAgICAgIH07Ci0K
LSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgVCBhOwotCi0gICAg
ICAgICAgICBzdHJ1Y3QgVAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZsb2F0IHE7
Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBUIGI7Ci0KLSAgICAgICAgICAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQoMSwgMCwgMCwgMSk7Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3IuYSAr
PSBhLmY7Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3IuYSArPSBiLnE7Ci0gICAgICAgIH0KLSAg
ICApOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShtU2ltcGxlVlNTb3Vy
Y2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwot
fQotCi1URVNUX1AoR0xTTFRlc3QsIFNjb3BlZFN0cnVjdHNCdWcpCi17Ci0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAg
ICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLQotICAgICAgICBzdHJ1Y3QgVF8wCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGZsb2F0IGY7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdm9pZCBt
YWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLCAwLCAw
LCAxKTsKLQotICAgICAgICAgICAgc3RydWN0IFQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICB2ZWMyIHY7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBUXzAgYTsKLSAgICAg
ICAgICAgIFQgYjsKLQotICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yLmEgKz0gYS5mOwotICAgICAg
ICAgICAgZ2xfRnJhZ0NvbG9yLmEgKz0gYi52Lng7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAg
R0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShtU2ltcGxlVlNTb3VyY2UsIGZyYWdtZW50
U2hhZGVyU291cmNlKTsKLSAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwotfQotCi1URVNUX1Ao
R0xTTFRlc3QsIER4UG9zaXRpb25CdWcpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRl
eFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIGF0dHJpYnV0ZSB2
ZWM0IGlucHV0QXR0cmlidXRlOwotICAgICAgICB2YXJ5aW5nIGZsb2F0IGR4X1Bvc2l0aW9uOwot
ICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9Qb3NpdGlvbiA9
IHZlYzQoaW5wdXRBdHRyaWJ1dGUpOwotICAgICAgICAgICAgZHhfUG9zaXRpb24gPSAwLjA7Ci0g
ICAgICAgIH0KLSAgICApOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U2hhZGVy
U291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7Ci0KLSAgICAgICAgdmFyeWluZyBmbG9hdCBkeF9Qb3NpdGlvbjsKLQotICAgICAgICB2
b2lkIG1haW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGR4
X1Bvc2l0aW9uLCAwLCAwLCAxKTsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICBHTHVpbnQgcHJv
Z3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJT
b3VyY2UpOwotICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Ci19Ci0KLVRFU1RfUChHTFNMVGVz
dCwgRWxzZUlmUmV3cml0aW5nKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhTaGFk
ZXJTb3VyY2UgPQotICAgICAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjtcbiIKLSAgICAg
ICAgInZhcnlpbmcgZmxvYXQgdjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAg
ICAgIiAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uO1xuIgotICAgICAgICAiICB2ID0gMS4wO1xu
IgotICAgICAgICAiICBpZiAoYV9wb3NpdGlvbi54IDw9IDAuNSkge1xuIgotICAgICAgICAiICAg
IHYgPSAwLjA7XG4iCi0gICAgICAgICIgIH0gZWxzZSBpZiAoYV9wb3NpdGlvbi54ID49IDAuNSkg
e1xuIgotICAgICAgICAiICAgIHYgPSAyLjA7XG4iCi0gICAgICAgICIgIH1cbiIKLSAgICAgICAg
In1cbiI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQot
ICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAidmFyeWluZyBmbG9h
dCB2O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICB2ZWM0IGNvbG9y
ID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApO1xuIgotICAgICAgICAiICBpZiAodiA+PSAxLjAp
IGNvbG9yID0gdmVjNCgwLjAsIDEuMCwgMC4wLCAxLjApO1xuIgotICAgICAgICAiICBpZiAodiA+
PSAyLjApIGNvbG9yID0gdmVjNCgwLjAsIDAuMCwgMS4wLCAxLjApO1xuIgotICAgICAgICAiICBn
bF9GcmFnQ29sb3IgPSBjb2xvcjtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBHTHVpbnQgcHJv
Z3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJT
b3VyY2UpOwotICAgIEFTU0VSVF9ORSgwdSwgcHJvZ3JhbSk7Ci0KLSAgICBkcmF3UXVhZChwcm9n
cmFtLCAiYV9wb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDI1
NSwgMCwgMCwgMjU1KTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoZ2V0V2luZG93V2lkdGgoKS0xLCAw
LCAwLCAyNTUsIDAsIDI1NSk7Ci19Ci0KLVRFU1RfUChHTFNMVGVzdCwgVHdvRWxzZUlmUmV3cml0
aW5nKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAg
ICAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjtcbiIKLSAgICAgICAgInZhcnlpbmcgZmxv
YXQgdjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRp
b24gPSBhX3Bvc2l0aW9uO1xuIgotICAgICAgICAiICBpZiAoYV9wb3NpdGlvbi54ID09IDAuMCkg
e1xuIgotICAgICAgICAiICAgIHYgPSAxLjA7XG4iCi0gICAgICAgICIgIH0gZWxzZSBpZiAoYV9w
b3NpdGlvbi54ID4gMC41KSB7XG4iCi0gICAgICAgICIgICAgdiA9IDAuMDtcbiIKLSAgICAgICAg
IiAgfSBlbHNlIGlmIChhX3Bvc2l0aW9uLnggPiAwLjc1KSB7XG4iCi0gICAgICAgICIgICAgdiA9
IDAuNTtcbiIKLSAgICAgICAgIiAgfVxuIgotICAgICAgICAifVxuIjsKLQotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJwcmVjaXNpb24gaGln
aHAgZmxvYXQ7XG4iCi0gICAgICAgICJ2YXJ5aW5nIGZsb2F0IHY7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCi0gICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQodiwgMC4wLCAwLjAs
IDEuMCk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxl
UHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBF
WFBFQ1RfTkUoMHUsIHByb2dyYW0pOwotfQotCi1URVNUX1AoR0xTTFRlc3QsIEZyb250RmFjaW5n
QW5kVmFyeWluZykKLXsKLSAgICBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgcGxhdGZvcm0gPSBHZXRQ
YXJhbSgpLmVnbFBhcmFtZXRlcnM7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFk
ZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBhdHRyaWJ1dGUgdmVjNCBh
X3Bvc2l0aW9uOwotICAgICAgICB2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZzsKLSAgICAgICAgdm9p
ZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgdl92YXJ5aW5nID0gYV9wb3NpdGlvbi54
OwotICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOwotICAgICAgICB9Ci0gICAg
KTsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0gU0hBREVS
X1NPVVJDRQotICAgICgKLSAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Ci0gICAgICAg
IHZhcnlpbmcgZmxvYXQgdl92YXJ5aW5nOwotICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICB7
Ci0gICAgICAgICAgICB2ZWM0IGM7Ci0KLSAgICAgICAgICAgIGlmIChnbF9Gcm9udEZhY2luZykK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjID0gdmVjNCh2X3ZhcnlpbmcsIDAsIDAs
IDEuMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgYyA9IHZlYzQoMCwgdl92YXJ5aW5nLCAwLCAxLjApOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gYzsKLSAgICAgICAgfQotICAgICk7Ci0K
LSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotCi0gICAgLy8gQ29tcGlsYXRpb24gc2hvdWxkIGZhaWwg
b24gRDNEMTEgZmVhdHVyZSBsZXZlbCA5XzMsIHNpbmNlIGdsX0Zyb250RmFjaW5nIGlzbid0IHN1
cHBvcnRlZC4KLSAgICBpZiAocGxhdGZvcm0ucmVuZGVyZXIgPT0gRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfRDNEMTFfQU5HTEUpCi0gICAgewotICAgICAgICBpZiAocGxhdGZvcm0ubWFqb3JWZXJz
aW9uID09IDkgJiYgcGxhdGZvcm0ubWlub3JWZXJzaW9uID09IDMpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEVYUEVDVF9FUSgwdSwgcHJvZ3JhbSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICAvLyBPdGhlcndpc2UsIGNvbXBpbGF0aW9uIHNob3VsZCBzdWNj
ZWVkCi0gICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKLX0KLQotLy8gVmVyaWZ5IHRoYXQgbGlu
a2luZyBzaGFkZXJzIGRlY2xhcmluZyBkaWZmZXJlbnQgc2hhZGluZyBsYW5ndWFnZSB2ZXJzaW9u
cyBmYWlscy4KLVRFU1RfUChHTFNMVGVzdF9FUzMsIFZlcnNpb25NaXNtYXRjaCkKLXsKLSAgICBj
b25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZTEwMCA9Ci0gICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZhcnlpbmcgZmxvYXQgdl92YXJ5aW5n
O1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZfdmFyeWlu
ZywgMCwgMCwgMS4wKTsgfVxuIjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRl
clNvdXJjZTEwMCA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uO1xuIgotICAg
ICAgICAidmFyeWluZyBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7
IHZfdmFyeWluZyA9IGFfcG9zaXRpb24ueDsgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOyB9XG4i
OwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UzMDAgPQotICAg
ICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKLSAgICAgICAgImluIGZsb2F0IHZfdmFyeWluZztcbiIKLSAgICAgICAgIm91dCB2ZWM0
IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHsgbXlfRnJhZ0NvbG9yID0g
dmVjNCh2X3ZhcnlpbmcsIDAsIDAsIDEuMCk7IH1cbiI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UzMDAgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0g
ICAgICAgICJpbiB2ZWM0IGFfcG9zaXRpb247XG4iCi0gICAgICAgICJvdXQgZmxvYXQgdl92YXJ5
aW5nO1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyB2X3ZhcnlpbmcgPSBhX3Bvc2l0aW9uLng7
IGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsgfVxuIjsKLQotICAgIEdMdWludCBwcm9ncmFtID0g
Q29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlMzAwLCBmcmFnbWVudFNoYWRlclNvdXJj
ZTEwMCk7Ci0gICAgRVhQRUNUX0VRKDB1LCBwcm9ncmFtKTsKLQotICAgIHByb2dyYW0gPSBDb21w
aWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UxMDAsIGZyYWdtZW50U2hhZGVyU291cmNlMzAw
KTsKLSAgICBFWFBFQ1RfRVEoMHUsIHByb2dyYW0pOwotfQotCi0vLyBWZXJpZnkgdGhhdCBkZWNs
YXJpbmcgdmFyeWluZyBhcyBpbnZhcmlhbnQgb25seSBpbiB2ZXJ0ZXggc2hhZGVyIGZhaWxzIGlu
IEVTU0wgMS4wMC4KLVRFU1RfUChHTFNMVGVzdCwgSW52YXJpYW50VmFyeWluZ091dCkKLXsKLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZhcnlpbmcgZmxvYXQgdl92YXJ5aW5n
O1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZfdmFyeWlu
ZywgMCwgMCwgMS4wKTsgfVxuIjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRl
clNvdXJjZSA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uO1xuIgotICAgICAg
ICAiaW52YXJpYW50IHZhcnlpbmcgZmxvYXQgdl92YXJ5aW5nO1xuIgotICAgICAgICAidm9pZCBt
YWluKCkgeyB2X3ZhcnlpbmcgPSBhX3Bvc2l0aW9uLng7IGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlv
bjsgfVxuIjsKLQotICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hh
ZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgRVhQRUNUX0VRKDB1LCBwcm9n
cmFtKTsKLX0KLQotLy8gVmVyaWZ5IHRoYXQgZGVjbGFyaW5nIHZhcnlpbmcgYXMgaW52YXJpYW50
IG9ubHkgaW4gdmVydGV4IHNoYWRlciBzdWNjZWVkcyBpbiBFU1NMIDMuMDAuCi1URVNUX1AoR0xT
TFRlc3RfRVMzLCBJbnZhcmlhbnRWYXJ5aW5nT3V0KQotewotICAgIC8vIFRPRE86IEVTU0wgMy4w
MCAtPiBHTFNMIDEuMjAgdHJhbnNsYXRpb24gc2hvdWxkIGFkZCAiaW52YXJpYW50IiBpbiBmcmFn
bWVudCBzaGFkZXIKLSAgICAvLyBmb3IgdmFyeWluZ3Mgd2hpY2ggYXJlIGludmFyaWFudCBpbiB2
ZXJ0ZXggc2hhZGVyIChodHRwOi8vYW5nbGVidWcuY29tLzEyOTMpCi0gICAgaWYgKElzRGVza3Rv
cE9wZW5HTCgpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9u
IE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9u
IDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAg
ICJpbiBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7
XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IG15X0ZyYWdDb2xvciA9IHZlYzQodl92YXJ5aW5n
LCAwLCAwLCAxLjApOyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVy
U291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAiaW4gdmVjNCBh
X3Bvc2l0aW9uO1xuIgotICAgICAgICAiaW52YXJpYW50IG91dCBmbG9hdCB2X3Zhcnlpbmc7XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7IHZfdmFyeWluZyA9IGFfcG9zaXRpb24ueDsgZ2xfUG9z
aXRpb24gPSBhX3Bvc2l0aW9uOyB9XG4iOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxl
UHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBF
WFBFQ1RfTkUoMHUsIHByb2dyYW0pOwotfQotCi0vLyBWZXJpZnkgdGhhdCBkZWNsYXJpbmcgdmFy
eWluZyBhcyBpbnZhcmlhbnQgb25seSBpbiBmcmFnbWVudCBzaGFkZXIgZmFpbHMgaW4gRVNTTCAx
LjAwLgotVEVTVF9QKEdMU0xUZXN0LCBJbnZhcmlhbnRWYXJ5aW5nSW4pCi17Ci0gICAgY29uc3Qg
c3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJpbnZhcmlhbnQgdmFyeWluZyBmbG9hdCB2X3Zhcnlp
bmc7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQodl92YXJ5
aW5nLCAwLCAwLCAxLjApOyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hh
ZGVyU291cmNlID0KLSAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247XG4iCi0gICAg
ICAgICJ2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHsg
dl92YXJ5aW5nID0gYV9wb3NpdGlvbi54OyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247IH1cbiI7
Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJj
ZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9FUSgwdSwgcHJvZ3JhbSk7Ci19
Ci0KLS8vIFZlcmlmeSB0aGF0IGRlY2xhcmluZyB2YXJ5aW5nIGFzIGludmFyaWFudCBvbmx5IGlu
IGZyYWdtZW50IHNoYWRlciBmYWlscyBpbiBFU1NMIDMuMDAuCi1URVNUX1AoR0xTTFRlc3RfRVMz
LCBJbnZhcmlhbnRWYXJ5aW5nSW4pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRT
aGFkZXJTb3VyY2UgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImludmFyaWFudCBpbiBmbG9hdCB2X3Zh
cnlpbmc7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2
b2lkIG1haW4oKSB7IG15X0ZyYWdDb2xvciA9IHZlYzQodl92YXJ5aW5nLCAwLCAwLCAxLjApOyB9
XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KLSAgICAg
ICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAiaW4gdmVjNCBhX3Bvc2l0aW9uO1xuIgot
ICAgICAgICAib3V0IGZsb2F0IHZfdmFyeWluZztcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHsg
dl92YXJ5aW5nID0gYV9wb3NpdGlvbi54OyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247IH1cbiI7
Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJj
ZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9FUSgwdSwgcHJvZ3JhbSk7Ci19
Ci0KLS8vIFZlcmlmeSB0aGF0IGRlY2xhcmluZyB2YXJ5aW5nIGFzIGludmFyaWFudCBpbiBib3Ro
IHNoYWRlcnMgc3VjY2VlZHMgaW4gRVNTTCAxLjAwLgotVEVTVF9QKEdMU0xUZXN0LCBJbnZhcmlh
bnRWYXJ5aW5nQm90aCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNv
dXJjZSA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImlu
dmFyaWFudCB2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKLSAgICAgICAgInZvaWQgbWFpbigp
IHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2X3ZhcnlpbmcsIDAsIDAsIDEuMCk7IH1cbiI7Ci0KLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAiYXR0cmli
dXRlIHZlYzQgYV9wb3NpdGlvbjtcbiIKLSAgICAgICAgImludmFyaWFudCB2YXJ5aW5nIGZsb2F0
IHZfdmFyeWluZztcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHsgdl92YXJ5aW5nID0gYV9wb3Np
dGlvbi54OyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247IH1cbiI7Ci0KLSAgICBHTHVpbnQgcHJv
Z3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJT
b3VyY2UpOwotICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Ci19Ci0KLS8vIFZlcmlmeSB0aGF0
IGRlY2xhcmluZyB2YXJ5aW5nIGFzIGludmFyaWFudCBpbiBib3RoIHNoYWRlcnMgZmFpbHMgaW4g
RVNTTCAzLjAwLgotVEVTVF9QKEdMU0xUZXN0X0VTMywgSW52YXJpYW50VmFyeWluZ0JvdGgpCi17
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAi
I3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIK
LSAgICAgICAgImludmFyaWFudCBpbiBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJvdXQg
dmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IG15X0ZyYWdDb2xv
ciA9IHZlYzQodl92YXJ5aW5nLCAwLCAwLCAxLjApOyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgot
ICAgICAgICAiaW4gdmVjNCBhX3Bvc2l0aW9uO1xuIgotICAgICAgICAiaW52YXJpYW50IG91dCBm
bG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IHZfdmFyeWluZyA9IGFf
cG9zaXRpb24ueDsgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOyB9XG4iOwotCi0gICAgR0x1aW50
IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hh
ZGVyU291cmNlKTsKLSAgICBFWFBFQ1RfRVEoMHUsIHByb2dyYW0pOwotfQotCi0vLyBWZXJpZnkg
dGhhdCBkZWNsYXJpbmcgZ2xfUG9zaXRpb24gYXMgaW52YXJpYW50IHN1Y2NlZWRzIGluIEVTU0wg
MS4wMC4KLVRFU1RfUChHTFNMVGVzdCwgSW52YXJpYW50R0xQb3NpdGlvbikKLXsKLSAgICBjb25z
dCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJwcmVjaXNpb24g
bWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZhcnlpbmcgZmxvYXQgdl92YXJ5aW5nO1xuIgot
ICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZfdmFyeWluZywgMCwg
MCwgMS4wKTsgfVxuIjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJj
ZSA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uO1xuIgotICAgICAgICAiaW52
YXJpYW50IGdsX1Bvc2l0aW9uO1xuIgotICAgICAgICAidmFyeWluZyBmbG9hdCB2X3Zhcnlpbmc7
XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IHZfdmFyeWluZyA9IGFfcG9zaXRpb24ueDsgZ2xf
UG9zaXRpb24gPSBhX3Bvc2l0aW9uOyB9XG4iOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21w
aWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAg
ICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwotfQotCi0vLyBWZXJpZnkgdGhhdCBkZWNsYXJpbmcg
Z2xfUG9zaXRpb24gYXMgaW52YXJpYW50IHN1Y2NlZWRzIGluIEVTU0wgMy4wMC4KLVRFU1RfUChH
TFNMVGVzdF9FUzMsIEludmFyaWFudEdMUG9zaXRpb24pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0g
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgImluIGZsb2F0IHZf
dmFyeWluZztcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAg
InZvaWQgbWFpbigpIHsgbXlfRnJhZ0NvbG9yID0gdmVjNCh2X3ZhcnlpbmcsIDAsIDAsIDEuMCk7
IH1cbiI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAg
ICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJpbiB2ZWM0IGFfcG9zaXRpb247XG4i
Ci0gICAgICAgICJpbnZhcmlhbnQgZ2xfUG9zaXRpb247XG4iCi0gICAgICAgICJvdXQgZmxvYXQg
dl92YXJ5aW5nO1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyB2X3ZhcnlpbmcgPSBhX3Bvc2l0
aW9uLng7IGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsgfVxuIjsKLQotICAgIEdMdWludCBwcm9n
cmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNv
dXJjZSk7Ci0gICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKLX0KLQotLy8gVmVyaWZ5IHRoYXQg
dXNpbmcgaW52YXJpYW50KGFsbCkgaW4gYm90aCBzaGFkZXJzIHN1Y2NlZWRzIGluIEVTU0wgMS4w
MC4KLVRFU1RfUChHTFNMVGVzdCwgSW52YXJpYW50QWxsQm90aCkKLXsKLSAgICAvLyBUT0RPOiBF
U1NMIDEuMDAgLT4gR0xTTCAxLjIwIHRyYW5zbGF0aW9uIHNob3VsZCBhZGQgImludmFyaWFudCIg
aW4gZnJhZ21lbnQgc2hhZGVyCi0gICAgLy8gZm9yIHZhcnlpbmdzIHdoaWNoIGFyZSBpbnZhcmlh
bnQgaW4gdmVydGV4IHNoYWRlciBpbmRpdmlkdWFsbHksCi0gICAgLy8gYW5kIHJlbW92ZSBpbnZh
cmlhbnQoYWxsKSBmcm9tIGZyYWdtZW50IHNoYWRlciAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xMjkz
KQotICAgIGlmIChJc0Rlc2t0b3BPcGVuR0woKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBkaXNhYmxlZCBvbiBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9
Ci0gICAgICAgICIjcHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpXG4iCi0gICAgICAgICJwcmVj
aXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZhcnlpbmcgZmxvYXQgdl92YXJ5aW5n
O1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZfdmFyeWlu
ZywgMCwgMCwgMS4wKTsgfVxuIjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRl
clNvdXJjZSA9Ci0gICAgICAgICIjcHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpXG4iCi0gICAg
ICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uO1xuIgotICAgICAgICAidmFyeWluZyBmbG9h
dCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IHZfdmFyeWluZyA9IGFfcG9z
aXRpb24ueDsgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOyB9XG4iOwotCi0gICAgR0x1aW50IHBy
b2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVy
U291cmNlKTsKLSAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwotfQotCi0vLyBWZXJpZnkgdGhh
dCBmdW5jdGlvbnMgd2l0aG91dCByZXR1cm4gc3RhdGVtZW50cyBzdGlsbCBjb21waWxlCi1URVNU
X1AoR0xTTFRlc3QsIE1pc3NpbmdSZXR1cm5GbG9hdCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAidmFyeWluZyBmbG9hdCB2X3Zhcnlpbmc7
XG4iCi0gICAgICAgICJmbG9hdCBmKCkgeyBpZiAodl92YXJ5aW5nID4gMC4wKSByZXR1cm4gMS4w
OyB9XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9uID0gdmVjNChmKCksIDAs
IDAsIDEpOyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3Vy
Y2UgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwgMCwgMCwgMSk7IH1cbiI7Ci0KLSAgICBH
THVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21l
bnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Ci19Ci0KLS8vIFZl
cmlmeSB0aGF0IGZ1bmN0aW9ucyB3aXRob3V0IHJldHVybiBzdGF0ZW1lbnRzIHN0aWxsIGNvbXBp
bGUKLVRFU1RfUChHTFNMVGVzdCwgTWlzc2luZ1JldHVyblZlYzIpCi17Ci0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgInZhcnlpbmcgZmxvYXQgdl92
YXJ5aW5nO1xuIgotICAgICAgICAidmVjMiBmKCkgeyBpZiAodl92YXJ5aW5nID4gMC4wKSByZXR1
cm4gdmVjMigxLjAsIDEuMCk7IH1cbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfUG9zaXRp
b24gPSB2ZWM0KGYoKS54LCAwLCAwLCAxKTsgfVxuIjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IGZyYWdtZW50U2hhZGVyU291cmNlID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDAsIDAs
IDEpOyB9XG4iOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhT
aGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBFWFBFQ1RfTkUoMHUsIHBy
b2dyYW0pOwotfQotCi0vLyBWZXJpZnkgdGhhdCBmdW5jdGlvbnMgd2l0aG91dCByZXR1cm4gc3Rh
dGVtZW50cyBzdGlsbCBjb21waWxlCi1URVNUX1AoR0xTTFRlc3QsIE1pc3NpbmdSZXR1cm5WZWMz
KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAg
ICJ2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKLSAgICAgICAgInZlYzMgZigpIHsgaWYgKHZf
dmFyeWluZyA+IDAuMCkgcmV0dXJuIHZlYzMoMS4wLCAxLjAsIDEuMCk7IH1cbiIKLSAgICAgICAg
InZvaWQgbWFpbigpIHsgZ2xfUG9zaXRpb24gPSB2ZWM0KGYoKS54LCAwLCAwLCAxKTsgfVxuIjsK
LQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KLSAgICAgICAg
InByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9G
cmFnQ29sb3IgPSB2ZWM0KDAsIDAsIDAsIDEpOyB9XG4iOwotCi0gICAgR0x1aW50IHByb2dyYW0g
PSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNl
KTsKLSAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwotfQotCi0vLyBWZXJpZnkgdGhhdCBmdW5j
dGlvbnMgd2l0aG91dCByZXR1cm4gc3RhdGVtZW50cyBzdGlsbCBjb21waWxlCi1URVNUX1AoR0xT
TFRlc3QsIE1pc3NpbmdSZXR1cm5WZWM0KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRl
eFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJ2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKLSAg
ICAgICAgInZlYzQgZigpIHsgaWYgKHZfdmFyeWluZyA+IDAuMCkgcmV0dXJuIHZlYzQoMS4wLCAx
LjAsIDEuMCwgMS4wKTsgfVxuIgotICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9
IHZlYzQoZigpLngsIDAsIDAsIDEpOyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJh
Z21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwgMCwgMCwgMSk7
IH1cbiI7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRl
clNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3Jh
bSk7Ci19Ci0KLS8vIFZlcmlmeSB0aGF0IGZ1bmN0aW9ucyB3aXRob3V0IHJldHVybiBzdGF0ZW1l
bnRzIHN0aWxsIGNvbXBpbGUKLVRFU1RfUChHTFNMVGVzdCwgTWlzc2luZ1JldHVybklWZWM0KQot
ewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJ2
YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKLSAgICAgICAgIml2ZWM0IGYoKSB7IGlmICh2X3Zh
cnlpbmcgPiAwLjApIHJldHVybiBpdmVjNCgxLCAxLCAxLCAxKTsgfVxuIgotICAgICAgICAidm9p
ZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9IHZlYzQoZigpLngsIDAsIDAsIDEpOyB9XG4iOwotCi0g
ICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAicHJl
Y2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdD
b2xvciA9IHZlYzQoMCwgMCwgMCwgMSk7IH1cbiI7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENv
bXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwot
ICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Ci19Ci0KLS8vIFZlcmlmeSB0aGF0IGZ1bmN0aW9u
cyB3aXRob3V0IHJldHVybiBzdGF0ZW1lbnRzIHN0aWxsIGNvbXBpbGUKLVRFU1RfUChHTFNMVGVz
dCwgTWlzc2luZ1JldHVybk1hdDQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hh
ZGVyU291cmNlID0KLSAgICAgICAgInZhcnlpbmcgZmxvYXQgdl92YXJ5aW5nO1xuIgotICAgICAg
ICAibWF0NCBmKCkgeyBpZiAodl92YXJ5aW5nID4gMC4wKSByZXR1cm4gbWF0NCgxLjApOyB9XG4i
Ci0gICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9uID0gdmVjNChmKClbMF1bMF0sIDAs
IDAsIDEpOyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3Vy
Y2UgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQoMCwgMCwgMCwgMSk7IH1cbiI7Ci0KLSAgICBH
THVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21l
bnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Ci19Ci0KLS8vIFZl
cmlmeSB0aGF0IGZ1bmN0aW9ucyB3aXRob3V0IHJldHVybiBzdGF0ZW1lbnRzIHN0aWxsIGNvbXBp
bGUKLVRFU1RfUChHTFNMVGVzdCwgTWlzc2luZ1JldHVyblN0cnVjdCkKLXsKLSAgICBjb25zdCBz
dGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAidmFyeWluZyBmbG9hdCB2
X3Zhcnlpbmc7XG4iCi0gICAgICAgICJzdHJ1Y3QgcyB7IGZsb2F0IGE7IGludCBiOyB2ZWMyIGM7
IH07XG4iCi0gICAgICAgICJzIGYoKSB7IGlmICh2X3ZhcnlpbmcgPiAwLjApIHJldHVybiBzKDEu
MCwgMSwgdmVjMigxLjAsIDEuMCkpOyB9XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX1Bv
c2l0aW9uID0gdmVjNChmKCkuYSwgMCwgMCwgMSk7IH1cbiI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0
cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLCAw
LCAwLCAxKTsgfVxuIjsKLQotICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVy
dGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgRVhQRUNUX05FKDB1
LCBwcm9ncmFtKTsKLX0KLQotLy8gVmVyaWZ5IHRoYXQgZnVuY3Rpb25zIHdpdGhvdXQgcmV0dXJu
IHN0YXRlbWVudHMgc3RpbGwgY29tcGlsZQotVEVTVF9QKEdMU0xUZXN0X0VTMywgTWlzc2luZ1Jl
dHVybkFycmF5KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9
Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgImluIGZsb2F0IHZfdmFyeWlu
ZztcbiIKLSAgICAgICAgInZlYzJbMl0gZigpIHsgaWYgKHZfdmFyeWluZyA+IDAuMCkgeyByZXR1
cm4gdmVjMlsyXSh2ZWMyKDEuMCwgMS4wKSwgdmVjMigxLjAsIDEuMCkpOyB9IH1cbiIKLSAgICAg
ICAgInZvaWQgbWFpbigpIHsgZ2xfUG9zaXRpb24gPSB2ZWM0KGYoKVswXS54LCAwLCAwLCAxKTsg
fVxuIjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KLSAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxv
YXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKSB7IG15X0ZyYWdDb2xvciA9IHZlYzQoMCwgMCwgMCwgMSk7IH1cbiI7Ci0KLSAgICBH
THVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21l
bnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Ci19Ci0KLS8vIFZl
cmlmeSB0aGF0IGZ1bmN0aW9ucyB3aXRob3V0IHJldHVybiBzdGF0ZW1lbnRzIHN0aWxsIGNvbXBp
bGUKLVRFU1RfUChHTFNMVGVzdF9FUzMsIE1pc3NpbmdSZXR1cm5BcnJheU9mU3RydWN0cykKLXsK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJpbiBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAg
ICJzdHJ1Y3QgcyB7IGZsb2F0IGE7IGludCBiOyB2ZWMyIGM7IH07XG4iCi0gICAgICAgICJzWzJd
IGYoKSB7IGlmICh2X3ZhcnlpbmcgPiAwLjApIHsgcmV0dXJuIHNbMl0ocygxLjAsIDEsIHZlYzIo
MS4wLCAxLjApKSwgcygxLjAsIDEsICIKLSAgICAgICAgInZlYzIoMS4wLCAxLjApKSk7IH0gfVxu
IgotICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9IHZlYzQoZigpWzBdLmEsIDAs
IDAsIDEpOyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3Vy
Y2UgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAg
ICAgInZvaWQgbWFpbigpIHsgbXlfRnJhZ0NvbG9yID0gdmVjNCgwLCAwLCAwLCAxKTsgfVxuIjsK
LQotICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNl
LCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKLX0K
LQotLy8gVmVyaWZ5IHRoYXQgZnVuY3Rpb25zIHdpdGhvdXQgcmV0dXJuIHN0YXRlbWVudHMgc3Rp
bGwgY29tcGlsZQotVEVTVF9QKEdMU0xUZXN0X0VTMywgTWlzc2luZ1JldHVyblN0cnVjdE9mQXJy
YXlzKQotewotICAgIC8vIFRPRE8oY3dhbGxleikgcmVtb3ZlIHRoZSBzdXBwcmVzc2lvbiBvbmNl
IE5WSURJQSByZW1vdmVzIHRoZSByZXN0cmljdGlvbiBmb3IKLSAgICAvLyBHTFNMID49IDMwMC4g
SXQgd2FzIGRlZmluZWQgb25seSBpbiBHTFNMIDIuMCwgc2VjdGlvbiA2LjEuCi0gICAgaWYgKElz
TlZJRElBKCkgJiYgSXNPcGVuR0xFUygpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IHNraXBwZWQgb24gTlZJRElBIE9wZW5HTCBFUyBiZWNhdXNlIGl0IGRpc2FsbG93cyByZXR1
cm5pbmcgIgotICAgICAgICAgICAgICAgICAgICAgInN0cnVjdHVyZSBvZiBhcnJheXMiCi0gICAg
ICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAiI3ZlcnNp
b24gMzAwIGVzXG4iCi0gICAgICAgICJpbiBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJz
dHJ1Y3QgcyB7IGZsb2F0IGFbMl07IGludCBiWzJdOyB2ZWMyIGNbMl07IH07XG4iCi0gICAgICAg
ICJzIGYoKSB7IGlmICh2X3ZhcnlpbmcgPiAwLjApIHsgcmV0dXJuIHMoZmxvYXRbMl0oMS4wLCAx
LjApLCBpbnRbMl0oMSwgMSksIgotICAgICAgICAidmVjMlsyXSh2ZWMyKDEuMCwgMS4wKSwgdmVj
MigxLjAsIDEuMCkpKTsgfSB9XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9u
ID0gdmVjNChmKCkuYVswXSwgMCwgMCwgMSk7IH1cbiI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlf
RnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyBteV9GcmFnQ29sb3IgPSB2ZWM0
KDAsIDAsIDAsIDEpOyB9XG4iOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3Jh
bSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBFWFBFQ1Rf
TkUoMHUsIHByb2dyYW0pOwotfQotCi0vLyBWZXJpZnkgdGhhdCB1c2luZyBpbnZhcmlhbnQoYWxs
KSBpbiBib3RoIHNoYWRlcnMgZmFpbHMgaW4gRVNTTCAzLjAwLgotVEVTVF9QKEdMU0xUZXN0X0VT
MywgSW52YXJpYW50QWxsQm90aCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNo
YWRlclNvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgIiNwcmFn
bWEgU1RER0wgaW52YXJpYW50KGFsbClcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0O1xuIgotICAgICAgICAiaW4gZmxvYXQgdl92YXJ5aW5nO1xuIgotICAgICAgICAib3V0IHZl
YzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyBteV9GcmFnQ29sb3Ig
PSB2ZWM0KHZfdmFyeWluZywgMCwgMCwgMS4wKTsgfVxuIjsKLQotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIHZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAg
ICAgICAgIiNwcmFnbWEgU1RER0wgaW52YXJpYW50KGFsbClcbiIKLSAgICAgICAgImluIHZlYzQg
YV9wb3NpdGlvbjtcbiIKLSAgICAgICAgIm91dCBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAg
ICJ2b2lkIG1haW4oKSB7IHZfdmFyeWluZyA9IGFfcG9zaXRpb24ueDsgZ2xfUG9zaXRpb24gPSBh
X3Bvc2l0aW9uOyB9XG4iOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2
ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBFWFBFQ1RfRVEo
MHUsIHByb2dyYW0pOwotfQotCi0vLyBWZXJpZnkgdGhhdCB1c2luZyBpbnZhcmlhbnQoYWxsKSBv
bmx5IGluIGZyYWdtZW50IHNoYWRlciBmYWlscyBpbiBFU1NMIDEuMDAuCi1URVNUX1AoR0xTTFRl
c3QsIEludmFyaWFudEFsbEluKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hh
ZGVyU291cmNlID0KLSAgICAgICAgIiNwcmFnbWEgU1RER0wgaW52YXJpYW50KGFsbClcbiIKLSAg
ICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidmFyeWluZyBmbG9h
dCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZl
YzQodl92YXJ5aW5nLCAwLCAwLCAxLjApOyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
dmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247
XG4iCi0gICAgICAgICJ2YXJ5aW5nIGZsb2F0IHZfdmFyeWluZztcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpIHsgdl92YXJ5aW5nID0gYV9wb3NpdGlvbi54OyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRp
b247IH1cbiI7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNo
YWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9FUSgwdSwgcHJv
Z3JhbSk7Ci19Ci0KLS8vIFZlcmlmeSB0aGF0IHVzaW5nIGludmFyaWFudChhbGwpIG9ubHkgaW4g
ZnJhZ21lbnQgc2hhZGVyIGZhaWxzIGluIEVTU0wgMy4wMC4KLVRFU1RfUChHTFNMVGVzdF9FUzMs
IEludmFyaWFudEFsbEluKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVy
U291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAiI3ByYWdtYSBT
VERHTCBpbnZhcmlhbnQoYWxsKVxuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
XG4iCi0gICAgICAgICJpbiBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJvdXQgdmVjNCBt
eV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IG15X0ZyYWdDb2xvciA9IHZl
YzQodl92YXJ5aW5nLCAwLCAwLCAxLjApOyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
dmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAg
ICAiaW4gdmVjNCBhX3Bvc2l0aW9uO1xuIgotICAgICAgICAib3V0IGZsb2F0IHZfdmFyeWluZztc
biIKLSAgICAgICAgInZvaWQgbWFpbigpIHsgdl92YXJ5aW5nID0gYV9wb3NpdGlvbi54OyBnbF9Q
b3NpdGlvbiA9IGFfcG9zaXRpb247IH1cbiI7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBp
bGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAg
IEVYUEVDVF9FUSgwdSwgcHJvZ3JhbSk7Ci19Ci0KLS8vIFZlcmlmeSB0aGF0IHVzaW5nIGludmFy
aWFudChhbGwpIG9ubHkgaW4gdmVydGV4IHNoYWRlciBmYWlscyBpbiBFU1NMIDEuMDAuCi1URVNU
X1AoR0xTTFRlc3QsIEludmFyaWFudEFsbE91dCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBm
cmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc
biIKLSAgICAgICAgInZhcnlpbmcgZmxvYXQgdl92YXJ5aW5nO1xuIgotICAgICAgICAidm9pZCBt
YWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZfdmFyeWluZywgMCwgMCwgMS4wKTsgfVxuIjsK
LQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIj
cHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpXG4iCi0gICAgICAgICJhdHRyaWJ1dGUgdmVjNCBh
X3Bvc2l0aW9uO1xuIgotICAgICAgICAidmFyeWluZyBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAg
ICAgICJ2b2lkIG1haW4oKSB7IHZfdmFyeWluZyA9IGFfcG9zaXRpb24ueDsgZ2xfUG9zaXRpb24g
PSBhX3Bvc2l0aW9uOyB9XG4iOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3Jh
bSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBFWFBFQ1Rf
RVEoMHUsIHByb2dyYW0pOwotfQotCi0vLyBWZXJpZnkgdGhhdCB1c2luZyBpbnZhcmlhbnQoYWxs
KSBvbmx5IGluIHZlcnRleCBzaGFkZXIgc3VjY2VlZHMgaW4gRVNTTCAzLjAwLgotVEVTVF9QKEdM
U0xUZXN0X0VTMywgSW52YXJpYW50QWxsT3V0KQotewotICAgIC8vIFRPRE86IEVTU0wgMy4wMCAt
PiBHTFNMIDEuMjAgdHJhbnNsYXRpb24gc2hvdWxkIGFkZCAiaW52YXJpYW50IiBpbiBmcmFnbWVu
dCBzaGFkZXIKLSAgICAvLyBmb3IgdmFyeWluZ3Mgd2hpY2ggYXJlIGludmFyaWFudCBpbiB2ZXJ0
ZXggc2hhZGVyLAotICAgIC8vIGJlY2F1c2Ugb2YgaW52YXJpYW50KGFsbCkgYmVpbmcgdXNlZCBp
biB2ZXJ0ZXggc2hhZGVyIChodHRwOi8vYW5nbGVidWcuY29tLzEyOTMpCi0gICAgaWYgKElzRGVz
a3RvcE9wZW5HTCgpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVk
IG9uIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAg
ICAgICJpbiBmbG9hdCB2X3Zhcnlpbmc7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29s
b3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IG15X0ZyYWdDb2xvciA9IHZlYzQodl92YXJ5
aW5nLCAwLCAwLCAxLjApOyB9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hh
ZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAiI3ByYWdt
YSBTVERHTCBpbnZhcmlhbnQoYWxsKVxuIgotICAgICAgICAiaW4gdmVjNCBhX3Bvc2l0aW9uO1xu
IgotICAgICAgICAib3V0IGZsb2F0IHZfdmFyeWluZztcbiIKLSAgICAgICAgInZvaWQgbWFpbigp
IHsgdl92YXJ5aW5nID0gYV9wb3NpdGlvbi54OyBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247IH1c
biI7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNv
dXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7
Ci19Ci0KLVRFU1RfUChHTFNMVGVzdCwgTWF4VmFyeWluZ1ZlYzQpCi17Ci0jaWYgZGVmaW5lZChf
X0FQUExFX18pCi0gICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaW5kIG91dCB3aHkgdGhpcyBkb2Vz
bid0IGNvbXBpbGUgb24gQXBwbGUgQU5EIE9wZW5HTCBkcml2ZXJzCi0gICAgLy8gKGh0dHA6Ly9h
bmdsZWJ1Zy5jb20vMTI5MSkKLSAgICBpZiAoSXNBTUQoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVy
KCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQotICAgIHsKLSAgICAg
ICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIEFwcGxlIEFNRCBPcGVuR0wuIiA8PCBz
dGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIEdMaW50IG1h
eFZhcnlpbmdzID0gMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMs
ICZtYXhWYXJ5aW5ncyk7Ci0KLSAgICBWYXJ5aW5nVGVzdEJhc2UoMCwgMCwgMCwgMCwgMCwgMCwg
bWF4VmFyeWluZ3MsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpOwotfQotCi1URVNUX1Ao
R0xTTFRlc3QsIE1heE1pbnVzVHdvVmFyeWluZ1ZlYzRQbHVzVHdvU3BlY2lhbFZhcmlhYmxlcykK
LXsKLSAgICBHTGludCBtYXhWYXJ5aW5ncyA9IDA7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhf
VkFSWUlOR19WRUNUT1JTLCAmbWF4VmFyeWluZ3MpOwotCi0gICAgLy8gR2VuZXJhdGUgc2hhZGVy
IGNvZGUgdGhhdCB1c2VzIGdsX0ZyYWdDb29yZCBhbmQgZ2xfUG9pbnRDb29yZCwgdHdvIHNwZWNp
YWwgZnJhZ21lbnQgc2hhZGVyIHZhcmlhYmxlcy4KLSAgICBWYXJ5aW5nVGVzdEJhc2UoMCwgMCwg
MCwgMCwgMCwgMCwgbWF4VmFyeWluZ3MgLSAyLCAwLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSk7
Ci19Ci0KLVRFU1RfUChHTFNMVGVzdCwgTWF4TWludXNUd29WYXJ5aW5nVmVjNFBsdXNUaHJlZVNw
ZWNpYWxWYXJpYWJsZXMpCi17Ci0gICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaWd1cmUgb3V0IHdo
eSB0aGlzIGZhaWxzIG9uIE9wZW5HTCBBTUQgKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTI5MSkKLSAg
ICBpZiAoSXNBTUQoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfT1BFTkdMX0FOR0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IGRpc2FibGVkIG9uIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEdMaW50IG1heFZhcnlpbmdzID0gMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX01B
WF9WQVJZSU5HX1ZFQ1RPUlMsICZtYXhWYXJ5aW5ncyk7Ci0KLSAgICAvLyBHZW5lcmF0ZSBzaGFk
ZXIgY29kZSB0aGF0IHVzZXMgZ2xfRnJhZ0Nvb3JkLCBnbF9Qb2ludENvb3JkIGFuZCBnbF9Qb2lu
dFNpemUuCi0gICAgVmFyeWluZ1Rlc3RCYXNlKDAsIDAsIDAsIDAsIDAsIDAsIG1heFZhcnlpbmdz
IC0gMiwgMCwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7Ci19Ci0KLS8vIERpc2FibGVkIGJlY2F1
c2UgZHJpdmVycyBhcmUgYWxsb3dlZCB0byBzdWNjZXNzZnVsbHkgY29tcGlsZSBzaGFkZXJzIHRo
YXQgaGF2ZSBtb3JlIHRoYW4gdGhlCi0vLyBtYXhpbXVtIG51bWJlciBvZiB2YXJ5aW5ncy4gKGh0
dHA6Ly9hbmdsZWJ1Zy5jb20vMTI5NikKLVRFU1RfUChHTFNMVGVzdCwgRElTQUJMRURfTWF4VmFy
eWluZ1ZlYzRQbHVzRnJhZ0Nvb3JkKQotewotICAgIEdMaW50IG1heFZhcnlpbmdzID0gMDsKLSAg
ICBnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsICZtYXhWYXJ5aW5ncyk7Ci0K
LSAgICAvLyBHZW5lcmF0ZSBzaGFkZXIgY29kZSB0aGF0IHVzZXMgZ2xfRnJhZ0Nvb3JkLCBhIHNw
ZWNpYWwgZnJhZ21lbnQgc2hhZGVyIHZhcmlhYmxlcy4KLSAgICAvLyBUaGlzIHRlc3Qgc2hvdWxk
IGZhaWwsIHNpbmNlIHdlIGFyZSByZWFsbHkgdXNpbmcgKG1heFZhcnlpbmdzICsgMSkgdmFyeWlu
Z3MuCi0gICAgVmFyeWluZ1Rlc3RCYXNlKDAsIDAsIDAsIDAsIDAsIDAsIG1heFZhcnlpbmdzLCAw
LCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKLX0KLQotLy8gRGlzYWJsZWQgYmVjYXVzZSBk
cml2ZXJzIGFyZSBhbGxvd2VkIHRvIHN1Y2Nlc3NmdWxseSBjb21waWxlIHNoYWRlcnMgdGhhdCBo
YXZlIG1vcmUgdGhhbiB0aGUKLS8vIG1heGltdW0gbnVtYmVyIG9mIHZhcnlpbmdzLiAoaHR0cDov
L2FuZ2xlYnVnLmNvbS8xMjk2KQotVEVTVF9QKEdMU0xUZXN0LCBESVNBQkxFRF9NYXhWYXJ5aW5n
VmVjNFBsdXNQb2ludENvb3JkKQotewotICAgIEdMaW50IG1heFZhcnlpbmdzID0gMDsKLSAgICBn
bEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsICZtYXhWYXJ5aW5ncyk7Ci0KLSAg
ICAvLyBHZW5lcmF0ZSBzaGFkZXIgY29kZSB0aGF0IHVzZXMgZ2xfRnJhZ0Nvb3JkLCBhIHNwZWNp
YWwgZnJhZ21lbnQgc2hhZGVyIHZhcmlhYmxlcy4KLSAgICAvLyBUaGlzIHRlc3Qgc2hvdWxkIGZh
aWwsIHNpbmNlIHdlIGFyZSByZWFsbHkgdXNpbmcgKG1heFZhcnlpbmdzICsgMSkgdmFyeWluZ3Mu
Ci0gICAgVmFyeWluZ1Rlc3RCYXNlKDAsIDAsIDAsIDAsIDAsIDAsIG1heFZhcnlpbmdzLCAwLCBm
YWxzZSwgdHJ1ZSwgZmFsc2UsIGZhbHNlKTsKLX0KLQotVEVTVF9QKEdMU0xUZXN0LCBNYXhWYXJ5
aW5nVmVjMykKLXsKLSAgICBHTGludCBtYXhWYXJ5aW5ncyA9IDA7Ci0gICAgZ2xHZXRJbnRlZ2Vy
dihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCAmbWF4VmFyeWluZ3MpOwotCi0gICAgVmFyeWluZ1Rl
c3RCYXNlKDAsIDAsIDAsIDAsIG1heFZhcnlpbmdzLCAwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCB0cnVlKTsKLX0KLQotVEVTVF9QKEdMU0xUZXN0LCBNYXhWYXJ5aW5nVmVjM0FycmF5KQot
ewotICAgIEdMaW50IG1heFZhcnlpbmdzID0gMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX01BWF9W
QVJZSU5HX1ZFQ1RPUlMsICZtYXhWYXJ5aW5ncyk7Ci0KLSAgICBWYXJ5aW5nVGVzdEJhc2UoMCwg
MCwgMCwgMCwgMCwgbWF4VmFyeWluZ3MgLyAyLCAwLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCB0
cnVlKTsKLX0KLQotLy8gRGlzYWJsZWQgYmVjYXVzZSBvZiBhIGZhaWx1cmUgaW4gRDNEOQotVEVT
VF9QKEdMU0xUZXN0LCBNYXhWYXJ5aW5nVmVjM0FuZE9uZUZsb2F0KQotewotICAgIGlmIChJc0Qz
RDkoKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBEM0Q5
LiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xpbnQgbWF4
VmFyeWluZ3MgPSAwOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZBUllJTkdfVkVDVE9SUywg
Jm1heFZhcnlpbmdzKTsKLQotICAgIFZhcnlpbmdUZXN0QmFzZSgxLCAwLCAwLCAwLCBtYXhWYXJ5
aW5ncywgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7Ci19Ci0KLS8vIERpc2Fi
bGVkIGJlY2F1c2Ugb2YgYSBmYWlsdXJlIGluIEQzRDkKLVRFU1RfUChHTFNMVGVzdCwgTWF4VmFy
eWluZ1ZlYzNBcnJheUFuZE9uZUZsb2F0QXJyYXkpCi17Ci0gICAgaWYgKElzRDNEOSgpKQotICAg
IHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIEQzRDkuIiA8PCBzdGQ6
OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTGludCBtYXhWYXJ5aW5ncyA9
IDA7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCAmbWF4VmFyeWlu
Z3MpOwotCi0gICAgVmFyeWluZ1Rlc3RCYXNlKDAsIDEsIDAsIDAsIDAsIG1heFZhcnlpbmdzIC8g
MiwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7Ci19Ci0KLS8vIERpc2FibGVkIGJl
Y2F1c2Ugb2YgYSBmYWlsdXJlIGluIEQzRDkKLVRFU1RfUChHTFNMVGVzdCwgVHdpY2VNYXhWYXJ5
aW5nVmVjMikKLXsKLSAgICBpZiAoSXNEM0Q5KCkpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQg
PDwgIlRlc3QgZGlzYWJsZWQgb24gRDNEOS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUpCi0gICAgewotICAgICAgICAvLyBUT0RPKGdlb2Zm
bGFuZyk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgZmFpbHMgb24gTlZJRElBJ3MgR0xFUyBkcml2ZXIK
LSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIE9wZW5HTCBFUy4iIDw8IHN0
ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotI2lmIGRlZmluZWQoX19BUFBMRV9f
KQotICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRmluZCBvdXQgd2h5IHRoaXMgZG9lc24ndCBjb21w
aWxlIG9uIEFwcGxlIEFORCBPcGVuR0wgZHJpdmVycwotICAgIC8vIChodHRwOi8vYW5nbGVidWcu
Y29tLzEyOTEpCi0gICAgaWYgKElzQU1EKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVH
TF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBBcHBsZSBBTUQgT3BlbkdMLiIgPDwgc3RkOjplbmRs
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSAgICBHTGludCBtYXhWYXJ5aW5n
cyA9IDA7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCAmbWF4VmFy
eWluZ3MpOwotCi0gICAgVmFyeWluZ1Rlc3RCYXNlKDAsIDAsIDIgKiBtYXhWYXJ5aW5ncywgMCwg
MCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgdHJ1ZSk7Ci19Ci0KLS8vIERpc2FibGVk
IGJlY2F1c2Ugb2YgYSBmYWlsdXJlIGluIEQzRDkKLVRFU1RfUChHTFNMVGVzdCwgTWF4VmFyeWlu
Z1ZlYzJBcnJheXMpCi17Ci0gICAgaWYgKElzRDNEU00zKCkpCi0gICAgewotICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gU00zLiIgPDwgc3RkOjplbmRsOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExB
VEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRSkKLSAgICB7Ci0gICAgICAgIC8vIFRPRE8o
Z2VvZmZsYW5nKTogRmlndXJlIG91dCB3aHkgdGhpcyBmYWlscyBvbiBOVklESUEncyBHTEVTIGRy
aXZlcgotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gT3BlbkdMIEVTLiIg
PDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0jaWYgZGVmaW5lZChfX0FQ
UExFX18pCi0gICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaW5kIG91dCB3aHkgdGhpcyBkb2Vzbid0
IGNvbXBpbGUgb24gQXBwbGUgQU5EIE9wZW5HTCBkcml2ZXJzCi0gICAgLy8gKGh0dHA6Ly9hbmds
ZWJ1Zy5jb20vMTI5MSkKLSAgICBpZiAoSXNBTUQoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkg
PT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQotICAgIHsKLSAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIEFwcGxlIEFNRCBPcGVuR0wuIiA8PCBzdGQ6
OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIEdMaW50IG1heFZh
cnlpbmdzID0gMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsICZt
YXhWYXJ5aW5ncyk7Ci0KLSAgICBWYXJ5aW5nVGVzdEJhc2UoMCwgMCwgMCwgbWF4VmFyeWluZ3Ms
IDAsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUpOwotfQotCi0vLyBEaXNhYmxl
ZCBiZWNhdXNlIGRyaXZlcnMgYXJlIGFsbG93ZWQgdG8gc3VjY2Vzc2Z1bGx5IGNvbXBpbGUgc2hh
ZGVycyB0aGF0IGhhdmUgbW9yZSB0aGFuIHRoZQotLy8gbWF4aW11bSBudW1iZXIgb2YgdmFyeWlu
Z3MuIChodHRwOi8vYW5nbGVidWcuY29tLzEyOTYpCi1URVNUX1AoR0xTTFRlc3QsIERJU0FCTEVE
X01heFBsdXNPbmVWYXJ5aW5nVmVjMykKLXsKLSAgICBHTGludCBtYXhWYXJ5aW5ncyA9IDA7Ci0g
ICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCAmbWF4VmFyeWluZ3MpOwot
Ci0gICAgVmFyeWluZ1Rlc3RCYXNlKDAsIDAsIDAsIDAsIG1heFZhcnlpbmdzICsgMSwgMCwgMCwg
MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotfQotCi0vLyBEaXNhYmxlZCBiZWNhdXNl
IGRyaXZlcnMgYXJlIGFsbG93ZWQgdG8gc3VjY2Vzc2Z1bGx5IGNvbXBpbGUgc2hhZGVycyB0aGF0
IGhhdmUgbW9yZSB0aGFuIHRoZQotLy8gbWF4aW11bSBudW1iZXIgb2YgdmFyeWluZ3MuIChodHRw
Oi8vYW5nbGVidWcuY29tLzEyOTYpCi1URVNUX1AoR0xTTFRlc3QsIERJU0FCTEVEX01heFBsdXNP
bmVWYXJ5aW5nVmVjM0FycmF5KQotewotICAgIEdMaW50IG1heFZhcnlpbmdzID0gMDsKLSAgICBn
bEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsICZtYXhWYXJ5aW5ncyk7Ci0KLSAg
ICBWYXJ5aW5nVGVzdEJhc2UoMCwgMCwgMCwgMCwgMCwgbWF4VmFyeWluZ3MgLyAyICsgMSwgMCwg
MCwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotfQotCi0vLyBEaXNhYmxlZCBiZWNhdXNl
IGRyaXZlcnMgYXJlIGFsbG93ZWQgdG8gc3VjY2Vzc2Z1bGx5IGNvbXBpbGUgc2hhZGVycyB0aGF0
IGhhdmUgbW9yZSB0aGFuIHRoZQotLy8gbWF4aW11bSBudW1iZXIgb2YgdmFyeWluZ3MuIChodHRw
Oi8vYW5nbGVidWcuY29tLzEyOTYpCi1URVNUX1AoR0xTTFRlc3QsIERJU0FCTEVEX01heFZhcnlp
bmdWZWMzQW5kT25lVmVjMikKLXsKLSAgICBHTGludCBtYXhWYXJ5aW5ncyA9IDA7Ci0gICAgZ2xH
ZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCAmbWF4VmFyeWluZ3MpOwotCi0gICAg
VmFyeWluZ1Rlc3RCYXNlKDAsIDAsIDEsIDAsIG1heFZhcnlpbmdzLCAwLCAwLCAwLCBmYWxzZSwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSk7Ci19Ci0KLS8vIERpc2FibGVkIGJlY2F1c2UgZHJpdmVycyBh
cmUgYWxsb3dlZCB0byBzdWNjZXNzZnVsbHkgY29tcGlsZSBzaGFkZXJzIHRoYXQgaGF2ZSBtb3Jl
IHRoYW4gdGhlCi0vLyBtYXhpbXVtIG51bWJlciBvZiB2YXJ5aW5ncy4gKGh0dHA6Ly9hbmdsZWJ1
Zy5jb20vMTI5NikKLVRFU1RfUChHTFNMVGVzdCwgRElTQUJMRURfTWF4UGx1c09uZVZhcnlpbmdW
ZWMyKQotewotICAgIEdMaW50IG1heFZhcnlpbmdzID0gMDsKLSAgICBnbEdldEludGVnZXJ2KEdM
X01BWF9WQVJZSU5HX1ZFQ1RPUlMsICZtYXhWYXJ5aW5ncyk7Ci0KLSAgICBWYXJ5aW5nVGVzdEJh
c2UoMCwgMCwgMiAqIG1heFZhcnlpbmdzICsgMSwgMCwgMCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNl
LCBmYWxzZSwgZmFsc2UpOwotfQotCi0vLyBEaXNhYmxlZCBiZWNhdXNlIGRyaXZlcnMgYXJlIGFs
bG93ZWQgdG8gc3VjY2Vzc2Z1bGx5IGNvbXBpbGUgc2hhZGVycyB0aGF0IGhhdmUgbW9yZSB0aGFu
IHRoZQotLy8gbWF4aW11bSBudW1iZXIgb2YgdmFyeWluZ3MuIChodHRwOi8vYW5nbGVidWcuY29t
LzEyOTYpCi1URVNUX1AoR0xTTFRlc3QsIERJU0FCTEVEX01heFZhcnlpbmdWZWMzQXJyYXlBbmRN
YXhQbHVzT25lRmxvYXRBcnJheSkKLXsKLSAgICBHTGludCBtYXhWYXJ5aW5ncyA9IDA7Ci0gICAg
Z2xHZXRJbnRlZ2VydihHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCAmbWF4VmFyeWluZ3MpOwotCi0g
ICAgVmFyeWluZ1Rlc3RCYXNlKDAsIG1heFZhcnlpbmdzIC8gMiArIDEsIDAsIDAsIDAsIDAsIDAs
IG1heFZhcnlpbmdzIC8gMiwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UpOwotfQotCi0vLyBW
ZXJpZnkgc2hhZGVyIHNvdXJjZSB3aXRoIGEgZml4ZWQgbGVuZ3RoIHRoYXQgaXMgbGVzcyB0aGFu
IHRoZSBudWxsLXRlcm1pbmF0ZWQgbGVuZ3RoIHdpbGwgY29tcGlsZS4KLVRFU1RfUChHTFNMVGVz
dCwgRml4ZWRTaGFkZXJMZW5ndGgpCi17Ci0gICAgR0x1aW50IHNoYWRlciA9IGdsQ3JlYXRlU2hh
ZGVyKEdMX0ZSQUdNRU5UX1NIQURFUik7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBhcHBlbmRH
YXJiYWdlID0gImFiY2FzZGZhc2RmYXNkZmFzZGZhc2RmIjsKLSAgICBjb25zdCBzdGQ6OnN0cmlu
ZyBzb3VyY2UgPSAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDAsIDAsIDAp
OyB9IiArIGFwcGVuZEdhcmJhZ2U7Ci0gICAgY29uc3QgY2hhciAqc291cmNlQXJyYXlbMV0gPSB7
IHNvdXJjZS5jX3N0cigpIH07Ci0gICAgR0xpbnQgbGVuZ3Roc1sxXSA9IHsgc3RhdGljX2Nhc3Q8
R0xpbnQ+KHNvdXJjZS5sZW5ndGgoKSAtIGFwcGVuZEdhcmJhZ2UubGVuZ3RoKCkpIH07Ci0gICAg
Z2xTaGFkZXJTb3VyY2Uoc2hhZGVyLCBzdGF0aWNfY2FzdDxHTHNpemVpPihBcnJheVNpemUoc291
cmNlQXJyYXkpKSwgc291cmNlQXJyYXksIGxlbmd0aHMpOwotICAgIGdsQ29tcGlsZVNoYWRlcihz
aGFkZXIpOwotCi0gICAgR0xpbnQgY29tcGlsZVJlc3VsdDsKLSAgICBnbEdldFNoYWRlcml2KHNo
YWRlciwgR0xfQ09NUElMRV9TVEFUVVMsICZjb21waWxlUmVzdWx0KTsKLSAgICBFWFBFQ1RfTkUo
Y29tcGlsZVJlc3VsdCwgMCk7Ci19Ci0KLS8vIFZlcmlmeSB0aGF0IGEgbmVnYXRpdmUgc2hhZGVy
IHNvdXJjZSBsZW5ndGggaXMgdHJlYXRlZCBhcyBhIG51bGwtdGVybWluYXRlZCBsZW5ndGguCi1U
RVNUX1AoR0xTTFRlc3QsIE5lZ2F0aXZlU2hhZGVyTGVuZ3RoKQotewotICAgIEdMdWludCBzaGFk
ZXIgPSBnbENyZWF0ZVNoYWRlcihHTF9GUkFHTUVOVF9TSEFERVIpOwotCi0gICAgY29uc3QgY2hh
ciAqc291cmNlQXJyYXlbMV0gPSB7ICJ2b2lkIG1haW4oKSB7IGdsX0ZyYWdDb2xvciA9IHZlYzQo
MCwgMCwgMCwgMCk7IH0iIH07Ci0gICAgR0xpbnQgbGVuZ3Roc1sxXSA9IHsgLTEwIH07Ci0gICAg
Z2xTaGFkZXJTb3VyY2Uoc2hhZGVyLCBzdGF0aWNfY2FzdDxHTHNpemVpPihBcnJheVNpemUoc291
cmNlQXJyYXkpKSwgc291cmNlQXJyYXksIGxlbmd0aHMpOwotICAgIGdsQ29tcGlsZVNoYWRlcihz
aGFkZXIpOwotCi0gICAgR0xpbnQgY29tcGlsZVJlc3VsdDsKLSAgICBnbEdldFNoYWRlcml2KHNo
YWRlciwgR0xfQ09NUElMRV9TVEFUVVMsICZjb21waWxlUmVzdWx0KTsKLSAgICBFWFBFQ1RfTkUo
Y29tcGlsZVJlc3VsdCwgMCk7Ci19Ci0KLS8vIENoZWNrIHRoYXQgaGF2aW5nIGFuIGludmFsaWQg
Y2hhciBhZnRlciB0aGUgIi4iIGRvZXNuJ3QgY2F1c2UgYW4gYXNzZXJ0LgotVEVTVF9QKEdMU0xU
ZXN0LCBJbnZhbGlkRmllbGRGaXJzdENoYXIpCi17Ci0gICAgR0x1aW50IHNoYWRlciAgICAgID0g
Z2xDcmVhdGVTaGFkZXIoR0xfVkVSVEVYX1NIQURFUik7Ci0gICAgY29uc3QgY2hhciAqc291cmNl
ID0gInZvaWQgbWFpbigpIHt2ZWM0IHg7IHgufSI7Ci0gICAgZ2xTaGFkZXJTb3VyY2Uoc2hhZGVy
LCAxLCAmc291cmNlLCAwKTsKLSAgICBnbENvbXBpbGVTaGFkZXIoc2hhZGVyKTsKLQotICAgIEdM
aW50IGNvbXBpbGVSZXN1bHQ7Ci0gICAgZ2xHZXRTaGFkZXJpdihzaGFkZXIsIEdMX0NPTVBJTEVf
U1RBVFVTLCAmY29tcGlsZVJlc3VsdCk7Ci0gICAgRVhQRUNUX0VRKDAsIGNvbXBpbGVSZXN1bHQp
OwotfQotCi0vLyBWZXJpZnkgdGhhdCBhIGxlbmd0aCBhcnJheSB3aXRoIG1peGVkIHBvc2l0aXZl
IGFuZCBuZWdhdGl2ZSB2YWx1ZXMgY29tcGlsZXMuCi1URVNUX1AoR0xTTFRlc3QsIE1peGVkU2hh
ZGVyTGVuZ3RocykKLXsKLSAgICBHTHVpbnQgc2hhZGVyID0gZ2xDcmVhdGVTaGFkZXIoR0xfRlJB
R01FTlRfU0hBREVSKTsKLQotICAgIGNvbnN0IGNoYXIgKnNvdXJjZUFycmF5W10gPQotICAgIHsK
LSAgICAgICAgInZvaWQgbWFpbigpIiwKLSAgICAgICAgInsiLAotICAgICAgICAiICAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQoMCwgMCwgMCwgMCk7IiwKLSAgICAgICAgIn0iLAotICAgIH07Ci0gICAg
R0xpbnQgbGVuZ3Roc1tdID0KLSAgICB7Ci0gICAgICAgIC0xMCwKLSAgICAgICAgMSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8R0xpbnQ+KHN0cmxlbihzb3VyY2VBcnJheVsyXSkpLAotICAgICAgICAt
MSwKLSAgICB9OwotICAgIEFTU0VSVF9FUShBcnJheVNpemUoc291cmNlQXJyYXkpLCBBcnJheVNp
emUobGVuZ3RocykpOwotCi0gICAgZ2xTaGFkZXJTb3VyY2Uoc2hhZGVyLCBzdGF0aWNfY2FzdDxH
THNpemVpPihBcnJheVNpemUoc291cmNlQXJyYXkpKSwgc291cmNlQXJyYXksIGxlbmd0aHMpOwot
ICAgIGdsQ29tcGlsZVNoYWRlcihzaGFkZXIpOwotCi0gICAgR0xpbnQgY29tcGlsZVJlc3VsdDsK
LSAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR0xfQ09NUElMRV9TVEFUVVMsICZjb21waWxlUmVz
dWx0KTsKLSAgICBFWFBFQ1RfTkUoY29tcGlsZVJlc3VsdCwgMCk7Ci19Ci0KLS8vIFZlcmlmeSB0
aGF0IHplcm8tbGVuZ3RoIHNoYWRlciBzb3VyY2UgZG9lcyBub3QgYWZmZWN0IHNoYWRlciBjb21w
aWxhdGlvbi4KLVRFU1RfUChHTFNMVGVzdCwgWmVyb1NoYWRlckxlbmd0aCkKLXsKLSAgICBHTHVp
bnQgc2hhZGVyID0gZ2xDcmVhdGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSKTsKLQotICAgIGNv
bnN0IGNoYXIgKnNvdXJjZUFycmF5W10gPQotICAgIHsKLSAgICAgICAgImFkZmFzZGYiLAotICAg
ICAgICAiMzQ1MzQiLAotICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFnQ29sb3IgPSB2ZWM0
KDAsIDAsIDAsIDApOyB9IiwKLSAgICAgICAgIiIsCi0gICAgICAgICJhc2RmYXNkZnNkc2RmIiwK
LSAgICB9OwotICAgIEdMaW50IGxlbmd0aHNbXSA9Ci0gICAgewotICAgICAgICAwLAotICAgICAg
ICAwLAotICAgICAgICAtMSwKLSAgICAgICAgMCwKLSAgICAgICAgMCwKLSAgICB9OwotICAgIEFT
U0VSVF9FUShBcnJheVNpemUoc291cmNlQXJyYXkpLCBBcnJheVNpemUobGVuZ3RocykpOwotCi0g
ICAgZ2xTaGFkZXJTb3VyY2Uoc2hhZGVyLCBzdGF0aWNfY2FzdDxHTHNpemVpPihBcnJheVNpemUo
c291cmNlQXJyYXkpKSwgc291cmNlQXJyYXksIGxlbmd0aHMpOwotICAgIGdsQ29tcGlsZVNoYWRl
cihzaGFkZXIpOwotCi0gICAgR0xpbnQgY29tcGlsZVJlc3VsdDsKLSAgICBnbEdldFNoYWRlcml2
KHNoYWRlciwgR0xfQ09NUElMRV9TVEFUVVMsICZjb21waWxlUmVzdWx0KTsKLSAgICBFWFBFQ1Rf
TkUoY29tcGlsZVJlc3VsdCwgMCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgYmFkIGluZGV4IGV4cHJl
c3Npb25zIGRvbid0IGNyYXNoIEFOR0xFJ3MgdHJhbnNsYXRvci4KLS8vIGh0dHBzOi8vY29kZS5n
b29nbGUuY29tL3AvYW5nbGVwcm9qZWN0L2lzc3Vlcy9kZXRhaWw/aWQ9ODU3Ci1URVNUX1AoR0xT
TFRlc3QsIEJhZEluZGV4QnVnKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNo
YWRlclNvdXJjZVZlYyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAg
ICAgICAgInVuaWZvcm0gdmVjNCB1bmlmb3JtVmVjO1xuIgotICAgICAgICAidm9pZCBtYWluKClc
biIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHVuaWZv
cm1WZWNbaW50KCldKTtcbiIKLSAgICAgICAgIn0iOwotCi0gICAgR0x1aW50IHNoYWRlciA9IENv
bXBpbGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmcmFnbWVudFNoYWRlclNvdXJjZVZlYyk7
Ci0gICAgRVhQRUNUX0VRKDB1LCBzaGFkZXIpOwotCi0gICAgaWYgKHNoYWRlciAhPSAwKQotICAg
IHsKLSAgICAgICAgZ2xEZWxldGVTaGFkZXIoc2hhZGVyKTsKLSAgICB9Ci0KLSAgICBjb25zdCBz
dGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXJTb3VyY2VNYXQgPQotICAgICAgICAicHJlY2lzaW9u
IG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDQgdW5pZm9ybU1hdDtcbiIK
LSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCh1bmlmb3JtTWF0W2ludCgpXSk7XG4iCi0gICAgICAgICJ9IjsKLQot
ICAgIHNoYWRlciA9IENvbXBpbGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmcmFnbWVudFNo
YWRlclNvdXJjZU1hdCk7Ci0gICAgRVhQRUNUX0VRKDB1LCBzaGFkZXIpOwotCi0gICAgaWYgKHNo
YWRlciAhPSAwKQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVTaGFkZXIoc2hhZGVyKTsKLSAgICB9
Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXJTb3VyY2VBcnJheSA9Ci0g
ICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInVuaWZvcm0gdmVj
NCB1bmlmb3JtQXJyYXk7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xu
IgotICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQodW5pZm9ybUFycmF5W2ludCgpXSk7
XG4iCi0gICAgICAgICJ9IjsKLQotICAgIHNoYWRlciA9IENvbXBpbGVTaGFkZXIoR0xfRlJBR01F
TlRfU0hBREVSLCBmcmFnbWVudFNoYWRlclNvdXJjZUFycmF5KTsKLSAgICBFWFBFQ1RfRVEoMHUs
IHNoYWRlcik7Ci0KLSAgICBpZiAoc2hhZGVyICE9IDApCi0gICAgewotICAgICAgICBnbERlbGV0
ZVNoYWRlcihzaGFkZXIpOwotICAgIH0KLX0KLQotLy8gVGVzdCB0aGF0IHN0cnVjdHMgZGVmaW5l
ZCBpbiB1bmlmb3JtcyBhcmUgdHJhbnNsYXRlZCBjb3JyZWN0bHkuCi1URVNUX1AoR0xTTFRlc3Qs
IFN0cnVjdFNwZWNpZmllcnNVbmlmb3JtcykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFn
bWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIHByZWNpc2lv
biBtZWRpdW1wIGZsb2F0OwotCi0gICAgICAgIHVuaWZvcm0gc3RydWN0IFMgeyBmbG9hdCBmaWVs
ZDt9IHM7Ci0KLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCgxLCAwLCAwLCAxKTsKLSAgICAgICAgICAgIGdsX0ZyYWdDb2xvci5h
ICs9IHMuZmllbGQ7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBD
b21waWxlUHJvZ3JhbShtU2ltcGxlVlNTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAg
ICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwotfQotCi0vLyBUZXN0IHRoYXQgZ2xfRGVwdGhSYW5n
ZSBpcyBub3Qgc3RvcmVkIGFzIGEgdW5pZm9ybSBsb2NhdGlvbi4gU2luY2UgdW5pZm9ybXMKLS8v
IGJlZ2lubmluZyB3aXRoICJnbF8iIGFyZSBmaWx0ZXJlZCBvdXQgYnkgb3VyIHZhbGlkYXRpb24g
bG9naWMsIHdlIG11c3QKLS8vIGJ5cGFzcyB0aGUgdmFsaWRhdGlvbiB0byB0ZXN0IHRoZSBiZWhh
dmlvdXIgb2YgdGhlIGltcGxlbWVudGF0aW9uLgotLy8gKG5vdGUgdGhpcyB0ZXN0IGlzIHN0aWxs
IEltcGwtaW5kZXBlbmRlbnQpCi1URVNUX1AoR0xTTFRlc3QsIERlcHRoUmFuZ2VVbmlmb3JtcykK
LXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9IFNIQURFUl9T
T1VSQ0UKLSAgICAoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotCi0gICAgICAg
IHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQo
Z2xfRGVwdGhSYW5nZS5uZWFyLCBnbF9EZXB0aFJhbmdlLmZhciwgZ2xfRGVwdGhSYW5nZS5kaWZm
LCAxKTsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQ
cm9ncmFtKG1TaW1wbGVWU1NvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVD
VF9ORSgwdSwgcHJvZ3JhbSk7Ci0KLSAgICAvLyBkaXZlIGludG8gdGhlIEFOR0xFIGludGVybmFs
cywgc28gd2UgY2FuIGJ5cGFzcyB2YWxpZGF0aW9uLgotICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gcmVpbnRlcnByZXRfY2FzdDxnbDo6Q29udGV4dCAqPihnZXRFR0xXaW5kb3coKS0+Z2V0Q29u
dGV4dCgpKTsKLSAgICBnbDo6UHJvZ3JhbSAqZ2xQcm9ncmFtID0gY29udGV4dC0+Z2V0UHJvZ3Jh
bShwcm9ncmFtKTsKLSAgICBHTGludCBuZWFySW5kZXggPSBnbFByb2dyYW0tPmdldFVuaWZvcm1M
b2NhdGlvbigiZ2xfRGVwdGhSYW5nZS5uZWFyIik7Ci0gICAgRVhQRUNUX0VRKC0xLCBuZWFySW5k
ZXgpOwotCi0gICAgLy8gVGVzdCBkcmF3aW5nIGRvZXMgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4K
LSAgICBkcmF3UXVhZChwcm9ncmFtLCAiaW5wdXRBdHRyaWJ1dGUiLCAwLjVmKTsKLQotICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOwotfQot
Ci1zdGQ6OnN0cmluZyBHZW5lcmF0ZVNtYWxsUG93U2hhZGVyKGRvdWJsZSBiYXNlLCBkb3VibGUg
ZXhwb25lbnQpCi17Ci0gICAgc3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwotCi0gICAgc3RyZWFt
LnByZWNpc2lvbig4KTsKLQotICAgIGRvdWJsZSByZXN1bHQgPSBwb3coYmFzZSwgZXhwb25lbnQp
OwotCi0gICAgc3RyZWFtIDw8ICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCi0gICAgICAgICAg
IDw8ICJmbG9hdCBmdW4oZmxvYXQgYXJnKVxuIgotICAgICAgICAgICA8PCAie1xuIgotICAgICAg
ICAgICA8PCAiICAgIHJldHVybiBwb3coYXJnLCAiIDw8IHN0ZDo6Zml4ZWQgPDwgZXhwb25lbnQg
PDwgIik7XG4iCi0gICAgICAgICAgIDw8ICJ9XG4iCi0gICAgICAgICAgIDw8ICJcbiIKLSAgICAg
ICAgICAgPDwgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgIDw8ICJ7XG4iCi0gICAgICAgICAg
IDw8ICIgICAgY29uc3QgZmxvYXQgYSA9ICIgPDwgc3RkOjpzY2llbnRpZmljIDw8IGJhc2UgPDwg
IjtcbiIKLSAgICAgICAgICAgPDwgIiAgICBmbG9hdCBiID0gZnVuKGEpO1xuIgotICAgICAgICAg
ICA8PCAiICAgIGlmIChhYnMoIiA8PCByZXN1bHQgPDwgIiAtIGIpIDwgIiA8PCBzdGQ6OmFicyhy
ZXN1bHQgKiAwLjAwMSkgPDwgIilcbiIKLSAgICAgICAgICAgPDwgIiAgICB7XG4iCi0gICAgICAg
ICAgIDw8ICIgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwgMS4wKTtc
biIKLSAgICAgICAgICAgPDwgIiAgICB9XG4iCi0gICAgICAgICAgIDw8ICIgICAgZWxzZVxuIgot
ICAgICAgICAgICA8PCAiICAgIHtcbiIKLSAgICAgICAgICAgPDwgIiAgICAgICAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApO1xuIgotICAgICAgICAgICA8PCAiICAgIH1c
biIKLSAgICAgICAgICAgPDwgIn1cbiI7Ci0KLSAgICByZXR1cm4gc3RyZWFtLnN0cigpOwotfQot
Ci0vLyBDb3ZlcnMgdGhlIFdlYkdMIHRlc3QgJ2dsc2wvYnVncy9wb3ctb2Ytc21hbGwtY29uc3Rh
bnQtaW4tdXNlci1kZWZpbmVkLWZ1bmN0aW9uJwotLy8gU2VlIGh0dHA6Ly9hbmdsZWJ1Zy5jb20v
ODUxCi1URVNUX1AoR0xTTFRlc3QsIFBvd09mU21hbGxDb25zdGFudCkKLXsKLSAgICBzdGQ6OnZl
Y3Rvcjxkb3VibGU+IGJhZHM7Ci0gICAgZm9yIChpbnQgZXBzID0gLTE7IGVwcyA8PSAxOyArK2Vw
cykKLSAgICB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAtNDsgaSA8PSA1OyArK2kpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChpID49IC0xICYmIGkgPD0gMSkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGNvbnN0IGRvdWJsZSBlcHNpbG9uID0gMS4wZS04OwotICAg
ICAgICAgICAgZG91YmxlIGJhZCAgICAgICAgICAgPSBzdGF0aWNfY2FzdDxkb3VibGU+KGkpICsg
c3RhdGljX2Nhc3Q8ZG91YmxlPihlcHMpICogZXBzaWxvbjsKLSAgICAgICAgICAgIGJhZHMucHVz
aF9iYWNrKGJhZCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKGRvdWJsZSBiYWQgOiBi
YWRzKQotICAgIHsKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U2hhZGVyU291
cmNlID0gR2VuZXJhdGVTbWFsbFBvd1NoYWRlcigxLjBlLTYsIGJhZCk7Ci0KLSAgICAgICAgQU5H
TEVfR0xfUFJPR1JBTShwcm9ncmFtLCBtU2ltcGxlVlNTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291
cmNlKTsKLQotICAgICAgICBkcmF3UXVhZChwcm9ncmFtLmdldCgpLCAiaW5wdXRBdHRyaWJ1dGUi
LCAwLjVmKTsKLQotICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6
Z3JlZW4pOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci19Ci0KLS8vIFRl
c3QgdGhhdCBmcmFnbWVudCBzaGFkZXJzIHdoaWNoIGNvbnRhaW4gbm9uLWNvbnN0YW50IGxvb3Ag
aW5kZXhlcnMgYW5kIGNvbXBpbGVkIGZvciBGTDlfMyBhbmQKLS8vIGJlbG93Ci0vLyBmYWlsIHdp
dGggYSBzcGVjaWZpYyBlcnJvciBtZXNzYWdlLgotLy8gQWRkaXRpb25hbGx5IHRlc3QgdGhhdCB0
aGUgc2FtZSBmcmFnbWVudCBzaGFkZXIgY29tcGlsZXMgc3VjY2Vzc2Z1bGx5IHdpdGggZmVhdHVy
ZSBsZXZlbHMgZ3JlYXRlcgotLy8gdGhhbiBGTDlfMy4KLVRFU1RfUChHTFNMVGVzdCwgTG9vcElu
ZGV4aW5nVmFsaWRhdGlvbikKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRl
clNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OwotCi0gICAgICAgIHVuaWZvcm0gZmxvYXQgbG9vcE1heDsKLQotICAgICAgICB2b2lk
IG1haW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEsIDAs
IDAsIDEpOwotICAgICAgICAgICAgZm9yIChmbG9hdCBsID0gMC4wOyBsIDwgbG9vcE1heDsgbCsr
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChsb29wTWF4ID4gMy4wKQotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yLmEgKz0gMC4x
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICk7Ci0K
LSAgICBHTHVpbnQgc2hhZGVyID0gZ2xDcmVhdGVTaGFkZXIoR0xfRlJBR01FTlRfU0hBREVSKTsK
LQotICAgIGNvbnN0IGNoYXIgKnNvdXJjZUFycmF5WzFdID0ge2ZyYWdtZW50U2hhZGVyU291cmNl
LmNfc3RyKCl9OwotICAgIGdsU2hhZGVyU291cmNlKHNoYWRlciwgMSwgc291cmNlQXJyYXksIG51
bGxwdHIpOwotICAgIGdsQ29tcGlsZVNoYWRlcihzaGFkZXIpOwotCi0gICAgR0xpbnQgY29tcGls
ZVJlc3VsdDsKLSAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR0xfQ09NUElMRV9TVEFUVVMsICZj
b21waWxlUmVzdWx0KTsKLQotICAgIC8vIElmIHRoZSB0ZXN0IGlzIGNvbmZpZ3VyZWQgdG8gcnVu
IGxpbWl0ZWQgdG8gRmVhdHVyZSBMZXZlbCA5XzMsIHRoZW4gaXQgaXMKLSAgICAvLyBhc3N1bWVk
IHRoYXQgc2hhZGVyIGNvbXBpbGF0aW9uIHdpbGwgZmFpbCB3aXRoIGFuIGV4cGVjdGVkIGVycm9y
IG1lc3NhZ2UgY29udGFpbmluZwotICAgIC8vICJMb29wIGluZGV4IGNhbm5vdCBiZSBjb21wYXJl
ZCB3aXRoIG5vbi1jb25zdGFudCBleHByZXNzaW9uIgotICAgIGlmICgoR2V0UGFyYW0oKSA9PSBF
UzJfRDNEMTFfRkw5XzMoKSB8fCBHZXRQYXJhbSgpID09IEVTMl9EM0Q5KCkpKQotICAgIHsKLSAg
ICAgICAgaWYgKGNvbXBpbGVSZXN1bHQgIT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgRkFJ
TCgpIDw8ICJTaGFkZXIgY29tcGlsYXRpb24gc3VjY2VlZGVkLCBleHBlY3RlZCBmYWlsdXJlIjsK
LSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIEdMaW50IGlu
Zm9Mb2dMZW5ndGg7Ci0gICAgICAgICAgICBnbEdldFNoYWRlcml2KHNoYWRlciwgR0xfSU5GT19M
T0dfTEVOR1RILCAmaW5mb0xvZ0xlbmd0aCk7Ci0KLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGlu
Zm9Mb2c7Ci0gICAgICAgICAgICBpbmZvTG9nLnJlc2l6ZShpbmZvTG9nTGVuZ3RoKTsKLSAgICAg
ICAgICAgIGdsR2V0U2hhZGVySW5mb0xvZyhzaGFkZXIsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGlu
Zm9Mb2cuc2l6ZSgpKSwgTlVMTCwgJmluZm9Mb2dbMF0pOwotCi0gICAgICAgICAgICBpZiAoaW5m
b0xvZy5maW5kKCJMb29wIGluZGV4IGNhbm5vdCBiZSBjb21wYXJlZCB3aXRoIG5vbi1jb25zdGFu
dCBleHByZXNzaW9uIikgPT0KLSAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZzo6bnBvcykKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBGQUlMKCkgPDwgIlNoYWRlciBjb21waWxhdGlv
biBmYWlsZWQgd2l0aCB1bmV4cGVjdGVkIGVycm9yIG1lc3NhZ2UiOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIEVYUEVDVF9ORSgwLCBj
b21waWxlUmVzdWx0KTsKLSAgICB9Ci0KLSAgICBpZiAoc2hhZGVyICE9IDApCi0gICAgewotICAg
ICAgICBnbERlbGV0ZVNoYWRlcihzaGFkZXIpOwotICAgIH0KLX0KLQotLy8gVGVzdHMgdGhhdCB0
aGUgbWF4aW11bSB1bmlmb3JtcyBjb3VudCByZXR1cm5lZCBmcm9tIHF1ZXJ5aW5nIEdMX01BWF9W
RVJURVhfVU5JRk9STV9WRUNUT1JTCi0vLyBjYW4gYWN0dWFsbHkgYmUgdXNlZC4KLVRFU1RfUChH
TFNMVGVzdCwgVmVyaWZ5TWF4VmVydGV4VW5pZm9ybVZlY3RvcnMpCi17Ci0gICAgaW50IG1heFVu
aWZvcm1zID0gMTAwMDA7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVYX1VOSUZPUk1f
VkVDVE9SUywgJm1heFVuaWZvcm1zKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBz
dGQ6OmNvdXQgPDwgIlZhbGlkYXRpbmcgR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMgPSAi
IDw8IG1heFVuaWZvcm1zIDw8IHN0ZDo6ZW5kbDsKLQotICAgIENvbXBpbGVHTFNMV2l0aFVuaWZv
cm1zQW5kU2FtcGxlcnMobWF4VW5pZm9ybXMsIDAsIDAsIDAsIHRydWUpOwotfQotCi0vLyBUZXN0
cyB0aGF0IHRoZSBtYXhpbXVtIHVuaWZvcm1zIGNvdW50IHJldHVybmVkIGZyb20gcXVlcnlpbmcg
R0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMKLS8vIGNhbiBhY3R1YWxseSBiZSB1c2VkIGFs
b25nIHdpdGggdGhlIG1heGltdW0gbnVtYmVyIG9mIHRleHR1cmUgc2FtcGxlcnMuCi1URVNUX1Ao
R0xTTFRlc3QsIFZlcmlmeU1heFZlcnRleFVuaWZvcm1WZWN0b3JzV2l0aFNhbXBsZXJzKQotewot
ICAgIGlmIChHZXRQYXJhbSgpLmVnbFBhcmFtZXRlcnMucmVuZGVyZXIgPT0gRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFIHx8Ci0gICAgICAgIEdldFBhcmFtKCkuZWdsUGFyYW1l
dGVycy5yZW5kZXJlciA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRSkK
LSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBPcGVuR0wuIiA8
PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbnQgbWF4VW5pZm9y
bXMgPSAxMDAwMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNU
T1JTLCAmbWF4VW5pZm9ybXMpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIHN0ZDo6
Y291dCA8PCAiVmFsaWRhdGluZyBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUyA9ICIgPDwg
bWF4VW5pZm9ybXMgPDwgc3RkOjplbmRsOwotCi0gICAgaW50IG1heFRleHR1cmVJbWFnZVVuaXRz
ID0gMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklU
UywgJm1heFRleHR1cmVJbWFnZVVuaXRzKTsKLQotICAgIENvbXBpbGVHTFNMV2l0aFVuaWZvcm1z
QW5kU2FtcGxlcnMobWF4VW5pZm9ybXMsIDAsIG1heFRleHR1cmVJbWFnZVVuaXRzLCAwLCB0cnVl
KTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgbWF4aW11bSB1bmlmb3JtcyBjb3VudCArIDEgZnJv
bSBxdWVyeWluZyBHTF9NQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUwotLy8gZmFpbHMgc2hhZGVy
IGNvbXBpbGF0aW9uLgotVEVTVF9QKEdMU0xUZXN0LCBWZXJpZnlNYXhWZXJ0ZXhVbmlmb3JtVmVj
dG9yc0V4Y2VlZGVkKQotewotICAgIGludCBtYXhVbmlmb3JtcyA9IDEwMDAwOwotICAgIGdsR2V0
SW50ZWdlcnYoR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMsICZtYXhVbmlmb3Jtcyk7Ci0g
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgc3RkOjpjb3V0IDw8ICJWYWxpZGF0aW5nIEdM
X01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTICsgMSA9ICIgPDwgbWF4VW5pZm9ybXMgKyAxIDw8
IHN0ZDo6ZW5kbDsKLQotICAgIENvbXBpbGVHTFNMV2l0aFVuaWZvcm1zQW5kU2FtcGxlcnMobWF4
VW5pZm9ybXMgKyAxLCAwLCAwLCAwLCBmYWxzZSk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgdGhlIG1h
eGltdW0gdW5pZm9ybXMgY291bnQgcmV0dXJuZWQgZnJvbSBxdWVyeWluZyBHTF9NQVhfRlJBR01F
TlRfVU5JRk9STV9WRUNUT1JTCi0vLyBjYW4gYWN0dWFsbHkgYmUgdXNlZC4KLVRFU1RfUChHTFNM
VGVzdCwgVmVyaWZ5TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycykKLXsKLSAgICBpbnQgbWF4VW5p
Zm9ybXMgPSAxMDAwMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX01BWF9GUkFHTUVOVF9VTklGT1JN
X1ZFQ1RPUlMsICZtYXhVbmlmb3Jtcyk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAg
c3RkOjpjb3V0IDw8ICJWYWxpZGF0aW5nIEdMX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlMg
PSAiIDw8IG1heFVuaWZvcm1zIDw8IHN0ZDo6ZW5kbDsKLQotICAgIENvbXBpbGVHTFNMV2l0aFVu
aWZvcm1zQW5kU2FtcGxlcnMoMCwgbWF4VW5pZm9ybXMsIDAsIDAsIHRydWUpOwotfQotCi0vLyBU
ZXN0cyB0aGF0IHRoZSBtYXhpbXVtIHVuaWZvcm1zIGNvdW50IHJldHVybmVkIGZyb20gcXVlcnlp
bmcgR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUwotLy8gY2FuIGFjdHVhbGx5IGJlIHVz
ZWQgYWxvbmcgd2l0aCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGV4dHVyZSBzYW1wbGVycy4KLVRF
U1RfUChHTFNMVGVzdCwgVmVyaWZ5TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9yc1dpdGhTYW1wbGVy
cykKLXsKLSAgICBpZiAoR2V0UGFyYW0oKS5lZ2xQYXJhbWV0ZXJzLnJlbmRlcmVyID09IEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSB8fAotICAgICAgICBHZXRQYXJhbSgpLmVn
bFBhcmFtZXRlcnMucmVuZGVyZXIgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNf
QU5HTEUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gT3Bl
bkdMLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaW50IG1h
eFVuaWZvcm1zID0gMTAwMDA7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfRlJBR01FTlRfVU5J
Rk9STV9WRUNUT1JTLCAmbWF4VW5pZm9ybXMpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgaW50IG1heFRleHR1cmVJbWFnZVVuaXRzID0gMDsKLSAgICBnbEdldEludGVnZXJ2KEdM
X01BWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmbWF4VGV4dHVyZUltYWdlVW5pdHMpOwotCi0gICAg
Q29tcGlsZUdMU0xXaXRoVW5pZm9ybXNBbmRTYW1wbGVycygwLCBtYXhVbmlmb3JtcywgMCwgbWF4
VGV4dHVyZUltYWdlVW5pdHMsIHRydWUpOwotfQotCi0vLyBUZXN0cyB0aGF0IHRoZSBtYXhpbXVt
IHVuaWZvcm1zIGNvdW50ICsgMSBmcm9tIHF1ZXJ5aW5nIEdMX01BWF9GUkFHTUVOVF9VTklGT1JN
X1ZFQ1RPUlMKLS8vIGZhaWxzIHNoYWRlciBjb21waWxhdGlvbi4KLVRFU1RfUChHTFNMVGVzdCwg
VmVyaWZ5TWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9yc0V4Y2VlZGVkKQotewotICAgIGludCBtYXhV
bmlmb3JtcyA9IDEwMDAwOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX0ZSQUdNRU5UX1VOSUZP
Uk1fVkVDVE9SUywgJm1heFVuaWZvcm1zKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAg
ICBzdGQ6OmNvdXQgPDwgIlZhbGlkYXRpbmcgR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9S
UyArIDEgPSAiIDw8IG1heFVuaWZvcm1zICsgMQotICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7
Ci0KLSAgICBDb21waWxlR0xTTFdpdGhVbmlmb3Jtc0FuZFNhbXBsZXJzKDAsIG1heFVuaWZvcm1z
ICsgMSwgMCwgMCwgZmFsc2UpOwotfQotCi0vLyBUZXN0IHRoYXQgdHdvIGNvbnN0cnVjdG9ycyB3
aGljaCBoYXZlIHZlYzQgYW5kIG1hdDIgcGFyYW1ldGVycyBnZXQgZGlzYW1iaWd1YXRlZCAoaXNz
dWUgaW4KLS8vIEhMU0wpLgotVEVTVF9QKEdMU0xUZXN0X0VTMywgQW1iaWd1b3VzQ29uc3RydWN0
b3JDYWxsMngyKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNl
ID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIGhpZ2hw
IGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAi
dm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBteV9GcmFnQ29sb3Ig
PSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZl
cnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAg
InByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAgImluIHZlYzQgYV92ZWM7XG4iCi0g
ICAgICAgICJpbiBtYXQyIGFfbWF0O1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAg
ICAgIntcbiIKLSAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV92ZWMpICsgdmVjNChh
X21hdCk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgRVhQ
RUNUX05FKDB1LCBwcm9ncmFtKTsKLX0KLQotLy8gVGVzdCB0aGF0IHR3byBjb25zdHJ1Y3RvcnMg
d2hpY2ggaGF2ZSBtYXQyeDMgYW5kIG1hdDN4MiBwYXJhbWV0ZXJzIGdldCBkaXNhbWJpZ3VhdGVk
LgotLy8gVGhpcyB3YXMgc3VzcGVjdGVkIHRvIGJlIGFuIGlzc3VlIGluIEhMU0wsIGJ1dCBITFNM
IHNlZW1zIHRvIGJlIGFibGUgdG8gbmF0aXZlbHkgY2hvb3NlIGJldHdlZW4KLS8vIHRoZSBmdW5j
dGlvbiBzaWduYXR1cmVzIGluIHRoaXMgY2FzZS4KLVRFU1RfUChHTFNMVGVzdF9FUzMsIEFtYmln
dW91c0NvbnN0cnVjdG9yQ2FsbDJ4MykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVu
dFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInBy
ZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtc
biIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAg
bXlfRnJhZ0NvbG9yID0gdmVjNCgwLjApO1xuIgotICAgICAgICAifSI7Ci0KLSAgICBjb25zdCBz
dGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCi0gICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCi0gICAgICAgICJpbiBtYXQz
eDIgYV9tYXRBO1xuIgotICAgICAgICAiaW4gbWF0MngzIGFfbWF0QjtcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSB2
ZWM0KGFfbWF0QSkgKyB2ZWM0KGFfbWF0Qik7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIEdMdWlu
dCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNo
YWRlclNvdXJjZSk7Ci0gICAgRVhQRUNUX05FKDB1LCBwcm9ncmFtKTsKLX0KLQotLy8gVGVzdCB0
aGF0IHR3byBmdW5jdGlvbnMgd2hpY2ggaGF2ZSB2ZWM0IGFuZCBtYXQyIHBhcmFtZXRlcnMgZ2V0
IGRpc2FtYmlndWF0ZWQgKGlzc3VlIGluIEhMU0wpLgotVEVTVF9QKEdMU0xUZXN0X0VTMywgQW1i
aWd1b3VzRnVuY3Rpb25DYWxsMngyKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50
U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJl
Y2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xu
IgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBt
eV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNc
biIKLSAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAgImluIHZlYzQg
YV92ZWM7XG4iCi0gICAgICAgICJpbiBtYXQyIGFfbWF0O1xuIgotICAgICAgICAidmVjNCBmb28o
dmVjNCBhKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIHJldHVybiBhO1xuIgotICAg
ICAgICAifVxuIgotICAgICAgICAidmVjNCBmb28obWF0MiBhKVxuIgotICAgICAgICAie1xuIgot
ICAgICAgICAiICAgIHJldHVybiB2ZWM0KGFbMF1bMF0pO1xuIgotICAgICAgICAifVxuIgotICAg
ICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBnbF9Qb3Np
dGlvbiA9IGZvbyhhX3ZlYykgKyBmb28oYV9tYXQpO1xuIgotICAgICAgICAifSI7Ci0KLSAgICBH
THVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21l
bnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Ci19Ci0KLS8vIFRl
c3QgdGhhdCBhbiB1c2VyLWRlZmluZWQgZnVuY3Rpb24gd2l0aCBhIGxhcmdlIG51bWJlciBvZiBm
bG9hdDQgcGFyYW1ldGVycyBkb2Vzbid0IGZhaWwgZHVlIHRvCi0vLyB0aGUgZnVuY3Rpb24gbmFt
ZSBiZWluZyB0b28gbG9uZy4KLVRFU1RfUChHTFNMVGVzdF9FUzMsIExhcmdlTnVtYmVyT2ZGbG9h
dDRQYXJhbWV0ZXJzKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291
cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIGhp
Z2hwIGZsb2F0O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAg
ICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBteV9GcmFnQ29s
b3IgPSB2ZWM0KDAuMCk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIHN0ZDo6c3RyaW5nc3RyZWFt
IHZlcnRleFNoYWRlclN0cmVhbTsKLSAgICBjb25zdCB1bnNpZ25lZCBpbnQgcGFyYW1Db3VudCA9
IDEwMjR1OwotCi0gICAgdmVydGV4U2hhZGVyU3RyZWFtIDw8ICIjdmVyc2lvbiAzMDAgZXNcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgImluIHZlYzQgYV92ZWM7XG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICJ2ZWM0IGxvdHNPZlZlYzRQYXJhbWV0ZXJzKCI7Ci0gICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDA7IGkgPCBwYXJhbUNvdW50OyArK2kpCi0gICAgewotICAgICAgICB2ZXJ0
ZXhTaGFkZXJTdHJlYW0gPDwgInZlYzQgYSIgPDwgaSA8PCAiLCAiOwotICAgIH0KLSAgICB2ZXJ0
ZXhTaGFkZXJTdHJlYW0gPDwgInZlYzQgYUxhc3QpXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICJ7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuICI7Ci0gICAg
Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBwYXJhbUNvdW50OyArK2kpCi0gICAgewotICAg
ICAgICB2ZXJ0ZXhTaGFkZXJTdHJlYW0gPDwgImEiIDw8IGkgPDwgIiArICI7Ci0gICAgfQotICAg
IHZlcnRleFNoYWRlclN0cmVhbSA8PCAiYUxhc3Q7XG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICJ9XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAi
ICAgIGdsX1Bvc2l0aW9uID0gbG90c09mVmVjNFBhcmFtZXRlcnMoIjsKLSAgICBmb3IgKHVuc2ln
bmVkIGludCBpID0gMDsgaSA8IHBhcmFtQ291bnQ7ICsraSkKLSAgICB7Ci0gICAgICAgIHZlcnRl
eFNoYWRlclN0cmVhbSA8PCAiYV92ZWMsICI7Ci0gICAgfQotICAgIHZlcnRleFNoYWRlclN0cmVh
bSA8PCAiYV92ZWMpO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAifSI7Ci0KLSAgICBH
THVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclN0cmVhbS5zdHIoKSwg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEVYUEVDVF9ORSgwdSwgcHJvZ3JhbSk7Ci19Ci0K
LS8vIFRoaXMgdGVzdCB3YXMgd3JpdHRlbiBzcGVjaWZpY2FsbHkgdG8gc3RyZXNzIERlZmVyR2xv
YmFsSW5pdGlhbGl6ZXJzIEFTVCB0cmFuc2Zvcm1hdGlvbi4KLS8vIFRlc3QgYSBzaGFkZXIgd2hl
cmUgYSBnbG9iYWwgY29uc3RhbnQgYXJyYXkgaXMgaW5pdGlhbGl6ZWQgd2l0aCBhbiBleHByZXNz
aW9uIGNvbnRhaW5pbmcgYXJyYXkKLS8vIGluZGV4aW5nLiBUaGlzIGluaXRpYWxpemVyIGlzIHRy
aWNreSB0byBjb25zdGFudCBmb2xkLCBzbyBpZiBpdCdzIG5vdCBjb25zdGFudCBmb2xkZWQgaXQg
bmVlZHMgdG8KLS8vIGJlIGhhbmRsZWQgaW4gYSB3YXkgdGhhdCBkb2Vzbid0IGdlbmVyYXRlIHN0
YXRlbWVudHMgaW4gdGhlIGdsb2JhbCBzY29wZSBpbiBITFNMIG91dHB1dC4KLS8vIEFsc28gaW5j
bHVkZXMgbXVsdGlwbGUgYXJyYXkgaW5pdGlhbGl6ZXJzIGluIG9uZSBkZWNsYXJhdGlvbiwgd2hl
cmUgb25seSB0aGUgc2Vjb25kIG9uZSBoYXMKLS8vIGFycmF5IGluZGV4aW5nLiBUaGlzIG1ha2Vz
IHN1cmUgdGhhdCB0aGUgcXVhbGlmaWVyIGZvciB0aGUgZGVjbGFyYXRpb24gaXMgc2V0IGNvcnJl
Y3RseSBpZgotLy8gdHJhbnNmb3JtYXRpb25zIGFyZSBhcHBsaWVkIHRvIHRoZSBkZWNsYXJhdGlv
biBhbHNvIGluIHRoZSBjYXNlIG9mIEVTU0wgb3V0cHV0LgotVEVTVF9QKEdMU0xUZXN0X0VTMywg
SW5pdEdsb2JhbEFycmF5V2l0aEFycmF5SW5kZXhpbmcpCi17Ci0gICAgLy8gVE9ETyh5bm92aWtv
dik6IHJlLWVuYWJsZSBvbmNlIHJvb3QgY2F1c2Ugb2YgaHR0cDovL2FuZ2xlYnVnLmNvbS8xNDI4
IGlzIGZpeGVkCi0gICAgaWYgKElzQW5kcm9pZCgpICYmIElzQWRyZW5vKCkgJiYgSXNPcGVuR0xF
UygpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gQWRyZW5v
IE9wZW5HTEVTIG9uIEFuZHJvaWQuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAg
ICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4i
Ci0gICAgICAgICJpbiB2ZWM0IGFfdmVjO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAg
ICAgICAgIntcbiIKLSAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQoYV92ZWMpO1xuIgot
ICAgICAgICAifSI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJj
ZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBoaWdo
cCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IG15X0ZyYWdDb2xvcjtcbiIKLSAgICAgICAg
ImNvbnN0IGhpZ2hwIGZsb2F0IGZbMl0gPSBmbG9hdFsyXSgwLjEsIDAuMik7XG4iCi0gICAgICAg
ICJjb25zdCBoaWdocCBmbG9hdFsyXSBnID0gZmxvYXRbMl0oMC4zLCAwLjQpLCBoID0gZmxvYXRb
Ml0oMC41LCBmWzFdKTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4i
Ci0gICAgICAgICIgICAgbXlfRnJhZ0NvbG9yID0gdmVjNChoWzFdKTtcbiIKLSAgICAgICAgIn0i
OwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3Vy
Y2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBFWFBFQ1RfTkUoMHUsIHByb2dyYW0pOwot
fQotCi0vLyBUZXN0IHRoYXQgaW5kZXgtY29uc3RhbnQgc2FtcGxlciBhcnJheSBpbmRleGluZyBp
cyBzdXBwb3J0ZWQuCi1URVNUX1AoR0xTTFRlc3QsIEluZGV4Q29uc3RhbnRTYW1wbGVyQXJyYXlJ
bmRleGluZykKLXsKLSAgICBpZiAoSXNEM0QxMV9GTDkzKCkpIHsKLSAgICAgICAgc3RkOjpjb3V0
IDw8ICJUZXN0IHNraXBwZWQgb24gRDNEMTEgRkwgOS4zLiIgPDwgc3RkOjplbmRsOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291
cmNlID0KLSAgICAgICAgImF0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlvbjtcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgICBnbF9Qb3NpdGlvbiA9
IHZQb3NpdGlvbjtcbiIKLSAgICAgICAgIn0iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJh
Z21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4i
Ci0gICAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB1bmlbMl07XG4iCi0gICAgICAgICJcbiIKLSAg
ICAgICAgImZsb2F0IHplcm8oaW50IHgpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAg
cmV0dXJuIGZsb2F0KHgpIC0gZmxvYXQoeCk7XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJc
biIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAg
dmVjNCBjID0gdmVjNCgwLDAsMCwwKTtcbiIKLSAgICAgICAgIiAgICBmb3IgKGludCBpaSA9IDE7
IGlpIDwgMzsgKytpaSkge1xuIgotICAgICAgICAiICAgICAgICBpZiAoYy54ID4gMjU1LjApIHtc
biIKLSAgICAgICAgIiAgICAgICAgICAgIGMueCA9IDI1NS4wICsgemVybyhpaSk7XG4iCi0gICAg
ICAgICIgICAgICAgICAgICBicmVhaztcbiIKLSAgICAgICAgIiAgICAgICAgfVxuIgotICAgICAg
ICAvLyBJbmRleCB0aGUgc2FtcGxlciBhcnJheSB3aXRoIGEgcHJlZGljdGFibGUgbG9vcCBpbmRl
eCAoaW5kZXgtY29uc3RhbnQpIGFzIG9wcG9zZWQgdG8KLSAgICAgICAgLy8gYSB0cnVlIGNvbnN0
YW50LiBUaGlzIGlzIHZhbGlkIGluIE9wZW5HTCBFUyBidXQgaXNuJ3QgaW4gbWFueSBEZXNrdG9w
IE9wZW5HTCB2ZXJzaW9ucywKLSAgICAgICAgLy8gd2l0aG91dCBhbiBleHRlbnNpb24uCi0gICAg
ICAgICIgICAgICAgIGMgKz0gdGV4dHVyZTJEKHVuaVtpaSAtIDFdLCB2ZWMyKDAuNSwgMC41KSk7
XG4iCi0gICAgICAgICIgICAgfVxuIgotICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IGM7XG4i
Ci0gICAgICAgICJ9IjsKLQotICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVy
dGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgRVhQRUNUX05FKDB1
LCBwcm9ncmFtKTsKLX0KLQotLy8gVGVzdCB0aGF0IHRoZSAjcHJhZ21hIGRpcmVjdGl2ZSBpcyBz
dXBwb3J0ZWQgYW5kIGRvZXNuJ3QgdHJpZ2dlciBhIGNvbXBpbGF0aW9uIGZhaWx1cmUgb24gdGhl
Ci0vLyBuYXRpdmUgZHJpdmVyLiBUaGUgb25seSBwcmFnbWEgdGhhdCBnZXRzIHBhc3NlZCB0byB0
aGUgT3BlbkdMIGRyaXZlciBpcyAiaW52YXJpYW50IiBidXQgd2UgZG9uJ3QKLS8vIHdhbnQgdG8g
dGVzdCBpdHMgYmVoYXZpb3IsIHNvIGRvbid0IHVzZSBhbnkgdmFyeWluZ3MuCi1URVNUX1AoR0xT
TFRlc3QsIFByYWdtYURpcmVjdGl2ZSkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhT
aGFkZXJTb3VyY2UgPQotICAgICAgICAiI3ByYWdtYSBTVERHTCBpbnZhcmlhbnQoYWxsKVxuIgot
ICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBnbF9Q
b3NpdGlvbiA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0K
LSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJw
cmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAg
ICAgICJ7XG4iCi0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjApO1xuIgotICAg
ICAgICAifVxuIjsKLQotICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4
U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgRVhQRUNUX05FKDB1LCBw
cm9ncmFtKTsKLX0KLQotLy8gU2VxdWVuY2Ugb3BlcmF0b3IgZXZhbHVhdGVzIG9wZXJhbmRzIGZy
b20gbGVmdCB0byByaWdodCAoRVNTTCAzLjAwIHNlY3Rpb24gNS45KS4KLS8vIFRoZSBmdW5jdGlv
biBjYWxsIHRoYXQgcmV0dXJucyB0aGUgYXJyYXkgbmVlZHMgdG8gYmUgZXZhbHVhdGVkIGFmdGVy
ICsraiBmb3IgdGhlIGV4cHJlc3Npb24gdG8KLS8vIHJldHVybiB0aGUgY29ycmVjdCB2YWx1ZSAo
dHJ1ZSkuCi1URVNUX1AoR0xTTFRlc3RfRVMzLCBTZXF1ZW5jZU9wZXJhdG9yRXZhbHVhdGlvbk9y
ZGVyQXJyYXkpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U2hhZGVyU291cmNl
ID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7IFxuIgotICAgICAg
ICAiaW50WzJdIGZ1bmMoaW50IHBhcmFtKSB7XG4iCi0gICAgICAgICIgICAgcmV0dXJuIGludFsy
XShwYXJhbSwgcGFyYW0pO1xuIgotICAgICAgICAifVxuIgotICAgICAgICAidm9pZCBtYWluKCkg
e1xuIgotICAgICAgICAiICAgIGludCBhWzJdOyBcbiIKLSAgICAgICAgIiAgICBmb3IgKGludCBp
ID0gMDsgaSA8IDI7ICsraSkge1xuIgotICAgICAgICAiICAgICAgICBhW2ldID0gMTtcbiIKLSAg
ICAgICAgIiAgICB9XG4iCi0gICAgICAgICIgICAgaW50IGogPSAwOyBcbiIKLSAgICAgICAgIiAg
ICBib29sIHJlc3VsdCA9ICgoKytqKSwgKGEgPT0gZnVuYyhqKSkpO1xuIgotICAgICAgICAiICAg
IG15X0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAocmVzdWx0ID8gMS4wIDogMC4wKSwgMC4wLCAxLjAp
O1xuIgotICAgICAgICAifVxuIjsKLQotICAgIEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dy
YW0obVNpbXBsZVZTU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgQVNTRVJUX05F
KDB1LCBwcm9ncmFtKTsKLQotICAgIGRyYXdRdWFkKHByb2dyYW0sICJpbnB1dEF0dHJpYnV0ZSIs
IDAuNWYpOwotCi0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVu
KTsKLX0KLQotLy8gU2VxdWVuY2Ugb3BlcmF0b3IgZXZhbHVhdGVzIG9wZXJhbmRzIGZyb20gbGVm
dCB0byByaWdodCAoRVNTTCAzLjAwIHNlY3Rpb24gNS45KS4KLS8vIFRoZSBzaG9ydC1jaXJjdWl0
aW5nIGV4cHJlc3Npb24gbmVlZHMgdG8gYmUgZXZhbHVhdGVkIGFmdGVyICsraiBmb3IgdGhlIGV4
cHJlc3Npb24gdG8gcmV0dXJuIHRoZQotLy8gY29ycmVjdCB2YWx1ZSAodHJ1ZSkuCi1URVNUX1Ao
R0xTTFRlc3RfRVMzLCBTZXF1ZW5jZU9wZXJhdG9yRXZhbHVhdGlvbk9yZGVyU2hvcnRDaXJjdWl0
KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAg
ICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgotICAgICAgICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yOyBcbiIKLSAgICAgICAgInZvaWQg
bWFpbigpIHtcbiIKLSAgICAgICAgIiAgICBpbnQgaiA9IDA7IFxuIgotICAgICAgICAiICAgIGJv
b2wgcmVzdWx0ID0gKCgrK2opLCAoaiA9PSAxID8gdHJ1ZSA6ICgrK2ogPT0gMykpKTtcbiIKLSAg
ICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgKChyZXN1bHQgJiYgaiA9PSAxKSA/
IDEuMCA6IDAuMCksIDAuMCwgMS4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBHTHVpbnQg
cHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKG1TaW1wbGVWU1NvdXJjZSwgZnJhZ21lbnRTaGFkZXJT
b3VyY2UpOwotICAgIEFTU0VSVF9ORSgwdSwgcHJvZ3JhbSk7Ci0KLSAgICBkcmF3UXVhZChwcm9n
cmFtLCAiaW5wdXRBdHRyaWJ1dGUiLCAwLjVmKTsKLQotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9F
USgwLCAwLCBHTENvbG9yOjpncmVlbik7Ci19Ci0KLS8vIFNlcXVlbmNlIG9wZXJhdG9yIGV2YWx1
YXRlcyBvcGVyYW5kcyBmcm9tIGxlZnQgdG8gcmlnaHQgKEVTU0wgMy4wMCBzZWN0aW9uIDUuOSku
Ci0vLyBJbmRleGluZyB0aGUgdmVjdG9yIG5lZWRzIHRvIGJlIGV2YWx1YXRlZCBhZnRlciBmdW5j
KCkgZm9yIHRoZSByaWdodCByZXN1bHQuCi1URVNUX1AoR0xTTFRlc3RfRVMzLCBTZXF1ZW5jZU9w
ZXJhdG9yRXZhbHVhdGlvbk9yZGVyRHluYW1pY1ZlY3RvckluZGV4aW5nSW5MVmFsdWUpCi17Ci0g
ICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2
ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0g
ICAgICAgICJvdXQgdmVjNCBteV9GcmFnQ29sb3I7XG4iCi0gICAgICAgICJ1bmlmb3JtIGludCB1
X3plcm87XG4iCi0gICAgICAgICJpbnQgc2lkZUVmZmVjdENvdW50ID0gMDtcbiIKLSAgICAgICAg
ImZsb2F0IGZ1bmMoKSB7XG4iCi0gICAgICAgICIgICAgKytzaWRlRWZmZWN0Q291bnQ7XG4iCi0g
ICAgICAgICIgICAgcmV0dXJuIC0xLjA7XG4iCi0gICAgICAgICJ9XG4iCi0gICAgICAgICJ2b2lk
IG1haW4oKSB7XG4iCi0gICAgICAgICIgICAgdmVjNCB2ID0gdmVjNCgwLjAsIDIuMCwgNC4wLCA2
LjApOyBcbiIKLSAgICAgICAgIiAgICBmbG9hdCBmID0gKGZ1bmMoKSwgKCsrdlt1X3plcm8gKyBz
aWRlRWZmZWN0Q291bnRdKSk7XG4iCi0gICAgICAgICIgICAgYm9vbCBncmVlbiA9IGFicyhmIC0g
My4wKSA8IDAuMDEgJiYgYWJzKHZbMV0gLSAzLjApIDwgMC4wMSAmJiBzaWRlRWZmZWN0Q291bnQg
PT0gMTtcbiIKLSAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgKGdyZWVuID8g
MS4wIDogMC4wKSwgMC4wLCAxLjApO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIEdMdWludCBw
cm9ncmFtID0gQ29tcGlsZVByb2dyYW0obVNpbXBsZVZTU291cmNlLCBmcmFnbWVudFNoYWRlclNv
dXJjZSk7Ci0gICAgQVNTRVJUX05FKDB1LCBwcm9ncmFtKTsKLQotICAgIGRyYXdRdWFkKHByb2dy
YW0sICJpbnB1dEF0dHJpYnV0ZSIsIDAuNWYpOwotCi0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VR
KDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKLX0KLQotLy8gVGVzdCB0aGF0IHVzaW5nIGdsX1BvaW50
Q29vcmQgd2l0aCBHTF9UUklBTkdMRVMgZG9lc24ndCBwcm9kdWNlIGEgbGluayBlcnJvci4KLS8v
IEZyb20gV2ViR0wgdGVzdCBjb25mb3JtYW5jZS9yZW5kZXJpbmcvcG9pbnQtc3BlY2lmaWMtc2hh
ZGVyLXZhcmlhYmxlcy5odG1sCi0vLyBTZWUgaHR0cDovL2FuZ2xlYnVnLmNvbS8xMzgwCi1URVNU
X1AoR0xTTFRlc3QsIFJlbmRlclRyaXNXaXRoUG9pbnRDb29yZCkKLXsKLSAgICBjb25zdCBzdGQ6
OnN0cmluZyAmdmVydCA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjMiBhUG9zaXRpb247XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIGdsX1Bv
c2l0aW9uID0gdmVjNChhUG9zaXRpb24sIDAsIDEpO1xuIgotICAgICAgICAiICAgIGdsX1BvaW50
U2l6ZSA9IDEuMDtcbiIKLSAgICAgICAgIn0iOwotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFn
ID0KLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAg
Z2xfRnJhZ0NvbG9yID0gdmVjNChnbF9Qb2ludENvb3JkLnh5LCAwLCAxKTtcbiIKLSAgICAgICAg
IiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIDEsIDAsIDEpO1xuIgotICAgICAgICAifSI7Ci0K
LSAgICBBTkdMRV9HTF9QUk9HUkFNKHByb2csIHZlcnQsIGZyYWcpOwotICAgIGRyYXdRdWFkKHBy
b2cuZ2V0KCksICJhUG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEo
MCwgMCwgR0xDb2xvcjo6Z3JlZW4pOwotfQotCi0vLyBDb252ZXJzIGEgYnVnIHdpdGggdGhlIGlu
dGVnZXIgcG93IHN0YXRlbWVudCB3b3JrYXJvdW5kLgotVEVTVF9QKEdMU0xUZXN0LCBOZXN0ZWRQ
b3dTdGF0ZW1lbnRzKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ID0KLSAgICAgICAg
ImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAg
ICAgICAgIntcbiIKLSAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAs
IDEpO1xuIgotICAgICAgICAifSI7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWcgPQotICAg
ICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJmbG9hdCBmdW5jKGZs
b2F0IHYpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICBmbG9hdCBmMSA9IHBvdyh2LCAy
LjApO1xuIgotICAgICAgICAiICAgcmV0dXJuIHBvdyhmMSArIHYsIDIuMCk7XG4iCi0gICAgICAg
ICJ9XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAi
ICAgIGZsb2F0IHYgPSBmdW5jKDIuMCk7XG4iCi0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0g
YWJzKHYgLSAzNi4wKSA8IDAuMDAxID8gdmVjNCgwLCAxLCAwLCAxKSA6IHZlYzQoMSwgMCwgMCwg
MSk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIEFOR0xFX0dMX1BST0dSQU0ocHJvZywgdmVydCwg
ZnJhZyk7Ci0gICAgZHJhd1F1YWQocHJvZy5nZXQoKSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAg
RVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKLX0KLQotLy8gQ29u
dmVycyBhIGJ1ZyB3aXRoIHRoZSB1bmFyeSBtaW51cyBvcGVyYXRvciBvbiBzaWduZWQgaW50ZWdl
ciB3b3JrYXJvdW5kLgotVEVTVF9QKEdMU0xUZXN0X0VTMywgVW5hcnlNaW51c09wZXJhdG9yU2ln
bmVkSW50KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ID0KLSAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIgotICAgICAgICAiaW4gaGlnaHAgdmVjNCBwb3NpdGlvbjtcbiIKLSAgICAg
ICAgIm91dCBtZWRpdW1wIHZlYzQgdl9jb2xvcjtcbiIKLSAgICAgICAgInVuaWZvcm0gaW50IHVp
X29uZTtcbiIKLSAgICAgICAgInVuaWZvcm0gaW50IHVpX3R3bztcbiIKLSAgICAgICAgInVuaWZv
cm0gaW50IHVpX3RocmVlO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAi
ICAgIGludCBzWzNdO1xuIgotICAgICAgICAiICAgIHNbMF0gPSB1aV9vbmU7XG4iCi0gICAgICAg
ICIgICAgc1sxXSA9IC0oLSgtdWlfdHdvICsgMSkgKyAxKTtcbiIgIC8vIHNbMV0gPSAtdWlfdHdv
Ci0gICAgICAgICIgICAgc1syXSA9IHVpX3RocmVlO1xuIgotICAgICAgICAiICAgIGludCByZXN1
bHQgPSAwO1xuIgotICAgICAgICAiICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdWlfdGhyZWU7IGkr
Kykge1xuIgotICAgICAgICAiICAgICAgICByZXN1bHQgKz0gc1tpXTtcbiIKLSAgICAgICAgIiAg
ICB9XG4iCi0gICAgICAgICIgICAgdl9jb2xvciA9IChyZXN1bHQgPT0gMikgPyB2ZWM0KDAsIDEs
IDAsIDEpIDogdmVjNCgxLCAwLCAwLCAxKTtcbiIKLSAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9
IHBvc2l0aW9uO1xuIgotICAgICAgICAifVxuIjsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJh
ZyA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgImluIG1lZGl1bXAgdmVj
NCB2X2NvbG9yO1xuIgotICAgICAgICAibGF5b3V0KGxvY2F0aW9uPTApIG91dCBtZWRpdW1wIHZl
YzQgb19jb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgICBv
X2NvbG9yID0gdl9jb2xvcjtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBBTkdMRV9HTF9QUk9H
UkFNKHByb2csIHZlcnQsIGZyYWcpOwotCi0gICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgICA9IHJl
aW50ZXJwcmV0X2Nhc3Q8Z2w6OkNvbnRleHQgKj4oZ2V0RUdMV2luZG93KCktPmdldENvbnRleHQo
KSk7Ci0gICAgZ2w6OlByb2dyYW0gKmdsUHJvZ3JhbSA9IGNvbnRleHQtPmdldFByb2dyYW0ocHJv
Zy5nZXQoKSk7Ci0gICAgR0xpbnQgb25lSW5kZXggICAgICAgICA9IGdsUHJvZ3JhbS0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKCJ1aV9vbmUiKTsKLSAgICBBU1NFUlRfTkUoLTEsIG9uZUluZGV4KTsKLSAg
ICBHTGludCB0d29JbmRleCA9IGdsUHJvZ3JhbS0+Z2V0VW5pZm9ybUxvY2F0aW9uKCJ1aV90d28i
KTsKLSAgICBBU1NFUlRfTkUoLTEsIHR3b0luZGV4KTsKLSAgICBHTGludCB0aHJlZUluZGV4ID0g
Z2xQcm9ncmFtLT5nZXRVbmlmb3JtTG9jYXRpb24oInVpX3RocmVlIik7Ci0gICAgQVNTRVJUX05F
KC0xLCB0aHJlZUluZGV4KTsKLSAgICBnbFVzZVByb2dyYW0ocHJvZy5nZXQoKSk7Ci0gICAgZ2xV
bmlmb3JtMWkob25lSW5kZXgsIDEpOwotICAgIGdsVW5pZm9ybTFpKHR3b0luZGV4LCAyKTsKLSAg
ICBnbFVuaWZvcm0xaSh0aHJlZUluZGV4LCAzKTsKLQotICAgIGRyYXdRdWFkKHByb2cuZ2V0KCks
ICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENv
bG9yOjpncmVlbik7Ci19Ci0KLS8vIENvbnZlcnMgYSBidWcgd2l0aCB0aGUgdW5hcnkgbWludXMg
b3BlcmF0b3Igb24gdW5zaWduZWQgaW50ZWdlciB3b3JrYXJvdW5kLgotVEVTVF9QKEdMU0xUZXN0
X0VTMywgVW5hcnlNaW51c09wZXJhdG9yVW5zaWduZWRJbnQpCi17Ci0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnZlcnQgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJpbiBo
aWdocCB2ZWM0IHBvc2l0aW9uO1xuIgotICAgICAgICAib3V0IG1lZGl1bXAgdmVjNCB2X2NvbG9y
O1xuIgotICAgICAgICAidW5pZm9ybSB1aW50IHVpX29uZTtcbiIKLSAgICAgICAgInVuaWZvcm0g
dWludCB1aV90d287XG4iCi0gICAgICAgICJ1bmlmb3JtIHVpbnQgdWlfdGhyZWU7XG4iCi0gICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICAgdWludCBzWzNdO1xuIgotICAgICAg
ICAiICAgIHNbMF0gPSB1aV9vbmU7XG4iCi0gICAgICAgICIgICAgc1sxXSA9IC0oLSgtdWlfdHdv
ICsgMXUpICsgMXUpO1xuIiAgLy8gc1sxXSA9IC11aV90d28KLSAgICAgICAgIiAgICBzWzJdID0g
dWlfdGhyZWU7XG4iCi0gICAgICAgICIgICAgdWludCByZXN1bHQgPSAwdTtcbiIKLSAgICAgICAg
IiAgICBmb3IgKHVpbnQgaSA9IDB1OyBpIDwgdWlfdGhyZWU7IGkrKykge1xuIgotICAgICAgICAi
ICAgICAgICByZXN1bHQgKz0gc1tpXTtcbiIKLSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICIg
ICAgdl9jb2xvciA9IChyZXN1bHQgPT0gMnUpID8gdmVjNCgwLCAxLCAwLCAxKSA6IHZlYzQoMSwg
MCwgMCwgMSk7XG4iCi0gICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIKLSAg
ICAgICAgIn1cbiI7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWcgPQotICAgICAgICAiI3Zl
cnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJpbiBtZWRpdW1wIHZlYzQgdl9jb2xvcjtcbiIKLSAg
ICAgICAgImxheW91dChsb2NhdGlvbj0wKSBvdXQgbWVkaXVtcCB2ZWM0IG9fY29sb3I7XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICAgb19jb2xvciA9IHZfY29sb3I7
XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgQU5HTEVfR0xfUFJPR1JBTShwcm9nLCB2ZXJ0LCBm
cmFnKTsKLQotICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ICAgPSByZWludGVycHJldF9jYXN0PGds
OjpDb250ZXh0ICo+KGdldEVHTFdpbmRvdygpLT5nZXRDb250ZXh0KCkpOwotICAgIGdsOjpQcm9n
cmFtICpnbFByb2dyYW0gPSBjb250ZXh0LT5nZXRQcm9ncmFtKHByb2cuZ2V0KCkpOwotICAgIEdM
aW50IG9uZUluZGV4ICAgICAgICAgPSBnbFByb2dyYW0tPmdldFVuaWZvcm1Mb2NhdGlvbigidWlf
b25lIik7Ci0gICAgQVNTRVJUX05FKC0xLCBvbmVJbmRleCk7Ci0gICAgR0xpbnQgdHdvSW5kZXgg
PSBnbFByb2dyYW0tPmdldFVuaWZvcm1Mb2NhdGlvbigidWlfdHdvIik7Ci0gICAgQVNTRVJUX05F
KC0xLCB0d29JbmRleCk7Ci0gICAgR0xpbnQgdGhyZWVJbmRleCA9IGdsUHJvZ3JhbS0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKCJ1aV90aHJlZSIpOwotICAgIEFTU0VSVF9ORSgtMSwgdGhyZWVJbmRleCk7
Ci0gICAgZ2xVc2VQcm9ncmFtKHByb2cuZ2V0KCkpOwotICAgIGdsVW5pZm9ybTF1aShvbmVJbmRl
eCwgMXUpOwotICAgIGdsVW5pZm9ybTF1aSh0d29JbmRleCwgMnUpOwotICAgIGdsVW5pZm9ybTF1
aSh0aHJlZUluZGV4LCAzdSk7Ci0KLSAgICBkcmF3UXVhZChwcm9nLmdldCgpLCAicG9zaXRpb24i
LCAwLjVmKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4p
OwotfQotCi0vLyBUZXN0IGEgbmVzdGVkIHNlcXVlbmNlIG9wZXJhdG9yIHdpdGggYSB0ZXJuYXJ5
IG9wZXJhdG9yIGluc2lkZS4gVGhlIHRlcm5hcnkgb3BlcmF0b3IgaXMKLS8vIGludGVuZGVkIHRv
IGJlIHN1Y2ggdGhhdCBpdCBnZXRzIGNvbnZlcnRlZCB0byBhbiBpZiBzdGF0ZW1lbnQgb24gdGhl
IEhMU0wgYmFja2VuZC4KLVRFU1RfUChHTFNMVGVzdCwgTmVzdGVkU2VxdWVuY2VPcGVyYXRvcldp
dGhUZXJuYXJ5SW5zaWRlKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ID0KLSAgICAg
ICAgImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIK
LSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24s
IDAsIDEpO1xuIgotICAgICAgICAifSI7Ci0KLSAgICAvLyBOb3RlIHRoYXQgdGhlIHVuaWZvcm0g
a2VlcF9mbG9wX3Bvc2l0aXZlIGRvZXNuJ3QgbmVlZCB0byBiZSBzZXQgLSB0aGUgdGVzdCBleHBl
Y3RzIGl0IHRvIGhhdmUKLSAgICAvLyBpdHMgZGVmYXVsdCB2YWx1ZSBmYWxzZS4KLSAgICBjb25z
dCBzdGQ6OnN0cmluZyAmZnJhZyA9Ci0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc
biIKLSAgICAgICAgInVuaWZvcm0gYm9vbCBrZWVwX2Zsb3BfcG9zaXRpdmU7XG4iCi0gICAgICAg
ICJmbG9hdCBmbG9wO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICAg
IGZsb3AgPSAtMS4wLFxuIgotICAgICAgICAiICAgIChmbG9wICo9IC0xLjAsXG4iCi0gICAgICAg
ICIgICAga2VlcF9mbG9wX3Bvc2l0aXZlID8gMC4wIDogZmxvcCAqPSAtMS4wKSxcbiIKLSAgICAg
ICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAsIC1mbG9wLCAwLCAxKTtcbiIKLSAgICAgICAg
In0iOwotCi0gICAgQU5HTEVfR0xfUFJPR1JBTShwcm9nLCB2ZXJ0LCBmcmFnKTsKLSAgICBkcmF3
UXVhZChwcm9nLmdldCgpLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09M
T1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOwotfQotCi0vLyBUZXN0IHRoYXQgdXNpbmcgYSBz
YW1wbGVyMkQgYW5kIHNhbXBsZXJFeHRlcm5hbE9FUyBpbiB0aGUgc2FtZSBzaGFkZXIgd29ya3Mg
KGFuZ2xlYnVnLmNvbS8xNTM0KQotVEVTVF9QKEdMU0xUZXN0LCBFeHRlcm5hbEFuZDJEU2FtcGxl
cikKLXsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJu
YWwiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2Ug
R0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCBpcyBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAg
ICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0O1xuIgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyRXh0ZXJuYWxPRVMgdGV4MDtcbiIK
LSAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHRleDE7XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
dm9pZClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiB2ZWMyIHV2ID0gdmVjMigwLjAsIDAu
MCk7IgotICAgICAgICAiIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgwLCB1dikgKyB0ZXh0
dXJlMkQodGV4MSwgdXYpO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIEFOR0xFX0dMX1BST0dS
QU0ocHJvZ3JhbSwgbVNpbXBsZVZTU291cmNlLCBmcmFnbWVudFNoYWRlcik7Ci19Ci0KLS8vIFRl
c3QgdGhhdCB1c2luZyBhbiBpbnZhbGlkIGNvbnN0YW50IHJpZ2h0LXNoaWZ0IHByb2R1Y2VzIGFu
IGVycm9yLgotVEVTVF9QKEdMU0xUZXN0X0VTMywgRm9sZGVkSW52YWxpZFJpZ2h0U2hpZnQpCi17
Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U2hhZGVyID0KLSAgICAgICAgIiN2ZXJz
aW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAg
ICAgICJvdXQgdmVjNCBjb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbih2b2lkKVxuIgotICAg
ICAgICAie1xuIgotICAgICAgICAiIGludCBkaWZmID0gLTEwMCA+PiAtMTAwO1xuIgotICAgICAg
ICAiIGNvbG9yID0gdmVjNChmbG9hdChkaWZmKSk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAg
R0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShtU2ltcGxlVlNTb3VyY2UsIGZyYWdtZW50
U2hhZGVyKTsKLSAgICBFWFBFQ1RfRVEoMHUsIHByb2dyYW0pOwotICAgIGdsRGVsZXRlUHJvZ3Jh
bShwcm9ncmFtKTsKLX0KLQotLy8gVGVzdCB0aGF0IHVzaW5nIGFuIGludmFsaWQgY29uc3RhbnQg
bGVmdC1zaGlmdCBwcm9kdWNlcyBhbiBlcnJvci4KLVRFU1RfUChHTFNMVGVzdF9FUzMsIEZvbGRl
ZEludmFsaWRMZWZ0U2hpZnQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U2hh
ZGVyID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAicHJlY2lzaW9uIG1l
ZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJvdXQgdmVjNCBjb2xvcjtcbiIKLSAgICAgICAgInZv
aWQgbWFpbih2b2lkKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiIGludCBkaWZmID0gLTEw
MCA8PCAtMTAwO1xuIgotICAgICAgICAiIGNvbG9yID0gdmVjNChmbG9hdChkaWZmKSk7XG4iCi0g
ICAgICAgICJ9XG4iOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShtU2lt
cGxlVlNTb3VyY2UsIGZyYWdtZW50U2hhZGVyKTsKLSAgICBFWFBFQ1RfRVEoMHUsIHByb2dyYW0p
OwotICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKLX0KLQotfSAgLy8gYW5vbnltb3VzIG5h
bWVzcGFjZQotCi0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUu
Zy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMg
c2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChHTFNMVGVzdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygp
LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgIEVTM19PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVT
KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKLQotLy8gVXNlIHRo
aXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3
aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5z
dC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoR0xTTFRlc3RfRVMzLCBFUzNfRDNEMTEoKSwgRVMz
X09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW1hZ2VUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbWFnZVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjYjg4YzQ4OWQ1OC4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0ltYWdlVGVzdC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxOTczICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBJbWFnZVRlc3Q6Ci0vLyAgIFRl
c3RzIHRoZSBjb3JyZWN0bmVzcyBvZiBlZ2xJbWFnZS4KLS8vCi0KLSNpbmNsdWRlICJ0ZXN0X3V0
aWxzL0FOR0xFVGVzdC5oIgotCi1uYW1lc3BhY2UgYW5nbGUKLXsKLWNsYXNzIEltYWdlVGVzdCA6
IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIEltYWdlVGVzdCgpCi0gICAg
ewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQo
MTI4KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3Jl
ZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29u
ZmlnQWxwaGFCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoMjQpOwotICAgIH0K
LQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpT
ZXRVcCgpOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzU291cmNlID0KLSAgICAgICAg
ICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCi0gICAgICAgICAgICAiYXR0cmlidXRlIHZl
YzQgcG9zaXRpb247XG4iCi0gICAgICAgICAgICAidmFyeWluZyB2ZWMyIHRleGNvb3JkO1xuIgot
ICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAg
ICAie1xuIgotICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uO1xuIgotICAg
ICAgICAgICAgIiAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7XG4iCi0g
ICAgICAgICAgICAiICAgIHRleGNvb3JkLnkgPSAxLjAgLSB0ZXhjb29yZC55O1xuIgotICAgICAg
ICAgICAgIn1cbiI7Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzRVNTTDNTb3VyY2UgPQot
ICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAgICAgInByZWNpc2lvbiBo
aWdocCBmbG9hdDtcbiIKLSAgICAgICAgICAgICJpbiB2ZWM0IHBvc2l0aW9uO1xuIgotICAgICAg
ICAgICAgIm91dCB2ZWMyIHRleGNvb3JkO1xuIgotICAgICAgICAgICAgIlxuIgotICAgICAgICAg
ICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgICBn
bF9Qb3NpdGlvbiA9IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgIiAgICB0ZXhjb29yZCA9IChw
b3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7XG4iCi0gICAgICAgICAgICAiICAgIHRleGNvb3JkLnkg
PSAxLjAgLSB0ZXhjb29yZC55O1xuIgotICAgICAgICAgICAgIn1cbiI7Ci0KLSAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgdGV4dHVyZUZTU291cmNlID0KLSAgICAgICAgICAgICJwcmVjaXNpb24g
aGlnaHAgZmxvYXQ7XG4iCi0gICAgICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4O1xuIgot
ICAgICAgICAgICAgInZhcnlpbmcgdmVjMiB0ZXhjb29yZDtcbiIKLSAgICAgICAgICAgICJcbiIK
LSAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAg
ICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQpO1xuIgotICAg
ICAgICAgICAgIn1cbiI7Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHRleHR1cmVFeHRlcm5h
bEZTU291cmNlID0KLSAgICAgICAgICAgICIjZXh0ZW5zaW9uIEdMX09FU19FR0xfaW1hZ2VfZXh0
ZXJuYWwgOiByZXF1aXJlXG4iCi0gICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xu
IgotICAgICAgICAgICAgInVuaWZvcm0gc2FtcGxlckV4dGVybmFsT0VTIHRleDtcbiIKLSAgICAg
ICAgICAgICJ2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7XG4iCi0gICAgICAgICAgICAiXG4iCi0gICAg
ICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAi
ICAgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkKTtcbiIKLSAgICAgICAg
ICAgICJ9XG4iOwotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB0ZXh0dXJlRXh0ZXJuYWxFU1NM
M0ZTU291cmNlID0KLSAgICAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgICAg
ICIjZXh0ZW5zaW9uIEdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMgOiByZXF1aXJlXG4i
Ci0gICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAgICAgInVu
aWZvcm0gc2FtcGxlckV4dGVybmFsT0VTIHRleDtcbiIKLSAgICAgICAgICAgICJpbiB2ZWMyIHRl
eGNvb3JkO1xuIgotICAgICAgICAgICAgIm91dCB2ZWM0IGNvbG9yOyIKLSAgICAgICAgICAgICJc
biIKLSAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAgICAgIntcbiIKLSAgICAg
ICAgICAgICIgICAgY29sb3IgPSB0ZXh0dXJlKHRleCwgdGV4Y29vcmQpO1xuIgotICAgICAgICAg
ICAgIn1cbiI7Ci0KLSAgICAgICAgbVRleHR1cmVQcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnNT
b3VyY2UsIHRleHR1cmVGU1NvdXJjZSk7Ci0gICAgICAgIGlmIChtVGV4dHVyZVByb2dyYW0gPT0g
MCkKLSAgICAgICAgewotICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRpb24g
ZmFpbGVkLiI7Ci0gICAgICAgIH0KLQotICAgICAgICBtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiA9
IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1UZXh0dXJlUHJvZ3JhbSwgInRleCIpOwotCi0gICAgICAg
IGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIikpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIG1UZXh0dXJlRXh0ZXJuYWxQcm9ncmFtID0gQ29tcGlsZVByb2dy
YW0odnNTb3VyY2UsIHRleHR1cmVFeHRlcm5hbEZTU291cmNlKTsKLSAgICAgICAgICAgIEFTU0VS
VF9ORSgwdSwgbVRleHR1cmVFeHRlcm5hbFByb2dyYW0pIDw8ICJzaGFkZXIgY29tcGlsYXRpb24g
ZmFpbGVkLiI7Ci0KLSAgICAgICAgICAgIG1UZXh0dXJlRXh0ZXJuYWxVbmlmb3JtTG9jYXRpb24g
PSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtVGV4dHVyZUV4dGVybmFsUHJvZ3JhbSwgInRleCIpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19FR0xfaW1h
Z2VfZXh0ZXJuYWxfZXNzbDMiKSkKLSAgICAgICAgewotICAgICAgICAgICAgbVRleHR1cmVFeHRl
cm5hbEVTU0wzUHJvZ3JhbSA9Ci0gICAgICAgICAgICAgICAgQ29tcGlsZVByb2dyYW0odnNFU1NM
M1NvdXJjZSwgdGV4dHVyZUV4dGVybmFsRVNTTDNGU1NvdXJjZSk7Ci0gICAgICAgICAgICBBU1NF
UlRfTkUoMHUsIG1UZXh0dXJlRXh0ZXJuYWxFU1NMM1Byb2dyYW0pIDw8ICJzaGFkZXIgY29tcGls
YXRpb24gZmFpbGVkLiI7Ci0KLSAgICAgICAgICAgIG1UZXh0dXJlRXh0ZXJuYWxFU1NMM1VuaWZv
cm1Mb2NhdGlvbiA9Ci0gICAgICAgICAgICAgICAgZ2xHZXRVbmlmb3JtTG9jYXRpb24obVRleHR1
cmVFeHRlcm5hbEVTU0wzUHJvZ3JhbSwgInRleCIpOwotICAgICAgICB9Ci0KLSAgICAgICAgZWds
Q3JlYXRlSW1hZ2VLSFIgPQotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xDUkVB
VEVJTUFHRUtIUlBST0M+KGVnbEdldFByb2NBZGRyZXNzKCJlZ2xDcmVhdGVJbWFnZUtIUiIpKTsK
LSAgICAgICAgZWdsRGVzdHJveUltYWdlS0hSID0KLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8UEZORUdMREVTVFJPWUlNQUdFS0hSUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbERlc3Ry
b3lJbWFnZUtIUiIpKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0K
LSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlUHJv
Z3JhbShtVGV4dHVyZVByb2dyYW0pOwotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVRleHR1cmVF
eHRlcm5hbFByb2dyYW0pOwotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVRleHR1cmVFeHRlcm5h
bEVTU0wzUHJvZ3JhbSk7Ci0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwotICAgIH0K
LQotICAgIHZvaWQgY3JlYXRlRUdMSW1hZ2UyRFRleHR1cmVTb3VyY2Uoc2l6ZV90IHdpZHRoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBmb3JtYXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKm91dFNvdXJjZVRleHR1cmUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xJbWFnZUtIUiAqb3V0U291cmNl
SW1hZ2UpCi0gICAgewotICAgICAgICAvLyBDcmVhdGUgYSBzb3VyY2UgMkQgdGV4dHVyZQotICAg
ICAgICBHTHVpbnQgc291cmNlOwotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZzb3VyY2UpOwot
ICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHNvdXJjZSk7Ci0KLSAgICAgICAg
Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIGZvcm1hdCwgc3RhdGljX2Nhc3Q8R0xzaXpl
aT4od2lkdGgpLAotICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4oaGVp
Z2h0KSwgMCwgZm9ybWF0LCB0eXBlLCBkYXRhKTsKLQotICAgICAgICAvLyBEaXNhYmxlIG1pcG1h
cHBpbmcKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotCi0gICAgICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBmcm9tIHRo
ZSBzb3VyY2UgdGV4dHVyZQotICAgICAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRv
dygpOwotICAgICAgICBFR0xJbWFnZUtIUiBpbWFnZSA9Ci0gICAgICAgICAgICBlZ2xDcmVhdGVJ
bWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgd2luZG93LT5nZXRDb250ZXh0KCksIEVHTF9H
TF9URVhUVVJFXzJEX0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJw
cmV0SGVscGVyPEVHTENsaWVudEJ1ZmZlcj4oc291cmNlKSwgbnVsbHB0cik7Ci0KLSAgICAgICAg
QVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICAgICAgKm91dFNvdXJjZVRleHR1cmUgPSBzb3Vy
Y2U7Ci0gICAgICAgICpvdXRTb3VyY2VJbWFnZSAgID0gaW1hZ2U7Ci0gICAgfQotCi0gICAgdm9p
ZCBjcmVhdGVFR0xJbWFnZUN1YmVtYXBUZXh0dXJlU291cmNlKHNpemVfdCB3aWR0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGhlaWdodCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIGZvcm1hdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmRh
dGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBk
YXRhU3RyaWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
R0xlbnVtIGltYWdlVGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTHVpbnQgKm91dFNvdXJjZVRleHR1cmUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEVHTEltYWdlS0hSICpvdXRTb3VyY2VJbWFnZSkKLSAgICB7
Ci0gICAgICAgIC8vIENyZWF0ZSBhIHNvdXJjZSBjdWJlIG1hcCB0ZXh0dXJlCi0gICAgICAgIEdM
dWludCBzb3VyY2U7Ci0gICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJnNvdXJjZSk7Ci0gICAgICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJFX01BUCwgc291cmNlKTsKLQotICAgICAgICBm
b3IgKEdMZW51bSBmYWNlSWR4ID0gMDsgZmFjZUlkeCA8IDY7IGZhY2VJZHgrKykKLSAgICAgICAg
ewotICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKGZhY2VJZHggKyBHTF9URVhUVVJFX0NVQkVfTUFQ
X1BPU0lUSVZFX1gsIDAsIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxHTHNpemVpPih3aWR0aCksIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGhlaWdodCksIDAsIGZv
cm1hdCwgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhICsgKGZhY2VJZHggKiBk
YXRhU3RyaWRlKSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBEaXNhYmxlIG1pcG1hcHBpbmcK
LSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotCi0gICAg
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBm
cm9tIHRoZSBzb3VyY2UgdGV4dHVyZQotICAgICAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVH
TFdpbmRvdygpOwotICAgICAgICBFR0xJbWFnZUtIUiBpbWFnZSA9Ci0gICAgICAgICAgICBlZ2xD
cmVhdGVJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgd2luZG93LT5nZXRDb250ZXh0KCks
IGltYWdlVGFyZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRI
ZWxwZXI8RUdMQ2xpZW50QnVmZmVyPihzb3VyY2UpLCBudWxscHRyKTsKLQotICAgICAgICBBU1NF
UlRfRUdMX1NVQ0NFU1MoKTsKLQotICAgICAgICAqb3V0U291cmNlVGV4dHVyZSA9IHNvdXJjZTsK
LSAgICAgICAgKm91dFNvdXJjZUltYWdlICAgPSBpbWFnZTsKLSAgICB9Ci0KLSAgICB2b2lkIGNy
ZWF0ZUVHTEltYWdlM0RUZXh0dXJlU291cmNlKHNpemVfdCB3aWR0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZGVwdGgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2b2lkICpkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGltYWdlTGF5ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTHVpbnQgKm91dFNvdXJjZVRleHR1cmUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBFR0xJbWFnZUtIUiAqb3V0U291cmNlSW1hZ2UpCi0gICAgewot
ICAgICAgICAvLyBDcmVhdGUgYSBzb3VyY2UgM0QgdGV4dHVyZQotICAgICAgICBHTHVpbnQgc291
cmNlOwotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZzb3VyY2UpOwotICAgICAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfM0QsIHNvdXJjZSk7Ci0KLSAgICAgICAgZ2xUZXhJbWFnZTNEKEdM
X1RFWFRVUkVfM0QsIDAsIGZvcm1hdCwgc3RhdGljX2Nhc3Q8R0xzaXplaT4od2lkdGgpLAotICAg
ICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4oaGVpZ2h0KSwgc3RhdGljX2Nh
c3Q8R0xzaXplaT4oZGVwdGgpLCAwLCBmb3JtYXQsIHR5cGUsCi0gICAgICAgICAgICAgICAgICAg
ICBkYXRhKTsKLQotICAgICAgICAvLyBEaXNhYmxlIG1pcG1hcHBpbmcKLSAgICAgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVT
VCk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzNELCBHTF9URVhUVVJFX01B
R19GSUxURVIsIEdMX05FQVJFU1QpOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBmcm9tIHRoZSBzb3VyY2UgdGV4dHVyZQotICAg
ICAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwotCi0gICAgICAgIEVHTGlu
dCBhdHRyaWJzW10gPSB7Ci0gICAgICAgICAgICBFR0xfR0xfVEVYVFVSRV9aT0ZGU0VUX0tIUiwg
c3RhdGljX2Nhc3Q8RUdMaW50PihpbWFnZUxheWVyKSwgRUdMX05PTkUsCi0gICAgICAgIH07Ci0g
ICAgICAgIEVHTEltYWdlS0hSIGltYWdlID0KLSAgICAgICAgICAgIGVnbENyZWF0ZUltYWdlS0hS
KHdpbmRvdy0+Z2V0RGlzcGxheSgpLCB3aW5kb3ctPmdldENvbnRleHQoKSwgRUdMX0dMX1RFWFRV
UkVfM0RfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRIZWxw
ZXI8RUdMQ2xpZW50QnVmZmVyPihzb3VyY2UpLCBhdHRyaWJzKTsKLQotICAgICAgICBBU1NFUlRf
RUdMX1NVQ0NFU1MoKTsKLQotICAgICAgICAqb3V0U291cmNlVGV4dHVyZSA9IHNvdXJjZTsKLSAg
ICAgICAgKm91dFNvdXJjZUltYWdlICAgPSBpbWFnZTsKLSAgICB9Ci0KLSAgICB2b2lkIGNyZWF0
ZUVHTEltYWdlUmVuZGVyYnVmZmVyU291cmNlKHNpemVfdCB3aWR0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBoZWlnaHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gaW50ZXJuYWxGb3JtYXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVieXRlIGRhdGFbNF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgKm91dFNvdXJj
ZVJlbmRlcmJ1ZmZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEVHTEltYWdlS0hSICpvdXRTb3VyY2VJbWFnZSkKLSAgICB7Ci0gICAgICAgIC8vIENyZWF0ZSBh
IHNvdXJjZSByZW5kZXJidWZmZXIKLSAgICAgICAgR0x1aW50IHNvdXJjZTsKLSAgICAgICAgZ2xH
ZW5SZW5kZXJidWZmZXJzKDEsICZzb3VyY2UpOwotICAgICAgICBnbEJpbmRSZW5kZXJidWZmZXIo
R0xfUkVOREVSQlVGRkVSLCBzb3VyY2UpOwotICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
R0xfUkVOREVSQlVGRkVSLCBpbnRlcm5hbEZvcm1hdCwgc3RhdGljX2Nhc3Q8R0xzaXplaT4od2lk
dGgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4o
aGVpZ2h0KSk7Ci0KLSAgICAgICAgLy8gQ3JlYXRlIGEgZnJhbWVidWZmZXIgYW5kIGNsZWFyIGl0
IHRvIHNldCB0aGUgZGF0YQotICAgICAgICBHTHVpbnQgZnJhbWVidWZmZXI7Ci0gICAgICAgIGds
R2VuRnJhbWVidWZmZXJzKDEsICZmcmFtZWJ1ZmZlcik7Ci0gICAgICAgIGdsQmluZEZyYW1lYnVm
ZmVyKEdMX0ZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlcik7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJS
ZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9SRU5E
RVJCVUZGRVIsIHNvdXJjZSk7Ci0KLSAgICAgICAgZ2xDbGVhckNvbG9yKGRhdGFbMF0gLyAyNTUu
MGYsIGRhdGFbMV0gLyAyNTUuMGYsIGRhdGFbMl0gLyAyNTUuMGYsIGRhdGFbM10gLyAyNTUuMGYp
OwotICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgICAgIGdsRGVs
ZXRlRnJhbWVidWZmZXJzKDEsICZmcmFtZWJ1ZmZlcik7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICAgICAgLy8gQ3JlYXRlIGFuIGltYWdlIGZyb20gdGhlIHNvdXJjZSBy
ZW5kZXJidWZmZXIKLSAgICAgICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsK
LSAgICAgICAgRUdMSW1hZ2VLSFIgaW1hZ2UgPQotICAgICAgICAgICAgZWdsQ3JlYXRlSW1hZ2VL
SFIod2luZG93LT5nZXREaXNwbGF5KCksIHdpbmRvdy0+Z2V0Q29udGV4dCgpLCBFR0xfR0xfUkVO
REVSQlVGRkVSX0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0
SGVscGVyPEVHTENsaWVudEJ1ZmZlcj4oc291cmNlKSwgbnVsbHB0cik7Ci0KLSAgICAgICAgQVNT
RVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICAgICAgKm91dFNvdXJjZVJlbmRlcmJ1ZmZlciA9IHNv
dXJjZTsKLSAgICAgICAgKm91dFNvdXJjZUltYWdlICAgICAgICA9IGltYWdlOwotICAgIH0KLQot
ICAgIHZvaWQgY3JlYXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkQoRUdMSW1hZ2VLSFIgaW1hZ2Us
IEdMdWludCAqb3V0VGFyZ2V0VGV4dHVyZSkKLSAgICB7Ci0gICAgICAgIC8vIENyZWF0ZSBhIHRh
cmdldCB0ZXh0dXJlIGZyb20gdGhlIGltYWdlCi0gICAgICAgIEdMdWludCB0YXJnZXQ7Ci0gICAg
ICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRhcmdldCk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgdGFyZ2V0KTsKLSAgICAgICAgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9F
UyhHTF9URVhUVVJFXzJELCBpbWFnZSk7Ci0KLSAgICAgICAgLy8gRGlzYWJsZSBtaXBtYXBwaW5n
Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9G
SUxURVIsIEdMX05FQVJFU1QpOwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLQotICAgICAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKLQotICAgICAgICAqb3V0VGFyZ2V0VGV4dHVyZSA9IHRhcmdldDsKLSAg
ICB9Ci0KLSAgICB2b2lkIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZUV4dGVybmFsKEVHTElt
YWdlS0hSIGltYWdlLCBHTHVpbnQgKm91dFRhcmdldFRleHR1cmUpCi0gICAgewotICAgICAgICAv
LyBDcmVhdGUgYSB0YXJnZXQgdGV4dHVyZSBmcm9tIHRoZSBpbWFnZQotICAgICAgICBHTHVpbnQg
dGFyZ2V0OwotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZ0YXJnZXQpOwotICAgICAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCB0YXJnZXQpOwotICAgICAgICBnbEVH
TEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBpbWFnZSk7
Ci0KLSAgICAgICAgLy8gRGlzYWJsZSBtaXBtYXBwaW5nCi0gICAgICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFS
RVNUKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBH
TF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotCi0gICAgICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotCi0gICAgICAgICpvdXRUYXJnZXRUZXh0dXJlID0gdGFyZ2V0OwotICAgIH0K
LQotICAgIHZvaWQgY3JlYXRlRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXIoRUdMSW1hZ2VLSFIg
aW1hZ2UsIEdMdWludCAqb3V0VGFyZ2V0UmVuZGVyYnVmZmVyKQotICAgIHsKLSAgICAgICAgLy8g
Q3JlYXRlIGEgdGFyZ2V0IHRleHR1cmUgZnJvbSB0aGUgaW1hZ2UKLSAgICAgICAgR0x1aW50IHRh
cmdldDsKLSAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZ0YXJnZXQpOwotICAgICAgICBn
bEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCB0YXJnZXQpOwotICAgICAgICBnbEVH
TEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyhHTF9SRU5ERVJCVUZGRVIsIGltYWdl
KTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICAqb3V0VGFyZ2V0
UmVuZGVyYnVmZmVyID0gdGFyZ2V0OwotICAgIH0KLQotICAgIHZvaWQgdmVyaWZ5UmVzdWx0c1Rl
eHR1cmUoR0x1aW50IHRleHR1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVi
eXRlIGRhdGFbNF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdGV4dHVy
ZVRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmVVbmlmb3JtKQotICAg
IHsKLSAgICAgICAgLy8gRHJhdyBhIHF1YWQgd2l0aCB0aGUgdGFyZ2V0IHRleHR1cmUKLSAgICAg
ICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOwotICAgICAgICBnbEJpbmRUZXh0dXJlKHRleHR1cmVU
YXJnZXQsIHRleHR1cmUpOwotICAgICAgICBnbFVuaWZvcm0xaSh0ZXh0dXJlVW5pZm9ybSwgMCk7
Ci0KLSAgICAgICAgZHJhd1F1YWQocHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICAg
ICAgLy8gRXhwZWN0IHRoYXQgdGhlIHJlbmRlcmVkIHF1YWQgaGFzIHRoZSBzYW1lIGNvbG9yIGFz
IHRoZSBzb3VyY2UgdGV4dHVyZQotICAgICAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgZGF0YVsw
XSwgZGF0YVsxXSwgZGF0YVsyXSwgZGF0YVszXSk7Ci0gICAgfQotCi0gICAgdm9pZCB2ZXJpZnlS
ZXN1bHRzMkQoR0x1aW50IHRleHR1cmUsIEdMdWJ5dGUgZGF0YVs0XSkKLSAgICB7Ci0gICAgICAg
IHZlcmlmeVJlc3VsdHNUZXh0dXJlKHRleHR1cmUsIGRhdGEsIEdMX1RFWFRVUkVfMkQsIG1UZXh0
dXJlUHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVRleHR1cmVVbmlmb3Jt
TG9jYXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgdmVyaWZ5UmVzdWx0c0V4dGVybmFsKEdMdWlu
dCB0ZXh0dXJlLCBHTHVieXRlIGRhdGFbNF0pCi0gICAgewotICAgICAgICB2ZXJpZnlSZXN1bHRz
VGV4dHVyZSh0ZXh0dXJlLCBkYXRhLCBHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgbVRleHR1cmVF
eHRlcm5hbFByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1UZXh0dXJlRXh0
ZXJuYWxVbmlmb3JtTG9jYXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgdmVyaWZ5UmVzdWx0c0V4
dGVybmFsRVNTTDMoR0x1aW50IHRleHR1cmUsIEdMdWJ5dGUgZGF0YVs0XSkKLSAgICB7Ci0gICAg
ICAgIHZlcmlmeVJlc3VsdHNUZXh0dXJlKHRleHR1cmUsIGRhdGEsIEdMX1RFWFRVUkVfRVhURVJO
QUxfT0VTLCBtVGV4dHVyZUV4dGVybmFsRVNTTDNQcm9ncmFtLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtVGV4dHVyZUV4dGVybmFsRVNTTDNVbmlmb3JtTG9jYXRpb24pOwotICAgIH0K
LQotICAgIHZvaWQgdmVyaWZ5UmVzdWx0c1JlbmRlcmJ1ZmZlcihHTHVpbnQgcmVuZGVyYnVmZmVy
LCBHTHVieXRlIGRhdGFbNF0pCi0gICAgewotICAgICAgICAvLyBCaW5kIHRoZSByZW5kZXJidWZm
ZXIgdG8gYSBmcmFtZWJ1ZmZlcgotICAgICAgICBHTHVpbnQgZnJhbWVidWZmZXI7Ci0gICAgICAg
IGdsR2VuRnJhbWVidWZmZXJzKDEsICZmcmFtZWJ1ZmZlcik7Ci0gICAgICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmcmFtZWJ1ZmZlcik7Ci0gICAgICAgIGdsRnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9S
RU5ERVJCVUZGRVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyYnVm
ZmVyKTsKLQotICAgICAgICAvLyBFeHBlY3QgdGhhdCB0aGUgcmVuZGVyZWQgcXVhZCBoYXMgdGhl
IHNhbWUgY29sb3IgYXMgdGhlIHNvdXJjZSB0ZXh0dXJlCi0gICAgICAgIEVYUEVDVF9QSVhFTF9F
USgwLCAwLCBkYXRhWzBdLCBkYXRhWzFdLCBkYXRhWzJdLCBkYXRhWzNdKTsKLQotICAgICAgICBn
bERlbGV0ZUZyYW1lYnVmZmVycygxLCAmZnJhbWVidWZmZXIpOwotICAgIH0KLQotICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBkZXN0VHlwZSwgdHlwZW5hbWUgc291cmNldHlwZT4KLSAgICBkZXN0VHlw
ZSByZWludGVycHJldEhlbHBlcihzb3VyY2V0eXBlIHNvdXJjZSkKLSAgICB7Ci0gICAgICAgIHN0
YXRpY19hc3NlcnQoc2l6ZW9mKGRlc3RUeXBlKSA9PSBzaXplb2Yoc2l6ZV90KSwKLSAgICAgICAg
ICAgICAgICAgICAgICAiZGVzdFR5cGUgc2hvdWxkIGJlIHRoZSBzYW1lIHNpemUgYXMgYSBzaXpl
X3QiKTsKLSAgICAgICAgc2l6ZV90IHNvdXJjZVNpemVUID0gc3RhdGljX2Nhc3Q8c2l6ZV90Pihz
b3VyY2UpOwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxkZXN0VHlwZT4oc291cmNl
U2l6ZVQpOwotICAgIH0KLQotICAgIEdMdWludCBtVGV4dHVyZVByb2dyYW07Ci0gICAgR0xpbnQg
bVRleHR1cmVVbmlmb3JtTG9jYXRpb247Ci0KLSAgICBHTHVpbnQgbVRleHR1cmVFeHRlcm5hbFBy
b2dyYW0gICAgICAgID0gMDsKLSAgICBHTGludCBtVGV4dHVyZUV4dGVybmFsVW5pZm9ybUxvY2F0
aW9uID0gLTE7Ci0KLSAgICBHTHVpbnQgbVRleHR1cmVFeHRlcm5hbEVTU0wzUHJvZ3JhbSAgICAg
ICAgPSAwOwotICAgIEdMaW50IG1UZXh0dXJlRXh0ZXJuYWxFU1NMM1VuaWZvcm1Mb2NhdGlvbiA9
IC0xOwotCi0gICAgUEZORUdMQ1JFQVRFSU1BR0VLSFJQUk9DIGVnbENyZWF0ZUltYWdlS0hSOwot
ICAgIFBGTkVHTERFU1RST1lJTUFHRUtIUlBST0MgZWdsRGVzdHJveUltYWdlS0hSOwotfTsKLQot
Y2xhc3MgSW1hZ2VUZXN0RVMzIDogcHVibGljIEltYWdlVGVzdAotewotfTsKLQotLy8gQ2hlY2sg
dmFsaWRhdGlvbiBmcm9tIHRoZSBFR0xfS0hSX2ltYWdlX2Jhc2UgZXh0ZW5zaW9uCi1URVNUX1Ao
SW1hZ2VUZXN0LCBWYWxpZGF0aW9uSW1hZ2VCYXNlKQotewotICAgIEVHTFdpbmRvdyAqd2luZG93
ID0gZ2V0RUdMV2luZG93KCk7Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2lt
YWdlIikgfHwKLSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0
RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwKLSAgICAgICAgIWVnbERpc3BsYXlF
eHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJl
XzJEX2ltYWdlIikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBi
ZWNhdXNlIE9FU19FR0xfaW1hZ2UsIEVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCi0gICAgICAgICAg
ICAgICAgICAgICAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUu
IgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgR0x1aW50IGdsVGV4dHVyZTJEOwotICAgIGdsR2VuVGV4dHVyZXMoMSwgJmdsVGV4
dHVyZTJEKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIGdsVGV4dHVyZTJEKTsK
LSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0KLSAgICBFR0xEaXNwbGF5IGRpc3Bs
YXkgICAgICAgID0gd2luZG93LT5nZXREaXNwbGF5KCk7Ci0gICAgRUdMQ29udGV4dCBjb250ZXh0
ICAgICAgICA9IHdpbmRvdy0+Z2V0Q29udGV4dCgpOwotICAgIEVHTENvbmZpZyBjb25maWcgICAg
ICAgICAgPSB3aW5kb3ctPmdldENvbmZpZygpOwotICAgIEVHTEltYWdlS0hSIGltYWdlICAgICAg
ICAgPSBFR0xfTk9fSU1BR0VfS0hSOwotICAgIEVHTENsaWVudEJ1ZmZlciB0ZXh0dXJlMkQgPSBy
ZWludGVycHJldEhlbHBlcjxFR0xDbGllbnRCdWZmZXI+KGdsVGV4dHVyZTJEKTsKLQotICAgIC8v
IFRlc3QgdmFsaWRhdGlvbiBvZiBlZ2xDcmVhdGVJbWFnZUtIUgotCi0gICAgLy8gSWYgPGRweT4g
aXMgbm90IHRoZSBoYW5kbGUgb2YgYSB2YWxpZCBFR0xEaXNwbGF5IG9iamVjdCwgdGhlIGVycm9y
IEVHTF9CQURfRElTUExBWSBpcwotICAgIC8vIGdlbmVyYXRlZC4KLSAgICBpbWFnZSA9IGVnbENy
ZWF0ZUltYWdlS0hSKHJlaW50ZXJwcmV0SGVscGVyPEVHTERpc3BsYXk+KDB4QkFBREYwMEQpLCBj
b250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0dMX1RFWFRVUkVfMkRf
S0hSLCB0ZXh0dXJlMkQsIG51bGxwdHIpOwotICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05PX0lN
QUdFX0tIUik7Ci0gICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX0RJU1BMQVkpOwotCi0gICAg
Ly8gSWYgPGN0eD4gaXMgbmVpdGhlciB0aGUgaGFuZGxlIG9mIGEgdmFsaWQgRUdMQ29udGV4dCBv
YmplY3Qgb24gPGRweT4gbm9yIEVHTF9OT19DT05URVhULCB0aGUKLSAgICAvLyBlcnJvciBFR0xf
QkFEX0NPTlRFWFQgaXMgZ2VuZXJhdGVkLgotICAgIGltYWdlID0gZWdsQ3JlYXRlSW1hZ2VLSFIo
ZGlzcGxheSwgcmVpbnRlcnByZXRIZWxwZXI8RUdMQ29udGV4dD4oMHhCQUFERjAwRCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsIHRleHR1cmUy
RCwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX0VRKGltYWdlLCBFR0xfTk9fSU1BR0VfS0hSKTsKLSAg
ICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfQ09OVEVYVCk7Ci0KLSAgICAvLyBUZXN0IEVHTF9O
T19DT05URVhUIHdpdGggYSAyRCB0ZXh0dXJlIHRhcmdldCB3aGljaCBkb2VzIHJlcXVpcmUgYSBj
b250ZXh0LgotICAgIGltYWdlID0gZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwgRUdMX05PX0NP
TlRFWFQsIEVHTF9HTF9URVhUVVJFXzJEX0tIUiwgdGV4dHVyZTJELCBudWxscHRyKTsKLSAgICBF
WFBFQ1RfRVEoaW1hZ2UsIEVHTF9OT19JTUFHRV9LSFIpOwotICAgIEVYUEVDVF9FR0xfRVJST1Io
RUdMX0JBRF9DT05URVhUKTsKLQotICAgIC8vIElmIGFuIGF0dHJpYnV0ZSBzcGVjaWZpZWQgaW4g
PGF0dHJpYl9saXN0PiBpcyBub3Qgb25lIG9mIHRoZSBhdHRyaWJ1dGVzIGxpc3RlZCBpbiBUYWJs
ZSBiYmIsCi0gICAgLy8gdGhlIGVycm9yIEVHTF9CQURfUEFSQU1FVEVSIGlzIGdlbmVyYXRlZC4K
LSAgICBFR0xpbnQgYmFkQXR0cmlidXRlc1tdID0gewotICAgICAgICBzdGF0aWNfY2FzdDxFR0xp
bnQ+KDB4REVBREJFRUYpLCAwLCBFR0xfTk9ORSwKLSAgICB9OwotCi0gICAgaW1hZ2UgPSBlZ2xD
cmVhdGVJbWFnZUtIUihkaXNwbGF5LCBjb250ZXh0LCBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsIHRl
eHR1cmUyRCwgYmFkQXR0cmlidXRlcyk7Ci0gICAgRVhQRUNUX0VRKGltYWdlLCBFR0xfTk9fSU1B
R0VfS0hSKTsKLSAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfUEFSQU1FVEVSKTsKLQotICAg
IC8vIElmIHRoZSByZXNvdXJjZSBzcGVjaWZpZWQgYnkgPGRweT4sIDxjdHg+LCA8dGFyZ2V0Piwg
PGJ1ZmZlcj4gYW5kIDxhdHRyaWJfbGlzdD4gaGFzIGFuIG9mZiAtCi0gICAgLy8gc2NyZWVuIGJ1
ZmZlciBib3VuZCB0byBpdChlLmcuLCBieSBhCi0gICAgLy8gcHJldmlvdXMgY2FsbCB0byBlZ2xC
aW5kVGV4SW1hZ2UpLCB0aGUgZXJyb3IgRUdMX0JBRF9BQ0NFU1MgaXMgZ2VuZXJhdGVkLgotICAg
IEVHTGludCBzdXJmYWNlVHlwZSA9IDA7Ci0gICAgZWdsR2V0Q29uZmlnQXR0cmliKGRpc3BsYXks
IGNvbmZpZywgRUdMX1NVUkZBQ0VfVFlQRSwgJnN1cmZhY2VUeXBlKTsKLQotICAgIEVHTGludCBi
aW5kVG9UZXh0dXJlUkdCQSA9IDA7Ci0gICAgZWdsR2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGNv
bmZpZywgRUdMX0JJTkRfVE9fVEVYVFVSRV9SR0JBLCAmYmluZFRvVGV4dHVyZVJHQkEpOwotICAg
IGlmICgoc3VyZmFjZVR5cGUgJiBFR0xfUEJVRkZFUl9CSVQpICE9IDAgJiYgYmluZFRvVGV4dHVy
ZVJHQkEgPT0gRUdMX1RSVUUpCi0gICAgewotICAgICAgICBFR0xpbnQgcGJ1ZmZlckF0dHJpYnV0
ZXNbXSA9IHsKLSAgICAgICAgICAgIEVHTF9XSURUSCwgICAgICAgICAgMSwKLSAgICAgICAgICAg
IEVHTF9IRUlHSFQsICAgICAgICAgMSwKLSAgICAgICAgICAgIEVHTF9URVhUVVJFX0ZPUk1BVCwg
RUdMX1RFWFRVUkVfUkdCQSwKLSAgICAgICAgICAgIEVHTF9URVhUVVJFX1RBUkdFVCwgRUdMX1RF
WFRVUkVfMkQsCi0gICAgICAgICAgICBFR0xfTk9ORSwgICAgICAgICAgIEVHTF9OT05FLAotICAg
ICAgICB9OwotICAgICAgICBFR0xTdXJmYWNlIHBidWZmZXIgPSBlZ2xDcmVhdGVQYnVmZmVyU3Vy
ZmFjZShkaXNwbGF5LCBjb25maWcsIHBidWZmZXJBdHRyaWJ1dGVzKTsKLSAgICAgICAgQVNTRVJU
X05FKHBidWZmZXIsIEVHTF9OT19TVVJGQUNFKTsKLSAgICAgICAgRVhQRUNUX0VHTF9TVUNDRVNT
KCk7Ci0KLSAgICAgICAgZWdsQmluZFRleEltYWdlKGRpc3BsYXksIHBidWZmZXIsIEVHTF9CQUNL
X0JVRkZFUik7Ci0gICAgICAgIEVYUEVDVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgICAgIGltYWdl
ID0gZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwgY29udGV4dCwgRUdMX0dMX1RFWFRVUkVfMkRf
S0hSLCB0ZXh0dXJlMkQsIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfRVEoaW1hZ2UsIEVHTF9O
T19JTUFHRV9LSFIpOwotICAgICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfQUNDRVNTKTsK
LQotICAgICAgICBlZ2xSZWxlYXNlVGV4SW1hZ2UoZGlzcGxheSwgcGJ1ZmZlciwgRUdMX0JBQ0tf
QlVGRkVSKTsKLSAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UoZGlzcGxheSwgcGJ1ZmZlcik7Ci0g
ICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0VHTF9T
VUNDRVNTKCk7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIC8v
IElmIHRoZSByZXNvdXJjZSBzcGVjaWZpZWQgYnkgPGRweT4sIDxjdHg+LCA8dGFyZ2V0PiwgPGJ1
ZmZlcj4gYW5kCi0gICAgLy8gPGF0dHJpYl9saXN0PiBpcyBpdHNlbGYgYW4gRUdMSW1hZ2Ugc2li
bGluZywgdGhlIGVycm9yIEVHTF9CQURfQUNDRVNTIGlzIGdlbmVyYXRlZC4KLSAgICBpbWFnZSA9
IGVnbENyZWF0ZUltYWdlS0hSKGRpc3BsYXksIGNvbnRleHQsIEVHTF9HTF9URVhUVVJFXzJEX0tI
UiwgdGV4dHVyZTJELCBudWxscHRyKTsKLSAgICBFWFBFQ1RfTkUoaW1hZ2UsIEVHTF9OT19JTUFH
RV9LSFIpOwotICAgIEVYUEVDVF9FR0xfU1VDQ0VTUygpOwotCi0gICAgLyogVE9ETyhnZW9mZmxh
bmcpOiBFbmFibGUgdGhpcyB2YWxpZGF0aW9uIHdoZW4gaXQgcGFzc2VzLgotICAgIEVHTEltYWdl
S0hSIGltYWdlMiA9IGVnbENyZWF0ZUltYWdlS0hSKGRpc3BsYXksIGNvbnRleHQsIEVHTF9HTF9U
RVhUVVJFXzJEX0tIUiwKLSAgICByZWludGVycHJldF9jYXN0PEVHTENsaWVudEJ1ZmZlcj4odGV4
dHVyZTJEKSwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX0VRKGltYWdlMiwgRUdMX05PX0lNQUdFX0tI
Uik7Ci0gICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX0FDQ0VTUyk7Ci0gICAgKi8KLQotICAg
IC8vIFRlc3QgdmFsaWRhdGlvbiBvZiBlZ2xEZXN0cm95SW1hZ2VLSFIKLSAgICAvLyBOb3RlOiBp
bWFnZSBpcyBub3cgYSB2YWxpZCBFR0wgaW1hZ2UKLSAgICBFR0xCb29sZWFuIHJlc3VsdCA9IEVH
TF9GQUxTRTsKLQotICAgIC8vIElmIDxkcHk+IGlzIG5vdCB0aGUgaGFuZGxlIG9mIGEgdmFsaWQg
RUdMRGlzcGxheSBvYmplY3QsIHRoZSBlcnJvciBFR0xfQkFEX0RJU1BMQVkgaXMKLSAgICAvLyBn
ZW5lcmF0ZWQuCi0gICAgcmVzdWx0ID0gZWdsRGVzdHJveUltYWdlS0hSKHJlaW50ZXJwcmV0SGVs
cGVyPEVHTERpc3BsYXk+KDB4QkFBREYwMEQpLCBpbWFnZSk7Ci0gICAgRVhQRUNUX0VRKHJlc3Vs
dCwgc3RhdGljX2Nhc3Q8RUdMQm9vbGVhbj4oRUdMX0ZBTFNFKSk7Ci0gICAgRVhQRUNUX0VHTF9F
UlJPUihFR0xfQkFEX0RJU1BMQVkpOwotCi0gICAgLy8gSWYgPGltYWdlPiBpcyBub3QgYSB2YWxp
ZCBFR0xJbWFnZUtIUiBvYmplY3QgY3JlYXRlZCB3aXRoIHJlc3BlY3QgdG8gPGRweT4sIHRoZSBl
cnJvcgotICAgIC8vIEVHTF9CQURfUEFSQU1FVEVSIGlzIGdlbmVyYXRlZC4KLSAgICByZXN1bHQg
PSBlZ2xEZXN0cm95SW1hZ2VLSFIoZGlzcGxheSwgcmVpbnRlcnByZXRIZWxwZXI8RUdMSW1hZ2VL
SFI+KDB4QkFBREYwMEQpKTsKLSAgICBFWFBFQ1RfRVEocmVzdWx0LCBzdGF0aWNfY2FzdDxFR0xC
b29sZWFuPihFR0xfRkFMU0UpKTsKLSAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfUEFSQU1F
VEVSKTsKLQotICAgIC8vIENsZWFuIHVwIGFuZCB2YWxpZGF0ZSBpbWFnZSBpcyBkZXN0cm95ZWQK
LSAgICByZXN1bHQgPSBlZ2xEZXN0cm95SW1hZ2VLSFIoZGlzcGxheSwgaW1hZ2UpOwotICAgIEVY
UEVDVF9FUShyZXN1bHQsIHN0YXRpY19jYXN0PEVHTEJvb2xlYW4+KEVHTF9UUlVFKSk7Ci0gICAg
RVhQRUNUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZnbFRleHR1
cmUyRCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIENoZWNrIHZhbGlkYXRp
b24gZnJvbSB0aGUgRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIGV4dGVuc2lvbgotVEVTVF9Q
KEltYWdlVGVzdCwgVmFsaWRhdGlvbkltYWdlUGl4bWFwKQotewotICAgIC8vIFRoaXMgZXh0ZW5z
aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCBhbnl3aGVyZSB5ZXQuICBUaGlzIG1ha2VzIHN1cmUgdGhh
dCBpdCBpcyB0ZXN0ZWQgb25jZSBpdCBpcwotICAgIC8vIGFkZGVkLgotICAgIEVHTFdpbmRvdyAq
d2luZG93ID0gZ2V0RUdMV2luZG93KCk7Ci0gICAgRVhQRUNUX0ZBTFNFKGVnbERpc3BsYXlFeHRl
bnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFnZV9waXhtYXAi
KSk7Ci19Ci0KLS8vIENoZWNrIHZhbGlkYXRpb24gZnJvbSB0aGUgRUdMX0tIUl9nbF90ZXh0dXJl
XzJEX2ltYWdlLCBFR0xfS0hSX2dsX3RleHR1cmVfY3ViZW1hcF9pbWFnZSwKLS8vIEVHTF9LSFJf
Z2xfdGV4dHVyZV8zRF9pbWFnZSBhbmQgRUdMX0tIUl9nbF9yZW5kZXJidWZmZXJfaW1hZ2UgZXh0
ZW5zaW9ucwotVEVTVF9QKEltYWdlVGVzdCwgVmFsaWRhdGlvbkdMSW1hZ2UpCi17Ci0gICAgRUdM
V2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJs
ZWQoIk9FU19FR0xfaW1hZ2UiKSB8fAotICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJs
ZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSkKLSAgICB7Ci0g
ICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSBv
ciBFR0xfS0hSX2ltYWdlX2Jhc2UgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAg
ICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBFR0xEaXNwbGF5
IGRpc3BsYXkgPSB3aW5kb3ctPmdldERpc3BsYXkoKTsKLSAgICBFR0xDb250ZXh0IGNvbnRleHQg
PSB3aW5kb3ctPmdldENvbnRleHQoKTsKLSAgICBFR0xJbWFnZUtIUiBpbWFnZSAgPSBFR0xfTk9f
SU1BR0VfS0hSOwotCi0gICAgaWYgKGVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+
Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIikpCi0gICAgewotICAg
ICAgICAvLyBJZiA8dGFyZ2V0PiBpcyBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsIEVHTF9HTF9URVhU
VVJFX0NVQkVfTUFQXypfS0hSIG9yCi0gICAgICAgIC8vIEVHTF9HTF9URVhUVVJFXzNEX0tIUiBh
bmQgPGJ1ZmZlcj4gaXMgbm90IHRoZSBuYW1lIG9mIGEgdGV4dHVyZSBvYmplY3Qgb2YgdHlwZSA8
dGFyZ2V0PiwKLSAgICAgICAgLy8gdGhlIGVycm9yIEVHTF9CQURfUEFSQU1FVEVSIGlzIGdlbmVy
YXRlZC4KLSAgICAgICAgR0x1aW50IHRleHR1cmVDdWJlOwotICAgICAgICBnbEdlblRleHR1cmVz
KDEsICZ0ZXh0dXJlQ3ViZSk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJF
X01BUCwgdGV4dHVyZUN1YmUpOwotICAgICAgICBmb3IgKEdMZW51bSBmYWNlID0gR0xfVEVYVFVS
RV9DVUJFX01BUF9QT1NJVElWRV9YOyBmYWNlIDw9IEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJ
VkVfWjsKLSAgICAgICAgICAgICBmYWNlKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsVGV4
SW1hZ2UyRChmYWNlLCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLCBudWxscHRyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGltYWdlID0gZWdsQ3JlYXRlSW1h
Z2VLSFIoZGlzcGxheSwgY29udGV4dCwgRUdMX0dMX1RFWFRVUkVfMkRfS0hSLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0SGVscGVyPEVHTENsaWVudEJ1ZmZl
cj4odGV4dHVyZUN1YmUpLCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0VRKGltYWdlLCBFR0xf
Tk9fSU1BR0VfS0hSKTsKLSAgICAgICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX1BBUkFNRVRF
Uik7Ci0KLSAgICAgICAgLy8gSWYgRUdMX0dMX1RFWFRVUkVfTEVWRUxfS0hSIGlzIDAsIDx0YXJn
ZXQ+IGlzIEVHTF9HTF9URVhUVVJFXzJEX0tIUiwKLSAgICAgICAgLy8gRUdMX0dMX1RFWFRVUkVf
Q1VCRV9NQVBfKl9LSFIgb3IgRUdMX0dMX1RFWFRVUkVfM0RfS0hSLCA8YnVmZmVyPiBpcyB0aGUg
bmFtZSBvZiBhbgotICAgICAgICAvLyBpbmNvbXBsZXRlIEdMIHRleHR1cmUgb2JqZWN0LCBhbmQg
YW55IG1pcG1hcCBsZXZlbHMgb3RoZXIgdGhhbiBtaXBtYXAgbGV2ZWwgMCBhcmUKLSAgICAgICAg
Ly8gc3BlY2lmaWVkLCB0aGUgZXJyb3IgRUdMX0JBRF9QQVJBTUVURVIgaXMgZ2VuZXJhdGVkLgot
ICAgICAgICBHTHVpbnQgaW5jb21wbGV0ZVRleHR1cmU7Ci0gICAgICAgIGdsR2VuVGV4dHVyZXMo
MSwgJmluY29tcGxldGVUZXh0dXJlKTsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBpbmNvbXBsZXRlVGV4dHVyZSk7Ci0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCBHTF9SR0JBLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxs
cHRyKTsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkEsIDIs
IDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotCi0gICAgICAgIEVH
TGludCBsZXZlbDBBdHRyaWJ1dGVbXSA9IHsKLSAgICAgICAgICAgIEVHTF9HTF9URVhUVVJFX0xF
VkVMX0tIUiwgMCwgRUdMX05PTkUsCi0gICAgICAgIH07Ci0gICAgICAgIGltYWdlID0gZWdsQ3Jl
YXRlSW1hZ2VLSFIoZGlzcGxheSwgY29udGV4dCwgRUdMX0dMX1RFWFRVUkVfMkRfS0hSLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0SGVscGVyPEVHTENsaWVu
dEJ1ZmZlcj4oaW5jb21wbGV0ZVRleHR1cmUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxldmVsMEF0dHJpYnV0ZSk7Ci0gICAgICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05P
X0lNQUdFX0tIUik7Ci0gICAgICAgIEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9QQVJBTUVURVIp
OwotCi0gICAgICAgIC8vIElmIEVHTF9HTF9URVhUVVJFX0xFVkVMX0tIUiBpcyAwLCA8dGFyZ2V0
PiBpcyBFR0xfR0xfVEVYVFVSRV8yRF9LSFIgb3IKLSAgICAgICAgLy8gRUdMX0dMX1RFWFRVUkVf
M0RfS0hSLCA8YnVmZmVyPiBpcyBub3QgdGhlIG5hbWUgb2YgYSBjb21wbGV0ZSBHTCB0ZXh0dXJl
IG9iamVjdCwgYW5kCi0gICAgICAgIC8vIG1pcG1hcCBsZXZlbCAwIGlzIG5vdCBzcGVjaWZpZWQs
IHRoZSBlcnJvciBFR0xfQkFEX1BBUkFNRVRFUiBpcyBnZW5lcmF0ZWQuCi0gICAgICAgIGdsVGV4
SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAwLCAwLCAwLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLCBudWxscHRyKTsKLSAgICAgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtI
UihkaXNwbGF5LCBjb250ZXh0LCBFR0xfR0xfVEVYVFVSRV8yRF9LSFIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRIZWxwZXI8RUdMQ2xpZW50QnVmZmVyPihp
bmNvbXBsZXRlVGV4dHVyZSksIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfRVEoaW1hZ2UsIEVH
TF9OT19JTUFHRV9LSFIpOwotICAgICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfUEFSQU1F
VEVSKTsKLQotICAgICAgICAvLyBJZiA8dGFyZ2V0PiBpcyBFR0xfR0xfVEVYVFVSRV8yRF9LSFIs
IEVHTF9HTF9URVhUVVJFX0NVQkVfTUFQXypfS0hSLAotICAgICAgICAvLyBFR0xfR0xfUkVOREVS
QlVGRkVSX0tIUiBvciBFR0xfR0xfVEVYVFVSRV8zRF9LSFIgYW5kIDxidWZmZXI+IHJlZmVycyB0
byB0aGUgZGVmYXVsdCBHTAotICAgICAgICAvLyB0ZXh0dXJlIG9iamVjdCgwKSBmb3IgdGhlIGNv
cnJlc3BvbmRpbmcgR0wgdGFyZ2V0LCB0aGUgZXJyb3IgRUdMX0JBRF9QQVJBTUVURVIgaXMKLSAg
ICAgICAgLy8gZ2VuZXJhdGVkLgotICAgICAgICBpbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRp
c3BsYXksIGNvbnRleHQsIEVHTF9HTF9URVhUVVJFXzJEX0tIUiwgMCwgbnVsbHB0cik7Ci0gICAg
ICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05PX0lNQUdFX0tIUik7Ci0gICAgICAgIEVYUEVDVF9F
R0xfRVJST1IoRUdMX0JBRF9QQVJBTUVURVIpOwotCi0gICAgICAgIC8vIElmIDx0YXJnZXQ+IGlz
IEVHTF9HTF9URVhUVVJFXzJEX0tIUiwgRUdMX0dMX1RFWFRVUkVfQ1VCRV9NQVBfKl9LSFIsIG9y
Ci0gICAgICAgIC8vIEVHTF9HTF9URVhUVVJFXzNEX0tIUiwgYW5kIHRoZSB2YWx1ZSBzcGVjaWZp
ZWQgaW4gPGF0dHJfbGlzdD4gZm9yCi0gICAgICAgIC8vIEVHTF9HTF9URVhUVVJFX0xFVkVMX0tI
UiBpcyBub3QgYSB2YWxpZCBtaXBtYXAgbGV2ZWwgZm9yIHRoZSBzcGVjaWZpZWQgR0wgdGV4dHVy
ZSBvYmplY3QKLSAgICAgICAgLy8gPGJ1ZmZlcj4sIHRoZSBlcnJvciBFR0xfQkFEX01BVENIIGlz
IGdlbmVyYXRlZC4KLSAgICAgICAgRUdMaW50IGxldmVsMkF0dHJpYnV0ZVtdID0gewotICAgICAg
ICAgICAgRUdMX0dMX1RFWFRVUkVfTEVWRUxfS0hSLCAyLCBFR0xfTk9ORSwKLSAgICAgICAgfTsK
LSAgICAgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUihkaXNwbGF5LCBjb250ZXh0LCBFR0xf
R0xfVEVYVFVSRV8yRF9LSFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVp
bnRlcnByZXRIZWxwZXI8RUdMQ2xpZW50QnVmZmVyPihpbmNvbXBsZXRlVGV4dHVyZSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwyQXR0cmlidXRlKTsKLSAgICAgICAg
RVhQRUNUX0VRKGltYWdlLCBFR0xfTk9fSU1BR0VfS0hSKTsKLSAgICAgICAgRVhQRUNUX0VHTF9F
UlJPUihFR0xfQkFEX1BBUkFNRVRFUik7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAg
IEdMdWludCB0ZXh0dXJlMkQ7Ci0gICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUyRCk7
Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZTJEKTsKLSAgICAg
ICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotCi0gICAgICAgIC8vIEZyb20gRUdMX0tI
Ul9pbWFnZV9iYXNlOgotICAgICAgICAvLyBJZiA8dGFyZ2V0PiBpcyBub3Qgb25lIG9mIHRoZSB2
YWx1ZXMgaW4gVGFibGUgYWFhLCB0aGUgZXJyb3IgRUdMX0JBRF9QQVJBTUVURVIgaXMKLSAgICAg
ICAgLy8gZ2VuZXJhdGVkLgotICAgICAgICBpbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRpc3Bs
YXksIGNvbnRleHQsIEVHTF9HTF9URVhUVVJFXzJEX0tIUiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWludGVycHJldEhlbHBlcjxFR0xDbGllbnRCdWZmZXI+KHRleHR1cmUy
RCksIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfRVEoaW1hZ2UsIEVHTF9OT19JTUFHRV9LSFIp
OwotICAgICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfUEFSQU1FVEVSKTsKLSAgICB9Ci0K
LSAgICBpZiAoZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCks
ICJFR0xfS0hSX2dsX3RleHR1cmVfY3ViZW1hcF9pbWFnZSIpKQotICAgIHsKLSAgICAgICAgLy8g
SWYgRUdMX0dMX1RFWFRVUkVfTEVWRUxfS0hSIGlzIDAsIDx0YXJnZXQ+IGlzIEVHTF9HTF9URVhU
VVJFX0NVQkVfTUFQXypfS0hSLCA8YnVmZmVyPiBpcwotICAgICAgICAvLyBub3QgdGhlIG5hbWUg
b2YgYSBjb21wbGV0ZSBHTCB0ZXh0dXJlIG9iamVjdCwgYW5kIG9uZSBvciBtb3JlIGZhY2VzIGRv
IG5vdCBoYXZlIG1pcG1hcAotICAgICAgICAvLyBsZXZlbCAwIHNwZWNpZmllZCwgdGhlIGVycm9y
IEVHTF9CQURfUEFSQU1FVEVSIGlzIGdlbmVyYXRlZC4KLSAgICAgICAgR0x1aW50IGluY29tcGxl
dGVUZXh0dXJlQ3ViZTsKLSAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmaW5jb21wbGV0ZVRleHR1
cmVDdWJlKTsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0NVQkVfTUFQLCBpbmNv
bXBsZXRlVGV4dHVyZUN1YmUpOwotICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJF
X01BUF9QT1NJVElWRV9YLCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLAotICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgIGdsVGV4SW1h
Z2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1gsIDAsIEdMX1JHQkEsIDEsIDEsIDAs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgICAgICBudWxscHRy
KTsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSwg
MCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAg
ICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9D
VUJFX01BUF9ORUdBVElWRV9ZLCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLAotICAgICAgICAgICAgICAgICAgICAgbnVsbHB0cik7Ci0gICAgICAgIGdsVGV4
SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osIDAsIEdMX1JHQkEsIDEsIDEs
IDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgICAgICBudWxs
cHRyKTsKLQotICAgICAgICBFR0xpbnQgbGV2ZWwwQXR0cmlidXRlW10gPSB7Ci0gICAgICAgICAg
ICBFR0xfR0xfVEVYVFVSRV9MRVZFTF9LSFIsIDAsIEVHTF9OT05FLAotICAgICAgICB9OwotICAg
ICAgICBpbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRpc3BsYXksIGNvbnRleHQsIEVHTF9HTF9U
RVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hfS0hSLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlaW50ZXJwcmV0SGVscGVyPEVHTENsaWVudEJ1ZmZlcj4oaW5jb21wbGV0ZVRl
eHR1cmVDdWJlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbDBBdHRy
aWJ1dGUpOwotICAgICAgICBFWFBFQ1RfRVEoaW1hZ2UsIEVHTF9OT19JTUFHRV9LSFIpOwotICAg
ICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfUEFSQU1FVEVSKTsKLSAgICB9Ci0gICAgZWxz
ZQotICAgIHsKLSAgICAgICAgR0x1aW50IHRleHR1cmVDdWJlOwotICAgICAgICBnbEdlblRleHR1
cmVzKDEsICZ0ZXh0dXJlQ3ViZSk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9D
VUJFX01BUCwgdGV4dHVyZUN1YmUpOwotICAgICAgICBmb3IgKEdMZW51bSBmYWNlID0gR0xfVEVY
VFVSRV9DVUJFX01BUF9QT1NJVElWRV9YOyBmYWNlIDw9IEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVH
QVRJVkVfWjsKLSAgICAgICAgICAgICBmYWNlKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGds
VGV4SW1hZ2UyRChmYWNlLCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCBudWxscHRyKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZyb20gRUdMX0tIUl9p
bWFnZV9iYXNlOgotICAgICAgICAvLyBJZiA8dGFyZ2V0PiBpcyBub3Qgb25lIG9mIHRoZSB2YWx1
ZXMgaW4gVGFibGUgYWFhLCB0aGUgZXJyb3IgRUdMX0JBRF9QQVJBTUVURVIgaXMKLSAgICAgICAg
Ly8gZ2VuZXJhdGVkLgotICAgICAgICBpbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRpc3BsYXks
IGNvbnRleHQsIEVHTF9HTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hfS0hSLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0SGVscGVyPEVHTENsaWVudEJ1
ZmZlcj4odGV4dHVyZUN1YmUpLCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0VRKGltYWdlLCBF
R0xfTk9fSU1BR0VfS0hSKTsKLSAgICAgICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX1BBUkFN
RVRFUik7Ci0gICAgfQotCi0gICAgaWYgKGVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRv
dy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlXzNEX2ltYWdlIikgJiYKLSAgICAg
ICAgZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMykKLSAgICB7Ci0gICAgICAgIC8vIElmIDx0
YXJnZXQ+IGlzIEVHTF9HTF9URVhUVVJFXzNEX0tIUiwgYW5kIHRoZSB2YWx1ZSBzcGVjaWZpZWQg
aW4gPGF0dHJfbGlzdD4gZm9yCi0gICAgICAgIC8vIEVHTF9HTF9URVhUVVJFX1pPRkZTRVRfS0hS
IGV4Y2VlZHMgdGhlIGRlcHRoIG9mIHRoZSBzcGVjaWZpZWQgbWlwbWFwIGxldmVsIC0gb2YgLSBk
ZXRhaWwKLSAgICAgICAgLy8gaW4gPGJ1ZmZlcj4sIHRoZSBlcnJvciBFR0xfQkFEX1BBUkFNRVRF
UiBpcyBnZW5lcmF0ZWQuCi0gICAgICAgIEdMdWludCB0ZXh0dXJlM0Q7Ci0gICAgICAgIGdsR2Vu
VGV4dHVyZXMoMSwgJnRleHR1cmUzRCk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8zRCwgdGV4dHVyZTNEKTsKLSAgICAgICAgZ2xUZXhJbWFnZTNEKEdMX1RFWFRVUkVfM0QsIDAs
IEdMX1JHQkEsIDIsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIp
OwotCi0gICAgICAgIEVHTGludCB6T2Zmc2V0M1BhcmFtZXRlcltdID0gewotICAgICAgICAgICAg
RUdMX0dMX1RFWFRVUkVfWk9GRlNFVF9LSFIsIDMsIEVHTF9OT05FLAotICAgICAgICB9OwotICAg
ICAgICBpbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRpc3BsYXksIGNvbnRleHQsIEVHTF9HTF9U
RVhUVVJFXzNEX0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVy
cHJldEhlbHBlcjxFR0xDbGllbnRCdWZmZXI+KHRleHR1cmUzRCksIHpPZmZzZXQzUGFyYW1ldGVy
KTsKLSAgICAgICAgRVhQRUNUX0VRKGltYWdlLCBFR0xfTk9fSU1BR0VfS0hSKTsKLSAgICAgICAg
RVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX1BBUkFNRVRFUik7Ci0KLSAgICAgICAgRUdMaW50IHpP
ZmZzZXROZWdhdGl2ZTFQYXJhbWV0ZXJbXSA9IHsKLSAgICAgICAgICAgIEVHTF9HTF9URVhUVVJF
X1pPRkZTRVRfS0hSLCAtMSwgRUdMX05PTkUsCi0gICAgICAgIH07Ci0gICAgICAgIGltYWdlID0g
ZWdsQ3JlYXRlSW1hZ2VLSFIoZGlzcGxheSwgY29udGV4dCwgRUdMX0dMX1RFWFRVUkVfM0RfS0hS
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0SGVscGVyPEVH
TENsaWVudEJ1ZmZlcj4odGV4dHVyZTNEKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB6T2Zmc2V0TmVnYXRpdmUxUGFyYW1ldGVyKTsKLSAgICAgICAgRVhQRUNUX0VRKGltYWdl
LCBFR0xfTk9fSU1BR0VfS0hSKTsKLSAgICAgICAgRVhQRUNUX0VHTF9FUlJPUihFR0xfQkFEX1BB
UkFNRVRFUik7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGlmIChlZ2xEaXNwbGF5
RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVy
ZV8yRF9pbWFnZSIpKQotICAgICAgICB7Ci0gICAgICAgICAgICBHTHVpbnQgdGV4dHVyZTJEOwot
ICAgICAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZTJEKTsKLSAgICAgICAgICAgIGds
QmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZTJEKTsKLSAgICAgICAgICAgIGdsVGV4
SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLCBudWxscHRyKTsKLQotICAgICAgICAgICAgLy8gVmVyaWZ5IEVHTF9HTF9U
RVhUVVJFX1pPRkZTRVRfS0hSIGlzIG5vdCBhIHZhbGlkIHBhcmFtZXRlcgotICAgICAgICAgICAg
RUdMaW50IHpPZmZzZXQwUGFyYW1ldGVyW10gPSB7Ci0gICAgICAgICAgICAgICAgRUdMX0dMX1RF
WFRVUkVfWk9GRlNFVF9LSFIsIDAsIEVHTF9OT05FLAotICAgICAgICAgICAgfTsKLQotICAgICAg
ICAgICAgaW1hZ2UgPQotICAgICAgICAgICAgICAgIGVnbENyZWF0ZUltYWdlS0hSKGRpc3BsYXks
IGNvbnRleHQsIEVHTF9HTF9URVhUVVJFXzJEX0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWludGVycHJldEhlbHBlcjxFR0xDbGllbnRCdWZmZXI+KHRleHR1cmUyRCks
IHpPZmZzZXQwUGFyYW1ldGVyKTsKLSAgICAgICAgICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05P
X0lNQUdFX0tIUik7Ci0gICAgICAgICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfUEFSQU1F
VEVSKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA+
PSAzKQotICAgICAgICB7Ci0gICAgICAgICAgICBHTHVpbnQgdGV4dHVyZTNEOwotICAgICAgICAg
ICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZTNEKTsKLSAgICAgICAgICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV8zRCwgdGV4dHVyZTNEKTsKLSAgICAgICAgICAgIGdsVGV4SW1hZ2UzRChH
TF9URVhUVVJFXzNELCAwLCBHTF9SR0JBLCAxLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCBudWxscHRyKTsKLQotICAgICAgICAgICAgLy8gRnJvbSBFR0xfS0hSX2ltYWdlX2Jh
c2U6Ci0gICAgICAgICAgICAvLyBJZiA8dGFyZ2V0PiBpcyBub3Qgb25lIG9mIHRoZSB2YWx1ZXMg
aW4gVGFibGUgYWFhLCB0aGUgZXJyb3IgRUdMX0JBRF9QQVJBTUVURVIgaXMKLSAgICAgICAgICAg
IC8vIGdlbmVyYXRlZC4KLSAgICAgICAgICAgIGltYWdlID0gZWdsQ3JlYXRlSW1hZ2VLSFIoZGlz
cGxheSwgY29udGV4dCwgRUdMX0dMX1RFWFRVUkVfM0RfS0hSLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZWludGVycHJldEhlbHBlcjxFR0xDbGllbnRCdWZmZXI+KHRl
eHR1cmUzRCksIG51bGxwdHIpOwotICAgICAgICAgICAgRVhQRUNUX0VRKGltYWdlLCBFR0xfTk9f
SU1BR0VfS0hSKTsKLSAgICAgICAgICAgIEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9QQVJBTUVU
RVIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGVnbERpc3BsYXlFeHRlbnNpb25FbmFi
bGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF9yZW5kZXJidWZmZXJfaW1hZ2Ui
KSkKLSAgICB7Ci0gICAgICAgIC8vIElmIDx0YXJnZXQ+IGlzIEVHTF9HTF9SRU5ERVJCVUZGRVJf
S0hSIGFuZCA8YnVmZmVyPiBpcyBub3QgdGhlIG5hbWUgb2YgYSByZW5kZXJidWZmZXIKLSAgICAg
ICAgLy8gb2JqZWN0LCBvciBpZiA8YnVmZmVyPiBpcyB0aGUgbmFtZSBvZiBhIG11bHRpc2FtcGxl
ZCByZW5kZXJidWZmZXIgb2JqZWN0LCB0aGUgZXJyb3IKLSAgICAgICAgLy8gRUdMX0JBRF9QQVJB
TUVURVIgaXMgZ2VuZXJhdGVkLgotICAgICAgICBpbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRp
c3BsYXksIGNvbnRleHQsIEVHTF9HTF9SRU5ERVJCVUZGRVJfS0hSLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8RUdMQ2xpZW50QnVmZmVyPigwKSwg
bnVsbHB0cik7Ci0gICAgICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05PX0lNQUdFX0tIUik7Ci0g
ICAgICAgIEVYUEVDVF9FR0xfRVJST1IoRUdMX0JBRF9QQVJBTUVURVIpOwotCi0gICAgICAgIGlm
IChleHRlbnNpb25FbmFibGVkKCJHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSIpKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBHTHVpbnQgcmVuZGVyYnVmZmVyOwotICAgICAgICAgICAg
Z2xHZW5SZW5kZXJidWZmZXJzKDEsICZyZW5kZXJidWZmZXIpOwotICAgICAgICAgICAgZ2xCaW5k
UmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwgcmVuZGVyYnVmZmVyKTsKLSAgICAgICAgICAg
IGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlQU5HTEUoR0xfUkVOREVSQlVGRkVSLCAx
LCBHTF9SR0JBOCwgMSwgMSk7Ci0gICAgICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQot
ICAgICAgICAgICAgaW1hZ2UgPSBlZ2xDcmVhdGVJbWFnZUtIUihkaXNwbGF5LCBjb250ZXh0LCBF
R0xfR0xfUkVOREVSQlVGRkVSX0tIUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDxFR0xDbGllbnRCdWZmZXI+KDApLCBudWxscHRyKTsKLSAg
ICAgICAgICAgIEVYUEVDVF9FUShpbWFnZSwgRUdMX05PX0lNQUdFX0tIUik7Ci0gICAgICAgICAg
ICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURfUEFSQU1FVEVSKTsKLSAgICAgICAgfQotICAgIH0K
LSAgICBlbHNlCi0gICAgewotICAgICAgICBHTHVpbnQgcmVuZGVyYnVmZmVyOwotICAgICAgICBn
bEdlblJlbmRlcmJ1ZmZlcnMoMSwgJnJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgIGdsQmluZFJlbmRl
cmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIHJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgIGdsUmVuZGVy
YnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIEdMX1JHQkE0LCAxLCAxKTsKLQotICAgICAg
ICAvLyBGcm9tIEVHTF9LSFJfaW1hZ2VfYmFzZToKLSAgICAgICAgLy8gSWYgPHRhcmdldD4gaXMg
bm90IG9uZSBvZiB0aGUgdmFsdWVzIGluIFRhYmxlIGFhYSwgdGhlIGVycm9yIEVHTF9CQURfUEFS
QU1FVEVSIGlzCi0gICAgICAgIC8vIGdlbmVyYXRlZC4KLSAgICAgICAgaW1hZ2UgPSBlZ2xDcmVh
dGVJbWFnZUtIUihkaXNwbGF5LCBjb250ZXh0LCBFR0xfR0xfUkVOREVSQlVGRkVSX0tIUiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldEhlbHBlcjxFR0xDbGll
bnRCdWZmZXI+KHJlbmRlcmJ1ZmZlciksIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfRVEoaW1h
Z2UsIEVHTF9OT19JTUFHRV9LSFIpOwotICAgICAgICBFWFBFQ1RfRUdMX0VSUk9SKEVHTF9CQURf
UEFSQU1FVEVSKTsKLSAgICB9Ci19Ci0KLS8vIENoZWNrIHZhbGlkYXRpb24gZnJvbSB0aGUgR0xf
T0VTX0VHTF9pbWFnZSBleHRlbnNpb24KLVRFU1RfUChJbWFnZVRlc3QsIFZhbGlkYXRpb25HTEVH
TEltYWdlKQotewotICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7Ci0gICAg
aWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlIikgfHwKLSAgICAgICAgIWVnbERp
c3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFn
ZV9iYXNlIikgfHwKLSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+
Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIikpCi0gICAgewotICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9FU19FR0xfaW1hZ2UsIEVH
TF9LSFJfaW1hZ2VfYmFzZSBvciAiCi0gICAgICAgICAgICAgICAgICAgICAiRUdMX0tIUl9nbF90
ZXh0dXJlXzJEX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAgICAgICAgPDwg
c3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0x1Ynl0ZSBkYXRhWzRd
ID0gezI1NSwgMCwgMjU1LCAyNTV9OwotCi0gICAgLy8gQ3JlYXRlIHRoZSBJbWFnZQotICAgIEdM
dWludCBzb3VyY2U7Ci0gICAgRUdMSW1hZ2VLSFIgaW1hZ2U7Ci0gICAgY3JlYXRlRUdMSW1hZ2Uy
RFRleHR1cmVTb3VyY2UoMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgZGF0YSwgJnNv
dXJjZSwgJmltYWdlKTsKLQotICAgIC8vIElmIDx0YXJnZXQ+IGlzIG5vdCBURVhUVVJFXzJELCB0
aGUgZXJyb3IgSU5WQUxJRF9FTlVNIGlzIGdlbmVyYXRlZC4KLSAgICBnbEVHTEltYWdlVGFyZ2V0
VGV4dHVyZTJET0VTKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCwgaW1hZ2UpOwotICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgLy8gSWYgPGltYWdlPiBk
b2VzIG5vdCByZWZlciB0byBhIHZhbGlkIGVnbEltYWdlT0VTIG9iamVjdCwgdGhlIGVycm9yIElO
VkFMSURfVkFMVUUgaXMKLSAgICAvLyBnZW5lcmF0ZWQuCi0gICAgR0x1aW50IHRleHR1cmU7Ci0g
ICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCB0ZXh0dXJlKTsKLSAgICBnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKEdMX1RF
WFRVUkVfMkQsIHJlaW50ZXJwcmV0SGVscGVyPEdMZWdsSW1hZ2VPRVM+KDB4QkFBREYwMEQpKTsK
LSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICAvLyA8dGFyZ2V0
PiBtdXN0IGJlIFJFTkRFUkJVRkZFUl9PRVMsIGFuZCA8aW1hZ2U+IG11c3QgYmUgdGhlIGhhbmRs
ZSBvZiBhIHZhbGlkIEVHTEltYWdlCi0gICAgLy8gcmVzb3VyY2UsIGNhc3QgaW50byB0aGUgdHlw
ZQotICAgIC8vIGVnbEltYWdlT0VTLgotICAgIGdsRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZmZXJT
dG9yYWdlT0VTKEdMX1RFWFRVUkVfMkQsIGltYWdlKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xf
SU5WQUxJRF9FTlVNKTsKLQotICAgIC8vIElmIHRoZSBHTCBpcyB1bmFibGUgdG8gY3JlYXRlIGEg
cmVuZGVyYnVmZmVyIHVzaW5nIHRoZSBzcGVjaWZpZWQgZWdsSW1hZ2VPRVMsIHRoZSBlcnJvcgot
ICAgIC8vIElOVkFMSURfT1BFUkFUSU9OIGlzIGdlbmVyYXRlZC5JZiA8aW1hZ2U+Ci0gICAgLy8g
ZG9lcyBub3QgcmVmZXIgdG8gYSB2YWxpZCBlZ2xJbWFnZU9FUyBvYmplY3QsIHRoZSBlcnJvciBJ
TlZBTElEX1ZBTFVFIGlzIGdlbmVyYXRlZC4KLSAgICBHTHVpbnQgcmVuZGVyYnVmZmVyOwotICAg
IGdsR2VuUmVuZGVyYnVmZmVycygxLCAmcmVuZGVyYnVmZmVyKTsKLSAgICBnbEJpbmRSZW5kZXJi
dWZmZXIoR0xfUkVOREVSQlVGRkVSLCByZW5kZXJidWZmZXIpOwotICAgIGdsRUdMSW1hZ2VUYXJn
ZXRSZW5kZXJidWZmZXJTdG9yYWdlT0VTKEdMX1JFTkRFUkJVRkZFUiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldEhlbHBlcjxHTGVnbEltYWdl
T0VTPigweEJBQURGMDBEKSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUp
OwotCi0gICAgLy8gQ2xlYW4gdXAKLSAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZzb3VyY2UpOwot
ICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1hZ2UpOwotICAg
IGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleHR1cmUpOwotICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVy
cygxLCAmcmVuZGVyYnVmZmVyKTsKLX0KLQotLy8gQ2hlY2sgdmFsaWRhdGlvbiBmcm9tIHRoZSBH
TF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIGV4dGVuc2lvbgotVEVTVF9QKEltYWdlVGVzdCwgVmFs
aWRhdGlvbkdMRUdMSW1hZ2VFeHRlcm5hbCkKLXsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQo
IkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCBpcyBub3Qg
YXZhaWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEdMdWludCB0ZXh0dXJlOwotICAgIGdsR2VuVGV4dHVyZXMoMSwg
JnRleHR1cmUpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIHRl
eHR1cmUpOwotCi0gICAgLy8gSW4gdGhlIGluaXRpYWwgc3RhdGUgb2YgYSBURVhUVVJFX0VYVEVS
TkFMX09FUyB0ZXh0dXJlIG9iamVjdCwgdGhlIHZhbHVlIGFzc2lnbmVkIHRvCi0gICAgLy8gVEVY
VFVSRV9NSU5fRklMVEVSIGFuZCBURVhUVVJFX01BR19GSUxURVIgaXMgTElORUFSLCBhbmQgdGhl
IHMgYW5kIHQgd3JhcCBtb2RlcyBhcmUgYm90aCBzZXQKLSAgICAvLyB0byBDTEFNUF9UT19FREdF
Ci0gICAgYXV0byBnZXRUZXhQYXJhbSA9IFtdKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSkK
LSAgICB7Ci0gICAgICAgIEdMaW50IHZhbHVlID0gMDsKLSAgICAgICAgZ2xHZXRUZXhQYXJhbWV0
ZXJpdih0YXJnZXQsIHBuYW1lLCAmdmFsdWUpOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKLSAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgIH07Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShH
TF9MSU5FQVIsIGdldFRleFBhcmFtKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9URVhUVVJF
X01JTl9GSUxURVIpKTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0xJTkVBUiwgZ2V0VGV4UGFy
YW0oR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUikpOwotICAg
IEVYUEVDVF9HTEVOVU1fRVEoR0xfQ0xBTVBfVE9fRURHRSwgZ2V0VGV4UGFyYW0oR0xfVEVYVFVS
RV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfV1JBUF9TKSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9F
UShHTF9DTEFNUF9UT19FREdFLCBnZXRUZXhQYXJhbShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywg
R0xfVEVYVFVSRV9XUkFQX1QpKTsKLQotICAgIC8vICJXaGVuIDx0YXJnZXQ+IGlzIFRFWFRVUkVf
RVhURVJOQUxfT0VTIG9ubHkgTkVBUkVTVCBhbmQgTElORUFSIGFyZSBhY2NlcHRlZCBhcwotICAg
IC8vIFRFWFRVUkVfTUlOX0ZJTFRFUiwgb25seSBDTEFNUF9UT19FREdFIGlzIGFjY2VwdGVkIGFz
IFRFWFRVUkVfV1JBUF9TIGFuZCBURVhUVVJFX1dSQVBfVCwgYW5kCi0gICAgLy8gb25seSBGQUxT
RSBpcyBhY2NlcHRlZCBhcyBHRU5FUkFURV9NSVBNQVAuIEF0dGVtcHRpbmcgdG8gc2V0IG90aGVy
IHZhbHVlcyBmb3IKLSAgICAvLyBURVhUVVJFX01JTl9GSUxURVIsIFRFWFRVUkVfV1JBUF9TLCBU
RVhUVVJFX1dSQVBfVCwgb3IgR0VORVJBVEVfTUlQTUFQIHdpbGwgcmVzdWx0IGluIGFuCi0gICAg
Ly8gSU5WQUxJRF9FTlVNIGVycm9yLgotICAgIEdMZW51bSB2YWxpZE1pbkZpbHRlcnNbXXsKLSAg
ICAgICAgR0xfTkVBUkVTVCwgR0xfTElORUFSLAotICAgIH07Ci0gICAgZm9yIChhdXRvIG1pbkZp
bHRlciA6IHZhbGlkTWluRmlsdGVycykKLSAgICB7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBtaW5GaWx0ZXIp
OwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICBHTGVudW0gaW52
YWxpZE1pbkZpbHRlcnNbXXsKLSAgICAgICAgR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSLCBHTF9O
RUFSRVNUX01JUE1BUF9ORUFSRVNULCBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUiwKLSAgICAgICAg
R0xfTElORUFSX01JUE1BUF9ORUFSRVNULAotICAgIH07Ci0gICAgZm9yIChhdXRvIG1pbkZpbHRl
ciA6IGludmFsaWRNaW5GaWx0ZXJzKQotICAgIHsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIG1pbkZpbHRlcik7
Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotICAgIH0KLQotICAg
IEdMZW51bSB2YWxpZFdyYXBNb2Rlc1tdewotICAgICAgICBHTF9DTEFNUF9UT19FREdFLAotICAg
IH07Ci0gICAgZm9yIChhdXRvIG1pbkZpbHRlciA6IHZhbGlkV3JhcE1vZGVzKQotICAgIHsKLSAg
ICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9URVhUVVJF
X1dSQVBfUywgbWluRmlsdGVyKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAg
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVYVFVSRV9X
UkFQX1QsIG1pbkZpbHRlcik7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIH0K
LQotICAgIEdMZW51bSBpbnZhbGlkV3JhcE1vZGVzW117Ci0gICAgICAgIEdMX1JFUEVBVCwgR0xf
TUlSUk9SRURfUkVQRUFULAotICAgIH07Ci0gICAgZm9yIChhdXRvIG1pbkZpbHRlciA6IGludmFs
aWRXcmFwTW9kZXMpCi0gICAgewotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9F
WFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVfV1JBUF9TLCBtaW5GaWx0ZXIpOwotICAgICAgICBFWFBF
Q1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfRVhURVJOQUxfT0VTLCBHTF9URVhUVVJFX1dSQVBfVCwgbWluRmlsdGVyKTsKLSAg
ICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgfQotCi0gICAgLy8g
V2hlbiA8dGFyZ2V0PiBpcyBzZXQgdG8gVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdlbmVyYXRlTWlw
bWFwIGFsd2F5cyBmYWlscyBhbmQgZ2VuZXJhdGVzIGFuCi0gICAgLy8gSU5WQUxJRF9FTlVNIGVy
cm9yLgotICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMpOwotICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgZ2xEZWxldGVUZXh0dXJl
cygxLCAmdGV4dHVyZSk7Ci19Ci0KLS8vIENoZWNrIHZhbGlkYXRpb24gZnJvbSB0aGUgR0xfT0VT
X0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMyBleHRlbnNpb24KLVRFU1RfUChJbWFnZVRlc3QsIFZh
bGlkYXRpb25HTEVHTEltYWdlRXh0ZXJuYWxFU1NMMykKLXsKLSAgICBpZiAoIWV4dGVuc2lvbkVu
YWJsZWQoIkdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMiKSkKLSAgICB7Ci0gICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfT0VTX0VHTF9pbWFnZV9leHRl
cm5hbCBpcyBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIE1ha2Ugc3VyZSB0aGlzIGV4dGVuc2lv
biBpcyBub3QgZXhwb3NlZCB3aXRob3V0IEVTMy4KLSAgICBBU1NFUlRfR0UoZ2V0Q2xpZW50TWFq
b3JWZXJzaW9uKCksIDMpOwotCi0gICAgR0x1aW50IHRleHR1cmU7Ci0gICAgZ2xHZW5UZXh0dXJl
cygxLCAmdGV4dHVyZSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0VYVEVSTkFMX09F
UywgdGV4dHVyZSk7Ci0KLSAgICAvLyBJdCBpcyBhbiBJTlZBTElEX09QRVJBVElPTiBlcnJvciB0
byBzZXQgdGhlIFRFWFRVUkVfQkFTRV9MRVZFTCB0byBhIHZhbHVlIG90aGVyIHRoYW4gemVyby4K
LSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMsIEdMX1RFWFRVUkVf
QkFTRV9MRVZFTCwgMSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgR0xfVEVY
VFVSRV9CQVNFX0xFVkVMLCAxMCk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywg
R0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAwKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQot
ICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleHR1cmUpOwotfQotCi1URVNUX1AoSW1hZ2VUZXN0
LCBTb3VyY2UyRFRhcmdldDJEKQotewotICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2lu
ZG93KCk7Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlIikgfHwKLSAg
ICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAi
RUdMX0tIUl9pbWFnZV9iYXNlIikgfHwKLSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFi
bGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIikp
Ci0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9FU19F
R0xfaW1hZ2UsIEVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCi0gICAgICAgICAgICAgICAgICAgICAi
RUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUuIgotICAgICAgICAg
ICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0x1
Ynl0ZSBkYXRhWzRdID0gezI1NSwgMCwgMjU1LCAyNTV9OwotCi0gICAgLy8gQ3JlYXRlIHRoZSBJ
bWFnZQotICAgIEdMdWludCBzb3VyY2U7Ci0gICAgRUdMSW1hZ2VLSFIgaW1hZ2U7Ci0gICAgY3Jl
YXRlRUdMSW1hZ2UyRFRleHR1cmVTb3VyY2UoMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwgZGF0YSwgJnNvdXJjZSwgJmltYWdlKTsKLQotICAgIC8vIENyZWF0ZSB0aGUgdGFyZ2V0Ci0g
ICAgR0x1aW50IHRhcmdldDsKLSAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFRleHR1cmUyRChpbWFn
ZSwgJnRhcmdldCk7Ci0KLSAgICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFyZ2V0IHRleHR1cmUgaGFz
IHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBzb3VyY2UgdGV4dHVyZQotICAgIHZlcmlmeVJlc3VsdHMy
RCh0YXJnZXQsIGRhdGEpOwotCi0gICAgLy8gQ2xlYW4gdXAKLSAgICBnbERlbGV0ZVRleHR1cmVz
KDEsICZzb3VyY2UpOwotICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXko
KSwgaW1hZ2UpOwotICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRhcmdldCk7Ci19Ci0KLVRFU1Rf
UChJbWFnZVRlc3QsIFNvdXJjZTJEVGFyZ2V0UmVuZGVyYnVmZmVyKQotewotICAgIEVHTFdpbmRv
dyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJP
RVNfRUdMX2ltYWdlIikgfHwKLSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdp
bmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwKLSAgICAgICAgIWVn
bERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9n
bF90ZXh0dXJlXzJEX2ltYWdlIikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qg
c2tpcHBlZCBiZWNhdXNlIE9FU19FR0xfaW1hZ2UsIEVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCi0g
ICAgICAgICAgICAgICAgICAgICAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIGlzIG5vdCBh
dmFpbGFibGUuIgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgR0x1Ynl0ZSBkYXRhWzRdID0gezI1NSwgMCwgMjU1LCAyNTV9Owot
Ci0gICAgLy8gQ3JlYXRlIHRoZSBJbWFnZQotICAgIEdMdWludCBzb3VyY2U7Ci0gICAgRUdMSW1h
Z2VLSFIgaW1hZ2U7Ci0gICAgY3JlYXRlRUdMSW1hZ2UyRFRleHR1cmVTb3VyY2UoMSwgMSwgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwgZGF0YSwgJnNvdXJjZSwgJmltYWdlKTsKLQotICAgIC8v
IENyZWF0ZSB0aGUgdGFyZ2V0Ci0gICAgR0x1aW50IHRhcmdldDsKLSAgICBjcmVhdGVFR0xJbWFn
ZVRhcmdldFJlbmRlcmJ1ZmZlcihpbWFnZSwgJnRhcmdldCk7Ci0KLSAgICAvLyBFeHBlY3QgdGhh
dCB0aGUgdGFyZ2V0IHJlbmRlcmJ1ZmZlciBoYXMgdGhlIHNhbWUgY29sb3IgYXMgdGhlIHNvdXJj
ZSB0ZXh0dXJlCi0gICAgdmVyaWZ5UmVzdWx0c1JlbmRlcmJ1ZmZlcih0YXJnZXQsIGRhdGEpOwot
Ci0gICAgLy8gQ2xlYW4gdXAKLSAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZzb3VyY2UpOwotICAg
IGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1hZ2UpOwotICAgIGds
RGVsZXRlUmVuZGVyYnVmZmVycygxLCAmdGFyZ2V0KTsKLX0KLQotVEVTVF9QKEltYWdlVGVzdCwg
U291cmNlMkRUYXJnZXRFeHRlcm5hbCkKLXsKLSAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVH
TFdpbmRvdygpOwotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8
ICFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlX2V4dGVybmFsIikgfHwKLSAgICAgICAg
IWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tI
Ul9pbWFnZV9iYXNlIikgfHwKLSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdp
bmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIikpCi0gICAg
ewotICAgICAgICBzdGQ6OmNvdXQKLSAgICAgICAgICAgIDw8ICJUZXN0IHNraXBwZWQgYmVjYXVz
ZSBPRVNfRUdMX2ltYWdlLCBPRVNfRUdMX2ltYWdlX2V4dGVybmFsLCBFR0xfS0hSX2ltYWdlX2Jh
c2Ugb3IgIgotICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSBpcyBu
b3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIEdMdWJ5dGUgZGF0YVs0XSA9IHsyNTUsIDAsIDI1NSwgMjU1fTsKLQot
ICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKLSAgICBHTHVpbnQgc291cmNlOwotICAgIEVHTEltYWdl
S0hSIGltYWdlOwotICAgIGNyZWF0ZUVHTEltYWdlMkRUZXh0dXJlU291cmNlKDEsIDEsIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUsIGRhdGEsICZzb3VyY2UsICZpbWFnZSk7Ci0KLSAgICAvLyBD
cmVhdGUgdGhlIHRhcmdldAotICAgIEdMdWludCB0YXJnZXQ7Ci0gICAgY3JlYXRlRUdMSW1hZ2VU
YXJnZXRUZXh0dXJlRXh0ZXJuYWwoaW1hZ2UsICZ0YXJnZXQpOwotCi0gICAgLy8gRXhwZWN0IHRo
YXQgdGhlIHRhcmdldCByZW5kZXJidWZmZXIgaGFzIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBzb3Vy
Y2UgdGV4dHVyZQotICAgIHZlcmlmeVJlc3VsdHNFeHRlcm5hbCh0YXJnZXQsIGRhdGEpOwotCi0g
ICAgLy8gQ2xlYW4gdXAKLSAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZzb3VyY2UpOwotICAgIGVn
bERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1hZ2UpOwotICAgIGdsRGVs
ZXRlUmVuZGVyYnVmZmVycygxLCAmdGFyZ2V0KTsKLX0KLQotVEVTVF9QKEltYWdlVGVzdEVTMywg
U291cmNlMkRUYXJnZXRFeHRlcm5hbEVTU0wzKQotewotICAgIEVHTFdpbmRvdyAqd2luZG93ID0g
Z2V0RUdMV2luZG93KCk7Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdl
IikgfHwgIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWxfZXNzbDMiKSB8
fAotICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5
KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAotICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lv
bkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1h
Z2UiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2Ug
T0VTX0VHTF9pbWFnZSwgT0VTX0VHTF9pbWFnZV9leHRlcm5hbF9lc3NsMywgIgotICAgICAgICAg
ICAgICAgICAgICAgIkVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCi0gICAgICAgICAgICAgICAgICAg
ICAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUuIgotICAgICAg
ICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
R0x1Ynl0ZSBkYXRhWzRdID0gezI1NSwgMCwgMjU1LCAyNTV9OwotCi0gICAgLy8gQ3JlYXRlIHRo
ZSBJbWFnZQotICAgIEdMdWludCBzb3VyY2U7Ci0gICAgRUdMSW1hZ2VLSFIgaW1hZ2U7Ci0gICAg
Y3JlYXRlRUdMSW1hZ2UyRFRleHR1cmVTb3VyY2UoMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgZGF0YSwgJnNvdXJjZSwgJmltYWdlKTsKLQotICAgIC8vIENyZWF0ZSB0aGUgdGFyZ2V0
Ci0gICAgR0x1aW50IHRhcmdldDsKLSAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFRleHR1cmVFeHRl
cm5hbChpbWFnZSwgJnRhcmdldCk7Ci0KLSAgICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFyZ2V0IHJl
bmRlcmJ1ZmZlciBoYXMgdGhlIHNhbWUgY29sb3IgYXMgdGhlIHNvdXJjZSB0ZXh0dXJlCi0gICAg
dmVyaWZ5UmVzdWx0c0V4dGVybmFsRVNTTDModGFyZ2V0LCBkYXRhKTsKLQotICAgIC8vIENsZWFu
IHVwCi0gICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc291cmNlKTsKLSAgICBlZ2xEZXN0cm95SW1h
Z2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGltYWdlKTsKLSAgICBnbERlbGV0ZVJlbmRlcmJ1
ZmZlcnMoMSwgJnRhcmdldCk7Ci19Ci0KLVRFU1RfUChJbWFnZVRlc3QsIFNvdXJjZUN1YmVUYXJn
ZXQyRCkKLXsKLSAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwotICAgIGlm
ICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNw
bGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2Vf
YmFzZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdl
dERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV9jdWJlbWFwX2ltYWdlIikpCi0gICAgewot
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9FU19FR0xfaW1hZ2Us
IEVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCi0gICAgICAgICAgICAgICAgICAgICAiRUdMX0tIUl9n
bF90ZXh0dXJlX2N1YmVtYXBfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAg
ICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHVieXRl
IGRhdGFbMjRdID0gewotICAgICAgICAyNTUsIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAy
NTUsIDI1NSwgMCwgMCwgMjU1LAotICAgICAgICAwLCAgIDAsIDI1NSwgMjU1LCAwLCAgIDI1NSwg
MCwgICAyNTUsIDAsICAgMCwgMCwgMjU1LAotICAgIH07Ci0KLSAgICBmb3IgKEVHTGVudW0gZmFj
ZUlkeCA9IDA7IGZhY2VJZHggPCA2OyBmYWNlSWR4KyspCi0gICAgewotICAgICAgICAvLyBDcmVh
dGUgdGhlIEltYWdlCi0gICAgICAgIEdMdWludCBzb3VyY2U7Ci0gICAgICAgIEVHTEltYWdlS0hS
IGltYWdlOwotICAgICAgICBjcmVhdGVFR0xJbWFnZUN1YmVtYXBUZXh0dXJlU291cmNlKAotICAg
ICAgICAgICAgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90ICo+KGRhdGEpLCBzaXplb2YoR0x1Ynl0ZSkgKiA0LAotICAgICAgICAgICAgRUdM
X0dMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF9LSFIgKyBmYWNlSWR4LCAmc291cmNlLCAm
aW1hZ2UpOwotCi0gICAgICAgIC8vIENyZWF0ZSB0aGUgdGFyZ2V0Ci0gICAgICAgIEdMdWludCB0
YXJnZXQ7Ci0gICAgICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZTJEKGltYWdlLCAmdGFy
Z2V0KTsKLQotICAgICAgICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFyZ2V0IHRleHR1cmUgaGFzIHRo
ZSBzYW1lIGNvbG9yIGFzIHRoZSBzb3VyY2UgdGV4dHVyZQotICAgICAgICB2ZXJpZnlSZXN1bHRz
MkQodGFyZ2V0LCAmZGF0YVtmYWNlSWR4ICogNF0pOwotCi0gICAgICAgIC8vIENsZWFuIHVwCi0g
ICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7Ci0gICAgICAgIGVnbERlc3Ryb3lJ
bWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1hZ2UpOwotICAgICAgICBnbERlbGV0ZVRl
eHR1cmVzKDEsICZ0YXJnZXQpOwotICAgIH0KLX0KLQotVEVTVF9QKEltYWdlVGVzdCwgU291cmNl
Q3ViZVRhcmdldFJlbmRlcmJ1ZmZlcikKLXsKLSAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVH
TFdpbmRvdygpOwotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8
Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXko
KSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9u
RW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV9jdWJlbWFw
X2ltYWdlIikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNh
dXNlIE9FU19FR0xfaW1hZ2UsIEVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCi0gICAgICAgICAgICAg
ICAgICAgICAiRUdMX0tIUl9nbF90ZXh0dXJlX2N1YmVtYXBfaW1hZ2UgaXMgbm90IGF2YWlsYWJs
ZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBHTHVieXRlIGRhdGFbMjRdID0gewotICAgICAgICAyNTUsIDAsIDI1NSwgMjU1
LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCwgMCwgMjU1LAotICAgICAgICAwLCAgIDAsIDI1
NSwgMjU1LCAwLCAgIDI1NSwgMCwgICAyNTUsIDAsICAgMCwgMCwgMjU1LAotICAgIH07Ci0KLSAg
ICBmb3IgKEVHTGVudW0gZmFjZUlkeCA9IDA7IGZhY2VJZHggPCA2OyBmYWNlSWR4KyspCi0gICAg
ewotICAgICAgICAvLyBDcmVhdGUgdGhlIEltYWdlCi0gICAgICAgIEdMdWludCBzb3VyY2U7Ci0g
ICAgICAgIEVHTEltYWdlS0hSIGltYWdlOwotICAgICAgICBjcmVhdGVFR0xJbWFnZUN1YmVtYXBU
ZXh0dXJlU291cmNlKAotICAgICAgICAgICAgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90ICo+KGRhdGEpLCBzaXplb2YoR0x1Ynl0ZSkgKiA0
LAotICAgICAgICAgICAgRUdMX0dMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF9LSFIgKyBm
YWNlSWR4LCAmc291cmNlLCAmaW1hZ2UpOwotCi0gICAgICAgIC8vIENyZWF0ZSB0aGUgdGFyZ2V0
Ci0gICAgICAgIEdMdWludCB0YXJnZXQ7Ci0gICAgICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0UmVu
ZGVyYnVmZmVyKGltYWdlLCAmdGFyZ2V0KTsKLQotICAgICAgICAvLyBFeHBlY3QgdGhhdCB0aGUg
dGFyZ2V0IHRleHR1cmUgaGFzIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBzb3VyY2UgdGV4dHVyZQot
ICAgICAgICB2ZXJpZnlSZXN1bHRzUmVuZGVyYnVmZmVyKHRhcmdldCwgJmRhdGFbZmFjZUlkeCAq
IDRdKTsKLQotICAgICAgICAvLyBDbGVhbiB1cAotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEs
ICZzb3VyY2UpOwotICAgICAgICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5
KCksIGltYWdlKTsKLSAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZ0YXJnZXQpOwot
ICAgIH0KLX0KLQotLy8gVGVzdCBjdWJlbWFwIC0+IGV4dGVybmFsIHRleHR1cmUgRUdMIGltYWdl
cy4KLVRFU1RfUChJbWFnZVRlc3QsIFNvdXJjZUN1YmVUYXJnZXRFeHRlcm5hbCkKLXsKLSAgICBF
R0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwotICAgIGlmICghZXh0ZW5zaW9uRW5h
YmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8ICFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdl
X2V4dGVybmFsIikgfHwKLSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRv
dy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwKLSAgICAgICAgIWVnbERp
c3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90
ZXh0dXJlX2N1YmVtYXBfaW1hZ2UiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dAotICAgICAg
ICAgICAgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9FU19FR0xfaW1hZ2UsIE9FU19FR0xfaW1h
Z2VfZXh0ZXJuYWwsIEVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCi0gICAgICAgICAgICAgICAiRUdM
X0tIUl9nbF90ZXh0dXJlX2N1YmVtYXBfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAg
ICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHVieXRl
IGRhdGFbMjRdID0gewotICAgICAgICAyNTUsIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAy
NTUsIDI1NSwgMCwgMCwgMjU1LAotICAgICAgICAwLCAgIDAsIDI1NSwgMjU1LCAwLCAgIDI1NSwg
MCwgICAyNTUsIDAsICAgMCwgMCwgMjU1LAotICAgIH07Ci0KLSAgICBmb3IgKEVHTGVudW0gZmFj
ZUlkeCA9IDA7IGZhY2VJZHggPCA2OyBmYWNlSWR4KyspCi0gICAgewotICAgICAgICAvLyBDcmVh
dGUgdGhlIEltYWdlCi0gICAgICAgIEdMdWludCBzb3VyY2U7Ci0gICAgICAgIEVHTEltYWdlS0hS
IGltYWdlOwotICAgICAgICBjcmVhdGVFR0xJbWFnZUN1YmVtYXBUZXh0dXJlU291cmNlKAotICAg
ICAgICAgICAgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90ICo+KGRhdGEpLCBzaXplb2YoR0x1Ynl0ZSkgKiA0LAotICAgICAgICAgICAgRUdM
X0dMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF9LSFIgKyBmYWNlSWR4LCAmc291cmNlLCAm
aW1hZ2UpOwotCi0gICAgICAgIC8vIENyZWF0ZSB0aGUgdGFyZ2V0Ci0gICAgICAgIEdMdWludCB0
YXJnZXQ7Ci0gICAgICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZUV4dGVybmFsKGltYWdl
LCAmdGFyZ2V0KTsKLQotICAgICAgICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFyZ2V0IHRleHR1cmUg
aGFzIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBzb3VyY2UgdGV4dHVyZQotICAgICAgICB2ZXJpZnlS
ZXN1bHRzRXh0ZXJuYWwodGFyZ2V0LCAmZGF0YVtmYWNlSWR4ICogNF0pOwotCi0gICAgICAgIC8v
IENsZWFuIHVwCi0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNvdXJjZSk7Ci0gICAgICAg
IGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1hZ2UpOwotICAgICAg
ICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnRhcmdldCk7Ci0gICAgfQotfQotCi0vLyBUZXN0
IGN1YmVtYXAgLT4gZXh0ZXJuYWwgdGV4dHVyZSBFR0wgaW1hZ2VzIHVzaW5nIEVTU0wzIHNoYWRl
cnMuCi1URVNUX1AoSW1hZ2VUZXN0RVMzLCBTb3VyY2VDdWJlVGFyZ2V0RXh0ZXJuYWxFU1NMMykK
LXsKLSAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwotICAgIGlmICghZXh0
ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8ICFleHRlbnNpb25FbmFibGVkKCJPRVNf
RUdMX2ltYWdlX2V4dGVybmFsX2Vzc2wzIikgfHwKLSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNp
b25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwK
LSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgp
LCAiRUdMX0tIUl9nbF90ZXh0dXJlX2N1YmVtYXBfaW1hZ2UiKSkKLSAgICB7Ci0gICAgICAgIHN0
ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwgT0VTX0VHTF9p
bWFnZV9leHRlcm5hbF9lc3NsMywgIgotICAgICAgICAgICAgICAgICAgICAgIkVHTF9LSFJfaW1h
Z2VfYmFzZSBvciAiCi0gICAgICAgICAgICAgICAgICAgICAiRUdMX0tIUl9nbF90ZXh0dXJlX2N1
YmVtYXBfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6
OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHVieXRlIGRhdGFbMjRdID0g
ewotICAgICAgICAyNTUsIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCwg
MCwgMjU1LAotICAgICAgICAwLCAgIDAsIDI1NSwgMjU1LCAwLCAgIDI1NSwgMCwgICAyNTUsIDAs
ICAgMCwgMCwgMjU1LAotICAgIH07Ci0KLSAgICBmb3IgKEVHTGVudW0gZmFjZUlkeCA9IDA7IGZh
Y2VJZHggPCA2OyBmYWNlSWR4KyspCi0gICAgewotICAgICAgICAvLyBDcmVhdGUgdGhlIEltYWdl
Ci0gICAgICAgIEdMdWludCBzb3VyY2U7Ci0gICAgICAgIEVHTEltYWdlS0hSIGltYWdlOwotICAg
ICAgICBjcmVhdGVFR0xJbWFnZUN1YmVtYXBUZXh0dXJlU291cmNlKAotICAgICAgICAgICAgMSwg
MSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90ICo+
KGRhdGEpLCBzaXplb2YoR0x1Ynl0ZSkgKiA0LAotICAgICAgICAgICAgRUdMX0dMX1RFWFRVUkVf
Q1VCRV9NQVBfUE9TSVRJVkVfWF9LSFIgKyBmYWNlSWR4LCAmc291cmNlLCAmaW1hZ2UpOwotCi0g
ICAgICAgIC8vIENyZWF0ZSB0aGUgdGFyZ2V0Ci0gICAgICAgIEdMdWludCB0YXJnZXQ7Ci0gICAg
ICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZUV4dGVybmFsKGltYWdlLCAmdGFyZ2V0KTsK
LQotICAgICAgICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFyZ2V0IHRleHR1cmUgaGFzIHRoZSBzYW1l
IGNvbG9yIGFzIHRoZSBzb3VyY2UgdGV4dHVyZQotICAgICAgICB2ZXJpZnlSZXN1bHRzRXh0ZXJu
YWxFU1NMMyh0YXJnZXQsICZkYXRhW2ZhY2VJZHggKiA0XSk7Ci0KLSAgICAgICAgLy8gQ2xlYW4g
dXAKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc291cmNlKTsKLSAgICAgICAgZWdsRGVz
dHJveUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7Ci0gICAgICAgIGdsRGVs
ZXRlUmVuZGVyYnVmZmVycygxLCAmdGFyZ2V0KTsKLSAgICB9Ci19Ci0KLVRFU1RfUChJbWFnZVRl
c3QsIFNvdXJjZTNEVGFyZ2V0VGV4dHVyZSkKLXsKLSAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdl
dEVHTFdpbmRvdygpOwotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIp
IHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3Bs
YXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5z
aW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8zRF9p
bWFnZSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVz
ZSBPRVNfRUdMX2ltYWdlLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgotICAgICAgICAgICAgICAg
ICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV8zRF9pbWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKLSAg
ICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQo
IkdMX09FU190ZXh0dXJlXzNEIikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qg
c2tpcHBlZCBiZWNhdXNlIDNEIHRleHR1cmVzIGFyZSBub3QgYXZhaWxhYmxlLiIgPDwgc3RkOjpl
bmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29uc3Qgc2l6ZV90IGRlcHRoICAg
ICAgPSAyOwotICAgIEdMdWJ5dGUgZGF0YVs0ICogZGVwdGhdID0gewotICAgICAgICAyNTUsIDAs
IDI1NSwgMjU1LCAyNTUsIDI1NSwgMCwgMjU1LAotICAgIH07Ci0KLSAgICBmb3IgKHNpemVfdCBs
YXllciA9IDA7IGxheWVyIDwgZGVwdGg7IGxheWVyKyspCi0gICAgewotICAgICAgICAvLyBDcmVh
dGUgdGhlIEltYWdlCi0gICAgICAgIEdMdWludCBzb3VyY2U7Ci0gICAgICAgIEVHTEltYWdlS0hS
IGltYWdlOwotICAgICAgICBjcmVhdGVFR0xJbWFnZTNEVGV4dHVyZVNvdXJjZSgxLCAxLCBkZXB0
aCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgZGF0YSwgbGF5ZXIsICZzb3VyY2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbWFnZSk7Ci0KLSAgICAgICAgLy8g
Q3JlYXRlIHRoZSB0YXJnZXQKLSAgICAgICAgR0x1aW50IHRhcmdldDsKLSAgICAgICAgY3JlYXRl
RUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkQoaW1hZ2UsICZ0YXJnZXQpOwotCi0gICAgICAgIC8vIEV4
cGVjdCB0aGF0IHRoZSB0YXJnZXQgcmVuZGVyYnVmZmVyIGhhcyB0aGUgc2FtZSBjb2xvciBhcyB0
aGUgc291cmNlIHRleHR1cmUKLSAgICAgICAgdmVyaWZ5UmVzdWx0czJEKHRhcmdldCwgJmRhdGFb
bGF5ZXIgKiA0XSk7Ci0KLSAgICAgICAgLy8gQ2xlYW4gdXAKLSAgICAgICAgZ2xEZWxldGVUZXh0
dXJlcygxLCAmc291cmNlKTsKLSAgICAgICAgZWdsRGVzdHJveUltYWdlS0hSKHdpbmRvdy0+Z2V0
RGlzcGxheSgpLCBpbWFnZSk7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRhcmdldCk7
Ci0gICAgfQotfQotCi1URVNUX1AoSW1hZ2VUZXN0LCBTb3VyY2UzRFRhcmdldFJlbmRlcmJ1ZmZl
cikKLXsKLSAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwotICAgIGlmICgh
ZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5
RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFz
ZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERp
c3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4dHVyZV8zRF9pbWFnZSIpKQotICAgIHsKLSAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBFR0xfS0hS
X2ltYWdlX2Jhc2Ugb3IgIgotICAgICAgICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVy
ZV8zRF9pbWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6
ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChnZXRDbGllbnRNYWpvclZl
cnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU190ZXh0dXJlXzNEIikpCi0g
ICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIDNEIHRleHR1
cmVzIGFyZSBub3QgYXZhaWxhYmxlLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgY29uc3Qgc2l6ZV90IGRlcHRoICAgICAgPSAyOwotICAgIEdMdWJ5dGUgZGF0
YVs0ICogZGVwdGhdID0gewotICAgICAgICAyNTUsIDAsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCwg
MjU1LAotICAgIH07Ci0KLSAgICBmb3IgKHNpemVfdCBsYXllciA9IDA7IGxheWVyIDwgZGVwdGg7
IGxheWVyKyspCi0gICAgewotICAgICAgICAvLyBDcmVhdGUgdGhlIEltYWdlCi0gICAgICAgIEdM
dWludCBzb3VyY2U7Ci0gICAgICAgIEVHTEltYWdlS0hSIGltYWdlOwotICAgICAgICBjcmVhdGVF
R0xJbWFnZTNEVGV4dHVyZVNvdXJjZSgxLCAxLCBkZXB0aCwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgZGF0YSwgbGF5ZXIsICZzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICZpbWFnZSk7Ci0KLSAgICAgICAgLy8gQ3JlYXRlIHRoZSB0YXJnZXQKLSAgICAg
ICAgR0x1aW50IHRhcmdldDsKLSAgICAgICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRSZW5kZXJidWZm
ZXIoaW1hZ2UsICZ0YXJnZXQpOwotCi0gICAgICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQg
cmVuZGVyYnVmZmVyIGhhcyB0aGUgc2FtZSBjb2xvciBhcyB0aGUgc291cmNlIHRleHR1cmUKLSAg
ICAgICAgdmVyaWZ5UmVzdWx0c1JlbmRlcmJ1ZmZlcih0YXJnZXQsICZkYXRhW2xheWVyICogNF0p
OwotCi0gICAgICAgIC8vIENsZWFuIHVwCi0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnNv
dXJjZSk7Ci0gICAgICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwg
aW1hZ2UpOwotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0YXJnZXQpOwotICAgIH0KLX0K
LQotLy8gVGVzdCAzRCAtPiBleHRlcm5hbCB0ZXh0dXJlIEVHTCBpbWFnZXMuCi1URVNUX1AoSW1h
Z2VUZXN0LCBTb3VyY2UzRFRhcmdldEV4dGVybmFsKQotewotICAgIEVHTFdpbmRvdyAqd2luZG93
ID0gZ2V0RUdMV2luZG93KCk7Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2lt
YWdlIikgfHwgIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSB8fAot
ICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCks
ICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAotICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVu
YWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfM0RfaW1hZ2Ui
KSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dAotICAgICAgICAgICAgPDwgIlRlc3Qgc2tpcHBl
ZCBiZWNhdXNlIE9FU19FR0xfaW1hZ2UsIE9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwsIEVHTF9LSFJf
aW1hZ2VfYmFzZSBvciAiCi0gICAgICAgICAgICAgICAiRUdMX0tIUl9nbF90ZXh0dXJlXzNEX2lt
YWdlIGlzIG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAm
JiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3RleHR1cmVfM0QiKSkKLSAgICB7Ci0gICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgM0QgdGV4dHVyZXMgYXJlIG5vdCBh
dmFpbGFibGUuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBj
b25zdCBzaXplX3QgZGVwdGggICAgICA9IDI7Ci0gICAgR0x1Ynl0ZSBkYXRhWzQgKiBkZXB0aF0g
PSB7Ci0gICAgICAgIDI1NSwgMCwgMjU1LCAyNTUsIDI1NSwgMjU1LCAwLCAyNTUsCi0gICAgfTsK
LQotICAgIGZvciAoc2l6ZV90IGxheWVyID0gMDsgbGF5ZXIgPCBkZXB0aDsgbGF5ZXIrKykKLSAg
ICB7Ci0gICAgICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKLSAgICAgICAgR0x1aW50IHNvdXJjZTsK
LSAgICAgICAgRUdMSW1hZ2VLSFIgaW1hZ2U7Ci0gICAgICAgIGNyZWF0ZUVHTEltYWdlM0RUZXh0
dXJlU291cmNlKDEsIDEsIGRlcHRoLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBkYXRhLCBs
YXllciwgJnNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlt
YWdlKTsKLQotICAgICAgICAvLyBDcmVhdGUgdGhlIHRhcmdldAotICAgICAgICBHTHVpbnQgdGFy
Z2V0OwotICAgICAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFRleHR1cmVFeHRlcm5hbChpbWFnZSwg
JnRhcmdldCk7Ci0KLSAgICAgICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCByZW5kZXJidWZm
ZXIgaGFzIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBzb3VyY2UgdGV4dHVyZQotICAgICAgICB2ZXJp
ZnlSZXN1bHRzRXh0ZXJuYWwodGFyZ2V0LCAmZGF0YVtsYXllciAqIDRdKTsKLQotICAgICAgICAv
LyBDbGVhbiB1cAotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZzb3VyY2UpOwotICAgICAg
ICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNwbGF5KCksIGltYWdlKTsKLSAgICAg
ICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGFyZ2V0KTsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgM0Qg
LT4gZXh0ZXJuYWwgdGV4dHVyZSBFR0wgaW1hZ2VzIHVzaW5nIEVTU0wzIHNoYWRlcnMuCi1URVNU
X1AoSW1hZ2VUZXN0RVMzLCBTb3VyY2UzRFRhcmdldEV4dGVybmFsRVNTTDMpCi17Ci0gICAgRUdM
V2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJs
ZWQoIk9FU19FR0xfaW1hZ2UiKSB8fCAhZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VHTF9pbWFnZV9l
eHRlcm5hbF9lc3NsMyIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3
aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8Ci0gICAgICAgICFl
Z2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJf
Z2xfdGV4dHVyZV8zRF9pbWFnZSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBPRVNfRUdMX2ltYWdlX2V4dGVybmFsX2Vz
c2wzLCAiCi0gICAgICAgICAgICAgICAgICAgICAiRUdMX0tIUl9pbWFnZV9iYXNlIG9yICIKLSAg
ICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3RleHR1cmVfM0RfaW1hZ2UgaXMgbm90IGF2
YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRl
bnNpb25FbmFibGVkKCJHTF9PRVNfdGV4dHVyZV8zRCIpKQotICAgIHsKLSAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSAzRCB0ZXh0dXJlcyBhcmUgbm90IGF2YWlsYWJs
ZS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0IHNp
emVfdCBkZXB0aCAgICAgID0gMjsKLSAgICBHTHVieXRlIGRhdGFbNCAqIGRlcHRoXSA9IHsKLSAg
ICAgICAgMjU1LCAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAsIDI1NSwKLSAgICB9OwotCi0gICAg
Zm9yIChzaXplX3QgbGF5ZXIgPSAwOyBsYXllciA8IGRlcHRoOyBsYXllcisrKQotICAgIHsKLSAg
ICAgICAgLy8gQ3JlYXRlIHRoZSBJbWFnZQotICAgICAgICBHTHVpbnQgc291cmNlOwotICAgICAg
ICBFR0xJbWFnZUtIUiBpbWFnZTsKLSAgICAgICAgY3JlYXRlRUdMSW1hZ2UzRFRleHR1cmVTb3Vy
Y2UoMSwgMSwgZGVwdGgsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIGRhdGEsIGxheWVyLCAm
c291cmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW1hZ2UpOwot
Ci0gICAgICAgIC8vIENyZWF0ZSB0aGUgdGFyZ2V0Ci0gICAgICAgIEdMdWludCB0YXJnZXQ7Ci0g
ICAgICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4dHVyZUV4dGVybmFsKGltYWdlLCAmdGFyZ2V0
KTsKLQotICAgICAgICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFyZ2V0IHJlbmRlcmJ1ZmZlciBoYXMg
dGhlIHNhbWUgY29sb3IgYXMgdGhlIHNvdXJjZSB0ZXh0dXJlCi0gICAgICAgIHZlcmlmeVJlc3Vs
dHNFeHRlcm5hbEVTU0wzKHRhcmdldCwgJmRhdGFbbGF5ZXIgKiA0XSk7Ci0KLSAgICAgICAgLy8g
Q2xlYW4gdXAKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmc291cmNlKTsKLSAgICAgICAg
ZWdsRGVzdHJveUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7Ci0gICAgICAg
IGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRhcmdldCk7Ci0gICAgfQotfQotCi1URVNUX1AoSW1hZ2VU
ZXN0LCBTb3VyY2VSZW5kZXJidWZmZXJUYXJnZXRUZXh0dXJlKQotewotICAgIEVHTFdpbmRvdyAq
d2luZG93ID0gZ2V0RUdMV2luZG93KCk7Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNf
RUdMX2ltYWdlIikgfHwKLSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRv
dy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwKLSAgICAgICAgIWVnbERp
c3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF9y
ZW5kZXJidWZmZXJfaW1hZ2UiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBz
a2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwgRUdMX0tIUl9pbWFnZV9iYXNlIG9yICIKLSAg
ICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3JlbmRlcmJ1ZmZlcl9pbWFnZSBpcyBub3Qg
YXZhaWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEdMdWJ5dGUgZGF0YVs0XSA9IHsyNTUsIDAsIDI1NSwgMjU1fTsK
LQotICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKLSAgICBHTHVpbnQgc291cmNlOwotICAgIEVHTElt
YWdlS0hSIGltYWdlOwotICAgIGNyZWF0ZUVHTEltYWdlUmVuZGVyYnVmZmVyU291cmNlKDEsIDEs
IEdMX1JHQkE4X09FUywgZGF0YSwgJnNvdXJjZSwgJmltYWdlKTsKLQotICAgIC8vIENyZWF0ZSB0
aGUgdGFyZ2V0Ci0gICAgR0x1aW50IHRhcmdldDsKLSAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFRl
eHR1cmUyRChpbWFnZSwgJnRhcmdldCk7Ci0KLSAgICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFyZ2V0
IHRleHR1cmUgaGFzIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBzb3VyY2UgdGV4dHVyZQotICAgIHZl
cmlmeVJlc3VsdHMyRCh0YXJnZXQsIGRhdGEpOwotCi0gICAgLy8gQ2xlYW4gdXAKLSAgICBnbERl
bGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnNvdXJjZSk7Ci0gICAgZWdsRGVzdHJveUltYWdlS0hSKHdp
bmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7Ci0gICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGFy
Z2V0KTsKLX0KLQotLy8gVGVzdCByZW5kZXJidWZmZXIgLT4gZXh0ZXJuYWwgdGV4dHVyZSBFR0wg
aW1hZ2VzLgotVEVTVF9QKEltYWdlVGVzdCwgU291cmNlUmVuZGVyYnVmZmVyVGFyZ2V0VGV4dHVy
ZUV4dGVybmFsKQotewotICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7Ci0g
ICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlIikgfHwgIWV4dGVuc2lvbkVu
YWJsZWQoIk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwiKSB8fAotICAgICAgICAhZWdsRGlzcGxheUV4
dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdlX2Jhc2Ui
KSB8fAotICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNw
bGF5KCksICJFR0xfS0hSX2dsX3JlbmRlcmJ1ZmZlcl9pbWFnZSIpKQotICAgIHsKLSAgICAgICAg
c3RkOjpjb3V0Ci0gICAgICAgICAgICA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9p
bWFnZSwgT0VTX0VHTF9pbWFnZV9leHRlcm5hbCwgRUdMX0tIUl9pbWFnZV9iYXNlIG9yICIKLSAg
ICAgICAgICAgICAgICJFR0xfS0hSX2dsX3JlbmRlcmJ1ZmZlcl9pbWFnZSBpcyBub3QgYXZhaWxh
YmxlLiIKLSAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIEdMdWJ5dGUgZGF0YVs0XSA9IHsyNTUsIDAsIDI1NSwgMjU1fTsKLQotICAgIC8vIENy
ZWF0ZSB0aGUgSW1hZ2UKLSAgICBHTHVpbnQgc291cmNlOwotICAgIEVHTEltYWdlS0hSIGltYWdl
OwotICAgIGNyZWF0ZUVHTEltYWdlUmVuZGVyYnVmZmVyU291cmNlKDEsIDEsIEdMX1JHQkE4X09F
UywgZGF0YSwgJnNvdXJjZSwgJmltYWdlKTsKLQotICAgIC8vIENyZWF0ZSB0aGUgdGFyZ2V0Ci0g
ICAgR0x1aW50IHRhcmdldDsKLSAgICBjcmVhdGVFR0xJbWFnZVRhcmdldFRleHR1cmVFeHRlcm5h
bChpbWFnZSwgJnRhcmdldCk7Ci0KLSAgICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFyZ2V0IHRleHR1
cmUgaGFzIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBzb3VyY2UgdGV4dHVyZQotICAgIHZlcmlmeVJl
c3VsdHNFeHRlcm5hbCh0YXJnZXQsIGRhdGEpOwotCi0gICAgLy8gQ2xlYW4gdXAKLSAgICBnbERl
bGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnNvdXJjZSk7Ci0gICAgZWdsRGVzdHJveUltYWdlS0hSKHdp
bmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7Ci0gICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGFy
Z2V0KTsKLX0KLQotLy8gVGVzdCByZW5kZXJidWZmZXIgLT4gZXh0ZXJuYWwgdGV4dHVyZSBFR0wg
aW1hZ2VzIHVzaW5nIEVTU0wzIHNoYWRlcnMuCi1URVNUX1AoSW1hZ2VUZXN0RVMzLCBTb3VyY2VS
ZW5kZXJidWZmZXJUYXJnZXRUZXh0dXJlRXh0ZXJuYWxFU1NMMykKLXsKLSAgICBFR0xXaW5kb3cg
KndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VT
X0VHTF9pbWFnZSIpIHx8ICFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlX2V4dGVybmFs
X2Vzc2wzIikgfHwKLSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+
Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwKLSAgICAgICAgIWVnbERpc3Bs
YXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF9yZW5k
ZXJidWZmZXJfaW1hZ2UiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dAotICAgICAgICAgICAg
PDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9FU19FR0xfaW1hZ2UsIE9FU19FR0xfaW1hZ2VfZXh0
ZXJuYWwsIEVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCi0gICAgICAgICAgICAgICAiRUdMX0tIUl9n
bF9yZW5kZXJidWZmZXJfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICA8PCBz
dGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHVieXRlIGRhdGFbNF0g
PSB7MjU1LCAwLCAyNTUsIDI1NX07Ci0KLSAgICAvLyBDcmVhdGUgdGhlIEltYWdlCi0gICAgR0x1
aW50IHNvdXJjZTsKLSAgICBFR0xJbWFnZUtIUiBpbWFnZTsKLSAgICBjcmVhdGVFR0xJbWFnZVJl
bmRlcmJ1ZmZlclNvdXJjZSgxLCAxLCBHTF9SR0JBOF9PRVMsIGRhdGEsICZzb3VyY2UsICZpbWFn
ZSk7Ci0KLSAgICAvLyBDcmVhdGUgdGhlIHRhcmdldAotICAgIEdMdWludCB0YXJnZXQ7Ci0gICAg
Y3JlYXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlRXh0ZXJuYWwoaW1hZ2UsICZ0YXJnZXQpOwotCi0g
ICAgLy8gRXhwZWN0IHRoYXQgdGhlIHRhcmdldCB0ZXh0dXJlIGhhcyB0aGUgc2FtZSBjb2xvciBh
cyB0aGUgc291cmNlIHRleHR1cmUKLSAgICB2ZXJpZnlSZXN1bHRzRXh0ZXJuYWxFU1NMMyh0YXJn
ZXQsIGRhdGEpOwotCi0gICAgLy8gQ2xlYW4gdXAKLSAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMo
MSwgJnNvdXJjZSk7Ci0gICAgZWdsRGVzdHJveUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgp
LCBpbWFnZSk7Ci0gICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGFyZ2V0KTsKLX0KLQotVEVTVF9Q
KEltYWdlVGVzdCwgU291cmNlUmVuZGVyYnVmZmVyVGFyZ2V0UmVuZGVyYnVmZmVyKQotewotICAg
IEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7Ci0gICAgaWYgKCFleHRlbnNpb25F
bmFibGVkKCJPRVNfRUdMX2ltYWdlIikgfHwKLSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25F
bmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9pbWFnZV9iYXNlIikgfHwKLSAg
ICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAi
RUdMX0tIUl9nbF9yZW5kZXJidWZmZXJfaW1hZ2UiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291
dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwgRUdMX0tIUl9pbWFnZV9i
YXNlIG9yICIKLSAgICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3JlbmRlcmJ1ZmZlcl9p
bWFnZSBpcyBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEdMdWJ5dGUgZGF0YVs0XSA9IHsyNTUsIDAs
IDI1NSwgMjU1fTsKLQotICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKLSAgICBHTHVpbnQgc291cmNl
OwotICAgIEVHTEltYWdlS0hSIGltYWdlOwotICAgIGNyZWF0ZUVHTEltYWdlUmVuZGVyYnVmZmVy
U291cmNlKDEsIDEsIEdMX1JHQkE4X09FUywgZGF0YSwgJnNvdXJjZSwgJmltYWdlKTsKLQotICAg
IC8vIENyZWF0ZSB0aGUgdGFyZ2V0Ci0gICAgR0x1aW50IHRhcmdldDsKLSAgICBjcmVhdGVFR0xJ
bWFnZVRhcmdldFJlbmRlcmJ1ZmZlcihpbWFnZSwgJnRhcmdldCk7Ci0KLSAgICAvLyBFeHBlY3Qg
dGhhdCB0aGUgdGFyZ2V0IHJlbmRlcmJ1ZmZlciBoYXMgdGhlIHNhbWUgY29sb3IgYXMgdGhlIHNv
dXJjZSB0ZXh0dXJlCi0gICAgdmVyaWZ5UmVzdWx0c1JlbmRlcmJ1ZmZlcih0YXJnZXQsIGRhdGEp
OwotCi0gICAgLy8gQ2xlYW4gdXAKLSAgICBnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMoMSwgJnNvdXJj
ZSk7Ci0gICAgZWdsRGVzdHJveUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCBpbWFnZSk7
Ci0gICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZ0YXJnZXQpOwotfQotCi0vLyBEZWxldGUg
dGhlIHNvdXJjZSB0ZXh0dXJlIGFuZCBFR0wgaW1hZ2UuICBUaGUgaW1hZ2UgdGFyZ2V0cyBzaG91
bGQgc3RpbGwgaGF2ZSB0aGUgc2FtZSBkYXRhCi0vLyBiZWNhdXNlCi0vLyB0aGV5IGhvbGQgcmVm
cyB0byB0aGUgaW1hZ2UuCi1URVNUX1AoSW1hZ2VUZXN0LCBEZWxldGlvbikKLXsKLSAgICBFR0xX
aW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxl
ZCgiT0VTX0VHTF9pbWFnZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxl
ZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8Ci0gICAgICAg
ICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9L
SFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3Ig
IgotICAgICAgICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSBpcyBu
b3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIEdMdWJ5dGUgb3JpZ2luYWxEYXRhWzRdID0gezI1NSwgMCwg
MjU1LCAyNTV9OwotICAgIEdMdWJ5dGUgdXBkYXRlRGF0YVs0XSAgID0gezAsIDI1NSwgMCwgMjU1
fTsKLQotICAgIC8vIENyZWF0ZSB0aGUgSW1hZ2UKLSAgICBHTHVpbnQgc291cmNlOwotICAgIEVH
TEltYWdlS0hSIGltYWdlOwotICAgIGNyZWF0ZUVHTEltYWdlMkRUZXh0dXJlU291cmNlKDEsIDEs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG9yaWdpbmFsRGF0YSwgJnNvdXJjZSwgJmltYWdl
KTsKLQotICAgIC8vIENyZWF0ZSBtdWx0aXBsZSB0YXJnZXRzCi0gICAgR0x1aW50IHRhcmdldFRl
eHR1cmU7Ci0gICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkQoaW1hZ2UsICZ0YXJnZXRU
ZXh0dXJlKTsKLQotICAgIEdMdWludCB0YXJnZXRSZW5kZXJidWZmZXI7Ci0gICAgY3JlYXRlRUdM
SW1hZ2VUYXJnZXRSZW5kZXJidWZmZXIoaW1hZ2UsICZ0YXJnZXRSZW5kZXJidWZmZXIpOwotCi0g
ICAgLy8gRGVsZXRlIHRoZSBzb3VyY2UgdGV4dHVyZQotICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwg
JnNvdXJjZSk7Ci0gICAgc291cmNlID0gMDsKLQotICAgIC8vIEV4cGVjdCB0aGF0IGJvdGggdGhl
IHRhcmdldHMgaGF2ZSB0aGUgb3JpZ2luYWwgZGF0YQotICAgIHZlcmlmeVJlc3VsdHMyRCh0YXJn
ZXRUZXh0dXJlLCBvcmlnaW5hbERhdGEpOwotICAgIHZlcmlmeVJlc3VsdHNSZW5kZXJidWZmZXIo
dGFyZ2V0UmVuZGVyYnVmZmVyLCBvcmlnaW5hbERhdGEpOwotCi0gICAgLy8gVXBkYXRlIHRoZSBk
YXRhIG9mIHRoZSB0YXJnZXQKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRhcmdl
dFRleHR1cmUpOwotICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAx
LCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCB1cGRhdGVEYXRhKTsKLQotICAgIC8vIEV4
cGVjdCB0aGF0IGJvdGggdGFyZ2V0cyBoYXZlIHRoZSB1cGRhdGVkIGRhdGEKLSAgICB2ZXJpZnlS
ZXN1bHRzMkQodGFyZ2V0VGV4dHVyZSwgdXBkYXRlRGF0YSk7Ci0gICAgdmVyaWZ5UmVzdWx0c1Jl
bmRlcmJ1ZmZlcih0YXJnZXRSZW5kZXJidWZmZXIsIHVwZGF0ZURhdGEpOwotCi0gICAgLy8gRGVs
ZXRlIHRoZSBFR0wgaW1hZ2UKLSAgICBlZ2xEZXN0cm95SW1hZ2VLSFIod2luZG93LT5nZXREaXNw
bGF5KCksIGltYWdlKTsKLSAgICBpbWFnZSA9IEVHTF9OT19JTUFHRV9LSFI7Ci0KLSAgICAvLyBV
cGRhdGUgdGhlIGRhdGEgb2YgdGhlIHRhcmdldCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBkYXRhCi0g
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0YXJnZXRUZXh0dXJlKTsKLSAgICBnbFRl
eFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5T
SUdORURfQllURSwgb3JpZ2luYWxEYXRhKTsKLQotICAgIC8vIEV4cGVjdCB0aGF0IGJvdGggdGFy
Z2V0cyBoYXZlIHRoZSBvcmlnaW5hbCBkYXRhIGFnYWluCi0gICAgdmVyaWZ5UmVzdWx0czJEKHRh
cmdldFRleHR1cmUsIG9yaWdpbmFsRGF0YSk7Ci0gICAgdmVyaWZ5UmVzdWx0c1JlbmRlcmJ1ZmZl
cih0YXJnZXRSZW5kZXJidWZmZXIsIG9yaWdpbmFsRGF0YSk7Ci0KLSAgICAvLyBDbGVhbiB1cAot
ICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRhcmdldFRleHR1cmUpOwotICAgIGdsRGVsZXRlUmVu
ZGVyYnVmZmVycygxLCAmdGFyZ2V0UmVuZGVyYnVmZmVyKTsKLX0KLQotVEVTVF9QKEltYWdlVGVz
dCwgTWlwTGV2ZWxzKQotewotICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7
Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJPRVNfRUdMX2ltYWdlIikgfHwKLSAgICAgICAg
IWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tI
Ul9pbWFnZV9iYXNlIikgfHwKLSAgICAgICAgIWVnbERpc3BsYXlFeHRlbnNpb25FbmFibGVkKHdp
bmRvdy0+Z2V0RGlzcGxheSgpLCAiRUdMX0tIUl9nbF90ZXh0dXJlXzJEX2ltYWdlIikpCi0gICAg
ewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIE9FU19FR0xfaW1h
Z2UsIEVHTF9LSFJfaW1hZ2VfYmFzZSBvciAiCi0gICAgICAgICAgICAgICAgICAgICAiRUdMX0tI
Ul9nbF90ZXh0dXJlXzJEX2ltYWdlIGlzIG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAgICAg
ICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29uc3Qgc2l6
ZV90IG1pcExldmVscyAgID0gMzsKLSAgICBjb25zdCBzaXplX3QgdGV4dHVyZVNpemUgPSA0Owot
ICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbWlwMERhdGEodGV4dHVyZVNpemUgKiB0ZXh0dXJlU2l6
ZSwgMHhGRkZGMDAwMCk7Ci0gICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBtaXAxRGF0YShtaXAwRGF0
YS5zaXplKCkgPDwgMSwgMHhGRjAwRkYwMCk7Ci0gICAgc3RkOjp2ZWN0b3I8R0x1aW50PiBtaXAy
RGF0YShtaXAwRGF0YS5zaXplKCkgPDwgMiwgMHhGRjAwMDBGRik7Ci0gICAgR0x1Ynl0ZSAqZGF0
YVttaXBMZXZlbHNdID0gewotICAgICAgICByZWludGVycHJldF9jYXN0PEdMdWJ5dGUgKj4oJm1p
cDBEYXRhWzBdKSwgcmVpbnRlcnByZXRfY2FzdDxHTHVieXRlICo+KCZtaXAxRGF0YVswXSksCi0g
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0x1Ynl0ZSAqPigmbWlwMkRhdGFbMF0pLAotICAgIH07
Ci0KLSAgICBHTHVpbnQgc291cmNlOwotICAgIGdsR2VuVGV4dHVyZXMoMSwgJnNvdXJjZSk7Ci0g
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBzb3VyY2UpOwotCi0gICAgZm9yIChzaXpl
X3QgbGV2ZWwgPSAwOyBsZXZlbCA8IG1pcExldmVsczsgbGV2ZWwrKykKLSAgICB7Ci0gICAgICAg
IGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCBzdGF0aWNfY2FzdDxHTGludD4obGV2ZWwpLCBH
TF9SR0JBLCB0ZXh0dXJlU2l6ZSA+PiBsZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgIHRleHR1
cmVTaXplID4+IGxldmVsLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBkYXRhW2xldmVs
XSk7Ci0gICAgfQotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBmb3IgKHNpemVf
dCBsZXZlbCA9IDA7IGxldmVsIDwgbWlwTGV2ZWxzOyBsZXZlbCsrKQotICAgIHsKLSAgICAgICAg
Ly8gQ3JlYXRlIHRoZSBJbWFnZQotICAgICAgICBFR0xpbnQgYXR0cmlic1tdID0gewotICAgICAg
ICAgICAgRUdMX0dMX1RFWFRVUkVfTEVWRUxfS0hSLCBzdGF0aWNfY2FzdDxFR0xpbnQ+KGxldmVs
KSwgRUdMX05PTkUsCi0gICAgICAgIH07Ci0gICAgICAgIEVHTEltYWdlS0hSIGltYWdlID0KLSAg
ICAgICAgICAgIGVnbENyZWF0ZUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlzcGxheSgpLCB3aW5kb3ct
PmdldENvbnRleHQoKSwgRUdMX0dMX1RFWFRVUkVfMkRfS0hSLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRIZWxwZXI8RUdMQ2xpZW50QnVmZmVyPihzb3VyY2UpLCBh
dHRyaWJzKTsKLSAgICAgICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICAgICAgLy8gQ3Jl
YXRlIGEgdGV4dHVyZSBhbmQgcmVuZGVyYnVmZmVyIHRhcmdldAotICAgICAgICBHTHVpbnQgdGV4
dHVyZVRhcmdldDsKLSAgICAgICAgY3JlYXRlRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkQoaW1hZ2Us
ICZ0ZXh0dXJlVGFyZ2V0KTsKLQotICAgICAgICAvLyBEaXNhYmxlIG1pcG1hcHBpbmcKLSAgICAg
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlVGFyZ2V0KTsKLSAgICAgICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xf
TkVBUkVTVCk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotCi0gICAgICAgIEdMdWludCByZW5kZXJidWZm
ZXJUYXJnZXQ7Ci0gICAgICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyKGltYWdl
LCAmcmVuZGVyYnVmZmVyVGFyZ2V0KTsKLQotICAgICAgICAvLyBFeHBlY3QgdGhhdCB0aGUgdGFy
Z2V0cyBoYXZlIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBzb3VyY2UgdGV4dHVyZQotICAgICAgICB2
ZXJpZnlSZXN1bHRzMkQodGV4dHVyZVRhcmdldCwgZGF0YVtsZXZlbF0pOwotICAgICAgICB2ZXJp
ZnlSZXN1bHRzUmVuZGVyYnVmZmVyKHJlbmRlcmJ1ZmZlclRhcmdldCwgZGF0YVtsZXZlbF0pOwot
Ci0gICAgICAgIC8vIENsZWFuIHVwCi0gICAgICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ct
PmdldERpc3BsYXkoKSwgaW1hZ2UpOwotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXh0
dXJlVGFyZ2V0KTsKLSAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZyZW5kZXJidWZm
ZXJUYXJnZXQpOwotICAgIH0KLQotICAgIC8vIENsZWFuIHVwCi0gICAgZ2xEZWxldGVUZXh0dXJl
cygxLCAmc291cmNlKTsKLX0KLQotLy8gUmVzcGVjaWZ5IHRoZSBzb3VyY2UgdGV4dHVyZSwgb3Jw
aGFuaW5nIGl0LiAgVGhlIHRhcmdldCB0ZXh0dXJlIHNob3VsZCBub3QgaGF2ZSB1cGRhdGVkIGRh
dGEuCi1URVNUX1AoSW1hZ2VUZXN0LCBSZXNwZWNpZmljYXRpb24pCi17Ci0gICAgRUdMV2luZG93
ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9F
U19FR0xfaW1hZ2UiKSB8fAotICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2lu
ZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fAotICAgICAgICAhZWds
RGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2ds
X3RleHR1cmVfMkRfaW1hZ2UiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBz
a2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFnZSwgRUdMX0tIUl9pbWFnZV9iYXNlIG9yICIKLSAg
ICAgICAgICAgICAgICAgICAgICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UgaXMgbm90IGF2
YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBHTHVieXRlIG9yaWdpbmFsRGF0YVs0XSA9IHsyNTUsIDAsIDI1NSwg
MjU1fTsKLSAgICBHTHVieXRlIHVwZGF0ZURhdGFbNF0gICA9IHswLCAyNTUsIDAsIDI1NX07Ci0K
LSAgICAvLyBDcmVhdGUgdGhlIEltYWdlCi0gICAgR0x1aW50IHNvdXJjZTsKLSAgICBFR0xJbWFn
ZUtIUiBpbWFnZTsKLSAgICBjcmVhdGVFR0xJbWFnZTJEVGV4dHVyZVNvdXJjZSgxLCAxLCBHTF9S
R0JBLCBHTF9VTlNJR05FRF9CWVRFLCBvcmlnaW5hbERhdGEsICZzb3VyY2UsICZpbWFnZSk7Ci0K
LSAgICAvLyBDcmVhdGUgdGhlIHRhcmdldAotICAgIEdMdWludCB0YXJnZXQ7Ci0gICAgY3JlYXRl
RUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkQoaW1hZ2UsICZ0YXJnZXQpOwotCi0gICAgLy8gUmVzcGVj
aWZ5IHNvdXJjZQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgc291cmNlKTsKLSAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwgdXBkYXRlRGF0YSk7Ci0KLSAgICAvLyBFeHBlY3QgdGhhdCB0
aGUgdGFyZ2V0IHRleHR1cmUgaGFzIHRoZSBvcmlnaW5hbCBkYXRhCi0gICAgdmVyaWZ5UmVzdWx0
czJEKHRhcmdldCwgb3JpZ2luYWxEYXRhKTsKLQotICAgIC8vIEV4cGVjdCB0aGF0IHRoZSBzb3Vy
Y2UgdGV4dHVyZSBoYXMgdGhlIHVwZGF0ZWQgZGF0YQotICAgIHZlcmlmeVJlc3VsdHMyRChzb3Vy
Y2UsIHVwZGF0ZURhdGEpOwotCi0gICAgLy8gQ2xlYW4gdXAKLSAgICBnbERlbGV0ZVRleHR1cmVz
KDEsICZzb3VyY2UpOwotICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXko
KSwgaW1hZ2UpOwotICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRhcmdldCk7Ci19Ci0KLS8vIEZp
cnN0IHJlbmRlciB0byBhIHRhcmdldCB0ZXh0dXJlLCB0aGVuIHJlc3BlY2lmeSB0aGUgc291cmNl
IHRleHR1cmUsIG9ycGhhbmluZyBpdC4KLS8vIFRoZSB0YXJnZXQgdGV4dHVyZSdzIEZCTyBzaG91
bGQgYmUgbm90aWZpZWQgb2YgdGhlIHRhcmdldCB0ZXh0dXJlJ3Mgb3JwaGFuaW5nLgotVEVTVF9Q
KEltYWdlVGVzdCwgUmVzcGVjaWZpY2F0aW9uV2l0aEZCTykKLXsKLSAgICBFR0xXaW5kb3cgKndp
bmRvdyA9IGdldEVHTFdpbmRvdygpOwotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiT0VTX0VH
TF9pbWFnZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ct
PmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNw
bGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfZ2xfdGV4
dHVyZV8yRF9pbWFnZSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBw
ZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgotICAgICAg
ICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSBpcyBub3QgYXZhaWxh
YmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIC8vIFNpbXBsZSBzaGFkZXIKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVy
dGV4U291cmNlID0KLSAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAg
ICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBnbF9Qb3NpdGlv
biA9IHZlYzQocG9zaXRpb24sIDAsIDEpO1xuIgotICAgICAgICAifSI7Ci0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgJmZyYWdtZW50U291cmNlID0KLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAg
ICAgICJ7XG4iCi0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLjAsIDAuMCwgMS4w
LCAxLjApO1xuIgotICAgICAgICAifSI7Ci0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJv
Z3JhbSh2ZXJ0ZXhTb3VyY2UsIGZyYWdtZW50U291cmNlKTsKLSAgICBBU1NFUlRfTkUoMHUsIHBy
b2dyYW0pOwotCi0gICAgR0x1Ynl0ZSBvcmlnaW5hbERhdGFbNF0gPSB7MjU1LCAwLCAyNTUsIDI1
NX07Ci0gICAgR0x1Ynl0ZSB1cGRhdGVEYXRhWzRdICAgPSB7MCwgMjU1LCAwLCAyNTV9OwotCi0g
ICAgLy8gQ3JlYXRlIHRoZSBJbWFnZQotICAgIEdMdWludCBzb3VyY2U7Ci0gICAgRUdMSW1hZ2VL
SFIgaW1hZ2U7Ci0gICAgY3JlYXRlRUdMSW1hZ2UyRFRleHR1cmVTb3VyY2UoMSwgMSwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwgb3JpZ2luYWxEYXRhLCAmc291cmNlLCAmaW1hZ2UpOwotCi0g
ICAgLy8gQ3JlYXRlIHRoZSB0YXJnZXQKLSAgICBHTHVpbnQgdGFyZ2V0OwotICAgIGNyZWF0ZUVH
TEltYWdlVGFyZ2V0VGV4dHVyZTJEKGltYWdlLCAmdGFyZ2V0KTsKLQotICAgIC8vIFJlbmRlciB0
byB0aGUgdGFyZ2V0IHRleHR1cmUKLSAgICBHTHVpbnQgZmJvOwotICAgIGdsR2VuRnJhbWVidWZm
ZXJzKDEsICZmYm8pOwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8p
OwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FU
VEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0YXJnZXQsIDApOwotICAgIGRyYXdRdWFkKHByb2dy
YW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAwLCAwLCAy
NTUsIDI1NSk7Ci0KLSAgICAvLyBSZXNwZWNpZnkgc291cmNlIHdpdGggc2FtZSBwYXJhbWV0ZXJz
LiBUaGlzIHNob3VsZCBub3QgY2hhbmdlIHRoZSB0ZXh0dXJlIHN0b3JhZ2UgaW4gRDNEMTEuCi0g
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBzb3VyY2UpOwotICAgIGdsVGV4SW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCB1cGRhdGVEYXRhKTsKLQotICAgIC8vIEV4cGVjdCB0aGF0IHRoZSBzb3VyY2UgdGV4
dHVyZSBoYXMgdGhlIHVwZGF0ZWQgZGF0YQotICAgIHZlcmlmeVJlc3VsdHMyRChzb3VyY2UsIHVw
ZGF0ZURhdGEpOwotCi0gICAgLy8gUmVuZGVyIHRvIHRoZSB0YXJnZXQgdGV4dHVyZSBhZ2FpbiBh
bmQgdmVyaWZ5IGl0IGdldHMgdGhlIHJlbmRlcmVkIHBpeGVscy4KLSAgICBkcmF3UXVhZChwcm9n
cmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwgMCwg
MjU1LCAyNTUpOwotCi0gICAgLy8gQ2xlYW4gdXAKLSAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZz
b3VyY2UpOwotICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXkoKSwgaW1h
Z2UpOwotICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRhcmdldCk7Ci0gICAgZ2xEZWxldGVQcm9n
cmFtKHByb2dyYW0pOwotICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmYm8pOwotfQotCi0v
LyBUZXN0IHRoYXQgcmVzcGVjaWZ5aW5nIGEgbGV2ZWwgb2YgdGhlIHRhcmdldCB0ZXh0dXJlIG9y
cGhhbnMgaXQgYW5kIGtlZXBzIGEgY29weSBvZiB0aGUgRUdMaW1hZ2UKLS8vIGRhdGEKLVRFU1Rf
UChJbWFnZVRlc3QsIFJlc3BlY2lmaWNhdGlvbk9mT3RoZXJMZXZlbCkKLXsKLSAgICBFR0xXaW5k
b3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgi
T0VTX0VHTF9pbWFnZSIpIHx8Ci0gICAgICAgICFlZ2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3
aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpIHx8Ci0gICAgICAgICFl
Z2xEaXNwbGF5RXh0ZW5zaW9uRW5hYmxlZCh3aW5kb3ctPmdldERpc3BsYXkoKSwgIkVHTF9LSFJf
Z2xfdGV4dHVyZV8yRF9pbWFnZSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IHNraXBwZWQgYmVjYXVzZSBPRVNfRUdMX2ltYWdlLCBFR0xfS0hSX2ltYWdlX2Jhc2Ugb3IgIgot
ICAgICAgICAgICAgICAgICAgICAgIkVHTF9LSFJfZ2xfdGV4dHVyZV8yRF9pbWFnZSBpcyBub3Qg
YXZhaWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEdMdWJ5dGUgb3JpZ2luYWxEYXRhWzIgKiAyICogNF0gPSB7Ci0g
ICAgICAgIDI1NSwgMCwgMjU1LCAyNTUsIDI1NSwgMCwgMjU1LCAyNTUsIDI1NSwgMCwgMjU1LCAy
NTUsIDI1NSwgMCwgMjU1LCAyNTUsCi0gICAgfTsKLQotICAgIEdMdWJ5dGUgdXBkYXRlRGF0YVsy
ICogMiAqIDRdID0gewotICAgICAgICAwLCAyNTUsIDAsIDI1NSwgMCwgMjU1LCAwLCAyNTUsIDAs
IDI1NSwgMCwgMjU1LCAwLCAyNTUsIDAsIDI1NSwKLSAgICB9OwotCi0gICAgLy8gQ3JlYXRlIHRo
ZSBJbWFnZQotICAgIEdMdWludCBzb3VyY2U7Ci0gICAgRUdMSW1hZ2VLSFIgaW1hZ2U7Ci0gICAg
Y3JlYXRlRUdMSW1hZ2UyRFRleHR1cmVTb3VyY2UoMiwgMiwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgb3JpZ2luYWxEYXRhLCAmc291cmNlLCAmaW1hZ2UpOwotCi0gICAgLy8gQ3JlYXRlIHRo
ZSB0YXJnZXQKLSAgICBHTHVpbnQgdGFyZ2V0OwotICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0VGV4
dHVyZTJEKGltYWdlLCAmdGFyZ2V0KTsKLQotICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQg
YW5kIHNvdXJjZSB0ZXh0dXJlcyBoYXZlIHRoZSBvcmlnaW5hbCBkYXRhCi0gICAgdmVyaWZ5UmVz
dWx0czJEKHNvdXJjZSwgb3JpZ2luYWxEYXRhKTsKLSAgICB2ZXJpZnlSZXN1bHRzMkQodGFyZ2V0
LCBvcmlnaW5hbERhdGEpOwotCi0gICAgLy8gQWRkIGEgbmV3IG1pcExldmVsIHRvIHRoZSB0YXJn
ZXQsIG9ycGhhbmluZyBpdAotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGFyZ2V0
KTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQSwgMSwgMSwgMCwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgb3JpZ2luYWxEYXRhKTsKLSAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKLQotICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQgYW5kIHNvdXJjZSB0
ZXh0dXJlcyBzdGlsbCBoYXZlIHRoZSBvcmlnaW5hbCBkYXRhCi0gICAgdmVyaWZ5UmVzdWx0czJE
KHNvdXJjZSwgb3JpZ2luYWxEYXRhKTsKLSAgICB2ZXJpZnlSZXN1bHRzMkQodGFyZ2V0LCBvcmln
aW5hbERhdGEpOwotCi0gICAgLy8gVXBkYXRlIHRoZSBzb3VyY2UncyBkYXRhCi0gICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCBzb3VyY2UpOwotICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCAwLCAwLCAyLCAyLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCB1cGRh
dGVEYXRhKTsKLQotICAgIC8vIEV4cGVjdCB0aGF0IHRoZSB0YXJnZXQgc3RpbGwgaGFzIHRoZSBv
cmlnaW5hbCBkYXRhIGFuZCBzb3VyY2UgaGFzIHRoZSB1cGRhdGVkIGRhdGEKLSAgICB2ZXJpZnlS
ZXN1bHRzMkQoc291cmNlLCB1cGRhdGVEYXRhKTsKLSAgICB2ZXJpZnlSZXN1bHRzMkQodGFyZ2V0
LCBvcmlnaW5hbERhdGEpOwotCi0gICAgLy8gQ2xlYW4gdXAKLSAgICBnbERlbGV0ZVRleHR1cmVz
KDEsICZzb3VyY2UpOwotICAgIGVnbERlc3Ryb3lJbWFnZUtIUih3aW5kb3ctPmdldERpc3BsYXko
KSwgaW1hZ2UpOwotICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRhcmdldCk7Ci19Ci0KLS8vIFVw
ZGF0ZSB0aGUgZGF0YSBvZiB0aGUgc291cmNlIGFuZCB0YXJnZXQgdGV4dHVyZXMuICBBbGwgaW1h
Z2Ugc2libGluZ3Mgc2hvdWxkIGhhdmUgdGhlIG5ldyBkYXRhLgotVEVTVF9QKEltYWdlVGVzdCwg
VXBkYXRlZERhdGEpCi17Ci0gICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsK
LSAgICBpZiAoIWV4dGVuc2lvbkVuYWJsZWQoIk9FU19FR0xfaW1hZ2UiKSB8fAotICAgICAgICAh
ZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2luZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hS
X2ltYWdlX2Jhc2UiKSB8fAotICAgICAgICAhZWdsRGlzcGxheUV4dGVuc2lvbkVuYWJsZWQod2lu
ZG93LT5nZXREaXNwbGF5KCksICJFR0xfS0hSX2dsX3RleHR1cmVfMkRfaW1hZ2UiKSkKLSAgICB7
Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgT0VTX0VHTF9pbWFn
ZSwgRUdMX0tIUl9pbWFnZV9iYXNlIG9yICIKLSAgICAgICAgICAgICAgICAgICAgICJFR0xfS0hS
X2dsX3RleHR1cmVfMkRfaW1hZ2UgaXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAg
ICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHVieXRlIG9y
aWdpbmFsRGF0YVs0XSA9IHsyNTUsIDAsIDI1NSwgMjU1fTsKLSAgICBHTHVieXRlIHVwZGF0ZURh
dGFbNF0gICA9IHswLCAyNTUsIDAsIDI1NX07Ci0KLSAgICAvLyBDcmVhdGUgdGhlIEltYWdlCi0g
ICAgR0x1aW50IHNvdXJjZTsKLSAgICBFR0xJbWFnZUtIUiBpbWFnZTsKLSAgICBjcmVhdGVFR0xJ
bWFnZTJEVGV4dHVyZVNvdXJjZSgxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBvcmln
aW5hbERhdGEsICZzb3VyY2UsICZpbWFnZSk7Ci0KLSAgICAvLyBDcmVhdGUgbXVsdGlwbGUgdGFy
Z2V0cwotICAgIEdMdWludCB0YXJnZXRUZXh0dXJlOwotICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0
VGV4dHVyZTJEKGltYWdlLCAmdGFyZ2V0VGV4dHVyZSk7Ci0KLSAgICBHTHVpbnQgdGFyZ2V0UmVu
ZGVyYnVmZmVyOwotICAgIGNyZWF0ZUVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyKGltYWdlLCAm
dGFyZ2V0UmVuZGVyYnVmZmVyKTsKLQotICAgIC8vIEV4cGVjdCB0aGF0IGJvdGggdGhlIHNvdXJj
ZSBhbmQgdGFyZ2V0cyBoYXZlIHRoZSBvcmlnaW5hbCBkYXRhCi0gICAgdmVyaWZ5UmVzdWx0czJE
KHNvdXJjZSwgb3JpZ2luYWxEYXRhKTsKLSAgICB2ZXJpZnlSZXN1bHRzMkQodGFyZ2V0VGV4dHVy
ZSwgb3JpZ2luYWxEYXRhKTsKLSAgICB2ZXJpZnlSZXN1bHRzUmVuZGVyYnVmZmVyKHRhcmdldFJl
bmRlcmJ1ZmZlciwgb3JpZ2luYWxEYXRhKTsKLQotICAgIC8vIFVwZGF0ZSB0aGUgZGF0YSBvZiB0
aGUgc291cmNlCi0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBzb3VyY2UpOwotICAg
IGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAxLCAxLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLCB1cGRhdGVEYXRhKTsKLQotICAgIC8vIEV4cGVjdCB0aGF0IGJvdGgg
dGhlIHNvdXJjZSBhbmQgdGFyZ2V0cyBoYXZlIHRoZSB1cGRhdGVkIGRhdGEKLSAgICB2ZXJpZnlS
ZXN1bHRzMkQoc291cmNlLCB1cGRhdGVEYXRhKTsKLSAgICB2ZXJpZnlSZXN1bHRzMkQodGFyZ2V0
VGV4dHVyZSwgdXBkYXRlRGF0YSk7Ci0gICAgdmVyaWZ5UmVzdWx0c1JlbmRlcmJ1ZmZlcih0YXJn
ZXRSZW5kZXJidWZmZXIsIHVwZGF0ZURhdGEpOwotCi0gICAgLy8gVXBkYXRlIHRoZSBkYXRhIG9m
IHRoZSB0YXJnZXQgYmFjayB0byB0aGUgb3JpZ2luYWwgZGF0YQotICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgdGFyZ2V0VGV4dHVyZSk7Ci0gICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG9yaWdp
bmFsRGF0YSk7Ci0KLSAgICAvLyBFeHBlY3QgdGhhdCBib3RoIHRoZSBzb3VyY2UgYW5kIHRhcmdl
dHMgaGF2ZSB0aGUgb3JpZ2luYWwgZGF0YSBhZ2FpbgotICAgIHZlcmlmeVJlc3VsdHMyRChzb3Vy
Y2UsIG9yaWdpbmFsRGF0YSk7Ci0gICAgdmVyaWZ5UmVzdWx0czJEKHRhcmdldFRleHR1cmUsIG9y
aWdpbmFsRGF0YSk7Ci0gICAgdmVyaWZ5UmVzdWx0c1JlbmRlcmJ1ZmZlcih0YXJnZXRSZW5kZXJi
dWZmZXIsIG9yaWdpbmFsRGF0YSk7Ci0KLSAgICAvLyBDbGVhbiB1cAotICAgIGdsRGVsZXRlVGV4
dHVyZXMoMSwgJnNvdXJjZSk7Ci0gICAgZWdsRGVzdHJveUltYWdlS0hSKHdpbmRvdy0+Z2V0RGlz
cGxheSgpLCBpbWFnZSk7Ci0gICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGFyZ2V0VGV4dHVyZSk7
Ci0gICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZ0YXJnZXRSZW5kZXJidWZmZXIpOwotfQot
Ci0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2gg
cmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UKLS8vIHRlc3RzIHNob3Vs
ZCBiZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoSW1hZ2VUZXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBF
UzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMz
X09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwotQU5HTEVfSU5TVEFOVElBVEVfVEVT
VChJbWFnZVRlc3RFUzMsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygp
KTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90
ZXN0cy9JbmNvbXBsZXRlVGV4dHVyZVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL0luY29tcGxldGVUZXh0dXJlVGVzdC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGQ3YTExMzkxNWM1Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW5jb21wbGV0ZVRleHR1cmVUZXN0
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIw
MTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVk
ZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotI2luY2x1ZGUgPHZlY3Rvcj4KLQotdXNpbmcg
bmFtZXNwYWNlIGFuZ2xlOwotCi1jbGFzcyBJbmNvbXBsZXRlVGV4dHVyZVRlc3QgOiBwdWJsaWMg
QU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBJbmNvbXBsZXRlVGV4dHVyZVRlc3QoKQot
ICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0V2luZG93SGVp
Z2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZp
Z0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNl
dENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQot
ICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAg
ICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwotICAgICAgICAgICAgYXR0cmlidXRlIHZl
YzQgcG9zaXRpb247Ci0gICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7Ci0KLSAgICAg
ICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfUG9z
aXRpb24gPSBwb3NpdGlvbjsKLSAgICAgICAgICAgICAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54
eSAqIDAuNSkgKyAwLjU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAg
ICAgICgKLSAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSAgICAgICAgICAgIHVu
aWZvcm0gc2FtcGxlcjJEIHRleDsKLSAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsK
LQotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB0ZXhjb29yZCk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICk7Ci0KLSAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhT
aGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICAgICAgaWYgKG1Qcm9ncmFt
ID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0
aW9uIGZhaWxlZC4iOwotICAgICAgICB9Ci0KLSAgICAgICAgbVRleHR1cmVVbmlmb3JtTG9jYXRp
b24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRleCIpOwotICAgIH0KLQotICAg
IHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCi0gICAgewotICAgICAgICBnbERlbGV0ZVByb2dyYW0o
bVByb2dyYW0pOwotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAg
ICB2b2lkIGZpbGxUZXh0dXJlRGF0YShzdGQ6OnZlY3RvcjxHTHVieXRlPiAmYnVmZmVyLCBHTHVi
eXRlIHIsIEdMdWJ5dGUgZywgR0x1Ynl0ZSBiLCBHTHVieXRlIGEpCi0gICAgewotICAgICAgICBz
aXplX3QgY291bnQgPSBidWZmZXIuc2l6ZSgpIC8gNDsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBidWZmZXJbaSAqIDQg
KyAwXSA9IHI7Ci0gICAgICAgICAgICBidWZmZXJbaSAqIDQgKyAxXSA9IGc7Ci0gICAgICAgICAg
ICBidWZmZXJbaSAqIDQgKyAyXSA9IGI7Ci0gICAgICAgICAgICBidWZmZXJbaSAqIDQgKyAzXSA9
IGE7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBHTHVpbnQgbVByb2dyYW07Ci0gICAgR0xpbnQg
bVRleHR1cmVVbmlmb3JtTG9jYXRpb247Ci19OwotCi1URVNUX1AoSW5jb21wbGV0ZVRleHR1cmVU
ZXN0LCBJbmNvbXBsZXRlVGV4dHVyZTJEKQotewotICAgIEdMdWludCB0ZXg7Ci0gICAgZ2xHZW5U
ZXh0dXJlcygxLCAmdGV4KTsKLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAg
IGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4KTsKLQotICAgIGdsVXNlUHJvZ3JhbSht
UHJvZ3JhbSk7Ci0gICAgZ2xVbmlmb3JtMWkobVRleHR1cmVVbmlmb3JtTG9jYXRpb24sIDApOwot
Ci0gICAgY29uc3QgR0xzaXplaSB0ZXh0dXJlV2lkdGggPSAyOwotICAgIGNvbnN0IEdMc2l6ZWkg
dGV4dHVyZUhlaWdodCA9IDI7Ci0gICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gdGV4dHVyZURhdGEo
dGV4dHVyZVdpZHRoICogdGV4dHVyZUhlaWdodCAqIDQpOwotICAgIGZpbGxUZXh0dXJlRGF0YSh0
ZXh0dXJlRGF0YSwgMjU1LCAwLCAwLCAyNTUpOwotCi0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRV
UkVfMkQsIDAsIEdMX1JHQkEsIHRleHR1cmVXaWR0aCwgdGV4dHVyZUhlaWdodCwgMCwgR0xfUkdC
QSwgR0xfVU5TSUdORURfQllURSwgJnRleHR1cmVEYXRhWzBdKTsKLSAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLQot
ICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfUElY
RUxfRVEoMCwgMCwgMjU1LCAwLCAwLCAyNTUpOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIp
OwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVD
VF9QSVhFTF9FUSgwLCAwLCAwLCAwLCAwLCAyNTUpOwotCi0gICAgZ2xUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDEsIEdMX1JHQkEsIHRleHR1cmVXaWR0aCA+PiAxLCB0ZXh0dXJlSGVpZ2h0ID4+
IDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZ0ZXh0dXJlRGF0YVswXSk7Ci0KLSAg
ICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX1BJWEVM
X0VRKDAsIDAsIDI1NSwgMCwgMCwgMjU1KTsKLQotICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRl
eCk7Ci19Ci0KLVRFU1RfUChJbmNvbXBsZXRlVGV4dHVyZVRlc3QsIFVwZGF0ZVRleHR1cmUpCi17
Ci0gICAgR0x1aW50IHRleDsKLSAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOwotICAgIGdsQWN0
aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCB0ZXgpOwotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBnbFVuaWZvcm0xaSht
VGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiwgMCk7Ci0KLSAgICBjb25zdCBHTHNpemVpIHJlZFRleHR1
cmVXaWR0aCA9IDY0OwotICAgIGNvbnN0IEdMc2l6ZWkgcmVkVGV4dHVyZUhlaWdodCA9IDY0Owot
ICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IHJlZFRleHR1cmVEYXRhKHJlZFRleHR1cmVXaWR0aCAq
IHJlZFRleHR1cmVIZWlnaHQgKiA0KTsKLSAgICBmaWxsVGV4dHVyZURhdGEocmVkVGV4dHVyZURh
dGEsIDI1NSwgMCwgMCwgMjU1KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDc7IGkrKykK
LSAgICB7Ci0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCBzdGF0aWNfY2FzdDxH
TGludD4oaSksIEdMX1JHQkEsIHJlZFRleHR1cmVXaWR0aCA+PiBpLAotICAgICAgICAgICAgICAg
ICAgICAgcmVkVGV4dHVyZUhlaWdodCA+PiBpLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCAmcmVkVGV4dHVyZURhdGFbMF0pOwotICAgIH0KLQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9U
T19FREdFKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAg
ICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1LCAwLCAwLCAyNTUpOwotCi0gICAgY29uc3QgR0xz
aXplaSBncmVlblRleHR1cmVXaWR0aCA9IDMyOwotICAgIGNvbnN0IEdMc2l6ZWkgZ3JlZW5UZXh0
dXJlSGVpZ2h0ID0gMzI7Ci0gICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gZ3JlZW5UZXh0dXJlRGF0
YShncmVlblRleHR1cmVXaWR0aCAqIGdyZWVuVGV4dHVyZUhlaWdodCAqIDQpOwotICAgIGZpbGxU
ZXh0dXJlRGF0YShncmVlblRleHR1cmVEYXRhLCAwLCAyNTUsIDAsIDI1NSk7Ci0KLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IDY7IGkrKykKLSAgICB7Ci0gICAgICAgIGdsVGV4U3ViSW1hZ2Uy
RChHTF9URVhUVVJFXzJELCBzdGF0aWNfY2FzdDxHTGludD4oaSksIGdyZWVuVGV4dHVyZVdpZHRo
ID4+IGksCi0gICAgICAgICAgICAgICAgICAgICAgICBncmVlblRleHR1cmVIZWlnaHQgPj4gaSwg
Z3JlZW5UZXh0dXJlV2lkdGggPj4gaSwgZ3JlZW5UZXh0dXJlSGVpZ2h0ID4+IGksCi0gICAgICAg
ICAgICAgICAgICAgICAgICBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmZ3JlZW5UZXh0dXJl
RGF0YVswXSk7Ci0gICAgfQotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOwotICAgIEVYUEVDVF9QSVhFTF9FUShnZXRXaW5kb3dXaWR0aCgpIC0gZ3JlZW5UZXh0dXJl
V2lkdGgsIGdldFdpbmRvd0hlaWdodCgpIC0gZ3JlZW5UZXh0dXJlV2lkdGgsIDAsIDI1NSwgMCwg
MjU1KTsKLQotICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleCk7Ci19Ci0KLS8vIFVzZSB0aGlz
IHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hp
Y2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3Qu
Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKEluY29tcGxldGVUZXh0dXJlVGVzdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0Qz
RDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0luZGV4QnVmZmVyT2Zmc2V0VGVzdC5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW5kZXhCdWZmZXJPZmZz
ZXRUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhmMDMyZWVlMDguLjAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9JbmRleEJ1ZmZlck9mZnNldFRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAg
QEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQg
YnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VO
U0UgZmlsZS4KLS8vCi0KLS8vIEluZGV4QnVmZmVyT2Zmc2V0VGVzdC5jcHA6IFRlc3QgZ2xEcmF3
RWxlbWVudHMgd2l0aCBhbiBvZmZzZXQgYW5kIGFuIGluZGV4IGJ1ZmZlcgotCi0jaW5jbHVkZSAi
dGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLSNpbmNsdWRlICJzeXN0ZW1fdXRpbHMuaCIKLQotdXNp
bmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1jbGFzcyBJbmRleEJ1ZmZlck9mZnNldFRlc3QgOiBwdWJs
aWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBJbmRleEJ1ZmZlck9mZnNldFRlc3Qo
KQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0V2luZG93
SGVpZ2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENv
bmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAg
IHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAgICAgU0hBREVSX1NPVVJD
RShwcmVjaXNpb24gaGlnaHAgZmxvYXQ7IGF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uOwotCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChw
b3NpdGlvbiwgMC4wLCAxLjApOwotICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLQotICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICAg
ICBTSEFERVJfU09VUkNFKHByZWNpc2lvbiBoaWdocCBmbG9hdDsgdW5pZm9ybSB2ZWM0IGNvbG9y
OwotCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xv
ciA9IGNvbG9yOwotICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICBtUHJv
Z3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJT
b3VyY2UpOwotICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKLQotICAgICAgICBtQ29s
b3JVbmlmb3JtTG9jYXRpb24gICAgICA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAi
Y29sb3IiKTsKLSAgICAgICAgbVBvc2l0aW9uQXR0cmlidXRlTG9jYXRpb24gPSBnbEdldEF0dHJp
YkxvY2F0aW9uKG1Qcm9ncmFtLCAicG9zaXRpb24iKTsKLQotICAgICAgICBjb25zdCBHTGZsb2F0
IHZlcnRpY2VzW10gPQotICAgICAgICB7Ci0gICAgICAgICAgICAtMS4wZiwgLTEuMGYsCi0gICAg
ICAgICAgICAtMS4wZiwgIDEuMGYsCi0gICAgICAgICAgICAgMS4wZiwgLTEuMGYsCi0gICAgICAg
ICAgICAgMS4wZiwgIDEuMGYKLSAgICAgICAgfTsKLSAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZt
VmVydGV4QnVmZmVyKTsKLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVZl
cnRleEJ1ZmZlcik7Ci0gICAgICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNpemVv
Zih2ZXJ0aWNlcyksICZ2ZXJ0aWNlc1swXSwgR0xfU1RBVElDX0RSQVcpOwotCi0gICAgICAgIGds
R2VuQnVmZmVycygxLCAmbUluZGV4QnVmZmVyKTsKLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0VM
RU1FTlRfQVJSQVlfQlVGRkVSLCBtSW5kZXhCdWZmZXIpOwotICAgIH0KLQotICAgIHZvaWQgVGVh
ckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtVmVy
dGV4QnVmZmVyKTsKLSAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtSW5kZXhCdWZmZXIpOwot
ICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotICAgICAgICBBTkdMRVRlc3Q6OlRl
YXJEb3duKCk7Ci0gICAgfQotCi0gICAgdm9pZCBydW5UZXN0KEdMZW51bSB0eXBlLCBpbnQgdHlw
ZVdpZHRoLCB2b2lkICppbmRleERhdGEpCi0gICAgewotICAgICAgICBnbENsZWFyQ29sb3IoMC4w
ZiwgMC4wZiwgMC4wZiwgMS4wZik7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJ
VCk7Ci0KLSAgICAgICAgR0x1aW50IG51bGxJbmRleERhdGFbXSA9IHswLCAwLCAwLCAwLCAwLCAw
fTsKLQotICAgICAgICBzaXplX3QgaW5kZXhEYXRhV2lkdGggPSA2ICogdHlwZVdpZHRoOwotCi0g
ICAgICAgIGdsQnVmZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgMyAqIGluZGV4RGF0
YVdpZHRoLCBudWxscHRyLCBHTF9EWU5BTUlDX0RSQVcpOwotICAgICAgICBnbEJ1ZmZlclN1YkRh
dGEoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIDAsIGluZGV4RGF0YVdpZHRoLCBudWxsSW5kZXhE
YXRhKTsKLSAgICAgICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBp
bmRleERhdGFXaWR0aCwgaW5kZXhEYXRhV2lkdGgsIGluZGV4RGF0YSk7Ci0gICAgICAgIGdsQnVm
ZmVyU3ViRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgMiAqIGluZGV4RGF0YVdpZHRoLCBp
bmRleERhdGFXaWR0aCwgbnVsbEluZGV4RGF0YSk7Ci0KLSAgICAgICAgZ2xVc2VQcm9ncmFtKG1Q
cm9ncmFtKTsKLQotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4
QnVmZmVyKTsKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1Qb3NpdGlvbkF0dHJpYnV0
ZUxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIDApOwotICAgICAgICBnbEVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KG1Qb3NpdGlvbkF0dHJpYnV0ZUxvY2F0aW9uKTsKLQotICAgICAg
ICBnbFVuaWZvcm00ZihtQ29sb3JVbmlmb3JtTG9jYXRpb24sIDEuMGYsIDAuMGYsIDAuMGYsIDEu
MGYpOwotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMTY7IGkrKykKLSAgICAgICAgewot
ICAgICAgICAgICAgZ2xEcmF3RWxlbWVudHMoR0xfVFJJQU5HTEVTLCA2LCB0eXBlLCByZWludGVy
cHJldF9jYXN0PEdMdm9pZCAqPihpbmRleERhdGFXaWR0aCkpOwotICAgICAgICAgICAgRVhQRUNU
X1BJWEVMX0VRKDY0LCA2NCwgMjU1LCAwLCAwLCAyNTUpOwotICAgICAgICB9Ci0KLSAgICAgICAg
Z2xCdWZmZXJTdWJEYXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRleERhdGFXaWR0aCwg
aW5kZXhEYXRhV2lkdGgsIG51bGxJbmRleERhdGEpOwotICAgICAgICBnbEJ1ZmZlclN1YkRhdGEo
R0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIDIgKiBpbmRleERhdGFXaWR0aCwgaW5kZXhEYXRhV2lk
dGgsIGluZGV4RGF0YSk7Ci0KLSAgICAgICAgZ2xVbmlmb3JtNGYobUNvbG9yVW5pZm9ybUxvY2F0
aW9uLCAwLjBmLCAxLjBmLCAwLjBmLCAxLjBmKTsKLSAgICAgICAgZ2xEcmF3RWxlbWVudHMoR0xf
VFJJQU5HTEVTLCA2LCB0eXBlLCByZWludGVycHJldF9jYXN0PEdMdm9pZCAqPihpbmRleERhdGFX
aWR0aCAqIDIpKTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDY0LCA2NCwgMCwgMjU1LCAwLCAy
NTUpOwotCi0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgICAgICBzd2FwQnVmZmVy
cygpOwotICAgIH0KLQotICAgIEdMdWludCBtUHJvZ3JhbTsKLSAgICBHTGludCBtQ29sb3JVbmlm
b3JtTG9jYXRpb247Ci0gICAgR0xpbnQgbVBvc2l0aW9uQXR0cmlidXRlTG9jYXRpb247Ci0gICAg
R0x1aW50IG1WZXJ0ZXhCdWZmZXI7Ci0gICAgR0x1aW50IG1JbmRleEJ1ZmZlcjsKLX07Ci0KLS8v
IFRlc3QgdXNpbmcgYW4gb2Zmc2V0IGZvciBhbiBVSW50OCBpbmRleCBidWZmZXIKLVRFU1RfUChJ
bmRleEJ1ZmZlck9mZnNldFRlc3QsIFVJbnQ4SW5kZXgpCi17Ci0gICAgR0x1Ynl0ZSBpbmRleERh
dGFbXSA9IHswLCAxLCAyLCAxLCAyLCAzfTsKLSAgICBydW5UZXN0KEdMX1VOU0lHTkVEX0JZVEUs
IDEsIGluZGV4RGF0YSk7Ci19Ci0KLS8vIFRlc3QgdXNpbmcgYW4gb2Zmc2V0IGZvciBhbiBVSW50
MTYgaW5kZXggYnVmZmVyCi1URVNUX1AoSW5kZXhCdWZmZXJPZmZzZXRUZXN0LCBVSW50MTZJbmRl
eCkKLXsKLSAgICBHTHVzaG9ydCBpbmRleERhdGFbXSA9IHswLCAxLCAyLCAxLCAyLCAzfTsKLSAg
ICBydW5UZXN0KEdMX1VOU0lHTkVEX1NIT1JULCAyLCBpbmRleERhdGEpOwotfQotCi0vLyBUZXN0
IHVzaW5nIGFuIG9mZnNldCBmb3IgYW4gVUludDMyIGluZGV4IGJ1ZmZlcgotVEVTVF9QKEluZGV4
QnVmZmVyT2Zmc2V0VGVzdCwgVUludDMySW5kZXgpCi17Ci0gICAgaWYgKGdldENsaWVudE1ham9y
VmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2VsZW1lbnRfaW5kZXhf
dWludCIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVz
ZSBFUzMgb3IgR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCBpcyBub3QgYXZhaWxhYmxlLiIgPDwg
c3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0x1aW50IGluZGV4RGF0
YVtdID0gezAsIDEsIDIsIDEsIDIsIDN9OwotICAgIHJ1blRlc3QoR0xfVU5TSUdORURfSU5ULCA0
LCBpbmRleERhdGEpOwotfQotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKEluZGV4QnVmZmVyT2Zm
c2V0VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0Qx
MSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTM19PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5H
TEVTKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbmRleGVkUG9p
bnRzVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
SW5kZXhlZFBvaW50c1Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2Ix
NmQ4YmZhMC4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL0luZGV4ZWRQb2ludHNUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQw
MyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIK
LQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5kZXhUeXBl
LCBHTGVudW0gSW5kZXhUeXBlTmFtZT4KLWNsYXNzIEluZGV4ZWRQb2ludHNUZXN0IDogcHVibGlj
IEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgSW5kZXhlZFBvaW50c1Rlc3QoKQotICAg
IHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0
KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dy
ZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENv
bmZpZ0FscGhhQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnRGVwdGhCaXRzKDI0KTsKLSAgICB9
Ci0KLSAgICBmbG9hdCBnZXRJbmRleFBvc2l0aW9uWChzaXplX3QgaWR4KQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIChpZHggPT0gMCB8fCBpZHggPT0gMykgPyAtMC41ZiA6IDAuNWY7Ci0gICAgfQot
Ci0gICAgZmxvYXQgZ2V0SW5kZXhQb3NpdGlvblkoc2l6ZV90IGlkeCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiAoaWR4ID09IDIgfHwgaWR4ID09IDMpID8gLTAuNWYgOiAwLjVmOwotICAgIH0KLQot
ICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVw
KCk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0gU0hB
REVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
Ci0gICAgICAgICAgICBhdHRyaWJ1dGUgdmVjMiBwb3NpdGlvbjsKLQotICAgICAgICAgICAgdm9p
ZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9Qb2ludFNpemUgPSA1
LjA7Ci0gICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLjAsIDEu
MCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAg
ICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwg
MC4wLCAwLjAsIDEuMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgbVBy
b2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVy
U291cmNlKTsKLSAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7Ci0KLSAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlMiA9IFNIQURFUl9TT1VSQ0UKLSAgICAg
ICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwotICAgICAgICAgICAgYXR0
cmlidXRlIHZlYzIgcG9zaXRpb247Ci0gICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBjb2xvcjsK
LSAgICAgICAgICAgIHZhcnlpbmcgdmVjNCB2Y29sb3I7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFp
bigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfUG9pbnRTaXplID0gNS4wOwot
ICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMC4wLCAxLjApOwot
ICAgICAgICAgICAgICAgIHZjb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgfQotICAgICAgICAp
OwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291cmNlMiA9IFNI
QURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0
OwotICAgICAgICAgICAgdmFyeWluZyB2ZWM0IHZjb2xvcjsKLSAgICAgICAgICAgIHZvaWQgbWFp
bigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2
Y29sb3IueHl6LCAxLjApOwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIG1W
ZXJ0ZXhXaXRoQ29sb3JCdWZmZXJQcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVy
U291cmNlMiwgZnJhZ21lbnRTaGFkZXJTb3VyY2UyKTsKLSAgICAgICAgQVNTRVJUX05FKDB1LCBt
VmVydGV4V2l0aENvbG9yQnVmZmVyUHJvZ3JhbSk7Ci0KLSAgICAgICAgLy8gQ29uc3RydWN0IGEg
dmVydGV4IGJ1ZmZlciBvZiBwb3NpdGlvbiB2YWx1ZXMgYW5kIGNvbG9yIHZhbHVlcwotICAgICAg
ICAvLyBjb250YWluZWQgaW4gYSBzaW5nbGUgc3RydWN0dXJlCi0gICAgICAgIGNvbnN0IGZsb2F0
IHZlcnRpY2VzV2l0aENvbG9yW10gPQotICAgICAgICB7Ci0gICAgICAgICAgICBnZXRJbmRleFBv
c2l0aW9uWCgwKSwgZ2V0SW5kZXhQb3NpdGlvblkoMCksIDAuMGYsIDEuMGYsIDAuMGYsCi0gICAg
ICAgICAgICBnZXRJbmRleFBvc2l0aW9uWCgyKSwgZ2V0SW5kZXhQb3NpdGlvblkoMiksIDAuMGYs
IDEuMGYsIDAuMGYsCi0gICAgICAgICAgICBnZXRJbmRleFBvc2l0aW9uWCgxKSwgZ2V0SW5kZXhQ
b3NpdGlvblkoMSksIDAuMGYsIDEuMGYsIDAuMGYsCi0gICAgICAgICAgICBnZXRJbmRleFBvc2l0
aW9uWCgzKSwgZ2V0SW5kZXhQb3NpdGlvblkoMyksIDAuMGYsIDEuMGYsIDAuMGYsCi0gICAgICAg
IH07Ci0KLSAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtVmVydGV4V2l0aENvbG9yQnVmZmVyKTsK
LSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVZlcnRleFdpdGhDb2xvckJ1
ZmZlcik7Ci0gICAgICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNpemVvZih2ZXJ0
aWNlc1dpdGhDb2xvciksICZ2ZXJ0aWNlc1dpdGhDb2xvclswXSwgR0xfU1RBVElDX0RSQVcpOwot
Ci0gICAgICAgIC8vIENvbnN0cnVjdCBhIHZlcnRleCBidWZmZXIgb2YgcG9zaXRpb24gdmFsdWVz
IG9ubHkKLSAgICAgICAgY29uc3QgR0xmbG9hdCB2ZXJ0aWNlc1tdID0KLSAgICAgICAgewotICAg
ICAgICAgICAgZ2V0SW5kZXhQb3NpdGlvblgoMCksIGdldEluZGV4UG9zaXRpb25ZKDApLAotICAg
ICAgICAgICAgZ2V0SW5kZXhQb3NpdGlvblgoMiksIGdldEluZGV4UG9zaXRpb25ZKDIpLAotICAg
ICAgICAgICAgZ2V0SW5kZXhQb3NpdGlvblgoMSksIGdldEluZGV4UG9zaXRpb25ZKDEpLAotICAg
ICAgICAgICAgZ2V0SW5kZXhQb3NpdGlvblgoMyksIGdldEluZGV4UG9zaXRpb25ZKDMpLAotICAg
ICAgICB9OwotICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1WZXJ0ZXhCdWZmZXIpOwotICAgICAg
ICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4QnVmZmVyKTsKLSAgICAgICAg
Z2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKHZlcnRpY2VzKSwgJnZlcnRpY2Vz
WzBdLCBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICAgICAgLy8gVGhlIGluZGljZXMgYnVmZmVyIGlz
IHNoYXJlZCBiZXR3ZWVuIGJvdGggdmFyaWF0aW9ucyBvZiB0ZXN0cwotICAgICAgICBjb25zdCBJ
bmRleFR5cGUgaW5kaWNlc1tdID0geyAwLCAyLCAxLCAzIH07Ci0gICAgICAgIGdsR2VuQnVmZmVy
cygxLCAmbUluZGV4QnVmZmVyKTsKLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJS
QVlfQlVGRkVSLCBtSW5kZXhCdWZmZXIpOwotICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIHNpemVvZihpbmRpY2VzKSwgJmluZGljZXNbMF0sIEdMX1NUQVRJQ19E
UkFXKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQotICAgIHsKLSAgICAg
ICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtVmVydGV4QnVmZmVyKTsKLSAgICAgICAgZ2xEZWxldGVC
dWZmZXJzKDEsICZtSW5kZXhCdWZmZXIpOwotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dy
YW0pOwotCi0gICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbVZlcnRleFdpdGhDb2xvckJ1ZmZl
cik7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtVmVydGV4V2l0aENvbG9yQnVmZmVyUHJvZ3Jh
bSk7Ci0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICB2b2lkIHJ1
blRlc3QoR0x1aW50IGZpcnN0SW5kZXgsIGJvb2wgdXNlVmVydGV4QnVmZmVyV2l0aENvbG9yID0g
ZmFsc2UpCi0gICAgewotICAgICAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMS4w
Zik7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICAgICAgR0xp
bnQgdmlld3BvcnRTaXplWzRdOwotICAgICAgICBnbEdldEludGVnZXJ2KEdMX1ZJRVdQT1JULCB2
aWV3cG9ydFNpemUpOwotCi0gICAgICAgIC8vIENob29zZSBhcHByb3ByaWF0ZSBwcm9ncmFtIHRv
IGFwcGx5IGZvciB0aGUgdGVzdAotICAgICAgICBHTHVpbnQgcHJvZ3JhbSA9IHVzZVZlcnRleEJ1
ZmZlcldpdGhDb2xvciA/IG1WZXJ0ZXhXaXRoQ29sb3JCdWZmZXJQcm9ncmFtIDogbVByb2dyYW07
Ci0KLSAgICAgICAgaWYgKHVzZVZlcnRleEJ1ZmZlcldpdGhDb2xvcikKLSAgICAgICAgewotICAg
ICAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVZlcnRleFdpdGhDb2xvckJ1
ZmZlcik7Ci0gICAgICAgICAgICBHTGludCB2ZXJ0ZXhMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9j
YXRpb24ocHJvZ3JhbSwgInBvc2l0aW9uIik7Ci0gICAgICAgICAgICBnbFZlcnRleEF0dHJpYlBv
aW50ZXIodmVydGV4TG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBHTHNpemVpPihWZXJ0ZXhX
aXRoQ29sb3JTaXplKSwgMCk7Ci0gICAgICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KHZlcnRleExvY2F0aW9uKTsKLQotICAgICAgICAgICAgR0xpbnQgdmVydGV4Q29sb3JMb2NhdGlv
biA9IGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgImNvbG9yIik7Ci0gICAgICAgICAgICBn
bFZlcnRleEF0dHJpYlBvaW50ZXIodmVydGV4Q29sb3JMb2NhdGlvbiwgMywgR0xfRkxPQVQsIEdM
X0ZBTFNFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNv
bnN0IEdMc2l6ZWk+KFZlcnRleFdpdGhDb2xvclNpemUpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChHTHZvaWQgKikoKHNpemVvZihmbG9hdCkgKiAyKSkpOwotICAgICAgICAg
ICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh2ZXJ0ZXhDb2xvckxvY2F0aW9uKTsKLSAgICAg
ICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsQmluZEJ1ZmZlcihH
TF9BUlJBWV9CVUZGRVIsIG1WZXJ0ZXhCdWZmZXIpOwotICAgICAgICAgICAgR0xpbnQgdmVydGV4
TG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJwb3NpdGlvbiIpOwotICAg
ICAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHZlcnRleExvY2F0aW9uLCAyLCBHTF9GTE9B
VCwgR0xfRkFMU0UsIDAsIDApOwotICAgICAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJh
eSh2ZXJ0ZXhMb2NhdGlvbik7Ci0gICAgICAgIH0KLQotICAgICAgICBnbEJpbmRCdWZmZXIoR0xf
RUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1JbmRleEJ1ZmZlcik7Ci0gICAgICAgIGdsVXNlUHJvZ3Jh
bShwcm9ncmFtKTsKLQotICAgICAgICBnbERyYXdFbGVtZW50cyhHTF9QT0lOVFMsIG1Qb2ludENv
dW50IC0gZmlyc3RJbmRleCwgSW5kZXhUeXBlTmFtZSwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
Zmlyc3RJbmRleCAqIHNpemVvZihJbmRleFR5cGUpKSk7Ci0KLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtUG9pbnRDb3VudDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBHTHVp
bnQgeCA9IHN0YXRpY19jYXN0PEdMdWludD4odmlld3BvcnRTaXplWzBdICsgKGdldEluZGV4UG9z
aXRpb25YKGkpICogMC41ZiArIDAuNWYpICogKHZpZXdwb3J0U2l6ZVsyXSAtIHZpZXdwb3J0U2l6
ZVswXSkpOwotICAgICAgICAgICAgR0x1aW50IHkgPSBzdGF0aWNfY2FzdDxHTHVpbnQ+KHZpZXdw
b3J0U2l6ZVsxXSArIChnZXRJbmRleFBvc2l0aW9uWShpKSAqIDAuNWYgKyAwLjVmKSAqICh2aWV3
cG9ydFNpemVbM10gLSB2aWV3cG9ydFNpemVbMV0pKTsKLQotICAgICAgICAgICAgaWYgKGkgPCBm
aXJzdEluZGV4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9F
USh4LCB5LCAwLCAwLCAwLCAyNTUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICh1c2VWZXJ0ZXhCdWZmZXJXaXRoQ29s
b3IpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBQaXhlbCBkYXRh
IGlzIGFzc3VtZWQgdG8gYmUgR1JFRU4KLSAgICAgICAgICAgICAgICAgICAgRVhQRUNUX1BJWEVM
X0VRKHgsIHksIDAsIDI1NSwgMCwgMjU1KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gUGl4
ZWwgZGF0YSBpcyBhc3N1bWVkIHRvIGJlIFJFRAotICAgICAgICAgICAgICAgICAgICBFWFBFQ1Rf
UElYRUxfRVEoeCwgeSwgMjU1LCAwLCAwLCAyNTUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBzd2FwQnVmZmVycygpOwotICAgIH0KLQotICAg
IEdMdWludCBtUHJvZ3JhbTsKLSAgICBHTHVpbnQgbVZlcnRleEJ1ZmZlcjsKLSAgICBHTHVpbnQg
bUluZGV4QnVmZmVyOwotCi0gICAgR0x1aW50IG1WZXJ0ZXhXaXRoQ29sb3JCdWZmZXJQcm9ncmFt
OwotICAgIEdMdWludCBtVmVydGV4V2l0aENvbG9yQnVmZmVyOwotCi0gICAgc3RhdGljIGNvbnN0
IEdMdWludCBtUG9pbnRDb3VudCA9IDQ7Ci0KLSAgcHJpdmF0ZToKLSAgICBjb25zdCBzaXplX3Qg
VmVydGV4V2l0aENvbG9yU2l6ZSA9IHNpemVvZihmbG9hdCkgKiA1OwotfTsKLQotdHlwZWRlZiBJ
bmRleGVkUG9pbnRzVGVzdDxHTHVieXRlLCBHTF9VTlNJR05FRF9CWVRFPiBJbmRleGVkUG9pbnRz
VGVzdFVCeXRlOwotCi1URVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RVQnl0ZSwgVW5zaWduZWRCeXRl
T2Zmc2V0MCkKLXsKLSAgICBydW5UZXN0KDApOwotfQotCi1URVNUX1AoSW5kZXhlZFBvaW50c1Rl
c3RVQnl0ZSwgVW5zaWduZWRCeXRlT2Zmc2V0MSkKLXsKLSAgICBydW5UZXN0KDEpOwotfQotCi1U
RVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RVQnl0ZSwgVW5zaWduZWRCeXRlT2Zmc2V0MikKLXsKLSAg
ICBydW5UZXN0KDIpOwotfQotCi1URVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RVQnl0ZSwgVW5zaWdu
ZWRCeXRlT2Zmc2V0MykKLXsKLSAgICBydW5UZXN0KDMpOwotfQotCi1URVNUX1AoSW5kZXhlZFBv
aW50c1Rlc3RVQnl0ZSwgVmVydGV4V2l0aENvbG9yVW5zaWduZWRCeXRlT2Zmc2V0MCkKLXsKLSAg
ICBydW5UZXN0KDAsIHRydWUpOwotfQotCi1URVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RVQnl0ZSwg
VmVydGV4V2l0aENvbG9yVW5zaWduZWRCeXRlT2Zmc2V0MSkKLXsKLSAgICBydW5UZXN0KDEsIHRy
dWUpOwotfQotCi1URVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RVQnl0ZSwgVmVydGV4V2l0aENvbG9y
VW5zaWduZWRCeXRlT2Zmc2V0MikKLXsKLSAgICBydW5UZXN0KDIsIHRydWUpOwotfQotCi1URVNU
X1AoSW5kZXhlZFBvaW50c1Rlc3RVQnl0ZSwgVmVydGV4V2l0aENvbG9yVW5zaWduZWRCeXRlT2Zm
c2V0MykKLXsKLSAgICBydW5UZXN0KDMsIHRydWUpOwotfQotCi10eXBlZGVmIEluZGV4ZWRQb2lu
dHNUZXN0PEdMdXNob3J0LCBHTF9VTlNJR05FRF9TSE9SVD4gSW5kZXhlZFBvaW50c1Rlc3RVU2hv
cnQ7Ci0KLVRFU1RfUChJbmRleGVkUG9pbnRzVGVzdFVTaG9ydCwgVW5zaWduZWRTaG9ydE9mZnNl
dDApCi17Ci0gICAgcnVuVGVzdCgwKTsKLX0KLQotVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VVNo
b3J0LCBVbnNpZ25lZFNob3J0T2Zmc2V0MSkKLXsKLSAgICBydW5UZXN0KDEpOwotfQotCi1URVNU
X1AoSW5kZXhlZFBvaW50c1Rlc3RVU2hvcnQsIFVuc2lnbmVkU2hvcnRPZmZzZXQyKQotewotICAg
IHJ1blRlc3QoMik7Ci19Ci0KLVRFU1RfUChJbmRleGVkUG9pbnRzVGVzdFVTaG9ydCwgVW5zaWdu
ZWRTaG9ydE9mZnNldDMpCi17Ci0gICAgcnVuVGVzdCgzKTsKLX0KLQotVEVTVF9QKEluZGV4ZWRQ
b2ludHNUZXN0VVNob3J0LCBWZXJ0ZXhXaXRoQ29sb3JVbnNpZ25lZFNob3J0T2Zmc2V0MCkKLXsK
LSAgICBydW5UZXN0KDAsIHRydWUpOwotfQotCi1URVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RVU2hv
cnQsIFZlcnRleFdpdGhDb2xvclVuc2lnbmVkU2hvcnRPZmZzZXQxKQotewotICAgIHJ1blRlc3Qo
MSwgdHJ1ZSk7Ci19Ci0KLVRFU1RfUChJbmRleGVkUG9pbnRzVGVzdFVTaG9ydCwgVmVydGV4V2l0
aENvbG9yVW5zaWduZWRTaG9ydE9mZnNldDIpCi17Ci0gICAgcnVuVGVzdCgyLCB0cnVlKTsKLX0K
LQotVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VVNob3J0LCBWZXJ0ZXhXaXRoQ29sb3JVbnNpZ25l
ZFNob3J0T2Zmc2V0MykKLXsKLSAgICBydW5UZXN0KDMsIHRydWUpOwotfQotCi1URVNUX1AoSW5k
ZXhlZFBvaW50c1Rlc3RVU2hvcnQsIFZlcnRleFdpdGhDb2xvclVuc2lnbmVkU2hvcnRPZmZzZXRD
aGFuZ2luZ0luZGljZXMpCi17Ci0gICAgcnVuVGVzdCgzLCB0cnVlKTsKLSAgICBydW5UZXN0KDEs
IHRydWUpOwotICAgIHJ1blRlc3QoMCwgdHJ1ZSk7Ci0gICAgcnVuVGVzdCgyLCB0cnVlKTsKLX0K
LQotdHlwZWRlZiBJbmRleGVkUG9pbnRzVGVzdDxHTHVpbnQsIEdMX1VOU0lHTkVEX0lOVD4gSW5k
ZXhlZFBvaW50c1Rlc3RVSW50OwotCi1URVNUX1AoSW5kZXhlZFBvaW50c1Rlc3RVSW50LCBVbnNp
Z25lZEludE9mZnNldDApCi17Ci0gICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAm
JiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKQotICAgIHsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJ1blRlc3QoMCk7Ci19Ci0KLVRFU1RfUChJ
bmRleGVkUG9pbnRzVGVzdFVJbnQsIFVuc2lnbmVkSW50T2Zmc2V0MSkKLXsKLSAgICBpZiAoZ2V0
Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZWxl
bWVudF9pbmRleF91aW50IikpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
cnVuVGVzdCgxKTsKLX0KLQotVEVTVF9QKEluZGV4ZWRQb2ludHNUZXN0VUludCwgVW5zaWduZWRJ
bnRPZmZzZXQyKQotewotICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMgJiYgIWV4
dGVuc2lvbkVuYWJsZWQoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBydW5UZXN0KDIpOwotfQotCi1URVNUX1AoSW5kZXhl
ZFBvaW50c1Rlc3RVSW50LCBVbnNpZ25lZEludE9mZnNldDMpCi17Ci0gICAgaWYgKGdldENsaWVu
dE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2VsZW1lbnRf
aW5kZXhfdWludCIpKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHJ1blRl
c3QoMyk7Ci19Ci0KLVRFU1RfUChJbmRleGVkUG9pbnRzVGVzdFVJbnQsIFZlcnRleFdpdGhDb2xv
clVuc2lnbmVkSW50T2Zmc2V0MCkKLXsKLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkg
PCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpCi0g
ICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcnVuVGVzdCgwLCBmYWxzZSk7Ci19
Ci0KLVRFU1RfUChJbmRleGVkUG9pbnRzVGVzdFVJbnQsIFZlcnRleFdpdGhDb2xvclVuc2lnbmVk
SW50T2Zmc2V0MSkKLXsKLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFl
eHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpCi0gICAgewotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgcnVuVGVzdCgxLCBmYWxzZSk7Ci19Ci0KLVRFU1Rf
UChJbmRleGVkUG9pbnRzVGVzdFVJbnQsIFZlcnRleFdpdGhDb2xvclVuc2lnbmVkSW50T2Zmc2V0
MikKLXsKLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25F
bmFibGVkKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpCi0gICAgewotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgcnVuVGVzdCgyLCBmYWxzZSk7Ci19Ci0KLVRFU1RfUChJbmRleGVk
UG9pbnRzVGVzdFVJbnQsIFZlcnRleFdpdGhDb2xvclVuc2lnbmVkSW50T2Zmc2V0MykKLXsKLSAg
ICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJH
TF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgcnVuVGVzdCgzLCBmYWxzZSk7Ci19Ci0KLS8vIFRPRE8oZ2VvZmZsYW5nKTogRmln
dXJlIG91dCB3aHkgdGhpcyB0ZXN0IGZhaWxzIG9uIEludGVsIE9wZW5HTAotQU5HTEVfSU5TVEFO
VElBVEVfVEVTVChJbmRleGVkUG9pbnRzVGVzdFVCeXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX09QRU5HTEVTKCkpOwotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChJbmRleGVkUG9p
bnRzVGVzdFVTaG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygp
KTsKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoSW5kZXhlZFBvaW50c1Rlc3RVSW50LAotICAgICAg
ICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMy
X0QzRDExX0ZMOV8zKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0luc3RhbmNpbmdUZXN0LmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9JbnN0YW5jaW5nVGVz
dC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzM2Y5Njg5MjAwLi4wMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvSW5z
dGFuY2luZ1Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDY4ICswLDAgQEAKLS8vCi0vLyBD
b3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8v
Ci0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi11c2luZyBuYW1lc3BhY2Ug
YW5nbGU7Ci0KLWNsYXNzIEluc3RhbmNpbmdUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBw
cm90ZWN0ZWQ6Ci0gICAgSW5zdGFuY2luZ1Rlc3QoKSA6IG1Qcm9ncmFtKDApLCBtVmVydGV4QnVm
ZmVyKDApCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgyNTYpOwotICAgICAgICBzZXRX
aW5kb3dIZWlnaHQoMjU2KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAg
c2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAg
ICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgIH0KLQotICAgIH5JbnN0YW5jaW5nVGVz
dCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1WZXJ0ZXhC
dWZmZXIpOwotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotICAgIH0KLQotICAg
IHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgp
OwotCi0gICAgICAgIG1WZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUgPSBOVUxMOwotICAgICAgICBt
RHJhd0FycmF5c0luc3RhbmNlZEFOR0xFID0gTlVMTDsKLSAgICAgICAgbURyYXdFbGVtZW50c0lu
c3RhbmNlZEFOR0xFID0gTlVMTDsKLQotICAgICAgICBjaGFyICpleHRlbnNpb25TdHJpbmcgPSAo
Y2hhciopZ2xHZXRTdHJpbmcoR0xfRVhURU5TSU9OUyk7Ci0gICAgICAgIGlmIChzdHJzdHIoZXh0
ZW5zaW9uU3RyaW5nLCAiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyIpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBtVmVydGV4QXR0cmliRGl2aXNvckFOR0xFID0gKFBGTkdMVkVSVEVYQVRUUklC
RElWSVNPUkFOR0xFUFJPQyllZ2xHZXRQcm9jQWRkcmVzcygiZ2xWZXJ0ZXhBdHRyaWJEaXZpc29y
QU5HTEUiKTsKLSAgICAgICAgICAgIG1EcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgPSAoUEZOR0xE
UkFXQVJSQVlTSU5TVEFOQ0VEQU5HTEVQUk9DKWVnbEdldFByb2NBZGRyZXNzKCJnbERyYXdBcnJh
eXNJbnN0YW5jZWRBTkdMRSIpOwotICAgICAgICAgICAgbURyYXdFbGVtZW50c0luc3RhbmNlZEFO
R0xFID0gKFBGTkdMRFJBV0VMRU1FTlRTSU5TVEFOQ0VEQU5HTEVQUk9DKWVnbEdldFByb2NBZGRy
ZXNzKCJnbERyYXdFbGVtZW50c0luc3RhbmNlZEFOR0xFIik7Ci0gICAgICAgIH0KLQotICAgICAg
ICBBU1NFUlRfVFJVRShtVmVydGV4QXR0cmliRGl2aXNvckFOR0xFICE9IE5VTEwpOwotICAgICAg
ICBBU1NFUlRfVFJVRShtRHJhd0FycmF5c0luc3RhbmNlZEFOR0xFICE9IE5VTEwpOwotICAgICAg
ICBBU1NFUlRfVFJVRShtRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5HTEUgIT0gTlVMTCk7Ci0KLSAg
ICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgdmVydGV4IGFuZCBpbmRleCB2ZWN0b3JzCi0gICAgICAg
IEdMZmxvYXQgcXZlcnRleDFbM10gPSB7LXF1YWRSYWRpdXMsICBxdWFkUmFkaXVzLCAwLjBmfTsK
LSAgICAgICAgR0xmbG9hdCBxdmVydGV4MlszXSA9IHstcXVhZFJhZGl1cywgLXF1YWRSYWRpdXMs
IDAuMGZ9OwotICAgICAgICBHTGZsb2F0IHF2ZXJ0ZXgzWzNdID0geyBxdWFkUmFkaXVzLCAtcXVh
ZFJhZGl1cywgMC4wZn07Ci0gICAgICAgIEdMZmxvYXQgcXZlcnRleDRbM10gPSB7IHF1YWRSYWRp
dXMsICBxdWFkUmFkaXVzLCAwLjBmfTsKLSAgICAgICAgbVF1YWRWZXJ0aWNlcy5pbnNlcnQobVF1
YWRWZXJ0aWNlcy5lbmQoKSwgcXZlcnRleDEsIHF2ZXJ0ZXgxICsgMyk7Ci0gICAgICAgIG1RdWFk
VmVydGljZXMuaW5zZXJ0KG1RdWFkVmVydGljZXMuZW5kKCksIHF2ZXJ0ZXgyLCBxdmVydGV4MiAr
IDMpOwotICAgICAgICBtUXVhZFZlcnRpY2VzLmluc2VydChtUXVhZFZlcnRpY2VzLmVuZCgpLCBx
dmVydGV4MywgcXZlcnRleDMgKyAzKTsKLSAgICAgICAgbVF1YWRWZXJ0aWNlcy5pbnNlcnQobVF1
YWRWZXJ0aWNlcy5lbmQoKSwgcXZlcnRleDQsIHF2ZXJ0ZXg0ICsgMyk7Ci0KLSAgICAgICAgR0xm
bG9hdCBjb29yZDFbMl0gPSB7MC4wZiwgMC4wZn07Ci0gICAgICAgIEdMZmxvYXQgY29vcmQyWzJd
ID0gezAuMGYsIDEuMGZ9OwotICAgICAgICBHTGZsb2F0IGNvb3JkM1syXSA9IHsxLjBmLCAxLjBm
fTsKLSAgICAgICAgR0xmbG9hdCBjb29yZDRbMl0gPSB7MS4wZiwgMC4wZn07Ci0gICAgICAgIG1U
ZXhjb29yZHMuaW5zZXJ0KG1UZXhjb29yZHMuZW5kKCksIGNvb3JkMSwgY29vcmQxICsgMik7Ci0g
ICAgICAgIG1UZXhjb29yZHMuaW5zZXJ0KG1UZXhjb29yZHMuZW5kKCksIGNvb3JkMiwgY29vcmQy
ICsgMik7Ci0gICAgICAgIG1UZXhjb29yZHMuaW5zZXJ0KG1UZXhjb29yZHMuZW5kKCksIGNvb3Jk
MywgY29vcmQzICsgMik7Ci0gICAgICAgIG1UZXhjb29yZHMuaW5zZXJ0KG1UZXhjb29yZHMuZW5k
KCksIGNvb3JkNCwgY29vcmQ0ICsgMik7Ci0KLSAgICAgICAgbUluZGljZXMucHVzaF9iYWNrKDAp
OwotICAgICAgICBtSW5kaWNlcy5wdXNoX2JhY2soMSk7Ci0gICAgICAgIG1JbmRpY2VzLnB1c2hf
YmFjaygyKTsKLSAgICAgICAgbUluZGljZXMucHVzaF9iYWNrKDApOwotICAgICAgICBtSW5kaWNl
cy5wdXNoX2JhY2soMik7Ci0gICAgICAgIG1JbmRpY2VzLnB1c2hfYmFjaygzKTsKLQotICAgICAg
ICBmb3IgKHNpemVfdCB2ZXJ0ZXhJbmRleCA9IDA7IHZlcnRleEluZGV4IDwgNjsgKyt2ZXJ0ZXhJ
bmRleCkKLSAgICAgICAgewotICAgICAgICAgICAgbU5vbkluZGV4ZWRWZXJ0aWNlcy5pbnNlcnQo
bU5vbkluZGV4ZWRWZXJ0aWNlcy5lbmQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1RdWFkVmVydGljZXMuYmVnaW4oKSArIG1JbmRpY2VzW3ZlcnRleEluZGV4XSAq
IDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUXVhZFZlcnRpY2Vz
LmJlZ2luKCkgKyBtSW5kaWNlc1t2ZXJ0ZXhJbmRleF0gKiAzICsgMyk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBmb3IgKHNpemVfdCB2ZXJ0ZXhJbmRleCA9IDA7IHZlcnRleEluZGV4IDwgNjsgKyt2
ZXJ0ZXhJbmRleCkKLSAgICAgICAgewotICAgICAgICAgICAgbU5vbkluZGV4ZWRWZXJ0aWNlcy5p
bnNlcnQobU5vbkluZGV4ZWRWZXJ0aWNlcy5lbmQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1RdWFkVmVydGljZXMuYmVnaW4oKSArIG1JbmRpY2VzW3ZlcnRleElu
ZGV4XSAqIDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUXVhZFZl
cnRpY2VzLmJlZ2luKCkgKyBtSW5kaWNlc1t2ZXJ0ZXhJbmRleF0gKiAzICsgMyk7Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBUaWxlIGEgMngyIGdyaWQgb2YgdGhlIHRpbGVzCi0gICAgICAgIGZv
ciAoZmxvYXQgeSA9IC0xLjBmICsgcXVhZFJhZGl1czsgeSA8IDEuMGYgLSBxdWFkUmFkaXVzOyB5
ICs9IHF1YWRSYWRpdXMgKiAzKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKGZsb2F0IHgg
PSAtMS4wZiArIHF1YWRSYWRpdXM7IHggPCAxLjBmIC0gcXVhZFJhZGl1czsgeCArPSBxdWFkUmFk
aXVzICogMykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBHTGZsb2F0IGluc3RhbmNl
WzNdID0ge3ggKyBxdWFkUmFkaXVzLCB5ICsgcXVhZFJhZGl1cywgMC4wZn07Ci0gICAgICAgICAg
ICAgICAgbUluc3RhbmNlcy5pbnNlcnQobUluc3RhbmNlcy5lbmQoKSwgaW5zdGFuY2UsIGluc3Rh
bmNlICsgMyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBnbENsZWFyQ29s
b3IoMC4wZiwgMC4wZiwgMC4wZiwgMS4wZik7Ci0KLSAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZt
VmVydGV4QnVmZmVyKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0K
LSAgICB2b2lkIHNldHVwRHJhd0FycmF5c1Rlc3QoY29uc3Qgc3RkOjpzdHJpbmcgJnZzKQotICAg
IHsKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnMgPSBTSEFERVJfU09VUkNFCi0gICAgICAg
ICgKLSAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICAgICAgdm9p
ZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2
ZWM0KDEuMCwgMCwgMCwgMS4wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAg
ICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzLCBmcyk7Ci0gICAgICAgIEFTU0VSVF9ORSgw
dSwgbVByb2dyYW0pOwotCi0gICAgICAgIC8vIFNldCB0aGUgdmlld3BvcnQKLSAgICAgICAgZ2xW
aWV3cG9ydCgwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0KLSAg
ICAgICAgLy8gQ2xlYXIgdGhlIGNvbG9yIGJ1ZmZlcgotICAgICAgICBnbENsZWFyKEdMX0NPTE9S
X0JVRkZFUl9CSVQpOwotCi0gICAgICAgIC8vIFVzZSB0aGUgcHJvZ3JhbSBvYmplY3QKLSAgICAg
ICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldHVwSW5zdGFu
Y2VkUG9pbnRzVGVzdCgpCi0gICAgewotICAgICAgICBtSW5kaWNlcy5jbGVhcigpOwotICAgICAg
ICBtSW5kaWNlcy5wdXNoX2JhY2soMCk7Ci0gICAgICAgIG1JbmRpY2VzLnB1c2hfYmFjaygxKTsK
LSAgICAgICAgbUluZGljZXMucHVzaF9iYWNrKDIpOwotICAgICAgICBtSW5kaWNlcy5wdXNoX2Jh
Y2soMyk7Ci0KLSAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyB2cyA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgYXR0cmli
dXRlIHZlYzMgYV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGF0dHJpYnV0ZSB2ZWMzIGFfaW5zdGFu
Y2VQb3M7Ci0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGdsX1Bvc2l0aW9uICA9IHZlYzQoYV9wb3NpdGlvbi54eXosIDEuMCk7Ci0gICAgICAg
ICAgICAgICAgZ2xfUG9zaXRpb24gID0gdmVjNChhX2luc3RhbmNlUG9zLnh5eiwgMS4wKTsKLSAg
ICAgICAgICAgICAgICBnbF9Qb2ludFNpemUgPSA2LjA7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnMgPSBTSEFERVJfU09VUkNFCi0gICAg
ICAgICgKLSAgICAgICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICAgICAg
dm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3Ig
PSB2ZWM0KDEuMCwgMCwgMCwgMS4wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLSAgICAg
ICAgLy8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3Jh
bSh2cywgZnMpOwotICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKLQotICAgICAgICAv
LyBTZXQgdGhlIHZpZXdwb3J0Ci0gICAgICAgIGdsVmlld3BvcnQoMCwgMCwgZ2V0V2luZG93V2lk
dGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotCi0gICAgICAgIC8vIENsZWFyIHRoZSBjb2xvciBi
dWZmZXIKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLQotICAgICAgICAv
LyBVc2UgdGhlIHByb2dyYW0gb2JqZWN0Ci0gICAgICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7
Ci0gICAgfQotCi0gICAgdm9pZCBydW5EcmF3QXJyYXlzVGVzdChHTGludCBmaXJzdCwgR0xzaXpl
aSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZUNvdW50LCBmbG9hdCAqb2Zmc2V0KQotICAgIHsKLSAg
ICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVZlcnRleEJ1ZmZlcik7Ci0gICAg
ICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIG1JbnN0YW5jZXMuc2l6ZSgpICogc2l6
ZW9mKG1JbnN0YW5jZXNbMF0pLCAmbUluc3RhbmNlc1swXSwgR0xfU1RBVElDX0RSQVcpOwotICAg
ICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKLQotICAgICAgICAvLyBHZXQg
dGhlIGF0dHJpYnV0ZSBsb2NhdGlvbnMKLSAgICAgICAgR0xpbnQgcG9zaXRpb25Mb2MgICAgPSBn
bEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiYV9wb3NpdGlvbiIpOwotICAgICAgICBHTGlu
dCBpbnN0YW5jZVBvc0xvYyA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJhX2luc3Rh
bmNlUG9zIik7Ci0KLSAgICAgICAgLy8gTG9hZCB0aGUgdmVydGV4IHBvc2l0aW9uCi0gICAgICAg
IGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvYywgMywgR0xfRkxPQVQsIEdMX0ZBTFNF
LCAwLCBtTm9uSW5kZXhlZFZlcnRpY2VzLmRhdGEoKSk7Ci0gICAgICAgIGdsRW5hYmxlVmVydGV4
QXR0cmliQXJyYXkocG9zaXRpb25Mb2MpOwotCi0gICAgICAgIC8vIExvYWQgdGhlIGluc3RhbmNl
IHBvc2l0aW9uCi0gICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1WZXJ0ZXhC
dWZmZXIpOwotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoaW5zdGFuY2VQb3NMb2MsIDMs
IEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgMCk7Ci0gICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJB
WV9CVUZGRVIsIDApOwotICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGluc3RhbmNl
UG9zTG9jKTsKLQotICAgICAgICAvLyBFbmFibGUgaW5zdGFuY2luZwotICAgICAgICBtVmVydGV4
QXR0cmliRGl2aXNvckFOR0xFKGluc3RhbmNlUG9zTG9jLCAxKTsKLQotICAgICAgICAvLyBPZmZz
ZXQKLSAgICAgICAgR0xpbnQgdW5pZm9ybUxvYyA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9n
cmFtLCAidV9vZmZzZXQiKTsKLSAgICAgICAgQVNTRVJUX05FKHVuaWZvcm1Mb2MsIC0xKTsKLSAg
ICAgICAgZ2xVbmlmb3JtM2Z2KHVuaWZvcm1Mb2MsIDEsIG9mZnNldCk7Ci0KLSAgICAgICAgLy8g
RG8gdGhlIGluc3RhbmNlZCBkcmF3Ci0gICAgICAgIG1EcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUo
R0xfVFJJQU5HTEVTLCBmaXJzdCwgY291bnQsIGluc3RhbmNlQ291bnQpOwotCi0gICAgICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBydW5EcmF3RWxl
bWVudHNUZXN0KHN0ZDo6c3RyaW5nIHZzLCBib29sIHNob3VsZEF0dHJpYlplcm9CZUluc3RhbmNl
ZCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzID0gU0hBREVSX1NPVVJDRQot
ICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLSAgICAgICAg
ICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfRnJhZ0Nv
bG9yID0gdmVjNCgxLjAsIDAsIDAsIDEuMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0K
LSAgICAgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2cywgZnMpOwotICAgICAg
ICBBU1NFUlRfTkUocHJvZ3JhbSwgMHUpOwotCi0gICAgICAgIC8vIEdldCB0aGUgYXR0cmlidXRl
IGxvY2F0aW9ucwotICAgICAgICBHTGludCBwb3NpdGlvbkxvYyA9IGdsR2V0QXR0cmliTG9jYXRp
b24ocHJvZ3JhbSwgImFfcG9zaXRpb24iKTsKLSAgICAgICAgR0xpbnQgaW5zdGFuY2VQb3NMb2Mg
PSBnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0sICJhX2luc3RhbmNlUG9zIik7Ci0KLSAgICAg
ICAgLy8gSWYgdGhpcyBBU1NFUlQgZmFpbHMgdGhlbiB0aGUgdmVydGV4IHNoYWRlciBjb2RlIHNo
b3VsZCBiZSByZWZhY3RvcmVkCi0gICAgICAgIEFTU0VSVF9FUShzaG91bGRBdHRyaWJaZXJvQmVJ
bnN0YW5jZWQsIChpbnN0YW5jZVBvc0xvYyA9PSAwKSk7Ci0KLSAgICAgICAgLy8gU2V0IHRoZSB2
aWV3cG9ydAotICAgICAgICBnbFZpZXdwb3J0KDAsIDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdp
bmRvd0hlaWdodCgpKTsKLQotICAgICAgICAvLyBDbGVhciB0aGUgY29sb3IgYnVmZmVyCi0gICAg
ICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICAgICAgLy8gVXNlIHRoZSBw
cm9ncmFtIG9iamVjdAotICAgICAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7Ci0KLSAgICAgICAg
Ly8gTG9hZCB0aGUgdmVydGV4IHBvc2l0aW9uCi0gICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRl
cihwb3NpdGlvbkxvYywgMywgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBtUXVhZFZlcnRpY2VzLmRh
dGEoKSk7Ci0gICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2MpOwot
Ci0gICAgICAgIC8vIExvYWQgdGhlIGluc3RhbmNlIHBvc2l0aW9uCi0gICAgICAgIGdsVmVydGV4
QXR0cmliUG9pbnRlcihpbnN0YW5jZVBvc0xvYywgMywgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBt
SW5zdGFuY2VzLmRhdGEoKSk7Ci0gICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5z
dGFuY2VQb3NMb2MpOwotCi0gICAgICAgIC8vIEVuYWJsZSBpbnN0YW5jaW5nCi0gICAgICAgIG1W
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5zdGFuY2VQb3NMb2MsIDEpOwotCi0gICAgICAgIC8v
IERvIHRoZSBpbnN0YW5jZWQgZHJhdwotICAgICAgICBtRHJhd0VsZW1lbnRzSW5zdGFuY2VkQU5H
TEUoR0xfVFJJQU5HTEVTLCBzdGF0aWNfY2FzdDxHTHNpemVpPihtSW5kaWNlcy5zaXplKCkpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfU0hPUlQsIG1J
bmRpY2VzLmRhdGEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEdMc2l6ZWk+KG1JbnN0YW5jZXMuc2l6ZSgpKSAvIDMpOwotCi0gICAgICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIGNoZWNrUXVhZHMoKTsKLSAgICB9Ci0KLSAgICB2
b2lkIGNoZWNrUXVhZHMoKQotICAgIHsKLSAgICAgICAgLy8gQ2hlY2sgdGhhdCB2YXJpb3VzIHBp
eGVscyBhcmUgdGhlIGV4cGVjdGVkIGNvbG9yLgotICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBx
dWFkSW5kZXggPSAwOyBxdWFkSW5kZXggPCA0OyArK3F1YWRJbmRleCkKLSAgICAgICAgewotICAg
ICAgICAgICAgdW5zaWduZWQgaW50IGJhc2VPZmZzZXQgPSBxdWFkSW5kZXggKiAzOwotCi0gICAg
ICAgICAgICBpbnQgcXVhZHggPSBzdGF0aWNfY2FzdDxpbnQ+KCgobUluc3RhbmNlc1tiYXNlT2Zm
c2V0ICsgMF0pICogMC41ZiArIDAuNWYpICogZ2V0V2luZG93V2lkdGgoKSk7Ci0gICAgICAgICAg
ICBpbnQgcXVhZHkgPSBzdGF0aWNfY2FzdDxpbnQ+KCgobUluc3RhbmNlc1tiYXNlT2Zmc2V0ICsg
MV0pICogMC41ZiArIDAuNWYpICogZ2V0V2luZG93SGVpZ2h0KCkpOwotCi0gICAgICAgICAgICBF
WFBFQ1RfUElYRUxfRVEocXVhZHgsIHF1YWR5LCAyNTUsIDAsIDAsIDI1NSk7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICAvLyBMb2FkZWQgZW50cnkgcG9pbnRzCi0gICAgUEZOR0xWRVJURVhBVFRS
SUJESVZJU09SQU5HTEVQUk9DIG1WZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEU7Ci0gICAgUEZOR0xE
UkFXQVJSQVlTSU5TVEFOQ0VEQU5HTEVQUk9DIG1EcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEU7Ci0g
ICAgUEZOR0xEUkFXRUxFTUVOVFNJTlNUQU5DRURBTkdMRVBST0MgbURyYXdFbGVtZW50c0luc3Rh
bmNlZEFOR0xFOwotCi0gICAgLy8gVmVydGV4IGRhdGEKLSAgICBzdGQ6OnZlY3RvcjxHTGZsb2F0
PiBtUXVhZFZlcnRpY2VzOwotICAgIHN0ZDo6dmVjdG9yPEdMZmxvYXQ+IG1Ob25JbmRleGVkVmVy
dGljZXM7Ci0gICAgc3RkOjp2ZWN0b3I8R0xmbG9hdD4gbVRleGNvb3JkczsKLSAgICBzdGQ6OnZl
Y3RvcjxHTGZsb2F0PiBtSW5zdGFuY2VzOwotICAgIHN0ZDo6dmVjdG9yPEdMdXNob3J0PiBtSW5k
aWNlczsKLQotICAgIGNvbnN0IEdMZmxvYXQgcXVhZFJhZGl1cyA9IDAuMzBmOwotCi0gICAgR0x1
aW50IG1Qcm9ncmFtOwotICAgIEdMdWludCBtVmVydGV4QnVmZmVyOwotfTsKLQotY2xhc3MgSW5z
dGFuY2luZ1Rlc3RBbGxDb25maWdzIDogcHVibGljIEluc3RhbmNpbmdUZXN0Ci17Ci0gIHByb3Rl
Y3RlZDoKLSAgICBJbnN0YW5jaW5nVGVzdEFsbENvbmZpZ3MoKSB7fQotfTsKLQotY2xhc3MgSW5z
dGFuY2luZ1Rlc3RObzlfMyA6IHB1YmxpYyBJbnN0YW5jaW5nVGVzdAotewotICBwcm90ZWN0ZWQ6
Ci0gICAgSW5zdGFuY2luZ1Rlc3RObzlfMygpIHt9Ci19OwotCi1jbGFzcyBJbnN0YW5jaW5nVGVz
dFBvaW50cyA6IHB1YmxpYyBJbnN0YW5jaW5nVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgSW5z
dGFuY2luZ1Rlc3RQb2ludHMoKSB7fQotfTsKLQotLy8gVGhpcyB0ZXN0IHVzZXMgYSB2ZXJ0ZXgg
c2hhZGVyIHdpdGggdGhlIGZpcnN0IGF0dHJpYnV0ZSAoYXR0cmlidXRlIHplcm8pIGluc3RhbmNl
ZC4KLS8vIE9uIEQzRDkgYW5kIEQzRDExIEZMOV8zLCB0aGlzIHRyaWdnZXJzIGEgc3BlY2lhbCBj
b2RlcGF0aCB0aGF0IHJlYXJyYW5nZXMgdGhlIGlucHV0IGxheW91dCBzZW50IHRvIEQzRCwKLS8v
IHRvIGVuc3VyZSB0aGF0IHNsb3Qvc3RyZWFtIHplcm8gb2YgdGhlIGlucHV0IGxheW91dCBkb2Vz
bid0IGNvbnRhaW4gcGVyLWluc3RhbmNlIGRhdGEuCi1URVNUX1AoSW5zdGFuY2luZ1Rlc3RBbGxD
b25maWdzLCBBdHRyaWJ1dGVaZXJvSW5zdGFuY2VkKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IHZzID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgYXR0cmlidXRlIHZlYzMgYV9pbnN0
YW5jZVBvczsKLSAgICAgICAgYXR0cmlidXRlIHZlYzMgYV9wb3NpdGlvbjsKLSAgICAgICAgdm9p
ZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFfcG9z
aXRpb24ueHl6ICsgYV9pbnN0YW5jZVBvcy54eXosIDEuMCk7Ci0gICAgICAgIH0KLSAgICApOwot
Ci0gICAgcnVuRHJhd0VsZW1lbnRzVGVzdCh2cywgdHJ1ZSk7Ci19Ci0KLS8vIFNhbWUgYXMgQXR0
cmlidXRlWmVyb0luc3RhbmNlZCwgYnV0IGF0dHJpYnV0ZSB6ZXJvIGlzIG5vdCBpbnN0YW5jZWQu
Ci0vLyBUaGlzIGVuc3VyZXMgdGhlIGdlbmVyYWwgaW5zdGFuY2luZyBjb2RlcGF0aCAoaS5lLiB3
aXRob3V0IHJlYXJyYW5naW5nIHRoZSBpbnB1dCBsYXlvdXQpIHdvcmtzIGFzIGV4cGVjdGVkLgot
VEVTVF9QKEluc3RhbmNpbmdUZXN0QWxsQ29uZmlncywgQXR0cmlidXRlWmVyb05vdEluc3RhbmNl
ZCkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyB2cyA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0g
ICAgICAgIGF0dHJpYnV0ZSB2ZWMzIGFfcG9zaXRpb247Ci0gICAgICAgIGF0dHJpYnV0ZSB2ZWMz
IGFfaW5zdGFuY2VQb3M7Ci0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhX3Bvc2l0aW9uLnh5eiArIGFfaW5zdGFuY2VQb3MueHl6
LCAxLjApOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIHJ1bkRyYXdFbGVtZW50c1Rlc3QodnMs
IGZhbHNlKTsKLX0KLQotLy8gVGVzdHMgdGhhdCB0aGUgImZpcnN0IiBwYXJhbWV0ZXIgdG8gZ2xE
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUgaXMgb25seSBhbiBvZmZzZXQgaW50bwotLy8gdGhlIG5v
bi1pbnN0YW5jZWQgdmVydGV4IGF0dHJpYnV0ZXMuCi1URVNUX1AoSW5zdGFuY2luZ1Rlc3RObzlf
MywgRHJhd0FycmF5c1dpdGhPZmZzZXQpCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgdnMgPSBT
SEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBhdHRyaWJ1dGUgdmVjMyBhX3Bvc2l0aW9uOwot
ICAgICAgICBhdHRyaWJ1dGUgdmVjMyBhX2luc3RhbmNlUG9zOwotICAgICAgICB1bmlmb3JtIHZl
YzMgdV9vZmZzZXQ7Ci0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGdsX1Bvc2l0aW9uID0gdmVjNChhX3Bvc2l0aW9uLnh5eiArIGFfaW5zdGFuY2VQb3MueHl6ICsg
dV9vZmZzZXQsIDEuMCk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgc2V0dXBEcmF3QXJyYXlz
VGVzdCh2cyk7Ci0KLSAgICBmbG9hdCBvZmZzZXQxWzNdID0geyAwLCAwLCAwIH07Ci0gICAgcnVu
RHJhd0FycmF5c1Rlc3QoMCwgNiwgMiwgb2Zmc2V0MSk7Ci0KLSAgICBmbG9hdCBvZmZzZXQyWzNd
ID0geyAwLjBmLCAxLjBmLCAwIH07Ci0gICAgcnVuRHJhd0FycmF5c1Rlc3QoNiwgNiwgMiwgb2Zm
c2V0Mik7Ci0KLSAgICBjaGVja1F1YWRzKCk7Ci19Ci0KLS8vIFRoaXMgdGVzdCB2ZXJpZmllcyBp
bnN0YW5jaW5nIHdpdGggR0xfUE9JTlRTIHdpdGggZ2xEcmF3QXJyYXlzSW5zdGFuY2VkIHdvcmtz
LgotLy8gT24gRDNEMTEgRkw5XzMsIHRoaXMgdHJpZ2dlcnMgYSBzcGVjaWFsIGNvZGVwYXRoIHRo
YXQgZW11bGF0ZXMgaW5zdGFuY2VkIHBvaW50cyByZW5kZXJpbmcuCi1URVNUX1AoSW5zdGFuY2lu
Z1Rlc3RQb2ludHMsIERyYXdBcnJheXMpCi17Ci0gICAgLy8gRGlzYWJsZSBEM0QxMSBTREsgTGF5
ZXJzIHdhcm5pbmdzIGNoZWNrcywgc2VlIEFOR0xFIGlzc3VlIDY2NyBmb3IgZGV0YWlscwotICAg
IC8vIE9uIFdpbjcsIHRoZSBEM0QgU0RLIExheWVycyBlbWl0cyBhIGZhbHNlIHdhcm5pbmcgZm9y
IHRoZXNlIHRlc3RzLgotICAgIC8vIFRoaXMgZG9lc24ndCBvY2N1ciBvbiBXaW5kb3dzIDEwIChW
ZXJzaW9uIDE1MTEpIHRob3VnaC4KLSAgICBpZ25vcmVEM0QxMVNES0xheWVyc1dhcm5pbmdzKCk7
Ci0KLSAgICBzZXR1cEluc3RhbmNlZFBvaW50c1Rlc3QoKTsKLQotICAgIGdsQmluZEJ1ZmZlcihH
TF9BUlJBWV9CVUZGRVIsIG1WZXJ0ZXhCdWZmZXIpOwotICAgIGdsQnVmZmVyRGF0YShHTF9BUlJB
WV9CVUZGRVIsIG1JbnN0YW5jZXMuc2l6ZSgpICogc2l6ZW9mKG1JbnN0YW5jZXNbMF0pLCAmbUlu
c3RhbmNlc1swXSwKLSAgICAgICAgICAgICAgICAgR0xfU1RBVElDX0RSQVcpOwotICAgIGdsQmlu
ZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDApOwotCi0gICAgLy8gR2V0IHRoZSBhdHRyaWJ1dGUg
bG9jYXRpb25zCi0gICAgR0xpbnQgcG9zaXRpb25Mb2MgICAgPSBnbEdldEF0dHJpYkxvY2F0aW9u
KG1Qcm9ncmFtLCAiYV9wb3NpdGlvbiIpOwotICAgIEdMaW50IGluc3RhbmNlUG9zTG9jID0gZ2xH
ZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImFfaW5zdGFuY2VQb3MiKTsKLQotICAgIC8vIExv
YWQgdGhlIHZlcnRleCBwb3NpdGlvbgotICAgIEdMZmxvYXQgcG9zWzNdID0gezAsIDAsIDB9Owot
ICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvYywgMywgR0xfRkxPQVQsIEdMX0ZB
TFNFLCAwLCBwb3MpOwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2Mp
OwotCi0gICAgLy8gTG9hZCB0aGUgaW5zdGFuY2UgcG9zaXRpb24KLSAgICBnbEJpbmRCdWZmZXIo
R0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4QnVmZmVyKTsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50
ZXIoaW5zdGFuY2VQb3NMb2MsIDMsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgMCk7Ci0gICAgZ2xC
aW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShpbnN0YW5jZVBvc0xvYyk7Ci0KLSAgICAvLyBFbmFibGUgaW5zdGFuY2luZwotICAgIG1W
ZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEUoaW5zdGFuY2VQb3NMb2MsIDEpOwotCi0gICAgLy8gRG8g
dGhlIGluc3RhbmNlZCBkcmF3Ci0gICAgbURyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHTF9QT0lO
VFMsIDAsIDEsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1JbnN0YW5jZXMuc2l6ZSgpKSAvIDMpOwot
Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBjaGVja1F1YWRzKCk7Ci19Ci0KLS8v
IFRoaXMgdGVzdCB2ZXJpZmllcyBpbnN0YW5jaW5nIHdpdGggR0xfUE9JTlRTIHdpdGggZ2xEcmF3
RWxlbWVudHNJbnN0YW5jZWQgd29ya3MuCi0vLyBPbiBEM0QxMSBGTDlfMywgdGhpcyB0cmlnZ2Vy
cyBhIHNwZWNpYWwgY29kZXBhdGggdGhhdCBlbXVsYXRlcyBpbnN0YW5jZWQgcG9pbnRzIHJlbmRl
cmluZy4KLVRFU1RfUChJbnN0YW5jaW5nVGVzdFBvaW50cywgRHJhd0VsZW1lbnRzKQotewotICAg
IC8vIERpc2FibGUgRDNEMTEgU0RLIExheWVycyB3YXJuaW5ncyBjaGVja3MsIHNlZSBBTkdMRSBp
c3N1ZSA2NjcgZm9yIGRldGFpbHMKLSAgICAvLyBPbiBXaW43LCB0aGUgRDNEIFNESyBMYXllcnMg
ZW1pdHMgYSBmYWxzZSB3YXJuaW5nIGZvciB0aGVzZSB0ZXN0cy4KLSAgICAvLyBUaGlzIGRvZXNu
J3Qgb2NjdXIgb24gV2luZG93cyAxMCAoVmVyc2lvbiAxNTExKSB0aG91Z2guCi0gICAgaWdub3Jl
RDNEMTFTREtMYXllcnNXYXJuaW5ncygpOwotCi0gICAgc2V0dXBJbnN0YW5jZWRQb2ludHNUZXN0
KCk7Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVmVydGV4QnVmZmVyKTsK
LSAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBtSW5zdGFuY2VzLnNpemUoKSAqIHNp
emVvZihtSW5zdGFuY2VzWzBdKSwgJm1JbnN0YW5jZXNbMF0sCi0gICAgICAgICAgICAgICAgIEdM
X1NUQVRJQ19EUkFXKTsKLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKLQot
ICAgIC8vIEdldCB0aGUgYXR0cmlidXRlIGxvY2F0aW9ucwotICAgIEdMaW50IHBvc2l0aW9uTG9j
ICAgID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImFfcG9zaXRpb24iKTsKLSAgICBH
TGludCBpbnN0YW5jZVBvc0xvYyA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJhX2lu
c3RhbmNlUG9zIik7Ci0KLSAgICAvLyBMb2FkIHRoZSB2ZXJ0ZXggcG9zaXRpb24KLSAgICBHTGZs
b2F0IHBvc1szXSA9IHswLCAwLCAwfTsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRp
b25Mb2MsIDMsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgcG9zKTsKLSAgICBnbEVuYWJsZVZlcnRl
eEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jKTsKLQotICAgIC8vIExvYWQgdGhlIGluc3RhbmNlIHBv
c2l0aW9uCi0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVZlcnRleEJ1ZmZlcik7
Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGluc3RhbmNlUG9zTG9jLCAzLCBHTF9GTE9BVCwg
R0xfRkFMU0UsIDAsIDApOwotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDApOwot
ICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoaW5zdGFuY2VQb3NMb2MpOwotCi0gICAgLy8g
RW5hYmxlIGluc3RhbmNpbmcKLSAgICBtVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGluc3RhbmNl
UG9zTG9jLCAxKTsKLQotICAgIC8vIERvIHRoZSBpbnN0YW5jZWQgZHJhdwotICAgIG1EcmF3RWxl
bWVudHNJbnN0YW5jZWRBTkdMRShHTF9QT0lOVFMsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1JbmRp
Y2VzLnNpemUoKSksIEdMX1VOU0lHTkVEX1NIT1JULAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtSW5kaWNlcy5kYXRhKCksIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1JbnN0YW5jZXMu
c2l6ZSgpKSAvIDMpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBjaGVja1F1
YWRzKCk7Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAo
ZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0
cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi0vLyBXZSB0ZXN0IG9uIEQzRDkgYW5kIEQzRDExIDlf
MyBiZWNhdXNlIHRoZXkgdXNlIHNwZWNpYWwgY29kZXBhdGhzIHdoZW4gYXR0cmlidXRlIHplcm8g
aXMgaW5zdGFuY2VkLCB1bmxpa2UgRDNEMTEuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKEluc3Rh
bmNpbmdUZXN0QWxsQ29uZmlncywKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgIEVTMl9EM0QxMV9GTDlfMygpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdM
KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpKTsKLQotLy8gVE9ETyhq
bWFkaWxsKTogRmlndXJlIG91dCB0aGUgc2l0dWF0aW9uIHdpdGggRHJhd0luc3RhbmNlZCBvbiBG
TCA5XzMKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoSW5zdGFuY2luZ1Rlc3RObzlfMywgRVMyX0Qz
RDkoKSwgRVMyX0QzRDExKCkpOwotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKEluc3RhbmNpbmdU
ZXN0UG9pbnRzLCBFUzJfRDNEMTEoKSwgRVMyX0QzRDExX0ZMOV8zKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL0xpbmVMb29wVGVzdC5j
cHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvTGluZUxvb3BU
ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc4ZmVlOWZlMjUuLjAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9M
aW5lTG9vcFRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjI2ICswLDAgQEAKLS8vCi0vLyBD
b3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8v
Ci0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi11c2luZyBuYW1lc3BhY2Ug
YW5nbGU7Ci0KLWNsYXNzIExpbmVMb29wVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJv
dGVjdGVkOgotICAgIExpbmVMb29wVGVzdCgpCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0
aCgyNTYpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMjU2KTsKLSAgICAgICAgc2V0Q29uZmln
UmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRD
b25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgIH0K
LQotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNl
dFVwKCk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdnNTb3VyY2UgPSBTSEFERVJfU09V
UkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIGF0dHJpYnV0ZSBoaWdocCB2ZWM0IHBvc2l0aW9u
OwotCi0gICAgICAgICAgICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAgICAgICAgfQotICAgICAgICAp
OwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZzU291cmNlID0gU0hBREVSX1NPVVJDRQot
ICAgICAgICAoCi0gICAgICAgICAgICB1bmlmb3JtIGhpZ2hwIHZlYzQgY29sb3I7Ci0gICAgICAg
ICAgICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9G
cmFnQ29sb3IgPSBjb2xvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBt
UHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzU291cmNlLCBmc1NvdXJjZSk7Ci0gICAgICAgIGlm
IChtUHJvZ3JhbSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBGQUlMKCkgPDwgInNoYWRl
ciBjb21waWxhdGlvbiBmYWlsZWQuIjsKLSAgICAgICAgfQotCi0gICAgICAgIG1Qb3NpdGlvbkxv
Y2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInBvc2l0aW9uIik7Ci0gICAg
ICAgIG1Db2xvckxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJjb2xv
ciIpOwotCi0gICAgICAgIGdsQmxlbmRGdW5jKEdMX09ORSwgR0xfT05FKTsKLSAgICAgICAgZ2xF
bmFibGUoR0xfQkxFTkQpOwotICAgICAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwg
MS4wZik7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdmly
dHVhbCB2b2lkIFRlYXJEb3duKCkKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJv
Z3JhbSk7Ci0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQotICAgIHZv
aWQgcnVuVGVzdChHTGVudW0gaW5kZXhUeXBlLCBHTHVpbnQgaW5kZXhCdWZmZXIsIGNvbnN0IEdM
dm9pZCAqaW5kZXhQdHIpCi0gICAgewotICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9C
SVQpOwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBHTGZsb2F0IGxvb3BQb3NpdGlvbnNbXSA9Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgICAwLjBmLCAgMC4wZiwKLSAgICAgICAgICAgICAwLjBmLCAg
MC4wZiwKLSAgICAgICAgICAgICAwLjBmLCAgMC4wZiwKLSAgICAgICAgICAgICAwLjBmLCAgMC4w
ZiwKLSAgICAgICAgICAgICAwLjBmLCAgMC4wZiwKLSAgICAgICAgICAgICAwLjBmLCAgMC4wZiwK
LSAgICAgICAgICAgIC0wLjVmLCAtMC41ZiwKLSAgICAgICAgICAgIC0wLjVmLCAgMC41ZiwKLSAg
ICAgICAgICAgICAwLjVmLCAgMC41ZiwKLSAgICAgICAgICAgICAwLjVmLCAtMC41ZgotICAgICAg
ICB9OwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBHTGZsb2F0IHN0cmlwUG9zaXRpb25zW10gPQot
ICAgICAgICB7Ci0gICAgICAgICAgICAtMC41ZiwgLTAuNWYsCi0gICAgICAgICAgICAtMC41Ziwg
IDAuNWYsCi0gICAgICAgICAgICAgMC41ZiwgIDAuNWYsCi0gICAgICAgICAgICAgMC41ZiwgLTAu
NWYKLSAgICAgICAgfTsKLSAgICAgICAgc3RhdGljIGNvbnN0IEdMdWJ5dGUgc3RyaXBJbmRpY2Vz
W10gPQotICAgICAgICB7Ci0gICAgICAgICAgICAxLCAwLCAzLCAyLCAxCi0gICAgICAgIH07Ci0K
LSAgICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdM
X0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBpbmRleEJ1ZmZlcik7Ci0gICAgICAgIGdsRW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkobVBvc2l0aW9uTG9jYXRpb24pOwotICAgICAgICBnbFZlcnRleEF0dHJp
YlBvaW50ZXIobVBvc2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgbG9v
cFBvc2l0aW9ucyk7Ci0gICAgICAgIGdsVW5pZm9ybTRmKG1Db2xvckxvY2F0aW9uLCAwLjBmLCAw
LjBmLCAxLjBmLCAxLjBmKTsKLSAgICAgICAgZ2xEcmF3RWxlbWVudHMoR0xfTElORV9MT09QLCA0
LCBpbmRleFR5cGUsIGluZGV4UHRyKTsKLQotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIDApOwotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobVBvc2l0
aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgc3RyaXBQb3NpdGlvbnMpOwot
ICAgICAgICBnbFVuaWZvcm00ZihtQ29sb3JMb2NhdGlvbiwgMCwgMSwgMCwgMSk7Ci0gICAgICAg
IGdsRHJhd0VsZW1lbnRzKEdMX0xJTkVfU1RSSVAsIDUsIEdMX1VOU0lHTkVEX0JZVEUsIHN0cmlw
SW5kaWNlcyk7Ci0KLSAgICAgICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gcGl4ZWxzKGdldFdpbmRv
d1dpZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSAqIDQpOwotICAgICAgICBnbFJlYWRQaXhlbHMo
MCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIEdMX1JHQkEsIEdMX1VO
U0lHTkVEX0JZVEUsICZwaXhlbHNbMF0pOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OwotCi0gICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgZ2V0V2luZG93SGVpZ2h0KCk7IHkrKykK
LSAgICAgICAgewotICAgICAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCBnZXRXaW5kb3dXaWR0
aCgpOyB4KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSog
cGl4ZWwgPSAmcGl4ZWxzWzBdICsgKCh5ICogZ2V0V2luZG93V2lkdGgoKSArIHgpICogNCk7Ci0K
LSAgICAgICAgICAgICAgICBFWFBFQ1RfRVEocGl4ZWxbMF0sIDApOwotICAgICAgICAgICAgICAg
IEVYUEVDVF9FUShwaXhlbFsxXSwgcGl4ZWxbMl0pOwotICAgICAgICAgICAgICAgIEVYUEVDVF9F
UShwaXhlbFszXSwgMjU1KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAg
IEdMdWludCBtUHJvZ3JhbTsKLSAgICBHTGludCBtUG9zaXRpb25Mb2NhdGlvbjsKLSAgICBHTGlu
dCBtQ29sb3JMb2NhdGlvbjsKLX07Ci0KLVRFU1RfUChMaW5lTG9vcFRlc3QsIExpbmVMb29wVUJ5
dGVJbmRpY2VzKQotewotICAgIC8vIERpc2FibGUgRDNEMTEgU0RLIExheWVycyB3YXJuaW5ncyBj
aGVja3MsIHNlZSBBTkdMRSBpc3N1ZSA2NjcgZm9yIGRldGFpbHMKLSAgICAvLyBPbiBXaW43LCB0
aGUgRDNEIFNESyBMYXllcnMgZW1pdHMgYSBmYWxzZSB3YXJuaW5nIGZvciB0aGVzZSB0ZXN0cy4K
LSAgICAvLyBUaGlzIGRvZXNuJ3Qgb2NjdXIgb24gV2luZG93cyAxMCAoVmVyc2lvbiAxNTExKSB0
aG91Z2guCi0gICAgaWdub3JlRDNEMTFTREtMYXllcnNXYXJuaW5ncygpOwotCi0gICAgc3RhdGlj
IGNvbnN0IEdMdWJ5dGUgaW5kaWNlc1tdID0geyAwLCA3LCA2LCA5LCA4LCAwIH07Ci0gICAgcnVu
VGVzdChHTF9VTlNJR05FRF9CWVRFLCAwLCBpbmRpY2VzICsgMSk7Ci19Ci0KLVRFU1RfUChMaW5l
TG9vcFRlc3QsIExpbmVMb29wVVNob3J0SW5kaWNlcykKLXsKLSAgICAvLyBEaXNhYmxlIEQzRDEx
IFNESyBMYXllcnMgd2FybmluZ3MgY2hlY2tzLCBzZWUgQU5HTEUgaXNzdWUgNjY3IGZvciBkZXRh
aWxzCi0gICAgaWdub3JlRDNEMTFTREtMYXllcnNXYXJuaW5ncygpOwotCi0gICAgc3RhdGljIGNv
bnN0IEdMdXNob3J0IGluZGljZXNbXSA9IHsgMCwgNywgNiwgOSwgOCwgMCB9OwotICAgIHJ1blRl
c3QoR0xfVU5TSUdORURfU0hPUlQsIDAsIGluZGljZXMgKyAxKTsKLX0KLQotVEVTVF9QKExpbmVM
b29wVGVzdCwgTGluZUxvb3BVSW50SW5kaWNlcykKLXsKLSAgICBpZiAoIWV4dGVuc2lvbkVuYWJs
ZWQoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICAvLyBEaXNhYmxlIEQzRDExIFNESyBMYXllcnMgd2FybmluZ3MgY2hlY2tz
LCBzZWUgQU5HTEUgaXNzdWUgNjY3IGZvciBkZXRhaWxzCi0gICAgaWdub3JlRDNEMTFTREtMYXll
cnNXYXJuaW5ncygpOwotCi0gICAgc3RhdGljIGNvbnN0IEdMdWludCBpbmRpY2VzW10gPSB7IDAs
IDcsIDYsIDksIDgsIDAgfTsKLSAgICBydW5UZXN0KEdMX1VOU0lHTkVEX0lOVCwgMCwgaW5kaWNl
cyArIDEpOwotfQotCi1URVNUX1AoTGluZUxvb3BUZXN0LCBMaW5lTG9vcFVCeXRlSW5kZXhCdWZm
ZXIpCi17Ci0gICAgLy8gRGlzYWJsZSBEM0QxMSBTREsgTGF5ZXJzIHdhcm5pbmdzIGNoZWNrcywg
c2VlIEFOR0xFIGlzc3VlIDY2NyBmb3IgZGV0YWlscwotICAgIGlnbm9yZUQzRDExU0RLTGF5ZXJz
V2FybmluZ3MoKTsKLQotICAgIHN0YXRpYyBjb25zdCBHTHVieXRlIGluZGljZXNbXSA9IHsgMCwg
NywgNiwgOSwgOCwgMCB9OwotCi0gICAgR0x1aW50IGJ1ZjsKLSAgICBnbEdlbkJ1ZmZlcnMoMSwg
JmJ1Zik7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBidWYpOwot
ICAgIGdsQnVmZmVyRGF0YShHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKGluZGljZXMp
LCBpbmRpY2VzLCBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICBydW5UZXN0KEdMX1VOU0lHTkVEX0JZ
VEUsIGJ1ZiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkICo+KHNpemVvZihHTHVieXRlKSkp
OwotCi0gICAgZ2xEZWxldGVCdWZmZXJzKDEsICZidWYpOwotfQotCi1URVNUX1AoTGluZUxvb3BU
ZXN0LCBMaW5lTG9vcFVTaG9ydEluZGV4QnVmZmVyKQotewotICAgIC8vIERpc2FibGUgRDNEMTEg
U0RLIExheWVycyB3YXJuaW5ncyBjaGVja3MsIHNlZSBBTkdMRSBpc3N1ZSA2NjcgZm9yIGRldGFp
bHMKLSAgICBpZ25vcmVEM0QxMVNES0xheWVyc1dhcm5pbmdzKCk7Ci0KLSAgICBzdGF0aWMgY29u
c3QgR0x1c2hvcnQgaW5kaWNlc1tdID0geyAwLCA3LCA2LCA5LCA4LCAwIH07Ci0KLSAgICBHTHVp
bnQgYnVmOwotICAgIGdsR2VuQnVmZmVycygxLCAmYnVmKTsKLSAgICBnbEJpbmRCdWZmZXIoR0xf
RUxFTUVOVF9BUlJBWV9CVUZGRVIsIGJ1Zik7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX0VMRU1FTlRf
QVJSQVlfQlVGRkVSLCBzaXplb2YoaW5kaWNlcyksIGluZGljZXMsIEdMX1NUQVRJQ19EUkFXKTsK
LQotICAgIHJ1blRlc3QoR0xfVU5TSUdORURfU0hPUlQsIGJ1ZiwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCB2b2lkICo+KHNpemVvZihHTHVzaG9ydCkpKTsKLQotICAgIGdsRGVsZXRlQnVmZmVycygx
LCAmYnVmKTsKLX0KLQotVEVTVF9QKExpbmVMb29wVGVzdCwgTGluZUxvb3BVSW50SW5kZXhCdWZm
ZXIpCi17Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfZWxlbWVudF9pbmRleF91
aW50IikpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRGlzYWJsZSBE
M0QxMSBTREsgTGF5ZXJzIHdhcm5pbmdzIGNoZWNrcywgc2VlIEFOR0xFIGlzc3VlIDY2NyBmb3Ig
ZGV0YWlscwotICAgIGlnbm9yZUQzRDExU0RLTGF5ZXJzV2FybmluZ3MoKTsKLQotICAgIHN0YXRp
YyBjb25zdCBHTHVpbnQgaW5kaWNlc1tdID0geyAwLCA3LCA2LCA5LCA4LCAwIH07Ci0KLSAgICBH
THVpbnQgYnVmOwotICAgIGdsR2VuQnVmZmVycygxLCAmYnVmKTsKLSAgICBnbEJpbmRCdWZmZXIo
R0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIGJ1Zik7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX0VMRU1F
TlRfQVJSQVlfQlVGRkVSLCBzaXplb2YoaW5kaWNlcyksIGluZGljZXMsIEdMX1NUQVRJQ19EUkFX
KTsKLQotICAgIHJ1blRlc3QoR0xfVU5TSUdORURfSU5ULCBidWYsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3Qgdm9pZCAqPihzaXplb2YoR0x1aW50KSkpOwotCi0gICAgZ2xEZWxldGVCdWZmZXJzKDEs
ICZidWYpOwotfQotCi0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMg
KGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVz
dHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChMaW5lTG9v
cFRlc3QsIEVTMl9EM0Q5KCksIEVTMl9EM0QxMSgpLCBFUzJfT1BFTkdMKCksIEVTMl9PUEVOR0xF
UygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90
ZXN0cy9NYXhUZXh0dXJlU2l6ZVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2dsX3Rlc3RzL01heFRleHR1cmVTaXplVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGFiNDZkNmY3NjdkLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvTWF4VGV4dHVyZVNpemVUZXN0LmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDI5OSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAidGVzdF91
dGlscy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1jbGFzcyBNYXhU
ZXh0dXJlU2l6ZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBN
YXhUZXh0dXJlU2l6ZVRlc3QoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoNTEyKTsK
LSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDUxMik7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMo
OCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1
ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICB9Ci0KLSAgICB2
b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsK
LQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2c1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAg
ICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwotICAgICAgICAgICAg
YXR0cmlidXRlIHZlYzQgcG9zaXRpb247Ci0gICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdGV4Y29v
cmQ7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICAgICAgICAgICAgICB0ZXhjb29yZCA9
IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0K
LSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGV4dHVyZUZTU291cmNlID0gU0hBREVSX1NPVVJD
RQotICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0gICAgICAg
ICAgICB1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7Ci0gICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdGV4
Y29vcmQ7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQpOwotICAgICAg
ICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGJsdWVGU1Nv
dXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIGhp
Z2hwIGZsb2F0OwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMC4wLCAwLjAsIDEuMCwgMS4wKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBtVGV4dHVyZVByb2dyYW0gPSBDb21w
aWxlUHJvZ3JhbSh2c1NvdXJjZSwgdGV4dHVyZUZTU291cmNlKTsKLSAgICAgICAgbUJsdWVQcm9n
cmFtID0gQ29tcGlsZVByb2dyYW0odnNTb3VyY2UsIGJsdWVGU1NvdXJjZSk7Ci0gICAgICAgIGlm
IChtVGV4dHVyZVByb2dyYW0gPT0gMCB8fCBtQmx1ZVByb2dyYW0gPT0gMCkKLSAgICAgICAgewot
ICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7Ci0gICAg
ICAgIH0KLQotICAgICAgICBtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxv
Y2F0aW9uKG1UZXh0dXJlUHJvZ3JhbSwgInRleCIpOwotCi0gICAgICAgIGdsR2V0SW50ZWdlcnYo
R0xfTUFYX1RFWFRVUkVfU0laRSwgJm1NYXhUZXh0dXJlMkRTaXplKTsKLSAgICAgICAgZ2xHZXRJ
bnRlZ2VydihHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFLCAmbU1heFRleHR1cmVDdWJlU2l6
ZSk7Ci0gICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFLCAmbU1h
eFJlbmRlcmJ1ZmZlclNpemUpOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAg
IH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZ2xEZWxl
dGVQcm9ncmFtKG1UZXh0dXJlUHJvZ3JhbSk7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtQmx1
ZVByb2dyYW0pOwotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAg
ICBHTHVpbnQgbVRleHR1cmVQcm9ncmFtOwotICAgIEdMaW50IG1UZXh0dXJlVW5pZm9ybUxvY2F0
aW9uOwotCi0gICAgR0x1aW50IG1CbHVlUHJvZ3JhbTsKLQotICAgIEdMaW50IG1NYXhUZXh0dXJl
MkRTaXplOwotICAgIEdMaW50IG1NYXhUZXh0dXJlQ3ViZVNpemU7Ci0gICAgR0xpbnQgbU1heFJl
bmRlcmJ1ZmZlclNpemU7Ci19OwotCi1URVNUX1AoTWF4VGV4dHVyZVNpemVUZXN0LCBTcGVjaWZp
Y2F0aW9uVGV4SW1hZ2UpCi17Ci0gICAgR0x1aW50IHRleDsKLSAgICBnbEdlblRleHR1cmVzKDEs
ICZ0ZXgpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4KTsKLQotICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJ
TkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFH
X0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0K
LSAgICBHTHNpemVpIHRleHR1cmVXaWR0aCA9IG1NYXhUZXh0dXJlMkRTaXplOwotICAgIEdMc2l6
ZWkgdGV4dHVyZUhlaWdodCA9IDY0OwotCi0gICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gZGF0YSh0
ZXh0dXJlV2lkdGggKiB0ZXh0dXJlSGVpZ2h0ICogNCk7Ci0gICAgZm9yIChpbnQgeSA9IDA7IHkg
PCB0ZXh0dXJlSGVpZ2h0OyB5KyspCi0gICAgewotICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8
IHRleHR1cmVXaWR0aDsgeCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBHTHVieXRlKiBwaXhl
bCA9ICZkYXRhWzBdICsgKCh5ICogdGV4dHVyZVdpZHRoICsgeCkgKiA0KTsKLQotICAgICAgICAg
ICAgLy8gRHJhdyBhIGdyYWRpZW50LCByZWQgaW4gZGlyZWN0aW9uLCBncmVlbiBpbiB5IGRpcmVj
dGlvbgotICAgICAgICAgICAgcGl4ZWxbMF0gPSBzdGF0aWNfY2FzdDxHTHVieXRlPigoZmxvYXQo
eCkgLyB0ZXh0dXJlV2lkdGgpICogMjU1KTsKLSAgICAgICAgICAgIHBpeGVsWzFdID0gc3RhdGlj
X2Nhc3Q8R0x1Ynl0ZT4oKGZsb2F0KHkpIC8gdGV4dHVyZUhlaWdodCkgKiAyNTUpOwotICAgICAg
ICAgICAgcGl4ZWxbMl0gPSAwOwotICAgICAgICAgICAgcGl4ZWxbM10gPSAyNTU7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwg
dGV4dHVyZVdpZHRoLCB0ZXh0dXJlSGVpZ2h0LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCAmZGF0YVswXSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFVzZVByb2dy
YW0obVRleHR1cmVQcm9ncmFtKTsKLSAgICBnbFVuaWZvcm0xaShtVGV4dHVyZVVuaWZvcm1Mb2Nh
dGlvbiwgMCk7Ci0KLSAgICBkcmF3UXVhZChtVGV4dHVyZVByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOwotCi0gICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gcGl4ZWxzKGdldFdpbmRvd1dpZHRoKCkg
KiBnZXRXaW5kb3dIZWlnaHQoKSAqIDQpOwotICAgIGdsUmVhZFBpeGVscygwLCAwLCBnZXRXaW5k
b3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwg
JnBpeGVsc1swXSk7Ci0KLSAgICBmb3IgKGludCB5ID0gMTsgeSA8IGdldFdpbmRvd0hlaWdodCgp
OyB5KyspCi0gICAgewotICAgICAgICBmb3IgKGludCB4ID0gMTsgeCA8IGdldFdpbmRvd1dpZHRo
KCk7IHgrKykKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSogcHJldlBpeGVs
ID0gJnBpeGVsc1swXSArICgoKHkgLSAxKSAqIGdldFdpbmRvd1dpZHRoKCkgKyAoeCAtIDEpKSAq
IDQpOwotICAgICAgICAgICAgY29uc3QgR0x1Ynl0ZSogY3VyUGl4ZWwgPSAmcGl4ZWxzWzBdICsg
KCh5ICogZ2V0V2luZG93V2lkdGgoKSArIHgpICogNCk7Ci0KLSAgICAgICAgICAgIEVYUEVDVF9H
RShjdXJQaXhlbFswXSwgcHJldlBpeGVsWzBdKTsKLSAgICAgICAgICAgIEVYUEVDVF9HRShjdXJQ
aXhlbFsxXSwgcHJldlBpeGVsWzFdKTsKLSAgICAgICAgICAgIEVYUEVDVF9FUShjdXJQaXhlbFsy
XSwgcHJldlBpeGVsWzJdKTsKLSAgICAgICAgICAgIEVYUEVDVF9FUShjdXJQaXhlbFszXSwgcHJl
dlBpeGVsWzNdKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotVEVTVF9QKE1heFRleHR1cmVTaXpl
VGVzdCwgU3BlY2lmaWNhdGlvblRleFN0b3JhZ2UpCi17Ci0gICAgaWYgKGdldENsaWVudE1ham9y
VmVyc2lvbigpIDwgMyAmJgotICAgICAgICAoIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF90ZXh0
dXJlX3N0b3JhZ2UiKSB8fCAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3JnYjhfcmdiYTgiKSkp
Ci0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0x1aW50IHRleDsKLSAgICBn
bEdlblRleHR1cmVzKDEsICZ0ZXgpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
dGV4KTsKLQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01J
Tl9GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xB
TVBfVE9fRURHRSk7Ci0KLSAgICBHTHNpemVpIHRleHR1cmVXaWR0aCA9IDY0OwotICAgIEdMc2l6
ZWkgdGV4dHVyZUhlaWdodCA9IG1NYXhUZXh0dXJlMkRTaXplOwotCi0gICAgc3RkOjp2ZWN0b3I8
R0x1Ynl0ZT4gZGF0YSh0ZXh0dXJlV2lkdGggKiB0ZXh0dXJlSGVpZ2h0ICogNCk7Ci0gICAgZm9y
IChpbnQgeSA9IDA7IHkgPCB0ZXh0dXJlSGVpZ2h0OyB5KyspCi0gICAgewotICAgICAgICBmb3Ig
KGludCB4ID0gMDsgeCA8IHRleHR1cmVXaWR0aDsgeCsrKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBHTHVieXRlKiBwaXhlbCA9ICZkYXRhWzBdICsgKCh5ICogdGV4dHVyZVdpZHRoICsgeCkgKiA0
KTsKLQotICAgICAgICAgICAgLy8gRHJhdyBhIGdyYWRpZW50LCByZWQgaW4gZGlyZWN0aW9uLCBn
cmVlbiBpbiB5IGRpcmVjdGlvbgotICAgICAgICAgICAgcGl4ZWxbMF0gPSBzdGF0aWNfY2FzdDxH
THVieXRlPigoZmxvYXQoeCkgLyB0ZXh0dXJlV2lkdGgpICogMjU1KTsKLSAgICAgICAgICAgIHBp
eGVsWzFdID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oKGZsb2F0KHkpIC8gdGV4dHVyZUhlaWdodCkg
KiAyNTUpOwotICAgICAgICAgICAgcGl4ZWxbMl0gPSAwOwotICAgICAgICAgICAgcGl4ZWxbM10g
PSAyNTU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9u
KCkgPCAzKQotICAgIHsKLSAgICAgICAgZ2xUZXhTdG9yYWdlMkRFWFQoR0xfVEVYVFVSRV8yRCwg
MSwgR0xfUkdCQThfT0VTLCB0ZXh0dXJlV2lkdGgsIHRleHR1cmVIZWlnaHQpOwotICAgIH0KLSAg
ICBlbHNlCi0gICAgewotICAgICAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBH
TF9SR0JBOF9PRVMsIHRleHR1cmVXaWR0aCwgdGV4dHVyZUhlaWdodCk7Ci0gICAgfQotICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDAsIDAsIDAsIHRleHR1cmVXaWR0aCwgdGV4dHVyZUhlaWdodCwgR0xfUkdCQSwgR0xfVU5TSUdO
RURfQllURSwgJmRhdGFbMF0pOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xV
c2VQcm9ncmFtKG1UZXh0dXJlUHJvZ3JhbSk7Ci0gICAgZ2xVbmlmb3JtMWkobVRleHR1cmVVbmlm
b3JtTG9jYXRpb24sIDApOwotCi0gICAgZHJhd1F1YWQobVRleHR1cmVQcm9ncmFtLCAicG9zaXRp
b24iLCAwLjVmKTsKLQotICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IHBpeGVscyhnZXRXaW5kb3dX
aWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCkgKiA0KTsKLSAgICBnbFJlYWRQaXhlbHMoMCwgMCwg
Z2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsICZwaXhlbHNbMF0pOwotCi0gICAgZm9yIChpbnQgeSA9IDE7IHkgPCBnZXRXaW5kb3dI
ZWlnaHQoKTsgeSsrKQotICAgIHsKLSAgICAgICAgZm9yIChpbnQgeCA9IDE7IHggPCBnZXRXaW5k
b3dXaWR0aCgpOyB4KyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUqIHBy
ZXZQaXhlbCA9ICZwaXhlbHNbMF0gKyAoKCh5IC0gMSkgKiBnZXRXaW5kb3dXaWR0aCgpICsgKHgg
LSAxKSkgKiA0KTsKLSAgICAgICAgICAgIGNvbnN0IEdMdWJ5dGUqIGN1clBpeGVsID0gJnBpeGVs
c1swXSArICgoeSAqIGdldFdpbmRvd1dpZHRoKCkgKyB4KSAqIDQpOwotCi0gICAgICAgICAgICBF
WFBFQ1RfR0UoY3VyUGl4ZWxbMF0sIHByZXZQaXhlbFswXSk7Ci0gICAgICAgICAgICBFWFBFQ1Rf
R0UoY3VyUGl4ZWxbMV0sIHByZXZQaXhlbFsxXSk7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoY3Vy
UGl4ZWxbMl0sIHByZXZQaXhlbFsyXSk7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoY3VyUGl4ZWxb
M10sIHByZXZQaXhlbFszXSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLVRFU1RfUChNYXhUZXh0
dXJlU2l6ZVRlc3QsIFJlbmRlclRvVGV4dHVyZSkKLXsKLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JW
ZXJzaW9uKCkgPCAzICYmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfZnJhbWVidWZmZXJf
YmxpdCIpKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGR1ZSB0
byBtaXNzaW5nIGdsQmxpdEZyYW1lYnVmZmVyW0FOR0xFXSBzdXBwb3J0LiIgPDwgc3RkOjplbmRs
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0x1aW50IGZibyA9IDA7Ci0gICAgR0x1
aW50IHRleHR1cmVJZCA9IDA7Ci0gICAgLy8gY3JlYXRlIGEgMS1sZXZlbCB0ZXh0dXJlIGF0IG1h
eGltdW0gc2l6ZQotICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmVJZCk7Ci0gICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlSWQpOwotCi0gICAgR0xzaXplaSB0ZXh0dXJl
V2lkdGggPSA2NDsKLSAgICBHTHNpemVpIHRleHR1cmVIZWlnaHQgPSBtTWF4VGV4dHVyZTJEU2l6
ZTsKLQotICAgIC8vIHRleHR1cmUgc2V0dXAgY29kZQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTElORUFS
KTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklM
VEVSLCBHTF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBn
bFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfQkdSQV9FWFQsIHRleHR1cmVXaWR0aCwg
dGV4dHVyZUhlaWdodCwgMCwgR0xfQkdSQV9FWFQsIEdMX1VOU0lHTkVEX0JZVEUsIE5VTEwpOwot
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gY3JlYXRlIGFuIEZCTyBhbmQgYXR0
YWNoIHRoZSB0ZXh0dXJlCi0gICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJmZibyk7Ci0gICAgZ2xC
aW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZibyk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRl
eHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVf
MkQsIHRleHR1cmVJZCwgMCk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBF
Q1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJT
dGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLQotICAgIGNvbnN0IGludCBmcmFtZUNvdW50ID0gNjQ7
Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmcmFtZUNvdW50OyBpKyspCi0gICAgewotICAgICAg
ICAvLyBjbGVhciB0aGUgc2NyZWVuCi0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCAwKTsKLQotICAgICAgICBHTHVieXRlIGNsZWFyUmVkID0gc3RhdGljX2Nhc3Q8R0x1
Ynl0ZT4oKGZsb2F0KGkpIC8gZnJhbWVDb3VudCkgKiAyNTUpOwotICAgICAgICBHTHVieXRlIGNs
ZWFyR3JlZW4gPSAyNTUgLSBjbGVhclJlZDsKLSAgICAgICAgR0x1Ynl0ZSBjbGVhckJsdWUgPSAw
OwotCi0gICAgICAgIGdsQ2xlYXJDb2xvcihjbGVhclJlZCAvIDI1NS4wZiwgY2xlYXJHcmVlbiAv
IDI1NS4wZiwgY2xlYXJCbHVlIC8gMjU1LjBmLCAxLjBmKTsKLSAgICAgICAgZ2xDbGVhcihHTF9D
T0xPUl9CVUZGRVJfQklUKTsKLQotICAgICAgICAvLyByZW5kZXIgYmx1ZSBpbnRvIHRoZSB0ZXh0
dXJlCi0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8pOwotICAg
ICAgICBkcmF3UXVhZChtQmx1ZVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgICAg
IC8vIGNvcHkgY29ybmVyIG9mIHRleHR1cmUgdG8gTEwgY29ybmVyIG9mIHdpbmRvdwotICAgICAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSX0FOR0xFLCAwKTsKLSAgICAg
ICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUl9BTkdMRSwgZmJvKTsKLSAg
ICAgICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCB0ZXh0dXJlV2lkdGggLSAxLCBnZXRX
aW5kb3dIZWlnaHQoKSAtIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwg
dGV4dHVyZVdpZHRoIC0gMSwgZ2V0V2luZG93SGVpZ2h0KCkgLSAxLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdMX05FQVJFU1QpOwotICAgICAg
ICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSX0FOR0xFLCAwKTsKLSAgICAg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKHRleHR1
cmVXaWR0aCAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMCwgMCwgMjU1LCAyNTUpOwotICAg
ICAgICBFWFBFQ1RfUElYRUxfRVEodGV4dHVyZVdpZHRoICsgMTAsIGdldFdpbmRvd0hlaWdodCgp
IC8gMiwgY2xlYXJSZWQsIGNsZWFyR3JlZW4sIGNsZWFyQmx1ZSwgMjU1KTsKLQotICAgICAgICBz
d2FwQnVmZmVycygpOwotICAgIH0KLQotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCAwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOwotCi0gICAgZ2xE
ZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZibyk7Ci0gICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmdGV4
dHVyZUlkKTsKLX0KLQotLy8gVE9ETyhnZW9mZmxhbmcpOiBGaXggdGhlIGRlcGVuZGVuY2Ugb24g
Z2xCbGl0RnJhbWVidWZmZXJBTkdMRSB3aXRob3V0IGNoZWNrcyBhbmQgYXNzdW1pbmcgdGhlCi0v
LyBkZWZhdWx0IGZyYW1lYnVmZmVyIGlzIEJHUkEgdG8gZW5hYmxlIHRoZSBHTCBhbmQgR0xFUyBi
YWNrZW5kcy4gKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTI4OSkKLQotLy8gVXNlIHRoaXMgdG8gc2Vs
ZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVT
IG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLUFOR0xF
X0lOU1RBTlRJQVRFX1RFU1QoTWF4VGV4dHVyZVNpemVUZXN0LCBFUzJfRDNEOSgpLCBFUzJfRDNE
MTEoKSwgRVMyX0QzRDExX0ZMOV8zKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL01pcG1hcFRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL01pcG1hcFRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA5NjkxYjE4MjA0MS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL01pcG1hcFRlc3QuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTE0MSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
LS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAidGVzdF91dGls
cy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsK
LQotdm9pZCBUZXhJbWFnZUN1YmVNYXBGYWNlcyhHTGludCBsZXZlbCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0xlbnVtIGludGVybmFsZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTHNpemVpIHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gZm9y
bWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgdm9pZCAqcGl4ZWxzKQotewotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhU
VVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIHdp
ZHRoLCAwLCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgIHR5cGUsIHBpeGVscyk7Ci0gICAgZ2xU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCwgbGV2ZWwsIGludGVybmFs
Zm9ybWF0LCB3aWR0aCwgd2lkdGgsIDAsIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgdHlwZSwg
cGl4ZWxzKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9Z
LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCB3aWR0aCwgMCwgZm9ybWF0LAotICAgICAg
ICAgICAgICAgICB0eXBlLCBwaXhlbHMpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NV
QkVfTUFQX05FR0FUSVZFX1ksIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIHdpZHRoLCAw
LCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgIHR5cGUsIHBpeGVscyk7Ci0gICAgZ2xUZXhJbWFn
ZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiwgbGV2ZWwsIGludGVybmFsZm9ybWF0
LCB3aWR0aCwgd2lkdGgsIDAsIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgdHlwZSwgcGl4ZWxz
KTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aLCBsZXZl
bCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCB3aWR0aCwgMCwgZm9ybWF0LAotICAgICAgICAgICAg
ICAgICB0eXBlLCBwaXhlbHMpOwotfQotCi1jbGFzcyBCYXNlTWlwbWFwVGVzdCA6IHB1YmxpYyBB
TkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIHZvaWQgY2xlYXJBbmREcmF3UXVhZChHTHVp
bnQgcHJvZ3JhbSwgR0xzaXplaSB2aWV3cG9ydFdpZHRoLCBHTHNpemVpIHZpZXdwb3J0SGVpZ2h0
KQotICAgIHsKLSAgICAgICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOwot
ICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgICAgICBnbFZpZXdwb3J0
KDAsIDAsIHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0KTsKLSAgICAgICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICAgICAgZHJhd1F1YWQocHJvZ3JhbSwgInBvc2l0aW9uIiwgMC4w
Zik7Ci0gICAgfQotfTsKLQotfSAgLy8gbmFtZXNwYWNlCi0KLWNsYXNzIE1pcG1hcFRlc3QgOiBw
dWJsaWMgQmFzZU1pcG1hcFRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIE1pcG1hcFRlc3QoKQot
ICAgICAgICA6IG0yRFByb2dyYW0oMCksCi0gICAgICAgICAgbUN1YmVQcm9ncmFtKDApLAotICAg
ICAgICAgIG1UZXh0dXJlMkQoMCksCi0gICAgICAgICAgbVRleHR1cmVDdWJlKDApLAotICAgICAg
ICAgIG1MZXZlbFplcm9CbHVlSW5pdERhdGEobnVsbHB0ciksCi0gICAgICAgICAgbUxldmVsWmVy
b1doaXRlSW5pdERhdGEobnVsbHB0ciksCi0gICAgICAgICAgbUxldmVsT25lSW5pdERhdGEobnVs
bHB0ciksCi0gICAgICAgICAgbUxldmVsVHdvSW5pdERhdGEobnVsbHB0ciksCi0gICAgICAgICAg
bU9mZnNjcmVlbkZyYW1lYnVmZmVyKDApCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgx
MjgpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKLSAgICAgICAgc2V0Q29uZmlnUmVk
Qml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25m
aWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgIH0KLQot
ICAgIHZvaWQgc2V0VXAyRFByb2dyYW0oKQotICAgIHsKLSAgICAgICAgLy8gVmVydGV4IFNoYWRl
ciBzb3VyY2UKLSAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyB2cyA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgYXR0cmli
dXRlIHZlYzQgcG9zaXRpb247Ci0gICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdlRleENvb3JkOwot
Ci0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGdsX1Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAgICAgICAgICAgdlRleENvb3JkICAgPSAo
cG9zaXRpb24ueHkgKiAwLjUpICsgMC41OwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0g
ICAgICAgIC8vIEZyYWdtZW50IFNoYWRlciBzb3VyY2UKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgZnMgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIHByZWNpc2lvbiBt
ZWRpdW1wIGZsb2F0OwotCi0gICAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB1VGV4dHVyZTsK
LSAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB2VGV4Q29vcmQ7Ci0KLSAgICAgICAgICAgIHZvaWQg
bWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4
dHVyZTJEKHVUZXh0dXJlLCB2VGV4Q29vcmQpOwotICAgICAgICAgICAgfQotICAgICAgICApOwot
ICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KLQotICAgICAgICBtMkRQcm9ncmFtID0gQ29tcGls
ZVByb2dyYW0odnMsIGZzKTsKLSAgICAgICAgQVNTRVJUX05FKDB1LCBtMkRQcm9ncmFtKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIHNldFVwQ3ViZVByb2dyYW0oKQotICAgIHsKLSAgICAgICAgLy8gQSBz
aW1wbGUgdmVydGV4IHNoYWRlciBmb3IgdGhlIHRleHR1cmUgY3ViZQotICAgICAgICAvLyBjbGFu
Zy1mb3JtYXQgb2ZmCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGN1YmVWUyA9IFNIQURFUl9T
T1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247Ci0g
ICAgICAgICAgICB2YXJ5aW5nIHZlYzQgdlBvc2l0aW9uOwotICAgICAgICAgICAgdm9pZCBtYWlu
KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9u
OwotICAgICAgICAgICAgICAgIHZQb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAgICAgICAgfQot
ICAgICAgICApOwotCi0gICAgICAgIC8vIEEgdmVyeSBzaW1wbGUgZnJhZ21lbnQgc2hhZGVyIHRv
IHNhbXBsZSBmcm9tIHRoZSBuZWdhdGl2ZS1ZIGZhY2Ugb2YgYSB0ZXh0dXJlIGN1YmUuCi0gICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGN1YmVGUyA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAot
ICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Ci0gICAgICAgICAgICB1bmlmb3Jt
IHNhbXBsZXJDdWJlIHVUZXh0dXJlOwotICAgICAgICAgICAgdmFyeWluZyB2ZWM0IHZQb3NpdGlv
bjsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlQ3ViZSh1VGV4dHVyZSwgdmVjMyh2UG9zaXRpb24u
eCwgLTEsIHZQb3NpdGlvbi55KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0gICAgICAg
IC8vIGNsYW5nLWZvcm1hdCBvbgotCi0gICAgICAgIG1DdWJlUHJvZ3JhbSA9IENvbXBpbGVQcm9n
cmFtKGN1YmVWUywgY3ViZUZTKTsKLSAgICAgICAgQVNTRVJUX05FKDB1LCBtQ3ViZVByb2dyYW0p
OwotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQU5H
TEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIHNldFVwMkRQcm9ncmFtKCk7Ci0KLSAgICAgICAg
c2V0VXBDdWJlUHJvZ3JhbSgpOwotCi0gICAgICAgIG1MZXZlbFplcm9CbHVlSW5pdERhdGEgPSBj
cmVhdGVSR0JJbml0RGF0YShnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwg
MCwgMjU1KTsgLy8gQmx1ZQotICAgICAgICBtTGV2ZWxaZXJvV2hpdGVJbml0RGF0YSA9IGNyZWF0
ZVJHQkluaXREYXRhKGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCAyNTUsIDI1
NSwgMjU1KTsgLy8gV2hpdGUKLSAgICAgICAgbUxldmVsT25lSW5pdERhdGEgPSBjcmVhdGVSR0JJ
bml0RGF0YSgoZ2V0V2luZG93V2lkdGgoKSAvIDIpLCAoZ2V0V2luZG93SGVpZ2h0KCkgLyAyKSwg
MCwgMjU1LCAwKTsgICAvLyBHcmVlbgotICAgICAgICBtTGV2ZWxUd29Jbml0RGF0YSA9IGNyZWF0
ZVJHQkluaXREYXRhKChnZXRXaW5kb3dXaWR0aCgpIC8gNCksIChnZXRXaW5kb3dIZWlnaHQoKSAv
IDQpLCAyNTUsIDAsIDApOyAgIC8vIFJlZAotCi0gICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEs
ICZtT2Zmc2NyZWVuRnJhbWVidWZmZXIpOwotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4
dHVyZTJEKTsKLQotICAgICAgICAvLyBJbml0aWFsaXplIHRoZSB0ZXh0dXJlMkQgdG8gYmUgZW1w
dHksIGFuZCBkb24ndCB1c2UgbWlwcy4KLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBtVGV4dHVyZTJEKTsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IEdMX1JHQiwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIEdMX1JHQiwg
R0xfVU5TSUdORURfQllURSwgTlVMTCk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVB
Uik7Ci0KLSAgICAgICAgQVNTRVJUX0VRKGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdo
dCgpKTsKLQotICAgICAgICAvLyBDcmVhdGUgYSBub24tbWlwcGVkIHRleHR1cmUgY3ViZS4gU2V0
IHRoZSBuZWdhdGl2ZS1ZIGZhY2UgdG8gYmUgYmx1ZS4KLSAgICAgICAgZ2xHZW5UZXh0dXJlcygx
LCAmbVRleHR1cmVDdWJlKTsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0NVQkVf
TUFQLCBtVGV4dHVyZUN1YmUpOwotICAgICAgICBUZXhJbWFnZUN1YmVNYXBGYWNlcygwLCBHTF9S
R0IsIGdldFdpbmRvd1dpZHRoKCksIEdMX1JHQiwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7
Ci0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1ksIDAs
IEdMX1JHQiwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93V2lkdGgoKSwKLSAgICAgICAgICAg
ICAgICAgICAgIDAsIEdMX1JHQiwgR0xfVU5TSUdORURfQllURSwgbUxldmVsWmVyb0JsdWVJbml0
RGF0YSk7Ci0KLSAgICAgICAgLy8gQ29tcGxldGUgdGhlIHRleHR1cmUgY3ViZSB3aXRob3V0IG1p
cG1hcHMgdG8gc3RhcnQgd2l0aC4KLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
Q1VCRV9NQVAsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX01JTl9GSUxURVIs
IEdMX05FQVJFU1QpOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQot
ICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVQcm9n
cmFtKG0yRFByb2dyYW0pOwotICAgICAgICBnbERlbGV0ZVByb2dyYW0obUN1YmVQcm9ncmFtKTsK
LSAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1PZmZzY3JlZW5GcmFtZWJ1ZmZlcik7
Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlMkQpOwotICAgICAgICBnbERl
bGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZUN1YmUpOwotCi0gICAgICAgIFNhZmVEZWxldGVBcnJh
eShtTGV2ZWxaZXJvQmx1ZUluaXREYXRhKTsKLSAgICAgICAgU2FmZURlbGV0ZUFycmF5KG1MZXZl
bFplcm9XaGl0ZUluaXREYXRhKTsKLSAgICAgICAgU2FmZURlbGV0ZUFycmF5KG1MZXZlbE9uZUlu
aXREYXRhKTsKLSAgICAgICAgU2FmZURlbGV0ZUFycmF5KG1MZXZlbFR3b0luaXREYXRhKTsKLQot
ICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgR0x1Ynl0ZSAqY3Jl
YXRlUkdCSW5pdERhdGEoR0xpbnQgd2lkdGgsIEdMaW50IGhlaWdodCwgR0xpbnQgciwgR0xpbnQg
ZywgR0xpbnQgYikKLSAgICB7Ci0gICAgICAgIEdMdWJ5dGUgKmRhdGEgPSBuZXcgR0x1Ynl0ZVsz
ICogd2lkdGggKiBoZWlnaHRdOwotCi0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd2lkdGgg
KiBoZWlnaHQ7IGkrPTEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRhdGFbMyAqIGkgKyAwXSA9
IHN0YXRpY19jYXN0PEdMdWJ5dGU+KHIpOwotICAgICAgICAgICAgZGF0YVszICogaSArIDFdID0g
c3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oZyk7Ci0gICAgICAgICAgICBkYXRhWzMgKiBpICsgMl0gPSBz
dGF0aWNfY2FzdDxHTHVieXRlPihiKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBkYXRh
OwotICAgIH0KLQotICAgIHZvaWQgY2xlYXJUZXh0dXJlTGV2ZWwwKEdMZW51bSB0ZXh0YXJnZXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IHRleHR1cmUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0xmbG9hdCByZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0xmbG9hdCBncmVlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IGJs
dWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBhbHBoYSkKLSAgICB7Ci0g
ICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtT2Zmc2NyZWVuRnJhbWVi
dWZmZXIpOwotICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBH
TF9DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCAwKTsKLSAgICAgICAgQVNT
RVJUX0dMRU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7Ci0gICAgICAgIGdsQ2xlYXJDb2xvcihyZWQsIGdyZWVu
LCBibHVlLCBhbHBoYSk7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0g
ICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKLSAgICB9Ci0KLSAg
ICBHTHVpbnQgbTJEUHJvZ3JhbTsKLSAgICBHTHVpbnQgbUN1YmVQcm9ncmFtOwotICAgIEdMdWlu
dCBtVGV4dHVyZTJEOwotICAgIEdMdWludCBtVGV4dHVyZUN1YmU7Ci0KLSAgICBHTHVieXRlKiBt
TGV2ZWxaZXJvQmx1ZUluaXREYXRhOwotICAgIEdMdWJ5dGUqIG1MZXZlbFplcm9XaGl0ZUluaXRE
YXRhOwotICAgIEdMdWJ5dGUqIG1MZXZlbE9uZUluaXREYXRhOwotICAgIEdMdWJ5dGUqIG1MZXZl
bFR3b0luaXREYXRhOwotCi0gIHByaXZhdGU6Ci0gICAgR0x1aW50IG1PZmZzY3JlZW5GcmFtZWJ1
ZmZlcjsKLX07Ci0KLWNsYXNzIE1pcG1hcFRlc3RFUzMgOiBwdWJsaWMgQmFzZU1pcG1hcFRlc3QK
LXsKLSAgcHJvdGVjdGVkOgotICAgIE1pcG1hcFRlc3RFUzMoKQotICAgICAgICA6IG1UZXh0dXJl
KDApLAotICAgICAgICAgIG1BcnJheVByb2dyYW0oMCksCi0gICAgICAgICAgbVRleHR1cmVBcnJh
eVNsaWNlVW5pZm9ybUxvY2F0aW9uKC0xKSwKLSAgICAgICAgICBtM0RQcm9ncmFtKDApLAotICAg
ICAgICAgIG1UZXh0dXJlM0RTbGljZVVuaWZvcm1Mb2NhdGlvbigtMSksCi0gICAgICAgICAgbVRl
eHR1cmUzRExPRFVuaWZvcm1Mb2NhdGlvbigtMSksCi0gICAgICAgICAgbTJEUHJvZ3JhbSgwKQot
Ci0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwotICAgICAgICBzZXRXaW5kb3dI
ZWlnaHQoMTI4KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29u
ZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAg
c2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nIHZlcnRleFNo
YWRlclNvdXJjZSgpCi0gICAgewotICAgICAgICAvLyBEb24ndCBwdXQgIiN2ZXJzaW9uIC4uLiIg
b24gaXRzIG93biBsaW5lLiBTZWUgW2NwcF1wMToKLSAgICAgICAgLy8gIklmIHRoZXJlIGFyZSBz
ZXF1ZW5jZXMgb2YgcHJlcHJvY2Vzc2luZyB0b2tlbnMgd2l0aGluIHRoZSBsaXN0IG9mIGFyZ3Vt
ZW50cyB0aGF0Ci0gICAgICAgIC8vICB3b3VsZCBvdGhlcndpc2UgYWN0IGFzIHByZXByb2Nlc3Np
bmcgZGlyZWN0aXZlcywgdGhlIGJlaGF2aW9yIGlzIHVuZGVmaW5lZCIKLSAgICAgICAgLy8gY2xh
bmctZm9ybWF0IG9mZgotICAgICAgICByZXR1cm4gU0hBREVSX1NPVVJDRQotICAgICAgICAoICAg
I3ZlcnNpb24gMzAwIGVzXG4KLSAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSAg
ICAgICAgICAgIGluIHZlYzQgcG9zaXRpb247Ci0gICAgICAgICAgICBvdXQgdmVjMiB0ZXhjb29y
ZDsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24ueHksIDAuMCwgMS4wKTsKLSAgICAgICAg
ICAgICAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICk7Ci0gICAgICAgIC8vIGNsYW5nLWZvcm1hdCBvbgotICAgIH0KLQotICAg
IHZvaWQgc2V0VXBBcnJheVByb2dyYW0oKQotICAgIHsKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgZnJhZ21lbnRTaGFkZXJTb3VyY2VBcnJheSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKCAg
ICN2ZXJzaW9uIDMwMCBlc1xuCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0g
ICAgICAgICAgICB1bmlmb3JtIGhpZ2hwIHNhbXBsZXIyREFycmF5IHRleDsKLSAgICAgICAgICAg
IHVuaWZvcm0gaW50IHNsaWNlOwotICAgICAgICAgICAgaW4gdmVjMiB0ZXhjb29yZDsKLSAgICAg
ICAgICAgIG91dCB2ZWM0IG91dF9GcmFnQ29sb3I7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3V0X0ZyYWdDb2xvciA9IHRleHR1cmUo
dGV4LCB2ZWMzKHRleGNvb3JkLCBmbG9hdChzbGljZSkpKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgKTsKLQotICAgICAgICBtQXJyYXlQcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hh
ZGVyU291cmNlKCksIGZyYWdtZW50U2hhZGVyU291cmNlQXJyYXkpOwotICAgICAgICBpZiAobUFy
cmF5UHJvZ3JhbSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBGQUlMKCkgPDwgInNoYWRl
ciBjb21waWxhdGlvbiBmYWlsZWQuIjsKLSAgICAgICAgfQotCi0gICAgICAgIG1UZXh0dXJlQXJy
YXlTbGljZVVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1BcnJheVByb2dy
YW0sICJzbGljZSIpOwotICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXh0dXJlQXJyYXlTbGljZVVu
aWZvcm1Mb2NhdGlvbik7Ci0KLSAgICAgICAgZ2xVc2VQcm9ncmFtKG1BcnJheVByb2dyYW0pOwot
ICAgICAgICBnbFVzZVByb2dyYW0oMCk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
ICAgIH0KLQotICAgIHZvaWQgc2V0VXAzRFByb2dyYW0oKQotICAgIHsKLSAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UzRCA9IFNIQURFUl9TT1VSQ0UKLSAgICAg
ICAgKCAgICN2ZXJzaW9uIDMwMCBlc1xuCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxv
YXQ7Ci0gICAgICAgICAgICB1bmlmb3JtIGhpZ2hwIHNhbXBsZXIzRCB0ZXg7Ci0gICAgICAgICAg
ICB1bmlmb3JtIGZsb2F0IHNsaWNlOwotICAgICAgICAgICAgdW5pZm9ybSBmbG9hdCBsb2Q7Ci0g
ICAgICAgICAgICBpbiB2ZWMyIHRleGNvb3JkOwotICAgICAgICAgICAgb3V0IHZlYzQgb3V0X0Zy
YWdDb2xvcjsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBvdXRfRnJhZ0NvbG9yID0gdGV4dHVyZUxvZCh0ZXgsIHZlYzModGV4Y29vcmQs
IHNsaWNlKSwgbG9kKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBtM0RQ
cm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlKCksIGZyYWdtZW50U2hh
ZGVyU291cmNlM0QpOwotICAgICAgICBpZiAobTNEUHJvZ3JhbSA9PSAwKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBGQUlMKCkgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQuIjsKLSAgICAg
ICAgfQotCi0gICAgICAgIG1UZXh0dXJlM0RTbGljZVVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5p
Zm9ybUxvY2F0aW9uKG0zRFByb2dyYW0sICJzbGljZSIpOwotICAgICAgICBBU1NFUlRfTkUoLTEs
IG1UZXh0dXJlM0RTbGljZVVuaWZvcm1Mb2NhdGlvbik7Ci0KLSAgICAgICAgbVRleHR1cmUzRExP
RFVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG0zRFByb2dyYW0sICJsb2Qi
KTsKLSAgICAgICAgQVNTRVJUX05FKC0xLCBtVGV4dHVyZTNETE9EVW5pZm9ybUxvY2F0aW9uKTsK
LQotICAgICAgICBnbFVzZVByb2dyYW0obTNEUHJvZ3JhbSk7Ci0gICAgICAgIGdsVW5pZm9ybTFm
KG1UZXh0dXJlM0RMT0RVbmlmb3JtTG9jYXRpb24sIDApOwotICAgICAgICBnbFVzZVByb2dyYW0o
MCk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZvaWQgc2V0
VXAyRFByb2dyYW0oKQotICAgIHsKLSAgICAgICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNvdXJjZTJEID0gU0hBREVSX1NPVVJD
RQotICAgICAgICAoICAgI3ZlcnNpb24gMzAwIGVzXG4KLSAgICAgICAgICAgIHByZWNpc2lvbiBo
aWdocCBmbG9hdDsKLSAgICAgICAgICAgIHVuaWZvcm0gaGlnaHAgc2FtcGxlcjJEIHRleDsKLSAg
ICAgICAgICAgIGluIHZlYzIgdGV4Y29vcmQ7Ci0gICAgICAgICAgICBvdXQgdmVjNCBvdXRfRnJh
Z0NvbG9yOwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgIG91dF9GcmFnQ29sb3IgPSB0ZXh0dXJlKHRleCwgdGV4Y29vcmQpOwotICAgICAg
ICAgICAgfQotICAgICAgICApOwotICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KLQotICAgICAg
ICBtMkRQcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hhZGVyU291cmNlKCksIGZyYWdt
ZW50U2hhZGVyU291cmNlMkQpOwotICAgICAgICBBU1NFUlRfTkUoMHUsIG0yRFByb2dyYW0pOwot
Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZvaWQgc2V0VXBD
dWJlUHJvZ3JhbSgpCi0gICAgewotICAgICAgICAvLyBBIHZlcnkgc2ltcGxlIGZyYWdtZW50IHNo
YWRlciB0byBzYW1wbGUgZnJvbSB0aGUgbmVnYXRpdmUtWSBmYWNlIG9mIGEgdGV4dHVyZSBjdWJl
LgotICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IGN1YmVGUyA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKCAgICN2ZXJzaW9uIDMwMCBlc1xuCi0g
ICAgICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLSAgICAgICAgICAgIHVuaWZvcm0g
c2FtcGxlckN1YmUgdVRleHR1cmU7Ci0gICAgICAgICAgICBpbiB2ZWMyIHRleGNvb3JkOwotICAg
ICAgICAgICAgb3V0IHZlYzQgb3V0X0ZyYWdDb2xvcjsKLQotICAgICAgICAgICAgdm9pZCBtYWlu
KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRfRnJhZ0NvbG9yID0gdGV4dHVy
ZSh1VGV4dHVyZSwgdmVjMyh0ZXhjb29yZC54LCAtMSwgdGV4Y29vcmQueSkpOwotICAgICAgICAg
ICAgfQotICAgICAgICApOwotICAgICAgICAvLyBjbGFuZy1mb3JtYXQgb24KLQotICAgICAgICBt
Q3ViZVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UoKSwgY3ViZUZT
KTsKLSAgICAgICAgQVNTRVJUX05FKDB1LCBtQ3ViZVByb2dyYW0pOwotCi0gICAgICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGdsR2VuVGV4dHVyZXMo
MSwgJm1UZXh0dXJlKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAg
c2V0VXBBcnJheVByb2dyYW0oKTsKLSAgICAgICAgc2V0VXAzRFByb2dyYW0oKTsKLSAgICAgICAg
c2V0VXAyRFByb2dyYW0oKTsKLSAgICAgICAgc2V0VXBDdWJlUHJvZ3JhbSgpOwotICAgIH0KLQot
ICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVUZXh0
dXJlcygxLCAmbVRleHR1cmUpOwotCi0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtQXJyYXlQcm9n
cmFtKTsKLSAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG0zRFByb2dyYW0pOwotICAgICAgICBnbERl
bGV0ZVByb2dyYW0obTJEUHJvZ3JhbSk7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtQ3ViZVBy
b2dyYW0pOwotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICBH
THVpbnQgbVRleHR1cmU7Ci0KLSAgICBHTHVpbnQgbUFycmF5UHJvZ3JhbTsKLSAgICBHTGludCBt
VGV4dHVyZUFycmF5U2xpY2VVbmlmb3JtTG9jYXRpb247Ci0KLSAgICBHTHVpbnQgbTNEUHJvZ3Jh
bTsKLSAgICBHTGludCBtVGV4dHVyZTNEU2xpY2VVbmlmb3JtTG9jYXRpb247Ci0gICAgR0xpbnQg
bVRleHR1cmUzRExPRFVuaWZvcm1Mb2NhdGlvbjsKLQotICAgIEdMdWludCBtMkRQcm9ncmFtOwot
Ci0gICAgR0x1aW50IG1DdWJlUHJvZ3JhbTsKLX07Ci0KLS8vIFRoaXMgdGVzdCB1c2VzIGluaXQg
ZGF0YSBmb3IgdGhlIGZpcnN0IHRocmVlIGxldmVscyBvZiB0aGUgdGV4dHVyZS4gSXQgcGFzc2Vz
IHRoZSBsZXZlbCAwIGRhdGEgaW4sIHRoZW4gcmVuZGVycywgdGhlbiBsZXZlbCAxLCB0aGVuIHJl
bmRlcnMsIGV0Yy4KLS8vIFRoaXMgZW5zdXJlcyB0aGF0IHJlbmRlcmVycyB1c2luZyB0aGUgemVy
byBMT0Qgd29ya2Fyb3VuZCAoZS5nLiBEM0QxMSBGTDlfMykgY29ycmVjdGx5IHBhc3MgaW5pdCBk
YXRhIHRvIHRoZSBtaXBtYXBwZWQgdGV4dHVyZSwKLS8vIGV2ZW4gaWYgdGhlIHRoZSB6ZXJvLUxP
RCB0ZXh0dXJlIGlzIGN1cnJlbnRseSBpbiB1c2UuCi1URVNUX1AoTWlwbWFwVGVzdCwgRElTQUJM
RURfVGhyZWVMZXZlbHNJbml0RGF0YSkKLXsKLSAgICAvLyBQYXNzIGluIGxldmVsIHplcm8gaW5p
dCBkYXRhLgotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0g
ICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQiwgZ2V0V2luZG93V2lkdGgo
KSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIEdMX1JHQiwgR0xfVU5TSUdORURfQllURSwgbUxldmVs
WmVyb0JsdWVJbml0RGF0YSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBE
aXNhYmxlIG1pcHMuCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0KLSAgICAvLyBEcmF3IGEgZnVsbC1zaXplZCBx
dWFkLCBhbmQgY2hlY2sgaXQncyBibHVlLgotICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3Jh
bSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgIEVYUEVDVF9QSVhF
TF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBH
TENvbG9yOjpibHVlKTsKLQotICAgIC8vIERyYXcgYSBoYWxmLXNpemVkIHF1YWQsIGFuZCBjaGVj
ayBpdCdzIGJsdWUuCi0gICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dX
aWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09M
T1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgR0xDb2xv
cjo6Ymx1ZSk7Ci0KLSAgICAvLyBEcmF3IGEgcXVhcnRlci1zaXplZCBxdWFkLCBhbmQgY2hlY2sg
aXQncyBibHVlLgotICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lk
dGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9S
X0VRKGdldFdpbmRvd1dpZHRoKCkgLyA4LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDgsIEdMQ29sb3I6
OmJsdWUpOwotCi0gICAgLy8gQ29tcGxldGUgdGhlIHRleHR1cmUgYnkgaW5pdGlhbGl6aW5nIHRo
ZSByZW1haW5pbmcgbGV2ZWxzLgotICAgIGludCBuID0gMTsKLSAgICB3aGlsZSAoZ2V0V2luZG93
V2lkdGgoKSAvICgxVSA8PCBuKSA+PSAxKQotICAgIHsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIG4sIEdMX1JHQiwgZ2V0V2luZG93V2lkdGgoKSAvICgxVSA8PCBuKSwgZ2V0
V2luZG93V2lkdGgoKSAvICgxVSA8PCBuKSwgMCwgR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRFLCBO
VUxMKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAgIG4rPTE7Ci0gICAg
fQotCi0gICAgLy8gUGFzcyBpbiBsZXZlbCBvbmUgaW5pdCBkYXRhLgotICAgIGdsVGV4SW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0IsIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5k
b3dIZWlnaHQoKSAvIDIsIDAsIEdMX1JHQiwgR0xfVU5TSUdORURfQllURSwgbUxldmVsT25lSW5p
dERhdGEpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gRHJhdyBhIGZ1bGwt
c2l6ZWQgcXVhZCwgYW5kIGNoZWNrIGl0J3MgYmx1ZS4KLSAgICBjbGVhckFuZERyYXdRdWFkKG0y
RFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKLSAgICBFWFBF
Q1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgp
IC8gMiwgR0xDb2xvcjo6Ymx1ZSk7Ci0KLSAgICAvLyBEcmF3IGEgaGFsZi1zaXplZCBxdWFkLCBh
bmQgY2hlY2sgaXQncyBibHVlLiBXZSd2ZSBub3QgZW5hYmxlZCBtaXBtYXBzIHlldCwgc28gb3Vy
IGluaXQgZGF0YSBmb3IgbGV2ZWwgb25lIHNob3VsZG4ndCBiZSB1c2VkLgotICAgIGNsZWFyQW5k
RHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdo
dCgpIC8gMik7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyA0
LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIEdMQ29sb3I6OmJsdWUpOwotCi0gICAgLy8gRW5hYmxl
IG1pcG1hcHMuCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
TUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUKTsKLQotICAgIC8vIERyYXcgYSBo
YWxmLXNpemVkIHF1YWQsIGFuZCBjaGVjayBpdCdzIGdyZWVuLgotICAgIGNsZWFyQW5kRHJhd1F1
YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8g
Mik7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRX
aW5kb3dIZWlnaHQoKSAvIDQsIEdMQ29sb3I6OmdyZWVuKTsKLQotICAgIC8vIERyYXcgYSBxdWFy
dGVyLXNpemVkIHF1YWQsIGFuZCBjaGVjayBpdCdzIGJsYWNrLCBzaW5jZSB3ZSd2ZSBub3QgcGFz
c2VkIGFueSBpbml0IGRhdGEgZm9yIGxldmVsIHR3by4KLSAgICBjbGVhckFuZERyYXdRdWFkKG0y
RFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQpOwot
ICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gOCwgZ2V0V2luZG93
SGVpZ2h0KCkgLyA4LCBHTENvbG9yOjpibGFjayk7Ci0KLSAgICAvLyBQYXNzIGluIGxldmVsIHR3
byBpbml0IGRhdGEuCi0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDIsIEdMX1JHQiwg
Z2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgMCwgR0xfUkdCLCBH
TF9VTlNJR05FRF9CWVRFLCBtTGV2ZWxUd29Jbml0RGF0YSk7Ci0gICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Ci0KLSAgICAvLyBEcmF3IGEgZnVsbC1zaXplZCBxdWFkLCBhbmQgY2hlY2sgaXQncyBi
bHVlLgotICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSwg
Z2V0V2luZG93SGVpZ2h0KCkpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dX
aWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENvbG9yOjpibHVlKTsKLQotICAg
IC8vIERyYXcgYSBoYWxmLXNpemVkIHF1YWQsIGFuZCBjaGVjayBpdCdzIGdyZWVuLgotICAgIGNs
ZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRv
d0hlaWdodCgpIC8gMik7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRo
KCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIEdMQ29sb3I6OmdyZWVuKTsKLQotICAgIC8v
IERyYXcgYSBxdWFydGVyLXNpemVkIHF1YWQsIGFuZCBjaGVjayBpdCdzIHJlZC4KLSAgICBjbGVh
ckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dI
ZWlnaHQoKSAvIDQpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgp
IC8gOCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA4LCBHTENvbG9yOjpyZWQpOwotCi0gICAgLy8gTm93
IGRpc2FibGUgbWlwbWFwcyBhZ2FpbiwgYW5kIHJlbmRlciBtdWx0aXBsZSBzaXplZCBxdWFkcy4g
VGhleSBzaG91bGQgYWxsIGJlIGJsdWUsIHNpbmNlIGxldmVsIDAgaXMgYmx1ZS4KLSAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFS
RVNUKTsKLSAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCks
IGdldFdpbmRvd0hlaWdodCgpKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93
V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6Ymx1ZSk7Ci0gICAg
Y2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2lu
ZG93SGVpZ2h0KCkgLyAyKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lk
dGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgR0xDb2xvcjo6Ymx1ZSk7Ci0gICAgY2xl
YXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93
SGVpZ2h0KCkgLyA0KTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgo
KSAvIDgsIGdldFdpbmRvd0hlaWdodCgpIC8gOCwgR0xDb2xvcjo6Ymx1ZSk7Ci0KLSAgICAvLyBO
b3cgcmVzZXQgbGV2ZWwgMCB0byB3aGl0ZSwga2VlcGluZyBtaXBtYXBzIGRpc2FibGVkLiBUaGVu
LCByZW5kZXIgdmFyaW91cyBzaXplZCBxdWFkcy4gVGhleSBzaG91bGQgYmUgd2hpdGUuCi0gICAg
Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQiwgZ2V0V2luZG93V2lkdGgoKSwg
Z2V0V2luZG93SGVpZ2h0KCksIDAsIEdMX1JHQiwgR0xfVU5TSUdORURfQllURSwgbUxldmVsWmVy
b1doaXRlSW5pdERhdGEpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgY2xlYXJB
bmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQo
KSk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRX
aW5kb3dIZWlnaHQoKSAvIDIsIEdMQ29sb3I6OndoaXRlKTsKLSAgICBjbGVhckFuZERyYXdRdWFk
KG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIp
OwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2lu
ZG93SGVpZ2h0KCkgLyA0LCBHTENvbG9yOjp3aGl0ZSk7Ci0gICAgY2xlYXJBbmREcmF3UXVhZCht
MkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0KTsK
LSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDgsIGdldFdpbmRv
d0hlaWdodCgpIC8gOCwgR0xDb2xvcjo6d2hpdGUpOwotCi0gICAgLy8gVGhlbiBlbmFibGUgbWlw
bWFwcyBhZ2Fpbi4gVGhlIHF1YWRzIHNob3VsZCBiZSB3aGl0ZSwgZ3JlZW4sIHJlZCByZXNwZWN0
aXZlbHkuCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUKTsKLQotICAgIGNsZWFyQW5kRHJhd1F1
YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAg
IEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVp
Z2h0KCkgLyAyLCBHTENvbG9yOjp3aGl0ZSk7Ci0gICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9n
cmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyKTsKLSAgICBF
WFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdo
dCgpIC8gNCwgR0xDb2xvcjo6Z3JlZW4pOwotICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3Jh
bSwgZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCk7Ci0gICAgRVhQ
RUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyA4LCBnZXRXaW5kb3dIZWlnaHQo
KSAvIDgsIEdMQ29sb3I6OnJlZCk7Ci19Ci0KLS8vIFRoaXMgdGVzdCBnZW5lcmF0ZXMgKGFuZCB1
c2VzKSBtaXBtYXBzIG9uIGEgdGV4dHVyZSB1c2luZyBpbml0IGRhdGEuIEQzRDExIHdpbGwgdXNl
IGEgbm9uLXJlbmRlcmFibGUgVGV4dHVyZVN0b3JhZ2UgZm9yIHRoaXMuCi0vLyBUaGUgdGVzdCB0
aGVuIGRpc2FibGVzIG1pcHMsIHJlbmRlcnMgdG8gbGV2ZWwgemVybyBvZiB0aGUgdGV4dHVyZSwg
YW5kIHJlZW5hYmxlcyBtaXBzIGJlZm9yZSB1c2luZyB0aGUgdGV4dHVyZSBhZ2Fpbi4KLS8vIFRv
IGRvIHRoaXMsIEQzRDExIGhhcyB0byBjb252ZXJ0IHRoZSBUZXh0dXJlU3RvcmFnZSBpbnRvIGEg
cmVuZGVyYWJsZSBvbmUuCi0vLyBUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBjb252ZXJzaW9u
IHdvcmtzIGNvcnJlY3RseS4KLS8vIEluIHBhcnRpY3VsYXIsIG9uIEQzRDExIEZlYXR1cmUgTGV2
ZWwgOV8zIGl0IGVuc3VyZXMgdGhhdCBib3RoIHRoZSB6ZXJvIExPRCB3b3JrYXJvdW5kIHRleHR1
cmUgQU5EIHRoZSAnbm9ybWFsJyB0ZXh0dXJlIGFyZSBjb3BpZWQgZHVyaW5nIGNvbnZlcnNpb24u
Ci1URVNUX1AoTWlwbWFwVGVzdCwgR2VuZXJhdGVNaXBtYXBGcm9tSW5pdERhdGFUaGVuUmVuZGVy
KQotewotICAgIC8vIFBhc3MgaW4gaW5pdGlhbCBkYXRhIHNvIHRoZSB0ZXh0dXJlIGlzIGJsdWUu
Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKLSAgICBnbFRl
eEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRX
aW5kb3dIZWlnaHQoKSwgMCwgR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRFLCBtTGV2ZWxaZXJvQmx1
ZUluaXREYXRhKTsKLQotICAgIC8vIFRoZW4gZ2VuZXJhdGUgdGhlIG1pcHMuCi0gICAgZ2xHZW5l
cmF0ZU1pcG1hcChHTF9URVhUVVJFXzJEKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQot
ICAgIC8vIEVuYWJsZSBtaXBtYXBzLgotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVCk7Ci0KLSAg
ICAvLyBOb3cgZHJhdyB0aGUgdGV4dHVyZSB0byB2YXJpb3VzIGRpZmZlcmVudCBzaXplZCBhcmVh
cy4KLSAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCksIGdl
dFdpbmRvd0hlaWdodCgpKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lk
dGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6Ymx1ZSk7Ci0KLSAgICAv
LyBVc2UgbWlwIGxldmVsIDEKLSAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdp
bmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIpOwotICAgIEVYUEVDVF9QSVhF
TF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCBH
TENvbG9yOjpibHVlKTsKLQotICAgIC8vIFVzZSBtaXAgbGV2ZWwgMgotICAgIGNsZWFyQW5kRHJh
d1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgp
IC8gNCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyA4LCBn
ZXRXaW5kb3dIZWlnaHQoKSAvIDgsIEdMQ29sb3I6OmJsdWUpOwotCi0gICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICAvLyBEaXNhYmxlIG1pcHMuIFJlbmRlciBhIHF1YWQgdXNpbmcgdGhl
IHRleHR1cmUgYW5kIGVuc3VyZSBpdCdzIGJsdWUuCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgY2xlYXJB
bmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQo
KSk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRX
aW5kb3dIZWlnaHQoKSAvIDIsIEdMQ29sb3I6OmJsdWUpOwotCi0gICAgLy8gQ2xlYXIgbGV2ZWwg
MCBvZiB0aGUgdGV4dHVyZSB0byByZWQuCi0gICAgY2xlYXJUZXh0dXJlTGV2ZWwwKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlMkQsIDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOwotCi0gICAgLy8gUmVl
bmFibGUgbWlwcywgYW5kIHRyeSByZW5kZXJpbmcgZGlmZmVyZW50LXNpemVkIHF1YWRzLgotICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdM
X0xJTkVBUl9NSVBNQVBfTkVBUkVTVCk7Ci0KLSAgICAvLyBMZXZlbCAwIGlzIG5vdyByZWQsIHNv
IHRoaXMgc2hvdWxkIHJlbmRlciByZWQuCi0gICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFt
LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0gICAgRVhQRUNUX1BJWEVM
X0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIEdM
Q29sb3I6OnJlZCk7Ci0KLSAgICAvLyBVc2UgbWlwIGxldmVsIDEsIGJsdWUuCi0gICAgY2xlYXJB
bmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVp
Z2h0KCkgLyAyKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAv
IDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCwgR0xDb2xvcjo6Ymx1ZSk7Ci0KLSAgICAvLyBVc2Ug
bWlwIGxldmVsIDIsIGJsdWUuCi0gICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRX
aW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0KTsKLSAgICBFWFBFQ1RfUElY
RUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDgsIGdldFdpbmRvd0hlaWdodCgpIC8gOCwg
R0xDb2xvcjo6Ymx1ZSk7Ci19Ci0KLS8vIFRoaXMgdGVzdCBlbnN1cmVzIHRoYXQgbWlwcyBhcmUg
Y29ycmVjdGx5IGdlbmVyYXRlZCBmcm9tIGEgcmVuZGVyZWQgaW1hZ2UuCi0vLyBJbiBwYXJ0aWN1
bGFyLCBvbiBEM0QxMSBGZWF0dXJlIExldmVsIDlfMywgdGhlIGNsZWFyIGNhbGwgd2lsbCBiZSBw
ZXJmb3JtZWQgb24gdGhlIHplcm8tbGV2ZWwgdGV4dHVyZSwgcmF0aGVyIHRoYW4gdGhlIG1pcHBl
ZCBvbmUuCi0vLyBUaGUgdGVzdCBlbnN1cmVzIHRoYXQgdGhlIHplcm8tbGV2ZWwgdGV4dHVyZSBp
cyBjb3JyZWN0bHkgY29waWVkIGludG8gdGhlIG1pcHBlZCB0ZXh0dXJlIGJlZm9yZSB0aGUgbWlw
bWFwcyBhcmUgZ2VuZXJhdGVkLgotVEVTVF9QKE1pcG1hcFRlc3QsIEdlbmVyYXRlTWlwbWFwRnJv
bVJlbmRlcmVkSW1hZ2UpCi17Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4
dHVyZTJEKTsKLSAgICAvLyBDbGVhciB0aGUgdGV4dHVyZSB0byBibHVlLgotICAgIGNsZWFyVGV4
dHVyZUxldmVsMChHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJELCAwLjBmLCAwLjBmLCAxLjBmLCAx
LjBmKTsKLQotICAgIC8vIFRoZW4gZ2VuZXJhdGUgdGhlIG1pcHMKLSAgICBnbEdlbmVyYXRlTWlw
bWFwKEdMX1RFWFRVUkVfMkQpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8g
RW5hYmxlIG1pcHMuCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUKTsKLQotICAgIC8vIE5vdyBk
cmF3IHRoZSB0ZXh0dXJlIHRvIHZhcmlvdXMgZGlmZmVyZW50IHNpemVkIGFyZWFzLgotICAgIGNs
ZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVp
Z2h0KCkpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwg
Z2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENvbG9yOjpibHVlKTsKLQotICAgIC8vIFVzZSBtaXAg
bGV2ZWwgMQotICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgo
KSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMik7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VR
KGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIEdMQ29sb3I6OmJs
dWUpOwotCi0gICAgLy8gVXNlIG1pcCBsZXZlbCAyCi0gICAgY2xlYXJBbmREcmF3UXVhZChtMkRQ
cm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0KTsKLSAg
ICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDgsIGdldFdpbmRvd0hl
aWdodCgpIC8gOCwgR0xDb2xvcjo6Ymx1ZSk7Ci19Ci0KLS8vIFRlc3QgdG8gZW5zdXJlIHRoYXQg
cmVuZGVyaW5nIHRvIGEgbWlwbWFwcGVkIHRleHR1cmUgd29ya3MsIHJlZ2FyZGxlc3Mgb2Ygd2hl
dGhlciBtaXBtYXBzIGFyZSBlbmFibGVkIG9yIG5vdC4KLS8vIFRPRE86IFRoaXMgdGVzdCBoaXRz
IGEgdGV4dHVyZSByZWJpbmQgYnVnIGluIHRoZSBEM0QxMSByZW5kZXJlci4gRml4IHRoaXMuCi1U
RVNUX1AoTWlwbWFwVGVzdCwgUmVuZGVyT250b0xldmVsWmVyb0FmdGVyR2VuZXJhdGVNaXBtYXAp
Ci17Ci0gICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGlzIGJyb2tl
biBvbiBBTUQgT3BlbkdMCi0gICAgaWYgKChJc0FNRCgpIHx8IElzSW50ZWwoKSkgJiYgZ2V0UGxh
dGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkK
LSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsL0FNRCBP
cGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOwotCi0gICAgLy8gQ2xlYXIgdGhl
IHRleHR1cmUgdG8gYmx1ZS4KLSAgICBjbGVhclRleHR1cmVMZXZlbDAoR0xfVEVYVFVSRV8yRCwg
bVRleHR1cmUyRCwgMC4wZiwgMC4wZiwgMS4wZiwgMS4wZik7Ci0KLSAgICAvLyBOb3csIGRyYXcg
dGhlIHRleHR1cmUgdG8gYSBxdWFkIHRoYXQncyB0aGUgc2FtZSBzaXplIGFzIHRoZSB0ZXh0dXJl
LiBUaGlzIGRyYXdzIHRvIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyLgotICAgIC8vIFRoZSBxdWFk
IHNob3VsZCBiZSBibHVlLgotICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2lu
ZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9F
UShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENvbG9yOjpi
bHVlKTsKLQotICAgIC8vIE5vdyBnbyBiYWNrIHRvIHRoZSB0ZXh0dXJlLCBhbmQgZ2VuZXJhdGUg
bWlwcyBvbiBpdC4KLSAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfMkQpOwotICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gTm93IHRyeSByZW5kZXJpbmcgdGhlIHRleHR1
cmVkIHF1YWQgYWdhaW4uIE5vdGU6IHdlJ3ZlIG5vdCB0b2xkIEdMIHRvIHVzZSB0aGUgZ2VuZXJh
dGVkIG1pcHMuCi0gICAgLy8gVGhlIHF1YWQgc2hvdWxkIGJlIGJsdWUuCi0gICAgY2xlYXJBbmRE
cmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7
Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5k
b3dIZWlnaHQoKSAvIDIsIEdMQ29sb3I6OmJsdWUpOwotCi0gICAgLy8gTm93IHRlbGwgR0wgdG8g
dXNlIHRoZSBnZW5lcmF0ZWQgbWlwcy4KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QpOwotICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gTm93IHJlbmRlciB0aGUgdGV4dHVyZWQg
cXVhZCBhZ2Fpbi4gSXQgc2hvdWxkIGJlIHN0aWxsIGJlIGJsdWUuCi0gICAgY2xlYXJBbmREcmF3
UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0g
ICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dI
ZWlnaHQoKSAvIDIsIEdMQ29sb3I6OmJsdWUpOwotCi0gICAgLy8gTm93IHJlbmRlciB0aGUgdGV4
dHVyZWQgcXVhZCB0byBhbiBhcmVhIHNtYWxsZXIgdGhhbiB0aGUgdGV4dHVyZSAoaS5lLiB0byBm
b3JjZSBtaW5pZmljYXRpb24pLiBUaGlzIHNob3VsZCBiZSBibHVlLgotICAgIGNsZWFyQW5kRHJh
d1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgp
IC8gNCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyA4LCBn
ZXRXaW5kb3dIZWlnaHQoKSAvIDgsIEdMQ29sb3I6OmJsdWUpOwotCi0gICAgLy8gTm93IGNsZWFy
IHRoZSB0ZXh0dXJlIHRvIGdyZWVuLiBUaGlzIGp1c3QgY2xlYXJzIHRoZSB0b3AgbGV2ZWwuIFRo
ZSBsb3dlciBtaXBzIHNob3VsZCByZW1haW4gYmx1ZS4KLSAgICBjbGVhclRleHR1cmVMZXZlbDAo
R0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCwgMC4wZiwgMS4wZiwgMC4wZiwgMS4wZik7Ci0KLSAg
ICAvLyBSZW5kZXIgYSB0ZXh0dXJlZCBxdWFkIGVxdWFsIGluIHNpemUgdG8gdGhlIHRleHR1cmUu
IFRoaXMgc2hvdWxkIGJlIGdyZWVuLCBzaW5jZSB3ZSBqdXN0IGNsZWFyZWQgbGV2ZWwgMC4KLSAg
ICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRv
d0hlaWdodCgpKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAv
IDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6Z3JlZW4pOwotCi0gICAgLy8gUmVu
ZGVyIGEgc21hbGwgdGV4dHVyZWQgcXVhZC4gVGhpcyBmb3JjZXMgbWluaWZpY2F0aW9uLCBzbyBz
aG91bGQgcmVuZGVyIGJsdWUgKHRoZSBjb2xvciBvZiBsZXZlbHMgMSspLgotICAgIGNsZWFyQW5k
RHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdo
dCgpIC8gNCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyA4
LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDgsIEdMQ29sb3I6OmJsdWUpOwotCi0gICAgLy8gRGlzYWJs
ZSBtaXBtYXBzIGFnYWluCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LQotICAgIC8vIFJlbmRlciBhIHRleHR1cmVkIHF1YWQgZXF1YWwgaW4gc2l6ZSB0byB0aGUgdGV4
dHVyZS4gVGhpcyBzaG91bGQgYmUgZ3JlZW4sIHRoZSBjb2xvciBvZiBsZXZlbCAwIGluIHRoZSB0
ZXh0dXJlLgotICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgo
KSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5k
b3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCBHTENvbG9yOjpncmVlbik7Ci0K
LSAgICAvLyBSZW5kZXIgYSBzbWFsbCB0ZXh0dXJlZCBxdWFkLiBUaGlzIHdvdWxkIGZvcmNlIG1p
bmlmaWNhdGlvbiBpZiBtaXBzIHdlcmUgZW5hYmxlZCwgYnV0IHRoZXkncmUgbm90LiBUaGVyZWZv
cmUsIHRoaXMgc2hvdWxkIGJlIGdyZWVuLgotICAgIGNsZWFyQW5kRHJhd1F1YWQobTJEUHJvZ3Jh
bSwgZ2V0V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCk7Ci0gICAgRVhQ
RUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyA4LCBnZXRXaW5kb3dIZWlnaHQo
KSAvIDgsIEdMQ29sb3I6OmdyZWVuKTsKLX0KLQotLy8gVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCB0
aGUgbGV2ZWwtemVybyB3b3JrYXJvdW5kIGZvciBUZXh0dXJlQ3ViZXMgKG9uIEQzRDExIEZlYXR1
cmUgTGV2ZWwgOV8zKQotLy8gd29ya3MgYXMgZXhwZWN0ZWQuIEl0IHRlc3RzIGVuYWJsaW5nL2Rp
c2FibGluZyBtaXBtYXBzLCBnZW5lcmF0aW5nIG1pcG1hcHMsIGFuZCByZW5kZXJpbmcgdG8gbGV2
ZWwgemVyby4KLVRFU1RfUChNaXBtYXBUZXN0LCBUZXh0dXJlQ3ViZUdlbmVyYWxMZXZlbFplcm8p
Ci17Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0NVQkVfTUFQLCBtVGV4dHVyZUN1YmUp
OwotCi0gICAgLy8gRHJhdy4gU2luY2UgdGhlIG5lZ2F0aXZlLVkgZmFjZSdzIGlzIGJsdWUsIHRo
aXMgc2hvdWxkIGJlIGJsdWUuCi0gICAgY2xlYXJBbmREcmF3UXVhZChtQ3ViZVByb2dyYW0sIGdl
dFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09M
T1JfRVEoMCwgMCwgR0xDb2xvcjo6Ymx1ZSk7Ci0KLSAgICAvLyBHZW5lcmF0ZSBtaXBtYXBzLCBh
bmQgcmVuZGVyLiBUaGlzIHNob3VsZCBiZSBibHVlLgotICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xf
VEVYVFVSRV9DVUJFX01BUCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VCRV9N
QVAsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUKTsKLSAg
ICBjbGVhckFuZERyYXdRdWFkKG1DdWJlUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2lu
ZG93SGVpZ2h0KCkpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpi
bHVlKTsKLQotICAgIC8vIERyYXcgdXNpbmcgYSBzbWFsbGVyIHZpZXdwb3J0ICh0byBmb3JjZSBh
IGxvd2VyIExPRCBvZiB0aGUgdGV4dHVyZSkuIFRoaXMgc2hvdWxkIHN0aWxsIGJlIGJsdWUuCi0g
ICAgY2xlYXJBbmREcmF3UXVhZChtQ3ViZVByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBn
ZXRXaW5kb3dIZWlnaHQoKSAvIDQpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBH
TENvbG9yOjpibHVlKTsKLQotICAgIC8vIE5vdyBjbGVhciB0aGUgbmVnYXRpdmUtWSBmYWNlIG9m
IHRoZSBjdWJlIHRvIHJlZC4KLSAgICBjbGVhclRleHR1cmVMZXZlbDAoR0xfVEVYVFVSRV9DVUJF
X01BUF9ORUdBVElWRV9ZLCBtVGV4dHVyZUN1YmUsIDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOwot
Ci0gICAgLy8gRHJhdyB1c2luZyBhIGZ1bGwtc2l6ZSB2aWV3cG9ydC4gVGhpcyBzaG91bGQgYmUg
cmVkLgotICAgIGNsZWFyQW5kRHJhd1F1YWQobUN1YmVQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgp
LCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdM
Q29sb3I6OnJlZCk7Ci0KLSAgICAvLyBEcmF3IHVzaW5nIGEgcXVhcnRlci1zaXplIHZpZXdwb3J0
LCB0byBmb3JjZSBhIGxvd2VyIExPRC4gVGhpcyBzaG91bGQgYmUgKkJMVUUqLCBzaW5jZSB3ZSBv
bmx5IGNsZWFyZWQgbGV2ZWwgemVybwotICAgIC8vIG9mIHRoZSBuZWdhdGl2ZS1ZIGZhY2UgdG8g
cmVkLCBhbmQgbGVmdCBpdHMgbWlwbWFwcyBibHVlLgotICAgIGNsZWFyQW5kRHJhd1F1YWQobUN1
YmVQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0KTsK
LSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Ymx1ZSk7Ci0KLSAgICAv
LyBEaXNhYmxlIG1pcG1hcHMgYWdhaW4sIGFuZCBkcmF3IGEgdG8gYSBxdWFydGVyLXNpemUgdmll
d3BvcnQuCi0gICAgLy8gU2luY2UgdGhpcyBzaG91bGQgdXNlIGxldmVsIHplcm8gb2YgdGhlIHRl
eHR1cmUsIHRoaXMgc2hvdWxkIGJlICpSRUQqLgotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGNs
ZWFyQW5kRHJhd1F1YWQobUN1YmVQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2lu
ZG93SGVpZ2h0KCkgLyA0KTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xv
cjo6cmVkKTsKLX0KLQotLy8gVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCByZW5kZXJpbmcgdG8gbGV2
ZWwtemVybyBvZiBhIFRleHR1cmVDdWJlIHdvcmtzIGFzIGV4cGVjdGVkLgotVEVTVF9QKE1pcG1h
cFRlc3QsIFRleHR1cmVDdWJlUmVuZGVyVG9MZXZlbFplcm8pCi17Ci0gICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFX0NVQkVfTUFQLCBtVGV4dHVyZUN1YmUpOwotCi0gICAgLy8gRHJhdy4gU2lu
Y2UgdGhlIG5lZ2F0aXZlLVkgZmFjZSdzIGlzIGJsdWUsIHRoaXMgc2hvdWxkIGJlIGJsdWUuCi0g
ICAgY2xlYXJBbmREcmF3UXVhZChtQ3ViZVByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCksIGdldFdp
bmRvd0hlaWdodCgpKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6
Ymx1ZSk7Ci0KLSAgICAvLyBOb3cgY2xlYXIgdGhlIG5lZ2F0aXZlLVkgZmFjZSBvZiB0aGUgY3Vi
ZSB0byByZWQuCi0gICAgY2xlYXJUZXh0dXJlTGV2ZWwwKEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVH
QVRJVkVfWSwgbVRleHR1cmVDdWJlLCAxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKLQotICAgIC8v
IERyYXcgdXNpbmcgYSBmdWxsLXNpemUgdmlld3BvcnQuIFRoaXMgc2hvdWxkIGJlIHJlZC4KLSAg
ICBjbGVhckFuZERyYXdRdWFkKG1DdWJlUHJvZ3JhbSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2lu
ZG93SGVpZ2h0KCkpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpy
ZWQpOwotCi0gICAgLy8gRHJhdyBhIHRvIGEgcXVhcnRlci1zaXplIHZpZXdwb3J0LiBUaGlzIHNo
b3VsZCBhbHNvIGJlIHJlZC4KLSAgICBjbGVhckFuZERyYXdRdWFkKG1DdWJlUHJvZ3JhbSwgZ2V0
V2luZG93V2lkdGgoKSAvIDQsIGdldFdpbmRvd0hlaWdodCgpIC8gNCk7Ci0gICAgRVhQRUNUX1BJ
WEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OnJlZCk7Ci19Ci0KLS8vIENyZWF0ZXMgYSBtaXBt
YXBwZWQgMkQgYXJyYXkgdGV4dHVyZSB3aXRoIHRocmVlIGxheWVycywgYW5kIGNhbGxzIEFOR0xF
J3MgR2VuZXJhdGVNaXBtYXAuCi0vLyBUaGVuIHRlc3RzIGlmIHRoZSBtaXBtYXBzIGFyZSByZW5k
ZXJlZCBjb3JyZWN0bHkgZm9yIGFsbCB0aHJlZSBsYXllcnMuCi1URVNUX1AoTWlwbWFwVGVzdEVT
MywgTWlwbWFwc0ZvclRleHR1cmVBcnJheSkKLXsKLSAgICBpbnQgcHggPSBnZXRXaW5kb3dXaWR0
aCgpIC8gMjsKLSAgICBpbnQgcHkgPSBnZXRXaW5kb3dIZWlnaHQoKSAvIDI7Ci0KLSAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkRfQVJSQVksIG1UZXh0dXJlKTsKLQotICAgIGdsVGV4U3Rv
cmFnZTNEKEdMX1RFWFRVUkVfMkRfQVJSQVksIDUsIEdMX1JHQkE4LCAxNiwgMTYsIDMpOwotCi0g
ICAgLy8gRmlsbCB0aGUgZmlyc3QgbGF5ZXIgd2l0aCByZWQKLSAgICBzdGQ6OnZlY3RvcjxHTENv
bG9yPiBwaXhlbHNSZWQoMTYgKiAxNiwgR0xDb2xvcjo6cmVkKTsKLSAgICBnbFRleFN1YkltYWdl
M0QoR0xfVEVYVFVSRV8yRF9BUlJBWSwgMCwgMCwgMCwgMCwgMTYsIDE2LCAxLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICAgICBwaXhlbHNSZWQuZGF0YSgpKTsK
LQotICAgIC8vIEZpbGwgdGhlIHNlY29uZCBsYXllciB3aXRoIGdyZWVuCi0gICAgc3RkOjp2ZWN0
b3I8R0xDb2xvcj4gcGl4ZWxzR3JlZW4oMTYgKiAxNiwgR0xDb2xvcjo6Z3JlZW4pOwotICAgIGds
VGV4U3ViSW1hZ2UzRChHTF9URVhUVVJFXzJEX0FSUkFZLCAwLCAwLCAwLCAxLCAxNiwgMTYsIDEs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgICAgIHBpeGVsc0dy
ZWVuLmRhdGEoKSk7Ci0KLSAgICAvLyBGaWxsIHRoZSB0aGlyZCBsYXllciB3aXRoIGJsdWUKLSAg
ICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNCbHVlKDE2ICogMTYsIEdMQ29sb3I6OmJsdWUp
OwotICAgIGdsVGV4U3ViSW1hZ2UzRChHTF9URVhUVVJFXzJEX0FSUkFZLCAwLCAwLCAwLCAyLCAx
NiwgMTYsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgICAg
IHBpeGVsc0JsdWUuZGF0YSgpKTsKLQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
X0FSUkFZLCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTkVBUkVTVCk7
Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkRfQVJSQVksIEdMX1RFWFRVUkVfTUFH
X0ZJTFRFUiwgR0xfTElORUFSKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAg
Z2xHZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFXzJEX0FSUkFZKTsKLQotICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOwotCi0gICAgZ2xVc2VQcm9ncmFtKG1BcnJheVByb2dyYW0pOwotCi0gICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBEcmF3IHRoZSBmaXJzdCBzbGljZQotICAgIGds
VW5pZm9ybTFpKG1UZXh0dXJlQXJyYXlTbGljZVVuaWZvcm1Mb2NhdGlvbiwgMCk7Ci0gICAgZHJh
d1F1YWQobUFycmF5UHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKHB4LCBweSwgR0xDb2xvcjo6cmVk
KTsKLQotICAgIC8vIERyYXcgdGhlIHNlY29uZCBzbGljZQotICAgIGdsVW5pZm9ybTFpKG1UZXh0
dXJlQXJyYXlTbGljZVVuaWZvcm1Mb2NhdGlvbiwgMSk7Ci0gICAgZHJhd1F1YWQobUFycmF5UHJv
Z3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAg
RVhQRUNUX1BJWEVMX0NPTE9SX0VRKHB4LCBweSwgR0xDb2xvcjo6Z3JlZW4pOwotCi0gICAgLy8g
RHJhdyB0aGUgdGhpcmQgc2xpY2UKLSAgICBnbFVuaWZvcm0xaShtVGV4dHVyZUFycmF5U2xpY2VV
bmlmb3JtTG9jYXRpb24sIDIpOwotICAgIGRyYXdRdWFkKG1BcnJheVByb2dyYW0sICJwb3NpdGlv
biIsIDAuNWYpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9QSVhFTF9D
T0xPUl9FUShweCwgcHksIEdMQ29sb3I6OmJsdWUpOwotfQotCi0vLyBDcmVhdGUgYSBtaXBtYXBw
ZWQgMkQgYXJyYXkgdGV4dHVyZSB3aXRoIG1vcmUgbGF5ZXJzIHRoYW4gd2lkdGggLyBoZWlnaHQs
IGFuZCBjYWxsCi0vLyBHZW5lcmF0ZU1pcG1hcC4KLVRFU1RfUChNaXBtYXBUZXN0RVMzLCBNaXBt
YXBGb3JEZWVwVGV4dHVyZUFycmF5KQotewotICAgIGludCBweCA9IGdldFdpbmRvd1dpZHRoKCkg
LyAyOwotICAgIGludCBweSA9IGdldFdpbmRvd0hlaWdodCgpIC8gMjsKLQotICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRF9BUlJBWSwgbVRleHR1cmUpOwotCi0gICAgLy8gRmlsbCB0aGUg
d2hvbGUgdGV4dHVyZSB3aXRoIHJlZC4KLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNS
ZWQoMiAqIDIgKiA0LCBHTENvbG9yOjpyZWQpOwotICAgIGdsVGV4SW1hZ2UzRChHTF9URVhUVVJF
XzJEX0FSUkFZLCAwLCBHTF9SR0JBOCwgMiwgMiwgNCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwKLSAgICAgICAgICAgICAgICAgcGl4ZWxzUmVkLmRhdGEoKSk7Ci0KLSAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRF9BUlJBWSwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9M
SU5FQVJfTUlQTUFQX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
X0FSUkFZLCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0KLSAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKLQotICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8yRF9BUlJB
WSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsVXNlUHJvZ3JhbShtQXJy
YXlQcm9ncmFtKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gRHJhdyB0
aGUgZmlyc3Qgc2xpY2UKLSAgICBnbFVuaWZvcm0xaShtVGV4dHVyZUFycmF5U2xpY2VVbmlmb3Jt
TG9jYXRpb24sIDApOwotICAgIGRyYXdRdWFkKG1BcnJheVByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9F
UShweCwgcHksIEdMQ29sb3I6OnJlZCk7Ci0KLSAgICAvLyBEcmF3IHRoZSBmb3VydGggc2xpY2UK
LSAgICBnbFVuaWZvcm0xaShtVGV4dHVyZUFycmF5U2xpY2VVbmlmb3JtTG9jYXRpb24sIDMpOwot
ICAgIGRyYXdRdWFkKG1BcnJheVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShweCwgcHksIEdMQ29s
b3I6OnJlZCk7Ci19Ci0KLS8vIENyZWF0ZXMgYSBtaXBtYXBwZWQgM0QgdGV4dHVyZSB3aXRoIHR3
byBsYXllcnMsIGFuZCBjYWxscyBBTkdMRSdzIEdlbmVyYXRlTWlwbWFwLgotLy8gVGhlbiB0ZXN0
cyBpZiB0aGUgbWlwbWFwcyBhcmUgcmVuZGVyZWQgY29ycmVjdGx5IGZvciBhbGwgdHdvIGxheWVy
cy4KLVRFU1RfUChNaXBtYXBUZXN0RVMzLCBNaXBtYXBzRm9yVGV4dHVyZTNEKQotewotICAgIGlu
dCBweCA9IGdldFdpbmRvd1dpZHRoKCkgLyAyOwotICAgIGludCBweSA9IGdldFdpbmRvd0hlaWdo
dCgpIC8gMjsKLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8zRCwgbVRleHR1cmUpOwot
Ci0gICAgZ2xUZXhTdG9yYWdlM0QoR0xfVEVYVFVSRV8zRCwgNSwgR0xfUkdCQTgsIDE2LCAxNiwg
Mik7Ci0KLSAgICAvLyBGaWxsIHRoZSBmaXJzdCBsYXllciB3aXRoIHJlZAotICAgIHN0ZDo6dmVj
dG9yPEdMQ29sb3I+IHBpeGVsc1JlZCgxNiAqIDE2LCBHTENvbG9yOjpyZWQpOwotICAgIGdsVGV4
U3ViSW1hZ2UzRChHTF9URVhUVVJFXzNELCAwLCAwLCAwLCAwLCAxNiwgMTYsIDEsIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgICAgIHBpeGVsc1JlZC5kYXRhKCkp
OwotCi0gICAgLy8gRmlsbCB0aGUgc2Vjb25kIGxheWVyIHdpdGggZ3JlZW4KLSAgICBzdGQ6OnZl
Y3RvcjxHTENvbG9yPiBwaXhlbHNHcmVlbigxNiAqIDE2LCBHTENvbG9yOjpncmVlbik7Ci0gICAg
Z2xUZXhTdWJJbWFnZTNEKEdMX1RFWFRVUkVfM0QsIDAsIDAsIDAsIDEsIDE2LCAxNiwgMSwgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAgICAgICAgICAgcGl4ZWxzR3JlZW4u
ZGF0YSgpKTsKLQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzNELCBHTF9URVhUVVJF
X01JTl9GSUxURVIsIEdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzNELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0K
LSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVY
VFVSRV8zRCk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsVXNlUHJvZ3Jh
bShtM0RQcm9ncmFtKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gTWlw
bWFwIGxldmVsIDAKLSAgICAvLyBEcmF3IHRoZSBmaXJzdCBzbGljZQotICAgIGdsVW5pZm9ybTFm
KG1UZXh0dXJlM0RMT0RVbmlmb3JtTG9jYXRpb24sIDAuKTsKLSAgICBnbFVuaWZvcm0xZihtVGV4
dHVyZTNEU2xpY2VVbmlmb3JtTG9jYXRpb24sIDAuMjVmKTsKLSAgICBkcmF3UXVhZChtM0RQcm9n
cmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBF
WFBFQ1RfUElYRUxfQ09MT1JfRVEocHgsIHB5LCBHTENvbG9yOjpyZWQpOwotCi0gICAgLy8gRHJh
dyB0aGUgc2Vjb25kIHNsaWNlCi0gICAgZ2xVbmlmb3JtMWYobVRleHR1cmUzRFNsaWNlVW5pZm9y
bUxvY2F0aW9uLCAwLjc1Zik7Ci0gICAgZHJhd1F1YWQobTNEUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9S
X0VRKHB4LCBweSwgR0xDb2xvcjo6Z3JlZW4pOwotCi0gICAgLy8gTWlwbWFwIGxldmVsIDEKLSAg
ICAvLyBUaGUgc2Vjb25kIG1pcG1hcCBzaG91bGQgb25seSBoYXZlIG9uZSBzbGljZS4KLSAgICBn
bFVuaWZvcm0xZihtVGV4dHVyZTNETE9EVW5pZm9ybUxvY2F0aW9uLCAxLik7Ci0gICAgZHJhd1F1
YWQobTNEUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Ci0gICAgRVhQRUNUX1BJWEVMX05FQVIocHgsIHB5LCAxMjcsIDEyNywgMCwgMjU1LCAxLjAp
OwotCi0gICAgZ2xVbmlmb3JtMWYobVRleHR1cmUzRFNsaWNlVW5pZm9ybUxvY2F0aW9uLCAwLjc1
Zik7Ci0gICAgZHJhd1F1YWQobTNEUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX1BJWEVMX05FQVIocHgsIHB5LCAxMjcsIDEy
NywgMCwgMjU1LCAxLjApOwotfQotCi0vLyBDcmVhdGUgYSAyRCB0ZXh0dXJlIHdpdGggbGV2ZWxz
IDAtMiwgY2FsbCBHZW5lcmF0ZU1pcG1hcCB3aXRoIGJhc2UgbGV2ZWwgMSBzbyB0aGF0IGxldmVs
IDAgc3RheXMKLS8vIHRoZSBzYW1lLCBhbmQgdGhlbiBzYW1wbGUgbGV2ZWxzIDAgYW5kIDIuCi0v
LyBHTEVTIDMuMC40IHNlY3Rpb24gMy44LjEwOgotLy8gIk1pcG1hcCBnZW5lcmF0aW9uIHJlcGxh
Y2VzIHRleGVsIGFycmF5IGxldmVscyBsZXZlbGJhc2UgKyAxIHRocm91Z2ggcSB3aXRoIGFycmF5
cyBkZXJpdmVkIGZyb20KLS8vIHRoZSBsZXZlbGJhc2UgYXJyYXksIHJlZ2FyZGxlc3Mgb2YgdGhl
aXIgcHJldmlvdXMgY29udGVudHMuIEFsbCBvdGhlciBtaXBtYXAgYXJyYXlzLCBpbmNsdWRpbmcK
LS8vIHRoZSBsZXZlbGJhc2UgYXJyYXksIGFyZSBsZWZ0IHVuY2hhbmdlZCBieSB0aGlzIGNvbXB1
dGF0aW9uLiIKLVRFU1RfUChNaXBtYXBUZXN0RVMzLCBHZW5lcmF0ZU1pcG1hcEJhc2VMZXZlbCkK
LXsKLSAgICBpZiAoSXNBTUQoKSAmJiBJc0Rlc2t0b3BPcGVuR0woKSkKLSAgICB7Ci0gICAgICAg
IC8vIE9ic2VydmVkIGluY29ycmVjdCByZW5kZXJpbmcgb24gQU1ELCBzYW1wbGluZyBsZXZlbCAy
IHJldHVybnMgYmxhY2suCi0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEFN
RCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsKLQotICAgIC8vIEZpbGwgbGV2
ZWwgMCB3aXRoIGJsdWUKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNCbHVlKGdldFdp
bmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSwgR0xDb2xvcjo6Ymx1ZSk7Ci0gICAgZ2xU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkE4LCBnZXRXaW5kb3dXaWR0aCgpLCBn
ZXRXaW5kb3dIZWlnaHQoKSwgMCwgR0xfUkdCQSwKLSAgICAgICAgICAgICAgICAgR0xfVU5TSUdO
RURfQllURSwgcGl4ZWxzQmx1ZS5kYXRhKCkpOwotCi0gICAgLy8gRmlsbCBsZXZlbCAxIHdpdGgg
cmVkCi0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzUmVkKGdldFdpbmRvd1dpZHRoKCkg
KiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIEdMQ29sb3I6OnJlZCk7Ci0gICAgZ2xUZXhJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4LCBnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2lu
ZG93SGVpZ2h0KCkgLyAyLCAwLAotICAgICAgICAgICAgICAgICBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCBwaXhlbHNSZWQuZGF0YSgpKTsKLQotICAgIC8vIEZpbGwgbGV2ZWwgMiB3aXRoIGdy
ZWVuCi0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzR3JlZW4oZ2V0V2luZG93V2lkdGgo
KSAqIGdldFdpbmRvd0hlaWdodCgpIC8gMTYsIEdMQ29sb3I6OmdyZWVuKTsKLSAgICBnbFRleElt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgMiwgR0xfUkdCQTgsIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBn
ZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDAsCi0gICAgICAgICAgICAgICAgIEdMX1JHQkEsIEdMX1VO
U0lHTkVEX0JZVEUsIHBpeGVsc0dyZWVuLmRhdGEoKSk7Ci0KLSAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUX01JUE1BUF9O
RUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9N
QUdfRklMVEVSLCBHTF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDEpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci0KLSAgICAvLyBUaGUgYmx1ZSBsZXZlbCAwIHNob3VsZCBiZSB1bnRvdWNoZWQgYnkgdGhpcyBz
aW5jZSBiYXNlIGxldmVsIGlzIDEuCi0gICAgZ2xHZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFXzJE
KTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gRHJhdyB1c2luZyBsZXZl
bCAyLiBJdCBzaG91bGQgYmUgc2V0IHRvIHJlZCBieSBHZW5lcmF0ZU1pcG1hcC4KLSAgICBjbGVh
ckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dI
ZWlnaHQoKSAvIDQpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgp
IC8gOCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA4LCBHTENvbG9yOjpyZWQpOwotCi0gICAgaWYgKElz
TlZJRElBKCkgJiYgSXNPcGVuR0woKSkKLSAgICB7Ci0gICAgICAgIC8vIE9ic2VydmVkIGluY29y
cmVjdCByZW5kZXJpbmcgb24gTlZJRElBLCBsZXZlbCB6ZXJvIHNlZW1zIHRvIGJlIGluY29ycmVj
dGx5IGFmZmVjdGVkIGJ5Ci0gICAgICAgIC8vIEdlbmVyYXRlTWlwbWFwLgotICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3QgcGFydGlhbGx5IHNraXBwZWQgb24gTlZJRElBIE9wZW5HTC4iIDw8IHN0
ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIERyYXcgdXNpbmcgbGV2
ZWwgMC4gSXQgc2hvdWxkIHN0aWxsIGJlIGJsdWUuCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMCk7Ci0gICAgY2xlYXJBbmREcmF3UXVh
ZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0gICAg
RVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWln
aHQoKSAvIDIsIEdMQ29sb3I6OmJsdWUpOwotfQotCi0vLyBDcmVhdGUgYSBjdWJlIG1hcCB3aXRo
IGxldmVscyAwLTIsIGNhbGwgR2VuZXJhdGVNaXBtYXAgd2l0aCBiYXNlIGxldmVsIDEgc28gdGhh
dCBsZXZlbCAwIHN0YXlzCi0vLyB0aGUgc2FtZSwgYW5kIHRoZW4gc2FtcGxlIGxldmVscyAwIGFu
ZCAyLgotLy8gR0xFUyAzLjAuNCBzZWN0aW9uIDMuOC4xMDoKLS8vICJNaXBtYXAgZ2VuZXJhdGlv
biByZXBsYWNlcyB0ZXhlbCBhcnJheSBsZXZlbHMgbGV2ZWxiYXNlICsgMSB0aHJvdWdoIHEgd2l0
aCBhcnJheXMgZGVyaXZlZCBmcm9tCi0vLyB0aGUgbGV2ZWxiYXNlIGFycmF5LCByZWdhcmRsZXNz
IG9mIHRoZWlyIHByZXZpb3VzIGNvbnRlbnRzLiBBbGwgb3RoZXIgbWlwbWFwIGFycmF5cywgaW5j
bHVkaW5nCi0vLyB0aGUgbGV2ZWxiYXNlIGFycmF5LCBhcmUgbGVmdCB1bmNoYW5nZWQgYnkgdGhp
cyBjb21wdXRhdGlvbi4iCi1URVNUX1AoTWlwbWFwVGVzdEVTMywgR2VuZXJhdGVNaXBtYXBDdWJl
QmFzZUxldmVsKQotewotICAgIGlmIChJc0FNRCgpICYmIElzRGVza3RvcE9wZW5HTCgpKQotICAg
IHsKLSAgICAgICAgLy8gT2JzZXJ2ZWQgaW5jb3JyZWN0IHJlbmRlcmluZyBvbiBBTUQsIHNhbXBs
aW5nIGxldmVsIDIgcmV0dXJucyBibGFjay4KLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgb24gQU1EIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEFTU0VSVF9FUShnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7
Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIG1UZXh0dXJlKTsKLSAg
ICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNCbHVlKGdldFdpbmRvd1dpZHRoKCkgKiBnZXRX
aW5kb3dXaWR0aCgpLCBHTENvbG9yOjpibHVlKTsKLSAgICBUZXhJbWFnZUN1YmVNYXBGYWNlcygw
LCBHTF9SR0JBOCwgZ2V0V2luZG93V2lkdGgoKSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHNCbHVlLmRhdGEoKSk7Ci0KLSAgICAvLyBG
aWxsIGxldmVsIDEgd2l0aCByZWQKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNSZWQo
Z2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBHTENvbG9yOjpyZWQpOwot
ICAgIFRleEltYWdlQ3ViZU1hcEZhY2VzKDEsIEdMX1JHQkE4LCBnZXRXaW5kb3dXaWR0aCgpIC8g
MiwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBw
aXhlbHNSZWQuZGF0YSgpKTsKLQotICAgIC8vIEZpbGwgbGV2ZWwgMiB3aXRoIGdyZWVuCi0gICAg
c3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzR3JlZW4oZ2V0V2luZG93V2lkdGgoKSAqIGdldFdp
bmRvd1dpZHRoKCkgLyAxNiwgR0xDb2xvcjo6Z3JlZW4pOwotICAgIFRleEltYWdlQ3ViZU1hcEZh
Y2VzKDIsIEdMX1JHQkE4LCBnZXRXaW5kb3dXaWR0aCgpIC8gNCwgR0xfUkdCQSwgR0xfVU5TSUdO
RURfQllURSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHNHcmVlbi5kYXRhKCkpOwot
Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUiwgR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfQ1VCRV9NQVAsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsK
LSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV9DVUJFX01BUCwgR0xfVEVYVFVSRV9CQVNF
X0xFVkVMLCAxKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gVGhlIGJs
dWUgbGV2ZWwgMCBzaG91bGQgYmUgdW50b3VjaGVkIGJ5IHRoaXMgc2luY2UgYmFzZSBsZXZlbCBp
cyAxLgotICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV9DVUJFX01BUCk7Ci0KLSAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIERyYXcgdXNpbmcgbGV2ZWwgMi4gSXQgc2hv
dWxkIGJlIHNldCB0byByZWQgYnkgR2VuZXJhdGVNaXBtYXAuCi0gICAgY2xlYXJBbmREcmF3UXVh
ZChtQ3ViZVByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAv
IDQpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRXaW5kb3dXaWR0aCgpIC8gOCwgZ2V0
V2luZG93SGVpZ2h0KCkgLyA4LCBHTENvbG9yOjpyZWQpOwotCi0gICAgaWYgKElzTlZJRElBKCkg
JiYgSXNPcGVuR0woKSkKLSAgICB7Ci0gICAgICAgIC8vIE9ic2VydmVkIGluY29ycmVjdCByZW5k
ZXJpbmcgb24gTlZJRElBLCBsZXZlbCB6ZXJvIHNlZW1zIHRvIGJlIGluY29ycmVjdGx5IGFmZmVj
dGVkIGJ5Ci0gICAgICAgIC8vIEdlbmVyYXRlTWlwbWFwLgotICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3QgcGFydGlhbGx5IHNraXBwZWQgb24gTlZJRElBIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIERyYXcgdXNpbmcgbGV2ZWwgMC4gSXQg
c2hvdWxkIHN0aWxsIGJlIGJsdWUuCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VC
RV9NQVAsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMCk7Ci0gICAgY2xlYXJBbmREcmF3UXVhZCht
Q3ViZVByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKLSAgICBF
WFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdo
dCgpIC8gMiwgR0xDb2xvcjo6Ymx1ZSk7Ci19Ci0KLS8vIENyZWF0ZSBhIHRleHR1cmUgd2l0aCBs
ZXZlbHMgMC0yLCBjYWxsIEdlbmVyYXRlTWlwbWFwIHdpdGggbWF4IGxldmVsIDEgc28gdGhhdCBs
ZXZlbCAyIHN0YXlzIHRoZQotLy8gc2FtZSwgYW5kIHRoZW4gc2FtcGxlIGxldmVscyAxIGFuZCAy
LgotLy8gR0xFUyAzLjAuNCBzZWN0aW9uIDMuOC4xMDoKLS8vICJNaXBtYXAgZ2VuZXJhdGlvbiBy
ZXBsYWNlcyB0ZXhlbCBhcnJheSBsZXZlbHMgbGV2ZWxiYXNlICsgMSB0aHJvdWdoIHEgd2l0aCBh
cnJheXMgZGVyaXZlZCBmcm9tCi0vLyB0aGUgbGV2ZWxiYXNlIGFycmF5LCByZWdhcmRsZXNzIG9m
IHRoZWlyIHByZXZpb3VzIGNvbnRlbnRzLiBBbGwgb3RoZXIgbWlwbWFwIGFycmF5cywgaW5jbHVk
aW5nCi0vLyB0aGUgbGV2ZWxiYXNlIGFycmF5LCBhcmUgbGVmdCB1bmNoYW5nZWQgYnkgdGhpcyBj
b21wdXRhdGlvbi4iCi1URVNUX1AoTWlwbWFwVGVzdEVTMywgR2VuZXJhdGVNaXBtYXBNYXhMZXZl
bCkKLXsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsKLQotICAg
IC8vIEZpbGwgbGV2ZWwgMCB3aXRoIGJsdWUKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhl
bHNCbHVlKGdldFdpbmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSwgR0xDb2xvcjo6Ymx1
ZSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkE4LCBnZXRXaW5k
b3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSwgMCwgR0xfUkdCQSwKLSAgICAgICAgICAgICAg
ICAgR0xfVU5TSUdORURfQllURSwgcGl4ZWxzQmx1ZS5kYXRhKCkpOwotCi0gICAgLy8gRmlsbCBs
ZXZlbCAxIHdpdGggcmVkCi0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzUmVkKGdldFdp
bmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIEdMQ29sb3I6OnJlZCk7Ci0gICAg
Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4LCBnZXRXaW5kb3dXaWR0aCgp
IC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCAwLAotICAgICAgICAgICAgICAgICBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHNSZWQuZGF0YSgpKTsKLQotICAgIC8vIEZpbGwgbGV2
ZWwgMiB3aXRoIGdyZWVuCi0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzR3JlZW4oZ2V0
V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgpIC8gMTYsIEdMQ29sb3I6OmdyZWVuKTsK
LSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMiwgR0xfUkdCQTgsIGdldFdpbmRvd1dp
ZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQsIDAsCi0gICAgICAgICAgICAgICAgIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsc0dyZWVuLmRhdGEoKSk7Ci0KLSAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFS
RVNUX01JUE1BUF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BWF9MRVZFTCwgMSk7Ci0KLSAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKLQotICAgIC8vIFRoZSBncmVlbiBsZXZlbCAyIHNob3VsZCBiZSB1bnRvdWNo
ZWQgYnkgdGhpcyBzaW5jZSBtYXggbGV2ZWwgaXMgMS4KLSAgICBnbEdlbmVyYXRlTWlwbWFwKEdM
X1RFWFRVUkVfMkQpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBEcmF3
IHVzaW5nIGxldmVsIDEuIEl0IHNob3VsZCBiZSBzZXQgdG8gYmx1ZSBieSBHZW5lcmF0ZU1pcG1h
cC4KLSAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCkgLyAy
LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUShnZXRX
aW5kb3dXaWR0aCgpIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0LCBHTENvbG9yOjpibHVlKTsK
LQotICAgIC8vIERyYXcgdXNpbmcgbGV2ZWwgMi4gSXQgc2hvdWxkIHN0aWxsIGJlIGdyZWVuLgot
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BWF9MRVZFTCwg
Mik7Ci0gICAgY2xlYXJBbmREcmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpIC8g
NCwgZ2V0V2luZG93SGVpZ2h0KCkgLyA0KTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0
V2luZG93V2lkdGgoKSAvIDgsIGdldFdpbmRvd0hlaWdodCgpIC8gOCwgR0xDb2xvcjo6Z3JlZW4p
OwotfQotCi0vLyBDYWxsIEdlbmVyYXRlTWlwbWFwIHdpdGggb3V0LW9mLXJhbmdlIGJhc2UgbGV2
ZWwuIFRoZSBzcGVjIGlzIGludGVycHJldGVkIHNvIHRoYXQgYW4gb3V0LW9mLXJhbmdlCi0vLyBi
YXNlIGxldmVsIGRvZXMgbm90IGhhdmUgYSBjb2xvci1yZW5kZXJhYmxlL3RleHR1cmUtZmlsdGVy
YWJsZSBpbnRlcm5hbCBmb3JtYXQsIHNvIHRoZQotLy8gR2VuZXJhdGVNaXBtYXAgY2FsbCBnZW5l
cmF0ZXMgSU5WQUxJRF9PUEVSQVRJT04uIEdMRVMgMy4wLjQgc2VjdGlvbiAzLjguMTA6Ci0vLyAi
SWYgdGhlIGxldmVsYmFzZSBhcnJheSB3YXMgbm90IHNwZWNpZmllZCB3aXRoIGFuIHVuc2l6ZWQg
aW50ZXJuYWwgZm9ybWF0IGZyb20gdGFibGUgMy4zIG9yIGEKLS8vIHNpemVkIGludGVybmFsIGZv
cm1hdCB0aGF0IGlzIGJvdGggY29sb3ItcmVuZGVyYWJsZSBhbmQgdGV4dHVyZS1maWx0ZXJhYmxl
IGFjY29yZGluZyB0byB0YWJsZQotLy8gMy4xMywgYW4gSU5WQUxJRF9PUEVSQVRJT04gZXJyb3Ig
aXMgZ2VuZXJhdGVkLiIKLVRFU1RfUChNaXBtYXBUZXN0RVMzLCBHZW5lcmF0ZU1pcG1hcEJhc2VM
ZXZlbE91dE9mUmFuZ2UpCi17Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4
dHVyZSk7Ci0KLSAgICAvLyBGaWxsIGxldmVsIDAgd2l0aCBibHVlCi0gICAgc3RkOjp2ZWN0b3I8
R0xDb2xvcj4gcGl4ZWxzQmx1ZShnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCks
IEdMQ29sb3I6OmJsdWUpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9S
R0JBOCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIEdMX1JHQkEsCi0g
ICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVsc0JsdWUuZGF0YSgpKTsKLQot
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0JBU0VfTEVWRUws
IDEwMDApOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBFeHBlY3Rpbmcg
dGhlIG91dC1vZi1yYW5nZSBiYXNlIGxldmVsIHRvIGJlIHRyZWF0ZWQgYXMgbm90IGNvbG9yLXJl
bmRlcmFibGUgYW5kCi0gICAgLy8gdGV4dHVyZS1maWx0ZXJhYmxlLgotICAgIGdsR2VuZXJhdGVN
aXBtYXAoR0xfVEVYVFVSRV8yRCk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BF
UkFUSU9OKTsKLQotICAgIC8vIERyYXcgdXNpbmcgbGV2ZWwgMC4gSXQgc2hvdWxkIHN0aWxsIGJl
IGJsdWUuCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQkFT
RV9MRVZFTCwgMCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgY2xlYXJBbmRE
cmF3UXVhZChtMkRQcm9ncmFtLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7
Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5k
b3dIZWlnaHQoKSAvIDIsIEdMQ29sb3I6OmJsdWUpOwotfQotCi0vLyBDYWxsIEdlbmVyYXRlTWlw
bWFwIHdpdGggb3V0LW9mLXJhbmdlIGJhc2UgbGV2ZWwgb24gYW4gaW1tdXRhYmxlIHRleHR1cmUu
IFRoZSBiYXNlIGxldmVsIHNob3VsZAotLy8gYmUgY2xhbXBlZCwgc28gdGhlIGNhbGwgZG9lc24n
dCBnZW5lcmF0ZSBhbiBlcnJvci4KLVRFU1RfUChNaXBtYXBUZXN0RVMzLCBHZW5lcmF0ZU1pcG1h
cEJhc2VMZXZlbE91dE9mUmFuZ2VJbW11dGFibGVUZXh0dXJlKQotewotICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUpOwotCi0gICAgZ2xUZXhTdG9yYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMSwgR0xfUkdCQTgsIDEsIDEpOwotICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhU
VVJFXzJELCAwLCAwLCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmR0xDb2xv
cjo6Z3JlZW4pOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfQkFTRV9MRVZFTCwgMTAwMCk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAg
IC8vIFRoaXMgaXMgZXNzZW50aWFsbHkgYSBuby1vcCwgc2luY2UgdGhlIHRleHR1cmUgb25seSBo
YXMgb25lIGxldmVsLgotICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8yRCk7Ci0KLSAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFRoZSBvbmx5IGxldmVsIG9mIHRoZSB0
ZXh0dXJlIHNob3VsZCBzdGlsbCBiZSBncmVlbi4KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNU
KTsKLSAgICBjbGVhckFuZERyYXdRdWFkKG0yRFByb2dyYW0sIGdldFdpbmRvd1dpZHRoKCksIGdl
dFdpbmRvd0hlaWdodCgpKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoZ2V0V2luZG93V2lk
dGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgR0xDb2xvcjo6Z3JlZW4pOwotfQotCi0v
LyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVu
ZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1
biBhZ2FpbnN0LgotLy8gTm90ZTogd2UgcnVuIHRoZXNlIHRlc3RzIGFnYWluc3QgOV8zIG9uIFdB
UlAgZHVlIHRvIGhhcmR3YXJlIGRyaXZlciBpc3N1ZXMgb24gV2luNwotQU5HTEVfSU5TVEFOVElB
VEVfVEVTVChNaXBtYXBUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoRUdMX0VYUEVSSU1FTlRBTF9QUkVTRU5U
X1BBVEhfQ09QWV9BTkdMRSksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMShFR0xf
RVhQRVJJTUVOVEFMX1BSRVNFTlRfUEFUSF9GQVNUX0FOR0xFKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX0QzRDExX0ZMOV8zX1dBUlAoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMy
X09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAotICAgICAgICAgICAgICAgICAgICAgICBF
UzNfT1BFTkdMRVMoKSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKE1pcG1hcFRlc3RFUzMsIEVT
M19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9NdWx0aXNhbXBsZUNvbXBh
dGliaWxpdHlUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90
ZXN0cy9NdWx0aXNhbXBsZUNvbXBhdGliaWxpdHlUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzA3MDhlZWVjN2UuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9NdWx0aXNhbXBsZUNvbXBhdGliaWxpdHlUZXN0
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwMCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIw
MTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gU3RhdGVD
aGFuZ2VUZXN0OgotLy8gICBTcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIGFuIEFOR0xFIGltcGxl
bWVudGF0aW9uIG9mIEdMLCB0aGVzZSB0ZXN0cyB2YWxpZGF0ZSB0aGF0Ci0vLyAgIEFOR0xFJ3Mg
ZGlydHkgYml0cyBzeXN0ZW1zIGRvbid0IGdldCBjb25mdXNlZCBieSBjZXJ0YWluIHNlcXVlbmNl
cyBvZiBzdGF0ZSBjaGFuZ2VzLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0
LmgiCi0jaW5jbHVkZSAic2hhZGVyX3V0aWxzLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsK
LQotbmFtZXNwYWNlCi17Ci0KLWNvbnN0IEdMaW50IGtXaWR0aCA9IDY0OwotY29uc3QgR0xpbnQg
a0hlaWdodCA9IDY0OwotCi0vLyB0ZXN0IGRyYXdpbmcgd2l0aCBHTF9NVUxUSVNBTVBMRV9FWFQg
ZW5hYmxlZC9kaXNhYmxlZC4KLWNsYXNzIEVYVE11bHRpc2FtcGxlQ29tcGF0aWJpbGl0eVRlc3Qg
OiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0KLXByb3RlY3RlZDoKLSAgICBFWFRNdWx0aXNhbXBsZUNv
bXBhdGliaWxpdHlUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDY0KTsKLSAg
ICAgICAgc2V0V2luZG93SGVpZ2h0KDY0KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsK
LSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0
cyg4KTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogdl9zaGFk
ZXJfc3RyID0KLSAgICAgICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhX1Bvc2l0aW9uO1xuIgotICAg
ICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgICAieyBnbF9Qb3NpdGlvbiA9IGFf
UG9zaXRpb247IH0iOwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBmX3NoYWRlcl9zdHIg
PQotICAgICAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAgICAg
InVuaWZvcm0gdmVjNCBjb2xvcjsiCi0gICAgICAgICAgICAidm9pZCBtYWluKCkgeyBnbF9GcmFn
Q29sb3IgPSBjb2xvcjsgfSI7Ci0KLSAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2
X3NoYWRlcl9zdHIsIGZfc2hhZGVyX3N0cik7Ci0KLSAgICAgICAgR0x1aW50IHBvc2l0aW9uX2xv
YyA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJhX1Bvc2l0aW9uIik7Ci0gICAgICAg
IG1Db2xvckxvYyA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAiY29sb3IiKTsKLQot
ICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1WQk8pOwotICAgICAgICBnbEJpbmRCdWZmZXIoR0xf
QVJSQVlfQlVGRkVSLCBtVkJPKTsKLSAgICAgICAgc3RhdGljIGZsb2F0IHZlcnRpY2VzW10gPSB7
Ci0gICAgICAgICAgICAxLjBmLCAgMS4wZiwgLTEuMGYsIDEuMGYsICAtMS4wZiwgLTEuMGYsIC0x
LjBmLCAxLjBmLCAtMS4wZiwKLSAgICAgICAgICAgIC0xLjBmLCAxLjBmLCAtMS4wZiwgLTEuMGYs
IC0xLjBmLCAxLjBmLCAgLTEuMGYsIDEuMGYsIDEuMGYsCi0gICAgICAgIH07Ci0gICAgICAgIGds
QnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNpemVvZih2ZXJ0aWNlcyksIHZlcnRpY2VzLCBH
TF9TVEFUSUNfRFJBVyk7Ci0gICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRp
b25fbG9jKTsKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uX2xvYywgMiwg
R0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAwKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbVZCTyk7Ci0gICAg
ICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFy
RG93bigpOwotICAgIH0KLQotICAgIHZvaWQgcHJlcGFyZUZvckRyYXcoKQotICAgIHsKLSAgICAg
ICAgLy8gQ3JlYXRlIGEgc2FtcGxlIGJ1ZmZlci4KLSAgICAgICAgR0xzaXplaSBudW1fc2FtcGxl
cyA9IDQsIG1heF9zYW1wbGVzID0gMDsKLSAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfU0FN
UExFUywgJm1heF9zYW1wbGVzKTsKLSAgICAgICAgbnVtX3NhbXBsZXMgPSBzdGQ6Om1pbihudW1f
c2FtcGxlcywgbWF4X3NhbXBsZXMpOwotCi0gICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAm
bVNhbXBsZVJCKTsKLSAgICAgICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJVRkZFUiwg
bVNhbXBsZVJCKTsKLSAgICAgICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVBTkdM
RShHTF9SRU5ERVJCVUZGRVIsIG51bV9zYW1wbGVzLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQThfT0VTLCBrV2lkdGgsIGtIZWlnaHQpOwotICAg
ICAgICBHTGludCBwYXJhbSA9IDA7Ci0gICAgICAgIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVy
aXYoR0xfUkVOREVSQlVGRkVSLCBHTF9SRU5ERVJCVUZGRVJfU0FNUExFUywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZwYXJhbSk7Ci0gICAgICAgIEVYUEVDVF9HRShwYXJhbSwg
bnVtX3NhbXBsZXMpOwotCi0gICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtU2FtcGxlRkJP
KTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1TYW1wbGVGQk8p
OwotICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9D
T0xPUl9BVFRBQ0hNRU5UMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1JFTkRF
UkJVRkZFUiwgbVNhbXBsZVJCKTsKLSAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMZW51
bT4oR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUpLAotICAgICAgICAgIGdsQ2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9G
UkFNRUJVRkZFUiwgMCk7Ci0KLSAgICAgICAgLy8gQ3JlYXRlIGFub3RoZXIgRkJPIHRvIHJlc29s
dmUgdGhlIG11bHRpc2FtcGxlIGJ1ZmZlciBpbnRvLgotICAgICAgICBnbEdlblRleHR1cmVzKDEs
ICZtUmVzb2x2ZVRleCk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVJl
c29sdmVUZXgpOwotICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdC
QSwga1dpZHRoLCBrSGVpZ2h0LCAwLCBHTF9SR0JBLAotICAgICAgICAgICBHTF9VTlNJR05FRF9C
WVRFLCBOVUxMKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFN
UF9UT19FREdFKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZl
cnMoMSwgJm1SZXNvbHZlRkJPKTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIG1SZXNvbHZlRkJPKTsKLSAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9G
UkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBtUmVzb2x2ZVRleCwgMCk7Ci0gICAgICAgIEVYUEVDVF9FUShz
dGF0aWNfY2FzdDxHTGVudW0+KEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFKSwKLSAgICAgICAgICBn
bENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLQotICAgICAgICBnbFVz
ZVByb2dyYW0obVByb2dyYW0pOwotICAgICAgICBnbFZpZXdwb3J0KDAsIDAsIGtXaWR0aCwga0hl
aWdodCk7Ci0gICAgICAgIGdsQmxlbmRGdW5jKEdMX1NSQ19BTFBIQSwgR0xfT05FX01JTlVTX1NS
Q19BTFBIQSk7Ci0gICAgICAgIGdsRW5hYmxlKEdMX0JMRU5EKTsKLSAgICAgICAgZ2xCaW5kRnJh
bWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1TYW1wbGVGQk8pOwotICAgICAgICBnbENsZWFyQ29s
b3IoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVG
RkVSX0JJVCk7Ci0gICAgfQotCi0gICAgdm9pZCBwcmVwYXJlRm9yVmVyaWZ5KCkKLSAgICB7Ci0g
ICAgICAgIC8vIFJlc29sdmUuCi0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX1JFQURfRlJB
TUVCVUZGRVIsIG1TYW1wbGVGQk8pOwotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFX
X0ZSQU1FQlVGRkVSLCBtUmVzb2x2ZUZCTyk7Ci0gICAgICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAw
LjBmLCAwLjBmLCAwLjBmKTsKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsK
LSAgICAgICAgZ2xCbGl0RnJhbWVidWZmZXJBTkdMRSgwLCAwLCBrV2lkdGgsIGtIZWlnaHQsIDAs
IDAsIGtXaWR0aCwga0hlaWdodCwKLSAgICAgICAgICBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9O
RUFSRVNUKTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUiwg
bVJlc29sdmVGQk8pOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQot
ICAgIHZvaWQgY2xlYW51cCgpCi0gICAgewotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9G
UkFNRUJVRkZFUiwgMCk7Ci0gICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtUmVzb2x2
ZUZCTyk7Ci0gICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtU2FtcGxlRkJPKTsKLSAg
ICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVJlc29sdmVUZXgpOwotICAgICAgICBnbERlbGV0
ZVJlbmRlcmJ1ZmZlcnMoMSwgJm1TYW1wbGVSQik7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Ci0KLSAgICB9Ci0KLSAgICBib29sIGlzQXBwbGljYWJsZSgpIGNvbnN0Ci0gICAgewot
ICAgICAgICByZXR1cm4gZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX211bHRpc2FtcGxlX2NvbXBh
dGliaWxpdHkiKSAmJgotICAgICAgICAgICAgIGV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2Zy
YW1lYnVmZmVyX211bHRpc2FtcGxlIikgJiYKLSAgICAgICAgICAgICBleHRlbnNpb25FbmFibGVk
KCJHTF9PRVNfcmdiOF9yZ2JhOCIpICYmCi0gICAgICAgICAgICAgIUlzQU1EKCk7Ci0gICAgfQot
ICAgIEdMdWludCBtU2FtcGxlRkJPOwotICAgIEdMdWludCBtUmVzb2x2ZUZCTzsKLSAgICBHTHVp
bnQgbVNhbXBsZVJCOwotICAgIEdMdWludCBtUmVzb2x2ZVRleDsKLQotICAgIEdMdWludCBtQ29s
b3JMb2M7Ci0gICAgR0x1aW50IG1Qcm9ncmFtOwotICAgIEdMdWludCBtVkJPOwotfTsKLQotfSAv
LwotCi0vLyBUZXN0IHNpbXBsZSBzdGF0ZSB0cmFja2luZwotVEVTVF9QKEVYVE11bHRpc2FtcGxl
Q29tcGF0aWJpbGl0eVRlc3QsIFRlc3RTdGF0ZVRyYWNraW5nKQotewotICAgIGlmICghaXNBcHBs
aWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEVYUEVDVF9UUlVFKGdsSXNFbmFibGVk
KEdMX01VTFRJU0FNUExFX0VYVCkpOwotICAgIGdsRGlzYWJsZShHTF9NVUxUSVNBTVBMRV9FWFQp
OwotICAgIEVYUEVDVF9GQUxTRShnbElzRW5hYmxlZChHTF9NVUxUSVNBTVBMRV9FWFQpKTsKLSAg
ICBnbEVuYWJsZShHTF9NVUxUSVNBTVBMRV9FWFQpOwotICAgIEVYUEVDVF9UUlVFKGdsSXNFbmFi
bGVkKEdMX01VTFRJU0FNUExFX0VYVCkpOwotCi0gICAgRVhQRUNUX0ZBTFNFKGdsSXNFbmFibGVk
KEdMX1NBTVBMRV9BTFBIQV9UT19PTkVfRVhUKSk7Ci0gICAgZ2xFbmFibGUoR0xfU0FNUExFX0FM
UEhBX1RPX09ORV9FWFQpOwotICAgIEVYUEVDVF9UUlVFKGdsSXNFbmFibGVkKEdMX1NBTVBMRV9B
TFBIQV9UT19PTkVfRVhUKSk7Ci0gICAgZ2xEaXNhYmxlKEdMX1NBTVBMRV9BTFBIQV9UT19PTkVf
RVhUKTsKLSAgICBFWFBFQ1RfRkFMU0UoZ2xJc0VuYWJsZWQoR0xfU0FNUExFX0FMUEhBX1RPX09O
RV9FWFQpKTsKLQotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTGVudW0+KEdMX05PX0VSUk9S
KSwgZ2xHZXRFcnJvcigpKTsKLX0KLQotLy8gVGVzdCB0aGF0IGRpc2FibGluZyBHTF9NVUxUSVNB
TVBMRV9FWFQgaXMgaGFuZGxlZCBjb3JyZWN0bHkuCi1URVNUX1AoRVhUTXVsdGlzYW1wbGVDb21w
YXRpYmlsaXR5VGVzdCwgRHJhd0FuZFJlc29sdmUpCi17Ci0gICAgaWYgKCFpc0FwcGxpY2FibGUo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RhdGljIGNvbnN0IGZsb2F0IGtCbHVlW10gPSB7
MC4wZiwgMC4wZiwgMS4wZiwgMS4wZn07Ci0gICAgc3RhdGljIGNvbnN0IGZsb2F0IGtHcmVlbltd
ID0gezAuMGYsIDEuMGYsIDAuMGYsIDEuMGZ9OwotICAgIHN0YXRpYyBjb25zdCBmbG9hdCBrUmVk
W10gPSB7MS4wZiwgMC4wZiwgMC4wZiwgMS4wZn07Ci0KLSAgICAvLyBEaWZmZXJlbnQgZHJpdmVy
cyBzZWVtIHRvIGJlaGF2ZSBkaWZmZXJlbnRseSB3aXRoIHJlc3BlY3QgdG8gcmVzdWx0aW5nCi0g
ICAgLy8gdmFsdWVzLiBUaGVzZSBtaWdodCBiZSBkdWUgdG8gZGlmZmVyZW50IE1TQUEgc2FtcGxl
IGNvdW50cyBjYXVzaW5nCi0gICAgLy8gZGlmZmVyZW50IHNhbXBsZXMgdG8gaGl0LiAgT3RoZXIg
b3B0aW9uIGlzIGRyaXZlciBidWdzLiBKdXN0IHRlc3QgdGhhdAotICAgIC8vIGRpc2FibGluZyBt
dWx0aXNhbXBsZSBjYXVzZXMgYSBkaWZmZXJlbmNlLgotICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50
OF90W10+IHJlc3VsdHNbM107Ci0gICAgY29uc3QgR0xpbnQga1Jlc3VsdFNpemUgPSBrV2lkdGgg
KiBrSGVpZ2h0ICogNDsKLSAgICBmb3IgKGludCBwYXNzID0gMDsgcGFzcyA8IDM7IHBhc3MrKykK
LSAgICB7Ci0gICAgICAgIHByZXBhcmVGb3JEcmF3KCk7Ci0gICAgICAgIC8vIEdyZWVuOiBmcm9t
IHRvcCByaWdodCB0byBib3R0b20gbGVmdC4KLSAgICAgICAgZ2xVbmlmb3JtNGZ2KG1Db2xvckxv
YywgMSwga0dyZWVuKTsKLSAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyk7
Ci0KLSAgICAgICAgLy8gQmx1ZTogZnJvbSB0b3AgbGVmdCB0byBib3R0b20gcmlnaHQuCi0gICAg
ICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2MsIDEsIGtCbHVlKTsKLSAgICAgICAgZ2xEcmF3QXJy
YXlzKEdMX1RSSUFOR0xFUywgMywgMyk7Ci0KLSAgICAgICAgLy8gUmVkLCB3aXRoIGFuZCB3aXRo
b3V0IE1TQUE6IGZyb20gYm90dG9tIGxlZnQgdG8gdG9wIHJpZ2h0LgotICAgICAgICBpZiAocGFz
cyA9PSAxKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbERpc2FibGUoR0xfTVVMVElTQU1QTEVf
RVhUKTsKLSAgICAgICAgfQotICAgICAgICBnbFVuaWZvcm00ZnYobUNvbG9yTG9jLCAxLCBrUmVk
KTsKLSAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgNiwgMyk7Ci0gICAgICAgIGlm
IChwYXNzID09IDEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsRW5hYmxlKEdMX01VTFRJU0FN
UExFX0VYVCk7Ci0gICAgICAgIH0KLSAgICAgICAgcHJlcGFyZUZvclZlcmlmeSgpOwotICAgICAg
ICByZXN1bHRzW3Bhc3NdLnJlc2V0KG5ldyB1aW50OF90W2tSZXN1bHRTaXplXSk7Ci0gICAgICAg
IG1lbXNldChyZXN1bHRzW3Bhc3NdLmdldCgpLCAxMjN1LCBrUmVzdWx0U2l6ZSk7Ci0gICAgICAg
IGdsUmVhZFBpeGVscygwLCAwLCBrV2lkdGgsIGtIZWlnaHQsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsCi0gICAgICAgICAgICAgICAgICAgcmVzdWx0c1twYXNzXS5nZXQoKSk7Ci0KLSAgICAg
ICAgY2xlYW51cCgpOwotICAgIH0KLSAgICBFWFBFQ1RfTkUoMCwgbWVtY21wKHJlc3VsdHNbMF0u
Z2V0KCksIHJlc3VsdHNbMV0uZ2V0KCksIGtSZXN1bHRTaXplKSk7Ci0gICAgLy8gVmVyaWZ5IHRo
YXQgcmVuZGVyaW5nIGlzIGRldGVybWluaXN0aWMsIHNvIHRoYXQgdGhlIHBhc3MgYWJvdmUgZG9l
cyBub3QKLSAgICAvLyBjb21lIGZyb20gbm9uLWRldGVybWluaXN0aWMgcmVuZGVyaW5nLgotICAg
IEVYUEVDVF9FUSgwLCBtZW1jbXAocmVzdWx0c1swXS5nZXQoKSwgcmVzdWx0c1syXS5nZXQoKSwg
a1Jlc3VsdFNpemUpKTsKLX0KLQotLy8gVGVzdCB0aGF0IGVuYWJsaW5nIEdMX1NBTVBMRV9BTFBI
QV9UT19PTkVfRVhUIGFmZmVjdHMgcmVuZGVyaW5nLgotVEVTVF9QKEVYVE11bHRpc2FtcGxlQ29t
cGF0aWJpbGl0eVRlc3QsIERyYXdBbHBoYU9uZUFuZFJlc29sdmUpCi17Ci0gICAgaWYgKCFpc0Fw
cGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gU0FNUExFX0FMUEhBX1RPX09O
RSBpcyBzcGVjaWZpZWQgdG8gdHJhbnNmb3JtIGFscGhhIHZhbHVlcyBvZgotICAgIC8vIGNvdmVy
ZWQgc2FtcGxlcyB0byAxLjAuIEluIG9yZGVyIHRvIGRldGVjdCBpdCwgd2UgdXNlIG5vbi0xLjAK
LSAgICAvLyBhbHBoYS4KLSAgICBzdGF0aWMgY29uc3QgZmxvYXQga0JsdWVbXSA9IHswLjBmLCAw
LjBmLCAxLjBmLCAwLjVmfTsKLSAgICBzdGF0aWMgY29uc3QgZmxvYXQga0dyZWVuW10gPSB7MC4w
ZiwgMS4wZiwgMC4wZiwgMC41Zn07Ci0gICAgc3RhdGljIGNvbnN0IGZsb2F0IGtSZWRbXSA9IHsx
LjBmLCAwLjBmLCAwLjBmLCAwLjVmfTsKLQotICAgIC8vIERpZmZlcmVudCBkcml2ZXJzIHNlZW0g
dG8gYmVoYXZlIGRpZmZlcmVudGx5IHdpdGggcmVzcGVjdCB0byByZXN1bHRpbmcKLSAgICAvLyBh
bHBoYSB2YWx1ZS4gVGhlc2UgbWlnaHQgYmUgZHVlIHRvIGRpZmZlcmVudCBNU0FBIHNhbXBsZSBj
b3VudHMgY2F1c2luZwotICAgIC8vIGRpZmZlcmVudCBzYW1wbGVzIHRvIGhpdC4gIE90aGVyIG9w
dGlvbiBpcyBkcml2ZXIgYnVncy4gVGVzdGluZyBleGFjdCBvcgotICAgIC8vIGV2ZW4gYXBwcm94
aW1hdGUgc2FtcGxlIHZhbHVlcyBpcyBub3QgdGhhdCBlYXN5LiAgVGh1cywganVzdCB0ZXN0Ci0g
ICAgLy8gcmVwcmVzZW50YXRpdmUgcG9zaXRpb25zIHdoaWNoIGhhdmUgZnJhY3Rpb25hbCBwaXhl
bHMsIGluc3BlY3RpbmcgdGhhdAotICAgIC8vIG5vcm1hbCByZW5kZXJpbmcgaXMgZGlmZmVyZW50
IHRvIFNBTVBMRV9BTFBIQV9UT19PTkUgcmVuZGVyaW5nLgotICAgIHN0ZDo6dW5pcXVlX3B0cjx1
aW50OF90W10+IHJlc3VsdHNbM107Ci0gICAgY29uc3QgR0xpbnQga1Jlc3VsdFNpemUgPSBrV2lk
dGggKiBrSGVpZ2h0ICogNDsKLQotICAgIGZvciAoaW50IHBhc3MgPSAwOyBwYXNzIDwgMzsgKytw
YXNzKQotICAgIHsKLSAgICAgICAgcHJlcGFyZUZvckRyYXcoKTsKLSAgICAgICAgaWYgKHBhc3Mg
PT0gMSkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xFbmFibGUoR0xfU0FNUExFX0FMUEhBX1RP
X09ORV9FWFQpOwotICAgICAgICB9Ci0gICAgICAgIGdsRW5hYmxlKEdMX01VTFRJU0FNUExFX0VY
VCk7Ci0gICAgICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2MsIDEsIGtHcmVlbik7Ci0gICAgICAg
IGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOwotCi0gICAgICAgIGdsVW5pZm9ybTRm
dihtQ29sb3JMb2MsIDEsIGtCbHVlKTsKLSAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xF
UywgMywgMyk7Ci0KLSAgICAgICAgZ2xEaXNhYmxlKEdMX01VTFRJU0FNUExFX0VYVCk7Ci0gICAg
ICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2MsIDEsIGtSZWQpOwotICAgICAgICBnbERyYXdBcnJh
eXMoR0xfVFJJQU5HTEVTLCA2LCAzKTsKLQotICAgICAgICBwcmVwYXJlRm9yVmVyaWZ5KCk7Ci0g
ICAgICAgIHJlc3VsdHNbcGFzc10ucmVzZXQobmV3IHVpbnQ4X3Rba1Jlc3VsdFNpemVdKTsKLSAg
ICAgICAgbWVtc2V0KHJlc3VsdHNbcGFzc10uZ2V0KCksIDEyM3UsIGtSZXN1bHRTaXplKTsKLSAg
ICAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIGtXaWR0aCwga0hlaWdodCwgR0xfUkdCQSwgR0xfVU5T
SUdORURfQllURSwKLSAgICAgICAgICAgIHJlc3VsdHNbcGFzc10uZ2V0KCkpOwotICAgICAgICBp
ZiAocGFzcyA9PSAxKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbERpc2FibGUoR0xfU0FNUExF
X0FMUEhBX1RPX09ORV9FWFQpOwotICAgICAgICB9Ci0KLSAgICAgICAgY2xlYW51cCgpOwotICAg
IH0KLSAgICBFWFBFQ1RfTkUoMCwgbWVtY21wKHJlc3VsdHNbMF0uZ2V0KCksIHJlc3VsdHNbMV0u
Z2V0KCksIGtSZXN1bHRTaXplKSk7Ci0gICAgLy8gVmVyaWZ5IHRoYXQgcmVuZGVyaW5nIGlzIGRl
dGVybWluaXN0aWMsIHNvIHRoYXQgdGhlIHBhc3MgYWJvdmUgZG9lcyBub3QKLSAgICAvLyBjb21l
IGZyb20gbm9uLWRldGVybWluaXN0aWMgcmVuZGVyaW5nLgotICAgIEVYUEVDVF9FUSgwLCBtZW1j
bXAocmVzdWx0c1swXS5nZXQoKSwgcmVzdWx0c1syXS5nZXQoKSwga1Jlc3VsdFNpemUpKTsKLX0K
LQotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKEVYVE11bHRpc2FtcGxlQ29tcGF0aWJpbGl0eVRl
c3QsIEVTMl9PUEVOR0woKSwgRVMyX09QRU5HTEVTKCksIEVTM19PUEVOR0woKSk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL09iamVjdEFsbG9jYXRpb25UZXN0LmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9PYmplY3RBbGxvY2F0aW9uVGVzdC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZTU5ZjdmY2ZjLi4wMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvT2JqZWN0QWxs
b2NhdGlvblRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotLy8KLS8vIENv
cHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8K
LS8vIE9iamVjdEFsbG9jYXRpb25UZXN0Ci0vLyAgIFRlc3RzIGZvciBvYmplY3QgYWxsb2NhdGlv
bnMgYW5kIGxpZmV0aW1lcy4KLS8vCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5o
IgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1jbGFzcyBPYmpl
Y3RBbGxvY2F0aW9uVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAg
IE9iamVjdEFsbG9jYXRpb25UZXN0KCkge30KLX07Ci0KLS8vIFRlc3QgdGhhdCB3ZSBkb24ndCBy
ZS1hbGxvY2F0ZSBhIGJvdW5kIGZyYW1lYnVmZmVyIElELgotVEVTVF9QKE9iamVjdEFsbG9jYXRp
b25UZXN0LCBCaW5kRnJhbWVidWZmZXJCZWZvcmVHZW4pCi17Ci0gICAgZ2xCaW5kRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIDEpOwotICAgIEdMdWludCBmYm8gPSAwOwotICAgIGdsR2VuRnJh
bWVidWZmZXJzKDEsICZmYm8pOwotICAgIEVYUEVDVF9ORSgxdSwgZmJvKTsKLSAgICBnbERlbGV0
ZUZyYW1lYnVmZmVycygxLCAmZmJvKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQot
Ly8gVGVzdCB0aGF0IHdlIGRvbid0IHJlLWFsbG9jYXRlIGEgYm91bmQgZnJhbWVidWZmZXIgSUQs
IG90aGVyIHBhdHRlcm4uCi1URVNUX1AoT2JqZWN0QWxsb2NhdGlvblRlc3QsIEJpbmRGcmFtZWJ1
ZmZlckFmdGVyR2VuKQotewotICAgIEdMdWludCBmaXJzdEZCTyA9IDA7Ci0gICAgZ2xHZW5GcmFt
ZWJ1ZmZlcnMoMSwgJmZpcnN0RkJPKTsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiwgMSk7Ci0gICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZpcnN0RkJPKTsKLQotICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAyKTsKLSAgICBHTHVpbnQgc2Vjb25k
RkJPc1syXSA9IHswfTsKLSAgICBnbEdlbkZyYW1lYnVmZmVycygyLCBzZWNvbmRGQk9zKTsKLSAg
ICBFWFBFQ1RfTkUoMnUsIHNlY29uZEZCT3NbMF0pOwotICAgIEVYUEVDVF9ORSgydSwgc2Vjb25k
RkJPc1sxXSk7Ci0gICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMiwgc2Vjb25kRkJPcyk7Ci0KLSAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQot
Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKE9iamVjdEFsbG9jYXRpb25UZXN0LCBFUzNfT1BFTkdM
KCksIEVTM19EM0QxMSgpKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvT2NjbHVzaW9uUXVl
cmllc1Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L09jY2x1c2lvblF1ZXJpZXNUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
NWMyNGY4YmQ3YWUuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9PY2NsdXNpb25RdWVyaWVzVGVzdC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwzNjYgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgInN5c3RlbV91dGlscy5oIgot
I2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0jaW5jbHVkZSAicmFuZG9tX3V0aWxz
LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotY2xhc3MgT2NjbHVzaW9uUXVlcmllc1Rl
c3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBPY2NsdXNpb25RdWVy
aWVzVGVzdCgpIDogbVByb2dyYW0oMCksIG1STkcoMSkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRv
d1dpZHRoKDEyOCk7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwotICAgICAgICBzZXRD
b25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAg
IHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0g
ICAgICAgIHNldENvbmZpZ0RlcHRoQml0cygyNCk7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgp
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcgcGFzc3Rocm91Z2hWUyA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAg
KAotICAgICAgICAgICAgYXR0cmlidXRlIGhpZ2hwIHZlYzQgcG9zaXRpb247Ci0gICAgICAgICAg
ICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9Qb3Np
dGlvbiA9IHBvc2l0aW9uOwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nIHBhc3N0aHJvdWdoUFMgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgK
LSAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSAgICAgICAgICAgIHZvaWQgbWFp
bih2b2lkKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVj
NCgxLjAsIDEuMCwgMS4wLCAxLjApOwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAg
ICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0ocGFzc3Rocm91Z2hWUywgcGFzc3Rocm91Z2hQ
Uyk7Ci0gICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotICAgIH0KLQotICAgIHZvaWQg
VGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9n
cmFtKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgR0x1
aW50IG1Qcm9ncmFtOwotICAgIFJORyBtUk5HOwotfTsKLQotVEVTVF9QKE9jY2x1c2lvblF1ZXJp
ZXNUZXN0LCBJc09jY2x1ZGVkKQotewotICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8
IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiIp
KQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBFUzMg
b3IgR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIGFyZSBub3QgYXZhaWxhYmxlLiIKLSAg
ICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGdsRGVwdGhNYXNrKEdMX1RSVUUpOwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJ
VCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwotCi0gICAg
Ly8gZHJhdyBhIHF1YWQgYXQgZGVwdGggMC4zCi0gICAgZ2xFbmFibGUoR0xfREVQVEhfVEVTVCk7
Ci0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBv
c2l0aW9uIiwgMC4zZik7Ci0gICAgZ2xVc2VQcm9ncmFtKDApOwotCi0gICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICBHTHVpbnQgcXVlcnkgPSAwOwotICAgIGdsR2VuUXVlcmllc0VYVCgx
LCAmcXVlcnkpOwotICAgIGdsQmVnaW5RdWVyeUVYVChHTF9BTllfU0FNUExFU19QQVNTRURfRVhU
LCBxdWVyeSk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuOGYpOyAvLyB0
aGlzIHF1YWQgc2hvdWxkIGJlIG9jY2x1ZGVkIGJ5IGZpcnN0IHF1YWQKLSAgICBnbEVuZFF1ZXJ5
RVhUKEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICBzd2FwQnVmZmVycygpOwotCi0gICAgR0x1aW50IHJlYWR5ID0gR0xfRkFMU0U7
Ci0gICAgd2hpbGUgKHJlYWR5ID09IEdMX0ZBTFNFKQotICAgIHsKLSAgICAgICAgYW5nbGU6OlNs
ZWVwKDApOwotICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUKHF1ZXJ5LCBHTF9RVUVSWV9S
RVNVTFRfQVZBSUxBQkxFX0VYVCwgJnJlYWR5KTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgcmVzdWx0
ID0gR0xfVFJVRTsKLSAgICBnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUKHF1ZXJ5LCBHTF9RVUVSWV9S
RVNVTFRfRVhULCAmcmVzdWx0KTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAg
Z2xEZWxldGVRdWVyaWVzRVhUKDEsICZxdWVyeSk7Ci0KLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdM
X0ZBTFNFLCByZXN1bHQpOwotfQotCi1URVNUX1AoT2NjbHVzaW9uUXVlcmllc1Rlc3QsIElzTm90
T2NjbHVkZWQpCi17Ci0gICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAmJiAhZXh0
ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIikpCi0gICAgewot
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEVTMyBvciBHTF9FWFRf
b2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4gYXJlIG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAg
ICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZ2xEZXB0
aE1hc2soR0xfVFJVRSk7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQ
VEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7Ci0KLSAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKLQotICAgIEdMdWludCBxdWVyeSA9IDA7Ci0gICAgZ2xHZW5RdWVyaWVzRVhU
KDEsICZxdWVyeSk7Ci0gICAgZ2xCZWdpblF1ZXJ5RVhUKEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9F
WFQsIHF1ZXJ5KTsKLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC44Zik7IC8v
IHRoaXMgcXVhZCBzaG91bGQgbm90IGJlIG9jY2x1ZGVkCi0gICAgZ2xFbmRRdWVyeUVYVChHTF9B
TllfU0FNUExFU19QQVNTRURfRVhUKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0g
ICAgc3dhcEJ1ZmZlcnMoKTsKLQotICAgIEdMdWludCByZXN1bHQgPSBHTF9UUlVFOwotICAgIGds
R2V0UXVlcnlPYmplY3R1aXZFWFQocXVlcnksIEdMX1FVRVJZX1JFU1VMVF9FWFQsICZyZXN1bHQp
OyAvLyB3aWxsIGJsb2NrIHdhaXRpbmcgZm9yIHJlc3VsdAotCi0gICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7Ci0KLSAgICBnbERlbGV0ZVF1ZXJpZXNFWFQoMSwgJnF1ZXJ5KTsKLQotICAgIEVYUEVD
VF9HTEVOVU1fRVEoR0xfVFJVRSwgcmVzdWx0KTsKLX0KLQotVEVTVF9QKE9jY2x1c2lvblF1ZXJp
ZXNUZXN0LCBFcnJvcnMpCi17Ci0gICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpIDwgMyAm
JiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIikpCi0g
ICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEVTMyBvciBH
TF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4gYXJlIG5vdCBhdmFpbGFibGUuIgotICAgICAg
ICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Z2xEZXB0aE1hc2soR0xfVFJVRSk7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwg
R0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7Ci0KLSAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLQotICAgIEdMdWludCBxdWVyeSA9IDA7Ci0gICAgR0x1aW50IHF1
ZXJ5MiA9IDA7Ci0gICAgZ2xHZW5RdWVyaWVzRVhUKDEsICZxdWVyeSk7Ci0KLSAgICBFWFBFQ1Rf
RVEoZ2xJc1F1ZXJ5RVhUKHF1ZXJ5KSwgR0xfRkFMU0UpOwotICAgIEVYUEVDVF9FUShnbElzUXVl
cnlFWFQocXVlcnkyKSwgR0xfRkFMU0UpOwotCi0gICAgZ2xCZWdpblF1ZXJ5RVhUKEdMX0FOWV9T
QU1QTEVTX1BBU1NFRF9FWFQsIDApOyAvLyBjYW4ndCBwYXNzIDAgYXMgcXVlcnkgaWQKLSAgICBF
WFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgZ2xCZWdpblF1ZXJ5
RVhUKEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQsIHF1ZXJ5KTsKLSAgICBnbEJlZ2luUXVlcnlF
WFQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9FWFQsIHF1ZXJ5Mik7IC8vIGNh
bid0IGluaXRpYXRlIGEgcXVlcnkgd2hpbGUgb25lJ3MgYWxyZWFkeSBhY3RpdmUKLSAgICBFWFBF
Q1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgRVhQRUNUX0VRKGdsSXNR
dWVyeUVYVChxdWVyeSksIEdMX1RSVUUpOwotICAgIEVYUEVDVF9FUShnbElzUXVlcnlFWFQocXVl
cnkyKSwgR0xfRkFMU0UpOyAvLyBoYXZlIG5vdCBjYWxsZWQgYmVnaW4KLQotICAgIGRyYXdRdWFk
KG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjhmKTsgLy8gdGhpcyBxdWFkIHNob3VsZCBub3QgYmUg
b2NjbHVkZWQKLSAgICBnbEVuZFF1ZXJ5RVhUKEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJW
QVRJVkVfRVhUKTsgLy8gbm8gYWN0aXZlIHF1ZXJ5IGZvciB0aGlzIHRhcmdldAotICAgIEVYUEVD
VF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgZ2xFbmRRdWVyeUVYVChHTF9B
TllfU0FNUExFU19QQVNTRURfRVhUKTsKLQotICAgIGdsQmVnaW5RdWVyeUVYVChHTF9BTllfU0FN
UExFU19QQVNTRURfQ09OU0VSVkFUSVZFX0VYVCwgcXVlcnkpOyAvLyBjYW4ndCBiZWdpbiBhIHF1
ZXJ5IGFzIGEgZGlmZmVyZW50IHR5cGUgdGhhbiBwcmV2aW91c2x5IHVzZWQKLSAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgZ2xCZWdpblF1ZXJ5RVhUKEdM
X0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhULCBxdWVyeTIpOyAvLyBoYXZlIHRv
IGNhbGwgZ2VucXVlcmllcyBmaXJzdAotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09Q
RVJBVElPTik7Ci0KLSAgICBnbEdlblF1ZXJpZXNFWFQoMSwgJnF1ZXJ5Mik7Ci0gICAgZ2xCZWdp
blF1ZXJ5RVhUKEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhULCBxdWVyeTIp
OyAvLyBzaG91bGQgYmUgb2sgbm93Ci0gICAgRVhQRUNUX0VRKGdsSXNRdWVyeUVYVChxdWVyeTIp
LCBHTF9UUlVFKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjNmKTsg
Ly8gdGhpcyBzaG91bGQgZHJhdyBpbiBmcm9udCBvZiBvdGhlciBxdWFkCi0gICAgZ2xEZWxldGVR
dWVyaWVzRVhUKDEsICZxdWVyeTIpOyAvLyBzaG91bGQgZGVsZXRlIHdoZW4gcXVlcnkgYmVjb21l
cyBpbmFjdGl2ZQotICAgIGdsRW5kUXVlcnlFWFQoR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNF
UlZBVElWRV9FWFQpOyAvLyBzaG91bGQgbm90IGluY3VyIGVycm9yOyBzaG91bGQgZGVsZXRlIHF1
ZXJ5ICsgMSBhdCBlbmQgb2YgZXhlY3V0aW9uLgotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgc3dhcEJ1ZmZlcnMoKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAg
R0x1aW50IHJlYWR5ID0gR0xfRkFMU0U7Ci0gICAgZ2xHZXRRdWVyeU9iamVjdHVpdkVYVChxdWVy
eTIsIEdMX1FVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhULCAmcmVhZHkpOyAvLyB0aGlzIHF1ZXJ5
IGlzIG5vdyBkZWxldGVkCi0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IHRoYXQgcnVubmlu
ZyBtdWx0aXBsZSBzaW11bHRhbmVvdXMgcXVlcmllcyBmcm9tIG11bHRpcGxlIEVHTCBjb250ZXh0
cyByZXR1cm5zIHRoZSBjb3JyZWN0Ci0vLyByZXN1bHQgZm9yIGVhY2ggcXVlcnkuICBIZWxwcyBl
eHBvc2UgYnVncyBpbiBBTkdMRSdzIHZpcnR1YWwgY29udGV4dHMuCi1URVNUX1AoT2NjbHVzaW9u
UXVlcmllc1Rlc3QsIE11bHRpQ29udGV4dCkKLXsKLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJz
aW9uKCkgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jv
b2xlYW4iKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1
c2UgRVMzIG9yIEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiBhcmUgbm90IGF2YWlsYWJs
ZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoR2V0UGFyYW0oKSA9PSBFUzJfRDNEOSgpIHx8IEdldFBhcmFtKCkgPT0g
RVMyX0QzRDExKCkgfHwgR2V0UGFyYW0oKSA9PSBFUzNfRDNEMTEoKSkKLSAgICB7Ci0gICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgdGhlIEQzRCBiYWNrZW5kcyBjYW5u
b3Qgc3VwcG9ydCBzaW11bHRhbmVvdXMgcXVlcmllcyBvbiAiCi0gICAgICAgICAgICAgICAgICAg
ICAibXVsdGlwbGUgY29udGV4dHMgeWV0LiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5k
bDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsRGVwdGhNYXNrKEdMX1RSVUUpOwot
ICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBH
TF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwotCi0gICAgLy8gZHJhdyBhIHF1YWQgYXQgZGVwdGggMC41
Ci0gICAgZ2xFbmFibGUoR0xfREVQVEhfVEVTVCk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJw
b3NpdGlvbiIsIDAuNWYpOwotCi0gICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3co
KTsKLQotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHdpbmRvdy0+Z2V0RGlzcGxheSgpOwotICAg
IEVHTENvbmZpZyBjb25maWcgICA9IHdpbmRvdy0+Z2V0Q29uZmlnKCk7Ci0gICAgRUdMU3VyZmFj
ZSBzdXJmYWNlID0gd2luZG93LT5nZXRTdXJmYWNlKCk7Ci0KLSAgICBFR0xpbnQgY29udGV4dEF0
dHJpYnV0ZXNbXSA9IHsKLSAgICAgICAgRUdMX0NPTlRFWFRfTUFKT1JfVkVSU0lPTl9LSFIsCi0g
ICAgICAgIEdldFBhcmFtKCkubWFqb3JWZXJzaW9uLAotICAgICAgICBFR0xfQ09OVEVYVF9NSU5P
Ul9WRVJTSU9OX0tIUiwKLSAgICAgICAgR2V0UGFyYW0oKS5taW5vclZlcnNpb24sCi0gICAgICAg
IEVHTF9OT05FLAotICAgIH07Ci0KLSAgICBjb25zdCBzaXplX3QgcGFzc0NvdW50ID0gNTsKLSAg
ICBzdHJ1Y3QgQ29udGV4dEluZm8KLSAgICB7Ci0gICAgICAgIEVHTENvbnRleHQgY29udGV4dDsK
LSAgICAgICAgR0x1aW50IHByb2dyYW07Ci0gICAgICAgIEdMdWludCBxdWVyeTsKLSAgICAgICAg
Ym9vbCB2aXNpYmxlUGFzc2VzW3Bhc3NDb3VudF07Ci0gICAgICAgIGJvb2wgc2hvdWxkUGFzczsK
LSAgICB9OwotCi0gICAgQ29udGV4dEluZm8gY29udGV4dHNbXSA9IHsKLSAgICAgICAgewotICAg
ICAgICAgICAgRUdMX05PX0NPTlRFWFQsIDAsIDAsIHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxz
ZSwgZmFsc2V9LCBmYWxzZSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgRUdM
X05PX0NPTlRFWFQsIDAsIDAsIHtmYWxzZSwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlfSwgdHJ1
ZSwKLSAgICAgICAgfSwKLSAgICAgICAgewotICAgICAgICAgICAgRUdMX05PX0NPTlRFWFQsIDAs
IDAsIHtmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2V9LCBmYWxzZSwKLSAgICAgICAg
fSwKLSAgICAgICAgewotICAgICAgICAgICAgRUdMX05PX0NPTlRFWFQsIDAsIDAsIHt0cnVlLCB0
cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZX0sIHRydWUsCi0gICAgICAgIH0sCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEVHTF9OT19DT05URVhULCAwLCAwLCB7ZmFsc2UsIHRydWUsIHRydWUsIHRydWUs
IHRydWV9LCB0cnVlLAotICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICBFR0xfTk9f
Q09OVEVYVCwgMCwgMCwge3RydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgZmFsc2V9LCB0cnVlLAot
ICAgICAgICB9LAotICAgICAgICB7Ci0gICAgICAgICAgICBFR0xfTk9fQ09OVEVYVCwgMCwgMCwg
e2ZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX0sIGZhbHNlLAotICAgICAgICB9LAot
ICAgICAgICB7Ci0gICAgICAgICAgICBFR0xfTk9fQ09OVEVYVCwgMCwgMCwge2ZhbHNlLCBmYWxz
ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZX0sIGZhbHNlLAotICAgICAgICB9LAotICAgIH07Ci0KLSAg
ICBmb3IgKGF1dG8gJmNvbnRleHQgOiBjb250ZXh0cykKLSAgICB7Ci0gICAgICAgIGNvbnRleHQu
Y29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBFR0xfTk9fQ09OVEVY
VCwgY29udGV4dEF0dHJpYnV0ZXMpOwotICAgICAgICBBU1NFUlRfTkUoY29udGV4dC5jb250ZXh0
LCBFR0xfTk9fQ09OVEVYVCk7Ci0KLSAgICAgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgc3Vy
ZmFjZSwgc3VyZmFjZSwgY29udGV4dC5jb250ZXh0KTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyBwYXNzdGhyb3VnaFZTID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAg
ICBhdHRyaWJ1dGUgaGlnaHAgdmVjNCBwb3NpdGlvbjsKLSAgICAgICAgICAgIHZvaWQgbWFpbih2
b2lkKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRp
b247Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgcGFzc3Rocm91Z2hQUyA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAg
cHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwotICAgICAgICAgICAgdm9pZCBtYWluKHZvaWQpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMS4wLCAx
LjAsIDEuMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgY29udGV4dC5w
cm9ncmFtID0gQ29tcGlsZVByb2dyYW0ocGFzc3Rocm91Z2hWUywgcGFzc3Rocm91Z2hQUyk7Ci0g
ICAgICAgIEFTU0VSVF9ORShjb250ZXh0LnByb2dyYW0sIDB1KTsKLQotICAgICAgICBnbERlcHRo
TWFzayhHTF9GQUxTRSk7Ci0gICAgICAgIGdsRW5hYmxlKEdMX0RFUFRIX1RFU1QpOwotCi0gICAg
ICAgIGdsR2VuUXVlcmllc0VYVCgxLCAmY29udGV4dC5xdWVyeSk7Ci0gICAgICAgIGdsQmVnaW5R
dWVyeUVYVChHTF9BTllfU0FNUExFU19QQVNTRURfRVhULCBjb250ZXh0LnF1ZXJ5KTsKLQotICAg
ICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBwYXNz
ID0gMDsgcGFzcyA8IHBhc3NDb3VudDsgcGFzcysrKQotICAgIHsKLSAgICAgICAgZm9yIChjb25z
dCBhdXRvICZjb250ZXh0IDogY29udGV4dHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGVnbE1h
a2VDdXJyZW50KGRpc3BsYXksIHN1cmZhY2UsIHN1cmZhY2UsIGNvbnRleHQuY29udGV4dCk7Ci0K
LSAgICAgICAgICAgIGZsb2F0IGRlcHRoID0gY29udGV4dC52aXNpYmxlUGFzc2VzW3Bhc3NdID8g
bVJORy5yYW5kb21GbG9hdEJldHdlZW4oMC4wZiwgMC40ZikKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbVJORy5yYW5kb21GbG9hdEJldHdl
ZW4oMC42ZiwgMS4wZik7Ci0gICAgICAgICAgICBkcmF3UXVhZChjb250ZXh0LnByb2dyYW0sICJw
b3NpdGlvbiIsIGRlcHRoKTsKLQotICAgICAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8gJmNvbnRleHQgOiBjb250ZXh0
cykKLSAgICB7Ci0gICAgICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIHN1cmZhY2UsIHN1cmZh
Y2UsIGNvbnRleHQuY29udGV4dCk7Ci0gICAgICAgIGdsRW5kUXVlcnlFWFQoR0xfQU5ZX1NBTVBM
RVNfUEFTU0VEX0VYVCk7Ci0KLSAgICAgICAgR0x1aW50IHJlc3VsdCA9IEdMX1RSVUU7Ci0gICAg
ICAgIGdsR2V0UXVlcnlPYmplY3R1aXZFWFQoY29udGV4dC5xdWVyeSwgR0xfUVVFUllfUkVTVUxU
X0VYVCwgJnJlc3VsdCk7Ci0KLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAg
ICAgR0x1aW50IGV4cGVjdGF0aW9uID0gY29udGV4dC5zaG91bGRQYXNzID8gR0xfVFJVRSA6IEdM
X0ZBTFNFOwotICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0YXRpb24sIHJlc3VsdCk7Ci0gICAgfQot
Ci0gICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgd2luZG93LT5n
ZXRDb250ZXh0KCkpOwotCi0gICAgZm9yIChhdXRvICZjb250ZXh0IDogY29udGV4dHMpCi0gICAg
ewotICAgICAgICBlZ2xEZXN0cm95Q29udGV4dChkaXNwbGF5LCBjb250ZXh0LmNvbnRleHQpOwot
ICAgICAgICBjb250ZXh0LmNvbnRleHQgPSBFR0xfTk9fQ09OVEVYVDsKLSAgICB9Ci19Ci0KLS8v
IFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5k
ZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVu
IGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKE9jY2x1c2lvblF1ZXJpZXNUZXN0LAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
RVMzX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BCT0V4dGVuc2lvblRlc3QuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BCT0V4dGVuc2lv
blRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGMwYmQzOTMwOS4uMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L1BCT0V4dGVuc2lvblRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLS8v
Ci0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KLS8vCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi11c2luZyBuYW1l
c3BhY2UgYW5nbGU7Ci0KLWNsYXNzIFBCT0V4dGVuc2lvblRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0
Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBQQk9FeHRlbnNpb25UZXN0KCkKLSAgICB7Ci0gICAgICAg
IHNldFdpbmRvd1dpZHRoKDMyKTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDMyKTsKLSAgICAg
ICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwot
ICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRz
KDgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCi0gICAgewotICAgICAgICBB
TkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQoIk5WX3Bp
eGVsX2J1ZmZlcl9vYmplY3QiKSkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xHZW5CdWZmZXJz
KDEsICZtUEJPKTsKLSAgICAgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZF
UiwgbVBCTyk7Ci0gICAgICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfUElYRUxfUEFDS19CVUZGRVIs
IDQgKiBnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCksIE5VTEwsIEdMX1NUQVRJ
Q19EUkFXKTsKLSAgICAgICAgICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZFUiwg
MCk7Ci0KLSAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZlcnRleFNoYWRlclNyYyA9IFNIQURFUl9T
T1VSQ0UKLSAgICAgICAgICAgICgKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBhVGVz
dDsKLSAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgdmVjMiBhUG9zaXRpb247Ci0gICAgICAgICAg
ICAgICAgdmFyeWluZyB2ZWM0IHZUZXN0OwotCi0gICAgICAgICAgICAgICAgdm9pZCBtYWluKCkK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHZUZXN0ID0gYVRlc3Q7Ci0g
ICAgICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhUG9zaXRpb24sIDAuMCwgMS4w
KTsKLSAgICAgICAgICAgICAgICAgICAgZ2xfUG9pbnRTaXplID0gMS4wOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyYWdtZW50
U2hhZGVyU3JjID0gU0hBREVSX1NPVVJDRQotICAgICAgICAgICAgKAotICAgICAgICAgICAgICAg
IHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICAgICAgICAgIHZhcnlpbmcgdmVjNCB2
VGVzdDsKLQotICAgICAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2VGVzdDsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICApOwotCi0gICAgICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9n
cmFtKHZlcnRleFNoYWRlclNyYywgZnJhZ21lbnRTaGFkZXJTcmMpOwotCi0gICAgICAgICAgICBn
bEdlbkJ1ZmZlcnMoMSwgJm1Qb3NpdGlvblZCTyk7Ci0gICAgICAgICAgICBnbEJpbmRCdWZmZXIo
R0xfQVJSQVlfQlVGRkVSLCBtUG9zaXRpb25WQk8pOwotICAgICAgICAgICAgZ2xCdWZmZXJEYXRh
KEdMX0FSUkFZX0JVRkZFUiwgMTI4LCBOVUxMLCBHTF9EWU5BTUlDX0RSQVcpOwotICAgICAgICAg
ICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7Ci0gICAgICAgIH0KLSAgICAgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIFRlYXJEb3du
KCkKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLQotICAgICAgICBnbERl
bGV0ZUJ1ZmZlcnMoMSwgJm1QQk8pOwotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0p
OwotICAgIH0KLQotICAgIEdMdWludCBtUEJPOwotICAgIEdMdWludCBtUHJvZ3JhbTsKLSAgICBH
THVpbnQgbVBvc2l0aW9uVkJPOwotfTsKLQotVEVTVF9QKFBCT0V4dGVuc2lvblRlc3QsIFBCT1dp
dGhPdGhlclRhcmdldCkKLXsKLSAgICBpZiAoZXh0ZW5zaW9uRW5hYmxlZCgiTlZfcGl4ZWxfYnVm
ZmVyX29iamVjdCIpKQotICAgIHsKLSAgICAgICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDAu
MGYsIDEuMGYpOwotICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgICAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxf
UEFDS19CVUZGRVIsIG1QQk8pOwotICAgICAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMTYsIDE2LCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKLQotICAgICAgICBnbEJpbmRCdWZmZXIoR0xf
UElYRUxfUEFDS19CVUZGRVIsIDApOwotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVG
RkVSLCBtUEJPKTsKLQotICAgICAgICBHTHZvaWQgKm1hcHBlZFB0ciA9IGdsTWFwQnVmZmVyUmFu
Z2VFWFQoR0xfQVJSQVlfQlVGRkVSLCAwLCAzMiwgR0xfTUFQX1JFQURfQklUKTsKLSAgICAgICAg
dW5zaWduZWQgY2hhciAqZGF0YVB0ciA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIgKj4obWFw
cGVkUHRyKTsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgRVhQRUNU
X0VRKDI1NSwgZGF0YVB0clswXSk7Ci0gICAgICAgIEVYUEVDVF9FUSgwLCAgIGRhdGFQdHJbMV0p
OwotICAgICAgICBFWFBFQ1RfRVEoMCwgICBkYXRhUHRyWzJdKTsKLSAgICAgICAgRVhQRUNUX0VR
KDI1NSwgZGF0YVB0clszXSk7Ci0KLSAgICAgICAgZ2xVbm1hcEJ1ZmZlck9FUyhHTF9BUlJBWV9C
VUZGRVIpOwotICAgIH0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotVEVTVF9QKFBC
T0V4dGVuc2lvblRlc3QsIFBCT1dpdGhFeGlzdGluZ0RhdGEpCi17Ci0gICAgaWYgKGV4dGVuc2lv
bkVuYWJsZWQoIk5WX3BpeGVsX2J1ZmZlcl9vYmplY3QiKSkKLSAgICB7Ci0gICAgICAgIC8vIENs
ZWFyIGJhY2tidWZmZXIgdG8gcmVkCi0gICAgICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAwLjBmLCAw
LjBmLCAxLjBmKTsKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICAg
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgLy8gUmVhZCAxNngxNiByZWdpb24g
ZnJvbSByZWQgYmFja2J1ZmZlciB0byBQQk8KLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVM
X1BBQ0tfQlVGRkVSLCBtUEJPKTsKLSAgICAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDE2LCAxNiwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0KLSAgICAgICAgLy8gQ2xlYXIgYmFja2J1
ZmZlciB0byBncmVlbgotICAgICAgICBnbENsZWFyQ29sb3IoMC4wZiwgMS4wZiwgMC4wZiwgMS4w
Zik7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIC8vIFJlYWQgMTZ4MTYgcmVnaW9uIGZyb20gZ3Jl
ZW4gYmFja2J1ZmZlciB0byBQQk8gYXQgb2Zmc2V0IDE2Ci0gICAgICAgIGdsUmVhZFBpeGVscygw
LCAwLCAxNiwgMTYsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHJlaW50ZXJwcmV0X2Nhc3Q8
R0x2b2lkKj4oMTYpKTsKLSAgICAgICAgR0x2b2lkICogbWFwcGVkUHRyID0gZ2xNYXBCdWZmZXJS
YW5nZUVYVChHTF9QSVhFTF9QQUNLX0JVRkZFUiwgMCwgMzIsIEdMX01BUF9SRUFEX0JJVCk7Ci0g
ICAgICAgIHVuc2lnbmVkIGNoYXIgKmRhdGFQdHIgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
ICo+KG1hcHBlZFB0cik7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAg
IC8vIFRlc3QgcGl4ZWwgMCBpcyByZWQgKGV4aXN0aW5nIGRhdGEpCi0gICAgICAgIEVYUEVDVF9F
USgyNTUsIGRhdGFQdHJbMF0pOwotICAgICAgICBFWFBFQ1RfRVEoMCwgZGF0YVB0clsxXSk7Ci0g
ICAgICAgIEVYUEVDVF9FUSgwLCBkYXRhUHRyWzJdKTsKLSAgICAgICAgRVhQRUNUX0VRKDI1NSwg
ZGF0YVB0clszXSk7Ci0KLSAgICAgICAgLy8gVGVzdCBwaXhlbCAxNiBpcyBncmVlbiAobmV3IGRh
dGEpCi0gICAgICAgIEVYUEVDVF9FUSgwLCBkYXRhUHRyWzE2ICogNCArIDBdKTsKLSAgICAgICAg
RVhQRUNUX0VRKDI1NSwgZGF0YVB0clsxNiAqIDQgKyAxXSk7Ci0gICAgICAgIEVYUEVDVF9FUSgw
LCBkYXRhUHRyWzE2ICogNCArIDJdKTsKLSAgICAgICAgRVhQRUNUX0VRKDI1NSwgZGF0YVB0clsx
NiAqIDQgKyAzXSk7Ci0KLSAgICAgICAgZ2xVbm1hcEJ1ZmZlck9FUyhHTF9QSVhFTF9QQUNLX0JV
RkZFUik7Ci0gICAgfQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBVc2UgdGhp
cyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdo
aWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0
LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChQQk9FeHRlbnNpb25UZXN0LCBFUzJfRDNEMTEoKSwg
RVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BhY2tVbnBhY2tUZXN0
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9QYWNrVW5w
YWNrVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzMjUwNGI4MGRmLi4w
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVz
dHMvUGFja1VucGFja1Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjY4ICswLDAgQEAKLS8v
Ci0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KLS8vCi0vLyBQYWNrVW5wYWNrVGVzdDoKLS8vICAgVGVzdHMgdGhlIGNvcnJyZWN0bmVzcyBv
ZiBvcGVuZ2wgNC4xIGVtdWxhdGlvbiBvZiBwYWNrL3VucGFjayBidWlsdC1pbiBmdW5jdGlvbnMu
Ci0vLwotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotdXNpbmcgbmFtZXNw
YWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3MgUGFja1VucGFja1Rlc3QgOiBwdWJs
aWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBQYWNrVW5wYWNrVGVzdCgpCi0gICAg
ewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxNik7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgx
Nik7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVu
Qml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZp
Z0FscGhhQml0cyg4KTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICAvLyBWZXJ0ZXggU2hhZGVy
IHNvdXJjZQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2cyA9IFNIQURFUl9TT1VSQ0UKLSAg
ICAgICAgKCAgICN2ZXJzaW9uIDMwMCBlc1xuCi0gICAgICAgICAgICBwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDsKLSAgICAgICAgICAgIGluIHZlYzQgcG9zaXRpb247Ci0KLSAgICAgICAgICAgIHZv
aWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBw
b3NpdGlvbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICAvLyBjbGFuZy1m
b3JtYXQgb2ZmCi0gICAgICAgIC8vIEZyYWdtZW50IFNoYWRlciBzb3VyY2UKLSAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgc05vcm1GUyA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKCAgICN2ZXJz
aW9uIDMwMCBlc1xuCi0gICAgICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLSAgICAg
ICAgICAgIHVuaWZvcm0gbWVkaXVtcCB2ZWMyIHY7Ci0gICAgICAgICAgICBsYXlvdXQobG9jYXRp
b24gPSAwKSBvdXQgbWVkaXVtcCB2ZWM0IGZyYWdDb2xvcjsKLQotICAgICAgICAgICAgdm9pZCBt
YWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB1aW50IHUgPSBwYWNrU25vcm0y
eDE2KHYpOwotICAgICAgICAgICAgICAgIHZlYzIgciA9IHVucGFja1Nub3JtMngxNih1KTsKLSAg
ICAgICAgICAgICAgICBmcmFnQ29sb3IgPSB2ZWM0KHIsIDAuMCwgMS4wKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgKTsKLQotICAgICAgICAvLyBGcmFnbWVudCBTaGFkZXIgc291cmNlCi0gICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHVOb3JtRlMgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgg
ICAjdmVyc2lvbiAzMDAgZXNcbgotICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7
Ci0gICAgICAgICAgICB1bmlmb3JtIG1lZGl1bXAgdmVjMiB2OwotICAgICAgICAgICAgbGF5b3V0
KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29sb3I7Ci0KLSAgICAgICAgICAg
IHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdWludCB1ID0gcGFj
a1Vub3JtMngxNih2KTsKLSAgICAgICAgICAgICAgICB2ZWMyIHIgPSB1bnBhY2tVbm9ybTJ4MTYo
dSk7Ci0gICAgICAgICAgICAgICAgZnJhZ0NvbG9yID0gdmVjNChyLCAwLjAsIDEuMCk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgLy8gRnJhZ21lbnQgU2hhZGVyIHNvdXJj
ZQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBoYWxmRlMgPSBTSEFERVJfU09VUkNFCi0gICAg
ICAgICggICAjdmVyc2lvbiAzMDAgZXNcbgotICAgICAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7Ci0gICAgICAgICAgICB1bmlmb3JtIG1lZGl1bXAgdmVjMiB2OwotICAgICAgICAgICAg
bGF5b3V0KGxvY2F0aW9uID0gMCkgb3V0IG1lZGl1bXAgdmVjNCBmcmFnQ29sb3I7Ci0KLSAgICAg
ICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgdWlu
dCB1ID0gcGFja0hhbGYyeDE2KHYpOwotICAgICAgICAgICAgICAgICB2ZWMyIHIgPSB1bnBhY2tI
YWxmMngxNih1KTsKLSAgICAgICAgICAgICAgICAgZnJhZ0NvbG9yID0gdmVjNChyLCAwLjAsIDEu
MCk7Ci0gICAgICAgICAgICAgfQotICAgICAgICApOwotICAgICAgICAvLyBjbGFuZy1mb3JtYXQg
b24KLQotICAgICAgICBtU05vcm1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnMsIHNOb3JtRlMp
OwotICAgICAgICBtVU5vcm1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnMsIHVOb3JtRlMpOwot
ICAgICAgICBtSGFsZlByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2cywgaGFsZkZTKTsKLSAgICAg
ICAgaWYgKG1TTm9ybVByb2dyYW0gPT0gMCB8fCBtVU5vcm1Qcm9ncmFtID09IDAgfHwgbUhhbGZQ
cm9ncmFtID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIEZBSUwoKSA8PCAic2hhZGVyIGNv
bXBpbGF0aW9uIGZhaWxlZC4iOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2xHZW5UZXh0dXJlcygx
LCAmbU9mZnNjcmVlblRleHR1cmUyRCk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgbU9mZnNjcmVlblRleHR1cmUyRCk7Ci0gICAgICAgIGdsVGV4U3RvcmFnZTJEKEdMX1RF
WFRVUkVfMkQsIDEsIEdMX1JHMzJGLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQo
KSk7Ci0KLSAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1PZmZzY3JlZW5GcmFtZWJ1ZmZl
cik7Ci0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtT2Zmc2NyZWVu
RnJhbWVidWZmZXIpOwotICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVG
RkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbU9mZnNjcmVlblRleHR1
cmUyRCwgMCk7Ci0KLSAgICAgICAgZ2xWaWV3cG9ydCgwLCAwLCAxNiwgMTYpOwotCi0gICAgICAg
IGNvbnN0IEdMZmxvYXQgY29sb3JbXSA9IHsgMS4wZiwgMS4wZiwgMC4wZiwgMS4wZiB9OwotICAg
ICAgICBnbENsZWFyQnVmZmVyZnYoR0xfQ09MT1IsIDAsIGNvbG9yKTsKLSAgICB9Ci0KLSAgICB2
b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMo
MSwgJm1PZmZzY3JlZW5UZXh0dXJlMkQpOwotICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVycygx
LCAmbU9mZnNjcmVlbkZyYW1lYnVmZmVyKTsKLSAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1TTm9y
bVByb2dyYW0pOwotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVVOb3JtUHJvZ3JhbSk7Ci0gICAg
ICAgIGdsRGVsZXRlUHJvZ3JhbShtSGFsZlByb2dyYW0pOwotCi0gICAgICAgIEFOR0xFVGVzdDo6
VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvbXBhcmVCZWZvcmVBZnRlcihHTHVpbnQg
cHJvZ3JhbSwgZmxvYXQgaW5wdXQxLCBmbG9hdCBpbnB1dDIpCi0gICAgewotICAgICAgICBjb21w
YXJlQmVmb3JlQWZ0ZXIocHJvZ3JhbSwgaW5wdXQxLCBpbnB1dDIsIGlucHV0MSwgaW5wdXQyKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGNvbXBhcmVCZWZvcmVBZnRlcihHTHVpbnQgcHJvZ3JhbSwgZmxv
YXQgaW5wdXQxLCBmbG9hdCBpbnB1dDIsIGZsb2F0IGV4cGVjdDEsIGZsb2F0IGV4cGVjdDIpCi0g
ICAgewotICAgICAgICBHTGludCB2ZWMyTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihw
cm9ncmFtLCAidiIpOwotCi0gICAgICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKLSAgICAgICAg
Z2xVbmlmb3JtMmYodmVjMkxvY2F0aW9uLCBpbnB1dDEsIGlucHV0Mik7Ci0KLSAgICAgICAgZHJh
d1F1YWQocHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICAgICAgR0xmbG9hdCBwWzJdID0geyAwIH07Ci0gICAgICAgIGdsUmVh
ZFBpeGVscyg4LCA4LCAxLCAxLCBHTF9SRywgR0xfRkxPQVQsIHApOwotCi0gICAgICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBkb3VibGUgZXBzaWxvbiA9
IDAuMDAwNTsKLSAgICAgICAgRVhQRUNUX05FQVIocFswXSwgZXhwZWN0MSwgZXBzaWxvbik7Ci0g
ICAgICAgIEVYUEVDVF9ORUFSKHBbMV0sIGV4cGVjdDIsIGVwc2lsb24pOwotICAgIH0KLQotICAg
IEdMdWludCBtU05vcm1Qcm9ncmFtOwotICAgIEdMdWludCBtVU5vcm1Qcm9ncmFtOwotICAgIEdM
dWludCBtSGFsZlByb2dyYW07Ci0gICAgR0x1aW50IG1PZmZzY3JlZW5GcmFtZWJ1ZmZlcjsKLSAg
ICBHTHVpbnQgbU9mZnNjcmVlblRleHR1cmUyRDsKLX07Ci0KLS8vIFRlc3QgdGhlIGNvcnJlY3Ru
ZXNzIG9mIHBhY2tTbm9ybTJ4MTYgYW5kIHVucGFja1Nub3JtMngxNiBmdW5jdGlvbnMgY2FsY3Vs
YXRpbmcgbm9ybWFsIGZsb2F0aW5nIG51bWJlcnMuCi1URVNUX1AoUGFja1VucGFja1Rlc3QsIFBh
Y2tVbnBhY2tTbm9ybU5vcm1hbCkKLXsKLSAgICAvLyBFeHBlY3QgdGhlIHNoYWRlciB0byBvdXRw
dXQgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIGlucHV0Ci0gICAgY29tcGFyZUJlZm9yZUFmdGVyKG1T
Tm9ybVByb2dyYW0sIDAuNWYsIC0wLjJmKTsKLSAgICBjb21wYXJlQmVmb3JlQWZ0ZXIobVNOb3Jt
UHJvZ3JhbSwgLTAuMzVmLCAwLjc1Zik7Ci0gICAgY29tcGFyZUJlZm9yZUFmdGVyKG1TTm9ybVBy
b2dyYW0sIDAuMDAzOTJmLCAtMC45OTIxNWYpOwotICAgIGNvbXBhcmVCZWZvcmVBZnRlcihtU05v
cm1Qcm9ncmFtLCAxLjBmLCAtMC4wMDM5MmYpOwotfQotCi0vLyBUZXN0IHRoZSBjb3JyZWN0bmVz
cyBvZiBwYWNrU25vcm0yeDE2IGFuZCB1bnBhY2tTbm9ybTJ4MTYgZnVuY3Rpb25zIGNhbGN1bGF0
aW5nIG5vcm1hbCBmbG9hdGluZwotLy8gbnVtYmVycy4KLVRFU1RfUChQYWNrVW5wYWNrVGVzdCwg
UGFja1VucGFja1Vub3JtTm9ybWFsKQotewotICAgIC8vIEV4cGVjdCB0aGUgc2hhZGVyIHRvIG91
dHB1dCB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgaW5wdXQKLSAgICBjb21wYXJlQmVmb3JlQWZ0ZXIo
bVVOb3JtUHJvZ3JhbSwgMC41ZiwgMC4yZiwgMC41ZiwgMC4yZik7Ci0gICAgY29tcGFyZUJlZm9y
ZUFmdGVyKG1VTm9ybVByb2dyYW0sIDAuMzVmLCAwLjc1ZiwgMC4zNWYsIDAuNzVmKTsKLSAgICBj
b21wYXJlQmVmb3JlQWZ0ZXIobVVOb3JtUHJvZ3JhbSwgMC4wMDM5MmYsIDAuOTkyMTVmLCAwLjAw
MzkyZiwgMC45OTIxNWYpOwotICAgIGNvbXBhcmVCZWZvcmVBZnRlcihtVU5vcm1Qcm9ncmFtLCAx
LjBmLCAwLjAwMzkyZiwgMS4wZiwgMC4wMDM5MmYpOwotfQotCi0vLyBUZXN0IHRoZSBjb3JyZWN0
bmVzcyBvZiBwYWNrSGFsZjJ4MTYgYW5kIHVucGFja0hhbGYyeDE2IGZ1bmN0aW9ucyBjYWxjdWxh
dGluZyBub3JtYWwgZmxvYXRpbmcgbnVtYmVycy4KLVRFU1RfUChQYWNrVW5wYWNrVGVzdCwgUGFj
a1VucGFja0hhbGZOb3JtYWwpCi17Ci0gICAgLy8gVE9ETyhjd2FsbGV6KSBmaWd1cmUgb3V0IHdo
eSBpdCBpcyBicm9rZW4gb24gSW50ZWwgb24gTWFjCi0jaWYgZGVmaW5lZChBTkdMRV9QTEFURk9S
TV9BUFBMRSkKLSAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9PSBF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCi0gICAgewotICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBvbiBNYWMuIiA8PCBzdGQ6OmVuZGw7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIC8vIEV4cGVjdCB0aGUgc2hhZGVy
IHRvIG91dHB1dCB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgaW5wdXQKLSAgICBjb21wYXJlQmVmb3Jl
QWZ0ZXIobUhhbGZQcm9ncmFtLCAwLjVmLCAtMC4yZik7Ci0gICAgY29tcGFyZUJlZm9yZUFmdGVy
KG1IYWxmUHJvZ3JhbSwgLTAuMzVmLCAwLjc1Zik7Ci0gICAgY29tcGFyZUJlZm9yZUFmdGVyKG1I
YWxmUHJvZ3JhbSwgMC4wMDM5MmYsIC0wLjk5MjE1Zik7Ci0gICAgY29tcGFyZUJlZm9yZUFmdGVy
KG1IYWxmUHJvZ3JhbSwgMS4wZiwgLTAuMDAzOTJmKTsKLX0KLQotLy8gVGVzdCB0aGUgY29ycmVj
dG5lc3Mgb2YgcGFja1Nub3JtMngxNiBhbmQgdW5wYWNrU25vcm0yeDE2IGZ1bmN0aW9ucyBjYWxj
dWxhdGluZyBzdWJub3JtYWwgZmxvYXRpbmcgbnVtYmVycy4KLVRFU1RfUChQYWNrVW5wYWNrVGVz
dCwgUGFja1VucGFja1Nub3JtU3Vibm9ybWFsKQotewotICAgIC8vIEV4cGVjdCB0aGUgc2hhZGVy
IHRvIG91dHB1dCB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgaW5wdXQKLSAgICBjb21wYXJlQmVmb3Jl
QWZ0ZXIobVNOb3JtUHJvZ3JhbSwgMC4wMDAwMWYsIC0wLjAwMDAxZik7Ci19Ci0KLS8vIFRlc3Qg
dGhlIGNvcnJlY3RuZXNzIG9mIHBhY2tVbm9ybTJ4MTYgYW5kIHVucGFja1Vub3JtMngxNiBmdW5j
dGlvbnMgY2FsY3VsYXRpbmcgc3Vibm9ybWFsCi0vLyBmbG9hdGluZyBudW1iZXJzLgotVEVTVF9Q
KFBhY2tVbnBhY2tUZXN0LCBQYWNrVW5wYWNrVW5vcm1TdWJub3JtYWwpCi17Ci0gICAgLy8gRXhw
ZWN0IHRoZSBzaGFkZXIgdG8gb3V0cHV0IHRoZSBzYW1lIHZhbHVlIGFzIHRoZSBpbnB1dCBmb3Ig
cG9zaXRpdmUgbnVtYmVycyBhbmQgY2xhbXAKLSAgICAvLyB0byBbMCwgMV0KLSAgICBjb21wYXJl
QmVmb3JlQWZ0ZXIobVVOb3JtUHJvZ3JhbSwgMC4wMDAwMWYsIC0wLjAwMDAxZiwgMC4wMDAwMWYs
IDAuMGYpOwotfQotCi0vLyBUZXN0IHRoZSBjb3JyZWN0bmVzcyBvZiBwYWNrSGFsZjJ4MTYgYW5k
IHVucGFja0hhbGYyeDE2IGZ1bmN0aW9ucyBjYWxjdWxhdGluZyBzdWJub3JtYWwgZmxvYXRpbmcg
bnVtYmVycy4KLVRFU1RfUChQYWNrVW5wYWNrVGVzdCwgUGFja1VucGFja0hhbGZTdWJub3JtYWwp
Ci17Ci0gICAgLy8gRXhwZWN0IHRoZSBzaGFkZXIgdG8gb3V0cHV0IHRoZSBzYW1lIHZhbHVlIGFz
IHRoZSBpbnB1dAotICAgIGNvbXBhcmVCZWZvcmVBZnRlcihtSGFsZlByb2dyYW0sIDAuMDAwMDFm
LCAtMC4wMDAwMWYpOwotfQotCi0vLyBUZXN0IHRoZSBjb3JyZWN0bmVzcyBvZiBwYWNrU25vcm0y
eDE2IGFuZCB1bnBhY2tTbm9ybTJ4MTYgZnVuY3Rpb25zIGNhbGN1bGF0aW5nIHplcm8gZmxvYXRp
bmcgbnVtYmVycy4KLVRFU1RfUChQYWNrVW5wYWNrVGVzdCwgUGFja1VucGFja1Nub3JtWmVybykK
LXsKLSAgICAvLyBFeHBlY3QgdGhlIHNoYWRlciB0byBvdXRwdXQgdGhlIHNhbWUgdmFsdWUgYXMg
dGhlIGlucHV0Ci0gICAgY29tcGFyZUJlZm9yZUFmdGVyKG1TTm9ybVByb2dyYW0sIDAuMDAwMDBm
LCAtMC4wMDAwMGYpOwotfQotCi0vLyBUZXN0IHRoZSBjb3JyZWN0bmVzcyBvZiBwYWNrVW5vcm0y
eDE2IGFuZCB1bnBhY2tVbm9ybTJ4MTYgZnVuY3Rpb25zIGNhbGN1bGF0aW5nIHplcm8gZmxvYXRp
bmcKLS8vIG51bWJlcnMuCi1URVNUX1AoUGFja1VucGFja1Rlc3QsIFBhY2tVbnBhY2tVbm9ybVpl
cm8pCi17Ci0gICAgY29tcGFyZUJlZm9yZUFmdGVyKG1VTm9ybVByb2dyYW0sIDAuMDAwMDBmLCAt
MC4wMDAwMGYsIDAuMDAwMDBmLCAwLjAwMDAwZik7Ci19Ci0KLS8vIFRlc3QgdGhlIGNvcnJlY3Ru
ZXNzIG9mIHBhY2tIYWxmMngxNiBhbmQgdW5wYWNrSGFsZjJ4MTYgZnVuY3Rpb25zIGNhbGN1bGF0
aW5nIHplcm8gZmxvYXRpbmcgbnVtYmVycy4KLVRFU1RfUChQYWNrVW5wYWNrVGVzdCwgUGFja1Vu
cGFja0hhbGZaZXJvKQotewotICAgIC8vIEV4cGVjdCB0aGUgc2hhZGVyIHRvIG91dHB1dCB0aGUg
c2FtZSB2YWx1ZSBhcyB0aGUgaW5wdXQKLSAgICBjb21wYXJlQmVmb3JlQWZ0ZXIobUhhbGZQcm9n
cmFtLCAwLjAwMDAwZiwgLTAuMDAwMDBmKTsKLX0KLQotLy8gVGVzdCB0aGUgY29ycmVjdG5lc3Mg
b2YgcGFja1Vub3JtMngxNiBhbmQgdW5wYWNrVW5vcm0yeDE2IGZ1bmN0aW9ucyBjYWxjdWxhdGlu
ZyBvdmVyZmxvdyBmbG9hdGluZwotLy8gbnVtYmVycy4KLVRFU1RfUChQYWNrVW5wYWNrVGVzdCwg
UGFja1VucGFja1Vub3JtT3ZlcmZsb3cpCi17Ci0gICAgLy8gRXhwZWN0IHRoZSBzaGFkZXIgdG8g
Y2xhbXAgdGhlIGlucHV0IHRvIFswLCAxXQotICAgIGNvbXBhcmVCZWZvcmVBZnRlcihtVU5vcm1Q
cm9ncmFtLCA2NzAwMC4wZiwgLTY3MDAwLjBmLCAxLjBmLCAwLjBmKTsKLX0KLQotLy8gVGVzdCB0
aGUgY29ycmVjdG5lc3Mgb2YgcGFja1Nub3JtMngxNiBhbmQgdW5wYWNrU25vcm0yeDE2IGZ1bmN0
aW9ucyBjYWxjdWxhdGluZyBvdmVyZmxvdyBmbG9hdGluZyBudW1iZXJzLgotVEVTVF9QKFBhY2tV
bnBhY2tUZXN0LCBQYWNrVW5wYWNrU25vcm1PdmVyZmxvdykKLXsKLSAgICAvLyBFeHBlY3QgdGhl
IHNoYWRlciB0byBjbGFtcCB0aGUgaW5wdXQgdG8gWy0xLCAxXQotICAgIGNvbXBhcmVCZWZvcmVB
ZnRlcihtU05vcm1Qcm9ncmFtLCA2NzAwMC4wZiwgLTY3MDAwLjBmLCAxLjBmLCAtMS4wZik7Ci19
Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGlj
aCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQg
YmUgcnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKFBhY2tVbnBhY2tUZXN0LAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKDMsIDMpLAotICAgICAgICAgICAgICAg
ICAgICAgICBFUzNfT1BFTkdMKDQsIDApLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BF
TkdMKDQsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKDQsIDIpLAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKDQsIDMpLAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzNfT1BFTkdMKDQsIDQpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdM
KDQsIDUpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7Ci19CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUGF0aFJl
bmRlcmluZ1Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL1BhdGhSZW5kZXJpbmdUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OTYyNTMxMDcxNzkuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9QYXRoUmVuZGVyaW5nVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxOTg0ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBDSFJPTUlVTVBhdGhSZW5kZXJpbmdUZXN0Ci0v
LyAgIFRlc3QgQ0hST01JVU0gc3Vic2V0IG9mIE5WX3BhdGhfcmVuZGVyaW5nCi0vLyAgIFRoaXMg
ZXh0ZW5zaW9uIGFsbG93cyB0byByZW5kZXIgZ2VvbWV0cmljIHBhdGhzIGFzIGZpcnN0IGNsYXNz
IEdMIG9iamVjdHMuCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotI2luY2x1
ZGUgInNoYWRlcl91dGlscy5oIgotCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKLQot
I2luY2x1ZGUgPGNtYXRoPgotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4K
LSNpbmNsdWRlIDxmc3RyZWFtPgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFj
ZQotewotCi1ib29sIENoZWNrUGl4ZWxzKEdMaW50IHgsCi0gICAgICAgICAgICAgICAgIEdMaW50
IHksCi0gICAgICAgICAgICAgICAgIEdMc2l6ZWkgd2lkdGgsCi0gICAgICAgICAgICAgICAgIEdM
c2l6ZWkgaGVpZ2h0LAotICAgICAgICAgICAgICAgICBHTGludCB0b2xlcmFuY2UsCi0gICAgICAg
ICAgICAgICAgIGNvbnN0IGFuZ2xlOjpHTENvbG9yICZjb2xvcikKLXsKLSAgICBmb3IgKEdMaW50
IHl5ID0gMDsgeXkgPCBoZWlnaHQ7ICsreXkpCi0gICAgewotICAgICAgICBmb3IgKEdMaW50IHh4
ID0gMDsgeHggPCB3aWR0aDsgKyt4eCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3QgYXV0
byBweCA9IHggKyB4eDsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8gcHkgPSB5ICsgeXk7Ci0gICAg
ICAgICAgICBFWFBFQ1RfUElYRUxfTkVBUihweCwgcHksIGNvbG9yLlIsIGNvbG9yLkcsIGNvbG9y
LkIsIGNvbG9yLkEsIHRvbGVyYW5jZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotdm9pZCBFeHBlY3RFcXVhbE1hdHJpeChjb25zdCBHTGZsb2F0ICpleHBlY3Rl
ZCwgY29uc3QgR0xmbG9hdCAqYWN0dWFsKQotewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
MTY7ICsraSkKLSAgICB7Ci0gICAgICAgIEVYUEVDVF9FUShleHBlY3RlZFtpXSwgYWN0dWFsW2ld
KTsKLSAgICB9Ci19Ci0KLXZvaWQgRXhwZWN0RXF1YWxNYXRyaXgoY29uc3QgR0xmbG9hdCAqZXhw
ZWN0ZWQsIGNvbnN0IEdMaW50ICphY3R1YWwpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCAxNjsgKytpKQotICAgIHsKLSAgICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMaW50Pihz
dGQ6OnJvdW5kZihleHBlY3RlZFtpXSkpLCBhY3R1YWxbaV0pOwotICAgIH0KLX0KLQotY29uc3Qg
aW50IGtSZXNvbHV0aW9uID0gMzAwOwotCi1jbGFzcyBDSFJPTUlVTVBhdGhSZW5kZXJpbmdUZXN0
IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgQ0hST01JVU1QYXRoUmVu
ZGVyaW5nVGVzdCgpCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aChrUmVzb2x1dGlvbik7
Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodChrUmVzb2x1dGlvbik7Ci0gICAgICAgIHNldENvbmZp
Z1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0
Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICAg
ICAgc2V0Q29uZmlnRGVwdGhCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdTdGVuY2lsQml0cyg4
KTsKLSAgICB9Ci0KLSAgICBib29sIGlzQXBwbGljYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGV4dGVu
c2lvbkVuYWJsZWQoIkdMX0NIUk9NSVVNX3BhdGhfcmVuZGVyaW5nIik7IH0KLQotICAgIHZvaWQg
dHJ5QWxsRHJhd0Z1bmN0aW9ucyhHTHVpbnQgcGF0aCwgR0xlbnVtIGVycikKLSAgICB7Ci0gICAg
ICAgIGdsU3RlbmNpbEZpbGxQYXRoQ0hST01JVU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0s
IDB4N0YpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoZXJyKTsKLQotICAgICAgICBnbFN0ZW5j
aWxGaWxsUGF0aENIUk9NSVVNKHBhdGgsIEdMX0NPVU5UX0RPV05fQ0hST01JVU0sIDB4N0YpOwot
ICAgICAgICBFWFBFQ1RfR0xfRVJST1IoZXJyKTsKLQotICAgICAgICBnbFN0ZW5jaWxTdHJva2VQ
YXRoQ0hST01JVU0ocGF0aCwgMHg4MCwgMHg4MCk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihl
cnIpOwotCi0gICAgICAgIGdsQ292ZXJGaWxsUGF0aENIUk9NSVVNKHBhdGgsIEdMX0JPVU5ESU5H
X0JPWF9DSFJPTUlVTSk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihlcnIpOwotCi0gICAgICAg
IGdsQ292ZXJTdHJva2VQYXRoQ0hST01JVU0ocGF0aCwgR0xfQk9VTkRJTkdfQk9YX0NIUk9NSVVN
KTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKGVycik7Ci0KLSAgICAgICAgZ2xTdGVuY2lsVGhl
bkNvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKHBhdGgsIDB4ODAsIDB4ODAsIEdMX0JPVU5ESU5HX0JP
WF9DSFJPTUlVTSk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihlcnIpOwotCi0gICAgICAgIGds
U3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01J
VU0sIDB4N0YsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Qk9VTkRJTkdfQk9YX0NIUk9NSVVNKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKGVycik7Ci0g
ICAgfQotfTsKLQotLy8gVGVzdCBzZXR0aW5nIGFuZCBnZXR0aW5nIG9mIHBhdGggcmVuZGVyaW5n
IG1hdHJpY2VzLgotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rlc3QsIFRlc3RNYXRyaXgp
Ci17Ci0gICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3Rh
dGljIGNvbnN0IEdMZmxvYXQga0lkZW50aXR5TWF0cml4WzE2XSA9IHsxLjBmLCAwLjBmLCAwLjBm
LCAwLjBmLCAwLjBmLCAxLjBmLCAwLjBmLCAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwgMC4wZiwgMC4w
ZiwgMC4wZiwgMS4wZn07Ci0KLSAgICBzdGF0aWMgY29uc3QgR0xmbG9hdCBrU2VxTWF0cml4WzE2
XSA9IHswLjVmLCAgIC0wLjVmLCAgLTAuMWYsICAtMC44ZiwgNC40ZiwgICA1LjVmLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYuNmYsICAgNy43ZiwgICA4Ljhm
LCAgIDkuOWYsICAxMC4xMWYsIDExLjIyZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxMi4zM2YsIDEzLjQ0ZiwgMTQuNTVmLCAxNS42NmZ9OwotCi0gICAgc3Rh
dGljIGNvbnN0IEdMZW51bSBrTWF0cml4TW9kZXNbXSA9IHtHTF9QQVRIX01PREVMVklFV19DSFJP
TUlVTSwgR0xfUEFUSF9QUk9KRUNUSU9OX0NIUk9NSVVNfTsKLQotICAgIHN0YXRpYyBjb25zdCBH
TGVudW0ga0dldE1hdHJpeE1vZGVzW10gPSB7R0xfUEFUSF9NT0RFTFZJRVdfTUFUUklYX0NIUk9N
SVVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUEFU
SF9QUk9KRUNUSU9OX01BVFJJWF9DSFJPTUlVTX07Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IDI7ICsraSkKLSAgICB7Ci0gICAgICAgIEdMZmxvYXQgbWZbMTZdOwotICAgICAgICBHTGlu
dCBtaVsxNl07Ci0gICAgICAgIHN0ZDo6bWVtc2V0KG1mLCAwLCBzaXplb2YobWYpKTsKLSAgICAg
ICAgc3RkOjptZW1zZXQobWksIDAsIHNpemVvZihtaSkpOwotICAgICAgICBnbEdldEZsb2F0dihr
R2V0TWF0cml4TW9kZXNbaV0sIG1mKTsKLSAgICAgICAgZ2xHZXRJbnRlZ2VydihrR2V0TWF0cml4
TW9kZXNbaV0sIG1pKTsKLSAgICAgICAgRXhwZWN0RXF1YWxNYXRyaXgoa0lkZW50aXR5TWF0cml4
LCBtZik7Ci0gICAgICAgIEV4cGVjdEVxdWFsTWF0cml4KGtJZGVudGl0eU1hdHJpeCwgbWkpOwot
Ci0gICAgICAgIGdsTWF0cml4TG9hZGZDSFJPTUlVTShrTWF0cml4TW9kZXNbaV0sIGtTZXFNYXRy
aXgpOwotICAgICAgICBzdGQ6Om1lbXNldChtZiwgMCwgc2l6ZW9mKG1mKSk7Ci0gICAgICAgIHN0
ZDo6bWVtc2V0KG1pLCAwLCBzaXplb2YobWkpKTsKLSAgICAgICAgZ2xHZXRGbG9hdHYoa0dldE1h
dHJpeE1vZGVzW2ldLCBtZik7Ci0gICAgICAgIGdsR2V0SW50ZWdlcnYoa0dldE1hdHJpeE1vZGVz
W2ldLCBtaSk7Ci0gICAgICAgIEV4cGVjdEVxdWFsTWF0cml4KGtTZXFNYXRyaXgsIG1mKTsKLSAg
ICAgICAgRXhwZWN0RXF1YWxNYXRyaXgoa1NlcU1hdHJpeCwgbWkpOwotCi0gICAgICAgIGdsTWF0
cml4TG9hZElkZW50aXR5Q0hST01JVU0oa01hdHJpeE1vZGVzW2ldKTsKLSAgICAgICAgc3RkOjpt
ZW1zZXQobWYsIDAsIHNpemVvZihtZikpOwotICAgICAgICBzdGQ6Om1lbXNldChtaSwgMCwgc2l6
ZW9mKG1pKSk7Ci0gICAgICAgIGdsR2V0RmxvYXR2KGtHZXRNYXRyaXhNb2Rlc1tpXSwgbWYpOwot
ICAgICAgICBnbEdldEludGVnZXJ2KGtHZXRNYXRyaXhNb2Rlc1tpXSwgbWkpOwotICAgICAgICBF
eHBlY3RFcXVhbE1hdHJpeChrSWRlbnRpdHlNYXRyaXgsIG1mKTsKLSAgICAgICAgRXhwZWN0RXF1
YWxNYXRyaXgoa0lkZW50aXR5TWF0cml4LCBtaSk7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQgdHJ5aW5nIHRvIHNldCBpbmNvcnJlY3Qg
bWF0cml4IHRhcmdldCByZXN1bHRzCi0vLyBpbiBhIEdMIGVycm9yLgotVEVTVF9QKENIUk9NSVVN
UGF0aFJlbmRlcmluZ1Rlc3QsIFRlc3RNYXRyaXhFcnJvcnMpCi17Ci0gICAgaWYgKCFpc0FwcGxp
Y2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR0xmbG9hdCBtZlsxNl07Ci0gICAgc3Rk
OjptZW1zZXQobWYsIDAsIHNpemVvZihtZikpOwotCi0gICAgZ2xNYXRyaXhMb2FkZkNIUk9NSVVN
KEdMX1BBVEhfTU9ERUxWSUVXX0NIUk9NSVVNLCBtZik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICBnbE1hdHJpeExvYWRJZGVudGl0eUNIUk9NSVVNKEdMX1BBVEhfUFJPSkVDVElP
Tl9DSFJPTUlVTSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBUZXN0IHRo
YXQgaW52YWxpZCBtYXRyaXggdGFyZ2V0cyBmYWlsLgotICAgIGdsTWF0cml4TG9hZGZDSFJPTUlV
TShHTF9QQVRIX01PREVMVklFV19DSFJPTUlVTSAtIDEsIG1mKTsKLSAgICBFWFBFQ1RfR0xfRVJS
T1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgIC8vIFRlc3QgdGhhdCBpbnZhbGlkIG1hdHJpeCB0
YXJnZXRzIGZhaWwuCi0gICAgZ2xNYXRyaXhMb2FkSWRlbnRpdHlDSFJPTUlVTShHTF9QQVRIX1BS
T0pFQ1RJT05fQ0hST01JVU0gKyAxKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9F
TlVNKTsKLX0KLQotLy8gVGVzdCBiYXNpYyBwYXRoIGNyZWF0ZSBhbmQgZGVsZXRlLgotVEVTVF9Q
KENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rlc3QsIFRlc3RHZW5EZWxldGUpCi17Ci0gICAgaWYgKCFp
c0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGhpcyBpcyB1bnNwZWNp
ZmllZCBpbiBOVl9wYXRoX3JlbmRlcmluZy4KLSAgICBFWFBFQ1RfRVEoMHUsIGdsR2VuUGF0aHND
SFJPTUlVTSgwKSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0g
ICAgR0x1aW50IHBhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oMSk7Ci0gICAgRVhQRUNUX05FKDB1
LCBwYXRoKTsKLSAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7Ci0gICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICBHTHVpbnQgZmlyc3RfcGF0aCA9IGdsR2VuUGF0aHNDSFJP
TUlVTSg1KTsKLSAgICBFWFBFQ1RfTkUoMHUsIGZpcnN0X3BhdGgpOwotICAgIGdsRGVsZXRlUGF0
aHNDSFJPTUlVTShmaXJzdF9wYXRoLCA1KTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQot
ICAgIC8vIFRlc3QgZGVsZXRpbmcgcGF0aHMgdGhhdCBhcmUgbm90IGFjdHVhbGx5IGFsbG9jYXRl
ZDoKLSAgICAvLyAidW51c2VkIG5hbWVzIGluIC9wYXRocy8gYXJlIHNpbGVudGx5IGlnbm9yZWQi
LgotICAgIGZpcnN0X3BhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oNSk7Ci0gICAgRVhQRUNUX05F
KDB1LCBmaXJzdF9wYXRoKTsKLSAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0oZmlyc3RfcGF0aCwg
Nik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBHTHNpemVpIGJpZ19yYW5nZSA9
IDB4ZmZmZjsKLSAgICBmaXJzdF9wYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKGJpZ19yYW5nZSk7
Ci0gICAgRVhQRUNUX05FKDB1LCBmaXJzdF9wYXRoKTsKLSAgICBnbERlbGV0ZVBhdGhzQ0hST01J
VU0oZmlyc3RfcGF0aCwgYmlnX3JhbmdlKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQot
ICAgIC8vIFRlc3QgZ2xJc1BhdGhDSFJPTUlVTSgpLiBBIHBhdGggb2JqZWN0IGlzIG5vdCBjb25z
aWRlcmVkIGEgcGF0aCB1bnRpbGwKLSAgICAvLyBpdCBoYXMgYWN0dWFsbHkgYmVlbiBzcGVjaWZp
ZWQgd2l0aCBhIHBhdGggZGF0YS4KLQotICAgIHBhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oMSk7
Ci0gICAgQVNTRVJUX1RSVUUoZ2xJc1BhdGhDSFJPTUlVTShwYXRoKSA9PSBHTF9GQUxTRSk7Ci0K
LSAgICAvLyBzcGVjaWZ5IHRoZSBkYXRhLgotICAgIEdMdWJ5dGUgY29tbWFuZHNbXSA9IHtHTF9N
T1ZFX1RPX0NIUk9NSVVNLCBHTF9DTE9TRV9QQVRIX0NIUk9NSVVNfTsKLSAgICBHTGZsb2F0IGNv
b3Jkc1tdID0gezUwLjBmLCA1MC4wZn07Ci0gICAgZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTShwYXRo
LCAyLCBjb21tYW5kcywgMiwgR0xfRkxPQVQsIGNvb3Jkcyk7Ci0gICAgQVNTRVJUX1RSVUUoZ2xJ
c1BhdGhDSFJPTUlVTShwYXRoKSA9PSBHTF9UUlVFKTsKLSAgICBnbERlbGV0ZVBhdGhzQ0hST01J
VU0ocGF0aCwgMSk7Ci0gICAgQVNTRVJUX1RSVUUoZ2xJc1BhdGhDSFJPTUlVTShwYXRoKSA9PSBH
TF9GQUxTRSk7Ci19Ci0KLS8vIFRlc3QgaW5jb3JyZWN0IHBhdGggY3JlYXRpb24gYW5kIGRlbGV0
aW9uIGFuZCBleHBlY3QgR0wgZXJyb3JzLgotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rl
c3QsIFRlc3RHZW5EZWxldGVFcnJvcnMpCi17Ci0gICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gR2VuUGF0aHMgLyBEZWxldGVQYXRocyB0ZXN0cy4KLSAg
ICAvLyBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1heCgpIGlzIHdyb25nIGZvciBHTHNp
emVpLgotICAgIEdMdWludCBmaXJzdF9wYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKHN0ZDo6bnVt
ZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCkpOwotICAgIEVYUEVDVF9FUShmaXJzdF9wYXRoLCAw
dSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgZmlyc3Rf
cGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgtMSk7Ci0gICAgRVhQRUNUX0VRKDB1LCBmaXJzdF9w
YXRoKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICBnbERl
bGV0ZVBhdGhzQ0hST01JVU0oMSwgLTUpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElE
X1ZBTFVFKTsKLQotICAgIGZpcnN0X3BhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oLTEpOwotICAg
IEVYUEVDVF9FUSgwdSwgZmlyc3RfcGF0aCk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFM
SURfVkFMVUUpOwotfQotCi0vLyBUZXN0IHNldHRpbmcgYW5kIGdldHRpbmcgcGF0aCBwYXJhbWV0
ZXJzLgotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rlc3QsIFRlc3RQYXRoUGFyYW1ldGVy
KQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEdM
dWludCBwYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDEpOwotCi0gICAgLy8gc3BlY2lmeSB0aGUg
ZGF0YS4KLSAgICBHTHVieXRlIGNvbW1hbmRzW10gPSB7R0xfTU9WRV9UT19DSFJPTUlVTSwgR0xf
Q0xPU0VfUEFUSF9DSFJPTUlVTX07Ci0gICAgR0xmbG9hdCBjb29yZHNbXSA9IHs1MC4wZiwgNTAu
MGZ9OwotICAgIGdsUGF0aENvbW1hbmRzQ0hST01JVU0ocGF0aCwgMiwgY29tbWFuZHMsIDIsIEdM
X0ZMT0FULCBjb29yZHMpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9U
UlVFKGdsSXNQYXRoQ0hST01JVU0ocGF0aCkgPT0gR0xfVFJVRSk7Ci0KLSAgICBzdGF0aWMgY29u
c3QgR0xlbnVtIGtFbmRDYXBzW10gPSB7R0xfRkxBVF9DSFJPTUlVTSwgR0xfU1FVQVJFX0NIUk9N
SVVNLCBHTF9ST1VORF9DSFJPTUlVTX07Ci0gICAgZm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8
IDM7ICsraSkKLSAgICB7Ci0gICAgICAgIEdMaW50IHg7Ci0gICAgICAgIGdsUGF0aFBhcmFtZXRl
cmlDSFJPTUlVTShwYXRoLCBHTF9QQVRIX0VORF9DQVBTX0NIUk9NSVVNLCBzdGF0aWNfY2FzdDxH
TGVudW0+KGtFbmRDYXBzW2ldKSk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAg
ICAgICBnbEdldFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfRU5EX0NBUFNf
Q0hST01JVU0sICZ4KTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAgIEVY
UEVDVF9FUShrRW5kQ2Fwc1tpXSwgc3RhdGljX2Nhc3Q8R0xlbnVtPih4KSk7Ci0KLSAgICAgICAg
R0xmbG9hdCBmOwotICAgICAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0ocGF0aCwgR0xfUEFU
SF9FTkRfQ0FQU19DSFJPTUlVTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PEdMZmxvYXQ+KGtFbmRDYXBzWyhpICsgMSkgJSAzXSkpOwotICAgICAgICBnbEdl
dFBhdGhQYXJhbWV0ZXJmdkNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfRU5EX0NBUFNfQ0hST01JVU0s
ICZmKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAgIEVYUEVDVF9FUShr
RW5kQ2Fwc1soaSArIDEpICUgM10sIHN0YXRpY19jYXN0PEdMZW51bT4oZikpOwotICAgIH0KLQot
ICAgIHN0YXRpYyBjb25zdCBHTGVudW0ga0pvaW5TdHlsZXNbXSA9IHtHTF9NSVRFUl9SRVZFUlRf
Q0hST01JVU0sIEdMX0JFVkVMX0NIUk9NSVVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBHTF9ST1VORF9DSFJPTUlVTX07Ci0gICAgZm9yIChzdGQ6OnNpemVfdCBp
ID0gMDsgaSA8IDM7ICsraSkKLSAgICB7Ci0gICAgICAgIEdMaW50IHg7Ci0gICAgICAgIGdsUGF0
aFBhcmFtZXRlcmlDSFJPTUlVTShwYXRoLCBHTF9QQVRIX0pPSU5fU1RZTEVfQ0hST01JVU0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTGVudW0+KGtKb2lu
U3R5bGVzW2ldKSk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgICAgICBnbEdl
dFBhdGhQYXJhbWV0ZXJpdkNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfSk9JTl9TVFlMRV9DSFJPTUlV
TSwgJngpOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgRVhQRUNUX0VR
KGtKb2luU3R5bGVzW2ldLCBzdGF0aWNfY2FzdDxHTGVudW0+KHgpKTsKLQotICAgICAgICBHTGZs
b2F0IGY7Ci0gICAgICAgIGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShwYXRoLCBHTF9QQVRIX0pP
SU5fU1RZTEVfQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxHTGZsb2F0PihrSm9pblN0eWxlc1soaSArIDEpICUgM10pKTsKLSAgICAgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAgIGdsR2V0UGF0aFBhcmFtZXRlcmZ2Q0hST01JVU0o
cGF0aCwgR0xfUEFUSF9KT0lOX1NUWUxFX0NIUk9NSVVNLCAmZik7Ci0gICAgICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOwotICAgICAgICBFWFBFQ1RfRVEoa0pvaW5TdHlsZXNbKGkgKyAxKSAlIDNd
LCBzdGF0aWNfY2FzdDxHTGVudW0+KGYpKTsKLSAgICB9Ci0KLSAgICB7Ci0gICAgICAgIGdsUGF0
aFBhcmFtZXRlcmZDSFJPTUlVTShwYXRoLCBHTF9QQVRIX1NUUk9LRV9XSURUSF9DSFJPTUlVTSwg
NS4wZik7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIEdMZmxvYXQg
ZjsKLSAgICAgICAgZ2xHZXRQYXRoUGFyYW1ldGVyZnZDSFJPTUlVTShwYXRoLCBHTF9QQVRIX1NU
Uk9LRV9XSURUSF9DSFJPTUlVTSwgJmYpOwotICAgICAgICBFWFBFQ1RfRVEoNS4wZiwgZik7Ci0g
ICAgfQotCi0gICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVNKHBhdGgsIDEpOwotfQotCi0vLyBUZXN0
IHRoYXQgc2V0dGluZyBpbmNvcnJlY3QgcGF0aCBwYXJhbWV0ZXIgZ2VuZXJhdGVzIEdMIGVycm9y
LgotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rlc3QsIFRlc3RQYXRoUGFyYW1ldGVyRXJy
b3JzKQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEdMdWludCBwYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDEpOwotCi0gICAgLy8gUGF0aFBhcmFt
ZXRlcio6IFdyb25nIHZhbHVlIGZvciB0aGUgcG5hbWUgc2hvdWxkIGZhaWwuCi0gICAgZ2xQYXRo
UGFyYW1ldGVyaUNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfSk9JTl9TVFlMRV9DSFJPTUlVTSwgR0xf
RkxBVF9DSFJPTUlVTSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0K
LSAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0ocGF0aCwgR0xfUEFUSF9FTkRfQ0FQU19DSFJP
TUlVTSwgR0xfTUlURVJfUkVWRVJUX0NIUk9NSVVNKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xf
SU5WQUxJRF9FTlVNKTsKLQotICAgIC8vIFBhdGhQYXJhbWV0ZXIqOiBXcm9uZyBmbG9hdGluZy1w
b2ludCB2YWx1ZSBzaG91bGQgZmFpbC4KLSAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01JVU0ocGF0
aCwgR0xfUEFUSF9TVFJPS0VfV0lEVEhfQ0hST01JVU0sIC0wLjFmKTsKLSAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICAvLyBQYXRoUGFyYW1ldGVyKjogV3Jvbmcg
cG5hbWUgc2hvdWxkIGZhaWwuCi0gICAgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNKHBhdGgsIEdM
X1BBVEhfU1RST0tFX1dJRFRIX0NIUk9NSVVNIC0gMSwgNSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9S
KEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7
Ci19Ci0KLS8vIFRlc3QgZXhwZWN0ZWQgcGF0aCBvYmplY3Qgc3RhdGUuCi1URVNUX1AoQ0hST01J
VU1QYXRoUmVuZGVyaW5nVGVzdCwgVGVzdFBhdGhPYmplY3RTdGF0ZSkKLXsKLSAgICBpZiAoIWlz
QXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbFZpZXdwb3J0KDAsIDAsIGtS
ZXNvbHV0aW9uLCBrUmVzb2x1dGlvbik7Ci0gICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAu
MGYsIDAuMGYpOwotICAgIGdsU3RlbmNpbE1hc2soMHhmZmZmZmZmZik7Ci0gICAgZ2xDbGVhclN0
ZW5jaWwoMCk7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfU1RFTkNJTF9C
VUZGRVJfQklUKTsKLSAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKEdMX0FMV0FZUywgMCwg
MHhGRik7Ci0gICAgZ2xTdGVuY2lsT3AoR0xfS0VFUCwgR0xfS0VFUCwgR0xfWkVSTyk7Ci0gICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBUZXN0IHRoYXQgdHJ5aW5nIHRvIGRyYXcg
bm9uLWV4aXN0aW5nIHBhdGhzIGRvZXMgbm90IHByb2R1Y2UgZXJyb3JzIG9yIHJlc3VsdHMuCi0g
ICAgR0x1aW50IG5vbl9leGlzdGluZ19wYXRoc1tdID0gezAsIDU1LCA3NDc0NH07Ci0gICAgZm9y
IChhdXRvICZwIDogbm9uX2V4aXN0aW5nX3BhdGhzKQotICAgIHsKLSAgICAgICAgRVhQRUNUX1RS
VUUoZ2xJc1BhdGhDSFJPTUlVTShwKSA9PSBHTF9GQUxTRSk7Ci0gICAgICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotICAgICAgICB0cnlBbGxEcmF3RnVuY3Rpb25zKHAsIEdMX05PX0VSUk9SKTsK
LSAgICB9Ci0KLSAgICAvLyBQYXRoIG5hbWUgbWFya2VkIGFzIHVzZWQgYnV0IHdpdGhvdXQgcGF0
aCBvYmplY3Qgc3RhdGUgY2F1c2VzCi0gICAgLy8gYSBHTCBlcnJvciB1cG9uIGFueSBkcmF3IGNv
bW1hbmQuCi0gICAgR0x1aW50IHBhdGggPSBnbEdlblBhdGhzQ0hST01JVU0oMSk7Ci0gICAgRVhQ
RUNUX1RSVUUoZ2xJc1BhdGhDSFJPTUlVTShwYXRoKSA9PSBHTF9GQUxTRSk7Ci0gICAgdHJ5QWxs
RHJhd0Z1bmN0aW9ucyhwYXRoLCBHTF9JTlZBTElEX09QRVJBVElPTik7Ci0gICAgZ2xEZWxldGVQ
YXRoc0NIUk9NSVVNKHBhdGgsIDEpOwotCi0gICAgLy8gRG9jdW1lbnQgYSBiaXQgb2YgYW4gaW5j
b25zaXN0ZW5jeTogcGF0aCBuYW1lIG1hcmtlZCBhcyB1c2VkIGJ1dCB3aXRob3V0Ci0gICAgLy8g
cGF0aCBvYmplY3Qgc3RhdGUgY2F1c2VzIGEgR0wgZXJyb3IgdXBvbiBhbnkgZHJhdyBjb21tYW5k
ICh0ZXN0ZWQgYWJvdmUpLgotICAgIC8vIFBhdGggbmFtZSB0aGF0IGhhZCBwYXRoIG9iamVjdCBz
dGF0ZSwgYnV0IHRoZW4gd2FzICJjbGVhcmVkIiwgc3RpbGwgaGFzIGEKLSAgICAvLyBwYXRoIG9i
amVjdCBzdGF0ZSwgZXZlbiB0aG91Z2ggdGhlIHN0YXRlIGlzIGVtcHR5LgotICAgIHBhdGggPSBn
bEdlblBhdGhzQ0hST01JVU0oMSk7Ci0gICAgRVhQRUNUX1RSVUUoZ2xJc1BhdGhDSFJPTUlVTShw
YXRoKSA9PSBHTF9GQUxTRSk7Ci0KLSAgICBHTHVieXRlIGNvbW1hbmRzW10gPSB7R0xfTU9WRV9U
T19DSFJPTUlVTSwgR0xfQ0xPU0VfUEFUSF9DSFJPTUlVTX07Ci0gICAgR0xmbG9hdCBjb29yZHNb
XSA9IHs1MC4wZiwgNTAuMGZ9OwotICAgIGdsUGF0aENvbW1hbmRzQ0hST01JVU0ocGF0aCwgMiwg
Y29tbWFuZHMsIDIsIEdMX0ZMT0FULCBjb29yZHMpOwotICAgIEVYUEVDVF9UUlVFKGdsSXNQYXRo
Q0hST01JVU0ocGF0aCkgPT0gR0xfVFJVRSk7Ci0KLSAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVN
KHBhdGgsIDAsIE5VTEwsIDAsIEdMX0ZMT0FULCBOVUxMKTsKLSAgICBFWFBFQ1RfVFJVRShnbElz
UGF0aENIUk9NSVVNKHBhdGgpID09IEdMX1RSVUUpOyAgLy8gVGhlIHN1cnByaXNlLgotCi0gICAg
dHJ5QWxsRHJhd0Z1bmN0aW9ucyhwYXRoLCBHTF9OT19FUlJPUik7Ci0gICAgZ2xEZWxldGVQYXRo
c0NIUk9NSVVNKHBhdGgsIDEpOwotCi0gICAgLy8gTWFrZSBzdXJlIG5vdGhpbmcgZ290IGRyYXdu
IGJ5IHRoZSBkcmF3aW5nIGNvbW1hbmRzIHRoYXQgc2hvdWxkIG5vdCBwcm9kdWNlCi0gICAgLy8g
YW55dGhpbmcuCi0gICAgY29uc3QgYW5nbGU6OkdMQ29sb3IgYmxhY2sgPSB7MCwgMCwgMCwgMH07
Ci0gICAgRVhQRUNUX1RSVUUoQ2hlY2tQaXhlbHMoMCwgMCwga1Jlc29sdXRpb24sIGtSZXNvbHV0
aW9uLCAwLCBibGFjaykpOwotfQotCi0vLyBUZXN0IHRoYXQgdHJ5aW5nIHRvIHVzZSBwYXRoIG9i
amVjdCB0aGF0IGRvZXNuJ3QgZXhpc3QgZ2VuZXJhdGVzCi0vLyBhIEdMIGVycm9yLgotVEVTVF9Q
KENIUk9NSVVNUGF0aFJlbmRlcmluZ1Rlc3QsIFRlc3RVbm5hbWVkUGF0aHNFcnJvcnMpCi17Ci0g
ICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVW5uYW1l
ZCBwYXRoczogVHJ5aW5nIHRvIGNyZWF0ZSBhIHBhdGggb2JqZWN0IHdpdGggbm9uLWV4aXN0aW5n
IHBhdGggbmFtZQotICAgIC8vIHByb2R1Y2VzIGVycm9yLiAgKE5vdCBhIGVycm9yIGluIHJlYWwg
TlZfcGF0aF9yZW5kZXJpbmcpLgotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIEdMdWJ5
dGUgY29tbWFuZHNbXSA9IHtHTF9NT1ZFX1RPX0NIUk9NSVVNLCBHTF9DTE9TRV9QQVRIX0NIUk9N
SVVNfTsKLSAgICBHTGZsb2F0IGNvb3Jkc1tdID0gezUwLjBmLCA1MC4wZn07Ci0gICAgZ2xQYXRo
Q29tbWFuZHNDSFJPTUlVTSg1NTUsIDIsIGNvbW1hbmRzLCAyLCBHTF9GTE9BVCwgY29vcmRzKTsK
LSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgLy8gUGF0
aFBhcmFtZXRlcio6IFVzaW5nIG5vbi1leGlzdGluZyBwYXRoIG9iamVjdCBwcm9kdWNlcyBlcnJv
ci4KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBnbFBhdGhQYXJhbWV0ZXJmQ0hST01J
VU0oNTU1LCBHTF9QQVRIX1NUUk9LRV9XSURUSF9DSFJPTUlVTSwgNS4wZik7Ci0gICAgRVhQRUNU
X0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotICAgIGdsUGF0aFBhcmFtZXRlcmlDSFJPTUlVTSg1NTUsIEdMX1BBVEhfSk9JTl9TVFlM
RV9DSFJPTUlVTSwgR0xfUk9VTkRfQ0hST01JVU0pOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9J
TlZBTElEX09QRVJBVElPTik7Ci19Ci0KLS8vIFRlc3QgdGhhdCBzZXR0aW5nIGluY29ycmVjdCBw
YXRoIGRhdGEgZ2VuZXJhdGVzIGEgR0wgZXJyb3IuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVy
aW5nVGVzdCwgVGVzdFBhdGhDb21tYW5kc0Vycm9ycykKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJs
ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzdGF0aWMgY29uc3QgR0xlbnVtIGtJbnZhbGlk
Q29vcmRUeXBlID0gR0xfTk9ORTsKLQotICAgIEdMdWludCBwYXRoICAgICAgICA9IGdsR2VuUGF0
aHNDSFJPTUlVTSgxKTsKLSAgICBHTHVieXRlIGNvbW1hbmRzW10gPSB7R0xfTU9WRV9UT19DSFJP
TUlVTSwgR0xfQ0xPU0VfUEFUSF9DSFJPTUlVTX07Ci0gICAgR0xmbG9hdCBjb29yZHNbXSAgID0g
ezUwLjBmLCA1MC4wZn07Ci0KLSAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVNKHBhdGgsIDIsIGNv
bW1hbmRzLCAtNCwgR0xfRkxPQVQsIGNvb3Jkcyk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lO
VkFMSURfVkFMVUUpOwotCi0gICAgZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTShwYXRoLCAtMSwgY29t
bWFuZHMsIDIsIEdMX0ZMT0FULCBjb29yZHMpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZB
TElEX1ZBTFVFKTsKLQotICAgIGdsUGF0aENvbW1hbmRzQ0hST01JVU0ocGF0aCwgMiwgY29tbWFu
ZHMsIDIsIGtJbnZhbGlkQ29vcmRUeXBlLCBjb29yZHMpOwotICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX0VOVU0pOwotCi0gICAgLy8gaW5jb3JyZWN0IG51bWJlciBvZiBjb29yZGluYXRl
cwotICAgIGdsUGF0aENvbW1hbmRzQ0hST01JVU0ocGF0aCwgMiwgY29tbWFuZHMsIHN0ZDo6bnVt
ZXJpY19saW1pdHM8R0xzaXplaT46Om1heCgpLCBHTF9GTE9BVCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvb3Jkcyk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUp
OwotCi0gICAgLy8gVGhpcyBzaG91bGQgZmFpbCBkdWUgdG8gY21kIGNvdW50ICsgY29vcmQgY291
bnQgKiBzaG9ydCBzaXplLgotICAgIGdsUGF0aENvbW1hbmRzQ0hST01JVU0ocGF0aCwgMiwgY29t
bWFuZHMsIHN0ZDo6bnVtZXJpY19saW1pdHM8R0xzaXplaT46Om1heCgpLCBHTF9TSE9SVCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3Jkcyk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLQotICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShwYXRoLCAx
KTsKLX0KLQotLy8gVGVzdCB0aGF0IHRyeWluZyB0byByZW5kZXIgYSBwYXRoIHdpdGggaW52YWxp
ZCBhcmd1bWVudHMKLS8vIGdlbmVyYXRlcyBhIEdMIGVycm9yLgotVEVTVF9QKENIUk9NSVVNUGF0
aFJlbmRlcmluZ1Rlc3QsIFRlc3RQYXRoUmVuZGVyaW5nSW52YWxpZEFyZ3MpCi17Ci0gICAgaWYg
KCFpc0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR0x1aW50IHBhdGggPSBn
bEdlblBhdGhzQ0hST01JVU0oMSk7Ci0gICAgZ2xQYXRoQ29tbWFuZHNDSFJPTUlVTShwYXRoLCAw
LCBOVUxMLCAwLCBHTF9GTE9BVCwgTlVMTCk7Ci0KLSAgICAvLyBWZXJpZnkgdGhhdCBub3JtYWwg
Y2FsbHMgd29yay4KLSAgICBnbFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNKHBhdGgsIEdMX0NPVU5U
X1VQX0NIUk9NSVVNLCAweDdGKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBnbFN0
ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNKHBhdGgsIEdMX0NPVU5UX1VQX0NIUk9NSVVN
LCAweDdGLCBHTF9CT1VORElOR19CT1hfQ0hST01JVU0pOwotICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotCi0gICAgLy8gVXNpbmcgaW52YWxpZCBmaWxsIG1vZGUgY2F1c2VzIElOVkFMSURfRU5V
TS4KLSAgICBnbFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNKHBhdGgsIEdMX0NPVU5UX1VQX0NIUk9N
SVVNIC0gMSwgMHg3Rik7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0g
ICAgZ2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBHTF9DT1VOVF9VUF9D
SFJPTUlVTSAtIDEsIDB4N0YsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHTF9CT1VORElOR19CT1hfQ0hST01JVU0pOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZB
TElEX0VOVU0pOwotCi0gICAgLy8gVXNpbmcgaW52YWxpZCBjb3ZlciBtb2RlIGNhdXNlcyBJTlZB
TElEX0VOVU0uCi0gICAgZ2xDb3ZlckZpbGxQYXRoQ0hST01JVU0ocGF0aCwgR0xfQ09OVkVYX0hV
TExfQ0hST01JVU0gLSAxKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0xlbnVtPihHTF9J
TlZBTElEX0VOVU0pLCBnbEdldEVycm9yKCkpOwotICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQ
YXRoQ0hST01JVU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4N0YsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9CT1VORElOR19CT1hfQ0hST01JVU0gKyAx
KTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgIC8vIFVzaW5n
IG1hc2srMSBub3QgYmVpbmcgcG93ZXIgb2YgdHdvIGNhdXNlcyBJTlZBTElEX1ZBTFVFIHdpdGgg
dXAvZG93biBmaWxsIG1vZGUKLSAgICBnbFN0ZW5jaWxGaWxsUGF0aENIUk9NSVVNKHBhdGgsIEdM
X0NPVU5UX1VQX0NIUk9NSVVNLCAweDQwKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJ
RF9WQUxVRSk7Ci0KLSAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aENIUk9NSVVNKHBhdGgs
IEdMX0NPVU5UX0RPV05fQ0hST01JVU0sIDEyLCBHTF9CT1VORElOR19CT1hfQ0hST01JVU0pOwot
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgIC8vIGNoZWNrIGlu
Y29ycmVjdCBpbnN0YW5jZSBwYXJhbWV0ZXJzLgotCi0gICAgLy8gQ292ZXJGaWxsUGF0aEluc3Rh
bmNlZAotICAgIHsKLSAgICAgICAgZ2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oLTEs
IEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLCBOVUxMKTsKLSAg
ICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgICAgIGdsQ292
ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX0ZMT0FULCAmcGF0aCwgMCwgR0xfQ09O
VkVYX0hVTExfQ0hST01JVU0sIEdMX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9F
TlVNKTsKLQotICAgICAgICBnbENvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9V
TlNJR05FRF9JTlQsIE5VTEwsIDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLCBOVUxMKTsKLSAgICAgICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgICAgIGdsQ292ZXJGaWxs
UGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX1VO
U0lHTkVEX0lOVCwgR0xfTk9ORSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTlVMTCk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwot
Ci0gICAgICAgIGdsQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVE
X0lOVCwgJnBhdGgsIDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsIE5VTEwpOwotICAgICAg
ICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgICAgICBnbENvdmVyRmls
bFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCBHTF9D
T05WRVhfSFVMTF9DSFJPTUlVTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfVFJBTlNMQVRFX1hfQ0hST01JVU0sIE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgfQotCi0gICAgLy8gQ292ZXJTdHJva2VQYXRo
SW5zdGFuY2VkCi0gICAgewotICAgICAgICBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9N
SVVNKC0xLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlV
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05FLCBO
VUxMKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAg
ICAgIGdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfRkxPQVQsICZwYXRo
LCAwLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwgR0xfTk9ORSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9S
KEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRD
SFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsIE5VTEwsIDAsIEdMX0NPTlZFWF9IVUxMX0NIUk9N
SVVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX05PTkUs
IE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAg
ICAgICAgZ2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9J
TlQsICZwYXRoLCAwLCBHTF9VTlNJR05FRF9JTlQsIEdMX05PTkUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJP
UihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgICAgIGdsQ292ZXJTdHJva2VQYXRoSW5zdGFuY2Vk
Q0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwgR0xfQ09OVkVYX0hVTExfQ0hS
T01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5T
SUdORURfSU5ULCBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5V
TSk7Ci0KLSAgICAgICAgZ2xDb3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9V
TlNJR05FRF9JTlQsICZwYXRoLCAwLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9UUkFOU0xBVEVfWF9DSFJPTUlV
TSwgTlVMTCk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLSAg
ICB9Ci0KLSAgICAvLyBTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWQKLSAgICB7Ci0gICAgICAgIGds
U3RlbmNpbEZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oLTEsIEdMX1VOU0lHTkVEX0lOVCwgJnBh
dGgsIDAsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAweDAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwgTlVMTCk7Ci0gICAgICAgIEVYUEVDVF9HTF9F
UlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgICAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3Rh
bmNlZENIUk9NSVVNKDEsIEdMX0ZMT0FULCAmcGF0aCwgMCwgR0xfQ09VTlRfVVBfQ0hST01JVU0s
IDB4MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9OT05F
LCBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAg
ICAgICAgZ2xTdGVuY2lsRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9J
TlQsIE5VTEwsIDAsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAweDAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwgTlVMTCk7Ci0gICAgICAgIEVYUEVD
VF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgICAgICBnbFN0ZW5jaWxGaWxsUGF0
aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX1VOU0lH
TkVEX0lOVCwgMHgwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX05PTkUsIE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVN
KTsKLQotICAgICAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VO
U0lHTkVEX0lOVCwgJnBhdGgsIDAsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAweDIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfTk9ORSwgTlVMTCk7Ci0gICAg
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgICAgICBnbFN0ZW5j
aWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAs
IEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAweDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0xfVU5TSUdORURfSU5ULCBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0dM
X0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xTdGVuY2lsRmlsbFBhdGhJbnN0
YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCBHTF9DT1VOVF9VUF9D
SFJPTUlVTSwgMHgwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1RSQU5TTEFURV9YX0NIUk9NSVVNLCBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9S
KEdMX0lOVkFMSURfVkFMVUUpOwotICAgIH0KLQotICAgIC8vIFN0ZW5jaWxTdHJva2VQYXRoSW5z
dGFuY2VkCi0gICAgewotICAgICAgICBnbFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01J
VU0oLTEsIEdMX1VOU0lHTkVEX0lOVCwgJnBhdGgsIDAsIDB4MDAsIDB4MDAsIEdMX05PTkUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICAg
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgICAgIGdsU3RlbmNp
bFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9GTE9BVCwgJnBhdGgsIDAsIDB4MDAs
IDB4MDAsIEdMX05PTkUsIE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJ
RF9FTlVNKTsKLQotICAgICAgICBnbFN0ZW5jaWxTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0o
MSwgR0xfVU5TSUdORURfSU5ULCBudWxscHRyLCAwLCAweDAwLCAweDAwLCBHTF9OT05FLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgICAgICBnbFN0ZW5jaWxT
dHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwg
MHgwMCwgMHgwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX1VOU0lHTkVEX0lOVCwgTlVMTCk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZB
TElEX0VOVU0pOwotCi0gICAgICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlV
TSgxLCBHTF9VTlNJR05FRF9JTlQsICZwYXRoLCAwLCAweDAwLCAweDAwLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVFJBTlNMQVRFX1hfQ0hST01JVU0s
IE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAg
fQotCi0gICAgLy8gU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkCi0gICAgewotICAg
ICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKC0xLCBHTF9V
TlNJR05FRF9JTlQsICZwYXRoLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAwLCBHTF9DT1VOVF9VUF9D
SFJPTUlVTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHTF9OT05FLCBOVUxMKTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURf
VkFMVUUpOwotCi0gICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hS
T01JVU0oMSwgR0xfRkxPQVQsICZwYXRoLCAwLCBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBHTF9D
T1VOVF9VUF9DSFJPTUlVTSwgR0xfTk9ORSwgTlVMTCk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJP
UihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRo
SW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCBOVUxMLCAwLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTlZFWF9IVUxM
X0NIUk9NSVVNLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCBHTF9OT05FLCBOVUxMKTsKLSAgICAgICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgICAgIGdsU3RlbmNpbFRo
ZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0
aCwgMCwgR0xfVU5TSUdORURfSU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCBHTF9OT05FLCBOVUxM
KTsKLSAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAg
Z2xTdGVuY2lsVGhlbkNvdmVyRmlsbFBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05F
RF9JTlQsICZwYXRoLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLCAwLCBHTF9VTlNJR05FRF9JTlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xf
Tk9ORSwgTlVMTCk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwot
Ci0gICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwg
R0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwgMCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9DT1VOVF9V
UF9DSFJPTUlVTSwgR0xfRkxPQVQsIE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xf
SU5WQUxJRF9FTlVNKTsKLQotICAgICAgICBnbFN0ZW5jaWxUaGVuQ292ZXJGaWxsUGF0aEluc3Rh
bmNlZENIUk9NSVVNKAotICAgICAgICAgICAgMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwg
R0xfQ09OVkVYX0hVTExfQ0hST01JVU0sIDAsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLAotICAgICAg
ICAgICAgR0xfVFJBTlNMQVRFX1hfQ0hST01JVU0sIE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xf
RVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0gICAgfQotCi0gICAgLy8gU3RlbmNpbFRoZW5Db3Zl
clN0cm9rZVBhdGhJbnN0YW5jZWQKLSAgICB7Ci0gICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0
cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgtMSwgR0xfVU5TSUdORURfSU5ULCAmcGF0aCwgMCwg
MHgwLCAweDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwgR0xfTk9ORSwgTlVMTCk7Ci0gICAgICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgICAgICBnbFN0ZW5jaWxU
aGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfRkxPQVQsICZwYXRoLCAw
LCAweDAsIDB4MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLCBHTF9OT05FLCBOVUxMKTsKLSAgICAg
ICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0KLSAgICAgICAgZ2xTdGVuY2ls
VGhlbkNvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVNKDEsIEdMX1VOU0lHTkVEX0lOVCwg
TlVMTCwgMCwgMHgwLCAweDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9DT05WRVhfSFVMTF9DSFJPTUlVTSwgR0xfTk9ORSwgTlVMTCk7
Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLQotICAgICAgICBn
bFN0ZW5jaWxUaGVuQ292ZXJTdHJva2VQYXRoSW5zdGFuY2VkQ0hST01JVU0oMSwgR0xfVU5TSUdO
RURfSU5ULCAmcGF0aCwgMCwgMHgwLCAweDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9GTE9BVCwgR0xfTk9ORSwgTlVMTCk7Ci0gICAg
ICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgICAgIGdsU3RlbmNp
bFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJR05FRF9JTlQs
ICZwYXRoLCAwLCAweDAsIDB4MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLCBHTF9GTE9BVCwgTlVM
TCk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgICAg
IGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhJbnN0YW5jZWRDSFJPTUlVTSgxLCBHTF9VTlNJ
R05FRF9JTlQsICZwYXRoLCAwLCAweDAsIDB4MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVFJB
TlNMQVRFX1hfQ0hST01JVU0sIE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5W
QUxJRF9WQUxVRSk7Ci0gICAgfQotCi0gICAgZ2xEZWxldGVQYXRoc0NIUk9NSVVNKHBhdGgsIDEp
OwotfQotCi1jb25zdCBHTGZsb2F0IGtQcm9qZWN0aW9uTWF0cml4WzE2XSA9IHsyLjBmIC8ga1Jl
c29sdXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMi4wZiAvIGtSZXNvbHV0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAu
MGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC0xLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMC4wZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC0xLjBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEuMGYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjBmLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4wZn07Ci0KLWNsYXNzIENIUk9NSVVNUGF0aFJl
bmRlcmluZ0RyYXdUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAg
Q0hST01JVU1QYXRoUmVuZGVyaW5nRHJhd1Rlc3QoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93
V2lkdGgoa1Jlc29sdXRpb24pOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoa1Jlc29sdXRpb24p
OwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJp
dHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdB
bHBoYUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0RlcHRoQml0cyg4KTsKLSAgICAgICAgc2V0
Q29uZmlnU3RlbmNpbEJpdHMoOCk7Ci0gICAgfQotCi0gICAgYm9vbCBpc0FwcGxpY2FibGUoKSBj
b25zdCB7IHJldHVybiBleHRlbnNpb25FbmFibGVkKCJHTF9DSFJPTUlVTV9wYXRoX3JlbmRlcmlu
ZyIpOyB9Ci0KLSAgICB2b2lkIHNldHVwU3RhdGVGb3JUZXN0UGF0dGVybigpCi0gICAgewotICAg
ICAgICBnbFZpZXdwb3J0KDAsIDAsIGtSZXNvbHV0aW9uLCBrUmVzb2x1dGlvbik7Ci0gICAgICAg
IGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKLSAgICAgICAgZ2xTdGVuY2ls
TWFzaygweGZmZmZmZmZmKTsKLSAgICAgICAgZ2xDbGVhclN0ZW5jaWwoMCk7Ci0gICAgICAgIGds
Q2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJVCk7Ci0gICAg
ICAgIGdsRW5hYmxlKEdMX1NURU5DSUxfVEVTVCk7Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IGNo
YXIgKmtWZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
LSAgICAgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVjNCgxLjApOyBcbiIKLSAgICAgICAgICAg
ICJ9IjsKLQotICAgICAgICBzdGF0aWMgY29uc3QgY2hhciAqa0ZyYWdtZW50U2hhZGVyU291cmNl
ID0KLSAgICAgICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICAgICAg
ICJ1bmlmb3JtIHZlYzQgY29sb3I7XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKCkge1xuIgot
ICAgICAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7XG4iCi0gICAgICAgICAgICAifSI7
Ci0KLSAgICAgICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShrVmVydGV4U2hhZGVy
U291cmNlLCBrRnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgICAgICBnbFVzZVByb2dyYW0ocHJv
Z3JhbSk7Ci0gICAgICAgIG1Db2xvckxvYyA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0s
ICJjb2xvciIpOwotICAgICAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Ci0KLSAgICAgICAg
Ly8gU2V0IHVwIG9ydGhvZ29uYWwgcHJvamVjdGlvbiB3aXRoIG5lYXIvZmFyIHBsYW5lIGRpc3Rh
bmNlIG9mIDIuCi0gICAgICAgIGdsTWF0cml4TG9hZGZDSFJPTUlVTShHTF9QQVRIX1BST0pFQ1RJ
T05fQ0hST01JVU0sIGtQcm9qZWN0aW9uTWF0cml4KTsKLSAgICAgICAgZ2xNYXRyaXhMb2FkSWRl
bnRpdHlDSFJPTUlVTShHTF9QQVRIX01PREVMVklFV19DSFJPTUlVTSk7Ci0KLSAgICAgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXR1cFBhdGhTdGF0ZUZvclRl
c3RQYXR0ZXJuKEdMdWludCBwYXRoKQotICAgIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IEdMdWJ5
dGUga0NvbW1hbmRzW10gPSB7R0xfTU9WRV9UT19DSFJPTUlVTSwgR0xfTElORV9UT19DSFJPTUlV
TSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfUVVBRFJB
VElDX0NVUlZFX1RPX0NIUk9NSVVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHTF9DVUJJQ19DVVJWRV9UT19DSFJPTUlVTSwgR0xfQ0xPU0VfUEFUSF9DSFJP
TUlVTX07Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEdMZmxvYXQga0Nvb3Jkc1tdID0gezUwLjBm
LCA1MC4wZiwgNzUuMGYsIDc1LjBmLCAxMDAuMGYsIDYyLjVmLCA1MC4wZiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LjVmLCAwLjBmLCAgNjIuNWYsIDUwLjBm
LCA1MC4wZiwgIDI1LjBmLCA3NS4wZn07Ci0KLSAgICAgICAgZ2xQYXRoQ29tbWFuZHNDSFJPTUlV
TShwYXRoLCA1LCBrQ29tbWFuZHMsIDE0LCBHTF9GTE9BVCwga0Nvb3Jkcyk7Ci0gICAgICAgIGds
UGF0aFBhcmFtZXRlcmZDSFJPTUlVTShwYXRoLCBHTF9QQVRIX1NUUk9LRV9XSURUSF9DSFJPTUlV
TSwgNS4wZik7Ci0gICAgICAgIGdsUGF0aFBhcmFtZXRlcmZDSFJPTUlVTShwYXRoLCBHTF9QQVRI
X01JVEVSX0xJTUlUX0NIUk9NSVVNLCAxLjBmKTsKLSAgICAgICAgZ2xQYXRoUGFyYW1ldGVyZkNI
Uk9NSVVNKHBhdGgsIEdMX1BBVEhfU1RST0tFX0JPVU5EX0NIUk9NSVVNLCAuMDJmKTsKLSAgICAg
ICAgZ2xQYXRoUGFyYW1ldGVyaUNIUk9NSVVNKHBhdGgsIEdMX1BBVEhfSk9JTl9TVFlMRV9DSFJP
TUlVTSwgR0xfUk9VTkRfQ0hST01JVU0pOwotICAgICAgICBnbFBhdGhQYXJhbWV0ZXJpQ0hST01J
VU0ocGF0aCwgR0xfUEFUSF9FTkRfQ0FQU19DSFJPTUlVTSwgR0xfU1FVQVJFX0NIUk9NSVVNKTsK
LSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCB2ZXJpZnlU
ZXN0UGF0dGVybkZpbGwoR0xmbG9hdCBmbHgsIEdMZmxvYXQgZmx5KQotICAgIHsKLSAgICAgICAg
c3RhdGljIGNvbnN0IEdMaW50IGtGaWxsQ29vcmRzW10gID0gezU1LCA1NCwgNTAsIDI4LCA2Niwg
NjN9OwotICAgICAgICBzdGF0aWMgY29uc3QgYW5nbGU6OkdMQ29sb3Iga0JsdWUgPSB7MCwgMCwg
MjU1LCAyNTV9OwotCi0gICAgICAgIEdMaW50IHggPSBzdGF0aWNfY2FzdDxHTGludD4oZmx4KTsK
LSAgICAgICAgR0xpbnQgeSA9IHN0YXRpY19jYXN0PEdMaW50PihmbHkpOwotCi0gICAgICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgNjsgaSArPSAyKQotICAgICAgICB7Ci0gICAgICAgICAgICBH
TGludCBmeCA9IGtGaWxsQ29vcmRzW2ldOwotICAgICAgICAgICAgR0xpbnQgZnkgPSBrRmlsbENv
b3Jkc1tpICsgMV07Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRShDaGVja1BpeGVscyh4ICsgZngs
IHkgKyBmeSwgMSwgMSwgMCwga0JsdWUpKTsKLSAgICAgICAgfQotICAgIH0KLSAgICB2b2lkIHZl
cmlmeVRlc3RQYXR0ZXJuQmcoR0xmbG9hdCBmeCwgR0xmbG9hdCBmeSkKLSAgICB7Ci0gICAgICAg
IHN0YXRpYyBjb25zdCBHTGludCBrQmFja2dyb3VuZENvb3Jkc1tdICAgICA9IHs4MCwgODAsIDIw
LCAyMCwgOTAsIDF9OwotICAgICAgICBzdGF0aWMgY29uc3QgYW5nbGU6OkdMQ29sb3Iga0V4cGVj
dGVkQ29sb3IgPSB7MCwgMCwgMCwgMH07Ci0KLSAgICAgICAgR0xpbnQgeCA9IHN0YXRpY19jYXN0
PEdMaW50PihmeCk7Ci0gICAgICAgIEdMaW50IHkgPSBzdGF0aWNfY2FzdDxHTGludD4oZnkpOwot
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNjsgaSArPSAyKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBHTGludCBieCA9IGtCYWNrZ3JvdW5kQ29vcmRzW2ldOwotICAgICAgICAgICAg
R0xpbnQgYnkgPSBrQmFja2dyb3VuZENvb3Jkc1tpICsgMV07Ci0gICAgICAgICAgICBFWFBFQ1Rf
VFJVRShDaGVja1BpeGVscyh4ICsgYngsIHkgKyBieSwgMSwgMSwgMCwga0V4cGVjdGVkQ29sb3Ip
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgdmVyaWZ5VGVzdFBhdHRlcm5TdHJva2Uo
R0xmbG9hdCBmeCwgR0xmbG9hdCBmeSkKLSAgICB7Ci0gICAgICAgIEdMaW50IHggPSBzdGF0aWNf
Y2FzdDxHTGludD4oZngpOwotICAgICAgICBHTGludCB5ID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KGZ5
KTsKLQotICAgICAgICAvLyBJbnNpZGUgdGhlIHN0cm9rZSB3ZSBzaG91bGQgaGF2ZSBncmVlbi4K
LSAgICAgICAgc3RhdGljIGNvbnN0IGFuZ2xlOjpHTENvbG9yIGtHcmVlbiA9IHswLCAyNTUsIDAs
IDI1NX07Ci0gICAgICAgIEVYUEVDVF9UUlVFKENoZWNrUGl4ZWxzKHggKyA1MCwgeSArIDUzLCAx
LCAxLCAwLCBrR3JlZW4pKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoQ2hlY2tQaXhlbHMoeCArIDI2
LCB5ICsgNzYsIDEsIDEsIDAsIGtHcmVlbikpOwotCi0gICAgICAgIC8vIE91dHNpZGUgdGhlIHBh
dGggd2Ugc2hvdWxkIGhhdmUgYmxhY2suCi0gICAgICAgIHN0YXRpYyBjb25zdCBhbmdsZTo6R0xD
b2xvciBibGFjayA9IHswLCAwLCAwLCAwfTsKLSAgICAgICAgRVhQRUNUX1RSVUUoQ2hlY2tQaXhl
bHMoeCArIDEwLCB5ICsgMTAsIDEsIDEsIDAsIGJsYWNrKSk7Ci0gICAgICAgIEVYUEVDVF9UUlVF
KENoZWNrUGl4ZWxzKHggKyA4MCwgeSArIDgwLCAxLCAxLCAwLCBibGFjaykpOwotICAgIH0KLQot
ICAgIEdMdWludCBtQ29sb3JMb2M7Ci19OwotCi0vLyBUZXN0cyB0aGF0IGJhc2ljIHBhdGggcmVu
ZGVyaW5nIGZ1bmN0aW9ucyB3b3JrLgotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ0RyYXdU
ZXN0LCBUZXN0UGF0aFJlbmRlcmluZykKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBzdGF0aWMgY29uc3QgZmxvYXQga0JsdWVbXSAgPSB7MC4wZiwg
MC4wZiwgMS4wZiwgMS4wZn07Ci0gICAgc3RhdGljIGNvbnN0IGZsb2F0IGtHcmVlbltdID0gezAu
MGYsIDEuMGYsIDAuMGYsIDEuMGZ9OwotCi0gICAgc2V0dXBTdGF0ZUZvclRlc3RQYXR0ZXJuKCk7
Ci0KLSAgICBHTHVpbnQgcGF0aCA9IGdsR2VuUGF0aHNDSFJPTUlVTSgxKTsKLSAgICBzZXR1cFBh
dGhTdGF0ZUZvclRlc3RQYXR0ZXJuKHBhdGgpOwotCi0gICAgLy8gRG8gdGhlIHN0ZW5jaWwgZmls
bCwgY292ZXIgZmlsbCwgc3RlbmNpbCBzdHJva2UsIGNvdmVyIHN0cm9rZQotICAgIC8vIGluIHVu
Y29udmVudGlvbmFsIG9yZGVyOgotICAgIC8vIDEpIHN0ZW5jaWwgdGhlIHN0cm9rZSBpbiBzdGVu
Y2lsIGhpZ2ggYml0Ci0gICAgLy8gMikgc3RlbmNpbCB0aGUgZmlsbCBpbiBsb3cgYml0cwotICAg
IC8vIDMpIGNvdmVyIHRoZSBmaWxsCi0gICAgLy8gNCkgY292ZXIgdGhlIHN0cm9rZQotICAgIC8v
IFRoaXMgaXMgZG9uZSB0byBjaGVjayB0aGF0IGdsUGF0aFN0ZW5jaWxGdW5jIHdvcmtzLCBlZyB0
aGUgbWFzawotICAgIC8vIGdvZXMgdGhyb3VnaC4gU3RlbmNpbCBmdW5jIGlzIG5vdCB0ZXN0ZWQg
QVRNLCBmb3Igc2ltcGxpY2l0eS4KLQotICAgIGdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0oR0xf
QUxXQVlTLCAwLCAweEZGKTsKLSAgICBnbFN0ZW5jaWxTdHJva2VQYXRoQ0hST01JVU0ocGF0aCwg
MHg4MCwgMHg4MCk7Ci0KLSAgICBnbFBhdGhTdGVuY2lsRnVuY0NIUk9NSVVNKEdMX0FMV0FZUywg
MCwgMHg3Rik7Ci0gICAgZ2xTdGVuY2lsRmlsbFBhdGhDSFJPTUlVTShwYXRoLCBHTF9DT1VOVF9V
UF9DSFJPTUlVTSwgMHg3Rik7Ci0KLSAgICBnbFN0ZW5jaWxGdW5jKEdMX0xFU1MsIDAsIDB4N0Yp
OwotICAgIGdsU3RlbmNpbE9wKEdMX0tFRVAsIEdMX0tFRVAsIEdMX1pFUk8pOwotICAgIGdsVW5p
Zm9ybTRmdihtQ29sb3JMb2MsIDEsIGtCbHVlKTsKLSAgICBnbENvdmVyRmlsbFBhdGhDSFJPTUlV
TShwYXRoLCBHTF9CT1VORElOR19CT1hfQ0hST01JVU0pOwotCi0gICAgZ2xTdGVuY2lsRnVuYyhH
TF9FUVVBTCwgMHg4MCwgMHg4MCk7Ci0gICAgZ2xTdGVuY2lsT3AoR0xfS0VFUCwgR0xfS0VFUCwg
R0xfWkVSTyk7Ci0gICAgZ2xVbmlmb3JtNGZ2KG1Db2xvckxvYywgMSwga0dyZWVuKTsKLSAgICBn
bENvdmVyU3Ryb2tlUGF0aENIUk9NSVVNKHBhdGgsIEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNKTsK
LQotICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShwYXRoLCAxKTsKLQotICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotCi0gICAgLy8gVmVyaWZ5IHRoZSBpbWFnZS4KLSAgICB2ZXJpZnlUZXN0UGF0
dGVybkZpbGwoMCwgMCk7Ci0gICAgdmVyaWZ5VGVzdFBhdHRlcm5CZygwLCAwKTsKLSAgICB2ZXJp
ZnlUZXN0UGF0dGVyblN0cm9rZSgwLCAwKTsKLX0KLQotLy8gVGVzdCB0aGF0IFN0ZW5jaWxUaGVu
e1N0cm9rZSxGaWxsfSBwYXRoIHJlbmRlcmluZyBmdW5jdGlvbnMgd29yawotVEVTVF9QKENIUk9N
SVVNUGF0aFJlbmRlcmluZ0RyYXdUZXN0LCBUZXN0UGF0aFJlbmRlcmluZ1RoZW5GdW5jdGlvbnMp
Ci17Ci0gICAgaWYgKCFpc0FwcGxpY2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3Rh
dGljIGZsb2F0IGtCbHVlW10gID0gezAuMGYsIDAuMGYsIDEuMGYsIDEuMGZ9OwotICAgIHN0YXRp
YyBmbG9hdCBrR3JlZW5bXSA9IHswLjBmLCAxLjBmLCAwLjBmLCAxLjBmfTsKLQotICAgIHNldHVw
U3RhdGVGb3JUZXN0UGF0dGVybigpOwotCi0gICAgR0x1aW50IHBhdGggPSBnbEdlblBhdGhzQ0hS
T01JVU0oMSk7Ci0gICAgc2V0dXBQYXRoU3RhdGVGb3JUZXN0UGF0dGVybihwYXRoKTsKLQotICAg
IGdsUGF0aFN0ZW5jaWxGdW5jQ0hST01JVU0oR0xfQUxXQVlTLCAwLCAweEZGKTsKLSAgICBnbFN0
ZW5jaWxGdW5jKEdMX0VRVUFMLCAweDgwLCAweDgwKTsKLSAgICBnbFN0ZW5jaWxPcChHTF9LRUVQ
LCBHTF9LRUVQLCBHTF9aRVJPKTsKLSAgICBnbFVuaWZvcm00ZnYobUNvbG9yTG9jLCAxLCBrR3Jl
ZW4pOwotICAgIGdsU3RlbmNpbFRoZW5Db3ZlclN0cm9rZVBhdGhDSFJPTUlVTShwYXRoLCAweDgw
LCAweDgwLCBHTF9CT1VORElOR19CT1hfQ0hST01JVU0pOwotCi0gICAgZ2xQYXRoU3RlbmNpbEZ1
bmNDSFJPTUlVTShHTF9BTFdBWVMsIDAsIDB4N0YpOwotICAgIGdsU3RlbmNpbEZ1bmMoR0xfTEVT
UywgMCwgMHg3Rik7Ci0gICAgZ2xTdGVuY2lsT3AoR0xfS0VFUCwgR0xfS0VFUCwgR0xfWkVSTyk7
Ci0gICAgZ2xVbmlmb3JtNGZ2KG1Db2xvckxvYywgMSwga0JsdWUpOwotICAgIGdsU3RlbmNpbFRo
ZW5Db3ZlckZpbGxQYXRoQ0hST01JVU0ocGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4N0Ys
IEdMX0NPTlZFWF9IVUxMX0NIUk9NSVVNKTsKLQotICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShw
YXRoLCAxKTsKLQotICAgIC8vIFZlcmlmeSB0aGUgaW1hZ2UuCi0gICAgdmVyaWZ5VGVzdFBhdHRl
cm5GaWxsKDAsIDApOwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuQmcoMCwgMCk7Ci0gICAgdmVyaWZ5
VGVzdFBhdHRlcm5TdHJva2UoMCwgMCk7Ci19Ci0KLS8vIFRlc3RzIHRoYXQgZHJhd2luZyB3aXRo
ICpJbnN0YW5jZWQgZnVuY3Rpb25zIHdvcmsuCi1URVNUX1AoQ0hST01JVU1QYXRoUmVuZGVyaW5n
RHJhd1Rlc3QsIFRlc3RQYXRoUmVuZGVyaW5nSW5zdGFuY2VkKQotewotICAgIGlmICghaXNBcHBs
aWNhYmxlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0YXRpYyBjb25zdCBmbG9hdCBrQmx1
ZVtdICA9IHswLjBmLCAwLjBmLCAxLjBmLCAxLjBmfTsKLSAgICBzdGF0aWMgY29uc3QgZmxvYXQg
a0dyZWVuW10gPSB7MC4wZiwgMS4wZiwgMC4wZiwgMS4wZn07Ci0KLSAgICBzZXR1cFN0YXRlRm9y
VGVzdFBhdHRlcm4oKTsKLQotICAgIEdMdWludCBwYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDEp
OwotICAgIHNldHVwUGF0aFN0YXRlRm9yVGVzdFBhdHRlcm4ocGF0aCk7Ci0KLSAgICBjb25zdCBH
THVpbnQga1BhdGhzW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gezEsIDEsIDEsIDEs
IDF9OwotICAgIGNvbnN0IEdMc2l6ZWkga1BhdGhDb3VudCAgICAgICAgICAgICAgICAgICAgICAg
ICAgPSA1OwotICAgIGNvbnN0IEdMZmxvYXQga1NoYXBlU2l6ZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgPSA4MC4wZjsKLSAgICBzdGF0aWMgY29uc3QgR0xmbG9hdCBrVHJhbnNmb3Jtc1trUGF0
aENvdW50ICogMTJdID0gewotICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmLCAw
LjBmLCAwLjBmLCAwLjBmLCAxLjBmLCAwLjBmLCAgICAgICAgICAgMC4wZiwgICAgICAgMC4wZiwK
LSAgICAgICAgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwg
MS4wZiwga1NoYXBlU2l6ZSwgICAgIDAuMGYsICAgICAgIDAuMGYsCi0gICAgICAgIDEuMGYsIDAu
MGYsIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIGtTaGFwZVNpemUg
KiAyLCAwLjBmLCAgICAgICAwLjBmLAotICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAx
LjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmLCAwLjBmLCAgICAgICAgICAga1NoYXBlU2l6ZSwg
MC4wZiwKLSAgICAgICAgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwgMC4wZiwg
MC4wZiwgMS4wZiwga1NoYXBlU2l6ZSwgICAgIGtTaGFwZVNpemUsIDAuMGZ9OwotCi0gICAgLy8g
VGhlIHRlc3QgcGF0dGVybiBpcyB0aGUgc2FtZSBhcyBpbiB0aGUgc2ltcGxlIGRyYXcgY2FzZSBh
Ym92ZSwKLSAgICAvLyBleGNlcHQgdGhhdCB0aGUgcGF0aCBpcyBkcmF3biBrUGF0aENvdW50IHRp
bWVzIHdpdGggZGlmZmVyZW50IG9mZnNldHMuCi0gICAgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlV
TShHTF9BTFdBWVMsIDAsIDB4RkYpOwotICAgIGdsU3RlbmNpbFN0cm9rZVBhdGhJbnN0YW5jZWRD
SFJPTUlVTShrUGF0aENvdW50LCBHTF9VTlNJR05FRF9JTlQsIGtQYXRocywgcGF0aCAtIDEsIDB4
ODAsIDB4ODAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0FG
RklORV8zRF9DSFJPTUlVTSwga1RyYW5zZm9ybXMpOwotCi0gICAgZ2xQYXRoU3RlbmNpbEZ1bmND
SFJPTUlVTShHTF9BTFdBWVMsIDAsIDB4N0YpOwotICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2Ms
IDEsIGtCbHVlKTsKLSAgICBnbFN0ZW5jaWxGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKGtQYXRo
Q291bnQsIEdMX1VOU0lHTkVEX0lOVCwga1BhdGhzLCBwYXRoIC0gMSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAweDdGLCBHTF9B
RkZJTkVfM0RfQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBrVHJhbnNmb3Jtcyk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsU3Rl
bmNpbEZ1bmMoR0xfTEVTUywgMCwgMHg3Rik7Ci0gICAgZ2xTdGVuY2lsT3AoR0xfS0VFUCwgR0xf
S0VFUCwgR0xfWkVSTyk7Ci0gICAgZ2xDb3ZlckZpbGxQYXRoSW5zdGFuY2VkQ0hST01JVU0oa1Bh
dGhDb3VudCwgR0xfVU5TSUdORURfSU5ULCBrUGF0aHMsIHBhdGggLSAxLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0JPVU5ESU5HX0JPWF9PRl9CT1VORElOR19CT1hF
U19DSFJPTUlVTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9BRkZJ
TkVfM0RfQ0hST01JVU0sIGtUcmFuc2Zvcm1zKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OwotCi0gICAgZ2xTdGVuY2lsRnVuYyhHTF9FUVVBTCwgMHg4MCwgMHg4MCk7Ci0gICAgZ2xTdGVu
Y2lsT3AoR0xfS0VFUCwgR0xfS0VFUCwgR0xfWkVSTyk7Ci0gICAgZ2xVbmlmb3JtNGZ2KG1Db2xv
ckxvYywgMSwga0dyZWVuKTsKLSAgICBnbENvdmVyU3Ryb2tlUGF0aEluc3RhbmNlZENIUk9NSVVN
KGtQYXRoQ291bnQsIEdMX1VOU0lHTkVEX0lOVCwga1BhdGhzLCBwYXRoIC0gMSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0JPVU5ESU5HX0JPWF9PRl9CT1VORElO
R19CT1hFU19DSFJPTUlVTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdMX0FGRklORV8zRF9DSFJPTUlVTSwga1RyYW5zZm9ybXMpOwotCi0gICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7Ci0KLSAgICAv
LyBWZXJpZnkgdGhlIGltYWdlLgotICAgIHZlcmlmeVRlc3RQYXR0ZXJuRmlsbCgwLjBmLCAwLjBm
KTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVybkJnKDAuMGYsIDAuMGYpOwotICAgIHZlcmlmeVRlc3RQ
YXR0ZXJuU3Ryb2tlKDAuMGYsIDAuMGYpOwotCi0gICAgdmVyaWZ5VGVzdFBhdHRlcm5GaWxsKGtT
aGFwZVNpemUsIDAuMGYpOwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuQmcoa1NoYXBlU2l6ZSwgMC4w
Zik7Ci0gICAgdmVyaWZ5VGVzdFBhdHRlcm5TdHJva2Uoa1NoYXBlU2l6ZSwgMC4wZik7Ci0KLSAg
ICB2ZXJpZnlUZXN0UGF0dGVybkZpbGwoa1NoYXBlU2l6ZSAqIDIsIDAuMGYpOwotICAgIHZlcmlm
eVRlc3RQYXR0ZXJuQmcoa1NoYXBlU2l6ZSAqIDIsIDAuMGYpOwotICAgIHZlcmlmeVRlc3RQYXR0
ZXJuU3Ryb2tlKGtTaGFwZVNpemUgKiAyLCAwLjBmKTsKLQotICAgIHZlcmlmeVRlc3RQYXR0ZXJu
RmlsbCgwLjBmLCBrU2hhcGVTaXplKTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVybkJnKDAuMGYsIGtT
aGFwZVNpemUpOwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tlKDAuMGYsIGtTaGFwZVNpemUp
OwotCi0gICAgdmVyaWZ5VGVzdFBhdHRlcm5GaWxsKGtTaGFwZVNpemUsIGtTaGFwZVNpemUpOwot
ICAgIHZlcmlmeVRlc3RQYXR0ZXJuQmcoa1NoYXBlU2l6ZSwga1NoYXBlU2l6ZSk7Ci0gICAgdmVy
aWZ5VGVzdFBhdHRlcm5TdHJva2Uoa1NoYXBlU2l6ZSwga1NoYXBlU2l6ZSk7Ci19Ci0KLS8vIFRl
c3QgdGhhdCBpbnN0YW5jZWQgZmlsbC9zdHJva2UgdGhlbiBjb3ZlciBmdW5jdGlvbnMgd29yay4K
LVRFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdEcmF3VGVzdCwgVGVzdFBhdGhSZW5kZXJpbmdU
aGVuRnVuY3Rpb25zSW5zdGFuY2VkKQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIHN0YXRpYyBjb25zdCBmbG9hdCBrQmx1ZVtdICA9IHswLjBmLCAw
LjBmLCAxLjBmLCAxLjBmfTsKLSAgICBzdGF0aWMgY29uc3QgZmxvYXQga0dyZWVuW10gPSB7MC4w
ZiwgMS4wZiwgMC4wZiwgMS4wZn07Ci0KLSAgICBzZXR1cFN0YXRlRm9yVGVzdFBhdHRlcm4oKTsK
LQotICAgIEdMdWludCBwYXRoID0gZ2xHZW5QYXRoc0NIUk9NSVVNKDEpOwotICAgIHNldHVwUGF0
aFN0YXRlRm9yVGVzdFBhdHRlcm4ocGF0aCk7Ci0KLSAgICBjb25zdCBHTHVpbnQga1BhdGhzW10g
ICAgICAgICAgICAgID0gezEsIDEsIDEsIDEsIDF9OwotICAgIGNvbnN0IEdMc2l6ZWkga1BhdGhD
b3VudCAgICAgICAgICAgPSA1OwotICAgIGNvbnN0IEdMZmxvYXQga1NoYXBlU2l6ZSAgICAgICAg
ICAgPSA4MC4wZjsKLSAgICBzdGF0aWMgY29uc3QgR0xmbG9hdCBrVHJhbnNmb3Jtc1tdID0gewot
ICAgICAgICAwLjBmLCAwLjBmLCBrU2hhcGVTaXplLCAwLjBmLCAgICAgICBrU2hhcGVTaXplICog
MiwKLSAgICAgICAgMC4wZiwgMC4wZiwga1NoYXBlU2l6ZSwga1NoYXBlU2l6ZSwga1NoYXBlU2l6
ZSwKLSAgICB9OwotCi0gICAgZ2xQYXRoU3RlbmNpbEZ1bmNDSFJPTUlVTShHTF9BTFdBWVMsIDAs
IDB4RkYpOwotICAgIGdsU3RlbmNpbEZ1bmMoR0xfRVFVQUwsIDB4ODAsIDB4ODApOwotICAgIGds
U3RlbmNpbE9wKEdMX0tFRVAsIEdMX0tFRVAsIEdMX1pFUk8pOwotICAgIGdsVW5pZm9ybTRmdiht
Q29sb3JMb2MsIDEsIGtHcmVlbik7Ci0gICAgZ2xTdGVuY2lsVGhlbkNvdmVyU3Ryb2tlUGF0aElu
c3RhbmNlZENIUk9NSVVNKAotICAgICAgICBrUGF0aENvdW50LCBHTF9VTlNJR05FRF9JTlQsIGtQ
YXRocywgcGF0aCAtIDEsIDB4ODAsIDB4ODAsCi0gICAgICAgIEdMX0JPVU5ESU5HX0JPWF9PRl9C
T1VORElOR19CT1hFU19DSFJPTUlVTSwgR0xfVFJBTlNMQVRFXzJEX0NIUk9NSVVNLCBrVHJhbnNm
b3Jtcyk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsUGF0aFN0ZW5jaWxG
dW5jQ0hST01JVU0oR0xfQUxXQVlTLCAwLCAweDdGKTsKLSAgICBnbFN0ZW5jaWxGdW5jKEdMX0xF
U1MsIDAsIDB4N0YpOwotICAgIGdsU3RlbmNpbE9wKEdMX0tFRVAsIEdMX0tFRVAsIEdMX1pFUk8p
OwotICAgIGdsVW5pZm9ybTRmdihtQ29sb3JMb2MsIDEsIGtCbHVlKTsKLSAgICBnbFN0ZW5jaWxU
aGVuQ292ZXJGaWxsUGF0aEluc3RhbmNlZENIUk9NSVVNKAotICAgICAgICBrUGF0aENvdW50LCBH
TF9VTlNJR05FRF9JTlQsIGtQYXRocywgcGF0aCAtIDEsIEdMX0NPVU5UX1VQX0NIUk9NSVVNLCAw
eDdGLAotICAgICAgICBHTF9CT1VORElOR19CT1hfT0ZfQk9VTkRJTkdfQk9YRVNfQ0hST01JVU0s
IEdMX1RSQU5TTEFURV8yRF9DSFJPTUlVTSwga1RyYW5zZm9ybXMpOwotCi0gICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICBnbERlbGV0ZVBhdGhzQ0hST01JVU0ocGF0aCwgMSk7Ci0KLSAg
ICAvLyBWZXJpZnkgdGhlIGltYWdlLgotICAgIHZlcmlmeVRlc3RQYXR0ZXJuRmlsbCgwLjBmLCAw
LjBmKTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVybkJnKDAuMGYsIDAuMGYpOwotICAgIHZlcmlmeVRl
c3RQYXR0ZXJuU3Ryb2tlKDAuMGYsIDAuMGYpOwotCi0gICAgdmVyaWZ5VGVzdFBhdHRlcm5GaWxs
KGtTaGFwZVNpemUsIDAuMGYpOwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuQmcoa1NoYXBlU2l6ZSwg
MC4wZik7Ci0gICAgdmVyaWZ5VGVzdFBhdHRlcm5TdHJva2Uoa1NoYXBlU2l6ZSwgMC4wZik7Ci0K
LSAgICB2ZXJpZnlUZXN0UGF0dGVybkZpbGwoa1NoYXBlU2l6ZSAqIDIsIDAuMGYpOwotICAgIHZl
cmlmeVRlc3RQYXR0ZXJuQmcoa1NoYXBlU2l6ZSAqIDIsIDAuMGYpOwotICAgIHZlcmlmeVRlc3RQ
YXR0ZXJuU3Ryb2tlKGtTaGFwZVNpemUgKiAyLCAwLjBmKTsKLQotICAgIHZlcmlmeVRlc3RQYXR0
ZXJuRmlsbCgwLjBmLCBrU2hhcGVTaXplKTsKLSAgICB2ZXJpZnlUZXN0UGF0dGVybkJnKDAuMGYs
IGtTaGFwZVNpemUpOwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuU3Ryb2tlKDAuMGYsIGtTaGFwZVNp
emUpOwotCi0gICAgdmVyaWZ5VGVzdFBhdHRlcm5GaWxsKGtTaGFwZVNpemUsIGtTaGFwZVNpemUp
OwotICAgIHZlcmlmeVRlc3RQYXR0ZXJuQmcoa1NoYXBlU2l6ZSwga1NoYXBlU2l6ZSk7Ci0gICAg
dmVyaWZ5VGVzdFBhdHRlcm5TdHJva2Uoa1NoYXBlU2l6ZSwga1NoYXBlU2l6ZSk7Ci19Ci0KLQot
Ly8gVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGEgdGVzdCB0aGF0IGRyYXdzIGEgZ3JpZCBvZiB2LXNo
YXBlcy4gVGhlIGdyaWQgaXMKLS8vIGRyYXduIHNvIHRoYXQgZXZlbiByb3dzIChmcm9tIHRoZSBi
b3R0b20pIGFyZSBkcmF3biB3aXRoIERyYXdBcnJheXMgYW5kIG9kZAotLy8gcm93cyBhcmUgZHJh
d24gd2l0aCBwYXRoIHJlbmRlcmluZy4gIEl0IGNhbiBiZSB1c2VkIHRvIHRlc3QgdmFyaW91cyB0
ZXh0dXJpbmcKLS8vIG1vZGVzLCBjb21wYXJpbmcgaG93IHRoZSBmaWxsIHdvdWxkIHdvcmsgaW4g
bm9ybWFsIEdMIHJlbmRlcmluZyBhbmQgaG93IHRvCi0vLyBzZXR1cCBzYW1lIHNvcnQgb2YgZmls
bCB3aXRoIHBhdGggcmVuZGVyaW5nLgotLy8gVGhlIHRleHR1cmluZyB0ZXN0IGlzIHBhcmFtZXRy
aXplZCB0byBydW4gdGhlIHRlc3Qgd2l0aCBhbmQgd2l0aG91dAotLy8gQU5HTEUgbmFtZSBoYXNo
aW5nLgotY2xhc3MgQ0hST01JVU1QYXRoUmVuZGVyaW5nV2l0aFRleHR1cmluZ1Rlc3QgOiBwdWJs
aWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBDSFJPTUlVTVBhdGhSZW5kZXJpbmdX
aXRoVGV4dHVyaW5nVGVzdCgpIDogbVByb2dyYW0oMCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRv
d1dpZHRoKGtSZXNvbHV0aW9uKTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KGtSZXNvbHV0aW9u
KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5C
aXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmln
QWxwaGFCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMoOCk7Ci0gICAgICAgIHNl
dENvbmZpZ1N0ZW5jaWxCaXRzKDgpOwotICAgIH0KLQotICAgIGJvb2wgaXNBcHBsaWNhYmxlKCkg
Y29uc3QgeyByZXR1cm4gZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQ0hST01JVU1fcGF0aF9yZW5kZXJp
bmciKTsgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBp
ZiAobVByb2dyYW0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJv
Z3JhbSk7Ci0gICAgICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLSAgICAgICAgbUJp
bmRVbmlmb3JtTG9jYXRpb24gPSByZWludGVycHJldF9jYXN0PFBGTkdMQklORFVOSUZPUk1MT0NB
VElPTkNIUk9NSVVNUFJPQz4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xCaW5k
VW5pZm9ybUxvY2F0aW9uQ0hST01JVU0iKSk7Ci0gICAgfQotCi0gICAgLy8gU2V0cyB1cCB0aGUg
R0wgcHJvZ3JhbSBzdGF0ZSBmb3IgdGhlIHRlc3QuCi0gICAgLy8gVmVydGV4IHNoYWRlciBuZWVk
cyBhdCBsZWFzdCBmb2xsb3dpbmcgdmFyaWFibGVzOgotICAgIC8vICB1bmlmb3JtIG1hdDQgdmll
d19tYXRyaXg7Ci0gICAgLy8gIHVuaWZvcm0gbWF0PyBjb2xvcl9tYXRyaXg7IChhY2Nlc3NpYmxl
IHdpdGgga0NvbG9yTWF0cml4TG9jYXRpb24pCi0gICAgLy8gIHVuaWZvcm0gdmVjMiBtb2RlbF90
cmFuc2xhdGU7Ci0gICAgLy8gIGF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uOwotICAgIC8vICB2YXJ5
aW5nIHZlYzQgY29sb3I7Ci0gICAgLy8KLSAgICAvLyBGcmFnbWVudCBzaGFkZXIgbmVlZHMgYXQg
bGVhc3QgZm9sbG93aW5nIHZhcmlhYmxlczoKLSAgICAvLyAgdmFyeWluZyB2ZWM0IGNvbG9yOwot
ICAgIC8vCi0gICAgLy8gICg/IGNhbiBiZSBhbnl0aGluZykKLSAgICB2b2lkIGNvbXBpbGVQcm9n
cmFtKGNvbnN0IGNoYXIgKnZlcnRleFNoYWRlclNvdXJjZSwgY29uc3QgY2hhciAqZnJhZ21lbnRT
aGFkZXJTb3VyY2UpCi0gICAgewotICAgICAgICBnbFZpZXdwb3J0KDAsIDAsIGtSZXNvbHV0aW9u
LCBrUmVzb2x1dGlvbik7Ci0gICAgICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAw
LjBmKTsKLSAgICAgICAgZ2xTdGVuY2lsTWFzaygweGZmZmZmZmZmKTsKLSAgICAgICAgZ2xDbGVh
clN0ZW5jaWwoMCk7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX1NU
RU5DSUxfQlVGRkVSX0JJVCk7Ci0gICAgICAgIGdsRW5hYmxlKEdMX0JMRU5EKTsKLSAgICAgICAg
Z2xCbGVuZEZ1bmMoR0xfU1JDX0FMUEhBLCBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBKTsKLQotICAg
ICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBHTHVpbnQgdlNoYWRlciA9IGNv
bXBpbGVTaGFkZXIoR0xfVkVSVEVYX1NIQURFUiwgdmVydGV4U2hhZGVyU291cmNlKTsKLSAgICAg
ICAgR0x1aW50IGZTaGFkZXIgPSBjb21waWxlU2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgZnJh
Z21lbnRTaGFkZXJTb3VyY2UpOwotICAgICAgICBBU1NFUlRfTkUoMHUsIHZTaGFkZXIpOwotICAg
ICAgICBBU1NFUlRfTkUoMHUsIGZTaGFkZXIpOwotCi0gICAgICAgIG1Qcm9ncmFtID0gZ2xDcmVh
dGVQcm9ncmFtKCk7Ci0KLSAgICAgICAgZ2xBdHRhY2hTaGFkZXIobVByb2dyYW0sIHZTaGFkZXIp
OwotICAgICAgICBnbEF0dGFjaFNoYWRlcihtUHJvZ3JhbSwgZlNoYWRlcik7Ci0gICAgICAgIGds
RGVsZXRlU2hhZGVyKHZTaGFkZXIpOwotICAgICAgICBnbERlbGV0ZVNoYWRlcihmU2hhZGVyKTsK
LQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICB2b2lkIGJpbmRQ
cm9ncmFtKCkKLSAgICB7Ci0gICAgICAgIGdsQmluZEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCBr
UG9zaXRpb25Mb2NhdGlvbiwgInBvc2l0aW9uIik7Ci0gICAgICAgIG1CaW5kVW5pZm9ybUxvY2F0
aW9uKG1Qcm9ncmFtLCBrVmlld01hdHJpeExvY2F0aW9uLCAidmlld19tYXRyaXgiKTsKLSAgICAg
ICAgbUJpbmRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIGtDb2xvck1hdHJpeExvY2F0aW9uLCAi
Y29sb3JfbWF0cml4Iik7Ci0gICAgICAgIG1CaW5kVW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCBr
TW9kZWxUcmFuc2xhdGVMb2NhdGlvbiwgIm1vZGVsX3RyYW5zbGF0ZSIpOwotICAgICAgICBnbEJp
bmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yRnJhZ21lbnRJ
bnB1dExvY2F0aW9uLCAiY29sb3IiKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LSAgICB9Ci0KLSAgICBib29sIGxpbmtQcm9ncmFtKCkKLSAgICB7Ci0gICAgICAgIGdsTGlua1By
b2dyYW0obVByb2dyYW0pOwotCi0gICAgICAgIEdMaW50IGxpbmtlZCA9IDA7Ci0gICAgICAgIGds
R2V0UHJvZ3JhbWl2KG1Qcm9ncmFtLCBHTF9MSU5LX1NUQVRVUywgJmxpbmtlZCk7Ci0gICAgICAg
IGlmIChsaW5rZWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3Jh
bSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gKGxpbmtlZCA9PSAxKTsKLSAgICB9Ci0K
LSAgICB2b2lkIGRyYXdUZXN0UGF0dGVybigpCi0gICAgewotICAgICAgICAvLyBUaGlzIHYtc2hh
cGUgaXMgdXNlZCBib3RoIGZvciBEcmF3QXJyYXlzIGFuZCBwYXRoIHJlbmRlcmluZy4KLSAgICAg
ICAgc3RhdGljIGNvbnN0IEdMZmxvYXQga1ZlcnRpY2VzW10gPSB7NzUuMGYsIDc1LjBmLCA1MC4w
ZiwgMjUuNWYsIDUwLjBmLCA1MC4wZiwgMjUuMGYsIDc1LjBmfTsKLQotICAgICAgICBHTHVpbnQg
dmJvID0gMDsKLSAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZ2Ym8pOwotICAgICAgICBnbEJpbmRC
dWZmZXIoR0xfQVJSQVlfQlVGRkVSLCB2Ym8pOwotICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfQVJS
QVlfQlVGRkVSLCBzaXplb2Yoa1ZlcnRpY2VzKSwga1ZlcnRpY2VzLCBHTF9TVEFUSUNfRFJBVyk7
Ci0gICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoa1Bvc2l0aW9uTG9jYXRpb24pOwot
ICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoa1Bvc2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZM
T0FULCBHTF9GQUxTRSwgMCwgMCk7Ci0KLSAgICAgICAgLy8gU2V0dXAgc3RhdGUgZm9yIGRyYXdp
bmcgdGhlIHNoYXBlIHdpdGggcGF0aCByZW5kZXJpbmcuCi0gICAgICAgIGdsUGF0aFN0ZW5jaWxG
dW5jQ0hST01JVU0oR0xfQUxXQVlTLCAwLCAweDdGKTsKLSAgICAgICAgZ2xTdGVuY2lsRnVuYyhH
TF9MRVNTLCAwLCAweDdGKTsKLSAgICAgICAgZ2xTdGVuY2lsT3AoR0xfS0VFUCwgR0xfS0VFUCwg
R0xfWkVSTyk7Ci0gICAgICAgIGdsTWF0cml4TG9hZGZDSFJPTUlVTShHTF9QQVRIX1BST0pFQ1RJ
T05fQ0hST01JVU0sIGtQcm9qZWN0aW9uTWF0cml4KTsKLSAgICAgICAgZ2xNYXRyaXhMb2FkSWRl
bnRpdHlDSFJPTUlVTShHTF9QQVRIX01PREVMVklFV19DSFJPTUlVTSk7Ci0KLSAgICAgICAgc3Rh
dGljIGNvbnN0IEdMdWJ5dGUga0NvbW1hbmRzW10gPSB7R0xfTU9WRV9UT19DSFJPTUlVTSwgR0xf
TElORV9UT19DSFJPTUlVTSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0xfTElORV9UT19DSFJPTUlVTSwgR0xfTElORV9UT19DSFJPTUlVTSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQ0xPU0VfUEFUSF9DSFJPTUlV
TX07Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0IEdMZmxvYXQga0Nvb3Jkc1tdID0gewotICAgICAg
ICAgICAga1ZlcnRpY2VzWzBdLCBrVmVydGljZXNbMV0sIGtWZXJ0aWNlc1syXSwga1ZlcnRpY2Vz
WzNdLAotICAgICAgICAgICAga1ZlcnRpY2VzWzZdLCBrVmVydGljZXNbN10sIGtWZXJ0aWNlc1s0
XSwga1ZlcnRpY2VzWzVdLAotICAgICAgICB9OwotCi0gICAgICAgIEdMdWludCBwYXRoID0gZ2xH
ZW5QYXRoc0NIUk9NSVVNKDEpOwotICAgICAgICBnbFBhdGhDb21tYW5kc0NIUk9NSVVNKHBhdGgs
IHN0YXRpY19jYXN0PEdMc2l6ZWk+KEFycmF5U2l6ZShrQ29tbWFuZHMpKSwga0NvbW1hbmRzLAot
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4oQXJyYXlTaXplKGtDb29yZHMpKSwgR0xf
RkxPQVQsIGtDb29yZHMpOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAg
ICBHTGZsb2F0IHBhdGhfbW9kZWxfdHJhbnNsYXRlWzE2XSA9IHsKLSAgICAgICAgICAgIDEuMGYs
IDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYsIDEuMGYsIDAuMGYsIDAuMGYsCi0gICAgICAgICAgICAw
LjBmLCAwLjBmLCAxLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmLAotICAgICAgICB9
OwotCi0gICAgICAgIC8vIERyYXdzIHRoZSBzaGFwZXMuIEV2ZXJ5IGV2ZW4gcm93IGZyb20gdGhl
IGJvdHRvbSBpcyBkcmF3biB3aXRoCi0gICAgICAgIC8vIERyYXdBcnJheXMsIG9kZCByb3cgd2l0
aCBwYXRoIHJlbmRlcmluZy4gVGhlIHNoYWRlciBwcm9ncmFtIGlzCi0gICAgICAgIC8vIHRoZSBz
YW1lIGZvciB0aGUgYm90aCBkcmF3cy4KLSAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBrVGVz
dFJvd3M7ICsraikKLSAgICAgICAgewotICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBr
VGVzdENvbHVtbnM7ICsraSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoaiAl
IDIgPT0gMCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGdsRGlzYWJs
ZShHTF9TVEVOQ0lMX1RFU1QpOwotICAgICAgICAgICAgICAgICAgICBnbFVuaWZvcm0yZihrTW9k
ZWxUcmFuc2xhdGVMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8R0xmbG9hdD4oaSAqIGtTaGFwZVdpZHRo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xmbG9hdD4o
aiAqIGtTaGFwZUhlaWdodCkpOwotICAgICAgICAgICAgICAgICAgICBnbERyYXdBcnJheXMoR0xf
VFJJQU5HTEVfU1RSSVAsIDAsIDQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBnbEVuYWJsZShH
TF9TVEVOQ0lMX1RFU1QpOwotICAgICAgICAgICAgICAgICAgICBwYXRoX21vZGVsX3RyYW5zbGF0
ZVsxMl0gPSBzdGF0aWNfY2FzdDxHTGZsb2F0PihpICoga1NoYXBlV2lkdGgpOwotICAgICAgICAg
ICAgICAgICAgICBwYXRoX21vZGVsX3RyYW5zbGF0ZVsxM10gPSBzdGF0aWNfY2FzdDxHTGZsb2F0
PihqICoga1NoYXBlSGVpZ2h0KTsKLSAgICAgICAgICAgICAgICAgICAgZ2xNYXRyaXhMb2FkZkNI
Uk9NSVVNKEdMX1BBVEhfTU9ERUxWSUVXX0NIUk9NSVVNLCBwYXRoX21vZGVsX3RyYW5zbGF0ZSk7
Ci0gICAgICAgICAgICAgICAgICAgIGdsU3RlbmNpbFRoZW5Db3ZlckZpbGxQYXRoQ0hST01JVU0o
cGF0aCwgR0xfQ09VTlRfVVBfQ0hST01JVU0sIDB4N0YsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfQk9VTkRJTkdfQk9YX0NIUk9NSVVN
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJy
YXkoa1Bvc2l0aW9uTG9jYXRpb24pOwotICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJnZibyk7
Ci0gICAgICAgIGdsRGVsZXRlUGF0aHNDSFJPTUlVTShwYXRoLCAxKTsKLSAgICAgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgZW51bQotICAgIHsKLSAgICAgICAga1NoYXBl
V2lkdGggID0gNzUsCi0gICAgICAgIGtTaGFwZUhlaWdodCA9IDc1LAotICAgICAgICBrVGVzdFJv
d3MgICAgPSBrUmVzb2x1dGlvbiAvIGtTaGFwZUhlaWdodCwKLSAgICAgICAga1Rlc3RDb2x1bW5z
ID0ga1Jlc29sdXRpb24gLyBrU2hhcGVXaWR0aCwKLSAgICB9OwotCi0gICAgdHlwZWRlZiB2b2lk
KEdMX0FQSUVOVFJZUCBQRk5HTEJJTkRVTklGT1JNTE9DQVRJT05DSFJPTUlVTVBST0MpKEdMdWlu
dCBtUHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEdMY2hhciAqbmFtZSk7Ci0gICAgUEZOR0xCSU5EVU5JRk9STUxPQ0FUSU9OQ0hST01JVU1QUk9D
IG1CaW5kVW5pZm9ybUxvY2F0aW9uID0gbnVsbHB0cjsKLQotICAgIEdMdWludCBtUHJvZ3JhbTsK
LQotICAgIC8vIFRoaXMgdW5pZm9ybSBiZSBjYW4gc2V0IGJ5IHRoZSB0ZXN0LiBJdCBzaG91bGQg
YmUgdXNlZCB0byBzZXQgdGhlIGNvbG9yIGZvcgotICAgIC8vIGRyYXdpbmcgd2l0aCBEcmF3QXJy
YXlzLgotICAgIHN0YXRpYyBjb25zdCBHTGludCBrQ29sb3JNYXRyaXhMb2NhdGlvbiA9IDQ7Ci0K
LSAgICAvLyBUaGlzIGZyYWdtZW50IGlucHV0IGNhbiBiZSBzZXQgYnkgdGhlIHRlc3QuIEl0IHNo
b3VsZCBiZSB1c2VkIHRvIHNldCB0aGUKLSAgICAvLyBjb2xvciBmb3IgZHJhd2luZyB3aXRoIHBh
dGggcmVuZGVyaW5nLgotICAgIHN0YXRpYyBjb25zdCBHTGludCBrQ29sb3JGcmFnbWVudElucHV0
TG9jYXRpb24gPSA3OwotCi0gICAgc3RhdGljIGNvbnN0IEdMaW50IGtNb2RlbFRyYW5zbGF0ZUxv
Y2F0aW9uID0gMzsKLSAgICBzdGF0aWMgY29uc3QgR0xpbnQga1Bvc2l0aW9uTG9jYXRpb24gICAg
ICAgPSAwOwotICAgIHN0YXRpYyBjb25zdCBHTGludCBrVmlld01hdHJpeExvY2F0aW9uICAgICA9
IDc7Ci19OwotCi0vLyBUZXN0IHN1Y2Nlc3MgYW5kIGVycm9yIGNhc2VzIGZvciBiaW5kaW5nIGZy
YWdtZW50IGlucHV0IGxvY2F0aW9uLgotVEVTVF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1dpdGhU
ZXh0dXJpbmdUZXN0LCBUZXN0QmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbikKLXsKLSAgICBpZiAo
IWlzQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBvcmlnaW5hbCBOVl9w
YXRoX3JlbmRlcmluZyBzcGVjaWZpY2F0aW9uIGRvZXNuJ3QgZGVmaW5lIHdoZXRoZXIgdGhlCi0g
ICAgLy8gZnJhZ21lbnQgc2hhZGVyIGlucHV0IHZhcmlhYmxlcyBzaG91bGQgYmUgZGVmaW5lZCBp
biB0aGUgdmVydGV4IHNoYWRlciBvcgotICAgIC8vIG5vdC4gSW4gZmFjdCBpdCBkb2Vzbid0IGV2
ZW4gcmVxdWlyZSBhIHZlcnRleCBzaGFkZXIuCi0gICAgLy8gSG93ZXZlciB0aGUgR0xFUzMuMSBz
cGVjIGJhc2ljYWxseSBzYXlzIHRoYXQgZnJhZ21lbnQgaW5wdXRzIGFyZQotICAgIC8vIGVpdGhl
ciBidWlsdC1pbnMgb3IgY29tZSBmcm9tIHRoZSBwcmV2aW91cyBzaGFkZXIgc3RhZ2UuCi0gICAg
Ly8gKMKnIDE0LjEsIEZyYWdtZW50IFNoYWRlciBWYXJpYWJsZXMpLgotICAgIC8vIEFkZGl0aW9u
YWxseSB0aGVyZSBhcmUgbWFueSBwbGFjZXMgdGhhdCBhcmUgYmFzZWQgb24gdGhlIGFzc3VtcHRp
b24gb2YgaGF2aW5nCi0gICAgLy8gYSB2ZXJ0ZXggc2hhZGVyIChjb21tYW5kIGJ1ZmZlciwgYW5n
bGUpIHNvIHdlJ3JlIGdvaW5nIHRvIHN0aWNrIHRvIHRoZSBzYW1lCi0gICAgLy8gc2VtYW50aWNz
IGFuZCByZXF1aXJlIGEgdmVydGV4IHNoYWRlciBhbmQgdG8gaGF2ZSB0aGUgdmVydGV4IHNoYWRl
ciBkZWZpbmUgdGhlCi0gICAgLy8gdmFyeWluZyBmcmFnbWVudCBzaGFkZXIgaW5wdXQuCi0KLSAg
ICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgY29uc3QgY2hhcioga1ZlcnRleFNoYWRlclNvdXJj
ZSA9Ci0gICAgICAgInZhcnlpbmcgdmVjNCBjb2xvcjtcbiIKLSAgICAgICAidm9pZCBtYWluKCkg
e31cbiI7Ci0KLSAgICBjb25zdCBjaGFyKiBrRnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAg
ICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzQgY29s
b3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGdsX0ZyYWdDb2xv
ciA9IHZlYzQoMS4wKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICAvLyBjbGFuZy1mb3JtYXQg
b24KLSAgICBjb21waWxlUHJvZ3JhbShrVmVydGV4U2hhZGVyU291cmNlLCBrRnJhZ21lbnRTaGFk
ZXJTb3VyY2UpOwotCi0gICAgZW51bSBrQmluZExvY2F0aW9ucwotICAgIHsKLSAgICAgICAga0Nv
bG9yTG9jYXRpb24gICAgID0gNSwKLSAgICAgICAga0ZyYWdDb2xvckxvY2F0aW9uID0gNgotICAg
IH07Ci0KLSAgICAvLyBzdWNjZXNzZnVsIGJpbmQuCi0gICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExv
Y2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtDb2xvckxvY2F0aW9uLCAiY29sb3IiKTsKLSAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIGFueSBuYW1lIGNhbiBiZSBib3VuZCBhbmQg
bmFtZXMgdGhhdCBkbyBub3QgYWN0dWFsbHkgZXhpc3QgaW4gdGhlIHByb2dyYW0gYWZ0ZXIKLSAg
ICAvLyBsaW5raW5nIGFyZSBpZ25vcmVkLgotICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlv
bkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JMb2NhdGlvbiwgImRvZXNudF9leGlzdCIpOwotICAg
IEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gaWxsZWdhbCBwcm9ncmFtCi0gICAgZ2xC
aW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0gKyAxLCBrQ29sb3JMb2Nh
dGlvbiwgImNvbG9yIik7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLQotICAgIC8vIGlsbGVnYWwgYmluZCAoYnVpbHQtaW4pCi0gICAgZ2xCaW5kRnJhZ21lbnRJ
bnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtGcmFnQ29sb3JMb2NhdGlvbiwgImdsX0Zy
YWdDb2xvciIpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0K
LSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0ZyYWdD
b2xvckxvY2F0aW9uLCBOVUxMKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxV
RSk7Ci0KLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwg
MHhmZmZmZmYsICJjb2xvciIpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVF
KTsKLQotICAgIEFTU0VSVF9UUlVFKGxpbmtQcm9ncmFtKCkgPT0gdHJ1ZSk7Ci0KLSAgICBjb25z
dCBHTGZsb2F0IGtDb2VmZmljaWVudHMxNltdID0gezEuMGYsIDIuMGYsICAzLjBmLCAgNC4wZiwg
IDUuMGYsICA2LjBmLCAgNy4wZiwgIDguMGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA5LjBmLCAxMC4wZiwgMTEuMGYsIDEyLjBmLCAxMy4wZiwgMTQuMGYsIDE1LjBm
LCAxNi4wZn07Ci0KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Q
cm9ncmFtLCBrQ29sb3JMb2NhdGlvbiwgR0xfRVlFX0xJTkVBUl9DSFJPTUlVTSwgNCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDb2VmZmljaWVudHMxNik7Ci0g
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1
dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCAtMSwgR0xfRVlFX0xJTkVBUl9DSFJPTUlVTSwgNCwga0Nv
ZWZmaWNpZW50czE2KTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCBm
cmFnbWVudCBpbnB1dCBpbnRlcnBvbGF0aW9uIGluIENIUk9NSVVNX0VZRSBjb29yZGluYXRlcy4K
LVRFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdXaXRoVGV4dHVyaW5nVGVzdCwgVGVzdFByb2dy
YW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNX0VZRSkKLXsKLSAgICBpZiAoIWlzQXBwbGlj
YWJsZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAg
Y29uc3QgY2hhciAqa1ZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJ1bmlmb3JtIG1hdDQg
dmlld19tYXRyaXg7XG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDQgY29sb3JfbWF0cml4O1xuIgot
ICAgICAgICAidW5pZm9ybSB2ZWMyIG1vZGVsX3RyYW5zbGF0ZTtcbiIKLSAgICAgICAgImF0dHJp
YnV0ZSB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAidmFyeWluZyB2ZWMzIGNvbG9yO1xuIgot
ICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICB2ZWM0IHAgPSB2ZWM0KG1vZGVs
X3RyYW5zbGF0ZSArIHBvc2l0aW9uLCAxLjAsIDEuMCk7XG4iCi0gICAgICAgICIgIGNvbG9yID0g
KGNvbG9yX21hdHJpeCAqIHApLnJnYjtcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2aWV3
X21hdHJpeCAqIHA7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgY29uc3QgY2hhciAqa0ZyYWdt
ZW50U2hhZGVyU291cmNlID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgot
ICAgICAgICAidmFyeWluZyB2ZWMzIGNvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xu
IgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNvbG9yLCAxLjApO1xuIgotICAgICAg
ICAifVxuIjsKLSAgICAvLyBjbGFuZy1mb3JtYXQgb24KLQotICAgIGNvbXBpbGVQcm9ncmFtKGtW
ZXJ0ZXhTaGFkZXJTb3VyY2UsIGtGcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgYmluZFByb2dy
YW0oKTsKLSAgICBBU1NFUlRfVFJVRShsaW5rUHJvZ3JhbSgpID09IHRydWUpOwotCi0gICAgZ2xV
bmlmb3JtTWF0cml4NGZ2KGtWaWV3TWF0cml4TG9jYXRpb24sIDEsIEdMX0ZBTFNFLCBrUHJvamVj
dGlvbk1hdHJpeCk7Ci0KLSAgICBzdGF0aWMgY29uc3QgR0xmbG9hdCBrQ29sb3JNYXRyaXhbMTZd
ID0gewotICAgICAgICAxLjBmIC8ga1Jlc29sdXRpb24sIDAuMGYsIDAuMGYsIDAuMGYsCi0gICAg
ICAgIDAuMGYsIDEuMGYgLyBrUmVzb2x1dGlvbiwgMC4wZiwgMC4wZiwKLSAgICAgICAgMC4wZiwg
MC4wZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgMC4wZiwgMC4wZiwgMC4wZiwgMC4wZn07Ci0KLSAg
ICBnbFVuaWZvcm1NYXRyaXg0ZnYoa0NvbG9yTWF0cml4TG9jYXRpb24sIDEsIEdMX0ZBTFNFLCBr
Q29sb3JNYXRyaXgpOwotCi0gICAgLy8gVGhpcyBpcyB0aGUgZnVuY3Rpb25hbGl0eSB3ZSBhcmUg
dGVzdGluZzogUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuCi0gICAgLy8gZG9lcyB0aGUgc2Ft
ZSB3b3JrIGFzIHRoZSBjb2xvciB0cmFuc2Zvcm0gaW4gdmVydGV4IHNoYWRlci4KLSAgICBzdGF0
aWMgY29uc3QgR0xmbG9hdCBrQ29sb3JDb2VmZmljaWVudHNbMTJdID0gewotICAgICAgICAxLjBm
IC8ga1Jlc29sdXRpb24sIDAuMGYsIDAuMGYsCi0gICAgICAgIDAuMGYsIDAuMGYsIDEuMGYgLyBr
UmVzb2x1dGlvbiwKLSAgICAgICAgMC4wZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgMC4wZiwgMC4w
ZiwgMC4wZn07Ci0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJv
Z3JhbSwga0NvbG9yRnJhZ21lbnRJbnB1dExvY2F0aW9uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfRVlFX0xJTkVBUl9DSFJPTUlVTSwgMywga0NvbG9yQ29l
ZmZpY2llbnRzKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdUZXN0UGF0
dGVybigpOwotCi0gICAgY29uc3QgR0xmbG9hdCBrRmlsbENvb3Jkc1s2XSA9IHs1OS4wZiwgNTAu
MGYsIDUwLjBmLCAyOC4wZiwgNjYuMGYsIDYzLjBmfTsKLQotICAgIGZvciAoaW50IGogPSAwOyBq
IDwga1Rlc3RSb3dzOyArK2opCi0gICAgewotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGtU
ZXN0Q29sdW1uczsgKytpKQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBrID0g
MDsgayA8IEFycmF5U2l6ZShrRmlsbENvb3Jkcyk7IGsgKz0gMikKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjb25zdCBmbG9hdCBmeCA9IGtGaWxsQ29vcmRzW2tdOwotICAgICAgICAg
ICAgICAgIGNvbnN0IGZsb2F0IGZ5ID0ga0ZpbGxDb29yZHNbayArIDFdOwotICAgICAgICAgICAg
ICAgIGNvbnN0IGZsb2F0IHB4ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGkgKiBrU2hhcGVXaWR0aCk7
Ci0gICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgcHkgPSBzdGF0aWNfY2FzdDxmbG9hdD4oaiAq
IGtTaGFwZUhlaWdodCk7Ci0KLSAgICAgICAgICAgICAgICBhbmdsZTo6R0xDb2xvciBjb2xvcjsK
LSAgICAgICAgICAgICAgICBjb2xvci5SID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oc3RkOjpyb3Vu
ZGYoKHB4ICsgZngpIC8ga1Jlc29sdXRpb24gKiAyNTUuMGYpKTsKLSAgICAgICAgICAgICAgICBj
b2xvci5HID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oc3RkOjpyb3VuZGYoKHB5ICsgZnkpIC8ga1Jl
c29sdXRpb24gKiAyNTUuMGYpKTsKLSAgICAgICAgICAgICAgICBjb2xvci5CID0gMDsKLSAgICAg
ICAgICAgICAgICBjb2xvci5BID0gMjU1OwotICAgICAgICAgICAgICAgIENoZWNrUGl4ZWxzKHN0
YXRpY19jYXN0PEdMaW50PihweCArIGZ4KSwgc3RhdGljX2Nhc3Q8R0xpbnQ+KHB5ICsgZnkpLCAx
LCAxLCAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotLy8gVGVzdCBmcmFnbWVudCBpbnB1dCBpbnRlcnBv
bGF0aW9uIGluIENIUk9NSVVNX09CSkVDVCBjb29yZGluYXRlcy4KLVRFU1RfUChDSFJPTUlVTVBh
dGhSZW5kZXJpbmdXaXRoVGV4dHVyaW5nVGVzdCwgVGVzdFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1
dEdlbkNIUk9NSVVNX09CSkVDVCkKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgY29uc3QgY2hhciAqa1Zl
cnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJ1bmlmb3JtIG1hdDQgdmlld19tYXRyaXg7XG4i
Ci0gICAgICAgICJ1bmlmb3JtIG1hdDQgY29sb3JfbWF0cml4O1xuIgotICAgICAgICAidW5pZm9y
bSB2ZWMyIG1vZGVsX3RyYW5zbGF0ZTtcbiIKLSAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIHBvc2l0
aW9uO1xuIgotICAgICAgICAidmFyeWluZyB2ZWMzIGNvbG9yO1xuIgotICAgICAgICAidm9pZCBt
YWluKCkge1xuIgotICAgICAgICAiICBjb2xvciA9IChjb2xvcl9tYXRyaXggKiB2ZWM0KHBvc2l0
aW9uLCAxLjAsIDEuMCkpLnJnYjtcbiIKLSAgICAgICAgIiAgdmVjNCBwID0gdmVjNChtb2RlbF90
cmFuc2xhdGUgKyBwb3NpdGlvbiwgMS4wLCAxLjApO1xuIgotICAgICAgICAiICBnbF9Qb3NpdGlv
biA9IHZpZXdfbWF0cml4ICogcDtcbiIKLSAgICAgICAgIn0iOwotCi0gICAgY29uc3QgY2hhciAq
a0ZyYWdtZW50U2hhZGVyU291cmNlID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0
O1xuIgotICAgICAgICAidmFyeWluZyB2ZWMzIGNvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNvbG9yLnJnYiwgMS4wKTtc
biIKLSAgICAgICAgIn0iOwotICAgIC8vIGNsYW5nLWZvcm1hdCBvbgotCi0gICAgY29tcGlsZVBy
b2dyYW0oa1ZlcnRleFNoYWRlclNvdXJjZSwga0ZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICBi
aW5kUHJvZ3JhbSgpOwotICAgIEFTU0VSVF9UUlVFKGxpbmtQcm9ncmFtKCkgPT0gdHJ1ZSk7Ci0K
LSAgICBnbFVuaWZvcm1NYXRyaXg0ZnYoa1ZpZXdNYXRyaXhMb2NhdGlvbiwgMSwgR0xfRkFMU0Us
IGtQcm9qZWN0aW9uTWF0cml4KTsKLQotICAgIHN0YXRpYyBjb25zdCBHTGZsb2F0IGtDb2xvck1h
dHJpeFsxNl0gPSB7Ci0gICAgICAgIDEuMGYgLyBrU2hhcGVXaWR0aCwgMC4wZiwgMC4wZiwgMC4w
ZiwKLSAgICAgICAgMC4wZiwgMS4wZiAvIGtTaGFwZUhlaWdodCwgMC4wZiwgMC4wZiwKLSAgICAg
ICAgMC4wZiwgMC4wZiwgMC4wZiwgMC4wZiwKLSAgICAgICAgMC4wZiwgMC4wZiwgMC4wZiwgMC4w
ZiB9OwotICAgIGdsVW5pZm9ybU1hdHJpeDRmdihrQ29sb3JNYXRyaXhMb2NhdGlvbiwgMSwgR0xf
RkFMU0UsIGtDb2xvck1hdHJpeCk7Ci0KLSAgICAvLyBUaGlzIGlzIHRoZSBmdW5jdGlvbmFsaXR5
IHdlIGFyZSB0ZXN0aW5nOiBQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW4KLSAgICAvLyBkb2Vz
IHRoZSBzYW1lIHdvcmsgYXMgdGhlIGNvbG9yIHRyYW5zZm9ybSBpbiB2ZXJ0ZXggc2hhZGVyLgot
ICAgIHN0YXRpYyBjb25zdCBHTGZsb2F0IGtDb2xvckNvZWZmaWNpZW50c1s5XSA9IHsKLSAgICAg
ICAgMS4wZiAvIGtTaGFwZVdpZHRoLCAwLjBmLCAwLjBmLCAwLjBmLCAxLjBmIC8ga1NoYXBlSGVp
Z2h0LCAwLjBmLCAwLjBmLCAwLjBmLCAwLjBmfTsKLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJ
bnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JGcmFnbWVudElucHV0TG9jYXRpb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9PQkpFQ1RfTElORUFS
X0NIUk9NSVVNLCAzLCBrQ29sb3JDb2VmZmljaWVudHMpOwotCi0gICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Ci0KLSAgICBkcmF3VGVzdFBhdHRlcm4oKTsKLQotICAgIGNvbnN0IEdMZmxvYXQga0Zp
bGxDb29yZHNbNl0gPSB7NTkuMGYsIDUwLjBmLCA1MC4wZiwgMjguMGYsIDY2LjBmLCA2My4wZn07
Ci0KLSAgICBmb3IgKGludCBqID0gMDsgaiA8IGtUZXN0Um93czsgKytqKQotICAgIHsKLSAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrVGVzdENvbHVtbnM7ICsraSkKLSAgICAgICAgewotICAg
ICAgICAgICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCBBcnJheVNpemUoa0ZpbGxDb29yZHMpOyBr
ICs9IDIpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgZnggPSBr
RmlsbENvb3Jkc1trXTsKLSAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBmeSA9IGtGaWxsQ29v
cmRzW2sgKyAxXTsKLSAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBweCA9IHN0YXRpY19jYXN0
PGZsb2F0PihpICoga1NoYXBlV2lkdGgpOwotICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IHB5
ID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGogKiBrU2hhcGVIZWlnaHQpOwotCi0gICAgICAgICAgICAg
ICAgYW5nbGU6OkdMQ29sb3IgY29sb3I7Ci0gICAgICAgICAgICAgICAgY29sb3IuUiA9IHN0YXRp
Y19jYXN0PEdMdWJ5dGU+KHN0ZDo6cm91bmRmKGZ4IC8ga1NoYXBlV2lkdGggKiAyNTUuMGYpKTsK
LSAgICAgICAgICAgICAgICBjb2xvci5HID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oc3RkOjpyb3Vu
ZGYoZnkgLyBrU2hhcGVIZWlnaHQgKiAyNTUuMGYpKTsKLSAgICAgICAgICAgICAgICBjb2xvci5C
ID0gMDsKLSAgICAgICAgICAgICAgICBjb2xvci5BID0gMjU1OwotICAgICAgICAgICAgICAgIENo
ZWNrUGl4ZWxzKHN0YXRpY19jYXN0PEdMaW50PihweCArIGZ4KSwgc3RhdGljX2Nhc3Q8R0xpbnQ+
KHB5ICsgZnkpLCAxLCAxLCAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KLQotLy8gVGVzdCBzdWNjZXNzIGFu
ZCBlcnJvciBjYXNlcyBmb3Igc2V0dGluZyBpbnRlcnBvbGF0aW9uIHBhcmFtZXRlcnMuCi1URVNU
X1AoQ0hST01JVU1QYXRoUmVuZGVyaW5nV2l0aFRleHR1cmluZ1Rlc3QsIFRlc3RQcm9ncmFtUGF0
aEZyYWdtZW50SW5wdXRHZW5BcmdzKQotewotICAgIGlmICghaXNBcHBsaWNhYmxlKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICBjb25zdCBjaGFyICpr
VmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgInZhcnlpbmcgdmVjMiB2ZWMyX3ZhcjtcbiIK
LSAgICAgICAgInZhcnlpbmcgdmVjMyB2ZWMzX3ZhcjtcbiIKLSAgICAgICAgInZhcnlpbmcgdmVj
NCB2ZWM0X3ZhcjtcbiIKLSAgICAgICAgInZhcnlpbmcgZmxvYXQgZmxvYXRfdmFyO1xuIgotICAg
ICAgICAidmFyeWluZyBtYXQyIG1hdDJfdmFyO1xuIgotICAgICAgICAidmFyeWluZyBtYXQzIG1h
dDNfdmFyO1xuIgotICAgICAgICAidmFyeWluZyBtYXQ0IG1hdDRfdmFyO1xuIgotICAgICAgICAi
YXR0cmlidXRlIGZsb2F0IGF2b2lkX29wdDtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
LSAgICAgICAgIiAgdmVjMl92YXIgPSB2ZWMyKDEuMCwgMi4wICsgYXZvaWRfb3B0KTtcbiIKLSAg
ICAgICAgIiAgdmVjM192YXIgPSB2ZWMzKDEuMCwgMi4wLCAzLjAgKyBhdm9pZF9vcHQpO1xuIgot
ICAgICAgICAiICB2ZWM0X3ZhciA9IHZlYzQoMS4wLCAyLjAsIDMuMCwgNC4wICsgYXZvaWRfb3B0
KTtcbiIKLSAgICAgICAgIiAgZmxvYXRfdmFyID0gNS4wICsgYXZvaWRfb3B0O1xuIgotICAgICAg
ICAiICBtYXQyX3ZhciA9IG1hdDIoMi4wICsgYXZvaWRfb3B0KTtcbiIKLSAgICAgICAgIiAgbWF0
M192YXIgPSBtYXQzKDMuMCArIGF2b2lkX29wdCk7XG4iCi0gICAgICAgICIgIG1hdDRfdmFyID0g
bWF0NCg0LjAgKyBhdm9pZF9vcHQpO1xuIgotICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQo
MS4wKTtcbiIKLSAgICAgICAgIn0iOwotCi0gICAgY29uc3QgY2hhcioga0ZyYWdtZW50U2hhZGVy
U291cmNlID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAi
dmFyeWluZyB2ZWMyIHZlYzJfdmFyO1xuIgotICAgICAgICAidmFyeWluZyB2ZWMzIHZlYzNfdmFy
O1xuIgotICAgICAgICAidmFyeWluZyB2ZWM0IHZlYzRfdmFyO1xuIgotICAgICAgICAidmFyeWlu
ZyBmbG9hdCBmbG9hdF92YXI7XG4iCi0gICAgICAgICJ2YXJ5aW5nIG1hdDIgbWF0Ml92YXI7XG4i
Ci0gICAgICAgICJ2YXJ5aW5nIG1hdDMgbWF0M192YXI7XG4iCi0gICAgICAgICJ2YXJ5aW5nIG1h
dDQgbWF0NF92YXI7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGds
X0ZyYWdDb2xvciA9IHZlYzQodmVjMl92YXIsIDAsIDApICsgdmVjNCh2ZWMzX3ZhciwgMCkgKyB2
ZWM0X3ZhciArICIKLSAgICAgICAgIiAgICAgICAgICAgICAgIHZlYzQoZmxvYXRfdmFyKSArICIK
LSAgICAgICAgIiAgICAgICAgICAgICAgIHZlYzQobWF0Ml92YXJbMF1bMF0sIG1hdDNfdmFyWzFd
WzFdLCBtYXQ0X3ZhclsyXVsyXSwgMSk7XG4iCi0gICAgICAgICJ9IjsKLSAgICAvLyBjbGFuZy1m
b3JtYXQgb24KLQotICAgIGVudW0KLSAgICB7Ci0gICAgICAgIGtWZWMyTG9jYXRpb24gPSAwLAot
ICAgICAgICBrVmVjM0xvY2F0aW9uLAotICAgICAgICBrVmVjNExvY2F0aW9uLAotICAgICAgICBr
RmxvYXRMb2NhdGlvbiwKLSAgICAgICAga01hdDJMb2NhdGlvbiwKLSAgICAgICAga01hdDNMb2Nh
dGlvbiwKLSAgICAgICAga01hdDRMb2NhdGlvbiwKLSAgICB9OwotICAgIHN0cnVjdAotICAgIHsK
LSAgICAgICAgR0xpbnQgbG9jYXRpb247Ci0gICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICAg
ICAgIEdMaW50IGNvbXBvbmVudHM7Ci0gICAgfSB2YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge2tW
ZWMyTG9jYXRpb24sICJ2ZWMyX3ZhciIsIDJ9LAotICAgICAgICB7a1ZlYzNMb2NhdGlvbiwgInZl
YzNfdmFyIiwgM30sCi0gICAgICAgIHtrVmVjNExvY2F0aW9uLCAidmVjNF92YXIiLCA0fSwKLSAg
ICAgICAge2tGbG9hdExvY2F0aW9uLCAiZmxvYXRfdmFyIiwgMX0sCi0gICAgICAgIC8vIElmIGEg
dmFyeWluZyBpcyBub3Qgc2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBzY2FsYXIgb3IK
LSAgICAgICAgLy8gdmVjdG9yLCBpdCBhbHdheXMgY2F1c2VzIGFuIGludmFsaWQgb3BlcmF0aW9u
LgotICAgICAgICB7a01hdDJMb2NhdGlvbiwgIm1hdDJfdmFyIiwgLTF9LAotICAgICAgICB7a01h
dDNMb2NhdGlvbiwgIm1hdDNfdmFyIiwgLTF9LAotICAgICAgICB7a01hdDRMb2NhdGlvbiwgIm1h
dDRfdmFyIiwgLTF9LAotICAgIH07Ci0KLSAgICBjb21waWxlUHJvZ3JhbShrVmVydGV4U2hhZGVy
U291cmNlLCBrRnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBBcnJheVNpemUodmFyaWFibGVzKTsgKytpKQotICAgIHsKLSAgICAgICAgZ2xCaW5kRnJh
Z21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIHZhcmlhYmxlc1tpXS5sb2NhdGlv
biwgdmFyaWFibGVzW2ldLm5hbWUpOwotICAgIH0KLQotICAgIC8vIHRlc3QgdGhhdCB1c2luZyBp
bnZhbGlkIChub3QgbGlua2VkKSBwcm9ncmFtIGlzIGFuIGludmFsaWQgb3BlcmF0aW9uLgotICAg
IC8vIFNlZSBzaW1pbGFyIGNhbGxzIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QgZm9yIGRpc2N1c3Np
b24gYWJvdXQgdGhlIGFyZ3VtZW50cy4KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdl
bkNIUk9NSVVNKG1Qcm9ncmFtLCAtMSwgR0xfTk9ORSwgMCwgTlVMTCk7Ci0gICAgRVhQRUNUX0dM
X0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLQotICAgIEFTU0VSVF9UUlVFKGxpbmtQcm9n
cmFtKCkgPT0gdHJ1ZSk7Ci0KLSAgICBjb25zdCBHTGZsb2F0IGtDb2VmZmljaWVudHMxNltdID0g
ezEuMGYsIDIuMGYsICAzLjBmLCAgNC4wZiwgIDUuMGYsICA2LjBmLCAgNy4wZiwgIDguMGYsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA5LjBmLCAxMC4wZiwgMTEuMGYs
IDEyLjBmLCAxMy4wZiwgMTQuMGYsIDE1LjBmLCAxNi4wZn07Ci0gICAgY29uc3QgR0xlbnVtIGtH
ZW5Nb2Rlc1tdID0ge0dMX05PTkUsIEdMX0VZRV9MSU5FQVJfQ0hST01JVU0sIEdMX09CSkVDVF9M
SU5FQVJfQ0hST01JVU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX0NPTlNU
QU5UX0NIUk9NSVVNfTsKLQotICAgIGZvciAoc2l6ZV90IHZhcmlhYmxlID0gMDsgdmFyaWFibGUg
PCBBcnJheVNpemUodmFyaWFibGVzKTsgKyt2YXJpYWJsZSkKLSAgICB7Ci0gICAgICAgIGZvciAo
R0xpbnQgY29tcG9uZW50cyA9IDA7IGNvbXBvbmVudHMgPD0gNDsgKytjb21wb25lbnRzKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBnZW5tb2RlID0gMDsgZ2VubW9kZSA8IEFy
cmF5U2l6ZShrR2VuTW9kZXMpOyArK2dlbm1vZGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwgdmFy
aWFibGVzW3ZhcmlhYmxlXS5sb2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGtHZW5Nb2Rlc1tnZW5tb2RlXSwgY29tcG9uZW50cywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtD
b2VmZmljaWVudHMxNik7Ci0KLSAgICAgICAgICAgICAgICBpZiAoY29tcG9uZW50cyA9PSAwICYm
IGtHZW5Nb2Rlc1tnZW5tb2RlXSA9PSBHTF9OT05FKQotICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlc1t2YXJpYWJsZV0uY29tcG9uZW50cyA9PSAtMSkK
LSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xlYXJp
bmcgYSBmcmFnbWVudCBpbnB1dCB0aGF0IGlzIG5vdCBzaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBwb2ludCBzY2FsYXIgb3IgdmVjdG9yIGlzIGFu
IGludmFsaWQgb3BlcmF0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUX0dMX0VS
Uk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIENsZWFyaW5nIGEgdmFsaWQgZnJhZ21lbnQgaW5wdXQgaXMgb2suCi0gICAg
ICAgICAgICAgICAgICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjb21w
b25lbnRzID09IDAgfHwga0dlbk1vZGVzW2dlbm1vZGVdID09IEdMX05PTkUpCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBBU1NFUlRfR0xfRVJST1IoR0xfSU5WQUxJRF9W
QUxVRSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb21wb25lbnRzID09IHZhcmlhYmxl
c1t2YXJpYWJsZV0uY29tcG9uZW50cykKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gU2V0dGluZyBhIGdlbmVyYXRvciBmb3IgYSBzaW5nbGUtcHJlY2lz
aW9uIGZsb2F0aW5nIHBvaW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBzY2FsYXIgb3Ig
dmVjdG9yIGZyYWdtZW50IGlucHV0IGlzIG9rLgotICAgICAgICAgICAgICAgICAgICAgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBTZXR0aW5nIGEgZ2VuZXJhdG9yIHdoZW4gY29tcG9uZW50cyBkbyBub3QgbWF0Y2ggaXMg
YW4gaW52YWxpZCBvcGVyYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlRfR0xf
RVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgZW51
bQotICAgIHsKLSAgICAgICAga1ZhbGlkR2VuTW9kZSAgICAgID0gR0xfQ09OU1RBTlRfQ0hST01J
VU0sCi0gICAgICAgIGtWYWxpZENvbXBvbmVudHMgICA9IDMsCi0gICAgICAgIGtJbnZhbGlkR2Vu
TW9kZSAgICA9IDB4QUIsCi0gICAgICAgIGtJbnZhbGlkQ29tcG9uZW50cyA9IDUsCi0gICAgfTsK
LQotICAgIC8vIFRoZSBsb2NhdGlvbiA9PSAtMSB3b3VsZCBtZWFuIGZyYWdtZW50IGlucHV0IHdh
cyBvcHRpbWl6ZWQgYXdheS4gQXQgdGhlCi0gICAgLy8gdGltZSBvZiB3cml0aW5nLCAtMSBjYW4g
bm90IGhhcHBlbiBiZWNhdXNlIHRoZSBvbmx5IHdheSB0byBvYnRhaW4gdGhlCi0gICAgLy8gbG9j
YXRpb24gbnVtYmVycyBpcyB0aHJvdWdoIGJpbmQuIFRlc3QganVzdCB0byBiZSBjb25zaXN0ZW50
LgotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0x
LCBrVmFsaWRHZW5Nb2RlLCBrVmFsaWRDb21wb25lbnRzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga0NvZWZmaWNpZW50czE2KTsKLSAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLQotICAgIC8vIFRlc3QgdGhhdCBldmVuIHRob3VnaCB0aGUgc3BlYyBzYXlzIGxv
Y2F0aW9uID09IC0xIGNhdXNlcyB0aGUgb3BlcmF0aW9uIHRvCi0gICAgLy8gYmUgc2tpcHBlZCwg
dGhlIHZlcmlmaWNhdGlvbiBvZiBvdGhlciBwYXJhbWV0ZXJzIGlzIHN0aWxsIGRvbmUuIFRoaXMg
aXMgYQotICAgIC8vIEdMIHBvbGljeS4KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdl
bkNIUk9NSVVNKG1Qcm9ncmFtLCAtMSwga0ludmFsaWRHZW5Nb2RlLCBrVmFsaWRDb21wb25lbnRz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NvZWZmaWNpZW50
czE2KTsKLSAgICBBU1NFUlRfR0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLQotICAgIGdsUHJv
Z3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0xLCBrSW52YWxpZEdl
bk1vZGUsIGtJbnZhbGlkQ29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGtDb2VmZmljaWVudHMxNik7Ci0gICAgQVNTRVJUX0dMX0VSUk9SKEdMX0lO
VkFMSURfRU5VTSk7Ci0KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVN
KG1Qcm9ncmFtLCAtMSwga1ZhbGlkR2VuTW9kZSwga0ludmFsaWRDb21wb25lbnRzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NvZWZmaWNpZW50czE2KTsKLSAg
ICBBU1NFUlRfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICBnbERlbGV0ZVByb2dy
YW0obVByb2dyYW0pOwotCi0gICAgLy8gVGVzdCB0aGF0IHVzaW5nIGludmFsaWQgKGRlbGV0ZWQp
IHByb2dyYW0gaXMgYW4gaW52YWxpZCBvcGVyYXRpb24uCi0gICAgRVhQRUNUX0ZBTFNFKGdsSXNQ
cm9ncmFtKG1Qcm9ncmFtKSA9PSBHTF9GQUxTRSk7Ci0KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21l
bnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCAtMSwga1ZhbGlkR2VuTW9kZSwga1ZhbGlkQ29t
cG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDb2Vm
ZmljaWVudHMxNik7Ci0gICAgQVNTRVJUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LQotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0x
LCBrSW52YWxpZEdlbk1vZGUsIGtWYWxpZENvbXBvbmVudHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrQ29lZmZpY2llbnRzMTYpOwotICAgIEFTU0VSVF9HTF9F
UlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJ
bnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCAtMSwga0ludmFsaWRHZW5Nb2RlLCBrSW52YWxpZENv
bXBvbmVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ29l
ZmZpY2llbnRzMTYpOwotICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci0KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCAt
MSwga1ZhbGlkR2VuTW9kZSwga0ludmFsaWRDb21wb25lbnRzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga0NvZWZmaWNpZW50czE2KTsKLSAgICBBU1NFUlRfR0xf
RVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgbVByb2dyYW0gPSAwdTsKLX0KLQot
Ly8gVGVzdCB0aGF0IGhhdmluZyBpbnB1dCBzdGF0aWNhbGx5IGFsaWFzZWQgZnJhZ21lbnQgaW5w
dXRzIHRoZSBsaW5raW5nIGZhaWxzCi0vLyBhbmQgdGhlbiBzdWNjZWVkcyB3aGVuIHRoZSBjb25m
bGljdCBpcyByZXNvbHZlZC4KLVRFU1RfUChDSFJPTUlVTVBhdGhSZW5kZXJpbmdXaXRoVGV4dHVy
aW5nVGVzdCwgVGVzdENvbmZsaWN0aW5nQmluZCkKLXsKLSAgICBpZiAoIWlzQXBwbGljYWJsZSgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBjbGFuZy1mb3JtYXQgb2ZmCi0gICAgY29uc3Qg
Y2hhcioga1ZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjNCBwb3Np
dGlvbjtcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjNCBjb2xvckE7XG4iCi0gICAgICAgICJ2YXJ5
aW5nIHZlYzQgY29sb3JCO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAi
ICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uO1xuIgotICAgICAgICAiICBjb2xvckEgPSBwb3NpdGlv
biArIHZlYzQoMSk7XG4iCi0gICAgICAgICIgIGNvbG9yQiA9IHBvc2l0aW9uICsgdmVjNCgyKTtc
biIKLSAgICAgICAgIn0iOwotCi0gICAgY29uc3QgY2hhcioga0ZyYWdtZW50U2hhZGVyU291cmNl
ID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidmFyeWlu
ZyB2ZWM0IGNvbG9yQTtcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjNCBjb2xvckI7XG4iCi0gICAg
ICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IGNvbG9yQSAr
IGNvbG9yQjtcbiIKLSAgICAgICAgIn0iOwotICAgIC8vIGNsYW5nLWZvcm1hdCBvbgotCi0gICAg
Y29uc3QgR0xpbnQga0NvbG9yQUxvY2F0aW9uID0gMzsKLSAgICBjb25zdCBHTGludCBrQ29sb3JC
TG9jYXRpb24gPSA0OwotCi0gICAgY29tcGlsZVByb2dyYW0oa1ZlcnRleFNoYWRlclNvdXJjZSwg
a0ZyYWdtZW50U2hhZGVyU291cmNlKTsKLQotICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlv
bkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JBTG9jYXRpb24sICJjb2xvckEiKTsKLSAgICAvLyBC
aW5kIGNvbG9yQiB0byBsb2NhdGlvbiBhLCBjYXVzaW5nIGNvbmZsaWN0cy4gTGlua2luZyBzaG91
bGQgZmFpbC4KLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3Jh
bSwga0NvbG9yQUxvY2F0aW9uLCAiY29sb3JCIik7Ci0KLSAgICAvLyBTaG91bGQgZmFpbCBub3cu
Ci0gICAgQVNTRVJUX1RSVUUobGlua1Byb2dyYW0oKSA9PSBmYWxzZSk7Ci0gICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICAvLyBSZXNvbHZlIHRoZSBiaW5kIGNvbmZsaWN0LgotICAgIGds
QmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JCTG9jYXRp
b24sICJjb2xvckIiKTsKLQotICAgIEFTU0VSVF9UUlVFKGxpbmtQcm9ncmFtKCkgPT0gdHJ1ZSk7
Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRlc3QgYmluZGluZyB3aXRoIGFy
cmF5IHZhcmlhYmxlcywgdXNpbmcgemVybyBpbmRpY2VzLiBUZXN0cyB0aGF0Ci0vLyBiaW5kaW5n
IGNvbG9yQVswXSB3aXRoIGV4cGxpY2l0ICJjb2xvckFbMF0iIGFzIHdlbGwgYXMgImNvbG9yQSIg
cHJvZHVjZXMKLS8vIGEgY29ycmVjdCBsb2NhdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHdpdGggUGF0
aFByb2dyYW1GcmFnbWVudElucHV0R2VuLgotLy8gRm9yIHBhdGggcmVuZGVyaW5nLCBjb2xvckFb
MF0gaXMgYm91bmQgdG8gYSBsb2NhdGlvbi4gVGhlIGlucHV0IGdlbmVyYXRvciBmb3IKLS8vIHRo
ZSBsb2NhdGlvbiBpcyBzZXQgdG8gcHJvZHVjZSB2ZWM0KDAsIDAuMSwgMCwgMC4xKS4KLS8vIFRo
ZSBkZWZhdWx0IHZhcnlpbmcsIGNvbG9yLCBpcyBib3VuZCB0byBhIGxvY2F0aW9uIGFuZCBpdHMg
Z2VuZXJhdG9yCi0vLyB3aWxsIHByb2R1Y2UgdmVjNCgxMC4wKS4gIFRoZSBzaGFkZXIgcHJvZ3Jh
bSBwcm9kdWNlcyBncmVlbiBwaXhlbHMuCi0vLyBGb3IgdmVydGV4LWJhc2VkIHJlbmRlcmluZywg
dGhlIHZlcnRleCBzaGFkZXIgcHJvZHVjZXMgdGhlIHNhbWUgZWZmZWN0IGFzCi0vLyB0aGUgaW5w
dXQgZ2VuZXJhdG9yIGZvciBwYXRoIHJlbmRlcmluZy4KLVRFU1RfUChDSFJPTUlVTVBhdGhSZW5k
ZXJpbmdXaXRoVGV4dHVyaW5nVGVzdCwgQmluZEZyYWdtZW50SW5wdXRBcnJheSkKLXsKLSAgICBp
ZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvL2NsYW5nLWZvcm1h
dCBvZmYKLSAgICBjb25zdCBjaGFyKiBrVmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgInVu
aWZvcm0gbWF0NCB2aWV3X21hdHJpeDtcbiIKLSAgICAgICAgInVuaWZvcm0gbWF0NCBjb2xvcl9t
YXRyaXg7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzIgbW9kZWxfdHJhbnNsYXRlO1xuIgotICAg
ICAgICAiYXR0cmlidXRlIHZlYzIgcG9zaXRpb247XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzQg
Y29sb3I7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzQgY29sb3JBWzRdO1xuIgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICB2ZWM0IHAgPSB2ZWM0KG1vZGVsX3RyYW5zbGF0
ZSArIHBvc2l0aW9uLCAxLCAxKTtcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2aWV3X21h
dHJpeCAqIHA7XG4iCi0gICAgICAgICIgIGNvbG9yQVswXSA9IHZlYzQoMC4wLCAwLjEsIDAsIDAu
MSk7XG4iCi0gICAgICAgICIgIGNvbG9yQVsxXSA9IHZlYzQoMC4yKTtcbiIKLSAgICAgICAgIiAg
Y29sb3JBWzJdID0gdmVjNCgwLjMpO1xuIgotICAgICAgICAiICBjb2xvckFbM10gPSB2ZWM0KDAu
NCk7XG4iCi0gICAgICAgICIgIGNvbG9yID0gdmVjNCgxMC4wKTtcbiIKLSAgICAgICAgIn0iOwot
Ci0gICAgY29uc3QgY2hhcioga0ZyYWdtZW50U2hhZGVyU291cmNlID0KLSAgICAgICAgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidmFyeWluZyB2ZWM0IGNvbG9yO1xuIgot
ICAgICAgICAidmFyeWluZyB2ZWM0IGNvbG9yQVs0XTtcbiIKLSAgICAgICAgInZvaWQgbWFpbigp
IHtcbiIKLSAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gY29sb3JBWzBdICogY29sb3I7XG4iCi0g
ICAgICAgICJ9IjsKLSAgICAvLyBjbGFuZy1mb3JtYXQgb24KLQotICAgIGNvbnN0IEdMaW50IGtD
b2xvckEwTG9jYXRpb24gPSA0OwotICAgIGNvbnN0IEdMaW50IGtVbnVzZWRMb2NhdGlvbiAgPSA1
OwotICAgIGNvbnN0IEdMZmxvYXQga0NvbG9yQTBbXSAgICAgPSB7MC4wZiwgMC4xZiwgMC4wZiwg
MC4xZn07Ci0gICAgY29uc3QgR0xmbG9hdCBrQ29sb3JbXSAgICAgICA9IHsxMC4wZiwgMTAuMGYs
IDEwLjBmLCAxMC4wZn07Ci0gICAgY29uc3QgR0xmbG9hdCBrRmlsbENvb3Jkc1s2XSA9IHs1OS4w
ZiwgNTAuMGYsIDUwLjBmLCAyOC4wZiwgNjYuMGYsIDYzLjBmfTsKLQotICAgIGZvciAoaW50IHBh
c3MgPSAwOyBwYXNzIDwgMjsgKytwYXNzKQotICAgIHsKLSAgICAgICAgY29tcGlsZVByb2dyYW0o
a1ZlcnRleFNoYWRlclNvdXJjZSwga0ZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICAgICAgaWYg
KHBhc3MgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExv
Y2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtVbnVzZWRMb2NhdGlvbiwgImNvbG9yQVswXSIpOwot
ICAgICAgICAgICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0s
IGtDb2xvckEwTG9jYXRpb24sICJjb2xvckEiKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVN
KG1Qcm9ncmFtLCBrVW51c2VkTG9jYXRpb24sICJjb2xvckEiKTsKLSAgICAgICAgICAgIGdsQmlu
ZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JBMExvY2F0aW9u
LCAiY29sb3JBWzBdIik7Ci0gICAgICAgIH0KLQotICAgICAgICBiaW5kUHJvZ3JhbSgpOwotCi0g
ICAgICAgIEFTU0VSVF9UUlVFKGxpbmtQcm9ncmFtKCkgPT0gdHJ1ZSk7Ci0KLSAgICAgICAgZ2xV
bmlmb3JtTWF0cml4NGZ2KGtWaWV3TWF0cml4TG9jYXRpb24sIDEsIEdMX0ZBTFNFLCBrUHJvamVj
dGlvbk1hdHJpeCk7Ci0gICAgICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01J
VU0obVByb2dyYW0sIGtDb2xvckEwTG9jYXRpb24sIEdMX0NPTlNUQU5UX0NIUk9NSVVNLCA0LCBr
Q29sb3JBMCk7Ci0gICAgICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0o
bVByb2dyYW0sIGtDb2xvckZyYWdtZW50SW5wdXRMb2NhdGlvbiwgR0xfQ09OU1RBTlRfQ0hST01J
VU0sIDQsIGtDb2xvcik7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAg
IGRyYXdUZXN0UGF0dGVybigpOwotCi0gICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwga1Rlc3RS
b3dzOyArK2opCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwga1Rl
c3RDb2x1bW5zOyArK2kpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9yIChzaXpl
X3QgayA9IDA7IGsgPCBBcnJheVNpemUoa0ZpbGxDb29yZHMpOyBrICs9IDIpCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBmeCA9IGtGaWxsQ29vcmRz
W2tdOwotICAgICAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBmeSA9IGtGaWxsQ29vcmRzW2sg
KyAxXTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgcHggPSBzdGF0aWNfY2FzdDxm
bG9hdD4oaSAqIGtTaGFwZVdpZHRoKTsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgZmxvYXQg
cHkgPSBzdGF0aWNfY2FzdDxmbG9hdD4oaiAqIGtTaGFwZUhlaWdodCk7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgYW5nbGU6OkdMQ29sb3IgY29sb3I7Ci0gICAgICAgICAgICAgICAgICAgIGNvbG9y
LlIgPSAwOwotICAgICAgICAgICAgICAgICAgICBjb2xvci5HID0gMjU1OwotICAgICAgICAgICAg
ICAgICAgICBjb2xvci5CID0gMDsKLSAgICAgICAgICAgICAgICAgICAgY29sb3IuQSA9IDI1NTsK
LSAgICAgICAgICAgICAgICAgICAgQ2hlY2tQaXhlbHMoc3RhdGljX2Nhc3Q8R0xpbnQ+KHB4ICsg
ZngpLCBzdGF0aWNfY2FzdDxHTGludD4ocHkgKyBmeSksIDEsIDEsIDIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbG9yKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS8vIFRlc3QgYmluZGluZyBhcnJheSB2YXJpYWJs
ZXMuIFRoaXMgaXMgbGlrZSBCaW5kRnJhZ21lbnRJbnB1dEFycmF5LgotLy8gQ3VycmVudGx5IGRp
c2FibGVkIHNpbmNlIGl0IHNlZW1zIHRoZXJlJ3MgYSBkcml2ZXIgYnVnIHdpdGggdGhlCi0vLyBv
bGRlciBkcml2ZXJzLiBUaGlzIHNob3VsZCB3b3JrIHdpdGggZHJpdmVyID49IDM2NC4xMgotVEVT
VF9QKENIUk9NSVVNUGF0aFJlbmRlcmluZ1dpdGhUZXh0dXJpbmdUZXN0LAotICAgIERJU0FCTEVE
X0JpbmRGcmFnbWVudElucHV0QXJyYXlOb25aZXJvSW5kZXgpCi17Ci0gICAgaWYgKCFpc0FwcGxp
Y2FibGUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gY2xhbmctZm9ybWF0IG9mZgotICAg
IGNvbnN0IGNoYXIqIGtWZXJ0ZXhTaGFkZXJTb3VyY2UgPQotICAgICAgICAidW5pZm9ybSBtYXQ0
IHZpZXdfbWF0cml4O1xuIgotICAgICAgICAidW5pZm9ybSBtYXQ0IGNvbG9yX21hdHJpeDtcbiIK
LSAgICAgICAgInVuaWZvcm0gdmVjMiBtb2RlbF90cmFuc2xhdGU7XG4iCi0gICAgICAgICJhdHRy
aWJ1dGUgdmVjMiBwb3NpdGlvbjtcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjNCBjb2xvcjtcbiIK
LSAgICAgICAgInZhcnlpbmcgdmVjNCBjb2xvckFbNF07XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCi0gICAgICAgICIgIHZlYzQgcCA9IHZlYzQobW9kZWxfdHJhbnNsYXRlICsgcG9zaXRp
b24sIDEsIDEpO1xuIgotICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZpZXdfbWF0cml4ICogcDtc
biIKLSAgICAgICAgIiAgY29sb3JBWzBdID0gdmVjNCgwLCAwLjEsIDAsIDAuMSk7XG4iCi0gICAg
ICAgICIgIGNvbG9yQVsxXSA9IHZlYzQoMCwgMSwgMCwgMSk7XG4iCi0gICAgICAgICIgIGNvbG9y
QVsyXSA9IHZlYzQoMCwgMC44LCAwLCAwLjgpO1xuIgotICAgICAgICAiICBjb2xvckFbM10gPSB2
ZWM0KDAsIDAuNSwgMCwgMC41KTtcbiIKLSAgICAgICAgIiAgY29sb3IgPSB2ZWM0KDAuMik7XG4i
Ci0gICAgICAgICJ9XG4iOwotCi0gICAgY29uc3QgY2hhcioga0ZyYWdtZW50U2hhZGVyU291cmNl
ID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidmFyeWlu
ZyB2ZWM0IGNvbG9yQVs0XTtcbiIKLSAgICAgICAgInZhcnlpbmcgdmVjNCBjb2xvcjtcbiIKLSAg
ICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gKGNvbG9y
QVswXSAqIGNvbG9yQVsxXSkgK1xuIgotICAgICAgICAiICAgICAgY29sb3JBWzJdICsgKGNvbG9y
QVszXSAqIGNvbG9yKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9u
Ci0KLSAgICBjb25zdCBHTGludCBrQ29sb3JBMExvY2F0aW9uID0gNDsKLSAgICBjb25zdCBHTGlu
dCBrQ29sb3JBMUxvY2F0aW9uID0gMTsKLSAgICBjb25zdCBHTGludCBrQ29sb3JBMkxvY2F0aW9u
ID0gMjsKLSAgICBjb25zdCBHTGludCBrQ29sb3JBM0xvY2F0aW9uID0gMzsKLSAgICBjb25zdCBH
TGludCBrVW51c2VkTG9jYXRpb24gPSA1OwotICAgIGNvbnN0IEdMZmxvYXQga0NvbG9yQTBbXSA9
IHswLjBmLCAwLjFmLCAwLjBmLCAwLjFmfTsKLSAgICBjb25zdCBHTGZsb2F0IGtDb2xvckExW10g
PSB7MC4wZiwgMS4wZiwgMC4wZiwgMS4wZn07Ci0gICAgY29uc3QgR0xmbG9hdCBrQ29sb3JBMltd
ID0gezAuMGYsIDAuOGYsIDAuMGYsIDAuOGZ9OwotICAgIGNvbnN0IEdMZmxvYXQga0NvbG9yQTNb
XSA9IHswLjBmLCAwLjVmLCAwLjBmLCAwLjVmfTsKLSAgICBjb25zdCBHTGZsb2F0IGtDb2xvcltd
ID0gezAuMmYsIDAuMmYsIDAuMmYsIDAuMmZ9OwotICAgIGNvbnN0IEdMZmxvYXQga0ZpbGxDb29y
ZHNbNl0gPSB7NTkuMGYsIDUwLjBmLCA1MC4wZiwgMjguMGYsIDY2LjBmLCA2My4wZn07Ci0KLSAg
ICBjb21waWxlUHJvZ3JhbShrVmVydGV4U2hhZGVyU291cmNlLCBrRnJhZ21lbnRTaGFkZXJTb3Vy
Y2UpOwotCi0gICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0s
IGtVbnVzZWRMb2NhdGlvbiwgImNvbG9yQVswXSIpOwotICAgIGdsQmluZEZyYWdtZW50SW5wdXRM
b2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JBMUxvY2F0aW9uLCAiY29sb3JBWzFdIik7
Ci0gICAgZ2xCaW5kRnJhZ21lbnRJbnB1dExvY2F0aW9uQ0hST01JVU0obVByb2dyYW0sIGtDb2xv
ckEyTG9jYXRpb24sICJjb2xvckFbMl0iKTsKLSAgICBnbEJpbmRGcmFnbWVudElucHV0TG9jYXRp
b25DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yQTNMb2NhdGlvbiwgImNvbG9yQVszXSIpOwotICAg
IGdsQmluZEZyYWdtZW50SW5wdXRMb2NhdGlvbkNIUk9NSVVNKG1Qcm9ncmFtLCBrQ29sb3JBMExv
Y2F0aW9uLCAiY29sb3JBIik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBiaW5k
UHJvZ3JhbSgpOwotICAgIEFTU0VSVF9UUlVFKGxpbmtQcm9ncmFtKCkgPT0gdHJ1ZSk7Ci0KLSAg
ICBnbFVuaWZvcm1NYXRyaXg0ZnYoa1ZpZXdNYXRyaXhMb2NhdGlvbiwgMSwgR0xfRkFMU0UsIGtQ
cm9qZWN0aW9uTWF0cml4KTsKLQotICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hS
T01JVU0obVByb2dyYW0sIGtDb2xvckEwTG9jYXRpb24sIEdMX0NPTlNUQU5UX0NIUk9NSVVNLCA0
LCBrQ29sb3JBMCk7Ci0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTSht
UHJvZ3JhbSwga0NvbG9yQTFMb2NhdGlvbiwgR0xfQ09OU1RBTlRfQ0hST01JVU0sIDQsIGtDb2xv
ckExKTsKLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFt
LCBrQ29sb3JBMkxvY2F0aW9uLCBHTF9DT05TVEFOVF9DSFJPTUlVTSwgNCwga0NvbG9yQTIpOwot
ICAgIGdsUHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIGtDb2xv
ckEzTG9jYXRpb24sIEdMX0NPTlNUQU5UX0NIUk9NSVVNLCA0LCBrQ29sb3JBMyk7Ci0gICAgZ2xQ
cm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yRnJhZ21l
bnRJbnB1dExvY2F0aW9uLAotICAgICAgICBHTF9DT05TVEFOVF9DSFJPTUlVTSwgNCwga0NvbG9y
KTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdUZXN0UGF0dGVybigpOwot
Ci0gICAgZm9yIChpbnQgaiA9IDA7IGogPCBrVGVzdFJvd3M7ICsraikKLSAgICB7Ci0gICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwga1Rlc3RDb2x1bW5zOyArK2kpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGsgPSAwOyBrIDwgQXJyYXlTaXplKGtGaWxsQ29vcmRzKTsgayAr
PSAyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0IGZ4ID0ga0Zp
bGxDb29yZHNba107Ci0gICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgZnkgPSBrRmlsbENvb3Jk
c1trICsgMV07Ci0gICAgICAgICAgICAgICAgY29uc3QgZmxvYXQgcHggPSBzdGF0aWNfY2FzdDxm
bG9hdD4oaSAqIGtTaGFwZVdpZHRoKTsKLSAgICAgICAgICAgICAgICBjb25zdCBmbG9hdCBweSA9
IHN0YXRpY19jYXN0PGZsb2F0PihqICoga1NoYXBlSGVpZ2h0KTsKLQotICAgICAgICAgICAgICAg
IGFuZ2xlOjpHTENvbG9yIGNvbG9yOwotICAgICAgICAgICAgICAgIGNvbG9yLlIgPSAwOwotICAg
ICAgICAgICAgICAgIGNvbG9yLkcgPSAyNTU7Ci0gICAgICAgICAgICAgICAgY29sb3IuQiA9IDA7
Ci0gICAgICAgICAgICAgICAgY29sb3IuQSA9IDI1NTsKLSAgICAgICAgICAgICAgICBDaGVja1Bp
eGVscyhzdGF0aWNfY2FzdDxHTGludD4ocHggKyBmeCksIHN0YXRpY19jYXN0PEdMaW50PihweSAr
IGZ5KSwgMSwgMSwgMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLVRFU1RfUChDSFJPTUlVTVBhdGhSZW5k
ZXJpbmdXaXRoVGV4dHVyaW5nVGVzdCwgVW51c2VkRnJhZ21lbnRJbnB1dFVwZGF0ZSkKLXsKLSAg
ICBpZiAoIWlzQXBwbGljYWJsZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgLy8gY2xhbmctZm9y
bWF0IG9mZgotICAgIGNvbnN0IGNoYXIqIGtWZXJ0ZXhTaGFkZXJTdHJpbmcgPQotICAgICAgICAi
YXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIK
LSAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uO1xuIgotICAgICAgICAifSI7Ci0K
LSAgICBjb25zdCBjaGFyKiBrRnJhZ21lbnRTaGFkZXJTdHJpbmcgPQotICAgICAgICAicHJlY2lz
aW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICJ1bmlmb3JtIHZlYzQgdV9jb2xvckE7XG4i
Ci0gICAgICAgICJ1bmlmb3JtIGZsb2F0IHVfY29sb3JVO1xuIgotICAgICAgICAidW5pZm9ybSB2
ZWM0IHVfY29sb3JDO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBn
bF9GcmFnQ29sb3IgPSB1X2NvbG9yQSArIHVfY29sb3JDO1xuIgotICAgICAgICAifSI7Ci0gICAg
Ly8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICBjb25zdCBHTGludCBrQ29sb3JVTG9jYXRpb24gPSAx
OwotICAgIGNvbnN0IEdMaW50IGtOb25leGlzdGluZ0xvY2F0aW9uID0gNTsKLSAgICBjb25zdCBH
TGludCBrVW5ib3VuZExvY2F0aW9uID0gNjsKLQotICAgIGNvbXBpbGVQcm9ncmFtKGtWZXJ0ZXhT
aGFkZXJTdHJpbmcsIGtGcmFnbWVudFNoYWRlclN0cmluZyk7Ci0KLSAgICBnbEJpbmRGcmFnbWVu
dElucHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yVUxvY2F0aW9uLCAidV9jb2xv
clUiKTsKLQotICAgIC8vIFRoZSBub24tZXhpc3RpbmcgaW5wdXQgc2hvdWxkIGJlaGF2ZSBsaWtl
IGV4aXN0aW5nIGJ1dCBvcHRpbWl6ZWQgYXdheSBpbnB1dC4KLSAgICBnbEJpbmRGcmFnbWVudElu
cHV0TG9jYXRpb25DSFJPTUlVTShtUHJvZ3JhbSwga05vbmV4aXN0aW5nTG9jYXRpb24sICJub25l
eGlzdGluZyIpOwotCi0gICAgLy8gTGV0IEEgYW5kIEMgYmUgYXNzaWduZWQgYXV0b21hdGljIGxv
Y2F0aW9ucy4KLSAgICBBU1NFUlRfVFJVRShsaW5rUHJvZ3JhbSgpID09IHRydWUpOwotCi0gICAg
Y29uc3QgR0xmbG9hdCBrQ29sb3JbMTZdID0ge307Ci0KLSAgICAvLyBObyBlcnJvcnMgb24gYm91
bmQgbG9jYXRpb25zLCBzaW5jZSBjYWxsZXIgZG9lcyBub3Qga25vdwotICAgIC8vIGlmIHRoZSBk
cml2ZXIgb3B0aW1pemVzIHRoZW0gYXdheSBvciBub3QuCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdt
ZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwga0NvbG9yVUxvY2F0aW9uLCBHTF9DT05TVEFO
VF9DSFJPTUlVTSwgMSwga0NvbG9yKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAg
IC8vIE5vIGVycm9ycyBvbiBib3VuZCBsb2NhdGlvbnMgb2YgbmFtZXMgdGhhdCBkbyBub3QgZXhp
c3QKLSAgICAvLyBpbiB0aGUgc2hhZGVyLiBPdGhlcndpc2UgaXQgd291bGQgYmUgaW5jb25zaXN0
ZW50IHdydCB0aGUKLSAgICAvLyBvcHRpbWl6YXRpb24gY2FzZS4KLSAgICBnbFByb2dyYW1QYXRo
RnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBrTm9uZXhpc3RpbmdMb2NhdGlvbiwg
R0xfQ09OU1RBTlRfQ0hST01JVU0sIDEsIGtDb2xvcik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICAvLyBUaGUgYWJvdmUgYXJlIGVxdWFsIHRvIHVwZGF0aW5nIC0xLgotICAgIGds
UHJvZ3JhbVBhdGhGcmFnbWVudElucHV0R2VuQ0hST01JVU0obVByb2dyYW0sIC0xLCBHTF9DT05T
VEFOVF9DSFJPTUlVTSwgMSwga0NvbG9yKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQot
ICAgIC8vIE5vIGVycm9ycyB3aGVuIHVwZGF0aW5nIHdpdGggb3RoZXIgdHlwZSBlaXRoZXIuCi0g
ICAgLy8gVGhlIHR5cGUgY2FuIG5vdCBiZSBrbm93biB3aXRoIHRoZSBub24tZXhpc3RpbmcgY2Fz
ZS4KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Qcm9ncmFtLCBr
Q29sb3JVTG9jYXRpb24sIEdMX0NPTlNUQU5UX0NIUk9NSVVNLCA0LCBrQ29sb3IpOwotICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xQcm9ncmFtUGF0aEZyYWdtZW50SW5wdXRHZW5D
SFJPTUlVTShtUHJvZ3JhbSwga05vbmV4aXN0aW5nTG9jYXRpb24sIEdMX0NPTlNUQU5UX0NIUk9N
SVVNLCA0LCBrQ29sb3IpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xQcm9n
cmFtUGF0aEZyYWdtZW50SW5wdXRHZW5DSFJPTUlVTShtUHJvZ3JhbSwgLTEsIEdMX0NPTlNUQU5U
X0NIUk9NSVVNLCA0LCBrQ29sb3IpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAg
Ly8gVXBkYXRpbmcgYW4gdW5ib3VuZCwgbm9uLWV4aXN0aW5nIGxvY2F0aW9uIHN0aWxsIGNhdXNl
cyBhbiBlcnJvci4KLSAgICBnbFByb2dyYW1QYXRoRnJhZ21lbnRJbnB1dEdlbkNIUk9NSVVNKG1Q
cm9ncmFtLCBrVW5ib3VuZExvY2F0aW9uLCBHTF9DT05TVEFOVF9DSFJPTUlVTSwgNCwga0NvbG9y
KTsKLSAgICBBU1NFUlRfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0KLX0g
IC8vIG5hbWVzcGFjZQotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKENIUk9NSVVNUGF0aFJlbmRl
cmluZ1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVT
M19PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwotQU5H
TEVfSU5TVEFOVElBVEVfVEVTVChDSFJPTUlVTVBhdGhSZW5kZXJpbmdEcmF3VGVzdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBF
UzJfT1BFTkdMRVMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7Ci0KLUFOR0xFX0lOU1RBTlRJQVRF
X1RFU1QoQ0hST01JVU1QYXRoUmVuZGVyaW5nV2l0aFRleHR1cmluZ1Rlc3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09Q
RU5HTEVTKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0
cy9QYnVmZmVyVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xf
dGVzdHMvUGJ1ZmZlclRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjM4
MWUxNDMwMi4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL1BidWZmZXJUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0MyArMCww
IEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotdXNp
bmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1jbGFzcyBQYnVmZmVyVGVzdCA6IHB1YmxpYyBBTkdMRVRl
c3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFBidWZmZXJUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNl
dFdpbmRvd1dpZHRoKDUxMik7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCg1MTIpOwotICAgICAg
ICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0g
ICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMo
OCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIFNldFVwKCkKLSAgICB7Ci0gICAgICAgIEFO
R0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2c1NvdXJjZSA9
IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZs
b2F0OwotICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247Ci0gICAgICAgICAgICB2
YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICAgICAg
ICAgICAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7Ci0gICAgICAgICAg
ICAgICAgdGV4Y29vcmQueSA9IDEuMCAtIHRleGNvb3JkLnk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGV4dHVyZUZTU291cmNlID0gU0hB
REVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7
Ci0gICAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7Ci0gICAgICAgICAgICB2YXJ5aW5n
IHZlYzIgdGV4Y29vcmQ7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQp
OwotICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIG1UZXh0dXJlUHJvZ3JhbSA9
IENvbXBpbGVQcm9ncmFtKHZzU291cmNlLCB0ZXh0dXJlRlNTb3VyY2UpOwotICAgICAgICBpZiAo
bVRleHR1cmVQcm9ncmFtID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIEZBSUwoKSA8PCAi
c2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOwotICAgICAgICB9Ci0KLSAgICAgICAgbVRleHR1
cmVVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtVGV4dHVyZVByb2dyYW0s
ICJ0ZXgiKTsKLQotICAgICAgICBFR0xXaW5kb3cgKndpbmRvdyA9IGdldEVHTFdpbmRvdygpOwot
Ci0gICAgICAgIEVHTGludCBzdXJmYWNlVHlwZSA9IDA7Ci0gICAgICAgIGVnbEdldENvbmZpZ0F0
dHJpYih3aW5kb3ctPmdldERpc3BsYXkoKSwgd2luZG93LT5nZXRDb25maWcoKSwgRUdMX1NVUkZB
Q0VfVFlQRSwgJnN1cmZhY2VUeXBlKTsKLSAgICAgICAgbVN1cHBvcnRzUGJ1ZmZlcnMgPSAoc3Vy
ZmFjZVR5cGUgJiBFR0xfUEJVRkZFUl9CSVQpICE9IDA7Ci0KLSAgICAgICAgRUdMaW50IGJpbmRU
b1RleHR1cmVSR0JBID0gMDsKLSAgICAgICAgZWdsR2V0Q29uZmlnQXR0cmliKHdpbmRvdy0+Z2V0
RGlzcGxheSgpLCB3aW5kb3ctPmdldENvbmZpZygpLCBFR0xfQklORF9UT19URVhUVVJFX1JHQkEs
ICZiaW5kVG9UZXh0dXJlUkdCQSk7Ci0gICAgICAgIG1TdXBwb3J0c0JpbmRUZXhJbWFnZSA9IChi
aW5kVG9UZXh0dXJlUkdCQSA9PSBFR0xfVFJVRSk7Ci0KLSAgICAgICAgY29uc3QgRUdMaW50IHBC
dWZmZXJBdHRyaWJ1dGVzW10gPQotICAgICAgICB7Ci0gICAgICAgICAgICBFR0xfV0lEVEgsIHN0
YXRpY19jYXN0PEVHTGludD4obVBidWZmZXJTaXplKSwKLSAgICAgICAgICAgIEVHTF9IRUlHSFQs
IHN0YXRpY19jYXN0PEVHTGludD4obVBidWZmZXJTaXplKSwKLSAgICAgICAgICAgIEVHTF9URVhU
VVJFX0ZPUk1BVCwgbVN1cHBvcnRzQmluZFRleEltYWdlID8gRUdMX1RFWFRVUkVfUkdCQSA6IEVH
TF9OT19URVhUVVJFLAotICAgICAgICAgICAgRUdMX1RFWFRVUkVfVEFSR0VULCBtU3VwcG9ydHNC
aW5kVGV4SW1hZ2UgPyBFR0xfVEVYVFVSRV8yRCA6IEVHTF9OT19URVhUVVJFLAotICAgICAgICAg
ICAgRUdMX05PTkUsIEVHTF9OT05FLAotICAgICAgICB9OwotCi0gICAgICAgIG1QYnVmZmVyID0g
ZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2Uod2luZG93LT5nZXREaXNwbGF5KCksIHdpbmRvdy0+Z2V0
Q29uZmlnKCksIHBCdWZmZXJBdHRyaWJ1dGVzKTsKLSAgICAgICAgaWYgKG1TdXBwb3J0c1BidWZm
ZXJzKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlRfTkUobVBidWZmZXIsIEVHTF9OT19T
VVJGQUNFKTsKLSAgICAgICAgICAgIEFTU0VSVF9FR0xfU1VDQ0VTUygpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUX0VRKG1QYnVmZmVyLCBF
R0xfTk9fU1VSRkFDRSk7Ci0gICAgICAgICAgICBBU1NFUlRfRUdMX0VSUk9SKEVHTF9CQURfTUFU
Q0gpOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQot
Ci0gICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlUHJv
Z3JhbShtVGV4dHVyZVByb2dyYW0pOwotCi0gICAgICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0
RUdMV2luZG93KCk7Ci0gICAgICAgIGVnbERlc3Ryb3lTdXJmYWNlKHdpbmRvdy0+Z2V0RGlzcGxh
eSgpLCBtUGJ1ZmZlcik7Ci0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwotICAgIH0K
LQotICAgIEdMdWludCBtVGV4dHVyZVByb2dyYW07Ci0gICAgR0xpbnQgbVRleHR1cmVVbmlmb3Jt
TG9jYXRpb247Ci0KLSAgICBjb25zdCBzaXplX3QgbVBidWZmZXJTaXplID0gMzI7Ci0gICAgRUdM
U3VyZmFjZSBtUGJ1ZmZlcjsKLSAgICBib29sIG1TdXBwb3J0c1BidWZmZXJzOwotICAgIGJvb2wg
bVN1cHBvcnRzQmluZFRleEltYWdlOwotfTsKLQotLy8gVGVzdCBjbGVhcmluZyBhIFBidWZmZXIg
YW5kIGNoZWNraW5nIHRoZSBjb2xvciBpcyBjb3JyZWN0Ci1URVNUX1AoUGJ1ZmZlclRlc3QsIENs
ZWFyaW5nKQotewotICAgIGlmICghbVN1cHBvcnRzUGJ1ZmZlcnMpCi0gICAgewotICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIFBidWZmZXJzIGFyZSBub3Qgc3VwcG9y
dGVkLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgRUdMV2lu
ZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLQotICAgIC8vIENsZWFyIHRoZSB3aW5kb3cg
c3VyZmFjZSB0byBibHVlIGFuZCB2ZXJpZnkKLSAgICBlZ2xNYWtlQ3VycmVudCh3aW5kb3ctPmdl
dERpc3BsYXkoKSwgd2luZG93LT5nZXRTdXJmYWNlKCksIHdpbmRvdy0+Z2V0U3VyZmFjZSgpLCB3
aW5kb3ctPmdldENvbnRleHQoKSk7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBn
bENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMS4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xP
Ul9CVUZGRVJfQklUKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfUElY
RUxfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMCwgMCwg
MjU1LCAyNTUpOwotCi0gICAgLy8gQXBwbHkgdGhlIFBidWZmZXIgYW5kIGNsZWFyIGl0IHRvIHB1
cnBsZSBhbmQgdmVyaWZ5Ci0gICAgZWdsTWFrZUN1cnJlbnQod2luZG93LT5nZXREaXNwbGF5KCks
IG1QYnVmZmVyLCBtUGJ1ZmZlciwgd2luZG93LT5nZXRDb250ZXh0KCkpOwotICAgIEFTU0VSVF9F
R0xfU1VDQ0VTUygpOwotCi0gICAgZ2xWaWV3cG9ydCgwLCAwLCBzdGF0aWNfY2FzdDxHTHNpemVp
PihtUGJ1ZmZlclNpemUpLCBzdGF0aWNfY2FzdDxHTHNpemVpPihtUGJ1ZmZlclNpemUpKTsKLSAg
ICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMS4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9D
T0xPUl9CVUZGRVJfQklUKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1Rf
UElYRUxfRVEoc3RhdGljX2Nhc3Q8R0xpbnQ+KG1QYnVmZmVyU2l6ZSkgLyAyLCBzdGF0aWNfY2Fz
dDxHTGludD4obVBidWZmZXJTaXplKSAvIDIsIDI1NSwKLSAgICAgICAgICAgICAgICAgICAgMCwg
MjU1LCAyNTUpOwotCi0gICAgLy8gUmViaW5kIHRoZSB3aW5kb3cgc3VyZmFjZSBhbmQgdmVyaWZ5
IHRoYXQgaXQgaXMgc3RpbGwgYmx1ZQotICAgIGVnbE1ha2VDdXJyZW50KHdpbmRvdy0+Z2V0RGlz
cGxheSgpLCB3aW5kb3ctPmdldFN1cmZhY2UoKSwgd2luZG93LT5nZXRTdXJmYWNlKCksIHdpbmRv
dy0+Z2V0Q29udGV4dCgpKTsKLSAgICBBU1NFUlRfRUdMX1NVQ0NFU1MoKTsKLSAgICBFWFBFQ1Rf
UElYRUxfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMCwg
MCwgMjU1LCAyNTUpOwotfQotCi0vLyBCaW5kIHRoZSBQYnVmZmVyIHRvIGEgdGV4dHVyZSBhbmQg
dmVyaWZ5IGl0IHJlbmRlcnMgY29ycmVjdGx5Ci1URVNUX1AoUGJ1ZmZlclRlc3QsIEJpbmRUZXhJ
bWFnZSkKLXsKLSAgICBpZiAoIW1TdXBwb3J0c1BidWZmZXJzKQotICAgIHsKLSAgICAgICAgc3Rk
Ojpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBQYnVmZmVycyBhcmUgbm90IHN1cHBvcnRl
ZC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICghbVN1
cHBvcnRzQmluZFRleEltYWdlKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgYmVjYXVzZSBQYnVmZmVyIGRvZXMgbm90IHN1cHBvcnQgYmluZGluZyB0byBSR0JBIHRl
eHR1cmVzLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgRUdM
V2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLQotICAgIC8vIEFwcGx5IHRoZSBQYnVm
ZmVyIGFuZCBjbGVhciBpdCB0byBwdXJwbGUKLSAgICBlZ2xNYWtlQ3VycmVudCh3aW5kb3ctPmdl
dERpc3BsYXkoKSwgbVBidWZmZXIsIG1QYnVmZmVyLCB3aW5kb3ctPmdldENvbnRleHQoKSk7Ci0g
ICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBnbFZpZXdwb3J0KDAsIDAsIHN0YXRpY19j
YXN0PEdMc2l6ZWk+KG1QYnVmZmVyU2l6ZSksIHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1QYnVmZmVy
U2l6ZSkpOwotICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAwLjBmLCAxLjBmLCAxLjBmKTsKLSAgICBn
bENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgRVhQRUNUX1BJWEVMX0VRKHN0YXRpY19jYXN0PEdMaW50PihtUGJ1ZmZlclNpemUpIC8g
Miwgc3RhdGljX2Nhc3Q8R0xpbnQ+KG1QYnVmZmVyU2l6ZSkgLyAyLCAyNTUsCi0gICAgICAgICAg
ICAgICAgICAgIDAsIDI1NSwgMjU1KTsKLQotICAgIC8vIEFwcGx5IHRoZSB3aW5kb3cgc3VyZmFj
ZQotICAgIGVnbE1ha2VDdXJyZW50KHdpbmRvdy0+Z2V0RGlzcGxheSgpLCB3aW5kb3ctPmdldFN1
cmZhY2UoKSwgd2luZG93LT5nZXRTdXJmYWNlKCksIHdpbmRvdy0+Z2V0Q29udGV4dCgpKTsKLQot
ICAgIC8vIENyZWF0ZSBhIHRleHR1cmUgYW5kIGJpbmQgdGhlIFBidWZmZXIgdG8gaXQKLSAgICBH
THVpbnQgdGV4dHVyZSA9IDA7Ci0gICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZSk7Ci0gICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKLSAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBH
TF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICBlZ2xCaW5kVGV4SW1hZ2Uod2luZG93LT5nZXREaXNwbGF5
KCksIG1QYnVmZmVyLCBFR0xfQkFDS19CVUZGRVIpOwotICAgIGdsVmlld3BvcnQoMCwgMCwgZ2V0
V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VT
UygpOwotCi0gICAgLy8gRHJhdyBhIHF1YWQgYW5kIHZlcmlmeSB0aGF0IGl0IGlzIHB1cnBsZQot
ICAgIGdsVXNlUHJvZ3JhbShtVGV4dHVyZVByb2dyYW0pOwotICAgIGdsVW5pZm9ybTFpKG1UZXh0
dXJlVW5pZm9ybUxvY2F0aW9uLCAwKTsKLQotICAgIGRyYXdRdWFkKG1UZXh0dXJlUHJvZ3JhbSwg
InBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBV
bmJpbmQgdGhlIHRleHR1cmUKLSAgICBlZ2xSZWxlYXNlVGV4SW1hZ2Uod2luZG93LT5nZXREaXNw
bGF5KCksIG1QYnVmZmVyLCBFR0xfQkFDS19CVUZGRVIpOwotICAgIEFTU0VSVF9FR0xfU1VDQ0VT
UygpOwotCi0gICAgLy8gVmVyaWZ5IHRoYXQgcHVycGxlIHdhcyBkcmF3bgotICAgIEVYUEVDVF9Q
SVhFTF9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCAyNTUs
IDAsIDI1NSwgMjU1KTsKLQotICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleHR1cmUpOwotfQot
Ci0vLyBWZXJpZnkgdGhhdCB3aGVuIGVnbEJpbmQvUmVsZWFzZVRleEltYWdlIGFyZSBjYWxsZWQs
IHRoZSB0ZXh0dXJlIGltYWdlcyBhcmUgZnJlZWQgYW5kIHRoZWlyCi0vLyBzaXplIGluZm9ybWF0
aW9uIGlzIGNvcnJlY3RseSB1cGRhdGVkLgotVEVTVF9QKFBidWZmZXJUZXN0LCBUZXh0dXJlU2l6
ZVJlc2V0KQotewotICAgIGlmICghbVN1cHBvcnRzUGJ1ZmZlcnMpCi0gICAgewotICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIFBidWZmZXJzIGFyZSBub3Qgc3VwcG9y
dGVkLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFt
U3VwcG9ydHNCaW5kVGV4SW1hZ2UpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qg
c2tpcHBlZCBiZWNhdXNlIFBidWZmZXIgZG9lcyBub3Qgc3VwcG9ydCBiaW5kaW5nIHRvIFJHQkEg
dGV4dHVyZXMuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBH
THVpbnQgdGV4dHVyZSA9IDA7Ci0gICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZSk7Ci0gICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKLSAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBH
TF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFVzZVByb2dyYW0obVRleHR1cmVQcm9ncmFtKTsKLSAg
ICBnbFVuaWZvcm0xaShtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiwgMCk7Ci0KLSAgICAvLyBGaWxs
IHRoZSB0ZXh0dXJlIHdpdGggd2hpdGUgcGl4ZWxzCi0gICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4g
d2hpdGVQaXhlbHMobVBidWZmZXJTaXplICogbVBidWZmZXJTaXplICogNCwgMjU1KTsKLSAgICBn
bFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgc3RhdGljX2Nhc3Q8R0xzaXpl
aT4obVBidWZmZXJTaXplKSwKLSAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8R0xzaXplaT4o
bVBidWZmZXJTaXplKSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgJndoaXRlUGl4ZWxz
WzBdKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIERyYXcgdGhlIHdoaXRl
IHRleHR1cmUgYW5kIHZlcmlmeSB0aGF0IHRoZSBwaXhlbHMgYXJlIGNvcnJlY3QKLSAgICBkcmF3
UXVhZChtVGV4dHVyZVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVDVF9QSVhF
TF9FUSgwLCAwLCAyNTUsIDI1NSwgMjU1LCAyNTUpOwotCi0gICAgLy8gQmluZCB0aGUgRUdMIHN1
cmZhY2UgYW5kIGRyYXcgd2l0aCBpdCwgcmVzdWx0cyBhcmUgdW5kZWZpbmVkIHNpbmNlIG5vdGhp
bmcgaGFzCi0gICAgLy8gYmVlbiB3cml0dGVuIHRvIGl0Ci0gICAgRUdMV2luZG93ICp3aW5kb3cg
PSBnZXRFR0xXaW5kb3coKTsKLSAgICBlZ2xCaW5kVGV4SW1hZ2Uod2luZG93LT5nZXREaXNwbGF5
KCksIG1QYnVmZmVyLCBFR0xfQkFDS19CVUZGRVIpOwotICAgIGRyYXdRdWFkKG1UZXh0dXJlUHJv
Z3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICAvLyBDbGVhciB0aGUgYmFjayBidWZmZXIgdG8gYSB1bmlxdWUgY29sb3IgKGdyZWVuKQotICAg
IGdsQ2xlYXJDb2xvcigwLjBmLCAxLjBmLCAwLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAwLCAyNTUsIDAsIDI1
NSk7Ci0KLSAgICAvLyBVbmJpbmQgdGhlIEVHTCBzdXJmYWNlIGFuZCB0cnkgdG8gZHJhdyB3aXRo
IHRoZSB0ZXh0dXJlIGFnYWluLCB0aGUgdGV4dHVyZSdzIHNpemUgc2hvdWxkCi0gICAgLy8gbm93
IGJlIHplcm8gYW5kIGluY29tcGxldGUgc28gdGhlIGJhY2sgYnVmZmVyIHNob3VsZCBiZSBibGFj
awotICAgIGVnbFJlbGVhc2VUZXhJbWFnZSh3aW5kb3ctPmdldERpc3BsYXkoKSwgbVBidWZmZXIs
IEVHTF9CQUNLX0JVRkZFUik7Ci0gICAgZHJhd1F1YWQobVRleHR1cmVQcm9ncmFtLCAicG9zaXRp
b24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwgMCwgMCwgMjU1KTsKLX0K
LQotLy8gQmluZCBhIFBidWZmZXIsIHJlZGVmaW5lIHRoZSB0ZXh0dXJlLCBhbmQgdmVyaWZ5IGl0
IHJlbmRlcnMgY29ycmVjdGx5Ci1URVNUX1AoUGJ1ZmZlclRlc3QsIEJpbmRUZXhJbWFnZUFuZFJl
ZGVmaW5lVGV4dHVyZSkKLXsKLSAgICBpZiAoIW1TdXBwb3J0c1BidWZmZXJzKQotICAgIHsKLSAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBQYnVmZmVycyBhcmUgbm90
IHN1cHBvcnRlZC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmICghbVN1cHBvcnRzQmluZFRleEltYWdlKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBQYnVmZmVyIGRvZXMgbm90IHN1cHBvcnQgYmluZGluZyB0
byBSR0JBIHRleHR1cmVzLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgRUdMV2luZG93ICp3aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLQotICAgIC8vIEFwcGx5
IHRoZSBQYnVmZmVyIGFuZCBjbGVhciBpdCB0byBwdXJwbGUKLSAgICBlZ2xNYWtlQ3VycmVudCh3
aW5kb3ctPmdldERpc3BsYXkoKSwgbVBidWZmZXIsIG1QYnVmZmVyLCB3aW5kb3ctPmdldENvbnRl
eHQoKSk7Ci0gICAgQVNTRVJUX0VHTF9TVUNDRVNTKCk7Ci0KLSAgICBnbFZpZXdwb3J0KDAsIDAs
IHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1QYnVmZmVyU2l6ZSksIHN0YXRpY19jYXN0PEdMc2l6ZWk+
KG1QYnVmZmVyU2l6ZSkpOwotICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAwLjBmLCAxLjBmLCAxLjBm
KTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotCi0gICAgRVhQRUNUX1BJWEVMX0VRKHN0YXRpY19jYXN0PEdMaW50PihtUGJ1ZmZl
clNpemUpIC8gMiwgc3RhdGljX2Nhc3Q8R0xpbnQ+KG1QYnVmZmVyU2l6ZSkgLyAyLCAyNTUsCi0g
ICAgICAgICAgICAgICAgICAgIDAsIDI1NSwgMjU1KTsKLQotICAgIC8vIEFwcGx5IHRoZSB3aW5k
b3cgc3VyZmFjZQotICAgIGVnbE1ha2VDdXJyZW50KHdpbmRvdy0+Z2V0RGlzcGxheSgpLCB3aW5k
b3ctPmdldFN1cmZhY2UoKSwgd2luZG93LT5nZXRTdXJmYWNlKCksIHdpbmRvdy0+Z2V0Q29udGV4
dCgpKTsKLQotICAgIC8vIENyZWF0ZSBhIHRleHR1cmUgYW5kIGJpbmQgdGhlIFBidWZmZXIgdG8g
aXQKLSAgICBHTHVpbnQgdGV4dHVyZSA9IDA7Ci0gICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVy
ZSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKLSAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFS
RVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdf
RklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0g
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBlZ2xCaW5kVGV4SW1hZ2Uod2luZG93LT5n
ZXREaXNwbGF5KCksIG1QYnVmZmVyLCBFR0xfQkFDS19CVUZGRVIpOwotICAgIGdsVmlld3BvcnQo
MCwgMCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgIEFTU0VSVF9F
R0xfU1VDQ0VTUygpOwotCi0gICAgLy8gUmVkZWZpbmUgdGhlIHRleHR1cmUKLSAgICB1bnNpZ25l
ZCBpbnQgcGl4ZWxWYWx1ZSA9IDB4RkZGRjAwRkY7Ci0gICAgc3RkOjp2ZWN0b3I8dW5zaWduZWQg
aW50PiBwaXhlbERhdGEoZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgpLCBwaXhl
bFZhbHVlKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgZ2V0
V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsICZwaXhlbERhdGFbMF0pOwotCi0gICAgLy8gRHJhdyBhIHF1YWQgYW5kIHZlcmlmeSB0
aGF0IGl0IGlzIG1hZ2VudGEKLSAgICBnbFVzZVByb2dyYW0obVRleHR1cmVQcm9ncmFtKTsKLSAg
ICBnbFVuaWZvcm0xaShtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiwgMCk7Ci0KLSAgICBkcmF3UXVh
ZChtVGV4dHVyZVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVDVF9HTF9OT19F
UlJPUigpOwotCi0gICAgLy8gVmVyaWZ5IHRoYXQgbWFnZW50YSB3YXMgZHJhd24KLSAgICBFWFBF
Q1RfUElYRUxfRVEoZ2V0V2luZG93V2lkdGgoKSAvIDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwg
MjU1LCAwLCAyNTUsIDI1NSk7Ci0KLSAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXh0dXJlKTsK
LX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdo
aWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3Vs
ZCBiZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoUGJ1ZmZlclRlc3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAgICAg
IEVTMl9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9XQVJQKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgIEVTMl9EM0QxMV9SRUZFUkVOQ0UoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09Q
RU5HTEVTKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL1BvaW50U3ByaXRlc1Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL1BvaW50U3ByaXRlc1Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyMDQ1ZTQ4Y2NhYS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1BvaW50U3ByaXRlc1Rlc3QuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNTI2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBTb21lIG9mIHRoZSBwb2lu
dHNwcml0ZSB0ZXN0cyBiZWxvdyB3ZXJlIHBvcnRlZCBmcm9tIEtocm9ub3MgV2ViR0wKLS8vIGNv
bmZvcm1hbmNlIHRlc3Qgc3VpdGUuCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5o
IgotCi0jaW5jbHVkZSA8Y21hdGg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotY2xhc3Mg
UG9pbnRTcHJpdGVzVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAg
IGNvbnN0IGludCB3aW5kb3dXaWR0aCA9IDI1NjsKLSAgICBjb25zdCBpbnQgd2luZG93SGVpZ2h0
ID0gMjU2OwotICAgIFBvaW50U3ByaXRlc1Rlc3QoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93
V2lkdGgod2luZG93V2lkdGgpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQod2luZG93SGVpZ2h0
KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5C
aXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmln
QWxwaGFCaXRzKDgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCi0gICAgewot
ICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0gICAgfQotCi0gICAgZmxvYXQgczJwKGZsb2F0
IHMpCi0gICAgewotICAgICAgICByZXR1cm4gKHMgKyAxLjBmKSAqIDAuNWYgKiAoR0xmbG9hdCl3
aW5kb3dXaWR0aDsKLSAgICB9Ci19OwotCi0vLyBDaGVja3MgZ2xfUG9pbnRDb29yZCBhbmQgZ2xf
UG9pbnRTaXplCi0vLyBodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS93ZWJnbC9zZGsv
dGVzdHMvY29uZm9ybWFuY2UvZ2xzbC92YXJpYWJsZXMvZ2wtcG9pbnRjb29yZC5odG1sCi1URVNU
X1AoUG9pbnRTcHJpdGVzVGVzdCwgUG9pbnRDb29yZEFuZFBvaW50U2l6ZUNvbXBsaWFuY2UpCi17
Ci0gICAgLy8gVE9ETyhqbWFkaWxsKTogZmlndXJlIG91dCB3aHkgdGhpcyBmYWlscwotICAgIGlm
IChJc0ludGVsKCkgJiYgR2V0UGFyYW0oKSA9PSBFUzJfRDNEOSgpKQotICAgIHsKLSAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgZHVlIHRvIGZhaWx1cmVzLiIgPDwg
c3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgZnMgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDsKLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xfRnJh
Z0NvbG9yID0gdmVjNCgKLSAgICAgICAgICAgICAgICBnbF9Qb2ludENvb3JkLngsCi0gICAgICAg
ICAgICAgICAgZ2xfUG9pbnRDb29yZC55LAotICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAg
ICAgICAgMSk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgdnMg
PSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBhdHRyaWJ1dGUgdmVjNCB2UG9zaXRpb247
Ci0gICAgICAgIHVuaWZvcm0gZmxvYXQgdVBvaW50U2l6ZTsKLSAgICAgICAgdm9pZCBtYWluKCkK
LSAgICAgICAgewotICAgICAgICAgICAgZ2xfUG9pbnRTaXplID0gdVBvaW50U2l6ZTsKLSAgICAg
ICAgICAgIGdsX1Bvc2l0aW9uID0gdlBvc2l0aW9uOwotICAgICAgICB9Ci0gICAgKTsKLQotICAg
IEdMdWludCBwcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnMsIGZzKTsKLSAgICBBU1NFUlRfTkUo
cHJvZ3JhbSwgMHUpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xVc2VQcm9n
cmFtKHByb2dyYW0pOwotCi0gICAgR0xmbG9hdCBwb2ludFNpemVSYW5nZVsyXSA9IHt9OwotICAg
IGdsR2V0RmxvYXR2KEdMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRSwgcG9pbnRTaXplUmFuZ2Up
OwotCi0gICAgR0xmbG9hdCBtYXhQb2ludFNpemUgPSBwb2ludFNpemVSYW5nZVsxXTsKLQotICAg
IEFTU0VSVF9UUlVFKG1heFBvaW50U2l6ZSA+PSAxKTsKLSAgICBtYXhQb2ludFNpemUgPSBmbG9v
cmYobWF4UG9pbnRTaXplKTsKLSAgICBBU1NFUlRfVFJVRSgoaW50KW1heFBvaW50U2l6ZSAlIDEg
PT0gMCk7Ci0KLSAgICBtYXhQb2ludFNpemUgPSBzdGQ6Om1pbihtYXhQb2ludFNpemUsIDY0LjBm
KTsKLSAgICBHTGZsb2F0IHBvaW50V2lkdGggPSBtYXhQb2ludFNpemUgLyB3aW5kb3dXaWR0aDsK
LSAgICBHTGludCBzdGVwID0gc3RhdGljX2Nhc3Q8R0xpbnQ+KGZsb29yZihtYXhQb2ludFNpemUg
LyA0KSk7Ci0gICAgR0xpbnQgcG9pbnRTdGVwID0gc3RkOjptYXg8R0xpbnQ+KDEsIHN0ZXApOwot
Ci0gICAgR0xpbnQgcG9pbnRTaXplTG9jID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwg
InVQb2ludFNpemUiKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsVW5pZm9y
bTFmKHBvaW50U2l6ZUxvYywgbWF4UG9pbnRTaXplKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKLQotICAgIEdMZmxvYXQgcGl4ZWxPZmZzZXQgPSAoKGludCltYXhQb2ludFNpemUgJSAyKSA/
ICgxLjBmIC8gKEdMZmxvYXQpd2luZG93V2lkdGgpIDogMDsKLSAgICBHTHVpbnQgdmVydGV4T2Jq
ZWN0ID0gMDsKLSAgICBnbEdlbkJ1ZmZlcnMoMSwgJnZlcnRleE9iamVjdCk7Ci0gICAgQVNTRVJU
X05FKHZlcnRleE9iamVjdCwgMFUpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAg
Z2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgdmVydGV4T2JqZWN0KTsKLSAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKLQotICAgIEdMZmxvYXQgdGhlUG9pbnRzW10gPSB7IC0wLjVmICsgcGl4
ZWxPZmZzZXQsIC0wLjVmICsgcGl4ZWxPZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAuNWYgKyBwaXhlbE9mZnNldCwgLTAuNWYgKyBwaXhlbE9mZnNldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAtMC41ZiArIHBpeGVsT2Zmc2V0LCAgMC41ZiArIHBpeGVsT2Zmc2V0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjVmICsgcGl4ZWxPZmZzZXQsICAwLjVm
ICsgcGl4ZWxPZmZzZXQgfTsKLQotICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNp
emVvZih0aGVQb2ludHMpLCB0aGVQb2ludHMsIEdMX1NUQVRJQ19EUkFXKTsKLSAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKLQotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7Ci0gICAg
Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgMCk7Ci0K
LSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklUKTsK
LQotICAgIGdsRHJhd0FycmF5cyhHTF9QT0lOVFMsIDAsIDQpOwotICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotCi0gICAgZ2xEZWxldGVCdWZmZXJzKDEsICZ2ZXJ0ZXhPYmplY3QpOwotCi0gICAg
c3RkOjpzdHJpbmcgZGVidWdUZXh0OwotICAgIGZvciAoZmxvYXQgcHkgPSAwOyBweSA8IDI7ICsr
cHkpIHsKLSAgICAgICAgZm9yIChmbG9hdCBweCA9IDA7IHB4IDwgMjsgKytweCkgewotICAgICAg
ICAgICAgZmxvYXQgcG9pbnRYID0gLTAuNWYgKyBweCArIHBpeGVsT2Zmc2V0OwotICAgICAgICAg
ICAgZmxvYXQgcG9pbnRZID0gLTAuNWYgKyBweSArIHBpeGVsT2Zmc2V0OwotICAgICAgICAgICAg
Zm9yIChpbnQgeXkgPSAwOyB5eSA8IG1heFBvaW50U2l6ZTsgeXkgKz0gcG9pbnRTdGVwKSB7Ci0g
ICAgICAgICAgICAgICAgZm9yIChpbnQgeHggPSAwOyB4eCA8IG1heFBvaW50U2l6ZTsgeHggKz0g
cG9pbnRTdGVwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIGZvcm11bGEgZm9yIHMgYW5kIHQg
ZnJvbSBPcGVuR0wgRVMgMi4wIHNwZWMgc2VjdGlvbiAzLjMKLSAgICAgICAgICAgICAgICAgICAg
ZmxvYXQgeHcgPSBzMnAocG9pbnRYKTsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgeXcgPSBz
MnAocG9pbnRZKTsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgdSA9IHh4IC8gbWF4UG9pbnRT
aXplICogMiAtIDE7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IHYgPSB5eSAvIG1heFBvaW50
U2l6ZSAqIDIgLSAxOwotICAgICAgICAgICAgICAgICAgICBpbnQgeGYgPSBzdGF0aWNfY2FzdDxp
bnQ+KGZsb29yZihzMnAocG9pbnRYICsgdSAqIHBvaW50V2lkdGgpKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIGludCB5ZiA9IHN0YXRpY19jYXN0PGludD4oZmxvb3JmKHMycChwb2ludFkgKyB2ICog
cG9pbnRXaWR0aCkpKTsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcyA9IDAuNWYgKyAoeGYg
KyAwLjVmIC0geHcpIC8gbWF4UG9pbnRTaXplOwotICAgICAgICAgICAgICAgICAgICBmbG9hdCB0
ID0gMC41ZiArICh5ZiArIDAuNWYgLSB5dykgLyBtYXhQb2ludFNpemU7Ci0gICAgICAgICAgICAg
ICAgICAgIEdMdWJ5dGUgY29sb3JbNF0gPSB7IHN0YXRpY19jYXN0PEdMdWJ5dGU+KGZsb29yZihz
ICogMjU1KSksIHN0YXRpY19jYXN0PEdMdWJ5dGU+KGZsb29yZigoMSAtIHQpICogMjU1KSksIDAs
IDI1NSB9OwotICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfUElYRUxfTkVBUih4ZiwgeWYsIGNv
bG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0sIGNvbG9yWzNdLCA0KTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS8vIFZlcmlmeSB0aGF0
IGRyYXdpbmcgYSBwb2ludCB3aXRob3V0IGVuYWJsaW5nIGFueSBhdHRyaWJ1dGVzIHN1Y2NlZWRz
Ci0vLyBodHRwczovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS93ZWJnbC9zZGsvdGVzdHMvY29u
Zm9ybWFuY2UvcmVuZGVyaW5nL3BvaW50LW5vLWF0dHJpYnV0ZXMuaHRtbAotVEVTVF9QKFBvaW50
U3ByaXRlc1Rlc3QsIFBvaW50V2l0aG91dEF0dHJpYnV0ZXNDb21wbGlhbmNlKQotewotICAgIC8v
IGNsYW5nLWZvcm1hdCBvZmYKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcyA9IFNIQURFUl9TT1VS
Q0UKLSAgICAoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICB2b2lk
IG1haW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwg
MS4wLCAwLjAsIDEuMCk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgdnMgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICB2b2lkIG1haW4oKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBnbF9Qb2ludFNpemUgPSAyLjA7Ci0gICAgICAgICAgICBnbF9Qb3Np
dGlvbiA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKLSAgICAgICAgfQotICAgICk7Ci0gICAg
Ly8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFt
KHZzLCBmcyk7Ci0gICAgQVNTRVJUX05FKHByb2dyYW0sIDB1KTsKLSAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLQotICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKLQotICAgIGdsRHJhd0FycmF5
cyhHTF9QT0lOVFMsIDAsIDEpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8g
ZXhwZWN0IHRoZSBjZW50ZXIgcGl4ZWwgdG8gYmUgZ3JlZW4KLSAgICBFWFBFQ1RfUElYRUxfRVEo
KHdpbmRvd1dpZHRoIC0gMSkgLyAyLCAod2luZG93SGVpZ2h0IC0gMSkgLyAyLCAwLCAyNTUsIDAs
IDI1NSk7Ci19Ci0KLS8vIFRoaXMgaXMgYSByZWdyZXNzaW9uIHRlc3QgZm9yIGEgZ3JhcGhpY3Mg
ZHJpdmVyIGJ1ZyBhZmZlY3RpbmcgZW5kIGNhcHMgb24gcm9hZHMgaW4gTWFwc0dMCi0vLyBodHRw
czovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS93ZWJnbC9zZGsvdGVzdHMvY29uZm9ybWFuY2Uv
cmVuZGVyaW5nL3BvaW50LXdpdGgtZ2wtcG9pbnRjb29yZC1pbi1mcmFnbWVudC1zaGFkZXIuaHRt
bAotVEVTVF9QKFBvaW50U3ByaXRlc1Rlc3QsIFBvaW50Q29vcmRSZWdyZXNzaW9uVGVzdCkKLXsK
LSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcyA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAg
IHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICB2YXJ5aW5nIHZlYzQgdl9jb2xvcjsK
LSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gSXQgc2VlbXMg
YXMgbG9uZyBhcyB0aGlzIG1hdGhlbWF0aWNhbCBleHByZXNzaW9uIHJlZmVyZW5jZXMKLSAgICAg
ICAgICAgIC8vIGdsX1BvaW50Q29vcmQsIHRoZSBmcmFnbWVudCdzIGNvbG9yIGlzIGluY29ycmVj
dC4KLSAgICAgICAgICAgIHZlYzIgZGlmZiA9IGdsX1BvaW50Q29vcmQgLSB2ZWMyKC41LCAuNSk7
Ci0gICAgICAgICAgICBpZiAobGVuZ3RoKGRpZmYpID4gMC41KQotICAgICAgICAgICAgICAgIGRp
c2NhcmQ7Ci0KLSAgICAgICAgICAgIC8vIFRoZSBwb2ludCBzaG91bGQgYmUgYSBzb2xpZCBjb2xv
ci4KLSAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZfY29sb3I7Ci0gICAgICAgIH0KLSAgICAp
OwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgdnMgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAg
ICAgICB2YXJ5aW5nIHZlYzQgdl9jb2xvcjsKLSAgICAgICAgLy8gVGhlIFggYW5kIFkgY29vcmRp
bmF0ZXMgb2YgdGhlIGNlbnRlciBvZiB0aGUgcG9pbnQuCi0gICAgICAgIGF0dHJpYnV0ZSB2ZWMy
IGFfdmVydGV4OwotICAgICAgICB1bmlmb3JtIGZsb2F0IHVfcG9pbnRTaXplOwotICAgICAgICB2
b2lkIG1haW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9Qb2ludFNpemUgPSB1X3BvaW50
U2l6ZTsKLSAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChhX3ZlcnRleCwgMC4wLCAxLjAp
OwotICAgICAgICAgICAgLy8gVGhlIGNvbG9yIG9mIHRoZSBwb2ludC4KLSAgICAgICAgICAgIHZf
Y29sb3IgPSB2ZWM0KDAuMCwgMS4wLCAwLjAsIDEuMCk7Ci0gICAgICAgIH0KLSAgICApOwotCi0g
ICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2cywgZnMpOwotICAgIEFTU0VSVF9O
RShwcm9ncmFtLCAwdSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFVzZVBy
b2dyYW0ocHJvZ3JhbSk7Ci0KLSAgICBHTGZsb2F0IHBvaW50U2l6ZVJhbmdlWzJdID0ge307Ci0g
ICAgZ2xHZXRGbG9hdHYoR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFLCBwb2ludFNpemVSYW5n
ZSk7Ci0KLSAgICBHTGZsb2F0IG1heFBvaW50U2l6ZSA9IHBvaW50U2l6ZVJhbmdlWzFdOwotCi0g
ICAgQVNTRVJUX1RSVUUobWF4UG9pbnRTaXplID4gMik7Ci0KLSAgICBnbENsZWFyQ29sb3IoMCwg
MCwgMCwgMSk7Ci0gICAgZ2xEaXNhYmxlKEdMX0RFUFRIX1RFU1QpOwotICAgIGdsQ2xlYXIoR0xf
Q09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICBHTGludCBwb2ludFNpemVMb2MgPSBnbEdldFVuaWZv
cm1Mb2NhdGlvbihwcm9ncmFtLCAidV9wb2ludFNpemUiKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKLQotICAgIEdMZmxvYXQgcG9pbnRTaXplID0gc3RkOjptaW48R0xmbG9hdD4oMjAuMGYs
IG1heFBvaW50U2l6ZSk7Ci0gICAgZ2xVbmlmb3JtMWYocG9pbnRTaXplTG9jLCBwb2ludFNpemUp
OwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgR0x1aW50IHZlcnRleE9iamVjdCA9
IDA7Ci0gICAgZ2xHZW5CdWZmZXJzKDEsICZ2ZXJ0ZXhPYmplY3QpOwotICAgIEFTU0VSVF9ORSh2
ZXJ0ZXhPYmplY3QsIDBVKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmlu
ZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIHZlcnRleE9iamVjdCk7Ci0gICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICBHTGZsb2F0IHRoZVBvaW50c1tdID0geyAwLjBmLCAwLjBmIH07Ci0K
LSAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBzaXplb2YodGhlUG9pbnRzKSwgdGhl
UG9pbnRzLCBHTF9TVEFUSUNfRFJBVyk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOwotICAgIGdsVmVydGV4QXR0cmliUG9pbnRl
cigwLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIDApOwotCi0gICAgZ2xEcmF3QXJyYXlzKEdM
X1BPSU5UUywgMCwgMSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBleHBl
Y3QgdGhlIGNlbnRlciBwaXhlbCB0byBiZSBncmVlbgotICAgIEVYUEVDVF9QSVhFTF9FUSgod2lu
ZG93V2lkdGggLSAxKSAvIDIsICh3aW5kb3dIZWlnaHQgLSAxKSAvIDIsIDAsIDI1NSwgMCwgMjU1
KTsKLQotICAgIGdsRGVsZXRlQnVmZmVycygxLCAmdmVydGV4T2JqZWN0KTsKLX0KLQotLy8gVmVy
aWZ5IEdMX1ZFUlRFWF9QUk9HUkFNX1BPSU5UX1NJWkUgaXMgZW5hYmxlZAotLy8gaHR0cHM6Ly93
d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvd2ViZ2wvc2RrL3Rlc3RzL2NvbmZvcm1hbmNlL3JlbmRl
cmluZy9wb2ludC1zaXplLmh0bWwKLVRFU1RfUChQb2ludFNwcml0ZXNUZXN0LCBQb2ludFNpemVF
bmFibGVkQ29tcGxpYW5jZSkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmcyA9IFNIQURFUl9T
T1VSQ0UKLSAgICAoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICB2
YXJ5aW5nIHZlYzQgY29sb3I7Ci0KLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAg
Y29uc3Qgc3RkOjpzdHJpbmcgdnMgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBhdHRy
aWJ1dGUgdmVjMyBwb3M7Ci0gICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGNvbG9ySW47Ci0gICAgICAg
IHVuaWZvcm0gZmxvYXQgcG9pbnRTaXplOwotICAgICAgICB2YXJ5aW5nIHZlYzQgY29sb3I7Ci0K
LSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xfUG9pbnRTaXpl
ID0gcG9pbnRTaXplOwotICAgICAgICAgICAgY29sb3IgPSBjb2xvckluOwotICAgICAgICAgICAg
Z2xfUG9zaXRpb24gPSB2ZWM0KHBvcywgMS4wKTsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICAv
LyBUaGUgV2ViR0wgdGVzdCBpcyBkcmF3biBvbiBhIDJ4MiBjYW52YXMuIEVtdWxhdGUgdGhpcyBi
eSBzZXR0aW5nIGEgMngyIHZpZXdwb3J0LgotICAgIGdsVmlld3BvcnQoMCwgMCwgMiwgMik7Ci0K
LSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzLCBmcyk7Ci0gICAgQVNTRVJU
X05FKHByb2dyYW0sIDB1KTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsVXNl
UHJvZ3JhbShwcm9ncmFtKTsKLQotICAgIGdsRGlzYWJsZShHTF9CTEVORCk7Ci0KLSAgICAvLyBU
aGUgY2hvaWNlIG9mICgwLjQsIDAuNCkgZW5zdXJlcyB0aGF0IHRoZSBjZW50ZXJzIG9mIHRoZSBz
dXJyb3VuZGluZwotICAgIC8vIHBpeGVscyBhcmUgbm90IGNvbnRhaW5lZCB3aXRoaW4gdGhlIHBv
aW50IHdoZW4gaXQgaXMgb2Ygc2l6ZSAxLCBidXQKLSAgICAvLyB0aGF0IHRoZXkgZGVmaW5pdGVs
eSBhcmUgd2hlbiBpdCBpcyBvZiBzaXplIDIuCi0gICAgR0xmbG9hdCB2ZXJ0aWNlc1tdID0geyAw
LjRmLCAwLjRmLCAwLjBmIH07Ci0gICAgR0x1Ynl0ZSBjb2xvcnNbXSA9IHsgMjU1LCAwLCAwLCAy
NTUgfTsKLQotICAgIEdMdWludCB2ZXJ0ZXhPYmplY3QgPSAwOwotICAgIGdsR2VuQnVmZmVycygx
LCAmdmVydGV4T2JqZWN0KTsKLSAgICBBU1NFUlRfTkUodmVydGV4T2JqZWN0LCAwVSk7Ci0gICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVS
LCB2ZXJ0ZXhPYmplY3QpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCdWZm
ZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKHZlcnRpY2VzKSArIHNpemVvZihjb2xvcnMp
LCBOVUxMLCBHTF9TVEFUSUNfRFJBVyk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICBnbEJ1ZmZlclN1YkRhdGEoR0xfQVJSQVlfQlVGRkVSLCAwLCBzaXplb2YodmVydGljZXMpLCB2
ZXJ0aWNlcyk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbEJ1ZmZlclN1YkRh
dGEoR0xfQVJSQVlfQlVGRkVSLCBzaXplb2YodmVydGljZXMpLCBzaXplb2YoY29sb3JzKSwgY29s
b3JzKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQ2xlYXIoR0xfQ09MT1Jf
QlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQpOwotCi0gICAgZ2xWZXJ0ZXhBdHRyaWJQ
b2ludGVyKDAsIDMsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgMCk7Ci0gICAgZ2xFbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheSgwKTsKLQotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcigxLCA0LCBHTF9V
TlNJR05FRF9CWVRFLCBHTF9UUlVFLCAwLCAoR0x2b2lkKilzaXplb2YodmVydGljZXMpKTsKLSAg
ICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDEpOwotCi0gICAgR0xpbnQgcG9pbnRTaXplTG9j
ID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInBvaW50U2l6ZSIpOwotICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xVbmlmb3JtMWYocG9pbnRTaXplTG9jLCAxLjBmKTsK
LSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsRHJhd0FycmF5cyhHTF9QT0lOVFMs
IDAsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KEFycmF5U2l6ZSh2ZXJ0aWNlcykpIC8gMyk7Ci0gICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBUZXN0IHRoZSBwaXhlbHMgYXJvdW5kIHRo
ZSB0YXJnZXQgUmVkIHBpeGVsIHRvIGVuc3VyZQotICAgIC8vIHRoZXkgYXJlIHRoZSBleHBlY3Rl
ZCBjb2xvciB2YWx1ZXMKLSAgICBmb3IgKEdMaW50IHkgPSAwOyB5IDwgMjsgKyt5KQotICAgIHsK
LSAgICAgICAgZm9yIChHTGludCB4ID0gMDsgeCA8IDI7ICsreCkKLSAgICAgICAgewotICAgICAg
ICAgICAgLy8gMXgxIGlzIGV4cGVjdGVkIHRvIGJlIGEgcmVkIHBpeGVsCi0gICAgICAgICAgICAv
LyBBbGwgb3RoZXJzIGFyZSBibGFjawotICAgICAgICAgICAgR0x1Ynl0ZSBleHBlY3RlZENvbG9y
WzRdID0geyAwLCAwLCAwLCAwIH07Ci0gICAgICAgICAgICBpZiAoeCA9PSAxICYmIHkgPT0gMSkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBleHBlY3RlZENvbG9yWzBdID0gMjU1Owot
ICAgICAgICAgICAgICAgIGV4cGVjdGVkQ29sb3JbM10gPSAyNTU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBFWFBFQ1RfUElYRUxfRVEoeCwgeSwgZXhwZWN0ZWRDb2xvclswXSwgZXhwZWN0
ZWRDb2xvclsxXSwgZXhwZWN0ZWRDb2xvclsyXSwgZXhwZWN0ZWRDb2xvclszXSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICBHTGZsb2F0IHBvaW50U2l6ZVJhbmdlWzJdID0ge307Ci0gICAgZ2xH
ZXRGbG9hdHYoR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFLCBwb2ludFNpemVSYW5nZSk7Ci0K
LSAgICBpZiAocG9pbnRTaXplUmFuZ2VbMV0gPj0gMi4wKQotICAgIHsKLSAgICAgICAgLy8gRHJh
dyBhIHBvaW50IG9mIHNpemUgMiBhbmQgdmVyaWZ5IGl0IGZpbGxzIHRoZSBhcHByb3ByaWF0ZSBy
ZWdpb24uCi0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JV
RkZFUl9CSVQpOwotCi0gICAgICAgIGdsVW5pZm9ybTFmKHBvaW50U2l6ZUxvYywgMi4wZik7Ci0g
ICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIGdsRHJhd0FycmF5cyhHTF9Q
T0lOVFMsIDAsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KEFycmF5U2l6ZSh2ZXJ0aWNlcykpIC8gMyk7
Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIC8vIFRlc3QgdGhlIHBp
eGVscyB0byBlbnN1cmUgdGhlIHRhcmdldCBpcyBBTEwgUmVkIHBpeGVscwotICAgICAgICBmb3Ig
KEdMaW50IHkgPSAwOyB5IDwgMjsgKyt5KQotICAgICAgICB7Ci0gICAgICAgICAgICBmb3IgKEdM
aW50IHggPSAwOyB4IDwgMjsgKyt4KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEVY
UEVDVF9QSVhFTF9FUSh4LCB5LCAyNTUsIDAsIDAsIDI1NSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJnZlcnRleE9iamVjdCk7Ci19
Ci0KLS8vIFZlcmlmeSB0aGF0IHJlbmRlcmluZyB3b3JrcyBjb3JyZWN0bHkgd2hlbiBnbF9Qb2lu
dFNpemUgaXMgZGVjbGFyZWQgaW4gYSBzaGFkZXIgYnV0IGlzbid0IHVzZWQKLVRFU1RfUChQb2lu
dFNwcml0ZXNUZXN0LCBQb2ludFNpemVEZWNsYXJlZEJ1dFVudXNlZCkKLXsKLSAgICBjb25zdCBz
dGQ6OnN0cmluZyB2cyA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIGF0dHJpYnV0ZSBo
aWdocCB2ZWM0IHBvc2l0aW9uOwotCi0gICAgICAgIHZvaWQgbWFpbih2b2lkKQotICAgICAgICB7
Ci0gICAgICAgICAgICBnbF9Qb2ludFNpemUgPSAxLjA7Ci0gICAgICAgICAgICBnbF9Qb3NpdGlv
biA9IHBvc2l0aW9uOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IGZzID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgdm9pZCBtYWluKHZvaWQpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4w
KTsKLSAgICAgICAgfQotICAgICk7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9n
cmFtKHZzLCBmcyk7Ci0gICAgQVNTRVJUX05FKHByb2dyYW0sIDB1KTsKLSAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKLQotICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKLSAgICBkcmF3UXVhZChw
cm9ncmFtLCAicG9zaXRpb24iLCAwLjVmLCAxLjBmKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKLQotICAgIC8vIGV4cGVjdCB0aGUgY2VudGVyIHBpeGVsIHRvIGJlIHJlZAotICAgIEVYUEVD
VF9QSVhFTF9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCAy
NTUsIDAsIDAsIDI1NSk7Ci0KLSAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Ci19Ci0KLS8v
IFRlc3QgdG8gY292ZXIgYSBidWcgd2hlcmUgdGhlIEQzRDExIHJhc3Rlcml6ZXIgc3RhdGUgd291
bGQgbm90IGJlIHVwZGF0ZSB3aGVuIHN3aXRjaGluZyBiZXR3ZWVuCi0vLyBkcmF3IHR5cGVzLiAg
VGhpcyBjYXVzZXMgdGhlIGN1bGwgZmFjZSB0byBwb3RlbnRpYWxseSBiZSBpbmNvcnJlY3Qgd2hl
biBkcmF3aW5nIGVtdWxhdGVkIHBvaW50Ci0vLyBzcGl0ZXMuCi1URVNUX1AoUG9pbnRTcHJpdGVz
VGVzdCwgUG9pbnRTcHJpdGVBbHRlcm5hdGluZ0RyYXdUeXBlcykKLXsKLSAgICAvLyBjbGFuZy1m
b3JtYXQgb2ZmCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgcG9pbnRGUyA9IFNIQURFUl9TT1VSQ0UK
LSAgICAoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICB2b2lkIG1h
aW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDAuMCwgMS4w
LCAwLjAsIDEuMCk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
cG9pbnRWUyA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIHZvaWQgbWFpbigpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIGdsX1BvaW50U2l6ZSA9IDE2LjA7Ci0gICAgICAgICAgICBnbF9Q
b3NpdGlvbiA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTsKLSAgICAgICAgfQotICAgICk7Ci0K
LSAgICBjb25zdCBzdGQ6OnN0cmluZyBxdWFkRlMgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAg
ICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjAp
OwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHF1YWRWUyA9IFNI
QURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAg
ICAgICBhdHRyaWJ1dGUgdmVjNCBwb3M7Ci0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zOwotICAgICAgICB9Ci0gICAgKTsKLSAgICAv
LyBjbGFuZy1mb3JtYXQgb24KLQotICAgIEdMdWludCBwb2ludFByb2dyYW0gPSBDb21waWxlUHJv
Z3JhbShwb2ludFZTLCBwb2ludEZTKTsKLSAgICBBU1NFUlRfTkUocG9pbnRQcm9ncmFtLCAwdSk7
Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBHTHVpbnQgcXVhZFByb2dyYW0gPSBD
b21waWxlUHJvZ3JhbShxdWFkVlMsIHF1YWRGUyk7Ci0gICAgQVNTRVJUX05FKHBvaW50UHJvZ3Jh
bSwgMHUpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xFbmFibGUoR0xfQ1VM
TF9GQUNFKTsKLSAgICBnbEN1bGxGYWNlKEdMX0ZST05UKTsKLQotICAgIGNvbnN0IEdMZmxvYXQg
cXVhZFZlcnRpY2VzW10gPSB7Ci0gICAgICAgIC0xLjBmLCAxLjBmLCAwLjVmLCAxLjBmLCAtMS4w
ZiwgMC41ZiwgLTEuMGYsIC0xLjBmLCAwLjVmLAotCi0gICAgICAgIC0xLjBmLCAxLjBmLCAwLjVm
LCAxLjBmLCAxLjBmLCAgMC41ZiwgMS4wZiwgIC0xLjBmLCAwLjVmLAotICAgIH07Ci0KLSAgICBn
bFVzZVByb2dyYW0ocXVhZFByb2dyYW0pOwotICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBn
bEdldEF0dHJpYkxvY2F0aW9uKHF1YWRQcm9ncmFtLCAicG9zIik7Ci0gICAgZ2xWZXJ0ZXhBdHRy
aWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDMsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgcXVh
ZFZlcnRpY2VzKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRp
b24pOwotICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDYpOwotCi0gICAgZ2xVc2VQ
cm9ncmFtKHBvaW50UHJvZ3JhbSk7Ci0gICAgZ2xEcmF3QXJyYXlzKEdMX1BPSU5UUywgMCwgMSk7
Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBleHBlY3QgdGhlIGNlbnRlciBw
aXhlbCB0byBiZSBncmVlbgotICAgIEVYUEVDVF9QSVhFTF9FUShnZXRXaW5kb3dXaWR0aCgpIC8g
MiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCAwLCAyNTUsIDAsIDI1NSk7Ci0KLSAgICBnbERlbGV0
ZVByb2dyYW0ocG9pbnRQcm9ncmFtKTsKLSAgICBnbERlbGV0ZVByb2dyYW0ocXVhZFByb2dyYW0p
OwotfQotCi0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4g
d2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMKLS8vIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3Rz
IHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLS8vCi0vLyBXZSB0ZXN0IG9uIEQzRDExIDlfMyBiZWNh
dXNlIHRoZSBleGlzdGluZyBEM0QxMSBQb2ludFNwcml0ZSBpbXBsZW1lbnRhdGlvbgotLy8gdXNl
cyBHZW9tZXRyeSBTaGFkZXJzIHdoaWNoIGFyZSBub3Qgc3VwcG9ydGVkIGZvciA5XzMuCi0vLyBE
M0Q5IGFuZCBEM0QxMSBhcmUgYWxzbyB0ZXN0ZWQgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zLgot
QU5HTEVfSU5TVEFOVElBVEVfVEVTVChQb2ludFNwcml0ZXNUZXN0LAotICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5H
TEVTKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2ds
X3Rlc3RzL1Byb2dyYW1CaW5hcnlUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9Qcm9ncmFtQmluYXJ5VGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAxMTcyNWZjNWJiLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUHJvZ3JhbUJpbmFyeVRlc3QuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNjM5ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJ0ZXN0X3V0
aWxzL0FOR0xFVGVzdC5oIgotCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHN0ZGludC5o
PgotCi0jaW5jbHVkZSAiRUdMV2luZG93LmgiCi0jaW5jbHVkZSAiT1NXaW5kb3cuaCIKLSNpbmNs
dWRlICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5oIgotCi11c2luZyBuYW1lc3BhY2Ug
YW5nbGU7Ci0KLWNsYXNzIFByb2dyYW1CaW5hcnlUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewot
ICBwcm90ZWN0ZWQ6Ci0gICAgUHJvZ3JhbUJpbmFyeVRlc3QoKQotICAgIHsKLSAgICAgICAgc2V0
V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAg
IHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAg
ICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4
KTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFO
R0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFk
ZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIGF0dHJpYnV0
ZSB2ZWM0IGlucHV0QXR0cmlidXRlOwotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IGlucHV0QXR0cmlidXRlOwotICAg
ICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdt
ZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICB2
b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9
IHZlYzQoMSwwLDAsMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgbVBy
b2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVy
U291cmNlKTsKLSAgICAgICAgaWYgKG1Qcm9ncmFtID09IDApCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOwotICAgICAgICB9Ci0K
LSAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtQnVmZmVyKTsKLSAgICAgICAgZ2xCaW5kQnVmZmVy
KEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7Ci0gICAgICAgIGdsQnVmZmVyRGF0YShHTF9BUlJB
WV9CVUZGRVIsIDEyOCwgTlVMTCwgR0xfU1RBVElDX0RSQVcpOwotICAgICAgICBnbEJpbmRCdWZm
ZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGds
RGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbUJ1
ZmZlcik7Ci0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQotICAgIEdM
aW50IGdldEF2YWlsYWJsZVByb2dyYW1CaW5hcnlGb3JtYXRDb3VudCgpIGNvbnN0Ci0gICAgewot
ICAgICAgICBHTGludCBmb3JtYXRDb3VudDsKLSAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9OVU1f
UFJPR1JBTV9CSU5BUllfRk9STUFUU19PRVMsICZmb3JtYXRDb3VudCk7Ci0gICAgICAgIHJldHVy
biBmb3JtYXRDb3VudDsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVByb2dyYW07Ci0gICAgR0x1aW50
IG1CdWZmZXI7Ci19OwotCi0vLyBUaGlzIHRlc3RzIHRoZSBhc3N1bXB0aW9uIHRoYXQgZmxvYXQg
YXR0cmlicyBvZiBkaWZmZXJlbnQgc2l6ZQotLy8gc2hvdWxkIG5vdCBpbnRlcm5hbGx5IGNhdXNl
IGEgdmVydGV4IHNoYWRlciByZWNvbXBpbGUgKGZvciBjb252ZXJzaW9uKS4KLVRFU1RfUChQcm9n
cmFtQmluYXJ5VGVzdCwgRmxvYXREeW5hbWljU2hhZGVyU2l6ZSkKLXsKLSAgICBpZiAoIWV4dGVu
c2lvbkVuYWJsZWQoIkdMX09FU19nZXRfcHJvZ3JhbV9iaW5hcnkiKSkKLSAgICB7Ci0gICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfT0VTX2dldF9wcm9ncmFtX2Jp
bmFyeSBpcyBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChnZXRBdmFpbGFibGVQcm9ncmFtQmlu
YXJ5Rm9ybWF0Q291bnQoKSA9PSAwKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0
IHNraXBwZWQgYmVjYXVzZSBubyBwcm9ncmFtIGJpbmFyeSBmb3JtYXRzIGFyZSBhdmFpbGFibGUu
IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBnbFVzZVByb2dy
YW0obVByb2dyYW0pOwotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXIp
OwotCi0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDQsIEdMX0ZMT0FULCBHTF9GQUxTRSwg
OCwgTlVMTCk7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKLSAgICBnbERyYXdB
cnJheXMoR0xfUE9JTlRTLCAwLCAxKTsKLQotICAgIEdMaW50IHByb2dyYW1MZW5ndGg7Ci0gICAg
Z2xHZXRQcm9ncmFtaXYobVByb2dyYW0sIEdMX1BST0dSQU1fQklOQVJZX0xFTkdUSF9PRVMsICZw
cm9ncmFtTGVuZ3RoKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZm9yIChH
THNpemVpIHNpemUgPSAxOyBzaXplIDw9IDM7IHNpemUrKykKLSAgICB7Ci0gICAgICAgIGdsVmVy
dGV4QXR0cmliUG9pbnRlcigwLCBzaXplLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDgsIE5VTEwpOwot
ICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KDApOwotICAgICAgICBnbERyYXdBcnJh
eXMoR0xfUE9JTlRTLCAwLCAxKTsKLQotICAgICAgICBHTGludCBuZXdQcm9ncmFtTGVuZ3RoOwot
ICAgICAgICBnbEdldFByb2dyYW1pdihtUHJvZ3JhbSwgR0xfUFJPR1JBTV9CSU5BUllfTEVOR1RI
X09FUywgJm5ld1Byb2dyYW1MZW5ndGgpOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
LSAgICAgICAgRVhQRUNUX0VRKHByb2dyYW1MZW5ndGgsIG5ld1Byb2dyYW1MZW5ndGgpOwotICAg
IH0KLX0KLQotLy8gVGVzdHMgdGhhdCBzd2l0Y2hpbmcgYmV0d2VlbiBzaWduZWQgYW5kIHVuc2ln
bmVkIHVuLW5vcm1hbGl6ZWQgZGF0YSBkb2Vzbid0IHRyaWdnZXIgYSBidWcKLS8vIGluIHRoZSBE
M0QxMSBiYWNrLWVuZC4KLVRFU1RfUChQcm9ncmFtQmluYXJ5VGVzdCwgRHluYW1pY1NoYWRlcnNT
aWduYXR1cmVCdWcpCi17Ci0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBnbEJpbmRC
dWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVyKTsKLQotICAgIEdMaW50IGF0dHJpYkxvY2F0
aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImlucHV0QXR0cmlidXRlIik7Ci0g
ICAgQVNTRVJUX05FKC0xLCBhdHRyaWJMb2NhdGlvbik7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRy
aWJBcnJheShhdHRyaWJMb2NhdGlvbik7Ci0KLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoYXR0
cmliTG9jYXRpb24sIDIsIEdMX0JZVEUsIEdMX0ZBTFNFLCAwLCBudWxscHRyKTsKLSAgICBnbERy
YXdBcnJheXMoR0xfUE9JTlRTLCAwLCAxKTsKLQotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihh
dHRyaWJMb2NhdGlvbiwgMiwgR0xfVU5TSUdORURfQllURSwgR0xfRkFMU0UsIDAsIG51bGxwdHIp
OwotICAgIGdsRHJhd0FycmF5cyhHTF9QT0lOVFMsIDAsIDEpOwotfQotCi0vLyBUaGlzIHRlc3Rz
IHRoZSBhYmlsaXR5IHRvIHN1Y2Nlc3NmdWxseSBzYXZlIGFuZCBsb2FkIGEgcHJvZ3JhbSBiaW5h
cnkuCi1URVNUX1AoUHJvZ3JhbUJpbmFyeVRlc3QsIFNhdmVBbmRMb2FkQmluYXJ5KQotewotICAg
IGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX2dldF9wcm9ncmFtX2JpbmFyeSIpKQotICAg
IHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9PRVNfZ2V0
X3Byb2dyYW1fYmluYXJ5IGlzIG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAgICAgICAgPDwg
c3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGdldEF2YWlsYWJs
ZVByb2dyYW1CaW5hcnlGb3JtYXRDb3VudCgpID09IDApCi0gICAgewotICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIG5vIHByb2dyYW0gYmluYXJ5IGZvcm1hdHMgYXJl
IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEdMaW50IHByb2dyYW1MZW5ndGggPSAwOwotICAgIEdMaW50IHdyaXR0ZW5MZW5ndGggPSAwOwot
ICAgIEdMZW51bSBiaW5hcnlGb3JtYXQgPSAwOwotCi0gICAgZ2xHZXRQcm9ncmFtaXYobVByb2dy
YW0sIEdMX1BST0dSQU1fQklOQVJZX0xFTkdUSF9PRVMsICZwcm9ncmFtTGVuZ3RoKTsKLSAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGJpbmFyeShw
cm9ncmFtTGVuZ3RoKTsKLSAgICBnbEdldFByb2dyYW1CaW5hcnlPRVMobVByb2dyYW0sIHByb2dy
YW1MZW5ndGgsICZ3cml0dGVuTGVuZ3RoLCAmYmluYXJ5Rm9ybWF0LCBiaW5hcnkuZGF0YSgpKTsK
LSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFRoZSBsZW5ndGhzIHJlcG9ydGVk
IGJ5IGdsR2V0UHJvZ3JhbWl2IGFuZCBnbEdldFByb2dyYW1CaW5hcnlPRVMgc2hvdWxkIG1hdGNo
Ci0gICAgRVhQRUNUX0VRKHByb2dyYW1MZW5ndGgsIHdyaXR0ZW5MZW5ndGgpOwotCi0gICAgaWYg
KHdyaXR0ZW5MZW5ndGgpCi0gICAgewotICAgICAgICBHTHVpbnQgcHJvZ3JhbTIgPSBnbENyZWF0
ZVByb2dyYW0oKTsKLSAgICAgICAgZ2xQcm9ncmFtQmluYXJ5T0VTKHByb2dyYW0yLCBiaW5hcnlG
b3JtYXQsIGJpbmFyeS5kYXRhKCksIHdyaXR0ZW5MZW5ndGgpOwotCi0gICAgICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotCi0gICAgICAgIEdMaW50IGxpbmtTdGF0dXM7Ci0gICAgICAgIGdsR2V0
UHJvZ3JhbWl2KHByb2dyYW0yLCBHTF9MSU5LX1NUQVRVUywgJmxpbmtTdGF0dXMpOwotICAgICAg
ICBpZiAobGlua1N0YXR1cyA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBHTGludCBpbmZv
TG9nTGVuZ3RoOwotICAgICAgICAgICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbTIsIEdMX0lORk9f
TE9HX0xFTkdUSCwgJmluZm9Mb2dMZW5ndGgpOwotCi0gICAgICAgICAgICBpZiAoaW5mb0xvZ0xl
bmd0aCA+IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8R0xj
aGFyPiBpbmZvTG9nKGluZm9Mb2dMZW5ndGgpOwotICAgICAgICAgICAgICAgIGdsR2V0UHJvZ3Jh
bUluZm9Mb2cocHJvZ3JhbTIsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGluZm9Mb2cuc2l6ZSgpKSwg
TlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmZvTG9nWzBdKTsK
LSAgICAgICAgICAgICAgICBGQUlMKCkgPDwgInByb2dyYW0gbGluayBmYWlsZWQ6ICIgPDwgJmlu
Zm9Mb2dbMF07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgRkFJTCgpIDw8ICJwcm9ncmFtIGxpbmsgZmFpbGVkLiI7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAg
ICBnbFVzZVByb2dyYW0ocHJvZ3JhbTIpOwotICAgICAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FS
UkFZX0JVRkZFUiwgbUJ1ZmZlcik7Ci0KLSAgICAgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRl
cigwLCA0LCBHTF9GTE9BVCwgR0xfRkFMU0UsIDgsIE5VTEwpOwotICAgICAgICAgICAgZ2xFbmFi
bGVWZXJ0ZXhBdHRyaWJBcnJheSgwKTsKLSAgICAgICAgICAgIGdsRHJhd0FycmF5cyhHTF9QT0lO
VFMsIDAsIDEpOwotCi0gICAgICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtMik7Ci0gICAgfQotfQotCi0vLyBV
c2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVy
ZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBh
Z2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChQcm9ncmFtQmluYXJ5VGVzdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMy
X0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19P
UEVOR0woKSk7Ci0KLWNsYXNzIFByb2dyYW1CaW5hcnlUcmFuc2Zvcm1GZWVkYmFja1Rlc3QgOiBw
dWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBQcm9ncmFtQmluYXJ5VHJhbnNm
b3JtRmVlZGJhY2tUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7Ci0g
ICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgp
OwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVC
aXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotCi0gICAgdm9p
ZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0K
LSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NP
VVJDRQotICAgICAgICAoICAgI3ZlcnNpb24gMzAwIGVzXG4KLSAgICAgICAgICAgIGluIHZlYzQg
aW5wdXRBdHRyaWJ1dGU7Ci0gICAgICAgICAgICBvdXQgdmVjNCBvdXRwdXRWYXJ5aW5nOwotICAg
ICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvdXRw
dXRWYXJ5aW5nID0gaW5wdXRBdHRyaWJ1dGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0K
LSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJf
U09VUkNFCi0gICAgICAgICggICAjdmVyc2lvbiAzMDAgZXNcbgotICAgICAgICAgICAgcHJlY2lz
aW9uIGhpZ2hwIGZsb2F0OwotICAgICAgICAgICAgb3V0IHZlYzQgb3V0cHV0Q29sb3I7Ci0gICAg
ICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dHB1
dENvbG9yID0gdmVjNCgxLDAsMCwxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAg
ICAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5nczsK
LSAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncy5wdXNoX2JhY2soIm91dHB1dFZhcnlp
bmciKTsKLQotICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtV2l0aFRyYW5zZm9ybUZl
ZWRiYWNrKAotICAgICAgICAgICAgdmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNv
dXJjZSwgdHJhbnNmb3JtRmVlZGJhY2tWYXJ5aW5ncywKLSAgICAgICAgICAgIEdMX1NFUEFSQVRF
X0FUVFJJQlMpOwotICAgICAgICBpZiAobVByb2dyYW0gPT0gMCkKLSAgICAgICAgewotICAgICAg
ICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7Ci0gICAgICAgIH0K
LQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJE
b3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7
Ci0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQotICAgIEdMaW50IGdl
dEF2YWlsYWJsZVByb2dyYW1CaW5hcnlGb3JtYXRDb3VudCgpIGNvbnN0Ci0gICAgewotICAgICAg
ICBHTGludCBmb3JtYXRDb3VudDsKLSAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9OVU1fUFJPR1JB
TV9CSU5BUllfRk9STUFUU19PRVMsICZmb3JtYXRDb3VudCk7Ci0gICAgICAgIHJldHVybiBmb3Jt
YXRDb3VudDsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVByb2dyYW07Ci19OwotCi0vLyBUaGlzIHRl
c3RzIHRoZSBhc3N1bXB0aW9uIHRoYXQgZmxvYXQgYXR0cmlicyBvZiBkaWZmZXJlbnQgc2l6ZQot
Ly8gc2hvdWxkIG5vdCBpbnRlcm5hbGx5IGNhdXNlIGEgdmVydGV4IHNoYWRlciByZWNvbXBpbGUg
KGZvciBjb252ZXJzaW9uKS4KLVRFU1RfUChQcm9ncmFtQmluYXJ5VHJhbnNmb3JtRmVlZGJhY2tU
ZXN0LCBHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcpCi17Ci0gICAgaWYgKCFleHRlbnNpb25F
bmFibGVkKCJHTF9PRVNfZ2V0X3Byb2dyYW1fYmluYXJ5IikpCi0gICAgewotICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdMX09FU19nZXRfcHJvZ3JhbV9iaW5hcnkg
aXMgbm90IGF2YWlsYWJsZS4iCi0gICAgICAgICAgICAgICAgICA8PCBzdGQ6OmVuZGw7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoZ2V0QXZhaWxhYmxlUHJvZ3JhbUJpbmFyeUZv
cm1hdENvdW50KCkgPT0gMCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIGJlY2F1c2Ugbm8gcHJvZ3JhbSBiaW5hcnkgZm9ybWF0cyBhcmUgYXZhaWxhYmxlLiIgPDwg
c3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3RkOjp2ZWN0b3I8dWlu
dDhfdD4gYmluYXJ5KDApOwotICAgIEdMaW50IHByb2dyYW1MZW5ndGggPSAwOwotICAgIEdMaW50
IHdyaXR0ZW5MZW5ndGggPSAwOwotICAgIEdMZW51bSBiaW5hcnlGb3JtYXQgPSAwOwotCi0gICAg
Ly8gU2F2ZSB0aGUgcHJvZ3JhbSBiaW5hcnkgb3V0Ci0gICAgZ2xHZXRQcm9ncmFtaXYobVByb2dy
YW0sIEdMX1BST0dSQU1fQklOQVJZX0xFTkdUSF9PRVMsICZwcm9ncmFtTGVuZ3RoKTsKLSAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBiaW5hcnkucmVzaXplKHByb2dyYW1MZW5ndGgpOwot
ICAgIGdsR2V0UHJvZ3JhbUJpbmFyeU9FUyhtUHJvZ3JhbSwgcHJvZ3JhbUxlbmd0aCwgJndyaXR0
ZW5MZW5ndGgsICZiaW5hcnlGb3JtYXQsIGJpbmFyeS5kYXRhKCkpOwotICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotCi0gICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgIC8vIExv
YWQgcHJvZ3JhbSBiaW5hcnkKLSAgICBtUHJvZ3JhbSA9IGdsQ3JlYXRlUHJvZ3JhbSgpOwotICAg
IGdsUHJvZ3JhbUJpbmFyeU9FUyhtUHJvZ3JhbSwgYmluYXJ5Rm9ybWF0LCBiaW5hcnkuZGF0YSgp
LCB3cml0dGVuTGVuZ3RoKTsKLQotICAgIC8vIEVuc3VyZSB0aGUgbG9hZGVkIGJpbmFyeSBpcyBs
aW5rZWQKLSAgICBHTGludCBsaW5rU3RhdHVzOwotICAgIGdsR2V0UHJvZ3JhbWl2KG1Qcm9ncmFt
LCBHTF9MSU5LX1NUQVRVUywgJmxpbmtTdGF0dXMpOwotICAgIEVYUEVDVF9UUlVFKGxpbmtTdGF0
dXMgIT0gMCk7Ci0KLSAgICAvLyBRdWVyeSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdHJhbnNmb3Jt
IGZlZWRiYWNrIHZhcnlpbmcKLSAgICBjaGFyIHZhcnlpbmdOYW1lWzY0XTsKLSAgICBHTHNpemVp
IHZhcnlpbmdTaXplID0gMDsKLSAgICBHTGVudW0gdmFyeWluZ1R5cGUgPSBHTF9OT05FOwotCi0g
ICAgZ2xHZXRUcmFuc2Zvcm1GZWVkYmFja1ZhcnlpbmcobVByb2dyYW0sIDAsIDY0LCAmd3JpdHRl
bkxlbmd0aCwgJnZhcnlpbmdTaXplLCAmdmFyeWluZ1R5cGUsIHZhcnlpbmdOYW1lKTsKLSAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIEVYUEVDVF9FUSgxMywgd3JpdHRlbkxlbmd0aCk7
Ci0gICAgRVhQRUNUX1NUUkVRKCJvdXRwdXRWYXJ5aW5nIiwgdmFyeWluZ05hbWUpOwotICAgIEVY
UEVDVF9FUSgxLCB2YXJ5aW5nU2l6ZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVF9W
RUM0LCB2YXJ5aW5nVHlwZSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8g
VXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRl
cmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4g
YWdhaW5zdC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoUHJvZ3JhbUJpbmFyeVRyYW5zZm9ybUZl
ZWRiYWNrVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSk7Ci0KLS8vIEZvciB0aGUgUHJvZ3JhbUJpbmFy
aWVzQWNyb3NzUGxhdGZvcm1zIHRlc3RzLCB3ZSBuZWVkIHR3byBzZXRzIG9mIHBhcmFtczoKLS8v
IC0gYSBzZXQgdG8gc2F2ZSB0aGUgcHJvZ3JhbSBiaW5hcnkKLS8vIC0gYSBzZXQgdG8gbG9hZCB0
aGUgcHJvZ3JhbSBiaW5hcnkKLS8vIFdlIGNvbWJpbmUgdGhlc2UgaW50byBvbmUgc3RydWN0IGV4
dGVuZGluZyBQbGF0Zm9ybVBhcmFtZXRlcnMgc28gd2UgY2FuIHJldXNlIGV4aXN0aW5nIEFOR0xF
IHRlc3QgbWFjcm9zCi1zdHJ1Y3QgUGxhdGZvcm1zV2l0aExpbmtSZXN1bHQgOiBQbGF0Zm9ybVBh
cmFtZXRlcnMKLXsKLSAgICBQbGF0Zm9ybXNXaXRoTGlua1Jlc3VsdChQbGF0Zm9ybVBhcmFtZXRl
cnMgc2F2ZVBhcmFtcywgUGxhdGZvcm1QYXJhbWV0ZXJzIGxvYWRQYXJhbXNJbiwgYm9vbCBleHBl
Y3RlZExpbmtSZXN1bHRJbikKLSAgICB7Ci0gICAgICAgIG1ham9yVmVyc2lvbiA9IHNhdmVQYXJh
bXMubWFqb3JWZXJzaW9uOwotICAgICAgICBtaW5vclZlcnNpb24gPSBzYXZlUGFyYW1zLm1pbm9y
VmVyc2lvbjsKLSAgICAgICAgZWdsUGFyYW1ldGVycyA9IHNhdmVQYXJhbXMuZWdsUGFyYW1ldGVy
czsKLSAgICAgICAgbG9hZFBhcmFtcyA9IGxvYWRQYXJhbXNJbjsKLSAgICAgICAgZXhwZWN0ZWRM
aW5rUmVzdWx0ID0gZXhwZWN0ZWRMaW5rUmVzdWx0SW47Ci0gICAgfQotCi0gICAgUGxhdGZvcm1Q
YXJhbWV0ZXJzIGxvYWRQYXJhbXM7Ci0gICAgYm9vbCBleHBlY3RlZExpbmtSZXN1bHQ7Ci19Owot
Ci0vLyBQcm92aWRlIGEgY3VzdG9tIGd0ZXN0IHBhcmFtZXRlciBuYW1lIGZ1bmN0aW9uIGZvciBQ
bGF0Zm9ybXNXaXRoTGlua1Jlc3VsdAotLy8gdG8gYXZvaWQgcmV0dXJuaW5nIHRoZSBzYW1lIHBh
cmFtZXRlciBuYW1lIHR3aWNlLiBTdWNoIGEgY29uZmxpY3Qgd291bGQgaGFwcGVuCi0vLyBiZXR3
ZWVuIEVTMl9EM0QxMV90b19FUzJEM0QxMSBhbmQgRVMyX0QzRDExX3RvX0VTM0QzRDExIGFzIHRo
ZXkgd2VyZSBib3RoCi0vLyBuYW1lZCBFUzJfRDNEMTEKLXN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8
PChzdGQ6Om9zdHJlYW0mIHN0cmVhbSwgY29uc3QgUGxhdGZvcm1zV2l0aExpbmtSZXN1bHQgJnBs
YXRmb3JtKQotewotICAgIGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAmcGxhdGZvcm0xID0gcGxh
dGZvcm07Ci0gICAgY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZwbGF0Zm9ybTIgPSBwbGF0Zm9y
bS5sb2FkUGFyYW1zOwotICAgIHN0cmVhbSA8PCBwbGF0Zm9ybTEgPDwgIl90b18iIDw8IHBsYXRm
b3JtMjsKLSAgICByZXR1cm4gc3RyZWFtOwotfQotCi1jbGFzcyBQcm9ncmFtQmluYXJpZXNBY3Jv
c3NQbGF0Zm9ybXMgOiBwdWJsaWMgdGVzdGluZzo6VGVzdFdpdGhQYXJhbTxQbGF0Zm9ybXNXaXRo
TGlua1Jlc3VsdD4KLXsKLSAgcHVibGljOgotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgbU9TV2luZG93ID0gQ3JlYXRlT1NXaW5kb3coKTsKLSAgICAgICAgYm9vbCBy
ZXN1bHQgPSBtT1NXaW5kb3ctPmluaXRpYWxpemUoIlByb2dyYW1CaW5hcmllc0Fjcm9zc1JlbmRl
cmVyc1Rlc3RzIiwgMTAwLCAxMDApOwotCi0gICAgICAgIGlmIChyZXN1bHQgPT0gZmFsc2UpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIEZBSUwoKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBPUyB3aW5k
b3ciOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgRUdMV2luZG93ICpjcmVhdGVBbmRJbml0RUdM
V2luZG93KGFuZ2xlOjpQbGF0Zm9ybVBhcmFtZXRlcnMgJnBhcmFtKQotICAgIHsKLSAgICAgICAg
RUdMV2luZG93ICplZ2xXaW5kb3cgPQotICAgICAgICAgICAgbmV3IEVHTFdpbmRvdyhwYXJhbS5t
YWpvclZlcnNpb24sIHBhcmFtLm1pbm9yVmVyc2lvbiwgcGFyYW0uZWdsUGFyYW1ldGVycyk7Ci0g
ICAgICAgIGJvb2wgcmVzdWx0ID0gZWdsV2luZG93LT5pbml0aWFsaXplR0wobU9TV2luZG93KTsK
LSAgICAgICAgaWYgKHJlc3VsdCA9PSBmYWxzZSkKLSAgICAgICAgewotICAgICAgICAgICAgU2Fm
ZURlbGV0ZShlZ2xXaW5kb3cpOwotICAgICAgICAgICAgZWdsV2luZG93ID0gbnVsbHB0cjsKLSAg
ICAgICAgfQotCi0gICAgICAgIHJldHVybiBlZ2xXaW5kb3c7Ci0gICAgfQotCi0gICAgdm9pZCBk
ZXN0cm95RUdMV2luZG93KEVHTFdpbmRvdyAqKmVnbFdpbmRvdykKLSAgICB7Ci0gICAgICAgIEFT
U0VSVCgqZWdsV2luZG93ICE9IG51bGxwdHIpOwotICAgICAgICAoKmVnbFdpbmRvdyktPmRlc3Ry
b3lHTCgpOwotICAgICAgICBTYWZlRGVsZXRlKCplZ2xXaW5kb3cpOwotICAgICAgICAqZWdsV2lu
ZG93ID0gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBHTHVpbnQgY3JlYXRlRVMyUHJvZ3JhbUZyb21T
b3VyY2UoKQotICAgIHsKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdFZlcnRleFNoYWRl
clNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgYXR0cmlidXRl
IGhpZ2hwIHZlYzQgcG9zaXRpb247Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdEZy
YWdtZW50U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAg
ICB2b2lkIG1haW4odm9pZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFn
Q29sb3IgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICk7Ci0KLSAgICAgICAgcmV0dXJuIENvbXBpbGVQcm9ncmFtKHRlc3RWZXJ0ZXhTaGFkZXJTb3Vy
Y2UsIHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgfQotCi0gICAgR0x1aW50IGNyZWF0
ZUVTM1Byb2dyYW1Gcm9tU291cmNlKCkKLSAgICB7Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IHRlc3RWZXJ0ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICggICAjdmVy
c2lvbiAzMDAgZXNcbgotICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwotICAgICAg
ICAgICAgaW4gaGlnaHAgdmVjNCBwb3NpdGlvbjsKLQotICAgICAgICAgICAgdm9pZCBtYWluKHZv
aWQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlv
bjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyB0ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICggICAj
dmVyc2lvbiAzMDAgZXMgXG4KLSAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSAg
ICAgICAgICAgIG91dCB2ZWM0IG91dF9GcmFnQ29sb3I7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFp
bih2b2lkKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG91dF9GcmFnQ29sb3IgPSB2
ZWM0KDEuMCwgMC4wLCAwLjAsIDEuMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAg
ICAgICAgcmV0dXJuIENvbXBpbGVQcm9ncmFtKHRlc3RWZXJ0ZXhTaGFkZXJTb3VyY2UsIHRlc3RG
cmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgfQotCi0gICAgdm9pZCBkcmF3V2l0aFByb2dyYW0o
R0x1aW50IHByb2dyYW0pCi0gICAgewotICAgICAgICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMSk7
Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICAgICAgR0xpbnQg
cG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgInBvc2l0aW9u
Iik7Ci0KLSAgICAgICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0pOwotCi0gICAgICAgIGNvbnN0IEdM
ZmxvYXQgdmVydGljZXNbXSA9Ci0gICAgICAgIHsKLSAgICAgICAgICAgIC0xLjBmLCAgMS4wZiwg
MC41ZiwKLSAgICAgICAgICAgIC0xLjBmLCAtMS4wZiwgMC41ZiwKLSAgICAgICAgICAgICAxLjBm
LCAtMS4wZiwgMC41ZiwKLQotICAgICAgICAgICAgLTEuMGYsICAxLjBmLCAwLjVmLAotICAgICAg
ICAgICAgIDEuMGYsIC0xLjBmLCAwLjVmLAotICAgICAgICAgICAgIDEuMGYsICAxLjBmLCAwLjVm
LAotICAgICAgICB9OwotCi0gICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxv
Y2F0aW9uLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHZlcnRpY2VzKTsKLSAgICAgICAgZ2xF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKLQotICAgICAgICBnbERy
YXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCA2KTsKLQotICAgICAgICBnbERpc2FibGVWZXJ0ZXhB
dHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2lu
dGVyKHBvc2l0aW9uTG9jYXRpb24sIDQsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgTlVMTCk7Ci0K
LSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKG1PU1dpbmRvdy0+Z2V0V2lkdGgoKSAvIDIsIG1PU1dp
bmRvdy0+Z2V0SGVpZ2h0KCkgLyAyLCAyNTUsIDAsIDAsIDI1NSk7Ci0gICAgfQotCi0gICAgdm9p
ZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBtT1NXaW5kb3ctPmRlc3Ryb3ko
KTsKLSAgICAgICAgU2FmZURlbGV0ZShtT1NXaW5kb3cpOwotICAgIH0KLQotICAgIE9TV2luZG93
ICptT1NXaW5kb3c7Ci19OwotCi0vLyBUcmllcyB0byBjcmVhdGUgYSBwcm9ncmFtIGJpbmFyeSB1
c2luZyBvbmUgc2V0IG9mIHBsYXRmb3JtIHBhcmFtcywgdGhlbiBsb2FkIGl0IHVzaW5nIGEgZGlm
ZmVyZW50IHNlbnQgb2YgcGFyYW1zCi1URVNUX1AoUHJvZ3JhbUJpbmFyaWVzQWNyb3NzUGxhdGZv
cm1zLCBDcmVhdGVBbmRSZWxvYWRCaW5hcnkpCi17Ci0gICAgYW5nbGU6OlBsYXRmb3JtUGFyYW1l
dGVycyBmaXJzdFJlbmRlcmVyICA9IEdldFBhcmFtKCk7Ci0gICAgYW5nbGU6OlBsYXRmb3JtUGFy
YW1ldGVycyBzZWNvbmRSZW5kZXJlciA9IEdldFBhcmFtKCkubG9hZFBhcmFtczsKLSAgICBib29s
IGV4cGVjdGVkTGlua1Jlc3VsdCAgICAgICAgICAgICAgICAgID0gR2V0UGFyYW0oKS5leHBlY3Rl
ZExpbmtSZXN1bHQ7Ci0KLSAgICBpZiAoIShJc1BsYXRmb3JtQXZhaWxhYmxlKGZpcnN0UmVuZGVy
ZXIpKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiRmlyc3QgcmVuZGVyZXIgbm90IHN1
cHBvcnRlZCwgc2tpcHBpbmcgdGVzdCI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIShJc1BsYXRmb3JtQXZhaWxhYmxlKHNlY29uZFJlbmRlcmVyKSkpCi0gICAgewotICAgICAg
ICBzdGQ6OmNvdXQgPDwgIlNlY29uZCByZW5kZXJlciBub3Qgc3VwcG9ydGVkLCBza2lwcGluZyB0
ZXN0IjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEVHTFdpbmRvdyAqZWdsV2luZG93
ID0gbnVsbHB0cjsKLSAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBiaW5hcnkoMCk7Ci0gICAgR0x1
aW50IHByb2dyYW0gPSAwOwotCi0gICAgR0xpbnQgcHJvZ3JhbUxlbmd0aCA9IDA7Ci0gICAgR0xp
bnQgd3JpdHRlbkxlbmd0aCA9IDA7Ci0gICAgR0xlbnVtIGJpbmFyeUZvcm1hdCA9IDA7Ci0KLSAg
ICAvLyBDcmVhdGUgYSBFR0wgd2luZG93IHdpdGggdGhlIGZpcnN0IHJlbmRlcmVyCi0gICAgZWds
V2luZG93ID0gY3JlYXRlQW5kSW5pdEVHTFdpbmRvdyhmaXJzdFJlbmRlcmVyKTsKLSAgICBpZiAo
ZWdsV2luZG93ID09IG51bGxwdHIpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIkZhaWxlZCB0
byBjcmVhdGUgRUdMIHdpbmRvdyI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBJ
ZiB0aGUgdGVzdCBpcyB0cnlpbmcgdG8gdXNlIGJvdGggdGhlIGRlZmF1bHQgR1BVIGFuZCBXQVJQ
LCBidXQgdGhlIGRlZmF1bHQgR1BVICpJUyogV0FSUCwKLSAgICAvLyB0aGVuIG91ciBleHBlY3Rh
dGlvbnMgZm9yIHRoZSB0ZXN0IHJlc3VsdHMgd2lsbCBiZSBpbnZhbGlkLgotICAgIGlmIChmaXJz
dFJlbmRlcmVyLmVnbFBhcmFtZXRlcnMuZGV2aWNlVHlwZSAhPSBFR0xfUExBVEZPUk1fQU5HTEVf
REVWSUNFX1RZUEVfV0FSUF9BTkdMRSAmJgotICAgICAgICBzZWNvbmRSZW5kZXJlci5lZ2xQYXJh
bWV0ZXJzLmRldmljZVR5cGUgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX1dBUlBf
QU5HTEUpCi0gICAgewotICAgICAgICBzdGQ6OnN0cmluZyByZW5kZXJlclN0cmluZyA9IHN0ZDo6
c3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdsR2V0U3RyaW5nKEdMX1JFTkRF
UkVSKSkpOwotICAgICAgICBzdGQ6OnRyYW5zZm9ybShyZW5kZXJlclN0cmluZy5iZWdpbigpLCBy
ZW5kZXJlclN0cmluZy5lbmQoKSwgcmVuZGVyZXJTdHJpbmcuYmVnaW4oKSwgOjp0b2xvd2VyKTsK
LQotICAgICAgICBhdXRvIGJhc2ljUmVuZGVyUG9zID0gcmVuZGVyZXJTdHJpbmcuZmluZChzdGQ6
OnN0cmluZygibWljcm9zb2Z0IGJhc2ljIHJlbmRlciIpKTsKLSAgICAgICAgYXV0byBzb2Z0d2Fy
ZUFkYXB0ZXJQb3MgPSByZW5kZXJlclN0cmluZy5maW5kKHN0ZDo6c3RyaW5nKCJzb2Z0d2FyZSBh
ZGFwdGVyIikpOwotCi0gICAgICAgIGlmIChiYXNpY1JlbmRlclBvcyAhPSBzdGQ6OnN0cmluZzo6
bnBvcyB8fCBzb2Z0d2FyZUFkYXB0ZXJQb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIC8vIFRoZSBmaXJzdCByZW5kZXJlciBpcyB1c2luZyBXQVJQLCBldmVu
IHRob3VnaCB3ZSBkaWRuJ3QgZXhwbGljdGx5IHJlcXVlc3QgaXQKLSAgICAgICAgICAgIC8vIFdl
IHNob3VsZCBza2lwIHRoaXMgdGVzdAotICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgb24gd2hlbiBkZWZhdWx0IEdQVSBpcyBXQVJQLiIgPDwgc3RkOjplbmRsOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gQ3JlYXRlIGEgcHJvZ3Jh
bQotICAgIGlmIChmaXJzdFJlbmRlcmVyLm1ham9yVmVyc2lvbiA9PSAzKQotICAgIHsKLSAgICAg
ICAgcHJvZ3JhbSA9IGNyZWF0ZUVTM1Byb2dyYW1Gcm9tU291cmNlKCk7Ci0gICAgfQotICAgIGVs
c2UKLSAgICB7Ci0gICAgICAgIHByb2dyYW0gPSBjcmVhdGVFUzJQcm9ncmFtRnJvbVNvdXJjZSgp
OwotICAgIH0KLQotICAgIGlmIChwcm9ncmFtID09IDApCi0gICAgewotICAgICAgICBkZXN0cm95
RUdMV2luZG93KCZlZ2xXaW5kb3cpOwotICAgICAgICBGQUlMKCkgPDwgIkZhaWxlZCB0byBjcmVh
dGUgcHJvZ3JhbSBmcm9tIHNvdXJjZSI7Ci0gICAgfQotCi0gICAgLy8gRHJhdyB1c2luZyB0aGUg
cHJvZ3JhbSB0byBlbnN1cmUgaXQgd29ya3MgYXMgZXhwZWN0ZWQKLSAgICBkcmF3V2l0aFByb2dy
YW0ocHJvZ3JhbSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBTYXZlIHRo
ZSBwcm9ncmFtIGJpbmFyeSBvdXQgZnJvbSB0aGlzIHJlbmRlcmVyCi0gICAgZ2xHZXRQcm9ncmFt
aXYocHJvZ3JhbSwgR0xfUFJPR1JBTV9CSU5BUllfTEVOR1RIX09FUywgJnByb2dyYW1MZW5ndGgp
OwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIGJpbmFyeS5yZXNpemUocHJvZ3JhbUxl
bmd0aCk7Ci0gICAgZ2xHZXRQcm9ncmFtQmluYXJ5T0VTKHByb2dyYW0sIHByb2dyYW1MZW5ndGgs
ICZ3cml0dGVuTGVuZ3RoLCAmYmluYXJ5Rm9ybWF0LCBiaW5hcnkuZGF0YSgpKTsKLSAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIERlc3Ryb3kgdGhlIGZpcnN0IHJlbmRlcmVyCi0g
ICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOwotICAgIGRlc3Ryb3lFR0xXaW5kb3coJmVnbFdp
bmRvdyk7Ci0KLSAgICAvLyBDcmVhdGUgYW4gRUdMIHdpbmRvdyB3aXRoIHRoZSBzZWNvbmQgcmVu
ZGVyZXIKLSAgICBlZ2xXaW5kb3cgPSBjcmVhdGVBbmRJbml0RUdMV2luZG93KHNlY29uZFJlbmRl
cmVyKTsKLSAgICBpZiAoZWdsV2luZG93ID09IG51bGxwdHIpCi0gICAgewotICAgICAgICBGQUlM
KCkgPDwgIkZhaWxlZCB0byBjcmVhdGUgRUdMIHdpbmRvdyI7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBwcm9ncmFtID0gZ2xDcmVhdGVQcm9ncmFtKCk7Ci0gICAgZ2xQcm9ncmFtQmlu
YXJ5T0VTKHByb2dyYW0sIGJpbmFyeUZvcm1hdCwgYmluYXJ5LmRhdGEoKSwgd3JpdHRlbkxlbmd0
aCk7Ci0KLSAgICBHTGludCBsaW5rU3RhdHVzOwotICAgIGdsR2V0UHJvZ3JhbWl2KHByb2dyYW0s
IEdMX0xJTktfU1RBVFVTLCAmbGlua1N0YXR1cyk7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVkTGlu
a1Jlc3VsdCwgKGxpbmtTdGF0dXMgIT0gMCkpOwotCi0gICAgaWYgKGxpbmtTdGF0dXMgIT0gMCkK
LSAgICB7Ci0gICAgICAgIC8vIElmIHRoZSBsaW5rIHdhcyBzdWNjZXNzZnVsLCB0aGVuIHdlIHNo
b3VsZCB0cnkgdG8gZHJhdyB1c2luZyB0aGUgcHJvZ3JhbSB0byBlbnN1cmUgaXQgd29ya3MgYXMg
ZXhwZWN0ZWQKLSAgICAgICAgZHJhd1dpdGhQcm9ncmFtKHByb2dyYW0pOwotICAgICAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICAvLyBEZXN0cm95IHRoZSBzZWNvbmQgcmVu
ZGVyZXIKLSAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Ci0gICAgZGVzdHJveUVHTFdpbmRv
dygmZWdsV2luZG93KTsKLX0KLQotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChQcm9ncmFtQmluYXJp
ZXNBY3Jvc3NQbGF0Zm9ybXMsCi0gICAgICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAg
ICAgICAgICAgfCBTYXZlIHRoZSBwcm9ncmFtICAgfCBMb2FkIHRoZSBwcm9ncmFtICAgICAgfCBF
eHBlY3RlZAotICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgIHwg
dXNpbmcgdGhlc2UgcGFyYW1zIHwgdXNpbmcgdGhlc2UgcGFyYW1zICAgIHwgbGluayByZXN1bHQK
LSAgICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1zV2l0aExpbmtSZXN1bHQoRVMyX0QzRDEx
KCksICAgICAgICAgRVMyX0QzRDExKCksICAgICAgICAgICAgdHJ1ZSAgICAgICAgICksIC8vIExv
YWRpbmcgKyByZWxvYWRpbmcgYmluYXJ5IHNob3VsZCB3b3JrCi0gICAgICAgICAgICAgICAgICAg
ICAgIFBsYXRmb3Jtc1dpdGhMaW5rUmVzdWx0KEVTM19EM0QxMSgpLCAgICAgICAgIEVTM19EM0Qx
MSgpLCAgICAgICAgICAgIHRydWUgICAgICAgICApLCAvLyBMb2FkaW5nICsgcmVsb2FkaW5nIGJp
bmFyeSBzaG91bGQgd29yawotICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybXNXaXRoTGlu
a1Jlc3VsdChFUzJfRDNEMTFfRkwxMV8wKCksICBFUzJfRDNEMTFfRkw5XzMoKSwgICAgICBmYWxz
ZSAgICAgICAgKSwgLy8gU3dpdGNoaW5nIGZlYXR1cmUgbGV2ZWwgc2hvdWxkbid0IHdvcmsKLSAg
ICAgICAgICAgICAgICAgICAgICAgUGxhdGZvcm1zV2l0aExpbmtSZXN1bHQoRVMyX0QzRDExKCks
ICAgICAgICAgRVMyX0QzRDExX1dBUlAoKSwgICAgICAgZmFsc2UgICAgICAgICksIC8vIFN3aXRj
aGluZyBmcm9tIGhhcmR3YXJlIHRvIHNvZnR3YXJlIHNob3VsZG4ndCB3b3JrCi0gICAgICAgICAg
ICAgICAgICAgICAgIFBsYXRmb3Jtc1dpdGhMaW5rUmVzdWx0KEVTMl9EM0QxMV9GTDlfMygpLCAg
IEVTMl9EM0QxMV9GTDlfM19XQVJQKCksIGZhbHNlICAgICAgICApLCAvLyBTd2l0Y2hpbmcgZnJv
bSBoYXJkd2FyZSB0byBzb2Z0d2FyZSBzaG91bGRuJ3Qgd29yayBmb3IgRkw5IGVpdGhlcgotICAg
ICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybXNXaXRoTGlua1Jlc3VsdChFUzJfRDNEMTEoKSwg
ICAgICAgICBFUzJfRDNEOSgpLCAgICAgICAgICAgICBmYWxzZSAgICAgICAgKSwgLy8gU3dpdGNo
aW5nIGZyb20gRDNEMTEgdG8gRDNEOSBzaG91bGRuJ3Qgd29yawotICAgICAgICAgICAgICAgICAg
ICAgICBQbGF0Zm9ybXNXaXRoTGlua1Jlc3VsdChFUzJfRDNEOSgpLCAgICAgICAgICBFUzJfRDNE
MTEoKSwgICAgICAgICAgICBmYWxzZSAgICAgICAgKSwgLy8gU3dpdGNoaW5nIGZyb20gRDNEOSB0
byBEM0QxMSBzaG91bGRuJ3Qgd29yawotICAgICAgICAgICAgICAgICAgICAgICBQbGF0Zm9ybXNX
aXRoTGlua1Jlc3VsdChFUzJfRDNEMTEoKSwgICAgICAgICBFUzNfRDNEMTEoKSwgICAgICAgICAg
ICB0cnVlICAgICAgICAgKSAgLy8gU3dpdGNoaW5nIHRvIG5ld2VyIGNsaWVudCB2ZXJzaW9uIHNo
b3VsZCB3b3JrCi0KLSAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogQU5HTEUgaXNzdWUg
NTIzCi0gICAgICAgICAgICAgICAgICAgICAgIC8vIENvbXBpbGluZyBhIHByb2dyYW0gd2l0aCBj
bGllbnQgdmVyc2lvbiAzLCBzYXZpbmcgdGhlIGJpbmFyeSwgdGhlbiBsb2FkaW5nIGl0IHdpdGgg
Y2xpZW50IHZlcnNpb24gMiBzaG91bGQgbm90IHdvcmsKLSAgICAgICAgICAgICAgICAgICAgICAg
Ly8gUGxhdGZvcm1zV2l0aExpbmtSZXN1bHQoRVMzX0QzRDExKCksICAgICAgICAgRVMyX0QzRDEx
KCksICAgICAgICAgICAgZmFsc2UgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgICApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1By
b3Zva2luZ1ZlcnRleFRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L2dsX3Rlc3RzL1Byb3Zva2luZ1ZlcnRleFRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhZGYwYjFhNmVlYi4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1Byb3Zva2luZ1ZlcnRleFRlc3QuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMzE2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUg
UHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291
cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQot
Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBQcm92a2luZ1ZlcnRleFRlc3Q6
Ci0vLyAgIFRlc3RzIG9uIHRoZSBjb25mb3JtYW5jZSBvZiB0aGUgcHJvdm9raW5nIHZlcnRleCwg
d2hpY2ggYXBwbGllcyB0byBmbGF0Ci0vLyAgIHNoYWRpbmcgYW5kIGNvbXBhdGliaWxpdHkgd2l0
aCBEM0QuIFNlZSB0aGUgc2VjdGlvbiBvbiAnZmxhdHNoYWRpbmcnCi0vLyAgIGluIHRoZSBFUyAz
IHNwZWNzLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLXVzaW5n
IG5hbWVzcGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17Ci0KLWNsYXNzIFByb3Zva2luZ1ZlcnRl
eFRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBQcm92b2tpbmdW
ZXJ0ZXhUZXN0KCkKLSAgICAgICAgOiBtUHJvZ3JhbSgwKSwKLSAgICAgICAgICBtRnJhbWVidWZm
ZXIoMCksCi0gICAgICAgICAgbVRleHR1cmUoMCksCi0gICAgICAgICAgbVRyYW5zZm9ybUZlZWRi
YWNrKDApLAotICAgICAgICAgIG1CdWZmZXIoMCksCi0gICAgICAgICAgbUludEF0dHJpYkxvY2F0
aW9uKC0xKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoNjQpOwotICAgICAgICBzZXRX
aW5kb3dIZWlnaHQoNjQpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBz
ZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAg
ICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0RlcHRoQml0cygy
NCk7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBB
TkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleFNo
YWRlciA9Ci0gICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICAgICAiaW4g
aW50IGludEF0dHJpYjtcbiIKLSAgICAgICAgICAgICJpbiB2ZWMyIHBvc2l0aW9uO1xuIgotICAg
ICAgICAgICAgImZsYXQgb3V0IGludCBhdHRyaWI7XG4iCi0gICAgICAgICAgICAidm9pZCBtYWlu
KCkge1xuIgotICAgICAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAwLCAx
KTtcbiIKLSAgICAgICAgICAgICIgIGF0dHJpYiA9IGludEF0dHJpYjtcbiIKLSAgICAgICAgICAg
ICJ9IjsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXIgPQotICAg
ICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAgICAgImZsYXQgaW4gaW50IGF0
dHJpYjtcbiIKLSAgICAgICAgICAgICJvdXQgaW50IGZyYWdDb2xvcjtcbiIKLSAgICAgICAgICAg
ICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICAgICAiICBmcmFnQ29sb3IgPSBhdHRyaWI7XG4i
Ci0gICAgICAgICAgICAifSI7Ci0KLSAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRm
VmFyeWluZ3M7Ci0gICAgICAgIHRmVmFyeWluZ3MucHVzaF9iYWNrKCJhdHRyaWIiKTsKLSAgICAg
ICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbVdpdGhUcmFuc2Zvcm1GZWVkYmFjayh2ZXJ0ZXhT
aGFkZXIsIGZyYWdtZW50U2hhZGVyLCB0ZlZhcnlpbmdzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1NFUEFSQVRFX0FUVFJJQlMpOwot
ICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKLQotICAgICAgICBnbEdlblRleHR1cmVz
KDEsICZtVGV4dHVyZSk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRl
eHR1cmUpOwotICAgICAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SMzJJ
LCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0KLSAgICAgICAgZ2xHZW5G
cmFtZWJ1ZmZlcnMoMSwgJm1GcmFtZWJ1ZmZlcik7Ci0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOwotICAgICAgICBnbEZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmUsIDApOwotCi0gICAgICAgIG1JbnRBdHRyaWJMb2NhdGlvbiA9IGdsR2V0QXR0
cmliTG9jYXRpb24obVByb2dyYW0sICJpbnRBdHRyaWIiKTsKLSAgICAgICAgQVNTRVJUX05FKC0x
LCBtSW50QXR0cmliTG9jYXRpb24pOwotICAgICAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KG1JbnRBdHRyaWJMb2NhdGlvbik7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0g
ICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAo
bVByb2dyYW0gIT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Q
cm9ncmFtKTsKLSAgICAgICAgICAgIG1Qcm9ncmFtID0gMDsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChtRnJhbWVidWZmZXIgIT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xEZWxldGVG
cmFtZWJ1ZmZlcnMoMSwgJm1GcmFtZWJ1ZmZlcik7Ci0gICAgICAgICAgICBtRnJhbWVidWZmZXIg
PSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1UZXh0dXJlICE9IDApCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlKTsKLSAgICAgICAgICAg
IG1UZXh0dXJlID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtVHJhbnNmb3JtRmVlZGJh
Y2sgIT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xEZWxldGVUcmFuc2Zvcm1GZWVkYmFj
a3MoMSwgJm1UcmFuc2Zvcm1GZWVkYmFjayk7Ci0gICAgICAgICAgICBtVHJhbnNmb3JtRmVlZGJh
Y2sgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1CdWZmZXIgIT0gMCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtQnVmZmVyKTsKLSAgICAgICAgICAg
IG1CdWZmZXIgPSAwOwotICAgICAgICB9Ci0KLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigp
OwotICAgIH0KLQotICAgIEdMdWludCBtUHJvZ3JhbTsKLSAgICBHTHVpbnQgbUZyYW1lYnVmZmVy
OwotICAgIEdMdWludCBtVGV4dHVyZTsKLSAgICBHTHVpbnQgbVRyYW5zZm9ybUZlZWRiYWNrOwot
ICAgIEdMdWludCBtQnVmZmVyOwotICAgIEdMaW50IG1JbnRBdHRyaWJMb2NhdGlvbjsKLX07Ci0K
LS8vIFRlc3QgZHJhd2luZyBhIHNpbXBsZSB0cmlhbmdsZSB3aXRoIGZsYXQgc2hhZGluZywgYW5k
IGRpZmZlcmVudCB2YWx1ZWQgdmVydGljZXMuCi1URVNUX1AoUHJvdm9raW5nVmVydGV4VGVzdCwg
RmxhdFRyaWFuZ2xlKQotewotICAgIEdMaW50IHZlcnRleERhdGFbXSA9IHsxLCAyLCAzLCAxLCAy
LCAzfTsKLSAgICBnbFZlcnRleEF0dHJpYklQb2ludGVyKG1JbnRBdHRyaWJMb2NhdGlvbiwgMSwg
R0xfSU5ULCAwLCB2ZXJ0ZXhEYXRhKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRp
b24iLCAwLjVmKTsKLQotICAgIEdMaW50IHBpeGVsVmFsdWUgPSAwOwotICAgIGdsUmVhZFBpeGVs
cygwLCAwLCAxLCAxLCBHTF9SRURfSU5URUdFUiwgR0xfSU5ULCAmcGl4ZWxWYWx1ZSk7Ci0KLSAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfRVEodmVydGV4RGF0YVsyXSwgcGl4
ZWxWYWx1ZSk7Ci19Ci0KLS8vIEVuc3VyZSB0aGF0IGFueSBwcm92b2tpbmcgdmVydGV4IHNoZW5h
bmlnYW5zIHN0aWxsIGdpdmVzIGNvcnJlY3QgdmVydGV4IHN0cmVhbXMuCi1URVNUX1AoUHJvdm9r
aW5nVmVydGV4VGVzdCwgRmxhdFRyaVdpdGhUcmFuc2Zvcm1GZWVkYmFjaykKLXsKLSAgICAvLyBU
T0RPKGN3YWxsZXopIGZpZ3VyZSBvdXQgd2h5IGl0IGlzIGJyb2tlbiBvbiBBTUQgb24gTWFjCi0j
aWYgZGVmaW5lZChBTkdMRV9QTEFURk9STV9BUFBMRSkKLSAgICBpZiAoSXNBTUQoKSkKLSAgICB7
Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEFNRCBvbiBNYWMuIiA8PCBz
dGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0jZW5kaWYKLQotICAgIGdsR2VuVHJh
bnNmb3JtRmVlZGJhY2tzKDEsICZtVHJhbnNmb3JtRmVlZGJhY2spOwotICAgIGdsQmluZFRyYW5z
Zm9ybUZlZWRiYWNrKEdMX1RSQU5TRk9STV9GRUVEQkFDSywgbVRyYW5zZm9ybUZlZWRiYWNrKTsK
LQotICAgIGdsR2VuQnVmZmVycygxLCAmbUJ1ZmZlcik7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX1RS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG1CdWZmZXIpOwotICAgIGdsQnVmZmVyRGF0YShHTF9U
UkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAxMjgsIG51bGxwdHIsIEdMX1NUUkVBTV9EUkFXKTsK
LQotICAgIGdsQmluZEJ1ZmZlckJhc2UoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwg
bUJ1ZmZlcik7Ci0KLSAgICBHTGludCB2ZXJ0ZXhEYXRhW10gPSB7MSwgMiwgMywgMSwgMiwgM307
Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJJUG9pbnRlcihtSW50QXR0cmliTG9jYXRpb24sIDEsIEdMX0lO
VCwgMCwgdmVydGV4RGF0YSk7Ci0KLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIGds
QmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTF9UUklBTkdMRVMpOwotICAgIGRyYXdRdWFkKG1Qcm9n
cmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBnbEVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7Ci0g
ICAgZ2xVc2VQcm9ncmFtKDApOwotCi0gICAgR0xpbnQgcGl4ZWxWYWx1ZSA9IDA7Ci0gICAgZ2xS
ZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIEdMX1JFRF9JTlRFR0VSLCBHTF9JTlQsICZwaXhlbFZhbHVl
KTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9FUSh2ZXJ0ZXhEYXRh
WzJdLCBwaXhlbFZhbHVlKTsKLQotICAgIEdMdm9pZCAqbWFwUG9pbnRlciA9Ci0gICAgICAgIGds
TWFwQnVmZmVyUmFuZ2UoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgc2l6ZW9mKGlu
dCkgKiA2LCBHTF9NQVBfUkVBRF9CSVQpOwotICAgIEFTU0VSVF9ORShudWxscHRyLCBtYXBQb2lu
dGVyKTsKLQotICAgIGludCAqbWFwcGVkSW50cyA9IHN0YXRpY19jYXN0PGludCAqPihtYXBQb2lu
dGVyKTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBjbnQgPSAwOyBjbnQgPCA2OyArK2NudCkKLSAg
ICB7Ci0gICAgICAgIEVYUEVDVF9FUSh2ZXJ0ZXhEYXRhW2NudF0sIG1hcHBlZEludHNbY250XSk7
Ci0gICAgfQotfQotCi0vLyBUZXN0IGRyYXdpbmcgYSBzaW1wbGUgbGluZSB3aXRoIGZsYXQgc2hh
ZGluZywgYW5kIGRpZmZlcmVudCB2YWx1ZWQgdmVydGljZXMuCi1URVNUX1AoUHJvdm9raW5nVmVy
dGV4VGVzdCwgRmxhdExpbmUpCi17Ci0gICAgR0xmbG9hdCBoYWxmUGl4ZWwgPSAxLjBmIC8gc3Rh
dGljX2Nhc3Q8R0xmbG9hdD4oZ2V0V2luZG93V2lkdGgoKSk7Ci0KLSAgICBHTGludCB2ZXJ0ZXhE
YXRhW10gICAgID0gezEsIDJ9OwotICAgIEdMZmxvYXQgcG9zaXRpb25EYXRhW10gPSB7LTEuMGYg
KyBoYWxmUGl4ZWwsIC0xLjBmLCAtMS4wZiArIGhhbGZQaXhlbCwgMS4wZn07Ci0KLSAgICBnbFZl
cnRleEF0dHJpYklQb2ludGVyKG1JbnRBdHRyaWJMb2NhdGlvbiwgMSwgR0xfSU5ULCAwLCB2ZXJ0
ZXhEYXRhKTsKLQotICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0
aW9uKG1Qcm9ncmFtLCAicG9zaXRpb24iKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KHBvc2l0aW9uTG9jYXRpb24pOwotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxv
Y2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHBvc2l0aW9uRGF0YSk7Ci0KLSAgICBn
bFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIGdsRHJhd0FycmF5cyhHTF9MSU5FUywgMCwgMik7
Ci0KLSAgICBHTGludCBwaXhlbFZhbHVlID0gMDsKLSAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMSwg
MSwgR0xfUkVEX0lOVEVHRVIsIEdMX0lOVCwgJnBpeGVsVmFsdWUpOwotCi0gICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VRKHZlcnRleERhdGFbMV0sIHBpeGVsVmFsdWUpOwot
fQotCi0vLyBUZXN0IGRyYXdpbmcgYSBzaW1wbGUgdHJpYW5nbGUgc3RyaXAgd2l0aCBmbGF0IHNo
YWRpbmcsIGFuZCBkaWZmZXJlbnQgdmFsdWVkIHZlcnRpY2VzLgotVEVTVF9QKFByb3Zva2luZ1Zl
cnRleFRlc3QsIEZsYXRUcmlTdHJpcCkKLXsKLSAgICBHTGludCB2ZXJ0ZXhEYXRhW10gICAgID0g
ezEsIDIsIDMsIDQsIDUsIDZ9OwotICAgIEdMZmxvYXQgcG9zaXRpb25EYXRhW10gPSB7LTEuMGYs
IC0xLjBmLCAtMS4wZiwgMS4wZiwgIDAuMGYsIC0xLjBmLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMC4wZiwgIDEuMGYsICAxLjBmLCAgLTEuMGYsIDEuMGYsIDEuMGZ9OwotCi0gICAg
Z2xWZXJ0ZXhBdHRyaWJJUG9pbnRlcihtSW50QXR0cmliTG9jYXRpb24sIDEsIEdMX0lOVCwgMCwg
dmVydGV4RGF0YSk7Ci0KLSAgICBHTGludCBwb3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJM
b2NhdGlvbihtUHJvZ3JhbSwgInBvc2l0aW9uIik7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheShwb3NpdGlvbkxvY2F0aW9uKTsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRp
b25Mb2NhdGlvbiwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBwb3NpdGlvbkRhdGEpOwotCi0g
ICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVf
U1RSSVAsIDAsIDYpOwotCi0gICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IHBpeGVsQnVmZmVyKGdldFdp
bmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSwgMCk7Ci0gICAgZ2xSZWFkUGl4ZWxzKDAs
IDAsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCBHTF9SRURfSU5URUdFUiwg
R0xfSU5ULAotICAgICAgICAgICAgICAgICAmcGl4ZWxCdWZmZXJbMF0pOwotCi0gICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGludCB0cmlJbmRleCA9IDA7IHRy
aUluZGV4IDwgNDsgKyt0cmlJbmRleCkKLSAgICB7Ci0gICAgICAgIEdMZmxvYXQgc3VtWCA9IHBv
c2l0aW9uRGF0YVt0cmlJbmRleCAqIDIgKyAwXSArIHBvc2l0aW9uRGF0YVt0cmlJbmRleCAqIDIg
KyAyXSArCi0gICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uRGF0YVt0cmlJbmRleCAqIDIg
KyA0XTsKLSAgICAgICAgR0xmbG9hdCBzdW1ZID0gcG9zaXRpb25EYXRhW3RyaUluZGV4ICogMiAr
IDFdICsgcG9zaXRpb25EYXRhW3RyaUluZGV4ICogMiArIDNdICsKLSAgICAgICAgICAgICAgICAg
ICAgICAgcG9zaXRpb25EYXRhW3RyaUluZGV4ICogMiArIDVdOwotCi0gICAgICAgIGZsb2F0IGNl
bnRlclggPSBzdW1YIC8gMy4wZiAqIDAuNWYgKyAwLjVmOwotICAgICAgICBmbG9hdCBjZW50ZXJZ
ID0gc3VtWSAvIDMuMGYgKiAwLjVmICsgMC41ZjsKLSAgICAgICAgdW5zaWduZWQgaW50IHBpeGVs
WCA9Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNlbnRlclggKiBzdGF0
aWNfY2FzdDxHTGZsb2F0PihnZXRXaW5kb3dXaWR0aCgpKSk7Ci0gICAgICAgIHVuc2lnbmVkIGlu
dCBwaXhlbFkgPQotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihjZW50ZXJZ
ICogc3RhdGljX2Nhc3Q8R0xmbG9hdD4oZ2V0V2luZG93SGVpZ2h0KCkpKTsKLSAgICAgICAgdW5z
aWduZWQgaW50IHBpeGVsSW5kZXggPSBwaXhlbFkgKiBnZXRXaW5kb3dXaWR0aCgpICsgcGl4ZWxY
OwotCi0gICAgICAgIHVuc2lnbmVkIGludCBwcm92b2tpbmdWZXJ0ZXhJbmRleCA9IHRyaUluZGV4
ICsgMjsKLQotICAgICAgICBFWFBFQ1RfRVEodmVydGV4RGF0YVtwcm92b2tpbmdWZXJ0ZXhJbmRl
eF0sIHBpeGVsQnVmZmVyW3BpeGVsSW5kZXhdKTsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgZHJhd2lu
ZyBhbiBpbmRleGVkIHRyaWFuZ2xlIHN0cmlwIHdpdGggZmxhdCBzaGFkaW5nIGFuZCBwcmltaXRp
dmUgcmVzdGFydC4KLVRFU1RfUChQcm92b2tpbmdWZXJ0ZXhUZXN0LCBGbGF0VHJpU3RyaXBQcmlt
aXRpdmVSZXN0YXJ0KQotewotICAgIC8vIFRPRE8oam1hZGlsbCk6IEltcGxlbWVudCBvbiB0aGUg
RDNEIGJhY2stZW5kLgotICAgIGlmIChJc0QzRDExKCkpCi0gICAgewotICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gRDNEMTEuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBHTGludCBpbmRleERhdGFbXSAgICAgID0gezAsIDEsIDIsIC0x
LCAxLCAyLCAzLCA0LCAtMSwgMywgNCwgNX07Ci0gICAgR0xpbnQgdmVydGV4RGF0YVtdICAgICA9
IHsxLCAyLCAzLCA0LCA1LCA2fTsKLSAgICBHTGZsb2F0IHBvc2l0aW9uRGF0YVtdID0gey0xLjBm
LCAtMS4wZiwgLTEuMGYsIDEuMGYsICAwLjBmLCAtMS4wZiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDAuMGYsICAxLjBmLCAgMS4wZiwgIC0xLjBmLCAxLjBmLCAxLjBmfTsKLQotICAg
IGdsVmVydGV4QXR0cmliSVBvaW50ZXIobUludEF0dHJpYkxvY2F0aW9uLCAxLCBHTF9JTlQsIDAs
IHZlcnRleERhdGEpOwotCi0gICAgR0xpbnQgcG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmli
TG9jYXRpb24obVByb2dyYW0sICJwb3NpdGlvbiIpOwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmli
QXJyYXkocG9zaXRpb25Mb2NhdGlvbik7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0
aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgcG9zaXRpb25EYXRhKTsKLQot
ICAgIGdsRGlzYWJsZShHTF9DVUxMX0ZBQ0UpOwotICAgIGdsRW5hYmxlKEdMX1BSSU1JVElWRV9S
RVNUQVJUX0ZJWEVEX0lOREVYKTsKLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIGds
RHJhd0VsZW1lbnRzKEdMX1RSSUFOR0xFX1NUUklQLCAxMiwgR0xfVU5TSUdORURfSU5ULCBpbmRl
eERhdGEpOwotCi0gICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IHBpeGVsQnVmZmVyKGdldFdpbmRvd1dp
ZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSwgMCk7Ci0gICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIGdl
dFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpLCBHTF9SRURfSU5URUdFUiwgR0xfSU5U
LAotICAgICAgICAgICAgICAgICAmcGl4ZWxCdWZmZXJbMF0pOwotCi0gICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICAvLyBBY2NvdW50IGZvciBwcmltaXRpdmUgcmVzdGFydCB3aGVuIGNo
ZWNraW5nIHRoZSB0cmlzLgotICAgIEdMaW50IHRyaU9mZnNldHNbXSA9IHswLCA0LCA1LCA5fTsK
LQotICAgIGZvciAodW5zaWduZWQgaW50IHRyaUluZGV4ID0gMDsgdHJpSW5kZXggPCA0OyArK3Ry
aUluZGV4KQotICAgIHsKLSAgICAgICAgR0xpbnQgdmVydGV4QSA9IGluZGV4RGF0YVt0cmlPZmZz
ZXRzW3RyaUluZGV4XSArIDBdOwotICAgICAgICBHTGludCB2ZXJ0ZXhCID0gaW5kZXhEYXRhW3Ry
aU9mZnNldHNbdHJpSW5kZXhdICsgMV07Ci0gICAgICAgIEdMaW50IHZlcnRleEMgPSBpbmRleERh
dGFbdHJpT2Zmc2V0c1t0cmlJbmRleF0gKyAyXTsKLQotICAgICAgICBHTGZsb2F0IHN1bVggPQot
ICAgICAgICAgICAgcG9zaXRpb25EYXRhW3ZlcnRleEEgKiAyXSArIHBvc2l0aW9uRGF0YVt2ZXJ0
ZXhCICogMl0gKyBwb3NpdGlvbkRhdGFbdmVydGV4QyAqIDJdOwotICAgICAgICBHTGZsb2F0IHN1
bVkgPSBwb3NpdGlvbkRhdGFbdmVydGV4QSAqIDIgKyAxXSArIHBvc2l0aW9uRGF0YVt2ZXJ0ZXhC
ICogMiArIDFdICsKLSAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25EYXRhW3ZlcnRleEMg
KiAyICsgMV07Ci0KLSAgICAgICAgZmxvYXQgY2VudGVyWCA9IHN1bVggLyAzLjBmICogMC41ZiAr
IDAuNWY7Ci0gICAgICAgIGZsb2F0IGNlbnRlclkgPSBzdW1ZIC8gMy4wZiAqIDAuNWYgKyAwLjVm
OwotICAgICAgICB1bnNpZ25lZCBpbnQgcGl4ZWxYID0KLSAgICAgICAgICAgIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGludD4oY2VudGVyWCAqIHN0YXRpY19jYXN0PEdMZmxvYXQ+KGdldFdpbmRvd1dp
ZHRoKCkpKTsKLSAgICAgICAgdW5zaWduZWQgaW50IHBpeGVsWSA9Ci0gICAgICAgICAgICBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNlbnRlclkgKiBzdGF0aWNfY2FzdDxHTGZsb2F0PihnZXRX
aW5kb3dIZWlnaHQoKSkpOwotICAgICAgICB1bnNpZ25lZCBpbnQgcGl4ZWxJbmRleCA9IHBpeGVs
WSAqIGdldFdpbmRvd1dpZHRoKCkgKyBwaXhlbFg7Ci0KLSAgICAgICAgdW5zaWduZWQgaW50IHBy
b3Zva2luZ1ZlcnRleEluZGV4ID0gdHJpSW5kZXggKyAyOwotCi0gICAgICAgIEVYUEVDVF9FUSh2
ZXJ0ZXhEYXRhW3Byb3Zva2luZ1ZlcnRleEluZGV4XSwgcGl4ZWxCdWZmZXJbcGl4ZWxJbmRleF0p
OwotICAgIH0KLX0KLQotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChQcm92b2tpbmdWZXJ0ZXhUZXN0
LCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7Ci0KLX0gIC8vIGFu
b255bW91cyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9SZWFkUGl4ZWxzVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvUmVhZFBpeGVsc1Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0N2QyZTNkYmFkNi4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1JlYWRQaXhlbHNUZXN0LmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDcyMiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gUmVhZFBpeGVsc1Rlc3Q6
Ci0vLyAgIFRlc3RzIGNhbGxzIHJlbGF0ZWQgdG8gZ2xSZWFkUGl4ZWxzLgotLy8KLQotI2luY2x1
ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0KLSNpbmNsdWRlIDxhcnJheT4KLQotI2luY2x1
ZGUgInJhbmRvbV91dGlscy5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFj
ZQotewotCi1jbGFzcyBSZWFkUGl4ZWxzVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJv
dGVjdGVkOgotICAgIFJlYWRQaXhlbHNUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dp
ZHRoKDMyKTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDMyKTsKLSAgICAgICAgc2V0Q29uZmln
UmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRD
b25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgIH0K
LX07Ci0KLS8vIFRlc3Qgb3V0IG9mIGJvdW5kcyBmcmFtZWJ1ZmZlciByZWFkcy4KLVRFU1RfUChS
ZWFkUGl4ZWxzVGVzdCwgT3V0T2ZCb3VuZHMpCi17Ci0gICAgLy8gVE9ETzogcmUtZW5hYmxlIG9u
Y2Ugcm9vdCBjYXVzZSBvZiBodHRwOi8vYW5nbGVidWcuY29tLzE0MTMgaXMgZml4ZWQKLSAgICBp
ZiAoSXNBbmRyb2lkKCkgJiYgSXNBZHJlbm8oKSAmJiBJc09wZW5HTEVTKCkpCi0gICAgewotICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBBZHJlbm8gT3BlbkdMRVMgb24gQW5k
cm9pZC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsQ2xl
YXJDb2xvcigxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JV
RkZFUl9CSVQpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgR0xzaXplaSBwaXhl
bHNXaWR0aCA9IDMyOwotICAgIEdMc2l6ZWkgcGl4ZWxzSGVpZ2h0ID0gMzI7Ci0gICAgR0xpbnQg
b2Zmc2V0ID0gMTY7Ci0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzKChwaXhlbHNXaWR0
aCArIG9mZnNldCkgKiAocGl4ZWxzSGVpZ2h0ICsgb2Zmc2V0KSk7Ci0KLSAgICBnbFJlYWRQaXhl
bHMoLW9mZnNldCwgLW9mZnNldCwgcGl4ZWxzV2lkdGggKyBvZmZzZXQsIHBpeGVsc0hlaWdodCAr
IG9mZnNldCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgJnBpeGVsc1swXSk7Ci0gICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBFeHBlY3QgdGhhdCBhbGwgcGl4ZWxzIHdoaWNo
IGZlbGwgd2l0aGluIHRoZSBmcmFtZWJ1ZmZlciBhcmUgcmVkCi0gICAgZm9yIChpbnQgeSA9IHBp
eGVsc0hlaWdodCAvIDI7IHkgPCBwaXhlbHNIZWlnaHQ7IHkrKykKLSAgICB7Ci0gICAgICAgIGZv
ciAoaW50IHggPSBwaXhlbHNXaWR0aCAvIDI7IHggPCBwaXhlbHNXaWR0aDsgeCsrKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoR0xDb2xvcjo6cmVkLCBwaXhlbHNbeSAqIChwaXhl
bHNXaWR0aCArIG9mZnNldCkgKyB4XSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWNsYXNzIFJl
YWRQaXhlbHNQQk9UZXN0IDogcHVibGljIFJlYWRQaXhlbHNUZXN0Ci17Ci0gIHByb3RlY3RlZDoK
LSAgICBSZWFkUGl4ZWxzUEJPVGVzdCgpIDogbVBCTygwKSwgbVRleHR1cmUoMCksIG1GQk8oMCkg
e30KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0
OjpTZXRVcCgpOwotCi0gICAgICAgIGdsR2VuQnVmZmVycygxLCAmbVBCTyk7Ci0gICAgICAgIGds
R2VuRnJhbWVidWZmZXJzKDEsICZtRkJPKTsKLQotICAgICAgICBSZXNldCg0ICogZ2V0V2luZG93
V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdodCgpLCA0LCAxKTsKLSAgICB9Ci0KLSAgICB2b2lkIFJl
c2V0KEdMdWludCBidWZmZXJTaXplLCBHTHVpbnQgZmJvV2lkdGgsIEdMdWludCBmYm9IZWlnaHQp
Ci0gICAgewotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIG1QQk8p
OwotICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfUElYRUxfUEFDS19CVUZGRVIsIGJ1ZmZlclNpemUs
IG51bGxwdHIsIEdMX1NUQVRJQ19EUkFXKTsKLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVM
X1BBQ0tfQlVGRkVSLCAwKTsKLQotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVy
ZSk7Ci0gICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1UZXh0dXJlKTsKLSAgICAgICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZSk7Ci0gICAgICAgIGdsVGV4U3RvcmFnZTJE
KEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4LCBmYm9XaWR0aCwgZmJvSGVpZ2h0KTsKLQotICAg
ICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCTyk7Ci0gICAgICAgIGds
RnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQw
LCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZSwgMCk7Ci0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCAwKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGdsRGVs
ZXRlQnVmZmVycygxLCAmbVBCTyk7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0
dXJlKTsKLSAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJm1GQk8pOwotCi0gICAgICAg
IEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVBCTyAgICAgPSAw
OwotICAgIEdMdWludCBtVGV4dHVyZSA9IDA7Ci0gICAgR0x1aW50IG1GQk8gICAgID0gMDsKLX07
Ci0KLS8vIFRlc3QgYmFzaWMgdXNhZ2Ugb2YgUEJPcy4KLVRFU1RfUChSZWFkUGl4ZWxzUEJPVGVz
dCwgQmFzaWMpCi17Ci0gICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOwot
ICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIG1QQk8pOwotICAg
IGdsUmVhZFBpeGVscygwLCAwLCAxNiwgMTYsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDAp
OwotCi0gICAgR0x2b2lkICptYXBwZWRQdHIgID0gZ2xNYXBCdWZmZXJSYW5nZShHTF9QSVhFTF9Q
QUNLX0JVRkZFUiwgMCwgMzIsIEdMX01BUF9SRUFEX0JJVCk7Ci0gICAgR0xDb2xvciAqZGF0YUNv
bG9yID0gc3RhdGljX2Nhc3Q8R0xDb2xvciAqPihtYXBwZWRQdHIpOwotICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOwotCi0gICAgRVhQRUNUX0VRKEdMQ29sb3I6OnJlZCwgZGF0YUNvbG9yWzBdKTsK
LQotICAgIGdsVW5tYXBCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIpOwotICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IGFuIGVycm9yIGlzIGdlbmVyYXRlZCB3aGVuIHRo
ZSBQQk8gaXMgdG9vIHNtYWxsLgotVEVTVF9QKFJlYWRQaXhlbHNQQk9UZXN0LCBQQk9Ub29TbWFs
bCkKLXsKLSAgICBSZXNldCg0ICogMTYgKiAxNiAtIDEsIDE2LCAxNik7Ci0KLSAgICBnbENsZWFy
Q29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZG
RVJfQklUKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEJ1ZmZlcihH
TF9QSVhFTF9QQUNLX0JVRkZFUiwgbVBCTyk7Ci0gICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDE2LCAx
NiwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0KLSAgICBFWFBFQ1RfR0xfRVJST1Io
R0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0vLyBUZXN0IGFuIGVycm9yIGlzIGdlbmVyYXRl
ZCB3aGVuIHRoZSBQQk8gaXMgbWFwcGVkLgotVEVTVF9QKFJlYWRQaXhlbHNQQk9UZXN0LCBQQk9N
YXBwZWQpCi17Ci0gICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOwotICAg
IGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIG1QQk8pOwotICAgIGds
TWFwQnVmZmVyUmFuZ2UoR0xfUElYRUxfUEFDS19CVUZGRVIsIDAsIDMyLCBHTF9NQVBfUkVBRF9C
SVQpOwotICAgIGdsUmVhZFBpeGVscygwLCAwLCAxNiwgMTYsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsIDApOwotCi0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
LX0KLQotLy8gVGVzdCB0aGF0IGJpbmRpbmcgYSBQQk8gdG8gQVJSQVlfQlVGRkVSIHdvcmtzIGFz
IGV4cGVjdGVkLgotVEVTVF9QKFJlYWRQaXhlbHNQQk9UZXN0LCBBcnJheUJ1ZmZlclRhcmdldCkK
LXsKLSAgICBnbENsZWFyQ29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7Ci0gICAgZ2xDbGVh
cihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAg
IGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZFUiwgbVBCTyk7Ci0gICAgZ2xSZWFkUGl4
ZWxzKDAsIDAsIDE2LCAxNiwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0KLSAgICBn
bEJpbmRCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIsIDApOwotICAgIGdsQmluZEJ1ZmZlcihH
TF9BUlJBWV9CVUZGRVIsIG1QQk8pOwotCi0gICAgR0x2b2lkICptYXBwZWRQdHIgPSBnbE1hcEJ1
ZmZlclJhbmdlKEdMX0FSUkFZX0JVRkZFUiwgMCwgMzIsIEdMX01BUF9SRUFEX0JJVCk7Ci0gICAg
R0xDb2xvciAqZGF0YUNvbG9yID0gc3RhdGljX2Nhc3Q8R0xDb2xvciAqPihtYXBwZWRQdHIpOwot
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgRVhQRUNUX0VRKEdMQ29sb3I6OnJlZCwg
ZGF0YUNvbG9yWzBdKTsKLQotICAgIGdsVW5tYXBCdWZmZXIoR0xfQVJSQVlfQlVGRkVSKTsKLSAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCB0aGF0IHVzaW5nIGEgUEJPIGRv
ZXMgbm90IG92ZXJ3cml0ZSBleGlzdGluZyBkYXRhLgotVEVTVF9QKFJlYWRQaXhlbHNQQk9UZXN0
LCBFeGlzdGluZ0RhdGFQcmVzZXJ2ZWQpCi17Ci0gICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBGaWd1
cmUgb3V0IHdoeSB0aGlzIGZhaWxzIG9uIEFNRCBPcGVuR0wgKGh0dHA6Ly9hbmdsZWJ1Zy5jb20v
MTI5MSkKLSAgICBpZiAoSXNBTUQoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BM
QVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0
IDw8ICJUZXN0IGRpc2FibGVkIG9uIEFNRCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBDbGVhciBiYWNrYnVmZmVyIHRvIHJlZAotICAgIGds
Q2xlYXJDb2xvcigxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9S
X0JVRkZFUl9CSVQpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gUmVhZCAx
NngxNiByZWdpb24gZnJvbSByZWQgYmFja2J1ZmZlciB0byBQQk8KLSAgICBnbEJpbmRCdWZmZXIo
R0xfUElYRUxfUEFDS19CVUZGRVIsIG1QQk8pOwotICAgIGdsUmVhZFBpeGVscygwLCAwLCAxNiwg
MTYsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotCi0gICAgLy8gQ2xlYXIgYmFja2J1
ZmZlciB0byBncmVlbgotICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAxLjBmLCAwLjBmLCAxLjBmKTsK
LSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOwotCi0gICAgLy8gUmVhZCAxNngxNiByZWdpb24gZnJvbSBncmVlbiBiYWNrYnVmZmVyIHRv
IFBCTyBhdCBvZmZzZXQgMTYKLSAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMTYsIDE2LCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLCByZWludGVycHJldF9jYXN0PEdMdm9pZCo+KDE2KSk7Ci0gICAg
R0x2b2lkICptYXBwZWRQdHIgID0gZ2xNYXBCdWZmZXJSYW5nZShHTF9QSVhFTF9QQUNLX0JVRkZF
UiwgMCwgMzIsIEdMX01BUF9SRUFEX0JJVCk7Ci0gICAgR0xDb2xvciAqZGF0YUNvbG9yID0gc3Rh
dGljX2Nhc3Q8R0xDb2xvciAqPihtYXBwZWRQdHIpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OwotCi0gICAgLy8gVGVzdCBwaXhlbCAwIGlzIHJlZCAoZXhpc3RpbmcgZGF0YSkKLSAgICBFWFBF
Q1RfRVEoR0xDb2xvcjo6cmVkLCBkYXRhQ29sb3JbMF0pOwotCi0gICAgLy8gVGVzdCBwaXhlbCAx
NiBpcyBncmVlbiAobmV3IGRhdGEpCi0gICAgRVhQRUNUX0VRKEdMQ29sb3I6OmdyZWVuLCBkYXRh
Q29sb3JbMTZdKTsKLQotICAgIGdsVW5tYXBCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIpOwot
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IHRoYXQgY2FsbGluZyBTdWJE
YXRhIHByZXNlcnZlcyBQQk8gZGF0YS4KLVRFU1RfUChSZWFkUGl4ZWxzUEJPVGVzdCwgU3ViRGF0
YVByZXNlcnZlc0NvbnRlbnRzKQotewotICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAwLjBmLCAwLjBm
LCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCBt
UEJPKTsKLSAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMTYsIDE2LCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCAwKTsKLQotICAgIHVuc2lnbmVkIGNoYXIgZGF0YVs0XSA9IHsgMSwgMiwgMywgNCB9
OwotCi0gICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCAwKTsKLSAgICBnbEJp
bmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtUEJPKTsKLSAgICBnbEJ1ZmZlclN1YkRhdGEoR0xf
QVJSQVlfQlVGRkVSLCAwLCA0LCBkYXRhKTsKLQotICAgIEdMdm9pZCAqbWFwcGVkUHRyICA9IGds
TWFwQnVmZmVyUmFuZ2UoR0xfQVJSQVlfQlVGRkVSLCAwLCAzMiwgR0xfTUFQX1JFQURfQklUKTsK
LSAgICBHTENvbG9yICpkYXRhQ29sb3IgPSBzdGF0aWNfY2FzdDxHTENvbG9yICo+KG1hcHBlZFB0
cik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBFWFBFQ1RfRVEoR0xDb2xvcigx
LCAyLCAzLCA0KSwgZGF0YUNvbG9yWzBdKTsKLQotICAgIGdsVW5tYXBCdWZmZXIoR0xfQVJSQVlf
QlVGRkVSKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gU2FtZSBhcyB0aGUg
cHJpb3IgdGVzdCwgYnV0IHdpdGggYW4gb2Zmc2V0LgotVEVTVF9QKFJlYWRQaXhlbHNQQk9UZXN0
LCBTdWJEYXRhT2Zmc2V0UHJlc2VydmVzQ29udGVudHMpCi17Ci0gICAgLy8gVE9ETzogcmUtZW5h
YmxlIG9uY2Ugcm9vdCBjYXVzZSBvZiBodHRwOi8vYW5nbGVidWcuY29tLzE0MTUgaXMgZml4ZWQK
LSAgICBpZiAoSXNBbmRyb2lkKCkgJiYgSXNBZHJlbm8oKSAmJiBJc09wZW5HTEVTKCkpCi0gICAg
ewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBBZHJlbm8gT3BlbkdMRVMg
b24gQW5kcm9pZC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGdsQ2xlYXJDb2xvcigxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xCaW5k
QnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCBtUEJPKTsKLSAgICBnbFJlYWRQaXhlbHMoMCwg
MCwgMTYsIDE2LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKLQotICAgIHVuc2lnbmVk
IGNoYXIgZGF0YVs0XSA9IHsgMSwgMiwgMywgNCB9OwotCi0gICAgZ2xCaW5kQnVmZmVyKEdMX1BJ
WEVMX1BBQ0tfQlVGRkVSLCAwKTsKLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBt
UEJPKTsKLSAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfQVJSQVlfQlVGRkVSLCAxNiwgNCwgZGF0YSk7
Ci0KLSAgICBHTHZvaWQgKm1hcHBlZFB0ciAgPSBnbE1hcEJ1ZmZlclJhbmdlKEdMX0FSUkFZX0JV
RkZFUiwgMCwgMzIsIEdMX01BUF9SRUFEX0JJVCk7Ci0gICAgR0xDb2xvciAqZGF0YUNvbG9yID0g
c3RhdGljX2Nhc3Q8R0xDb2xvciAqPihtYXBwZWRQdHIpOwotICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOwotCi0gICAgRVhQRUNUX0VRKEdMQ29sb3I6OnJlZCwgZGF0YUNvbG9yWzBdKTsKLSAgICBF
WFBFQ1RfRVEoR0xDb2xvcigxLCAyLCAzLCA0KSwgZGF0YUNvbG9yWzRdKTsKLQotICAgIGdsVW5t
YXBCdWZmZXIoR0xfQVJSQVlfQlVGRkVSKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0K
LQotY2xhc3MgUmVhZFBpeGVsc1BCT0RyYXdUZXN0IDogcHVibGljIFJlYWRQaXhlbHNQQk9UZXN0
Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBSZWFkUGl4ZWxzUEJPRHJhd1Rlc3QoKSA6IG1Qcm9ncmFt
KDApLCBtUG9zaXRpb25WQk8oMCkge30KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgUmVhZFBpeGVsc1BCT1Rlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgY29uc3Qg
Y2hhciAqdmVydGV4U2hhZGVyU3JjID0KLSAgICAgICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhVGVz
dDsgYXR0cmlidXRlIHZlYzIgYVBvc2l0aW9uOyB2YXJ5aW5nIHZlYzQgdlRlc3Q7XG4iCi0gICAg
ICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAi
ICAgIHZUZXN0ICAgICAgICA9IGFUZXN0O1xuIgotICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlv
biAgPSB2ZWM0KGFQb3NpdGlvbiwgMC4wLCAxLjApO1xuIgotICAgICAgICAgICAgIiAgICBnbF9Q
b2ludFNpemUgPSAxLjA7XG4iCi0gICAgICAgICAgICAifSI7Ci0KLSAgICAgICAgY29uc3QgY2hh
ciAqZnJhZ21lbnRTaGFkZXJTcmMgPQotICAgICAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZs
b2F0OyB2YXJ5aW5nIHZlYzQgdlRlc3Q7XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKClcbiIK
LSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZUZXN0
O1xuIgotICAgICAgICAgICAgIn0iOwotCi0gICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dy
YW0odmVydGV4U2hhZGVyU3JjLCBmcmFnbWVudFNoYWRlclNyYyk7Ci0gICAgICAgIEFTU0VSVF9O
RSgwdSwgbVByb2dyYW0pOwotCi0gICAgICAgIGdsR2VuQnVmZmVycygxLCAmbVBvc2l0aW9uVkJP
KTsKLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbVBvc2l0aW9uVkJPKTsK
LSAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgMTI4LCBOVUxMLCBHTF9EWU5B
TUlDX0RSQVcpOwotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGdsRGVs
ZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbVBvc2l0
aW9uVkJPKTsKLSAgICAgICAgUmVhZFBpeGVsc1BCT1Rlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQot
Ci0gICAgR0x1aW50IG1Qcm9ncmFtOwotICAgIEdMdWludCBtUG9zaXRpb25WQk87Ci19OwotCi0v
LyBUZXN0IHRoYXQgd2UgY2FuIGRyYXcgd2l0aCBQQk8gZGF0YS4KLVRFU1RfUChSZWFkUGl4ZWxz
UEJPRHJhd1Rlc3QsIERyYXdXaXRoUEJPKQotewotICAgIEdMQ29sb3IgY29sb3IoMSwgMiwgMywg
NCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZSk7Ci0gICAgZ2xU
ZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VO
U0lHTkVEX0JZVEUsICZjb2xvcik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSLCBtRkJPKTsKLSAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZFUiwg
bVBCTyk7Ci0gICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsIDApOwotICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9QQUNLX0JVRkZFUiwgMCk7Ci0g
ICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBmbG9hdCBwb3NpdGlvbkRhdGFbXSA9IHsg
MC41ZiwgMC41ZiB9OwotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBnbFZpZXdw
b3J0KDAsIDAsIDEsIDEpOwotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1Qb3Np
dGlvblZCTyk7Ci0gICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgMCwgMSAqIDIg
KiA0LCBwb3NpdGlvbkRhdGEpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgR0xp
bnQgcG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJhUG9z
aXRpb24iKTsKLSAgICBFWFBFQ1RfTkUoLTEsIHBvc2l0aW9uTG9jYXRpb24pOwotCi0gICAgR0xp
bnQgdGVzdExvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImFUZXN0Iik7
Ci0gICAgRVhQRUNUX05FKC0xLCB0ZXN0TG9jYXRpb24pOwotCi0gICAgZ2xWZXJ0ZXhBdHRyaWJQ
b2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgMCk7Ci0g
ICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKLSAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1Q
Qk8pOwotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcih0ZXN0TG9jYXRpb24sIDQsIEdMX1VOU0lH
TkVEX0JZVEUsIEdMX0ZBTFNFLCAwLCAwKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KHRlc3RMb2NhdGlvbik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbERyYXdB
cnJheXMoR0xfUE9JTlRTLCAwLCAxKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAg
IGNvbG9yID0gR0xDb2xvcigwLCAwLCAwLCAwKTsKLSAgICBnbFJlYWRQaXhlbHMoMCwgMCwgMSwg
MSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgJmNvbG9yKTsKLSAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKLQotICAgIEVYUEVDVF9FUShHTENvbG9yKDEsIDIsIDMsIDQpLCBjb2xvcik7Ci19
Ci0KLWNsYXNzIFJlYWRQaXhlbHNNdWx0aXNhbXBsZVRlc3QgOiBwdWJsaWMgUmVhZFBpeGVsc1Rl
c3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFJlYWRQaXhlbHNNdWx0aXNhbXBsZVRlc3QoKSA6IG1G
Qk8oMCksIG1SQk8oMCksIG1QQk8oMCkge30KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGdsR2VuRnJhbWVi
dWZmZXJzKDEsICZtRkJPKTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIG1GQk8pOwotCi0gICAgICAgIGdsR2VuUmVuZGVyYnVmZmVycygxLCAmbVJCTyk7Ci0gICAg
ICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1SQk8pOwotCi0gICAgICAg
IGdsR2VuQnVmZmVycygxLCAmbVBCTyk7Ci0gICAgICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9Q
QUNLX0JVRkZFUiwgbVBCTyk7Ci0gICAgICAgIGdsQnVmZmVyRGF0YShHTF9QSVhFTF9QQUNLX0JV
RkZFUiwgNCAqIGdldFdpbmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSwgbnVsbHB0ciwK
LSAgICAgICAgICAgICAgICAgICAgIEdMX1NUQVRJQ19EUkFXKTsKLSAgICAgICAgZ2xCaW5kQnVm
ZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCAwKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLQotICAgICAgICBnbERlbGV0ZUZyYW1lYnVmZmVy
cygxLCAmbUZCTyk7Ci0gICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVycygxLCAmbVJCTyk7Ci0g
ICAgICAgIGdsRGVsZXRlQnVmZmVycygxLCAmbVBCTyk7Ci0gICAgfQotCi0gICAgR0x1aW50IG1G
Qk87Ci0gICAgR0x1aW50IG1SQk87Ci0gICAgR0x1aW50IG1QQk87Ci19OwotCi0vLyBUZXN0IFJl
YWRQaXhlbHMgZnJvbSBhIG11bHRpc2FtcGxlZCBmcmFtZWJ1ZmZlci4KLVRFU1RfUChSZWFkUGl4
ZWxzTXVsdGlzYW1wbGVUZXN0LCBCYXNpY0NsZWFyKQotewotICAgIGlmIChnZXRDbGllbnRNYWpv
clZlcnNpb24oKSA8IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2ZyYW1lYnVmZmVy
X211bHRpc2FtcGxlIikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBl
ZCBiZWNhdXNlIEVTMyBvciBHTF9BTkdMRV9mcmFtZWJ1ZmZlcl9tdWx0aXNhbXBsZSBpcyBub3Qg
YXZhaWxhYmxlLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
aWYgKGV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlIikp
Ci0gICAgewotICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUFOR0xFKEdM
X1JFTkRFUkJVRkZFUiwgMiwgR0xfUkdCQTgsIDQsIDQpOwotICAgIH0KLSAgICBlbHNlCi0gICAg
ewotICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZShHTF9SRU5ERVJCVUZG
RVIsIDIsIEdMX1JHQkE4LCA0LCA0KTsKLSAgICB9Ci0KLSAgICBnbEZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfUkVOREVSQlVG
RkVSLCBtUkJPKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsQ2xlYXJDb2xv
cigxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9C
SVQpOwotCi0gICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCBtUEJPKTsKLSAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsUmVhZFBpeGVscygwLCAwLCAxLCAxLCBH
TF9SR0JBOCwgR0xfVU5TSUdORURfQllURSwgTlVMTCk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotY2xhc3MgUmVhZFBpeGVsc1RleHR1cmVUZXN0IDog
cHVibGljIEFOR0xFVGVzdAotewotICBwdWJsaWM6Ci0gICAgUmVhZFBpeGVsc1RleHR1cmVUZXN0
KCkgOiBtRkJPKDApLCBtVGV4dHVyZSgwKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgo
MzIpOwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMzIpOwotICAgICAgICBzZXRDb25maWdSZWRC
aXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZp
Z0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotCi0g
ICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVw
KCk7Ci0KLSAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVRleHR1cmUpOwotICAgICAgICBnbEdl
bkZyYW1lYnVmZmVycygxLCAmbUZCTyk7Ci0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZS
QU1FQlVGRkVSLCBtRkJPKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtRkJPKTsKLSAgICAgICAg
Z2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUpOwotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVh
ckRvd24oKTsKLSAgICB9Ci0KLSAgICB2b2lkIGluaXRUZXh0dXJlKEdMZW51bSB0ZXh0dXJlVGFy
Z2V0LAotICAgICAgICAgICAgICAgICAgICAgR0xpbnQgbGV2ZWxzLAotICAgICAgICAgICAgICAg
ICAgICAgR0xpbnQgYXR0YWNobWVudExldmVsLAotICAgICAgICAgICAgICAgICAgICAgR0xpbnQg
YXR0YWNobWVudExheWVyKQotICAgIHsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZSh0ZXh0dXJlVGFy
Z2V0LCBtVGV4dHVyZSk7Ci0gICAgICAgIGdsVGV4U3RvcmFnZTNEKHRleHR1cmVUYXJnZXQsIGxl
dmVscywgR0xfUkdCQTgsIDQsIDQsIDQpOwotICAgICAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZUxh
eWVyKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgbVRleHR1cmUsIGF0dGFj
aG1lbnRMZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRhY2htZW50
TGF5ZXIpOwotICAgICAgICBpbml0aWFsaXplVGV4dHVyZURhdGEodGV4dHVyZVRhcmdldCwgbGV2
ZWxzKTsKLSAgICB9Ci0KLSAgICB2b2lkIHRlc3RSZWFkKEdMZW51bSB0ZXh0dXJlVGFyZ2V0LCBH
TGludCBsZXZlbHMsIEdMaW50IGF0dGFjaG1lbnRMZXZlbCwgR0xpbnQgYXR0YWNobWVudExheWVy
KQotICAgIHsKLSAgICAgICAgaW5pdFRleHR1cmUodGV4dHVyZVRhcmdldCwgbGV2ZWxzLCBhdHRh
Y2htZW50TGV2ZWwsIGF0dGFjaG1lbnRMYXllcik7Ci0gICAgICAgIHZlcmlmeUNvbG9yKGF0dGFj
aG1lbnRMZXZlbCwgYXR0YWNobWVudExheWVyKTsKLSAgICB9Ci0KLSAgICB2b2lkIGluaXRQQk8o
KQotICAgIHsKLSAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtQnVmZmVyKTsKLSAgICAgICAgZ2xC
aW5kQnVmZmVyKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCBtQnVmZmVyKTsKLSAgICAgICAgZ2xCdWZm
ZXJEYXRhKEdMX1BJWEVMX1BBQ0tfQlVGRkVSLCBzaXplb2YoYW5nbGU6OkdMQ29sb3IpLCBudWxs
cHRyLCBHTF9TVFJFQU1fQ09QWSk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAg
IH0KLQotICAgIHZvaWQgdGVzdFBCT1JlYWQoR0xlbnVtIHRleHR1cmVUYXJnZXQsCi0gICAgICAg
ICAgICAgICAgICAgICBHTGludCBsZXZlbHMsCi0gICAgICAgICAgICAgICAgICAgICBHTGludCBh
dHRhY2htZW50TGV2ZWwsCi0gICAgICAgICAgICAgICAgICAgICBHTGludCBhdHRhY2htZW50TGF5
ZXIpCi0gICAgewotICAgICAgICBpbml0UEJPKCk7Ci0gICAgICAgIGluaXRUZXh0dXJlKHRleHR1
cmVUYXJnZXQsIGxldmVscywgYXR0YWNobWVudExldmVsLCBhdHRhY2htZW50TGF5ZXIpOwotICAg
ICAgICB2ZXJpZnlQQk8oYXR0YWNobWVudExldmVsLCBhdHRhY2htZW50TGF5ZXIpOwotICAgIH0K
LQotICAgIC8vIEdpdmUgZWFjaCB7bGV2ZWwsbGF5ZXJ9IHBhaXIgYSAocHJvYmFibHkpIHVuaXF1
ZSBjb2xvciB2aWEgcmFuZG9tLgotICAgIEdMdWludCBnZXRDb2xvclZhbHVlKEdMaW50IGxldmVs
LCBHTGludCBsYXllcikKLSAgICB7Ci0gICAgICAgIG1STkcucmVzZWVkKGxldmVsICsgbGF5ZXIg
KiAzMik7Ci0gICAgICAgIHJldHVybiBtUk5HLnJhbmRvbVVJbnQoKTsKLSAgICB9Ci0KLSAgICB2
b2lkIHZlcmlmeUNvbG9yKEdMaW50IGxldmVsLCBHTGludCBsYXllcikKLSAgICB7Ci0gICAgICAg
IGFuZ2xlOjpHTENvbG9yIGNvbG9yVmFsdWUoZ2V0Q29sb3JWYWx1ZShsZXZlbCwgbGF5ZXIpKTsK
LSAgICAgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIGNvbG9yVmFsdWUpOwotICAgIH0K
LQotICAgIHZvaWQgdmVyaWZ5UEJPKEdMaW50IGxldmVsLCBHTGludCBsYXllcikKLSAgICB7Ci0g
ICAgICAgIGdsUmVhZFBpeGVscygwLCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCBudWxscHRyKTsKLQotICAgICAgICBhbmdsZTo6R0xDb2xvciBleHBlY3RlZENvbG9yKGdldENv
bG9yVmFsdWUobGV2ZWwsIGxheWVyKSk7Ci0gICAgICAgIHZvaWQgKm1hcFBvaW50ZXIgPQotICAg
ICAgICAgICAgZ2xNYXBCdWZmZXJSYW5nZShHTF9QSVhFTF9QQUNLX0JVRkZFUiwgMCwgc2l6ZW9m
KGFuZ2xlOjpHTENvbG9yKSwgR0xfTUFQX1JFQURfQklUKTsKLSAgICAgICAgQVNTRVJUX05FKG51
bGxwdHIsIG1hcFBvaW50ZXIpOwotICAgICAgICBhbmdsZTo6R0xDb2xvciBhY3R1YWxDb2xvcjsK
LSAgICAgICAgbWVtY3B5KCZhY3R1YWxDb2xvciwgbWFwUG9pbnRlciwgc2l6ZW9mKGFuZ2xlOjpH
TENvbG9yKSk7Ci0gICAgICAgIGdsVW5tYXBCdWZmZXIoR0xfUElYRUxfUEFDS19CVUZGRVIpOwot
ICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgRVhQRUNUX0VRKGV4cGVjdGVk
Q29sb3IsIGFjdHVhbENvbG9yKTsKLSAgICB9Ci0KLSAgICB2b2lkIGluaXRpYWxpemVUZXh0dXJl
RGF0YShHTGVudW0gdGV4dHVyZVRhcmdldCwgR0xpbnQgbGV2ZWxzKQotICAgIHsKLSAgICAgICAg
Zm9yIChHTGludCBsZXZlbCA9IDA7IGxldmVsIDwgbGV2ZWxzOyArK2xldmVsKQotICAgICAgICB7
Ci0gICAgICAgICAgICBHTGludCBtaXBTaXplID0gNCA+PiBsZXZlbDsKLSAgICAgICAgICAgIEdM
aW50IGxheWVycyAgPSAodGV4dHVyZVRhcmdldCA9PSBHTF9URVhUVVJFXzNEID8gbWlwU2l6ZSA6
IDQpOwotCi0gICAgICAgICAgICBzaXplX3QgbGF5ZXJTaXplID0gbWlwU2l6ZSAqIG1pcFNpemU7
Ci0gICAgICAgICAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IHRleHR1cmVEYXRhKGxheWVycyAqIGxh
eWVyU2l6ZSk7Ci0KLSAgICAgICAgICAgIGZvciAoR0xpbnQgbGF5ZXIgPSAwOyBsYXllciA8IGxh
eWVyczsgKytsYXllcikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBHTHVpbnQgY29s
b3JWYWx1ZSA9IGdldENvbG9yVmFsdWUobGV2ZWwsIGxheWVyKTsKLSAgICAgICAgICAgICAgICBz
aXplX3Qgb2Zmc2V0ID0gKGxheWVyICogbGF5ZXJTaXplKTsKLSAgICAgICAgICAgICAgICBzdGQ6
OmZpbGwodGV4dHVyZURhdGEuYmVnaW4oKSArIG9mZnNldCwgdGV4dHVyZURhdGEuYmVnaW4oKSAr
IG9mZnNldCArIGxheWVyU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3JWYWx1
ZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGdsVGV4U3ViSW1hZ2UzRCh0ZXh0dXJl
VGFyZ2V0LCBsZXZlbCwgMCwgMCwgMCwgbWlwU2l6ZSwgbWlwU2l6ZSwgbGF5ZXJzLCBHTF9SR0JB
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIHRleHR1cmVE
YXRhLmRhdGEoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBhbmdsZTo6Uk5HIG1STkc7Ci0g
ICAgR0x1aW50IG1GQk87Ci0gICAgR0x1aW50IG1UZXh0dXJlOwotICAgIEdMdWludCBtQnVmZmVy
OwotfTsKLQotLy8gVGVzdCAzRCBhdHRhY2htZW50IHJlYWRiYWNrLgotVEVTVF9QKFJlYWRQaXhl
bHNUZXh0dXJlVGVzdCwgQmFzaWNBdHRhY2htZW50M0QpCi17Ci0gICAgdGVzdFJlYWQoR0xfVEVY
VFVSRV8zRCwgMSwgMCwgMCk7Ci19Ci0KLS8vIFRlc3QgM0QgYXR0YWNobWVudCByZWFkYmFjaywg
bm9uLXplcm8gbWlwLgotVEVTVF9QKFJlYWRQaXhlbHNUZXh0dXJlVGVzdCwgTWlwQXR0YWNobWVu
dDNEKQotewotICAgIHRlc3RSZWFkKEdMX1RFWFRVUkVfM0QsIDIsIDEsIDApOwotfQotCi0vLyBU
ZXN0IDNEIGF0dGFjaG1lbnQgcmVhZGJhY2ssIG5vbi16ZXJvIGxheWVyLgotVEVTVF9QKFJlYWRQ
aXhlbHNUZXh0dXJlVGVzdCwgTGF5ZXJBdHRhY2htZW50M0QpCi17Ci0gICAgdGVzdFJlYWQoR0xf
VEVYVFVSRV8zRCwgMSwgMCwgMSk7Ci19Ci0KLS8vIFRlc3QgM0QgYXR0YWNobWVudCByZWFkYmFj
aywgbm9uLXplcm8gbWlwIGFuZCBsYXllci4KLVRFU1RfUChSZWFkUGl4ZWxzVGV4dHVyZVRlc3Qs
IE1pcExheWVyQXR0YWNobWVudDNEKQotewotICAgIHRlc3RSZWFkKEdMX1RFWFRVUkVfM0QsIDIs
IDEsIDEpOwotfQotCi0vLyBUZXN0IDJEIGFycmF5IGF0dGFjaG1lbnQgcmVhZGJhY2suCi1URVNU
X1AoUmVhZFBpeGVsc1RleHR1cmVUZXN0LCBCYXNpY0F0dGFjaG1lbnQyREFycmF5KQotewotICAg
IHRlc3RSZWFkKEdMX1RFWFRVUkVfMkRfQVJSQVksIDEsIDAsIDApOwotfQotCi0vLyBUZXN0IDNE
IGF0dGFjaG1lbnQgcmVhZGJhY2ssIG5vbi16ZXJvIG1pcC4KLVRFU1RfUChSZWFkUGl4ZWxzVGV4
dHVyZVRlc3QsIE1pcEF0dGFjaG1lbnQyREFycmF5KQotewotICAgIHRlc3RSZWFkKEdMX1RFWFRV
UkVfMkRfQVJSQVksIDIsIDEsIDApOwotfQotCi0vLyBUZXN0IDNEIGF0dGFjaG1lbnQgcmVhZGJh
Y2ssIG5vbi16ZXJvIGxheWVyLgotVEVTVF9QKFJlYWRQaXhlbHNUZXh0dXJlVGVzdCwgTGF5ZXJB
dHRhY2htZW50MkRBcnJheSkKLXsKLSAgICB0ZXN0UmVhZChHTF9URVhUVVJFXzJEX0FSUkFZLCAx
LCAwLCAxKTsKLX0KLQotLy8gVGVzdCAzRCBhdHRhY2htZW50IHJlYWRiYWNrLCBub24temVybyBt
aXAgYW5kIGxheWVyLgotVEVTVF9QKFJlYWRQaXhlbHNUZXh0dXJlVGVzdCwgTWlwTGF5ZXJBdHRh
Y2htZW50MkRBcnJheSkKLXsKLSAgICB0ZXN0UmVhZChHTF9URVhUVVJFXzJEX0FSUkFZLCAyLCAx
LCAxKTsKLX0KLQotLy8gVGVzdCAzRCBhdHRhY2htZW50IFBCTyByZWFkYmFjay4KLVRFU1RfUChS
ZWFkUGl4ZWxzVGV4dHVyZVRlc3QsIEJhc2ljQXR0YWNobWVudDNEUEJPKQotewotICAgIHRlc3RQ
Qk9SZWFkKEdMX1RFWFRVUkVfM0QsIDEsIDAsIDApOwotfQotCi0vLyBUZXN0IDNEIGF0dGFjaG1l
bnQgcmVhZGJhY2ssIG5vbi16ZXJvIG1pcC4KLVRFU1RfUChSZWFkUGl4ZWxzVGV4dHVyZVRlc3Qs
IE1pcEF0dGFjaG1lbnQzRFBCTykKLXsKLSAgICB0ZXN0UEJPUmVhZChHTF9URVhUVVJFXzNELCAy
LCAxLCAwKTsKLX0KLQotLy8gVGVzdCAzRCBhdHRhY2htZW50IHJlYWRiYWNrLCBub24temVybyBs
YXllci4KLVRFU1RfUChSZWFkUGl4ZWxzVGV4dHVyZVRlc3QsIExheWVyQXR0YWNobWVudDNEUEJP
KQotewotICAgIHRlc3RQQk9SZWFkKEdMX1RFWFRVUkVfM0QsIDEsIDAsIDEpOwotfQotCi0vLyBU
ZXN0IDNEIGF0dGFjaG1lbnQgcmVhZGJhY2ssIG5vbi16ZXJvIG1pcCBhbmQgbGF5ZXIuCi1URVNU
X1AoUmVhZFBpeGVsc1RleHR1cmVUZXN0LCBNaXBMYXllckF0dGFjaG1lbnQzRFBCTykKLXsKLSAg
ICB0ZXN0UEJPUmVhZChHTF9URVhUVVJFXzNELCAyLCAxLCAxKTsKLX0KLQotLy8gVGVzdCAyRCBh
cnJheSBhdHRhY2htZW50IHJlYWRiYWNrLgotVEVTVF9QKFJlYWRQaXhlbHNUZXh0dXJlVGVzdCwg
QmFzaWNBdHRhY2htZW50MkRBcnJheVBCTykKLXsKLSAgICB0ZXN0UEJPUmVhZChHTF9URVhUVVJF
XzJEX0FSUkFZLCAxLCAwLCAwKTsKLX0KLQotLy8gVGVzdCAzRCBhdHRhY2htZW50IHJlYWRiYWNr
LCBub24temVybyBtaXAuCi1URVNUX1AoUmVhZFBpeGVsc1RleHR1cmVUZXN0LCBNaXBBdHRhY2ht
ZW50MkRBcnJheVBCTykKLXsKLSAgICB0ZXN0UEJPUmVhZChHTF9URVhUVVJFXzJEX0FSUkFZLCAy
LCAxLCAwKTsKLX0KLQotLy8gVGVzdCAzRCBhdHRhY2htZW50IHJlYWRiYWNrLCBub24temVybyBs
YXllci4KLVRFU1RfUChSZWFkUGl4ZWxzVGV4dHVyZVRlc3QsIExheWVyQXR0YWNobWVudDJEQXJy
YXlQQk8pCi17Ci0gICAgdGVzdFBCT1JlYWQoR0xfVEVYVFVSRV8yRF9BUlJBWSwgMSwgMCwgMSk7
Ci19Ci0KLS8vIFRlc3QgM0QgYXR0YWNobWVudCByZWFkYmFjaywgbm9uLXplcm8gbWlwIGFuZCBs
YXllci4KLVRFU1RfUChSZWFkUGl4ZWxzVGV4dHVyZVRlc3QsIE1pcExheWVyQXR0YWNobWVudDJE
QXJyYXlQQk8pCi17Ci0gICAgdGVzdFBCT1JlYWQoR0xfVEVYVFVSRV8yRF9BUlJBWSwgMiwgMSwg
MSk7Ci19Ci0KLS8vIGEgdGVzdCBjbGFzcyB0byBiZSB1c2VkIGZvciBlcnJvciBjaGVja2luZyBv
ZiBnbFJlYWRQaXhlbHMKLWNsYXNzIFJlYWRQaXhlbHNFcnJvclRlc3QgOiBwdWJsaWMgUmVhZFBp
eGVsc1Rlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFJlYWRQaXhlbHNFcnJvclRlc3QoKSA6IG1U
ZXh0dXJlKDApLCBtRkJPKDApIHt9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBnbEdlblRleHR1cmVzKDEs
ICZtVGV4dHVyZSk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1
cmUpOwotICAgICAgICBnbFRleFN0b3JhZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JBOCwg
NCwgMSk7Ci0KLSAgICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1GQk8pOwotICAgICAgICBn
bEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCTyk7Ci0gICAgICAgIGdsRnJhbWVi
dWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9U
RVhUVVJFXzJELCBtVGV4dHVyZSwgMCk7Ci0gICAgICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZS
QU1FQlVGRkVSLCAwKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0K
LSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6
VGVhckRvd24oKTsKLQotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZSk7Ci0g
ICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtRkJPKTsKLSAgICB9Ci0KLSAgICBHTHVp
bnQgbVRleHR1cmU7Ci0gICAgR0x1aW50IG1GQk87Ci19OwotCi0vLyAgVGhlIHRlc3QgdmVyaWZp
ZXMgdGhhdCBnbFJlYWRQaXhlbHMgZ2VuZXJhdGVzIGEgR0xfSU5WQUxJRF9PUEVSQVRJT04gZXJy
b3IKLS8vICB3aGVuIHRoZSByZWFkIGJ1ZmZlciBpcyBHTF9OT05FLgotLy8gIFJlZmVyZW5jZTog
R0xFUyAzLjAuNCwgU2VjdGlvbiA0LjMuMiBSZWFkaW5nIFBpeGVscwotVEVTVF9QKFJlYWRQaXhl
bHNFcnJvclRlc3QsIFJlYWRCdWZmZXJJc05vbmUpCi17Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIG1GQk8pOwotICAgIGdsUmVhZEJ1ZmZlcihHTF9OT05FKTsKLSAgICBz
dGQ6OnZlY3RvcjxHTHVieXRlPiBwaXhlbHMoNCk7Ci0gICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDEs
IDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVscy5kYXRhKCkpOwotICAgIEVYUEVD
VF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLX0gIC8vIGFub255bW91cyBu
YW1lc3BhY2UKLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChl
LmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3Rz
IHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoUmVhZFBpeGVs
c1Rlc3QsIEVTMl9EM0QxMSgpLCBFUzJfT1BFTkdMKCksIEVTMl9PUEVOR0xFUygpKTsKLUFOR0xF
X0lOU1RBTlRJQVRFX1RFU1QoUmVhZFBpeGVsc1BCT1Rlc3QsIEVTM19EM0QxMSgpLCBFUzNfT1BF
TkdMKCksIEVTM19PUEVOR0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoUmVhZFBpeGVs
c1BCT0RyYXdUZXN0LCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7
Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKFJlYWRQaXhlbHNNdWx0aXNhbXBsZVRlc3QsIEVTM19E
M0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJQVRF
X1RFU1QoUmVhZFBpeGVsc1RleHR1cmVUZXN0LCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBF
UzNfT1BFTkdMRVMoKSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKFJlYWRQaXhlbHNFcnJvclRl
c3QsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9SZW5kZXJlclRl
c3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1JlbmRl
cmVyVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiMDdhY2JmN2QxLi4w
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVz
dHMvUmVuZGVyZXJUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMCArMCwwIEBACi0vLwot
Ly8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE
LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUu
Ci0vLwotLy8gUmVuZGVyZXJUZXN0OgotLy8gICBUaGVzZSB0ZXN0cyBhcmUgZGVzaWduZWQgdG8g
ZW5zdXJlIHRoYXQgdGhlIHZhcmlvdXMgY29uZmlndXJhdGlvbnMgb2YgdGhlIHRlc3QgZml4dHVy
ZXMgd29yayBhcyBleHBlY3RlZC4KLS8vICAgSWYgb25lIG9mIHRoZXNlIHRlc3RzIGZhaWxzLCB0
aGVuIGl0IGlzIGxpa2VseSB0aGF0IHNvbWUgb2YgdGhlIG90aGVyIHRlc3RzIGFyZSBiZWluZyBj
b25maWd1cmVkIGluY29ycmVjdGx5LgotLy8gICBGb3IgZXhhbXBsZSwgdGhleSBtaWdodCBiZSB1
c2luZyB0aGUgRDNEMTEgcmVuZGVyZXIgd2hlbiB0aGUgdGVzdCBpcyBtZWFudCB0byBiZSB1c2lu
ZyB0aGUgRDNEOSByZW5kZXJlci4KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0Lmgi
Ci0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17Ci0KLWNsYXNzIFJlbmRl
cmVyVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFJlbmRlcmVy
VGVzdCgpCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwotICAgICAgICBzZXRX
aW5kb3dIZWlnaHQoMTI4KTsKLSAgICB9Ci19OwotCi1URVNUX1AoUmVuZGVyZXJUZXN0LCBSZXF1
ZXN0ZWRSZW5kZXJlckNyZWF0ZWQpCi17Ci0gICAgc3RkOjpzdHJpbmcgcmVuZGVyZXJTdHJpbmcg
PSBzdGQ6OnN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbEdldFN0cmluZyhH
TF9SRU5ERVJFUikpKTsKLSAgICBzdGQ6OnRyYW5zZm9ybShyZW5kZXJlclN0cmluZy5iZWdpbigp
LCByZW5kZXJlclN0cmluZy5lbmQoKSwgcmVuZGVyZXJTdHJpbmcuYmVnaW4oKSwgOjp0b2xvd2Vy
KTsKLQotICAgIHN0ZDo6c3RyaW5nIHZlcnNpb25TdHJpbmcgPSBzdGQ6OnN0cmluZyhyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihnbEdldFN0cmluZyhHTF9WRVJTSU9OKSkpOwotICAgIHN0
ZDo6dHJhbnNmb3JtKHZlcnNpb25TdHJpbmcuYmVnaW4oKSwgdmVyc2lvblN0cmluZy5lbmQoKSwg
dmVyc2lvblN0cmluZy5iZWdpbigpLCA6OnRvbG93ZXIpOwotCi0gICAgY29uc3QgRUdMUGxhdGZv
cm1QYXJhbWV0ZXJzICZwbGF0Zm9ybSA9IEdldFBhcmFtKCkuZWdsUGFyYW1ldGVyczsKLQotICAg
IC8vIEVuc3VyZSB0aGF0IHRoZSByZW5kZXJlciBzdHJpbmcgY29udGFpbnMgRDNEMTEsIGlmIHdl
IHJlcXVlc3RlZCBhIEQzRDExIHJlbmRlcmVyLgotICAgIGlmIChwbGF0Zm9ybS5yZW5kZXJlciA9
PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVF9ORShyZW5kZXJlclN0cmluZy5maW5kKHN0ZDo6c3RyaW5nKCJkaXJlY3QzZDExIikpLCBz
dGQ6OnN0cmluZzo6bnBvcyk7Ci0gICAgfQotCi0gICAgLy8gRW5zdXJlIHRoYXQgdGhlIHJlbmRl
cmVyIHN0cmluZyBjb250YWlucyBEM0Q5LCBpZiB3ZSByZXF1ZXN0ZWQgYSBEM0Q5IHJlbmRlcmVy
LgotICAgIGlmIChwbGF0Zm9ybS5yZW5kZXJlciA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9E
M0Q5X0FOR0xFKQotICAgIHsKLSAgICAgICAgQVNTRVJUX05FKHJlbmRlcmVyU3RyaW5nLmZpbmQo
c3RkOjpzdHJpbmcoImRpcmVjdDNkOSIpKSwgc3RkOjpzdHJpbmc6Om5wb3MpOwotICAgIH0KLQot
ICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBtYWpvciBhbmQgbWlub3IgdmVyc2lvbnMgdHJpZ2dlciBl
eHBlY3RlZCBiZWhhdmlvciBpbiBEM0QxMQotICAgIGlmIChwbGF0Zm9ybS5yZW5kZXJlciA9PSBF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKLSAgICB7Ci0gICAgICAgIC8vIEVu
c3VyZSB0aGF0IHRoZSByZW5kZXJlciB1c2VzIFdBUlAsIGlmIHdlIHJlcXVlc3RlZCBpdC4KLSAg
ICAgICAgaWYgKHBsYXRmb3JtLmRldmljZVR5cGUgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklD
RV9UWVBFX1dBUlBfQU5HTEUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gYmFzaWNSZW5k
ZXJQb3MgPSByZW5kZXJlclN0cmluZy5maW5kKHN0ZDo6c3RyaW5nKCJtaWNyb3NvZnQgYmFzaWMg
cmVuZGVyIikpOwotICAgICAgICAgICAgYXV0byBzb2Z0d2FyZUFkYXB0ZXJQb3MgPSByZW5kZXJl
clN0cmluZy5maW5kKHN0ZDo6c3RyaW5nKCJzb2Z0d2FyZSBhZGFwdGVyIikpOwotICAgICAgICAg
ICAgQVNTRVJUX1RSVUUoYmFzaWNSZW5kZXJQb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MgfHwgc29m
dHdhcmVBZGFwdGVyUG9zICE9IHN0ZDo6c3RyaW5nOjpucG9zKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBhY2NlcHRhYmxlU2hhZGVyTW9kZWxzOwotCi0g
ICAgICAgIC8vIFdoZW4gbm8gc3BlY2lmaWMgbWFqb3IvbWlub3IgdmVyc2lvbiBpcyByZXF1ZXN0
ZWQsIHRoZW4gQU5HTEUgc2hvdWxkIHJldHVybiB0aGUgaGlnaGVzdCBwb3NzaWJsZSBmZWF0dXJl
IGxldmVsIGJ5IGRlZmF1bHQuCi0gICAgICAgIC8vIFRoZSBjdXJyZW50IGhhcmR3YXJlIGRyaXZl
ciBtaWdodCBub3Qgc3VwcG9ydCBGZWF0dXJlIExldmVsIDExXzAsIGJ1dCBXQVJQIGFsd2F5cyBk
b2VzLgotICAgICAgICAvLyBUaGVyZWZvcmUgaWYgV0FSUCBpcyBzcGVjaWZpZWQgYnV0IG5vIG1h
am9yL21pbm9yIHZlcnNpb24gaXMgc3BlY2lmaWVkLCB0aGVuIHdlIHRlc3QgdG8gY2hlY2sgdGhh
dCBBTkdMRSByZXR1cm5zIEZMMTFfMC4KLSAgICAgICAgaWYgKHBsYXRmb3JtLm1ham9yVmVyc2lv
biA+PSAxMSB8fCBwbGF0Zm9ybS5tYWpvclZlcnNpb24gPT0gRUdMX0RPTlRfQ0FSRSkKLSAgICAg
ICAgewotICAgICAgICAgICAgLy8gRmVhdHVyZSBMZXZlbCAxMF8wIGNvcnJlc3BvbmRzIHRvIHNo
YWRlciBtb2RlbCA1XzAKLSAgICAgICAgICAgIGFjY2VwdGFibGVTaGFkZXJNb2RlbHMucHVzaF9i
YWNrKCJwc181XzAiKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChwbGF0Zm9ybS5tYWpvclZl
cnNpb24gPj0gMTAgfHwgcGxhdGZvcm0ubWFqb3JWZXJzaW9uID09IEVHTF9ET05UX0NBUkUpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChwbGF0Zm9ybS5taW5vclZlcnNpb24gPj0gMSB8fCBw
bGF0Zm9ybS5taW5vclZlcnNpb24gPT0gRUdMX0RPTlRfQ0FSRSkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAvLyBGZWF0dXJlIExldmVsIDEwXzEgY29ycmVzcG9uZHMgdG8gc2hhZGVy
IG1vZGVsIDRfMQotICAgICAgICAgICAgICAgIGFjY2VwdGFibGVTaGFkZXJNb2RlbHMucHVzaF9i
YWNrKCJwc180XzEiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHBsYXRmb3Jt
Lm1pbm9yVmVyc2lvbiA+PSAwIHx8IHBsYXRmb3JtLm1pbm9yVmVyc2lvbiA9PSBFR0xfRE9OVF9D
QVJFKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIEZlYXR1cmUgTGV2ZWwgMTBf
MCBjb3JyZXNwb25kcyB0byBzaGFkZXIgbW9kZWwgNF8wCi0gICAgICAgICAgICAgICAgYWNjZXB0
YWJsZVNoYWRlck1vZGVscy5wdXNoX2JhY2soInBzXzRfMCIpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKHBsYXRmb3JtLm1ham9yVmVyc2lvbiA9PSA5ICYmIHBsYXRm
b3JtLm1pbm9yVmVyc2lvbiA9PSAzKQotICAgICAgICB7Ci0gICAgICAgICAgICBhY2NlcHRhYmxl
U2hhZGVyTW9kZWxzLnB1c2hfYmFjaygicHNfNF8wX2xldmVsXzlfMyIpOwotICAgICAgICB9Ci0K
LSAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGFjY2VwdGFibGVTaGFkZXJNb2RlbHMuc2l6ZSgpOyBpKyspCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChyZW5kZXJlclN0cmluZy5maW5kKGFjY2VwdGFibGVTaGFkZXJNb2RlbHNbaV0p
ICE9IHN0ZDo6c3RyaW5nOjpucG9zKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZv
dW5kID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIEFTU0VSVF9U
UlVFKGZvdW5kKTsKLSAgICB9Ci0KLSAgICBFR0xpbnQgZ2xlc01ham9yVmVyc2lvbiA9IEdldFBh
cmFtKCkubWFqb3JWZXJzaW9uOwotCi0gICAgLy8gRW5zdXJlIHRoYXQgdGhlIHJlbmRlcmVyIHN0
cmluZyBjb250YWlucyBHTCBFUyAzLjAsIGlmIHdlIHJlcXVlc3RlZCBhIEdMIEVTIDMuMAotICAg
IGlmIChnbGVzTWFqb3JWZXJzaW9uID09IDMpCi0gICAgewotICAgICAgICBBU1NFUlRfTkUodmVy
c2lvblN0cmluZy5maW5kKHN0ZDo6c3RyaW5nKCJlcyAzLjAiKSksIHN0ZDo6c3RyaW5nOjpucG9z
KTsKLSAgICB9Ci0KLSAgICAvLyBFbnN1cmUgdGhhdCB0aGUgdmVyc2lvbiBzdHJpbmcgY29udGFp
bnMgR0wgRVMgMi4wLCBpZiB3ZSByZXF1ZXN0ZWQgR0wgRVMgMi4wCi0gICAgaWYgKGdsZXNNYWpv
clZlcnNpb24gPT0gMikKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9ORSh2ZXJzaW9uU3RyaW5nLmZp
bmQoc3RkOjpzdHJpbmcoImVzIDIuMCIpKSwgc3RkOjpzdHJpbmc6Om5wb3MpOwotICAgIH0KLX0K
LQotLy8gUGVyZm9ybSBhIHNpbXBsZSBvcGVyYXRpb24gKGNsZWFyIGFuZCByZWFkIHBpeGVscykg
dG8gdmVyaWZ5IHRoZSBkZXZpY2UgaXMgd29ya2luZwotVEVTVF9QKFJlbmRlcmVyVGVzdCwgU2lt
cGxlT3BlcmF0aW9uKQotewotICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAxLjBmLCAwLjBmLCAxLjBm
KTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIEVYUEVDVF9QSVhFTF9F
USgwLCAwLCAwLCAyNTUsIDAsIDI1NSk7Ci19Ci0KLS8vIFNlbGVjdCBjb25maWd1cmF0aW9ucyAo
ZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0
cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi0KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoUmVuZGVy
ZXJUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAvLyBFUzIgb24gdG9wIG9mIEQzRDkKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
RVMyX0QzRDlfUkVGRVJFTkNFKCksCi0KLSAgICAgICAgICAgICAgICAgICAgICAgLy8gRVMyIG9u
IHRvcCBvZiBEM0QxMSBmZWF0dXJlIGxldmVsIDkuMyB0byAxMS4wCi0gICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkwx
MV8wKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDEwXzEoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMMTBfMCgpLAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKLQotICAgICAgICAgICAgICAgICAgICAgICAvLyBFUzIg
b24gdG9wIG9mIEQzRDExIFdBUlAgZmVhdHVyZSBsZXZlbCA5LjMgdG8gMTEuMAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfRDNEMTFfV0FSUCgpLAotICAgICAgICAgICAgICAgICAgICAgICBF
UzJfRDNEMTFfRkwxMV8wX1dBUlAoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDEx
X0ZMMTBfMV9XQVJQKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDEwXzBf
V0FSUCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzNfV0FSUCgpLAot
Ci0gICAgICAgICAgICAgICAgICAgICAgIC8vIEVTMiBvbiB0b3Agb2YgRDNEMTEgcmVmZXJlbmNl
IGZlYXR1cmUgbGV2ZWwgOS4zIHRvIDExLjAKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0Qz
RDExX1JFRkVSRU5DRSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkwxMV8w
X1JFRkVSRU5DRSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkwxMF8xX1JF
RkVSRU5DRSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkwxMF8wX1JFRkVS
RU5DRSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzNfUkVGRVJFTkNF
KCksCi0KLSAgICAgICAgICAgICAgICAgICAgICAgLy8gRVMzIG9uIHRvcCBvZiBEM0QxMSBmZWF0
dXJlIGxldmVsIDkuMyB0byAxMS4wCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgp
LAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTFfRkwxMV8wKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgIEVTM19EM0QxMV9GTDEwXzEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
RVMzX0QzRDExX0ZMMTBfMCgpLAotCi0gICAgICAgICAgICAgICAgICAgICAgIC8vIEVTMyBvbiB0
b3Agb2YgRDNEMTEgV0FSUCBmZWF0dXJlIGxldmVsIDkuMyB0byAxMS4wCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTM19EM0QxMV9XQVJQKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19E
M0QxMV9GTDExXzBfV0FSUCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTFfRkwx
MF8xX1dBUlAoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExX0ZMMTBfMF9XQVJQ
KCksCi0KLSAgICAgICAgICAgICAgICAgICAgICAgLy8gRVMzIG9uIHRvcCBvZiBEM0QxMSByZWZl
cmVuY2UgZmVhdHVyZSBsZXZlbCA5LjMgdG8gMTEuMAotICAgICAgICAgICAgICAgICAgICAgICBF
UzNfRDNEMTFfUkVGRVJFTkNFKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMV9G
TDExXzBfUkVGRVJFTkNFKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMV9GTDEw
XzFfUkVGRVJFTkNFKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMV9GTDEwXzBf
UkVGRVJFTkNFKCksCi0KLSAgICAgICAgICAgICAgICAgICAgICAgLy8gRVMyIG9uIHRvcCBvZiBk
ZXNrdG9wIE9wZW5HTCB2ZXJzaW9ucyAyLjEgdG8gNC41Ci0gICAgICAgICAgICAgICAgICAgICAg
IEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgyLCAxKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgzLCAwKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgRVMyX09QRU5HTCgzLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09Q
RU5HTCgzLCAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgzLCAzKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCg0LCAwKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX09QRU5HTCg0LCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5H
TCg0LCAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCg0LCAzKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCg0LCA0KSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX09QRU5HTCg0LCA1KSwKLQotICAgICAgICAgICAgICAgICAgICAgICAvLyBFUzIgb24g
dG9wIG9mIGRlc2t0b3AgT3BlbkdMIHZlcnNpb25zIDMuMiB0byA0LjUKLSAgICAgICAgICAgICAg
ICAgICAgICAgRVMzX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdM
KDMsIDIpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKDMsIDMpLAotICAgICAg
ICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKDQsIDApLAotICAgICAgICAgICAgICAgICAgICAg
ICBFUzNfT1BFTkdMKDQsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKDQs
IDIpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKDQsIDMpLAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzNfT1BFTkdMKDQsIDQpLAotICAgICAgICAgICAgICAgICAgICAgICBF
UzNfT1BFTkdMKDQsIDUpLAotCi0gICAgICAgICAgICAgICAgICAgICAgIC8vIEVTMiBvbiB0b3Ag
b2YgT3BlbkdMIEVTIDIuMCB0byAzLjIKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5H
TEVTKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygyLCAwKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKDMsIDApLAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfT1BFTkdMRVMoMywgMSksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVO
R0xFUygzLCAyKSwKLQotICAgICAgICAgICAgICAgICAgICAgICAvLyBFUzIgb24gdG9wIG9mIE9w
ZW5HTCBFUyAzLjAgdG8gMy4yCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygp
LAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoMywgMCksCi0gICAgICAgICAg
ICAgICAgICAgICAgIEVTM19PUEVOR0xFUygzLCAxKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
RVMzX09QRU5HTEVTKDMsIDIpKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Sb2J1c3RDbGllbnRNZW1vcnlUZXN0LmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Sb2J1c3RDbGllbnRNZW1vcnlU
ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVmODllOTA0MTUuLjAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9S
b2J1c3RDbGllbnRNZW1vcnlUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4NSArMCwwIEBA
Ci0vLwotLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCi0vLwotCi0vLyBSb2J1c3RDbGllbnRNZW1vcnlUZXN0LmNwcCA6IFRlc3RzIG9mIHRo
ZSBHTF9BTkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeSBleHRlbnNpb24uCi0KLSNpbmNsdWRlICJ0
ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi0jaW5jbHVkZSAidGVzdF91dGlscy9nbF9yYWlpLmgi
Ci0KLW5hbWVzcGFjZSBhbmdsZQotewotY2xhc3MgUm9idXN0Q2xpZW50TWVtb3J5VGVzdCA6IHB1
YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFJvYnVzdENsaWVudE1lbW9yeVRl
c3QoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0V2lu
ZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNl
dENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAg
ICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3Zl
cnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBnbEdl
dEJvb2xlYW52Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUQk9PTEVBTlZS
T0JVU1RBTkdMRT4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRCb29sZWFu
dlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUQlVGRkVSUEFSQU1FVEVSSVZST0JVU1RBTkdM
RT4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRCdWZmZXJQYXJhbWV0ZXJp
dlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbEdldEZsb2F0dlJvYnVzdEFOR0xFID0gcmVpbnRl
cnByZXRfY2FzdDxQRk5HTEdFVEZMT0FUVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgIGVnbEdl
dFByb2NBZGRyZXNzKCJnbEdldEZsb2F0dlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbEdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUgPQotICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVEZSQU1FQlVGRkVSQVRUQUNITUVOVFBBUkFNRVRFUklW
Uk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldEZy
YW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUiKSk7Ci0gICAgICAgIGds
R2V0SW50ZWdlcnZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRJTlRFR0VS
VlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldEludGVn
ZXJ2Um9idXN0QU5HTEUiKSk7Ci0gICAgICAgIGdsR2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUgPSBy
ZWludGVycHJldF9jYXN0PFBGTkdMR0VUUFJPR1JBTUlWUk9CVVNUQU5HTEU+KAotICAgICAgICAg
ICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0UHJvZ3JhbWl2Um9idXN0QU5HTEUiKSk7Ci0gICAg
ICAgIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSA9Ci0gICAgICAgICAg
ICByZWludGVycHJldF9jYXN0PFBGTkdMR0VUUkVOREVSQlVGRkVSUEFSQU1FVEVSSVZST0JVU1RB
TkdMRT4oCi0gICAgICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRTaGFkZXJpdlJvYnVz
dEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFNIQURFUklWUk9CVVNUQU5HTEU+KAot
ICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0U2hhZGVyaXZSb2J1c3RBTkdMRSIp
KTsKLSAgICAgICAgZ2xHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRf
Y2FzdDxQRk5HTEdFVFRFWFBBUkFNRVRFUkZWUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWds
R2V0UHJvY0FkZHJlc3MoImdsR2V0VGV4UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSIpKTsKLSAgICAg
ICAgZ2xHZXRUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5H
TEdFVFRFWFBBUkFNRVRFUklWUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0Fk
ZHJlc3MoImdsR2V0VGV4UGFyYW1ldGVyaXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRV
bmlmb3JtZnZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRVTklGT1JNRlZS
T0JVU1RBTkdMRT4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRVbmlmb3Jt
ZnZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRSA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRVTklGT1JNSVZST0JVU1RBTkdMRT4oCi0gICAgICAgICAg
ICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRVbmlmb3JtaXZSb2J1c3RBTkdMRSIpKTsKLSAgICAg
ICAgZ2xHZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5H
TEdFVFZFUlRFWEFUVFJJQkZWUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0Fk
ZHJlc3MoImdsR2V0VmVydGV4QXR0cmliZnZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRW
ZXJ0ZXhBdHRyaWJpdlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFZFUlRF
WEFUVFJJQklWUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImds
R2V0VmVydGV4QXR0cmliaXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRWZXJ0ZXhBdHRy
aWJQb2ludGVydlJvYnVzdEFOR0xFID0KLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZO
R0xHRVRWRVJURVhBVFRSSUJQT0lOVEVSVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgICAgICBl
Z2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJvYnVzdEFOR0xFIikp
OwotICAgICAgICBnbFJlYWRQaXhlbHNSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZO
R0xSRUFEUElYRUxTUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3Mo
ImdsUmVhZFBpeGVsc1JvYnVzdEFOR0xFIikpOwotICAgICAgICBnbFRleEltYWdlMkRSb2J1c3RB
TkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xURVhJTUFHRTJEUk9CVVNUQU5HTEU+KAotICAg
ICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsVGV4SW1hZ2UyRFJvYnVzdEFOR0xFIikpOwot
ICAgICAgICBnbFRleFBhcmFtZXRlcmZ2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBG
TkdMVEVYUEFSQU1FVEVSRlZST0JVU1RBTkdMRT4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9jQWRk
cmVzcygiZ2xUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbFRleFBhcmFt
ZXRlcml2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMVEVYUEFSQU1FVEVSSVZS
T0JVU1RBTkdMRT4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xUZXhQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xURVhTVUJJTUFHRTJEUk9CVVNUQU5HTEU+KAotICAgICAg
ICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsVGV4U3ViSW1hZ2UyRFJvYnVzdEFOR0xFIikpOwot
ICAgICAgICBnbFRleEltYWdlM0RSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xU
RVhJTUFHRTNEUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImds
VGV4SW1hZ2UzRFJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbFRleFN1YkltYWdlM0RSb2J1c3RB
TkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xURVhTVUJJTUFHRTNEUk9CVVNUQU5HTEU+KAot
ICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsVGV4U3ViSW1hZ2UzRFJvYnVzdEFOR0xF
IikpOwotICAgICAgICBnbEdldFF1ZXJ5aXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UEZOR0xHRVRRVUVSWUlWUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJl
c3MoImdsR2V0UXVlcnlpdlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0
dWl2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUUVVFUllPQkpFQ1RVSVZS
T0JVU1RBTkdMRT4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRRdWVyeU9i
amVjdHVpdlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbEdldEJ1ZmZlclBvaW50ZXJ2Um9idXN0
QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUQlVGRkVSUE9JTlRFUlZST0JVU1RBTkdM
RT4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRCdWZmZXJQb2ludGVydlJv
YnVzdEFOR0xFIikpOwotICAgICAgICBnbEdldEludGVnZXJpX3ZSb2J1c3RBTkdMRSA9IHJlaW50
ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRJTlRFR0VSSV9WUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAg
ZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0SW50ZWdlcmlfdlJvYnVzdEFOR0xFIikpOwotICAgICAg
ICBnbEdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZO
R0VUSU5URVJOQUxGT1JNQVRJVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgIGVnbEdldFByb2NB
ZGRyZXNzKCJnbEdldEludGVybmFsZm9ybWF0aXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xH
ZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRW
RVJURVhBVFRSSUJJSVZST0JVU1RBTkdMRT4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVz
cygiZ2xHZXRWZXJ0ZXhBdHRyaWJJaXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRWZXJ0
ZXhBdHRyaWJJdWl2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUVkVSVEVY
QVRUUklCSVVJVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJn
bEdldFZlcnRleEF0dHJpYkl1aXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRVbmlmb3Jt
dWl2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUVU5JRk9STVVJVlJPQlVT
VEFOR0xFPigKLSAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFVuaWZvcm11aXZS
b2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFO
R0xFID0KLSAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRBQ1RJVkVVTklGT1JN
QkxPQ0tJVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygi
Z2xHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbEdldElu
dGVnZXI2NHZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRJTlRFR0VSNjRW
Uk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0SW50ZWdl
cjY0dlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbEdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xF
ID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVElOVEVHRVI2NElfVlJPQlVTVEFOR0xFPigKLSAg
ICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldEludGVnZXI2NGlfdlJvYnVzdEFOR0xF
IikpOwotICAgICAgICBnbEdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1c3RBTkdMRSA9Ci0gICAg
ICAgICAgICByZWludGVycHJldF9jYXN0PFBGTkdMR0VUQlVGRkVSUEFSQU1FVEVSSTY0VlJPQlVT
VEFOR0xFPigKLSAgICAgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRCdWZmZXJQ
YXJhbWV0ZXJpNjR2Um9idXN0QU5HTEUiKSk7Ci0gICAgICAgIGdsU2FtcGxlclBhcmFtZXRlcml2
Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMU0FNUExFUlBBUkFNRVRFUklWUk9C
VVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsU2FtcGxlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUiKSk7Ci0gICAgICAgIGdsU2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0
QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMU0FNUExFUlBBUkFNRVRFUkZWUk9CVVNUQU5H
TEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsU2FtcGxlclBhcmFtZXRlcmZ2
Um9idXN0QU5HTEUiKSk7Ci0gICAgICAgIGdsR2V0U2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5H
TEUgPQotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFNBTVBMRVJQQVJBTUVU
RVJJVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xH
ZXRTYW1wbGVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRTYW1wbGVy
UGFyYW1ldGVyZnZSb2J1c3RBTkdMRSA9Ci0gICAgICAgICAgICByZWludGVycHJldF9jYXN0PFBG
TkdMR0VUU0FNUExFUlBBUkFNRVRFUkZWUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgICAgIGVn
bEdldFByb2NBZGRyZXNzKCJnbEdldFNhbXBsZXJQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFIikpOwot
ICAgICAgICBnbEdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSA9Ci0gICAgICAg
ICAgICByZWludGVycHJldF9jYXN0PFBGTkdMR0VURlJBTUVCVUZGRVJQQVJBTUVURVJJVlJPQlVT
VEFOR0xFPigKLSAgICAgICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRGcmFtZWJ1
ZmZlclBhcmFtZXRlcml2Um9idXN0QU5HTEUiKSk7Ci0gICAgICAgIGdsR2V0UHJvZ3JhbUludGVy
ZmFjZWl2Um9idXN0QU5HTEUgPQotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdF
VFBST0dSQU1JTlRFUkZBQ0VJVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgICAgICBlZ2xHZXRQ
cm9jQWRkcmVzcygiZ2xHZXRQcm9ncmFtSW50ZXJmYWNlaXZSb2J1c3RBTkdMRSIpKTsKLSAgICAg
ICAgZ2xHZXRCb29sZWFuaV92Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VU
Qk9PTEVBTklfVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJn
bEdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRNdWx0aXNhbXBsZWZ2
Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUTVVMVElTQU1QTEVGVlJPQlVT
VEFOR0xFPigKLSAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldE11bHRpc2FtcGxl
ZnZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcml2Um9idXN0
QU5HTEUgPQotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFRFWExFVkVMUEFS
QU1FVEVSSVZST0JVU1RBTkdMRT4oCi0gICAgICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3Mo
ImdsR2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbEdldFRl
eExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSA9Ci0gICAgICAgICAgICByZWludGVycHJldF9j
YXN0PFBGTkdMR0VUVEVYTEVWRUxQQVJBTUVURVJGVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAg
ICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRUZXhMZXZlbFBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUiKSk7Ci0gICAgICAgIGdsR2V0UG9pbnRlcnZSb2J1c3RBTkdMRVJvYnVzdEFOR0xFID0KLSAg
ICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRQT0lOVEVSVlJPQlVTVEFOR0xFUk9C
VVNUQU5HTEU+KAotICAgICAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFBvaW50
ZXJ2Um9idXN0QU5HTEVSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xSZWFkblBpeGVsc1JvYnVz
dEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTFJFQUROUElYRUxTUk9CVVNUQU5HTEU+KAot
ICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsUmVhZG5QaXhlbHNSb2J1c3RBTkdMRSIp
KTsKLSAgICAgICAgZ2xHZXRuVW5pZm9ybWZ2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0
PFBGTkdMR0VUTlVOSUZPUk1GVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgIGVnbEdldFByb2NB
ZGRyZXNzKCJnbEdldG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRuVW5p
Zm9ybWl2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUTlVOSUZPUk1JVlJP
QlVTVEFOR0xFPigKLSAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldG5Vbmlmb3Jt
aXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFID0g
cmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVE5VTklGT1JNVUlWUk9CVVNUQU5HTEU+KAotICAgICAg
ICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0blVuaWZvcm11aXZSb2J1c3RBTkdMRSIpKTsK
LSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UEZOR0xURVhQQVJBTUVURVJJSVZST0JVU1RBTkdMRT4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9j
QWRkcmVzcygiZ2xUZXhQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xUZXhQ
YXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMVEVYUEFSQU1F
VEVSSVVJVlJPQlVTVEFOR0xFPigKLSAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbFRl
eFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRUZXhQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRURVhQQVJBTUVURVJJSVZS
T0JVU1RBTkdMRT4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRUZXhQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRUZXhQYXJhbWV0ZXJJdWl2Um9i
dXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUVEVYUEFSQU1FVEVSSVVJVlJPQlVT
VEFOR0xFPigKLSAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFRleFBhcmFtZXRl
ckl1aXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0
QU5HTEUgPSByZWludGVycHJldF9jYXN0PFBGTkdMU0FNUExFUlBBUkFNRVRFUklJVlJPQlVTVEFO
R0xFPigKLSAgICAgICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbFNhbXBsZXJQYXJhbWV0ZXJJ
aXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFO
R0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTFNBTVBMRVJQQVJBTUVURVJJVUlWUk9CVVNUQU5H
TEU+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3MoImdsU2FtcGxlclBhcmFtZXRlckl1
aXZSb2J1c3RBTkdMRSIpKTsKLSAgICAgICAgZ2xHZXRTYW1wbGVyUGFyYW1ldGVySWl2Um9idXN0
QU5HTEUgPQotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVFNBTVBMRVJQQVJB
TUVURVJJSVZST0JVU1RBTkdMRT4oCi0gICAgICAgICAgICAgICAgZWdsR2V0UHJvY0FkZHJlc3Mo
ImdsR2V0U2FtcGxlclBhcmFtZXRlcklpdlJvYnVzdEFOR0xFIikpOwotICAgICAgICBnbEdldFNh
bXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0QU5HTEUgPQotICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxQRk5HTEdFVFNBTVBMRVJQQVJBTUVURVJJVUlWUk9CVVNUQU5HTEU+KAotICAgICAgICAg
ICAgICAgIGVnbEdldFByb2NBZGRyZXNzKCJnbEdldFNhbXBsZXJQYXJhbWV0ZXJJdWl2Um9idXN0
QU5HTEUiKSk7Ci0gICAgICAgIGdsR2V0UXVlcnlPYmplY3RpdlJvYnVzdEFOR0xFID0gcmVpbnRl
cnByZXRfY2FzdDxQRk5HTEdFVFFVRVJZT0JKRUNUSVZST0JVU1RBTkdMRT4oCi0gICAgICAgICAg
ICBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRRdWVyeU9iamVjdGl2Um9idXN0QU5HTEUiKSk7Ci0g
ICAgICAgIGdsR2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUgPSByZWludGVycHJldF9jYXN0
PFBGTkdMR0VUUVVFUllPQkpFQ1RJNjRWUk9CVVNUQU5HTEU+KAotICAgICAgICAgICAgZWdsR2V0
UHJvY0FkZHJlc3MoImdsR2V0UXVlcnlPYmplY3RpNjR2Um9idXN0QU5HTEUiKSk7Ci0gICAgICAg
IGdsR2V0UXVlcnlPYmplY3R1aTY0dlJvYnVzdEFOR0xFID0gcmVpbnRlcnByZXRfY2FzdDxQRk5H
TEdFVFFVRVJZT0JKRUNUVUk2NFZST0JVU1RBTkdMRT4oCi0gICAgICAgICAgICBlZ2xHZXRQcm9j
QWRkcmVzcygiZ2xHZXRRdWVyeU9iamVjdHVpNjR2Um9idXN0QU5HTEUiKSk7Ci0gICAgfQotCi0g
ICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlIHsgQU5HTEVUZXN0OjpUZWFyRG93bigpOyB9Ci0K
LSAgICBib29sIGV4dGVuc2lvbnNQcmVzZW50KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICgh
ZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfcm9idXN0X2NsaWVudF9tZW1vcnkiKSkKLSAgICAg
ICAgewotICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9B
TkdMRV9yb2J1c3RfY2xpZW50X21lbW9yeSBpcyBub3QgYXZhaWxhYmxlLiI7Ci0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0KLSAgICBQRk5HTEdFVEJPT0xFQU5WUk9CVVNUQU5HTEUgZ2xHZXRCb29sZWFudlJvYnVzdEFO
R0xFICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVEJVRkZFUlBBUkFN
RVRFUklWUk9CVVNUQU5HTEUgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFID0gbnVs
bHB0cjsKLSAgICBQRk5HTEdFVEZMT0FUVlJPQlVTVEFOR0xFIGdsR2V0RmxvYXR2Um9idXN0QU5H
TEUgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVEZSQU1FQlVG
RkVSQVRUQUNITUVOVFBBUkFNRVRFUklWUk9CVVNUQU5HTEUKLSAgICBnbEdldEZyYW1lYnVmZmVy
QXR0YWNobWVudFBhcmFtZXRlcml2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVElOVEVHRVJWUk9CVVNUQU5HTEUgZ2xH
ZXRJbnRlZ2VydlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVs
bHB0cjsKLSAgICBQRk5HTEdFVFBST0dSQU1JVlJPQlVTVEFOR0xFIGdsR2V0UHJvZ3JhbWl2Um9i
dXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5H
TEdFVFJFTkRFUkJVRkZFUlBBUkFNRVRFUklWUk9CVVNUQU5HTEUgZ2xHZXRSZW5kZXJidWZmZXJQ
YXJhbWV0ZXJpdlJvYnVzdEFOR0xFID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFNIQURFUklWUk9C
VVNUQU5HTEUgZ2xHZXRTaGFkZXJpdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFRFWFBBUkFNRVRFUkZWUk9CVVNUQU5HTEUg
Z2xHZXRUZXhQYXJhbWV0ZXJmdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgID0gbnVsbHB0
cjsKLSAgICBQRk5HTEdFVFRFWFBBUkFNRVRFUklWUk9CVVNUQU5HTEUgZ2xHZXRUZXhQYXJhbWV0
ZXJpdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdF
VFVOSUZPUk1GVlJPQlVTVEFOR0xFIGdsR2V0VW5pZm9ybWZ2Um9idXN0QU5HTEUgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFVOSUZPUk1JVlJPQlVT
VEFOR0xFIGdsR2V0VW5pZm9ybWl2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFZFUlRFWEFUVFJJQkZWUk9CVVNUQU5HTEUgZ2xH
ZXRWZXJ0ZXhBdHRyaWJmdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsK
LSAgICBQRk5HTEdFVFZFUlRFWEFUVFJJQklWUk9CVVNUQU5HTEUgZ2xHZXRWZXJ0ZXhBdHRyaWJp
dlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFZF
UlRFWEFUVFJJQlBPSU5URVJWUk9CVVNUQU5HTEUgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydlJv
YnVzdEFOR0xFICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTFJFQURQSVhFTFNST0JVU1RBTkdM
RSBnbFJlYWRQaXhlbHNSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ID0gbnVsbHB0cjsKLSAgICBQRk5HTFRFWElNQUdFMkRST0JVU1RBTkdMRSBnbFRleEltYWdlMkRS
b2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAg
ICBQRk5HTFRFWFBBUkFNRVRFUkZWUk9CVVNUQU5HTEUgZ2xUZXhQYXJhbWV0ZXJmdlJvYnVzdEFO
R0xFICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTFRFWFBBUkFN
RVRFUklWUk9CVVNUQU5HTEUgZ2xUZXhQYXJhbWV0ZXJpdlJvYnVzdEFOR0xFICAgICAgICAgICAg
ICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTFRFWFNVQklNQUdFMkRST0JVU1RBTkdM
RSBnbFRleFN1YkltYWdlMkRSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAgID0g
bnVsbHB0cjsKLSAgICBQRk5HTFRFWElNQUdFM0RST0JVU1RBTkdMRSBnbFRleEltYWdlM0RSb2J1
c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQ
Rk5HTFRFWFNVQklNQUdFM0RST0JVU1RBTkdMRSBnbFRleFN1YkltYWdlM0RSb2J1c3RBTkdMRSAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFFVRVJZSVZS
T0JVU1RBTkdMRSBnbEdldFF1ZXJ5aXZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFFVRVJZT0JKRUNUVUlWUk9CVVNUQU5H
TEUgZ2xHZXRRdWVyeU9iamVjdHVpdlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgID0gbnVs
bHB0cjsKLSAgICBQRk5HTEdFVEJVRkZFUlBPSU5URVJWUk9CVVNUQU5HTEUgZ2xHZXRCdWZmZXJQ
b2ludGVydlJvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5H
TEdFVElOVEVHRVJJX1ZST0JVU1RBTkdMRSBnbEdldEludGVnZXJpX3ZSb2J1c3RBTkdMRSAgICAg
ICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HRVRJTlRFUk5BTEZPUk1B
VElWUk9CVVNUQU5HTEUgZ2xHZXRJbnRlcm5hbGZvcm1hdGl2Um9idXN0QU5HTEUgICAgICAgICAg
ICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFZFUlRFWEFUVFJJQklJVlJPQlVTVEFOR0xF
IGdsR2V0VmVydGV4QXR0cmliSWl2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgID0gbnVsbHB0
cjsKLSAgICBQRk5HTEdFVFZFUlRFWEFUVFJJQklVSVZST0JVU1RBTkdMRSBnbEdldFZlcnRleEF0
dHJpYkl1aXZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdF
VFVOSUZPUk1VSVZST0JVU1RBTkdMRSBnbEdldFVuaWZvcm11aXZSb2J1c3RBTkdMRSAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVEFDVElWRVVOSUZPUk1C
TE9DS0lWUk9CVVNUQU5HTEUgZ2xHZXRBY3RpdmVVbmlmb3JtQmxvY2tpdlJvYnVzdEFOR0xFICAg
ICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVElOVEVHRVI2NFZST0JVU1RBTkdMRSBnbEdldElu
dGVnZXI2NHZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsK
LSAgICBQRk5HTEdFVElOVEVHRVI2NElfVlJPQlVTVEFOR0xFIGdsR2V0SW50ZWdlcjY0aV92Um9i
dXN0QU5HTEUgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVEJV
RkZFUlBBUkFNRVRFUkk2NFZST0JVU1RBTkdMRSBnbEdldEJ1ZmZlclBhcmFtZXRlcmk2NHZSb2J1
c3RBTkdMRSAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTFNBTVBMRVJQQVJBTUVURVJJVlJP
QlVTVEFOR0xFIGdsU2FtcGxlclBhcmFtZXRlcml2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAg
ID0gbnVsbHB0cjsKLSAgICBQRk5HTFNBTVBMRVJQQVJBTUVURVJGVlJPQlVTVEFOR0xFIGdsU2Ft
cGxlclBhcmFtZXRlcmZ2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAg
ICBQRk5HTEdFVFNBTVBMRVJQQVJBTUVURVJJVlJPQlVTVEFOR0xFIGdsR2V0U2FtcGxlclBhcmFt
ZXRlcml2Um9idXN0QU5HTEUgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFNBTVBM
RVJQQVJBTUVURVJGVlJPQlVTVEFOR0xFIGdsR2V0U2FtcGxlclBhcmFtZXRlcmZ2Um9idXN0QU5H
TEUgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVEZSQU1FQlVGRkVSUEFSQU1FVEVS
SVZST0JVU1RBTkdMRSBnbEdldEZyYW1lYnVmZmVyUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSAgID0g
bnVsbHB0cjsKLSAgICBQRk5HTEdFVFBST0dSQU1JTlRFUkZBQ0VJVlJPQlVTVEFOR0xFIGdsR2V0
UHJvZ3JhbUludGVyZmFjZWl2Um9idXN0QU5HTEUgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQ
Rk5HTEdFVEJPT0xFQU5JX1ZST0JVU1RBTkdMRSBnbEdldEJvb2xlYW5pX3ZSb2J1c3RBTkdMRSAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVE1VTFRJU0FN
UExFRlZST0JVU1RBTkdMRSBnbEdldE11bHRpc2FtcGxlZnZSb2J1c3RBTkdMRSAgICAgICAgICAg
ICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFRFWExFVkVMUEFSQU1FVEVSSVZST0JV
U1RBTkdMRSBnbEdldFRleExldmVsUGFyYW1ldGVyaXZSb2J1c3RBTkdMRSAgICAgICAgID0gbnVs
bHB0cjsKLSAgICBQRk5HTEdFVFRFWExFVkVMUEFSQU1FVEVSRlZST0JVU1RBTkdMRSBnbEdldFRl
eExldmVsUGFyYW1ldGVyZnZSb2J1c3RBTkdMRSAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5H
TEdFVFBPSU5URVJWUk9CVVNUQU5HTEVST0JVU1RBTkdMRSBnbEdldFBvaW50ZXJ2Um9idXN0QU5H
TEVSb2J1c3RBTkdMRSAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTFJFQUROUElYRUxTUk9C
VVNUQU5HTEUgZ2xSZWFkblBpeGVsc1JvYnVzdEFOR0xFICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVE5VTklGT1JNRlZST0JVU1RBTkdMRSBnbEdl
dG5Vbmlmb3JtZnZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0
cjsKLSAgICBQRk5HTEdFVE5VTklGT1JNSVZST0JVU1RBTkdMRSBnbEdldG5Vbmlmb3JtaXZSb2J1
c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdF
VE5VTklGT1JNVUlWUk9CVVNUQU5HTEUgZ2xHZXRuVW5pZm9ybXVpdlJvYnVzdEFOR0xFICAgICAg
ICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTFRFWFBBUkFNRVRFUklJVlJP
QlVTVEFOR0xFIGdsVGV4UGFyYW1ldGVySWl2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgICAg
ICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTFRFWFBBUkFNRVRFUklVSVZST0JVU1RBTkdMRSBnbFRl
eFBhcmFtZXRlckl1aXZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsK
LSAgICBQRk5HTEdFVFRFWFBBUkFNRVRFUklJVlJPQlVTVEFOR0xFIGdsR2V0VGV4UGFyYW1ldGVy
SWl2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFRF
WFBBUkFNRVRFUklVSVZST0JVU1RBTkdMRSBnbEdldFRleFBhcmFtZXRlckl1aXZSb2J1c3RBTkdM
RSAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTFNBTVBMRVJQQVJBTUVURVJJSVZS
T0JVU1RBTkdMRSBnbFNhbXBsZXJQYXJhbWV0ZXJJaXZSb2J1c3RBTkdMRSAgICAgICAgICAgICAg
ID0gbnVsbHB0cjsKLSAgICBQRk5HTFNBTVBMRVJQQVJBTUVURVJJVUlWUk9CVVNUQU5HTEUgZ2xT
YW1wbGVyUGFyYW1ldGVySXVpdlJvYnVzdEFOR0xFICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAg
ICBQRk5HTEdFVFNBTVBMRVJQQVJBTUVURVJJSVZST0JVU1RBTkdMRSBnbEdldFNhbXBsZXJQYXJh
bWV0ZXJJaXZSb2J1c3RBTkdMRSAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFNBTVBM
RVJQQVJBTUVURVJJVUlWUk9CVVNUQU5HTEUgZ2xHZXRTYW1wbGVyUGFyYW1ldGVySXVpdlJvYnVz
dEFOR0xFICAgICAgID0gbnVsbHB0cjsKLSAgICBQRk5HTEdFVFFVRVJZT0JKRUNUSVZST0JVU1RB
TkdMRSBnbEdldFF1ZXJ5T2JqZWN0aXZSb2J1c3RBTkdMRSAgICAgICAgICAgICAgICAgICAgID0g
bnVsbHB0cjsKLSAgICBQRk5HTEdFVFFVRVJZT0JKRUNUSTY0VlJPQlVTVEFOR0xFIGdsR2V0UXVl
cnlPYmplY3RpNjR2Um9idXN0QU5HTEUgICAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLSAgICBQ
Rk5HTEdFVFFVRVJZT0JKRUNUVUk2NFZST0JVU1RBTkdMRSBnbEdldFF1ZXJ5T2JqZWN0dWk2NHZS
b2J1c3RBTkdMRSAgICAgICAgICAgICAgID0gbnVsbHB0cjsKLX07Ci0KLS8vIFRlc3QgYmFzaWMg
dXNhZ2UgYW5kIHZhbGlkYXRpb24gb2YgZ2xHZXRJbnRlZ2VydlJvYnVzdEFOR0xFCi1URVNUX1Ao
Um9idXN0Q2xpZW50TWVtb3J5VGVzdCwgR2V0SW50ZWdlcikKLXsKLSAgICBpZiAoIWV4dGVuc2lv
bnNQcmVzZW50KCkpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gVmVy
aWZ5IHRoYXQgdGhlIHJvYnVzdCBhbmQgcmVndWxhciBlbnRyeSBwb2ludHMgcmV0dXJuIHRoZSBz
YW1lIHZhbHVlcwotICAgIEdMaW50IHJlc3VsdFJvYnVzdDsKLSAgICBHTHNpemVpIGxlbmd0aDsK
LSAgICBnbEdldEludGVnZXJ2Um9idXN0QU5HTEUoR0xfTUFYX1ZFUlRFWF9BVFRSSUJTLCAxLCAm
bGVuZ3RoLCAmcmVzdWx0Um9idXN0KTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBF
WFBFQ1RfRVEoMSwgbGVuZ3RoKTsKLQotICAgIEdMaW50IHJlc3VsdFJlZ3VsYXI7Ci0gICAgZ2xH
ZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVYX0FUVFJJQlMsICZyZXN1bHRSZWd1bGFyKTsKLSAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfRVEocmVzdWx0UmVndWxhciwgcmVzdWx0
Um9idXN0KTsKLQotICAgIC8vIFF1ZXJ5IGEgZHluYW1pYyB2YWx1ZQotICAgIEdMaW50IG51bUNv
bXByZXNzZWRGb3JtYXRzOwotICAgIGdsR2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHTF9OVU1fQ09N
UFJFU1NFRF9URVhUVVJFX0ZPUk1BVFMsIDEsICZsZW5ndGgsICZudW1Db21wcmVzc2VkRm9ybWF0
cyk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VRKDEsIGxlbmd0aCk7
Ci0KLSAgICBpZiAobnVtQ29tcHJlc3NlZEZvcm1hdHMgPiAwKQotICAgIHsKLSAgICAgICAgc3Rk
Ojp2ZWN0b3I8R0xpbnQ+IHJlc3VsdEJ1ZihudW1Db21wcmVzc2VkRm9ybWF0cyAqIDIsIDApOwot
Ci0gICAgICAgIC8vIFRlc3Qgd2hlbiB0aGUgYnVmU2l6ZSBpcyB0b28gbG93Ci0gICAgICAgIGds
R2V0SW50ZWdlcnZSb2J1c3RBTkdMRShHTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUywgbnVt
Q29tcHJlc3NlZEZvcm1hdHMgLSAxLCAmbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0QnVmLmRhdGEoKSk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9J
TlZBTElEX09QRVJBVElPTik7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHN0ZDo6YWxsX29mKHJlc3Vs
dEJ1Zi5iZWdpbigpLCByZXN1bHRCdWYuZW5kKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFtdKEdMaW50IHZhbHVlKSB7IHJldHVybiB2YWx1ZSA9PSAwOyB9KSk7Ci0KLSAgICAg
ICAgLy8gTWFrZSBzdXJlIHRoZSBHTCBkb2Vzbid0IHRvdWNoIHRoZSBlbmQgb2YgdGhlIGJ1ZmZl
cgotICAgICAgICBnbEdldEludGVnZXJ2Um9idXN0QU5HTEUoR0xfQ09NUFJFU1NFRF9URVhUVVJF
X0ZPUk1BVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxH
THNpemVpPihyZXN1bHRCdWYuc2l6ZSgpKSwgJmxlbmd0aCwgcmVzdWx0QnVmLmRhdGEoKSk7Ci0g
ICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgICAgICBFWFBFQ1RfRVEobnVtQ29tcHJl
c3NlZEZvcm1hdHMsIGxlbmd0aCk7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHN0ZDo6bm9uZV9vZihy
ZXN1bHRCdWYuYmVnaW4oKSwgcmVzdWx0QnVmLmJlZ2luKCkgKyBsZW5ndGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbXShHTGludCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0g
MDsgfSkpOwotICAgICAgICBFWFBFQ1RfVFJVRShzdGQ6OmFsbF9vZihyZXN1bHRCdWYuYmVnaW4o
KSArIGxlbmd0aCwgcmVzdWx0QnVmLmVuZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbXShHTGludCB2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT0gMDsgfSkpOwotICAgIH0KLQot
ICAgIC8vIFRlc3Qgd2l0aCBudWxsIGxlbmd0aAotICAgIGdsR2V0SW50ZWdlcnZSb2J1c3RBTkdM
RShHTF9NQVhfVkFSWUlOR19WRUNUT1JTLCAxLCBudWxscHRyLCAmcmVzdWx0Um9idXN0KTsKLSAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsR2V0SW50ZWdlcnZSb2J1c3RBTkdMRShH
TF9NQVhfVklFV1BPUlRfRElNUywgMSwgbnVsbHB0ciwgJnJlc3VsdFJvYnVzdCk7Ci0gICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLQotICAgIEdMaW50IG1heFZpZXdw
b3J0RGltc1syXTsKLSAgICBnbEdldEludGVnZXJ2Um9idXN0QU5HTEUoR0xfTUFYX1ZJRVdQT1JU
X0RJTVMsIDIsIG51bGxwdHIsIG1heFZpZXdwb3J0RGltcyk7Ci0gICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7Ci19Ci0KLS8vIFRlc3QgYmFzaWMgdXNhZ2UgYW5kIHZhbGlkYXRpb24gb2YgZ2xUZXhJ
bWFnZTJEUm9idXN0QU5HTEUKLVRFU1RfUChSb2J1c3RDbGllbnRNZW1vcnlUZXN0LCBUZXhJbWFn
ZTJEKQotewotICAgIGlmICghZXh0ZW5zaW9uc1ByZXNlbnQoKSkKLSAgICB7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0gICAgR0xUZXh0dXJlIHRleDsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RF
WFRVUkVfMkQsIHRleC5nZXQoKSk7Ci0KLSAgICBHTHNpemVpIGRhdGFEaW1lbnNpb24gPSAxMDI0
OwotICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IHJnYmFEYXRhKGRhdGFEaW1lbnNpb24gKiBkYXRh
RGltZW5zaW9uICogNCk7Ci0KLSAgICAvLyBUZXN0IHRoZSByZWd1bGFyIGNhc2UKLSAgICBnbFRl
eEltYWdlMkRSb2J1c3RBTkdMRShHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCBkYXRhRGltZW5z
aW9uLCBkYXRhRGltZW5zaW9uLCAwLCBHTF9SR0JBLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdMX1VOU0lHTkVEX0JZVEUsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHJnYmFEYXRhLnNpemUo
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmdiYURhdGEuZGF0YSgpKTsKLSAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFRlc3Qgd2l0aCBhIGRhdGEgc2l6ZSB0aGF0
IGlzIHRvbyBzbWFsbAotICAgIGdsVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdMX1RFWFRVUkVfMkQs
IDAsIEdMX1JHQkEsIGRhdGFEaW1lbnNpb24sIGRhdGFEaW1lbnNpb24sIDAsIEdMX1JHQkEsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgc3RhdGljX2Nhc3Q8
R0xzaXplaT4ocmdiYURhdGEuc2l6ZSgpKSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmdiYURhdGEuZGF0YSgpKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVS
QVRJT04pOwotCi0gICAgaWYgKGdldENsaWVudE1ham9yVmVyc2lvbigpID49IDMpCi0gICAgewot
ICAgICAgICAvLyBTZXQgYW4gdW5wYWNrIHBhcmFtZXRlciB0aGF0IHdvdWxkIGNhdXNlIHRoZSBk
cml2ZXIgdG8gcmVhZCBwYXN0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlcgotICAgICAgICBnbFBpeGVs
U3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RILCBkYXRhRGltZW5zaW9uICsgMSk7Ci0gICAgICAg
IGdsVGV4SW1hZ2UyRFJvYnVzdEFOR0xFKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIGRhdGFE
aW1lbnNpb24sIGRhdGFEaW1lbnNpb24sIDAsIEdMX1JHQkEsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHJnYmFE
YXRhLnNpemUoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJnYmFEYXRhLmRh
dGEoKSk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0g
ICAgfQotfQotCi0vLyBUZXN0IGJhc2ljIHVzYWdlIGFuZCB2YWxpZGF0aW9uIG9mIGdsUmVhZFBp
eGVsc1JvYnVzdEFOR0xFCi1URVNUX1AoUm9idXN0Q2xpZW50TWVtb3J5VGVzdCwgUmVhZFBpeGVs
cykKLXsKLSAgICBpZiAoIWV4dGVuc2lvbnNQcmVzZW50KCkpCi0gICAgewotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgR0xzaXplaSBkYXRhRGltZW5zaW9uID0gMTY7Ci0gICAgc3RkOjp2
ZWN0b3I8R0x1Ynl0ZT4gcmdiYURhdGEoZGF0YURpbWVuc2lvbiAqIGRhdGFEaW1lbnNpb24gKiA0
KTsKLQotICAgIC8vIFRlc3QgdGhlIHJlZ3VsYXIgY2FzZQotICAgIEdMc2l6ZWkgbGVuZ3RoID0g
MDsKLSAgICBnbFJlYWRQaXhlbHNSb2J1c3RBTkdMRSgwLCAwLCBkYXRhRGltZW5zaW9uLCBkYXRh
RGltZW5zaW9uLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXRpY19jYXN0PEdMc2l6ZWk+KHJnYmFEYXRhLnNpemUoKSksICZsZW5ndGgs
IHJnYmFEYXRhLmRhdGEoKSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNU
X0VRKHN0YXRpY19jYXN0PEdMc2l6ZWk+KHJnYmFEYXRhLnNpemUoKSksIGxlbmd0aCk7Ci0KLSAg
ICAvLyBUZXN0IHdpdGggYSBkYXRhIHNpemUgdGhhdCBpcyB0b28gc21hbGwKLSAgICBnbFJlYWRQ
aXhlbHNSb2J1c3RBTkdMRSgwLCAwLCBkYXRhRGltZW5zaW9uLCBkYXRhRGltZW5zaW9uLCBHTF9S
R0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEdMc2l6ZWk+KHJnYmFEYXRhLnNpemUoKSkgLSAxLCAmbGVuZ3RoLCByZ2JhRGF0YS5k
YXRhKCkpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0KLSAg
ICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPj0gMykKLSAgICB7Ci0gICAgICAgIC8vIFNl
dCBhIHBhY2sgcGFyYW1ldGVyIHRoYXQgd291bGQgY2F1c2UgdGhlIGRyaXZlciB0byB3cml0ZSBw
YXN0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlcgotICAgICAgICBnbFBpeGVsU3RvcmVpKEdMX1BBQ0tf
Uk9XX0xFTkdUSCwgZGF0YURpbWVuc2lvbiArIDEpOwotICAgICAgICBnbFJlYWRQaXhlbHNSb2J1
c3RBTkdMRSgwLCAwLCBkYXRhRGltZW5zaW9uLCBkYXRhRGltZW5zaW9uLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxHTHNpemVpPihyZ2JhRGF0YS5zaXplKCkpLCAmbGVuZ3RoLCByZ2JhRGF0YS5kYXRhKCkpOwot
ICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotICAgIH0KLX0K
LQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNo
IHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlCi0vLyB0ZXN0cyBzaG91
bGQgYmUgcnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKFJvYnVzdENsaWVudE1l
bW9yeVRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAg
ICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNE
MTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMz
X09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwotCi19ICAvLyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TUkdC
VGV4dHVyZVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rl
c3RzL1NSR0JUZXh0dXJlVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUz
NDZmNmRlMTJhLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvZ2xfdGVzdHMvU1JHQlRleHR1cmVUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1
NCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIK
LQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3MgU1JHQlRl
eHR1cmVUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgU1JHQlRl
eHR1cmVUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7Ci0gICAgICAg
IHNldFdpbmRvd0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAg
ICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgp
OwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRV
cCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0gICAgfQot
Ci0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6
OlRlYXJEb3duKCk7Ci0gICAgfQotfTsKLQotVEVTVF9QKFNSR0JUZXh0dXJlVGVzdCwgU1JHQlZh
bGlkYXRpb24pCi17Ci0gICAgYm9vbCBzdXBwb3J0ZWQgPSBleHRlbnNpb25FbmFibGVkKCJHTF9F
WFRfc1JHQiIpIHx8IGdldENsaWVudE1ham9yVmVyc2lvbigpID09IDM7Ci0KLSAgICBHTHVpbnQg
dGV4ID0gMDsKLSAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOwotICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgdGV4KTsKLQotICAgIEdMdWJ5dGUgcGl4ZWxbM10gPSB7IDAgfTsKLSAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfU1JHQiwgMSwgMSwgMCwgR0xfU1JH
QiwgR0xfVU5TSUdORURfQllURSwgcGl4ZWwpOwotICAgIGlmIChzdXBwb3J0ZWQpCi0gICAgewot
ICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBnbFRleFN1YkltYWdlMkQo
R0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwgMCwgR0xfU1JHQiwgR0xfVU5TSUdORURfQllURSwg
cGl4ZWwpOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBnbEdlbmVy
YXRlTWlwbWFwKEdMX1RFWFRVUkVfMkQpOwotICAgICAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5W
QUxJRF9PUEVSQVRJT04pOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBFWFBFQ1Rf
R0xfRVJST1IoR0xfSU5WQUxJRF9FTlVNKTsKLSAgICB9Ci0KLSAgICBnbERlbGV0ZVRleHR1cmVz
KDEsICZ0ZXgpOwotfQotCi1URVNUX1AoU1JHQlRleHR1cmVUZXN0LCBTUkdCQVZhbGlkYXRpb24p
Ci17Ci0gICAgYm9vbCBzdXBwb3J0ZWQgPSBleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfc1JHQiIp
IHx8IGdldENsaWVudE1ham9yVmVyc2lvbigpID09IDM7Ci0KLSAgICBHTHVpbnQgdGV4ID0gMDsK
LSAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXgpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgdGV4KTsKLQotICAgIEdMdWJ5dGUgcGl4ZWxbNF0gPSB7IDAgfTsKLSAgICBnbFRleElt
YWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfU1JHQl9BTFBIQV9FWFQsIDEsIDEsIDAsIEdMX1NS
R0JfQUxQSEFfRVhULCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbCk7Ci0gICAgaWYgKHN1cHBvcnRl
ZCkKLSAgICB7Ci0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIGdsVGV4
U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAwLCAwLCBHTF9TUkdCX0FMUEhBX0VY
VCwgR0xfVU5TSUdORURfQllURSwgcGl4ZWwpOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKLQotICAgICAgICBnbEdlbmVyYXRlTWlwbWFwKEdMX1RFWFRVUkVfMkQpOwotICAgICAgICBp
ZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPT0gMikKLSAgICAgICAgewotICAgICAgICAgICAg
RVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLSAgICAgICAgfQotICAgICAg
ICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAg
ICAgICB9Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX0VOVU0pOwotICAgIH0KLQotICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleCk7
Ci19Ci0KLVRFU1RfUChTUkdCVGV4dHVyZVRlc3QsIFNSR0JBUmVuZGVyYnVmZmVyKQotewotICAg
IGJvb2wgc3VwcG9ydGVkID0gZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3NSR0IiKSB8fCBnZXRD
bGllbnRNYWpvclZlcnNpb24oKSA9PSAzOwotCi0gICAgR0x1aW50IHJibyA9IDA7Ci0gICAgZ2xH
ZW5SZW5kZXJidWZmZXJzKDEsICZyYm8pOwotICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5E
RVJCVUZGRVIsIHJibyk7Ci0KLSAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVG
RkVSLCBHTF9TUkdCOF9BTFBIQThfRVhULCAxLCAxKTsKLSAgICBpZiAoc3VwcG9ydGVkKQotICAg
IHsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7
Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGUgcmJvIGhhcyBhIHNpemUgZm9yIGZ1dHVyZSB0ZXN0cwotICAgICAgICBn
bFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9SR0JBOF9PRVMsIDEsIDEp
OwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgZmJv
ID0gMDsKLSAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmZmJvKTsKLSAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgZmJvKTsKLSAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVy
KEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfUkVOREVSQlVGRkVSLCBy
Ym8pOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgR0xpbnQgY29sb3JFbmNvZGlu
ZyA9IDA7Ci0gICAgZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdihHTF9GUkFN
RUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0NPTE9SX0VOQ09ESU5H
X0VYVCwgJmNvbG9yRW5jb2RpbmcpOwotICAgIGlmIChzdXBwb3J0ZWQpCi0gICAgewotICAgICAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgRVhQRUNUX0VRKEdMX1NSR0JfRVhULCBj
b2xvckVuY29kaW5nKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgRVhQRUNUX0dM
X0VSUk9SKEdMX0lOVkFMSURfRU5VTSk7Ci0gICAgfQotCi0gICAgZ2xEZWxldGVGcmFtZWJ1ZmZl
cnMoMSwgJmZibyk7Ci0gICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZyYm8pOwotfQotCi0v
LyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVu
ZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1
biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChTUkdCVGV4dHVyZVRlc3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJf
T1BFTkdMRVMoKSk7Ci0KLX0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU2ltcGxlT3BlcmF0aW9uVGVzdC5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU2ltcGxlT3BlcmF0aW9u
VGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMWZiOWZlOTIzLi4wMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
U2ltcGxlT3BlcmF0aW9uVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTIgKzAsMCBAQAot
Ly8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgotLy8KLS8vIFNpbXBsZU9wZXJhdGlvblRlc3Q6Ci0vLyAgIEJhc2ljIEdMIGNvbW1hbmRz
IHN1Y2ggYXMgbGlua2luZyBhIHByb2dyYW0sIGluaXRpYWxpemluZyBhIGJ1ZmZlciwgZXRjLgot
Ci0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQotI2luY2x1ZGUgPHZlY3Rvcj4K
LQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3MgU2ltcGxl
T3BlcmF0aW9uVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFNp
bXBsZU9wZXJhdGlvblRlc3QoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsK
LSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMo
OCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1
ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICB9Ci19OwotCi1U
RVNUX1AoU2ltcGxlT3BlcmF0aW9uVGVzdCwgQ29tcGlsZVZlcnRleFNoYWRlcikKLXsKLSAgICBj
b25zdCBzdGQ6OnN0cmluZyBzb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBh
dHRyaWJ1dGUgdmVjNCBhX2lucHV0OwotICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IGFfaW5wdXQ7Ci0gICAgICAgIH0KLSAgICApOwotCi0g
ICAgR0x1aW50IHNoYWRlciA9IENvbXBpbGVTaGFkZXIoR0xfVkVSVEVYX1NIQURFUiwgc291cmNl
KTsKLSAgICBFWFBFQ1RfTkUoc2hhZGVyLCAwdSk7Ci0gICAgZ2xEZWxldGVTaGFkZXIoc2hhZGVy
KTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi1URVNUX1AoU2ltcGxlT3BlcmF0
aW9uVGVzdCwgQ29tcGlsZUZyYWdtZW50U2hhZGVyKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5n
IHNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OwotICAgICAgICB2YXJ5aW5nIHZlYzQgdl9pbnB1dDsKLSAgICAgICAgdm9pZCBtYWlu
KCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdl9pbnB1dDsKLSAgICAg
ICAgfQotICAgICk7Ci0KLSAgICBHTHVpbnQgc2hhZGVyID0gQ29tcGlsZVNoYWRlcihHTF9GUkFH
TUVOVF9TSEFERVIsIHNvdXJjZSk7Ci0gICAgRVhQRUNUX05FKHNoYWRlciwgMHUpOwotICAgIGds
RGVsZXRlU2hhZGVyKHNoYWRlcik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQot
VEVTVF9QKFNpbXBsZU9wZXJhdGlvblRlc3QsIExpbmtQcm9ncmFtKQotewotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIHZzU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgdm9pZCBt
YWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KDEuMCwgMS4w
LCAxLjAsIDEuMCk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcg
ZnNTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICB2b2lkIG1haW4oKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEu
MCk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJv
Z3JhbSh2c1NvdXJjZSwgZnNTb3VyY2UpOwotICAgIEVYUEVDVF9ORShwcm9ncmFtLCAwdSk7Ci0g
ICAgZ2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7
Ci19Ci0KLVRFU1RfUChTaW1wbGVPcGVyYXRpb25UZXN0LCBMaW5rUHJvZ3JhbVdpdGhVbmlmb3Jt
cykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyB2c1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAg
ICAoCi0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsX1Bvc2l0
aW9uID0gdmVjNCgxLjAsIDEuMCwgMS4wLCAxLjApOwotICAgICAgICB9Ci0gICAgKTsKLQotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZzU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAg
ICAgcHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Ci0gICAgICAgIHVuaWZvcm0gdmVjNCB1X2lucHV0
OwotICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9GcmFnQ29s
b3IgPSB1X2lucHV0OwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIEdMdWludCBwcm9ncmFtID0g
Q29tcGlsZVByb2dyYW0odnNTb3VyY2UsIGZzU291cmNlKTsKLSAgICBFWFBFQ1RfTkUocHJvZ3Jh
bSwgMHUpOwotCi0gICAgR0xpbnQgdW5pZm9ybUxvYyA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKHBy
b2dyYW0sICJ1X2lucHV0Iik7Ci0gICAgRVhQRUNUX05FKC0xLCB1bmlmb3JtTG9jKTsKLQotICAg
IGdsRGVsZXRlUHJvZ3JhbShwcm9ncmFtKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwot
fQotCi1URVNUX1AoU2ltcGxlT3BlcmF0aW9uVGVzdCwgTGlua1Byb2dyYW1XaXRoQXR0cmlidXRl
cykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyB2c1NvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAg
ICAoCi0gICAgICAgIGF0dHJpYnV0ZSB2ZWM0IGFfaW5wdXQ7Ci0gICAgICAgIHZvaWQgbWFpbigp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gYV9pbnB1dDsKLSAgICAgICAg
fQotICAgICk7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBmc1NvdXJjZSA9IFNIQURFUl9TT1VS
Q0UKLSAgICAoCi0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGds
X0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTsKLSAgICAgICAgfQotICAgICk7
Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzU291cmNlLCBmc1NvdXJj
ZSk7Ci0gICAgRVhQRUNUX05FKHByb2dyYW0sIDB1KTsKLQotICAgIEdMaW50IGF0dHJpYkxvYyA9
IGdsR2V0QXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgImFfaW5wdXQiKTsKLSAgICBFWFBFQ1RfTkUo
LTEsIGF0dHJpYkxvYyk7Ci0KLSAgICBnbERlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Ci0KLSAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotVEVTVF9QKFNpbXBsZU9wZXJhdGlvblRlc3QsIEJ1
ZmZlckRhdGFXaXRoRGF0YSkKLXsKLSAgICBHTHVpbnQgYnVmZmVyOwotICAgIGdsR2VuQnVmZmVy
cygxLCAmYnVmZmVyKTsKLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBidWZmZXIp
OwotCi0gICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gZGF0YSgxMDI0KTsKLSAgICBnbEJ1ZmZlckRh
dGEoR0xfQVJSQVlfQlVGRkVSLCBkYXRhLnNpemUoKSwgJmRhdGFbMF0sIEdMX1NUQVRJQ19EUkFX
KTsKLQotICAgIGdsRGVsZXRlQnVmZmVycygxLCAmYnVmZmVyKTsKLQotICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOwotfQotCi1URVNUX1AoU2ltcGxlT3BlcmF0aW9uVGVzdCwgQnVmZmVyRGF0YVdp
dGhOb0RhdGEpCi17Ci0gICAgR0x1aW50IGJ1ZmZlcjsKLSAgICBnbEdlbkJ1ZmZlcnMoMSwgJmJ1
ZmZlcik7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgYnVmZmVyKTsKLSAgICBn
bEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCAxMDI0LCBudWxscHRyLCBHTF9TVEFUSUNfRFJB
Vyk7Ci0gICAgZ2xEZWxldGVCdWZmZXJzKDEsICZidWZmZXIpOwotCi0gICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci19Ci0KLVRFU1RfUChTaW1wbGVPcGVyYXRpb25UZXN0LCBCdWZmZXJTdWJEYXRh
KQotewotICAgIEdMdWludCBidWZmZXI7Ci0gICAgZ2xHZW5CdWZmZXJzKDEsICZidWZmZXIpOwot
ICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIGJ1ZmZlcik7Ci0KLSAgICBjb25zdCBz
aXplX3QgYnVmZmVyU2l6ZSA9IDEwMjQ7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZF
UiwgYnVmZmVyU2l6ZSwgbnVsbHB0ciwgR0xfU1RBVElDX0RSQVcpOwotCi0gICAgY29uc3Qgc2l6
ZV90IHN1YkRhdGFDb3VudCA9IDE2OwotICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGRhdGEoYnVm
ZmVyU2l6ZSAvIHN1YkRhdGFDb3VudCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdWJE
YXRhQ291bnQ7IGkrKykKLSAgICB7Ci0gICAgICAgIGdsQnVmZmVyU3ViRGF0YShHTF9BUlJBWV9C
VUZGRVIsIGRhdGEuc2l6ZSgpICogaSwgZGF0YS5zaXplKCksICZkYXRhWzBdKTsKLSAgICB9Ci0K
LSAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJmJ1ZmZlcik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChl
LmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3Rz
IHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoU2ltcGxlT3Bl
cmF0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgRVMyX0QzRDExKEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0NP
UFlfQU5HTEUpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoRUdMX0VYUEVSSU1F
TlRBTF9QUkVTRU5UX1BBVEhfRkFTVF9BTkdMRSksCi0gICAgICAgICAgICAgICAgICAgICAgIEVT
M19EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgIEVTM19PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMy
X09QRU5HTEVTKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsKLQot
fSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9nbF90ZXN0cy9TaXh0ZWVuQnBwVGV4dHVyZVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1NpeHRlZW5CcHBUZXh0dXJlVGVzdC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmYzQxMTFkNzU5Li4wMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU2l4dGVlbkJwcFRl
eHR1cmVUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1MSArMCwwIEBACi0vLwotLy8gQ29w
eXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwot
Ly8gU2l4dGVlbkJwcFRleHR1cmVUZXN0OgotLy8gICBCYXNpYyB0ZXN0cyB1c2luZyAxNmJwcCB0
ZXh0dXJlIGZvcm1hdHMgKGUuZy4gR0xfUkdCNTY1KS4KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMv
QU5HTEVUZXN0LmgiCi0jaW5jbHVkZSAidGVzdF91dGlscy9nbF9yYWlpLmgiCi0KLSNpbmNsdWRl
ICJpbWFnZV91dGlsL2ltYWdlZm9ybWF0cy5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0K
LW5hbWVzcGFjZQotewotCi1HTENvbG9yIENvbnZlcnQ1NjUoY29uc3QgUjVHNkI1ICZyZ2I1NjUp
Ci17Ci0gICAgZ2w6OkNvbG9yRiBjb2xvcmY7Ci0gICAgUjVHNkI1OjpyZWFkQ29sb3IoJmNvbG9y
ZiwgJnJnYjU2NSk7Ci0gICAgVmVjdG9yNCB2ZWNDb2xvcihjb2xvcmYucmVkLCBjb2xvcmYuZ3Jl
ZW4sIGNvbG9yZi5ibHVlLCBjb2xvcmYuYWxwaGEpOwotICAgIHJldHVybiBHTENvbG9yKHZlY0Nv
bG9yKTsKLX0KLQotUjVHNkI1IENvbnZlcnQ1NjUoY29uc3QgR0xDb2xvciAmZ2xDb2xvcikKLXsK
LSAgICBjb25zdCBWZWN0b3I0ICZ2ZWNDb2xvciA9IGdsQ29sb3IudG9Ob3JtYWxpemVkVmVjdG9y
KCk7Ci0gICAgZ2w6OkNvbG9yRiBjb2xvcmYodmVjQ29sb3IueCwgdmVjQ29sb3IueSwgdmVjQ29s
b3IueiwgdmVjQ29sb3Iudyk7Ci0gICAgUjVHNkI1IHJnYjU2NTsKLSAgICBSNUc2QjU6OndyaXRl
Q29sb3IoJnJnYjU2NSwgJmNvbG9yZik7Ci0gICAgcmV0dXJuIHJnYjU2NTsKLX0KLQotY2xhc3Mg
U2l4dGVlbkJwcFRleHR1cmVUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6
Ci0gICAgU2l4dGVlbkJwcFRleHR1cmVUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dp
ZHRoKDEyOCk7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25m
aWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNl
dENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAg
fQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6
OlNldFVwKCk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNl
ID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAg
ZmxvYXQ7Ci0gICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsKLSAgICAgICAgICAg
IHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24ueHks
IDAuMCwgMS4wKTsKLSAgICAgICAgICAgICAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAu
NSkgKyAwLjU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UyRCA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAg
KAotICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZsb2F0OwotICAgICAgICAgICAgdW5pZm9y
bSBzYW1wbGVyMkQgdGV4OwotICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHRleGNvb3JkOwotCi0g
ICAgICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGds
X0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgKTsKLQotICAgICAgICBtMkRQcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odmVydGV4U2hh
ZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZTJEKTsKLSAgICAgICAgbVRleHR1cmUyRFVu
aWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG0yRFByb2dyYW0sICJ0ZXgiKTsK
LSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGds
RGVsZXRlUHJvZ3JhbShtMkRQcm9ncmFtKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3du
KCk7Ci0gICAgfQotCi0gICAgdm9pZCBzaW1wbGVWYWxpZGF0aW9uQmFzZShHTHVpbnQgdGV4KQot
ICAgIHsKLSAgICAgICAgLy8gRHJhdyBhIHF1YWQgdXNpbmcgdGhlIHRleHR1cmUKLSAgICAgICAg
Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICAgICAgZ2xVc2VQcm9ncmFtKG0yRFBy
b2dyYW0pOwotICAgICAgICBnbFVuaWZvcm0xaShtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uLCAw
KTsKLSAgICAgICAgZHJhd1F1YWQobTJEUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAg
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIGludCB3ID0gZ2V0V2luZG93V2lk
dGgoKSAtIDE7Ci0gICAgICAgIGludCBoID0gZ2V0V2luZG93SGVpZ2h0KCkgLSAxOwotCi0gICAg
ICAgIC8vIENoZWNrIHRoYXQgaXQgZHJldyBhcyBleHBlY3RlZAotICAgICAgICBFWFBFQ1RfUElY
RUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6cmVkKTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0NP
TE9SX0VRKHcsIDAsIEdMQ29sb3I6OmdyZWVuKTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0NPTE9S
X0VRKDAsIGgsIEdMQ29sb3I6OmJsdWUpOwotICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEo
dywgaCwgR0xDb2xvcjo6eWVsbG93KTsKLQotICAgICAgICAvLyBHZW5lcmF0ZSBtaXBtYXBzCi0g
ICAgICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8yRCk7Ci0KLSAgICAgICAgLy8gRHJh
dyBhIHF1YWQgdXNpbmcgdGhlIHRleHR1cmUKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZG
RVJfQklUKTsKLSAgICAgICAgZ2xVc2VQcm9ncmFtKG0yRFByb2dyYW0pOwotICAgICAgICBnbFVu
aWZvcm0xaShtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uLCAwKTsKLSAgICAgICAgZHJhd1F1YWQo
bTJEUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotCi0gICAgICAgIC8vIENoZWNrIHRoYXQgaXQgZHJldyBhcyBleHBlY3RlZAotICAgICAg
ICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6cmVkKTsKLSAgICAgICAgRVhQ
RUNUX1BJWEVMX0NPTE9SX0VRKHcsIDAsIEdMQ29sb3I6OmdyZWVuKTsKLSAgICAgICAgRVhQRUNU
X1BJWEVMX0NPTE9SX0VRKDAsIGgsIEdMQ29sb3I6OmJsdWUpOwotICAgICAgICBFWFBFQ1RfUElY
RUxfQ09MT1JfRVEodywgaCwgR0xDb2xvcjo6eWVsbG93KTsKLQotICAgICAgICAvLyBCaW5kIHRo
ZSB0ZXh0dXJlIGFzIGEgZnJhbWVidWZmZXIsIHJlbmRlciB0byBpdCwgdGhlbiBjaGVjayB0aGUg
cmVzdWx0cwotICAgICAgICBHTEZyYW1lYnVmZmVyIGZibzsKLSAgICAgICAgZ2xCaW5kRnJhbWVi
dWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZiby5nZXQoKSk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgMCk7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJB
TUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCB0ZXgsIDApOwot
Ci0gICAgICAgIGlmIChnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpICE9
IEdMX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbENs
ZWFyQ29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7Ci0gICAgICAgICAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQpOwotICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDI1
NSwgMCwgMCwgMjU1KTsKLSAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9FUSgxLCAwLCAyNTUsIDAs
IDAsIDI1NSk7Ci0gICAgICAgICAgICBFWFBFQ1RfUElYRUxfRVEoMSwgMSwgMjU1LCAwLCAwLCAy
NTUpOwotICAgICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDEsIDI1NSwgMCwgMCwgMjU1KTsK
LSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6Y291
dCA8PCAiU2tpcHBpbmcgcmVuZGVyaW5nIHRvIGFuIHVuc3VwcG9ydGVkIGZyYW1lYnVmZmVyIGZv
cm1hdCIgPDwgc3RkOjplbmRsOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgR0x1aW50IG0yRFBy
b2dyYW07Ci0gICAgR0xpbnQgbVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbjsKLX07Ci0KLWNsYXNz
IFNpeHRlZW5CcHBUZXh0dXJlVGVzdEVTMyA6IHB1YmxpYyBTaXh0ZWVuQnBwVGV4dHVyZVRlc3QK
LXsKLX07Ci0KLS8vIFNpbXBsZSB2YWxpZGF0aW9uIHRlc3QgZm9yIEdMX1JHQjU2NSB0ZXh0dXJl
cy4KLS8vIFNhbXBsZXMgZnJvbSB0aGUgdGV4dHVyZSwgcmVuZGVycyB0byBpdCwgZ2VuZXJhdGVz
IG1pcG1hcHMgZXRjLgotVEVTVF9QKFNpeHRlZW5CcHBUZXh0dXJlVGVzdCwgUkdCNTY1VmFsaWRh
dGlvbikKLXsKLSAgICAvLyBUaGVzZSB0ZXN0cyBmYWlsIG9uIGNlcnRhaW4gSW50ZWwgbWFjaGlu
ZXMgcnVubmluZyBhbiB1bi11cGRhdGVkIHZlcnNpb24gb2YgV2luNwotICAgIC8vIFRoZSB0ZXN0
cyBwYXNzIGFmdGVyIGluc3RhbGxpbmcgdGhlIGxhdGVzdCB1cGRhdGVzIGZyb20gV2luZG93cyBV
cGRhdGUuCi0gICAgLy8gVE9ETzogcmVlbmFibGUgdGhlc2UgdGVzdHMgb25jZSB0aGUgYm90cyBo
YXZlIGJlZW4gdXBkYXRlZAotICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJl
cigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKQotICAgIHsKLSAgICAg
ICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgRDNEMTEuIiA8PCBzdGQ6OmVu
ZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHVpbnQgdGVzdDsKLSAgICBtZW1j
cHkoJnRlc3QsICZHTENvbG9yOjpibGFjaywgNCk7Ci0KLSAgICBSNUc2QjUgcGl4ZWxzWzRdID0g
e0NvbnZlcnQ1NjUoR0xDb2xvcjo6cmVkKSwgQ29udmVydDU2NShHTENvbG9yOjpncmVlbiksCi0g
ICAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0NTY1KEdMQ29sb3I6OmJsdWUpLCBDb252ZXJ0
NTY1KEdMQ29sb3I6OnllbGxvdyl9OwotCi0gICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDApOwot
Ci0gICAgLy8gQ3JlYXRlIGEgc2ltcGxlIFJHQjU2NSB0ZXh0dXJlCi0gICAgR0xUZXh0dXJlIHRl
eDsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleC5nZXQoKSk7Ci0gICAgZ2xU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQiwgMiwgMiwgMCwgR0xfUkdCLCBHTF9V
TlNJR05FRF9TSE9SVF81XzZfNSwgbnVsbHB0cik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVT
VCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBTdXBwbHkgdGhlIGRhdGEg
dG8gaXQKLSAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMiwgMiwg
R0xfUkdCLCBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSwgcGl4ZWxzKTsKLSAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKLQotICAgIHNpbXBsZVZhbGlkYXRpb25CYXNlKHRleC5nZXQoKSk7Ci19Ci0K
LS8vIFNpbXBsZSB2YWxpZGF0aW9uIHRlc3QgZm9yIEdMX1JHQkE1NTUxIHRleHR1cmVzLgotLy8g
U2FtcGxlcyBmcm9tIHRoZSB0ZXh0dXJlLCByZW5kZXJzIHRvIGl0LCBnZW5lcmF0ZXMgbWlwbWFw
cyBldGMuCi1URVNUX1AoU2l4dGVlbkJwcFRleHR1cmVUZXN0LCBSR0JBNTU1MVZhbGlkYXRpb24p
Ci17Ci0gICAgLy8gVGhlc2UgdGVzdHMgZmFpbCBvbiBjZXJ0YWluIEludGVsIG1hY2hpbmVzIHJ1
bm5pbmcgYW4gdW4tdXBkYXRlZCB2ZXJzaW9uIG9mIFdpbjcKLSAgICAvLyBUaGUgdGVzdHMgcGFz
cyBhZnRlciBpbnN0YWxsaW5nIHRoZSBsYXRlc3QgdXBkYXRlcyBmcm9tIFdpbmRvd3MgVXBkYXRl
LgotICAgIC8vIFRPRE86IHJlZW5hYmxlIHRoZXNlIHRlc3RzIG9uY2UgdGhlIGJvdHMgaGF2ZSBi
ZWVuIHVwZGF0ZWQKLSAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVyZXIoKSA9
PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKLSAgICB7Ci0gICAgICAgIHN0
ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIEQzRDExLiIgPDwgc3RkOjplbmRsOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0x1c2hvcnQgcGl4ZWxzWzRdID0KLSAgICB7
Ci0gICAgICAgIDB4RjgwMSwgLy8gUmVkCi0gICAgICAgIDB4MDdDMSwgLy8gR3JlZW4KLSAgICAg
ICAgMHgwMDNGLCAvLyBCbHVlCi0gICAgICAgIDB4RkZDMSAgLy8gUmVkICsgR3JlZW4KLSAgICB9
OwotCi0gICAgLy8gQ3JlYXRlIGEgc2ltcGxlIDU1NTEgdGV4dHVyZQotICAgIEdMVGV4dHVyZSB0
ZXg7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXguZ2V0KCkpOwotICAgIGds
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAyLCAyLCAwLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9TSE9SVF81XzVfNV8xLCBudWxscHRyKTsKLSAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9O
RUFSRVNUKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsVGV4U3ViSW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAyLCAyLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9S
VF81XzVfNV8xLCBwaXhlbHMpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgc2lt
cGxlVmFsaWRhdGlvbkJhc2UodGV4LmdldCgpKTsKLX0KLQotLy8gVGVzdCB0byBlbnN1cmUgY2Fs
bGluZyBDbGVhcigpIG9uIGFuIFJHQkE1NTUxIHRleHR1cmUgZG9lcyBzb21ldGhpbmcgcmVhc29u
YWJsZQotLy8gQmFzZWQgb24gV2ViR0wgdGVzdCBjb25mb3JtYW5jZS90ZXh0dXJlcy90ZXh0dXJl
LWF0dGFjaG1lbnQtZm9ybWF0cy5odG1sCi1URVNUX1AoU2l4dGVlbkJwcFRleHR1cmVUZXN0LCBS
R0JBNTU1MUNsZWFyQWxwaGEpCi17Ci0gICAgLy8gVGhlc2UgdGVzdHMgZmFpbCBvbiBjZXJ0YWlu
IEludGVsIG1hY2hpbmVzIHJ1bm5pbmcgYW4gdW4tdXBkYXRlZCB2ZXJzaW9uIG9mIFdpbjcKLSAg
ICAvLyBUaGUgdGVzdHMgcGFzcyBhZnRlciBpbnN0YWxsaW5nIHRoZSBsYXRlc3QgdXBkYXRlcyBm
cm9tIFdpbmRvd3MgVXBkYXRlLgotICAgIC8vIFRPRE86IHJlZW5hYmxlIHRoZXNlIHRlc3RzIG9u
Y2UgdGhlIGJvdHMgaGF2ZSBiZWVuIHVwZGF0ZWQKLSAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBs
YXRmb3JtUmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkK
LSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIEQzRDEx
LiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xUZXh0dXJl
IHRleDsKLSAgICBHTEZyYW1lYnVmZmVyIGZibzsKLQotICAgIC8vIENyZWF0ZSBhIHNpbXBsZSA1
NTUxIHRleHR1cmUKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleC5nZXQoKSk7
Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDIsIDIsIDAsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEsIG51bGxwdHIpOwotICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1Qp
OwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxU
RVIsIEdMX05FQVJFU1QpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gQmlu
ZCB0aGUgdGV4dHVyZSBhcyBhIGZyYW1lYnVmZmVyLCBjbGVhciBpdCwgdGhlbiBjaGVjayB0aGUg
cmVzdWx0cwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8uZ2V0KCkp
OwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgMCk7Ci0gICAgZ2xGcmFtZWJ1ZmZl
clRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRV
UkVfMkQsIHRleC5nZXQoKSwgMCk7Ci0KLSAgICBpZiAoZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KEdMX0ZSQU1FQlVGRkVSKSAhPSBHTF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCkKLSAgICB7Ci0g
ICAgICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKLSAgICAgICAgZ2xD
bGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAs
IDAsIDAsIDAsIDApOwotCi0gICAgICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAx
LjBmKTsKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICAgICAgRVhQ
RUNUX1BJWEVMX0VRKDAsIDAsIDAsIDAsIDAsIDI1NSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7
Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiU2tpcHBpbmcgcmVuZGVyaW5nIHRvIGFuIHVuc3VwcG9y
dGVkIGZyYW1lYnVmZmVyIGZvcm1hdCIgPDwgc3RkOjplbmRsOwotICAgIH0KLX0KLQotLy8gU2lt
cGxlIHZhbGlkYXRpb24gdGVzdCBmb3IgR0xfUkdCQTQ0NDQgdGV4dHVyZXMuCi0vLyBTYW1wbGVz
IGZyb20gdGhlIHRleHR1cmUsIHJlbmRlcnMgdG8gaXQsIGdlbmVyYXRlcyBtaXBtYXBzIGV0Yy4K
LVRFU1RfUChTaXh0ZWVuQnBwVGV4dHVyZVRlc3QsIFJHQkE0NDQ0VmFsaWRhdGlvbikKLXsKLSAg
ICAvLyBUaGVzZSB0ZXN0cyBmYWlsIG9uIGNlcnRhaW4gSW50ZWwgbWFjaGluZXMgcnVubmluZyBh
biB1bi11cGRhdGVkIHZlcnNpb24gb2YgV2luNwotICAgIC8vIFRoZSB0ZXN0cyBwYXNzIGFmdGVy
IGluc3RhbGxpbmcgdGhlIGxhdGVzdCB1cGRhdGVzIGZyb20gV2luZG93cyBVcGRhdGUuCi0gICAg
Ly8gVE9ETzogcmVlbmFibGUgdGhlc2UgdGVzdHMgb25jZSB0aGUgYm90cyBoYXZlIGJlZW4gdXBk
YXRlZAotICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0
IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgRDNEMTEuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBHTHVzaG9ydCBwaXhlbHNbNF0gPQotICAgIHsKLSAgICAg
ICAgMHhGMDBGLCAvLyBSZWQKLSAgICAgICAgMHgwRjBGLCAvLyBHcmVlbgotICAgICAgICAweDAw
RkYsIC8vIEJsdWUKLSAgICAgICAgMHhGRjBGICAvLyBSZWQgKyBHcmVlbgotICAgIH07Ci0KLSAg
ICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7Ci0KLSAgICAvLyBHZW5lcmF0ZSBhIFJHQkE0NDQ0
IHRleHR1cmUsIG5vIG1pcG1hcHMKLSAgICBHTFRleHR1cmUgdGV4OwotICAgIGdsQmluZFRleHR1
cmUoR0xfVEVYVFVSRV8yRCwgdGV4LmdldCgpKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgR0xfUkdCQSwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfU0hPUlRfNF80
XzRfNCwgbnVsbHB0cik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBQcm92aWRlIHNvbWUgZGF0YSBmb3IgdGhlIHRleHR1
cmUKLSAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMiwgMiwgR0xf
UkdCQSwgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNCwgcGl4ZWxzKTsKLSAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKLQotICAgIHNpbXBsZVZhbGlkYXRpb25CYXNlKHRleC5nZXQoKSk7Ci19Ci0K
LS8vIFRlc3QgdXBsb2FkaW5nIFJHQkE4IGRhdGEgdG8gUkdCQTQgdGV4dHVyZXMuCi1URVNUX1Ao
U2l4dGVlbkJwcFRleHR1cmVUZXN0RVMzLCBSR0JBNFVwbG9hZFJHQkE4KQotewotICAgIHN0ZDo6
dmVjdG9yPEdMQ29sb3I+IGZvdXJDb2xvcnM7Ci0gICAgZm91ckNvbG9ycy5wdXNoX2JhY2soR0xD
b2xvcjo6cmVkKTsKLSAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayhHTENvbG9yOjpncmVlbik7Ci0g
ICAgZm91ckNvbG9ycy5wdXNoX2JhY2soR0xDb2xvcjo6Ymx1ZSk7Ci0gICAgZm91ckNvbG9ycy5w
dXNoX2JhY2soR0xDb2xvcjo6eWVsbG93KTsKLQotICAgIEdMVGV4dHVyZSB0ZXg7Ci0gICAgZ2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXguZ2V0KCkpOwotICAgIGdsVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwLCBHTF9SR0JBNCwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgZm91ckNvbG9ycy5kYXRhKCkpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwot
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIHNpbXBsZVZhbGlkYXRpb25CYXNlKHRleC5n
ZXQoKSk7Ci19Ci0KLS8vIFRlc3QgdXBsb2FkaW5nIFJHQjggZGF0YSB0byBSR0I1NjUgdGV4dHVy
ZXMuCi1URVNUX1AoU2l4dGVlbkJwcFRleHR1cmVUZXN0RVMzLCBSR0I1NjVVcGxvYWRSR0I4KQot
ewotICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3JSR0I+IGZvdXJDb2xvcnM7Ci0gICAgZm91ckNvbG9y
cy5wdXNoX2JhY2soR0xDb2xvclJHQjo6cmVkKTsKLSAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayhH
TENvbG9yUkdCOjpncmVlbik7Ci0gICAgZm91ckNvbG9ycy5wdXNoX2JhY2soR0xDb2xvclJHQjo6
Ymx1ZSk7Ci0gICAgZm91ckNvbG9ycy5wdXNoX2JhY2soR0xDb2xvclJHQjo6eWVsbG93KTsKLQot
ICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX0FMSUdOTUVOVCwgMSk7Ci0KLSAgICBHTFRleHR1
cmUgdGV4OwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4LmdldCgpKTsKLSAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCNTY1LCAyLCAyLCAwLCBHTF9S
R0IsIEdMX1VOU0lHTkVEX0JZVEUsIGZvdXJDb2xvcnMuZGF0YSgpKTsKLSAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsK
LSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVS
LCBHTF9ORUFSRVNUKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIHNpbXBsZVZh
bGlkYXRpb25CYXNlKHRleC5nZXQoKSk7Ci19Ci0KLS8vIFRlc3QgdXBsb2FkaW5nIFJHQkE4IGRh
dGEgdG8gUkdCNUE0MSB0ZXh0dXJlcy4KLVRFU1RfUChTaXh0ZWVuQnBwVGV4dHVyZVRlc3RFUzMs
IFJHQjVBMVVwbG9hZFJHQkE4KQotewotICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IGZvdXJDb2xv
cnM7Ci0gICAgZm91ckNvbG9ycy5wdXNoX2JhY2soR0xDb2xvcjo6cmVkKTsKLSAgICBmb3VyQ29s
b3JzLnB1c2hfYmFjayhHTENvbG9yOjpncmVlbik7Ci0gICAgZm91ckNvbG9ycy5wdXNoX2JhY2so
R0xDb2xvcjo6Ymx1ZSk7Ci0gICAgZm91ckNvbG9ycy5wdXNoX2JhY2soR0xDb2xvcjo6eWVsbG93
KTsKLQotICAgIEdMVGV4dHVyZSB0ZXg7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJE
LCB0ZXguZ2V0KCkpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0I1
X0ExLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAg
ICBmb3VyQ29sb3JzLmRhdGEoKSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgc2ltcGxlVmFsaWRhdGlvbkJhc2UodGV4LmdldCgp
KTsKLX0KLQotLy8gVGVzdCB1cGxvYWRpbmcgUkdCMTBBMiBkYXRhIHRvIFJHQjVBMSB0ZXh0dXJl
cy4KLVRFU1RfUChTaXh0ZWVuQnBwVGV4dHVyZVRlc3RFUzMsIFJHQjVBMVVwbG9hZFJHQjEwQTIp
Ci17Ci0gICAgc3RydWN0IFJHQjEwQTIKLSAgICB7Ci0gICAgICAgIFJHQjEwQTIodWludDMyX3Qg
ciwgdWludDMyX3QgZywgdWludDMyX3QgYiwgdWludDMyX3QgYSkgOiBSKHIpLCBHKGcpLCBCKGIp
LCBBKGEpIHt9Ci0KLSAgICAgICAgdWludDMyX3QgUiA6IDEwOwotICAgICAgICB1aW50MzJfdCBH
IDogMTA7Ci0gICAgICAgIHVpbnQzMl90IEIgOiAxMDsKLSAgICAgICAgdWludDMyX3QgQSA6IDI7
Ci0gICAgfTsKLQotICAgIHVpbnQzMl90IG9uZTEwID0gKDF1IDw8IDEwdSkgLSAxdTsKLQotICAg
IFJHQjEwQTIgcmVkKG9uZTEwLCAwdSwgMHUsIDB4M3UpOwotICAgIFJHQjEwQTIgZ3JlZW4oMHUs
IG9uZTEwLCAwdSwgMHgzdSk7Ci0gICAgUkdCMTBBMiBibHVlKDB1LCAwdSwgb25lMTAsIDB4M3Up
OwotICAgIFJHQjEwQTIgeWVsbG93KG9uZTEwLCBvbmUxMCwgMHUsIDB4M3UpOwotCi0gICAgc3Rk
Ojp2ZWN0b3I8UkdCMTBBMj4gZm91ckNvbG9yczsKLSAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayhy
ZWQpOwotICAgIGZvdXJDb2xvcnMucHVzaF9iYWNrKGdyZWVuKTsKLSAgICBmb3VyQ29sb3JzLnB1
c2hfYmFjayhibHVlKTsKLSAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayh5ZWxsb3cpOwotCi0gICAg
R0xUZXh0dXJlIHRleDsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleC5nZXQo
KSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQjVfQTEsIDIsIDIs
IDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JFViwKLSAgICAgICAgICAg
ICAgICAgZm91ckNvbG9ycy5kYXRhKCkpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwot
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIHNpbXBsZVZhbGlkYXRpb25CYXNlKHRleC5n
ZXQoKSk7Ci19Ci0KLS8vIFRlc3QgcmVhZGluZyBmcm9tIFJHQkE0IHRleHR1cmVzIGF0dGFjaGVk
IHRvIEZCTy4KLVRFU1RfUChTaXh0ZWVuQnBwVGV4dHVyZVRlc3RFUzMsIFJHQkE0RnJhbWVidWZm
ZXJSZWFkYmFjaykKLXsKLSAgICAvLyBUT0RPKGptYWRpbGwpOiBGaXggYnVnIHdpdGggR0xFUwot
ICAgIGlmIChJc09wZW5HTEVTKCkpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qg
c2tpcHBlZCBvbiBHTEVTLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgVmVjdG9yNCByYXdDb2xvcigwLjVmLCAwLjdmLCAxLjBmLCAwLjBmKTsKLSAgICBHTENv
bG9yIGV4cGVjdGVkQ29sb3IocmF3Q29sb3IpOwotCi0gICAgR0xGcmFtZWJ1ZmZlciBmYm87Ci0g
ICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIGZiby5nZXQoKSk7Ci0KLSAgICBH
TFRleHR1cmUgdGV4OwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4LmdldCgp
KTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTQsIDIsIDIsIDAs
IEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotICAgIGdsRnJhbWVidWZmZXJU
ZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJF
XzJELCB0ZXguZ2V0KCksIDApOwotCi0gICAgZ2xDbGVhckNvbG9yKHJhd0NvbG9yLngsIHJhd0Nv
bG9yLnksIHJhd0NvbG9yLnosIHJhd0NvbG9yLncpOwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVG
RkVSX0JJVCk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIEdMZW51bSBjb2xv
clJlYWRGb3JtYXQgPSBHTF9OT05FOwotICAgIEdMZW51bSBjb2xvclJlYWRUeXBlICAgPSBHTF9O
T05FOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JN
QVQsIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQgKj4oJmNvbG9yUmVhZEZvcm1hdCkpOwotICAgIGds
R2V0SW50ZWdlcnYoR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFLCByZWludGVycHJl
dF9jYXN0PEdMaW50ICo+KCZjb2xvclJlYWRUeXBlKSk7Ci0KLSAgICBpZiAoY29sb3JSZWFkRm9y
bWF0ID09IEdMX1JHQkEgJiYgY29sb3JSZWFkVHlwZSA9PSBHTF9VTlNJR05FRF9CWVRFKQotICAg
IHsKLSAgICAgICAgR0xDb2xvciBhY3R1YWxDb2xvciA9IEdMQ29sb3I6OmJsYWNrOwotICAgICAg
ICBnbFJlYWRQaXhlbHMoMCwgMCwgMSwgMSwgY29sb3JSZWFkRm9ybWF0LCBjb2xvclJlYWRUeXBl
LCAmYWN0dWFsQ29sb3IpOwotICAgICAgICBFWFBFQ1RfQ09MT1JfTkVBUihleHBlY3RlZENvbG9y
LCBhY3R1YWxDb2xvciwgMjApOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBBU1NF
UlRfR0xFTlVNX0VRKEdMX1JHQkEsIGNvbG9yUmVhZEZvcm1hdCk7Ci0gICAgICAgIEFTU0VSVF9U
UlVFKGNvbG9yUmVhZFR5cGUgPT0gR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhUIHx8
Ci0gICAgICAgICAgICAgICAgICAgIGNvbG9yUmVhZFR5cGUgPT0gR0xfVU5TSUdORURfU0hPUlRf
NF80XzRfNCk7Ci0KLSAgICAgICAgdWludDE2X3QgcmdiYSA9IDA7Ci0gICAgICAgIGdsUmVhZFBp
eGVscygwLCAwLCAxLCAxLCBjb2xvclJlYWRGb3JtYXQsIGNvbG9yUmVhZFR5cGUsICZyZ2JhKTsK
LQotICAgICAgICBHTHVieXRlIHI4ID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oKHJnYmEgJiAweEYw
MDApID4+IDEyKTsKLSAgICAgICAgR0x1Ynl0ZSBnOCA9IHN0YXRpY19jYXN0PEdMdWJ5dGU+KChy
Z2JhICYgMHgwRjAwKSA+PiA4KTsKLSAgICAgICAgR0x1Ynl0ZSBiOCA9IHN0YXRpY19jYXN0PEdM
dWJ5dGU+KChyZ2JhICYgMHgwMEYwKSA+PiA0KTsKLSAgICAgICAgR0x1Ynl0ZSBhOCA9IHN0YXRp
Y19jYXN0PEdMdWJ5dGU+KChyZ2JhICYgMHgwMDBGKSk7Ci0KLSAgICAgICAgR0xDb2xvciBhY3R1
YWxDb2xvcihyOCA8PCA0LCBnOCA8PCA0LCBiOCA8PCA0LCBhOCA8PCA0KTsKLSAgICAgICAgRVhQ
RUNUX0NPTE9SX05FQVIoZXhwZWN0ZWRDb2xvciwgYWN0dWFsQ29sb3IsIDIwKTsKLSAgICB9Ci0K
LSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCByZWFkaW5nIGZyb20gUkdC
NTY1IHRleHR1cmVzIGF0dGFjaGVkIHRvIEZCTy4KLVRFU1RfUChTaXh0ZWVuQnBwVGV4dHVyZVRl
c3RFUzMsIFJHQjU2NUZyYW1lYnVmZmVyUmVhZGJhY2spCi17Ci0gICAgLy8gVE9ETyhqbWFkaWxs
KTogRml4IGJ1ZyB3aXRoIEdMRVMKLSAgICBpZiAoSXNPcGVuR0xFUygpKQotICAgIHsKLSAgICAg
ICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gR0xFUy4iIDw8IHN0ZDo6ZW5kbDsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEdMRnJhbWVidWZmZXIgZmJvOwotICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBmYm8uZ2V0KCkpOwotCi0gICAgc3RkOjp2ZWN0
b3I8R0xDb2xvcj4gZm91ckNvbG9yczsKLSAgICBmb3VyQ29sb3JzLnB1c2hfYmFjayhHTENvbG9y
OjpyZWQpOwotICAgIGZvdXJDb2xvcnMucHVzaF9iYWNrKEdMQ29sb3I6OmdyZWVuKTsKLSAgICBm
b3VyQ29sb3JzLnB1c2hfYmFjayhHTENvbG9yOjpibHVlKTsKLSAgICBmb3VyQ29sb3JzLnB1c2hf
YmFjayhHTENvbG9yOjp3aGl0ZSk7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U2hh
ZGVyID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAiaW4gdmVjNCBjb2xv
cjtcbiIKLSAgICAgICAgImluIHZlYzIgcG9zaXRpb247XG4iCi0gICAgICAgICJvdXQgdmVjNCBm
Y29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgICAgZmNvbG9y
ID0gY29sb3I7XG4iCi0gICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLCAw
LjUsIDEuMCk7XG4iCi0gICAgICAgICJ9IjsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21l
bnRTaGFkZXIgPQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJpbiBtZWRp
dW1wIHZlYzQgZmNvbG9yO1xuIgotICAgICAgICAib3V0IG1lZGl1bXAgdmVjNCBjb2xvcjtcbiIK
LSAgICAgICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgIiAgICBjb2xvciA9IGZjb2xvcjtc
biIKLSAgICAgICAgIn0iOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2
ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyKTsKLSAgICBnbFVzZVByb2dyYW0ocHJvZ3JhbSk7
Ci0KLSAgICBHTGludCBjb2xvckxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFt
LCAiY29sb3IiKTsKLSAgICBBU1NFUlRfTkUoLTEsIGNvbG9yTG9jYXRpb24pOwotICAgIGdsRW5h
YmxlVmVydGV4QXR0cmliQXJyYXkoY29sb3JMb2NhdGlvbik7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQ
b2ludGVyKGNvbG9yTG9jYXRpb24sIDQsIEdMX1VOU0lHTkVEX0JZVEUsIEdMX1RSVUUsIDAsIGZv
dXJDb2xvcnMuZGF0YSgpKTsKLQotICAgIGludCB3ID0gZ2V0V2luZG93V2lkdGgoKTsKLSAgICBp
bnQgaCA9IGdldFdpbmRvd0hlaWdodCgpOwotCi0gICAgZ2xWaWV3cG9ydCgwLCAwLCB3LCBoKTsK
LQotICAgIEdMVGV4dHVyZSB0ZXg7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0
ZXguZ2V0KCkpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0I1NjUs
IHcsIGgsIDAsIEdMX1JHQiwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0gICAgZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdM
X1RFWFRVUkVfMkQsIHRleC5nZXQoKSwgMCk7Ci0KLSAgICBkcmF3SW5kZXhlZFF1YWQocHJvZ3Jh
bSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAg
IGludCB0ID0gMTI7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMCwgaCAtIDEsIEdMQ29s
b3I6OnJlZCwgdCk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoMCwgMCwgR0xDb2xvcjo6
Z3JlZW4sIHQpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9ORUFSKHcgLSAxLCAwLCBHTENvbG9y
OjpibHVlLCB0KTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfTkVBUih3IC0gMSwgaCAtIDEsIEdM
Q29sb3I6OndoaXRlLCB0KTsKLQotICAgIEdMZW51bSBjb2xvclJlYWRGb3JtYXQgPSBHTF9OT05F
OwotICAgIEdMZW51bSBjb2xvclJlYWRUeXBlICAgPSBHTF9OT05FOwotICAgIGdsR2V0SW50ZWdl
cnYoR0xfSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9GT1JNQVQsIHJlaW50ZXJwcmV0X2Nhc3Q8
R0xpbnQgKj4oJmNvbG9yUmVhZEZvcm1hdCkpOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfSU1QTEVN
RU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFLCByZWludGVycHJldF9jYXN0PEdMaW50ICo+KCZjb2xv
clJlYWRUeXBlKSk7Ci0KLSAgICBpZiAoY29sb3JSZWFkRm9ybWF0ID09IEdMX1JHQiAmJiBjb2xv
clJlYWRUeXBlID09IEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81KQotICAgIHsKLSAgICAgICAgc3Rk
Ojp2ZWN0b3I8UjVHNkI1PiByZWFkQ29sb3JzKHcgKiBoKTsKLSAgICAgICAgZ2xSZWFkUGl4ZWxz
KDAsIDAsIHcsIGgsIEdMX1JHQiwgR0xfVU5TSUdORURfU0hPUlRfNV82XzUsIHJlYWRDb2xvcnMu
ZGF0YSgpKTsKLQotICAgICAgICBpbnQgaG9mZnNldCA9IChoIC0gMSkgKiB3OwotICAgICAgICBF
WFBFQ1RfQ09MT1JfTkVBUihHTENvbG9yOjpyZWQsIENvbnZlcnQ1NjUocmVhZENvbG9yc1tob2Zm
c2V0XSksIHQpOwotICAgICAgICBFWFBFQ1RfQ09MT1JfTkVBUihHTENvbG9yOjpncmVlbiwgQ29u
dmVydDU2NShyZWFkQ29sb3JzWzBdKSwgdCk7Ci0gICAgICAgIEVYUEVDVF9DT0xPUl9ORUFSKEdM
Q29sb3I6OmJsdWUsIENvbnZlcnQ1NjUocmVhZENvbG9yc1t3IC0gMV0pLCB0KTsKLSAgICAgICAg
RVhQRUNUX0NPTE9SX05FQVIoR0xDb2xvcjo6d2hpdGUsIENvbnZlcnQ1NjUocmVhZENvbG9yc1t3
IC0gMSArIGhvZmZzZXRdKSwgdCk7Ci0gICAgfQotCi0gICAgZ2xEZWxldGVQcm9ncmFtKHByb2dy
YW0pOwotfQotCi0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUu
Zy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMg
c2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChTaXh0ZWVuQnBw
VGV4dHVyZVRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAg
ICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJf
RDNEMTFfRkw5XzMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7Ci0KLUFOR0xFX0lOU1RBTlRJQVRF
X1RFU1QoU2l4dGVlbkJwcFRleHR1cmVUZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgp
LCBFUzNfT1BFTkdMRVMoKSk7Ci0KLX0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvU3RhdGVDaGFuZ2VUZXN0LmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9TdGF0ZUNoYW5nZVRl
c3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzlhNzg0MzljOC4uMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1N0
YXRlQ2hhbmdlVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OTEgKzAsMCBAQAotLy8KLS8v
IENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z
dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgot
Ly8KLS8vIFN0YXRlQ2hhbmdlVGVzdDoKLS8vICAgU3BlY2lmaWNhbGx5IGRlc2lnbmVkIGZvciBh
biBBTkdMRSBpbXBsZW1lbnRhdGlvbiBvZiBHTCwgdGhlc2UgdGVzdHMgdmFsaWRhdGUgdGhhdAot
Ly8gICBBTkdMRSdzIGRpcnR5IGJpdHMgc3lzdGVtcyBkb24ndCBnZXQgY29uZnVzZWQgYnkgY2Vy
dGFpbiBzZXF1ZW5jZXMgb2Ygc3RhdGUgY2hhbmdlcy4KLS8vCi0KLSNpbmNsdWRlICJ0ZXN0X3V0
aWxzL0FOR0xFVGVzdC5oIgotI2luY2x1ZGUgInRlc3RfdXRpbHMvZ2xfcmFpaS5oIgotCi11c2lu
ZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1jbGFzcyBTdGF0ZUNoYW5nZVRl
c3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBTdGF0ZUNoYW5nZVRl
c3QoKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoNjQpOwotICAgICAgICBzZXRXaW5k
b3dIZWlnaHQoNjQpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwotICAgICAgICBzZXRD
b25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRzKDgpOwotICAgICAg
ICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0KLSAgICAgICAgLy8gRW5hYmxlIHRoZSBubyBlcnJv
ciBleHRlbnNpb24gdG8gYXZvaWQgc3luY2luZyB0aGUgRkJPIHN0YXRlIG9uIHZhbGlkYXRpb24u
Ci0gICAgICAgIHNldE5vRXJyb3JFbmFibGVkKHRydWUpOwotICAgIH0KLQotICAgIHZvaWQgU2V0
VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAg
ICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtRnJhbWVidWZmZXIpOwotICAgICAgICBnbEdlblRl
eHR1cmVzKDIsIG1UZXh0dXJlcy5kYXRhKCkpOwotICAgICAgICBnbEdlblJlbmRlcmJ1ZmZlcnMo
MSwgJm1SZW5kZXJidWZmZXIpOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAg
IH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKG1G
cmFtZWJ1ZmZlciAhPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbERlbGV0ZUZyYW1lYnVm
ZmVycygxLCAmbUZyYW1lYnVmZmVyKTsKLSAgICAgICAgICAgIG1GcmFtZWJ1ZmZlciA9IDA7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoIW1UZXh0dXJlcy5lbXB0eSgpKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBnbERlbGV0ZVRleHR1cmVzKHN0YXRpY19jYXN0PEdMc2l6ZWk+KG1UZXh0dXJl
cy5zaXplKCkpLCBtVGV4dHVyZXMuZGF0YSgpKTsKLSAgICAgICAgICAgIG1UZXh0dXJlcy5jbGVh
cigpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtUmVu
ZGVyYnVmZmVyKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0g
ICAgR0x1aW50IG1GcmFtZWJ1ZmZlciAgICAgICAgICAgPSAwOwotICAgIEdMdWludCBtUmVuZGVy
YnVmZmVyICAgICAgICAgID0gMDsKLSAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1UZXh0dXJlcyA9
IHswLCAwfTsKLX07Ci0KLWNsYXNzIFN0YXRlQ2hhbmdlVGVzdEVTMyA6IHB1YmxpYyBTdGF0ZUNo
YW5nZVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFN0YXRlQ2hhbmdlVGVzdEVTMygpIHt9Ci19
OwotCi19ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCi0KLS8vIEVuc3VyZSB0aGF0IENvcHlUZXhJ
bWFnZTJEIHN5bmNzIGZyYW1lYnVmZmVyIGNoYW5nZXMuCi1URVNUX1AoU3RhdGVDaGFuZ2VUZXN0
LCBDb3B5VGV4SW1hZ2UyRFN5bmMpCi17Ci0gICAgaWYgKElzQU1EKCkgJiYgZ2V0UGxhdGZvcm1S
ZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKLSAgICB7
Ci0gICAgICAgIC8vIFRPRE8oZ2VvZmZsYW5nKTogRml4IG9uIExpbnV4IEFNRCBkcml2ZXJzICho
dHRwOi8vYW5nbGVidWcuY29tLzEyOTEpCi0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNh
YmxlZCBvbiBBTUQgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcik7
Ci0KLSAgICAvLyBJbml0IGZpcnN0IHRleHR1cmUgdG8gcmVkCi0gICAgZ2xCaW5kVGV4dHVyZShH
TF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51
bGxwdHIpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NP
TE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sIDApOwotICAgIGds
Q2xlYXJDb2xvcigxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9S
X0JVRkZFUl9CSVQpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7
Ci0KLSAgICAvLyBJbml0IHNlY29uZCB0ZXh0dXJlIHRvIGdyZWVuCi0gICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhU
VVJFXzJELCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
IG51bGxwdHIpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdM
X0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0sIDApOwotICAg
IGdsQ2xlYXJDb2xvcigwLjBmLCAxLjBmLCAwLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NP
TE9SX0JVRkZFUl9CSVQpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAwLCAyNTUsIDAsIDI1
NSk7Ci0KLSAgICAvLyBDb3B5IGluIHRoZSByZWQgdGV4dHVyZSB0byB0aGUgZ3JlZW4gb25lLgot
ICAgIC8vIENvcHlUZXhJbWFnZSBzaG91bGQgc3luYyB0aGUgZnJhbWVidWZmZXIgYXR0YWNobWVu
dCBjaGFuZ2UuCi0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xf
Q09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7Ci0gICAg
Z2xDb3B5VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAwLCAwLCAxNiwgMTYs
IDApOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9S
X0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0sIDApOwotICAgIEVYUEVD
VF9QSVhFTF9FUSgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKLX0KLQotLy8gRW5zdXJlIHRoYXQgQ29weVRleFN1YkltYWdlMkQgc3luY3MgZnJhbWVi
dWZmZXIgY2hhbmdlcy4KLVRFU1RfUChTdGF0ZUNoYW5nZVRlc3QsIENvcHlUZXhTdWJJbWFnZTJE
U3luYykKLXsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVm
ZmVyKTsKLQotICAgIC8vIEluaXQgZmlyc3QgdGV4dHVyZSB0byByZWQKLSAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAsIEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwgbnVsbHB0cik7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwg
R0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7Ci0g
ICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOwotICAgIGdsQ2xlYXIoR0xf
Q09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDI1NSwgMCwgMCwg
MjU1KTsKLQotICAgIC8vIEluaXQgc2Vjb25kIHRleHR1cmUgdG8gZ3JlZW4KLSAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURf
QllURSwgbnVsbHB0cik7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZF
UiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSwgMCk7
Ci0gICAgZ2xDbGVhckNvbG9yKDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYpOwotICAgIGdsQ2xlYXIo
R0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDI1NSwg
MCwgMjU1KTsKLQotICAgIC8vIENvcHkgaW4gdGhlIHJlZCB0ZXh0dXJlIHRvIHRoZSBncmVlbiBv
bmUuCi0gICAgLy8gQ29weVRleEltYWdlIHNob3VsZCBzeW5jIHRoZSBmcmFtZWJ1ZmZlciBhdHRh
Y2htZW50IGNoYW5nZS4KLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdLCAwKTsK
LSAgICBnbENvcHlUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDAsIDE2
LCAxNik7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09M
T1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1sxXSwgMCk7Ci0gICAgRVhQ
RUNUX1BJWEVMX0VRKDAsIDAsIDI1NSwgMCwgMCwgMjU1KTsKLQotICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotfQotCi0vLyBUZXN0IHRoYXQgRnJhbWVidWZmZXIgY29tcGxldGVuZXNzIGNhY2hp
bmcgd29ya3Mgd2hlbiBjb2xvciBhdHRhY2htZW50cyBjaGFuZ2UuCi1URVNUX1AoU3RhdGVDaGFu
Z2VUZXN0LCBGcmFtZWJ1ZmZlckluY29tcGxldGVDb2xvckF0dGFjaG1lbnQpCi17Ci0gICAgZ2xC
aW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcik7Ci0gICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOwotICAgIGdsVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsIG51bGxwdHIpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZG
RVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sIDAp
OwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotCi0gICAgLy8gQ2hhbmdlIHRoZSB0
ZXh0dXJlIGF0IGNvbG9yIGF0dGFjaG1lbnQgMCB0byBiZSBub24tY29sb3ItcmVuZGVyYWJsZS4K
LSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfQUxQSEEsIDE2LCAxNiwgMCwg
R0xfQUxQSEEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotICAgIEVYUEVDVF9HTEVOVU1f
RVEoR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5ULAotICAgICAgICAgICAgICAg
ICAgICAgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7Ci0KLSAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCB0aGF0IGNhY2hpbmcgd29ya3Mgd2hl
biBjb2xvciBhdHRhY2htZW50cyBjaGFuZ2Ugd2l0aCBUZXhTdG9yYWdlLgotVEVTVF9QKFN0YXRl
Q2hhbmdlVGVzdCwgRnJhbWVidWZmZXJJbmNvbXBsZXRlV2l0aFRleFN0b3JhZ2UpCi17Ci0gICAg
aWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9zdG9yYWdlIikpCi0gICAgewot
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIFRleFN0b3JhZ2UyREVY
VCBub3QgYXZhaWxhYmxlLiIgPDwgc3RkOjplbmRsOwotICAgIH0KLQotICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOwotICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBu
dWxscHRyKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9D
T0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdLCAwKTsKLSAgICBF
WFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLQotICAgIC8vIENoYW5nZSB0aGUgdGV4dHVyZSBh
dCBjb2xvciBhdHRhY2htZW50IDAgdG8gYmUgbm9uLWNvbG9yLXJlbmRlcmFibGUuCi0gICAgZ2xU
ZXhTdG9yYWdlMkRFWFQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfQUxQSEE4X0VYVCwgMTYsIDE2KTsK
LSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVO
VCwKLSAgICAgICAgICAgICAgICAgICAgIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFN
RUJVRkZFUikpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRlc3QgdGhh
dCBjYWNoaW5nIHdvcmtzIHdoZW4gY29sb3IgYXR0YWNobWVudHMgY2hhbmdlIHdpdGggQ29tcHJl
c3NlZFRleEltYWdlMkQuCi1URVNUX1AoU3RhdGVDaGFuZ2VUZXN0RVMzLCBGcmFtZWJ1ZmZlcklu
Y29tcGxldGVXaXRoQ29tcHJlc3NlZFRleCkKLXsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9G
UkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
MkQsIG1UZXh0dXJlc1swXSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdM
X1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0g
ICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNI
TUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7Ci0gICAgRVhQRUNUX0dMRU5V
TV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdM
X0ZSQU1FQlVGRkVSKSk7Ci0KLSAgICAvLyBDaGFuZ2UgdGhlIHRleHR1cmUgYXQgY29sb3IgYXR0
YWNobWVudCAwIHRvIGJlIG5vbi1jb2xvci1yZW5kZXJhYmxlLgotICAgIGdsQ29tcHJlc3NlZFRl
eEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIsIDE2LCAx
NiwgMCwgNjQsIG51bGxwdHIpOwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJf
SU5DT01QTEVURV9BVFRBQ0hNRU5ULAotICAgICAgICAgICAgICAgICAgICAgZ2xDaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKLX0KLQotLy8gVGVzdCB0aGF0IGNhY2hpbmcgd29ya3Mgd2hlbiBjb2xvciBhdHRhY2htZW50
cyBhcmUgZGVsZXRlZC4KLVRFU1RfUChTdGF0ZUNoYW5nZVRlc3RFUzMsIEZyYW1lYnVmZmVySW5j
b21wbGV0ZVdoZW5BdHRhY2htZW50RGVsZXRlZCkKLXsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgbUZyYW1lYnVmZmVyKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlc1swXSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7
Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRU
QUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7Ci0gICAgRVhQRUNUX0dM
RU5VTV9FUShHTF9GUkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KEdMX0ZSQU1FQlVGRkVSKSk7Ci0KLSAgICAvLyBEZWxldGUgdGhlIHRleHR1cmUgYXQgY29sb3Ig
YXR0YWNobWVudCAwLgotICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlc1swXSk7Ci0g
ICAgbVRleHR1cmVzWzBdID0gMDsKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVS
X0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5ULAotICAgICAgICAgICAgICAgICAgICAgZ2xD
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7Ci0KLSAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCB0aGF0IEZyYW1lYnVmZmVyIGNvbXBsZXRlbmVzcyBj
YWNoaW5nIHdvcmtzIHdoZW4gZGVwdGggYXR0YWNobWVudHMgY2hhbmdlLgotVEVTVF9QKFN0YXRl
Q2hhbmdlVGVzdCwgRnJhbWVidWZmZXJJbmNvbXBsZXRlRGVwdGhBdHRhY2htZW50KQotewotICAg
IGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOwotICAgIGds
QmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKLSAgICBnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLCBudWxscHRyKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1F
QlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBd
LCAwKTsKLSAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtUmVuZGVyYnVm
ZmVyKTsKLSAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9ERVBU
SF9DT01QT05FTlQxNiwgMTYsIDE2KTsKLSAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdM
X0ZSQU1FQlVGRkVSLCBHTF9ERVBUSF9BVFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsIG1SZW5k
ZXJidWZmZXIpOwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUs
IGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotCi0gICAgLy8gQ2hh
bmdlIHRoZSB0ZXh0dXJlIGF0IGNvbG9yIGF0dGFjaG1lbnQgMCB0byBiZSBub24tZGVwdGgtcmVu
ZGVyYWJsZS4KLSAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9S
R0JBOCwgMTYsIDE2KTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0lOQ09N
UExFVEVfQVRUQUNITUVOVCwKLSAgICAgICAgICAgICAgICAgICAgIGdsQ2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19
Ci0KLS8vIFRlc3QgdGhhdCBGcmFtZWJ1ZmZlciBjb21wbGV0ZW5lc3MgY2FjaGluZyB3b3JrcyB3
aGVuIHN0ZW5jaWwgYXR0YWNobWVudHMgY2hhbmdlLgotVEVTVF9QKFN0YXRlQ2hhbmdlVGVzdCwg
RnJhbWVidWZmZXJJbmNvbXBsZXRlU3RlbmNpbEF0dGFjaG1lbnQpCi17Ci0gICAgZ2xCaW5kRnJh
bWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcik7Ci0gICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhU
VVJFXzJELCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
IG51bGxwdHIpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdM
X0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sIDApOwotICAg
IGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIG1SZW5kZXJidWZmZXIpOwotICAg
IGdsUmVuZGVyYnVmZmVyU3RvcmFnZShHTF9SRU5ERVJCVUZGRVIsIEdMX1NURU5DSUxfSU5ERVg4
LCAxNiwgMTYpOwotICAgIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIs
IEdMX1NURU5DSUxfQVRUQUNITUVOVCwgR0xfUkVOREVSQlVGRkVSLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbVJlbmRlcmJ1ZmZlcik7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9G
UkFNRUJVRkZFUl9DT01QTEVURSwgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVG
RkVSKSk7Ci0KLSAgICAvLyBDaGFuZ2UgdGhlIHRleHR1cmUgYXQgdGhlIHN0ZW5jaWwgYXR0YWNo
bWVudCB0byBiZSBub24tc3RlbmNpbC1yZW5kZXJhYmxlLgotICAgIGdsUmVuZGVyYnVmZmVyU3Rv
cmFnZShHTF9SRU5ERVJCVUZGRVIsIEdMX1JHQkE4LCAxNiwgMTYpOwotICAgIEVYUEVDVF9HTEVO
VU1fRVEoR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5ULAotICAgICAgICAgICAg
ICAgICAgICAgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdMX0ZSQU1FQlVGRkVSKSk7Ci0KLSAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCB0aGF0IEZyYW1lYnVmZmVyIGNv
bXBsZXRlbmVzcyBjYWNoaW5nIHdvcmtzIHdoZW4gZGVwdGgtc3RlbmNpbCBhdHRhY2htZW50cyBj
aGFuZ2UuCi1URVNUX1AoU3RhdGVDaGFuZ2VUZXN0LCBGcmFtZWJ1ZmZlckluY29tcGxldGVEZXB0
aFN0ZW5jaWxBdHRhY2htZW50KQotewotICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8
IDMgJiYgIWV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU19wYWNrZWRfZGVwdGhfc3RlbmNpbCIpKQot
ICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBwYWNrZWQg
ZGVwdGgrc3RlbmNpbCBub3QgYXZhaWxibGUuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoSXNXaW5kb3dzKCkgJiYgSXNJbnRlbCgpICYmIElzT3BlbkdM
KCkpCi0gICAgewotICAgICAgICAvLyBUT0RPKGptYWRpbGwpOiBJbnZlc3RpZ2F0ZSB0aGUgZmFp
bHVyZSAoaHR0cHM6Ly9hbmdsZWJ1Zy5jb20vMTM4OCkKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IGRpc2FibGVkIG9uIFdpbmRvd3MgSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZG
RVIsIG1GcmFtZWJ1ZmZlcik7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4
dHVyZXNbMF0pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAx
NiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotICAgIGdsRnJh
bWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBH
TF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sIDApOwotICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihH
TF9SRU5ERVJCVUZGRVIsIG1SZW5kZXJidWZmZXIpOwotICAgIGdsUmVuZGVyYnVmZmVyU3RvcmFn
ZShHTF9SRU5ERVJCVUZGRVIsIEdMX0RFUFRIMjRfU1RFTkNJTDgsIDE2LCAxNik7Ci0gICAgZ2xG
cmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgR0xfREVQVEhfU1RFTkNJTF9B
VFRBQ0hNRU5ULCBHTF9SRU5ERVJCVUZGRVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtUmVuZGVyYnVmZmVyKTsKLSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NP
TVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLQotICAg
IC8vIENoYW5nZSB0aGUgdGV4dHVyZSB0aGUgZGVwdGgtc3RlbmNpbCBhdHRhY2htZW50IHRvIGJl
IG5vbi1kZXB0aC1zdGVuY2lsLXJlbmRlcmFibGUuCi0gICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdl
KEdMX1JFTkRFUkJVRkZFUiwgR0xfUkdCQTgsIDE2LCAxNik7Ci0gICAgRVhQRUNUX0dMRU5VTV9F
UShHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQsCi0gICAgICAgICAgICAgICAg
ICAgICBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLQotICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBFbnN1cmUgdGhhdCBDb3B5VGV4U3ViSW1hZ2Uz
RCBzeW5jcyBmcmFtZWJ1ZmZlciBjaGFuZ2VzLgotVEVTVF9QKFN0YXRlQ2hhbmdlVGVzdEVTMywg
Q29weVRleFN1YkltYWdlM0RTeW5jKQotewotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1F
QlVGRkVSLCBtRnJhbWVidWZmZXIpOwotCi0gICAgLy8gSW5pdCBmaXJzdCB0ZXh0dXJlIHRvIHJl
ZAotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8zRCwgbVRleHR1cmVzWzBdKTsKLSAgICBn
bFRleEltYWdlM0QoR0xfVEVYVFVSRV8zRCwgMCwgR0xfUkdCQSwgMTYsIDE2LCAxNiwgMCwgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1
cmVMYXllcihHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIG1UZXh0dXJlc1sw
XSwgMCwgMCk7Ci0gICAgZ2xDbGVhckNvbG9yKDEuMGYsIDAuMGYsIDAuMGYsIDEuMGYpOwotICAg
IGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAs
IDI1NSwgMCwgMCwgMjU1KTsKLQotICAgIC8vIEluaXQgc2Vjb25kIHRleHR1cmUgdG8gZ3JlZW4K
LSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfM0QsIG1UZXh0dXJlc1sxXSk7Ci0gICAgZ2xU
ZXhJbWFnZTNEKEdMX1RFWFRVUkVfM0QsIDAsIEdMX1JHQkEsIDE2LCAxNiwgMTYsIDAsIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxwdHIpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJl
TGF5ZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBtVGV4dHVyZXNbMV0s
IDAsIDApOwotICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAxLjBmLCAwLjBmLCAxLjBmKTsKLSAgICBn
bENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCAw
LCAyNTUsIDAsIDI1NSk7Ci0KLSAgICAvLyBDb3B5IGluIHRoZSByZWQgdGV4dHVyZSB0byB0aGUg
Z3JlZW4gb25lLgotICAgIC8vIENvcHlUZXhJbWFnZSBzaG91bGQgc3luYyB0aGUgZnJhbWVidWZm
ZXIgYXR0YWNobWVudCBjaGFuZ2UuCi0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmVMYXllcihHTF9G
UkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIG1UZXh0dXJlc1swXSwgMCwgMCk7Ci0g
ICAgZ2xDb3B5VGV4U3ViSW1hZ2UzRChHTF9URVhUVVJFXzNELCAwLCAwLCAwLCAwLCAwLCAwLCAx
NiwgMTYpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlTGF5ZXIoR0xfRlJBTUVCVUZGRVIsIEdM
X0NPTE9SX0FUVEFDSE1FTlQwLCBtVGV4dHVyZXNbMV0sIDAsIDApOwotICAgIEVYUEVDVF9QSVhF
TF9FUSgwLCAwLCAyNTUsIDAsIDAsIDI1NSk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LX0KLQotLy8gRW5zdXJlIHRoYXQgQmxpdEZyYW1lYnVmZmVyIHN5bmNzIGZyYW1lYnVmZmVyIGNo
YW5nZXMuCi1URVNUX1AoU3RhdGVDaGFuZ2VUZXN0RVMzLCBCbGl0RnJhbWVidWZmZXJTeW5jKQot
ewotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJhbWVidWZmZXIpOwot
Ci0gICAgLy8gSW5pdCBmaXJzdCB0ZXh0dXJlIHRvIHJlZAotICAgIGdsQmluZFRleHR1cmUoR0xf
VEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxs
cHRyKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzBdLCAwKTsKLSAgICBnbENs
ZWFyQ29sb3IoMS4wZiwgMC4wZiwgMC4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xPUl9C
VUZGRVJfQklUKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1LCAwLCAwLCAyNTUpOwot
Ci0gICAgLy8gSW5pdCBzZWNvbmQgdGV4dHVyZSB0byBncmVlbgotICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBu
dWxscHRyKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9D
T0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdLCAwKTsKLSAgICBn
bENsZWFyQ29sb3IoMC4wZiwgMS4wZiwgMC4wZiwgMS4wZik7Ci0gICAgZ2xDbGVhcihHTF9DT0xP
Ul9CVUZGRVJfQklUKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMCwgMjU1LCAwLCAyNTUp
OwotCi0gICAgLy8gQ2hhbmdlIHRvIHRoZSByZWQgdGV4dHVyZXMgYW5kIGJsaXQuCi0gICAgLy8g
QmxpdEZyYW1lYnVmZmVyIHNob3VsZCBzeW5jIHRoZSBmcmFtZWJ1ZmZlciBhdHRhY2htZW50IGNo
YW5nZS4KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1FQlVGRkVSLCAwKTsKLSAg
ICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX1JFQURfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FU
VEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAwKTsKLSAgICBnbEJsaXRGcmFtZWJ1ZmZlcigwLCAwLCAxNiwgMTYsIDAsIDAs
IDE2LCAxNiwgR0xfQ09MT1JfQlVGRkVSX0JJVCwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xCaW5kRnJh
bWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUiwgMCk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDAs
IDAsIDI1NSwgMCwgMCwgMjU1KTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotfQotCi0v
LyBFbnN1cmUgdGhhdCBSZWFkQnVmZmVyIGFuZCBEcmF3QnVmZmVycyBzeW5jIGZyYW1lYnVmZmVy
IGNoYW5nZXMuCi1URVNUX1AoU3RhdGVDaGFuZ2VUZXN0RVMzLCBSZWFkQnVmZmVyQW5kRHJhd0J1
ZmZlcnNTeW5jKQotewotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRnJh
bWVidWZmZXIpOwotCi0gICAgLy8gSW5pdGlhbGl6ZSB0d28gRkJPIGF0dGFjaG1lbnRzCi0gICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMF0pOwotICAgIGdsVGV4SW1h
Z2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VO
U0lHTkVEX0JZVEUsIG51bGxwdHIpOwotICAgIGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJB
TUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNb
MF0sIDApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFdKTsK
LSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBH
TF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMSwgR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmVzWzFdLCAwKTsKLQotICAgIC8vIENsZWFyIGZpcnN0IGF0dGFjaG1lbnQgdG8g
cmVkCi0gICAgR0xlbnVtIGJ1ZnMxW10gPSB7R0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX05PTkV9
OwotICAgIGdsRHJhd0J1ZmZlcnMoMiwgYnVmczEpOwotICAgIGdsQ2xlYXJDb2xvcigxLjBmLCAw
LjBmLCAwLjBmLCAxLjBmKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0g
ICAgLy8gQ2xlYXIgc2Vjb25kIHRleHR1cmUgdG8gZ3JlZW4KLSAgICBHTGVudW0gYnVmczJbXSA9
IHtHTF9OT05FLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMX07Ci0gICAgZ2xEcmF3QnVmZmVycygyLCBi
dWZzMik7Ci0gICAgZ2xDbGVhckNvbG9yKDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYpOwotICAgIGds
Q2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICAvLyBWZXJpZnkgZmlyc3QgYXR0YWNo
bWVudCBpcyByZWQgYW5kIHNlY29uZCBpcyBncmVlbgotICAgIGdsUmVhZEJ1ZmZlcihHTF9DT0xP
Ul9BVFRBQ0hNRU5UMSk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKDAsIDAsIDAsIDI1NSwgMCwgMjU1
KTsKLQotICAgIGdsUmVhZEJ1ZmZlcihHTF9DT0xPUl9BVFRBQ0hNRU5UMCk7Ci0gICAgRVhQRUNU
X1BJWEVMX0VRKDAsIDAsIDI1NSwgMCwgMCwgMjU1KTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotfQotCi0vLyBUZXN0cyBjYWxsaW5nIGludmFsaWRhdGUgb24gaW5jb21wbGV0ZSBmcmFt
ZWJ1ZmZlcnMgYWZ0ZXIgc3dpdGNoaW5nIGF0dGFjaG1lbnRzLgotLy8gQWRhcHRlZCBwYXJ0aWFs
bHkgZnJvbSBXZWJHTCAyIHRlc3QgInJlbmRlcmJ1ZmZlcnMvaW52YWxpZGF0ZS1mcmFtZWJ1ZmZl
ciIKLVRFU1RfUChTdGF0ZUNoYW5nZVRlc3RFUzMsIEluY29tcGxldGVSZW5kZXJidWZmZXJBdHRh
Y2htZW50SW52YWxpZGF0ZVN5bmMpCi17Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVC
VUZGRVIsIG1GcmFtZWJ1ZmZlcik7Ci0gICAgZ2xCaW5kUmVuZGVyYnVmZmVyKEdMX1JFTkRFUkJV
RkZFUiwgbVJlbmRlcmJ1ZmZlcik7Ci0gICAgR0xpbnQgc2FtcGxlcyA9IDA7Ci0gICAgZ2xHZXRJ
bnRlcm5hbGZvcm1hdGl2KEdMX1JFTkRFUkJVRkZFUiwgR0xfUkdCQTgsIEdMX1NBTVBMRVMsIDEs
ICZzYW1wbGVzKTsKLSAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVGRkVS
LCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfUkVOREVSQlVGRkVSLCBtUmVuZGVyYnVmZmVyKTsK
LSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIGludmFsaWRhdGUgdGhlIGZyYW1l
YnVmZmVyIHdoZW4gdGhlIGF0dGFjaG1lbnQgaXMgaW5jb21wbGV0ZTogbm8gc3RvcmFnZSBhbGxv
Y2F0ZWQgdG8gdGhlCi0gICAgLy8gYXR0YWNoZWQgcmVuZGVyYnVmZmVyCi0gICAgRVhQRUNUX0dM
RU5VTV9FUShHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQsCi0gICAgICAgICAg
ICAgICAgICAgICBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLSAg
ICBHTGVudW0gYXR0YWNobWVudHMxW10gPSB7R0xfQ09MT1JfQVRUQUNITUVOVDB9OwotICAgIGds
SW52YWxpZGF0ZUZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAxLCBhdHRhY2htZW50czEpOwot
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVs
dGlzYW1wbGUoR0xfUkVOREVSQlVGRkVSLCBzdGF0aWNfY2FzdDxHTHNpemVpPihzYW1wbGVzKSwg
R0xfUkdCQTgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0V2luZG93
V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJB
TUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZF
UikpOwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICBHTFJlbmRlcmJ1ZmZlciByZW5kZXJidWY7Ci0KLSAgICBnbEJpbmRS
ZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCByZW5kZXJidWYuZ2V0KCkpOwotICAgIGdsRnJh
bWVidWZmZXJSZW5kZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0RFUFRIX0FUVEFDSE1FTlQs
IEdMX1JFTkRFUkJVRkZFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmJ1
Zi5nZXQoKSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBpbnZhbGlkYXRl
IHRoZSBmcmFtZWJ1ZmZlciB3aGVuIHRoZSBhdHRhY2htZW50IGlzIGluY29tcGxldGU6IG5vIHN0
b3JhZ2UgYWxsb2NhdGVkIHRvIHRoZQotICAgIC8vIGF0dGFjaGVkIHJlbmRlcmJ1ZmZlcgotICAg
IC8vIE5vdGU6IHRoZSBidWcgd2lsbCBvbmx5IHJlcHJvICp3aXRob3V0KiBhIGNhbGwgdG8gY2hl
Y2tTdGF0dXMgYmVmb3JlIHRoZSBpbnZhbGlkYXRlLgotICAgIEdMZW51bSBhdHRhY2htZW50czJb
XSA9IHtHTF9ERVBUSF9BVFRBQ0hNRU5UfTsKLSAgICBnbEludmFsaWRhdGVGcmFtZWJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgMSwgYXR0YWNobWVudHMyKTsKLQotICAgIGdsUmVuZGVyYnVmZmVyU3Rv
cmFnZU11bHRpc2FtcGxlKEdMX1JFTkRFUkJVRkZFUiwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oc2Ft
cGxlcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfREVQVEhfQ09N
UE9ORU5UMTYsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdodCgpKTsKLSAgICBFWFBF
Q1RfR0xFTlVNX0VRKEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFLCBnbENoZWNrRnJhbWVidWZmZXJT
dGF0dXMoR0xfRlJBTUVCVUZGRVIpKTsKLSAgICBnbENsZWFyKEdMX0RFUFRIX0JVRkZFUl9CSVQp
OwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotfQotCi1jbGFzcyBTdGF0ZUNoYW5nZVJlbmRl
clRlc3QgOiBwdWJsaWMgU3RhdGVDaGFuZ2VUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBTdGF0
ZUNoYW5nZVJlbmRlclRlc3QoKSA6IG1Qcm9ncmFtKDApLCBtUmVuZGVyYnVmZmVyKDApIHt9Ci0K
LSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFN0YXRlQ2hhbmdlVGVz
dDo6U2V0VXAoKTsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3Vy
Y2UgPQotICAgICAgICAgICAgImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAg
ICAgInZvaWQgbWFpbigpIHtcbiIKLSAgICAgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0
KHBvc2l0aW9uLCAwLCAxKTtcbiIKLSAgICAgICAgICAgICJ9IjsKLSAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAgICAgInVuaWZvcm0gaGln
aHAgdmVjNCB1bmlmb3JtQ29sb3I7XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKCkge1xuIgot
ICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB1bmlmb3JtQ29sb3I7XG4iCi0gICAgICAg
ICAgICAifSI7Ci0KLSAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFk
ZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICAgICAgQVNTRVJUX05FKDB1LCBt
UHJvZ3JhbSk7Ci0KLSAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtUmVuZGVyYnVmZmVy
KTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAg
IGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgICAgIGdsRGVsZXRlUmVuZGVyYnVmZmVy
cygxLCAmbVJlbmRlcmJ1ZmZlcik7Ci0KLSAgICAgICAgU3RhdGVDaGFuZ2VUZXN0OjpUZWFyRG93
bigpOwotICAgIH0KLQotICAgIHZvaWQgc2V0VW5pZm9ybUNvbG9yKGNvbnN0IEdMQ29sb3IgJmNv
bG9yKQotICAgIHsKLSAgICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAgICAgY29u
c3QgVmVjdG9yNCAmbm9ybWFsaXplZENvbG9yID0gY29sb3IudG9Ob3JtYWxpemVkVmVjdG9yKCk7
Ci0gICAgICAgIEdMaW50IHVuaWZvcm1Mb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Q
cm9ncmFtLCAidW5pZm9ybUNvbG9yIik7Ci0gICAgICAgIEFTU0VSVF9ORSgtMSwgdW5pZm9ybUxv
Y2F0aW9uKTsKLSAgICAgICAgZ2xVbmlmb3JtNGZ2KHVuaWZvcm1Mb2NhdGlvbiwgMSwgbm9ybWFs
aXplZENvbG9yLmRhdGEoKSk7Ci0gICAgfQotCi0gICAgR0x1aW50IG1Qcm9ncmFtOwotICAgIEdM
dWludCBtUmVuZGVyYnVmZmVyOwotfTsKLQotLy8gVGVzdCB0aGF0IHJlLWNyZWF0aW5nIGEgY3Vy
cmVudGx5IGF0dGFjaGVkIHRleHR1cmUgd29ya3MgYXMgZXhwZWN0ZWQuCi1URVNUX1AoU3RhdGVD
aGFuZ2VSZW5kZXJUZXN0LCBSZWNyZWF0ZVRleHR1cmUpCi17Ci0gICAgaWYgKElzSW50ZWwoKSAm
JiBJc0xpbnV4KCkpCi0gICAgewotICAgICAgICAvLyBUT0RPKGN3YWxsZXopOiBGaXggb24gTGlu
dXggSW50ZWwgZHJpdmVycyAoaHR0cDovL2FuZ2xlYnVnLmNvbS8xMzQ2KQotICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gTGludXggSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjpl
bmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcik7Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlc1swXSk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7
Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRU
QUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSwgMCk7Ci0KLSAgICAvLyBEcmF3
IHdpdGggcmVkIHRvIHRoZSBGQk8uCi0gICAgR0xDb2xvciByZWQoMjU1LCAwLCAwLCAyNTUpOwot
ICAgIHNldFVuaWZvcm1Db2xvcihyZWQpOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRp
b24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgcmVkKTsKLQotICAg
IC8vIFJlY3JlYXRlIHRoZSB0ZXh0dXJlIHdpdGggZ3JlZW4uCi0gICAgR0xDb2xvciBncmVlbigw
LCAyNTUsIDAsIDI1NSk7Ci0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gZ3JlZW5QaXhlbHMoMzIg
KiAzMiwgZ3JlZW4pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JB
LCAzMiwgMzIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAg
IGdyZWVuUGl4ZWxzLmRhdGEoKSk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIGdy
ZWVuKTsKLQotICAgIC8vIFZlcmlmeSBkcmF3aW5nIGJsdWUgZ2l2ZXMgYmx1ZS4gVGhpcyBjb3Zl
cnMgdGhlIEZCTyBzeW5jIHdpdGggRDNEIGRpcnR5IGJpdHMuCi0gICAgR0xDb2xvciBibHVlKDAs
IDAsIDI1NSwgMjU1KTsKLSAgICBzZXRVbmlmb3JtQ29sb3IoYmx1ZSk7Ci0gICAgZHJhd1F1YWQo
bVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgw
LCAwLCBibHVlKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IHRo
YXQgcmUtY3JlYXRpbmcgYSBjdXJyZW50bHkgYXR0YWNoZWQgcmVuZGVyYnVmZmVyIHdvcmtzIGFz
IGV4cGVjdGVkLgotVEVTVF9QKFN0YXRlQ2hhbmdlUmVuZGVyVGVzdCwgUmVjcmVhdGVSZW5kZXJi
dWZmZXIpCi17Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1
ZmZlcik7Ci0KLSAgICBnbEJpbmRSZW5kZXJidWZmZXIoR0xfUkVOREVSQlVGRkVSLCBtUmVuZGVy
YnVmZmVyKTsKLSAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVSQlVGRkVSLCBHTF9S
R0JBOCwgMTYsIDE2KTsKLSAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZSQU1FQlVG
RkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfUkVOREVSQlVGRkVSLCBtUmVuZGVyYnVmZmVy
KTsKLQotICAgIC8vIERyYXcgd2l0aCByZWQgdG8gdGhlIEZCTy4KLSAgICBHTENvbG9yIHJlZCgy
NTUsIDAsIDAsIDI1NSk7Ci0gICAgc2V0VW5pZm9ybUNvbG9yKHJlZCk7Ci0gICAgZHJhd1F1YWQo
bVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgw
LCAwLCByZWQpOwotCi0gICAgLy8gUmVjcmVhdGUgdGhlIHJlbmRlcmJ1ZmZlciBhbmQgY2xlYXIg
dG8gZ3JlZW4uCi0gICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JFTkRFUkJVRkZFUiwgR0xf
UkdCQTgsIDMyLCAzMik7Ci0gICAgZ2xDbGVhckNvbG9yKDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYp
OwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgR0xDb2xvciBncmVlbigw
LCAyNTUsIDAsIDI1NSk7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIGdyZWVuKTsK
LQotICAgIC8vIFZlcmlmeSBkcmF3aW5nIGJsdWUgZ2l2ZXMgYmx1ZS4gVGhpcyBjb3ZlcnMgdGhl
IEZCTyBzeW5jIHdpdGggRDNEIGRpcnR5IGJpdHMuCi0gICAgR0xDb2xvciBibHVlKDAsIDAsIDI1
NSwgMjU1KTsKLSAgICBzZXRVbmlmb3JtQ29sb3IoYmx1ZSk7Ci0gICAgZHJhd1F1YWQobVByb2dy
YW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBi
bHVlKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IHRoYXQgcmVj
cmVhdGluZyBhIHRleHR1cmUgd2l0aCBHZW5lcmF0ZU1pcG1hcHMgc2lnbmFscyB0aGUgRkJPIGlz
IGRpcnR5LgotVEVTVF9QKFN0YXRlQ2hhbmdlUmVuZGVyVGVzdCwgR2VuZXJhdGVNaXBtYXApCi17
Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZlcik7Ci0K
LSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7Ci0gICAgZ2xU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwg
R0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDEsIEdMX1JHQkEsIDgsIDgsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxw
dHIpOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAyLCBHTF9SR0JBLCA0LCA0LCAw
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLSAgICBnbEZyYW1lYnVmZmVy
VGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVS
RV8yRCwgbVRleHR1cmVzWzBdLCAwKTsKLQotICAgIC8vIERyYXcgb25jZSB0byBzZXQgdGhlIFJl
bmRlclRhcmdldCBpbiBEM0QxMQotICAgIEdMQ29sb3IgcmVkKDI1NSwgMCwgMCwgMjU1KTsKLSAg
ICBzZXRVbmlmb3JtQ29sb3IocmVkKTsKLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9u
IiwgMC41Zik7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIHJlZCk7Ci0KLSAgICAv
LyBUaGlzIHdpbGwgdHJpZ2dlciB0aGUgdGV4dHVyZSB0byBiZSByZS1jcmVhdGVkIG9uIEZMOV8z
LgotICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8yRCk7Ci0KLSAgICAvLyBOb3cgZW5z
dXJlIHdlIGRvbid0IGhhdmUgYSBzdGFsZSByZW5kZXIgdGFyZ2V0LgotICAgIEdMQ29sb3IgYmx1
ZSgwLCAwLCAyNTUsIDI1NSk7Ci0gICAgc2V0VW5pZm9ybUNvbG9yKGJsdWUpOwotICAgIGRyYXdR
dWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1Jf
RVEoMCwgMCwgYmx1ZSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotQU5HTEVf
SU5TVEFOVElBVEVfVEVTVChTdGF0ZUNoYW5nZVRlc3QsIEVTMl9EM0Q5KCksIEVTMl9EM0QxMSgp
LCBFUzJfT1BFTkdMKCkpOwotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChTdGF0ZUNoYW5nZVJlbmRl
clRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdM
KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpKTsKLUFOR0xFX0lO
U1RBTlRJQVRFX1RFU1QoU3RhdGVDaGFuZ2VUZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09QRU5H
TCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90
ZXN0cy9Td2l6emxlVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvU3dpenpsZVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
MWFkMTMxMDJlMS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2dsX3Rlc3RzL1N3aXp6bGVUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ0MSAr
MCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQot
I2luY2x1ZGUgPHZlY3Rvcj4KLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UK
LXsKLQotY2xhc3MgU3dpenpsZVRlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3Rl
ZDoKLSAgICBTd2l6emxlVGVzdCgpCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgp
OwotICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0
cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdC
bHVlQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotCi0gICAgICAgIEdM
ZW51bSBzd2l6emxlc1tdID0KLSAgICAgICAgewotICAgICAgICAgICAgR0xfUkVELAotICAgICAg
ICAgICAgR0xfR1JFRU4sCi0gICAgICAgICAgICBHTF9CTFVFLAotICAgICAgICAgICAgR0xfQUxQ
SEEsCi0gICAgICAgICAgICBHTF9aRVJPLAotICAgICAgICAgICAgR0xfT05FLAotICAgICAgICB9
OwotCi0gICAgICAgIGZvciAoaW50IHIgPSAwOyByIDwgNjsgcisrKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBmb3IgKGludCBnID0gMDsgZyA8IDY7IGcrKykKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBmb3IgKGludCBiID0gMDsgYiA8IDY7IGIrKykKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGEgPSAwOyBhIDwgNjsgYSsrKQotICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzd2l6emxlUGVybXV0YXRp
b24gcGVybXV0YXRpb247Ci0gICAgICAgICAgICAgICAgICAgICAgICBwZXJtdXRhdGlvbi5zd2l6
emxlUmVkID0gc3dpenpsZXNbcl07Ci0gICAgICAgICAgICAgICAgICAgICAgICBwZXJtdXRhdGlv
bi5zd2l6emxlR3JlZW4gPSBzd2l6emxlc1tnXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBl
cm11dGF0aW9uLnN3aXp6bGVCbHVlID0gc3dpenpsZXNbYl07Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBwZXJtdXRhdGlvbi5zd2l6emxlQWxwaGEgPSBzd2l6emxlc1thXTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1QZXJtdXRhdGlvbnMucHVzaF9iYWNrKHBlcm11dGF0aW9uKTsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAg
QU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNo
YWRlclNvdXJjZSA9IFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lz
aW9uIGhpZ2hwIGZsb2F0OwotICAgICAgICAgICAgYXR0cmlidXRlIHZlYzQgcG9zaXRpb247Ci0g
ICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFp
bigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlv
bjsKLSAgICAgICAgICAgICAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAg
ICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSAgICAgICAgICAgIHVuaWZvcm0gc2FtcGxlcjJE
IHRleDsKLSAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsKLQotICAgICAgICAgICAg
dm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3Ig
PSB0ZXh0dXJlMkQodGV4LCB0ZXhjb29yZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0K
LSAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZy
YWdtZW50U2hhZGVyU291cmNlKTsKLSAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7Ci0K
LSAgICAgICAgbVRleHR1cmVVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbiht
UHJvZ3JhbSwgInRleCIpOwotICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXh0dXJlVW5pZm9ybUxv
Y2F0aW9uKTsKLQotICAgICAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7
Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRv
d24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsK
LSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUpOwotCi0gICAgICAgIEFOR0xF
VGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAg
ICB2b2lkIGluaXQyRFRleHR1cmUoR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTGVudW0gZGF0YUZv
cm1hdCwgR0xlbnVtIGRhdGFUeXBlLCBjb25zdCBUKiBkYXRhKQotICAgIHsKLSAgICAgICAgZ2xH
ZW5UZXh0dXJlcygxLCAmbVRleHR1cmUpOwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlKTsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IGludGVybmFsRm9ybWF0LCAxLCAxLCAwLCBkYXRhRm9ybWF0LCBkYXRhVHlwZSwgZGF0YSk7Ci0K
LSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJ
TFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIH0KLQotICAgIHZvaWQg
aW5pdDJEQ29tcHJlc3NlZFRleHR1cmUoR0xlbnVtIGludGVybmFsRm9ybWF0LCBHTHNpemVpIHdp
ZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkYXRhU2l6ZSwgY29uc3QgR0x1Ynl0ZSogZGF0
YSkKLSAgICB7Ci0gICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1UZXh0dXJlKTsKLSAgICAgICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZSk7Ci0gICAgICAgIGdsQ29tcHJl
c3NlZFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfQ09NUFJFU1NFRF9SR0JBX1MzVENf
RFhUMV9FWFQsIHdpZHRoLCBoZWlnaHQsIDAsIGRhdGFTaXplLCBkYXRhKTsKLQotICAgICAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9O
RUFSRVNUKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgfQotCi0gICAgR0x1Ynl0ZSBnZXRFeHBl
Y3RlZFZhbHVlKEdMZW51bSBzd2l6emxlLCBHTHVieXRlIHVuc3dpenpsZWRbNF0pCi0gICAgewot
ICAgICAgICBzd2l0Y2ggKHN3aXp6bGUpCi0gICAgICAgIHsKLSAgICAgICAgICBjYXNlIEdMX1JF
RDogICByZXR1cm4gdW5zd2l6emxlZFswXTsKLSAgICAgICAgICBjYXNlIEdMX0dSRUVOOiByZXR1
cm4gdW5zd2l6emxlZFsxXTsKLSAgICAgICAgICBjYXNlIEdMX0JMVUU6ICByZXR1cm4gdW5zd2l6
emxlZFsyXTsKLSAgICAgICAgICBjYXNlIEdMX0FMUEhBOiByZXR1cm4gdW5zd2l6emxlZFszXTsK
LSAgICAgICAgICBjYXNlIEdMX1pFUk86ICByZXR1cm4gMDsKLSAgICAgICAgICBjYXNlIEdMX09O
RTogICByZXR1cm4gMjU1OwotICAgICAgICAgIGRlZmF1bHQ6ICAgICAgIHJldHVybiAwOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBydW5UZXN0MkQoKQotICAgIHsKLSAgICAgICAgLy8g
VE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCB3aHkgdGhpcyBmYWlscyBvbiBJbnRlbC4KLSAgICAg
ICAgaWYgKElzSW50ZWwoKSAmJiBHZXRQYXJhbSgpLmdldFJlbmRlcmVyKCkgPT0gRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6
OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7
Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUpOwotICAgICAg
ICBnbFVuaWZvcm0xaShtVGV4dHVyZVVuaWZvcm1Mb2NhdGlvbiwgMCk7Ci0KLSAgICAgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfU1dJWlpMRV9SLCBHTF9SRUQp
OwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9TV0la
WkxFX0csIEdMX0dSRUVOKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfU1dJWlpMRV9CLCBHTF9CTFVFKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfU1dJWlpMRV9BLCBHTF9BTFBIQSk7Ci0KLSAgICAg
ICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICAgICAgZHJhd1F1YWQobVByb2dy
YW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgICAgIEdMdWJ5dGUgdW5zd2l6emxlZFs0XTsK
LSAgICAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZ
VEUsICZ1bnN3aXp6bGVkKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1QZXJtdXRhdGlvbnMuc2l6ZSgpOyBpKyspCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0IHN3aXp6bGVQZXJtdXRhdGlvbiYgcGVybXV0YXRp
b24gPSBtUGVybXV0YXRpb25zW2ldOwotCi0gICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xf
VEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9TV0laWkxFX1IsIHBlcm11dGF0aW9uLnN3aXp6bGVSZWQp
OwotICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
U1dJWlpMRV9HLCBwZXJtdXRhdGlvbi5zd2l6emxlR3JlZW4pOwotICAgICAgICAgICAgZ2xUZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfU1dJWlpMRV9CLCBwZXJtdXRhdGlv
bi5zd2l6emxlQmx1ZSk7Ci0gICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9TV0laWkxFX0EsIHBlcm11dGF0aW9uLnN3aXp6bGVBbHBoYSk7Ci0KLSAg
ICAgICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgICAgICAgICBkcmF3
UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICAgICAgICAgIEVYUEVDVF9Q
SVhFTF9FUSgwLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEV4cGVjdGVkVmFs
dWUocGVybXV0YXRpb24uc3dpenpsZVJlZCwgdW5zd2l6emxlZCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ2V0RXhwZWN0ZWRWYWx1ZShwZXJtdXRhdGlvbi5zd2l6emxlR3JlZW4sIHVu
c3dpenpsZWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEV4cGVjdGVkVmFsdWUo
cGVybXV0YXRpb24uc3dpenpsZUJsdWUsIHVuc3dpenpsZWQpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdldEV4cGVjdGVkVmFsdWUocGVybXV0YXRpb24uc3dpenpsZUFscGhhLCB1bnN3
aXp6bGVkKSk7Ci0KLSAgICAgICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgR0x1aW50IG1Qcm9ncmFtOwotICAgIEdMaW50IG1UZXh0dXJlVW5pZm9y
bUxvY2F0aW9uOwotCi0gICAgR0x1aW50IG1UZXh0dXJlOwotCi0gICAgc3RydWN0IHN3aXp6bGVQ
ZXJtdXRhdGlvbgotICAgIHsKLSAgICAgICAgR0xlbnVtIHN3aXp6bGVSZWQ7Ci0gICAgICAgIEdM
ZW51bSBzd2l6emxlR3JlZW47Ci0gICAgICAgIEdMZW51bSBzd2l6emxlQmx1ZTsKLSAgICAgICAg
R0xlbnVtIHN3aXp6bGVBbHBoYTsKLSAgICB9OwotICAgIHN0ZDo6dmVjdG9yPHN3aXp6bGVQZXJt
dXRhdGlvbj4gbVBlcm11dGF0aW9uczsKLX07Ci0KLWNsYXNzIFN3aXp6bGVJbnRlZ2VyVGVzdCA6
IHB1YmxpYyBTd2l6emxlVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBTZXRVcCgpIG92
ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgICAgICIjdmVyc2lv
biAzMDAgZXNcbiIKLSAgICAgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCi0gICAg
ICAgICAgICAiaW4gdmVjNCBwb3NpdGlvbjtcbiIKLSAgICAgICAgICAgICJvdXQgdmVjMiB0ZXhj
b29yZDtcbiIKLSAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgot
ICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlv
bjtcbiIKLSAgICAgICAgICAgICIgICAgdGV4Y29vcmQgPSAocG9zaXRpb24ueHkgKiAwLjUpICsg
MC41O1xuIgotICAgICAgICAgICAgIn1cbiI7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgot
ICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAgICAgICJwcmVj
aXNpb24gaGlnaHAgdXNhbXBsZXIyRDtcbiIKLSAgICAgICAgICAgICJ1bmlmb3JtIHVzYW1wbGVy
MkQgdGV4O1xuIgotICAgICAgICAgICAgImluIHZlYzIgdGV4Y29vcmQ7XG4iCi0gICAgICAgICAg
ICAib3V0IHZlYzQgbXlfRnJhZ0NvbG9yO1xuIgotICAgICAgICAgICAgIlxuIgotICAgICAgICAg
ICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgICB1
dmVjNCBzID0gdGV4dHVyZSh0ZXgsIHRleGNvb3JkKTtcbiIKLSAgICAgICAgICAgICIgICAgaWYg
KHNbMF0gPT0gMXUpIHNbMF0gPSAyNTV1O1xuIgotICAgICAgICAgICAgIiAgICBpZiAoc1sxXSA9
PSAxdSkgc1sxXSA9IDI1NXU7XG4iCi0gICAgICAgICAgICAiICAgIGlmIChzWzJdID09IDF1KSBz
WzJdID0gMjU1dTtcbiIKLSAgICAgICAgICAgICIgICAgaWYgKHNbM10gPT0gMXUpIHNbM10gPSAy
NTV1O1xuIgotICAgICAgICAgICAgIiAgICBteV9GcmFnQ29sb3IgPSB2ZWM0KHMpIC8gMjU1LjA7
XG4iCi0gICAgICAgICAgICAifVxuIjsKLQotICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9n
cmFtKHZlcnRleFNoYWRlclNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgICAgICBB
U1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKLQotICAgICAgICBtVGV4dHVyZVVuaWZvcm1Mb2NhdGlv
biA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4Iik7Ci0gICAgICAgIEFTU0VS
VF9ORSgtMSwgbVRleHR1cmVVbmlmb3JtTG9jYXRpb24pOwotCi0gICAgICAgIGdsQ2xlYXJDb2xv
cigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
Ci0gICAgfQotfTsKLQotVEVTVF9QKFN3aXp6bGVUZXN0LCBSR0JBOF8yRCkKLXsKLSAgICBHTHVi
eXRlIGRhdGFbXSA9IHsgMSwgNjQsIDEyOCwgMjAwIH07Ci0gICAgaW5pdDJEVGV4dHVyZShHTF9S
R0JBOCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgZGF0YSk7Ci0gICAgcnVuVGVzdDJEKCk7
Ci19Ci0KLVRFU1RfUChTd2l6emxlVGVzdCwgUkdCOF8yRCkKLXsKLSAgICBHTHVieXRlIGRhdGFb
XSA9IHsgNzcsIDY2LCA1NSB9OwotICAgIGluaXQyRFRleHR1cmUoR0xfUkdCOCwgR0xfUkdCLCBH
TF9VTlNJR05FRF9CWVRFLCBkYXRhKTsKLSAgICBydW5UZXN0MkQoKTsKLX0KLQotVEVTVF9QKFN3
aXp6bGVUZXN0LCBSRzhfMkQpCi17Ci0gICAgR0x1Ynl0ZSBkYXRhW10gPSB7IDExLCA5OSB9Owot
ICAgIGluaXQyRFRleHR1cmUoR0xfUkc4LCBHTF9SRywgR0xfVU5TSUdORURfQllURSwgZGF0YSk7
Ci0gICAgcnVuVGVzdDJEKCk7Ci19Ci0KLVRFU1RfUChTd2l6emxlVGVzdCwgUjhfMkQpCi17Ci0g
ICAgR0x1Ynl0ZSBkYXRhW10gPSB7IDIgfTsKLSAgICBpbml0MkRUZXh0dXJlKEdMX1I4LCBHTF9S
RUQsIEdMX1VOU0lHTkVEX0JZVEUsIGRhdGEpOwotICAgIHJ1blRlc3QyRCgpOwotfQotCi1URVNU
X1AoU3dpenpsZVRlc3QsIFJHQjEwX0EyXzJEKQotewotICAgIEdMdWludCBkYXRhW10gPSB7MjB1
IHwgKDQwdSA8PCAxMCkgfCAoNjB1IDw8IDIwKSB8ICgydSA8PCAzMCl9OwotICAgIGluaXQyRFRl
eHR1cmUoR0xfUkdCMTBfQTIsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0lOVF8yXzEwXzEwXzEwX1JF
ViwgZGF0YSk7Ci0gICAgcnVuVGVzdDJEKCk7Ci19Ci0KLVRFU1RfUChTd2l6emxlVGVzdCwgUkdC
QTMyRl8yRCkKLXsKLSAgICBHTGZsb2F0IGRhdGFbXSA9IHsgMC4yNWYsIDAuNWYsIDAuNzVmLCAw
LjhmIH07Ci0gICAgaW5pdDJEVGV4dHVyZShHTF9SR0JBMzJGLCBHTF9SR0JBLCBHTF9GTE9BVCwg
ZGF0YSk7Ci0gICAgcnVuVGVzdDJEKCk7Ci19Ci0KLVRFU1RfUChTd2l6emxlVGVzdCwgUkdCMzJG
XzJEKQotewotICAgIEdMZmxvYXQgZGF0YVtdID0geyAwLjFmLCAwLjJmLCAwLjNmIH07Ci0gICAg
aW5pdDJEVGV4dHVyZShHTF9SR0IzMkYsIEdMX1JHQiwgR0xfRkxPQVQsIGRhdGEpOwotICAgIHJ1
blRlc3QyRCgpOwotfQotCi1URVNUX1AoU3dpenpsZVRlc3QsIFJHMzJGXzJEKQotewotICAgIEdM
ZmxvYXQgZGF0YVtdID0geyAwLjlmLCAwLjFmICB9OwotICAgIGluaXQyRFRleHR1cmUoR0xfUkcz
MkYsIEdMX1JHLCBHTF9GTE9BVCwgZGF0YSk7Ci0gICAgcnVuVGVzdDJEKCk7Ci19Ci0KLVRFU1Rf
UChTd2l6emxlVGVzdCwgUjMyRl8yRCkKLXsKLSAgICBHTGZsb2F0IGRhdGFbXSA9IHsgMC41ZiB9
OwotICAgIGluaXQyRFRleHR1cmUoR0xfUjMyRiwgR0xfUkVELCBHTF9GTE9BVCwgZGF0YSk7Ci0g
ICAgcnVuVGVzdDJEKCk7Ci19Ci0KLVRFU1RfUChTd2l6emxlVGVzdCwgRDMyRl8yRCkKLXsKLSAg
ICBHTGZsb2F0IGRhdGFbXSA9IHsgMC41ZiB9OwotICAgIGluaXQyRFRleHR1cmUoR0xfREVQVEhf
Q09NUE9ORU5UMzJGLCBHTF9ERVBUSF9DT01QT05FTlQsIEdMX0ZMT0FULCBkYXRhKTsKLSAgICBy
dW5UZXN0MkQoKTsKLX0KLQotVEVTVF9QKFN3aXp6bGVUZXN0LCBEMTZfMkQpCi17Ci0gICAgR0x1
c2hvcnQgZGF0YVtdID0geyAweEZGIH07Ci0gICAgaW5pdDJEVGV4dHVyZShHTF9ERVBUSF9DT01Q
T05FTlQxNiwgR0xfREVQVEhfQ09NUE9ORU5ULCBHTF9VTlNJR05FRF9TSE9SVCwgZGF0YSk7Ci0g
ICAgcnVuVGVzdDJEKCk7Ci19Ci0KLVRFU1RfUChTd2l6emxlVGVzdCwgRDI0XzJEKQotewotICAg
IEdMdWludCBkYXRhW10gPSB7IDB4RkZGRiB9OwotICAgIGluaXQyRFRleHR1cmUoR0xfREVQVEhf
Q09NUE9ORU5UMjQsIEdMX0RFUFRIX0NPTVBPTkVOVCwgR0xfVU5TSUdORURfSU5ULCBkYXRhKTsK
LSAgICBydW5UZXN0MkQoKTsKLX0KLQotVEVTVF9QKFN3aXp6bGVUZXN0LCBMOF8yRCkKLXsKLSAg
ICBHTHVieXRlIGRhdGFbXSA9IHsweDc3fTsKLSAgICBpbml0MkRUZXh0dXJlKEdMX0xVTUlOQU5D
RSwgR0xfTFVNSU5BTkNFLCBHTF9VTlNJR05FRF9CWVRFLCBkYXRhKTsKLSAgICBydW5UZXN0MkQo
KTsKLX0KLQotVEVTVF9QKFN3aXp6bGVUZXN0LCBBOF8yRCkKLXsKLSAgICBHTHVieXRlIGRhdGFb
XSA9IHsweDU1fTsKLSAgICBpbml0MkRUZXh0dXJlKEdMX0FMUEhBLCBHTF9BTFBIQSwgR0xfVU5T
SUdORURfQllURSwgZGF0YSk7Ci0gICAgcnVuVGVzdDJEKCk7Ci19Ci0KLVRFU1RfUChTd2l6emxl
VGVzdCwgTEE4XzJEKQotewotICAgIEdMdWJ5dGUgZGF0YVtdID0gezB4NzcsIDB4NjZ9OwotICAg
IGluaXQyRFRleHR1cmUoR0xfTFVNSU5BTkNFX0FMUEhBLCBHTF9MVU1JTkFOQ0VfQUxQSEEsIEdM
X1VOU0lHTkVEX0JZVEUsIGRhdGEpOwotICAgIHJ1blRlc3QyRCgpOwotfQotCi1URVNUX1AoU3dp
enpsZVRlc3QsIEwzMkZfMkQpCi17Ci0gICAgR0xmbG9hdCBkYXRhW10gPSB7MC43Zn07Ci0gICAg
aW5pdDJEVGV4dHVyZShHTF9MVU1JTkFOQ0UsIEdMX0xVTUlOQU5DRSwgR0xfRkxPQVQsIGRhdGEp
OwotICAgIHJ1blRlc3QyRCgpOwotfQotCi1URVNUX1AoU3dpenpsZVRlc3QsIEEzMkZfMkQpCi17
Ci0gICAgR0xmbG9hdCBkYXRhW10gPSB7Ci0gICAgICAgIDAuNGYsCi0gICAgfTsKLSAgICBpbml0
MkRUZXh0dXJlKEdMX0FMUEhBLCBHTF9BTFBIQSwgR0xfRkxPQVQsIGRhdGEpOwotICAgIHJ1blRl
c3QyRCgpOwotfQotCi1URVNUX1AoU3dpenpsZVRlc3QsIExBMzJGXzJEKQotewotICAgIEdMZmxv
YXQgZGF0YVtdID0gewotICAgICAgICAwLjVmLCAwLjZmLAotICAgIH07Ci0gICAgaW5pdDJEVGV4
dHVyZShHTF9MVU1JTkFOQ0VfQUxQSEEsIEdMX0xVTUlOQU5DRV9BTFBIQSwgR0xfRkxPQVQsIGRh
dGEpOwotICAgIHJ1blRlc3QyRCgpOwotfQotCi0jaW5jbHVkZSAibWVkaWEvcGl4ZWwuaW5sIgot
Ci1URVNUX1AoU3dpenpsZVRlc3QsIENvbXByZXNzZWREWFRfMkQpCi17Ci0gICAgaWYgKCFleHRl
bnNpb25FbmFibGVkKCJHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxIikpCi0gICAgewot
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBkdWUgdG8gbWlzc2luZyBHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQxLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaW5pdDJEQ29tcHJlc3NlZFRleHR1cmUoR0xfQ09NUFJFU1NFRF9SR0JB
X1MzVENfRFhUMV9FWFQsIHBpeGVsXzBfd2lkdGgsIHBpeGVsXzBfaGVpZ2h0LCBwaXhlbF8wX3Np
emUsIHBpeGVsXzBfZGF0YSk7Ci0gICAgcnVuVGVzdDJEKCk7Ci19Ci0KLVRFU1RfUChTd2l6emxl
SW50ZWdlclRlc3QsIFJHQjhVSV8yRCkKLXsKLSAgICBHTHVieXRlIGRhdGFbXSA9IHs3NywgNjYs
IDU1fTsKLSAgICBpbml0MkRUZXh0dXJlKEdMX1JHQjhVSSwgR0xfUkdCX0lOVEVHRVIsIEdMX1VO
U0lHTkVEX0JZVEUsIGRhdGEpOwotICAgIHJ1blRlc3QyRCgpOwotfQotCi0vLyBUZXN0IHRoYXQg
dXBkYXRpbmcgdGhlIHRleHR1cmUgZGF0YSBzdGlsbCBnZW5lcmF0ZXMgdGhlIGNvcnJlY3Qgc3dp
enpsZXMKLVRFU1RfUChTd2l6emxlVGVzdCwgU3ViVXBkYXRlKQotewotICAgIEdMQ29sb3IgZGF0
YSgxLCA2NCwgMTI4LCAyMDApOwotICAgIGluaXQyRFRleHR1cmUoR0xfUkdCQTgsIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsICZkYXRhKTsKLQotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7
Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZSk7Ci0gICAgZ2xVbmlm
b3JtMWkobVRleHR1cmVVbmlmb3JtTG9jYXRpb24sIDApOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfU1dJWlpMRV9SLCBHTF9SRUQpOwotICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1NXSVpaTEVfRywgR0xfUkVEKTsK
LSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9TV0laWkxFX0Is
IEdMX1JFRCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVf
U1dJWlpMRV9BLCBHTF9SRUQpOwotCi0gICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsK
LSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBHTENvbG9y
IGV4cGVjdGVkRGF0YShkYXRhLlIsIGRhdGEuUiwgZGF0YS5SLCBkYXRhLlIpOwotICAgIEVYUEVD
VF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBleHBlY3RlZERhdGEpOwotCi0gICAgR0xDb2xvciB1cGRh
dGVEYXRhKDMyLCAyMzQsIDI4LCAyMzIpOwotICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCAwLCAwLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmdXBkYXRlRGF0
YSk7Ci0KLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIGRyYXdRdWFkKG1Q
cm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEdMQ29sb3IgZXhwZWN0ZWRVcGRhdGVE
YXRhKHVwZGF0ZURhdGEuUiwgdXBkYXRlRGF0YS5SLCB1cGRhdGVEYXRhLlIsIHVwZGF0ZURhdGEu
Uik7Ci0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIGV4cGVjdGVkVXBkYXRlRGF0YSk7
Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3
aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91
bGQgYmUgcnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKFN3aXp6bGVUZXN0LCBF
UzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMKDMsIDMpLCBFUzNfT1BFTkdMRVMo
KSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKFN3aXp6bGVJbnRlZ2VyVGVzdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19P
UEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgzLCAzKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwotCi19IC8vIG5hbWVzcGFjZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1N5bmNR
dWVyaWVzVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVz
dHMvU3luY1F1ZXJpZXNUZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM2
MzExMjU0ZTkuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9nbF90ZXN0cy9TeW5jUXVlcmllc1Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTA4
ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIFN5bmNRdWVyaWVzVGVzdC5jcHA6IFRlc3RzIG9mIHRo
ZSBHTF9DSFJPTUlVTV9zeW5jX3F1ZXJ5IGV4dGVuc2lvbgotCi0jaW5jbHVkZSAidGVzdF91dGls
cy9BTkdMRVRlc3QuaCIKLQotbmFtZXNwYWNlIGFuZ2xlCi17Ci0KLWNsYXNzIFN5bmNRdWVyaWVz
VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFN5bmNRdWVyaWVz
VGVzdCgpCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwotICAgICAgICBzZXRX
aW5kb3dIZWlnaHQoMTI4KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAg
c2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAg
ICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMo
MjQpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgaWYgKG1RdWVyeSAhPSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbERlbGV0ZVF1ZXJp
ZXNFWFQoMSwgJm1RdWVyeSk7Ci0gICAgICAgICAgICBtUXVlcnkgPSAwOwotICAgICAgICB9Ci0K
LSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQotICAgIEdMdWludCBtUXVl
cnkgPSAwOwotfTsKLQotLy8gVGVzdCBiYXNpYyB1c2FnZSBvZiBzeW5jIHF1ZXJpZXMKLVRFU1Rf
UChTeW5jUXVlcmllc1Rlc3QsIEJhc2ljKQotewotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgi
R0xfQ0hST01JVU1fc3luY19xdWVyeSIpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IHNraXBwZWQgYmVjYXVzZSBHTF9DSFJPTUlVTV9zeW5jX3F1ZXJ5IGlzIG5vdCBhdmFpbGFi
bGUuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBnbEdlblF1
ZXJpZXNFWFQoMSwgJm1RdWVyeSk7Ci0gICAgZ2xCZWdpblF1ZXJ5RVhUKEdMX0NPTU1BTkRTX0NP
TVBMRVRFRF9DSFJPTUlVTSwgbVF1ZXJ5KTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQot
ICAgIGdsQ2xlYXJDb2xvcigwLjAsIDAuMCwgMS4wLCAxLjApOwotICAgIGdsQ2xlYXIoR0xfQ09M
T1JfQlVGRkVSX0JJVCk7Ci0KLSAgICBnbEVuZFF1ZXJ5RVhUKEdMX0NPTU1BTkRTX0NPTVBMRVRF
RF9DSFJPTUlVTSk7Ci0KLSAgICBnbEZsdXNoKCk7Ci0gICAgR0x1aW50IHJlc3VsdCA9IDA7Ci0g
ICAgZ2xHZXRRdWVyeU9iamVjdHVpdkVYVChtUXVlcnksIEdMX1FVRVJZX1JFU1VMVF9FWFQsICZy
ZXN1bHQpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTHVpbnQ+KEdMX1RSVUUpLCByZXN1
bHQpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IHRoYXQgdGhlIHN5
bmMgcXVlcnkgZW51bXMgYXJlIG5vdCBhY2NlcHRlZCB1bmxlc3MgdGhlIGV4dGVuc2lvbiBpcyBh
dmFpbGFibGUKLVRFU1RfUChTeW5jUXVlcmllc1Rlc3QsIFZhbGlkYXRpb24pCi17Ci0gICAgLy8g
TmVlZCB0aGUgR0xfRVhUX29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIGV4dGVuc2lvbiBmb3IgdGhl
IGVudHJ5IHBvaW50cwotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX29jY2x1c2lv
bl9xdWVyeV9ib29sZWFuIikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBiZWNhdXNlIEdMX0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiBpcyBub3QgYXZhaWxh
YmxlLiIKLSAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIGJvb2wgZXh0ZW5zaW9uQXZhaWxhYmxlID0gZXh0ZW5zaW9uRW5hYmxlZCgi
R0xfQ0hST01JVU1fc3luY19xdWVyeSIpOwotCi0gICAgZ2xHZW5RdWVyaWVzRVhUKDEsICZtUXVl
cnkpOwotCi0gICAgZ2xCZWdpblF1ZXJ5RVhUKEdMX0NPTU1BTkRTX0NPTVBMRVRFRF9DSFJPTUlV
TSwgbVF1ZXJ5KTsKLSAgICBpZiAoZXh0ZW5zaW9uQXZhaWxhYmxlKQotICAgIHsKLSAgICAgICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIEVY
UEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotICAgIH0KLQotICAgIGdsRGVsZXRlUXVl
cmllc0VYVCgxLCAmbVF1ZXJ5KTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0v
LyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVu
ZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UKLS8vIHRlc3RzIHNob3VsZCBi
ZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoU3luY1F1ZXJpZXNUZXN0LAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX0QzRDExKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
RVMzX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwotCi19ICAvLyBuYW1lc3BhY2Ug
YW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90
ZXN0cy9UZXh0dXJlVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvVGV4dHVyZVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1
MGFlZDA4YTc5ZC4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL2dsX3Rlc3RzL1RleHR1cmVUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3Mzcg
KzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgImNvbW1vbi9tYXRodXRpbC5oIgotI2luY2x1
ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0LmgiCi0jaW5jbHVkZSAidGVzdF91dGlscy9nbF9yYWlp
LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17Ci0KLS8vIFRha2Ug
YSBwaXhlbCwgYW5kIHJlc2V0IHRoZSBjb21wb25lbnRzIG5vdCBjb3ZlcmVkIGJ5IHRoZSBmb3Jt
YXQgdG8gZGVmYXVsdAotLy8gdmFsdWVzLiBJbiBwYXJ0aWN1bGFyLCB0aGUgZGVmYXVsdCB2YWx1
ZSBmb3IgdGhlIGFscGhhIGNvbXBvbmVudCBpcyAyNTUKLS8vICgxLjAgYXMgdW5zaWduZWQgbm9y
bWFsaXplZCBmaXhlZCBwb2ludCB2YWx1ZSkuCi1HTENvbG9yIFNsaWNlRm9ybWF0Q29sb3IoR0xl
bnVtIGZvcm1hdCwgR0xDb2xvciBmdWxsKQotewotICAgIHN3aXRjaCAoZm9ybWF0KQotICAgIHsK
LSAgICAgICAgY2FzZSBHTF9SRUQ6Ci0gICAgICAgICAgICByZXR1cm4gR0xDb2xvcihmdWxsLlIs
IDAsIDAsIDI1NXUpOwotICAgICAgICBjYXNlIEdMX1JHOgotICAgICAgICAgICAgcmV0dXJuIEdM
Q29sb3IoZnVsbC5SLCBmdWxsLkcsIDAsIDI1NXUpOwotICAgICAgICBjYXNlIEdMX1JHQjoKLSAg
ICAgICAgICAgIHJldHVybiBHTENvbG9yKGZ1bGwuUiwgZnVsbC5HLCBmdWxsLkIsIDI1NXUpOwot
ICAgICAgICBjYXNlIEdMX1JHQkE6Ci0gICAgICAgICAgICByZXR1cm4gZnVsbDsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7Ci0gICAgICAgICAgICByZXR1cm4g
R0xDb2xvcjo6d2hpdGU7Ci0gICAgfQotfQotCi1jbGFzcyBUZXhDb29yZERyYXdUZXN0IDogcHVi
bGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgVGV4Q29vcmREcmF3VGVzdCgpIDog
QU5HTEVUZXN0KCksIG1Qcm9ncmFtKDApLCBtRnJhbWVidWZmZXIoMCksIG1GcmFtZWJ1ZmZlckNv
bG9yVGV4dHVyZSgwKQotICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAg
ICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0g
ICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMo
OCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFs
IHN0ZDo6c3RyaW5nIGdldFZlcnRleFNoYWRlclNvdXJjZSgpCi0gICAgewotICAgICAgICByZXR1
cm4gc3RkOjpzdHJpbmcoU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBwcmVj
aXNpb24gaGlnaHAgZmxvYXQ7Ci0gICAgICAgICAgICBhdHRyaWJ1dGUgdmVjNCBwb3NpdGlvbjsK
LSAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsKLQotICAgICAgICAgICAgdm9pZCBt
YWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHZlYzQo
cG9zaXRpb24ueHksIDAuMCwgMS4wKTsKLSAgICAgICAgICAgICAgICB0ZXhjb29yZCA9IChwb3Np
dGlvbi54eSAqIDAuNSkgKyAwLjU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICkKLSAgICAgICAg
KTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIGdldEZyYWdtZW50U2hhZGVyU291
cmNlKCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHNldFVwUHJvZ3JhbSgpCi0gICAgewotICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgICA9IGdldFZlcnRleFNo
YWRlclNvdXJjZSgpOwotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmcmFnbWVudFNoYWRlclNv
dXJjZSA9IGdldEZyYWdtZW50U2hhZGVyU291cmNlKCk7Ci0KLSAgICAgICAgbVByb2dyYW0gPSBD
b21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsK
LSAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIHNldFVwRnJhbWVidWZmZXIoKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKLSAgICAgICAgZ2xEZWxldGVGcmFtZWJ1
ZmZlcnMoMSwgJm1GcmFtZWJ1ZmZlcik7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1G
cmFtZWJ1ZmZlckNvbG9yVGV4dHVyZSk7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3Jh
bSk7Ci0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNl
dFVwRnJhbWVidWZmZXIoKQotICAgIHsKLSAgICAgICAgLy8gV2UgdXNlIGFuIEZCTyB0byB3b3Jr
IGFyb3VuZCBhbiBpc3N1ZSB3aGVyZSB0aGUgZGVmYXVsdCBmcmFtZWJ1ZmZlciBhcHBsaWVzIFNS
R0IKLSAgICAgICAgLy8gY29udmVyc2lvbiAocGFydGljdWxhcmx5IGtub3duIHRvIGhhcHBlbiBp
bmNvcnJlY3RseSBvbiBJbnRlbCBHTCBkcml2ZXJzKS4gSXQncyBub3QKLSAgICAgICAgLy8gY2xl
YXIgd2hldGhlciB0aGlzIGlzc3VlIGNhbiBldmVuIGJlIGZpeGVkIG9uIGFsbCBiYWNrZW5kcy4g
Rm9yIGV4YW1wbGUgR0xFUyAzLjAuNCBzcGVjCi0gICAgICAgIC8vIHNlY3Rpb24gNC40IHNheXMg
dGhhdCB0aGUgZm9ybWF0IG9mIHRoZSBkZWZhdWx0IGZyYW1lYnVmZmVyIGlzIGVudGlyZWx5IHVw
IHRvIHRoZSB3aW5kb3cKLSAgICAgICAgLy8gc3lzdGVtLCBzbyBpdCBtaWdodCBiZSBTUkdCLCBh
bmQgR0xFUyAzLjAgZG9lc24ndCBoYXZlIGEgIkZSQU1FQlVGRkVSX1NSR0IiIHRvIHR1cm4gb2Zm
Ci0gICAgICAgIC8vIFNSR0IgY29udmVyc2lvbiBsaWtlIGRlc2t0b3AgR0wgZG9lcy4KLSAgICAg
ICAgLy8gVE9ETyhvZXR1YWhvKTogR2V0IHJpZCBvZiB0aGlzIGlmIHRoZSB1bmRlcmx5aW5nIGlz
c3VlIGlzIGZpeGVkLgotICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbUZyYW1lYnVmZmVy
KTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1GcmFtZWJ1ZmZl
cik7Ci0KLSAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbUZyYW1lYnVmZmVyQ29sb3JUZXh0dXJl
KTsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtRnJhbWVidWZmZXJDb2xv
clRleHR1cmUpOwotICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdC
QSwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIDAsIEdMX1JHQkEsCi0gICAg
ICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLSAgICAgICAgZ2xG
cmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAs
IEdMX1RFWFRVUkVfMkQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUZyYW1lYnVm
ZmVyQ29sb3JUZXh0dXJlLCAwKTsKLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAg
ICAgIEFTU0VSVF9HTEVOVU1fRVEoR0xfRlJBTUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZFUikpOwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdM
X1RFWFRVUkVfMkQsIDApOwotICAgIH0KLQotICAgIC8vIFJldHVybnMgdGhlIGNyZWF0ZWQgdGV4
dHVyZSBJRC4KLSAgICBHTHVpbnQgY3JlYXRlMkRUZXh0dXJlKCkKLSAgICB7Ci0gICAgICAgIEdM
dWludCB0ZXh0dXJlMkQ7Ci0gICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRleHR1cmUyRCk7Ci0g
ICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZTJEKTsKLSAgICAgICAg
Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDEsIDEsIDAsIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX0JZVEUsIE5VTEwpOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
LSAgICAgICAgcmV0dXJuIHRleHR1cmUyRDsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVByb2dyYW07
Ci0gICAgR0x1aW50IG1GcmFtZWJ1ZmZlcjsKLQotICBwcml2YXRlOgotICAgIEdMdWludCBtRnJh
bWVidWZmZXJDb2xvclRleHR1cmU7Ci19OwotCi1jbGFzcyBUZXh0dXJlMkRUZXN0IDogcHVibGlj
IFRleENvb3JkRHJhd1Rlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFRleHR1cmUyRFRlc3QoKSA6
IFRleENvb3JkRHJhd1Rlc3QoKSwgbVRleHR1cmUyRCgwKSwgbVRleHR1cmUyRFVuaWZvcm1Mb2Nh
dGlvbigtMSkge30KLQotICAgIHN0ZDo6c3RyaW5nIGdldEZyYWdtZW50U2hhZGVyU291cmNlKCkg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnN0cmluZyhTSEFERVJfU09VUkNF
Ci0gICAgICAgICgKLSAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSAgICAgICAg
ICAgIHVuaWZvcm0gc2FtcGxlcjJEIHRleDsKLSAgICAgICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhj
b29yZDsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB0ZXhjb29yZCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICkKLSAgICAgICAgKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIGNvbnN0
IGNoYXIgKmdldFRleHR1cmVVbmlmb3JtTmFtZSgpIHsgcmV0dXJuICJ0ZXgiOyB9Ci0KLSAgICB2
b2lkIHNldFVwUHJvZ3JhbSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBUZXhDb29yZERyYXdU
ZXN0OjpzZXRVcFByb2dyYW0oKTsKLSAgICAgICAgbVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiA9
IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCBnZXRUZXh0dXJlVW5pZm9ybU5hbWUoKSk7
Ci0gICAgICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbik7Ci0gICAg
fQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBUZXhDb29yZERy
YXdUZXN0OjpTZXRVcCgpOwotICAgICAgICBtVGV4dHVyZTJEID0gY3JlYXRlMkRUZXh0dXJlKCk7
Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFy
RG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4
dHVyZTJEKTsKLSAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0K
LSAgICAvLyBUZXN0cyBDb3B5VGV4U3ViSW1hZ2Ugd2l0aCBmbG9hdGluZyBwb2ludCB0ZXh0dXJl
cyBvZiB2YXJpb3VzIGZvcm1hdHMuCi0gICAgdm9pZCB0ZXN0RmxvYXRDb3B5U3ViSW1hZ2UoaW50
IHNvdXJjZUltYWdlQ2hhbm5lbHMsIGludCBkZXN0SW1hZ2VDaGFubmVscykKLSAgICB7Ci0gICAg
ICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgaXMgYnJva2VuIG9uIElu
dGVsIEQzRDExCi0gICAgICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigp
ID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBEM0QxMS4iIDw8IHN0
ZDo6ZW5kbDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHNldFVw
UHJvZ3JhbSgpOwotCi0gICAgICAgIGlmIChnZXRDbGllbnRNYWpvclZlcnNpb24oKSA8IDMpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfT0VTX3RleHR1
cmVfZmxvYXQiKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3Qgc2tpcHBlZCBkdWUgdG8gbWlzc2luZyBHTF9PRVNfdGV4dHVyZV9mbG9hdC4iIDw8IHN0
ZDo6ZW5kbDsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGlmICgoc291cmNlSW1hZ2VDaGFubmVscyA8IDMgfHwgZGVzdEltYWdlQ2hhbm5lbHMg
PCAzKSAmJiAhZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfcmciKSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBkdWUgdG8g
bWlzc2luZyBHTF9FWFRfdGV4dHVyZV9yZy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBHTGZsb2F0IHNv
dXJjZUltYWdlRGF0YVs0XVsxNl0gPQotICAgICAgICB7Ci0gICAgICAgICAgICB7IC8vIFIKLSAg
ICAgICAgICAgICAgICAxLjBmLAotICAgICAgICAgICAgICAgIDAuMGYsCi0gICAgICAgICAgICAg
ICAgMC4wZiwKLSAgICAgICAgICAgICAgICAxLjBmCi0gICAgICAgICAgICB9LAotICAgICAgICAg
ICAgeyAvLyBSRwotICAgICAgICAgICAgICAgIDEuMGYsIDAuMGYsCi0gICAgICAgICAgICAgICAg
MC4wZiwgMS4wZiwKLSAgICAgICAgICAgICAgICAwLjBmLCAwLjBmLAotICAgICAgICAgICAgICAg
IDEuMGYsIDEuMGYKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB7IC8vIFJHQgotICAgICAg
ICAgICAgICAgIDEuMGYsIDAuMGYsIDAuMGYsCi0gICAgICAgICAgICAgICAgMC4wZiwgMS4wZiwg
MC4wZiwKLSAgICAgICAgICAgICAgICAwLjBmLCAwLjBmLCAxLjBmLAotICAgICAgICAgICAgICAg
IDEuMGYsIDEuMGYsIDAuMGYKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB7IC8vIFJHQkEK
LSAgICAgICAgICAgICAgICAxLjBmLCAwLjBmLCAwLjBmLCAxLjBmLAotICAgICAgICAgICAgICAg
IDAuMGYsIDEuMGYsIDAuMGYsIDEuMGYsCi0gICAgICAgICAgICAgICAgMC4wZiwgMC4wZiwgMS4w
ZiwgMS4wZiwKLSAgICAgICAgICAgICAgICAxLjBmLCAxLjBmLCAwLjBmLCAxLjBmCi0gICAgICAg
ICAgICB9LAotICAgICAgICB9OwotCi0gICAgICAgIEdMZW51bSBpbWFnZUZvcm1hdHNbXSA9Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgIEdMX1IzMkYsCi0gICAgICAgICAgICBHTF9SRzMyRiwKLSAg
ICAgICAgICAgIEdMX1JHQjMyRiwKLSAgICAgICAgICAgIEdMX1JHQkEzMkYsCi0gICAgICAgIH07
Ci0KLSAgICAgICAgR0xlbnVtIHNvdXJjZVVuc2l6ZWRGb3JtYXRzW10gPQotICAgICAgICB7Ci0g
ICAgICAgICAgICBHTF9SRUQsCi0gICAgICAgICAgICBHTF9SRywKLSAgICAgICAgICAgIEdMX1JH
QiwKLSAgICAgICAgICAgIEdMX1JHQkEsCi0gICAgICAgIH07Ci0KLSAgICAgICAgR0x1aW50IHRl
eHR1cmVzWzJdOwotCi0gICAgICAgIGdsR2VuVGV4dHVyZXMoMiwgdGV4dHVyZXMpOwotCi0gICAg
ICAgIEdMZmxvYXQgKmltYWdlRGF0YSA9IHNvdXJjZUltYWdlRGF0YVtzb3VyY2VJbWFnZUNoYW5u
ZWxzIC0gMV07Ci0gICAgICAgIEdMZW51bSBzb3VyY2VJbWFnZUZvcm1hdCA9IGltYWdlRm9ybWF0
c1tzb3VyY2VJbWFnZUNoYW5uZWxzIC0gMV07Ci0gICAgICAgIEdMZW51bSBzb3VyY2VVbnNpemVk
Rm9ybWF0ID0gc291cmNlVW5zaXplZEZvcm1hdHNbc291cmNlSW1hZ2VDaGFubmVscyAtIDFdOwot
ICAgICAgICBHTGVudW0gZGVzdEltYWdlRm9ybWF0ID0gaW1hZ2VGb3JtYXRzW2Rlc3RJbWFnZUNo
YW5uZWxzIC0gMV07Ci0KLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0
dXJlc1swXSk7Ci0gICAgICAgIGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIHNv
dXJjZUltYWdlRm9ybWF0LCAyLCAyKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJF
U1QpOwotICAgICAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMiwg
Miwgc291cmNlVW5zaXplZEZvcm1hdCwgR0xfRkxPQVQsIGltYWdlRGF0YSk7Ci0KLSAgICAgICAg
aWYgKHNvdXJjZUltYWdlQ2hhbm5lbHMgPCAzICYmICFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRf
dGV4dHVyZV9yZyIpKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIG5vdCBzdXBw
b3J0ZWQKLSAgICAgICAgICAgIEFTU0VSVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7
Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKLSAgICAgICAgfQotCi0gICAgICAgIEdMdWludCBmYm87Ci0gICAgICAg
IGdsR2VuRnJhbWVidWZmZXJzKDEsICZmYm8pOwotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgZmJvKTsKLSAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9G
UkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIHRleHR1cmVz
WzBdLCAwKTsKLQotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmVz
WzFdKTsKLSAgICAgICAgZ2xUZXhTdG9yYWdlMkRFWFQoR0xfVEVYVFVSRV8yRCwgMSwgZGVzdElt
YWdlRm9ybWF0LCAyLCAyKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwot
Ci0gICAgICAgIGdsQ29weVRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMCwg
MCwgMiwgMik7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIGdsQmlu
ZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKLSAgICAgICAgZHJhd1F1YWQobVByb2dy
YW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgICAgIGludCB0ZXN0SW1hZ2VDaGFubmVscyA9
IHN0ZDo6bWluKHNvdXJjZUltYWdlQ2hhbm5lbHMsIGRlc3RJbWFnZUNoYW5uZWxzKTsKLQotICAg
ICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6cmVkKTsKLSAgICAgICAg
aWYgKHRlc3RJbWFnZUNoYW5uZWxzID4gMSkKLSAgICAgICAgewotICAgICAgICAgICAgRVhQRUNU
X1BJWEVMX0VRKGdldFdpbmRvd0hlaWdodCgpIC0gMSwgMCwgMCwgMjU1LCAwLCAyNTUpOwotICAg
ICAgICAgICAgRVhQRUNUX1BJWEVMX0VRKGdldFdpbmRvd0hlaWdodCgpIC0gMSwgZ2V0V2luZG93
V2lkdGgoKSAtIDEsIDI1NSwgMjU1LCAwLCAyNTUpOwotICAgICAgICAgICAgaWYgKHRlc3RJbWFn
ZUNoYW5uZWxzID4gMikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfUElY
RUxfRVEoMCwgZ2V0V2luZG93V2lkdGgoKSAtIDEsIDAsIDAsIDI1NSwgMjU1KTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZmYm8p
OwotICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDIsIHRleHR1cmVzKTsKLQotICAgICAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVRleHR1cmUyRDsKLSAgICBH
TGludCBtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uOwotfTsKLQotY2xhc3MgVGV4dHVyZTJEVGVz
dEVTMyA6IHB1YmxpYyBUZXh0dXJlMkRUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBUZXh0dXJl
MkRUZXN0RVMzKCkgOiBUZXh0dXJlMkRUZXN0KCkge30KLQotICAgIHN0ZDo6c3RyaW5nIGdldFZl
cnRleFNoYWRlclNvdXJjZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpz
dHJpbmcoCi0gICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICAgICAib3V0
IHZlYzIgdGV4Y29vcmQ7XG4iCi0gICAgICAgICAgICAiaW4gdmVjNCBwb3NpdGlvbjtcbiIKLSAg
ICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAg
ICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLnh5LCAwLjAsIDEuMCk7XG4iCi0gICAg
ICAgICAgICAiICAgIHRleGNvb3JkID0gKHBvc2l0aW9uLnh5ICogMC41KSArIDAuNTtcbiIKLSAg
ICAgICAgICAgICJ9XG4iKTsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNo
YWRlclNvdXJjZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmco
Ci0gICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICAgICAicHJlY2lzaW9u
IGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAgICAgInVuaWZvcm0gaGlnaHAgc2FtcGxlcjJEIHRl
eDtcbiIKLSAgICAgICAgICAgICJpbiB2ZWMyIHRleGNvb3JkO1xuIgotICAgICAgICAgICAgIm91
dCB2ZWM0IGZyYWdDb2xvcjtcbiIKLSAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAg
ICAgICAgIntcbiIKLSAgICAgICAgICAgICIgICAgZnJhZ0NvbG9yID0gdGV4dHVyZSh0ZXgsIHRl
eGNvb3JkKTtcbiIKLSAgICAgICAgICAgICJ9XG4iKTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVw
KCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFRleHR1cmUyRFRlc3Q6OlNldFVwKCk7Ci0gICAg
ICAgIHNldFVwUHJvZ3JhbSgpOwotICAgIH0KLX07Ci0KLWNsYXNzIFRleHR1cmUyREludGVnZXJB
bHBoYTFUZXN0RVMzIDogcHVibGljIFRleHR1cmUyRFRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAg
IFRleHR1cmUyREludGVnZXJBbHBoYTFUZXN0RVMzKCkgOiBUZXh0dXJlMkRUZXN0KCkge30KLQot
ICAgIHN0ZDo6c3RyaW5nIGdldFZlcnRleFNoYWRlclNvdXJjZSgpIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoCi0gICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCi0gICAgICAgICAgICAib3V0IHZlYzIgdGV4Y29vcmQ7XG4iCi0gICAgICAgICAgICAiaW4g
dmVjNCBwb3NpdGlvbjtcbiIKLSAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAg
ICAgIntcbiIKLSAgICAgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLnh5
LCAwLjAsIDEuMCk7XG4iCi0gICAgICAgICAgICAiICAgIHRleGNvb3JkID0gKHBvc2l0aW9uLnh5
ICogMC41KSArIDAuNTtcbiIKLSAgICAgICAgICAgICJ9XG4iKTsKLSAgICB9Ci0KLSAgICBzdGQ6
OnN0cmluZyBnZXRGcmFnbWVudFNoYWRlclNvdXJjZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAg
ICByZXR1cm4gc3RkOjpzdHJpbmcoCi0gICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0g
ICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAgICAgInVuaWZv
cm0gaGlnaHAgaXNhbXBsZXIyRCB0ZXg7XG4iCi0gICAgICAgICAgICAiaW4gdmVjMiB0ZXhjb29y
ZDtcbiIKLSAgICAgICAgICAgICJvdXQgdmVjNCBmcmFnQ29sb3I7XG4iCi0gICAgICAgICAgICAi
dm9pZCBtYWluKClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIHZlYzQg
Z3JlZW4gPSB2ZWM0KDAsIDEsIDAsIDEpO1xuIgotICAgICAgICAgICAgIiAgICB2ZWM0IGJsYWNr
ID0gdmVjNCgwLCAwLCAwLCAwKTtcbiIKLSAgICAgICAgICAgICIgICAgZnJhZ0NvbG9yID0gKHRl
eHR1cmUodGV4LCB0ZXhjb29yZCkuYSA9PSAxKSA/IGdyZWVuIDogYmxhY2s7XG4iCi0gICAgICAg
ICAgICAifVxuIik7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBUZXh0dXJlMkRUZXN0OjpTZXRVcCgpOwotICAgICAgICBzZXRVcFByb2dyYW0oKTsK
LSAgICB9Ci19OwotCi1jbGFzcyBUZXh0dXJlMkRVbnNpZ25lZEludGVnZXJBbHBoYTFUZXN0RVMz
IDogcHVibGljIFRleHR1cmUyRFRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFRleHR1cmUyRFVu
c2lnbmVkSW50ZWdlckFscGhhMVRlc3RFUzMoKSA6IFRleHR1cmUyRFRlc3QoKSB7fQotCi0gICAg
c3RkOjpzdHJpbmcgZ2V0VmVydGV4U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBzdGQ6OnN0cmluZygKLSAgICAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIK
LSAgICAgICAgICAgICJvdXQgdmVjMiB0ZXhjb29yZDtcbiIKLSAgICAgICAgICAgICJpbiB2ZWM0
IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgICAi
e1xuIgotICAgICAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24ueHksIDAu
MCwgMS4wKTtcbiIKLSAgICAgICAgICAgICIgICAgdGV4Y29vcmQgPSAocG9zaXRpb24ueHkgKiAw
LjUpICsgMC41O1xuIgotICAgICAgICAgICAgIn1cbiIpOwotICAgIH0KLQotICAgIHN0ZDo6c3Ry
aW5nIGdldEZyYWdtZW50U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBzdGQ6OnN0cmluZygKLSAgICAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAg
ICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCi0gICAgICAgICAgICAidW5pZm9ybSBo
aWdocCB1c2FtcGxlcjJEIHRleDtcbiIKLSAgICAgICAgICAgICJpbiB2ZWMyIHRleGNvb3JkO1xu
IgotICAgICAgICAgICAgIm91dCB2ZWM0IGZyYWdDb2xvcjtcbiIKLSAgICAgICAgICAgICJ2b2lk
IG1haW4oKVxuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIgICAgdmVjNCBncmVl
biA9IHZlYzQoMCwgMSwgMCwgMSk7XG4iCi0gICAgICAgICAgICAiICAgIHZlYzQgYmxhY2sgPSB2
ZWM0KDAsIDAsIDAsIDApO1xuIgotICAgICAgICAgICAgIiAgICBmcmFnQ29sb3IgPSAodGV4dHVy
ZSh0ZXgsIHRleGNvb3JkKS5hID09IDF1KSA/IGdyZWVuIDogYmxhY2s7XG4iCi0gICAgICAgICAg
ICAifVxuIik7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICBUZXh0dXJlMkRUZXN0OjpTZXRVcCgpOwotICAgICAgICBzZXRVcFByb2dyYW0oKTsKLSAg
ICB9Ci19OwotCi1jbGFzcyBUZXh0dXJlMkRUZXN0V2l0aERyYXdTY2FsZSA6IHB1YmxpYyBUZXh0
dXJlMkRUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBUZXh0dXJlMkRUZXN0V2l0aERyYXdTY2Fs
ZSgpIDogVGV4dHVyZTJEVGVzdCgpLCBtRHJhd1NjYWxlVW5pZm9ybUxvY2F0aW9uKC0xKSB7fQot
Ci0gICAgc3RkOjpzdHJpbmcgZ2V0VmVydGV4U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIHJldHVybiBzdGQ6OnN0cmluZyhTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAg
ICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSAgICAgICAgICAgIGF0dHJpYnV0ZSB2
ZWM0IHBvc2l0aW9uOwotICAgICAgICAgICAgdmFyeWluZyB2ZWMyIHRleGNvb3JkOwotCi0gICAg
ICAgICAgICB1bmlmb3JtIHZlYzIgZHJhd1NjYWxlOwotCi0gICAgICAgICAgICB2b2lkIG1haW4o
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3Np
dGlvbi54eSAqIGRyYXdTY2FsZSwgMC4wLCAxLjApOwotICAgICAgICAgICAgICAgIHRleGNvb3Jk
ID0gKHBvc2l0aW9uLnh5ICogMC41KSArIDAuNTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKQot
ICAgICAgICApOwotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgVGV4dHVyZTJEVGVzdDo6U2V0VXAoKTsKLQotICAgICAgICBzZXRVcFByb2dyYW0oKTsK
LQotICAgICAgICBtRHJhd1NjYWxlVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRp
b24obVByb2dyYW0sICJkcmF3U2NhbGUiKTsKLSAgICAgICAgQVNTRVJUX05FKC0xLCBtRHJhd1Nj
YWxlVW5pZm9ybUxvY2F0aW9uKTsKLQotICAgICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwot
ICAgICAgICBnbFVuaWZvcm0yZihtRHJhd1NjYWxlVW5pZm9ybUxvY2F0aW9uLCAxLjBmLCAxLjBm
KTsKLSAgICAgICAgZ2xVc2VQcm9ncmFtKDApOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKLSAgICB9Ci0KLSAgICBHTGludCBtRHJhd1NjYWxlVW5pZm9ybUxvY2F0aW9uOwotfTsKLQot
Y2xhc3MgU2FtcGxlcjJEQXNGdW5jdGlvblBhcmFtZXRlclRlc3QgOiBwdWJsaWMgVGV4dHVyZTJE
VGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgU2FtcGxlcjJEQXNGdW5jdGlvblBhcmFtZXRlclRl
c3QoKSA6IFRleHR1cmUyRFRlc3QoKSB7fQotCi0gICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRT
aGFkZXJTb3VyY2UoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5n
KFNIQURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgcHJlY2lzaW9uIGhpZ2hwIGZs
b2F0OwotICAgICAgICAgICAgdW5pZm9ybSBzYW1wbGVyMkQgdGV4OwotICAgICAgICAgICAgdmFy
eWluZyB2ZWMyIHRleGNvb3JkOwotCi0gICAgICAgICAgICB2ZWM0IGNvbXB1dGVGcmFnQ29sb3Io
c2FtcGxlcjJEIGFUZXgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRl
eHR1cmUyRChhVGV4LCB0ZXhjb29yZCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZv
aWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0g
Y29tcHV0ZUZyYWdDb2xvcih0ZXgpOwotICAgICAgICAgICAgfQotICAgICAgICApCi0gICAgICAg
ICk7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBU
ZXh0dXJlMkRUZXN0OjpTZXRVcCgpOwotICAgICAgICBzZXRVcFByb2dyYW0oKTsKLSAgICB9Ci19
OwotCi1jbGFzcyBUZXh0dXJlQ3ViZVRlc3QgOiBwdWJsaWMgVGV4Q29vcmREcmF3VGVzdAotewot
ICBwcm90ZWN0ZWQ6Ci0gICAgVGV4dHVyZUN1YmVUZXN0KCkKLSAgICAgICAgOiBUZXhDb29yZERy
YXdUZXN0KCksCi0gICAgICAgICAgbVRleHR1cmUyRCgwKSwKLSAgICAgICAgICBtVGV4dHVyZUN1
YmUoMCksCi0gICAgICAgICAgbVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbigtMSksCi0gICAgICAg
ICAgbVRleHR1cmVDdWJlVW5pZm9ybUxvY2F0aW9uKC0xKQotICAgIHsKLSAgICB9Ci0KLSAgICBz
dGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRlclNvdXJjZSgpIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICByZXR1cm4gc3RkOjpzdHJpbmcoU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAg
ICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0gICAgICAgICAgICB1bmlmb3JtIHNhbXBsZXIy
RCB0ZXgyRDsKLSAgICAgICAgICAgIHVuaWZvcm0gc2FtcGxlckN1YmUgdGV4Q3ViZTsKLSAgICAg
ICAgICAgIHZhcnlpbmcgdmVjMiB0ZXhjb29yZDsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQo
dGV4MkQsIHRleGNvb3JkKTsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgKz0gdGV4dHVy
ZUN1YmUodGV4Q3ViZSwgdmVjMyh0ZXhjb29yZCwgMCkpOwotICAgICAgICAgICAgfQotICAgICAg
ICApCi0gICAgICAgICk7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAg
ewotICAgICAgICBUZXhDb29yZERyYXdUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGdsR2VuVGV4
dHVyZXMoMSwgJm1UZXh0dXJlQ3ViZSk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV9DVUJFX01BUCwgbVRleHR1cmVDdWJlKTsKLSAgICAgICAgZ2xUZXhTdG9yYWdlMkRFWFQoR0xf
VEVYVFVSRV9DVUJFX01BUCwgMSwgR0xfUkdCQTgsIDEsIDEpOwotICAgICAgICBFWFBFQ1RfR0xf
Tk9fRVJST1IoKTsKLQotICAgICAgICBtVGV4dHVyZTJEID0gY3JlYXRlMkRUZXh0dXJlKCk7Ci0K
LSAgICAgICAgc2V0VXBQcm9ncmFtKCk7Ci0KLSAgICAgICAgbVRleHR1cmUyRFVuaWZvcm1Mb2Nh
dGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4MkQiKTsKLSAgICAgICAg
QVNTRVJUX05FKC0xLCBtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uKTsKLSAgICAgICAgbVRleHR1
cmVDdWJlVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ0
ZXhDdWJlIik7Ci0gICAgICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1cmVDdWJlVW5pZm9ybUxvY2F0
aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlQ3ViZSk7Ci0gICAgICAgIFRleENvb3Jk
RHJhd1Rlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgR0x1aW50IG1UZXh0dXJlMkQ7Ci0g
ICAgR0x1aW50IG1UZXh0dXJlQ3ViZTsKLSAgICBHTGludCBtVGV4dHVyZTJEVW5pZm9ybUxvY2F0
aW9uOwotICAgIEdMaW50IG1UZXh0dXJlQ3ViZVVuaWZvcm1Mb2NhdGlvbjsKLX07Ci0KLWNsYXNz
IFNhbXBsZXJBcnJheVRlc3QgOiBwdWJsaWMgVGV4Q29vcmREcmF3VGVzdAotewotICBwcm90ZWN0
ZWQ6Ci0gICAgU2FtcGxlckFycmF5VGVzdCgpCi0gICAgICAgIDogVGV4Q29vcmREcmF3VGVzdCgp
LAotICAgICAgICAgIG1UZXh0dXJlMkRBKDApLAotICAgICAgICAgIG1UZXh0dXJlMkRCKDApLAot
ICAgICAgICAgIG1UZXh0dXJlMFVuaWZvcm1Mb2NhdGlvbigtMSksCi0gICAgICAgICAgbVRleHR1
cmUxVW5pZm9ybUxvY2F0aW9uKC0xKQotICAgIHsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0cmluZyBn
ZXRGcmFnbWVudFNoYWRlclNvdXJjZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4g
c3RkOjpzdHJpbmcoU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNp
b24gbWVkaXVtcCBmbG9hdDsKLSAgICAgICAgICAgIHVuaWZvcm0gaGlnaHAgc2FtcGxlcjJEIHRl
eDJEQXJyYXlbMl07Ci0gICAgICAgICAgICB2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7Ci0gICAgICAg
ICAgICB2b2lkIG1haW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX0ZyYWdD
b2xvciA9IHRleHR1cmUyRCh0ZXgyREFycmF5WzBdLCB0ZXhjb29yZCk7Ci0gICAgICAgICAgICAg
ICAgZ2xfRnJhZ0NvbG9yICs9IHRleHR1cmUyRCh0ZXgyREFycmF5WzFdLCB0ZXhjb29yZCk7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICkKLSAgICAgICAgKTsKLSAgICB9Ci0KLSAgICB2b2lkIFNl
dFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFRleENvb3JkRHJhd1Rlc3Q6OlNldFVwKCk7
Ci0KLSAgICAgICAgc2V0VXBQcm9ncmFtKCk7Ci0KLSAgICAgICAgbVRleHR1cmUwVW5pZm9ybUxv
Y2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ0ZXgyREFycmF5WzBdIik7
Ci0gICAgICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1cmUwVW5pZm9ybUxvY2F0aW9uKTsKLSAgICAg
ICAgbVRleHR1cmUxVW5pZm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dy
YW0sICJ0ZXgyREFycmF5WzFdIik7Ci0gICAgICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1cmUxVW5p
Zm9ybUxvY2F0aW9uKTsKLQotICAgICAgICBtVGV4dHVyZTJEQSA9IGNyZWF0ZTJEVGV4dHVyZSgp
OwotICAgICAgICBtVGV4dHVyZTJEQiA9IGNyZWF0ZTJEVGV4dHVyZSgpOwotICAgICAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlMkRBKTsKLSAgICAg
ICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUyREIpOwotICAgICAgICBUZXhDb29yZERy
YXdUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQotICAgIHZvaWQgdGVzdFNhbXBsZXJBcnJheURy
YXcoKQotICAgIHsKLSAgICAgICAgR0x1Ynl0ZSB0ZXhEYXRhWzRdOwotICAgICAgICB0ZXhEYXRh
WzBdID0gMDsKLSAgICAgICAgdGV4RGF0YVsxXSA9IDYwOwotICAgICAgICB0ZXhEYXRhWzJdID0g
MDsKLSAgICAgICAgdGV4RGF0YVszXSA9IDI1NTsKLQotICAgICAgICBnbEFjdGl2ZVRleHR1cmUo
R0xfVEVYVFVSRTApOwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0
dXJlMkRBKTsKLSAgICAgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAs
IDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHRleERhdGEpOwotCi0gICAgICAgIHRl
eERhdGFbMV0gPSAxMjA7Ci0gICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMSk7Ci0g
ICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyREIpOwotICAgICAg
ICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMSwgMSwgR0xfUkdCQSwg
R0xfVU5TSUdORURfQllURSwgdGV4RGF0YSk7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9O
T19FUlJPUik7Ci0KLSAgICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAgICAgZ2xV
bmlmb3JtMWkobVRleHR1cmUwVW5pZm9ybUxvY2F0aW9uLCAwKTsKLSAgICAgICAgZ2xVbmlmb3Jt
MWkobVRleHR1cmUxVW5pZm9ybUxvY2F0aW9uLCAxKTsKLSAgICAgICAgZHJhd1F1YWQobVByb2dy
YW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQot
ICAgICAgICBFWFBFQ1RfUElYRUxfTkVBUigwLCAwLCAwLCAxODAsIDAsIDI1NSwgMik7Ci0gICAg
fQotCi0gICAgR0x1aW50IG1UZXh0dXJlMkRBOwotICAgIEdMdWludCBtVGV4dHVyZTJEQjsKLSAg
ICBHTGludCBtVGV4dHVyZTBVbmlmb3JtTG9jYXRpb247Ci0gICAgR0xpbnQgbVRleHR1cmUxVW5p
Zm9ybUxvY2F0aW9uOwotfTsKLQotCi1jbGFzcyBTYW1wbGVyQXJyYXlBc0Z1bmN0aW9uUGFyYW1l
dGVyVGVzdCA6IHB1YmxpYyBTYW1wbGVyQXJyYXlUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBT
YW1wbGVyQXJyYXlBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCgpIDogU2FtcGxlckFycmF5VGVzdCgp
IHt9Ci0KLSAgICBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRlclNvdXJjZSgpIG92ZXJyaWRl
Ci0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoU0hBREVSX1NPVVJDRQotICAgICAg
ICAoCi0gICAgICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLSAgICAgICAgICAgIHVu
aWZvcm0gaGlnaHAgc2FtcGxlcjJEIHRleDJEQXJyYXlbMl07Ci0gICAgICAgICAgICB2YXJ5aW5n
IHZlYzIgdGV4Y29vcmQ7Ci0KLSAgICAgICAgICAgIHZlYzQgY29tcHV0ZUZyYWdDb2xvcihoaWdo
cCBzYW1wbGVyMkQgYVRleDJEQXJyYXlbMl0pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRleHR1cmUyRChhVGV4MkRBcnJheVswXSwgdGV4Y29vcmQpICsgdGV4dHVyZTJE
KGFUZXgyREFycmF5WzFdLCB0ZXhjb29yZCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9y
ID0gY29tcHV0ZUZyYWdDb2xvcih0ZXgyREFycmF5KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
KQotICAgICAgICApOwotICAgIH0KLX07Ci0KLWNsYXNzIFRleHR1cmUyREFycmF5VGVzdEVTMyA6
IHB1YmxpYyBUZXhDb29yZERyYXdUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBUZXh0dXJlMkRB
cnJheVRlc3RFUzMoKSA6IFRleENvb3JkRHJhd1Rlc3QoKSwgbTJEQXJyYXlUZXh0dXJlKDApLCBt
VGV4dHVyZUFycmF5TG9jYXRpb24oLTEpIHt9Ci0KLSAgICBzdGQ6OnN0cmluZyBnZXRWZXJ0ZXhT
aGFkZXJTb3VyY2UoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5n
KAotICAgICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAgICAgIm91dCB2ZWMy
IHRleGNvb3JkO1xuIgotICAgICAgICAgICAgImluIHZlYzQgcG9zaXRpb247XG4iCi0gICAgICAg
ICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAg
IGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eSwgMC4wLCAxLjApO1xuIgotICAgICAgICAg
ICAgIiAgICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7XG4iCi0gICAgICAg
ICAgICAifVxuIik7Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRTaGFkZXJT
b3VyY2UoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKAotICAg
ICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAgICAgInByZWNpc2lvbiBoaWdo
cCBmbG9hdDtcbiIKLSAgICAgICAgICAgICJ1bmlmb3JtIGhpZ2hwIHNhbXBsZXIyREFycmF5IHRl
eDJEQXJyYXk7XG4iCi0gICAgICAgICAgICAiaW4gdmVjMiB0ZXhjb29yZDtcbiIKLSAgICAgICAg
ICAgICJvdXQgdmVjNCBmcmFnQ29sb3I7XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKClcbiIK
LSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIGZyYWdDb2xvciA9IHRleHR1cmUo
dGV4MkRBcnJheSwgdmVjMyh0ZXhjb29yZC54LCB0ZXhjb29yZC55LCAwLjApKTtcbiIKLSAgICAg
ICAgICAgICJ9XG4iKTsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7
Ci0gICAgICAgIFRleENvb3JkRHJhd1Rlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgc2V0VXBQcm9n
cmFtKCk7Ci0KLSAgICAgICAgbVRleHR1cmVBcnJheUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9j
YXRpb24obVByb2dyYW0sICJ0ZXgyREFycmF5Iik7Ci0gICAgICAgIEFTU0VSVF9ORSgtMSwgbVRl
eHR1cmVBcnJheUxvY2F0aW9uKTsKLQotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtMkRBcnJh
eVRleHR1cmUpOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICB2
b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMo
MSwgJm0yREFycmF5VGV4dHVyZSk7Ci0gICAgICAgIFRleENvb3JkRHJhd1Rlc3Q6OlRlYXJEb3du
KCk7Ci0gICAgfQotCi0gICAgR0x1aW50IG0yREFycmF5VGV4dHVyZTsKLSAgICBHTGludCBtVGV4
dHVyZUFycmF5TG9jYXRpb247Ci19OwotCi1jbGFzcyBUZXh0dXJlU2l6ZVRleHR1cmVBcnJheVRl
c3QgOiBwdWJsaWMgVGV4Q29vcmREcmF3VGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgVGV4dHVy
ZVNpemVUZXh0dXJlQXJyYXlUZXN0KCkKLSAgICAgICAgOiBUZXhDb29yZERyYXdUZXN0KCksCi0g
ICAgICAgICAgbVRleHR1cmUyREEoMCksCi0gICAgICAgICAgbVRleHR1cmUyREIoMCksCi0gICAg
ICAgICAgbVRleHR1cmUwTG9jYXRpb24oLTEpLAotICAgICAgICAgIG1UZXh0dXJlMUxvY2F0aW9u
KC0xKQotICAgIHsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0cmluZyBnZXRWZXJ0ZXhTaGFkZXJTb3Vy
Y2UoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKAotICAgICAg
ICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAgICAgImluIHZlYzQgcG9zaXRpb247
XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAg
ICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbi54eSwgMC4wLCAxLjApO1xu
IgotICAgICAgICAgICAgIn1cbiIpOwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nIGdldEZyYWdt
ZW50U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OnN0
cmluZygKLSAgICAgICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgICAgICJwcmVj
aXNpb24gaGlnaHAgZmxvYXQ7XG4iCi0gICAgICAgICAgICAidW5pZm9ybSBoaWdocCBzYW1wbGVy
MkQgdGV4MkRBcnJheVsyXTtcbiIKLSAgICAgICAgICAgICJvdXQgdmVjNCBmcmFnQ29sb3I7XG4i
Ci0gICAgICAgICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAg
ICAgICAiICAgIGZsb2F0IHJlZCA9IGZsb2F0KHRleHR1cmVTaXplKHRleDJEQXJyYXlbMF0sIDAp
LngpIC8gMjU1LjA7XG4iCi0gICAgICAgICAgICAiICAgIGZsb2F0IGdyZWVuID0gZmxvYXQodGV4
dHVyZVNpemUodGV4MkRBcnJheVsxXSwgMCkueCkgLyAyNTUuMDtcbiIKLSAgICAgICAgICAgICIg
ICAgZnJhZ0NvbG9yID0gdmVjNChyZWQsIGdyZWVuLCAwLjAsIDEuMCk7XG4iCi0gICAgICAgICAg
ICAifVxuIik7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICBUZXhDb29yZERyYXdUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIHNldFVwUHJvZ3JhbSgp
OwotCi0gICAgICAgIG1UZXh0dXJlMExvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVBy
b2dyYW0sICJ0ZXgyREFycmF5WzBdIik7Ci0gICAgICAgIEFTU0VSVF9ORSgtMSwgbVRleHR1cmUw
TG9jYXRpb24pOwotICAgICAgICBtVGV4dHVyZTFMb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0
aW9uKG1Qcm9ncmFtLCAidGV4MkRBcnJheVsxXSIpOwotICAgICAgICBBU1NFUlRfTkUoLTEsIG1U
ZXh0dXJlMUxvY2F0aW9uKTsKLQotICAgICAgICBtVGV4dHVyZTJEQSA9IGNyZWF0ZTJEVGV4dHVy
ZSgpOwotICAgICAgICBtVGV4dHVyZTJEQiA9IGNyZWF0ZTJEVGV4dHVyZSgpOwotICAgICAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlMkRBKTsKLSAg
ICAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUyREIpOwotICAgICAgICBUZXhDb29y
ZERyYXdUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQotICAgIEdMdWludCBtVGV4dHVyZTJEQTsK
LSAgICBHTHVpbnQgbVRleHR1cmUyREI7Ci0gICAgR0xpbnQgbVRleHR1cmUwTG9jYXRpb247Ci0g
ICAgR0xpbnQgbVRleHR1cmUxTG9jYXRpb247Ci19OwotCi1jbGFzcyBUZXh0dXJlM0RUZXN0RVMz
IDogcHVibGljIFRleENvb3JkRHJhd1Rlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFRleHR1cmUz
RFRlc3RFUzMoKSA6IFRleENvb3JkRHJhd1Rlc3QoKSwgbVRleHR1cmUzRCgwKSwgbVRleHR1cmUz
RFVuaWZvcm1Mb2NhdGlvbigtMSkge30KLQotICAgIHN0ZDo6c3RyaW5nIGdldFZlcnRleFNoYWRl
clNvdXJjZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoCi0g
ICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICAgICAib3V0IHZlYzIgdGV4
Y29vcmQ7XG4iCi0gICAgICAgICAgICAiaW4gdmVjNCBwb3NpdGlvbjtcbiIKLSAgICAgICAgICAg
ICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIgICAgZ2xf
UG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9uLnh5LCAwLjAsIDEuMCk7XG4iCi0gICAgICAgICAgICAi
ICAgIHRleGNvb3JkID0gKHBvc2l0aW9uLnh5ICogMC41KSArIDAuNTtcbiIKLSAgICAgICAgICAg
ICJ9XG4iKTsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRlclNvdXJj
ZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoCi0gICAgICAg
ICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZs
b2F0O1xuIgotICAgICAgICAgICAgInVuaWZvcm0gaGlnaHAgc2FtcGxlcjNEIHRleDNEO1xuIgot
ICAgICAgICAgICAgImluIHZlYzIgdGV4Y29vcmQ7XG4iCi0gICAgICAgICAgICAib3V0IHZlYzQg
ZnJhZ0NvbG9yO1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgICAi
e1xuIgotICAgICAgICAgICAgIiAgICBmcmFnQ29sb3IgPSB0ZXh0dXJlKHRleDNELCB2ZWMzKHRl
eGNvb3JkLCAwLjApKTtcbiIKLSAgICAgICAgICAgICJ9XG4iKTsKLSAgICB9Ci0KLSAgICB2b2lk
IFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIFRleENvb3JkRHJhd1Rlc3Q6OlNldFVw
KCk7Ci0KLSAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmbVRleHR1cmUzRCk7Ci0KLSAgICAgICAg
c2V0VXBQcm9ncmFtKCk7Ci0KLSAgICAgICAgbVRleHR1cmUzRFVuaWZvcm1Mb2NhdGlvbiA9IGds
R2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4M0QiKTsKLSAgICAgICAgQVNTRVJUX05F
KC0xLCBtVGV4dHVyZTNEVW5pZm9ybUxvY2F0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJE
b3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0
dXJlM0QpOwotICAgICAgICBUZXhDb29yZERyYXdUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQot
ICAgIEdMdWludCBtVGV4dHVyZTNEOwotICAgIEdMaW50IG1UZXh0dXJlM0RVbmlmb3JtTG9jYXRp
b247Ci19OwotCi1jbGFzcyBTaGFkb3dTYW1wbGVyUGx1c1NhbXBsZXIzRFRlc3RFUzMgOiBwdWJs
aWMgVGV4Q29vcmREcmF3VGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgU2hhZG93U2FtcGxlclBs
dXNTYW1wbGVyM0RUZXN0RVMzKCkKLSAgICAgICAgOiBUZXhDb29yZERyYXdUZXN0KCksCi0gICAg
ICAgICAgbVRleHR1cmVTaGFkb3coMCksCi0gICAgICAgICAgbVRleHR1cmUzRCgwKSwKLSAgICAg
ICAgICBtVGV4dHVyZVNoYWRvd1VuaWZvcm1Mb2NhdGlvbigtMSksCi0gICAgICAgICAgbVRleHR1
cmUzRFVuaWZvcm1Mb2NhdGlvbigtMSksCi0gICAgICAgICAgbURlcHRoUmVmVW5pZm9ybUxvY2F0
aW9uKC0xKQotICAgIHsKLSAgICB9Ci0KLSAgICBzdGQ6OnN0cmluZyBnZXRWZXJ0ZXhTaGFkZXJT
b3VyY2UoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKAotICAg
ICAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAgICAgIm91dCB2ZWMyIHRleGNv
b3JkO1xuIgotICAgICAgICAgICAgImluIHZlYzQgcG9zaXRpb247XG4iCi0gICAgICAgICAgICAi
dm9pZCBtYWluKClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIGdsX1Bv
c2l0aW9uID0gdmVjNChwb3NpdGlvbi54eSwgMC4wLCAxLjApO1xuIgotICAgICAgICAgICAgIiAg
ICB0ZXhjb29yZCA9IChwb3NpdGlvbi54eSAqIDAuNSkgKyAwLjU7XG4iCi0gICAgICAgICAgICAi
fVxuIik7Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21lbnRTaGFkZXJTb3VyY2Uo
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nKAotICAgICAgICAg
ICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9h
dDtcbiIKLSAgICAgICAgICAgICJ1bmlmb3JtIGhpZ2hwIHNhbXBsZXIyRFNoYWRvdyB0ZXgyRFNo
YWRvdztcbiIKLSAgICAgICAgICAgICJ1bmlmb3JtIGhpZ2hwIHNhbXBsZXIzRCB0ZXgzRDtcbiIK
LSAgICAgICAgICAgICJpbiB2ZWMyIHRleGNvb3JkO1xuIgotICAgICAgICAgICAgInVuaWZvcm0g
ZmxvYXQgZGVwdGhSZWY7XG4iCi0gICAgICAgICAgICAib3V0IHZlYzQgZnJhZ0NvbG9yO1xuIgot
ICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgICAie1xuIgotICAgICAgICAg
ICAgIiAgICBmcmFnQ29sb3IgPSB2ZWM0KHRleHR1cmUodGV4MkRTaGFkb3csIHZlYzModGV4Y29v
cmQsIGRlcHRoUmVmKSkgKiAwLjUpO1xuIgotICAgICAgICAgICAgIiAgICBmcmFnQ29sb3IgKz0g
dGV4dHVyZSh0ZXgzRCwgdmVjMyh0ZXhjb29yZCwgMC4wKSk7XG4iCi0gICAgICAgICAgICAifVxu
Iik7Ci0gICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBU
ZXhDb29yZERyYXdUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1U
ZXh0dXJlM0QpOwotCi0gICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1UZXh0dXJlU2hhZG93KTsK
LSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZVNoYWRvdyk7Ci0g
ICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0NPTVBBUkVf
TU9ERSwgR0xfQ09NUEFSRV9SRUZfVE9fVEVYVFVSRSk7Ci0KLSAgICAgICAgc2V0VXBQcm9ncmFt
KCk7Ci0KLSAgICAgICAgbVRleHR1cmVTaGFkb3dVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZv
cm1Mb2NhdGlvbihtUHJvZ3JhbSwgInRleDJEU2hhZG93Iik7Ci0gICAgICAgIEFTU0VSVF9ORSgt
MSwgbVRleHR1cmVTaGFkb3dVbmlmb3JtTG9jYXRpb24pOwotICAgICAgICBtVGV4dHVyZTNEVW5p
Zm9ybUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ0ZXgzRCIpOwot
ICAgICAgICBBU1NFUlRfTkUoLTEsIG1UZXh0dXJlM0RVbmlmb3JtTG9jYXRpb24pOwotICAgICAg
ICBtRGVwdGhSZWZVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3Jh
bSwgImRlcHRoUmVmIik7Ci0gICAgICAgIEFTU0VSVF9ORSgtMSwgbURlcHRoUmVmVW5pZm9ybUxv
Y2F0aW9uKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUKLSAgICB7Ci0g
ICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlU2hhZG93KTsKLSAgICAgICAgZ2xE
ZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUzRCk7Ci0gICAgICAgIFRleENvb3JkRHJhd1Rlc3Q6
OlRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgR0x1aW50IG1UZXh0dXJlU2hhZG93OwotICAgIEdM
dWludCBtVGV4dHVyZTNEOwotICAgIEdMaW50IG1UZXh0dXJlU2hhZG93VW5pZm9ybUxvY2F0aW9u
OwotICAgIEdMaW50IG1UZXh0dXJlM0RVbmlmb3JtTG9jYXRpb247Ci0gICAgR0xpbnQgbURlcHRo
UmVmVW5pZm9ybUxvY2F0aW9uOwotfTsKLQotY2xhc3MgU2FtcGxlclR5cGVNaXhUZXN0RVMzIDog
cHVibGljIFRleENvb3JkRHJhd1Rlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFNhbXBsZXJUeXBl
TWl4VGVzdEVTMygpCi0gICAgICAgIDogVGV4Q29vcmREcmF3VGVzdCgpLAotICAgICAgICAgIG1U
ZXh0dXJlMkQoMCksCi0gICAgICAgICAgbVRleHR1cmVDdWJlKDApLAotICAgICAgICAgIG1UZXh0
dXJlMkRTaGFkb3coMCksCi0gICAgICAgICAgbVRleHR1cmVDdWJlU2hhZG93KDApLAotICAgICAg
ICAgIG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24oLTEpLAotICAgICAgICAgIG1UZXh0dXJlQ3Vi
ZVVuaWZvcm1Mb2NhdGlvbigtMSksCi0gICAgICAgICAgbVRleHR1cmUyRFNoYWRvd1VuaWZvcm1M
b2NhdGlvbigtMSksCi0gICAgICAgICAgbVRleHR1cmVDdWJlU2hhZG93VW5pZm9ybUxvY2F0aW9u
KC0xKSwKLSAgICAgICAgICBtRGVwdGhSZWZVbmlmb3JtTG9jYXRpb24oLTEpCi0gICAgewotICAg
IH0KLQotICAgIHN0ZDo6c3RyaW5nIGdldFZlcnRleFNoYWRlclNvdXJjZSgpIG92ZXJyaWRlCi0g
ICAgewotICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoCi0gICAgICAgICAgICAiI3ZlcnNpb24g
MzAwIGVzXG4iCi0gICAgICAgICAgICAib3V0IHZlYzIgdGV4Y29vcmQ7XG4iCi0gICAgICAgICAg
ICAiaW4gdmVjNCBwb3NpdGlvbjtcbiIKLSAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAg
ICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0
aW9uLnh5LCAwLjAsIDEuMCk7XG4iCi0gICAgICAgICAgICAiICAgIHRleGNvb3JkID0gKHBvc2l0
aW9uLnh5ICogMC41KSArIDAuNTtcbiIKLSAgICAgICAgICAgICJ9XG4iKTsKLSAgICB9Ci0KLSAg
ICBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRlclNvdXJjZSgpIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoCi0gICAgICAgICAgICAiI3ZlcnNpb24gMzAwIGVz
XG4iCi0gICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAgICAg
InVuaWZvcm0gaGlnaHAgc2FtcGxlcjJEIHRleDJEO1xuIgotICAgICAgICAgICAgInVuaWZvcm0g
aGlnaHAgc2FtcGxlckN1YmUgdGV4Q3ViZTtcbiIKLSAgICAgICAgICAgICJ1bmlmb3JtIGhpZ2hw
IHNhbXBsZXIyRFNoYWRvdyB0ZXgyRFNoYWRvdztcbiIKLSAgICAgICAgICAgICJ1bmlmb3JtIGhp
Z2hwIHNhbXBsZXJDdWJlU2hhZG93IHRleEN1YmVTaGFkb3c7XG4iCi0gICAgICAgICAgICAiaW4g
dmVjMiB0ZXhjb29yZDtcbiIKLSAgICAgICAgICAgICJ1bmlmb3JtIGZsb2F0IGRlcHRoUmVmO1xu
IgotICAgICAgICAgICAgIm91dCB2ZWM0IGZyYWdDb2xvcjtcbiIKLSAgICAgICAgICAgICJ2b2lk
IG1haW4oKVxuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIgICAgZnJhZ0NvbG9y
ID0gdGV4dHVyZSh0ZXgyRCwgdGV4Y29vcmQpO1xuIgotICAgICAgICAgICAgIiAgICBmcmFnQ29s
b3IgKz0gdGV4dHVyZSh0ZXhDdWJlLCB2ZWMzKDEuMCwgMC4wLCAwLjApKTtcbiIKLSAgICAgICAg
ICAgICIgICAgZnJhZ0NvbG9yICs9IHZlYzQodGV4dHVyZSh0ZXgyRFNoYWRvdywgdmVjMyh0ZXhj
b29yZCwgZGVwdGhSZWYpKSAqIDAuMjUpO1xuIgotICAgICAgICAgICAgIiAgICBmcmFnQ29sb3Ig
Kz0gdmVjNCh0ZXh0dXJlKHRleEN1YmVTaGFkb3csIHZlYzQoMS4wLCAwLjAsIDAuMCwgZGVwdGhS
ZWYpKSAqICIKLSAgICAgICAgICAgICIwLjEyNSk7XG4iCi0gICAgICAgICAgICAifVxuIik7Ci0g
ICAgfQotCi0gICAgdm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBUZXhDb29y
ZERyYXdUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1UZXh0dXJl
MkQpOwotICAgICAgICBnbEdlblRleHR1cmVzKDEsICZtVGV4dHVyZUN1YmUpOwotCi0gICAgICAg
IGdsR2VuVGV4dHVyZXMoMSwgJm1UZXh0dXJlMkRTaGFkb3cpOwotICAgICAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkRTaGFkb3cpOwotICAgICAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9DT01QQVJFX01PREUsIEdMX0NPTVBBUkVf
UkVGX1RPX1RFWFRVUkUpOwotCi0gICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1UZXh0dXJlQ3Vi
ZVNoYWRvdyk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV9DVUJFX01BUCwgbVRl
eHR1cmVDdWJlU2hhZG93KTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VC
RV9NQVAsIEdMX1RFWFRVUkVfQ09NUEFSRV9NT0RFLCBHTF9DT01QQVJFX1JFRl9UT19URVhUVVJF
KTsKLQotICAgICAgICBzZXRVcFByb2dyYW0oKTsKLQotICAgICAgICBtVGV4dHVyZTJEVW5pZm9y
bUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ0ZXgyRCIpOwotICAg
ICAgICBBU1NFUlRfTkUoLTEsIG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24pOwotICAgICAgICBt
VGV4dHVyZUN1YmVVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3Jh
bSwgInRleEN1YmUiKTsKLSAgICAgICAgQVNTRVJUX05FKC0xLCBtVGV4dHVyZUN1YmVVbmlmb3Jt
TG9jYXRpb24pOwotICAgICAgICBtVGV4dHVyZTJEU2hhZG93VW5pZm9ybUxvY2F0aW9uID0gZ2xH
ZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ0ZXgyRFNoYWRvdyIpOwotICAgICAgICBBU1NF
UlRfTkUoLTEsIG1UZXh0dXJlMkRTaGFkb3dVbmlmb3JtTG9jYXRpb24pOwotICAgICAgICBtVGV4
dHVyZUN1YmVTaGFkb3dVbmlmb3JtTG9jYXRpb24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJv
Z3JhbSwgInRleEN1YmVTaGFkb3ciKTsKLSAgICAgICAgQVNTRVJUX05FKC0xLCBtVGV4dHVyZUN1
YmVTaGFkb3dVbmlmb3JtTG9jYXRpb24pOwotICAgICAgICBtRGVwdGhSZWZVbmlmb3JtTG9jYXRp
b24gPSBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgImRlcHRoUmVmIik7Ci0gICAgICAg
IEFTU0VSVF9ORSgtMSwgbURlcHRoUmVmVW5pZm9ybUxvY2F0aW9uKTsKLQotICAgICAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJm1UZXh0dXJlMkQpOwotICAgICAg
ICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZUN1YmUpOwotICAgICAgICBnbERlbGV0ZVRl
eHR1cmVzKDEsICZtVGV4dHVyZTJEU2hhZG93KTsKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcygx
LCAmbVRleHR1cmVDdWJlU2hhZG93KTsKLSAgICAgICAgVGV4Q29vcmREcmF3VGVzdDo6VGVhckRv
d24oKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVRleHR1cmUyRDsKLSAgICBHTHVpbnQgbVRleHR1
cmVDdWJlOwotICAgIEdMdWludCBtVGV4dHVyZTJEU2hhZG93OwotICAgIEdMdWludCBtVGV4dHVy
ZUN1YmVTaGFkb3c7Ci0gICAgR0xpbnQgbVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbjsKLSAgICBH
TGludCBtVGV4dHVyZUN1YmVVbmlmb3JtTG9jYXRpb247Ci0gICAgR0xpbnQgbVRleHR1cmUyRFNo
YWRvd1VuaWZvcm1Mb2NhdGlvbjsKLSAgICBHTGludCBtVGV4dHVyZUN1YmVTaGFkb3dVbmlmb3Jt
TG9jYXRpb247Ci0gICAgR0xpbnQgbURlcHRoUmVmVW5pZm9ybUxvY2F0aW9uOwotfTsKLQotY2xh
c3MgU2FtcGxlckluU3RydWN0VGVzdCA6IHB1YmxpYyBUZXh0dXJlMkRUZXN0Ci17Ci0gIHByb3Rl
Y3RlZDoKLSAgICBTYW1wbGVySW5TdHJ1Y3RUZXN0KCkgOiBUZXh0dXJlMkRUZXN0KCkge30KLQot
ICAgIGNvbnN0IGNoYXIgKmdldFRleHR1cmVVbmlmb3JtTmFtZSgpIG92ZXJyaWRlIHsgcmV0dXJu
ICJ1cy50ZXgiOyB9Ci0KLSAgICBzdGQ6OnN0cmluZyBnZXRGcmFnbWVudFNoYWRlclNvdXJjZSgp
IG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoCi0gICAgICAgICAg
ICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAgICAgInN0cnVjdCBTXG4iCi0g
ICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgICB2ZWM0IGE7XG4iCi0gICAgICAgICAg
ICAiICAgIGhpZ2hwIHNhbXBsZXIyRCB0ZXg7XG4iCi0gICAgICAgICAgICAifTtcbiIKLSAgICAg
ICAgICAgICJ1bmlmb3JtIFMgdXM7XG4iCi0gICAgICAgICAgICAidmFyeWluZyB2ZWMyIHRleGNv
b3JkO1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgICAie1xuIgot
ICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodXMudGV4LCB0ZXhjb29y
ZCArIHVzLmEueCk7XG4iCi0gICAgICAgICAgICAifVxuIik7Ci0gICAgfQotCi0gICAgdm9pZCBy
dW5TYW1wbGVySW5TdHJ1Y3RUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFVwUHJvZ3JhbSgpOwot
Ci0gICAgICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Ci0gICAgICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0gICAgICAgIGdsVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLAotICAgICAgICAgICAgICAgICAgICAgJkdMQ29sb3I6OmdyZWVuKTsKLSAgICAgICAgZHJh
d1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgICAgICBFWFBFQ1RfUElYRUxf
Q09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOwotICAgIH0KLX07Ci0KLWNsYXNzIFNhbXBs
ZXJJblN0cnVjdEFzRnVuY3Rpb25QYXJhbWV0ZXJUZXN0IDogcHVibGljIFNhbXBsZXJJblN0cnVj
dFRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFNhbXBsZXJJblN0cnVjdEFzRnVuY3Rpb25QYXJh
bWV0ZXJUZXN0KCkgOiBTYW1wbGVySW5TdHJ1Y3RUZXN0KCkge30KLQotICAgIHN0ZDo6c3RyaW5n
IGdldEZyYWdtZW50U2hhZGVyU291cmNlKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHJldHVy
biBzdGQ6OnN0cmluZygKLSAgICAgICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7XG4iCi0g
ICAgICAgICAgICAic3RydWN0IFNcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAi
ICAgIHZlYzQgYTtcbiIKLSAgICAgICAgICAgICIgICAgaGlnaHAgc2FtcGxlcjJEIHRleDtcbiIK
LSAgICAgICAgICAgICJ9O1xuIgotICAgICAgICAgICAgInVuaWZvcm0gUyB1cztcbiIKLSAgICAg
ICAgICAgICJ2YXJ5aW5nIHZlYzIgdGV4Y29vcmQ7XG4iCi0gICAgICAgICAgICAidmVjNCBzYW1w
bGVGcm9tKFMgcykge1xuIgotICAgICAgICAgICAgIiAgICByZXR1cm4gdGV4dHVyZTJEKHMudGV4
LCB0ZXhjb29yZCArIHMuYS54KTtcbiIKLSAgICAgICAgICAgICJ9XG4iCi0gICAgICAgICAgICAi
dm9pZCBtYWluKClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIGdsX0Zy
YWdDb2xvciA9IHNhbXBsZUZyb20odXMpO1xuIgotICAgICAgICAgICAgIn1cbiIpOwotICAgIH0K
LX07Ci0KLWNsYXNzIFNhbXBsZXJJblN0cnVjdEFycmF5QXNGdW5jdGlvblBhcmFtZXRlclRlc3Qg
OiBwdWJsaWMgU2FtcGxlckluU3RydWN0VGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgU2FtcGxl
ckluU3RydWN0QXJyYXlBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCgpIDogU2FtcGxlckluU3RydWN0
VGVzdCgpIHt9Ci0KLSAgICBjb25zdCBjaGFyICpnZXRUZXh0dXJlVW5pZm9ybU5hbWUoKSBvdmVy
cmlkZSB7IHJldHVybiAidXNbMF0udGV4IjsgfQotCi0gICAgc3RkOjpzdHJpbmcgZ2V0RnJhZ21l
bnRTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3Ry
aW5nKAotICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAgICAg
ICJzdHJ1Y3QgU1xuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIgICAgdmVjNCBh
O1xuIgotICAgICAgICAgICAgIiAgICBoaWdocCBzYW1wbGVyMkQgdGV4O1xuIgotICAgICAgICAg
ICAgIn07XG4iCi0gICAgICAgICAgICAidW5pZm9ybSBTIHVzWzFdO1xuIgotICAgICAgICAgICAg
InZhcnlpbmcgdmVjMiB0ZXhjb29yZDtcbiIKLSAgICAgICAgICAgICJ2ZWM0IHNhbXBsZUZyb20o
UyBzKSB7XG4iCi0gICAgICAgICAgICAiICAgIHJldHVybiB0ZXh0dXJlMkQocy50ZXgsIHRleGNv
b3JkICsgcy5hLngpO1xuIgotICAgICAgICAgICAgIn1cbiIKLSAgICAgICAgICAgICJ2b2lkIG1h
aW4oKVxuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9y
ID0gc2FtcGxlRnJvbSh1c1swXSk7XG4iCi0gICAgICAgICAgICAifVxuIik7Ci0gICAgfQotfTsK
LQotY2xhc3MgU2FtcGxlckluTmVzdGVkU3RydWN0QXNGdW5jdGlvblBhcmFtZXRlclRlc3QgOiBw
dWJsaWMgU2FtcGxlckluU3RydWN0VGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgU2FtcGxlcklu
TmVzdGVkU3RydWN0QXNGdW5jdGlvblBhcmFtZXRlclRlc3QoKSA6IFNhbXBsZXJJblN0cnVjdFRl
c3QoKSB7fQotCi0gICAgY29uc3QgY2hhciAqZ2V0VGV4dHVyZVVuaWZvcm1OYW1lKCkgb3ZlcnJp
ZGUgeyByZXR1cm4gInVzWzBdLnN1Yi50ZXgiOyB9Ci0KLSAgICBzdGQ6OnN0cmluZyBnZXRGcmFn
bWVudFNoYWRlclNvdXJjZSgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpz
dHJpbmcoCi0gICAgICAgICAgICAicHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAg
ICAgInN0cnVjdCBTVUJcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIHZl
YzQgYTtcbiIKLSAgICAgICAgICAgICIgICAgaGlnaHAgc2FtcGxlcjJEIHRleDtcbiIKLSAgICAg
ICAgICAgICJ9O1xuIgotICAgICAgICAgICAgInN0cnVjdCBTXG4iCi0gICAgICAgICAgICAie1xu
IgotICAgICAgICAgICAgIiAgICBTVUIgc3ViO1xuIgotICAgICAgICAgICAgIn07XG4iCi0gICAg
ICAgICAgICAidW5pZm9ybSBTIHVzWzFdO1xuIgotICAgICAgICAgICAgInZhcnlpbmcgdmVjMiB0
ZXhjb29yZDtcbiIKLSAgICAgICAgICAgICJ2ZWM0IHNhbXBsZUZyb20oU1VCIHMpIHtcbiIKLSAg
ICAgICAgICAgICIgICAgcmV0dXJuIHRleHR1cmUyRChzLnRleCwgdGV4Y29vcmQgKyBzLmEueCk7
XG4iCi0gICAgICAgICAgICAifVxuIgotICAgICAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAg
ICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSBzYW1wbGVGcm9t
KHVzWzBdLnN1Yik7XG4iCi0gICAgICAgICAgICAifVxuIik7Ci0gICAgfQotfTsKLQotY2xhc3Mg
U2FtcGxlckluU3RydWN0QW5kT3RoZXJWYXJpYWJsZVRlc3QgOiBwdWJsaWMgU2FtcGxlckluU3Ry
dWN0VGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgU2FtcGxlckluU3RydWN0QW5kT3RoZXJWYXJp
YWJsZVRlc3QoKSA6IFNhbXBsZXJJblN0cnVjdFRlc3QoKSB7fQotCi0gICAgc3RkOjpzdHJpbmcg
Z2V0RnJhZ21lbnRTaGFkZXJTb3VyY2UoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHN0ZDo6c3RyaW5nKAotICAgICAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAg
ICAgICAgICAgICJzdHJ1Y3QgU1xuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIg
ICAgdmVjNCBhO1xuIgotICAgICAgICAgICAgIiAgICBoaWdocCBzYW1wbGVyMkQgdGV4O1xuIgot
ICAgICAgICAgICAgIn07XG4iCi0gICAgICAgICAgICAidW5pZm9ybSBTIHVzO1xuIgotICAgICAg
ICAgICAgInVuaWZvcm0gZmxvYXQgdXNfdGV4O1xuIgotICAgICAgICAgICAgInZhcnlpbmcgdmVj
MiB0ZXhjb29yZDtcbiIKLSAgICAgICAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgICAgICAg
IntcbiIKLSAgICAgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHVzLnRleCwg
dGV4Y29vcmQgKyB1cy5hLnggKyB1c190ZXgpO1xuIgotICAgICAgICAgICAgIn1cbiIpOwotICAg
IH0KLX07Ci0KLVRFU1RfUChUZXh0dXJlMkRUZXN0LCBOZWdhdGl2ZUFQSVN1YkltYWdlKQotewot
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0gICAgRVhQRUNU
X0dMX0VSUk9SKEdMX05PX0VSUk9SKTsKLQotICAgIHNldFVwUHJvZ3JhbSgpOwotCi0gICAgY29u
c3QgR0x1Ynl0ZSAqcGl4ZWxzWzIwXSA9IHsgMCB9OwotICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCAxLCAxLCAxLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhl
bHMpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX1ZBTFVFKTsKLX0KLQotLy8gVGVz
dCB0aGF0IHF1ZXJ5aW5nIEdMX1RFWFRVUkVfQklORElORyogZG9lc24ndCBjYXVzZSBhbiB1bmV4
cGVjdGVkIGVycm9yLgotVEVTVF9QKFRleHR1cmUyRFRlc3QsIFF1ZXJ5QmluZGluZykKLXsKLSAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOwotICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9OT19FUlJPUik7Ci0KLSAgICBHTGludCB0ZXh0dXJlQmluZGluZzsKLSAgICBnbEdldEludGVn
ZXJ2KEdMX1RFWFRVUkVfQklORElOR18yRCwgJnRleHR1cmVCaW5kaW5nKTsKLSAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfRVEoMCwgdGV4dHVyZUJpbmRpbmcpOwotCi0gICAg
Z2xHZXRJbnRlZ2VydihHTF9URVhUVVJFX0JJTkRJTkdfRVhURVJOQUxfT0VTLCAmdGV4dHVyZUJp
bmRpbmcpOwotICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfRUdMX2ltYWdlX2V4dGVy
bmFsIikgfHwKLSAgICAgICAgZXh0ZW5zaW9uRW5hYmxlZCgiR0xfTlZfRUdMX3N0cmVhbV9jb25z
dW1lcl9leHRlcm5hbCIpKQotICAgIHsKLSAgICAgICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0g
ICAgICAgIEVYUEVDVF9FUSgwLCB0ZXh0dXJlQmluZGluZyk7Ci0gICAgfQotICAgIGVsc2UKLSAg
ICB7Ci0gICAgICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotICAgIH0KLX0K
LQotVEVTVF9QKFRleHR1cmUyRFRlc3QsIFplcm9TaXplZFVwbG9hZHMpCi17Ci0gICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKLSAgICBFWFBFQ1RfR0xfRVJST1Io
R0xfTk9fRVJST1IpOwotCi0gICAgc2V0VXBQcm9ncmFtKCk7Ci0KLSAgICAvLyBVc2UgdGhlIHRl
eHR1cmUgZmlyc3QgdG8gbWFrZSBzdXJlIGl0J3MgaW4gdmlkZW8gbWVtb3J5Ci0gICAgZ2xVc2VQ
cm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBnbFVuaWZvcm0xaShtVGV4dHVyZTJEVW5pZm9ybUxvY2F0
aW9uLCAwKTsKLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAg
ICBjb25zdCBHTHVieXRlICpwaXhlbFs0XSA9IHsgMCB9OwotCi0gICAgZ2xUZXhTdWJJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
IHBpeGVsKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsVGV4U3ViSW1hZ2Uy
RChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAwLCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRF
LCBwaXhlbCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFRleFN1YkltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllU
RSwgcGl4ZWwpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IGRyYXdp
bmcgd2l0aCB0d28gdGV4dHVyZSB0eXBlcywgdG8gdHJpZ2dlciBhbiBBTkdMRSBidWcgaW4gdmFs
aWRhdGlvbgotVEVTVF9QKFRleHR1cmVDdWJlVGVzdCwgQ3ViZU1hcEJ1ZykKLXsKLSAgICBnbEFj
dGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbVRleHR1cmUyRCk7Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUxKTsKLSAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIG1UZXh0dXJlQ3ViZSk7Ci0gICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX05PX0VSUk9SKTsKLQotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7
Ci0gICAgZ2xVbmlmb3JtMWkobVRleHR1cmUyRFVuaWZvcm1Mb2NhdGlvbiwgMCk7Ci0gICAgZ2xV
bmlmb3JtMWkobVRleHR1cmVDdWJlVW5pZm9ybUxvY2F0aW9uLCAxKTsKLSAgICBkcmF3UXVhZCht
UHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19
Ci0KLS8vIFRlc3QgZHJhd2luZyB3aXRoIHR3byB0ZXh0dXJlIHR5cGVzIGFjY2Vzc2VkIGZyb20g
dGhlIHNhbWUgc2hhZGVyIGFuZCBjaGVjayB0aGF0IHRoZSByZXN1bHQgb2YKLS8vIGRyYXdpbmcg
aXMgY29ycmVjdC4KLVRFU1RfUChUZXh0dXJlQ3ViZVRlc3QsIEN1YmVNYXBEcmF3KQotewotICAg
IEdMdWJ5dGUgdGV4RGF0YVs0XTsKLSAgICB0ZXhEYXRhWzBdID0gMDsKLSAgICB0ZXhEYXRhWzFd
ID0gNjA7Ci0gICAgdGV4RGF0YVsyXSA9IDA7Ci0gICAgdGV4RGF0YVszXSA9IDI1NTsKLQotICAg
IGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCBtVGV4dHVyZTJEKTsKLSAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwg
MCwgMCwgMCwgMSwgMSwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgdGV4RGF0YSk7Ci0KLSAg
ICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTEpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV9DVUJFX01BUCwgbVRleHR1cmVDdWJlKTsKLSAgICB0ZXhEYXRhWzFdID0gMTIwOwotICAg
IGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1gsIDAsIDAsIDAs
IDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgICAgIHRl
eERhdGEpOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9OT19FUlJPUik7Ci0KLSAgICBnbFVzZVBy
b2dyYW0obVByb2dyYW0pOwotICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRp
b24sIDApOwotICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlQ3ViZVVuaWZvcm1Mb2NhdGlvbiwgMSk7
Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotCi0gICAgaW50IHB4ID0gZ2V0V2luZG93V2lkdGgoKSAtIDE7Ci0gICAg
aW50IHB5ID0gMDsKLSAgICBFWFBFQ1RfUElYRUxfTkVBUihweCwgcHksIDAsIDE4MCwgMCwgMjU1
LCAyKTsKLX0KLQotVEVTVF9QKFNhbXBsZXIyREFzRnVuY3Rpb25QYXJhbWV0ZXJUZXN0LCBTYW1w
bGVyMkRBc0Z1bmN0aW9uUGFyYW1ldGVyKQotewotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhU
VVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKLSAg
ICBHTHVieXRlIHRleERhdGFbNF07Ci0gICAgdGV4RGF0YVswXSA9IDA7Ci0gICAgdGV4RGF0YVsx
XSA9IDEyODsKLSAgICB0ZXhEYXRhWzJdID0gMDsKLSAgICB0ZXhEYXRhWzNdID0gMjU1OwotICAg
IGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAxLCAxLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLCB0ZXhEYXRhKTsKLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwot
ICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24sIDApOwotICAgIGRyYXdR
dWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKLQotICAgIEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAsIDAsIDEyOCwgMCwgMjU1LCAyKTsKLX0K
LQotLy8gVGVzdCBkcmF3aW5nIHdpdGggdHdvIHRleHR1cmVzIHBhc3NlZCB0byB0aGUgc2hhZGVy
IGluIGEgc2FtcGxlciBhcnJheS4KLVRFU1RfUChTYW1wbGVyQXJyYXlUZXN0LCBTYW1wbGVyQXJy
YXlEcmF3KQotewotICAgIHRlc3RTYW1wbGVyQXJyYXlEcmF3KCk7Ci19Ci0KLS8vIFRlc3QgZHJh
d2luZyB3aXRoIHR3byB0ZXh0dXJlcyBwYXNzZWQgdG8gdGhlIHNoYWRlciBpbiBhIHNhbXBsZXIg
YXJyYXkgd2hpY2ggaXMgcGFzc2VkIHRvIGEKLS8vIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBpbiB0
aGUgc2hhZGVyLgotVEVTVF9QKFNhbXBsZXJBcnJheUFzRnVuY3Rpb25QYXJhbWV0ZXJUZXN0LCBT
YW1wbGVyQXJyYXlBc0Z1bmN0aW9uUGFyYW1ldGVyKQotewotICAgIHRlc3RTYW1wbGVyQXJyYXlE
cmF3KCk7Ci19Ci0KLS8vIENvcHkgb2YgYSB0ZXN0IGluIGNvbmZvcm1hbmNlL3RleHR1cmVzL3Rl
eHR1cmUtbWlwcywgdG8gdGVzdCBnZW5lcmF0ZSBtaXBtYXBzCi1URVNUX1AoVGV4dHVyZTJEVGVz
dFdpdGhEcmF3U2NhbGUsIE1pcG1hcHNUd2ljZSkKLXsKLSAgICBpbnQgcHggPSBnZXRXaW5kb3dX
aWR0aCgpIC8gMjsKLSAgICBpbnQgcHkgPSBnZXRXaW5kb3dIZWlnaHQoKSAvIDI7Ci0KLSAgICBn
bEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgbVRleHR1cmUyRCk7Ci0KLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNSZWQo
MTZ1ICogMTZ1LCBHTENvbG9yOjpyZWQpOwotCi0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4
ZWxzUmVkLmRhdGEoKSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9ORUFSRVNUKTsKLSAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIp
OwotICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8yRCk7Ci0KLSAgICBnbFVzZVByb2dy
YW0obVByb2dyYW0pOwotICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24s
IDApOwotICAgIGdsVW5pZm9ybTJmKG1EcmF3U2NhbGVVbmlmb3JtTG9jYXRpb24sIDAuMDYyNWYs
IDAuMDYyNWYpOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEocHgsIHB5
LCBHTENvbG9yOjpyZWQpOwotCi0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxzQmx1ZSgx
NnUgKiAxNnUsIEdMQ29sb3I6OmJsdWUpOwotCi0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAg
ICAgICAgICAgICAgICAgcGl4ZWxzQmx1ZS5kYXRhKCkpOwotICAgIGdsR2VuZXJhdGVNaXBtYXAo
R0xfVEVYVFVSRV8yRCk7Ci0KLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNHcmVlbigx
NnUgKiAxNnUsIEdMQ29sb3I6OmdyZWVuKTsKLQotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJF
XzJELCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0g
ICAgICAgICAgICAgICAgIHBpeGVsc0dyZWVuLmRhdGEoKSk7Ci0gICAgZ2xHZW5lcmF0ZU1pcG1h
cChHTF9URVhUVVJFXzJEKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAw
LjVmKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xP
Ul9FUShweCwgcHksIEdMQ29sb3I6OmdyZWVuKTsKLX0KLQotLy8gVGVzdCBjcmVhdGluZyBhIEZC
TyB3aXRoIGEgY3ViZSBtYXAgcmVuZGVyIHRhcmdldCwgdG8gdGVzdCBhbiBBTkdMRSBidWcKLS8v
IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvYW5nbGVwcm9qZWN0L2lzc3Vlcy9kZXRhaWw/aWQ9
ODQ5Ci1URVNUX1AoVGV4dHVyZUN1YmVUZXN0LCBDdWJlTWFwRkJPKQotewotICAgIEdMdWludCBm
Ym87Ci0gICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJmZibyk7Ci0gICAgZ2xCaW5kRnJhbWVidWZm
ZXIoR0xfRlJBTUVCVUZGRVIsIGZibyk7Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVf
Q1VCRV9NQVAsIG1UZXh0dXJlQ3ViZSk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9G
UkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9T
SVRJVkVfWSwgbVRleHR1cmVDdWJlLCAwKTsKLQotICAgIEVYUEVDVF9HTEVOVU1fRVEoR0xfRlJB
TUVCVUZGRVJfQ09NUExFVEUsIGdsQ2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhHTF9GUkFNRUJVRkZF
UikpOwotCi0gICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnMoMSwgJmZibyk7Ci0KLSAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCB0aGF0IGdsVGV4U3ViSW1hZ2UyRCB3b3JrcyBw
cm9wZXJseSB3aGVuIGdsVGV4U3RvcmFnZTJERVhUIGhhcyBpbml0aWFsaXplZCB0aGUgaW1hZ2Ug
d2l0aCBhIGRlZmF1bHQgY29sb3IuCi1URVNUX1AoVGV4dHVyZTJEVGVzdCwgVGV4U3RvcmFnZSkK
LXsKLSAgICBpbnQgd2lkdGggPSBnZXRXaW5kb3dXaWR0aCgpOwotICAgIGludCBoZWlnaHQgPSBn
ZXRXaW5kb3dIZWlnaHQoKTsKLQotICAgIEdMdWludCB0ZXgyRDsKLSAgICBnbEdlblRleHR1cmVz
KDEsICZ0ZXgyRCk7Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleDJEKTsKLQotICAgIC8vIEZpbGwgd2l0aCByZWQK
LSAgICBzdGQ6OnZlY3RvcjxHTHVieXRlPiBwaXhlbHMoMyAqIDE2ICogMTYpOwotICAgIGZvciAo
c2l6ZV90IHBpeGVsSWQgPSAwOyBwaXhlbElkIDwgMTYgKiAxNjsgKytwaXhlbElkKQotICAgIHsK
LSAgICAgICAgcGl4ZWxzW3BpeGVsSWQgKiAzICsgMF0gPSAyNTU7Ci0gICAgICAgIHBpeGVsc1tw
aXhlbElkICogMyArIDFdID0gMDsKLSAgICAgICAgcGl4ZWxzW3BpeGVsSWQgKiAzICsgMl0gPSAw
OwotICAgIH0KLQotICAgIC8vIEFOR0xFIGludGVybmFsbHkgdXNlcyBSR0JBIGFzIHRoZSBEaXJl
Y3RYIGZvcm1hdCBmb3IgUkdCIGltYWdlcwotICAgIC8vIHRoZXJlZm9yZSBnbFRleFN0b3JhZ2Uy
REVYVCBpbml0aWFsaXplcyB0aGUgaW1hZ2UgdG8gYSBkZWZhdWx0IGNvbG9yIHRvIGdldCBhIGNv
bnNpc3RlbnQgYWxwaGEgY29sb3IuCi0gICAgLy8gVGhlIGRhdGEgaXMga2VwdCBpbiBhIENQVS1z
aWRlIGltYWdlIGFuZCB0aGUgaW1hZ2UgaXMgbWFya2VkIGFzIGRpcnR5LgotICAgIGdsVGV4U3Rv
cmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQjgsIDE2LCAxNik7Ci0KLSAgICAvLyBJ
bml0aWFsaXplcyB0aGUgY29sb3Igb2YgdGhlIHVwcGVyLWxlZnQgOHg4IHBpeGVscywgbGVhdmVz
IHRoZSBvdGhlciBwaXhlbHMgdW50b3VjaGVkLgotICAgIC8vIGdsVGV4U3ViSW1hZ2UyRCBzaG91
bGQgdGFrZSBpbnRvIGFjY291bnQgdGhhdCB0aGUgaW1hZ2UgaXMgZGlydHkuCi0gICAgZ2xUZXhT
dWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDgsIDgsIEdMX1JHQiwgR0xfVU5TSUdO
RURfQllURSwgcGl4ZWxzLmRhdGEoKSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVf
MkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotCi0g
ICAgc2V0VXBQcm9ncmFtKCk7Ci0KLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIGds
VW5pZm9ybTFpKG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24sIDApOwotICAgIGRyYXdRdWFkKG1Q
cm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXgy
RCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKHdpZHRo
IC8gNCwgaGVpZ2h0IC8gNCwgMjU1LCAwLCAwLCAyNTUpOwotCi0gICAgLy8gVmFsaWRhdGUgdGhh
dCB0aGUgcmVnaW9uIG9mIHRoZSB0ZXh0dXJlIHdpdGhvdXQgZGF0YSBoYXMgYW4gYWxwaGEgb2Yg
MS4wCi0gICAgR0x1Ynl0ZSBwaXhlbFs0XTsKLSAgICBnbFJlYWRQaXhlbHMoMyAqIHdpZHRoIC8g
NCwgMyAqIGhlaWdodCAvIDQsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHBpeGVs
KTsKLSAgICBFWFBFQ1RfRVEocGl4ZWxbM10sIDI1NSk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBnbFRl
eFN1YkltYWdlMkQgY29tYmluZWQgd2l0aCBhIFBCTyB3b3JrcyBwcm9wZXJseSB3aGVuIGdsVGV4
U3RvcmFnZTJERVhUIGhhcyBpbml0aWFsaXplZCB0aGUgaW1hZ2Ugd2l0aCBhIGRlZmF1bHQgY29s
b3IuCi1URVNUX1AoVGV4dHVyZTJEVGVzdCwgVGV4U3RvcmFnZVdpdGhQQk8pCi17Ci0gICAgaWYg
KGV4dGVuc2lvbkVuYWJsZWQoIk5WX3BpeGVsX2J1ZmZlcl9vYmplY3QiKSkKLSAgICB7Ci0gICAg
ICAgIGludCB3aWR0aCA9IGdldFdpbmRvd1dpZHRoKCk7Ci0gICAgICAgIGludCBoZWlnaHQgPSBn
ZXRXaW5kb3dIZWlnaHQoKTsKLQotICAgICAgICBHTHVpbnQgdGV4MkQ7Ci0gICAgICAgIGdsR2Vu
VGV4dHVyZXMoMSwgJnRleDJEKTsKLSAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUw
KTsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXgyRCk7Ci0KLSAgICAg
ICAgLy8gRmlsbCB3aXRoIHJlZAotICAgICAgICBzdGQ6OnZlY3RvcjxHTHVieXRlPiBwaXhlbHMo
MyAqIDE2ICogMTYpOwotICAgICAgICBmb3IgKHNpemVfdCBwaXhlbElkID0gMDsgcGl4ZWxJZCA8
IDE2ICogMTY7ICsrcGl4ZWxJZCkKLSAgICAgICAgewotICAgICAgICAgICAgcGl4ZWxzW3BpeGVs
SWQgKiAzICsgMF0gPSAyNTU7Ci0gICAgICAgICAgICBwaXhlbHNbcGl4ZWxJZCAqIDMgKyAxXSA9
IDA7Ci0gICAgICAgICAgICBwaXhlbHNbcGl4ZWxJZCAqIDMgKyAyXSA9IDA7Ci0gICAgICAgIH0K
LQotICAgICAgICAvLyBSZWFkIDE2eDE2IHJlZ2lvbiBmcm9tIHJlZCBiYWNrYnVmZmVyIHRvIFBC
TwotICAgICAgICBHTHVpbnQgcGJvOwotICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJnBibyk7Ci0g
ICAgICAgIGdsQmluZEJ1ZmZlcihHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCBwYm8pOwotICAgICAg
ICBnbEJ1ZmZlckRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMyAqIDE2ICogMTYsIHBpeGVs
cy5kYXRhKCksIEdMX1NUQVRJQ19EUkFXKTsKLQotICAgICAgICAvLyBBTkdMRSBpbnRlcm5hbGx5
IHVzZXMgUkdCQSBhcyB0aGUgRGlyZWN0WCBmb3JtYXQgZm9yIFJHQiBpbWFnZXMKLSAgICAgICAg
Ly8gdGhlcmVmb3JlIGdsVGV4U3RvcmFnZTJERVhUIGluaXRpYWxpemVzIHRoZSBpbWFnZSB0byBh
IGRlZmF1bHQgY29sb3IgdG8gZ2V0IGEgY29uc2lzdGVudCBhbHBoYSBjb2xvci4KLSAgICAgICAg
Ly8gVGhlIGRhdGEgaXMga2VwdCBpbiBhIENQVS1zaWRlIGltYWdlIGFuZCB0aGUgaW1hZ2UgaXMg
bWFya2VkIGFzIGRpcnR5LgotICAgICAgICBnbFRleFN0b3JhZ2UyREVYVChHTF9URVhUVVJFXzJE
LCAxLCBHTF9SR0I4LCAxNiwgMTYpOwotCi0gICAgICAgIC8vIEluaXRpYWxpemVzIHRoZSBjb2xv
ciBvZiB0aGUgdXBwZXItbGVmdCA4eDggcGl4ZWxzLCBsZWF2ZXMgdGhlIG90aGVyIHBpeGVscyB1
bnRvdWNoZWQuCi0gICAgICAgIC8vIGdsVGV4U3ViSW1hZ2UyRCBzaG91bGQgdGFrZSBpbnRvIGFj
Y291bnQgdGhhdCB0aGUgaW1hZ2UgaXMgZGlydHkuCi0gICAgICAgIGdsVGV4U3ViSW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwLCAwLCAwLCA4LCA4LCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUsIE5V
TEwpOwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9N
SU5fRklMVEVSLCBHTF9MSU5FQVIpOwotICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotCi0gICAgICAgIHNldFVw
UHJvZ3JhbSgpOwotCi0gICAgICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgICAgIGds
VW5pZm9ybTFpKG1UZXh0dXJlMkRVbmlmb3JtTG9jYXRpb24sIDApOwotICAgICAgICBkcmF3UXVh
ZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMo
MSwgJnRleDJEKTsKLSAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZwYm8pOwotICAgICAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDMgKiB3aWR0aCAv
IDQsIDMgKiBoZWlnaHQgLyA0LCAwLCAwLCAwLCAyNTUpOwotICAgICAgICBFWFBFQ1RfUElYRUxf
RVEod2lkdGggLyA0LCBoZWlnaHQgLyA0LCAyNTUsIDAsIDAsIDI1NSk7Ci0gICAgfQotfQotCi0v
LyBTZWUgZGVzY3JpcHRpb24gb24gdGVzdEZsb2F0Q29weVN1YkltYWdlCi1URVNUX1AoVGV4dHVy
ZTJEVGVzdCwgQ29weVN1YkltYWdlRmxvYXRfUl9SKQotewotICAgIHRlc3RGbG9hdENvcHlTdWJJ
bWFnZSgxLCAxKTsKLX0KLQotVEVTVF9QKFRleHR1cmUyRFRlc3QsIENvcHlTdWJJbWFnZUZsb2F0
X1JHX1IpCi17Ci0gICAgdGVzdEZsb2F0Q29weVN1YkltYWdlKDIsIDEpOwotfQotCi1URVNUX1Ao
VGV4dHVyZTJEVGVzdCwgQ29weVN1YkltYWdlRmxvYXRfUkdfUkcpCi17Ci0gICAgdGVzdEZsb2F0
Q29weVN1YkltYWdlKDIsIDIpOwotfQotCi1URVNUX1AoVGV4dHVyZTJEVGVzdCwgQ29weVN1Yklt
YWdlRmxvYXRfUkdCX1IpCi17Ci0gICAgaWYgKElzSW50ZWwoKSAmJiBJc0xpbnV4KCkpCi0gICAg
ewotICAgICAgICAvLyBUT0RPKGN3YWxsZXopOiBGaXggb24gTGludXggSW50ZWwgZHJpdmVycyAo
aHR0cDovL2FuZ2xlYnVnLmNvbS8xMzQ2KQotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlz
YWJsZWQgb24gTGludXggSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgdGVzdEZsb2F0Q29weVN1YkltYWdlKDMsIDEpOwotfQotCi1URVNU
X1AoVGV4dHVyZTJEVGVzdCwgQ29weVN1YkltYWdlRmxvYXRfUkdCX1JHKQotewotICAgIGlmIChJ
c0ludGVsKCkgJiYgSXNMaW51eCgpKQotICAgIHsKLSAgICAgICAgLy8gVE9ETyhjd2FsbGV6KTog
Rml4IG9uIExpbnV4IEludGVsIGRyaXZlcnMgKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTM0NikKLSAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIExpbnV4IEludGVsIE9wZW5HTC4i
IDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHRlc3RGbG9hdENv
cHlTdWJJbWFnZSgzLCAyKTsKLX0KLQotVEVTVF9QKFRleHR1cmUyRFRlc3QsIENvcHlTdWJJbWFn
ZUZsb2F0X1JHQl9SR0IpCi17Ci0gICAgaWYgKElzSW50ZWwoKSAmJiBJc0xpbnV4KCkpCi0gICAg
ewotICAgICAgICAvLyBUT0RPKGN3YWxsZXopOiBGaXggb24gTGludXggSW50ZWwgZHJpdmVycyAo
aHR0cDovL2FuZ2xlYnVnLmNvbS8xMzQ2KQotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3QgZGlz
YWJsZWQgb24gTGludXggSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgLy8gVE9ETyAoYnVnIDEyODQpOiBJbnZlc3RpZ2F0ZSBSR0JBMzJm
IEQzRCBTREsgTGF5ZXJzIG1lc3NhZ2VzIG9uIEQzRDExX0ZMOV8zCi0gICAgaWYgKElzRDNEMTFf
Rkw5MygpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gRmVh
dHVyZSBMZXZlbCA5XzMuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICB0ZXN0RmxvYXRDb3B5U3ViSW1hZ2UoMywgMyk7Ci19Ci0KLVRFU1RfUChUZXh0dXJlMkRU
ZXN0LCBDb3B5U3ViSW1hZ2VGbG9hdF9SR0JBX1IpCi17Ci0gICAgdGVzdEZsb2F0Q29weVN1Yklt
YWdlKDQsIDEpOwotfQotCi1URVNUX1AoVGV4dHVyZTJEVGVzdCwgQ29weVN1YkltYWdlRmxvYXRf
UkdCQV9SRykKLXsKLSAgICB0ZXN0RmxvYXRDb3B5U3ViSW1hZ2UoNCwgMik7Ci19Ci0KLVRFU1Rf
UChUZXh0dXJlMkRUZXN0LCBDb3B5U3ViSW1hZ2VGbG9hdF9SR0JBX1JHQikKLXsKLSAgICAvLyBU
T0RPIChidWcgMTI4NCk6IEludmVzdGlnYXRlIFJHQkEzMmYgRDNEIFNESyBMYXllcnMgbWVzc2Fn
ZXMgb24gRDNEMTFfRkw5XzMKLSAgICBpZiAoSXNEM0QxMV9GTDkzKCkpCi0gICAgewotICAgICAg
ICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBGZWF0dXJlIExldmVsIDlfMy4iIDw8IHN0
ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHRlc3RGbG9hdENvcHlTdWJJ
bWFnZSg0LCAzKTsKLX0KLQotVEVTVF9QKFRleHR1cmUyRFRlc3QsIENvcHlTdWJJbWFnZUZsb2F0
X1JHQkFfUkdCQSkKLXsKLSAgICAvLyBUT0RPIChidWcgMTI4NCk6IEludmVzdGlnYXRlIFJHQkEz
MmYgRDNEIFNESyBMYXllcnMgbWVzc2FnZXMgb24gRDNEMTFfRkw5XzMKLSAgICBpZiAoSXNEM0Qx
MV9GTDkzKCkpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBG
ZWF0dXJlIExldmVsIDlfMy4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIHRlc3RGbG9hdENvcHlTdWJJbWFnZSg0LCA0KTsKLX0KLQotLy8gUG9ydCBvZiBodHRw
czovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS93ZWJnbC9jb25mb3JtYW5jZS1zdWl0ZXMvMS4w
LjMvY29uZm9ybWFuY2UvdGV4dHVyZXMvdGV4dHVyZS1ucG90Lmh0bWwKLS8vIFJ1biBhZ2FpbnN0
IEdMX0FMUEhBL1VOU0lHTkVEX0JZVEUgZm9ybWF0LCB0byBlbnN1cmUgdGhhdCBEM0QxMSBGZWF0
dXJlIExldmVsIDlfMyBjb3JyZWN0bHkgaGFuZGxlcyBHTF9BTFBIQQotVEVTVF9QKFRleHR1cmUy
RFRlc3QsIFRleHR1cmVOUE9UX0dMX0FMUEhBX1VCWVRFKQotewotICAgIGNvbnN0IGludCBucG90
VGV4U2l6ZSA9IDU7Ci0gICAgY29uc3QgaW50IHBvdFRleFNpemUgPSA0OyAvLyBTaG91bGQgYmUg
bGVzcyB0aGFuIG5wb3RUZXhTaXplCi0gICAgR0x1aW50IHRleDJEOwotCi0gICAgaWYgKGV4dGVu
c2lvbkVuYWJsZWQoIkdMX09FU190ZXh0dXJlX25wb3QiKSkKLSAgICB7Ci0gICAgICAgIC8vIFRo
aXMgdGVzdCBpc24ndCBhcHBsaWNhYmxlIGlmIHRleHR1cmVfbnBvdCBpcyBlbmFibGVkCi0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzZXRVcFByb2dyYW0oKTsKLQotICAgIGdsQ2xlYXJD
b2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKLQotICAgIC8vIERlZmF1bHQgdW5wYWNrIGFs
aWdubWVudCBpcyA0LiBUaGUgdmFsdWVzIG9mICdwaXhlbHMnIGJlbG93IG5lZWRzIGl0IHRvIGJl
IDEuCi0gICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfQUxJR05NRU5ULCAxKTsKLQotICAgIGds
QWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Ci0gICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4MkQp
OwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4MkQpOwotCi0gICAgc3RkOjp2
ZWN0b3I8R0x1Ynl0ZT4gcGl4ZWxzKDEgKiBucG90VGV4U2l6ZSAqIG5wb3RUZXhTaXplKTsKLSAg
ICBmb3IgKHNpemVfdCBwaXhlbElkID0gMDsgcGl4ZWxJZCA8IG5wb3RUZXhTaXplICogbnBvdFRl
eFNpemU7ICsrcGl4ZWxJZCkKLSAgICB7Ci0gICAgICAgIHBpeGVsc1twaXhlbElkXSA9IDY0Owot
ICAgIH0KLQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01J
Tl9GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLQotICAgIC8vIENoZWNrIHRoYXQg
YW4gTlBPVCB0ZXh0dXJlIG5vdCBvbiBsZXZlbCAwIGdlbmVyYXRlcyBJTlZBTElEX1ZBTFVFCi0g
ICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDEsIEdMX0FMUEhBLCBucG90VGV4U2l6ZSwg
bnBvdFRleFNpemUsIDAsIEdMX0FMUEhBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHMuZGF0YSgp
KTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9WQUxVRSk7Ci0KLSAgICAvLyBDaGVj
ayB0aGF0IGFuIE5QT1QgdGV4dHVyZSBvbiBsZXZlbCAwIHN1Y2NlZWRzCi0gICAgZ2xUZXhJbWFn
ZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX0FMUEhBLCBucG90VGV4U2l6ZSwgbnBvdFRleFNpemUs
IDAsIEdMX0FMUEhBLCBHTF9VTlNJR05FRF9CWVRFLCBwaXhlbHMuZGF0YSgpKTsKLSAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIENoZWNrIHRoYXQgZ2VuZXJhdGVNaXBtYXAgZmFp
bHMgb24gTlBPVAotICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8yRCk7Ci0gICAgRVhQ
RUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLQotICAgIC8vIENoZWNrIHRoYXQg
bm90aGluZyBpcyBkcmF3biBpZiBmaWx0ZXJpbmcgaXMgbm90IGNvcnJlY3QgZm9yIE5QT1QKLSAg
ICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBH
TF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX1JFUEVBVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9SRVBFQVQpOwotICAgIGdsQ2xl
YXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlv
biIsIDEuMGYpOwotICAgIEVYUEVDVF9QSVhFTF9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0
V2luZG93SGVpZ2h0KCkgLyAyLCAwLCAwLCAwLCAyNTUpOwotCi0gICAgLy8gTlBPVCB0ZXh0dXJl
IHdpdGggVEVYVFVSRV9NSU5fRklMVEVSIG5vdCBORUFSRVNUIG9yIExJTkVBUiBzaG91bGQgZHJh
dyB3aXRoIDAsMCwwLDI1NQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9U
RVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9O
RUFSRVNUX01JUE1BUF9MSU5FQVIpOwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7
Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDEuMGYpOwotICAgIEVYUEVDVF9Q
SVhFTF9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCAwLCAw
LCAwLCAyNTUpOwotCi0gICAgLy8gTlBPVCB0ZXh0dXJlIHdpdGggVEVYVFVSRV9NSU5fRklMVEVS
IHNldCB0byBMSU5FQVIgc2hvdWxkIGRyYXcKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOwotICAgIGdsQ2xlYXIoR0xf
Q09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDEu
MGYpOwotICAgIEVYUEVDVF9QSVhFTF9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93
SGVpZ2h0KCkgLyAyLCAwLCAwLCAwLCA2NCk7Ci0KLSAgICAvLyBDaGVjayB0aGF0IGdsVGV4SW1h
Z2UyRCBmb3IgUE9UIHRleHR1cmUgc3VjY2VlZHMKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgR0xfQUxQSEEsIHBvdFRleFNpemUsIHBvdFRleFNpemUsIDAsIEdMX0FMUEhBLCBH
TF9VTlNJR05FRF9CWVRFLCBwaXhlbHMuZGF0YSgpKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1Io
KTsKLQotICAgIC8vIENoZWNrIHRoYXQgZ2VuZXJhdGVNaXBtYXAgZm9yIGFuIFBPVCB0ZXh0dXJl
IHN1Y2NlZWRzCi0gICAgZ2xHZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFXzJEKTsKLSAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFBPVCB0ZXh0dXJlIHdpdGggVEVYVFVSRV9NSU5f
RklMVEVSIHNldCB0byBMSU5FQVJfTUlQTUFQX0xJTkVBUiBzaG91bGQgZHJhdwotICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVB
Ul9NSVBNQVBfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfUkVQRUFUKTsKLSAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX1JFUEVBVCk7Ci0gICAg
Z2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBv
c2l0aW9uIiwgMS4wZik7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKGdldFdpbmRvd1dpZHRoKCkgLyAy
LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDAsIDAsIDAsIDY0KTsKLSAgICBFWFBFQ1RfR0xfTk9f
RVJST1IoKTsKLX0KLQotLy8gVGVzdCB0byBlbnN1cmUgdGhhdCBnbFRleFN1YkltYWdlMkQgYWx3
YXlzIGFjY2VwdHMgZGF0YSBmb3Igbm9uLXBvd2VyLW9mLXR3byBzdWJyZWdpb25zLgotLy8gQU5H
TEUgcHJldmlvdXNseSByZWplY3RlZCB0aGlzIGlmIEdMX09FU190ZXh0dXJlX25wb3Qgd2Fzbid0
IGFjdGl2ZSwgd2hpY2ggaXMgaW5jb3JyZWN0LgotVEVTVF9QKFRleHR1cmUyRFRlc3QsIE5QT1RT
dWJJbWFnZVBhcmFtZXRlcnMpCi17Ci0gICAgLy8gVE9ETyhnZW9mZmxhbmcpOiBBbGxvdyB0aGUg
R0wgYmFja2VuZCB0byBhY2NlcHQgU3ViSW1hZ2UgY2FsbHMgd2l0aCBhIG51bGwgZGF0YSBwdHIu
IChidWcKLSAgICAvLyAxMjc4KQotICAgIGlmIChnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdM
X1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFIHx8Ci0gICAgICAgIGdldFBsYXRmb3Jt
UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRSkKLSAg
ICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBPcGVuR0wuIiA8PCBz
dGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBnbEFjdGl2ZVRleHR1cmUo
R0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUy
RCk7Ci0KLSAgICAvLyBDcmVhdGUgYW4gOHg4IChpLmUuIHBvd2VyLW9mLXR3bykgdGV4dHVyZS4K
LSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgOCwgOCwgMCwgR0xf
UkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9ORUFS
RVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdf
RklMVEVSLCBHTF9MSU5FQVIpOwotICAgIGdsR2VuZXJhdGVNaXBtYXAoR0xfVEVYVFVSRV8yRCk7
Ci0KLSAgICAvLyBTdXBwbHkgYSAzeDMgKGkuZS4gbm9uLXBvd2VyLW9mLXR3bykgc3ViaW1hZ2Ug
dG8gdGhlIHRleHR1cmUuCi0gICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIHdvcmssIGV2ZW4gaWYg
R0xfT0VTX3RleHR1cmVfbnBvdCBpc24ndCBhY3RpdmUuCi0gICAgZ2xUZXhTdWJJbWFnZTJEKEdM
X1RFWFRVUkVfMkQsIDEsIDAsIDAsIDMsIDMsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIG51
bGxwdHIpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRlc3QgdG8gY2hl
Y2sgdGhhdCB0ZXh0dXJlIGNvbXBsZXRlbmVzcyBpcyBkZXRlcm1pbmVkIGNvcnJlY3RseSB3aGVu
IHRoZSB0ZXh0dXJlIGJhc2UgbGV2ZWwgaXMKLS8vIGdyZWF0ZXIgdGhhbiAwLCBhbmQgYWxzbyB0
aGF0IGxldmVsIDAgaXMgbm90IHNhbXBsZWQgd2hlbiBiYXNlIGxldmVsIGlzIGdyZWF0ZXIgdGhh
biAwLgotVEVTVF9QKFRleHR1cmUyRFRlc3RFUzMsIERyYXdXaXRoQmFzZUxldmVsMSkKLXsKLSAg
ICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0KLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRh
UmVkKDR1ICogNHUsIEdMQ29sb3I6OnJlZCk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIEdMX1JHQkEsIDQsIDQsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIHRleERh
dGFSZWQuZGF0YSgpKTsKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRhR3JlZW4oMnUg
KiAydSwgR0xDb2xvcjo6Z3JlZW4pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAx
LCBHTF9SR0JBLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAg
ICAgICAgICB0ZXhEYXRhR3JlZW4uZGF0YSgpKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMiwgR0xfUkdCQSwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAg
ICAgICAgICAgICAgICAgdGV4RGF0YUdyZWVuLmRhdGEoKSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9M
SU5FQVJfTUlQTUFQX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
LQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEVYUEVD
VF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7Ci19Ci0KLS8vIFRlc3QgdGhh
dCBkcmF3aW5nIHdvcmtzIGNvcnJlY3RseSB3aGVuIGxldmVscyBvdXRzaWRlIHRoZSBCQVNFX0xF
VkVML01BWF9MRVZFTCByYW5nZSBkbyBub3QKLS8vIGhhdmUgaW1hZ2VzIGRlZmluZWQuCi1URVNU
X1AoVGV4dHVyZTJEVGVzdEVTMywgRHJhd1dpdGhMZXZlbHNPdXRzaWRlUmFuZ2VVbmRlZmluZWQp
Ci17Ci0gICAgaWYgKElzQU1EKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0gICAgICAgIC8vIE9ic2VydmVk
IGNyYXNoaW5nIG9uIEFNRC4gT2RkbHkgdGhlIGNyYXNoIG9ubHkgaGFwcGVucyB3aXRoIDJEIHRl
eHR1cmVzLCBub3QgM0Qgb3IgYXJyYXkuCi0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIG9uIEFNRCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgaWYgKElzT1NYKCkpCi0gICAgewotICAgICAgICAvLyBPYnNlcnZlZCBpbmNvcnJlY3Qg
cmVuZGVyaW5nIG9uIE9TWC4KLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24g
T1NYLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGdsQWN0aXZl
VGV4dHVyZShHTF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBt
VGV4dHVyZTJEKTsKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRhR3JlZW4oMnUgKiAy
dSwgR0xDb2xvcjo6Z3JlZW4pOwotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAxLCBH
TF9SR0JBOCwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAg
ICAgICAgdGV4RGF0YUdyZWVuLmRhdGEoKSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQ
TUFQX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfQkFTRV9MRVZFTCwgMSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfTUFYX0xFVkVMLCAxKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0g
ICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgRVhQRUNUX1BJ
WEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKLX0KLQotLy8gVGVzdCB0aGF0IGRy
YXdpbmcgd29ya3MgY29ycmVjdGx5IHdoZW4gbGV2ZWwgMCBpcyB1bmRlZmluZWQgYW5kIGJhc2Ug
bGV2ZWwgaXMgMS4KLVRFU1RfUChUZXh0dXJlMkRUZXN0RVMzLCBEcmF3V2l0aExldmVsWmVyb1Vu
ZGVmaW5lZCkKLXsKLSAgICBpZiAoSXNBTUQoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0g
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQotICAgIHsKLSAgICAgICAgLy8g
T2JzZXJ2ZWQgY3Jhc2hpbmcgb24gQU1ELiBPZGRseSB0aGUgY3Jhc2ggb25seSBoYXBwZW5zIHdp
dGggMkQgdGV4dHVyZXMsIG5vdCAzRCBvciBhcnJheS4KLSAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IHNraXBwZWQgb24gQU1EIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBpZiAoSXNPU1goKSkKLSAgICB7Ci0gICAgICAgIC8vIE9ic2VydmVkIGlu
Y29ycmVjdCByZW5kZXJpbmcgb24gT1NYLgotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBvbiBPU1guIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Z2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlMkQpOwotICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHRleERhdGFHcmVl
bigydSAqIDJ1LCBHTENvbG9yOjpncmVlbik7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDEsIEdMX1JHQkE4LCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAg
ICAgICAgICAgICAgICB0ZXhEYXRhR3JlZW4uZGF0YSgpKTsKLSAgICBnbFRleFBhcmFtZXRlcmko
R0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJ
TkVBUl9NSVBNQVBfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAxKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDIpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICAvLyBUZXh0dXJlIGlzIGluY29tcGxldGUuCi0gICAgZHJhd1F1YWQobVByb2dy
YW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBH
TENvbG9yOjpibGFjayk7Ci0KLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMiwgR0xf
UkdCQTgsIDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAg
ICAgIHRleERhdGFHcmVlbi5kYXRhKCkpOwotCi0gICAgLy8gVGV4dHVyZSBpcyBub3cgY29tcGxl
dGUuCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVD
VF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7Ci19Ci0KLS8vIFRlc3QgdGhh
dCBkcmF3aW5nIHdvcmtzIGNvcnJlY3RseSB3aGVuIGxldmVscyBvdXRzaWRlIHRoZSBCQVNFX0xF
VkVML01BWF9MRVZFTCByYW5nZSBoYXZlCi0vLyBkaW1lbnNpb25zIHRoYXQgZG9uJ3QgZml0IHRo
ZSBpbWFnZXMgaW5zaWRlIHRoZSByYW5nZS4KLS8vIEdMRVMgMy4wLjQgc2VjdGlvbiAzLjguMTMg
VGV4dHVyZSBjb21wbGV0ZW5lc3MKLVRFU1RfUChUZXh0dXJlMkRUZXN0RVMzLCBEcmF3V2l0aExl
dmVsc091dHNpZGVSYW5nZVdpdGhJbmNvbnNpc3RlbnREaW1lbnNpb25zKQotewotICAgIGlmIChJ
c09TWCgpKQotICAgIHsKLSAgICAgICAgLy8gT2JzZXJ2ZWQgaW5jb3JyZWN0IHJlbmRlcmluZyBv
biBPU1guCi0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIE9TWC4iIDw8IHN0
ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xf
VEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7
Ci0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YVJlZCg4dSAqIDh1LCBHTENvbG9yOjpy
ZWQpOwotICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHRleERhdGFHcmVlbigydSAqIDJ1LCBHTENv
bG9yOjpncmVlbik7Ci0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YUN5YW4oMnUgKiAy
dSwgR0xDb2xvcjo6Y3lhbik7Ci0KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTElO
RUFSKTsKLQotICAgIC8vIFR3byBsZXZlbHMgdGhhdCBhcmUgaW5pdGlhbGx5IHVudXNlZC4KLSAg
ICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTgsIDgsIDgsIDAsIEdMX1JH
QkEsIEdMX1VOU0lHTkVEX0JZVEUsIHRleERhdGFSZWQuZGF0YSgpKTsKLSAgICBnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMiwgR0xfUkdCQTgsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lH
TkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgIHRleERhdGFDeWFuLmRhdGEoKSk7Ci0KLSAgICAv
LyBPbmUgbGV2ZWwgdGhhdCBpcyB1c2VkIC0gb25seSB0aGlzIGxldmVsIHNob3VsZCBhZmZlY3Qg
Y29tcGxldGVuZXNzLgotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAxLCBHTF9SR0JB
OCwgMiwgMiwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAgICAgICAg
dGV4RGF0YUdyZWVuLmRhdGEoKSk7Ci0KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAxKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDEpOwotCi0gICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAg
ICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOwotCi0gICAgaWYg
KElzSW50ZWwoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfT1BFTkdMX0FOR0xFKQotICAgIHsKLSAgICAgICAgLy8gSW50ZWwgd2FzIG9ic2VydmVk
IGRyYXdpbmcgY29sb3IgMCwwLDAsMCBpbnN0ZWFkIG9mIHRoZSB0ZXh0dXJlIGNvbG9yIGFmdGVy
IHRoZSBiYXNlCi0gICAgICAgIC8vIGxldmVsIHdhcyBjaGFuZ2VkLgotICAgICAgICBzdGQ6OmNv
dXQgPDwgIlRlc3QgcGFydGlhbGx5IHNraXBwZWQgb24gSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjpl
bmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gU3dpdGNoIHRoZSBsZXZlbCB0
aGF0IGlzIGJlaW5nIHVzZWQgdG8gdGhlIGN5YW4gbGV2ZWwgMi4KLSAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAyKTsKLSAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDIpOwotCi0gICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9u
IiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Y3lh
bik7Ci19Ci0KLS8vIFRlc3QgdGhhdCBkcmF3aW5nIHdvcmtzIGNvcnJlY3RseSB3aGVuIGxldmVs
cyBvdXRzaWRlIHRoZSBCQVNFX0xFVkVML01BWF9MRVZFTCByYW5nZSBkbyBub3QKLS8vIGhhdmUg
aW1hZ2VzIGRlZmluZWQuCi1URVNUX1AoVGV4dHVyZTNEVGVzdEVTMywgRHJhd1dpdGhMZXZlbHNP
dXRzaWRlUmFuZ2VVbmRlZmluZWQpCi17Ci0gICAgaWYgKElzT1NYKCkpCi0gICAgewotICAgICAg
ICAvLyBPYnNlcnZlZCBpbmNvcnJlY3QgcmVuZGVyaW5nIG9uIE9TWC4KLSAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgb24gT1NYLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzNELCBtVGV4dHVyZTNEKTsKLSAgICBzdGQ6OnZlY3RvcjxHTENv
bG9yPiB0ZXhEYXRhR3JlZW4oMnUgKiAydSAqIDJ1LCBHTENvbG9yOjpncmVlbik7Ci0gICAgZ2xU
ZXhJbWFnZTNEKEdMX1RFWFRVUkVfM0QsIDEsIEdMX1JHQkE4LCAyLCAyLCAyLCAwLCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICB0ZXhEYXRhR3JlZW4uZGF0YSgp
KTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8zRCwgR0xfVEVYVFVSRV9NQUdfRklM
VEVSLCBHTF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzNELCBHTF9U
RVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUl9NSVBNQVBfTElORUFSKTsKLSAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8zRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAxKTsKLSAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8zRCwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDEpOwot
Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBv
c2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xv
cjo6Z3JlZW4pOwotfQotCi0vLyBUZXN0IHRoYXQgZHJhd2luZyB3b3JrcyBjb3JyZWN0bHkgd2hl
biBsZXZlbHMgb3V0c2lkZSB0aGUgQkFTRV9MRVZFTC9NQVhfTEVWRUwgcmFuZ2UgaGF2ZQotLy8g
ZGltZW5zaW9ucyB0aGF0IGRvbid0IGZpdCB0aGUgaW1hZ2VzIGluc2lkZSB0aGUgcmFuZ2UuCi0v
LyBHTEVTIDMuMC40IHNlY3Rpb24gMy44LjEzIFRleHR1cmUgY29tcGxldGVuZXNzCi1URVNUX1Ao
VGV4dHVyZTNEVGVzdEVTMywgRHJhd1dpdGhMZXZlbHNPdXRzaWRlUmFuZ2VXaXRoSW5jb25zaXN0
ZW50RGltZW5zaW9ucykKLXsKLSAgICBpZiAoSXNPU1goKSkKLSAgICB7Ci0gICAgICAgIC8vIE9i
c2VydmVkIGluY29ycmVjdCByZW5kZXJpbmcgb24gT1NYLgotICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3Qgc2tpcHBlZCBvbiBPU1guIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfM0QsIG1UZXh0dXJlM0QpOwotICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHRl
eERhdGFSZWQoOHUgKiA4dSAqIDh1LCBHTENvbG9yOjpyZWQpOwotICAgIHN0ZDo6dmVjdG9yPEdM
Q29sb3I+IHRleERhdGFHcmVlbigydSAqIDJ1ICogMnUsIEdMQ29sb3I6OmdyZWVuKTsKLSAgICBz
dGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRhQ3lhbigydSAqIDJ1ICogMnUsIEdMQ29sb3I6OmN5
YW4pOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfTUFH
X0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8zRCwg
R0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUik7Ci0KLSAgICAv
LyBUd28gbGV2ZWxzIHRoYXQgYXJlIGluaXRpYWxseSB1bnVzZWQuCi0gICAgZ2xUZXhJbWFnZTNE
KEdMX1RFWFRVUkVfM0QsIDAsIEdMX1JHQkE4LCA4LCA4LCA4LCAwLCBHTF9SR0JBLCBHTF9VTlNJ
R05FRF9CWVRFLAotICAgICAgICAgICAgICAgICB0ZXhEYXRhUmVkLmRhdGEoKSk7Ci0gICAgZ2xU
ZXhJbWFnZTNEKEdMX1RFWFRVUkVfM0QsIDIsIEdMX1JHQkE4LCAyLCAyLCAyLCAwLCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICB0ZXhEYXRhQ3lhbi5kYXRhKCkp
OwotCi0gICAgLy8gT25lIGxldmVsIHRoYXQgaXMgdXNlZCAtIG9ubHkgdGhpcyBsZXZlbCBzaG91
bGQgYWZmZWN0IGNvbXBsZXRlbmVzcy4KLSAgICBnbFRleEltYWdlM0QoR0xfVEVYVFVSRV8zRCwg
MSwgR0xfUkdCQTgsIDIsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAg
ICAgICAgICAgICAgIHRleERhdGFHcmVlbi5kYXRhKCkpOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMSk7Ci0gICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAxKTsKLQotICAgIEVY
UEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIs
IDAuNWYpOwotCi0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVu
KTsKLQotICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9Q
TEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0gICAgICAgIC8vIEludGVs
IHdhcyBvYnNlcnZlZCBkcmF3aW5nIGNvbG9yIDAsMCwwLDAgaW5zdGVhZCBvZiB0aGUgdGV4dHVy
ZSBjb2xvciBhZnRlciB0aGUgYmFzZQotICAgICAgICAvLyBsZXZlbCB3YXMgY2hhbmdlZC4KLSAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHBhcnRpYWxseSBza2lwcGVkIG9uIEludGVsIE9wZW5H
TC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIFN3aXRj
aCB0aGUgbGV2ZWwgdGhhdCBpcyBiZWluZyB1c2VkIHRvIHRoZSBjeWFuIGxldmVsIDIuCi0gICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMik7
Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfTUFYX0xFVkVM
LCAyKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZHJhd1F1YWQobVByb2dy
YW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAs
IEdMQ29sb3I6OmN5YW4pOwotfQotCi0vLyBUZXN0IHRoYXQgZHJhd2luZyB3b3JrcyBjb3JyZWN0
bHkgd2hlbiBsZXZlbHMgb3V0c2lkZSB0aGUgQkFTRV9MRVZFTC9NQVhfTEVWRUwgcmFuZ2UgZG8g
bm90Ci0vLyBoYXZlIGltYWdlcyBkZWZpbmVkLgotVEVTVF9QKFRleHR1cmUyREFycmF5VGVzdEVT
MywgRHJhd1dpdGhMZXZlbHNPdXRzaWRlUmFuZ2VVbmRlZmluZWQpCi17Ci0gICAgaWYgKElzT1NY
KCkpCi0gICAgewotICAgICAgICAvLyBPYnNlcnZlZCBpbmNvcnJlY3QgcmVuZGVyaW5nIG9uIE9T
WC4KLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gT1NYLiIgPDwgc3RkOjpl
bmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhU
VVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJEX0FSUkFZLCBtMkRBcnJheVRl
eHR1cmUpOwotICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHRleERhdGFHcmVlbigydSAqIDJ1ICog
MnUsIEdMQ29sb3I6OmdyZWVuKTsKLSAgICBnbFRleEltYWdlM0QoR0xfVEVYVFVSRV8yRF9BUlJB
WSwgMSwgR0xfUkdCQTgsIDIsIDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0g
ICAgICAgICAgICAgICAgIHRleERhdGFHcmVlbi5kYXRhKCkpOwotICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJEX0FSUkFZLCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7
Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkRfQVJSQVksIEdMX1RFWFRVUkVfTUlO
X0ZJTFRFUiwgR0xfTElORUFSX01JUE1BUF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJEX0FSUkFZLCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDEpOwotICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJEX0FSUkFZLCBHTF9URVhUVVJFX01BWF9MRVZFTCwgMSk7
Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAi
cG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENv
bG9yOjpncmVlbik7Ci19Ci0KLS8vIFRlc3QgdGhhdCBkcmF3aW5nIHdvcmtzIGNvcnJlY3RseSB3
aGVuIGxldmVscyBvdXRzaWRlIHRoZSBCQVNFX0xFVkVML01BWF9MRVZFTCByYW5nZSBoYXZlCi0v
LyBkaW1lbnNpb25zIHRoYXQgZG9uJ3QgZml0IHRoZSBpbWFnZXMgaW5zaWRlIHRoZSByYW5nZS4K
LS8vIEdMRVMgMy4wLjQgc2VjdGlvbiAzLjguMTMgVGV4dHVyZSBjb21wbGV0ZW5lc3MKLVRFU1Rf
UChUZXh0dXJlMkRBcnJheVRlc3RFUzMsIERyYXdXaXRoTGV2ZWxzT3V0c2lkZVJhbmdlV2l0aElu
Y29uc2lzdGVudERpbWVuc2lvbnMpCi17Ci0gICAgaWYgKElzT1NYKCkpCi0gICAgewotICAgICAg
ICAvLyBPYnNlcnZlZCBpbmNvcnJlY3QgcmVuZGVyaW5nIG9uIE9TWC4KLSAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgb24gT1NYLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzNELCBtMkRBcnJheVRleHR1cmUpOwotICAgIHN0ZDo6dmVjdG9y
PEdMQ29sb3I+IHRleERhdGFSZWQoOHUgKiA4dSAqIDh1LCBHTENvbG9yOjpyZWQpOwotICAgIHN0
ZDo6dmVjdG9yPEdMQ29sb3I+IHRleERhdGFHcmVlbigydSAqIDJ1ICogMnUsIEdMQ29sb3I6Omdy
ZWVuKTsKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRhQ3lhbigydSAqIDJ1ICogMnUs
IEdMQ29sb3I6OmN5YW4pOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkRfQVJS
QVksIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRl
cmkoR0xfVEVYVFVSRV8yRF9BUlJBWSwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJf
TUlQTUFQX0xJTkVBUik7Ci0KLSAgICAvLyBUd28gbGV2ZWxzIHRoYXQgYXJlIGluaXRpYWxseSB1
bnVzZWQuCi0gICAgZ2xUZXhJbWFnZTNEKEdMX1RFWFRVUkVfMkRfQVJSQVksIDAsIEdMX1JHQkE4
LCA4LCA4LCA4LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAg
ICB0ZXhEYXRhUmVkLmRhdGEoKSk7Ci0gICAgZ2xUZXhJbWFnZTNEKEdMX1RFWFRVUkVfMkRfQVJS
QVksIDIsIEdMX1JHQkE4LCAyLCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAot
ICAgICAgICAgICAgICAgICB0ZXhEYXRhQ3lhbi5kYXRhKCkpOwotCi0gICAgLy8gT25lIGxldmVs
IHRoYXQgaXMgdXNlZCAtIG9ubHkgdGhpcyBsZXZlbCBzaG91bGQgYWZmZWN0IGNvbXBsZXRlbmVz
cy4KLSAgICBnbFRleEltYWdlM0QoR0xfVEVYVFVSRV8yRF9BUlJBWSwgMSwgR0xfUkdCQTgsIDIs
IDIsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgIHRl
eERhdGFHcmVlbi5kYXRhKCkpOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkRf
QVJSQVksIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkRfQVJSQVksIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAxKTsKLQotICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOwotCi0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsK
LQotICAgIGlmIChJc0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0gICAgICAgIC8vIEludGVsIHdh
cyBvYnNlcnZlZCBkcmF3aW5nIGNvbG9yIDAsMCwwLDAgaW5zdGVhZCBvZiB0aGUgdGV4dHVyZSBj
b2xvciBhZnRlciB0aGUgYmFzZQotICAgICAgICAvLyBsZXZlbCB3YXMgY2hhbmdlZC4KLSAgICAg
ICAgc3RkOjpjb3V0IDw8ICJUZXN0IHBhcnRpYWxseSBza2lwcGVkIG9uIEludGVsIE9wZW5HTC4i
IDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoSXNOVklESUEo
KSAmJiAoZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09Q
RU5HTF9BTkdMRSB8fAotICAgICAgICAgICAgICAgICAgICAgICBnZXRQbGF0Zm9ybVJlbmRlcmVy
KCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMRVNfQU5HTEUpKQotICAgIHsKLSAg
ICAgICAgLy8gTlZJRElBIHdhcyBvYnNlcnZlZCBkcmF3aW5nIGNvbG9yIDAsMCwwLDAgaW5zdGVh
ZCBvZiB0aGUgdGV4dHVyZSBjb2xvciBhZnRlciB0aGUgYmFzZQotICAgICAgICAvLyBsZXZlbCB3
YXMgY2hhbmdlZC4KLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHBhcnRpYWxseSBza2lwcGVk
IG9uIE5WSURJQSBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICAvLyBTd2l0Y2ggdGhlIGxldmVsIHRoYXQgaXMgYmVpbmcgdXNlZCB0byB0aGUgY3lh
biBsZXZlbCAyLgotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJEX0FSUkFZLCBHTF9U
RVhUVVJFX0JBU0VfTEVWRUwsIDIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
X0FSUkFZLCBHTF9URVhUVVJFX01BWF9MRVZFTCwgMik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAg
IEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpjeWFuKTsKLX0KLQotLy8gVGVz
dCB0aGF0IHRleHR1cmUgY29tcGxldGVuZXNzIGlzIHVwZGF0ZWQgaWYgdGV4dHVyZSBtYXggbGV2
ZWwgY2hhbmdlcy4KLS8vIEdMRVMgMy4wLjQgc2VjdGlvbiAzLjguMTMgVGV4dHVyZSBjb21wbGV0
ZW5lc3MKLVRFU1RfUChUZXh0dXJlMkRUZXN0RVMzLCBUZXh0dXJlQ29tcGxldGVuZXNzQ2hhbmdl
c1dpdGhNYXhMZXZlbCkKLXsKLSAgICBpZiAoSXNJbnRlbCgpICYmIGdldFBsYXRmb3JtUmVuZGVy
ZXIoKSA9PSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCi0gICAgewotICAg
ICAgICAvLyBJbnRlbCB3YXMgb2JzZXJ2ZWQgaGF2aW5nIHdyb25nIGJlaGF2aW9yIGFmdGVyIHRo
ZSB0ZXh0dXJlIGlzIG1hZGUgaW5jb21wbGV0ZSBieSBjaGFuZ2luZwotICAgICAgICAvLyB0aGUg
YmFzZSBsZXZlbC4KLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwg
T3BlbkdMLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChJ
c09TWCgpKQotICAgIHsKLSAgICAgICAgLy8gT2JzZXJ2ZWQgaW5jb3JyZWN0IHJlbmRlcmluZyBv
biBPU1guCi0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIE9TWC4iIDw8IHN0
ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsQWN0aXZlVGV4dHVyZShH
TF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJE
KTsKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRhR3JlZW4oOHUgKiA4dSwgR0xDb2xv
cjo6Z3JlZW4pOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUik7Ci0K
LSAgICAvLyBBIGxldmVsIHRoYXQgaXMgaW5pdGlhbGx5IHVudXNlZC4KLSAgICBnbFRleEltYWdl
MkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQTgsIDgsIDgsIDAsIEdMX1JHQkEsIEdMX1VOU0lH
TkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgIHRleERhdGFHcmVlbi5kYXRhKCkpOwotCi0gICAg
Ly8gT25lIGxldmVsIHRoYXQgaXMgaW5pdGlhbGx5IHVzZWQgLSBvbmx5IHRoaXMgbGV2ZWwgc2hv
dWxkIGFmZmVjdCBjb21wbGV0ZW5lc3MuCi0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDAsIEdMX1JHQkE4LCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAg
ICAgICAgICAgICB0ZXhEYXRhR3JlZW4uZGF0YSgpKTsKLQotICAgIGdsVGV4UGFyYW1ldGVyaShH
TF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDApOwotICAgIGdsVGV4UGFyYW1l
dGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BWF9MRVZFTCwgMCk7Ci0KLSAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAw
LjVmKTsKLQotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7
Ci0KLSAgICAvLyBTd2l0Y2ggdGhlIG1heCBsZXZlbCB0byBsZXZlbCAxLiBUaGUgbGV2ZWxzIHdp
dGhpbiB0aGUgdXNlZCByYW5nZSBub3cgaGF2ZSBpbmNvbnNpc3RlbnQKLSAgICAvLyBkaW1lbnNp
b25zIGFuZCB0aGUgdGV4dHVyZSBzaG91bGQgYmUgaW5jb21wbGV0ZS4KLSAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDEpOwotCi0gICAgRVhQ
RUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwg
MC41Zik7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6YmxhY2sp
OwotfQotCi0vLyBUZXN0IHRoYXQgM0QgdGV4dHVyZSBjb21wbGV0ZW5lc3MgaXMgdXBkYXRlZCBp
ZiB0ZXh0dXJlIG1heCBsZXZlbCBjaGFuZ2VzLgotLy8gR0xFUyAzLjAuNCBzZWN0aW9uIDMuOC4x
MyBUZXh0dXJlIGNvbXBsZXRlbmVzcwotVEVTVF9QKFRleHR1cmUzRFRlc3RFUzMsIFRleHR1cmUz
RENvbXBsZXRlbmVzc0NoYW5nZXNXaXRoTWF4TGV2ZWwpCi17Ci0gICAgaWYgKElzSW50ZWwoKSAm
JiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdM
X0FOR0xFKQotICAgIHsKLSAgICAgICAgLy8gSW50ZWwgd2FzIG9ic2VydmVkIGhhdmluZyB3cm9u
ZyBiZWhhdmlvciBhZnRlciB0aGUgdGV4dHVyZSBpcyBtYWRlIGluY29tcGxldGUgYnkgY2hhbmdp
bmcKLSAgICAgICAgLy8gdGhlIGJhc2UgbGV2ZWwuCi0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVz
dCBza2lwcGVkIG9uIEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLSAgICBpZiAoSXNPU1goKSkKLSAgICB7Ci0gICAgICAgIC8vIE9ic2VydmVkIGlu
Y29ycmVjdCByZW5kZXJpbmcgb24gT1NYLgotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tp
cHBlZCBvbiBPU1guIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8zRCwgbVRleHR1cmUzRCk7Ci0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gdGV4RGF0YUdy
ZWVuKDJ1ICogMnUgKiAydSwgR0xDb2xvcjo6Z3JlZW4pOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfM0QsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8zRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9M
SU5FQVJfTUlQTUFQX0xJTkVBUik7Ci0KLSAgICAvLyBBIGxldmVsIHRoYXQgaXMgaW5pdGlhbGx5
IHVudXNlZC4KLSAgICBnbFRleEltYWdlM0QoR0xfVEVYVFVSRV8zRCwgMSwgR0xfUkdCQTgsIDEs
IDEsIDIsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgIHRl
eERhdGFHcmVlbi5kYXRhKCkpOwotCi0gICAgLy8gT25lIGxldmVsIHRoYXQgaXMgaW5pdGlhbGx5
IHVzZWQgLSBvbmx5IHRoaXMgbGV2ZWwgc2hvdWxkIGFmZmVjdCBjb21wbGV0ZW5lc3MuCi0gICAg
Z2xUZXhJbWFnZTNEKEdMX1RFWFRVUkVfM0QsIDAsIEdMX1JHQkE4LCAyLCAyLCAyLCAwLCBHTF9S
R0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICB0ZXhEYXRhR3JlZW4uZGF0
YSgpKTsKLQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzNELCBHTF9URVhUVVJFX0JB
U0VfTEVWRUwsIDApOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzNELCBHTF9URVhU
VVJFX01BWF9MRVZFTCwgMCk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGRy
YXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEVYUEVDVF9QSVhFTF9D
T0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7Ci0KLSAgICAvLyBTd2l0Y2ggdGhlIG1heCBs
ZXZlbCB0byBsZXZlbCAxLiBUaGUgbGV2ZWxzIHdpdGhpbiB0aGUgdXNlZCByYW5nZSBub3cgaGF2
ZSBpbmNvbnNpc3RlbnQKLSAgICAvLyBkaW1lbnNpb25zIGFuZCB0aGUgdGV4dHVyZSBzaG91bGQg
YmUgaW5jb21wbGV0ZS4KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8zRCwgR0xfVEVY
VFVSRV9NQVhfTEVWRUwsIDEpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBk
cmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfUElYRUxf
Q09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6YmxhY2spOwotfQotCi0vLyBUZXN0IHRoYXQgdGV4dHVy
ZSBjb21wbGV0ZW5lc3MgaXMgdXBkYXRlZCBpZiB0ZXh0dXJlIGJhc2UgbGV2ZWwgY2hhbmdlcy4K
LS8vIEdMRVMgMy4wLjQgc2VjdGlvbiAzLjguMTMgVGV4dHVyZSBjb21wbGV0ZW5lc3MKLVRFU1Rf
UChUZXh0dXJlMkRUZXN0RVMzLCBUZXh0dXJlQ29tcGxldGVuZXNzQ2hhbmdlc1dpdGhCYXNlTGV2
ZWwpCi17Ci0gICAgaWYgKElzSW50ZWwoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdM
X1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFKQotICAgIHsKLSAgICAgICAgLy8gSW50
ZWwgd2FzIG9ic2VydmVkIGhhdmluZyB3cm9uZyBiZWhhdmlvciBhZnRlciB0aGUgdGV4dHVyZSBp
cyBtYWRlIGluY29tcGxldGUgYnkgY2hhbmdpbmcKLSAgICAgICAgLy8gdGhlIGJhc2UgbGV2ZWwu
Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIE9wZW5HTC4iIDw8
IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsQWN0aXZlVGV4dHVy
ZShHTF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVy
ZTJEKTsKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRhR3JlZW4oOHUgKiA4dSwgR0xD
b2xvcjo6Z3JlZW4pOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUik7
Ci0KLSAgICAvLyBUd28gbGV2ZWxzIHRoYXQgYXJlIGluaXRpYWxseSB1bnVzZWQuCi0gICAgZ2xU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkE4LCA4LCA4LCAwLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICB0ZXhEYXRhR3JlZW4uZGF0YSgpKTsK
LSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQTgsIDIsIDIsIDAsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgIHRleERhdGFHcmVlbi5k
YXRhKCkpOwotCi0gICAgLy8gT25lIGxldmVsIHRoYXQgaXMgaW5pdGlhbGx5IHVzZWQgLSBvbmx5
IHRoaXMgbGV2ZWwgc2hvdWxkIGFmZmVjdCBjb21wbGV0ZW5lc3MuCi0gICAgZ2xUZXhJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDIsIEdMX1JHQkE4LCAyLCAyLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLAotICAgICAgICAgICAgICAgICB0ZXhEYXRhR3JlZW4uZGF0YSgpKTsKLQotICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDIpOwot
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BWF9MRVZFTCwg
Mik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFt
LCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBH
TENvbG9yOjpncmVlbik7Ci0KLSAgICAvLyBTd2l0Y2ggdGhlIGJhc2UgbGV2ZWwgdG8gbGV2ZWwg
MS4gVGhlIGxldmVscyB3aXRoaW4gdGhlIHVzZWQgcmFuZ2Ugbm93IGhhdmUgaW5jb25zaXN0ZW50
Ci0gICAgLy8gZGltZW5zaW9ucyBhbmQgdGhlIHRleHR1cmUgc2hvdWxkIGJlIGluY29tcGxldGUu
Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfQkFTRV9MRVZF
TCwgMSk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9n
cmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAw
LCBHTENvbG9yOjpibGFjayk7Ci19Ci0KLS8vIFRlc3QgdGhhdCB0ZXh0dXJlIGlzIG5vdCBjb21w
bGV0ZSBpZiBiYXNlIGxldmVsIGlzIGdyZWF0ZXIgdGhhbiBtYXggbGV2ZWwuCi0vLyBHTEVTIDMu
MC40IHNlY3Rpb24gMy44LjEzIFRleHR1cmUgY29tcGxldGVuZXNzCi1URVNUX1AoVGV4dHVyZTJE
VGVzdEVTMywgVGV4dHVyZUJhc2VMZXZlbEdyZWF0ZXJUaGFuTWF4TGV2ZWwpCi17Ci0gICAgaWYg
KElzSW50ZWwoKSAmJiBnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfT1BFTkdMX0FOR0xFKQotICAgIHsKLSAgICAgICAgLy8gSW50ZWwgV2luZG93cyBPcGVu
R0wgZHJpdmVyIGNyYXNoZXMgaWYgdGhlIGJhc2UgbGV2ZWwgb2YgYSBub24taW1tdXRhYmxlIHRl
eHR1cmUgaXMgb3V0Ci0gICAgICAgIC8vIG9mIHJhbmdlLgotICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGds
QmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0KLSAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsK
LSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVS
LCBHTF9ORUFSRVNUKTsKLQotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9S
R0JBOCwgMSwgMSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgJkdMQ29sb3I6OmdyZWVu
KTsKLQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0JBU0Vf
TEVWRUwsIDEwMDAwKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVY
VFVSRV9NQVhfTEVWRUwsIDApOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBk
cmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICAvLyBUZXh0dXJlIHNo
b3VsZCBiZSBpbmNvbXBsZXRlLgotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENv
bG9yOjpibGFjayk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBpbW11dGFibGUgdGV4dHVyZSBiYXNlIGxl
dmVsIGFuZCBtYXggbGV2ZWwgYXJlIGNsYW1wZWQuCi0vLyBHTEVTIDMuMC40IHNlY3Rpb24gMy44
LjEwIHN1YnNlY3Rpb24gTWlwbWFwcGluZwotVEVTVF9QKFRleHR1cmUyRFRlc3RFUzMsIEltbXV0
YWJsZVRleHR1cmVCYXNlTGV2ZWxPdXRPZlJhbmdlKQotewotICAgIGdsQWN0aXZlVGV4dHVyZShH
TF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJE
KTsKLQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19G
SUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotCi0gICAgZ2xUZXhTdG9yYWdlMkQo
R0xfVEVYVFVSRV8yRCwgMSwgR0xfUkdCQTgsIDEsIDEpOwotCi0gICAgZ2xUZXhTdWJJbWFnZTJE
KEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEsIDEsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUs
ICZHTENvbG9yOjpncmVlbik7Ci0KLSAgICAvLyBGb3IgaW1tdXRhYmxlLWZvcm1hdCB0ZXh0dXJl
cywgYmFzZSBsZXZlbCBzaG91bGQgYmUgY2xhbXBlZCB0byBbMCwgbGV2ZWxzIC0gMV0sIGFuZCBt
YXggbGV2ZWwKLSAgICAvLyBzaG91bGQgYmUgY2xhbXBlZCB0byBbYmFzZV9sZXZlbCwgbGV2ZWxz
IC0gMV0uCi0gICAgLy8gR0xFUyAzLjAuNCBzZWN0aW9uIDMuOC4xMCBzdWJzZWN0aW9uIE1pcG1h
cHBpbmcKLSAgICAvLyBJbiB0aGUgY2FzZSBvZiB0aGlzIHRlc3QsIHRob3NlIHJ1bGVzIG1ha2Ug
dGhlIGVmZmVjdGl2ZSBiYXNlIGxldmVsIGFuZCBtYXggbGV2ZWwgMC4KLSAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAxMDAwMCk7Ci0gICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFYX0xFVkVMLCAxMDAw
MCk7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFt
LCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIC8vIFRleHR1cmUgc2hvdWxkIGJlIGNvbXBsZXRl
LgotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpncmVlbik7Ci19Ci0K
LS8vIFRlc3QgdGhhdCBjaGFuZ2luZyBiYXNlIGxldmVsIHdvcmtzIHdoZW4gaXQgYWZmZWN0cyB0
aGUgZm9ybWF0IG9mIHRoZSB0ZXh0dXJlLgotVEVTVF9QKFRleHR1cmUyRFRlc3RFUzMsIFRleHR1
cmVGb3JtYXRDaGFuZ2VzV2l0aEJhc2VMZXZlbCkKLXsKLSAgICBpZiAoSXNOVklESUEoKSAmJiBJ
c09wZW5HTCgpKQotICAgIHsKLSAgICAgICAgLy8gT2JzZXJ2ZWQgcmVuZGVyaW5nIGNvcnJ1cHRp
b24gb24gTlZJRElBIE9wZW5HTC4KLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQg
b24gTlZJRElBIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBpZiAoSXNJbnRlbCgpICYmIElzRGVza3RvcE9wZW5HTCgpKQotICAgIHsKLSAgICAgICAg
Ly8gT2JzZXJ2ZWQgaW5jb3JyZWN0IHJlbmRlcmluZyBvbiBJbnRlbCBPcGVuR0wuCi0gICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5k
bDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBpZiAoSXNBTUQoKSAmJiBJc0Rlc2t0b3BP
cGVuR0woKSkKLSAgICB7Ci0gICAgICAgIC8vIE9ic2VydmVkIGluY29ycmVjdCByZW5kZXJpbmcg
b24gQU1EIE9wZW5HTC4KLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gQU1E
IE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGds
QWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBtVGV4dHVyZTJEKTsKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRhQ3lhbig0
dSAqIDR1LCBHTENvbG9yOjpjeWFuKTsKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiB0ZXhEYXRh
R3JlZW4oNHUgKiA0dSwgR0xDb2xvcjo6Z3JlZW4pOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5F
QVJfTUlQTUFQX0xJTkVBUik7Ci0KLSAgICAvLyBSR0JBOCBsZXZlbCB0aGF0J3MgaW5pdGlhbGx5
IHVudXNlZC4KLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTgsIDQs
IDQsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgIHRleERh
dGFDeWFuLmRhdGEoKSk7Ci0KLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xf
VEVYVFVSRV9CQVNFX0xFVkVMLCAxKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9NQVhfTEVWRUwsIDEpOwotCi0gICAgLy8gUkc4IGxldmVsIHRoYXQncyBp
bml0aWFsbHkgdXNlZCwgd2l0aCBjb25zaXN0ZW50IGRpbWVuc2lvbnMgd2l0aCBsZXZlbCAwIGJ1
dCBhIGRpZmZlcmVudAotICAgIC8vIGZvcm1hdC4gSXQgcmVhZHMgZ3JlZW4gY2hhbm5lbCBkYXRh
IGZyb20gdGhlIGdyZWVuIGFuZCBhbHBoYSBjaGFubmVscyBvZiB0ZXhEYXRhR3JlZW4KLSAgICAv
LyAodGhpcyBpcyBhIGJpdCBoYWNreSBidXQgd29ya3MpLgotICAgIGdsVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAxLCBHTF9SRzgsIDIsIDIsIDAsIEdMX1JHLCBHTF9VTlNJR05FRF9CWVRFLCB0
ZXhEYXRhR3JlZW4uZGF0YSgpKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAg
ZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgRVhQRUNUX1BJWEVM
X0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKLQotICAgIC8vIFN3aXRjaCB0aGUgdGV4
dHVyZSB0byB1c2UgdGhlIGN5YW4gbGV2ZWwgMCB3aXRoIHRoZSBSR0JBIGZvcm1hdC4KLSAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAwKTsK
LSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQVhfTEVWRUws
IDApOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3Jh
bSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwg
R0xDb2xvcjo6Y3lhbik7Ci19Ci0KLS8vIFRlc3QgdGhhdCBzZXR0aW5nIGEgdGV4dHVyZSBpbWFn
ZSB3b3JrcyB3aGVuIGJhc2UgbGV2ZWwgaXMgb3V0IG9mIHJhbmdlLgotVEVTVF9QKFRleHR1cmUy
RFRlc3RFUzMsIFNldEltYWdlV2hlbkJhc2VMZXZlbE91dE9mUmFuZ2UpCi17Ci0gICAgZ2xBY3Rp
dmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQs
IG1UZXh0dXJlMkQpOwotCi0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0KLSAgICBnbFRl
eFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9CQVNFX0xFVkVMLCAxMDAwMCk7
Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFYX0xFVkVM
LCAxMDAwMCk7Ci0KLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQTgs
IDEsIDEsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsICZHTENvbG9yOjpncmVlbik7Ci0K
LSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX0JBU0VfTEVWRUwsIDApOwotCi0gICAgZHJhd1F1YWQobVByb2dy
YW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgLy8gVGV4dHVyZSBzaG91bGQgYmUgY29tcGxl
dGUuCi0gICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKLX0K
LQotLy8gSW4gdGhlIEQzRDExIHJlbmRlcmVyLCB3ZSBuZWVkIHRvIGluaXRpYWxpemUgc29tZSB0
ZXh0dXJlIGZvcm1hdHMsIHRvIGZpbGwgZW1wdHkgY2hhbm5lbHMuIEVHIFJCQS0+UkdCQTgsIHdp
dGggMS4wCi0vLyBpbiB0aGUgYWxwaGEgY2hhbm5lbC4gVGhpcyB0ZXN0IGNvdmVycyBhIGJ1ZyB3
aGVyZSByZWRlZmluaW5nIGFycmF5IHRleHR1cmVzIHdpdGggdGhlc2UgZm9ybWF0cyBkb2VzIG5v
dCB3b3JrIGFzCi0vLyBleHBlY3RlZC4KLVRFU1RfUChUZXh0dXJlMkRBcnJheVRlc3RFUzMsIFJl
ZGVmaW5lSW5pdHRhYmxlQXJyYXkpCi17Ci0gICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gcGl4ZWxE
YXRhOwotICAgIGZvciAoc2l6ZV90IGNvdW50ID0gMDsgY291bnQgPCA1MDAwOyBjb3VudCsrKQot
ICAgIHsKLSAgICAgICAgcGl4ZWxEYXRhLnB1c2hfYmFjaygwdSk7Ci0gICAgICAgIHBpeGVsRGF0
YS5wdXNoX2JhY2soMjU1dSk7Ci0gICAgICAgIHBpeGVsRGF0YS5wdXNoX2JhY2soMHUpOwotICAg
IH0KLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRF9BUlJBWSwgbTJEQXJyYXlUZXh0
dXJlKTsKLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIGdsVW5pZm9ybTFpKG1UZXh0
dXJlQXJyYXlMb2NhdGlvbiwgMCk7Ci0KLSAgICAvLyBUaGUgZmlyc3QgZHJhdyB3b3JrZWQgY29y
cmVjdGx5LgotICAgIGdsVGV4SW1hZ2UzRChHTF9URVhUVVJFXzJEX0FSUkFZLCAwLCBHTF9SR0Is
IDQsIDQsIDIsIDAsIEdMX1JHQiwgR0xfVU5TSUdORURfQllURSwgJnBpeGVsRGF0YVswXSk7Ci0K
LSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRF9BUlJBWSwgR0xfVEVYVFVSRV9NSU5f
RklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRF9B
UlJBWSwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRF9BUlJBWSwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX1JFUEVBVCk7
Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkRfQVJSQVksIEdMX1RFWFRVUkVfV1JB
UF9ULCBHTF9SRVBFQVQpOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAxLjBm
KTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xvcjo6Z3JlZW4pOwotCi0g
ICAgLy8gVGhlIGRpbWVuc2lvbiBvZiB0aGUgcmVzcGVjaWZpY2F0aW9uIG11c3QgbWF0Y2ggdGhl
IG9yaWdpbmFsIGV4YWN0bHkgdG8gdHJpZ2dlciB0aGUgYnVnLgotICAgIGdsVGV4SW1hZ2UzRChH
TF9URVhUVVJFXzJEX0FSUkFZLCAwLCBHTF9SR0IsIDQsIDQsIDIsIDAsIEdMX1JHQiwgR0xfVU5T
SUdORURfQllURSwgJnBpeGVsRGF0YVswXSk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3Np
dGlvbiIsIDEuMGYpOwotICAgIEVYUEVDVF9QSVhFTF9DT0xPUl9FUSgwLCAwLCBHTENvbG9yOjpn
cmVlbik7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCBzaGFkb3cg
c2FtcGxlciBhbmQgcmVndWxhciBub24tc2hhZG93IHNhbXBsZXIgY29leGlzdGluZyBpbiB0aGUg
c2FtZSBzaGFkZXIuCi0vLyBUaGlzIHRlc3QgaXMgbmVlZGVkIGVzcGVjaWFsbHkgdG8gY29uZmly
bSB0aGF0IHNhbXBsZXIgcmVnaXN0ZXJzIGdldCBhc3NpZ25lZCBjb3JyZWN0bHkgb24KLS8vIHRo
ZSBITFNMIGJhY2tlbmQgZXZlbiB3aGVuIHRoZXJlJ3MgYSBtaXggb2YgZGlmZmVyZW50IEhMU0wg
c2FtcGxlciBhbmQgdGV4dHVyZSB0eXBlcy4KLVRFU1RfUChTaGFkb3dTYW1wbGVyUGx1c1NhbXBs
ZXIzRFRlc3RFUzMsIFNoYWRvd1NhbXBsZXJQbHVzU2FtcGxlcjNERHJhdykKLXsKLSAgICBnbEFj
dGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8z
RCwgbVRleHR1cmUzRCk7Ci0gICAgR0x1Ynl0ZSB0ZXhEYXRhWzRdOwotICAgIHRleERhdGFbMF0g
PSAwOwotICAgIHRleERhdGFbMV0gPSA2MDsKLSAgICB0ZXhEYXRhWzJdID0gMDsKLSAgICB0ZXhE
YXRhWzNdID0gMjU1OwotICAgIGdsVGV4SW1hZ2UzRChHTF9URVhUVVJFXzNELCAwLCBHTF9SR0JB
LCAxLCAxLCAxLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCB0ZXhEYXRhKTsKLQotICAg
IGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCBtVGV4dHVyZVNoYWRvdyk7Ci0gICAgR0xmbG9hdCBkZXB0aFRleERhdGFbMV07Ci0g
ICAgZGVwdGhUZXhEYXRhWzBdID0gMC41ZjsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8y
RCwgMCwgR0xfREVQVEhfQ09NUE9ORU5UMzJGLCAxLCAxLCAwLCBHTF9ERVBUSF9DT01QT05FTlQs
IEdMX0ZMT0FULAotICAgICAgICAgICAgICAgICBkZXB0aFRleERhdGEpOwotCi0gICAgZ2xVc2VQ
cm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBnbFVuaWZvcm0xZihtRGVwdGhSZWZVbmlmb3JtTG9jYXRp
b24sIDAuM2YpOwotICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlM0RVbmlmb3JtTG9jYXRpb24sIDAp
OwotICAgIGdsVW5pZm9ybTFpKG1UZXh0dXJlU2hhZG93VW5pZm9ybUxvY2F0aW9uLCAxKTsKLQot
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0NPTVBBUkVfRlVO
QywgR0xfTEVRVUFMKTsKLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7
Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgLy8gVGhlIHNoYWRlciB3cml0ZXMgMC41
ICogPGNvbXBhcmlzb24gcmVzdWx0ICgxLjApPiArIDx0ZXh0dXJlIGNvbG9yPgotICAgIEVYUEVD
VF9QSVhFTF9ORUFSKDAsIDAsIDEyOCwgMTg4LCAxMjgsIDI1NSwgMik7Ci0KLSAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMsIEdMX0dSRUFU
RVIpOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBF
Q1RfR0xfTk9fRVJST1IoKTsKLSAgICAvLyBUaGUgc2hhZGVyIHdyaXRlcyAwLjUgKiA8Y29tcGFy
aXNvbiByZXN1bHQgKDAuMCk+ICsgPHRleHR1cmUgY29sb3I+Ci0gICAgRVhQRUNUX1BJWEVMX05F
QVIoMCwgMCwgMCwgNjAsIDAsIDI1NSwgMik7Ci19Ci0KLS8vIFRlc3QgbXVsdGlwbGUgZGlmZmVy
ZW50IHNhbXBsZXIgdHlwZXMgaW4gdGhlIHNhbWUgc2hhZGVyLgotLy8gVGhpcyB0ZXN0IG1ha2Vz
IHN1cmUgdGhhdCBldmVuIGlmIHNhbXBsZXIgLyB0ZXh0dXJlIHJlZ2lzdGVycyBnZXQgZ3JvdXBl
ZCB0b2dldGhlciBiYXNlZCBvbiB0eXBlCi0vLyBvciBvdGhlcndpc2UgZ2V0IHNodWZmbGVkIGFy
b3VuZCBpbiB0aGUgSExTTCBiYWNrZW5kIG9mIHRoZSBzaGFkZXIgdHJhbnNsYXRvciwgdGhlIEQz
RCByZW5kZXJlcgotLy8gc3RpbGwgaGFzIHRoZSByaWdodCByZWdpc3RlciBpbmRleCBpbmZvcm1h
dGlvbiBmb3IgZWFjaCBFU1NMIHNhbXBsZXIuCi0vLyBUaGUgdGVzdGVkIEVTU0wgc2FtcGxlcnMg
aGF2ZSB0aGUgZm9sbG93aW5nIHR5cGVzIGluIEQzRDExIEhMU0w6Ci0vLyBzYW1wbGVyMkQ6ICAg
ICAgICAgVGV4dHVyZTJEICAgKyBTYW1wbGVyU3RhdGUKLS8vIHNhbXBsZXJDdWJlOiAgICAgICBU
ZXh0dXJlQ3ViZSArIFNhbXBsZXJTdGF0ZQotLy8gc2FtcGxlcjJEU2hhZG93OiAgIFRleHR1cmUy
RCAgICsgU2FtcGxlckNvbXBhcmlzb25TdGF0ZQotLy8gc2FtcGxlckN1YmVTaGFkb3c6IFRleHR1
cmVDdWJlICsgU2FtcGxlckNvbXBhcmlzb25TdGF0ZQotVEVTVF9QKFNhbXBsZXJUeXBlTWl4VGVz
dEVTMywgU2FtcGxlclR5cGVNaXhEcmF3KQotewotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhU
VVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKLSAg
ICBHTHVieXRlIHRleERhdGFbNF07Ci0gICAgdGV4RGF0YVswXSA9IDA7Ci0gICAgdGV4RGF0YVsx
XSA9IDA7Ci0gICAgdGV4RGF0YVsyXSA9IDEyMDsKLSAgICB0ZXhEYXRhWzNdID0gMjU1OwotICAg
IGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxLCAxLCAwLCBHTF9SR0JB
LCBHTF9VTlNJR05FRF9CWVRFLCB0ZXhEYXRhKTsKLQotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9U
RVhUVVJFMSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0NVQkVfTUFQLCBtVGV4dHVy
ZUN1YmUpOwotICAgIHRleERhdGFbMF0gPSAwOwotICAgIHRleERhdGFbMV0gPSA5MDsKLSAgICB0
ZXhEYXRhWzJdID0gMDsKLSAgICB0ZXhEYXRhWzNdID0gMjU1OwotICAgIGdsVGV4U3RvcmFnZTJE
KEdMX1RFWFRVUkVfQ1VCRV9NQVAsIDEsIEdMX1JHQkE4LCAxLCAxKTsKLSAgICBnbFRleFN1Yklt
YWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwLCAwLCAwLCAxLCAxLCBHTF9S
R0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICAgICB0ZXhEYXRhKTsKLQot
ICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMik7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9U
RVhUVVJFXzJELCBtVGV4dHVyZTJEU2hhZG93KTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9DT01QQVJFX0ZVTkMsIEdMX0xFUVVBTCk7Ci0gICAgR0xmbG9h
dCBkZXB0aFRleERhdGFbMV07Ci0gICAgZGVwdGhUZXhEYXRhWzBdID0gMC41ZjsKLSAgICBnbFRl
eEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfREVQVEhfQ09NUE9ORU5UMzJGLCAxLCAxLCAw
LCBHTF9ERVBUSF9DT01QT05FTlQsIEdMX0ZMT0FULAotICAgICAgICAgICAgICAgICBkZXB0aFRl
eERhdGEpOwotCi0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUzKTsKLSAgICBnbEJpbmRU
ZXh0dXJlKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIG1UZXh0dXJlQ3ViZVNoYWRvdyk7Ci0gICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfQ1VCRV9NQVAsIEdMX1RFWFRVUkVfQ09NUEFSRV9GVU5D
LCBHTF9MRVFVQUwpOwotICAgIGRlcHRoVGV4RGF0YVswXSA9IDAuMmY7Ci0gICAgZ2xUZXhTdG9y
YWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUCwgMSwgR0xfREVQVEhfQ09NUE9ORU5UMzJGLCAxLCAx
KTsKLSAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAw
LCAwLCAwLCAxLCAxLCBHTF9ERVBUSF9DT01QT05FTlQsIEdMX0ZMT0FULAotICAgICAgICAgICAg
ICAgICAgICBkZXB0aFRleERhdGEpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIGdsVW5pZm9ybTFmKG1EZXB0aFJlZlVuaWZv
cm1Mb2NhdGlvbiwgMC4zZik7Ci0gICAgZ2xVbmlmb3JtMWkobVRleHR1cmUyRFVuaWZvcm1Mb2Nh
dGlvbiwgMCk7Ci0gICAgZ2xVbmlmb3JtMWkobVRleHR1cmVDdWJlVW5pZm9ybUxvY2F0aW9uLCAx
KTsKLSAgICBnbFVuaWZvcm0xaShtVGV4dHVyZTJEU2hhZG93VW5pZm9ybUxvY2F0aW9uLCAyKTsK
LSAgICBnbFVuaWZvcm0xaShtVGV4dHVyZUN1YmVTaGFkb3dVbmlmb3JtTG9jYXRpb24sIDMpOwot
Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotICAgIC8vIFRoZSBzaGFkZXIgd3JpdGVzOgotICAgIC8vIDx0ZXh0dXJl
IDJkIGNvbG9yPiArCi0gICAgLy8gPGN1YmUgbWFwIGNvbG9yPiArCi0gICAgLy8gMC4yNSAqIDxj
b21wYXJpc29uIHJlc3VsdCAoMS4wKT4gKwotICAgIC8vIDAuMTI1ICogPGNvbXBhcmlzb24gcmVz
dWx0ICgwLjApPgotICAgIEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAsIDY0LCAxNTQsIDE4NCwgMjU1
LCAyKTsKLX0KLQotLy8gVGVzdCBkaWZmZXJlbnQgYmFzZSBsZXZlbHMgb24gdGV4dHVyZXMgYWNj
ZXNzZWQgdGhyb3VnaCB0aGUgc2FtZSBzYW1wbGVyIGFycmF5LgotLy8gQ2FsbGluZyB0ZXh0dXJl
U2l6ZSgpIG9uIHRoZSBzYW1wbGVycyBoaXRzIHRoZSBEM0Qgc2FtcGxlciBtZXRhZGF0YSB3b3Jr
YXJvdW5kLgotVEVTVF9QKFRleHR1cmVTaXplVGV4dHVyZUFycmF5VGVzdCwgQmFzZUxldmVsVmFy
aWVzSW5UZXh0dXJlQXJyYXkpCi17Ci0gICAgaWYgKChJc0FNRCgpIHx8IElzSW50ZWwoKSkgJiYg
Z2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FO
R0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwg
YW5kIEFNRCBEM0QuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAg
Z2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRV
UkVfMkQsIG1UZXh0dXJlMkRBKTsKLSAgICBHTHNpemVpIHNpemUgPSA2NDsKLSAgICBmb3IgKEdM
aW50IGxldmVsID0gMDsgbGV2ZWwgPCA3OyArK2xldmVsKQotICAgIHsKLSAgICAgICAgQVNTRVJU
X0xUKDAsIHNpemUpOwotICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgbGV2ZWws
IEdMX1JHQkEsIHNpemUsIHNpemUsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAg
ICAgICAgICAgICAgICAgICBudWxscHRyKTsKLSAgICAgICAgc2l6ZSA9IHNpemUgLyAyOwotICAg
IH0KLSAgICBBU1NFUlRfRVEoMCwgc2l6ZSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfQkFTRV9MRVZFTCwgMSk7Ci0KLSAgICBnbEFjdGl2ZVRleHR1cmUo
R0xfVEVYVFVSRTEpOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUy
REIpOwotICAgIHNpemUgPSAxMjg7Ci0gICAgZm9yIChHTGludCBsZXZlbCA9IDA7IGxldmVsIDwg
ODsgKytsZXZlbCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9MVCgwLCBzaXplKTsKLSAgICAgICAg
Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIGxldmVsLCBHTF9SR0JBLCBzaXplLCBzaXplLCAw
LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICAgICAgbnVsbHB0
cik7Ci0gICAgICAgIHNpemUgPSBzaXplIC8gMjsKLSAgICB9Ci0gICAgQVNTRVJUX0VRKDAsIHNp
emUpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX0JBU0Vf
TEVWRUwsIDMpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xVc2VQcm9ncmFt
KG1Qcm9ncmFtKTsKLSAgICBnbFVuaWZvcm0xaShtVGV4dHVyZTBMb2NhdGlvbiwgMCk7Ci0gICAg
Z2xVbmlmb3JtMWkobVRleHR1cmUxTG9jYXRpb24sIDEpOwotCi0gICAgZHJhd1F1YWQobVByb2dy
YW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIC8v
IFJlZCBjaGFubmVsOiB3aWR0aCBvZiBsZXZlbCAxIG9mIHRleHR1cmUgQTogMzIuCi0gICAgLy8g
R3JlZW4gY2hhbm5lbDogd2lkdGggb2YgbGV2ZWwgMyBvZiB0ZXh0dXJlIEI6IDE2LgotICAgIEVY
UEVDVF9QSVhFTF9ORUFSKDAsIDAsIDMyLCAxNiwgMCwgMjU1LCAyKTsKLX0KLQotLy8gV2hlbiBz
YW1wbGluZyBhIHRleHR1cmUgd2l0aG91dCBhbiBhbHBoYSBjaGFubmVsLCAiMSIgaXMgcmV0dXJu
ZWQgYXMgdGhlIGFscGhhIHZhbHVlLgotLy8gRVMgMy4wLjQgdGFibGUgMy4yNAotVEVTVF9QKFRl
eHR1cmUyRFRlc3RFUzMsIFRleHR1cmVSR0JJbXBsaWNpdEFscGhhMSkKLXsKLSAgICBnbEFjdGl2
ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwg
bVRleHR1cmUyRCk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQjgs
IDEsIDEsIDAsIEdMX1JHQiwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0gICAgRVhQRUNU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41
Zik7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQUxQSEFfRVEoMCwgMCwgMjU1KTsKLX0KLQotLy8gV2hl
biBzYW1wbGluZyBhIHRleHR1cmUgd2l0aG91dCBhbiBhbHBoYSBjaGFubmVsLCAiMSIgaXMgcmV0
dXJuZWQgYXMgdGhlIGFscGhhIHZhbHVlLgotLy8gRVMgMy4wLjQgdGFibGUgMy4yNAotVEVTVF9Q
KFRleHR1cmUyRFRlc3RFUzMsIFRleHR1cmVMdW1pbmFuY2VJbXBsaWNpdEFscGhhMSkKLXsKLSAg
ICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVY
VFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IEdMX0xVTUlOQU5DRSwgMSwgMSwgMCwgR0xfTFVNSU5BTkNFLCBHTF9VTlNJR05FRF9CWVRFLCBu
dWxscHRyKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9n
cmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEVYUEVDVF9QSVhFTF9BTFBIQV9FUSgwLCAw
LCAyNTUpOwotfQotCi0vLyBXaGVuIHNhbXBsaW5nIGEgdGV4dHVyZSB3aXRob3V0IGFuIGFscGhh
IGNoYW5uZWwsICIxIiBpcyByZXR1cm5lZCBhcyB0aGUgYWxwaGEgdmFsdWUuCi0vLyBFUyAzLjAu
NCB0YWJsZSAzLjI0Ci1URVNUX1AoVGV4dHVyZTJEVGVzdEVTMywgVGV4dHVyZUx1bWluYW5jZTMy
SW1wbGljaXRBbHBoYTEpCi17Ci0gICAgaWYgKGV4dGVuc2lvbkVuYWJsZWQoIkdMX09FU190ZXh0
dXJlX2Zsb2F0IikpCi0gICAgewotICAgICAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTAp
OwotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOwotICAg
ICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfTFVNSU5BTkNFLCAxLCAxLCAw
LCBHTF9MVU1JTkFOQ0UsIEdMX0ZMT0FULCBudWxscHRyKTsKLSAgICAgICAgRVhQRUNUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYp
OwotCi0gICAgICAgIEVYUEVDVF9QSVhFTF9BTFBIQV9FUSgwLCAwLCAyNTUpOwotICAgIH0KLX0K
LQotLy8gV2hlbiBzYW1wbGluZyBhIHRleHR1cmUgd2l0aG91dCBhbiBhbHBoYSBjaGFubmVsLCAi
MSIgaXMgcmV0dXJuZWQgYXMgdGhlIGFscGhhIHZhbHVlLgotLy8gRVMgMy4wLjQgdGFibGUgMy4y
NAotVEVTVF9QKFRleHR1cmUyRFRlc3RFUzMsIFRleHR1cmVMdW1pbmFuY2UxNkltcGxpY2l0QWxw
aGExKQotewotICAgIGlmIChleHRlbnNpb25FbmFibGVkKCJHTF9PRVNfdGV4dHVyZV9oYWxmX2Zs
b2F0IikpCi0gICAgewotICAgICAgICBpZiAoSXNOVklESUEoKSAmJiBJc09wZW5HTEVTKCkpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIE5WSURJ
QSIgPDwgc3RkOjplbmRsOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAg
IC8vIFRPRE8oeW5vdmlrb3YpOiByZS1lbmFibGUgb25jZSByb290IGNhdXNlIG9mIGh0dHA6Ly9h
bmdsZWJ1Zy5jb20vMTQyMCBpcyBmaXhlZAotICAgICAgICBpZiAoSXNBbmRyb2lkKCkgJiYgSXNB
ZHJlbm8oKSAmJiBJc09wZW5HTEVTKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6Y291
dCA8PCAiVGVzdCBza2lwcGVkIG9uIEFkcmVubyBPcGVuR0xFUyBvbiBBbmRyb2lkLiIgPDwgc3Rk
OjplbmRsOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZ2xBY3Rp
dmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJF
XzJELCBtVGV4dHVyZTJEKTsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IEdMX0xVTUlOQU5DRSwgMSwgMSwgMCwgR0xfTFVNSU5BTkNFLCBHTF9IQUxGX0ZMT0FUX09FUywK
LSAgICAgICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJS
T1IoKTsKLQotICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0K
LSAgICAgICAgRVhQRUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAsIDI1NSk7Ci0gICAgfQotfQotCi0v
LyBXaGVuIHNhbXBsaW5nIGEgdGV4dHVyZSB3aXRob3V0IGFuIGFscGhhIGNoYW5uZWwsICIxIiBp
cyByZXR1cm5lZCBhcyB0aGUgYWxwaGEgdmFsdWUuCi0vLyBFUyAzLjAuNCB0YWJsZSAzLjI0Ci1U
RVNUX1AoVGV4dHVyZTJEVW5zaWduZWRJbnRlZ2VyQWxwaGExVGVzdEVTMywgVGV4dHVyZVJHQjhV
SUltcGxpY2l0QWxwaGExKQotewotICAgIGlmIChJc0ludGVsKCkpCi0gICAgewotICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gSW50ZWwuIiA8PCBzdGQ6OmVuZGw7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOwotICAgIGdsVGV4SW1h
Z2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0I4VUksIDEsIDEsIDAsIEdMX1JHQl9JTlRFR0VS
LCBHTF9VTlNJR05FRF9CWVRFLCBudWxscHRyKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVY
VFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBh
cmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNU
KTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAi
cG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEVYUEVDVF9QSVhFTF9BTFBIQV9FUSgwLCAwLCAyNTUp
OwotfQotCi0vLyBXaGVuIHNhbXBsaW5nIGEgdGV4dHVyZSB3aXRob3V0IGFuIGFscGhhIGNoYW5u
ZWwsICIxIiBpcyByZXR1cm5lZCBhcyB0aGUgYWxwaGEgdmFsdWUuCi0vLyBFUyAzLjAuNCB0YWJs
ZSAzLjI0Ci1URVNUX1AoVGV4dHVyZTJESW50ZWdlckFscGhhMVRlc3RFUzMsIFRleHR1cmVSR0I4
SUltcGxpY2l0QWxwaGExKQotewotICAgIGlmIChJc0ludGVsKCkpCi0gICAgewotICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3QgZGlzYWJsZWQgb24gSW50ZWwuIiA8PCBzdGQ6OmVuZGw7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOwotCi0gICAgZ2xUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQjhJLCAxLCAxLCAwLCBHTF9SR0JfSU5URUdF
UiwgR0xfQllURSwgbnVsbHB0cik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9u
IiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQUxQSEFfRVEoMCwgMCwgMjU1KTsKLX0KLQot
Ly8gV2hlbiBzYW1wbGluZyBhIHRleHR1cmUgd2l0aG91dCBhbiBhbHBoYSBjaGFubmVsLCAiMSIg
aXMgcmV0dXJuZWQgYXMgdGhlIGFscGhhIHZhbHVlLgotLy8gRVMgMy4wLjQgdGFibGUgMy4yNAot
VEVTVF9QKFRleHR1cmUyRFVuc2lnbmVkSW50ZWdlckFscGhhMVRlc3RFUzMsIFRleHR1cmVSR0Ix
NlVJSW1wbGljaXRBbHBoYTEpCi17Ci0gICAgaWYgKElzSW50ZWwoKSkKLSAgICB7Ci0gICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBJbnRlbC4iIDw8IHN0ZDo6ZW5kbDsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwot
ICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0gICAgZ2xUZXhJ
bWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQjE2VUksIDEsIDEsIDAsIEdMX1JHQl9JTlRF
R0VSLCBHTF9VTlNJR05FRF9TSE9SVCwgbnVsbHB0cik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdM
X1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVB
UkVTVCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3Jh
bSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQUxQSEFfRVEoMCwgMCwg
MjU1KTsKLX0KLQotLy8gV2hlbiBzYW1wbGluZyBhIHRleHR1cmUgd2l0aG91dCBhbiBhbHBoYSBj
aGFubmVsLCAiMSIgaXMgcmV0dXJuZWQgYXMgdGhlIGFscGhhIHZhbHVlLgotLy8gRVMgMy4wLjQg
dGFibGUgMy4yNAotVEVTVF9QKFRleHR1cmUyREludGVnZXJBbHBoYTFUZXN0RVMzLCBUZXh0dXJl
UkdCMTZJSW1wbGljaXRBbHBoYTEpCi17Ci0gICAgaWYgKElzSW50ZWwoKSkKLSAgICB7Ci0gICAg
ICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBJbnRlbC4iIDw8IHN0ZDo6ZW5kbDsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTAp
OwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0gICAgZ2xU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQjE2SSwgMSwgMSwgMCwgR0xfUkdCX0lO
VEVHRVIsIEdMX1NIT1JULCBudWxscHRyKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsK
LSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9z
aXRpb24iLCAwLjVmKTsKLQotICAgIEVYUEVDVF9QSVhFTF9BTFBIQV9FUSgwLCAwLCAyNTUpOwot
fQotCi0vLyBXaGVuIHNhbXBsaW5nIGEgdGV4dHVyZSB3aXRob3V0IGFuIGFscGhhIGNoYW5uZWws
ICIxIiBpcyByZXR1cm5lZCBhcyB0aGUgYWxwaGEgdmFsdWUuCi0vLyBFUyAzLjAuNCB0YWJsZSAz
LjI0Ci1URVNUX1AoVGV4dHVyZTJEVW5zaWduZWRJbnRlZ2VyQWxwaGExVGVzdEVTMywgVGV4dHVy
ZVJHQjMyVUlJbXBsaWNpdEFscGhhMSkKLXsKLSAgICBpZiAoSXNJbnRlbCgpKQotICAgIHsKLSAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIEludGVsLiIgPDwgc3RkOjplbmRs
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJF
MCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKLSAgICBn
bFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCMzJVSSwgMSwgMSwgMCwgR0xfUkdC
X0lOVEVHRVIsIEdMX1VOU0lHTkVEX0lOVCwgbnVsbHB0cik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAg
Z2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xf
TkVBUkVTVCk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJv
Z3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQUxQSEFfRVEoMCwg
MCwgMjU1KTsKLX0KLQotLy8gV2hlbiBzYW1wbGluZyBhIHRleHR1cmUgd2l0aG91dCBhbiBhbHBo
YSBjaGFubmVsLCAiMSIgaXMgcmV0dXJuZWQgYXMgdGhlIGFscGhhIHZhbHVlLgotLy8gRVMgMy4w
LjQgdGFibGUgMy4yNAotVEVTVF9QKFRleHR1cmUyREludGVnZXJBbHBoYTFUZXN0RVMzLCBUZXh0
dXJlUkdCMzJJSW1wbGljaXRBbHBoYTEpCi17Ci0gICAgaWYgKElzSW50ZWwoKSkKLSAgICB7Ci0g
ICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBkaXNhYmxlZCBvbiBJbnRlbC4iIDw8IHN0ZDo6ZW5k
bDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVS
RTApOwotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0gICAg
Z2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQjMySSwgMSwgMSwgMCwgR0xfUkdC
X0lOVEVHRVIsIEdMX0lOVCwgbnVsbHB0cik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7
Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBv
c2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfUElYRUxfQUxQSEFfRVEoMCwgMCwgMjU1KTsK
LX0KLQotLy8gV2hlbiBzYW1wbGluZyBhIHRleHR1cmUgd2l0aG91dCBhbiBhbHBoYSBjaGFubmVs
LCAiMSIgaXMgcmV0dXJuZWQgYXMgdGhlIGFscGhhIHZhbHVlLgotLy8gRVMgMy4wLjQgdGFibGUg
My4yNAotVEVTVF9QKFRleHR1cmUyRFRlc3RFUzMsIFRleHR1cmVSR0JTTk9STUltcGxpY2l0QWxw
aGExKQotewotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKLSAgICBnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgR0xfUkdCOF9TTk9STSwgMSwgMSwgMCwgR0xfUkdCLCBHTF9CWVRFLCBudWxs
cHRyKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFt
LCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEVYUEVDVF9QSVhFTF9BTFBIQV9FUSgwLCAwLCAy
NTUpOwotfQotCi0vLyBXaGVuIHNhbXBsaW5nIGEgdGV4dHVyZSB3aXRob3V0IGFuIGFscGhhIGNo
YW5uZWwsICIxIiBpcyByZXR1cm5lZCBhcyB0aGUgYWxwaGEgdmFsdWUuCi0vLyBFUyAzLjAuNCB0
YWJsZSAzLjI0Ci1URVNUX1AoVGV4dHVyZTJEVGVzdEVTMywgVGV4dHVyZVJHQjlFNUltcGxpY2l0
QWxwaGExKQotewotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5k
VGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKLSAgICBnbFRleEltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgR0xfUkdCOV9FNSwgMSwgMSwgMCwgR0xfUkdCLCBHTF9VTlNJR05FRF9J
TlRfNV85XzlfOV9SRVYsCi0gICAgICAgICAgICAgICAgIG51bGxwdHIpOwotICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYp
OwotCi0gICAgRVhQRUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAsIDI1NSk7Ci19Ci0KLS8vIFdoZW4g
c2FtcGxpbmcgYSB0ZXh0dXJlIHdpdGhvdXQgYW4gYWxwaGEgY2hhbm5lbCwgIjEiIGlzIHJldHVy
bmVkIGFzIHRoZSBhbHBoYSB2YWx1ZS4KLS8vIEVTIDMuMC40IHRhYmxlIDMuMjQKLVRFU1RfUChU
ZXh0dXJlMkRUZXN0RVMzLCBUZXh0dXJlQ09NUFJFU1NFRFJHQjhFVEMySW1wbGljaXRBbHBoYTEp
Ci17Ci0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOwotICAgIGdsQ29tcHJlc3NlZFRleEltYWdlMkQo
R0xfVEVYVFVSRV8yRCwgMCwgR0xfQ09NUFJFU1NFRF9SR0I4X0VUQzIsIDEsIDEsIDAsIDgsIG51
bGxwdHIpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgZHJhd1F1YWQobVByb2dy
YW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgRVhQRUNUX1BJWEVMX0FMUEhBX0VRKDAsIDAs
IDI1NSk7Ci19Ci0KLS8vIFdoZW4gc2FtcGxpbmcgYSB0ZXh0dXJlIHdpdGhvdXQgYW4gYWxwaGEg
Y2hhbm5lbCwgIjEiIGlzIHJldHVybmVkIGFzIHRoZSBhbHBoYSB2YWx1ZS4KLS8vIEVTIDMuMC40
IHRhYmxlIDMuMjQKLVRFU1RfUChUZXh0dXJlMkRUZXN0RVMzLCBUZXh0dXJlQ09NUFJFU1NFRFNS
R0I4RVRDMkltcGxpY2l0QWxwaGExKQotewotICAgIGlmIChJc0ludGVsKCkgJiYgSXNMaW51eCgp
KQotICAgIHsKLSAgICAgICAgLy8gVE9ETyhjd2FsbGV6KTogRml4IG9uIExpbnV4IEludGVsIGRy
aXZlcnMgKGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTM0NikKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IGRpc2FibGVkIG9uIExpbnV4IEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Ci0g
ICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZTJEKTsKLSAgICBnbENvbXBy
ZXNzZWRUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX0NPTVBSRVNTRURfU1JHQjhfRVRD
MiwgMSwgMSwgMCwgOCwgbnVsbHB0cik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBFWFBFQ1RfUElY
RUxfQUxQSEFfRVEoMCwgMCwgMjU1KTsKLX0KLQotLy8gVXNlIGEgc2FtcGxlciBpbiBhIHVuaWZv
cm0gc3RydWN0LgotVEVTVF9QKFNhbXBsZXJJblN0cnVjdFRlc3QsIFNhbXBsZXJJblN0cnVjdCkK
LXsKLSAgICBydW5TYW1wbGVySW5TdHJ1Y3RUZXN0KCk7Ci19Ci0KLS8vIFVzZSBhIHNhbXBsZXIg
aW4gYSB1bmlmb3JtIHN0cnVjdCB0aGF0J3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcGFyYW1ldGVy
LgotVEVTVF9QKFNhbXBsZXJJblN0cnVjdEFzRnVuY3Rpb25QYXJhbWV0ZXJUZXN0LCBTYW1wbGVy
SW5TdHJ1Y3RBc0Z1bmN0aW9uUGFyYW1ldGVyKQotewotICAgIC8vIFRPRE8oeW5vdmlrb3YpOiBy
ZS1lbmFibGUgb25jZSByb290IGNhdXNlIG9mIGh0dHA6Ly9hbmdsZWJ1Zy5jb20vMTQyNyBpcyBm
aXhlZAotICAgIGlmIChJc0FuZHJvaWQoKSAmJiBJc0FkcmVubygpICYmIElzT3BlbkdMRVMoKSkK
LSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEFkcmVubyBPcGVu
R0xFUyBvbiBBbmRyb2lkLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgaWYgKElzV2luZG93cygpICYmIElzSW50ZWwoKSAmJiBJc09wZW5HTCgpKQotICAgIHsK
LSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gV2luZG93cyBPcGVuR0wgb24g
SW50ZWwuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBydW5T
YW1wbGVySW5TdHJ1Y3RUZXN0KCk7Ci19Ci0KLS8vIFVzZSBhIHNhbXBsZXIgaW4gYSB1bmlmb3Jt
IHN0cnVjdCBhcnJheSB3aXRoIGEgc3RydWN0IGZyb20gdGhlIGFycmF5IHBhc3NlZCBhcyBhIGZ1
bmN0aW9uCi0vLyBwYXJhbWV0ZXIuCi1URVNUX1AoU2FtcGxlckluU3RydWN0QXJyYXlBc0Z1bmN0
aW9uUGFyYW1ldGVyVGVzdCwgU2FtcGxlckluU3RydWN0QXJyYXlBc0Z1bmN0aW9uUGFyYW1ldGVy
KQotewotICAgIGlmIChJc0ludGVsKCkgJiYgR2V0UGFyYW0oKS5nZXRSZW5kZXJlcigpID09IEVH
TF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBUT0RPKHlub3Zpa292KTogcmUtZW5hYmxlIG9u
Y2Ugcm9vdCBjYXVzZSBvZiBodHRwOi8vYW5nbGVidWcuY29tLzE0MjcgaXMgZml4ZWQKLSAgICBp
ZiAoSXNBbmRyb2lkKCkgJiYgSXNBZHJlbm8oKSAmJiBJc09wZW5HTEVTKCkpCi0gICAgewotICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBBZHJlbm8gT3BlbkdMRVMgb24gQW5k
cm9pZC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBydW5TYW1w
bGVySW5TdHJ1Y3RUZXN0KCk7Ci19Ci0KLS8vIFVzZSBhIHNhbXBsZXIgaW4gYSBzdHJ1Y3QgaW5z
aWRlIGEgdW5pZm9ybSBzdHJ1Y3Qgd2l0aCB0aGUgbmVzdGVkIHN0cnVjdCBwYXNzZWQgYXMgYSBm
dW5jdGlvbgotLy8gcGFyYW1ldGVyLgotVEVTVF9QKFNhbXBsZXJJbk5lc3RlZFN0cnVjdEFzRnVu
Y3Rpb25QYXJhbWV0ZXJUZXN0LCBTYW1wbGVySW5OZXN0ZWRTdHJ1Y3RBc0Z1bmN0aW9uUGFyYW1l
dGVyKQotewotICAgIGlmIChJc0ludGVsKCkgJiYgR2V0UGFyYW0oKS5nZXRSZW5kZXJlcigpID09
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0gICAgICAgIHN0
ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBUT0RPKHlub3Zpa292KTogcmUtZW5hYmxl
IG9uY2Ugcm9vdCBjYXVzZSBvZiBodHRwOi8vYW5nbGVidWcuY29tLzE0MjcgaXMgZml4ZWQKLSAg
ICBpZiAoSXNBbmRyb2lkKCkgJiYgSXNBZHJlbm8oKSAmJiBJc09wZW5HTEVTKCkpCi0gICAgewot
ICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBBZHJlbm8gT3BlbkdMRVMgb24g
QW5kcm9pZC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBydW5T
YW1wbGVySW5TdHJ1Y3RUZXN0KCk7Ci19Ci0KLS8vIE1ha2Ugc3VyZSB0aGF0IHRoZXJlIGlzbid0
IGEgbmFtZSBjb25mbGljdCBiZXR3ZWVuIHNhbXBsZXIgZXh0cmFjdGVkIGZyb20gYSBzdHJ1Y3Qg
YW5kIGEKLS8vIHNpbWlsYXJseSBuYW1lZCB1bmlmb3JtLgotVEVTVF9QKFNhbXBsZXJJblN0cnVj
dEFuZE90aGVyVmFyaWFibGVUZXN0LCBTYW1wbGVySW5TdHJ1Y3RBbmRPdGhlclZhcmlhYmxlKQot
ewotICAgIHJ1blNhbXBsZXJJblN0cnVjdFRlc3QoKTsKLX0KLQotY2xhc3MgVGV4dHVyZUxpbWl0
c1Rlc3QgOiBwdWJsaWMgQU5HTEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBzdHJ1Y3QgUkdC
QTgKLSAgICB7Ci0gICAgICAgIHVpbnQ4X3QgUiwgRywgQiwgQTsKLSAgICB9OwotCi0gICAgVGV4
dHVyZUxpbWl0c1Rlc3QoKQotICAgICAgICA6IG1Qcm9ncmFtKDApLCBtTWF4VmVydGV4VGV4dHVy
ZXMoMCksIG1NYXhGcmFnbWVudFRleHR1cmVzKDApLCBtTWF4Q29tYmluZWRUZXh0dXJlcygwKQot
ICAgIHsKLSAgICAgICAgc2V0V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0V2luZG93SGVp
Z2h0KDEyOCk7Ci0gICAgICAgIHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZp
Z0dyZWVuQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNl
dENvbmZpZ0FscGhhQml0cyg4KTsKLSAgICB9Ci0KLSAgICB+VGV4dHVyZUxpbWl0c1Rlc3QoKQot
ICAgIHsKLSAgICAgICAgaWYgKG1Qcm9ncmFtICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgICAgICAgICBtUHJvZ3JhbSA9IDA7Ci0K
LSAgICAgICAgICAgIGlmICghbVRleHR1cmVzLmVtcHR5KCkpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgZ2xEZWxldGVUZXh0dXJlcyhzdGF0aWNfY2FzdDxHTHNpemVpPihtVGV4dHVy
ZXMuc2l6ZSgpKSwgJm1UZXh0dXJlc1swXSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVz
dDo6U2V0VXAoKTsKLQotICAgICAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WRVJURVhfVEVYVFVS
RV9JTUFHRV9VTklUUywgJm1NYXhWZXJ0ZXhUZXh0dXJlcyk7Ci0gICAgICAgIGdsR2V0SW50ZWdl
cnYoR0xfTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFMsICZtTWF4RnJhZ21lbnRUZXh0dXJlcyk7Ci0g
ICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMs
ICZtTWF4Q29tYmluZWRUZXh0dXJlcyk7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
Ci0gICAgfQotCi0gICAgdm9pZCBjb21waWxlUHJvZ3JhbVdpdGhUZXh0dXJlQ291bnRzKGNvbnN0
IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhQcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IHZlcnRleFRleHR1cmVDb3VudCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgdmVydGV4QWN0aXZlVGV4dHVyZUNvdW50LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyAmZnJhZ1ByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R0xpbnQgZnJhZ21lbnRUZXh0dXJlQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdMaW50IGZyYWdtZW50QWN0aXZlVGV4dHVyZUNvdW50KQotICAgIHsKLSAg
ICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gdmVydGV4U2hhZGVyU3RyOwotICAgICAgICB2ZXJ0ZXhT
aGFkZXJTdHIgPDwgImF0dHJpYnV0ZSB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgPDwgInZhcnlpbmcgdmVjNCBjb2xvcjtcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJ2YXJ5aW5nIHZlYzIgdGV4Q29vcmQ7XG4iOwotCi0gICAgICAgIGZvciAoR0xpbnQg
dGV4dHVyZUluZGV4ID0gMDsgdGV4dHVyZUluZGV4IDwgdmVydGV4VGV4dHVyZUNvdW50OyArK3Rl
eHR1cmVJbmRleCkKLSAgICAgICAgewotICAgICAgICAgICAgdmVydGV4U2hhZGVyU3RyIDw8ICJ1
bmlmb3JtIHNhbXBsZXIyRCAiIDw8IHZlcnRleFByZWZpeCA8PCB0ZXh0dXJlSW5kZXggPDwgIjtc
biI7Ci0gICAgICAgIH0KLQotICAgICAgICB2ZXJ0ZXhTaGFkZXJTdHIgPDwgInZvaWQgbWFpbigp
IHtcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgIGdsX1Bvc2l0aW9uID0gdmVjNChw
b3NpdGlvbiwgMCwgMSk7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCAiICB0ZXhDb29y
ZCA9IChwb3NpdGlvbiAqIDAuNSkgKyAwLjU7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICA8
PCAiICBjb2xvciA9IHZlYzQoMCk7XG4iOwotCi0gICAgICAgIGZvciAoR0xpbnQgdGV4dHVyZUlu
ZGV4ID0gMDsgdGV4dHVyZUluZGV4IDwgdmVydGV4QWN0aXZlVGV4dHVyZUNvdW50OyArK3RleHR1
cmVJbmRleCkKLSAgICAgICAgewotICAgICAgICAgICAgdmVydGV4U2hhZGVyU3RyIDw8ICIgIGNv
bG9yICs9IHRleHR1cmUyRCgiIDw8IHZlcnRleFByZWZpeCA8PCB0ZXh0dXJlSW5kZXgKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCB0ZXhDb29yZCk7XG4iOwotICAgICAgICB9Ci0K
LSAgICAgICAgdmVydGV4U2hhZGVyU3RyIDw8ICJ9IjsKLQotICAgICAgICBzdGQ6OnN0cmluZ3N0
cmVhbSBmcmFnbWVudFNoYWRlclN0cjsKLSAgICAgICAgZnJhZ21lbnRTaGFkZXJTdHIgPDwgInZh
cnlpbmcgbWVkaXVtcCB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICA8
PCAidmFyeWluZyBtZWRpdW1wIHZlYzIgdGV4Q29vcmQ7XG4iOwotCi0gICAgICAgIGZvciAoR0xp
bnQgdGV4dHVyZUluZGV4ID0gMDsgdGV4dHVyZUluZGV4IDwgZnJhZ21lbnRUZXh0dXJlQ291bnQ7
ICsrdGV4dHVyZUluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICBmcmFnbWVudFNoYWRlclN0
ciA8PCAidW5pZm9ybSBzYW1wbGVyMkQgIiA8PCBmcmFnUHJlZml4IDw8IHRleHR1cmVJbmRleCA8
PCAiO1xuIjsKLSAgICAgICAgfQotCi0gICAgICAgIGZyYWdtZW50U2hhZGVyU3RyIDw8ICJ2b2lk
IG1haW4oKSB7XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIgIGdsX0ZyYWdDb2xv
ciA9IGNvbG9yO1xuIjsKLQotICAgICAgICBmb3IgKEdMaW50IHRleHR1cmVJbmRleCA9IDA7IHRl
eHR1cmVJbmRleCA8IGZyYWdtZW50QWN0aXZlVGV4dHVyZUNvdW50OyArK3RleHR1cmVJbmRleCkK
LSAgICAgICAgewotICAgICAgICAgICAgZnJhZ21lbnRTaGFkZXJTdHIgPDwgIiAgZ2xfRnJhZ0Nv
bG9yICs9IHRleHR1cmUyRCgiIDw8IGZyYWdQcmVmaXggPDwgdGV4dHVyZUluZGV4Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICA8PCAiLCB0ZXhDb29yZCk7XG4iOwotICAgICAgICB9Ci0K
LSAgICAgICAgZnJhZ21lbnRTaGFkZXJTdHIgPDwgIn0iOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZ2ZXJ0ZXhTaGFkZXJTb3VyY2UgICA9IHZlcnRleFNoYWRlclN0ci5zdHIoKTsKLSAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdtZW50U2hhZGVyU291cmNlID0gZnJhZ21lbnRT
aGFkZXJTdHIuc3RyKCk7Ci0KLSAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0
ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICB9Ci0KLSAgICBSR0JB
OCBnZXRQaXhlbChHTGludCB0ZXhJbmRleCkKLSAgICB7Ci0gICAgICAgIFJHQkE4IHBpeGVsID0g
e3N0YXRpY19jYXN0PHVpbnQ4X3Q+KHRleEluZGV4ICYgMHg3dSksIHN0YXRpY19jYXN0PHVpbnQ4
X3Q+KHRleEluZGV4ID4+IDMpLAotICAgICAgICAgICAgICAgICAgICAgICAwLCAyNTV1fTsKLSAg
ICAgICAgcmV0dXJuIHBpeGVsOwotICAgIH0KLQotICAgIHZvaWQgaW5pdFRleHR1cmVzKEdMaW50
IHRleDJEQ291bnQsIEdMaW50IHRleEN1YmVDb3VudCkKLSAgICB7Ci0gICAgICAgIEdMaW50IHRv
dGFsQ291bnQgPSB0ZXgyRENvdW50ICsgdGV4Q3ViZUNvdW50OwotICAgICAgICBtVGV4dHVyZXMu
YXNzaWduKHRvdGFsQ291bnQsIDApOwotICAgICAgICBnbEdlblRleHR1cmVzKHRvdGFsQ291bnQs
ICZtVGV4dHVyZXNbMF0pOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAg
ICBzdGQ6OnZlY3RvcjxSR0JBOD4gdGV4RGF0YSgxNiAqIDE2KTsKLQotICAgICAgICBHTGludCB0
ZXhJbmRleCA9IDA7Ci0gICAgICAgIGZvciAoOyB0ZXhJbmRleCA8IHRleDJEQ291bnQ7ICsrdGV4
SW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRleERhdGEuYXNzaWduKHRleERhdGEuc2l6
ZSgpLCBnZXRQaXhlbCh0ZXhJbmRleCkpOwotICAgICAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKEdM
X1RFWFRVUkUwICsgdGV4SW5kZXgpOwotICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCBtVGV4dHVyZXNbdGV4SW5kZXhdKTsKLSAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChH
TF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJnRleERhdGFbMF0pOwotICAgICAgICAg
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwg
R0xfTkVBUkVTVCk7Ci0gICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICAgICAgICAgIGdsVGV4UGFy
YW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURH
RSk7Ci0gICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVS
RV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgICAgICB9Ci0KLSAgICAgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgZm9yICg7IHRleEluZGV4IDwgdGV4Q3ViZUNvdW50
OyArK3RleEluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZXhEYXRhLmFzc2lnbih0ZXhE
YXRhLnNpemUoKSwgZ2V0UGl4ZWwodGV4SW5kZXgpKTsKLSAgICAgICAgICAgIGdsQWN0aXZlVGV4
dHVyZShHTF9URVhUVVJFMCArIHRleEluZGV4KTsKLSAgICAgICAgICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV9DVUJFX01BUCwgbVRleHR1cmVzW3RleEluZGV4XSk7Ci0gICAgICAgICAgICBn
bFRleEltYWdlMkQoR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9YLCAwLCBHTF9SR0JBLCAx
NiwgMTYsIDAsIEdMX1JHQkEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURf
QllURSwgJnRleERhdGFbMF0pOwotICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
Q1VCRV9NQVBfUE9TSVRJVkVfWSwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICZ0ZXhEYXRhWzBdKTsKLSAg
ICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1osIDAs
IEdMX1JHQkEsIDE2LCAxNiwgMCwgR0xfUkdCQSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBH
TF9VTlNJR05FRF9CWVRFLCAmdGV4RGF0YVswXSk7Ci0gICAgICAgICAgICBnbFRleEltYWdlMkQo
R0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YLCAwLCBHTF9SR0JBLCAxNiwgMTYsIDAsIEdM
X1JHQkEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgR0xfVU5TSUdORURfQllURSwgJnRleERh
dGFbMF0pOwotICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVH
QVRJVkVfWSwgMCwgR0xfUkdCQSwgMTYsIDE2LCAwLCBHTF9SR0JBLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsICZ0ZXhEYXRhWzBdKTsKLSAgICAgICAgICAgIGds
VGV4SW1hZ2UyRChHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1osIDAsIEdMX1JHQkEsIDE2
LCAxNiwgMCwgR0xfUkdCQSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9C
WVRFLCAmdGV4RGF0YVswXSk7Ci0gICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVS
RV9DVUJFX01BUCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICAgICAg
ICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX01BR19G
SUxURVIsIEdMX05FQVJFU1QpOwotICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfQ1VCRV9NQVAsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAg
ICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFX0NVQkVfTUFQLCBHTF9URVhUVVJFX1dS
QVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHRlc3RXaXRoVGV4dHVyZXMoR0xpbnQgdmVy
dGV4VGV4dHVyZUNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyAmdmVydGV4VGV4dHVyZVByZWZpeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR0xp
bnQgZnJhZ21lbnRUZXh0dXJlQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nICZmcmFnbWVudFRleHR1cmVQcmVmaXgpCi0gICAgewotICAgICAgICAvLyBH
ZW5lcmF0ZSB0ZXh0dXJlcwotICAgICAgICBpbml0VGV4dHVyZXModmVydGV4VGV4dHVyZUNvdW50
ICsgZnJhZ21lbnRUZXh0dXJlQ291bnQsIDApOwotCi0gICAgICAgIGdsVXNlUHJvZ3JhbShtUHJv
Z3JhbSk7Ci0gICAgICAgIFJHQkE4IGV4cGVjdGVkU3VtID0gezB9OwotICAgICAgICBmb3IgKEdM
aW50IHRleEluZGV4ID0gMDsgdGV4SW5kZXggPCB2ZXJ0ZXhUZXh0dXJlQ291bnQ7ICsrdGV4SW5k
ZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHVuaWZvcm1OYW1l
U3RyOwotICAgICAgICAgICAgdW5pZm9ybU5hbWVTdHIgPDwgdmVydGV4VGV4dHVyZVByZWZpeCA8
PCB0ZXhJbmRleDsKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ1bmlmb3JtTmFtZSA9
IHVuaWZvcm1OYW1lU3RyLnN0cigpOwotICAgICAgICAgICAgR0xpbnQgbG9jYXRpb24gPSBnbEdl
dFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgdW5pZm9ybU5hbWUuY19zdHIoKSk7Ci0gICAgICAg
ICAgICBBU1NFUlRfTkUoLTEsIGxvY2F0aW9uKTsKLQotICAgICAgICAgICAgZ2xVbmlmb3JtMWko
bG9jYXRpb24sIHRleEluZGV4KTsKLSAgICAgICAgICAgIFJHQkE4IGNvbnRyaWJ1dGlvbiA9IGdl
dFBpeGVsKHRleEluZGV4KTsKLSAgICAgICAgICAgIGV4cGVjdGVkU3VtLlIgKz0gY29udHJpYnV0
aW9uLlI7Ci0gICAgICAgICAgICBleHBlY3RlZFN1bS5HICs9IGNvbnRyaWJ1dGlvbi5HOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZm9yIChHTGludCB0ZXhJbmRleCA9IDA7IHRleEluZGV4IDwgZnJh
Z21lbnRUZXh0dXJlQ291bnQ7ICsrdGV4SW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0
ZDo6c3RyaW5nc3RyZWFtIHVuaWZvcm1OYW1lU3RyOwotICAgICAgICAgICAgdW5pZm9ybU5hbWVT
dHIgPDwgZnJhZ21lbnRUZXh0dXJlUHJlZml4IDw8IHRleEluZGV4OwotICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnVuaWZvcm1OYW1lID0gdW5pZm9ybU5hbWVTdHIuc3RyKCk7Ci0gICAg
ICAgICAgICBHTGludCBsb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCB1
bmlmb3JtTmFtZS5jX3N0cigpKTsKLSAgICAgICAgICAgIEFTU0VSVF9ORSgtMSwgbG9jYXRpb24p
OwotCi0gICAgICAgICAgICBnbFVuaWZvcm0xaShsb2NhdGlvbiwgdGV4SW5kZXggKyB2ZXJ0ZXhU
ZXh0dXJlQ291bnQpOwotICAgICAgICAgICAgUkdCQTggY29udHJpYnV0aW9uID0gZ2V0UGl4ZWwo
dGV4SW5kZXggKyB2ZXJ0ZXhUZXh0dXJlQ291bnQpOwotICAgICAgICAgICAgZXhwZWN0ZWRTdW0u
UiArPSBjb250cmlidXRpb24uUjsKLSAgICAgICAgICAgIGV4cGVjdGVkU3VtLkcgKz0gY29udHJp
YnV0aW9uLkc7Ci0gICAgICAgIH0KLQotICAgICAgICBBU1NFUlRfR0UoMjU2dSwgZXhwZWN0ZWRT
dW0uRyk7Ci0KLSAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwot
ICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKDAs
IDAsIGV4cGVjdGVkU3VtLlIsIGV4cGVjdGVkU3VtLkcsIDAsIDI1NSk7Ci0gICAgfQotCi0gICAg
R0x1aW50IG1Qcm9ncmFtOwotICAgIHN0ZDo6dmVjdG9yPEdMdWludD4gbVRleHR1cmVzOwotICAg
IEdMaW50IG1NYXhWZXJ0ZXhUZXh0dXJlczsKLSAgICBHTGludCBtTWF4RnJhZ21lbnRUZXh0dXJl
czsKLSAgICBHTGludCBtTWF4Q29tYmluZWRUZXh0dXJlczsKLX07Ci0KLS8vIFRlc3QgcmVuZGVy
aW5nIHdpdGggdGhlIG1heGltdW0gdmVydGV4IHRleHR1cmUgdW5pdHMuCi1URVNUX1AoVGV4dHVy
ZUxpbWl0c1Rlc3QsIE1heFZlcnRleFRleHR1cmVzKQotewotICAgIC8vIFRPRE8oam1hZGlsbCk6
IEZpZ3VyZSBvdXQgd2h5IHRoaXMgZmFpbHMgb24gSW50ZWwuCi0gICAgaWYgKElzSW50ZWwoKSAm
JiBHZXRQYXJhbSgpLmdldFJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BF
TkdMX0FOR0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24g
SW50ZWwuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb21w
aWxlUHJvZ3JhbVdpdGhUZXh0dXJlQ291bnRzKCJ0ZXgiLCBtTWF4VmVydGV4VGV4dHVyZXMsIG1N
YXhWZXJ0ZXhUZXh0dXJlcywgInRleCIsIDAsIDApOwotICAgIEFTU0VSVF9ORSgwdSwgbVByb2dy
YW0pOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgdGVzdFdpdGhUZXh0dXJlcyht
TWF4VmVydGV4VGV4dHVyZXMsICJ0ZXgiLCAwLCAidGV4Iik7Ci19Ci0KLS8vIFRlc3QgcmVuZGVy
aW5nIHdpdGggdGhlIG1heGltdW0gZnJhZ21lbnQgdGV4dHVyZSB1bml0cy4KLVRFU1RfUChUZXh0
dXJlTGltaXRzVGVzdCwgTWF4RnJhZ21lbnRUZXh0dXJlcykKLXsKLSAgICAvLyBUT0RPKGptYWRp
bGwpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGZhaWxzIG9uIEludGVsLgotICAgIGlmIChJc0ludGVs
KCkgJiYgR2V0UGFyYW0oKS5nZXRSZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X09QRU5HTF9BTkdMRSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVk
IG9uIEludGVsLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
Y29tcGlsZVByb2dyYW1XaXRoVGV4dHVyZUNvdW50cygidGV4IiwgMCwgMCwgInRleCIsIG1NYXhG
cmFnbWVudFRleHR1cmVzLCBtTWF4RnJhZ21lbnRUZXh0dXJlcyk7Ci0gICAgQVNTRVJUX05FKDB1
LCBtUHJvZ3JhbSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICB0ZXN0V2l0aFRl
eHR1cmVzKG1NYXhGcmFnbWVudFRleHR1cmVzLCAidGV4IiwgMCwgInRleCIpOwotfQotCi0vLyBU
ZXN0IHJlbmRlcmluZyB3aXRoIG1heGltdW0gY29tYmluZWQgdGV4dHVyZSB1bml0cy4KLVRFU1Rf
UChUZXh0dXJlTGltaXRzVGVzdCwgTWF4Q29tYmluZWRUZXh0dXJlcykKLXsKLSAgICAvLyBUT0RP
KGptYWRpbGwpOiBJbnZlc3RpZ2F0ZSB3b3JrYXJvdW5kLgotICAgIGlmIChJc0ludGVsKCkgJiYg
R2V0UGFyYW0oKSA9PSBFUzJfT1BFTkdMKCkpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3Qgc2tpcHBlZCBvbiBJbnRlbC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIEdMaW50IHZlcnRleFRleHR1cmVzID0gbU1heFZlcnRleFRleHR1cmVzOwot
Ci0gICAgaWYgKHZlcnRleFRleHR1cmVzICsgbU1heEZyYWdtZW50VGV4dHVyZXMgPiBtTWF4Q29t
YmluZWRUZXh0dXJlcykKLSAgICB7Ci0gICAgICAgIHZlcnRleFRleHR1cmVzID0gbU1heENvbWJp
bmVkVGV4dHVyZXMgLSBtTWF4RnJhZ21lbnRUZXh0dXJlczsKLSAgICB9Ci0KLSAgICBjb21waWxl
UHJvZ3JhbVdpdGhUZXh0dXJlQ291bnRzKCJ2dGV4IiwgdmVydGV4VGV4dHVyZXMsIHZlcnRleFRl
eHR1cmVzLCAiZnRleCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTWF4
RnJhZ21lbnRUZXh0dXJlcywgbU1heEZyYWdtZW50VGV4dHVyZXMpOwotICAgIEFTU0VSVF9ORSgw
dSwgbVByb2dyYW0pOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgdGVzdFdpdGhU
ZXh0dXJlcyh2ZXJ0ZXhUZXh0dXJlcywgInZ0ZXgiLCBtTWF4RnJhZ21lbnRUZXh0dXJlcywgImZ0
ZXgiKTsKLX0KLQotLy8gTmVnYXRpdmUgdGVzdCBmb3IgZXhjZWVkaW5nIHRoZSBudW1iZXIgb2Yg
dmVydGV4IHRleHR1cmVzCi1URVNUX1AoVGV4dHVyZUxpbWl0c1Rlc3QsIEV4Y2Vzc2l2ZVZlcnRl
eFRleHR1cmVzKQotewotICAgIGNvbXBpbGVQcm9ncmFtV2l0aFRleHR1cmVDb3VudHMoInRleCIs
IG1NYXhWZXJ0ZXhUZXh0dXJlcyArIDEsIG1NYXhWZXJ0ZXhUZXh0dXJlcyArIDEsICJ0ZXgiLCAw
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgQVNTRVJUX0VR
KDB1LCBtUHJvZ3JhbSk7Ci19Ci0KLS8vIE5lZ2F0aXZlIHRlc3QgZm9yIGV4Y2VlZGluZyB0aGUg
bnVtYmVyIG9mIGZyYWdtZW50IHRleHR1cmVzCi1URVNUX1AoVGV4dHVyZUxpbWl0c1Rlc3QsIEV4
Y2Vzc2l2ZUZyYWdtZW50VGV4dHVyZXMpCi17Ci0gICAgY29tcGlsZVByb2dyYW1XaXRoVGV4dHVy
ZUNvdW50cygidGV4IiwgMCwgMCwgInRleCIsIG1NYXhGcmFnbWVudFRleHR1cmVzICsgMSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1NYXhGcmFnbWVudFRleHR1cmVzICsg
MSk7Ci0gICAgQVNTRVJUX0VRKDB1LCBtUHJvZ3JhbSk7Ci19Ci0KLS8vIFRlc3QgYWN0aXZlIHZl
cnRleCB0ZXh0dXJlcyB1bmRlciB0aGUgbGltaXQsIGJ1dCBleGNlc3NpdmUgdGV4dHVyZXMgc3Bl
Y2lmaWVkLgotVEVTVF9QKFRleHR1cmVMaW1pdHNUZXN0LCBNYXhBY3RpdmVWZXJ0ZXhUZXh0dXJl
cykKLXsKLSAgICAvLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGZhaWxzIG9u
IEludGVsLgotICAgIGlmIChJc0ludGVsKCkgJiYgR2V0UGFyYW0oKS5nZXRSZW5kZXJlcigpID09
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0gICAgICAgIHN0
ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsLiIgPDwgc3RkOjplbmRsOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgY29tcGlsZVByb2dyYW1XaXRoVGV4dHVyZUNvdW50cygi
dGV4IiwgbU1heFZlcnRleFRleHR1cmVzICsgNCwgbU1heFZlcnRleFRleHR1cmVzLCAidGV4Iiwg
MCwgMCk7Ci0gICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7Ci0gICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Ci0KLSAgICB0ZXN0V2l0aFRleHR1cmVzKG1NYXhWZXJ0ZXhUZXh0dXJlcywgInRleCIs
IDAsICJ0ZXgiKTsKLX0KLQotLy8gVGVzdCBhY3RpdmUgZnJhZ21lbnQgdGV4dHVyZXMgdW5kZXIg
dGhlIGxpbWl0LCBidXQgZXhjZXNzaXZlIHRleHR1cmVzIHNwZWNpZmllZC4KLVRFU1RfUChUZXh0
dXJlTGltaXRzVGVzdCwgTWF4QWN0aXZlRnJhZ21lbnRUZXh0dXJlcykKLXsKLSAgICAvLyBUT0RP
KGptYWRpbGwpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGZhaWxzIG9uIEludGVsLgotICAgIGlmIChJ
c0ludGVsKCkgJiYgR2V0UGFyYW0oKS5nZXRSZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdM
RV9UWVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBz
a2lwcGVkIG9uIEludGVsLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgY29tcGlsZVByb2dyYW1XaXRoVGV4dHVyZUNvdW50cygidGV4IiwgMCwgMCwgInRleCIs
IG1NYXhGcmFnbWVudFRleHR1cmVzICsgNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1NYXhGcmFnbWVudFRleHR1cmVzKTsKLSAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFt
KTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIHRlc3RXaXRoVGV4dHVyZXMoMCwg
InRleCIsIG1NYXhGcmFnbWVudFRleHR1cmVzLCAidGV4Iik7Ci19Ci0KLS8vIE5lZ2F0aXZlIHRl
c3QgZm9yIHBvaW50aW5nIHR3byBzYW1wbGVyIHVuaWZvcm1zIG9mIGRpZmZlcmVudCB0eXBlcyB0
byB0aGUgc2FtZSB0ZXh0dXJlLgotLy8gR0xFUyAyLjAuMjUgc2VjdGlvbiAyLjEwLjQgcGFnZSAz
OS4KLVRFU1RfUChUZXh0dXJlTGltaXRzVGVzdCwgVGV4dHVyZVR5cGVDb25mbGljdCkKLXsKLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U2hhZGVyID0KLSAgICAgICAgImF0dHJpYnV0ZSB2
ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAidmFyeWluZyBmbG9hdCBjb2xvcjtcbiIKLSAgICAg
ICAgInVuaWZvcm0gc2FtcGxlcjJEIHRleDJEO1xuIgotICAgICAgICAidW5pZm9ybSBzYW1wbGVy
Q3ViZSB0ZXhDdWJlO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBn
bF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAsIDEpO1xuIgotICAgICAgICAiICB2ZWMyIHRl
eENvb3JkID0gKHBvc2l0aW9uICogMC41KSArIDAuNTtcbiIKLSAgICAgICAgIiAgY29sb3IgPSB0
ZXh0dXJlMkQodGV4MkQsIHRleENvb3JkKS54O1xuIgotICAgICAgICAiICBjb2xvciArPSB0ZXh0
dXJlQ3ViZSh0ZXhDdWJlLCB2ZWMzKHRleENvb3JkLCAwKSkueDtcbiIKLSAgICAgICAgIn0iOwot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRlciA9Ci0gICAgICAgICJ2YXJ5aW5n
IG1lZGl1bXAgZmxvYXQgY29sb3I7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAg
ICAgICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQoY29sb3IsIDAsIDAsIDEpO1xuIgotICAgICAgICAi
fSI7Ci0KLSAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlciwgZnJhZ21l
bnRTaGFkZXIpOwotICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotCi0gICAgaW5pdFRleHR1
cmVzKDEsIDApOwotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBHTGludCB0ZXgy
RExvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ0ZXgyRCIpOwotICAg
IEFTU0VSVF9ORSgtMSwgdGV4MkRMb2NhdGlvbik7Ci0gICAgR0xpbnQgdGV4Q3ViZUxvY2F0aW9u
ID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ0ZXhDdWJlIik7Ci0gICAgQVNTRVJU
X05FKC0xLCB0ZXhDdWJlTG9jYXRpb24pOwotCi0gICAgZ2xVbmlmb3JtMWkodGV4MkRMb2NhdGlv
biwgMCk7Ci0gICAgZ2xVbmlmb3JtMWkodGV4Q3ViZUxvY2F0aW9uLCAwKTsKLSAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKLQotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVm
KTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0vLyBO
ZWdhdGl2ZSB0ZXN0IGZvciByZW5kZXJpbmcgd2l0aCB0ZXh0dXJlIG91dHNpZGUgdGhlIHZhbGlk
IHJhbmdlLgotLy8gVE9ETyhqbWFkaWxsKTogUG9zc2libHkgYWRqdXN0IHRoZSB0ZXN0IGFjY29y
ZGluZyB0byB0aGUgc3BlYzoKLS8vIEdMRVMgMy4wLjQgc2VjdGlvbiAyLjEyLjcgbWVudGlvbnMg
dGhhdCBzcGVjaWZ5aW5nIGFuIG91dC1vZi1yYW5nZSBzYW1wbGVyIHVuaWZvcm0gdmFsdWUKLS8v
IGdlbmVyYXRlcyBhbiBJTlZBTElEX1ZBTFVFIGVycm9yIC0gR0xFUyAyLjAgZG9lc24ndCB5ZXQg
aGF2ZSB0aGlzIG1lbnRpb24uCi1URVNUX1AoVGV4dHVyZUxpbWl0c1Rlc3QsIERyYXdXaXRoVGV4
dHVyZVBhc3RNYXhpbXVtKQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhTaGFkZXIg
PQotICAgICAgICAiYXR0cmlidXRlIHZlYzIgcG9zaXRpb247XG4iCi0gICAgICAgICJ2YXJ5aW5n
IGZsb2F0IGNvbG9yO1xuIgotICAgICAgICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4MkQ7XG4iCi0g
ICAgICAgICJ2b2lkIG1haW4oKSB7XG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0gdmVjNChw
b3NpdGlvbiwgMCwgMSk7XG4iCi0gICAgICAgICIgIHZlYzIgdGV4Q29vcmQgPSAocG9zaXRpb24g
KiAwLjUpICsgMC41O1xuIgotICAgICAgICAiICBjb2xvciA9IHRleHR1cmUyRCh0ZXgyRCwgdGV4
Q29vcmQpLng7XG4iCi0gICAgICAgICJ9IjsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21l
bnRTaGFkZXIgPQotICAgICAgICAidmFyeWluZyBtZWRpdW1wIGZsb2F0IGNvbG9yO1xuIgotICAg
ICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KGNv
bG9yLCAwLCAwLCAxKTtcbiIKLSAgICAgICAgIn0iOwotCi0gICAgbVByb2dyYW0gPSBDb21waWxl
UHJvZ3JhbSh2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyKTsKLSAgICBBU1NFUlRfTkUoMHUs
IG1Qcm9ncmFtKTsKLQotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgR0xpbnQgdGV4
MkRMb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidGV4MkQiKTsKLSAg
ICBBU1NFUlRfTkUoLTEsIHRleDJETG9jYXRpb24pOwotCi0gICAgZ2xVbmlmb3JtMWkodGV4MkRM
b2NhdGlvbiwgbU1heENvbWJpbmVkVGV4dHVyZXMpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEVYUEVD
VF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLWNsYXNzIFRleHR1cmUyRE5v
cm0xNlRlc3RFUzMgOiBwdWJsaWMgVGV4dHVyZTJEVGVzdEVTMwotewotICBwcm90ZWN0ZWQ6Ci0g
ICAgVGV4dHVyZTJETm9ybTE2VGVzdEVTMygpIDogVGV4dHVyZTJEVGVzdEVTMygpLCBtVGV4dHVy
ZXN7MCwgMCwgMH0sIG1GQk8oMCksIG1SZW5kZXJidWZmZXIoMCkge30KLQotICAgIHZvaWQgU2V0
VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgVGV4dHVyZTJEVGVzdEVTMzo6U2V0VXAoKTsK
LQotICAgICAgICBnbEFjdGl2ZVRleHR1cmUoR0xfVEVYVFVSRTApOwotICAgICAgICBnbEdlblRl
eHR1cmVzKDMsIG1UZXh0dXJlcyk7Ci0gICAgICAgIGdsR2VuRnJhbWVidWZmZXJzKDEsICZtRkJP
KTsKLSAgICAgICAgZ2xHZW5SZW5kZXJidWZmZXJzKDEsICZtUmVuZGVyYnVmZmVyKTsKLQotICAg
ICAgICBmb3IgKHNpemVfdCB0ZXh0dXJlSW5kZXggPSAwOyB0ZXh0dXJlSW5kZXggPCAzOyB0ZXh0
dXJlSW5kZXgrKykKLSAgICAgICAgewotICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhU
VVJFXzJELCBtVGV4dHVyZXNbdGV4dHVyZUluZGV4XSk7Ci0gICAgICAgICAgICBnbFRleFBhcmFt
ZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOwot
ICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFH
X0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgfQotCi0gICAgICAgIGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgMCk7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAg
fQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0
ZVRleHR1cmVzKDMsIG1UZXh0dXJlcyk7Ci0gICAgICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEs
ICZtRkJPKTsKLSAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJzKDEsICZtUmVuZGVyYnVmZmVy
KTsKLQotICAgICAgICBUZXh0dXJlMkRUZXN0RVMzOjpUZWFyRG93bigpOwotICAgIH0KLQotICAg
IHZvaWQgdGVzdE5vcm0xNlRleHR1cmUoR0xpbnQgaW50ZXJuYWxmb3JtYXQsIEdMZW51bSBmb3Jt
YXQsIEdMZW51bSB0eXBlKQotICAgIHsKLSAgICAgICAgR0x1c2hvcnQgcGl4ZWxWYWx1ZSAgPSAo
dHlwZSA9PSBHTF9TSE9SVCkgPyAweDdGRkYgOiAweDZBMzU7Ci0gICAgICAgIEdMdXNob3J0IGlt
YWdlRGF0YVtdID0ge3BpeGVsVmFsdWUsIHBpeGVsVmFsdWUsIHBpeGVsVmFsdWUsIHBpeGVsVmFs
dWV9OwotCi0gICAgICAgIHNldFVwUHJvZ3JhbSgpOwotCi0gICAgICAgIGdsQmluZEZyYW1lYnVm
ZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRkJPKTsKLSAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUy
RChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1U
ZXh0dXJlc1swXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLQotICAgICAg
ICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1swXSk7Ci0gICAgICAgIGds
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBMTZfRVhULCAxLCAxLCAwLCBHTF9S
R0JBLCBHTF9VTlNJR05FRF9TSE9SVCwgbnVsbHB0cik7Ci0KLSAgICAgICAgZ2xCaW5kVGV4dHVy
ZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZXNbMV0pOwotICAgICAgICBnbFRleEltYWdlMkQoR0xf
VEVYVFVSRV8yRCwgMCwgaW50ZXJuYWxmb3JtYXQsIDEsIDEsIDAsIGZvcm1hdCwgdHlwZSwgaW1h
Z2VEYXRhKTsKLQotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBkcmF3
UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICAgICAgR0x1Ynl0ZSBleHBl
Y3RlZFZhbHVlID0gKHR5cGUgPT0gR0xfU0hPUlQpID8gMHhGRiA6IHN0YXRpY19jYXN0PEdMdWJ5
dGU+KHBpeGVsVmFsdWUgPj4gOCk7Ci0KLSAgICAgICAgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKAot
ICAgICAgICAgICAgMCwgMCwgU2xpY2VGb3JtYXRDb2xvcigKLSAgICAgICAgICAgICAgICAgICAg
ICBmb3JtYXQsIEdMQ29sb3IoZXhwZWN0ZWRWYWx1ZSwgZXhwZWN0ZWRWYWx1ZSwgZXhwZWN0ZWRW
YWx1ZSwgZXhwZWN0ZWRWYWx1ZSkpKTsKLQotICAgICAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9G
UkFNRUJVRkZFUiwgMCk7Ci0KLSAgICAgICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQot
Ci0gICAgdm9pZCB0ZXN0Tm9ybTE2UmVuZGVyKEdMaW50IGludGVybmFsZm9ybWF0LCBHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZSkKLSAgICB7Ci0gICAgICAgIEdMdXNob3J0IHBpeGVsVmFsdWUg
PSAweDZBMzU7Ci0gICAgICAgIEdMdXNob3J0IGltYWdlRGF0YVtdID0ge3BpeGVsVmFsdWUsIHBp
eGVsVmFsdWUsIHBpeGVsVmFsdWUsIHBpeGVsVmFsdWV9OwotCi0gICAgICAgIHNldFVwUHJvZ3Jh
bSgpOwotCi0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmVzWzFd
KTsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIGludGVybmFsZm9ybWF0
LCAxLCAxLCAwLCBmb3JtYXQsIHR5cGUsIG51bGxwdHIpOwotCi0gICAgICAgIGdsQmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtRkJPKTsKLSAgICAgICAgZ2xGcmFtZWJ1ZmZlclRleHR1
cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQs
IG1UZXh0dXJlc1sxXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLQotICAg
ICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1syXSk7Ci0gICAgICAg
IGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBpbnRlcm5hbGZvcm1hdCwgMSwgMSwgMCwg
Zm9ybWF0LCB0eXBlLCBpbWFnZURhdGEpOwotCi0gICAgICAgIEVYUEVDVF9HTF9OT19FUlJPUigp
OwotCi0gICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAg
ICAgICBHTHVieXRlIGV4cGVjdGVkVmFsdWUgPSBzdGF0aWNfY2FzdDxHTHVieXRlPihwaXhlbFZh
bHVlID4+IDgpOwotICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoCi0gICAgICAgICAgICAw
LCAwLCBTbGljZUZvcm1hdENvbG9yKAotICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgR0xD
b2xvcihleHBlY3RlZFZhbHVlLCBleHBlY3RlZFZhbHVlLCBleHBlY3RlZFZhbHVlLCBleHBlY3Rl
ZFZhbHVlKSkpOwotCi0gICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIs
IG1SZW5kZXJidWZmZXIpOwotICAgICAgICBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2UoR0xfUkVOREVS
QlVGRkVSLCBpbnRlcm5hbGZvcm1hdCwgMSwgMSk7Ci0gICAgICAgIGdsRnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9SRU5ERVJC
VUZGRVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlbmRlcmJ1ZmZlcik7
Ci0gICAgICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZGRVIsIDApOwotICAgICAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICBnbENsZWFyQ29sb3IoMS4wZiwgMS4w
ZiwgMS4wZiwgMS4wZik7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0K
LSAgICAgICAgZ2xDb3B5VGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAwLCAw
LCAxLCAxKTsKLQotICAgICAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgU2xpY2VGb3Jt
YXRDb2xvcihmb3JtYXQsIEdMQ29sb3I6OndoaXRlKSk7Ci0KLSAgICAgICAgZ2xCaW5kRnJhbWVi
dWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigp
OwotICAgIH0KLQotICAgIEdMdWludCBtVGV4dHVyZXNbM107Ci0gICAgR0x1aW50IG1GQk87Ci0g
ICAgR0x1aW50IG1SZW5kZXJidWZmZXI7Ci19OwotCi0vLyBUZXN0IHRleHR1cmUgZm9ybWF0cyBl
bmFibGVkIGJ5IHRoZSBHTF9FWFRfdGV4dHVyZV9ub3JtMTYgZXh0ZW5zaW9uLgotVEVTVF9QKFRl
eHR1cmUyRE5vcm0xNlRlc3RFUzMsIFRleHR1cmVOb3JtMTZUZXN0KQotewotICAgIGlmICghZXh0
ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3RleHR1cmVfbm9ybTE2IikpCi0gICAgewotICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBkdWUgdG8gbWlzc2luZyBHTF9FWFRfdGV4dHVyZV9u
b3JtMTYuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB0ZXN0
Tm9ybTE2VGV4dHVyZShHTF9SMTZfRVhULCBHTF9SRUQsIEdMX1VOU0lHTkVEX1NIT1JUKTsKLSAg
ICB0ZXN0Tm9ybTE2VGV4dHVyZShHTF9SRzE2X0VYVCwgR0xfUkcsIEdMX1VOU0lHTkVEX1NIT1JU
KTsKLSAgICB0ZXN0Tm9ybTE2VGV4dHVyZShHTF9SR0IxNl9FWFQsIEdMX1JHQiwgR0xfVU5TSUdO
RURfU0hPUlQpOwotICAgIHRlc3ROb3JtMTZUZXh0dXJlKEdMX1JHQkExNl9FWFQsIEdMX1JHQkEs
IEdMX1VOU0lHTkVEX1NIT1JUKTsKLSAgICB0ZXN0Tm9ybTE2VGV4dHVyZShHTF9SMTZfU05PUk1f
RVhULCBHTF9SRUQsIEdMX1NIT1JUKTsKLSAgICB0ZXN0Tm9ybTE2VGV4dHVyZShHTF9SRzE2X1NO
T1JNX0VYVCwgR0xfUkcsIEdMX1NIT1JUKTsKLSAgICB0ZXN0Tm9ybTE2VGV4dHVyZShHTF9SR0Ix
Nl9TTk9STV9FWFQsIEdMX1JHQiwgR0xfU0hPUlQpOwotICAgIHRlc3ROb3JtMTZUZXh0dXJlKEdM
X1JHQkExNl9TTk9STV9FWFQsIEdMX1JHQkEsIEdMX1NIT1JUKTsKLQotICAgIHRlc3ROb3JtMTZS
ZW5kZXIoR0xfUjE2X0VYVCwgR0xfUkVELCBHTF9VTlNJR05FRF9TSE9SVCk7Ci0gICAgdGVzdE5v
cm0xNlJlbmRlcihHTF9SRzE2X0VYVCwgR0xfUkcsIEdMX1VOU0lHTkVEX1NIT1JUKTsKLSAgICB0
ZXN0Tm9ybTE2UmVuZGVyKEdMX1JHQkExNl9FWFQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX1NIT1JU
KTsKLX0KLQotLy8gVGVzdCB0aGF0IFVOUEFDS19TS0lQX0lNQUdFUyBkb2Vzbid0IGhhdmUgYW4g
ZWZmZWN0IG9uIDJEIHRleHR1cmUgdXBsb2Fkcy4KLS8vIEdMRVMgMy4wLjQgc2VjdGlvbiAzLjgu
My4KLVRFU1RfUChUZXh0dXJlMkRUZXN0RVMzLCBVbnBhY2tTa2lwSW1hZ2VzMkQpCi17Ci0gICAg
aWYgKElzSW50ZWwoKSAmJiBJc0Rlc2t0b3BPcGVuR0woKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAvLyBUT0RPKHlub3Zpa292KTogcmUtZW5hYmxlIG9u
Y2Ugcm9vdCBjYXVzZSBvZiBodHRwOi8vYW5nbGVidWcuY29tLzE0MjkgaXMgZml4ZWQKLSAgICBp
ZiAoSXNBbmRyb2lkKCkgJiYgSXNBZHJlbm8oKSAmJiBJc09wZW5HTEVTKCkpCi0gICAgewotICAg
ICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBBZHJlbm8gT3BlbkdMRVMgb24gQW5k
cm9pZC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsQmlu
ZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBn
bFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9M
SU5FQVIpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gU0tJUF9JTUFHRVMg
c2hvdWxkIG5vdCBoYXZlIGFuIGVmZmVjdCBvbiB1cGxvYWRpbmcgMkQgdGV4dHVyZXMKLSAgICBn
bFBpeGVsU3RvcmVpKEdMX1VOUEFDS19TS0lQX0lNQUdFUywgMTAwMCk7Ci0gICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci0KLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNHcmVlbigxMjh1
ICogMTI4dSwgR0xDb2xvcjo6Z3JlZW4pOwotCi0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVf
MkQsIDAsIEdMX1JHQkE4LCAxMjgsIDEyOCwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwK
LSAgICAgICAgICAgICAgICAgcGl4ZWxzR3JlZW4uZGF0YSgpKTsKLSAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLQotICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCAx
MjgsIDEyOCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwKLSAgICAgICAgICAgICAgICAgICAg
cGl4ZWxzR3JlZW4uZGF0YSgpKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGds
VXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIs
IDAuNWYpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgRVhQRUNUX1BJWEVMX0NP
TE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKLX0KLQotLy8gVGVzdCB0aGF0IHNraXAgZGVm
aW5lZCBpbiB1bnBhY2sgcGFyYW1ldGVycyBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBkZXRl
cm1pbmluZyB3aGV0aGVyCi0vLyB1bnBhY2tpbmcgc291cmNlIGV4dGVuZHMgb3V0c2lkZSB1bnBh
Y2sgYnVmZmVyIGJvdW5kcy4KLVRFU1RfUChUZXh0dXJlMkRUZXN0RVMzLCBVbnBhY2tTa2lwUGl4
ZWxzT3V0T2ZCb3VuZHMpCi17Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4
dHVyZTJEKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9N
QUdfRklMVEVSLCBHTF9MSU5FQVIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Ci0KLSAgICBHTEJ1ZmZlciBidWY7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1VO
UEFDS19CVUZGRVIsIGJ1Zi5nZXQoKSk7Ci0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gcGl4ZWxz
R3JlZW4oMTI4dSAqIDEyOHUsIEdMQ29sb3I6OmdyZWVuKTsKLSAgICBnbEJ1ZmZlckRhdGEoR0xf
UElYRUxfVU5QQUNLX0JVRkZFUiwgcGl4ZWxzR3JlZW4uc2l6ZSgpICogNHUsIHBpeGVsc0dyZWVu
LmRhdGEoKSwKLSAgICAgICAgICAgICAgICAgR0xfRFlOQU1JQ19DT1BZKTsKLSAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKLQotICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9S
R0JBOCwgMTI4LCAxMjgsIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9Q
SVhFTFMsIDEpOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xUZXhTdWJJbWFn
ZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIDEyOCwgMTI4LCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFLCAwKTsKLSAgICBFWFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwot
Ci0gICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfU0tJUF9QSVhFTFMsIDApOwotICAgIGdsUGl4
ZWxTdG9yZWkoR0xfVU5QQUNLX1NLSVBfUk9XUywgMSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgMCwgMCwgMTI4LCAx
MjgsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgIEVYUEVDVF9HTF9FUlJPUihH
TF9JTlZBTElEX09QRVJBVElPTik7Ci19Ci0KLS8vIFRlc3QgdGhhdCB1bnBhY2tpbmcgcm93cyB0
aGF0IG92ZXJsYXAgaW4gYSBwaXhlbCB1bnBhY2sgYnVmZmVyIHdvcmtzIGFzIGV4cGVjdGVkLgot
VEVTVF9QKFRleHR1cmUyRFRlc3RFUzMsIFVucGFja092ZXJsYXBwaW5nUm93c0Zyb21VbnBhY2tC
dWZmZXIpCi17Ci0gICAgaWYgKElzRDNEMTEoKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIG9uIEQzRC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBpZiAoSXNPU1goKSAmJiBJc0FNRCgpKQotICAgIHsKLSAgICAgICAgLy8gSW5j
b3JyZWN0IHJlbmRlcmluZyByZXN1bHRzIHNlZW4gb24gT1NYIEFNRC4KLSAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgb24gT1NYIEFNRC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0IEdMdWludCB3aWR0aCAgICAgICAgICAgID0gOHU7
Ci0gICAgY29uc3QgR0x1aW50IGhlaWdodCAgICAgICAgICAgPSA4dTsKLSAgICBjb25zdCBHTHVp
bnQgdW5wYWNrUm93TGVuZ3RoICA9IDV1OwotICAgIGNvbnN0IEdMdWludCB1bnBhY2tTa2lwUGl4
ZWxzID0gMXU7Ci0KLSAgICBzZXRXaW5kb3dXaWR0aCh3aWR0aCk7Ci0gICAgc2V0V2luZG93SGVp
Z2h0KGhlaWdodCk7Ci0KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJl
MkQpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19G
SUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdM
X1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKLQotICAgIEdMQnVmZmVyIGJ1ZjsKLSAgICBnbEJpbmRCdWZmZXIoR0xfUElYRUxfVU5QQUNL
X0JVRkZFUiwgYnVmLmdldCgpKTsKLSAgICBzdGQ6OnZlY3RvcjxHTENvbG9yPiBwaXhlbHNHcmVl
bigoaGVpZ2h0IC0gMXUpICogdW5wYWNrUm93TGVuZ3RoICsgd2lkdGggKyB1bnBhY2tTa2lwUGl4
ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMQ29sb3I6OmdyZWVu
KTsKLQotICAgIGZvciAoR0x1aW50IHNraXBwZWRQaXhlbCA9IDB1OyBza2lwcGVkUGl4ZWwgPCB1
bnBhY2tTa2lwUGl4ZWxzOyArK3NraXBwZWRQaXhlbCkKLSAgICB7Ci0gICAgICAgIHBpeGVsc0dy
ZWVuW3NraXBwZWRQaXhlbF0gPSBHTENvbG9yKDI1NSwgMCwgMCwgMjU1KTsKLSAgICB9Ci0KLSAg
ICBnbEJ1ZmZlckRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgcGl4ZWxzR3JlZW4uc2l6ZSgp
ICogNHUsIHBpeGVsc0dyZWVuLmRhdGEoKSwKLSAgICAgICAgICAgICAgICAgR0xfRFlOQU1JQ19D
T1BZKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsUGl4ZWxTdG9yZWkoR0xf
VU5QQUNLX1JPV19MRU5HVEgsIHVucGFja1Jvd0xlbmd0aCk7Ci0gICAgZ2xQaXhlbFN0b3JlaShH
TF9VTlBBQ0tfU0tJUF9QSVhFTFMsIHVucGFja1NraXBQaXhlbHMpOwotICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotCi0gICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkE4
LCB3aWR0aCwgaGVpZ2h0LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKLSAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAg
ZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotCi0gICAgR0x1aW50IHdpbmRvd1BpeGVsQ291bnQgPSBnZXRXaW5kb3dXaWR0aCgp
ICogZ2V0V2luZG93SGVpZ2h0KCk7Ci0gICAgc3RkOjp2ZWN0b3I8R0xDb2xvcj4gYWN0dWFsKHdp
bmRvd1BpeGVsQ291bnQsIEdMQ29sb3I6OmJsYWNrKTsKLSAgICBnbFJlYWRQaXhlbHMoMCwgMCwg
Z2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCksIEdMX1JHQkEsIEdMX1VOU0lHTkVE
X0JZVEUsCi0gICAgICAgICAgICAgICAgIGFjdHVhbC5kYXRhKCkpOwotICAgIHN0ZDo6dmVjdG9y
PEdMQ29sb3I+IGV4cGVjdGVkKHdpbmRvd1BpeGVsQ291bnQsIEdMQ29sb3I6OmdyZWVuKTsKLSAg
ICBFWFBFQ1RfRVEoZXhwZWN0ZWQsIGFjdHVhbCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBU
PgotVCBVTm9ybShkb3VibGUgdmFsdWUpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KHZh
bHVlICogc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSkp
OwotfQotCi0vLyBUZXN0IHJlbmRlcmluZyBhIGRlcHRoIHRleHR1cmUgd2l0aCBtaXBtYXBzLgot
VEVTVF9QKFRleHR1cmUyRFRlc3RFUzMsIERlcHRoVGV4dHVyZXNXaXRoTWlwbWFwcykKLXsKLSAg
ICAvL1RPRE8oY3dhbGxleikgdGhpcyBpcyBmYWlsaW5nIG9uIEludGVsIFdpbjcgT3BlbkdMCi0g
ICAgaWYgKElzSW50ZWwoKSAmJiBJc1dpbmRvd3MoKSAmJiBJc09wZW5HTCgpKQotICAgIHsKLSAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgT3BlbkdMLiIgPDwgc3Rk
OjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29uc3QgaW50IHNpemUgPSBn
ZXRXaW5kb3dXaWR0aCgpOwotCi0gICAgYXV0byBkaW0gICA9IFtzaXplXShpbnQgbGV2ZWwpIHsg
cmV0dXJuIHNpemUgPj4gbGV2ZWw7IH07Ci0gICAgaW50IGxldmVscyA9IGdsOjpsb2cyKHNpemUp
OwotCi0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICBnbEJpbmRUZXh0dXJl
KEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOwotICAgIGdsVGV4U3RvcmFnZTJEKEdMX1RFWFRV
UkVfMkQsIGxldmVscywgR0xfREVQVEhfQ09NUE9ORU5UMjQsIHNpemUsIHNpemUpOwotICAgIGds
VGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05F
QVJFU1RfTUlQTUFQX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVy
aShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0g
ICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9D
TEFNUF9UT19FREdFKTsKLSAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19BTElHTk1FTlQsIDEp
OwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFt
KTsKLSAgICBnbFVuaWZvcm0xaShtVGV4dHVyZTJEVW5pZm9ybUxvY2F0aW9uLCAwKTsKLQotICAg
IHN0ZDo6dmVjdG9yPHVuc2lnbmVkIGNoYXI+IGV4cGVjdGVkOwotCi0gICAgZm9yIChpbnQgbGV2
ZWwgPSAwOyBsZXZlbCA8IGxldmVsczsgKytsZXZlbCkKLSAgICB7Ci0gICAgICAgIGRvdWJsZSB2
YWx1ZSA9IChzdGF0aWNfY2FzdDxkb3VibGU+KGxldmVsKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4o
bGV2ZWxzIC0gMSkpOwotICAgICAgICBleHBlY3RlZC5wdXNoX2JhY2soVU5vcm08dW5zaWduZWQg
Y2hhcj4odmFsdWUpKTsKLQotICAgICAgICBpbnQgbGV2ZWxEaW0gPSBkaW0obGV2ZWwpOwotCi0g
ICAgICAgIEFTU0VSVF9HVChsZXZlbERpbSwgMCk7Ci0KLSAgICAgICAgc3RkOjp2ZWN0b3I8dW5z
aWduZWQgaW50PiBpbml0RGF0YShsZXZlbERpbSAqIGxldmVsRGltLCBVTm9ybTx1bnNpZ25lZCBp
bnQ+KHZhbHVlKSk7Ci0gICAgICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCBsZXZl
bCwgMCwgMCwgbGV2ZWxEaW0sIGxldmVsRGltLCBHTF9ERVBUSF9DT01QT05FTlQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9JTlQsIGluaXREYXRhLmRhdGEoKSk7Ci0gICAg
fQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgZm9yIChpbnQgbGV2ZWwgPSAwOyBs
ZXZlbCA8IGxldmVsczsgKytsZXZlbCkKLSAgICB7Ci0gICAgICAgIGdsVmlld3BvcnQoMCwgMCwg
ZGltKGxldmVsKSwgZGltKGxldmVsKSk7Ci0gICAgICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9z
aXRpb24iLCAwLjVmKTsKLSAgICAgICAgR0xDb2xvciBhY3R1YWwgPSBSZWFkQ29sb3IoMCwgMCk7
Ci0gICAgICAgIEVYUEVDVF9ORUFSKGV4cGVjdGVkW2xldmVsXSwgYWN0dWFsLlIsIDEwdSk7Ci0g
ICAgfQotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLS8vIFRlc3RzIHVucGFja2lu
ZyBpbnRvIHRoZSB1bnNpemVkIEdMX0FMUEhBIGZvcm1hdC4KLVRFU1RfUChUZXh0dXJlMkRUZXN0
RVMzLCBVbnNpemVkQWxwaGFVbnBhY2tCdWZmZXIpCi17Ci0gICAgLy8gVE9ETyhqbWFkaWxsKTog
RmlndXJlIG91dCB3aHkgdGhpcyBmYWlscyBvbiBPU1guCi0gICAgQU5HTEVfU0tJUF9URVNUX0lG
KElzT1NYKCkpOwotCi0gICAgLy8gSW5pdGlhbGl6ZSB0aGUgdGV4dXJlLgotICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRleHR1cmUyRCk7Ci0gICAgZ2xUZXhJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAsIEdMX0FMUEhBLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQo
KSwgMCwgR0xfQUxQSEEsCi0gICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUsIG51bGxw
dHIpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9G
SUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotCi0gICAgc3RkOjp2ZWN0b3I8R0x1
Ynl0ZT4gYnVmZmVyRGF0YShnZXRXaW5kb3dXaWR0aCgpICogZ2V0V2luZG93SGVpZ2h0KCksIDEy
Nyk7Ci0KLSAgICAvLyBQdWxsIGluIHRoZSBjb2xvciBkYXRhIGZyb20gdGhlIHVucGFjayBidWZm
ZXIuCi0gICAgR0xCdWZmZXIgdW5wYWNrQnVmZmVyOwotICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5Q
QUNLX0FMSUdOTUVOVCwgMSk7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX1BJWEVMX1VOUEFDS19CVUZG
RVIsIHVucGFja0J1ZmZlci5nZXQoKSk7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX1BJWEVMX1VOUEFD
S19CVUZGRVIsIGdldFdpbmRvd1dpZHRoKCkgKiBnZXRXaW5kb3dIZWlnaHQoKSwgYnVmZmVyRGF0
YS5kYXRhKCksCi0gICAgICAgICAgICAgICAgIEdMX1NUQVRJQ19EUkFXKTsKLQotICAgIGdsVGV4
U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCAwLCAwLCBnZXRXaW5kb3dXaWR0aCgpLCBnZXRX
aW5kb3dIZWlnaHQoKSwgR0xfQUxQSEEsCi0gICAgICAgICAgICAgICAgICAgIEdMX1VOU0lHTkVE
X0JZVEUsIG51bGxwdHIpOwotCi0gICAgLy8gQ2xlYXIgdG8gYSB3ZWlyZCBjb2xvciB0byBtYWtl
IHN1cmUgd2UncmUgZHJhd2luZyBzb21ldGhpbmcuCi0gICAgZ2xDbGVhckNvbG9yKDAuNWYsIDAu
OGYsIDEuMGYsIDAuMmYpOwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAg
ICAvLyBEcmF3IHdpdGggdGhlIGFscGhhIHRleHR1cmUgYW5kIHZlcmlmeS4KLSAgICBkcmF3UXVh
ZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1Io
KTsKLSAgICBFWFBFQ1RfUElYRUxfTkVBUigwLCAwLCAwLCAwLCAwLCAxMjcsIDEpOwotfQotCi0v
LyBFbnN1cmUgc3RhbGUgdW5wYWNrIGRhdGEgZG9lc24ndCBwcm9wYWdhdGUgaW4gRDNEMTEuCi1U
RVNUX1AoVGV4dHVyZTJEVGVzdEVTMywgU3RhbGVVbnBhY2tEYXRhKQotewotICAgIC8vIEluaXQg
dW5wYWNrIGJ1ZmZlci4KLSAgICBHTHNpemVpIHBpeGVsQ291bnQgPSBnZXRXaW5kb3dXaWR0aCgp
ICogZ2V0V2luZG93SGVpZ2h0KCkgLyAyOwotICAgIHN0ZDo6dmVjdG9yPEdMQ29sb3I+IHBpeGVs
cyhwaXhlbENvdW50LCBHTENvbG9yOjpyZWQpOwotCi0gICAgR0xCdWZmZXIgdW5wYWNrQnVmZmVy
OwotICAgIGdsUGl4ZWxTdG9yZWkoR0xfVU5QQUNLX0FMSUdOTUVOVCwgMSk7Ci0gICAgZ2xCaW5k
QnVmZmVyKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIHVucGFja0J1ZmZlci5nZXQoKSk7Ci0gICAg
R0xzaXplaSBidWZmZXJTaXplID0gcGl4ZWxDb3VudCAqIHNpemVvZihHTENvbG9yKTsKLSAgICBn
bEJ1ZmZlckRhdGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgYnVmZmVyU2l6ZSwgcGl4ZWxzLmRh
dGEoKSwgR0xfU1RBVElDX0RSQVcpOwotCi0gICAgLy8gQ3JlYXRlIGZyb20gdW5wYWNrIGJ1ZmZl
ci4KLSAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlMkQpOwotICAgIGds
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBOCwgZ2V0V2luZG93V2lkdGgoKSAv
IDIsIGdldFdpbmRvd0hlaWdodCgpIC8gMiwgMCwKLSAgICAgICAgICAgICAgICAgR0xfUkdCQSwg
R0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJh
bWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7
Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfUElYRUxfQ09MT1JfRVEoMCwgMCwgR0xDb2xv
cjo6cmVkKTsKLQotICAgIC8vIEZpbGwgdW5wYWNrIHdpdGggZ3JlZW4sIHJlY3JlYXRpbmcgYnVm
ZmVyLgotICAgIHBpeGVscy5hc3NpZ24oZ2V0V2luZG93V2lkdGgoKSAqIGdldFdpbmRvd0hlaWdo
dCgpLCBHTENvbG9yOjpncmVlbik7Ci0gICAgR0xzaXplaSBzaXplMiA9IGdldFdpbmRvd1dpZHRo
KCkgKiBnZXRXaW5kb3dIZWlnaHQoKSAqIHNpemVvZihHTENvbG9yKTsKLSAgICBnbEJ1ZmZlckRh
dGEoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgc2l6ZTIsIHBpeGVscy5kYXRhKCksIEdMX1NUQVRJ
Q19EUkFXKTsKLQotICAgIC8vIFJlaW5pdCB0ZXh0dXJlIHdpdGggZ3JlZW4uCi0gICAgZ2xUZXhT
dWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIDAsIDAsIGdldFdpbmRvd1dpZHRoKCkgLyAyLCBn
ZXRXaW5kb3dIZWlnaHQoKSAvIDIsIEdMX1JHQkEsCi0gICAgICAgICAgICAgICAgICAgIEdMX1VO
U0lHTkVEX0JZVEUsIG51bGxwdHIpOwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlv
biIsIDAuNWYpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX1BJWEVM
X0NPTE9SX0VRKDAsIDAsIEdMQ29sb3I6OmdyZWVuKTsKLX0KLQotLy8gVXNlIHRoaXMgdG8gc2Vs
ZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVT
IG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLS8vIFRP
RE8ob2V0dWFobyk6IEVuYWJsZSBhbGwgYmVsb3cgdGVzdHMgb24gT3BlbkdMLiBSZXF1aXJlcyBh
IGZpeCBmb3IgQU5HTEUgYnVnIDEyNzguCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKFRleHR1cmUy
RFRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFf
Rkw5XzMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKFRl
eHR1cmVDdWJlVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9EM0QxMV9GTDlfMygpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJQVRF
X1RFU1QoVGV4dHVyZTJEVGVzdFdpdGhEcmF3U2NhbGUsCi0gICAgICAgICAgICAgICAgICAgICAg
IEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAotICAgICAg
ICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSk7
Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKFNhbXBsZXIyREFzRnVuY3Rpb25QYXJhbWV0ZXJUZXN0
LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8z
KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgRVMyX09QRU5HTEVTKCkpOwotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChTYW1wbGVy
QXJyYXlUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0Qz
RDExX0ZMOV8zKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkpOwotQU5HTEVfSU5TVEFOVElBVEVfVEVT
VChTYW1wbGVyQXJyYXlBc0Z1bmN0aW9uUGFyYW1ldGVyVGVzdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAotICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xF
UygpKTsKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVGV4dHVyZTJEVGVzdEVTMywgRVMzX0QzRDEx
KCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOwotQU5HTEVfSU5TVEFOVElBVEVfVEVT
VChUZXh0dXJlM0RUZXN0RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdM
RVMoKSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKFRleHR1cmUyREludGVnZXJBbHBoYTFUZXN0
RVMzLCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpLCBFUzNfT1BFTkdMRVMoKSk7Ci1BTkdMRV9J
TlNUQU5USUFURV9URVNUKFRleHR1cmUyRFVuc2lnbmVkSW50ZWdlckFscGhhMVRlc3RFUzMsCi0g
ICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICBFUzNfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19PUEVOR0xFUygpKTsK
LUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoU2hhZG93U2FtcGxlclBsdXNTYW1wbGVyM0RUZXN0RVMz
LAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMzX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMo
KSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKFNhbXBsZXJUeXBlTWl4VGVzdEVTMywgRVMzX0Qz
RDExKCksIEVTM19PUEVOR0woKSwgRVMzX09QRU5HTEVTKCkpOwotQU5HTEVfSU5TVEFOVElBVEVf
VEVTVChUZXh0dXJlMkRBcnJheVRlc3RFUzMsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVT
M19PUEVOR0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVGV4dHVyZVNpemVUZXh0dXJl
QXJyYXlUZXN0LCBFUzNfRDNEMTEoKSwgRVMzX09QRU5HTCgpKTsKLUFOR0xFX0lOU1RBTlRJQVRF
X1RFU1QoU2FtcGxlckluU3RydWN0VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0Qz
RDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMV9GTDlfMygpLAotICAgICAg
ICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJf
T1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpKTsKLUFOR0xF
X0lOU1RBTlRJQVRFX1RFU1QoU2FtcGxlckluU3RydWN0QXNGdW5jdGlvblBhcmFtZXRlclRlc3Qs
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDko
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAotICAgICAgICAgICAgICAg
ICAgICAgICBFUzJfT1BFTkdMRVMoKSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKFNhbXBsZXJJ
blN0cnVjdEFycmF5QXNGdW5jdGlvblBhcmFtZXRlclRlc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgIEVTMl9EM0QxMSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTFfRkw5XzMo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMyX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMo
KSk7Ci1BTkdMRV9JTlNUQU5USUFURV9URVNUKFNhbXBsZXJJbk5lc3RlZFN0cnVjdEFzRnVuY3Rp
b25QYXJhbWV0ZXJUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgIEVTMl9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkpOwotQU5HTEVfSU5TVEFOVElB
VEVfVEVTVChTYW1wbGVySW5TdHJ1Y3RBbmRPdGhlclZhcmlhYmxlVGVzdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0Qx
MV9GTDlfMygpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzJfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9P
UEVOR0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVGV4dHVyZUxpbWl0c1Rlc3QsIEVT
Ml9EM0QxMSgpLCBFUzJfT1BFTkdMKCksIEVTMl9PUEVOR0xFUygpKTsKLUFOR0xFX0lOU1RBTlRJ
QVRFX1RFU1QoVGV4dHVyZTJETm9ybTE2VGVzdEVTMywgRVMzX0QzRDExKCksIEVTM19PUEVOR0wo
KSwgRVMzX09QRU5HTEVTKCkpOwotCi19ICAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVGltZXJRdWVy
aWVzVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
VGltZXJRdWVyaWVzVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmMzcy
NWVjMDIyLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZ2xfdGVzdHMvVGltZXJRdWVyaWVzVGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OTAg
KzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgotLy8KLS8vIFRpbWVyUXVlcmllc1Rlc3QuY3BwCi0vLyAgIFZhcmlvdXMg
dGVzdHMgZm9yIEVYVF9kaXNqb2ludF90aW1lcl9xdWVyeSBmdW5jdGlvbmFsaXR5IGFuZCB2YWxp
ZGF0aW9uCi0vLwotCi0jaW5jbHVkZSAic3lzdGVtX3V0aWxzLmgiCi0jaW5jbHVkZSAidGVzdF91
dGlscy9BTkdMRVRlc3QuaCIKLSNpbmNsdWRlICJyYW5kb21fdXRpbHMuaCIKLQotdXNpbmcgbmFt
ZXNwYWNlIGFuZ2xlOwotCi1jbGFzcyBUaW1lclF1ZXJpZXNUZXN0IDogcHVibGljIEFOR0xFVGVz
dAotewotICBwcm90ZWN0ZWQ6Ci0gICAgVGltZXJRdWVyaWVzVGVzdCgpIDogbVByb2dyYW0oMCks
IG1Qcm9ncmFtQ29zdGx5KDApCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwot
ICAgICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4
KTsKLSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVl
Qml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgICAgICBzZXRDb25m
aWdEZXB0aEJpdHMoMjQpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpCi0gICAg
ewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcgcGFzc3Rocm91Z2hWUyA9Ci0gICAgICAgICAgICAiYXR0cmlidXRlIGhpZ2hwIHZlYzQgcG9z
aXRpb247IHZvaWQgbWFpbih2b2lkKVxuIgotICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAg
ICIgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjtcbiIKLSAgICAgICAgICAgICJ9XG4iOwotCi0g
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHBhc3N0aHJvdWdoUFMgPQotICAgICAgICAgICAgInBy
ZWNpc2lvbiBoaWdocCBmbG9hdDsgdm9pZCBtYWluKHZvaWQpXG4iCi0gICAgICAgICAgICAie1xu
IgotICAgICAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KDEuMCwgMS4wLCAxLjAsIDEu
MCk7XG4iCi0gICAgICAgICAgICAifVxuIjsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBj
b3N0bHlWUyA9Ci0gICAgICAgICAgICAiYXR0cmlidXRlIGhpZ2hwIHZlYzQgcG9zaXRpb247IHZh
cnlpbmcgaGlnaHAgdmVjNCB0ZXN0UG9zOyB2b2lkIG1haW4odm9pZClcbiIKLSAgICAgICAgICAg
ICJ7XG4iCi0gICAgICAgICAgICAiICAgIHRlc3RQb3MgICAgID0gcG9zaXRpb247XG4iCi0gICAg
ICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247XG4iCi0gICAgICAgICAgICAifVxu
IjsKLQotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyBjb3N0bHlQUyA9Ci0gICAgICAgICAgICAi
cHJlY2lzaW9uIGhpZ2hwIGZsb2F0OyB2YXJ5aW5nIGhpZ2hwIHZlYzQgdGVzdFBvczsgdm9pZCBt
YWluKHZvaWQpXG4iCi0gICAgICAgICAgICAie1xuIgotICAgICAgICAgICAgIiAgICB2ZWM0IHRl
c3QgPSB0ZXN0UG9zO1xuIgotICAgICAgICAgICAgIiAgICBmb3IgKGludCBpID0gMDsgaSA8IDUw
MDsgaSsrKVxuIgotICAgICAgICAgICAgIiAgICB7XG4iCi0gICAgICAgICAgICAiICAgICAgICB0
ZXN0ID0gc3FydCh0ZXN0KTtcbiIKLSAgICAgICAgICAgICIgICAgfVxuIgotICAgICAgICAgICAg
IiAgICBnbF9GcmFnQ29sb3IgPSB0ZXN0O1xuIgotICAgICAgICAgICAgIn1cbiI7Ci0KLSAgICAg
ICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShwYXNzdGhyb3VnaFZTLCBwYXNzdGhyb3VnaFBT
KTsKLSAgICAgICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSkgPDwgInNoYWRlciBjb21waWxhdGlv
biBmYWlsZWQuIjsKLQotICAgICAgICBtUHJvZ3JhbUNvc3RseSA9IENvbXBpbGVQcm9ncmFtKGNv
c3RseVZTLCBjb3N0bHlQUyk7Ci0gICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW1Db3N0bHkp
IDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2
b2lkIFRlYXJEb3duKCkKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7
Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbUNvc3RseSk7Ci0gICAgICAgIEFOR0xF
VGVzdDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVByb2dyYW07Ci0gICAgR0x1
aW50IG1Qcm9ncmFtQ29zdGx5OwotfTsKLQotLy8gVGVzdCB0aGF0IGFsbCBwcm9jIGFkZHJlc3Nl
cyBhcmUgbG9hZGFibGUKLVRFU1RfUChUaW1lclF1ZXJpZXNUZXN0LCBQcm9jQWRkcmVzc2VzKQot
ewotICAgIGlmICghZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5
IikpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIEdM
X0VYVF9kaXNqb2ludF90aW1lcl9xdWVyeSBpcyBub3QgYXZhaWxhYmxlLiIKLSAgICAgICAgICAg
ICAgICAgIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VS
VF9ORShudWxscHRyLCBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZW5RdWVyaWVzRVhUIikpOwotICAg
IEFTU0VSVF9ORShudWxscHRyLCBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xEZWxldGVRdWVyaWVzRVhU
IikpOwotICAgIEFTU0VSVF9ORShudWxscHRyLCBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xJc1F1ZXJ5
RVhUIikpOwotICAgIEFTU0VSVF9ORShudWxscHRyLCBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xCZWdp
blF1ZXJ5RVhUIikpOwotICAgIEFTU0VSVF9ORShudWxscHRyLCBlZ2xHZXRQcm9jQWRkcmVzcygi
Z2xFbmRRdWVyeUVYVCIpKTsKLSAgICBBU1NFUlRfTkUobnVsbHB0ciwgZWdsR2V0UHJvY0FkZHJl
c3MoImdsUXVlcnlDb3VudGVyRVhUIikpOwotICAgIEFTU0VSVF9ORShudWxscHRyLCBlZ2xHZXRQ
cm9jQWRkcmVzcygiZ2xHZXRRdWVyeWl2RVhUIikpOwotICAgIEFTU0VSVF9ORShudWxscHRyLCBl
Z2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRRdWVyeU9iamVjdGl2RVhUIikpOwotICAgIEFTU0VSVF9O
RShudWxscHRyLCBlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRRdWVyeU9iamVjdHVpdkVYVCIpKTsK
LSAgICBBU1NFUlRfTkUobnVsbHB0ciwgZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0UXVlcnlPYmpl
Y3RpNjR2RVhUIikpOwotICAgIEFTU0VSVF9ORShudWxscHRyLCBlZ2xHZXRQcm9jQWRkcmVzcygi
Z2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUIikpOwotfQotCi0vLyBUZXN0cyB0aGUgdGltZSBlbGFw
c2VkIHF1ZXJ5Ci1URVNUX1AoVGltZXJRdWVyaWVzVGVzdCwgVGltZUVsYXBzZWQpCi17Ci0gICAg
aWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnkiKSkKLSAg
ICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfRVhUX2Rp
c2pvaW50X3RpbWVyX3F1ZXJ5IGlzIG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAgICAgICAg
PDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xpbnQgcXVlcnlU
aW1lRWxhcHNlZEJpdHMgPSAwOwotICAgIGdsR2V0UXVlcnlpdkVYVChHTF9USU1FX0VMQVBTRURf
RVhULCBHTF9RVUVSWV9DT1VOVEVSX0JJVFNfRVhULCAmcXVlcnlUaW1lRWxhcHNlZEJpdHMpOwot
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgc3RkOjpjb3V0IDw8ICJUaW1lIGVsYXBz
ZWQgY291bnRlciBiaXRzOiAiIDw8IHF1ZXJ5VGltZUVsYXBzZWRCaXRzIDw8IHN0ZDo6ZW5kbDsK
LQotICAgIC8vIFNraXAgdGVzdCBpZiB0aGUgbnVtYmVyIG9mIGJpdHMgaXMgMAotICAgIGlmIChx
dWVyeVRpbWVFbGFwc2VkQml0cyA9PSAwKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJU
ZXN0IHNraXBwZWQgYmVjYXVzZSBvZiAwIGNvdW50ZXIgYml0cyIgPDwgc3RkOjplbmRsOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZ2xEZXB0aE1hc2soR0xfVFJVRSk7Ci0gICAgZ2xD
bGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5D
SUxfQlVGRkVSX0JJVCk7Ci0KLSAgICBHTHVpbnQgcXVlcnkxID0gMDsKLSAgICBHTHVpbnQgcXVl
cnkyID0gMDsKLSAgICBnbEdlblF1ZXJpZXNFWFQoMSwgJnF1ZXJ5MSk7Ci0gICAgZ2xHZW5RdWVy
aWVzRVhUKDEsICZxdWVyeTIpOwotCi0gICAgLy8gVGVzdCB0aW1lIGVsYXBzZWQgZm9yIGEgc2lu
Z2xlIHF1YWQKLSAgICBnbEJlZ2luUXVlcnlFWFQoR0xfVElNRV9FTEFQU0VEX0VYVCwgcXVlcnkx
KTsKLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC44Zik7Ci0gICAgZ2xFbmRR
dWVyeUVYVChHTF9USU1FX0VMQVBTRURfRVhUKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LQotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQg
fCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwotCi0gICAgLy8gVGVzdCB0aW1lIGVsYXBzZWQgZm9y
IGNvc3RseSBxdWFkCi0gICAgZ2xCZWdpblF1ZXJ5RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQsIHF1
ZXJ5Mik7Ci0gICAgZHJhd1F1YWQobVByb2dyYW1Db3N0bHksICJwb3NpdGlvbiIsIDAuOGYpOwot
ICAgIGdsRW5kUXVlcnlFWFQoR0xfVElNRV9FTEFQU0VEX0VYVCk7Ci0gICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICBzd2FwQnVmZmVycygpOwotCi0gICAgaW50IHRpbWVvdXQgID0gMjAw
MDAwOwotICAgIEdMdWludCByZWFkeSA9IEdMX0ZBTFNFOwotICAgIHdoaWxlIChyZWFkeSA9PSBH
TF9GQUxTRSAmJiB0aW1lb3V0ID4gMCkKLSAgICB7Ci0gICAgICAgIGFuZ2xlOjpTbGVlcCgwKTsK
LSAgICAgICAgZ2xHZXRRdWVyeU9iamVjdHVpdkVYVChxdWVyeTEsIEdMX1FVRVJZX1JFU1VMVF9B
VkFJTEFCTEVfRVhULCAmcmVhZHkpOwotICAgICAgICB0aW1lb3V0LS07Ci0gICAgfQotICAgIHJl
YWR5ID0gR0xfRkFMU0U7Ci0gICAgd2hpbGUgKHJlYWR5ID09IEdMX0ZBTFNFICYmIHRpbWVvdXQg
PiAwKQotICAgIHsKLSAgICAgICAgYW5nbGU6OlNsZWVwKDApOwotICAgICAgICBnbEdldFF1ZXJ5
T2JqZWN0dWl2RVhUKHF1ZXJ5MiwgR0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9FWFQsICZyZWFk
eSk7Ci0gICAgICAgIHRpbWVvdXQtLTsKLSAgICB9Ci0gICAgQVNTRVJUX0xUKDAsIHRpbWVvdXQp
IDw8ICJRdWVyeSByZXN1bHQgYXZhaWxhYmxlIHRpbWVkIG91dCIgPDwgc3RkOjplbmRsOwotCi0g
ICAgR0x1aW50NjQgcmVzdWx0MSA9IDA7Ci0gICAgR0x1aW50NjQgcmVzdWx0MiA9IDA7Ci0gICAg
Z2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUKHF1ZXJ5MSwgR0xfUVVFUllfUkVTVUxUX0VYVCwgJnJl
c3VsdDEpOwotICAgIGdsR2V0UXVlcnlPYmplY3R1aTY0dkVYVChxdWVyeTIsIEdMX1FVRVJZX1JF
U1VMVF9FWFQsICZyZXN1bHQyKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGds
RGVsZXRlUXVlcmllc0VYVCgxLCAmcXVlcnkxKTsKLSAgICBnbERlbGV0ZVF1ZXJpZXNFWFQoMSwg
JnF1ZXJ5Mik7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBzdGQ6OmNvdXQgPDwg
IkVsYXBzZWQgdGltZTogIiA8PCByZXN1bHQxIDw8ICIgY2hlYXAgcXVhZCIgPDwgc3RkOjplbmRs
OwotICAgIHN0ZDo6Y291dCA8PCAiRWxhcHNlZCB0aW1lOiAiIDw8IHJlc3VsdDIgPDwgIiBjb3N0
bHkgcXVhZCIgPDwgc3RkOjplbmRsOwotCi0gICAgLy8gVGhlIHRpbWUgZWxhcHNlZCBzaG91bGQg
YmUgbm9uemVybwotICAgIEVYUEVDVF9MVCgwdWwsIHJlc3VsdDEpOwotICAgIEVYUEVDVF9MVCgw
dWwsIHJlc3VsdDIpOwotCi0gICAgLy8gVGhlIGNvc3RseSBxdWFkIHNob3VsZCB0YWtlIGxvbmdl
ciB0aGFuIHRoZSBjaGVhcCBxdWFkCi0gICAgRVhQRUNUX0xUKHJlc3VsdDEsIHJlc3VsdDIpOwot
fQotCi0vLyBUZXN0cyB0aW1lIGVsYXBzZWQgZm9yIGEgbm9uIGRyYXcgY2FsbCAodGV4dHVyZSB1
cGxvYWQpCi1URVNUX1AoVGltZXJRdWVyaWVzVGVzdCwgVGltZUVsYXBzZWRUZXh0dXJlVGVzdCkK
LXsKLSAgICAvLyBPU1ggZHJpdmVycyBkb24ndCBzZWVtIHRvIHByb3Blcmx5IHRpbWUgbm9uLWRy
YXcgY2FsbHMgc28gd2Ugc2tpcCB0aGUgdGVzdCBvbiBNYWMKLSAgICBpZiAoSXNPU1goKSkKLSAg
ICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIE9TWCIgPDwgc3RkOjpl
bmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFleHRlbnNpb25FbmFibGVk
KCJHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnkiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291
dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5IGlz
IG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xpbnQgcXVlcnlUaW1lRWxhcHNlZEJpdHMgPSAwOwot
ICAgIGdsR2V0UXVlcnlpdkVYVChHTF9USU1FX0VMQVBTRURfRVhULCBHTF9RVUVSWV9DT1VOVEVS
X0JJVFNfRVhULCAmcXVlcnlUaW1lRWxhcHNlZEJpdHMpOwotICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotCi0gICAgc3RkOjpjb3V0IDw8ICJUaW1lIGVsYXBzZWQgY291bnRlciBiaXRzOiAiIDw8
IHF1ZXJ5VGltZUVsYXBzZWRCaXRzIDw8IHN0ZDo6ZW5kbDsKLQotICAgIC8vIFNraXAgdGVzdCBp
ZiB0aGUgbnVtYmVyIG9mIGJpdHMgaXMgMAotICAgIGlmIChxdWVyeVRpbWVFbGFwc2VkQml0cyA9
PSAwKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVzZSBv
ZiAwIGNvdW50ZXIgYml0cyIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgR0x1Ynl0ZSBwaXhlbHNbXSA9IHswLCAwLCAwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1
NSwgMjU1LCAwLCAwLCAwfTsKLQotICAgIC8vIFF1ZXJ5IGFuZCB0ZXh0dXJlIGluaXRpYWxpemF0
aW9uCi0gICAgR0x1aW50IHRleHR1cmU7Ci0gICAgR0x1aW50IHF1ZXJ5ID0gMDsKLSAgICBnbEdl
blF1ZXJpZXNFWFQoMSwgJnF1ZXJ5KTsKLSAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlKTsK
LQotICAgIC8vIFVwbG9hZCBhIHRleHR1cmUgaW5zaWRlIHRoZSBxdWVyeQotICAgIGdsQmVnaW5R
dWVyeUVYVChHTF9USU1FX0VMQVBTRURfRVhULCBxdWVyeSk7Ci0gICAgZ2xDbGVhcihHTF9DT0xP
Ul9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCB8IEdMX1NURU5DSUxfQlVGRkVSX0JJ
VCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKLSAgICBnbFRl
eEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCLCAyLCAyLCAwLCBHTF9SR0IsIEdMX1VO
U0lHTkVEX0JZVEUsIHBpeGVscyk7Ci0gICAgZ2xHZW5lcmF0ZU1pcG1hcChHTF9URVhUVVJFXzJE
KTsKLSAgICBnbEZpbmlzaCgpOwotICAgIGdsRW5kUXVlcnlFWFQoR0xfVElNRV9FTEFQU0VEX0VY
VCk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBpbnQgdGltZW91dCAgPSAyMDAw
MDA7Ci0gICAgR0x1aW50IHJlYWR5ID0gR0xfRkFMU0U7Ci0gICAgd2hpbGUgKHJlYWR5ID09IEdM
X0ZBTFNFICYmIHRpbWVvdXQgPiAwKQotICAgIHsKLSAgICAgICAgYW5nbGU6OlNsZWVwKDApOwot
ICAgICAgICBnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUKHF1ZXJ5LCBHTF9RVUVSWV9SRVNVTFRfQVZB
SUxBQkxFX0VYVCwgJnJlYWR5KTsKLSAgICAgICAgdGltZW91dC0tOwotICAgIH0KLSAgICBBU1NF
UlRfTFQoMCwgdGltZW91dCkgPDwgIlF1ZXJ5IHJlc3VsdCBhdmFpbGFibGUgdGltZWQgb3V0IiA8
PCBzdGQ6OmVuZGw7Ci0KLSAgICBHTHVpbnQ2NCByZXN1bHQgPSAwOwotICAgIGdsR2V0UXVlcnlP
YmplY3R1aTY0dkVYVChxdWVyeSwgR0xfUVVFUllfUkVTVUxUX0VYVCwgJnJlc3VsdCk7Ci0gICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXh0dXJl
KTsKLSAgICBnbERlbGV0ZVF1ZXJpZXNFWFQoMSwgJnF1ZXJ5KTsKLQotICAgIHN0ZDo6Y291dCA8
PCAiRWxhcHNlZCB0aW1lOiAiIDw8IHJlc3VsdCA8PCBzdGQ6OmVuZGw7Ci0gICAgRVhQRUNUX0xU
KDB1bCwgcmVzdWx0KTsKLX0KLQotLy8gVGVzdHMgdmFsaWRhdGlvbiBvZiBxdWVyeSBmdW5jdGlv
bnMgd2l0aCByZXNwZWN0IHRvIGVsYXBzZWQgdGltZSBxdWVyeQotVEVTVF9QKFRpbWVyUXVlcmll
c1Rlc3QsIFRpbWVFbGFwc2VkVmFsaWRhdGlvblRlc3QpCi17Ci0gICAgaWYgKCFleHRlbnNpb25F
bmFibGVkKCJHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnkiKSkKLSAgICB7Ci0gICAgICAgIHN0
ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1
ZXJ5IGlzIG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xpbnQgcXVlcnlUaW1lRWxhcHNlZEJpdHMg
PSAwOwotICAgIGdsR2V0UXVlcnlpdkVYVChHTF9USU1FX0VMQVBTRURfRVhULCBHTF9RVUVSWV9D
T1VOVEVSX0JJVFNfRVhULCAmcXVlcnlUaW1lRWxhcHNlZEJpdHMpOwotICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotCi0gICAgc3RkOjpjb3V0IDw8ICJUaW1lIGVsYXBzZWQgY291bnRlciBiaXRz
OiAiIDw8IHF1ZXJ5VGltZUVsYXBzZWRCaXRzIDw8IHN0ZDo6ZW5kbDsKLQotICAgIC8vIFNraXAg
dGVzdCBpZiB0aGUgbnVtYmVyIG9mIGJpdHMgaXMgMAotICAgIGlmIChxdWVyeVRpbWVFbGFwc2Vk
Qml0cyA9PSAwKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVj
YXVzZSBvZiAwIGNvdW50ZXIgYml0cyIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgR0x1aW50IHF1ZXJ5ID0gMDsKLSAgICBnbEdlblF1ZXJpZXNFWFQoLTEsICZx
dWVyeSk7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfVkFMVUUpOwotCi0gICAgZ2xH
ZW5RdWVyaWVzRVhUKDEsICZxdWVyeSk7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAg
ICBnbEJlZ2luUXVlcnlFWFQoR0xfVElNRVNUQU1QX0VYVCwgcXVlcnkpOwotICAgIEVYUEVDVF9H
TF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgZ2xCZWdpblF1ZXJ5RVhUKEdMX1RJTUVf
RUxBUFNFRF9FWFQsIDApOwotICAgIEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElP
Tik7Ci0KLSAgICBnbEVuZFF1ZXJ5RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQpOwotICAgIEVYUEVD
VF9HTF9FUlJPUihHTF9JTlZBTElEX09QRVJBVElPTik7Ci0KLSAgICBnbEJlZ2luUXVlcnlFWFQo
R0xfVElNRV9FTEFQU0VEX0VYVCwgcXVlcnkpOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgZ2xCZWdpblF1ZXJ5RVhUKEdMX1RJTUVfRUxBUFNFRF9FWFQsIHF1ZXJ5KTsKLSAgICBF
WFBFQ1RfR0xfRVJST1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotCi0gICAgZ2xFbmRRdWVyeUVY
VChHTF9USU1FX0VMQVBTRURfRVhUKTsKLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAg
IGdsRW5kUXVlcnlFWFQoR0xfVElNRV9FTEFQU0VEX0VYVCk7Ci0gICAgRVhQRUNUX0dMX0VSUk9S
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotLy8gVGVzdHMgdGltZXIgcXVlcmllcyBvcGVy
YXRpbmcgdW5kZXIgbXVsdGlwbGUgRUdMIGNvbnRleHRzIHdpdGggbWlkLXF1ZXJ5IHN3aXRjaGlu
ZwotVEVTVF9QKFRpbWVyUXVlcmllc1Rlc3QsIFRpbWVFbGFwc2VkTXVsdGljb250ZXh0VGVzdCkK
LXsKLSAgICBpZiAoSXNBTUQoKSAmJiBJc09wZW5HTCgpICYmIElzV2luZG93cygpICYmIElzRGVi
dWcoKSkKLSAgICB7Ci0gICAgICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgd2h5IHRo
aXMgdGVzdCBpcyBmbGFreSBvbiBXaW4vQU1EL09wZW5HTC9EZWJ1Zy4KLSAgICAgICAgc3RkOjpj
b3V0IDw8ICJUZXN0IHNraXBwZWQgb24gV2luZG93cyBBTUQgT3BlbkdMIERlYnVnLiIgPDwgc3Rk
OjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFleHRlbnNpb25FbmFi
bGVkKCJHTF9FWFRfZGlzam9pbnRfdGltZXJfcXVlcnkiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6
Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2UgR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5
IGlzIG5vdCBhdmFpbGFibGUuIgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgR0xpbnQgcXVlcnlUaW1lRWxhcHNlZEJpdHMgPSAw
OwotICAgIGdsR2V0UXVlcnlpdkVYVChHTF9USU1FX0VMQVBTRURfRVhULCBHTF9RVUVSWV9DT1VO
VEVSX0JJVFNfRVhULCAmcXVlcnlUaW1lRWxhcHNlZEJpdHMpOwotICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotCi0gICAgc3RkOjpjb3V0IDw8ICJUaW1lIGVsYXBzZWQgY291bnRlciBiaXRzOiAi
IDw8IHF1ZXJ5VGltZUVsYXBzZWRCaXRzIDw8IHN0ZDo6ZW5kbDsKLQotICAgIC8vIFNraXAgdGVz
dCBpZiB0aGUgbnVtYmVyIG9mIGJpdHMgaXMgMAotICAgIGlmIChxdWVyeVRpbWVFbGFwc2VkQml0
cyA9PSAwKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgYmVjYXVz
ZSBvZiAwIGNvdW50ZXIgYml0cyIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgLy8gV2l0aG91dCBhIGdsQ2xlYXIsIHRoZSBmaXJzdCBkcmF3IGNhbGwgb24gR0wg
dGFrZXMgYSBodWdlIGFtb3VudCBvZiB0aW1lIHdoZW4gcnVuIGFmdGVyIHRoZQotICAgIC8vIEQz
RCB0ZXN0IG9uIGNlcnRhaW4gTlZJRElBIGRyaXZlcnMKLSAgICBnbERlcHRoTWFzayhHTF9UUlVF
KTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklU
IHwgR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLQotICAgIEVHTGludCBjb250ZXh0QXR0cmlidXRl
c1tdID0gewotICAgICAgICBFR0xfQ09OVEVYVF9NQUpPUl9WRVJTSU9OX0tIUiwKLSAgICAgICAg
R2V0UGFyYW0oKS5tYWpvclZlcnNpb24sCi0gICAgICAgIEVHTF9DT05URVhUX01JTk9SX1ZFUlNJ
T05fS0hSLAotICAgICAgICBHZXRQYXJhbSgpLm1pbm9yVmVyc2lvbiwKLSAgICAgICAgRUdMX05P
TkUsCi0gICAgfTsKLQotICAgIEVHTFdpbmRvdyAqd2luZG93ID0gZ2V0RUdMV2luZG93KCk7Ci0K
LSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSB3aW5kb3ctPmdldERpc3BsYXkoKTsKLSAgICBFR0xD
b25maWcgY29uZmlnICAgPSB3aW5kb3ctPmdldENvbmZpZygpOwotICAgIEVHTFN1cmZhY2Ugc3Vy
ZmFjZSA9IHdpbmRvdy0+Z2V0U3VyZmFjZSgpOwotCi0gICAgc3RydWN0IENvbnRleHRJbmZvCi0g
ICAgewotICAgICAgICBFR0xDb250ZXh0IGNvbnRleHQ7Ci0gICAgICAgIEdMdWludCBwcm9ncmFt
OwotICAgICAgICBHTHVpbnQgcXVlcnk7Ci0gICAgICAgIEVHTERpc3BsYXkgZGlzcGxheTsKLQot
ICAgICAgICBDb250ZXh0SW5mbygpIDogY29udGV4dChFR0xfTk9fQ09OVEVYVCksIHByb2dyYW0o
MCksIHF1ZXJ5KDApLCBkaXNwbGF5KEVHTF9OT19ESVNQTEFZKSB7fQotCi0gICAgICAgIH5Db250
ZXh0SW5mbygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChjb250ZXh0ICE9IEVHTF9OT19D
T05URVhUICYmIGRpc3BsYXkgIT0gRUdMX05PX0RJU1BMQVkpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgZWdsRGVzdHJveUNvbnRleHQoZGlzcGxheSwgY29udGV4dCk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotICAgIENvbnRleHRJbmZvIGNvbnRleHRzWzJdOwot
Ci0gICAgLy8gU2hhZGVycwotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGNoZWFwVlMgPQotICAgICAg
ICAiYXR0cmlidXRlIGhpZ2hwIHZlYzQgcG9zaXRpb247IHZvaWQgbWFpbih2b2lkKVxuIgotICAg
ICAgICAie1xuIgotICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247XG4iCi0gICAg
ICAgICJ9XG4iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgY2hlYXBQUyA9Ci0gICAgICAgICJw
cmVjaXNpb24gaGlnaHAgZmxvYXQ7IHZvaWQgbWFpbih2b2lkKVxuIgotICAgICAgICAie1xuIgot
ICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAxLjAsIDEuMCwgMS4wKTtcbiIK
LSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBjb3N0bHlWUyA9Ci0gICAg
ICAgICJhdHRyaWJ1dGUgaGlnaHAgdmVjNCBwb3NpdGlvbjsgdmFyeWluZyBoaWdocCB2ZWM0IHRl
c3RQb3M7IHZvaWQgbWFpbih2b2lkKVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAgIHRl
c3RQb3MgICAgID0gcG9zaXRpb247XG4iCi0gICAgICAgICIgICAgZ2xfUG9zaXRpb24gPSBwb3Np
dGlvbjtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyBjb3N0bHlQ
UyA9Ci0gICAgICAgICJwcmVjaXNpb24gaGlnaHAgZmxvYXQ7IHZhcnlpbmcgaGlnaHAgdmVjNCB0
ZXN0UG9zOyB2b2lkIG1haW4odm9pZClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICB2
ZWM0IHRlc3QgPSB0ZXN0UG9zO1xuIgotICAgICAgICAiICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
NTAwOyBpKyspXG4iCi0gICAgICAgICIgICAge1xuIgotICAgICAgICAiICAgICAgICB0ZXN0ID0g
c3FydCh0ZXN0KTtcbiIKLSAgICAgICAgIiAgICB9XG4iCi0gICAgICAgICIgICAgZ2xfRnJhZ0Nv
bG9yID0gdGVzdDtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICAvLyBTZXR1cCB0aGUgZmlyc3Qg
Y29udGV4dCB3aXRoIGEgY2hlYXAgc2hhZGVyCi0gICAgY29udGV4dHNbMF0uY29udGV4dCA9IGVn
bENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBFR0xfTk9fQ09OVEVYVCwgY29udGV4dEF0
dHJpYnV0ZXMpOwotICAgIGNvbnRleHRzWzBdLmRpc3BsYXkgPSBkaXNwbGF5OwotICAgIEFTU0VS
VF9ORShjb250ZXh0c1swXS5jb250ZXh0LCBFR0xfTk9fQ09OVEVYVCk7Ci0gICAgZWdsTWFrZUN1
cnJlbnQoZGlzcGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgY29udGV4dHNbMF0uY29udGV4dCk7Ci0g
ICAgY29udGV4dHNbMF0ucHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKGNoZWFwVlMsIGNoZWFwUFMp
OwotICAgIGdsR2VuUXVlcmllc0VYVCgxLCAmY29udGV4dHNbMF0ucXVlcnkpOwotICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gU2V0dXAgdGhlIHNlY29uZCBjb250ZXh0IHdpdGgg
YW4gZXhwZW5zaXZlIHNoYWRlcgotICAgIGNvbnRleHRzWzFdLmNvbnRleHQgPSBlZ2xDcmVhdGVD
b250ZXh0KGRpc3BsYXksIGNvbmZpZywgRUdMX05PX0NPTlRFWFQsIGNvbnRleHRBdHRyaWJ1dGVz
KTsKLSAgICBjb250ZXh0c1sxXS5kaXNwbGF5ID0gZGlzcGxheTsKLSAgICBBU1NFUlRfTkUoY29u
dGV4dHNbMV0uY29udGV4dCwgRUdMX05PX0NPTlRFWFQpOwotICAgIGVnbE1ha2VDdXJyZW50KGRp
c3BsYXksIHN1cmZhY2UsIHN1cmZhY2UsIGNvbnRleHRzWzFdLmNvbnRleHQpOwotICAgIGNvbnRl
eHRzWzFdLnByb2dyYW0gPSBDb21waWxlUHJvZ3JhbShjb3N0bHlWUywgY29zdGx5UFMpOwotICAg
IGdsR2VuUXVlcmllc0VYVCgxLCAmY29udGV4dHNbMV0ucXVlcnkpOwotICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotCi0gICAgLy8gU3RhcnQgdGhlIHF1ZXJ5IGFuZCBkcmF3IGEgcXVhZCBvbiB0
aGUgZmlyc3QgY29udGV4dCB3aXRob3V0IGVuZGluZyB0aGUgcXVlcnkKLSAgICBlZ2xNYWtlQ3Vy
cmVudChkaXNwbGF5LCBzdXJmYWNlLCBzdXJmYWNlLCBjb250ZXh0c1swXS5jb250ZXh0KTsKLSAg
ICBnbEJlZ2luUXVlcnlFWFQoR0xfVElNRV9FTEFQU0VEX0VYVCwgY29udGV4dHNbMF0ucXVlcnkp
OwotICAgIGRyYXdRdWFkKGNvbnRleHRzWzBdLnByb2dyYW0sICJwb3NpdGlvbiIsIDAuOGYpOwot
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gU3dpdGNoIGNvbnRleHRzLCBkcmF3
IHRoZSBleHBlbnNpdmUgcXVhZCBhbmQgZW5kIGl0cyBxdWVyeQotICAgIGVnbE1ha2VDdXJyZW50
KGRpc3BsYXksIHN1cmZhY2UsIHN1cmZhY2UsIGNvbnRleHRzWzFdLmNvbnRleHQpOwotICAgIGds
QmVnaW5RdWVyeUVYVChHTF9USU1FX0VMQVBTRURfRVhULCBjb250ZXh0c1sxXS5xdWVyeSk7Ci0g
ICAgZHJhd1F1YWQoY29udGV4dHNbMV0ucHJvZ3JhbSwgInBvc2l0aW9uIiwgMC44Zik7Ci0gICAg
Z2xFbmRRdWVyeUVYVChHTF9USU1FX0VMQVBTRURfRVhUKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKLQotICAgIC8vIEdvIGJhY2sgdG8gdGhlIGZpcnN0IGNvbnRleHQsIGVuZCBpdHMgcXVl
cnksIGFuZCBnZXQgdGhlIHJlc3VsdAotICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIHN1cmZh
Y2UsIHN1cmZhY2UsIGNvbnRleHRzWzBdLmNvbnRleHQpOwotICAgIGdsRW5kUXVlcnlFWFQoR0xf
VElNRV9FTEFQU0VEX0VYVCk7Ci0KLSAgICBHTHVpbnQ2NCByZXN1bHQxID0gMDsKLSAgICBHTHVp
bnQ2NCByZXN1bHQyID0gMDsKLSAgICBnbEdldFF1ZXJ5T2JqZWN0dWk2NHZFWFQoY29udGV4dHNb
MF0ucXVlcnksIEdMX1FVRVJZX1JFU1VMVF9FWFQsICZyZXN1bHQxKTsKLSAgICBnbERlbGV0ZVF1
ZXJpZXNFWFQoMSwgJmNvbnRleHRzWzBdLnF1ZXJ5KTsKLSAgICBnbERlbGV0ZVByb2dyYW0oY29u
dGV4dHNbMF0ucHJvZ3JhbSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBH
ZXQgdGhlIDJuZCBjb250ZXh0J3MgcmVzdWx0cwotICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXks
IHN1cmZhY2UsIHN1cmZhY2UsIGNvbnRleHRzWzFdLmNvbnRleHQpOwotICAgIGdsR2V0UXVlcnlP
YmplY3R1aTY0dkVYVChjb250ZXh0c1sxXS5xdWVyeSwgR0xfUVVFUllfUkVTVUxUX0VYVCwgJnJl
c3VsdDIpOwotICAgIGdsRGVsZXRlUXVlcmllc0VYVCgxLCAmY29udGV4dHNbMV0ucXVlcnkpOwot
ICAgIGdsRGVsZXRlUHJvZ3JhbShjb250ZXh0c1sxXS5wcm9ncmFtKTsKLSAgICBBU1NFUlRfR0xf
Tk9fRVJST1IoKTsKLQotICAgIC8vIFN3aXRjaCBiYWNrIHRvIG1haW4gY29udGV4dAotICAgIGVn
bE1ha2VDdXJyZW50KGRpc3BsYXksIHN1cmZhY2UsIHN1cmZhY2UsIHdpbmRvdy0+Z2V0Q29udGV4
dCgpKTsKLQotICAgIC8vIENvbXBhcmUgdGhlIHJlc3VsdHMuIFRoZSBjaGVhcCBxdWFkIHNob3Vs
ZCBiZSBzbWFsbGVyIHRoYW4gdGhlIGV4cGVuc2l2ZSBvbmUgaWYKLSAgICAvLyB2aXJ0dWFsaXph
dGlvbiBpcyB3b3JraW5nIGNvcnJlY3RseQotICAgIHN0ZDo6Y291dCA8PCAiRWxhcHNlZCB0aW1l
OiAiIDw8IHJlc3VsdDEgPDwgIiBjaGVhcCBxdWFkIiA8PCBzdGQ6OmVuZGw7Ci0gICAgc3RkOjpj
b3V0IDw8ICJFbGFwc2VkIHRpbWU6ICIgPDwgcmVzdWx0MiA8PCAiIGNvc3RseSBxdWFkIiA8PCBz
dGQ6OmVuZGw7Ci0gICAgRVhQRUNUX0xUKDB1bCwgcmVzdWx0MSk7Ci0gICAgRVhQRUNUX0xUKDB1
bCwgcmVzdWx0Mik7Ci0gICAgRVhQRUNUX0xUKHJlc3VsdDEsIHJlc3VsdDIpOwotfQotCi0vLyBU
ZXN0cyBHUFUgdGltZXN0YW1wIGZ1bmN0aW9uYWxpdHkKLVRFU1RfUChUaW1lclF1ZXJpZXNUZXN0
LCBUaW1lc3RhbXApCi17Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZGlzam9p
bnRfdGltZXJfcXVlcnkiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIGJlY2F1c2UgR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5IGlzIG5vdCBhdmFpbGFibGUu
IgotICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgR0xpbnQgcXVlcnlUaW1lc3RhbXBCaXRzID0gMDsKLSAgICBnbEdldFF1ZXJ5aXZF
WFQoR0xfVElNRVNUQU1QX0VYVCwgR0xfUVVFUllfQ09VTlRFUl9CSVRTX0VYVCwgJnF1ZXJ5VGlt
ZXN0YW1wQml0cyk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBzdGQ6OmNvdXQg
PDwgIlRpbWVzdGFtcCBjb3VudGVyIGJpdHM6ICIgPDwgcXVlcnlUaW1lc3RhbXBCaXRzIDw8IHN0
ZDo6ZW5kbDsKLQotICAgIC8vIE1hY3MgZm9yIHNvbWUgcmVhc29uIHJldHVybiAwIGJpdHMgc28g
c2tpcCB0aGUgdGVzdCBmb3Igbm93IGlmIGVpdGhlciBhcmUgMAotICAgIGlmIChxdWVyeVRpbWVz
dGFtcEJpdHMgPT0gMCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVk
IGJlY2F1c2Ugb2YgMCBjb3VudGVyIGJpdHMiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGdsRGVwdGhNYXNrKEdMX1RSVUUpOwotICAgIGdsQ2xlYXIoR0xfQ09M
T1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9C
SVQpOwotCi0gICAgR0x1aW50IHF1ZXJ5MSA9IDA7Ci0gICAgR0x1aW50IHF1ZXJ5MiA9IDA7Ci0g
ICAgZ2xHZW5RdWVyaWVzRVhUKDEsICZxdWVyeTEpOwotICAgIGdsR2VuUXVlcmllc0VYVCgxLCAm
cXVlcnkyKTsKLSAgICBnbFF1ZXJ5Q291bnRlckVYVChxdWVyeTEsIEdMX1RJTUVTVEFNUF9FWFQp
OwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjhmKTsKLSAgICBnbFF1ZXJ5
Q291bnRlckVYVChxdWVyeTIsIEdMX1RJTUVTVEFNUF9FWFQpOwotCi0gICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0KLSAgICBzd2FwQnVmZmVycygpOwotCi0gICAgaW50IHRpbWVvdXQgID0gMjAw
MDAwOwotICAgIEdMdWludCByZWFkeSA9IEdMX0ZBTFNFOwotICAgIHdoaWxlIChyZWFkeSA9PSBH
TF9GQUxTRSAmJiB0aW1lb3V0ID4gMCkKLSAgICB7Ci0gICAgICAgIGFuZ2xlOjpTbGVlcCgwKTsK
LSAgICAgICAgZ2xHZXRRdWVyeU9iamVjdHVpdkVYVChxdWVyeTEsIEdMX1FVRVJZX1JFU1VMVF9B
VkFJTEFCTEVfRVhULCAmcmVhZHkpOwotICAgICAgICB0aW1lb3V0LS07Ci0gICAgfQotICAgIHJl
YWR5ID0gR0xfRkFMU0U7Ci0gICAgd2hpbGUgKHJlYWR5ID09IEdMX0ZBTFNFICYmIHRpbWVvdXQg
PiAwKQotICAgIHsKLSAgICAgICAgYW5nbGU6OlNsZWVwKDApOwotICAgICAgICBnbEdldFF1ZXJ5
T2JqZWN0dWl2RVhUKHF1ZXJ5MiwgR0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9FWFQsICZyZWFk
eSk7Ci0gICAgICAgIHRpbWVvdXQtLTsKLSAgICB9Ci0gICAgQVNTRVJUX0xUKDAsIHRpbWVvdXQp
IDw8ICJRdWVyeSByZXN1bHQgYXZhaWxhYmxlIHRpbWVkIG91dCIgPDwgc3RkOjplbmRsOwotCi0g
ICAgR0x1aW50NjQgcmVzdWx0MSA9IDA7Ci0gICAgR0x1aW50NjQgcmVzdWx0MiA9IDA7Ci0gICAg
Z2xHZXRRdWVyeU9iamVjdHVpNjR2RVhUKHF1ZXJ5MSwgR0xfUVVFUllfUkVTVUxUX0VYVCwgJnJl
c3VsdDEpOwotICAgIGdsR2V0UXVlcnlPYmplY3R1aTY0dkVYVChxdWVyeTIsIEdMX1FVRVJZX1JF
U1VMVF9FWFQsICZyZXN1bHQyKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAg
Z2xEZWxldGVRdWVyaWVzRVhUKDEsICZxdWVyeTEpOwotICAgIGdsRGVsZXRlUXVlcmllc0VYVCgx
LCAmcXVlcnkyKTsKLQotICAgIHN0ZDo6Y291dCA8PCAiVGltZXN0YW1wczogIiA8PCByZXN1bHQx
IDw8ICIgIiA8PCByZXN1bHQyIDw8IHN0ZDo6ZW5kbDsKLSAgICBFWFBFQ1RfTFQoMHVsLCByZXN1
bHQxKTsKLSAgICBFWFBFQ1RfTFQoMHVsLCByZXN1bHQyKTsKLSAgICBFWFBFQ1RfTFQocmVzdWx0
MSwgcmVzdWx0Mik7Ci19Ci0KLWNsYXNzIFRpbWVyUXVlcmllc1Rlc3RFUzMgOiBwdWJsaWMgVGlt
ZXJRdWVyaWVzVGVzdAotewotfTsKLQotLy8gVGVzdHMgZ2V0dGluZyB0aW1lc3RhbXBzIHZpYSBn
bEdldEludGVnZXI2NHYKLVRFU1RfUChUaW1lclF1ZXJpZXNUZXN0RVMzLCBUaW1lc3RhbXBHZXRJ
bnRlZ2VyNjQpCi17Ci0gICAgaWYgKCFleHRlbnNpb25FbmFibGVkKCJHTF9FWFRfZGlzam9pbnRf
dGltZXJfcXVlcnkiKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVk
IGJlY2F1c2UgR0xfRVhUX2Rpc2pvaW50X3RpbWVyX3F1ZXJ5IGlzIG5vdCBhdmFpbGFibGUuIgot
ICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgR0xpbnQgcXVlcnlUaW1lc3RhbXBCaXRzID0gMDsKLSAgICBnbEdldFF1ZXJ5aXZFWFQo
R0xfVElNRVNUQU1QX0VYVCwgR0xfUVVFUllfQ09VTlRFUl9CSVRTX0VYVCwgJnF1ZXJ5VGltZXN0
YW1wQml0cyk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBzdGQ6OmNvdXQgPDwg
IlRpbWVzdGFtcCBjb3VudGVyIGJpdHM6ICIgPDwgcXVlcnlUaW1lc3RhbXBCaXRzIDw8IHN0ZDo6
ZW5kbDsKLQotICAgIGlmIChxdWVyeVRpbWVzdGFtcEJpdHMgPT0gMCkKLSAgICB7Ci0gICAgICAg
IHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIGJlY2F1c2Ugb2YgMCBjb3VudGVyIGJpdHMiIDw8
IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsRGVwdGhNYXNrKEdM
X1RSVUUpOwotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZF
Ul9CSVQgfCBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQpOwotCi0gICAgR0xpbnQ2NCByZXN1bHQxID0g
MDsKLSAgICBHTGludDY0IHJlc3VsdDIgPSAwOwotICAgIGdsR2V0SW50ZWdlcjY0dihHTF9USU1F
U1RBTVBfRVhULCAmcmVzdWx0MSk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIs
IDAuOGYpOwotICAgIGdsR2V0SW50ZWdlcjY0dihHTF9USU1FU1RBTVBfRVhULCAmcmVzdWx0Mik7
Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgc3RkOjpjb3V0IDw8ICJUaW1lc3RhbXBz
IChnZXRJbnRlZ2VyNjR2KTogIiA8PCByZXN1bHQxIDw8ICIgIiA8PCByZXN1bHQyIDw8IHN0ZDo6
ZW5kbDsKLSAgICBFWFBFQ1RfTFQoMGwsIHJlc3VsdDEpOwotICAgIEVYUEVDVF9MVCgwbCwgcmVz
dWx0Mik7Ci0gICAgRVhQRUNUX0xUKHJlc3VsdDEsIHJlc3VsdDIpOwotfQotCi1BTkdMRV9JTlNU
QU5USUFURV9URVNUKFRpbWVyUXVlcmllc1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEVT
Ml9EM0Q5KCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9EM0QxMSgpLAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzNfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09Q
RU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCkpOwotCi1BTkdMRV9J
TlNUQU5USUFURV9URVNUKFRpbWVyUXVlcmllc1Rlc3RFUzMsIEVTM19EM0QxMSgpLCBFUzNfT1BF
TkdMKCkpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9UcmFuc2Zvcm1GZWVkYmFja1Rlc3Qu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1RyYW5zZm9y
bUZlZWRiYWNrVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4N2I0Yzgw
MDU5Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
Z2xfdGVzdHMvVHJhbnNmb3JtRmVlZGJhY2tUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3
NCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIK
LSNpbmNsdWRlICJyYW5kb21fdXRpbHMuaCIKLSNpbmNsdWRlICJWZWN0b3IuaCIKLQotdXNpbmcg
bmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotY2xhc3MgVHJhbnNmb3JtRmVlZGJh
Y2tUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgVHJhbnNmb3Jt
RmVlZGJhY2tUZXN0KCkKLSAgICAgICAgOiBtUHJvZ3JhbSgwKSwKLSAgICAgICAgICBtVHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXIoMCksCi0gICAgICAgICAgbVRyYW5zZm9ybUZlZWRiYWNrKDApCi0g
ICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwotICAgICAgICBzZXRXaW5kb3dIZWln
aHQoMTI4KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAgc2V0Q29uZmln
R3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAgICAgICAgc2V0
Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgIH0KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0gICAgICAgIGdsR2VuQnVmZmVy
cygxLCAmbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKLSAgICAgICAgZ2xCaW5kQnVmZmVyKEdM
X1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7Ci0g
ICAgICAgIGdsQnVmZmVyRGF0YShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBtVHJhbnNm
b3JtRmVlZGJhY2tCdWZmZXJTaXplLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgR0xfU1RB
VElDX0RSQVcpOwotCi0gICAgICAgIGdsR2VuVHJhbnNmb3JtRmVlZGJhY2tzKDEsICZtVHJhbnNm
b3JtRmVlZGJhY2spOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIH0KLQot
ICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKG1Qcm9ncmFt
ICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7
Ci0gICAgICAgICAgICBtUHJvZ3JhbSA9IDA7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobVRy
YW5zZm9ybUZlZWRiYWNrQnVmZmVyICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsRGVs
ZXRlQnVmZmVycygxLCAmbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKLSAgICAgICAgICAgIG1U
cmFuc2Zvcm1GZWVkYmFja0J1ZmZlciA9IDA7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobVRy
YW5zZm9ybUZlZWRiYWNrICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsRGVsZXRlVHJh
bnNmb3JtRmVlZGJhY2tzKDEsICZtVHJhbnNmb3JtRmVlZGJhY2spOwotICAgICAgICAgICAgbVRy
YW5zZm9ybUZlZWRiYWNrID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVh
ckRvd24oKTsKLSAgICB9Ci0KLSAgICB2b2lkIGNvbXBpbGVEZWZhdWx0UHJvZ3JhbShjb25zdCBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gJnRmVmFyeWluZ3MsIEdMZW51bSBidWZmZXJNb2RlKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUX0VRKDB1LCBtUHJvZ3JhbSk7Ci0KLSAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcgdmVydGV4U2hhZGVyU291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAgICAo
Ci0gICAgICAgICAgICBwcmVjaXNpb24gaGlnaHAgZmxvYXQ7Ci0gICAgICAgICAgICBhdHRyaWJ1
dGUgdmVjNCBwb3NpdGlvbjsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgICAgICAgICAg
fQotICAgICAgICApOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVy
U291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICBwcmVjaXNpb24g
aGlnaHAgZmxvYXQ7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgxLjAsIDAuMCwgMC4wLCAxLjApOwot
ICAgICAgICAgICAgfQotICAgICAgICApOwotCi0gICAgICAgIG1Qcm9ncmFtID0gQ29tcGlsZVBy
b2dyYW1XaXRoVHJhbnNmb3JtRmVlZGJhY2sodmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNo
YWRlclNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0ZlZhcnlpbmdzLCBidWZmZXJNb2RlKTsKLSAgICAgICAgQVNTRVJUX05FKDB1
LCBtUHJvZ3JhbSk7Ci0gICAgfQotCi0gICAgR0x1aW50IG1Qcm9ncmFtOwotCi0gICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXJTaXplID0gMSA8PCAyNDsKLSAg
ICBHTHVpbnQgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyOwotICAgIEdMdWludCBtVHJhbnNmb3Jt
RmVlZGJhY2s7Ci19OwotCi1URVNUX1AoVHJhbnNmb3JtRmVlZGJhY2tUZXN0LCBaZXJvU2l6ZWRW
aWV3cG9ydCkKLXsKLSAgICAvLyBTZXQgdGhlIHByb2dyYW0ncyB0cmFuc2Zvcm0gZmVlZGJhY2sg
dmFyeWluZ3MgKGp1c3QgZ2xfUG9zaXRpb24pCi0gICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
IHRmVmFyeWluZ3M7Ci0gICAgdGZWYXJ5aW5ncy5wdXNoX2JhY2soImdsX1Bvc2l0aW9uIik7Ci0g
ICAgY29tcGlsZURlZmF1bHRQcm9ncmFtKHRmVmFyeWluZ3MsIEdMX0lOVEVSTEVBVkVEX0FUVFJJ
QlMpOwotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgIC8vIEJpbmQgdGhlIGJ1
ZmZlciBmb3IgdHJhbnNmb3JtIGZlZWRiYWNrIG91dHB1dCBhbmQgc3RhcnQgdHJhbnNmb3JtIGZl
ZWRiYWNrCi0gICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
LCAwLCBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIpOwotICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVk
YmFjayhHTF9UUklBTkdMRVMpOwotCi0gICAgLy8gQ3JlYXRlIGEgcXVlcnkgdG8gY2hlY2sgaG93
IG1hbnkgcHJpbWl0aXZlcyB3ZXJlIHdyaXR0ZW4KLSAgICBHTHVpbnQgcHJpbWl0aXZlc1dyaXR0
ZW5RdWVyeSA9IDA7Ci0gICAgZ2xHZW5RdWVyaWVzKDEsICZwcmltaXRpdmVzV3JpdHRlblF1ZXJ5
KTsKLSAgICBnbEJlZ2luUXVlcnkoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJ
VFRFTiwgcHJpbWl0aXZlc1dyaXR0ZW5RdWVyeSk7Ci0KLSAgICAvLyBTZXQgYSB2aWV3cG9ydCB0
aGF0IHdvdWxkIHJlc3VsdCBpbiBubyBwaXhlbHMgYmVpbmcgd3JpdHRlbiB0byB0aGUgZnJhbWVi
dWZmZXIgYW5kIGRyYXcKLSAgICAvLyBhIHF1YWQKLSAgICBnbFZpZXdwb3J0KDAsIDAsIDAsIDAp
OwotCi0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotCi0gICAgLy8g
RW5kIHRoZSBxdWVyeSBhbmQgdHJhbnNmb3JtIGZlZWRrYmFjawotICAgIGdsRW5kUXVlcnkoR0xf
VFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTik7Ci0gICAgZ2xFbmRUcmFuc2Zv
cm1GZWVkYmFjaygpOwotCi0gICAgZ2xVc2VQcm9ncmFtKDApOwotCi0gICAgLy8gQ2hlY2sgaG93
IG1hbnkgcHJpbWl0aXZlcyB3ZXJlIHdyaXR0ZW4gYW5kIHZlcmlmeSB0aGF0IHNvbWUgd2VyZSB3
cml0dGVuIGV2ZW4gaWYKLSAgICAvLyBubyBwaXhlbHMgd2VyZSByZW5kZXJlZAotICAgIEdMdWlu
dCBwcmltaXRpdmVzV3JpdHRlbiA9IDA7Ci0gICAgZ2xHZXRRdWVyeU9iamVjdHVpdihwcmltaXRp
dmVzV3JpdHRlblF1ZXJ5LCBHTF9RVUVSWV9SRVNVTFRfRVhULCAmcHJpbWl0aXZlc1dyaXR0ZW4p
OwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgRVhQRUNUX0VRKDJ1LCBwcmltaXRp
dmVzV3JpdHRlbik7Ci19Ci0KLS8vIFRlc3QgdGhhdCByZWJpbmRpbmcgYSBidWZmZXIgd2l0aCB0
aGUgc2FtZSBvZmZzZXQgcmVzZXRzIHRoZSBvZmZzZXQgKG5vIGxvbmdlciBhcHBlbmRpbmcgZnJv
bSB0aGUKLS8vIG9sZCBwb3NpdGlvbikKLVRFU1RfUChUcmFuc2Zvcm1GZWVkYmFja1Rlc3QsIEJ1
ZmZlclJlYmluZGluZykKLXsKLSAgICBnbERpc2FibGUoR0xfREVQVEhfVEVTVCk7Ci0KLSAgICAv
LyBTZXQgdGhlIHByb2dyYW0ncyB0cmFuc2Zvcm0gZmVlZGJhY2sgdmFyeWluZ3MgKGp1c3QgZ2xf
UG9zaXRpb24pCi0gICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRmVmFyeWluZ3M7Ci0gICAg
dGZWYXJ5aW5ncy5wdXNoX2JhY2soImdsX1Bvc2l0aW9uIik7Ci0gICAgY29tcGlsZURlZmF1bHRQ
cm9ncmFtKHRmVmFyeWluZ3MsIEdMX0lOVEVSTEVBVkVEX0FUVFJJQlMpOwotCi0gICAgZ2xVc2VQ
cm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgIC8vIE1ha2Ugc3VyZSB0aGUgYnVmZmVyIGhhcyB6ZXJv
J2QgZGF0YQotICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBkYXRhKG1UcmFuc2Zvcm1GZWVkYmFja0J1
ZmZlclNpemUgLyBzaXplb2YoZmxvYXQpLCAwLjBmKTsKLSAgICBnbEJpbmRCdWZmZXIoR0xfVFJB
TlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKLSAgICBn
bEJ1ZmZlckRhdGEoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgbVRyYW5zZm9ybUZlZWRi
YWNrQnVmZmVyU2l6ZSwgZGF0YS5kYXRhKCksCi0gICAgICAgICAgICAgICAgIEdMX1NUQVRJQ19E
UkFXKTsKLQotCi0gICAgLy8gQ3JlYXRlIGEgcXVlcnkgdG8gY2hlY2sgaG93IG1hbnkgcHJpbWl0
aXZlcyB3ZXJlIHdyaXR0ZW4KLSAgICBHTHVpbnQgcHJpbWl0aXZlc1dyaXR0ZW5RdWVyeSA9IDA7
Ci0gICAgZ2xHZW5RdWVyaWVzKDEsICZwcmltaXRpdmVzV3JpdHRlblF1ZXJ5KTsKLSAgICBnbEJl
Z2luUXVlcnkoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTiwgcHJpbWl0
aXZlc1dyaXR0ZW5RdWVyeSk7Ci0KLSAgICBjb25zdCBmbG9hdCBmaW5hbFogPSAwLjk1ZjsKLQot
ICAgIFJORyBybmc7Ci0KLSAgICBjb25zdCBzaXplX3QgbG9vcENvdW50ID0gNjQ7Ci0gICAgZm9y
IChzaXplX3QgbG9vcElkeCA9IDA7IGxvb3BJZHggPCBsb29wQ291bnQ7IGxvb3BJZHgrKykKLSAg
ICB7Ci0gICAgICAgIC8vIEJpbmQgdGhlIGJ1ZmZlciBmb3IgdHJhbnNmb3JtIGZlZWRiYWNrIG91
dHB1dCBhbmQgc3RhcnQgdHJhbnNmb3JtIGZlZWRiYWNrCi0gICAgICAgIGdsQmluZEJ1ZmZlckJh
c2UoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgbVRyYW5zZm9ybUZlZWRiYWNrQnVm
ZmVyKTsKLSAgICAgICAgZ2xCZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdMX1RSSUFOR0xFUyk7Ci0K
LSAgICAgICAgZmxvYXQgeiA9IChsb29wSWR4ICsgMSA9PSBsb29wQ291bnQpID8gZmluYWxaIDog
cm5nLnJhbmRvbUZsb2F0QmV0d2VlbigwLjFmLCAwLjVmKTsKLSAgICAgICAgZHJhd1F1YWQobVBy
b2dyYW0sICJwb3NpdGlvbiIsIHopOwotCi0gICAgICAgIGdsRW5kVHJhbnNmb3JtRmVlZGJhY2so
KTsKLSAgICB9Ci0KLSAgICAvLyBFbmQgdGhlIHF1ZXJ5IGFuZCB0cmFuc2Zvcm0gZmVlZGJhY2sK
LSAgICBnbEVuZFF1ZXJ5KEdMX1RSQU5TRk9STV9GRUVEQkFDS19QUklNSVRJVkVTX1dSSVRURU4p
OwotCi0gICAgZ2xVc2VQcm9ncmFtKDApOwotCi0gICAgLy8gQ2hlY2sgaG93IG1hbnkgcHJpbWl0
aXZlcyB3ZXJlIHdyaXR0ZW4gYW5kIHZlcmlmeSB0aGF0IHNvbWUgd2VyZSB3cml0dGVuIGV2ZW4g
aWYKLSAgICAvLyBubyBwaXhlbHMgd2VyZSByZW5kZXJlZAotICAgIEdMdWludCBwcmltaXRpdmVz
V3JpdHRlbiA9IDA7Ci0gICAgZ2xHZXRRdWVyeU9iamVjdHVpdihwcmltaXRpdmVzV3JpdHRlblF1
ZXJ5LCBHTF9RVUVSWV9SRVNVTFRfRVhULCAmcHJpbWl0aXZlc1dyaXR0ZW4pOwotICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOwotCi0gICAgRVhQRUNUX0VRKGxvb3BDb3VudCAqIDIsIHByaW1pdGl2
ZXNXcml0dGVuKTsKLQotICAgIC8vIENoZWNrIHRoZSBidWZmZXIgZGF0YQotICAgIGNvbnN0IGZs
b2F0ICpidWZmZXJEYXRhID0gc3RhdGljX2Nhc3Q8ZmxvYXQgKj4oZ2xNYXBCdWZmZXJSYW5nZSgK
LSAgICAgICAgR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgbVRyYW5zZm9ybUZlZWRi
YWNrQnVmZmVyU2l6ZSwgR0xfTUFQX1JFQURfQklUKSk7Ci0KLSAgICBmb3IgKHNpemVfdCB2ZXJ0
ZXhJZHggPSAwOyB2ZXJ0ZXhJZHggPCA2OyB2ZXJ0ZXhJZHgrKykKLSAgICB7Ci0gICAgICAgIC8v
IENoZWNrIHRoZSB0aGlyZCAoWikgY29tcG9uZW50IG9mIGVhY2ggdmVydGV4IHdyaXR0ZW4gYW5k
IG1ha2Ugc3VyZSBpdCBoYXMgdGhlIGZpbmFsCi0gICAgICAgIC8vIHZhbHVlCi0gICAgICAgIEVY
UEVDVF9ORUFSKGZpbmFsWiwgYnVmZmVyRGF0YVt2ZXJ0ZXhJZHggKiA0ICsgMl0sIDAuMDAwMSk7
Ci0gICAgfQotCi0gICAgZm9yIChzaXplX3QgZGF0YUlkeCA9IDI0OyBkYXRhSWR4IDwgbVRyYW5z
Zm9ybUZlZWRiYWNrQnVmZmVyU2l6ZSAvIHNpemVvZihmbG9hdCk7IGRhdGFJZHgrKykKLSAgICB7
Ci0gICAgICAgIEVYUEVDVF9FUShkYXRhW2RhdGFJZHhdLCBidWZmZXJEYXRhW2RhdGFJZHhdKSA8
PCAiQnVmZmVyIG92ZXJydW4gZGV0ZWN0ZWQuIjsKLSAgICB9Ci0KLSAgICBnbFVubWFwQnVmZmVy
KEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Ci19Ci0KLS8vIFRlc3QgdGhhdCBYRkIgY2FuIHdyaXRlIGJhY2sgdmVydGljZXMgdG8gYSBi
dWZmZXIgYW5kIHRoYXQgd2UgY2FuIGRyYXcgZnJvbSB0aGlzIGJ1ZmZlciBhZnRlcndhcmQuCi1U
RVNUX1AoVHJhbnNmb3JtRmVlZGJhY2tUZXN0LCBSZWNvcmRBbmREcmF3KQotewotICAgIC8vIFRP
RE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgZmFpbHMgb24gSW50ZWwuCi0gICAgaWYg
KElzSW50ZWwoKSAmJiBHZXRQYXJhbSgpLmdldFJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfRDNEMTFfQU5HTEUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qg
c2tpcHBlZCBvbiBJbnRlbC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKLSAgICBnbENsZWFy
KEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgLy8gU2V0IHRoZSBwcm9ncmFtJ3MgdHJhbnNm
b3JtIGZlZWRiYWNrIHZhcnlpbmdzIChqdXN0IGdsX1Bvc2l0aW9uKQotICAgIHN0ZDo6dmVjdG9y
PHN0ZDo6c3RyaW5nPiB0ZlZhcnlpbmdzOwotICAgIHRmVmFyeWluZ3MucHVzaF9iYWNrKCJnbF9Q
b3NpdGlvbiIpOwotICAgIGNvbXBpbGVEZWZhdWx0UHJvZ3JhbSh0ZlZhcnlpbmdzLCBHTF9JTlRF
UkxFQVZFRF9BVFRSSUJTKTsKLQotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICBH
TGludCBwb3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInBv
c2l0aW9uIik7Ci0KLSAgICAvLyBGaXJzdCBwYXNzOiBkcmF3IDYgcG9pbnRzIHRvIHRoZSBYRkIg
YnVmZmVyCi0gICAgZ2xFbmFibGUoR0xfUkFTVEVSSVpFUl9ESVNDQVJEKTsKLQotICAgIGNvbnN0
IEdMZmxvYXQgdmVydGljZXNbXSA9Ci0gICAgewotICAgICAgICAtMS4wZiwgIDEuMGYsIDAuNWYs
Ci0gICAgICAgIC0xLjBmLCAtMS4wZiwgMC41ZiwKLSAgICAgICAgIDEuMGYsIC0xLjBmLCAwLjVm
LAotCi0gICAgICAgIC0xLjBmLCAgMS4wZiwgMC41ZiwKLSAgICAgICAgIDEuMGYsIC0xLjBmLCAw
LjVmLAotICAgICAgICAgMS4wZiwgIDEuMGYsIDAuNWYsCi0gICAgfTsKLQotICAgIGdsVmVydGV4
QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAs
IHZlcnRpY2VzKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRp
b24pOwotCi0gICAgLy8gQmluZCB0aGUgYnVmZmVyIGZvciB0cmFuc2Zvcm0gZmVlZGJhY2sgb3V0
cHV0IGFuZCBzdGFydCB0cmFuc2Zvcm0gZmVlZGJhY2sKLSAgICBnbEJpbmRCdWZmZXJCYXNlKEdM
X1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7
Ci0gICAgZ2xCZWdpblRyYW5zZm9ybUZlZWRiYWNrKEdMX1BPSU5UUyk7Ci0KLSAgICAvLyBDcmVh
dGUgYSBxdWVyeSB0byBjaGVjayBob3cgbWFueSBwcmltaXRpdmVzIHdlcmUgd3JpdHRlbgotICAg
IEdMdWludCBwcmltaXRpdmVzV3JpdHRlblF1ZXJ5ID0gMDsKLSAgICBnbEdlblF1ZXJpZXMoMSwg
JnByaW1pdGl2ZXNXcml0dGVuUXVlcnkpOwotICAgIGdsQmVnaW5RdWVyeShHTF9UUkFOU0ZPUk1f
RkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOLCBwcmltaXRpdmVzV3JpdHRlblF1ZXJ5KTsKLQot
ICAgIGdsRHJhd0FycmF5cyhHTF9QT0lOVFMsIDAsIDYpOwotCi0gICAgZ2xEaXNhYmxlVmVydGV4
QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVy
KHBvc2l0aW9uTG9jYXRpb24sIDQsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgTlVMTCk7Ci0gICAg
Ly8gRW5kIHRoZSBxdWVyeSBhbmQgdHJhbnNmb3JtIGZlZWRrYmFjawotICAgIGdsRW5kUXVlcnko
R0xfVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTik7Ci0gICAgZ2xFbmRUcmFu
c2Zvcm1GZWVkYmFjaygpOwotCi0gICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9UUkFOU0ZPUk1fRkVF
REJBQ0tfQlVGRkVSLCAwLCAwKTsKLQotICAgIGdsRGlzYWJsZShHTF9SQVNURVJJWkVSX0RJU0NB
UkQpOwotCi0gICAgLy8gQ2hlY2sgaG93IG1hbnkgcHJpbWl0aXZlcyB3ZXJlIHdyaXR0ZW4gYW5k
IHZlcmlmeSB0aGF0IHNvbWUgd2VyZSB3cml0dGVuIGV2ZW4gaWYKLSAgICAvLyBubyBwaXhlbHMg
d2VyZSByZW5kZXJlZAotICAgIEdMdWludCBwcmltaXRpdmVzV3JpdHRlbiA9IDA7Ci0gICAgZ2xH
ZXRRdWVyeU9iamVjdHVpdihwcmltaXRpdmVzV3JpdHRlblF1ZXJ5LCBHTF9RVUVSWV9SRVNVTFRf
RVhULCAmcHJpbWl0aXZlc1dyaXR0ZW4pOwotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0g
ICAgRVhQRUNUX0VRKDZ1LCBwcmltaXRpdmVzV3JpdHRlbik7Ci0KLSAgICAvLyBOb3RoaW5nIHNo
b3VsZCBoYXZlIGJlZW4gZHJhd24gdG8gdGhlIGZyYW1lYnVmZmVyCi0gICAgRVhQRUNUX1BJWEVM
X0VRKGdldFdpbmRvd1dpZHRoKCkgLyAyLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIDAsIDAsIDAs
IDApOwotCi0gICAgLy8gU2Vjb25kIHBhc3M6IGRyYXcgZnJvbSB0aGUgZmVlZGJhY2sgYnVmZmVy
Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtVHJhbnNmb3JtRmVlZGJhY2tC
dWZmZXIpOwotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCA0LCBH
TF9GTE9BVCwgR0xfRkFMU0UsIDAsIDApOwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXko
cG9zaXRpb25Mb2NhdGlvbik7Ci0KLSAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCA2
KTsKLQotICAgIEVYUEVDVF9QSVhFTF9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwgZ2V0V2luZG93
SGVpZ2h0KCkgLyAyLCAyNTUsICAgMCwgICAwLCAyNTUpOwotICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOwotfQotCi0vLyBUZXN0IHRoYXQgYnVmZmVyIGJpbmRpbmcgaGFwcGVucyBvbmx5IG9uIHRo
ZSBjdXJyZW50IHRyYW5zZm9ybSBmZWVkYmFjayBvYmplY3QKLVRFU1RfUChUcmFuc2Zvcm1GZWVk
YmFja1Rlc3QsIEJ1ZmZlckJpbmRpbmcpCi17Ci0gICAgLy8gUmVzZXQgYW55IHN0YXRlCi0gICAg
Z2xCaW5kVHJhbnNmb3JtRmVlZGJhY2soR0xfVFJBTlNGT1JNX0ZFRURCQUNLLCAwKTsKLSAgICBn
bEJpbmRCdWZmZXIoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCk7Ci0KLSAgICAvLyBH
ZW5lcmF0ZSBhIG5ldyBidWZmZXIKLSAgICBHTHVpbnQgc2NyYXRjaEJ1ZmZlciA9IDA7Ci0gICAg
Z2xHZW5CdWZmZXJzKDEsICZzY3JhdGNoQnVmZmVyKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJP
UigpOwotCi0gICAgLy8gQmluZCBURiAwIGFuZCBhIGJ1ZmZlcgotICAgIGdsQmluZFRyYW5zZm9y
bUZlZWRiYWNrKEdMX1RSQU5TRk9STV9GRUVEQkFDSywgMCk7Ci0gICAgZ2xCaW5kQnVmZmVyKEdM
X1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7Ci0K
LSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIENoZWNrIHRoYXQgdGhlIGJ1ZmZl
ciBJRCBtYXRjaGVzIHRoZSBvbmUgdGhhdCB3YXMganVzdCBib3VuZAotICAgIEdMaW50IGN1cnJl
bnRCdWZmZXJCaW5kaW5nID0gMDsKLSAgICBnbEdldEludGVnZXJ2KEdMX1RSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVJfQklORElORywgJmN1cnJlbnRCdWZmZXJCaW5kaW5nKTsKLSAgICBFWFBFQ1Rf
RVEoc3RhdGljX2Nhc3Q8R0x1aW50PihjdXJyZW50QnVmZmVyQmluZGluZyksIG1UcmFuc2Zvcm1G
ZWVkYmFja0J1ZmZlcik7Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIENo
ZWNrIHRoYXQgdGhlIGJ1ZmZlciBJRCBmb3IgdGhlIG5ld2x5IGJvdW5kIHRyYW5zZm9ybSBmZWVk
YmFjayBpcyB6ZXJvCi0gICAgZ2xCaW5kVHJhbnNmb3JtRmVlZGJhY2soR0xfVFJBTlNGT1JNX0ZF
RURCQUNLLCBtVHJhbnNmb3JtRmVlZGJhY2spOwotCi0gICAgZ2xHZXRJbnRlZ2VydihHTF9UUkFO
U0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkcsICZjdXJyZW50QnVmZmVyQmluZGluZyk7Ci0g
ICAgRVhQRUNUX0VRKDAsIGN1cnJlbnRCdWZmZXJCaW5kaW5nKTsKLQotICAgIEVYUEVDVF9HTF9O
T19FUlJPUigpOwotCi0gICAgLy8gQmluZCBhIGJ1ZmZlciB0byB0aGlzIFRGCi0gICAgZ2xCaW5k
QnVmZmVyUmFuZ2UoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgc2NyYXRjaEJ1ZmZl
ciwgMCwgMzIpOwotCi0gICAgZ2xHZXRJbnRlZ2VyaV92KEdMX1RSQU5TRk9STV9GRUVEQkFDS19C
VUZGRVJfQklORElORywgMCwgJmN1cnJlbnRCdWZmZXJCaW5kaW5nKTsKLSAgICBFWFBFQ1RfRVEo
c3RhdGljX2Nhc3Q8R0x1aW50PihjdXJyZW50QnVmZmVyQmluZGluZyksIHNjcmF0Y2hCdWZmZXIp
OwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBSZWJpbmQgdGhlIG9yaWdp
bmFsIFRGIGFuZCBjaGVjayBpdCdzIGJpbmRpbmdzCi0gICAgZ2xCaW5kVHJhbnNmb3JtRmVlZGJh
Y2soR0xfVFJBTlNGT1JNX0ZFRURCQUNLLCAwKTsKLQotICAgIGdsR2V0SW50ZWdlcmlfdihHTF9U
UkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkcsIDAsICZjdXJyZW50QnVmZmVyQmluZGlu
Zyk7Ci0gICAgRVhQRUNUX0VRKDAsIGN1cnJlbnRCdWZmZXJCaW5kaW5nKTsKLQotICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gQ2xlYW4gdXAKLSAgICBnbERlbGV0ZUJ1ZmZlcnMo
MSwgJnNjcmF0Y2hCdWZmZXIpOwotfQotCi0vLyBUZXN0IHRoYXQgd2UgY2FuIGNhcHR1cmUgdmFy
eWluZ3Mgb25seSB1c2VkIGluIHRoZSB2ZXJ0ZXggc2hhZGVyLgotVEVTVF9QKFRyYW5zZm9ybUZl
ZWRiYWNrVGVzdCwgVmVydGV4T25seSkKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4
U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAiaW4g
dmVjMiBwb3NpdGlvbjtcbiIKLSAgICAgICAgImluIGZsb2F0IGF0dHJpYjtcbiIKLSAgICAgICAg
Im91dCBmbG9hdCB2YXJ5aW5nQXR0cmliO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgot
ICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAsIDEpO1xuIgotICAgICAg
ICAiICB2YXJ5aW5nQXR0cmliID0gYXR0cmliO1xuIgotICAgICAgICAifSI7Ci0KLSAgICBjb25z
dCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAiI3ZlcnNpb24g
MzAwIGVzXG4iCi0gICAgICAgICJvdXQgbWVkaXVtcCB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAi
dm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBjb2xvciA9IHZlYzQoMC4wLCAxLjAsIDAuMCwg
MS4wKTtcbiIKLSAgICAgICAgIn0iOwotCi0gICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRm
VmFyeWluZ3M7Ci0gICAgdGZWYXJ5aW5ncy5wdXNoX2JhY2soInZhcnlpbmdBdHRyaWIiKTsKLQot
ICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW1XaXRoVHJhbnNmb3JtRmVlZGJhY2sodmVydGV4
U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRmVmFyeWluZ3MsIEdMX0lOVEVSTEVBVkVE
X0FUVFJJQlMpOwotICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotCi0gICAgZ2xVc2VQcm9n
cmFtKG1Qcm9ncmFtKTsKLQotICAgIGdsQmluZFRyYW5zZm9ybUZlZWRiYWNrKEdMX1RSQU5TRk9S
TV9GRUVEQkFDSywgbVRyYW5zZm9ybUZlZWRiYWNrKTsKLSAgICBnbEJpbmRCdWZmZXJCYXNlKEdM
X1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7
Ci0KLSAgICBzdGQ6OnZlY3RvcjxmbG9hdD4gYXR0cmliRGF0YTsKLSAgICBmb3IgKHVuc2lnbmVk
IGludCBjbnQgPSAwOyBjbnQgPCAxMDA7ICsrY250KQotICAgIHsKLSAgICAgICAgYXR0cmliRGF0
YS5wdXNoX2JhY2soc3RhdGljX2Nhc3Q8ZmxvYXQ+KGNudCkpOwotICAgIH0KLQotICAgIEdMaW50
IGF0dHJpYkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgImF0dHJpYiIp
OwotICAgIEFTU0VSVF9ORSgtMSwgYXR0cmliTG9jYXRpb24pOwotCi0gICAgZ2xWZXJ0ZXhBdHRy
aWJQb2ludGVyKGF0dHJpYkxvY2F0aW9uLCAxLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDQsICZhdHRy
aWJEYXRhWzBdKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGF0dHJpYkxvY2F0aW9u
KTsKLQotICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTF9UUklBTkdMRVMpOwotICAgIGRy
YXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBnbEVuZFRyYW5zZm9ybUZl
ZWRiYWNrKCk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBnbFVzZVByb2dyYW0o
MCk7Ci0KLSAgICBHTHZvaWQgKm1hcHBlZEJ1ZmZlciA9Ci0gICAgICAgIGdsTWFwQnVmZmVyUmFu
Z2UoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCwgc2l6ZW9mKGZsb2F0KSAqIDYsIEdM
X01BUF9SRUFEX0JJVCk7Ci0gICAgQVNTRVJUX05FKG51bGxwdHIsIG1hcHBlZEJ1ZmZlcik7Ci0K
LSAgICBmbG9hdCAqbWFwcGVkRmxvYXRzID0gc3RhdGljX2Nhc3Q8ZmxvYXQgKj4obWFwcGVkQnVm
ZmVyKTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBjbnQgPSAwOyBjbnQgPCA2OyArK2NudCkKLSAg
ICB7Ci0gICAgICAgIEVYUEVDVF9FUShhdHRyaWJEYXRhW2NudF0sIG1hcHBlZEZsb2F0c1tjbnRd
KTsKLSAgICB9Ci0KLSAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCB0aGF0
IG11bHRpcGxlIHBhdXNlZCB0cmFuc2Zvcm0gZmVlZGJhY2tzIGRvIG5vdCBnZW5lcmF0ZSBlcnJv
cnMgb3IgY3Jhc2gKLVRFU1RfUChUcmFuc2Zvcm1GZWVkYmFja1Rlc3QsIE11bHRpcGxlUGF1c2Vk
KQotewotICAgIGNvbnN0IHNpemVfdCBkcmF3U2l6ZSA9IDEwMjQ7Ci0gICAgc3RkOjp2ZWN0b3I8
ZmxvYXQ+IHRyYW5zZm9ybUZlZWRiYWNrRGF0YShkcmF3U2l6ZSk7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBkcmF3U2l6ZTsgaSsrKQotICAgIHsKLSAgICAgICAgdHJhbnNmb3JtRmVlZGJh
Y2tEYXRhW2ldID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGkgKyAxKTsKLSAgICB9Ci0KLSAgICAvLyBJ
bml0aWFsaXplIHRoZSBidWZmZXJzIHRvIHplcm8KLSAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IGRy
YXdTaXplOwotICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBidWZmZXJJbml0aWFsRGF0YShidWZmZXJT
aXplLCAwKTsKLQotICAgIGNvbnN0IHNpemVfdCB0cmFuc2Zvcm1GZWVkYmFja0NvdW50ID0gODsK
LQotICAgIC8vIGNsYW5nLWZvcm1hdCBvZmYKLSAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhT
aGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgKCAgI3ZlcnNpb24gMzAwIGVzXG4KLSAg
ICAgICBpbiBoaWdocCB2ZWM0IHBvc2l0aW9uOwotICAgICAgIGluIGZsb2F0IHRyYW5zZm9ybUZl
ZWRiYWNrSW5wdXQ7Ci0gICAgICAgb3V0IGZsb2F0IHRyYW5zZm9ybUZlZWRiYWNrT3V0cHV0Owot
ICAgICAgIHZvaWQgbWFpbih2b2lkKQotICAgICAgIHsKLSAgICAgICAgICAgZ2xfUG9zaXRpb24g
PSBwb3NpdGlvbjsKLSAgICAgICAgICAgdHJhbnNmb3JtRmVlZGJhY2tPdXRwdXQgPSB0cmFuc2Zv
cm1GZWVkYmFja0lucHV0OwotICAgICAgIH0KLSAgICApOwotCi0gICAgY29uc3Qgc3RkOjpzdHJp
bmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgKCAgI3ZlcnNpb24g
MzAwIGVzXG4KLSAgICAgICBvdXQgbWVkaXVtcCB2ZWM0IGNvbG9yOwotICAgICAgIHZvaWQgbWFp
bih2b2lkKQotICAgICAgIHsKLSAgICAgICAgICAgY29sb3IgPSB2ZWM0KDEuMCwgMS4wLCAxLjAs
IDEuMCk7Ci0gICAgICAgfQotICAgICk7Ci0gICAgLy8gY2xhbmctZm9ybWF0IG9uCi0KLSAgICBz
dGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdGZWYXJ5aW5nczsKLSAgICB0ZlZhcnlpbmdzLnB1c2hf
YmFjaygidHJhbnNmb3JtRmVlZGJhY2tPdXRwdXQiKTsKLQotICAgIG1Qcm9ncmFtID0gQ29tcGls
ZVByb2dyYW1XaXRoVHJhbnNmb3JtRmVlZGJhY2sodmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVu
dFNoYWRlclNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRmVmFyeWluZ3MsIEdMX0lOVEVSTEVBVkVEX0FUVFJJQlMpOwotICAgIEFTU0VS
VF9ORSgwdSwgbVByb2dyYW0pOwotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0KLSAgICBH
TGludCBwb3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInBv
c2l0aW9uIik7Ci0gICAgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlv
bik7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWI0Zihwb3NpdGlvbkxvY2F0aW9uLCAwLjBmLCAwLjBmLCAw
LjBmLCAxLjBmKTsKLQotICAgIEdMaW50IHRmSW5wdXRMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9j
YXRpb24obVByb2dyYW0sICJ0cmFuc2Zvcm1GZWVkYmFja0lucHV0Iik7Ci0gICAgZ2xFbmFibGVW
ZXJ0ZXhBdHRyaWJBcnJheSh0ZklucHV0TG9jYXRpb24pOwotICAgIGdsVmVydGV4QXR0cmliUG9p
bnRlcih0ZklucHV0TG9jYXRpb24sIDEsIEdMX0ZMT0FULCBmYWxzZSwgMCwgJnRyYW5zZm9ybUZl
ZWRiYWNrRGF0YVswXSk7Ci0KLSAgICBnbERlcHRoTWFzayhHTF9GQUxTRSk7Ci0gICAgZ2xFbmFi
bGUoR0xfREVQVEhfVEVTVCk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBHTHVp
bnQgdHJhbnNmb3JtRmVlZGJhY2tzW3RyYW5zZm9ybUZlZWRiYWNrQ291bnRdOwotICAgIGdsR2Vu
VHJhbnNmb3JtRmVlZGJhY2tzKHRyYW5zZm9ybUZlZWRiYWNrQ291bnQsIHRyYW5zZm9ybUZlZWRi
YWNrcyk7Ci0KLSAgICBHTHVpbnQgYnVmZmVyc1t0cmFuc2Zvcm1GZWVkYmFja0NvdW50XTsKLSAg
ICBnbEdlbkJ1ZmZlcnModHJhbnNmb3JtRmVlZGJhY2tDb3VudCwgYnVmZmVycyk7Ci0KLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYW5zZm9ybUZlZWRiYWNrQ291bnQ7IGkrKykKLSAgICB7
Ci0gICAgICAgIGdsQmluZFRyYW5zZm9ybUZlZWRiYWNrKEdMX1RSQU5TRk9STV9GRUVEQkFDSywg
dHJhbnNmb3JtRmVlZGJhY2tzW2ldKTsKLQotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfVFJBTlNG
T1JNX0ZFRURCQUNLX0JVRkZFUiwgYnVmZmVyc1tpXSk7Ci0gICAgICAgIGdsQnVmZmVyRGF0YShH
TF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCBidWZmZXJTaXplICogc2l6ZW9mKEdMZmxvYXQp
LAotICAgICAgICAgICAgICAgICAgICAgJmJ1ZmZlckluaXRpYWxEYXRhWzBdLCBHTF9EWU5BTUlD
X0RSQVcpOwotICAgICAgICBnbEJpbmRCdWZmZXJCYXNlKEdMX1RSQU5TRk9STV9GRUVEQkFDS19C
VUZGRVIsIDAsIGJ1ZmZlcnNbaV0pOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQot
ICAgICAgICBnbEJlZ2luVHJhbnNmb3JtRmVlZGJhY2soR0xfUE9JTlRTKTsKLQotICAgICAgICBn
bERyYXdBcnJheXMoR0xfUE9JTlRTLCAwLCBzdGF0aWNfY2FzdDxHTHNpemVpPihkcmF3U2l6ZSkp
OwotCi0gICAgICAgIGdsUGF1c2VUcmFuc2Zvcm1GZWVkYmFjaygpOwotCi0gICAgICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOwotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJh
bnNmb3JtRmVlZGJhY2tDb3VudDsgaSsrKQotICAgIHsKLSAgICAgICAgZ2xCaW5kVHJhbnNmb3Jt
RmVlZGJhY2soR0xfVFJBTlNGT1JNX0ZFRURCQUNLLCB0cmFuc2Zvcm1GZWVkYmFja3NbaV0pOwot
ICAgICAgICBnbEVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7Ci0gICAgICAgIGdsRGVsZXRlVHJhbnNm
b3JtRmVlZGJhY2tzKDEsICZ0cmFuc2Zvcm1GZWVkYmFja3NbaV0pOwotCi0gICAgICAgIEVYUEVD
VF9HTF9OT19FUlJPUigpOwotICAgIH0KLX0KLS8vIFRlc3QgdGhhdCBydW5uaW5nIG11bHRpcGxl
IHNpbXVsdGFuZW91cyBxdWVyaWVzIGFuZCB0cmFuc2Zvcm0gZmVlZGJhY2tzIGZyb20gbXVsdGlw
bGUgRUdMCi0vLyBjb250ZXh0cyByZXR1cm5zIHRoZSBjb3JyZWN0IHJlc3VsdHMuICBIZWxwcyBl
eHBvc2UgYnVncyBpbiBBTkdMRSdzIHZpcnR1YWwgY29udGV4dHMuCi1URVNUX1AoVHJhbnNmb3Jt
RmVlZGJhY2tUZXN0LCBNdWx0aUNvbnRleHQpCi17Ci0jaWYgZGVmaW5lZChBTkdMRV9QTEFURk9S
TV9BUFBMRSkKLSAgICBpZiAoKElzTlZJRElBKCkgfHwgSXNBTUQoKSkgJiYgR2V0UGFyYW0oKSA9
PSBFUzNfT1BFTkdMKCkpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBl
ZCBvbiBOVmlkaWEgYW5kIEFNRCBPcGVuR0wgb24gT1NYLiIgPDwgc3RkOjplbmRsOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0xJ
TlVYKQotICAgIGlmIChJc0FNRCgpICYmIEdldFBhcmFtKCkgPT0gRVMzX09QRU5HTCgpKQotICAg
IHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gQU1EIE9wZW5HTCBvbiBM
aW51eC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSNlbmRpZgotCi0g
ICAgRUdMaW50IGNvbnRleHRBdHRyaWJ1dGVzW10gPSB7Ci0gICAgICAgIEVHTF9DT05URVhUX01B
Sk9SX1ZFUlNJT05fS0hSLAotICAgICAgICBHZXRQYXJhbSgpLm1ham9yVmVyc2lvbiwKLSAgICAg
ICAgRUdMX0NPTlRFWFRfTUlOT1JfVkVSU0lPTl9LSFIsCi0gICAgICAgIEdldFBhcmFtKCkubWlu
b3JWZXJzaW9uLAotICAgICAgICBFR0xfTk9ORSwKLSAgICB9OwotCi0gICAgRUdMV2luZG93ICp3
aW5kb3cgPSBnZXRFR0xXaW5kb3coKTsKLQotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHdpbmRv
dy0+Z2V0RGlzcGxheSgpOwotICAgIEVHTENvbmZpZyBjb25maWcgICA9IHdpbmRvdy0+Z2V0Q29u
ZmlnKCk7Ci0gICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gd2luZG93LT5nZXRTdXJmYWNlKCk7Ci0K
LSAgICBjb25zdCBzaXplX3QgcGFzc0NvdW50ID0gNTsKLSAgICBzdHJ1Y3QgQ29udGV4dEluZm8K
LSAgICB7Ci0gICAgICAgIEVHTENvbnRleHQgY29udGV4dDsKLSAgICAgICAgR0x1aW50IHByb2dy
YW07Ci0gICAgICAgIEdMdWludCBxdWVyeTsKLSAgICAgICAgR0x1aW50IGJ1ZmZlcjsKLSAgICAg
ICAgc2l6ZV90IHByaW1pdGl2ZUNvdW50c1twYXNzQ291bnRdOwotICAgIH07Ci0gICAgQ29udGV4
dEluZm8gY29udGV4dHNbMzJdOwotCi0gICAgY29uc3Qgc2l6ZV90IG1heERyYXdTaXplID0gMTAy
NDsKLQotICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiB0cmFuc2Zvcm1GZWVkYmFja0RhdGEobWF4RHJh
d1NpemUpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4RHJhd1NpemU7IGkrKykKLSAg
ICB7Ci0gICAgICAgIHRyYW5zZm9ybUZlZWRiYWNrRGF0YVtpXSA9IHN0YXRpY19jYXN0PGZsb2F0
PihpICsgMSk7Ci0gICAgfQotCi0gICAgLy8gSW5pdGlhbGl6ZSB0aGUgYnVmZmVycyB0byB6ZXJv
Ci0gICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBtYXhEcmF3U2l6ZSAqIHBhc3NDb3VudDsKLSAgICBz
dGQ6OnZlY3RvcjxmbG9hdD4gYnVmZmVySW5pdGlhbERhdGEoYnVmZmVyU2l6ZSwgMCk7Ci0KLSAg
ICBmb3IgKGF1dG8gJmNvbnRleHQgOiBjb250ZXh0cykKLSAgICB7Ci0gICAgICAgIGNvbnRleHQu
Y29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBFR0xfTk9fQ09OVEVY
VCwgY29udGV4dEF0dHJpYnV0ZXMpOwotICAgICAgICBBU1NFUlRfTkUoY29udGV4dC5jb250ZXh0
LCBFR0xfTk9fQ09OVEVYVCk7Ci0KLSAgICAgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgc3Vy
ZmFjZSwgc3VyZmFjZSwgY29udGV4dC5jb250ZXh0KTsKLQotICAgICAgICAvLyBjbGFuZy1mb3Jt
YXQgb2ZmCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlclNvdXJjZSA9IFNI
QURFUl9TT1VSQ0UKLSAgICAgICAgKCAgICN2ZXJzaW9uIDMwMCBlc1xuCi0gICAgICAgICAgICBp
biBoaWdocCB2ZWM0IHBvc2l0aW9uOwotICAgICAgICAgICAgaW4gZmxvYXQgdHJhbnNmb3JtRmVl
ZGJhY2tJbnB1dDsKLSAgICAgICAgICAgIG91dCBmbG9hdCB0cmFuc2Zvcm1GZWVkYmFja091dHB1
dDsKLSAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAgICAgICAgICAgdHJhbnNmb3Jt
RmVlZGJhY2tPdXRwdXQgPSB0cmFuc2Zvcm1GZWVkYmFja0lucHV0OwotICAgICAgICAgICAgfQot
ICAgICAgICApOwotCi0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdtZW50U2hhZGVyU291
cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoICAgI3ZlcnNpb24gMzAwIGVzXG4KLSAgICAg
ICAgICAgIG91dCBtZWRpdW1wIHZlYzQgY29sb3I7Ci0gICAgICAgICAgICB2b2lkIG1haW4odm9p
ZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb2xvciA9IHZlYzQoMS4wLCAxLjAs
IDEuMCwgMS4wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsKLSAgICAgICAgLy8gY2xhbmct
Zm9ybWF0IG9uCi0KLSAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRmVmFyeWluZ3M7
Ci0gICAgICAgIHRmVmFyeWluZ3MucHVzaF9iYWNrKCJ0cmFuc2Zvcm1GZWVkYmFja091dHB1dCIp
OwotCi0gICAgICAgIGNvbnRleHQucHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtV2l0aFRyYW5zZm9y
bUZlZWRiYWNrKAotICAgICAgICAgICAgdmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRl
clNvdXJjZSwgdGZWYXJ5aW5ncywgR0xfSU5URVJMRUFWRURfQVRUUklCUyk7Ci0gICAgICAgIEFT
U0VSVF9ORShjb250ZXh0LnByb2dyYW0sIDB1KTsKLSAgICAgICAgZ2xVc2VQcm9ncmFtKGNvbnRl
eHQucHJvZ3JhbSk7Ci0KLSAgICAgICAgR0xpbnQgcG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0
cmliTG9jYXRpb24oY29udGV4dC5wcm9ncmFtLCAicG9zaXRpb24iKTsKLSAgICAgICAgZ2xEaXNh
YmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7Ci0gICAgICAgIGdsVmVydGV4
QXR0cmliNGYocG9zaXRpb25Mb2NhdGlvbiwgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZik7Ci0KLSAg
ICAgICAgR0xpbnQgdGZJbnB1dExvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihjb250ZXh0
LnByb2dyYW0sICJ0cmFuc2Zvcm1GZWVkYmFja0lucHV0Iik7Ci0gICAgICAgIGdsRW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkodGZJbnB1dExvY2F0aW9uKTsKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQ
b2ludGVyKHRmSW5wdXRMb2NhdGlvbiwgMSwgR0xfRkxPQVQsIGZhbHNlLCAwLCAmdHJhbnNmb3Jt
RmVlZGJhY2tEYXRhWzBdKTsKLQotICAgICAgICBnbERlcHRoTWFzayhHTF9GQUxTRSk7Ci0gICAg
ICAgIGdsRW5hYmxlKEdMX0RFUFRIX1RFU1QpOwotICAgICAgICBnbEdlblF1ZXJpZXNFWFQoMSwg
JmNvbnRleHQucXVlcnkpOwotICAgICAgICBnbEJlZ2luUXVlcnlFWFQoR0xfVFJBTlNGT1JNX0ZF
RURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTiwgY29udGV4dC5xdWVyeSk7Ci0KLSAgICAgICAgQVNT
RVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZjb250ZXh0LmJ1
ZmZlcik7Ci0gICAgICAgIGdsQmluZEJ1ZmZlcihHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVS
LCBjb250ZXh0LmJ1ZmZlcik7Ci0gICAgICAgIGdsQnVmZmVyRGF0YShHTF9UUkFOU0ZPUk1fRkVF
REJBQ0tfQlVGRkVSLCBidWZmZXJTaXplICogc2l6ZW9mKEdMZmxvYXQpLAotICAgICAgICAgICAg
ICAgICAgICAgJmJ1ZmZlckluaXRpYWxEYXRhWzBdLCBHTF9EWU5BTUlDX0RSQVcpOwotICAgICAg
ICBnbEJpbmRCdWZmZXJCYXNlKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIDAsIGNvbnRl
eHQuYnVmZmVyKTsKLQotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgICAgICAv
LyBGb3IgZWFjaCBwYXNzLCBkcmF3IGJldHdlZW4gMCBhbmQgbWF4RHJhd1NpemUgcHJpbWl0aXZl
cwotICAgICAgICBmb3IgKGF1dG8gJnByaW1Db3VudCA6IGNvbnRleHQucHJpbWl0aXZlQ291bnRz
KQotICAgICAgICB7Ci0gICAgICAgICAgICBwcmltQ291bnQgPSByYW5kKCkgJSBtYXhEcmF3U2l6
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTF9QT0lO
VFMpOwotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IHBhc3MgPSAwOyBwYXNzIDwgcGFzc0NvdW50
OyBwYXNzKyspCi0gICAgewotICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJmNvbnRleHQgOiBjb250
ZXh0cykKLSAgICAgICAgewotICAgICAgICAgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgc3Vy
ZmFjZSwgc3VyZmFjZSwgY29udGV4dC5jb250ZXh0KTsKLQotICAgICAgICAgICAgZ2xEcmF3QXJy
YXlzKEdMX1BPSU5UUywgMCwgc3RhdGljX2Nhc3Q8R0xzaXplaT4oY29udGV4dC5wcmltaXRpdmVD
b3VudHNbcGFzc10pKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZvciAoY29uc3QgYXV0byAm
Y29udGV4dCA6IGNvbnRleHRzKQotICAgIHsKLSAgICAgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxh
eSwgc3VyZmFjZSwgc3VyZmFjZSwgY29udGV4dC5jb250ZXh0KTsKLQotICAgICAgICBnbEVuZFRy
YW5zZm9ybUZlZWRiYWNrKCk7Ci0KLSAgICAgICAgZ2xFbmRRdWVyeUVYVChHTF9UUkFOU0ZPUk1f
RkVFREJBQ0tfUFJJTUlUSVZFU19XUklUVEVOKTsKLQotICAgICAgICBHTHVpbnQgcmVzdWx0ID0g
MDsKLSAgICAgICAgZ2xHZXRRdWVyeU9iamVjdHVpdkVYVChjb250ZXh0LnF1ZXJ5LCBHTF9RVUVS
WV9SRVNVTFRfRVhULCAmcmVzdWx0KTsKLQotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsK
LQotICAgICAgICBzaXplX3QgdG90YWxQcmltQ291bnQgPSAwOwotICAgICAgICBmb3IgKGNvbnN0
IGF1dG8gJnByaW1Db3VudCA6IGNvbnRleHQucHJpbWl0aXZlQ291bnRzKQotICAgICAgICB7Ci0g
ICAgICAgICAgICB0b3RhbFByaW1Db3VudCArPSBwcmltQ291bnQ7Ci0gICAgICAgIH0KLSAgICAg
ICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMdWludD4odG90YWxQcmltQ291bnQpLCByZXN1bHQp
OwotCi0gICAgICAgIGNvbnN0IGZsb2F0ICpidWZmZXJEYXRhID0gcmVpbnRlcnByZXRfY2FzdDxm
bG9hdCAqPihnbE1hcEJ1ZmZlclJhbmdlKAotICAgICAgICAgICAgR0xfVFJBTlNGT1JNX0ZFRURC
QUNLX0JVRkZFUiwgMCwgYnVmZmVyU2l6ZSAqIHNpemVvZihHTGZsb2F0KSwgR0xfTUFQX1JFQURf
QklUKSk7Ci0KLSAgICAgICAgc2l6ZV90IGN1ckJ1ZmZlckluZGV4ID0gMDsKLSAgICAgICAgZm9y
IChjb25zdCBhdXRvICZwcmltQ291bnQgOiBjb250ZXh0LnByaW1pdGl2ZUNvdW50cykKLSAgICAg
ICAgewotICAgICAgICAgICAgZm9yIChzaXplX3QgcHJpbSA9IDA7IHByaW0gPCBwcmltQ291bnQ7
IHByaW0rKykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoYnVmZmVy
RGF0YVtjdXJCdWZmZXJJbmRleF0sIHByaW0gKyAxKTsKLSAgICAgICAgICAgICAgICBjdXJCdWZm
ZXJJbmRleCsrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgd2hpbGUgKGN1
ckJ1ZmZlckluZGV4IDwgYnVmZmVyU2l6ZSkKLSAgICAgICAgewotICAgICAgICAgICAgRVhQRUNU
X0VRKGJ1ZmZlckRhdGFbY3VyQnVmZmVySW5kZXhdLCAwLjBmKTsKLSAgICAgICAgICAgIGN1ckJ1
ZmZlckluZGV4Kys7Ci0gICAgICAgIH0KLQotICAgICAgICBnbFVubWFwQnVmZmVyKEdMX1RSQU5T
Rk9STV9GRUVEQkFDS19CVUZGRVIpOwotICAgIH0KLQotICAgIGVnbE1ha2VDdXJyZW50KGRpc3Bs
YXksIHN1cmZhY2UsIHN1cmZhY2UsIHdpbmRvdy0+Z2V0Q29udGV4dCgpKTsKLQotICAgIGZvciAo
YXV0byAmY29udGV4dCA6IGNvbnRleHRzKQotICAgIHsKLSAgICAgICAgZWdsRGVzdHJveUNvbnRl
eHQoZGlzcGxheSwgY29udGV4dC5jb250ZXh0KTsKLSAgICAgICAgY29udGV4dC5jb250ZXh0ID0g
RUdMX05PX0NPTlRFWFQ7Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQgd2hlbiB0d28gdmVjMnMg
YXJlIHBhY2tlZCBpbnRvIHRoZSBzYW1lIHJlZ2lzdGVyLCB3ZSBjYW4gc3RpbGwgY2FwdHVyZSBi
b3RoIG9mIHRoZW0uCi1URVNUX1AoVHJhbnNmb3JtRmVlZGJhY2tUZXN0LCBQYWNraW5nQnVnKQot
ewotICAgIC8vIFRPRE8oam1hZGlsbCk6IFdpdGggcG9pbnRzIGFuZCByYXN0ZXJpemVyIGRpc2Nh
cmQ/Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAg
ICIjdmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgImluIHZlYzIgaW5BdHRyaWIxO1xuIgotICAg
ICAgICAiaW4gdmVjMiBpbkF0dHJpYjI7XG4iCi0gICAgICAgICJvdXQgdmVjMiBvdXRBdHRyaWIx
O1xuIgotICAgICAgICAib3V0IHZlYzIgb3V0QXR0cmliMjtcbiIKLSAgICAgICAgImluIHZlYzIg
cG9zaXRpb247XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IgotICAgICAgICAiICBvdXRBdHRy
aWIxID0gaW5BdHRyaWIxO1xuIgotICAgICAgICAiICBvdXRBdHRyaWIyID0gaW5BdHRyaWIyO1xu
IgotICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAsIDEpO1xuIgotICAg
ICAgICAifSI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXJTb3VyY2Ug
PQotICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVt
cCBmbG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAidm9pZCBt
YWluKCkge1xuIgotICAgICAgICAiICBjb2xvciA9IHZlYzQoMCk7XG4iCi0gICAgICAgICJ9IjsK
LQotICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiB0ZlZhcnlpbmdzOwotICAgIHRmVmFyeWlu
Z3MucHVzaF9iYWNrKCJvdXRBdHRyaWIxIik7Ci0gICAgdGZWYXJ5aW5ncy5wdXNoX2JhY2soIm91
dEF0dHJpYjIiKTsKLQotICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW1XaXRoVHJhbnNmb3Jt
RmVlZGJhY2sodmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRmVmFyeWluZ3Ms
IEdMX0lOVEVSTEVBVkVEX0FUVFJJQlMpOwotICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwot
Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX1RSQU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG1UcmFuc2Zv
cm1GZWVkYmFja0J1ZmZlcik7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX1RSQU5TRk9STV9GRUVEQkFD
S19CVUZGRVIsIHNpemVvZihWZWN0b3IyKSAqIDIgKiA2LCBudWxscHRyLCBHTF9TVFJFQU1fRFJB
Vyk7Ci0KLSAgICBnbEJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHTF9UUkFOU0ZPUk1fRkVFREJBQ0ss
IG1UcmFuc2Zvcm1GZWVkYmFjayk7Ci0gICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9UUkFOU0ZPUk1f
RkVFREJBQ0tfQlVGRkVSLCAwLCBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIpOwotCi0gICAgR0xp
bnQgYXR0cmliMUxvYyA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJpbkF0dHJpYjEi
KTsKLSAgICBHTGludCBhdHRyaWIyTG9jID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwg
ImluQXR0cmliMiIpOwotCi0gICAgVmVjdG9yMiBhdHRyaWIxRGF0YVtdID0ge1ZlY3RvcjIoMS4w
LCAyLjApLCBWZWN0b3IyKDMuMCwgNC4wKSwgVmVjdG9yMig1LjAsIDYuMCl9OwotICAgIFZlY3Rv
cjIgYXR0cmliMkRhdGFbXSA9IHtWZWN0b3IyKDExLjAsIDEyLjApLCBWZWN0b3IyKDEzLjAsIDE0
LjApLCBWZWN0b3IyKDE1LjAsIDE2LjApfTsKLQotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJy
YXkoYXR0cmliMUxvYyk7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShhdHRyaWIyTG9j
KTsKLQotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihhdHRyaWIxTG9jLCAyLCBHTF9GTE9BVCwg
R0xfRkFMU0UsIDAsIGF0dHJpYjFEYXRhKTsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoYXR0
cmliMkxvYywgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBhdHRyaWIyRGF0YSk7Ci0KLSAgICBn
bFVzZVByb2dyYW0obVByb2dyYW0pOwotICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTF9U
UklBTkdMRVMpOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAg
ICBnbEVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7Ci0gICAgZ2xVc2VQcm9ncmFtKDApOwotICAgIEFT
U0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgY29uc3QgR0x2b2lkICptYXBQb2ludGVyID0KLSAg
ICAgICAgZ2xNYXBCdWZmZXJSYW5nZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBz
aXplb2YoVmVjdG9yMikgKiAyICogNiwgR0xfTUFQX1JFQURfQklUKTsKLSAgICBBU1NFUlRfTkUo
bnVsbHB0ciwgbWFwUG9pbnRlcik7Ci0KLSAgICBjb25zdCBWZWN0b3IyICp2ZWNQb2ludGVyID0g
c3RhdGljX2Nhc3Q8Y29uc3QgVmVjdG9yMiAqPihtYXBQb2ludGVyKTsKLSAgICBmb3IgKHVuc2ln
bmVkIGludCB2ZWN0b3JJbmRleCA9IDA7IHZlY3RvckluZGV4IDwgMzsgKyt2ZWN0b3JJbmRleCkK
LSAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBzdHJlYW0xSW5kZXggPSB2ZWN0b3JJbmRleCAq
IDI7Ci0gICAgICAgIHVuc2lnbmVkIGludCBzdHJlYW0ySW5kZXggPSB2ZWN0b3JJbmRleCAqIDIg
KyAxOwotICAgICAgICBFWFBFQ1RfRVEoYXR0cmliMURhdGFbdmVjdG9ySW5kZXhdLCB2ZWNQb2lu
dGVyW3N0cmVhbTFJbmRleF0pOwotICAgICAgICBFWFBFQ1RfRVEoYXR0cmliMkRhdGFbdmVjdG9y
SW5kZXhdLCB2ZWNQb2ludGVyW3N0cmVhbTJJbmRleF0pOwotICAgIH0KLQotICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOwotfQotCi0vLyBUZXN0IHRoYXQgdHJhbnNmb3JtIGZlZWRiYWNrIHZhcnlp
bmdzIHRoYXQgY2FuIGJlIG9wdGltaXplZCBvdXQgeWV0IGRvIG5vdCBjYXVzZSBwcm9ncmFtCi0v
LyBjb21waWxhdGlvbiB0byBmYWlsCi1URVNUX1AoVHJhbnNmb3JtRmVlZGJhY2tUZXN0LCBPcHRp
bWl6ZWRWYXJ5aW5ncykKLXsKLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U2hhZGVyU291
cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAiaW4gdmVjNCBhX3Zl
cnRleDtcbiIKLSAgICAgICAgImluIHZlYzMgYV9ub3JtYWw7IFxuIgotICAgICAgICAiXG4iCi0g
ICAgICAgICJ1bmlmb3JtIFRyYW5zZm9ybVxuIgotICAgICAgICAie1xuIgotICAgICAgICAiICAg
IG1hdDQgdV9tb2RlbFZpZXdNYXRyaXg7XG4iCi0gICAgICAgICIgICAgbWF0NCB1X3Byb2plY3Rp
b25NYXRyaXg7XG4iCi0gICAgICAgICIgICAgbWF0MyB1X25vcm1hbE1hdHJpeDtcbiIKLSAgICAg
ICAgIn07XG4iCi0gICAgICAgICJcbiIKLSAgICAgICAgIm91dCB2ZWMzIG5vcm1hbDtcbiIKLSAg
ICAgICAgIm91dCB2ZWM0IGVjUG9zaXRpb247XG4iCi0gICAgICAgICJcbiIKLSAgICAgICAgInZv
aWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgbm9ybWFsID0gbm9ybWFs
aXplKHVfbm9ybWFsTWF0cml4ICogYV9ub3JtYWwpO1xuIgotICAgICAgICAiICAgIGVjUG9zaXRp
b24gPSB1X21vZGVsVmlld01hdHJpeCAqIGFfdmVydGV4O1xuIgotICAgICAgICAiICAgIGdsX1Bv
c2l0aW9uID0gdV9wcm9qZWN0aW9uTWF0cml4ICogZWNQb3NpdGlvbjtcbiIKLSAgICAgICAgIn1c
biI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAg
ICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9h
dDtcbiIKLSAgICAgICAgIlxuIgotICAgICAgICAiaW4gdmVjMyBub3JtYWw7XG4iCi0gICAgICAg
ICJpbiB2ZWM0IGVjUG9zaXRpb247XG4iCi0gICAgICAgICJcbiIKLSAgICAgICAgIm91dCB2ZWM0
IGZyYWdDb2xvcjtcbiIKLSAgICAgICAgIlxuIgotICAgICAgICAidm9pZCBtYWluKClcbiIKLSAg
ICAgICAgIntcbiIKLSAgICAgICAgIiAgICBmcmFnQ29sb3IgPSB2ZWM0KG5vcm1hbC8yLjArdmVj
MygwLjUpLCAxKTtcbiIKLSAgICAgICAgIn1cbiI7Ci0KLSAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0
cmluZz4gdGZWYXJ5aW5nczsKLSAgICB0ZlZhcnlpbmdzLnB1c2hfYmFjaygibm9ybWFsIik7Ci0g
ICAgdGZWYXJ5aW5ncy5wdXNoX2JhY2soImVjUG9zaXRpb24iKTsKLQotICAgIG1Qcm9ncmFtID0g
Q29tcGlsZVByb2dyYW1XaXRoVHJhbnNmb3JtRmVlZGJhY2sodmVydGV4U2hhZGVyU291cmNlLCBm
cmFnbWVudFNoYWRlclNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRmVmFyeWluZ3MsIEdMX0lOVEVSTEVBVkVEX0FUVFJJQlMpOwotICAg
IEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotfQotCi0vLyBUZXN0IGFuIGVkZ2UgY2FzZSB3aGVy
ZSB0d28gdmFyeWluZ3MgYXJlIHVucmVmZXJlbmNlZCBpbiB0aGUgZnJhZyBzaGFkZXIuCi1URVNU
X1AoVHJhbnNmb3JtRmVlZGJhY2tUZXN0LCBUd29VbnJlZmVyZW5jZWRJbkZyYWdTaGFkZXIpCi17
Ci0gICAgLy8gVE9ETyhqbWFkaWxsKTogV2l0aCBwb2ludHMgYW5kIHJhc3Rlcml6ZXIgZGlzY2Fy
ZD8KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAg
IiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAiaW4gdmVjMyBwb3NpdGlvbjtcbiIKLSAgICAg
ICAgIm91dCB2ZWMzIG91dEF0dHJpYjE7XG4iCi0gICAgICAgICJvdXQgdmVjMyBvdXRBdHRyaWIy
O1xuIgotICAgICAgICAidm9pZCBtYWluKCkgeyIKLSAgICAgICAgIiAgb3V0QXR0cmliMSA9IHBv
c2l0aW9uO1xuIgotICAgICAgICAiICBvdXRBdHRyaWIyID0gcG9zaXRpb247XG4iCi0gICAgICAg
ICIgIGdsX1Bvc2l0aW9uID0gdmVjNChwb3NpdGlvbiwgMSk7XG4iCi0gICAgICAgICJ9IjsKLQot
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIj
dmVyc2lvbiAzMDAgZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgot
ICAgICAgICAib3V0IHZlYzQgY29sb3I7XG4iCi0gICAgICAgICJpbiB2ZWMzIG91dEF0dHJpYjE7
XG4iCi0gICAgICAgICJpbiB2ZWMzIG91dEF0dHJpYjI7XG4iCi0gICAgICAgICJ2b2lkIG1haW4o
KSB7XG4iCi0gICAgICAgICIgIGNvbG9yID0gdmVjNCgwKTtcbiIKLSAgICAgICAgIn0iOwotCi0g
ICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHRmVmFyeWluZ3M7Ci0gICAgdGZWYXJ5aW5ncy5w
dXNoX2JhY2soIm91dEF0dHJpYjEiKTsKLSAgICB0ZlZhcnlpbmdzLnB1c2hfYmFjaygib3V0QXR0
cmliMiIpOwotCi0gICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbVdpdGhUcmFuc2Zvcm1GZWVk
YmFjayh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291cmNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGZWYXJ5aW5ncywgR0xf
SU5URVJMRUFWRURfQVRUUklCUyk7Ci0gICAgQVNTRVJUX05FKDB1LCBtUHJvZ3JhbSk7Ci0KLSAg
ICBnbEJpbmRCdWZmZXIoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgbVRyYW5zZm9ybUZl
ZWRiYWNrQnVmZmVyKTsKLSAgICBnbEJ1ZmZlckRhdGEoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JV
RkZFUiwgc2l6ZW9mKFZlY3RvcjMpICogMiAqIDYsIG51bGxwdHIsIEdMX1NUUkVBTV9EUkFXKTsK
LQotICAgIGdsQmluZFRyYW5zZm9ybUZlZWRiYWNrKEdMX1RSQU5TRk9STV9GRUVEQkFDSywgbVRy
YW5zZm9ybUZlZWRiYWNrKTsKLSAgICBnbEJpbmRCdWZmZXJCYXNlKEdMX1RSQU5TRk9STV9GRUVE
QkFDS19CVUZGRVIsIDAsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlcik7Ci0KLSAgICBnbFVzZVBy
b2dyYW0obVByb2dyYW0pOwotICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTF9UUklBTkdM
RVMpOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBnbEVu
ZFRyYW5zZm9ybUZlZWRiYWNrKCk7Ci0gICAgZ2xVc2VQcm9ncmFtKDApOwotICAgIEFTU0VSVF9H
TF9OT19FUlJPUigpOwotCi0gICAgY29uc3QgR0x2b2lkICptYXBQb2ludGVyID0KLSAgICAgICAg
Z2xNYXBCdWZmZXJSYW5nZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSLCAwLCBzaXplb2Yo
VmVjdG9yMikgKiAyICogNiwgR0xfTUFQX1JFQURfQklUKTsKLSAgICBBU1NFUlRfTkUobnVsbHB0
ciwgbWFwUG9pbnRlcik7Ci0KLSAgICBjb25zdCBhdXRvICZxdWFkVmVydGljZXMgPSBHZXRRdWFk
VmVydGljZXMoKTsKLQotICAgIGNvbnN0IFZlY3RvcjMgKnZlY1BvaW50ZXIgPSBzdGF0aWNfY2Fz
dDxjb25zdCBWZWN0b3IzICo+KG1hcFBvaW50ZXIpOwotICAgIGZvciAodW5zaWduZWQgaW50IHZl
Y3RvckluZGV4ID0gMDsgdmVjdG9ySW5kZXggPCAzOyArK3ZlY3RvckluZGV4KQotICAgIHsKLSAg
ICAgICAgdW5zaWduZWQgaW50IHN0cmVhbTFJbmRleCA9IHZlY3RvckluZGV4ICogMjsKLSAgICAg
ICAgdW5zaWduZWQgaW50IHN0cmVhbTJJbmRleCA9IHZlY3RvckluZGV4ICogMiArIDE7Ci0gICAg
ICAgIEVYUEVDVF9FUShxdWFkVmVydGljZXNbdmVjdG9ySW5kZXhdLCB2ZWNQb2ludGVyW3N0cmVh
bTFJbmRleF0pOwotICAgICAgICBFWFBFQ1RfRVEocXVhZFZlcnRpY2VzW3ZlY3RvckluZGV4XSwg
dmVjUG9pbnRlcltzdHJlYW0ySW5kZXhdKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJS
T1IoKTsKLX0KLWNsYXNzIFRyYW5zZm9ybUZlZWRiYWNrTGlmZXRpbWVUZXN0IDogcHVibGljIFRy
YW5zZm9ybUZlZWRiYWNrVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgVHJhbnNmb3JtRmVlZGJh
Y2tMaWZldGltZVRlc3QoKSA6IG1WZXJ0ZXhBcnJheSgwKSB7fQotCi0gICAgdm9pZCBTZXRVcCgp
IG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7Ci0KLSAgICAgICAg
Z2xHZW5WZXJ0ZXhBcnJheXMoMSwgJm1WZXJ0ZXhBcnJheSk7Ci0gICAgICAgIGdsQmluZFZlcnRl
eEFycmF5KG1WZXJ0ZXhBcnJheSk7Ci0KLSAgICAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+
IHRmVmFyeWluZ3M7Ci0gICAgICAgIHRmVmFyeWluZ3MucHVzaF9iYWNrKCJnbF9Qb3NpdGlvbiIp
OwotICAgICAgICBjb21waWxlRGVmYXVsdFByb2dyYW0odGZWYXJ5aW5ncywgR0xfU0VQQVJBVEVf
QVRUUklCUyk7Ci0KLSAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtVHJhbnNmb3JtRmVlZGJhY2tC
dWZmZXIpOwotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZF
UiwgbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKLSAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX1RS
QU5TRk9STV9GRUVEQkFDS19CVUZGRVIsIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlclNpemUsIE5V
TEwsCi0gICAgICAgICAgICAgICAgICAgICBHTF9EWU5BTUlDX0RSQVcpOwotICAgICAgICBnbEJp
bmRCdWZmZXIoR0xfVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUiwgMCk7Ci0KLSAgICAgICAgZ2xH
ZW5UcmFuc2Zvcm1GZWVkYmFja3MoMSwgJm1UcmFuc2Zvcm1GZWVkYmFjayk7Ci0KLSAgICAgICAg
QVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBnbERlbGV0ZVZlcnRleEFycmF5cygxLCAmbVZlcnRleEFycmF5
KTsKLSAgICAgICAgVHJhbnNmb3JtRmVlZGJhY2tUZXN0OjpUZWFyRG93bigpOwotICAgIH0KLQot
ICAgIEdMdWludCBtVmVydGV4QXJyYXk7Ci19OwotCi0vLyBUZXN0cyBhIGJ1ZyB3aXRoIHN0YXRl
IHN5bmNpbmcgYW5kIGRlbGV0ZWQgdHJhbnNmb3JtIGZlZWRiYWNrIGJ1ZmZlcnMuCi1URVNUX1Ao
VHJhbnNmb3JtRmVlZGJhY2tMaWZldGltZVRlc3QsIERlbGV0ZWRCdWZmZXIpCi17Ci0gICAgLy8g
Rmlyc3Qgc3RyZWFtIHZlcnRleCBkYXRhIHRvIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlci4KLSAg
ICBnbEJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHTF9UUkFOU0ZPUk1fRkVFREJBQ0ssIG1UcmFuc2Zv
cm1GZWVkYmFjayk7Ci0gICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9UUkFOU0ZPUk1fRkVFREJBQ0tf
QlVGRkVSLCAwLCBtVHJhbnNmb3JtRmVlZGJhY2tCdWZmZXIpOwotCi0gICAgZ2xVc2VQcm9ncmFt
KG1Qcm9ncmFtKTsKLQotICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTF9UUklBTkdMRVMp
OwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmLCAxLjBmLCB0cnVlKTsK
LSAgICBnbEVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7Ci0KLSAgICBnbEJpbmRUcmFuc2Zvcm1GZWVk
YmFjayhHTF9UUkFOU0ZPUk1fRkVFREJBQ0ssIDApOwotCi0gICAgLy8gVE9ETyhqbWFkaWxsKTog
UmVtb3ZlIHRoaXMgd2hlbiBodHRwOi8vYW5nbGVidWcuY29tLzEzNTEgaXMgZml4ZWQuCi0gICAg
Z2xCaW5kVmVydGV4QXJyYXkoMCk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIs
IDAuNWYpOwotICAgIGdsQmluZFZlcnRleEFycmF5KDEpOwotCi0gICAgLy8gTmV4dCwgZHJhdyB2
ZXJ0aWNlcyB3aXRoIG1UcmFuc2Zvcm1GZWVkYmFja0J1ZmZlci4gVGhpcyB3aWxsIGxpbmsgdG8g
bVZlcnRleEFycmF5LgotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1UcmFuc2Zv
cm1GZWVkYmFja0J1ZmZlcik7Ci0gICAgR0xpbnQgbG9jID0gZ2xHZXRBdHRyaWJMb2NhdGlvbiht
UHJvZ3JhbSwgInBvc2l0aW9uIik7Ci0gICAgQVNTRVJUX05FKC0xLCBsb2MpOwotICAgIGdsVmVy
dGV4QXR0cmliUG9pbnRlcihsb2MsIDEsIEdMX0ZMT0FULCBHTF9GQUxTRSwgNCwgbnVsbHB0cik7
Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShsb2MpOwotICAgIGdsQmluZEJ1ZmZlcihH
TF9BUlJBWV9CVUZGRVIsIDApOwotICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMp
OwotCi0gICAgLy8gRGVsZXRlIHJlc291cmNlcywgbWFraW5nIGEgc3RyYW5kZWQgcG9pbnRlciB0
byBtVmVydGV4QXJyYXkgaW4gbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyLgotICAgIGdsRGVsZXRl
QnVmZmVycygxLCAmbVRyYW5zZm9ybUZlZWRiYWNrQnVmZmVyKTsKLSAgICBtVHJhbnNmb3JtRmVl
ZGJhY2tCdWZmZXIgPSAwOwotICAgIGdsRGVsZXRlVmVydGV4QXJyYXlzKDEsICZtVmVydGV4QXJy
YXkpOwotICAgIG1WZXJ0ZXhBcnJheSA9IDA7Ci0KLSAgICAvLyBUaGVuIGRyYXcgYWdhaW4gd2l0
aCB0cmFuc2Zvcm0gZmVlZGJhY2ssIGRlcmVmZXJlbmNpbmcgdGhlIHN0cmFuZGVkIHBvaW50ZXIu
Ci0gICAgZ2xCaW5kVHJhbnNmb3JtRmVlZGJhY2soR0xfVFJBTlNGT1JNX0ZFRURCQUNLLCBtVHJh
bnNmb3JtRmVlZGJhY2spOwotICAgIGdsQmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHTF9UUklBTkdM
RVMpOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmLCAxLjBmLCB0cnVl
KTsKLSAgICBnbEVuZFRyYW5zZm9ybUZlZWRiYWNrKCk7Ci0gICAgZ2xCaW5kVHJhbnNmb3JtRmVl
ZGJhY2soR0xfVFJBTlNGT1JNX0ZFRURCQUNLLCAwKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotfQotCi0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29uZmlndXJhdGlvbnMgKGUu
Zy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lvbikgdGhlc2UgdGVzdHMg
c2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChUcmFuc2Zvcm1G
ZWVkYmFja1Rlc3QsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsK
LUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVHJhbnNmb3JtRmVlZGJhY2tMaWZldGltZVRlc3QsIEVT
M19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygpKTsKLQotfSAgLy8gYW5vbnlt
b3VzIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL1VuaWZvcm1CdWZmZXJUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9Vbmlmb3JtQnVmZmVyVGVzdC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDE1ZGNjYjYyMDBiLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVW5pZm9ybUJ1ZmZlclRlc3QuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNTkwICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJ0
ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotI2luY2x1ZGUgInRlc3RfdXRpbHMvZ2xfcmFpaS5oIgot
Ci11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1jbGFzcyBVbmlmb3Jt
QnVmZmVyVGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFVuaWZv
cm1CdWZmZXJUZXN0KCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDEyOCk7Ci0gICAg
ICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25maWdSZWRCaXRzKDgpOwot
ICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0JsdWVCaXRz
KDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgfQotCi0gICAgdmlydHVh
bCB2b2lkIFNldFVwKCkKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNF
Ci0gICAgICAgICggICAjdmVyc2lvbiAzMDAgZXNcbgotICAgICAgICAgICAgaW4gdmVjNCBwb3Np
dGlvbjsKLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgKTsK
LSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJf
U09VUkNFCi0gICAgICAgICggICAjdmVyc2lvbiAzMDAgZXNcbgotICAgICAgICAgICAgcHJlY2lz
aW9uIGhpZ2hwIGZsb2F0OwotICAgICAgICAgICAgdW5pZm9ybSB1bmkgewotICAgICAgICAgICAg
ICAgIHZlYzQgY29sb3I7Ci0gICAgICAgICAgICB9OwotCi0gICAgICAgICAgICBvdXQgdmVjNCBm
cmFnQ29sb3I7Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgZnJhZ0NvbG9yID0gY29sb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7
Ci0KLSAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2Us
IGZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICAgICAgQVNTRVJUX05FKG1Qcm9ncmFtLCAwdSk7
Ci0KLSAgICAgICAgbVVuaWZvcm1CdWZmZXJJbmRleCA9IGdsR2V0VW5pZm9ybUJsb2NrSW5kZXgo
bVByb2dyYW0sICJ1bmkiKTsKLSAgICAgICAgQVNTRVJUX05FKG1Vbmlmb3JtQnVmZmVySW5kZXgs
IC0xKTsKLQotICAgICAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1Vbmlmb3JtQnVmZmVyKTsKLQotICAg
ICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgVGVh
ckRvd24oKQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtVW5pZm9ybUJ1ZmZl
cik7Ci0gICAgICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgICAgIEFOR0xFVGVz
dDo6VGVhckRvd24oKTsKLSAgICB9Ci0KLSAgICBHTHVpbnQgbVByb2dyYW07Ci0gICAgR0xpbnQg
bVVuaWZvcm1CdWZmZXJJbmRleDsKLSAgICBHTHVpbnQgbVVuaWZvcm1CdWZmZXI7Ci19OwotCi0v
LyBCYXNpYyBVQk8gZnVuY3Rpb25hbGl0eS4KLVRFU1RfUChVbmlmb3JtQnVmZmVyVGVzdCwgU2lt
cGxlKQotewotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgZmxvYXQgZmxv
YXREYXRhWzRdID0gezAuNWYsIDAuNzVmLCAwLjI1ZiwgMS4wZn07Ci0KLSAgICBnbEJpbmRCdWZm
ZXIoR0xfVU5JRk9STV9CVUZGRVIsIG1Vbmlmb3JtQnVmZmVyKTsKLSAgICBnbEJ1ZmZlckRhdGEo
R0xfVU5JRk9STV9CVUZGRVIsIHNpemVvZihmbG9hdCkgKiA0LCBmbG9hdERhdGEsIEdMX1NUQVRJ
Q19EUkFXKTsKLQotICAgIGdsQmluZEJ1ZmZlckJhc2UoR0xfVU5JRk9STV9CVUZGRVIsIDAsIG1V
bmlmb3JtQnVmZmVyKTsKLQotICAgIGdsVW5pZm9ybUJsb2NrQmluZGluZyhtUHJvZ3JhbSwgbVVu
aWZvcm1CdWZmZXJJbmRleCwgMCk7Ci0gICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIs
IDAuNWYpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX1BJWEVMX05F
QVIoMCwgMCwgMTI4LCAxOTEsIDY0LCAyNTUsIDEpOwotfQotCi0vLyBUZXN0IHRoYXQgdXNpbmcg
YSBVQk8gd2l0aCBhIG5vbi16ZXJvIG9mZnNldCBhbmQgc2l6ZSBhY3R1YWxseSB3b3Jrcy4KLS8v
IFRoZSBmaXJzdCBzdGVwIG9mIHRoaXMgdGVzdCByZW5kZXJzIGEgY29sb3IgZnJvbSBhIFVCTyB3
aXRoIGEgemVybyBvZmZzZXQuCi0vLyBUaGUgc2Vjb25kIHN0ZXAgcmVuZGVycyBhIGNvbG9yIGZy
b20gYSBVQk8gd2l0aCBhIG5vbi16ZXJvIG9mZnNldC4KLVRFU1RfUChVbmlmb3JtQnVmZmVyVGVz
dCwgVW5pZm9ybUJ1ZmZlclJhbmdlKQotewotICAgIC8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBv
dXQgd2h5IHRoaXMgZmFpbHMgb24gSW50ZWwuCi0gICAgaWYgKElzSW50ZWwoKSAmJiBJc0QzRDEx
KCkpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBE
M0QxMS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGludCBw
eCA9IGdldFdpbmRvd1dpZHRoKCkgLyAyOwotICAgIGludCBweSA9IGdldFdpbmRvd0hlaWdodCgp
IC8gMjsKLQotICAgIC8vIFF1ZXJ5IHRoZSB1bmlmb3JtIGJ1ZmZlciBhbGlnbm1lbnQgcmVxdWly
ZW1lbnQKLSAgICBHTGludCBhbGlnbm1lbnQ7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9VTklGT1JN
X0JVRkZFUl9PRkZTRVRfQUxJR05NRU5ULCAmYWxpZ25tZW50KTsKLQotICAgIEdMaW50NjQgbWF4
VW5pZm9ybUJsb2NrU2l6ZTsKLSAgICBnbEdldEludGVnZXI2NHYoR0xfTUFYX1VOSUZPUk1fQkxP
Q0tfU0laRSwgJm1heFVuaWZvcm1CbG9ja1NpemUpOwotICAgIGlmIChhbGlnbm1lbnQgPj0gbWF4
VW5pZm9ybUJsb2NrU2l6ZSkKLSAgICB7Ci0gICAgICAgIC8vIEFOR0xFIGRvZXNuJ3QgaW1wbGVt
ZW50IFVCTyBvZmZzZXRzIGZvciB0aGlzIHBsYXRmb3JtLgotICAgICAgICAvLyBJZ25vcmUgdGhl
IHRlc3QgY2FzZS4KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotCi0gICAgLy8gTGV0J3MgY3JlYXRlIGEgYnVmZmVyIHdoaWNoIGNvbnRhaW5zIHR3
byB2ZWM0LgotICAgIEdMdWludCB2ZWM0U2l6ZSA9IDQgKiBzaXplb2YoZmxvYXQpOwotICAgIEdM
dWludCBzdHJpZGUgPSAwOwotICAgIGRvCi0gICAgewotICAgICAgICBzdHJpZGUgKz0gYWxpZ25t
ZW50OwotICAgIH0KLSAgICB3aGlsZSAoc3RyaWRlIDwgdmVjNFNpemUpOwotCi0gICAgc3RkOjp2
ZWN0b3I8Y2hhcj4gdigyICogc3RyaWRlKTsKLSAgICBmbG9hdCAqZmlyc3QgPSByZWludGVycHJl
dF9jYXN0PGZsb2F0Kj4odi5kYXRhKCkpOwotICAgIGZsb2F0ICpzZWNvbmQgPSByZWludGVycHJl
dF9jYXN0PGZsb2F0Kj4odi5kYXRhKCkgKyBzdHJpZGUpOwotCi0gICAgZmlyc3RbMF0gPSAxMC5m
IC8gMjU1LmY7Ci0gICAgZmlyc3RbMV0gPSAyMC5mIC8gMjU1LmY7Ci0gICAgZmlyc3RbMl0gPSAz
MC5mIC8gMjU1LmY7Ci0gICAgZmlyc3RbM10gPSA0MC5mIC8gMjU1LmY7Ci0KLSAgICBzZWNvbmRb
MF0gPSAxMTAuZiAvIDI1NS5mOwotICAgIHNlY29uZFsxXSA9IDEyMC5mIC8gMjU1LmY7Ci0gICAg
c2Vjb25kWzJdID0gMTMwLmYgLyAyNTUuZjsKLSAgICBzZWNvbmRbM10gPSAxNDAuZiAvIDI1NS5m
OwotCi0gICAgZ2xCaW5kQnVmZmVyKEdMX1VOSUZPUk1fQlVGRkVSLCBtVW5pZm9ybUJ1ZmZlcik7
Ci0gICAgLy8gV2UgdXNlIG9uIHB1cnBvc2UgYSBzaXplIHdoaWNoIGlzIG5vdCBhIG11bHRpcGxl
IG9mIHRoZSBhbGlnbm1lbnQuCi0gICAgZ2xCdWZmZXJEYXRhKEdMX1VOSUZPUk1fQlVGRkVSLCBz
dHJpZGUgKyB2ZWM0U2l6ZSwgdi5kYXRhKCksIEdMX1NUQVRJQ19EUkFXKTsKLQotICAgIGdsVW5p
Zm9ybUJsb2NrQmluZGluZyhtUHJvZ3JhbSwgbVVuaWZvcm1CdWZmZXJJbmRleCwgMCk7Ci0KLSAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIEJpbmQgdGhlIGZpcnN0IHBhcnQgb2Yg
dGhlIHVuaWZvcm0gYnVmZmVyIGFuZCBkcmF3Ci0gICAgLy8gVXNlIGEgc2l6ZSB3aGljaCBpcyBz
bWFsbGVyIHRoYW4gdGhlIGFsaWdubWVudCB0byBjaGVjawotICAgIC8vIHRvIGNoZWNrIHRoYXQg
dGhpcyBjYXNlIGlzIGhhbmRsZSBjb3JyZWN0bHkgaW4gdGhlIGNvbnZlcnNpb24gdG8gMTEuMS4K
LSAgICBnbEJpbmRCdWZmZXJSYW5nZShHTF9VTklGT1JNX0JVRkZFUiwgMCwgbVVuaWZvcm1CdWZm
ZXIsIDAsIHZlYzRTaXplKTsKLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41
Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKHB4LCBw
eSwgMTAsIDIwLCAzMCwgNDApOwotCi0gICAgLy8gQmluZCB0aGUgc2Vjb25kIHBhcnQgb2YgdGhl
IHVuaWZvcm0gYnVmZmVyIGFuZCBkcmF3Ci0gICAgLy8gRnVydGhlcm1vcmUgdGhlIEQzRDExLjEg
YmFja2VuZCB3aWxsIGludGVybmFsbHkgcm91bmQgdGhlIHZlYzRTaXplICgxNiBieXRlcykgdG8g
YSBzdHJpZGUgKDI1NiBieXRlcykKLSAgICAvLyBoZW5jZSBpdCB3aWxsIHRyeSB0byBtYXAgdGhl
IHJhbmdlIFtzdHJpZGUsIDIgKiBzdHJpZGVdIHdoaWNoIGlzCi0gICAgLy8gb3V0LW9mLWJvdW5k
IG9mIHRoZSBidWZmZXIgYnVmZmVyU2l6ZSA9IHN0cmlkZSArIHZlYzRTaXplIDwgMiAqIHN0cmlk
ZS4KLSAgICAvLyBFbnN1cmUgdGhhdCB0aGlzIGJlaGF2aW91ciB3b3Jrcy4KLSAgICBnbEJpbmRC
dWZmZXJSYW5nZShHTF9VTklGT1JNX0JVRkZFUiwgMCwgbVVuaWZvcm1CdWZmZXIsIHN0cmlkZSwg
dmVjNFNpemUpOwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEocHgsIHB5LCAxMTAs
IDEyMCwgMTMwLCAxNDApOwotfQotCi0vLyBUZXN0IHVuaWZvcm0gYmxvY2sgYmluZGluZ3MuCi1U
RVNUX1AoVW5pZm9ybUJ1ZmZlclRlc3QsIFVuaWZvcm1CdWZmZXJCaW5kaW5ncykKLXsKLSAgICBp
bnQgcHggPSBnZXRXaW5kb3dXaWR0aCgpIC8gMjsKLSAgICBpbnQgcHkgPSBnZXRXaW5kb3dIZWln
aHQoKSAvIDI7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIExldCdzIGNy
ZWF0ZSBhIGJ1ZmZlciB3aGljaCBjb250YWlucyBvbmUgdmVjNC4KLSAgICBHTHVpbnQgdmVjNFNp
emUgPSA0ICogc2l6ZW9mKGZsb2F0KTsKLSAgICBzdGQ6OnZlY3RvcjxjaGFyPiB2KHZlYzRTaXpl
KTsKLSAgICBmbG9hdCAqZmlyc3QgPSByZWludGVycHJldF9jYXN0PGZsb2F0Kj4odi5kYXRhKCkp
OwotCi0gICAgZmlyc3RbMF0gPSAxMC5mIC8gMjU1LmY7Ci0gICAgZmlyc3RbMV0gPSAyMC5mIC8g
MjU1LmY7Ci0gICAgZmlyc3RbMl0gPSAzMC5mIC8gMjU1LmY7Ci0gICAgZmlyc3RbM10gPSA0MC5m
IC8gMjU1LmY7Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfVU5JRk9STV9CVUZGRVIsIG1Vbmlmb3Jt
QnVmZmVyKTsKLSAgICBnbEJ1ZmZlckRhdGEoR0xfVU5JRk9STV9CVUZGRVIsIHZlYzRTaXplLCB2
LmRhdGEoKSwgR0xfU1RBVElDX0RSQVcpOwotCi0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0K
LSAgICAvLyBUcnkgdG8gYmluZCB0aGUgYnVmZmVyIHRvIGJpbmRpbmcgcG9pbnQgMgotICAgIGds
VW5pZm9ybUJsb2NrQmluZGluZyhtUHJvZ3JhbSwgbVVuaWZvcm1CdWZmZXJJbmRleCwgMik7Ci0g
ICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9VTklGT1JNX0JVRkZFUiwgMiwgbVVuaWZvcm1CdWZmZXIp
OwotICAgIGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1Rf
R0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfUElYRUxfRVEocHgsIHB5LCAxMCwgMjAsIDMwLCA0
MCk7Ci0KLSAgICAvLyBDbGVhciB0aGUgZnJhbWVidWZmZXIKLSAgICBnbENsZWFyQ29sb3IoMC4w
LCAwLjAsIDAuMCwgMC4wKTsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotICAg
IEVYUEVDVF9QSVhFTF9FUShweCwgcHksIDAsIDAsIDAsIDApOwotCi0gICAgLy8gVHJ5IHRvIGJp
bmQgdGhlIGJ1ZmZlciB0byBhbm90aGVyIGJpbmRpbmcgcG9pbnQKLSAgICBnbFVuaWZvcm1CbG9j
a0JpbmRpbmcobVByb2dyYW0sIG1Vbmlmb3JtQnVmZmVySW5kZXgsIDUpOwotICAgIGdsQmluZEJ1
ZmZlckJhc2UoR0xfVU5JRk9STV9CVUZGRVIsIDUsIG1Vbmlmb3JtQnVmZmVyKTsKLSAgICBkcmF3
UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9S
KCk7Ci0gICAgRVhQRUNUX1BJWEVMX0VRKHB4LCBweSwgMTAsIDIwLCAzMCwgNDApOwotfQotCi0v
LyBUZXN0IHRoYXQgQU5HTEUgaGFuZGxlcyB1c2VkIGJ1dCB1bmJvdW5kIFVCTy4KLS8vIFRPRE86
IEEgdGVzdCBjYXNlIHNob3VsZG4ndCBkZXBlbmQgb24gdGhlIGVycm9yIGNvZGUgb2YgYW4gdW5k
ZWZpbmVkIGJlaGF2aW91ci4gTW92ZSB0aGlzIHRvIHVuaXQgdGVzdHMgb2YgdGhlIHZhbGlkYXRp
b24gbGF5ZXIuCi1URVNUX1AoVW5pZm9ybUJ1ZmZlclRlc3QsIFVuYm91bmRVbmlmb3JtQnVmZmVy
KQotewotICAgIGdsVW5pZm9ybUJsb2NrQmluZGluZyhtUHJvZ3JhbSwgbVVuaWZvcm1CdWZmZXJJ
bmRleCwgMCk7Ci0gICAgZ2xCaW5kQnVmZmVyQmFzZShHTF9VTklGT1JNX0JVRkZFUiwgMCwgMCk7
Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBv
c2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX0dMX0VSUk9SKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKLX0KLQotLy8gVXBkYXRlIGEgVUJPIG1hbnkgdGltZSBhbmQgdmVyaWZ5IHRoYXQgQU5HTEUg
dXNlcyB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIGRhdGEuCi0vLyBodHRwczovL2NvZGUuZ29v
Z2xlLmNvbS9wL2FuZ2xlcHJvamVjdC9pc3N1ZXMvZGV0YWlsP2lkPTk2NQotVEVTVF9QKFVuaWZv
cm1CdWZmZXJUZXN0LCBVbmlmb3JtQnVmZmVyTWFueVVwZGF0ZXMpCi17Ci0gICAgLy8gVE9ETyhq
bWFkaWxsKTogRmlndXJlIG91dCB3aHkgdGhpcyBmYWlscyBvbiBJbnRlbCBPcGVuR0wuCi0gICAg
aWYgKElzSW50ZWwoKSAmJiBJc09wZW5HTCgpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8
ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaW50IHB4ID0gZ2V0V2luZG93V2lkdGgoKSAvIDI7Ci0gICAg
aW50IHB5ID0gZ2V0V2luZG93SGVpZ2h0KCkgLyAyOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICBmbG9hdCBkYXRhWzRdOwotCi0gICAgZ2xCaW5kQnVmZmVyKEdMX1VOSUZPUk1f
QlVGRkVSLCBtVW5pZm9ybUJ1ZmZlcik7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX1VOSUZPUk1fQlVG
RkVSLCBzaXplb2YoZGF0YSksIE5VTEwsIEdMX0RZTkFNSUNfRFJBVyk7Ci0gICAgZ2xVbmlmb3Jt
QmxvY2tCaW5kaW5nKG1Qcm9ncmFtLCBtVW5pZm9ybUJ1ZmZlckluZGV4LCAwKTsKLSAgICBnbEJp
bmRCdWZmZXJCYXNlKEdMX1VOSUZPUk1fQlVGRkVSLCAwLCBtVW5pZm9ybUJ1ZmZlcik7Ci0KLSAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAgIC8vIFJlcGV0ZWFkbHkgdXBkYXRlIHRoZSBk
YXRhIGFuZCBkcmF3Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxMDsgKytpKQotICAgIHsK
LSAgICAgICAgZGF0YVswXSA9IChpICsgMTAuZikgLyAyNTUuZjsKLSAgICAgICAgZGF0YVsxXSA9
IChpICsgMjAuZikgLyAyNTUuZjsKLSAgICAgICAgZGF0YVsyXSA9IChpICsgMzAuZikgLyAyNTUu
ZjsKLSAgICAgICAgZGF0YVszXSA9IChpICsgNDAuZikgLyAyNTUuZjsKLQotICAgICAgICBnbEJ1
ZmZlclN1YkRhdGEoR0xfVU5JRk9STV9CVUZGRVIsIDAsIHNpemVvZihkYXRhKSwgZGF0YSk7Ci0K
LSAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwotICAgICAgICBF
WFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKHB4LCBweSwgaSAr
IDEwLCBpICsgMjAsIGkgKyAzMCwgaSArIDQwKTsKLSAgICB9Ci19Ci0KLS8vIFVzZSBhIGxhcmdl
IG51bWJlciBvZiBidWZmZXIgcmFuZ2VzIChjb21wYXJlZCB0byB0aGUgYWN0dWFsIHNpemUgb2Yg
dGhlIFVCTykKLVRFU1RfUChVbmlmb3JtQnVmZmVyVGVzdCwgTWFueVVuaWZvcm1CdWZmZXJSYW5n
ZSkKLXsKLSAgICAvLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGZhaWxzIG9u
IEludGVsLgotICAgIGlmIChJc0ludGVsKCkgJiYgSXNEM0QxMSgpKQotICAgIHsKLSAgICAgICAg
c3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gSW50ZWwgRDNEMTEuIiA8PCBzdGQ6OmVuZGw7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaW50IHB4ID0gZ2V0V2luZG93V2lkdGgoKSAv
IDI7Ci0gICAgaW50IHB5ID0gZ2V0V2luZG93SGVpZ2h0KCkgLyAyOwotCi0gICAgLy8gUXVlcnkg
dGhlIHVuaWZvcm0gYnVmZmVyIGFsaWdubWVudCByZXF1aXJlbWVudAotICAgIEdMaW50IGFsaWdu
bWVudDsKLSAgICBnbEdldEludGVnZXJ2KEdMX1VOSUZPUk1fQlVGRkVSX09GRlNFVF9BTElHTk1F
TlQsICZhbGlnbm1lbnQpOwotCi0gICAgR0xpbnQ2NCBtYXhVbmlmb3JtQmxvY2tTaXplOwotICAg
IGdsR2V0SW50ZWdlcjY0dihHTF9NQVhfVU5JRk9STV9CTE9DS19TSVpFLCAmbWF4VW5pZm9ybUJs
b2NrU2l6ZSk7Ci0gICAgaWYgKGFsaWdubWVudCA+PSBtYXhVbmlmb3JtQmxvY2tTaXplKQotICAg
IHsKLSAgICAgICAgLy8gQU5HTEUgZG9lc24ndCBpbXBsZW1lbnQgVUJPIG9mZnNldHMgZm9yIHRo
aXMgcGxhdGZvcm0uCi0gICAgICAgIC8vIElnbm9yZSB0aGUgdGVzdCBjYXNlLgotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBMZXQn
cyBjcmVhdGUgYSBidWZmZXIgd2hpY2ggY29udGFpbnMgZWlnaHQgdmVjNC4KLSAgICBHTHVpbnQg
dmVjNFNpemUgPSA0ICogc2l6ZW9mKGZsb2F0KTsKLSAgICBHTHVpbnQgc3RyaWRlID0gMDsKLSAg
ICBkbwotICAgIHsKLSAgICAgICAgc3RyaWRlICs9IGFsaWdubWVudDsKLSAgICB9Ci0gICAgd2hp
bGUgKHN0cmlkZSA8IHZlYzRTaXplKTsKLQotICAgIHN0ZDo6dmVjdG9yPGNoYXI+IHYoOCAqIHN0
cmlkZSk7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDg7ICsraSkKLSAgICB7Ci0gICAg
ICAgIGZsb2F0ICpkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxmbG9hdCo+KHYuZGF0YSgpICsgaSAq
IHN0cmlkZSk7Ci0KLSAgICAgICAgZGF0YVswXSA9IChpICsgMTAuZikgLyAyNTUuZjsKLSAgICAg
ICAgZGF0YVsxXSA9IChpICsgMjAuZikgLyAyNTUuZjsKLSAgICAgICAgZGF0YVsyXSA9IChpICsg
MzAuZikgLyAyNTUuZjsKLSAgICAgICAgZGF0YVszXSA9IChpICsgNDAuZikgLyAyNTUuZjsKLSAg
ICB9Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfVU5JRk9STV9CVUZGRVIsIG1Vbmlmb3JtQnVmZmVy
KTsKLSAgICBnbEJ1ZmZlckRhdGEoR0xfVU5JRk9STV9CVUZGRVIsIHYuc2l6ZSgpLCB2LmRhdGEo
KSwgR0xfU1RBVElDX0RSQVcpOwotCi0gICAgZ2xVbmlmb3JtQmxvY2tCaW5kaW5nKG1Qcm9ncmFt
LCBtVW5pZm9ybUJ1ZmZlckluZGV4LCAwKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwot
Ci0gICAgLy8gQmluZCBlYWNoIHBvc3NpYmxlIG9mZnNldAotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgODsgKytpKQotICAgIHsKLSAgICAgICAgZ2xCaW5kQnVmZmVyUmFuZ2UoR0xfVU5JRk9S
TV9CVUZGRVIsIDAsIG1Vbmlmb3JtQnVmZmVyLCBpICogc3RyaWRlLCBzdHJpZGUpOwotICAgICAg
ICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotICAgICAgICBFWFBFQ1RfUElYRUxfRVEocHgsIHB5LCAxMCArIGksIDIw
ICsgaSwgMzAgKyBpLCA0MCArIGkpOwotICAgIH0KLQotICAgIC8vIFRyeSB0byBiaW5kIGxhcmdl
ciByYW5nZQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNzsgKytpKQotICAgIHsKLSAgICAg
ICAgZ2xCaW5kQnVmZmVyUmFuZ2UoR0xfVU5JRk9STV9CVUZGRVIsIDAsIG1Vbmlmb3JtQnVmZmVy
LCBpICogc3RyaWRlLCAyICogc3RyaWRlKTsKLSAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJw
b3NpdGlvbiIsIDAuNWYpOwotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICAgICAg
RVhQRUNUX1BJWEVMX0VRKHB4LCBweSwgMTAgKyBpLCAyMCArIGksIDMwICsgaSwgNDAgKyBpKTsK
LSAgICB9Ci0KLSAgICAvLyBUcnkgdG8gYmluZCBldmVuIGxhcmdlciByYW5nZQotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgNTsgKytpKQotICAgIHsKLSAgICAgICAgZ2xCaW5kQnVmZmVyUmFu
Z2UoR0xfVU5JRk9STV9CVUZGRVIsIDAsIG1Vbmlmb3JtQnVmZmVyLCBpICogc3RyaWRlLCA0ICog
c3RyaWRlKTsKLSAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwot
ICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKHB4
LCBweSwgMTAgKyBpLCAyMCArIGksIDMwICsgaSwgNDAgKyBpKTsKLSAgICB9Ci19Ci0KLS8vIFRl
c3RzIHRoYXQgYWN0aXZlIHVuaWZvcm1zIGhhdmUgdGhlIHJpZ2h0IG5hbWVzLgotVEVTVF9QKFVu
aWZvcm1CdWZmZXJUZXN0LCBBY3RpdmVVbmlmb3JtTmFtZXMpCi17Ci0gICAgY29uc3Qgc3RkOjpz
dHJpbmcgJnZlcnRleFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIK
LSAgICAgICAgImluIHZlYzIgcG9zaXRpb247XG4iCi0gICAgICAgICJvdXQgZmxvYXQgdjtcbiIK
LSAgICAgICAgInVuaWZvcm0gYmxvY2tOYW1lIHtcbiIKLSAgICAgICAgIiAgZmxvYXQgZjtcbiIK
LSAgICAgICAgIn0gaW5zdGFuY2VOYW1lO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgot
ICAgICAgICAiICB2ID0gaW5zdGFuY2VOYW1lLmY7XG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9u
ID0gdmVjNChwb3NpdGlvbiwgMCwgMSk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRlclNvdXJjZSA9Ci0gICAgICAgICIjdmVyc2lvbiAzMDAg
ZXNcbiIKLSAgICAgICAgInByZWNpc2lvbiBoaWdocCBmbG9hdDtcbiIKLSAgICAgICAgImluIGZs
b2F0IHY7XG4iCi0gICAgICAgICJvdXQgdmVjNCBjb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFp
bigpIHtcbiIKLSAgICAgICAgIiAgY29sb3IgPSB2ZWM0KHYsIDAsIDAsIDEpO1xuIgotICAgICAg
ICAifSI7Ci0KLSAgICBHTHVpbnQgcHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRl
clNvdXJjZSwgZnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgIEFTU0VSVF9ORSgwdSwgcHJvZ3Jh
bSk7Ci0KLSAgICBHTGludCBhY3RpdmVVbmlmb3JtczsKLSAgICBnbEdldFByb2dyYW1pdihwcm9n
cmFtLCBHTF9BQ1RJVkVfVU5JRk9STVMsICZhY3RpdmVVbmlmb3Jtcyk7Ci0KLSAgICBBU1NFUlRf
RVEoMSwgYWN0aXZlVW5pZm9ybXMpOwotCi0gICAgR0xpbnQgbWF4TGVuZ3RoLCBzaXplOwotICAg
IEdMZW51bSB0eXBlOwotICAgIEdMc2l6ZWkgbGVuZ3RoOwotICAgIGdsR2V0UHJvZ3JhbWl2KHBy
b2dyYW0sIEdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgsICZtYXhMZW5ndGgpOwotICAgIHN0
ZDo6dmVjdG9yPEdMY2hhcj4gc3RyQnVmZmVyKG1heExlbmd0aCArIDEsIDApOwotICAgIGdsR2V0
QWN0aXZlVW5pZm9ybShwcm9ncmFtLCAwLCBtYXhMZW5ndGgsICZsZW5ndGgsICZzaXplLCAmdHlw
ZSwgJnN0ckJ1ZmZlclswXSk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBF
Q1RfRVEoMSwgc2l6ZSk7Ci0gICAgRVhQRUNUX0dMRU5VTV9FUShHTF9GTE9BVCwgdHlwZSk7Ci0g
ICAgRVhQRUNUX0VRKCJibG9ja05hbWUuZiIsIHN0ZDo6c3RyaW5nKCZzdHJCdWZmZXJbMF0pKTsK
LX0KLQotLy8gVGVzdHMgYWN0aXZlIHVuaWZvcm1zIGFuZCBibG9ja3Mgd2hlbiB0aGUgbGF5b3V0
IGlzIHN0ZDE0MCwgc2hhcmVkIGFuZCBwYWNrZWQuCi1URVNUX1AoVW5pZm9ybUJ1ZmZlclRlc3Qs
IEFjdGl2ZVVuaWZvcm1OdW1iZXJBbmROYW1lKQotewotICAgIC8vIFRPRE8oSmlhamlhKTogRmln
dXJlIG91dCB3aHkgdGhpcyBmYWlscyBvbiBJbnRlbCBvbiBNYWMuCi0gICAgLy8gVGhpcyBjYXNl
IGNhbiBwYXNzIG9uIEludGVsIE1hYy0xMC4xMS8xMC4xMi4gQnV0IGl0IGZhaWxzIG9uIEludGVs
IE1hYy0xMC4xMC4KLSAgICBpZiAoSXNJbnRlbCgpICYmIElzT1NYKCkpCi0gICAgewotICAgICAg
ICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBJbnRlbCBvbiBNYWMuIiA8PCBzdGQ6OmVu
ZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBUaGlzIGNhc2UgZmFpbHMgb24g
YWxsIEFNRCBwbGF0Zm9ybXMgKE1hYywgTGludXgsIFdpbikuCi0gICAgaWYgKElzQU1EKCkpCi0g
ICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBBTUQuIiA8PCBzdGQ6
OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAm
dmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAg
ICAiaW4gdmVjMiBwb3NpdGlvbjtcbiIKLSAgICAgICAgIm91dCBmbG9hdCB2O1xuIgotICAgICAg
ICAic3RydWN0IFMge1xuIgotICAgICAgICAiICBoaWdocCBpdmVjMyBhO1xuIgotICAgICAgICAi
ICBtZWRpdW1wIGl2ZWMyIGJbNF07XG4iCi0gICAgICAgICJ9O1xuIgotICAgICAgICAic3RydWN0
IFQge1xuIgotICAgICAgICAiICBTIGNbMl07XG4iCi0gICAgICAgICJ9O1xuIgotICAgICAgICAi
bGF5b3V0KHN0ZDE0MCkgdW5pZm9ybSBibG9ja05hbWUwIHtcbiIKLSAgICAgICAgIiAgUyBzMDtc
biIKLSAgICAgICAgIiAgbG93cCB2ZWMyIHYwO1xuIgotICAgICAgICAiICBUIHQwWzJdO1xuIgot
ICAgICAgICAiICBoaWdocCB1aW50IHUwO1xuIgotICAgICAgICAifTtcbiIKLSAgICAgICAgImxh
eW91dChzdGQxNDApIHVuaWZvcm0gYmxvY2tOYW1lMSB7XG4iCi0gICAgICAgICIgIGZsb2F0IGYx
O1xuIgotICAgICAgICAiICBib29sIGIxO1xuIgotICAgICAgICAifSBpbnN0YW5jZU5hbWUxO1xu
IgotICAgICAgICAibGF5b3V0KHNoYXJlZCkgdW5pZm9ybSBibG9ja05hbWUyIHtcbiIKLSAgICAg
ICAgIiAgZmxvYXQgZjI7XG4iCi0gICAgICAgICJ9O1xuIgotICAgICAgICAibGF5b3V0KHBhY2tl
ZCkgdW5pZm9ybSBibG9ja05hbWUzIHtcbiIKLSAgICAgICAgIiAgZmxvYXQgZjM7XG4iCi0gICAg
ICAgICJ9O1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICB2ID0gaW5z
dGFuY2VOYW1lMS5mMTtcbiIKLSAgICAgICAgIiAgZ2xfUG9zaXRpb24gPSB2ZWM0KHBvc2l0aW9u
LCAwLCAxKTtcbiIKLSAgICAgICAgIn0iOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdt
ZW50U2hhZGVyU291cmNlID0KLSAgICAgICAgIiN2ZXJzaW9uIDMwMCBlc1xuIgotICAgICAgICAi
cHJlY2lzaW9uIGhpZ2hwIGZsb2F0O1xuIgotICAgICAgICAiaW4gZmxvYXQgdjtcbiIKLSAgICAg
ICAgIm91dCB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAg
ICAiICBjb2xvciA9IHZlYzQodiwgMCwgMCwgMSk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIEFO
R0xFX0dMX1BST0dSQU0ocHJvZ3JhbSwgdmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRl
clNvdXJjZSk7Ci0KLSAgICBHTGludCBhY3RpdmVVbmlmb3JtczsKLSAgICBnbEdldFByb2dyYW1p
dihwcm9ncmFtLmdldCgpLCBHTF9BQ1RJVkVfVU5JRk9STVMsICZhY3RpdmVVbmlmb3Jtcyk7Ci0K
LSAgICBBU1NFUlRfRVEoMTUsIGFjdGl2ZVVuaWZvcm1zKTsKLQotICAgIEdMaW50IGFjdGl2ZVVu
aWZvcm1CbG9ja3M7Ci0gICAgZ2xHZXRQcm9ncmFtaXYocHJvZ3JhbS5nZXQoKSwgR0xfQUNUSVZF
X1VOSUZPUk1fQkxPQ0tTLCAmYWN0aXZlVW5pZm9ybUJsb2Nrcyk7Ci0KLSAgICBBU1NFUlRfRVEo
MywgYWN0aXZlVW5pZm9ybUJsb2Nrcyk7Ci0KLSAgICBHTGludCBtYXhMZW5ndGgsIHNpemU7Ci0g
ICAgR0xlbnVtIHR5cGU7Ci0gICAgR0xzaXplaSBsZW5ndGg7Ci0gICAgZ2xHZXRQcm9ncmFtaXYo
cHJvZ3JhbS5nZXQoKSwgR0xfQUNUSVZFX1VOSUZPUk1fTUFYX0xFTkdUSCwgJm1heExlbmd0aCk7
Ci0gICAgc3RkOjp2ZWN0b3I8R0xjaGFyPiBzdHJCdWZmZXIobWF4TGVuZ3RoICsgMSwgMCk7Ci0K
LSAgICBnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbS5nZXQoKSwgMCwgbWF4TGVuZ3RoLCAmbGVu
Z3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZmZXJbMF0pOwotICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotICAgIEVYUEVDVF9FUSgxLCBzaXplKTsKLSAgICBFWFBFQ1RfRVEoInMwLmEiLCBzdGQ6
OnN0cmluZygmc3RyQnVmZmVyWzBdKSk7Ci0KLSAgICBnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3Jh
bS5nZXQoKSwgMSwgbWF4TGVuZ3RoLCAmbGVuZ3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZmZXJb
MF0pOwotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAgIEVYUEVDVF9FUSg0LCBzaXplKTsK
LSAgICBFWFBFQ1RfRVEoInMwLmJbMF0iLCBzdGQ6OnN0cmluZygmc3RyQnVmZmVyWzBdKSk7Ci0K
LSAgICBnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbS5nZXQoKSwgMiwgbWF4TGVuZ3RoLCAmbGVu
Z3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZmZXJbMF0pOwotICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotICAgIEVYUEVDVF9FUSgxLCBzaXplKTsKLSAgICBFWFBFQ1RfRVEoInYwIiwgc3RkOjpz
dHJpbmcoJnN0ckJ1ZmZlclswXSkpOwotCi0gICAgZ2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0u
Z2V0KCksIDMsIG1heExlbmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0eXBlLCAmc3RyQnVmZmVyWzBd
KTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfRVEoMSwgc2l6ZSk7Ci0g
ICAgRVhQRUNUX0VRKCJ0MFswXS5jWzBdLmEiLCBzdGQ6OnN0cmluZygmc3RyQnVmZmVyWzBdKSk7
Ci0KLSAgICBnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbS5nZXQoKSwgNCwgbWF4TGVuZ3RoLCAm
bGVuZ3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZmZXJbMF0pOwotICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotICAgIEVYUEVDVF9FUSg0LCBzaXplKTsKLSAgICBFWFBFQ1RfRVEoInQwWzBdLmNb
MF0uYlswXSIsIHN0ZDo6c3RyaW5nKCZzdHJCdWZmZXJbMF0pKTsKLQotICAgIGdsR2V0QWN0aXZl
VW5pZm9ybShwcm9ncmFtLmdldCgpLCA1LCBtYXhMZW5ndGgsICZsZW5ndGgsICZzaXplLCAmdHlw
ZSwgJnN0ckJ1ZmZlclswXSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNU
X0VRKDEsIHNpemUpOwotICAgIEVYUEVDVF9FUSgidDBbMF0uY1sxXS5hIiwgc3RkOjpzdHJpbmco
JnN0ckJ1ZmZlclswXSkpOwotCi0gICAgZ2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0uZ2V0KCks
IDYsIG1heExlbmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0eXBlLCAmc3RyQnVmZmVyWzBdKTsKLSAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfRVEoNCwgc2l6ZSk7Ci0gICAgRVhQ
RUNUX0VRKCJ0MFswXS5jWzFdLmJbMF0iLCBzdGQ6OnN0cmluZygmc3RyQnVmZmVyWzBdKSk7Ci0K
LSAgICBnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbS5nZXQoKSwgNywgbWF4TGVuZ3RoLCAmbGVu
Z3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZmZXJbMF0pOwotICAgIEFTU0VSVF9HTF9OT19FUlJP
UigpOwotICAgIEVYUEVDVF9FUSgxLCBzaXplKTsKLSAgICBFWFBFQ1RfRVEoInQwWzFdLmNbMF0u
YSIsIHN0ZDo6c3RyaW5nKCZzdHJCdWZmZXJbMF0pKTsKLQotICAgIGdsR2V0QWN0aXZlVW5pZm9y
bShwcm9ncmFtLmdldCgpLCA4LCBtYXhMZW5ndGgsICZsZW5ndGgsICZzaXplLCAmdHlwZSwgJnN0
ckJ1ZmZlclswXSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VRKDQs
IHNpemUpOwotICAgIEVYUEVDVF9FUSgidDBbMV0uY1swXS5iWzBdIiwgc3RkOjpzdHJpbmcoJnN0
ckJ1ZmZlclswXSkpOwotCi0gICAgZ2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0uZ2V0KCksIDks
IG1heExlbmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0eXBlLCAmc3RyQnVmZmVyWzBdKTsKLSAgICBB
U1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfRVEoMSwgc2l6ZSk7Ci0gICAgRVhQRUNU
X0VRKCJ0MFsxXS5jWzFdLmEiLCBzdGQ6OnN0cmluZygmc3RyQnVmZmVyWzBdKSk7Ci0KLSAgICBn
bEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbS5nZXQoKSwgMTAsIG1heExlbmd0aCwgJmxlbmd0aCwg
JnNpemUsICZ0eXBlLCAmc3RyQnVmZmVyWzBdKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LSAgICBFWFBFQ1RfRVEoNCwgc2l6ZSk7Ci0gICAgRVhQRUNUX0VRKCJ0MFsxXS5jWzFdLmJbMF0i
LCBzdGQ6OnN0cmluZygmc3RyQnVmZmVyWzBdKSk7Ci0KLSAgICBnbEdldEFjdGl2ZVVuaWZvcm0o
cHJvZ3JhbS5nZXQoKSwgMTEsIG1heExlbmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0eXBlLCAmc3Ry
QnVmZmVyWzBdKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1RfRVEoMSwg
c2l6ZSk7Ci0gICAgRVhQRUNUX0VRKCJ1MCIsIHN0ZDo6c3RyaW5nKCZzdHJCdWZmZXJbMF0pKTsK
LQotICAgIGdsR2V0QWN0aXZlVW5pZm9ybShwcm9ncmFtLmdldCgpLCAxMiwgbWF4TGVuZ3RoLCAm
bGVuZ3RoLCAmc2l6ZSwgJnR5cGUsICZzdHJCdWZmZXJbMF0pOwotICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotICAgIEVYUEVDVF9FUSgxLCBzaXplKTsKLSAgICBFWFBFQ1RfRVEoImJsb2NrTmFt
ZTEuZjEiLCBzdGQ6OnN0cmluZygmc3RyQnVmZmVyWzBdKSk7Ci0KLSAgICBnbEdldEFjdGl2ZVVu
aWZvcm0ocHJvZ3JhbS5nZXQoKSwgMTMsIG1heExlbmd0aCwgJmxlbmd0aCwgJnNpemUsICZ0eXBl
LCAmc3RyQnVmZmVyWzBdKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICBFWFBFQ1Rf
RVEoMSwgc2l6ZSk7Ci0gICAgRVhQRUNUX0VRKCJibG9ja05hbWUxLmIxIiwgc3RkOjpzdHJpbmco
JnN0ckJ1ZmZlclswXSkpOwotCi0gICAgZ2xHZXRBY3RpdmVVbmlmb3JtKHByb2dyYW0uZ2V0KCks
IDE0LCBtYXhMZW5ndGgsICZsZW5ndGgsICZzaXplLCAmdHlwZSwgJnN0ckJ1ZmZlclswXSk7Ci0g
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VRKDEsIHNpemUpOwotICAgIEVY
UEVDVF9FUSgiZjIiLCBzdGQ6OnN0cmluZygmc3RyQnVmZmVyWzBdKSk7Ci19Ci0KLS8vIFRlc3Qg
dGhhdCB1c2luZyBhIHZlcnkgbGFyZ2UgYnVmZmVyIHRvIGJhY2sgYSBzbWFsbCB1bmlmb3JtIGJs
b2NrIHdvcmtzIE9LLgotVEVTVF9QKFVuaWZvcm1CdWZmZXJUZXN0LCBWZXJ5TGFyZ2UpCi17Ci0g
ICAgLy8gVE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCB3aHkgdGhpcyBmYWlscyBvbiBJbnRlbC4K
LSAgICAvLyBTZWUgaHR0cDovL2NyYnVnLmNvbS81OTMwMjQKLSAgICBpZiAoSXNJbnRlbCgpICYm
IElzRDNEMTEoKSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9u
IEludGVsIEQzRDExLiIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICBmbG9hdCBmbG9hdERhdGFbNF0g
PSB7MC41ZiwgMC43NWYsIDAuMjVmLCAxLjBmfTsKLQotICAgIEdMc2l6ZWkgYmlnU2l6ZSA9IDQw
OTYgKiA2NDsKLQotICAgIGdsQmluZEJ1ZmZlcihHTF9VTklGT1JNX0JVRkZFUiwgbVVuaWZvcm1C
dWZmZXIpOwotICAgIGdsQnVmZmVyRGF0YShHTF9VTklGT1JNX0JVRkZFUiwgYmlnU2l6ZSwgbnVs
bHB0ciwgR0xfU1RBVElDX0RSQVcpOwotICAgIGdsQnVmZmVyU3ViRGF0YShHTF9VTklGT1JNX0JV
RkZFUiwgMCwgc2l6ZW9mKGZsb2F0KSAqIDQsIGZsb2F0RGF0YSk7Ci0KLSAgICBnbEJpbmRCdWZm
ZXJCYXNlKEdMX1VOSUZPUk1fQlVGRkVSLCAwLCBtVW5pZm9ybUJ1ZmZlcik7Ci0KLSAgICBnbFVu
aWZvcm1CbG9ja0JpbmRpbmcobVByb2dyYW0sIG1Vbmlmb3JtQnVmZmVySW5kZXgsIDApOwotICAg
IGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotICAgIEVYUEVDVF9QSVhFTF9ORUFSKDAsIDAsIDEyOCwgMTkxLCA2NCwgMjU1
LCAxKTsKLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChl
LmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3Rz
IHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoVW5pZm9ybUJ1
ZmZlclRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLAotICAgICAgICAg
ICAgICAgICAgICAgICBFUzNfRDNEMTFfRkwxMV8xKCksCi0gICAgICAgICAgICAgICAgICAgICAg
IEVTM19EM0QxMV9GTDExXzFfUkVGRVJFTkNFKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVT
M19PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwotCi19
IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL1VuaWZvcm1UZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9nbF90ZXN0cy9Vbmlmb3JtVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGUyZDcxYWUzOGMxLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVW5pZm9ybVRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNjM0ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVz
dC5oIgotCi0jaW5jbHVkZSA8YXJyYXk+Ci0jaW5jbHVkZSA8Y21hdGg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17Ci0KLWNsYXNzIFVuaWZvcm1UZXN0IDogcHVibGlj
IEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgVW5pZm9ybVRlc3QoKSA6IG1Qcm9ncmFt
KDApLCBtVW5pZm9ybUZMb2NhdGlvbigtMSksIG1Vbmlmb3JtSUxvY2F0aW9uKC0xKSwgbVVuaWZv
cm1CTG9jYXRpb24oLTEpCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwotICAg
ICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsK
LSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0
cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgIH0KLQotICAgIHZvaWQg
U2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQU5HTEVUZXN0OjpTZXRVcCgpOwotCi0g
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhTaGFkZXIgPSAidm9pZCBtYWluKCkgeyBn
bF9Qb3NpdGlvbiA9IHZlYzQoMSk7IH0iOwotICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJh
Z1NoYWRlciA9Ci0gICAgICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAg
ICAgICAgICAidW5pZm9ybSBmbG9hdCB1bmlGO1xuIgotICAgICAgICAgICAgInVuaWZvcm0gaW50
IHVuaUk7XG4iCi0gICAgICAgICAgICAidW5pZm9ybSBib29sIHVuaUI7XG4iCi0gICAgICAgICAg
ICAidW5pZm9ybSBib29sIHVuaUJBcnJbNF07XG4iCi0gICAgICAgICAgICAidm9pZCBtYWluKCkg
e1xuIgotICAgICAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh1bmlGICsgZmxvYXQodW5p
SSkpO1xuIgotICAgICAgICAgICAgIiAgZ2xfRnJhZ0NvbG9yICs9IHZlYzQodW5pQiA/IDEuMCA6
IDAuMCk7XG4iCi0gICAgICAgICAgICAiICBnbF9GcmFnQ29sb3IgKz0gdmVjNCh1bmlCQXJyWzBd
ID8gMS4wIDogMC4wKTtcbiIKLSAgICAgICAgICAgICJ9IjsKLQotICAgICAgICBtUHJvZ3JhbSA9
IENvbXBpbGVQcm9ncmFtKHZlcnRleFNoYWRlciwgZnJhZ1NoYWRlcik7Ci0gICAgICAgIEFTU0VS
VF9ORShtUHJvZ3JhbSwgMHUpOwotCi0gICAgICAgIG1Vbmlmb3JtRkxvY2F0aW9uID0gZ2xHZXRV
bmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1bmlGIik7Ci0gICAgICAgIEFTU0VSVF9ORShtVW5p
Zm9ybUZMb2NhdGlvbiwgLTEpOwotCi0gICAgICAgIG1Vbmlmb3JtSUxvY2F0aW9uID0gZ2xHZXRV
bmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1bmlJIik7Ci0gICAgICAgIEFTU0VSVF9ORShtVW5p
Zm9ybUlMb2NhdGlvbiwgLTEpOwotCi0gICAgICAgIG1Vbmlmb3JtQkxvY2F0aW9uID0gZ2xHZXRV
bmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1bmlCIik7Ci0gICAgICAgIEFTU0VSVF9ORShtVW5p
Zm9ybUJMb2NhdGlvbiwgLTEpOwotCi0gICAgICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotICAg
IH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgZ2xEZWxl
dGVQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICAgICAgQU5HTEVUZXN0OjpUZWFyRG93bigpOwotICAg
IH0KLQotICAgIEdMdWludCBtUHJvZ3JhbTsKLSAgICBHTGludCBtVW5pZm9ybUZMb2NhdGlvbjsK
LSAgICBHTGludCBtVW5pZm9ybUlMb2NhdGlvbjsKLSAgICBHTGludCBtVW5pZm9ybUJMb2NhdGlv
bjsKLX07Ci0KLVRFU1RfUChVbmlmb3JtVGVzdCwgR2V0VW5pZm9ybU5vQ3VycmVudFByb2dyYW0p
Ci17Ci0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBnbFVuaWZvcm0xZihtVW5pZm9y
bUZMb2NhdGlvbiwgMS4wZik7Ci0gICAgZ2xVbmlmb3JtMWkobVVuaWZvcm1JTG9jYXRpb24sIDEp
OwotICAgIGdsVXNlUHJvZ3JhbSgwKTsKLQotICAgIEdMZmxvYXQgZjsKLSAgICBnbEdldG5Vbmlm
b3JtZnZFWFQobVByb2dyYW0sIG1Vbmlmb3JtRkxvY2F0aW9uLCA0LCAmZik7Ci0gICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VRKDEuMGYsIGYpOwotCi0gICAgZ2xHZXRVbmlm
b3JtZnYobVByb2dyYW0sIG1Vbmlmb3JtRkxvY2F0aW9uLCAmZik7Ci0gICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VRKDEuMGYsIGYpOwotCi0gICAgR0xpbnQgaTsKLSAgICBn
bEdldG5Vbmlmb3JtaXZFWFQobVByb2dyYW0sIG1Vbmlmb3JtSUxvY2F0aW9uLCA0LCAmaSk7Ci0g
ICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VRKDEsIGkpOwotCi0gICAgZ2xH
ZXRVbmlmb3JtaXYobVByb2dyYW0sIG1Vbmlmb3JtSUxvY2F0aW9uLCAmaSk7Ci0gICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQRUNUX0VRKDEsIGkpOwotfQotCi1URVNUX1AoVW5pZm9y
bVRlc3QsIFVuaWZvcm1BcnJheUxvY2F0aW9ucykKLXsKLSAgICAvLyBUT0RPKGdlb2ZmbGFuZyk6
IEZpZ3VyZSBvdXQgd2h5IHRoaXMgaXMgYnJva2VuIG9uIEludGVsIE9wZW5HTAotICAgIGlmIChJ
c0ludGVsKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFURk9STV9BTkdMRV9U
WVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lw
cGVkIG9uIEludGVsIE9wZW5HTC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZlcnRleFNoYWRlciA9IFNIQURFUl9TT1VSQ0UK
LSAgICAoCi0gICAgICAgIHByZWNpc2lvbiBtZWRpdW1wIGZsb2F0OwotICAgICAgICB1bmlmb3Jt
IGZsb2F0IHVQb3NpdGlvbls0XTsKLSAgICAgICAgdm9pZCBtYWluKHZvaWQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gdmVjNCh1UG9zaXRpb25bMF0sIHVQb3NpdGlvblsx
XSwgdVBvc2l0aW9uWzJdLCB1UG9zaXRpb25bM10pOwotICAgICAgICB9Ci0gICAgKTsKLQotICAg
IGNvbnN0IHN0ZDo6c3RyaW5nIGZyYWdTaGFkZXIgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAg
ICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLSAgICAgICAgdW5pZm9ybSBmbG9hdCB1Q29s
b3JbNF07Ci0gICAgICAgIHZvaWQgbWFpbih2b2lkKQotICAgICAgICB7Ci0gICAgICAgICAgICBn
bF9GcmFnQ29sb3IgPSB2ZWM0KHVDb2xvclswXSwgdUNvbG9yWzFdLCB1Q29sb3JbMl0sIHVDb2xv
clszXSk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxl
UHJvZ3JhbSh2ZXJ0ZXhTaGFkZXIsIGZyYWdTaGFkZXIpOwotICAgIEFTU0VSVF9ORShwcm9ncmFt
LCAwdSk7Ci0KLSAgICAvLyBBcnJheSBpbmRleCB6ZXJvIHNob3VsZCBiZSBlcXVpdmFsZW50IHRv
IHRoZSB1bi1pbmRleGVkIHVuaWZvcm0KLSAgICBFWFBFQ1RfTkUoLTEsIGdsR2V0VW5pZm9ybUxv
Y2F0aW9uKHByb2dyYW0sICJ1UG9zaXRpb24iKSk7Ci0gICAgRVhQRUNUX0VRKGdsR2V0VW5pZm9y
bUxvY2F0aW9uKHByb2dyYW0sICJ1UG9zaXRpb24iKSwgZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJv
Z3JhbSwgInVQb3NpdGlvblswXSIpKTsKLQotICAgIEVYUEVDVF9ORSgtMSwgZ2xHZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbSwgInVDb2xvciIpKTsKLSAgICBFWFBFQ1RfRVEoZ2xHZXRVbmlmb3Jt
TG9jYXRpb24ocHJvZ3JhbSwgInVDb2xvciIpLCBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFt
LCAidUNvbG9yWzBdIikpOwotCi0gICAgLy8gQWxsIGFycmF5IHVuaWZvcm0gbG9jYXRpb25zIHNo
b3VsZCBiZSB1bmlxdWUKLSAgICBHTGludCBwb3NpdGlvbkxvY2F0aW9uc1s0XSA9Ci0gICAgewot
ICAgICAgICBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidVBvc2l0aW9uWzBdIiksCi0g
ICAgICAgIGdsR2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1UG9zaXRpb25bMV0iKSwKLSAg
ICAgICAgZ2xHZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInVQb3NpdGlvblsyXSIpLAotICAg
ICAgICBnbEdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidVBvc2l0aW9uWzNdIiksCi0gICAg
fTsKLQotICAgIEdMaW50IGNvbG9yTG9jYXRpb25zWzRdID0KLSAgICB7Ci0gICAgICAgIGdsR2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ1Q29sb3JbMF0iKSwKLSAgICAgICAgZ2xHZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgInVDb2xvclsxXSIpLAotICAgICAgICBnbEdldFVuaWZvcm1M
b2NhdGlvbihwcm9ncmFtLCAidUNvbG9yWzJdIiksCi0gICAgICAgIGdsR2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICJ1Q29sb3JbM10iKSwKLSAgICB9OwotCi0gICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCA0OyBpKyspCi0gICAgewotICAgICAgICBFWFBFQ1RfTkUoLTEsIHBvc2l0aW9uTG9j
YXRpb25zW2ldKTsKLSAgICAgICAgRVhQRUNUX05FKC0xLCBjb2xvckxvY2F0aW9uc1tpXSk7Ci0K
LSAgICAgICAgZm9yIChzaXplX3QgaiA9IGkgKyAxOyBqIDwgNDsgaisrKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBFWFBFQ1RfTkUocG9zaXRpb25Mb2NhdGlvbnNbaV0sIHBvc2l0aW9uTG9jYXRp
b25zW2pdKTsKLSAgICAgICAgICAgIEVYUEVDVF9ORShjb2xvckxvY2F0aW9uc1tpXSwgY29sb3JM
b2NhdGlvbnNbal0pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZ2xEZWxldGVQcm9ncmFtKHBy
b2dyYW0pOwotfQotCi0vLyBUZXN0IHRoYXQgZmxvYXQgdG8gaW50ZWdlciBHZXRVbmlmb3JtIHJv
dW5kcyB2YWx1ZXMgY29ycmVjdGx5LgotVEVTVF9QKFVuaWZvcm1UZXN0LCBGbG9hdFVuaWZvcm1T
dGF0ZVF1ZXJ5KQotewotICAgIHN0ZDo6dmVjdG9yPGRvdWJsZT4gaW5WYWx1ZXM7Ci0gICAgc3Rk
Ojp2ZWN0b3I8R0xmbG9hdD4gZXhwZWN0ZWRGVmFsdWVzOwotICAgIHN0ZDo6dmVjdG9yPEdMaW50
PiBleHBlY3RlZElWYWx1ZXM7Ci0KLSAgICBkb3VibGUgaW50TWF4RCA9IHN0YXRpY19jYXN0PGRv
dWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxHTGludD46Om1heCgpKTsKLSAgICBkb3VibGUgaW50
TWluRCA9IHN0YXRpY19jYXN0PGRvdWJsZT4oc3RkOjpudW1lcmljX2xpbWl0czxHTGludD46Om1p
bigpKTsKLQotICAgIC8vIFRPRE8oam1hZGlsbCk6IEludmVzdGlnYXRlIHJvdW5kaW5nIG9mIC41
Ci0gICAgaW5WYWx1ZXMucHVzaF9iYWNrKC0xLjApOwotICAgIGluVmFsdWVzLnB1c2hfYmFjaygt
MC42KTsKLSAgICAvLyBpblZhbHVlcy5wdXNoX2JhY2soLTAuNSk7IC8vIHVuZGVmaW5lZCBiZWhh
dmlvdXI/Ci0gICAgaW5WYWx1ZXMucHVzaF9iYWNrKC0wLjQpOwotICAgIGluVmFsdWVzLnB1c2hf
YmFjaygwLjApOwotICAgIGluVmFsdWVzLnB1c2hfYmFjaygwLjQpOwotICAgIC8vIGluVmFsdWVz
LnB1c2hfYmFjaygwLjUpOyAvLyB1bmRlZmluZWQgYmVoYXZpb3VyPwotICAgIGluVmFsdWVzLnB1
c2hfYmFjaygwLjYpOwotICAgIGluVmFsdWVzLnB1c2hfYmFjaygxLjApOwotICAgIGluVmFsdWVz
LnB1c2hfYmFjayg5OTk5OTkuMik7Ci0gICAgaW5WYWx1ZXMucHVzaF9iYWNrKGludE1heEQgKiAy
LjApOwotICAgIGluVmFsdWVzLnB1c2hfYmFjayhpbnRNYXhEICsgMS4wKTsKLSAgICBpblZhbHVl
cy5wdXNoX2JhY2soaW50TWluRCAqIDIuMCk7Ci0gICAgaW5WYWx1ZXMucHVzaF9iYWNrKGludE1p
bkQgLSAxLjApOwotCi0gICAgZm9yIChkb3VibGUgdmFsdWUgOiBpblZhbHVlcykKLSAgICB7Ci0g
ICAgICAgIGV4cGVjdGVkRlZhbHVlcy5wdXNoX2JhY2soc3RhdGljX2Nhc3Q8R0xmbG9hdD4odmFs
dWUpKTsKLQotICAgICAgICBkb3VibGUgY2xhbXBlZFZhbHVlID0gc3RkOjptYXgoaW50TWluRCwg
c3RkOjptaW4oaW50TWF4RCwgdmFsdWUpKTsKLSAgICAgICAgZG91YmxlIHJvdW5kZWQgPSByb3Vu
ZChjbGFtcGVkVmFsdWUpOwotICAgICAgICBleHBlY3RlZElWYWx1ZXMucHVzaF9iYWNrKHN0YXRp
Y19jYXN0PEdMaW50Pihyb3VuZGVkKSk7Ci0gICAgfQotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9n
cmFtKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLQotICAgIGZvciAoc2l6ZV90IGluZGV4
ID0gMDsgaW5kZXggPCBpblZhbHVlcy5zaXplKCk7ICsraW5kZXgpCi0gICAgewotICAgICAgICBH
TGZsb2F0IGluVmFsdWUgICAgICAgPSBzdGF0aWNfY2FzdDxHTGZsb2F0PihpblZhbHVlc1tpbmRl
eF0pOwotICAgICAgICBHTGZsb2F0IGV4cGVjdGVkVmFsdWUgPSBleHBlY3RlZEZWYWx1ZXNbaW5k
ZXhdOwotCi0gICAgICAgIGdsVW5pZm9ybTFmKG1Vbmlmb3JtRkxvY2F0aW9uLCBpblZhbHVlKTsK
LSAgICAgICAgR0xmbG9hdCB0ZXN0VmFsdWU7Ci0gICAgICAgIGdsR2V0VW5pZm9ybWZ2KG1Qcm9n
cmFtLCBtVW5pZm9ybUZMb2NhdGlvbiwgJnRlc3RWYWx1ZSk7Ci0gICAgICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRWYWx1ZSwgdGVzdFZhbHVlKTsK
LSAgICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgaW5WYWx1ZXMuc2l6
ZSgpOyArK2luZGV4KQotICAgIHsKLSAgICAgICAgR0xmbG9hdCBpblZhbHVlICAgICA9IHN0YXRp
Y19jYXN0PEdMZmxvYXQ+KGluVmFsdWVzW2luZGV4XSk7Ci0gICAgICAgIEdMaW50IGV4cGVjdGVk
VmFsdWUgPSBleHBlY3RlZElWYWx1ZXNbaW5kZXhdOwotCi0gICAgICAgIGdsVW5pZm9ybTFmKG1V
bmlmb3JtRkxvY2F0aW9uLCBpblZhbHVlKTsKLSAgICAgICAgR0xpbnQgdGVzdFZhbHVlOwotICAg
ICAgICBnbEdldFVuaWZvcm1pdihtUHJvZ3JhbSwgbVVuaWZvcm1GTG9jYXRpb24sICZ0ZXN0VmFs
dWUpOwotICAgICAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLSAgICAgICAgRVhQRUNUX0VRKGV4
cGVjdGVkVmFsdWUsIHRlc3RWYWx1ZSk7Ci0gICAgfQotfQotCi0vLyBUZXN0IHRoYXQgaW50ZWdl
ciB0byBmbG9hdCBHZXRVbmlmb3JtIHJvdW5kcyB2YWx1ZXMgY29ycmVjdGx5LgotVEVTVF9QKFVu
aWZvcm1UZXN0LCBJbnRVbmlmb3JtU3RhdGVRdWVyeSkKLXsKLSAgICBzdGQ6OnZlY3RvcjxHTGlu
dD4gaW5WYWx1ZXM7Ci0gICAgc3RkOjp2ZWN0b3I8R0xpbnQ+IGV4cGVjdGVkSVZhbHVlczsKLSAg
ICBzdGQ6OnZlY3RvcjxHTGZsb2F0PiBleHBlY3RlZEZWYWx1ZXM7Ci0KLSAgICBHTGludCBpbnRN
YXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMaW50Pjo6bWF4KCk7Ci0gICAgR0xpbnQgaW50TWlu
ID0gc3RkOjpudW1lcmljX2xpbWl0czxHTGludD46Om1pbigpOwotCi0gICAgaW5WYWx1ZXMucHVz
aF9iYWNrKC0xKTsKLSAgICBpblZhbHVlcy5wdXNoX2JhY2soMCk7Ci0gICAgaW5WYWx1ZXMucHVz
aF9iYWNrKDEpOwotICAgIGluVmFsdWVzLnB1c2hfYmFjayg5OTk5OTkpOwotICAgIGluVmFsdWVz
LnB1c2hfYmFjayhpbnRNYXgpOwotICAgIGluVmFsdWVzLnB1c2hfYmFjayhpbnRNYXggLSAxKTsK
LSAgICBpblZhbHVlcy5wdXNoX2JhY2soaW50TWluKTsKLSAgICBpblZhbHVlcy5wdXNoX2JhY2so
aW50TWluICsgMSk7Ci0KLSAgICBmb3IgKEdMaW50IHZhbHVlIDogaW5WYWx1ZXMpCi0gICAgewot
ICAgICAgICBleHBlY3RlZElWYWx1ZXMucHVzaF9iYWNrKHZhbHVlKTsKLSAgICAgICAgZXhwZWN0
ZWRGVmFsdWVzLnB1c2hfYmFjayhzdGF0aWNfY2FzdDxHTGZsb2F0Pih2YWx1ZSkpOwotICAgIH0K
LQotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7
Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgaW5WYWx1ZXMuc2l6ZSgpOyAr
K2luZGV4KQotICAgIHsKLSAgICAgICAgR0xpbnQgaW5WYWx1ZSAgICAgICA9IGluVmFsdWVzW2lu
ZGV4XTsKLSAgICAgICAgR0xpbnQgZXhwZWN0ZWRWYWx1ZSA9IGV4cGVjdGVkSVZhbHVlc1tpbmRl
eF07Ci0KLSAgICAgICAgZ2xVbmlmb3JtMWkobVVuaWZvcm1JTG9jYXRpb24sIGluVmFsdWUpOwot
ICAgICAgICBHTGludCB0ZXN0VmFsdWU7Ci0gICAgICAgIGdsR2V0VW5pZm9ybWl2KG1Qcm9ncmFt
LCBtVW5pZm9ybUlMb2NhdGlvbiwgJnRlc3RWYWx1ZSk7Ci0gICAgICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRWYWx1ZSwgdGVzdFZhbHVlKTsKLSAg
ICB9Ci0KLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgaW5WYWx1ZXMuc2l6ZSgp
OyArK2luZGV4KQotICAgIHsKLSAgICAgICAgR0xpbnQgaW5WYWx1ZSAgICAgICAgID0gaW5WYWx1
ZXNbaW5kZXhdOwotICAgICAgICBHTGZsb2F0IGV4cGVjdGVkVmFsdWUgPSBleHBlY3RlZEZWYWx1
ZXNbaW5kZXhdOwotCi0gICAgICAgIGdsVW5pZm9ybTFpKG1Vbmlmb3JtSUxvY2F0aW9uLCBpblZh
bHVlKTsKLSAgICAgICAgR0xmbG9hdCB0ZXN0VmFsdWU7Ci0gICAgICAgIGdsR2V0VW5pZm9ybWZ2
KG1Qcm9ncmFtLCBtVW5pZm9ybUlMb2NhdGlvbiwgJnRlc3RWYWx1ZSk7Ci0gICAgICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRWYWx1ZSwgdGVzdFZh
bHVlKTsKLSAgICB9Ci19Ci0KLS8vIFRlc3QgdGhhdCBxdWVyaWVzIG9mIGJvb2xlYW4gdW5pZm9y
bXMgcm91bmQgY29ycmVjdGx5LgotVEVTVF9QKFVuaWZvcm1UZXN0LCBCb29sZWFuVW5pZm9ybVN0
YXRlUXVlcnkpCi17Ci0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBHTGludCBpbnRW
YWx1ZSAgICAgPSAwOwotICAgIEdMZmxvYXQgZmxvYXRWYWx1ZSA9IDAuMGY7Ci0KLSAgICAvLyBD
YWxsaW5nIFVuaWZvcm0xaQotICAgIGdsVW5pZm9ybTFpKG1Vbmlmb3JtQkxvY2F0aW9uLCBHTF9G
QUxTRSk7Ci0KLSAgICBnbEdldFVuaWZvcm1pdihtUHJvZ3JhbSwgbVVuaWZvcm1CTG9jYXRpb24s
ICZpbnRWYWx1ZSk7Ci0gICAgRVhQRUNUX0VRKDAsIGludFZhbHVlKTsKLQotICAgIGdsR2V0VW5p
Zm9ybWZ2KG1Qcm9ncmFtLCBtVW5pZm9ybUJMb2NhdGlvbiwgJmZsb2F0VmFsdWUpOwotICAgIEVY
UEVDVF9FUSgwLjBmLCBmbG9hdFZhbHVlKTsKLQotICAgIGdsVW5pZm9ybTFpKG1Vbmlmb3JtQkxv
Y2F0aW9uLCBHTF9UUlVFKTsKLQotICAgIGdsR2V0VW5pZm9ybWl2KG1Qcm9ncmFtLCBtVW5pZm9y
bUJMb2NhdGlvbiwgJmludFZhbHVlKTsKLSAgICBFWFBFQ1RfRVEoMSwgaW50VmFsdWUpOwotCi0g
ICAgZ2xHZXRVbmlmb3JtZnYobVByb2dyYW0sIG1Vbmlmb3JtQkxvY2F0aW9uLCAmZmxvYXRWYWx1
ZSk7Ci0gICAgRVhQRUNUX0VRKDEuMGYsIGZsb2F0VmFsdWUpOwotCi0gICAgLy8gQ2FsbGluZyBV
bmlmb3JtMWYKLSAgICBnbFVuaWZvcm0xZihtVW5pZm9ybUJMb2NhdGlvbiwgMC4wZik7Ci0KLSAg
ICBnbEdldFVuaWZvcm1pdihtUHJvZ3JhbSwgbVVuaWZvcm1CTG9jYXRpb24sICZpbnRWYWx1ZSk7
Ci0gICAgRVhQRUNUX0VRKDAsIGludFZhbHVlKTsKLQotICAgIGdsR2V0VW5pZm9ybWZ2KG1Qcm9n
cmFtLCBtVW5pZm9ybUJMb2NhdGlvbiwgJmZsb2F0VmFsdWUpOwotICAgIEVYUEVDVF9FUSgwLjBm
LCBmbG9hdFZhbHVlKTsKLQotICAgIGdsVW5pZm9ybTFmKG1Vbmlmb3JtQkxvY2F0aW9uLCAxLjBm
KTsKLQotICAgIGdsR2V0VW5pZm9ybWl2KG1Qcm9ncmFtLCBtVW5pZm9ybUJMb2NhdGlvbiwgJmlu
dFZhbHVlKTsKLSAgICBFWFBFQ1RfRVEoMSwgaW50VmFsdWUpOwotCi0gICAgZ2xHZXRVbmlmb3Jt
ZnYobVByb2dyYW0sIG1Vbmlmb3JtQkxvY2F0aW9uLCAmZmxvYXRWYWx1ZSk7Ci0gICAgRVhQRUNU
X0VRKDEuMGYsIGZsb2F0VmFsdWUpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0K
LS8vIFRlc3QgcXVlcmllcyBmb3IgYXJyYXlzIG9mIGJvb2xlYW4gdW5pZm9ybXMuCi1URVNUX1Ao
VW5pZm9ybVRlc3QsIEJvb2xlYW5BcnJheVVuaWZvcm1TdGF0ZVF1ZXJ5KQotewotICAgIGdsVXNl
UHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgR0xpbnQgYm9vbFZhbHVlc2lbNF0gICA9IHswLCAxLCAw
LCAxfTsKLSAgICBHTGZsb2F0IGJvb2xWYWx1ZXNmWzRdID0gezAsIDEsIDAsIDF9OwotCi0gICAg
R0xpbnQgbG9jYXRpb25zWzRdID0gewotICAgICAgICBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJv
Z3JhbSwgInVuaUJBcnIiKSwKLSAgICAgICAgZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0s
ICJ1bmlCQXJyWzFdIiksCi0gICAgICAgIGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAi
dW5pQkFyclsyXSIpLAotICAgICAgICBnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInVu
aUJBcnJbM10iKSwKLSAgICB9OwotCi0gICAgLy8gQ2FsbGluZyBVbmlmb3JtMWl2Ci0gICAgZ2xV
bmlmb3JtMWl2KGxvY2F0aW9uc1swXSwgNCwgYm9vbFZhbHVlc2kpOwotCi0gICAgZm9yICh1bnNp
Z25lZCBpbnQgaWR4ID0gMDsgaWR4IDwgNDsgKytpZHgpCi0gICAgewotICAgICAgICBpbnQgdmFs
dWUgPSAtMTsKLSAgICAgICAgZ2xHZXRVbmlmb3JtaXYobVByb2dyYW0sIGxvY2F0aW9uc1tpZHhd
LCAmdmFsdWUpOwotICAgICAgICBFWFBFQ1RfRVEoYm9vbFZhbHVlc2lbaWR4XSwgdmFsdWUpOwot
ICAgIH0KLQotICAgIGZvciAodW5zaWduZWQgaW50IGlkeCA9IDA7IGlkeCA8IDQ7ICsraWR4KQot
ICAgIHsKLSAgICAgICAgZmxvYXQgdmFsdWUgPSAtMS4wZjsKLSAgICAgICAgZ2xHZXRVbmlmb3Jt
ZnYobVByb2dyYW0sIGxvY2F0aW9uc1tpZHhdLCAmdmFsdWUpOwotICAgICAgICBFWFBFQ1RfRVEo
Ym9vbFZhbHVlc2ZbaWR4XSwgdmFsdWUpOwotICAgIH0KLQotICAgIC8vIENhbGxpbmcgVW5pZm9y
bTFmdgotICAgIGdsVW5pZm9ybTFmdihsb2NhdGlvbnNbMF0sIDQsIGJvb2xWYWx1ZXNmKTsKLQot
ICAgIGZvciAodW5zaWduZWQgaW50IGlkeCA9IDA7IGlkeCA8IDQ7ICsraWR4KQotICAgIHsKLSAg
ICAgICAgaW50IHZhbHVlID0gLTE7Ci0gICAgICAgIGdsR2V0VW5pZm9ybWl2KG1Qcm9ncmFtLCBs
b2NhdGlvbnNbaWR4XSwgJnZhbHVlKTsKLSAgICAgICAgRVhQRUNUX0VRKGJvb2xWYWx1ZXNpW2lk
eF0sIHZhbHVlKTsKLSAgICB9Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGludCBpZHggPSAwOyBpZHgg
PCA0OyArK2lkeCkKLSAgICB7Ci0gICAgICAgIGZsb2F0IHZhbHVlID0gLTEuMGY7Ci0gICAgICAg
IGdsR2V0VW5pZm9ybWZ2KG1Qcm9ncmFtLCBsb2NhdGlvbnNbaWR4XSwgJnZhbHVlKTsKLSAgICAg
ICAgRVhQRUNUX0VRKGJvb2xWYWx1ZXNmW2lkeF0sIHZhbHVlKTsKLSAgICB9Ci0KLSAgICBBU1NF
UlRfR0xfTk9fRVJST1IoKTsKLX0KLQotY2xhc3MgVW5pZm9ybVRlc3RFUzMgOiBwdWJsaWMgQU5H
TEVUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBVbmlmb3JtVGVzdEVTMygpIDogbVByb2dyYW0o
MCkge30KLQotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgQU5HTEVU
ZXN0OjpTZXRVcCgpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgaWYgKG1Qcm9ncmFtICE9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGds
RGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgICAgICAgICBtUHJvZ3JhbSA9IDA7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBHTHVpbnQgbVByb2dyYW07Ci19OwotCi0vLyBUZXN0IHF1ZXJp
ZXMgZm9yIHRyYW5zcG9zZWQgYXJyYXlzIG9mIG5vbi1zcXVhcmUgbWF0cml4IHVuaWZvcm1zLgot
VEVTVF9QKFVuaWZvcm1UZXN0RVMzLCBUcmFucG9zZWRNYXRyaXhBcnJheVVuaWZvcm1TdGF0ZVF1
ZXJ5KQotewotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZ2ZXJ0ZXhTaGFkZXIgPQotICAgICAgICAi
I3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7IGdsX1Bvc2l0aW9uID0g
dmVjNCgxKTsgfSI7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJmZyYWdTaGFkZXIgPQotICAgICAg
ICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtc
biIKLSAgICAgICAgInVuaWZvcm0gbWF0M3gyIHVuaU1hdDN4Mls1XTtcbiIKLSAgICAgICAgIm91
dCB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgotICAgICAgICAiICBj
b2xvciA9IHZlYzQodW5pTWF0M3gyWzBdWzBdWzBdKTtcbiIKLSAgICAgICAgIn0iOwotCi0gICAg
bVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXIsIGZyYWdTaGFkZXIpOwotICAg
IEFTU0VSVF9ORShtUHJvZ3JhbSwgMHUpOwotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsK
LQotICAgIHN0ZDo6dmVjdG9yPEdMZmxvYXQ+IHRyYW5zcG9zZWRWYWx1ZXM7Ci0KLSAgICBmb3Ig
KHNpemVfdCBhcnJheUVsZW1lbnQgPSAwOyBhcnJheUVsZW1lbnQgPCA1OyArK2FycmF5RWxlbWVu
dCkKLSAgICB7Ci0gICAgICAgIHRyYW5zcG9zZWRWYWx1ZXMucHVzaF9iYWNrKDEuMGYgKyBhcnJh
eUVsZW1lbnQpOwotICAgICAgICB0cmFuc3Bvc2VkVmFsdWVzLnB1c2hfYmFjaygzLjBmICsgYXJy
YXlFbGVtZW50KTsKLSAgICAgICAgdHJhbnNwb3NlZFZhbHVlcy5wdXNoX2JhY2soNS4wZiArIGFy
cmF5RWxlbWVudCk7Ci0gICAgICAgIHRyYW5zcG9zZWRWYWx1ZXMucHVzaF9iYWNrKDIuMGYgKyBh
cnJheUVsZW1lbnQpOwotICAgICAgICB0cmFuc3Bvc2VkVmFsdWVzLnB1c2hfYmFjayg0LjBmICsg
YXJyYXlFbGVtZW50KTsKLSAgICAgICAgdHJhbnNwb3NlZFZhbHVlcy5wdXNoX2JhY2soNi4wZiAr
IGFycmF5RWxlbWVudCk7Ci0gICAgfQotCi0gICAgLy8gU2V0dGluZyBhcyBhIGNsdW1wCi0gICAg
R0xpbnQgYmFzZUxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1bmlN
YXQzeDIiKTsKLSAgICBBU1NFUlRfTkUoLTEsIGJhc2VMb2NhdGlvbik7Ci0KLSAgICBnbFVuaWZv
cm1NYXRyaXgzeDJmdihiYXNlTG9jYXRpb24sIDUsIEdMX1RSVUUsICZ0cmFuc3Bvc2VkVmFsdWVz
WzBdKTsKLQotICAgIGZvciAoc2l6ZV90IGFycmF5RWxlbWVudCA9IDA7IGFycmF5RWxlbWVudCA8
IDU7ICsrYXJyYXlFbGVtZW50KQotICAgIHsKLSAgICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gbmFt
ZVN0cjsKLSAgICAgICAgbmFtZVN0ciA8PCAidW5pTWF0M3gyWyIgPDwgYXJyYXlFbGVtZW50IDw8
ICJdIjsKLSAgICAgICAgc3RkOjpzdHJpbmcgbmFtZSA9IG5hbWVTdHIuc3RyKCk7Ci0gICAgICAg
IEdMaW50IGxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sIG5hbWUuY19z
dHIoKSk7Ci0gICAgICAgIEFTU0VSVF9ORSgtMSwgbG9jYXRpb24pOwotCi0gICAgICAgIHN0ZDo6
dmVjdG9yPEdMZmxvYXQ+IHNlcXVlbnRpYWxWYWx1ZXMoNiwgMCk7Ci0gICAgICAgIGdsR2V0VW5p
Zm9ybWZ2KG1Qcm9ncmFtLCBsb2NhdGlvbiwgJnNlcXVlbnRpYWxWYWx1ZXNbMF0pOwotCi0gICAg
ICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIGZvciAoc2l6ZV90IGNvbXAgPSAw
OyBjb21wIDwgNjsgKytjb21wKQotICAgICAgICB7Ci0gICAgICAgICAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8R0xmbG9hdD4oY29tcCArIDEgKyBhcnJheUVsZW1lbnQpLCBzZXF1ZW50aWFsVmFs
dWVzW2NvbXBdKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotLy8gQ2hlY2sgdGhhdCBzYW1wbGVy
IHVuaWZvcm1zIG9ubHkgc2hvdyB1cCBvbmUgdGltZSBpbiB0aGUgbGlzdAotVEVTVF9QKFVuaWZv
cm1UZXN0LCBTYW1wbGVyVW5pZm9ybXNBcHBlYXJPbmNlKQotewotICAgIGludCBtYXhWZXJ0ZXhU
ZXh0dXJlSW1hZ2VVbml0cyA9IDA7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVkVSVEVYX1RF
WFRVUkVfSU1BR0VfVU5JVFMsICZtYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cyk7Ci0KLSAgICBp
ZiAobWF4VmVydGV4VGV4dHVyZUltYWdlVW5pdHMgPT0gMCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6
Y291dCA8PCAiUmVuZGVyZXIgZG9lc24ndCBzdXBwb3J0IHZlcnRleCB0ZXh0dXJlIGZldGNoLCBz
a2lwcGluZyB0ZXN0IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBjb25zdCBzdGQ6OnN0cmluZyAmdmVydFNoYWRlciA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVj
MiBwb3NpdGlvbjtcbiIKLSAgICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHRleDJEO1xuIgotICAg
ICAgICAidmFyeWluZyB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKCkge1xuIgot
ICAgICAgICAiICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAsIDEpO1xuIgotICAgICAg
ICAiICBjb2xvciA9IHRleHR1cmUyRCh0ZXgyRCwgdmVjMigwKSk7XG4iCi0gICAgICAgICJ9IjsK
LQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnU2hhZGVyID0KLSAgICAgICAgInByZWNpc2lv
biBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgICAidmFyeWluZyB2ZWM0IGNvbG9yO1xuIgotICAg
ICAgICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4MkQ7XG4iCi0gICAgICAgICJ2b2lkIG1haW4oKSB7
XG4iCi0gICAgICAgICIgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgyRCwgdmVjMigwKSkg
KyBjb2xvcjtcbiIKLSAgICAgICAgIn0iOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBDb21waWxl
UHJvZ3JhbSh2ZXJ0U2hhZGVyLCBmcmFnU2hhZGVyKTsKLSAgICBBU1NFUlRfTkUoMHUsIHByb2dy
YW0pOwotCi0gICAgR0xpbnQgYWN0aXZlVW5pZm9ybXNDb3VudCA9IDA7Ci0gICAgZ2xHZXRQcm9n
cmFtaXYocHJvZ3JhbSwgR0xfQUNUSVZFX1VOSUZPUk1TLCAmYWN0aXZlVW5pZm9ybXNDb3VudCk7
Ci0gICAgQVNTRVJUX0VRKDEsIGFjdGl2ZVVuaWZvcm1zQ291bnQpOwotCi0gICAgR0xpbnQgc2l6
ZSAgICAgICA9IDA7Ci0gICAgR0xlbnVtIHR5cGUgICAgICA9IEdMX05PTkU7Ci0gICAgR0xjaGFy
IG5hbWVbMTIwXSA9IHswfTsKLSAgICBnbEdldEFjdGl2ZVVuaWZvcm0ocHJvZ3JhbSwgMCwgMTAw
LCBudWxscHRyLCAmc2l6ZSwgJnR5cGUsIG5hbWUpOwotICAgIEVYUEVDVF9FUSgxLCBzaXplKTsK
LSAgICBFWFBFQ1RfR0xFTlVNX0VRKEdMX1NBTVBMRVJfMkQsIHR5cGUpOwotICAgIEVYUEVDVF9T
VFJFUSgidGV4MkQiLCBuYW1lKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAg
Z2xEZWxldGVQcm9ncmFtKHByb2dyYW0pOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgR2V0VW5pZm9ybVY+Ci12b2lkIENoZWNrT25lRWxlbWVudChHZXRVbmlmb3JtViBnZXRV
bmlmb3JtdiwKLSAgICAgICAgICAgICAgICAgICAgIEdMdWludCBwcm9ncmFtLAotICAgICAgICAg
ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsCi0gICAgICAgICAgICAgICAgICAg
ICBpbnQgY29tcG9uZW50cywKLSAgICAgICAgICAgICAgICAgICAgIFQgY2FuYXJ5KQotewotICAg
IC8vIFRoZSBidWZmZXIgZ2V0dGluZyB0aGUgcmVzdWx0cyBoYXMgdGhyZWUgY2h1bmtzCi0gICAg
Ly8gIC0gQSBjaHVuayB0byBzZWUgdW5kZXJmbG93cwotICAgIC8vICAtIEEgY2h1bmsgdGhhdCB3
aWxsIGhvbGQgdGhlIHJlc3VsdAotICAgIC8vICAtIEEgY2h1bmsgdG8gc2VlIG92ZXJmbG93cyBm
b3Igd2hlbiBjb21wb25lbnRzID0ga0NodW5rU2l6ZQotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
a0NodW5rU2l6ZSA9IDQ7Ci0gICAgc3RkOjphcnJheTxULCAzICoga0NodW5rU2l6ZT4gYnVmZmVy
OwotICAgIGJ1ZmZlci5maWxsKGNhbmFyeSk7Ci0KLSAgICBHTGludCBsb2NhdGlvbiA9IGdsR2V0
VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sIG5hbWUuY19zdHIoKSk7Ci0gICAgQVNTRVJUX05FKGxv
Y2F0aW9uLCAtMSk7Ci0KLSAgICBnZXRVbmlmb3Jtdihwcm9ncmFtLCBsb2NhdGlvbiwgJmJ1ZmZl
cltrQ2h1bmtTaXplXSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBrQ2h1bmtTaXplOyBp
KyspCi0gICAgewotICAgICAgICBBU1NFUlRfRVEoY2FuYXJ5LCBidWZmZXJbaV0pOwotICAgIH0K
LSAgICBmb3IgKHNpemVfdCBpID0ga0NodW5rU2l6ZSArIGNvbXBvbmVudHM7IGkgPCBidWZmZXIu
c2l6ZSgpOyBpKyspCi0gICAgewotICAgICAgICBBU1NFUlRfRVEoY2FuYXJ5LCBidWZmZXJbaV0p
OwotICAgIH0KLX0KLQotLy8gQ2hlY2sgdGhhdCBnZXR0aW5nIGFuIGVsZW1lbnQgYXJyYXkgZG9l
c24ndCByZXR1cm4gdGhlIHdob2xlIGFycmF5LgotVEVTVF9QKFVuaWZvcm1UZXN0RVMzLCBSZXR1
cm5zT25seU9uZUFycmF5RWxlbWVudCkKLXsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtBcnJh
eVNpemUgPSA0OwotICAgIHN0cnVjdCBVbmlmb3JtQXJyYXlJbmZvCi0gICAgewotICAgICAgICBV
bmlmb3JtQXJyYXlJbmZvKHN0ZDo6c3RyaW5nIHR5cGUsIHN0ZDo6c3RyaW5nIG5hbWUsIGludCBj
b21wb25lbnRzKQotICAgICAgICAgICAgOiB0eXBlKHR5cGUpLCBuYW1lKG5hbWUpLCBjb21wb25l
bnRzKGNvbXBvbmVudHMpCi0gICAgICAgIHsKLSAgICAgICAgfQotICAgICAgICBzdGQ6OnN0cmlu
ZyB0eXBlOwotICAgICAgICBzdGQ6OnN0cmluZyBuYW1lOwotICAgICAgICBpbnQgY29tcG9uZW50
czsKLSAgICB9OwotCi0gICAgLy8gQ2hlY2sgZm9yIHZhcmlvdXMgbnVtYmVyIG9mIGNvbXBvbmVu
dHMgYW5kIHR5cGVzCi0gICAgc3RkOjp2ZWN0b3I8VW5pZm9ybUFycmF5SW5mbz4gdW5pZm9ybUFy
cmF5czsKLSAgICB1bmlmb3JtQXJyYXlzLmVtcGxhY2VfYmFjaygiYm9vbCIsICJ1Qm9vbCIsIDEp
OwotICAgIHVuaWZvcm1BcnJheXMuZW1wbGFjZV9iYWNrKCJ2ZWMyIiwgInVGbG9hdCIsIDIpOwot
ICAgIHVuaWZvcm1BcnJheXMuZW1wbGFjZV9iYWNrKCJpdmVjMyIsICJ1SW50IiwgMyk7Ci0gICAg
dW5pZm9ybUFycmF5cy5lbXBsYWNlX2JhY2soInV2ZWM0IiwgInVVaW50IiwgNCk7Ci0KLSAgICBz
dGQ6Om9zdHJpbmdzdHJlYW0gdW5pZm9ybVN0cmVhbTsKLSAgICBzdGQ6Om9zdHJpbmdzdHJlYW0g
YWRkaXRpb25TdHJlYW07Ci0gICAgZm9yIChjb25zdCBhdXRvICZhcnJheSA6IHVuaWZvcm1BcnJh
eXMpCi0gICAgewotICAgICAgICB1bmlmb3JtU3RyZWFtIDw8ICJ1bmlmb3JtICIgPDwgYXJyYXku
dHlwZSA8PCAiICIgPDwgYXJyYXkubmFtZSA8PCAiWyIKLSAgICAgICAgICAgICAgICAgICAgICA8
PCBUb1N0cmluZyhrQXJyYXlTaXplKSA8PCAiXTtcbiI7Ci0KLSAgICAgICAgLy8gV2UgbmVlZCB0
byBtYWtlIHVzZSBvZiB0aGUgdW5pZm9ybXMgb3IgdGhleSBnZXQgY29tcGlsZWQgb3V0LgotICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKGFycmF5LmNvbXBvbmVudHMgPT0gMSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBhZGRpdGlvblN0cmVhbSA8PCAiICsgZmxvYXQoIiA8PCBhcnJheS5uYW1lIDw8ICJbIiA8PCBp
IDw8ICJdKSI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgY29tcG9uZW50ID0gMDsgY29tcG9uZW50IDwgYXJy
YXkuY29tcG9uZW50czsgY29tcG9uZW50KyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBhZGRpdGlvblN0cmVhbSA8PCAiICsgZmxvYXQoIiA8PCBhcnJheS5uYW1lIDw8
ICJbIiA8PCBpIDw8ICJdWyIgPDwgY29tcG9uZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDw8ICJdKSI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgJnZlcnRleFNoYWRlciA9Ci0g
ICAgICAgICIjdmVyc2lvbiAzMDAgZXNcbiIgKwotICAgICAgICB1bmlmb3JtU3RyZWFtLnN0cigp
ICsKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAg
Z2xfUG9zaXRpb24gPSB2ZWM0KDEuMCIgKyBhZGRpdGlvblN0cmVhbS5zdHIoKSArICIpO1xuIgot
ICAgICAgICAifSI7Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXIgPQot
ICAgICAgICAiI3ZlcnNpb24gMzAwIGVzXG4iCi0gICAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBm
bG9hdDtcbiIKLSAgICAgICAgIm91dCB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWlu
ICgpXG4iCi0gICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgY29sb3IgPSB2ZWM0KDEsIDAsIDAs
IDEpO1xuIgotICAgICAgICAifSI7Ci0KLSAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZl
cnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIpOwotICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0p
OwotCi0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgIGZvciAoY29uc3QgYXV0byAm
dW5pZm9ybUFycmF5IDogdW5pZm9ybUFycmF5cykKLSAgICB7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBrQXJyYXlTaXplOyBpbmRleCsrKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBzdGQ6OnN0cmluZyBzdHJJbmRleCA9ICJbIiArIFRvU3RyaW5nKGluZGV4KSArICJd
IjsKLSAgICAgICAgICAgIC8vIENoZWNrIGFsbCB0aGUgZGlmZmVyZW50IGdsR2V0VW5pZm9ybXYg
ZnVuY3Rpb25zCi0gICAgICAgICAgICBDaGVja09uZUVsZW1lbnQ8ZmxvYXQ+KGdsR2V0VW5pZm9y
bWZ2LCBtUHJvZ3JhbSwgdW5pZm9ybUFycmF5Lm5hbWUgKyBzdHJJbmRleCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdW5pZm9ybUFycmF5LmNvbXBvbmVudHMsIDQyLjQyNDJm
KTsKLSAgICAgICAgICAgIENoZWNrT25lRWxlbWVudDxpbnQ+KGdsR2V0VW5pZm9ybWl2LCBtUHJv
Z3JhbSwgdW5pZm9ybUFycmF5Lm5hbWUgKyBzdHJJbmRleCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuaWZvcm1BcnJheS5jb21wb25lbnRzLCAweDdCQURCRUQ1KTsKLSAgICAg
ICAgICAgIENoZWNrT25lRWxlbWVudDx1bnNpZ25lZCBpbnQ+KGdsR2V0VW5pZm9ybXVpdiwgbVBy
b2dyYW0sIHVuaWZvcm1BcnJheS5uYW1lICsgc3RySW5kZXgsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtQXJyYXkuY29tcG9uZW50cywgMHhERUFEQkVF
Rik7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBj
b25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCByZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJz
aW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUgcnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFU
RV9URVNUKFVuaWZvcm1UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEOSgpLAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX0QzRDExX0ZMOV8zKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0wo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTEVTKCkpOwotQU5HTEVfSU5TVEFO
VElBVEVfVEVTVChVbmlmb3JtVGVzdEVTMywgRVMzX0QzRDExKCksIEVTM19PUEVOR0woKSwgRVMz
X09QRU5HTEVTKCkpOwotCi19IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1VucGFja0FsaWdubWVudFRlc3QuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1VucGFja0FsaWdubWVu
dFRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTNmNzZiYzZmYS4uMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3Rz
L1VucGFja0FsaWdubWVudFRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzI1ICswLDAgQEAK
LS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkg
YSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug
ZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi11c2luZyBu
YW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1jbGFzcyBVbnBhY2tBbGlnbm1lbnRU
ZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgVW5wYWNrQWxpZ25t
ZW50VGVzdCgpCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwotICAgICAgICBz
ZXRXaW5kb3dIZWlnaHQoMTI4KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAg
ICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsK
LSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdEZXB0aEJp
dHMoMjQpOwotCi0gICAgICAgIG1Qcm9ncmFtID0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIFNldFVw
KCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0g
ICAgICAgICgKLSAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSAgICAgICAgICAg
IGF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOwotCi0gICAgICAgICAgICB2b2lkIG1haW4oKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZnJhZ21l
bnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIHVu
aWZvcm0gc2FtcGxlcjJEIHRleDsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB2ZWMy
KDAuMCwgMS4wKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgbVByb2dy
YW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hhZGVyU291
cmNlKTsKLSAgICAgICAgaWYgKG1Qcm9ncmFtID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAg
IEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBnbERlbGV0
ZVByb2dyYW0obVByb2dyYW0pOwotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24oKTsKLSAg
ICB9Ci0KLSAgICB2b2lkIGdldFBpeGVsU2l6ZShHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwg
dW5zaWduZWQgaW50KiBzaXplKQotICAgIHsKLSAgICAgICAgc3dpdGNoICh0eXBlKQotICAgICAg
ICB7Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xOgotICAgICAgICAg
IGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV82XzU6Ci0gICAgICAgICAgY2FzZSBHTF9VTlNJR05F
RF9TSE9SVF80XzRfNF80OgotICAgICAgICAgICAgKnNpemUgPSBzaXplb2YoR0x1c2hvcnQpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Ci0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGNvbXBDb3VudCA9IDA7
Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChmb3JtYXQpCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgY2FzZSBHTF9SR0JBOiAgICAgICAgICAgIGNvbXBDb3VudCA9IDQ7IGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgY2FzZSBHTF9SR0I6ICAgICAgICAgICAgIGNvbXBDb3Vu
dCA9IDM7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6
IGNvbXBDb3VudCA9IDI7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgY2FzZSBHTF9MVU1JTkFO
Q0U6ICAgICAgIGNvbXBDb3VudCA9IDE7IGJyZWFrOwotICAgICAgICAgICAgICAgICAgY2FzZSBH
TF9BTFBIQTogICAgICAgICAgIGNvbXBDb3VudCA9IDE7IGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgZGVmYXVsdDogICAgICAgICAgICAgICAgIEZBSUwoKSA8PCAidW5rbm93biBwaXhlbCBmb3Jt
YXQuIjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKnNpemUgPSBzaXplb2Yo
R0x1Ynl0ZSkgKiBjb21wQ291bnQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgRkFJTCgpIDw8ICJ1bmtub3duIHBpeGVs
IHR5cGUuIjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGJvb2wgZm9ybWF0SGFzUkdCKEdMZW51
bSBmb3JtYXQpCi0gICAgewotICAgICAgICByZXR1cm4gKGZvcm1hdCAhPSBHTF9BTFBIQSk7Ci0g
ICAgfQotCi0gICAgdm9pZCB0ZXN0QWxpZ25tZW50KGludCBhbGlnbm1lbnQsIHVuc2lnbmVkIGlu
dCBvZmZzZXQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlKQotICAgIHsKLSAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGludCB3aWR0aCA9IDc7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBpbnQgaGVpZ2h0ID0gMjsKLQotICAgICAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFD
S19BTElHTk1FTlQsIGFsaWdubWVudCk7Ci0KLSAgICAgICAgR0xpbnQgcmVhZGJhY2tBbGlnbm1l
bnQ7Ci0gICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfVU5QQUNLX0FMSUdOTUVOVCwgJnJlYWRiYWNr
QWxpZ25tZW50KTsKLSAgICAgICAgRVhQRUNUX0VRKGFsaWdubWVudCwgcmVhZGJhY2tBbGlnbm1l
bnQpOwotCi0gICAgICAgIEdMdWJ5dGUgYnVmWzEwMjRdOwotICAgICAgICBtZW1zZXQoYnVmLCAw
LCBzaXplb2YoYnVmKSk7Ci0KLSAgICAgICAgdW5zaWduZWQgaW50IHBpeGVsU2l6ZTsKLSAgICAg
ICAgZ2V0UGl4ZWxTaXplKGZvcm1hdCwgdHlwZSwgJnBpeGVsU2l6ZSk7Ci0gICAgICAgIGZvciAo
dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgcGl4ZWxTaXplOyBpKyspCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGJ1ZltvZmZzZXQraV0gPSAweEZGOwotICAgICAgICB9Ci0KLSAgICAgICAgR0x1aW50
IHRleDsKLSAgICAgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4KTsKLSAgICAgICAgZ2xCaW5kVGV4
dHVyZShHTF9URVhUVVJFXzJELCB0ZXgpOwotCi0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhU
VVJFXzJELCAwLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGZvcm1hdCwgdHlwZSwgJmJ1Zlsw
XSk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01J
Tl9GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJF
XzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgICAgIGdsVGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9f
RURHRSk7Ci0KLSAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAuNWYpOwot
Ci0gICAgICAgIEdMdWJ5dGUgZXhwZWN0ZWRSR0IgPSBmb3JtYXRIYXNSR0IoZm9ybWF0KSA/IDI1
NSA6IDA7Ci0gICAgICAgIEVYUEVDVF9QSVhFTF9FUSgwLCAwLCBleHBlY3RlZFJHQiwgZXhwZWN0
ZWRSR0IsIGV4cGVjdGVkUkdCLCAyNTUpOwotCi0gICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwg
JnRleCk7Ci0gICAgfQotCi0gICAgR0x1aW50IG1Qcm9ncmFtOwotfTsKLQotVEVTVF9QKFVucGFj
a0FsaWdubWVudFRlc3QsIERlZmF1bHRBbGlnbm1lbnQpCi17Ci0gICAgR0xpbnQgZGVmYXVsdEFs
aWdubWVudDsKLSAgICBnbEdldEludGVnZXJ2KEdMX1VOUEFDS19BTElHTk1FTlQsICZkZWZhdWx0
QWxpZ25tZW50KTsKLSAgICBFWFBFQ1RfRVEoZGVmYXVsdEFsaWdubWVudCwgNCk7Ci19Ci0KLQot
VEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDFSR0JBVUJ5dGUpCi17Ci0gICAg
dGVzdEFsaWdubWVudCgxLCA3ICogNCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSk7Ci19Ci0K
LVRFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQxUkdCVUJ5dGUpCi17Ci0gICAg
dGVzdEFsaWdubWVudCgxLCA3ICogMywgR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0KLQot
VEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDFSR0JBVVNob3J0NDQ0NCkKLXsK
LSAgICB0ZXN0QWxpZ25tZW50KDEsIDcgKiAyLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF80
XzRfNF80KTsKLX0KLQotVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDFSR0JB
VVNob3J0NTU1MSkKLXsKLSAgICB0ZXN0QWxpZ25tZW50KDEsIDcgKiAyLCBHTF9SR0JBLCBHTF9V
TlNJR05FRF9TSE9SVF81XzVfNV8xKTsKLX0KLQotVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3Qs
IEFsaWdubWVudDFSR0JBVVNob3J0NTY1KQotewotICAgIHRlc3RBbGlnbm1lbnQoMSwgNyAqIDIs
IEdMX1JHQiwgR0xfVU5TSUdORURfU0hPUlRfNV82XzUpOwotfQotCi1URVNUX1AoVW5wYWNrQWxp
Z25tZW50VGVzdCwgQWxpZ25tZW50MUxBVUJ5dGUpCi17Ci0gICAgdGVzdEFsaWdubWVudCgxLCA3
ICogMiwgR0xfTFVNSU5BTkNFX0FMUEhBLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0KLQotVEVTVF9Q
KFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDFMVUJ5dGUpCi17Ci0gICAgdGVzdEFsaWdu
bWVudCgxLCA3LCBHTF9MVU1JTkFOQ0UsIEdMX1VOU0lHTkVEX0JZVEUpOwotfQotCi1URVNUX1Ao
VW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50MUFVQnl0ZSkKLXsKLSAgICB0ZXN0QWxpZ25t
ZW50KDEsIDcsIEdMX0FMUEhBLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0KLQotCi1URVNUX1AoVW5w
YWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50MlJHQkFVQnl0ZSkKLXsKLSAgICB0ZXN0QWxpZ25t
ZW50KDIsIDcgKiA0LCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0KLQotVEVTVF9QKFVu
cGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDJSR0JVQnl0ZSkKLXsKLSAgICB0ZXN0QWxpZ25t
ZW50KDIsIDcgKiAzICsgMSwgR0xfUkdCLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0KLQotVEVTVF9Q
KFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDJSR0JBVVNob3J0NDQ0NCkKLXsKLSAgICB0
ZXN0QWxpZ25tZW50KDIsIDcgKiAyLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80
KTsKLX0KLQotVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDJSR0JBVVNob3J0
NTU1MSkKLXsKLSAgICB0ZXN0QWxpZ25tZW50KDIsIDcgKiAyLCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9TSE9SVF81XzVfNV8xKTsKLX0KLQotVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdu
bWVudDJSR0JBVVNob3J0NTY1KQotewotICAgIHRlc3RBbGlnbm1lbnQoMiwgNyAqIDIsIEdMX1JH
QiwgR0xfVU5TSUdORURfU0hPUlRfNV82XzUpOwotfQotCi1URVNUX1AoVW5wYWNrQWxpZ25tZW50
VGVzdCwgQWxpZ25tZW50MkxBVUJ5dGUpCi17Ci0gICAgdGVzdEFsaWdubWVudCgyLCA3ICogMiwg
R0xfTFVNSU5BTkNFX0FMUEhBLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0KLQotVEVTVF9QKFVucGFj
a0FsaWdubWVudFRlc3QsIEFsaWdubWVudDJMQUJ5dGUpCi17Ci0gICAgdGVzdEFsaWdubWVudCgy
LCA3ICsgMSwgR0xfTFVNSU5BTkNFLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0KLQotVEVTVF9QKFVu
cGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDJBVUJ5dGUpCi17Ci0gICAgdGVzdEFsaWdubWVu
dCgyLCA3ICsgMSwgR0xfQUxQSEEsIEdMX1VOU0lHTkVEX0JZVEUpOwotfQotCi0KLVRFU1RfUChV
bnBhY2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQ0UkdCQVVCeXRlKQotewotICAgIHRlc3RBbGln
bm1lbnQoNCwgNyAqIDQsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUpOwotfQotCi1URVNUX1Ao
VW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50NFJHQlVCeXRlKQotewotICAgIHRlc3RBbGln
bm1lbnQoNCwgNyAqIDMgKyAzLCBHTF9SR0IsIEdMX1VOU0lHTkVEX0JZVEUpOwotfQotCi1URVNU
X1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50NFJHQkFVU2hvcnQ0NDQ0KQotewotICAg
IHRlc3RBbGlnbm1lbnQoNCwgNyAqIDIgKyAyLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF80
XzRfNF80KTsKLX0KLQotVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDRSR0JB
VVNob3J0NTU1MSkKLXsKLSAgICB0ZXN0QWxpZ25tZW50KDQsIDcgKiAyICsgMiwgR0xfUkdCQSwg
R0xfVU5TSUdORURfU0hPUlRfNV81XzVfMSk7Ci19Ci0KLVRFU1RfUChVbnBhY2tBbGlnbm1lbnRU
ZXN0LCBBbGlnbm1lbnQ0UkdCQVVTaG9ydDU2NSkKLXsKLSAgICB0ZXN0QWxpZ25tZW50KDQsIDcg
KiAyICsgMiwgR0xfUkdCLCBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSk7Ci19Ci0KLVRFU1RfUChV
bnBhY2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQ0TEFVQnl0ZSkKLXsKLSAgICB0ZXN0QWxpZ25t
ZW50KDQsIDcgKiAyICsgMiwgR0xfTFVNSU5BTkNFX0FMUEhBLCBHTF9VTlNJR05FRF9CWVRFKTsK
LX0KLQotVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDRMVUJ5dGUpCi17Ci0g
ICAgdGVzdEFsaWdubWVudCg0LCA3ICsgMSwgR0xfTFVNSU5BTkNFLCBHTF9VTlNJR05FRF9CWVRF
KTsKLX0KLQotVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDRBVUJ5dGUpCi17
Ci0gICAgdGVzdEFsaWdubWVudCg0LCA3ICsgMSwgR0xfQUxQSEEsIEdMX1VOU0lHTkVEX0JZVEUp
OwotfQotCi0KLVRFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBBbGlnbm1lbnQ4UkdCQVVCeXRl
KQotewotICAgIHRlc3RBbGlnbm1lbnQoOCwgNyAqIDQgKyA0LCBHTF9SR0JBLCBHTF9VTlNJR05F
RF9CWVRFKTsKLX0KLQotVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDhSR0JV
Qnl0ZSkKLXsKLSAgICB0ZXN0QWxpZ25tZW50KDgsIDcgKiAzICsgMywgR0xfUkdCLCBHTF9VTlNJ
R05FRF9CWVRFKTsKLX0KLQotVEVTVF9QKFVucGFja0FsaWdubWVudFRlc3QsIEFsaWdubWVudDhS
R0JBVVNob3J0NDQ0NCkKLXsKLSAgICB0ZXN0QWxpZ25tZW50KDgsIDcgKiAyICsgMiwgR0xfUkdC
QSwgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNCk7Ci19Ci0KLVRFU1RfUChVbnBhY2tBbGlnbm1l
bnRUZXN0LCBBbGlnbm1lbnQ4UkdCQVVTaG9ydDU1NTEpCi17Ci0gICAgdGVzdEFsaWdubWVudCg4
LCA3ICogMiArIDIsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEpOwotfQotCi1U
RVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50OFJHQkFVU2hvcnQ1NjUpCi17Ci0g
ICAgdGVzdEFsaWdubWVudCg4LCA3ICogMiArIDIsIEdMX1JHQiwgR0xfVU5TSUdORURfU0hPUlRf
NV82XzUpOwotfQotCi1URVNUX1AoVW5wYWNrQWxpZ25tZW50VGVzdCwgQWxpZ25tZW50OExBVUJ5
dGUpCi17Ci0gICAgdGVzdEFsaWdubWVudCg4LCA3ICogMiArIDIsIEdMX0xVTUlOQU5DRV9BTFBI
QSwgR0xfVU5TSUdORURfQllURSk7Ci19Ci0KLVRFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0LCBB
bGlnbm1lbnQ4TFVCeXRlKQotewotICAgIHRlc3RBbGlnbm1lbnQoOCwgNyArIDEsIEdMX0xVTUlO
QU5DRSwgR0xfVU5TSUdORURfQllURSk7Ci19Ci0KLVRFU1RfUChVbnBhY2tBbGlnbm1lbnRUZXN0
LCBBbGlnbm1lbnQ4QVVCeXRlKQotewotICAgIHRlc3RBbGlnbm1lbnQoOCwgNyArIDEsIEdMX0FM
UEhBLCBHTF9VTlNJR05FRF9CWVRFKTsKLX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNo
IGNvbmZpZ3VyYXRpb25zIChlLmcuIHdoaWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZl
cnNpb24pIHRoZXNlIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLUFOR0xFX0lOU1RBTlRJ
QVRFX1RFU1QoVW5wYWNrQWxpZ25tZW50VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMy
X0QzRDkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09Q
RU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwotCi19IC8vIG5hbWVzcGFjZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1VucGFja1Jv
d0xlbmd0aC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
VW5wYWNrUm93TGVuZ3RoLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVhZDU5
NTI2NWQuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9nbF90ZXN0cy9VbnBhY2tSb3dMZW5ndGguY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICsw
LDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL0FOR0xFVGVzdC5oIgotCi11
c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1jbGFzcyBVbnBhY2tSb3dM
ZW5ndGhUZXN0IDogcHVibGljIEFOR0xFVGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgVW5wYWNr
Um93TGVuZ3RoVGVzdCgpCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCgxMjgpOwotICAg
ICAgICBzZXRXaW5kb3dIZWlnaHQoMTI4KTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsK
LSAgICAgICAgc2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0
cyg4KTsKLSAgICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdE
ZXB0aEJpdHMoMjQpOwotCi0gICAgICAgIG1Qcm9ncmFtID0gMDsKLSAgICB9Ci0KLSAgICB2b2lk
IFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQot
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyB2ZXJ0ZXhTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09V
UkNFCi0gICAgICAgICgKLSAgICAgICAgICAgIHByZWNpc2lvbiBoaWdocCBmbG9hdDsKLSAgICAg
ICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHBvc2l0aW9uOwotCi0gICAgICAgICAgICB2b2lkIG1haW4o
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg
ZnJhZ21lbnRTaGFkZXJTb3VyY2UgPSBTSEFERVJfU09VUkNFCi0gICAgICAgICgKLSAgICAgICAg
ICAgIHVuaWZvcm0gc2FtcGxlcjJEIHRleDsKLQotICAgICAgICAgICAgdm9pZCBtYWluKCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4
LCB2ZWMyKDAuMCwgMS4wKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAgICAg
bVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTb3VyY2UsIGZyYWdtZW50U2hh
ZGVyU291cmNlKTsKLSAgICAgICAgaWYgKG1Qcm9ncmFtID09IDApCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEZBSUwoKSA8PCAic2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZC4iOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBn
bERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotCi0gICAgICAgIEFOR0xFVGVzdDo6VGVhckRvd24o
KTsKLSAgICB9Ci0KLSAgICB2b2lkIHRlc3RSb3dMZW5ndGgoaW50IHRleFNpemUsIGludCByb3dM
ZW5ndGgpCi0gICAgewotICAgICAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19ST1dfTEVOR1RI
LCByb3dMZW5ndGgpOwotCi0gICAgICAgIGlmICgoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkgPT0g
MykgfHwgZXh0ZW5zaW9uRW5hYmxlZCgiR0xfRVhUX3VucGFja19zdWJpbWFnZSIpKQotICAgICAg
ICB7Ci0gICAgICAgICAgICAvLyBPbmx5IHRleFNpemUgKiB0ZXhTaXplIHJlZ2lvbiBpcyBmaWxs
ZWQgYXMgV0hJVEUsIG90aGVyIHBhcnRzIGFyZSBCTEFDSy4KLSAgICAgICAgICAgIC8vIElmIHRo
ZSBVTlBBQ0tfUk9XX0xFTkdUSCBpcyBpbXBsZW1lbnRlZCBjb3JyZWN0bHksIGFsbCB0ZXhlbHMg
aW5zaWRlIHRoaXMgdGV4dHVyZSBhcmUgV0hJVEUuCi0gICAgICAgICAgICBzdGQ6OnZlY3RvcjxH
THVieXRlPiBidWYocm93TGVuZ3RoICogdGV4U2l6ZSAqIDQpOwotICAgICAgICAgICAgZm9yIChp
bnQgeSA9IDA7IHkgPCB0ZXhTaXplOyB5KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT46Oml0ZXJhdG9yIHJvd0l0ZXIgPSBidWYuYmVnaW4oKSAr
IHkgKiByb3dMZW5ndGggKiA0OwotICAgICAgICAgICAgICAgIHN0ZDo6ZmlsbChyb3dJdGVyLCBy
b3dJdGVyICsgdGV4U2l6ZSAqIDQsIHN0YXRpY19jYXN0PEdMdWJ5dGU+KDI1NXUpKTsKLSAgICAg
ICAgICAgICAgICBzdGQ6OmZpbGwocm93SXRlciArIHRleFNpemUgKiA0LCByb3dJdGVyICsgcm93
TGVuZ3RoICogNCwgc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4oMHUpKTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgR0x1aW50IHRleDsKLSAgICAgICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJnRl
eCk7Ci0gICAgICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleCk7Ci0KLSAg
ICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCB0ZXhTaXpl
LCB0ZXhTaXplLCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmYnVmWzBdKTsKLSAgICAg
ICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxU
RVIsIEdMX0xJTkVBUik7Ci0gICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8y
RCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgICAgICAgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9U
T19FREdFKTsKLQotICAgICAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIsIDAu
NWYpOwotCi0gICAgICAgICAgICBFWFBFQ1RfUElYRUxfRVEoMCwgMCwgMjU1LCAyNTUsIDI1NSwg
MjU1KTsKLSAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9FUSgxLCAwLCAyNTUsIDI1NSwgMjU1LCAy
NTUpOwotCi0gICAgICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZ0ZXgpOwotICAgICAgICB9
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgRVhQRUNUX0dMX0VSUk9SKEdM
X0lOVkFMSURfRU5VTSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBHTHVpbnQgbVByb2dyYW07
Ci19OwotCi1URVNUX1AoVW5wYWNrUm93TGVuZ3RoVGVzdCwgUm93TGVuZ3RoMTI4KQotewotICAg
IHRlc3RSb3dMZW5ndGgoMTI4LCAxMjgpOwotfQotCi1URVNUX1AoVW5wYWNrUm93TGVuZ3RoVGVz
dCwgUm93TGVuZ3RoMTAyNCkKLXsKLSAgICB0ZXN0Um93TGVuZ3RoKDEyOCwgMTAyNCk7Ci19Ci0K
LS8vIFVzZSB0aGlzIHRvIHNlbGVjdCB3aGljaCBjb25maWd1cmF0aW9ucyAoZS5nLiB3aGljaCBy
ZW5kZXJlciwgd2hpY2ggR0xFUyBtYWpvciB2ZXJzaW9uKSB0aGVzZSB0ZXN0cyBzaG91bGQgYmUg
cnVuIGFnYWluc3QuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKFVucGFja1Jvd0xlbmd0aFRlc3Qs
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfRDNEMTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5HTCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICBFUzNfT1BFTkdMKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMRVMoKSk7Ci0KLX0gLy8gbmFtZXNwYWNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMv
VmVydGV4QXR0cmlidXRlVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvZ2xfdGVzdHMvVmVydGV4QXR0cmlidXRlVGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAxYjc5ZWM2MWM2Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvVmVydGV4QXR0cmlidXRlVGVzdC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw4OTQgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdM
RSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBz
b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl
Ci0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRp
bHMvQU5HTEVUZXN0LmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17
Ci0KLUdMc2l6ZWkgVHlwZVN0cmlkZShHTGVudW0gYXR0cmliVHlwZSkKLXsKLSAgICBzd2l0Y2gg
KGF0dHJpYlR5cGUpCi0gICAgewotICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Ci0gICAg
ICAgIGNhc2UgR0xfQllURToKLSAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjYXNlIEdM
X1VOU0lHTkVEX1NIT1JUOgotICAgICAgICBjYXNlIEdMX1NIT1JUOgotICAgICAgICAgICAgcmV0
dXJuIDI7Ci0gICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5UOgotICAgICAgICBjYXNlIEdMX0lO
VDoKLSAgICAgICAgY2FzZSBHTF9GTE9BVDoKLSAgICAgICAgICAgIHJldHVybiA0OwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgICAgIHJldHVy
biAwOwotICAgIH0KLX0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1HTGZsb2F0IE5vcm1hbGl6
ZShUIHZhbHVlKQotewotICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19pbnRlZ3JhbDxUPjo6dmFs
dWUsICJJbnRlZ2VyIHJlcXVpcmVkLiIpOwotICAgIGlmIChzdGQ6OmlzX3NpZ25lZDxUPjo6dmFs
dWUpCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxU
Pjo6dHlwZSB1bnNpZ25lZF90eXBlOwotICAgICAgICByZXR1cm4gKDIuMGYgKiBzdGF0aWNfY2Fz
dDxHTGZsb2F0Pih2YWx1ZSkgKyAxLjBmKSAvCi0gICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxH
TGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkX3R5cGU+OjptYXgoKSk7Ci0gICAg
fQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxHTGZsb2F0Pih2
YWx1ZSkgLyBzdGF0aWNfY2FzdDxHTGZsb2F0PihzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptYXgo
KSk7Ci0gICAgfQotfQotCi1jbGFzcyBWZXJ0ZXhBdHRyaWJ1dGVUZXN0IDogcHVibGljIEFOR0xF
VGVzdAotewotICBwcm90ZWN0ZWQ6Ci0gICAgVmVydGV4QXR0cmlidXRlVGVzdCgpCi0gICAgICAg
IDogbVByb2dyYW0oMCksIG1UZXN0QXR0cmliKC0xKSwgbUV4cGVjdGVkQXR0cmliKC0xKSwgbUJ1
ZmZlcigwKSwgbVF1YWRCdWZmZXIoMCkKLSAgICB7Ci0gICAgICAgIHNldFdpbmRvd1dpZHRoKDEy
OCk7Ci0gICAgICAgIHNldFdpbmRvd0hlaWdodCgxMjgpOwotICAgICAgICBzZXRDb25maWdSZWRC
aXRzKDgpOwotICAgICAgICBzZXRDb25maWdHcmVlbkJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZp
Z0JsdWVCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdBbHBoYUJpdHMoOCk7Ci0gICAgICAgIHNl
dENvbmZpZ0RlcHRoQml0cygyNCk7Ci0gICAgfQotCi0gICAgZW51bSBjbGFzcyBTb3VyY2UKLSAg
ICB7Ci0gICAgICAgIEJVRkZFUiwKLSAgICAgICAgSU1NRURJQVRFLAotICAgIH07Ci0KLSAgICBz
dHJ1Y3QgVGVzdERhdGEgZmluYWwgOiBhbmdsZTo6Tm9uQ29weWFibGUKLSAgICB7Ci0gICAgICAg
IFRlc3REYXRhKEdMZW51bSB0eXBlSW4sCi0gICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBub3Jt
YWxpemVkSW4sCi0gICAgICAgICAgICAgICAgIFNvdXJjZSBzb3VyY2VJbiwKLSAgICAgICAgICAg
ICAgICAgY29uc3Qgdm9pZCAqaW5wdXREYXRhSW4sCi0gICAgICAgICAgICAgICAgIGNvbnN0IEdM
ZmxvYXQgKmV4cGVjdGVkRGF0YUluKQotICAgICAgICAgICAgOiB0eXBlKHR5cGVJbiksCi0gICAg
ICAgICAgICAgIG5vcm1hbGl6ZWQobm9ybWFsaXplZEluKSwKLSAgICAgICAgICAgICAgYnVmZmVy
T2Zmc2V0KDApLAotICAgICAgICAgICAgICBzb3VyY2Uoc291cmNlSW4pLAotICAgICAgICAgICAg
ICBpbnB1dERhdGEoaW5wdXREYXRhSW4pLAotICAgICAgICAgICAgICBleHBlY3RlZERhdGEoZXhw
ZWN0ZWREYXRhSW4pCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIEdMZW51bSB0eXBl
OwotICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZDsKLSAgICAgICAgc2l6ZV90IGJ1ZmZlck9m
ZnNldDsKLSAgICAgICAgU291cmNlIHNvdXJjZTsKLQotICAgICAgICBjb25zdCB2b2lkICppbnB1
dERhdGE7Ci0gICAgICAgIGNvbnN0IEdMZmxvYXQgKmV4cGVjdGVkRGF0YTsKLSAgICB9OwotCi0g
ICAgdm9pZCBzZXR1cFRlc3QoY29uc3QgVGVzdERhdGEgJnRlc3QsIEdMaW50IHR5cGVTaXplKQot
ICAgIHsKLSAgICAgICAgaWYgKG1Qcm9ncmFtID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGluaXRCYXNpY1Byb2dyYW0oKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0ZXN0LnNvdXJj
ZSA9PSBTb3VyY2U6OkJVRkZFUikKLSAgICAgICAgewotICAgICAgICAgICAgR0xzaXplaSBkYXRh
U2l6ZSA9IG1WZXJ0ZXhDb3VudCAqIFR5cGVTdHJpZGUodGVzdC50eXBlKSAqIHR5cGVTaXplOwot
ICAgICAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7Ci0gICAg
ICAgICAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBkYXRhU2l6ZSwgdGVzdC5pbnB1
dERhdGEsIEdMX1NUQVRJQ19EUkFXKTsKLSAgICAgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRl
cihtVGVzdEF0dHJpYiwgdHlwZVNpemUsIHRlc3QudHlwZSwgdGVzdC5ub3JtYWxpemVkLCAwLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0x2b2lk
ICo+KHRlc3QuYnVmZmVyT2Zmc2V0KSk7Ci0gICAgICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJS
QVlfQlVGRkVSLCAwKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIEFTU0VSVF9FUShTb3VyY2U6OklNTUVESUFURSwgdGVzdC5zb3VyY2UpOwotICAgICAg
ICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgMCk7Ci0gICAgICAgICAgICBnbFZl
cnRleEF0dHJpYlBvaW50ZXIobVRlc3RBdHRyaWIsIHR5cGVTaXplLCB0ZXN0LnR5cGUsIHRlc3Qu
bm9ybWFsaXplZCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Lmlu
cHV0RGF0YSk7Ci0gICAgICAgIH0KLQotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobUV4
cGVjdGVkQXR0cmliLCB0eXBlU2l6ZSwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB0ZXN0LmV4cGVj
dGVkRGF0YSk7Ci0KLSAgICAgICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtVGVzdEF0dHJp
Yik7Ci0gICAgICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobUV4cGVjdGVkQXR0cmliKTsK
LSAgICB9Ci0KLSAgICB2b2lkIGNoZWNrUGl4ZWxzKCkKLSAgICB7Ci0gICAgICAgIEdMaW50IHZp
ZXdwb3J0U2l6ZVs0XTsKLSAgICAgICAgZ2xHZXRJbnRlZ2VydihHTF9WSUVXUE9SVCwgdmlld3Bv
cnRTaXplKTsKLQotICAgICAgICBHTGludCBtaWRQaXhlbFggPSAodmlld3BvcnRTaXplWzBdICsg
dmlld3BvcnRTaXplWzJdKSAvIDI7Ci0gICAgICAgIEdMaW50IG1pZFBpeGVsWSA9ICh2aWV3cG9y
dFNpemVbMV0gKyB2aWV3cG9ydFNpemVbM10pIC8gMjsKLQotICAgICAgICAvLyBXZSBuZWVkIHRv
IG9mZnNldCBvdXIgY2hlY2tzIGZyb20gdHJpYW5nbGUgZWRnZXMgdG8gZW5zdXJlIHdlIGRvbid0
IGZhbGwgb24gYSBzaW5nbGUgdHJpCi0gICAgICAgIC8vIEF2b2lkIG1ha2luZyBhc3N1bXB0aW9u
cyBvZiBkcmF3UXVhZCB3aXRoIGZvdXIgY2hlY2tzIHRvIGNoZWNrIHRoZSBmb3VyIHBvc3NpYmxl
IHRyaQotICAgICAgICAvLyByZWdpb25zCi0gICAgICAgIEVYUEVDVF9QSVhFTF9FUSgobWlkUGl4
ZWxYICsgdmlld3BvcnRTaXplWzBdKSAvIDIsIG1pZFBpeGVsWSwgMjU1LCAyNTUsIDI1NSwgMjU1
KTsKLSAgICAgICAgRVhQRUNUX1BJWEVMX0VRKChtaWRQaXhlbFggKyB2aWV3cG9ydFNpemVbMl0p
IC8gMiwgbWlkUGl4ZWxZLCAyNTUsIDI1NSwgMjU1LCAyNTUpOwotICAgICAgICBFWFBFQ1RfUElY
RUxfRVEobWlkUGl4ZWxYLCAobWlkUGl4ZWxZICsgdmlld3BvcnRTaXplWzFdKSAvIDIsIDI1NSwg
MjU1LCAyNTUsIDI1NSk7Ci0gICAgICAgIEVYUEVDVF9QSVhFTF9FUShtaWRQaXhlbFgsIChtaWRQ
aXhlbFkgKyB2aWV3cG9ydFNpemVbM10pIC8gMiwgMjU1LCAyNTUsIDI1NSwgMjU1KTsKLSAgICB9
Ci0KLSAgICB2b2lkIHJ1blRlc3QoY29uc3QgVGVzdERhdGEgJnRlc3QpCi0gICAgewotICAgICAg
ICAvLyBUT0RPKGdlb2ZmbGFuZyk6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgaXMgYnJva2VuIG9uIEFN
RCBPcGVuR0wKLSAgICAgICAgaWYgKElzQU1EKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKLSAgICAgICAgewotICAgICAg
ICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQgb24gQU1EIE9wZW5HTC4iIDw8IHN0ZDo6
ZW5kbDsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoR0xp
bnQgaSA9IDA7IGkgPCA0OyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIEdMaW50IHR5cGVT
aXplID0gaSArIDE7Ci0gICAgICAgICAgICBzZXR1cFRlc3QodGVzdCwgdHlwZVNpemUpOwotCi0g
ICAgICAgICAgICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICAg
ICAgICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KG1UZXN0QXR0cmliKTsKLSAgICAgICAg
ICAgIGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KG1FeHBlY3RlZEF0dHJpYik7Ci0KLSAgICAg
ICAgICAgIGNoZWNrUGl4ZWxzKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIFNldFVw
KCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0VXAoKTsKLQotICAgICAg
ICBnbENsZWFyQ29sb3IoMCwgMCwgMCwgMCk7Ci0gICAgICAgIGdsQ2xlYXJEZXB0aGYoMC4wKTsK
LSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJ
VCk7Ci0KLSAgICAgICAgZ2xEaXNhYmxlKEdMX0RFUFRIX1RFU1QpOwotCi0gICAgICAgIGdsR2Vu
QnVmZmVycygxLCAmbUJ1ZmZlcik7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotICAgICAgICBn
bERlbGV0ZUJ1ZmZlcnMoMSwgJm1CdWZmZXIpOwotICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwg
Jm1RdWFkQnVmZmVyKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRlYXJEb3duKCk7Ci0gICAgfQot
Ci0gICAgR0x1aW50IGNvbXBpbGVNdWx0aUF0dHJpYlByb2dyYW0oR0xpbnQgYXR0cmliQ291bnQp
Ci0gICAgewotICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzaGFkZXJTdHJlYW07Ci0KLSAgICAg
ICAgc2hhZGVyU3RyZWFtIDw8ICJhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IHBvc2l0aW9uOyIgPDwg
c3RkOjplbmRsOwotICAgICAgICBmb3IgKEdMaW50IGF0dHJpYkluZGV4ID0gMDsgYXR0cmliSW5k
ZXggPCBhdHRyaWJDb3VudDsgKythdHRyaWJJbmRleCkKLSAgICAgICAgewotICAgICAgICAgICAg
c2hhZGVyU3RyZWFtIDw8ICJhdHRyaWJ1dGUgZmxvYXQgYSIgPDwgYXR0cmliSW5kZXggPDwgIjsi
IDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgfQotICAgICAgICBzaGFkZXJTdHJlYW0gPDwgInZhcnlp
bmcgbWVkaXVtcCBmbG9hdCBjb2xvcjsiIDw8IHN0ZDo6ZW5kbAotICAgICAgICAgICAgICAgICAg
ICAgPDwgInZvaWQgbWFpbigpIHsiIDw8IHN0ZDo6ZW5kbAotICAgICAgICAgICAgICAgICAgICAg
PDwgIiAgZ2xfUG9zaXRpb24gPSBwb3NpdGlvbjsiIDw8IHN0ZDo6ZW5kbAotICAgICAgICAgICAg
ICAgICAgICAgPDwgIiAgY29sb3IgPSAwLjA7IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIGZvciAo
R0xpbnQgYXR0cmliSW5kZXggPSAwOyBhdHRyaWJJbmRleCA8IGF0dHJpYkNvdW50OyArK2F0dHJp
YkluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICBzaGFkZXJTdHJlYW0gPDwgIiAgY29sb3Ig
Kz0gYSIgPDwgYXR0cmliSW5kZXggPDwgIjsiIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgfQotICAg
ICAgICBzaGFkZXJTdHJlYW0gPDwgIn0iIDw8IHN0ZDo6ZW5kbDsKLQotICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyB0ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAgICAgU0hBREVS
X1NPVVJDRSh2YXJ5aW5nIG1lZGl1bXAgZmxvYXQgY29sb3I7IHZvaWQgbWFpbih2b2lkKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
bF9GcmFnQ29sb3IgPSB2ZWM0KGNvbG9yLCAwLjAsIDAuMCwgMS4wKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgcmV0dXJuIENvbXBpbGVQcm9ncmFtKHNoYWRlclN0
cmVhbS5zdHIoKSwgdGVzdEZyYWdtZW50U2hhZGVyU291cmNlKTsKLSAgICB9Ci0KLSAgICB2b2lk
IHNldHVwTXVsdGlBdHRyaWJzKEdMdWludCBwcm9ncmFtLCBHTGludCBhdHRyaWJDb3VudCwgR0xm
bG9hdCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKLSAgICAg
ICAgZm9yIChHTGludCBhdHRyaWJJbmRleCA9IDA7IGF0dHJpYkluZGV4IDwgYXR0cmliQ291bnQ7
ICsrYXR0cmliSW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFt
IGF0dHJpYlN0cmVhbTsKLSAgICAgICAgICAgIGF0dHJpYlN0cmVhbSA8PCAiYSIgPDwgYXR0cmli
SW5kZXg7Ci0gICAgICAgICAgICBHTGludCBsb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24o
cHJvZ3JhbSwgYXR0cmliU3RyZWFtLnN0cigpLmNfc3RyKCkpOwotICAgICAgICAgICAgQVNTRVJU
X05FKC0xLCBsb2NhdGlvbik7Ci0gICAgICAgICAgICBnbFZlcnRleEF0dHJpYjFmKGxvY2F0aW9u
LCB2YWx1ZSk7Ci0gICAgICAgICAgICBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheShsb2NhdGlv
bik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIGluaXRCYXNpY1Byb2dyYW0oKQotICAg
IHsKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdFZlcnRleFNoYWRlclNvdXJjZSA9Ci0g
ICAgICAgICAgICAiYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBwb3NpdGlvbjtcbiIKLSAgICAgICAg
ICAgICJhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IHRlc3Q7XG4iCi0gICAgICAgICAgICAiYXR0cmli
dXRlIG1lZGl1bXAgdmVjNCBleHBlY3RlZDtcbiIKLSAgICAgICAgICAgICJ2YXJ5aW5nIG1lZGl1
bXAgdmVjNCBjb2xvcjtcbiIKLSAgICAgICAgICAgICJ2b2lkIG1haW4odm9pZClcbiIKLSAgICAg
ICAgICAgICJ7XG4iCi0gICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247XG4i
Ci0gICAgICAgICAgICAiICAgIHZlYzQgdGhyZXNob2xkID0gbWF4KGFicyhleHBlY3RlZCkgKiAw
LjAxLCAxLjAgLyA2NC4wKTtcbiIKLSAgICAgICAgICAgICIgICAgY29sb3IgPSB2ZWM0KGxlc3NU
aGFuRXF1YWwoYWJzKHRlc3QgLSBleHBlY3RlZCksIHRocmVzaG9sZCkpO1xuIgotICAgICAgICAg
ICAgIn1cbiI7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdEZyYWdtZW50U2hhZGVy
U291cmNlID0KLSAgICAgICAgICAgICJ2YXJ5aW5nIG1lZGl1bXAgdmVjNCBjb2xvcjtcbiIKLSAg
ICAgICAgICAgICJ2b2lkIG1haW4odm9pZClcbiIKLSAgICAgICAgICAgICJ7XG4iCi0gICAgICAg
ICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yO1xuIgotICAgICAgICAgICAgIn1cbiI7Ci0K
LSAgICAgICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh0ZXN0VmVydGV4U2hhZGVyU291cmNl
LCB0ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgICAgICBBU1NFUlRfTkUoMHUsIG1Qcm9n
cmFtKTsKLQotICAgICAgICBtVGVzdEF0dHJpYiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dy
YW0sICJ0ZXN0Iik7Ci0gICAgICAgIEFTU0VSVF9ORSgtMSwgbVRlc3RBdHRyaWIpOwotICAgICAg
ICBtRXhwZWN0ZWRBdHRyaWIgPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiZXhwZWN0
ZWQiKTsKLSAgICAgICAgQVNTRVJUX05FKC0xLCBtRXhwZWN0ZWRBdHRyaWIpOwotCi0gICAgICAg
IGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IHNpemVf
dCBtVmVydGV4Q291bnQgPSAyNDsKLQotICAgIEdMdWludCBtUHJvZ3JhbTsKLSAgICBHTGludCBt
VGVzdEF0dHJpYjsKLSAgICBHTGludCBtRXhwZWN0ZWRBdHRyaWI7Ci0gICAgR0x1aW50IG1CdWZm
ZXI7Ci0gICAgR0x1aW50IG1RdWFkQnVmZmVyOwotfTsKLQotVEVTVF9QKFZlcnRleEF0dHJpYnV0
ZVRlc3QsIFVuc2lnbmVkQnl0ZVVubm9ybWFsaXplZCkKLXsKLSAgICBHTHVieXRlIGlucHV0RGF0
YVttVmVydGV4Q291bnRdID0geyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCAxMjUsIDEyNiwgMTI3
LCAxMjgsIDEyOSwgMjUwLCAyNTEsIDI1MiwgMjUzLCAyNTQsIDI1NSB9OwotICAgIEdMZmxvYXQg
ZXhwZWN0ZWREYXRhW21WZXJ0ZXhDb3VudF07Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
VmVydGV4Q291bnQ7IGkrKykKLSAgICB7Ci0gICAgICAgIGV4cGVjdGVkRGF0YVtpXSA9IGlucHV0
RGF0YVtpXTsKLSAgICB9Ci0KLSAgICBUZXN0RGF0YSBkYXRhKEdMX1VOU0lHTkVEX0JZVEUsIEdM
X0ZBTFNFLCBTb3VyY2U6OklNTUVESUFURSwgaW5wdXREYXRhLCBleHBlY3RlZERhdGEpOwotICAg
IHJ1blRlc3QoZGF0YSk7Ci19Ci0KLVRFU1RfUChWZXJ0ZXhBdHRyaWJ1dGVUZXN0LCBVbnNpZ25l
ZEJ5dGVOb3JtYWxpemVkKQotewotICAgIEdMdWJ5dGUgaW5wdXREYXRhW21WZXJ0ZXhDb3VudF0g
PSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDEyNSwgMTI2LCAxMjcsIDEyOCwgMTI5LCAyNTAs
IDI1MSwgMjUyLCAyNTMsIDI1NCwgMjU1IH07Ci0gICAgR0xmbG9hdCBleHBlY3RlZERhdGFbbVZl
cnRleENvdW50XTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1WZXJ0ZXhDb3VudDsgaSsr
KQotICAgIHsKLSAgICAgICAgZXhwZWN0ZWREYXRhW2ldID0gTm9ybWFsaXplKGlucHV0RGF0YVtp
XSk7Ci0gICAgfQotCi0gICAgVGVzdERhdGEgZGF0YShHTF9VTlNJR05FRF9CWVRFLCBHTF9UUlVF
LCBTb3VyY2U6OklNTUVESUFURSwgaW5wdXREYXRhLCBleHBlY3RlZERhdGEpOwotICAgIHJ1blRl
c3QoZGF0YSk7Ci19Ci0KLVRFU1RfUChWZXJ0ZXhBdHRyaWJ1dGVUZXN0LCBCeXRlVW5ub3JtYWxp
emVkKQotewotICAgIEdMYnl0ZSBpbnB1dERhdGFbbVZlcnRleENvdW50XSA9IHsgMCwgMSwgMiwg
MywgNCwgLTEsIC0yLCAtMywgLTQsIDEyNSwgMTI2LCAxMjcsIC0xMjgsIC0xMjcsIC0xMjYgfTsK
LSAgICBHTGZsb2F0IGV4cGVjdGVkRGF0YVttVmVydGV4Q291bnRdOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbVZlcnRleENvdW50OyBpKyspCi0gICAgewotICAgICAgICBleHBlY3RlZERh
dGFbaV0gPSBpbnB1dERhdGFbaV07Ci0gICAgfQotCi0gICAgVGVzdERhdGEgZGF0YShHTF9CWVRF
LCBHTF9GQUxTRSwgU291cmNlOjpJTU1FRElBVEUsIGlucHV0RGF0YSwgZXhwZWN0ZWREYXRhKTsK
LSAgICBydW5UZXN0KGRhdGEpOwotfQotCi1URVNUX1AoVmVydGV4QXR0cmlidXRlVGVzdCwgQnl0
ZU5vcm1hbGl6ZWQpCi17Ci0gICAgR0xieXRlIGlucHV0RGF0YVttVmVydGV4Q291bnRdID0geyAw
LCAxLCAyLCAzLCA0LCAtMSwgLTIsIC0zLCAtNCwgMTI1LCAxMjYsIDEyNywgLTEyOCwgLTEyNywg
LTEyNiB9OwotICAgIEdMZmxvYXQgZXhwZWN0ZWREYXRhW21WZXJ0ZXhDb3VudF07Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtVmVydGV4Q291bnQ7IGkrKykKLSAgICB7Ci0gICAgICAgIGV4
cGVjdGVkRGF0YVtpXSA9IE5vcm1hbGl6ZShpbnB1dERhdGFbaV0pOwotICAgIH0KLQotICAgIFRl
c3REYXRhIGRhdGEoR0xfQllURSwgR0xfVFJVRSwgU291cmNlOjpJTU1FRElBVEUsIGlucHV0RGF0
YSwgZXhwZWN0ZWREYXRhKTsKLSAgICBydW5UZXN0KGRhdGEpOwotfQotCi1URVNUX1AoVmVydGV4
QXR0cmlidXRlVGVzdCwgVW5zaWduZWRTaG9ydFVubm9ybWFsaXplZCkKLXsKLSAgICBHTHVzaG9y
dCBpbnB1dERhdGFbbVZlcnRleENvdW50XSA9IHsgMCwgMSwgMiwgMywgMjU0LCAyNTUsIDI1Niwg
MzI3NjYsIDMyNzY3LCAzMjc2OCwgNjU1MzMsIDY1NTM0LCA2NTUzNSB9OwotICAgIEdMZmxvYXQg
ZXhwZWN0ZWREYXRhW21WZXJ0ZXhDb3VudF07Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
VmVydGV4Q291bnQ7IGkrKykKLSAgICB7Ci0gICAgICAgIGV4cGVjdGVkRGF0YVtpXSA9IGlucHV0
RGF0YVtpXTsKLSAgICB9Ci0KLSAgICBUZXN0RGF0YSBkYXRhKEdMX1VOU0lHTkVEX1NIT1JULCBH
TF9GQUxTRSwgU291cmNlOjpJTU1FRElBVEUsIGlucHV0RGF0YSwgZXhwZWN0ZWREYXRhKTsKLSAg
ICBydW5UZXN0KGRhdGEpOwotfQotCi1URVNUX1AoVmVydGV4QXR0cmlidXRlVGVzdCwgVW5zaWdu
ZWRTaG9ydE5vcm1hbGl6ZWQpCi17Ci0gICAgR0x1c2hvcnQgaW5wdXREYXRhW21WZXJ0ZXhDb3Vu
dF0gPSB7IDAsIDEsIDIsIDMsIDI1NCwgMjU1LCAyNTYsIDMyNzY2LCAzMjc2NywgMzI3NjgsIDY1
NTMzLCA2NTUzNCwgNjU1MzUgfTsKLSAgICBHTGZsb2F0IGV4cGVjdGVkRGF0YVttVmVydGV4Q291
bnRdOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVZlcnRleENvdW50OyBpKyspCi0gICAg
ewotICAgICAgICBleHBlY3RlZERhdGFbaV0gPSBOb3JtYWxpemUoaW5wdXREYXRhW2ldKTsKLSAg
ICB9Ci0KLSAgICBUZXN0RGF0YSBkYXRhKEdMX1VOU0lHTkVEX1NIT1JULCBHTF9UUlVFLCBTb3Vy
Y2U6OklNTUVESUFURSwgaW5wdXREYXRhLCBleHBlY3RlZERhdGEpOwotICAgIHJ1blRlc3QoZGF0
YSk7Ci19Ci0KLVRFU1RfUChWZXJ0ZXhBdHRyaWJ1dGVUZXN0LCBTaG9ydFVubm9ybWFsaXplZCkK
LXsKLSAgICBHTHNob3J0IGlucHV0RGF0YVttVmVydGV4Q291bnRdID0geyAgMCwgMSwgMiwgMywg
LTEsIC0yLCAtMywgLTQsIDMyNzY2LCAzMjc2NywgLTMyNzY4LCAtMzI3NjcsIC0zMjc2NiB9Owot
ICAgIEdMZmxvYXQgZXhwZWN0ZWREYXRhW21WZXJ0ZXhDb3VudF07Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtVmVydGV4Q291bnQ7IGkrKykKLSAgICB7Ci0gICAgICAgIGV4cGVjdGVkRGF0
YVtpXSA9IGlucHV0RGF0YVtpXTsKLSAgICB9Ci0KLSAgICBUZXN0RGF0YSBkYXRhKEdMX1NIT1JU
LCBHTF9GQUxTRSwgU291cmNlOjpJTU1FRElBVEUsIGlucHV0RGF0YSwgZXhwZWN0ZWREYXRhKTsK
LSAgICBydW5UZXN0KGRhdGEpOwotfQotCi1URVNUX1AoVmVydGV4QXR0cmlidXRlVGVzdCwgU2hv
cnROb3JtYWxpemVkKQotewotICAgIEdMc2hvcnQgaW5wdXREYXRhW21WZXJ0ZXhDb3VudF0gPSB7
ICAwLCAxLCAyLCAzLCAtMSwgLTIsIC0zLCAtNCwgMzI3NjYsIDMyNzY3LCAtMzI3NjgsIC0zMjc2
NywgLTMyNzY2IH07Ci0gICAgR0xmbG9hdCBleHBlY3RlZERhdGFbbVZlcnRleENvdW50XTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1WZXJ0ZXhDb3VudDsgaSsrKQotICAgIHsKLSAgICAg
ICAgZXhwZWN0ZWREYXRhW2ldID0gTm9ybWFsaXplKGlucHV0RGF0YVtpXSk7Ci0gICAgfQotCi0g
ICAgVGVzdERhdGEgZGF0YShHTF9TSE9SVCwgR0xfVFJVRSwgU291cmNlOjpJTU1FRElBVEUsIGlu
cHV0RGF0YSwgZXhwZWN0ZWREYXRhKTsKLSAgICBydW5UZXN0KGRhdGEpOwotfQotCi1jbGFzcyBW
ZXJ0ZXhBdHRyaWJ1dGVUZXN0RVMzIDogcHVibGljIFZlcnRleEF0dHJpYnV0ZVRlc3QKLXsKLSAg
cHJvdGVjdGVkOgotICAgIFZlcnRleEF0dHJpYnV0ZVRlc3RFUzMoKSB7fQotfTsKLQotVEVTVF9Q
KFZlcnRleEF0dHJpYnV0ZVRlc3RFUzMsIEludFVubm9ybWFsaXplZCkKLXsKLSAgICBHTGludCBs
byAgICAgICAgICAgICAgICAgICAgICA9IHN0ZDo6bnVtZXJpY19saW1pdHM8R0xpbnQ+OjptaW4o
KTsKLSAgICBHTGludCBoaSAgICAgICAgICAgICAgICAgICAgICA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8R0xpbnQ+OjptYXgoKTsKLSAgICBHTGludCBpbnB1dERhdGFbbVZlcnRleENvdW50XSA9IHsw
LCAxLCAyLCAzLCAtMSwgLTIsIC0zLCAtNCwgLTEsIGhpLCBoaSAtIDEsIGxvLCBsbyArIDF9Owot
ICAgIEdMZmxvYXQgZXhwZWN0ZWREYXRhW21WZXJ0ZXhDb3VudF07Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtVmVydGV4Q291bnQ7IGkrKykKLSAgICB7Ci0gICAgICAgIGV4cGVjdGVkRGF0
YVtpXSA9IHN0YXRpY19jYXN0PEdMZmxvYXQ+KGlucHV0RGF0YVtpXSk7Ci0gICAgfQotCi0gICAg
VGVzdERhdGEgZGF0YShHTF9JTlQsIEdMX0ZBTFNFLCBTb3VyY2U6OkJVRkZFUiwgaW5wdXREYXRh
LCBleHBlY3RlZERhdGEpOwotICAgIHJ1blRlc3QoZGF0YSk7Ci19Ci0KLVRFU1RfUChWZXJ0ZXhB
dHRyaWJ1dGVUZXN0RVMzLCBJbnROb3JtYWxpemVkKQotewotICAgIEdMaW50IGxvICAgICAgICAg
ICAgICAgICAgICAgID0gc3RkOjpudW1lcmljX2xpbWl0czxHTGludD46Om1pbigpOwotICAgIEdM
aW50IGhpICAgICAgICAgICAgICAgICAgICAgID0gc3RkOjpudW1lcmljX2xpbWl0czxHTGludD46
Om1heCgpOwotICAgIEdMaW50IGlucHV0RGF0YVttVmVydGV4Q291bnRdID0gezAsIDEsIDIsIDMs
IC0xLCAtMiwgLTMsIC00LCAtMSwgaGksIGhpIC0gMSwgbG8sIGxvICsgMX07Ci0gICAgR0xmbG9h
dCBleHBlY3RlZERhdGFbbVZlcnRleENvdW50XTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG1WZXJ0ZXhDb3VudDsgaSsrKQotICAgIHsKLSAgICAgICAgZXhwZWN0ZWREYXRhW2ldID0gTm9y
bWFsaXplKGlucHV0RGF0YVtpXSk7Ci0gICAgfQotCi0gICAgVGVzdERhdGEgZGF0YShHTF9JTlQs
IEdMX1RSVUUsIFNvdXJjZTo6QlVGRkVSLCBpbnB1dERhdGEsIGV4cGVjdGVkRGF0YSk7Ci0gICAg
cnVuVGVzdChkYXRhKTsKLX0KLQotVEVTVF9QKFZlcnRleEF0dHJpYnV0ZVRlc3RFUzMsIFVuc2ln
bmVkSW50VW5ub3JtYWxpemVkKQotewotICAgIEdMdWludCBtaWQgICAgICAgICAgICAgICAgICAg
ICA9IHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCkgPj4gMTsKLSAgICBHTHVpbnQg
aGkgICAgICAgICAgICAgICAgICAgICAgPSBzdGQ6Om51bWVyaWNfbGltaXRzPEdMdWludD46Om1h
eCgpOwotICAgIEdMdWludCBpbnB1dERhdGFbbVZlcnRleENvdW50XSA9IHswLCAgICAgICAxLCAg
IDIsICAgICAgIDMsICAgICAgMjU0LCAgICAyNTUsIDI1NiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbWlkIC0gMSwgbWlkLCBtaWQgKyAxLCBoaSAtIDIsIGhpIC0gMSwg
aGl9OwotICAgIEdMZmxvYXQgZXhwZWN0ZWREYXRhW21WZXJ0ZXhDb3VudF07Ci0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtVmVydGV4Q291bnQ7IGkrKykKLSAgICB7Ci0gICAgICAgIGV4cGVj
dGVkRGF0YVtpXSA9IHN0YXRpY19jYXN0PEdMZmxvYXQ+KGlucHV0RGF0YVtpXSk7Ci0gICAgfQot
Ci0gICAgVGVzdERhdGEgZGF0YShHTF9VTlNJR05FRF9JTlQsIEdMX0ZBTFNFLCBTb3VyY2U6OkJV
RkZFUiwgaW5wdXREYXRhLCBleHBlY3RlZERhdGEpOwotICAgIHJ1blRlc3QoZGF0YSk7Ci19Ci0K
LVRFU1RfUChWZXJ0ZXhBdHRyaWJ1dGVUZXN0RVMzLCBVbnNpZ25lZEludE5vcm1hbGl6ZWQpCi17
Ci0gICAgR0x1aW50IG1pZCAgICAgICAgICAgICAgICAgICAgID0gc3RkOjpudW1lcmljX2xpbWl0
czxHTHVpbnQ+OjptYXgoKSA+PiAxOwotICAgIEdMdWludCBoaSAgICAgICAgICAgICAgICAgICAg
ICA9IHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1aW50Pjo6bWF4KCk7Ci0gICAgR0x1aW50IGlucHV0
RGF0YVttVmVydGV4Q291bnRdID0gezAsICAgICAgIDEsICAgMiwgICAgICAgMywgICAgICAyNTQs
ICAgIDI1NSwgMjU2LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWQg
LSAxLCBtaWQsIG1pZCArIDEsIGhpIC0gMiwgaGkgLSAxLCBoaX07Ci0gICAgR0xmbG9hdCBleHBl
Y3RlZERhdGFbbVZlcnRleENvdW50XTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1WZXJ0
ZXhDb3VudDsgaSsrKQotICAgIHsKLSAgICAgICAgZXhwZWN0ZWREYXRhW2ldID0gTm9ybWFsaXpl
KGlucHV0RGF0YVtpXSk7Ci0gICAgfQotCi0gICAgVGVzdERhdGEgZGF0YShHTF9VTlNJR05FRF9J
TlQsIEdMX1RSVUUsIFNvdXJjZTo6QlVGRkVSLCBpbnB1dERhdGEsIGV4cGVjdGVkRGF0YSk7Ci0g
ICAgcnVuVGVzdChkYXRhKTsKLX0KLQotLy8gVmFsaWRhdGUgdGhhdCB3ZSBjYW4gc3VwcG9ydCBH
TF9NQVhfQVRUUklCUyBhdHRyaWJzCi1URVNUX1AoVmVydGV4QXR0cmlidXRlVGVzdCwgTWF4QXR0
cmlicykKLXsKLSAgICAvLyBUT0RPKGptYWRpbGwpOiBGaWd1cmUgb3V0IHdoeSB3ZSBnZXQgdGhp
cyBlcnJvciBvbiBBTUQvT3BlbkdMIGFuZCBJbnRlbC4KLSAgICBpZiAoKElzSW50ZWwoKSB8fCBJ
c0FNRCgpKSAmJiBHZXRQYXJhbSgpLmdldFJlbmRlcmVyKCkgPT0gRUdMX1BMQVRGT1JNX0FOR0xF
X1RZUEVfT1BFTkdMX0FOR0xFKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNr
aXBwZWQgb24gSW50ZWwgYW5kIEFNRC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIEdMaW50IG1heEF0dHJpYnM7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhf
VkVSVEVYX0FUVFJJQlMsICZtYXhBdHRyaWJzKTsKLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsK
LQotICAgIC8vIFJlc2VydmUgb25lIGF0dHJpYiBmb3IgcG9zaXRpb24KLSAgICBHTGludCBkcmF3
QXR0cmlicyA9IG1heEF0dHJpYnMgLSAxOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBjb21waWxl
TXVsdGlBdHRyaWJQcm9ncmFtKGRyYXdBdHRyaWJzKTsKLSAgICBBU1NFUlRfTkUoMHUsIHByb2dy
YW0pOwotCi0gICAgc2V0dXBNdWx0aUF0dHJpYnMocHJvZ3JhbSwgZHJhd0F0dHJpYnMsIDAuNWYg
LyBzdGF0aWNfY2FzdDxmbG9hdD4oZHJhd0F0dHJpYnMpKTsKLSAgICBkcmF3UXVhZChwcm9ncmFt
LCAicG9zaXRpb24iLCAwLjVmKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgIEVY
UEVDVF9QSVhFTF9ORUFSKDAsIDAsIDEyOCwgMCwgMCwgMjU1LCAxKTsKLX0KLQotLy8gVmFsaWRh
dGUgdGhhdCB3ZSBjYW5ub3Qgc3VwcG9ydCBHTF9NQVhfQVRUUklCUysxIGF0dHJpYnMKLVRFU1Rf
UChWZXJ0ZXhBdHRyaWJ1dGVUZXN0LCBNYXhBdHRyaWJzUGx1c09uZSkKLXsKLSAgICAvLyBUT0RP
KGptYWRpbGwpOiBGaWd1cmUgb3V0IHdoeSB3ZSBnZXQgdGhpcyBlcnJvciBvbiBBTUQvRVMyL09w
ZW5HTAotICAgIGlmIChJc0FNRCgpICYmIEdldFBhcmFtKCkgPT0gRVMyX09QRU5HTCgpKQotICAg
IHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIEFNRC9FUzIvT3BlbkdM
IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBHTGludCBtYXhB
dHRyaWJzOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZFUlRFWF9BVFRSSUJTLCAmbWF4QXR0
cmlicyk7Ci0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICAvLyBFeGNlZWQgYXR0cmli
IGNvdW50IGJ5IG9uZSAoY291bnRpbmcgcG9zaXRpb24pCi0gICAgR0xpbnQgZHJhd0F0dHJpYnMg
PSBtYXhBdHRyaWJzOwotCi0gICAgR0x1aW50IHByb2dyYW0gPSBjb21waWxlTXVsdGlBdHRyaWJQ
cm9ncmFtKGRyYXdBdHRyaWJzKTsKLSAgICBBU1NFUlRfRVEoMHUsIHByb2dyYW0pOwotfQotCi0v
LyBTaW1wbGUgdGVzdCBmb3Igd2hlbiB3ZSB1c2UgZ2xCaW5kQXR0cmliTG9jYXRpb24KLVRFU1Rf
UChWZXJ0ZXhBdHRyaWJ1dGVUZXN0LCBTaW1wbGVCaW5kQXR0cmliTG9jYXRpb24pCi17Ci0gICAg
Ly8gVE9ETyhqbWFkaWxsKTogRmlndXJlIG91dCB3aHkgdGhpcyBmYWlscyBvbiBJbnRlbC4KLSAg
ICBpZiAoSXNJbnRlbCgpICYmIEdldFBhcmFtKCkuZ2V0UmVuZGVyZXIoKSA9PSBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEUpCi0gICAgewotICAgICAgICBzdGQ6OmNvdXQgPDwg
IlRlc3Qgc2tpcHBlZCBvbiBJbnRlbC4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIC8vIFJlLXVzZSB0aGUgbXVsdGktYXR0cmliIHByb2dyYW0sIGJpbmRpbmcg
YXR0cmlidXRlIDAKLSAgICBHTHVpbnQgcHJvZ3JhbSA9IGNvbXBpbGVNdWx0aUF0dHJpYlByb2dy
YW0oMSk7Ci0gICAgZ2xCaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgMiwgInBvc2l0aW9uIik7
Ci0gICAgZ2xCaW5kQXR0cmliTG9jYXRpb24ocHJvZ3JhbSwgMywgImEwIik7Ci0gICAgZ2xMaW5r
UHJvZ3JhbShwcm9ncmFtKTsKLQotICAgIC8vIFNldHVwIGFuZCBkcmF3IHRoZSBxdWFkCi0gICAg
c2V0dXBNdWx0aUF0dHJpYnMocHJvZ3JhbSwgMSwgMC41Zik7Ci0gICAgZHJhd1F1YWQocHJvZ3Jh
bSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgRVhQ
RUNUX1BJWEVMX05FQVIoMCwgMCwgMTI4LCAwLCAwLCAyNTUsIDEpOwotfQotCi0vLyBWZXJpZnkg
dGhhdCBkcmF3aW5nIHdpdGggYSBsYXJnZSBvdXQtb2YtcmFuZ2Ugb2Zmc2V0IGdlbmVyYXRlcyBJ
TlZBTElEX09QRVJBVElPTi4KLVRFU1RfUChWZXJ0ZXhBdHRyaWJ1dGVUZXN0LCBEcmF3QXJyYXlz
QnVmZmVyVG9vU21hbGwpCi17Ci0gICAgR0xmbG9hdCBpbnB1dERhdGFbbVZlcnRleENvdW50XTsK
LSAgICBHTGZsb2F0IGV4cGVjdGVkRGF0YVttVmVydGV4Q291bnRdOwotICAgIGZvciAoc2l6ZV90
IGNvdW50ID0gMDsgY291bnQgPCBtVmVydGV4Q291bnQ7ICsrY291bnQpCi0gICAgewotICAgICAg
ICBpbnB1dERhdGFbY291bnRdICAgID0gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oY291bnQpOwotICAg
ICAgICBleHBlY3RlZERhdGFbY291bnRdID0gaW5wdXREYXRhW2NvdW50XTsKLSAgICB9Ci0KLSAg
ICBUZXN0RGF0YSBkYXRhKEdMX0ZMT0FULCBHTF9GQUxTRSwgU291cmNlOjpCVUZGRVIsIGlucHV0
RGF0YSwgZXhwZWN0ZWREYXRhKTsKLSAgICBkYXRhLmJ1ZmZlck9mZnNldCA9IG1WZXJ0ZXhDb3Vu
dCAqIFR5cGVTdHJpZGUoR0xfRkxPQVQpOwotCi0gICAgc2V0dXBUZXN0KGRhdGEsIDEpOwotICAg
IGRyYXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICBFWFBFQ1RfR0xfRVJS
T1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0vLyBWZXJpZnkgdGhhdCBpbmRleCBkcmF3
IHdpdGggYW4gb3V0LW9mLXJhbmdlIG9mZnNldCBnZW5lcmF0ZXMgSU5WQUxJRF9PUEVSQVRJT04u
Ci1URVNUX1AoVmVydGV4QXR0cmlidXRlVGVzdCwgRHJhd0VsZW1lbnRzQnVmZmVyVG9vU21hbGwp
Ci17Ci0gICAgR0xmbG9hdCBpbnB1dERhdGFbbVZlcnRleENvdW50XTsKLSAgICBHTGZsb2F0IGV4
cGVjdGVkRGF0YVttVmVydGV4Q291bnRdOwotICAgIGZvciAoc2l6ZV90IGNvdW50ID0gMDsgY291
bnQgPCBtVmVydGV4Q291bnQ7ICsrY291bnQpCi0gICAgewotICAgICAgICBpbnB1dERhdGFbY291
bnRdICAgID0gc3RhdGljX2Nhc3Q8R0xmbG9hdD4oY291bnQpOwotICAgICAgICBleHBlY3RlZERh
dGFbY291bnRdID0gaW5wdXREYXRhW2NvdW50XTsKLSAgICB9Ci0KLSAgICBUZXN0RGF0YSBkYXRh
KEdMX0ZMT0FULCBHTF9GQUxTRSwgU291cmNlOjpCVUZGRVIsIGlucHV0RGF0YSwgZXhwZWN0ZWRE
YXRhKTsKLSAgICBkYXRhLmJ1ZmZlck9mZnNldCA9IChtVmVydGV4Q291bnQgLSAzKSAqIFR5cGVT
dHJpZGUoR0xfRkxPQVQpOwotCi0gICAgc2V0dXBUZXN0KGRhdGEsIDEpOwotICAgIGRyYXdJbmRl
eGVkUXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0gICAgRVhQRUNUX0dMX0VSUk9S
KEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKLX0KLQotLy8gVmVyaWZ5IHRoYXQgdXNpbmcgYSBkaWZm
ZXJlbnQgc3RhcnQgdmVydGV4IGRvZXNuJ3QgbWVzcyB1cCB0aGUgZHJhdy4KLVRFU1RfUChWZXJ0
ZXhBdHRyaWJ1dGVUZXN0LCBEcmF3QXJyYXlzV2l0aEJ1ZmZlck9mZnNldCkKLXsKLSAgICAvLyBU
T0RPKGptYWRpbGwpOiBEaWFnbm9zZSB0aGlzIGZhaWx1cmUuCi0gICAgaWYgKElzRDNEMTFfRkw5
MygpKQotICAgIHsKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IGRpc2FibGVkIG9uIEQzRDEx
IEZMIDlfMyIgPDwgc3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8g
VE9ETyhnZW9mZmxhbmcpOiBGaWd1cmUgb3V0IHdoeSB0aGlzIGlzIGJyb2tlbiBvbiBBTUQgT3Bl
bkdMCi0gICAgaWYgKElzQU1EKCkgJiYgZ2V0UGxhdGZvcm1SZW5kZXJlcigpID09IEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSkKLSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8
PCAiVGVzdCBza2lwcGVkIG9uIEFNRCBPcGVuR0wuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpbml0QmFzaWNQcm9ncmFtKCk7Ci0gICAgZ2xVc2VQcm9ncmFt
KG1Qcm9ncmFtKTsKLQotICAgIEdMZmxvYXQgaW5wdXREYXRhW21WZXJ0ZXhDb3VudF07Ci0gICAg
R0xmbG9hdCBleHBlY3RlZERhdGFbbVZlcnRleENvdW50XTsKLSAgICBmb3IgKHNpemVfdCBjb3Vu
dCA9IDA7IGNvdW50IDwgbVZlcnRleENvdW50OyArK2NvdW50KQotICAgIHsKLSAgICAgICAgaW5w
dXREYXRhW2NvdW50XSAgICA9IHN0YXRpY19jYXN0PEdMZmxvYXQ+KGNvdW50KTsKLSAgICAgICAg
ZXhwZWN0ZWREYXRhW2NvdW50XSA9IGlucHV0RGF0YVtjb3VudF07Ci0gICAgfQotCi0gICAgYXV0
byBxdWFkVmVydGljZXMgICAgICAgID0gR2V0UXVhZFZlcnRpY2VzKCk7Ci0gICAgR0xzaXplaSBx
dWFkVmVydGljZXNTaXplID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4ocXVhZFZlcnRpY2VzLnNpemUo
KSAqIHNpemVvZihxdWFkVmVydGljZXNbMF0pKTsKLQotICAgIGdsR2VuQnVmZmVycygxLCAmbVF1
YWRCdWZmZXIpOwotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1RdWFkQnVmZmVy
KTsKLSAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBxdWFkVmVydGljZXNTaXplICsg
c2l6ZW9mKFZlY3RvcjMpLCBudWxscHRyLCBHTF9TVEFUSUNfRFJBVyk7Ci0gICAgZ2xCdWZmZXJT
dWJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgMCwgcXVhZFZlcnRpY2VzU2l6ZSwgcXVhZFZlcnRpY2Vz
LmRhdGEoKSk7Ci0KLSAgICBHTGludCBwb3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2Nh
dGlvbihtUHJvZ3JhbSwgInBvc2l0aW9uIik7Ci0gICAgQVNTRVJUX05FKC0xLCBwb3NpdGlvbkxv
Y2F0aW9uKTsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25Mb2NhdGlvbiwgMywg
R0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBudWxscHRyKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOwotCi0gICAgR0xzaXplaSBkYXRhU2l6ZSA9IG1WZXJ0
ZXhDb3VudCAqIFR5cGVTdHJpZGUoR0xfRkxPQVQpOwotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJB
WV9CVUZGRVIsIG1CdWZmZXIpOwotICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIGRh
dGFTaXplICsgVHlwZVN0cmlkZShHTF9GTE9BVCksIG51bGxwdHIsIEdMX1NUQVRJQ19EUkFXKTsK
LSAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfQVJSQVlfQlVGRkVSLCAwLCBkYXRhU2l6ZSwgaW5wdXRE
YXRhKTsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobVRlc3RBdHRyaWIsIDEsIEdMX0ZMT0FU
LCBHTF9GQUxTRSwgMCwgbnVsbHB0cik7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSht
VGVzdEF0dHJpYik7Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCAwKTsKLSAg
ICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobUV4cGVjdGVkQXR0cmliLCAxLCBHTF9GTE9BVCwgR0xf
RkFMU0UsIDAsIGV4cGVjdGVkRGF0YSk7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSht
RXhwZWN0ZWRBdHRyaWIpOwotCi0gICAgLy8gVmVydGV4IGRyYXcgd2l0aCBubyBzdGFydCB2ZXJ0
ZXggb2Zmc2V0IChzZWNvbmQgYXJndW1lbnQgaXMgemVybykuCi0gICAgZ2xEcmF3QXJyYXlzKEdM
X1RSSUFOR0xFUywgMCwgNik7Ci0gICAgY2hlY2tQaXhlbHMoKTsKLQotICAgIC8vIERyYXcgb2Zm
c2V0IGJ5IG9uZSB2ZXJ0ZXguCi0gICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMSwgNik7
Ci0gICAgY2hlY2tQaXhlbHMoKTsKLQotICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotfQotCi1j
bGFzcyBWZXJ0ZXhBdHRyaWJ1dGVDYWNoaW5nVGVzdCA6IHB1YmxpYyBWZXJ0ZXhBdHRyaWJ1dGVU
ZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBWZXJ0ZXhBdHRyaWJ1dGVDYWNoaW5nVGVzdCgpIHt9
Ci0KLSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGU7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RGVzdFQ+Ci0gICAgc3RhdGljIHN0ZDo6dmVjdG9yPEdMZmxvYXQ+IEdldEV4cGVjdGVkRGF0YShj
b25zdCBzdGQ6OnZlY3RvcjxHTHVieXRlPiAmc3JjRGF0YSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBhdHRyaWJUeXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xib29sZWFuIG5vcm1hbGl6
ZWQpOwotCi0gICAgdm9pZCBpbml0RG91YmxlQXR0cmliUHJvZ3JhbSgpCi0gICAgewotICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyB0ZXN0VmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgICAg
ICJhdHRyaWJ1dGUgbWVkaXVtcCB2ZWM0IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgImF0dHJp
YnV0ZSBtZWRpdW1wIHZlYzQgdGVzdDtcbiIKLSAgICAgICAgICAgICJhdHRyaWJ1dGUgbWVkaXVt
cCB2ZWM0IGV4cGVjdGVkO1xuIgotICAgICAgICAgICAgImF0dHJpYnV0ZSBtZWRpdW1wIHZlYzQg
dGVzdDI7XG4iCi0gICAgICAgICAgICAiYXR0cmlidXRlIG1lZGl1bXAgdmVjNCBleHBlY3RlZDI7
XG4iCi0gICAgICAgICAgICAidmFyeWluZyBtZWRpdW1wIHZlYzQgY29sb3I7XG4iCi0gICAgICAg
ICAgICAidm9pZCBtYWluKHZvaWQpXG4iCi0gICAgICAgICAgICAie1xuIgotICAgICAgICAgICAg
IiAgICBnbF9Qb3NpdGlvbiA9IHBvc2l0aW9uO1xuIgotICAgICAgICAgICAgIiAgICB2ZWM0IHRo
cmVzaG9sZCA9IG1heChhYnMoZXhwZWN0ZWQpICogMC4wMSwgMS4wIC8gNjQuMCk7XG4iCi0gICAg
ICAgICAgICAiICAgIGNvbG9yID0gdmVjNChsZXNzVGhhbkVxdWFsKGFicyh0ZXN0IC0gZXhwZWN0
ZWQpLCB0aHJlc2hvbGQpKTtcbiIKLSAgICAgICAgICAgICIgICAgdmVjNCB0aHJlc2hvbGQyID0g
bWF4KGFicyhleHBlY3RlZDIpICogMC4wMSwgMS4wIC8gNjQuMCk7XG4iCi0gICAgICAgICAgICAi
ICAgIGNvbG9yICs9IHZlYzQobGVzc1RoYW5FcXVhbChhYnModGVzdDIgLSBleHBlY3RlZDIpLCB0
aHJlc2hvbGQyKSk7XG4iCi0gICAgICAgICAgICAifVxuIjsKLQotICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyB0ZXN0RnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAgICAgICAgInZhcnlpbmcg
bWVkaXVtcCB2ZWM0IGNvbG9yO1xuIgotICAgICAgICAgICAgInZvaWQgbWFpbih2b2lkKVxuIgot
ICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gY29sb3I7
XG4iCi0gICAgICAgICAgICAifVxuIjsKLQotICAgICAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9n
cmFtKHRlc3RWZXJ0ZXhTaGFkZXJTb3VyY2UsIHRlc3RGcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0g
ICAgICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotCi0gICAgICAgIG1UZXN0QXR0cmliID0g
Z2xHZXRBdHRyaWJMb2NhdGlvbihtUHJvZ3JhbSwgInRlc3QiKTsKLSAgICAgICAgQVNTRVJUX05F
KC0xLCBtVGVzdEF0dHJpYik7Ci0gICAgICAgIG1FeHBlY3RlZEF0dHJpYiA9IGdsR2V0QXR0cmli
TG9jYXRpb24obVByb2dyYW0sICJleHBlY3RlZCIpOwotICAgICAgICBBU1NFUlRfTkUoLTEsIG1F
eHBlY3RlZEF0dHJpYik7Ci0KLSAgICAgICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICB9
Ci0KLSAgICBzdHJ1Y3QgQXR0cmliRGF0YQotICAgIHsKLSAgICAgICAgQXR0cmliRGF0YShHTGVu
dW0gdHlwZUluLCBHTGludCBzaXplSW4sIEdMYm9vbGVhbiBub3JtYWxpemVkSW4sIEdMc2l6ZWkg
c3RyaWRlSW4pOwotCi0gICAgICAgIEdMZW51bSB0eXBlOwotICAgICAgICBHTGludCBzaXplOwot
ICAgICAgICBHTGJvb2xlYW4gbm9ybWFsaXplZDsKLSAgICAgICAgR0xzaXplaSBzdHJpZGU7Ci0g
ICAgfTsKLQotICAgIHN0ZDo6dmVjdG9yPEF0dHJpYkRhdGE+IG1UZXN0RGF0YTsKLSAgICBzdGQ6
Om1hcDxHTGVudW0sIHN0ZDo6dmVjdG9yPEdMZmxvYXQ+PiBtRXhwZWN0ZWREYXRhOwotICAgIHN0
ZDo6bWFwPEdMZW51bSwgc3RkOjp2ZWN0b3I8R0xmbG9hdD4+IG1Ob3JtRXhwZWN0ZWREYXRhOwot
fTsKLQotVmVydGV4QXR0cmlidXRlQ2FjaGluZ1Rlc3Q6OkF0dHJpYkRhdGE6OkF0dHJpYkRhdGEo
R0xlbnVtIHR5cGVJbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdMaW50IHNpemVJbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdMYm9vbGVhbiBub3JtYWxpemVkSW4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHNpemVpIHN0cmlkZUluKQot
ICAgIDogdHlwZSh0eXBlSW4pLCBzaXplKHNpemVJbiksIG5vcm1hbGl6ZWQobm9ybWFsaXplZElu
KSwgc3RyaWRlKHN0cmlkZUluKQotewotfQotCi0vLyBzdGF0aWMKLXRlbXBsYXRlIDx0eXBlbmFt
ZSBEZXN0VD4KLXN0ZDo6dmVjdG9yPEdMZmxvYXQ+IFZlcnRleEF0dHJpYnV0ZUNhY2hpbmdUZXN0
OjpHZXRFeHBlY3RlZERhdGEoCi0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8R0x1Ynl0ZT4gJnNyY0Rh
dGEsCi0gICAgR0xlbnVtIGF0dHJpYlR5cGUsCi0gICAgR0xib29sZWFuIG5vcm1hbGl6ZWQpCi17
Ci0gICAgc3RkOjp2ZWN0b3I8R0xmbG9hdD4gZXhwZWN0ZWREYXRhOwotCi0gICAgY29uc3QgRGVz
dFQgKnR5cGVkU3JjUHRyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBEZXN0VCAqPihzcmNEYXRh
LmRhdGEoKSk7Ci0gICAgc2l6ZV90IGl0ZXJhdGlvbnMgICAgICAgID0gc3JjRGF0YS5zaXplKCkg
LyBUeXBlU3RyaWRlKGF0dHJpYlR5cGUpOwotCi0gICAgaWYgKG5vcm1hbGl6ZWQpCi0gICAgewot
ICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgaXRlcmF0aW9uczsgKytpbmRl
eCkKLSAgICAgICAgewotICAgICAgICAgICAgZXhwZWN0ZWREYXRhLnB1c2hfYmFjayhOb3JtYWxp
emUodHlwZWRTcmNQdHJbaW5kZXhdKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAg
IHsKLSAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGl0ZXJhdGlvbnM7ICsr
aW5kZXgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGV4cGVjdGVkRGF0YS5wdXNoX2JhY2soc3Rh
dGljX2Nhc3Q8R0xmbG9hdD4odHlwZWRTcmNQdHJbaW5kZXhdKSk7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICByZXR1cm4gZXhwZWN0ZWREYXRhOwotfQotCi12b2lkIFZlcnRleEF0dHJpYnV0ZUNh
Y2hpbmdUZXN0OjpTZXRVcCgpCi17Ci0gICAgVmVydGV4QXR0cmlidXRlVGVzdDo6U2V0VXAoKTsK
LQotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXIpOwotCi0gICAgc3Rk
Ojp2ZWN0b3I8R0x1Ynl0ZT4gc3JjRGF0YTsKLSAgICBmb3IgKHNpemVfdCBjb3VudCA9IDA7IGNv
dW50IDwgNDsgKytjb3VudCkKLSAgICB7Ci0gICAgICAgIGZvciAoR0x1Ynl0ZSBpID0gMDsgaSA8
IHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1Ynl0ZT46Om1heCgpOyArK2kpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHNyY0RhdGEucHVzaF9iYWNrKGkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
Z2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc3JjRGF0YS5zaXplKCksIHNyY0RhdGEuZGF0
YSgpLCBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICBHTGludCB2aWV3cG9ydFNpemVbNF07Ci0gICAg
Z2xHZXRJbnRlZ2VydihHTF9WSUVXUE9SVCwgdmlld3BvcnRTaXplKTsKLQotICAgIHN0ZDo6dmVj
dG9yPEdMZW51bT4gYXR0cmliVHlwZXM7Ci0gICAgYXR0cmliVHlwZXMucHVzaF9iYWNrKEdMX0JZ
VEUpOwotICAgIGF0dHJpYlR5cGVzLnB1c2hfYmFjayhHTF9VTlNJR05FRF9CWVRFKTsKLSAgICBh
dHRyaWJUeXBlcy5wdXNoX2JhY2soR0xfU0hPUlQpOwotICAgIGF0dHJpYlR5cGVzLnB1c2hfYmFj
ayhHTF9VTlNJR05FRF9TSE9SVCk7Ci0KLSAgICBpZiAoZ2V0Q2xpZW50TWFqb3JWZXJzaW9uKCkg
Pj0gMykKLSAgICB7Ci0gICAgICAgIGF0dHJpYlR5cGVzLnB1c2hfYmFjayhHTF9JTlQpOwotICAg
ICAgICBhdHRyaWJUeXBlcy5wdXNoX2JhY2soR0xfVU5TSUdORURfSU5UKTsKLSAgICB9Ci0KLSAg
ICBjb25zdCBHTGludCBtYXhTaXplICAgICA9IDQ7Ci0gICAgY29uc3QgR0xzaXplaSBtYXhTdHJp
ZGUgPSA0OwotCi0gICAgZm9yIChHTGVudW0gYXR0cmliVHlwZSA6IGF0dHJpYlR5cGVzKQotICAg
IHsKLSAgICAgICAgZm9yIChHTGludCBhdHRyaWJTaXplID0gMTsgYXR0cmliU2l6ZSA8PSBtYXhT
aXplOyArK2F0dHJpYlNpemUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAoR0xzaXplaSBz
dHJpZGUgPSAxOyBzdHJpZGUgPD0gbWF4U3RyaWRlOyArK3N0cmlkZSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBtVGVzdERhdGEucHVzaF9iYWNrKEF0dHJpYkRhdGEoYXR0cmliVHlw
ZSwgYXR0cmliU2l6ZSwgR0xfRkFMU0UsIHN0cmlkZSkpOwotICAgICAgICAgICAgICAgIGlmIChh
dHRyaWJUeXBlICE9IEdMX0ZMT0FUKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgbVRlc3REYXRhLnB1c2hfYmFjayhBdHRyaWJEYXRhKGF0dHJpYlR5cGUsIGF0dHJpYlNp
emUsIEdMX1RSVUUsIHN0cmlkZSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLQotICAgIG1FeHBlY3RlZERhdGFbR0xfQllURV0gICAgICAgICAg
PSBHZXRFeHBlY3RlZERhdGE8R0xieXRlPihzcmNEYXRhLCBHTF9CWVRFLCBHTF9GQUxTRSk7Ci0g
ICAgbUV4cGVjdGVkRGF0YVtHTF9VTlNJR05FRF9CWVRFXSA9IEdldEV4cGVjdGVkRGF0YTxHTHVi
eXRlPihzcmNEYXRhLCBHTF9VTlNJR05FRF9CWVRFLCBHTF9GQUxTRSk7Ci0gICAgbUV4cGVjdGVk
RGF0YVtHTF9TSE9SVF0gPSBHZXRFeHBlY3RlZERhdGE8R0xzaG9ydD4oc3JjRGF0YSwgR0xfU0hP
UlQsIEdMX0ZBTFNFKTsKLSAgICBtRXhwZWN0ZWREYXRhW0dMX1VOU0lHTkVEX1NIT1JUXSA9Ci0g
ICAgICAgIEdldEV4cGVjdGVkRGF0YTxHTHVzaG9ydD4oc3JjRGF0YSwgR0xfVU5TSUdORURfU0hP
UlQsIEdMX0ZBTFNFKTsKLSAgICBtRXhwZWN0ZWREYXRhW0dMX0lOVF0gICAgICAgICAgPSBHZXRF
eHBlY3RlZERhdGE8R0xpbnQ+KHNyY0RhdGEsIEdMX0lOVCwgR0xfRkFMU0UpOwotICAgIG1FeHBl
Y3RlZERhdGFbR0xfVU5TSUdORURfSU5UXSA9IEdldEV4cGVjdGVkRGF0YTxHTHVpbnQ+KHNyY0Rh
dGEsIEdMX1VOU0lHTkVEX0lOVCwgR0xfRkFMU0UpOwotCi0gICAgbU5vcm1FeHBlY3RlZERhdGFb
R0xfQllURV0gPSBHZXRFeHBlY3RlZERhdGE8R0xieXRlPihzcmNEYXRhLCBHTF9CWVRFLCBHTF9U
UlVFKTsKLSAgICBtTm9ybUV4cGVjdGVkRGF0YVtHTF9VTlNJR05FRF9CWVRFXSA9Ci0gICAgICAg
IEdldEV4cGVjdGVkRGF0YTxHTHVieXRlPihzcmNEYXRhLCBHTF9VTlNJR05FRF9CWVRFLCBHTF9U
UlVFKTsKLSAgICBtTm9ybUV4cGVjdGVkRGF0YVtHTF9TSE9SVF0gPSBHZXRFeHBlY3RlZERhdGE8
R0xzaG9ydD4oc3JjRGF0YSwgR0xfU0hPUlQsIEdMX1RSVUUpOwotICAgIG1Ob3JtRXhwZWN0ZWRE
YXRhW0dMX1VOU0lHTkVEX1NIT1JUXSA9Ci0gICAgICAgIEdldEV4cGVjdGVkRGF0YTxHTHVzaG9y
dD4oc3JjRGF0YSwgR0xfVU5TSUdORURfU0hPUlQsIEdMX1RSVUUpOwotICAgIG1Ob3JtRXhwZWN0
ZWREYXRhW0dMX0lOVF0gICAgICAgICAgPSBHZXRFeHBlY3RlZERhdGE8R0xpbnQ+KHNyY0RhdGEs
IEdMX0lOVCwgR0xfVFJVRSk7Ci0gICAgbU5vcm1FeHBlY3RlZERhdGFbR0xfVU5TSUdORURfSU5U
XSA9IEdldEV4cGVjdGVkRGF0YTxHTHVpbnQ+KHNyY0RhdGEsIEdMX1VOU0lHTkVEX0lOVCwgR0xf
VFJVRSk7Ci19Ci0KLS8vIEluIEQzRDExLCB3ZSBtdXN0IHNvbWV0aW1lcyB0cmFuc2xhdGUgYnVm
ZmVyIGRhdGEgaW50byBzdGF0aWMgYXR0cmlidXRlIGNhY2hlcy4gV2UgYWxzbyB1c2UgYQotLy8g
Y2FjaGUgbWFuYWdlbWVudCBzY2hlbWUgd2hpY2ggZ2FyYmFnZSBjb2xsZWN0cyBvbGQgYXR0cmli
dXRlcyBhZnRlciB3ZSBzdGFydCB1c2luZyB0b28gbXVjaAotLy8gY2FjaGUgZGF0YS4gVGhpcyB0
ZXN0IHRyaWVzIHRvIG1ha2UgYXMgbWFueSBhdHRyaWJ1dGUgY2FjaGVzIGZyb20gYSBzaW5nbGUg
YnVmZmVyIGFzIHBvc3NpYmxlCi0vLyB0byBzdHJlc3MtdGVzdCB0aGUgY2FjaGluZyBjb2RlLgot
VEVTVF9QKFZlcnRleEF0dHJpYnV0ZUNhY2hpbmdUZXN0LCBCdWZmZXJNdWx0aWNhY2hpbmcpCi17
Ci0gICAgaWYgKElzQU1EKCkgJiYgSXNEZXNrdG9wT3BlbkdMKCkpCi0gICAgewotICAgICAgICBz
dGQ6OmNvdXQgPDwgIlRlc3Qgc2tpcHBlZCBvbiBBTUQgT3BlbkdMLiIgPDwgc3RkOjplbmRsOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaW5pdEJhc2ljUHJvZ3JhbSgpOwotCi0gICAg
Z2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtVGVzdEF0dHJpYik7Ci0gICAgZ2xFbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheShtRXhwZWN0ZWRBdHRyaWIpOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9S
KCk7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8gJmRhdGEgOiBtVGVzdERhdGEpCi0gICAgewotICAg
ICAgICBjb25zdCBhdXRvICZleHBlY3RlZCA9Ci0gICAgICAgICAgICAoZGF0YS5ub3JtYWxpemVk
KSA/IG1Ob3JtRXhwZWN0ZWREYXRhW2RhdGEudHlwZV0gOiBtRXhwZWN0ZWREYXRhW2RhdGEudHlw
ZV07Ci0KLSAgICAgICAgR0xzaXplaSBiYXNlU3RyaWRlID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4o
ZGF0YS5zaXplKSAqIGRhdGEuc3RyaWRlOwotICAgICAgICBHTHNpemVpIHN0cmlkZSAgICAgPSBU
eXBlU3RyaWRlKGRhdGEudHlwZSkgKiBiYXNlU3RyaWRlOwotCi0gICAgICAgIGdsQmluZEJ1ZmZl
cihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXIpOwotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50
ZXIobVRlc3RBdHRyaWIsIGRhdGEuc2l6ZSwgZGF0YS50eXBlLCBkYXRhLm5vcm1hbGl6ZWQsIHN0
cmlkZSwgbnVsbHB0cik7Ci0gICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIDAp
OwotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIobUV4cGVjdGVkQXR0cmliLCBkYXRhLnNp
emUsIEdMX0ZMT0FULCBHTF9GQUxTRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVvZihHTGZsb2F0KSAqIGJhc2VTdHJpZGUsIGV4cGVjdGVkLmRhdGEoKSk7Ci0gICAgICAgIGRy
YXdRdWFkKG1Qcm9ncmFtLCAicG9zaXRpb24iLCAwLjVmKTsKLSAgICAgICAgQVNTRVJUX0dMX05P
X0VSUk9SKCk7Ci0gICAgICAgIEVYUEVDVF9QSVhFTF9FUShnZXRXaW5kb3dXaWR0aCgpIC8gMiwg
Z2V0V2luZG93SGVpZ2h0KCkgLyAyLCAyNTUsIDI1NSwgMjU1LCAyNTUpOwotICAgIH0KLX0KLQot
Ly8gV2l0aCBEM0QxMSBkaXJ0eSBiaXRzIGZvciBWZXJ0eEFycmF5MTEsIHdlIGNhbiBsZWF2ZSB2
ZXJ0ZXggc3RhdGUgdW5jaGFuZ2VkIGlmIHRoZXJlIGFyZW4ndCBhbnkKLS8vIEdMIGNhbGxzIHRo
YXQgYWZmZWN0IGl0LiBUaGlzIHRlc3QgdGFyZ2V0cyBsZWF2aW5nIG9uZSB2ZXJ0ZXggYXR0cmli
dXRlIHVuY2hhbmdlZCBiZXR3ZWVuIGRyYXcKLS8vIGNhbGxzIHdoaWxlIGNoYW5naW5nIGFub3Ro
ZXIgdmVydGV4IGF0dHJpYnV0ZSBlbm91Z2ggdGhhdCBpdCBjbGVhcnMgdGhlIHN0YXRpYyBidWZm
ZXIgY2FjaGUKLS8vIGFmdGVyIGVub3VnaCBpdGVyYXRpb25zLiBJdCB2YWxpZGF0ZXMgdGhlIHVu
Y2hhbmdlZCBhdHRyaWJ1dGVzIGRvbid0IGdldCBkZWxldGVkIGluY2lkZW50YWxseS4KLVRFU1Rf
UChWZXJ0ZXhBdHRyaWJ1dGVDYWNoaW5nVGVzdCwgQnVmZmVyTXVsdGljYWNoaW5nV2l0aE9uZVVu
Y2hhbmdlZEF0dHJpYikKLXsKLSAgICBpZiAoSXNBTUQoKSAmJiBJc0Rlc2t0b3BPcGVuR0woKSkK
LSAgICB7Ci0gICAgICAgIHN0ZDo6Y291dCA8PCAiVGVzdCBza2lwcGVkIG9uIEFNRCBPcGVuR0wu
IiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpbml0RG91Ymxl
QXR0cmliUHJvZ3JhbSgpOwotCi0gICAgR0xpbnQgdGVzdEF0dHJpYjJMb2NhdGlvbiA9IGdsR2V0
QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJ0ZXN0MiIpOwotICAgIEFTU0VSVF9ORSgtMSwgdGVz
dEF0dHJpYjJMb2NhdGlvbik7Ci0gICAgR0xpbnQgZXhwZWN0ZWRBdHRyaWIyTG9jYXRpb24gPSBn
bEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiZXhwZWN0ZWQyIik7Ci0gICAgQVNTRVJUX05F
KC0xLCBleHBlY3RlZEF0dHJpYjJMb2NhdGlvbik7Ci0KLSAgICBnbEVuYWJsZVZlcnRleEF0dHJp
YkFycmF5KG1UZXN0QXR0cmliKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1FeHBl
Y3RlZEF0dHJpYik7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSh0ZXN0QXR0cmliMkxv
Y2F0aW9uKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGV4cGVjdGVkQXR0cmliMkxv
Y2F0aW9uKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotCi0gICAgLy8gVXNlIGFuIGF0
dHJpYnV0ZSB0aGF0IHdlIGtub3cgbXVzdCBiZSBjb252ZXJ0ZWQuIFRoaXMgaXMgYSBiaXQgc2Vu
c2l0aXZlLgotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXIpOwotICAg
IGdsVmVydGV4QXR0cmliUG9pbnRlcih0ZXN0QXR0cmliMkxvY2F0aW9uLCAzLCBHTF9VTlNJR05F
RF9TSE9SVCwgR0xfRkFMU0UsIDYsIG51bGxwdHIpOwotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJB
WV9CVUZGRVIsIDApOwotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihleHBlY3RlZEF0dHJpYjJM
b2NhdGlvbiwgMywgR0xfRkxPQVQsIEdMX0ZBTFNFLCBzaXplb2YoR0xmbG9hdCkgKiAzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBtRXhwZWN0ZWREYXRhW0dMX1VOU0lHTkVEX1NIT1JUXS5k
YXRhKCkpOwotCi0gICAgZm9yIChjb25zdCBhdXRvICZkYXRhIDogbVRlc3REYXRhKQotICAgIHsK
LSAgICAgICAgY29uc3QgYXV0byAmZXhwZWN0ZWQgPQotICAgICAgICAgICAgKGRhdGEubm9ybWFs
aXplZCkgPyBtTm9ybUV4cGVjdGVkRGF0YVtkYXRhLnR5cGVdIDogbUV4cGVjdGVkRGF0YVtkYXRh
LnR5cGVdOwotCi0gICAgICAgIEdMc2l6ZWkgYmFzZVN0cmlkZSA9IHN0YXRpY19jYXN0PEdMc2l6
ZWk+KGRhdGEuc2l6ZSkgKiBkYXRhLnN0cmlkZTsKLSAgICAgICAgR0xzaXplaSBzdHJpZGUgICAg
ID0gVHlwZVN0cmlkZShkYXRhLnR5cGUpICogYmFzZVN0cmlkZTsKLQotICAgICAgICBnbEJpbmRC
dWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVyKTsKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQ
b2ludGVyKG1UZXN0QXR0cmliLCBkYXRhLnNpemUsIGRhdGEudHlwZSwgZGF0YS5ub3JtYWxpemVk
LCBzdHJpZGUsIG51bGxwdHIpOwotICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVS
LCAwKTsKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKG1FeHBlY3RlZEF0dHJpYiwgZGF0
YS5zaXplLCBHTF9GTE9BVCwgR0xfRkFMU0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplb2YoR0xmbG9hdCkgKiBiYXNlU3RyaWRlLCBleHBlY3RlZC5kYXRhKCkpOwotICAgICAg
ICBkcmF3UXVhZChtUHJvZ3JhbSwgInBvc2l0aW9uIiwgMC41Zik7Ci0KLSAgICAgICAgQVNTRVJU
X0dMX05PX0VSUk9SKCk7Ci0gICAgICAgIEVYUEVDVF9QSVhFTF9FUShnZXRXaW5kb3dXaWR0aCgp
IC8gMiwgZ2V0V2luZG93SGVpZ2h0KCkgLyAyLCAyNTUsIDI1NSwgMjU1LCAyNTUpOwotICAgIH0K
LX0KLQotLy8gVXNlIHRoaXMgdG8gc2VsZWN0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIChlLmcuIHdo
aWNoIHJlbmRlcmVyLCB3aGljaCBHTEVTIG1ham9yIHZlcnNpb24pIHRoZXNlIHRlc3RzIHNob3Vs
ZCBiZSBydW4gYWdhaW5zdC4KLS8vIEQzRDExIEZlYXR1cmUgTGV2ZWwgOV8zIHVzZXMgZGlmZmVy
ZW50IEQzRCBmb3JtYXRzIGZvciB2ZXJ0ZXggYXR0cmlicyBjb21wYXJlZCB0byBGZWF0dXJlIExl
dmVscyAxMF8wKywgc28gd2Ugc2hvdWxkIHRlc3QgdGhlbSBzZXBhcmF0ZWx5LgotQU5HTEVfSU5T
VEFOVElBVEVfVEVTVChWZXJ0ZXhBdHRyaWJ1dGVUZXN0LAotICAgICAgICAgICAgICAgICAgICAg
ICBFUzJfRDNEOSgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgRVMyX0QzRDExX0ZMOV8zKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgIEVTMl9PUEVOR0woKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRVMzX09QRU5HTEVTKCkpOwotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKFZlcnRleEF0
dHJpYnV0ZVRlc3RFUzMsIEVTM19EM0QxMSgpLCBFUzNfT1BFTkdMKCksIEVTM19PUEVOR0xFUygp
KTsKLQotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChWZXJ0ZXhBdHRyaWJ1dGVDYWNoaW5nVGVzdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgRVMyX0QzRDExKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLAotICAg
ICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCkpOwotCi19ICAvLyBhbm9ueW1vdXMgbmFt
ZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xf
dGVzdHMvVmlld3BvcnRUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9nbF90ZXN0cy9WaWV3cG9ydFRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA4Y2Q5Y2QzZGYyYi4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL2dsX3Rlc3RzL1ZpZXdwb3J0VGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwy
NzIgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2luY2x1ZGUgInRlc3RfdXRpbHMvQU5HTEVUZXN0Lmgi
Ci0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17Ci0KLWNsYXNzIFZpZXdw
b3J0VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIFZpZXdwb3J0
VGVzdCgpCi0gICAgewotICAgICAgICBzZXRXaW5kb3dXaWR0aCg1MTIpOwotICAgICAgICBzZXRX
aW5kb3dIZWlnaHQoNTEyKTsKLSAgICAgICAgc2V0Q29uZmlnUmVkQml0cyg4KTsKLSAgICAgICAg
c2V0Q29uZmlnR3JlZW5CaXRzKDgpOwotICAgICAgICBzZXRDb25maWdCbHVlQml0cyg4KTsKLSAg
ICAgICAgc2V0Q29uZmlnQWxwaGFCaXRzKDgpOwotICAgICAgICBzZXRDb25maWdEZXB0aEJpdHMo
MjQpOwotCi0gICAgICAgIG1Qcm9ncmFtID0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHJ1bk5vblNj
aXNzb3JlZFRlc3QoKQotICAgIHsKLSAgICAgICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDEpOwot
ICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgICAgIHJ1blRlc3Qo
KTsKLSAgICB9Ci0KLSAgICB2b2lkIHJ1blNjaXNzb3JlZFRlc3QoKQotICAgIHsKLSAgICAgICAg
Z2xDbGVhckNvbG9yKDAsIDAsIDAsIDEpOwotICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZF
Ul9CSVQpOwotCi0gICAgICAgIGdsRW5hYmxlKEdMX1NDSVNTT1JfVEVTVCk7Ci0gICAgICAgIGds
U2Npc3NvcigwLCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIGdldFdpbmRvd1dpZHRoKCksIGdldFdp
bmRvd0hlaWdodCgpIC8gMik7Ci0KLSAgICAgICAgcnVuVGVzdCgpOwotICAgIH0KLQotICAgIHZv
aWQgcnVuVGVzdCgpCi0gICAgewotICAgICAgICAvLyBGaXJzdGx5IGVuc3VyZSB0aGF0IG5vIGVy
cm9ycyBoYXZlIGJlZW4gaGl0LgotICAgICAgICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLQotICAg
ICAgICBHTGludCB2aWV3cG9ydFNpemVbNF07Ci0gICAgICAgIGdsR2V0SW50ZWdlcnYoR0xfVklF
V1BPUlQsIHZpZXdwb3J0U2l6ZSk7Ci0KLSAgICAgICAgLy8gQ2xlYXIgdG8gZ3JlZW4uIE1pZ2h0
IGJlIGEgc2Npc3NvcmVkIGNsZWFyLCBpZiBzY2lzc29yU2l6ZSAhPSB3aW5kb3cgc2l6ZQotICAg
ICAgICBnbENsZWFyQ29sb3IoMCwgMSwgMCwgMSk7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1Jf
QlVGRkVSX0JJVCk7Ci0KLSAgICAgICAgLy8gRHJhdyBhIHJlZCBxdWFkIGNlbnRlcmVkIGluIHRo
ZSBtaWRkbGUgb2YgdGhlIHZpZXdwb3J0LCB3aXRoIGRpbWVuc2lvbnMgMjUlIG9mIHRoZSBzaXpl
IG9mIHRoZSB2aWV3cG9ydC4KLSAgICAgICAgZHJhd1F1YWQobVByb2dyYW0sICJwb3NpdGlvbiIs
IDAuNWYsIDAuMjVmKTsKLQotICAgICAgICBHTGludCBjZW50ZXJWaWV3cG9ydFggPSB2aWV3cG9y
dFNpemVbMF0gKyAodmlld3BvcnRTaXplWzJdIC8gMik7Ci0gICAgICAgIEdMaW50IGNlbnRlclZp
ZXdwb3J0WSA9IHZpZXdwb3J0U2l6ZVsxXSArICh2aWV3cG9ydFNpemVbM10gLyAyKTsKLQotICAg
ICAgICBHTGludCByZWRRdWFkTGVmdFNpZGVYICAgPSB2aWV3cG9ydFNpemVbMF0gKyB2aWV3cG9y
dFNpemVbMl0gKiAzIC8gODsKLSAgICAgICAgR0xpbnQgcmVkUXVhZFJpZ2h0U2lkZVggID0gdmll
d3BvcnRTaXplWzBdICsgdmlld3BvcnRTaXplWzJdICogNSAvIDg7Ci0gICAgICAgIEdMaW50IHJl
ZFF1YWRUb3BTaWRlWSAgICA9IHZpZXdwb3J0U2l6ZVsxXSArIHZpZXdwb3J0U2l6ZVszXSAqIDMg
LyA4OwotICAgICAgICBHTGludCByZWRRdWFkQm90dG9tU2lkZVkgPSB2aWV3cG9ydFNpemVbMV0g
KyB2aWV3cG9ydFNpemVbM10gKiA1IC8gODsKLQotICAgICAgICAvLyBUaGUgbWlkcG9pbnQgb2Yg
dGhlIHZpZXdwb3J0IHNob3VsZCBiZSByZWQuCi0gICAgICAgIGNoZWNrUGl4ZWwoY2VudGVyVmll
d3BvcnRYLCBjZW50ZXJWaWV3cG9ydFksIHRydWUpOwotCi0gICAgICAgIC8vIFBpeGVscyBqdXN0
IGluc2lkZSB0aGUgcmVkIHF1YWQgc2hvdWxkIGJlIHJlZC4KLSAgICAgICAgY2hlY2tQaXhlbChy
ZWRRdWFkTGVmdFNpZGVYLCAgICAgIHJlZFF1YWRUb3BTaWRlWSwgICAgICAgIHRydWUpOwotICAg
ICAgICBjaGVja1BpeGVsKHJlZFF1YWRMZWZ0U2lkZVgsICAgICAgcmVkUXVhZEJvdHRvbVNpZGVZ
IC0gMSwgdHJ1ZSk7Ci0gICAgICAgIGNoZWNrUGl4ZWwocmVkUXVhZFJpZ2h0U2lkZVggLSAxLCBy
ZWRRdWFkVG9wU2lkZVksICAgICAgICB0cnVlKTsKLSAgICAgICAgY2hlY2tQaXhlbChyZWRRdWFk
UmlnaHRTaWRlWCAtIDEsIHJlZFF1YWRCb3R0b21TaWRlWSAtIDEsIHRydWUpOwotCi0gICAgICAg
IC8vIFBpeGVscyBqdXN0IG91dHNpZGUgdGhlIHJlZCBxdWFkIHNob3VsZG4ndCBiZSByZWQuCi0g
ICAgICAgIGNoZWNrUGl4ZWwocmVkUXVhZExlZnRTaWRlWCAtIDEsICByZWRRdWFkVG9wU2lkZVkg
LSAxLCBmYWxzZSk7Ci0gICAgICAgIGNoZWNrUGl4ZWwocmVkUXVhZExlZnRTaWRlWCAtIDEsICBy
ZWRRdWFkQm90dG9tU2lkZVksICBmYWxzZSk7Ci0gICAgICAgIGNoZWNrUGl4ZWwocmVkUXVhZFJp
Z2h0U2lkZVgsICAgICByZWRRdWFkVG9wU2lkZVkgLSAxLCBmYWxzZSk7Ci0gICAgICAgIGNoZWNr
UGl4ZWwocmVkUXVhZFJpZ2h0U2lkZVgsICAgICByZWRRdWFkQm90dG9tU2lkZVksICBmYWxzZSk7
Ci0KLSAgICAgICAgLy8gUGl4ZWxzIGp1c3Qgd2l0aGluIHRoZSB2aWV3cG9ydCBzaG91bGRuJ3Qg
YmUgcmVkLgotICAgICAgICBjaGVja1BpeGVsKHZpZXdwb3J0U2l6ZVswXSwgICAgICAgICAgICAg
ICAgICAgICAgICB2aWV3cG9ydFNpemVbMV0sICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7
Ci0gICAgICAgIGNoZWNrUGl4ZWwodmlld3BvcnRTaXplWzBdLCAgICAgICAgICAgICAgICAgICAg
ICAgIHZpZXdwb3J0U2l6ZVsxXSArIHZpZXdwb3J0U2l6ZVszXSAtIDEsIGZhbHNlKTsKLSAgICAg
ICAgY2hlY2tQaXhlbCh2aWV3cG9ydFNpemVbMF0gKyB2aWV3cG9ydFNpemVbMl0gLSAxLCAgdmll
d3BvcnRTaXplWzFdLCAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwotICAgICAgICBjaGVj
a1BpeGVsKHZpZXdwb3J0U2l6ZVswXSArIHZpZXdwb3J0U2l6ZVsyXSAtIDEsICB2aWV3cG9ydFNp
emVbMV0gKyB2aWV3cG9ydFNpemVbM10gLSAxLCBmYWxzZSk7Ci0gICAgfQotCi0gICAgdm9pZCBj
aGVja1BpeGVsKEdMaW50IHgsIEdMaW50IHksIEdMYm9vbGVhbiByZW5kZXJlZFJlZCkKLSAgICB7
Ci0gICAgICAgIC8vIEJ5IGRlZmF1bHQsIGV4cGVjdCB0aGUgcGl4ZWwgdG8gYmUgYmxhY2suCi0g
ICAgICAgIEdMaW50IGV4cGVjdGVkUmVkQ2hhbm5lbCA9IDA7Ci0gICAgICAgIEdMaW50IGV4cGVj
dGVkR3JlZW5DaGFubmVsID0gMDsKLQotICAgICAgICBHTGludCBzY2lzc29yU2l6ZVs0XTsKLSAg
ICAgICAgZ2xHZXRJbnRlZ2VydihHTF9TQ0lTU09SX0JPWCwgc2Npc3NvclNpemUpOwotCi0gICAg
ICAgIEVYUEVDVF9HTF9OT19FUlJPUigpOwotCi0gICAgICAgIGlmIChzY2lzc29yU2l6ZVswXSA8
PSB4ICYmIHggPCBzY2lzc29yU2l6ZVswXSArIHNjaXNzb3JTaXplWzJdCi0gICAgICAgICAgICAm
JiBzY2lzc29yU2l6ZVsxXSA8PSB5ICYmIHkgPCBzY2lzc29yU2l6ZVsxXSArIHNjaXNzb3JTaXpl
WzNdKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgcGl4ZWwgbGllcyB3aXRoaW4g
dGhlIHNjaXNzb3IgcmVjdCwgdGhlbiBpdCBzaG91bGQgaGF2ZSBiZWVuIGNsZWFyZWQgdG8gZ3Jl
ZW4uCi0gICAgICAgICAgICAvLyBJZiB3ZSByZW5kZXJlZCBhIHJlZCBzcXVhcmUgb24gdG9wIG9m
IGl0LCB0aGVuIHRoZSBwaXhlbCBzaG91bGQgYmUgcmVkICh0aGUgZ3JlZW4gY2hhbm5lbCB3aWxs
IGhhdmUgYmVlbiByZXNldCB0byAwKS4KLSAgICAgICAgICAgIGV4cGVjdGVkUmVkQ2hhbm5lbCA9
IHJlbmRlcmVkUmVkID8gMjU1IDogMDsKLSAgICAgICAgICAgIGV4cGVjdGVkR3JlZW5DaGFubmVs
ID0gcmVuZGVyZWRSZWQgPyAwIDogMjU1OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgdGhl
IHBpeGVsIGlzIHdpdGhpbiB0aGUgYm91bmRzIG9mIHRoZSB3aW5kb3csIHRoZW4gd2UgY2hlY2sg
aXQuIE90aGVyd2lzZSB3ZSBza2lwIGl0LgotICAgICAgICBpZiAoMCA8PSB4ICYmIHggPCBnZXRX
aW5kb3dXaWR0aCgpICYmIDAgPD0geSAmJiB5IDwgZ2V0V2luZG93SGVpZ2h0KCkpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIEVYUEVDVF9QSVhFTF9FUSh4LCB5LCBleHBlY3RlZFJlZENoYW5uZWws
IGV4cGVjdGVkR3JlZW5DaGFubmVsLCAwLCAyNTUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
dm9pZCBTZXRVcCgpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBBTkdMRVRlc3Q6OlNldFVwKCk7
Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdFZlcnRleFNoYWRlclNvdXJjZSA9IFNI
QURFUl9TT1VSQ0UKLSAgICAgICAgKAotICAgICAgICAgICAgYXR0cmlidXRlIGhpZ2hwIHZlYzQg
cG9zaXRpb247Ci0KLSAgICAgICAgICAgIHZvaWQgbWFpbih2b2lkKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICk7Ci0KLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgdGVzdEZyYWdtZW50U2hhZGVy
U291cmNlID0gU0hBREVSX1NPVVJDRQotICAgICAgICAoCi0gICAgICAgICAgICB2b2lkIG1haW4o
dm9pZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0
KDEuMCwgMC4wLCAwLjAsIDEuMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICk7Ci0KLSAgICAg
ICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh0ZXN0VmVydGV4U2hhZGVyU291cmNlLCB0ZXN0
RnJhZ21lbnRTaGFkZXJTb3VyY2UpOwotICAgICAgICBpZiAobVByb2dyYW0gPT0gMCkKLSAgICAg
ICAgewotICAgICAgICAgICAgRkFJTCgpIDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkLiI7
Ci0gICAgICAgIH0KLQotICAgICAgICBnbFVzZVByb2dyYW0obVByb2dyYW0pOwotCi0gICAgICAg
IGdsQ2xlYXJDb2xvcigwLCAwLCAwLCAxKTsKLSAgICAgICAgZ2xDbGVhckRlcHRoZigwLjApOwot
ICAgICAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQgfCBHTF9ERVBUSF9CVUZGRVJfQklU
KTsKLQotICAgICAgICAvLyBDYWxsIGdsVmlld3BvcnQgYW5kIGdsU2Npc3NvciB3aXRoIGRlZmF1
bHQgcGFyYW1ldGVycy4KLSAgICAgICAgZ2xTY2lzc29yKDAsIDAsIGdldFdpbmRvd1dpZHRoKCks
IGdldFdpbmRvd0hlaWdodCgpKTsKLSAgICAgICAgZ2xWaWV3cG9ydCgwLCAwLCBnZXRXaW5kb3dX
aWR0aCgpLCBnZXRXaW5kb3dIZWlnaHQoKSk7Ci0KLSAgICAgICAgZ2xEaXNhYmxlKEdMX0RFUFRI
X1RFU1QpOwotICAgIH0KLQotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgICAgICBBTkdMRVRlc3Q6OlRl
YXJEb3duKCk7Ci0gICAgfQotCi0gICAgR0x1aW50IG1Qcm9ncmFtOwotfTsKLQotVEVTVF9QKFZp
ZXdwb3J0VGVzdCwgUXVhcnRlcldpbmRvdykKLXsKLSAgICBnbFZpZXdwb3J0KDAsIDAsIGdldFdp
bmRvd1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQpOwotCi0gICAgcnVuTm9uU2Np
c3NvcmVkVGVzdCgpOwotCi0gICAgcnVuU2Npc3NvcmVkVGVzdCgpOwotfQotCi1URVNUX1AoVmll
d3BvcnRUZXN0LCBRdWFydGVyV2luZG93Q2VudGVyZWQpCi17Ci0gICAgZ2xWaWV3cG9ydChnZXRX
aW5kb3dXaWR0aCgpICogMyAvIDgsIGdldFdpbmRvd0hlaWdodCgpICogMyAvIDgsIGdldFdpbmRv
d1dpZHRoKCkgLyA0LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDQpOwotCi0gICAgcnVuTm9uU2Npc3Nv
cmVkVGVzdCgpOwotCi0gICAgcnVuU2Npc3NvcmVkVGVzdCgpOwotfQotCi1URVNUX1AoVmlld3Bv
cnRUZXN0LCBGdWxsV2luZG93KQotewotICAgIGdsVmlld3BvcnQoMCwgMCwgZ2V0V2luZG93V2lk
dGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotCi0gICAgcnVuTm9uU2Npc3NvcmVkVGVzdCgpOwot
Ci0gICAgcnVuU2Npc3NvcmVkVGVzdCgpOwotfQotCi1URVNUX1AoVmlld3BvcnRUZXN0LCBGdWxs
V2luZG93T2ZmQ2VudGVyKQotewotICAgIGdsVmlld3BvcnQoLWdldFdpbmRvd1dpZHRoKCkgLyAy
LCBnZXRXaW5kb3dIZWlnaHQoKSAvIDIsIGdldFdpbmRvd1dpZHRoKCksIGdldFdpbmRvd0hlaWdo
dCgpKTsKLQotICAgIHJ1bk5vblNjaXNzb3JlZFRlc3QoKTsKLQotICAgIHJ1blNjaXNzb3JlZFRl
c3QoKTsKLX0KLQotVEVTVF9QKFZpZXdwb3J0VGVzdCwgRG91YmxlV2luZG93KQotewotICAgIGds
Vmlld3BvcnQoMCwgMCwgZ2V0V2luZG93V2lkdGgoKSAqIDIsIGdldFdpbmRvd0hlaWdodCgpICog
Mik7Ci0KLSAgICBydW5Ob25TY2lzc29yZWRUZXN0KCk7Ci0KLSAgICBydW5TY2lzc29yZWRUZXN0
KCk7Ci19Ci0KLVRFU1RfUChWaWV3cG9ydFRlc3QsIERvdWJsZVdpbmRvd0NlbnRlcmVkKQotewot
ICAgIGdsVmlld3BvcnQoLWdldFdpbmRvd1dpZHRoKCkgLyAyLCAtZ2V0V2luZG93SGVpZ2h0KCkg
LyAyLCBnZXRXaW5kb3dXaWR0aCgpICogMiwgZ2V0V2luZG93SGVpZ2h0KCkgKiAyKTsKLQotICAg
IHJ1bk5vblNjaXNzb3JlZFRlc3QoKTsKLQotICAgIHJ1blNjaXNzb3JlZFRlc3QoKTsKLX0KLQot
VEVTVF9QKFZpZXdwb3J0VGVzdCwgRG91YmxlV2luZG93T2ZmQ2VudGVyKQotewotICAgIGdsVmll
d3BvcnQoLWdldFdpbmRvd1dpZHRoKCkgKiAzIC8gNCwgZ2V0V2luZG93SGVpZ2h0KCkgKiAzIC8g
NCwgZ2V0V2luZG93V2lkdGgoKSwgZ2V0V2luZG93SGVpZ2h0KCkpOwotCi0gICAgcnVuTm9uU2Np
c3NvcmVkVGVzdCgpOwotCi0gICAgcnVuU2Npc3NvcmVkVGVzdCgpOwotfQotCi1URVNUX1AoVmll
d3BvcnRUZXN0LCBUcmlwbGVXaW5kb3cpCi17Ci0gICAgZ2xWaWV3cG9ydCgwLCAwLCBnZXRXaW5k
b3dXaWR0aCgpICogMywgZ2V0V2luZG93SGVpZ2h0KCkgKiAzKTsKLQotICAgIHJ1bk5vblNjaXNz
b3JlZFRlc3QoKTsKLQotICAgIHJ1blNjaXNzb3JlZFRlc3QoKTsKLX0KLQotVEVTVF9QKFZpZXdw
b3J0VGVzdCwgVHJpcGxlV2luZG93Q2VudGVyZWQpCi17Ci0gICAgZ2xWaWV3cG9ydCgtZ2V0V2lu
ZG93V2lkdGgoKSwgLWdldFdpbmRvd0hlaWdodCgpLCBnZXRXaW5kb3dXaWR0aCgpICogMywgZ2V0
V2luZG93SGVpZ2h0KCkgKiAzKTsKLQotICAgIHJ1bk5vblNjaXNzb3JlZFRlc3QoKTsKLQotICAg
IHJ1blNjaXNzb3JlZFRlc3QoKTsKLX0KLQotVEVTVF9QKFZpZXdwb3J0VGVzdCwgVHJpcGxlV2lu
ZG93T2ZmQ2VudGVyKQotewotICAgIGdsVmlld3BvcnQoLWdldFdpbmRvd1dpZHRoKCkgKiAzIC8g
MiwgLWdldFdpbmRvd0hlaWdodCgpICogMyAvIDIsIGdldFdpbmRvd1dpZHRoKCkgKiAzLCBnZXRX
aW5kb3dIZWlnaHQoKSAqIDMpOwotCi0gICAgcnVuTm9uU2Npc3NvcmVkVGVzdCgpOwotCi0gICAg
cnVuU2Npc3NvcmVkVGVzdCgpOwotfQotCi0vLyBVc2UgdGhpcyB0byBzZWxlY3Qgd2hpY2ggY29u
ZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFqb3IgdmVyc2lv
bikgdGhlc2UgdGVzdHMgc2hvdWxkIGJlIHJ1biBhZ2FpbnN0LgotLy8gRDNEMTEgRmVhdHVyZSBM
ZXZlbCA5IGFuZCBEM0Q5IGVtdWxhdGUgbGFyZ2UgYW5kIG5lZ2F0aXZlIHZpZXdwb3J0cyBpbiB0
aGUgdmVydGV4IHNoYWRlci4gV2Ugc2hvdWxkIHRlc3QgYm90aCBvZiB0aGVzZSBhcyB3ZWxsIGFz
IEQzRDExIEZlYXR1cmUgTGV2ZWwgMTBfMCsuCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKFZpZXdw
b3J0VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgRVMyX0QzRDExKEVHTF9FWFBFUklNRU5UQUxfUFJFU0VOVF9QQVRIX0NPUFlf
QU5HTEUpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfRDNEMTEoRUdMX0VYUEVSSU1FTlRB
TF9QUkVTRU5UX1BBVEhfRkFTVF9BTkdMRSksCi0gICAgICAgICAgICAgICAgICAgICAgIEVTMl9E
M0QxMV9GTDlfMygpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzJfT1BFTkdMRVMoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgRVMzX09QRU5HTEVTKCkpOwotCi19IC8vIG5hbWVzcGFjZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1dl
YkdMQ29tcGF0aWJpbGl0eVRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL2dsX3Rlc3RzL1dlYkdMQ29tcGF0aWJpbGl0eVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwODcyNDdmMTVmYS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL1dlYkdMQ29tcGF0aWJpbGl0eVRlc3QuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLS8vIFdlYkdMQ29t
cGF0aWJpbGl0eVRlc3QuY3BwIDogVGVzdHMgb2YgdGhlIEdMX0FOR0xFX3dlYmdsX2NvbXBhdGli
aWxpdHkgZXh0ZW5zaW9uLgotCi0jaW5jbHVkZSAidGVzdF91dGlscy9BTkdMRVRlc3QuaCIKLQot
I2luY2x1ZGUgInRlc3RfdXRpbHMvZ2xfcmFpaS5oIgotCi1uYW1lc3BhY2UgYW5nbGUKLXsKLQot
Y2xhc3MgV2ViR0xDb21wYXRpYmlsaXR5VGVzdCA6IHB1YmxpYyBBTkdMRVRlc3QKLXsKLSAgcHJv
dGVjdGVkOgotICAgIFdlYkdMQ29tcGF0aWJpbGl0eVRlc3QoKQotICAgIHsKLSAgICAgICAgc2V0
V2luZG93V2lkdGgoMTI4KTsKLSAgICAgICAgc2V0V2luZG93SGVpZ2h0KDEyOCk7Ci0gICAgICAg
IHNldENvbmZpZ1JlZEJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0dyZWVuQml0cyg4KTsKLSAg
ICAgICAgc2V0Q29uZmlnQmx1ZUJpdHMoOCk7Ci0gICAgICAgIHNldENvbmZpZ0FscGhhQml0cyg4
KTsKLSAgICAgICAgc2V0V2ViR0xDb21wYXRpYmlsaXR5RW5hYmxlZCh0cnVlKTsKLSAgICB9Ci0K
LSAgICB2b2lkIFNldFVwKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFOR0xFVGVzdDo6U2V0
VXAoKTsKLSAgICAgICAgZ2xFbmFibGVFeHRlbnNpb25BTkdMRSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
UEZOR0xFTkFCTEVFWFRFTlNJT05BTkdMRVBST0M+KAotICAgICAgICAgICAgZWdsR2V0UHJvY0Fk
ZHJlc3MoImdsRW5hYmxlRXh0ZW5zaW9uQU5HTEUiKSk7Ci0gICAgfQotCi0gICAgdm9pZCBUZWFy
RG93bigpIG92ZXJyaWRlIHsgQU5HTEVUZXN0OjpUZWFyRG93bigpOyB9Ci0KLSAgICBQRk5HTEVO
QUJMRUVYVEVOU0lPTkFOR0xFUFJPQyBnbEVuYWJsZUV4dGVuc2lvbkFOR0xFID0gbnVsbHB0cjsK
LX07Ci0KLS8vIENvbnRleHQgY3JlYXRpb24gd291bGQgZmFpbCBpZiBFR0xfQU5HTEVfY3JlYXRl
X2NvbnRleHRfd2ViZ2xfY29tcGF0aWJpbGl0eSB3YXMgbm90IGF2YWlsYWJsZSBzbwotLy8gdGhl
IEdMIGV4dGVuc2lvbiBzaG91bGQgYWx3YXlzIGJlIHByZXNlbnQKLVRFU1RfUChXZWJHTENvbXBh
dGliaWxpdHlUZXN0LCBFeHRlbnNpb25TdHJpbmdFeHBvc2VkKQotewotICAgIEVYUEVDVF9UUlVF
KGV4dGVuc2lvbkVuYWJsZWQoIkdMX0FOR0xFX3dlYmdsX2NvbXBhdGliaWxpdHkiKSk7Ci19Ci0K
LS8vIFZlcmlmeSB0aGF0IGFsbCBleHRlbnNpb24gZW50cnkgcG9pbnRzIGFyZSBhdmFpbGFibGUK
LVRFU1RfUChXZWJHTENvbXBhdGliaWxpdHlUZXN0LCBFbnRyeVBvaW50cykKLXsKLSAgICBpZiAo
ZXh0ZW5zaW9uRW5hYmxlZCgiR0xfQU5HTEVfd2ViZ2xfY29tcGF0aWJpbGl0eSIpKQotICAgIHsK
LSAgICAgICAgRVhQRUNUX05FKG51bGxwdHIsIGVnbEdldFByb2NBZGRyZXNzKCJnbEVuYWJsZUV4
dGVuc2lvbkFOR0xFIikpOwotICAgIH0KLX0KLQotLy8gV2ViR0wgMSBhbGxvd3MgR0xfREVQVEhf
U1RFTkNJTF9BVFRBQ0hNRU5UIGFzIGEgdmFsaWQgYmluZGluZyBwb2ludC4gIE1ha2Ugc3VyZSBp
dCBpcyB1c2FibGUsCi0vLyBldmVuIGluIEVTMiBjb250ZXh0cy4KLVRFU1RfUChXZWJHTENvbXBh
dGliaWxpdHlUZXN0LCBEZXB0aFN0ZW5jaWxCaW5kaW5nUG9pbnQpCi17Ci0gICAgR0xSZW5kZXJi
dWZmZXIgcmVuZGVyYnVmZmVyOwotICAgIGdsQmluZFJlbmRlcmJ1ZmZlcihHTF9SRU5ERVJCVUZG
RVIsIHJlbmRlcmJ1ZmZlci5nZXQoKSk7Ci0gICAgZ2xSZW5kZXJidWZmZXJTdG9yYWdlKEdMX1JF
TkRFUkJVRkZFUiwgR0xfREVQVEgyNF9TVEVOQ0lMOCwgMzIsIDMyKTsKLQotICAgIEdMRnJhbWVi
dWZmZXIgZnJhbWVidWZmZXI7Ci0gICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIs
IGZyYW1lYnVmZmVyLmdldCgpKTsKLSAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKEdMX0ZS
QU1FQlVGRkVSLCBHTF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIEdMX1JFTkRFUkJVRkZFUiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmJ1ZmZlci5nZXQoKSk7Ci0KLSAg
ICBFWFBFQ1RfR0xfTk9fRVJST1IoKTsKLX0KLQotLy8gVGVzdCB0aGF0IGF0dGVtcHRpbmcgdG8g
ZW5hYmxlIGFuIGV4dGVuc2lvbiB0aGF0IGRvZXNuJ3QgZXhpc3QgZ2VuZXJhdGVzIEdMX0lOVkFM
SURfT1BFUkFUSU9OCi1URVNUX1AoV2ViR0xDb21wYXRpYmlsaXR5VGVzdCwgRW5hYmxlRXh0ZW5z
aW9uVmFsaWRhdGlvbikKLXsKLSAgICBFWFBFQ1RfRVEoR0xfRkFMU0UsIGdsRW5hYmxlRXh0ZW5z
aW9uQU5HTEUoImludmFsaWRfZXh0ZW5zaW9uX3N0cmluZyIpKTsKLSAgICBFWFBFQ1RfR0xfRVJS
T1IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwotfQotCi0vLyBUZXN0IGVuYWJsaW5nIHRoZSBHTF9P
RVNfZWxlbWVudF9pbmRleF91aW50IGV4dGVuc2lvbgotVEVTVF9QKFdlYkdMQ29tcGF0aWJpbGl0
eVRlc3QsIEVuYWJsZUV4dGVuc2lvblVpbnRJbmRpY2VzKQotewotICAgIGlmIChnZXRDbGllbnRN
YWpvclZlcnNpb24oKSAhPSAyKQotICAgIHsKLSAgICAgICAgLy8gVGhpcyB0ZXN0IG9ubHkgd29y
a3Mgb24gRVMyIHdoZXJlIHVpbnQgaW5kaWNlcyBhcmUgbm90IGF2YWlsYWJsZSBieSBkZWZhdWx0
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBFWFBFQ1RfRkFMU0UoZXh0ZW5zaW9uRW5h
YmxlZCgiR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCIpKTsKLQotICAgIEdMQnVmZmVyIGluZGV4
QnVmZmVyOwotICAgIGdsQmluZEJ1ZmZlcihHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgaW5kZXhC
dWZmZXIuZ2V0KCkpOwotCi0gICAgR0x1aW50IGRhdGFbXSA9IHswLCAxLCAyLCAxLCAzLCAyfTsK
LSAgICBnbEJ1ZmZlckRhdGEoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHNpemVvZihkYXRhKSwg
ZGF0YSwgR0xfU1RBVElDX0RSQVcpOwotCi0gICAgQU5HTEVfR0xfUFJPR1JBTShwcm9ncmFtLCAi
dm9pZCBtYWluKCkgeyBnbF9Qb3NpdGlvbiA9IHZlYzQoMCwgMCwgMCwgMSk7IH0iLAotICAgICAg
ICAgICAgICAgICAgICAgInZvaWQgbWFpbigpIHsgZ2xfRnJhZ0NvbG9yID0gdmVjNCgwLCAxLCAw
LCAxKTsgfSIpCi0gICAgZ2xVc2VQcm9ncmFtKHByb2dyYW0uZ2V0KCkpOwotCi0gICAgZ2xEcmF3
RWxlbWVudHMoR0xfVFJJQU5HTEVTLCAyLCBHTF9VTlNJR05FRF9JTlQsIG51bGxwdHIpOwotICAg
IEVYUEVDVF9HTF9FUlJPUihHTF9JTlZBTElEX0VOVU0pOwotCi0gICAgaWYgKGdsRW5hYmxlRXh0
ZW5zaW9uQU5HTEUoIkdMX09FU19lbGVtZW50X2luZGV4X3VpbnQiKSkKLSAgICB7Ci0gICAgICAg
IEVYUEVDVF9HTF9OT19FUlJPUigpOwotICAgICAgICBFWFBFQ1RfVFJVRShleHRlbnNpb25FbmFi
bGVkKCJHTF9PRVNfZWxlbWVudF9pbmRleF91aW50IikpOwotCi0gICAgICAgIGdsRHJhd0VsZW1l
bnRzKEdMX1RSSUFOR0xFUywgMiwgR0xfVU5TSUdORURfSU5ULCBudWxscHRyKTsKLSAgICAgICAg
RVhQRUNUX0dMX05PX0VSUk9SKCk7Ci0gICAgfQotfQotCi0vLyBVc2UgdGhpcyB0byBzZWxlY3Qg
d2hpY2ggY29uZmlndXJhdGlvbnMgKGUuZy4gd2hpY2ggcmVuZGVyZXIsIHdoaWNoIEdMRVMgbWFq
b3IgdmVyc2lvbikgdGhlc2UKLS8vIHRlc3RzIHNob3VsZCBiZSBydW4gYWdhaW5zdC4KLUFOR0xF
X0lOU1RBTlRJQVRFX1RFU1QoV2ViR0xDb21wYXRpYmlsaXR5VGVzdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgRVMyX0QzRDkoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX0QzRDExKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgIEVTM19EM0QxMSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICBFUzJfRDNEMTFfRkw5XzMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRVMyX09QRU5H
TCgpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BFTkdMKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgIEVTMl9PUEVOR0xFUygpLAotICAgICAgICAgICAgICAgICAgICAgICBFUzNfT1BF
TkdMRVMoKSk7Ci0KLX0gIC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL2dsX3Rlc3RzL21lZGlhL3BpeGVsLmlubCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbF90ZXN0cy9tZWRpYS9waXhlbC5pbmwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4NmU2OTQyZWRlLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvZ2xfdGVzdHMvbWVkaWEvcGl4ZWwuaW5sCisr
KyAvZGV2L251bGwKQEAgLTEsMTEwMDAgKzAsMCBAQAotLy8gQXV0b21hdGljYWxseSBnZW5lcmF0
ZWQgaGVhZGVyIGZyb20gcGl4ZWwuZGRzLCBhIDUxMng1MTIgKDEwIG1pcCBsZXZlbHMpCi0vLyBE
WFQxIHRleHR1cmUgdXNpbmcgRERTVG9IZWFkZXIuZXhlLgotc3RhdGljIGNvbnN0IHNpemVfdCBw
aXhlbF93aWR0aCA9IDUxMjsKLXN0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfaGVpZ2h0ID0gNTEy
Owotc3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF9sZXZlbHMgPSAxMDsKLQotc3RhdGljIGNvbnN0
IHNpemVfdCBwaXhlbF8wX3dpZHRoID0gNTEyOwotc3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF8w
X2hlaWdodCA9IDUxMjsKLXN0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfMF9zaXplID0gMTMxMDcy
Owotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcGl4ZWxfMF9kYXRhWzEzMTA3Ml0gPQotewot
ICAgIDB4NDYsMHg2MiwweDYzLDB4NDEsMHg4QiwweDhCLDB4RkQsMHg1NSwweEU1LDB4NTEsMHgy
MiwweDM5LDB4QUEsMHhBOCwweEZFLDB4RDUsCi0gICAgMHhDNSwweDUxLDB4MjMsMHgzOSwweDYw
LDB4NjAsMHhBRSwweEFGLDB4QTUsMHg0OSwweDAyLDB4MzksMHgwQiwweDJELDB4OTcsMHhGRiwK
LSAgICAweDQ3LDB4NjIsMHgwMiwweDM5LDB4MEEsMHhBQiwweDVGLDB4N0QsMHhFNSwweDUxLDB4
QzEsMHgzMCwweDgwLDB4QUEsMHhERiwweEQ1LAotICAgIDB4QTUsMHg0OSwweDIzLDB4MzksMHg2
MCwweEVGLDB4RTksMHgyRCwweEM1LDB4NTEsMHhFMiwweDMwLDB4QUQsMHhGRCwweEZGLDB4ODAs
Ci0gICAgMHgyNywweDVBLDB4NDMsMHgzOSwweDBFLDB4RjUsMHg1NSwweDdGLDB4RTUsMHg0OSww
eEMxLDB4MzAsMHhBOCwweEZGLDB4RDUsMHhGNywKLSAgICAweEU1LDB4NDksMHgyMywweDM5LDB4
RUIsMHhFRCwweEFGLDB4MkIsMHhDOSwweDZBLDB4MjMsMHgzOSwweDU1LDB4NTUsMHhGNywweDgy
LAotICAgIDB4MDYsMHg1MiwweDAzLDB4MzEsMHhGRCwweDdELDB4NkIsMHhBOCwweDg0LDB4NDEs
MHhFMiwweDMwLDB4QUUsMHhENSwweERGLDB4N0MsCi0gICAgMHhDNSwweDQ5LDB4NDMsMHgzOSww
eDVELDB4QkYsMHgwOSwweDI5LDB4QTgsMHg2QSwweDQyLDB4MzksMHg1NSwweDVGLDB4RTIsMHg4
MiwKLSAgICAweEU2LDB4NTEsMHgyMywweDM5LDB4NTUsMHg1RSwweEVBLDB4QTgsMHg4NCwweDQx
LDB4RTIsMHgzMCwweEQ1LDB4RDUsMHhERSwweEQ4LAotICAgIDB4QzUsMHg0OSwweDQzLDB4NDEs
MHhGRCwweDM3LDB4MkYsMHgzRCwweEU5LDB4NzIsMHg0MywweDQxLDB4NTUsMHhFQSwweDgyLDB4
QkIsCi0gICAgMHhDNSwweDQ5LDB4RTIsMHgzOCwweDdGLDB4RUEsMHhFOCwweEFBLDB4NDQsMHg0
MSwweEMyLDB4MzAsMHgyRCwweEI1LDB4REUsMHhGOCwKLSAgICAweEU1LDB4NTEsMHhFMiwweDMw
LDB4QUIsMHgyQiwweEFCLDB4QjUsMHg2NywweDYyLDB4NjQsMHg0MSwweDVCLDB4QzAsMHg4Myww
eEQ3LAotICAgIDB4QTUsMHg0OSwweDAyLDB4MzksMHg3QiwweEZBLDB4ODgsMHhGRSwweEE1LDB4
NTEsMHgwMiwweDM5LDB4MkQsMHgzRiwweEJFLDB4QUEsCi0gICAgMHg2NywweDYyLDB4ODQsMHg0
OSwweDJBLDB4MkEsMHhCNywweDdELDB4ODgsMHg2QSwweDY0LDB4NDksMHhBOCwweEZBLDB4RkUs
MHg1NSwKLSAgICAweDA2LDB4NUEsMHg2NCwweDQ5LDB4NjgsMHhFOCwweEJCLDB4RkYsMHhBNSww
eDUxLDB4MDIsMHgzOSwweDM3LDB4OTcsMHhERSwweDc4LAotICAgIDB4NDcsMHg2MiwweDAyLDB4
MzksMHgwQSwweEFCLDB4RDcsMHg1NSwweEE5LDB4NkEsMHhDMiwweDMwLDB4RTgsMHhGQSwweEZG
LDB4RDUsCi0gICAgMHhBNSwweDQ5LDB4MjMsMHgzOSwweEUwLDB4QjcsMHhCNywweEFGLDB4QTUs
MHg0OSwweDAyLDB4MzksMHgyRCwweEQ3LDB4REEsMHhGQSwKLSAgICAweDI3LDB4NUEsMHgwMyww
eDM5LDB4MEEsMHhGRiwweDU1LDB4NTUsMHhBNSwweDQ5LDB4MjMsMHgzOSwweDI4LDB4NkYsMHg3
RCwweEFELAotICAgIDB4QzYsMHg1MSwweDAzLDB4MzksMHg3RSwweEZGLDB4QkQsMHgwQiwweEM1
LDB4NTEsMHhFMiwweDM4LDB4QUQsMHhENywweEZFLDB4RTgsCi0gICAgMHg4NSwweDQ5LDB4RTIs
MHgzMCwweDBBLDB4REYsMHhENywweDdFLDB4QTUsMHg0OSwweDI0LDB4MzksMHhGOCwweDdELDB4
RjksMHgwQiwKLSAgICAweDI3LDB4NUEsMHg0MywweDM5LDB4NTUsMHg3RCwweEZGLDB4ODIsMHg4
NSwweDQ5LDB4QzIsMHgzMCwweEVGLDB4N0YsMHhBOCwweDAyLAotICAgIDB4ODUsMHg0OSwweEMz
LDB4MzAsMHhBQiwweEJELDB4M0YsMHhGQSwweEM2LDB4NTEsMHgyMywweDM5LDB4RDUsMHhCRiww
eDAyLDB4MDIsCi0gICAgMHhFNiwweDUxLDB4MDMsMHgzOSwweDdGLDB4RUEsMHhBMCwweDgwLDB4
QzYsMHg1MSwweDAyLDB4MzksMHg1NSwweDVFLDB4RUEsMHgwOCwKLSAgICAweEM1LDB4NTEsMHgy
MywweDM5LDB4QkQsMHgyRCwweEE1LDB4RDUsMHg0NywweDVBLDB4NjQsMHg0MSwweDdGLDB4OEEs
MHgwQiwweDhCLAotICAgIDB4RTYsMHg1MSwweDQzLDB4NDEsMHg1RCwweEVFLDB4QjgsMHhFMCww
eDg1LDB4NDksMHgwMywweDM5LDB4NTcsMHg3NiwweEYwLDB4QzAsCi0gICAgMHhDNSwweDUxLDB4
RTMsMHgzMCwweDJCLDB4MEIsMHgyQiwweEE1LDB4QzksMHg3MiwweEE0LDB4NDksMHg1RCwweDBB
LDB4OEIsMHhENSwKLSAgICAweDg4LDB4NkEsMHhBNSwweDUxLDB4NUYsMHg4MiwweDAwLDB4NUYs
MHgwNiwweDVBLDB4NjQsMHg0MSwweDVCLDB4QjgsMHhBRSwweEJFLAotICAgIDB4QzUsMHg1MSww
eDYzLDB4NDEsMHhBRSwweDI4LDB4Q0EsMHg1RiwweEM2LDB4NTEsMHg0MywweDM5LDB4MDAsMHg4
MCwweEFBLDB4RjcsCi0gICAgMHgwNiwweDUyLDB4MjMsMHgzOSwweEZBLDB4MkEsMHgzQSwweDk1
LDB4NjYsMHg2MiwweDYzLDB4NDEsMHhENSwweEFFLDB4MjIsMHgyMiwKLSAgICAweDQ3LDB4NjIs
MHhBNCwweDQ5LDB4REQsMHhBQiwweEEwLDB4ODAsMHg2OCwweDYyLDB4RTUsMHg1MSwweEFELDB4
MEIsMHhBQSwweDJBLAotICAgIDB4NjcsMHg2QSwweEU1LDB4NTEsMHg1NiwweDI4LDB4MkUsMHgz
QiwweEM3LDB4NzIsMHgyNCwweDVBLDB4RDUsMHhCRiwweDJGLDB4NkUsCi0gICAgMHhBNywweDZB
LDB4MDUsMHg1QSwweEFFLDB4ODIsMHhBOCwweDc1LDB4NjYsMHg2MiwweEM0LDB4NTEsMHgwOCww
eDJBLDB4RUEsMHhGRCwKLSAgICAweDY3LDB4NkEsMHhFNSwweDUxLDB4MkMsMHg4QSwweDhBLDB4
QTYsMHg4OCwweDZBLDB4NDcsMHg2MiwweDc3LDB4NUYsMHhENywweDk5LAotICAgIDB4ODcsMHg2
QSwweDI1LDB4NUEsMHg2OCwweEFBLDB4RUIsMHhGQiwweEE3LDB4NkEsMHhDNSwweDUxLDB4N0Es
MHhFOCwweDhBLDB4MkEsCi0gICAgMHg0NiwweDVBLDB4MjMsMHgzOSwweDU1LDB4NUUsMHhEQSww
eEEwLDB4ODUsMHg0OSwweDIzLDB4MzksMHgwRiwweEY1LDB4MzUsMHhENywKLSAgICAweDY4LDB4
NjIsMHg0NCwweDQxLDB4NTcsMHg3NSwweDI3LDB4M0QsMHg4OCwweDYyLDB4NjQsMHg0MSwweDU1
LDB4NTUsMHhERSwweEYwLAotICAgIDB4QTUsMHg0OSwweDAzLDB4MzEsMHhFNywweEZGLDB4NjAs
MHg1OCwweEU2LDB4NTEsMHg0MywweDM5LDB4NTUsMHgzNSwweEI5LDB4QjUsCi0gICAgMHgwQSww
eDczLDB4NDMsMHgzOSwweDU1LDB4RkIsMHhFMiwweDhCLDB4QzUsMHg0OSwweDAzLDB4MzksMHg1
RiwweDdBLDB4QzgsMHg4MCwKLSAgICAweDY0LDB4NDEsMHhFMiwweDMwLDB4MkEsMHgwOSwweDJG
LDB4RkUsMHhBOCwweDZBLDB4ODQsMHg0MSwweDdELDB4OEIsMHgyOSwweEQ1LAotICAgIDB4ODgs
MHg2MiwweDYzLDB4MzksMHg1NSwweEZFLDB4RjAsMHhGQSwweEE1LDB4NDksMHgwMiwweDM5LDB4
QkQsMHhCNiwweEZDLDB4NzgsCi0gICAgMHg2OCwweDYyLDB4MDIsMHgzOSwweEZCLDB4MEEsMHg4
QiwweEY1LDB4ODgsMHg2MiwweEM1LDB4NTEsMHg3NSwweEMwLDB4RkUsMHg1NSwKLSAgICAweDUy
LDB4QzUsMHhDNSwweDUxLDB4MzUsMHhENSwweDU1LDB4NTUsMHg1NSwweEU2LDB4NDYsMHg2Miww
eDAwLDB4MDIsMHgwRCwweEI1LAotICAgIDB4QjYsMHhFRSwweDM1LDB4RTYsMHg4OCwweDIwLDB4
MjIsMHg4RCwweEI2LDB4RUUsMHg5NiwweEVFLDB4REYsMHg3RiwweDZGLDB4N0YsCi0gICAgMHhC
NiwweEY2LDB4OTYsMHhFRSwweEVELDB4RUQsMHhGOSwweDk3LDB4OTYsMHhGNiwweEI2LDB4RUUs
MHhFRSwweEZBLDB4N0YsMHhCRiwKLSAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4QUUsMHhCOSww
eDNELDB4NTcsMHg5NiwweEY2LDB4QjYsMHhFRSwweEZFLDB4N0UsMHhGNiwweEY3LAotICAgIDB4
RjcsMHhGNiwweEI2LDB4RUUsMHg3NSwweEI1LDB4QTUsMHhBRCwweEY3LDB4RjYsMHg5NiwweEVF
LDB4QUEsMHhBQSwweEE4LDB4N0YsCi0gICAgMHhENywweEY2LDB4OTYsMHhFRSwweEZBLDB4RkEs
MHhCQSwweERFLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBRiwweEFCLDB4OEYsMHgyRCwKLSAgICAw
eEQ2LDB4RjYsMHg5NiwweEVFLDB4RTgsMHhGMCwweEU4LDB4NzgsMHhCNiwweEVFLDB4NzUsMHhF
NiwweDU3LDB4QkUsMHgyRSwweEJBLAotICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHhGNywweEJG
LDB4MkEsMHgwMywweEY3LDB4RjYsMHg5NiwweEVFLDB4RjcsMHhBQSwweEJBLDB4QUMsCi0gICAg
MHhENywweEY2LDB4QjYsMHhFRSwweEMwLDB4NjAsMHg3OCwweDA4LDB4RjcsMHhGNiwweEI3LDB4
RUUsMHhGNSwweEJELDB4QUYsMHg4QSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RDUsMHgz
NSwweDBGLDB4MEEsMHgxOCwweEZGLDB4RDcsMHhGNiwweEJGLDB4QUYsMHhCQiwweEFGLAotICAg
IDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBQiwweDdBLDB4NkIsMHhFRSwweDE4LDB4RkYsMHhGOCww
eEY2LDB4QUYsMHg4QiwweDBCLDB4QUEsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhFRSwweEE4LDB4
QTgsMHg4MCwweDA4LDB4RjgsMHhGRSwweDE4LDB4RjcsMHgzRiwweEFELDB4RkQsMHhGNywKLSAg
ICAweDE4LDB4RkYsMHhENywweEY2LDB4RkYsMHhGQiwweEJFLDB4RjAsMHgxOCwweEY3LDB4RDcs
MHhGNiwweEJGLDB4RUIsMHg4RSwweEJBLAotICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHhCRCww
eEZGLDB4RDUsMHhENSwweDM3LDB4RjcsMHhEOCwweEY2LDB4REYsMHhCRiwweERGLDB4RjUsCi0g
ICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweDVGLDB4MjAsMHgwMCwweEI4LDB4RjcsMHhGNiwweEI2
LDB4RUUsMHhBQiwweDdCLDB4NkMsMHg4QSwKLSAgICAweEQ3LDB4RjYsMHg5NywweEVFLDB4MDAs
MHgwOCwweDlFLDB4NzgsMHhGOCwweEY2LDB4QjcsMHhFRSwweEJGLDB4RjYsMHhFQSwweDNELAot
ICAgIDB4RjcsMHhGNiwweEI3LDB4RUUsMHg4MywweEFGLDB4RTUsMHg3QiwweEY3LDB4RjYsMHhC
NywweEVFLDB4QUEsMHgwQSwweEFBLDB4QjUsCi0gICAgMHhGNywweEY2LDB4OTYsMHhFRSwweDdG
LDB4RUEsMHgyMiwweDJBLDB4RDcsMHhGNiwweDc1LDB4RTYsMHg3RSwweEZGLDB4REUsMHhCOCwK
LSAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4NkEsMHg2QSwweEY4LDB4RUMsMHgzNSwweEU2LDB4
MTAsMHhCRCwweEZDLDB4NzgsMHg3OCwweDcwLAotICAgIDB4MzQsMHhFNiwweDEwLDB4QzUsMHgw
MCwweDAzLDB4MEIsMHgyOSwweDU1LDB4RTYsMHhGMywweERELDB4N0UsMHhGRSwweEZFLDB4RkMs
Ci0gICAgMHgxNCwweERFLDB4RDMsMHhERCwweEUyLDB4NjIsMHg4MCwweEEwLDB4MTQsMHhERSww
eEQzLDB4REQsMHhCMywweEJBLDB4QkUsMHhERSwKLSAgICAweDE0LDB4REUsMHhEMiwweERELDB4
QTMsMHhBMCwweDg4LDB4QkIsMHgxNCwweERFLDB4QjIsMHhENSwweEU4LDB4QTIsMHhBMiwweDg4
LAotICAgIDB4RjMsMHhERCwweEQzLDB4RDUsMHgyNywweDBFLDB4QjYsMHg4QSwweDE0LDB4REUs
MHhEMywweERELDB4RUEsMHhDMiwweEM4LDB4RDIsCi0gICAgMHg4NywweDZBLDB4NjMsMHg0OSww
eEY1LDB4M0QsMHhCNywweERELDB4MjksMHg3QiwweDA1LDB4NUEsMHg1NSwweEEwLDB4ODgsMHhC
RCwKLSAgICAweDg4LDB4NjIsMHg2NCwweDQ5LDB4NzcsMHg3RSwweEY4LDB4RjgsMHhDNiwweDUx
LDB4NjMsMHg0MSwweEY1LDB4N0IsMHhBOCwweDZCLAotICAgIDB4QTUsMHg0OSwweDQzLDB4NDEs
MHhFOCwweEE4LDB4MjAsMHhERSwweEU2LDB4NTEsMHgyMywweDM5LDB4NTUsMHg1RiwweEVBLDB4
Q0IsCi0gICAgMHhFNiwweDUxLDB4RTIsMHgzMCwweDJBLDB4MEIsMHhBQiwweDU3LDB4ODgsMHg2
QSwweDAyLDB4MzEsMHg4MCwweDBBLDB4RkIsMHg1NSwKLSAgICAweEU2LDB4NTEsMHgwMiwweDMx
LDB4QTgsMHhBMCwweEZFLDB4NTcsMHhBNSwweDQ5LDB4MDIsMHgzMSwweDVFLDB4NjgsMHhDQiww
eENCLAotICAgIDB4QTUsMHg0OSwweDAyLDB4MzEsMHgwMiwweDI5LDB4NTUsMHg1NywweEE5LDB4
NkEsMHhDMSwweDI4LDB4MDIsMHhBQiwweEZGLDB4RDUsCi0gICAgMHgyNywweDVBLDB4MDIsMHgz
MSwweEE4LDB4RkEsMHhGNywweDVGLDB4QzUsMHg0OSwweEUyLDB4MzAsMHg3OCwweDZFLDB4RUIs
MHhFMiwKLSAgICAweDg1LDB4NDksMHhFMiwweDMwLDB4MEIsMHhCRiwweDc3LDB4NkEsMHgwNiww
eDVBLDB4RTIsMHgzMCwweDAyLDB4QjcsMHhENSwweDc1LAotICAgIDB4QzUsMHg0OSwweDIzLDB4
MzksMHhBQywweDVGLDB4NUQsMHhCQiwweDA1LDB4NTIsMHgwMiwweDMxLDB4NUYsMHhCNywweEJE
LDB4MDAsCi0gICAgMHhBNSwweDQxLDB4MDIsMHgzOSwweEZGLDB4NTUsMHg2RSwweDg4LDB4ODQs
MHg0OSwweEUyLDB4MzAsMHgzMCwweEQ1LDB4OTcsMHhERiwKLSAgICAweEM1LDB4NDksMHgyMyww
eDM5LDB4NzUsMHg1NSwweEJGLDB4MjMsMHg4NywweDYyLDB4MjIsMHgzOSwweDU1LDB4NTUsMHhE
RiwweEMyLAotICAgIDB4ODUsMHg0OSwweEUyLDB4MzAsMHg1NSwweDc3LDB4RUEsMHg4MCwweDIz
LDB4MzksMHhFMiwweDMwLDB4MkQsMHgzNSwweDk3LDB4NTgsCi0gICAgMHhBNSwweDUxLDB4QzIs
MHgzMCwweEZELDB4QkUsMHgyQSwweDJCLDB4MjcsMHg2MiwweDYzLDB4NDEsMHg3NSwweDdELDB4
RUEsMHhBMCwKLSAgICAweEE1LDB4NTEsMHg2NCwweDQ5LDB4Q0QsMHg5NSwweEZGLDB4QTAsMHhB
NSwweDUxLDB4NDQsMHg0OSwweEVGLDB4OUEsMHhCQSwweDNBLAotICAgIDB4MDcsMHg2MiwweDY0
LDB4NDksMHhGRCwweDJELDB4M0YsMHhGRiwweDQ4LDB4NkEsMHg2NCwweDQxLDB4NUYsMHhFMCww
eDgwLDB4RUEsCi0gICAgMHhDNSwweDUxLDB4MjMsMHgzOSwweDU3LDB4N0YsMHhGQSwweEFDLDB4
ODUsMHg0OSwweEUzLDB4MzAsMHhBNSwweDJGLDB4QkUsMHg1RiwKLSAgICAweEU2LDB4NTksMHgy
MywweDM5LDB4QUEsMHgyMiwweEFBLDB4RjUsMHg2OCwweDYyLDB4NDQsMHg0MSwweDVGLDB4RjAs
MHhFQSwweDVELAotICAgIDB4ODUsMHg0OSwweDIzLDB4MzksMHhGRiwweEE4LDB4QTgsMHhGNSww
eDg1LDB4NDksMHhFMywweDMwLDB4MEQsMHgyRCwweEQ3LDB4N0YsCi0gICAgMHhBOSwweDZBLDB4
NDQsMHg0MSwweDBGLDB4MkYsMHhGNSwweDU1LDB4ODksMHg2QSwweDAzLDB4MzEsMHhGQSwweEIw
LDB4RkUsMHg1NSwKLSAgICAweEM2LDB4NTEsMHgyMywweDM5LDB4N0EsMHg2MiwweEVBLDB4RjUs
MHhFNiwweDUxLDB4QzIsMHgzMCwweDBGLDB4QTcsMHhGNywweEZFLAotICAgIDB4NjgsMHg2Miww
eDQ0LDB4MzksMHg4MiwweEFGLDB4NTUsMHg1NSwweEU2LDB4NTEsMHhDMiwweDMwLDB4ODgsMHhB
OCwweEZGLDB4RDcsCi0gICAgMHg4NSwweDQ5LDB4QzIsMHgzMCwweDdDLDB4RTgsMHhBRSwweDIz
LDB4QzUsMHg0OSwweEUyLDB4MzgsMHgyQiwweEI1LDB4RjcsMHgyMCwKLSAgICAweEU2LDB4NTks
MHgwMiwweDMxLDB4MDAsMHhGRSwweDdGLDB4RUUsMHhFNiwweDUxLDB4RTIsMHgzMCwweEE4LDB4
RkYsMHhGNSwweEZGLAotICAgIDB4MjYsMHg1QSwweDQzLDB4NDEsMHg1NSwweDVGLDB4QUYsMHgw
QiwweDg4LDB4NjIsMHgyMiwweDM5LDB4RkQsMHg1NSwweEZGLDB4QTAsCi0gICAgMHhFNSwweDUx
LDB4MDMsMHgzOSwweEI4LDB4N0YsMHg3RiwweEFBLDB4QTUsMHg0OSwweDAyLDB4MzksMHhDRSww
eEJELDB4MjUsMHhCNywKLSAgICAweEE4LDB4NkEsMHgyMywweDM5LDB4NTUsMHg1RCwweEFGLDB4
MkYsMHhBOCwweDZBLDB4NDMsMHg0MSwweDU1LDB4RkYsMHhBRSwweDAwLAotICAgIDB4ODgsMHg2
QSwweDY0LDB4NDEsMHg1NSwweDU1LDB4RkUsMHhGOCwweDA2LDB4NUEsMHg0MywweDQxLDB4NTUs
MHhGRiwweEFBLDB4QTAsCi0gICAgMHgwNiwweDVBLDB4NDMsMHg0MSwweDU1LDB4RjcsMHgyRSww
eDBBLDB4MjcsMHg1QSwweDQ0LDB4NDEsMHhGNSwweEFGLDB4QUMsMHhBOCwKLSAgICAweEU2LDB4
NTEsMHg2NCwweDQ5LDB4RjUsMHgyRSwweEFBLDB4ODIsMHg0NywweDYyLDB4QzYsMHg1MSwweDAz
LDB4QUIsMHg3NSwweEQ1LAotICAgIDB4ODksMHg2QSwweEU2LDB4NTEsMHhGQSwweDhBLDB4RTEs
MHhFRCwweDg4LDB4NkEsMHgyNywweDVBLDB4RjcsMHhERCwweEVELDB4QUQsCi0gICAgMHg4OCww
eDZBLDB4RTYsMHg1OSwweEJBLDB4MjcsMHgyQywweEJBLDB4ODcsMHg2QSwweDA1LDB4NUEsMHg2
MCwweEUwLDB4NDIsMHhBMCwKLSAgICAweEU1LDB4NTEsMHgyMywweDQxLDB4MkUsMHhERiwweDU2
LDB4NUMsMHg4NywweDZBLDB4NjMsMHg0MSwweEFGLDB4MkEsMHhCRCwweEQ1LAotICAgIDB4NDcs
MHg2MiwweDg0LDB4NDksMHhCQSwweEUwLDB4QjgsMHg1NSwweDQ3LDB4NjIsMHg2NCwweDQ5LDB4
MjIsMHgyQSwweDJFLDB4OTUsCi0gICAgMHg4NywweDZBLDB4MjYsMHg2MiwweEE4LDB4RTIsMHgy
RSwweDU5LDB4ODcsMHg2QSwweDI2LDB4NUEsMHg4OCwweDgyLDB4QUIsMHhENSwKLSAgICAweDg3
LDB4NjIsMHgyNiwweDVBLDB4RTMsMHhDMCwweEVBLDB4NzUsMHgwNiwweDVBLDB4MDMsMHgzOSww
eDdFLDB4NzgsMHhFMCwweEUwLAotICAgIDB4RTYsMHg1MSwweDIzLDB4MzksMHgyRCwweEJELDB4
NTUsMHg1NSwweDY4LDB4NjIsMHgyMywweDM5LDB4QTAsMHhFQSwweDU1LDB4REQsCi0gICAgMHg0
NywweDYyLDB4NDQsMHgzOSwweDdGLDB4NTcsMHg1RCwweDhCLDB4ODUsMHg0OSwweDAyLDB4MzEs
MHhCNywweEQ3LDB4REYsMHg4MCwKLSAgICAweDA2LDB4NTIsMHgyMywweDM5LDB4MEIsMHhGNSww
eEZGLDB4QkYsMHhDNSwweDQ5LDB4MjMsMHgzOSwweEE4LDB4RDcsMHhGRiwweEJBLAotICAgIDB4
QTUsMHg0OSwweDAzLDB4MzEsMHg1RSwweDVGLDB4QUEsMHhBMCwweDY0LDB4NDEsMHgyMywweDM5
LDB4QkQsMHhGNSwweEUyLDB4NDAsCi0gICAgMHg4NCwweDQxLDB4MjMsMHgzOSwweEFBLDB4RkYs
MHgzRiwweEFELDB4RTYsMHg1MSwweDQzLDB4MzksMHg1NSwweDc3LDB4RUIsMHgwQiwKLSAgICAw
eEU2LDB4NTEsMHhFMiwweDMwLDB4QkYsMHg1RiwweDdFLDB4RTgsMHhBNSwweDQ5LDB4MDIsMHgz
OSwweDAwLDB4OEIsMHhBRCwweEI1LAotICAgIDB4QTUsMHg0OSwweDY0LDB4NDksMHhCRSwweEI2
LDB4OEEsMHg2OCwweEE4LDB4NzIsMHg4NCwweDQ5LDB4M0QsMHhGNSwweEQ1LDB4NTUsCi0gICAg
MHg3NSwweEVFLDB4QzUsMHg1MSwweDAyLDB4MkQsMHhCNSwweEQ1LDB4OTYsMHhFRSwweDhGLDB4
QUMsMHgwMCwweDAwLDB4MDAsMHgwOSwKLSAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4QjcsMHgz
RiwweEI1LDB4N0QsMHhCNiwweEY2LDB4OTYsMHhFRSwweDYyLDB4QzAsMHhDQiwweDRBLAotICAg
IDB4QjYsMHhFRSwweDk2LDB4RUUsMHhCRCwweEFELDB4QUEsMHgyQiwweEQ3LDB4RjYsMHg5Niww
eEVFLDB4QkYsMHgyRiwweDBBLDB4MEEsCi0gICAgMHhENywweEY2LDB4NzUsMHhFRSwweDAwLDB4
ODgsMHhBOCwweDc4LDB4QjYsMHhFRSwweDc1LDB4RTYsMHhBOCwweEJFLDB4QkYsMHhCRiwKLSAg
ICAweEI2LDB4RUUsMHg5NiwweEVFLDB4QkIsMHhEOSwweEVDLDB4NzUsMHhENywweEY2LDB4OTYs
MHhFRSwweDA3LDB4MEYsMHhBRiwweEFELAotICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHg3QSww
eEZBLDB4RUEsMHg2QiwweEQ3LDB4RjYsMHg1NCwweEU2LDB4QTIsMHhBOCwweEFBLDB4OTcsCi0g
ICAgMHhGNywweEY2LDB4OTYsMHhFRSwweDhBLDB4MkEsMHhGQSwweEY3LDB4RjcsMHhGNiwweEI2
LDB4RUUsMHg4QSwweDI4LDB4RUIsMHhGRiwKLSAgICAweEY3LDB4RjYsMHhCNywweEY2LDB4MDgs
MHgyRSwweEJGLDB4N0UsMHhGNywweEY2LDB4OTYsMHhFRSwweDAwLDB4MDAsMHgyQiwweERGLAot
ICAgIDB4RjcsMHhGNiwweDk2LDB4RUUsMHgwMCwweDAwLDB4MDAsMHgzRCwweDE4LDB4RkYsMHhG
NywweEY2LDB4NTUsMHg1NywweDdGLDB4NTUsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEVB
LDB4RkUsMHhGQiwweEZFLDB4MTgsMHhGNywweEQ3LDB4RjYsMHgyQSwweEFFLDB4RjcsMHhGRiwK
LSAgICAweDE4LDB4RjcsMHhGNywweEY2LDB4MkIsMHhBNywweDU1LDB4NTUsMHgxOCwweEY3LDB4
RDcsMHhGNiwweDIyLDB4MEEsMHgyRSwweEZGLAotICAgIDB4MTgsMHhGNywweEQ4LDB4RjYsMHhB
OCwweDg4LDB4MkEsMHhBOSwweDE4LDB4RkYsMHhGOCwweEY2LDB4NTcsMHhGNiwweEJGLDB4QUYs
Ci0gICAgMHgxOCwweEY3LDB4RjcsMHhGNiwweDU1LDB4NjIsMHg4OCwweDAwLDB4MTgsMHhGNyww
eEQ3LDB4RUUsMHhERiwweEY3LDB4QUUsMHhBOCwKLSAgICAweDE4LDB4RjcsMHhENywweEY2LDB4
NzcsMHhGRiwweEFFLDB4QUEsMHgxOCwweEY3LDB4RDcsMHhGNiwweEZGLDB4N0YsMHg2RSwweDdB
LAotICAgIDB4RjcsMHhGNiwweEI3LDB4RUUsMHg3OCwweEVFLDB4QkYsMHhFQiwweEQ3LDB4RjYs
MHg3NSwweEU2LDB4QUUsMHg3QywweEUwLDB4MDIsCi0gICAgMHhENywweEY2LDB4OTYsMHhFRSww
eDg4LDB4MDEsMHgwRCwweDM3LDB4RDcsMHhGNiwweEI2LDB4RUUsMHhBNSwweEFELDB4QUUsMHg5
OCwKLSAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4MDIsMHhBNiwweEZFLDB4RkMsMHhENywweEY2
LDB4OTYsMHhFRSwweEUwLDB4ODgsMHgwMiwweEFFLAotICAgIDB4RDYsMHhGNiwweDM0LDB4RTYs
MHg3QSwweDdFLDB4N0UsMHhGOCwweDM0LDB4RTYsMHg3MSwweENELDB4NzAsMHg3MCwweDYwLDB4
NjAsCi0gICAgMHhGMywweERELDB4MTAsMHhDNSwweDJGLDB4M0QsMHhCNSwweEE1LDB4MzQsMHhF
NiwweEQzLDB4RDUsMHhBMCwweEEyLDB4OEIsMHgwOSwKLSAgICAweDE0LDB4REUsMHhCMiwweEQ1
LDB4QTgsMHhBQSwweDgwLDB4QzgsMHgxMywweERFLDB4RDIsMHhENSwweERBLDB4RUMsMHhCOCww
eEJFLAotICAgIDB4MTMsMHhERSwweEQzLDB4REQsMHhCRCwweDJGLDB4QUEsMHgwQSwweDM0LDB4
RTYsMHhGMywweERELDB4RjcsMHhFQSwweDZBLDB4RkEsCi0gICAgMHhGMywweERELDB4RDMsMHhE
NSwweDIwLDB4M0EsMHhBMCwweDAwLDB4MTMsMHhERSwweEQzLDB4RDUsMHhBOCwweEVGLDB4RkUs
MHhGQSwKLSAgICAweDg0LDB4NDksMHgwMywweDM5LDB4RUYsMHhCNSwweEE3LDB4MjYsMHg2Nyww
eDYyLDB4NDMsMHg0MSwweDU1LDB4RkQsMHgwQiwweDBGLAotICAgIDB4RUEsMHg3MiwweDY0LDB4
NDEsMHg1NSwweEQ1LDB4QTIsMHgwMiwweEM4LDB4NzIsMHg0MywweDM5LDB4NzUsMHg1NywweEZB
LDB4MjAsCi0gICAgMHhFNiwweDcyLDB4NjIsMHg0MSwweDU1LDB4NTUsMHhGQSwweEEwLDB4MDYs
MHg1MiwweDY0LDB4NDEsMHhFNSwweEFGLDB4RkUsMHhFQywKLSAgICAweEM1LDB4NDksMHhFMiww
eDMwLDB4NUYsMHg3QSwweEFBLDB4ODIsMHg2NCwweDQxLDB4QTEsMHgyOCwweEY1LDB4QkYsMHhG
QSwweEU4LAotICAgIDB4RTUsMHg1MSwweDQzLDB4MzksMHg1NSwweEVELDB4MjksMHhBRCwweEU5
LDB4NkEsMHg0MywweDM5LDB4RjUsMHhGMywweDgyLDB4RUYsCi0gICAgMHhFNSwweDUxLDB4NDMs
MHgzOSwweDdCLDB4QkEsMHhBOCwweEY4LDB4ODUsMHg0MSwweEUyLDB4MzAsMHhCNSwweERFLDB4
RTgsMHhFQSwKLSAgICAweEE1LDB4NDksMHgwMiwweDMxLDB4QTIsMHgwQSwweDJELDB4OTUsMHhB
OCwweDZBLDB4NjQsMHg0MSwweEVCLDB4MDMsMHhBRiwweDU1LAotICAgIDB4RTYsMHg1MSwweDAy
LDB4MzEsMHhFQSwweEU4LDB4RjgsMHhENywweDg1LDB4NDEsMHhFMiwweDMwLDB4N0IsMHg3MCww
eDdFLDB4NkIsCi0gICAgMHhBNSwweDQ5LDB4MDIsMHgzMSwweDBCLDB4MDksMHhCNSwweDU1LDB4
RTgsMHg2QSwweDIzLDB4MzksMHg4MiwweEFCLDB4RjcsMHg1NSwKLSAgICAweDI3LDB4NUEsMHgw
MiwweDMxLDB4QkEsMHhFOCwweEZCLDB4NTcsMHg2NCwweDQxLDB4QzIsMHgyOCwweDVBLDB4Rjgs
MHhGOCwweEJCLAotICAgIDB4RTYsMHg1MSwweEMxLDB4MjgsMHgyQiwweEFELDB4RDUsMHhGRiww
eDg3LDB4NjIsMHgyMywweDM5LDB4ODIsMHhGRiwweDU1LDB4NTUsCi0gICAgMHg4NCwweDQ5LDB4
RTIsMHgzMCwweDAwLDB4MDgsMHhGRiwweEY1LDB4NjQsMHg0MSwweDAyLDB4MzksMHg1RSwweEYw
LDB4RTAsMHg4MCwKLSAgICAweDg1LDB4NDksMHhFMiwweDMwLDB4MkYsMHgyRCwweEJGLDB4OEEs
MHhFNSwweDU5LDB4NDQsMHg0MSwweEE4LDB4RkYsMHg1RCwweERGLAotICAgIDB4QzUsMHg1MSww
eDY0LDB4NDksMHg3QywweEQ1LDB4NzUsMHgzRiwweEU1LDB4NTksMHg0NCwweDQ5LDB4N0IsMHhF
QiwweEJBLDB4QUEsCi0gICAgMHg0NywweDZBLDB4NDQsMHg0OSwweDc3LDB4NUYsMHhGRSwweEEy
LDB4QTUsMHg1MSwweDAyLDB4MzksMHhBQSwweDZCLDB4Q0IsMHhBQSwKLSAgICAweDY0LDB4NDEs
MHhDMSwweDMwLDB4RUUsMHg5NSwweEZGLDB4RkMsMHhDNSwweDUxLDB4RTIsMHgzMCwweDdELDB4
RUYsMHgyQiwweDBCLAotICAgIDB4RUEsMHg3MiwweEUyLDB4MzgsMHg1NSwweEZGLDB4RkUsMHg4
MiwweEM2LDB4NTEsMHgyMywweDM5LDB4NTUsMHg1RSwweEVBLDB4QTgsCi0gICAgMHg4NSwweDQx
LDB4RTIsMHgzMCwweDk1LDB4MzUsMHgxRSwweDdBLDB4QTgsMHg2QSwweDQ0LDB4NDEsMHg1NSww
eEJGLDB4MkQsMHhCOSwKLSAgICAweDZBLDB4ODMsMHgyMywweDM5LDB4NTUsMHg3RiwweEUyLDB4
ODIsMHhBNSwweDQ5LDB4MDMsMHgzOSwweDVGLDB4RkEsMHhBMCwweDgwLAotICAgIDB4QTUsMHg0
OSwweEUyLDB4MzAsMHgyNSwweEE1LDB4QkUsMHg3RSwweDI3LDB4NUEsMHg4NCwweDQxLDB4Mjcs
MHgwRiwweDJCLDB4NzUsCi0gICAgMHg2OCwweDYyLDB4ODQsMHg0MSwweDc3LDB4N0MsMHhGQSww
eDdFLDB4QTUsMHg0OSwweDAzLDB4MzksMHg1NiwweEUwLDB4ODgsMHhBRSwKLSAgICAweEU2LDB4
NTEsMHgwMywweDM5LDB4QkQsMHgzNywweEI1LDB4NTcsMHg4OCwweDZBLDB4MjMsMHgzOSwweDhB
LDB4QUEsMHhFRiwweDc1LAotICAgIDB4MDYsMHg1QSwweDYzLDB4NDEsMHhGRSwweEVDLDB4RkEs
MHhENSwweEE0LDB4NDksMHgwMywweDM5LDB4N0MsMHg3QywweEVBLDB4QUEsCi0gICAgMHgwNiww
eDVBLDB4MDIsMHgzMSwweDA5LDB4MEQsMHhENSwweDU1LDB4QzksMHg2QSwweDIyLDB4MzksMHhF
MiwweDhBLDB4REYsMHhENSwKLSAgICAweEM1LDB4NTEsMHg2MywweDM5LDB4QjgsMHhFMCwweDdB
LDB4QkYsMHhBNSwweDQ5LDB4RTIsMHgzMCwweEZDLDB4NTIsMHhFQSwweDAwLAotICAgIDB4MjYs
MHg1QSwweDAzLDB4MzEsMHgyQiwweEJELDB4RkQsMHhBMiwweDg4LDB4NkEsMHg0MywweDM5LDB4
MDAsMHhGRiwweDc1LDB4RkYsCi0gICAgMHg4OCwweDZBLDB4NDMsMHg0MSwweEE4LDB4RkYsMHg1
NSwweDdGLDB4RTYsMHg1MSwweEUzLDB4MzgsMHgwMCwweEZBLDB4NTUsMHhGNywKLSAgICAweDA2
LDB4NUEsMHg0NCwweDQxLDB4ODgsMHhGRiwweEZELDB4MkYsMHg4NywweDYyLDB4QTQsMHg0OSww
eDVGLDB4NTUsMHhGRCwweDAwLAotICAgIDB4NDYsMHg1QSwweDY0LDB4NDEsMHg2RiwweDU3LDB4
RkEsMHhFMCwweEM2LDB4NTEsMHg2NCwweDQxLDB4RkUsMHg3RCwweEJCLDB4ODIsCi0gICAgMHgy
NiwweDVBLDB4NjQsMHg0MSwweDBCLDB4MkQsMHhBRiwweEJGLDB4NjgsMHg2MiwweEM1LDB4NTEs
MHg4MiwweDhBLDB4QTgsMHhFNSwKLSAgICAweDY3LDB4NjIsMHg2MywweDQxLDB4MDgsMHhBQSww
eEZGLDB4RDUsMHg2NywweDZBLDB4QzUsMHg1MSwweEEwLDB4REYsMHhCRCwweDM1LAotICAgIDB4
NjcsMHg2QSwweDQzLDB4NDEsMHg3QSwweDdBLDB4RUEsMHhFOCwweEM1LDB4NTEsMHhFMiwweDM4
LDB4QjcsMHhCNywweEZBLDB4RjAsCi0gICAgMHhFNSwweDU5LDB4NDMsMHg0MSwweEQ3LDB4Rjks
MHgyQiwweEE1LDB4ODgsMHg2QSwweDY0LDB4NDksMHhENSwweERGLDB4QzIsMHhBQSwKLSAgICAw
eDI2LDB4NjIsMHhBNSwweDQ5LDB4OEEsMHhFQiwweEJBLDB4NUUsMHhFNSwweDUxLDB4MDMsMHgz
OSwweDhBLDB4QUUsMHhERSwweERFLAotICAgIDB4MjYsMHg1QSwweDQzLDB4NDEsMHhBRiwweDNG
LDB4MkYsMHhGNSwweDY4LDB4NjIsMHg4NCwweDQ5LDB4N0YsMHhGRSwweEY4LDB4REQsCi0gICAg
MHhFNiwweDUxLDB4NDMsMHg0MSwweDVGLDB4NzgsMHg0MCwweDVCLDB4NjQsMHg0MSwweDAzLDB4
MzksMHgwMywweDNELDB4NTUsMHg1RSwKLSAgICAweDBBLDB4N0IsMHgyMywweDM5LDB4OEIsMHhB
RiwweEZELDB4NTUsMHg0NywweDVBLDB4MjMsMHgzOSwweEJFLDB4QTgsMHhGRSwweDU1LAotICAg
IDB4RTUsMHg1MSwweDAzLDB4MzksMHg4QSwweEFBLDB4RkEsMHg1NywweEE1LDB4NDksMHgwMyww
eDM5LDB4MDAsMHhBQywweEZGLDB4NTUsCi0gICAgMHhBNSwweDQ5LDB4MDMsMHgzOSwweDg4LDB4
QkUsMHg3NiwweDU1LDB4ODUsMHg0OSwweDAzLDB4MzksMHhFOCwweEY4LDB4NTUsMHg1NSwKLSAg
ICAweDQzLDB4MzksMHhFMywweDM4LDB4OEUsMHhBQSwweEVBLDB4RkQsMHhFNiwweDUxLDB4RTIs
MHgzOCwweDBBLDB4QkYsMHhGNSwweDVELAotICAgIDB4RTYsMHg1MSwweEUyLDB4MzgsMHhBOCww
eEZFLDB4NUYsMHhGNSwweDY0LDB4NDEsMHgwMiwweDM5LDB4RkMsMHg3QSwweDdCLDB4RkEsCi0g
ICAgMHg2NCwweDQ5LDB4MDIsMHgzOSwweEE4LDB4RkQsMHg3RCwweEZFLDB4NjQsMHg0OSwweDAy
LDB4MzksMHgwOCwweEZGLDB4QUYsMHhBRCwKLSAgICAweEE2LDB4NTEsMHgwMiwweDM5LDB4Mjgs
MHhCOSwweEJELDB4MkYsMHg1NCwweEU2LDB4MDYsMHg1QSwweDI5LDB4QjUsMHhENSwweEQ1LAot
ICAgIDB4OTYsMHhFRSwweENFLDB4QjQsMHgwMCwweDAwLDB4MDMsMHgwOSwweEI2LDB4RjYsMHg5
NiwweEVFLDB4QUEsMHhFRSwweEFBLDB4MEUsCi0gICAgMHhGNywweEY2LDB4OTYsMHhFRSwweEY3
LDB4QkYsMHhCRCwweDJCLDB4RDcsMHhGNiwweDk2LDB4RUUsMHgwMCwweEUwLDB4NjgsMHg3MCwK
LSAgICAweEI2LDB4RjYsMHg3NiwweEVFLDB4N0EsMHg3RiwweEQ2LDB4NzUsMHhCNiwweEVFLDB4
NzYsMHhFRSwweEJELDB4QUQsMHgzRCwweEFELAotICAgIDB4QjYsMHhFRSwweDk2LDB4RUUsMHhE
RCwweEI1LDB4RTcsMHg3NywweEQ3LDB4RjYsMHg5NiwweEVFLDB4RUYsMHhGQiwweDY5LDB4RTks
Ci0gICAgMHg5NiwweEVFLDB4RjQsMHhERCwweDgwLDB4ODAsMHhGMCwweDcwLDB4NzYsMHhFNiww
eEY0LDB4REQsMHgzRSwweEJELDB4M0QsMHhBRCwKLSAgICAweEI2LDB4RUUsMHg1NSwweEU2LDB4
MEEsMHgyRiwweEE5LDB4QjcsMHhENywweEY2LDB4NzUsMHhFNiwweDBFLDB4MkIsMHhGQiwweEZG
LAotICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHgyMCwweDIyLDB4QUYsMHhGRCwweEY4LDB4RkUs
MHg3NSwweEU2LDB4NUUsMHhBQSwweDgyLDB4MEEsCi0gICAgMHhGOCwweEY2LDB4NTUsMHhFNiww
eEZGLDB4NUYsMHhFMCwweEEwLDB4RDcsMHhGNiwweDM0LDB4REUsMHgyMiwweEVGLDB4NUYsMHhG
OCwKLSAgICAweEQ3LDB4RjYsMHgzNCwweERFLDB4MDAsMHgwMiwweEU3LDB4NTUsMHhGNywweEY2
LDB4NTQsMHhFNiwweDAwLDB4MDAsMHgyQSwweEI1LAotICAgIDB4MzgsMHhGNywweEQ3LDB4RjYs
MHg1NywweDdGLDB4RkYsMHhCNSwweEY3LDB4RjYsMHhENywweEY2LDB4QkYsMHhBQiwweEIwLDB4
MjAsCi0gICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweDc1LDB4NEUsMHg4OCwweDgwLDB4MTgsMHhG
NywweEQ3LDB4RjYsMHgyNywweDVELDB4NTcsMHhFQiwKLSAgICAweDE4LDB4RjcsMHhENywweEY2
LDB4ODIsMHhGRiwweEQ1LDB4RDcsMHgxOCwweEY3LDB4RDcsMHhFRSwweDI4LDB4QTgsMHhFRiww
eEU3LAotICAgIDB4MTgsMHhGNywweEQ3LDB4RjYsMHg4QSwweDAyLDB4QTIsMHg3QiwweDE4LDB4
RjcsMHhCNywweEY2LDB4RTAsMHhBQSwweEFBLDB4QTIsCi0gICAgMHhGOCwweEZFLDB4RDcsMHhF
RSwweDdBLDB4RUEsMHhFQSwweDdBLDB4RjcsMHhGNiwweEI3LDB4RUUsMHhCNywweDdGLDB4QkYs
MHg4MiwKLSAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4NUUsMHg2MiwweDhBLDB4MDAsMHhENyww
eEY2LDB4NzUsMHhFNiwweDIyLDB4QTksMHgyRiwweDlGLAotICAgIDB4RDcsMHhGNiwweEI3LDB4
RUUsMHg2MiwweDBCLDB4QTcsMHhFQiwweEQ3LDB4RjYsMHg3NiwweEVFLDB4QUUsMHhCRSwweEZF
LDB4NzgsCi0gICAgMHhENywweEY2LDB4NzUsMHhFNiwweDcwLDB4NzMsMHhGRiwweEVBLDB4OTYs
MHhFRSwweEQyLDB4RDUsMHg3RSwweDVBLDB4N0EsMHg2QSwKLSAgICAweDkyLDB4Q0QsMHgzMCww
eEM1LDB4QTUsMHhENiwweEJDLDB4QUMsMHgzNCwweEU2LDB4OTEsMHhDRCwweDA5LDB4MkQsMHhB
RCwweDM1LAotICAgIDB4MTQsMHhFNiwweEYzLDB4RDUsMHhGOCwweEZDLDB4N0UsMHhGQSwweDE0
LDB4REUsMHhEMiwweERELDB4QUYsMHhBQiwweDhBLDB4MEEsCi0gICAgMHgzNCwweEU2LDB4RjMs
MHhERCwweDI3LDB4MkYsMHhBQiwweDhBLDB4MzMsMHhFNiwweEYzLDB4REQsMHg3QSwweDdFLDB4
N0UsMHg3QywKLSAgICAweDE1LDB4RTYsMHhGMywweEQ1LDB4RkYsMHhCRiwweDlGLDB4QjcsMHgx
NCwweERFLDB4RjMsMHhERCwweDlGLDB4OUUsMHhCOCwweEI0LAotICAgIDB4MjUsMHg1QSwweDQz
LDB4NDEsMHg1NSwweDVFLDB4NUUsMHg2OCwweDI3LDB4NUEsMHgyMywweDM5LDB4MEIsMHhBQSww
eERELDB4RjUsCi0gICAgMHhBOSwweDZBLDB4NjQsMHg0MSwweDBBLDB4RUYsMHg3NSwweDU1LDB4
ODcsMHg2QSwweDQzLDB4NDEsMHhBMCwweEZCLDB4NTUsMHg3NywKLSAgICAweDQ1LDB4NUEsMHgy
MiwweDM5LDB4MjgsMHhGRiwweDVGLDB4NTcsMHhFNSwweDUxLDB4NDMsMHgzOSwweEE4LDB4REYs
MHhENSwweEY1LAotICAgIDB4QTUsMHg0OSwweDAzLDB4MzksMHg4OCwweEZDLDB4REUsMHhGQSww
eEE1LDB4NDksMHgwMiwweDMxLDB4NjIsMHg4QiwweDBCLDB4MDIsCi0gICAgMHhDNSwweDQ5LDB4
RTIsMHgzMCwweEVELDB4RjcsMHhBQSwweEEwLDB4QTUsMHg0OSwweDAyLDB4MzEsMHg4RiwweDVG
LDB4NkEsMHgyQSwKLSAgICAweDQzLDB4NDEsMHhDMSwweDI4LDB4QUEsMHhGNSwweEI3LDB4QkMs
MHg4NCwweDQxLDB4MjMsMHgzOSwweDA1LDB4QTUsMHg3QSwweEEyLAotICAgIDB4QTksMHg2QSww
eEUyLDB4MzAsMHg1NSwweEZGLDB4RUEsMHgwMiwweEM2LDB4NDksMHgyMywweDM5LDB4NUQsMHg3
RiwweEE5LDB4ODAsCi0gICAgMHg2NCwweDQxLDB4QzEsMHgyOCwweDk1LDB4OUYsMHhCQSwweEU4
LDB4QzUsMHg0OSwweDAzLDB4MzEsMHhGNywweEFBLDB4MkIsMHgwRCwKLSAgICAweEVBLDB4NzIs
MHg0MywweDM5LDB4NTUsMHhGRiwweDhCLDB4QUIsMHgyNywweDVBLDB4NDMsMHg0MSwweDU1LDB4
RjUsMHhCRSwweEUwLAotICAgIDB4QzUsMHg0OSwweEUyLDB4MzAsMHhENSwweDU2LDB4N0UsMHg3
OCwweDg1LDB4NDEsMHhFMiwweDMwLDB4QUEsMHgyQiwweDA5LDB4MkYsCi0gICAgMHhBOSwweDZB
LDB4NjQsMHg0MSwweDU3LDB4ODMsMHg4QiwweEY3LDB4RTYsMHg1MSwweDIzLDB4MzksMHhGNSww
eEFFLDB4QTgsMHhFRSwKLSAgICAweEE1LDB4NDksMHhFMiwweDMwLDB4RDcsMHg3QSwweEUwLDB4
QTIsMHhBNCwweDQ5LDB4RTIsMHgzMCwweEFBLDB4MkIsMHgyRCwweEQ1LAotICAgIDB4QTksMHg2
QSwweDQ0LDB4NDEsMHhBQiwweDhCLDB4RUYsMHg1NSwweEM2LDB4NTEsMHg0MywweDQ5LDB4RkEs
MHhGQywweEZDLDB4RkYsCi0gICAgMHhBNSwweDUxLDB4NjQsMHg1MSwweDJFLDB4MkEsMHgyQiww
eEM5LDB4RTYsMHg2MSwweDg0LDB4NTEsMHhGQSwweEVELDB4Q0YsMHg4MiwKLSAgICAweDI3LDB4
NkEsMHhBNCwweDU5LDB4QzMsMHhGRCwweEQ1LDB4RjUsMHhBNSwweDU5LDB4MjMsMHg0MSwweEU4
LDB4RjgsMHg3QywweEY4LAotICAgIDB4ODQsMHg0OSwweEUyLDB4MzgsMHg3RSwweDc4LDB4RUEs
MHgyMCwweEE1LDB4NDksMHhFMiwweDMwLDB4MDEsMHhBRCwweEQ3LDB4QkEsCi0gICAgMHg2OCww
eDYyLDB4NDQsMHg0MSwweDAyLDB4RkYsMHg1RCwweERELDB4NDgsMHg2MiwweDIzLDB4MzksMHhG
QywweDU3LDB4NzcsMHhGRiwKLSAgICAweEE1LDB4NDksMHhFMiwweDMwLDB4N0EsMHhFRSwweEFB
LDB4MDAsMHhDNiwweDUxLDB4MDMsMHgzMSwweDBGLDB4NTUsMHhCRiwweEFBLAotICAgIDB4MDYs
MHg1MiwweDQzLDB4NDEsMHg4MCwweERELDB4QkYsMHhFRSwweEM1LDB4NDksMHgyMywweDM5LDB4
RkEsMHg3RSwweEVBLDB4MEEsCi0gICAgMHhBNSwweDQ5LDB4MDIsMHgzMSwweDdBLDB4QTIsMHgw
MiwweDAwLDB4QzUsMHg0OSwweDIzLDB4MzksMHhGNSwweEJELDB4MkEsMHhBQSwKLSAgICAweEU2
LDB4NTEsMHg0MywweDM5LDB4RjcsMHhEQiwweEEwLDB4QUEsMHhDNiwweDQ5LDB4NDQsMHg0MSww
eDk1LDB4QUYsMHgyQSwweEFBLAotICAgIDB4QzYsMHg1MSwweDAyLDB4MzksMHg1RSwweDcwLDB4
RTAsMHhBOCwweDg0LDB4NDksMHhFMSwweDMwLDB4QUQsMHgyRiwweDNGLDB4RjYsCi0gICAgMHgy
NiwweDVBLDB4NDQsMHg0MSwweEJGLDB4MkIsMHhCRiwweEI1LDB4ODcsMHg2MiwweEE0LDB4NDks
MHg3RCwweDgyLDB4QTAsMHhENSwKLSAgICAweEU1LDB4NTEsMHgyMiwweDMxLDB4NTgsMHhFOCww
eEVDLDB4QkUsMHg4NSwweDQxLDB4MjMsMHgzOSwweDJELDB4QkQsMHhENiwweDdFLAotICAgIDB4
RTUsMHg1MSwweDQzLDB4MzksMHgwMCwweDhBLDB4QUEsMHhERCwweDA2LDB4NTIsMHg4NCwweDQx
LDB4MDAsMHgwQSwweDlGLDB4RjUsCi0gICAgMHg4OCwweDYyLDB4NDMsMHgzOSwweDAyLDB4ODIs
MHhGNywweEQ3LDB4MDYsMHg1MiwweDY0LDB4NDEsMHhDMCwweEIwLDB4RkYsMHg1NSwKLSAgICAw
eEU2LDB4NTEsMHg0MywweDM5LDB4ODAsMHhBOCwweEJCLDB4RDcsMHhBNSwweDQ5LDB4MDMsMHgz
MSwweDVDLDB4RjgsMHg2QSwweEZGLAotICAgIDB4RTUsMHg1MSwweDAzLDB4MzEsMHgyRiwweEJE
LDB4RjUsMHg1NywweDQ3LDB4NjIsMHgwMywweDMxLDB4MDIsMHhBQiwweEZGLDB4NTUsCi0gICAg
MHg2NiwweDYyLDB4MDMsMHgzMSwweEU4LDB4RkUsMHhGRiwweDU1LDB4QTUsMHg0OSwweEUyLDB4
MzAsMHgwMCwweDg4LDB4RUEsMHg3RCwKLSAgICAweEM1LDB4NDksMHhFMiwweDMwLDB4MjIsMHg4
QSwweEZGLDB4NTUsMHhDNSwweDUxLDB4MjIsMHgzOSwweDBBLDB4MkEsMHhFRCwweEQ1LAotICAg
IDB4NDYsMHg1QSwweEUyLDB4MzAsMHhGNywweDVFLDB4N0EsMHhDMiwweEU2LDB4NTEsMHhFMiww
eDMwLDB4MDIsMHhCRiwweEQ1LDB4NTcsCi0gICAgMHg0NiwweDYyLDB4MDIsMHgzOSwweEEwLDB4
RkYsMHg1NSwweDU1LDB4QzUsMHg1MSwweDAyLDB4MzksMHg3OCwweEZBLDB4OTUsMHhCNSwKLSAg
ICAweEU2LDB4NTksMHgwMiwweDM5LDB4RjUsMHg1RiwweDVFLDB4NjAsMHhBNSwweDUxLDB4MDIs
MHgzOSwweDAwLDB4N0QsMHg1NSwweEQ3LAotICAgIDB4QTUsMHg0OSwweDAzLDB4MzksMHhDOCww
eERGLDB4REQsMHgyQiwweDA2LDB4NUEsMHg0MywweDQxLDB4NzUsMHhFNSwweDBGLDB4MEEsCi0g
ICAgMHgwNiwweDVBLDB4MDMsMHgzOSwweEY1LDB4RjcsMHhGQSwweEEwLDB4QTQsMHg0OSwweDAz
LDB4MzksMHhGRiwweEZGLDB4RkQsMHhBMCwKLSAgICAweEM1LDB4NTEsMHgwMiwweDM5LDB4NzUs
MHg3NSwweEZELDB4MDIsMHhDNSwweDUxLDB4RTMsMHgzOCwweDVGLDB4REYsMHhGRiwweDAwLAot
ICAgIDB4RTUsMHg1MSwweEUyLDB4MzAsMHhGRCwweEZELDB4QjcsMHgwMiwweDA3LDB4NUEsMHhF
MiwweDMwLDB4NTcsMHg3RCwweEVCLDB4MDIsCi0gICAgMHgyNywweDVBLDB4MjMsMHgzOSwweDU1
LDB4NTUsMHhERiwweDA4LDB4MDYsMHg1QSwweDAyLDB4MzksMHg1NSwweEQ1LDB4QkEsMHgwMCwK
LSAgICAweDA2LDB4NjIsMHgwMywweDM5LDB4NTUsMHg3RSwweEFBLDB4MDAsMHg2NywweDYyLDB4
MDMsMHgzOSwweDc1LDB4N0QsMHhBQSwweDg4LAotICAgIDB4MDYsMHg1QSwweDQzLDB4NDEsMHg1
NSwweEY1LDB4MjAsMHgyMCwweDQ3LDB4NjIsMHg0MywweDQxLDB4NTUsMHhGNywweEEyLDB4ODAs
Ci0gICAgMHg0NywweDYyLDB4MjMsMHgzOSwweEQ1LDB4QkYsMHgwMCwweDAyLDB4MjcsMHg2Miww
eDQ0LDB4NDEsMHg1NSwweDhBLDB4MDAsMHgwMCwKLSAgICAweDQ4LDB4NkEsMHg2NCwweDQ5LDB4
NTUsMHhFQSwweEEwLDB4MkEsMHg0OCwweDZBLDB4QTUsMHg1MSwweDU1LDB4QUEsMHgwQSwweDg4
LAotICAgIDB4MEEsMHg4MywweEM2LDB4NTEsMHhENSwweEJGLDB4QUYsMHgyQiwweDkyLDB4RDUs
MHg0NywweDYyLDB4RDUsMHhCRiwweDJGLDB4MkIsCi0gICAgMHg3NSwweEVFLDB4MEYsMHhDNSww
eDA5LDB4MEIsMHgwMiwweDAyLDB4RDcsMHhGNiwweDk2LDB4RjYsMHhFRCwweEFGLDB4QkYsMHgw
QiwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4QzMsMHhDMiwweEUwLDB4QzAsMHhCNiwweEY2
LDB4NzYsMHhFRSwweEUwLDB4RTgsMHhCQSwweEI4LAotICAgIDB4OTYsMHhGNiwweDc1LDB4RTYs
MHhCRSwweERFLDB4REEsMHg2QSwweDk2LDB4RUUsMHg1NSwweEVFLDB4MEIsMHgwQiwweEFCLDB4
NkIsCi0gICAgMHg5NiwweEVFLDB4MzQsMHhFNiwweDg4LDB4QTgsMHg3RSwweEQ3LDB4QjYsMHhF
RSwweDU1LDB4RTYsMHg4QiwweEZGLDB4RDUsMHg1NSwKLSAgICAweDc2LDB4RUUsMHhCMywweEQ1
LDB4RjAsMHhGOCwweDdFLDB4RkUsMHg1NSwweEU2LDB4RjQsMHhERCwweDI5LDB4RUQsMHhCNyww
eDBGLAotICAgIDB4NzUsMHhFNiwweEQzLDB4RDUsMHgyOCwweEFFLDB4N0EsMHhBQSwweDc1LDB4
RUUsMHg3MSwweENELDB4MDAsMHgwQSwweEZGLDB4N0IsCi0gICAgMHg5NiwweEVFLDB4NTEsMHhD
NSwweDAwLDB4MjIsMHhBQSwweERELDB4MTgsMHhGRiwweEYzLDB4REQsMHgwQSwweDJBLDB4QkYs
MHhGNSwKLSAgICAweDE4LDB4RkYsMHg5NSwweEU2LDB4RTgsMHg4MCwweEFCLDB4RkQsMHhCNyww
eEY2LDB4RDYsMHhFRSwweEJBLDB4QUEsMHhCQiwweEFCLAotICAgIDB4RDcsMHhGNiwweDU1LDB4
RTYsMHg1RiwweEUwLDB4ODIsMHg4QSwweEI2LDB4RUUsMHgzNSwweERFLDB4RDUsMHhGRiwweEVD
LDB4QTAsCi0gICAgMHhENywweEY2LDB4MzUsMHhERSwweDJCLDB4RDUsMHg1RiwweEVFLDB4MTgs
MHhGNywweDM1LDB4RTYsMHgwQSwweDJBLDB4QUYsMHhENSwKLSAgICAweDE4LDB4RkYsMHg5Niww
eEVFLDB4MkEsMHgyMCwweDBCLDB4QUQsMHgxOCwweEZGLDB4RDcsMHhGNiwweEE4LDB4RUUsMHg3
QSwweEU4LAotICAgIDB4MTgsMHhGNywweEQ3LDB4RjYsMHg4RSwweDhBLDB4OEIsMHhERiwweDE4
LDB4RkYsMHhENywweEY2LDB4RkUsMHhFQSwweEJBLDB4N0YsCi0gICAgMHgxOCwweEY3LDB4RDcs
MHhFRSwweDVGLDB4NUUsMHhGMCwweEUyLDB4RDcsMHhGNiwweEY3LDB4RUUsMHhBOCwweEE4LDB4
MDIsMHgyMiwKLSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4QzgsMHhFQywweDhBLDB4ODAsMHhE
NywweEY2LDB4QjcsMHhFRSwweDAwLDB4N0UsMHg2QiwweEFBLAotICAgIDB4RjcsMHhGNiwweEI3
LDB4RUUsMHhFQSwweEFGLDB4QkQsMHhBNywweEY3LDB4RjYsMHg1NSwweEU2LDB4REEsMHg2MCww
eEU4LDB4QTIsCi0gICAgMHhENywweEY2LDB4NTUsMHhFNiwweDgyLDB4MEIsMHgwOSwweDM1LDB4
RDcsMHhGNiwweDU1LDB4RTYsMHg3OCwweEZBLDB4NzgsMHg2OCwKLSAgICAweEI2LDB4RUUsMHg1
NSwweEU2LDB4MEIsMHgwRiwweEJGLDB4RjUsMHg3NSwweEVFLDB4RDIsMHhENSwweDY4LDB4Njgs
MHg2MCwweEMwLAotICAgIDB4RDMsMHhERCwweDUxLDB4Q0QsMHhENiwweEVFLDB4QkUsMHhGQyww
eEYzLDB4REQsMHg3MSwweENELDB4M0YsMHhCRCwweEJELDB4QkYsCi0gICAgMHgxNCwweERFLDB4
RjMsMHhERCwweDM0LDB4RjAsMHhFMiwweDgxLDB4MTQsMHhERSwweEYzLDB4REQsMHhBRiwweEVG
LDB4QjcsMHgwMywKLSAgICAweDM0LDB4RTYsMHhGNCwweERELDB4MEIsMHg4MywweEFCLDB4RUEs
MHgzNCwweEU2LDB4RjMsMHhERCwweDc4LDB4N0EsMHhGRiwweEZGLAotICAgIDB4MTQsMHhERSww
eEYzLDB4REQsMHhDRiwweDVGLDB4RDcsMHhGNSwweDE0LDB4REUsMHhEMywweEQ1LDB4OEUsMHhB
NywweEFBLDB4OEEsCi0gICAgMHgyNSwweDVBLDB4NjMsMHg0MSwweDc4LDB4RTIsMHg4MCwweDhB
LDB4QTQsMHg0OSwweDAyLDB4MzksMHgzRiwweEFGLDB4MkIsMHg5RSwKLSAgICAweDY4LDB4NjIs
MHg2MywweDQxLDB4QkYsMHgwRiwweDJGLDB4RkQsMHg4OCwweDYyLDB4NDMsMHg0MSwweEJBLDB4
MDAsMHg4OCwweDdGLAotICAgIDB4MjcsMHg1QSwweDY0LDB4NDEsMHg1NywweEY4LDB4RTgsMHg3
RiwweEM1LDB4NTEsMHg2MywweDQxLDB4RkYsMHg4MywweEE4LDB4NUYsCi0gICAgMHhDNSwweDQ5
LDB4NjQsMHg0MSwweDZBLDB4MEEsMHgwQSwweEQ1LDB4QzUsMHg0OSwweDQzLDB4MzksMHgyQSww
eEE4LDB4RTgsMHg1NywKLSAgICAweEM1LDB4NDksMHgyMywweDM5LDB4QTgsMHgyMiwweEFCLDB4
RjUsMHhBNSwweDQ5LDB4MDIsMHgzMSwweDJBLDB4QUEsMHhGQiwweDU3LAotICAgIDB4QzUsMHg0
OSwweDAyLDB4MzEsMHg3RSwweEUzLDB4QTksMHgyRCwweEE1LDB4NDksMHgyMywweDM5LDB4MkIs
MHgzNSwweEY1LDB4QUIsCi0gICAgMHhBOCwweDYyLDB4ODQsMHg0MSwweEE5LDB4NTUsMHg1NSww
eDBELDB4QTgsMHg2MiwweDQzLDB4MzksMHhGRSwweDc1LDB4NTcsMHhFMCwKLSAgICAweDg0LDB4
NDEsMHgwMiwweDMxLDB4NzgsMHg3RCwweDU3LDB4NzAsMHhBNSwweDQxLDB4RTIsMHgyOCwweEFE
LDB4RjUsMHhCRiwweDJGLAotICAgIDB4QzUsMHg0OSwweDIzLDB4MzksMHhFMiwweEZELDB4QkYs
MHhBOCwweEE4LDB4NkEsMHg0MywweDM5LDB4N0YsMHhENSwweEFCLDB4ODIsCi0gICAgMHhFNiww
eDUxLDB4MjMsMHgzMSwweDc2LDB4REYsMHhCRSwweEY4LDB4QzYsMHg1MSwweEMyLDB4MzAsMHhE
NywweEQ2LDB4RjgsMHg2OCwKLSAgICAweDg0LDB4NDksMHgyMywweDM5LDB4REYsMHhBRiwweDAz
LDB4QUQsMHg4NCwweDQxLDB4NDMsMHg0MSwweEZCLDB4Q0UsMHgwOCwweDAyLAotICAgIDB4ODQs
MHg0OSwweDIzLDB4MzksMHhCNSwweDNGLDB4MkYsMHg4RSwweEE1LDB4NDksMHgwMywweDM5LDB4
RDcsMHhCQSwweEE4LDB4QUUsCi0gICAgMHhBNSwweDUxLDB4MjMsMHg0MSwweEQ1LDB4RkIsMHhG
QSwweDlGLDB4ODQsMHg1MSwweDQ0LDB4NDksMHhBRCwweDlFLDB4M0EsMHg5NSwKLSAgICAweDA2
LDB4NjIsMHg0MywweDQ5LDB4QUYsMHgyOSwweDNGLDB4QkYsMHhFNSwweDY5LDB4QzUsMHg2MSww
eEVGLDB4NkIsMHgzOSwweDc3LAotICAgIDB4RTUsMHg2MSwweEE0LDB4NTksMHhFOCwweDYwLDB4
RTAsMHhFQywweEM1LDB4NTksMHg2NCwweDUxLDB4QkIsMHhCMiwweEUyLDB4N0EsCi0gICAgMHhB
NSwweDUxLDB4NDQsMHg0OSwweDIyLDB4QkUsMHg5NywweDdGLDB4QTUsMHg0OSwweDI0LDB4NDEs
MHhBOCwweEJBLDB4RkUsMHg1NSwKLSAgICAweDg1LDB4NDksMHgyNCwweDQxLDB4MDIsMHgzRSww
eDJGLDB4RjcsMHhBNSwweDQ5LDB4NDQsMHg0MSwweDgyLDB4RUIsMHhGRiwweDk1LAotICAgIDB4
QTUsMHg0OSwweDI0LDB4MzksMHgyMCwweEUyLDB4Q0UsMHg3RiwweEE1LDB4NDksMHgyMywweDM5
LDB4MDIsMHhCQSwweDJCLDB4NUYsCi0gICAgMHg4NSwweDQxLDB4MDMsMHgzOSwweDAwLDB4QTgs
MHhGOCwweDc3LDB4ODUsMHg0OSwweDAzLDB4MzksMHhBMCwweDJBLDB4QUEsMHg1NSwKLSAgICAw
eEE1LDB4NDksMHgwMywweDM5LDB4QTIsMHhFRiwweEVGLDB4NzUsMHg4NCwweDQxLDB4QzIsMHgz
MCwweDAwLDB4QTAsMHhCQSwweDU3LAotICAgIDB4ODQsMHg0OSwweEUyLDB4MzAsMHgwMCwweDJB
LDB4QUYsMHg1NSwweEE1LDB4NDksMHhFMiwweDMwLDB4MEEsMHhBQSwweEZCLDB4NTUsCi0gICAg
MHhBNCwweDQ5LDB4RTIsMHgzMCwweDBBLDB4QUEsMHhGNywweDU1LDB4NjQsMHg0MSwweEMyLDB4
MzAsMHhGOCwweDZCLDB4RUIsMHgwQiwKLSAgICAweDg0LDB4NDEsMHhFMiwweDMwLDB4MDMsMHhB
RCwweDU1LDB4NTUsMHg2MywweDQxLDB4QzIsMHgzMCwweDAwLDB4QTgsMHhENywweEZELAotICAg
IDB4NjQsMHg0MSwweEMxLDB4MzAsMHgwMCwweEJGLDB4REYsMHhGRiwweEM1LDB4NTEsMHgyMiww
eDM5LDB4N0YsMHhGRCwweEI1LDB4MDUsCi0gICAgMHhBNSwweDQ5LDB4MDIsMHgzMSwweEJGLDB4
NTUsMHg1NywweDVDLDB4NjQsMHg0MSwweDAyLDB4MzEsMHgyOCwweDVELDB4NTUsMHhGRCwKLSAg
ICAweDg0LDB4NDEsMHgwMiwweDMxLDB4N0YsMHg1NSwweDVELDB4OEYsMHg2NCwweDQxLDB4QzIs
MHgyOCwweEJBLDB4RjUsMHhGRiwweDI4LAotICAgIDB4NjQsMHg0MSwweEUyLDB4MzAsMHhGQiww
eDVGLDB4N0YsMHgwMiwweEU1LDB4NTEsMHgwMiwweDMxLDB4RDUsMHhCNSwweEI1LDB4MEEsCi0g
ICAgMHgwNiwweDVBLDB4MDIsMHgzMSwweDVGLDB4NUUsMHhGMCwweDgwLDB4QzYsMHg1MSwweEMy
LDB4MzAsMHg3NSwweEQ1LDB4QkIsMHgwMCwKLSAgICAweEU3LDB4NTksMHgwMywweDMxLDB4NTUs
MHg1NSwweEZGLDB4ODAsMHhFNiwweDU5LDB4RTIsMHgzMCwweDU1LDB4NTUsMHhBRiwweDAwLAot
ICAgIDB4RTYsMHg1OSwweDAzLDB4MzEsMHg1NSwweDU1LDB4M0IsMHgwMCwweDI2LDB4NUEsMHgy
MywweDM5LDB4NTUsMHhGNSwweEFBLDB4MDgsCi0gICAgMHg2NywweDYyLDB4QzUsMHg1MSwweDQz
LDB4RTksMHhGRCwweEJBLDB4MDYsMHg1QSwweDAzLDB4MzksMHg1NywweEZBLDB4ODgsMHgwMCwK
LSAgICAweDA2LDB4NUEsMHgyNCwweDQxLDB4NTUsMHhCQSwweDA4LDB4MDIsMHgyNiwweDYyLDB4
MjMsMHg0MSwweEZELDB4QUEsMHgwMiwweDhBLAotICAgIDB4MjcsMHg2MiwweEM1LDB4NTEsMHg0
MywweDZBLDB4QTgsMHhBQSwweDI3LDB4NjIsMHhBNSwweDUxLDB4NTUsMHhBMywweDI4LDB4QTgs
Ci0gICAgMHgyNiwweDYyLDB4QTQsMHg1MSwweEJELDB4QTgsMHgyMiwweDhBLDB4NDcsMHg2Miww
eEM1LDB4NTEsMHg3RiwweEFFLDB4MkEsMHhERiwKLSAgICAweDI2LDB4NjIsMHhBNSwweDUxLDB4
MjIsMHgyQSwweEE4LDB4QkQsMHgyNiwweDYyLDB4QzUsMHg1MSwweERBLDB4QTIsMHhBQSwweDZG
LAotICAgIDB4MjcsMHg2MiwweEM1LDB4NTEsMHgyRiwweEJFLDB4MkEsMHhGNiwweDI3LDB4NjIs
MHhBNSwweDUxLDB4QTgsMHgwOCwweDBBLDB4OTcsCi0gICAgMHgyNywweDYyLDB4QzQsMHg1MSww
eEVBLDB4QTIsMHhGQywweEQ3LDB4NDcsMHg2MiwweEE0LDB4NTEsMHg4QiwweDhBLDB4REYsMHhC
RiwKLSAgICAweEE4LDB4NzIsMHhDNiwweDUxLDB4RUYsMHhFRiwweDU3LDB4M0IsMHhBOCwweDcy
LDB4ODUsMHg1MSwweEFBLDB4RkIsMHhENywweDAwLAotICAgIDB4MjksMHg4MywweEU1LDB4NTks
MHg1RCwweDU1LDB4NTUsMHgwQiwweDhCLDB4OEIsMHhBNCwweDUxLDB4RjcsMHg3NSwweEZELDB4
MDAsCi0gICAgMHg0RCwweEE0LDB4MDUsMHg1QSwweDU1LDB4NTUsMHg1NSwweDAyLDB4Q0YsMHhC
NCwweEU1LDB4NTksMHg1NSwweDU1LDB4REQsMHgwMCwKLSAgICAweDMwLDB4QkQsMHhFNSwweDU5
LDB4NTUsMHg1NSwweEZGLDB4MDAsMHg3MSwweEM1LDB4MDUsMHg1QSwweDU1LDB4NTUsMHhFRiww
eDAwLAotICAgIDB4QjMsMHhENSwweDA3LDB4NjIsMHg1NSwweDU1LDB4QUIsMHgwMCwweDE0LDB4
REUsMHg0NywweDYyLDB4NTUsMHg1NSwweEFBLDB4MDAsCi0gICAgMHgzNCwweEU2LDB4ODcsMHg2
QSwweEQ1LDB4QkQsMHgyMiwweDAwLDB4NTUsMHhFNiwweDRELDB4QUMsMHhCRCwweDJCLDB4MDAs
MHgwMCwKLSAgICAweEQ3LDB4RjYsMHgzNSwweEU2LDB4QUQsMHhBRCwweEFCLDB4MEIsMHhGOCww
eEZFLDB4QjcsMHhGNiwweEJELDB4RUYsMHg2QiwweDdBLAotICAgIDB4RDYsMHhGNiwweDk2LDB4
RUUsMHhFQywweEY3LDB4QkYsMHg3QiwweEI2LDB4RjYsMHg3NiwweEVFLDB4RkEsMHhCQSwweDdB
LDB4N0UsCi0gICAgMHg5NiwweEVFLDB4NzUsMHhFRSwweDU4LDB4RkYsMHhFRCwweDdGLDB4NzYs
MHhFRSwweEYzLDB4REQsMHhDMiwweEU4LDB4NzgsMHg3QSwKLSAgICAweDM0LDB4RTYsMHhEMyww
eEQ1LDB4MkUsMHhCRCwweEJELDB4QTUsMHg3NSwweEVFLDB4MTQsMHhERSwweEFGLDB4RUYsMHhB
RCwweDJCLAotICAgIDB4OTYsMHhFRSwweEYzLDB4REQsMHhGNywweDlGLDB4QkYsMHgyMiwweDk2
LDB4RUUsMHgzNCwweEU2LDB4N0QsMHhGQiwweEEyLDB4ODAsCi0gICAgMHg3NSwweEVFLDB4MzUs
MHhFNiwweEU5LDB4MEIsMHgwMiwweDBBLDB4OTYsMHhFRSwweDE0LDB4REUsMHg3RiwweEE4LDB4
MDAsMHgwQSwKLSAgICAweDk2LDB4RUUsMHg1MSwweENELDB4NTcsMHhBMCwweDAwLDB4MDAsMHg5
NiwweEVFLDB4MTAsMHhDNSwweEJELDB4NTcsMHhFMCwweDAwLAotICAgIDB4OTYsMHhFRSwweDcx
LDB4QzUsMHgwQSwweEJELDB4RDUsMHg1RSwweEI2LDB4RUUsMHg5MiwweENELDB4MDAsMHgwQSww
eEFGLDB4RkQsCi0gICAgMHhENywweEY2LDB4NTUsMHhFNiwweEFBLDB4QTIsMHgwQiwweEY1LDB4
RDcsMHhGNiwweDk2LDB4RUUsMHg0QiwweDJCLDB4MkIsMHgyQiwKLSAgICAweEQ3LDB4RjYsMHg5
NiwweEVFLDB4NTUsMHhCRiwweDIwLDB4MDAsMHhENywweEY2LDB4RDMsMHhENSwweEZBLDB4Nzgs
MHg2MCwweEEwLAotICAgIDB4QjYsMHhFRSwweDcyLDB4Q0QsMHgwMiwweDBCLDB4QTUsMHhENSww
eDE4LDB4RjcsMHg1NSwweEU2LDB4MDIsMHgwQSwweEJCLDB4QjUsCi0gICAgMHgxOCwweEZGLDB4
RDgsMHhGNiwweEZFLDB4RUUsMHhBMiwweDBCLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGRCwweEVG
LDB4QkEsMHhBQSwKLSAgICAweDE4LDB4RjcsMHhGNywweEY2LDB4RjksMHg3NywweEZELDB4Rjcs
MHgxOCwweEY3LDB4RDcsMHhFRSwweEZBLDB4QkEsMHhBRiwweEJBLAotICAgIDB4RjcsMHhGNiww
eEI2LDB4RUUsMHhGMiwweEZBLDB4RkMsMHhFMCwweEI3LDB4RjYsMHhGNywweEVFLDB4QUYsMHhF
QiwweEFBLDB4QUIsCi0gICAgMHhGNywweEY2LDB4OTYsMHhFRSwweEZGLDB4RkUsMHhGQSwweDZB
LDB4RDcsMHhGNiwweDk2LDB4RUUsMHhFMCwweDhCLDB4RUIsMHhFRiwKLSAgICAweEI2LDB4RUUs
MHgxNCwweERFLDB4MkYsMHgzNiwweERFLDB4N0UsMHhENywweEY2LDB4NTUsMHhFNiwweDc4LDB4
RUEsMHhFQSwweEVCLAotICAgIDB4OTYsMHhFRSwweDM0LDB4RTYsMHgyRCwweDhGLDB4QkUsMHhC
NywweDk2LDB4RUUsMHgxNCwweERFLDB4NjAsMHg0MCwweDYyLDB4RTgsCi0gICAgMHhGMywweERE
LDB4NzIsMHhDRCwweERFLDB4N0UsMHg1QywweDVDLDB4QjIsMHhENSwweDcyLDB4Q0QsMHgzRSww
eEJGLDB4RjcsMHhGNSwKLSAgICAweDE0LDB4REUsMHhEMywweEQ1LDB4OEIsMHgwRCwweEE5LDB4
MjksMHgzNCwweEU2LDB4RjQsMHhERCwweEE3LDB4QkYsMHhFQSwweEFCLAotICAgIDB4MzQsMHhF
NiwweDE0LDB4REUsMHg3MCwweDgwLDB4MkUsMHgyRiwweDM0LDB4RTYsMHhGNCwweERELDB4REUs
MHhGQSwweEY4LDB4RkYsCi0gICAgMHgxNCwweERFLDB4RDMsMHhENSwweEZFLDB4QkEsMHg2RSww
eEYyLDB4MzQsMHhFNiwweEY0LDB4REQsMHhGNSwweEJELDB4MkQsMHgzRiwKLSAgICAweDQ2LDB4
NjIsMHhDNSwweDUxLDB4N0YsMHhGNiwweEQ2LDB4RkMsMHgwNSwweDUyLDB4MjMsMHgzOSwweERF
LDB4N0EsMHg2MCwweDYwLAotICAgIDB4QzUsMHg0OSwweDIyLDB4MzksMHhFRiwweEVELDB4RTks
MHgzNSwweDI3LDB4NjIsMHg0MywweDQxLDB4NTUsMHhCRCwweDAzLDB4MEIsCi0gICAgMHg4OCww
eDZBLDB4NjMsMHg0MSwweDU1LDB4RkYsMHg4MCwweEVBLDB4QzUsMHg0OSwweDQzLDB4NDEsMHg1
NSwweEFBLDB4QTgsMHhFOCwKLSAgICAweEM0LDB4NDksMHg0MiwweDM5LDB4RkQsMHgyQSwweEFB
LDB4RkIsMHhBNCwweDQ5LDB4NDMsMHgzOSwweERBLDB4MjgsMHhBQSwweEVGLAotICAgIDB4QTQs
MHg0OSwweDY0LDB4NDEsMHhBRSwweDI4LDB4RkMsMHg1OSwweEE1LDB4NDksMHg0MywweDM5LDB4
NkIsMHhGMCwweEZBLDB4N0IsCi0gICAgMHg4NCwweDQxLDB4MjMsMHgzOSwweEJELDB4RkEsMHhD
QSwweEFBLDB4QTUsMHg0OSwweDAyLDB4MzEsMHgyMiwweDAzLDB4MkQsMHhFNSwKLSAgICAweENB
LDB4OEIsMHhBNCwweDQ5LDB4MEQsMHhCNSwweDU1LDB4NTUsMHhFQywweDhCLDB4NjMsMHg0MSww
eEUwLDB4RUEsMHg1NywweDU1LAotICAgIDB4QTUsMHg0OSwweDAzLDB4MzEsMHg2MCwweEUwLDB4
QzgsMHhFRSwweDQ0LDB4MzEsMHhBMSwweDI4LDB4MkIsMHhGRSwweERFLDB4NUYsCi0gICAgMHg4
NCwweDQxLDB4QzEsMHgyOCwweDI4LDB4QUEsMHhBQiwweEFELDB4MjYsMHg1QSwweDAyLDB4MzEs
MHgwMiwweEZGLDB4RkYsMHg3NSwKLSAgICAweEM1LDB4NDksMHgwMiwweDM5LDB4QjgsMHhGRSww
eEZCLDB4NTUsMHhFNiwweDUxLDB4MDMsMHgzOSwweDcyLDB4RTMsMHhFRiwweDU1LAotICAgIDB4
NDQsMHg0MSwweEMxLDB4MzAsMHgwQiwweDhGLDB4RjgsMHg1OCwweEE0LDB4NDksMHhFMSwweDMw
LDB4QTIsMHhCQSwweEZGLDB4NTUsCi0gICAgMHg4NCwweDQ5LDB4RTIsMHgzMCwweDI4LDB4Rjgs
MHhGRiwweDU1LDB4NjQsMHg0MSwweEMxLDB4MzAsMHgwMCwweDgyLDB4RkIsMHg1NSwKLSAgICAw
eDY0LDB4NDksMHhDMSwweDMwLDB4MDAsMHgwMCwweEZGLDB4NTUsMHg4NCwweDUxLDB4MDIsMHgz
OSwweDNBLDB4MEUsMHgyRCwweDA1LAotICAgIDB4MjYsMHg2QSwweDg0LDB4NTksMHhGRCwweEJG
LDB4MkIsMHhBQiwweDQ3LDB4NzIsMHhDNSwweDYxLDB4RjUsMHhCRiwweEY4LDB4RUEsCi0gICAg
MHgyNiwweDcyLDB4RTUsMHg2MSwweDczLDB4NUMsMHhCRSwweEVBLDB4MDUsMHg2QSwweDY0LDB4
NTEsMHg3RSwweDdFLDB4NTgsMHg2MCwKLSAgICAweDg1LDB4NTksMHgwNCwweDQxLDB4RkEsMHg3
RSwweDU4LDB4N0EsMHgwNCwweDQxLDB4QTIsMHgzMCwweDAwLDB4RkEsMHg1RSwweDgwLAotICAg
IDB4MjQsMHg0MSwweEEyLDB4MzAsMHgzRSwweDdGLDB4N0YsMHgwQiwweDI0LDB4NDEsMHhBMiww
eDI4LDB4QUMsMHg3RiwweDdGLDB4MDIsCi0gICAgMHg0NCwweDQxLDB4QTIsMHgyOCwweEVCLDB4
NUQsMHhGQiwweDIwLDB4ODUsMHg0OSwweEMyLDB4MzAsMHg1NSwweDU1LDB4REQsMHgyMCwKLSAg
ICAweDg1LDB4NDksMHhDMywweDMwLDB4NzUsMHg1NSwweEZGLDB4MDAsMHhBNSwweDUxLDB4RTIs
MHgzMCwweDU1LDB4NTUsMHhGNywweDAwLAotICAgIDB4MjcsMHg1QSwweEUzLDB4MzgsMHg1NSww
eEQ1LDB4RjcsMHhBOCwweDA3LDB4NUEsMHhBMiwweDI4LDB4NTUsMHg1RiwweEFFLDB4MDIsCi0g
ICAgMHgwNywweDVBLDB4QzIsMHgzMCwweDU1LDB4N0YsMHhBQiwweDIwLDB4MDYsMHg1QSwweEMy
LDB4MzAsMHg1NSwweEZELDB4QkEsMHgwMCwKLSAgICAweDI3LDB4NUEsMHhFMiwweDMwLDB4NTUs
MHhGRiwweEFBLDB4MDIsMHgwNiwweDVBLDB4MDMsMHgzOSwweEFELDB4QUYsMHgyMCwweDAwLAot
ICAgIDB4NjcsMHg2MiwweDIzLDB4MzksMHg1NywweEZGLDB4QUEsMHhBMiwweDI3LDB4NUEsMHgy
MywweDM5LDB4NTUsMHhBQiwweDA4LDB4ODAsCi0gICAgMHgwNiwweDVBLDB4NDMsMHg0MSwweEQ1
LDB4MkIsMHgwMCwweDAwLDB4NDYsMHg2MiwweEE0LDB4NDksMHhENSwweEFGLDB4QUEsMHhFQSwK
LSAgICAweDI3LDB4NjIsMHg4NCwweDQ5LDB4RDcsMHgyQSwweDAwLDB4QTIsMHgyNywweDVBLDB4
ODQsMHg0OSwweEY1LDB4OEEsMHhBMCwweEVBLAotICAgIDB4MDYsMHg1QSwweEE1LDB4NDksMHhG
NSwweDhBLDB4MDAsMHhBMiwweDQ2LDB4NUEsMHhBNSwweDUxLDB4RDcsMHgyQSwweEEwLDB4QkIs
Ci0gICAgMHgyNiwweDVBLDB4QTQsMHg1MSwweEFCLDB4ODAsMHgyMCwweEQ3LDB4MjYsMHg1QSww
eDg0LDB4NDksMHgyMiwweEE4LDB4QTgsMHhGNywKLSAgICAweDI3LDB4NjIsMHg4NCwweDQ5LDB4
QTgsMHg4MiwweEFBLDB4QjUsMHgwNywweDVBLDB4QTUsMHg1MSwweEMyLDB4MkYsMHhFOSwweERF
LAotICAgIDB4MjgsMHg2MiwweDg1LDB4NTEsMHhBMCwweDhBLDB4RjUsMHhBRSwweDQ4LDB4NkEs
MHg2NSwweDQ5LDB4QUEsMHhFQSwweDVGLDB4MkIsCi0gICAgMHg2OCwweDcyLDB4ODUsMHg0OSww
eEZCLDB4RkYsMHg3RiwweDhBLDB4NDcsMHg2MiwweEE1LDB4NTEsMHhCRSwweEJGLDB4RjUsMHgw
MiwKLSAgICAweDg4LDB4NzIsMHgwNiwweDVBLDB4N0YsMHg3RiwweEY1LDB4M0IsMHg2QiwweDhC
LDB4ODQsMHg0OSwweDVGLDB4NUQsMHhGRiwweDAyLAotICAgIDB4NEUsMHhBQywweEM1LDB4NTEs
MHg1NSwweDU1LDB4RDUsMHgwMCwweEIwLDB4QjQsMHhDNSwweDUxLDB4NTUsMHg1NSwweEZGLDB4
MDAsCi0gICAgMHg1MiwweEM1LDB4QzYsMHg1OSwweDU1LDB4NTUsMHhGRiwweDAwLDB4OTMsMHhD
RCwweEM1LDB4NTksMHg1NSwweDU1LDB4QUYsMHgwMCwKLSAgICAweEIzLDB4RDUsMHhFNiwweDU5
LDB4NTUsMHg1NSwweEFBLDB4MDAsMHhGNSwweERELDB4ODUsMHg1MSwweDU1LDB4RkYsMHhBQSww
eDAwLAotICAgIDB4NTYsMHhFNiwweEE1LDB4NTEsMHg1NSwweEZGLDB4QUEsMHgwMCwweDk3LDB4
RUUsMHgyNiwweDYyLDB4NTUsMHhGRiwweEFBLDB4MDAsCi0gICAgMHgxNSwweERFLDB4MjcsMHg2
MiwweDU1LDB4QUIsMHgyMCwweDAwLDB4MzYsMHhFNiwweDg4LDB4NkEsMHg1NSwweEFBLDB4MDAs
MHgwMCwKLSAgICAweDc1LDB4RTYsMHgyOSwweDgzLDB4NTUsMHhBQSwweDA4LDB4MDAsMHg5Niww
eEVFLDB4Q0IsMHg5MywweDU1LDB4QUEsMHgwMCwweDAwLAotICAgIDB4OTYsMHhFRSwweDBELDB4
OUMsMHhENSwweEFBLDB4MDAsMHgwMCwweDk3LDB4RUUsMHg5MCwweEFDLDB4RjUsMHhBMiwweDAw
LDB4MDAsCi0gICAgMHg5NiwweEVFLDB4MTEsMHhCRCwweEY1LDB4QUEsMHgwMCwweDAwLDB4QjYs
MHhFRSwweDcyLDB4Q0QsMHhENSwweEFBLDB4MDAsMHgwMCwKLSAgICAweDk2LDB4RUUsMHhEMyww
eEQ1LDB4RDUsMHhBQSwweDAwLDB4MDAsMHhCNiwweEVFLDB4RDMsMHhENSwweEZELDB4QUEsMHgw
MCwweDAwLAotICAgIDB4RjYsMHhGNiwweDM0LDB4REUsMHg1NSwweEZGLDB4RUIsMHhBQSwweEI2
LDB4RUUsMHgzNCwweERFLDB4RjcsMHhBQSwweDgyLDB4MDAsCi0gICAgMHhCNiwweEVFLDB4NTUs
MHhFNiwweERELDB4QUEsMHgyMiwweDAwLDB4QjYsMHhFRSwweDU1LDB4RTYsMHhFRCwweEFBLDB4
MDIsMHgwMCwKLSAgICAweEQ2LDB4RjYsMHg3NSwweEU2LDB4REQsMHhFQiwweEFBLDB4MkEsMHhG
OCwweEY2LDB4OTYsMHhFRSwweDU1LDB4RDcsMHhBRiwweEFCLAotICAgIDB4RjcsMHhGRSwweDk2
LDB4RUUsMHhCRCwweEFCLDB4QUEsMHhCOCwweEQ2LDB4RjYsMHg5NiwweEVFLDB4RjgsMHhGRSww
eEZFLDB4RkEsCi0gICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweEU4LDB4QkEsMHhEMiwweEYzLDB4
OTYsMHhFRSwweDU1LDB4RUUsMHhFMCwweEUwLDB4ODAsMHg4MiwKLSAgICAweDc1LDB4RUUsMHgz
NCwweEU2LDB4ODgsMHhFQSwweEE4LDB4NzgsMHg1NSwweEU2LDB4RjMsMHhERCwweDdBLDB4Nzgs
MHg3RSwweDdFLAotICAgIDB4NTUsMHhFNiwweDkyLDB4RDUsMHhCNywweDk3LDB4QUEsMHgwMCww
eEQ3LDB4RjYsMHgxNCwweERFLDB4QkQsMHhBRCwweEFGLDB4MkIsCi0gICAgMHhGNywweEY2LDB4
OTYsMHhFRSwweEZELDB4QUYsMHgwQSwweDhBLDB4RjcsMHhGNiwweDk2LDB4RjYsMHg2QiwweDhB
LDB4ODAsMHhBMiwKLSAgICAweEQ3LDB4RjYsMHg3NSwweEU2LDB4NTcsMHhEQSwweEU4LDB4Mjgs
MHg5NiwweEVFLDB4NTUsMHhFNiwweEFGLDB4RkEsMHhGQSwweEM4LAotICAgIDB4QjYsMHhFRSww
eDc1LDB4RTYsMHhCRiwweEQ1LDB4OTUsMHg3RiwweEI2LDB4RUUsMHg1NSwweEU2LDB4ODgsMHhB
QSwweEJCLDB4RkYsCi0gICAgMHg5NiwweEVFLDB4RjMsMHhENSwweDcwLDB4MDAsMHgwMCwweDAw
LDB4OTYsMHhFRSwweEIzLDB4RDUsMHhENSwweERFLDB4RTAsMHgwMCwKLSAgICAweDU1LDB4RTYs
MHhGNCwweEQ1LDB4MkEsMHgyOSwweEFELDB4OTgsMHhCNywweEVFLDB4MzUsMHhFNiwweDAyLDB4
QUYsMHhCOSwweEZELAotICAgIDB4RjgsMHhGNiwweDc1LDB4RTYsMHgyQSwweDJGLDB4QTUsMHg3
NSwweEY3LDB4RjYsMHhCNywweEY2LDB4RkEsMHhBMCwweDhBLDB4MkQsCi0gICAgMHhGNywweEY2
LDB4RDMsMHhENSwweDVFLDB4RUEsMHgyMCwweDAwLDB4RjgsMHhGNiwweEIzLDB4RDUsMHhCRCww
eEZGLDB4RTgsMHgwMCwKLSAgICAweEQ3LDB4RjYsMHgzNCwweERFLDB4MEEsMHgwQiwweEI1LDB4
QkEsMHgxOCwweEZGLDB4OTYsMHhFNiwweEEwLDB4ODIsMHgyRiwweEFELAotICAgIDB4MTgsMHhG
RiwweEY4LDB4RjYsMHg5NSwweERFLDB4REYsMHhCQSwweDE4LDB4RjcsMHhGNywweEY2LDB4N0Es
MHhGRiwweDVGLDB4NUQsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweDZGLDB4RkEsMHhBMiww
eEUyLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhFQSwweEJCLDB4RkMsMHhGMCwKLSAgICAweEQ3LDB4
RjYsMHhCNiwweEVFLDB4REEsMHhGRSwweEZDLDB4NTQsMHhCNiwweEVFLDB4OTYsMHhFRSwweEIy
LDB4QjIsMHg1MCwweEQwLAotICAgIDB4QjYsMHhFRSwweDEzLDB4REUsMHg1OCwweEY4LDB4RTAs
MHhGOCwweDk2LDB4RUUsMHgzNCwweEU2LDB4ODMsMHgwQiwweDg5LDB4QTUsCi0gICAgMHg3NSww
eEVFLDB4MTQsMHhERSwweDM2LDB4QkUsMHhEQywweEZDLDB4NzUsMHhFRSwweDU1LDB4RTYsMHg3
OCwweDdCLDB4RUQsMHhGRCwKLSAgICAweDM0LDB4RTYsMHg5MiwweENELDB4NUUsMHg1RSwweDVD
LDB4NTgsMHg5MiwweENELDB4MzEsMHhDRCwweDJBLDB4M0EsMHhBOCwweDA4LAotICAgIDB4MzQs
MHhFNiwweDkyLDB4Q0QsMHhBQiwweEFCLDB4MjksMHgyQiwweDU1LDB4RTYsMHhGMywweERELDB4
QkQsMHhGNywweEY1LDB4QUIsCi0gICAgMHgzNCwweEU2LDB4RjQsMHhERCwweDhBLDB4RUMsMHhD
QSwweEUyLDB4MzUsMHhFNiwweEY0LDB4REQsMHhCNywweEZGLDB4QUYsMHhFRiwKLSAgICAweDE0
LDB4REUsMHhGMywweERELDB4RkEsMHgyOCwweEIwLDB4N0UsMHgzNCwweEU2LDB4RjQsMHhERCww
eEY3LDB4REYsMHg3NywweEVFLAotICAgIDB4ODgsMHg2QSwweEE1LDB4NTEsMHg1OCwweDc4LDB4
RTAsMHhGMCwweEU2LDB4NTksMHg4NCwweDQxLDB4N0EsMHhGMiwweEFFLDB4RjAsCi0gICAgMHg4
NCwweDQ5LDB4RTEsMHgzMCwweDJGLDB4RkUsMHg1QywweDU4LDB4QzUsMHg1MSwweEMxLDB4MzAs
MHgwQiwweEFCLDB4QkYsMHhENSwKLSAgICAweEU1LDB4NTEsMHgwMiwweDMxLDB4QTAsMHg4Qiww
eEVBLDB4NTcsMHhDNCwweDQ5LDB4RTEsMHgyOCwweEEyLDB4ODgsMHhBOCwweDVELAotICAgIDB4
QTUsMHg0OSwweEMyLDB4MzAsMHg4QSwweDA4LDB4RUEsMHhERiwweEM1LDB4NDksMHhBMSwweDI4
LDB4QUEsMHgwMiwweEVBLDB4N0YsCi0gICAgMHg2NCwweDQxLDB4QzEsMHgyOCwweDAwLDB4MDAs
MHhCRiwweEU5LDB4NjQsMHg0MSwweEUyLDB4MzAsMHgwMCwweDI4LDB4NUYsMHhGRiwKLSAgICAw
eEE1LDB4NDksMHgwMiwweDMxLDB4RTgsMHhCNywweEI1LDB4MEQsMHg2NCwweDQxLDB4QzEsMHgy
OCwweEI2LDB4NUMsMHhCOCwweDgwLAotICAgIDB4NDMsMHgzOSwweEMxLDB4MjgsMHgyQSwweERG
LDB4RkYsMHhFQSwweDQ0LDB4MzksMHhDMiwweDI4LDB4MjgsMHhENywweDdGLDB4RUYsCi0gICAg
MHg2NCwweDQxLDB4QTEsMHgyOCwweEZCLDB4RkQsMHhGRCwweDgyLDB4NjQsMHg0MSwweEMyLDB4
MjgsMHg1NywweDVELDB4RkYsMHgyQiwKLSAgICAweDY0LDB4NDEsMHhDMSwweDI4LDB4NzUsMHhE
NSwweEVGLDB4MDIsMHg4NSwweDQ5LDB4QzEsMHgyOCwweDU1LDB4RDUsMHhGRiwweDgyLAotICAg
IDB4QTYsMHg0OSwweEUyLDB4MzAsMHg1RCwweDU1LDB4NUQsMHg4QSwweEM1LDB4NTEsMHhFMiww
eDMwLDB4RjUsMHg5NSwweDk1LDB4MDIsCi0gICAgMHhFNiwweDUxLDB4RTIsMHgzMCwweDVFLDB4
RkEsMHhFQSwweDAwLDB4MDYsMHg1MiwweEMxLDB4MzAsMHg1NSwweEQ1LDB4RUIsMHgwOCwKLSAg
ICAweDA2LDB4NUEsMHhDMSwweDMwLDB4NTUsMHg3NywweEFBLDB4MEEsMHgwNiwweDVBLDB4QzEs
MHgzMCwweDU1LDB4RkQsMHhBQSwweDAyLAotICAgIDB4MDYsMHg2MiwweEMxLDB4MzAsMHg1NSww
eEZGLDB4QUEsMHgwMCwweDA2LDB4NjIsMHgwMiwweDQxLDB4QjUsMHhFRiwweDJBLDB4QTAsCi0g
ICAgMHgyNywweDcyLDB4QTQsMHg1OSwweDNELDB4MkYsMHgwNywweEFGLDB4MjYsMHg3MiwweEU1
LDB4NjksMHg4MiwweDAyLDB4RTgsMHhGRSwKLSAgICAweDI2LDB4NzIsMHhFNSwweDY5LDB4RkEs
MHgyMiwweEFGLDB4REQsMHg0NiwweDcyLDB4RTYsMHg2OSwweDVBLDB4REMsMHhBNywweEZELAot
ICAgIDB4MjYsMHg2QSwweDg1LDB4NTksMHg1NiwweEY4LDB4QTgsMHhBMiwweDA2LDB4NjIsMHg2
NCwweDQ5LDB4N0UsMHhBQSwweDBBLDB4OEMsCi0gICAgMHgwNiwweDYyLDB4NjQsMHg0OSwweDc1
LDB4QTgsMHhCMCwweEJBLDB4MDYsMHg1QSwweDg0LDB4NDksMHhGNSwweDJBLDB4QUEsMHhBQSwK
LSAgICAweDI3LDB4NUEsMHhBNSwweDUxLDB4REYsMHgzMiwweEFCLDB4NTcsMHgwNywweDVBLDB4
ODQsMHg0OSwweEFFLDB4QTIsMHg4MiwweDdCLAotICAgIDB4RTYsMHg1OSwweDg0LDB4NDksMHgy
QSwweDAyLDB4QTAsMHg3NywweDA3LDB4NUEsMHg4NCwweDQ5LDB4QTgsMHgwQSwweEFCLDB4REYs
Ci0gICAgMHgyNywweDYyLDB4ODQsMHg0OSwweDhBLDB4QUIsMHhGRiwweEY1LDB4MjcsMHg2Miww
eEE0LDB4NTEsMHgyQSwweEVCLDB4N0UsMHg1NywKLSAgICAweDQ2LDB4NjIsMHg4NCwweDQ5LDB4
QkEsMHhBQiwweDdELDB4M0QsMHg0NywweDYyLDB4NDQsMHg0OSwweEFBLDB4RUEsMHhGRiwweDA4
LAotICAgIDB4QzgsMHg3MiwweDgzLDB4NDksMHhGRiwweEZGLDB4RjUsMHgyQSwweDJBLDB4N0Is
MHg4NCwweDUxLDB4RkYsMHg1NywweDVELDB4MDIsCi0gICAgMHhBQywweDkzLDB4QTUsMHg1MSww
eEQ3LDB4NTUsMHhENSwweDIyLDB4MEQsMHhBNCwweEM1LDB4NTEsMHg1NSwweDU1LDB4NzcsMHgw
MiwKLSAgICAweDZGLDB4QUMsMHg0MywweDQxLDB4RjcsMHg1NSwweEJGLDB4MDAsMHhEMSwweEJD
LDB4QzUsMHg1MSwweDU1LDB4NTUsMHhGRiwweDAwLAotICAgIDB4NzIsMHhDRCwweEU2LDB4NTks
MHg1NSwweDU1LDB4RkYsMHgwMCwweDkzLDB4Q0QsMHhFNSwweDU5LDB4NTUsMHg1NSwweEJCLDB4
MDAsCi0gICAgMHhCMywweEQ1LDB4NjMsMHg0OSwweDU1LDB4RkYsMHhBQSwweDAwLDB4RjQsMHhE
RCwweEE0LDB4NTEsMHg1NSwweEZELDB4QUEsMHgwMCwKLSAgICAweDU2LDB4RUUsMHhBNCwweDUx
LDB4NTUsMHhGRiwweDJBLDB4MDAsMHg3NiwweEVFLDB4MDYsMHg2MiwweDU1LDB4RkYsMHgyQSww
eDAwLAotICAgIDB4RjQsMHhERCwweEU1LDB4NTksMHg1NSwweEFBLDB4MjAsMHgwMCwweDE1LDB4
RTYsMHhBOCwweDcyLDB4NTUsMHhBQSwweDAwLDB4MDAsCi0gICAgMHg1NSwweEU2LDB4MkIsMHg4
MywweDU1LDB4QUEsMHgwOCwweDAwLDB4NTUsMHhFNiwweDhDLDB4OTMsMHhENSwweEFBLDB4MDAs
MHgwMCwKLSAgICAweDM1LDB4RTYsMHgyRCwweEE0LDB4NTUsMHhBQSwweEEwLDB4ODAsMHg1Miww
eENELDB4Q0MsMHg5QiwweDU1LDB4RTgsMHhFMCwweDc4LAotICAgIDB4QUMsMHg5MywweDQ2LDB4
NkEsMHhFQSwweDYwLDB4NTgsMHg1NiwweEFGLDB4QjQsMHgwNiwweDYyLDB4MkIsMHgyRiwweDI1
LDB4QjUsCi0gICAgMHg3NiwweEVFLDB4MTAsMHhCRCwweEFGLDB4MkIsMHgwOSwweDA5LDB4Qjcs
MHhGNiwweEY0LDB4REQsMHg1NSwweEFBLDB4MjIsMHgwMiwKLSAgICAweEI3LDB4RjYsMHgxNSww
eERFLDB4RjUsMHhFQSwweDAyLDB4MDAsMHhENywweEY2LDB4MzUsMHhFNiwweEY1LDB4QUIsMHgy
QSwweDJBLAotICAgIDB4RDcsMHhGNiwweDU1LDB4RTYsMHg1NywweEFFLDB4QTIsMHgyQSwweEQ3
LDB4RjYsMHg3NiwweEVFLDB4NzUsMHhCRSwweDJBLDB4ODIsCi0gICAgMHhENywweEY2LDB4NzYs
MHhFRSwweEZELDB4QUEsMHgyOCwweDA4LDB4RDcsMHhGNiwweDk2LDB4RUUsMHg3NSwweERFLDB4
QUEsMHhBOCwKLSAgICAweEQ3LDB4RjYsMHg3NiwweEVFLDB4RkQsMHhCRiwweEFBLDB4MjgsMHhE
NiwweEY2LDB4QjcsMHhFRSwweDc1LDB4RkQsMHg2QSwweEZBLAotICAgIDB4RDcsMHhGNiwweDk2
LDB4RUUsMHhCRiwweEVGLDB4QUEsMHhBQSwweDk2LDB4RjYsMHhENywweEVFLDB4QUUsMHhCRiww
eEY3LDB4RkYsCi0gICAgMHhENywweEY2LDB4OTYsMHhFRSwweEQ3LDB4RkYsMHhBQSwweDJBLDB4
RDYsMHhGNiwweEI3LDB4RUUsMHg3NywweEZGLDB4RkEsMHg2QiwKLSAgICAweEI3LDB4RjYsMHhC
NiwweEVFLDB4RkYsMHhGQiwweEVGLDB4RkYsMHhENywweEY2LDB4QjYsMHhFRSwweEZELDB4NkYs
MHhFQiwweEVBLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBOSwweEI5LDB4QkYsMHhGRCww
eEQ3LDB4RjYsMHhCNiwweEVFLDB4RkYsMHhFQSwweDY4LDB4RkEsCi0gICAgMHhENywweEY2LDB4
QjYsMHhFRSwweDU1LDB4QkYsMHg3NywweEZGLDB4QjYsMHhGNiwweEQ3LDB4RUUsMHg4QSwweEM4
LDB4ODIsMHgyMiwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4N0IsMHg3QiwweEZCLDB4QkIs
MHhENywweEY2LDB4OTYsMHhFRSwweEJBLDB4QkEsMHhCRSwweEZFLAotICAgIDB4RDcsMHhGNiww
eEI3LDB4RUUsMHgyQiwweDMyLDB4MjgsMHgyQSwweEY3LDB4RjYsMHhCNiwweEY2LDB4OEUsMHg4
MywweEEwLDB4NzIsCi0gICAgMHhENiwweEY2LDB4OTYsMHhFRSwweEE4LDB4QjgsMHhGRiwweEQ3
LDB4QjYsMHhGNiwweDk2LDB4RUUsMHhBMiwweDYwLDB4N0EsMHhCNywKLSAgICAweDk2LDB4RUUs
MHg3NSwweEVFLDB4MDAsMHhCQiwweDVGLDB4NUMsMHhCNywweEY2LDB4MzUsMHhFNiwweEEyLDB4
RUEsMHhFRSwweDVGLAotICAgIDB4NTUsMHhFNiwweDE0LDB4REUsMHhBOCwweEJBLDB4QTcsMHhB
RiwweDk2LDB4RUUsMHhGMywweERELDB4RDcsMHhCRiwweEJGLDB4MkYsCi0gICAgMHhENywweEY2
LDB4MzQsMHhFNiwweEY3LDB4RkYsMHgwQSwweDIyLDB4RjcsMHhGNiwweDk2LDB4RUUsMHhCRCww
eDBCLDB4QTIsMHg4QSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QTcsMHhBNywweEEyLDB4
RUIsMHhGNywweEY2LDB4RDcsMHhGNiwweEVBLDB4NkEsMHhGQiwweEVELAotICAgIDB4RjcsMHhG
NiwweEI2LDB4RUUsMHhGQSwweEZBLDB4RUEsMHhBMiwweEQ3LDB4RjYsMHg5NiwweEVFLDB4NUUs
MHhFRSwweENBLDB4ODAsCi0gICAgMHhCNiwweEVFLDB4NzYsMHhFRSwweDdCLDB4QUIsMHhBQSww
eDAwLDB4QjYsMHhFRSwweDc2LDB4RTYsMHhENSwweEZFLDB4RkEsMHhGQywKLSAgICAweDk2LDB4
RUUsMHg3NiwweEU2LDB4RUYsMHhERSwweDZGLDB4QkEsMHhCNiwweEVFLDB4NTYsMHhFNiwweDJB
LDB4MkEsMHgyQiwweDBBLAotICAgIDB4RjcsMHhGNiwweDU1LDB4RTYsMHg1RSwweDdBLDB4RUEs
MHhBQSwweEQ3LDB4RjYsMHgzNCwweERFLDB4QjUsMHhGRiwweEFBLDB4ODAsCi0gICAgMHhCNiww
eEVFLDB4NzUsMHhFNiwweDVELDB4QUYsMHhBQiwweEEwLDB4RjcsMHhGNiwweDk2LDB4RUUsMHgy
RCwweEJELDB4RTUsMHhCRiwKLSAgICAweDE4LDB4RkYsMHhENywweEY2LDB4QUEsMHhCQiwweEJE
LDB4QjUsMHgxOCwweEY3LDB4RDcsMHhGNiwweEZELDB4QkEsMHhFQSwweEE4LAotICAgIDB4Rjgs
MHhGNiwweEQ3LDB4RjYsMHg1NiwweEY4LDB4MDgsMHhBQywweEY4LDB4RjYsMHhCNywweEVFLDB4
NTUsMHg3QSwweEMwLDB4MDAsCi0gICAgMHgxOCwweEZGLDB4OTYsMHhFNiwweDgyLDB4MEQsMHhC
NywweEZFLDB4MTgsMHhGRiwweEQ3LDB4RUUsMHhBRSwweEFFLDB4QUUsMHhBRCwKLSAgICAweDE4
LDB4RkYsMHhGNywweEY2LDB4RjcsMHhENywweEFGLDB4QkQsMHgxOCwweEZGLDB4RDcsMHhGNiww
eDVBLDB4N0UsMHg3RSwweDdBLAotICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHhGRSwweDcyLDB4
RUYsMHhFQiwweEI2LDB4RUUsMHg3NSwweEU2LDB4QUEsMHhCQSwweDdFLDB4N0UsCi0gICAgMHg5
NiwweEVFLDB4MTQsMHhERSwweEUwLDB4RTAsMHhFOCwweDdCLDB4OTYsMHhFRSwweEYzLDB4REQs
MHgyRCwweEJELDB4QjUsMHhENSwKLSAgICAweDc1LDB4RUUsMHhGMywweERELDB4RkMsMHg3OCww
eEYwLDB4RjgsMHg1NSwweEU2LDB4MTQsMHhFNiwweDhBLDB4QTMsMHhBOSwweEZELAotICAgIDB4
MzQsMHhFNiwweDkyLDB4Q0QsMHg3OCwweDc4LDB4NzAsMHg2OCwweDkyLDB4Q0QsMHg1MSwweEM1
LDB4M0UsMHhCNSwweEQ1LDB4OUUsCi0gICAgMHgxNCwweEU2LDB4OTIsMHhDRCwweDBCLDB4MEIs
MHgyOSwweDBGLDB4NTQsMHhFNiwweDE0LDB4REUsMHhFQiwweERGLDB4NTcsMHhENywKLSAgICAw
eDM0LDB4RTYsMHhGNCwweERELDB4QzIsMHhBQSwweEFFLDB4NkUsMHgxNCwweERFLDB4QjMsMHhE
NSwweDBBLDB4QTgsMHhBQSwweDJCLAotICAgIDB4MTQsMHhERSwweEQzLDB4RDUsMHgzNywweDJG
LDB4MkEsMHgyMCwweDM0LDB4RTYsMHhGNCwweERELDB4RUEsMHg3RSwweDVGLDB4NzYsCi0gICAg
MHg4QiwweDhCLDB4MDYsMHg1QSwweDdFLDB4N0UsMHg3OCwweDc4LDB4MDYsMHg1QSwweEE1LDB4
NDksMHhERSwweEZBLDB4NTgsMHg2MCwKLSAgICAweEE1LDB4NDksMHhDMSwweDMwLDB4NjgsMHhF
OCwweDgyLDB4MDAsMHhBNSwweDQ5LDB4QTEsMHgyOCwweEQ1LDB4RkYsMHhBQSwweDA4LAotICAg
IDB4NDcsMHg2MiwweEUxLDB4MzAsMHg1NSwweEQ1LDB4QUIsMHgwQSwweDg4LDB4NkEsMHhFMSww
eDMwLDB4NTUsMHhGRiwweDJBLDB4MDAsCi0gICAgMHhFOSwweDcyLDB4MjMsMHgzOSwweDU1LDB4
QUIsMHgwQSwweDIyLDB4RTksMHg3MiwweDg0LDB4NDEsMHg1NSwweEZBLDB4QTAsMHhBOCwKLSAg
ICAweDY3LDB4NjIsMHg2NCwweDQxLDB4RjUsMHhBQSwweDAwLDB4QTAsMHg4NywweDYyLDB4NjQs
MHg0MSwweDU1LDB4RkUsMHhBOCwweEFBLAotICAgIDB4NjgsMHg2MiwweDQzLDB4MzksMHhCRCww
eEFBLDB4MjIsMHhBQSwweDI3LDB4NUEsMHg4NCwweDQ5LDB4NUUsMHhBMCwweEE4LDB4QUEsCi0g
ICAgMHgwNywweDVBLDB4ODQsMHg0MSwweDU1LDB4MjAsMHgwMCwweEEwLDB4MjcsMHg1QSwweDg0
LDB4NDksMHg1NSwweDA4LDB4MDAsMHhGQiwKLSAgICAweDI3LDB4NUEsMHg4NCwweDQ5LDB4QkQs
MHhBMCwweDg4LDB4RUYsMHgwNywweDVBLDB4QTUsMHg0OSwweEFELDB4MjgsMHgyNiwweDc3LAot
ICAgIDB4MjcsMHg1QSwweDg0LDB4NDksMHhBQSwweDAwLDB4QUYsMHg3NywweDQ3LDB4NUEsMHg4
NSwweDQ5LDB4RUIsMHhBMiwweEZCLDB4NTUsCi0gICAgMHgwNywweDVBLDB4NjQsMHg0OSwweDJB
LDB4MDIsMHhBQSwweDU1LDB4MjcsMHg2MiwweDg0LDB4NDksMHhBQSwweEYwLDB4N0YsMHg1NSwK
LSAgICAweDQ3LDB4NjIsMHg2NCwweDQ5LDB4MDIsMHhFQSwweDdGLDB4NTUsMHgyNywweDVBLDB4
NjUsMHg0OSwweDAwLDB4QTgsMHg1NywweEQ1LAotICAgIDB4MjcsMHg2MiwweDg1LDB4NDksMHgw
QSwweDhBLDB4NTUsMHg1NSwweDA2LDB4NUEsMHg2NSwweDQ5LDB4ODAsMHhFMywweERELDB4M0Es
Ci0gICAgMHg0NywweDZBLDB4NjQsMHg0OSwweEVBLDB4RkYsMHg1NSwweDgyLDB4NDcsMHg2QSww
eDg0LDB4NTEsMHhGRSwweDVGLDB4RDUsMHhFOCwKLSAgICAweDA2LDB4NkEsMHhDNSwweDYxLDB4
QkIsMHg5RiwweEE5LDB4QTUsMHgwNiwweDcyLDB4RTUsMHg2OSwweEQ0LDB4NUYsMHg1RiwweDVB
LAotICAgIDB4NDYsMHg3QSwweEU1LDB4NjksMHhGNSwweEZELDB4QUYsMHhGOSwweDI2LDB4NzIs
MHhFNSwweDY5LDB4NkYsMHhGRiwweEEyLDB4MkEsCi0gICAgMHg4OCwweDgyLDB4RTYsMHg2OSww
eDdGLDB4QUQsMHgyOSwweDJCLDB4NEUsMHhBQywweEE1LDB4NTksMHg1NSwweDU3LDB4QUYsMHgw
QSwKLSAgICAweDczLDB4Q0QsMHhFNiwweDYxLDB4NTUsMHg1NSwweEFCLDB4MDgsMHhCMywweEQ1
LDB4ODQsMHg1MSwweDU1LDB4REQsMHhBQSwweDAwLAotICAgIDB4MTQsMHhERSwweDgzLDB4NDks
MHg1NSwweEZGLDB4QUEsMHgwMCwweDM0LDB4REUsMHhFNSwweDU5LDB4NTUsMHhGRiwweDJBLDB4
MDAsCi0gICAgMHg5NSwweEVFLDB4MjYsMHg2MiwweDU1LDB4RkYsMHgyQSwweDAwLDB4RjMsMHhE
RCwweDQ2LDB4NjIsMHg1NSwweEFCLDB4MDgsMHgwMCwKLSAgICAweDE0LDB4REUsMHg4OCwweDZB
LDB4NTUsMHhBQSwweDAwLDB4MDAsMHgzNCwweERFLDB4MEEsMHg3QiwweDU1LDB4QUEsMHgwMCww
eDAwLAotICAgIDB4NTUsMHhFNiwweDZCLDB4OEIsMHg1RCwweEFBLDB4MDAsMHgwMCwweDc1LDB4
RTYsMHgyRCwweDlDLDB4NTUsMHhBQSwweDAwLDB4MDAsCi0gICAgMHg5NiwweEVFLDB4NkUsMHhB
QywweDU1LDB4MkEsMHgwMCwweDAwLDB4OTYsMHhFRSwweEYwLDB4QkMsMHg1NSwweEFBLDB4MDAs
MHgwMCwKLSAgICAweEI2LDB4RUUsMHg1MiwweEM1LDB4NzUsMHhBQSwweDIyLDB4ODAsMHhCNiww
eEVFLDB4OTMsMHhDRCwweEQ1LDB4QUEsMHgwMCwweDAwLAotICAgIDB4OTYsMHhFRSwweEY0LDB4
REQsMHg1NSwweEJCLDB4MDAsMHgwMCwweEI2LDB4RjYsMHgxNCwweERFLDB4NTUsMHhBRSwweEFB
LDB4MDAsCi0gICAgMHhCNiwweEY2LDB4MTUsMHhERSwweEY3LDB4QUEsMHgyOCwweDAwLDB4QjYs
MHhFRSwweDM1LDB4RTYsMHg1RCwweEFBLDB4MjgsMHgwMCwKLSAgICAweEI2LDB4RUUsMHg1NSww
eEU2LDB4N0QsMHhFQSwweDIyLDB4MDAsMHhCNiwweEVFLDB4NTUsMHhFNiwweEZELDB4MkEsMHgw
MCwweDAwLAotICAgIDB4QjYsMHhFRSwweDc2LDB4RUUsMHg1NywweEJCLDB4MjIsMHgwMCwweEI2
LDB4RjYsMHg1NiwweEVFLDB4RjcsMHhBRiwweDBBLDB4MDAsCi0gICAgMHhCNiwweEY2LDB4OTYs
MHhFRSwweDc1LDB4RUQsMHhCOCwweDAwLDB4QjYsMHhGNiwweDk2LDB4RUUsMHhGNSwweEZFLDB4
RkEsMHgwMCwKLSAgICAweDk2LDB4RjYsMHhCNiwweEVFLDB4QTgsMHhFRSwweEVFLDB4RDUsMHhC
NiwweEY2LDB4MTQsMHhFNiwweEFBLDB4RTAsMHg2QSwweDYwLAotICAgIDB4MzQsMHhFNiwweDRF
LDB4QUMsMHhBMCwweEU4LDB4NjgsMHg3QSwweEFGLDB4QkMsMHgwNiwweDYyLDB4RTAsMHhGOCww
eDdFLDB4NUUsCi0gICAgMHg2NiwweDcyLDB4RTYsMHg2MSwweEZDLDB4N0IsMHg3RSwweDVFLDB4
RTksMHg4MiwweEM1LDB4NjEsMHgzRCwweEJELDB4QjcsMHhENSwKLSAgICAweDc1LDB4RUUsMHg4
QiwweDkzLDB4MEIsMHgyOSwweDBELDB4MkQsMHgxOCwweEZGLDB4OTYsMHhFRSwweEY1LDB4RkYs
MHhBQiwweDJCLAotICAgIDB4RjgsMHhGNiwweEI3LDB4RjYsMHhENSwweEJGLDB4MkEsMHgwOCww
eEY3LDB4RjYsMHhCNywweEVFLDB4RkQsMHhBQSwweDAwLDB4MDAsCi0gICAgMHgxNywweEZGLDB4
RDcsMHhGNiwweDdELDB4QkYsMHhFQSwweEFBLDB4MTgsMHhGNywweEQ3LDB4RjYsMHhENSwweEJB
LDB4M0IsMHhBQSwKLSAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4RUEsMHhFOCwweEQwLDB4RTgs
MHhGNywweEY2LDB4QjYsMHhFRSwweERCLDB4QkIsMHhBQSwweEFCLAotICAgIDB4RDcsMHhGNiww
eEI2LDB4RUUsMHhCQSwweDI4LDB4MEEsMHgyMiwweEQ3LDB4RjYsMHhCNywweEVFLDB4ODIsMHg4
MiwweDAwLDB4MDIsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweEYwLDB4M0EsMHg4MiwweDg5
LDB4RDcsMHhGNiwweEI3LDB4RUUsMHg5QywweEJFLDB4QUIsMHg4MiwKLSAgICAweEQ3LDB4RjYs
MHhCNywweEVFLDB4M0YsMHhGQiwweEFFLDB4MEUsMHhENywweEY2LDB4QjcsMHhFRSwweEVBLDB4
RTIsMHhBQSwweEE4LAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhFRiwweEEyLDB4QTAsMHhB
MCwweEQ3LDB4RjYsMHhCNiwweEVFLDB4RjEsMHhFQiwweEE4LDB4QUEsCi0gICAgMHhENywweEY2
LDB4QjcsMHhFRSwweEJGLDB4RUIsMHg0QSwweEFBLDB4RDYsMHhGNiwweEI3LDB4RUUsMHhENyww
eEY1LDB4QUYsMHg4QSwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4N0YsMHhGQiwweEZBLDB4
RUEsMHhENywweEY2LDB4QjYsMHhFRSwweEUzLDB4OEEsMHg3RCwweDJGLAotICAgIDB4RDcsMHhG
NiwweEI2LDB4RUUsMHhFRiwweDZBLDB4MkIsMHgyOSwweEY3LDB4RjYsMHhCNiwweEVFLDB4NUQs
MHhGRiwweEJGLDB4MkIsCi0gICAgMHhGNywweEY2LDB4QjYsMHhGNiwweDJCLDB4OEEsMHhFMiww
eEY4LDB4RDcsMHhGNiwweDc1LDB4RUUsMHhGMCwweEY4LDB4N0UsMHhGRSwKLSAgICAweDk2LDB4
RUUsMHg3NSwweEVFLDB4MjYsMHhCRiwweDY0LDB4NkQsMHhCNiwweEY2LDB4NzUsMHhFRSwweEFC
LDB4N0IsMHg3RiwweDU1LAotICAgIDB4OTYsMHhFRSwweDM0LDB4RTYsMHhDMCwweEU4LDB4RUUs
MHg3QSwweDU1LDB4RTYsMHhGMywweERELDB4QTAsMHhBOCwweEZBLDB4N0UsCi0gICAgMHg1NSww
eEU2LDB4RjMsMHhERCwweDJBLDB4MkEsMHgyQiwweDA5LDB4QjcsMHhGNiwweDU1LDB4RTYsMHgy
RCwweDJCLDB4MEIsMHg4QiwKLSAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4M0EsMHhFOCwweEVB
LDB4RkYsMHhENywweEY2LDB4OTYsMHhFRSwweDAyLDB4M0IsMHhBQiwweDJCLAotICAgIDB4MTcs
MHhGNywweEI3LDB4RjYsMHhGQiwweEZGLDB4RkQsMHg1NSwweEY3LDB4RjYsMHhENywweEY2LDB4
QUQsMHhBRCwweDY1LDB4NkQsCi0gICAgMHhGNywweEY2LDB4OTcsMHhFRSwweDI4LDB4ODgsMHhB
QSwweDhFLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhENiwweEY2LDB4NTUsMHg3NywKLSAgICAweEQ3
LDB4RjYsMHhCNywweEVFLDB4N0UsMHhCOCwweEE4LDB4MDgsMHhENywweEY2LDB4OTYsMHhFRSww
eEZCLDB4RkEsMHhFQSwweDA4LAotICAgIDB4OTYsMHhGNiwweEI3LDB4RUUsMHhCQiwweERELDB4
N0QsMHg1NSwweEI3LDB4RUUsMHg5NiwweEVFLDB4RjUsMHg3RSwweDY4LDB4ODAsCi0gICAgMHhC
NiwweEVFLDB4OTYsMHhFRSwweDAzLDB4QjUsMHhCNiwweDJFLDB4RjcsMHhGNiwweEI2LDB4RUUs
MHg3RiwweEFELDB4MkQsMHhBRCwKLSAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4NTUsMHg1QSww
eDZBLDB4MjAsMHhENywweEY2LDB4QjcsMHhFRSwweEU1LDB4RUQsMHhFRiwweDk4LAotICAgIDB4
MTgsMHhGRiwweEI2LDB4RjYsMHhCRiwweEFELDB4QkUsMHhBQiwweDM4LDB4RkYsMHhGOCwweEY2
LDB4RkYsMHhBRiwweEE5LDB4QUYsCi0gICAgMHgzOSwweEZGLDB4RjgsMHhGNiwweDU3LDB4NUUs
MHg3QSwweEZBLDB4MTgsMHhGNywweEQ3LDB4RjYsMHhGQSwweDdCLDB4RkEsMHhGOCwKLSAgICAw
eEY3LDB4RjYsMHg5NiwweEVFLDB4NjgsMHg4MCwweDAyLDB4MDgsMHhGNywweEY2LDB4QjYsMHhF
RSwweDJELDB4QjcsMHhENiwweDdFLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgwMiwweDBB
LDB4MjAsMHgyOSwweDM4LDB4RkYsMHhENywweEY2LDB4N0YsMHg3QiwweEZGLDB4N0QsCi0gICAg
MHhENywweEY2LDB4OTYsMHhFRSwweEZFLDB4RUMsMHhGRSwweEI4LDB4QjYsMHhFRSwweDU1LDB4
RTYsMHhGQSwweDc4LDB4RjgsMHg3QSwKLSAgICAweDc1LDB4RTYsMHgxNCwweERFLDB4NkEsMHg2
QSwweDZFLDB4NjgsMHgzNCwweEU2LDB4OTIsMHhDRCwweEFFLDB4M0YsMHg5NSwweEQ1LAotICAg
IDB4NTUsMHhFNiwweDE0LDB4RTYsMHg3MiwweDYyLDB4NDIsMHg2MywweEY0LDB4RTUsMHgzNCww
eERFLDB4N0YsMHhGQSwweEZBLDB4RkEsCi0gICAgMHg1NSwweEVFLDB4QjMsMHhENSwweDYwLDB4
NjgsMHhFMCwweEUyLDB4QjIsMHhENSwweDUxLDB4QzUsMHgyRiwweEI3LDB4RjYsMHhGNiwKLSAg
ICAweDM0LDB4RTYsMHg5MiwweENELDB4MkYsMHgwRiwweEE5LDB4MjksMHgzNCwweEU2LDB4MTQs
MHhERSwweDAyLDB4ODgsMHgwQiwweEZBLAotICAgIDB4MzUsMHhFNiwweEY0LDB4REQsMHhGQSww
eEZFLDB4OUUsMHhCNywweDE0LDB4REUsMHhEMywweERELDB4M0UsMHhGQywweEVFLDB4QkEsCi0g
ICAgMHgxNCwweERFLDB4RDMsMHhERCwweDI4LDB4QkEsMHg5RiwweEU3LDB4MTQsMHhERSwweDky
LDB4Q0QsMHhBOCwweEE4LDB4RUEsMHg2MCwKLSAgICAweDUxLDB4QzUsMHg4NywweDZBLDB4NUUs
MHg3OCwweEUwLDB4ODAsMHhDQiwweDkzLDB4QzUsMHg1MSwweDU3LDB4NTcsMHg1RSwweEU4LAot
ICAgIDB4RTUsMHg1OSwweDYzLDB4NDksMHhBRSwweEFGLDB4RjcsMHhBMCwweEU1LDB4NTksMHg0
MiwweDQxLDB4MjIsMHgwQSwweEZGLDB4REYsCi0gICAgMHg0NywweDYyLDB4NDMsMHg0MSwweDAw
LDB4QUUsMHhGRiwweEU3LDB4NjcsMHg2MiwweDQzLDB4NDEsMHgwMCwweEJBLDB4N0YsMHhGQSwK
LSAgICAweDg4LDB4NkEsMHg4NCwweDQ5LDB4MjAsMHhGRiwweDU1LDB4RkYsMHg2NywweDZBLDB4
ODQsMHg0OSwweDhBLDB4NkYsMHg3NSwweDIwLAotICAgIDB4QzksMHg3QSwweDg0LDB4NDksMHhG
RiwweDVELDB4NTUsMHgwMiwweDZCLDB4OEIsMHg4NCwweDQ5LDB4N0YsMHg1NSwweDU1LDB4MDIs
Ci0gICAgMHhFRCwweDlCLDB4ODQsMHg0OSwweDU1LDB4NTUsMHhGRiwweDAwLDB4NkUsMHhBQyww
eEE1LDB4NDksMHg1NSwweDU1LDB4RkYsMHgwMCwKLSAgICAweEQwLDB4QjQsMHhBNSwweDUxLDB4
NTUsMHg1NSwweEZGLDB4MDAsMHgzMiwweEJELDB4QTUsMHg1MSwweDU1LDB4NTUsMHhFRiwweDAw
LAotICAgIDB4MzIsMHhDNSwweEE1LDB4NTEsMHg1NSwweDU1LDB4QUEsMHgwMCwweDkyLDB4Q0Qs
MHhBNSwweDQ5LDB4NTUsMHhGNSwweEFBLDB4MDAsCi0gICAgMHhGMywweERELDB4ODQsMHg0OSww
eDU1LDB4RkYsMHhBQSwweDAwLDB4MzQsMHhFNiwweEE1LDB4NTEsMHg1NSwweEZGLDB4QUEsMHgw
MCwKLSAgICAweDE0LDB4REUsMHgwNiwweDVBLDB4NTUsMHhGRiwweDhBLDB4MDAsMHhCMywweEQ1
LDB4QzUsMHg1MSwweDU1LDB4QUEsMHgwMCwweDAwLAotICAgIDB4RjQsMHhERCwweDY3LDB4NkEs
MHg1NSwweEFBLDB4MDAsMHgwMCwweDE0LDB4REUsMHhFOSwweDcyLDB4NTUsMHhBQSwweDAwLDB4
MDAsCi0gICAgMHgzNSwweERFLDB4NkIsMHg4QiwweDU1LDB4QUEsMHgwOCwweDAwLDB4MzUsMHhF
NiwweEFELDB4OTMsMHhGNSwweEFBLDB4MDAsMHgwMCwKLSAgICAweDM1LDB4RTYsMHg3MCwweEFD
LDB4NTUsMHhBQSwweDAwLDB4MDAsMHgzNSwweEU2LDB4QTgsMHg3QSwweDdFLDB4RkEsMHhFMCww
eEUwLAotICAgIDB4ODcsMHg3QSwweDg0LDB4NTksMHhGNywweEY2LDB4NTQsMHg1NCwweEU1LDB4
NjksMHhBNCwweDYxLDB4MjAsMHgyMiwweDIzLDB4M0QsCi0gICAgMHgwNSwweDcyLDB4QzUsMHg2
OSwweEJFLDB4QkYsMHgzRSwweDM3LDB4MjYsMHg3MiwweEU1LDB4NjksMHhGQSwweEJBLDB4Qjgs
MHhENywKLSAgICAweDg4LDB4N0EsMHgwNiwweDcyLDB4MkQsMHhCRCwweEI1LDB4RDUsMHg2RSww
eEI0LDB4NjcsMHg3MiwweDBCLDB4MkQsMHhCNSwweEY1LAotICAgIDB4MzUsMHhFNiwweDBDLDB4
QUMsMHgyQSwweDBCLDB4MkYsMHhBRCwweDk2LDB4RjYsMHgzNSwweEU2LDB4QjUsMHhBQSwweEFC
LDB4MDksCi0gICAgMHhCNiwweEY2LDB4NTUsMHhFNiwweERELDB4RkIsMHhBQiwweDJBLDB4QjYs
MHhGNiwweDc1LDB4RUUsMHg1NSwweEZGLDB4RUEsMHhBQSwKLSAgICAweDk2LDB4RjYsMHg3NSww
eEU2LDB4NUYsMHhBRSwweDhCLDB4MDgsMHhCNiwweEY2LDB4NzUsMHhFNiwweEQ3LDB4RUYsMHgy
QSwweDIyLAotICAgIDB4QjYsMHhGNiwweDk2LDB4RTYsMHg1NywweEFCLDB4QUUsMHhBMiwweEI2
LDB4RjYsMHg3NSwweEVFLDB4RkQsMHhFRSwweEIwLDB4M0EsCi0gICAgMHhCNywweEY2LDB4NzUs
MHhFRSwweEJELDB4QkIsMHhBQSwweEFBLDB4QjYsMHhGNiwweDk2LDB4RUUsMHg3RSwweENBLDB4
MDMsMHgwRiwKLSAgICAweDk2LDB4RjYsMHhCNiwweEVFLDB4NzYsMHg1RiwweDc3LDB4RkYsMHhE
NywweEY2LDB4OTYsMHhFRSwweEQ1LDB4RkYsMHhGRiwweEJDLAotICAgIDB4QjYsMHhGNiwweDk1
LDB4RUUsMHhFRiwweEFBLDB4MEEsMHgwQSwweDk2LDB4RkUsMHhCNiwweEVFLDB4N0QsMHhGNyww
eERGLDB4RkYsCi0gICAgMHhCNywweEY2LDB4QjYsMHhFRSwweEZGLDB4QkUsMHhFQiwweEFBLDB4
RDYsMHhGNiwweDk1LDB4RUUsMHhGQiwweEFBLDB4MjksMHhBRiwKLSAgICAweEQ3LDB4RjYsMHhC
NiwweEVFLDB4N0QsMHhBQSwweDAwLDB4MDIsMHhGNiwweEY2LDB4RDcsMHhGNiwweDU1LDB4NTcs
MHg3RiwweEVCLAotICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhENywweEFCLDB4ODIsMHgwMCww
eEY3LDB4RjYsMHhCNywweEVFLDB4RjcsMHgyQSwweDIyLDB4ODAsCi0gICAgMHhGNywweEY2LDB4
QjYsMHhFRSwweEZCLDB4RUEsMHg4QSwweDIyLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhCRiwweDJB
LDB4MDAsMHgwMCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NTUsMHg1OCwweEUyLDB4QTAs
MHhGOCwweEZFLDB4QjYsMHhGNiwweERELDB4QUEsMHgyQiwweEVBLAotICAgIDB4RDcsMHhGNiww
eDc1LDB4RUUsMHg4OCwweDgwLDB4RTAsMHg2MCwweEI2LDB4RjYsMHhFRiwweEJDLDB4QTAsMHhF
OCwweEVBLDB4N0EsCi0gICAgMHg1MSwweENELDB4ODcsMHg3QSwweEUwLDB4RTgsMHg1QSwweDVF
LDB4QzgsMHg3QSwweDI2LDB4NkEsMHg3QywweEZGLDB4RjUsMHhGNSwKLSAgICAweDQ2LDB4NzIs
MHhFNSwweDYxLDB4N0MsMHhDMCwweDg4LDB4NjAsMHg2NiwweDcyLDB4QzUsMHg2MSwweDE1LDB4
OTUsMHg5RSwweEJGLAotICAgIDB4NzUsMHhFRSwweDhBLDB4OTMsMHgyRCwweDJELDB4MkQsMHgy
RCwweDE4LDB4RkYsMHg5NiwweEY2LDB4MjksMHgyQiwweEFCLDB4OEIsCi0gICAgMHhGOCwweEZF
LDB4MTcsMHhGNywweEFBLDB4QUEsMHhBQSwweEUyLDB4MTgsMHhGRiwweEY3LDB4RjYsMHhENyww
eEQ1LDB4QUYsMHhCRSwKLSAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4QUYsMHhGRiwweEVFLDB4
QjksMHgxOCwweEZGLDB4RjcsMHhGNiwweDdFLDB4QUEsMHhBQSwweDZFLAotICAgIDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHg3MCwweEU4LDB4RTIsMHhBOCwweEY3LDB4RjYsMHhENywweEY2LDB4REIs
MHhEQSwweDVELDB4RDUsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDU1LDB4NUQsMHg2Qiww
eDdCLDB4RjYsMHhGNiwweEQ3LDB4RjYsMHg1NSwweDVGLDB4N0UsMHg3RiwKLSAgICAweEI3LDB4
RjYsMHhENiwweEVFLDB4QkEsMHhFQSwweEFBLDB4RkIsMHhENywweEY2LDB4QjcsMHhFRSwweDhB
LDB4MDIsMHgwMiwweEM4LAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhBQSwweDIyLDB4Mjgs
MHgyRiwweEQ3LDB4RjYsMHhCNywweEVFLDB4ODIsMHgwMiwweDI4LDB4MkUsCi0gICAgMHhENyww
eEY2LDB4QjcsMHhFRSwweDgwLDB4QTgsMHgzRSwweEEzLDB4RDcsMHhGNiwweEY3LDB4RUUsMHgw
MCwweDBBLDB4ODIsMHg4MiwKLSAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4RkYsMHhEQSwweEZF
LDB4QkEsMHhENywweEY2LDB4QjYsMHhFRSwweDhCLDB4OEEsMHhBMiwweDI4LAotICAgIDB4RDcs
MHhGNiwweEI2LDB4RUUsMHhFMiwweEVBLDB4QkUsMHhCRSwweEY3LDB4RjYsMHhCNiwweEVFLDB4
RjcsMHhGRiwweEVBLDB4RUEsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDU1LDB4NUYsMHhC
RCwweDJELDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBRCwweEU5LDB4RkIsMHg1RSwKLSAgICAweEY3
LDB4RjYsMHg5NiwweEVFLDB4RTgsMHhGQSwweERFLDB4N0UsMHhCNiwweEY2LDB4OTYsMHhFRSww
eERFLDB4N0QsMHg3NywweDdGLAotICAgIDB4OTYsMHhFRSwweDc1LDB4RUUsMHg3MiwweEZBLDB4
NUUsMHg1NCwweDk2LDB4RUUsMHgxNCwweEU2LDB4RUEsMHhGOCwweDdBLDB4NUEsCi0gICAgMHg1
NSwweEVFLDB4RjQsMHhERCwweEEwLDB4QTIsMHhFQSwweEZGLDB4MTQsMHhERSwweDcxLDB4Q0Qs
MHg4MCwweEU4LDB4N0MsMHhENiwKLSAgICAweDU1LDB4RTYsMHhCMiwweEQ1LDB4MDMsMHhBRCww
eEJELDB4OEIsMHg3NiwweEVFLDB4MTQsMHhERSwweDAwLDB4RUIsMHg1NSwweEYyLAotICAgIDB4
OTYsMHhFRSwweEIyLDB4RDUsMHgwMCwweDJBLDB4RDcsMHg1RiwweDk2LDB4RjYsMHhEMywweEQ1
LDB4MDAsMHgwMCwweEFGLDB4RDUsCi0gICAgMHhCNywweEY2LDB4MTQsMHhERSwweDA4LDB4MDIs
MHhBQSwweEY1LDB4RDcsMHhGNiwweDU1LDB4RTYsMHgwMCwweDg4LDB4RUIsMHhGNywKLSAgICAw
eEQ3LDB4RjYsMHg5NiwweEVFLDB4MEEsMHgwQSwweDJELDB4RDUsMHhGNywweEY2LDB4QjYsMHhG
NiwweEVFLDB4MEEsMHgyQiwweEJELAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3NSwweEQ2
LDB4QjcsMHgyOSwweEY4LDB4RjYsMHhENywweEY2LDB4NTUsMHhGRCwweERGLDB4RTcsCi0gICAg
MHhENywweEY2LDB4QjcsMHhFRSwweDVFLDB4NTgsMHhGOCwweDcwLDB4OTcsMHhGNiwweEI2LDB4
RUUsMHhERiwweEZGLDB4RkYsMHg1RiwKLSAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4MkUsMHhB
MywweEZFLDB4RkEsMHhENywweEY2LDB4QjcsMHhFRSwweDA4LDB4MkEsMHhBRiwweEY1LAotICAg
IDB4RjcsMHhGNiwweEI3LDB4RUUsMHg4MiwweEFBLDB4QUYsMHgwQiwweEY3LDB4RjYsMHhENyww
eEY2LDB4RUEsMHgwOCwweDIwLDB4ODIsCi0gICAgMHgxOCwweEY3LDB4RDgsMHhGNiwweDNELDB4
QUYsMHhCRiwweEVCLDB4MzgsMHhGRiwweEY3LDB4RjYsMHhBQiwweDJFLDB4QUIsMHhBRiwKLSAg
ICAweDM5LDB4RkYsMHgxOCwweEY3LDB4N0YsMHhFQSwweEVBLDB4MjIsMHgzOCwweEZGLDB4Rjgs
MHhGNiwweDVGLDB4REUsMHhGRiwweDY4LAotICAgIDB4MTgsMHhGNywweEQ3LDB4RjYsMHhCRiww
eEZBLDB4RUEsMHhGRSwweEY3LDB4RjYsMHhCNywweEVFLDB4RTgsMHhBMCwweEEyLDB4RkEsCi0g
ICAgMHhGNywweEY2LDB4QjYsMHhFRSwweDBELDB4MjUsMHgxNywweEQ3LDB4RjcsMHhGNiwweDk3
LDB4RUUsMHhBMCwweDg4LDB4QTgsMHhFQSwKLSAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4RUEs
MHhGQSwweDYwLDB4RTIsMHg5NiwweEVFLDB4NTUsMHhFNiwweEUwLDB4RTAsMHhFMCwweEUwLAot
ICAgIDB4NTUsMHhFNiwweEQzLDB4RDUsMHg2MCwweEVBLDB4RjIsMHhGMCwweEIzLDB4RDUsMHgw
RiwweEJELDB4MkUsMHgyRSwweDNFLDB4MTYsCi0gICAgMHg1NSwweEU2LDB4RjMsMHhERCwweEEz
LDB4MEIsMHgwOSwweEE5LDB4MTQsMHhERSwweEIzLDB4REQsMHgwQSwweDBBLDB4QTgsMHhCQSwK
LSAgICAweDM0LDB4RTYsMHhGNCwweERELDB4ODIsMHhFQSwweEVCLDB4OEIsMHhEMywweEQ1LDB4
MzAsMHhDNSwweEQ2LDB4REMsMHhEQywweDVDLAotICAgIDB4MTQsMHhFNiwweDcxLDB4Q0QsMHgy
QiwweDI5LDB4MkQsMHgwRiwweDM0LDB4RTYsMHgxNCwweERFLDB4RDQsMHhGNSwweDk1LDB4NTUs
Ci0gICAgMHgzNSwweEU2LDB4RjMsMHhERCwweEVGLDB4RUUsMHhEQSwweEUwLDB4MTQsMHhERSww
eEYzLDB4REQsMHhGQSwweDAwLDB4MjgsMHg1NCwKLSAgICAweDE0LDB4REUsMHhEMywweERELDB4
QUEsMHhCQywweEZFLDB4M0EsMHhGMywweERELDB4MTAsMHhDNSwweEMwLDB4NjAsMHg2MCwweDYw
LAotICAgIDB4QjYsMHhFRSwweDkyLDB4Q0QsMHg3RiwweEZBLDB4QTgsMHg4MCwweDU1LDB4RTYs
MHgyRCwweEE0LDB4NUUsMHhBQSwweDIwLDB4MDAsCi0gICAgMHgxNCwweERFLDB4MjksMHg3Qiww
eDU1LDB4QUEsMHg4MCwweDAwLDB4RjQsMHhERCwweEM4LDB4NzIsMHg1NSwweEFBLDB4MDAsMHgw
MCwKLSAgICAweDE0LDB4REUsMHgwOSwweDdCLDB4NTUsMHhBQSwweDAyLDB4MDAsMHgxNSwweERF
LDB4OEIsMHg4QiwweDU1LDB4QUEsMHgwMCwweDAwLAotICAgIDB4MzUsMHhFNiwweDBELDB4OUMs
MHg1NSwweEFBLDB4MDAsMHgwMCwweDU1LDB4RTYsMHg3MCwweEFDLDB4NTUsMHhBQSwweDA4LDB4
MDAsCi0gICAgMHg1NSwweEU2LDB4RjEsMHhCQywweDU1LDB4QUEsMHgwQSwweDAwLDB4NzYsMHhF
NiwweDMyLDB4QzUsMHg1NywweEFCLDB4MjgsMHgwMCwKLSAgICAweDc2LDB4RUUsMHg3MiwweENE
LDB4RDUsMHhCQSwweDA4LDB4MDAsMHg3NSwweEVFLDB4RDMsMHhENSwweDU1LDB4QkIsMHgyMCww
eDAwLAotICAgIDB4NzUsMHhFRSwweEQzLDB4RDUsMHg1NSwweEVBLDB4MDAsMHgwMCwweDc1LDB4
RUUsMHhENCwweEQ1LDB4REQsMHhBQSwweDgyLDB4MDAsCi0gICAgMHg3NiwweEVFLDB4RjQsMHhE
RCwweDc1LDB4ODIsMHgwMiwweDAwLDB4OTYsMHhGNiwweDE0LDB4REUsMHg1NywweEVFLDB4QUEs
MHgwQSwKLSAgICAweDk1LDB4RUUsMHgzNCwweEU2LDB4NTUsMHhCQiwweEFBLDB4MDAsMHg5Niww
eEVFLDB4MzQsMHhFNiwweDdGLDB4QUUsMHg4QSwweDA4LAotICAgIDB4OTYsMHhFRSwweDM0LDB4
RTYsMHhENywweEVBLDB4QUEsMHg4OCwweDk2LDB4RUUsMHg1NSwweEU2LDB4RkQsMHhBRiwweEE4
LDB4QTgsCi0gICAgMHg5NiwweEVFLDB4MzQsMHhFNiwweEZELDB4QTgsMHhBOCwweDA4LDB4Qjcs
MHhGNiwweDU1LDB4RTYsMHhERCwweEZGLDB4QkYsMHgyQiwKLSAgICAweDk2LDB4RUUsMHg3NSww
eEVFLDB4RkQsMHg4QiwweDIzLDB4MDAsMHg5NiwweEVFLDB4NzYsMHhFRSwweDU1LDB4RjAsMHgw
MCwweDAwLAotICAgIDB4QjYsMHhGNiwweDc2LDB4RUUsMHhGNSwweEZELDB4QkIsMHhBRCwweEI2
LDB4RjYsMHg0RCwweEFDLDB4NzgsMHg2QSwweDc4LDB4NjgsCi0gICAgMHhDOCwweDgyLDB4ODMs
MHg2MSwweDU0LDB4RDgsMHg3QywweEZDLDB4RTUsMHg2OSwweDg0LDB4NjEsMHgzQiwweDU3LDB4
RkYsMHhCRiwKLSAgICAweDI2LDB4NzIsMHg4NCwweDYxLDB4MkYsMHgyNywweEJGLDB4QkYsMHgy
NiwweDcyLDB4RTUsMHg2OSwweERGLDB4RjAsMHhBOCwweDAyLAotICAgIDB4MjcsMHg3MiwweEE0
LDB4NjksMHgyMCwweDJCLDB4MkUsMHg5NiwweEU4LDB4ODIsMHgyNiwweDcyLDB4M0QsMHhENSww
eEQ1LDB4NTUsCi0gICAgMHg1MSwweENELDB4QTgsMHg4MiwweDBCLDB4MkQsMHhCRCwweEI1LDB4
OTYsMHhGNiwweDMxLDB4Q0QsMHgwQSwweDBCLDB4MkYsMHgzRCwKLSAgICAweDk2LDB4RjYsMHhC
NiwweEVFLDB4QTMsMHhBOCwweEEwLDB4ODAsMHhCNiwweEY2LDB4OTYsMHhFRSwweEVGLDB4MkIs
MHhCQSwweEE4LAotICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHgyRiwweEU4LDB4MkIsMHhBNyww
eEI2LDB4RjYsMHg5NiwweEVFLDB4QkYsMHhCRiwweEZBLDB4QTgsCi0gICAgMHhCNiwweEY2LDB4
OTYsMHhFRSwweEI4LDB4RUEsMHhBQSwweDJGLDB4QjYsMHhGNiwweDk2LDB4RUUsMHhGMywweEJC
LDB4RkIsMHhCQSwKLSAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4RUEsMHhGQSwweEZFLDB4OUYs
MHhCNywweEY2LDB4OTYsMHhFRSwweDA3LDB4QkIsMHhFOCwweDhBLAotICAgIDB4QjYsMHhGNiww
eDk2LDB4RUUsMHg4OCwweEFBLDB4RkYsMHhBQiwweEI2LDB4RjYsMHg5NiwweEVFLDB4MEUsMHgw
RiwweDgyLDB4ODIsCi0gICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweEVBLDB4QUIsMHhCQSwweEE4
LDB4QjYsMHhGNiwweDk3LDB4RUUsMHg4QiwweEEwLDB4MEEsMHgyMiwKLSAgICAweEI2LDB4RjYs
MHhENywweEVFLDB4MDgsMHhBMCwweEE4LDB4RTgsMHhENywweEY2LDB4QjYsMHhFRSwweERELDB4
MUQsMHhBQiwweDIyLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhCNSwweDI1LDB4MjMsMHgw
QSwweEQ3LDB4RkUsMHhGNywweEY2LDB4REQsMHg3NywweDVELDB4RjUsCi0gICAgMHhGNywweEY2
LDB4RDcsMHhGNiwweDg4LDB4QUEsMHhBMiwweDA4LDB4MTcsMHhGRiwweEQ3LDB4RjYsMHg2RSww
eDZFLDB4RkIsMHhFRiwKLSAgICAweDE3LDB4RkYsMHhENywweEY2LDB4RUQsMHhBRCwweEJGLDB4
QkYsMHhGNywweEZFLDB4RjcsMHhGNiwweEZGLDB4REYsMHg3NywweEY3LAotICAgIDB4RDcsMHhG
RSwweEY3LDB4RjYsMHhGNywweEVELDB4RkYsMHhBQiwweEY3LDB4RkUsMHhCNiwweEY2LDB4QTgs
MHhBQSwweEVBLDB4N0EsCi0gICAgMHhCNywweEY2LDB4OTIsMHhENSwweDgwLDB4RTAsMHhFOCww
eDdBLDB4RDIsMHhERCwweEE3LDB4ODIsMHhBMCwweEU4LDB4RTgsMHg3QSwKLSAgICAweDhBLDB4
OTMsMHgyNiwweDcyLDB4N0MsMHg1RSwweEZGLDB4N0QsMHhBNywweDgyLDB4MjYsMHg3MiwweEY2
LDB4RTcsMHhCQSwweEFBLAotICAgIDB4QTcsMHg3QSwweDA1LDB4NkEsMHg3RiwweEZFLDB4RUEs
MHhDRSwweDg3LDB4N0EsMHhFNCwweDYxLDB4RjcsMHg5NSwweDM3LDB4MzcsCi0gICAgMHg3NSww
eEVFLDB4Q0MsMHhBMywweDJELDB4MkQsMHgyRCwweDI5LDB4RjcsMHhGNiwweDk2LDB4RjYsMHgw
MywweDA5LDB4MEIsMHgwMiwKLSAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4RjcsMHhFNSwweEZG
LDB4QjYsMHgxNywweEZGLDB4RjcsMHhGNiwweEVGLDB4QkQsMHhFRCwweDlGLAotICAgIDB4Rjgs
MHhGRSwweDE3LDB4RjcsMHg3RiwweDc3LDB4RkYsMHhGRiwweDE4LDB4RkYsMHhGNywweEY2LDB4
RjgsMHgyOCwweEYwLDB4NEEsCi0gICAgMHgxNywweEZGLDB4RDcsMHhGNiwweEZBLDB4RUEsMHhB
QSwweDdBLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3NywweERELDB4M0QsMHgyRCwKLSAgICAweEY3
LDB4RjYsMHhENywweEY2LDB4RUYsMHhERCwweEZELDB4RkEsMHhGNywweEY2LDB4RDcsMHhGNiww
eEQ2LDB4RkYsMHhGQiwweEJCLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHgwQSwweDAwLDB4
ODgsMHgyMCwweEQ3LDB4RjYsMHhGNiwweEVFLDB4MDIsMHgyMCwweDI4LDB4MjgsCi0gICAgMHhG
NywweEY2LDB4QjYsMHhFRSwweEJELDB4QUEsMHgyQSwweEFFLDB4RDcsMHhGNiwweEI2LDB4RUUs
MHgwOCwweEEyLDB4ODAsMHgwOCwKLSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4MDgsMHhCRSww
eDIwLDB4ODAsMHhENywweEY2LDB4RDYsMHhFRSwweEE4LDB4QUEsMHhBQSwweEFBLAotICAgIDB4
RDcsMHhGNiwweEI2LDB4RUUsMHgyMCwweEE4LDB4QTgsMHgyMCwweEQ3LDB4RjYsMHhGNywweEVF
LDB4MjAsMHgyMCwweEU4LDB4QTAsCi0gICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEJFLDB4RkEs
MHhBRSwweEJFLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1NSwweDU1LDB4RjUsMHgyRCwKLSAgICAw
eEY3LDB4RkUsMHhENywweEVFLDB4QUIsMHg4QSwweEUwLDB4N0EsMHhGNywweEY2LDB4QjYsMHhG
NiwweEUwLDB4N0EsMHg1RSwweDU3LAotICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHg1RSwweERF
LDB4NUUsMHg1RiwweDc1LDB4RjYsMHg5NiwweEVFLDB4NTUsMHhGNywweEZELDB4RTcsCi0gICAg
MHg5NiwweEVFLDB4MzQsMHhFNiwweEFBLDB4QkEsMHhGMCwweDdBLDB4NTUsMHhFNiwweEYzLDB4
REQsMHg3QywweDdDLDB4N0EsMHg1RSwKLSAgICAweEYzLDB4REQsMHg5MiwweEQ1LDB4QzIsMHhG
QSwweDY4LDB4RjIsMHgzNCwweEU2LDB4NTEsMHhDRCwweEY3LDB4OUQsMHgyNywweDBCLAotICAg
IDB4QjYsMHhGNiwweDEzLDB4REUsMHhBRCwweDJCLDB4MEEsMHgwMiwweEI2LDB4RjYsMHg3Niww
eEVFLDB4N0UsMHgwOCwweDA4LDB4MjAsCi0gICAgMHg5NiwweEVFLDB4RjQsMHhERCwweDdFLDB4
RjgsMHg4MCwweDAwLDB4NTUsMHhFRSwweEQzLDB4RDUsMHg1NywweEZBLDB4OEEsMHgwMCwKLSAg
ICAweDU1LDB4RUUsMHhGMywweERELDB4RkQsMHhGRCwweDJDLDB4MDIsMHg3NSwweEVFLDB4MTQs
MHhERSwweEFCLDB4QjUsMHhGQSwweDBBLAotICAgIDB4OTYsMHhFRSwweDM0LDB4RTYsMHgyQiww
eEJELDB4RjUsMHg3QSwweEQ2LDB4RjYsMHg1NSwweEU2LDB4MEEsMHhBRiwweEVELDB4RjUsCi0g
ICAgMHhGOCwweEY2LDB4OTYsMHhFRSwweDBBLDB4QUIsMHhCRiwweEQ1LDB4RjcsMHhGNiwweEI2
LDB4RjYsMHhBMiwweEFBLDB4MkIsMHhBNywKLSAgICAweEY4LDB4RjYsMHhCNiwweEVFLDB4N0Is
MHhGQSwweEU4LDB4QUEsMHhENywweEY2LDB4QjcsMHhFRSwweEU3LDB4QUYsMHgyMiwweDAyLAot
ICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHhGRSwweDZBLDB4RjAsMHgyMCwweEQ3LDB4RjYsMHg5
NiwweEVFLDB4OEQsMHhBRCwweEY3LDB4QkUsCi0gICAgMHhGNywweEY2LDB4QjcsMHhFRSwweDJG
LDB4QkIsMHhBQiwweEFCLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGRiwweEJGLDB4MkIsMHhBRSwK
LSAgICAweDE4LDB4RjcsMHhGOCwweEY2LDB4QUQsMHhENiwweEQ2LDB4RUUsMHgxOCwweEY3LDB4
RjgsMHhGNiwweDI3LDB4OTUsMHhENSwweEY3LAotICAgIDB4MzksMHhGRiwweEY3LDB4RjYsMHgw
MiwweDJCLDB4MEIsMHhCNywweDM4LDB4RkYsMHhGOCwweEY2LDB4RTAsMHhBOCwweDIwLDB4MDIs
Ci0gICAgMHgxOCwweEZGLDB4RDcsMHhFRSwweEZFLDB4RjgsMHhGQywweDc4LDB4QjcsMHhGNiww
eEQ3LDB4RUUsMHhGRCwweERCLDB4RkYsMHhCQiwKLSAgICAweEI2LDB4RUUsMHg3NiwweEU2LDB4
MjgsMHhCOCwweDU4LDB4NTgsMHhENywweEY2LDB4OTYsMHhFRSwweDgwLDB4OEEsMHgwOSwweDBE
LAotICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHhFMiwweEUyLDB4NkEsMHg3QSwweEI2LDB4RUUs
MHg1NSwweEU2LDB4NjIsMHg2RSwweEVFLDB4RUYsCi0gICAgMHg3NSwweEVFLDB4RDMsMHhENSww
eDZBLDB4NkEsMHg3QSwweDc4LDB4NzEsMHhDRCwweEVGLDB4QkMsMHgzQywweDE2LDB4MzQsMHhE
NCwKLSAgICAweDU1LDB4RUUsMHhCMiwweEQ1LDB4ODMsMHgwQiwweDA5LDB4MEQsMHg1NSwweEU2
LDB4RjMsMHhERCwweDU3LDB4NUUsMHg1QywweDVFLAotICAgIDB4MzQsMHhFNiwweEY0LDB4REQs
MHg4OSwweEJELDB4QUYsMHhCRCwweDM0LDB4RTYsMHgzMCwweEM1LDB4NUUsMHg1QywweDVBLDB4
NTgsCi0gICAgMHg3NSwweEVFLDB4MzAsMHhDNSwweDJELDB4MkQsMHgyRCwweEJELDB4QjYsMHhG
NiwweDE0LDB4REUsMHg3NywweDgwLDB4ODAsMHgyMiwKLSAgICAweDk2LDB4RUUsMHhGNCwweERE
LDB4N0YsMHhGQSwweEEwLDB4MDgsMHg3NSwweEVFLDB4RjMsMHhERCwweDU3LDB4RkYsMHhBOCww
eDAwLAotICAgIDB4NTUsMHhFNiwweEYzLDB4REQsMHg1RiwweDc3LDB4RkYsMHhGOCwweDE0LDB4
REUsMHgzMSwweEM1LDB4NjIsMHhDOCwweDgwLDB4MDAsCi0gICAgMHg5NiwweEY2LDB4QjYsMHhF
RSwweEE1LDB4RDcsMHg3NSwweDc1LDB4QjYsMHhFRSwweDc2LDB4RUUsMHg1RCwweEVFLDB4QUEs
MHhBMCwKLSAgICAweDk1LDB4RUUsMHg1NSwweEU2LDB4RkUsMHhCRSwweDA4LDB4MDAsMHhCNiww
eEVFLDB4NTUsMHhFNiwweERELDB4RkYsMHhBRSwweDhCLAotICAgIDB4QjYsMHhFRSwweDU1LDB4
RTYsMHg1NywweEJGLDB4QUEsMHgwMiwweEI2LDB4RUUsMHg1NCwweEU2LDB4RjUsMHhCQSwweEFB
LDB4QTAsCi0gICAgMHhCNiwweEVFLDB4NTUsMHhFNiwweDdGLDB4QkYsMHhBQSwweDg4LDB4QjYs
MHhFRSwweDU1LDB4RTYsMHhENywweEZGLDB4QUEsMHgwMCwKLSAgICAweEI2LDB4RUUsMHg3NSww
eEU2LDB4RDUsMHhCRiwweEFGLDB4ODAsMHhCNiwweEVFLDB4NzUsMHhFNiwweDVELDB4RkEsMHhG
QSwweDhBLAotICAgIDB4QjYsMHhFRSwweDc1LDB4RUUsMHg1RiwweEJBLDB4QUEsMHgwQSwweEI2
LDB4RjYsMHg3NSwweEU2LDB4RjcsMHhBRiwweDhBLDB4MjAsCi0gICAgMHg5NiwweEVFLDB4NzUs
MHhFRSwweEZGLDB4ODgsMHg4MCwweDgwLDB4OTYsMHhFRSwweDc1LDB4RUUsMHhGRSwweEM4LDB4
MDgsMHgyMCwKLSAgICAweDk2LDB4RUUsMHg3NSwweEVFLDB4QjcsMHg4QSwweDIwLDB4MjgsMHhC
NiwweEVFLDB4NzUsMHhFRSwweERELDB4RkEsMHhGRiwweERFLAotICAgIDB4OTYsMHhFRSwweDc1
LDB4RUUsMHhBOCwweEFFLDB4RkUsMHgyRSwweDc2LDB4RjYsMHg5NiwweEVFLDB4N0QsMHg3Riww
eDdGLDB4RjksCi0gICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweDdGLDB4NzIsMHhDMiwweDg2LDB4
QjYsMHhGNiwweDk2LDB4RUUsMHg3OSwweEFBLDB4MkEsMHgwMiwKLSAgICAweEI2LDB4RjYsMHg5
NiwweEVFLDB4RkYsMHgwQiwweDNFLDB4QTAsMHhENiwweEY2LDB4OTYsMHhFRSwweDlELDB4RkYs
MHgwOCwweDJBLAotICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHhGRiwweEFBLDB4QUEsMHgyQSww
eEQ2LDB4RjYsMHg5NiwweEVFLDB4REYsMHhGNywweEIzLDB4QkEsCi0gICAgMHhENiwweEY2LDB4
OTYsMHhFRSwweEY1LDB4NUIsMHhGRSwweENBLDB4MzQsMHhFNiwweEFBLDB4OUIsMHg2MCwweDcw
LDB4NjAsMHg2MCwKLSAgICAweDg3LDB4N0EsMHhBNCwweDYxLDB4NUMsMHhGQywweEZFLDB4RkUs
MHhFNSwweDY5LDB4ODQsMHg2MSwweEZGLDB4NTMsMHhGOCwweEFBLAotICAgIDB4QzUsMHg2OSww
eDY0LDB4NjEsMHgwQSwweDJELDB4OEEsMHgwQSwweDQ4LDB4N0EsMHhDNSwweDY5LDB4MkIsMHg4
RCwweERELDB4NTUsCi0gICAgMHgwNiwweDcyLDB4QzYsMHg2OSwweEJDLDB4RUUsMHg4OCwweDAw
LDB4ODgsMHg4MiwweDA2LDB4NzIsMHgxNSwweDU1LDB4RDUsMHhGNSwKLSAgICAweDRCLDB4OUIs
MHgwNiwweDZBLDB4MkYsMHhCRCwweEZELDB4RkQsMHhEMywweERELDB4RTksMHg4MiwweDBBLDB4
MEIsMHgyRCwweEI1LAotICAgIDB4OTYsMHhGNiwweEYzLDB4REQsMHgwMiwweDAyLDB4MDMsMHgw
RCwweEI2LDB4RjYsMHg5NiwweEVFLDB4QTgsMHhBMCwweEEyLDB4QUEsCi0gICAgMHhENiwweEY2
LDB4OTYsMHhFRSwweEZFLDB4RkYsMHhGRiwweDNGLDB4RDYsMHhGNiwweDk3LDB4RUUsMHhFRiww
eEFGLDB4QUIsMHhFQSwKLSAgICAweEI3LDB4RjYsMHhCNSwweEVFLDB4QTgsMHhBQSwweEFBLDB4
QUEsMHhCNiwweEY2LDB4OTYsMHhFRSwweEVFLDB4QTIsMHgyMCwweDg4LAotICAgIDB4QjYsMHhG
NiwweDk2LDB4RUUsMHhFRiwweDJBLDB4QUEsMHgyQSwweEQ3LDB4RjYsMHg5NiwweEVFLDB4RUIs
MHhCQiwweEJBLDB4QUEsCi0gICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweDNDLDB4QkIsMHhCOCww
eDA4LDB4QjYsMHhGNiwweDk2LDB4RUUsMHg4OCwweEUyLDB4QTgsMHgwMCwKLSAgICAweEI2LDB4
RjYsMHg5NiwweEVFLDB4ODAsMHgwMiwweDAwLDB4QzAsMHhCNiwweEY2LDB4RDgsMHhFRSwweDAw
LDB4QTIsMHgwOCwweEEwLAotICAgIDB4QjYsMHhGNiwweEQ2LDB4RUUsMHhBQSwweEU4LDB4Rjgs
MHhCOCwweEY3LDB4RjYsMHhCNiwweEVFLDB4M0YsMHhCQiwweEJGLDB4MkYsCi0gICAgMHhENyww
eEZFLDB4RjcsMHhGNiwweDVELDB4NTcsMHg1RiwweERGLDB4RjcsMHhGRSwweEY3LDB4RjYsMHhE
NywweEY3LDB4NUYsMHhERiwKLSAgICAweDE3LDB4RkYsMHhGNywweEY2LDB4N0QsMHhGRCwweEY1
LDB4RjksMHhGNiwweEZFLDB4RjcsMHhGNiwweDdELDB4RjcsMHhGRiwweERGLAotICAgIDB4Rjcs
MHhGNiwweEQ2LDB4RjYsMHgyQSwweDJBLDB4MjIsMHg4OCwweEQ3LDB4RkUsMHhGNywweEY2LDB4
RjUsMHg1NywweEY1LDB4OTUsCi0gICAgMHhGNywweEZFLDB4RDcsMHhGNiwweEVCLDB4OEEsMHhF
QSwweDVBLDB4QjYsMHhGNiwweEQzLDB4REQsMHgwMCwweDgwLDB4RTAsMHg3MCwKLSAgICAweDM1
LDB4RUUsMHg4QiwweDlCLDB4QTAsMHhFOCwweDdBLDB4N0UsMHg2RiwweEI0LDB4ODcsMHg3QSww
eDc4LDB4NUUsMHg1NywweDU1LAotICAgIDB4ODcsMHg3QSwweDQ3LDB4N0EsMHg4QSwweDgwLDB4
MEUsMHhBNywweEE3LDB4ODIsMHg0NiwweDcyLDB4QkQsMHg2QiwweDZBLDB4QUEsCi0gICAgMHg4
NywweDdBLDB4MjYsMHg3MiwweEMyLDB4NUEsMHg2QSwweEUwLDB4OEIsMHg5QiwweDI2LDB4NzIs
MHg5NSwweDk1LDB4MzUsMHgzRCwKLSAgICAweEI3LDB4RjYsMHg2RSwweEI0LDB4MkQsMHgyRCww
eDJELDB4MkIsMHgxNywweEZGLDB4RDcsMHhGNiwweEFELDB4OEYsMHhBRCwweEZCLAotICAgIDB4
MTgsMHhGRiwweEY3LDB4RjYsMHhCQiwweEFCLDB4QUIsMHhBQSwweDE3LDB4RkYsMHhGOCwweEY2
LDB4QUEsMHhFRiwweDJFLDB4MkEsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweEFCLDB4QUEs
MHhFOCwweEEwLDB4MTgsMHhGRiwweEY3LDB4RUUsMHg4MiwweDgyLDB4QTAsMHg4QSwKLSAgICAw
eEY3LDB4RjYsMHhENywweEY2LDB4NjAsMHhBMCwweEUwLDB4RTAsMHhGNywweEY2LDB4RDcsMHhG
NiwweEFCLDB4QTgsMHhBMiwweEI4LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGMywweEQ1
LDB4RkYsMHhGRiwweEY3LDB4RjYsMHhENywweEY2LDB4N0YsMHhCRiwweEFELDB4RUQsCi0gICAg
MHhGNywweEY2LDB4QjYsMHhFRSwweEJGLDB4QUUsMHhFQSwweEZBLDB4RjcsMHhGNiwweEI2LDB4
RUUsMHhFQSwweEFCLDB4QUUsMHhGRiwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4N0YsMHhB
RiwweEFELDB4QUQsMHhGNywweEY2LDB4RDcsMHhGNiwweEQ1LDB4NzUsMHg1RiwweDdGLAotICAg
IDB4QjcsMHhGNiwweEY3LDB4RUUsMHhBQSwweEFBLDB4QkEsMHhCRSwweEQ3LDB4RjYsMHhGNyww
eEVFLDB4MDAsMHhCOCwweDI4LDB4ODIsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDY5LDB4
RkQsMHg1NSwweDc5LDB4RjcsMHhGNiwweEI2LDB4RUUsMHhGRSwweEFBLDB4QUYsMHhBRiwKLSAg
ICAweEY3LDB4RjYsMHhENywweEY2LDB4RDUsMHhERiwweDFFLDB4MzcsMHgxNywweEZGLDB4RDcs
MHhGNiwweEJELDB4RTksMHhBQSwweEZFLAotICAgIDB4RjcsMHhGNiwweDk2LDB4RUUsMHhFMCww
eEY4LDB4NjgsMHhGRSwweEI2LDB4RjYsMHg5NiwweEVFLDB4QUEsMHhBQSwweEZCLDB4RkIsCi0g
ICAgMHg5NiwweEVFLDB4NTUsMHhFRSwweDAwLDB4ODAsMHhDMCwweDgwLDB4OTYsMHhFRSwweDU1
LDB4RUUsMHhDMiwweEEyLDB4RjAsMHg1OCwKLSAgICAweDU1LDB4RTYsMHgxNCwweERFLDB4QTAs
MHhGOCwweDVBLDB4NUYsMHgzNCwweEU2LDB4RDMsMHhENSwweEVDLDB4REUsMHhGRSwweERGLAot
ICAgIDB4NTUsMHhFNiwweEQzLDB4RDUsMHg3RiwweEJELDB4QkYsMHgwRiwweEI3LDB4RjYsMHgx
NCwweERFLDB4QUQsMHgyQiwweDIzLDB4MEEsCi0gICAgMHhGNywweEY2LDB4QjcsMHhGNiwweEQ1
LDB4NTUsMHhCQiwweEJFLDB4RDcsMHhGNiwweEI2LDB4RjYsMHhGRiwweDhDLDB4QkUsMHhFRSwK
LSAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4RUYsMHhGOCwweEZBLDB4RkEsMHhCNywweEY2LDB4
NzYsMHhFRSwweDdBLDB4QTAsMHgyMCwweDAyLAotICAgIDB4QjYsMHhGNiwweDM1LDB4RTYsMHhE
RiwweEZBLDB4MDAsMHgwMCwweEQ2LDB4RjYsMHg1NSwweEU2LDB4RDUsMHg3NSwweEUyLDB4ODgs
Ci0gICAgMHhCNiwweEVFLDB4NzUsMHhFRSwweDVGLDB4QUQsMHhGQiwweEI4LDB4QjYsMHhFRSww
eDU1LDB4RTYsMHg1RCwweEFBLDB4MDAsMHgwMCwKLSAgICAweEI2LDB4RUUsMHg3NSwweEU2LDB4
QkQsMHhENywweEZBLDB4QUMsMHhENywweEY2LDB4NzYsMHhFNiwweDBCLDB4QUIsMHhCRiwweERG
LAotICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhBQSwweDhBLDB4MkYsMHgzNSwweEY3LDB4RjYs
MHhENywweEY2LDB4RjUsMHhCRiwweEZCLDB4QkEsCi0gICAgMHhGNywweEY2LDB4QjcsMHhFRSww
eEZBLDB4RkEsMHhBOCwweEEyLDB4RDcsMHhGNiwweDk3LDB4RUUsMHg5RSwweEVFLDB4QUEsMHhB
MiwKLSAgICAweEY4LDB4RjYsMHhCNywweEVFLDB4MkYsMHhBRCwweDNGLDB4QUIsMHhENywweEZF
LDB4MTgsMHhGNywweEZGLDB4RkEsMHhFRiwweEFFLAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYs
MHhBRSwweDNCLDB4RUQsMHg5NSwweDE4LDB4RkYsMHhGOCwweEY2LDB4RkYsMHhBQiwweEFFLDB4
REUsCi0gICAgMHgxOCwweEY3LDB4RjgsMHhGNiwweDM3LDB4QjYsMHg1RSwweEY3LDB4MzgsMHhG
RiwweEY3LDB4RjYsMHg4MiwweDIyLDB4MkIsMHhBRiwKLSAgICAweDM4LDB4RkYsMHhGNywweEY2
LDB4NUUsMHg2MiwweDYyLDB4NjgsMHhGNywweEY2LDB4OTYsMHhFRSwweEJBLDB4RkEsMHg3Qyww
eDdFLAotICAgIDB4QjYsMHhFRSwweDU1LDB4RTYsMHg3QSwweDc4LDB4RkUsMHg3QiwweEQ3LDB4
RjYsMHg1NCwweEU2LDB4MEIsMHgwQiwweDJELDB4MkQsCi0gICAgMHhENywweEY2LDB4MzQsMHhE
RSwweEEwLDB4RjgsMHhGQSwweDc4LDB4OTYsMHhFRSwweDM0LDB4RTYsMHg4RiwweEJGLDB4REQs
MHhGNSwKLSAgICAweDU1LDB4RTYsMHgzMSwweEM1LDB4RTAsMHg2MCwweDY4LDB4NzgsMHgzMSww
eEM1LDB4RDAsMHhCQywweDlDLDB4MTYsMHgzRiwweDJGLAotICAgIDB4NTUsMHhFNiwweDcyLDB4
Q0QsMHgwOSwweDJELDB4MkQsMHgyRCwweDU1LDB4RTYsMHhCMiwweEQ1LDB4RkMsMHhGOCwweDU4
LDB4N0EsCi0gICAgMHgxNCwweERFLDB4QjIsMHhENSwweDJBLDB4QUUsMHgzNSwweDE1LDB4NTUs
MHhFNiwweDEwLDB4QkQsMHg3OCwweDc4LDB4N0EsMHg3OCwKLSAgICAweDE0LDB4REUsMHhGMCww
eEJDLDB4MkQsMHgyRCwweEJELDB4RjUsMHhCNiwweEY2LDB4OTIsMHhDRCwweDIyLDB4MEEsMHhB
RiwweEJELAotICAgIDB4OTYsMHhFRSwweDU1LDB4RUUsMHhGOCwweEUyLDB4RjIsMHhGRiwweDk1
LDB4RUUsMHg1NSwweEU2LDB4RUIsMHhGRiwweEY3LDB4NTUsCi0gICAgMHg5NSwweEVFLDB4NTUs
MHhFNiwweDU3LDB4N0IsMHhGRiwweDJGLDB4OTYsMHhFRSwweDM0LDB4RTYsMHg1RCwweDhFLDB4
QUUsMHhCRSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4NTYsMHhERSwweDZBLDB4NzUsMHhE
NiwweEY2LDB4QjYsMHhFRSwweDVELDB4NzUsMHg2RiwweEU1LAotICAgIDB4RjYsMHhGNiwweDk2
LDB4RUUsMHhERCwweEY1LDB4N0YsMHg3RSwweEQ2LDB4RjYsMHg5NiwweEVFLDB4RUIsMHhGQiww
eEJBLDB4N0IsCi0gICAgMHg5NiwweEY2LDB4QjYsMHhFRSwweDdGLDB4NzcsMHg5RiwweDc1LDB4
RDUsMHhGNiwweDk2LDB4RUUsMHg3QSwweEJCLDB4RUUsMHhCQSwKLSAgICAweEQ3LDB4RjYsMHg5
NiwweEVFLDB4N0UsMHhGRSwweDNBLDB4MkEsMHg5NiwweEY2LDB4RDYsMHhFRSwweEVBLDB4QkIs
MHhCQiwweEJGLAotICAgIDB4QjYsMHhFRSwweDk2LDB4RUUsMHhCMCwweDgwLDB4ODgsMHhCOCww
eEI2LDB4RUUsMHg5NiwweEVFLDB4MkEsMHgyRSwweDJBLDB4MDIsCi0gICAgMHhENywweEY2LDB4
OTYsMHhFRSwweEJGLDB4RkEsMHhGQSwweEVCLDB4OTUsMHhGNiwweEQ2LDB4RUUsMHhBQSwweEVG
LDB4QkYsMHhBRiwKLSAgICAweEI2LDB4RUUsMHg3NSwweEVFLDB4RkEsMHhGOCwweEUwLDB4RTAs
MHg5NiwweEVFLDB4NzUsMHhFRSwweDAwLDB4MEUsMHgwRSwweEEyLAotICAgIDB4OTYsMHhFRSww
eDc1LDB4RUUsMHhBOCwweEFFLDB4MzIsMHgyOCwweDk2LDB4RjYsMHg5NSwweEVFLDB4RDcsMHhG
RiwweEZGLDB4REYsCi0gICAgMHhCNiwweEZFLDB4OTYsMHhFRSwweDU3LDB4NTcsMHg1RiwweEY3
LDB4QjYsMHhGNiwweDc1LDB4RUUsMHhFNiwweDJFLDB4QUIsMHgyQSwKLSAgICAweEQ2LDB4RjYs
MHg5NiwweEVFLDB4RkYsMHhCRiwweEFCLDB4QUIsMHhENywweEY2LDB4QjYsMHhGNiwweEZELDB4
RDcsMHhERCwweDJGLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHg3RiwweEFFLDB4Q0IsMHhB
OCwweEI2LDB4RjYsMHhENywweEVFLDB4OEEsMHhBRSwweEVFLDB4QkUsCi0gICAgMHhCNiwweEY2
LDB4RDYsMHhFRSwweEFBLDB4MkUsMHhBOSwweEZGLDB4RDcsMHhGNiwweEI2LDB4RjYsMHg3NSww
eEJELDB4MUQsMHhBQiwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEY2LDB4NkEsMHhFMiwweEU4LDB4
QkEsMHg3NiwweEY2LDB4OEEsMHg5QiwweDYwLDB4NjAsMHhFMCwweEUwLAotICAgIDB4QTgsMHg4
MiwweEE0LDB4NjEsMHhGRSwweEZFLDB4NUMsMHg3QywweDI2LDB4N0EsMHhDNSwweDY5LDB4N0Is
MHhEQSwweERFLDB4RTMsCi0gICAgMHgwNiwweDcyLDB4QTUsMHg2OSwweEQ3LDB4RjUsMHhGRSww
eDYyLDB4RTYsMHg3MSwweDg0LDB4NjEsMHgyRiwweEFGLDB4QUQsMHhBRCwKLSAgICAweDI3LDB4
N0EsMHhDNSwweDY5LDB4QkEsMHhCQiwweEFELDB4M0QsMHgyNywweDcyLDB4RTYsMHg2OSwweDNC
LDB4QkYsMHg3NCwweDVBLAotICAgIDB4ODcsMHg3QSwweEU2LDB4NjksMHgwQSwweEFBLDB4QUYs
MHhGNywweDJELDB4QUMsMHg2NywweDdBLDB4MkYsMHhCRCwweEZELDB4RjUsCi0gICAgMHgzNSww
eEVFLDB4OEIsMHg5QiwweDAyLDB4MDMsMHgyQiwweDJELDB4QjYsMHhGNiwweDc2LDB4RjYsMHhB
QSwweDhBLDB4QUEsMHg4MywKLSAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4QTgsMHhCRSwweDIz
LDB4QTIsMHhCNiwweEY2LDB4OTYsMHhFRSwweDAyLDB4ODAsMHg4MiwweEEwLAotICAgIDB4RDYs
MHhGNiwweEI2LDB4RjYsMHhENSwweEZCLDB4NUIsMHhCNSwweEI2LDB4RjYsMHhENiwweEVFLDB4
MjgsMHg4MCwweDA4LDB4MDIsCi0gICAgMHhCNiwweEY2LDB4QjcsMHhFRSwweDhBLDB4QTgsMHgw
MCwweDJBLDB4OTYsMHhGNiwweEQ3LDB4RUUsMHhGQSwweEVFLDB4QUIsMHhFRiwKLSAgICAweEI2
LDB4RjYsMHg5NiwweEVFLDB4MDgsMHgwMiwweDIwLDB4QTgsMHhCNiwweEY2LDB4OTYsMHhFRSww
eDAyLDB4MDAsMHgwMiwweEU4LAotICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHhBRSwweEFFLDB4
QUYsMHhCQiwweEQ3LDB4RjYsMHhCNiwweEY2LDB4REUsMHhERSwweEIzLDB4MkIsCi0gICAgMHhE
NiwweEY2LDB4QjYsMHhFRSwweEI0LDB4QTIsMHg4QiwweEVBLDB4RDcsMHhGNiwweEI2LDB4RUUs
MHgwQSwweDBCLDB4MkIsMHgzRiwKLSAgICAweDE3LDB4RkYsMHhENywweEY2LDB4RkYsMHhCRCww
eEJFLDB4QUIsMHgxNywweEZGLDB4RjcsMHhGNiwweDVELDB4NTUsMHg1RiwweDVGLAotICAgIDB4
MTgsMHhGRiwweEY3LDB4RjYsMHhERCwweEY5LDB4Q0YsMHg2RCwweDE3LDB4RkYsMHhGNywweEY2
LDB4N0QsMHg3NywweEQ1LDB4NzUsCi0gICAgMHhENiwweEZFLDB4RjcsMHhGNiwweDVELDB4NTUs
MHhENywweERGLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhFQSwweEVGLDB4RkYsMHg3RiwKLSAgICAw
eEY2LDB4RkUsMHgxNCwweEU2LDB4ODAsMHhFMCwweEY4LDB4N0EsMHgzNCwweEU2LDB4QUIsMHg5
QiwweDgwLDB4QTAsMHhFOCwweDdBLAotICAgIDB4QUYsMHhCQywweDQ2LDB4NzIsMHg2OCwweDdD
LDB4NUUsMHg1NywweDY3LDB4ODIsMHg0NiwweDcyLDB4QkIsMHgyQiwweDMzLDB4MEEsCi0gICAg
MHg4NywweDgyLDB4NDYsMHg3QSwweDNELDB4M0YsMHg4QywweDNBLDB4QzcsMHg4QSwweDg3LDB4
ODIsMHhGNSwweENFLDB4QUQsMHgzRCwKLSAgICAweEU4LDB4OEEsMHg2NiwweDdBLDB4N0UsMHhG
QiwweEYwLDB4NzAsMHg4RSwweEJDLDB4NDYsMHg3QSwweEI1LDB4QjUsMHgzNSwweDI1LAotICAg
IDB4RDcsMHhGRSwweDMwLDB4Q0QsMHgyRCwweDBELDB4MDksMHgyQiwweEY3LDB4RkUsMHgxOCww
eEY3LDB4RTAsMHhBMCwweDg4LDB4QTAsCi0gICAgMHgxNywweEZGLDB4RjcsMHhGNiwweEJFLDB4
QUEsMHgwQSwweDBGLDB4MTcsMHhGRiwweEY3LDB4RjYsMHgyQSwweDJBLDB4QkUsMHgzRiwKLSAg
ICAweDE4LDB4RkYsMHhGNywweEY2LDB4OEEsMHgyQSwweEFCLDB4QUUsMHgxOCwweEZGLDB4Rjcs
MHhGNiwweEUzLDB4RkEsMHhGOCwweEI4LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBMCww
eEJDLDB4MkEsMHg4MCwweEY3LDB4RjYsMHhENywweEY2LDB4QUEsMHhBRSwweDIwLDB4ODgsCi0g
ICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEJBLDB4RUEsMHhBRSwweEZBLDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHhGOSwweEZGLDB4NUQsMHg1NywKLSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4QTAs
MHgyQSwweDgzLDB4ODgsMHhENywweEY2LDB4QjcsMHhFRSwweDJBLDB4QTIsMHg4MiwweEFBLAot
ICAgIDB4RDcsMHhGNiwweEQ3LDB4RUUsMHgwMCwweDhBLDB4MjAsMHgyMiwweEY3LDB4RjYsMHhE
NywweEY2LDB4NUYsMHhGNSwweEFELDB4QkQsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEJE
LDB4NTUsMHg3NywweEU1LDB4RDcsMHhGNiwweEY3LDB4RUUsMHgwQSwweDgyLDB4MDAsMHgyMiwK
LSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4N0YsMHg1RCwweEZELDB4MkIsMHgxNywweEZGLDB4
RDcsMHhGNiwweDc1LDB4RDcsMHhGNywweDNGLAotICAgIDB4MTcsMHhGRiwweEQ3LDB4RjYsMHgy
RCwweEFGLDB4OEEsMHg3MCwweEY3LDB4RjYsMHhCNiwweEVFLDB4RTAsMHhGMCwweDU0LDB4NUYs
Ci0gICAgMHg5NiwweEY2LDB4RDYsMHhFRSwweEJCLDB4QUYsMHhCRiwweDJBLDB4QjYsMHhGNiww
eDc2LDB4RUUsMHhBMiwweEZBLDB4REUsMHhERSwKLSAgICAweDk2LDB4RUUsMHg1NSwweEVFLDB4
QTgsMHg2QSwweDc4LDB4NzgsMHg3NSwweEVFLDB4MTQsMHhERSwweEY4LDB4NzgsMHg1QSwweDVG
LAotICAgIDB4MzUsMHhFNiwweEIyLDB4RDUsMHhBMiwweEZBLDB4N0UsMHg1RiwweDc1LDB4RUUs
MHhCMiwweEQ1LDB4RjcsMHhENSwweEI1LDB4MzUsCi0gICAgMHhCNiwweEY2LDB4MTQsMHhERSww
eEJELDB4MkQsMHgyQSwweDAyLDB4RDcsMHhGNiwweDk2LDB4RUUsMHg5RCwweEZFLDB4QUEsMHhB
QSwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4MEEsMHg4QiwweDJCLDB4ODAsMHhENywweEY2
LDB4QjcsMHhFRSwweEUwLDB4ODAsMHhBMiwweEEwLAotICAgIDB4RDcsMHhGNiwweDk2LDB4RUUs
MHg2QSwweEE4LDB4QTgsMHgyMiwweEQ3LDB4RjYsMHg5NiwweEVFLDB4QUIsMHhGOSwweEJBLDB4
RUEsCi0gICAgMHhENiwweEY2LDB4OTYsMHhFRSwweEFFLDB4QUUsMHhBNywweEY3LDB4RDYsMHhG
NiwweEI2LDB4RUUsMHhBQSwweEVCLDB4RTksMHhFNSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVF
LDB4N0UsMHhERSwweEQwLDB4NUUsMHhENywweEY2LDB4QjYsMHhFRSwweDJELDB4MEYsMHhCRiww
eDU3LAotICAgIDB4RjcsMHhGNiwweDk2LDB4RUUsMHg3RSwweEZBLDB4MkEsMHgyQiwweEY3LDB4
RjYsMHg5NiwweEVFLDB4NTUsMHg1NywweDdBLDB4ODAsCi0gICAgMHhGNywweEY2LDB4OTYsMHhF
RSwweDI3LDB4QkQsMHhFNSwweEZGLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGMiwweEUyLDB4MjUs
MHgwRCwKLSAgICAweDE4LDB4RkYsMHhENywweEY2LDB4RkIsMHhGRiwweDdFLDB4RkEsMHhGNyww
eEY2LDB4QjcsMHhFRSwweEI2LDB4QUYsMHhGQSwweEFBLAotICAgIDB4RjgsMHhGNiwweEQ3LDB4
RjYsMHhFNSwweENELDB4MkIsMHhDMiwweEY4LDB4RjYsMHhENywweEVFLDB4REEsMHhCQiwweEJG
LDB4QUUsCi0gICAgMHhGOCwweEY2LDB4RDcsMHhFRSwweDNCLDB4RjIsMHhGOCwweDU4LDB4MTgs
MHhGNywweEQ3LDB4RjYsMHhBQSwweEFCLDB4QUYsMHhBRCwKLSAgICAweDE3LDB4RjcsMHhGOCww
eEY2LDB4RjYsMHg3QSwweEZBLDB4NUQsMHgxOCwweEY3LDB4RDcsMHhGNiwweDJBLDB4QkEsMHhF
RSwweEQ1LAotICAgIDB4MzgsMHhGRiwweEY3LDB4RjYsMHhFQSwweEZBLDB4RjUsMHg3NSwweEY3
LDB4RjYsMHg5NiwweEVFLDB4N0EsMHg3OCwweDc4LDB4NzgsCi0gICAgMHg5NiwweEVFLDB4NTUs
MHhFNiwweDYyLDB4RkEsMHhGQSwweDdBLDB4RDcsMHhGNiwweDM0LDB4REUsMHgyRiwweEI3LDB4
QjUsMHhCNSwKLSAgICAweEI2LDB4RUUsMHgxNCwweEU2LDB4RjAsMHhFMCwweDYwLDB4NDAsMHg1
NSwweEU2LDB4MTQsMHhERSwweDBELDB4QTcsMHgzNSwweEZELAotICAgIDB4NTUsMHhFNiwweDUx
LDB4QzUsMHg3OCwweDU4LDB4NzgsMHg3QSwweDEwLDB4QzUsMHhGMCwweEJDLDB4MjUsMHgyRSww
eDM2LDB4MTQsCi0gICAgMHgzNCwweEU2LDB4NzEsMHhDRCwweDJELDB4MjksMHhBRCwweDJELDB4
MzQsMHhFNiwweDkyLDB4Q0QsMHhFMCwweEU4LDB4RTIsMHg2MCwKLSAgICAweEYzLDB4REQsMHg5
MiwweENELDB4MkYsMHgyRSwweEI1LDB4QkQsMHhGNCwweERELDB4MzAsMHhDNSwweDcwLDB4NjAs
MHg0MCwweEMwLAotICAgIDB4MTAsMHhDNSwweDZELDB4QUMsMHgyRSwweDlGLDB4REYsMHhCRSww
eDU1LDB4RTYsMHgzMSwweEM1LDB4MkYsMHgwRCwweDI5LDB4MEIsCi0gICAgMHg5NiwweEVFLDB4
NTUsMHhFNiwweEZGLDB4NkIsMHg3QSwweEUwLDB4NzUsMHhFRSwweDU1LDB4RTYsMHg1NywweDU1
LDB4QjcsMHhFNiwKLSAgICAweDc1LDB4RUUsMHg1NSwweEU2LDB4MDksMHhGRCwweDI3LDB4Mzcs
MHg5NiwweEVFLDB4NzUsMHhFRSwweDVELDB4M0YsMHhCRCwweEY1LAotICAgIDB4RDcsMHhGNiww
eDk2LDB4RUUsMHhFRiwweEJFLDB4QUIsMHhFRiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUYsMHhC
RiwweEZELDB4RDcsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDVGLDB4NTcsMHg1NywweDdC
LDB4RDYsMHhGNiwweEI2LDB4RUUsMHhERCwweEY3LDB4NkQsMHhGRCwKLSAgICAweEQ2LDB4RjYs
MHhCNiwweEVFLDB4RkQsMHg3NSwweDdELDB4RjMsMHhENiwweEY2LDB4QjYsMHhFRSwweEJGLDB4
RUEsMHhCRCwweEZGLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhEMSwweDlGLDB4NUYsMHg3
RiwweEQ3LDB4RjYsMHhCNiwweEVFLDB4REYsMHhGNywweERELDB4RjUsCi0gICAgMHhENywweEY2
LDB4QjYsMHhFRSwweDU3LDB4RUQsMHhGRiwweEU0LDB4RDcsMHhGNiwweEI2LDB4RUUsMHg3Nyww
eDdGLDB4RjUsMHhGRCwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4NzUsMHhENSwweEY3LDB4
RkYsMHhENiwweEY2LDB4OTYsMHhFRSwweDdBLDB4RUEsMHhFQSwweEVBLAotICAgIDB4QjYsMHhF
RSwweDk2LDB4RUUsMHg2OCwweDc2LDB4NUUsMHg3NiwweEI2LDB4RjYsMHg3NSwweEVFLDB4RkYs
MHhBRiwweEE3LDB4QkYsCi0gICAgMHg3NSwweEY2LDB4OTUsMHhFRSwweDdELDB4NzUsMHg1RCww
eDU3LDB4NzYsMHhGNiwweDk1LDB4RUUsMHg1NSwweDc1LDB4NUYsMHg3RCwKLSAgICAweEI2LDB4
RjYsMHg5NSwweEVFLDB4QUUsMHhGNiwweDNCLDB4RkEsMHg5NiwweEY2LDB4QjYsMHhFRSwweEZG
LDB4RkYsMHhCQiwweEJCLAotICAgIDB4QjYsMHhGNiwweEQ3LDB4RUUsMHhBOCwweEFBLDB4QUEs
MHhCOCwweEQ3LDB4RjYsMHhCNiwweEVFLDB4MkIsMHgwQSwweEFBLDB4ODIsCi0gICAgMHhENyww
eEY2LDB4QjYsMHhFRSwweEY4LDB4RTIsMHhFQSwweDk4LDB4RjcsMHhGNiwweEI2LDB4RUUsMHg3
NywweEFGLDB4QUIsMHhBRiwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4QUYsMHhBQSwweDg4
LDB4MkEsMHhENywweEY2LDB4QjYsMHhGNiwweEU3LDB4QjUsMHhERSwweEFFLAotICAgIDB4RDcs
MHhGNiwweDk1LDB4RjYsMHhFQSwweEZBLDB4RkEsMHhFOCwweDc1LDB4RUUsMHgyOSwweDkzLDB4
RTAsMHhFMCwweDc4LDB4NzgsCi0gICAgMHhDOCwweDhBLDB4QTUsMHg2MSwweDdDLDB4REUsMHg1
NiwweDU3LDB4MjYsMHg3QSwweEU1LDB4NjksMHhFRiwweDhELDB4QUQsMHgyRCwKLSAgICAweDI2
LDB4N0EsMHhDNSwweDY5LDB4N0IsMHhGQywweDgwLDB4ODIsMHhDNSwweDY5LDB4NjQsMHg2MSww
eDJBLDB4RjgsMHhGQywweEIwLAotICAgIDB4MDYsMHg3MiwweDg0LDB4NjEsMHgyQiwweDJGLDB4
QkYsMHhERiwweDI3LDB4NzIsMHhDNSwweDY5LDB4RTIsMHhGQSwweEVBLDB4NzUsCi0gICAgMHgy
NiwweDcyLDB4QzUsMHg2OSwweDJDLDB4QkEsMHhBRiwweEI2LDB4RTgsMHg4MiwweEU1LDB4Njks
MHgyRiwweDJGLDB4QkQsMHhGNSwKLSAgICAweEQyLDB4REQsMHgwOCwweDhCLDB4MkQsMHhCNSww
eEY1LDB4RDUsMHg5NSwweEY2LDB4RUUsMHhCQywweDAwLDB4MDIsMHgwQiwweDI5LAotICAgIDB4
QjYsMHhGNiwweDk2LDB4RUUsMHhBMCwweDg4LDB4MDAsMHgwMCwweEQ1LDB4RjYsMHhCNiwweEY2
LDB4NUQsMHg1RCwweEY3LDB4QkYsCi0gICAgMHhENiwweEY2LDB4QjYsMHhGNiwweEVCLDB4RTcs
MHhFRiwweEZBLDB4RDYsMHhGNiwweEI2LDB4RjYsMHhERCwweEY3LDB4REEsMHhBQSwKLSAgICAw
eEY2LDB4RjYsMHhCNiwweEY2LDB4NTUsMHg1NSwweDVGLDB4NUYsMHhCNiwweEY2LDB4QjcsMHhF
RSwweDA4LDB4QTAsMHgyQSwweEEyLAotICAgIDB4RDcsMHhGNiwweDk2LDB4RUUsMHhGRSwweEZB
LDB4QkUsMHhBQSwweEI2LDB4RjYsMHhENywweEVFLDB4MDIsMHg4MiwweDgwLDB4MDAsCi0gICAg
MHhENywweEY2LDB4QjYsMHhGNiwweDU5LDB4NTcsMHhGNSwweERELDB4RDcsMHhGNiwweEI2LDB4
RjYsMHhBRiwweDhELDB4MzcsMHg5RCwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4MjIsMHgy
OCwweDYwLDB4RTIsMHhGNywweEY2LDB4QjYsMHhFRSwweEJGLDB4MkIsMHhCQiwweDNGLAotICAg
IDB4MTcsMHhGRiwweEQ2LDB4RjYsMHhBQiwweEVGLDB4RkYsMHhERSwweEY3LDB4RjYsMHhENiww
eEY2LDB4ODAsMHgyMiwweDAyLDB4QUEsCi0gICAgMHgxNywweEZGLDB4RjcsMHhGNiwweDc1LDB4
NUQsMHg1RCwweDdGLDB4MTcsMHhGRiwweEY3LDB4RjYsMHhCNSwweERELDB4RjUsMHg3NSwKLSAg
ICAweEY3LDB4RkUsMHhENiwweEY2LDB4RUIsMHhBOCwweEFBLDB4QkMsMHhGNywweEZFLDB4MzQs
MHhFNiwweEEwLDB4QTAsMHhFOCwweDdBLAotICAgIDB4NzUsMHhFRSwweDRELDB4QjQsMHhBMCww
eEUwLDB4RjgsMHg3RSwweEVGLDB4QzQsMHg2NiwweDdBLDB4NjAsMHg3OCwweDVFLDB4NTcsCi0g
ICAgMHg2NywweDdBLDB4MDUsMHg2QSwweEJFLDB4ODYsMHg4QSwweDAyLDB4NjcsMHg3QSwweDA2
LDB4NzIsMHgyOCwweDIwLDB4MkEsMHhERSwKLSAgICAweEE4LDB4OEEsMHg0NiwweDdBLDB4QkYs
MHg4RCwweDhBLDB4ODMsMHhDOCwweDhBLDB4NjcsMHg4MiwweDI3LDB4QTUsMHhBRSwweDhCLAot
ICAgIDB4QzgsMHg4QSwweDY2LDB4N0EsMHg4MCwweEIwLDB4OUEsMHhGMiwweDExLDB4Q0QsMHg2
NywweDdBLDB4MzUsMHgzNSwweDI1LDB4MkQsCi0gICAgMHhGNywweEZFLDB4RDMsMHhERCwweDA5
LDB4MjksMHgwQiwweDBCLDB4MTcsMHhGRiwweEY4LDB4RjYsMHhBRSwweEFBLDB4QkEsMHg3MiwK
LSAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4QUEsMHhCQSwweEFBLDB4QUEsMHhGNywweEZFLDB4
MTgsMHhGNywweDdCLDB4N0UsMHg3OSwweDVGLAotICAgIDB4MzgsMHhGRiwweDE3LDB4RjcsMHg3
NSwweEY3LDB4RkYsMHhEQiwweDE3LDB4RkYsMHhGNywweEY2LDB4QTAsMHhFQiwweEVFLDB4RUIs
Ci0gICAgMHhGNywweEY2LDB4RjcsMHhGNiwweDAwLDB4MDAsMHgwMCwweDAwLDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHhBQSwweEFBLDB4QTIsMHg1QSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4
QUIsMHg4QiwweDdELDB4NUYsMHhGNywweEY2LDB4RDcsMHhGNiwweDU3LDB4N0YsMHg3QSwweDVC
LAotICAgIDB4RDcsMHhGNiwweEY2LDB4RUUsMHgwMCwweEEyLDB4QTIsMHhBOCwweEQ3LDB4RjYs
MHhENiwweEVFLDB4QUEsMHgyMCwweDBBLDB4MDgsCi0gICAgMHhGNywweEY2LDB4QjYsMHhFRSww
eEJBLDB4N0EsMHhCQSwweEJFLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg2NSwweDdGLDB4NzksMHhB
QSwKLSAgICAweEQ3LDB4RjYsMHhGNywweEVFLDB4QTAsMHgwMCwweDgwLDB4QTAsMHhGNiwweEY2
LDB4RDcsMHhGNiwweERELDB4RjUsMHg1NywweEFGLAotICAgIDB4RjcsMHhGNiwweEI2LDB4RUUs
MHgwMywweDBGLDB4MjEsMHgwMiwweDE4LDB4RkYsMHhGNywweEY2LDB4QTUsMHg4OSwweDgzLDB4
QzAsCi0gICAgMHgxOCwweEY3LDB4RDcsMHhGNiwweDc4LDB4NUUsMHg1RiwweDU3LDB4OTUsMHhG
NiwweEQ2LDB4RUUsMHhGRCwweEFCLDB4QUYsMHhCQiwKLSAgICAweDc2LDB4RjYsMHhCNiwweEVF
LDB4RkQsMHhBRCwweEJGLDB4MkUsMHg5NiwweEY2LDB4NTUsMHhFNiwweEFBLDB4RkEsMHhBQSww
eDdCLAotICAgIDB4NzUsMHhFRSwweDE0LDB4REUsMHhBOCwweEY4LDB4RkUsMHg3RiwweDM0LDB4
RTYsMHg5MiwweENELDB4RTgsMHhFOCwweEY4LDB4N0UsCi0gICAgMHgxNCwweERFLDB4NTEsMHhD
NSwweEZFLDB4RkUsMHhCNywweDI1LDB4OTYsMHhFRSwweDkyLDB4RDUsMHgyRCwweDBCLDB4MDIs
MHgwMCwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4OTUsMHhCRiwweEJGLDB4ODgsMHhENyww
eEY2LDB4QjYsMHhFRSwweDMzLDB4ODIsMHhBMCwweDgwLAotICAgIDB4RDcsMHhGNiwweEI2LDB4
RUUsMHg4MCwweEIwLDB4M0UsMHhBQywweEQ3LDB4RjYsMHhCNiwweEVFLDB4MEIsMHg4RSwweEE4
LDB4QTIsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweEEyLDB4QTIsMHgwOCwweEJBLDB4RDcs
MHhGNiwweEI2LDB4RUUsMHhFQiwweEVBLDB4QUEsMHhFQSwKLSAgICAweEQ3LDB4RjYsMHg5Niww
eEVFLDB4RkYsMHhGQSwweEVBLDB4QkEsMHhENywweEY2LDB4OTYsMHhFRSwweEE3LDB4RkYsMHhF
QSwweEFBLAotICAgIDB4OTcsMHhGRSwweEI2LDB4RUUsMHhENSwweDVGLDB4NzUsMHg1RiwweDk2
LDB4RjYsMHhCNiwweEVFLDB4NzcsMHg1NywweEQ1LDB4RjUsCi0gICAgMHhENywweEY2LDB4OTYs
MHhFRSwweDJFLDB4M0YsMHhCRCwweEJGLDB4RjcsMHhGNiwweEI3LDB4RUUsMHgwMiwweDAyLDB4
MkYsMHgyRCwKLSAgICAweDE4LDB4RkYsMHhENywweEY2LDB4NUYsMHhGRSwweEFBLDB4MkEsMHgx
NywweEY3LDB4QjgsMHhGNiwweEFCLDB4QUEsMHhBQSwweDAyLAotICAgIDB4MTgsMHhGRiwweEY3
LDB4RjYsMHg2RSwweDZGLDB4Q0IsMHgwMiwweDE4LDB4RjcsMHhENywweEY2LDB4RkYsMHhGQiww
eEY4LDB4RjgsCi0gICAgMHhGNywweEY2LDB4RDcsMHhFRSwweEEyLDB4RkEsMHg2OCwweEEyLDB4
RjgsMHhGNiwweEQ3LDB4RUUsMHgyQywweDJBLDB4MDMsMHgyQSwKLSAgICAweDE4LDB4RjcsMHhC
NywweEY2LDB4REEsMHhGOCwweEVFLDB4RUEsMHhGOCwweEY2LDB4RDcsMHhGNiwweDhELDB4ODgs
MHhFMywweERCLAotICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHgwMCwweDIxLDB4QUMsMHhGRSww
eEY3LDB4RjYsMHhENywweEY2LDB4RkQsMHhGOCwweDc4LDB4NUEsCi0gICAgMHhGOCwweEY2LDB4
QjcsMHhFRSwweEFBLDB4QkUsMHhGRiwweEY2LDB4RDcsMHhGNiwweDk2LDB4RUUsMHhFMCwweDY4
LDB4RTgsMHhBQSwKLSAgICAweDk2LDB4RUUsMHgzNCwweERFLDB4QkEsMHg2RSwweDc4LDB4Nzgs
MHg5NiwweEVFLDB4MTMsMHhERSwweDNELDB4MjcsMHhCNSwweEI1LAotICAgIDB4RDcsMHhGNiww
eDU0LDB4RTYsMHg2MiwweEUyLDB4RTAsMHhBQSwweDc1LDB4RUUsMHgxNCwweERFLDB4N0QsMHhG
RSwweEFBLDB4QUMsCi0gICAgMHg1NSwweEU2LDB4NzEsMHhDRCwweDdBLDB4NTgsMHg3OCwweDc4
LDB4NTEsMHhDNSwweEVGLDB4QkMsMHg5NiwweEI4LDB4MjAsMHgwMCwKLSAgICAweDEzLDB4REUs
MHg1MSwweEM1LDB4MjksMHgyOSwweEFELDB4QkQsMHg1NSwweEU2LDB4QjIsMHhENSwweDdBLDB4
RjIsMHg3QSwweDZCLAotICAgIDB4QjIsMHhENSwweDcyLDB4Q0QsMHgyRSwweEFGLDB4QkYsMHgy
RiwweEYzLDB4REQsMHg3MSwweENELDB4NjIsMHg0MywweEUyLDB4ODIsCi0gICAgMHhEMywweEQ1
LDB4QUUsMHhCNCwweEQ1LDB4MzcsMHgyRiwweDJFLDB4RDYsMHhGNiwweEIyLDB4RDUsMHhBRCww
eDJCLDB4MEIsMHgyQiwKLSAgICAweEI2LDB4RjYsMHg1NSwweEU2LDB4RkEsMHhGOCwweDYwLDB4
RTAsMHg3NiwweEU2LDB4MzUsMHhFNiwweEZFLDB4RjYsMHhENywweERFLAotICAgIDB4NTUsMHhF
RSwweDM0LDB4RTYsMHgwOCwweDJDLDB4NUUsMHg1NSwweDk2LDB4RUUsMHgzNCwweEU2LDB4QUIs
MHgyQiwweEFGLDB4QUQsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEQ1LDB4QTUsMHhGRCww
eDk1LDB4RDYsMHhGNiwweEI2LDB4RUUsMHg3RCwweDdFLDB4NUUsMHg3NSwKLSAgICAweEQ2LDB4
RjYsMHhCNiwweEVFLDB4NzIsMHg1QiwweDk1LDB4QTksMHhENiwweEY2LDB4QjYsMHhFRSwweERG
LDB4QjYsMHhCRSwweDc3LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg0RCwweDhCLDB4QUIs
MHhGRCwweEQ2LDB4RjYsMHg5NiwweEVFLDB4QUUsMHg4QSwweDgyLDB4OEYsCi0gICAgMHhENiww
eEY2LDB4QjYsMHhFRSwweEZCLDB4RTksMHhCNSwweDVCLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhG
RCwweEFFLDB4MzksMHg3NywKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QkUsMHgzRiwweEJB
LDB4QUEsMHhENiwweEY2LDB4QjYsMHhFRSwweEFGLDB4RTcsMHhGRiwweEQ2LAotICAgIDB4RDcs
MHhGNiwweEI2LDB4RUUsMHhFRSwweEVCLDB4N0IsMHhFRiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4
RkIsMHhGRiwweDdBLDB4RkUsCi0gICAgMHhENiwweEVFLDB4NzUsMHhFRSwweEZFLDB4REUsMHhG
RiwweEY4LDB4QjYsMHhGNiwweDc1LDB4RUUsMHhGQSwweEJBLDB4RUEsMHhGQSwKLSAgICAweEI1
LDB4RjYsMHg1NSwweEU2LDB4QUEsMHhBMiwweEFBLDB4RUEsMHhCNiwweEY2LDB4OTUsMHhFRSww
eERGLDB4RkQsMHhCQiwweDZBLAotICAgIDB4QjUsMHhFRSwweDk1LDB4RUUsMHhBRiwweEZCLDB4
RkYsMHhGOSwweEI3LDB4RjYsMHg5NiwweEVFLDB4RjksMHhERiwweEQ3LDB4QUQsCi0gICAgMHhE
NiwweEY2LDB4QjYsMHhFRSwweEFGLDB4OEQsMHhCRCwweEI1LDB4RDcsMHhGNiwweEI2LDB4RUUs
MHhBMiwweDhFLDB4MEEsMHgwMiwKLSAgICAweEQ3LDB4RjYsMHhGNywweEVFLDB4MDAsMHgyMCww
eDg4LDB4ODgsMHhENiwweEY2LDB4QjcsMHhFNiwweDBBLDB4MjIsMHgyMCwweDgyLAotICAgIDB4
RjcsMHhGNiwweEI2LDB4RUUsMHhGRSwweEJFLDB4QUEsMHhFQSwweEQ2LDB4RjYsMHhCNywweEY2
LDB4QUUsMHhBQSwweDAwLDB4QTgsCi0gICAgMHhENywweEZFLDB4MzQsMHhFRSwweEUwLDB4Qzgs
MHg2MCwweDZBLDB4RjIsMHhERCwweDQ2LDB4NzIsMHg3OCwweDdDLDB4NUUsMHg1RSwKLSAgICAw
eDQ3LDB4N0EsMHg4NSwweDYxLDB4RkEsMHhFMiwweEU4LDB4RjAsMHgyNiwweDcyLDB4NDMsMHg1
OSwweDBBLDB4QUIsMHhBRiwweDk1LAotICAgIDB4MjYsMHg3MiwweEU2LDB4NzEsMHhFQSwweDYz
LDB4RkIsMHhENywweDA2LDB4NzIsMHhBNSwweDY5LDB4NTUsMHg3RSwweDY4LDB4RUEsCi0gICAg
MHhBNSwweDY5LDB4NjQsMHg2MSwweEMwLDB4RjksMHg1NywweDVDLDB4QzUsMHg2OSwweDg1LDB4
NjEsMHgwQSwweDhCLDB4QkIsMHhGRiwKLSAgICAweEU2LDB4NjksMHg2NCwweDU5LDB4MkEsMHg4
QSwweDJCLDB4MjksMHg0NiwweDcyLDB4QzUsMHg2MSwweDJGLDB4MkQsMHhCRiwweEQ3LAotICAg
IDB4NjksMHg5MywweDI2LDB4NzIsMHgyRiwweEJELDB4QkQsMHhGNSwweDM1LDB4RUUsMHgyOSww
eDhCLDB4MEIsMHgwRCwweDJELDB4QjUsCi0gICAgMHhENywweEZFLDB4NTUsMHhFRSwweEFBLDB4
MkEsMHgwQiwweDJELDB4RDcsMHhGNiwweEI2LDB4RjYsMHg3NSwweDVCLDB4RkEsMHhBQSwKLSAg
ICAweEQ2LDB4RjYsMHhCNiwweEY2LDB4RkQsMHhBNSwweDg3LDB4OEYsMHhENiwweEY2LDB4QjYs
MHhGNiwweEFELDB4QkYsMHhBMywweDBBLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RjYsMHhBOCww
eEFBLDB4QkUsMHg5NywweEQ2LDB4RjYsMHhCNiwweEY2LDB4RDQsMHg3QywweDVDLDB4NzcsCi0g
ICAgMHhCNiwweEY2LDB4RDcsMHhFRSwweDBBLDB4MDIsMHgwOCwweDA4LDB4QjYsMHhGNiwweDk2
LDB4RUUsMHgwOCwweDBBLDB4ODgsMHgwMCwKLSAgICAweEI2LDB4RjYsMHhENiwweEVFLDB4QTAs
MHgwMCwweDA4LDB4MjgsMHhENywweEY2LDB4QjYsMHhGNiwweEFGLDB4QkQsMHhCNSwweEVGLAot
ICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBMCwweDdBLDB4M0EsMHhBRiwweEY3LDB4RjYsMHhE
NiwweEY2LDB4OUQsMHhERCwweEJGLDB4QjcsCi0gICAgMHhENywweEZFLDB4RjcsMHhGNiwweERG
LDB4N0QsMHg1NywweDU1LDB4RjYsMHhGRSwweEY3LDB4RjYsMHhGRCwweDdGLDB4RjcsMHhGRCwK
LSAgICAweEQ3LDB4RkUsMHhGNywweEY2LDB4NTUsMHg1NSwweDdELDB4RkQsMHhGNywweEZFLDB4
RDcsMHhGNiwweEE4LDB4QUUsMHhBQiwweDgyLAotICAgIDB4RjcsMHhGRSwweDU1LDB4RUUsMHhB
MCwweEE4LDB4RTAsMHg3QSwweEI2LDB4RjYsMHhBRiwweEJDLDB4QTAsMHhFOCwweEZBLDB4N0Es
Ci0gICAgMHgzMCwweENELDB4NjYsMHg3QSwweEUwLDB4NzgsMHg1RSwweDVGLDB4NjYsMHg3QSww
eDA1LDB4NzIsMHhBMCwweERBLDB4RkUsMHhBRSwKLSAgICAweDY2LDB4N0EsMHgyNiwweDdBLDB4
OEEsMHg5QiwweDlFLDB4QkEsMHg0NiwweDgyLDB4MjYsMHg3QSwweDdGLDB4RkYsMHhBRCwweEIz
LAotICAgIDB4ODcsMHg4QSwweDI2LDB4N0EsMHgyQiwweEE5LDB4QUIsMHg4QSwweEE4LDB4OEEs
MHg2NywweDgyLDB4QkEsMHhGMywweEIzLDB4RkUsCi0gICAgMHg4NywweDgyLDB4NDYsMHg3QSww
eEEwLDB4RTIsMHg3QSwweDM4LDB4MTQsMHhFNiwweDA5LDB4OTMsMHgzNSwweEFELDB4MkQsMHgy
RCwKLSAgICAweEY3LDB4RkUsMHg1NSwweEVFLDB4MEQsMHgwMSwweDAzLDB4MDMsMHgxNywweEZG
LDB4RjcsMHhGNiwweEYwLDB4QUEsMHhFQSwweENBLAotICAgIDB4MTcsMHhGRiwweEY4LDB4RjYs
MHhBQiwweEI4LDB4QUUsMHhBQiwweDM4LDB4RkYsMHhGNywweEY2LDB4QUYsMHhBQiwweEVELDB4
QUIsCi0gICAgMHgxOCwweEZGLDB4MTcsMHhGNywweEVGLDB4QkIsMHhGRSwweEJFLDB4MzYsMHhG
RiwweDE4LDB4RjcsMHg1RCwweDc3LDB4RjcsMHhGRiwKLSAgICAweDM3LDB4RjcsMHhENywweEY2
LDB4REUsMHg3RiwweEQ3LDB4NUYsMHhGNywweEY2LDB4RDcsMHhGNiwweEU4LDB4QTIsMHhBRiww
eEJGLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3QSwweEYyLDB4QkIsMHhCRCwweEY3LDB4
RjYsMHhENywweEY2LDB4RkQsMHg3RCwweEQ3LDB4RkQsCi0gICAgMHhGNywweEY2LDB4RDcsMHhG
NiwweEZELDB4RkQsMHhENiwweDU2LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhENywweDc1LDB4RDcs
MHg3RiwKLSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4MjAsMHgwMCwweDY4LDB4ODAsMHhGNyww
eEY2LDB4QjcsMHhGNiwweDIyLDB4QUEsMHhBOSwweEFGLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHg3NSwweEY1LDB4OTcsMHhBRiwweDM3LDB4RkYsMHhENywweEY2LDB4NzUsMHhGNywweEY1
LDB4QjcsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweDJGLDB4OEEsMHg4MiwweEMwLDB4MTcs
MHhGRiwweEI2LDB4RUUsMHhBOCwweEZBLDB4N0UsMHhENywKLSAgICAweEI2LDB4RjYsMHhENiww
eEVFLDB4MkQsMHgyQiwweDBBLDB4ODAsMHhCNiwweEY2LDB4NzUsMHhFRSwweEU4LDB4NkEsMHhG
QywweEZBLAotICAgIDB4OTYsMHhFRSwweDc1LDB4RUUsMHhFMCwweDY4LDB4NEMsMHhGQSwweDc1
LDB4RUUsMHgxNCwweEU2LDB4QTAsMHg3OCwweEY4LDB4N0UsCi0gICAgMHgzNSwweEU2LDB4QjMs
MHhENSwweEM4LDB4RTIsMHhGQSwweERFLDB4MTQsMHhERSwweDcxLDB4Q0QsMHg3RSwweERGLDB4
OTcsMHgyRCwKLSAgICAweEI2LDB4RjYsMHg5MiwweENELDB4QTUsMHgyRiwweDIyLDB4MDIsMHhE
NywweEY2LDB4OTYsMHhFRSwweDA5LDB4MEEsMHgwMiwweDA4LAotICAgIDB4RDcsMHhGNiwweEQ2
LDB4RUUsMHgyMCwweDIyLDB4MjIsMHgwMCwweEY3LDB4RjYsMHhCNiwweEVFLDB4QUIsMHhCQiww
eEFFLDB4QjMsCi0gICAgMHhENywweEY2LDB4RjcsMHhFRSwweDAwLDB4MDAsMHg4QSwweDBBLDB4
RDcsMHhGNiwweEI2LDB4RUUsMHg4MCwweDAwLDB4QTAsMHhDMCwKLSAgICAweEQ3LDB4RjYsMHhC
NywweEVFLDB4MjgsMHgyMiwweEU4LDB4RUEsMHhENywweEY2LDB4QjcsMHhFRSwweEZDLDB4NTcs
MHg3NiwweEVGLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHg5NywweDhGLDB4MkYsMHgyQSww
eEQ3LDB4RjYsMHhCNywweEVFLDB4RTMsMHhBMiwweEEyLDB4MjIsCi0gICAgMHhENywweEY2LDB4
QjYsMHhFRSwweDVGLDB4RUEsMHhGMiwweEZFLDB4RDcsMHhGNiwweEI2LDB4RUUsMHg1RiwweDVF
LDB4NUUsMHg3RSwKLSAgICAweEI2LDB4RUUsMHg5NiwweEVFLDB4QTMsMHhGRSwweDNBLDB4MDAs
MHhGNywweEY2LDB4OTYsMHhFRSwweDJGLDB4QkQsMHhCRiwweEZELAotICAgIDB4MTcsMHhGRiww
eEI3LDB4RUUsMHhBQSwweDJFLDB4QUYsMHhGRCwweDE4LDB4RkYsMHhGNywweEY2LDB4QkIsMHgw
QiwweDBBLDB4MkIsCi0gICAgMHgzOCwweEZGLDB4MTgsMHhGNywweEY3LDB4RUYsMHhDQiwweEVC
LDB4MzksMHhGRiwweEY3LDB4RjYsMHg3RSwweEZBLDB4RUEsMHg4QiwKLSAgICAweDE4LDB4RkYs
MHhENywweEVFLDB4RkYsMHhCRiwweEJFLDB4RjgsMHgxOCwweEY3LDB4RjgsMHhGNiwweDU1LDB4
NUYsMHhENSwweEZELAotICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhBQSwweEE4LDB4QjAsMHg4
MCwweEY4LDB4RjYsMHhENywweEY2LDB4NTUsMHhCNywweENGLDB4NkIsCi0gICAgMHhGNywweEY2
LDB4RDcsMHhGNiwweEJFLDB4MEEsMHgwQSwweDA5LDB4RjcsMHhGNiwweEI3LDB4RUUsMHg2OCww
eEUwLDB4NzgsMHg3QSwKLSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4OEQsMHgwMiwweDgyLDB4
QUIsMHhENywweEY2LDB4QjcsMHhFRSwweEVBLDB4ODgsMHhBQSwweEFBLAotICAgIDB4QjYsMHhF
RSwweDU1LDB4RTYsMHg1OCwweDc4LDB4NjgsMHhFMCwweDU1LDB4RTYsMHhGMywweEQ1LDB4MjYs
MHgzNywweDFGLDB4MTYsCi0gICAgMHhENywweEY2LDB4OTYsMHhFRSwweDJCLDB4QTksMHgyQiww
eDJELDB4QjcsMHhFRSwweDM0LDB4RTYsMHg1RSwweDdDLDB4NzgsMHg1OCwKLSAgICAweDM0LDB4
RTYsMHg5MiwweENELDB4NzAsMHg3OCwweDcwLDB4NzgsMHg5MiwweEQ1LDB4MzAsMHhDNSwweEZC
LDB4NkEsMHg2OCwweEIwLAotICAgIDB4RDMsMHhERCwweDUxLDB4QzUsMHgyRCwweDJELDB4M0Qs
MHhBNywweDE0LDB4REUsMHhCMiwweEQ1LDB4ODIsMHhDMiwweDQyLDB4QzIsCi0gICAgMHhCMiww
eEQ1LDB4MzAsMHhDNSwweDJBLDB4QkUsMHg5RiwweEQ2LDB4RjQsMHhERCwweDUxLDB4Q0QsMHg4
MiwweDhCLDB4Q0IsMHg3RCwKLSAgICAweEYzLDB4REQsMHgzMSwweEM1LDB4MzcsMHgyRSwweEE2
LDB4QUQsMHhCNiwweEY2LDB4RjMsMHhERCwweDBCLDB4MjksMHgwOSwweDBCLAotICAgIDB4RDcs
MHhGNiwweDc1LDB4RUUsMHg3QSwweEZBLDB4RkEsMHhDQSwweDk2LDB4RUUsMHgzNCwweEU2LDB4
RkUsMHg1NiwweDVBLDB4RkMsCi0gICAgMHg1NSwweEU2LDB4MzQsMHhFNiwweDA5LDB4MjUsMHg5
RCwweEZFLDB4OTYsMHhFRSwweDM0LDB4RTYsMHhBRCwweEFCLDB4QUYsMHhBRiwKLSAgICAweEQ2
LDB4RjYsMHhCNiwweEVFLDB4QUYsMHhCQiwweDdELDB4N0QsMHhENSwweEY2LDB4QjYsMHhFRSww
eDU3LDB4NzUsMHhGNSwweEY3LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhEOSwweERGLDB4
RkEsMHhFQiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4RDksMHg3QSwweEFFLDB4QTcsCi0gICAgMHhE
NiwweEY2LDB4QjYsMHhFRSwweDdGLDB4NkIsMHhBQiwweDhELDB4RDYsMHhGNiwweEI2LDB4RUUs
MHhBRCwweENGLDB4RkUsMHhGRSwKLSAgICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4NkEsMHhBQSww
eDMyLDB4MzgsMHhENiwweEY2LDB4QjYsMHhFRSwweEUzLDB4RUEsMHhEQSwweDdFLAotICAgIDB4
RDYsMHhGNiwweEI2LDB4RUUsMHhERCwweDU3LDB4RDYsMHhCNywweEI2LDB4RjYsMHhENywweEVF
LDB4RUIsMHhFQiwweEVBLDB4RkIsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweEZGLDB4RkUs
MHg3RSwweDVBLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBRiwweDJCLDB4QUIsMHhGRSwKLSAgICAw
eEI2LDB4RUUsMHg5NSwweEVFLDB4RjgsMHhBMCwweDc4LDB4NTAsMHhCNiwweEY2LDB4OTUsMHhF
RSwweDc3LDB4RUUsMHhFQiwweEY3LAotICAgIDB4QjYsMHhGNiwweDc1LDB4RUUsMHg2RiwweDNF
LDB4QUYsMHgzQSwweEI1LDB4RjYsMHg5NiwweEVFLDB4MEIsMHhDQSwweEJBLDB4N0UsCi0gICAg
MHg5NSwweEY2LDB4QjYsMHhFRSwweEZGLDB4RkIsMHhGQSwweEFFLDB4OTYsMHhGNiwweEI2LDB4
RUUsMHhFNSwweEZELDB4N0IsMHg1RSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4OTUsMHhC
NSwweEFCLDB4QkEsMHhENywweEY2LDB4QjYsMHhFNiwweDgwLDB4MjIsMHhBMiwweDIwLAotICAg
IDB4RDcsMHhGNiwweEY2LDB4RUUsMHgyMCwweDIyLDB4MjgsMHgwMCwweEQ3LDB4RjYsMHhCNiww
eEVFLDB4OEEsMHg1RSwweEZFLDB4QUEsCi0gICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweDdELDB4
NzksMHg3RCwweEQ1LDB4RDYsMHhGNiwweEI2LDB4RjYsMHgxOCwweEJFLDB4QUEsMHgyMCwKLSAg
ICAweEI2LDB4RjYsMHg1MiwweENELDB4QzAsMHhDMCwweDYwLDB4NDAsMHgyQywweEFDLDB4MDUs
MHg2QSwweDU4LDB4NUMsMHg1NCwweDVFLAotICAgIDB4MDYsMHg2QSwweDY0LDB4NTksMHhCMCww
eDZBLDB4N0UsMHg3NywweDY0LDB4NjEsMHhFMiwweDQ4LDB4MkEsMHg5NiwweERFLDB4REUsCi0g
ICAgMHgwNiwweDcyLDB4MjMsMHg1OSwweEFBLDB4MEIsMHhBOSwweDJELDB4MDYsMHg3MiwweEE1
LDB4NjEsMHg3OCwweEE4LDB4QTIsMHhFQSwKLSAgICAweEE1LDB4NjksMHg0NCwweDU5LDB4Mjgs
MHhFQywweDdFLDB4OTgsMHg4NSwweDYxLDB4NDQsMHg1OSwweEVBLDB4NEUsMHhBNiwweDI3LAot
ICAgIDB4QzUsMHg2MSwweDIzLDB4NTEsMHgzQiwweEI3LDB4QkYsMHhBNSwweEU2LDB4NjksMHg4
NSwweDU5LDB4M0YsMHhCRCwweEJGLDB4OTcsCi0gICAgMHg4OCwweDdBLDB4MDYsMHg2QSwweDBE
LDB4M0QsMHgzRCwweDM1LDB4MkMsMHhBQywweDQ3LDB4NzIsMHgyRiwweEFGLDB4QkYsMHhCRCwK
LSAgICAweDk2LDB4RjYsMHgwQywweEE0LDB4MDIsMHgwQiwweDBELDB4MjUsMHhGNywweEZFLDB4
OTYsMHhGNiwweEFBLDB4QUEsMHhBQiwweEE5LAotICAgIDB4RDYsMHhGRSwweEQ3LDB4RjYsMHhG
RiwweEZGLDB4RkYsMHhGRiwweEI2LDB4RkUsMHhENywweEY2LDB4NTUsMHg3NSwweDY3LDB4N0Qs
Ci0gICAgMHhGNywweEZFLDB4QjYsMHhGNiwweEQ3LDB4NUUsMHg3NiwweDdFLDB4RDcsMHhGNiww
eEI2LDB4RjYsMHg2RSwweENGLDB4QkQsMHhERiwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEY2LDB4
NTUsMHg1NiwweDU0LDB4NTcsMHhENywweEY2LDB4QjYsMHhGNiwweDc1LDB4QkQsMHhCNywweDJG
LAotICAgIDB4RDcsMHhGNiwweEI2LDB4RjYsMHhERSwweEY4LDB4QkMsMHg1MywweEQ2LDB4RjYs
MHhCNiwweEY2LDB4NkQsMHhGRiwweEY2LDB4QTQsCi0gICAgMHhENiwweEY2LDB4QjYsMHhGNiww
eDFGLDB4MEYsMHg4QiwweEI4LDB4RjcsMHhGNiwweEQ2LDB4RjYsMHgzNSwweDE1LDB4OTUsMHg1
NSwKLSAgICAweDE3LDB4RkYsMHhENywweEY2LDB4RUUsMHhFQSwweEVGLDB4RUYsMHgxNywweEZG
LDB4RjcsMHhGNiwweEQ1LDB4NzUsMHhGRCwweEZELAotICAgIDB4RDcsMHhGRSwweEY3LDB4RjYs
MHhGOSwweEI3LDB4QUQsMHgyQiwweEY3LDB4RkUsMHg5NSwweEVFLDB4MDAsMHhBQSwweEVBLDB4
NzgsCi0gICAgMHhENiwweEY2LDB4RjAsMHhDNCwweEEwLDB4RTgsMHg2QSwweDVBLDB4NzEsMHhE
NSwweDQ2LDB4N0EsMHhFMCwweEU4LDB4NUEsMHg1RSwKLSAgICAweEM4LDB4ODIsMHhDNSwweDY5
LDB4RTgsMHhCRSwweEZCLDB4RjcsMHg0NiwweDdBLDB4MDUsMHg3MiwweEU4LDB4OTAsMHg2MCww
eDhGLAotICAgIDB4NDYsMHg4MiwweEU1LDB4NzEsMHhBQywweEJBLDB4MkQsMHhFQSwweDg3LDB4
OEEsMHgyNiwweDdBLDB4QkQsMHhGMywweDg5LDB4MkIsCi0gICAgMHhBOCwweDhBLDB4NDYsMHg4
MiwweDJBLDB4QkYsMHhERiwweEZFLDB4QTgsMHg4QSwweDI2LDB4N0EsMHhBOCwweEEwLDB4RUYs
MHhERiwKLSAgICAweEE4LDB4ODIsMHhFNSwweDcxLDB4MkEsMHgzRSwweDFGLDB4MzcsMHg1NSww
eEVFLDB4OEEsMHg5QiwweDBELDB4MjksMHgwOSwweDBCLAotICAgIDB4MTgsMHhGRiwweEQ3LDB4
RkUsMHgzOSwweEE5LDB4QUIsMHgyQiwweDE3LDB4RkYsMHgxOCwweEY3LDB4RjgsMHhBOCwweEJB
LDB4RUEsCi0gICAgMHgxNywweEZGLDB4MTgsMHhGNywweEZCLDB4QkUsMHhFQiwweEVFLDB4MTgs
MHhGRiwweDE3LDB4RjcsMHhGRiwweEVGLDB4RkUsMHhFQiwKLSAgICAweDE4LDB4RkYsMHgxNyww
eEY3LDB4RUUsMHhGRSwweEFGLDB4RkIsMHgxOCwweEZGLDB4RjcsMHhGNiwweDgyLDB4RTAsMHg3
MCwweDdBLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3OCwweEZBLDB4NUUsMHhBQSwweEY3
LDB4RjYsMHhENywweEY2LDB4QUEsMHhBQSwweDhBLDB4ODMsCi0gICAgMHhGNywweEY2LDB4RDcs
MHhGNiwweEZELDB4RkEsMHhCQSwweEE2LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGNywweEJGLDB4
RkYsMHhGRiwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4MzYsMHhCQSwweDc2LDB4NUUsMHhG
NywweEY2LDB4RDcsMHhGNiwweDc1LDB4RDcsMHg5RCwweEQ1LAotICAgIDB4RjcsMHhGNiwweDk3
LDB4RjYsMHhCMiwweEFBLDB4QTAsMHhBMiwweEQ3LDB4RjYsMHhGNywweEVFLDB4ODAsMHhBMCww
eDAwLDB4QTAsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDhGLDB4RUQsMHgzNSwweDMxLDB4
MTgsMHhGRiwweEY3LDB4RjYsMHgzNSwweDBELDB4QkEsMHhFQSwKLSAgICAweDE4LDB4RkYsMHhC
NiwweEVFLDB4RTAsMHg3OCwweEZFLDB4REYsMHhCNywweEY2LDB4QjYsMHhFRSwweEZGLDB4OTcs
MHhCRiwweEFBLAotICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHhBMiwweEFBLDB4QTAsMHhGQSww
eDk2LDB4RjYsMHg3NSwweEVFLDB4NzAsMHg2MCwweEU4LDB4NzgsCi0gICAgMHg5NiwweEVFLDB4
MTQsMHhERSwweEE4LDB4RTgsMHhFOCwweDVBLDB4NTUsMHhFNiwweEIzLDB4RDUsMHhBOCwweEFB
LDB4RTIsMHg3QSwKLSAgICAweDE0LDB4REUsMHg3MSwweENELDB4NzgsMHg3QSwweEQ3LDB4MjUs
MHhCNiwweEY2LDB4OTIsMHhENSwweEJELDB4MkQsMHgwQiwweDAyLAotICAgIDB4RjcsMHhGRSww
eDk2LDB4RjYsMHhCRCwweEFGLDB4QkIsMHg4QSwweEY3LDB4RjYsMHhCNywweEVFLDB4RUEsMHhC
QSwweEVBLDB4QUUsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEZGLDB4REQsMHg1NywweDU1
LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1OSwweEQ1LDB4NTUsMHhCNSwKLSAgICAweEY4LDB4RjYs
MHhCNiwweEVFLDB4RUUsMHg3RiwweEJFLDB4MkEsMHhGNywweEY2LDB4QjcsMHhFRSwweEZGLDB4
RkYsMHhFQiwweEFBLAotICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHhFQywweEJGLDB4QUMsMHgz
OCwweEQ3LDB4RjYsMHhCNywweEVFLDB4QUIsMHgyRSwweDhFLDB4QUEsCi0gICAgMHhENywweEY2
LDB4QjYsMHhFRSwweDA4LDB4QTIsMHhBOCwweEVBLDB4RDcsMHhGNiwweEI2LDB4RUUsMHg4OCww
eDNFLDB4QkUsMHhCNywKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4RkUsMHg2RSwweEZFLDB4
N0UsMHhENywweEY2LDB4QjYsMHhFRSwweEZGLDB4M0YsMHgzRiwweEFGLAotICAgIDB4RDcsMHhG
NiwweEI2LDB4RUUsMHhERCwweDdFLDB4NzAsMHhFQSwweEQ2LDB4RjYsMHhCNywweEVFLDB4NUQs
MHg1RiwweDVGLDB4RkIsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweEFELDB4RkQsMHhBRCww
eEI3LDB4RjgsMHhGRSwweEQ3LDB4RUUsMHgyQiwweDI3LDB4MkQsMHhGNSwKLSAgICAweDM4LDB4
RkYsMHhGOCwweEY2LDB4MkEsMHhBQSwweEFGLDB4QkYsMHgzOCwweEZGLDB4MTksMHhGRiwweDJF
LDB4QTYsMHhBRiwweEFGLAotICAgIDB4MzgsMHhGRiwweEY3LDB4RjYsMHg3QSwweEVBLDB4RTAs
MHg4MCwweDE4LDB4RjcsMHhGNywweEY2LDB4NTUsMHg1NSwweDU3LDB4NUUsCi0gICAgMHhGOCww
eEY2LDB4RDcsMHhGNiwweEU4LDB4QUEsMHhGQiwweDJFLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg2
QSwweDJFLDB4MkIsMHhBOCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QTUsMHhENiwweEZB
LDB4N0EsMHhGNywweEY2LDB4OTYsMHhFRSwweEUwLDB4QUEsMHhEOCwweEZBLAotICAgIDB4Qjcs
MHhGNiwweEQ3LDB4RUUsMHhCRSwweDhBLDB4QUEsMHhBMCwweEQ3LDB4RjYsMHhCNiwweEVFLDB4
MkIsMHgyQSwweEFBLDB4MEYsCi0gICAgMHhENywweEY2LDB4MzQsMHhERSwweEY4LDB4NzgsMHhF
OCwweDc4LDB4NTQsMHhFNiwweEQyLDB4RDUsMHgzNiwweDM2LDB4M0UsMHgyRSwKLSAgICAweEQ3
LDB4RjYsMHg3NSwweEU2LDB4MEYsMHg4OSwweDAxLDB4MEIsMHhENywweEY2LDB4MzQsMHhFNiww
eDc4LDB4NzgsMHhFOCwweEUyLAotICAgIDB4MzQsMHhFNiwweDkyLDB4Q0QsMHg1OCwweDVBLDB4
NTgsMHg3OCwweEIzLDB4RDUsMHg3MSwweENELDB4NUYsMHhFQSwweEMzLDB4QzIsCi0gICAgMHhE
MiwweEQ1LDB4NzEsMHhDRCwweDJELDB4MTcsMHhBNSwweEE1LDB4MTQsMHhERSwweEQzLDB4REQs
MHg2MywweEVCLDB4OEEsMHhDRCwKLSAgICAweDkyLDB4Q0QsMHhFRiwweEJDLDB4RUEsMHhCOCww
eEY4LDB4NUMsMHg1MSwweEM1LDB4MTAsMHhDNSwweDI4LDB4QkUsMHhCRSwweDU1LAotICAgIDB4
NzUsMHhFRSwweDUxLDB4Q0QsMHhCRCwweEE1LDB4MkQsMHgwRCwweEQ3LDB4RjYsMHg3NSwweEVF
LDB4QUQsMHgyOSwweDBBLDB4MDIsCi0gICAgMHhENywweEY2LDB4NzUsMHhFRSwweEMyLDB4QUEs
MHg2OCwweEE4LDB4OTYsMHhFRSwweDM0LDB4RTYsMHg3QywweEZBLDB4N0EsMHg2RSwKLSAgICAw
eDU1LDB4RTYsMHgzNCwweEU2LDB4REUsMHhEQiwweDc3LDB4NUIsMHg3NSwweEVFLDB4NTUsMHhF
NiwweDA3LDB4MDksMHgyOSwweDc1LAotICAgIDB4RDYsMHhGNiwweDk1LDB4RUUsMHhBRiwweEE5
LDB4QUIsMHhBQiwweEI1LDB4RjYsMHhENiwweEVFLDB4QUYsMHhBQSwweEZBLDB4RTIsCi0gICAg
MHhENiwweEY2LDB4QjYsMHhFRSwweDhGLDB4NzgsMHg1MCwweDcxLDB4RDYsMHhGNiwweEI2LDB4
RUUsMHhBRCwweEFCLDB4RkYsMHhBNywKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUQsMHg3
NywweDc3LDB4RkYsMHhENiwweEY2LDB4QjYsMHhFRSwweEVBLDB4QkIsMHhBQiwweDhBLAotICAg
IDB4RDYsMHhGNiwweEI2LDB4RUUsMHhCRiwweDZGLDB4NkEsMHg3MiwweEQ2LDB4RjYsMHhCNiww
eEVFLDB4NUYsMHg1OSwweEZFLDB4N0UsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDJCLDB4
QUYsMHhGRiwweEY3LDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBRSwweEJBLDB4REUsMHhGQiwKLSAg
ICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4NzgsMHhCRiwweDc1LDB4RkQsMHhENiwweEY2LDB4QjYs
MHhFRSwweEZFLDB4RkUsMHhGRiwweDZCLAotICAgIDB4RDYsMHhGNiwweDk1LDB4RUUsMHg1Niww
eERBLDB4N0UsMHhGRiwweEI2LDB4RjYsMHg5NiwweEVFLDB4REYsMHg3NywweEJGLDB4Q0QsCi0g
ICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweDlBLDB4N0UsMHhGMiwweEUyLDB4QjUsMHhGNiwweDk2
LDB4RUUsMHg1RSwweERGLDB4RkYsMHhGRSwKLSAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4RkIs
MHhFQiwweEZELDB4RUQsMHhENiwweEY2LDB4OTYsMHhFRSwweEFELDB4QUYsMHhCRCwweEZGLAot
ICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhCQSwweDM2LDB4MkYsMHgwQiwweEY2LDB4RjYsMHhC
NywweEVFLDB4QkUsMHhCRSwweEFBLDB4QUIsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweEVD
LDB4QUMsMHhBOCwweDI4LDB4RDcsMHhGNiwweEY2LDB4RUUsMHgwMCwweEE4LDB4QTgsMHg4OCwK
LSAgICAweEQ2LDB4RjYsMHhGNywweEVFLDB4ODgsMHgwQSwweDAyLDB4MDAsMHhENiwweEY2LDB4
QjcsMHhGNiwweEU4LDB4QzIsMHhFMCwweEZBLAotICAgIDB4QjYsMHhGNiwweDcyLDB4RDUsMHg2
MCwweDYwLDB4NjAsMHg0MCwweDhCLDB4OUIsMHg4NCwweDU5LDB4N0MsMHg1QywweDVDLDB4NUMs
Ci0gICAgMHhBNSwweDYxLDB4NDMsMHg1MSwweEVDLDB4N0EsMHhGQSwweDhGLDB4NjUsMHg1OSww
eEUzLDB4NDgsMHhFRSwweDZBLDB4NzgsMHhFMCwKLSAgICAweEE1LDB4NjEsMHhDMiwweDQ4LDB4
MEYsMHgyRCwweEJELDB4QkYsMHgwNiwweDcyLDB4ODQsMHg1OSwweDhBLDB4QUEsMHhGRiwweEJE
LAotICAgIDB4QzUsMHg2OSwweDY0LDB4NTksMHg1OCwweDdFLDB4RUUsMHg2QSwweDY0LDB4NTks
MHgwNCwweDUxLDB4OEEsMHhBQSwweDk4LDB4QUEsCi0gICAgMHg2NCwweDU5LDB4MjQsMHg1MSww
eDJGLDB4RkIsMHhGQSwweEFCLDB4QzUsMHg2MSwweDQ0LDB4NTEsMHgyRSwweDNGLDB4QkQsMHhE
NSwKLSAgICAweDI3LDB4NzIsMHhDNSwweDYxLDB4MkYsMHgyRCwweDVELDB4NTUsMHgwOSwweDhC
LDB4RTYsMHg2MSwweDJCLDB4QUYsMHhCRCwweEI1LAotICAgIDB4OTIsMHhENSwweDI5LDB4OEIs
MHgyRCwweEJELDB4RjUsMHg1NSwweEI2LDB4RjYsMHg2RSwweEI0LDB4MDAsMHgwMiwweDBCLDB4
MEQsCi0gICAgMHhENywweEZFLDB4RDYsMHhGNiwweEZGLDB4RkUsMHhFQSwweEFBLDB4QjcsMHhG
RSwweEQ3LDB4RjYsMHg3NywweEZELDB4NTcsMHg1NSwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEY2
LDB4RjgsMHhFMiwweEUwLDB4ODAsMHhENywweEY2LDB4QjYsMHhGNiwweDdFLDB4RUIsMHhGOSww
eEE5LAotICAgIDB4RDcsMHhGNiwweEI2LDB4RjYsMHhENSwweEI1LDB4QUYsMHhCRiwweEQ3LDB4
RjYsMHhCNiwweEY2LDB4QUUsMHhGNiwweEFBLDB4RUIsCi0gICAgMHhENiwweEY2LDB4QjcsMHhG
NiwweDYwLDB4RTIsMHgyMCwweEFBLDB4RDYsMHhGNiwweEI2LDB4RjYsMHgxQSwweEFFLDB4OUEs
MHgzQSwKLSAgICAweEQ2LDB4RjYsMHhCNywweEY2LDB4NzgsMHhDQSwweDgwLDB4QTAsMHhGNyww
eEZFLDB4QjYsMHhGNiwweEFCLDB4QkYsMHhBNywweEFELAotICAgIDB4RjcsMHhGRSwweEQ3LDB4
RjYsMHg4QiwweEFBLDB4OEIsMHhBQiwweEY3LDB4RkUsMHhENywweEY2LDB4OEIsMHhBRSwweEFB
LDB4QUEsCi0gICAgMHhGNywweEZFLDB4QjYsMHhGNiwweEE4LDB4QTIsMHhFQSwweDY4LDB4QjYs
MHhGNiwweDMxLDB4Q0QsMHg4MCwweDgwLDB4RTgsMHg3OCwKLSAgICAweDcyLDB4RDUsMHgyNSww
eDcyLDB4QTAsMHhFMCwweDc4LDB4N0UsMHgwOSwweDhCLDB4RTUsMHg2OSwweERDLDB4REUsMHhE
NywweEZELAotICAgIDB4NDYsMHg3QSwweDA1LDB4NzIsMHhEMSwweEFGLDB4M0YsMHgyQSwweDY3
LDB4ODIsMHgyNiwweDdBLDB4QjUsMHg1RiwweDFGLDB4MDMsCi0gICAgMHg2NywweDgyLDB4MjYs
MHg3QSwweDU3LDB4REMsMHgzOCwweDgwLDB4ODcsMHg4QSwweDA2LDB4N0EsMHgyMywweDgyLDB4
Q0EsMHg1RSwKLSAgICAweDY3LDB4ODIsMHgyNiwweDdBLDB4MjgsMHhFMiwweENCLDB4NTksMHg2
NywweDgyLDB4MjYsMHg3QSwweEIyLDB4QkUsMHhCRCwweDc3LAotICAgIDB4MEQsMHhBQywweDY2
LDB4N0EsMHhENSwweDk1LDB4QjUsMHgzNSwweEQ3LDB4RkUsMHg4RSwweEJDLDB4MkQsMHgyOSww
eDA5LDB4MEIsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGRSwweEJELDB4QjUsMHhBRCwweDJELDB4
RjcsMHhGRSwweDM4LDB4RjcsMHhCRSwweEVBLDB4RkEsMHg3RSwKLSAgICAweDE4LDB4RkYsMHgz
NywweEY3LDB4ODIsMHhBQSwweEFCLDB4QUIsMHgzOCwweEZGLDB4MTcsMHhGNywweDc3LDB4NUYs
MHhERCwweEZFLAotICAgIDB4MzgsMHhGRiwweEY3LDB4RjYsMHhBQiwweEJBLDB4QUIsMHhBQSww
eDE4LDB4RkYsMHhGNywweEY2LDB4N0IsMHhFQSwweEY4LDB4RDgsCi0gICAgMHhGNywweEY2LDB4
RDcsMHhGNiwweEEwLDB4QjAsMHhFOCwweEFFLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBQSwweEVF
LDB4QUUsMHhBOCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QkIsMHhFQSwweEVBLDB4QzIs
MHhGNywweEY2LDB4QjcsMHhFRSwweEJBLDB4RjgsMHhBQSwweDJBLAotICAgIDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHhENSwweDU1LDB4NTcsMHgyOCwweEY3LDB4RjYsMHhENywweEY2LDB4RjUsMHhB
RCwweEVCLDB4QzgsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDdFLDB4REYsMHhFRiwweDBF
LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhCNSwweDVGLDB4OUUsMHgyRSwKLSAgICAweDE3LDB4RkYs
MHhENywweEY2LDB4QUYsMHgwQiwweEFCLDB4QTIsMHgxNywweEZGLDB4QjYsMHhGNiwweEM4LDB4
RTgsMHg1QSwweDU3LAotICAgIDB4RDYsMHhGNiwweDk2LDB4RUUsMHgyOCwweEFBLDB4QkYsMHhB
RiwweEI2LDB4RjYsMHhENywweEVFLDB4OEEsMHgwQSwweDIwLDB4ODIsCi0gICAgMHhENiwweEY2
LDB4OTYsMHhFRSwweDdGLDB4NUUsMHg1RSwweDdFLDB4OTYsMHhFRSwweDM0LDB4RTYsMHhBMCww
eEU4LDB4RjgsMHhGRSwKLSAgICAweDc1LDB4RTYsMHhGMywweEQ1LDB4RjgsMHhGQSwweDZBLDB4
N0EsMHgzNSwweEU2LDB4OTIsMHhDRCwweDdBLDB4NUUsMHhCRiwweDJFLAotICAgIDB4RDcsMHhG
NiwweDkyLDB4RDUsMHhCNSwweEFGLDB4MkEsMHgwMiwweEQ3LDB4RjYsMHhCNiwweEY2LDB4MjEs
MHgwRCwweDBELDB4MDksCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDc5LDB4RkQsMHhGNSww
eDU1LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGNSwweEZCLDB4NUYsMHg1RCwKLSAgICAweEY3LDB4
RjYsMHhCNywweEVFLDB4QUIsMHhBQiwweEFGLDB4QUYsMHhGNywweEY2LDB4QjcsMHhFRSwweDJB
LDB4QUEsMHhFQSwweEZBLAotICAgIDB4RDcsMHhGNiwweEY3LDB4RUUsMHgyQSwweDAwLDB4MDAs
MHgyMCwweEQ3LDB4RjYsMHhCNywweEVFLDB4ODIsMHg4MCwweEEwLDB4ODAsCi0gICAgMHhENyww
eEY2LDB4QjcsMHhFRSwweEE4LDB4RUIsMHg4MiwweEM4LDB4RDcsMHhGNiwweEI3LDB4RUUsMHgy
OCwweDAyLDB4QzIsMHhFQSwKLSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4RjgsMHgyQSwweEFF
LDB4QUYsMHhENywweEY2LDB4QjYsMHhFRSwweEE3LDB4QjUsMHhGRiwweERGLAotICAgIDB4RDcs
MHhGNiwweEI3LDB4RUUsMHg3NywweEJFLDB4QkMsMHhBOCwweEQ3LDB4RjYsMHhCNiwweEVFLDB4
OEIsMHg4QiwweDJGLDB4QkUsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweEM4LDB4ODIsMHgw
MCwweDgwLDB4RDcsMHhGNiwweEI3LDB4RUUsMHhFOCwweEFFLDB4RUEsMHgyQSwKLSAgICAweEQ3
LDB4RjYsMHhCNiwweEVFLDB4RUYsMHhGQiwweEFBLDB4QUYsMHhENywweEY2LDB4QjYsMHhFRSww
eDI5LDB4RUYsMHhBQSwweDBBLAotICAgIDB4MTgsMHhGNywweEQ3LDB4RjYsMHgyQiwweEFCLDB4
QUYsMHhCRCwweDM4LDB4RkYsMHhGNywweEY2LDB4QUIsMHgyQSwweDJCLDB4RUQsCi0gICAgMHgz
OSwweEZGLDB4MzgsMHhGRiwweEVCLDB4QUYsMHhBRiwweEJGLDB4MzgsMHhGRiwweEY3LDB4RjYs
MHg1RSwweDdBLDB4NzgsMHg2MCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QUYsMHgwOSww
eEE4LDB4ODMsMHhGNywweEY2LDB4RDcsMHhGNiwweEM4LDB4NjIsMHg3RSwweDU3LAotICAgIDB4
RjcsMHhGNiwweDk2LDB4RUUsMHhBMCwweEFBLDB4RUEsMHhERiwweEQ3LDB4RjYsMHg5NiwweEVF
LDB4NzAsMHhGRSwweDVGLDB4NTcsCi0gICAgMHhCNiwweEVFLDB4OTYsMHhFRSwweDhBLDB4QUYs
MHgzRiwweEE1LDB4RDcsMHhGNiwweEI2LDB4RUUsMHgwRCwweDBELDB4MkQsMHgyNSwKLSAgICAw
eEQ3LDB4RjYsMHhGNCwweERELDB4RTgsMHhFMCwweDYwLDB4NjAsMHgxNCwweERFLDB4NTEsMHhD
NSwweDAwLDB4MjAsMHgyRSwweDM1LAotICAgIDB4RDYsMHhGNiwweDU1LDB4RTYsMHgwOSwweDJE
LDB4QUQsMHhCRCwweEQ3LDB4RjYsMHg1NSwweEVFLDB4NjIsMHhFOCwweEVBLDB4RTgsCi0gICAg
MHgzNSwweEU2LDB4OTIsMHhDRCwweDVBLDB4NTgsMHg1OCwweDU4LDB4QjIsMHhENSwweDcxLDB4
Q0QsMHg2MywweEMyLDB4QzIsMHhDMiwKLSAgICAweEIyLDB4RDUsMHg3MSwweENELDB4QjUsMHhB
RCwweDJELDB4MkQsMHgxMywweERFLDB4QjIsMHhENSwweDhCLDB4ODMsMHgyOSwweEE5LAotICAg
IDB4OTIsMHhENSwweENGLDB4QkMsMHg3QywweDVDLDB4NUMsMHg1QywweDMxLDB4QzUsMHhBRSww
eEI0LDB4MEIsMHgyQiwweEI1LDB4RDcsCi0gICAgMHg5NiwweEVFLDB4NTEsMHhDRCwweDJELDB4
QUYsMHhCRCwweEY1LDB4RDcsMHhGNiwweEYzLDB4REQsMHgwMCwweDBBLDB4MEIsMHgyRCwKLSAg
ICAweEQ3LDB4RjYsMHg3NSwweEVFLDB4RUEsMHhGOCwweDU4LDB4RkEsMHg3NSwweEVFLDB4MzQs
MHhFNiwweEU4LDB4QzAsMHg3MCwweDc4LAotICAgIDB4MzUsMHhFRSwweDU0LDB4RTYsMHhFNSww
eDU3LDB4REYsMHg3NiwweDc2LDB4RUUsMHgzNSwweEU2LDB4RkIsMHhBRiwweEI2LDB4RkUsCi0g
ICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEZELDB4RkUsMHhFRSwweDJBLDB4RDYsMHhGNiwweEI2
LDB4RUUsMHhEQiwweEZGLDB4N0IsMHg2QSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUQs
MHhFRiwweEFELDB4M0YsMHhCNiwweEY2LDB4RDYsMHhFRSwweEZGLDB4RkYsMHhGRiwweEFGLAot
ICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBNiwweEVBLDB4RUEsMHhBQSwweEQ2LDB4RjYsMHhC
NiwweEVFLDB4RjIsMHhBRiwweEFBLDB4QTIsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEEx
LDB4OEUsMHhGRSwweEFBLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhFMiwweEEzLDB4ODIsMHhCQSwK
LSAgICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4QTIsMHg4QSwweEQ4LDB4OEEsMHhENiwweEY2LDB4
QjYsMHhFRSwweEVCLDB4QTIsMHg2OCwweEEyLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg2
RSwweEYyLDB4RTIsMHhFQiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4RjksMHhGRiwweDdBLDB4QUEs
Ci0gICAgMHhENiwweEY2LDB4OTYsMHhFRSwweEZGLDB4REYsMHhGQSwweEZBLDB4QjYsMHhGNiww
eDk2LDB4RUUsMHg5RiwweEFBLDB4OEIsMHhCQSwKLSAgICAweDk2LDB4RjYsMHhCNiwweEVFLDB4
QkYsMHhFRCwweEJCLDB4RkYsMHhCNiwweEY2LDB4OTYsMHhFRSwweDdFLDB4RkEsMHhDQSwweEE4
LAotICAgIDB4OTYsMHhGNiwweEI2LDB4RUUsMHg3RSwweDdGLDB4RjcsMHhGNywweEI2LDB4RUUs
MHg5NiwweEVFLDB4MjIsMHgyQSwweEFBLDB4QzIsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSww
eDhGLDB4MEIsMHgwMywweDJELDB4RjYsMHhGNiwweEI2LDB4RUUsMHhFRSwweEZBLDB4RkEsMHhG
RSwKLSAgICAweEQ2LDB4RjYsMHhCNywweEU2LDB4MjAsMHhBMiwweDBBLDB4ODAsMHhENiwweEY2
LDB4RjYsMHhFRSwweDA4LDB4MjgsMHgyMCwweDAyLAotICAgIDB4RjYsMHhGNiwweEI2LDB4RUUs
MHhFQiwweEFGLDB4QUYsMHhGRSwweEQ2LDB4RjYsMHhCNiwweEY2LDB4NzIsMHhEQSwweEJBLDB4
MjAsCi0gICAgMHhENiwweEY2LDB4QjIsMHhENSwweDYwLDB4NjAsMHg2MCwweEUwLDB4NkMsMHhB
QywweDgzLDB4NTEsMHg1RSwweDVDLDB4NUMsMHg1QywKLSAgICAweEE1LDB4NjEsMHgyMywweDUx
LDB4MkYsMHhCNywweDdGLDB4REEsMHg4NSwweDU5LDB4MjMsMHg1MSwweDZBLDB4RTgsMHhBQSww
eEI3LAotICAgIDB4ODUsMHg1OSwweDIzLDB4NTEsMHhGNSwweDc3LDB4NUMsMHhFRSwweEM2LDB4
NjEsMHgyNCwweDUxLDB4MEIsMHhBRiwweEVGLDB4NTcsCi0gICAgMHhBNiwweDYxLDB4NDQsMHg1
MSwweDg4LDB4RUIsMHg3RSwweDZCLDB4NjQsMHg1OSwweDAzLDB4NDksMHgyQSwweEZFLDB4REUs
MHhGRiwKLSAgICAweDQ0LDB4NTEsMHgwMywweDQ5LDB4MDAsMHhBRSwweDk2LDB4NTcsMHg4NSww
eDU5LDB4MjMsMHg0OSwweEFGLDB4MkYsMHhBRiwweEZELAotICAgIDB4RTUsMHg2MSwweDY1LDB4
NTEsMHgyQSwweDJGLDB4QUQsMHhBRCwweDg3LDB4N0EsMHhFNSwweDYxLDB4M0QsMHhFRCwweDM1
LDB4QjUsCi0gICAgMHg0QiwweDkzLDB4ODgsMHg3QSwweDJCLDB4MkQsMHgyRCwweDJELDB4RDMs
MHhERCwweDZBLDB4OTMsMHgyRCwweEJELDB4RjUsMHhENSwKLSAgICAweEI2LDB4RjYsMHgwRCww
eEE0LDB4MDAsMHgwMiwweDJGLDB4QjUsMHhENywweEZFLDB4RjQsMHhERCwweDAwLDB4MDAsMHhB
QSwweEY1LAotICAgIDB4RDcsMHhGNiwweEIyLDB4RDUsMHgwMCwweDgwLDB4RUEsMHg1RiwweEI2
LDB4RjYsMHg1MCwweENELDB4MDAsMHgwMCwweDBBLDB4RjUsCi0gICAgMHhENiwweEY2LDB4NTUs
MHhFRSwweDgwLDB4MjIsMHgyMiwweEJELDB4RDYsMHhGNiwweEI2LDB4RjYsMHhFRCwweDdGLDB4
N0EsMHg5RCwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEY2LDB4MkYsMHhBQiwweEJCLDB4NTUsMHhE
NiwweEY2LDB4QjYsMHhGNiwweEE4LDB4REUsMHhGRSwweEJGLAotICAgIDB4RDYsMHhGNiwweEI2
LDB4RjYsMHhBMywweDJCLDB4ODgsMHg2QSwweEY3LDB4RkUsMHhCNiwweEY2LDB4QTksMHhBNyww
eDNELDB4MEQsCi0gICAgMHhGNywweEZFLDB4RDcsMHhGNiwweDZGLDB4QkYsMHhFOCwweEZDLDB4
RjcsMHhGRSwweEQ3LDB4RjYsMHgyQSwweDJCLDB4Q0EsMHg2MCwKLSAgICAweEQ3LDB4RkUsMHg3
MiwweEQ1LDB4ODAsMHg4MCwweEUwLDB4N0EsMHgzNCwweEU2LDB4ODcsMHg3QSwweEEwLDB4RTgs
MHg2QSwweDdFLAotICAgIDB4OEIsMHg5QiwweDA1LDB4NzIsMHg1OCwweDVFLDB4NTcsMHg1NSww
eDQ2LDB4N0EsMHgwNSwweDcyLDB4QTcsMHhFRiwweEU4LDB4MDMsCi0gICAgMHg2NywweDgyLDB4
MjYsMHg3QSwweDJGLDB4MEQsMHgwNSwweDJELDB4ODcsMHg4QSwweDQ2LDB4ODIsMHgzOSwweDJF
LDB4QUYsMHhFMiwKLSAgICAweDg4LDB4OEEsMHgyNiwweDgyLDB4QTgsMHhFMiwweDUzLDB4N0Is
MHg2NywweDhBLDB4RTUsMHg3OSwweDc2LDB4RjAsMHhGRSwweEVGLAotICAgIDB4NDYsMHg4Miww
eEU0LDB4NzEsMHhFQiwweDZGLDB4Q0IsMHgwMywweEM4LDB4OTIsMHgyNSwweDdBLDB4REQsMHhG
NywweEJGLDB4MkYsCi0gICAgMHg1MiwweEQ1LDB4QTgsMHg4QSwweDM1LDB4MzUsMHgzRCwweDJE
LDB4RjgsMHhGRSwweEQzLDB4RTUsMHgyRCwweDBCLDB4MEIsMHgwMywKLSAgICAweDE3LDB4RkYs
MHhGOCwweEZFLDB4QjksMHhBOSwweEVGLDB4QkIsMHgzOCwweEZGLDB4RjcsMHhGNiwweEFCLDB4
QkIsMHhBRiwweDhGLAotICAgIDB4MTgsMHhGRiwweDM3LDB4RjcsMHhFQiwweEFBLDB4QkEsMHhB
QSwweDM4LDB4RkYsMHgxOCwweEZGLDB4NUUsMHg1QSwweERBLDB4QkYsCi0gICAgMHgxOCwweEZG
LDB4MzgsMHhGNywweDI4LDB4QTIsMHgyOCwweEFBLDB4MTgsMHhGRiwweEY3LDB4RjYsMHg3OCww
eDc4LDB4N0MsMHg3OCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RDYsMHhBQywweDJBLDB4
MDIsMHhGNywweEY2LDB4RDcsMHhGNiwweEY4LDB4RTgsMHgyQSwweEFFLAotICAgIDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHhFQSwweDYyLDB4OEEsMHhBQSwweEY3LDB4RjYsMHhENywweEY2LDB4MEUs
MHgzQSwweEVFLDB4RjYsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDgwLDB4MDAsMHhCQSww
eEJGLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBOCwweEZFLDB4QjgsMHhBQSwKLSAgICAweEY3LDB4
RjYsMHhENywweEY2LDB4MkMsMHhBQywweEFBLDB4MjgsMHgxNywweEZGLDB4RDcsMHhGNiwweEJG
LDB4MEIsMHgwQiwweDgyLAotICAgIDB4MTgsMHhGNywweEI2LDB4RjYsMHhFMCwweEY4LDB4Nzgs
MHg1RiwweEQ2LDB4RjYsMHg5NiwweEVFLDB4RkEsMHhGQSwweEVBLDB4RkYsCi0gICAgMHhCNiww
eEY2LDB4OTYsMHhFRSwweDJCLDB4QUYsMHhGNywweDVGLDB4QjYsMHhGNiwweDk2LDB4RUUsMHgz
OCwweEVGLDB4NUYsMHg3RCwKLSAgICAweEI3LDB4RjYsMHg1NSwweEU2LDB4RTgsMHhGQSwweDZF
LDB4NTcsMHg3NSwweEVFLDB4MTQsMHhFNiwweEU4LDB4RTIsMHhGQSwweDdGLAotICAgIDB4OTYs
MHhFRSwweEYzLDB4REQsMHg1QiwweEJGLDB4QUYsMHgwRiwweEQ3LDB4RkUsMHgzNCwweEU2LDB4
QjUsMHgyRiwweDAyLDB4MDIsCi0gICAgMHhGNywweEY2LDB4QjcsMHhGNiwweEZGLDB4RkEsMHhF
QSwweEE4LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1NSwweEVGLDB4OUQsMHgzRCwKLSAgICAweEY3
LDB4RjYsMHhENywweEY2LDB4NUYsMHg3NiwweDVGLDB4RkYsMHhGNywweEY2LDB4QjYsMHhFRSww
eERCLDB4QUIsMHhBRSwweEFFLAotICAgIDB4RDcsMHhGNiwweEY3LDB4RUUsMHgwMCwweDgyLDB4
QTIsMHgwOCwweEI3LDB4RjYsMHhGNywweEVFLDB4QUIsMHgyRiwweEFCLDB4MkEsCi0gICAgMHhG
NywweEY2LDB4QjcsMHhGNiwweDJBLDB4QkIsMHhFRiwweEZGLDB4RDcsMHhGNiwweEI2LDB4RUUs
MHg4MCwweEUwLDB4RjgsMHhGQywKLSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4NEUsMHhBQSww
eEFBLDB4MEEsMHhENywweEY2LDB4QjcsMHhFRSwweEFBLDB4QUUsMHhGQSwweDRBLAotICAgIDB4
RDcsMHhGNiwweEI2LDB4RUUsMHhFRiwweEZGLDB4RUYsMHhBMiwweEQ3LDB4RjYsMHhCNywweEVF
LDB4RkYsMHhBQSwweDgyLDB4MDAsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweDJBLDB4ODIs
MHhBOCwweEJBLDB4RDcsMHhGNiwweEI3LDB4RUUsMHhBOCwweDA4LDB4MDAsMHgwMCwKLSAgICAw
eEY3LDB4RjYsMHhCNiwweEVFLDB4RkYsMHhFQiwweEVBLDB4RUEsMHhENywweEY2LDB4QjYsMHhF
RSwweDg4LDB4QUMsMHgzRSwweEFBLAotICAgIDB4QjcsMHhGNiwweEY3LDB4RUUsMHhCQSwweEZB
LDB4QUUsMHhBRSwweEY3LDB4RjYsMHhENywweEVFLDB4RjUsMHhGRCwweEFGLDB4QTksCi0gICAg
MHhGNywweEY2LDB4RDcsMHhGNiwweEVELDB4QUQsMHhCRSwweEFFLDB4MTgsMHhGRiwweEQ3LDB4
RjYsMHgwQiwweDI5LDB4QUYsMHhBRiwKLSAgICAweDM4LDB4RkYsMHgxOCwweEY3LDB4MjMsMHgy
QiwweEFGLDB4QjUsMHgzOCwweEZGLDB4RjgsMHhGNiwweEU4LDB4RTgsMHhBMCwweEEyLAotICAg
IDB4MTgsMHhGNywweEQ3LDB4RjYsMHg3RSwweDVFLDB4NUUsMHg1MCwweEQ3LDB4RjYsMHhCNyww
eEVFLDB4RTgsMHg3MCwweDcyLDB4NUUsCi0gICAgMHhENywweEY2LDB4OTYsMHhFRSwweEZBLDB4
RkUsMHg3RiwweERGLDB4OTYsMHhFRSwweDk3LDB4RTYsMHgwMCwweDg4LDB4MjIsMHg4MCwKLSAg
ICAweDk2LDB4RUUsMHg3NiwweEU2LDB4MjAsMHgyMCwweDBCLDB4MDgsMHhENywweEY2LDB4OTYs
MHhFRSwweDJGLDB4MUQsMHhBNywweDNELAotICAgIDB4RDcsMHhGNiwweEY0LDB4REQsMHg2MCww
eDYwLDB4NjAsMHg2OCwweEYzLDB4RDUsMHhFRiwweEJDLDB4QkYsMHgyNywweEJGLDB4M0YsCi0g
ICAgMHhCNywweEY2LDB4MzQsMHhFNiwweDI5LDB4MDksMHgyQiwweDI5LDB4QjYsMHhGNiwweDc2
LDB4RUUsMHhFOCwweEE4LDB4RTIsMHg2QSwKLSAgICAweDU1LDB4RUUsMHg5MiwweEQ1LDB4NTgs
MHg1OCwweDU4LDB4RjgsMHhEMywweEQ1LDB4OTIsMHhDRCwweDU1LDB4N0IsMHg2QSwweDdFLAot
ICAgIDB4QjIsMHhENSwweDcxLDB4Q0QsMHgwRCwweDM1LDB4RjUsMHg5NywweEYzLDB4REQsMHhC
MiwweEQ1LDB4MEYsMHgwRCwweDBGLDB4MDEsCi0gICAgMHg5MiwweEQ1LDB4OEUsMHhCNCwweEQ4
LDB4RkMsMHg1OCwweDdDLDB4Q0YsMHhCQywweDRELDB4QTQsMHgyQSwweDBBLDB4MkIsMHgyNywK
LSAgICAweEQzLDB4REQsMHgxMCwweEM1LDB4MDksMHgyOSwweEE5LDB4QUQsMHg3NSwweEVFLDB4
RDMsMHhENSwweDJELDB4M0QsMHhCNSwweEY1LAotICAgIDB4QjYsMHhGNiwweDU1LDB4RTYsMHg4
QSwweEFBLDB4RUIsMHhCNSwweDc1LDB4RUUsMHgzNCwweEU2LDB4NjAsMHhGMCwweEUwLDB4MjIs
Ci0gICAgMHg1NSwweEU2LDB4MzQsMHhFNiwweDNCLDB4MjgsMHg0OCwweDVDLDB4NzUsMHhFRSww
eDM0LDB4RTYsMHhGNywweEY1LDB4QjUsMHhCNSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4
QUEsMHhBOCwweEFELDB4RUQsMHhENiwweEY2LDB4QjYsMHhFRSwweEZCLDB4QUYsMHhBQiwweEEy
LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGQywweEIwLDB4QUEsMHhGQSwweEQ2LDB4RjYs
MHhCNywweEVFLDB4RUEsMHhGQSwweEY4LDB4RTgsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSww
eEFCLDB4QUEsMHhBQSwweEFCLDB4RDYsMHhGNiwweEQ3LDB4RUUsMHhBQSwweDhBLDB4QTgsMHg4
QSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhFQSwweEUwLDB4MDIsMHhENiwweEY2
LDB4QjYsMHhFRSwweEVBLDB4MjEsMHhFRSwweEIyLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUs
MHhGRiwweEZFLDB4QkUsMHgyMiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4REEsMHg3NywweERFLDB4
OTAsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEU5LDB4QUIsMHhBQiwweDJCLDB4RDYsMHhG
NiwweEI2LDB4RUUsMHgyQSwweDNELDB4MDcsMHg1QSwKLSAgICAweEQ2LDB4RjYsMHg5NiwweEVF
LDB4RkUsMHhGRSwweEZFLDB4RkUsMHhCNiwweEY2LDB4OTYsMHhFRSwweERBLDB4QkEsMHg5RSww
eDdGLAotICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHhBRSwweEFFLDB4OEEsMHgyQiwweDk2LDB4
RjYsMHhCNiwweEVFLDB4QkYsMHhBQiwweEFGLDB4RjcsCi0gICAgMHg5NSwweEY2LDB4QjYsMHhF
RSwweEZELDB4RDUsMHg1NiwweDU3LDB4RDYsMHhGNiwweDk1LDB4RUUsMHhFQiwweEZGLDB4OUYs
MHgyRiwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4MkQsMHgyQiwweDBELDB4MkUsMHhENiww
eEY2LDB4RjcsMHhFRSwweDgwLDB4QTAsMHgwMCwweDI4LAotICAgIDB4RjYsMHhGNiwweEI2LDB4
RUUsMHhFMiwweEJBLDB4RUUsMHhGRiwweEY2LDB4RjYsMHhENiwweEY2LDB4NTYsMHhENSwweEZE
LDB4RkYsCi0gICAgMHhGNiwweEY2LDB4QjYsMHhFRSwweEJGLDB4QUUsMHhGRSwweEVBLDB4RjUs
MHhGRSwweEQ3LDB4RjYsMHg1NywweDU1LDB4RjUsMHg1RCwKLSAgICAweEQ3LDB4RjYsMHgzMyww
eEVFLDB4NjAsMHhFMCwweDgwLDB4QTAsMHhGMiwweERELDB4ODMsMHg1OSwweDVFLDB4NUMsMHg3
OCwweDc4LAotICAgIDB4ODQsMHg1MSwweDAzLDB4NDksMHhBMCwweDdFLDB4RkUsMHg3RSwweDY0
LDB4NTEsMHgwMywweDQ5LDB4M0UsMHhENywweEJCLDB4QkIsCi0gICAgMHg2NCwweDU5LDB4MjMs
MHg0OSwweEI4LDB4QkMsMHhGQiwweDdGLDB4NjMsMHg1MSwweDI0LDB4NTEsMHg1RSwweDdFLDB4
QkEsMHg1RiwKLSAgICAweDQ1LDB4NTEsMHgwNCwweDQ5LDB4MDIsMHhCNywweDU4LDB4NUQsMHgy
NCwweDUxLDB4RTMsMHg0MCwweDA4LDB4QUEsMHg3NywweDc3LAotICAgIDB4MjQsMHg0OSwweEMy
LDB4NDAsMHhBOCwweEFFLDB4MDksMHhCNywweDg1LDB4NTksMHgwMywweDQ5LDB4QkIsMHgwNyww
eDJELDB4QkQsCi0gICAgMHgwNiwweDZBLDB4NjQsMHg1OSwweEFCLDB4QUYsMHhBRiwweDJELDB4
QTgsMHg3QSwweEM1LDB4NjEsMHhCNSwweEFELDB4MkYsMHgyQiwKLSAgICAweDJBLDB4OEIsMHg4
OCwweDcyLDB4MkQsMHgyRiwweEJELDB4QUQsMHhBQiwweDlCLDB4MEEsMHg4QiwweDJCLDB4QUYs
MHhBOSwweEJELAotICAgIDB4NEUsMHhBQywweDZBLDB4OTMsMHgzRiwweERELDB4NTUsMHg1NSww
eDMxLDB4QzUsMHg2QiwweDkzLDB4MDIsMHhGRiwweDU1LDB4NTUsCi0gICAgMHgzMSwweEM1LDB4
NEEsMHg4QiwweEEwLDB4RkIsMHhGNywweDVELDB4MEYsMHhDNSwweDRBLDB4OEIsMHgyQSwweEFG
LDB4REYsMHg1NSwKLSAgICAweDM0LDB4RTYsMHg4QiwweDkzLDB4MDIsMHhCQiwweEY1LDB4NTUs
MHg3NSwweEVFLDB4OEEsMHg5MywweDAwLDB4OEEsMHhGRiwweDU1LAotICAgIDB4OTYsMHhGNiww
eDJDLDB4QTQsMHgwMCwweDAyLDB4QUYsMHg1NSwweDk2LDB4RjYsMHhDRiwweEJDLDB4MDAsMHgw
MCwweEFBLDB4NTUsCi0gICAgMHhCNiwweEY2LDB4Q0YsMHhCQywweDAwLDB4MjIsMHhGRSwweDU1
LDB4RDcsMHhGNiwweEYwLDB4QzQsMHgwMCwweDAyLDB4MkIsMHhCRCwKLSAgICAweEQ3LDB4RkUs
MHgxNCwweEU2LDB4MDAsMHgwMCwweDgyLDB4NTUsMHhCNywweEY2LDB4RDAsMHhDNCwweDAwLDB4
ODAsMHhBMCwweDdFLAotICAgIDB4MTUsMHhFNiwweEM5LDB4ODIsMHhBMCwweEU4LDB4N0EsMHg1
RiwweENDLDB4QTMsMHhFNSwweDY5LDB4NzgsMHg1RSwweDVGLDB4NzUsCi0gICAgMHgyNiwweDcy
LDB4QzQsMHg2OSwweERBLDB4OEEsMHgwOCwweEVBLDB4NDYsMHg4MiwweDA1LDB4NzIsMHg4Riww
eDgxLDB4OEIsMHhFQiwKLSAgICAweDg3LDB4OEEsMHg0NywweDgyLDB4QkQsMHgwMywweDI5LDB4
NzUsMHg4OCwweDhBLDB4MDUsMHg3QSwweEEwLDB4OTgsMHhCOCwweEYzLAotICAgIDB4NjcsMHg4
QSwweEU1LDB4NzksMHhFQSwweEFBLDB4RkUsMHhGNiwweDY3LDB4OEEsMHhFNSwweDc5LDB4QTcs
MHhBQiwweDI3LDB4MEYsCi0gICAgMHhBOCwweDkyLDB4MDUsMHg4MiwweEJELDB4RkYsMHgyQSww
eDJBLDB4MjksMHg5QiwweDY3LDB4ODIsMHhCNSwweEJGLDB4QUIsMHgyRiwKLSAgICAweEQzLDB4
RTUsMHgyOSwweDlCLDB4MjUsMHgzRCwweDJELDB4MkQsMHhGNywweEZFLDB4NTUsMHhFRSwweDAx
LDB4MDksMHgwMywweDAzLAotICAgIDB4MTgsMHhGRiwweEY4LDB4RkUsMHhBQiwweEFELDB4RkIs
MHhCQiwweDM4LDB4RkYsMHhGOCwweEY2LDB4QUYsMHhFRiwweEZGLDB4QUYsCi0gICAgMHgxOCww
eEZGLDB4MzgsMHhGNywweEEyLDB4QTAsMHgyMiwweEE4LDB4MzgsMHhGRiwweDE4LDB4RjcsMHhB
RiwweEZGLDB4QkUsMHhBRiwKLSAgICAweDM4LDB4RkYsMHgxOCwweEZGLDB4RkUsMHg3QSwweDdB
LDB4NkUsMHgxOCwweEZGLDB4RjcsMHhGNiwweDc4LDB4N0UsMHhEQSwweEVBLAotICAgIDB4MTcs
MHhGRiwweEY3LDB4RjYsMHhENywweDVELDB4NTUsMHg3RCwweEY3LDB4RjYsMHhENywweEY2LDB4
QTgsMHgwRSwweDJCLDB4ODgsCi0gICAgMHhGNywweEZFLDB4RjcsMHhGNiwweEZELDB4RDcsMHg3
RCwweERGLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg2MCwweEYwLDB4ODAsMHg4QiwKLSAgICAweEY3
LDB4RjYsMHhENywweEY2LDB4QUIsMHgwQSwweDJGLDB4MjYsMHhENywweEZFLDB4RjcsMHhGNiww
eERELDB4RDcsMHg1NywweEQ1LAotICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHg5NSwweDJELDB4
MkIsMHhDRiwweDE3LDB4RkYsMHhCNiwweEY2LDB4QTAsMHhFMCwweDdDLDB4N0UsCi0gICAgMHhE
NiwweEY2LDB4OTYsMHhFRSwweEZBLDB4RkEsMHhERSwweEZFLDB4QjYsMHhGNiwweDk2LDB4RUUs
MHhGRiwweEJGLDB4M0YsMHg3NywKLSAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4RkYsMHhBRiww
eEE5LDB4MkIsMHhCNiwweEY2LDB4MzUsMHhFNiwweEFBLDB4RTAsMHhGQSwweDc4LAotICAgIDB4
NTUsMHhFNiwweEQzLDB4REQsMHgyMCwweEUyLDB4RkEsMHg1QSwweDM1LDB4RTYsMHg5MywweENE
LDB4MjAsMHhBQSwweEI3LDB4MzcsCi0gICAgMHhENywweEZFLDB4NTUsMHhFNiwweEI1LDB4QTUs
MHhBRCwweDJCLDB4RDcsMHhGNiwweEI3LDB4RjYsMHgwMSwweDJELDB4MDgsMHgwMiwKLSAgICAw
eEY3LDB4RjYsMHhENywweEY2LDB4REYsMHhFRCwweDdELDB4RkIsMHhGNywweEY2LDB4RDcsMHhG
NiwweEFGLDB4RTMsMHhFRCwweDVCLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg2QSwweEVF
LDB4RkQsMHg1NSwweEY3LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhGRiwweEE2LDB4QUYsCi0gICAg
MHhGNywweEY2LDB4RDcsMHhGNiwweDc1LDB4NzcsMHg1NSwweEZELDB4RDcsMHhGNiwweEI2LDB4
RUUsMHhEOCwweEU4LDB4ODAsMHg4MCwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4M0IsMHhC
QiwweDdDLDB4RTAsMHhENywweEY2LDB4QjYsMHhFRSwweDdFLDB4RUYsMHgyQiwweDhBLAotICAg
IDB4RjcsMHhGNiwweEI3LDB4RUUsMHhBQiwweEVFLDB4RTIsMHhGQSwweEQ3LDB4RjYsMHhCNyww
eEVFLDB4QTgsMHg4MCwweDAyLDB4MDIsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweDgyLDB4
QkEsMHgzQSwweEZBLDB4RDcsMHhGNiwweEI3LDB4RUUsMHg4OCwweDJBLDB4RkEsMHhFQSwKLSAg
ICAweEQ3LDB4RjYsMHhCNywweEVFLDB4QUUsMHhBRiwweEVCLDB4N0QsMHhENywweEY2LDB4QjYs
MHhFRSwweDhBLDB4MjMsMHgwQSwweDVGLAotICAgIDB4RjcsMHhGNiwweEI3LDB4RUUsMHhFQSww
eEFCLDB4RkIsMHhGRiwweEQ3LDB4RjYsMHhCNywweEVFLDB4QUEsMHhCMiwweEE4LDB4MEEsCi0g
ICAgMHhENywweEY2LDB4RDcsMHhFRSwweEUyLDB4QTgsMHhBQSwweEFBLDB4RDcsMHhGNiwweEY3
LDB4RTYsMHg4OCwweDIwLDB4ODIsMHgyMCwKLSAgICAweEQ3LDB4RjYsMHhGNywweEVFLDB4QUEs
MHhBOCwweDgwLDB4MDAsMHgxOCwweEZGLDB4RDcsMHhGNiwweEJBLDB4QUYsMHhCRiwweEZELAot
ICAgIDB4MzgsMHhGRiwweEY3LDB4RjYsMHhBRiwweEJELDB4QjUsMHhENSwweDE4LDB4RkYsMHgz
OCwweEY3LDB4QUMsMHhBMiwweEE4LDB4ODAsCi0gICAgMHgzOCwweEZGLDB4RDcsMHhGNiwweDVB
LDB4N0EsMHg2OCwweEU4LDB4RDcsMHhGNiwweDk2LDB4RUUsMHg3QSwweDVBLDB4NUUsMHg1QywK
LSAgICAweDk2LDB4RUUsMHg3NiwweEU2LDB4MjAsMHgzOCwweEMwLDB4ODAsMHg5NiwweEVFLDB4
NzYsMHhFNiwweEYwLDB4MzgsMHg4MCwweEI5LAotICAgIDB4OTYsMHhFRSwweDc2LDB4RUUsMHgw
OCwweDIwLDB4QTgsMHg1RSwweEQ3LDB4RjYsMHg3NiwweEVFLDB4MkUsMHhBRiwweEJGLDB4QkQs
Ci0gICAgMHhCNywweEY2LDB4MTMsMHhERSwweDYwLDB4NDAsMHg2MCwweDQwLDB4RDIsMHhENSww
eDMwLDB4QzUsMHgxNywweDM3LDB4MzcsMHgzNywKLSAgICAweEI2LDB4RjYsMHgxNCwweERFLDB4
MDksMHgyOSwweDI5LDB4MkQsMHhCNiwweEY2LDB4NzYsMHhFRSwweEUyLDB4RTIsMHhFOCwweEEw
LAotICAgIDB4NzYsMHhFRSwweEQzLDB4RDUsMHg1QSwweDU4LDB4NTgsMHg3OCwweDkzLDB4RDUs
MHhEMiwweENELDB4QUIsMHhBQSwweEFFLDB4QkYsCi0gICAgMHhCMiwweEQ1LDB4NzIsMHhDRCww
eEJFLDB4QUUsMHhBQSwweEFCLDB4MTUsMHhERSwweEIzLDB4RDUsMHhBRiwweDNELDB4QTUsMHhB
NywKLSAgICAweEIzLDB4RDUsMHg0RCwweEFDLDB4NTgsMHg3OCwweDc4LDB4NzgsMHhDRSwweEJD
LDB4MkMsMHhBNCwweEJGLDB4QkYsMHhCRiwweDM1LAotICAgIDB4NzEsMHhDRCwweEVGLDB4QkMs
MHgwOSwweDJELDB4QUQsMHgwMywweEY0LDB4REQsMHg3MiwweENELDB4MkIsMHgyRCwweDNGLDB4
MkYsCi0gICAgMHg5NSwweEVFLDB4RjMsMHhERCwweDJCLDB4OEYsMHgyRiwweDI5LDB4OTYsMHhF
RSwweDU1LDB4RTYsMHhCRSwweDdFLDB4N0EsMHg1RSwKLSAgICAweDc1LDB4RUUsMHgzNSwweEU2
LDB4N0MsMHhGMiwweEVCLDB4RUIsMHg3NSwweEVFLDB4MzQsMHhFNiwweEFELDB4M0YsMHhCRiww
eDU2LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBRCwweEZBLDB4RkEsMHhFQSwweEQ2LDB4
RjYsMHhCNiwweEVFLDB4QkEsMHhBQiwweDlCLDB4NzIsCi0gICAgMHhENiwweEY2LDB4QjYsMHhF
RSwweEFBLDB4MkEsMHhBRSwweEY3LDB4RDcsMHhGNiwweEI2LDB4RUUsMHgyQSwweEE4LDB4Mzgs
MHgzNiwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4QkUsMHhCOCwweDA5LDB4MkIsMHhENiww
eEY2LDB4QjYsMHhFRSwweDhCLDB4QUEsMHgyMiwweDAwLAotICAgIDB4RDcsMHhGNiwweEY2LDB4
RUUsMHg4MCwweEEwLDB4ODgsMHgyMiwweEQ2LDB4RjYsMHhENywweEVFLDB4OEEsMHhBQSwweEEy
LDB4QUEsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDhBLDB4MEEsMHgyMiwweDAyLDB4RDYs
MHhGNiwweEY3LDB4RUUsMHgwMCwweDBBLDB4MjgsMHg4MiwKLSAgICAweEY3LDB4RjYsMHhCNiww
eEVFLDB4RkYsMHhFQiwweEVDLDB4RUEsMHhENiwweEY2LDB4QjYsMHhFRSwweDc2LDB4NUIsMHhG
RSwweEZFLAotICAgIDB4OTYsMHhGNiwweEI2LDB4RUUsMHhFRCwweEJELDB4RUQsMHhFNSwweEI2
LDB4RjYsMHg5NiwweEVFLDB4QUEsMHhCQSwweDJBLDB4ODIsCi0gICAgMHhCNiwweEY2LDB4OTYs
MHhFRSwweEFFLDB4RjgsMHhBQiwweDgxLDB4QjcsMHhGNiwweEI2LDB4RUUsMHg2QiwweEVBLDB4
RUUsMHhGRiwKLSAgICAweDk1LDB4RjYsMHhCNiwweEVFLDB4N0QsMHg1NywweDU1LDB4NTUsMHhE
NiwweEY2LDB4QjYsMHhFRSwweEI1LDB4RkYsMHhCRiwweEY3LAotICAgIDB4RDYsMHhGNiwweEY2
LDB4RUUsMHg4MCwweEE4LDB4QTAsMHg4MCwweEY3LDB4RjYsMHhENiwweEY2LDB4NzUsMHg3Qiww
eDVBLDB4N0EsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEEyLDB4MjgsMHhBMCwweDAwLDB4
RDYsMHhGNiwweEI2LDB4RUUsMHgwMiwweDAwLDB4MjgsMHhBMCwKLSAgICAweEY2LDB4RjYsMHhE
NiwweEY2LDB4NUYsMHg1RiwweEI2LDB4QjUsMHhENiwweEY2LDB4RDcsMHhFRSwweDBBLDB4Mjgs
MHgyQSwweEE4LAotICAgIDB4RjcsMHhGRSwweEI2LDB4RjYsMHg3RSwweEVBLDB4QUIsMHhEQSww
eDk1LDB4RUUsMHgyNiwweDYyLDB4NzgsMHg2MCwweEUwLDB4RTAsCi0gICAgMHg4NCwweDUxLDB4
MDMsMHg0MSwweDdGLDB4N0MsMHhENCwweDVDLDB4NjUsMHg1MSwweEUzLDB4NDAsMHgyQSwweDgz
LDB4QTIsMHhBOSwKLSAgICAweDQ0LDB4NTEsMHhFMiwweDQwLDB4QUUsMHgyNiwweEYwLDB4OEEs
MHg0NCwweDUxLDB4MDMsMHg0OSwweDRCLDB4N0EsMHg0RCwweEFCLAotICAgIDB4MjQsMHg0OSww
eDAzLDB4NDksMHg0OSwweEY0LDB4RkUsMHg3OCwweDI0LDB4NDksMHhDMiwweDM4LDB4RkEsMHhE
QSwweEYyLDB4RjgsCi0gICAgMHgyMywweDQxLDB4RTMsMHg0MCwweDc1LDB4ODUsMHg2OSwweEY1
LDB4NjQsMHg1MSwweEUyLDB4NDAsMHgwRiwweDBCLDB4MkYsMHgyNSwKLSAgICAweDI2LDB4NkEs
MHg2NCwweDUxLDB4MzUsMHgwRiwweDBGLDB4MjksMHhDOSwweDdBLDB4NjcsMHg3MiwweDJELDB4
MjksMHgyOSwweDBELAotICAgIDB4MDksMHg4MywweEE4LDB4N0EsMHhBRiwweEI5LDB4RjcsMHgy
RiwweDZBLDB4OTMsMHhFOSwweDgyLDB4MkIsMHgwOSwweEFELDB4QkYsCi0gICAgMHg2QiwweDkz
LDB4MDksMHg4QiwweDhBLDB4MEEsMHhGQiwweDdFLDB4NEEsMHg4QiwweEM5LDB4ODIsMHgyMCww
eEIyLDB4RkEsMHg3NywKLSAgICAweDRBLDB4OEIsMHhBOCwweDdBLDB4ODgsMHhGQywweDVGLDB4
NTcsMHgyOSwweDhCLDB4QTgsMHg3QSwweDA4LDB4RUEsMHhGRCwweDU1LAotICAgIDB4NkEsMHg5
MywweEM4LDB4N0EsMHgwRiwweEI3LDB4RDUsMHg1NSwweDhCLDB4OTMsMHhFOSwweDgyLDB4MDgs
MHhBRiwweEZGLDB4NzUsCi0gICAgMHhDQiwweDlCLDB4MDksMHg4QiwweDIwLDB4QUIsMHhBRiww
eEI1LDB4MkMsMHhBQywweDZBLDB4OTMsMHgyQSwweEFGLDB4QkQsMHg3RCwKLSAgICAweDJELDB4
QUMsMHhDQywweEEzLDB4MDIsMHhGRSwweEZGLDB4N0QsMHhGMCwweEM0LDB4OEIsMHg5QiwweDJC
LDB4QkYsMHhENSwweDU1LAotICAgIDB4MTAsMHhDRCwweEU4LDB4OEEsMHgwMCwweEVBLDB4RkYs
MHg3RiwweDZFLDB4QjQsMHg0NiwweDdBLDB4ODAsMHhGQSwweDdGLDB4NUYsCi0gICAgMHhFOSww
eDhBLDB4RTUsMHg2OSwweEY4LDB4N0UsMHg3RiwweDdGLDB4NjcsMHg3QSwweDA1LDB4NkEsMHg3
RiwweEE1LDB4QUYsMHhFQiwKLSAgICAweDQ3LDB4N0EsMHhFNSwweDcxLDB4NUEsMHg3OCwweDVB
LDB4N0UsMHgyNiwweDdBLDB4QzUsMHg3MSwweEIyLDB4MkYsMHhCRiwweEZELAotICAgIDB4NDYs
MHg4MiwweEU1LDB4NzEsMHgwQSwweDBCLDB4RUEsMHhGNSwweDQ3LDB4ODIsMHhFNSwweDc5LDB4
RjgsMHhFQiwweDZCLDB4QUIsCi0gICAgMHg2NywweDhBLDB4RTUsMHg3OSwweDlFLDB4QkIsMHgy
RCwweDJBLDB4QzksMHg5MiwweDQ2LDB4ODIsMHhGNSwweEJELDB4QkEsMHhBMiwKLSAgICAweEE4
LDB4OTIsMHg0NiwweDgyLDB4REYsMHgxNywweDJFLDB4ODgsMHg0QSwweDlCLDB4QzgsMHg5Miww
eEJELDB4QkQsMHhCRCwweDM1LAotICAgIDB4NzYsMHhGNiwweEFCLDB4QUIsMHgyRCwweDBELDB4
MkIsMHgwOSwweEY3LDB4RkUsMHhCNiwweEY2LDB4MDMsMHgwMywweDAwLDB4MDAsCi0gICAgMHgx
NywweEZGLDB4RjcsMHhGNiwweEVGLDB4RUYsMHhBQSwweEFCLDB4MzgsMHhGRiwweEY3LDB4RjYs
MHhFRiwweEFELDB4QUYsMHhCRiwKLSAgICAweDM4LDB4RkYsMHgxNywweEY3LDB4RkYsMHhCRCww
eEQ3LDB4RjUsMHgzNywweEZGLDB4MTgsMHhGNywweEJFLDB4QkYsMHhGRiwweEZGLAotICAgIDB4
MzgsMHhGRiwweDE3LDB4RjcsMHhGQSwweDZFLDB4RkUsMHhERiwweEY3LDB4RkUsMHgxOCwweEY3
LDB4RkQsMHg1RiwweEZGLDB4N0YsCi0gICAgMHgxNywweEY3LDB4RjcsMHhGNiwweDc3LDB4RjYs
MHg3RSwweEYyLDB4MTcsMHhGNywweEY3LDB4RjYsMHg1NSwweDc3LDB4NTYsMHg1NywKLSAgICAw
eDE3LDB4RkYsMHhGNywweEY2LDB4RDcsMHg3RiwweEY3LDB4NTUsMHgxOCwweEZGLDB4RDcsMHhG
NiwweEZCLDB4QUIsMHhFQSwweEZFLAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGRiwweEZC
LDB4QUIsMHgyQSwweDE4LDB4RkYsMHhGNywweEY2LDB4N0QsMHhBRiwweDBELDB4ODIsCi0gICAg
MHgxOCwweEZGLDB4OTUsMHhFRSwweEEwLDB4QTgsMHg3OCwweDU2LDB4RDYsMHhGNiwweDc0LDB4
RUUsMHhBMCwweEFBLDB4RkEsMHhGRCwKLSAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4MjIsMHg4
RiwweDJCLDB4QUEsMHhENiwweEY2LDB4OTcsMHhFRSwweDdFLDB4QkEsMHhBQiwweEJGLAotICAg
IDB4RDcsMHhGNiwweDc2LDB4RUUsMHg4RSwweEVBLDB4RkUsMHg3QiwweDk2LDB4RUUsMHgzNCww
eEU2LDB4RjgsMHg3QSwweDVFLDB4N0UsCi0gICAgMHg3NiwweEVFLDB4OTIsMHhENSwweDdFLDB4
NUUsMHhBRiwweDAyLDB4RjcsMHhGRSwweEIzLDB4RDUsMHhCNSwweDJGLDB4MEEsMHgyMiwKLSAg
ICAweEY3LDB4RkUsMHhCNywweEY2LDB4QkYsMHhBQiwweEFBLDB4QUEsMHhGNywweEY2LDB4RDcs
MHhGNiwweEZELDB4RDcsMHhERCwweDVGLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4Riww
eEFELDB4QjYsMHhGNywweEY3LDB4RjYsMHhENywweEY2LDB4NEUsMHg3QSwweDc4LDB4RjgsCi0g
ICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDc1LDB4NTcsMHg1RiwweERGLDB4RDcsMHhGNiwweEI3
LDB4RUUsMHgwMiwweEE4LDB4QTIsMHg4MCwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4MDAs
MHgwQSwweDJCLDB4RUUsMHhENywweEY2LDB4RjcsMHhFRSwweDAyLDB4MjAsMHhBMCwweDAwLAot
ICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhGRSwweEU4LDB4QUEsMHhCQSwweEQ3LDB4RjYsMHhC
NiwweEVFLDB4MDgsMHgwMiwweDAwLDB4QUMsCi0gICAgMHhGNywweEY2LDB4QjcsMHhFRSwweEYy
LDB4RkEsMHhFRiwweEJCLDB4RDcsMHhGNiwweEI3LDB4RUUsMHg4QSwweDBBLDB4QUEsMHhGQSwK
LSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4RUEsMHg2OCwweEZBLDB4QjIsMHhENywweEY2LDB4
QjYsMHhFRSwweDc3LDB4RkQsMHg3QiwweDdGLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHg2
RCwweEVELDB4QUQsMHhFQSwweEQ3LDB4RjYsMHhCNywweEVFLDB4N0YsMHhFOSwweEJGLDB4QkUs
Ci0gICAgMHhCNywweEY2LDB4RDcsMHhFRSwweEVFLDB4QUIsMHhGQSwweEY5LDB4RDcsMHhGNiww
eDk3LDB4RUUsMHg4QSwweEUyLDB4QUEsMHgwOCwKLSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4
ODgsMHhBMiwweDg4LDB4MDAsMHhENywweEY2LDB4RjcsMHhFRSwweDg4LDB4QTAsMHg4OCwweDAy
LAotICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHg3NSwweDhGLDB4QUYsMHhBQiwweDE4LDB4RkYs
MHhENywweEY2LDB4RTksMHhGQiwweEZBLDB4QUIsCi0gICAgMHgxOSwweEY3LDB4RjgsMHhGNiww
eEQ1LDB4RUQsMHhCNSwweDU3LDB4MzgsMHhGRiwweEY4LDB4RjYsMHhBRiwweEFCLDB4OUYsMHg3
NSwKLSAgICAweDM4LDB4RkYsMHhGOCwweEY2LDB4NzIsMHg2QSwweDdBLDB4RkIsMHhGOCwweEY2
LDB4NTYsMHhFNiwweEZFLDB4RUMsMHhGQywweEY4LAotICAgIDB4QjcsMHhFRSwweDc2LDB4RUUs
MHhGRiwweEZBLDB4RkUsMHhGQSwweDk2LDB4RUUsMHg3NiwweEU2LDB4RUYsMHhBRiwweEMwLDB4
QUEsCi0gICAgMHg5NiwweEVFLDB4NTUsMHhFNiwweEVBLDB4QUEsMHhFQiwweEY4LDB4QjcsMHhG
NiwweDc2LDB4RUUsMHgzRCwweDNELDB4MjUsMHhCNSwKLSAgICAweEI3LDB4RjYsMHgxMywweERF
LDB4NDAsMHg2MCwweDYwLDB4RTAsMHgxMywweERFLDB4MEYsMHhDNSwweEI1LDB4MzcsMHgzNyww
eEI3LAotICAgIDB4OTYsMHhFRSwweDE0LDB4REUsMHgwRCwweDJCLDB4MjksMHgwRiwweEI3LDB4
RjYsMHg5NiwweEVFLDB4QUEsMHhBQSwweDJBLDB4REEsCi0gICAgMHg3NiwweEVFLDB4RDMsMHhE
NSwweDYwLDB4RjgsMHg2MCwweEUwLDB4RDMsMHhERCwweEIzLDB4RDUsMHg2QSwweDgyLDB4RTIs
MHhCRiwKLSAgICAweEIzLDB4RDUsMHg5MiwweENELDB4RjYsMHgxNCwweEJDLDB4NzAsMHhGMyww
eERELDB4OTIsMHhDRCwweDJGLDB4QjcsMHhBRiwweEZGLAotICAgIDB4QjIsMHhENSwweDBDLDB4
OUMsMHhGOCwweDcwLDB4NzgsMHg3QSwweDcxLDB4Q0QsMHg0RCwweEFDLDB4QjUsMHgzNSwweDI1
LDB4MkQsCi0gICAgMHgxMywweERFLDB4NzEsMHhDRCwweEVELDB4QUYsMHhBQSwweEFCLDB4MzUs
MHhFNiwweEIzLDB4RDUsMHhFNSwweEZELDB4QUIsMHgyRSwKLSAgICAweDk2LDB4RUUsMHgxNCww
eEU2LDB4MkQsMHgwRCwweDBCLDB4QTksMHg5NiwweEVFLDB4NTUsMHhFNiwweDc4LDB4NUUsMHg3
RSwweDVBLAotICAgIDB4NTUsMHhFNiwweDM0LDB4RTYsMHgwNCwweDBDLDB4QjIsMHg3OSwweDU1
LDB4RTYsMHgzNCwweEU2LDB4QTIsMHgzRiwweEI5LDB4MzcsCi0gICAgMHhCNiwweEY2LDB4RDYs
MHhFRSwweEZGLDB4QUIsMHhDRiwweDZCLDB4RDYsMHhGNiwweEI3LDB4RUUsMHg4MiwweEFBLDB4
ODIsMHhFOCwKLSAgICAweEQ2LDB4RjYsMHhCNywweEVFLDB4QUEsMHhFQSwweDA4LDB4ODAsMHhE
NiwweEY2LDB4QjYsMHhFRSwweDNGLDB4QUIsMHhBQSwweEEyLAotICAgIDB4RDYsMHhGNiwweEI2
LDB4RUUsMHg4MiwweDgwLDB4RTAsMHg3MCwweEQ3LDB4RjYsMHhCNiwweEVFLDB4ODIsMHgwNyww
eEFFLDB4QUEsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDAyLDB4MDksMHgyQiwweEFBLDB4
RDYsMHhGNiwweEI2LDB4RTYsMHgwMCwweDg4LDB4MjAsMHgyQSwKLSAgICAweEQ2LDB4RjYsMHhG
OCwweEVFLDB4ODgsMHgwOCwweEEyLDB4MDgsMHhGNywweEY2LDB4QjYsMHhFRSwweEVBLDB4Q0Us
MHhCQiwweDZCLAotICAgIDB4RDcsMHhGNiwweEY2LDB4RUUsMHgwOCwweDIwLDB4MjAsMHgyQSww
eEI2LDB4RjYsMHhENywweEVFLDB4RUQsMHhGRiwweEI3LDB4RkQsCi0gICAgMHhENiwweEY2LDB4
QjYsMHhFRSwweDU3LDB4NUUsMHhERSwweDVFLDB4OTYsMHhGNiwweEI2LDB4RUUsMHhERCwweEZE
LDB4NTUsMHhENSwKLSAgICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4QUIsMHgyOSwweEJCLDB4QUIs
MHhENiwweEY2LDB4QjYsMHhFRSwweDVGLDB4RkUsMHhCRCwweEQ1LAotICAgIDB4RDcsMHhGNiww
eEI2LDB4RUUsMHhGNSwweEY3LDB4N0UsMHg1RCwweEQ2LDB4RjYsMHhCNiwweEVFLDB4REQsMHhF
QiwweEY5LDB4NUYsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDIyLDB4OEEsMHgyQSwweDAy
LDB4RDYsMHhGNiwweEY2LDB4RUUsMHhBQSwweDgwLDB4ODgsMHg4OCwKLSAgICAweEY3LDB4RjYs
MHhENiwweEY2LDB4NzcsMHhERCwweDc1LDB4RkYsMHhGNywweEY2LDB4QjUsMHhGNiwweEVBLDB4
QTgsMHgyQiwweEFGLAotICAgIDB4RjcsMHhGNiwweEQ2LDB4RjYsMHhGNSwweDdGLDB4NkUsMHg2
QSwweEY3LDB4RjYsMHhENywweEY2LDB4NUYsMHhCQiwweEJGLDB4RkQsCi0gICAgMHhCNiwweEZF
LDB4RjcsMHhGNiwweEFFLDB4QUQsMHhCRiwweEVGLDB4QjYsMHhGNiwweDhFLDB4QUMsMHg2MCww
eDYwLDB4QzAsMHhDMCwKLSAgICAweENDLDB4OUIsMHgwMiwweDQxLDB4NTcsMHg1NiwweDVFLDB4
NUMsMHg2NCwweDUxLDB4RTIsMHgzOCwweEFGLDB4MzksMHhBQSwweEFELAotICAgIDB4NjQsMHg1
MSwweDIzLDB4NDksMHhBRiwweEUyLDB4RkYsMHg3NywweDIzLDB4NDksMHhFMiwweDQwLDB4Mjgs
MHg4OCwweDY4LDB4NjIsCi0gICAgMHgyNCwweDQ5LDB4RTIsMHg0MCwweDc4LDB4NkUsMHg3QSww
eEZCLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBRiwweEE3LDB4REYsMHg5QSwKLSAgICAweDIzLDB4
NDksMHhDMiwweDM4LDB4RjcsMHhCNywweEJELDB4MkYsMHg4NCwweDUxLDB4MDMsMHg0MSwweEE1
LDB4QUYsMHhBNSwweDI3LAotICAgIDB4MDYsMHg2QSwweDg0LDB4NTEsMHgwRiwweEFELDB4QUQs
MHgyRCwweEE4LDB4N0EsMHgwNiwweDYyLDB4MjMsMHgwRCwweDI3LDB4QkQsCi0gICAgMHgyQSww
eDhCLDB4ODcsMHg3MiwweDJCLDB4MjksMHgzRCwweEFELDB4NEEsMHg5MywweEU5LDB4ODIsMHgy
QSwweDg4LDB4N0EsMHhEMiwKLSAgICAweDRBLDB4OTMsMHhBOCwweDdBLDB4RUMsMHhGRSwweDVG
LDB4NUYsMHhBOCwweDdBLDB4ODgsMHg3MiwweEUwLDB4NTIsMHhDMCwweDIzLAotICAgIDB4QTgs
MHg3QSwweDQ3LDB4NkEsMHg4MiwweEVDLDB4N0EsMHhFOCwweEM4LDB4N0EsMHg0NywweDZBLDB4
OEEsMHhFRiwweEJELDB4RjcsCi0gICAgMHhDOSwweDdBLDB4NjcsMHg3MiwweDNBLDB4RkUsMHhE
RSwweEI3LDB4RTksMHg4MiwweDg3LDB4NzIsMHgwMywweEFELDB4RTUsMHhERiwKLSAgICAweDZB
LDB4OTMsMHhBOCwweDdBLDB4MkIsMHgyRiwweDJELDB4MkQsMHg4QSwweDlCLDB4NEEsMHg5Myww
eDJBLDB4QUIsMHhCNSwweEJGLAotICAgIDB4Q0MsMHhBMywweDZBLDB4OTMsMHg4MywweDhCLDB4
RUYsMHg3RCwweDZCLDB4OUIsMHhDOCwweDgyLDB4QTgsMHg2OCwweDc4LDB4N0UsCi0gICAgMHgw
OSwweDkzLDB4MjYsMHg3MiwweDgwLDB4RTgsMHhGQSwweDdFLDB4NjYsMHg3QSwweEM0LDB4Njks
MHhBOCwweEZDLDB4N0UsMHg1RiwKLSAgICAweDQ3LDB4N0EsMHhBMywweDYxLDB4QUEsMHhBRiww
eEI1LDB4MjcsMHg4OCwweDgyLDB4MjcsMHg3MiwweDZELDB4RUYsMHhFQiwweDJGLAotICAgIDB4
NDcsMHg3QSwweEM1LDB4NjksMHhGQSwweEZDLDB4NUEsMHg3OCwweDA2LDB4N0EsMHhDNSwweDcx
LDB4QTksMHhBRSwweERGLDB4RDUsCi0gICAgMHgwNiwweDdBLDB4QzUsMHg3MSwweDlFLDB4QUYs
MHgzRiwweEJFLDB4NDcsMHg4QSwweEU2LDB4NzksMHhBRiwweDI5LDB4QUQsMHgyQiwKLSAgICAw
eDg3LDB4OEEsMHgyNiwweDgyLDB4QUQsMHhBNSwweEFELDB4QUIsMHhDOCwweDkyLDB4NjcsMHg4
QSwweEYwLDB4NjksMHhGQywweDVELAotICAgIDB4MkEsMHhBMywweDg4LDB4OEEsMHhGRCwweEJE
LDB4QUQsMHgzRCwweDRBLDB4QTMsMHhDOCwweDkyLDB4MkQsMHg4QSwweDgyLDB4MkEsCi0gICAg
MHhCNiwweEY2LDB4QUMsMHhBQiwweDA5LDB4MEQsMHgyRCwweDJELDB4RDcsMHhGRSwweDE4LDB4
RjcsMHhBQSwweEFFLDB4RUUsMHhCQywKLSAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4QUIsMHgy
QiwweEFCLDB4QTMsMHgxNywweEZGLDB4RjgsMHhGNiwweDJBLDB4MEEsMHg4QSwweDJBLAotICAg
IDB4MTcsMHhGRiwweDM5LDB4RjcsMHhBMiwweDg4LDB4QjAsMHhBOCwweDM3LDB4RkYsMHgxOCww
eEY3LDB4RkIsMHhGRCwweEY3LDB4RkYsCi0gICAgMHgzOCwweEZGLDB4MTcsMHhGNywweDc3LDB4
NTcsMHhERCwweDdCLDB4MzgsMHhGRiwweDE3LDB4RjcsMHg3RiwweERELDB4N0YsMHhGRiwKLSAg
ICAweDE3LDB4RkYsMHgzOCwweEY3LDB4MEEsMHgwOCwweEEyLDB4QUUsMHgxNywweEZGLDB4Rjcs
MHhGNiwweDc2LDB4N0YsMHhBQSwweEE4LAotICAgIDB4MTcsMHhGRiwweEQ3LDB4RjYsMHhCRiww
eEJGLDB4QjIsMHhBMCwweDE3LDB4RkYsMHhGNywweEY2LDB4NzcsMHhBNywweEFFLDB4MDgsCi0g
ICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweEFCLDB4MEIsMHgwQSwweEEwLDB4MTgsMHhGRiwweEI2
LDB4RUUsMHg2MCwweDc4LDB4NTgsMHg1RSwKLSAgICAweEI2LDB4RUUsMHg3NSwweEVFLDB4N0Us
MHhENywweEJGLDB4OEEsMHg5NiwweEY2LDB4NzUsMHhFNiwweEI1LDB4RkQsMHhGRSwweDg4LAot
ICAgIDB4QjYsMHhGNiwweDc1LDB4RUUsMHhBQiwweEFELDB4RjUsMHg3RiwweEI2LDB4RjYsMHg1
NSwweEVFLDB4MkEsMHhBQSwweEVGLDB4REYsCi0gICAgMHg5NiwweEVFLDB4NzUsMHhFRSwweDQw
LDB4MjgsMHg2NiwweDVELDB4QjYsMHhGNiwweDU0LDB4RTYsMHhCRiwweDJGLDB4RUYsMHg3NSwK
LSAgICAweEQ3LDB4RjYsMHg1NCwweEU2LDB4MDIsMHgwMiwweEJBLDB4RDUsMHhGNywweEZFLDB4
NzYsMHhFRSwweDAyLDB4MjIsMHhBRiwweERELAotICAgIDB4RjcsMHhGRSwweEQ3LDB4RjYsMHhB
QSwweEFBLDB4M0YsMHg5NSwweEY3LDB4RjYsMHhENywweEY2LDB4N0EsMHhFMiwweDhBLDB4QTgs
Ci0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDhGLDB4ODUsMHhCNywweEU3LDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHhGQSwweERFLDB4RDYsMHhGRSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4
NUIsMHg1QSwweEZBLDB4MDAsMHhGNywweEY2LDB4RDcsMHhGNiwweDc1LDB4N0IsMHg1RSwweEU0
LAotICAgIDB4RjcsMHhGNiwweEI3LDB4RjYsMHhGRiwweEVGLDB4QUIsMHgwOCwweEQ3LDB4RjYs
MHhCNywweEVFLDB4MEEsMHgwMiwweDBBLDB4MDAsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSww
eEE4LDB4QTAsMHgyOCwweDAwLDB4RDcsMHhGNiwweEI3LDB4RUUsMHg3QywweEJFLDB4RUEsMHgw
MCwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4MjgsMHgzRSwweDdBLDB4NUEsMHhENywweEY2
LDB4QjcsMHhFRSwweEY4LDB4QUEsMHhFQSwweEZFLAotICAgIDB4RDcsMHhGNiwweEI3LDB4RUUs
MHhBQSwweEFCLDB4QTUsMHhFRSwweEQ3LDB4RjYsMHhCNywweEVFLDB4RjcsMHgyRiwweEFFLDB4
QUEsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweDNBLDB4QkUsMHhBQSwweEJFLDB4RDcsMHhG
NiwweEI3LDB4RUUsMHhBMywweEE2LDB4RkUsMHhBQywKLSAgICAweEY3LDB4RjYsMHhCNywweEY2
LDB4RkYsMHhGRSwweEZGLDB4Q0IsMHhGOCwweEY2LDB4OTcsMHhFRSwweEFFLDB4MkEsMHgyQSww
eDBBLAotICAgIDB4RjgsMHhGNiwweEI3LDB4RjYsMHhBRiwweEFFLDB4QkEsMHgwQSwweEY4LDB4
RjYsMHhENywweEY2LDB4REQsMHhCRCwweDJBLDB4MjgsCi0gICAgMHhGOCwweEY2LDB4RDcsMHhG
NiwweEVBLDB4QUUsMHhBQSwweDNBLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHgwMCwweDA4LDB4QUEs
MHgyMiwKLSAgICAweEY4LDB4RjYsMHhEOCwweEY2LDB4MDAsMHgyOCwweEJFLDB4QUEsMHhENyww
eEZFLDB4RjgsMHhGNiwweDU1LDB4NzcsMHg1RCwweDdGLAotICAgIDB4MTgsMHhGRiwweEY4LDB4
RjYsMHgyQSwweDJBLDB4MkYsMHgyRCwweDE4LDB4RkYsMHg3NiwweEU2LDB4NTgsMHg3QSwweEY4
LDB4RjgsCi0gICAgMHg5NiwweEVFLDB4NTUsMHhFNiwweDgwLDB4MkEsMHhCNiwweEJBLDB4OTYs
MHhFRSwweDc2LDB4RTYsMHhCMiwweEVGLDB4MzcsMHhBMywKLSAgICAweDk2LDB4RUUsMHg3Niww
eEVFLDB4NUMsMHhENywweEJFLDB4RjYsMHhCNiwweEY2LDB4NzYsMHhFRSwweEI1LDB4M0YsMHhB
OSwweEJELAotICAgIDB4QjcsMHhGNiwweEYzLDB4REQsMHhDOCwweDYwLDB4NjAsMHg2MCwweEQz
LDB4RDUsMHhGMCwweEJDLDB4M0UsMHgyRiwweDM3LDB4M0YsCi0gICAgMHg5NiwweEVFLDB4RjQs
MHhERCwweDJCLDB4MEQsMHgwQiwweDI5LDB4QjYsMHhGNiwweDk2LDB4RUUsMHg3RiwweEY2LDB4
NzgsMHhGQiwKLSAgICAweDk2LDB4RUUsMHgxNCwweERFLDB4NzgsMHg3OCwweDc4LDB4NjgsMHhC
MywweEQ1LDB4NTEsMHhDNSwweDAwLDB4QjgsMHg3QywweDdFLAotICAgIDB4QjMsMHhENSwweDcx
LDB4Q0QsMHhBMCwweEZBLDB4NzUsMHg1NSwweEIyLDB4Q0QsMHg1MSwweEM1LDB4QUEsMHg4QSww
eEFBLDB4RUQsCi0gICAgMHg3MiwweENELDB4MEMsMHhBNCwweDc4LDB4NzgsMHg3OCwweEY4LDB4
QjMsMHhENSwweDhFLDB4QUMsMHgyRCwweDJELDB4MjksMHgwOSwKLSAgICAweDE0LDB4REUsMHhC
MiwweEQ1LDB4QUQsMHgyRiwweEI3LDB4QjUsMHg1NSwweEVFLDB4RjMsMHhERCwweEJGLDB4QkYs
MHhBRiwweDM3LAotICAgIDB4OTYsMHhFRSwweDM0LDB4RTYsMHgyRiwweEFELDB4QkYsMHgyRiww
eDk2LDB4RUUsMHg1NSwweEU2LDB4NzgsMHhGQSwweEE4LDB4N0EsCi0gICAgMHg1NSwweEU2LDB4
MTQsMHhFNiwweEUwLDB4MDgsMHhBOCwweDgwLDB4NTUsMHhFNiwweDM1LDB4RTYsMHgzRiwweDlF
LDB4REIsMHgyMywKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUYsMHhFQSwweEFBLDB4QUEs
MHhENywweEY2LDB4QjYsMHhFRSwweEJBLDB4RTgsMHhCRSwweEJBLAotICAgIDB4QjcsMHhGNiww
eEQ2LDB4RUUsMHhCRiwweEZGLDB4QjcsMHgxRiwweEQ3LDB4RjYsMHhCNiwweEVFLDB4QTIsMHhC
MywweDJBLDB4QkIsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweEEyLDB4MEEsMHg4MiwweDAy
LDB4RDYsMHhGNiwweEQ3LDB4RUUsMHhBQSwweEFBLDB4QTIsMHhBQSwKLSAgICAweEQ2LDB4RjYs
MHhCNiwweEVFLDB4MjEsMHhDQiwweDBBLDB4QUEsMHhENiwweEY2LDB4QjYsMHhFRSwweEEyLDB4
QTgsMHgyQSwweDAyLAotICAgIDB4RDcsMHhGNiwweEQ2LDB4RUUsMHhBMiwweEFCLDB4MkEsMHhB
OCwweEY3LDB4RjYsMHhCNiwweEVFLDB4QkYsMHhBRSwweEFCLDB4QUYsCi0gICAgMHhGNywweEY2
LDB4RDcsMHhGNiwweEZELDB4RjUsMHhENywweDVFLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhGQSww
eEVBLDB4RUUsMHhFQSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4NUUsMHg1RSwweDVGLDB4
RkYsMHhENiwweEY2LDB4OTYsMHhFRSwweEZFLDB4RUYsMHhBQSwweEZBLAotICAgIDB4RDYsMHhG
NiwweDk1LDB4RUUsMHhBRiwweEI3LDB4RkYsMHhGRiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4RkQs
MHg1RiwweEZGLDB4N0QsCi0gICAgMHhCNywweEY2LDB4QjYsMHhFRSwweEZELDB4RkYsMHhENyww
eEZGLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhCRCwweEI3LDB4RDUsMHhCNSwKLSAgICAweEQ2LDB4
RjYsMHhGOCwweEVFLDB4QTAsMHg4OCwweDIwLDB4MDgsMHhENywweEY2LDB4RjYsMHhFRSwweDAy
LDB4QTgsMHgyQSwweDgwLAotICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhCRSwweEFGLDB4RUIs
MHg4QSwweEY3LDB4RjYsMHhCNiwweEVFLDB4QjYsMHhBQiwweEJBLDB4QUIsCi0gICAgMHhENiww
eEY2LDB4RjgsMHhFRSwweDIwLDB4ODgsMHgyMCwweDAwLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhG
RCwweEVGLDB4RjUsMHg1NSwKLSAgICAweEY3LDB4RjYsMHhCNiwweEY2LDB4QkEsMHhGQSwweEY4
LDB4RkUsMHhCNywweEY2LDB4MTQsMHhERSwweDQwLDB4QzAsMHhDMCwweDAwLAotICAgIDB4NTEs
MHhDNSwweDQzLDB4NDksMHg1RSwweDVDLDB4NUMsMHg1OCwweDIzLDB4NDEsMHhFMiwweDQwLDB4
MDEsMHgyRCwweERELDB4RUYsCi0gICAgMHg0MywweDQ5LDB4MDMsMHg0MSwweEI4LDB4MkEsMHgy
RiwweDBELDB4NjQsMHg1MSwweDIzLDB4NDEsMHg1RCwweEFCLDB4MkUsMHhCQiwKLSAgICAweDQ0
LDB4NDksMHgwMywweDQxLDB4NTcsMHhEOCwweDcwLDB4NzAsMHg0NCwweDQ5LDB4RTIsMHgzOCww
eEY3LDB4RjcsMHhCRiwweDJFLAotICAgIDB4NjQsMHg1MSwweDAzLDB4NDEsMHhENywweEI3LDB4
MEYsMHgwMiwweEU1LDB4NTksMHg0MywweDQ5LDB4QjUsMHgyRiwweDA1LDB4QUQsCi0gICAgMHg0
NywweDZBLDB4QTQsMHg1OSwweEFELDB4MkIsMHgyQiwweDBBLDB4ODgsMHg3MiwweDI2LDB4NkEs
MHgyOSwweDhGLDB4QUYsMHhDMywKLSAgICAweEM4LDB4N0EsMHg2NywweDcyLDB4MDMsMHhBQSww
eDJCLDB4QzksMHgwOSwweDgzLDB4QTgsMHg3QSwweDgyLDB4ODMsMHhFRCwweDVELAotICAgIDB4
QzksMHg4MiwweDQ3LDB4NzIsMHhGOCwweEUyLDB4RUEsMHg3QiwweEE4LDB4N0EsMHg0NywweDZB
LDB4MkUsMHhGQSwweERGLDB4OUYsCi0gICAgMHhBOCwweDdBLDB4NDcsMHg2QSwweEUyLDB4RkEs
MHg1RiwweDU3LDB4ODcsMHg3MiwweDI2LDB4NkEsMHhBOCwweEI2LDB4MEEsMHg4RSwKLSAgICAw
eDY3LDB4NzIsMHgyNiwweDZBLDB4M0MsMHhGNywweEIwLDB4MjAsMHhDOCwweDdBLDB4MjYsMHg2
QSwweEFBLDB4QTMsMHhBOSwweEZCLAotICAgIDB4NEEsMHg5MywweDg3LDB4NzIsMHgyRiwweEFG
LDB4RTUsMHg3RCwweDZCLDB4OUIsMHhDOCwweDgyLDB4MEEsMHg4QiwweEFGLDB4RkQsCi0gICAg
MHg4QiwweDlCLDB4MDksMHg4QiwweENBLDB4OEIsMHhFQSwweEZELDB4MjksMHg4QiwweEM4LDB4
ODIsMHhEOCwweEY4LDB4NzgsMHg2MCwKLSAgICAweEM4LDB4ODIsMHhFNiwweDY5LDB4RjgsMHhF
OCwweEY4LDB4NUEsMHgwNSwweDZBLDB4QTQsMHg2MSwweEY4LDB4REUsMHhEQSwweEZBLAotICAg
IDB4NDcsMHg3MiwweEM0LDB4NjksMHhCNSwweEJGLDB4QjksMHgyNSwweDg4LDB4ODIsMHgyNyww
eDcyLDB4QUIsMHhBQSwweDJCLDB4RTUsCi0gICAgMHg0NywweDdBLDB4ODQsMHg2OSwweEYwLDB4
NjAsMHhFMCwweEU4LDB4QzUsMHg3MSwweDY0LDB4NjEsMHgyOCwweDJFLDB4QjUsMHhGNSwKLSAg
ICAweDA2LDB4ODIsMHhBNSwweDY5LDB4QUYsMHhCRiwweEJELDB4QkYsMHg2NywweDhBLDB4RTYs
MHg3OSwweEFELDB4QTcsMHgyRiwweEFFLAotICAgIDB4ODcsMHg4QSwweDQ2LDB4ODIsMHg0Riww
eEU3LDB4NzcsMHg1RCwweDg3LDB4OEEsMHgyNiwweDgyLDB4MjgsMHhCQSwweEI3LDB4NTUsCi0g
ICAgMHhFOCwweDkyLDB4NDYsMHg4MiwweDJELDB4QjUsMHhCRiwweEZGLDB4NkEsMHhBMywweEE4
LDB4OEEsMHgyQiwweEE5LDB4QUQsMHgyNSwKLSAgICAweDk2LDB4RjYsMHg4QSwweEEzLDB4MkQs
MHgyRCwweDJELDB4MkQsMHhENywweEZFLDB4MTcsMHhGNywweEY4LDB4RTgsMHhGOCwweEVBLAot
ICAgIDB4MTcsMHhGRiwweEY3LDB4RjYsMHhBQSwweEEyLDB4QUEsMHgwQiwweDE4LDB4RkYsMHhG
NywweEY2LDB4OEEsMHgwMiwweDBBLDB4MkEsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhFRSwweDhB
LDB4OEEsMHgwMCwweDgwLDB4MzgsMHhGRiwweDE3LDB4RjcsMHhCNywweEVELDB4RUYsMHhGRCwK
LSAgICAweDE4LDB4RkYsMHgzOCwweEY3LDB4RUUsMHhBRiwweEFFLDB4QTgsMHgzNywweEZGLDB4
MTgsMHhGNywweEJFLDB4QUYsMHhEQiwweEJGLAotICAgIDB4MzgsMHhGRiwweDE4LDB4RkYsMHhB
QSwweEVBLDB4OEEsMHg4QiwweDM4LDB4RkYsMHgxOCwweEY3LDB4RkYsMHhBQiwweEE4LDB4QTgs
Ci0gICAgMHgxOCwweEZGLDB4MzcsMHhGNywweDBBLDB4MkEsMHgwQSwweDAyLDB4MTgsMHhGRiww
eDM3LDB4RjcsMHgwOCwweDIwLDB4QjAsMHgyMCwKLSAgICAweDE4LDB4RkYsMHhCNiwweEVFLDB4
QTAsMHhFOCwweDc4LDB4N0EsMHhENywweEY2LDB4OTYsMHhFRSwweEQ4LDB4NUUsMHhGRiwweEVF
LAotICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHhBRiwweEZFLDB4RkUsMHhBMCwweEI2LDB4RjYs
MHg5NiwweEVFLDB4RUEsMHhFQiwweEVBLDB4RkIsCi0gICAgMHg5NiwweEVFLDB4NTQsMHhFRSww
eEUwLDB4QzAsMHhDMCwweEMwLDB4NTQsMHhFNiwweDcxLDB4Q0QsMHgwMCwweDgwLDB4QTgsMHg3
OCwKLSAgICAweDU1LDB4RUUsMHgxMCwweEM1LDB4MDAsMHhBQSwweEZCLDB4NTcsMHgxNCwweEU2
LDB4NzEsMHhDRCwweDgwLDB4RUEsMHhGRCwweDA5LAotICAgIDB4RjMsMHhERCwweDEwLDB4QzUs
MHgwMCwweEZFLDB4N0UsMHhBOCwweDU1LDB4RTYsMHgzMSwweEM1LDB4MDAsMHgwRiwweEJELDB4
RjcsCi0gICAgMHhENywweEZFLDB4MTQsMHhERSwweDAyLDB4MkIsMHgyRiwweEFELDB4RjcsMHhG
NiwweDk2LDB4RjYsMHg4MiwweDJBLDB4QUEsMHhBQiwKLSAgICAweEY3LDB4RjYsMHhENywweEY2
LDB4QTcsMHhCRCwweEVELDB4QTYsMHhGNywweEY2LDB4RDcsMHhGNiwweEFCLDB4MjEsMHg4OSww
eEEyLAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhCRSwweEVBLDB4RkIsMHhGQiwweEQ3LDB4
RkUsMHhGNywweEY2LDB4RkQsMHg1RCwweEY1LDB4RjcsCi0gICAgMHhGNywweEY2LDB4RDcsMHhG
NiwweEE4LDB4NUUsMHg1NSwweEZGLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1NSwweEQ1LDB4QUIs
MHhBQSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NUYsMHhGQiwweDdGLDB4QkMsMHhENyww
eEY2LDB4RjcsMHhFRSwweDIwLDB4MDgsMHgwMCwweDIyLAotICAgIDB4RDcsMHhGNiwweEI3LDB4
RUUsMHhCOCwweEE4LDB4QzgsMHg0MiwweEQ3LDB4RjYsMHhCNiwweEVFLDB4QTQsMHgyMiwweEJG
LDB4RkQsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweEVFLDB4MkEsMHg4QSwweDAyLDB4QjYs
MHhGNiwweEY3LDB4RUUsMHhBQSwweEFBLDB4QkIsMHhGQSwKLSAgICAweEY3LDB4RjYsMHhCNiww
eEVFLDB4REYsMHhGRiwweEFGLDB4QUIsMHhGNywweEY2LDB4QjcsMHhFRSwweEFGLDB4QTksMHgy
RiwweEE4LAotICAgIDB4RjcsMHhGNiwweEQ4LDB4RjYsMHg4RiwweDhBLDB4QTgsMHhBMCwweEY4
LDB4RjYsMHhENywweEY2LDB4QTIsMHhGOCwweERFLDB4RUEsCi0gICAgMHhGOCwweEY2LDB4RDcs
MHhGNiwweEJBLDB4QUIsMHgzRSwweDhBLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBRiwweEFCLDB4
RkUsMHhCRiwKLSAgICAweEY3LDB4RkUsMHhGOCwweEY2LDB4RjcsMHhGRCwweEQ3LDB4N0YsMHgx
OCwweEZGLDB4RDcsMHhGNiwweEVFLDB4QUEsMHhFRSwweDdGLAotICAgIDB4RjcsMHhGNiwweEI4
LDB4RjYsMHhBMiwweEFFLDB4QUEsMHhFQiwweEY4LDB4RjYsMHhENywweEY2LDB4RkYsMHhERSww
eDVELDB4NTUsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweDJCLDB4M0YsMHhCRCwweEJGLDB4
MTgsMHhGRiwweEI2LDB4RUUsMHg1OCwweDc4LDB4RkEsMHhGQSwKLSAgICAweEI2LDB4RUUsMHg3
NiwweEU2LDB4NTcsMHg1NywweEZFLDB4RkMsMHg3NiwweEVFLDB4OTYsMHhFNiwweDJGLDB4OEIs
MHhBQSwweDI4LAotICAgIDB4OTYsMHhFRSwweDc2LDB4RUUsMHg5QiwweEEyLDB4RkIsMHhGRCww
eDk2LDB4RUUsMHg3NiwweEVFLDB4MEQsMHgyQiwweDJELDB4M0YsCi0gICAgMHhCNiwweEY2LDB4
RjQsMHhERCwweDYwLDB4NjAsMHg2OCwweDYyLDB4RDMsMHhENSwweEYwLDB4QkMsMHgzNywweDNG
LDB4MkYsMHgyRSwKLSAgICAweDk2LDB4RjYsMHgxNCwweEU2LDB4MkQsMHhBRCwweEFELDB4MjUs
MHhCNiwweEY2LDB4NzYsMHhFRSwweEVBLDB4RkIsMHhGRiwweEZGLAotICAgIDB4OTYsMHhFRSww
eDE0LDB4RTYsMHg2MCwweDcwLDB4RUEsMHhFOCwweEY0LDB4REQsMHgzMSwweEM1LDB4N0UsMHg3
QSwweDdDLDB4RjgsCi0gICAgMHg3MSwweENELDB4NTEsMHhDNSwweDJFLDB4QjksMHhFNywweENF
LDB4NzEsMHhDRCwweDUxLDB4QzUsMHgyMCwweDJFLDB4MjUsMHgzRCwKLSAgICAweDcyLDB4Q0Qs
MHhDRiwweEI0LDB4NUMsMHg1QywweDdDLDB4QTgsMHhCMywweEQ1LDB4MTAsMHhDNSwweDBELDB4
MEIsMHgwMywweDBBLAotICAgIDB4MTQsMHhERSwweEIzLDB4RDUsMHhCRCwweDNGLDB4MkYsMHgy
MywweDU1LDB4RTYsMHhGNCwweERELDB4MkQsMHgzNSwweEI3LDB4QjcsCi0gICAgMHg3NiwweEVF
LDB4NTUsMHhFNiwweDIzLDB4ODIsMHgwQiwweDBELDB4OTYsMHhFRSwweDM1LDB4RTYsMHhBOCww
eEM4LDB4QTgsMHhBQSwKLSAgICAweDc1LDB4RUUsMHgzNSwweEU2LDB4RkYsMHhGOCwweEZBLDB4
RUEsMHgzNSwweEVFLDB4NTUsMHhFNiwweDc3LDB4NkQsMHg3RiwweDVGLAotICAgIDB4RDYsMHhG
NiwweEI2LDB4RUUsMHhBQSwweEFBLDB4OEEsMHgwMiwweEQ3LDB4RjYsMHhCNSwweEVFLDB4MjIs
MHgyMiwweDI4LDB4MjAsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweDZFLDB4QzgsMHhGOCww
eEM4LDB4RDYsMHhGNiwweEI2LDB4RUUsMHhCOSwweDIzLDB4MDIsMHgwMiwKLSAgICAweEQ2LDB4
RjYsMHhCNywweEU2LDB4MDgsMHg4QSwweDA4LDB4QTIsMHhGNywweEY2LDB4QjYsMHhFRSwweERC
LDB4NUEsMHhGRiwweEJGLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHgxQiwweDI5LDB4MkMs
MHgwMCwweEQ3LDB4RjYsMHhENiwweEVFLDB4QUEsMHgyMiwweEFBLDB4QUEsCi0gICAgMHhENyww
eEY2LDB4RjcsMHhFRSwweDI4LDB4MDgsMHgyMCwweEFBLDB4RjYsMHhGNiwweEI3LDB4RUUsMHhB
NywweEJFLDB4QUIsMHhBQiwKLSAgICAweEQ2LDB4RjYsMHhGNywweEVFLDB4MkEsMHgyQSwweDIw
LDB4ODIsMHhENiwweEY2LDB4RjgsMHhFRSwweDA4LDB4ODAsMHgyOCwweEE4LAotICAgIDB4RDYs
MHhGNiwweEI2LDB4RUUsMHhFRSwweDY4LDB4RjgsMHg2QywweEQ2LDB4RjYsMHg5NiwweEVFLDB4
QkIsMHhFRiwweEFGLDB4MEYsCi0gICAgMHhENiwweEY2LDB4OTYsMHhFRSwweEZGLDB4RkUsMHhG
MiwweEMyLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGRCwweEY3LDB4QkQsMHhCQiwKLSAgICAweEQ3
LDB4RjYsMHhCNiwweEVFLDB4N0QsMHhGRiwweEFELDB4RUUsMHhENiwweEY2LDB4QjYsMHhFRSww
eEI1LDB4QkQsMHhCQiwweEI2LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhERiwweEZELDB4
REQsMHhGRCwweEY3LDB4RjYsMHhENywweEY2LDB4REQsMHhCRiwweDNBLDB4OEQsCi0gICAgMHhG
NywweEY2LDB4RDcsMHhGNiwweEVBLDB4RjgsMHhEQSwweEZFLDB4RjYsMHhGNiwweEQ3LDB4RjYs
MHhCNSwweEZCLDB4RkYsMHhFRCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NzksMHg2Qiww
eEZCLDB4OUIsMHhENywweEY2LDB4RjcsMHhFRSwweDAwLDB4ODAsMHgwRSwweDAyLAotICAgIDB4
RjcsMHhGNiwweDk2LDB4RUUsMHhBQSwweDJBLDB4OEEsMHhBMiwweEY3LDB4RkUsMHg3NiwweEVF
LDB4NkEsMHhFMCwweEVBLDB4RUEsCi0gICAgMHhGNCwweERELDB4NDIsMHg0MSwweDU4LDB4Nzgs
MHg3OCwweDc4LDB4MDMsMHgzOSwweEMxLDB4MzgsMHhBQSwweDFELDB4MjQsMHhCQSwKLSAgICAw
eDY0LDB4NDksMHgwMiwweDQxLDB4M0YsMHhBQiwweDJGLDB4NjUsMHg4NCwweDUxLDB4MjMsMHg0
OSwweEUyLDB4QTIsMHhBOSwweEY1LAotICAgIDB4NjQsMHg0OSwweEUyLDB4NDAsMHhGOCwweDVB
LDB4RkIsMHg3RSwweDQzLDB4NDksMHgwMywweDQxLDB4RkYsMHhCQiwweDJELDB4MjksCi0gICAg
MHhDNSwweDU5LDB4NDQsMHg0OSwweDM1LDB4MkQsMHgwOSwweDBBLDB4MjcsMHg2QSwweDg0LDB4
NTEsMHhBRCwweEFGLDB4MkEsMHgzQiwKLSAgICAweDI3LDB4NkEsMHhBNCwweDU5LDB4MDgsMHg4
OCwweEE4LDB4N0UsMHg2NywweDcyLDB4ODUsMHg1OSwweDIwLDB4MkEsMHhBRCwweEFELAotICAg
IDB4QTgsMHg3QSwweDQ2LDB4NkEsMHg4MywweEFBLDB4QTUsMHhGNSwweEE4LDB4N0EsMHg0Nyww
eDZBLDB4ODIsMHg4QSwweEVGLDB4N0YsCi0gICAgMHg4OCwweDcyLDB4NDcsMHg3MiwweEIwLDB4
QkEsMHhDRCwweEI1LDB4ODgsMHg3MiwweDA2LDB4NkEsMHhBMCwweEFGLDB4OTcsMHhBQiwKLSAg
ICAweDY3LDB4NzIsMHgyNiwweDZBLDB4QTYsMHgwMiwweDJCLDB4RUYsMHg2NywweDcyLDB4MjYs
MHg2QSwweDgwLDB4RjAsMHg2OCwweEQ4LAotICAgIDB4NjcsMHg3MiwweDA2LDB4NjIsMHhCMCww
eEJGLDB4RkQsMHhGRiwweEE3LDB4N0EsMHhFNSwweDYxLDB4MEEsMHhBRCwweEFCLDB4RkYsCi0g
ICAgMHhDOCwweDdBLDB4NjcsMHg3MiwweEFCLDB4QUUsMHhBQiwweDBELDB4RTksMHg4MiwweDg3
LDB4N0EsMHgwQiwweEJGLDB4RUYsMHhGNywKLSAgICAweDJBLDB4OEIsMHg4OCwweDdBLDB4MEEs
MHhCRSwweEZGLDB4RDUsMHhFOSwweDhBLDB4NDYsMHg3MiwweEEwLDB4RTAsMHg3QSwweDVFLAot
ICAgIDB4NjcsMHg3QSwweEE0LDB4NjEsMHhFMCwweEY4LDB4N0UsMHg1RiwweEU1LDB4NjksMHg4
MywweDU5LDB4QkMsMHhFNywweENGLDB4MkUsCi0gICAgMHgyNiwweDcyLDB4QzUsMHg2OSwweEFE
LDB4M0QsMHgzRCwweDJBLDB4NjgsMHg3QSwweEU2LDB4NjksMHhFQSwweEY4LDB4NkEsMHg3RSwK
LSAgICAweDA2LDB4NzIsMHg2NCwweDYxLDB4RTAsMHg3MiwweDcyLDB4NUEsMHg4NCwweDY5LDB4
MjIsMHg1OSwweDJBLDB4MjcsMHgzNywweEJGLAotICAgIDB4MDYsMHg3QSwweDYzLDB4NjEsMHgw
QiwweDJGLDB4QUQsMHhCRiwweDQ3LDB4ODIsMHgwNiwweDdBLDB4QUYsMHhBNiwweEY1LDB4NzUs
Ci0gICAgMHg2NywweDhBLDB4MDYsMHg4MiwweEMwLDB4Q0EsMHg2OSwweENCLDB4NDcsMHg4Miww
eDI2LDB4ODIsMHhCMiwweERELDB4OTUsMHg1NSwKLSAgICAweEU5LDB4OTIsMHg0NywweDgyLDB4
QUQsMHhBQiwweDJELDB4MkYsMHgyOSwweDlCLDB4QTgsMHg4QSwweDI3LDB4QjcsMHhGQiwweEZG
LAotICAgIDB4QjYsMHhGNiwweDZCLDB4QTMsMHgyRCwweDJELDB4MkQsMHgyRCwweDE3LDB4RkYs
MHhENywweEZFLDB4QUQsMHhCRCwweEFELDB4QkYsCi0gICAgMHhGNywweEZFLDB4MTgsMHhGNyww
eEJFLDB4RkEsMHhGRSwweEZFLDB4MTgsMHhGRiwweEY3LDB4RjYsMHhBRiwweDg5LDB4QUIsMHhB
QiwKLSAgICAweDE3LDB4RkYsMHhGNywweEY2LDB4ODIsMHg4QSwweDJBLDB4QjYsMHgxOCwweEZG
LDB4MTcsMHhGNywweEVBLDB4QUEsMHhBMiwweEFBLAotICAgIDB4MzgsMHhGRiwweEY3LDB4RjYs
MHhBRSwweEJBLDB4MkYsMHhCRiwweDM4LDB4RkYsMHgxNywweEY3LDB4RkYsMHhBRSwweEFBLDB4
RkYsCi0gICAgMHgzOCwweEZGLDB4MTgsMHhGRiwweDJBLDB4QUEsMHhCQiwweEVCLDB4MzgsMHhG
RiwweDE4LDB4RkYsMHhBMiwweEFBLDB4RkEsMHhENSwKLSAgICAweDE4LDB4RkYsMHgzOCwweEY3
LDB4MDgsMHgwMiwweEMwLDB4QUEsMHgzOCwweEZGLDB4RDcsMHhGNiwweDZBLDB4RUEsMHg3OCww
eDU3LAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhFMCwweEE4LDB4QTgsMHhBQSwweEQ3LDB4
RjYsMHhCNiwweEVFLDB4QUYsMHgwQSwweDA4LDB4MDIsCi0gICAgMHhENywweEY2LDB4QjYsMHhG
NiwweEFCLDB4RUEsMHhFQSwweDVDLDB4QjYsMHhGNiwweDc1LDB4RUUsMHhBMiwweEEwLDB4QTgs
MHhEOCwKLSAgICAweDk2LDB4RUUsMHg1NSwweEVFLDB4RTAsMHhFMCwweEY4LDB4RjcsMHhCNiww
eEY2LDB4MzAsMHhDRCwweDdBLDB4N0UsMHhFQSwweDAwLAotICAgIDB4NzUsMHhFRSwweEFFLDB4
QkMsMHhENywweEI3LDB4MkEsMHgwMCwweDc2LDB4RUUsMHhEMywweERELDB4MkQsMHgwQiwweDAw
LDB4MDgsCi0gICAgMHg3NSwweEVFLDB4QjIsMHhENSwweDU4LDB4RTIsMHhBMCwweDAwLDB4MTQs
MHhFNiwweDcxLDB4Q0QsMHhGNSwweERGLDB4RjYsMHhGOCwKLSAgICAweDc2LDB4RUUsMHhEMyww
eEQ1LDB4MEIsMHgyRCwweEI1LDB4QjUsMHhGNywweEY2LDB4NTUsMHhFNiwweDJBLDB4OEIsMHgy
QiwweEJELAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4QSwweEFCLDB4RUYsMHg5NSwweEY4
LDB4RjYsMHhENywweEY2LDB4QUEsMHg5RCwweDNFLDB4RkEsCi0gICAgMHhEOCwweEZFLDB4Rjcs
MHhGNiwweERELDB4NUQsMHg3NSwweEZELDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBQSwweDg4LDB4
ODAsMHhGQywKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RUMsMHhCMiwweEQwLDB4NUQsMHhG
NywweEY2LDB4RDcsMHhGNiwweDg4LDB4ODIsMHhGRCwweDU1LAotICAgIDB4RjcsMHhGNiwweEI3
LDB4RjYsMHhBMCwweEZBLDB4RDcsMHhEQiwweEY3LDB4RjYsMHhCNywweEY2LDB4N0EsMHg3Riww
eERGLDB4QkYsCi0gICAgMHhGNywweEY2LDB4QjYsMHhFRSwweDVGLDB4NTUsMHg5NSwweEFBLDB4
RjcsMHhGNiwweEI2LDB4RUUsMHhGNSwweEZCLDB4QUEsMHgyQSwKLSAgICAweEY3LDB4RjYsMHhE
NywweEY2LDB4NUQsMHhGNSwweEFBLDB4QTAsMHgxOCwweEZGLDB4RDcsMHhGNiwweDc1LDB4QkYs
MHhFQiwweEVCLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBRCwweDAyLDB4MDAsMHg4MCww
eEY4LDB4RkUsMHhGNywweEY2LDB4RkYsMHhGRiwweDVELDB4NTUsCi0gICAgMHhGOCwweEY2LDB4
RDgsMHhGNiwweDAwLDB4MjAsMHhGOCwweEFFLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHg4MCwweEVF
LDB4RkMsMHg4QSwKLSAgICAweEY4LDB4RjYsMHhEOCwweEY2LDB4MDAsMHg4NiwweEFFLDB4RkUs
MHhGNywweEY2LDB4RDgsMHhGNiwweDJFLDB4QUYsMHhGRiwweDVBLAotICAgIDB4RjgsMHhGNiww
eEQ3LDB4RjYsMHhFMCwweDgwLDB4Q0EsMHhBRCwweEY4LDB4RjYsMHhENywweEY2LDB4N0YsMHhG
RiwweEZELDB4QTksCi0gICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweDU5LDB4N0YsMHg2RSwweDVB
LDB4RDcsMHhGNiwweEQ4LDB4RUUsMHhBQSwweEEyLDB4QUEsMHgyQSwKLSAgICAweEY3LDB4RjYs
MHhCNywweEVFLDB4MEEsMHgzQiwweDJGLDB4QkYsMHgxOCwweEZGLDB4QjcsMHhFRSwweEZBLDB4
RkEsMHg2MiwweEZBLAotICAgIDB4QjcsMHhFRSwweDc1LDB4RUUsMHhGQSwweEQ4LDB4NzgsMHhG
QywweDc2LDB4RUUsMHg5NiwweEU2LDB4MDgsMHgwMiwweDhBLDB4MEYsCi0gICAgMHg5NiwweEVF
LDB4NTUsMHhFRSwweDhBLDB4RUUsMHhGRiwweERGLDB4QjcsMHhFRSwweDU2LDB4RUUsMHhFQiww
eEFGLDB4MkQsMHhBRiwKLSAgICAweDk2LDB4RUUsMHhGNCwweERELDB4NjAsMHg2MCwweEUwLDB4
QzAsMHhEMywweERELDB4MTAsMHhCRCwweDNELDB4QTUsMHgyNiwweDI3LAotICAgIDB4OTYsMHhF
RSwweEY0LDB4REQsMHgyQiwweDJELDB4QUQsMHgyRiwweEI3LDB4RjYsMHg3NiwweEVFLDB4RkUs
MHhFQSwweEZBLDB4N0EsCi0gICAgMHg5NiwweEVFLDB4MzUsMHhFNiwweEYyLDB4RUEsMHhGQyww
eDdBLDB4MTQsMHhERSwweDcyLDB4Q0QsMHg1QywweDVDLDB4NTgsMHg3OCwKLSAgICAweDkyLDB4
Q0QsMHg1MSwweENELDB4RkYsMHgzRSwweEVGLDB4NTUsMHg5MiwweEQ1LDB4MzEsMHhDNSwweEUz
LDB4RkEsMHhERSwweDVGLAotICAgIDB4QjIsMHhENSwweDEwLDB4QzUsMHhGQiwweEFGLDB4QUYs
MHgyNSwweEYzLDB4REQsMHg5MiwweENELDB4QjUsMHhBRCwweDJGLDB4MkIsCi0gICAgMHgxNCww
eERFLDB4RDMsMHhERCwweDBGLDB4QUYsMHhBQiwweEMyLDB4NTUsMHhFNiwweEY0LDB4REQsMHhC
RCwweEI3LDB4MzcsMHg5NywKLSAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4MkQsMHgyRCwweDhC
LDB4QUQsMHg5NiwweEVFLDB4NzYsMHhFRSwweDdDLDB4NkIsMHhGQiwweEZGLAotICAgIDB4NzUs
MHhFRSwweDU1LDB4RTYsMHg1OCwweEJBLDB4RTgsMHhGQSwweDk2LDB4RUUsMHgzNCwweEU2LDB4
RkQsMHhBRiwweDNGLDB4QUIsCi0gICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEFCLDB4RUIsMHhF
QiwweEZFLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhGQSwweEZFLDB4RkYsMHhGNywKLSAgICAweEQ3
LDB4RjYsMHhENiwweEVFLDB4QUEsMHgyMiwweEFBLDB4QUEsMHhENywweEY2LDB4RjYsMHhFRSww
eDAwLDB4MjIsMHhBOCwweDJBLAotICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhFRiwweEZFLDB4
QUEsMHhDQSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4OEEsMHgyQSwweDA4LDB4ODMsCi0gICAgMHhE
NywweEY2LDB4RjYsMHhFRSwweDA4LDB4ODIsMHgwOCwweDM4LDB4RDcsMHhGNiwweEY3LDB4RUUs
MHg4MCwweDA4LDB4MjIsMHg4MiwKLSAgICAweEQ3LDB4RjYsMHhGNiwweEVFLDB4RTgsMHhBMCww
eDIwLDB4MDgsMHhENywweEY2LDB4RjcsMHhFRSwweDg4LDB4MjIsMHgyMCwweEEyLAotICAgIDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHhCNywweEZELDB4RkYsMHg3RiwweEY2LDB4RjYsMHhENywweEY2
LDB4RUYsMHhGRCwweEQ3LDB4NTcsCi0gICAgMHhENywweEY2LDB4QjUsMHhFRSwweEUwLDB4QTAs
MHhBOCwweEU4LDB4RDcsMHhGNiwweEI2LDB4RUUsMHhBQSwweDZBLDB4RUEsMHhFRSwKLSAgICAw
eEQ2LDB4RjYsMHhCNiwweEVFLDB4RUIsMHhCNSwweDlGLDB4QjIsMHhENywweEY2LDB4QjYsMHhF
RSwweDU1LDB4RjcsMHg3NiwweERGLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGRSwweDU3
LDB4RkUsMHhBMywweEQ2LDB4RjYsMHhCNiwweEVFLDB4M0YsMHhBQiwweDI5LDB4QUQsCi0gICAg
MHhGNywweEY2LDB4QjYsMHhFRSwweEFBLDB4QUEsMHhBRiwweEVCLDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHg4OSwweDk3LDB4NUQsMHg1RCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RkYsMHg2
RiwweDZDLDB4N0QsMHhGNywweEY2LDB4RDcsMHhGNiwweEY1LDB4NUYsMHg3NSwweEJELAotICAg
IDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgzRSwweEJBLDB4QUIsMHhCQiwweEY3LDB4RjYsMHhENyww
eEY2LDB4RkEsMHhBMiwweDRDLDB4RUEsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDVFLDB4
RkEsMHg1RSwweDZBLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhDQSwweEVBLDB4RUEsMHg3QSwKLSAg
ICAweDM0LDB4REUsMHhFNSwweDU5LDB4NzgsMHg3MCwweDYwLDB4NjAsMHg0MywweDQxLDB4QzIs
MHgzOCwweDVFLDB4RkUsMHg3QywweDdBLAotICAgIDB4MjMsMHg0OSwweDgxLDB4MzAsMHgwQSww
eDJCLDB4QUQsMHhBRiwweDY0LDB4NTEsMHgwMywweDQxLDB4QUYsMHg4RiwweEE1LDB4M0QsCi0g
ICAgMHg4NSwweDUxLDB4MDIsMHg0MSwweDVGLDB4RkEsMHhBRSwweDAyLDB4QzUsMHg2MSwweDQz
LDB4NDksMHhGNSwweEI5LDB4QUEsMHgwQSwKLSAgICAweDA2LDB4NjIsMHg4NCwweDU5LDB4RTUs
MHhCRiwweDJGLDB4MDIsMHhFNiwweDYxLDB4QTUsMHg1OSwweEEyLDB4RTAsMHhFMCwweEJDLAot
ICAgIDB4QzUsMHg1OSwweDY0LDB4NTksMHg4MCwweDg4LDB4QUEsMHgzQSwweEU2LDB4NjEsMHhB
NSwweDU5LDB4MEUsMHhCRCwweDc5LDB4NUEsCi0gICAgMHgyNiwweDZBLDB4QTUsMHg1OSwweDAy
LDB4QUEsMHhFOSwweEE3LDB4NDcsMHg3MiwweEU2LDB4NjEsMHgwMywweEEyLDB4QUEsMHhFRCwK
LSAgICAweDQ3LDB4NkEsMHgwNiwweDYyLDB4RUEsMHhGRiwweEZCLDB4RkYsMHg2OCwweDcyLDB4
RTUsMHg2MSwweDBBLDB4MkIsMHhBQiwweEI1LAotICAgIDB4ODgsMHg3MiwweDA1LDB4NjIsMHhF
MiwweEYwLDB4N0EsMHhERiwweDQ3LDB4NkEsMHgwNiwweDYyLDB4RjAsMHg3MCwweERELDB4NTcs
Ci0gICAgMHgyNiwweDZBLDB4MDUsMHg2MiwweEFDLDB4QkEsMHg1NywweDdELDB4NjcsMHg3Miww
eEU1LDB4NjEsMHhCQSwweDJFLDB4RUQsMHhGNywKLSAgICAweEM5LDB4N0EsMHgyNiwweDZBLDB4
MkQsMHhBRiwweEJCLDB4RjUsMHhFOSwweDgyLDB4NDcsMHg3MiwweDhFLDB4QUUsMHg3NywweDU1
LAotICAgIDB4ODgsMHg3QSwweEU2LDB4NjEsMHgwMCwweEE4LDB4RUUsMHg1RiwweDQ3LDB4NzIs
MHhBNCwweDU5LDB4RTgsMHhFQSwweDdBLDB4N0YsCi0gICAgMHgwNSwweDZBLDB4ODMsMHg1OSww
eDdGLDB4RjcsMHhCRiwweDJGLDB4NDcsMHg3QSwweEE0LDB4NjEsMHhCNSwweEJGLDB4MkEsMHgw
MiwKLSAgICAweDY4LDB4N0EsMHgyNiwweDcyLDB4N0QsMHg3RiwweDdCLDB4NzAsMHgyNiwweDcy
LDB4QzUsMHg2OSwweDc4LDB4NzgsMHg3OCwweDcwLAotICAgIDB4QzUsMHg2OSwweEUzLDB4NTAs
MHhFOCwweEZDLDB4N0UsMHhERSwweDQ0LDB4NTksMHgwMywweDU5LDB4MjIsMHgwMywweDlBLDB4
QUYsCi0gICAgMHhBNSwweDY5LDB4NDQsMHg2MSwweDBBLDB4MkIsMHgyRiwweEZELDB4MDYsMHg3
QSwweEE1LDB4NjksMHgwMiwweEFCLDB4MUYsMHhCOSwKLSAgICAweDg3LDB4OEEsMHgyNywweDgy
LDB4N0QsMHhGNSwweEY1LDB4MjcsMHg4NywweDhBLDB4MjYsMHg3QSwweDVELDB4REIsMHhGMyww
eEZFLAotICAgIDB4QzgsMHg4QSwweDQ3LDB4ODIsMHhCRCwweEJGLDB4QUQsMHgyOSwweDI5LDB4
OTMsMHg4NywweDgyLDB4OUYsMHg3NSwweDM3LDB4MzcsCi0gICAgMHg5NiwweEY2LDB4RUMsMHhB
QiwweDJELDB4MkQsMHgyOSwweDA5LDB4RjcsMHhGRSwweEQ3LDB4RjYsMHgwQSwweDA4LDB4MDIs
MHgwMywKLSAgICAweEY3LDB4RkUsMHgxNywweEY3LDB4RUUsMHhFQSwweEVFLDB4RTgsMHhGNyww
eEZFLDB4MTgsMHhGNywweEVGLDB4QUUsMHhGRiwweEJCLAotICAgIDB4MTcsMHhGRiwweEY3LDB4
RjYsMHg5RSwweEI1LDB4QkQsMHhBQiwweEY3LDB4RkUsMHgxOCwweEY3LDB4OUIsMHg1QiwweEJG
LDB4QkYsCi0gICAgMHgxNywweEZGLDB4RjcsMHhGNiwweDJCLDB4QUUsMHhBRSwweEVCLDB4MTcs
MHhGRiwweEY3LDB4RjYsMHhBMCwweEJGLDB4QjcsMHhERiwKLSAgICAweDE3LDB4RkYsMHhGOCww
eEY2LDB4MDAsMHhBQSwweEVGLDB4QUYsMHgxOCwweEZGLDB4RjcsMHhGNiwweDIyLDB4MEEsMHgw
MiwweDBBLAotICAgIDB4MzgsMHhGRiwweEQ3LDB4RjYsMHhBOCwweEYyLDB4N0EsMHg3RSwweEY3
LDB4RjYsMHhCNiwweEVFLDB4RjAsMHhGOCwweEZBLDB4RkYsCi0gICAgMHhENywweEY2LDB4QjYs
MHhFRSwweDI5LDB4QUIsMHhGQSwweEZFLDB4QjYsMHhGNiwweEQ3LDB4RUUsMHhGRSwweEJFLDB4
QUUsMHhFRiwKLSAgICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4N0EsMHhGRSwweDdGLDB4NUUsMHg5
NiwweEVFLDB4OTIsMHhENSwweEEwLDB4QTgsMHhFQSwweDVBLAotICAgIDB4RDcsMHhGNiwweDcx
LDB4Q0QsMHgyQSwweEFCLDB4MEYsMHgyRCwweDE4LDB4RkYsMHhENywweEZFLDB4QkQsMHhBRiww
eDJFLDB4QUEsCi0gICAgMHgxOCwweEZGLDB4OTYsMHhGNiwweDVFLDB4N0EsMHhFOCwweEEyLDB4
RDcsMHhGNiwweDc1LDB4RUUsMHg1NSwweDVFLDB4NUYsMHg1QywKLSAgICAweDc1LDB4RUUsMHg1
NSwweEVFLDB4OTgsMHgzOCwweEI4LDB4NzgsMHg1NSwweEVFLDB4QjIsMHhENSwweEZDLDB4NzAs
MHhFMCwweDgwLAotICAgIDB4MzQsMHhFNiwweEIyLDB4RDUsMHgyQiwweDNELDB4MzUsMHhBRiww
eEI2LDB4RjYsMHgxNCwweERFLDB4MkYsMHgyRiwweEJELDB4RUQsCi0gICAgMHhGNywweEY2LDB4
OTYsMHhGNiwweDJBLDB4MkIsMHgyRiwweDJELDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3RSwweEFG
LDB4RUIsMHg2QiwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QUQsMHhGRSwweEU4LDB4QTMs
MHhGNywweEY2LDB4RDcsMHhGNiwweEZFLDB4NUIsMHg2QiwweEVBLAotICAgIDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHg3NSwweEZGLDB4QTksMHgwRiwweEY3LDB4RjYsMHhENywweEY2LDB4NzUsMHhG
QiwweEZFLDB4RDcsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDU1LDB4RjUsMHhCRCwweENG
LDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhENSwweDJELDB4MDEsMHgwQSwKLSAgICAweEY3LDB4RjYs
MHhENywweEY2LDB4NUMsMHg3NiwweDU0LDB4NUMsMHhGNywweEY2LDB4RDcsMHhGNiwweDk1LDB4
NTcsMHhCNSwweEE1LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhCOCwweEFFLDB4RTYsMHhF
MiwweEY3LDB4RjYsMHhCNywweEY2LDB4MDAsMHgyQywweDJFLDB4ODIsCi0gICAgMHhENywweEY2
LDB4RjcsMHhFRSwweEFCLDB4OEIsMHhBQSwweEFDLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBQSww
eDJCLDB4OEUsMHhGQSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4MDgsMHgyMiwweDAyLDB4
QkEsMHhGNywweEY2LDB4RDgsMHhGNiwweEFBLDB4QjgsMHhBOCwweDg4LAotICAgIDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHhGRSwweEJBLDB4QTIsMHgyMCwweEY3LDB4RjYsMHhENywweEY2LDB4Nzgs
MHhBQSwweDgwLDB4MjAsCi0gICAgMHhGNywweEY2LDB4RDgsMHhGNiwweDhBLDB4OEEsMHgwMCww
eDgwLDB4RDgsMHhGRSwweEY4LDB4RjYsMHhENSwweDU1LDB4N0QsMHhGNSwKLSAgICAweEY3LDB4
RjYsMHhENywweEY2LDB4RTQsMHg2QSwweDYwLDB4N0EsMHhENywweEY2LDB4QjcsMHhFRSwweDhB
LDB4QkEsMHhERiwweEQ2LAotICAgIDB4QjcsMHhGNiwweDE4LDB4RUYsMHhBOCwweEE4LDB4QUEs
MHhBOCwweEY4LDB4RjYsMHhCNywweEY2LDB4RTIsMHhDMCwweEMwLDB4QzIsCi0gICAgMHhCNiww
eEVFLDB4NzYsMHhFRSwweDdDLDB4NUUsMHg3RSwweDVFLDB4QjYsMHhFRSwweDU2LDB4RTYsMHhF
QiwweDdCLDB4RUIsMHgyRiwKLSAgICAweDk2LDB4RUUsMHg1NSwweEVFLDB4REYsMHhCQSwweDA4
LDB4MDAsMHg5NiwweEY2LDB4NzYsMHhFRSwweDJELDB4QUIsMHhFOCwweEEyLAotICAgIDB4Qjcs
MHhGNiwweDE0LDB4REUsMHg2MCwweDZBLDB4NkEsMHg3MiwweEY0LDB4REQsMHg1MSwweEM1LDB4
MTcsMHhCNywweDM3LDB4QjcsCi0gICAgMHg5NywweEVFLDB4MTQsMHhERSwweEJELDB4QUQsMHgy
NSwweDJELDB4OTYsMHhFRSwweDU1LDB4RUUsMHhBMCwweEU4LDB4RTAsMHhGQSwKLSAgICAweDc1
LDB4RUUsMHgzNSwweEU2LDB4RjgsMHhCQSwweEU4LDB4QUUsMHgzNSwweEU2LDB4NzIsMHhDRCww
eDdDLDB4NTgsMHg1OCwweDU4LAotICAgIDB4NzIsMHhDRCwweDMxLDB4QzUsMHhCRSwweDVFLDB4
NTgsMHhENywweDUyLDB4Q0QsMHhEMCwweEJDLDB4RTAsMHhGQiwweDdFLDB4N0EsCi0gICAgMHhC
MiwweEQ1LDB4Q0YsMHhCQywweDJCLDB4QUYsMHgyNSwweDJELDB4MzQsMHhFNiwweEQyLDB4RDUs
MHhGRCwweEI1LDB4QkQsMHgyRCwKLSAgICAweDE0LDB4RTYsMHgzNCwweERFLDB4QTgsMHhCRiww
eEFGLDB4QUYsMHg1NSwweEU2LDB4RjMsMHhERCwweEJELDB4QkUsMHhCRiwweEFGLAotICAgIDB4
OTYsMHhFRSwweDU1LDB4RTYsMHhCRCwweEVELDB4MEQsMHhBRiwweDk2LDB4RUUsMHg3NiwweEVF
LDB4NzksMHgzOSwweEFGLDB4OEIsCi0gICAgMHg3NSwweEVFLDB4NTUsMHhFNiwweEY4LDB4RTgs
MHg4MiwweEEwLDB4OTYsMHhFRSwweDU1LDB4RTYsMHhBRiwweEFGLDB4QjcsMHhCRiwKLSAgICAw
eEQ2LDB4RjYsMHhCNywweEVFLDB4QjAsMHg4MiwweEE4LDB4MkEsMHhENywweEY2LDB4QjYsMHhF
RSwweEZBLDB4RUUsMHhBQSwweEEyLAotICAgIDB4RDYsMHhGNiwweEI3LDB4RUUsMHg4QiwweDJF
LDB4OEEsMHhBOCwweEQ2LDB4RjYsMHhCNywweEVFLDB4ODAsMHhGMCwweDgyLDB4MjgsCi0gICAg
MHhENywweEY2LDB4QjYsMHhFRSwweDJCLDB4QUEsMHhBQSwweEFDLDB4RDcsMHhGNiwweEI2LDB4
RUUsMHgwMiwweDAyLDB4MDAsMHg4RSwKLSAgICAweEQ3LDB4RjYsMHhGNiwweEVFLDB4QTgsMHgy
OCwweDAwLDB4MjAsMHhGNywweEY2LDB4RDcsMHhGNiwweDVGLDB4RkYsMHhGRiwweEY1LAotICAg
IDB4RDcsMHhGNiwweEY3LDB4RUUsMHgyMiwweDAwLDB4ODIsMHhBOCwweEY3LDB4RjYsMHhENyww
eEY2LDB4RjUsMHhCQiwweEJFLDB4QUQsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEZGLDB4
RkYsMHgyRiwweEFELDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhCQSwweEE5LDB4QUIsMHhFOCwKLSAg
ICAweEQ3LDB4RjYsMHhGNiwweEVFLDB4MkEsMHgwMiwweDA4LDB4MkEsMHhENiwweEY2LDB4Qjcs
MHhFRSwweDJBLDB4MkEsMHhBQywweEFFLAotICAgIDB4RDYsMHhGNiwweEI3LDB4RUUsMHhBMiww
eDJBLDB4QUEsMHgyQSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4QkYsMHhCRSwweDg4LDB4ODAsCi0g
ICAgMHhCNiwweEY2LDB4RDYsMHhFRSwweEVGLDB4QUIsMHhCQiwweEVELDB4QjYsMHhGNiwweEQ3
LDB4RUUsMHg4QiwweEFCLDB4RkUsMHhFRiwKLSAgICAweEY2LDB4RjYsMHhENywweEY2LDB4NzUs
MHhGNSwweEVELDB4QUQsMHhGNywweEY2LDB4RDcsMHhGNiwweERELDB4RjcsMHhERCwweDU3LAot
ICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1RiwweEU5LDB4RTMsMHg3RCwweEY3LDB4RjYsMHhE
NywweEY2LDB4QUQsMHhCQSwweEVCLDB4NkUsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEZB
LDB4QUYsMHhFQSwweDBDLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBRiwweEE4LDB4RUUsMHhFQSwK
LSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NkEsMHg1RSwweDVELDB4OUQsMHhGNywweEY2LDB4
QjYsMHhFRSwweDdBLDB4RUEsMHhBQiwweEFBLAotICAgIDB4NzUsMHhFRSwweDA5LDB4N0IsMHg3
MCwweDcwLDB4NjAsMHhFMCwweEU0LDB4NTksMHhDMiwweDM4LDB4NUUsMHg1RSwweDdBLDB4Rjgs
Ci0gICAgMHg2NCwweDUxLDB4QzIsMHgzOCwweERELDB4QTUsMHhCRiwweDJBLDB4RTUsMHg2MSww
eEUyLDB4NDAsMHhCRCwweEJELDB4MkIsMHgyRSwKLSAgICAweDA2LDB4NkEsMHg4NCwweDUxLDB4
RjUsMHhCRiwweEFBLDB4ODAsMHgyNiwweDZBLDB4QzUsMHg1OSwweDlELDB4MDksMHhBQiwweDgw
LAotICAgIDB4MjcsMHg3MiwweDA1LDB4NjIsMHhFOSwweDhBLDB4ODksMHhDQSwweDI2LDB4NkEs
MHhDNiwweDYxLDB4NjQsMHhDOCwweEU4LDB4QTIsCi0gICAgMHgwNiwweDYyLDB4QTQsMHg1OSww
eDVCLDB4N0UsMHhCRSwweEU4LDB4RTUsMHg2MSwweEE1LDB4NTksMHhCRiwweEZBLDB4QUYsMHg4
QSwKLSAgICAweDI3LDB4NkEsMHhFNiwweDYxLDB4RTEsMHgzRiwweDA5LDB4MDksMHg0NywweDZB
LDB4MDYsMHg2MiwweDk3LDB4RDcsMHhFMiwweDAwLAotICAgIDB4NDcsMHg2QSwweEU1LDB4NjEs
MHhGNywweDVGLDB4N0MsMHhGOCwweDI2LDB4NkEsMHhDNCwweDU5LDB4MkYsMHhDRiwweEZGLDB4
OTYsCi0gICAgMHgwNiwweDZBLDB4QzUsMHg1OSwweEJDLDB4RkUsMHhCQiwweEZBLDB4MDUsMHg2
QSwweEM1LDB4NTksMHgyQSwweEU5LDB4RkEsMHhGQSwKLSAgICAweDI2LDB4NkEsMHhDNSwweDU5
LDB4QTIsMHhGRCwweEY3LDB4NUQsMHg0NywweDZBLDB4RTUsMHg2MSwweDRCLDB4QUQsMHhGNSww
eDVELAotICAgIDB4NDcsMHg2QSwweEE0LDB4NTksMHgwRSwweEZBLDB4RUUsMHg5RSwweDI2LDB4
NkEsMHhDNCwweDU5LDB4ODgsMHhDMiwweDdCLDB4NTcsCi0gICAgMHgwNiwweDZBLDB4QTQsMHg1
OSwweEU4LDB4QUUsMHhGNiwweEZGLDB4RTUsMHg2OSwweDgzLDB4NTksMHhERSwweEJBLDB4QkUs
MHgwRSwKLSAgICAweDY3LDB4N0EsMHhDNCwweDYxLDB4QjUsMHhBRCwweDJELDB4MEIsMHhDOCww
eDhBLDB4NDcsMHg3QSwweDVGLDB4RjcsMHhBRCwweDhBLAotICAgIDB4QTgsMHg4MiwweDQ3LDB4
N0EsMHg3QiwweDdGLDB4RTgsMHg4MCwweDY4LDB4N0EsMHg2NCwweDYxLDB4RkEsMHg3QSwweDc4
LDB4RjgsCi0gICAgMHg2NSwweDYxLDB4RTIsMHg1MCwweEI0LDB4RjYsMHhGRSwweEFDLDB4ODUs
MHg2MSwweDIzLDB4NTksMHg1NSwweEU1LDB4RkQsMHg4QiwKLSAgICAweEE0LDB4NjksMHg0Myww
eDU5LDB4QjUsMHgxNSwweEJGLDB4M0IsMHg2NywweDgyLDB4QzUsMHg3MSwweEJELDB4QTksMHgy
OSwweDA5LAotICAgIDB4QTgsMHg4QSwweDQ3LDB4ODIsMHhGRCwweDJELDB4OEYsMHgyMiwweEM4
LDB4OEEsMHg2NywweDgyLDB4NzcsMHhGQSwweEFCLDB4RUEsCi0gICAgMHhBOCwweDhBLDB4MjYs
MHg3QSwweDBBLDB4ODAsMHhBQSwweDdFLDB4MkQsMHhBQywweDI2LDB4NzIsMHhCRiwweEI3LDB4
QjUsMHgyNSwKLSAgICAweEQ3LDB4RkUsMHhBRiwweEJDLDB4MkQsMHgyOSwweDA5LDB4MEIsMHgx
NywweEZGLDB4RDgsMHhGNiwweEVCLDB4OEIsMHhBQSwweDAyLAotICAgIDB4MTgsMHhGRiwweEY3
LDB4RjYsMHhGRiwweENGLDB4QTMsMHg4MiwweDE3LDB4RkYsMHhGNywweEY2LDB4RkUsMHhGNyww
eEJELDB4QkYsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweDhCLDB4MkEsMHhBQSwweDJBLDB4
RjcsMHhGRSwweDE4LDB4RjcsMHhFNSwweEZGLDB4RUYsMHhGRiwKLSAgICAweDE3LDB4RkYsMHhG
NywweEY2LDB4RUIsMHhGRSwweDdFLDB4NUUsMHhGNywweEZFLDB4RjcsMHhGNiwweDVGLDB4RkYs
MHhGRCwweERGLAotICAgIDB4MTcsMHhGRiwweEQ3LDB4RjYsMHhBRiwweDBCLDB4MkIsMHgwQiww
eDE4LDB4RkYsMHhENywweEY2LDB4MDAsMHg4MCwweDY4LDB4NTgsCi0gICAgMHhGNywweEY2LDB4
QjYsMHhFRSwweEI4LDB4NUUsMHg1NywweDc3LDB4QjYsMHhGNiwweEQ3LDB4RUUsMHhBQSwweEVC
LDB4RUIsMHhGQSwKLSAgICAweDE4LDB4RkYsMHhCNiwweEVFLDB4RjcsMHhGNywweEZGLDB4MkIs
MHgzOCwweEZGLDB4QjYsMHhFRSwweDc3LDB4RkQsMHhCRiwweDAyLAotICAgIDB4MTgsMHhGRiww
eDk2LDB4RUUsMHg1NywweEZGLDB4QUEsMHgwMCwweEQ3LDB4RjYsMHhCMiwweEQ1LDB4N0UsMHhG
OCwweEUwLDB4QTgsCi0gICAgMHhENywweEY2LDB4QjIsMHhENSwweDBELDB4MkIsMHgwQSwweDBC
LDB4RjgsMHhGRSwweDE4LDB4RjcsMHg4OCwweDIwLDB4MjgsMHhBQSwKLSAgICAweDE3LDB4RkYs
MHhEOCwweEY2LDB4QUIsMHhBNSwweEZCLDB4MkEsMHgxOCwweEZGLDB4NzYsMHhFRSwweDVFLDB4
N0MsMHg3QSwweDc4LAotICAgIDB4NzUsMHhFRSwweDU1LDB4RTYsMHg1RSwweEY4LDB4RTgsMHhC
OCwweDc1LDB4RUUsMHgzNCwweEVFLDB4RUEsMHhFQSwweEVBLDB4QUEsCi0gICAgMHgzNSwweEU2
LDB4RDIsMHhENSwweEI2LDB4QkUsMHhFMCwweEEwLDB4NzUsMHhFRSwweDE0LDB4REUsMHgyOSww
eEFGLDB4QUYsMHg5NSwKLSAgICAweEY4LDB4RkUsMHg1NSwweEU2LDB4MkIsMHgyRiwweEE5LDB4
QUQsMHhGNywweEY2LDB4RDcsMHhGNiwweDg5LDB4QkUsMHhCRiwweEFCLAotICAgIDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHhFQSwweEUyLDB4RTIsMHgwQSwweEY3LDB4RjYsMHhENywweEY2LDB4NkUs
MHhERCwweDdGLDB4ODAsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEFELDB4QTUsMHhBOSww
eDA1LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhCNywweEFGLDB4NkQsMHhENywKLSAgICAweEY3LDB4
RjYsMHhENywweEY2LDB4QUEsMHg1NywweDU1LDB4NTUsMHhGNywweEY2LDB4RDcsMHhGNiwweEU4
LDB4NUUsMHg1RCwweDVGLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1RiwweDdELDB4RkYs
MHg3RiwweEY3LDB4RjYsMHhENywweEY2LDB4QkYsMHhGRCwweDdGLDB4RkYsCi0gICAgMHhENyww
eEY2LDB4RjcsMHhFRSwweEFFLDB4ODIsMHhBOCwweEVBLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhF
QiwweEU5LDB4RTksMHg1RSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QUIsMHhCQSwweEFF
LDB4MkUsMHhGNywweEY2LDB4RDcsMHhGNiwweDI1LDB4QTMsMHhFMiwweDdDLAotICAgIDB4Rjcs
MHhGNiwweEQ3LDB4RjYsMHhBRSwweDBBLDB4MkEsMHg3QiwweDE4LDB4RkYsMHhENywweEY2LDB4
QUEsMHhBQiwweEVGLDB4NTUsCi0gICAgMHhGNywweEY2LDB4RDcsMHhFRSwweDIwLDB4QUMsMHhE
NCwweERELDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBOCwweEFBLDB4QjksMHgzRCwKLSAgICAweEY3
LDB4RjYsMHhENywweEY2LDB4ODgsMHhFQSwweEFFLDB4ODgsMHhGNywweEY2LDB4RDcsMHhGNiww
eEVBLDB4NzgsMHg1RSwweDdGLAotICAgIDB4RjcsMHhGNiwweEI3LDB4RUUsMHhGQSwweEZBLDB4
N0UsMHg1RiwweEQ3LDB4RjYsMHg5NiwweEVFLDB4QUEsMHhCQSwweEJGLDB4QjcsCi0gICAgMHhE
NywweEY2LDB4QjcsMHhFRSwweDBBLDB4MjIsMHhBRiwweDU1LDB4RjcsMHhGNiwweEI3LDB4RUUs
MHhDMiwweEVBLDB4RkIsMHhBRiwKLSAgICAweEQ3LDB4RjYsMHg3NSwweEU2LDB4NUYsMHhGRSww
eDdBLDB4REMsMHhCNiwweEVFLDB4OTYsMHhFRSwweDc1LDB4NzUsMHhGRCwweEU1LAotICAgIDB4
OTYsMHhFRSwweDc2LDB4RUUsMHgwMCwweEZDLDB4REMsMHg5QywweDk2LDB4RUUsMHgzNiwweEVF
LDB4MjgsMHgyQSwweDNBLDB4MkEsCi0gICAgMHg5NywweEY2LDB4RjQsMHhERCwweDY4LDB4NjAs
MHg0OCwweDYwLDB4RjQsMHhERCwweDUxLDB4QzUsMHhCNiwweEJFLDB4M0YsMHgzNiwKLSAgICAw
eDk2LDB4RUUsMHgxNCwweERFLDB4QUQsMHhBRiwweEFELDB4QUQsMHg5NiwweEVFLDB4NTUsMHhF
NiwweDdBLDB4NjgsMHg3RSwweDVBLAotICAgIDB4NzUsMHhFRSwweDM2LDB4RTYsMHhBQSwweEFB
LDB4RkEsMHhERiwweDU1LDB4RTYsMHg1MiwweENELDB4NzgsMHg3OCwweDY4LDB4NzgsCi0gICAg
MHg1MiwweENELDB4QUYsMHhCQywweDg4LDB4QTAsMHhFQSwweDdFLDB4MTEsMHhDNSwweEFGLDB4
QkMsMHhGOCwweDc2LDB4REIsMHhGNSwKLSAgICAweEQzLDB4REQsMHhDRiwweEJDLDB4QUQsMHgy
RCwweDJELDB4MkQsMHgzNCwweEU2LDB4RDIsMHhENSwweDJELDB4MjksMHgyMiwweDBCLAotICAg
IDB4NTUsMHhFNiwweDE0LDB4RTYsMHhFQiwweEFBLDB4QUEsMHhFQSwweDU0LDB4RTYsMHgxNCww
eEU2LDB4QjcsMHhCNywweEI1LDB4QTksCi0gICAgMHg5NiwweEVFLDB4MzQsMHhFNiwweDhBLDB4
QUIsMHgyRSwweEE5LDB4QjYsMHhGNiwweDc2LDB4RUUsMHhFRiwweEVELDB4QUIsMHhBRiwKLSAg
ICAweDk1LDB4RUUsMHg1NSwweEU2LDB4NUUsMHg1RSwweERFLDB4REUsMHhCNywweEY2LDB4NTUs
MHhFNiwweEJELDB4QUQsMHgyQiwweDBCLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBMiww
eEZBLDB4RTgsMHg4QSwweEI2LDB4RjYsMHhENywweEVFLDB4QkYsMHhCRiwweEJGLDB4RjcsCi0g
ICAgMHhCNiwweEY2LDB4RDcsMHhFRSwweEZGLDB4RkIsMHhGQiwweEJGLDB4RDcsMHhGNiwweEI2
LDB4RUUsMHgyQSwweDhFLDB4QjgsMHhBQywKLSAgICAweEI2LDB4RjYsMHhENywweEVFLDB4NkQs
MHhGRiwweEZGLDB4RkYsMHhENiwweEY2LDB4QjYsMHhFRSwweEU4LDB4MEEsMHgyQSwweDAyLAot
ICAgIDB4RDcsMHhGNiwweEY2LDB4RUUsMHg4MCwweDIyLDB4MEEsMHgyQSwweEQ3LDB4RjYsMHhG
NiwweEVFLDB4MjAsMHgwMiwweEM4LDB4QTAsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweDAy
LDB4MDgsMHgyOCwweDA4LDB4RDcsMHhGNiwweEY3LDB4RUUsMHhBOCwweEEwLDB4MjAsMHg4MCwK
LSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QTEsMHhCNSwweEI1LDB4NTUsMHhGNywweEY2LDB4
RDcsMHhGNiwweERCLDB4REEsMHhEMCwweDVGLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1
QSwweERFLDB4NTYsMHhENywweEY3LDB4RjYsMHhENywweEY2LDB4NTUsMHg1RiwweEZFLDB4OTUs
Ci0gICAgMHhENiwweEY2LDB4QjcsMHhFRSwweDIwLDB4MjIsMHgyOCwweEEwLDB4RDcsMHhGNiww
eEY2LDB4RUUsMHgyMCwweEEyLDB4MjIsMHhBMiwKLSAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4
REEsMHg3RSwweEVFLDB4RUEsMHhENywweEY2LDB4QjYsMHhFRSwweEJGLDB4QkEsMHhCMiwweEVC
LAotICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHg4NSwweEI1LDB4RjUsMHhGRCwweEY3LDB4RjYs
MHhENywweEY2LDB4NUIsMHhCRSwweEI1LDB4RjksCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiww
eEZCLDB4M0EsMHhBRSwweEFDLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhFQSwweEU4LDB4RUEsMHhF
RiwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4ODcsMHhFRCwweEVELDB4REYsMHhGNywweEY2
LDB4RDcsMHhGNiwweDhFLDB4QkIsMHhBRiwweEVBLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHhCNywweDk0LDB4RDQsMHhGOCwweEY3LDB4RkUsMHhENywweEY2LDB4N0IsMHg2RSwweEZFLDB4
NTcsCi0gICAgMHhCNiwweEY2LDB4NEQsMHhBQywweDYwLDB4RTAsMHg2MCwweDc4LDB4MjksMHg4
MywweDQzLDB4NDksMHg1RSwweDdDLDB4RjgsMHhFQSwKLSAgICAweDI1LDB4NkEsMHg0MywweDQ5
LDB4RDUsMHhGQiwweEFBLDB4ODAsMHg0NiwweDZBLDB4QTQsMHg1OSwweDdELDB4RkYsMHgyRiww
eDBCLAotICAgIDB4NjcsMHg3MiwweEM1LDB4NjEsMHhCRCwweEVBLDB4QTgsMHgwMiwweDY3LDB4
NzIsMHgwNiwweDZBLDB4N0YsMHhENywweDM3LDB4MjIsCi0gICAgMHg4OCwweDdBLDB4RTUsMHg2
MSwweEZELDB4RkIsMHhDOCwweDgwLDB4NjcsMHg3MiwweDA2LDB4NkEsMHg3RSwweEVGLDB4RUIs
MHhCMCwKLSAgICAweDI2LDB4NjIsMHhDNSwweDU5LDB4RkYsMHhCOCwweEZFLDB4NkUsMHgwNiww
eDYyLDB4QTQsMHg1OSwweEVBLDB4NjIsMHhCQSwweEZGLAotICAgIDB4NjgsMHg3MiwweEM1LDB4
NTksMHhBRCwweEFGLDB4MkQsMHhBNSwweEM4LDB4N0EsMHg2NywweDcyLDB4RkQsMHhCNSwweEJE
LDB4MkQsCi0gICAgMHhBOCwweDdBLDB4MDYsMHg2QSwweDdBLDB4RTgsMHg0MCwweEUwLDB4MjYs
MHg2QSwweEM1LDB4NTksMHgzNywweERFLDB4NUUsMHg1RSwKLSAgICAweEU2LDB4NjEsMHhBNSww
eDU5LDB4NkUsMHg5NCwweDVFLDB4MUIsMHgwNiwweDYyLDB4QzUsMHg1OSwweERGLDB4M0QsMHgy
NSwweDgwLAotICAgIDB4MDUsMHg2MiwweEM1LDB4NTksMHhGQiwweEJBLDB4RkUsMHhCQywweDA2
LDB4NjIsMHhDNSwweDU5LDB4RTgsMHhBNywweDhCLDB4RUEsCi0gICAgMHgwNiwweDYyLDB4QzUs
MHg2MSwweDNCLDB4MEIsMHg4MiwweDUzLDB4QzQsMHg1OSwweDYzLDB4NTEsMHg4MCwweDYwLDB4
RTAsMHhGQSwKLSAgICAweEU1LDB4NjksMHg4MywweDUxLDB4RkYsMHhERCwweEZELDB4M0YsMHhD
OSwweDgyLDB4QTQsMHg2MSwweEZELDB4QkQsMHgwRiwweDBCLAotICAgIDB4NEEsMHg5MywweDY3
LDB4N0EsMHg3NSwweEZGLDB4QUIsMHgyMiwweDRCLDB4OUIsMHhBOCwweDgyLDB4RjUsMHhFQiww
eDBBLDB4MDAsCi0gICAgMHgyQSwweDlCLDB4QTgsMHg4MiwweEQ3LDB4RkUsMHhGQSwweEJDLDB4
QzksMHg4QSwweEE1LDB4NjksMHg3QSwweDdBLDB4RTAsMHg4MCwKLSAgICAweEM4LDB4OEEsMHg4
NSwweDYxLDB4NTUsMHhGRiwweEFCLDB4MDAsMHg4OCwweDgyLDB4NjQsMHg2MSwweEY1LDB4RkYs
MHhGQSwweEY4LAotICAgIDB4NjcsMHg3QSwweEM1LDB4NjksMHg1NSwweEQ1LDB4MzcsMHgzRiww
eEU5LDB4OTIsMHg0NiwweDdBLDB4QzUsMHgyOSwweDJCLDB4MkYsCi0gICAgMHgwOSwweDkzLDB4
NjcsMHg4MiwweEZBLDB4RjgsMHg3QSwweDVFLDB4QTgsMHg4QSwweDA1LDB4NzIsMHhBMCwweEVB
LDB4RTgsMHg3RSwKLSAgICAweDQ2LDB4N0EsMHhFNSwweDY5LDB4QTAsMHhBOCwweDNFLDB4QjUs
MHhCNCwweERELDB4NjcsMHg3QSwweEI1LDB4MkQsMHgyRCwweDBCLAotICAgIDB4RjcsMHhGRSww
eEY0LDB4REQsMHgyRCwweDBGLDB4MEIsMHgwMiwweEY3LDB4RkUsMHgxOCwweEY3LDB4QkUsMHhG
RSwweEJFLDB4RjgsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweEEyLDB4RTAsMHhGMiwweEJG
LDB4MTgsMHhGRiwweEY3LDB4RjYsMHhBQSwweDhCLDB4QUEsMHhFRiwKLSAgICAweDE4LDB4RkYs
MHhGNywweEY2LDB4QUEsMHgyQSwweDJBLDB4OEIsMHgxNywweEZGLDB4RjcsMHhGNiwweDdBLDB4
RkEsMHhGQSwweEVBLAotICAgIDB4MTcsMHhGRiwweEY3LDB4RjYsMHhGRSwweEY1LDB4NUYsMHhE
RiwweDE4LDB4RkYsMHhGNywweEY2LDB4REQsMHg1NSwweDk1LDB4QkIsCi0gICAgMHgxNywweEZG
LDB4RDcsMHhGNiwweDhBLDB4RUEsMHg3QSwweDdBLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhGOCww
eEZBLDB4QkYsMHhCQiwKLSAgICAweEQ2LDB4RjYsMHhCNywweEVFLDB4RUIsMHg4MiwweDA4LDB4
QUEsMHhENiwweEY2LDB4OTYsMHhFRSwweDA4LDB4MDAsMHgyMiwweEVGLAotICAgIDB4MTgsMHhG
RiwweDk2LDB4RUUsMHgwQSwweDJBLDB4M0UsMHhCNSwweDM4LDB4RkYsMHgxOCwweEZGLDB4MEIs
MHgwOSwweDBCLDB4MDEsCi0gICAgMHgzOCwweEZGLDB4RjcsMHhGNiwweEUwLDB4NjAsMHg2QSww
eEY4LDB4RjgsMHhGNiwweDU1LDB4RTYsMHg1RSwweEZFLDB4QjgsMHhBOCwKLSAgICAweEY4LDB4
RkUsMHg5NiwweEU2LDB4MkQsMHhBRCwweDJGLDB4MkEsMHgxOCwweEZGLDB4RjgsMHhGNiwweEFC
LDB4RUQsMHhBRiwweEZELAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRiwweEY5LDB4RUYs
MHhFQiwweDE4LDB4RkYsMHg5NywweEY2LDB4NkEsMHhFOCwweEEyLDB4QTAsCi0gICAgMHhENyww
eEY2LDB4NTUsMHhFNiwweDc3LDB4REYsMHg1RSwweDc4LDB4NzUsMHhFRSwweDU1LDB4RTYsMHhB
RiwweEI3LDB4N0YsMHg1RiwKLSAgICAweDU1LDB4RTYsMHgxNCwweEU2LDB4NzAsMHg2MCwweDAw
LDB4MDAsMHgzNSwweEU2LDB4RjQsMHhERCwweDBCLDB4MjksMHgyRiwweDM4LAotICAgIDB4QjYs
MHhGNiwweDM0LDB4RTYsMHgwOSwweDJGLDB4ODksMHhBRCwweEY3LDB4RjYsMHhCNywweEY2LDB4
OEEsMHhBMiwweDgzLDB4MkQsCi0gICAgMHgxNywweEY3LDB4QjYsMHhFRSwweEFCLDB4QTksMHhB
RiwweEVFLDB4RjcsMHhGRSwweDE4LDB4RjcsMHhBQSwweEFBLDB4QUEsMHhBMCwKLSAgICAweDE4
LDB4RkYsMHhENywweEY2LDB4RkQsMHhGRiwweEZBLDB4RUEsMHhGNywweEY2LDB4RDcsMHhGNiww
eDc1LDB4NUUsMHhEOCwweDdFLAotICAgIDB4RjcsMHhGNiwweEI3LDB4RUUsMHhGQiwweEEzLDB4
QUIsMHhGRiwweEQ3LDB4RjYsMHhGNywweEVFLDB4MEEsMHg4MCwweDAwLDB4MDAsCi0gICAgMHhG
NywweEY2LDB4RDcsMHhGNiwweDVGLDB4REYsMHg3RCwweEQ1LDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHhFQSwweEZCLDB4RkIsMHg1OSwKLSAgICAweEQ3LDB4RjYsMHhGNywweEVFLDB4RUEsMHhBOCww
eDgyLDB4MDAsMHhENywweEY2LDB4RjcsMHhFRSwweDhBLDB4OEUsMHhBMiwweEU4LAotICAgIDB4
RDcsMHhGNiwweEY3LDB4RUUsMHhBQSwweDJBLDB4OEEsMHhCQSwweEQ3LDB4RjYsMHhGOCwweEVF
LDB4MDgsMHgwMCwweEYyLDB4RUEsCi0gICAgMHgxOCwweEY3LDB4RDcsMHhGNiwweDU1LDB4OTcs
MHhBQSwweEFFLDB4RjgsMHhGRSwweEQ3LDB4RUUsMHhGRiwweEFBLDB4ODIsMHhBQSwKLSAgICAw
eDE4LDB4RjcsMHhENywweEY2LDB4RkYsMHhBQiwweEFCLDB4RUIsMHgxOCwweEY3LDB4RDcsMHhG
NiwweEFGLDB4QkUsMHhGRSwweEZBLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4MCwweDQw
LDB4RjAsMHhERiwweEY3LDB4RjYsMHhCNywweEVFLDB4RUEsMHhFRSwweDdGLDB4RkUsCi0gICAg
MHhENywweEY2LDB4NzYsMHhFNiwweEE4LDB4RkEsMHhGQSwweDY4LDB4QjYsMHhFRSwweDc2LDB4
RTYsMHgyQSwweEJGLDB4QkYsMHhBQiwKLSAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4NTYsMHg5
RCwweDJELDB4MkIsMHhENywweEY2LDB4RjcsMHhFRSwweEEwLDB4MjAsMHgyMCwweDA4LAotICAg
IDB4RDcsMHhGNiwweDc2LDB4RTYsMHg1QywweEZGLDB4REUsMHg1RSwweDk2LDB4RUUsMHg1NSww
eEU2LDB4MEEsMHgyOCwweEZFLDB4N0EsCi0gICAgMHg5NiwweEVFLDB4NTUsMHhFNiwweEE4LDB4
MkEsMHhBRiwweDk1LDB4OTYsMHhFRSwweDc2LDB4RUUsMHhGRCwweEZCLDB4M0QsMHgyNSwKLSAg
ICAweDk2LDB4RUUsMHhGNCwweERELDB4NDgsMHg2MCwweEUwLDB4NjAsMHhGNCwweERELDB4NTIs
MHhDNSwweDNGLDB4MzcsMHgzNywweEJGLAotICAgIDB4OTYsMHhFRSwweDE0LDB4REUsMHhBRCww
eDI5LDB4QUQsMHgzRCwweEI2LDB4RjYsMHg1NiwweEU2LDB4N0YsMHhGQywweDdCLDB4N0UsCi0g
ICAgMHgzNSwweEVFLDB4NTYsMHhFNiwweEZCLDB4RkIsMHhGRiwweEY3LDB4MzUsMHhFNiwweDMx
LDB4Q0QsMHg2MCwweEUwLDB4NDAsMHg2MCwKLSAgICAweDEwLDB4QzUsMHhBRiwweEJDLDB4RkMs
MHg3NCwweERDLDB4NzYsMHhEMCwweEJDLDB4NkQsMHhCNCwweEEyLDB4RUMsMHg3QSwweERFLAot
ICAgIDB4RjMsMHhERCwweENGLDB4QkMsMHgyRCwweDJELDB4MEQsMHgyRCwweDU0LDB4RTYsMHhE
MiwweERELDB4MkYsMHgyRiwweEI5LDB4MkIsCi0gICAgMHg1NSwweEU2LDB4RjMsMHhERCwweDhB
LDB4NjgsMHg2QSwweEZFLDB4NTUsMHhFNiwweDE0LDB4REUsMHhCQiwweEI1LDB4MzUsMHhCRCwK
LSAgICAweDc1LDB4RUUsMHg1NSwweEU2LDB4MkQsMHgzNywweEE5LDB4QzUsMHhCNiwweEY2LDB4
MzUsMHhFNiwweDhBLDB4MkEsMHhBRiwweEVELAotICAgIDB4OTYsMHhFRSwweDM1LDB4RTYsMHhB
OCwweEFFLDB4MkUsMHgyNywweEQ3LDB4RjYsMHg3NSwweEU2LDB4MkQsMHhBRiwweDJCLDB4MkEs
Ci0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweEFDLDB4QUMsMHgyRiwweDBBLDB4RDcsMHhGNiww
eEY2LDB4RUUsMHgyQSwweDBBLDB4MDAsMHhBMiwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4
QUUsMHgyQSwweEEyLDB4RTAsMHhENiwweEY2LDB4QjcsMHhFRSwweEUyLDB4QUUsMHhBQiwweDJB
LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBMywweEE4LDB4QUEsMHgyMiwweEQ2LDB4RjYs
MHhENywweEVFLDB4MkEsMHhBQSwweDhBLDB4QTgsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSww
eDA4LDB4MjYsMHgwRiwweDAwLDB4RjcsMHhGNiwweEI2LDB4RUUsMHg2QSwweEVFLDB4QUEsMHhC
QiwKLSAgICAweEQ3LDB4RjYsMHhGNiwweEVFLDB4QTAsMHg4MiwweDhBLDB4MEEsMHhENywweEY2
LDB4RjgsMHhFRSwweDAyLDB4MEEsMHhBMCwweDgwLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYs
MHg3RSwweDVCLDB4N0EsMHhGRSwweEQ3LDB4RjYsMHhENiwweEVFLDB4QUEsMHg4QSwweDhDLDB4
MkEsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweDI4LDB4QTgsMHhBQSwweEZBLDB4RjcsMHhG
NiwweEI2LDB4RUUsMHhBQSwweEVCLDB4RkYsMHhFNywKLSAgICAweEQ2LDB4RjYsMHhCNywweEVF
LDB4MjAsMHgwMiwweEE4LDB4RTIsMHhGNywweEY2LDB4RDcsMHhGNiwweEVELDB4QUQsMHhGRCww
eDdELAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1NiwweDc3LDB4REQsMHg3QiwweEQ3LDB4
RjYsMHhCNiwweEVFLDB4QUEsMHhCMiwweDAyLDB4MDAsCi0gICAgMHhGNywweEY2LDB4RDcsMHhG
NiwweDgzLDB4QTIsMHg4QiwweDAyLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhERiwweEZBLDB4MkEs
MHg4OCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RkUsMHg2QSwweEUyLDB4RUUsMHhGNyww
eEY2LDB4RDcsMHhGNiwweDZCLDB4QTYsMHhGQSwweEFGLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHhCRiwweDhGLDB4MkIsMHhCOCwweEY3LDB4RjYsMHhENywweEY2LDB4RjAsMHhFMiwweDZB
LDB4RUEsCi0gICAgMHhGNywweEZFLDB4RDcsMHhGNiwweEZBLDB4NUYsMHg1NSwweERGLDB4Rjcs
MHhGRSwweDc2LDB4RUUsMHhFMiwweEU4LDB4NkEsMHg2QSwKLSAgICAweDU1LDB4RUUsMHg2QSww
eDkzLDB4NzAsMHg3OCwweDVFLDB4NUUsMHhFOCwweDgyLDB4NjYsMHg3MiwweDU0LDB4RkUsMHhF
QSwweEI4LAotICAgIDB4QTcsMHg3QSwweDA1LDB4NjIsMHhERSwweEVBLDB4QUEsMHhGOCwweEE4
LDB4ODIsMHg0NSwweDZBLDB4RjUsMHgyRiwweDBCLDB4MjIsCi0gICAgMHhFOSwweDhBLDB4NDcs
MHg3MiwweEJELDB4QUEsMHgyQSwweDAyLDB4MDksMHg4QiwweDY2LDB4NzIsMHg1RiwweEZFLDB4
MjAsMHgwMCwKLSAgICAweDBBLDB4OEIsMHg2NywweDcyLDB4REQsMHhCQiwweEI4LDB4RTgsMHhF
OSwweDgyLDB4NDcsMHg3MiwweDVFLDB4N0UsMHgyOCwweDhBLAotICAgIDB4QTgsMHg3QSwweDA2
LDB4NjIsMHg1NSwweDdBLDB4ODgsMHg4MCwweDQ3LDB4NkEsMHhBNCwweDU5LDB4NTcsMHhEQyww
eDVDLDB4NzAsCi0gICAgMHgwNiwweDZBLDB4ODQsMHg1MSwweDM5LDB4QUIsMHhBOSwweEE5LDB4
QTgsMHg3QSwweEU1LDB4NjEsMHgwQiwweDBCLDB4MDMsMHhCRCwKLSAgICAweEE4LDB4N0EsMHhF
NSwweDYxLDB4QTAsMHhFOCwweEVDLDB4N0UsMHgyNiwweDZBLDB4QTUsMHg1OSwweEY4LDB4OUUs
MHhCRSwweEZFLAotICAgIDB4RTUsMHg2MSwweEE1LDB4NTksMHgxRSwweEQ5LDB4RDgsMHhGRiww
eDA2LDB4NjIsMHhBNCwweDU5LDB4OEEsMHgwQSwweEZCLDB4RkQsCi0gICAgMHg0NywweDZBLDB4
QzUsMHg1OSwweEEyLDB4MEEsMHhGRiwweDdELDB4MDYsMHg2MiwweEM1LDB4NjEsMHg3QSwweEND
LDB4RkUsMHhGRSwKLSAgICAweDI2LDB4NkEsMHhDNSwweDU5LDB4NUYsMHhGRCwweEZDLDB4NUIs
MHgwNiwweDZBLDB4ODQsMHg1OSwweDlCLDB4MkEsMHgwMiwweDAwLAotICAgIDB4ODcsMHg3QSww
eEM0LDB4NjEsMHhENywweDJGLDB4QUEsMHgwQSwweDA5LDB4OTMsMHgyNiwweDcyLDB4QUQsMHgy
QiwweDJBLDB4QUEsCi0gICAgMHhBRCwweEEzLDB4MEEsMHg5MywweEI3LDB4QkQsMHhBRCwweDBG
LDB4RUQsMHhBQiwweDRCLDB4OUIsMHg3RCwweEZGLDB4QUEsMHg4MCwKLSAgICAweDZCLDB4QTMs
MHhDOCwweDhBLDB4NUMsMHg1QywweDc4LDB4RTAsMHg0QSwweDlCLDB4QTgsMHg4QSwweEI5LDB4
MDksMHgwRiwweEFGLAotICAgIDB4NEEsMHg5QiwweEU5LDB4OTIsMHg2QiwweEMyLDB4QTAsMHhG
RiwweDhDLDB4QTMsMHgyNiwweDdBLDB4NUYsMHg3QSwweEFBLDB4MEEsCi0gICAgMHhDQywweEFC
LDB4MjYsMHg3MiwweEQ1LDB4RkYsMHhFQSwweDgwLDB4QzgsMHg4QSwweDY2LDB4ODIsMHgwQiww
eDBCLDB4RkEsMHhGNCwKLSAgICAweEM5LDB4OEEsMHgyNiwweDcyLDB4RjgsMHhGRSwweEZCLDB4
NTcsMHg2NywweDdBLDB4QzQsMHg2MSwweEU4LDB4RTgsMHg3RSwweDc3LAotICAgIDB4MTEsMHhD
RCwweEU1LDB4NjksMHhENSwweEI1LDB4QjUsMHgyNSwweEQ3LDB4RkUsMHg2RiwweEJDLDB4MkQs
MHgyQiwweDBCLDB4MDIsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGRSwweEFELDB4QUIsMHhBQSww
eDJBLDB4MTcsMHhGRiwweEY4LDB4RjYsMHhBRiwweEVBLDB4RTMsMHhFQSwKLSAgICAweEY4LDB4
RkUsMHgxNywweEY3LDB4RUEsMHhCQSwweEJBLDB4QkEsMHgxNywweEZGLDB4RjcsMHhGNiwweEJE
LDB4RUYsMHhBRiwweEFCLAotICAgIDB4MTcsMHhGRiwweEY3LDB4RjYsMHg4QiwweEE2LDB4QUEs
MHg3RSwweDE3LDB4RkYsMHhGNywweEY2LDB4RkEsMHhENiwweDc3LDB4RDUsCi0gICAgMHgxOCww
eEZGLDB4RjcsMHhGNiwweEY3LDB4RjcsMHhBRCwweEFCLDB4MTgsMHhGRiwweEI2LDB4RUUsMHgw
OCwweDgwLDB4RTgsMHg3QSwKLSAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4ODAsMHhFOCwweEZF
LDB4REYsMHhENywweEY2LDB4OTYsMHhFRSwweEEwLDB4QkUsMHg1RiwweDU3LAotICAgIDB4QjYs
MHhFRSwweDU1LDB4RUUsMHgwMCwweEU4LDB4N0EsMHg1RiwweDk2LDB4RUUsMHhCMiwweEQ1LDB4
MjAsMHhBMiwweEZBLDB4N0EsCi0gICAgMHgxOCwweEZGLDB4RjMsMHhENSwweEFGLDB4MkQsMHgy
RCwweDI5LDB4MzgsMHhGRiwweDE4LDB4RkYsMHgyQiwweDhCLDB4MkYsMHhBRiwKLSAgICAweDM4
LDB4RkYsMHhGOCwweEY2LDB4NkEsMHhFQSwweEMwLDB4ODAsMHgxOCwweEZGLDB4QjcsMHhFRSww
eDdFLDB4REEsMHhGQSwweEZDLAotICAgIDB4RjgsMHhGRSwweEQ3LDB4RjYsMHg5RCwweEJGLDB4
QTUsMHhCNSwweDE4LDB4RkYsMHhGOCwweEY2LDB4RkYsMHhCRSwweEFCLDB4QUIsCi0gICAgMHgx
OCwweEZGLDB4RjgsMHhGNiwweEVBLDB4QUUsMHhCMiwweEFBLDB4MTgsMHhGRiwweEY4LDB4RjYs
MHhGRiwweEFGLDB4RkUsMHhGMiwKLSAgICAweEY4LDB4RkUsMHg3NSwweEVFLDB4NTgsMHg1OCww
eDY4LDB4RTAsMHg5NiwweEVFLDB4MzUsMHhFNiwweDdFLDB4RkUsMHhCRSwweEY4LAotICAgIDB4
NzYsMHhFRSwweDU1LDB4RTYsMHg1NywweEY3LDB4RUMsMHhGRiwweDU1LDB4RUUsMHgzNSwweEU2
LDB4NUUsMHhGOCwweERDLDB4RjgsCi0gICAgMHg5NiwweEVFLDB4MzUsMHhFNiwweDJGLDB4M0Ys
MHhBRCwweEVGLDB4RjcsMHhGRSwweDk2LDB4RUUsMHhBOSwweDJGLDB4QUQsMHhBRCwKLSAgICAw
eEY3LDB4RjYsMHhENywweEY2LDB4OTQsMHhCQSwweEFBLDB4ODIsMHhENywweEZFLDB4RjcsMHhG
NiwweDc3LDB4NUYsMHhGRCwweEY3LAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhFQSwweEFB
LDB4QUIsMHhBRiwweDE4LDB4RjcsMHhENywweEY2LDB4N0YsMHhERSwweEZFLDB4QTIsCi0gICAg
MHhGNywweEY2LDB4QjcsMHhFRSwweEZBLDB4QUEsMHg4MCwweDAwLDB4RDcsMHhGNiwweEY3LDB4
RUUsMHgwMCwweDAwLDB4OEEsMHhGQSwKLSAgICAweEY3LDB4RjYsMHhENywweEVFLDB4QjcsMHhF
RiwweEY3LDB4MjgsMHhGNywweEY2LDB4RDcsMHhGNiwweDVGLDB4N0EsMHhFMiwweEIyLAotICAg
IDB4MzgsMHhGNywweEQ3LDB4RjYsMHg1NSwweDdELDB4RkYsMHhCRiwweDE4LDB4RkYsMHhENyww
eEY2LDB4RkQsMHhCQiwweEIyLDB4RjIsCi0gICAgMHhEOSwweEZFLDB4RjcsMHhGNiwweEY1LDB4
NTUsMHhGNSwweEQ1LDB4RDgsMHhGRSwweEY4LDB4RjYsMHhERCwweDc3LDB4NzUsMHg1NywKLSAg
ICAweDE3LDB4RkYsMHhGOCwweEY2LDB4N0QsMHhGRCwweEZELDB4NzcsMHhGOCwweEZFLDB4Rjcs
MHhGNiwweDc3LDB4REQsMHhENywweDVELAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgwMCww
eDIwLDB4MDgsMHgyMiwweEY3LDB4RjYsMHhENywweEY2LDB4ODgsMHhDMiwweEU4LDB4RUMsCi0g
ICAgMHhGNywweEY2LDB4RDcsMHhGNiwweERGLDB4RjcsMHhERCwweEQ1LDB4RDcsMHhGNiwweEI2
LDB4RUUsMHhGOCwweEU4LDB4RjgsMHhGRiwKLSAgICAweEI3LDB4RUUsMHg3NiwweEU2LDB4RTAs
MHhGQSwweDc4LDB4RTAsMHhENywweEY2LDB4NzUsMHhFNiwweEJGLDB4QUQsMHgzRCwweEE5LAot
ICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhGNywweEJGLDB4QkIsMHhBQSwweEY3LDB4RjYsMHhC
NiwweEVFLDB4RkEsMHhGQSwweEZBLDB4RUEsCi0gICAgMHhCNywweEY2LDB4NzUsMHhFRSwweDdF
LDB4RjgsMHhGQywweDVGLDB4OTYsMHhFRSwweDM1LDB4RTYsMHhFOCwweEE4LDB4ODgsMHgyMiwK
LSAgICAweDc2LDB4RUUsMHg1NSwweEU2LDB4MkIsMHgwMiwweDAwLDB4MDAsMHg5NiwweEVFLDB4
NzYsMHhFRSwweDg1LDB4QjQsMHg5RiwweEY1LAotICAgIDB4NzYsMHhFRSwweEYzLDB4REQsMHg2
MCwweDYwLDB4NDAsMHhFMCwweEY0LDB4REQsMHg1MiwweENELDB4MzcsMHgzRSwweDNGLDB4MkYs
Ci0gICAgMHg3NiwweEVFLDB4MTQsMHhERSwweDJELDB4QUQsMHhBRCwweDJELDB4OTYsMHhFRSww
eDE0LDB4RTYsMHhBQSwweEVBLDB4RTAsMHhGQSwKLSAgICAweDU1LDB4RTYsMHhGNCwweERELDB4
QTIsMHhFQSwweEZFLDB4RkUsMHgxNCwweEU2LDB4NTIsMHhDRCwweDYwLDB4QzAsMHhFMCwweEMw
LAotICAgIDB4MTEsMHhDNSwweDZFLDB4QjQsMHhGRSwweEY4LDB4NzgsMHg1QywweENGLDB4QkMs
MHg0RCwweEFDLDB4RkUsMHhCRiwweDNGLDB4QjcsCi0gICAgMHgxMywweERFLDB4MEYsMHhDNSww
eEFELDB4MkQsMHgyRCwweDI5LDB4NTQsMHhFNiwweDE0LDB4REUsMHhCNSwweEJELDB4QUYsMHhB
QSwKLSAgICAweDU1LDB4RTYsMHgxNCwweEU2LDB4RkYsMHhEQSwweDdBLDB4RkEsMHg1NSwweEU2
LDB4MTQsMHhERSwweEI5LDB4RUYsMHgyQiwweDBGLAotICAgIDB4NTUsMHhFRSwweDM1LDB4RTYs
MHgzQSwweEZGLDB4RkEsMHgyOCwweDU1LDB4RTYsMHgxNCwweERFLDB4MDgsMHhCRiwweEZGLDB4
QTgsCi0gICAgMHhCNiwweEVFLDB4MzUsMHhFNiwweEI1LDB4QTUsMHgyRiwweDJCLDB4RDYsMHhG
NiwweDk2LDB4RUUsMHhBOSwweEFCLDB4OEEsMHhCRSwKLSAgICAweEI2LDB4RjYsMHhGNywweEVF
LDB4RkEsMHhGRSwweEFBLDB4QUUsMHhENywweEY2LDB4RjYsMHhFRSwweDIyLDB4MEEsMHgwMCww
eDA4LAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHgyOCwweEFBLDB4OEUsMHhBQiwweEQ2LDB4
RjYsMHhCNiwweEVFLDB4QTIsMHg4MiwweEEyLDB4RUEsCi0gICAgMHhENiwweEY2LDB4QjUsMHhF
RSwweDAyLDB4QUEsMHhBRSwweEE1LDB4RDYsMHhGNiwweEI2LDB4RUUsMHgwMCwweDgyLDB4MkMs
MHhBQSwKLSAgICAweEQ3LDB4RjYsMHhGNywweEVFLDB4MjgsMHgyMCwweDIwLDB4MDAsMHhENiww
eEY2LDB4QjcsMHhFRSwweDgyLDB4MkEsMHhBQSwweDIwLAotICAgIDB4RjYsMHhGNiwweEQ3LDB4
RjYsMHg3RCwweDdGLDB4NUEsMHg1RiwweEQ2LDB4RjYsMHhENywweEVFLDB4MkEsMHhBQSwweEFB
LDB4QUEsCi0gICAgMHhENywweEY2LDB4RjYsMHhFRSwweDIyLDB4MDAsMHgwMiwweDA4LDB4Rjcs
MHhGNiwweEI2LDB4RUUsMHhCRSwweEJGLDB4QUYsMHhBRSwKLSAgICAweEQ3LDB4RjYsMHhCNiww
eEVFLDB4QkUsMHhBQSwweEY4LDB4RTIsMHhENiwweEY2LDB4QjYsMHhFRSwweDhGLDB4RkYsMHhB
RiwweEFGLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg4OCwweDI4LDB4OEIsMHgyRCwweEY3
LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhCQSwweEVGLDB4QkYsCi0gICAgMHhENywweEY2LDB4Rjcs
MHhFRSwweDg4LDB4MDgsMHhDMCwweDAyLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4RiwweEJFLDB4
REUsMHhBOSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4MDgsMHgyQSwweDBBLDB4MEEsMHgx
NywweEZGLDB4RDcsMHhGNiwweEZFLDB4QUEsMHhGQSwweEZGLAotICAgIDB4RDcsMHhGRSwweEY3
LDB4RjYsMHhERCwweERELDB4NTUsMHg1NywweEY3LDB4RjYsMHhENiwweEY2LDB4QjcsMHgzQSww
eDIxLDB4MDAsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEE4LDB4QTgsMHgyMiwweDI4LDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHhFQSwweEZFLDB4NjAsMHg3OCwKLSAgICAweEY3LDB4RkUsMHhE
NywweEY2LDB4RkYsMHhCRCwweERGLDB4REYsMHhGNywweEY2LDB4MTMsMHhFNiwweDYwLDB4Njgs
MHg2OCwweDYyLAotICAgIDB4RUYsMHhDNCwweEE2LDB4N0EsMHhGOCwweDc4LDB4NzgsMHg3OCww
eEM3LDB4ODIsMHg0NiwweDcyLDB4QjgsMHhGOCwweDU2LDB4NUYsCi0gICAgMHg4NywweDdBLDB4
MjYsMHg3MiwweDJBLDB4QUIsMHhGQSwweDdELDB4QTgsMHg3QSwweDQ3LDB4NzIsMHgwMCwweEFC
LDB4OUQsMHg1RCwKLSAgICAweEU5LDB4ODIsMHg0NiwweDcyLDB4MEEsMHgyQSwweEJGLDB4RjUs
MHg0QSwweDhCLDB4NjcsMHg3MiwweEEyLDB4QUIsMHg3RCwweDU1LAotICAgIDB4RTksMHg4QSww
eDA2LDB4NkEsMHhBOCwweEU4LDB4RkIsMHg1RiwweEE4LDB4N0EsMHgwNSwweDYyLDB4ODgsMHhB
QSwweEJBLDB4N0YsCi0gICAgMHhBOCwweDdBLDB4MDYsMHg2MiwweEE4LDB4RkUsMHg1RSwweDVG
LDB4MjcsMHg2QSwweDg0LDB4NTEsMHhFMCwweEJBLDB4QkYsMHhERSwKLSAgICAweEU1LDB4NjEs
MHg2NCwweDUxLDB4MEEsMHhBQSwweEFDLDB4QTUsMHgwNSwweDYyLDB4ODQsMHg1OSwweDAyLDB4
N0IsMHhGRiwweEQ3LAotICAgIDB4RTUsMHg2MSwweEE0LDB4NTksMHg4QSwweERGLDB4QjksMHhG
NSwweEU1LDB4NjEsMHg4NCwweDU5LDB4QTIsMHhBQSwweEI4LDB4QkIsCi0gICAgMHhFNSwweDYx
LDB4QTQsMHg1OSwweEU1LDB4QUEsMHg4MiwweEFBLDB4MDYsMHg2MiwweEE1LDB4NTksMHg1Riww
eEQ1LDB4QkUsMHg4RSwKLSAgICAweEU1LDB4NjEsMHhBNSwweDU5LDB4NTMsMHgyQiwweDA5LDB4
MDIsMHgyNiwweDZBLDB4QzUsMHg1OSwweEVGLDB4QjksMHhDQiwweDBBLAotICAgIDB4NjcsMHg3
MiwweEM1LDB4NTksMHg1RiwweEVELDB4QUEsMHhBMiwweEE4LDB4ODIsMHhFNSwweDYxLDB4REQs
MHhGNywweEJCLDB4MDIsCi0gICAgMHgwOSwweDkzLDB4NjYsMHg3MiwweEQ1LDB4QkQsMHgyQSww
eDBFLDB4MkEsMHg5MywweEM4LDB4OEEsMHg5RiwweDgzLDB4MDgsMHgyOCwKLSAgICAweEFDLDB4
QTMsMHgwQSwweDkzLDB4MEQsMHgyQiwweDBELDB4MkIsMHg0RSwweEJDLDB4Q0MsMHhBQiwweDdE
LDB4MEYsMHhBRiwweDI5LAotICAgIDB4NkUsMHhCQywweDZCLDB4QTMsMHg1RiwweEZFLDB4QTgs
MHgwMCwweDJELDB4QjQsMHgwQSwweDkzLDB4NTUsMHg1RiwweDdBLDB4QjAsCi0gICAgMHgyQSww
eDlCLDB4QzgsMHg4QSwweEJGLDB4RkUsMHg1NywweEY4LDB4NkIsMHhBMywweEM5LDB4OEEsMHgw
QiwweDJELDB4M0YsMHhBNSwKLSAgICAweEVELDB4QjMsMHg0QSwweDlCLDB4ODMsMHhBQSwweEZG
LDB4RDUsMHgyQSwweDlCLDB4NjcsMHg4MiwweEQ0LDB4NTgsMHg3OCwweEYwLAotICAgIDB4ODcs
MHg4MiwweDI2LDB4NzIsMHg3QSwweEVBLDB4N0UsMHgyQSwweDRBLDB4OTMsMHhDNSwweDY5LDB4
NTcsMHhERiwweEI1LDB4MkYsCi0gICAgMHg1NiwweEVFLDB4QzksMHg4MiwweDM1LDB4MkQsMHgw
QiwweDBCLDB4RDcsMHhGRSwweDM1LDB4RUUsMHgwOSwweDAzLDB4MDIsMHgwMCwKLSAgICAweDE4
LDB4RkYsMHhGNywweEZFLDB4RkQsMHhCRCwweEJELDB4QTUsMHgxOCwweEZGLDB4RjgsMHhGNiww
eEVFLDB4N0UsMHhEOCwweEJBLAotICAgIDB4MTcsMHhGRiwweEY3LDB4RjYsMHhFRiwweEVCLDB4
RjcsMHhGQSwweDE4LDB4RkYsMHhGNywweEY2LDB4QkEsMHg4RSwweEVCLDB4OEUsCi0gICAgMHgx
NywweEZGLDB4RDcsMHhGNiwweEFBLDB4QkEsMHhGQSwweEZFLDB4MTcsMHhGRiwweEQ3LDB4RjYs
MHhCRiwweEI2LDB4M0EsMHhBQiwKLSAgICAweDE4LDB4RkYsMHhCNiwweEVFLDB4ODIsMHhBMCww
eEE4LDB4NzIsMHhGNywweEY2LDB4OTYsMHhFRSwweEY4LDB4RkEsMHg1RSwweDU3LAotICAgIDB4
NzUsMHhFRSwweEI2LDB4RTYsMHhBRCwweEFBLDB4QUUsMHhFQiwweEI2LDB4RUUsMHg3NSwweEVF
LDB4RkYsMHg3RiwweDdGLDB4MDAsCi0gICAgMHhCNiwweEY2LDB4NTQsMHhFNiwweDdGLDB4RkYs
MHhFQiwweDgwLDB4NzUsMHhFRSwweEQzLDB4RDUsMHg1QSwweDVFLDB4OUUsMHgyOCwKLSAgICAw
eDE4LDB4RkYsMHgzNCwweERFLDB4MEQsMHgwRiwweDAzLDB4MDIsMHgzOSwweEZGLDB4MTgsMHhG
RiwweEJGLDB4QkYsMHhCQiwweEFGLAotICAgIDB4MzksMHhGRiwweDE4LDB4RkYsMHhDMiwweDAw
LDB4MDIsMHhDMiwweDE4LDB4RjcsMHhENywweEY2LDB4NTYsMHg1RSwweDc4LDB4RjgsCi0gICAg
MHhGOCwweEY2LDB4RDcsMHhGNiwweEE1LDB4MjksMHhBMywweDBBLDB4MTgsMHhGRiwweEY4LDB4
RjYsMHhBRiwweEVELDB4QUYsMHhBOSwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4QkEsMHg3
RiwweERELDB4RUYsMHgxOCwweEZGLDB4RjgsMHhGNiwweDZBLDB4RkYsMHg3RCwweDdELAotICAg
IDB4RjgsMHhGNiwweEI3LDB4RjYsMHg2MCwweDgwLDB4MjAsMHgwMCwweEQ3LDB4RjYsMHg1NSww
eEU2LDB4NTcsMHg1RSwweDdDLDB4NzgsCi0gICAgMHg3NiwweEVFLDB4NTUsMHhFNiwweEVCLDB4
OEYsMHgxRiwweEVCLDB4NTUsMHhFRSwweDM1LDB4RTYsMHg3OCwweDcwLDB4RjAsMHhFOCwKLSAg
ICAweDc2LDB4RUUsMHgxNCwweERFLDB4MkEsMHgyQSwweEFGLDB4QTksMHhENywweEY2LDB4NTUs
MHhFRSwweDBCLDB4MEIsMHgyRCwweEFGLAotICAgIDB4MTgsMHhGNywweEI2LDB4RUUsMHhDQSww
eEEyLDB4RkIsMHhBRCwweEY3LDB4RjYsMHhENywweEY2LDB4MkIsMHg4RCwweEE1LDB4QkUsCi0g
ICAgMHhENywweEZFLDB4RjgsMHhGNiwweDU3LDB4NUQsMHg5NywweDU1LDB4MTgsMHhGRiwweEY4
LDB4RjYsMHhFRCwweEFELDB4RkQsMHhFRCwKLSAgICAweEY3LDB4RjYsMHhEOCwweEY2LDB4MkEs
MHhCOCwweDcwLDB4QjAsMHgxOCwweEZGLDB4RDcsMHhGNiwweDNELDB4QTcsMHhCNywweDU3LAot
ICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHg1RiwweDdGLDB4RkYsMHhCRCwweDE4LDB4RkYsMHhE
NywweEY2LDB4RkUsMHhGRiwweEVBLDB4QTgsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDA4
LDB4MkUsMHhBQSwweDIyLDB4MTgsMHhGRiwweEY3LDB4RjYsMHg3NSwweDU1LDB4NzUsMHhENywK
LSAgICAweEY3LDB4RkUsMHhGOCwweEY2LDB4NzUsMHhERCwweDdGLDB4RjcsMHgxOCwweEZGLDB4
RjgsMHhGNiwweDc1LDB4NTUsMHg3RiwweDdGLAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhB
QiwweEVBLDB4RkIsMHhERiwweEY3LDB4RjYsMHhENywweEY2LDB4MDAsMHgwMCwweDAwLDB4QUMs
Ci0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDI4LDB4MjIsMHhBQywweEVFLDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHg2QywweDdFLDB4RDcsMHg1OSwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4
MDAsMHhDOCwweEUwLDB4QzAsMHhENywweEY2LDB4OTYsMHhFRSwweEFCLDB4OEIsMHhFRSwweDdG
LAotICAgIDB4QjYsMHhFRSwweDc1LDB4RTYsMHhFOCwweEFFLDB4RUMsMHhERiwweEQ3LDB4RjYs
MHg5NiwweEVFLDB4MEQsMHgyRCwweDI1LDB4QUQsCi0gICAgMHhGNywweEY2LDB4QjcsMHhFRSww
eEFBLDB4RTgsMHhGQSwweEVGLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhBQSwweEVCLDB4RkEsMHhG
QiwKLSAgICAweEI3LDB4RjYsMHg1NSwweEU2LDB4N0UsMHhENiwweDc2LDB4NUMsMHg5NiwweEVF
LDB4NzYsMHhFRSwweDg5LDB4RkYsMHg3RCwweEQ1LAotICAgIDB4NzYsMHhFRSwweDU1LDB4RTYs
MHg4OCwweEUwLDB4RjAsMHhGRSwweDk2LDB4RUUsMHg1NSwweEU2LDB4QUIsMHhCQiwweEVGLDB4
RkYsCi0gICAgMHg3NiwweEVFLDB4RDMsMHhERCwweEUwLDB4RTAsMHhFMCwweDYwLDB4RjMsMHhE
RCwweDcyLDB4Q0QsMHhCRiwweEFGLDB4MkYsMHgzRiwKLSAgICAweDc2LDB4RUUsMHhGNCwweERE
LDB4MkQsMHgyRCwweDBCLDB4MkQsMHg3NiwweEVFLDB4MTQsMHhFNiwweEY4LDB4QjgsMHg2OCww
eDcwLAotICAgIDB4MzQsMHhFNiwweEY0LDB4REQsMHhFQywweDY4LDB4RkEsMHhCNywweDE1LDB4
RTYsMHg5MiwweEQ1LDB4NjAsMHg0OCwweDZBLDB4NjIsCi0gICAgMHgxMCwweEM1LDB4RUMsMHhB
MywweEU4LDB4RjgsMHhGQywweDdDLDB4RjAsMHhDNCwweEVDLDB4OUIsMHhBRiwweDJGLDB4M0Qs
MHgyNSwKLSAgICAweDM0LDB4RTYsMHg1MSwweENELDB4QUQsMHgyRCwweDNELDB4MkYsMHg1NSww
eEU2LDB4MTQsMHhFNiwweEFGLDB4ODksMHgyMywweDIzLAotICAgIDB4NTQsMHhFNiwweDE0LDB4
REUsMHhGQSwweDVFLDB4REEsMHhGQywweEI3LDB4RjYsMHgzNCwweEU2LDB4RjUsMHhBRCwweEE5
LDB4MDksCi0gICAgMHhCNiwweEY2LDB4NTUsMHhFNiwweEQ1LDB4RkYsMHhFQSwweDcwLDB4NzYs
MHhFRSwweDU1LDB4RTYsMHhENywweDFGLDB4MkYsMHgyQiwKLSAgICAweEI2LDB4RUUsMHg3Niww
eEVFLDB4QUQsMHgyRiwweEFBLDB4QUEsMHhCNiwweEY2LDB4OTYsMHhFRSwweENBLDB4Q0IsMHg3
RSwweERFLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHgwQSwweDMxLDB4MjIsMHhCQSwweEQ2
LDB4RjYsMHhCNiwweEVFLDB4QjgsMHhGRSwweEEyLDB4ODAsCi0gICAgMHhENiwweEY2LDB4RDcs
MHhFRSwweEFBLDB4QTIsMHhBQSwweEFBLDB4RDYsMHhGNiwweEI3LDB4RUUsMHhFQSwweEE4LDB4
MkMsMHgyOCwKLSAgICAweEY2LDB4RjYsMHhCNywweEVFLDB4QkQsMHhGRSwweEZBLDB4RUEsMHhE
NywweEY2LDB4QjYsMHhFRSwweEEyLDB4RTIsMHg4MiwweEE4LAotICAgIDB4RDYsMHhGNiwweEI2
LDB4RUUsMHgyMiwweDBBLDB4OEIsMHhBOCwweEY3LDB4RjYsMHhCNiwweEVFLDB4QkEsMHhGRSww
eEFCLDB4QUYsCi0gICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEJBLDB4RUYsMHhBQSwweEFBLDB4
RDYsMHhGNiwweEY4LDB4RUUsMHg4OCwweDI4LDB4MDAsMHgyMiwKLSAgICAweEY1LDB4RjYsMHhE
NywweEY2LDB4NTcsMHhERiwweEY1LDB4RkQsMHhENiwweEY2LDB4RDcsMHhFRSwweEFBLDB4QTIs
MHhBQSwweDI4LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGRSwweDZFLDB4NjAsMHhGMCww
eEQ2LDB4RjYsMHhCNiwweEVFLDB4NkYsMHg3RiwweEY5LDB4OUIsCi0gICAgMHhENiwweEY2LDB4
QjYsMHhFRSwweDhGLDB4RUYsMHhCRSwweEFFLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhBQSwweEE4
LDB4QkEsMHhGRiwKLSAgICAweEY2LDB4RjYsMHhCNiwweEVFLDB4RUIsMHhFQiwweEFGLDB4QUYs
MHhGNywweEY2LDB4QjYsMHhFRSwweEFBLDB4QkEsMHhBRCwweEJCLAotICAgIDB4RjYsMHhGNiww
eEQ2LDB4RjYsMHhGNiwweEZGLDB4REQsMHhGNSwweEY2LDB4RjYsMHhENiwweEY2LDB4QUEsMHhB
MiwweEJCLDB4NzksCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDIwLDB4QUEsMHhBRSwweEY1
LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4MCwweDI4LDB4QTAsMHhBQSwKLSAgICAweEY3LDB4RkUs
MHhGNywweEY2LDB4RkQsMHhERiwweDdGLDB4N0QsMHhENywweEZFLDB4RjcsMHhGNiwweEY1LDB4
RkQsMHhGRCwweEJELAotICAgIDB4RjcsMHhGRSwweEQ2LDB4RjYsMHhEOCwweEVBLDB4RkYsMHg1
RSwweEI2LDB4RjYsMHg1MSwweENELDB4QzAsMHg2MCwweDQwLDB4NjAsCi0gICAgMHg0RCwweEFD
LDB4QTYsMHg3QSwweDU4LDB4NUMsMHg1QywweDVDLDB4RTcsMHg4MiwweDQ1LDB4NkEsMHg1NSww
eDU3LDB4RkQsMHg4QSwKLSAgICAweEE3LDB4N0EsMHgyNiwweDZBLDB4N0QsMHg3NywweDdBLDB4
NzgsMHg2NywweDcyLDB4QzUsMHg2MSwweDBBLDB4QkEsMHg2RSwweEVGLAotICAgIDB4NDcsMHg3
MiwweEU2LDB4NjEsMHgwMiwweEVBLDB4RjUsMHg4NSwweDQ2LDB4NkEsMHhFNSwweDYxLDB4QkMs
MHhERiwweDdCLDB4RDcsCi0gICAgMHg0NiwweDZBLDB4RTUsMHg2MSwweDlGLDB4M0YsMHhBRiww
eEFBLDB4NDYsMHg2QSwweDI2LDB4NkEsMHgwNiwweDY4LDB4OUUsMHg3NiwKLSAgICAweDQ2LDB4
NkEsMHhDNCwweDU5LDB4RTgsMHhGOCwweEZBLDB4NUUsMHhFNSwweDU5LDB4NDMsMHg1MSwweDZF
LDB4RTAsMHhFOCwweEVBLAotICAgIDB4ODQsMHg1OSwweDAzLDB4NDksMHg4MiwweDZBLDB4QUEs
MHhBMCwweDg0LDB4NTksMHgyMywweDQ5LDB4MkUsMHgzRCwweDI1LDB4OEEsCi0gICAgMHhDNiww
eDYxLDB4NjQsMHg1MSwweEQ1LDB4QkQsMHg4QiwweDBCLDB4MDYsMHg2MiwweDg1LDB4NTksMHhG
RiwweEZGLDB4QkEsMHgyRSwKLSAgICAweDA2LDB4NjIsMHhBNSwweDU5LDB4RkIsMHhCNSwweEZF
LDB4RTgsMHgyNiwweDZBLDB4QzUsMHg2MSwweEVCLDB4RkYsMHgwRiwweDI5LAotICAgIDB4NDcs
MHg3MiwweEM1LDB4NTksMHg3RCwweEQ3LDB4QUIsMHgyQSwweEM4LDB4N0EsMHgwNiwweDYyLDB4
RjUsMHhGRiwweEZELDB4OEYsCi0gICAgMHhFOSwweDhBLDB4NDYsMHg3MiwweEY1LDB4QkQsMHgy
RCwweDJBLDB4MkEsMHg5MywweEM4LDB4ODIsMHhGNSwweEZGLDB4MkUsMHgwQiwKLSAgICAweDJB
LDB4OTMsMHhFOCwweDhBLDB4MzYsMHgyQiwweEFDLDB4QUEsMHg2QiwweDlCLDB4MDksMHg5Myww
eEZGLDB4RkYsMHhFQiwweDJCLAotICAgIDB4OEIsMHhBMywweDJBLDB4OUIsMHgyOSwweDJCLDB4
MEIsMHgwMiwweDZFLDB4QkMsMHhBQywweEFCLDB4MkQsMHhBNSwweEFELDB4QUQsCi0gICAgMHhD
RiwweENDLDB4NEUsMHhCQywweEY3LDB4QUQsMHhBRiwweDBGLDB4Q0YsMHhDQywweENDLDB4QUIs
MHg3RSwweEVBLDB4QTgsMHhBMCwKLSAgICAweDBELDB4QjQsMHgyQSwweDkzLDB4NUYsMHg3QSww
eEY4LDB4RTgsMHg0QSwweDkzLDB4RTksMHg4QSwweEFGLDB4RUYsMHhGQSwweEY4LAotICAgIDB4
MkEsMHg5MywweDg3LDB4ODIsMHgwMCwweEVBLDB4NkUsMHg3RSwweEU5LDB4OEEsMHhDNSwweDY5
LDB4QTAsMHhFQSwweDdFLDB4NTcsCi0gICAgMHgwOSwweDhCLDB4RTUsMHg2OSwweEZGLDB4REQs
MHhCNSwweDNELDB4MTIsMHhFNiwweEU4LDB4ODIsMHhGNSwweEI1LDB4MkQsMHgwQiwKLSAgICAw
eEQ3LDB4RkUsMHg3MiwweEQ1LDB4MkQsMHgwQiwweDAyLDB4MDAsMHgxOCwweEZGLDB4RDcsMHhG
RSwweEJGLDB4RUIsMHhBQSwweEFBLAotICAgIDB4MTgsMHhGRiwweEY3LDB4RkUsMHg4RCwweEFC
LDB4QTUsMHgyRCwweDE4LDB4RkYsMHhGNywweEY2LDB4QTIsMHg4MCwweEE4LDB4RkEsCi0gICAg
MHgxNywweEZGLDB4RjgsMHhGNiwweEFBLDB4N0EsMHhBRSwweEFBLDB4RjcsMHhGRSwweDE4LDB4
RjcsMHhFRiwweEZFLDB4RkYsMHhBRiwKLSAgICAweDE3LDB4RkYsMHhENywweEY2LDB4N0EsMHhG
QSwweEVBLDB4RUEsMHgxNywweEZGLDB4QjYsMHhFRSwweDIyLDB4MEEsMHhFMiwweDZBLAotICAg
IDB4RjcsMHhGNiwweDk2LDB4RUUsMHg2MCwweDVDLDB4REYsMHhGNywweEY3LDB4RjYsMHg5Niww
eEVFLDB4NTUsMHhGNSwweEZELDB4MEIsCi0gICAgMHgxNywweEZGLDB4OTYsMHhFRSwweEZELDB4
QUYsMHg4QSwweDAwLDB4MzgsMHhGRiwweEQ3LDB4RjYsMHhENSwweEZCLDB4QUEsMHg4QSwKLSAg
ICAweDE4LDB4RkYsMHhCNiwweEY2LDB4N0UsMHhGRSwweEUyLDB4RjAsMHhGNywweEY2LDB4NzUs
MHhFRSwweDlELDB4QjcsMHgzNywweDM3LAotICAgIDB4MzgsMHhGRiwweEY4LDB4RkUsMHhBRiww
eEFCLDB4QUEsMHg4QSwweDM5LDB4RkYsMHgxOCwweEZGLDB4QkYsMHhGNSwweDJELDB4MjksCi0g
ICAgMHgzOSwweEZGLDB4MTgsMHhGRiwweEMyLDB4RTgsMHhFMCwweEIwLDB4MTgsMHhGRiwweEY4
LDB4RjYsMHg1NiwweDc4LDB4NTAsMHhEMCwKLSAgICAweEY4LDB4RjYsMHhENywweEY2LDB4ODgs
MHhBQSwweEI4LDB4QTIsMHgxOCwweEZGLDB4RjgsMHhGNiwweEZELDB4RjUsMHhENSwweERELAot
ICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhFRCwweEE1LDB4QUIsMHhBRiwweDE4LDB4RkYsMHhG
OCwweEY2LDB4RUIsMHhBRSwweDJBLDB4QkEsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEZB
LDB4REEsMHhCMiwweEFBLDB4MTgsMHhGRiwweDU1LDB4RTYsMHg3QSwweEZBLDB4RTAsMHhBOCwK
LSAgICAweDc1LDB4RUUsMHg1NSwweEU2LDB4QkYsMHhGRCwweERGLDB4NzAsMHg3NSwweEVFLDB4
MzUsMHhFNiwweEVBLDB4RkYsMHhBRiwweDlBLAotICAgIDB4NzYsMHhFRSwweDM1LDB4RTYsMHhB
RCwweEVGLDB4MkYsMHhBQiwweEI2LDB4RjYsMHg1NSwweEU2LDB4QUQsMHhBRCwweEJGLDB4MEYs
Ci0gICAgMHhGNywweEY2LDB4QjYsMHhGNiwweDhGLDB4QTksMHhFRCwweEFELDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHhGQSwweDdCLDB4RkYsMHhCRiwKLSAgICAweDE4LDB4RkYsMHhENywweEY2LDB4
QUEsMHhBQiwweEVCLDB4QUYsMHgxOCwweEZGLDB4RjgsMHhGNiwweEVCLDB4RUQsMHhGNSwweDU1
LAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHg1NywweDU2LDB4NUYsMHg1RiwweEY4LDB4RjYs
MHhENywweEY2LDB4REUsMHhGQSwweEEyLDB4MjAsCi0gICAgMHhGOCwweEY2LDB4RDcsMHhGNiww
eDAwLDB4QTIsMHhBQSwweDJCLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBQSwweEJGLDB4QkYsMHhC
RiwKLSAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4NUQsMHg3NywweDdFLDB4RkQsMHhGNywweEY2
LDB4RDcsMHhGNiwweDAwLDB4QTAsMHhGMiwweEEwLAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYs
MHhBRSwweEJFLDB4RUIsMHg3RiwweDE4LDB4RkYsMHhGNywweEY2LDB4RkYsMHhFRCwweDc3LDB4
RDUsCi0gICAgMHgxOCwweEY3LDB4RDcsMHhGNiwweERFLDB4RkEsMHg3RSwweEZGLDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHhCQywweEVFLDB4MkUsMHg5RSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2
LDB4QTgsMHhBQSwweEFFLDB4OEEsMHhENywweEY2LDB4RjcsMHhFRSwweDJBLDB4QTIsMHgwMiww
eDAwLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhDQSwweEVCLDB4RTMsMHhFQiwweEI2LDB4
RUUsMHg5NiwweEVFLDB4RTAsMHhDMCwweDc4LDB4NTYsCi0gICAgMHg5NiwweEVFLDB4NzUsMHhF
RSwweDlFLDB4QjgsMHhDMiwweDZBLDB4RDcsMHhGNiwweDc2LDB4RUUsMHhBQiwweDBCLDB4RUYs
MHhBRCwKLSAgICAweEQ3LDB4RjYsMHhCNiwweEVFLDB4RUEsMHhFQiwweEFCLDB4M0EsMHhENyww
eEY2LDB4QjYsMHhFRSwweDhCLDB4RkIsMHg2MywweDc0LAotICAgIDB4OTYsMHhFRSwweDE0LDB4
REUsMHhGOCwweEZDLDB4RkMsMHg1OCwweDk2LDB4RUUsMHgzNSwweEU2LDB4MkIsMHhBQiwweDhG
LDB4QUQsCi0gICAgMHg3NSwweEVFLDB4NTYsMHhFNiwweEU4LDB4QTIsMHgyQiwweDJBLDB4OTYs
MHhFRSwweDU1LDB4RUUsMHhCNywweDlELDB4MkYsMHg4QiwKLSAgICAweDk2LDB4RUUsMHhGNCww
eERELDB4NjAsMHg3MiwweDY4LDB4RTAsMHgxNCwweERFLDB4NzIsMHhDRCwweEI3LDB4MkYsMHgz
NSwweEI3LAotICAgIDB4NzYsMHhFRSwweEYzLDB4REQsMHgyRCwweEFGLDB4MkIsMHgyQiwweDc1
LDB4RUUsMHgzNSwweEU2LDB4NzIsMHg3QSwweDVBLDB4N0EsCi0gICAgMHgxNCwweEU2LDB4RDMs
MHhERCwweEU4LDB4RkEsMHg3RSwweDU2LDB4MTQsMHhFNiwweDkzLDB4RDUsMHg2MiwweDZBLDB4
RUYsMHg3QiwKLSAgICAweEYwLDB4QzQsMHg4QiwweDkzLDB4RkMsMHhGQywweDdDLDB4RjgsMHg3
MiwweEQ1LDB4RUMsMHg5QiwweDM1LDB4MjUsMHgyRCwweDJCLAotICAgIDB4NTUsMHhFRSwweDky
LDB4RDUsMHhCRCwweEFELDB4MkQsMHhBRCwweDk2LDB4RUUsMHgzNCwweEU2LDB4RkQsMHgyQSww
eDBBLDB4MDIsCi0gICAgMHg5NiwweEVFLDB4MzQsMHhFNiwweDU3LDB4RjQsMHg4MCwweDAwLDB4
QjcsMHhGNiwweDU1LDB4RTYsMHgwOSwweDI5LDB4RUEsMHhGRiwKLSAgICAweEI2LDB4RUUsMHgx
NCwweEU2LDB4QjAsMHhGQSwweEZFLDB4RDYsMHg5NiwweEVFLDB4RjQsMHhERCwweDJBLDB4MEEs
MHhBQSwweDc1LAotICAgIDB4OTYsMHhFRSwweDM1LDB4RTYsMHgyMCwweDAwLDB4ODIsMHgwOSww
eEI2LDB4RjYsMHg1NSwweEU2LDB4QUEsMHhFQSwweDdFLDB4N0YsCi0gICAgMHhENiwweEY2LDB4
QjYsMHhFRSwweEJFLDB4MkIsMHgyQSwweEFBLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3QywweDlG
LDB4NTUsMHg1NSwKLSAgICAweEQ3LDB4RjYsMHhENiwweEVFLDB4QUIsMHhBQSwweDg4LDB4QUEs
MHhENiwweEY2LDB4RDcsMHhFRSwweEFBLDB4QUEsMHg4QSwweDhBLAotICAgIDB4RDYsMHhGNiww
eEI2LDB4RUUsMHg4MCwweEEyLDB4QUIsMHgwQiwweEY2LDB4RjYsMHhCNywweEVFLDB4RkEsMHhG
RSwweEJBLDB4QUIsCi0gICAgMHhENiwweEY2LDB4RjgsMHhFRSwweDAwLDB4QTIsMHgwMiwweDAy
LDB4RDYsMHhGNiwweEI2LDB4RTYsMHg4OCwweDMyLDB4MDIsMHgwMCwKLSAgICAweEQ2LDB4RjYs
MHhGOCwweEVFLDB4MDgsMHg4MiwweDIwLDB4MjIsMHhENywweEY2LDB4RDYsMHhFRSwweEFBLDB4
QTIsMHhBOCwweEEzLAotICAgIDB4QjUsMHhGNiwweEY2LDB4RUUsMHhGQSwweEVBLDB4QkYsMHhB
QSwweEQ2LDB4RjYsMHhENiwweEVFLDB4MzgsMHhBOCwweEFBLDB4QTgsCi0gICAgMHhENiwweEY2
LDB4QjYsMHhFRSwweEYyLDB4RTIsMHg3MCwweDc4LDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBQSww
eEFGLDB4OUQsMHg1NywKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4RUYsMHg5NiwweEZFLDB4
QUEsMHhENiwweEY2LDB4QjYsMHhFRSwweEZFLDB4RUUsMHhFQiwweEZFLAotICAgIDB4RDYsMHhG
NiwweEI2LDB4RjYsMHhBOCwweDBCLDB4OEQsMHhBRiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4ODAs
MHgwMCwweDgwLDB4QTMsCi0gICAgMHhGNiwweEY2LDB4QjYsMHhFRSwweEFBLDB4OUUsMHhCRiww
eEVGLDB4RjYsMHhGNiwweEI2LDB4RUUsMHhBQSwweERBLDB4QkYsMHhFRiwKLSAgICAweEQ2LDB4
RjYsMHhGNywweEVFLDB4ODgsMHg4MCwweDIwLDB4QTgsMHhGNywweEY2LDB4RDYsMHhGNiwweEZB
LDB4RkEsMHhFRCwweEY3LAotICAgIDB4RjcsMHhGNiwweEQ2LDB4RjYsMHgzOCwweDk2LDB4RUIs
MHhGQSwweEY3LDB4RkUsMHhENywweEY2LDB4QUEsMHhBRiwweEZGLDB4NzQsCi0gICAgMHhGNyww
eEZFLDB4NzUsMHhFRSwweEEyLDB4QUEsMHhFQSwweDdFLDB4NTQsMHhFRSwweDI5LDB4ODMsMHg4
MCwweEUwLDB4RTAsMHg3OCwKLSAgICAweEVDLDB4QTMsMHhFNSwweDYxLDB4RjgsMHhGQSwweEZF
LDB4NTcsMHhDOCwweDdBLDB4NjQsMHg1MSwweDAwLDB4QTAsMHhGQiwweDU3LAotICAgIDB4QTgs
MHg3QSwweDYzLDB4NTEsMHhBMCwweEU4LDB4RkYsMHhENSwweDI2LDB4NkEsMHg4NCwweDUxLDB4
QTAsMHhBOCwweEJCLDB4RDUsCi0gICAgMHgwNiwweDYyLDB4QTUsMHg1OSwweDAyLDB4MjIsMHhC
QiwweERELDB4MjYsMHg2QSwweDg0LDB4NTEsMHhBQSwweDgyLDB4OEUsMHg2RiwKLSAgICAweDI2
LDB4NkEsMHgyMywweDQxLDB4QTAsMHg4QSwweEZBLDB4NUYsMHhFNSwweDU5LDB4NDMsMHg0OSww
eDAwLDB4RkEsMHg3RSwweDU1LAotICAgIDB4QzUsMHg1OSwweDQzLDB4NDksMHgyQSwweEFBLDB4
RkUsMHhGRCwweEE0LDB4NTEsMHg2NCwweDUxLDB4QjAsMHhFOCwweEFGLDB4N0QsCi0gICAgMHhD
NSwweDYxLDB4NDMsMHg0OSwweERGLDB4RkYsMHgyRiwweDBGLDB4QTgsMHg3QSwweDg0LDB4NTks
MHg1NSwweEZGLDB4QUIsMHgyRSwKLSAgICAweDQ3LDB4NzIsMHhBNSwweDU5LDB4NTUsMHhGRSww
eEE4LDB4MDAsMHgyNywweDZBLDB4QzUsMHg1OSwweEI3LDB4QUYsMHg5OCwweDkwLAotICAgIDB4
NDcsMHg2QSwweEU1LDB4NjEsMHg3OSwweEYyLDB4MjAsMHhBQSwweDA2LDB4NkEsMHhDNSwweDYx
LDB4QTcsMHgzQSwweDlBLDB4QUMsCi0gICAgMHhBOCwweDdBLDB4MDYsMHg2QSwweEY3LDB4QjUs
MHg4RCwweDJGLDB4OEIsMHhBMywweDY3LDB4NzIsMHhGRCwweEFGLDB4QUIsMHgwQiwKLSAgICAw
eENDLDB4QTMsMHhFOSwweDhBLDB4NTUsMHhGRiwweEFBLDB4MjAsMHhBQiwweEEzLDB4QzksMHg4
QSwweEZELDB4QUUsMHhDQSwweDAwLAotICAgIDB4OEIsMHhBMywweDA5LDB4OTMsMHg1NSwweEVG
LDB4RkIsMHg3OCwweDhCLDB4QTMsMHgyQSwweDlCLDB4MzksMHgzRiwweDJELDB4QTksCi0gICAg
MHhBQiwweEEzLDB4NkEsMHhBMywweEFFLDB4OUEsMHhEQywweDU1LDB4MkQsMHhCQywweDhCLDB4
QTMsMHgyQiwweDI1LDB4QUQsMHhGNSwKLSAgICAweENGLDB4Q0MsMHhDQywweEFCLDB4MkEsMHhB
RiwweDM3LDB4RkQsMHhDRiwweENDLDB4MkQsMHhCQywweDc4LDB4RTgsMHg3QSwweDc3LAotICAg
IDB4MkUsMHhCQywweDRBLDB4OUIsMHhGOCwweEY4LDB4NzgsMHg1RSwweDI5LDB4OTMsMHg0Niww
eDdBLDB4ODAsMHhGQywweEZBLDB4NUUsCi0gICAgMHhDOCwweDhBLDB4RTUsMHg2OSwweEUwLDB4
RkEsMHg1NiwweDVGLDB4NDYsMHg3MiwweEE0LDB4NjEsMHhERSwweDVGLDB4QUEsMHgwQSwKLSAg
ICAweEYzLDB4RTUsMHhBNywweDdBLDB4RDUsMHhCNSwweDI1LDB4MkQsMHhENiwweEY2LDB4MTAs
MHhDRCwweDJELDB4MkIsMHgwMiwweDAyLAotICAgIDB4MTgsMHhGRiwweEI2LDB4RkUsMHhBQiww
eDhBLDB4MkEsMHgyMiwweDE3LDB4RkYsMHhGOCwweEZFLDB4QUYsMHhCOSwweEFCLDB4MjIsCi0g
ICAgMHgxNywweEZGLDB4RjgsMHhGNiwweEFBLDB4QTIsMHhBOCwweDA4LDB4MTcsMHhGRiwweEY4
LDB4RjYsMHhFQSwweEEwLDB4ODIsMHg4MiwKLSAgICAweEY3LDB4RkUsMHgxOCwweEY3LDB4RkYs
MHhFRiwweEJGLDB4RkEsMHgxNywweEZGLDB4RjcsMHhGNiwweDVCLDB4RkQsMHhGRiwweEVGLAot
ICAgIDB4MTcsMHhGRiwweEQ3LDB4RjYsMHhBQSwweEUyLDB4RUEsMHg3QSwweEY3LDB4RjYsMHg5
NiwweEVFLDB4RTgsMHg3OCwweEJGLDB4QUYsCi0gICAgMHhGNywweEY2LDB4QjYsMHhFRSwweDdE
LDB4MkYsMHgwQSwweDAwLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhCRCwweDBCLDB4MDIsMHgwMCwK
LSAgICAweDM4LDB4RkYsMHgxOCwweEZGLDB4QjUsMHhBRCwweEFELDB4OEQsMHgzOCwweEZGLDB4
MTgsMHhGRiwweDBBLDB4MDIsMHgwMiwweDAwLAotICAgIDB4MzgsMHhGRiwweEY0LDB4REQsMHhB
MCwweEU4LDB4NzgsMHg3OCwweEY3LDB4RkUsMHhEMywweEQ1LDB4MkIsMHgyNywweDJELDB4MkQs
Ci0gICAgMHgzOCwweEZGLDB4MTgsMHhGRiwweEVELDB4N0QsMHhGRCwweEZELDB4MzksMHhGRiww
eDE4LDB4RkYsMHgyRiwweEFFLDB4QkYsMHhCRCwKLSAgICAweDM4LDB4RkYsMHgxOSwweEZGLDB4
RTgsMHhGOCwweEZBLDB4NkEsMHgxOCwweEZGLDB4RjgsMHhGNiwweEE4LDB4RjgsMHg3MiwweERB
LAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGRiwweEFCLDB4QUYsMHhCRiwweDE4LDB4RkYs
MHhGOCwweEY2LDB4RUUsMHhCQSwweDBBLDB4NkEsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiww
eEZGLDB4RkUsMHhBQSwweEJELDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRSwweDlGLDB4QUYsMHg4
QSwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4QUYsMHgyQiwweDhFLDB4MEEsMHgxOCwweEZG
LDB4RDcsMHhGNiwweDdBLDB4RTIsMHhFQSwweEVBLAotICAgIDB4RjcsMHhGRSwweDU1LDB4RTYs
MHg1RiwweDVFLDB4RkEsMHhGOCwweDc1LDB4RUUsMHg1NSwweEU2LDB4NTUsMHg3RiwweEZBLDB4
MDIsCi0gICAgMHg1NSwweEVFLDB4NzUsMHhFNiwweDgwLDB4ODIsMHhCRSwweEFCLDB4QjYsMHhG
NiwweDU0LDB4RTYsMHgyRiwweDI5LDB4MkIsMHhBQiwKLSAgICAweEY3LDB4RjYsMHhCNywweEY2
LDB4QUYsMHgwRiwweEE1LDB4M0QsMHhGOCwweEY2LDB4RDcsMHhGNiwweEVCLDB4NkUsMHg2MCww
eDYwLAotICAgIDB4RjcsMHhGNiwweEQ4LDB4RjYsMHgwMiwweDAyLDB4QUIsMHhCRCwweEQ2LDB4
RkUsMHhGOCwweEY2LDB4NTUsMHg1RCwweERELDB4NUYsCi0gICAgMHhGOCwweEY2LDB4RDgsMHhG
NiwweDAwLDB4QUUsMHhCRSwweEFBLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhBQSwweDhCLDB4QjMs
MHg4MiwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4ODgsMHhBOCwweDgyLDB4MDAsMHhGNyww
eEY2LDB4RDcsMHhGNiwweDA4LDB4RTAsMHhDOCwweDAwLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHgwMCwweDhBLDB4OEYsMHhCRiwweEY3LDB4RjYsMHhENywweEY2LDB4MjAsMHgwMCwweDBB
LDB4M0IsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweENBLDB4QzgsMHhFMiwweDI4LDB4Rjcs
MHhGRSwweEQ3LDB4RjYsMHgyRCwweDJELDB4MkIsMHhCQSwKLSAgICAweEY3LDB4RjYsMHhENyww
eEY2LDB4QTgsMHhBOCwweEU4LDB4RkEsMHhGNywweEY2LDB4RDcsMHhGNiwweERFLDB4REYsMHg3
RSwweDU2LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhFQiwweDRBLDB4REQsMHg1NSwweEY3
LDB4RjYsMHhCNywweEVFLDB4OEYsMHhCRiwweERFLDB4RkUsCi0gICAgMHhENywweEY2LDB4OTYs
MHhFRSwweEU4LDB4RUMsMHg3RSwweDdGLDB4QjYsMHhFRSwweDU1LDB4RTYsMHhGOCwweEZBLDB4
N0EsMHg1RiwKLSAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4QkIsMHhCRCwweEJELDB4MzUsMHhE
NywweEY2LDB4OTYsMHhFRSwweEFELDB4MkQsMHgwRiwweDNCLAotICAgIDB4RDcsMHhGNiwweEI2
LDB4RjYsMHhCMiwweERGLDB4RDgsMHhFQSwweEQ3LDB4RjYsMHg5NiwweEVFLDB4QTgsMHhBQSww
eEVCLDB4RTgsCi0gICAgMHg5NiwweEVFLDB4RjQsMHhERCwweDc4LDB4NzgsMHg1QywweDVBLDB4
NzYsMHhFRSwweEY0LDB4REQsMHgwMywweDJCLDB4MkQsMHhBRiwKLSAgICAweDc1LDB4RUUsMHg1
NSwweEU2LDB4ODgsMHhBMiwweDg4LDB4QTIsMHg5NiwweEVFLDB4NzUsMHhFRSwweEJGLDB4RDcs
MHg3RCwweDU1LAotICAgIDB4NzYsMHhFRSwweEQzLDB4RDUsMHg2MCwweEY4LDB4NjAsMHg2OCww
eEY0LDB4REQsMHg5MiwweEQ1LDB4QUYsMHgyNywweDJELDB4M0YsCi0gICAgMHg1NSwweEVFLDB4
RjQsMHhERCwweDBCLDB4MkIsMHgyOSwweEE3LDB4NzYsMHhFRSwweDM1LDB4RTYsMHg3QSwweDdB
LDB4NjIsMHg2QiwKLSAgICAweDM1LDB4RTYsMHhEMywweERELDB4NTYsMHg3RSwweEUyLDB4RTgs
MHgxNSwweEU2LDB4QjMsMHhENSwweDdCLDB4NkEsMHg2MiwweDY4LAotICAgIDB4MzEsMHhDNSww
eDBELDB4QTQsMHhEQywweDdDLDB4QkMsMHhBQSwweDkyLDB4RDUsMHhBRiwweEI0LDB4MkQsMHgy
RCwweDA5LDB4QUYsCi0gICAgMHg1NSwweEVFLDB4OTIsMHhENSwweDNGLDB4MzUsMHg5NSwweEZE
LDB4OTYsMHhGNiwweEY0LDB4REQsMHgwMCwweDIyLDB4QUEsMHhGNSwKLSAgICAweDk2LDB4RUUs
MHhEMywweERELDB4QTAsMHhFQSwweEZGLDB4NUYsMHgzNSwweEU2LDB4OTIsMHhENSwweDgwLDB4
QkEsMHhERiwweDU1LAotICAgIDB4RjQsMHhERCwweDUyLDB4Q0QsMHgwMCwweEFBLDB4RkIsMHhG
RCwweEY0LDB4REQsMHg5MiwweEQ1LDB4OEYsMHhBRiwweEFELDB4MEQsCi0gICAgMHg3NiwweEVF
LDB4RjMsMHhERCwweDBELDB4QTUsMHhBRCwweEFELDB4NzYsMHhFRSwweDM1LDB4RTYsMHhFOCww
eEZDLDB4NTcsMHg1NSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhBQSwweDA4LDB4
ODMsMHhGNiwweEY2LDB4QjcsMHhFRSwweEZCLDB4RUIsMHhBQSwweEFGLAotICAgIDB4RDYsMHhG
NiwweEI2LDB4RUUsMHgyQiwweDgzLDB4MDIsMHgwOCwweEQ2LDB4RjYsMHhENywweEVFLDB4OEEs
MHhBQSwweEFBLDB4MkEsCi0gICAgMHhENiwweEY2LDB4RDcsMHhFRSwweEEyLDB4OEEsMHhBOCww
eEFBLDB4RjYsMHhGNiwweEQ2LDB4RjYsMHhCRCwweENCLDB4N0QsMHg1NSwKLSAgICAweEQ2LDB4
RjYsMHhCNiwweEVFLDB4MzgsMHgwMCwweDJBLDB4MzgsMHhGNiwweEY2LDB4RDYsMHhGNiwweEY1
LDB4RjUsMHhERCwweEZELAotICAgIDB4RDYsMHhGNiwweEQ3LDB4RUUsMHg4QSwweEE4LDB4MkEs
MHhBOCwweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUEsMHg4QSwweDMwLDB4MDAsCi0gICAgMHhGNiww
eEY2LDB4QjYsMHhFRSwweEZGLDB4RkYsMHhFRSwweEFBLDB4RDYsMHhGNiwweEQ2LDB4RUUsMHgy
QSwweDIyLDB4QUEsMHhBQSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QjYsMHgyRSwweEEy
LDB4RkEsMHhENiwweEY2LDB4QjYsMHhFRSwweDlGLDB4REYsMHhFNywweEE1LAotICAgIDB4QjYs
MHhGNiwweEQ2LDB4RUUsMHhFQiwweEFBLDB4QkEsMHgyQSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4
RkEsMHg2MywweEFGLDB4QkQsCi0gICAgMHhENywweEY2LDB4QjYsMHhGNiwweEZCLDB4RUIsMHhF
QSwweEY3LDB4RDYsMHhGNiwweEI2LDB4RUUsMHgyOSwweEZCLDB4QUYsMHhBQiwKLSAgICAweEQ2
LDB4RjYsMHhCNiwweEVFLDB4MEEsMHgwQSwweDI4LDB4QkEsMHhENiwweEY2LDB4QjYsMHhFRSww
eDA4LDB4MjgsMHhBOCwweEEzLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHgwMCwweEEyLDB4
QTgsMHhBMiwweEY2LDB4RjYsMHhCNSwweEVFLDB4QUEsMHhCQSwweEVFLDB4RkEsCi0gICAgMHhG
NiwweEY2LDB4QjUsMHhFRSwweDJBLDB4QUIsMHgzRiwweEZGLDB4RjYsMHhGNiwweEI3LDB4RjYs
MHhFOCwweEZBLDB4RkUsMHhGRSwKLSAgICAweEQ3LDB4RjYsMHg3NSwweEVFLDB4NkEsMHg2OCww
eEMwLDB4QzAsMHhGMywweERELDB4RTgsMHg4MiwweDc4LDB4NzgsMHg3OCwweDc4LAotICAgIDB4
NDYsMHg2QSwweEE0LDB4NTEsMHg3RSwweDU2LDB4NUMsMHg1OCwweDg0LDB4NTEsMHgyMywweDQx
LDB4NzcsMHhCRSwweDdBLDB4QTAsCi0gICAgMHg2MywweDQ5LDB4RTIsMHgzOCwweDAyLDB4QTgs
MHhERiwweDU2LDB4ODQsMHg1MSwweEMyLDB4MzAsMHgwQSwweDJFLDB4RUYsMHg1NSwKLSAgICAw
eDg0LDB4NTEsMHhDMiwweDMwLDB4MDAsMHgwMiwweEJGLDB4RkQsMHhBNCwweDUxLDB4MDMsMHgz
OSwweEEwLDB4RkIsMHhENywweDU1LAotICAgIDB4ODQsMHg1MSwweEUyLDB4MzgsMHhFMiwweERC
LDB4RDUsMHg1NywweDQzLDB4NDksMHhFMiwweDM4LDB4ODIsMHhCNiwweEZELDB4NzUsCi0gICAg
MHg0NCwweDQ5LDB4QzIsMHgzOCwweDIyLDB4QUYsMHhBRCwweEFCLDB4ODQsMHg1MSwweDIzLDB4
NDksMHhBOSwweEFELDB4M0YsMHhGOSwKLSAgICAweDY3LDB4NzIsMHg4NCwweDU5LDB4QkQsMHgy
RCwweDJELDB4MkYsMHhFOCwweDgyLDB4NjcsMHg3MiwweEJELDB4MjksMHg4QiwweEFCLAotICAg
IDB4QTgsMHg3QSwweDQ3LDB4NzIsMHhGQywweDdFLDB4N0MsMHhGMiwweDQ3LDB4NkEsMHhDNSww
eDYxLDB4QkMsMHhBOCwweEY4LDB4NUMsCi0gICAgMHgyNiwweDZBLDB4QzUsMHg1OSwweEVDLDB4
N0YsMHhGQiwweEVCLDB4MjYsMHg2QSwweEM1LDB4NjEsMHhCRSwweEFELDB4QTksMHhBQSwKLSAg
ICAweEM4LDB4ODIsMHgyNiwweDZBLDB4M0QsMHgyRCwweDJGLDB4QjcsMHhDQywweEEzLDB4Qzks
MHg4MiwweDBCLDB4MEIsMHhBOSwweEE1LAotICAgIDB4MEQsMHhCNCwweEFDLDB4QTMsMHhBMiww
eDJBLDB4MkYsMHg5RCwweDRFLDB4QkMsMHhFRCwweEFCLDB4NUYsMHhGRSwweDJGLDB4OEYsCi0g
ICAgMHg0RCwweEJDLDB4NEEsMHg5QiwweDVGLDB4RkEsMHhDMCwweDgwLDB4Q0MsMHhBQiwweDJB
LDB4OUIsMHhGNywweDVFLDB4N0UsMHhCMCwKLSAgICAweDhCLDB4QTMsMHgyOSwweDlCLDB4NkYs
MHg3NSwweEZCLDB4ODAsMHg4QiwweEEzLDB4RTgsMHg4QSwweDJBLDB4QUYsMHhGRiwweDU1LAot
ICAgIDB4RUMsMHhBQiwweDA5LDB4OTMsMHgwQSwweEFCLDB4QUYsMHhGRCwweDBELDB4QjQsMHg2
QSwweDlCLDB4MEEsMHhBRiwweEJGLDB4NzUsCi0gICAgMHhFQywweEFCLDB4QzgsMHg4QSwweEUw
LDB4RjgsMHg3QSwweDVGLDB4QzgsMHg4QSwweDI2LDB4NzIsMHhGQywweEZFLDB4REYsMHg1NywK
LSAgICAweEM5LDB4OEEsMHhFNiwweDY5LDB4NUQsMHg3RiwweDhBLDB4MEIsMHg0RCwweEI0LDB4
MjYsMHg3MiwweEQ1LDB4QkQsMHgzRCwweDJGLAotICAgIDB4QjYsMHhGRSwweEFCLDB4OUIsMHhB
RCwweDJELDB4MkEsMHgwQSwweDE4LDB4RkYsMHg5NiwweEY2LDB4MjksMHgyRiwweDhCLDB4MkEs
Ci0gICAgMHgxOCwweEZGLDB4RjcsMHhGRSwweEJELDB4QkQsMHhBNSwweEE3LDB4MTgsMHhGRiww
eDE3LDB4RjcsMHhBQSwweEE4LDB4QTAsMHgyMCwKLSAgICAweDE4LDB4RkYsMHhGNiwweEVFLDB4
QTgsMHgyMiwweDA4LDB4QTAsMHhGNywweEZFLDB4MTgsMHhGNywweERGLDB4RkYsMHhGRiwweEVG
LAotICAgIDB4MTcsMHhGRiwweEY3LDB4RjYsMHg5RSwweEJBLDB4ODgsMHhBQSwweDE3LDB4RkYs
MHhENywweEY2LDB4QUEsMHg4MiwweEUwLDB4NjgsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiww
eDcwLDB4NTgsMHg1NywweDVGLDB4RjgsMHhGRSwweEQ2LDB4RUUsMHhCNSwweEFCLDB4QUUsMHg4
QiwKLSAgICAweDM4LDB4RkYsMHhGNywweEY2LDB4RjUsMHhCRiwweEFELDB4QUIsMHgzOCwweEZG
LDB4MTgsMHhGRiwweEQ1LDB4QUIsMHgwQSwweDAyLAotICAgIDB4NTksMHhGRiwweDE4LDB4RkYs
MHhBRCwweEFBLDB4QUEsMHgyQSwweDM4LDB4RkYsMHg5NiwweEVFLDB4ODAsMHg4MCwweDQwLDB4
RjAsCi0gICAgMHhENywweEY2LDB4RjQsMHhERCwweDc4LDB4N0UsMHhGRSwweEZFLDB4MTgsMHhG
RiwweDE0LDB4REUsMHgyRCwweDJELDB4MEYsMHg4RiwKLSAgICAweDM4LDB4RkYsMHgxOCwweEZG
LDB4RkQsMHhGRCwweDdELDB4NTUsMHgzOSwweEZGLDB4MTgsMHhGRiwweEFELDB4QUQsMHhBRiww
eDdELAotICAgIDB4MzksMHhGRiwweDE4LDB4RkYsMHg2RSwweEZFLDB4REUsMHg1RiwweDE4LDB4
RkYsMHhGOCwweEY2LDB4NUYsMHg1QSwweEQ2LDB4REUsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhG
NiwweDk1LDB4QjUsMHg5RCwweERELDB4MTgsMHhGRiwweEY4LDB4RjYsMHhENiwweEZBLDB4RkUs
MHg3RiwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4QTksMHhBQiwweDc3LDB4RjcsMHgxOCww
eEZGLDB4RjgsMHhGNiwweDgwLDB4ODAsMHhBQSwweEFCLAotICAgIDB4MTgsMHhGRiwweEY3LDB4
RjYsMHg4RSwweDhCLDB4ODIsMHg4MiwweDE4LDB4RkYsMHhGNywweEY2LDB4RkUsMHhFQSwweEZB
LDB4RkYsCi0gICAgMHhGNywweEY2LDB4QjcsMHhGNiwweDUyLDB4NzAsMHg3OCwweDc4LDB4QjYs
MHhGNiwweDc2LDB4RUUsMHg1NywweDVFLDB4N0MsMHhGQSwKLSAgICAweDk2LDB4RUUsMHg3Niww
eEVFLDB4NTUsMHhCRCwweDY5LDB4Q0EsMHhCNiwweEY2LDB4NTUsMHhFNiwweEE5LDB4QUIsMHhB
QiwweDJFLAotICAgIDB4RjcsMHhGNiwweDk2LDB4RUUsMHhBRiwweEI5LDB4MkYsMHgyQiwweDE4
LDB4RkYsMHhENywweEY2LDB4RkYsMHhFQiwweEJGLDB4QUYsCi0gICAgMHhGNywweEY2LDB4RDcs
MHhGNiwweDNCLDB4QUYsMHgyRiwweDI4LDB4MTgsMHhGRiwweEY3LDB4RjYsMHg1NSwweDU1LDB4
RjcsMHg3RiwKLSAgICAweEY4LDB4RjYsMHhENywweEY2LDB4MkEsMHhBOCwweDA4LDB4MDAsMHhE
NywweEZFLDB4RjcsMHhGNiwweDU3LDB4RDcsMHg1NSwweDU1LAotICAgIDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHg4OCwweDBBLDB4MjIsMHhBQSwweDE4LDB4RkYsMHhENywweEY2LDB4RkEsMHhGQiww
eEZCLDB4RjksCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDk2LDB4RkUsMHhBQSwweEEyLDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHhENywweDVELDB4NTUsMHg1OCwKLSAgICAweEY3LDB4RjYsMHhE
NywweEY2LDB4ODgsMHgyQiwweEVGLDB4MkMsMHhGNywweEY2LDB4RDcsMHhGNiwweEI0LDB4RDQs
MHhGRSwweEZBLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBRiwweEFGLDB4RUQsMHhENyww
eEY3LDB4RjYsMHg5NywweEVFLDB4QTgsMHhBQSwweDgwLDB4RUEsCi0gICAgMHhENywweEY2LDB4
QjcsMHhFRSwweDA4LDB4MDIsMHg4MiwweEFDLDB4RDcsMHhGNiwweDk2LDB4RUUsMHhBOCwweEEw
LDB4RTgsMHhGQSwKLSAgICAweEI3LDB4RjYsMHg1NSwweEVFLDB4QTAsMHhFOCwweEUyLDB4N0Us
MHg3NSwweEVFLDB4MzUsMHhFNiwweEIwLDB4QTgsMHhFRSwweEZGLAotICAgIDB4OTYsMHhFRSww
eDU1LDB4RTYsMHgzRCwweDBELDB4MEIsMHgwQiwweEQ3LDB4RjYsMHhCNywweEY2LDB4OEQsMHgz
NSwweEU5LDB4RkQsCi0gICAgMHhENywweEY2LDB4QjYsMHhGNiwweDM4LDB4RjgsMHhFMiwweDc3
LDB4RDcsMHhGNiwweDc2LDB4RUUsMHhBOCwweEFBLDB4RTgsMHg3QSwKLSAgICAweDc2LDB4RUUs
MHhENCwweEQ1LDB4RDgsMHg1QywweDdFLDB4NUEsMHg1NSwweEVFLDB4RDQsMHhERCwweDJGLDB4
QUQsMHhBRCwweEJELAotICAgIDB4NzUsMHhFRSwweDU1LDB4RTYsMHgwOSwweDJGLDB4MzcsMHgw
NSwweDk2LDB4RUUsMHg3NSwweEVFLDB4RkYsMHhFRSwweDc3LDB4NTcsCi0gICAgMHg3NiwweEVF
LDB4RDMsMHhENSwweDY4LDB4NzAsMHg2MCwweEZBLDB4RjQsMHhERCwweDkyLDB4Q0QsMHgzNyww
eDNELDB4MzcsMHgzRiwKLSAgICAweDU1LDB4RUUsMHhGNCwweERELDB4MkYsMHgyOSwweDI5LDB4
MkQsMHg1NSwweEVFLDB4MzUsMHhFNiwweEUyLDB4NjgsMHhFQSwweDhBLAotICAgIDB4NTUsMHhF
RSwweEIzLDB4REQsMHhGQSwweDdFLDB4N0UsMHhGMCwweEY0LDB4REQsMHg5MiwweEQ1LDB4NEEs
MHg3QSwweDRBLDB4QzIsCi0gICAgMHg3MiwweENELDB4Q0YsMHhCQywweDU2LDB4RjYsMHhCRSww
eEY4LDB4OTIsMHhENSwweEYwLDB4QkMsMHhBRCwweDJGLDB4MkYsMHgyRiwKLSAgICAweEIzLDB4
REQsMHg3MiwweEQ1LDB4MkQsMHhCRCwweERGLDB4N0QsMHhCMywweERELDB4NTEsMHhDRCwweEEw
LDB4NkMsMHhGQSwweDVGLAotICAgIDB4QjIsMHhENSwweDMxLDB4Q0QsMHhBOCwweEZGLDB4Nzcs
MHg1NSwweDcyLDB4Q0QsMHgzMSwweENELDB4ODAsMHg4QSwweDJCLDB4M0QsCi0gICAgMHhCMyww
eERELDB4NTEsMHhDRCwweEI1LDB4QkYsMHgyRiwweDJCLDB4RjQsMHhFNSwweEIzLDB4RDUsMHhC
RiwweEI3LDB4RkYsMHgzNSwKLSAgICAweDU1LDB4RTYsMHhGNCwweERELDB4MkQsMHhBRCwweDJG
LDB4RUIsMHg1NSwweEU2LDB4MTQsMHhFNiwweEZFLDB4QUUsMHgyRiwweDJCLAotICAgIDB4RDYs
MHhGNiwweEI2LDB4RjYsMHhFMiwweEVBLDB4QkUsMHg3RSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4
MjIsMHhFMiwweEEwLDB4MkEsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDAyLDB4ODgsMHgy
MiwweDA4LDB4RDYsMHhGNiwweEY4LDB4RUUsMHg4OCwweDIwLDB4QUEsMHgyOCwKLSAgICAweEQ2
LDB4RjYsMHhCNywweEVFLDB4QTIsMHhBOCwweDAwLDB4MDIsMHhGNywweEY2LDB4RDYsMHhGNiww
eEY3LDB4RTcsMHg3RiwweDVELAotICAgIDB4QjYsMHhGNiwweEY2LDB4RUUsMHhBQiwweEVGLDB4
QUIsMHhBRiwweEY2LDB4RjYsMHhCNiwweEVFLDB4OEEsMHhBMiwweEFBLDB4QkYsCi0gICAgMHhG
NiwweEY2LDB4QjYsMHhFRSwweEZFLDB4QkUsMHhCQSwweEFBLDB4RDYsMHhGNiwweEI2LDB4RUUs
MHg4MiwweEEwLDB4OEEsMHgyOCwKLSAgICAweEQ2LDB4RjYsMHhGNywweEVFLDB4QTgsMHg4MCww
eDAyLDB4ODAsMHhGNiwweEY2LDB4QjYsMHhFRSwweEZBLDB4QkEsMHhCRiwweEZFLAotICAgIDB4
RDYsMHhGNiwweEI2LDB4RUUsMHhFRSwweEJBLDB4MkEsMHgwMCwweEQ2LDB4RjYsMHhCNiwweEVF
LDB4QjcsMHg3QiwweEVBLDB4MDAsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEZGLDB4RUIs
MHg4QSwweDIyLDB4RDYsMHhGNiwweEI2LDB4RjYsMHhERCwweEVFLDB4NjgsMHhBOCwKLSAgICAw
eEI2LDB4RjYsMHhENiwweEVFLDB4ODIsMHhBQSwweEU4LDB4RkUsMHhCNiwweEY2LDB4RDUsMHhF
RSwweEFBLDB4QUEsMHhGOCwweEVBLAotICAgIDB4QjYsMHhGNiwweEQ2LDB4RUUsMHhFRSwweEJB
LDB4QTgsMHhGOCwweEI2LDB4RjYsMHhENiwweEVFLDB4RkYsMHhFQiwweEFBLDB4OEUsCi0gICAg
MHhENiwweEY2LDB4QjYsMHhFRSwweDBBLDB4MjMsMHg4QiwweDBBLDB4RDYsMHhGNiwweEY2LDB4
RUUsMHgyMiwweDAyLDB4QTgsMHg4MCwKLSAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4QkYsMHhB
RSwweEFBLDB4RUEsMHhENiwweEY2LDB4QjcsMHhGNiwweEI4LDB4QkEsMHhCRSwweEJDLAotICAg
IDB4RDcsMHhGNiwweDM0LDB4RTYsMHhDMCwweEUwLDB4NjAsMHg2OCwweDcxLDB4Q0QsMHg4Niww
eDcyLDB4RjAsMHg3MCwweDc4LDB4NzgsCi0gICAgMHg0NiwweDZBLDB4NjQsMHg0OSwweEY4LDB4
NzgsMHg1QSwweDVFLDB4QTQsMHg1MSwweDAyLDB4MzksMHhFOCwweEZBLDB4N0EsMHg3RiwKLSAg
ICAweDAyLDB4MzksMHhBMSwweDI4LDB4RjgsMHhFMCwweEVBLDB4NTYsMHhDMiwweDMwLDB4ODEs
MHgyOCwweEY4LDB4QTgsMHhBOCwweDAwLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhBQiww
eDhGLDB4NkYsMHhFNywweEUzLDB4MzgsMHhDMiwweDMwLDB4MkYsMHhFQiwweDc5LDB4N0QsCi0g
ICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEE3LDB4MkIsMHgwQiwweDg1LDB4MjMsMHg0MSwweEUy
LDB4MzgsMHg1NywweEQ2LDB4QUIsMHgwQSwKLSAgICAweDQ0LDB4NDksMHgwMywweDM5LDB4RTks
MHhCOSwweEFCLDB4QTksMHhFNSwweDYxLDB4NDMsMHg0OSwweEQ1LDB4MzUsMHhBNSwweDM1LAot
ICAgIDB4MDksMHg5MywweEE1LDB4NTksMHhCRCwweEFGLDB4QUIsMHgyQiwweEU5LDB4OEEsMHg4
NywweDdBLDB4RkYsMHg1QiwweDdBLDB4NjAsCi0gICAgMHhBNywweDgyLDB4QzUsMHg2MSwweEEw
LDB4RkEsMHg3NywweDVFLDB4MjYsMHg2QSwweDYzLDB4NDksMHhGOCwweEZBLDB4RkYsMHg1NywK
LSAgICAweEU1LDB4NTksMHgwMiwweDQxLDB4MDIsMHhBMiwweEJGLDB4RjcsMHgwNiwweDZBLDB4
ODQsMHg1MSwweDAyLDB4QUIsMHhBRiwweEI1LAotICAgIDB4ODcsMHg3QSwweEU2LDB4NjEsMHgw
RiwweDJGLDB4QTksMHgyRCwweDRCLDB4OTMsMHg2NywweDcyLDB4MEIsMHgyQiwweEJELDB4RjUs
Ci0gICAgMHg4QiwweDlCLDB4QTgsMHg4MiwweDA4LDB4QUEsMHhBRiwweEY1LDB4MEMsMHhBQyww
eDA5LDB4OTMsMHgwOCwweDJGLDB4QkYsMHhGNSwKLSAgICAweDJELDB4QkMsMHg4QiwweEEzLDB4
ODIsMHgwMiwweDJBLDB4QTksMHgyRCwweEI0LDB4QUIsMHhBMywweDdDLDB4RkEsMHhGQSwweDdB
LAotICAgIDB4Q0MsMHhBQiwweDZBLDB4OUIsMHg2QiwweDZBLDB4RTgsMHhCRSwweDZBLDB4QTMs
MHhDOCwweDhBLDB4RkEsMHg3OCwweEUwLDB4QzgsCi0gICAgMHg0OSwweDlCLDB4QTcsMHg4Miww
eDBBLDB4QUIsMHhGQiwweDVGLDB4NEEsMHg5QiwweDg3LDB4N0EsMHhBMCwweEZBLDB4N0YsMHg1
NiwKLSAgICAweDA5LDB4OTMsMHg0NiwweDdBLDB4NjAsMHhFQSwweEFBLDB4QUIsMHgwQSwweDkz
LDB4MjcsMHg3MiwweDdELDB4RjcsMHhBQSwweDAyLAotICAgIDB4MDksMHg5MywweDY4LDB4N0Es
MHgzNSwweEE3LDB4MkIsMHgwMiwweEVGLDB4QzQsMHgwOSwweDhCLDB4M0QsMHgyNSwweDJELDB4
QUQsCi0gICAgMHhCNiwweEZFLDB4NTEsMHhENSwweDBCLDB4MEIsMHgwOSwweDBELDB4MTgsMHhG
RiwweEQ3LDB4RkUsMHhFQiwweEFCLDB4MjksMHhBRiwKLSAgICAweDE4LDB4RkYsMHhGNywweEZF
LDB4QUIsMHg3RSwweDdBLDB4N0UsMHgxOCwweEZGLDB4RjcsMHhGRSwweDBBLDB4MDksMHhBQiww
eEFBLAotICAgIDB4MTcsMHhGRiwweEY4LDB4RjYsMHgyMiwweDgyLDB4MEEsMHgwMiwweDE3LDB4
RkYsMHhGOCwweEY2LDB4QjgsMHhFOCwweDIwLDB4ODAsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhG
NiwweDI4LDB4ODAsMHg4MCwweDc4LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhFMCwweEU4LDB4RkUs
MHg3NywKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RjksMHhBRCwweEJELDB4QTcsMHgxOCww
eEZGLDB4RDcsMHhGNiwweEFGLDB4QUQsMHhCRiwweEFGLAotICAgIDB4MzgsMHhGRiwweEY3LDB4
RkUsMHhCQiwweEFGLDB4MDksMHgwMiwweDU5LDB4RkYsMHgzOSwweEZGLDB4RjUsMHhGNSwweEVE
LDB4RkIsCi0gICAgMHg1OSwweEZGLDB4MTgsMHhGRiwweDhBLDB4QUEsMHhFQSwweDdFLDB4MTgs
MHhGRiwweDk2LDB4RUUsMHg3MCwweDc4LDB4NTgsMHg1RSwKLSAgICAweDk2LDB4RUUsMHg1NSww
eEU2LDB4NUUsMHg3QSwweEZBLDB4RkEsMHgxOCwweEZGLDB4NzYsMHhFRSwweDJELDB4MjksMHg4
RiwweDBCLAotICAgIDB4MTgsMHhGRiwweDE5LDB4RjcsMHgyMiwweDg4LDB4ODIsMHgyMiwweDM5
LDB4RkYsMHgxOCwweEZGLDB4RjksMHhFRCwweEI5LDB4OUQsCi0gICAgMHgzOSwweEZGLDB4MTgs
MHhGRiwweDdGLDB4N0UsMHg1RSwweDdFLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRSwweEVBLDB4
QTgsMHgyQSwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RkYsMHhGQSwweEJGLDB4NzcsMHhG
NywweEZFLDB4RjgsMHhGNiwweDdGLDB4REYsMHg3RiwweDc1LAotICAgIDB4MTgsMHhGRiwweEY4
LDB4RjYsMHhBOSwweEM5LDB4QjksMHhCQiwweEY4LDB4RkUsMHgxOCwweEY3LDB4NUUsMHhGRSww
eEZFLDB4RUUsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhFRSwweDIyLDB4MEEsMHgyMiwweEE4LDB4
MTgsMHhGRiwweEY3LDB4RjYsMHg3NiwweDdFLDB4RjgsMHg3OCwKLSAgICAweEY3LDB4RjYsMHhC
NywweEVFLDB4RkEsMHg3QSwweDdDLDB4RkMsMHg5NiwweEY2LDB4QjYsMHhFRSwweDJCLDB4QUQs
MHhGRSwweEZELAotICAgIDB4QjcsMHhGNiwweDk2LDB4RUUsMHg1NSwweDc3LDB4RjgsMHhGOCww
eEQ2LDB4RjYsMHg3NSwweEVFLDB4RjUsMHhERCwweEY3LDB4QkYsCi0gICAgMHhENywweEY2LDB4
OTYsMHhFRSwweDAzLDB4MEIsMHgyRiwweDJCLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhBRiwweEFB
LDB4QUIsMHhFOSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QTgsMHhBOCwweEE4LDB4QTgs
MHgxOCwweEZGLDB4RDcsMHhGNiwweEFBLDB4OEIsMHgyQiwweEFELAotICAgIDB4MTgsMHhGRiww
eEQ3LDB4RjYsMHhGRSwweEZBLDB4QjgsMHgyOCwweDE4LDB4RjcsMHhENywweEY2LDB4RUYsMHhG
RiwweEZFLDB4QTgsCi0gICAgMHgxOCwweEY3LDB4RDcsMHhGNiwweEY3LDB4RkYsMHhCQiwweEFC
LDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGNSwweEZGLDB4QUUsMHhCRSwKLSAgICAweDE4LDB4RkYs
MHhENywweEY2LDB4RUUsMHhBRSwweEZFLDB4RkUsMHhEOCwweEZFLDB4RjcsMHhGNiwweEY1LDB4
RkQsMHhGNSwweEY1LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgyOCwweEFBLDB4QUYsMHhF
QSwweEY3LDB4RjYsMHhCNiwweEVFLDB4QTAsMHhFQSwweDdDLDB4N0UsCi0gICAgMHhGNywweEY2
LDB4OTYsMHhFRSwweEFBLDB4MkIsMHhCRiwweEQ1LDB4RDcsMHhGNiwweDk2LDB4RUUsMHhBMCww
eEY4LDB4NUUsMHg1RiwKLSAgICAweEI2LDB4RUUsMHg3NiwweEVFLDB4MjgsMHhBQSwweERCLDB4
NUQsMHhCNiwweEY2LDB4MzUsMHhFNiwweDgwLDB4QUEsMHhGQSwweDdGLAotICAgIDB4OTYsMHhF
RSwweDM1LDB4RTYsMHg2OCwweEVFLDB4RkYsMHhGRiwweDk2LDB4RUUsMHgzNSwweEU2LDB4QkQs
MHhBQiwweEFCLDB4MEEsCi0gICAgMHg3NiwweEY2LDB4OTYsMHhFRSwweDdFLDB4N0YsMHg1Riww
eERELDB4RDcsMHhGNiwweEI3LDB4RjYsMHhFRCwweEFCLDB4REIsMHhDMywKLSAgICAweEI2LDB4
RjYsMHg5NiwweEVFLDB4NkMsMHhGRSwweEI3LDB4RjYsMHhCNiwweEY2LDB4NzYsMHhFRSwweDdC
LDB4RkYsMHhFQSwweDgyLAotICAgIDB4NTYsMHhFRSwweEIzLDB4RDUsMHg1OCwweDc4LDB4N0Ms
MHhEOCwweDM1LDB4RTYsMHhEMywweEQ1LDB4MzUsMHgyRCwweEFCLDB4QkYsCi0gICAgMHg3Niww
eEVFLDB4MzUsMHhFNiwweDBELDB4MkQsMHhBNSwweEI1LDB4NzYsMHhFRSwweDU1LDB4RTYsMHhF
MCwweEUwLDB4RTAsMHg3MywKLSAgICAweDU1LDB4RTYsMHhCMiwweEQ1LDB4RTAsMHg3MCwweDY4
LDB4NzAsMHhGMywweERELDB4QjIsMHhENSwweDM1LDB4QTcsMHhCNSwweDk1LAotICAgIDB4NTUs
MHhFRSwweEY0LDB4REQsMHhBOSwweDI5LDB4QUQsMHhCQiwweDc2LDB4RUUsMHhEMywweERELDB4
OEEsMHg4QSwweEFBLDB4REYsCi0gICAgMHg1NSwweEVFLDB4RDMsMHhERCwweDY4LDB4RkEsMHhF
MiwweEVCLDB4MTQsMHhFNiwweEIzLDB4RDUsMHg3RiwweDYyLDB4RTIsMHhFQSwKLSAgICAweDcy
LDB4Q0QsMHg4RiwweEI0LDB4RTgsMHhGOCwweEZDLDB4REUsMHg3MiwweEQ1LDB4RDAsMHhCQyww
eDJCLDB4MkIsMHhBOSwweDJELAotICAgIDB4OTIsMHhENSwweDUyLDB4Q0QsMHhCMiwweEVGLDB4
RkYsMHhERiwweDcyLDB4Q0QsMHgzMSwweENELDB4QzgsMHhGMiwweDQyLDB4NUEsCi0gICAgMHg3
MSwweENELDB4MzEsMHhDNSwweDU1LDB4RkUsMHhCRCwweDM1LDB4QjMsMHhENSwweDMxLDB4QzUs
MHhBRCwweEFCLDB4QUYsMHgwQSwKLSAgICAweEIzLDB4RDUsMHg5MiwweEQ1LDB4QzksMHhDMSww
eEI5LDB4REQsMHhGNCwweERELDB4OTIsMHhENSwweDJGLDB4QUUsMHhBNywweDNCLAotICAgIDB4
MTQsMHhFNiwweEQzLDB4REQsMHgwMCwweDBBLDB4RUYsMHg1QiwweDc1LDB4RUUsMHhGNCwweERE
LDB4MkIsMHhBRiwweEFGLDB4QkQsCi0gICAgMHhCNiwweEY2LDB4NTAsMHhDNSwweDAwLDB4MDAs
MHg4MiwweEI1LDB4RDYsMHhGNiwweDU1LDB4RUUsMHgwOCwweDBBLDB4OEEsMHhBOSwKLSAgICAw
eEQ2LDB4RjYsMHhCNiwweEVFLDB4MjgsMHhBMiwweEFBLDB4RkUsMHhENiwweEY2LDB4QjYsMHhF
RSwweDAyLDB4ODAsMHhBMywweEUyLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBQSwweEFB
LDB4QTgsMHhBQSwweEQ2LDB4RjYsMHhENywweEVFLDB4QUEsMHgyQSwweDhBLDB4MjAsCi0gICAg
MHhGOCwweEY2LDB4RDYsMHhGNiwweDc3LDB4N0QsMHhFNSwweEJELDB4RjcsMHhGNiwweEI2LDB4
RUUsMHhCRiwweEVFLDB4QkEsMHhFQSwKLSAgICAweEY2LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhB
QiwweEVCLDB4RkYsMHhENiwweEY2LDB4RDYsMHhFRSwweEE4LDB4MkEsMHhBQSwweEFBLAotICAg
IDB4RDYsMHhGNiwweEY2LDB4RUUsMHgwMCwweEEwLDB4OEEsMHhBMCwweEQ2LDB4RjYsMHhGNyww
eEVFLDB4MDgsMHg4OCwweDA4LDB4MDIsCi0gICAgMHhENiwweEY2LDB4RjYsMHhFRSwweDg4LDB4
MDAsMHg4MCwweEEyLDB4RjcsMHhGNiwweEQ2LDB4RjYsMHhFNywweEE1LDB4QjUsMHhENSwKLSAg
ICAweEY3LDB4RjYsMHhENiwweEY2LDB4NTUsMHg3NSwweEY3LDB4NUYsMHhENiwweEY2LDB4RDYs
MHhGNiwweDAwLDB4MDAsMHgwMCwweDAwLAotICAgIDB4RjcsMHhGNiwweEQ2LDB4RjYsMHg1NSww
eDU1LDB4NzUsMHhGRCwweEQ2LDB4RjYsMHhCNiwweEVFLDB4M0IsMHg4MywweDhCLDB4ODAsCi0g
ICAgMHhENiwweEY2LDB4QjYsMHhGNiwweDBDLDB4OEEsMHg4OCwweDAwLDB4RDYsMHhGNiwweEI2
LDB4RjYsMHg5QSwweDlBLDB4M0EsMHhCRSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4MDgs
MHgyOCwweDJBLDB4QkEsMHhENiwweEY2LDB4QjYsMHhFRSwweDAwLDB4MjgsMHgyQSwweDAyLAot
ICAgIDB4RDYsMHhGNiwweEI2LDB4RjYsMHgyMCwweEUwLDB4NjAsMHhCOCwweEY3LDB4RjYsMHhC
NiwweEY2LDB4RkEsMHhERiwweDdGLDB4REYsCi0gICAgMHhENiwweEY2LDB4QjIsMHhENSwweEUw
LDB4NjAsMHg2MCwweDY4LDB4Q0UsMHhCQywweDA1LDB4NjIsMHg3OCwweDc4LDB4NzgsMHg1OCwK
LSAgICAweEM1LDB4NTksMHgyMywweDQxLDB4RTgsMHhFOCwweDVDLDB4RUUsMHg0MywweDQxLDB4
RTIsMHgzMCwweEMwLDB4RTAsMHhGRSwweDc4LAotICAgIDB4MDIsMHgzMSwweEExLDB4MjgsMHg3
QSwweDc4LDB4RDgsMHg1RSwweEUyLDB4MjgsMHg4MSwweDI4LDB4RTIsMHhGRSwweEZBLDB4Rjcs
Ci0gICAgMHhDMSwweDI4LDB4ODAsMHgyOCwweDI4LDB4MjgsMHhGQiwweEJGLDB4MDMsMHgzMSww
eEEyLDB4MjgsMHgyQiwweDJGLDB4QjksMHhFQiwKLSAgICAweDAyLDB4MzEsMHhDMiwweDMwLDB4
MDcsMHhBRiwweEFELDB4QUYsMHgyMywweDQxLDB4RTIsMHgzMCwweDBBLDB4MkIsMHhBOSwweEU5
LAotICAgIDB4NDMsMHg0OSwweDAzLDB4NDEsMHg4QiwweDAyLDB4MjMsMHgyOSwweDI2LDB4NkEs
MHg2NCwweDUxLDB4QjUsMHgyRCwweDJELDB4MkQsCi0gICAgMHgwOSwweDhCLDB4NjYsMHg3QSww
eDBELDB4MDksMHgwOSwweDI5LDB4MjksMHg5MywweEE3LDB4ODIsMHhEQSwweEY4LDB4RTgsMHg3
MCwKLSAgICAweDg3LDB4N0EsMHhBNSwweDU5LDB4NTgsMHg1QywweDVDLDB4N0MsMHg4NSwweDU5
LDB4MDMsMHg0MSwweEY4LDB4N0UsMHg3NywweDVGLAotICAgIDB4MjMsMHg0OSwweEUyLDB4Mzgs
MHgyQywweEFGLDB4REUsMHhGRSwweEM2LDB4NjEsMHhFMiwweDM4LDB4MEEsMHhBRiwweEZGLDB4
RjUsCi0gICAgMHg0NiwweDZBLDB4NjQsMHg1MSwweDBBLDB4MkIsMHhBRCwweEJELDB4QTgsMHg3
QSwweDA2LDB4NjIsMHgwQiwweEJGLDB4RjcsMHhGRCwKLSAgICAweEM5LDB4ODIsMHgyNiwweDZB
LDB4MjIsMHhBMiwweEI3LDB4RjUsMHgyQSwweDkzLDB4ODcsMHg3QSwweDBBLDB4MEEsMHhBRiww
eEJELAotICAgIDB4RUMsMHhBQiwweDA5LDB4OTMsMHgyQiwweEFGLDB4QUQsMHhCNSwweEVDLDB4
QUIsMHhBQywweEFCLDB4NzgsMHg3MiwweDNFLDB4M0QsCi0gICAgMHhDQywweEFCLDB4NkEsMHhB
MywweEZGLDB4RUQsMHhBQywweEZDLDB4QUIsMHhBMywweEU5LDB4OEEsMHhFQSwweEU4LDB4RTAs
MHg3OCwKLSAgICAweEU4LDB4OEEsMHg2NywweDdBLDB4RjgsMHg3OCwweDdFLDB4N0YsMHg4Nyww
eDdBLDB4NDYsMHg3QSwweEJBLDB4RjYsMHg3RiwweEE3LAotICAgIDB4MjksMHg5MywweDY3LDB4
N0EsMHhCOSwweDNELDB4QjUsMHhBRCwweEVDLDB4QUIsMHgwQSwweDkzLDB4N0QsMHhBRiwweDBC
LDB4MDMsCi0gICAgMHhBQiwweEEzLDB4MjksMHg5MywweDc1LDB4N0YsMHhFQSwweDg4LDB4NkQs
MHhCNCwweDA5LDB4OEIsMHgzRCwweDM1LDB4MzUsMHhCNywKLSAgICAweEQ3LDB4RkUsMHg0RCww
eEI0LDB4MEIsMHgwQiwweEFCLDB4RDUsMHhGNywweEZFLDB4RDMsMHhERCwweDAwLDB4MDAsMHgw
QSwweDJELAotICAgIDB4MTcsMHhGRiwweEY4LDB4RkUsMHhEQiwweEZFLDB4QjcsMHhGNSwweDE4
LDB4RkYsMHhGOCwweEZFLDB4QUIsMHhBRSwweEZGLDB4QTcsCi0gICAgMHgxOCwweEZGLDB4Rjcs
MHhGRSwweDBBLDB4MEIsMHgyQSwweEJFLDB4MzgsMHhGRiwweEY3LDB4RjYsMHhBQSwweEVBLDB4
RkIsMHg1RiwKLSAgICAweDE4LDB4RkYsMHhCNiwweEVFLDB4RTgsMHhGQSwweEZBLDB4N0YsMHhE
NywweEY2LDB4QjYsMHhFRSwweDAwLDB4QTAsMHhFMiwweEZBLAotICAgIDB4RjcsMHhGNiwweEI2
LDB4RUUsMHhBQSwweEZCLDB4NkQsMHhERCwweDM5LDB4RkYsMHhCNiwweEVFLDB4QkYsMHgyRCww
eDJELDB4MEYsCi0gICAgMHg1OSwweEZGLDB4MzgsMHhGRiwweEI1LDB4RkQsMHhBQiwweEVFLDB4
NTksMHhGRiwweDM5LDB4RkYsMHhFQiwweEVFLDB4RkEsMHg1RiwKLSAgICAweDM4LDB4RkYsMHhE
NywweEY2LDB4QzAsMHhFMCwweEYwLDB4NjgsMHhENiwweEVFLDB4NzYsMHhFRSwweEZDLDB4RkUs
MHhGRSwweEY3LAotICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHhEOCwweDlDLDB4QjYsMHgzNyww
eDE4LDB4RkYsMHg5NiwweEVFLDB4MDEsMHgwQiwweDI5LDB4OEIsCi0gICAgMHgxOCwweEZGLDB4
RjgsMHhGNiwweDgyLDB4MEEsMHgwQSwweDIyLDB4MzksMHhGRiwweDE4LDB4RkYsMHg5NSwweEI1
LDB4QjUsMHhGRCwKLSAgICAweDM5LDB4RkYsMHgxOCwweEZGLDB4N0EsMHg3RSwweDdBLDB4N0Us
MHgxOCwweEZGLDB4RjgsMHhGNiwweEFFLDB4QkEsMHhBQSwweEVBLAotICAgIDB4MTgsMHhGRiww
eEY4LDB4RjYsMHhERiwweDVFLDB4NTgsMHg1RSwweDE4LDB4RjcsMHhENywweEY2LDB4QkYsMHhB
RSwweDJCLDB4QUEsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEFCLDB4RUUsMHhBOSwweEZE
LDB4MTgsMHhGRiwweEY4LDB4RjYsMHhCQiwweERFLDB4QUUsMHhBQSwKLSAgICAweDE4LDB4RkYs
MHhGOCwweEY2LDB4QUEsMHhCRiwweEJFLDB4QUEsMHgxOCwweEZGLDB4RjgsMHhGNiwweDU4LDB4
N0EsMHhFQSwweEZFLAotICAgIDB4RjcsMHhGNiwweEI3LDB4RjYsMHhGRSwweEUwLDB4RTAsMHhB
MCwweEQ3LDB4RjYsMHhCNiwweEVFLDB4RUYsMHhCNSwweDM1LDB4ODcsCi0gICAgMHhENywweEY2
LDB4OTYsMHhFRSwweEZBLDB4RTAsMHhBMCwweDIwLDB4RDcsMHhGNiwweDk2LDB4RUUsMHg5Nyww
eDlGLDB4QkUsMHhBQSwKLSAgICAweEQ3LDB4RjYsMHg5NiwweEVFLDB4QUIsMHhCRiwweEJCLDB4
QjgsMHgxOCwweEZGLDB4QjYsMHhFRSwweEFCLDB4QUYsMHhBRCwweDJELAotICAgIDB4RjgsMHhG
RSwweEY3LDB4RjYsMHg1RiwweDVGLDB4REUsMHg1RiwweDE4LDB4RjcsMHhCNywweEY2LDB4MEEs
MHgyQSwweDJFLDB4QUEsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweDI4LDB4MjgsMHgwQSww
eEFGLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBOCwweEEwLDB4RTgsMHhCOCwKLSAgICAweDE4LDB4
RkYsMHhGNywweEY2LDB4N0UsMHg1RCwweDdELDB4RUEsMHgxNywweEZGLDB4RjgsMHhGNiwweEZE
LDB4REQsMHhERiwweEI3LAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGRSwweERFLDB4REEs
MHhFQSwweEY4LDB4RkUsMHhGNywweEY2LDB4RkYsMHhGQiwweEZGLDB4RjcsCi0gICAgMHhGNyww
eEY2LDB4RDcsMHhGNiwweDZGLDB4REUsMHg1RSwweDU2LDB4RDcsMHhGNiwweDk2LDB4RUUsMHhG
OCwweEVBLDB4QTgsMHhCQSwKLSAgICAweEI3LDB4RjYsMHg5NiwweEVFLDB4NzcsMHhFQiwweDgw
LDB4QTAsMHg5NywweEVFLDB4NzYsMHhFRSwweEQ4LDB4NUMsMHg1QywweERDLAotICAgIDB4OTYs
MHhFRSwweDc2LDB4RUUsMHg1NSwweEE1LDB4OUYsMHhGRSwweDk2LDB4RUUsMHgzNSwweEU2LDB4
N0UsMHhGOCwweEIyLDB4QUEsCi0gICAgMHg5NiwweEVFLDB4NTUsMHhFRSwweEQ1LDB4QkQsMHgy
QiwweEFBLDB4OTYsMHhFRSwweDc2LDB4RUUsMHhBRCwweDNCLDB4MDAsMHhBMywKLSAgICAweEI2
LDB4RjYsMHg3NiwweEVFLDB4QUIsMHg4OSwweEFGLDB4M0YsMHhENywweEY2LDB4OTYsMHhFRSww
eDIyLDB4QUIsMHg2QiwweDdGLAotICAgIDB4QjYsMHhGNiwweDc2LDB4RUUsMHhBRSwweDJBLDB4
QkEsMHhGNywweEI2LDB4RjYsMHg5NiwweEVFLDB4QTIsMHg4QSwweEUyLDB4NjMsCi0gICAgMHg3
NiwweEVFLDB4RDMsMHhENSwweDVDLDB4NTgsMHg3RSwweDVDLDB4MTQsMHhFNiwweEQzLDB4RDUs
MHhBQiwweDJELDB4MkYsMHhBNSwKLSAgICAweDU1LDB4RUUsMHgxNCwweEU2LDB4MEIsMHg4Qiww
eDhCLDB4MDksMHg3NSwweEVFLDB4MzUsMHhFNiwweEYzLDB4QkYsMHhCRiwweEFCLAotICAgIDB4
NzUsMHhFRSwweEIyLDB4RDUsMHg3OCwweDc4LDB4N0UsMHg3QSwweEYzLDB4REQsMHg5MiwweEQ1
LDB4MzUsMHhBRCwweEI1LDB4QkQsCi0gICAgMHgzNCwweEU2LDB4RDMsMHhERCwweDhCLDB4RUIs
MHg3QiwweDdCLDB4RDQsMHhERCwweDMwLDB4QzUsMHgyOCwweEJDLDB4RkMsMHg1NywKLSAgICAw
eDE0LDB4RTYsMHg3MSwweENELDB4MDAsMHgyQiwweEFELDB4RjUsMHgxNCwweEU2LDB4OTIsMHhE
NSwweEUwLDB4Q0EsMHhFMiwweDRBLAotICAgIDB4NTEsMHhDRCwweDJELDB4QUMsMHhGOCwweEZD
LDB4RkMsMHhEQywweDcyLDB4RDUsMHhEMCwweEJDLDB4OEQsMHgyRCwweEFELDB4MkQsCi0gICAg
MHg3MiwweENELDB4MTAsMHhDNSwweEUwLDB4QTAsMHg4OCwweDYwLDB4NTEsMHhDRCwweDExLDB4
QzUsMHhCMywweDhGLDB4QkYsMHhGOSwKLSAgICAweDcxLDB4Q0QsMHgzMSwweEM1LDB4QUQsMHgz
RiwweEVELDB4RjcsMHhCMywweEQ1LDB4NzIsMHhENSwweDk1LDB4QUQsMHhFRiwweEE1LAotICAg
IDB4QjMsMHhENSwweDUxLDB4RDUsMHhCQSwweDIyLDB4MjIsMHgwQSwweDE0LDB4RTYsMHhCMyww
eEQ1LDB4OUQsMHhBRCwweEJGLDB4QUQsCi0gICAgMHhGNCwweERELDB4QjMsMHhERCwweEI4LDB4
MzgsMHhCMiwweERFLDB4MzUsMHhFNiwweEQzLDB4REQsMHgyQiwweEFGLDB4REIsMHg3NywKLSAg
ICAweENFLDB4QkMsMHhFOCwweDgyLDB4MkIsMHhGNSwweDU1LDB4NTUsMHgxNCwweEU2LDB4Mjks
MHg4QiwweDAyLDB4QkYsMHg3NSwweDU1LAotICAgIDB4OTUsMHhFRSwweDhBLDB4OTMsMHgwMCww
eDAyLDB4QkQsMHg1NSwweDk1LDB4RUUsMHg0RCwweEFDLDB4MDAsMHgwMCwweDBBLDB4QjUsCi0g
ICAgMHhCNiwweEY2LDB4MTMsMHhERSwweDAwLDB4MDAsMHgwMCwweDBELDB4RDYsMHhGNiwweEI2
LDB4RjYsMHgwOCwweEFBLDB4OEEsMHg3NSwKLSAgICAweDE3LDB4RkYsMHhCNiwweEY2LDB4RkYs
MHhGRiwweDlELDB4RDcsMHhENywweEY2LDB4QjYsMHhGNiwweDAwLDB4MDgsMHhBQSwweEFFLAot
ICAgIDB4RDcsMHhGNiwweEI2LDB4RjYsMHhBQywweDJBLDB4QUIsMHgwOCwweEY3LDB4RkUsMHhE
NiwweEY2LDB4NTUsMHg1NSwweEZELDB4QjcsCi0gICAgMHhGNywweEY2LDB4RDYsMHhGNiwweEI1
LDB4OUYsMHg1QiwweDdGLDB4RjcsMHhGNiwweEQ2LDB4RjYsMHg1NywweDU3LDB4MzcsMHhGNSwK
LSAgICAweEY3LDB4RjYsMHhENiwweEY2LDB4RkIsMHg3QSwweDdFLDB4N0EsMHhGNywweEZFLDB4
RDYsMHhGNiwweDU1LDB4RjUsMHhCNywweEZELAotICAgIDB4RjYsMHhGNiwweEQ2LDB4RjYsMHg1
RCwweDdELDB4NkEsMHg1QSwweEY3LDB4RjYsMHhENiwweEY2LDB4RDUsMHhENywweDU3LDB4NUYs
Ci0gICAgMHhGNiwweEZFLDB4RDYsMHhGNiwweEU3LDB4RkYsMHg1NywweDU5LDB4RjYsMHhGNiww
eEI3LDB4RjYsMHhBQSwweEVCLDB4QUYsMHhGRiwKLSAgICAweEY3LDB4RjYsMHhENiwweEY2LDB4
QTUsMHhBRiwweDNFLDB4RkYsMHhGNywweEZFLDB4RDYsMHhGNiwweDU1LDB4NTcsMHg1RiwweEY3
LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RjYsMHhCQywweEFBLDB4QTAsMHgwOCwweEQ2LDB4RjYs
MHhCNiwweEY2LDB4OEUsMHhBNywweEFGLDB4MEEsCi0gICAgMHhENiwweEY2LDB4QjYsMHhGNiww
eEVDLDB4RjgsMHg4OCwweDIwLDB4RDYsMHhGNiwweEI2LDB4RjYsMHhBQiwweEVCLDB4Q0EsMHhB
QSwKLSAgICAweEI2LDB4RjYsMHhCMywweEQ1LDB4NjAsMHg2MCwweDYwLDB4NjAsMHg2RSwweEI0
LDB4NjMsMHg0OSwweEY4LDB4NzgsMHg3OCwweDc4LAotICAgIDB4ODQsMHg0OSwweDIzLDB4NDEs
MHhFMCwweEYwLDB4NzgsMHg3QSwweDQzLDB4NDEsMHhFMiwweDMwLDB4NzgsMHhGOCwweDdFLDB4
RjUsCi0gICAgMHhFMiwweDMwLDB4ODEsMHgyOCwweEVBLDB4NkEsMHg1OCwweDc4LDB4QTEsMHgy
OCwweDQwLDB4MjAsMHgwOCwweDIyLDB4QkMsMHhCNywKLSAgICAweEMyLDB4MjgsMHg4MSwweDIw
LDB4QkYsMHgyNSwweDI1LDB4MEQsMHhFMiwweDMwLDB4QTEsMHgyOCwweDBBLDB4MEIsMHhBRCww
eDNGLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHhFQSwweEZBLDB4RkIsMHhFOSwweDAyLDB4
MzksMHhDMiwweDMwLDB4OEYsMHhBRiwweEFCLDB4OEEsCi0gICAgMHg0NCwweDQ5LDB4RTIsMHgz
OCwweDA5LDB4MEYsMHhBRiwweDJELDB4MjYsMHg3MiwweDY0LDB4NTEsMHgyRCwweDNELDB4MEQs
MHgyRCwKLSAgICAweDI5LDB4OTMsMHg4NywweDdBLDB4MjksMHgwRCwweEJGLDB4QjUsMHgyQSww
eDkzLDB4QTgsMHg4MiwweEU4LDB4QjIsMHg3OCwweDZBLAotICAgIDB4ODgsMHg3QSwweDQ0LDB4
NDksMHhGOCwweDc4LDB4NzgsMHg3QSwweDQ0LDB4NDksMHhFMiwweDM4LDB4QjgsMHg3OCwweDc4
LDB4NUMsCi0gICAgMHgwMiwweDM5LDB4QzIsMHgzOCwweEFDLDB4QjYsMHhENywweERGLDB4NDQs
MHg0OSwweEUzLDB4MzgsMHgyRCwweDI3LDB4MkQsMHgyOSwKLSAgICAweDA1LDB4NjIsMHg0Myww
eDQ5LDB4OEIsMHgzRCwweEI1LDB4RkQsMHgyNiwweDZBLDB4QTUsMHg1MSwweDBBLDB4QUIsMHhB
NSwweDJELAotICAgIDB4ODcsMHg3MiwweDA2LDB4NjIsMHgzQiwweEFGLDB4MEQsMHhCRiwweDA5
LDB4OEIsMHg2NiwweDcyLDB4M0QsMHhCRCwweEVELDB4RkYsCi0gICAgMHgyOSwweDkzLDB4Qzgs
MHg4MiwweDBFLDB4MkUsMHhGRCwweEI1LDB4QUIsMHhBQiwweEU4LDB4OEEsMHgwMywweDJCLDB4
QUQsMHg5NSwKLSAgICAweEFCLDB4QTMsMHg0QSwweDlCLDB4MkEsMHhBMCwweEVBLDB4NzUsMHg2
QSwweDlCLDB4QzgsMHg4MiwweEUwLDB4RTAsMHg3OCwweDdFLAotICAgIDB4QTgsMHg4MiwweDQ3
LDB4NzIsMHhFQSwweEZBLDB4RkUsMHhERSwweEM4LDB4OEEsMHg0NiwweDdBLDB4QjcsMHhCRCww
eDBGLDB4MEIsCi0gICAgMHg0QSwweDkzLDB4QTgsMHg4MiwweEFELDB4MkIsMHgyQiwweDJCLDB4
MEMsMHhBQywweDRBLDB4OUIsMHgwRiwweDBCLDB4MkIsMHhBRCwKLSAgICAweDJDLDB4QjQsMHg4
QiwweDlCLDB4NUUsMHg2OCwweDY4LDB4NkEsMHgyQSwweDkzLDB4NjYsMHg3MiwweEEwLDB4Nzgs
MHg3OCwweDc4LAotICAgIDB4NkEsMHg5MywweDA2LDB4NkEsMHgwQSwweEVGLDB4RjUsMHhENSww
eEY0LDB4RTUsMHg4NywweDdBLDB4MEIsMHhCRiwweEY1LDB4NTUsCi0gICAgMHhCNiwweEY2LDB4
ODYsMHg3MiwweDAwLDB4MEEsMHhCRiwweEQ1LDB4RDcsMHhGRSwweENFLDB4QkMsMHgwMCwweDAy
LDB4MEIsMHgyRCwKLSAgICAweDE4LDB4RkYsMHhENywweEZFLDB4QTIsMHgyMiwweEEzLDB4RUYs
MHhGNywweEZFLDB4OTYsMHhGNiwweDgwLDB4RjAsMHg3QSwweEZBLAotICAgIDB4QjYsMHhGNiww
eEQ2LDB4RTYsMHg4OCwweDg4LDB4MDgsMHgyMCwweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhD
RiwweEU5LDB4N0YsCi0gICAgMHgxOCwweEZGLDB4QjYsMHhFRSwweEQ1LDB4OTUsMHhCRCwweDJE
LDB4NTksMHhGRiwweEY3LDB4RkUsMHhBRCwweDJCLDB4MjIsMHg4QSwKLSAgICAweDU5LDB4RkYs
MHgzOCwweEZGLDB4RUEsMHhGRSwweEZGLDB4N0IsMHg1OSwweEZGLDB4MTgsMHhGRiwweEFFLDB4
RkEsMHhGQSwweEVFLAotICAgIDB4MzgsMHhGRiwweDU2LDB4RUUsMHhFMCwweEU4LDB4RUEsMHg3
OCwweDk2LDB4RUUsMHg1NSwweEU2LDB4QzgsMHhBQSwweEVCLDB4RkYsCi0gICAgMHhCNiwweEY2
LDB4MzQsMHhFNiwweDNGLDB4QUYsMHhCRiwweDM1LDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhCRCww
eDJELDB4QTUsMHhBRCwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4MEUsMHgyMiwweDBBLDB4
MjMsMHgzOCwweEZGLDB4MTksMHhGRiwweEJGLDB4RUIsMHhCRCwweEFELAotICAgIDB4MzksMHhG
RiwweDE4LDB4RkYsMHg1RSwweERGLDB4REUsMHg3RSwweDE4LDB4RkYsMHhGOCwweEY2LDB4RTIs
MHhFMCwweEFBLDB4QjgsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDc3LDB4NTcsMHg1RCww
eDVELDB4MTgsMHhGRiwweEY4LDB4RjYsMHg1RiwweDdGLDB4RUYsMHhFRiwKLSAgICAweDE4LDB4
RkYsMHhGOCwweEY2LDB4RUQsMHhGQiwweEJCLDB4RkQsMHgxOCwweEZGLDB4RjgsMHhGNiwweEVB
LDB4RUIsMHhFOSwweEY3LAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBQSwweEFBLDB4RUYs
MHhBQSwweDE4LDB4RkYsMHhGOCwweEY2LDB4RkUsMHhERSwweEZFLDB4NUUsCi0gICAgMHhGOCww
eEY2LDB4RDcsMHhGNiwweDYwLDB4NzAsMHg1QywweDc5LDB4RDcsMHhGNiwweEI3LDB4RUUsMHgy
RiwweDBCLDB4MkEsMHgwRSwKLSAgICAweEY4LDB4RjYsMHhCNiwweEVFLDB4NkUsMHhFQSwweDhB
LDB4QUEsMHhGNywweEY2LDB4QjYsMHhFRSwweDlGLDB4QkIsMHhBQSwweEIyLAotICAgIDB4RDcs
MHhGNiwweEI2LDB4RUUsMHg3RSwweEU4LDB4MkEsMHgwQSwweEY3LDB4RkUsMHhENiwweEVFLDB4
MkQsMHgyRiwweEJELDB4QUYsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweDdGLDB4NzcsMHhG
RiwweDdCLDB4MTgsMHhGNywweEQ3LDB4RjYsMHhCRiwweEZGLDB4QUYsMHhBRSwKLSAgICAweEY4
LDB4RkUsMHgxOCwweEY3LDB4RkUsMHhGRSwweEZGLDB4RkEsMHgxOCwweEZGLDB4RjcsMHhGNiww
eEVFLDB4QkIsMHhBRSwweEFGLAotICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHhBQSwweEFBLDB4
MjAsMHhBMiwweDE4LDB4RkYsMHhGNywweEY2LDB4RTcsMHg5NywweEQ2LDB4RjcsCi0gICAgMHgx
OCwweEZGLDB4RjcsMHhGNiwweDdELDB4NUUsMHg3NiwweDZGLDB4RDcsMHhGRSwweEY3LDB4RjYs
MHhGNywweEZGLDB4REYsMHhGNywKLSAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4QTgsMHhCQSww
eEZBLDB4N0UsMHhENywweEY2LDB4OTYsMHhFRSwweEJBLDB4RkEsMHhGQSwweEZGLAotICAgIDB4
QjYsMHhGNiwweDk2LDB4RUUsMHhDMCwweEUwLDB4REIsMHg1RiwweDk2LDB4RUUsMHg3NiwweEVF
LDB4ODgsMHgyMCwweEEzLDB4QUQsCi0gICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweEZELDB4NkUs
MHg3NiwweDVGLDB4NzUsMHhFRSwweDU1LDB4RTYsMHgyQSwweEU4LDB4N0EsMHhFRSwKLSAgICAw
eDc2LDB4RUUsMHg1NSwweEU2LDB4Q0MsMHhFNywweEI1LDB4RjUsMHg3NiwweEVFLDB4NTUsMHhF
NiwweDAwLDB4OEIsMHgyMiwweDJBLAotICAgIDB4QjYsMHhGNiwweDc2LDB4RUUsMHhBRiwweDg5
LDB4QUQsMHgyRCwweEI2LDB4RjYsMHg3NiwweEVFLDB4QUEsMHhFMiwweEZBLDB4NkEsCi0gICAg
MHg5NiwweEY2LDB4NzYsMHhFRSwweDNFLDB4MEIsMHgwOSwweDJCLDB4QjYsMHhGNiwweDc2LDB4
RUUsMHg4QSwweEMyLDB4Q0EsMHg0OCwKLSAgICAweDU1LDB4RTYsMHg5MiwweENELDB4NzgsMHg1
QywweDVDLDB4NUEsMHgxNSwweEU2LDB4OTIsMHhENSwweDJGLDB4QUIsMHhBRCwweEI1LAotICAg
IDB4NTUsMHhFRSwweEY0LDB4RTUsMHgyQSwweEFGLDB4MDksMHgyQiwweDc2LDB4RUUsMHg1NSww
eEVFLDB4REQsMHhGNSwweEQ5LDB4NUYsCi0gICAgMHg1NSwweEVFLDB4QjIsMHhENSwweDc4LDB4
NzgsMHg2QSwweDc4LDB4RDMsMHhERCwweDkyLDB4RDUsMHgwQiwweDI5LDB4MkUsMHgyQiwKLSAg
ICAweDE0LDB4RTYsMHhCMiwweEQ1LDB4NjMsMHg2MywweDZBLDB4NjIsMHg5MiwweEQ1LDB4RjAs
MHhCQywweEZFLDB4REUsMHg3RSwweDVDLAotICAgIDB4OTIsMHhENSwweEVGLDB4QzQsMHgyQiww
eEJELDB4QjUsMHhGRiwweEQ0LDB4REQsMHg3MSwweENELDB4Q0EsMHg4RiwweENGLDB4ODUsCi0g
ICAgMHg1MSwweENELDB4MkQsMHhBQywweERDLDB4NUMsMHhERSwweERDLDB4NTEsMHhDRCwweEFG
LDB4QjQsMHg4OSwweDIxLDB4QTksMHgyRCwKLSAgICAweDUxLDB4Q0QsMHhEMCwweEJDLDB4RTAs
MHhGQSwweEY2LDB4REUsMHg1MSwweENELDB4RjAsMHhDNCwweDlGLDB4MkQsMHgyRiwweEE5LAot
ICAgIDB4NzEsMHhENSwweDMxLDB4QzUsMHg5QiwweEFELDB4M0YsMHg5RiwweDkyLDB4RDUsMHg1
MiwweENELDB4MkEsMHg4QiwweDJCLDB4QUYsCi0gICAgMHhCMywweEQ1LDB4OTIsMHhENSwweERG
LDB4MzUsMHgyNSwweDk1LDB4RjMsMHhERCwweEIzLDB4RDUsMHhBRCwweEM5LDB4RkIsMHhGRiwK
LSAgICAweEQzLDB4REQsMHhCMiwweEQ1LDB4M0QsMHhBRCwweDdELDB4RkQsMHhEMywweERELDB4
NzEsMHhDRCwweDA4LDB4RTgsMHg3OCwweDVFLAotICAgIDB4RTgsMHg4MiwweEE3LDB4N0EsMHgw
RSwweDgwLDB4M0EsMHg5OCwweDA4LDB4ODMsMHhDOCwweDgyLDB4MjgsMHhBRSwweENCLDB4MEYs
Ci0gICAgMHgyOCwweDhCLDB4QzcsMHg3QSwweDBBLDB4QkIsMHhFRiwweERGLDB4RUIsMHg5Qiww
eEM3LDB4N0EsMHgyQiwweEZGLDB4N0YsMHhENywKLSAgICAweDkxLDB4RDUsMHgwOCwweDgzLDB4
MEEsMHhGRCwweDU1LDB4NTUsMHg3NSwweEVFLDB4NDksMHg4QiwweDAwLDB4MkIsMHhGNSwweDU1
LAotICAgIDB4OTUsMHhFRSwweEU4LDB4ODIsMHgwMCwweDAwLDB4MkEsMHhCRCwweEQ2LDB4RjYs
MHg1MCwweENELDB4MDAsMHgwMiwweDJBLDB4QkQsCi0gICAgMHhENiwweEY2LDB4NTQsMHhFRSww
eDAwLDB4MDgsMHg4MiwweEFELDB4RDYsMHhGNiwweEI2LDB4RjYsMHgyOCwweDIyLDB4MEEsMHg4
RCwKLSAgICAweEY3LDB4RjYsMHhCNiwweEY2LDB4QUUsMHgyRiwweEVGLDB4QkYsMHhGNywweEZF
LDB4QjYsMHhGNiwweEJCLDB4QkEsMHhGRSwweDdBLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RjYs
MHgwMCwweDgwLDB4QTMsMHhBQSwweDE2LDB4RjcsMHhCNiwweEY2LDB4RUYsMHhERCwweEZGLDB4
NTUsCi0gICAgMHhGNywweEZFLDB4RDYsMHhGNiwweDdGLDB4NUQsMHhENSwweDVELDB4RjYsMHhG
NiwweEQ2LDB4RjYsMHg3RCwweEQ1LDB4RkQsMHg3NywKLSAgICAweEY3LDB4RjYsMHhENiwweEY2
LDB4NTYsMHhGRSwweDVFLDB4NTcsMHhENiwweEY2LDB4QjYsMHhGNiwweEUwLDB4QjAsMHgwMCww
eDAwLAotICAgIDB4RjcsMHhGRSwweEI2LDB4RjYsMHhCQiwweEZGLDB4RkIsMHhBQSwweEQ3LDB4
RjYsMHhENiwweEY2LDB4RkQsMHhGNSwweEZGLDB4RUUsCi0gICAgMHhENywweEY2LDB4RDYsMHhG
NiwweEFELDB4QkYsMHhCRCwweEY1LDB4QjYsMHhGRSwweEY3LDB4RjYsMHhGQSwweEZCLDB4RUUs
MHg3QSwKLSAgICAweEY2LDB4RjYsMHhENiwweEY2LDB4NTcsMHhCNywweEVGLDB4QUIsMHhCNyww
eEZFLDB4RjYsMHhGNiwweEJBLDB4QUYsMHhGRiwweEVGLAotICAgIDB4RDYsMHhGNiwweEIzLDB4
RDUsMHg2MCwweEU4LDB4QzAsMHhDMCwweEVGLDB4QkMsMHg0MywweDQ5LDB4NzgsMHg3OCwweDc4
LDB4NzgsCi0gICAgMHg2NCwweDQ5LDB4MDIsMHgzOSwweEZDLDB4RkUsMHg3QiwweEZFLDB4MjMs
MHg0MSwweEUyLDB4MzgsMHg3RCwweDZFLDB4RjgsMHhFMCwKLSAgICAweDIzLDB4MzksMHg4MCww
eDI4LDB4N0UsMHhGQSwweEFBLDB4MjIsMHgwMywweDM5LDB4NjAsMHgyMCwweEQ1LDB4RkYsMHhC
QSwweDIwLAotICAgIDB4MDIsMHgzMSwweDgxLDB4MjAsMHhBRCwweEExLDB4QkEsMHhBOCwweDAy
LDB4MzksMHhDMiwweDMwLDB4QkQsMHhBQiwweEFGLDB4QUIsCi0gICAgMHgyMywweDM5LDB4QzIs
MHgzMCwweDdELDB4RUYsMHhFQSwweENCLDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyRSwweEI3LDB4
QTcsMHhGQiwKLSAgICAweDg0LDB4NTksMHhFMywweDM4LDB4QkQsMHhBRCwweDM3LDB4MjUsMHg4
NywweDdBLDB4NjQsMHg1OSwweEFELDB4MkQsMHgyRiwweDJGLAotICAgIDB4RTksMHg4QSwweDg3
LDB4N0EsMHgwOSwweEE5LDB4QTksMHhGNSwweEU5LDB4OEEsMHgwNSwweDZBLDB4ODAsMHg4MCww
eEUyLDB4N0IsCi0gICAgMHg0NywweDcyLDB4RTMsMHgzOCwweEYwLDB4RTgsMHhGOCwweDdGLDB4
MjQsMHg0MSwweEExLDB4MzAsMHhGMCwweEZBLDB4N0MsMHhGRSwKLSAgICAweEUyLDB4MzgsMHhD
MiwweDMwLDB4RkQsMHgyRCwweDM5LDB4QkIsMHg0NCwweDQ5LDB4QzIsMHgzOCwweDhGLDB4MkYs
MHhBRiwweDZELAotICAgIDB4QTUsMHg1MSwweDgxLDB4MjgsMHgwMiwweEFBLDB4RkUsMHg1RCww
eEE1LDB4NTEsMHg2MSwweDI4LDB4MDAsMHhBQSwweERGLDB4NzUsCi0gICAgMHhFNSwweDYxLDB4
QTIsMHgzMCwweDAwLDB4QUIsMHg3RCwweDU1LDB4NDYsMHg2QSwweEUzLDB4NDAsMHgwMCwweDBB
LDB4QkQsMHhENSwKLSAgICAweEU4LDB4OEEsMHg4NCwweDUxLDB4MDIsMHg4QSwweEFGLDB4QkQs
MHgyOSwweDkzLDB4ODcsMHg3QSwweDJBLDB4QUIsMHhCRiwweEI1LAotICAgIDB4NEEsMHg5Qiww
eEM4LDB4ODIsMHgwMiwweEFCLDB4N0YsMHg1NSwweDJBLDB4OTMsMHg2NywweDdBLDB4NjAsMHg2
MCwweEVFLDB4RUUsCi0gICAgMHhBOCwweDgyLDB4NDYsMHg3QSwweDkzLDB4QkYsMHhCNSwweEFB
LDB4MDksMHg4QiwweDg3LDB4N0EsMHg2NSwweDNGLDB4MkYsMHhBRCwKLSAgICAweDRBLDB4OTMs
MHhFOSwweDhBLDB4QUYsMHhBMywweEVBLDB4N0YsMHg2QSwweDlCLDB4QzgsMHg4MiwweDJBLDB4
QUYsMHgzNywweEJELAotICAgIDB4Q0MsMHhBMywweEU5LDB4OEEsMHhBMCwweEVFLDB4N0UsMHg1
RiwweDRCLDB4OTMsMHhBOCwweDgyLDB4NzgsMHhFOCwweDYyLDB4NkYsCi0gICAgMHg4NywweDdB
LDB4MDYsMHg2QSwweEQ3LDB4RDgsMHg3OCwweEY4LDB4NjcsMHg3MiwweEM1LDB4NjEsMHgwQSww
eEFFLDB4NUYsMHg3QSwKLSAgICAweDg2LDB4N0EsMHhFNiwweDYxLDB4MkEsMHhBNywweEJELDB4
RDUsMHg1NCwweEVFLDB4MjksMHg4QiwweDBELDB4M0QsMHgyRCwweEI1LAotICAgIDB4RDcsMHhG
RSwweDU0LDB4RUUsMHg4MiwweEFCLDB4QUYsMHhCNSwweEI2LDB4RjYsMHg5NiwweEVFLDB4Mjgs
MHhGQSwweDNDLDB4MEEsCi0gICAgMHhENiwweEY2LDB4OTUsMHhFRSwweEVGLDB4QkYsMHhFQSww
eEMwLDB4RjcsMHhGNiwweDk2LDB4RUUsMHg3RSwweEZFLDB4QkYsMHgzNSwKLSAgICAweDM4LDB4
RkYsMHhCNiwweEY2LDB4MkQsMHgwQiwweDAyLDB4MDIsMHg1OSwweEZGLDB4MzksMHhGRiwweEFE
LDB4RUQsMHhGRiwweDVELAotICAgIDB4NTgsMHhGRiwweDM5LDB4RkYsMHg1QiwweEQ3LDB4REYs
MHg3NSwweDM5LDB4RkYsMHhGNywweEZFLDB4QzAsMHhFOCwweEY4LDB4NjgsCi0gICAgMHhGOCww
eEZFLDB4NzUsMHhFRSwweDU4LDB4NUMsMHg1RSwweDVGLDB4NzUsMHhFRSwweDM1LDB4RTYsMHhF
MiwweEUwLDB4RTIsMHhFQSwKLSAgICAweEQ3LDB4RjYsMHgzNCwweEU2LDB4MzUsMHhCRCwweEJE
LDB4M0QsMHgxOCwweEZGLDB4RDcsMHhGNiwweEE5LDB4QTksMHgyQiwweEFCLAotICAgIDB4MTgs
MHhGRiwweEY4LDB4RjYsMHgyQiwweDJGLDB4MkYsMHgzRiwweDM4LDB4RkYsMHgxOSwweEZGLDB4
RUYsMHhFQiwweDZCLDB4RkQsCi0gICAgMHgzOSwweEZGLDB4MTgsMHhGRiwweEZGLDB4RkQsMHhG
RCwweERELDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGOCwweEEwLDB4QjAsMHhGMCwKLSAgICAweDE4
LDB4RkYsMHhGOCwweEY2LDB4REEsMHg2QSwweEJFLDB4RjcsMHgxOCwweEZGLDB4RjgsMHhGNiww
eEZELDB4NzcsMHg1NywweDc3LAotICAgIDB4RjcsMHhGRSwweEY4LDB4RjYsMHhFRiwweEFGLDB4
QUQsMHhGRiwweDE4LDB4RkYsMHhGOCwweEY2LDB4QkYsMHhEQiwweEY1LDB4RjcsCi0gICAgMHgx
OCwweEZGLDB4RjgsMHhGNiwweEJBLDB4NzcsMHg1RiwweERGLDB4MTgsMHhGRiwweEQ3LDB4RjYs
MHhFOCwweEJBLDB4N0UsMHg2RSwKLSAgICAweEY4LDB4RjYsMHhENywweEY2LDB4NzUsMHg3Niww
eDVELDB4RUYsMHhGOCwweEY2LDB4QjYsMHhFRSwweEE3LDB4MkYsMHgyQSwweEFBLAotICAgIDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHhBRiwweEJGLDB4QUIsMHhGOCwweEY3LDB4RjYsMHhENywweEY2
LDB4QkEsMHhBQiwweEFCLDB4RUEsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDU3LDB4RUYs
MHhBQiwweEEzLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhBNSwweEE3LDB4MjIsMHgwQSwKLSAgICAw
eDE4LDB4RkYsMHhGOCwweEY2LDB4NkEsMHhBQiwweDhGLDB4RkYsMHgxNywweEZGLDB4RjcsMHhG
NiwweDc1LDB4NTcsMHg3NSwweDVGLAotICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHhCQiwweEZE
LDB4QkQsMHhGRiwweDE4LDB4RkYsMHhGNywweEY2LDB4QjcsMHhCRCwweEFGLDB4QUIsCi0gICAg
MHgxOCwweEZGLDB4RjgsMHhGNiwweEJBLDB4RUUsMHhGRSwweEJBLDB4MTgsMHhGRiwweEY3LDB4
RjYsMHhERiwweDdGLDB4RUEsMHhFQSwKLSAgICAweEQ3LDB4RkUsMHgxOCwweEY3LDB4QkYsMHhB
QiwweEFCLDB4QUYsMHhGNywweEY2LDB4OTgsMHhFRSwweDg4LDB4QTAsMHhBQSwweEJBLAotICAg
IDB4RDcsMHhGNiwweDk2LDB4RUUsMHhFOCwweEFBLDB4NzgsMHg3RSwweEI2LDB4RjYsMHg3Niww
eEVFLDB4QTgsMHhBQSwweEVBLDB4RkEsCi0gICAgMHg5NiwweEVFLDB4NTYsMHhFRSwweDAwLDB4
ODAsMHg4QSwweEZGLDB4OTYsMHhFRSwweDU1LDB4RTYsMHhBQiwweEE4LDB4RkEsMHhGRiwKLSAg
ICAweDk2LDB4RUUsMHg1NSwweEU2LDB4QTgsMHhCQSwweEFGLDB4RkUsMHg3NSwweEVFLDB4MzUs
MHhFNiwweEEyLDB4RTAsMHhCOCwweEZGLAotICAgIDB4NTUsMHhFRSwweDc2LDB4RTYsMHhBMCww
eEFBLDB4QTgsMHhBQSwweDk2LDB4RUUsMHg1NSwweEU2LDB4QkQsMHhCRCwweEJGLDB4QUYsCi0g
ICAgMHhCNiwweEY2LDB4NzYsMHhFRSwweDI5LDB4MjMsMHhBQiwweDJCLDB4QjYsMHhGNiwweDc2
LDB4RUUsMHhGOCwweEU4LDB4RUEsMHhGQSwKLSAgICAweEI2LDB4RjYsMHg3NiwweEVFLDB4QUQs
MHhCQiwweEFELDB4MkYsMHhCNywweEY2LDB4NTUsMHhFNiwweEEwLDB4RTIsMHhDMCwweDQ4LAot
ICAgIDB4MzUsMHhFNiwweDUyLDB4Q0QsMHhGOCwweERDLDB4REUsMHg1QSwweEY0LDB4REQsMHg1
MSwweENELDB4MkEsMHhBOSwweDNELDB4QUQsCi0gICAgMHg1NSwweEVFLDB4RDMsMHhERCwweDBB
LDB4OEIsMHgyRiwweEE5LDB4NzUsMHhFRSwweDM1LDB4RTYsMHhGQSwweEJFLDB4RkIsMHhEQiwK
LSAgICAweDM1LDB4RUUsMHhCMywweEQ1LDB4NzgsMHg1OCwweDdDLDB4N0MsMHhGNCwweERELDB4
OTIsMHhENSwweEFCLDB4MkYsMHgyRCwweEFGLAotICAgIDB4MTQsMHhFNiwweEQzLDB4REQsMHg2
MiwweEUyLDB4QTIsMHhFMiwweEYzLDB4REQsMHgxMSwweEM1LDB4N0UsMHg3QSwweEY4LDB4QTAs
Ci0gICAgMHg3MSwweENELDB4MTAsMHhDNSwweEZELDB4N0YsMHhENiwweEQ4LDB4QjMsMHhENSww
eDEwLDB4QzUsMHg4OSwweEFCLDB4RkQsMHhBRCwKLSAgICAweDMwLDB4QzUsMHg0RCwweEFDLDB4
NUMsMHg1QywweDVFLDB4NTQsMHgzMSwweENELDB4OEUsMHhCNCwweDI5LDB4OEIsMHgwRCwweDBE
LAotICAgIDB4MzEsMHhDRCwweEQwLDB4QkMsMHhGRiwweDlFLDB4QUEsMHhBOCwweDMxLDB4QzUs
MHhGMCwweEM0LDB4MEYsMHgyQiwweEJCLDB4RUIsCi0gICAgMHg1MSwweENELDB4MTEsMHhDNSww
eDI4LDB4QjIsMHhCQiwweEZFLDB4OTIsMHhENSwweDUxLDB4Q0QsMHhBQiwweEVCLDB4QUQsMHhG
RCwKLSAgICAweEIzLDB4RDUsMHg3MiwweENELDB4MkIsMHgyNywweEFGLDB4MzUsMHhEMywweERE
LDB4QjMsMHhENSwweDhFLDB4RUIsMHhBRiwweDA5LAotICAgIDB4RDMsMHhERCwweDkyLDB4RDUs
MHhFRSwweDY2LDB4NzgsMHg2OCwweDkyLDB4RDUsMHgzMCwweENELDB4QjgsMHg1RSwweEZGLDB4
RDcsCi0gICAgMHgwOCwweDgzLDB4QzcsMHg3QSwweEJDLDB4QjYsMHg5NiwweERGLDB4MDgsMHg4
MywweEM4LDB4N0EsMHgyQSwweEZBLDB4NUMsMHhCQSwKLSAgICAweDI5LDB4OEIsMHhDOCwweDdB
LDB4RkUsMHg3RiwweEI2LDB4OEUsMHgwOCwweDgzLDB4QzgsMHg4MiwweEY2LDB4RTYsMHhGMiww
eEJFLAotICAgIDB4MDgsMHg4MywweEM3LDB4N0EsMHhBQSwweDg1LDB4RUYsMHgxOCwweDA4LDB4
ODMsMHhDNywweDgyLDB4MDIsMHhBMywweDJGLDB4MEUsCi0gICAgMHg4QSwweDkzLDB4RTgsMHg4
MiwweDBCLDB4NzcsMHg1NSwweDU3LDB4Q0UsMHhCQywweDA4LDB4ODMsMHgyQiwweEY1LDB4NTUs
MHg1NSwKLSAgICAweDE0LDB4RTYsMHgyOCwweDhCLDB4MDIsMHhBRiwweEQ1LDB4NTUsMHg5Niww
eEVFLDB4MjksMHg4QiwweDAwLDB4MDIsMHhCRiwweEQ1LAotICAgIDB4QjYsMHhGNiwweDRFLDB4
QUMsMHgwMCwweDAwLDB4MEEsMHhCRCwweEQ2LDB4RjYsMHhGMywweEU1LDB4MDAsMHgwMCwweDBB
LDB4QUQsCi0gICAgMHhENiwweEY2LDB4QjUsMHhGNiwweEE4LDB4QUEsMHhBQSwweEY1LDB4RDYs
MHhGNiwweEI2LDB4RjYsMHhGNywweEZGLDB4RkQsMHg3NywKLSAgICAweEQ2LDB4RjYsMHhCNiww
eEY2LDB4QTIsMHhFRSwweDdCLDB4RjksMHhENiwweEY2LDB4QjYsMHhGNiwweDBDLDB4MkIsMHg4
QSwweEU4LAotICAgIDB4RDcsMHhGRSwweEQ2LDB4RjYsMHhENywweERGLDB4N0QsMHhENywweEY3
LDB4RkUsMHhENiwweEY2LDB4RUYsMHhFRCwweEU5LDB4RkQsCi0gICAgMHhGNywweEZFLDB4RDYs
MHhGNiwweEZGLDB4REYsMHg3RiwweERGLDB4RjYsMHhGRSwweEQ3LDB4RjYsMHhGRCwweEY1LDB4
NTcsMHg1RCwKLSAgICAweEY3LDB4RkUsMHhENiwweEY2LDB4NTUsMHg1RiwweDVGLDB4N0YsMHhG
NywweEZFLDB4QjYsMHhGNiwweEFGLDB4QUYsMHhCRiwweEJGLAotICAgIDB4RjYsMHhGRSwweEQ2
LDB4RjYsMHhBRiwweEJCLDB4OTUsMHhGNywweEY3LDB4RkUsMHhCNiwweEY2LDB4QkUsMHhFRSww
eERFLDB4RkUsCi0gICAgMHhENiwweEY2LDB4NTQsMHhFRSwweDYwLDB4QzAsMHhBMCwweDgwLDB4
RjIsMHhERCwweEM0LDB4NTksMHg3OCwweDU4LDB4NzgsMHhGOCwKLSAgICAweDg0LDB4NDksMHgw
MiwweDM5LDB4REYsMHg1RiwweEZGLDB4RjAsMHg0MywweDQxLDB4RTIsMHgzOCwweDJBLDB4MEIs
MHhBNSwweEJGLAotICAgIDB4ODQsMHg0OSwweDIzLDB4MzksMHg1OSwweDhBLDB4QUIsMHhGRCww
eDY0LDB4NDksMHgwMiwweDM5LDB4NUYsMHhCRSwweEE4LDB4MkEsCi0gICAgMHg4NSwweDQ5LDB4
RTIsMHgzMCwweDU3LDB4NTcsMHg3QSwweEU4LDB4NDMsMHg0MSwweEUyLDB4MzAsMHg3NSwweEZE
LDB4QUEsMHhBMCwKLSAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4RUQsMHhCQiwweDdCLDB4NUMs
MHgwMywweDM5LDB4QzIsMHgzOCwweEJBLDB4QkMsMHhCOCwweDI4LAotICAgIDB4RTUsMHg2OSww
eDIzLDB4NDEsMHhCNSwweEI1LDB4QUQsMHhBRCwweDQ3LDB4N0EsMHhDNCwweDYxLDB4MDksMHgy
OSwweDAzLDB4ODMsCi0gICAgMHg2NywweDdBLDB4MDYsMHg3MiwweDAwLDB4QTAsMHhBOCwweDQz
LDB4NDYsMHg3MiwweDg0LDB4NTksMHg4MCwweEM4LDB4RUEsMHg3RSwKLSAgICAweDg0LDB4NTks
MHhFMywweDM4LDB4NTgsMHhFOCwweDY4LDB4RTgsMHgyNCwweDQxLDB4QzIsMHgzOCwweDU1LDB4
N0EsMHhBMiwweDYwLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGRiwweEJGLDB4N0YsMHg2
NSwweEUyLDB4MzgsMHhBMSwweDI4LDB4NUEsMHhGOCwweEZBLDB4NzgsCi0gICAgMHhDMiwweDMw
LDB4NjEsMHgyOCwweDdBLDB4QkUsMHhCQSwweEE4LDB4QTIsMHgzMCwweDgyLDB4MjgsMHhFNSww
eDBGLDB4MEIsMHgwMiwKLSAgICAweEMyLDB4MzgsMHhBMiwweDMwLDB4MjksMHgyOCwweDNGLDB4
MjUsMHg0NCwweDQ5LDB4RTMsMHgzOCwweEJELDB4QUYsMHhBRCwweDk1LAotICAgIDB4QzUsMHg2
MSwweDIzLDB4NDksMHgwOSwweEJELDB4RDUsMHhERCwweEM4LDB4ODIsMHg4NCwweDU5LDB4MEIs
MHgyRiwweEFELDB4QjUsCi0gICAgMHhDOCwweDgyLDB4NjcsMHg3QSwweDJDLDB4QUEsMHhCRCww
eEY1LDB4MDksMHg5MywweDg3LDB4ODIsMHhGRiwweEY3LDB4QUQsMHgyNSwKLSAgICAweEU5LDB4
OEEsMHg4NywweDdBLDB4RkIsMHgwQSwweENCLDB4NjAsMHhFOCwweDhBLDB4ODgsMHg3QSwweEFG
LDB4QjEsMHhERCwweDdELAotICAgIDB4RTksMHg4QSwweDg3LDB4N0EsMHgwMCwweDBCLDB4Rjcs
MHhGNiwweDJBLDB4OTMsMHhDOSwweDgyLDB4MjksMHgyRCwweEI5LDB4MTUsCi0gICAgMHgyQSww
eDkzLDB4NDYsMHg3MiwweEU4LDB4NzgsMHg3OCwweDc4LDB4MjksMHg4QiwweDA2LDB4NkEsMHg4
QSwweEZELDB4RDUsMHg3NSwKLSAgICAweDg3LDB4N0EsMHhFNSwweDY5LDB4RTgsMHhCQSwweDJG
LDB4QkQsMHhDOCwweDgyLDB4QzUsMHg2MSwweDdGLDB4RTIsMHhBMiwweDBBLAotICAgIDB4Njcs
MHg3MiwweEM1LDB4NjEsMHhENSwweEQ3LDB4RkUsMHg4MCwweDZFLDB4QjQsMHgyNiwweDcyLDB4
MkQsMHhCNSwweEY1LDB4REQsCi0gICAgMHg5NiwweEY2LDB4Q0MsMHhBMywweDAyLDB4MEIsMHgy
RCwweEI1LDB4RDcsMHhGRSwweDk2LDB4RjYsMHgyRCwweDBBLDB4MEEsMHgyRCwKLSAgICAweEY3
LDB4RkUsMHg5NiwweEVFLDB4NkEsMHg3OCwweEZBLDB4QUEsMHgzOCwweEZGLDB4OTUsMHhFRSww
eEFELDB4MjksMHgwQiwweDAyLAotICAgIDB4NTgsMHhGRiwweDM5LDB4RkYsMHg3NSwweDVELDB4
NTcsMHg1NywweDM5LDB4RkYsMHgxOCwweEZGLDB4MDAsMHgwMCwweDAwLDB4M0EsCi0gICAgMHgz
OSwweEZGLDB4MTgsMHhGRiwweDgwLDB4QTAsMHhGOCwweEZBLDB4NTksMHhGRiwweEI2LDB4RUUs
MHg2QSwweDZBLDB4N0EsMHg3RSwKLSAgICAweDk2LDB4RUUsMHg1NSwweEVFLDB4RDgsMHg3RSww
eDc2LDB4NTcsMHg3NiwweEVFLDB4MzUsMHhFNiwweEUyLDB4NjgsMHg1QSwweDVFLAotICAgIDB4
RDcsMHhGNiwweDM1LDB4RTYsMHgyNSwweDJELDB4MkQsMHgzRiwweDE4LDB4RkYsMHhGOCwweEY2
LDB4MzcsMHg5QiwweEE5LDB4RUQsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDNGLDB4MkUs
MHgyRSwweDBFLDB4MzksMHhGRiwweDE4LDB4RkYsMHg3RiwweDc5LDB4QkYsMHg5RSwKLSAgICAw
eDE4LDB4RkYsMHgzQSwweEY3LDB4ODAsMHgwMiwweDIyLDB4MkEsMHgxOCwweEZGLDB4RjgsMHhG
NiwweEU4LDB4RjIsMHhFOCwweEZBLAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHg3NiwweDVE
LDB4RjcsMHg3NywweDE4LDB4RkYsMHhGOCwweEY2LDB4N0YsMHg2NiwweDc3LDB4RjUsCi0gICAg
MHgxNywweEZGLDB4RjgsMHhGNiwweDdGLDB4NzcsMHhGRCwweEZELDB4MTcsMHhGRiwweEY4LDB4
RjYsMHhGNywweEVELDB4REYsMHg3RiwKLSAgICAweDE3LDB4RkYsMHhGOCwweEY2LDB4RkYsMHhG
NywweDVELDB4RjcsMHgxOCwweEZGLDB4RjcsMHhGNiwweDU3LDB4NzUsMHg2RiwweDVGLAotICAg
IDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg3QSwweDYyLDB4RTAsMHhFQywweEY3LDB4RjYsMHhENyww
eEY2LDB4MzUsMHhBRCwweDVELDB4RjksCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEVBLDB4
RUEsMHhGNywweDZGLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhBRiwweDlELDB4MEQsMHgwRCwKLSAg
ICAweDE3LDB4RkYsMHhGOCwweEY2LDB4RDUsMHhGNSwweERGLDB4REIsMHgxOCwweEZGLDB4Rjgs
MHhGNiwweDU3LDB4N0QsMHhCRCwweEY3LAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhFRiww
eEY5LDB4RkIsMHgzRCwweDE4LDB4RkYsMHhGNywweEY2LDB4NUQsMHg1QSwweDdFLDB4RUEsCi0g
ICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweEVELDB4QjksMHhFRCwweDk3LDB4MTgsMHhGRiwweEY4
LDB4RjYsMHhBQSwweEFCLDB4RkQsMHhGRiwKLSAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4QUUs
MHg4MiwweEFFLDB4RkUsMHhGOCwweEZFLDB4MTgsMHhGNywweEJGLDB4MkIsMHgyRiwweDJFLAot
ICAgIDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhGMCwweDUyLDB4NTgsMHg1QSwweEQ3LDB4RjYsMHg5
NywweEVFLDB4RTAsMHg2OCwweEUwLDB4QTgsCi0gICAgMHhCNywweEY2LDB4NzYsMHhFRSwweEEw
LDB4RjAsMHhGQywweDdBLDB4OTYsMHhFRSwweDc2LDB4RUUsMHhCOCwweDY4LDB4RjgsMHg1RiwK
LSAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4N0UsMHg1RSwweEZBLDB4QkEsMHg3NiwweEVFLDB4
MzUsMHhFNiwweEFGLDB4RkYsMHhGRiwweEMwLAotICAgIDB4NzYsMHhFRSwweDM1LDB4RTYsMHhG
QSwweDVGLDB4NTcsMHhGRiwweDU1LDB4RTYsMHgzNSwweEU2LDB4OUUsMHhEOCwweDAyLDB4ODMs
Ci0gICAgMHg3NSwweEVFLDB4NTUsMHhFNiwweEQ5LDB4REQsMHhGRiwweDVELDB4OTYsMHhFRSww
eDU1LDB4RTYsMHhCRCwweEI3LDB4MzcsMHhBRCwKLSAgICAweDk2LDB4RjYsMHhCNywweEVFLDB4
RTgsMHhGRSwweEVFLDB4QkEsMHhCNywweEY2LDB4NzYsMHhFRSwweEU4LDB4RkMsMHhGRSwweDVG
LAotICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHhFNSwweEFELDB4Q0QsMHhGRCwweEI2LDB4RjYs
MHg1NSwweEU2LDB4NkEsMHg3QSwweDcyLDB4N0EsCi0gICAgMHhGNCwweERELDB4NzIsMHhDRCww
eDVDLDB4NUMsMHg1QywweDc4LDB4RDMsMHhERCwweDcyLDB4Q0QsMHgyNSwweDNELDB4QUYsMHhF
OSwKLSAgICAweDM1LDB4RTYsMHhEMywweERELDB4MkIsMHgyQiwweDJELDB4QUQsMHg1NSwweEVF
LDB4MTQsMHhFNiwweEVBLDB4RUEsMHhFQiwweEFGLAotICAgIDB4MzUsMHhFNiwweEIzLDB4RDUs
MHg1QSwweERBLDB4N0EsMHg3OCwweEY0LDB4REQsMHhCMywweEQ1LDB4QkQsMHgyRCwweDM5LDB4
MkYsCi0gICAgMHgxNCwweEU2LDB4RDMsMHhERCwweEYzLDB4QTgsMHhFMiwweDYwLDB4RjQsMHhE
RCwweDkyLDB4RDUsMHhFMiwweEFBLDB4ODAsMHg4MCwKLSAgICAweEQzLDB4REQsMHgzMSwweENE
LDB4NUUsMHhGRSwweEE4LDB4MDAsMHg5MiwweEQ1LDB4RjAsMHhCQywweEJGLDB4RjcsMHg3OCww
eDYwLAotICAgIDB4MTAsMHhDNSwweDRFLDB4QUMsMHg1QywweDVFLDB4NTYsMHg1NywweDMyLDB4
Q0QsMHg4RiwweEI0LDB4MkQsMHgyRCwweDBELDB4MDksCi0gICAgMHg1MiwweENELDB4MTEsMHhD
NSwweDVBLDB4REEsMHhERSwweDdDLDB4MzEsMHhDNSwweEQwLDB4QzQsMHhBQSwweDI4LDB4MkIs
MHgwQSwKLSAgICAweDUxLDB4Q0QsMHgxMCwweEM1LDB4RUEsMHhBQSwweERBLDB4RUYsMHg3Miww
eEQ1LDB4NTEsMHhDRCwweEFELDB4MzUsMHg1NSwweDU1LAotICAgIDB4QjMsMHhENSwweDcyLDB4
Q0QsMHgxNSwweDJCLDB4M0QsMHhCRCwweDM0LDB4RTYsMHhEMywweERELDB4RUIsMHhBOSwweEM5
LDB4RUQsCi0gICAgMHhEMywweERELDB4MTAsMHhDNSwweEEwLDB4RTAsMHhFMCwweDc4LDB4NTEs
MHhDRCwweDEwLDB4QzUsMHhCQywweEJGLDB4RjUsMHhGRiwKLSAgICAweEU4LDB4ODIsMHhDOCww
eDdBLDB4REEsMHg5RSwweDgwLDB4QzIsMHhFOCwweDgyLDB4QTcsMHg3QSwweERBLDB4MkYsMHgw
NiwweDNGLAotICAgIDB4MDgsMHg4MywweEM4LDB4N0EsMHhCRSwweEVGLDB4RUQsMHhBNywweEU4
LDB4ODIsMHhDOCwweDdBLDB4MjgsMHgzRiwweDY1LDB4N0EsCi0gICAgMHgwOCwweDgzLDB4QTcs
MHg3QSwweDY4LDB4RTIsMHg4RiwweEY1LDB4MDgsMHg4MywweEM3LDB4ODIsMHhFRiwweDdBLDB4
RUYsMHg3NywKLSAgICAweDA5LDB4OEIsMHhBNywweDdBLDB4QkIsMHhCNywweDNELDB4RkYsMHgw
OCwweDhCLDB4QzgsMHg4MiwweEFDLDB4N0MsMHhDRiwweEVGLAotICAgIDB4MjksMHg4QiwweEM3
LDB4ODIsMHhBNywweEVCLDB4RTksMHg3NSwweDI5LDB4OEIsMHhBNywweDdBLDB4ODksMHg2QSww
eEY5LDB4NUEsCi0gICAgMHgyQywweEE0LDB4QzgsMHg4MiwweDJGLDB4RkQsMHg1NSwweDU1LDB4
OTAsMHhENSwweDA3LDB4ODMsMHgwQSwweEJELDB4NTUsMHg1NSwKLSAgICAweDU0LDB4RUUsMHg0
OSwweDhCLDB4MDAsMHgyQSwweEI1LDB4NTUsMHg5NiwweEY2LDB4OEEsMHg5QiwweDAwLDB4MDAs
MHgyQiwweEY1LAotICAgIDB4QjYsMHhGNiwweDcyLDB4RDUsMHgwMCwweDAwLDB4MEEsMHhCRCww
eEQ2LDB4RjYsMHg3NiwweEY2LDB4QTAsMHg4QSwweDJBLDB4QjUsCi0gICAgMHhENiwweEY2LDB4
QjYsMHhGNiwweDI5LDB4QkQsMHhGRiwweDU1LDB4RjcsMHhGNiwweEI2LDB4RjYsMHhFQiwweEZG
LDB4RkYsMHhENSwKLSAgICAweEI3LDB4RkUsMHhENiwweEY2LDB4RDUsMHhENSwweDc3LDB4REQs
MHhGNywweEZFLDB4QjYsMHhGNiwweEJGLDB4QUIsMHhBRiwweEZCLAotICAgIDB4RjcsMHhGRSww
eEQ3LDB4RjYsMHg1NSwweDU3LDB4N0YsMHg1NSwweEY3LDB4RkUsMHhCNiwweEY2LDB4OUUsMHhC
RiwweEFFLDB4QkEsCi0gICAgMHhENiwweEZFLDB4RjcsMHhGNiwweEVBLDB4RkUsMHhGQiwweEVB
LDB4RjcsMHhGRSwweEQ3LDB4RjYsMHg3NywweDVGLDB4N0QsMHg3QiwKLSAgICAweEI2LDB4RkUs
MHhENiwweEY2LDB4OTUsMHhCNSwweDU3LDB4NTUsMHhCNSwweEY2LDB4MjksMHg4MywweDc4LDB4
NzgsMHg3OCwweEU4LAotICAgIDB4NDYsMHg2QSwweDQ0LDB4NDksMHg1RiwweEZFLDB4REMsMHhE
QywweEE1LDB4NTEsMHgwMiwweDQxLDB4REYsMHhGQywweEEyLDB4QzgsCi0gICAgMHg4NCwweDUx
LDB4MjMsMHg0MSwweDU1LDB4NTUsMHhERiwweDgwLDB4ODQsMHg1MSwweDAzLDB4MzksMHhGNyww
eEZELDB4QUYsMHgwMiwKLSAgICAweDg1LDB4NDksMHgwMywweDQxLDB4RkEsMHg3QiwweDZBLDB4
RjgsMHg0NCwweDQxLDB4RTIsMHgzOCwweDhBLDB4QUIsMHhGQiwweERGLAotICAgIDB4MjMsMHg0
MSwweEMyLDB4MzgsMHhFQywweEFFLDB4MjksMHgyOSwweDQ0LDB4NDksMHhFMiwweDM4LDB4RkQs
MHhCRiwweEJFLDB4M0IsCi0gICAgMHhFNSwweDY5LDB4MjMsMHg0OSwweDJGLDB4QkQsMHhCRiww
eDJCLDB4NjcsMHg3QSwweEU1LDB4NjksMHhBQiwweDhCLDB4MkQsMHhBQiwKLSAgICAweDQ3LDB4
NzIsMHhFNCwweDY5LDB4NkUsMHg3RSwweDdFLDB4RTAsMHhFNSwweDY5LDB4NDQsMHg1MSwweEY4
LDB4RjgsMHg3OCwweDc4LAotICAgIDB4NjQsMHg1MSwweDA0LDB4NDEsMHhGOCwweERFLDB4RUEs
MHhFMiwweDQ0LDB4NDksMHhFMywweDM4LDB4N0EsMHhEQywweEYyLDB4NjgsCi0gICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweEFCLDB4QTgsMHhGOCwweDU3LDB4MDMsMHgzOSwweEExLDB4MzAsMHg2
OCwweEVBLDB4RUYsMHg4MywKLSAgICAweEUyLDB4MzAsMHg4MSwweDI4LDB4RUYsMHhCRSwweEZB
LDB4NzgsMHhDMiwweDMwLDB4ODEsMHgyOCwweEI3LDB4RkEsMHg3QSwweDc1LAotICAgIDB4QzIs
MHgzMCwweDgxLDB4MjgsMHgyQiwweDNFLDB4QjUsMHhFNSwweDQ0LDB4NDksMHhBMiwweDMwLDB4
QkYsMHhBRiwweEJGLDB4MkQsCi0gICAgMHg4NCwweDU5LDB4MDMsMHg0MSwweEFGLDB4MjcsMHgz
NSwweEI3LDB4QTksMHg4MiwweDg1LDB4NTksMHgzRCwweDNGLDB4MkYsMHgyOSwKLSAgICAweEU5
LDB4ODIsMHg2NywweDdBLDB4NzUsMHg3RiwweEFBLDB4MDIsMHgwOSwweDhCLDB4NjcsMHg3Miww
eDBGLDB4QUYsMHg5RiwweDU3LAotICAgIDB4MEEsMHg5MywweDg3LDB4N0EsMHhDMCwweEVBLDB4
RTMsMHhENSwweEM4LDB4ODIsMHg2NywweDcyLDB4MkIsMHgxRiwweDJFLDB4QjMsCi0gICAgMHhF
OSwweDgyLDB4ODgsMHg4MiwweDlFLDB4RkUsMHg4RSwweDhCLDB4RTksMHg4MiwweDg3LDB4N0Es
MHgzQSwweEVBLDB4NjgsMHg3MCwKLSAgICAweEU5LDB4OEEsMHhDNSwweDYxLDB4QTgsMHhBQSww
eEZFLDB4NUYsMHg0NywweDcyLDB4QTUsMHg1OSwweDY4LDB4NTgsMHg1RiwweDU3LAotICAgIDB4
NjcsMHg3MiwweEE1LDB4NjEsMHgzRCwweDI1LDB4MkQsMHgwRCwweDA4LDB4OEIsMHg4NiwweDdB
LDB4QkQsMHhBRCwweDJBLDB4QTksCi0gICAgMHhFOCwweDgyLDB4NjcsMHg3QSwweEZFLDB4RUEs
MHg2QSwweEU4LDB4QzgsMHg4MiwweDI3LDB4NzIsMHgyRiwweEI3LDB4QUYsMHgyRSwKLSAgICAw
eDJFLDB4QTQsMHhDOSwweDgyLDB4M0YsMHg5NSwweEQ1LDB4NTUsMHg3NiwweEVFLDB4MEEsMHg4
QiwweDAyLDB4MkYsMHhBRCwweEY1LAotICAgIDB4MzgsMHhGRiwweDE0LDB4RTYsMHgyQSwweDhB
LDB4MEIsMHgyRCwweDM5LDB4RkYsMHgxOCwweEZGLDB4ODksMHgyQiwweDJBLDB4QTIsCi0gICAg
MHgzOSwweEZGLDB4MzgsMHhGRiwweEEyLDB4QUEsMHhBOCwweEFBLDB4MzksMHhGRiwweDE4LDB4
RkYsMHhBQSwweEFDLDB4QkEsMHhGQywKLSAgICAweDM4LDB4RkYsMHgxOCwweEZGLDB4N0EsMHg3
QSwweEVFLDB4RkEsMHgxOCwweEZGLDB4NzUsMHhFRSwweDY4LDB4NzgsMHg3QywweDVDLAotICAg
IDB4NzYsMHhFRSwweDU1LDB4RTYsMHg3NiwweDVGLDB4MkUsMHhBRSwweDc2LDB4RUUsMHgxNCww
eERFLDB4RjIsMHhGQSwweEZBLDB4REUsCi0gICAgMHhENywweEY2LDB4NTUsMHhFNiwweDJELDB4
MkQsMHgyQiwweDA5LDB4RjgsMHhGRSwweDE4LDB4RjcsMHhFQywweEI4LDB4QUMsMHhFQSwKLSAg
ICAweDE4LDB4RkYsMHhGOCwweEY2LDB4MkYsMHgzRCwweDA1LDB4MjksMHgzOSwweEZGLDB4MTgs
MHhGRiwweDlGLDB4RkYsMHg1RCwweERELAotICAgIDB4MTgsMHhGRiwweDM5LDB4RjcsMHgyQSww
eDgyLDB4MjIsMHgwMiwweDE4LDB4RkYsMHhGOCwweEY2LDB4RUEsMHhBRSwweEFBLDB4QTIsCi0g
ICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEQ1LDB4N0YsMHg3QSwweEVGLDB4RjgsMHhGRSwweDE4
LDB4RjcsMHhBOCwweEE4LDB4QUEsMHg4MiwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4Rjcs
MHg3RCwweDVGLDB4N0YsMHgxOSwweEZGLDB4RjcsMHhGNiwweDdGLDB4NUYsMHg3NSwweDc1LAot
ICAgIDB4RjgsMHhGRSwweDE4LDB4RjcsMHhBQSwweEVBLDB4OEEsMHgyQSwweDE4LDB4RkYsMHhE
NywweEY2LDB4RUEsMHg3QSwweEZCLDB4N0UsCi0gICAgMHgzOCwweEZGLDB4RDcsMHhGNiwweDc3
LDB4RkQsMHhERCwweEZELDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgzQSwweEJBLDB4RUEsMHhFMiwK
LSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4N0UsMHhENiwweEQ1LDB4REQsMHgxOCwweEZGLDB4
RDcsMHhGNiwweEJELDB4QUYsMHhBRiwweEZGLAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhB
QSwweEFFLDB4QUYsMHhGRiwweEY4LDB4RkUsMHgxNywweEVGLDB4QUEsMHg4MiwweDIyLDB4MkEs
Ci0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEJELDB4M0QsMHhBRiwweDJELDB4MTgsMHhGRiww
eEY3LDB4RjYsMHhFOCwweDZBLDB4NTIsMHg2QSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4
MjgsMHgwQywweDBGLDB4MEUsMHhGOCwweEZFLDB4MTgsMHhGNywweEZGLDB4N0UsMHhFRSwweEJB
LAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRSwweEY2LDB4RDcsMHhERiwweDE4LDB4RkYs
MHhENywweEY2LDB4QTIsMHg3QSwweEFBLDB4RUEsCi0gICAgMHhGOCwweEY2LDB4OTcsMHhFRSww
eEE4LDB4ODAsMHhBOCwweEVBLDB4RDcsMHhGNiwweDk2LDB4RUUsMHhBQSwweEU4LDB4RkUsMHg1
QSwKLSAgICAweEI3LDB4RjYsMHg3NiwweEVFLDB4RkEsMHhGRSwweDVGLDB4RDcsMHg5NiwweEVF
LDB4NTUsMHhFNiwweEZBLDB4QkMsMHhGQSwweDgyLAotICAgIDB4NzYsMHhFRSwweDU1LDB4RTYs
MHgwMCwweDIwLDB4QkUsMHhENywweDk2LDB4RUUsMHg1NSwweEVFLDB4ODAsMHg4MCwweEI1LDB4
RkQsCi0gICAgMHg5NiwweEVFLDB4NTUsMHhFNiwweDdCLDB4QzAsMHhBMiwweEZBLDB4OTYsMHhF
RSwweDU1LDB4RTYsMHg1NSwweDdGLDB4Q0EsMHhBQiwKLSAgICAweDU1LDB4RUUsMHgzNSwweEU2
LDB4QjksMHg3QSwweEI4LDB4MjAsMHg5NiwweEVFLDB4NTUsMHhFNiwweEJELDB4OTUsMHgyNSww
eDJGLAotICAgIDB4QjcsMHhGNiwweDc2LDB4RUUsMHhGQiwweEZCLDB4N0EsMHg3OCwweDk2LDB4
RUUsMHg3NiwweEVFLDB4REEsMHg3QiwweDdGLDB4RDUsCi0gICAgMHg5NiwweEVFLDB4NzUsMHhF
RSwweEEyLDB4M0QsMHgyQiwweDAzLDB4QjcsMHhGNiwweDM1LDB4RTYsMHhGQSwweEVBLDB4NzIs
MHg2MiwKLSAgICAweDE0LDB4REUsMHg1MSwweENELDB4N0MsMHg1QywweDVFLDB4NUUsMHhCMyww
eEQ1LDB4NTEsMHhDRCwweDJGLDB4QUQsMHhCNSwweEJCLAotICAgIDB4MzUsMHhFRSwweEIzLDB4
RDUsMHgyRCwweDNELDB4M0QsMHhCRCwweDM0LDB4RTYsMHgxNCwweEU2LDB4RTAsMHhDMCwweEMy
LDB4RTcsCi0gICAgMHgxNCwweEU2LDB4QjIsMHhENSwweDc4LDB4RTgsMHg3OCwweDcwLDB4MzQs
MHhFNiwweEIzLDB4RDUsMHhCRCwweEE3LDB4QkQsMHgyRCwKLSAgICAweDM1LDB4RTYsMHhEMyww
eERELDB4NzIsMHhGRSwweDVDLDB4NUMsMHhGNCwweERELDB4RDMsMHhERCwweEZCLDB4M0QsMHhB
RCwweEYyLAotICAgIDB4RjQsMHhFNSwweEQzLDB4REQsMHg2MCwweEZBLDB4NzcsMHg1NSwweEIz
LDB4REQsMHgxMSwweEM1LDB4NzgsMHhFMCwweDYwLDB4NzAsCi0gICAgMHhEMCwweEJDLDB4MkQs
MHhBNCwweERFLDB4REMsMHg1QywweDVDLDB4NTEsMHhDRCwweDZFLDB4QUMsMHgyOSwweDJELDB4
MDUsMHhCRCwKLSAgICAweDMxLDB4Q0QsMHhEMCwweEJDLDB4QjgsMHhGOCwweEU4LDB4NUEsMHgz
MSwweEM1LDB4QUYsMHhCNCwweDBBLDB4QUYsMHg5RiwweERGLAotICAgIDB4NTEsMHhDRCwweDEw
LDB4QzUsMHhGRSwweEJCLDB4NzcsMHhGOSwweDcyLDB4RDUsMHgzMSwweEM1LDB4MzcsMHgzOSww
eEFFLDB4QkYsCi0gICAgMHg5MiwweEQ1LDB4NTEsMHhDRCwweEFCLDB4RkEsMHg2QSwweDdFLDB4
RDMsMHhERCwweEYwLDB4QzQsMHgwMiwweEVBLDB4RkYsMHg1RiwKLSAgICAweDcyLDB4RDUsMHhG
MCwweEJDLDB4RkMsMHhENiwweDU1LDB4RDUsMHg3MiwweENELDB4MTAsMHhDNSwweEJGLDB4QkYs
MHhBOSwweDJBLAotICAgIDB4QzgsMHg3QSwweDg3LDB4N0EsMHgwMCwweDg4LDB4NDAsMHgwMyww
eEU4LDB4ODIsMHhBNywweDdBLDB4QkYsMHhCMiwweEE5LDB4OEIsCi0gICAgMHhFOCwweDgyLDB4
QTgsMHg3QSwweDc4LDB4QUMsMHhFQiwweEJGLDB4RTgsMHg4MiwweEE3LDB4N0EsMHgyNCwweDA4
LDB4RUYsMHhBRCwKLSAgICAweEU4LDB4ODIsMHhDNywweDdBLDB4M0IsMHg2QiwweDlFLDB4MkIs
MHgwOSwweDhCLDB4QzcsMHg4MiwweEE3LDB4OUUsMHhEQiwweDVGLAotICAgIDB4MDgsMHg4Qiww
eEE3LDB4N0EsMHhGRSwweEVGLDB4RTQsMHhCNywweEU4LDB4ODIsMHhBNywweDgyLDB4QjgsMHg4
MCwweDhBLDB4RkMsCi0gICAgMHhFOCwweDgyLDB4QTcsMHg4MiwweEVCLDB4MjgsMHgwQSwweDMy
LDB4MDgsMHg4QiwweEM3LDB4ODIsMHhERiwweEZGLDB4QTksMHhCRiwKLSAgICAweDA4LDB4OEIs
MHhBNywweDdBLDB4QkYsMHhCRSwweDM2LDB4RkMsMHgwOCwweDhCLDB4QzcsMHg4MiwweDI5LDB4
RTgsMHhFQSwweEEzLAotICAgIDB4MDgsMHg4QiwweEM3LDB4ODIsMHhBMCwweDdBLDB4QUIsMHhF
QiwweDQ5LDB4OTMsMHhBNywweDdBLDB4MEUsMHhBRiwweEZFLDB4RkIsCi0gICAgMHhGMCwweEM0
LDB4MDksMHg4QiwweDJCLDB4RDUsMHg1NSwweDU1LDB4MzQsMHhFNiwweDI5LDB4OEIsMHgwMiww
eEFGLDB4RDUsMHg1NSwKLSAgICAweDk2LDB4RjYsMHg4QSwweDkzLDB4MDAsMHgwQSwweEFGLDB4
NTUsMHg5NiwweEY2LDB4OEUsMHhCNCwweDAwLDB4MDAsMHgwQSwweEI1LAotICAgIDB4QjYsMHhG
NiwweDE0LDB4RTYsMHgwMCwweDAwLDB4MDgsMHhBRCwweEQ2LDB4RjYsMHg5NSwweEY2LDB4MjMs
MHgyMiwweDIzLDB4QTUsCi0gICAgMHhENywweEY2LDB4QjYsMHhGNiwweEZBLDB4RkUsMHhEOCww
eDlFLDB4QjYsMHhGRSwweEQ2LDB4RjYsMHg1NywweEZGLDB4REYsMHhGRCwKLSAgICAweEY3LDB4
RkUsMHhCNiwweEY2LDB4QUEsMHhBRiwweEZBLDB4N0YsMHhENywweEY2LDB4QjYsMHhGNiwweEMw
LDB4ODAsMHgwQiwweEVCLAotICAgIDB4RjYsMHhGRSwweEI3LDB4RjYsMHhCQiwweEFCLDB4QUIs
MHhFRiwweEQ2LDB4RjYsMHhBRSwweEI0LDB4NzgsMHg2OCwweEUwLDB4QTAsCi0gICAgMHg4RSww
eEI0LDB4QTQsMHg1OSwweDU3LDB4NTYsMHg1RSwweDU4LDB4QTUsMHg1MSwweDY0LDB4NDksMHg4
MiwweDlGLDB4OUQsMHhENywKLSAgICAweEU1LDB4NTksMHg4NCwweDUxLDB4RUQsMHhGOSwweEQ3
LDB4NTcsMHhFNiwweDU5LDB4ODQsMHg1MSwweDZGLDB4N0UsMHg2OCwweDYzLAotICAgIDB4QTUs
MHg1MSwweDQ0LDB4NDEsMHg3QSwweEYyLDB4NTgsMHg3RSwweDQ0LDB4NDEsMHgwMywweDQxLDB4
REEsMHhCOCwweDNDLDB4QkMsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweDdELDB4NkUsMHhF
OCwweDhGLDB4QzUsMHg2MSwweDAzLDB4NDEsMHhERCwweDk1LDB4QkYsMHgyQSwKLSAgICAweDY3
LDB4N0EsMHhDNSwweDYxLDB4RjUsMHgzNSwweDI5LDB4MEEsMHhDOCwweDhBLDB4MjYsMHg3Miww
eEY1LDB4OEIsMHhBQSwweDI4LAotICAgIDB4QzksMHg4QSwweDA2LDB4NkEsMHg1QiwweDZBLDB4
NzgsMHhCOCwweDI3LDB4NzIsMHg4NCwweDUxLDB4NUUsMHg3QSwweDc4LDB4RjAsCi0gICAgMHg2
NCwweDUxLDB4MjQsMHg0OSwweEZBLDB4RjcsMHhENCwweEFDLDB4NjQsMHg1MSwweEUyLDB4Mzgs
MHhGQSwweDdDLDB4N0EsMHhFQywKLSAgICAweEUzLDB4MzgsMHhBMiwweDMwLDB4QkUsMHhEQyww
eDVGLDB4RkEsMHgwMywweDM5LDB4QzIsMHgzMCwweDhCLDB4QUIsMHg4OSwweEE5LAotICAgIDB4
MDMsMHgzOSwweDgyLDB4MjgsMHg2QSwweEZBLDB4RTIsMHhDQSwweEEyLDB4MzAsMHg4MiwweDI4
LDB4RDUsMHg1NSwweDU3LDB4NUMsCi0gICAgMHhFMiwweDMwLDB4ODIsMHgyOCwweEZGLDB4RjUs
MHhCNSwweDNELDB4NDMsMHg0MSwweEExLDB4MzAsMHgyOSwweEFELDB4QUYsMHhBRiwKLSAgICAw
eEE1LDB4NTksMHgyMywweDQxLDB4QjUsMHhBRCwweDNELDB4MEQsMHhBOSwweDgyLDB4QTUsMHg1
OSwweDJELDB4MkQsMHhBQiwweEFCLAotICAgIDB4QzksMHg4MiwweDA2LDB4NkEsMHgwMCwweEE4
LDB4RkUsMHg3QiwweEE4LDB4N0EsMHhFNCwweDYxLDB4RjgsMHhGQSwweDdGLDB4NTUsCi0gICAg
MHg2NywweDdBLDB4QzQsMHg2MSwweDBBLDB4QkYsMHhGNSwweEZGLDB4ODgsMHg3QSwweEU1LDB4
NjksMHgwMCwweDAyLDB4MEIsMHhCRCwKLSAgICAweEM5LDB4ODIsMHg0NiwweDcyLDB4ODIsMHgy
QSwweEFGLDB4OTcsMHhFOSwweDgyLDB4ODQsMHg1MSwweDgwLDB4QUEsMHhGQSwweDdFLAotICAg
IDB4MDYsMHg2QSwweDAyLDB4NDksMHhBOCwweEU4LDB4RkYsMHg1NywweEU2LDB4NjEsMHg0Myww
eDUxLDB4QUEsMHhGRCwweEJELDB4MzUsCi0gICAgMHg0NywweDcyLDB4QTQsMHg1OSwweDBELDB4
MkQsMHgyRiwweDBBLDB4QTgsMHg4MiwweDQ2LDB4NzIsMHgwMywweEI1LDB4RUQsMHhBRCwKLSAg
ICAweEM5LDB4OEEsMHhBOCwweDdBLDB4RUIsMHhFRiwweEE5LDB4ODcsMHhDOSwweDgyLDB4Njcs
MHg3QSwweEI3LDB4RkMsMHhGRSwweDVFLAotICAgIDB4QTgsMHg4MiwweDQ2LDB4NzIsMHgwMiww
eEFBLDB4MkIsMHg4OSwweDhCLDB4OUIsMHg2OCwweDdBLDB4MkYsMHgyRCwweEFELDB4QkQsCi0g
ICAgMHhENiwweEY2LDB4OEEsMHg5MywweDBCLDB4MEYsMHgyRCwweDk1LDB4MzksMHhGRiwweEI2
LDB4RjYsMHgwMCwweDIwLDB4ODIsMHg4OSwKLSAgICAweDM5LDB4RkYsMHgxOCwweEZGLDB4MjAs
MHgwQSwweDhCLDB4OEIsMHgzOCwweEZGLDB4MTgsMHhGRiwweERFLDB4OUUsMHhCRSwweEJFLAot
ICAgIDB4MzgsMHhGRiwweEY3LDB4RjYsMHhBMCwweEVBLDB4NkEsMHg3QSwweEI2LDB4RjYsMHg1
NSwweEU2LDB4RjAsMHhGOCwweDc4LDB4RkEsCi0gICAgMHg1NSwweEVFLDB4NzUsMHhFNiwweDBB
LDB4MDIsMHhBMCwweEEwLDB4NTUsMHhFRSwweDM1LDB4RTYsMHhENywweERFLDB4QUMsMHhCOCwK
LSAgICAweEY4LDB4RkUsMHg3NiwweEVFLDB4MkQsMHgyRCwweDI5LDB4MEYsMHgxOCwweEZGLDB4
RDcsMHhGNiwweEZBLDB4RkEsMHhGQSwweEU4LAotICAgIDB4MzgsMHhGRiwweEY4LDB4RjYsMHhC
NywweEI1LDB4QjUsMHhBRCwweDE4LDB4RkYsMHgzOCwweEY3LDB4MjAsMHgwQSwweDJBLDB4MkEs
Ci0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDI4LDB4QTgsMHhGOCwweEJBLDB4MTgsMHhGRiww
eEY4LDB4RjYsMHhFQSwweEJBLDB4QUUsMHhBQiwKLSAgICAweEY4LDB4RkUsMHgxOCwweEY3LDB4
QUEsMHhCQSwweEVCLDB4QkIsMHhGOCwweEZFLDB4MTgsMHhGNywweDgyLDB4QUEsMHhBOCwweEFD
LAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHg3RiwweDVGLDB4REEsMHg1RiwweEQ4LDB4RkUs
MHhGNywweEY2LDB4RjcsMHhGNywweDdELDB4REYsCi0gICAgMHhENywweEZFLDB4RjgsMHhGNiww
eEY3LDB4RkYsMHhERCwweDc1LDB4RDgsMHhGRSwweEY3LDB4RjYsMHhGRCwweEZELDB4NzcsMHg1
NSwKLSAgICAweDE4LDB4RkYsMHhENywweEY2LDB4QUYsMHhCQiwweEZGLDB4REYsMHhEOCwweEZF
LDB4RjcsMHhGNiwweEJELDB4RjUsMHg3NywweDVGLAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYs
MHhERCwweDVELDB4N0YsMHhGQSwweEY3LDB4RjYsMHhENywweEY2LDB4MkIsMHgyNSwweEI3LDB4
MzcsCi0gICAgMHhGOCwweEZFLDB4RjcsMHhGNiwweEZGLDB4RkYsMHhGQiwweEJGLDB4MTgsMHhG
RiwweEY4LDB4RjYsMHg2RCwweERGLDB4RjUsMHhGRiwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2
LDB4QUQsMHgwQiwweDhGLDB4QUYsMHgxOCwweEZGLDB4RjgsMHhGNiwweDYwLDB4N0EsMHhFRSww
eEVCLAotICAgIDB4RDgsMHhGRSwweEY3LDB4RjYsMHg1RCwweDc1LDB4RjUsMHhGRiwweDE4LDB4
RkYsMHhENywweEY2LDB4QTIsMHhBQSwweEY3LDB4QjcsCi0gICAgMHhGNywweEY2LDB4RDgsMHhG
NiwweEEwLDB4QTAsMHhFMiwweEVBLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHg4MiwweDdCLDB4NUYs
MHg1NywKLSAgICAweEY4LDB4RjYsMHhCNywweEY2LDB4N0EsMHhGQSwweDc3LDB4NUYsMHhCNyww
eEY2LDB4NzYsMHhFRSwweEY4LDB4QjgsMHhFQywweEZFLAotICAgIDB4OTYsMHhFRSwweDc2LDB4
RUUsMHhEOSwweEQ3LDB4NUYsMHhENSwweDk2LDB4RUUsMHg3NiwweEVFLDB4NjgsMHg3QSwweDU3
LDB4NTUsCi0gICAgMHg3NSwweEVFLDB4MzUsMHhFNiwweEUyLDB4QkMsMHhBRSwweEFFLDB4NzUs
MHhFRSwweDM1LDB4RTYsMHhBQSwweEJCLDB4QjYsMHhGRiwKLSAgICAweDc1LDB4RUUsMHg1NSww
eEU2LDB4OEEsMHhBQSwweEZGLDB4NTYsMHg3NiwweEVFLDB4MzUsMHhFNiwweDJBLDB4RUUsMHg5
RiwweEQ3LAotICAgIDB4NzYsMHhFRSwweDU1LDB4RTYsMHg5NSwweEJELDB4MEQsMHhBMywweEI3
LDB4RjYsMHg3NiwweEVFLDB4QTUsMHgyQiwweEE5LDB4QUIsCi0gICAgMHhCNywweEY2LDB4NzYs
MHhFRSwweEZBLDB4RjgsMHhFQSwweDVFLDB4QjYsMHhGNiwweDU1LDB4RUUsMHhGRCwweEFGLDB4
MkIsMHgyQSwKLSAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4RkQsMHhGRSwweDhBLDB4QTYsMHhC
NiwweEY2LDB4MTQsMHhERSwweEUyLDB4RTAsMHhFQSwweDdBLAotICAgIDB4RjQsMHhERCwweDMx
LDB4Q0QsMHhGOCwweEY4LDB4NzgsMHg1RSwweEIzLDB4REQsMHgzMSwweENELDB4MkIsMHgyQiww
eEFGLDB4RjUsCi0gICAgMHgxNSwweEU2LDB4OTIsMHhENSwweDJGLDB4QUIsMHhBRCwweEJELDB4
MzUsMHhFNiwweEQzLDB4REQsMHg4MiwweDhBLDB4RUUsMHg3RSwKLSAgICAweDE0LDB4RTYsMHhC
MywweEQ1LDB4NzAsMHhEOCwweEVBLDB4RUEsMHgxNCwweEU2LDB4QjMsMHhENSwweDJGLDB4MkQs
MHgyRiwweDBGLAotICAgIDB4MTQsMHhFNiwweEQzLDB4REQsMHhGOCwweDdDLDB4REEsMHhEQSww
eEY0LDB4REQsMHg5MiwweEQ1LDB4ODAsMHg4MCwweEMyLDB4NjgsCi0gICAgMHhEMywweERELDB4
MzEsMHhDNSwweDAwLDB4ODAsMHhBQSwweDU1LDB4OTIsMHhENSwweEQwLDB4QkMsMHg2MCwweEYw
LDB4RkUsMHhGRiwKLSAgICAweEVGLDB4QkMsMHgwRCwweEE0LDB4NUEsMHg3RSwweEZDLDB4Rjgs
MHhGMCwweEM0LDB4NEQsMHhBQywweDJELDB4MkQsMHgyNSwweDM1LAotICAgIDB4MzEsMHhDRCww
eEIwLDB4QjQsMHhGQSwweEYwLDB4RjgsMHg3QSwweENGLDB4QkMsMHg4RiwweEI0LDB4MzYsMHgw
RSwweDJGLDB4MTcsCi0gICAgMHgzMSwweEM1LDB4RjAsMHhDNCwweDIzLDB4ODksMHgwOSwweDA1
LDB4NzIsMHhDRCwweDMxLDB4Q0QsMHhBRCwweDI5LDB4M0QsMHgzQiwKLSAgICAweDcxLDB4Q0Qs
MHgzMSwweENELDB4QUEsMHhFOCwweEZBLDB4NTYsMHg1MSwweENELDB4RjAsMHhCQywweDU4LDB4
NTYsMHhERCwweEY3LAotICAgIDB4NTIsMHhDRCwweEQwLDB4QkMsMHgzNSwweDJGLDB4QkEsMHhB
QSwweDkyLDB4RDUsMHgzMSwweEM1LDB4QkYsMHhBRiwweDhCLDB4QUQsCi0gICAgMHhFOCwweDgy
LDB4ODYsMHg3QSwweDg5LDB4OEEsMHhFOCwweEEyLDB4MDgsMHg4MywweDg3LDB4N0EsMHhDMyww
eDZFLDB4NkIsMHhFQSwKLSAgICAweEU4LDB4ODIsMHg4NywweDdBLDB4NkUsMHhDRiwweEVGLDB4
RkUsMHhFOCwweDgyLDB4ODYsMHg3QSwweDJELDB4QkQsMHhBQiwweEJBLAotICAgIDB4RTgsMHg4
MiwweDg3LDB4N0EsMHgwMiwweDkwLDB4MDAsMHg4QiwweEU3LDB4ODIsMHhBNywweDdBLDB4QkYs
MHhCQywweEZFLDB4RkEsCi0gICAgMHhDOCwweDgyLDB4QTgsMHg3QSwweDBFLDB4NDAsMHhEMiww
eDA1LDB4RTgsMHg4MiwweEE3LDB4N0EsMHhENSwweEFCLDB4MkEsMHgyOCwKLSAgICAweEU4LDB4
ODIsMHhBNiwweDgyLDB4MEYsMHhDMCwweEUwLDB4RjAsMHgwOCwweDhCLDB4QTcsMHg3QSwweDI4
LDB4NUUsMHhGQSwweEJBLAotICAgIDB4MDksMHg4QiwweEM3LDB4ODIsMHg1RSwweENCLDB4Nzks
MHg1QSwweDA4LDB4OEIsMHhBNywweDdBLDB4QUIsMHgzRiwweEZFLDB4QkQsCi0gICAgMHgwOCww
eDgzLDB4QTcsMHg4MiwweDJBLDB4QkUsMHhGRSwweDlGLDB4RTgsMHg4MiwweEM4LDB4ODIsMHgy
MCwweDIyLDB4NkIsMHhERiwKLSAgICAweDA4LDB4OEIsMHhDOCwweDgyLDB4OEIsMHhCNSwweEE5
LDB4MkQsMHgwOCwweDhCLDB4QzgsMHg4MiwweDI4LDB4MkEsMHgzQSwweDVGLAotICAgIDB4NDks
MHg4QiwweEM4LDB4ODIsMHhBOCwweEZGLDB4REEsMHhERiwweDBDLDB4OUMsMHhDNywweDgyLDB4
MkIsMHhGRiwweEY1LDB4NUQsCi0gICAgMHhEMywweERELDB4MjksMHg4QiwweDBBLDB4RjUsMHg1
NSwweDU1LDB4NzUsMHhFRSwweDI5LDB4OEIsMHgwMCwweDBCLDB4RkQsMHg1NSwKLSAgICAweEI2
LDB4RjYsMHhDQiwweEEzLDB4MDAsMHgwMCwweEFCLDB4RjUsMHhENiwweEY2LDB4OTIsMHhENSww
eDAwLDB4MDgsMHg4QSwweEJELAotICAgIDB4RDYsMHhGNiwweDc1LDB4RjYsMHgwOCwweDhBLDB4
QUIsMHhCRCwweEQ3LDB4RkUsMHg5NiwweEY2LDB4QUEsMHhBRSwweDlFLDB4RkIsCi0gICAgMHhE
NywweEZFLDB4QjYsMHhGNiwweEVBLDB4RkYsMHhFQiwweEVCLDB4QjcsMHhGNiwweDM0LDB4RTYs
MHg2MCwweEMwLDB4QTAsMHg4MCwKLSAgICAweDU1LDB4RUUsMHg4NywweDcyLDB4NUUsMHg3OCww
eDc4LDB4RTAsMHg2NiwweDZBLDB4NDMsMHg0OSwweEY3LDB4RDUsMHg1NiwweDVDLAotICAgIDB4
QTUsMHg1OSwweDQzLDB4NDksMHhBMCwweDgwLDB4RUEsMHhENSwweEM1LDB4NTEsMHg2NCwweDQ5
LDB4OEEsMHhBQSwweEZFLDB4NzUsCi0gICAgMHg4NSwweDUxLDB4NjQsMHg0OSwweDdBLDB4Njgs
MHhENSwweEVGLDB4ODQsMHg1MSwweDIzLDB4NDEsMHg3NywweDdGLDB4RkUsMHg4RSwKLSAgICAw
eEM1LDB4NTksMHgyMywweDQxLDB4RkQsMHgyRiwweEFCLDB4MkEsMHhBOCwweDgyLDB4ODQsMHg1
MSwweEY1LDB4QkQsMHhBRiwweDJCLAotICAgIDB4MDksMHg5MywweDQ2LDB4NzIsMHhCRCwweDJE
LDB4MEIsMHgwQSwweDA5LDB4OTMsMHhBOCwweDhBLDB4RDcsMHg2RSwweEUyLDB4RTAsCi0gICAg
MHhDOSwweDhBLDB4MjYsMHg3MiwweEY4LDB4RkUsMHg1OCwweEQ4LDB4NDcsMHg3QSwweEE0LDB4
NjEsMHg1QywweDdBLDB4N0MsMHhCMCwKLSAgICAweEM1LDB4NjksMHg0NCwweDQ5LDB4REYsMHg3
RiwweEJBLDB4QTAsMHhBNSwweDU5LDB4NDQsMHg0OSwweDU1LDB4RkYsMHhCRiwweDJBLAotICAg
IDB4RTYsMHg2OSwweEUyLDB4NDAsMHg1RiwweEZFLDB4QUEsMHgyQSwweEM1LDB4NTksMHgwMyww
eDQxLDB4NTUsMHg1NSwweDVFLDB4RTgsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzMCwweEU4LDB4
N0EsMHhGRiwweDJFLDB4NDQsMHg0MSwweEEyLDB4MzAsMHg1NSwweEY3LDB4QUEsMHgwQSwKLSAg
ICAweDg1LDB4NTEsMHg4MSwweDMwLDB4RkQsMHhCRiwweDJGLDB4MEEsMHg2NCwweDQ5LDB4MDMs
MHg0MSwweEJELDB4MkUsMHhBQSwweDAyLAotICAgIDB4QzUsMHg2MSwweDQ0LDB4NDksMHgzNyww
eEFGLDB4MkEsMHhBQiwweDI3LDB4NkEsMHg4NCwweDUxLDB4ODIsMHhFQiwweEZGLDB4NTcsCi0g
ICAgMHgwNiwweDZBLDB4QTQsMHg1OSwweDgwLDB4RUYsMHhCNSwweEI1LDB4RTUsMHg2MSwweEE0
LDB4NjEsMHhERSwweDdCLDB4RUEsMHhBOCwKLSAgICAweEU1LDB4NjEsMHhBNCwweDYxLDB4MkUs
MHgzOSwweDI5LDB4MDksMHgyNiwweDZBLDB4QzUsMHg2MSwweDk3LDB4OUYsMHgyQiwweDJGLAot
ICAgIDB4ODcsMHg3QSwweDA2LDB4NjIsMHhBQiwweDdCLDB4ODMsMHg4QSwweDY3LDB4NzIsMHgy
MywweDQ5LDB4NzgsMHg3OCwweDVFLDB4NUUsCi0gICAgMHg2MywweDUxLDB4RTIsMHg0MCwweEY3
LDB4RjcsMHhCRCwweDI3LDB4MjYsMHg2QSwweDAyLDB4NDksMHgyRCwweDJGLDB4MkIsMHgwQiwK
LSAgICAweDY3LDB4NzIsMHgyNiwweDcyLDB4RkYsMHg1MiwweEZBLDB4REUsMHg4OCwweDdBLDB4
RTUsMHg2OSwweEEwLDB4OEIsMHhGNywweEZGLAotICAgIDB4QzksMHg4QSwweDA1LDB4NkEsMHgw
QSwweDJCLDB4M0QsMHgyNSwweDRBLDB4OUIsMHg0NiwweDcyLDB4NTcsMHg1RSwweEZBLDB4RTIs
Ci0gICAgMHg4OCwweDdBLDB4MDUsMHg2QSwweDBGLDB4QjUsMHhGRCwweEJBLDB4MkEsMHg4Qiww
eDY3LDB4N0EsMHgyRCwweDM5LDB4QkQsMHgzRCwKLSAgICAweDhFLDB4QkMsMHgyQSwweDhCLDB4
M0QsMHhCRCwweEQ1LDB4NTUsMHgxOCwweEZGLDB4NkUsMHhCNCwweDAyLDB4MEIsMHgwOSwweDJE
LAotICAgIDB4MzgsMHhGRiwweDE4LDB4RkYsMHhFRCwweEVELDB4N0QsMHhENSwweDM4LDB4RkYs
MHgxOCwweEZGLDB4NUYsMHhERiwweDU1LDB4NTUsCi0gICAgMHgxOCwweEZGLDB4OTYsMHhGNiww
eEUwLDB4RTAsMHg2OCwweDc4LDB4OTYsMHhGNiwweDU1LDB4RUUsMHg1QywweERFLDB4NzcsMHhE
NywKLSAgICAweDc1LDB4RUUsMHg1NSwweEVFLDB4RjUsMHhGRCwweDdCLDB4N0QsMHg3NSwweEVF
LDB4MzUsMHhFNiwweEI3LDB4OTcsMHg5NywweDJGLAotICAgIDB4RjgsMHhGRSwweDk2LDB4RUUs
MHgyRCwweDJELDB4MEQsMHgyRCwweEY4LDB4RkUsMHgxOCwweEY3LDB4QjgsMHhBQSwweDJFLDB4
QUUsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDI5LDB4MEUsMHgwRCwweEFGLDB4MTgsMHhG
RiwweDM4LDB4RjcsMHgyOCwweDI4LDB4ODAsMHgwMiwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2
LDB4QUEsMHhFRSwweEJBLDB4QkUsMHgxOCwweEZGLDB4RjgsMHhGNiwweEFBLDB4QUEsMHhFOCww
eERFLAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHg3QSwweDdFLDB4REYsMHhFRiwweEY3LDB4
RkUsMHhGOCwweEY2LDB4QkYsMHhGRiwweDdGLDB4RkYsCi0gICAgMHhENywweEZFLDB4RjgsMHhG
NiwweEY1LDB4RjcsMHhENywweDc3LDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhCRiwweEFCLDB4RUIs
MHhBQiwKLSAgICAweEQ3LDB4RkUsMHhGOCwweEY2LDB4NzUsMHhGRCwweEU1LDB4RTcsMHhENyww
eEZFLDB4RjcsMHhGNiwweDU3LDB4REQsMHhGNywweEZELAotICAgIDB4RjcsMHhGNiwweEI3LDB4
RjYsMHgyRSwweDI4LDB4MkEsMHhBOCwweDE4LDB4RkYsMHhENywweEY2LDB4QUUsMHhFQiwweEZC
LDB4RUYsCi0gICAgMHhENywweEZFLDB4RjcsMHhGNiwweDc1LDB4RkQsMHhGRiwweEZELDB4Rjcs
MHhGNiwweEQ3LDB4RjYsMHg3RSwweDNFLDB4OEEsMHgwQSwKLSAgICAweDE4LDB4RkYsMHhGNyww
eEY2LDB4NTUsMHg3NSwweDdGLDB4RkYsMHgxOCwweEZGLDB4RjgsMHhGNiwweEVGLDB4MkYsMHhC
NSwweEI3LAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHg2QiwweDc4LDB4RkEsMHhGRSwweDE3
LDB4RkYsMHhGOCwweEY2LDB4NkIsMHhGRiwweEZELDB4NzcsCi0gICAgMHhGOCwweEY2LDB4RDcs
MHhGNiwweEE4LDB4QkEsMHhBOCwweENFLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHg4QSwweEE4LDB4
QUEsMHhCRSwKLSAgICAweEY4LDB4RjYsMHhENywweEY2LDB4QzgsMHhBMiwweDZBLDB4N0EsMHgx
OCwweEY3LDB4QjcsMHhGNiwweDdGLDB4N0YsMHhERSwweDdGLAotICAgIDB4RDcsMHhGNiwweDk2
LDB4RUUsMHg3QSwweDVGLDB4NUYsMHg3RSwweDk2LDB4RUUsMHg3NiwweEVFLDB4REEsMHg1OCww
eDdGLDB4RjksCi0gICAgMHg5NiwweEVFLDB4NTUsMHhFRSwweEZFLDB4RUEsMHhBRSwweEVBLDB4
NzYsMHhFRSwweDU1LDB4RTYsMHgyMCwweDgwLDB4MjAsMHhFOCwKLSAgICAweDc1LDB4RUUsMHgz
NCwweEU2LDB4RjgsMHhGQSwweEFBLDB4RUEsMHg3NSwweEVFLDB4MzUsMHhFNiwweEJGLDB4RkUs
MHhGRSwweEVBLAotICAgIDB4NzUsMHhFRSwweDM0LDB4RTYsMHhGRSwweEE4LDB4MDIsMHgyQSww
eDc1LDB4RUUsMHgzNCwweEU2LDB4OUYsMHhCQSwweEEyLDB4ODAsCi0gICAgMHg3NiwweEVFLDB4
NTUsMHhFNiwweEFGLDB4MEMsMHhCNywweDI1LDB4OTYsMHhFRSwweDc2LDB4RUUsMHgyMiwweDI2
LDB4MkUsMHhCQiwKLSAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4RjgsMHhFQSwweEVBLDB4QUEs
MHg5NiwweEVFLDB4NTUsMHhFRSwweDBBLDB4MDIsMHgyOSwweDJGLAotICAgIDB4QjYsMHhGNiww
eDk2LDB4RUUsMHhGQiwweDdGLDB4N0QsMHg1NSwweDk2LDB4RUUsMHgxNCwweERFLDB4NjAsMHg3
MCwweEUwLDB4RTAsCi0gICAgMHhEMywweERELDB4MzAsMHhDNSwweDc2LDB4RkMsMHhFOCwweEYw
LDB4NzEsMHhDRCwweDMwLDB4Q0QsMHgwOSwweEUyLDB4QUEsMHhEQywKLSAgICAweEYzLDB4REQs
MHg1MSwweENELDB4MkYsMHhBOSwweDJELDB4QjksMHhGNCwweERELDB4QjMsMHhENSwweDgwLDB4
RTAsMHg4MCwweDAyLAotICAgIDB4RjQsMHhERCwweDkyLDB4RDUsMHg4MywweEFBLDB4RkEsMHg2
MCwweDE0LDB4RTYsMHhCMywweEQ1LDB4MkQsMHgwRiwweEE5LDB4QjUsCi0gICAgMHgxNCwweEU2
LDB4MTAsMHhDNSwweDIwLDB4QTAsMHhGQSwweDVFLDB4QjMsMHhENSwweEYwLDB4QzQsMHg4MCww
eDc4LDB4NTcsMHg3NywKLSAgICAweDMwLDB4QzUsMHhGMCwweEJDLDB4NTgsMHhGRiwweDU1LDB4
NTUsMHgzMCwweEM1LDB4RDAsMHhCQywweEZFLDB4MzYsMHg5RiwweERGLAotICAgIDB4MzEsMHhD
RCwweDJELDB4QUMsMHg3QSwweDc4LDB4RTAsMHg4MCwweENGLDB4QkMsMHhFQywweEEzLDB4MkIs
MHgyRCwweDNGLDB4MkYsCi0gICAgMHgzMSwweENELDB4QjAsMHhCQywweEZBLDB4NDAsMHhBMiww
eENCLDB4Q0YsMHhCQywweDRFLDB4QUMsMHgzRSwweDM3LDB4OTcsMHhCRiwKLSAgICAweDUxLDB4
Q0QsMHhGMCwweEM0LDB4QTUsMHgyOSwweDg5LDB4MjksMHg1MSwweENELDB4MTEsMHhDNSwweDBB
LDB4MjIsMHhBOSwweENFLAotICAgIDB4NTIsMHhDRCwweEQwLDB4QkMsMHhFOCwweEU4LDB4N0Ms
MHhERiwweDUyLDB4Q0QsMHhDRiwweEJDLDB4RjcsMHg5RiwweEFELDB4OEIsCi0gICAgMHg3Miww
eENELDB4MTEsMHhDNSwweEI3LDB4QkQsMHg5RiwweDNGLDB4NzIsMHhDRCwweDUxLDB4Q0QsMHgy
OSwweDNELDB4QjUsMHhCRCwKLSAgICAweEM4LDB4ODIsMHgyNSwweDZBLDB4MjAsMHhBQSwweEFG
LDB4RDcsMHhFOCwweDgyLDB4NjYsMHg3MiwweEEyLDB4ODMsMHg4QSwweEZELAotICAgIDB4Qzcs
MHg4MiwweDg3LDB4N0EsMHhCOCwweDJBLDB4MkEsMHgyRSwweDA3LDB4ODMsMHhDOCwweDgyLDB4
NUYsMHg3QiwweEZGLDB4N0UsCi0gICAgMHhFOCwweDgyLDB4QTcsMHg3QSwweEFCLDB4OEIsMHg4
OSwweDIzLDB4MDgsMHg4QiwweEE3LDB4N0EsMHhGNywweEI3LDB4QkYsMHhCQSwKLSAgICAweDA5
LDB4OEIsMHhBNywweDdBLDB4OEYsMHhDNiwweERFLDB4NUYsMHhFOCwweDgyLDB4QTcsMHg4Miww
eEZCLDB4NzUsMHhBQiwweEEzLAotICAgIDB4RTgsMHg4MiwweDg3LDB4N0EsMHhFMCwweDJBLDB4
MEEsMHgyOCwweDA4LDB4OEIsMHhBNywweDdBLDB4RUYsMHhCRiwweEZBLDB4NUMsCi0gICAgMHhF
OCwweDgyLDB4ODYsMHg3QSwweDIwLDB4QTgsMHg4MCwweEMxLDB4RTgsMHg4MiwweEE3LDB4N0Es
MHhERSwweEFBLDB4M0EsMHhFOCwKLSAgICAweDA5LDB4OEIsMHhBOCwweDdBLDB4N0YsMHhDRiww
eEFCLDB4QUYsMHgwOCwweDhCLDB4QzgsMHg4MiwweEJGLDB4QjMsMHhFMywweDZBLAotICAgIDB4
MDgsMHg4QiwweEE3LDB4ODIsMHhBRiwweEUyLDB4QUEsMHhEQSwweDA5LDB4OEIsMHhDOCwweDgy
LDB4RDUsMHhENywweDJCLDB4QzUsCi0gICAgMHhDOCwweDhBLDB4RTgsMHg4MiwweEZELDB4NTks
MHg1RiwweEY3LDB4MDgsMHg4QiwweEM4LDB4ODIsMHhCQiwweEFBLDB4RkEsMHg3QSwKLSAgICAw
eEU4LDB4ODIsMHhDOCwweDgyLDB4RDgsMHhCOCwweEFBLDB4N0IsMHgwOSwweDhCLDB4QzgsMHg4
MiwweDIyLDB4ODMsMHgwQSwweEY5LAotICAgIDB4OEEsMHg5MywweEU4LDB4ODIsMHgyRiwweEZE
LDB4NUQsMHg1NSwweDEwLDB4Q0QsMHgwOSwweDhCLDB4MkIsMHhGNSwweDU1LDB4NTUsCi0gICAg
MHg1NCwweEVFLDB4MDksMHg4QiwweDAyLDB4QUYsMHhENSwweDU1LDB4OTUsMHhGNiwweDRBLDB4
OTMsMHgwMCwweDAyLDB4QUYsMHhENSwKLSAgICAweEI2LDB4RjYsMHhBRSwweEJDLDB4MDAsMHgw
MCwweDBBLDB4QkQsMHhCNywweEY2LDB4MTQsMHhFNiwweDAwLDB4MDAsMHgwMCwweDhELAotICAg
IDB4OTYsMHhGNiwweEYwLDB4QkMsMHg3MCwweEUwLDB4QzAsMHg4MCwweEQwLDB4QkMsMHg0NCww
eDQ5LDB4NUUsMHg1RSwweDU4LDB4NzgsCi0gICAgMHg0MywweDQ5LDB4MDMsMHg0MSwweEEyLDB4
QjgsMHhFRSwweEZGLDB4NjMsMHg0OSwweDAzLDB4NDksMHgwQSwweEJBLDB4RUIsMHgwOSwKLSAg
ICAweEE1LDB4NTEsMHg0MywweDQ5LDB4Q0EsMHhBRSwweEJELDB4RUIsMHhBNSwweDU5LDB4NjQs
MHg1MSwweDU1LDB4NkQsMHhCNywweDM1LAotICAgIDB4MjYsMHg2QSwweDg0LDB4NTEsMHhBNSww
eEFGLDB4MjksMHgwRiwweDA5LDB4OEIsMHgyNiwweDcyLDB4M0QsMHgyRCwweDI5LDB4MkYsCi0g
ICAgMHg0QSwweDlCLDB4RTgsMHg4QSwweEE5LDB4MDIsMHgwQSwweEEzLDB4MkEsMHg5QiwweEE4
LDB4OEEsMHg3OCwweDc4LDB4NjAsMHhGMiwKLSAgICAweEE4LDB4OEEsMHg0NywweDdBLDB4RDQs
MHhGQSwweDdBLDB4RjgsMHg2NywweDgyLDB4RTUsMHg2OSwweEZBLDB4RjIsMHg3RSwweDdGLAot
ICAgIDB4MDYsMHg3MiwweEE1LDB4NjEsMHg1NiwweEE4LDB4Q0EsMHgwQSwweDI3LDB4NzIsMHhB
NSwweDYxLDB4OTUsMHgyQSwweDBBLDB4MjIsCi0gICAgMHg2NywweDdBLDB4QzUsMHg2MSwweDU3
LDB4RkYsMHhCRSwweDJFLDB4MjcsMHg2QSwweEE1LDB4NTksMHg3NiwweDdFLDB4NzgsMHg2MCwK
LSAgICAweEE1LDB4NTksMHgwMywweDQxLDB4REUsMHhBOCwweDIwLDB4RjgsMHhBNSwweDUxLDB4
MDMsMHg0MSwweEY3LDB4QTgsMHhCOCwweDVGLAotICAgIDB4QTYsMHg1MSwweDI0LDB4NDksMHgy
RiwweEFBLDB4QUUsMHhGRCwweEE1LDB4NTEsMHgyMywweDQ5LDB4QUUsMHhBQywweEVFLDB4N0Ys
Ci0gICAgMHg4NCwweDUxLDB4MjMsMHg0OSwweDIwLDB4QTIsMHhFQiwweEZELDB4QTUsMHg1OSww
eDQzLDB4NDksMHgzRiwweEZGLDB4RkYsMHhBRCwKLSAgICAweDA2LDB4NjIsMHg4NCwweDU5LDB4
MkYsMHhBRCwweDJGLDB4OEIsMHg2NywweDcyLDB4QzUsMHg2MSwweDdELDB4N0IsMHhDMiwweDIy
LAotICAgIDB4MjYsMHg2QSwweEE0LDB4NTksMHhFRCwweEY3LDB4NzYsMHg2OCwweDY3LDB4NzIs
MHhDNSwweDYxLDB4QUIsMHhBQiwweDJELDB4MjksCi0gICAgMHg2NywweDcyLDB4QTQsMHg1OSww
eDgwLDB4QTAsMHg3MCwweDdDLDB4QzQsMHg1OSwweEUyLDB4MzgsMHhGOCwweDVDLDB4NUUsMHg1
NywKLSAgICAweEM1LDB4NjEsMHhFMiwweDM4LDB4QkYsMHgzNSwweDNELDB4MkQsMHg2NywweDdB
LDB4QzUsMHg2MSwweDJELDB4MEYsMHg4QiwweEFCLAotICAgIDB4ODgsMHg3QSwweDI2LDB4NzIs
MHhCRSwweDhFLDB4RUIsMHg1RSwweDY3LDB4N0EsMHhFNiwweDY5LDB4QjgsMHhFOCwweEZBLDB4
REYsCi0gICAgMHhDOCwweDhBLDB4MDYsMHg3MiwweDJELDB4MjUsMHgyRiwweDJCLDB4MkEsMHg5
MywweEM4LDB4OEEsMHg0QiwweEZCLDB4N0QsMHhDMywKLSAgICAweEU5LDB4OEEsMHg2NywweDdB
LDB4NTYsMHhGOCwweEJDLDB4QTgsMHhFOSwweDhBLDB4ODgsMHg4MiwweDI5LDB4QjcsMHhENyww
eDVGLAotICAgIDB4MEEsMHg4QiwweEE4LDB4ODIsMHgzQSwweDNGLDB4MzUsMHg1NSwweDc2LDB4
RjYsMHg4QiwweDlCLDB4MkQsMHgyRCwweEY1LDB4RDUsCi0gICAgMHhGOCwweEZFLDB4MzEsMHhE
NSwweDAwLDB4MDAsMHgwMiwweDA5LDB4MTgsMHhGRiwweEY4LDB4RkUsMHg3QSwweDU3LDB4N0Qs
MHg1NSwKLSAgICAweEY4LDB4RkUsMHg3NSwweEU2LDB4RTAsMHhGMCwweEYwLDB4NzgsMHg1NSww
eEVFLDB4NzUsMHhFNiwweDhBLDB4RUIsMHhBQSwweDIwLAotICAgIDB4NzUsMHhFRSwweDU1LDB4
RUUsMHhEOSwweEZGLDB4RkYsMHhFNSwweDk2LDB4RUUsMHgzNSwweEU2LDB4OTcsMHgyRiwweEJC
LDB4MkYsCi0gICAgMHhGOCwweEZFLDB4OTYsMHhGNiwweDJELDB4MkYsMHgwOSwweDBCLDB4MTgs
MHhGRiwweEY4LDB4RjYsMHhEQiwweDdCLDB4N0IsMHg3QSwKLSAgICAweDE4LDB4RkYsMHhGOCww
eEY2LDB4MkYsMHhBOSwweDJCLDB4MEQsMHgxOCwweEZGLDB4RjgsMHhGNiwweDAwLDB4MDgsMHhB
MCwweEUwLAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhCQSwweEFBLDB4RkEsMHhFRSwweDE4
LDB4RkYsMHhGOCwweEY2LDB4RkYsMHg3RSwweDVFLDB4N0YsCi0gICAgMHgxOCwweEZGLDB4Rjgs
MHhGNiwweEZGLDB4REQsMHhFRiwweEVELDB4RjcsMHhGRSwweEY4LDB4RjYsMHhGRiwweDdFLDB4
RkYsMHhGRiwKLSAgICAweEQ4LDB4RkUsMHhGNywweEY2LDB4NTcsMHg1RiwweEQ3LDB4N0YsMHgx
OCwweEZGLDB4RjgsMHhGNiwweDZGLDB4NTUsMHg3NSwweEQ1LAotICAgIDB4RjgsMHhGNiwweEQ3
LDB4RjYsMHhCQSwweEZDLDB4REMsMHhCQSwweEY3LDB4RjYsMHhENywweEY2LDB4QUEsMHgyQSww
eDBCLDB4QUEsCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweDU3LDB4NUQsMHhCRiwweEJCLDB4
MTcsMHhGRiwweEY4LDB4RjYsMHg1NSwweERELDB4RkYsMHhGRCwKLSAgICAweDE4LDB4RkYsMHhG
OCwweEY2LDB4RkYsMHhGRCwweEZGLDB4NzcsMHgxOCwweEZGLDB4RjgsMHhGNiwweEZGLDB4N0Es
MHhCRCwweEZGLAotICAgIDB4RjgsMHhGRSwweEY3LDB4RjYsMHhEQiwweEZGLDB4RkYsMHhBRSww
eDE4LDB4RkYsMHhGOCwweEY2LDB4QkIsMHhGQSwweEZBLDB4RkYsCi0gICAgMHgxOCwweEZGLDB4
RjgsMHhGNiwweDdGLDB4N0QsMHg3RiwweDlCLDB4RDcsMHhGRSwweEY4LDB4RjYsMHhERCwweEZE
LDB4RjUsMHhENSwKLSAgICAweEY4LDB4RjYsMHhENywweEY2LDB4OEUsMHg5QywweEZFLDB4MkEs
MHhGOCwweEY2LDB4RDcsMHhGNiwweEFBLDB4QjIsMHhGOCwweEIyLAotICAgIDB4RjcsMHhGNiww
eDk4LDB4RjYsMHhBMCwweEFBLDB4RTgsMHhBQSwweEQ3LDB4RjYsMHg5NiwweEVFLDB4RTAsMHhB
RSwweDZBLDB4RkUsCi0gICAgMHg5NiwweEY2LDB4NzYsMHhFRSwweDg4LDB4RDgsMHg1NCwweEIy
LDB4OTUsMHhFRSwweDU2LDB4RTYsMHhDQSwweEZCLDB4RkYsMHhGRSwKLSAgICAweDc2LDB4RUUs
MHg1NSwweEVFLDB4MDAsMHhBNywweEQ3LDB4QTUsMHg3NiwweEY2LDB4NTUsMHhFNiwweEZGLDB4
RkYsMHg3QywweDc4LAotICAgIDB4NzYsMHhFRSwweDM1LDB4RTYsMHhCQSwweEVBLDB4QjIsMHhG
QSwweDM2LDB4RUUsMHg1NSwweEU2LDB4NTUsMHhERiwweEQ3LDB4QkEsCi0gICAgMHg3NSwweEVF
LDB4MzUsMHhFNiwweEY2LDB4RkYsMHgzRiwweEI1LDB4NzYsMHhFRSwweDU1LDB4RTYsMHhGMyww
eDIzLDB4QjMsMHhGRiwKLSAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4QUQsMHhCQiwweEFGLDB4
MkYsMHg5NiwweEVFLDB4NzYsMHhFRSwweDc4LDB4RkUsMHg3RiwweDZCLAotICAgIDB4OTYsMHhF
RSwweDc2LDB4RUUsMHg2NSwweDdELDB4NUYsMHg3RCwweDk1LDB4RUUsMHg3NiwweEVFLDB4NTUs
MHg1NSwweDdCLDB4OTksCi0gICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweEI1LDB4NTUsMHg3NSww
eDdBLDB4OTYsMHhFRSwweDM0LDB4RTYsMHhFMiwweDY4LDB4RkUsMHg3RSwKLSAgICAweDE0LDB4
RTYsMHg3MSwweENELDB4NUUsMHhGQSwweEY4LDB4RTgsMHhGNCwweERELDB4NTEsMHhDRCwweDU3
LDB4N0YsMHhBQSwweDJBLAotICAgIDB4RDMsMHhERCwweDUxLDB4Q0QsMHgyRCwweDJFLDB4MkEs
MHg4QSwweDE0LDB4REUsMHhCMywweEQ1LDB4OEEsMHhBQiwweEVGLDB4QUYsCi0gICAgMHgxNCww
eEU2LDB4OTIsMHhENSwweDc4LDB4N0EsMHhFQSwweDZBLDB4RDMsMHhERCwweDkyLDB4RDUsMHgw
MSwweDgxLDB4QTMsMHg0MiwKLSAgICAweDcyLDB4RDUsMHhDRiwweEJDLDB4RjgsMHg2OCwweEZD
LDB4NUUsMHgxMCwweEM1LDB4Q0YsMHhCQywweEI4LDB4RjMsMHg3MiwweDU2LAotICAgIDB4RjAs
MHhDNCwweENGLDB4QkMsMHg4MSwweDhELDB4NzUsMHhFNiwweDEwLDB4QzUsMHhBRiwweEJDLDB4
M0IsMHhBRSwweDlCLDB4OUUsCi0gICAgMHg5MSwweEQ1LDB4RjAsMHhDNCwweEVCLDB4RUYsMHhB
RCwweDJCLDB4NTEsMHhDRCwweDZFLDB4QjQsMHhENywweDVFLDB4NUUsMHg3OCwKLSAgICAweDMx
LDB4Q0QsMHhBRiwweEJDLDB4RTMsMHhDQiwweDhCLDB4QUQsMHhBRiwweEJDLDB4MkQsMHhBQyww
eDM2LDB4OUUsMHhCQywweDU0LAotICAgIDB4NTEsMHhDRCwweEFGLDB4QkMsMHgyOSwweDJCLDB4
MEYsMHgyRCwweDcxLDB4Q0QsMHgzMSwweEM1LDB4QUEsMHhFQSwweEZGLDB4N0QsCi0gICAgMHgz
MSwweENELDB4Q0YsMHhCQywweERBLDB4RkUsMHgyRSwweDJBLDB4NzIsMHhDRCwweEYwLDB4QzQs
MHhBRCwweDJGLDB4QUEsMHgyQSwKLSAgICAweDcyLDB4Q0QsMHg1MSwweENELDB4NUQsMHg1RSww
eDE2LDB4N0MsMHg3MSwweENELDB4NTEsMHhDRCwweDFELDB4RjcsMHhFNCwweEVBLAotICAgIDB4
ODcsMHg3QSwweDI1LDB4NkEsMHg3RSwweEVFLDB4RUUsMHhBQSwweEE3LDB4N0EsMHgyNSwweDZB
LDB4QkQsMHhGRCwweEZELDB4MkUsCi0gICAgMHhDNywweDdBLDB4NDUsMHg2QSwweDJFLDB4RDcs
MHhGNSwweERGLDB4QzcsMHg3QSwweDI1LDB4NkEsMHgwMiwweDJCLDB4RjcsMHhGNSwKLSAgICAw
eEU4LDB4ODIsMHg0NSwweDcyLDB4MkEsMHgwQiwweEFGLDB4RkQsMHhFOCwweDgyLDB4ODYsMHg3
QSwweEFBLDB4QjAsMHgyQSwweEJELAotICAgIDB4RTgsMHg4MiwweEE3LDB4N0EsMHhGQSwweDYw
LDB4QzgsMHhGRCwweEU4LDB4ODIsMHg4NywweDdBLDB4QTMsMHg4OSwweENBLDB4ODIsCi0gICAg
MHhFOCwweDgyLDB4ODcsMHg3QSwweDA4LDB4MjAsMHhBQSwweDYyLDB4RTgsMHg4MiwweDg2LDB4
N0EsMHg3MCwweEYwLDB4QkEsMHhFQiwKLSAgICAweEU4LDB4ODIsMHhBNywweDdBLDB4NDksMHhG
OSwweEY5LDB4RUIsMHhFOCwweDhBLDB4QTcsMHg3QSwweDkyLDB4MkEsMHhCRSwweEFGLAotICAg
IDB4RTgsMHg4MiwweEE3LDB4N0EsMHgyQiwweEFGLDB4NTYsMHhBNiwweEU4LDB4ODIsMHhDNyww
eDgyLDB4MDcsMHhBMSwweDA1LDB4QUQsCi0gICAgMHhDOCwweDhBLDB4RTgsMHg4MiwweEI1LDB4
RjUsMHg5NSwweEVDLDB4MDgsMHg4QiwweEM4LDB4ODIsMHhFQiwweEVBLDB4RTksMHhERiwKLSAg
ICAweDA5LDB4OEIsMHhDOCwweDgyLDB4N0IsMHhGQiwweEZELDB4MkUsMHgwOSwweDhCLDB4Qzgs
MHg4MiwweDdGLDB4RkIsMHhBOSwweDM3LAotICAgIDB4RTgsMHg4QSwweEM4LDB4ODIsMHhFQiww
eDQ1LDB4ODYsMHgwNCwweDA4LDB4OEIsMHhDOCwweDgyLDB4MzUsMHhBNSwweEZFLDB4QkUsCi0g
ICAgMHgwOSwweDhCLDB4QzgsMHg4MiwweEVBLDB4RjIsMHhGRiwweEE3LDB4MDksMHg4QiwweEM4
LDB4ODIsMHgzRSwweDkzLDB4RkIsMHg3QywKLSAgICAweDI5LDB4OEIsMHhFOCwweDgyLDB4QTcs
MHg1RCwweDY5LDB4QTksMHgyOSwweDhCLDB4RTgsMHg4MiwweDBGLDB4OEYsMHg2RiwweDdGLAot
ICAgIDB4RUMsMHhBMywweDA5LDB4OEIsMHgwRiwweDc1LDB4NTUsMHg1NSwweEIzLDB4REQsMHgw
OSwweDhCLDB4MEEsMHhCRCwweDU1LDB4NTUsCi0gICAgMHg1NSwweEVFLDB4MjksMHg4QiwweDAw
LDB4QUEsMHhGRCwweDU1LDB4MzIsMHhDRCwweDg0LDB4NTEsMHg3OCwweDc4LDB4N0EsMHg3RiwK
LSAgICAweDQzLDB4NDksMHhFMiwweDM4LDB4QkYsMHhENCwweEJFLDB4MEEsMHg4NCwweDUxLDB4
MDMsMHg0MSwweEFELDB4RkQsMHhFRiwweDZBLAotICAgIDB4QTQsMHg1MSwweDIzLDB4NDEsMHg4
QiwweDhCLDB4QkUsMHhGNywweEE1LDB4NTksMHg0MywweDQ5LDB4MkUsMHgzRSwweDJGLDB4MkQs
Ci0gICAgMHgyNiwweDcyLDB4QzUsMHg2MSwweDNELDB4QkQsMHhCRCwweEI1LDB4QzgsMHg4QSww
eDI2LDB4NzIsMHgwRiwweDBCLDB4QUQsMHhCNSwKLSAgICAweDJBLDB4OUIsMHhBNywweDgyLDB4
MDIsMHgyQiwweEFELDB4QUQsMHgyOSwweDlCLDB4QzksMHg4QSwweDZBLDB4QUEsMHgyMCwweDBB
LAotICAgIDB4MEEsMHg5QiwweDQ3LDB4N0EsMHg3RSwweEZDLDB4RjgsMHhGOCwweDY3LDB4N0Es
MHgwNiwweDcyLDB4REQsMHhFRiwweEVGLDB4MkMsCi0gICAgMHg4NywweDgyLDB4RTYsMHg2OSww
eDVELDB4N0UsMHhGQSwweEUyLDB4NDcsMHg3QSwweEU1LDB4NjksMHgxRCwweEI1LDB4RDcsMHhG
NywKLSAgICAweDg4LDB4N0EsMHgyNiwweDcyLDB4MkUsMHhBMywweDBGLDB4RUQsMHg4OCwweDgy
LDB4MDUsMHg2MiwweDc4LDB4RjgsMHg3RSwweDU3LAotICAgIDB4RTYsMHg2MSwweDQzLDB4NDks
MHg1RSwweDcwLDB4QzAsMHg4MCwweDg0LDB4NTEsMHhDMiwweDM4LDB4REYsMHg1RSwweEZBLDB4
QTAsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweEZELDB4NzUsMHhBOSwweEE4LDB4NjQsMHg0
OSwweDAzLDB4NDEsMHhFMywweEJGLDB4RTcsMHg5QiwKLSAgICAweDg1LDB4NTEsMHgwMywweDQx
LDB4OTUsMHhGRiwweEFGLDB4MEEsMHhBNSwweDU5LDB4NDMsMHg0OSwweDJELDB4MkQsMHgyRSww
eDJGLAotICAgIDB4MjYsMHg2QSwweEM1LDB4NTksMHhCOSwweEFELDB4QUQsMHhFRCwweDg3LDB4
NzIsMHgwNiwweDZBLDB4QkIsMHhGRiwweDlGLDB4M0IsCi0gICAgMHhBOCwweDdBLDB4MjYsMHg2
QSwweDdGLDB4RkIsMHhBQSwweDAyLDB4NjcsMHg3MiwweDA2LDB4NjIsMHgyQiwweDJBLDB4ODgs
MHg3OCwKLSAgICAweDY3LDB4NzIsMHg2MywweDUxLDB4NzgsMHg1OCwweDVFLDB4NUYsMHg0Myww
eDQ5LDB4QzIsMHgzOCwweERBLDB4NUEsMHhGOCwweEY4LAotICAgIDB4RTUsMHg2MSwweDIzLDB4
NDEsMHgyRCwweEFELDB4QUQsMHhCNSwweDI2LDB4NzIsMHhBNSwweDU5LDB4MDIsMHgyQiwweEE3
LDB4NzUsCi0gICAgMHgyNywweDcyLDB4QzUsMHg2MSwweEU4LDB4RTgsMHhGRSwweEE5LDB4Mjcs
MHg3MiwweEE1LDB4NjEsMHg5RiwweDk1LDB4MUYsMHg5RSwKLSAgICAweEU5LDB4OEEsMHg0Nyww
eDdBLDB4MkQsMHhBOSwweDJELDB4ODksMHg0QSwweDkzLDB4QTgsMHg4MiwweDhBLDB4RkEsMHg3
QiwweDVGLAotICAgIDB4QzksMHg4QSwweDQ3LDB4N0EsMHg2OCwweEVBLDB4QUIsMHhBNSwweEE4
LDB4ODIsMHg2NywweDdBLDB4QUIsMHgwQiwweDJGLDB4QTIsCi0gICAgMHgyOSwweDkzLDB4ODgs
MHg3QSwweDdELDB4RkYsMHhGRSwweEUyLDB4NEEsMHg5MywweDg4LDB4N0EsMHgwRiwweDNELDB4
RDUsMHhENSwKLSAgICAweEI2LDB4RjYsMHgwOSwweDhCLDB4MEIsMHgyRiwweEFELDB4QjUsMHhE
NywweEZFLDB4RDMsMHhERCwweDAwLDB4MDAsMHgwMiwweDA5LAotICAgIDB4RDcsMHhGRSwweDU1
LDB4RUUsMHg2OCwweDc4LDB4NTgsMHhEQSwweDc2LDB4RUUsMHg1NSwweEVFLDB4RkYsMHhCQiww
eEJCLDB4NjksCi0gICAgMHg3NSwweEVFLDB4MTUsMHhFRSwweDJBLDB4QTIsMHhBOCwweEUyLDB4
OTYsMHhFRSwweDU1LDB4RUUsMHgzNywweDJELDB4MDUsMHgyRCwKLSAgICAweEY4LDB4RkUsMHhC
NiwweEY2LDB4MjksMHgyRCwweDBELDB4MkQsMHgxOCwweEZGLDB4RjgsMHhGNiwweDdFLDB4RkYs
MHhGRiwweERCLAotICAgIDB4MzksMHhGRiwweEY4LDB4RkUsMHhCRCwweEJELDB4RUYsMHgyOSww
eDM5LDB4RkYsMHgxOCwweEZGLDB4NUYsMHg2RiwweDdGLDB4NUYsCi0gICAgMHgxOCwweEZGLDB4
RjgsMHhGNiwweEFBLDB4QTgsMHhBMiwweEFBLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGQiwweEVC
LDB4OTIsMHg1RSwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RDcsMHg3NywweERGLDB4RkYs
MHhENywweEZFLDB4RjgsMHhGNiwweDc3LDB4REQsMHhGNSwweEY1LAotICAgIDB4RjgsMHhGNiww
eEQ3LDB4RjYsMHhBQywweEVBLDB4RTgsMHhFQSwweEY4LDB4RjYsMHhENywweEY2LDB4QTIsMHg4
QSwweEFCLDB4QUUsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEFBLDB4MEUsMHhBQSwweEFB
LDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhCRiwweEJCLDB4QkIsMHhBQSwKLSAgICAweEY3LDB4RkUs
MHgxOCwweEY3LDB4QUUsMHhCRSwweEJBLDB4QUEsMHgxOCwweEZGLDB4RjcsMHhGNiwweEZGLDB4
RjcsMHhGRiwweDdFLAotICAgIDB4RDgsMHhGRSwweEY3LDB4RjYsMHg1NSwweEY1LDB4REQsMHhG
RCwweEY3LDB4RkUsMHhGOCwweEY2LDB4RkYsMHhGRiwweEZGLDB4RUYsCi0gICAgMHgxOSwweEZG
LDB4RjcsMHhGNiwweERGLDB4RkYsMHhERCwweEZELDB4MTgsMHhGRiwweEY3LDB4RjYsMHhGRiww
eDdELDB4RUQsMHhGRiwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RkEsMHhGRSwweDdGLDB4
N0YsMHhENywweEZFLDB4RjgsMHhGNiwweDk1LDB4RDUsMHg1NSwweDc1LAotICAgIDB4RjcsMHhG
NiwweEQ4LDB4RjYsMHgyQSwweEE4LDB4QTgsMHhBQSwweEY3LDB4RjYsMHhENywweEY2LDB4Qjgs
MHhEQiwweEU3LDB4RjYsCi0gICAgMHhGNywweEY2LDB4QjcsMHhGNiwweDdFLDB4N0UsMHg1RSww
eDVGLDB4QjcsMHhGNiwweDc2LDB4RUUsMHhBQSwweEVCLDB4RTIsMHhGQSwKLSAgICAweDk2LDB4
RUUsMHg1NSwweEVFLDB4QTAsMHhDOCwweEUyLDB4RUIsMHg3NiwweEVFLDB4NTYsMHhFNiwweDg4
LDB4QUMsMHhBMCwweDAwLAotICAgIDB4NzYsMHhFRSwweDU2LDB4RUUsMHgyMCwweDAyLDB4QUEs
MHhBMiwweDc2LDB4RUUsMHgxNSwweEU2LDB4QzgsMHgyQSwweEEyLDB4ODIsCi0gICAgMHg3Niww
eEVFLDB4MzUsMHhFNiwweEZBLDB4RUEsMHhGMiwweEZBLDB4NTUsMHhFRSwweDE0LDB4REUsMHhG
QSwweEU4LDB4RjgsMHhGQSwKLSAgICAweDU1LDB4RTYsMHgxNCwweERFLDB4MEIsMHgwQiwweDJG
LDB4ODUsMHg3NiwweEVFLDB4NTUsMHhFNiwweEVGLDB4MkEsMHgyOSwweEJELAotICAgIDB4OTYs
MHhFRSwweDc2LDB4RUUsMHhCRCwweDdGLDB4REQsMHhGNywweDk2LDB4RUUsMHg3NiwweEVFLDB4
NkQsMHhBNywweDI1LDB4M0YsCi0gICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweDdELDB4RjUsMHhG
QiwweEY4LDB4OTYsMHhFRSwweDc2LDB4RUUsMHhGQiwweEJBLDB4RkYsMHhGRiwKLSAgICAweDk2
LDB4RjYsMHg3NiwweEVFLDB4RUYsMHhFQiwweDhCLDB4RUIsMHg5NiwweEVFLDB4MTQsMHhFNiww
eDZBLDB4NkEsMHhFOCwweDY4LAotICAgIDB4MTQsMHhFNiwweEQ0LDB4REQsMHhEQSwweDA4LDB4
MEEsMHgyOCwweDM0LDB4RTYsMHhGNCwweERELDB4NUQsMHg3RiwweEZCLDB4Q0EsCi0gICAgMHgx
NCwweEU2LDB4RDMsMHhERCwweDU1LDB4NTcsMHg3QiwweEUyLDB4RjQsMHhERCwweEIzLDB4REQs
MHg4QiwweDBBLDB4QUYsMHhBOCwKLSAgICAweDE0LDB4RTYsMHg5MiwweEQ1LDB4NkEsMHg3QSww
eEFBLDB4QTAsMHhGNCwweERELDB4RjAsMHhDNCwweEVBLDB4RUEsMHg3OCwweDc4LAotICAgIDB4
MTAsMHhDNSwweDhFLDB4QjQsMHhBOCwweEJDLDB4RkEsMHhERSwweENGLDB4QkMsMHhBRiwweEJD
LDB4MDAsMHhGMiwweEZFLDB4QUMsCi0gICAgMHhFRiwweEJDLDB4OEUsMHhCNCwweEUzLDB4Rjcs
MHg1RiwweDc0LDB4RDAsMHhDNCwweDRELDB4QUMsMHhBMiwweEVBLDB4RkUsMHhENywKLSAgICAw
eDUxLDB4Q0QsMHhDRiwweEJDLDB4MDksMHgwNSwweDhELDB4QTUsMHg1MSwweENELDB4OEUsMHhC
NCwweDc4LDB4RTAsMHhBMCwweDgwLAotICAgIDB4MzEsMHhDRCwweENGLDB4QkMsMHgyNSwweEU1
LDB4RjUsMHhGRiwweEYwLDB4QkMsMHhFQywweEEzLDB4REUsMHhGQywweDVFLDB4RjgsCi0gICAg
MHgzMSwweENELDB4OEYsMHhCNCwweDA5LDB4MEQsMHgwOSwweDA5LDB4NTEsMHhDRCwweDEwLDB4
QzUsMHg4QiwweEZFLDB4QUMsMHg3QSwKLSAgICAweDcyLDB4Q0QsMHhGMCwweEM0LDB4QjcsMHhB
NywweDJELDB4QUEsMHg5MiwweEQ1LDB4MzEsMHhDNSwweEFELDB4RUYsMHhFQywweDJFLAotICAg
IDB4OTMsMHhENSwweDUxLDB4Q0QsMHhENywweDVGLDB4NUYsMHhGQSwweDcxLDB4Q0QsMHg1MSww
eENELDB4RjMsMHhGQiwweEY2LDB4N0UsCi0gICAgMHg4NiwweDdBLDB4NDYsMHg3MiwweEE4LDB4
QTYsMHhFRSwweEE4LDB4ODYsMHg3QSwweDQ2LDB4NzIsMHgyOCwweEFCLDB4MkIsMHhBQSwKLSAg
ICAweEE3LDB4N0EsMHg0NSwweDcyLDB4REYsMHg1RiwweEVBLDB4NjIsMHg4NiwweDdBLDB4NDUs
MHg3MiwweDY4LDB4NjAsMHg2MCwweDQzLAotICAgIDB4ODYsMHg3MiwweDI1LDB4NzIsMHhGRSww
eDlGLDB4QUEsMHhBMCwweDg3LDB4N0EsMHg0NiwweDcyLDB4MDMsMHhCQiwweDdFLDB4OEYsCi0g
ICAgMHhDOCwweDgyLDB4MjUsMHg2QSwweDJCLDB4QUIsMHhERiwweDU3LDB4QTcsMHg4MiwweDA1
LDB4NkEsMHgwMCwweDAwLDB4MEIsMHhCRCwKLSAgICAweEU4LDB4ODIsMHg4NywweDdBLDB4RUUs
MHgyQiwweEJCLDB4NzUsMHhFOCwweDgyLDB4QTcsMHg3QSwweEVGLDB4QUIsMHhBOSwweDI5LAot
ICAgIDB4RTgsMHg4MiwweDg3LDB4N0EsMHhFQiwweDdBLDB4ODgsMHgwRSwweEU4LDB4ODIsMHhB
OCwweDgyLDB4MDMsMHg4MiwweEFBLDB4MjgsCi0gICAgMHhFOCwweDgyLDB4ODgsMHg4MiwweDJB
LDB4QTIsMHgyOCwweEI4LDB4MDksMHg4QiwweEE3LDB4N0EsMHhGRiwweERFLDB4QkUsMHhFOCwK
LSAgICAweEU4LDB4ODIsMHhBNywweDdBLDB4QUIsMHhFMiwweEMzLDB4ODksMHhFOCwweDgyLDB4
QTgsMHg4MiwweEE4LDB4OEEsMHhBQywweEVCLAotICAgIDB4RTgsMHg4MiwweEM4LDB4ODIsMHgw
QSwweEZGLDB4MkIsMHgyQSwweDA5LDB4ODMsMHhBNywweDdBLDB4MkUsMHhCRiwweDlFLDB4RkEs
Ci0gICAgMHgwOSwweDhCLDB4QzgsMHg4MiwweDNBLDB4NzcsMHhFMywweEYwLDB4MDgsMHg4Qiww
eEM4LDB4ODIsMHg3QSwweDZELDB4RjUsMHg5NSwKLSAgICAweDA5LDB4OEIsMHhDOCwweDgyLDB4
QzEsMHhDRiwweEFCLDB4RDQsMHgwOCwweDhCLDB4QzgsMHg4MiwweDVFLDB4N0UsMHhGQSwweDdG
LAotICAgIDB4MDgsMHg4QiwweEM3LDB4ODIsMHg4MiwweDAxLDB4Q0IsMHhCRiwweDI5LDB4OEIs
MHhDOCwweDgyLDB4RjUsMHg2RiwweEE4LDB4RUIsCi0gICAgMHgwOSwweDhCLDB4QzksMHg4Miww
eEJGLDB4MDIsMHgzOCwweEZFLDB4MDksMHg4QiwweEM4LDB4ODIsMHgwMCwweEIwLDB4QkUsMHg5
NiwKLSAgICAweDI5LDB4OEIsMHhDOCwweDdBLDB4RkMsMHhGQSwweEZBLDB4N0UsMHhDOSwweDgy
LDB4ODQsMHg1MSwweDc4LDB4NjgsMHhGOCwweDc4LAotICAgIDB4NjMsMHg0OSwweDIzLDB4NDks
MHhFRiwweDJFLDB4NkMsMHhGMCwweDg0LDB4NTEsMHg0MywweDQ5LDB4RUIsMHhCRSwweEFGLDB4
REQsCi0gICAgMHg4NCwweDUxLDB4NDQsMHg0OSwweEY1LDB4NUYsMHhCRSwweDNBLDB4QzUsMHg2
MSwweDY0LDB4NTEsMHhCRCwweDM1LDB4QUYsMHhBRiwKLSAgICAweEU2LDB4NjksMHhBNSwweDYx
LDB4MzgsMHhBRiwweEI5LDB4MjksMHhBOCwweDgyLDB4RTUsMHg2OSwweEFELDB4QkYsMHgyRCww
eDI5LAotICAgIDB4RTksMHg5MiwweEE4LDB4ODIsMHg4OSwweEI5LDB4QkIsMHhBQSwweDA5LDB4
OTMsMHhBOCwweDhBLDB4ODgsMHhGQSwweEZELDB4NzcsCi0gICAgMHhFQSwweDkyLDB4NjcsMHg4
MiwweEU4LDB4RkEsMHhGRSwweDdFLDB4NjcsMHg3QSwweDI2LDB4NzIsMHgxRSwweDFBLDB4NTgs
MHg3NywKLSAgICAweDY3LDB4N0EsMHgyNiwweDcyLDB4RTAsMHgwMCwweDNDLDB4RDUsMHg0Niww
eDcyLDB4MDYsMHg3MiwweEU1LDB4REUsMHgzNCwweDlDLAotICAgIDB4NjcsMHg3QSwweDA2LDB4
NkEsMHhGRCwweEVFLDB4QUUsMHgwQSwweDQ2LDB4NzIsMHhFNSwweDYxLDB4NUUsMHhGQSwweDdF
LDB4NUMsCi0gICAgMHgwNiwweDZBLDB4QTUsMHg1OSwweEZBLDB4RjAsMHg3MiwweDU1LDB4QTUs
MHg1OSwweDIzLDB4NDksMHg3QSwweDY4LDB4NUEsMHg3QSwKLSAgICAweDIzLDB4NDksMHhFMyww
eDQwLDB4MjgsMHhGMCwweEU4LDB4QjIsMHg2NCwweDQ5LDB4MDMsMHg0MSwweEJELDB4OUQsMHgy
RiwweEI5LAotICAgIDB4NjQsMHg0OSwweDIzLDB4NDksMHgzNSwweEFELDB4QUYsMHhGRSwweDg0
LDB4NTksMHgyMywweDQ5LDB4OUEsMHhBQSwweDJBLDB4MkEsCi0gICAgMHgwNSwweDYyLDB4QTUs
MHg1OSwweDNGLDB4QkYsMHhCNSwweERELDB4ODgsMHg3MiwweEM1LDB4NTksMHgyQiwweDI3LDB4
QUYsMHhBRCwKLSAgICAweDg4LDB4NzIsMHg0NiwweDcyLDB4QkUsMHhCMiwweEUyLDB4QzIsMHg2
NywweDcyLDB4QTQsMHg1OSwweEUyLDB4NjgsMHg3QSwweDdBLAotICAgIDB4QTQsMHg1OSwweDQz
LDB4NDksMHhFMCwweEU4LDB4RjgsMHg3RSwweDY0LDB4NTEsMHgwMiwweDQxLDB4REMsMHhEQyww
eEZBLDB4RUYsCi0gICAgMHhBNSwweDU5LDB4MjMsMHg0OSwweEJELDB4QUYsMHhCRCwweDNCLDB4
NDcsMHg3MiwweDg0LDB4NTksMHhGNSwweEQ1LDB4QkQsMHgyRiwKLSAgICAweDI3LDB4NzIsMHhD
NiwweDY5LDB4QTUsMHhCNywweEFBLDB4ODgsMHhBOCwweDgyLDB4MDYsMHg2QSwweEQ1LDB4RjUs
MHhCNSwweDBBLAotICAgIDB4MDksMHg5MywweDY3LDB4N0EsMHhFRCwweEZGLDB4QUUsMHhBMiww
eEM5LDB4OEEsMHgyNiwweDcyLDB4RTAsMHg3QSwweDc4LDB4RkEsCi0gICAgMHg4OCwweDgyLDB4
MjYsMHg3MiwweDJGLDB4OUQsMHhGRiwweEZCLDB4RTksMHg4QSwweDg3LDB4ODIsMHhBQiwweDgz
LDB4MDksMHgyNSwKLSAgICAweDRBLDB4OTMsMHhDOCwweDgyLDB4NjIsMHg2QSwweEVCLDB4NTUs
MHhDOSwweDgyLDB4NjcsMHg3QSwweEI3LDB4REYsMHg3QSwweDc4LAotICAgIDB4MEMsMHg5Qyww
eEE4LDB4ODIsMHgyRCwweEZELDB4RkQsMHhGNSwweEI2LDB4RjYsMHg0QSwweDkzLDB4MEIsMHhB
RCwweEY1LDB4NTUsCi0gICAgMHg3NiwweEY2LDB4MTEsMHhDNSwweDAwLDB4ODAsMHgyQiwweEFE
LDB4NzYsMHhFRSwweDU1LDB4RUUsMHhGRSwweEI1LDB4QjUsMHhCNSwKLSAgICAweDc2LDB4RUUs
MHg1NSwweEVFLDB4RTgsMHhBRSwweDdFLDB4NUUsMHhENywweEY2LDB4NTUsMHhFRSwweEJELDB4
QTcsMHhBRiwweEE1LAotICAgIDB4MTgsMHhGRiwweEI3LDB4RjYsMHhBRCwweDJGLDB4QUYsMHgy
QiwweDE4LDB4RkYsMHhENywweEY2LDB4QkEsMHhGOCwweEZBLDB4QkUsCi0gICAgMHgzOSwweEZG
LDB4RjgsMHhGNiwweDg3LDB4QUQsMHhBRCwweEFELDB4MTgsMHhGRiwweDM4LDB4RjcsMHgyMiww
eDg4LDB4MDIsMHgwOCwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4QUEsMHhBOCwweEUyLDB4
QUEsMHgxOCwweEZGLDB4RjgsMHhGNiwweEZFLDB4RkEsMHhGRiwweEZFLAotICAgIDB4MTgsMHhG
RiwweEY4LDB4RjYsMHhGRSwweDc5LDB4RUIsMHhERiwweEQ3LDB4RkUsMHhGOCwweEY2LDB4REQs
MHg1NywweERELDB4RkYsCi0gICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweEVBLDB4QjIsMHhCRSww
eEJBLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBRSwweDlFLDB4M0UsMHhBNywKLSAgICAweEY3LDB4
RjYsMHhENywweEY2LDB4RTMsMHg4OCwweEFBLDB4OEEsMHhGOCwweEZFLDB4RjcsMHhGNiwweEZG
LDB4RkYsMHhGOSwweEZGLAotICAgIDB4RDcsMHhGRSwweEY3LDB4RjYsMHg1RiwweDU3LDB4NTcs
MHg3RiwweEY3LDB4RkUsMHgxOCwweEY3LDB4MkUsMHgwQiwweEFBLDB4RkYsCi0gICAgMHhGOCww
eEZFLDB4MTcsMHhFRiwweDI4LDB4QTIsMHhBMiwweEFBLDB4MTcsMHhGRiwweEY4LDB4RjYsMHhG
RCwweDU3LDB4NUYsMHhGQiwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4QUIsMHhGRSwweEI5
LDB4REUsMHgxOCwweEZGLDB4RjgsMHhGNiwweEZGLDB4RUUsMHhBQSwweEFBLAotICAgIDB4MTgs
MHhGRiwweEY4LDB4RjYsMHg3RSwweERBLDB4NUUsMHhENywweEQ4LDB4RkUsMHhGNywweEY2LDB4
RDcsMHhGNywweDlELDB4QkQsCi0gICAgMHhGNywweEY2LDB4QjcsMHhFRSwweEFBLDB4RkUsMHg1
RiwweDc3LDB4RDcsMHhGNiwweDk2LDB4RUUsMHgwMCwweEFBLDB4RUYsMHhERiwKLSAgICAweEQ3
LDB4RjYsMHg3NiwweEVFLDB4QTgsMHhFMiwweEVCLDB4RkYsMHhCNywweEY2LDB4NTUsMHhFNiww
eEU4LDB4RkMsMHhGQywweEZFLAotICAgIDB4NzYsMHhFRSwweDU1LDB4RTYsMHg4RSwweEFFLDB4
QTgsMHgwMCwweDk2LDB4RUUsMHg3NiwweEVFLDB4N0QsMHg3NSwweEQ1LDB4NTUsCi0gICAgMHg3
NiwweEVFLDB4NTYsMHhFRSwweEJFLDB4RjQsMHg5RSwweEZBLDB4NzUsMHhFRSwweDU2LDB4RUUs
MHhENSwweEY1LDB4QUQsMHhCQiwKLSAgICAweDc2LDB4RUUsMHgzNSwweEU2LDB4RkEsMHhGQSww
eDgyLDB4QTAsMHg1NSwweEVFLDB4MTQsMHhFNiwweEYyLDB4RjgsMHgyMCwweDAwLAotICAgIDB4
NTUsMHhFRSwweDE0LDB4REUsMHhBRiwweERGLDB4QkUsMHhCMCwweDc1LDB4RUUsMHgzNSwweEU2
LDB4QUIsMHgyQiwweDJCLDB4QUQsCi0gICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweEJGLDB4MkYs
MHg4RiwweEVGLDB4QjYsMHhGNiwweDc1LDB4RUUsMHhBRiwweEJGLDB4QkEsMHgyQSwKLSAgICAw
eDk2LDB4RUUsMHg1NSwweEU2LDB4RkMsMHg3QiwweEI4LDB4MjgsMHg5NiwweEVFLDB4NTUsMHhF
NiwweDJCLDB4QUYsMHgyQiwweDAwLAotICAgIDB4OTUsMHhFRSwweDc2LDB4RUUsMHg2QiwweEZC
LDB4RjIsMHhFMiwweDk2LDB4RUUsMHgxNCwweEU2LDB4RTgsMHhFMCwweDYyLDB4RjgsCi0gICAg
MHgzNCwweEU2LDB4RjQsMHhERCwweEYwLDB4RjgsMHhGRiwweEQ3LDB4MTQsMHhFNiwweEY0LDB4
REQsMHgwMiwweEJBLDB4RkIsMHg1RCwKLSAgICAweDE0LDB4RTYsMHhEMywweERELDB4QTAsMHhC
RSwweEQ3LDB4RDYsMHhEMywweEU1LDB4RjQsMHhERCwweDVELDB4REQsMHhFRiwweEZGLAotICAg
IDB4MTQsMHhFNiwweEQzLDB4RDUsMHgwMiwweDAyLDB4RTIsMHg2OCwweEIzLDB4RDUsMHhBRiww
eEJDLDB4RjAsMHg3OCwweDU4LDB4NUUsCi0gICAgMHhDRiwweEJDLDB4OEUsMHhCNCwweEI4LDB4
QTgsMHhERiwweEVELDB4QUYsMHhCQywweDRELDB4QUMsMHgwMCwweEE4LDB4RkEsMHg1OCwKLSAg
ICAweEFGLDB4QkMsMHgwQywweEE0LDB4QTgsMHhFQSwweEVFLDB4N0YsMHg4RiwweEI0LDB4MEQs
MHhBNCwweDJFLDB4QkQsMHhCNSwweEI1LAotICAgIDB4MTEsMHhDNSwweDZGLDB4QjQsMHgyQSww
eDJCLDB4MkQsMHhBRiwweDcyLDB4RDUsMHgxMCwweEM1LDB4QUEsMHhBRiwweDBELDB4MzUsCi0g
ICAgMHhCMywweEQ1LDB4RjAsMHhDNCwweDVGLDB4N0UsMHg3QSwweEFBLDB4RjAsMHhDNCwweDBE
LDB4QTQsMHg1OCwweDU4LDB4RDgsMHhEOCwKLSAgICAweDMxLDB4Q0QsMHg2RSwweEI0LDB4MDks
MHgyOSwweDhELDB4ODksMHgzMSwweENELDB4RjAsMHhDNCwweEQwLDB4RjIsMHg4MCwweDAyLAot
ICAgIDB4NzIsMHhDRCwweDMxLDB4Q0QsMHhCNSwweDBELDB4MkQsMHgyRiwweDkyLDB4RDUsMHg1
MSwweENELDB4QkYsMHhFQSwweEZCLDB4RkYsCi0gICAgMHg5MiwweEQ1LDB4NTEsMHhDRCwweEEz
LDB4REEsMHhERSwweEFDLDB4NzEsMHhENSwweDUxLDB4Q0QsMHhGOCwweEY4LDB4RUMsMHgzMCwK
LSAgICAweEE3LDB4N0EsMHg0NiwweDdBLDB4QkIsMHgyOCwweDkyLDB4ODIsMHhBNywweDdBLDB4
NDUsMHg3MiwweEVBLDB4MTAsMHhBQSwweEFBLAotICAgIDB4QTcsMHg3QSwweDQ1LDB4NzIsMHhB
QSwweDg1LDB4QUEsMHhBMiwweEE3LDB4N0EsMHg0NSwweDZBLDB4RkUsMHhEQywweEIyLDB4QUEs
Ci0gICAgMHhBNywweDdBLDB4NjYsMHg3MiwweDY5LDB4RTksMHhBNiwweDlBLDB4QTcsMHg3QSww
eDQ2LDB4NzIsMHhBQiwweEJBLDB4NkIsMHg4RiwKLSAgICAweEE3LDB4N0EsMHg0NiwweDcyLDB4
NTcsMHg1QiwweEY3LDB4RDcsMHg4NywweDdBLDB4NDYsMHg3MiwweDU1LDB4NkIsMHhGQSwweEEy
LAotICAgIDB4NjYsMHg3MiwweDI1LDB4NkEsMHg5RiwweDdFLDB4NUIsMHgyOCwweEE3LDB4N0Es
MHgyNSwweDZBLDB4MEEsMHhBRCwweEZELDB4RkYsCi0gICAgMHhDNywweDgyLDB4MjUsMHg2QSww
eDAwLDB4OEEsMHhCRiwweDU3LDB4RTgsMHg4QSwweDY2LDB4NzIsMHg4QSwweEEwLDB4RUUsMHhG
NSwKLSAgICAweEU4LDB4ODIsMHhBNywweDdBLDB4RUMsMHgxRCwweEJELDB4NTUsMHgwOCwweDhC
LDB4QTcsMHg3QSwweEZGLDB4REYsMHhBQiwweEJBLAotICAgIDB4RTgsMHg4MiwweEE3LDB4ODIs
MHgwOSwweDBCLDB4QzIsMHg5RiwweEU4LDB4ODIsMHhBNywweDdBLDB4QUEsMHhCRCwweEVCLDB4
QTMsCi0gICAgMHgwOSwweDgzLDB4QTcsMHg3QSwweEU4LDB4RkEsMHhCRiwweEJCLDB4RTksMHg4
MiwweEM4LDB4ODIsMHgwRiwweEQ1LDB4NUIsMHg0MiwKLSAgICAweDA5LDB4OEIsMHhBNywweDdB
LDB4RTIsMHhFQSwweEQ4LDB4REYsMHhFOCwweDhBLDB4QTcsMHg3QSwweDJCLDB4QkIsMHgzRCww
eEFGLAotICAgIDB4RTgsMHg4QSwweEM4LDB4ODIsMHhCQywweDk2LDB4RUUsMHhGQywweDA4LDB4
OEIsMHhDOCwweDgyLDB4NzcsMHhENCwweDVELDB4QjcsCi0gICAgMHgwOSwweDhCLDB4QzgsMHg4
MiwweDk1LDB4RDgsMHhGOCwweEZGLDB4MDksMHg4QiwweEE3LDB4ODIsMHhCRSwweEZBLDB4Rjgs
MHhERSwKLSAgICAweEU4LDB4OEEsMHhBOCwweDgyLDB4QkEsMHhFQSwweEFCLDB4MEEsMHgwOSww
eDhCLDB4QTcsMHg4MiwweEJDLDB4QkIsMHg2QiwweEFCLAotICAgIDB4MDgsMHg4MywweEE3LDB4
N0EsMHhGRiwweDdGLDB4RkYsMHhGOCwweEE3LDB4N0EsMHg4NCwweDUxLDB4RjgsMHg3QSwweDc4
LDB4NUUsCi0gICAgMHhBNCwweDU5LDB4MjMsMHg0MSwweDc4LDB4RkEsMHhGRiwweDU3LDB4ODQs
MHg0OSwweDIzLDB4NDksMHhBQiwweDJELDB4OUMsMHhGRCwKLSAgICAweEM1LDB4NTksMHg2NCww
eDUxLDB4QkEsMHhCRiwweDNCLDB4RkQsMHhDNSwweDYxLDB4ODQsMHg1OSwweDNFLDB4QkYsMHhB
QiwweEJCLAotICAgIDB4MjYsMHg3MiwweEM1LDB4NjEsMHhBNSwweEFCLDB4MDksMHgwOSwweEU4
LDB4OEEsMHgyNiwweDcyLDB4QkQsMHhBRiwweDBGLDB4QUIsCi0gICAgMHhFOSwweDkyLDB4QTgs
MHg4QSwweDJCLDB4ODMsMHhBQSwweEVDLDB4QzgsMHg5MiwweDQ2LDB4N0EsMHhFOCwweEY4LDB4
RkUsMHg3RSwKLSAgICAweDg4LDB4ODIsMHgwNSwweDcyLDB4QjAsMHhERSwweDdGLDB4RkUsMHg0
NiwweDdBLDB4RTUsMHg2OSwweEVBLDB4QkEsMHg3RiwweEVDLAotICAgIDB4MjYsMHg3MiwweEM1
LDB4NjksMHgwMCwweDBBLDB4M0UsMHhERSwweDI2LDB4NzIsMHhDNSwweDYxLDB4ODgsMHhFOCww
eEZBLDB4QkYsCi0gICAgMHgyNiwweDcyLDB4ODQsMHg1OSwweDAwLDB4RkUsMHhGQiwweDdFLDB4
MjYsMHg3MiwweDg0LDB4NTksMHhFOCwweEJFLDB4NUYsMHg1RCwKLSAgICAweEE1LDB4NTksMHgy
MywweDQ5LDB4QUEsMHhGQywweDc4LDB4RUEsMHg2NCwweDUxLDB4MDIsMHg0OSwweDQ4LDB4RUEs
MHhDRiwweDgwLAotICAgIDB4ODQsMHg1MSwweDAzLDB4NDksMHhERCwweEJCLDB4RUEsMHgyQSww
eDY0LDB4NDksMHgyMywweDQ5LDB4RkYsMHg1QywweERGLDB4OTcsCi0gICAgMHg0MywweDQ5LDB4
MDIsMHg0OSwweDI4LDB4RTgsMHhFQSwweDAwLDB4QzUsMHg1OSwweDIzLDB4NDksMHhBRiwweDJE
LDB4QkYsMHgwOSwKLSAgICAweDI3LDB4NkEsMHhBNCwweDU5LDB4RkQsMHhCRCwweEE5LDB4MkUs
MHg0NywweDZBLDB4RTUsMHg2MSwweDhELDB4MDIsMHhCMCwweEZGLAotICAgIDB4NjcsMHg3Miww
eEU1LDB4NjEsMHg4MCwweEYyLDB4N0IsMHhERCwweDQ2LDB4NzIsMHhDNSwweDYxLDB4N0UsMHhF
MiwweEFBLDB4RkEsCi0gICAgMHhBNSwweDU5LDB4NDMsMHg0OSwweDdFLDB4RDgsMHg1MCwweDcw
LDB4QTUsMHg1OSwweDAyLDB4NDEsMHhGRiwweEI3LDB4MkYsMHgwQiwKLSAgICAweEM1LDB4NjEs
MHg0NCwweDUxLDB4QUQsMHhBQiwweEEyLDB4MDgsMHg2NywweDdBLDB4QTUsMHg2MSwweDJELDB4
MEQsMHhCRCwweEI5LAotICAgIDB4ODcsMHg4MiwweDI2LDB4NzIsMHg1RiwweDU3LDB4QUYsMHg4
MSwweDJBLDB4OTMsMHgyNiwweDcyLDB4QUQsMHgyRCwweDJELDB4QUYsCi0gICAgMHgyQSwweDkz
LDB4QzcsMHg4QSwweEVBLDB4NjAsMHhFOCwweDYyLDB4QzgsMHg4QSwweDI3LDB4NzIsMHhGRSww
eEY4LDB4RjgsMHg1OCwKLSAgICAweEU5LDB4OEEsMHg0NywweDdBLDB4QkQsMHgzNSwweDJELDB4
M0QsMHhFOSwweDhBLDB4NDYsMHg3MiwweEJGLDB4RkUsMHhGOCwweDYwLAotICAgIDB4QTgsMHg4
MiwweDA2LDB4NkEsMHgyMCwweDIyLDB4QkEsMHg1RiwweEE4LDB4N0EsMHhDNSwweDYxLDB4ODgs
MHhBQSwweEVFLDB4RDUsCi0gICAgMHhDOCwweDgyLDB4MDYsMHg2QSwweDAyLDB4MDIsMHgyQiww
eEI1LDB4MkEsMHg4QiwweDg3LDB4N0EsMHgyRSwweDJFLDB4M0YsMHg5NSwKLSAgICAweEIzLDB4
REQsMHg2QiwweDkzLDB4MEIsMHgyRCwweDM1LDB4RjUsMHg1NiwweEVFLDB4OTMsMHhERCwweDAw
LDB4MDIsMHgwQiwweDA5LAotICAgIDB4NzYsMHhFRSwweDM1LDB4RTYsMHhCQSwweEY4LDB4Qjgs
MHhGRSwweEI3LDB4RjYsMHg1NSwweEVFLDB4MkQsMHgyRCwweDJELDB4QUQsCi0gICAgMHhGNyww
eEZFLDB4QjcsMHhGNiwweDAyLDB4MEIsMHgwMywweDhCLDB4RDYsMHhGRSwweEY4LDB4RjYsMHhG
RCwweEQ1LDB4N0QsMHhGRCwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4MDIsMHgwQSwweDBE
LDB4MkQsMHgxOCwweEZGLDB4RjgsMHhGNiwweDAwLDB4ODAsMHg4MCwweEEwLAotICAgIDB4MTgs
MHhGRiwweEY4LDB4RjYsMHg4MiwweEEwLDB4Q0EsMHhBQSwweDE4LDB4RkYsMHhGOCwweEY2LDB4
RkYsMHhENywweEZELDB4N0YsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDVFLDB4NUIsMHhE
RiwweEQ1LDB4RDcsMHhGRSwweEY4LDB4RjYsMHg1QiwweDVGLDB4NTcsMHg3NSwKLSAgICAweEY3
LDB4RjYsMHhEOCwweEY2LDB4OUMsMHhBMCwweDJBLDB4QUEsMHhENywweEZFLDB4RjcsMHhGNiww
eERGLDB4REQsMHhERiwweEZGLAotICAgIDB4RDgsMHhGRSwweEY3LDB4RjYsMHg1NywweDVELDB4
NUYsMHhGRiwweDE4LDB4RkYsMHhGNywweEY2LDB4NTUsMHhENSwweEZGLDB4RkQsCi0gICAgMHgx
OCwweEZGLDB4RjcsMHhGNiwweDU3LDB4REQsMHgzNiwweEFGLDB4MTgsMHhGRiwweEY4LDB4RjYs
MHhFMywweEFBLDB4RUMsMHhGQSwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4QUYsMHhBQiww
eEFCLDB4QUIsMHgxOCwweEZGLDB4RjgsMHhGNiwweEZGLDB4REUsMHhGRiwweEVBLAotICAgIDB4
MTgsMHhGRiwweEY4LDB4RjYsMHhGRiwweDdGLDB4NUYsMHhGRSwweDE4LDB4RkYsMHhEOCwweEY2
LDB4QUEsMHhCQSwweEYyLDB4RkEsCi0gICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweDIwLDB4Qjgs
MHhGQiwweDVGLDB4RjgsMHhGNiwweEI3LDB4RUUsMHhBMCwweENBLDB4RUUsMHg1RSwKLSAgICAw
eEQ3LDB4RjYsMHg5NiwweEVFLDB4NzgsMHhGQSwweEZFLDB4RkUsMHhCNiwweEY2LDB4NzYsMHhF
RSwweEZBLDB4RUUsMHhGQSwweERFLAotICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHhFOCwweEVB
LDB4NzgsMHg3RSwweDk2LDB4RUUsMHg1NSwweEU2LDB4RUEsMHhGQSwweEFGLDB4MkQsCi0gICAg
MHg5NiwweEVFLDB4NzYsMHhFRSwweEZELDB4RkQsMHhFNywweDdCLDB4NzYsMHhFRSwweDU1LDB4
RUUsMHgzMCwweEEwLDB4MjAsMHhBRSwKLSAgICAweDc2LDB4RUUsMHg1NiwweEVFLDB4RkIsMHhB
QSwweEY4LDB4QkMsMHg3NiwweEVFLDB4NTUsMHhFRSwweEFGLDB4QjcsMHhFQSwweEU4LAotICAg
IDB4NzYsMHhFRSwweDU1LDB4RUUsMHg4MiwweDgwLDB4M0IsMHgyRCwweDc2LDB4RUUsMHg1NSww
eEVFLDB4RDcsMHg1MiwweDY4LDB4OTgsCi0gICAgMHg1NSwweEVFLDB4MzUsMHhFNiwweDU4LDB4
NzIsMHhFMCwweDIwLDB4NTUsMHhFRSwweDE0LDB4RTYsMHgwQiwweDE1LDB4OUYsMHg5QywKLSAg
ICAweDk2LDB4RUUsMHgzNSwweEVFLDB4QTIsMHhBQiwweEZGLDB4RTcsMHhCNywweEY2LDB4MzQs
MHhFNiwweDgyLDB4QUUsMHg3RiwweDU1LAotICAgIDB4QjcsMHhGNiwweDM1LDB4RTYsMHgyQSww
eEFFLDB4RkQsMHg1NSwweDk2LDB4RUUsMHg1NSwweEVFLDB4MjAsMHhBMCwweEQ3LDB4RDUsCi0g
ICAgMHg5NiwweEVFLDB4NTUsMHhFRSwweDIyLDB4MkUsMHgyRiwweDJBLDB4OTYsMHhGNiwweEYz
LDB4REQsMHg2OCwweDY4LDB4NjgsMHhGOCwKLSAgICAweDE0LDB4RTYsMHhEMywweERELDB4Qjcs
MHhFRiwweEFCLDB4QUEsMHgxNCwweEU2LDB4RDMsMHhERCwweEZGLDB4REIsMHhFNiwweEZCLAot
ICAgIDB4MTQsMHhFNiwweEQzLDB4REQsMHhGNywweDc1LDB4RjUsMHhBRSwweDE0LDB4RTYsMHhG
NCwweERELDB4NzksMHhDMywweEU5LDB4NkIsCi0gICAgMHhGNCwweEU1LDB4MzEsMHhDRCwweDgw
LDB4RTAsMHg3MCwweDcwLDB4MzEsMHhDNSwweEFGLDB4QkMsMHg1OCwweDVGLDB4QjcsMHhGRSwK
LSAgICAweEYwLDB4QzQsMHg4RSwweEI0LDB4NTcsMHhGQiwweEFFLDB4ODIsMHhGMCwweEM0LDB4
NEQsMHhBQywweERFLDB4RkYsMHhFQSwweEUyLAotICAgIDB4QUYsMHhCQywweDBDLDB4QTQsMHg1
RiwweEY2LDB4ODgsMHgwMCwweDhFLDB4QjQsMHhBQiwweDlCLDB4QkYsMHgyRSwweDI4LDB4QTgs
Ci0gICAgMHhEMCwweEJDLDB4OEUsMHhCNCwweEUzLDB4QUIsMHhGQiwweEJGLDB4MzEsMHhDNSww
eDhFLDB4QjQsMHgyQSwweEFELDB4RkQsMHhENywKLSAgICAweDcxLDB4Q0QsMHg2RSwweEI0LDB4
MDAsMHg4MCwweEZGLDB4NUYsMHgxMCwweEM1LDB4MkMsMHhBQywweDc4LDB4REMsMHg1NywweDk1
LAotICAgIDB4MzEsMHhDRCwweDhFLDB4QjQsMHgyOSwweDg5LDB4MEIsMHgwQiwweDMxLDB4Q0Qs
MHgxMCwweEM1LDB4M0MsMHgxNywweEQ3LDB4QUYsCi0gICAgMHg5MiwweEQ1LDB4MzEsMHhDRCww
eDhGLDB4MkQsMHhBNywweEE1LDB4OTIsMHhENSwweDUxLDB4Q0QsMHhCQiwweDE4LDB4QkEsMHhB
RSwKLSAgICAweDkyLDB4RDUsMHg1MSwweENELDB4QUEsMHhFRiwweDhFLDB4RjIsMHg5MiwweEQ1
LDB4NTEsMHhDRCwweDlFLDB4REUsMHhGQiwweEUyLAotICAgIDB4QzcsMHg3QSwweDY2LDB4NzIs
MHg4OSwweENCLDB4RkYsMHhGRiwweEE3LDB4N0EsMHg4NiwweDdBLDB4OTIsMHhBMiwweDlFLDB4
MEIsCi0gICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEEwLDB4RjAsMHgzOCwweEY4LDB4NjcsMHg3
QSwweDg2LDB4NzIsMHg1RCwweDVCLDB4REIsMHg3NSwKLSAgICAweEM3LDB4N0EsMHg4NiwweDcy
LDB4NTUsMHhGNywweEVCLDB4REYsMHhBNywweDdBLDB4NjYsMHg3MiwweDJBLDB4MEEsMHgyOCww
eDNFLAotICAgIDB4QTcsMHg3QSwweDY3LDB4NzIsMHg3QSwweEZFLDB4RkYsMHg4OCwweDg2LDB4
N0EsMHg2NSwweDZBLDB4MDIsMHgwOCwweEIyLDB4ODIsCi0gICAgMHhBNywweDdBLDB4NDUsMHg3
MiwweEY3LDB4RDcsMHhCQiwweDJDLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg3RSwweDY4LDB4QUEs
MHg4QSwKLSAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4RkYsMHhBMywweDA4LDB4MDgsMHg4Niww
eDdBLDB4NjYsMHg3MiwweEE1LDB4RkIsMHhFRCwweEZGLAotICAgIDB4ODYsMHg3QSwweDQ2LDB4
NzIsMHgwMiwweDVGLDB4NTcsMHg3RSwweEM4LDB4ODIsMHgyNSwweDZBLDB4MjIsMHhBRiwweEJG
LDB4REYsCi0gICAgMHhFOCwweDgyLDB4NDUsMHg3MiwweDBBLDB4ODAsMHhBRiwweDdELDB4RTgs
MHg4MiwweDg3LDB4N0EsMHhBMCwweDgyLDB4QTIsMHgzRiwKLSAgICAweEU5LDB4OEEsMHhDOCww
eDgyLDB4MkQsMHgzNywweERGLDB4REUsMHhFOCwweDhBLDB4QzgsMHg4MiwweDYyLDB4QzQsMHg2
QSwweEFFLAotICAgIDB4MDksMHg4QiwweEM4LDB4ODIsMHg1OSwweEYzLDB4RUQsMHgxNiwweEU4
LDB4OEEsMHhBOCwweDgyLDB4QUYsMHgyQiwweEZFLDB4QzgsCi0gICAgMHhFOCwweDhBLDB4QTcs
MHg4MiwweDNDLDB4MjgsMHgyMCwweEVELDB4RTgsMHg4QSwweEM4LDB4ODIsMHhCMCwweEM4LDB4
RTIsMHhDMSwKLSAgICAweEU4LDB4OEEsMHhDOCwweDgyLDB4NzgsMHg1RSwweDQwLDB4QkEsMHgw
OSwweDkzLDB4QTcsMHg4MiwweERGLDB4QUUsMHgyQSwweEU2LAotICAgIDB4RTgsMHg4QSwweEE3
LDB4ODIsMHgyOSwweDAwLDB4ODIsMHgwQiwweEU4LDB4OEEsMHhDOCwweDgyLDB4MEIsMHhERSww
eEE2LDB4RTgsCi0gICAgMHhFOCwweDgyLDB4NjYsMHg3MiwweEUwLDB4NzAsMHg3NCwweDdBLDB4
NjYsMHg3MiwweDg0LDB4NTEsMHg1OCwweDVFLDB4NUEsMHg3OCwKLSAgICAweDY0LDB4NTEsMHhF
MiwweDQwLDB4RkMsMHhGNiwweDdFLDB4RkUsMHg0NCwweDQ5LDB4RTIsMHgzOCwweDAyLDB4M0Ys
MHhCRiwweDU3LAotICAgIDB4ODQsMHg1MSwweEUyLDB4MzgsMHg4MiwweDJGLDB4RkYsMHhENSww
eEE0LDB4NTksMHgwMiwweDQxLDB4MDIsMHgyQiwweDJGLDB4MEQsCi0gICAgMHg0NiwweDcyLDB4
QzUsMHg2MSwweDBELDB4MEQsMHgyRiwweEE1LDB4QzgsMHg4QSwweDI1LDB4NzIsMHgwQiwweDBE
LDB4QUYsMHgyNSwKLSAgICAweDI5LDB4OTMsMHhBNywweDgyLDB4RkIsMHhCQiwweDA5LDB4QUYs
MHgwOSwweDkzLDB4NjcsMHg4MiwweDVFLDB4RUEsMHhBMCwweEU4LAotICAgIDB4ODgsMHg4Miww
eDA2LDB4NzIsMHhFQSwweEUwLDB4RkEsMHg3QywweDY3LDB4N0EsMHgyNiwweDcyLDB4NzIsMHhG
MiwweENELDB4QUQsCi0gICAgMHg0NywweDdBLDB4QTQsMHg2MSwweDdBLDB4N0EsMHhBMCwweEU4
LDB4RTYsMHg2OSwweDQ0LDB4NTEsMHgwQSwweEVBLDB4RDgsMHg3RSwKLSAgICAweEU1LDB4Njks
MHg0MywweDUxLDB4QTAsMHhBMywweDZCLDB4RDUsMHhBNSwweDYxLDB4MjMsMHg0OSwweEU4LDB4
RUIsMHg3QiwweDVBLAotICAgIDB4ODUsMHg1MSwweDAzLDB4NDksMHgyQSwweEJGLDB4REQsMHg3
RiwweDg1LDB4NTEsMHgwMywweDQ5LDB4QUEsMHgwRiwweEZGLDB4QkQsCi0gICAgMHg2NCwweDQ5
LDB4MjMsMHg0OSwweEEyLDB4ODgsMHg4MCwweDYzLDB4ODQsMHg1MSwweDAyLDB4NDEsMHhGNyww
eERGLDB4RkYsMHgyRiwKLSAgICAweEE1LDB4NTEsMHg0MywweDQ5LDB4RDUsMHhENSwweEE3LDB4
ODgsMHgwNiwweDYyLDB4ODQsMHg1MSwweDI1LDB4QkQsMHhFRCwweDVELAotICAgIDB4MDYsMHg2
MiwweDY0LDB4NTEsMHgyMCwweEI4LDB4RUIsMHhGRCwweDA2LDB4NjIsMHg4NCwweDUxLDB4MjAs
MHhBQiwweEE3LDB4RDUsCi0gICAgMHgwNiwweDYyLDB4QTUsMHg1MSwweEFCLDB4QUYsMHhDRiww
eERELDB4MDYsMHg2MiwweDg0LDB4NTEsMHg0MCwweENBLDB4RUIsMHg1RiwKLSAgICAweEE1LDB4
NTksMHgyMywweDQ5LDB4RkEsMHhGRSwweDlGLDB4M0YsMHgwNiwweDZBLDB4NjQsMHg1MSwweEI1
LDB4RjUsMHhCQiwweDhCLAotICAgIDB4RTUsMHg2OSwweEM1LDB4NjEsMHg1RSwweDdGLDB4N0Qs
MHhBRSwweDY3LDB4N0EsMHhDNSwweDYxLDB4NUYsMHhGNSwweEJELDB4MEIsCi0gICAgMHhBOCww
eDgyLDB4NDcsMHg3QSwweDI1LDB4MjUsMHhGNywweDdBLDB4RTksMHg4QSwweDQ3LDB4NzIsMHgy
QSwweDJBLDB4QkQsMHhERCwKLSAgICAweEU5LDB4OEEsMHg4OCwweDgyLDB4RTAsMHg1QSwweDU4
LDB4Q0IsMHhBOCwweDgyLDB4MjcsMHg3MiwweDU4LDB4N0UsMHhCQywweEZBLAotICAgIDB4ODgs
MHg3QSwweDI2LDB4NzIsMHgyRiwweERGLDB4RjUsMHhFNSwweEE4LDB4ODIsMHhDNCwweDYxLDB4
QTAsMHhBQSwweEVBLDB4N0EsCi0gICAgMHgwNiwweDZBLDB4RTIsMHg0MCwweEEwLDB4QTgsMHhG
QSwweDdFLDB4QzYsMHg2MSwweDIzLDB4NDksMHgyQSwweDBGLDB4MkQsMHhCNSwKLSAgICAweDQ3
LDB4NzIsMHhBNSwweDU5LDB4MEEsMHhBRiwweERGLDB4RjUsMHhDOCwweDgyLDB4RTUsMHg2MSww
eDBBLDB4MkYsMHgyRCwweEFELAotICAgIDB4MkUsMHhBQywweDg4LDB4N0EsMHgyRiwweDJGLDB4
QkQsMHhGNSwweEY0LDB4RTUsMHg2QSwweDlCLDB4MDIsMHgwQiwweDBGLDB4QjUsCi0gICAgMHg1
NSwweEVFLDB4NTIsMHhENSwweDAwLDB4MDAsMHhBQSwweEJELDB4QjcsMHhGRSwweDE0LDB4RTYs
MHgyQiwweDBCLDB4MkYsMHgyRCwKLSAgICAweEY4LDB4RkUsMHhCNywweEZFLDB4MEIsMHgyQiww
eDJBLDB4MkIsMHhGOCwweEZFLDB4QjcsMHhGNiwweEE4LDB4QUEsMHgzRSwweDlFLAotICAgIDB4
MTgsMHhGRiwweEI4LDB4RjYsMHgwQSwweDBBLDB4MkEsMHg4QiwweDE4LDB4RkYsMHhGOCwweEY2
LDB4QTIsMHg4MCwweDgwLDB4ODAsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEEyLDB4OEUs
MHhGQSwweEVBLDB4MTcsMHhGRiwweEY4LDB4RjYsMHg3RSwweEZGLDB4RkYsMHhGRiwKLSAgICAw
eEQ4LDB4RkUsMHhGNywweEY2LDB4NTYsMHg3RiwweDc3LDB4NzUsMHhGNywweEZFLDB4RjgsMHhG
NiwweEZGLDB4RkYsMHhFRiwweEZCLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBQiwweDhC
LDB4RTIsMHhCMCwweEY3LDB4RjYsMHhEOCwweEY2LDB4QTgsMHgwRSwweDJBLDB4OEUsCi0gICAg
MHhGOCwweEZFLDB4RjcsMHhGNiwweEZGLDB4RkYsMHhCRiwweEZGLDB4MTgsMHhGRiwweEQ3LDB4
RjYsMHhGRiwweEVCLDB4RUEsMHhBQSwKLSAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4RkIsMHhG
RCwweEZGLDB4N0YsMHhGOCwweEZFLDB4MTgsMHhGNywweEFFLDB4QUEsMHhFQSwweEJFLAotICAg
IDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGQiwweEZFLDB4RkUsMHhERiwweEY4LDB4RkUsMHgxOCww
eEY3LDB4QUEsMHhCOCwweEFBLDB4QUEsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEZGLDB4
N0YsMHg1RSwweDc2LDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGQSwweEZBLDB4RkUsMHhFRiwKLSAg
ICAweEY3LDB4RjYsMHhENywweEY2LDB4NzYsMHg3RSwweEJGLDB4NzcsMHhENywweEY2LDB4Qjcs
MHhGNiwweDdDLDB4NzAsMHhBMCwweEY4LAotICAgIDB4QjcsMHhGNiwweDk2LDB4RUUsMHhFOCww
eEVFLDB4NzgsMHhGMCwweDk2LDB4RUUsMHg3NiwweEVFLDB4RDgsMHhGMCwweDdCLDB4NTYsCi0g
ICAgMHg3NSwweEVFLDB4MzUsMHhFNiwweEY4LDB4N0UsMHhFQSwweEZBLDB4NzUsMHhFRSwweDM1
LDB4RTYsMHgwQiwweEFCLDB4QkYsMHhGRCwKLSAgICAweDU1LDB4RUUsMHg3NiwweEU2LDB4QkQs
MHgwMiwweDAyLDB4MjIsMHg3NiwweEVFLDB4NTUsMHhFRSwweENFLDB4REUsMHhENSwweEQ1LAot
ICAgIDB4NzYsMHhFRSwweDU1LDB4RUUsMHhGRiwweDg3LDB4M0EsMHhGMiwweDc1LDB4RUUsMHg1
NiwweEVFLDB4RkIsMHhFRiwweEY3LDB4NTUsCi0gICAgMHg3NiwweEVFLDB4NTUsMHhFRSwweEFE
LDB4QkQsMHhGOSwweEIwLDB4NzYsMHhFRSwweDU1LDB4RUUsMHg2OCwweEVCLDB4MkEsMHhCRSwK
LSAgICAweDc2LDB4RUUsMHgxNCwweEU2LDB4RUEsMHhBMCwweDJBLDB4MjAsMHg1NSwweEVFLDB4
MTQsMHhFNiwweEUwLDB4RjAsMHhGMCwweEYwLAotICAgIDB4NTUsMHhFRSwweDE0LDB4RTYsMHhB
QiwweEY5LDB4RDUsMHhGRiwweDM1LDB4RTYsMHgxNCwweEU2LDB4RkEsMHhENywweEI0LDB4Rjgs
Ci0gICAgMHg1NSwweEVFLDB4MTQsMHhFNiwweEJCLDB4M0YsMHhCQiwweDNGLDB4OTYsMHhGNiww
eDU1LDB4RTYsMHg5RCwweEFGLDB4MEIsMHgyMiwKLSAgICAweDk2LDB4RjYsMHg3NSwweEVFLDB4
ODksMHhBQiwweEMwLDB4RTAsMHg5NiwweEY2LDB4RjMsMHhERCwweDc4LDB4NUUsMHg1QywweDVF
LAotICAgIDB4MTQsMHhFNiwweEQzLDB4REQsMHhBRiwweDNGLDB4OTUsMHhBRCwweDM0LDB4RTYs
MHhGNCwweEU1LDB4REQsMHg4QiwweDhGLDB4QjcsCi0gICAgMHgzNSwweEU2LDB4RjMsMHhERCww
eEZFLDB4RUUsMHhCOCwweDdBLDB4MTQsMHhFNiwweEY0LDB4REQsMHhCMiwweDIwLDB4MjAsMHhG
OSwKLSAgICAweDE0LDB4RTYsMHgzMSwweENELDB4NzgsMHg2OCwweEY4LDB4NzgsMHg1MSwweENE
LDB4RjAsMHhDNCwweDVGLDB4NTUsMHg1QywweDdBLAotICAgIDB4RjAsMHhDNCwweENGLDB4QkMs
MHgwQSwweDAzLDB4NjksMHg0MiwweEYwLDB4QzQsMHhBRiwweEJDLDB4RUEsMHhFRiwweEY0LDB4
NzcsCi0gICAgMHhEMCwweEM0LDB4QUUsMHhCNCwweEJELDB4MkYsMHgyQSwweDgzLDB4Q0YsMHhC
QywweEVDLDB4QTMsMHhGOCwweDU4LDB4NzgsMHg2MCwKLSAgICAweENGLDB4QkMsMHhFQywweEEz
LDB4ODIsMHhBQiwweEFGLDB4QUQsMHhBRiwweEJDLDB4MkQsMHhBQywweEE4LDB4RUUsMHg3Riww
eDVGLAotICAgIDB4OEUsMHhCNCwweEVDLDB4QTMsMHhBMCwweEVCLDB4RkUsMHg3NywweENGLDB4
QkMsMHhFQywweDlCLDB4QkYsMHhCRCwweDNGLDB4M0QsCi0gICAgMHgzMSwweENELDB4RDAsMHhC
QywweDJELDB4MkIsMHg4QiwweDhFLDB4MzEsMHhDRCwweDEwLDB4QzUsMHgyNCwweEY0LDB4RDcs
MHg2QiwKLSAgICAweDcyLDB4RDUsMHgxMCwweEM1LDB4MkIsMHgyQiwweEZELDB4RkYsMHg3Miww
eEQ1LDB4MzEsMHhDRCwweEE4LDB4QTIsMHhBNCwweEZGLAotICAgIDB4OTIsMHhENSwweDMxLDB4
Q0QsMHhBQSwweDgzLDB4RkUsMHhEQiwweDkyLDB4RDUsMHgzMSwweENELDB4QTIsMHhGQSwweEFE
LDB4RjksCi0gICAgMHhBNywweDdBLDB4NDUsMHg2QSwweDI4LDB4QUYsMHgzRiwweEQ1LDB4Qzcs
MHg3QSwweDY1LDB4NkEsMHgyQSwweEJBLDB4QUUsMHhEQiwKLSAgICAweEE3LDB4N0EsMHg2Niww
eDcyLDB4QTgsMHhFQSwweEFBLDB4RUQsMHhBNywweDdBLDB4ODYsMHg3MiwweDU2LDB4QkYsMHhB
MiwweEMyLAotICAgIDB4QzcsMHg3QSwweDg2LDB4NzIsMHhGRiwweDdFLDB4RkIsMHhBQiwweEM3
LDB4N0EsMHg2NiwweDcyLDB4QjcsMHhCMywweEJCLDB4REUsCi0gICAgMHhBNywweDdBLDB4ODcs
MHg3MiwweEFBLDB4MzgsMHhCQSwweEJFLDB4QzgsMHg4MiwweDY2LDB4NzIsMHhFNSwweEJGLDB4
MEIsMHhBQSwKLSAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4RkYsMHhFMiwweEYwLDB4MEEsMHhD
NywweDgyLDB4NjYsMHg3MiwweEZFLDB4RTIsMHhFQiwweEI2LAotICAgIDB4QTcsMHg3QSwweDQ2
LDB4NzIsMHg4RSwweEVCLDB4QUEsMHg5QSwweEE3LDB4N0EsMHg2NiwweDcyLDB4RDMsMHhENyww
eEJCLDB4QUUsCi0gICAgMHg4NywweDdBLDB4NDUsMHg3MiwweDZBLDB4QjgsMHgyOCwweDAwLDB4
ODcsMHg3QSwweDQ1LDB4NzIsMHg3QiwweEUzLDB4NzIsMHhDMCwKLSAgICAweDg2LDB4N0EsMHg0
NSwweDcyLDB4RkQsMHgyNSwweEZCLDB4REYsMHg4NywweDdBLDB4MjUsMHg2QSwweDNGLDB4Qjcs
MHhBNywweEEyLAotICAgIDB4QzgsMHg4MiwweDQ1LDB4NzIsMHgwMywweDI3LDB4RjUsMHhGNyww
eEU4LDB4OEEsMHg0NiwweDcyLDB4ODgsMHhBQSwweDNGLDB4NTUsCi0gICAgMHhFOCwweDhBLDB4
NjYsMHg3MiwweDJBLDB4QTAsMHhBQSwweEJELDB4RTgsMHg4MiwweEE3LDB4ODIsMHg4QSwweDZG
LDB4ODksMHhCQiwKLSAgICAweEU4LDB4ODIsMHhBNywweDdBLDB4NzcsMHg2RCwweDJCLDB4QUEs
MHgwOCwweDhCLDB4QTcsMHg4MiwweEZELDB4RjUsMHhCRiwweDFFLAotICAgIDB4RTgsMHg4QSww
eEM4LDB4ODIsMHhGQiwweDVFLDB4RUIsMHg2MiwweDA4LDB4OEIsMHhBNywweDgyLDB4QTYsMHg4
QiwweEFCLDB4NkQsCi0gICAgMHhFOCwweDgyLDB4QTgsMHg4MiwweEFDLDB4QkIsMHhGQSwweEZB
LDB4RTgsMHg4MiwweDg3LDB4N0EsMHg2QSwweDY4LDB4MkEsMHgwMiwKLSAgICAweEU4LDB4ODIs
MHg4NiwweDcyLDB4N0YsMHhFQSwweEZDLDB4RTgsMHhBNywweDdBLDB4ODMsMHg1MSwweDdFLDB4
NzgsMHg3OCwweDc4LAotICAgIDB4NDMsMHg0OSwweEUyLDB4MzgsMHhGRSwweEZDLDB4N0EsMHhG
QywweDAzLDB4NDEsMHhFMiwweDM4LDB4RkUsMHg5RSwweDVELDB4NzcsCi0gICAgMHhFMiwweDM4
LDB4ODEsMHgzMCwweEFBLDB4REEsMHhBQSwweEFDLDB4NjQsMHg1MSwweEMyLDB4MzgsMHgwRiww
eDJELDB4RjUsMHg1NSwKLSAgICAweEU1LDB4NjksMHgwMywweDQ5LDB4MDIsMHgwQSwweEFGLDB4
QkQsMHg4NywweDgyLDB4QTQsMHg2MSwweDJCLDB4QUYsMHhGNSwweDU1LAotICAgIDB4MDksMHg5
MywweDI2LDB4NzIsMHgyQSwweDJCLDB4RkYsMHhENSwweDA5LDB4OTMsMHgyNywweDdBLDB4RTgs
MHg2QSwweERGLDB4NTcsCi0gICAgMHg4OCwweDgyLDB4MDYsMHg3MiwweEZFLDB4REQsMHg5RSww
eDIyLDB4NjcsMHg3QSwweDA2LDB4NkEsMHhFRiwweEZGLDB4N0UsMHg1OCwKLSAgICAweDA2LDB4
NkEsMHhDNSwweDY5LDB4NjgsMHg1QywweDdGLDB4OTcsMHgyNiwweDcyLDB4ODQsMHg1OSwweDU3
LDB4N0YsMHhCQSwweDBBLAotICAgIDB4RTUsMHg2OSwweDQzLDB4NTEsMHhGNSwweEJGLDB4QkEs
MHhBMCwweEM1LDB4NjEsMHgyMywweDQ5LDB4N0UsMHhGRSwweEY4LDB4RTgsCi0gICAgMHg0Myww
eDQ5LDB4MDMsMHg0OSwweEVBLDB4QUUsMHhFQywweDlFLDB4NDMsMHg0OSwweDAyLDB4NDEsMHgw
RCwweDhBLDB4MEEsMHgwMCwKLSAgICAweDY0LDB4NDksMHgyMywweDQ5LDB4RUIsMHhBQiwweDNB
LDB4OEEsMHg4NSwweDUxLDB4MjMsMHg0MSwweDJCLDB4MEUsMHhCRSwweDU3LAotICAgIDB4QTUs
MHg1OSwweDAzLDB4NDEsMHg4MCwweEEyLDB4RkUsMHg3NSwweDY0LDB4NDksMHgyMywweDQxLDB4
MDAsMHhGNCwweDdGLDB4NjUsCi0gICAgMHg4NCwweDUxLDB4MjMsMHg0MSwweEYyLDB4RUYsMHhC
RiwweERELDB4ODQsMHg1MSwweDIzLDB4NDEsMHgwQSwweDdFLDB4REUsMHhGRiwKLSAgICAweEE1
LDB4NTksMHgyMywweDQxLDB4MEEsMHgyQSwweEQ3LDB4NTUsMHhDNSwweDU5LDB4MDMsMHg0MSww
eEM4LDB4RkEsMHhGNSwweDU1LAotICAgIDB4RTYsMHg2MSwweDQzLDB4NDksMHhCNSwweDNGLDB4
M0QsMHgyRCwweDY3LDB4N0EsMHhFNiwweDY5LDB4QUYsMHgwRCwweEE4LDB4QjksCi0gICAgMHg2
NywweDdBLDB4MDYsMHg2QSwweDVGLDB4RUMsMHg4QiwweEEwLDB4QzgsMHg4MiwweDI2LDB4NzIs
MHhCRCwweEJELDB4MkQsMHhFQSwKLSAgICAweEVBLDB4OEEsMHg0NywweDcyLDB4N0EsMHhGQSww
eEU4LDB4RjgsMHg2NywweDdBLDB4QzYsMHg2OSwweDhBLDB4QkIsMHhGOCwweDc4LAotICAgIDB4
QzksMHg4QSwweEU1LDB4NjksMHg4QSwweEFCLDB4REYsMHg3NSwweDY4LDB4N0EsMHhDNSwweDYx
LDB4MDAsMHgwMCwweDhBLDB4RkQsCi0gICAgMHg2OCwweDdBLDB4QzUsMHg1OSwweDg4LDB4RTAs
MHhFQSwweDdFLDB4NDcsMHg3MiwweDAzLDB4NDksMHhBMCwweEVBLDB4RkEsMHg1RiwKLSAgICAw
eDY0LDB4NTEsMHgwMiwweDQxLDB4NTgsMHg3RSwweEVFLDB4QkYsMHhBNSwweDU5LDB4MDMsMHg0
OSwweEFELDB4MkQsMHgyRiwweDJGLAotICAgIDB4RTUsMHg2MSwweDg1LDB4NTEsMHhFRiwweEE1
LDB4MkIsMHhBQSwweDQ3LDB4NzIsMHhDNCwweDYxLDB4MDksMHg4RiwweEVFLDB4QkEsCi0gICAg
MHhBOCwweDdBLDB4MDUsMHg2QSwweDBCLDB4RkYsMHhGNSwweEJELDB4QUMsMHhBMywweDQ2LDB4
NzIsMHgyRiwweEJELDB4RkQsMHhGRiwKLSAgICAweDExLDB4Q0QsMHg0NiwweDcyLDB4MDIsMHhB
RiwweEZGLDB4NUYsMHg5MywweERELDB4ODcsMHg3QSwweDAwLDB4MkEsMHhGRiwweDU1LAotICAg
IDB4QjcsMHhGRSwweDZBLDB4OUIsMHgwMCwweEFBLDB4RkYsMHg1NSwweDk3LDB4RjYsMHg0RCww
eEI0LDB4MDAsMHgwMCwweEJGLDB4RDUsCi0gICAgMHhGOCwweEZFLDB4OTIsMHhENSwweDAwLDB4
MDIsMHgwQiwweDJELDB4MTgsMHhGRiwweEY4LDB4RkUsMHhCRiwweEJFLDB4QjcsMHhENSwKLSAg
ICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RUEsMHhFQSwweEJFLDB4QjcsMHgxOCwweEZGLDB4Rjgs
MHhGNiwweEY3LDB4RkYsMHhGQSwweEFFLAotICAgIDB4RjgsMHhGRSwweEY3LDB4RjYsMHhGRiww
eEJGLDB4RkYsMHhGRiwweDE4LDB4RkYsMHhEOCwweEY2LDB4RUEsMHhFRSwweEZBLDB4NkUsCi0g
ICAgMHhGOCwweEY2LDB4RDcsMHhGNiwweEE4LDB4QkUsMHhBRSwweEFFLDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHgzQiwweEFCLDB4QUMsMHgyMiwKLSAgICAweEQ4LDB4RkUsMHgxNywweEY3LDB4RUEs
MHhGQSwweEJGLDB4RkYsMHgxOCwweEZGLDB4RjcsMHhGNiwweEQ3LDB4QkQsMHhBRiwweEFCLAot
ICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhGRiwweEZBLDB4RUIsMHhFQSwweDE4LDB4RkYsMHhG
OCwweEY2LDB4RkUsMHhGRSwweEJGLDB4RjcsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEZG
LDB4NzgsMHhFQSwweDZBLDB4RjgsMHhGRSwweDE4LDB4RjcsMHhBQiwweEFFLDB4OEEsMHhBOCwK
LSAgICAweDE4LDB4RkYsMHhEOCwweEY2LDB4QTksMHhBRSwweEFFLDB4RUEsMHhGNywweEY2LDB4
QjcsMHhGNiwweEEwLDB4RTgsMHg2OCwweDdBLAotICAgIDB4RDcsMHhGNiwweEI3LDB4RjYsMHgw
MCwweEEyLDB4QTksMHgwRCwweEQ3LDB4RjYsMHhCNywweEY2LDB4REMsMHg1NSwweDc2LDB4NTYs
Ci0gICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweEY4LDB4RkMsMHg3RSwweDU2LDB4OTYsMHhFRSww
eDc2LDB4RUUsMHg1RSwweEJBLDB4ODAsMHhBOCwKLSAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4
NUYsMHhGRiwweEFFLDB4QTIsMHg1NSwweEVFLDB4MzUsMHhFNiwweEZFLDB4RkYsMHhGRSwweDE4
LAotICAgIDB4NzYsMHhFRSwweDU1LDB4RUUsMHhFRiwweEVBLDB4QUEsMHgwMSwweDc2LDB4RUUs
MHg1NSwweEVFLDB4QUQsMHgyOSwweDAwLDB4QTAsCi0gICAgMHhCNSwweEY2LDB4NTYsMHhFRSww
eDVGLDB4RkYsMHg3RCwweEVGLDB4NzYsMHhFRSwweDU1LDB4RUUsMHg5NSwweDU1LDB4N0QsMHhG
NywKLSAgICAweDc2LDB4RUUsMHg1NSwweEVFLDB4RkEsMHhGOCwweDI3LDB4MzcsMHg3NiwweEVF
LDB4NTUsMHhFRSwweDlBLDB4QjIsMHhCQSwweEFBLAotICAgIDB4NzYsMHhFRSwweDU1LDB4RUUs
MHhGOCwweDc4LDB4RkIsMHhENywweDc1LDB4RUUsMHgxNSwweEU2LDB4RUEsMHhBQSwweEE4LDB4
MDgsCi0gICAgMHg1NSwweEVFLDB4MTUsMHhFNiwweEZBLDB4RkUsMHhGQywweEJFLDB4NTUsMHhF
RSwweDM1LDB4RTYsMHg1RCwweEVCLDB4MkYsMHgzRiwKLSAgICAweDU1LDB4RUUsMHgzNCwweEU2
LDB4MTUsMHhFNSwweEUwLDB4NDAsMHg5NiwweEY2LDB4MzUsMHhFNiwweDAzLDB4QUIsMHgyOSww
eEU1LAotICAgIDB4OTYsMHhGNiwweDM1LDB4RTYsMHg4OCwweEYyLDB4RkEsMHg3RiwweDc1LDB4
RUUsMHhEMywweERELDB4NTgsMHg3QSwweDVFLDB4NTYsCi0gICAgMHgxNCwweEU2LDB4QjMsMHhE
NSwweEFCLDB4M0QsMHhBRiwweERGLDB4MzQsMHhFNiwweEY0LDB4RTUsMHhGRiwweEVCLDB4QUYs
MHhBRCwKLSAgICAweDM1LDB4RTYsMHhEMywweERELDB4N0EsMHg3QSwweDdBLDB4OEEsMHgxNSww
eEU2LDB4QjMsMHhENSwweEJCLDB4RDUsMHhGNywweEU4LAotICAgIDB4RDMsMHhERCwweDMwLDB4
Q0QsMHhFMCwweDYwLDB4NzgsMHg2MCwweDUxLDB4Q0QsMHhGMCwweEM0LDB4RTgsMHg3RSwweDdG
LDB4RkUsCi0gICAgMHgxMCwweEM1LDB4QUUsMHhCQywweEZCLDB4RkYsMHg1RiwweEI4LDB4RjAs
MHhCQywweEFGLDB4QkMsMHhENSwweDlFLDB4QTMsMHhBRSwKLSAgICAweDEwLDB4QzUsMHhDRiww
eEJDLDB4RkIsMHhGOSwweEE5LDB4OTIsMHgzMSwweENELDB4MkQsMHhBQywweDdBLDB4RTIsMHg4
MiwweDAwLAotICAgIDB4MTEsMHhDNSwweEFCLDB4OUIsMHhCNywweEZGLDB4N0EsMHg2MCwweDJE
LDB4QUMsMHgwOSwweDhCLDB4ODAsMHhBQSwweEZGLDB4RjcsCi0gICAgMHhFQywweEEzLDB4NEEs
MHg4QiwweEU4LDB4RkEsMHhERiwweDU1LDB4RDAsMHhCQywweDhDLDB4OUIsMHgyRCwweDJELDB4
MEQsMHgyRCwKLSAgICAweDEwLDB4QzUsMHhDRiwweEJDLDB4MDIsMHgwQiwweDBCLDB4OUQsMHgx
MCwweEM1LDB4RjAsMHhDNCwweDAyLDB4OEMsMHg3NiwweDY3LAotICAgIDB4NTEsMHhDRCwweEYw
LDB4QzQsMHhCQSwweDJGLDB4M0YsMHhCRCwweDUxLDB4Q0QsMHgzMSwweENELDB4ODMsMHhBNyww
eEQ3LDB4QjcsCi0gICAgMHg3MiwweEQ1LDB4MzEsMHhDRCwweEEyLDB4RUYsMHhERiwweDc3LDB4
NzIsMHhENSwweDMwLDB4Q0QsMHhCQiwweEVBLDB4RkUsMHg1NSwKLSAgICAweDQ2LDB4NkEsMHgw
NSwweDZBLDB4MkIsMHhBQiwweEFCLDB4RkYsMHg4NiwweDcyLDB4RTQsMHg2MSwweDNFLDB4Qjcs
MHhGRiwweEZFLAotICAgIDB4QTcsMHg3QSwweDA1LDB4NkEsMHg4QSwweENGLDB4N0YsMHg3RCww
eEE3LDB4N0EsMHgwNSwweDYyLDB4ODIsMHgyMiwweEFCLDB4RkQsCi0gICAgMHhBNywweDdBLDB4
NDYsMHg2QSwweDAyLDB4MjAsMHhCMiwweDNELDB4QzcsMHg3QSwweDY3LDB4NzIsMHhCNCwweDlB
LDB4RkMsMHhFQSwKLSAgICAweEE3LDB4N0EsMHg0NiwweDcyLDB4MDIsMHgwMCwweEEyLDB4NjAs
MHhDOCwweDdBLDB4NjYsMHg3MiwweEY4LDB4RkEsMHg3RiwweEZCLAotICAgIDB4QzcsMHg4Miww
eDY2LDB4NzIsMHhCRiwweEE3LDB4M0YsMHhCRiwweEM3LDB4N0EsMHg4NiwweDdBLDB4RDUsMHg3
OSwweDc3LDB4RjcsCi0gICAgMHhBNywweDdBLDB4NDYsMHg3MiwweDlGLDB4RUUsMHg4MCwweDI4
LDB4QTcsMHg3QSwweDY2LDB4NzIsMHhCQSwweEU3LDB4MUYsMHgyMywKLSAgICAweEE3LDB4N0Es
MHg4NywweDdBLDB4M0UsMHg5QywweDlCLDB4RTksMHhBNywweDdBLDB4NjYsMHg3MiwweDdBLDB4
NTcsMHhCQywweEI0LAotICAgIDB4NjYsMHg3QSwweEE3LDB4NzIsMHgyRSwweEJFLDB4QkUsMHhB
RSwweEM3LDB4ODIsMHg0NiwweDcyLDB4NUYsMHhFRiwweEFCLDB4MkIsCi0gICAgMHhBNywweDdB
LDB4NjYsMHg3MiwweDVGLDB4REUsMHhEQywweEMyLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg3QSww
eDc4LDB4RkYsMHhBMywKLSAgICAweEE3LDB4ODIsMHg0NiwweDcyLDB4QkQsMHhENywweEFGLDB4
OEEsMHhBNywweDgyLDB4NDYsMHg3MiwweDIyLDB4QkIsMHg3RiwweEY5LAotICAgIDB4RTgsMHg4
QSwweDQ2LDB4NzIsMHgwMiwweEFFLDB4RjcsMHg3NSwweDA5LDB4OEIsMHg2NiwweDcyLDB4ODIs
MHhBQSwweEJCLDB4RDUsCi0gICAgMHgwOSwweDhCLDB4ODcsMHg3QSwweDhBLDB4RUYsMHhBRiww
eEZELDB4RTgsMHg4MiwweEE3LDB4N0EsMHg3RSwweDJGLDB4MEIsMHgwQiwKLSAgICAweDI5LDB4
OEIsMHhDOCwweDgyLDB4RDUsMHg5RCwweEJGLDB4RjIsMHgwOCwweDhCLDB4QTcsMHg3QSwweEFB
LDB4QTIsMHhFMCwweERBLAotICAgIDB4RTgsMHg4MiwweEE3LDB4N0EsMHhFOCwweEJGLDB4QUUs
MHhCRSwweEM3LDB4N0EsMHhBMywweDU5LDB4NzgsMHhFMCwweEEwLDB4ODAsCi0gICAgMHgwNSww
eDYyLDB4RTIsMHg0MCwweDVFLDB4NUUsMHg1QSwweEY4LDB4MDMsMHg0MSwweEUyLDB4MzgsMHg3
NywweDBFLDB4QkUsMHhGRCwKLSAgICAweDAyLDB4NDEsMHhBMSwweDMwLDB4RkUsMHhGQywweEY2
LDB4RkUsMHhFMiwweDM4LDB4ODEsMHgzMCwweEFBLDB4QUYsMHhGRiwweERCLAotICAgIDB4NDQs
MHg1MSwweEEyLDB4MzgsMHgwQiwweEFGLDB4QkQsMHhGNSwweDg0LDB4NjEsMHhDMiwweDQwLDB4
MDAsMHhBQiwweEZGLDB4NTUsCi0gICAgMHhDNSwweDY5LDB4MDMsMHg0OSwweDAyLDB4QkIsMHhE
RiwweEU1LDB4NDcsMHg3QSwweDg0LDB4NjEsMHgzQiwweDNGLDB4MzUsMHgyRCwKLSAgICAweDg4
LDB4ODIsMHgyNiwweDcyLDB4OEUsMHhBNywweEFFLDB4MDgsMHhBOCwweDgyLDB4QzUsMHg2OSww
eDdFLDB4N0EsMHhCQSwweDAwLAotICAgIDB4ODgsMHg4MiwweEU1LDB4NjksMHg1NSwweDU3LDB4
QkYsMHgyOCwweDY3LDB4N0EsMHhFNSwweDY5LDB4QkQsMHg1RCwweEI3LDB4MDAsCi0gICAgMHhB
OCwweDgyLDB4RTUsMHg2MSwweDU3LDB4RkYsMHhBQiwweDgyLDB4ODcsMHg3QSwweDYzLDB4NTEs
MHg1RiwweDdFLDB4RkEsMHhBOCwKLSAgICAweEE1LDB4NTksMHgyMywweDQ5LDB4RDcsMHhGRiww
eEZBLDB4RTAsMHg2NCwweDUxLDB4NDMsMHg0OSwweDY1LDB4RkEsMHhGOCwweDdELAotICAgIDB4
NjQsMHg1MSwweDAzLDB4NDEsMHhBMCwweEEyLDB4RjIsMHg3RSwweDIzLDB4NDksMHhDMiwweDMw
LDB4QjgsMHhGQSwweDVBLDB4RkEsCi0gICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDJCLDB4MkIs
MHg4QiwweEE1LDB4NjQsMHg0OSwweDAzLDB4NDEsMHgzRiwweEVELDB4RkEsMHg3QiwKLSAgICAw
eDQzLDB4NDksMHhFMywweDM4LDB4MjgsMHhBMiwweEZBLDB4N0UsMHgyMywweDQxLDB4QTEsMHgz
MCwweDgwLDB4RkEsMHg3NiwweDVGLAotICAgIDB4MDMsMHg0MSwweDgxLDB4MjgsMHgyOCwweEFG
LDB4QTUsMHgyNSwweDQ0LDB4NDksMHhDMiwweDM4LDB4RkYsMHhGNSwweEFGLDB4MEEsCi0gICAg
MHhFNiwweDYxLDB4MDMsMHg0MSwweDI5LDB4M0QsMHgyRiwweDJGLDB4NjcsMHg3QSwweDA2LDB4
NkEsMHg5RCwweEJGLDB4QzIsMHg2MywKLSAgICAweDY3LDB4N0EsMHgyNywweDcyLDB4MjAsMHgw
OCwweEJGLDB4NzUsMHg2OCwweDdBLDB4MDYsMHg2QSwweEEwLDB4RTAsMHg2QywweEFBLAotICAg
IDB4NDcsMHg3QSwweEU1LDB4NjksMHhBMCwweEZFLDB4NUYsMHg1RSwweDA2LDB4NzIsMHg4NCww
eDU5LDB4RTAsMHhFOCwweEZFLDB4N0UsCi0gICAgMHhFNSwweDYxLDB4ODQsMHg1OSwweDJELDB4
MzUsMHhGRiwweEJELDB4RTYsMHg2OSwweDg0LDB4NTksMHgyOCwweDBBLDB4RkIsMHg1RSwKLSAg
ICAweEU2LDB4NjEsMHg4NCwweDU5LDB4QTAsMHg4MCwweEFELDB4N0QsMHhBNCwweDU5LDB4MDMs
MHg0MSwweEZFLDB4N0UsMHg3QywweDdFLAotICAgIDB4MjMsMHg0OSwweDAzLDB4NDEsMHgyQiww
eEQ1LDB4REYsMHhEQiwweDg0LDB4NTEsMHgyMywweDQ5LDB4QkQsMHgyNSwweDI1LDB4MjUsCi0g
ICAgMHg0NywweDcyLDB4QTUsMHg1OSwweEJELDB4MDksMHgyQiwweDJCLDB4NDcsMHg3MiwweEE0
LDB4NjEsMHhBQSwweEY4LDB4N0MsMHg1QywKLSAgICAweDg4LDB4N0EsMHhFNSwweDY5LDB4MkIs
MHgwRCwweDJELDB4MjUsMHgwQSwweDhCLDB4QTgsMHg4MiwweEU1LDB4OEIsMHg4QiwweDJBLAot
ICAgIDB4RTksMHg4QSwweDI2LDB4NzIsMHhGMiwweEVBLDB4NzgsMHg3OCwweDg3LDB4N0EsMHgw
NSwweDZBLDB4MDgsMHgyRiwweEJGLDB4QkQsCi0gICAgMHg0QSwweDkzLDB4NjcsMHg3QSwweDBC
LDB4MkYsMHhGNSwweEQ1LDB4MkQsMHhBQywweEM4LDB4ODIsMHgyRiwweEJGLDB4RDUsMHhGNSwK
LSAgICAweEI3LDB4RjYsMHhDQywweEEzLDB4MEIsMHgyQiwweDJELDB4QUQsMHhEOCwweEZFLDB4
NTEsMHhENSwweDAwLDB4MDAsMHhBMiwweDVGLAotICAgIDB4RDcsMHhGNiwweDcyLDB4RDUsMHgw
MCwweDAwLDB4MDIsMHhBRCwweEY4LDB4RkUsMHg5NiwweEVFLDB4MDAsMHgwOCwweDJBLDB4RkQs
Ci0gICAgMHhGOCwweEZFLDB4RDcsMHhGNiwweEFBLDB4QTgsMHhCQiwweEE1LDB4RjgsMHhGRSww
eEQ3LDB4RjYsMHhBQSwweEFBLDB4QkUsMHhBRSwKLSAgICAweEY4LDB4RkUsMHhENywweEY2LDB4
REIsMHhGRiwweEZBLDB4REEsMHhGOCwweEZFLDB4RDcsMHhGNiwweEFBLDB4QUUsMHhBRiwweDlC
LAotICAgIDB4RjgsMHhGRSwweEY3LDB4RjYsMHhCRiwweEVCLDB4QUEsMHg4MiwweEQ4LDB4RkUs
MHgxNywweEY3LDB4RkYsMHhFRSwweEFBLDB4OEEsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiww
eEVBLDB4RkUsMHhCQiwweEZGLDB4RjgsMHhGRSwweDE4LDB4RjcsMHhBQSwweEFFLDB4MEEsMHhB
MiwKLSAgICAweEY4LDB4RkUsMHgxOCwweEY3LDB4QkUsMHhBQSwweDAwLDB4MDAsMHhGOCwweEZF
LDB4MTgsMHhGNywweEFBLDB4QUEsMHgwOCwweDIyLAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYs
MHhFQSwweEJBLDB4RkQsMHhCQiwweDE4LDB4RkYsMHhCNywweEY2LDB4N0YsMHg3RiwweDc2LDB4
N0YsCi0gICAgMHhEOCwweEZFLDB4QjcsMHhFRSwweEFBLDB4RUEsMHg3QSwweDdGLDB4QjYsMHhG
NiwweDk2LDB4RUUsMHhBOCwweEVBLDB4RTAsMHhFQSwKLSAgICAweEI2LDB4RjYsMHg5NiwweEVF
LDB4NUYsMHhERSwweDdFLDB4N0IsMHg5NiwweEVFLDB4NzYsMHhFRSwweEEwLDB4MjgsMHg1RCww
eDVGLAotICAgIDB4OTYsMHhGNiwweDc2LDB4RUUsMHg1QSwweEY0LDB4RUQsMHhFRiwweDk2LDB4
RjYsMHg1NSwweEVFLDB4NTUsMHg3RSwweEUyLDB4ODAsCi0gICAgMHg3NiwweEVFLDB4NTUsMHhF
RSwweEE5LDB4RUYsMHhFOCwweEYwLDB4NzUsMHhFRSwweDU2LDB4RUUsMHhBQSwweERGLDB4NTUs
MHg5NywKLSAgICAweDk3LDB4RjYsMHg1NiwweEVFLDB4RkUsMHhFRSwweEVCLDB4RkUsMHg3Niww
eEVFLDB4MzUsMHhFNiwweDhGLDB4MkUsMHgwRSwweDAyLAotICAgIDB4NzYsMHhFRSwweDU1LDB4
RUUsMHgyRCwweEY3LDB4QkUsMHgwMCwweDc2LDB4RUUsMHg1NSwweEVFLDB4RkUsMHhGQywweEZG
LDB4QkUsCi0gICAgMHg3NiwweEVFLDB4NTUsMHhFRSwweERFLDB4REIsMHhBQiwweEEyLDB4NzYs
MHhFRSwweDU1LDB4RUUsMHgwRCwweDJFLDB4QkEsMHhCNiwKLSAgICAweDc1LDB4RUUsMHgzNSww
eEU2LDB4NzYsMHg1QywweEJDLDB4RUUsMHg3NSwweEVFLDB4MzQsMHhFRSwweEI1LDB4QUYsMHhB
QiwweDIyLAotICAgIDB4NzUsMHhFRSwweDU1LDB4RUUsMHg2MiwweEM1LDB4MjAsMHhGQSwweDU1
LDB4RUUsMHgxNCwweEU2LDB4QUIsMHhCRiwweEZDLDB4OUEsCi0gICAgMHg3NSwweEVFLDB4MzQs
MHhFNiwweEU5LDB4RUIsMHg3QiwweDdGLDB4MTQsMHhFNiwweEIzLDB4RDUsMHhGOCwweEY4LDB4
N0MsMHg3OCwKLSAgICAweEYzLDB4REQsMHhCMywweEQ1LDB4RDYsMHhCNywweEVELDB4QUIsMHgz
NCwweEU2LDB4RDMsMHhERCwweDJCLDB4MkQsMHhBRCwweEFELAotICAgIDB4MzUsMHhFRSwweDE0
LDB4RTYsMHgyRCwweDJCLDB4MkEsMHgwOSwweDM0LDB4RTYsMHhGMywweEU1LDB4NzgsMHhCOCww
eDIwLDB4MDAsCi0gICAgMHg1NSwweEVFLDB4NTEsMHhDRCwweDdGLDB4N0EsMHg3QSwweEUwLDB4
NzIsMHhENSwweEYwLDB4QzQsMHg1RiwweEZCLDB4RkEsMHhBOCwKLSAgICAweDMxLDB4QzUsMHhB
RiwweEJDLDB4RkUsMHhEQSwweEZDLDB4RkEsMHgxMCwweEM1LDB4RDAsMHhCQywweEY1LDB4QUQs
MHg4QiwweDAwLAotICAgIDB4MzEsMHhDNSwweEYwLDB4QzQsMHhCNSwweEE1LDB4QTIsMHgyQSww
eDUyLDB4Q0QsMHgxMCwweEM1LDB4RTksMHg3RiwweEJGLDB4MEEsCi0gICAgMHgzMSwweENELDB4
OEYsMHhCQywweDYwLDB4ODIsMHgwMCwweDAwLDB4RDAsMHhCQywweEM4LDB4ODIsMHg1RiwweDVF
LDB4N0MsMHg3OCwKLSAgICAweDZCLDB4OTMsMHhBOCwweDdBLDB4M0YsMHhCRCwweDM1LDB4QjUs
MHhBRiwweEJDLDB4OEIsMHg5MywweDA5LDB4MjksMHgwQiwweDA5LAotICAgIDB4RjAsMHhDNCww
eEFFLDB4QjQsMHgwMywweDBCLDB4RUYsMHhFNywweEYwLDB4QzQsMHhDRiwweEJDLDB4MjgsMHg2
MCwweDhBLDB4RDgsCi0gICAgMHgzMCwweENELDB4RDAsMHhCQywweDNCLDB4QUIsMHhGRiwweDdG
LDB4NTEsMHhDRCwweEYwLDB4QzQsMHhBQSwweDhCLDB4RUYsMHhFNSwKLSAgICAweDUxLDB4Q0Qs
MHhGMCwweEM0LDB4QTgsMHhFQSwweERGLDB4N0YsMHg1MSwweENELDB4RjAsMHhDNCwweEFCLDB4
QTMsMHhGRSwweDdFLAotICAgIDB4NDUsMHg2QSwweEU0LDB4NjksMHhFQiwweEZGLDB4NkUsMHhC
OCwweDQ1LDB4NkEsMHgwNSwweDYyLDB4RkYsMHg3RiwweERGLDB4QUEsCi0gICAgMHg0NSwweDZB
LDB4MDUsMHg2QSwweDlBLDB4RkIsMHhFQSwweEJBLDB4NDYsMHg2QSwweEU1LDB4NjEsMHg1Miww
eDdBLDB4QkUsMHhCOCwKLSAgICAweDY2LDB4NkEsMHgwNSwweDZBLDB4MkQsMHhFRiwweDU1LDB4
NzYsMHhBNywweDdBLDB4MDUsMHg2MiwweDBBLDB4QkIsMHhGNSwweEY1LAotICAgIDB4ODcsMHg3
QSwweDI1LDB4NkEsMHgwMiwweDAwLDB4MkUsMHg1NywweEE3LDB4N0EsMHgyNiwweDZBLDB4ODAs
MHgwMCwweDJBLDB4QkQsCi0gICAgMHhDNywweDdBLDB4ODcsMHg3QSwweEI1LDB4RkYsMHg5RCww
eDU3LDB4QTcsMHg3QSwweDg3LDB4N0EsMHgwOSwweEQzLDB4MTQsMHgxMywKLSAgICAweEM3LDB4
ODIsMHg2NiwweDdBLDB4N0UsMHhFQiwweEVFLDB4RkEsMHhBNywweDdBLDB4NjcsMHg3QSwweDJB
LDB4QjMsMHhBQiwweEJFLAotICAgIDB4QTcsMHg3QSwweDg3LDB4N0EsMHhBRiwweEI3LDB4Mjcs
MHhCNSwweEE3LDB4N0EsMHg4NywweDdBLDB4NTcsMHhGNCwweEMzLDB4QUIsCi0gICAgMHhDNyww
eDgyLDB4NjYsMHg3MiwweEJFLDB4QUYsMHhBRCwweEJFLDB4QTcsMHg3QSwweDY2LDB4N0EsMHgy
RCwweDg4LDB4MDAsMHgwQywKLSAgICAweEM3LDB4ODIsMHg4NywweDdBLDB4NzcsMHhGQywweEVB
LDB4QUUsMHhBNywweDdBLDB4NDYsMHg3MiwweEFCLDB4ODksMHgwMiwweDA4LAotICAgIDB4QTcs
MHg3QSwweDY2LDB4NzIsMHg1NywweEVFLDB4ODgsMHgwMiwweEE3LDB4N0EsMHg2NiwweDcyLDB4
NzcsMHhGRiwweEZBLDB4RjIsCi0gICAgMHhDNywweDgyLDB4NDYsMHg3MiwweERGLDB4REYsMHhG
QiwweEI4LDB4ODYsMHg3QSwweDI0LDB4NkEsMHhBNiwweDhBLDB4OEEsMHhCMCwKLSAgICAweDg3
LDB4N0EsMHg0NiwweDcyLDB4OEQsMHg2QiwweDY4LDB4Q0IsMHhFOCwweDgyLDB4NDUsMHg3Miww
eDJCLDB4QUYsMHhENywweDVGLAotICAgIDB4MDgsMHg4QiwweDY2LDB4NzIsMHgwMiwweEEyLDB4
QUYsMHg1NywweEU4LDB4ODIsMHhBNywweDdBLDB4QTAsMHgwMCwweDBFLDB4MzUsCi0gICAgMHhF
OCwweDgyLDB4QTcsMHg4MiwweDJGLDB4MDgsMHgyMCwweEU4LDB4RTgsMHg4MiwweEE2LDB4N0Es
MHhFQSwweEZBLDB4MDIsMHhDRSwKLSAgICAweEM3LDB4N0EsMHg2MywweDUxLDB4NUEsMHg1OCww
eEU4LDB4ODAsMHhBNCwweDU5LDB4QzIsMHgzOCwweEQ3LDB4RDcsMHg3RSwweEY4LAotICAgIDB4
RTIsMHg0MCwweEMyLDB4MzgsMHg1NywweDU3LDB4NUUsMHg2MCwweEUyLDB4MzgsMHg4MSwweDM4
LDB4N0EsMHhGQSwweEE4LDB4QTAsCi0gICAgMHhFMywweDQwLDB4ODEsMHgzOCwweDJELDB4MEYs
MHhBQiwweDAyLDB4NDQsMHg1OSwweEMyLDB4NDAsMHg5NSwweEI5LDB4MEIsMHgyRiwKLSAgICAw
eEE1LDB4NjEsMHgyMywweDUxLDB4QkQsMHhBRiwweDJGLDB4MkIsMHg0NywweDdBLDB4QzUsMHg2
OSwweEJELDB4MkQsMHhBOSwweDg1LAotICAgIDB4QTgsMHg4MiwweDQ3LDB4N0EsMHgwMywweDVC
LDB4N0QsMHhGNSwweEM5LDB4ODIsMHg0NywweDcyLDB4QTIsMHg3QiwweDdELDB4QkYsCi0gICAg
MHg4OCwweDgyLDB4MDYsMHg2QSwweDA4LDB4RTgsMHg1RiwweEVDLDB4QTgsMHg4MiwweEM0LDB4
NjksMHgwMCwweDAyLDB4QkQsMHhCNywKLSAgICAweEU5LDB4OEEsMHgyNywweDcyLDB4ODIsMHgw
MiwweEFGLDB4N0YsMHg2NywweDdBLDB4QzUsMHg1OSwweEE4LDB4REMsMHg3OCwweEZFLAotICAg
IDB4MjcsMHg2QSwweDQ0LDB4NDksMHg2OCwweEUwLDB4RUIsMHg1NywweDY0LDB4NTEsMHhDMiww
eDM4LDB4QTgsMHhGQywweEZFLDB4N0YsCi0gICAgMHgyMywweDQxLDB4QzIsMHgzOCwweEEwLDB4
QUEsMHg3RCwweDVCLDB4MDMsMHgzOSwweEMyLDB4MzgsMHhBQSwweEFGLDB4QUQsMHhBRCwKLSAg
ICAweDAzLDB4NDEsMHhFMiwweDM4LDB4MzcsMHhGNiwweDMyLDB4QkUsMHgyNCwweDQxLDB4RTMs
MHgzOCwweEMwLDB4RTIsMHg3QiwweDU3LAotICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHhFMCww
eDQ4LDB4QUMsMHg4MCwweEMyLDB4MzgsMHg4MSwweDMwLDB4REUsMHhERiwweENBLDB4ODAsCi0g
ICAgMHg0NCwweDQ5LDB4QTEsMHgzMCwweEI1LDB4RjUsMHgzRCwweDBCLDB4QTUsMHg1OSwweDAz
LDB4NDEsMHhBRCwweEFELDB4MkYsMHgwQSwKLSAgICAweEM2LDB4NjEsMHg2NCwweDUxLDB4MjUs
MHhCRiwweEZFLDB4RkEsMHgyNiwweDcyLDB4ODQsMHg1OSwweDIyLDB4ODksMHhCRCwweEI1LAot
ICAgIDB4NjcsMHg3QSwweEU2LDB4NjksMHhBOSwweDBCLDB4MjMsMHhGRCwweDg4LDB4ODIsMHgy
NiwweDcyLDB4RTAsMHhFMCwweEZBLDB4RkQsCi0gICAgMHgyNiwweDcyLDB4QTQsMHg2MSwweEEw
LDB4ODgsMHg4MCwweDdBLDB4RTYsMHg2OSwweDg0LDB4NTksMHhEOCwweERBLDB4RDYsMHg1NSwK
LSAgICAweEM1LDB4NTksMHg4NCwweDU5LDB4QjcsMHhCNSwweDJELDB4MDksMHhFNiwweDYxLDB4
ODUsMHg1OSwweEZBLDB4QTMsMHhFQiwweERFLAotICAgIDB4QTUsMHg1OSwweDQ0LDB4NDksMHhF
OCwweDgwLDB4RTgsMHg3RSwweDY0LDB4NTEsMHgwMywweDQxLDB4NjgsMHg3QSwweDdBLDB4N0Es
Ci0gICAgMHgyNCwweDQ5LDB4RTMsMHg0MCwweEFGLDB4QkYsMHhGQiwweEJGLDB4RTYsMHg2MSww
eDAzLDB4NDksMHhBRCwweEE1LDB4QUYsMHgyRiwKLSAgICAweDQ3LDB4NzIsMHhFNiwweDYxLDB4
QTUsMHhBMywweDhGLDB4RTMsMHg2OCwweDdBLDB4QzUsMHg2MSwweDVCLDB4QjcsMHgyRiwweDJG
LAotICAgIDB4QTgsMHg4MiwweDI2LDB4NzIsMHhBRCwweDhFLDB4MDIsMHg4QSwweEM5LDB4OEEs
MHgyNiwweDcyLDB4MDIsMHhBOCwweEZFLDB4N0UsCi0gICAgMHg4OCwweDgyLDB4MjYsMHg3Miww
eDYwLDB4QTIsMHhBRSwweDI3LDB4QzgsMHg4QSwweDI2LDB4NzIsMHg5NSwweDNFLDB4MEEsMHgw
OCwKLSAgICAweDA5LDB4OEIsMHg2NiwweDdBLDB4RkQsMHhBRiwweEFFLDB4MkEsMHgwQSwweDhC
LDB4QTgsMHg4MiwweDJGLDB4MkUsMHhBQSwweDc4LAotICAgIDB4MkUsMHhCNCwweDg4LDB4N0Es
MHgwQiwweEJGLDB4NTUsMHg1NSwweDRELDB4QjQsMHhBNywweDgyLDB4MDAsMHhCRSwweDc1LDB4
NTUsCi0gICAgMHgzMSwweENELDB4MDksMHg4QiwweDJBLDB4QkYsMHhGRCwweDU1LDB4MTUsMHhF
NiwweDJBLDB4OTMsMHgwMCwweDJBLDB4QUYsMHhGNSwKLSAgICAweEQ3LDB4RkUsMHhEMCwweEM0
LDB4MDAsMHgwQSwweDJCLDB4RkQsMHhENywweEZFLDB4MTEsMHhDRCwweDAwLDB4MDAsMHhBQSww
eEQ1LAotICAgIDB4RDcsMHhGRSwweDk0LDB4REQsMHgwMCwweDAwLDB4MDIsMHhCRCwweEY4LDB4
RkUsMHg5NiwweEY2LDB4QUEsMHgyQSwweEJCLDB4RjUsCi0gICAgMHhGOCwweEZFLDB4RDcsMHhG
NiwweDgyLDB4QTAsMHhBMCwweDVCLDB4RjgsMHhGRSwweEI3LDB4RjYsMHgzMiwweEEyLDB4OEEs
MHhGRiwKLSAgICAweEY4LDB4RkUsMHhENywweEY2LDB4MjgsMHgyRSwweDhBLDB4RTUsMHgxOCww
eEZGLDB4RDcsMHhGNiwweEFBLDB4QkEsMHhBQiwweEZGLAotICAgIDB4RjgsMHhGRSwweEQ4LDB4
RjYsMHhFQSwweEFBLDB4QUEsMHhCOCwweEY4LDB4RkUsMHhENywweEY2LDB4MEEsMHhBOCwweDgy
LDB4QUEsCi0gICAgMHhGOCwweEZFLDB4QjcsMHhGNiwweEEwLDB4RkEsMHhFOCwweDdBLDB4RDcs
MHhGNiwweEI3LDB4RjYsMHg3QywweEZFLDB4NUYsMHg1NSwKLSAgICAweEI3LDB4RjYsMHg5Niww
eEVFLDB4RTAsMHhFOCwweEYyLDB4N0EsMHhCNywweEY2LDB4NzYsMHhFRSwweEFBLDB4RkEsMHg1
QiwweDdGLAotICAgIDB4OTYsMHhFRSwweDU1LDB4RUUsMHgwMCwweDhBLDB4REQsMHhGNywweDc2
LDB4RUUsMHg1NSwweEVFLDB4MjAsMHgwMCwweEEyLDB4QkYsCi0gICAgMHg1NSwweEY2LDB4NzYs
MHhFRSwweDU1LDB4NUYsMHg3NywweEZFLDB4OTYsMHhGNiwweDc2LDB4RUUsMHhFMiwweEZGLDB4
N0QsMHg1RCwKLSAgICAweDc2LDB4RUUsMHg1NSwweEVFLDB4RTgsMHhDQSwweEI3LDB4NDMsMHg5
NiwweEY2LDB4NTYsMHhFRSwweEY1LDB4RkQsMHhBRiwweDJCLAotICAgIDB4OTYsMHhGNiwweDU2
LDB4RUUsMHg1RSwweDdFLDB4RUEsMHhFOCwweDU1LDB4RjYsMHg3NiwweEVFLDB4NzUsMHg1NSww
eDc2LDB4RkUsCi0gICAgMHg5NiwweEY2LDB4NzYsMHhFRSwweDdGLDB4RkUsMHhFQSwweDZBLDB4
NTYsMHhGNiwweDc2LDB4RUUsMHhGNywweEZELDB4REQsMHhENSwKLSAgICAweDc1LDB4RUUsMHg1
NiwweEVFLDB4QTgsMHg5QSwweEZBLDB4RkIsMHg3NiwweEVFLDB4NTUsMHhFRSwweDI2LDB4RkUs
MHhFQSwweDI4LAotICAgIDB4NzYsMHhFRSwweDU1LDB4RUUsMHhGRSwweEJFLDB4M0YsMHhENSww
eDc1LDB4RUUsMHg1NSwweEVFLDB4RkUsMHgwQywweDgwLDB4Q0IsCi0gICAgMHg3NiwweEVFLDB4
MzQsMHhFNiwweEFBLDB4QkEsMHg3RSwweEZGLDB4NTUsMHhFRSwweDE0LDB4RTYsMHhCMiwweEE4
LDB4RUEsMHhBRSwKLSAgICAweDU1LDB4RUUsMHgzNCwweEU2LDB4NzAsMHg2QiwweDYxLDB4N0Ys
MHgxNCwweEU2LDB4OTIsMHhENSwweEZDLDB4RjgsMHg3RSwweERFLAotICAgIDB4RjMsMHhERCww
eEIzLDB4RDUsMHgwQiwweDJGLDB4QkQsMHhCNSwweDE0LDB4RTYsMHhEMywweERELDB4MkIsMHgy
RSwweEJCLDB4QUQsCi0gICAgMHg1NSwweEVFLDB4RjQsMHhERCwweENCLDB4QUIsMHgyRiwweEI5
LDB4NzUsMHhFRSwweDM0LDB4RTYsMHgxNSwweEE1LDB4MEIsMHhBMiwKLSAgICAweDc1LDB4RUUs
MHgzNSwweEU2LDB4NjAsMHhFQSwweEY2LDB4QjUsMHg1NSwweEVFLDB4OTMsMHhENSwweDVGLDB4
RkUsMHhFMCwweEEwLAotICAgIDB4RDMsMHhERCwweEYwLDB4QzQsMHg1RiwweDdBLDB4QTgsMHg4
MCwweDcyLDB4Q0QsMHgxMCwweEM1LDB4OUQsMHhGNSwweEJGLDB4RTAsCi0gICAgMHg1MSwweENE
LDB4MTEsMHhDNSwweEJGLDB4QkUsMHhBMiwweDAwLDB4NzIsMHhDRCwweDUxLDB4Q0QsMHhFRCww
eDZELDB4OUQsMHg1NSwKLSAgICAweDcyLDB4Q0QsMHgzMSwweENELDB4N0YsMHg1QSwweEVBLDB4
OEYsMHgxMSwweEM1LDB4MkIsMHg4QiwweDc4LDB4RTAsMHhFMCwweDgwLAotICAgIDB4NEEsMHg4
QiwweDY3LDB4NzIsMHhCRiwweEJFLDB4QkMsMHhEQywweDhFLDB4QjQsMHgwOSwweDgzLDB4MEIs
MHgyRiwweEZELDB4RDUsCi0gICAgMHhBRSwweEI0LDB4OEIsMHg5MywweDAwLDB4QTgsMHhBQSww
eEZELDB4RDAsMHhDNCwweDZFLDB4QUMsMHgyQSwweEJCLDB4QUYsMHg5NSwKLSAgICAweEYwLDB4
QzQsMHhBRiwweEJDLDB4RkEsMHhEQiwweEZELDB4NzUsMHgzMSwweENELDB4QUYsMHhCQywweDBG
LDB4QUYsMHhGRiwweEY1LAotICAgIDB4MzEsMHhDRCwweENGLDB4QkMsMHgyRSwweEJFLDB4NkYs
MHhGRCwweDEwLDB4QzUsMHhDRiwweEJDLDB4RTAsMHhBOCwweEVGLDB4RDUsCi0gICAgMHg0Niww
eDZBLDB4RTUsMHg2OSwweDBBLDB4QkEsMHg4OCwweEEwLDB4NDYsMHg2QSwweDI1LDB4NkEsMHhG
OCwweEFBLDB4MzUsMHgxNywKLSAgICAweDQ2LDB4NzIsMHgwNSwweDYyLDB4REIsMHhFRiwweEFB
LDB4MEEsMHg2NiwweDcyLDB4MDUsMHg2QSwweEJBLDB4RkEsMHg1RSwweEYzLAotICAgIDB4NDYs
MHg3MiwweDA1LDB4NkEsMHg3RSwweEVGLDB4NUUsMHgyQSwweDQ2LDB4NzIsMHgwNSwweDZBLDB4
QTksMHgyQSwweDlBLDB4QzgsCi0gICAgMHg0NiwweDcyLDB4MDUsMHg2QSwweEY1LDB4NUEsMHg3
MywweEYyLDB4NDUsMHg3MiwweEU0LDB4NjksMHgyQSwweEZFLDB4RkIsMHhGQSwKLSAgICAweDg3
LDB4N0EsMHgwNSwweDZBLDB4MkEsMHhGNSwweDc1LDB4RkYsMHhBNywweDgyLDB4RTUsMHg2OSww
eDIyLDB4MEEsMHhGQiwweERGLAotICAgIDB4QTcsMHg3QSwweDI2LDB4NzIsMHgyMCwweDAwLDB4
OEEsMHhGRCwweEM4LDB4ODIsMHg4NywweDdBLDB4NTcsMHg2RiwweEY1LDB4OUQsCi0gICAgMHhB
NywweDdBLDB4NjYsMHg3QSwweEMyLDB4MDIsMHg4NCwweDg4LDB4QTcsMHg3QSwweDY2LDB4NzIs
MHg4MiwweEE4LDB4OEQsMHgwRSwKLSAgICAweEM3LDB4ODIsMHg2NiwweDcyLDB4OUIsMHgxQiww
eEFCLDB4RTksMHhDNywweDdBLDB4ODcsMHg3QSwweEY2LDB4NzYsMHg1NSwweEQ3LAotICAgIDB4
QTcsMHg3QSwweDg2LDB4N0EsMHgzRSwweDI1LDB4M0IsMHhGNSwweEM3LDB4ODIsMHg4NywweDdB
LDB4REYsMHhGQiwweEFGLDB4RUIsCi0gICAgMHhBNywweDdBLDB4NDUsMHg3MiwweDBBLDB4REEs
MHg4RSwweDBCLDB4QTcsMHg3QSwweDQ1LDB4NzIsMHhBMCwweERFLDB4RUMsMHg4QSwKLSAgICAw
eEE3LDB4N0EsMHg4NywweDdBLDB4RjgsMHhCRiwweEQ1LDB4MzUsMHhBNywweDdBLDB4ODcsMHg3
QSwweEI3LDB4REEsMHhCRSwweDJGLAotICAgIDB4QTcsMHg4MiwweDQ2LDB4NzIsMHg3MCwweEIy
LDB4OEEsMHhCOCwweEE3LDB4N0EsMHg2NiwweDdBLDB4NTYsMHhFMCwweEZFLDB4QjQsCi0gICAg
MHhBNywweDdBLDB4NDUsMHg3MiwweDc3LDB4QUYsMHhBQSwweDI4LDB4QzcsMHg4MiwweDY2LDB4
NzIsMHgyNSwweDVELDB4RUYsMHhGRCwKLSAgICAweEM4LDB4ODIsMHg2NiwweDcyLDB4MDMsMHhC
NSwweDU1LDB4RkYsMHgwOCwweDhCLDB4NjYsMHg3MiwweEE4LDB4MkYsMHhGRCwweERELAotICAg
IDB4RTgsMHg4MiwweDY1LDB4NzIsMHhFMiwweDhBLDB4MkIsMHhBRCwweDg2LDB4NzIsMHgwMyww
eDQ5LDB4N0UsMHhGOCwweEUwLDB4ODAsCi0gICAgMHhBNCwweDU5LDB4RTIsMHg0MCwweDU1LDB4
NTcsMHg1RSwweEY4LDB4MDMsMHg0OSwweEMyLDB4NDAsMHg3RSwweDVBLDB4RjgsMHg4MCwKLSAg
ICAweDQzLDB4NDksMHhFMywweDQwLDB4REQsMHgxNSwweEJELDB4RjUsMHg4NCwweDU5LDB4MDMs
MHg0OSwweEZELDB4QUUsMHhBQSwweDhCLAotICAgIDB4ODQsMHg1OSwweEUyLDB4NDgsMHgwQSww
eEI3LDB4NUUsMHg3RSwweEU2LDB4NjksMHhFMywweDQ4LDB4MEEsMHhBRiwweEZELDB4NzUsCi0g
ICAgMHgyNywweDcyLDB4MjMsMHg1MSwweDA4LDB4QkYsMHhGNSwweEQ1LDB4QTksMHg4MiwweDQ0
LDB4NTksMHgwQSwweEFBLDB4RkYsMHg1RCwKLSAgICAweDg4LDB4N0EsMHg4NSwweDYxLDB4MDAs
MHgwOCwweDhCLDB4RjUsMHg4OCwweDgyLDB4QzUsMHg2MSwweEFBLDB4MDAsMHhBMiwweDU1LAot
ICAgIDB4ODcsMHg3QSwweEM1LDB4NjEsMHhFMiwweEU4LDB4N0EsMHg1NSwweDA2LDB4NkEsMHg2
NCwweDUxLDB4ODAsMHhBRSwweDVGLDB4NzcsCi0gICAgMHhBNSwweDU5LDB4MDMsMHg0MSwweEZD
LDB4RkUsMHg1NywweDU3LDB4MjMsMHg0MSwweEUzLDB4MzgsMHg1NiwweEZBLDB4RkEsMHhCNSwK
LSAgICAweDAzLDB4MzksMHhDMiwweDM4LDB4REUsMHg1RSwweEY4LDB4MjgsMHhFMiwweDQwLDB4
MDMsMHgzOSwweDdBLDB4NzYsMHhENywweEQ1LAotICAgIDB4RTIsMHg0OCwweDAzLDB4MzksMHg3
NywweEQ3LDB4RkQsMHg1NywweDQ0LDB4NDEsMHhDMiwweDM4LDB4RjcsMHhCQSwweEFBLDB4QjIs
Ci0gICAgMHgwMywweDM5LDB4QTIsMHgzMCwweEU4LDB4N0EsMHhGMCwweEUyLDB4RTIsMHgzOCww
eEEyLDB4MzAsMHhGRCwweDM3LDB4RkYsMHhCOSwKLSAgICAweDQ0LDB4NDksMHhDMiwweDM4LDB4
MEIsMHgyOSwweDA5LDB4MjksMHhDNSwweDU5LDB4NjQsMHg1MSwweDJCLDB4QzksMHg4RCwweEE5
LAotICAgIDB4QzUsMHg2OSwweDY0LDB4NTEsMHhGRiwweEZGLDB4RkYsMHgyRSwweDA2LDB4NzIs
MHg2NCwweDU5LDB4ODksMHgwQiwweEE5LDB4RkEsCi0gICAgMHhFNSwweDY5LDB4ODQsMHg1OSww
eDAwLDB4MDAsMHgwOCwweERELDB4NDcsMHg3MiwweEE0LDB4NjEsMHg4QiwweEI3LDB4OTcsMHhE
NSwKLSAgICAweDA2LDB4NkEsMHg2NCwweDU5LDB4RTgsMHhGQSwweEZBLDB4NUUsMHg4NSwweDU5
LDB4NjQsMHg1MSwweDBGLDB4QjgsMHg5OCwweEVGLAotICAgIDB4QzUsMHg2MSwweDY0LDB4NTEs
MHhDOSwweEE3LDB4QkYsMHhCNSwweEU2LDB4NjEsMHg4NCwweDUxLDB4N0YsMHhFOCwweDgyLDB4
QzIsCi0gICAgMHhBNCwweDU5LDB4MjQsMHg0OSwweEVBLDB4RTAsMHhFOCwweDdFLDB4NDMsMHg0
OSwweDAyLDB4NDEsMHg3OCwweEFFLDB4QUEsMHhFMiwKLSAgICAweDY0LDB4NTEsMHhFMiwweDM4
LDB4QkQsMHhBRCwweDNGLDB4MkEsMHhFNiwweDYxLDB4NDQsMHg0OSwweDJELDB4MkIsMHhBQiww
eEFGLAotICAgIDB4NDcsMHg3MiwweEM2LDB4NjEsMHhBMiwweDhCLDB4M0YsMHhGNSwweDg4LDB4
N0EsMHgyNiwweDZBLDB4QkQsMHhFRiwweEU4LDB4MDEsCi0gICAgMHg4OCwweDgyLDB4MjYsMHg3
MiwweDhCLDB4QkEsMHhERSwweEVBLDB4ODgsMHg4MiwweEU1LDB4NjksMHhGMCwweDdFLDB4RkYs
MHhENywKLSAgICAweDY3LDB4N0EsMHhFNSwweDY5LDB4MjcsMHgwRCwweDg4LDB4MDIsMHhFOSww
eDhBLDB4NDcsMHg3MiwweDJBLDB4MEYsMHgyRCwweEI1LAotICAgIDB4MkEsMHg5MywweEM5LDB4
OEEsMHgzQiwweEFCLDB4RUYsMHg2RiwweDA5LDB4OEIsMHg2NywweDdBLDB4RTgsMHhBOCwweEZB
LDB4NUUsCi0gICAgMHg4OCwweDdBLDB4RTUsMHg2OSwweEE4LDB4NzgsMHhCQSwweEE3LDB4Qzgs
MHg4MiwweDI2LDB4NzIsMHgyQiwweEJELDB4QkYsMHhCRCwKLSAgICAweEU5LDB4OEEsMHgwNSww
eDcyLDB4ODIsMHhFQSwweDVFLDB4NUUsMHg2QiwweDlCLDB4NDcsMHg3MiwweDJCLDB4MjUsMHhC
NSwweEY1LAotICAgIDB4MkQsMHhBQywweDg4LDB4N0EsMHgwMCwweEZCLDB4N0YsMHg1RiwweDhC
LDB4OUIsMHg2OCwweDdBLDB4MDgsMHhERiwweDU1LDB4NTUsCi0gICAgMHg5MiwweEQ1LDB4ODgs
MHg3QSwweDBCLDB4QkYsMHhGRCwweEQ1LDB4NzUsMHhFRSwweDZCLDB4OTMsMHgwMiwweEFCLDB4
RkYsMHg1NSwKLSAgICAweEQ3LDB4RkUsMHg2QiwweDkzLDB4MDAsMHhBQSwweEZGLDB4NTUsMHhC
NiwweEY2LDB4NkEsMHg5MywweDAwLDB4QUEsMHhGRiwweEY1LAotICAgIDB4QjYsMHhGNiwweENG
LDB4QkMsMHgwMCwweDBBLDB4QUYsMHhBNSwweEQ3LDB4RjYsMHhGNCwweEU1LDB4MDAsMHgwMiww
eDhBLDB4RkQsCi0gICAgMHhGOCwweEZFLDB4NzYsMHhFRSwweDgwLDB4MDIsMHgyQSwweEQ1LDB4
RjgsMHhGRSwweEI3LDB4RjYsMHhFMiwweEE4LDB4QUEsMHhGNSwKLSAgICAweEQ3LDB4RjYsMHhC
NywweEY2LDB4NzgsMHg3OCwweDU4LDB4NzUsMHhCNywweEY2LDB4OTYsMHhFRSwweDgwLDB4MDgs
MHhFOCwweDdGLAotICAgIDB4QjYsMHhGNiwweDc2LDB4RUUsMHhBQSwweEZFLDB4N0YsMHg3Nyww
eDk2LDB4RUUsMHg1NSwweEVFLDB4RjAsMHhGOCwweDdBLDB4QkUsCi0gICAgMHg3NiwweEY2LDB4
NTUsMHhFNiwweEZCLDB4MkIsMHg4QSwweEFDLDB4OTYsMHhGNiwweDU1LDB4RUUsMHhGRiwweEZC
LDB4RTgsMHhGQSwKLSAgICAweDc2LDB4RUUsMHgzNSwweEVFLDB4QTgsMHhFOCwweEZBLDB4RkUs
MHg3NiwweEVFLDB4MzUsMHhFRSwweDAyLDB4MEYsMHhBRiwweEFBLAotICAgIDB4OTYsMHhGNiww
eDc2LDB4RUUsMHg3NSwweDVELDB4RkQsMHhCNSwweDU3LDB4RjYsMHg3NSwweEVFLDB4NUYsMHg1
RiwweERELDB4RkQsCi0gICAgMHg5NiwweEY2LDB4NTYsMHhFRSwweEZBLDB4QUIsMHg4QiwweDhC
LDB4OTYsMHhGNiwweDU2LDB4RUUsMHhGRCwweEVGLDB4QUEsMHhFQSwKLSAgICAweDk2LDB4RjYs
MHg3NiwweEVFLDB4RUYsMHgzQiwweDJGLDB4OEYsMHhCNiwweEY2LDB4NzYsMHhFRSwweDdELDB4
RUYsMHhFQiwweDdGLAotICAgIDB4NzYsMHhFRSwweDM1LDB4RUUsMHhBOCwweEYwLDB4QjgsMHhG
QSwweDc1LDB4RUUsMHgzNSwweEVFLDB4QUEsMHg4RCwweEZCLDB4RkYsCi0gICAgMHg3NiwweEVF
LDB4NTUsMHhFRSwweDU1LDB4NTUsMHhFNSwweDg1LDB4NzUsMHhFRSwweDM1LDB4RUUsMHhFRSww
eDg4LDB4MjIsMHgyMywKLSAgICAweDc1LDB4RUUsMHgzNSwweEU2LDB4RkYsMHhFMywweDIwLDB4
ODAsMHg1NSwweEVFLDB4MzUsMHhFNiwweEVCLDB4RUEsMHhFQywweEY0LAotICAgIDB4NTUsMHhF
RSwweEY0LDB4REQsMHhBQSwweEMwLDB4RUEsMHg2QSwweEYzLDB4REQsMHg3MiwweENELDB4REMs
MHhGQSwweDdBLDB4N0UsCi0gICAgMHhEMywweERELDB4NzIsMHhDRCwweDhGLDB4QjcsMHhCRiww
eEFGLDB4MTQsMHhFNiwweEIzLDB4RDUsMHgwQiwweDJGLDB4MkQsMHhBQiwKLSAgICAweDM0LDB4
RTYsMHhGNCwweERELDB4MkIsMHg4QSwweEZGLDB4NzcsMHg1NSwweEVFLDB4RjQsMHhERCwweDgy
LDB4RkYsMHhGRCwweEZELAotICAgIDB4NzYsMHhFRSwweDE0LDB4RTYsMHhBRCwweEFGLDB4MkQs
MHgwRiwweDk2LDB4RjYsMHgzNCwweEU2LDB4N0EsMHhFQSwweEEyLDB4MjAsCi0gICAgMHg5Niww
eEY2LDB4RjMsMHhERCwweERELDB4QUEsMHg4MiwweDA4LDB4OTYsMHhGNiwweDcyLDB4RDUsMHg1
RiwweEZBLDB4RTAsMHg4MCwKLSAgICAweDE0LDB4RTYsMHg1MSwweENELDB4NTUsMHg1NSwweDU3
LDB4RjgsMHg3MiwweEQ1LDB4MzEsMHhDNSwweEVCLDB4RTcsMHhFQSwweEU4LAotICAgIDB4NzIs
MHhENSwweDMxLDB4QzUsMHgyQSwweEEzLDB4QUYsMHhBNiwweDcyLDB4Q0QsMHhEMCwweEJDLDB4
NzgsMHhFOCwweDgwLDB4ODIsCi0gICAgMHhEMCwweEJDLDB4NjcsMHg3MiwweDVFLDB4N0MsMHg3
OCwweEMwLDB4QTgsMHg3QSwweEU2LDB4NjEsMHg4QSwweDdGLDB4NUYsMHhGRSwKLSAgICAweEFC
LDB4OUIsMHgwNSwweDYyLDB4MEIsMHhCNSwweDU1LDB4NTUsMHg2RSwweEFDLDB4NDcsMHg3Miww
eDAyLDB4MEEsMHhBQiwweEY1LAotICAgIDB4QUYsMHhCQywweEVDLDB4QTMsMHgwMiwweDIyLDB4
QkIsMHhFNSwweENGLDB4QkMsMHgyRSwweEFDLDB4ODAsMHgwQSwweEJGLDB4NTcsCi0gICAgMHhE
MCwweEJDLDB4NEUsMHhBQywweDgwLDB4MjgsMHhBQSwweEE1LDB4MTAsMHhDNSwweEFGLDB4QkMs
MHg5RCwweDk3LDB4M0IsMHhBNSwKLSAgICAweDY2LDB4NzIsMHgyNSwweDZBLDB4NkIsMHhFQSww
eDdBLDB4QkEsMHg0NiwweDcyLDB4MDUsMHg2QSwweDBELDB4ODIsMHgwMCwweDJDLAotICAgIDB4
NjcsMHg3MiwweDI1LDB4NkEsMHhFNiwweEQzLDB4NkYsMHhFNywweDY2LDB4NzIsMHgyNSwweDZB
LDB4M0EsMHgxQiwweDkxLDB4OEYsCi0gICAgMHg0NiwweDcyLDB4MDUsMHg2QSwweEJBLDB4RkEs
MHhFRSwweDQwLDB4MjYsMHg2QSwweDA1LDB4NkEsMHhBMiwweDgxLDB4MTcsMHhCRCwKLSAgICAw
eDQ2LDB4NzIsMHhFNCwweDYxLDB4RkUsMHhGQSwweEEyLDB4MkEsMHg2NywweDcyLDB4RTUsMHg2
OSwweDlELDB4QkYsMHgyRiwweEZFLAotICAgIDB4NDYsMHg3MiwweEU0LDB4NjEsMHhBOCwweDhB
LDB4MzAsMHgxOCwweDQ2LDB4NzIsMHgwNSwweDZBLDB4RkYsMHhGRCwweDZBLDB4MjgsCi0gICAg
MHg0NiwweDcyLDB4MDUsMHg2QSwweEEwLDB4NjAsMHhCRSwweDNDLDB4ODcsMHg3QSwweDA1LDB4
NkEsMHgwQiwweDU3LDB4RDcsMHhGRiwKLSAgICAweEE3LDB4N0EsMHgwNSwweDZBLDB4MDgsMHhB
QSwweDY3LDB4NTcsMHhBNywweDdBLDB4MDUsMHg2QSwweDIwLDB4ODIsMHhBQiwweEJELAotICAg
IDB4QTcsMHg4MiwweDQ2LDB4NzIsMHhDMywweDIzLDB4MkEsMHhCOSwweEM3LDB4ODIsMHg4Nyww
eDdBLDB4REQsMHhGNywweERGLDB4NzksCi0gICAgMHhDNywweDgyLDB4NjYsMHg3MiwweDc3LDB4
QUUsMHhFQSwweEUzLDB4QzcsMHg4MiwweDY2LDB4NzIsMHg4QiwweEFFLDB4QkIsMHhERiwKLSAg
ICAweEM3LDB4ODIsMHg4NywweDdBLDB4NzksMHhFQSwweEUyLDB4NjIsMHhDNywweDgyLDB4NjYs
MHg3MiwweDI5LDB4QUEsMHhGRiwweDdGLAotICAgIDB4QzcsMHg4MiwweDg3LDB4N0EsMHhGNyww
eDZELDB4RjksMHg3QSwweEM4LDB4ODIsMHg2NiwweDdBLDB4RjksMHhCRSwweEJBLDB4QTMsCi0g
ICAgMHhDNywweDgyLDB4NjcsMHg3QSwweEZGLDB4QUEsMHg2QSwweEZBLDB4QzgsMHg4MiwweDg3
LDB4N0EsMHhERCwweERELDB4NjgsMHhGNiwKLSAgICAweEE3LDB4N0EsMHg4NiwweDdBLDB4NkQs
MHg4MywweDBCLDB4MEUsMHhDNiwweDgyLDB4NjUsMHg3MiwweERFLDB4RUUsMHhFOCwweEI4LAot
ICAgIDB4QzcsMHg4MiwweDY2LDB4NzIsMHg1NiwweEZGLDB4QUIsMHg4QSwweEM3LDB4ODIsMHg2
NiwweDcyLDB4NzcsMHg3RiwweEFBLDB4MkUsCi0gICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEZE
LDB4RkYsMHg3OCwweEMwLDB4QTYsMHg3QSwweDY2LDB4NzIsMHg1RSwweDY1LDB4RUIsMHhFOSwK
LSAgICAweDY2LDB4NzIsMHg0NCwweDUxLDB4N0UsMHg3OCwweEU4LDB4QTAsMHhBNiwweDYxLDB4
RTMsMHg0MCwweDdGLDB4RkEsMHhFOCwweEE4LAotICAgIDB4QTUsMHg1OSwweDIzLDB4NDksMHg1
NSwweDc3LDB4RkYsMHhGRSwweDY0LDB4NTksMHgyMywweDUxLDB4MkUsMHhCQSwweERBLDB4RTIs
Ci0gICAgMHg0NCwweDUxLDB4MDMsMHg1MSwweDYwLDB4MDAsMHhFMCwweEEwLDB4NDQsMHg1MSww
eEMyLDB4NDAsMHhGRiwweDc2LDB4RkUsMHgyQSwKLSAgICAweDAzLDB4NDksMHhDMiwweDQwLDB4
MkIsMHg4NywweEU3LDB4MEMsMHg4NSwweDYxLDB4MDMsMHg0OSwweEUyLDB4RkQsMHhEOSwweEZE
LAotICAgIDB4QzYsMHg2MSwweDI0LDB4NDksMHgyRSwweEE3LDB4QkYsMHhFRCwweEM2LDB4NjEs
MHgyNCwweDQ5LDB4QTAsMHhBQSwweEZGLDB4N0YsCi0gICAgMHhBNiwweDYxLDB4NDQsMHg0OSww
eDc4LDB4NUUsMHhGRiwweEZCLDB4ODUsMHg1MSwweEUyLDB4MzgsMHg4MiwweEY4LDB4REEsMHg3
RSwKLSAgICAweDAzLDB4NDEsMHhBMSwweDMwLDB4ODAsMHhFQSwweDdBLDB4NUYsMHhFMiwweDM4
LDB4QTIsMHgzMCwweDBDLDB4MkIsMHgyRiwweDI5LAotICAgIDB4MjMsMHg0MSwweEUzLDB4Mzgs
MHhGNywweEFBLDB4QUEsMHhCQSwweDQ0LDB4NDEsMHgwMywweDQxLDB4NTUsMHhGNSwweDhCLDB4
RTgsCi0gICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweEJGLDB4M0YsMHgyNywweDE3LDB4NDQsMHg0
MSwweEUyLDB4MzgsMHg2QSwweEYwLDB4RTAsMHhFMCwKLSAgICAweEMyLDB4NDAsMHgwMywweDM5
LDB4RTcsMHhBRiwweEFELDB4RkIsMHgyMywweDQxLDB4QzIsMHgzOCwweDY1LDB4QkYsMHg4RCww
eDBBLAotICAgIDB4ODQsMHg1OSwweDAzLDB4NDEsMHg5RCwweEE5LDB4MEYsMHgwQiwweEM1LDB4
NjEsMHg2NCwweDUxLDB4QkQsMHgzNywweDJBLDB4MkEsCi0gICAgMHgyNiwweDcyLDB4QzUsMHg2
MSwweEU1LDB4RkYsMHhGRiwweDJGLDB4MDYsMHg3MiwweEE0LDB4NjEsMHg3OCwweDc4LDB4Nzgs
MHhBRSwKLSAgICAweDA2LDB4NzIsMHg4NCwweDU5LDB4RjcsMHhERiwweEZCLDB4OEEsMHhFNSww
eDYxLDB4QTQsMHg2MSwweEY3LDB4M0QsMHgyRCwweEQ3LAotICAgIDB4QzUsMHg2MSwweDIzLDB4
NDksMHhGOCwweDc4LDB4NzgsMHg2OCwweDg1LDB4NTEsMHgwMywweDQ5LDB4MEEsMHhCQiwweEZG
LDB4RjUsCi0gICAgMHg2NCwweDUxLDB4MjMsMHg0OSwweDIwLDB4QjAsMHhGRCwweEI3LDB4RTYs
MHg2MSwweDY0LDB4NTEsMHg4MywweEJBLDB4RkQsMHhENSwKLSAgICAweDg1LDB4NTEsMHgwMiww
eDQxLDB4N0UsMHg1RSwweDVDLDB4NzgsMHg0MywweDQ5LDB4MDMsMHg0MSwweEE5LDB4QTUsMHhB
RCwweEFELAotICAgIDB4QTUsMHg1OSwweDQ0LDB4NDksMHgyRCwweDBCLDB4MDksMHhBRCwweEE1
LDB4NTksMHg0NCwweDUxLDB4QUEsMHg2RSwweDdDLDB4NTgsCi0gICAgMHhFNiwweDY5LDB4MjMs
MHg0OSwweDBBLDB4QkYsMHhGRiwweEZELDB4NjgsMHg3QSwweDg1LDB4NTksMHgwMiwweDBCLDB4
MkQsMHgyRCwKLSAgICAweEE5LDB4OEEsMHg0NywweDdBLDB4N0UsMHg2QSwweEYzLDB4QUYsMHg4
OCwweDgyLDB4QzUsMHg2OSwweEQ1LDB4RkYsMHhFQSwweDgwLAotICAgIDB4NjcsMHg3QSwweDA1
LDB4NzIsMHg4QiwweDJBLDB4MkIsMHhFNywweEE4LDB4ODIsMHgyNiwweDZBLDB4MjcsMHgyNyww
eEJBLDB4N0EsCi0gICAgMHhDOSwweDhBLDB4NDcsMHg3MiwweDBBLDB4QUYsMHhCQiwweEE1LDB4
QTgsMHg4MiwweDQ2LDB4NzIsMHg2MCwweEU4LDB4N0UsMHg1NywKLSAgICAweDg4LDB4ODIsMHgw
NiwweDZBLDB4QjcsMHhCNywweEFGLDB4MEUsMHhBOCwweDgyLDB4NDcsMHg3QSwweEI1LDB4RkQs
MHhFQSwweDgwLAotICAgIDB4ODgsMHg3QSwweDI2LDB4NzIsMHg3QywweEZBLDB4QjgsMHg4OCww
eDg4LDB4ODIsMHgyNiwweDcyLDB4MjksMHhBQSwweEFFLDB4ODIsCi0gICAgMHhDOSwweDhBLDB4
NDcsMHg3QSwweEUyLDB4RkYsMHg1RCwweDc3LDB4ODgsMHg3QSwweDQ3LDB4N0EsMHgzQiwweDJC
LDB4MEQsMHg1RSwKLSAgICAweEE4LDB4ODIsMHgyNywweDcyLDB4MEEsMHhCNywweDc1LDB4NTcs
MHhDOSwweDgyLDB4MDYsMHg2QSwweDAwLDB4QUEsMHhGRiwweEQ1LAotICAgIDB4QzksMHg4Miww
eDI3LDB4NkEsMHg4MCwweDJBLDB4OUYsMHhENSwweENDLDB4OUIsMHg2OCwweDcyLDB4MEYsMHhB
RiwweEZELDB4RDUsCi0gICAgMHhEMCwweEJDLDB4NDYsMHg3MiwweDAyLDB4MkEsMHg3RiwweDU1
LDB4MTEsMHhDNSwweDQ2LDB4NzIsMHgwMCwweEJFLDB4REQsMHg1NSwKLSAgICAweEY0LDB4RTUs
MHhDOCwweDdBLDB4MDIsMHgyQiwweEFGLDB4RjUsMHg3NiwweEVFLDB4NEUsMHhBQywweDAwLDB4
MDAsMHgwQiwweEJELAotICAgIDB4OTYsMHhGNiwweEQzLDB4REQsMHgwMCwweDAwLDB4QUEsMHhB
RCwweDk2LDB4RjYsMHg1NSwweEVFLDB4ODAsMHgyMCwweEVGLDB4RkIsCi0gICAgMHg5NiwweEY2
LDB4NTYsMHhFRSwweEVBLDB4RkUsMHg5RiwweDVGLDB4NTUsMHhGNiwweDc2LDB4RUUsMHg1NSww
eDU1LDB4REQsMHhGRiwKLSAgICAweDc2LDB4RjYsMHgzNSwweEU2LDB4RTAsMHg3RSwweERCLDB4
RkYsMHg3NSwweEVFLDB4MzQsMHhFNiwweEUwLDB4RDksMHhGNywweDU3LAotICAgIDB4NTUsMHhF
RSwweDE0LDB4RTYsMHg4OCwweEFBLDB4RkUsMHhGRiwweDc1LDB4RUUsMHgzNCwweEU2LDB4QUIs
MHhFRiwweEQ1LDB4NTUsCi0gICAgMHg5NiwweEY2LDB4MzUsMHhFNiwweDJBLDB4RUEsMHhBRCww
eEY1LDB4NzUsMHhFRSwweDM0LDB4RUUsMHhBOCwweEZBLDB4RkYsMHg3RiwKLSAgICAweDk2LDB4
RjYsMHgzNCwweEU2LDB4OEIsMHhCQiwweEY3LDB4NTUsMHg5NiwweEY2LDB4MzQsMHhFNiwweDhB
LDB4QUEsMHhCRiwweEY1LAotICAgIDB4OTYsMHhGNiwweDM1LDB4RTYsMHg4MCwweEVBLDB4RkUs
MHg1RCwweDc1LDB4RUUsMHgzNSwweEU2LDB4ODgsMHhGRSwweEZGLDB4NTUsCi0gICAgMHg3NSww
eEVFLDB4MzUsMHhFNiwweEJFLDB4MUEsMHhBRiwweEI1LDB4NzYsMHhFRSwweDU1LDB4RUUsMHhE
QiwweEY4LDB4OEEsMHg4MiwKLSAgICAweDU2LDB4RjYsMHg5NiwweEVFLDB4QkUsMHhGRSwweEZG
LDB4RkUsMHg5NiwweEY2LDB4NzYsMHhFRSwweDU5LDB4RkUsMHhCQSwweDJBLAotICAgIDB4OTYs
MHhGNiwweDU1LDB4RUUsMHhGRiwweEZFLDB4RkEsMHhGOCwweDU1LDB4RUUsMHgxNSwweEU2LDB4
RkMsMHhGQywweEI4LDB4QzAsCi0gICAgMHg1NSwweEVFLDB4RDMsMHhERCwweDYyLDB4NzIsMHhB
OCwweEE4LDB4RjMsMHhERCwweDcyLDB4Q0QsMHhGRSwweEZFLDB4RkMsMHg3OCwKLSAgICAweEQz
LDB4REQsMHg3MiwweEQ1LDB4MEIsMHgyQSwweDJCLDB4MEQsMHgxNCwweEU2LDB4RDMsMHhERCww
eEZELDB4REYsMHhBRiwweEJELAotICAgIDB4MTQsMHhFNiwweEQzLDB4REQsMHg5RiwweDNGLDB4
MkUsMHgwQSwweDU1LDB4RUUsMHgxNCwweEU2LDB4N0QsMHg3RiwweEZCLDB4QUIsCi0gICAgMHg3
NSwweEVFLDB4MzQsMHhFNiwweDJELDB4QTksMHhBNSwweDJCLDB4OTYsMHhFRSwweDc1LDB4RUUs
MHg4QSwweEU1LDB4QUQsMHgzNywKLSAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4NzUsMHhFRiww
eEZFLDB4RjYsMHg5NiwweEVFLDB4NzYsMHhFRSwweDU3LDB4NTUsMHg1QSwweDZDLAotICAgIDB4
NTUsMHhFRSwweDkyLDB4RDUsMHg3OCwweEUwLDB4ODAsMHgwMCwweEY0LDB4REQsMHg3MiwweENE
LDB4NTUsMHhGRSwweEZBLDB4RTgsCi0gICAgMHhCMywweERELDB4MzEsMHhDRCwweEY3LDB4RkUs
MHhFQSwweDgwLDB4NzIsMHhENSwweDUxLDB4Q0QsMHgzQywweDJFLDB4MkYsMHgyMywKLSAgICAw
eEIzLDB4RDUsMHhFRCwweEEzLDB4NkEsMHhFOCwweEE4LDB4MDAsMHhCMCwweEJDLDB4MjcsMHg2
QSwweDU3LDB4NUUsMHhGRSwweEU4LAotICAgIDB4ODksMHg3QSwweEU2LDB4NjEsMHhERCwweEVF
LDB4QUEsMHgwMCwweDg4LDB4N0EsMHgwNiwweDZBLDB4M0QsMHhGRiwweERFLDB4QTAsCi0gICAg
MHhFQywweDlCLDB4MjYsMHg2QSwweDBCLDB4OTUsMHhENSwweEQ1LDB4MEUsMHhBNCwweDY4LDB4
NzIsMHgwMCwweEFBLDB4RkYsMHg1NSwKLSAgICAweDRFLDB4QUMsMHg4OSwweDcyLDB4MjIsMHgw
QSwweDJGLDB4MjUsMHgxMCwweEM1LDB4OEUsMHhCNCwweDJELDB4QTksMHgwRCwweEE5LAotICAg
IDB4NjYsMHg3MiwweDI2LDB4NkEsMHg3QSwweEE4LDB4M0EsMHhGMiwweDY2LDB4NzIsMHgwNCww
eDZBLDB4QTYsMHhBMywweEZFLDB4RkEsCi0gICAgMHg2NiwweDcyLDB4MjUsMHg2QSwweEFBLDB4
QUUsMHhCQiwweEZCLDB4NjcsMHg3MiwweDI2LDB4NzIsMHhBRiwweEFGLDB4ODMsMHg2RSwKLSAg
ICAweDY3LDB4NzIsMHgwNSwweDZBLDB4RUUsMHhBQiwweDhCLDB4ODksMHg2NiwweDcyLDB4MDUs
MHg2QSwweDdBLDB4RkIsMHhBRiwweDI4LAotICAgIDB4NjYsMHg3MiwweDA1LDB4NkEsMHhCQiww
eEE3LDB4RUUsMHgzMiwweDY2LDB4NzIsMHgwNSwweDZBLDB4RkYsMHhBQSwweEE4LDB4OUUsCi0g
ICAgMHg2NiwweDcyLDB4MjUsMHg2QSwweERGLDB4QTMsMHg2MiwweDdBLDB4ODYsMHg3MiwweDI2
LDB4NkEsMHg1RiwweDVGLDB4RkIsMHhFQiwKLSAgICAweDQ2LDB4NzIsMHgwNSwweDZBLDB4MUUs
MHgyRiwweEFCLDB4QUUsMHg2NywweDcyLDB4MjYsMHg2QSwweDlGLDB4RjcsMHhCQiwweDhGLAot
ICAgIDB4NjcsMHg3MiwweDA1LDB4NkEsMHg3NiwweEM3LDB4RUUsMHhGOCwweDY3LDB4NzIsMHgw
NSwweDZBLDB4QUQsMHhGRiwweEJCLDB4QjgsCi0gICAgMHg4NywweDdBLDB4RTQsMHg2OSwweDJE
LDB4QUYsMHhFQSwweEVBLDB4QTcsMHg3QSwweDA1LDB4NkEsMHgwMiwweEFBLDB4QUQsMHg3RiwK
LSAgICAweEE3LDB4N0EsMHgwNSwweDZBLDB4MDAsMHgwMCwweEJCLDB4RjUsMHhBNywweDdBLDB4
NjYsMHg3MiwweDhFLDB4OEEsMHgwQiwweDI1LAotICAgIDB4RTgsMHg4MiwweDg2LDB4N0EsMHhG
QiwweDU1LDB4NUUsMHg1MywweEE3LDB4ODIsMHg4NywweDdBLDB4NTUsMHgyRiwweDJGLDB4QkIs
Ci0gICAgMHhDNywweDgyLDB4ODcsMHg3QSwweEZGLDB4NUUsMHhGOCwweEFBLDB4QTcsMHg4Miww
eDY3LDB4N0EsMHg4QSwweEFFLDB4M0MsMHhCMCwKLSAgICAweEM3LDB4ODIsMHg4NywweDdBLDB4
NkIsMHhGQSwweEZCLDB4RkEsMHhDNywweDgyLDB4ODcsMHg3QSwweENGLDB4N0IsMHhGRSwweDVG
LAotICAgIDB4QzcsMHg4MiwweDg2LDB4N0EsMHhCRiwweEZCLDB4RkYsMHgyRSwweEM3LDB4ODIs
MHg4NiwweDdBLDB4NkYsMHhGRiwweEI4LDB4NzgsCi0gICAgMHhDNywweDgyLDB4ODYsMHg3QSww
eDRFLDB4RUUsMHhCNywweDM1LDB4QzcsMHg4MiwweEE3LDB4N0EsMHhGNSwweEI1LDB4QkUsMHhF
RCwKLSAgICAweEE3LDB4ODIsMHg4NywweDdBLDB4QjgsMHhGMywweDg4LDB4MEEsMHhBNywweDgy
LDB4ODYsMHg3MiwweDdGLDB4QkMsMHgyMiwweDAwLAotICAgIDB4QTcsMHg4MiwweDA2LDB4NkEs
MHg3QSwweEEyLDB4QTAsMHg4MCwweDI2LDB4NzIsMHg2NCwweDU5LDB4NUUsMHg1QywweDc4LDB4
RTAsCi0gICAgMHhDNSwweDY5LDB4NjQsMHg1OSwweDU1LDB4NzUsMHhERiwweEFBLDB4QzUsMHg2
MSwweDIzLDB4NTEsMHg3RiwweERCLDB4QUEsMHgwOCwKLSAgICAweEM1LDB4NjksMHgyMywweDUx
LDB4N0YsMHg3QiwweEE4LDB4QTgsMHhDNiwweDY5LDB4NDQsMHg1MSwweDU1LDB4RjUsMHhCRiww
eDBCLAotICAgIDB4QTUsMHg2MSwweDAzLDB4NDksMHg1RiwweEVFLDB4QTAsMHg4MCwweDg1LDB4
NTksMHgyMywweDQ5LDB4QUQsMHhBMiwweDI4LDB4RTIsCi0gICAgMHg4NSwweDUxLDB4NDQsMHg1
MSwweDhCLDB4QTIsMHhEQywweDU2LDB4ODUsMHg1MSwweDIzLDB4NDksMHg3QSwweEQ4LDB4RkUs
MHhGRiwKLSAgICAweDg1LDB4NTEsMHgwMywweDM5LDB4QzIsMHhFQSwweEZBLDB4N0YsMHgyNCww
eDQxLDB4QTEsMHgzMCwweEY4LDB4RjgsMHhENiwweEQ3LAotICAgIDB4QzIsMHgzMCwweEEyLDB4
MzAsMHg1RiwweDM1LDB4MjUsMHgwOCwweEUyLDB4MzgsMHhBMiwweDMwLDB4MkIsMHhBQiwweEEy
LDB4QjIsCi0gICAgMHg0NCwweDQxLDB4RTMsMHgzOCwweDJGLDB4MkQsMHhBRiwweEZBLDB4NjQs
MHg0OSwweDAzLDB4MzksMHhGQywweERGLDB4N0YsMHhGNSwKLSAgICAweDAzLDB4NDEsMHhFMiww
eDM4LDB4MjgsMHg2MCwweDc4LDB4NkYsMHgyMywweDQxLDB4RTIsMHgzOCwweDgwLDB4MkIsMHhC
RCwweDBELAotICAgIDB4NDQsMHg0OSwweEUyLDB4MzgsMHg3NSwweEFGLDB4QUEsMHgyMiwweDg1
LDB4NTEsMHgwMywweDQxLDB4RUYsMHgyRCwweDhBLDB4RUEsCi0gICAgMHg4NCwweDUxLDB4MjMs
MHg0OSwweDNELDB4QkYsMHhGNywweEZELDB4QzUsMHg2MSwweDQ0LDB4NTEsMHgwQSwweDNFLDB4
MkQsMHhGRCwKLSAgICAweDQ3LDB4NzIsMHhBNSwweDYxLDB4MEEsMHgwQSwweEFCLDB4RjksMHg2
OCwweDdBLDB4RTUsMHg2OSwweDU1LDB4QjcsMHg4RiwweDA5LAotICAgIDB4NjgsMHg3QSwweEU1
LDB4NjksMHg1RiwweEZFLDB4RTgsMHhFMCwweDA2LDB4NkEsMHg2NCwweDUxLDB4RkUsMHhGQSww
eDVDLDB4NUUsCi0gICAgMHhDNSwweDYxLDB4MDMsMHg0MSwweEU4LDB4RTgsMHhGRSwweEZGLDB4
NDQsMHg0OSwweEUyLDB4NDAsMHgwRSwweEJDLDB4NzgsMHhGRSwKLSAgICAweEE2LDB4NTksMHgy
MywweDQ5LDB4RUYsMHg4QiwweEJELDB4QTUsMHg4NSwweDUxLDB4MDMsMHg0MSwweDJBLDB4QkUs
MHg2QSwweEYwLAotICAgIDB4QTUsMHg1MSwweDAzLDB4NDEsMHg3OCwweEZBLDB4RkYsMHhENSww
eDQ0LDB4NDksMHgwMywweDQxLDB4MkQsMHgwRCwweDBBLDB4MkIsCi0gICAgMHg4NCwweDUxLDB4
NDQsMHg0OSwweEJGLDB4QkQsMHgzRiwweENBLDB4ODUsMHg1MSwweDIzLDB4NDksMHg5MiwweEYy
LDB4RTIsMHg4QSwKLSAgICAweEM2LDB4NjEsMHgyMywweDQ5LDB4RUQsMHhCRiwweDNELDB4MjUs
MHg2OCwweDdBLDB4QzYsMHg2MSwweDA1LDB4MjUsMHhBNSwweDJELAotICAgIDB4NEEsMHg5Myww
eDY4LDB4N0EsMHhCRiwweDJELDB4QUQsMHhBQiwweDZCLDB4OUIsMHhDOSwweDhBLDB4N0YsMHhF
RSwweEUwLDB4RUEsCi0gICAgMHhFOSwweDhBLDB4MjYsMHg2QSwweDdGLDB4RkEsMHhFOCwweEUy
LDB4MjYsMHg3MiwweEU1LDB4NjksMHgwMiwweEFFLDB4MDYsMHg5NCwKLSAgICAweDY3LDB4NzIs
MHhFNiwweDY5LDB4MkIsMHhBRiwweEJELDB4QkYsMHg4OCwweDdBLDB4MjYsMHg3MiwweDlDLDB4
QTUsMHgzNywweDNCLAotICAgIDB4ODgsMHg4MiwweDQ3LDB4N0EsMHhBRiwweERFLDB4ODIsMHgw
MCwweEM4LDB4OEEsMHg2NywweDdBLDB4QkEsMHgzQiwweEFGLDB4OTUsCi0gICAgMHgwOSwweDkz
LDB4QTgsMHg4MiwweDVELDB4QkYsMHhBQSwweDJCLDB4MDksMHg4QiwweDY3LDB4N0EsMHhGNyww
eEZFLDB4RkEsMHhBOCwKLSAgICAweDg4LDB4ODIsMHg0NywweDdBLDB4RkYsMHg1RSwweEZBLDB4
MDIsMHg2OCwweDdBLDB4MjcsMHg3MiwweEI4LDB4RkQsMHg3RCwweEMzLAotICAgIDB4NjgsMHg3
QSwweDA2LDB4NkEsMHg1NywweDVFLDB4REIsMHgyRiwweDg4LDB4N0EsMHhFNiwweDYxLDB4NUYs
MHg1RCwweDZFLDB4QTIsCi0gICAgMHg2NywweDdBLDB4QzYsMHg2MSwweEI3LDB4QkQsMHhBQiww
eDJBLDB4ODgsMHg3QSwweDI2LDB4NkEsMHg4QiwweDg2LDB4QUYsMHg2OCwKLSAgICAweDg3LDB4
NzIsMHg0NiwweDcyLDB4QUMsMHg4MiwweDNBLDB4RDUsMHg2NywweDcyLDB4MjYsMHg2QSwweDdF
LDB4N0MsMHhCMCwweEEyLAotICAgIDB4QTgsMHg3QSwweEU2LDB4NjEsMHgwQSwweEFCLDB4Rjcs
MHg1RiwweEYwLDB4QzQsMHg4OCwweDcyLDB4MkIsMHhBRCwweDk1LDB4NTUsCi0gICAgMHgzNSww
eEVFLDB4NEEsMHg5MywweDAyLDB4MEEsMHgyQiwweEJELDB4NzYsMHhGNiwweEQzLDB4REQsMHgw
MCwweDIyLDB4QUEsMHg1NSwKLSAgICAweDU1LDB4RUUsMHhGNCwweEU1LDB4MDAsMHgwMCwweDhB
LDB4OTUsMHg1NSwweEVFLDB4MTUsMHhFNiwweDhBLDB4RTIsMHg2QywweDdGLAotICAgIDB4NTUs
MHhFRSwweDE0LDB4RTYsMHhBMiwweEEyLDB4MjMsMHhBRiwweDE1LDB4RUUsMHgzNCwweEU2LDB4
NzksMHg3RiwweDdELDB4QkYsCi0gICAgMHgzNSwweEU2LDB4MTQsMHhFNiwweEEwLDB4QjAsMHg2
OCwweDRGLDB4MzQsMHhFNiwweEQ0LDB4RTUsMHhBMCwweDJBLDB4MEEsMHhCQSwKLSAgICAweDM0
LDB4RTYsMHhGNCwweEU1LDB4MDgsMHgwOCwweDk2LDB4QkUsMHgxNSwweEVFLDB4MzQsMHhFNiww
eDc1LDB4RkYsMHg3RiwweEZGLAotICAgIDB4MzUsMHhFNiwweEQzLDB4REQsMHhBMiwweEZBLDB4
REUsMHhGOCwweDM1LDB4RTYsMHhEMywweERELDB4MkEsMHhGQiwweEZELDB4RjcsCi0gICAgMHgx
NCwweEU2LDB4RDMsMHhERCwweEU4LDB4RkQsMHhCNSwweDJCLDB4MzUsMHhFNiwweEY0LDB4RTUs
MHgwMywweDJCLDB4MEIsMHgzRiwKLSAgICAweDc2LDB4RUUsMHgzNSwweEU2LDB4OTUsMHhCRCww
eEFCLDB4QUYsMHg5NiwweEY2LDB4NTUsMHhFRSwweEVCLDB4RkYsMHhBRiwweEE1LAotICAgIDB4
NzYsMHhGNiwweDk2LDB4RUUsMHhFOCwweEZFLDB4QkYsMHhGQiwweDk2LDB4RjYsMHg1NSwweEVF
LDB4ODgsMHhFQSwweDdBLDB4NUUsCi0gICAgMHg3NiwweEVFLDB4MzUsMHhFNiwweEMwLDB4QUUs
MHhGNSwweERGLDB4NTUsMHhFRSwweDM1LDB4RTYsMHhDMCwweDYyLDB4OEEsMHgyQiwKLSAgICAw
eDU1LDB4RUUsMHhGNCwweERELDB4N0EsMHg3QSwweEVBLDB4RTAsMHgxNCwweEU2LDB4NzIsMHhD
RCwweDdGLDB4N0UsMHhFOCwweDAwLAotICAgIDB4RDMsMHhERCwweDcyLDB4Q0QsMHg5RCwweERG
LDB4QkUsMHgwOCwweDE0LDB4RTYsMHhCMiwweERELDB4QUYsMHhBNSwweDNELDB4MEEsCi0gICAg
MHgzNCwweEU2LDB4MTQsMHhFNiwweDc1LDB4RTUsMHhGNywweDU1LDB4NTUsMHhFRSwweEY0LDB4
REQsMHg4QiwweEJCLDB4QkYsMHhGNywKLSAgICAweDc1LDB4RUUsMHgzNSwweEU2LDB4MEUsMHgy
RiwweEJELDB4QkQsMHg5NiwweEVFLDB4NzUsMHhFRSwweEVELDB4RkYsMHgwQSwweDBBLAotICAg
IDB4QjYsMHhGNiwweDc2LDB4RUUsMHg3RiwweEZCLDB4RkUsMHhGRSwweDk2LDB4RUUsMHg3Niww
eEVFLDB4N0MsMHhGRSwweEZGLDB4RkUsCi0gICAgMHg5NiwweEVFLDB4NTUsMHhFNiwweDdCLDB4
RkEsMHhBOCwweEFBLDB4NzUsMHhFRSwweEIyLDB4RDUsMHg3RiwweEQ4LDB4RTgsMHhFMCwKLSAg
ICAweEIzLDB4REQsMHhGMywweEQ1LDB4QUEsMHhFQiwweEFCLDB4QUIsMHhCMywweERELDB4NzEs
MHhDRCwweDdGLDB4N0MsMHg1QywweEUwLAotICAgIDB4RDMsMHhERCwweDcxLDB4Q0QsMHgwQSww
eDBCLDB4MEYsMHgyNSwweEY0LDB4REQsMHgyRSwweEFDLDB4NzgsMHhBMCwweDAwLDB4MDAsCi0g
ICAgMHhCMywweEQ1LDB4QzksMHg3QSwweDU3LDB4RkEsMHg4MCwweDAwLDB4MTAsMHhDNSwweEE4
LDB4N0EsMHg1NSwweDVELDB4RkEsMHg4MCwKLSAgICAweDBELDB4QTQsMHg4NywweDcyLDB4NTUs
MHg1NSwweEZFLDB4ODAsMHg4QiwweDkzLDB4MjYsMHg2QSwweDVGLDB4RkQsMHhCRiwweDgwLAot
ICAgIDB4QUYsMHhCNCwweEM5LDB4N0EsMHgzNSwweDI1LDB4MjksMHgwQiwweEYwLDB4QzQsMHhB
RiwweEJDLDB4MDksMHgyOSwweDBBLDB4MEUsCi0gICAgMHg2NiwweDcyLDB4MjUsMHg2QSwweDYw
LDB4QkEsMHhEMiwweEEwLDB4ODcsMHg3MiwweDQ2LDB4NzIsMHg1QSwweDc2LDB4NzcsMHhCQSwK
LSAgICAweDY2LDB4NzIsMHgyNiwweDcyLDB4QkEsMHhGRiwweEVGLDB4RUEsMHg4NiwweDcyLDB4
MjYsMHg3MiwweDdGLDB4REYsMHhFRCwweEQ1LAotICAgIDB4NjcsMHg3QSwweDI2LDB4NkEsMHhD
RCwweDhCLDB4QUMsMHhBRCwweDg3LDB4N0EsMHgyNSwweDZBLDB4QTUsMHg5RCwweEJBLDB4QkYs
Ci0gICAgMHg4NywweDdBLDB4MDQsMHg2QSwweEJCLDB4RkUsMHhEQSwweEEyLDB4NjcsMHg3QSww
eDI1LDB4NkEsMHg1RiwweEM5LDB4MkYsMHhCRiwKLSAgICAweDY2LDB4NzIsMHgyNiwweDcyLDB4
N0QsMHhGRSwweDk2LDB4REUsMHg2NiwweDcyLDB4MDUsMHg2QSwweDAyLDB4Q0EsMHgyNywweDAx
LAotICAgIDB4NjYsMHg3MiwweDI2LDB4NkEsMHhENiwweEFELDB4QkUsMHg4OCwweDY2LDB4NzIs
MHgyNiwweDZBLDB4RkYsMHgzRCwweEJFLDB4QUUsCi0gICAgMHg4NywweDcyLDB4MjYsMHg3Miww
eEQ3LDB4RDUsMHhGRiwweEZCLDB4NDYsMHg3MiwweDI1LDB4NkEsMHhBMCwweDgzLDB4OEEsMHhF
QSwKLSAgICAweDQ2LDB4NzIsMHgwNSwweDZBLDB4ODIsMHgwRiwweDJCLDB4M0EsMHg2NiwweDcy
LDB4MDUsMHg2QSwweDZFLDB4RUMsMHhEOCwweEZFLAotICAgIDB4NDUsMHg3MiwweDA1LDB4NkEs
MHg5RCwweDkwLDB4QzIsMHgzOCwweDg3LDB4N0EsMHgwNCwweDZBLDB4MjcsMHhGRiwweERGLDB4
N0YsCi0gICAgMHhBNywweDdBLDB4MDQsMHg2QSwweEIwLDB4QkQsMHhCNywweEVELDB4QTcsMHg4
MiwweDI1LDB4NzIsMHgwMiwweEEwLDB4RkIsMHg3RSwKLSAgICAweEE3LDB4ODIsMHg0NiwweDcy
LDB4MDAsMHhBOCwweEEzLDB4RkQsMHhBNywweDgyLDB4NjcsMHg3QSwweEFBLDB4MkEsMHhGQSww
eDg1LAotICAgIDB4QzgsMHg4MiwweDg2LDB4N0EsMHhFNSwweEFGLDB4RUEsMHhEQiwweEE3LDB4
ODIsMHg2NiwweDdBLDB4MDAsMHg4MCwweDE4LDB4NDAsCi0gICAgMHhDNywweDgyLDB4ODYsMHg3
QSwweDlFLDB4QkYsMHg4QywweEFDLDB4QzcsMHg4MiwweDg3LDB4N0EsMHhGOCwweDBBLDB4QTIs
MHhEOCwKLSAgICAweEU4LDB4OEEsMHg4NiwweDdBLDB4QjcsMHgyRiwweDNCLDB4QUYsMHhFNyww
eDgyLDB4QTcsMHg4MiwweERBLDB4RDYsMHg3NSwweERGLAotICAgIDB4QzcsMHg4MiwweDg2LDB4
N0EsMHhBNiwweEY2LDB4REMsMHhGQywweEM4LDB4ODIsMHg4NywweDgyLDB4QkUsMHgyNywweDJG
LDB4QTIsCi0gICAgMHhFOCwweDhBLDB4ODcsMHg3QSwweDVGLDB4NUYsMHhFRiwweEFCLDB4QTcs
MHg4MiwweEU1LDB4NjksMHhGNiwweEJFLDB4MjgsMHgyOCwKLSAgICAweEU4LDB4OEEsMHgyNiww
eDcyLDB4NTUsMHhFQSwweDgwLDB4QTAsMHg4NywweDgyLDB4RTUsMHg2OSwweDU3LDB4RjcsMHhB
OCwweDA4LAotICAgIDB4QTcsMHg3QSwweEE1LDB4NjEsMHhENywweEZFLDB4QUEsMHhBMiwweDQ3
LDB4NzIsMHhBNSwweDU5LDB4RjcsMHg3QiwweDU4LDB4NTgsCi0gICAgMHhBNSwweDU5LDB4NDQs
MHg1MSwweEU4LDB4RjAsMHg3OCwweDVBLDB4MjMsMHg1MSwweDQ0LDB4NDksMHg1NywweEU3LDB4
REUsMHg1RiwKLSAgICAweDQ0LDB4NDksMHhFMywweDM4LDB4ODAsMHg4MCwweDgwLDB4NzAsMHg2
NCwweDQ5LDB4QzIsMHgzMCwweEU4LDB4RkYsMHg3RiwweDdGLAotICAgIDB4MjMsMHg0MSwweEEy
LDB4MzAsMHg4QSwweEVGLDB4QUQsMHhBRCwweDAzLDB4MzksMHhBMSwweDMwLDB4NTUsMHg1RSww
eEY4LDB4RkMsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDU1LDB4RDUsMHgxRCwweDI5LDB4
MjQsMHgzOSwweEMyLDB4MzAsMHg5RiwweEJGLDB4QUUsMHhCOCwKLSAgICAweDI0LDB4NDEsMHgw
MywweDM5LDB4NzMsMHhGRCwweDg1LDB4NTcsMHgwMywweDM5LDB4QTIsMHgzMCwweEE4LDB4RDgs
MHhGQywweEY4LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHhDQiwweEM1LDB4QjUsMHhBNyww
eDY1LDB4NDksMHhFMywweDM4LDB4QjUsMHgzRiwweDJELDB4MjUsCi0gICAgMHg4NSwweDUxLDB4
NDQsMHg0OSwweDVELDB4N0YsMHhEQSwweENGLDB4NjQsMHg1MSwweDIzLDB4NDEsMHg2MiwweDYz
LDB4RUEsMHhGRiwKLSAgICAweDY0LDB4NTEsMHgyNCwweDQ5LDB4QTUsMHhBRiwweDNGLDB4MkQs
MHhBNSwweDYxLDB4NDQsMHg0OSwweEE1LDB4MzUsMHhBRiwweEZFLAotICAgIDB4MDYsMHg2QSww
eDY0LDB4NTksMHgwQiwweDBCLDB4QkYsMHhENSwweDY4LDB4N0EsMHhDNiwweDYxLDB4MEIsMHhB
QSwweEE5LDB4QUQsCi0gICAgMHg2OCwweDdBLDB4QzYsMHg2MSwweDgwLDB4QzAsMHhFQSwweERG
LDB4RTYsMHg2MSwweDQ0LDB4NDksMHg3OCwweDdDLDB4RkMsMHg2RSwKLSAgICAweDQ0LDB4NDks
MHhDMiwweDM4LDB4RkYsMHg1RSwweDU0LDB4REMsMHgwMywweDQxLDB4RTMsMHg0MCwweDM4LDB4
M0QsMHgxRiwweERBLAotICAgIDB4ODUsMHg1MSwweDAzLDB4NDEsMHgyRiwweDA5LDB4MkIsMHgy
RCwweEM2LDB4NTksMHgwMywweDQxLDB4N0EsMHhFQSwweDI4LDB4MjIsCi0gICAgMHhDNiwweDU5
LDB4MDMsMHg0MSwweDU1LDB4NTcsMHg1QSwweEEwLDB4NjQsMHg1MSwweDAzLDB4NDEsMHgyQiww
eDJGLDB4MkQsMHg4RSwKLSAgICAweEE1LDB4NTksMHgyMywweDQ5LDB4MjgsMHhFMCwweEY2LDB4
RDcsMHg4NSwweDU5LDB4MDMsMHg0MSwweEFBLDB4RTIsMHhFRiwweDdGLAotICAgIDB4QTYsMHg1
OSwweEUyLDB4NDAsMHgyRiwweEJGLDB4QjcsMHhGNSwweDg4LDB4N0EsMHg4NSwweDU5LDB4MkYs
MHgyQiwweDBCLDB4QUQsCi0gICAgMHgyOSwweDhCLDB4QTgsMHg4MiwweEFBLDB4NjIsMHhBRiww
eEY1LDB4MkEsMHg5MywweDg2LDB4N0EsMHg4MiwweEFBLDB4RUIsMHg3NSwKLSAgICAweEE4LDB4
ODIsMHgwNSwweDZBLDB4RTgsMHg3OCwweDU4LDB4NzgsMHgyNiwweDZBLDB4NjMsMHg1MSwweDI4
LDB4QkEsMHhCRiwweEY3LAotICAgIDB4NDcsMHg3MiwweEE1LDB4NTksMHgyQSwweDIzLDB4QUIs
MHhBRCwweDQ3LDB4NzIsMHgwNiwweDZBLDB4MjIsMHhFRSwweDhGLDB4ODUsCi0gICAgMHg4OCww
eDdBLDB4MjYsMHg3MiwweEU4LDB4RUYsMHhGOSwweDU1LDB4RTksMHg4QSwweDI2LDB4NzIsMHhC
RiwweDNGLDB4MjksMHhBRCwKLSAgICAweEU5LDB4OEEsMHg4OCwweDgyLDB4MjIsMHgyMCwweEE4
LDB4NkUsMHgyQSwweDkzLDB4QTgsMHg4MiwweEFCLDB4MEIsMHhCQiwweEY1LAotICAgIDB4MEEs
MHg5MywweEE4LDB4ODIsMHg3RSwweDYwLDB4NUUsMHhGRiwweEE4LDB4ODIsMHg2OCwweDdBLDB4
NjQsMHhFRSwweEYwLDB4NjgsCi0gICAgMHg2OCwweDdBLDB4MjYsMHg3MiwweEFCLDB4RTgsMHg1
MCwweEYwLDB4NjcsMHg3QSwweDA2LDB4NkEsMHg4MCwweDZFLDB4RjcsMHhERiwKLSAgICAweDg4
LDB4N0EsMHgyNiwweDZBLDB4MkIsMHgyQiwweEJGLDB4RDUsMHhBOCwweDgyLDB4NDYsMHg3Miww
eDZBLDB4RTIsMHhGRiwweEY3LAotICAgIDB4ODcsMHg3QSwweDI2LDB4NkEsMHg3NSwweEZGLDB4
RjgsMHhBMiwweDY3LDB4NkEsMHgwNSwweDZBLDB4MEYsMHhCQiwweDk3LDB4QjcsCi0gICAgMHg2
NywweDcyLDB4RTYsMHg2MSwweDcyLDB4QTAsMHg4MCwweEEyLDB4ODcsMHg3MiwweEU2LDB4NjEs
MHgyRSwweEJCLDB4RjcsMHhGRSwKLSAgICAweENDLDB4OUIsMHgyNywweDZBLDB4MkYsMHhGNyww
eEY1LDB4NTUsMHhBRiwweEJDLDB4NjcsMHg3MiwweDAyLDB4QkYsMHhGNSwweDU1LAotICAgIDB4
OTIsMHhENSwweDJBLDB4OEIsMHgwMiwweDJCLDB4RkQsMHg1NSwweDE0LDB4RTYsMHhFQywweEEz
LDB4MDAsMHgwQSwweEFCLDB4QjUsCi0gICAgMHgzNSwweEVFLDB4OTMsMHhENSwweDAyLDB4MDgs
MHgyQSwweEFELDB4MzQsMHhFRSwweDE0LDB4RTYsMHhGNywweDVFLDB4NzgsMHhFQywKLSAgICAw
eDM0LDB4RTYsMHhENCwweEU1LDB4QTIsMHhBMiwweEFBLDB4RTAsMHgxNCwweEU2LDB4RjQsMHhF
NSwweDgwLDB4QTIsMHhGRCwweEQ1LAotICAgIDB4MTQsMHhFNiwweEY0LDB4RTUsMHgwOCwweDIy
LDB4QjYsMHhBNSwweDM1LDB4RUUsMHhEMywweERELDB4MjIsMHgwRSwweEVFLDB4OUYsCi0gICAg
MHgzNSwweEU2LDB4RjQsMHhFNSwweEFBLDB4RjgsMHhERSwweEZGLDB4MzQsMHhFNiwweEY0LDB4
REQsMHg3NSwweEZBLDB4RkUsMHhGRSwKLSAgICAweDE0LDB4RTYsMHhGNCwweERELDB4M0YsMHgz
NywweDM1LDB4RDUsMHgzNCwweEU2LDB4RjQsMHhFNSwweDNGLDB4QUYsMHhGRiwweEZGLAotICAg
IDB4NTUsMHhFRSwweDE0LDB4RTYsMHg4QSwweEFCLDB4QUQsMHhCOSwweDk2LDB4RjYsMHg1NSww
eEVFLDB4QUQsMHhBRiwweEQ1LDB4RDUsCi0gICAgMHg5NywweEY2LDB4MzUsMHhFNiwweEEyLDB4
QTgsMHg2RSwweDVGLDB4NzYsMHhFRSwweDE0LDB4RTYsMHhFOCwweEZBLDB4RjYsMHhENSwKLSAg
ICAweDU1LDB4RUUsMHgxNCwweEU2LDB4QTcsMHgzRiwweEJGLDB4QkYsMHg1NSwweEVFLDB4MzUs
MHhFNiwweDJFLDB4MUMsMHhERiwweEZGLAotICAgIDB4NTUsMHhFRSwweDE0LDB4RTYsMHhGQSww
eEFDLDB4RkUsMHg1NywweDU1LDB4RUUsMHgxNCwweEU2LDB4RkYsMHhFMiwweEVGLDB4NTUsCi0g
ICAgMHg1NSwweEVFLDB4RjQsMHhERCwweDdGLDB4QUEsMHg4MiwweEU4LDB4MzUsMHhFNiwweEQz
LDB4REQsMHhBRCwweEFFLDB4RTgsMHhCOCwKLSAgICAweDE0LDB4RTYsMHhGNCwweERELDB4RTYs
MHhGQSwweEEyLDB4MDIsMHgxNCwweEU2LDB4RDQsMHhERCwweDBFLDB4MkIsMHhBMiwweEI2LAot
ICAgIDB4NTUsMHhFNiwweDE0LDB4RTYsMHgyOSwweDJGLDB4M0QsMHhBRCwweDk2LDB4RUUsMHg1
NSwweEU2LDB4MDIsMHgwMiwweDAzLDB4MEQsCi0gICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweENB
LDB4RUEsMHhBOCwweEI4LDB4NzYsMHhGNiwweDk2LDB4RUUsMHg5RCwweEQ3LDB4OTUsMHhGNywK
LSAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4NzYsMHg1RiwweEZELDB4M0IsMHg5NiwweEVFLDB4
MzUsMHhFNiwweDdBLDB4OEEsMHg4MCwweDA4LAotICAgIDB4OTYsMHhFRSwweEQzLDB4REQsMHg1
NSwweDdFLDB4RkEsMHhBOCwweDM1LDB4RTYsMHg5MiwweEQ1LDB4NUYsMHg1RiwweEZFLDB4RjAs
Ci0gICAgMHhEMywweEQ1LDB4NzIsMHhENSwweDBELDB4QUIsMHhFRCwweDdGLDB4MTQsMHhFNiww
eEIzLDB4RDUsMHhBQSwweEFCLDB4OEQsMHhCOSwKLSAgICAweDE0LDB4RTYsMHhCMywweEQ1LDB4
N0UsMHg2QSwweEFBLDB4QUIsMHhGNCwweERELDB4NTEsMHhENSwweDdFLDB4QUIsMHhFQSwweDgw
LAotICAgIDB4OTIsMHhENSwweDZGLDB4QjQsMHg1RSwweEEwLDB4MDAsMHgwMCwweEIyLDB4RDUs
MHgwRCwweEE0LDB4NTcsMHhGRiwweEVBLDB4QTgsCi0gICAgMHhBRiwweEJDLDB4MEQsMHhBNCww
eDJELDB4MEEsMHgyQSwweDU4LDB4RjAsMHhDNCwweDBELDB4QTQsMHgwOCwweDAyLDB4MEEsMHhC
RCwKLSAgICAweDg3LDB4N0EsMHgyNSwweDZBLDB4REYsMHgxRCwweEZCLDB4RkEsMHg4NiwweDdB
LDB4MjUsMHg2QSwweDMyLDB4QjksMHhFQiwweEU3LAotICAgIDB4NjYsMHg3MiwweDA1LDB4NzIs
MHhBOCwweEFFLDB4QUIsMHhBOSwweDY2LDB4NzIsMHgwNiwweDcyLDB4QUEsMHgyQSwweDAyLDB4
RTAsCi0gICAgMHg4NywweDdBLDB4NDYsMHg3MiwweDU1LDB4MTUsMHg5NywweEVGLDB4ODcsMHg3
QSwweDI1LDB4NkEsMHhCRCwweEJCLDB4MkIsMHg3QSwKLSAgICAweDY2LDB4NzIsMHgwNSwweDcy
LDB4MDAsMHg4QywweEE4LDB4MkEsMHhBNywweDgyLDB4MjUsMHg2QSwweEVGLDB4RkIsMHhGRiww
eDZBLAotICAgIDB4ODYsMHg3MiwweDI2LDB4NzIsMHhGRSwweEVFLDB4RkUsMHg5MiwweDY2LDB4
NzIsMHgyNiwweDcyLDB4ODIsMHhFQiwweEFFLDB4QTIsCi0gICAgMHg2NiwweDcyLDB4MjYsMHg3
MiwweEE4LDB4RTIsMHhFMCwweDEyLDB4NjcsMHg3MiwweDI2LDB4NzIsMHhFRSwweEJGLDB4ODEs
MHgyQiwKLSAgICAweDY2LDB4NzIsMHgyNSwweDcyLDB4NzYsMHhCRiwweDNGLDB4NUQsMHg4Nyww
eDdBLDB4MjUsMHg2QSwweDVGLDB4REYsMHhEMiwweDM4LAotICAgIDB4NjYsMHg3MiwweDA1LDB4
NkEsMHhCRSwweEVFLDB4RkUsMHhCMCwweDY2LDB4NzIsMHhFNSwweDY5LDB4QTYsMHgyOCwweEFB
LDB4ODIsCi0gICAgMHg2NiwweDcyLDB4MDUsMHg3MiwweDJBLDB4MDIsMHg4RSwweEFBLDB4NjYs
MHg3MiwweDI1LDB4NzIsMHhGRSwweEQwLDB4QTgsMHg5QiwKLSAgICAweDY2LDB4NzIsMHgwNSww
eDZBLDB4RUYsMHhFOCwweEZBLDB4RUUsMHg0NiwweDcyLDB4MDUsMHg2QSwweEUwLDB4QTgsMHgz
NywweDBBLAotICAgIDB4NjYsMHg3MiwweDI1LDB4NkEsMHhGQSwweDVGLDB4NzUsMHg5RiwweDg3
LDB4N0EsMHgyNSwweDZBLDB4OEIsMHhCRCwweEY3LDB4NTYsCi0gICAgMHhDNywweDgyLDB4MDUs
MHg2QSwweDBBLDB4MkEsMHhCQiwweEY1LDB4QzcsMHg4MiwweDQ1LDB4NzIsMHgwMiwweEEwLDB4
QkIsMHhGRCwKLSAgICAweEM4LDB4ODIsMHg2NiwweDdBLDB4QUEsMHhBQSwweDJCLDB4MkQsMHhD
OCwweDgyLDB4ODYsMHg3QSwweDdFLDB4RjcsMHhFQywweEI4LAotICAgIDB4QzcsMHg4MiwweDg3
LDB4N0EsMHg4QiwweEFBLDB4OEIsMHhCRSwweEM4LDB4ODIsMHhBNywweDgyLDB4MEYsMHhDQSww
eEU4LDB4MzMsCi0gICAgMHhFNywweDhBLDB4QTcsMHg4MiwweEY1LDB4RjUsMHhFRCwweDZBLDB4
RTgsMHg4QSwweEE3LDB4ODIsMHhBQiwweEVBLDB4RkIsMHhGQiwKLSAgICAweEU4LDB4OEEsMHhB
NywweDgyLDB4QkYsMHhBRCwweEVCLDB4MkIsMHhFOCwweDhBLDB4NjYsMHg3QSwweDlGLDB4N0Us
MHhGOCwweEU4LAotICAgIDB4RTgsMHg4QSwweDg3LDB4N0EsMHhBMywweDhCLDB4RUQsMHhDQiww
eEM4LDB4OEEsMHg0NiwweDcyLDB4RDYsMHhGQywweEY4LDB4QTgsCi0gICAgMHhBNywweDdBLDB4
MjYsMHg3MiwweEYyLDB4NzgsMHg3RSwweDVFLDB4MjYsMHg3MiwweDQ0LDB4NTEsMHhGOCwweDdB
LDB4N0MsMHg3QSwKLSAgICAweDY0LDB4NTEsMHhFMywweDM4LDB4ODAsMHgyQSwweEVBLDB4N0Es
MHg2NCwweDUxLDB4RTMsMHgzOCwweDgyLDB4QTgsMHg1RSwweDU3LAotICAgIDB4NDQsMHg0OSww
eEExLDB4MjgsMHhGOCwweEY4LDB4REYsMHg1NywweEUzLDB4MzgsMHg4MSwweDI4LDB4OEIsMHg4
RiwweDlGLDB4RjUsCi0gICAgMHhFMywweDM4LDB4QzIsMHgzMCwweDM5LDB4M0QsMHg5RCwweDU5
LDB4RTMsMHgzOCwweEMyLDB4MjgsMHhBOCwweEFBLDB4REMsMHhBNywKLSAgICAweDIzLDB4Mzks
MHhDMywweDMwLDB4MkQsMHhBQiwweEJFLDB4QkYsMHgyNCwweDM5LDB4QzIsMHgzMCwweEZDLDB4
RjYsMHg3RSwweDdFLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBMiwweERFLDB4NUQsMHhG
NSwweEUyLDB4MzgsMHhDMiwweDMwLDB4MjAsMHgwQSwweDJBLDB4OUQsCi0gICAgMHgwMywweDM5
LDB4RTIsMHgzOCwweDQ5LDB4NTksMHhGRCwweDk3LDB4NjQsMHg0OSwweEUyLDB4MzgsMHgyRCww
eDNELDB4QkQsMHgyRiwKLSAgICAweDg1LDB4NTEsMHgwMywweDQxLDB4ODIsMHhBMCwweEEyLDB4
NUUsMHg2NCwweDQ5LDB4MjMsMHg0OSwweEY2LDB4OTYsMHhFQiwweEFCLAotICAgIDB4NjQsMHg1
MSwweDQ0LDB4NTEsMHhERCwweDlFLDB4ODIsMHgyMiwweEE1LDB4NTksMHg0NCwweDUxLDB4RkQs
MHhFOSwweDBCLDB4MDIsCi0gICAgMHhBNSwweDU5LDB4NjUsMHg1OSwweDk1LDB4REQsMHgzNiww
eDFBLDB4MjcsMHg3MiwweEE1LDB4NjEsMHgwRCwweDBELDB4MDksMHgyRiwKLSAgICAweDA3LDB4
NkEsMHg2NSwweDUxLDB4NjgsMHg2MCwweEZDLDB4RjgsMHg2NCwweDUxLDB4MjQsMHg0OSwweDdC
LDB4RkQsMHhDRiwweEY4LAotICAgIDB4NDQsMHg0OSwweEUzLDB4NDAsMHg1NywweDdFLDB4RUEs
MHhGOCwweDI0LDB4NDEsMHhBMiwweDMwLDB4QTIsMHhFMiwweEZBLDB4RkUsCi0gICAgMHg4NSww
eDUxLDB4QzIsMHgzOCwweEFGLDB4QjUsMHhCNSwweDJELDB4RTYsMHg1OSwweDg0LDB4NTEsMHhB
NywweEJELDB4RkQsMHgyQSwKLSAgICAweEU2LDB4NjEsMHg4NSwweDUxLDB4RTIsMHhGMiwweDdC
LDB4NUUsMHg4NSwweDUxLDB4MjQsMHg0OSwweEFFLDB4QzgsMHhGRSwweERGLAotICAgIDB4NjUs
MHg1MSwweDAzLDB4NDEsMHg1OCwweDdBLDB4NkYsMHg1RiwweDIzLDB4NDksMHhFMywweDM4LDB4
QTAsMHhGQSwweEJCLDB4QkQsCi0gICAgMHhFMywweDQwLDB4MDIsMHgzOSwweDBBLDB4MDAsMHg4
MCwweEUyLDB4NDYsMHg3MiwweDIzLDB4NDksMHgyOSwweEY1LDB4RjUsMHhENSwKLSAgICAweDg2
LDB4N0EsMHhDNSwweDU5LDB4MEEsMHhBQiwweEZELDB4NTUsMHg2NiwweDcyLDB4NjQsMHg1MSww
eDgwLDB4RTgsMHhGRiwweDVGLAotICAgIDB4MjUsMHg2QSwweDY0LDB4NTEsMHhBMCwweEFCLDB4
RjUsMHhENSwweEM1LDB4NjEsMHg2NCwweDUxLDB4NUMsMHhGQSwweEZELDB4RkUsCi0gICAgMHhD
NiwweDYxLDB4NjQsMHg1MSwweDBCLDB4QUQsMHhGRiwweEY3LDB4MDYsMHg2QSwweDg1LDB4NTks
MHgyQSwweEI3LDB4RjUsMHg1NSwKLSAgICAweDI2LDB4NzIsMHg4NCwweDU5LDB4MjgsMHgyRiww
eEJELDB4OTUsMHg4OCwweDdBLDB4RTUsMHg2OSwweDBBLDB4MkEsMHhBQiwweEJELAotICAgIDB4
QTgsMHg4MiwweDY3LDB4N0EsMHhBMiwweENCLDB4NjEsMHg2RSwweEU5LDB4OEEsMHg0NiwweDcy
LDB4MEEsMHgwOSwweEE3LDB4NTUsCi0gICAgMHhFOSwweDhBLDB4NjcsMHg3QSwweEEwLDB4ODgs
MHhFQiwweEZELDB4QzksMHg4QSwweDY3LDB4N0EsMHg5RSwweERGLDB4QUIsMHhBMiwKLSAgICAw
eEU5LDB4OTIsMHg0NywweDcyLDB4NUYsMHg2RiwweEEyLDB4QTAsMHhBOCwweDdBLDB4MDYsMHg3
MiwweEY3LDB4RjcsMHhGRSwweEY4LAotICAgIDB4NDcsMHg3MiwweEU1LDB4NjksMHgzQSwweEFF
LDB4RkUsMHhGNSwweDY3LDB4N0EsMHhDNSwweDYxLDB4MDAsMHhCQSwweDVGLDB4NUYsCi0gICAg
MHg2NywweDcyLDB4QzUsMHg2MSwweDAwLDB4MEIsMHhBNSwweDU1LDB4ODcsMHg3MiwweDA2LDB4
NkEsMHhGRSwweDgyLDB4Q0EsMHhGRCwKLSAgICAweDY3LDB4NzIsMHhFNSwweDYxLDB4RUEsMHhF
OCwweEYyLDB4RDcsMHg0NiwweDZBLDB4QzUsMHg1OSwweEJBLDB4QjgsMHg3QywweDVGLAotICAg
IDB4MjcsMHg2QSwweDg0LDB4NTksMHgwMCwweDBBLDB4QUEsMHhERiwweDY4LDB4NzIsMHhDNSww
eDYxLDB4MEEsMHgyRSwweEZCLDB4N0QsCi0gICAgMHhDOCwweDgyLDB4MjYsMHg2QSwweDAwLDB4
MkEsMHhBRiwweEE1LDB4QUYsMHhCQywweEM4LDB4N0EsMHgyRCwweDJELDB4RjUsMHhGNSwKLSAg
ICAweEY0LDB4RTUsMHhFQywweEEzLDB4MDIsMHgwQSwweDBCLDB4QkQsMHgzNSwweEVFLDB4RDMs
MHhFNSwweDAyLDB4MDIsMHg4MiwweDI5LAotICAgIDB4MzQsMHhFRSwweEY0LDB4RTUsMHhFMiww
eEVBLDB4RkEsMHhGMiwweDE0LDB4RTYsMHhEMywweERELDB4QkUsMHhGQiwweEY4LDB4RkEsCi0g
ICAgMHhGNCwweEU1LDB4RDMsMHhERCwweDI4LDB4OEEsMHgyRiwweDBCLDB4RjQsMHhERCwweEIz
LDB4REQsMHhFOCwweDc4LDB4N0UsMHhCMCwKLSAgICAweDE0LDB4RTYsMHhCMywweERELDB4MkEs
MHgyQiwweEFELDB4RkUsMHgxNCwweEU2LDB4RDMsMHhERCwweEU4LDB4N0EsMHhGQSwweEZGLAot
ICAgIDB4RjQsMHhFNSwweEQzLDB4REQsMHhGRSwweEZCLDB4NUIsMHhERiwweDE0LDB4RTYsMHhE
MywweERELDB4Q0YsMHhBRCwweEQ1LDB4QjUsCi0gICAgMHgzNCwweEU2LDB4RjMsMHhFNSwweDBC
LDB4MkIsMHgyRiwweDJBLDB4NTUsMHhFRSwweDM1LDB4RTYsMHgwMiwweDgyLDB4NzcsMHg1NywK
LSAgICAweDU2LDB4RUUsMHgxNCwweEU2LDB4QUMsMHhERSwweEZFLDB4NTUsMHgzNSwweEU2LDB4
MTQsMHhFNiwweEZDLDB4MzgsMHgyRiwweEJELAotICAgIDB4NTUsMHhFRSwweDE0LDB4RTYsMHhC
RSwweEFBLDB4M0UsMHhGRiwweDU1LDB4RUUsMHgzNSwweEU2LDB4RUUsMHhCQiwweDdFLDB4Rjcs
Ci0gICAgMHgzNSwweEU2LDB4RDMsMHhERCwweEY4LDB4NzgsMHg3QSwweEE4LDB4MTQsMHhFNiww
eEQzLDB4REQsMHgyQiwweDM3LDB4QkYsMHhBRiwKLSAgICAweEY0LDB4RTUsMHgzNSwweERFLDB4
QUIsMHgyMiwweEEwLDB4RkEsMHgzNCwweEU2LDB4RjQsMHhFNSwweEZGLDB4QTksMHgyQiwweDJC
LAotICAgIDB4MzUsMHhFNiwweEY0LDB4REQsMHhBRiwweEVFLDB4NkUsMHhGQSwweDM0LDB4RTYs
MHhGNCwweERELDB4RjcsMHhCRiwweDJELDB4QUYsCi0gICAgMHg3NiwweEVFLDB4MTUsMHhFNiww
eDNELDB4QUYsMHhCRiwweEZELDB4QjYsMHhGNiwweDU2LDB4RTYsMHhCOSwweEFGLDB4QkIsMHgw
RiwKLSAgICAweEI2LDB4RjYsMHg3NiwweEVFLDB4RjcsMHhCNSwweEJGLDB4RjgsMHg3NiwweEY2
LDB4OTYsMHhFRSwweERELDB4RkQsMHhGRiwweEY1LAotICAgIDB4NzYsMHhGNiwweDk2LDB4RUUs
MHg1RCwweEY3LDB4RkYsMHg1NiwweDk2LDB4RUUsMHg3NiwweEVFLDB4NkEsMHhGRCwweEZBLDB4
NzAsCi0gICAgMHg5NiwweEVFLDB4MzUsMHhFNiwweEVBLDB4QTgsMHgyMiwweDg4LDB4QjYsMHhF
RSwweDE0LDB4RTYsMHg3RiwweEZBLDB4QUEsMHhBQSwKLSAgICAweDU1LDB4RUUsMHhCMywweEQ1
LDB4NTcsMHg1QSwweEEwLDB4MDAsMHgzNSwweEU2LDB4OTIsMHhENSwweEJELDB4RjUsMHhGRiww
eEZDLAotICAgIDB4MTQsMHhFNiwweEIzLDB4RDUsMHgyRSwweEFBLDB4MkYsMHhBRCwweDE0LDB4
RTYsMHhEMywweERELDB4RkIsMHhDQSwweDZBLDB4RkEsCi0gICAgMHhGMywweERELDB4QjMsMHhE
NSwweDdGLDB4QzIsMHgwOCwweDIwLDB4RjQsMHhERCwweDUxLDB4Q0QsMHg1RSwweEU4LDB4ODAs
MHgwMCwKLSAgICAweEQzLDB4REQsMHg4RiwweEI0LDB4NUUsMHhFQSwweDIwLDB4MDAsMHg3Miww
eENELDB4NkEsMHg5MywweEQ3LDB4NUUsMHhGOCwweEMwLAotICAgIDB4ODcsMHg3QSwweDQ2LDB4
NzIsMHg3RSwweDdBLDB4NUUsMHg3NSwweDY2LDB4NzIsMHgyNSwweDZBLDB4RTYsMHgyQSwweDBB
LDB4MzIsCi0gICAgMHg4NiwweDdBLDB4NDYsMHg3MiwweEY1LDB4REIsMHhCQiwweDdBLDB4NjYs
MHg3MiwweDI1LDB4NzIsMHgzQSwweEFBLDB4MjAsMHgyRiwKLSAgICAweDY2LDB4NzIsMHgyNSww
eDZBLDB4RTAsMHgxOCwweEQyLDB4M0EsMHg4NywweDdBLDB4MjYsMHg2QSwweDdFLDB4RUEsMHhB
RiwweEVDLAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhEMSwweDdCLDB4RUEsMHg2OSwweDY2
LDB4NzIsMHgyNiwweDcyLDB4NkEsMHhBQSwweDgyLDB4MjMsCi0gICAgMHg2NiwweDcyLDB4MjUs
MHg3MiwweEFFLDB4M0UsMHgzRiwweEVBLDB4ODYsMHg3MiwweDI1LDB4NkEsMHhFQSwweEVGLDB4
RjQsMHhCNywKLSAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4REQsMHhGQiwweEJGLDB4OEQsMHg2
NiwweDcyLDB4MjUsMHg3MiwweEUwLDB4Q0UsMHgyQywweEFDLAotICAgIDB4NjYsMHg3QSwweDI1
LDB4NkEsMHg2OSwweEU5LDB4QjIsMHg4MiwweDg3LDB4N0EsMHg0NiwweDcyLDB4OUYsMHhFNSww
eDQ1LDB4RkQsCi0gICAgMHg4NywweDdBLDB4MjUsMHg2QSwweERBLDB4OEIsMHhDRCwweEFCLDB4
ODcsMHg3QSwweDI1LDB4NkEsMHhFRiwweEZBLDB4OUEsMHhEOCwKLSAgICAweDY3LDB4NzIsMHgy
NiwweDcyLDB4QTMsMHgzNiwweERFLDB4OTgsMHg2NiwweDcyLDB4MDUsMHg2QSwweEFBLDB4QzAs
MHhFOCwweEY4LAotICAgIDB4NjYsMHg3MiwweDI1LDB4NzIsMHg0QSwweENCLDB4Q0EsMHhDQiww
eDQ2LDB4NzIsMHgyNSwweDZBLDB4ODcsMHgyQiwweDAxLDB4MDMsCi0gICAgMHg4NywweDdBLDB4
MjUsMHg2QSwweDU3LDB4NzcsMHg2QiwweEYyLDB4NjYsMHg3MiwweDA1LDB4NkEsMHg3QiwweEUy
LDB4QTAsMHgwQSwKLSAgICAweDY3LDB4N0EsMHgwNSwweDZBLDB4MkQsMHgyQiwweEFBLDB4MkEs
MHg2NywweDdBLDB4MjYsMHg3MiwweDdFLDB4RkUsMHhCRSwweEM4LAotICAgIDB4ODcsMHg3QSww
eDI1LDB4NzIsMHgwNywweEJGLDB4RkYsMHhGRiwweEE4LDB4ODIsMHgyNSwweDcyLDB4MEEsMHgy
RCwweEY3LDB4OUYsCi0gICAgMHhDOCwweDgyLDB4MjYsMHg3MiwweDJBLDB4MEEsMHhFQiwweDY3
LDB4QzcsMHg4MiwweDY2LDB4N0EsMHhBQywweEI4LDB4QUIsMHhBRCwKLSAgICAweEM4LDB4ODIs
MHhBNywweDgyLDB4QzAsMHhENywweEQ1LDB4NUYsMHhFOCwweDhBLDB4QTcsMHg4MiwweDdCLDB4
RUEsMHhCMiwweEY1LAotICAgIDB4MDksMHg5MywweEE3LDB4ODIsMHg4RiwweDhCLDB4RkIsMHhE
QiwweDA5LDB4OTMsMHhDOCwweDhBLDB4NUYsMHhBRCwweDNGLDB4MkYsCi0gICAgMHgyOSwweDkz
LDB4QzgsMHg4QSwweDdELDB4N0UsMHg2RSwweDcyLDB4QzksMHg4QSwweDA2LDB4NkEsMHhBOCww
eEE4LDB4RTAsMHg3OCwKLSAgICAweDY3LDB4N0EsMHhBNCwweDU5LDB4RTgsMHhGQSwweEZBLDB4
NUYsMHhFNSwweDYxLDB4MjMsMHg0OSwweDY4LDB4NzgsMHg3RSwweDVGLAotICAgIDB4MjQsMHg0
OSwweEMyLDB4MzAsMHhFOCwweEY4LDB4N0MsMHg1RCwweDAzLDB4MzksMHhBMiwweDMwLDB4QkYs
MHhGRiwweEZGLDB4NTUsCi0gICAgMHhDMiwweDMwLDB4ODIsMHgyOCwweEMwLDB4NjgsMHg3RSww
eEY3LDB4QzIsMHgzMCwweDgxLDB4MjgsMHgyNSwweDI1LDB4MkQsMHgyRCwKLSAgICAweEUyLDB4
MzAsMHhBMiwweDI4LDB4RkUsMHhGNiwweEY3LDB4RjcsMHgwMywweDMxLDB4QTIsMHgyOCwweEJF
LDB4MUYsMHhCRiwweEI3LAotICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhBQSwweEE4LDB4QUEs
MHg1QiwweEUzLDB4MzAsMHg4MiwweDI4LDB4MjAsMHgyQSwweEI2LDB4QUUsCi0gICAgMHhFMyww
eDMwLDB4QTIsMHgzMCwweDgwLDB4REUsMHhGRSwweERGLDB4RTIsMHgzMCwweEEyLDB4MzAsMHgx
RCwweEZGLDB4RkYsMHhGNSwKLSAgICAweDIzLDB4NDEsMHhDMiwweDMwLDB4QjUsMHg5NSwweDM1
LDB4QjUsMHhBNiwweDUxLDB4MjQsMHg0MSwweEJELDB4OEIsMHg4MSwweEVCLAotICAgIDB4NjQs
MHg0OSwweEUzLDB4NDAsMHg1OCwweDdBLDB4NUUsMHg1NywweDQ0LDB4NDksMHhFMywweDQwLDB4
MDMsMHgyOSwweDI5LDB4MkQsCi0gICAgMHg4NSwweDU5LDB4NDQsMHg1MSwweEVCLDB4QUEsMHhG
NSwweDgzLDB4QTUsMHg1OSwweDY0LDB4NTEsMHgwQSwweEE2LDB4NzcsMHg1NSwKLSAgICAweEM1
LDB4NjEsMHg0NCwweDQ5LDB4QkMsMHgyOCwweDNBLDB4QUQsMHgyNywweDcyLDB4QzUsMHg2MSww
eDhELDB4RTksMHhBOSwweEZELAotICAgIDB4RTYsMHg2MSwweDY1LDB4NTEsMHhGRiwweDdFLDB4
NzgsMHg1QSwweDY1LDB4NTEsMHhFMiwweDM4LDB4QTgsMHhFOCwweEJDLDB4NUYsCi0gICAgMHg2
NCwweDQ5LDB4RTMsMHgzOCwweDc4LDB4NkEsMHhGQSwweEVCLDB4MjQsMHg0MSwweEMzLDB4Mzgs
MHg1RiwweEZELDB4QTcsMHgyRiwKLSAgICAweEE2LDB4NTksMHgwMywweDQxLDB4MjUsMHhBRCww
eEFCLDB4OEYsMHhFNywweDYxLDB4NDQsMHg0OSwweDAyLDB4MEEsMHhGRiwweDU1LAotICAgIDB4
RTcsMHg2MSwweDY0LDB4NDksMHhFQSwweDIwLDB4QTMsMHhGNSwweDg1LDB4NTEsMHgyNCwweDQx
LDB4N0UsMHhFOCwweDc4LDB4NUMsCi0gICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweDdFLDB4REMs
MHhEQywweEZFLDB4NDQsMHg0OSwweEMyLDB4MzAsMHhGNywweEZFLDB4QUEsMHg4MiwKLSAgICAw
eDY1LDB4NDksMHhFMywweDM4LDB4RkQsMHhGRCwweENCLDB4ODIsMHg0NCwweDQ5LDB4MDMsMHg0
MSwweDJGLDB4M0YsMHhCRCwweEVGLAotICAgIDB4QzYsMHg1OSwweDI0LDB4NDksMHg4QSwweEEz
LDB4QUIsMHhBRCwweEE1LDB4NTksMHg0MywweDQ5LDB4RTIsMHg3QSwweDVDLDB4NTgsCi0gICAg
MHg4NSwweDUxLDB4MjMsMHg0OSwweEVELDB4RkYsMHhCNywweEQ3LDB4ODUsMHg1MSwweDIzLDB4
NDksMHgwMCwweEUwLDB4REEsMHg1RiwKLSAgICAweDg0LDB4NTEsMHg0MywweDQ5LDB4QTgsMHhF
OCwweEVCLDB4RDcsMHhDNSwweDYxLDB4NDQsMHg1MSwweEFGLDB4MkYsMHgyRiwweEFELAotICAg
IDB4MjYsMHg2QSwweDg0LDB4NTksMHg5RiwweEFBLDB4QUEsMHg3RCwweDg4LDB4N0EsMHhBNSww
eDU5LDB4MEIsMHgyQSwweDBGLDB4QUQsCi0gICAgMHhBOCwweDgyLDB4MDYsMHg3MiwweEEwLDB4
QTIsMHhBQSwweDVFLDB4NjgsMHg3QSwweEU2LDB4NjksMHg4QSwweEFBLDB4REUsMHhERiwKLSAg
ICAweEM5LDB4OEEsMHg0NiwweDdBLDB4QjcsMHgyRCwweDI1LDB4OEQsMHhDOSwweDhBLDB4ODcs
MHg4MiwweDIwLDB4RTAsMHhFMCwweEZDLAotICAgIDB4RTksMHg4QSwweDY3LDB4ODIsMHgwMiww
eDAyLDB4QUIsMHhEQSwweEVBLDB4OEEsMHg0NywweDdBLDB4NUMsMHg3QywweEUyLDB4QUEsCi0g
ICAgMHg4OCwweDgyLDB4MjYsMHg3MiwweDU1LDB4QkYsMHhGOCwweEE4LDB4NjcsMHg3QSwweEM1
LDB4NjEsMHg1RiwweEIyLDB4QzAsMHhFMCwKLSAgICAweDA3LDB4NkEsMHhBNSwweDU5LDB4N0Ys
MHg3RSwweEQ4LDB4NkMsMHgwNiwweDZBLDB4NjQsMHg1MSwweDAyLDB4RkUsMHg3RiwweDU3LAot
ICAgIDB4RTUsMHg2MSwweDY0LDB4NTEsMHgwMCwweEFCLDB4QkQsMHhENSwweEM1LDB4NjEsMHg2
NCwweDUxLDB4ODAsMHhBOCwweEZBLDB4QjcsCi0gICAgMHhDNiwweDU5LDB4ODQsMHg1OSwweERD
LDB4QUEsMHhCRiwweDJCLDB4MDYsMHg2QSwweEE1LDB4NTksMHhFQiwweDJGLDB4QUYsMHhGRCwK
LSAgICAweDY3LDB4NzIsMHhFNSwweDYxLDB4M0YsMHhCRiwweEFCLDB4REYsMHhDOSwweDgyLDB4
MjYsMHg2QSwweDBBLDB4QUIsMHhCNywweEQ3LAotICAgIDB4NkUsMHhCNCwweDQ3LDB4NzIsMHgy
QiwweEJGLDB4QkQsMHhGRCwweEQzLDB4RTUsMHg4QiwweDlCLDB4MDIsMHgwQiwweEJGLDB4RDUs
Ci0gICAgMHgxNCwweEU2LDB4NkYsMHhCQywweDAwLDB4MDIsMHhBQiwweEJELDB4MTQsMHhFNiww
eEIzLDB4RTUsMHhBMiwweEEyLDB4QUEsMHhBRCwKLSAgICAweDE0LDB4RTYsMHhGNCwweEU1LDB4
RTUsMHhCRiwweEZFLDB4N0EsMHgxNCwweEU2LDB4RDMsMHhERCwweEJGLDB4QUMsMHhBMCwweEEz
LAotICAgIDB4MTQsMHhFNiwweEQ0LDB4REQsMHg1RSwweEY4LDB4RTgsMHhBQSwweEYzLDB4RTUs
MHhCMywweERELDB4OEEsMHhGRiwweEZBLDB4N0MsCi0gICAgMHgxNCwweEU2LDB4QjMsMHhERCww
eEZCLDB4REYsMHg1NywweDdGLDB4RjQsMHhFNSwweEIzLDB4REQsMHgyRSwweDJGLDB4QUIsMHhC
RCwKLSAgICAweDM1LDB4RTYsMHhGNCwweERELDB4MkYsMHhBQiwweDJELDB4QkQsMHgzNSwweEU2
LDB4RjMsMHhFNSwweDgwLDB4QTgsMHhFQSwweEZBLAotICAgIDB4MTQsMHhFNiwweEQzLDB4REQs
MHhBMiwweDk4LDB4RkUsMHg3RSwweDM1LDB4RTYsMHhEMywweERELDB4MkEsMHhBQSwweEJCLDB4
QkQsCi0gICAgMHg1NiwweEU2LDB4MTQsMHhFNiwweEI3LDB4NUYsMHhGNSwweDk1LDB4NTUsMHhF
RSwweDE1LDB4RTYsMHhFQSwweEE4LDB4RTAsMHhGMCwKLSAgICAweDM0LDB4RTYsMHhGNCwweERE
LDB4RTgsMHhBRSwweEZGLDB4NTcsMHgzNSwweEU2LDB4RDMsMHhERCwweEZCLDB4RTgsMHhFQSww
eDdFLAotICAgIDB4RDQsMHhFNSwweDE0LDB4REUsMHhCRSwweEZBLDB4RkUsMHhGQSwweDE0LDB4
RTYsMHhGNCwweERELDB4MjMsMHgyOCwweEVFLDB4QUYsCi0gICAgMHg1NSwweEU2LDB4RjQsMHhF
NSwweEZGLDB4RjUsMHhGRiwweEI3LDB4MzQsMHhFNiwweEY0LDB4REQsMHhENiwweEJBLDB4RUEs
MHhCRSwKLSAgICAweDU1LDB4RUUsMHgxNCwweEU2LDB4MzUsMHhFNSwweEY1LDB4NTUsMHhCNiww
eEY2LDB4MzUsMHhFNiwweDJCLDB4QUIsMHhBOSwweEE5LAotICAgIDB4QjYsMHhGNiwweDc2LDB4
RUUsMHhFQSwweEZBLDB4RkUsMHhBQSwweEI2LDB4RjYsMHg3NiwweEVFLDB4RjcsMHhFRiwweEJB
LDB4RUEsCi0gICAgMHg3NiwweEY2LDB4OTYsMHhFRSwweDZGLDB4NUYsMHhGRCwweEQ3LDB4NzYs
MHhGNiwweDk2LDB4RUUsMHhGRCwweEY1LDB4RkYsMHg2NywKLSAgICAweDk2LDB4RUUsMHg3Niww
eEVFLDB4RkYsMHhCRiwweEI2LDB4NTcsMHg5NiwweEVFLDB4MzUsMHhFNiwweEFBLDB4QTAsMHhG
QSwweDVFLAotICAgIDB4NzUsMHhFRSwweEY0LDB4REQsMHgyMCwweEEwLDB4RUEsMHg3QiwweDU1
LDB4RUUsMHhCMiwweEQ1LDB4RjgsMHhFOCwweEY2LDB4NTcsCi0gICAgMHhGMywweERELDB4OTIs
MHhENSwweDJBLDB4QUEsMHhFQSwweDVGLDB4MTUsMHhFNiwweEIzLDB4RDUsMHhCMiwweEJFLDB4
QkQsMHg3NSwKLSAgICAweEY0LDB4REQsMHhCMywweEQ1LDB4QUEsMHhCQywweEFFLDB4RkYsMHhG
NCwweEU1LDB4QjMsMHhENSwweDI4LDB4QUIsMHhCNiwweEZGLAotICAgIDB4RjMsMHhERCwweDkx
LDB4RDUsMHhBOCwweEFBLDB4QUEsMHhGNiwweEQyLDB4REQsMHhGMCwweEM0LDB4NjgsMHhFMCww
eEEwLDB4QTAsCi0gICAgMHg4NywweDdBLDB4MjUsMHg2QSwweEM5LDB4QUIsMHhFQSwweEJGLDB4
ODYsMHg3MiwweDI1LDB4NzIsMHhEQSwweEJCLDB4QUEsMHgyQiwKLSAgICAweDg2LDB4N0EsMHgy
NiwweDZBLDB4QUEsMHhCQiwweDY4LDB4RkIsMHg2NiwweDcyLDB4NDYsMHg3MiwweDFGLDB4MEIs
MHgzRiwweEExLAotICAgIDB4ODcsMHg3QSwweDY2LDB4NzIsMHg5NywweEU3LDB4NkEsMHg2OSww
eDg3LDB4N0EsMHg0NiwweDcyLDB4RjQsMHhERSwweEVGLDB4QUUsCi0gICAgMHg4NiwweDcyLDB4
MjYsMHg3MiwweEFGLDB4QkYsMHgxRiwweEFGLDB4ODcsMHg3QSwweDI2LDB4NzIsMHhGQiwweEMx
LDB4RUIsMHhBQSwKLSAgICAweDY2LDB4NzIsMHg0NiwweDcyLDB4NkIsMHg3QiwweEZELDB4RkUs
MHg2NiwweDcyLDB4MjUsMHg2QSwweDA3LDB4MzUsMHgyNywweDgyLAotICAgIDB4ODYsMHg3QSww
eDI2LDB4NkEsMHg5RiwweEZCLDB4RUEsMHhFOCwweDg2LDB4N0EsMHg0NiwweDcyLDB4RUQsMHhG
NywweERELDB4RkUsCi0gICAgMHg2NiwweDcyLDB4MjUsMHg3MiwweDhBLDB4MEIsMHgzRSwweDJF
LDB4NjYsMHg3MiwweDI1LDB4NkEsMHhCQSwweDdBLDB4ODIsMHgwMiwKLSAgICAweDY2LDB4NzIs
MHgyNSwweDZBLDB4RjEsMHg3QiwweEFELDB4OEMsMHg4NywweDdBLDB4NDYsMHg3MiwweDVFLDB4
RUQsMHhBQiwweEUzLAotICAgIDB4ODcsMHg3QSwweDI1LDB4NkEsMHhBNiwweEVGLDB4QUEsMHhF
OCwweDY2LDB4N0EsMHg0NiwweDcyLDB4NTYsMHhERiwweEU5LDB4MEIsCi0gICAgMHg4NywweDdB
LDB4MjUsMHg2QSwweDZBLDB4RUEsMHhBQSwweDYyLDB4ODcsMHg3QSwweDI2LDB4NzIsMHhGRiww
eEEyLDB4QjIsMHg3QiwKLSAgICAweDY2LDB4NzIsMHgyNiwweDcyLDB4QkEsMHhBQiwweDBBLDB4
MDAsMHg2NiwweDcyLDB4MjUsMHg3MiwweDBCLDB4MEUsMHhBQSwweDE4LAotICAgIDB4NjYsMHg3
MiwweDI2LDB4NzIsMHhBMCwweEE0LDB4NkIsMHhDMiwweDg2LDB4N0EsMHgyNSwweDcyLDB4QkUs
MHhGRiwweDYzLDB4NkEsCi0gICAgMHg2NiwweDdBLDB4MjYsMHg3MiwweEE4LDB4NjIsMHgwMSww
eEI5LDB4NjYsMHg4MiwweDQ2LDB4NzIsMHhERCwweDdGLDB4RDcsMHg1OSwKLSAgICAweDY2LDB4
N0EsMHgwNSwweDcyLDB4QjYsMHhCNiwweEFBLDB4OEEsMHg2NiwweDdBLDB4MjUsMHg3MiwweDBB
LDB4OUYsMHgzOCwweDAyLAotICAgIDB4QTcsMHg4MiwweDQ2LDB4NzIsMHhBOCwweEJCLDB4RkYs
MHg5NywweEM4LDB4ODIsMHg2NiwweDdBLDB4MDIsMHgyQiwweEJGLDB4RDUsCi0gICAgMHhDOCww
eDgyLDB4NjYsMHg3QSwweDg4LDB4QTgsMHhCRiwweEQ1LDB4MDksMHg4QiwweEE3LDB4ODIsMHgy
RSwweEVBLDB4MDIsMHhDOSwKLSAgICAweDI5LDB4OTMsMHhDOCwweDhBLDB4QTIsMHhFOCwweDZB
LDB4NjIsMHhBNywweDgyLDB4QzUsMHg2MSwweDc4LDB4N0EsMHg3QywweDVFLAotICAgIDB4QTUs
MHg1OSwweDAzLDB4NDEsMHhFMCwweEYwLDB4NUMsMHg1NCwweDIzLDB4NDEsMHhDMiwweDM4LDB4
QTAsMHhGMCwweDdCLDB4NzcsCi0gICAgMHhFMiwweDM4LDB4QTIsMHgzMCwweEZDLDB4REMsMHhC
RSwweDdFLDB4QzIsMHgzMCwweDgxLDB4MjgsMHg1OCwweDdFLDB4REUsMHhCQiwKLSAgICAweEMy
LDB4MzAsMHg2MSwweDIwLDB4RkYsMHg3RSwweEFFLDB4QUMsMHhBMiwweDI4LDB4NjEsMHgyMCww
eDBCLDB4MEIsMHgyMywweEFBLAotICAgIDB4QzIsMHgyOCwweEEyLDB4MjgsMHg5RSwweDdELDB4
NjMsMHhCNSwweEMyLDB4MzAsMHhBMiwweDI4LDB4QkEsMHhGNSwweDk1LDB4RDYsCi0gICAgMHhD
MiwweDMwLDB4QTIsMHgyOCwweEJBLDB4QTYsMHgwNiwweDBELDB4RTMsMHgzMCwweEEyLDB4Mjgs
MHhFQiwweDhCLDB4NkYsMHg3RiwKLSAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4RDgsMHhFQSww
eEVCLDB4NzUsMHgwMywweDM5LDB4QTIsMHgzMCwweEI1LDB4QkQsMHhCRCwweDJCLAotICAgIDB4
NDQsMHg0OSwweEMyLDB4MzAsMHhCRCwweEJELDB4QkIsMHgwQSwweDg1LDB4NTEsMHhFMywweDM4
LDB4RTIsMHg3QSwweDdGLDB4N0IsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEJFLDB4RkYs
MHhERiwweDdGLDB4NDQsMHg0OSwweEUzLDB4NDAsMHgyNSwweDNGLDB4MkQsMHhGRCwKLSAgICAw
eDg1LDB4NTksMHgyMywweDQxLDB4ODIsMHhCRSwweEY1LDB4RDUsMHg2NCwweDUxLDB4NDQsMHg0
OSwweDdCLDB4N0UsMHhBQiwweDIwLAotICAgIDB4NjQsMHg1MSwweDIzLDB4NDksMHgwRCwweDA3
LDB4MkYsMHgwQSwweEM2LDB4NjEsMHg0NCwweDQ5LDB4MEEsMHhBQiwweERGLDB4NzcsCi0gICAg
MHhDNiwweDU5LDB4MjQsMHg0OSwweEY4LDB4N0UsMHg2QiwweDdELDB4MjQsMHg0OSwweEUzLDB4
MzgsMHg1RSwweEY0LDB4NTQsMHg1NywKLSAgICAweDQ0LDB4NDEsMHhDMiwweDM4LDB4OEEsMHhF
QSwweEZGLDB4N0QsMHgyNCwweDQxLDB4RTIsMHgzOCwweDBGLDB4MjYsMHhBRCwweEZELAotICAg
IDB4ODUsMHg0OSwweDIzLDB4NDEsMHhDRCwweEFELDB4MzUsMHhGNSwweDY1LDB4NDksMHgyNCww
eDQxLDB4N0YsMHg1NiwweDcyLDB4RkEsCi0gICAgMHg2NSwweDQ5LDB4RTIsMHgzOCwweDBBLDB4
MkIsMHhBQSwweDZCLDB4NDQsMHg0OSwweDAzLDB4NDEsMHhGQywweDVDLDB4NTQsMHg1NSwKLSAg
ICAweDQ0LDB4NDksMHgwMywweDQxLDB4NTcsMHhEQywweDc3LDB4NTYsMHg0NCwweDQ5LDB4RTIs
MHgzOCwweDBBLDB4MkEsMHhFQiwweDVFLAotICAgIDB4NDQsMHg0OSwweEMyLDB4MzgsMHhBOCww
eEI4LDB4QkYsMHhENSwweDQ0LDB4NDksMHhFMywweDM4LDB4QUIsMHgyQSwweEJGLDB4QjcsCi0g
ICAgMHg4NSwweDUxLDB4MjMsMHg0OSwweDJGLDB4M0QsMHgzRiwweDBGLDB4QzYsMHg1OSwweDY0
LDB4NTEsMHg1RiwweEVCLDB4RjIsMHhGQSwKLSAgICAweEE1LDB4NTEsMHg0MywweDQ5LDB4Nzcs
MHg3RiwweEY4LDB4QkYsMHg2NCwweDQ5LDB4MjMsMHg0OSwweDdFLDB4NjgsMHg1NiwweEZFLAot
ICAgIDB4NDMsMHg0OSwweDAzLDB4NDEsMHgzQSwweEI5LDB4QkIsMHhERiwweEE1LDB4NTksMHgw
MywweDQ5LDB4MkIsMHgyRiwweEFGLDB4QkQsCi0gICAgMHhBNSwweDU5LDB4NjUsMHg1MSwweEZB
LDB4RkYsMHg5NywweDJFLDB4MjYsMHg3MiwweDg0LDB4NTksMHgyNSwweDk1LDB4QjUsMHhCRCwK
LSAgICAweDA2LDB4NzIsMHhBNCwweDYxLDB4ODgsMHhCRiwweEI1LDB4RUUsMHgyNywweDcyLDB4
RTYsMHg2OSwweEY1LDB4QUYsMHg5QSwweDVFLAotICAgIDB4QzgsMHg4QSwweDA2LDB4NzIsMHgy
QiwweDA5LDB4MkYsMHhBRiwweEU4LDB4OEEsMHg0NiwweDdBLDB4QjgsMHhGOCwweDdBLDB4N0Ys
Ci0gICAgMHhBOCwweDgyLDB4MjYsMHg3MiwweDIwLDB4QkEsMHhBRiwweEI1LDB4QzksMHg4QSww
eDY3LDB4N0EsMHhFMiwweEVBLDB4NkIsMHg1RiwKLSAgICAweEE4LDB4ODIsMHgwNiwweDZBLDB4
QTgsMHhGQSwweDVGLDB4NUQsMHg0NywweDcyLDB4QzYsMHg2OSwweEEwLDB4RkEsMHhERiwweEJG
LAotICAgIDB4MjYsMHg2QSwweDg0LDB4NTksMHg1RSwweDVFLDB4RkIsMHg4MCwweEU1LDB4NjEs
MHg2NCwweDUxLDB4RDcsMHhERCwweEJCLDB4MDAsCi0gICAgMHhDNSwweDU5LDB4NjQsMHg1MSww
eEY1LDB4RDcsMHhCOCwweDI4LDB4QzYsMHg1OSwweDg1LDB4NTksMHhCRCwweEI1LDB4RTUsMHg4
OCwKLSAgICAweEU2LDB4NjEsMHhBNSwweDU5LDB4RTcsMHhFQSwweEY5LDB4N0EsMHhFNiwweDYx
LDB4ODUsMHg1MSwweDhCLDB4QUUsMHhFQiwweEI3LAotICAgIDB4MDYsMHg2MiwweEE1LDB4NTks
MHhFMywweEVELDB4NTUsMHhENSwweDQ3LDB4NzIsMHhFNSwweDYxLDB4M0QsMHhCNSwweERELDB4
QkQsCi0gICAgMHhFOSwweDgyLDB4NDcsMHg3MiwweDNGLDB4QTUsMHhCNSwweEZELDB4OEIsMHg5
QiwweDg4LDB4N0EsMHgwQiwweEFCLDB4NUQsMHhERCwKLSAgICAweDJELDB4QUMsMHhBOCwweDgy
LDB4MDIsMHhCRiwweEY1LDB4NTUsMHg5MywweERELDB4MjksMHg4QiwweDAyLDB4MkYsMHhBRCww
eEI1LAotICAgIDB4RjQsMHhFNSwweDUxLDB4RDUsMHgwMCwweDAzLDB4MDksMHhBRCwweEY0LDB4
RTUsMHgxNCwweERFLDB4QTgsMHg4OCwweDAwLDB4MDAsCi0gICAgMHgxNCwweEU2LDB4RDQsMHhE
RCwweDhCLDB4N0EsMHhBRSwweEVBLDB4RDMsMHhERCwweEIzLDB4REQsMHg5OCwweEJCLDB4RkUs
MHhFNSwKLSAgICAweEQzLDB4REQsMHg5MiwweEQ1LDB4ODAsMHgwMCwweEUwLDB4RTgsMHhEMyww
eERELDB4QjIsMHhERCwweDI3LDB4MEYsMHgwRCwweEE5LAotICAgIDB4MTQsMHhFNiwweEIzLDB4
REQsMHgwQSwweDBBLDB4QUYsMHhFRCwweDE0LDB4RTYsMHhGNCwweERELDB4RTgsMHhGRSwweEVE
LDB4RkYsCi0gICAgMHgxNCwweEU2LDB4QjMsMHhERCwweEVBLDB4QkEsMHhGOCwweDZCLDB4MTQs
MHhFNiwweEQzLDB4REQsMHhCNSwweEE3LDB4MEYsMHgyRiwKLSAgICAweDU1LDB4RUUsMHgxNCww
eEU2LDB4QjUsMHgwOSwweDIwLDB4MDAsMHg1NSwweEVFLDB4MTQsMHhFNiwweDcwLDB4RjIsMHhF
QSwweEJBLAotICAgIDB4MzUsMHhFNiwweEQzLDB4REQsMHhERiwweDU3LDB4REUsMHhFOCwweDE0
LDB4RTYsMHhEMywweERELDB4REQsMHhBNywweDBCLDB4MDIsCi0gICAgMHgzNSwweEU2LDB4RDMs
MHhERCwweEZELDB4RkEsMHhFQSwweEJBLDB4MTQsMHhFNiwweEY0LDB4REQsMHg4RiwweDBCLDB4
QTksMHg0NiwKLSAgICAweDE0LDB4RTYsMHhGNCwweERELDB4MEEsMHgyMCwweDgwLDB4ODIsMHgx
NCwweEU2LDB4RDQsMHhERCwweEZBLDB4N0YsMHg3RiwweEE4LAotICAgIDB4MzUsMHhFNiwweEQz
LDB4REQsMHgzQiwweEFGLDB4QUQsMHgzRCwweDk2LDB4RUUsMHgzNSwweEU2LDB4MEYsMHgyOSww
eDI5LDB4MEQsCi0gICAgMHhCNywweEY2LDB4OTYsMHhFRSwweEY3LDB4NUQsMHhFRiwweDY3LDB4
QjYsMHhGNiwweDk2LDB4RUUsMHhERSwweEY3LDB4OUYsMHhENSwKLSAgICAweEI2LDB4RjYsMHg3
NiwweEVFLDB4RUEsMHhGQSwweEZBLDB4RkUsMHg5NiwweEVFLDB4NzYsMHhFRSwweEZFLDB4REQs
MHhFRiwweDVFLAotICAgIDB4OTYsMHhFRSwweEYzLDB4REQsMHhBOCwweEZBLDB4N0EsMHg3OCww
eDM1LDB4RTYsMHg5MywweEQ1LDB4MjAsMHhGQSwweEZFLDB4RkYsCi0gICAgMHhGMywweERELDB4
QjMsMHhENSwweEVBLDB4NUYsMHg1NywweDU3LDB4RDMsMHhERCwweDkyLDB4RDUsMHhDOCwweEVB
LDB4RkYsMHg3NSwKLSAgICAweEQzLDB4REQsMHg5MiwweEQ1LDB4RDcsMHhBNSwweEJELDB4NkQs
MHhCMywweERELDB4NzEsMHhDRCwweDgwLDB4QTAsMHhGRiwweEI3LAotICAgIDB4RDMsMHhERCww
eDcyLDB4Q0QsMHg4QSwweDJBLDB4RUYsMHhGQiwweEQzLDB4REQsMHg5MiwweEQ1LDB4RUEsMHhG
QSwweEZCLDB4RkQsCi0gICAgMHhCMiwweEQ1LDB4NTIsMHhENSwweEI4LDB4QUUsMHhFQywweERB
LDB4QjIsMHhENSwweDcyLDB4RDUsMHhDMiwweEM5LDB4N0QsMHg3NSwKLSAgICAweDY2LDB4NzIs
MHgyNSwweDcyLDB4MjAsMHgwOCwweEE4LDB4MjYsMHg4NywweDdBLDB4NDYsMHg3MiwweEYzLDB4
NUMsMHhFOCwweDVGLAotICAgIDB4NjcsMHg3QSwweDI2LDB4NzIsMHhFNiwweEFFLDB4MEEsMHgw
MCwweDg3LDB4NzIsMHgyNiwweDZBLDB4QkEsMHhGRiwweEZFLDB4RTgsCi0gICAgMHg4NywweDdB
LDB4NDYsMHg3MiwweEE5LDB4RUYsMHhFRSwweDc3LDB4ODcsMHg3MiwweDI1LDB4NkEsMHhBQiww
eEI3LDB4RkIsMHhBOCwKLSAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4QkYsMHhDQSwweDBBLDB4
RkYsMHg4NywweDdBLDB4MjYsMHg3MiwweDJBLDB4RUEsMHhBNiwweDhCLAotICAgIDB4ODYsMHg3
QSwweDQ2LDB4NzIsMHg1QSwweEY1LDB4RkQsMHhGRSwweDg2LDB4N0EsMHgyNiwweDZBLDB4RUIs
MHhGMywweEI4LDB4RjIsCi0gICAgMHhBNywweDdBLDB4NDYsMHg3MiwweENGLDB4RTcsMHhGRiww
eEVCLDB4ODYsMHg3QSwweDQ2LDB4NzIsMHhBOSwweEFGLDB4RjgsMHg3QywKLSAgICAweDg3LDB4
N0EsMHg0NSwweDcyLDB4REMsMHhFMiwweEY4LDB4QTIsMHg4NiwweDdBLDB4NDYsMHg3MiwweEUz
LDB4RkIsMHhCNSwweEFELAotICAgIDB4ODcsMHg3QSwweDQ1LDB4NzIsMHhGRCwweEUzLDB4QzIs
MHg4MiwweDg3LDB4N0EsMHg0NSwweDcyLDB4NjksMHg3MywweEUzLDB4RjIsCi0gICAgMHg2Niww
eDdBLDB4NDUsMHg3MiwweDUwLDB4NkYsMHhBRSwweDJDLDB4NjYsMHg3MiwweDI2LDB4NzIsMHhF
MiwweEUzLDB4ODAsMHhCMiwKLSAgICAweDg3LDB4N0EsMHgyNSwweDcyLDB4NzIsMHhBQSwweEZB
LDB4RjgsMHg4NywweDdBLDB4MjUsMHg3MiwweERCLDB4QkEsMHhCQSwweDlBLAotICAgIDB4NjYs
MHg3QSwweDQ2LDB4NzIsMHhCOSwweEVGLDB4NzgsMHg1RSwweDY2LDB4N0EsMHg0NiwweDcyLDB4
OTgsMHg4MCwweDQwLDB4NjIsCi0gICAgMHg4NywweDdBLDB4NDYsMHg3MiwweDYyLDB4RUEsMHhF
QSwweDNBLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhGMSwweDA1LDB4QTMsMHg1RSwKLSAgICAweDg3
LDB4N0EsMHgyNSwweDcyLDB4RkQsMHhBQiwweEI4LDB4QTIsMHhBNywweDgyLDB4NDYsMHg3Miww
eEZELDB4RkIsMHhEQSwweEYyLAotICAgIDB4ODcsMHg3QSwweDI1LDB4NzIsMHhFQywweEJGLDB4
MkIsMHhBOCwweDg3LDB4ODIsMHg0NiwweDcyLDB4RkYsMHg1QSwweEVBLDB4QjIsCi0gICAgMHg4
NywweDdBLDB4MjUsMHg3MiwweDhELDB4QUYsMHhBQSwweEFGLDB4ODcsMHg4MiwweDI1LDB4NzIs
MHg1RiwweEVFLDB4RjAsMHhFMiwKLSAgICAweEE3LDB4ODIsMHg0NiwweDcyLDB4RkYsMHhENyww
eEI0LDB4N0EsMHgyOSwweDkzLDB4NDYsMHg3QSwweEZELDB4QkQsMHhCRCwweDJELAotICAgIDB4
MkEsMHg5MywweEE4LDB4ODIsMHg2QSwweDdGLDB4N0UsMHg3OCwweDg3LDB4N0EsMHhDNSwweDYx
LDB4N0MsMHg3QywweEZFLDB4RkUsCi0gICAgMHhDNCwweDYxLDB4MDIsMHg0MSwweDVFLDB4Rjgs
MHhFOCwweEYwLDB4MjMsMHg0MSwweEMyLDB4MzAsMHg3RSwweERBLDB4NzgsMHhGQSwKLSAgICAw
eEUyLDB4MzAsMHhBMSwweDMwLDB4N0EsMHg3QSwweEYzLDB4RjcsMHhDMiwweDMwLDB4ODEsMHgy
OCwweEVBLDB4RTgsMHg2MiwweEUyLAotICAgIDB4QzIsMHgyOCwweDYxLDB4MjgsMHhBQSwweEFC
LDB4OEEsMHgwOCwweEUzLDB4MzAsMHhBMiwweDI4LDB4NTcsMHhGNSwweEE3LDB4QzksCi0gICAg
MHhDMiwweDMwLDB4QTIsMHgyOCwweDA2LDB4RUEsMHhFQSwweENCLDB4QzIsMHgzMCwweEEyLDB4
MjgsMHg1NywweDU1LDB4QTUsMHg4RSwKLSAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4OEQsMHg4
RiwweEFBLDB4NTIsMHhDMiwweDMwLDB4ODEsMHgyMCwweEZBLDB4NkEsMHhFQSwweEJFLAotICAg
IDB4QzIsMHgzMCwweDgxLDB4MjgsMHgyRiwweEJCLDB4QkYsMHgyQiwweDI0LDB4MzksMHhDMiww
eDMwLDB4M0QsMHhBRCwweDJGLDB4QUYsCi0gICAgMHg2NCwweDQ5LDB4MjQsMHg0MSwweDBGLDB4
MkIsMHgwQiwweDI5LDB4NjUsMHg0OSwweEUzLDB4MzgsMHg1QywweDU2LDB4N0UsMHhEOCwKLSAg
ICAweDA0LDB4NDEsMHhDMiwweDM4LDB4NUIsMHg1RSwweDdGLDB4MzgsMHgyNCwweDQ5LDB4QzIs
MHgzOCwweEE5LDB4QUIsMHhBQiwweDJBLAotICAgIDB4NjQsMHg1MSwweDAzLDB4NDEsMHhCRCww
eDJELDB4MDksMHgwQiwweDg1LDB4NTEsMHgyMywweDQ5LDB4OEEsMHhBQSwweEZFLDB4N0EsCi0g
ICAgMHhDNiwweDU5LDB4NjQsMHg1MSwweERELDB4RkQsMHhFRiwweEFCLDB4QTUsMHg1MSwweDAz
LDB4NDEsMHhGOCwweDdDLDB4N0UsMHg1OCwKLSAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4RUIs
MHhFMywweEUyLDB4NjMsMHg2NSwweDQ5LDB4RTMsMHgzOCwweDdELDB4RUIsMHhBMywweEZGLAot
ICAgIDB4MjQsMHg0MSwweEMyLDB4MzgsMHhGRCwweEZGLDB4QzgsMHgyOCwweDI0LDB4NDEsMHhF
MiwweDM4LDB4RUQsMHhFQiwweEFELDB4ODAsCi0gICAgMHgyMywweDQxLDB4QzIsMHgzOCwweDJB
LDB4QUEsMHhFRSwweDZBLDB4NDQsMHg0MSwweEMyLDB4MzgsMHhFOCwweEI3LDB4N0QsMHhENSwK
LSAgICAweDY1LDB4NDksMHhFMywweDM4LDB4NUYsMHhBRiwweEE5LDB4MkYsMHg2NSwweDQ5LDB4
RTIsMHgzOCwweEI1LDB4QUYsMHgzRSwweDBBLAotICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHhE
RiwweEJBLDB4MjgsMHhBMCwweDQ0LDB4NDksMHhFMywweDM4LDB4NUUsMHg1QSwweDU4LDB4N0Us
Ci0gICAgMHhFMywweDM4LDB4QTIsMHgzMCwweDM2LDB4RkUsMHhERSwweDlFLDB4MjQsMHg0MSww
eEMyLDB4MzgsMHhBRiwweEJELDB4MkYsMHhBQiwKLSAgICAweEE1LDB4NTEsMHg0NCwweDQ5LDB4
QUQsMHgwOSwweDA5LDB4QTUsMHgwNiwweDYyLDB4ODQsMHg1MSwweDVGLDB4N0QsMHhGMywweEFC
LAotICAgIDB4QzUsMHg1OSwweDIzLDB4NDEsMHhCRiwweERGLDB4NUUsMHg3QywweDQ0LDB4NDks
MHgwMywweDQxLDB4RTAsMHg3QywweDdGLDB4N0UsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCww
eEFGLDB4MkQsMHgzNSwweDI1LDB4ODQsMHg1MSwweDIzLDB4NDksMHgyNSwweDNELDB4MzUsMHhC
NywKLSAgICAweDY3LDB4NzIsMHhBNSwweDU5LDB4RjUsMHhGRCwweEI1LDB4MkQsMHg2NywweDdB
LDB4QzUsMHg2MSwweERELDB4QkYsMHhBQSwweDgwLAotICAgIDB4MjYsMHg2QSwweEU1LDB4Njks
MHhENSwweDZFLDB4NjQsMHhFOCwweDA2LDB4NkEsMHhBNSwweDYxLDB4RTgsMHhGMiwweEYyLDB4
NzgsCi0gICAgMHg0NywweDcyLDB4QTQsMHg2MSwweDAzLDB4RkQsMHhGNSwweDU1LDB4NDcsMHg3
QSwweEE0LDB4NjEsMHgyMCwweEFCLDB4RjcsMHg1RCwKLSAgICAweDQ2LDB4N0EsMHhBNCwweDYx
LDB4MkEsMHhBQSwweEFELDB4RkQsMHg2NywweDdBLDB4MjYsMHg3MiwweDAwLDB4MDAsMHhBQiww
eDVELAotICAgIDB4NjcsMHg3MiwweEM1LDB4NjEsMHhEQSwweEFBLDB4QTgsMHhFMiwweDA3LDB4
NkEsMHhBNCwweDU5LDB4MDIsMHhBQSwweEZDLDB4N0UsCi0gICAgMHg0NywweDcyLDB4QTQsMHg1
OSwweDA4LDB4QUIsMHgyRiwweEI1LDB4MjYsMHg2QSwweEE1LDB4NTksMHhFRSwweEQ4LDB4NUEs
MHg3OCwKLSAgICAweEU2LDB4NjEsMHhBNSwweDU5LDB4RkYsMHhGMCwweDdFLDB4NzUsMHhDNiww
eDU5LDB4NjQsMHg1MSwweEEyLDB4QTIsMHhEQSwweDVCLAotICAgIDB4MDcsMHg2MiwweDY0LDB4
NTEsMHhBMiwweDAyLDB4QkIsMHg3NSwweEU2LDB4NTksMHg2NCwweDUxLDB4QkUsMHhCMiwweEYy
LDB4RkQsCi0gICAgMHhBNSwweDU5LDB4NDMsMHg0OSwweDgwLDB4OUEsMHgzOCwweDM4LDB4MDYs
MHg2MiwweEE1LDB4NTksMHgyRiwweDI1LDB4RjUsMHhGNywKLSAgICAweDQ3LDB4NzIsMHhBNCww
eDU5LDB4MDgsMHhCRiwweERELDB4NUYsMHhDOSwweDgyLDB4RTYsMHg2MSwweDIyLDB4MkIsMHhB
RCwweEY1LAotICAgIDB4QzksMHg4MiwweDY3LDB4N0EsMHhGQiwweENFLDB4NkIsMHhGOSwweDJE
LDB4QUMsMHg2NywweDdBLDB4MkYsMHhCRCwweEY1LDB4RkQsCi0gICAgMHg3MiwweEQ1LDB4OEIs
MHg5QiwweDAyLDB4MEYsMHgyRCwweEI1LDB4RjQsMHhFNSwweDcyLDB4RDUsMHgwMCwweEEyLDB4
QUIsMHhBRCwKLSAgICAweEY0LDB4RTUsMHhCMywweERELDB4MjAsMHhBMiwweEEzLDB4RTksMHhE
MywweERELDB4QjMsMHhERCwweDc2LDB4RjAsMHgyMCwweDgwLAotICAgIDB4RjMsMHhERCwweEIz
LDB4REQsMHg2QiwweEVGLDB4N0EsMHg1RSwweEIzLDB4REQsMHg3MiwweEQ1LDB4MDIsMHgwOCww
eEZFLDB4N0YsCi0gICAgMHhEMywweERELDB4OTIsMHhENSwweDBBLDB4MkQsMHg5NSwweDU1LDB4
RjQsMHhERCwweDkyLDB4RDUsMHgwMCwweDA4LDB4OEYsMHhBRCwKLSAgICAweEQzLDB4RTUsMHgx
NCwweERFLDB4QUEsMHhBQSwweEFFLDB4RkUsMHg1NSwweEVFLDB4RDMsMHhERCwweEI1LDB4Mjks
MHgyQiwweDJBLAotICAgIDB4NTUsMHhFRSwweEY0LDB4REQsMHg4MCwweEIwLDB4N0MsMHg1QSww
eDM1LDB4RUUsMHg5MiwweEQ1LDB4QTAsMHgyMCwweEZFLDB4NUYsCi0gICAgMHgzNSwweEU2LDB4
QjMsMHhENSwweDIwLDB4MDAsMHgwMCwweDA5LDB4NTUsMHhFRSwweDE0LDB4RTYsMHhENywweDdF
LDB4RkUsMHhFMywKLSAgICAweDM1LDB4RUUsMHgxNCwweERFLDB4RDcsMHhGRiwweEI2LDB4QTIs
MHgzNSwweEU2LDB4RjQsMHhERCwweEVCLDB4RUYsMHhFQSwweDYwLAotICAgIDB4MzUsMHhFNiww
eEY0LDB4RTUsMHhBQiwweEFGLDB4OEEsMHgyQSwweDM1LDB4RTYsMHhGNCwweEU1LDB4RkIsMHhF
QSwweEE4LDB4ODIsCi0gICAgMHgzNSwweEU2LDB4RDQsMHhERCwweEJBLDB4MkEsMHgyQSwweDBB
LDB4OTYsMHhFRSwweDM1LDB4RTYsMHgwOSwweDBCLDB4MEIsMHgwQiwKLSAgICAweEI2LDB4RjYs
MHg3NiwweEVFLDB4Q0EsMHg2QSwweEVBLDB4QUEsMHhCNiwweEY2LDB4NzUsMHhFRSwweDZCLDB4
RUYsMHhBQiwweEVBLAotICAgIDB4NzYsMHhGNiwweDk2LDB4RUUsMHhENSwweEY1LDB4RkYsMHhE
RCwweDk2LDB4RUUsMHg3NiwweEVFLDB4RDgsMHhDQSwweDNFLDB4QTgsCi0gICAgMHg3NiwweEVF
LDB4MTQsMHhFNiwweDYwLDB4QzAsMHhDMCwweDAwLDB4MzUsMHhFNiwweEIzLDB4RDUsMHg3Riww
eERDLDB4NUEsMHg3OCwKLSAgICAweEQzLDB4REQsMHg5MywweEQ1LDB4QkUsMHhGRiwweEFBLDB4
QUEsMHhEMywweERELDB4OTIsMHhENSwweDdFLDB4QkUsMHhGRSwweDVBLAotICAgIDB4QjIsMHhE
NSwweDkyLDB4RDUsMHg2NSwweDc1LDB4NzUsMHhGRCwweEIyLDB4RDUsMHg3MiwweENELDB4Rjcs
MHhCQSwweEVBLDB4RUUsCi0gICAgMHg5MiwweEQ1LDB4NzIsMHhDRCwweDgwLDB4QUEsMHhFMiww
eEJFLDB4OTIsMHhENSwweDUxLDB4Q0QsMHgwMiwweDJCLDB4MkEsMHhFQSwKLSAgICAweDkyLDB4
RDUsMHg1MSwweENELDB4RjgsMHhGQSwweDlGLDB4NTcsMHg5MiwweEQ1LDB4NTEsMHhDRCwweDdG
LDB4NzcsMHhFRiwweDlELAotICAgIDB4NjcsMHg3QSwweDQ2LDB4NzIsMHgzRCwweEFBLDB4Q0Ys
MHg5QSwweDY3LDB4N0EsMHg0NiwweDcyLDB4QjQsMHg1MCwweEZFLDB4MEEsCi0gICAgMHg4Nyww
eDdBLDB4NDcsMHg3MiwweERBLDB4QkYsMHhFRiwweEJCLDB4NjcsMHg3QSwweDQ2LDB4NzIsMHhE
QiwweDgyLDB4QzIsMHg4QiwKLSAgICAweDY3LDB4NzIsMHg0NiwweDcyLDB4M0EsMHg3QSwweEZB
LDB4OTcsMHg4NywweDdBLDB4NDYsMHg3MiwweDdDLDB4NkIsMHg0MywweEYyLAotICAgIDB4ODcs
MHg3QSwweDQ2LDB4NzIsMHg3RiwweEExLDB4QkUsMHhBRCwweDg3LDB4N0EsMHgyNSwweDZBLDB4
MkEsMHhBQSwweEU2LDB4RjgsCi0gICAgMHhBNywweDdBLDB4MjYsMHg2QSwweEVFLDB4QkUsMHhC
NiwweDJCLDB4NDYsMHg3QSwweDY2LDB4NzIsMHg3RCwweEQ1LDB4QkQsMHg3NywKLSAgICAweDg3
LDB4N0EsMHg0NiwweDcyLDB4MEUsMHhBQiwweEJCLDB4QjUsMHg4NiwweDdBLDB4NDUsMHg3Miww
eERFLDB4QUMsMHgyQSwweEEyLAotICAgIDB4ODYsMHg3QSwweDQ2LDB4NzIsMHhBOCwweEFBLDB4
QkQsMHhBQSwweDg2LDB4N0EsMHg0NiwweDcyLDB4QkYsMHhFQywweEUyLDB4QTIsCi0gICAgMHg4
NiwweDdBLDB4NDYsMHg3MiwweEQ3LDB4NDUsMHg4RiwweEJFLDB4ODYsMHg3QSwweDQ2LDB4NzIs
MHhFRiwweEI3LDB4QUEsMHhBQSwKLSAgICAweDg3LDB4N0EsMHg0NSwweDcyLDB4QUYsMHhCRiww
eEFGLDB4OEEsMHg4NiwweDdBLDB4NDYsMHg3MiwweEZCLDB4RUEsMHhFQSwweDlDLAotICAgIDB4
QTcsMHg3QSwweDY3LDB4NzIsMHhGRiwweDdELDB4RkIsMHhCMywweDg2LDB4N0EsMHg0NiwweDcy
LDB4QUUsMHhGRSwweEY2LDB4RDYsCi0gICAgMHg4NywweDdBLDB4NDYsMHg3MiwweEE1LDB4QUUs
MHhGRSwweEFBLDB4NjcsMHg3QSwweDQ2LDB4NzIsMHhCNywweEFCLDB4M0UsMHgyMiwKLSAgICAw
eDg3LDB4ODIsMHg0NiwweDcyLDB4RkYsMHhEQSwweDk4LDB4M0YsMHg4NywweDdBLDB4NDYsMHg3
QSwweEFBLDB4ODMsMHhFQSwweDYwLAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhCQSwweEY4
LDB4MUQsMHg5QiwweDg2LDB4N0EsMHg0NSwweDdBLDB4OEEsMHhFOCwweDJDLDB4QjksCi0gICAg
MHg4NywweDdBLDB4NDYsMHg3QSwweEJFLDB4QUYsMHhBQSwweEEyLDB4ODcsMHg3QSwweDI2LDB4
N0EsMHhBQywweEE4LDB4QTgsMHg4MiwKLSAgICAweDg3LDB4N0EsMHgyNSwweDcyLDB4QTksMHhG
QSwweEJBLDB4MjgsMHhBNywweDgyLDB4NjYsMHg3QSwweDU3LDB4RjUsMHhBRCwweEI5LAotICAg
IDB4QzgsMHg4QSwweDQ2LDB4NzIsMHg3RiwweDdFLDB4RkYsMHgzQiwweENCLDB4QTMsMHhBOCww
eDgyLDB4RjUsMHhBNSwweDBELDB4MEIsCi0gICAgMHhDQiwweEEzLDB4QTcsMHg4MiwweDdFLDB4
NUUsMHg3OCwweDdDLDB4ODcsMHg4MiwweEU1LDB4NjEsMHg3RSwweDdDLDB4N0MsMHg1OCwKLSAg
ICAweEU1LDB4NjEsMHg0MywweDQ5LDB4N0UsMHg1RSwweDdDLDB4NUMsMHgwMywweDQxLDB4QzIs
MHgzMCwweEU0LDB4NTYsMHg1RSwweDU0LAotICAgIDB4QzIsMHgzMCwweEExLDB4MjgsMHgzNiww
eDhGLDB4QzYsMHg4MCwweEMyLDB4MzAsMHhBMiwweDI4LDB4NTgsMHg1RiwweDVGLDB4OTUsCi0g
ICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEI3LDB4QjcsMHhBRSwweDhGLDB4MDMsMHgzMSwweEEy
LDB4MjgsMHhBRCwweEQ3LDB4QUUsMHhCMiwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RTks
MHhFOCwweEMyLDB4ODAsMHhDMiwweDMwLDB4QTIsMHgyOCwweDBCLDB4MkYsMHgzNSwweDg4LAot
ICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg3RSwweEVFLDB4N0QsMHg1NywweEMyLDB4MzAsMHg4
MiwweDI4LDB4RkYsMHhGRiwweEZCLDB4MjMsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweDk1
LDB4QTUsMHhCNywweDJBLDB4NDMsMHg0MSwweEUzLDB4MzgsMHhFNSwweEFELDB4QUYsMHg4RiwK
LSAgICAweDg1LDB4NDksMHgyMywweDQxLDB4MkQsMHhBRCwweEVELDB4NzcsMHg2NCwweDQ5LDB4
QzIsMHgzOCwweEY4LDB4NzgsMHg3QSwweDdGLAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzgsMHhC
RSwweDNELDB4MEQsMHg4RiwweEE2LDB4NTEsMHg0NCwweDQ5LDB4N0QsMHg4RCwweDBELDB4ODks
Ci0gICAgMHhBNiwweDUxLDB4MjQsMHg0OSwweEY1LDB4N0UsMHg2OCwweDY4LDB4NjQsMHg0OSww
eDI0LDB4NDEsMHhBRSwweDBCLDB4MEYsMHhDNSwKLSAgICAweEE1LDB4NTksMHgwMywweDQxLDB4
MEEsMHg4QSwweEVFLDB4NUYsMHhDNSwweDU5LDB4RTMsMHgzOCwweEY4LDB4RjIsMHhGRiwweDdE
LAotICAgIDB4MjQsMHg0MSwweEMyLDB4MzgsMHhFOCwweDU4LDB4REEsMHhGMiwweDAzLDB4Mzks
MHhDMiwweDM4LDB4MEUsMHhBRCwweDE3LDB4QjUsCi0gICAgMHgyNCwweDQxLDB4RTMsMHgzOCww
eDAzLDB4MjMsMHgzRCwweDVELDB4NjUsMHg0OSwweDAzLDB4NDEsMHhFQSwweDNBLDB4OUEsMHg1
RiwKLSAgICAweDY0LDB4NDksMHhDMSwweDM4LDB4NkEsMHhGMCwweEU4LDB4QUIsMHgwMywweDQx
LDB4QzIsMHgzMCwweEQ1LDB4QTksMHhBQSwweDgwLAotICAgIDB4MjMsMHg0MSwweEUzLDB4Mzgs
MHgyQiwweDIzLDB4M0YsMHgyQiwweDg1LDB4NTEsMHgwMywweDQxLDB4OEIsMHgyQiwweDJELDB4
QUQsCi0gICAgMHhBNiwweDUxLDB4MjMsMHg0MSwweEZDLDB4RkUsMHg3RSwweDVGLDB4NDUsMHg0
OSwweEMyLDB4MzgsMHg3RiwweDc2LDB4RkEsMHg4MiwKLSAgICAweDAzLDB4MzksMHhDMiwweDM4
LDB4RDUsMHhGNywweEE2LDB4QkUsMHgwMywweDQxLDB4QzIsMHgzOCwweDJGLDB4RUYsMHhCRSww
eDgyLAotICAgIDB4ODUsMHg0OSwweDAzLDB4NDEsMHgyRCwweEZELDB4RkQsMHhENSwweEM2LDB4
NTksMHgyMywweDQxLDB4MjIsMHgyRiwweEI1LDB4RDUsCi0gICAgMHhDNSwweDUxLDB4MjQsMHg0
OSwweEY4LDB4NkUsMHhGRiwweDdGLDB4NDQsMHg0OSwweDAzLDB4NDEsMHg3QSwweDUwLDB4NzIs
MHhCMSwKLSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4QjUsMHhCRCwweDlELDB4MkEsMHhFNSww
eDYxLDB4NjQsMHg1MSwweDU1LDB4REQsMHhBRiwweDJELAotICAgIDB4MjYsMHg2QSwweDg0LDB4
NTksMHgyRCwweEY1LDB4RkUsMHhBQiwweDQ3LDB4NzIsMHhBNCwweDU5LDB4ODAsMHgwMiwweEFC
LDB4QjcsCi0gICAgMHgyNiwweDZBLDB4ODQsMHg1OSwweEE4LDB4RjAsMHg2MCwweDc4LDB4RTUs
MHg2MSwweDY0LDB4NTEsMHhFOCwweEJCLDB4RkYsMHg3RiwKLSAgICAweEM1LDB4NjEsMHg0Myww
eDUxLDB4MjIsMHhBQSwweEI3LDB4RDUsMHhDNSwweDYxLDB4ODQsMHg1OSwweEYyLDB4RkEsMHg2
QiwweEZCLAotICAgIDB4QzUsMHg2MSwweDg0LDB4NTksMHhCMiwweDBELDB4MzcsMHgzRCwweDI3
LDB4NzIsMHg4NCwweDU5LDB4QUIsMHhGRiwweDdBLDB4NzAsCi0gICAgMHgyNywweDZBLDB4ODQs
MHg1OSwweEVBLDB4OEIsMHgyRCwweEZGLDB4MDYsMHg2QSwweDY0LDB4NTEsMHhGQSwweDdBLDB4
N0MsMHg3QSwKLSAgICAweEE0LDB4NTksMHg0NCwweDUxLDB4MkIsMHgzNywweDU3LDB4N0QsMHhF
NiwweDYxLDB4NDQsMHg0OSwweEEwLDB4QUYsMHg1NywweDU1LAotICAgIDB4QTUsMHg1OSwweDQ0
LDB4NDksMHgwOCwweDhCLDB4RkEsMHhGRiwweDg1LDB4NTEsMHg0NCwweDQ5LDB4RkUsMHg3MCww
eDZBLDB4N0IsCi0gICAgMHg4NSwweDUxLDB4MjMsMHg0OSwweDJGLDB4QjcsMHhCRCwweDVGLDB4
QzYsMHg1OSwweDY0LDB4NDksMHhGNSwweDhCLDB4MEQsMHgyNSwKLSAgICAweDA2LDB4NjIsMHg2
NCwweDUxLDB4N0YsMHhFQSwweEFBLDB4MEEsMHgwNiwweDYyLDB4ODQsMHg1MSwweEJGLDB4Rjcs
MHg3NywweEQ4LAotICAgIDB4MDYsMHg2MiwweDg0LDB4NTEsMHhBQSwweDJGLDB4QkQsMHhENyww
eEU1LDB4NjEsMHg4NCwweDU5LDB4MjIsMHhGQSwweDYyLDB4QUYsCi0gICAgMHg2NywweDcyLDB4
QTUsMHg1OSwweDAyLDB4MDksMHhBRCwweDU1LDB4RTksMHg4QSwweDQ3LDB4NzIsMHgwQiwweEE1
LDB4QkQsMHhENSwKLSAgICAweDRELDB4QjQsMHhFOSwweDhBLDB4MkIsMHgyRiwweEJELDB4QjUs
MHg5MiwweERELDB4RUMsMHhBMywweDAyLDB4MkIsMHgyQiwweDI1LAotICAgIDB4RjQsMHhFNSww
eEIzLDB4REQsMHhBMywweDhCLDB4MkIsMHgyRCwweEY0LDB4RTUsMHg5MiwweEQ1LDB4QUEsMHhC
QSwweDdBLDB4RkMsCi0gICAgMHhCMywweERELDB4NTEsMHhDRCwweEEwLDB4RjgsMHhEQSwweEZB
LDB4OTIsMHhENSwweDcyLDB4RDUsMHg2RiwweEFGLDB4RjUsMHhGNSwKLSAgICAweEQzLDB4REQs
MHg3MiwweENELDB4QUQsMHhCNywweDJGLDB4MEYsMHhGNCwweERELDB4OTIsMHhENSwweEE5LDB4
MEIsMHhBQSwweDJCLAotICAgIDB4MzQsMHhFNiwweEY0LDB4REQsMHhGRCwweDJELDB4QUYsMHhG
NSwweDM1LDB4RTYsMHhEMywweERELDB4MDIsMHhGQSwweEZFLDB4NTUsCi0gICAgMHgxNCwweEU2
LDB4RDMsMHhERCwweEUwLDB4QjcsMHg3RiwweERELDB4RDMsMHhERCwweDcyLDB4Q0QsMHhEOCww
eDc4LDB4NTgsMHg1RSwKLSAgICAweDE0LDB4RTYsMHg5MiwweEQ1LDB4MEIsMHgwRCwweDBELDB4
MjksMHgzNSwweEU2LDB4RjQsMHhERCwweDgwLDB4N0IsMHhGRSwweEJFLAotICAgIDB4NTUsMHhF
RSwweDE0LDB4RTYsMHg4NywweDBELDB4MDMsMHgwMiwweDc2LDB4RUUsMHgxNCwweEU2LDB4REUs
MHhBMiwweDhBLDB4OEEsCi0gICAgMHg1NSwweEVFLDB4MzUsMHhFNiwweDc1LDB4RjIsMHhDMCww
eDUwLDB4MTQsMHhFRSwweDM1LDB4RTYsMHhENSwweEY3LDB4QjUsMHhBRCwKLSAgICAweDM1LDB4
RTYsMHgxNCwweEU2LDB4M0YsMHhCOSwweDIzLDB4QkIsMHhCNywweEY2LDB4NTUsMHhFNiwweEZE
LDB4M0QsMHgyOSwweDBCLAotICAgIDB4QjYsMHhGNiwweDk2LDB4RUUsMHg3QSwweEU4LDB4N0Es
MHg3RSwweDc2LDB4RkUsMHg5NiwweEVFLDB4RDUsMHhERiwweDc1LDB4NzcsCi0gICAgMHg5Niww
eEVFLDB4NzYsMHhFRSwweDA4LDB4QTAsMHhCMiwweDY2LDB4OTYsMHhFRSwweDc2LDB4RUUsMHhB
MiwweEVBLDB4REUsMHg3QiwKLSAgICAweDc2LDB4RUUsMHg1NiwweEU2LDB4MDgsMHgwMCwweDAw
LDB4QTAsMHg3NiwweEVFLDB4RDMsMHhERCwweDVFLDB4RTAsMHhFOCwweDg4LAotICAgIDB4MTQs
MHhFNiwweEIzLDB4RDUsMHg1RiwweDVGLDB4RkUsMHg2MCwweEQzLDB4REQsMHg5MiwweEQ1LDB4
RkMsMHhGRiwweEVFLDB4QjgsCi0gICAgMHhCMiwweEQ1LDB4NTIsMHhDRCwweEFBLDB4QUEsMHhB
OCwweEUwLDB4OTIsMHhENSwweDcyLDB4Q0QsMHgwOCwweDBBLDB4OTgsMHg4OCwKLSAgICAweEIy
LDB4RDUsMHg3MiwweENELDB4RjYsMHg3QSwweEZCLDB4RkUsMHg5MiwweEQ1LDB4NzEsMHhDRCww
eDY3LDB4RkUsMHg2RiwweDdBLAotICAgIDB4NzEsMHhDRCwweDUxLDB4Q0QsMHg3NywweDVFLDB4
NUYsMHg5QSwweDcxLDB4Q0QsMHgzMSwweEM1LDB4QUIsMHhGQiwweEZCLDB4QUEsCi0gICAgMHg2
NywweDdBLDB4QTQsMHg2MSwweDAyLDB4MEEsMHhBQSwweEQ1LDB4ODgsMHg3QSwweEU1LDB4Njks
MHg4QSwweEFFLDB4MEUsMHgyRCwKLSAgICAweDY3LDB4NzIsMHgyNiwweDcyLDB4QzIsMHg4QSww
eDI3LDB4QUMsMHg2NywweDdBLDB4NDYsMHg3MiwweDA2LDB4RUEsMHg1MCwweDUwLAotICAgIDB4
NjcsMHg3QSwweDQ2LDB4NzIsMHg1NywweDcwLDB4N0EsMHhFMywweDg3LDB4NzIsMHgyNSwweDZB
LDB4ODIsMHhBQiwweEU3LDB4QUEsCi0gICAgMHg4NiwweDdBLDB4NDYsMHg3MiwweDc2LDB4QTUs
MHhBQiwweEY1LDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhCRiwweEFBLDB4Q0YsMHhFRiwKLSAgICAw
eDg3LDB4N0EsMHg0NiwweDcyLDB4RjksMHg3OCwweDgwLDB4MDAsMHg4NywweDdBLDB4NDYsMHg3
MiwweEI5LDB4QTMsMHg4OSwweDNFLAotICAgIDB4QTcsMHg3QSwweDQ2LDB4NzIsMHg3NCwweDc3
LDB4REYsMHhERSwweDg2LDB4N0EsMHg0NiwweDcyLDB4OEYsMHhBQiwweEZCLDB4RkQsCi0gICAg
MHg4NiwweDdBLDB4NDYsMHg3MiwweDg4LDB4OEIsMHgwQSwweDg5LDB4QTcsMHg3QSwweDQ1LDB4
NzIsMHhFQSwweDc4LDB4QUEsMHhCRiwKLSAgICAweDg2LDB4N0EsMHg2NiwweDcyLDB4QzMsMHhC
QiwweEJFLDB4NTcsMHg4NiwweDdBLDB4NDUsMHg3MiwweEEyLDB4QjgsMHgwRCwweDg4LAotICAg
IDB4QTcsMHg3QSwweDY2LDB4NzIsMHhGQSwweEUyLDB4NTYsMHhERiwweDg2LDB4N0EsMHg2Niww
eDcyLDB4REUsMHhFNiwweDhCLDB4QTYsCi0gICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEY0LDB4
RDcsMHg3RCwweDdCLDB4ODYsMHg3QSwweDQ2LDB4NzIsMHhCRSwweEZBLDB4NkUsMHhENSwKLSAg
ICAweEE3LDB4ODIsMHg2NiwweDdBLDB4RTUsMHg3NSwweDc1LDB4NzUsMHg4NywweDdBLDB4NDYs
MHg3QSwweEI5LDB4MzMsMHgwQiwweEFCLAotICAgIDB4ODcsMHg3QSwweDI1LDB4N0EsMHhBQSww
eDYyLDB4QUEsMHhBQSwweDg3LDB4N0EsMHg0NiwweDcyLDB4Q0QsMHhBNSwweEJGLDB4M0UsCi0g
ICAgMHhBNywweDdBLDB4NjYsMHg3QSwweDc1LDB4NzUsMHg2QiwweEVCLDB4QzgsMHg4MiwweDQ1
LDB4NzIsMHhGNSwweEVELDB4MkIsMHg4QiwKLSAgICAweEE3LDB4ODIsMHg2NiwweDdBLDB4RkEs
MHhCNiwweEU0LDB4NjcsMHhBNywweDgyLDB4NDYsMHg3MiwweDhCLDB4MkYsMHhCNywweEJBLAot
ICAgIDB4QTcsMHg4MiwweDY2LDB4N0EsMHg5RSwweEFCLDB4QUEsMHhBQSwweEE3LDB4N0EsMHg0
NiwweDcyLDB4QUMsMHhCRiwweEU2LDB4RUIsCi0gICAgMHgyQSwweDkzLDB4ODYsMHg3QSwweDE3
LDB4QTUsMHgyRCwweDJELDB4MEQsMHhBQywweDI5LDB4OTMsMHgyOSwweDJCLDB4MEIsMHgwQSwK
LSAgICAweEVDLDB4QUIsMHhFOCwweDhBLDB4NzgsMHg3OCwweEY4LDB4NzgsMHhDOCwweDgyLDB4
QzYsMHg2MSwweDdBLDB4N0EsMHhGOCwweDdDLAotICAgIDB4QzUsMHg2MSwweDAzLDB4NDEsMHg3
OCwweDYwLDB4RTgsMHhFQywweDIzLDB4NDEsMHhDMiwweDM4LDB4RDcsMHhBQSwweEFBLDB4MDAs
Ci0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweERGLDB4NkUsMHg2QSwweEYwLDB4QTIsMHgzMCww
eEMyLDB4MjgsMHg0QSwweDZFLDB4RkYsMHhCQSwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4
OEEsMHhGMywweEY5LDB4NzUsMHhFMywweDMwLDB4QTIsMHgyOCwweDNBLDB4QUIsMHhCRiwweEZG
LAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhBMCwweEVBLDB4RjgsMHg3QSwweEMyLDB4MzAs
MHhBMiwweDI4LDB4RTAsMHg0MiwweEMyLDB4NjEsCi0gICAgMHhDMiwweDI4LDB4ODIsMHgyMCww
eEIwLDB4MkEsMHhCRiwweEJELDB4RTMsMHgzMCwweEEyLDB4MjgsMHhBNSwweDJGLDB4MkUsMHgy
QiwKLSAgICAweDQ0LDB4NDEsMHhFMywweDMwLDB4RjUsMHhCRCwweEVGLDB4MkEsMHg0NCwweDQx
LDB4MDMsMHgzOSwweDI5LDB4ODMsMHgwQiwweDAwLAotICAgIDB4NDQsMHg0OSwweEMyLDB4MzAs
MHhFOCwweEIyLDB4RkUsMHg1RSwweDAzLDB4MzksMHhDMiwweDM4LDB4QkUsMHhCRSwweDNGLDB4
MEIsCi0gICAgMHg0NCwweDQxLDB4RTIsMHgzOCwweEI3LDB4MkYsMHgzQiwweEFELDB4QTUsMHg1
MSwweDI0LDB4NDEsMHg4MywweEFCLDB4QkQsMHhGNSwKLSAgICAweDg1LDB4NTEsMHgyNCwweDQx
LDB4NjIsMHhFOCwweDY4LDB4NkIsMHgyMywweDQxLDB4QzIsMHgzOCwweDhBLDB4RkMsMHg3OCww
eDdFLAotICAgIDB4MDMsMHg0MSwweEEyLDB4MzAsMHgyMCwweEJBLDB4RkIsMHg3NywweEMyLDB4
NDAsMHgwMywweDM5LDB4RkIsMHhFRSwweEZBLDB4RUYsCi0gICAgMHgyNCwweDQxLDB4QzIsMHgz
OCwweEJFLDB4QkIsMHhFRiwweDdCLDB4MDMsMHgzOSwweEEyLDB4MzAsMHgwQSwweDIwLDB4QkUs
MHg5NywKLSAgICAweDI0LDB4NDEsMHhDMywweDMwLDB4N0YsMHhGQSwweDhBLDB4QUYsMHgyNCww
eDQxLDB4QzIsMHgzOCwweEYyLDB4RkQsMHhCNSwweEY3LAotICAgIDB4MjQsMHg0MSwweEUzLDB4
MzgsMHgwRCwweEJGLDB4N0IsMHhFRCwweDIzLDB4NDEsMHhFMiwweDM4LDB4QTAsMHhBQywweEE3
LDB4MEYsCi0gICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweERGLDB4ODMsMHhFMSwweDJCLDB4NDQs
MHg0MSwweDAzLDB4NDEsMHgzNywweDM1LDB4NTcsMHg1NiwKLSAgICAweDY0LDB4NDksMHgyMyww
eDQxLDB4REEsMHgwMywweEUxLDB4N0YsMHg4NSwweDUxLDB4MjQsMHg0MSwweDdCLDB4OEEsMHhB
QSwweEZCLAotICAgIDB4NjUsMHg0OSwweDAzLDB4NDEsMHg1NSwweDVFLDB4RkEsMHhGOCwweDY1
LDB4NDksMHgwMywweDM5LDB4NTcsMHg3RiwweDZCLDB4MjMsCi0gICAgMHg4NSwweDQ5LDB4MDMs
MHg0MSwweERELDB4RTUsMHhBOSwweEEyLDB4ODUsMHg1MSwweDI0LDB4NDEsMHhCNSwweDM3LDB4
QkUsMHhGRCwKLSAgICAweDg1LDB4NTEsMHgyNCwweDQ5LDB4NkEsMHg2QSwweEZBLDB4QUUsMHg4
NCwweDUxLDB4MDMsMHg0MSwweEJELDB4QUYsMHhCQSwweDgyLAotICAgIDB4ODUsMHg1MSwweDIz
LDB4NDksMHhBQiwweEFGLDB4MkYsMHhBNCwweEU2LDB4NjEsMHg4NCwweDUxLDB4QTUsMHgyNSww
eEFELDB4MEIsCi0gICAgMHgyNiwweDYyLDB4QzUsMHg2MSwweEFGLDB4M0YsMHhGRiwweEI1LDB4
MDYsMHg2QSwweEE0LDB4NTksMHgyRSwweDc4LDB4N0UsMHg1QSwKLSAgICAweEU1LDB4NjksMHg2
NCwweDUxLDB4RjgsMHhGQiwweEQ1LDB4RjcsMHhDNSwweDYxLDB4NjQsMHg1MSwweEZGLDB4NzIs
MHhBOCwweEEzLAotICAgIDB4QTUsMHg1OSwweDIzLDB4NTEsMHhENiwweDk3LDB4RTIsMHhBMCww
eEU2LDB4NjksMHg4NCwweDU5LDB4RkQsMHhGOSwweEJELDB4MjUsCi0gICAgMHgwNywweDZBLDB4
QTUsMHg2MSwweERELDB4REYsMHgyOSwweDBBLDB4NDcsMHg3MiwweEE1LDB4NjEsMHg3QSwweENB
LDB4RUIsMHhFOCwKLSAgICAweEE1LDB4NTksMHg0NCwweDUxLDB4RjAsMHhGRSwweDlGLDB4QTgs
MHhDNSwweDYxLDB4NDQsMHg0OSwweEU4LDB4QUIsMHhFQiwweEY3LAotICAgIDB4ODUsMHg1MSww
eDIzLDB4NTEsMHg2QSwweEFCLDB4MEIsMHgwMiwweDg0LDB4NTEsMHg0NCwweDQ5LDB4NzUsMHhG
RiwweDZGLDB4RkMsCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0OSwweDhBLDB4RUIsMHg2NywweDg4
LDB4ODUsMHg1MSwweDIzLDB4NDksMHg4QiwweDJCLDB4QkQsMHhFNSwKLSAgICAweDg1LDB4NTEs
MHgyMywweDQ5LDB4N0UsMHhBRSwweDAyLDB4MEIsMHhDNiwweDU5LDB4NjQsMHg0OSwweDJELDB4
MkQsMHhCRiwweEZGLAotICAgIDB4MDYsMHg2MiwweEE1LDB4NTEsMHg4QSwweEFBLDB4RUIsMHhF
RiwweDA2LDB4NjIsMHg4NCwweDUxLDB4QTgsMHhDQSwweEVCLDB4NkQsCi0gICAgMHhFNiwweDYx
LDB4QTUsMHg1OSwweDc2LDB4N0EsMHhFRCwweDA1LDB4RTYsMHg2MSwweDg0LDB4NTEsMHgyRCww
eEFGLDB4QTYsMHhGQSwKLSAgICAweDI3LDB4NzIsMHhBNSwweDU5LDB4REQsMHhCQSwweEFBLDB4
MkYsMHg4OCwweDdBLDB4RTYsMHg2OSwweDJELDB4QUQsMHgyQiwweDJCLAotICAgIDB4NDksMHg5
MywweEE4LDB4N0EsMHgyRCwweDM1LDB4QkQsMHhCRCwweDRELDB4QjQsMHhFOSwweDhBLDB4MEIs
MHhBRiwweEZGLDB4REQsCi0gICAgMHg5MywweERELDB4RUMsMHhBMywweDAyLDB4MEYsMHhBRCww
eEI1LDB4RjMsMHhFNSwweDcyLDB4RDUsMHhGQSwweEFBLDB4QUIsMHhCNSwKLSAgICAweEQzLDB4
REQsMHg3MiwweEQ1LDB4NUYsMHg1RSwweDdDLDB4RkUsMHg5MiwweEQ1LDB4NzEsMHhENSwweDBC
LDB4MDksMHhBOSwweDAwLAotICAgIDB4RDMsMHhERCwweDkyLDB4RDUsMHhBRCwweEFCLDB4QTUs
MHgyRCwweDE0LDB4RTYsMHhCMywweEQ1LDB4QUYsMHhFRCwweEJGLDB4OEIsCi0gICAgMHhGNCww
eERELDB4QjIsMHhERCwweDg4LDB4QkUsMHgyMCwweDIwLDB4MTQsMHhFNiwweEQzLDB4REQsMHhE
NSwweEQ1LDB4QUUsMHgwOCwKLSAgICAweDE0LDB4RTYsMHhEMywweERELDB4N0YsMHhFQiwweDYy
LDB4NjAsMHg5MiwweEQ1LDB4RjAsMHhCQywweDMwLDB4QjgsMHhGOCwweDVFLAotICAgIDB4MTQs
MHhFNiwweDEwLDB4QzUsMHgyQiwweEFGLDB4RjUsMHhENSwweDM1LDB4RTYsMHg5MiwweEQ1LDB4
ODgsMHgwMiwweDBCLDB4MDksCi0gICAgMHg3NiwweEVFLDB4MTQsMHhFNiwweDJCLDB4MjIsMHhB
QSwweEFBLDB4NTUsMHhFRSwweDM1LDB4RTYsMHg4MCwweEY0LDB4NTcsMHg1RSwKLSAgICAweDU1
LDB4RUUsMHgxNSwweEU2LDB4RDIsMHhCQSwweEZCLDB4RUIsMHgzNSwweEU2LDB4MTQsMHhFNiww
eEY4LDB4QkUsMHhGOCwweDVBLAotICAgIDB4NTUsMHhFNiwweDE0LDB4RTYsMHhENywweDk1LDB4
MzUsMHgwRCwweEI3LDB4RjYsMHg1NSwweEU2LDB4MkYsMHgyOSwweDJCLDB4QUIsCi0gICAgMHhC
NiwweEY2LDB4NzYsMHhFRSwweEEyLDB4RUEsMHg3QSwweEZFLDB4OTYsMHhFRSwweDU1LDB4RUUs
MHgwOCwweEU4LDB4RUEsMHhGQSwKLSAgICAweDk2LDB4RUUsMHg1NSwweEU2LDB4RUEsMHhBQiww
eEFELDB4RkQsMHg3NiwweEVFLDB4NTUsMHhFNiwweDAyLDB4MEUsMHg4RSwweDRFLAotICAgIDB4
NzUsMHhFRSwweDU1LDB4RTYsMHhFOCwweEMyLDB4MkYsMHhGQiwweDM1LDB4RUUsMHg3NSwweEU2
LDB4QUYsMHhBRiwweEI3LDB4QkUsCi0gICAgMHg1NSwweEVFLDB4MTQsMHhFNiwweDZCLDB4QTgs
MHg3QSwweEZBLDB4MTQsMHhFNiwweEIzLDB4RDUsMHg1QywweDU4LDB4NzgsMHg1QSwKLSAgICAw
eEIyLDB4RDUsMHg3MiwweENELDB4RjgsMHhGQywweDJBLDB4MjgsMHhCMiwweEQ1LDB4NzMsMHhD
RCwweEJBLDB4REEsMHhBRSwweDJCLAotICAgIDB4QjIsMHhENSwweDcxLDB4Q0QsMHg2QSwweEJB
LDB4RjcsMHhFRCwweDkyLDB4RDUsMHg3MiwweENELDB4NTYsMHg1RSwweDc1LDB4NkYsCi0gICAg
MHhCMiwweEQ1LDB4NTEsMHhDRCwweDVCLDB4RkYsMHhFRiwweDNCLDB4NzIsMHhDRCwweDEwLDB4
QzUsMHhGQiwweEZGLDB4QjQsMHhGOCwKLSAgICAweDgzLDB4NTksMHg0MywweDU5LDB4NkEsMHhB
RiwweDJGLDB4MDIsMHgwNiwweDZBLDB4NjMsMHg1OSwweDI5LDB4RkQsMHhENSwweDU1LAotICAg
IDB4NDYsMHg3MiwweDYzLDB4NTksMHgwMCwweEFGLDB4REQsMHg1NSwweDg3LDB4N0EsMHg4NCww
eDYxLDB4MDgsMHhBMiwweEE5LDB4RjUsCi0gICAgMHg2NiwweDcyLDB4MjUsMHg2QSwweDBCLDB4
MEYsMHg4OSwweEVELDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhGQiwweEE3LDB4QTcsMHgyNSwKLSAg
ICAweEE4LDB4N0EsMHg0NiwweDcyLDB4NTUsMHhFRiwweDhBLDB4RkEsMHg4NywweDdBLDB4NDYs
MHg3MiwweEE4LDB4QUIsMHg1MiwweDYyLAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhBQSww
eEZBLDB4RUUsMHhCQiwweDg3LDB4N0EsMHg0NiwweDcyLDB4OEUsMHgwQiwweEJGLDB4QkUsCi0g
ICAgMHg4NywweDdBLDB4NDYsMHg3MiwweDdBLDB4RkEsMHhBQSwweDgzLDB4ODcsMHg3QSwweDQ2
LDB4NzIsMHhGRiwweEJCLDB4MUUsMHhERSwKLSAgICAweEE3LDB4N0EsMHg0NiwweDcyLDB4MkQs
MHhBNywweEJELDB4QkYsMHhBNywweDdBLDB4NjYsMHg3MiwweEJGLDB4QjksMHhCQiwweEFELAot
ICAgIDB4QTcsMHg3QSwweDY2LDB4NzIsMHhENSwweDU3LDB4QkUsMHhGQywweEE3LDB4N0EsMHg2
NiwweDcyLDB4RUYsMHhFRCwweEVBLDB4REUsCi0gICAgMHhBNywweDdBLDB4NjYsMHg3MiwweEQ3
LDB4QjcsMHhCNCwweDlFLDB4ODYsMHg3QSwweDQ2LDB4NzIsMHhBOCwweDBGLDB4MEEsMHgwMCwK
LSAgICAweDg2LDB4N0EsMHg2NiwweDcyLDB4QzIsMHhBQywweENDLDB4MjAsMHg4NywweDdBLDB4
NDUsMHg3MiwweEI1LDB4MkEsMHhGMCwweEUyLAotICAgIDB4QTcsMHg4MiwweDQ1LDB4NzIsMHg2
RiwweDhGLDB4QkUsMHhBQiwweDg3LDB4N0EsMHg0NiwweDcyLDB4RUIsMHg3MiwweEJFLDB4QTcs
Ci0gICAgMHg4NywweDgyLDB4NjcsMHg3QSwweEQyLDB4QzIsMHg2QywweDdGLDB4QTgsMHg4Miww
eDQ2LDB4NzIsMHg3RiwweDdGLDB4OUQsMHgzQiwKLSAgICAweEE3LDB4N0EsMHg2NiwweDdBLDB4
RTksMHhCRCwweERDLDB4QkUsMHhBNywweDgyLDB4NDYsMHg3MiwweEFBLDB4MjcsMHhBQSwweEFB
LAotICAgIDB4QTcsMHg4MiwweDY2LDB4N0EsMHg1NSwweDdFLDB4OUUsMHg1OCwweEE4LDB4ODIs
MHg2NywweDdBLDB4REIsMHg3RiwweENCLDB4RUYsCi0gICAgMHg4NywweDgyLDB4NjYsMHg3QSww
eENDLDB4RjUsMHhERCwweEM1LDB4RTgsMHg4QSwweDY2LDB4N0EsMHhENywweEZELDB4QkYsMHgz
RiwKLSAgICAweENDLDB4QTMsMHhBNywweDgyLDB4M0QsMHgyRCwweDJCLDB4MEIsMHgwRSwweEI0
LDB4OEIsMHg5QiwweDBBLDB4QUUsMHhFMiwweDcwLAotICAgIDB4RUMsMHhBQiwweEE3LDB4ODIs
MHhGOCwweDc4LDB4N0EsMHg3QSwweEM4LDB4ODIsMHhDNSwweDYxLDB4NTgsMHg3RSwweERFLDB4
RkUsCi0gICAgMHgwNiwweDYyLDB4NjQsMHg1MSwweDVGLDB4RkEsMHhFOCwweEU4LDB4ODUsMHg1
MSwweDAzLDB4NDEsMHhGRSwweEZBLDB4N0MsMHg1OCwKLSAgICAweDIzLDB4NDEsMHhFMiwweDM4
LDB4N0MsMHhFOCwweDZFLDB4NEIsMHhDMiwweDMwLDB4QTIsMHgyOCwweEVDLDB4MjAsMHhGMiww
eEYwLAotICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhFOSwweEFBLDB4RUIsMHg2QiwweEUzLDB4
MzAsMHhBMiwweDI4LDB4QjUsMHhGNSwweEJGLDB4OTUsCi0gICAgMHhDMiwweDI4LDB4QTIsMHgy
OCwweDcwLDB4NjIsMHg1OCwweDU0LDB4QTIsMHgyOCwweDgxLDB4MjgsMHgzOCwweDIyLDB4QjAs
MHhCMCwKLSAgICAweEEyLDB4MjgsMHg4MiwweDI4LDB4M0MsMHhFOCwweEZFLDB4MzgsMHgwMyww
eDM5LDB4QTIsMHgyOCwweDJELDB4ODUsMHhCRiwweEZGLAotICAgIDB4NDQsMHg0MSwweEUyLDB4
MzAsMHhBQSwweEFFLDB4RjMsMHhFNSwweDQ0LDB4NDEsMHhFMywweDM4LDB4RTgsMHhGQSwweEZG
LDB4RDcsCi0gICAgMHgyMywweDQxLDB4QTEsMHgzMCwweDdDLDB4N0YsMHhGRiwweDNFLDB4MDMs
MHgzOSwweEMyLDB4MzgsMHgwMiwweEVCLDB4RUYsMHhDMCwKLSAgICAweDI0LDB4NDEsMHhDMiww
eDMwLDB4MkYsMHhBRiwweEI3LDB4QkQsMHg0NCwweDQ5LDB4RTMsMHgzOCwweEFBLDB4QkYsMHhE
RiwweERGLAotICAgIDB4NjUsMHg0OSwweEUzLDB4MzgsMHhDMiwweEVBLDB4N0UsMHg1NSwweDIz
LDB4NDEsMHhDMiwweDM4LDB4NzgsMHhGOCwweDdCLDB4RkYsCi0gICAgMHhFMiwweDM4LDB4QTIs
MHgzMCwweEJGLDB4RkEsMHg3OCwweEZDLDB4MjMsMHgzOSwweEMyLDB4MzAsMHhGMiwweEFCLDB4
QUIsMHhBQiwKLSAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4NzcsMHhGRiwweDhCLDB4MDYsMHgw
NCwweDQxLDB4QTIsMHgzMCwweDVGLDB4RkUsMHhGQSwweEI4LAotICAgIDB4RTMsMHgzOCwweDgx
LDB4MjgsMHgyQiwweDJGLDB4RkYsMHhGNywweEUzLDB4MzgsMHg4MiwweDMwLDB4QUEsMHhBOCww
eERCLDB4RkYsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDAzLDB4MDksMHhBRCwweDA5LDB4
MjMsMHg0MSwweDAzLDB4MzksMHgzNSwweEFGLDB4M0YsMHgyRiwKLSAgICAweDQ0LDB4NDEsMHgw
MywweDQxLDB4MkYsMHgyRCwweDJCLDB4MEUsMHg0NCwweDQxLDB4RTMsMHgzOCwweEFDLDB4RTAs
MHhEQSwweERBLAotICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHhBQSwweDJFLDB4MEUsMHhCNyww
eDY0LDB4NDksMHgyNCwweDQxLDB4RjIsMHhGOCwweEZBLDB4N0YsCi0gICAgMHg0NCwweDQ5LDB4
MDMsMHg0MSwweEZDLDB4RUEsMHhGRSwweEZFLDB4ODUsMHg1MSwweDI0LDB4NDEsMHgyQiwweDJE
LDB4M0IsMHgwQiwKLSAgICAweEE2LDB4NTEsMHg0NCwweDQ5LDB4RUUsMHhFQSwweEVBLDB4NTAs
MHg2NCwweDQ5LDB4MDMsMHg0MSwweEE4LDB4NjAsMHhGRSwweEI2LAotICAgIDB4NjQsMHg0OSww
eDAzLDB4NDEsMHgyRSwweEE5LDB4QkIsMHg4MiwweDg1LDB4NTEsMHgyNCwweDQ5LDB4MjAsMHgy
QSwweEZCLDB4RDgsCi0gICAgMHg4NCwweDUxLDB4MjMsMHg0OSwweEFBLDB4MkEsMHhFRSwweDdE
LDB4MDYsMHg2MiwweDY1LDB4NTEsMHgwOSwweDI3LDB4QUQsMHhBOSwKLSAgICAweEU2LDB4NjEs
MHg4NCwweDUxLDB4QTgsMHhCOCwweEZFLDB4REYsMHhBNSwweDU5LDB4NjMsMHg1MSwweEMwLDB4
Q0IsMHg4QSwweEZDLAotICAgIDB4QTUsMHg1OSwweDQzLDB4NTEsMHhBQSwweDI5LDB4OEEsMHhC
MCwweEU1LDB4NjEsMHg0NCwweDUxLDB4QUIsMHhBRiwweDJGLDB4RjcsCi0gICAgMHhFNiwweDYx
LDB4ODQsMHg1OSwweDdGLDB4REEsMHhFQSwweDhBLDB4MDYsMHg2MiwweDg0LDB4NTksMHgyOSww
eEFGLDB4QjUsMHhGRCwKLSAgICAweDI3LDB4NkEsMHhDNiwweDYxLDB4ODIsMHgwMCwweDJGLDB4
QjksMHgyNywweDZBLDB4QzYsMHg2MSwweEZBLDB4N0EsMHhFOCwweEMwLAotICAgIDB4QzYsMHg1
OSwweDIzLDB4NDksMHhGQSwweDdBLDB4N0EsMHg2OCwweDY0LDB4NTEsMHgwMywweDQxLDB4MkEs
MHhGQSwweDVELDB4NTcsCi0gICAgMHg4NSwweDUxLDB4MjMsMHg0OSwweDAyLDB4QTIsMHgwQyww
eDNELDB4ODUsMHg1MSwweDQ0LDB4NDksMHhCOCwweEJBLDB4NzAsMHgyOCwKLSAgICAweDY0LDB4
NTEsMHg0NCwweDQ5LDB4QTgsMHhBQywweEI2LDB4MjUsMHhBNiwweDUxLDB4MjMsMHg0OSwweEVG
LDB4RUIsMHhGOSwweEY4LAotICAgIDB4RTYsMHg1OSwweDQ0LDB4NDksMHhCNywweEE5LDB4MjIs
MHgyRCwweEM2LDB4NTksMHg0MywweDQ5LDB4RkIsMHhCNiwweEY4LDB4RTAsCi0gICAgMHhDNiww
eDU5LDB4NjUsMHg1MSwweEIyLDB4N0EsMHhCNywweEY3LDB4QTUsMHg1MSwweDY0LDB4NTEsMHg2
MiwweEZBLDB4NzksMHg2NSwKLSAgICAweEU2LDB4NTksMHg0MywweDQ5LDB4MkEsMHhBRiwweEI3
LDB4RDUsMHhFNiwweDU5LDB4ODQsMHg1MSwweDQwLDB4QTIsMHgzQSwweDdELAotICAgIDB4NDcs
MHg3MiwweEM2LDB4NTksMHgyNSwweEFELDB4MkYsMHgyOSwweDg3LDB4N0EsMHgyNywweDZBLDB4
MEYsMHgwMywweEFBLDB4MjEsCi0gICAgMHhFOSwweDgyLDB4ODcsMHg3QSwweDBCLDB4MjIsMHg4
OSwweDdGLDB4NkIsMHg5MywweEM4LDB4ODIsMHgwQiwweDdGLDB4N0YsMHg3RCwKLSAgICAweDhG
LDB4QkMsMHhFOCwweDhBLDB4MkYsMHhCRCwweEZELDB4NTUsMHhCMywweERELDB4OEIsMHg5Qiww
eDIyLDB4MEIsMHgyRiwweEFELAotICAgIDB4RjQsMHhFNSwweDkyLDB4RDUsMHg3QiwweEZCLDB4
QUYsMHgyOSwweEY0LDB4REQsMHg3MiwweEQ1LDB4NUYsMHg3RiwweEI4LDB4ODAsCi0gICAgMHgx
NCwweEU2LDB4OTIsMHhENSwweEJELDB4QUQsMHgwRiwweDBBLDB4MzUsMHhFRSwweEY0LDB4REQs
MHhFRiwweEFGLDB4QTIsMHhBQSwKLSAgICAweDM1LDB4RTYsMHhGNCwweERELDB4REIsMHhCRSww
eEFCLDB4MkEsMHgzNSwweEU2LDB4RDMsMHhERCwweEFCLDB4QjcsMHgyQSwweDgyLAotICAgIDB4
MTQsMHhFNiwweDcyLDB4Q0QsMHhDMCwweDc4LDB4NzAsMHg3MCwweDMxLDB4QzUsMHhDRiwweEJD
LDB4RkMsMHhGNywweERFLDB4M0EsCi0gICAgMHg3MiwweENELDB4RjAsMHhDNCwweEI1LDB4QkQs
MHhBQiwweDJBLDB4NTUsMHhFRSwweDkyLDB4RDUsMHgyRCwweDI1LDB4MkQsMHgyRCwKLSAgICAw
eDc1LDB4RUUsMHgzNSwweEU2LDB4RTAsMHhBMiwweEU4LDB4RUEsMHg1NSwweEVFLDB4MTQsMHhF
NiwweEZFLDB4N0UsMHhFMiwweDc4LAotICAgIDB4MzUsMHhFNiwweDE0LDB4RTYsMHhDMCwweDNC
LDB4N0YsMHg3NSwweDM1LDB4RTYsMHgxNCwweEU2LDB4OTYsMHg5RiwweDI1LDB4MDUsCi0gICAg
MHg5NiwweEVFLDB4MzUsMHhFNiwweEI1LDB4MkQsMHgzRiwweDJBLDB4NzYsMHhGNiwweDk2LDB4
RUUsMHhENiwweEY1LDB4RkYsMHhGNywKLSAgICAweDk2LDB4RUUsMHgzNSwweEU2LDB4ODAsMHhB
OCwweEFBLDB4QUEsMHg5NSwweEVFLDB4NTUsMHhFNiwweEY0LDB4RkYsMHg1NywweDU1LAotICAg
IDB4NzUsMHhFRSwweDU1LDB4RTYsMHhCRiwweDE3LDB4OTcsMHhERiwweDc1LDB4RUUsMHg1NSww
eEU2LDB4RkUsMHhBOCwweEZCLDB4QkYsCi0gICAgMHg3NSwweEVFLDB4NTUsMHhFNiwweEFGLDB4
QUIsMHhCOSwweEZGLDB4NzYsMHhFRSwweDU1LDB4RTYsMHhGMiwweEVBLDB4QjIsMHhGQiwKLSAg
ICAweDU1LDB4RUUsMHgzNSwweEU2LDB4N0EsMHg3OCwweEZBLDB4QkEsMHg3NSwweEVFLDB4QjMs
MHhENSwweDVFLDB4N0EsMHhBQSwweEFBLAotICAgIDB4MTQsMHhFNiwweDkyLDB4RDUsMHg3Nyww
eEZGLDB4NjgsMHg4MCwweEIzLDB4REQsMHg3MiwweEQ1LDB4RUEsMHhFRSwweERCLDB4RjgsCi0g
ICAgMHhCMywweEQ1LDB4NzEsMHhENSwweDNCLDB4MkEsMHg4QiwweDYwLDB4QjMsMHhENSwweDcy
LDB4RDUsMHhCMiwweEEwLDB4QUEsMHg3RiwKLSAgICAweEIyLDB4RDUsMHg1MSwweENELDB4RkYs
MHhGOCwweEZBLDB4RUIsMHg3MSwweENELDB4NTEsMHhDRCwweDZGLDB4QUIsMHhFNywweEFGLAot
ICAgIDB4ODMsMHg2MSwweDQzLDB4NTksMHhGOCwweEZBLDB4QUYsMHhDOSwweEE0LDB4NjEsMHg2
MywweDU5LDB4NUYsMHgzNywweDVGLDB4OTUsCi0gICAgMHg4NCwweDU5LDB4NDMsMHg1OSwweEFG
LDB4QjYsMHhFQiwweEJFLDB4QzUsMHg2OSwweDQ0LDB4NTksMHgwRiwweEVCLDB4RkYsMHg2RiwK
LSAgICAweEU1LDB4NjksMHg0MywweDU5LDB4MEEsMHhBRiwweEY3LDB4RjUsMHg2NywweDdBLDB4
QTQsMHg2MSwweDBBLDB4QkYsMHg1NSwweDU1LAotICAgIDB4ODcsMHg3QSwweEE0LDB4NjEsMHhB
MCwweEFBLDB4QkYsMHhENSwweDY2LDB4NzIsMHgwNSwweDZBLDB4MDIsMHgwQSwweEZFLDB4QjUs
Ci0gICAgMHg2NiwweDcyLDB4MjUsMHg3MiwweDgyLDB4MDIsMHgzNywweDJCLDB4QTcsMHg3QSww
eDQ1LDB4NzIsMHhGRSwweDc3LDB4NkUsMHgzRSwKLSAgICAweDg3LDB4N0EsMHgyNSwweDcyLDB4
MEIsMHg4QiwweEFGLDB4QTUsMHg4NywweDdBLDB4NjYsMHg3MiwweERGLDB4RDEsMHhGMywweDhC
LAotICAgIDB4QTcsMHg3QSwweDQ2LDB4NzIsMHhGRiwweEFCLDB4M0IsMHgyRiwweDg2LDB4N0Es
MHg0NiwweDcyLDB4MkUsMHhBQSwweEYyLDB4QzgsCi0gICAgMHhBNywweDdBLDB4NDYsMHg3Miww
eEU4LDB4NkEsMHhFQiwweEYyLDB4QTcsMHg3QSwweDY2LDB4NzIsMHg1RCwweEU5LDB4MjksMHhG
QiwKLSAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4NkQsMHg4RiwweEFFLDB4NUMsMHhBNywweDdB
LDB4NjYsMHg3MiwweEVBLDB4Q0YsMHhGNywweEJELAotICAgIDB4QTcsMHg3QSwweDY2LDB4NzIs
MHhGQSwweERGLDB4RDYsMHg1QSwweDg3LDB4N0EsMHg0NiwweDcyLDB4OEEsMHgwMCwweDg5LDB4
QjksCi0gICAgMHg4NywweDdBLDB4NDUsMHg3MiwweDBELDB4MkYsMHgwQSwweDIyLDB4ODcsMHg3
QSwweDQ2LDB4NzIsMHhGMCwweDdBLDB4QUEsMHgwQSwKLSAgICAweDg3LDB4N0EsMHgyNiwweDdB
LDB4Q0EsMHhBMiwweDhBLDB4ODAsMHhBNywweDgyLDB4NjYsMHg3QSwweDI1LDB4RjcsMHhCQSww
eDhFLAotICAgIDB4QTcsMHg4MiwweDQ2LDB4N0EsMHhBOCwweEFBLDB4QUEsMHhBRCwweDg3LDB4
ODIsMHg2NiwweDdBLDB4M0EsMHhBNSwweEQ1LDB4NTcsCi0gICAgMHhBNywweDgyLDB4NjYsMHg3
QSwweERFLDB4QjYsMHhGOCwweEZGLDB4QTcsMHg4MiwweDY2LDB4N0EsMHhBOSwweEExLDB4RUEs
MHgxMywKLSAgICAweEE3LDB4ODIsMHg2NiwweDdBLDB4NzcsMHg3QiwweDdBLDB4RkUsMHg2QSww
eDlCLDB4NDYsMHg3MiwweEJGLDB4QjUsMHgyRCwweDBCLAotICAgIDB4MEQsMHhCNCwweDZBLDB4
OUIsMHgyRCwweDBELDB4MkEsMHgwMiwweDJELDB4QjQsMHhDQywweEEzLDB4NzgsMHg4MCwweEMw
LDB4REUsCi0gICAgMHhDQywweEEzLDB4NjYsMHg3QSwweDc4LDB4NzgsMHg3QywweDdBLDB4NDYs
MHg3MiwweEU1LDB4NjksMHhFOCwweEJBLDB4RkMsMHg1QywKLSAgICAweDA2LDB4NkEsMHg2Myww
eDQ5LDB4RjgsMHg3MCwweDdBLDB4NUUsMHg2NCwweDUxLDB4RTIsMHgzOCwweDcwLDB4NjgsMHhF
QSwweDdBLAotICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHg2MiwweERBLDB4MEUsMHgzNSwweDAz
LDB4MzksMHhBMiwweDMwLDB4NUUsMHhERSwweDUwLDB4N0MsCi0gICAgMHhDMiwweDM4LDB4QTIs
MHgyOCwweDVFLDB4NTcsMHhENywweEQ3LDB4QzEsMHgzMCwweDgyLDB4MjAsMHgyRiwweEZCLDB4
RUUsMHhGQSwKLSAgICAweEEyLDB4MjgsMHg4MSwweDI4LDB4RjAsMHg2MCwweDgzLDB4MDIsMHhD
MiwweDI4LDB4ODIsMHgyOCwweEZCLDB4QkYsMHhGQiwweEFBLAotICAgIDB4QzIsMHgyOCwweDYx
LDB4MjgsMHgyQSwweEFBLDB4MkIsMHhBMiwweEUzLDB4MzAsMHhBMiwweDMwLDB4NkUsMHhFQiww
eDhBLDB4RUIsCi0gICAgMHhFMywweDMwLDB4QTIsMHgzMCwweDJCLDB4RUEsMHhEOCwweDdBLDB4
RTMsMHgzOCwweEEyLDB4MzAsMHgyRSwweEE3LDB4RjcsMHhGRSwKLSAgICAweDQ0LDB4NDEsMHhD
MiwweDM4LDB4M0QsMHhBNSwweDJELDB4QkQsMHg0NCwweDQxLDB4RTMsMHgzOCwweEY4LDB4RTAs
MHg3OCwweEY4LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHg2RiwweEFBLDB4QUUsMHgyRSww
eDI0LDB4NDEsMHhFMywweDM4LDB4N0EsMHg3QywweDJBLDB4MjIsCi0gICAgMHgyNCwweDQxLDB4
QzIsMHgzMCwweDdFLDB4RkIsMHhFMCwweEYwLDB4NDQsMHg0MSwweEMyLDB4MzAsMHhERCwweEJE
LDB4MkYsMHgyQiwKLSAgICAweDQzLDB4NDksMHhBMSwweDMwLDB4REYsMHg1RiwweEVFLDB4QTAs
MHgyNCwweDQxLDB4RTMsMHgzOCwweEZELDB4QTksMHgwQiwweDgwLAotICAgIDB4MjMsMHg0MSww
eEMyLDB4MzgsMHgwRSwweEJBLDB4RkMsMHg3QSwweDI0LDB4NDEsMHhDMywweDM4LDB4RjAsMHhF
MiwweEZGLDB4RkYsCi0gICAgMHhDMywweDMwLDB4ODIsMHgzMCwweEY2LDB4RkEsMHhGMCwweEIy
LDB4RTMsMHgzOCwweDgyLDB4MzAsMHhGRiwweEI3LDB4QjcsMHgyQiwKLSAgICAweDI0LDB4NDEs
MHhDMiwweDM4LDB4QUQsMHgzRCwweDIzLDB4QUEsMHg0NCwweDQxLDB4RTMsMHgzOCwweEJGLDB4
QkIsMHhGRiwweDBELAotICAgIDB4NjQsMHg0OSwweDI0LDB4NDEsMHhBNSwweEJELDB4RDcsMHg1
RSwweDY0LDB4NDksMHgyNCwweDQxLDB4NTcsMHg3MiwweEUyLDB4N0UsCi0gICAgMHgyMywweDQx
LDB4RTIsMHgzOCwweEFDLDB4QjAsMHhFMywweEVGLDB4MjQsMHg0MSwweEUzLDB4MzgsMHg4MCww
eDhBLDB4RkIsMHg5QiwKLSAgICAweDQ0LDB4NDksMHhFMywweDM4LDB4QUIsMHhBQiwweEFGLDB4
MTUsMHg4NSwweDUxLDB4MjQsMHg0MSwweDhCLDB4MjIsMHhCQiwweDVGLAotICAgIDB4QTYsMHg1
MSwweDAzLDB4MzksMHhFMCwweEZCLDB4N0IsMHhERCwweDQ0LDB4NDEsMHhFMywweDM4LDB4QUUs
MHhCQSwweDNGLDB4MUUsCi0gICAgMHg4NSwweDUxLDB4MjQsMHg0MSwweEJCLDB4MEYsMHhGRiww
eDc3LDB4NjUsMHg1MSwweDAzLDB4NDEsMHhFQywweEUwLDB4NkEsMHg1RCwKLSAgICAweDI0LDB4
NDksMHhFMywweDQwLDB4MEEsMHgyQiwweEJBLDB4NUEsMHhDNiwweDU5LDB4MjMsMHg0OSwweDhC
LDB4QTksMHhFOSwweEY1LAotICAgIDB4QTUsMHg1OSwweDQ0LDB4NDksMHhGOCwweEZBLDB4N0Is
MHg3RiwweDY0LDB4NTEsMHgyMywweDQ5LDB4MjAsMHhBQSwweEEyLDB4RkYsCi0gICAgMHg2NCww
eDUxLDB4MDMsMHg0MSwweDgwLDB4QkEsMHg5RSwweEQ3LDB4ODUsMHg1OSwweDIzLDB4NDksMHgw
RSwweEE3LDB4QTcsMHgyRCwKLSAgICAweEU2LDB4NjEsMHg4NSwweDU5LDB4OEIsMHhBMSwweEJC
LDB4RkYsMHhFNiwweDYxLDB4ODUsMHg1MSwweEE4LDB4QUUsMHg3NywweDdGLAotICAgIDB4MDYs
MHg2MiwweDg0LDB4NTEsMHhBMiwweEFCLDB4QkUsMHhGRCwweDI3LDB4NkEsMHg4NCwweDUxLDB4
ODAsMHhBRSwweEVGLDB4NzcsCi0gICAgMHhFNiwweDYxLDB4ODUsMHg1MSwweDZBLDB4RTAsMHhF
RSwweDlGLDB4QzYsMHg1OSwweDIzLDB4NDksMHg1RiwweEVFLDB4RUEsMHg4MCwKLSAgICAweDY0
LDB4NTEsMHgwMiwweDQxLDB4M0YsMHhCRiwweEMwLDB4QTgsMHg4NSwweDUxLDB4MjMsMHg0MSww
eDBBLDB4QUQsMHhERCwweEJGLAotICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHgwMywweDhDLDB4
ODYsMHhBQSwweDY0LDB4NDksMHg0NCwweDQ5LDB4MjAsMHgxQywweDJGLDB4MjksCi0gICAgMHhD
NiwweDU5LDB4NjQsMHg0OSwweDJELDB4QUQsMHhGRCwweEZGLDB4RTYsMHg1OSwweDY0LDB4NDks
MHhBMCwweEFBLDB4RDUsMHg1NywKLSAgICAweEE1LDB4NTEsMHg0NCwweDQ5LDB4RUMsMHhBMCww
eEFBLDB4N0YsMHg4NSwweDUxLDB4MjMsMHg0MSwweDhGLDB4QUEsMHhGQiwweDdFLAotICAgIDB4
QTUsMHg1MSwweDIzLDB4NDksMHgyRSwweDJCLDB4MkYsMHhBRiwweEM1LDB4NTEsMHg2NCwweDUx
LDB4RkUsMHhGRSwweERDLDB4QjcsCi0gICAgMHgwNywweDZBLDB4QTUsMHg1OSwweDI3LDB4QTUs
MHhBNSwweDlELDB4ODcsMHg3QSwweDA2LDB4NjIsMHgyQSwweEFCLDB4QUYsMHhGNSwKLSAgICAw
eEM4LDB4ODIsMHg4OCwweDdBLDB4QkIsMHhDMSwweENELDB4QkQsMHhFOCwweDgyLDB4QTcsMHg4
MiwweEFBLDB4QUYsMHhCMywweDdGLAotICAgIDB4MjksMHg4QiwweEM3LDB4ODIsMHgzRiwweEJG
LDB4NzUsMHhFNSwweDMxLDB4Q0QsMHgwOSwweDhCLDB4MkYsMHhCRCwweEQ1LDB4RDUsCi0gICAg
MHhENCwweEU1LDB4MEQsMHhBQywweDAyLDB4MDIsMHgwQiwweDJELDB4MTQsMHhFNiwweEQzLDB4
RTUsMHhGRSwweEFBLDB4MjIsMHg4QiwKLSAgICAweDU1LDB4RTYsMHhGNCwweEU1LDB4RkQsMHhC
RCwweDhGLDB4QUYsMHg1NSwweEVFLDB4MTQsMHhFNiwweDU3LDB4RDUsMHgzQSwweDBFLAotICAg
IDB4NTUsMHhFRSwweDE0LDB4RTYsMHhCNSwweEFFLDB4QUEsMHgyMCwweDU1LDB4RUUsMHgxNSww
eEU2LDB4RkEsMHhGQSwweEZGLDB4RkMsCi0gICAgMHhGNCwweEU1LDB4RDAsMHhCQywweEUwLDB4
RTAsMHhFOCwweDc4LDB4NzIsMHhDRCwweDEwLDB4QzUsMHhCNywweDI3LDB4QUQsMHhGNSwKLSAg
ICAweDcyLDB4Q0QsMHgzMCwweENELDB4RkIsMHhGOCwweEFFLDB4REQsMHgzNSwweEU2LDB4MzEs
MHhDRCwweDBGLDB4MkQsMHgyRiwweEFELAotICAgIDB4NzYsMHhFRSwweDM0LDB4RTYsMHhGQiww
eEVCLDB4QUIsMHg4MSwweDU1LDB4RUUsMHgxNSwweEU2LDB4N0EsMHhFRSwweEVBLDB4QTIsCi0g
ICAgMHg3NiwweEVFLDB4MTQsMHhFNiwweERELDB4RjcsMHhCNywweDJGLDB4OTYsMHhFRSwweDE0
LDB4RTYsMHhCRCwweDJGLDB4QUIsMHgwMiwKLSAgICAweDk2LDB4RUUsMHg3NiwweEVFLDB4M0Qs
MHgzRiwweEE4LDB4ODIsMHhCNiwweEY2LDB4NzYsMHhFRSwweEZBLDB4RkIsMHg1RiwweDU3LAot
ICAgIDB4NzYsMHhFRSwweDU1LDB4RTYsMHhBMCwweEUwLDB4MzgsMHhERSwweDM1LDB4RjYsMHg1
NSwweEU2LDB4NTUsMHhERCwweDVELDB4REQsCi0gICAgMHg1NSwweEVFLDB4NzUsMHhFNiwweDJF
LDB4RUIsMHhFRSwweEFFLDB4NzUsMHhFRSwweDM1LDB4RTYsMHgyQSwweDNFLDB4RkUsMHhBQSwK
LSAgICAweDc1LDB4RUUsMHgzNSwweEU2LDB4OEEsMHhBOCwweEFBLDB4QjcsMHg1NSwweEVFLDB4
NzUsMHhFNiwweEFBLDB4QTgsMHhBOCwweEZFLAotICAgIDB4NzUsMHhFRSwweDU1LDB4RTYsMHhE
RSwweERGLDB4QUYsMHhDMCwweDc1LDB4RUUsMHgzNSwweEU2LDB4N0UsMHhGRSwweDlFLDB4QkEs
Ci0gICAgMHg1NSwweEU2LDB4MTQsMHhFNiwweEZBLDB4NkEsMHhBMCwweDAwLDB4NTUsMHhFRSww
eEIzLDB4RDUsMHg1RSwweEVBLDB4QTgsMHg4MCwKLSAgICAweDE1LDB4RTYsMHg5MiwweEQ1LDB4
RjcsMHg3RiwweEZBLDB4QTAsMHhENCwweERELDB4OTIsMHhENSwweDVELDB4NTUsMHhERSwweEY5
LAotICAgIDB4QjMsMHhERCwweDcxLDB4RDUsMHg3RSwweDZBLDB4QUIsMHhCMCwweDkyLDB4RDUs
MHg1MSwweENELDB4OTcsMHhFRSwweEFDLDB4MjAsCi0gICAgMHg4NCwweDYxLDB4NDMsMHg1OSww
eEZELDB4RUIsMHgwMiwweENCLDB4ODQsMHg2MSwweDQzLDB4NTksMHgzRiwweEZFLDB4REUsMHhC
RiwKLSAgICAweDg0LDB4NjEsMHg0MywweDU5LDB4OEUsMHhCNCwweERCLDB4NzIsMHhBNSwweDYx
LDB4NDMsMHg1OSwweEY4LDB4N0MsMHg1RSwweDVGLAotICAgIDB4ODQsMHg2MSwweDIzLDB4NTEs
MHgyRCwweDIyLDB4ODAsMHhBMiwweEE0LDB4NjEsMHg2MywweDU5LDB4RkEsMHg3RSwweEY3LDB4
NjksCi0gICAgMHg4NCwweDYxLDB4NjMsMHg1OSwweDM5LDB4NTUsMHhBRCwweEY5LDB4RTQsMHg2
OSwweDYzLDB4NTksMHgyQiwweEFELDB4QjUsMHg3OSwKLSAgICAweDQ2LDB4NzIsMHg2MywweDU5
LDB4MEEsMHhBQiwweEZELDB4NUQsMHg4NywweDdBLDB4ODMsMHg1OSwweDAyLDB4QUEsMHhCRCww
eDU1LAotICAgIDB4NjYsMHg3MiwweEM0LDB4NjEsMHgyOCwweDgwLDB4MkEsMHhCNSwweDg3LDB4
N0EsMHg2NiwweDcyLDB4OTEsMHgwNSwweDdBLDB4NzksCi0gICAgMHhBNywweDgyLDB4NjYsMHg3
MiwweEZBLDB4RjgsMHhGRCwweDdELDB4ODYsMHg3QSwweDY2LDB4NzIsMHhFMCwweDc0LDB4RDcs
MHhBRSwKLSAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4RTYsMHhBRiwweEZCLDB4MkYsMHg4Nyww
eDdBLDB4NDYsMHg3MiwweDhFLDB4QjAsMHhBOCwweEZFLAotICAgIDB4QTcsMHg3QSwweDY2LDB4
NzIsMHhGRiwweDU2LDB4REEsMHg3RCwweEE3LDB4N0EsMHg2NiwweDcyLDB4Q0QsMHg1RiwweEVG
LDB4RjcsCi0gICAgMHg4NywweDdBLDB4NDYsMHg3MiwweEM4LDB4QzIsMHg0MiwweDAzLDB4QTcs
MHg3QSwweDQ2LDB4NzIsMHhCRCwweDJGLDB4QUIsMHhFQiwKLSAgICAweEE4LDB4N0EsMHg2Niww
eDdBLDB4RjcsMHg3RiwweEVBLDB4NTcsMHg4NywweDdBLDB4NDYsMHg3QSwweDg4LDB4QTIsMHg5
MiwweDEyLAotICAgIDB4QTcsMHg4MiwweDY3LDB4N0EsMHhBRiwweEI3LDB4REYsMHhGRiwweEE3
LDB4ODIsMHg2NywweDdBLDB4Q0IsMHg1NiwweDhFLDB4QjIsCi0gICAgMHhBNywweDgyLDB4NDYs
MHg3MiwweEVELDB4QUYsMHgyQiwweEEyLDB4ODcsMHg4MiwweDY3LDB4N0EsMHg5RiwweEJELDB4
MzQsMHgwMiwKLSAgICAweEE3LDB4ODIsMHg2NywweDdBLDB4RjQsMHhBQywweEJGLDB4RjksMHhB
NywweDgyLDB4NjYsMHg3QSwweEVBLDB4QUEsMHhCRiwweDU4LAotICAgIDB4MjksMHg5MywweDg3
LDB4N0EsMHg1RCwweDVELDB4OTUsMHgzRCwweEVDLDB4QUIsMHhBNywweDgyLDB4MkQsMHgyRiww
eDBBLDB4MEEsCi0gICAgMHgwRCwweEFDLDB4QUIsMHhBMywweDg4LDB4QTgsMHhCRiwweEZGLDB4
RUMsMHhBQiwweEFDLDB4QTMsMHg4MCwweEU4LDB4QUUsMHhCNCwKLSAgICAweENCLDB4QTMsMHg4
NiwweDdBLDB4NTgsMHg3OCwweEY4LDB4RTgsMHg0NiwweDcyLDB4QTUsMHg1OSwweERDLDB4NUMs
MHg1QywweDVDLAotICAgIDB4QTUsMHg1OSwweDQzLDB4NDksMHg3MCwweEU4LDB4NjIsMHhGRSww
eDY0LDB4NDksMHgwMiwweDQxLDB4NUUsMHhGRSwweDY4LDB4NTAsCi0gICAgMHgwMywweDQxLDB4
RTIsMHgzOCwweDdELDB4RjgsMHhERSwweDU1LDB4RTIsMHgzMCwweEEyLDB4MjgsMHhFOCwweEYw
LDB4NkEsMHg3QSwKLSAgICAweDgyLDB4MzAsMHhBMiwweDI4LDB4REYsMHg3RCwweEZCLDB4N0Ys
MHhDMiwweDMwLDB4QTIsMHgyOCwweERGLDB4N0IsMHhFQSwweDY4LAotICAgIDB4QzIsMHgyOCww
eDgxLDB4MjgsMHhCQiwweDZFLDB4RUIsMHg4MywweEMyLDB4MzAsMHhBMiwweDI4LDB4NkIsMHg4
RCwweDJFLDB4MDAsCi0gICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweDgyLDB4OEIsMHgyMywweEFC
LDB4RTMsMHgzMCwweEEyLDB4MzAsMHhBNywweDJGLDB4QUIsMHgwMiwKLSAgICAweEUzLDB4Mzgs
MHhBMSwweDI4LDB4NUIsMHhGRSwweEFFLDB4MkEsMHgwMywweDM5LDB4QTIsMHgzMCwweEY3LDB4
QkYsMHhGRiwweEEyLAotICAgIDB4MjQsMHg0MSwweEMyLDB4MzAsMHhFRCwweEFBLDB4ODIsMHgw
MiwweDQ1LDB4NDEsMHgwMywweDQxLDB4REYsMHhERiwweEZCLDB4QUQsCi0gICAgMHgyNCwweDQx
LDB4RTMsMHgzOCwweDM2LDB4ODUsMHhCQiwweEEwLDB4NDQsMHg0MSwweDAzLDB4NDEsMHhBRSww
eEJGLDB4RkIsMHhCQSwKLSAgICAweDY1LDB4NDksMHgwMywweDM5LDB4NTMsMHhFOSwweEMzLDB4
RUIsMHg0NCwweDQ5LDB4RTMsMHgzOCwweDJGLDB4QkIsMHhGRSwweDVBLAotICAgIDB4NjUsMHg0
OSwweDAzLDB4NDEsMHg2QSwweEFBLDB4QUIsMHgwQiwweDg1LDB4NTEsMHgwMywweDQxLDB4N0Ys
MHhGQiwweEVBLDB4NzgsCi0gICAgMHgyNCwweDQxLDB4QzMsMHgzOCwweERBLDB4RDQsMHg1RSww
eERGLDB4RTMsMHgzOCwweEMyLDB4MzAsMHhFRSwweDYzLDB4QzEsMHgwMCwKLSAgICAweEUzLDB4
MzgsMHhBMiwweDMwLDB4NTUsMHg5QiwweEFBLDB4ODAsMHgwMywweDM5LDB4QzMsMHgzOCwweEE1
LDB4MkQsMHgyRiwweDNGLAotICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHg3NSwweEFCLDB4MkIs
MHgyQiwweDg1LDB4NTEsMHgwMywweDM5LDB4RjUsMHhFQSwweEMwLDB4MjIsCi0gICAgMHg0NCww
eDQ5LDB4MDMsMHg0MSwweERDLDB4NUUsMHg1RSwweDVCLDB4MjQsMHg0MSwweDAzLDB4MzksMHhF
QSwweEVGLDB4QjksMHhDMSwKLSAgICAweDAzLDB4NDEsMHhFMywweDM4LDB4QkUsMHhGOCwweEVD
LDB4QUEsMHgyNCwweDQxLDB4RTMsMHgzOCwweEZGLDB4QUYsMHg4QiwweDBCLAotICAgIDB4MjQs
MHg0OSwweEUzLDB4MzgsMHgwNSwweEZGLDB4REUsMHg1NiwweDI0LDB4NDEsMHhFMywweDM4LDB4
ODAsMHhCQiwweEY5LDB4NkYsCi0gICAgMHg0NCwweDQxLDB4MDQsMHg0MSwweEY1LDB4RjUsMHg5
RCwweDlGLDB4NDQsMHg0MSwweDAzLDB4NDEsMHhENSwweDVFLDB4RkUsMHgyQSwKLSAgICAweDQ0
LDB4NTEsMHgwMywweDQxLDB4RjcsMHhCRiwweDJGLDB4M0YsMHg0NCwweDQ5LDB4MDMsMHg0MSww
eEQ1LDB4RkUsMHhFMiwweEEwLAotICAgIDB4MjQsMHg0OSwweEUzLDB4NDAsMHg1NiwweDk3LDB4
QUUsMHhBRSwweDQ0LDB4NDksMHhFMywweDQwLDB4MEIsMHhBQSwweEVFLDB4N0UsCi0gICAgMHg0
NCwweDQ5LDB4MDMsMHg0MSwweEE4LDB4RUEsMHhBRiwweEVELDB4MjMsMHg0OSwweEUyLDB4NDAs
MHg4MCwweEEwLDB4RTgsMHg1NSwKLSAgICAweDIzLDB4NDksMHhFMiwweDM4LDB4QUEsMHhGQSww
eEZCLDB4QkYsMHg4NSwweDU5LDB4MjMsMHg0MSwweDBELDB4QkQsMHhGRCwweEE1LAotICAgIDB4
QTUsMHg1OSwweDY0LDB4NDksMHgyMiwweDJBLDB4QUIsMHhGRCwweEM2LDB4NTksMHg2NCwweDUx
LDB4RUEsMHhBQSwweDNFLDB4NkYsCi0gICAgMHhBNSwweDU5LDB4NDQsMHg0OSwweDBCLDB4MEIs
MHhBQSwweEJELDB4ODUsMHg1MSwweDQ0LDB4NDksMHg5OCwweEQ4LDB4REMsMHg2RiwKLSAgICAw
eEE1LDB4NTEsMHgyNCwweDQ5LDB4MjgsMHhDQSwweEZGLDB4REYsMHhDNiwweDU5LDB4NDQsMHg0
OSwweEEwLDB4RUIsMHhGRiwweDVGLAotICAgIDB4ODUsMHg1MSwweDIzLDB4NDEsMHhGRSwweEZF
LDB4NzIsMHg1RSwweDg1LDB4NTEsMHgyMywweDQ5LDB4QUYsMHhBRiwweEJGLDB4QUQsCi0gICAg
MHg2NSwweDQ5LDB4MjMsMHg0MSwweEY0LDB4RDgsMHhENiwweDVGLDB4ODUsMHg1MSwweDIzLDB4
NDEsMHg4RiwweEJCLDB4QUYsMHhGNSwKLSAgICAweEE1LDB4NTEsMHg0NCwweDQ5LDB4M0QsMHhG
RiwweEQ3LDB4NTcsMHhBNSwweDUxLDB4NDQsMHg0OSwweEI4LDB4QTgsMHhBRiwweEQ1LAotICAg
IDB4QTYsMHg1MSwweDIzLDB4NDEsMHhERiwweEZFLDB4RkMsMHhERiwweDY0LDB4NDksMHgyMyww
eDQxLDB4NUUsMHhGQywweEZBLDB4NTcsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweDJFLDB4
QjcsMHg5NCwweDlBLDB4QTQsMHg1MSwweDQ0LDB4NDksMHhBNywweDJGLDB4QTcsMHhFRiwKLSAg
ICAweEU1LDB4NjEsMHg4NCwweDUxLDB4M0QsMHgyOSwweEFELDB4M0YsMHgyNiwweDZBLDB4RTUs
MHg2MSwweEI5LDB4RUEsMHhBMSwweDg5LAotICAgIDB4QTgsMHg3QSwweEM1LDB4NjEsMHgyQSww
eEJELDB4NTUsMHg1NSwweEE3LDB4ODIsMHgwNiwweDZBLDB4MDIsMHhBQiwweEI3LDB4RjUsCi0g
ICAgMHhFOCwweDhBLDB4ODcsMHg3QSwweDhGLDB4MkEsMHg4MiwweEI1LDB4MDksMHg4QiwweEE3
LDB4N0EsMHg4RSwweEZGLDB4RkUsMHg3QSwKLSAgICAweDEwLDB4Q0QsMHgwOCwweDhCLDB4MkQs
MHgyRCwweEJELDB4QjUsMHhGNCwweEU1LDB4MzEsMHhDRCwweDAyLDB4MDksMHgwRCwweDJELAot
ICAgIDB4MzUsMHhFNiwweEQzLDB4REQsMHgwQiwweEE1LDB4QkYsMHgwQSwweDU1LDB4RUUsMHgz
NSwweEU2LDB4M0IsMHhCRiwweDA5LDB4QUEsCi0gICAgMHg1NSwweEVFLDB4MTQsMHhFNiwweDgw
LDB4RTAsMHhGQSwweDVFLDB4MzUsMHhFNiwweEQzLDB4REQsMHgyMCwweEE4LDB4NkEsMHg1RiwK
LSAgICAweEQ0LDB4REQsMHhGMCwweEM0LDB4NzgsMHg3OCwweDVFLDB4NUUsMHgzMSwweENELDB4
RjAsMHhDNCwweENGLDB4QTksMHgyMywweDIyLAotICAgIDB4NTEsMHhDRCwweDEwLDB4QzUsMHhG
NywweEI1LDB4QjcsMHhBNywweEY0LDB4REQsMHg1MSwweENELDB4M0QsMHgzNSwweDM1LDB4QkQs
Ci0gICAgMHg1NiwweEVFLDB4RjQsMHhERCwweDAyLDB4MDIsMHgwMywweDA5LDB4OTYsMHhFRSww
eDU1LDB4RUUsMHhENSwweEZELDB4RUYsMHhCNSwKLSAgICAweDk2LDB4RUUsMHg1NiwweEVFLDB4
QjcsMHgyQiwweDJBLDB4MDIsMHhCNiwweEY2LDB4NzYsMHhFRSwweEFGLDB4QUIsMHhBQSwweEFC
LAotICAgIDB4OTYsMHhFRSwweDc2LDB4RUUsMHg4MCwweDcwLDB4QzAsMHhFQSwweDU1LDB4RUUs
MHg5NiwweEU2LDB4QkYsMHhBQiwweEVBLDB4QUIsCi0gICAgMHg3NSwweEVFLDB4NTUsMHhFNiww
eDZGLDB4RTAsMHg4MCwweDJFLDB4NzUsMHhFRSwweDU1LDB4RTYsMHhBRCwweEM3LDB4RkYsMHg3
RiwKLSAgICAweDc1LDB4RUUsMHg1NSwweEU2LDB4QUEsMHhGMCwweDdCLDB4N0YsMHg3NiwweEVF
LDB4MzUsMHhFNiwweEIyLDB4RkEsMHhCQiwweEJCLAotICAgIDB4NzYsMHhFRSwweDM1LDB4RTYs
MHhBNywweEQ3LDB4NkUsMHhFQiwweDc2LDB4RUUsMHg1NSwweEU2LDB4MjAsMHgyMiwweDJGLDB4
M0QsCi0gICAgMHg3NiwweEVFLDB4NTUsMHhFNiwweEUyLDB4NUYsMHhBRSwweENFLDB4MzUsMHhF
RSwweDU1LDB4RTYsMHg3NSwweEY1LDB4RkYsMHg3NywKLSAgICAweDc1LDB4RUUsMHg1NSwweEU2
LDB4NUYsMHg1RiwweEVGLDB4RkQsMHg3NSwweEVFLDB4MzUsMHhFNiwweDZCLDB4RkEsMHhFQSww
eEFCLAotICAgIDB4NTUsMHhFNiwweEY0LDB4REQsMHg3MiwweEEyLDB4ODAsMHhBMCwweDU2LDB4
RUUsMHhEMywweEQ1LDB4NzcsMHgyQSwweDBBLDB4ODgsCi0gICAgMHg1NiwweEVFLDB4OTIsMHhE
NSwweDU3LDB4RkUsMHhFMiwweDAwLDB4MzUsMHhFNiwweDkyLDB4RDUsMHhENSwweDc3LDB4QkIs
MHgyMCwKLSAgICAweDg0LDB4NjEsMHg0MywweDU5LDB4N0UsMHhFQSwweENCLDB4QUEsMHg2NCww
eDU5LDB4MjMsMHg1OSwweDAzLDB4MDAsMHgwOCwweEZDLAotICAgIDB4ODQsMHg1OSwweDQzLDB4
NTksMHhERiwweEI1LDB4MTUsMHhGNSwweEE0LDB4NjEsMHg0MywweDU5LDB4N0IsMHhDQSwweEVG
LDB4RkYsCi0gICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweEUyLDB4M0IsMHhCNywweDc3LDB4QTQs
MHg2MSwweDQzLDB4NTksMHhGMywweEJGLDB4RkUsMHhFNiwKLSAgICAweDg0LDB4NjEsMHg2Myww
eDU5LDB4NTUsMHg5NywweEZELDB4Q0EsMHhBNCwweDYxLDB4NjMsMHg1OSwweEIyLDB4RjcsMHg3
RiwweDdBLAotICAgIDB4ODMsMHg1OSwweDIzLDB4NTEsMHhBOCwweEFFLDB4RkUsMHhCRCwweDg0
LDB4NTksMHg0MywweDUxLDB4QUUsMHhCRiwweEZELDB4NzUsCi0gICAgMHhDNCwweDYxLDB4MjIs
MHg1MSwweDBBLDB4RkYsMHg1RiwweDdGLDB4MjYsMHg3MiwweDQzLDB4NTEsMHgwMiwweEE3LDB4
RDUsMHg1NSwKLSAgICAweDg3LDB4N0EsMHg0NCwweDUxLDB4MDIsMHhBQSwweEJELDB4NzUsMHg4
NywweDdBLDB4QTUsMHg2MSwweDBBLDB4MjAsMHhBQiwweEZELAotICAgIDB4ODcsMHg3QSwweDI2
LDB4NzIsMHgwOCwweDgyLDB4MEIsMHhCRCwweEE3LDB4N0EsMHg0NiwweDdBLDB4RkMsMHhFQSww
eEJBLDB4N0UsCi0gICAgMHg4NywweDdBLDB4NDYsMHg3MiwweENBLDB4Q0MsMHg4QiwweEU5LDB4
QTcsMHg3QSwweDY2LDB4N0EsMHhGRSwweDc3LDB4NkYsMHg3MSwKLSAgICAweDg3LDB4N0EsMHg0
NiwweDcyLDB4QUIsMHgzQywweDFDLDB4QkEsMHhBNywweDgyLDB4NDYsMHg3MiwweEVBLDB4RUEs
MHhFQSwweERCLAotICAgIDB4QTcsMHg4MiwweDY3LDB4N0EsMHhERCwweDc3LDB4RkEsMHg0Qiww
eDY2LDB4ODIsMHg4NywweDdBLDB4RDUsMHg5RiwweERGLDB4QjYsCi0gICAgMHhBNywweDgyLDB4
NjcsMHg3QSwweEZELDB4QjksMHhBRiwweEVCLDB4QTcsMHg4MiwweDY3LDB4N0EsMHg0MywweEFC
LDB4MkIsMHhBQiwKLSAgICAweEE3LDB4ODIsMHg2NywweDdBLDB4RTksMHgwQiwweEFGLDB4RkQs
MHhBNywweDgyLDB4NjYsMHg3QSwweEZFLDB4NUUsMHgzRiwweDNFLAotICAgIDB4QTcsMHg4Miww
eDY2LDB4N0EsMHg5NywweEY3LDB4QkEsMHhEOCwweEE3LDB4ODIsMHg2NywweDdBLDB4QjgsMHhG
QSwweEJFLDB4QkUsCi0gICAgMHhBQiwweEEzLDB4ODcsMHg3QSwweEI1LDB4MkQsMHgyQiwweDBC
LDB4MEMsMHhBQywweEFCLDB4QTMsMHg4RCwweEFGLDB4QkEsMHhBQiwKLSAgICAweEVDLDB4QUIs
MHhBQiwweEEzLDB4MjAsMHhCMCwweEFBLDB4RkQsMHhFQywweEFCLDB4Q0IsMHhBMywweDVFLDB4
MEIsMHhFRCwweDRELAotICAgIDB4Q0IsMHhBMywweDA4LDB4OEIsMHg2OCwweDY4LDB4NjAsMHhF
OCwweEE3LDB4ODIsMHhBNSwweDU5LDB4NUUsMHg1QywweDdDLDB4NjgsCi0gICAgMHg4NCwweDUx
LDB4NDQsMHg1MSwweEU0LDB4MzgsMHg5RSwweDVFLDB4NjQsMHg0OSwweDAyLDB4NDEsMHg3OCww
eEU4LDB4RjAsMHg2OCwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4RTIsMHhDQSwweEU4LDB4
QzAsMHhFMiwweDM4LDB4QzIsMHgzMCwweDU3LDB4NTYsMHg3NiwweDUyLAotICAgIDB4QzIsMHgz
MCwweEEyLDB4MjgsMHgyNywweDBBLDB4MkMsMHgyNCwweEMzLDB4MzgsMHhBMiwweDI4LDB4QkEs
MHhCQSwweEIwLDB4QUEsCi0gICAgMHhFMywweDMwLDB4QTIsMHgzMCwweEZGLDB4QjIsMHhBMCww
eEUyLDB4RTMsMHgzMCwweEEyLDB4MzAsMHhBQiwweEVFLDB4RUUsMHhBQSwKLSAgICAweDY1LDB4
NDksMHhDMywweDMwLDB4NTUsMHhENSwweEJELDB4MkIsMHg2NSwweDQ5LDB4RTMsMHgzOCwweEZE
LDB4RkYsMHhFQSwweEEwLAotICAgIDB4NDQsMHg0MSwweEUzLDB4MzgsMHg3NywweEZFLDB4RkIs
MHhBMiwweDI0LDB4NDEsMHgwMywweDM5LDB4RjcsMHhGQiwweDJDLDB4MjgsCi0gICAgMHg0NCww
eDQxLDB4MDMsMHg0MSwweEYyLDB4RkEsMHhFRiwweDhELDB4NDQsMHg0MSwweDAzLDB4MzksMHg4
QiwweEVFLDB4QjcsMHhBNywKLSAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4RjYsMHhBQSwweEFB
LDB4MEEsMHg0NCwweDQxLDB4MDMsMHg0MSwweEYzLDB4NjIsMHg2RCwweDVGLAotICAgIDB4MjQs
MHg0MSwweEMyLDB4MzgsMHgwMiwweEVBLDB4RkEsMHg3RSwweDAzLDB4NDEsMHhDMywweDM4LDB4
RTgsMHhCRiwweDJGLDB4MEIsCi0gICAgMHg4NSwweDQ5LDB4RTMsMHgzOCwweDI5LDB4QUYsMHhB
QiwweEJGLDB4ODUsMHg0OSwweDAzLDB4NDEsMHhGOCwweDdBLDB4RkEsMHhGQSwKLSAgICAweDQ0
LDB4NDksMHhFMywweDM4LDB4NTUsMHhGRiwweEVBLDB4MkEsMHg2NCwweDQ5LDB4RTMsMHgzOCww
eERELDB4OTUsMHhGNSwweEY4LAotICAgIDB4NDMsMHg0OSwweEUzLDB4MzgsMHg3NSwweDdELDB4
RkUsMHg4QSwweDIzLDB4NDEsMHhFMywweDM4LDB4N0QsMHhGNywweEUyLDB4ODAsCi0gICAgMHgy
NCwweDQxLDB4QzIsMHgzMCwweDgzLDB4RUEsMHg3RiwweEI3LDB4NjQsMHg0OSwweDAzLDB4Mzks
MHgwMywweDI5LDB4QkQsMHhCNSwKLSAgICAweDQ0LDB4NDEsMHgwMywweDQxLDB4NTYsMHg1Qyww
eEY3LDB4RUYsMHgyNCwweDQxLDB4QzIsMHgzMCwweDgyLDB4RjIsMHg3OCwweEZFLAotICAgIDB4
MjQsMHg0MSwweEMzLDB4MzgsMHhBQywweEJGLDB4QkQsMHhCRiwweDI0LDB4NDEsMHhFMywweDM4
LDB4MEIsMHg4RSwweDI5LDB4MEYsCi0gICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEU2LDB4ODgs
MHg4MCwweDAwLDB4MjQsMHg0MSwweEUzLDB4MzgsMHg4RiwweEFGLDB4QUYsMHhGQiwKLSAgICAw
eDY0LDB4NDksMHgwMywweDQxLDB4RjUsMHhGRCwweDBELDB4MjksMHg4NSwweDUxLDB4MjQsMHg0
MSwweEY1LDB4RDUsMHhCRSwweDJBLAotICAgIDB4ODUsMHg1MSwweDAzLDB4NDEsMHhGNywweEZG
LDB4RUUsMHhBMCwweDY0LDB4NDksMHgyMywweDQxLDB4N0UsMHg1MiwweERCLDB4NzUsCi0gICAg
MHgyNCwweDQ5LDB4MDMsMHg0MSwweDNELDB4RkQsMHg2OSwweEMyLDB4NjUsMHg1MSwweDAzLDB4
NDEsMHhGRiwweEFELDB4QTksMHhBQSwKLSAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4RUIsMHhG
RSwweDY4LDB4RkUsMHgyNCwweDQ5LDB4QzIsMHgzOCwweEY3LDB4RjYsMHhFQSwweEVBLAotICAg
IDB4MDMsMHg0MSwweEUyLDB4NDAsMHhBNSwweDA1LDB4MjUsMHgzQSwweDg1LDB4NTEsMHgwMyww
eDQxLDB4QUQsMHgzRCwweDJELDB4MzUsCi0gICAgMHhBNSwweDUxLDB4NjQsMHg1MSwweEFGLDB4
RTIsMHg0MywweEVBLDB4ODUsMHg1MSwweDIzLDB4NDksMHg0MiwweEM4LDB4NjgsMHhBOCwKLSAg
ICAweDQ0LDB4NDksMHgwMywweDQxLDB4QUEsMHg3RCwweEQ1LDB4RkEsMHg0NCwweDQ5LDB4MDMs
MHg0MSwweEE2LDB4NTcsMHhGNywweDk3LAotICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHhBOCww
eEI5LDB4N0YsMHg1RiwweDY0LDB4NDksMHgwMywweDQxLDB4QTAsMHgyRiwweEFELDB4NTUsCi0g
ICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweEY4LDB4RTgsMHhBQSwweERGLDB4NjQsMHg0OSwweDAz
LDB4NDEsMHgwRiwweDI5LDB4MjcsMHhGNSwKLSAgICAweDY0LDB4NDksMHgyMywweDQxLDB4RkUs
MHhCRiwweEEwLDB4QTAsMHg2NCwweDQ5LDB4MjQsMHg0MSwweEI3LDB4RkYsMHhCRSwweEZBLAot
ICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHhGRSwweDk3LDB4RjcsMHg1QSwweDg1LDB4NDksMHgy
MywweDQxLDB4RUQsMHhDRSwweEZGLDB4N0QsCi0gICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweEFB
LDB4NzgsMHg3QSwweDZFLDB4MjMsMHg0MSwweEUzLDB4MzgsMHgwQSwweEFGLDB4OEEsMHgwMCwK
LSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4QUUsMHg4OSwweDJELDB4QUIsMHhBNCwweDUxLDB4
NDQsMHg0OSwweEJELDB4RjUsMHg5RiwweDI5LAotICAgIDB4MDYsMHg2QSwweDg0LDB4NTEsMHgy
QiwweEFGLDB4OEQsMHhBRiwweDQ3LDB4NzIsMHhFNSwweDYxLDB4QUQsMHhDQiwweDJCLDB4MEIs
Ci0gICAgMHg2NywweDcyLDB4RTYsMHg2MSwweDU3LDB4N0UsMHhGMiwweEEyLDB4NjYsMHg3Miww
eEU2LDB4NjksMHgzRCwweEFELDB4QkYsMHgyRSwKLSAgICAweEM4LDB4ODIsMHg0NiwweDcyLDB4
MjksMHgyOSwweEFELDB4MkQsMHhFOCwweDgyLDB4QTgsMHg4MiwweDVDLDB4N0UsMHg2QiwweDI3
LAotICAgIDB4MkMsMHhBQywweEM4LDB4ODIsMHgzRCwweEI1LDB4RjUsMHhENSwweEIzLDB4REQs
MHhBQiwweDlCLDB4MDIsMHgwQiwweDA5LDB4MkQsCi0gICAgMHg1NSwweEVFLDB4RjQsMHhFNSww
eDBBLDB4MkYsMHhFRiwweEZELDB4NTUsMHhFRSwweEY0LDB4RTUsMHgyOCwweEEyLDB4RkIsMHg1
RiwKLSAgICAweDM1LDB4RTYsMHhCMywweEQ1LDB4QTAsMHhFQSwweDdFLDB4N0YsMHhGNCwweERE
LDB4NTIsMHhDRCwweEU4LDB4RTgsMHg3QSwweDdBLAotICAgIDB4NTIsMHhDRCwweEYwLDB4QzQs
MHhGQywweEZBLDB4N0UsMHhGRiwweDMxLDB4Q0QsMHgxMCwweEM1LDB4QjUsMHhBRiwweDA5LDB4
ODMsCi0gICAgMHg1MSwweENELDB4MzEsMHhDNSwweEI1LDB4RUIsMHhCRiwweDY5LDB4QjIsMHhE
NSwweDMwLDB4Q0QsMHgyRiwweEFGLDB4QTcsMHhCRCwKLSAgICAweDU2LDB4RUUsMHhEMywweERE
LDB4MEIsMHgwRCwweDJELDB4MzUsMHg5NiwweEVFLDB4NTYsMHhFRSwweEI3LDB4QUIsMHhBQiww
eDJCLAotICAgIDB4QjYsMHhGNiwweDc2LDB4RUUsMHg3NywweEZELDB4RkYsMHgyRiwweEI2LDB4
RjYsMHg5NiwweEVFLDB4REQsMHhCNSwweEI3LDB4RjksCi0gICAgMHg5NiwweEVFLDB4NzYsMHhF
RSwweDQ4LDB4RjgsMHg1QywweDhBLDB4OTYsMHhFRSwweDM1LDB4RTYsMHhBQSwweEVBLDB4MkEs
MHhBMCwKLSAgICAweDU1LDB4RUUsMHg3NSwweEU2LDB4RUEsMHhFRSwweEVBLDB4QUYsMHg1NSww
eEVFLDB4NzUsMHhFNiwweEFBLDB4QkEsMHhBQSwweEEyLAotICAgIDB4NzYsMHhFRSwweDM1LDB4
RTYsMHhBRCwweEFBLDB4QkIsMHhGRSwweDU1LDB4RUUsMHg1NSwweEU2LDB4RkYsMHhFRiwweEZG
LDB4RkYsCi0gICAgMHg1NiwweEVFLDB4NTUsMHhFNiwweEZGLDB4RkYsMHhCRiwweDlCLDB4NzUs
MHhFRSwweDM1LDB4RTYsMHg4RSwweEZBLDB4RkUsMHhBQSwKLSAgICAweDU2LDB4RUUsMHg3NSww
eEU2LDB4OUUsMHhBQSwweEFBLDB4RUIsMHg3NiwweEVFLDB4NTUsMHhFNiwweERGLDB4NzMsMHhG
QSwweEEwLAotICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHg1NSwweDU1LDB4RkQsMHhBOCwweDk2
LDB4RUUsMHgzNSwweEU2LDB4REYsMHhGRiwweEZBLDB4ODIsCi0gICAgMHg5NiwweEVFLDB4MzUs
MHhFNiwweDVGLDB4REYsMHhCQSwweDBCLDB4NzYsMHhFRSwweDM1LDB4RTYsMHhGRiwweEJGLDB4
MjAsMHgwMCwKLSAgICAweDc2LDB4RUUsMHg1NiwweEU2LDB4NzUsMHg4RiwweDBCLDB4QUEsMHg3
NiwweEVFLDB4MzUsMHhFNiwweDU1LDB4RkYsMHhFOCwweDVDLAotICAgIDB4NjMsMHg1OSwweDIz
LDB4NTEsMHgwMCwweEEzLDB4QUIsMHhCRiwweDY0LDB4NTksMHgyMywweDUxLDB4OUUsMHhCMyww
eDJFLDB4MEYsCi0gICAgMHg4NSwweDYxLDB4NDQsMHg1OSwweEY5LDB4REEsMHhFRiwweDhBLDB4
ODQsMHg1OSwweDQzLDB4NTksMHhBRiwweENELDB4QjUsMHhGNywKLSAgICAweDg0LDB4NjEsMHg0
MywweDU5LDB4REEsMHg4MiwweDZFLDB4QUIsMHg4NCwweDU5LDB4NDMsMHg1OSwweEQ0LDB4QkQs
MHg5QSwweEI4LAotICAgIDB4ODQsMHg1OSwweDQzLDB4NTksMHgyMCwweDhCLDB4ODgsMHg2OCww
eDg0LDB4NTksMHgyMiwweDUxLDB4Q0EsMHg3QSwweDdFLDB4NTcsCi0gICAgMHg0MywweDUxLDB4
MjIsMHg1MSwweDhCLDB4REYsMHhFQSwweDQ4LDB4NjMsMHg1MSwweDIyLDB4NTEsMHhERSwweDVG
LDB4RUIsMHg2QiwKLSAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4QkEsMHhBQiwweDdGLDB4RDks
MHg0NCwweDU5LDB4MDMsMHg0OSwweDk3LDB4M0YsMHhBNywweDJGLAotICAgIDB4NjQsMHg1MSww
eDAyLDB4NDksMHgwQiwweEFFLDB4RUEsMHg5QSwweDg1LDB4NjEsMHgyMywweDUxLDB4MkEsMHg5
RiwweEJGLDB4OEQsCi0gICAgMHgyNiwweDcyLDB4NDMsMHg1OSwweDAyLDB4RUIsMHhGNSwweEZE
LDB4NjYsMHg3QSwweDg0LDB4NjEsMHg4MCwweEFGLDB4RjUsMHg1NSwKLSAgICAweDY2LDB4N0Es
MHhBNCwweDYxLDB4MDAsMHgwQSwweDJCLDB4RjUsMHg4NywweDdBLDB4MjYsMHg3QSwweDIyLDB4
RUEsMHgwQSwweEI5LAotICAgIDB4QTcsMHg4MiwweDY3LDB4N0EsMHhGRiwweDdFLDB4NzcsMHhE
NywweDg3LDB4N0EsMHg2NywweDdBLDB4MjUsMHgwMCwweDJCLDB4NTksCi0gICAgMHhBNywweDgy
LDB4NjYsMHg3QSwweEVCLDB4OUEsMHhGOCwweEVCLDB4QTgsMHg4MiwweDY3LDB4N0EsMHhBMSww
eDZGLDB4QTksMHgwRiwKLSAgICAweEE4LDB4ODIsMHg0NiwweDdBLDB4QzIsMHg4NywweDJFLDB4
RkUsMHhBOCwweDgyLDB4NjYsMHg3QSwweDdFLDB4RUMsMHhBOCwweEFBLAotICAgIDB4QzgsMHg4
MiwweDg3LDB4N0EsMHg1RCwweEZCLDB4QUYsMHhCNSwweEE3LDB4ODIsMHg4NywweDdBLDB4Qjcs
MHhEQSwweDk2LDB4MTYsCi0gICAgMHhDOCwweDgyLDB4NjYsMHg3QSwweERDLDB4RkUsMHhGRSww
eEVFLDB4OEIsMHhBMywweDg3LDB4ODIsMHhENSwweEY1LDB4OUQsMHgzRiwKLSAgICAweEVDLDB4
QUIsMHg0QSwweDkzLDB4MkQsMHgwOSwweDhCLDB4QTIsMHhFQiwweEFCLDB4QUIsMHhBMywweEFB
LDB4QkUsMHg3NiwweDVGLAotICAgIDB4Q0MsMHhBMywweEFCLDB4QTMsMHg5NSwweDk1LDB4NkUs
MHhBQiwweEVCLDB4QUIsMHhBQiwweEEzLDB4Q0EsMHhBRCwweEQ5LDB4NTcsCi0gICAgMHhDQiww
eEEzLDB4MDgsMHg4QiwweEUwLDB4QzAsMHg2OCwweDYwLDB4RTgsMHg4MiwweDg0LDB4NTksMHhG
OCwweEY4LDB4NzgsMHg3RSwKLSAgICAweDg0LDB4NTksMHgyMywweDQ5LDB4N0MsMHhEOCwweDdB
LDB4NTAsMHg0MywweDQ5LDB4RTIsMHg0MCwweEUwLDB4RTgsMHhCRiwweDdGLAotICAgIDB4NDQs
MHg0OSwweEUyLDB4MzgsMHg3RSwweEFBLDB4OEEsMHgwQSwweDAzLDB4NDEsMHhDMiwweDMwLDB4
NTcsMHg3RiwweDdFLDB4NzgsCi0gICAgMHhDMiwweDMwLDB4QTEsMHgzMCwweDBFLDB4MEIsMHgz
RiwweDE1LDB4RTMsMHgzOCwweEEyLDB4MjgsMHhFRiwweEJBLDB4RjgsMHhGMCwKLSAgICAweEMy
LDB4MzAsMHhBMiwweDI4LDB4MDIsMHgwQSwweDJBLDB4MDMsMHgwMywweDM5LDB4QzIsMHgzMCww
eEEzLDB4M0IsMHhCRiwweEJGLAotICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHhBQiwweERELDB4
QkYsMHgyQiwweDQ0LDB4NDksMHgyNCwweDQxLDB4QzIsMHg2RCwweEFCLDB4MDIsCi0gICAgMHg0
NCwweDQ5LDB4MjQsMHg0MSwweEM5LDB4RUEsMHhFMCwweEMwLDB4NDQsMHg0MSwweDAzLDB4Mzks
MHhBQSwweEVCLDB4N0YsMHhFRSwKLSAgICAweDQ0LDB4NDEsMHgwMywweDQxLDB4MzYsMHhCQyww
eDJELDB4MDAsMHg0NCwweDQ5LDB4RTMsMHgzOCwweEFBLDB4QkEsMHg2OCwweEFBLAotICAgIDB4
NDUsMHg0MSwweEUzLDB4MzgsMHg4QSwweEJFLDB4NUYsMHg1RiwweDI0LDB4NDEsMHhDMiwweDM4
LDB4RjgsMHhFOCwweEZBLDB4QTcsCi0gICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweEY1LDB4RDUs
MHhBNSwweDBGLDB4NjQsMHg0OSwweEUzLDB4MzgsMHhGNywweEJGLDB4QUEsMHhBQSwKLSAgICAw
eDQ0LDB4NDksMHgwMywweDQxLDB4MTcsMHg5QSwweDU4LDB4RkEsMHg2NCwweDUxLDB4MDMsMHg0
MSwweEZBLDB4QTIsMHgwRiwweDBELAotICAgIDB4ODUsMHg1MSwweDI0LDB4NDksMHhBRCwweEJG
LDB4QkYsMHgzQiwweDY0LDB4NDksMHgyNCwweDQxLDB4N0UsMHhFQywweDc4LDB4NzAsCi0gICAg
MHg4NSwweDUxLDB4MjMsMHg0MSwweEZCLDB4RUEsMHgyRCwweEE1LDB4ODUsMHg1MSwweDIzLDB4
NDEsMHg1NywweDdGLDB4RUEsMHhDQSwKLSAgICAweDI0LDB4NDEsMHhDMiwweDM4LDB4RjYsMHhC
NywweEZFLDB4RTgsMHg0NCwweDQxLDB4QzIsMHgzOCwweDBCLDB4OEEsMHgwQiwweEE5LAotICAg
IDB4NDQsMHg0MSwweDIzLDB4NDEsMHg1NywweDVGLDB4RUIsMHg1NSwweDIzLDB4NDEsMHhFMyww
eDM4LDB4REMsMHg2OCwweEZBLDB4RkUsCi0gICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEJELDB4
REYsMHg3OSwweEZBLDB4MjQsMHg0MSwweDAzLDB4MzksMHgwQSwweDA5LDB4MEQsMHgwNSwKLSAg
ICAweDQ1LDB4NDksMHhFMywweDM4LDB4RUEsMHg2QSwweDdCLDB4RjcsMHgwMywweDQxLDB4RTMs
MHgzOCwweDM3LDB4MDksMHg4RCwweDJGLAotICAgIDB4ODUsMHg0OSwweDAzLDB4NDEsMHgyNSww
eDNELDB4QkQsMHgyNywweEM2LDB4NTksMHg2NCwweDQ5LDB4RkQsMHhBOSwweENCLDB4MDMsCi0g
ICAgMHhBNSwweDUxLDB4MjMsMHg0MSwweEYwLDB4N0UsMHhERSwweEZBLDB4NDQsMHg0OSwweEUy
LDB4NDAsMHhEQSwweDVFLDB4NUMsMHhEOCwKLSAgICAweDI0LDB4NDksMHhFMiwweDQwLDB4MkIs
MHgzNywweDNGLDB4QkIsMHg4NSwweDUxLDB4MjQsMHg0OSwweEZGLDB4RkQsMHhBQSwweDgxLAot
ICAgIDB4NjUsMHg1MSwweDAzLDB4NDEsMHg3QSwweEMyLDB4RTgsMHhFMCwweDQ0LDB4NDksMHgw
MywweDQxLDB4N0UsMHhERSwweEFGLDB4QUEsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEQ1
LDB4NzcsMHhGQSwweEUyLDB4ODUsMHg1MSwweDIzLDB4NDksMHgxRCwweEFCLDB4QUQsMHhBRCwK
LSAgICAweDg1LDB4NTEsMHg0NCwweDQ5LDB4RTgsMHg3QSwweERDLDB4RTIsMHg2NCwweDQ5LDB4
MDMsMHg0MSwweEZGLDB4RkYsMHg3QiwweEZDLAotICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhB
QiwweDIzLDB4MkIsMHg5QSwweDY0LDB4NDksMHgwMywweDQxLDB4RDcsMHhGRSwweDg4LDB4QUIs
Ci0gICAgMHgyMywweDQxLDB4MDMsMHgzOSwweDgwLDB4ODIsMHhFRSwweEM0LDB4MjMsMHg0MSww
eEUzLDB4MzgsMHhBRSwweDlGLDB4RkIsMHg3OCwKLSAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4
QjgsMHhCRiwweEVGLDB4QTUsMHg2NSwweDQ5LDB4RTMsMHgzOCwweEJGLDB4MzcsMHhGNSwweEQ3
LAotICAgIDB4ODUsMHg0OSwweDI0LDB4NDEsMHhGQSwweDJCLDB4QUYsMHhGNSwweDY0LDB4NDks
MHgwMywweDQxLDB4MjgsMHhBQSwweEVBLDB4RkEsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHgzOSww
eEIyLDB4RkEsMHg3QSwweDdELDB4NDQsMHg0MSwweEUyLDB4MzgsMHgyQSwweDg4LDB4QUYsMHhC
NywKLSAgICAweDQ0LDB4NDEsMHgwMywweDQxLDB4RkUsMHhFMiwweEVFLDB4NjUsMHg0NCwweDQ5
LDB4MDMsMHg0MSwweEE5LDB4MEIsMHgwNywweEI1LAotICAgIDB4QTUsMHg1MSwweDIzLDB4NDEs
MHhGRCwweEJCLDB4MkIsMHhBQiwweEM1LDB4NTksMHg0NCwweDQ5LDB4QTksMHgyNSwweEI4LDB4
QzgsCi0gICAgMHgyNywweDZBLDB4ODUsMHg1MSwweEFGLDB4MkIsMHhCRCwweEZELDB4NjcsMHg3
MiwweEU2LDB4NjEsMHhFQiwweEFBLDB4MjEsMHgyNSwKLSAgICAweEE4LDB4N0EsMHgyNiwweDZB
LDB4RTUsMHhGRiwweEFFLDB4MEEsMHhBOCwweDgyLDB4MjYsMHg2QSwweEQ1LDB4RkYsMHgwRSww
eDIyLAotICAgIDB4QTgsMHg4MiwweDY3LDB4NzIsMHhCRiwweERCLDB4RkIsMHg2QSwweEU5LDB4
ODIsMHg2NywweDdBLDB4QUYsMHhBQiwweEFELDB4QUYsCi0gICAgMHgwOSwweDhCLDB4QTgsMHg4
MiwweDBCLDB4MkEsMHgxNiwweDNELDB4RUYsMHhDNCwweDI5LDB4OTMsMHgyRCwweEI1LDB4QjUs
MHhGNSwKLSAgICAweEY0LDB4RTUsMHg2RSwweEI0LDB4MDIsMHgwMiwweDBCLDB4MkQsMHgxNSww
eEU2LDB4RDQsMHhERCwweEU4LDB4RkEsMHg3QSwweEZCLAotICAgIDB4MTUsMHhFNiwweEQ0LDB4
REQsMHg3RiwweEJGLDB4ODMsMHgwMywweEQ0LDB4REQsMHgzMSwweEM1LDB4NzAsMHg3MCwweEQw
LDB4NTgsCi0gICAgMHgzMSwweENELDB4RjAsMHhDNCwweEFBLDB4QUEsMHhFRSwweDdELDB4MzEs
MHhDRCwweEYwLDB4QkMsMHhBQSwweEVBLDB4M0IsMHhBRCwKLSAgICAweDUxLDB4Q0QsMHgxMCww
eENELDB4ODMsMHgyOSwweDZFLDB4QUEsMHg3MiwweENELDB4MzEsMHhDRCwweEE3LDB4Q0YsMHhC
RiwweEFELAotICAgIDB4MTUsMHhFNiwweDcyLDB4RDUsMHgwOSwweDA5LDB4MkQsMHgyNSwweDk2
LDB4RUUsMHgzNSwweEU2LDB4MEIsMHgyQSwweDBCLDB4MDksCi0gICAgMHhCNiwweEY2LDB4NzYs
MHhFRSwweDJFLDB4QkYsMHhCOSwweEZGLDB4QjcsMHhGNiwweDk2LDB4RUUsMHhCRiwweEFGLDB4
RDUsMHg1NSwKLSAgICAweEI2LDB4RjYsMHg3NiwweEVFLDB4RjcsMHhGRiwweEZGLDB4QUIsMHg5
NiwweEVFLDB4NTUsMHhFNiwweEIwLDB4NkEsMHgyQSwweDAwLAotICAgIDB4QjYsMHhGNiwweDU1
LDB4RTYsMHhGRiwweEZGLDB4QUYsMHgyMiwweEI2LDB4RjYsMHg1NSwweEU2LDB4RjUsMHhGRiww
eEFBLDB4QTIsCi0gICAgMHhCNiwweEY2LDB4NTUsMHhFNiwweDc3LDB4RkYsMHhBQSwweDIwLDB4
QjYsMHhGNiwweDc2LDB4RUUsMHhENSwweEJGLDB4QTgsMHhBMiwKLSAgICAweEI3LDB4RjYsMHg3
NiwweEVFLDB4NTcsMHhCQSwweEFBLDB4RTgsMHg5NiwweEY2LDB4NzYsMHhFRSwweDM5LDB4QUEs
MHgyOCwweEQ3LAotICAgIDB4QjYsMHhGNiwweDU1LDB4RTYsMHhCRSwweDhBLDB4RUEsMHg3RSww
eDk2LDB4RUUsMHgzNSwweEU2LDB4MjAsMHgwMiwweDJBLDB4N0QsCi0gICAgMHhCNywweEY2LDB4
MTUsMHhFNiwweDJBLDB4QTgsMHhFQSwweDdGLDB4QjcsMHhGNiwweDE1LDB4REUsMHhBMCwweEE4
LDB4RUUsMHg1NSwKLSAgICAweDc2LDB4RUUsMHhCMywweEQ1LDB4MDAsMHgwMCwweEFBLDB4N0Ys
MHg1NiwweEVFLDB4NzIsMHhDRCwweDAwLDB4MjAsMHhGQSwweDU3LAotICAgIDB4NTUsMHhFRSww
eDkzLDB4Q0QsMHg4MCwweEZFLDB4NzcsMHg1NSwweEY0LDB4REQsMHg3MiwweENELDB4QzAsMHg3
QiwweDU1LDB4NTUsCi0gICAgMHg4NCwweDU5LDB4MjIsMHg1MSwweEZGLDB4RUEsMHg2MywweDdC
LDB4NjQsMHg1OSwweDIyLDB4NTEsMHgzRiwweDBGLDB4MjUsMHgyRiwKLSAgICAweDg0LDB4NjEs
MHg2NCwweDU5LDB4RkIsMHgyQSwweEU5LDB4N0YsMHg4NCwweDYxLDB4MjMsMHg1MSwweEZDLDB4
QUMsMHhGOCwweEUwLAotICAgIDB4ODQsMHg1OSwweDQzLDB4NTksMHhBQSwweEFCLDB4MkIsMHgw
NywweEE0LDB4NjEsMHg0MywweDUxLDB4QUEsMHhBQSwweDg4LDB4N0UsCi0gICAgMHg4NCwweDU5
LDB4MjIsMHg1MSwweDZBLDB4RTgsMHhBRiwweEI5LDB4ODQsMHg1OSwweDIyLDB4NTEsMHhENyww
eEY3LDB4M0YsMHhFRiwKLSAgICAweDQzLDB4NTEsMHgyMiwweDUxLDB4NTgsMHgzQywweEQ4LDB4
MjAsMHg0MywweDUxLDB4MjIsMHg0OSwweDc4LDB4N0EsMHgwRCwweDJFLAotICAgIDB4NjMsMHg1
OSwweDIyLDB4NTEsMHg1RCwweDc1LDB4QTcsMHgyQSwweDY0LDB4NTksMHgyMywweDUxLDB4RkQs
MHhEOSwweEZBLDB4QUEsCi0gICAgMHg4NCwweDYxLDB4MjMsMHg1MSwweDU3LDB4RjcsMHhFNyww
eEFGLDB4ODQsMHg2MSwweDY0LDB4NTksMHgxOSwweEE5LDB4QjksMHg4MSwKLSAgICAweEE0LDB4
NjEsMHg2NCwweDU5LDB4QjUsMHhFRiwweEZELDB4RkIsMHg4NCwweDYxLDB4NjQsMHg1OSwweDdB
LDB4MkUsMHhCNCwweDFFLAotICAgIDB4QTQsMHg2MSwweDY0LDB4NTksMHhGRiwweDdELDB4NkUs
MHhFQiwweDA2LDB4NzIsMHg2MywweDU5LDB4MEIsMHhFQiwweEZELDB4NzUsCi0gICAgMHg2Nyww
eDdBLDB4NjMsMHg1OSwweDAyLDB4QUIsMHhGNSwweDU3LDB4NjcsMHg3QSwweDg0LDB4NjEsMHgw
MCwweDAwLDB4MEIsMHhGNSwKLSAgICAweDg4LDB4ODIsMHgwNiwweDcyLDB4MDgsMHg4QSwweEFB
LDB4QTksMHg2NywweDgyLDB4ODcsMHg3QSwweDc3LDB4REMsMHhERSwweEZCLAotICAgIDB4ODcs
MHg4MiwweDY3LDB4N0EsMHg1QywweEZGLDB4QkYsMHgwQiwweEE3LDB4ODIsMHg2NywweDdBLDB4
QUEsMHhBNSwweEI2LDB4QTYsCi0gICAgMHhBNywweDgyLDB4NjcsMHg3QSwweDJFLDB4MkEsMHg2
QiwweEZGLDB4QTcsMHg4MiwweDg3LDB4N0EsMHgyRCwweDA1LDB4RkQsMHg3RSwKLSAgICAweDA4
LDB4OEIsMHg4NywweDdBLDB4RDUsMHhGRiwweEJGLDB4M0QsMHhFQywweEFCLDB4RTgsMHg4QSww
eEE1LDB4MkQsMHgyQiwweDBCLAotICAgIDB4RUIsMHhBQiwweEFCLDB4QTMsMHg2QSwweEZBLDB4
RDAsMHhCRiwweENCLDB4QTMsMHg4QSwweEEzLDB4QUEsMHhCRiwweEVGLDB4QTgsCi0gICAgMHhD
QiwweEEzLDB4NkMsMHhBMywweDhBLDB4QTgsMHg4RSwweEFBLDB4Q0IsMHhBMywweDhCLDB4QTMs
MHg4OCwweEU5LDB4QUIsMHg4QiwKLSAgICAweENCLDB4QTMsMHg0OSwweDkzLDB4NzgsMHhBMiww
eDg4LDB4QUEsMHgyOSwweDhCLDB4MDYsMHg2QSwweDVFLDB4NzgsMHg3MCwweEUwLAotICAgIDB4
RTYsMHg2MSwweDQzLDB4NTEsMHg1RSwweEVDLDB4RjgsMHhFOCwweDY0LDB4NTEsMHhDMiwweDM4
LDB4N0UsMHg3RSwweDc4LDB4RTAsCi0gICAgMHgyMywweDQxLDB4QzIsMHgzOCwweDBCLDB4QUYs
MHhBRiwweEY3LDB4MDMsMHg0MSwweEMyLDB4MzgsMHg3MCwweDZGLDB4N0UsMHg1NywKLSAgICAw
eEUzLDB4MzgsMHhBMSwweDMwLDB4OTUsMHhCRiwweEZBLDB4QkEsMHhFMiwweDM4LDB4QTIsMHgz
MCwweDdFLDB4RkYsMHhBQiwweDJBLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhENSwweEQ3
LDB4RkIsMHhCQywweDIzLDB4NDEsMHhFMywweDM4LDB4RjUsMHhCNSwweEFELDB4QkQsCi0gICAg
MHg2NCwweDQ5LDB4MDMsMHg0MSwweDJELDB4MkQsMHgzRiwweEJGLDB4QTYsMHg1MSwweDQ0LDB4
NDksMHg1NywweDVGLDB4N0YsMHhFMywKLSAgICAweDY0LDB4NDksMHgyNCwweDQxLDB4RUIsMHhB
QSwweEJFLDB4QkEsMHg4NSwweDQ5LDB4MjQsMHg0MSwweEI3LDB4RDcsMHg4QiwweDBCLAotICAg
IDB4ODUsMHg1MSwweDI0LDB4NDEsMHhGQSwweDdFLDB4RDgsMHg1OCwweDQ0LDB4NDEsMHhFMyww
eDQwLDB4OEUsMHgzQiwweDJCLDB4QTksCi0gICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweDdFLDB4
RDgsMHhFRSwweEFBLDB4MjMsMHg0MSwweEUyLDB4MzgsMHhBNSwweDNGLDB4OUUsMHgzRiwKLSAg
ICAweEE1LDB4NTEsMHgwMywweDQxLDB4MkQsMHgyRiwweDJCLDB4MkYsMHhBNSwweDUxLDB4MjMs
MHg0OSwweDc4LDB4NzgsMHhFMCwweEEwLAotICAgIDB4NjQsMHg1MSwweDAzLDB4NDksMHhGRiww
eEFELDB4RjYsMHhGQywweDg1LDB4NTEsMHgyNCwweDQ5LDB4RjUsMHg2NSwweEFGLDB4MEYsCi0g
ICAgMHhBNSwweDUxLDB4NjQsMHg1MSwweDM1LDB4QjUsMHhERiwweDk4LDB4QTUsMHg1OSwweDI0
LDB4NDksMHg3QywweEY4LDB4RTIsMHg4QSwKLSAgICAweDY0LDB4NTEsMHgyNCwweDQ5LDB4MTcs
MHhENywweEJFLDB4RTgsMHhBNSwweDUxLDB4NDQsMHg0OSwweEVGLDB4MkYsMHgzRCwweDM3LAot
ICAgIDB4ODUsMHg1MSwweDAzLDB4MzksMHg1RiwweDdFLDB4NTgsMHg3OCwweDI0LDB4NDEsMHhD
MiwweDM4LDB4OEEsMHhBQSwweEVBLDB4N0YsCi0gICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEJF
LDB4QkQsMHhGNSwweEQ1LDB4MDMsMHgzOSwweEEyLDB4MzAsMHhBMCwweDA4LDB4MkEsMHgyOCwK
LSAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4REYsMHhCRiwweEVBLDB4NzIsMHgyMywweDQxLDB4
RTMsMHgzOCwweDZBLDB4RkMsMHhFRSwweEZGLAotICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHhD
RiwweDAzLDB4OEEsMHhEQSwweDI0LDB4NDEsMHhFMywweDM4LDB4OTcsMHgxNCwweEJCLDB4Nzks
Ci0gICAgMHg4NSwweDUxLDB4RTMsMHgzOCwweEE3LDB4QkYsMHhFRiwweEI1LDB4QzYsMHg1OSww
eDY1LDB4NDksMHgyQiwweEFGLDB4QUQsMHhGRiwKLSAgICAweDg0LDB4NTEsMHg0NCwweDQ5LDB4
N0MsMHg1NCwweDU0LDB4N0YsMHg0NCwweDQ5LDB4RTIsMHg0MCwweEYyLDB4NkUsMHhGRSwweDdF
LAotICAgIDB4MDMsMHg0MSwweEUyLDB4NDAsMHgwMiwweDAyLDB4M0IsMHhBOSwweDQ0LDB4NDks
MHgwMywweDQxLDB4MEIsMHhGNiwweDVGLDB4N0QsCi0gICAgMHg2NCwweDQ5LDB4MjQsMHg0OSww
eDU4LDB4RUYsMHhCRCwweEFELDB4ODUsMHg1MSwweDIzLDB4NDksMHhCOSwweEE5LDB4MkIsMHgw
MiwKLSAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4RjIsMHhFQSwweDc4LDB4NUUsMHg2NCwweDQ5
LDB4MjMsMHg0OSwweDg1LDB4QUQsMHgwQiwweDJCLAotICAgIDB4QTUsMHg1MSwweDQ0LDB4NDEs
MHhFQiwweDJGLDB4QUQsMHhGNSwweDg1LDB4NDksMHg0NCwweDQ5LDB4NTYsMHg3QSwweDdBLDB4
NTcsCi0gICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweEQ2LDB4NUYsMHhGRSwweEFDLDB4NjQsMHg0
OSwweDAzLDB4MzksMHg4RiwweEE3LDB4QUQsMHhCNSwKLSAgICAweDQ0LDB4NDEsMHhFMiwweDM4
LDB4RTgsMHhBQywweEI4LDB4QjQsMHgyMywweDQxLDB4RTIsMHgzOCwweDQyLDB4QzAsMHhFMCww
eDdFLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHgyNSwweEJGLDB4MkIsMHg4MiwweDIzLDB4
NDEsMHgwMywweDM5LDB4QUQsMHg2NywweDNELDB4MDksCi0gICAgMHg0NCwweDQxLDB4MDMsMHgz
OSwweEJBLDB4RkYsMHhFQiwweDIyLDB4NDQsMHg0MSwweDAzLDB4NDEsMHhBMiwweENBLDB4N0Is
MHhFQSwKLSAgICAweEUyLDB4NDgsMHgwMywweDM5LDB4RjUsMHhERCwweDc1LDB4RDcsMHgyMyww
eDQxLDB4QzIsMHgzOCwweEE3LDB4MkYsMHhFRiwweEFBLAotICAgIDB4NDMsMHg0MSwweDAzLDB4
NDEsMHg2NSwweEVCLDB4RkYsMHhBOSwweDY0LDB4NDksMHgyMywweDQxLDB4QjcsMHg5NSwweEI1
LDB4NzUsCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweDAyLDB4MDAsMHgwMiwweEFGLDB4QTUs
MHg1MSwweDQ0LDB4NDksMHgwMCwweDJGLDB4OUUsMHhCMywKLSAgICAweEU3LDB4NjEsMHg4NSww
eDUxLDB4REIsMHhFQSwweDJCLDB4MkIsMHgyNywweDZBLDB4QTQsMHg1OSwweDI1LDB4OTUsMHhF
RiwweEUyLAotICAgIDB4QTgsMHg3QSwweEM1LDB4NTksMHgwQSwweDAzLDB4QkYsMHhCRCwweEM5
LDB4ODIsMHg2NiwweDcyLDB4MDIsMHgyMiwweEFCLDB4RTksCi0gICAgMHhBOCwweDdBLDB4Njcs
MHg3QSwweDY4LDB4NkEsMHg2OCwweDc4LDB4QTcsMHg3QSwweDQ2LDB4NzIsMHgwQSwweDJGLDB4
MkYsMHg3NywKLSAgICAweDA5LDB4OEIsMHhBNywweDdBLDB4M0QsMHhFRiwweEFELDB4QkYsMHg4
QiwweDlCLDB4RTgsMHg4MiwweDJELDB4M0QsMHhGRCwweDU1LAotICAgIDB4RDMsMHhERCwweDZB
LDB4OTMsMHgyQiwweDJELDB4QUQsMHhCNSwweDE0LDB4RTYsMHg3MiwweEQ1LDB4OEEsMHgwQSww
eDBCLDB4MDksCi0gICAgMHgxNSwweEU2LDB4QjMsMHhERCwweDAyLDB4ODAsMHhBMCwweDcwLDB4
QjMsMHhERCwweEYwLDB4QzQsMHg1OCwweDdDLDB4N0MsMHg1RSwKLSAgICAweDEwLDB4QzUsMHhD
RiwweEJDLDB4RUEsMHg2QSwweEZFLDB4QjYsMHgzMCwweENELDB4RDAsMHhCQywweEFCLDB4QTks
MHhBRiwweDJCLAotICAgIDB4MzEsMHhDRCwweDEwLDB4QzUsMHg0MiwweEM4LDB4QjMsMHg4Myww
eDUxLDB4Q0QsMHgxMCwweEM1LDB4MEIsMHg4RiwweDBGLDB4ODksCi0gICAgMHgxNCwweEU2LDB4
NTEsMHhDRCwweDM1LDB4MzUsMHhENSwweEQ1LDB4OTYsMHhGNiwweEY0LDB4REQsMHgwQSwweDBC
LDB4MEIsMHgyRCwKLSAgICAweEQ3LDB4RjYsMHg3NiwweEVFLDB4QkYsMHhBQSwweEE4LDB4NzUs
MHhCNywweEY2LDB4NTUsMHhFRSwweDA4LDB4MDAsMHgyOCwweDdGLAotICAgIDB4QjcsMHhGNiww
eDM1LDB4RTYsMHgwMCwweDAwLDB4QTAsMHg1NywweEI3LDB4RjYsMHgzNSwweEU2LDB4MDIsMHhB
OCwweEVBLDB4NUQsCi0gICAgMHhCNywweEY2LDB4MTQsMHhERSwweDgyLDB4QTIsMHhGRiwweDdE
LDB4OTYsMHhFRSwweEY0LDB4REQsMHgwMCwweDg4LDB4RkUsMHg3NywKLSAgICAweDk2LDB4RUUs
MHhCMywweEQ1LDB4MDAsMHgyMCwweEFBLDB4NUYsMHg3NiwweEVFLDB4QjMsMHhENSwweDAwLDB4
MDAsMHhFQSwweDU3LAotICAgIDB4OTYsMHhFRSwweDczLDB4Q0QsMHgwMCwweEE4LDB4QUEsMHg1
NywweDU1LDB4RTYsMHg1MSwweEM1LDB4MDAsMHg4OCwweEZBLDB4NTcsCi0gICAgMHg1NSwweEU2
LDB4RjEsMHhCQywweDgwLDB4QUEsMHhGRSwweDc3LDB4MTUsMHhFNiwweEQwLDB4QkMsMHgwMCww
eEFBLDB4RkYsMHg1NSwKLSAgICAweEY0LDB4REQsMHg4RiwweEI0LDB4MDAsMHhBQSwweERGLDB4
NTUsMHhGNCwweERELDB4QjAsMHhCNCwweEE4LDB4RkUsMHg1NSwweDU1LAotICAgIDB4NzIsMHhD
RCwweDRFLDB4QUMsMHgyMCwweEJBLDB4RjcsMHhGNSwweDczLDB4QzUsMHhEMCwweEI0LDB4MkEs
MHhCRiwweDM1LDB4MjksCi0gICAgMHg5MywweENELDB4NTIsMHhDNSwweDgyLDB4OEYsMHhCMyww
eDdBLDB4QjMsMHhENSwweDExLDB4QzUsMHhFQSwweEUyLDB4RkEsMHg3RSwKLSAgICAweDQzLDB4
NTksMHgyMywweDUxLDB4NUEsMHhGQSwweEU4LDB4ODAsMHg2NCwweDU5LDB4MjMsMHg1MSwweDJC
LDB4MEEsMHgwOSwweDAwLAotICAgIDB4ODQsMHg2MSwweDQ0LDB4NTksMHg1RSwweDVFLDB4QkUs
MHgyQSwweDg0LDB4NjEsMHg0MywweDU5LDB4RTcsMHhERSwweEY4LDB4RkUsCi0gICAgMHg4NCww
eDU5LDB4NDMsMHg1MSwweEJBLDB4QTgsMHhBMiwweEQwLDB4NjQsMHg1OSwweDIzLDB4NTEsMHg2
MCwweDdBLDB4REEsMHgzQSwKLSAgICAweDg0LDB4NTksMHgyMywweDUxLDB4OEQsMHhBNSwweEJE
LDB4REQsMHg4NCwweDU5LDB4MjIsMHg1MSwweDdGLDB4OEIsMHhCRSwweEZGLAotICAgIDB4NjMs
MHg1OSwweDQzLDB4NTEsMHg5RCwweDZDLDB4QTYsMHhBOSwweDYzLDB4NTksMHgyMiwweDUxLDB4
NUIsMHg1QywweDVFLDB4REUsCi0gICAgMHg2MywweDU5LDB4MDIsMHg0OSwweDJBLDB4QkYsMHhC
RCwweEZCLDB4NjQsMHg1OSwweDIzLDB4NTEsMHg1QiwweDVGLDB4QkYsMHhBMywKLSAgICAweDg0
LDB4NjEsMHg0MywweDUxLDB4RUQsMHhBOSwweEFBLDB4RUEsMHg4NCwweDYxLDB4NjMsMHg1OSww
eDhBLDB4N0EsMHhGMCwweDY0LAotICAgIDB4QTQsMHg2MSwweDYzLDB4NTksMHg1QSwweDhFLDB4
NkYsMHg4MywweDg0LDB4NjEsMHg2MywweDU5LDB4MTEsMHg5RiwweDJBLDB4MjAsCi0gICAgMHhB
NCwweDYxLDB4NjMsMHg1OSwweERBLDB4RkIsMHhGMCwweDUwLDB4QTUsMHg2MSwweDIyLDB4NTEs
MHhFQSwweEU4LDB4N0UsMHhGQSwKLSAgICAweDYzLDB4NTksMHg0MywweDU5LDB4M0MsMHg3QSww
eEUwLDB4QzIsMHg4NCwweDYxLDB4MjMsMHg1MSwweDJCLDB4RkYsMHhGRiwweDdGLAotICAgIDB4
RTUsMHg2OSwweDAzLDB4NTEsMHgwMiwweEFFLDB4RkYsMHg3RiwweDY3LDB4N0EsMHg0MywweDU5
LDB4MDAsMHgyQiwweEZELDB4RDUsCi0gICAgMHg2NywweDdBLDB4ODQsMHg1OSwweDAwLDB4MDAs
MHgwQSwweEZELDB4QzcsMHg4MiwweDA2LDB4NzIsMHhBQSwweDJCLDB4QkIsMHhGRCwKLSAgICAw
eEE3LDB4ODIsMHg2NiwweDdBLDB4RkQsMHgwQiwweDhCLDB4QkQsMHhBNywweDgyLDB4NjYsMHg3
QSwweEVBLDB4RjgsMHhGMiwweEUwLAotICAgIDB4MEIsMHhBQywweEM4LDB4ODIsMHhENSwweEY1
LDB4QjUsMHgyRCwweEVDLDB4QUIsMHg4QSwweDlCLDB4MEQsMHgwMywweEEwLDB4RkEsCi0gICAg
MHhDQiwweEEzLDB4NkEsMHg5QiwweDA4LDB4QTgsMHhGQywweEU3LDB4Q0IsMHhBMywweDZBLDB4
OUIsMHg4QSwweEVGLDB4NzcsMHhENywKLSAgICAweEFCLDB4QTMsMHg2QSwweDlCLDB4QTgsMHhF
QiwweENGLDB4RTksMHhDQywweEEzLDB4NkEsMHg5QiwweDBGLDB4QUIsMHhFQiwweDVGLAotICAg
IDB4QUIsMHhBMywweDJBLDB4OTMsMHgyMCwweEE4LDB4RkEsMHg3RiwweDZBLDB4OTMsMHgwNSww
eDZBLDB4NzgsMHg3OCwweDU4LDB4RkUsCi0gICAgMHgyNiwweDZBLDB4QTQsMHg1OSwweDU3LDB4
NTYsMHhGQywweEU4LDB4QTUsMHg1OSwweDAyLDB4NDEsMHhEQywweDU4LDB4NzgsMHhGOCwKLSAg
ICAweDAzLDB4NDEsMHhBMiwweDM4LDB4RkMsMHg3RSwweDc4LDB4RTgsMHhFMywweDM4LDB4QTIs
MHgzMCwweDNCLDB4QkQsMHhBQSwweEU4LAotICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHhCRSww
eDJBLDB4MEYsMHgyQiwweDI0LDB4NDEsMHhFMywweDM4LDB4NTcsMHhCNywweDJGLDB4M0YsCi0g
ICAgMHgyNCwweDQxLDB4QzIsMHgzMCwweEI3LDB4QUIsMHhCMiwweEEwLDB4RTMsMHg0MCwweDI0
LDB4MzksMHhBQSwweEE3LDB4QkEsMHhCQiwKLSAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4MkYs
MHhCNSwweERGLDB4M0YsMHg4NSwweDUxLDB4MjMsMHg0MSwweDAzLDB4MjksMHhCRCwweEFGLAot
ICAgIDB4ODUsMHg1MSwweDAzLDB4MzksMHhBQSwweEEwLDB4NjAsMHg3QSwweDQ0LDB4NDksMHgw
MywweDQxLDB4MDgsMHhCRSwweEZELDB4NTcsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweDc4
LDB4NTYsMHg1NSwweEZCLDB4MjQsMHg0MSwweEUyLDB4MzgsMHgyNywweDJFLDB4RUIsMHhFMiwK
LSAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4ODAsMHhFMiwweEZBLDB4MDIsMHg2NSwweDQ5LDB4
RTIsMHgzOCwweDk1LDB4OTUsMHhCRCwweEFGLAotICAgIDB4QzYsMHg1MSwweDQ0LDB4NDksMHhB
NSwweDdGLDB4RUEsMHg4QiwweEE1LDB4NTEsMHg0NCwweDQ5LDB4QzIsMHhDOSwweEUzLDB4NkEs
Ci0gICAgMHg4NSwweDUxLDB4MjMsMHg0OSwweERFLDB4QkEsMHgyRiwweEI3LDB4QTUsMHg1OSww
eDY0LDB4NDksMHg5RCwweEZCLDB4RUEsMHhBQiwKLSAgICAweEE1LDB4NTEsMHg0NCwweDQ5LDB4
RTgsMHhGQSwweEJFLDB4N0YsMHhDNSwweDYxLDB4NDQsMHg0OSwweEFGLDB4MkQsMHgzNSwweDE3
LAotICAgIDB4MDYsMHg2QSwweDY0LDB4NTEsMHg3RiwweDdBLDB4RTIsMHgwQSwweEM2LDB4NTks
MHg2NCwweDQ5LDB4RjUsMHg3NywweEZFLDB4RjAsCi0gICAgMHhBNSwweDUxLDB4MDMsMHg0MSww
eDU4LDB4NzIsMHhCRiwweEE4LDB4MjMsMHg0MSwweEMyLDB4MzgsMHg1NywweDU3LDB4NzgsMHg3
OCwKLSAgICAweEUzLDB4MzgsMHg4MSwweDMwLDB4QTIsMHhCQSwweEJFLDB4QTcsMHgwMywweDM5
LDB4QzIsMHgzMCwweEFGLDB4RjUsMHhBRiwweDNCLAotICAgIDB4MjMsMHg0MSwweEUzLDB4Mzgs
MHg3QSwweEZCLDB4NzcsMHhGRCwweDAzLDB4NDEsMHhFMywweDM4LDB4RUQsMHhCNSwweDU1LDB4
MzgsCi0gICAgMHgyMywweDQxLDB4QzIsMHgzOCwweEZBLDB4NkIsMHhBRiwweDJFLDB4MjMsMHg0
MSwweEUzLDB4MzgsMHg3QiwweEFGLDB4MkUsMHgyQiwKLSAgICAweDY0LDB4NDksMHhFMywweDM4
LDB4MkQsMHg4RiwweEFFLDB4QUIsMHg2NCwweDUxLDB4MjMsMHg0OSwweDBBLDB4MEUsMHhBQiww
eDczLAotICAgIDB4ODUsMHg1MSwweDI0LDB4NDksMHhFMiwweEVCLDB4N0IsMHhGRiwweDQ0LDB4
NDksMHgwMywweDQxLDB4NzQsMHhENCwweEFBLDB4MkEsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHg0
MSwweDc1LDB4NkYsMHgyQSwweDIwLDB4NjQsMHg1MSwweDAzLDB4NDEsMHhCNSwweEJELDB4M0Is
MHgyQSwKLSAgICAweDg0LDB4NTEsMHg0NCwweDQ5LDB4QkQsMHhBRiwweEFGLDB4MkUsMHhBNSww
eDUxLDB4NjQsMHg0OSwweENCLDB4NkEsMHhDMiwweEMwLAotICAgIDB4NjQsMHg0OSwweDAzLDB4
NDEsMHhGQywweEY4LDB4RTgsMHg4MCwweDY0LDB4NDksMHgwMywweDQxLDB4MkIsMHgyQiwweDA5
LDB4M0YsCi0gICAgMHg4NCwweDQ5LDB4MDMsMHg0MSwweDdGLDB4N0UsMHg3RSwweEZDLDB4NDQs
MHg0OSwweDAzLDB4NDEsMHgyRSwweEZFLDB4N0EsMHg1RiwKLSAgICAweDQ0LDB4NDEsMHhFMiww
eDM4LDB4ODgsMHgyRSwweEE3LDB4NTcsMHg0NCwweDQxLDB4RTMsMHgzOCwweEJBLDB4RkEsMHhE
QywweEZGLAotICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHhGQywweDVGLDB4RkYsMHhBRiwweDQ0
LDB4NDEsMHhFMiwweDM4LDB4REYsMHg3NywweDlGLDB4RTIsCi0gICAgMHgwMywweDM5LDB4QzIs
MHgzOCwweDI5LDB4QTYsMHhBQSwweDAyLDB4ODQsMHg0OSwweDAzLDB4MzksMHhBRCwweDBELDB4
QUQsMHhFNywKLSAgICAweDY0LDB4NDksMHgwMywweDM5LDB4QUUsMHhBOCwweDgwLDB4QTgsMHg2
NSwweDQ5LDB4MjQsMHg0MSwweDdFLDB4NzIsMHhFQiwweEZELAotICAgIDB4NDMsMHg0MSwweEMy
LDB4MzgsMHhGRSwweEI2LDB4QUEsMHhBOCwweDY1LDB4NDksMHhFMiwweDM4LDB4OTcsMHhCNyww
eDhCLDB4MEYsCi0gICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweDBELDB4MDksMHhDMCwweEEwLDB4
NDQsMHg0OSwweDIzLDB4NDEsMHhFQywweERFLDB4RDcsMHg5NiwKLSAgICAweDY0LDB4NDksMHgy
MywweDQxLDB4N0QsMHhGRiwweEVFLDB4QzAsMHg4NSwweDUxLDB4MDIsMHg0MSwweDJCLDB4REQs
MHhGNywweDVFLAotICAgIDB4QzYsMHg1OSwweDQ0LDB4NDksMHgyQiwweEJGLDB4QkQsMHg5NSww
eEU2LDB4NjEsMHg4NCwweDU5LDB4MDIsMHhBRSwweERGLDB4N0EsCi0gICAgMHgyNiwweDZBLDB4
QTQsMHg1OSwweDJGLDB4OEIsMHg4QiwweDI1LDB4QTgsMHg3QSwweDA1LDB4NjIsMHg4MiwweEE5
LDB4RkQsMHhENywKLSAgICAweDY3LDB4N0EsMHgyNiwweDZBLDB4QTIsMHhBQiwweEJGLDB4RkIs
MHg0NywweDcyLDB4MDYsMHg2QSwweEU4LDB4NkMsMHhGQywweDU0LAotICAgIDB4QzgsMHg4Miww
eDA2LDB4NkEsMHgwQSwweDBELDB4QjUsMHhCNSwweEU4LDB4ODIsMHg4NywweDdBLDB4MjgsMHgy
MiwweDhCLDB4MzcsCi0gICAgMHg2RSwweEI0LDB4QzgsMHg4MiwweDJELDB4QkQsMHhGNSwweEQ1
LDB4RDMsMHhERCwweDJELDB4QUMsMHgwMiwweDBCLDB4MkQsMHhBRCwKLSAgICAweEY0LDB4RTUs
MHg1MSwweENELDB4QTAsMHhFMiwweDdBLDB4RUEsMHg1MiwweENELDB4RDAsMHhCQywweEY4LDB4
RkUsMHhEQSwweDdDLAotICAgIDB4MTAsMHhDNSwweEQwLDB4QkMsMHhGNiwweEFBLDB4OUEsMHhE
NywweDEwLDB4QzUsMHhGMCwweEM0LDB4MkQsMHgwRiwweDI5LDB4MDUsCi0gICAgMHgzMSwweENE
LDB4MTAsMHhDNSwweDAyLDB4OEUsMHgxQiwweEFCLDB4NTEsMHhDRCwweDEwLDB4QzUsMHhBRiww
eDI3LDB4QUYsMHhBQiwKLSAgICAweDUxLDB4Q0QsMHgzMSwweEM1LDB4MjgsMHgwRSwweDJBLDB4
RkMsMHgzNSwweEU2LDB4NTIsMHhDRCwweDBCLDB4QUYsMHhBRCwweEFELAotICAgIDB4MzUsMHhF
NiwweDEwLDB4QzUsMHgwMCwweEFBLDB4N0YsMHg1RSwweDE0LDB4RTYsMHhEMCwweEJDLDB4MDAs
MHhBQSwweEZGLDB4NzUsCi0gICAgMHgxNCwweEU2LDB4RDAsMHhCQywweDIwLDB4RUEsMHg3Riww
eDU1LDB4RjQsMHhERCwweEFGLDB4QkMsMHgwMCwweEFBLDB4RkYsMHg1NSwKLSAgICAweEIzLDB4
RDUsMHhCMCwweEJDLDB4MDAsMHhBMiwweEZGLDB4NTUsMHhCMywweEQ1LDB4OEYsMHhCNCwweDAw
LDB4QUEsMHhERiwweDU1LAotICAgIDB4OTIsMHhENSwweDZGLDB4QUMsMHgwMCwweEFBLDB4RkYs
MHg1NSwweDcyLDB4Q0QsMHg2RSwweEFDLDB4MDAsMHhBQSwweEZGLDB4NUQsCi0gICAgMHg1Miww
eEM1LDB4NEUsMHhBQywweDAwLDB4QUEsMHhGRSwweDU3LDB4MzEsMHhDNSwweDJFLDB4QTQsMHgy
QSwweEJBLDB4RjcsMHg1RCwKLSAgICAweEYwLDB4QkMsMHgyRCwweEE0LDB4RTAsMHhGQSwweEZG
LDB4RDUsMHg4RiwweEI0LDB4MkQsMHhBNCwweEM4LDB4RTgsMHhCQSwweEI3LAotICAgIDB4NTIs
MHhDNSwweDJELDB4QTQsMHhGRCwweEJELDB4QUYsMHgyRiwweEQ0LDB4RDUsMHhEMCwweEI0LDB4
RjUsMHhBRiwweDBBLDB4MDIsCi0gICAgMHhENCwweEQ1LDB4RjAsMHhCNCwweEQ1LDB4RUUsMHhB
OCwweEEwLDB4OTMsMHhDRCwweDMxLDB4QkQsMHhCNSwweEFGLDB4OEEsMHhBRSwKLSAgICAweDcz
LDB4Q0QsMHhGMCwweEI0LDB4QTAsMHhFMiwweEZBLDB4NUYsMHg1MiwweEM1LDB4QjAsMHhCNCww
eEUyLDB4RkEsMHg3RSwweDVGLAotICAgIDB4ODQsMHg1OSwweDQzLDB4NTksMHhENywweEU1LDB4
QkYsMHhDRCwweDg0LDB4NTksMHg0MywweDUxLDB4ODEsMHgwMiwweDhDLDB4QUEsCi0gICAgMHg4
NCwweDU5LDB4NjQsMHg1OSwweDQxLDB4RTAsMHgyQiwweDFBLDB4ODQsMHg1OSwweDQzLDB4NTEs
MHg4QSwweDhBLDB4RjgsMHhEOCwKLSAgICAweDY0LDB4NTksMHgyMywweDUxLDB4MUUsMHgyRSww
eDJBLDB4RkEsMHg4NCwweDU5LDB4MjIsMHg1MSwweENFLDB4RUEsMHhGQSwweDk3LAotICAgIDB4
NjQsMHg1OSwweDIzLDB4NDksMHhGRCwweDhBLDB4Q0EsMHhBQSwweDYzLDB4NTksMHgwMiwweDQ5
LDB4OUUsMHhBQiwweDAyLDB4MEEsCi0gICAgMHg0MywweDUxLDB4MjIsMHg1MSwweDgyLDB4RkYs
MHhGOCwweEQ4LDB4NDMsMHg1OSwweDIyLDB4NDksMHhFQiwweEFELDB4RUIsMHhFRSwKLSAgICAw
eDYzLDB4NTksMHgyMywweDUxLDB4RDUsMHhGNSwweEFGLDB4MEIsMHg4NCwweDYxLDB4NDMsMHg1
OSwweDg3LDB4MjMsMHg4QiwweEFGLAotICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHg0QSwweDgw
LDB4QzAsMHgwMiwweEE0LDB4NjEsMHg2MywweDU5LDB4RkYsMHg1QiwweEYxLDB4ODAsCi0gICAg
MHhBNCwweDYxLDB4NjMsMHg1OSwweEFCLDB4OUQsMHhGRiwweEZBLDB4QTUsMHg2MSwweDQzLDB4
NTksMHgyQSwweDBFLDB4MjgsMHgyOCwKLSAgICAweEE0LDB4NjEsMHg0MywweDU5LDB4RjgsMHg3
RSwweDZFLDB4RUYsMHg2MywweDU5LDB4NDMsMHg1OSwweDYyLDB4MjAsMHgyOCwweDhBLAotICAg
IDB4NjMsMHg1OSwweDIzLDB4NTEsMHhBMCwweEEwLDB4QTgsMHg3NiwweDY0LDB4NTksMHgyMyww
eDUxLDB4NUEsMHhCQSwweEVFLDB4RTksCi0gICAgMHgyMywweDU5LDB4NDMsMHg1MSwweEFBLDB4
REUsMHhGRSwweEFGLDB4NjQsMHg1OSwweDAzLDB4NTEsMHgwQSwweEVBLDB4QkIsMHg1RiwKLSAg
ICAweDg0LDB4NTksMHgwMiwweDUxLDB4QUYsMHhGNywweEZGLDB4RkQsMHhDNSwweDY5LDB4MjMs
MHg1MSwweDBBLDB4RkYsMHg1NSwweDU3LAotICAgIDB4ODcsMHg4MiwweDIzLDB4NTEsMHgyMiww
eDNGLDB4RjUsMHg1NSwweEM4LDB4OEEsMHg2NCwweDU5LDB4MjIsMHg4QSwweDJGLDB4MjUsCi0g
ICAgMHhFQiwweEFCLDB4RTcsMHg4MiwweDJELDB4MkIsMHgwQiwweDBBLDB4RUMsMHhBQiwweDhB
LDB4OUIsMHhGOCwweDY4LDB4NkEsMHg3RSwKLSAgICAweDhBLDB4OUIsMHg2QSwweDlCLDB4QjAs
MHgwQywweDA3LDB4N0YsMHhBQiwweDlCLDB4NEEsMHg5QiwweEZGLDB4N0YsMHhGNiwweEFGLAot
ICAgIDB4QUIsMHg5QiwweDRBLDB4OTMsMHhBQiwweEFGLDB4QkUsMHgyRSwweEFCLDB4QTMsMHg2
QSwweDlCLDB4NkIsMHg2RSwweERBLDB4MDgsCi0gICAgMHhDQywweEEzLDB4MjksMHg5MywweDU3
LDB4RkYsMHhGQSwweEE4LDB4MjksMHg5MywweDY2LDB4NzIsMHg3RSwweDdFLDB4RjgsMHhGOCwK
LSAgICAweDg2LDB4N0EsMHhDNSwweDYxLDB4NUIsMHg3QSwweEY4LDB4RjgsMHhFNiwweDYxLDB4
NDQsMHg0OSwweDVFLDB4RkEsMHhGQSwweDc4LAotICAgIDB4NDQsMHg0OSwweEUyLDB4MzgsMHg3
QSwweDc4LDB4NUEsMHg2RSwweDAzLDB4NDEsMHhBMiwweDMwLDB4RkUsMHhFQiwweENFLDB4QUUs
Ci0gICAgMHgwNCwweDM5LDB4QzIsMHgzOCwweERELDB4RkQsMHhGMywweEFCLDB4MDMsMHgzOSww
eEMyLDB4MzgsMHgyQiwweEJELDB4MzUsMHg5NSwKLSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4
RkYsMHhGRCwweEJGLDB4MEYsMHg2NSwweDQ5LDB4MDMsMHg0MSwweDU3LDB4RkEsMHg3QSwweEUw
LAotICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHgwMiwweDZCLDB4NTgsMHg1QywweDY0LDB4NDks
MHhFMywweDM4LDB4MEEsMHhCRCwweEFGLDB4QkYsCi0gICAgMHg0NCwweDQ5LDB4MjQsMHg0MSww
eDQwLDB4NzgsMHg1NiwweDVBLDB4MjMsMHg0MSwweEMyLDB4MzgsMHhBQSwweDg4LDB4MjgsMHgx
RSwKLSAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4N0IsMHhDMywweDA4LDB4MDMsMHg2NSwweDQ5
LDB4RTMsMHgzOCwweDdGLDB4REIsMHhFRSwweDhBLAotICAgIDB4NDMsMHg0MSwweDA0LDB4NDEs
MHhBQSwweEU5LDB4OEEsMHhBQiwweDQ0LDB4NDEsMHgwMywweDQxLDB4QUEsMHhCQSwweEJGLDB4
NTUsCi0gICAgMHhBNSwweDUxLDB4MjMsMHg0MSwweDAzLDB4MEIsMHgyRCwweEJELDB4QTYsMHg1
MSwweDI0LDB4NDksMHhGOCwweEY4LDB4RUUsMHhERiwKLSAgICAweEE1LDB4NTksMHgyMywweDQ5
LDB4QjcsMHgzNywweDJGLDB4QkYsMHgwNiwweDYyLDB4NDMsMHg0OSwweDdGLDB4N0UsMHg3QSww
eEEyLAotICAgIDB4QTUsMHg1OSwweDIzLDB4NDksMHhENywweERGLDB4N0UsMHhCQywweEU1LDB4
NjEsMHgyNCwweDQ5LDB4M0YsMHhCRCwweEJELDB4RkYsCi0gICAgMHg0NywweDZBLDB4NjQsMHg1
OSwweDhBLDB4MkEsMHgyQiwweDJELDB4MjcsMHg2QSwweEE1LDB4NTksMHg3QSwweEZBLDB4RjAs
MHg3OCwKLSAgICAweEM2LDB4NTksMHgyNCwweDQ5LDB4RkUsMHhGQSwweEU4LDB4NzgsMHg0NCww
eDQ5LDB4QzIsMHgzOCwweDdDLDB4NzAsMHg1MCwweDdBLAotICAgIDB4RTMsMHgzOCwweEEyLDB4
MzAsMHhBRSwweEFBLDB4QUUsMHgyRSwweDIzLDB4MzksMHhFMywweDM4LDB4RDUsMHhFNSwweEFE
LDB4M0IsCi0gICAgMHg0NCwweDQxLDB4RTMsMHgzOCwweEY5LDB4QkYsMHgyRiwweEFFLDB4MjMs
MHg0MSwweDAzLDB4MzksMHg3RiwweDVBLDB4QjAsMHg4MCwKLSAgICAweDQzLDB4NDksMHhFMyww
eDQwLDB4RjcsMHhGRCwweEZFLDB4RTgsMHgwMywweDQxLDB4MjMsMHgzOSwweEUwLDB4QTAsMHhB
QSwweDJDLAotICAgIDB4MjQsMHg0OSwweEUzLDB4NDAsMHhBMiwweDc4LDB4RUEsMHhBQiwweDI0
LDB4NDksMHhFMywweDQwLDB4MDAsMHgyNywweDJCLDB4MEEsCi0gICAgMHg2NCwweDUxLDB4MjMs
MHg0OSwweEY5LDB4QjIsMHhCNywweDI1LDB4NjQsMHg1MSwweDAzLDB4NDEsMHhBRSwweEZCLDB4
OUUsMHhCOCwKLSAgICAweDY1LDB4NTEsMHgyMywweDQxLDB4NUMsMHg3RiwweEFBLDB4QUIsMHg2
NCwweDQ5LDB4MjMsMHg0OSwweEE1LDB4MDUsMHg4NywweEFELAotICAgIDB4QTUsMHg1OSwweDIz
LDB4NDEsMHgyQiwweEFBLDB4RkUsMHg1NiwweEE1LDB4NTEsMHgwMywweDQxLDB4QTgsMHhCRiww
eEZGLDB4NUYsCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweEFCLDB4MEEsMHgwOCwweDgzLDB4
ODUsMHg0OSwweDIzLDB4NDEsMHhERiwweEVCLDB4RTAsMHhFQSwKLSAgICAweDY0LDB4NDksMHgw
MywweDQxLDB4RUEsMHg0QiwweDdBLDB4N0EsMHgyMywweDM5LDB4QzEsMHgzOCwweEE4LDB4N0Es
MHg3QiwweEZBLAotICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHhGRSwweEZFLDB4RkIsMHhBQSww
eDIzLDB4NDEsMHgwMywweDM5LDB4OTUsMHgzRCwweDI5LDB4MEQsCi0gICAgMHg2NCwweDQ5LDB4
MDMsMHg0MSwweDVELDB4RkIsMHhFRSwweDhBLDB4ODUsMHg0OSwweDI0LDB4NDEsMHhGOCwweEFC
LDB4QjksMHhCQiwKLSAgICAweEE1LDB4NDksMHgwMywweDM5LDB4NUYsMHhGNiwweEVFLDB4QTgs
MHg0NCwweDQxLDB4MDMsMHg0MSwweDJGLDB4QkIsMHhCOCwweEJFLAotICAgIDB4NDQsMHg0OSww
eDAzLDB4MzksMHhBQSwweERDLDB4RjQsMHhGRSwweDQ0LDB4NDEsMHgwMywweDQxLDB4QUYsMHgy
RSwweEI4LDB4NTYsCi0gICAgMHg0NCwweDQxLDB4MDIsMHg0MSwweEFBLDB4MEEsMHg4OCwweDJF
LDB4NjQsMHg0OSwweDIzLDB4NDEsMHgyRCwweDBGLDB4MEIsMHgwQSwKLSAgICAweDY0LDB4NDks
MHgyMywweDQxLDB4RDYsMHg3RSwweEYwLDB4QjAsMHg0NCwweDQ5LDB4MDMsMHg0MSwweEFGLDB4
RkYsMHhGRiwweEFDLAotICAgIDB4ODUsMHg1MSwweDAzLDB4MzksMHhBQSwweDhBLDB4QUQsMHhC
NSwweDY0LDB4NDksMHgwMywweDQxLDB4NzgsMHhBMCwweEEwLDB4QTIsCi0gICAgMHg2NCwweDUx
LDB4MjMsMHg0MSwweEY5LDB4M0QsMHhBQSwweDNCLDB4RTYsMHg2MSwweDY0LDB4NTEsMHg4Qiww
eDBGLDB4QTUsMHhENSwKLSAgICAweDQ2LDB4NzIsMHhDNSwweDYxLDB4RjcsMHhCRiwweDhCLDB4
MkQsMHg2NywweDcyLDB4MDUsMHg2MiwweEZFLDB4NjcsMHg3RiwweDJBLAotICAgIDB4ODcsMHg3
MiwweDA1LDB4NkEsMHhFQiwweEFELDB4QUQsMHgwQSwweDY3LDB4NzIsMHhDNSwweDYxLDB4RkUs
MHhGRSwweEJBLDB4NjgsCi0gICAgMHg4NywweDdBLDB4RTUsMHg2MSwweDNGLDB4QUYsMHhCRiww
eEFELDB4QTgsMHg3QSwweDQ2LDB4NzIsMHgyQSwweDlCLDB4RUQsMHhFQiwKLSAgICAweDA5LDB4
OEIsMHg4NywweDdBLDB4MjYsMHgzNiwweDNELDB4RjUsMHg3MiwweEQ1LDB4MkEsMHg4QiwweDJG
LDB4MEQsMHgyRCwweEJELAotICAgIDB4RDQsMHhERCwweDMxLDB4Q0QsMHhDMCwweDc4LDB4N0Es
MHg3QiwweDMxLDB4Q0QsMHhDRiwweEJDLDB4RkEsMHg3OCwweEYyLDB4N0UsCi0gICAgMHhGMCww
eEM0LDB4Q0YsMHhCQywweERBLDB4M0YsMHg1RCwweDdGLDB4MTAsMHhDNSwweENGLDB4QkMsMHgy
RiwweDI1LDB4MTcsMHgwNywKLSAgICAweDMxLDB4Q0QsMHgxMCwweEM1LDB4OEYsMHgxNSwweDM1
LDB4MzUsMHgzMSwweENELDB4MTAsMHhDNSwweDIwLDB4RUUsMHgzQywweEE4LAotICAgIDB4NTEs
MHhDRCwweDExLDB4QzUsMHhBQSwweEFCLDB4QUYsMHg2RSwweEQzLDB4REQsMHgzMSwweEM1LDB4
MEQsMHgwRCwweDI1LDB4QjUsCi0gICAgMHhEMywweERELDB4QUYsMHhCQywweDdDLDB4RjgsMHg1
OCwweDcwLDB4RDAsMHhCQywweDhGLDB4QjQsMHhDOCwweEYyLDB4NkYsMHg1NywKLSAgICAweEFG
LDB4QkMsMHg2RSwweEI0LDB4ODIsMHg3MiwweDdCLDB4RkYsMHhBRiwweEI0LDB4NEQsMHhBQyww
eDgwLDB4NzAsMHg3QSwweEVBLAotICAgIDB4QUYsMHhCQywweDJELDB4QUMsMHhBOCwweEZCLDB4
N0IsMHg3RiwweDhGLDB4QjQsMHgyRCwweEFDLDB4MjIsMHg3QiwweDc3LDB4N0QsCi0gICAgMHg2
RSwweEFDLDB4MEQsMHhBNCwweDI4LDB4MEEsMHhGQiwweDU3LDB4NkUsMHhBQywweDBDLDB4QTQs
MHg2MCwweEZBLDB4N0UsMHg1RCwKLSAgICAweEIwLDB4QjQsMHgwRCwweDlDLDB4RkYsMHhENSww
eEQ1LDB4MEIsMHg3MiwweEM1LDB4MEQsMHg5QywweDVELDB4REQsMHhCRCwweDJBLAotICAgIDB4
OTMsMHhDRCwweDJFLDB4QTQsMHg3NSwweEZELDB4QUEsMHg4OCwweDcyLDB4QzUsMHg0RSwweEFD
LDB4RDUsMHhBQiwweDJBLDB4MjIsCi0gICAgMHg5MywweENELDB4MTEsMHhCRCwweEE1LDB4QUYs
MHgwQSwweDgwLDB4QjMsMHhENSwweDUzLDB4QzUsMHgwQSwweEEyLDB4QTIsMHhGRiwKLSAgICAw
eEQ1LDB4RDUsMHg1MiwweEM1LDB4RTIsMHhERSwweEZGLDB4NUYsMHg3MywweEM1LDB4RjEsMHhC
QywweDhBLDB4QzgsMHhGNiwweDU2LAotICAgIDB4MzIsMHhDNSwweEIwLDB4QjQsMHhFOCwweEVB
LDB4NkEsMHg2QSwweEYxLDB4QjQsMHg2RiwweEFDLDB4RkMsMHhERiwweDU3LDB4NzcsCi0gICAg
MHg4NCwweDYxLDB4NDMsMHg1OSwweEZFLDB4RkMsMHg3OCwweEZELDB4QTUsMHg2MSwweDQzLDB4
NTEsMHhCNywweEFFLDB4NzMsMHhGQSwKLSAgICAweDg0LDB4NTksMHgyMywweDUxLDB4QTIsMHhB
QSwweEFGLDB4REUsMHg2NCwweDU5LDB4MjMsMHg1MSwweEI4LDB4QUUsMHg3RSwweDVGLAotICAg
IDB4NjQsMHg1OSwweDIzLDB4NTEsMHhGQSwweERFLDB4RkYsMHhCRSwweDg0LDB4NTksMHgyMiww
eDUxLDB4RTcsMHhFRiwweEUyLDB4RkUsCi0gICAgMHg4NCwweDU5LDB4NDMsMHg1MSwweDU3LDB4
NUMsMHg3NSwweDU1LDB4NjMsMHg1OSwweDIzLDB4NTEsMHhFRSwweEFBLDB4Q0MsMHhCQiwKLSAg
ICAweDYzLDB4NTksMHgyMywweDUxLDB4QkIsMHhBRiwweEZGLDB4RkQsMHg2MywweDU5LDB4MjMs
MHg1MSwweEQ3LDB4RDYsMHhCQywweDNBLAotICAgIDB4ODQsMHg1OSwweDQzLDB4NTksMHg4NSww
eEI1LDB4RkQsMHhGNiwweEE0LDB4NjEsMHg0MywweDU5LDB4QjUsMHhBRiwweEI3LDB4RDUsCi0g
ICAgMHhBNCwweDYxLDB4NjMsMHg1OSwweEJGLDB4REUsMHhGRiwweDc3LDB4QTQsMHg2MSwweDY0
LDB4NTksMHg4QSwweEVGLDB4RkIsMHhFRCwKLSAgICAweEE0LDB4NjEsMHg0MywweDU5LDB4ODIs
MHhDRSwweEUyLDB4NDIsMHhBNSwweDYxLDB4NDMsMHg1OSwweEZDLDB4NUYsMHg1RSwweDdGLAot
ICAgIDB4NjMsMHg1OSwweDIyLDB4NTEsMHg4MCwweEMwLDB4M0IsMHhCNiwweDg0LDB4NTksMHgy
MywweDUxLDB4RUYsMHhDQSwweEVCLDB4N0EsCi0gICAgMHg0MywweDU5LDB4MjMsMHg1MSwweEYw
LDB4M0YsMHgzOCwweEVBLDB4NjQsMHg1OSwweDIzLDB4NTEsMHhFQiwweEVBLDB4RkEsMHg2RCwK
LSAgICAweDQzLDB4NTksMHgwMywweDUxLDB4QkEsMHg1QSwweDZGLDB4RkYsMHgyMywweDUxLDB4
RTIsMHg0OCwweEJCLDB4RkYsMHgyQiwweDBBLAotICAgIDB4NDQsMHg1MSwweDAyLDB4NDksMHgy
RiwweEFFLDB4N0EsMHhFRiwweDIzLDB4NTEsMHhFMiwweDQ4LDB4QTAsMHg0MCwweEEwLDB4QjAs
Ci0gICAgMHg2MywweDU5LDB4MDMsMHg1MSwweEQ1LDB4RDUsMHhBNywweDM3LDB4QUIsMHhBMyww
eDYzLDB4NTksMHhCNSwweDJELDB4MkQsMHgwQiwKLSAgICAweEVDLDB4QUIsMHg4QSwweDlCLDB4
OEQsMHhFQiwweEEyLDB4RkUsMHhDQywweEEzLDB4NEEsMHg5QiwweEU4LDB4RTIsMHhGRSwweDU2
LAotICAgIDB4QUIsMHhBMywweDZBLDB4OUIsMHg1NywweDdCLDB4RUUsMHhBNywweEFCLDB4QTMs
MHg2QSwweDlCLDB4MkIsMHhGRCwweDdGLDB4RTgsCi0gICAgMHhBQiwweEEzLDB4NkEsMHg5Qiww
eEE2LDB4NzgsMHg3OSwweDZCLDB4Q0MsMHhBMywweDhCLDB4OUIsMHgyRSwweEFBLDB4RDUsMHg1
NSwKLSAgICAweENDLDB4QUIsMHg2QiwweDlCLDB4RTIsMHg2MiwweEZCLDB4RkIsMHg0OSwweDkz
LDB4ODcsMHg3QSwweEZFLDB4NzgsMHhGRSwweDc2LAotICAgIDB4ODYsMHg3QSwweEM1LDB4NjEs
MHg3OCwweDc4LDB4RTAsMHhFMCwweEM1LDB4NjEsMHg0NCwweDUxLDB4RkEsMHhGQywweDdDLDB4
N0MsCi0gICAgMHg2NCwweDUxLDB4MDIsMHg0MSwweDdFLDB4RTAsMHhCQywweEFCLDB4NDQsMHg0
OSwweEUyLDB4MzgsMHg1RiwweEZBLDB4MkEsMHgyMCwKLSAgICAweDQ0LDB4NDksMHhFMywweDM4
LDB4NUQsMHhERiwweDc2LDB4NzgsMHgyMywweDQxLDB4QTEsMHgzMCwweEZGLDB4QkUsMHgyRSww
eDJCLAotICAgIDB4ODUsMHg0OSwweDIzLDB4NDEsMHhBOSwweDM1LDB4QkQsMHhBQiwweEE1LDB4
NDksMHg0NCwweDQ5LDB4N0YsMHhFQywweEZGLDB4NkIsCi0gICAgMHg2NCwweDQ5LDB4RTMsMHgz
OCwweDdFLDB4RkEsMHhGOCwweEVBLDB4MjMsMHg0MSwweEMyLDB4MzgsMHg4QiwweEZCLDB4REEs
MHhCRSwKLSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4QTksMHg4MywweEFELDB4QTUsMHg0NCww
eDQxLDB4MDMsMHg0MSwweDU2LDB4NTYsMHg5RSwweDlFLAotICAgIDB4ODUsMHg1MSwweDIzLDB4
NDEsMHhBRCwweEE1LDB4RUQsMHg3RiwweDQ0LDB4NDksMHhFMiwweDM4LDB4ODgsMHhGRSwweEJG
LDB4QTcsCi0gICAgMHg0NCwweDQxLDB4MDMsMHg0MSwweEVCLDB4QUIsMHgyQiwweDVGLDB4MjMs
MHg0MSwweDAzLDB4MzksMHg3QSwweEY4LDB4M0MsMHgzRSwKLSAgICAweDQ0LDB4NDksMHhFMiww
eDM4LDB4OEIsMHhBQiwweDVBLDB4RjcsMHg0NCwweDQ5LDB4RTIsMHg0MCwweEZDLDB4REQsMHg1
NSwweDU1LAotICAgIDB4NjQsMHg1MSwweEUyLDB4NDAsMHgyQiwweDNELDB4M0QsMHhCRiwweEU2
LDB4NjEsMHg4NSwweDU5LDB4MDIsMHgwMSwweERCLDB4NkQsCi0gICAgMHhBNSwweDU5LDB4MjQs
MHg0OSwweEI4LDB4RTgsMHhCOCwweERBLDB4NjQsMHg1MSwweDIzLDB4NDksMHhFMCwweEEwLDB4
QTIsMHhGRSwKLSAgICAweEM1LDB4NTksMHg0MywweDQ5LDB4MEYsMHhBNSwweEY1LDB4NTcsMHgw
NiwweDZBLDB4NjQsMHg1MSwweEMyLDB4RUEsMHhFRCwweEQ1LAotICAgIDB4QzUsMHg1OSwweDQ0
LDB4NDksMHg1RiwweDU4LDB4NjgsMHhBMiwweDQ0LDB4NDksMHhBMiwweDMwLDB4RkEsMHg1Qyww
eERDLDB4NUMsCi0gICAgMHhFMywweDM4LDB4QTIsMHgzMCwweDJFLDB4QkYsMHhGNywweDdELDB4
MjQsMHgzOSwweEMyLDB4MzAsMHhBQSwweEVELDB4QTEsMHhCMSwKLSAgICAweDIzLDB4NDEsMHhF
MywweDM4LDB4MDgsMHg4MiwweEY2LDB4QkUsMHg0NCwweDQxLDB4MDMsMHg0MSwweERGLDB4MzUs
MHgzNSwweEI1LAotICAgIDB4NjUsMHg0OSwweDI0LDB4NDEsMHhGRiwweEJFLDB4QUUsMHhFNyww
eDQ0LDB4NDksMHgwMywweDQxLDB4RkUsMHhBQSwweDIwLDB4MDAsCi0gICAgMHg2NCwweDQ5LDB4
MjMsMHg0OSwweDVELDB4N0UsMHg1RiwweEZCLDB4NjQsMHg1MSwweDAzLDB4NDEsMHhGNywweEFE
LDB4QTIsMHg4MiwKLSAgICAweEE2LDB4NTksMHg0NCwweDQ5LDB4RjUsMHhCRCwweEFCLDB4MDIs
MHhDNiwweDU5LDB4NjQsMHg1MSwweDU3LDB4REYsMHhGQSwweDZDLAotICAgIDB4QTUsMHg1MSww
eDIzLDB4NDksMHhGRiwweDdBLDB4RjgsMHhGMiwweDQ0LDB4NDksMHgwMywweDQxLDB4MjAsMHg2
QSwweEZBLDB4NzcsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEY4LDB4QUUsMHhFQiwweEY3
LDB4MjMsMHg0MSwweDAzLDB4NDEsMHg2MiwweEEzLDB4QzEsMHhDMiwKLSAgICAweDQ0LDB4NDks
MHhFMiwweDM4LDB4MDIsMHgwRiwweDJGLDB4QjcsMHg4NCwweDQ5LDB4NDQsMHg0OSwweDdELDB4
NEYsMHhERCwweDU3LAotICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHg2RSwweDM2LDB4QkEsMHhG
RSwweDQzLDB4NDEsMHgwMywweDQxLDB4NUQsMHg1NiwweERFLDB4NUYsCi0gICAgMHgyMywweDQx
LDB4RTMsMHgzOCwweDM3LDB4QkEsMHhBMiwweEEyLDB4MjQsMHg0MSwweEUzLDB4MzgsMHgwQSww
eDJCLDB4QkQsMHhGRiwKLSAgICAweDY0LDB4NDksMHgwMywweDM5LDB4Q0EsMHhFQiwweEFGLDB4
QkQsMHg4NSwweDQ5LDB4NDQsMHg0OSwweEQ3LDB4M0QsMHhCNywweEJELAotICAgIDB4QTUsMHg1
MSwweDY0LDB4NDksMHhCNiwweEFGLDB4MkIsMHgyQSwweDg1LDB4NDksMHgyMywweDQxLDB4NTcs
MHhGNywweDdDLDB4RTAsCi0gICAgMHg0MywweDQxLDB4MDMsMHgzOSwweDc4LDB4NTcsMHg1NSww
eEY2LDB4MjMsMHg0MSwweDAzLDB4MzksMHhERiwweDM1LDB4QTUsMHg3RCwKLSAgICAweDY0LDB4
NDksMHgwMywweDM5LDB4QTcsMHgyQiwweDJGLDB4MkQsMHhBNSwweDQ5LDB4NDQsMHg0OSwweEFG
LDB4RkYsMHhCRCwweDNGLAotICAgIDB4ODUsMHg1MSwweDQ0LDB4NDksMHhBNiwweEJGLDB4RkYs
MHg2RSwweEE1LDB4NTEsMHg0NCwweDQ5LDB4REYsMHhFRiwweEZGLDB4OTUsCi0gICAgMHg4NSww
eDUxLDB4MjMsMHg0MSwweEQ1LDB4RkIsMHhGOCwweDAwLDB4ODUsMHg1MSwweDIzLDB4NDEsMHhC
RiwweEQ1LDB4NUYsMHhEQywKLSAgICAweDY0LDB4NTEsMHg0NCwweDQ5LDB4QTIsMHg3RCwweEQ1
LDB4NTUsMHg2NCwweDUxLDB4NDQsMHg0OSwweDMwLDB4MzIsMHgzRSwweDMyLAotICAgIDB4MDYs
MHg2QSwweDQ0LDB4NTEsMHgwQiwweEFGLDB4RkYsMHhGNSwweDg4LDB4NzIsMHg4NSwweDU5LDB4
QUEsMHgwQSwweEJGLDB4RjUsCi0gICAgMHhBOCwweDdBLDB4MDYsMHg2QSwweDg4LDB4ODAsMHhB
QiwweEE5LDB4ODcsMHg3MiwweDI2LDB4NkEsMHg3OCwweEI4LDB4MkYsMHhBRSwKLSAgICAweDg4
LDB4N0EsMHgwNSwweDYyLDB4QkQsMHhBRiwweDA4LDB4MDIsMHhDOCwweDgyLDB4ODgsMHg3QSww
eEQ1LDB4MUQsMHgzNSwweEZGLAotICAgIDB4RTksMHg4MiwweDg3LDB4N0EsMHg5NywweEJFLDB4
OEEsMHhBQiwweDRFLDB4QjQsMHhDOCwweDgyLDB4MkQsMHgzRCwweEJELDB4MzUsCi0gICAgMHhC
MywweEQ1LDB4QUYsMHhCQywweEEyLDB4RTMsMHhBOSwweDg5LDB4MzEsMHhDRCwweEQwLDB4QkMs
MHg3RSwweERFLDB4N0UsMHhGOCwKLSAgICAweEYwLDB4QzQsMHhBRiwweEJDLDB4RkUsMHhFQSww
eEZCLDB4RkYsMHgxMCwweEM1LDB4QjAsMHhCQywweEFCLDB4QUYsMHhBOSwweDNCLAotICAgIDB4
MzEsMHhDRCwweEYwLDB4QzQsMHhBNSwweEU1LDB4QUYsMHhBRiwweDUxLDB4Q0QsMHgxMCwweEM1
LDB4N0YsMHg2RCwweENCLDB4OEYsCi0gICAgMHg1MSwweENELDB4RjAsMHhDNCwweEE4LDB4QUUs
MHhCNywweEFBLDB4OTIsMHhDRCwweEYwLDB4QzQsMHgyNywweEJGLDB4RkQsMHg3RSwKLSAgICAw
eEQzLDB4REQsMHg2RiwweEI0LDB4RjAsMHg2QSwweDdFLDB4N0YsMHg4RiwweEI0LDB4MkQsMHhB
QywweDBBLDB4QzAsMHg2RSwweEZGLAotICAgIDB4OEYsMHhCNCwweDJELDB4QUMsMHg4MCwweEFC
LDB4NkYsMHg3RiwweDZFLDB4QUMsMHgyRCwweEFDLDB4MzAsMHg3RSwweDc1LDB4N0QsCi0gICAg
MHg2RiwweEFDLDB4MEQsMHhBNCwweEE4LDB4REYsMHhERCwweDVELDB4NkUsMHhCNCwweEVELDB4
OUIsMHhFQSwweEVCLDB4RkQsMHgyRiwKLSAgICAweDczLDB4Q0QsMHgwRCwweEE0LDB4NTUsMHg1
NSwweEY1LDB4MkIsMHg3MywweENELDB4MkQsMHhBNCwweEQ1LDB4MzUsMHgwQiwweDAwLAotICAg
IDB4QjMsMHhDRCwweEYwLDB4QkMsMHhCNSwweEFCLDB4MkEsMHhBMCwweDkzLDB4Q0QsMHg1Miww
eEM1LDB4MjMsMHhDMiwweEYyLDB4N0QsCi0gICAgMHg5MywweENELDB4MTEsMHhCRCwweEEwLDB4
RTAsMHg3QiwweERCLDB4NzMsMHhDRCwweDExLDB4QkQsMHgyRiwweEFGLDB4MkYsMHgwRCwKLSAg
ICAweEI0LDB4RDUsMHg1MiwweEM1LDB4NkEsMHhDMywweDhCLDB4QTIsMHg3MywweENELDB4QjAs
MHhCNCwweEE4LDB4RDgsMHg3OCwweEU4LAotICAgIDB4MzIsMHhDNSwweDhGLDB4QUMsMHgwMCww
eDhBLDB4RjksMHg1NSwweDMyLDB4QkQsMHhEMCwweEI0LDB4NzQsMHhGNywweEJCLDB4QTksCi0g
ICAgMHgxMSwweEJELDB4OTAsMHhBQywweEVCLDB4RkEsMHg2QywweEZFLDB4QjAsMHhCNCwweDZG
LDB4QUMsMHhCQSwweEY3LDB4QUYsMHhCQiwKLSAgICAweDYzLDB4NTksMHgwMiwweDQ5LDB4MEEs
MHg3OCwweDAyLDB4MDgsMHg4NCwweDU5LDB4NDMsMHg1MSwweDdCLDB4NUEsMHg3MiwweDVFLAot
ICAgIDB4NDMsMHg1MSwweDAzLDB4NTEsMHg5OCwweDNBLDB4MjIsMHgyQSwweDY0LDB4NTksMHgw
MiwweDQ5LDB4RkMsMHhERSwweEJBLDB4RjcsCi0gICAgMHg0MywweDUxLDB4RTMsMHg0OCwweDAw
LDB4ODAsMHhBQSwweENBLDB4NDMsMHg1MSwweDIzLDB4NTEsMHhFMCwweEMyLDB4MTksMHgyQiwK
LSAgICAweDYzLDB4NTEsMHgyMywweDUxLDB4RkEsMHhGOCwweEFFLDB4NzMsMHg2NCwweDU5LDB4
MjMsMHg1MSwweEJGLDB4RjYsMHhGRSwweDU3LAotICAgIDB4NjMsMHg1OSwweDAzLDB4NTEsMHhC
RSwweERGLDB4QkYsMHgyOCwweDg0LDB4NjEsMHg0MywweDU5LDB4MEQsMHg3QiwweEZCLDB4RkIs
Ci0gICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweEZDLDB4RkUsMHhCRiwweEZGLDB4ODQsMHg2MSww
eDQzLDB4NTksMHhFRiwweEJELDB4QkIsMHhFRiwKLSAgICAweDgzLDB4NjEsMHg2NCwweDU5LDB4
RkQsMHhGRiwweDVCLDB4N0YsMHhBNCwweDYxLDB4NDMsMHg1OSwweEFELDB4QUIsMHhGMiwweEJC
LAotICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHhGMCwweDVELDB4N0YsMHg3RiwweDYzLDB4NTks
MHgyMywweDUxLDB4OEUsMHhBRiwweDIyLDB4MjIsCi0gICAgMHg2MywweDU5LDB4MjIsMHg1MSww
eEYyLDB4ODAsMHhDMCwweEFGLDB4NDMsMHg1OSwweDAzLDB4NTEsMHg4MCwweEVBLDB4QUUsMHgw
MCwKLSAgICAweDY0LDB4NTksMHgwMywweDUxLDB4QUEsMHhBQSwweDZBLDB4RTgsMHg2NCwweDU5
LDB4MDMsMHg1MSwweEUzLDB4RUEsMHhGRiwweDdGLAotICAgIDB4MjMsMHg1MSwweEUyLDB4NDgs
MHg4OCwweEU4LDB4N0EsMHhGQSwweDQzLDB4NTEsMHgwMiwweDQ5LDB4MjUsMHhEOSwweEQzLDB4
RkQsCi0gICAgMHgyMywweDUxLDB4MDIsMHg0OSwweDg4LDB4QjIsMHgyOCwweEE0LDB4MjMsMHg1
MSwweDAzLDB4NDksMHhDMiwweEIyLDB4RTIsMHgwMiwKLSAgICAweDI5LDB4OTMsMHg0MywweDU5
LDB4RDUsMHhENSwweEI1LDB4MkQsMHhFQywweEFCLDB4QzcsMHg4QSwweDJELDB4MjksMHgwQSww
eDIyLAotICAgIDB4Q0MsMHhBMywweDZBLDB4OUIsMHhBMCwweEI4LDB4NkMsMHg1RSwweDZBLDB4
OUIsMHg0QSwweDkzLDB4NjQsMHgxNCwweEU1LDB4MjIsCi0gICAgMHg4QSwweDlCLDB4NDksMHg5
MywweDM1LDB4RUQsMHhGRiwweDdFLDB4OEIsMHg5QiwweDZBLDB4OUIsMHgwMiwweEJGLDB4N0Qs
MHg1NSwKLSAgICAweDhCLDB4OUIsMHg0QSwweDlCLDB4MDAsMHhBQSwweEFGLDB4QkYsMHg4Qiww
eDlCLDB4NkEsMHg5QiwweDIyLDB4MkEsMHhENywweDI3LAotICAgIDB4QUMsMHhBMywweDA5LDB4
OEIsMHhFMCwweEFBLDB4RjAsMHg1QywweEU4LDB4OEEsMHhBNywweDdBLDB4N0MsMHg1NCwweEU0
LDB4RjQsCi0gICAgMHhDNywweDgyLDB4NDYsMHg3MiwweDZFLDB4NkMsMHg3OCwweEU4LDB4NDYs
MHg3MiwweDQ0LDB4NTEsMHg3NiwweDVFLDB4N0EsMHhFMCwKLSAgICAweDY0LDB4NDksMHgwMyww
eDQ5LDB4QTgsMHhERiwweEZGLDB4RDYsMHg0MywweDQ5LDB4MDMsMHg0MSwweDAwLDB4OEEsMHgy
OSwweEFGLAotICAgIDB4NDMsMHg0OSwweEUzLDB4MzgsMHg3QSwweDdFLDB4RkUsMHhFMiwweDI1
LDB4NDEsMHhFMywweDQwLDB4MzUsMHg5NSwweEI1LDB4RkYsCi0gICAgMHg4NCwweDUxLDB4MjQs
MHg0MSwweEFCLDB4QjksMHgyRCwweDk5LDB4QTUsMHg1MSwweDQ0LDB4NDksMHg2QSwweDYyLDB4
RTMsMHhFQSwKLSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4RkUsMHhGQywweEZFLDB4NUUsMHg0
NCwweDQ5LDB4RTMsMHgzOCwweEQ2LDB4RkUsMHhCRSwweDNGLAotICAgIDB4NDQsMHg0OSwweDI0
LDB4NDEsMHhGNSwweDc2LDB4NzgsMHg2OCwweDIzLDB4NDEsMHhFMywweDM4LDB4QTgsMHhCOCww
eDhFLDB4QjgsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweDdGLDB4N0QsMHhCRCwweEVBLDB4
MjMsMHg0MSwweEUyLDB4MzgsMHhCOCwweEJBLDB4RDgsMHg1RSwKLSAgICAweDQ0LDB4NDEsMHhF
MywweDM4LDB4RkEsMHhGRSwweEVGLDB4M0YsMHg0NCwweDQxLDB4RTIsMHg0MCwweEVGLDB4Rjcs
MHhBQiwweEE4LAotICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHhENywweDdGLDB4RUEsMHhGQSww
eEUzLDB4NDAsMHgwMywweDM5LDB4QUEsMHg4QiwweEFGLDB4RkIsCi0gICAgMHg4NSwweDUxLDB4
RTMsMHg0MCwweEJELDB4MkQsMHgyRiwweDJGLDB4RTYsMHg2MSwweDg0LDB4NTEsMHg4RCwweEFE
LDB4QUYsMHhBMywKLSAgICAweDg1LDB4NTksMHhFMywweDQwLDB4RjgsMHhEOCwweDc4LDB4Qjgs
MHg0NCwweDUxLDB4RTMsMHg0MCwweDBBLDB4MEIsMHhCRiwweEY3LAotICAgIDB4NjQsMHg1MSww
eDAzLDB4NDksMHhBMiwweEEwLDB4QTksMHgzNSwweDY0LDB4NTEsMHgyMywweDQ5LDB4MEEsMHgw
RiwweDI3LDB4RTUsCi0gICAgMHhBNSwweDU5LDB4NDQsMHg0OSwweDhBLDB4QTMsMHg4RiwweEFE
LDB4NjUsMHg0OSwweEEyLDB4MzAsMHg1QywweDVDLDB4NzgsMHhGOCwKLSAgICAweEMzLDB4MzAs
MHhBMiwweDMwLDB4RUYsMHhCQSwweEIwLDB4QzAsMHgwMywweDM5LDB4QTIsMHgyOCwweDJELDB4
QUYsMHhGNywweEE3LAotICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHhGQSwweDNELDB4REQsMHg3
RCwweDAzLDB4MzksMHhBMiwweDMwLDB4MDAsMHg4OCwweEE4LDB4QTcsCi0gICAgMHg2NSwweDQ5
LDB4MDMsMHgzOSwweEFELDB4QUQsMHhBRCwweDBELDB4NjQsMHg1MSwweDIzLDB4NDksMHhFQSww
eEEyLDB4NkIsMHg3QSwKLSAgICAweDY0LDB4NTEsMHg0NCwweDQ5LDB4M0QsMHhBMSwweDAyLDB4
MDEsMHg4NSwweDU5LDB4NjQsMHg1MSwweDY5LDB4QjksMHhBQiwweDBBLAotICAgIDB4QTUsMHg1
OSwweDQ0LDB4NTEsMHhBOCwweDI4LDB4QUEsMHhCNiwweEM2LDB4NTksMHg4NSwweDUxLDB4NUEs
MHg2MywweERGLDB4RDcsCi0gICAgMHg4NSwweDUxLDB4MjMsMHg0OSwweEY4LDB4NUEsMHg3Qyww
eDVDLDB4MjQsMHg0MSwweDAyLDB4NDEsMHhCQiwweDNGLDB4MEIsMHgwMCwKLSAgICAweDQ0LDB4
NDksMHgwMywweDQxLDB4RkQsMHhFMiwweENBLDB4RTgsMHg0NCwweDQxLDB4RTIsMHgzOCwweEUy
LDB4RUIsMHhGQiwweDVFLAotICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHgyQiwweEI5LDB4QkYs
MHhCOSwweDQ0LDB4NDEsMHgwMywweDQxLDB4MkEsMHhCNywweEFGLDB4RkIsCi0gICAgMHgyMyww
eDQxLDB4MDMsMHg0MSwweDI4LDB4MDgsMHhDMCwweDdCLDB4MjMsMHg0MSwweDAzLDB4MzksMHhG
RCwweENCLDB4QjIsMHhFMywKLSAgICAweDIzLDB4NDEsMHhDMiwweDMwLDB4QjgsMHhGQywweEY4
LDB4QUEsMHgwMywweDQxLDB4QzIsMHgzOCwweEEwLDB4QUUsMHhGQSwweDczLAotICAgIDB4MjQs
MHg0MSwweEUzLDB4MzgsMHhBQiwweEZGLDB4QjksMHhCNSwweDY0LDB4NDksMHgwMywweDM5LDB4
MEIsMHhCRiwweEJELDB4QjUsCi0gICAgMHg4NCwweDQ5LDB4MjMsMHg0MSwweDMyLDB4QkQsMHhF
QSwweEZBLDB4ODUsMHg0OSwweDIzLDB4NDEsMHg4MCwweEVBLDB4REYsMHg1NSwKLSAgICAweDQ0
LDB4NDEsMHgwMywweDQxLDB4QTgsMHhBMCwweEUyLDB4N0MsMHg0NCwweDQ5LDB4RTIsMHgzOCww
eEVBLDB4QTIsMHhCMCwweDlGLAotICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHgzNSwweEQ1LDB4
NTcsMHg1RiwweDY0LDB4NDksMHgwMiwweDM5LDB4MDAsMHgzQiwweEJCLDB4QkQsCi0gICAgMHg4
NSwweDQ5LDB4MDMsMHg0MSwweDY4LDB4N0EsMHhCRSwweEY3LDB4NjQsMHg0OSwweDAzLDB4NDEs
MHgyRiwweDNELDB4QUEsMHgwQSwKLSAgICAweEE1LDB4NTEsMHg0NCwweDQ5LDB4OEEsMHhGRiww
eEY1LDB4NUYsMHhBNSwweDUxLDB4MjMsMHg0OSwweERDLDB4QTgsMHhBMiwweDBBLAotICAgIDB4
QTUsMHg1OSwweDIzLDB4NDksMHhERiwweEZCLDB4RkEsMHgyQywweDg1LDB4NTEsMHg0NCwweDQ5
LDB4QUIsMHhCRiwweDlFLDB4RUMsCi0gICAgMHhBNSwweDU5LDB4NDQsMHg1MSwweEI1LDB4QkYs
MHhBQiwweEZCLDB4QTUsMHg1OSwweDY0LDB4NTEsMHhBQiwweEZGLDB4OTYsMHhGNSwKLSAgICAw
eDA2LDB4NkEsMHg2NCwweDU5LDB4MjMsMHgzRiwweEJGLDB4QkIsMHg2NywweDcyLDB4RTYsMHg2
MSwweDAwLDB4MDMsMHg4RCwweEY1LAotICAgIDB4QTgsMHg3QSwweDA2LDB4NkEsMHgwQSwweEZC
LDB4RkYsMHhENSwweEM5LDB4ODIsMHg0NiwweDZBLDB4QTIsMHg4MiwweEFGLDB4QjUsCi0gICAg
MHhFOSwweDgyLDB4ODgsMHg3QSwweDNGLDB4QjUsMHhBRiwweEJBLDB4MEQsMHhBQywweEM4LDB4
ODIsMHgzNSwweDM1LDB4RkQsMHg5NSwKLSAgICAweEIzLDB4REQsMHgwQywweEE0LDB4OEEsMHgw
MywweDA5LDB4MEQsMHg3MiwweEQ1LDB4Q0YsMHhCQywweDdFLDB4NUMsMHg3OCwweDc4LAotICAg
IDB4Q0YsMHhCQywweEFGLDB4QkMsMHg5OCwweEJDLDB4QkIsMHhENywweEYwLDB4QzQsMHhBRiww
eEJDLDB4MkIsMHhBQiwweEFGLDB4QTUsCi0gICAgMHgxMCwweEM1LDB4Q0YsMHhCQywweDJBLDB4
MEIsMHgzQiwweEZGLDB4MzEsMHhDRCwweEYwLDB4QzQsMHhBOCwweDhBLDB4Q0YsMHg3NSwKLSAg
ICAweDMxLDB4Q0QsMHhEMCwweEJDLDB4MDIsMHg4MCwweEE4LDB4QUQsMHgzMSwweENELDB4QUYs
MHhCQywweEUwLDB4RkEsMHg2QSwweDZBLAotICAgIDB4RDAsMHhCQywweDJFLDB4QUMsMHg2OCww
eDc4LDB4NUUsMHhERiwweDRFLDB4QUMsMHgwRCwweEE0LDB4QUIsMHhCRiwweDdGLDB4RUYsCi0g
ICAgMHg0RSwweEFDLDB4MEQsMHhBNCwweEVBLDB4Q0IsMHhBOSwweEJFLDB4RjAsMHhCQywweDJE
LDB4QTQsMHg3NSwweEE5LDB4MkYsMHgwQiwKLSAgICAweDkzLDB4RDUsMHg0RSwweEFDLDB4NTUs
MHhCRiwweDBBLDB4MEEsMHhCMywweEQ1LDB4NkYsMHhCNCwweEQ1LDB4QUEsMHgyMCwweDAwLAot
ICAgIDB4QjQsMHhENSwweDExLDB4QzUsMHgyOSwweDBBLDB4MDAsMHgwMCwweEI0LDB4RDUsMHg3
MywweENELDB4MjIsMHgwQSwweDA0LDB4RDYsCi0gICAgMHhENCwweEQ1LDB4MzIsMHhDNSwweDc4
LDB4NTgsMHg3QywweDU4LDB4NTIsMHhDNSwweDEyLDB4QkQsMHgwMiwweDZCLDB4NzUsMHg1RCwK
LSAgICAweDMyLDB4QkQsMHhCMCwweEFDLDB4QTAsMHhCQSwweEFFLDB4NzcsMHg5MywweENELDB4
MTEsMHhCRCwweDNELDB4MkYsMHgwRCwweDA5LAotICAgIDB4OTMsMHhDRCwweDMyLDB4QzUsMHg4
MCwweDgwLDB4ODAsMHg2MCwweDkzLDB4Q0QsMHhCMCwweEI0LDB4RTgsMHhFQSwweEZFLDB4NUYs
Ci0gICAgMHhGMCwweEJDLDB4OEYsMHhBQywweDlBLDB4QTgsMHhGQSwweEFGLDB4MTEsMHhCRCww
eEIwLDB4QUMsMHgwMiwweEMwLDB4RkEsMHg3QywKLSAgICAweEQwLDB4QjQsMHg2RSwweEFDLDB4
RTIsMHhFQywweEZFLDB4REYsMHhEMCwweEI0LDB4OEYsMHhBQywweEQ1LDB4REYsMHhFOSwweDNG
LAotICAgIDB4ODQsMHg1OSwweDIzLDB4NTEsMHhBOCwweEVFLDB4NUIsMHg1NiwweDYzLDB4NTEs
MHgyMywweDUxLDB4RjgsMHg5NSwweDk1LDB4QTUsCi0gICAgMHg2NCwweDU5LDB4MDIsMHg0OSww
eEVBLDB4NkEsMHg3QywweEZBLDB4NjQsMHg1OSwweDAyLDB4NDksMHhCRCwweDIyLDB4RUUsMHhF
QSwKLSAgICAweDY0LDB4NTEsMHgwMywweDUxLDB4RUYsMHg3QSwweEU3LDB4QUYsMHg2NCwweDU5
LDB4MjMsMHg1MSwweEJGLDB4Q0IsMHhCQiwweEZBLAotICAgIDB4NjMsMHg1OSwweDIzLDB4NTEs
MHg3RiwweEZELDB4QUYsMHhCMywweDYzLDB4NTksMHgyMywweDUxLDB4N0YsMHhGRCwweDhCLDB4
OEIsCi0gICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweEE5LDB4MkYsMHgyQSwweEVBLDB4ODQsMHg2
MSwweDQzLDB4NTksMHhGOCwweDdDLDB4NzgsMHhFMywKLSAgICAweDg0LDB4NjEsMHg0MywweDU5
LDB4QUQsMHhCNSwweDlGLDB4RDUsMHg4NCwweDYxLDB4NjMsMHg1OSwweEExLDB4QUUsMHg1NSww
eDg1LAotICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHhDQSwweEFBLDB4RUEsMHhGRiwweDYzLDB4
NTksMHgyMywweDUxLDB4ODMsMHhBRiwweEI0LDB4MEUsCi0gICAgMHg2MywweDU5LDB4MjIsMHg1
OSwweDgwLDB4ODIsMHgzRSwweEVFLDB4NjMsMHg1OSwweDIzLDB4NTEsMHhBMiwweEVFLDB4RUIs
MHhFRiwKLSAgICAweDQzLDB4NTksMHgwMiwweDUxLDB4QTAsMHgzRSwweDNGLDB4RjgsMHg2NCww
eDU5LDB4MjMsMHg1MSwweEVBLDB4RjIsMHhGMiwweEZCLAotICAgIDB4NDMsMHg1OSwweEUyLDB4
NDgsMHhCMCwweDdBLDB4RkUsMHhBQSwweDIzLDB4NTEsMHhFMiwweDQ4LDB4NjIsMHhFQiwweEFG
LDB4QUEsCi0gICAgMHgyMywweDUxLDB4RTIsMHg0OCwweDM3LDB4OEEsMHg4MiwweDAyLDB4MjMs
MHg1MSwweEUyLDB4NDgsMHhFOCwweEYwLDB4NkIsMHgyRSwKLSAgICAweDIzLDB4NTEsMHhFMiww
eDQ4LDB4M0IsMHhGRCwweEY1LDB4QkYsMHhBNSwweDY5LDB4RTIsMHg0OCwweERGLDB4QkYsMHhC
RiwweDJGLAotICAgIDB4OEIsMHg5QiwweDQ0LDB4NTksMHgyRCwweDJCLDB4MEIsMHgwMiwweEND
LDB4QTMsMHg4QiwweDlCLDB4MkIsMHg2MiwweEZBLDB4REUsCi0gICAgMHhBQywweEEzLDB4NkEs
MHg5QiwweEVDLDB4QTksMHgyQSwweEJBLDB4OEIsMHg5QiwweDI5LDB4OTMsMHgyQSwweDIyLDB4
QzgsMHg3QywKLSAgICAweDhBLDB4OUIsMHgyOSwweDkzLDB4RTAsMHhFMCwweEVFLDB4REQsMHg0
OSwweDkzLDB4MDksMHg5MywweDgwLDB4OEEsMHhBOCwweEZGLAotICAgIDB4NkEsMHg5QiwweDI5
LDB4OTMsMHgwQSwweDhGLDB4RjgsMHhFRCwweDhCLDB4OUIsMHg0QSwweDkzLDB4QjgsMHhCQiww
eEFGLDB4QUYsCi0gICAgMHg2QSwweDlCLDB4RTgsMHg4QSwweDc4LDB4RTAsMHg2OCwweDYwLDB4
QzgsMHg4MiwweDg3LDB4N0EsMHhCQywweEE4LDB4QTAsMHg4MywKLSAgICAweEU4LDB4ODIsMHhB
NywweDdBLDB4REYsMHg4RiwweDBGLDB4QTUsMHhDOCwweDgyLDB4QTUsMHg2MSwweDdBLDB4Rjgs
MHhFMCwweEE4LAotICAgIDB4RTYsMHg2MSwweDAzLDB4NDEsMHg1NywweDU2LDB4NTgsMHg3OCww
eDIzLDB4NDksMHhFMywweDQwLDB4QUEsMHgzRSwweEZBLDB4RTAsCi0gICAgMHg2NCwweDUxLDB4
MDMsMHg0MSwweEZGLDB4RkYsMHgzNSwweEI1LDB4NjQsMHg1MSwweDAzLDB4NDEsMHg1NSwweEZG
LDB4RUEsMHhDMiwKLSAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4MkEsMHhGRiwweDcyLDB4RUEs
MHg2NCwweDQ5LDB4MDMsMHg0MSwweDAzLDB4QUYsMHhFRiwweEY1LAotICAgIDB4NjUsMHg0OSww
eEUzLDB4MzgsMHhGQywweDVFLDB4N0YsMHg2RiwweDQ0LDB4NDksMHhFMiwweDM4LDB4MzcsMHhC
NSwweDc1LDB4NTUsCi0gICAgMHg2NSwweDQ5LDB4RTIsMHgzOCwweDJBLDB4MEEsMHhBOSwweEFE
LDB4NjQsMHg0OSwweDIzLDB4NDEsMHg1QywweERGLDB4MjcsMHhDQiwKLSAgICAweDY0LDB4NDks
MHgwMiwweDQxLDB4RkIsMHhGQiwweDdBLDB4Q0UsMHgyMywweDQxLDB4QzIsMHgzOCwweDdDLDB4
QjgsMHhCQSwweEVGLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHgwQSwweDJCLDB4QUYsMHhC
RSwweDQzLDB4NDksMHhFMywweDM4LDB4QjgsMHhGRiwweEVELDB4RkYsCi0gICAgMHgyMywweDQx
LDB4RTIsMHgzOCwweEFBLDB4MzgsMHhCRiwweERFLDB4MjQsMHg0MSwweEUzLDB4MzgsMHhCNyww
eDM3LDB4MDcsMHhBOCwKLSAgICAweDg1LDB4NTEsMHgyNCwweDQ5LDB4MjcsMHgwQiwweDJCLDB4
QkYsMHhFNiwweDYxLDB4ODUsMHg1OSwweDJBLDB4MjIsMHg4OCwweEJELAotICAgIDB4RTYsMHg2
MSwweDQ0LDB4NTEsMHg1QywweDc4LDB4RTAsMHhGRSwweDg1LDB4NTEsMHgwNCwweDQ5LDB4REQs
MHhBQiwweEFBLDB4MDgsCi0gICAgMHg2NCwweDUxLDB4MjQsMHg0OSwweEU3LDB4QUEsMHgyOCww
eEU4LDB4ODUsMHg1MSwweDIzLDB4NDksMHhFNSwweDJFLDB4MkEsMHgwQiwKLSAgICAweEE1LDB4
NTEsMHgyMywweDQ5LDB4QkYsMHhGRSwweERDLDB4N0EsMHg0NCwweDQ5LDB4QzMsMHgzOCwweDc4
LDB4NTgsMHg1RSwweDVFLAotICAgIDB4QzMsMHgzMCwweEEyLDB4MzAsMHg4QywweDQ4LDB4N0Us
MHhERCwweEMyLDB4MzAsMHhBMiwweDI4LDB4ODIsMHg4QSwweDk1LDB4MkUsCi0gICAgMHhFMyww
eDM4LDB4QzIsMHgzMCwweDQxLDB4NDEsMHhERiwweEI2LDB4MDMsMHg0MSwweEEyLDB4MzAsMHhB
RCwweEJFLDB4MkYsMHgyRiwKLSAgICAweDY0LDB4NTEsMHgwMywweDM5LDB4MkQsMHhCRCwweDBG
LDB4MkIsMHg2NCwweDUxLDB4MjQsMHg0OSwweEVBLDB4NjAsMHhGQywweDdBLAotICAgIDB4ODUs
MHg1MSwweDIzLDB4NDksMHgyOSwweDA5LDB4QkQsMHgzRiwweEE1LDB4NTksMHg0NCwweDUxLDB4
QUEsMHhBMywweDZFLDB4NkYsCi0gICAgMHg4NSwweDU5LDB4MjQsMHg0OSwweDJBLDB4QUEsMHhB
QSwweDVCLDB4ODUsMHg1MSwweDQ0LDB4NDksMHhCQSwweEYyLDB4RTAsMHg1MSwKLSAgICAweDg1
LDB4NTEsMHgwMywweDQxLDB4RjgsMHhGQSwweDdFLDB4NUYsMHgyMywweDQxLDB4MDMsMHg0MSww
eDJFLDB4ODgsMHgwMCwweDMwLAotICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHhBMCwweEU4LDB4
RkEsMHg3RiwweDQ0LDB4NDEsMHhFMiwweDM4LDB4N0EsMHg3MywweEY1LDB4RDUsCi0gICAgMHgy
MywweDQxLDB4RTIsMHgzOCwweDE1LDB4RDUsMHhCNywweERCLDB4MjMsMHg0MSwweEUyLDB4Mzgs
MHhBMiwweDg4LDB4RTMsMHhBQiwKLSAgICAweDQ0LDB4NDksMHhFMiwweDM4LDB4RjcsMHg3Nyww
eEFFLDB4MjIsMHg0NCwweDQ5LDB4MDMsMHgzOSwweEQ1LDB4RjUsMHhGRSwweEQ4LAotICAgIDB4
MjMsMHg0MSwweDAzLDB4MzksMHg3NiwweDM4LDB4MDAsMHgwQiwweDIzLDB4NDEsMHhFMiwweDM4
LDB4RkQsMHhFMCwweEUwLDB4ODAsCi0gICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDE3LDB4RkUs
MHhEQSwweDNGLDB4NDQsMHg0MSwweDAzLDB4NDEsMHgyNywweDA5LDB4MjcsMHg5RiwKLSAgICAw
eDQ0LDB4NDEsMHgyMywweDQxLDB4NzIsMHhFMCwweDA4LDB4RTAsMHg0NCwweDQxLDB4MDMsMHgz
OSwweEZBLDB4N0EsMHg3RSwweDVGLAotICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHhGRSwweEQ1
LDB4NTUsMHhERCwweDIzLDB4NDEsMHhDMiwweDMwLDB4M0EsMHhBQSwweERBLDB4RjgsCi0gICAg
MHg0MywweDQxLDB4MDMsMHgzOSwweDdBLDB4RkIsMHhGNSwweDdELDB4NDMsMHg0MSwweDAzLDB4
MzksMHgyOSwweEVGLDB4RUIsMHhGOSwKLSAgICAweDIzLDB4NDEsMHgwMywweDQxLDB4MDgsMHhG
NywweEZFLDB4RkEsMHg2NCwweDQ5LDB4MDMsMHg0MSwweDAyLDB4MjksMHhGRCwweDU1LAotICAg
IDB4ODUsMHg1MSwweDIzLDB4NDEsMHhGQSwweEUyLDB4QTMsMHhBOSwweDg1LDB4NTEsMHgyNCww
eDQ5LDB4QUYsMHhCNSwweEJFLDB4QkEsCi0gICAgMHhBNSwweDUxLDB4MjQsMHg0OSwweDhBLDB4
QUEsMHhFQiwweERGLDB4QTUsMHg1OSwweDQ0LDB4NDksMHhGQSwweEEyLDB4MkIsMHhBRCwKLSAg
ICAweEU2LDB4NjEsMHg2NCwweDUxLDB4RDcsMHhGRSwweDNGLDB4MkEsMHgyNywweDZBLDB4NjQs
MHg1MSwweEQ1LDB4RkYsMHgzRiwweDBBLAotICAgIDB4MjYsMHg2QSwweDg0LDB4NTksMHhCRCww
eEZCLDB4RUMsMHhFOCwweDI2LDB4NkEsMHhDNSwweDYxLDB4RjcsMHhFRSwweEE1LDB4M0QsCi0g
ICAgMHgyNywweDZBLDB4QzUsMHg2MSwweEZBLDB4RDYsMHg5QSwweEMwLDB4QTgsMHg3QSwweDA2
LDB4NjIsMHgyRCwweDNELDB4RDUsMHhGNSwKLSAgICAweEM5LDB4ODIsMHg2NywweDcyLDB4MEEs
MHhBQSwweDVGLDB4REQsMHgwQSwweDhCLDB4NjcsMHg3MiwweDNCLDB4QkQsMHhCRCwweDc3LAot
ICAgIDB4NTIsMHhDRCwweEU5LDB4ODIsMHgwQiwweDBELDB4MkQsMHhCNSwweDcyLDB4RDUsMHhE
MCwweEJDLDB4NzgsMHg3OCwweDY4LDB4RUEsCi0gICAgMHhGMCwweEM0LDB4OEYsMHhCNCwweEZF
LDB4N0UsMHg2QSwweDYwLDB4Q0YsMHhCQywweDZFLDB4QjQsMHgwQSwweDJBLDB4MkYsMHhCOSwK
LSAgICAweEYwLDB4QzQsMHg4RiwweEI0LDB4QTgsMHhBQSwweDJCLDB4QkQsMHhGMCwweEM0LDB4
Q0YsMHhCQywweDA5LDB4MkYsMHhGNSwweDU2LAotICAgIDB4MTAsMHhDNSwweEFGLDB4QkMsMHgw
MiwweEU4LDB4RkUsMHg1RCwweEYwLDB4QkMsMHg0RSwweEFDLDB4RTgsMHhGQSwweEZFLDB4N0Es
Ci0gICAgMHg4RiwweEI0LDB4MkQsMHhBQywweERGLDB4NzcsMHhGNSwweDJBLDB4RDAsMHhCQyww
eDBELDB4QTQsMHg1RCwweERELDB4RkQsMHgyQSwKLSAgICAweDMxLDB4QzUsMHgwRCwweEE0LDB4
RDUsMHhGNywweEFGLDB4MDIsMHg1MiwweENELDB4QUYsMHhCNCwweEFELDB4MEIsMHgwQSwweDAw
LAotICAgIDB4NzIsMHhDRCwweDMyLDB4QzUsMHgwNywweDA4LDB4MEEsMHhGQiwweEQ0LDB4RDUs
MHg1MiwweEM1LDB4MEEsMHgyQiwweEJELDB4NzUsCi0gICAgMHhENCwweEQ1LDB4OTMsMHhDRCww
eEUyLDB4MjgsMHhFRCwweEZELDB4QjQsMHhENSwweDUyLDB4QzUsMHhBRSwweEZBLDB4N0MsMHhF
MCwKLSAgICAweDkzLDB4Q0QsMHhEMCwweEI0LDB4RTAsMHg2QSwweEY4LDB4NzgsMHgxMiwweEJE
LDB4OTAsMHhBQywweEU4LDB4N0EsMHg3RSwweDdGLAotICAgIDB4QUYsMHhBQywweDZGLDB4QUMs
MHg4MiwweDlCLDB4OTcsMHhCRCwweDkzLDB4Q0QsMHhEMCwweEI0LDB4MEQsMHg4RiwweDJELDB4
QUQsCi0gICAgMHg5MywweENELDB4RDEsMHhCNCwweDgwLDB4RTAsMHg3QSwweDU3LDB4RjEsMHhC
QywweDZGLDB4QTQsMHg3OCwweEQ4LDB4REUsMHhGNywKLSAgICAweEQwLDB4QjQsMHg5MCwweEFD
LDB4MEEsMHgwMywweDAzLDB4MEEsMHhGMCwweEI0LDB4OEYsMHhBQywweEVDLDB4N0EsMHhGQSww
eEZBLAotICAgIDB4QjAsMHhCNCwweDRGLDB4QTQsMHhBOCwweEFBLDB4MjYsMHg4MCwweEYxLDB4
QjQsMHg4RiwweEFDLDB4MzcsMHgyRCwweDBGLDB4MkIsCi0gICAgMHg2NCwweDU5LDB4MDMsMHg0
OSwweEY4LDB4QUYsMHhFRiwweEZELDB4NjQsMHg1OSwweDIzLDB4NTEsMHhGQiwweEQ5LDB4RkYs
MHg1RiwKLSAgICAweDQzLDB4NTEsMHgwMywweDQ5LDB4QTAsMHg2QiwweEE4LDB4MEEsMHg0Myww
eDUxLDB4MDIsMHg0OSwweEI4LDB4M0UsMHgyRiwweDA4LAotICAgIDB4NjQsMHg1OSwweDIzLDB4
NTEsMHg5RSwweEQxLDB4QTksMHhFMywweDg0LDB4NTksMHgyMywweDUxLDB4RjgsMHg3QiwweEZG
LDB4QUIsCi0gICAgMHg2MywweDU5LDB4MjMsMHg1MSwweEIzLDB4QkUsMHhCRSwweEZFLDB4NjQs
MHg1OSwweDQzLDB4NTksMHg4RCwweDBBLDB4RkUsMHhEOCwKLSAgICAweDg0LDB4NjEsMHg0Myww
eDU5LDB4RUIsMHhCMywweDZELDB4NjksMHhBNCwweDYxLDB4NDMsMHg1OSwweEUzLDB4N0IsMHhG
RCwweEY1LAotICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHg3QSwweDdCLDB4N0IsMHg4OSwweDg0
LDB4NTksMHg0MywweDU5LDB4QUYsMHhEOSwweDdGLDB4N0UsCi0gICAgMHg2MywweDU5LDB4NDMs
MHg1OSwweEU4LDB4NUEsMHg3NywweDY1LDB4NjMsMHg1OSwweDAyLDB4NTEsMHgwOCwweEJBLDB4
N0EsMHg2QSwKLSAgICAweDY0LDB4NTksMHgyMywweDUxLDB4QUEsMHg4QiwweDNELDB4MzUsMHg2
NCwweDU5LDB4MjMsMHg1MSwweEVBLDB4RkEsMHg3RSwweEZFLAotICAgIDB4NDMsMHg1OSwweDIz
LDB4NTEsMHg2MywweEFBLDB4RjcsMHg3MywweDQ0LDB4NTksMHgwMywweDUxLDB4MDIsMHhBMiww
eEJBLDB4NjMsCi0gICAgMHgyMywweDUxLDB4MDIsMHg0OSwweENBLDB4NkEsMHg2RiwweDU5LDB4
NDMsMHg1MSwweDAyLDB4NDksMHg3RiwweERBLDB4QTMsMHhCQiwKLSAgICAweDIzLDB4NTEsMHgw
MywweDQ5LDB4QkQsMHhCNSwweDM0LDB4QUQsMHgyMywweDUxLDB4MDMsMHg0OSwweEZGLDB4QkIs
MHhGQiwweDQzLAotICAgIDB4NDIsMHg1MSwweDAyLDB4NDksMHhGNSwweDdGLDB4QkYsMHhCRiww
eDRBLDB4OTMsMHg0MywweDU5LDB4RjUsMHhCNSwweDJELDB4MkIsCi0gICAgMHhDQywweEEzLDB4
MjksMHg5MywweDBELDB4MDMsMHgwMiwweEEyLDB4Q0MsMHhBMywweDRBLDB4OUIsMHhFMCwweEU4
LDB4RkMsMHhERSwKLSAgICAweDhCLDB4OUIsMHgyOSwweDkzLDB4QTgsMHhBQywweEZBLDB4N0Es
MHg2QSwweDlCLDB4MkEsMHg5MywweDcyLDB4QUEsMHhCRiwweDlELAotICAgIDB4NkIsMHg5Qiww
eDI5LDB4OTMsMHhGRiwweENCLDB4RTcsMHg1NywweDI5LDB4OTMsMHgwOSwweDhCLDB4RkEsMHgz
OCwweDM4LDB4MjAsCi0gICAgMHg2QiwweDlCLDB4MjksMHg5MywweEVELDB4RjUsMHgzRCwweEFE
LDB4OEIsMHg5QiwweDRBLDB4OUIsMHhFRiwweEFCLDB4MEIsMHg4MywKLSAgICAweDZBLDB4OUIs
MHhDOCwweDgyLDB4NjAsMHg2MCwweEYwLDB4RjgsMHhDOCwweDgyLDB4ODcsMHg3QSwweEU4LDB4
NzQsMHg1RSwweEQ2LAotICAgIDB4QzgsMHg4MiwweDY2LDB4NzIsMHgwQSwweEJCLDB4RkYsMHhG
RCwweEE4LDB4N0EsMHg2NywweDcyLDB4RjcsMHg3RiwweEVDLDB4MzYsCi0gICAgMHg2OCwweDdB
LDB4NDQsMHg0OSwweDdBLDB4RTgsMHg4MCwweEEwLDB4QzUsMHg2MSwweDAzLDB4NDksMHg1NSww
eDVGLDB4NTYsMHg1OCwKLSAgICAweDIzLDB4NDksMHhFMywweDQwLDB4OEYsMHg5NywweDM3LDB4
RUIsMHg2NCwweDQ5LDB4MjMsMHg0OSwweDBELDB4ODUsMHhCNSwweEI1LAotICAgIDB4NjQsMHg1
MSwweDAzLDB4NDEsMHg3RSwweDVBLDB4RjgsMHhFMCwweDIzLDB4NDEsMHgwMywweDQxLDB4RjYs
MHgyMSwweDQxLDB4NUYsCi0gICAgMHgwMywweDQxLDB4RTIsMHgzOCwweEY4LDB4RTgsMHg1Qyww
eDU2LDB4MDMsMHg0MSwweEMyLDB4MzgsMHhFRiwweEZBLDB4MzUsMHhCRSwKLSAgICAweDQ0LDB4
NDksMHhFMiwweDM4LDB4QUQsMHgzRiwweERFLDB4QUIsMHg2NCwweDQ5LDB4MjMsMHg0MSwweDhC
LDB4RjksMHhGNSwweEFELAotICAgIDB4NDQsMHg0MSwweDAzLDB4NDEsMHhDNiwweDU3LDB4RjYs
MHhFOCwweDAzLDB4NDEsMHhDMiwweDM4LDB4RkUsMHhBMCwweDgwLDB4NzAsCi0gICAgMHgwMyww
eDQxLDB4QzIsMHgzOCwweEFBLDB4QUUsMHhFRiwweEI3LDB4MjQsMHg0MSwweEUzLDB4MzgsMHg1
RSwweERGLDB4MUYsMHhFRCwKLSAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4OUIsMHhCNiwweEFD
LDB4QUEsMHg0NSwweDQxLDB4MDQsMHg0MSwweEVGLDB4RkEsMHg1RiwweDc3LAotICAgIDB4ODUs
MHg1MSwweDI0LDB4NDksMHhGRiwweERELDB4REIsMHg1NSwweDg1LDB4NTksMHgyNCwweDQ5LDB4
MDIsMHhBQiwweDJGLDB4REQsCi0gICAgMHg4NSwweDU5LDB4MjQsMHg0OSwweDJBLDB4RTgsMHhE
RSwweEZGLDB4QzYsMHg1OSwweDQ0LDB4NTEsMHgwQiwweDJCLDB4MkQsMHhCRCwKLSAgICAweEM2
LDB4NjEsMHgyMywweDQ5LDB4N0UsMHg3OCwweEM4LDB4QTIsMHhBNSwweDU5LDB4MjQsMHg0OSww
eDI5LDB4QjksMHhBOSwweEFCLAotICAgIDB4QTYsMHg1OSwweDIzLDB4NDEsMHg2QSwweDYwLDB4
RkEsMHg2RSwweDIzLDB4NDksMHhBMywweDMwLDB4N0EsMHg2RSwweEZDLDB4RkUsCi0gICAgMHhD
MiwweDMwLDB4ODMsMHgzMCwweDJCLDB4QUEsMHhBRiwweDJELDB4MDMsMHgzOSwweEEyLDB4MzAs
MHhGNywweEE3LDB4MkIsMHgwRCwKLSAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4RkQsMHhFRiww
eEFBLDB4OEUsMHgyNCwweDQxLDB4RTMsMHgzOCwweEJGLDB4QkIsMHhCRiwweEI3LAotICAgIDB4
QTUsMHg1OSwweDI0LDB4NDEsMHhBRCwweEVCLDB4MEQsMHgyMSwweEE2LDB4NTksMHgyMywweDQ5
LDB4RkYsMHhGNiwweERFLDB4MzgsCi0gICAgMHhBNSwweDU5LDB4NDQsMHg1MSwweEI3LDB4M0Qs
MHgyNywweEJCLDB4QTUsMHg1OSwweDQ0LDB4NTEsMHhGQSwweDZFLDB4RUEsMHg4OCwKLSAgICAw
eDY0LDB4NTEsMHgwMywweDQ5LDB4NUMsMHg1NiwweDVFLDB4NTgsMHgyNCwweDQ5LDB4RTMsMHg0
MCwweDIyLDB4RkQsMHhBMywweDAyLAotICAgIDB4NDQsMHg0OSwweDAzLDB4MzksMHhFOCwweEFB
LDB4NEEsMHhFQSwweDIzLDB4NDEsMHhDMiwweDM4LDB4RjgsMHhFQiwweEZCLDB4N0UsCi0gICAg
MHgwMywweDM5LDB4QzIsMHgzOCwweEVFLDB4OTcsMHgxNywweDI3LDB4MDMsMHg0MSwweEUzLDB4
MzgsMHgyQiwweDJGLDB4RkUsMHhGRSwKLSAgICAweDQ0LDB4NDEsMHgwMywweDQxLDB4NTcsMHhB
MSwweDBCLDB4QTksMHg2NCwweDQ5LDB4MjMsMHg0MSwweDVELDB4N0YsMHg2MiwweEMyLAotICAg
IDB4NjQsMHg0OSwweDIzLDB4NDEsMHgyOSwweDBELDB4QjUsMHg5NSwweDg1LDB4NDksMHgyMyww
eDQxLDB4NTgsMHg1MiwweDVBLDB4NUUsCi0gICAgMHgyMywweDQxLDB4RTIsMHgzOCwweEVBLDB4
RkUsMHhFRiwweEZGLDB4MjQsMHg0MSwweEUyLDB4MzgsMHg5OSwweEI5LDB4QUYsMHhFNywKLSAg
ICAweDQ0LDB4NDEsMHhFMiwweDM4LDB4RjcsMHg3RSwweEZBLDB4QUYsMHg0NCwweDQxLDB4RTIs
MHgzOCwweDNGLDB4QUQsMHhCRiwweEJFLAotICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHhBMCww
eEFCLDB4NzcsMHg3QSwweDIzLDB4NDEsMHhFMiwweDM4LDB4RTgsMHg3OCwweDZBLDB4NzIsCi0g
ICAgMHgwMywweDM5LDB4RTMsMHgzOCwweEZCLDB4RUYsMHgzRiwweDJELDB4MjMsMHgzOSwweEUy
LDB4MzgsMHhBQSwweEE4LDB4NDMsMHg4MywKLSAgICAweDIzLDB4MzksMHhFMiwweDM4LDB4OEIs
MHhBRCwweEU1LDB4NUQsMHgyMywweDQxLDB4RTMsMHgzOCwweDhBLDB4QkUsMHhBQSwweEEyLAot
ICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHhGQiwweDZGLDB4RkEsMHgwMiwweDQ0LDB4NDksMHhF
MywweDQwLDB4RjcsMHhFRiwweDNGLDB4QUEsCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweENC
LDB4QTksMHhCQiwweDNBLDB4QTUsMHg1MSwweDQ0LDB4NDksMHhGQiwweEVBLDB4QUIsMHgzNywK
LSAgICAweEE1LDB4NTksMHg0NCwweDQ5LDB4REYsMHg3RiwweEQ2LDB4N0MsMHhBNSwweDU5LDB4
MjMsMHg0OSwweDJGLDB4QkYsMHhGRiwweEQ3LAotICAgIDB4QzUsMHg2MSwweDY0LDB4NDksMHhB
QSwweEFGLDB4MjcsMHgyNSwweDY3LDB4NzIsMHhDNSwweDU5LDB4MjksMHgyNSwweEQ1LDB4NTUs
Ci0gICAgMHg4OCwweDcyLDB4RTUsMHg2MSwweDdFLDB4QzgsMHg4QiwweEI1LDB4NjcsMHg3Miww
eEE0LDB4NTksMHhERCwweEZCLDB4RjgsMHg4OCwKLSAgICAweDQ3LDB4NzIsMHhFNiwweDYxLDB4
OEEsMHhCRiwweDNGLDB4RkYsMHhDOSwweDgyLDB4MjYsMHg2QSwweEI1LDB4MkQsMHgyQiwweDJE
LAotICAgIDB4MEEsMHg4QiwweDY3LDB4NzIsMHg1NywweDdCLDB4RUUsMHhBOCwweEE4LDB4N0Es
MHgyNywweDcyLDB4RTcsMHhBOSwweEFBLDB4QTgsCi0gICAgMHhFRCwweEEzLDB4ODgsMHg3QSww
eDNELDB4QjUsMHhGNSwweEZGLDB4NTEsMHhDRCwweEVELDB4QUIsMHhBMiwweDAzLDB4MDksMHgw
OSwKLSAgICAweDEwLDB4QzUsMHhBRiwweEJDLDB4N0UsMHg3QSwweDZBLDB4QTAsMHhDRiwweEJD
LDB4NkUsMHhCNCwweDc3LDB4NTcsMHhGNywweDVDLAotICAgIDB4Q0YsMHhCQywweDZFLDB4QjQs
MHgyRCwweEJGLDB4RkYsMHg3RCwweENGLDB4QkMsMHg2RSwweEI0LDB4ODAsMHhBOCwweEYzLDB4
RDcsCi0gICAgMHhBRiwweEI0LDB4NkYsMHhCNCwweEEwLDB4REMsMHhERiwweDdFLDB4MzEsMHhD
RCwweDhGLDB4QjQsMHg3NywweEFELDB4MkYsMHgyOSwKLSAgICAweDUyLDB4Q0QsMHhBRiwweEJD
LDB4RkQsMHhBQiwweDhBLDB4MjAsMHg1MSwweEM1LDB4RjAsMHhDNCwweDU1LDB4QjYsMHg4RSww
eEEyLAotICAgIDB4NzIsMHhDRCwweEYwLDB4QkMsMHhBNywweDM3LDB4QUYsMHgyQSwweEIzLDB4
RDUsMHg3MiwweENELDB4NTUsMHhBQiwweDgzLDB4OEIsCi0gICAgMHhCMywweEQ1LDB4MTAsMHhC
RCwweDdGLDB4RkEsMHhGQSwweEUwLDB4NTIsMHhDNSwweDExLDB4QkQsMHgwRCwweDJGLDB4RUQs
MHg3RSwKLSAgICAweDkzLDB4Q0QsMHgxMSwweEJELDB4ODIsMHgzRiwweEZGLDB4RjUsMHhCMyww
eENELDB4NTIsMHhDNSwweDAwLDB4MDIsMHhBQSwweEQ3LAotICAgIDB4OTMsMHhDRCwweEQxLDB4
QjQsMHg3OCwweEEwLDB4MDAsMHgwMCwweDczLDB4Q0QsMHhCMCwweEI0LDB4NTUsMHg1RiwweDdD
LDB4NjAsCi0gICAgMHhEMSwweEI0LDB4MkYsMHhBNCwweEJFLDB4QkYsMHgzRiwweDI4LDB4MzIs
MHhDNSwweDkwLDB4QUMsMHgwMywweDgyLDB4NDIsMHg2MiwKLSAgICAweEQwLDB4QjQsMHhDRCww
eDkzLDB4QTgsMHhGQSwweDdGLDB4NTcsMHhGMSwweEI0LDB4MEUsMHg5QywweEJBLDB4MkIsMHgy
RCwweEFGLAotICAgIDB4RjEsMHhCNCwweEIwLDB4QjQsMHhCRCwweEI2LDB4RjUsMHhENSwweEQw
LDB4QjQsMHg5MCwweEFDLDB4QkEsMHhDOCwweEVBLDB4N0EsCi0gICAgMHhEMCwweEI0LDB4OEYs
MHhBQywweDJFLDB4QjYsMHg1NywweEQ3LDB4MTEsMHhCRCwweDkwLDB4QUMsMHgyRiwweEFGLDB4
QjksMHg2RiwKLSAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4QkQsMHhGRiwweDVBLDB4NzIsMHg0
MywweDUxLDB4RTIsMHg0OCwweEEyLDB4RjgsMHhGRiwweEFFLAotICAgIDB4NjQsMHg1OSwweDIz
LDB4NTEsMHg3NSwweEY1LDB4RUYsMHg4RiwweDY0LDB4NTksMHg0MywweDUxLDB4RkQsMHhERCww
eDc1LDB4NUUsCi0gICAgMHg2NCwweDU5LDB4MDIsMHg0OSwweDZCLDB4NkEsMHhBQSwweDIyLDB4
QTQsMHg2MSwweDAyLDB4NDksMHhFRiwweEFELDB4QUYsMHg4QSwKLSAgICAweEE0LDB4NjEsMHg0
NCwweDU5LDB4RDcsMHhCRCwweEZGLDB4RDUsMHg4NCwweDYxLDB4MjMsMHg1MSwweEY4LDB4QkEs
MHg3RSwweEZGLAotICAgIDB4ODQsMHg2MSwweDIzLDB4NTEsMHgyQSwweDJFLDB4MkYsMHgwQiww
eDg0LDB4NTksMHg0MywweDU5LDB4QUQsMHg4QSwweEFFLDB4RUUsCi0gICAgMHg4NCwweDYxLDB4
MjMsMHg1MSwweDg4LDB4QzIsMHhBQSwweDdFLDB4NjMsMHg1OSwweDAzLDB4NTEsMHhBMCwweDgy
LDB4OTgsMHhBRSwKLSAgICAweDQzLDB4NTksMHgyMywweDUxLDB4MDgsMHgzNiwweDI4LDB4MjAs
MHg2NCwweDU5LDB4MjMsMHg1MSwweDlCLDB4REYsMHhCQiwweEY4LAotICAgIDB4NjQsMHg1OSww
eDAyLDB4NTEsMHgzRiwweDNCLDB4REYsMHhCQSwweDY0LDB4NTksMHgyMywweDUxLDB4N0UsMHhF
RSwweEJBLDB4RkIsCi0gICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEY5LDB4NkIsMHg2QywweDU1
LDB4NDQsMHg1OSwweDAzLDB4NDksMHhDMiwweEQyLDB4QkMsMHhENiwKLSAgICAweDQzLDB4NTEs
MHhFMiwweDQ4LDB4RkYsMHhBRSwweDdGLDB4QjIsMHgyMywweDUxLDB4RTIsMHg0OCwweDgyLDB4
QUEsMHhFRCwweEY2LAotICAgIDB4NDMsMHg1MSwweDAzLDB4NDksMHhGNywweDc1LDB4N0QsMHhG
QiwweDQzLDB4NTEsMHgwMywweDQ5LDB4RkIsMHhBQiwweDhCLDB4MkUsCi0gICAgMHg2OCwweDdB
LDB4MjMsMHg1MSwweEQ1LDB4RDUsMHgzNSwweDJELDB4QUIsMHhBMywweDI3LDB4NzIsMHgyRCww
eDI5LDB4MEIsMHgwQSwKLSAgICAweENDLDB4QTMsMHg4QiwweEEzLDB4QUIsMHgwMCwweDY4LDB4
NTgsMHg4QiwweEEzLDB4NEEsMHg5MywweDZDLDB4MkMsMHhGRiwweERGLAotICAgIDB4NkEsMHg5
QiwweDI5LDB4OTMsMHhCQSwweEJFLDB4RjgsMHg3MiwweDRBLDB4OTMsMHgwOSwweDkzLDB4Rjgs
MHg3MiwweEVBLDB4MjAsCi0gICAgMHg0QSwweDkzLDB4MDksMHg4QiwweDM4LDB4OTUsMHgyNyww
eEI0LDB4NkEsMHg5QiwweDI5LDB4OTMsMHg2QiwweEFCLDB4QkIsMHgyNywKLSAgICAweDZBLDB4
OTMsMHgwOSwweDkzLDB4OEQsMHhCRSwweEVFLDB4RUEsMHg4QiwweDlCLDB4NEEsMHg5MywweEIy
LDB4QUYsMHhCRiwweEZELAotICAgIDB4OEIsMHg5QiwweEE3LDB4ODIsMHhGQSwweDdBLDB4N0Es
MHg3QSwweEE3LDB4ODIsMHg4NywweDdBLDB4M0YsMHhGMCwweEM4LDB4QzgsCi0gICAgMHhBOCww
eDgyLDB4NjcsMHg3QSwweEJFLDB4RTIsMHhGRiwweDdGLDB4QTcsMHg3QSwweDY3LDB4N0EsMHhC
QywweERBLDB4NjksMHg1RiwKLSAgICAweDg3LDB4N0EsMHgyNiwweDZBLDB4NUMsMHg3RSwweEZB
LDB4RkEsMHgyNiwweDZBLDB4NjQsMHg1MSwweDVDLDB4NzgsMHhFMCwweDgwLAotICAgIDB4ODUs
MHg1OSwweEUzLDB4NDAsMHg3NywweDVGLDB4REUsMHhDMCwweDQ0LDB4NDksMHhFMywweDQwLDB4
MEEsMHgyOSwweDJCLDB4QTIsCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0OSwweDgwLDB4Q0EsMHhC
RSwweERELDB4NDQsMHg0OSwweEMyLDB4MzgsMHhGQSwweDdFLDB4NzYsMHhFOCwKLSAgICAweDAz
LDB4MzksMHhDMiwweDM4LDB4QkYsMHhCRiwweDg5LDB4QUEsMHgwMywweDM5LDB4QzIsMHgzOCww
eDgwLDB4QTgsMHhBRSwweEQ2LAotICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHg4QiwweEFCLDB4
QkYsMHhGNSwweEE1LDB4NTEsMHgyMywweDQxLDB4RjUsMHhFNSwweEE1LDB4M0QsCi0gICAgMHg4
NSwweDUxLDB4MjMsMHg0MSwweDdBLDB4N0EsMHg3MiwweEUwLDB4MjMsMHg0MSwweEMzLDB4Mzgs
MHg3MywweEVBLDB4QjgsMHhGQSwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4RUYsMHhBQSww
eEYwLDB4NzAsMHgyMywweDQxLDB4RTMsMHgzOCwweEJCLDB4QUIsMHhBQiwweERELAotICAgIDB4
MjQsMHg0MSwweEUzLDB4MzgsMHhDQSwweEZBLDB4RjgsMHhFQSwweDAzLDB4NDEsMHgyMywweDM5
LDB4MkEsMHhBMCwweDgwLDB4ODgsCi0gICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweEFBLDB4QUEs
MHgyQiwweEE3LDB4NjQsMHg1MSwweDI0LDB4NDksMHhGNSwweEI5LDB4Q0UsMHhGRiwKLSAgICAw
eDg1LDB4NTEsMHg0NCwweDUxLDB4N0IsMHhGOSwweDg5LDB4ODcsMHg4NSwweDU5LDB4NjUsMHg1
MSwweDI1LDB4MEQsMHhBQiwweEM5LAotICAgIDB4RTYsMHg2MSwweDg1LDB4NTksMHhFMSwweEUz
LDB4N0QsMHg1NSwweEM2LDB4NTksMHg2NSwweDUxLDB4QjcsMHhCQSwweEUzLDB4Q0QsCi0gICAg
MHg4NSwweDUxLDB4NDQsMHg0OSwweDZBLDB4NjgsMHhFMiwweDVDLDB4NDQsMHg0OSwweEMyLDB4
MzAsMHg3RSwweEY0LDB4N0UsMHg1RiwKLSAgICAweEMyLDB4MzAsMHhBMiwweDMwLDB4QkYsMHg5
OCwweDIwLDB4MjIsMHgyNCwweDM5LDB4QzIsMHgzMCwweEE1LDB4M0QsMHhBNSwweEZELAotICAg
IDB4MjQsMHg0MSwweEUzLDB4MzgsMHhBQSwweDlFLDB4RUUsMHhFNywweDAzLDB4NDEsMHhFMyww
eDM4LDB4MjcsMHgyQiwweEUwLDB4RUEsCi0gICAgMHhBNSwweDU5LDB4MDMsMHg0MSwweDA5LDB4
MkQsMHgwRiwweDNELDB4MDcsMHg2MiwweDg1LDB4NTksMHhERiwweDdCLDB4QjMsMHhCQiwKLSAg
ICAweDA3LDB4NkEsMHg4NSwweDU5LDB4NTcsMHg3RiwweEYyLDB4RTgsMHhDNiwweDU5LDB4NDQs
MHg1MSwweDI5LDB4QUEsMHhFMiwweEVBLAotICAgIDB4QTUsMHg1OSwweDAzLDB4NDEsMHg1OCww
eDc4LDB4N0EsMHg3QSwweDI0LDB4NDksMHgwMywweDQxLDB4OEEsMHhBQSwweEY1LDB4NTUsCi0g
ICAgMHgyNCwweDQxLDB4MDMsMHg0MSwweDYwLDB4RTAsMHg2MCwweDYzLDB4MDMsMHg0MSwweEMy
LDB4MzgsMHg3QSwweDZBLDB4RUUsMHhCQSwKLSAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4QTUs
MHhBNSwweEFGLDB4QUQsMHgyMywweDQxLDB4MDMsMHgzOSwweEI3LDB4QUYsMHgzRiwweDM1LAot
ICAgIDB4NjQsMHg0OSwweDI0LDB4NDEsMHg2RCwweEE5LDB4QUQsMHhCRCwweDY0LDB4NDksMHgy
MywweDQxLDB4MDksMHhBRiwweEEyLDB4OEEsCi0gICAgMHg2NSwweDQ5LDB4MDMsMHg0MSwweEJG
LDB4REYsMHhCQSwweDhBLDB4NjQsMHg0OSwweDAzLDB4MzksMHg3OCwweEVDLDB4N0YsMHg3RSwK
LSAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4RkYsMHg1RiwweDdGLDB4MkEsMHgwMywweDQxLDB4
QzIsMHgzMCwweEFFLDB4QUYsMHg1RCwweEZDLAotICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHgy
QiwweDhFLDB4NzUsMHhENSwweDIzLDB4NDEsMHhFMiwweDMwLDB4M0EsMHgzQiwweEZGLDB4QUYs
Ci0gICAgMHgyNCwweDM5LDB4MDMsMHgzOSwweDY4LDB4NTYsMHhGRiwweEY1LDB4NDQsMHg0MSww
eEUzLDB4MzgsMHg3QiwweEZGLDB4RTgsMHhBQSwKLSAgICAweDIzLDB4MzksMHhFMywweDMwLDB4
RTcsMHhENywweEY3LDB4RUEsMHgyMywweDM5LDB4RTMsMHgzMCwweEFDLDB4M0UsMHhGQiwweEYy
LAotICAgIDB4MDMsMHgzOSwweEUyLDB4MzAsMHhERiwweDNFLDB4QkEsMHhGOCwweDQ0LDB4NDEs
MHhFMiwweDM4LDB4RjUsMHhGNiwweEY3LDB4MzUsCi0gICAgMHg4NSwweDQ5LDB4MDMsMHgzOSww
eEFELDB4MkQsMHhBNSwweEY1LDB4NjQsMHg0OSwweDAzLDB4NDEsMHhGOCwweERFLDB4RkEsMHhB
QSwKLSAgICAweDQ0LDB4NDksMHgyMywweDM5LDB4MDIsMHg4MiwweDAyLDB4MjAsMHg4NSwweDUx
LDB4MjMsMHg0OSwweEI3LDB4QkYsMHhFMiwweEUyLAotICAgIDB4ODUsMHg1MSwweDIzLDB4NDks
MHg1OCwweDdGLDB4RDcsMHg3RiwweDY0LDB4NDksMHgyMywweDQ5LDB4QUIsMHhCNSwweEI1LDB4
NUYsCi0gICAgMHhBNSwweDU5LDB4MjMsMHg0OSwweDJGLDB4QUYsMHhGRiwweDdELDB4QzUsMHg1
OSwweDY0LDB4NTEsMHgwMywweDBCLDB4MkIsMHhCNSwKLSAgICAweDA1LDB4NjIsMHg4NCwweDUx
LDB4M0EsMHhCQiwweEFELDB4RjUsMHg0NywweDcyLDB4QzUsMHg2MSwweDAyLDB4OEEsMHhFQiww
eEJELAotICAgIDB4NDcsMHg3MiwweEU1LDB4NjEsMHhGRSwweEZFLDB4MkUsMHgyQiwweEM5LDB4
ODIsMHgyNiwweDZBLDB4MjUsMHhCNSwweEY1LDB4RkYsCi0gICAgMHgyQSwweDhCLDB4ODgsMHg3
QSwweEFBLDB4MEIsMHhBOSwweEJCLDB4MjksMHg5MywweDg3LDB4N0EsMHhENywweDdFLDB4RUEs
MHhBMCwKLSAgICAweDBBLDB4OEIsMHg4OCwweDdBLDB4MkIsMHhCNSwweEZGLDB4QjYsMHg1Miww
eEQ1LDB4NEEsMHg5MywweDA5LDB4MkQsMHgyRCwweDJELAotICAgIDB4NzIsMHhENSwweEYwLDB4
QzQsMHg3QywweDc4LDB4RjgsMHhFMCwweDUxLDB4Q0QsMHg0RSwweEFDLDB4NUUsMHg3QSwweEE4
LDB4MDAsCi0gICAgMHg3MiwweENELDB4NEUsMHhBQywweDU1LDB4RDUsMHhGRiwweDAyLDB4RDMs
MHhERCwweDZFLDB4QjQsMHg1NSwweDU1LDB4N0YsMHhBOCwKLSAgICAweEYwLDB4QzQsMHg0RCww
eEFDLDB4OTYsMHhENywweDk3LDB4MDAsMHg5MiwweEQ1LDB4RDAsMHhCQywweEJELDB4QUQsMHgy
RCwweDBCLAotICAgIDB4QjMsMHhENSwweDUxLDB4Q0QsMHg1RCwweEZGLDB4MEIsMHgwQSwweEQ0
LDB4REQsMHg3MiwweENELDB4NUQsMHhFQSwweDYwLDB4NkEsCi0gICAgMHg5MywweENELDB4NTIs
MHhDRCwweDU3LDB4REMsMHgzNywweDg3LDB4RDQsMHhENSwweDcyLDB4Q0QsMHg4RCwweEY5LDB4
RkUsMHhERSwKLSAgICAweEI0LDB4RDUsMHg3MywweENELDB4NzAsMHg1QSwweEY3LDB4RDcsMHg3
MiwweENELDB4MTEsMHhCRCwweDdFLDB4RTgsMHhGOCwweEJDLAotICAgIDB4MzIsMHhDNSwweDEx
LDB4QkQsMHhCRiwweEZFLDB4OTAsMHg2MCwweDUyLDB4QzUsMHhGMSwweEJDLDB4ODAsMHhBRSww
eEFGLDB4RjcsCi0gICAgMHg5MywweENELDB4MzIsMHhDNSwweDAzLDB4QUIsMHhCRiwweEZELDB4
QjQsMHhDRCwweDUyLDB4QzUsMHg1QSwweDBCLDB4QUYsMHhCRCwKLSAgICAweDkzLDB4Q0QsMHhG
MSwweEJDLDB4NTcsMHhFMCwweEEwLDB4RTAsMHgxMiwweEJELDB4RUQsMHg5QiwweEUwLDB4RTAs
MHg2OCwweDc4LAotICAgIDB4NkUsMHhBNCwweENDLDB4OTMsMHg1NywweEQ1LDB4OTUsMHgzNSww
eEQwLDB4QjQsMHg0RSwweEE0LDB4MjksMHgzOSwweEFCLDB4MDIsCi0gICAgMHhEMCwweEI0LDB4
OEYsMHhCNCwweEIwLDB4NzgsMHhGOCwweEVBLDB4RDEsMHhCNCwweDZGLDB4QUMsMHhFQSwweEEy
LDB4REUsMHhFRiwKLSAgICAweEQxLDB4QjQsMHg2RiwweEFDLDB4M0YsMHhBRiwweEI3LDB4QUUs
MHhGMSwweEI0LDB4OTAsMHhBQywweDRGLDB4QkUsMHhBOSwweEVCLAotICAgIDB4NjMsMHg1OSww
eDIzLDB4NTEsMHg3RSwweDU5LDB4RTYsMHhBRSwweDQzLDB4NTEsMHgwMiwweDQ5LDB4MjAsMHhB
QSwweEZCLDB4NkEsCi0gICAgMHg0MywweDUxLDB4MjMsMHg1MSwweDAyLDB4MDIsMHgyOSwweDk5
LDB4NjQsMHg1OSwweDIzLDB4NTEsMHgyOCwweEFFLDB4REIsMHg0RiwKLSAgICAweDY0LDB4NTks
MHgyMywweDUxLDB4QTIsMHhFOCwweEE4LDB4QjcsMHg4NCwweDU5LDB4NDMsMHg1OSwweDgyLDB4
NkIsMHg1RiwweDVGLAotICAgIDB4ODQsMHg2MSwweDIzLDB4NTEsMHhGRCwweEJCLDB4RUEsMHhD
MiwweDg0LDB4NjEsMHgyMywweDUxLDB4RjYsMHhGRiwweEVGLDB4OEIsCi0gICAgMHg4NCwweDYx
LDB4NDMsMHg1OSwweDBBLDB4MDMsMHgyNywweEFBLDB4QTQsMHg2MSwweDQzLDB4NTksMHhGQSww
eDZBLDB4RTAsMHhGMiwKLSAgICAweDY0LDB4NTksMHgyMywweDU5LDB4RkUsMHhGQiwweEJBLDB4
RTgsMHg2NCwweDU5LDB4MjMsMHg1MSwweEM4LDB4OEEsMHhFRiwweDZCLAotICAgIDB4NjQsMHg1
OSwweDIzLDB4NTEsMHhCQSwweEJGLDB4MUYsMHhFRiwweDY0LDB4NTksMHgyMywweDU5LDB4QTgs
MHhBOCwweDAyLDB4QTksCi0gICAgMHg4NSwweDYxLDB4MjQsMHg1MSwweEZFLDB4RkEsMHg2Myww
eEZGLDB4NjQsMHg1OSwweDIzLDB4NTEsMHhBRSwweERELDB4N0QsMHg2RiwKLSAgICAweDQ0LDB4
NTksMHgwMywweDUxLDB4NUYsMHhCQywweEJELDB4NkYsMHgyMywweDUxLDB4RTIsMHg0OCwweEI4
LDB4RjAsMHgyOCwweEIzLAotICAgIDB4NDMsMHg1MSwweDAzLDB4NDksMHhGQiwweEZBLDB4RUEs
MHhEQiwweDIzLDB4NTEsMHhFMiwweDQ4LDB4NzIsMHhDOCwweDgyLDB4QTIsCi0gICAgMHgyMyww
eDUxLDB4MDMsMHg0OSwweEMxLDB4QjUsMHhDRiwweDBBLDB4NjQsMHg1OSwweDAzLDB4NTEsMHhC
RiwweEJGLDB4MzcsMHgzNywKLSAgICAweDRBLDB4OTMsMHg2NCwweDU5LDB4MkQsMHgyRCwweDBC
LDB4MEIsMHhDQywweEEzLDB4NEEsMHg5QiwweEFELDB4OEIsMHgyQSwweEVFLAotICAgIDB4RUMs
MHhBQiwweDhCLDB4OUIsMHg1RSwweEFGLDB4QUQsMHg4RiwweENDLDB4QUIsMHg0QSwweDkzLDB4
NzcsMHg1QSwweEU4LDB4QTAsCi0gICAgMHhBQiwweEEzLDB4NEEsMHg5MywweDc3LDB4REQsMHhF
RSwweEE4LDB4NkEsMHg5QiwweDI5LDB4OTMsMHhGRSwweEU2LDB4RjcsMHg1RSwKLSAgICAweDZB
LDB4OUIsMHgwOSwweDhCLDB4NUUsMHhGRSwweEEzLDB4QUIsMHg0QSwweDkzLDB4MDksMHg5Myww
eEFGLDB4RUQsMHhFRiwweDMwLAotICAgIDB4NEEsMHg5MywweDA4LDB4OTMsMHgyMCwweEFBLDB4
QTEsMHhFOCwweDZBLDB4OTMsMHgwOSwweDkzLDB4M0IsMHhBRCwweEFGLDB4RUYsCi0gICAgMHg2
QSwweDlCLDB4QzgsMHg4MiwweDcyLDB4NjIsMHhGQSwweDdBLDB4QTcsMHg3QSwweDY3LDB4NzIs
MHhBMiwweEI4LDB4NjgsMHhBQSwKLSAgICAweEE4LDB4N0EsMHg0NywweDcyLDB4RTIsMHhFMiww
eDdGLDB4RjcsMHg2NywweDdBLDB4MjYsMHg3MiwweDgwLDB4RTAsMHg1MiwweDUwLAotICAgIDB4
ODgsMHg3QSwweDQ3LDB4NzIsMHg3QiwweDdELDB4NzcsMHg0OSwweDQ2LDB4NzIsMHgwNiwweDZB
LDB4NUYsMHg3QSwweDdBLDB4RkEsCi0gICAgMHgyNiwweDZBLDB4NjQsMHg1MSwweDdBLDB4RTgs
MHhFQSwweDA4LDB4RTUsMHg2MSwweDIzLDB4NDksMHg1NSwweDVGLDB4NUUsMHg2OCwKLSAgICAw
eDQzLDB4NDksMHhFMywweDQwLDB4QUEsMHhGQiwweDVGLDB4NTQsMHg0MywweDQ5LDB4RTMsMHg0
MCwweEU4LDB4RUIsMHhFRiwweEY1LAotICAgIDB4RTMsMHg0MCwweEMyLDB4MzAsMHhCRSwweEVF
LDB4RUEsMHg2MCwweEUyLDB4MzgsMHhBMSwweDMwLDB4MEMsMHhBOCwweEZBLDB4RkIsCi0gICAg
MHgwMywweDQxLDB4QzIsMHgzOCwweDBCLDB4MEQsMHg3RCwweEY1LDB4QTUsMHg1MSwweEUzLDB4
MzgsMHgwRiwweDJGLDB4QUQsMHhGRCwKLSAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4QzAsMHhD
QSwweEVBLDB4N0EsMHgyMywweDQxLDB4RTMsMHgzOCwweEJBLDB4REMsMHhERiwweDVGLAotICAg
IDB4MjQsMHg0MSwweEMyLDB4MzgsMHhEQSwweDJBLDB4MDIsMHgwMCwweDAzLDB4NDEsMHhFMyww
eDM4LDB4N0YsMHhFQywweEJBLDB4MzgsCi0gICAgMHgwMywweDQxLDB4RTMsMHgzOCwweDM2LDB4
RDUsMHhENywweDVFLDB4MjMsMHg0MSwweEU0LDB4MzgsMHhFQSwweEJGLDB4MEIsMHgwQSwKLSAg
ICAweDQ0LDB4NDksMHhFMywweDM4LDB4MkIsMHhCNywweEFFLDB4RTgsMHg2NSwweDUxLDB4MjMs
MHg0OSwweERDLDB4RjAsMHg3MCwweEYyLAotICAgIDB4ODUsMHg1OSwweDAzLDB4NDEsMHgwQiww
eDJCLDB4QkYsMHg3NywweEM2LDB4NTksMHg0NCwweDUxLDB4OEIsMHgzQSwweEFBLDB4RkQsCi0g
ICAgMHhBNSwweDU5LDB4NjUsMHg1MSwweEJDLDB4QkMsMHhGRSwweEZFLDB4QzYsMHg1OSwweDY0
LDB4NTEsMHg1QSwweDdBLDB4NEIsMHg0RiwKLSAgICAweDg1LDB4NTEsMHhDMiwweDMwLDB4RTgs
MHg2QSwweDdFLDB4NUUsMHhFMywweDM4LDB4ODIsMHgzMCwweEEwLDB4RUEsMHhERSwweEJGLAot
ICAgIDB4QzMsMHgzMCwweEEyLDB4MzAsMHhFMiwweEZGLDB4NUYsMHg5NCwweEUzLDB4MzAsMHg4
MiwweDI4LDB4QUIsMHhGRCwweEJBLDB4QTgsCi0gICAgMHhFMywweDM4LDB4QTIsMHgzMCwweDIx
LDB4N0QsMHg1RiwweDVFLDB4MDMsMHg0MSwweEEzLDB4MzAsMHgyQiwweEZCLDB4QkYsMHhCRCwK
LSAgICAweDY0LDB4NTEsMHgwMywweDQxLDB4MkQsMHgyNSwweDE1LDB4RDUsMHhFNiwweDYxLDB4
ODUsMHg1MSwweDA5LDB4QUIsMHhGRCwweDU1LAotICAgIDB4RTYsMHg2MSwweDY0LDB4NTEsMHgw
MCwweDgyLDB4OEIsMHhCRiwweEM2LDB4NjEsMHg2NCwweDUxLDB4NkEsMHhGOCwweEYwLDB4ODAs
Ci0gICAgMHg2NCwweDUxLDB4MDMsMHg0MSwweEE4LDB4RTAsMHg2MCwweEYwLDB4MjQsMHg0OSww
eDAzLDB4NDEsMHg1NiwweEZFLDB4MkYsMHhBQywKLSAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4
QUIsMHhBNiwweDdFLDB4NzgsMHgwNCwweDQxLDB4QzMsMHgzOCwweDVFLDB4NzIsMHhBQSwweDIy
LAotICAgIDB4MDMsMHgzOSwweEEzLDB4MzgsMHgwQiwweEFBLDB4ODgsMHgyOCwweDAzLDB4Mzks
MHhDMiwweDM4LDB4MkEsMHgyRiwweEJELDB4QkYsCi0gICAgMHg4NSwweDQ5LDB4MDMsMHgzOSww
eDJCLDB4MkYsMHhBRCwweDhELDB4ODUsMHg0OSwweDI0LDB4NDEsMHhGRiwweEQ4LDB4RTAsMHhG
QywKLSAgICAweDg1LDB4NDksMHhFMiwweDM4LDB4OEEsMHg4QSwweEZFLDB4NUQsMHg0NCwweDQx
LDB4MDMsMHgzOSwweEE4LDB4QUUsMHhGRiwweDJELAotICAgIDB4MjMsMHg0MSwweEUzLDB4Mzgs
MHgwMCwweEEwLDB4RjgsMHhFMCwweDIzLDB4NDEsMHhDMiwweDMwLDB4RkUsMHg2NiwweEZCLDB4
QTgsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDJGLDB4MkYsMHgxRiwweEY4LDB4MjQsMHg0
MSwweEUyLDB4MzAsMHhBRCwweDJGLDB4QUYsMHhCNSwKLSAgICAweDIzLDB4MzksMHhFMywweDM4
LDB4QUEsMHg4OCwweEE4LDB4MEYsMHgyNCwweDQxLDB4MDMsMHgzOSwweDFFLDB4QjksMHhBRCww
eEUyLAotICAgIDB4MjMsMHgzOSwweEUyLDB4MzgsMHhFOCwweDc4LDB4QjIsMHhBMCwweDIzLDB4
MzksMHhFMiwweDMwLDB4RkYsMHg1NSwweDVGLDB4RjAsCi0gICAgMHgyMywweDQxLDB4MDMsMHgz
OSwweDc1LDB4MjUsMHhBNSwweDU1LDB4MjMsMHg0MSwweEMyLDB4MzAsMHgyNywweEFBLDB4QUYs
MHgwQSwKLSAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4MTcsMHgwRSwweDgyLDB4MDIsMHg2NCww
eDQ5LDB4MjMsMHg0MSwweDBCLDB4MEIsMHg3RiwweEZGLAotICAgIDB4NjQsMHg0OSwweDIzLDB4
NDEsMHgzNywweERGLDB4QkEsMHhFNywweDg0LDB4NTEsMHg0NCwweDQ5LDB4NUUsMHgyRiwweDY1
LDB4N0QsCi0gICAgMHg4NSwweDUxLDB4MjMsMHg0MSwweEZELDB4RDcsMHhGQiwweEMyLDB4NjUs
MHg0OSwweDIzLDB4NDksMHhGNywweEI1LDB4MzYsMHhGNywKLSAgICAweDg1LDB4NTEsMHgyMyww
eDQ5LDB4RkYsMHhCRiwweDM1LDB4OEYsMHhDNSwweDYxLDB4MjIsMHg0OSwweERGLDB4RkUsMHhB
OCwweDJCLAotICAgIDB4QTQsMHg1OSwweDY0LDB4NTEsMHg5QiwweDdELDB4RDgsMHhBOCwweDA2
LDB4NjIsMHg2NCwweDUxLDB4MkYsMHhBRCwweDc1LDB4RkYsCi0gICAgMHgyNiwweDZBLDB4ODQs
MHg1OSwweDAwLDB4QUUsMHhGNywweERELDB4NjcsMHg3QSwweEE1LDB4NjEsMHgyQSwweDJCLDB4
QUQsMHhGNSwKLSAgICAweDBBLDB4OEIsMHgyNiwweDcyLDB4MEEsMHgyQiwweEFCLDB4RkQsMHgy
QSwweDhCLDB4QzksMHg4MiwweEMwLDB4QTIsMHgyOSwweEY5LAotICAgIDB4MDksMHg4QiwweEE4
LDB4N0EsMHhGQSwweEYwLDB4QTAsMHgyOCwweDUyLDB4RDUsMHgwOSwweDhCLDB4MkQsMHgyRCww
eEI1LDB4QjUsCi0gICAgMHgzNSwweEU2LDB4NTIsMHhENSwweDVGLDB4RUIsMHgwQiwweDA5LDB4
NTUsMHhFRSwweDcyLDB4RDUsMHg1NSwweEJGLDB4QUEsMHgwMCwKLSAgICAweDM1LDB4RUUsMHg3
MiwweEQ1LDB4QUQsMHg4QSwweDAwLDB4MDAsMHg1NSwweEVFLDB4RjQsMHhERCwweDVGLDB4RkYs
MHhFRiwweEYyLAotICAgIDB4MzUsMHhFNiwweEQzLDB4REQsMHg3RCwweEFCLDB4OEEsMHg4MCww
eDE0LDB4RTYsMHg5MiwweEQ1LDB4RjcsMHhBQSwweDAwLDB4MDgsCi0gICAgMHgzNCwweEU2LDB4
OTIsMHhENSwweDdGLDB4RkUsMHg4QSwweDIwLDB4MTQsMHhERSwweDUyLDB4QzUsMHg1NywweDVG
LDB4NUEsMHg1OCwKLSAgICAweEIzLDB4RDUsMHg1MiwweEM1LDB4QTUsMHgzRCwweEFGLDB4QUQs
MHhCMywweEQ1LDB4NzMsMHhDRCwweEZFLDB4RUEsMHhBQSwweDNCLAotICAgIDB4OTMsMHhDRCww
eDUyLDB4QzUsMHhFRSwweEFFLDB4RkUsMHhGOCwweDcyLDB4Q0QsMHgzMiwweEM1LDB4RjQsMHhG
OCwweDc4LDB4RTAsCi0gICAgMHg1MiwweEM1LDB4MTIsMHhCRCwweDZFLDB4RjgsMHg3QSwweEFB
LDB4MzIsMHhDNSwweEYxLDB4QkMsMHg1RiwweDc2LDB4N0EsMHhEOCwKLSAgICAweDUyLDB4QzUs
MHhGMSwweEJDLDB4MkIsMHhFNSwweDVELDB4NUQsMHg3MywweENELDB4RjEsMHhCQywweDIyLDB4
MEIsMHhBRiwweEY3LAotICAgIDB4NzMsMHhDRCwweEQwLDB4QjQsMHhFMCwweEY4LDB4N0UsMHg3
RiwweEQxLDB4QjQsMHhDRCwweDlCLDB4NzgsMHhGOCwweDdFLDB4N0UsCi0gICAgMHhCMCwweEI0
LDB4Q0MsMHg5MywweDI1LDB4MkYsMHgwQiwweDBCLDB4RDEsMHhCNCwweDhGLDB4QUMsMHhBMiww
eEUyLDB4NDAsMHhBMiwKLSAgICAweEQwLDB4QjQsMHg4RiwweEFDLDB4RUEsMHhEQiwweDdBLDB4
Q0MsMHhCMCwweEI0LDB4NzAsMHhBQywweERBLDB4OTAsMHgzQywweDJFLAotICAgIDB4QjAsMHhC
NCwweDcwLDB4QUMsMHhBOCwweEVBLDB4RkUsMHgxOCwweEQxLDB4QjQsMHg5MCwweEFDLDB4RUIs
MHhFOSwweEQ1LDB4QkQsCi0gICAgMHg2MywweDU5LDB4MjMsMHg1MSwweEFFLDB4RkEsMHhGMSww
eEEzLDB4ODQsMHg1OSwweDQzLDB4NTEsMHg3NSwweERGLDB4RUIsMHhGRSwKLSAgICAweDg0LDB4
NTksMHgyMywweDUxLDB4NTcsMHhGQSwweEZBLDB4REMsMHg4MywweDU5LDB4MjMsMHg1MSwweDdE
LDB4RjUsMHhGRCwweEVGLAotICAgIDB4NjMsMHg1OSwweDIzLDB4NTEsMHhERiwweEIyLDB4ODMs
MHhDQiwweDYzLDB4NTksMHgyMywweDUxLDB4RjEsMHhBQSwweEFGLDB4QUEsCi0gICAgMHg4NCww
eDYxLDB4NDMsMHg1OSwweERCLDB4RUQsMHgwRiwweDM5LDB4QTQsMHg2MSwweDQ0LDB4NTksMHhF
QiwweDJELDB4RTgsMHhBQSwKLSAgICAweEE0LDB4NjEsMHg2NCwweDU5LDB4RkYsMHhCRCwweEE5
LDB4RkYsMHg4NCwweDU5LDB4NDMsMHg1OSwweEY4LDB4NkMsMHhFRiwweEJGLAotICAgIDB4NjQs
MHg1OSwweDIzLDB4NTEsMHhBQSwweDIxLDB4MkEsMHhFRSwweDYzLDB4NTksMHgyMywweDUxLDB4
REEsMHg3QSwweDZGLDB4RUUsCi0gICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEVBLDB4OEEsMHhF
OSwweEZGLDB4NDQsMHg1OSwweDIzLDB4NTEsMHhBQiwweDVFLDB4NzcsMHhEQSwKLSAgICAweDQ0
LDB4NTksMHgyMywweDUxLDB4OTIsMHg3MywweEI2LDB4QTcsMHg0NCwweDU5LDB4RTIsMHg0OCww
eEEwLDB4RTgsMHg3OCwweEY4LAotICAgIDB4MjMsMHg1MSwweDAzLDB4NDksMHg2QiwweERGLDB4
NjksMHg2RCwweDIzLDB4NTEsMHhDMiwweDQwLDB4QUEsMHg5OCwweEFBLDB4QUEsCi0gICAgMHgy
MywweDUxLDB4RTIsMHg0OCwweEJBLDB4NkEsMHhEQSwweEIyLDB4MjMsMHg1MSwweEUyLDB4NDgs
MHg5MiwweDIzLDB4MDIsMHhBQSwKLSAgICAweDQzLDB4NTEsMHgwMywweDQ5LDB4Q0EsMHhBRiww
eDVGLDB4RjcsMHhFOSwweDhBLDB4MjMsMHg1MSwweEQ1LDB4OTUsMHhCNSwweDI1LAotICAgIDB4
QUIsMHhBMywweDg4LDB4ODIsMHg4RCwweDJCLDB4OEIsMHg4OCwweEFCLDB4QTMsMHg2QiwweDlC
LDB4RkUsMHgyRSwweEE2LDB4MkYsCi0gICAgMHhFQywweEFCLDB4QUIsMHhBMywweDg1LDB4QUQs
MHgyMSwweDJELDB4MEQsMHhBQywweENDLDB4QTMsMHg3RiwweDdELDB4N0YsMHg3QSwKLSAgICAw
eENCLDB4QTMsMHg4QiwweDlCLDB4RkUsMHg1QywweDU2LDB4NUUsMHg4QSwweDlCLDB4MjksMHg5
MywweDZFLDB4RjgsMHg3OCwweEQ4LAotICAgIDB4NkEsMHg5QiwweDI5LDB4OTMsMHhFRCwweEE3
LDB4Q0EsMHg3QiwweDZBLDB4OUIsMHgwOSwweDhCLDB4M0YsMHhERiwweEZFLDB4RkUsCi0gICAg
MHg2QSwweDlCLDB4MkEsMHg5MywweDdFLDB4RjksMHhBRiwweEFCLDB4NkEsMHg5QiwweDA4LDB4
OTMsMHhBRCwweDhCLDB4ODIsMHgwMiwKLSAgICAweDRBLDB4OTMsMHhDOCwweDgyLDB4N0EsMHg2
OCwweDYwLDB4NzAsMHhBOCwweDdBLDB4NDYsMHg3MiwweEE4LDB4NUEsMHg3OCwweEZFLAotICAg
IDB4ODgsMHg3QSwweDQ2LDB4NzIsMHhCQSwweDY5LDB4RTksMHhFRiwweDY3LDB4N0EsMHgwNiww
eDZBLDB4OTAsMHhGRSwweEVFLDB4QUEsCi0gICAgMHg2NywweDdBLDB4MDYsMHg2QSwweDYwLDB4
N0UsMHhGRiwweERGLDB4NDcsMHg3MiwweDA2LDB4NkEsMHg3QiwweDhELDB4N0YsMHhFNiwKLSAg
ICAweDI2LDB4NkEsMHhFNiwweDY5LDB4ODAsMHhFMCwweEE4LDB4QzAsMHgwNiwweDZBLDB4NjQs
MHg1MSwweDc4LDB4RUEsMHhDMCwweDAwLAotICAgIDB4RTUsMHg2MSwweEMyLDB4MzgsMHg3Riww
eDdFLDB4N0EsMHhGOCwweDIzLDB4NDksMHhDMiwweDM4LDB4QkQsMHhBRCwweDJCLDB4ODAsCi0g
ICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDVGLDB4NTcsMHg1RSwweDU4LDB4RTIsMHgzOCwweDgx
LDB4MzAsMHhBMiwweDAwLDB4QUMsMHhCRSwKLSAgICAweDAzLDB4MzksMHhDMiwweDM4LDB4QUIs
MHhCQiwweEZFLDB4RTcsMHgyMywweDQxLDB4RTMsMHgzOCwweDJELDB4RkIsMHhBRCwweEFELAot
ICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHhFMiwweEVBLDB4RkUsMHg3QiwweDAzLDB4NDEsMHhF
MywweDM4LDB4QUEsMHg3NiwweDRBLDB4RUIsCi0gICAgMHgyMywweDQxLDB4RTMsMHgzOCwweDBB
LDB4RUQsMHhGNSwweDVGLDB4MjQsMHg0MSwweEUyLDB4MzgsMHhFMCwweEYyLDB4RkEsMHhFMywK
LSAgICAweDI0LDB4NDEsMHhDMiwweDM4LDB4RUEsMHhCRCwweEVBLDB4QUUsMHgyNCwweDQxLDB4
RTIsMHgzOCwweEFDLDB4NzcsMHhERSwweDhBLAotICAgIDB4NDQsMHg0OSwweEUyLDB4MzgsMHhD
QSwweEZCLDB4NTcsMHhGNSwweDQ0LDB4NDksMHgwMywweDQxLDB4MkEsMHg1QiwweEZELDB4OUQs
Ci0gICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweEY4LDB4N0YsMHg1RSwweEZFLDB4ODUsMHg1MSww
eDI0LDB4NDksMHhBMywweEJELDB4QkYsMHgyNywKLSAgICAweEE1LDB4NTksMHg2NSwweDUxLDB4
RkUsMHg4QiwweDJGLDB4OEYsMHg4NSwweDUxLDB4NDQsMHg0OSwweEMzLDB4NkUsMHg3QywweDVD
LAotICAgIDB4NDQsMHg0OSwweEMzLDB4MzAsMHg1OCwweEYwLDB4RTAsMHhGOCwweDA0LDB4Mzks
MHhBMiwweDMwLDB4RDUsMHg3RiwweDdBLDB4RjgsCi0gICAgMHhFMywweDMwLDB4QTIsMHgzMCww
eDlDLDB4OUYsMHg5NSwweDk1LDB4MjQsMHgzOSwweEMzLDB4MzAsMHhGRCwweEZGLDB4RUIsMHg4
MiwKLSAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4N0YsMHhCRiwweEVBLDB4RUMsMHgwNCwweDM5
LDB4QzMsMHgzOCwweDU1LDB4RjUsMHhBRiwweEJELAotICAgIDB4MjMsMHg0MSwweEUzLDB4Mzgs
MHgzRCwweEZELDB4RDUsMHhCRCwweDg1LDB4NTksMHgwMywweDQxLDB4MEIsMHgwRiwweEFELDB4
QkYsCi0gICAgMHhBNSwweDU5LDB4NjUsMHg1MSwweDBGLDB4OEEsMHhEQiwweEZGLDB4MjYsMHg2
QSwweDg1LDB4NTEsMHhFQiwweDhCLDB4QUYsMHhGNSwKLSAgICAweEM2LDB4NTksMHg0NCwweDQ5
LDB4N0UsMHg1RSwweEVDLDB4QkMsMHg0NCwweDQ5LDB4MDQsMHg0MSwweDdGLDB4MjgsMHhCQSww
eEY4LAotICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHhGQywweEVFLDB4RkUsMHhCQywweDA0LDB4
NDEsMHhDMywweDM4LDB4QTIsMHhFOCwweEIwLDB4RjgsCi0gICAgMHhFMywweDM4LDB4QzMsMHgz
OCwweDAwLDB4MjMsMHgwMCwweDA4LDB4MDMsMHgzOSwweEMzLDB4MzAsMHhBRiwweEJGLDB4MEYs
MHgyOCwKLSAgICAweDY0LDB4NDksMHgwMywweDM5LDB4MkIsMHgyRiwweEJGLDB4QjUsMHg2NCww
eDQxLDB4MDMsMHg0MSwweDY4LDB4N0UsMHhGRSwweEZCLAotICAgIDB4NDQsMHg0MSwweDAzLDB4
NDEsMHg1NywweEQ1LDB4RkYsMHhGMywweDg1LDB4NDksMHgwMywweDQxLDB4QkQsMHhBRiwweEJE
LDB4RkYsCi0gICAgMHg4NSwweDQ5LDB4MjMsMHg0MSwweDVFLDB4RkUsMHg2OCwweERBLDB4NDQs
MHg0MSwweEUyLDB4MzgsMHhBQSwweEEyLDB4QUIsMHg3RiwKLSAgICAweDAzLDB4MzksMHhDMiww
eDMwLDB4NzgsMHhBOCwweDJBLDB4MDAsMHgwMywweDM5LDB4QzIsMHgzMCwweDJGLDB4Q0IsMHhF
OCwweDIzLAotICAgIDB4NDQsMHgzOSwweEUzLDB4MzgsMHhCRCwweEZELDB4REQsMHg1NSwweDI0
LDB4MzksMHgwMywweDM5LDB4RDAsMHg1QywweDVFLDB4NUQsCi0gICAgMHgyMywweDM5LDB4QzIs
MHgzMCwweEEyLDB4QTgsMHhGRSwweDc3LDB4MDMsMHgzOSwweEUyLDB4MzAsMHhFMCwweERFLDB4
QkIsMHhBRCwKLSAgICAweDIzLDB4NDEsMHhDMiwweDMwLDB4QUYsMHgyQiwweDBGLDB4MkYsMHg0
MywweDQxLDB4RTIsMHgzOCwweDZCLDB4RkUsMHgyQSwweEFBLAotICAgIDB4ODUsMHg0OSwweDIz
LDB4NDEsMHhGNSwweDdELDB4OTcsMHgzRCwweEE1LDB4NTEsMHgyMywweDQxLDB4N0QsMHhFRiww
eDZBLDB4ODAsCi0gICAgMHg4NSwweDUxLDB4MjMsMHg0MSwweEY3LDB4RkYsMHhFQiwweDIwLDB4
ODQsMHg1MSwweDQ0LDB4NDksMHg1QiwweDZBLDB4QkEsMHhDOCwKLSAgICAweEE2LDB4NTEsMHg0
NCwweDQ5LDB4RjUsMHhGRiwweEZGLDB4RjgsMHhBNSwweDU5LDB4MjMsMHg0MSwweEQ3LDB4RkYs
MHhBMiwweDAyLAotICAgIDB4QTUsMHg1OSwweDY0LDB4NTEsMHg3NSwweEE1LDB4RTUsMHg4OCww
eEM1LDB4NTksMHg4NCwweDUxLDB4OEQsMHgyQiwweEFCLDB4RkIsCi0gICAgMHhFNiwweDYxLDB4
ODQsMHg1OSwweDZBLDB4QzcsMHgyNywweDNGLDB4QzUsMHg2MSwweDg0LDB4NTksMHhFMywweDAw
LDB4OEUsMHg5QywKLSAgICAweDA2LDB4NkEsMHg2NCwweDU5LDB4RkQsMHhGQiwweEFBLDB4MDMs
MHgwNiwweDZBLDB4ODQsMHg1OSwweEI1LDB4QjcsMHgzNywweDNFLAotICAgIDB4ODgsMHg3QSww
eDA2LDB4NkEsMHgyRiwweEFGLDB4RUQsMHhBRiwweDA5LDB4OEIsMHg0NiwweDcyLDB4MkEsMHg4
RiwweEJELDB4QjUsCi0gICAgMHgwOSwweDhCLDB4QTgsMHg4MiwweDJGLDB4QTcsMHhBOSwweDJG
LDB4MkUsMHhBQywweEU5LDB4ODIsMHgyRCwweDM1LDB4M0QsMHhCNSwKLSAgICAweDM1LDB4RUUs
MHhCMCwweEJDLDB4MEIsMHgwQiwweDBCLDB4MDksMHg3NiwweEVFLDB4MzUsMHhFRSwweEZFLDB4
RUEsMHgyQSwweDI4LAotICAgIDB4NzYsMHhFRSwweDM1LDB4RTYsMHhGRiwweEZBLDB4QUEsMHhB
QSwweDc2LDB4RUUsMHgzNSwweEU2LDB4N0UsMHhFQSwweEU4LDB4NkEsCi0gICAgMHg1NSwweEVF
LDB4MzUsMHhFNiwweDdGLDB4QTgsMHhFOCwweDdBLDB4MTQsMHhFRSwweDM1LDB4RTYsMHhGRSww
eDc1LDB4RDUsMHhGNSwKLSAgICAweDM1LDB4RTYsMHhGNCwweERELDB4ODgsMHg4OCwweEE4LDB4
NzgsMHhGNCwweERELDB4MTEsMHhDNSwweEYwLDB4NzgsMHg3QywweDVBLAotICAgIDB4QjMsMHhD
RCwweDMxLDB4QzUsMHhBRiwweDhGLDB4MkQsMHg4OSwweEIzLDB4RDUsMHg1MiwweEM1LDB4MkEs
MHhBQSwweEJBLDB4RjYsCi0gICAgMHhEMywweENELDB4NzMsMHhDRCwweDVGLDB4REYsMHg2Riww
eDdELDB4OTMsMHhDRCwweDUyLDB4QzUsMHg3RiwweDZBLDB4QkIsMHhCRSwKLSAgICAweDczLDB4
Q0QsMHgxMiwweEJELDB4RkYsMHg3QSwweDdBLDB4NjgsMHgzMiwweEM1LDB4MTEsMHhCRCwweDYw
LDB4RUEsMHgwOSwweDBBLAotICAgIDB4MzIsMHhDNSwweEQwLDB4QjQsMHhGRiwweDZBLDB4RUEs
MHhBOCwweDExLDB4QkQsMHhCMCwweEI0LDB4MEEsMHg4QiwweEU4LDB4NkEsCi0gICAgMHhGMSww
eEI0LDB4ODksMHg3MiwweDgwLDB4QTgsMHhGRSwweDVFLDB4OTAsMHhBQywweEFELDB4OTMsMHhG
RSwweEJGLDB4QUQsMHgyRCwKLSAgICAweEIwLDB4QjQsMHg0RiwweEE0LDB4MDUsMHgwQiwweDJB
LDB4MEIsMHhEMCwweEI0LDB4OTAsMHhBQywweDhCLDB4REUsMHg3RSwweEZCLAotICAgIDB4RDEs
MHhCNCwweDZGLDB4QUMsMHgwQSwweDFELDB4QUIsMHg4QSwweEQxLDB4QjQsMHg4RiwweEFDLDB4
OUYsMHgzRSwweEZDLDB4MDgsCi0gICAgMHhEMSwweEI0LDB4OTAsMHhBQywweEZBLDB4QkMsMHhG
QSwweDJBLDB4RDEsMHhCNCwweDhGLDB4QUMsMHg4OCwweEY4LDB4N0IsMHg1RiwKLSAgICAweDg0
LDB4NTksMHg0MywweDUxLDB4M0YsMHgyRSwweDZBLDB4MkIsMHg4NCwweDU5LDB4MjIsMHg1MSww
eEE4LDB4QTIsMHhFOSwweEJGLAotICAgIDB4ODQsMHg1OSwweDIzLDB4NTEsMHhGRiwweEZBLDB4
RkIsMHhFMiwweDY0LDB4NTEsMHgyMywweDUxLDB4QUYsMHhGNiwweEFCLDB4QTksCi0gICAgMHg2
MywweDU5LDB4MjIsMHg1MSwweDhBLDB4ODIsMHg4RCwweDAyLDB4ODQsMHg1OSwweDQzLDB4NTks
MHhFQiwweEZGLDB4QkQsMHhCNSwKLSAgICAweEE0LDB4NjEsMHg2NCwweDU5LDB4REYsMHhGRSww
eDNCLDB4MUEsMHg4NCwweDYxLDB4NDMsMHg1OSwweEVBLDB4RkYsMHg0RSwweDdFLAotICAgIDB4
QTQsMHg2MSwweDIzLDB4NTEsMHhFOCwweEZBLDB4N0YsMHhGNSwweDYzLDB4NjEsMHg0MywweDUx
LDB4QTksMHhDRiwweEVELDB4QUIsCi0gICAgMHg2MywweDU5LDB4MjMsMHg1MSwweEZGLDB4QUEs
MHhBMywweEVBLDB4NjQsMHg1OSwweDQzLDB4NTksMHhGNSwweEUyLDB4NEIsMHg2NSwKLSAgICAw
eDQ0LDB4NTksMHgyMywweDUxLDB4MkUsMHgyQywweDBFLDB4NEQsMHg0MywweDU5LDB4MjMsMHg1
MSwweEQ4LDB4OUUsMHg3QywweEI4LAotICAgIDB4NDMsMHg1OSwweDAzLDB4NTEsMHhGRiwweDU2
LDB4RkMsMHhCRSwweDQzLDB4NTEsMHgwMywweDQ5LDB4NzgsMHg2OSwweEFBLDB4QjAsCi0gICAg
MHgyMywweDUxLDB4MDMsMHg0OSwweDc3LDB4NzUsMHg2MiwweDVDLDB4MDMsMHg0OSwweEUyLDB4
NDgsMHhCMiwweERELDB4NTcsMHgwQywKLSAgICAweDIzLDB4NTEsMHhFMiwweDQ4LDB4QTIsMHgy
MiwweEU4LDB4NkEsMHgyNCwweDUxLDB4RTIsMHg0OCwweEI2LDB4RUUsMHhGNSwweEFELAotICAg
IDB4NjMsMHg1OSwweEUyLDB4NDAsMHhGRiwweEJGLDB4QUQsMHgyRCwweDRBLDB4OTMsMHg4Myww
eDU5LDB4MjUsMHgyRCwweDI5LDB4MEIsCi0gICAgMHhBQiwweEEzLDB4NEEsMHg5QiwweENGLDB4
RkYsMHgyQSwweDAyLDB4RUMsMHhBQiwweDZCLDB4OUIsMHhBNSwweDhGLDB4MkEsMHgwQiwKLSAg
ICAweEVDLDB4QUIsMHhBQiwweEEzLDB4M0QsMHhFNiwweDZDLDB4RjgsMHhFQywweEFCLDB4OEEs
MHg5QiwweDA4LDB4QzgsMHhGQiwweDU3LAotICAgIDB4Q0IsMHhBMywweDhBLDB4OUIsMHhGQiww
eENFLDB4RUIsMHg1NSwweEFCLDB4QTMsMHg2QSwweDlCLDB4NTcsMHhFOCwweEVFLDB4QTksCi0g
ICAgMHg4QiwweDlCLDB4MjksMHg5MywweDdCLDB4RkUsMHhCQSwweEE4LDB4OEIsMHg5QiwweDQ5
LDB4OTMsMHg1NSwweEQ1LDB4RUUsMHgwMiwKLSAgICAweDhBLDB4OUIsMHg0QSwweDkzLDB4N0Qs
MHhERiwweDZCLDB4RjIsMHg2QSwweDlCLDB4MkEsMHg5MywweEFFLDB4QUMsMHhCRiwweEZFLAot
ICAgIDB4NkEsMHg5QiwweDg3LDB4ODIsMHg2OCwweDYyLDB4RUEsMHhGQSwweEE4LDB4N0EsMHg0
NiwweDcyLDB4RkMsMHhERSwweDdGLDB4N0UsCi0gICAgMHg2NywweDcyLDB4MDYsMHg3MiwweDhB
LDB4MjIsMHhFQSwweDhBLDB4NjcsMHg3MiwweDI2LDB4NzIsMHhFQSwweEU4LDB4RkUsMHhGOSwK
LSAgICAweDQ3LDB4NzIsMHgwNSwweDZBLDB4QkIsMHhFRSwweDdBLDB4MjAsMHg0NywweDcyLDB4
MDYsMHg2QSwweENBLDB4QTIsMHg3QSwweDc4LAotICAgIDB4NDcsMHg3MiwweDA2LDB4NkEsMHg2
OSwweEZBLDB4N0YsMHg1NywweDI2LDB4NkEsMHgwNiwweDZBLDB4NkYsMHhENywweDM3LDB4MjUs
Ci0gICAgMHgwNiwweDYyLDB4NDMsMHg1MSwweDc4LDB4RTAsMHg4MCwweDgwLDB4QTUsMHg1OSww
eDAzLDB4NDEsMHg1RiwweDdGLDB4RkEsMHhFOCwKLSAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4
NzAsMHg2MiwweEI4LDB4RUMsMHgwMywweDQxLDB4QTEsMHgzMCwweEZGLDB4N0UsMHhGQSwweEM4
LAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBRCwweDgzLDB4QTEsMHgzRiwweDQ0LDB4NDks
MHhFMiwweDM4LDB4QUQsMHhBRCwweDhCLDB4QUIsCi0gICAgMHg0NCwweDQ5LDB4RTIsMHgzOCww
eDVFLDB4N0EsMHhFOCwweEE4LDB4RTMsMHg0MCwweDAzLDB4MzksMHg3RSwweEQ3LDB4RkQsMHgz
RiwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4QTgsMHhGOCwweEZBLDB4RkEsMHgwMywweDQx
LDB4QzIsMHgzOCwweDgyLDB4QUUsMHhGNywweEY3LAotICAgIDB4MjQsMHg0MSwweEUzLDB4Mzgs
MHhCRiwweDNELDB4QkQsMHhCRCwweDQ0LDB4NDEsMHgwMywweDQxLDB4RjcsMHhGRiwweEFGLDB4
QUEsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweEU1LDB4QkIsMHhFQSwweDgyLDB4MjQsMHg0
OSwweDAzLDB4NDEsMHhCRiwweDdBLDB4MjMsMHgwQiwKLSAgICAweDQ0LDB4NDksMHgwMywweDQx
LDB4QkIsMHhDRiwweEJCLDB4QkYsMHhDNiwweDYxLDB4NDQsMHg0OSwweEZELDB4QTUsMHgyRCww
eEFELAotICAgIDB4QzYsMHg2MSwweDY1LDB4NTEsMHhGRCwweEZGLDB4RkEsMHhDQSwweDg2LDB4
NTEsMHgwNCwweDQxLDB4RUUsMHg3QywweEZFLDB4RUEsCi0gICAgMHgyNCwweDQxLDB4QzMsMHgz
OCwweEUwLDB4Q0EsMHhFQSwweEU2LDB4MDMsMHgzOSwweEMzLDB4MzgsMHg1RCwweEZCLDB4NzIs
MHhGRSwKLSAgICAweEUzLDB4MzgsMHhBMiwweDMwLDB4NUQsMHg1RSwweERFLDB4NUUsMHg0NSww
eDQxLDB4QzMsMHgzMCwweDgxLDB4RkIsMHhGRCwweEY1LAotICAgIDB4MDMsMHgzOSwweEMzLDB4
MzAsMHhGRSwweEVGLDB4RkUsMHhFMCwweDI0LDB4NDEsMHhDMywweDMwLDB4QkYsMHhBQiwweEY5
LDB4Q0QsCi0gICAgMHg0NCwweDQxLDB4RTMsMHg0MCwweEZGLDB4QUEsMHg4OSwweEJGLDB4NjUs
MHg0OSwweDAzLDB4NDEsMHgzRCwweEJGLDB4M0UsMHhBQiwKLSAgICAweDg1LDB4NTEsMHg0NCww
eDQ5LDB4QUEsMHg1QSwweEZCLDB4RUYsMHg4NSwweDUxLDB4MjQsMHg0OSwweDJCLDB4QUIsMHhG
RSwweDdBLAotICAgIDB4ODUsMHg1OSwweDA0LDB4NDksMHg4OCwweEZBLDB4RkEsMHg3RCwweDQ0
LDB4NDksMHhFMywweDM4LDB4QzAsMHhGOCwweEVGLDB4RkUsCi0gICAgMHgwNCwweDQxLDB4QzMs
MHgzOCwweEEyLDB4MEIsMHgyRiwweDNGLDB4MDQsMHg0MSwweEMzLDB4MzgsMHg2OCwweEVBLDB4
NzAsMHhCMCwKLSAgICAweDI0LDB4NDEsMHhDMywweDM4LDB4RDcsMHhGRCwweEFCLDB4MjksMHgw
NCwweDQxLDB4QzMsMHgzOCwweEE4LDB4RUYsMHhBRiwweEVGLAotICAgIDB4NDQsMHg0MSwweEMy
LDB4MzAsMHgyRiwweDhCLDB4MkYsMHhCNywweDY1LDB4NDksMHgwNCwweDQxLDB4RUIsMHhGQiww
eEVFLDB4RkUsCi0gICAgMHg0NCwweDQxLDB4MjMsMHg0MSwweDU1LDB4RDUsMHg5RCwweDU3LDB4
NjQsMHg0OSwweEUzLDB4MzgsMHhBQSwweDJCLDB4RkEsMHhENywKLSAgICAweDQ0LDB4NDEsMHgw
MywweDM5LDB4RUEsMHg3RSwweEZBLDB4RTgsMHgyMywweDQxLDB4QzIsMHgzMCwweEE4LDB4RkUs
MHhGQSwweDVBLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg4MCwweEEwLDB4QUIsMHg4RCww
eEMyLDB4MzgsMHhFMiwweDMwLDB4NzcsMHhGNywweEY1LDB4REQsCi0gICAgMHhFMywweDM4LDB4
QzIsMHgzMCwweEEyLDB4QTMsMHgzRSwweDJBLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFMiwweEU4
LDB4OEEsMHhBRiwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RkYsMHhGQiwweEFBLDB4QTgs
MHgyNCwweDM5LDB4QzMsMHgzMCwweEZELDB4RkIsMHhCRiwweEFCLAotICAgIDB4MDMsMHgzOSww
eEMyLDB4MzAsMHgyRiwweDhBLDB4MDAsMHg4MCwweDIzLDB4NDEsMHhFMywweDM4LDB4MEEsMHgz
QiwweDNCLDB4QUQsCi0gICAgMHg4NSwweDUxLDB4MjMsMHg0MSwweEJELDB4QUIsMHgzNywweEJE
LDB4QzUsMHg1MSwweDY0LDB4NDksMHgwQiwweEFGLDB4RkEsMHhGQiwKLSAgICAweEM2LDB4NTks
MHg4NSwweDUxLDB4N0EsMHg2RSwweEZBLDB4NTUsMHg4NCwweDUxLDB4NjQsMHg1MSwweERGLDB4
RjIsMHhFQiwweDc5LAotICAgIDB4ODUsMHg1MSwweDIzLDB4NDksMHgwMCwweDAyLDB4QkUsMHg3
RSwweEU2LDB4NjEsMHg0MywweDQ5LDB4QUIsMHgwQSwweDBCLDB4QUQsCi0gICAgMHgwNiwweDYy
LDB4QzYsMHg2MSwweDc1LDB4NUEsMHhGMiwweEExLDB4MDYsMHg2QSwweEE1LDB4NTksMHg3RCww
eEZCLDB4QkUsMHgzRiwKLSAgICAweDI3LDB4NkEsMHhBNCwweDU5LDB4RDUsMHhERiwweDc4LDB4
RjIsMHgwNiwweDZBLDB4QzUsMHg2MSwweDVBLDB4NkUsMHgyMSwweDlGLAotICAgIDB4NDcsMHg3
MiwweDg0LDB4NTksMHgwRiwweDI3LDB4QjcsMHhCRiwweEE4LDB4ODIsMHgwNiwweDZBLDB4NUQs
MHhGRiwweEE5LDB4ODEsCi0gICAgMHg2NywweDdBLDB4MDYsMHg2QSwweDBELDB4RjUsMHhERiww
eDdFLDB4QzksMHg4MiwweDQ2LDB4NzIsMHgwRiwweDJCLDB4MjksMHhBNSwKLSAgICAweDA5LDB4
OEIsMHhDOCwweDgyLDB4RjUsMHhENSwweEJBLDB4QTksMHg2QiwweDkzLDB4RTksMHg4MiwweDM1
LDB4M0QsMHgyNywweDJELAotICAgIDB4MTUsMHhFNiwweEVELDB4QTMsMHgwOSwweDBELDB4MkQs
MHgyRCwweDc1LDB4RUUsMHgzNSwweEVFLDB4OEEsMHg4QiwweEVELDB4RjUsCi0gICAgMHg3NSww
eEVFLDB4MzUsMHhFNiwweDhBLDB4QTgsMHhFRSwweEZELDB4NTUsMHhFRSwweDE1LDB4RTYsMHg4
OCwweDg4LDB4QTgsMHg0MiwKLSAgICAweDU1LDB4RUUsMHgxNCwweEU2LDB4OEEsMHhFRSwweEZG
LDB4NTUsMHgzNSwweEU2LDB4RjQsMHhERCwweEEwLDB4RTgsMHhGQSwweDdCLAotICAgIDB4MTQs
MHhERSwweEI0LDB4RDUsMHhDMCwweDgwLDB4NjgsMHg3RSwweDkzLDB4RDUsMHhGMSwweEJDLDB4
REMsMHhBOCwweEFDLDB4QUUsCi0gICAgMHhCNCwweEQ1LDB4NTIsMHhDNSwweEE5LDB4OEIsMHhB
QSwweEEwLDB4OTMsMHhDRCwweDMyLDB4QzUsMHhCQSwweEU4LDB4NjgsMHhFQSwKLSAgICAweDcy
LDB4Q0QsMHgzMiwweEM1LDB4MDAsMHg4MywweDJELDB4RUYsMHg3MywweENELDB4OTMsMHhDNSww
eDgyLDB4QUEsMHg3QywweEFBLAotICAgIDB4NzMsMHhDNSwweDMyLDB4QzUsMHhGOCwweEVBLDB4
RUEsMHhBQSwweDUyLDB4QzUsMHgxMSwweEJELDB4QkEsMHhGRSwweEY3LDB4NjcsCi0gICAgMHgz
MiwweEM1LDB4RjEsMHhCQywweEFDLDB4QUIsMHg3RiwweDVFLDB4MzIsMHhDNSwweEVELDB4OUIs
MHhFOCwweEU4LDB4NkEsMHg3QSwKLSAgICAweEVFLDB4OUIsMHg4OSwweDcyLDB4NTQsMHg5RSww
eEJFLDB4MkEsMHg0RiwweEE0LDB4NkMsMHg4QiwweDJELDB4MkIsMHgwQiwweDAyLAotICAgIDB4
RDEsMHhCNCwweDZGLDB4QUMsMHgyNSwweEZELDB4QjUsMHhGNSwweEQwLDB4QjQsMHg5MCwweEFD
LDB4RjYsMHgzQiwweEI1LDB4QjUsCi0gICAgMHhEMSwweEI0LDB4OEYsMHhBQywweEFBLDB4RUYs
MHgyQiwweEIwLDB4RDAsMHhCNCwweDZGLDB4QUMsMHhBMCwweEZFLDB4N0UsMHg1NywKLSAgICAw
eEIwLDB4QjQsMHg0RiwweEE0LDB4MDAsMHhBQSwweEE2LDB4QjcsMHhCMCwweEI0LDB4NEYsMHhB
NCwweEIwLDB4QkIsMHhBRiwweEI1LAotICAgIDB4NjMsMHg1OSwweDIyLDB4NDksMHg4MywweEZB
LDB4N0EsMHg1QiwweDg0LDB4NTksMHgyMiwweDUxLDB4QkIsMHhFRCwweDNCLDB4M0YsCi0gICAg
MHg2MywweDU5LDB4MjMsMHg1MSwweDAwLDB4ODMsMHgzQywweDJGLDB4ODQsMHg1OSwweDIyLDB4
NDksMHhGNiwweEEyLDB4QUMsMHhCQSwKLSAgICAweDg0LDB4NjEsMHg2MywweDU5LDB4NTUsMHg3
OSwweDRCLDB4NDUsMHg4NCwweDYxLDB4NDMsMHg1OSwweDJELDB4MkIsMHgyQiwweDBFLAotICAg
IDB4ODQsMHg2MSwweDYzLDB4NTksMHgxNSwweEI2LDB4RkUsMHg3QSwweDg0LDB4NTksMHg0Myww
eDU5LDB4RUUsMHhCRSwweEZFLDB4RkUsCi0gICAgMHg4NCwweDYxLDB4MjMsMHg1MSwweEZGLDB4
QUEsMHhCQSwweDY4LDB4NjMsMHg1OSwweDAyLDB4NTEsMHhBMiwweDBBLDB4QjgsMHg3RiwKLSAg
ICAweDYzLDB4NTksMHgyMywweDUxLDB4MkEsMHgwMiwweDJCLDB4N0YsMHg4NCwweDYxLDB4MjMs
MHg1MSwweEZBLDB4RTgsMHhEQiwweEY3LAotICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHhGQSww
eEZFLDB4NjIsMHg2RiwweDQ0LDB4NTEsMHgwMywweDUxLDB4OEEsMHgwMiwweDBCLDB4NkIsCi0g
ICAgMHg0NCwweDUxLDB4MDMsMHg0OSwweDdFLDB4NkEsMHg3MywweDY4LDB4NDMsMHg1MSwweEUx
LDB4NDgsMHhBMCwweEVBLDB4RkIsMHhFQSwKLSAgICAweDIzLDB4NTEsMHhFMiwweDQ4LDB4QUEs
MHhBNSwweEQ1LDB4RkIsMHgyMywweDUxLDB4RTMsMHg0OCwweEVGLDB4RTgsMHhBQSwweEFBLAot
ICAgIDB4MjMsMHg1MSwweEMyLDB4NDgsMHhBMiwweEFBLDB4QkEsMHg3OCwweDIzLDB4NTEsMHhD
MiwweDQ4LDB4QUEsMHhFRiwweEI3LDB4MjUsCi0gICAgMHhFNiwweDY5LDB4MDMsMHg1MSwweEY1
LDB4MzUsMHgzRCwweDJGLDB4NkEsMHg5QiwweDI1LDB4NzIsMHgyOSwweDAxLDB4MDMsMHgwMiwK
LSAgICAweENDLDB4QTMsMHg4QiwweDlCLDB4RUYsMHhFRiwweEVELDB4OEIsMHhBQywweEEzLDB4
OEIsMHg5QiwweDBBLDB4RjksMHg3OSwweDYyLAotICAgIDB4QUIsMHhBMywweDI5LDB4OTMsMHg4
MCwweDdBLDB4RkUsMHhGRSwweDY5LDB4OUIsMHgyOCwweDkzLDB4OEEsMHhBRCwweEFBLDB4ODAs
Ci0gICAgMHg4QSwweDlCLDB4NDksMHg5MywweDhCLDB4QUIsMHgyRiwweEJGLDB4OEEsMHg5Qiww
eDQ5LDB4OTMsMHgwMCwweDgyLDB4RkMsMHg3QSwKLSAgICAweDhCLDB4OUIsMHgyOSwweDkzLDB4
ODAsMHgzMiwweEVCLDB4N0YsMHg4QiwweDlCLDB4MDksMHg4QiwweDg4LDB4MjgsMHhGQiwweDU1
LAotICAgIDB4OEIsMHhBMywweDA5LDB4OTMsMHhBMiwweEUwLDB4RUYsMHhFRCwweDRBLDB4OTMs
MHhFOSwweDhBLDB4ODAsMHhBOCwweEY4LDB4RkYsCi0gICAgMHgwOSwweDhCLDB4NjcsMHg3QSww
eEUwLDB4RjgsMHhFOCwweDc4LDB4ODcsMHg3QSwweDI2LDB4NzIsMHhEQywweEZBLDB4RkUsMHhE
RSwKLSAgICAweDY3LDB4N0EsMHgyNiwweDZBLDB4NkYsMHg1QiwweDhBLDB4RkYsMHg0NiwweDcy
LDB4MDUsMHg2QSwweEJCLDB4REUsMHg4MCwweDAyLAotICAgIDB4NDYsMHg3MiwweDA2LDB4NkEs
MHgzQSwweEZBLDB4OEIsMHhFQiwweDQ3LDB4NzIsMHgwNiwweDZBLDB4NUMsMHhERSwweDdCLDB4
QjUsCi0gICAgMHgyNiwweDZBLDB4RTUsMHg2OSwweEFELDB4MzYsMHhCQSwweEE4LDB4NDcsMHg3
MiwweDA2LDB4NkEsMHhDMSwweEFCLDB4MjksMHgwRiwKLSAgICAweDY4LDB4NzIsMHgwNiwweDZB
LDB4N0EsMHg3QSwweEIwLDB4MjIsMHg2NywweDcyLDB4NDMsMHg0OSwweDdFLDB4RkEsMHhGOCww
eEUwLAotICAgIDB4NjQsMHg0OSwweEUzLDB4NDAsMHg3NywweDVFLDB4RkUsMHhGOCwweDAzLDB4
NDEsMHhDMiwweDM4LDB4QTgsMHgwQSwweDgwLDB4NzgsCi0gICAgMHgwMywweDQxLDB4QzIsMHgz
OCwweDAyLDB4QTIsMHhFQiwweEY5LDB4MjQsMHg0MSwweEMyLDB4MzgsMHgwQSwweDJFLDB4QkIs
MHhBOSwKLSAgICAweDQ0LDB4NDksMHgwMywweDM5LDB4MDIsMHhDMCwweEVGLDB4QTUsMHgyMyww
eDQxLDB4RTIsMHgzOCwweDVGLDB4REEsMHhERSwweEMyLAotICAgIDB4MDMsMHg0MSwweEMyLDB4
MzgsMHhGMiwweENBLDB4RTgsMHhGQSwweDAzLDB4MzksMHhDMiwweDM4LDB4QjcsMHhFRiwweDNG
LDB4REYsCi0gICAgMHgyNCwweDQxLDB4QzIsMHgzOCwweEFGLDB4MkYsMHgyRiwweDlGLDB4NjQs
MHg0OSwweDAzLDB4NDEsMHhCRCwweEFGLDB4MkQsMHgwRCwKLSAgICAweDY0LDB4NDksMHgwMyww
eDQxLDB4RkEsMHhGOCwweEU4LDB4NTgsMHgyNCwweDQ5LDB4MDMsMHg0MSwweDhBLDB4MjIsMHgw
QSwweDJGLAotICAgIDB4NDQsMHg0OSwweDI0LDB4NDksMHgzNywweDFBLDB4REMsMHg5NCwweEE2
LDB4NTksMHg0NCwweDQ5LDB4MkYsMHgwRiwweDNGLDB4QkQsCi0gICAgMHhDNiwweDU5LDB4NjUs
MHg1MSwweEMyLDB4RTIsMHg2MCwweEZCLDB4ODUsMHg1MSwweDIzLDB4NDEsMHg2QiwweDZBLDB4
RUUsMHhFMCwKLSAgICAweDI0LDB4NDEsMHhDMiwweDM4LDB4RkYsMHhENywweDc2LDB4NzgsMHgy
NCwweDQxLDB4QzMsMHgzOCwweDdGLDB4RkYsMHg3MywweEYzLAotICAgIDB4RTMsMHgzMCwweEEy
LDB4MzAsMHg3NywweEZELDB4QkUsMHgyRSwweDAzLDB4MzksMHhDMywweDMwLDB4QjUsMHhENSww
eEI3LDB4MkYsCi0gICAgMHg0NSwweDQxLDB4MDQsMHgzOSwweDU1LDB4N0EsMHhFMywweDdCLDB4
MDMsMHgzOSwweEUzLDB4MzgsMHhDOSwweEJGLDB4REYsMHgxRiwKLSAgICAweDI0LDB4NDEsMHhD
MiwweDM4LDB4QkEsMHg5RiwweDJFLDB4MjIsMHg0NCwweDQ5LDB4MDQsMHg0MSwweDBBLDB4MkIs
MHgyOSwweDBELAotICAgIDB4NjUsMHg1MSwweDQ0LDB4NDksMHhGNSwweEZELDB4QkIsMHg3NSww
eDQ0LDB4NDksMHgwMywweDQxLDB4ODgsMHhFQSwweEU4LDB4RTAsCi0gICAgMHgyNCwweDQxLDB4
RTMsMHg0MCwweDBBLDB4MEYsMHgyNywweDhBLDB4MjQsMHg0MSwweEUzLDB4MzgsMHhFOCwweDcw
LDB4NTgsMHg2QSwKLSAgICAweDAzLDB4NDEsMHhFMywweDM4LDB4RDcsMHhENywweDdGLDB4RkIs
MHgyNCwweDQxLDB4RTMsMHgzOCwweEJGLDB4QkYsMHg1NywweDVCLAotICAgIDB4MjQsMHg0MSww
eDAzLDB4MzksMHgyNywweDFFLDB4RjYsMHg3RiwweDI0LDB4NDEsMHhFMywweDM4LDB4NzgsMHg3
OCwweDZCLDB4QUYsCi0gICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEJELDB4RkQsMHgzRCwweDM3
LDB4NjUsMHg0OSwweDAzLDB4NDEsMHhGQSwweEVBLDB4NjIsMHhFOSwKLSAgICAweDQ0LDB4NDks
MHhFMywweDM4LDB4QUYsMHg2QSwweDBCLDB4MEEsMHg0NCwweDQ5LDB4QzIsMHgzMCwweDdFLDB4
RkEsMHhFOCwweEUwLAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHg4QSwweERBLDB4NUUsMHg1
MiwweEUyLDB4MzgsMHhDMiwweDMwLDB4N0MsMHhGNiwweEM1LDB4MkIsCi0gICAgMHgwMywweDM5
LDB4QzIsMHgzMCwweDJELDB4RUQsMHhBQiwweDJBLDB4MjMsMHgzOSwweEMyLDB4MzAsMHhGNyww
eDk3LDB4OEYsMHhBRSwKLSAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4RkQsMHhCRiwweEVCLDB4
MkEsMHgyMywweDM5LDB4RTMsMHgzMCwweEZELDB4RkUsMHhENCwweDdFLAotICAgIDB4MjQsMHgz
OSwweEMzLDB4MzAsMHhGRSwweEZGLDB4RkUsMHhBMywweDIzLDB4MzksMHhFMywweDM4LDB4MkIs
MHg4OSwweEI3LDB4RjUsCi0gICAgMHg0NCwweDQxLDB4RTMsMHgzMCwweDdGLDB4RUYsMHhCQSww
eDhCLDB4MjMsMHg0MSwweEUyLDB4MzgsMHhFRCwweDdELDB4RkYsMHg4QiwKLSAgICAweDQ0LDB4
NDEsMHhFMywweDM4LDB4MDksMHhGNSwweERCLDB4RDUsMHg4NSwweDUxLDB4MDMsMHg0MSwweDgy
LDB4RTMsMHhGRiwweEZELAotICAgIDB4ODUsMHg1MSwweDAyLDB4MzksMHgyOCwweDhBLDB4QjUs
MHg1NywweDg0LDB4NTEsMHgyMywweDQxLDB4MjAsMHhCQSwweEVBLDB4N0YsCi0gICAgMHg4NCww
eDUxLDB4MDMsMHg0MSwweDY4LDB4NkEsMHhGRSwweEFGLDB4QTUsMHg1OSwweDAzLDB4NDEsMHgy
OSwweDJELDB4QUYsMHgyRiwKLSAgICAweDA2LDB4NjIsMHhBNSwweDU5LDB4OEIsMHhCRiwweEFE
LDB4MkIsMHgyNiwweDZBLDB4QzUsMHg2MSwweERDLDB4QUIsMHg4QiwweEI3LAotICAgIDB4Mjcs
MHg2QSwweEM2LDB4NjEsMHhFQiwweEJGLDB4MzcsMHg1NiwweDY3LDB4N0EsMHhFNSwweDY5LDB4
NUYsMHhFQSwweEM4LDB4MDMsCi0gICAgMHgyNiwweDcyLDB4QzYsMHg2MSwweEI3LDB4QkYsMHhG
RiwweEZDLDB4ODgsMHg3QSwweDA2LDB4NkEsMHgwRCwweEFELDB4RjcsMHhENSwKLSAgICAweDY4
LDB4N0EsMHgwNiwweDZBLDB4NzgsMHg3QSwweDc3LDB4NkIsMHhBOCwweDdBLDB4QzQsMHg2MSww
eDJCLDB4QUIsMHhCRiwweEY1LAotICAgIDB4MDksMHg4QiwweDY3LDB4NzIsMHgwQSwweDA5LDB4
QUQsMHhCRCwweDI5LDB4OEIsMHhFOCwweDgyLDB4MEQsMHhGRCwweEZGLDB4NUQsCi0gICAgMHhE
NCwweERELDB4NkEsMHg5MywweDJELDB4MkQsMHgzNSwweEI1LDB4NTUsMHhFRSwweEQzLDB4REQs
MHgwQSwweDJCLDB4QTksMHgyRCwKLSAgICAweDU1LDB4RUUsMHgzNSwweEU2LDB4QkYsMHgzMyww
eEFGLDB4RkYsMHg1NSwweEVFLDB4MTUsMHhFNiwweEVBLDB4QkEsMHhGRSwweEZGLAotICAgIDB4
MzUsMHhFNiwweDE0LDB4RTYsMHhGNywweDdFLDB4RkEsMHg1NiwweDE0LDB4RTYsMHhCMywweEQ1
LDB4QTgsMHhFOCwweEZFLDB4NUEsCi0gICAgMHhENCwweERELDB4MzIsMHhDNSwweEEwLDB4RTgs
MHhGQSwweDdBLDB4OTMsMHhDRCwweDExLDB4QkQsMHgyRiwweDJFLDB4MDksMHgyRCwKLSAgICAw
eEI0LDB4RDUsMHg5MywweENELDB4NkEsMHg0QiwweDdGLDB4N0IsMHg5MywweENELDB4NzMsMHhD
RCwweDcyLDB4NkEsMHhFRSwweDY4LAotICAgIDB4NTIsMHhDNSwweDMyLDB4QkQsMHgzOCwweEJB
LDB4NzgsMHgzOCwweDcyLDB4Q0QsMHgzMiwweEM1LDB4MDgsMHg4QSwweEVBLDB4REEsCi0gICAg
MHg3MywweENELDB4MzIsMHhDNSwweDhBLDB4RUYsMHg1RCwweDc3LDB4MzIsMHhDNSwweEYxLDB4
QkMsMHhGRSwweEJDLDB4RUMsMHg2OCwKLSAgICAweDEyLDB4QkQsMHhCMCwweEI0LDB4RTAsMHhG
QywweDVGLDB4NzYsMHhCMCwweEI0LDB4MEUsMHg5QywweDYwLDB4RjgsMHhFOCwweDc4LAotICAg
IDB4MkUsMHhBNCwweEFDLDB4OTMsMHgxNywweDNGLDB4M0UsMHhGQSwweDZGLDB4QUMsMHgwRiww
eDlDLDB4QUQsMHgyQSwweDAzLDB4QTksCi0gICAgMHhCMCwweEI0LDB4NkYsMHhBQywweEQ1LDB4
OTUsMHhCOSwweEJELDB4RDEsMHhCNCwweDZGLDB4QUMsMHgyNywweDNCLDB4RUUsMHhGRSwKLSAg
ICAweEIxLDB4QjQsMHg0RiwweEE0LDB4RjgsMHhGOCwweEZGLDB4NUYsMHg2RiwweEE0LDB4MkYs
MHhBNCwweEIyLDB4MkEsMHhFQiwweEFCLAotICAgIDB4OEYsMHhBQywweDRGLDB4QTQsMHgyRiww
eEFGLDB4RUEsMHhGQiwweEIwLDB4QUMsMHg0RiwweEE0LDB4RjUsMHhCNywweDA5LDB4MEYsCi0g
ICAgMHg2MywweDU5LDB4MDIsMHg1MSwweDdFLDB4RUUsMHgyRCwweEFGLDB4NjMsMHg1OSwweDIy
LDB4NTEsMHgzRCwweDJGLDB4MDIsMHhFMCwKLSAgICAweDg0LDB4NTksMHgyMywweDUxLDB4ODcs
MHhDQSwweEE4LDB4RTMsMHg4NCwweDU5LDB4MjIsMHg1MSwweDdFLDB4QTMsMHg4MCwweDJCLAot
ICAgIDB4QTUsMHg2MSwweDYzLDB4NTksMHgyNSwweEQ1LDB4RjUsMHhFQiwweEM1LDB4NjEsMHg0
MywweDU5LDB4QUYsMHgyRiwweEU3LDB4RkQsCi0gICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweEUw
LDB4RjgsMHhFRSwweDdFLDB4ODQsMHg2MSwweDIzLDB4NTksMHhGQywweERCLDB4RUIsMHhEQSwK
LSAgICAweDY0LDB4NTksMHgyMywweDUxLDB4QTIsMHhGQiwweDdCLDB4NUEsMHg2MywweDU5LDB4
MjMsMHg1MSwweEZGLDB4RDgsMHhCRCwweEE5LAotICAgIDB4NjMsMHg1OSwweDIzLDB4NTEsMHg3
RiwweEFBLDB4OEEsMHg2RSwweDY0LDB4NTEsMHgwMiwweDUxLDB4QUUsMHhCNCwweEJBLDB4QUEs
Ci0gICAgMHg0MywweDU5LDB4MDMsMHg1MSwweEU4LDB4QTgsMHhGRiwweEZBLDB4NDMsMHg1MSww
eDAzLDB4NDksMHhBRiwweEJFLDB4QUYsMHhCRSwKLSAgICAweDY0LDB4NTksMHgwMiwweDQ5LDB4
RjgsMHhEMiwweDVCLDB4N0YsMHgyMywweDUxLDB4MDMsMHg0OSwweDg4LDB4MzgsMHgwQiwweDAz
LAotICAgIDB4MjMsMHg1MSwweDAzLDB4NDksMHg3RiwweEFDLDB4RUUsMHg2MywweDIzLDB4NTEs
MHhFMiwweDQwLDB4QUEsMHhFQSwweEI2LDB4MEEsCi0gICAgMHgyMywweDUxLDB4QzIsMHg0OCww
eDcyLDB4QkEsMHhFQSwweDAwLDB4NjQsMHg1OSwweDAzLDB4NTEsMHhGRCwweDhCLDB4QUEsMHhB
QSwKLSAgICAweEM5LDB4OEEsMHg2NCwweDU5LDB4OTUsMHhCNSwweDM1LDB4MzUsMHhBQywweEEz
LDB4MDksMHg4QiwweDJELDB4MkIsMHgyQiwweEFBLAotICAgIDB4Q0MsMHhBMywweDhCLDB4OUIs
MHhFQiwweEVCLDB4QUEsMHgwRiwweEVDLDB4QUIsMHhBQiwweEEzLDB4NzUsMHg3NSwweEZCLDB4
MDcsCi0gICAgMHhFQywweEFCLDB4NEEsMHg5MywweDVGLDB4RkUsMHhBQywweDg4LDB4QUIsMHhB
MywweDQ5LDB4OTMsMHhGRiwweERGLDB4QUEsMHhFMCwKLSAgICAweDZBLDB4OUIsMHg0OSwweDkz
LDB4OEIsMHgyOCwweDJBLDB4Q0MsMHg2QSwweDlCLDB4MDgsMHg5MywweEEwLDB4NzIsMHhGOCww
eEIyLAotICAgIDB4NDksMHg5MywweEU4LDB4OEEsMHg3RSwweDdGLDB4RDYsMHg4OCwweDI5LDB4
OTMsMHhFOCwweDhBLDB4RkEsMHhERSwweEZFLDB4RUIsCi0gICAgMHhFOSwweDkyLDB4MDksMHg4
QiwweDU1LDB4RkYsMHg1RiwweDk1LDB4MjksMHg5MywweEM4LDB4ODIsMHg2OCwweDdBLDB4N0Es
MHhGRiwKLSAgICAweEU5LDB4OEEsMHg4NywweDdBLDB4N0EsMHhFOCwweDgyLDB4QTAsMHhBOCww
eDgyLDB4NDYsMHg3MiwweDc3LDB4N0YsMHg3QSwweDdDLAotICAgIDB4NjcsMHg3MiwweDI2LDB4
NzIsMHg3RCwweDZGLDB4M0IsMHgyQSwweDY2LDB4NzIsMHgwNSwweDZBLDB4RUIsMHg2QSwweEU4
LDB4QjgsCi0gICAgMHg2NywweDcyLDB4RTUsMHg2OSwweDZFLDB4RUUsMHhGRSwweDJFLDB4NDcs
MHg3MiwweEU1LDB4NjksMHhBRiwweDI3LDB4MzcsMHg5RSwKLSAgICAweDQ3LDB4NzIsMHgwNiww
eDZBLDB4NzcsMHg1NiwweEZDLDB4QUYsMHg2NywweDdBLDB4MDYsMHg2QSwweEE1LDB4QkYsMHg4
RSwweEFBLAotICAgIDB4ODcsMHg3QSwweDQ3LDB4NzIsMHhGNSwweEI3LDB4RkUsMHgyRiwweDg3
LDB4N0EsMHhFNiwweDYxLDB4NzAsMHg4MiwweDAwLDB4MDAsCi0gICAgMHgyNiwweDZBLDB4MDMs
MHg0MSwweDVFLDB4N0MsMHg3OCwweEY4LDB4MDMsMHg0MSwweEEyLDB4MzgsMHg1QywweEUwLDB4
ODAsMHhBMCwKLSAgICAweEUyLDB4MzgsMHhBMiwweDMwLDB4ODIsMHgyQSwweDFFLDB4QUUsMHgw
MywweDQxLDB4RTMsMHgzOCwweEU5LDB4RkQsMHhDMiwweEVCLAotICAgIDB4MjQsMHg0MSwweEUy
LDB4MzgsMHhGNSwweEZBLDB4RTIsMHhBQiwweDI0LDB4NDEsMHhFMywweDM4LDB4RUYsMHg1Riww
eDdCLDB4NUQsCi0gICAgMHhFMywweDM4LDB4QzIsMHgzOCwweDgwLDB4QTAsMHhDOCwweDAzLDB4
MjMsMHg0MSwweEMyLDB4MzgsMHg1NywweERGLDB4RkYsMHhCRiwKLSAgICAweDAzLDB4NDEsMHhF
MywweDM4LDB4MDUsMHgwMSwweDY5LDB4MkIsMHg0NCwweDQ5LDB4MDMsMHgzOSwweEFBLDB4NkEs
MHhBRCwweEI1LAotICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhGOCwweDdFLDB4REEsMHg3QSww
eDI0LDB4NDksMHhFMywweDQwLDB4QjYsMHhBRSwweEI2LDB4RkYsCi0gICAgMHg2NSwweDUxLDB4
MDMsMHg0MSwweDNELDB4QjUsMHhENSwweDU1LDB4ODUsMHg1MSwweEMzLDB4NDAsMHgwQSwweEFB
LDB4QUEsMHhGRCwKLSAgICAweEE2LDB4NTksMHgyNCwweDQ5LDB4QTIsMHgyMiwweEJCLDB4RkQs
MHg4NSwweDUxLDB4NDQsMHg0OSwweDQyLDB4RTgsMHhGQSwweDJGLAotICAgIDB4NjUsMHg0OSww
eEMyLDB4MzAsMHg3RSwweDdBLDB4NzgsMHhFMCwweDAzLDB4NDEsMHhDMywweDMwLDB4QTEsMHhF
MywweEZBLDB4RkEsCi0gICAgMHhFMywweDM4LDB4QzMsMHgzMCwweERDLDB4NUEsMHhGQywweEZG
LDB4MDQsMHgzOSwweEMzLDB4MzAsMHg4RCwweEJELDB4RDUsMHg3RCwKLSAgICAweDI0LDB4Mzks
MHhBMiwweDMwLDB4MjIsMHgzRSwweEZGLDB4RDUsMHgwMywweDM5LDB4QzMsMHgzMCwweDAwLDB4
MDAsMHgwQSwweDNELAotICAgIDB4MjQsMHg0MSwweDAzLDB4MzksMHg1QiwweEJCLDB4ODMsMHhB
RCwweDQ0LDB4NDksMHgwMywweDQxLDB4MEQsMHgwQiwweDNELDB4MDksCi0gICAgMHg2NCwweDQ5
LDB4MjQsMHg0OSwweEFFLDB4QUYsMHhBRiwweEJCLDB4NDQsMHg0OSwweDAzLDB4NDEsMHg4MCww
eEEwLDB4NzIsMHhGRSwKLSAgICAweDI0LDB4NDEsMHhDMiwweDM4LDB4MDAsMHhBQSwweEJBLDB4
NzgsMHgwMywweDQxLDB4QzMsMHgzOCwweDgyLDB4MkEsMHhBMCwweDNGLAotICAgIDB4MDMsMHg0
MSwweEUzLDB4MzgsMHhCQSwweDlFLDB4NUEsMHhGOCwweDI0LDB4NDEsMHgwMywweDM5LDB4NTcs
MHgzQSwweDBCLDB4RUYsCi0gICAgMHg2NSwweDQxLDB4RTMsMHgzMCwweEZGLDB4REYsMHg3Qyww
eDdGLDB4NDQsMHgzOSwweEUzLDB4MzgsMHhCRiwweEJGLDB4RjcsMHg3NSwKLSAgICAweDIzLDB4
MzksMHhFMywweDM4LDB4MzgsMHhGQSwweEJELDB4MkYsMHg0NCwweDQxLDB4MDMsMHgzOSwweDhC
LDB4QTksMHhFQSwweEUyLAotICAgIDB4NjQsMHg0OSwweDAyLDB4MzksMHhBMCwweEVCLDB4RkYs
MHg1NywweDQ0LDB4NDEsMHhDMiwweDMwLDB4RjgsMHg2QSwweEYyLDB4RkYsCi0gICAgMHgwMiww
eDM5LDB4QzIsMHgzMCwweDU3LDB4REYsMHhERSwweDc4LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhC
RiwweEE2LDB4OEIsMHhFNSwKLSAgICAweDIzLDB4MzksMHhFMiwweDM4LDB4RkQsMHhBRiwweDBC
LDB4QTksMHgyMywweDM5LDB4RTIsMHgzMCwweEZGLDB4RkEsMHhFMiwweEUzLAotICAgIDB4MjQs
MHgzOSwweDAzLDB4MzksMHgyRiwweEU1LDB4NzUsMHhCNSwweDI0LDB4MzksMHhFMywweDM4LDB4
N0MsMHhGQywweEE4LDB4MDgsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEEyLDB4RTAsMHhC
OCwweEIwLDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyQiwweEFGLDB4REQsMHg3QSwKLSAgICAweDIz
LDB4NDEsMHhDMiwweDMwLDB4MEIsMHhCRiwweERELDB4NUQsMHg2NCwweDQxLDB4QzIsMHgzOCww
eEVBLDB4QUEsMHhBQiwweEFELAotICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHhENywweDVCLDB4
RkMsMHhBOCwweDQzLDB4NDEsMHhFMywweDM4LDB4OEQsMHhCNSwweEY3LDB4RkYsCi0gICAgMHg0
NCwweDQxLDB4RTMsMHgzOCwweEZFLDB4QkEsMHgzQiwweEI5LDB4MjMsMHg0MSwweEUyLDB4Mzgs
MHgwMCwweEM3LDB4RjYsMHhCQywKLSAgICAweDQ0LDB4NDksMHhFMiwweDM4LDB4MDIsMHhGQSww
eDlFLDB4RUIsMHhBNSwweDUxLDB4MjMsMHg0OSwweDI3LDB4QkYsMHhCNywweEJELAotICAgIDB4
NDcsMHg2QSwweDg0LDB4NTEsMHgyNywweDNGLDB4QkQsMHhGRCwweDg4LDB4N0EsMHhFNiwweDYx
LDB4RjUsMHhGQSwweEFBLDB4MEIsCi0gICAgMHg0NywweDcyLDB4QTUsMHg2MSwweDU1LDB4NTcs
MHg1QywweEUyLDB4NDcsMHg3MiwweDg1LDB4NTksMHgwQiwweDJELDB4QjcsMHhGRSwKLSAgICAw
eDQ3LDB4NzIsMHhFNSwweDY5LDB4NzgsMHg2MCwweERCLDB4NzksMHgwNSwweDZBLDB4QzUsMHg2
MSwweDgzLDB4QkYsMHg4RSwweDBCLAotICAgIDB4NjcsMHg3MiwweEU1LDB4NjEsMHg4QiwweDA5
LDB4MDksMHhCNSwweDQ3LDB4NzIsMHhFNSwweDYxLDB4RjYsMHhCRSwweEUwLDB4MDAsCi0gICAg
MHhBNywweDdBLDB4MjYsMHg3MiwweDA5LDB4MkIsMHgwOSwweDJCLDB4MDksMHg4MywweEE4LDB4
N0EsMHhFQiwweEE1LDB4MzUsMHg3RCwKLSAgICAweDhGLDB4QjQsMHhFOCwweDgyLDB4MkQsMHgy
RCwweDJELDB4MkQsMHgzNSwweEU2LDB4MzEsMHhDRCwweDBCLDB4MjksMHhBRCwweDJELAotICAg
IDB4MzUsMHhFNiwweDE0LDB4RTYsMHhBOCwweEJGLDB4RjcsMHg1NSwweDM1LDB4RTYsMHhGNCww
eERELDB4QTgsMHhBOCwweEZBLDB4REYsCi0gICAgMHgzNCwweEU2LDB4RjQsMHhERCwweEVBLDB4
NkEsMHhGQiwweDdCLDB4MTQsMHhERSwweDkzLDB4RDUsMHhGOCwweEZFLDB4RkUsMHg3QSwKLSAg
ICAweDkzLDB4RDUsMHhGMSwweEJDLDB4NjgsMHg1OCwweDU4LDB4NUUsMHg5MywweENELDB4MTEs
MHhCRCwweDJELDB4MjksMHgyOSwweDJGLAotICAgIDB4QjQsMHhDRCwweDczLDB4Q0QsMHhBQSww
eEVBLDB4RkUsMHg3QiwweDkzLDB4Q0QsMHgzMiwweEM1LDB4ODIsMHhDQSwweEZFLDB4N0YsCi0g
ICAgMHg5MiwweEM1LDB4MzIsMHhDNSwweDlFLDB4RkYsMHhGNywweEY3LDB4NTIsMHhDNSwweDMy
LDB4QzUsMHg4MCwweEEwLDB4QzYsMHhDOCwKLSAgICAweDUyLDB4QzUsMHgxMSwweEJELDB4RjAs
MHhFQSwweEZBLDB4NzIsMHgxMiwweEM1LDB4QjAsMHhBQywweEEwLDB4RkEsMHhGRSwweDYwLAot
ICAgIDB4RjEsMHhCQywweDkwLDB4QUMsMHhGOCwweEY4LDB4RjYsMHhERiwweEIwLDB4QUMsMHhF
RCwweDlCLDB4RjgsMHg3OCwweDVFLDB4NTcsCi0gICAgMHgyRSwweEE0LDB4Q0QsMHg5MywweDhF
LDB4M0QsMHhGNywweEY1LDB4OTAsMHhBQywweEVFLDB4OUIsMHgyRiwweDJGLDB4MkIsMHgyOSwK
LSAgICAweEIwLDB4QjQsMHg0RiwweEFDLDB4QUUsMHhFRiwweEUyLDB4RkEsMHg5MCwweEFDLDB4
NEYsMHhBNCwweDg4LDB4QTAsMHhGRSwweDU3LAotICAgIDB4NkYsMHhBQywweDBFLDB4OUMsMHg3
MiwweEU4LDB4QUEsMHgwMiwweDkwLDB4QUMsMHgyRSwweEE0LDB4MjksMHgyOSwweDJGLDB4MEEs
Ci0gICAgMHg5MCwweEFDLDB4NkYsMHhBNCwweDZBLDB4MDAsMHgyOCwweDA4LDB4QjAsMHhBQyww
eDRFLDB4QTQsMHgyQSwweEIwLDB4RjgsMHg1OCwKLSAgICAweDg0LDB4NTksMHgyMiwweDUxLDB4
RkQsMHg5RiwweEY3LDB4Q0EsMHg4NCwweDU5LDB4NDMsMHg1MSwweEZGLDB4OEUsMHhGNywweDVB
LAotICAgIDB4ODMsMHg1OSwweDIyLDB4NTEsMHhDQSwweEFBLDB4NkEsMHhFQiwweDg0LDB4NjEs
MHgyMiwweDUxLDB4MkYsMHhBRiwweDBELDB4QTksCi0gICAgMHg4NCwweDYxLDB4NDMsMHg1MSww
eDRDLDB4Q0IsMHhBRSwweEZFLDB4NjMsMHg1OSwweDIzLDB4NTEsMHgwMCwweEQ4LDB4NUUsMHg2
OSwKLSAgICAweDY0LDB4NTksMHgyMiwweDUxLDB4RUEsMHg4QSwweEZFLDB4RkYsMHg4NCwweDU5
LDB4MjIsMHg1MSwweERBLDB4MjgsMHhBQSwweEFGLAotICAgIDB4NjMsMHg1OSwweDIzLDB4NTEs
MHhGOCwweDY4LDB4RjgsMHgzMCwweDY0LDB4NTksMHgyMiwweDUxLDB4OEIsMHgwOSwweEQ3LDB4
NUUsCi0gICAgMHg2NCwweDU5LDB4MDIsMHg0OSwweEZGLDB4RkEsMHhGQywweEZGLDB4NDMsMHg1
MSwweDAyLDB4NDksMHhBQSwweEFCLDB4NkYsMHhDQiwKLSAgICAweDQzLDB4NTEsMHgwMywweDQ5
LDB4RkEsMHhGQSwweEFCLDB4MEYsMHg2NCwweDU5LDB4MDMsMHg0OSwweEJGLDB4RkIsMHhBMSww
eEZCLAotICAgIDB4NDQsMHg1MSwweDAyLDB4NDksMHhBRSwweEFBLDB4NkEsMHg0MCwweDQ0LDB4
NTEsMHhFMywweDQ4LDB4RUYsMHhBQiwweDhGLDB4QUQsCi0gICAgMHgyMywweDUxLDB4RTIsMHg0
OCwweEUyLDB4RTAsMHhFMCwweDY4LDB4MjQsMHg1OSwweDAyLDB4NDksMHhBMywweDg5LDB4M0Is
MHgzOSwKLSAgICAweDQzLDB4NTksMHgwMywweDUxLDB4MjksMHgwMywweEEyLDB4MjAsMHg2NCww
eDU5LDB4NDQsMHg1OSwweERCLDB4MjEsMHhBNSwweDk1LAotICAgIDB4NEEsMHg5MywweEE1LDB4
NjEsMHhCNSwweDI1LDB4MjUsMHgyRCwweENCLDB4QTMsMHg0QiwweDlCLDB4MzksMHhCRCwweEJG
LDB4QkYsCi0gICAgMHhDQywweEEzLDB4OEIsMHg5QiwweDBCLDB4QkMsMHhCQiwweEFGLDB4RUMs
MHhBQiwweENDLDB4QTMsMHgwQywweDAyLDB4QUUsMHhDQiwKLSAgICAweEVDLDB4QUIsMHhBQiww
eEEzLDB4QjgsMHhBQywweEY4LDB4N0UsMHhDQywweEEzLDB4NkEsMHg5QiwweEU4LDB4QUEsMHg2
OCwweEJBLAotICAgIDB4QUIsMHhBMywweDQ5LDB4OTMsMHhGRSwweEZCLDB4QUUsMHhCMiwweDhB
LDB4OUIsMHgyOSwweDkzLDB4QUYsMHg4OCwweEJBLDB4NUUsCi0gICAgMHg2QSwweDlCLDB4MDks
MHg4QiwweEM4LDB4ODIsMHhGQywweDc0LDB4NDksMHg5MywweEU4LDB4OEEsMHhBQSwweEU4LDB4
RUUsMHhGNywKLSAgICAweDI5LDB4OTMsMHhDOCwweDgyLDB4QzIsMHhFMiwweDdBLDB4NUUsMHgw
OSwweDhCLDB4QzgsMHg4MiwweDdGLDB4NzAsMHg3RiwweDVELAotICAgIDB4RTksMHg4QSwweDg3
LDB4N0EsMHhGMCwweDc4LDB4RjgsMHhGMiwweDg3LDB4N0EsMHgyNiwweDZBLDB4REEsMHhGQSww
eDc4LDB4QjgsCi0gICAgMHg2NywweDcyLDB4NDYsMHg3MiwweDdFLDB4QjYsMHhCNSwweEFCLDB4
NjcsMHg3MiwweDI2LDB4NzIsMHhGQywweEJBLDB4MjUsMHhBRCwKLSAgICAweDQ2LDB4NzIsMHgw
NSwweDZBLDB4NjAsMHhDMiwweEUwLDB4ODAsMHg0NiwweDcyLDB4RTUsMHg2OSwweERCLDB4Mjks
MHgyOSwweDBBLAotICAgIDB4NDYsMHg3MiwweDA1LDB4NkEsMHhEQSwweENBLDB4QUUsMHhBQSww
eDQ3LDB4NzIsMHgwNiwweDZBLDB4MDAsMHg4OSwweDAwLDB4MDgsCi0gICAgMHhBNywweDdBLDB4
NDYsMHg3MiwweEVELDB4MjUsMHgyQiwweDI3LDB4RTgsMHg4MiwweDg3LDB4N0EsMHg3NywweENG
LDB4RkIsMHhFQiwKLSAgICAweEE4LDB4N0EsMHg2NCwweDUxLDB4NUUsMHg2QSwweEUwLDB4QTAs
MHg4NCwweDUxLDB4RTMsMHg0MCwweDVGLDB4N0UsMHg1QywweDU4LAotICAgIDB4RTMsMHgzOCww
eEEyLDB4MzgsMHhDMCwweEFBLDB4RTIsMHhFQSwweEUzLDB4MzgsMHhBMSwweDMwLDB4MEYsMHgw
RiwweDJGLDB4MjcsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgzOCwweDJCLDB4QTcsMHg5RiwweEZF
LDB4MDMsMHg0MSwweEEyLDB4MzAsMHhFMCwweEUwLDB4NjgsMHg3QiwKLSAgICAweEUzLDB4Mzgs
MHhBMiwweDMwLDB4MjUsMHhBQiwweEFCLDB4QjksMHgyMywweDQxLDB4RTMsMHgzOCwweEJELDB4
QUYsMHgwQiwweEFCLAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzgsMHhBRSwweEZBLDB4RjIsMHg2
QSwweDQ1LDB4NDEsMHhFMywweDM4LDB4M0YsMHhGNSwweEZGLDB4NTcsCi0gICAgMHg0NCwweDQ5
LDB4RTMsMHgzOCwweEU4LDB4RjgsMHhFRSwweEVELDB4MDMsMHg0MSwweEUzLDB4MzgsMHg4OCww
eDdBLDB4ODIsMHhFMCwKLSAgICAweDAzLDB4NDEsMHhFMywweDQwLDB4ODAsMHgwMywweEYyLDB4
NjEsMHgwMywweDQxLDB4QzMsMHgzOCwweDhBLDB4QUEsMHg2QiwweERCLAotICAgIDB4NDQsMHg0
OSwweEMzLDB4MzgsMHhBQSwweEFCLDB4QUQsMHhFRiwweDg2LDB4NTEsMHgwMywweDQxLDB4MkIs
MHhCOSwweEI1LDB4RkQsCi0gICAgMHg2NSwweDQ5LDB4MDMsMHg0MSwweEEwLDB4RjgsMHhFQSww
eDdBLDB4MjQsMHg0MSwweEMzLDB4MzAsMHhGRSwweDU4LDB4N0EsMHhGQSwKLSAgICAweEUzLDB4
MzgsMHg4MiwweDI4LDB4MkUsMHhCRiwweERBLDB4RTgsMHhDMiwweDMwLDB4ODEsMHgyOCwweDgw
LDB4RUEsMHhGRSwweEZGLAotICAgIDB4QzMsMHgzMCwweDgxLDB4MjgsMHgyRiwweDJGLDB4MkYs
MHgyQiwweDAzLDB4MzksMHhDMywweDMwLDB4MzUsMHhCQiwweEJGLDB4OUYsCi0gICAgMHgyNCww
eDQxLDB4RTMsMHgzOCwweDJGLDB4MjcsMHhBRiwweEFCLDB4NjUsMHg0OSwweDAzLDB4NDEsMHgy
RiwweEFGLDB4QUQsMHgwRiwKLSAgICAweDY1LDB4NDksMHgyMywweDQxLDB4NkEsMHg2QSwweEY3
LDB4QUIsMHg0NCwweDQ5LDB4MDMsMHg0MSwweDJGLDB4QUYsMHhGRiwweERDLAotICAgIDB4NDUs
MHg0OSwweEUzLDB4MzgsMHg3RSwweDZFLDB4QTAsMHhBQSwweDI0LDB4NDEsMHhDMywweDM4LDB4
QkQsMHhGRiwweEZDLDB4RkMsCi0gICAgMHgwMywweDM5LDB4RTMsMHgzOCwweEJDLDB4RkMsMHhG
QSwweEJGLDB4MjQsMHgzOSwweEMzLDB4MzAsMHhBMiwweEMyLDB4OEEsMHhFNiwKLSAgICAweDAz
LDB4MzksMHhDMiwweDMwLDB4Q0EsMHg0QSwweDUyLDB4NUEsMHgwMywweDM5LDB4QTIsMHgzMCww
eEFBLDB4QTMsMHg5RiwweEZELAotICAgIDB4MjMsMHgzOSwweEUzLDB4MzgsMHgwMiwweDJDLDB4
QkQsMHg3RCwweDQ0LDB4NDEsMHhFMywweDM4LDB4ODAsMHhGQSwweDVFLDB4NTUsCi0gICAgMHgy
NCwweDQxLDB4QzIsMHgzMCwweDc4LDB4REEsMHhGRiwweEZGLDB4MDMsMHgzOSwweEMyLDB4MzAs
MHgyQiwweEFELDB4QUIsMHhGQSwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4ODAsMHgyMCww
eEVGLDB4RjcsMHgwMywweDM5LDB4QzIsMHgzMCwweEY2LDB4QTIsMHhFRSwweEU4LAotICAgIDB4
MjMsMHgzOSwweEUzLDB4MzAsMHhBRCwweEJELDB4RjUsMHhFOSwweDIzLDB4MzksMHhFMywweDMw
LDB4MjIsMHhBQSwweEJGLDB4NzcsCi0gICAgMHgyMywweDM5LDB4RTIsMHgzMCwweDhBLDB4NjMs
MHhBQiwweEJFLDB4NDQsMHg0MSwweEUzLDB4MzgsMHgzQiwweEJELDB4NzksMHhERiwKLSAgICAw
eDI0LDB4NDEsMHhFMywweDM4LDB4REUsMHhGQSwweEZFLDB4N0MsMHgyNCwweDM5LDB4RTIsMHgz
MCwweDdCLDB4RkYsMHhCMCwweEFBLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg1RCwweEQ3
LDB4RjcsMHhGQywweDQ0LDB4NDEsMHhFMiwweDMwLDB4M0QsMHhGNSwweERGLDB4QjUsCi0gICAg
MHg0NCwweDQxLDB4MDMsMHgzOSwweEZBLDB4QkEsMHhFQiwweEZFLDB4MjMsMHg0MSwweEUzLDB4
MzgsMHhGRSwweEJFLDB4QUEsMHhBRSwKLSAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4QTAsMHg1
MCwweDVGLDB4NTUsMHgyNCwweDQxLDB4QzIsMHgzOCwweEFGLDB4N0UsMHg2MywweDhBLAotICAg
IDB4NjQsMHg0OSwweDAzLDB4MzksMHhBRCwweEFELDB4QUIsMHhBRiwweDg0LDB4NTEsMHg0NCww
eDQ5LDB4OTUsMHgzNSwweDE1LDB4RUQsCi0gICAgMHhDNSwweDU5LDB4NjQsMHg1MSwweDNGLDB4
RkUsMHhGRSwweDVGLDB4NjcsMHg3MiwweEE1LDB4NTksMHgwQiwweDI1LDB4RDUsMHg1NSwKLSAg
ICAweDg4LDB4N0EsMHhFNiwweDYxLDB4RTgsMHgwOCwweDAzLDB4MjUsMHg4NywweDdBLDB4RTUs
MHg2MSwweDU3LDB4NUYsMHhFMCwweEMwLAotICAgIDB4MDYsMHg2MiwweEE1LDB4NTksMHhBQSww
eDI2LDB4MUMsMHg3OCwweDY3LDB4NzIsMHhBNSwweDU5LDB4QkYsMHhBRiwweDJBLDB4MkQsCi0g
ICAgMHg4OCwweDcyLDB4RTUsMHg2MSwweERCLDB4QUEsMHgyQSwweDI4LDB4QTgsMHg3QSwweDQ2
LDB4NzIsMHhGRCwweDc1LDB4QUIsMHgyQiwKLSAgICAweEE4LDB4ODIsMHg2NywweDcyLDB4Rjks
MHg0RCwweEJGLDB4MUEsMHhBOCwweDdBLDB4NDcsMHg3MiwweDAyLDB4MkIsMHgyQSwweEE2LAot
ICAgIDB4QjAsMHhCQywweDg4LDB4N0EsMHgyRCwweDNELDB4M0QsMHhCRCwweEY0LDB4REQsMHhE
MSwweEM0LDB4MEIsMHgwQiwweDJCLDB4MkQsCi0gICAgMHgxNCwweEU2LDB4RDQsMHhERCwweEEw
LDB4NzgsMHhENywweDU1LDB4MTQsMHhFNiwweEIzLDB4RDUsMHg4QSwweEFBLDB4RUYsMHg1RiwK
LSAgICAweDE0LDB4REUsMHhCMywweEQ1LDB4ODIsMHhFQywweDdFLDB4REYsMHhENCwweEQ1LDB4
NTIsMHhDRCwweEUwLDB4RUEsMHg2QSwweDZBLAotICAgIDB4NzMsMHhDNSwweEQxLDB4QkMsMHhE
RSwweDlDLDB4QkUsMHgzRSwweEQzLDB4Q0QsMHg3MywweENELDB4RjUsMHhGNSwweEZGLDB4RUQs
Ci0gICAgMHg5MywweENELDB4NTIsMHhDNSwweDgwLDB4RUEsMHhFOCwweDc4LDB4NzMsMHhDRCww
eDExLDB4QkQsMHhFQSwweEU4LDB4N0UsMHg3QSwKLSAgICAweDUyLDB4QzUsMHhGMSwweEJDLDB4
MkIsMHgzRiwweEQ1LDB4REYsMHg3MywweENELDB4MTEsMHhCRCwweEEyLDB4MEEsMHgyMiwweDJE
LAotICAgIDB4NzMsMHhDRCwweEQxLDB4QjQsMHhFMiwweEUyLDB4RTgsMHg3OCwweDExLDB4QkQs
MHhCMSwweEI0LDB4RTgsMHhGQSwweDdDLDB4RUIsCi0gICAgMHhEMSwweEI0LDB4NEUsMHhBNCww
eEFBLDB4NkEsMHg3OCwweDU4LDB4MkUsMHhBNCwweDRDLDB4ODMsMHhBOCwweEY4LDB4RkMsMHg1
RSwKLSAgICAweEVFLDB4OUIsMHg2QywweDhCLDB4ODIsMHgwQSwweEE3LDB4MjUsMHg5MCwweEFD
LDB4RUUsMHg5QiwweEFELDB4MjksMHgyRiwweEFCLAotICAgIDB4OTAsMHhBQywweDJGLDB4QTQs
MHhDMCwweEY4LDB4REUsMHg1RiwweDRGLDB4QTQsMHhFRSwweDlCLDB4ODAsMHhBQSwweEU2LDB4
QkUsCi0gICAgMHg2RiwweEFDLDB4MkUsMHg5QywweDI5LDB4MjksMHgzOSwweDBFLDB4OTAsMHhB
QywweDJFLDB4QTQsMHgwOCwweDgwLDB4NzgsMHhFOCwKLSAgICAweDkwLDB4QUMsMHgwRSwweDlD
LDB4OEEsMHhFNiwweEZELDB4RjcsMHg2RiwweEFDLDB4NEUsMHhBNCwweDc4LDB4NzcsMHhFQSww
eDM1LAotICAgIDB4NjMsMHg1OSwweDAyLDB4NDksMHgwMCwweDI4LDB4MEYsMHgyNywweDg0LDB4
NTksMHgyMywweDUxLDB4RTgsMHhGQiwweDVBLDB4RkMsCi0gICAgMHg2MywweDU5LDB4MjMsMHg1
MSwweEFCLDB4MEIsMHgwMywweDJGLDB4ODQsMHg2MSwweDIzLDB4NTEsMHhBQywweERBLDB4QkEs
MHhCQywKLSAgICAweDYzLDB4NTksMHgwMSwweDUxLDB4MkMsMHhBRSwweEFBLDB4QkYsMHg0Myww
eDU5LDB4MjMsMHg1MSwweDhBLDB4NjAsMHg3MiwweEI4LAotICAgIDB4ODQsMHg1OSwweDIyLDB4
NTEsMHhGRiwweDdGLDB4N0IsMHg1RiwweDYzLDB4NTksMHgyMywweDUxLDB4Q0EsMHhGRiwweERE
LDB4QjcsCi0gICAgMHg2MywweDU5LDB4MDIsMHg0OSwweEE4LDB4NDgsMHhGQSwweEZFLDB4NjMs
MHg1MSwweDIyLDB4NTEsMHg3MywweDYzLDB4RkIsMHg1RiwKLSAgICAweDQzLDB4NTEsMHgwMiww
eDQ5LDB4QUIsMHg0MywweEU4LDB4RkUsMHg0NCwweDUxLDB4MDIsMHg0OSwweEU1LDB4MkQsMHgy
RCwweDIyLAotICAgIDB4NjQsMHg1OSwweDAzLDB4NDksMHg4QSwweEVCLDB4NkYsMHg3RiwweDQz
LDB4NTEsMHhFMiwweDQ4LDB4OEEsMHhFOCwweEVCLDB4RjcsCi0gICAgMHg0NCwweDUxLDB4RTMs
MHg0OCwweDdBLDB4RkYsMHhBQSwweDhCLDB4NDQsMHg1MSwweEUyLDB4NDgsMHhFRCwweDNGLDB4
QkIsMHhGQiwKLSAgICAweDQzLDB4NTEsMHgwMywweDUxLDB4RjcsMHhEQSwweEYyLDB4QjYsMHhB
NSwweDYxLDB4MjMsMHg1MSwweEY1LDB4NzUsMHhCRCwweERGLAotICAgIDB4NjQsMHg1OSwweDIz
LDB4NTEsMHhCQSwweERBLDB4RjgsMHhGMCwweDY0LDB4NTksMHgyMywweDUxLDB4QTYsMHgzNSww
eDFELDB4QkQsCi0gICAgMHgyQSwweDkzLDB4ODQsMHg2MSwweDJELDB4MDksMHgwRiwweDBCLDB4
QUIsMHhBMywweDRBLDB4OUIsMHhBRCwweDJELDB4MkQsMHgyNywKLSAgICAweENDLDB4QTMsMHg4
QiwweEEzLDB4MkYsMHgzRCwweERFLDB4MDgsMHgwRCwweEFDLDB4QUIsMHhBMywweEFBLDB4RUUs
MHhGNywweDNGLAotICAgIDB4MkQsMHhCNCwweENDLDB4QTMsMHg1NSwweEJGLDB4QUQsMHgwRSww
eDBELDB4QUMsMHhBQiwweEEzLDB4NjcsMHhGQSwweEU4LDB4RUUsCi0gICAgMHhFQywweEFCLDB4
OEIsMHg5QiwweEZGLDB4REUsMHg1QSwweEY4LDB4OEIsMHg5QiwweDI4LDB4OTMsMHg3RSwweEZF
LDB4RjgsMHg2QywKLSAgICAweDI5LDB4OTMsMHhFOSwweDhBLDB4RjgsMHhFMCwweEVBLDB4RkEs
MHgwOSwweDhCLDB4QzgsMHg4QSwweDY4LDB4RkIsMHg3QSwweDdBLAotICAgIDB4MDksMHg4Qiww
eEE3LDB4ODIsMHhEQSwweDNFLDB4QUUsMHg5QSwweDA4LDB4OEIsMHhBOCwweDgyLDB4QkQsMHhB
QSwweDJBLDB4MkEsCi0gICAgMHgwOSwweDhCLDB4ODcsMHg3QSwweDYyLDB4NzAsMHhGOCwweEZB
LDB4ODcsMHg3QSwweDI2LDB4NkEsMHhCQSwweEY2LDB4RjYsMHhCOCwKLSAgICAweDY3LDB4NzIs
MHgwNSwweDcyLDB4QzgsMHhBMiwweEE4LDB4QTgsMHg2NywweDcyLDB4MjYsMHg3MiwweEE5LDB4
RkUsMHhGRSwweEZCLAotICAgIDB4NDYsMHg3MiwweDI2LDB4NkEsMHg4MiwweEE4LDB4RkEsMHgy
NCwweDQ2LDB4NzIsMHgwNiwweDZBLDB4MEEsMHgyQSwweDFFLDB4RDgsCi0gICAgMHg0NiwweDcy
LDB4MDUsMHg2QSwweDIwLDB4QTYsMHg4QiwweDhCLDB4ODcsMHg4MiwweDI2LDB4NzIsMHhENyww
eEJGLDB4RkYsMHgwQiwKLSAgICAweEE4LDB4ODIsMHg0NiwweDcyLDB4MkQsMHhBMiwweDIwLDB4
MDgsMHhFOCwweDgyLDB4QTgsMHg4MiwweDhELDB4RjUsMHhENSwweDU3LAotICAgIDB4QzgsMHg4
MiwweDI2LDB4NkEsMHg2QSwweEU4LDB4OEEsMHg4OCwweDY3LDB4N0EsMHhFMywweDQwLDB4N0Us
MHg3RSwweEU4LDB4RTgsCi0gICAgMHgwMywweDQ5LDB4QTIsMHgzMCwweDdGLDB4RkYsMHhFRSww
eEUwLDB4RTMsMHgzOCwweEEyLDB4MzAsMHhCRCwweEZGLDB4NkUsMHg1QSwKLSAgICAweEUzLDB4
MzgsMHg4MSwweDMwLDB4ODAsMHgyQSwweEFCLDB4RUQsMHhFMywweDM4LDB4ODEsMHgyOCwweEU4
LDB4QUEsMHhCMiwweEJGLAotICAgIDB4RTMsMHgzOCwweEEyLDB4MzAsMHhBRCwweDNFLDB4M0Us
MHhBRiwweDI0LDB4NDEsMHhDMywweDMwLDB4MkIsMHhCRiwweEY2LDB4RkYsCi0gICAgMHgyNCww
eDM5LDB4QzIsMHgzMCwweEY4LDB4QkEsMHhFQSwweEVGLDB4MDQsMHgzOSwweEMyLDB4MzgsMHg3
QSwweEJFLDB4RkYsMHhGRiwKLSAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4MkQsMHg2RCwweEQ1
LDB4NTUsMHg0NCwweDQ5LDB4RTMsMHgzOCwweEI4LDB4QUIsMHhFQiwweEZELAotICAgIDB4MjQs
MHg0MSwweDAzLDB4NDEsMHg1RCwweEYwLDB4Q0EsMHg4MiwweDY1LDB4NDksMHhDMiwweDM4LDB4
REYsMHhGMywweEFBLDB4MjIsCi0gICAgMHg2NSwweDQ5LDB4RTMsMHg0MCwweDc3LDB4RkQsMHgy
QSwweDhBLDB4MjQsMHg0MSwweEUzLDB4MzgsMHgyQiwweDJCLDB4MkEsMHgyOCwKLSAgICAweDY1
LDB4NDksMHgwMywweDQxLDB4NkYsMHhDRSwweEVBLDB4RUIsMHgyNCwweDQxLDB4QzMsMHgzMCww
eEFBLDB4RkMsMHg3OCwweEZBLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHg3QywweEUwLDB4
ODIsMHhBQSwweEUzLDB4MzAsMHg4MiwweDI4LDB4REYsMHg3RiwweDlGLDB4MkUsCi0gICAgMHhF
MywweDMwLDB4QTIsMHgyOCwweDk1LDB4QjUsMHhBNywweEFDLDB4MDMsMHgzOSwweEMzLDB4MzAs
MHhERiwweEZBLDB4OEIsMHhBQiwKLSAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4MEYsMHhCQiww
eEJELDB4MEIsMHhDNiwweDUxLDB4MjMsMHg0MSwweEI1LDB4RjUsMHhCRCwweDJCLAotICAgIDB4
QTYsMHg1MSwweDQ0LDB4NDksMHg3RSwweERGLDB4RkMsMHhFOCwweDY0LDB4NDksMHgwMywweDQx
LDB4RjgsMHhENywweEZFLDB4ODAsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweEVBLDB4RUIs
MHhFQSwweEU2LDB4MDMsMHg0MSwweEMzLDB4MzgsMHhBOCwweEJDLDB4OUUsMHhGQSwKLSAgICAw
eEUzLDB4MzgsMHgwMywweDMxLDB4MjIsMHg4MywweDgyLDB4MDAsMHgwMywweDM5LDB4QzIsMHgz
MCwweDhBLDB4RkUsMHg3RiwweDU1LAotICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHhCOCwweEY2
LDB4RkUsMHgyQSwweEUyLDB4MzAsMHhBMSwweDMwLDB4OEYsMHg4QSwweEE4LDB4MDAsCi0gICAg
MHgwMywweDM5LDB4QzIsMHgzMCwweDYyLDB4N0YsMHhENywweEZGLDB4RTIsMHgzMCwweEMyLDB4
MzAsMHhGNiwweEZGLDB4QkUsMHhGRSwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RkUsMHhF
MiwweEUzLDB4QUQsMHgwMywweDM5LDB4QzIsMHgzMCwweERGLDB4RkYsMHhGQSwweEE4LAotICAg
IDB4MDMsMHgzOSwweEMyLDB4MzAsMHhCRiwweDJFLDB4QUEsMHhGMiwweDAzLDB4MzksMHhDMiww
eDMwLDB4REUsMHhGQywweEY2LDB4M0YsCi0gICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDJFLDB4
MEYsMHg2QiwweEVBLDB4MjQsMHgzOSwweEMyLDB4MzAsMHhBMiwweEJCLDB4N0YsMHg1RCwKLSAg
ICAweDI0LDB4MzksMHhDMiwweDMwLDB4MjMsMHgwQiwweDJELDB4QjcsMHgyMywweDM5LDB4RTMs
MHgzOCwweERFLDB4NTUsMHhGRiwweEYyLAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHg2MCww
eEMyLDB4Q0EsMHg3RCwweDIzLDB4MzksMHhFMywweDM4LDB4QkYsMHhERCwweERCLDB4NTcsCi0g
ICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweDdDLDB4RDgsMHhGQSwweEJGLDB4NDQsMHg0OSwweEMy
LDB4MzAsMHhBRCwweEFGLDB4QjUsMHhCRiwKLSAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4OTcs
MHhCNSwweEQ3LDB4RDUsMHg0NCwweDQxLDB4MDMsMHgzOSwweEQ2LDB4REYsMHhCNywweDJELAot
ICAgIDB4NDQsMHg0MSwweEMyLDB4MzAsMHhENywweEJFLDB4RTgsMHhBOCwweDQzLDB4NDEsMHhF
MywweDM4LDB4RkYsMHhGRiwweENGLDB4OUIsCi0gICAgMHg2NSwweDQ5LDB4RTMsMHgzOCwweDM1
LDB4QkYsMHhGNywweEZGLDB4ODUsMHg1MSwweDAzLDB4MzksMHg4QSwweDhCLDB4QkYsMHhGNSwK
LSAgICAweDg0LDB4NTEsMHg0NCwweDQ5LDB4QUEsMHhCMiwweERFLDB4QjcsMHhBNSwweDU5LDB4
NjQsMHg1MSwweDIyLDB4MjksMHgzNSwweDk1LAotICAgIDB4NDcsMHg3MiwweEE1LDB4NTksMHgw
OSwweEFELDB4RDUsMHg1NSwweEE3LDB4N0EsMHhBNSwweDU5LDB4ODgsMHg4MiwweEFCLDB4QTUs
Ci0gICAgMHg2NywweDcyLDB4ODUsMHg1OSwweDc4LDB4NzgsMHhDOCwweEE4LDB4MDYsMHg2QSww
eDY0LDB4NTEsMHgyNywweDM1LDB4RkYsMHhERSwKLSAgICAweDY3LDB4NzIsMHhBNSwweDU5LDB4
MDIsMHgwMiwweDAzLDB4MEQsMHhBOCwweDdBLDB4NDYsMHg2QSwweDJGLDB4MkYsMHhGNywweDVG
LAotICAgIDB4QzksMHg4MiwweDY3LDB4N0EsMHhCQSwweEU4LDB4QTIsMHgwMSwweEM5LDB4ODIs
MHg2NywweDcyLDB4RkYsMHhERSwweEZBLDB4QjgsCi0gICAgMHgyRSwweEFDLDB4QTgsMHg3QSww
eDM1LDB4MzUsMHhCNSwweEJELDB4QjQsMHhERCwweDZGLDB4QjQsMHgwQiwweDJCLDB4QUQsMHhB
RCwKLSAgICAweEQzLDB4REQsMHg3MiwweENELDB4QTgsMHg2RiwweEY1LDB4RjUsMHhCMywweEQ1
LDB4NzIsMHhDRCwweDJBLDB4MEUsMHhCNywweDU3LAotICAgIDB4RDQsMHhERCwweDkzLDB4RDUs
MHhBMywweEVBLDB4QkQsMHhGNSwweEIzLDB4RDUsMHgxMSwweEJELDB4RTAsMHhFMCwweEY4LDB4
NzgsCi0gICAgMHg3MywweENELDB4RjEsMHhCQywweDI3LDB4MDUsMHgzNSwweDNELDB4QjMsMHhE
NSwweDUzLDB4QzUsMHg4QiwweDhBLDB4RkYsMHg1RiwKLSAgICAweDkzLDB4Q0QsMHg1MiwweEM1
LDB4RTAsMHhBQSwweEVFLDB4QjUsMHg3MywweENELDB4RjEsMHhCNCwweEYyLDB4RUEsMHhFOCww
eDg4LAotICAgIDB4NTIsMHhDNSwweEIwLDB4QjQsMHhGRiwweEQ3LDB4RjYsMHhCOCwweDUyLDB4
QzUsMHhGMSwweEJDLDB4MkYsMHhBOSwweEZGLDB4NTcsCi0gICAgMHgzMSwweEM1LDB4QjAsMHhC
NCwweEU4LDB4RkMsMHhENiwweDU3LDB4RjEsMHhCQywweDkwLDB4QUMsMHhDOCwweEVGLDB4RkMs
MHhGQiwKLSAgICAweEQwLDB4QjQsMHhBRCwweDkzLDB4RTAsMHg2MiwweDdDLDB4N0EsMHhBRCww
eDkzLDB4RUEsMHg3QSwweEY4LDB4RkUsMHhGNywweEQ3LAotICAgIDB4NEYsMHhBNCwweDZDLDB4
OEIsMHhBNSwweDJELDB4MkYsMHgwQiwweDcwLDB4QUMsMHgyRSwweEE0LDB4QUUsMHgyOCwweDc4
LDB4NUIsCi0gICAgMHg0RiwweEE0LDB4MEUsMHg5QywweEM4LDB4OTIsMHhEMywweDVELDB4QjAs
MHhBQywweDBFLDB4OUMsMHhGNSwweEZFLDB4RUYsMHgyQiwKLSAgICAweDkwLDB4QUMsMHgyRSww
eEE0LDB4QUYsMHg5OSwweEUyLDB4MjAsMHg2RiwweEFDLDB4MkUsMHg5QywweEMyLDB4QTIsMHhE
RiwweDAwLAotICAgIDB4OTAsMHhBQywweDBELDB4OUMsMHhENywweEQ3LDB4QkYsMHgwMCwweEQw
LDB4QjQsMHg0RSwweEE0LDB4REQsMHhCRCwweDBCLDB4OEEsCi0gICAgMHg2NCwweDU5LDB4MjIs
MHg1MSwweEE1LDB4RUUsMHhCQSwweDJGLDB4ODQsMHg2MSwweDIyLDB4NTEsMHhGRiwweEU1LDB4
RUIsMHhBMCwKLSAgICAweDgzLDB4NjEsMHgyMywweDUxLDB4QjcsMHhBRiwweDNGLDB4QkYsMHg4
NCwweDYxLDB4MjIsMHg1MSwweEJFLDB4RkMsMHg1QSwweDVBLAotICAgIDB4NDMsMHg1MSwweDAy
LDB4NTEsMHhBQSwweEUwLDB4RUEsMHgyMSwweDYzLDB4NTEsMHgyMiwweDUxLDB4RjcsMHg5NSww
eEVELDB4QUYsCi0gICAgMHg0MywweDU5LDB4MjIsMHg0OSwweERBLDB4REUsMHgwQSwweDhBLDB4
NjMsMHg1MSwweDIzLDB4NTEsMHhBRiwweEZFLDB4RUYsMHhBRiwKLSAgICAweDQzLDB4NTEsMHgw
MiwweDQ5LDB4RjIsMHhGRSwweEU4LDB4QUUsMHgyMiwweDUxLDB4MDIsMHg0OSwweDJBLDB4NkUs
MHhERSwweEQ3LAotICAgIDB4NDMsMHg1MSwweEUyLDB4NDgsMHgyRSwweEE5LDB4QUUsMHhBQiww
eDQzLDB4NTEsMHgwMiwweDQ5LDB4MDAsMHhCOCwweEJFLDB4NkUsCi0gICAgMHg0MywweDUxLDB4
MDMsMHg0OSwweDc4LDB4RUMsMHg3RSwweDk3LDB4NjQsMHg1OSwweDAzLDB4NDksMHg1NSwweEQ1
LDB4M0YsMHhGRiwKLSAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4QUIsMHhGQywweEVCLDB4NUEs
MHgyMywweDUxLDB4RTIsMHg0OCwweDZFLDB4OEIsMHgzQSwweDJBLAotICAgIDB4NDQsMHg1OSww
eDAzLDB4NTEsMHhCNywweDE1LDB4QTcsMHgyQiwweDY0LDB4NTksMHgyMywweDUxLDB4QjMsMHg4
QiwweEJCLDB4MkQsCi0gICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEZBLDB4N0UsMHhFQSwweEVF
LDB4QzUsMHg2OSwweDIzLDB4NTEsMHhGNSwweEI1LDB4RjUsMHgzNywKLSAgICAweDRBLDB4OUIs
MHgyNiwweDcyLDB4MkQsMHgwRCwweDA5LDB4MEIsMHhBQiwweEEzLDB4NkEsMHg5QiwweDBELDB4
QTksMHhFRSwweEFCLAotICAgIDB4RUMsMHhBQiwweDhCLDB4QTMsMHhBQiwweDJCLDB4QTUsMHhC
RCwweDBELDB4QUMsMHhDQywweEEzLDB4QkYsMHhBRiwweDJELDB4MkQsCi0gICAgMHgyRCwweEI0
LDB4RUMsMHhBQiwweDg5LDB4QTIsMHg4MCwweDNGLDB4MkQsMHhCNCwweENDLDB4QTMsMHhGRSww
eEJBLDB4QUYsMHhFMiwKLSAgICAweEVELDB4QUIsMHg2QiwweDlCLDB4NjgsMHhFQywweEY4LDB4
RTgsMHg4QiwweDlCLDB4MjksMHg5MywweDdBLDB4RUIsMHhGQiwweDg4LAotICAgIDB4NkIsMHg5
QiwweDA5LDB4OEIsMHg1RiwweDdGLDB4RkEsMHhFMCwweDI5LDB4OTMsMHhDOCwweDgyLDB4NUUs
MHhERSwweDVFLDB4QjgsCi0gICAgMHhFOCwweDhBLDB4QzgsMHg4MiwweDMwLDB4MEEsMHgwQiww
eEZBLDB4MDgsMHg4QiwweEM4LDB4ODIsMHg4QSwweDI4LDB4NzcsMHhGNywKLSAgICAweEU4LDB4
ODIsMHg4NywweDdBLDB4NzgsMHg3QSwweEZFLDB4N0MsMHg4NywweDdBLDB4MjYsMHg2QSwweEJD
LDB4RUMsMHhEOCwweDU4LAotICAgIDB4NjcsMHg3MiwweDI2LDB4NzIsMHg5QSwweEZBLDB4NkYs
MHhBRiwweDY2LDB4NzIsMHgwNSwweDZBLDB4RDgsMHhGNiwweEZGLDB4QkUsCi0gICAgMHg0Niww
eDcyLDB4MjYsMHg2QSwweDNFLDB4QTUsMHhFRSwweEE3LDB4NDYsMHg3MiwweDI2LDB4NkEsMHhG
QSwweEVCLDB4OEEsMHg4QSwKLSAgICAweDY3LDB4N0EsMHgyNiwweDcyLDB4RjUsMHgwRCwweDAy
LDB4M0IsMHhBOCwweDgyLDB4NDYsMHg3QSwweEFGLDB4MzYsMHhBRSwweDAyLAotICAgIDB4Qzgs
MHg4MiwweDg3LDB4ODIsMHgxRiwweEFELDB4QUIsMHhBQSwweEM4LDB4ODIsMHg2OCwweDdBLDB4
QUEsMHhCQSwweEY2LDB4QjgsCi0gICAgMHhDOSwweDgyLDB4NjcsMHg3MiwweDZBLDB4RjIsMHhG
OCwweEZBLDB4ODgsMHg3QSwweEU1LDB4NjEsMHg1OCwweDcyLDB4RTAsMHhFMCwKLSAgICAweEM1
LDB4NTksMHhFMiwweDM4LDB4NUUsMHg1QSwweEZFLDB4RjgsMHgwMywweDQxLDB4ODEsMHgzMCww
eDdBLDB4RTgsMHhBOCwweEEwLAotICAgIDB4QzIsMHgzMCwweDgxLDB4MjgsMHhBRiwweDVFLDB4
NzcsMHhENCwweEMyLDB4MzAsMHg4MSwweDI4LDB4M0YsMHhBQiwweDJCLDB4QUQsCi0gICAgMHhD
MiwweDMwLDB4QTIsMHgyOCwweDgwLDB4QTAsMHhGOCwweEZGLDB4RTMsMHgzOCwweEEyLDB4MzAs
MHgwOCwweDBBLDB4RkIsMHhGRSwKLSAgICAweDIzLDB4NDEsMHhBMSwweDMwLDB4ODMsMHhBQiww
eEFGLDB4RkQsMHhFMywweDM4LDB4QTEsMHgzMCwweEEwLDB4RTAsMHhFOCwweEZBLAotICAgIDB4
RTMsMHgzOCwweEMyLDB4MzAsMHhBOCwweDJCLDB4MjMsMHgwMywweDI0LDB4NDEsMHhDMiwweDM4
LDB4MkIsMHhBRiwweEZGLDB4N0YsCi0gICAgMHgyNCwweDQxLDB4QzMsMHgzOCwweDAwLDB4ODIs
MHhGRCwweEZELDB4NjUsMHg0OSwweDAzLDB4NDEsMHgyMSwweDI5LDB4QUIsMHhBNSwKLSAgICAw
eDg1LDB4NTEsMHgyNCwweDQxLDB4QUEsMHhFMiwweENGLDB4QjcsMHg0NCwweDQxLDB4MDMsMHg0
MSwweEQ2LDB4NkEsMHg2MCwweEMyLAotICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHhBMiwweEVG
LDB4N0YsMHg3RiwweDIzLDB4NDEsMHhFMywweDM4LDB4NzAsMHhCQSwweEVFLDB4QjcsCi0gICAg
MHhFMywweDMwLDB4QTMsMHgzMCwweDBBLDB4MDAsMHg4MCwweEYwLDB4QzIsMHgzMCwweEEyLDB4
MjgsMHgwMCwweEEwLDB4OTAsMHg5NywKLSAgICAweDA0LDB4MzksMHhDMywweDMwLDB4NzcsMHhB
NSwweEI1LDB4RkQsMHhDMywweDM4LDB4RTMsMHgzMCwweDdGLDB4REYsMHhERiwweEQ1LAotICAg
IDB4NDQsMHg0OSwweEMyLDB4MzAsMHhBQiwweDJELDB4QkQsMHgzRiwweDg1LDB4NDksMHg0NCww
eDQ5LDB4MjUsMHgyRCwweDJGLDB4QjUsCi0gICAgMHhBNSwweDUxLDB4NjUsMHg0OSwweDQ4LDB4
NzAsMHg1QSwweDVELDB4NjUsMHg0OSwweDIzLDB4NDEsMHhFMCwweEUwLDB4RjgsMHg3OCwKLSAg
ICAweDQ0LDB4NDEsMHgwMywweDQxLDB4QkYsMHhCRiwweDdGLDB4NUYsMHgwMywweDQxLDB4RTMs
MHgzOCwweDZBLDB4RUEsMHg1OCwweEYwLAotICAgIDB4MDMsMHgzOSwweEMzLDB4MzAsMHhBRiww
eDNCLDB4RkIsMHg3RiwweEUzLDB4MzgsMHhDMiwweDMwLDB4NTcsMHg1NiwweEQ3LDB4REUsCi0g
ICAgMHhFMywweDM4LDB4QzMsMHgzMCwweEUxLDB4QjcsMHgxNCwweDBELDB4MDMsMHgzOSwweEMz
LDB4MzAsMHhCRiwweEJGLDB4QkUsMHhBQSwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4OUEs
MHhBOCwweEJBLDB4RUUsMHhFMywweDMwLDB4QzIsMHgzMCwweDdDLDB4NUMsMHg1QiwweDkyLAot
ICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFNSwweDdCLDB4QkYsMHhFQiwweDAzLDB4MzksMHhD
MiwweDMwLDB4RUIsMHhCNywweDdDLDB4N0EsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEUy
LDB4QTMsMHg1RiwweDc1LDB4RTMsMHgzOCwweEMyLDB4MzAsMHgyQSwweEZBLDB4RkEsMHgwMywK
LSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RUEsMHhCRCwweEZCLDB4RjIsMHhDNCwweDM4LDB4
RTIsMHgzMCwweEI3LDB4RjUsMHg1RiwweDdGLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgz
RiwweERGLDB4RkIsMHhEQSwweDI0LDB4MzksMHhDMiwweDMwLDB4NjIsMHhGRSwweEZCLDB4REQs
Ci0gICAgMHhFMywweDMwLDB4QTIsMHgzMCwweENCLDB4Q0EsMHhGOCwweEU4LDB4RTMsMHgzMCww
eEExLDB4MzAsMHhBMCwweEFCLDB4QUYsMHhCRiwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4
MkYsMHhCRCwweEZELDB4REQsMHgwMywweDM5LDB4QzIsMHgzOCwweDBGLDB4QkIsMHg5QiwweDBE
LAotICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHgyQSwweDJDLDB4MEYsMHgwRCwweDQ0LDB4NDEs
MHgwMywweDM5LDB4OEYsMHhCRiwweEQ3LDB4RkMsCi0gICAgMHg0NCwweDQxLDB4MjMsMHg0MSww
eDU3LDB4NjUsMHhCNywweEY1LDB4NDQsMHg0MSwweEUzLDB4MzgsMHhCRSwweEZBLDB4RjgsMHgx
QSwKLSAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4RUUsMHhBRiwweEZCLDB4MkYsMHgyMywweDQx
LDB4QzIsMHgzOCwweEZBLDB4REUsMHhGOCwweEY4LAotICAgIDB4NjQsMHg0OSwweDAzLDB4NDEs
MHgwRCwweDBELDB4QUQsMHhGRCwweDg1LDB4NTEsMHgyMywweDQxLDB4MUYsMHhCRSwweEFFLDB4
RUQsCi0gICAgMHhBNSwweDUxLDB4NDQsMHg0OSwweEEyLDB4MjMsMHgyNSwweDNELDB4QzUsMHg2
MSwweDQzLDB4NDksMHgyQiwweEZGLDB4REYsMHhGRiwKLSAgICAweDI2LDB4NkEsMHg2NCwweDUx
LDB4ODAsMHhBQiwweEFGLDB4RjUsMHhFNiwweDYxLDB4NjMsMHg1MSwweDdFLDB4RUEsMHhDMiww
eDhCLAotICAgIDB4MjYsMHg2QSwweDg0LDB4NTksMHgyRCwweDI1LDB4OUYsMHhCRiwweEE4LDB4
N0EsMHgyNiwweDZBLDB4M0YsMHhBRiwweDJCLDB4MkQsCi0gICAgMHhDOSwweDgyLDB4NjcsMHg3
MiwweDhBLDB4RUEsMHhGNiwweDdGLDB4QzksMHg4MiwweDg4LDB4N0EsMHg2QiwweEEyLDB4QkUs
MHhGNywKLSAgICAweEFCLDB4OTMsMHhBOCwweDdBLDB4MzUsMHhCNSwweEY1LDB4RjUsMHg1Miww
eENELDB4RUMsMHhBMywweDBCLDB4MkIsMHhBRCwweEFELAotICAgIDB4OTMsMHhENSwweDExLDB4
QzUsMHgwQSwweDJCLDB4QUQsMHhCNSwweDkzLDB4RDUsMHg1MiwweENELDB4RjQsMHg1NCwweDdC
LDB4RkIsCi0gICAgMHg5MywweENELDB4MzEsMHhDNSwweDhBLDB4QUUsMHhBRiwweEZGLDB4OTMs
MHhENSwweEYwLDB4QkMsMHg3OCwweDU4LDB4NUYsMHg1NywKLSAgICAweDkzLDB4Q0QsMHhGMSww
eEJDLDB4QUQsMHgyOSwweDhGLDB4MkEsMHg3MywweENELDB4MTEsMHhCRCwweEY4LDB4NzgsMHhF
MCwweDYwLAotICAgIDB4NTIsMHhDNSwweEYxLDB4QkMsMHgwRSwweEJGLDB4RjcsMHg1NywweDcz
LDB4Q0QsMHhEMSwweEI0LDB4QTgsMHgyOCwweEFGLDB4RkQsCi0gICAgMHg1MiwweEM1LDB4MTEs
MHhCRCwweDc4LDB4QUEsMHhDRiwweDZGLDB4MTEsMHhCRCwweDZGLDB4QUMsMHhBOCwweEY4LDB4
NzgsMHg1RSwKLSAgICAweEIwLDB4QjQsMHg0RiwweEE0LDB4QTAsMHg5MiwweEJFLDB4MTcsMHhC
MCwweEI0LDB4OTAsMHhBQywweDRBLDB4MzIsMHg1MiwweDc2LAotICAgIDB4NEYsMHhBNCwweEM5
LDB4N0EsMHhFMCwweEY4LDB4NTgsMHg1OCwweDJFLDB4OUMsMHhFQSwweDdBLDB4QjUsMHhCRCww
eDI1LDB4MEQsCi0gICAgMHhEMCwweEI0LDB4RUUsMHg5QiwweEZELDB4RUQsMHhBQiwweDBBLDB4
RjEsMHhCQywweDRFLDB4QTQsMHg1NSwweDU1LDB4QkQsMHgwQSwKLSAgICAweDMyLDB4QkQsMHgw
RSwweDlDLDB4RkQsMHhBRSwweEEyLDB4ODAsMHhEMCwweEI0LDB4NkYsMHhBQywweEJELDB4QUEs
MHhBOCwweDIwLAotICAgIDB4RDAsMHhCNCwweDZGLDB4QUMsMHhBMiwweEFGLDB4REYsMHhGRSww
eEIwLDB4QUMsMHg2RiwweEFDLDB4MDAsMHhBRSwweERDLDB4REUsCi0gICAgMHhCMCwweEI0LDB4
NEYsMHhBNCwweEEyLDB4RTIsMHhGQiwweEUyLDB4QjAsMHhBQywweDZGLDB4QUMsMHhDQiwweEQ1
LDB4RDcsMHhGNywKLSAgICAweDg0LDB4NTksMHg0MywweDUxLDB4QkYsMHhCQSwweEUyLDB4RkUs
MHg4NCwweDU5LDB4NDMsMHg1OSwweDBBLDB4OEIsMHgwRiwweEI3LAotICAgIDB4NjMsMHg1OSww
eDIzLDB4NTEsMHgwRiwweDhBLDB4RUUsMHhGQywweDYzLDB4NTksMHgwMiwweDUxLDB4RkEsMHhF
QSwweEVBLDB4RkIsCi0gICAgMHg0MywweDUxLDB4MDIsMHg0OSwweDAwLDB4N0YsMHg2RiwweDdG
LDB4NjQsMHg1MSwweEUyLDB4NDgsMHgwQSwweEE1LDB4QkYsMHhBRSwKLSAgICAweDYzLDB4NTEs
MHgyMiwweDUxLDB4QkYsMHhGRCwweDdGLDB4NTMsMHg0MywweDUxLDB4MjIsMHg1MSwweEM4LDB4
NzAsMHg3MCwweDdBLAotICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHg4RSwweEUyLDB4NjIsMHhE
OCwweDQzLDB4NTEsMHgwMiwweDQ5LDB4OTcsMHg4RiwweEJGLDB4RUIsCi0gICAgMHg0NCwweDUx
LDB4MDMsMHg0OSwweEVCLDB4MkEsMHgyRSwweDAxLDB4NDMsMHg1MSwweDAyLDB4NDksMHhBRSww
eDI3LDB4QUQsMHhBRCwKLSAgICAweDY0LDB4NTEsMHgwMiwweDQ5LDB4RjUsMHgzNywweEQ3LDB4
NUQsMHg0MywweDUxLDB4MDMsMHg1MSwweEVBLDB4QzIsMHhDMywweEZCLAotICAgIDB4NDMsMHg1
MSwweEUyLDB4NDgsMHg3OCwweEVCLDB4QkUsMHhGQSwweDY0LDB4NTksMHgwMywweDUxLDB4Rjcs
MHhBRiwweEFGLDB4OEIsCi0gICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEFBLDB4MkEsMHhFQSww
eEVBLDB4NjQsMHg1OSwweDIzLDB4NTEsMHgyRCwweEFFLDB4REUsMHhGRCwKLSAgICAweDQ0LDB4
NTksMHgyMywweDU5LDB4MDgsMHgyMCwweDAwLDB4QzAsMHhFNSwweDY5LDB4MDMsMHg1MSwweEJG
LDB4QkYsMHgzRCwweDM1LAotICAgIDB4NEEsMHg5QiwweDY3LDB4N0EsMHgwOSwweDA5LDB4MEIs
MHgwQiwweEFCLDB4QTMsMHg2QiwweDlCLDB4MjMsMHhBQiwweEFGLDB4MkUsCi0gICAgMHhFQyww
eEFCLDB4OEIsMHg5QiwweEZGLDB4RkQsMHgyRiwweEJCLDB4RUMsMHhBQiwweEFDLDB4QTMsMHgy
RiwweEJGLDB4QUYsMHhBRiwKLSAgICAweDBELDB4QUMsMHhDQywweEEzLDB4M0EsMHhBRiwweEJC
LDB4QkYsMHgwRCwweEFDLDB4Q0MsMHhBQiwweDYwLDB4ODIsMHhBMiwweEVCLAotICAgIDB4MEQs
MHhBQywweEFCLDB4QTMsMHg3RiwweEFFLDB4QkYsMHg4QSwweEVDLDB4QUIsMHg4QiwweDlCLDB4
NUYsMHhGMiwweEUyLDB4QTAsCi0gICAgMHhBQiwweEEzLDB4NEEsMHg5MywweDc1LDB4N0UsMHhG
RSwweEEwLDB4NkEsMHg5QiwweEU5LDB4OEEsMHhERSwweDZFLDB4QTgsMHg4OCwKLSAgICAweDI5
LDB4OTMsMHhDOCwweDgyLDB4NzcsMHhGRSwweEFBLDB4QTAsMHhFOCwweDhBLDB4QzgsMHg4Miww
eENCLDB4QkYsMHhENCwweEY4LAotICAgIDB4RTksMHg4MiwweDY3LDB4NzIsMHhGMCwweDYyLDB4
NzIsMHg3QywweDY3LDB4NzIsMHgyNiwweDcyLDB4RDgsMHhGOCwweEZDLDB4N0YsCi0gICAgMHg0
NiwweDcyLDB4MDYsMHg2QSwweDJBLDB4MEEsMHgyOCwweDZBLDB4NDYsMHg3MiwweDI2LDB4NkEs
MHhEOCwweDI4LDB4ODgsMHgyQiwKLSAgICAweDQ2LDB4NzIsMHgwNSwweDZBLDB4QUMsMHg4QSww
eDg4LDB4NjAsMHg2NiwweDcyLDB4MDUsMHg2QSwweEZCLDB4QkUsMHhFRiwweDgxLAotICAgIDB4
ODcsMHg3QSwweDI2LDB4NzIsMHg5QiwweDNCLDB4MkIsMHgwMiwweEU4LDB4OEEsMHg4OCwweDdB
LDB4OUYsMHg5NSwweEJGLDB4QUIsCi0gICAgMHhDOCwweDhBLDB4QTgsMHg3QSwweDlGLDB4RkUs
MHhGQywweDdCLDB4RTksMHg4QSwweDg4LDB4N0EsMHhGQSwweEE4LDB4QTIsMHhFQSwKLSAgICAw
eEE4LDB4ODIsMHg2OCwweDdBLDB4NzgsMHhBMCwweDgwLDB4RTgsMHg4NywweDdBLDB4MjYsMHg2
QSwweDYyLDB4MjAsMHhBMCwweDYyLAotICAgIDB4NDYsMHg2QSwweDQzLDB4NDksMHg1RSwweDU4
LDB4NjgsMHg3OCwweDIzLDB4NDksMHhBMiwweDMwLDB4RkEsMHg3QSwweEZDLDB4NzgsCi0gICAg
MHhBMiwweDMwLDB4NjEsMHgyOCwweEYwLDB4RkEsMHhERSwweEQ4LDB4QTIsMHgyOCwweDYxLDB4
MjgsMHgyQiwweDJGLDB4MkIsMHhBMiwKLSAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4RDcsMHhF
RCwweEFGLDB4NkQsMHhDMiwweDMwLDB4ODIsMHgyOCwweDA4LDB4QUUsMHhCQiwweERCLAotICAg
IDB4QzIsMHgzMCwweEEyLDB4MzAsMHgwRiwweDJBLDB4MUYsMHhENywweEMyLDB4MzAsMHhBMiww
eDMwLDB4REMsMHg1NCwweDVBLDB4RjIsCi0gICAgMHhFMiwweDM4LDB4QTIsMHgzMCwweDBGLDB4
RUQsMHhCRCwweEY3LDB4RTMsMHgzOCwweEMzLDB4MzgsMHhFMCwweEUwLDB4RkYsMHgzQiwKLSAg
ICAweDAzLDB4NDEsMHhFMywweDM4LDB4QkQsMHhCRCwweDA1LDB4QTIsMHg0NCwweDQ5LDB4RTMs
MHgzOCwweDJCLDB4M0YsMHhERiwweDVGLAotICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHg4Miww
eEVFLDB4RjUsMHg3NSwweDQ0LDB4NDksMHgwMywweDM5LDB4MkEsMHhFQiwweEFELDB4MzUsCi0g
ICAgMHg0NSwweDQ5LDB4RTMsMHgzOCwweDVFLDB4REYsMHhGQywweDdDLDB4MDMsMHgzOSwweEEy
LDB4MzgsMHgyQSwweDI4LDB4MjgsMHhBQiwKLSAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4N0Es
MHg3QywweEU4LDB4QTAsMHhDMywweDMwLDB4ODEsMHgyOCwweDJCLDB4QTksMHg3RiwweEQ2LAot
ICAgIDB4RTMsMHgzMCwweDgyLDB4MjgsMHgzQSwweDJCLDB4QUYsMHhCRCwweDA0LDB4MzksMHhD
MiwweDMwLDB4RTMsMHhBMywweDc3LDB4N0YsCi0gICAgMHg0NCwweDQ5LDB4QzIsMHgzMCwweDM1
LDB4QTcsMHgzNSwweEI1LDB4ODUsMHg0OSwweDAzLDB4NDEsMHgyQiwweEFFLDB4REYsMHg1NSwK
LSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4ODgsMHhGRSwweEY1LDB4RDcsMHg2NCwweDQ5LDB4
RTMsMHgzOCwweEUwLDB4RjAsMHhBRiwweERGLAotICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHhF
QiwweEVCLDB4NUUsMHg1NywweDAzLDB4MzksMHhBMiwweDMwLDB4QTIsMHhGMiwweEZBLDB4REEs
Ci0gICAgMHhFMywweDM4LDB4QTIsMHgzMCwweEVBLDB4QkEsMHgyQSwweEI3LDB4MDQsMHgzOSww
eEMzLDB4MzAsMHhCNSwweEJGLDB4M0UsMHg5NywKLSAgICAweDAzLDB4MzksMHhDMywweDMwLDB4
RkYsMHg3RSwweEVBLDB4QUIsMHgwMywweDM5LDB4QzMsMHgzMCwweEFCLDB4RkIsMHhCRiwweEJE
LAotICAgIDB4MDMsMHgzOSwweEMzLDB4MzAsMHhBMiwweEFBLDB4QjgsMHhEQSwweDAzLDB4Mzks
MHhDMiwweDMwLDB4MkEsMHgwQSwweEJBLDB4RkUsCi0gICAgMHhFMywweDM4LDB4QzIsMHgzMCww
eDJGLDB4RDcsMHg1NywweDU1LDB4RTMsMHgzMCwweEEyLDB4MzAsMHhBOCwweDNGLDB4MkYsMHgy
RiwKLSAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4RkEsMHhGQSwweEYwLDB4NzIsMHhFMywweDM4
LDB4QzIsMHgzMCwweDBELDB4QUQsMHg5NSwweDI1LAotICAgIDB4MDMsMHg0MSwweEUzLDB4MzAs
MHg1MywweDVELDB4RjUsMHhGNSwweDI0LDB4NDEsMHhDMywweDMwLDB4RjcsMHhCRiwweEJBLDB4
QUUsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDdFLDB4N0UsMHhCQywweEI4LDB4MDMsMHgz
OSwweEMyLDB4MzAsMHhCRiwweEJCLDB4QTgsMHhDMCwKLSAgICAweDAzLDB4MzksMHhDMiwweDMw
LDB4NzgsMHhFQSwweEU4LDB4ODIsMHgwMywweDM5LDB4QTEsMHgzMCwweEY3LDB4QkIsMHhBQSww
eEEwLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGRCwweDVGLDB4Q0IsMHg4QSwweDAzLDB4
MzksMHhDMiwweDM4LDB4MEIsMHgwMywweDBCLDB4QUIsCi0gICAgMHg0NCwweDQxLDB4RTMsMHgz
OCwweEFELDB4M0YsMHhBQiwweEFCLDB4NjQsMHg0OSwweDIzLDB4NDEsMHhCOCwweEZFLDB4QkUs
MHg2RiwKLSAgICAweDY0LDB4NDksMHgyMywweDQxLDB4NTYsMHg3OCwweDVGLDB4NUYsMHgyMyww
eDQxLDB4MDMsMHgzOSwweEZCLDB4REYsMHhERCwweDM2LAotICAgIDB4MjMsMHg0MSwweDAzLDB4
MzksMHhFRSwweDdCLDB4QkYsMHhBRSwweDAzLDB4NDEsMHhFMywweDMwLDB4QTIsMHg4QSwweDAw
LDB4MjgsCi0gICAgMHgyNCwweDQxLDB4RTIsMHgzOCwweDE2LDB4RjcsMHhCRSwweEFGLDB4NDQs
MHg0OSwweEUyLDB4MzgsMHgzRSwweDM3LDB4MzcsMHhGRiwKLSAgICAweEE1LDB4NTEsMHgyMyww
eDQ5LDB4QkQsMHhCQiwweDJCLDB4OEYsMHg4NCwweDUxLDB4NDQsMHg0OSwweEVCLDB4RUUsMHhG
OCwweEU4LAotICAgIDB4QTUsMHg1OSwweDQ0LDB4NDksMHgyRiwweEI1LDB4NUYsMHg1RiwweEE0
LDB4NTksMHg2NCwweDUxLDB4MkIsMHhBRSwweDI5LDB4MEIsCi0gICAgMHgwNiwweDYyLDB4QTQs
MHg1OSwweDJGLDB4QUQsMHhCQiwweEVCLDB4QzgsMHg3QSwweDA2LDB4NjIsMHhBRCwweDI5LDB4
MkQsMHgyNSwKLSAgICAweDA5LDB4ODMsMHg2NywweDcyLDB4N0UsMHg1QSwweDZBLDB4QTIsMHhD
OCwweDgyLDB4NjcsMHg3MiwweEFFLDB4OEIsMHhCRCwweEQ1LAotICAgIDB4MkEsMHg4MywweDg3
LDB4N0EsMHgzRCwweEZGLDB4RjUsMHhGNSwweEFGLDB4QkMsMHg0QSwweDkzLDB4MEIsMHgwQiww
eDI5LDB4MEQsCi0gICAgMHg1MiwweENELDB4QUYsMHhCNCwweDBCLDB4OEUsMHgyRiwweEFELDB4
NzIsMHhDRCwweDMyLDB4QzUsMHg4MiwweDJCLDB4ODksMHhBNSwKLSAgICAweDkzLDB4Q0QsMHgz
MSwweEM1LDB4RjcsMHhGRiwweEU3LDB4ODksMHgzMiwweEM1LDB4RjEsMHhCQywweEY4LDB4MUYs
MHgzQywweEJDLAotICAgIDB4OTQsMHhDRCwweDUyLDB4QzUsMHg4OSwweDJCLDB4MEIsMHgyMyww
eDk0LDB4Q0QsMHgzMiwweEM1LDB4NzgsMHhFOCwweEUwLDB4NTgsCi0gICAgMHgzMiwweEM1LDB4
RjEsMHhCQywweDdCLDB4NTAsMHhGQywweDk2LDB4MTEsMHhCRCwweEQwLDB4QjQsMHhFQywweEVB
LDB4RDAsMHhEQiwKLSAgICAweDMyLDB4QzUsMHg5MCwweEI0LDB4MjIsMHhBQSwweEJCLDB4Nzcs
MHhGMSwweEJDLDB4NEYsMHhBNCwweDdDLDB4NzgsMHg3QSwweEZGLAotICAgIDB4OEYsMHhBQyww
eDRGLDB4QTQsMHhCNywweEJELDB4MkEsMHgwQSwweEQwLDB4QjQsMHg0RiwweEE0LDB4N0UsMHg3
QiwweDZCLDB4OEEsCi0gICAgMHhEMCwweEI0LDB4RUEsMHg3QSwweDVFLDB4RkUsMHhBQSwweDAw
LDB4RjAsMHhCQywweDhDLDB4OEIsMHgyNSwweDJCLDB4MDIsMHgwOCwKLSAgICAweDExLDB4QkQs
MHhCMCwweEI0LDB4QjksMHg4RSwweDgwLDB4N0YsMHgxMSwweEJELDB4RDAsMHhCNCwweDIyLDB4
MEEsMHhCQSwweEI1LAotICAgIDB4NTIsMHhDNSwweDExLDB4QkQsMHg2RCwweEJCLDB4MkQsMHgz
RCwweDUxLDB4QzUsMHhEMCwweEI0LDB4NUYsMHg1QSwweEZBLDB4RjgsCi0gICAgMHgxMSwweEJE
LDB4OEYsMHhBQywweDU3LDB4N0UsMHhGQSwweEIwLDB4RjEsMHhCQywweDhGLDB4QUMsMHg3Riww
eDdGLDB4RUYsMHhFMiwKLSAgICAweEIwLDB4QjQsMHg2RiwweEFDLDB4NUQsMHg5RiwweDIzLDB4
QzIsMHg5MCwweEFDLDB4NkYsMHhBQywweDU1LDB4MkIsMHg3QSwweDdCLAotICAgIDB4NjQsMHg1
OSwweDQzLDB4NTEsMHg4RSwweDk4LDB4RjYsMHg1NywweDY0LDB4NTksMHgyMywweDUxLDB4RjAs
MHg3QSwweDVGLDB4REIsCi0gICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweERCLDB4RTUsMHhBMyww
eENCLDB4NDMsMHg1MSwweDIyLDB4NTEsMHhGNSwweDc0LDB4NzQsMHgwOCwKLSAgICAweDQzLDB4
NTEsMHgwMiwweDQ5LDB4QUIsMHhEQSwweDM4LDB4MkYsMHg0MywweDUxLDB4MjMsMHg1MSwweDhF
LDB4QUYsMHg5QywweDU4LAotICAgIDB4NjMsMHg1MSwweDAyLDB4NDksMHhFRiwweDhGLDB4QUYs
MHhGRSwweDQzLDB4NTEsMHhFMiwweDQwLDB4QTgsMHhDMiwweEVBLDB4N0IsCi0gICAgMHgyMyww
eDQ5LDB4RTIsMHg0OCwweEQ0LDB4QkEsMHhBNywweDg5LDB4NDMsMHg1MSwweDAzLDB4NDksMHgw
QiwweDhGLDB4ODUsMHhENSwKLSAgICAweDQ0LDB4NTEsMHgwMywweDQ5LDB4RUEsMHhFQSwweDVG
LDB4NTcsMHgyMywweDUxLDB4MDMsMHg0OSwweDBELDB4OEYsMHhEQywweDJFLAotICAgIDB4NDMs
MHg1OSwweDAzLDB4NTEsMHhERCwweDNCLDB4NjgsMHhGQSwweDIzLDB4NTEsMHhFMywweDQ4LDB4
ODIsMHhCMiwweEY4LDB4RkIsCi0gICAgMHg0NCwweDU5LDB4MDMsMHg1MSwweDU1LDB4MzUsMHhB
OSwweDNGLDB4NjQsMHg1OSwweDIzLDB4NTksMHhBQiwweEUwLDB4NjgsMHhDQSwKLSAgICAweDY0
LDB4NTksMHgyMywweDUxLDB4NzgsMHhFMiwweEZBLDB4NUUsMHg0NCwweDU5LDB4MjMsMHg1MSww
eEZELDB4REQsMHg3NCwweDA1LAotICAgIDB4NDQsMHg1OSwweDAzLDB4NTEsMHhFQiwweEFGLDB4
ODMsMHg4MCwweDg3LDB4ODIsMHgyMywweDUxLDB4QjUsMHhCNSwweEI1LDB4MkQsCi0gICAgMHg4
QiwweEEzLDB4QzgsMHg4QSwweDI5LDB4MDksMHgwOSwweDBCLDB4Q0MsMHhBQiwweDZBLDB4OUIs
MHhCRiwweEE3LDB4QUQsMHhBQSwKLSAgICAweENDLDB4QTMsMHhBQiwweEEzLDB4MEIsMHhCOSww
eDdCLDB4RUIsMHhFQywweEFCLDB4OEIsMHg5QiwweDJBLDB4OEEsMHhBRCwweEVFLAotICAgIDB4
MEQsMHhBQywweEFCLDB4QTMsMHgyOCwweDBFLDB4MzcsMHhENywweDJELDB4QjQsMHhDQywweEEz
LDB4QTgsMHhBMiwweENCLDB4RUQsCi0gICAgMHgwRCwweEFDLDB4Q0MsMHhBQiwweEFBLDB4RjAs
MHhFMiwweDZELDB4MEQsMHhBQywweENDLDB4QUIsMHhFMiwweEZCLDB4RTgsMHhEQSwKLSAgICAw
eEVDLDB4QUIsMHhBQiwweEEzLDB4NTYsMHg2OCwweDAwLDB4NkUsMHhDQywweEFCLDB4NkEsMHg5
QiwweDVGLDB4QUEsMHg4MCwweEZFLAotICAgIDB4QUIsMHhBMywweDA5LDB4OEIsMHg1QSwweDdB
LDB4RjAsMHg3OCwweDA5LDB4OTMsMHg4NywweDdBLDB4QUEsMHhGOCwweDdDLDB4N0UsCi0gICAg
MHhBOCwweDgyLDB4NDYsMHg3MiwweEYwLDB4RTgsMHhGRiwweDU3LDB4NjcsMHg3QSwweDI2LDB4
NzIsMHg3NiwweDg3LDB4MzcsMHhGNywKLSAgICAweDQ2LDB4NzIsMHgyNiwweDZBLDB4QTgsMHhD
MCwweDgwLDB4MjAsMHg0NiwweDcyLDB4MjYsMHg2QSwweEFELDB4OUYsMHhCQSwweEEzLAotICAg
IDB4NDYsMHg3MiwweDA1LDB4NkEsMHgzMiwweDJCLDB4MEEsMHgyRiwweDg3LDB4N0EsMHg0Niww
eDcyLDB4NzksMHhERCwweEZELDB4OEIsCi0gICAgMHhDOCwweDgyLDB4NjcsMHg3MiwweDNELDB4
MEYsMHgwOSwweDAyLDB4QzgsMHg4MiwweDg3LDB4N0EsMHhBOCwweEIwLDB4RkEsMHhGMiwKLSAg
ICAweEM4LDB4ODIsMHg2NywweDdBLDB4QTgsMHhBQSwweEFBLDB4NUEsMHhDOSwweDgyLDB4MjUs
MHg2QSwweDgwLDB4QUIsMHhGRSwweDU2LAotICAgIDB4ODgsMHg3QSwweDI2LDB4NkEsMHg4MCww
eEZBLDB4NUYsMHg1RCwweDY3LDB4N0EsMHgwNSwweDZBLDB4ODAsMHhGQSwweDVCLDB4RDcsCi0g
ICAgMHgyNiwweDZBLDB4QTQsMHg1OSwweDcwLDB4NjAsMHhFMCwweEFBLDB4QTQsMHg1OSwweEMy
LDB4MzgsMHg1RiwweDdFLDB4REUsMHg3OCwKLSAgICAweEMyLDB4MzgsMHg4MiwweDMwLDB4NTYs
MHg1RSwweDdDLDB4NUMsMHhBMiwweDMwLDB4ODEsMHgyOCwweEFBLDB4QUYsMHgyMiwweDI5LAot
ICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHg2RCwweEU4LDB4QzAsMHhFMCwweEMyLDB4MzAsMHg4
MSwweDI4LDB4N0IsMHhFQSwweEEyLDB4QUEsCi0gICAgMHhDMywweDMwLDB4ODEsMHgyOCwweEZB
LDB4RkIsMHhCQywweDJBLDB4QzIsMHgzMCwweEEyLDB4MzAsMHhFRiwweEFGLDB4MEIsMHgwQiwK
LSAgICAweEUzLDB4MzgsMHhBMiwweDMwLDB4RjUsMHhBRiwweDJCLDB4MDIsMHgwMywweDM5LDB4
QzIsMHgzMCwweDNELDB4QUYsMHhBQiwweDBFLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHg5
QywweDVDLDB4N0UsMHg3RSwweDAzLDB4NDEsMHhDMywweDM4LDB4OEEsMHhDOSwweEVELDB4QUQs
Ci0gICAgMHg0NCwweDQ5LDB4RTMsMHgzOCwweEFELDB4QUQsMHgwRCwweDJCLDB4NjUsMHg0OSww
eDAzLDB4NDEsMHhGNSwweEFFLDB4QUEsMHhDQSwKLSAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4
NTQsMHg1QywweDhDLDB4ODAsMHgyNCwweDQxLDB4RTMsMHgzOCwweDU1LDB4N0QsMHg2QSwweDgw
LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBQiwweDlELDB4OTcsMHhCQSwweEUzLDB4Mzgs
MHg4MiwweDI4LDB4N0MsMHhGMCwweEY4LDB4QTAsCi0gICAgMHhDMiwweDMwLDB4ODIsMHgyOCww
eDlGLDB4REYsMHhENywweEI2LDB4QzIsMHgzMCwweEEyLDB4MjgsMHgwMCwweEIzLDB4N0YsMHhE
NiwKLSAgICAweEUzLDB4MzgsMHg4MiwweDI4LDB4MkEsMHhBQSwweEFELDB4QkYsMHgyMywweDQx
LDB4QzMsMHgzOCwweEFGLDB4M0QsMHg5RCwweEJELAotICAgIDB4NDQsMHg0OSwweEUzLDB4Mzgs
MHhERiwweEZGLDB4QzAsMHg4QSwweDI0LDB4NDEsMHhDMiwweDM4LDB4RUUsMHhGMiwweEZBLDB4
RjgsCi0gICAgMHhFMywweDM4LDB4ODIsMHgzMCwweDMwLDB4RkUsMHhGNiwweEZGLDB4QzMsMHgz
MCwweDgyLDB4MjgsMHgyMCwweEFCLDB4QTcsMHhERiwKLSAgICAweEMyLDB4MzAsMHhBMiwweDI4
LDB4MEUsMHgyRSwweDBBLDB4ODMsMHhFMywweDMwLDB4QTIsMHgyOCwweDJGLDB4QjcsMHg3Riww
eEZGLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHgwQiwweDBBLDB4MkYsMHhBMywweDAzLDB4
MzEsMHhBMiwweDI4LDB4OEEsMHhBQSwweEJFLDB4REQsCi0gICAgMHhFMywweDMwLDB4QTIsMHgz
MCwweDIwLDB4MjIsMHhCNiwweEJGLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGRiwweDlCLDB4RkEs
MHhFOCwKLSAgICAweDAzLDB4MzEsMHhBMiwweDMwLDB4REYsMHhGQywweEVCLDB4RUIsMHhFMyww
eDM4LDB4QzIsMHgzMCwweEE1LDB4QTUsMHgyQSwweDA4LAotICAgIDB4MDMsMHgzOSwweEMyLDB4
MzAsMHg1MywweEVCLDB4QkYsMHhGQywweDAzLDB4MzksMHhDMiwweDMwLDB4QTUsMHg5NSwweDk3
LDB4NTUsCi0gICAgMHgwMywweDM5LDB4QTIsMHgzMCwweDJBLDB4OUEsMHgyQSwweEEyLDB4MDMs
MHgzOSwweEUzLDB4MzgsMHhCQywweEQ3LDB4NTcsMHhERSwKLSAgICAweDI0LDB4NDEsMHhFMyww
eDM4LDB4REEsMHg3RCwweEYyLDB4NEEsMHgwMywweDQxLDB4RTIsMHgzOCwweDc5LDB4QUIsMHgz
QSwweEEyLAotICAgIDB4MjQsMHg0MSwweEUyLDB4MzgsMHhGRiwweDZCLDB4RTgsMHgwRiwweDAz
LDB4NDEsMHhFMywweDM4LDB4QkQsMHhBNywweEZELDB4N0IsCi0gICAgMHgyMywweDQxLDB4QzIs
MHgzMCwweEI3LDB4QkUsMHgyQSwweEFBLDB4MjQsMHg0MSwweEUyLDB4MzgsMHg5NywweEY3LDB4
QjksMHg4QiwKLSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4RUYsMHhCNywweDI1LDB4MEQsMHg2
NCwweDQ5LDB4MDMsMHgzOSwweEVFLDB4NUEsMHhGQSwweEYyLAotICAgIDB4MDMsMHg0MSwweDQ0
LDB4MzksMHhBQSwweEZBLDB4MkIsMHhGRiwweDI0LDB4NDEsMHhFMiwweDM4LDB4MkEsMHg4RSww
eEZCLDB4REUsCi0gICAgMHgyMywweDQxLDB4MDMsMHgzOSwweDAzLDB4M0YsMHg2RiwweEQ3LDB4
MjMsMHg0MSwweEUzLDB4MzgsMHgyRSwweDA4LDB4QUYsMHhCRiwKLSAgICAweDI0LDB4NDEsMHhF
MiwweDM4LDB4MkUsMHgyQSwweDJGLDB4QjcsMHg0NCwweDQ5LDB4RTIsMHgzOCwweEFBLDB4MEEs
MHhGMiwweDdFLAotICAgIDB4ODUsMHg1MSwweDAzLDB4NDEsMHgyQiwweDBGLDB4M0QsMHhCRCww
eEE1LDB4NTEsMHg0NCwweDQ5LDB4N0UsMHhBRSwweDhCLDB4QUQsCi0gICAgMHhFNiwweDU5LDB4
NjQsMHg1MSwweDVELDB4RjksMHhBQSwweDJDLDB4QzUsMHg1OSwweDY0LDB4NTEsMHg4RCwweEJE
LDB4OUYsMHgzRiwKLSAgICAweDI2LDB4NkEsMHhFNSwweDYxLDB4NzUsMHgzNSwweDlGLDB4QTIs
MHhBOCwweDcyLDB4MDYsMHg2QSwweDJELDB4QkYsMHhFRiwweEJGLAotICAgIDB4RTksMHg4Miww
eDg3LDB4NzIsMHhFQiwweEZCLDB4M0QsMHhFRCwweEM4LDB4ODIsMHg2NywweDcyLDB4RDYsMHg1
QSwweEY4LDB4NjAsCi0gICAgMHhBOCwweDdBLDB4NDYsMHg3MiwweDBBLDB4MkQsMHgzNywweDlF
LDB4NkUsMHhBQywweEE4LDB4N0EsMHgwRiwweDJCLDB4MkQsMHgyRCwKLSAgICAweDExLDB4QzUs
MHg4RSwweEI0LDB4MjksMHhBRiwweDJELDB4MjksMHhCMywweEQ1LDB4MTEsMHhCRCwweEZELDB4
QjUsMHhBRiwweDBCLAotICAgIDB4QjMsMHhENSwweDMyLDB4QzUsMHhBQiwweEVCLDB4RkEsMHg3
OCwweDMyLDB4QzUsMHhBRiwweEFDLDB4QTgsMHhBQSwweEFGLDB4QjUsCi0gICAgMHhCNCwweEQ1
LDB4MzIsMHhDNSwweEE5LDB4QTksMHhBOSwweDhGLDB4NzMsMHhDRCwweDMzLDB4QzUsMHg3MCww
eEU4LDB4QTgsMHhFOCwKLSAgICAweDUzLDB4QzUsMHgxMSwweEJELDB4RjcsMHg1QSwweDU4LDB4
NzgsMHgxMSwweEJELDB4QjAsMHhCNCwweDdGLDB4N0UsMHg3RSwweDVDLAotICAgIDB4QjAsMHhC
NCwweDBFLDB4QTQsMHhFMCwweEZBLDB4RkMsMHhCRSwweEIwLDB4QjQsMHgyRSwweEE0LDB4QUYs
MHhBRCwweEFCLDB4OEEsCi0gICAgMHgxMSwweEJELDB4NkYsMHhBQywweDlELDB4MkYsMHgwQiww
eEFBLDB4RjEsMHhCQywweDZGLDB4QUMsMHhBMiwweDg4LDB4NjgsMHg1RSwKLSAgICAweEQxLDB4
QjQsMHg0RSwweEE0LDB4ODAsMHhGRSwweDU1LDB4NTUsMHhCMCwweEI0LDB4MkUsMHhBNCwweDgw
LDB4QUYsMHhCRiwweDU1LAotICAgIDB4QjAsMHhCNCwweDBFLDB4OUMsMHhBMCwweEFBLDB4N0Us
MHg1NywweEYxLDB4QjQsMHhDRCwweDlCLDB4MkEsMHhCQSwweEZGLDB4RDUsCi0gICAgMHhGMSww
eEJDLDB4NEUsMHhBNCwweDAwLDB4QUIsMHhGNSwweDU1LDB4MTEsMHhCRCwweDZGLDB4QUMsMHgw
MCwweDhCLDB4QkYsMHhGNSwKLSAgICAweDMyLDB4QzUsMHg4RiwweEFDLDB4QUEsMHgwMiwweEJB
LDB4REQsMHgzMiwweEM1LDB4RDAsMHhCNCwweDdBLDB4QkMsMHhGNiwweDlCLAotICAgIDB4MTEs
MHhCRCwweEIwLDB4QjQsMHg1RiwweDA4LDB4MjAsMHgwMCwweDMyLDB4QzUsMHg4RiwweEFDLDB4
NTUsMHhFQywweDg4LDB4MEEsCi0gICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEZFLDB4REMsMHg1
NSwweEQ1LDB4NDMsMHg1MSwweDIzLDB4NTEsMHhDQiwweDYyLDB4QkMsMHg3NSwKLSAgICAweDYz
LDB4NTEsMHgwMywweDQ5LDB4OEQsMHhGRSwweDVBLDB4RjcsMHg0MywweDUxLDB4MDIsMHg0OSww
eDBDLDB4QkEsMHhGRSwweDhBLAotICAgIDB4NDMsMHg1MSwweDAzLDB4NTEsMHgyQSwweDhBLDB4
NEEsMHhDOCwweDY0LDB4NTksMHgwMywweDQ5LDB4RUIsMHhCMiwweEZCLDB4NkIsCi0gICAgMHg0
MywweDUxLDB4RTIsMHg0OCwweEUyLDB4ODIsMHhGOCwweDZFLDB4NDMsMHg1MSwweEUyLDB4NDAs
MHhEQiwweEVFLDB4RkIsMHhBMywKLSAgICAweDQzLDB4NTEsMHgwMywweDQ5LDB4N0YsMHg3Riww
eEZCLDB4OEIsMHg0NCwweDUxLDB4MDIsMHg0OSwweEZELDB4QUIsMHg4QSwweEI4LAotICAgIDB4
MjMsMHg1MSwweDAyLDB4NDksMHg1RSwweDdGLDB4QTIsMHgwMiwweDQzLDB4NTEsMHhFMywweDQ4
LDB4OEEsMHhFMiwweEEwLDB4QTgsCi0gICAgMHg0NCwweDU5LDB4RTIsMHg1MCwweEVBLDB4NjIs
MHhGQSwweEVBLDB4NDQsMHg1OSwweEUyLDB4NDgsMHhCRCwweDJELDB4QUEsMHgwMiwKLSAgICAw
eDg1LDB4NjEsMHgyMywweDUxLDB4RkQsMHg3RiwweDVFLDB4NzgsMHg2NCwweDU5LDB4MjMsMHg1
MSwweEI5LDB4QjEsMHgyMiwweDgzLAotICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHhGNCwweEZF
LDB4RkYsMHhBRCwweDY0LDB4NjEsMHgyMywweDUxLDB4QkQsMHhBOSwweENCLDB4RkIsCi0gICAg
MHg2NCwweDU5LDB4MjMsMHg1MSwweEFDLDB4QkYsMHhGNSwweDJGLDB4QTgsMHg4MiwweDQ0LDB4
NTksMHgzRCwweDNELDB4MkQsMHgyRCwKLSAgICAweEFCLDB4QTMsMHgwOSwweDkzLDB4QUYsMHhB
RCwweDBELDB4MkIsMHhDQiwweEEzLDB4OEIsMHg5QiwweDFGLDB4QUQsMHhBQiwweEFBLAotICAg
IDB4Q0MsMHhBMywweDhCLDB4QTMsMHg4MywweEEyLDB4RDIsMHhFQSwweENCLDB4QTMsMHg2QSww
eDlCLDB4QTIsMHhBQSwweEVCLDB4N0YsCi0gICAgMHhBQiwweEEzLDB4NEIsMHg5QiwweDAwLDB4
RTAsMHhFQiwweDVGLDB4QUMsMHhBMywweDRCLDB4OUIsMHg4MiwweEFCLDB4RUIsMHhGRCwKLSAg
ICAweENDLDB4QUIsMHgyQSwweDkzLDB4MDIsMHhBQSwweEJCLDB4NUYsMHhDQywweEEzLDB4Mjks
MHg5MywweDAwLDB4QUEsMHhERiwweDU1LAotICAgIDB4QUIsMHhBMywweDA5LDB4OEIsMHg4MCww
eEVBLDB4RkUsMHhENSwweDZBLDB4OUIsMHhDOCwweDgyLDB4MDAsMHhFQSwweEZFLDB4NUYsCi0g
ICAgMHgyOSwweDkzLDB4NjcsMHg3QSwweEEwLDB4RjgsMHhGQSwweDVGLDB4QzgsMHg4MiwweDY3
LDB4NzIsMHhERSwweDVGLDB4RkYsMHhGRiwKLSAgICAweDY3LDB4N0EsMHg0NiwweDcyLDB4NTMs
MHhDQywweDdBLDB4NzQsMHg2NywweDcyLDB4MjYsMHg3MiwweENFLDB4NEEsMHg2QSwweDdGLAot
ICAgIDB4NDYsMHg3MiwweDI1LDB4NkEsMHhBOCwweDkwLDB4N0IsMHg1NywweDQ2LDB4NzIsMHgw
NSwweDZBLDB4QUUsMHhBMiwweEFGLDB4M0YsCi0gICAgMHg2NywweDcyLDB4MDYsMHg2QSwweEJG
LDB4QTYsMHhBRiwweEFBLDB4RTksMHg4MiwweDQ2LDB4NzIsMHg5NywweEJELDB4QUUsMHgyMywK
LSAgICAweEU4LDB4ODIsMHg4NywweDdBLDB4QUYsMHhGQSwweERBLDB4NzQsMHhDOCwweDgyLDB4
NDYsMHg3MiwweDg4LDB4QTgsMHhBQSwweDdBLAotICAgIDB4QTgsMHg4MiwweDA1LDB4NkEsMHhF
OCwweEY4LDB4N0UsMHg1RiwweDY3LDB4NzIsMHhDNSwweDYxLDB4RTgsMHg2QSwweDdGLDB4NUYs
Ci0gICAgMHgwNSwweDZBLDB4QTQsMHg1OSwweEUwLDB4NkQsMHhGRSwweDVGLDB4MDUsMHg2QSww
eDg0LDB4NTksMHgwMiwweEFCLDB4OUUsMHhGRiwKLSAgICAweDI1LDB4NjIsMHhDNSwweDYxLDB4
NkYsMHhERiwweEZELDB4RUQsMHhDNSwweDYxLDB4RTMsMHg0MCwweDc4LDB4NzgsMHhFOCwweDgw
LAotICAgIDB4MDQsMHg0MSwweDYxLDB4MjgsMHg1RSwweDVFLDB4NzgsMHg3OCwweEMyLDB4MzAs
MHg2MSwweDI4LDB4M0YsMHgyRCwweDJGLDB4QUQsCi0gICAgMHhFMywweDM4LDB4QTIsMHgzMCww
eDdGLDB4RjIsMHhBRSwweDNGLDB4RTMsMHgzOCwweEEyLDB4MzAsMHg3RiwweEZCLDB4OEEsMHhB
MCwKLSAgICAweDA0LDB4MzksMHhDMywweDMwLDB4RDUsMHhERCwweEY1LDB4MEEsMHhFMywweDM4
LDB4QTIsMHgzMCwweEFGLDB4QUUsMHg1RSwweEY4LAotICAgIDB4MDMsMHgzOSwweEMyLDB4Mzgs
MHhBOSwweDJELDB4MDksMHgyQiwweEUyLDB4NDAsMHgyMywweDM5LDB4RkMsMHhGRSwweEZGLDB4
QUYsCi0gICAgMHgwMywweDQxLDB4QTIsMHgzOCwweEU4LDB4QTgsMHgyQywweDJFLDB4MjQsMHg0
MSwweEMzLDB4MzgsMHhBNSwweDJGLDB4OEEsMHhBMCwKLSAgICAweDY1LDB4NDksMHgwMywweDQx
LDB4QUQsMHhCNSwweDBELDB4RUIsMHg2NSwweDQ5LDB4MjQsMHg0MSwweEFCLDB4OUYsMHhERSww
eDlCLAotICAgIDB4NDQsMHg0OSwweDIzLDB4NDEsMHg1NCwweDc3LDB4NUYsMHg1NSwweDQ0LDB4
NDEsMHgwMywweDQxLDB4RTIsMHhGMiwweEZGLDB4QjcsCi0gICAgMHg0NCwweDQxLDB4RTMsMHgz
OCwweEZCLDB4REEsMHhFMiwweEZBLDB4MDMsMHgzOSwweEMyLDB4MzAsMHg3RSwweEZBLDB4QzIs
MHhFMiwKLSAgICAweEUzLDB4MzAsMHg4MSwweDI4LDB4REYsMHg1RiwweEZDLDB4RjgsMHhFMyww
eDMwLDB4QTIsMHgzMCwweDVGLDB4ODksMHgyOSwweEJELAotICAgIDB4MDMsMHgzOSwweEEyLDB4
MzAsMHgxRCwweEZCLDB4RUUsMHhBRSwweDI0LDB4NDEsMHhDMywweDMwLDB4MkYsMHgyNSwweDJG
LDB4MEIsCi0gICAgMHg2NCwweDQ5LDB4MDQsMHg0MSwweEVGLDB4RkYsMHhFRiwweEVGLDB4MjQs
MHg0MSwweEEyLDB4MzAsMHhFMCwweEIwLDB4RkEsMHg1RSwKLSAgICAweEUzLDB4MzgsMHhBMiww
eDMwLDB4N0YsMHg3QiwweEVCLDB4OEIsMHhFMiwweDMwLDB4ODEsMHgyOCwweEZGLDB4N0IsMHhB
QSwweEEwLAotICAgIDB4MDMsMHgzOSwweDgyLDB4MjgsMHhFQiwweDdCLDB4RkIsMHgwQiwweEUz
LDB4MzAsMHhBMiwweDI4LDB4RUYsMHhCQiwweDhCLDB4MjgsCi0gICAgMHhFMywweDMwLDB4QTIs
MHgzMCwweEUzLDB4RkIsMHhGRiwweEQ2LDB4RTMsMHgzMCwweEEyLDB4MzAsMHg5NywweDFGLDB4
QUIsMHgyRSwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4NTcsMHg3QiwweEVCLDB4QUEsMHg0
NCwweDQxLDB4RTMsMHgzOCwweDU1LDB4REQsMHhCRCwweDhGLAotICAgIDB4MDMsMHgzOSwweEMy
LDB4MzAsMHhGRSwweEJDLDB4QTgsMHgyQSwweDAzLDB4MzksMHhDMiwweDMwLDB4QUYsMHhBRiww
eEI2LDB4RkEsCi0gICAgMHhFMiwweDM4LDB4QzIsMHgzMCwweEEyLDB4MkEsMHhCRiwweEQ1LDB4
RTIsMHgzOCwweEEyLDB4MzAsMHhGRSwweDJDLDB4MkUsMHhBQSwKLSAgICAweDA0LDB4NDEsMHhF
MywweDMwLDB4RjksMHg4RCwweEFGLDB4QTksMHgyMywweDQxLDB4RTMsMHgzOCwweDFELDB4QUYs
MHhCQSwweEEzLAotICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHg3RCwweDVELDB4OEIsMHgyQSww
eDAzLDB4NDEsMHhFMywweDM4LDB4RTcsMHhCRSwweEE0LDB4MjQsCi0gICAgMHg0NCwweDQ5LDB4
MDMsMHgzOSwweEJELDB4QkIsMHg3QiwweDAyLDB4NDQsMHg0OSwweDAzLDB4MzksMHhGNywweEZG
LDB4RkYsMHgwRiwKLSAgICAweDQzLDB4NDEsMHhFMywweDM4LDB4RjcsMHhFRiwweEZFLDB4QTgs
MHgyMywweDQxLDB4MDMsMHgzOSwweDlELDB4MUIsMHgwMywweDAyLAotICAgIDB4ODUsMHg1MSww
eDAzLDB4MzksMHgyQiwweDJGLDB4RkQsMHhGNywweDg1LDB4NDksMHgwMywweDQxLDB4REMsMHhG
QSwweEZCLDB4RkYsCi0gICAgMHg0NCwweDQxLDB4RTIsMHgzOCwweEUyLDB4RUEsMHg3QSwweEZB
LDB4MjMsMHg0MSwweEUzLDB4MzgsMHg1NiwweDlGLDB4M0QsMHhBRSwKLSAgICAweDY0LDB4NDks
MHgwMywweDM5LDB4RkQsMHhGRiwweEJBLDB4OEEsMHg0NCwweDQxLDB4MDMsMHgzOSwweEZFLDB4
QUEsMHg5RSwweDJBLAotICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHhGRiwweEQ3LDB4RkUsMHhF
QywweDIzLDB4NDEsMHgwMywweDM5LDB4NzcsMHgyQiwweDAxLDB4QUQsCi0gICAgMHg0NCwweDQ5
LDB4MDMsMHg0MSwweEFCLDB4QUEsMHhGRSwweEU4LDB4ODUsMHg1MSwweDQ0LDB4NDksMHgyQiww
eEJELDB4NjUsMHhENSwKLSAgICAweEE1LDB4NTEsMHg2NCwweDUxLDB4RjgsMHhGRSwweEJELDB4
MzUsMHhDNiwweDU5LDB4ODQsMHg1MSwweEI1LDB4MUQsMHgxQSwweDJCLAotICAgIDB4NjcsMHg3
MiwweEE1LDB4NTksMHhBQiwweDJCLDB4MkIsMHhBRCwweDY3LDB4NzIsMHgwNiwweDYyLDB4MEEs
MHgyMiwweEE4LDB4REUsCi0gICAgMHhBOCwweDdBLDB4MDYsMHg2QSwweDAyLDB4MEEsMHhBRiww
eDc1LDB4QTgsMHg3QSwweDI2LDB4NkEsMHgwMCwweDAyLDB4QUIsMHhCNSwKLSAgICAweDg4LDB4
N0EsMHg0NywweDcyLDB4NUUsMHg1QiwweEIwLDB4QUUsMHg0RCwweEFDLDB4QTgsMHg3QSwweDJE
LDB4MkQsMHgyNSwweDI1LAotICAgIDB4NzIsMHhDRCwweENGLDB4QkMsMHhBNSwweDJELDB4Mjks
MHgwOSwweEIzLDB4RDUsMHg3MiwweENELDB4QUQsMHg4QiwweENCLDB4NzUsCi0gICAgMHg3Myww
eENELDB4OEYsMHhBQywweEUwLDB4NzAsMHg3OCwweDdDLDB4NzMsMHhDRCwweDRGLDB4QUMsMHhC
RCwweEJELDB4MkQsMHgyQiwKLSAgICAweDk0LDB4Q0QsMHg1MywweEM1LDB4MDksMHg3RCwweDdB
LDB4RkIsMHg3MywweEM1LDB4RjEsMHhCQywweEUwLDB4RkUsMHhERiwweDVGLAotICAgIDB4NTMs
MHhDNSwweEQxLDB4QjQsMHg4QSwweDBGLDB4QTcsMHhGRiwweDMyLDB4QzUsMHg5MCwweEFDLDB4
RjgsMHhFQSwweEY4LDB4N0UsCi0gICAgMHg5MCwweEFDLDB4RUUsMHg5QiwweDAwLDB4MDAsMHhB
MCwweDdBLDB4OTAsMHhBQywweENELDB4OTMsMHgwOCwweEE4LDB4RkYsMHg3NSwKLSAgICAweEIw
LDB4QUMsMHhDRCwweDkzLDB4QTAsMHhFRSwweEY1LDB4NTUsMHg2RiwweEFDLDB4RUUsMHg5Qiww
eEEwLDB4RkIsMHhCRiwweDc3LAotICAgIDB4MEUsMHhBNCwweDJFLDB4OUMsMHhCNSwweEZFLDB4
QkYsMHg4QSwweDJFLDB4QTQsMHhDQywweDkzLDB4MDAsMHhFQSwweEZBLDB4NjIsCi0gICAgMHgy
RiwweEE0LDB4Q0QsMHg5MywweEEwLDB4NzcsMHg3RiwweEI3LDB4MEUsMHg5QywweDhDLDB4OEIs
MHhCRSwweEZGLDB4REYsMHgyMCwKLSAgICAweDZGLDB4QUMsMHhBRCwweDkzLDB4MkYsMHhCNyww
eEY1LDB4NTUsMHg2RiwweEFDLDB4RUQsMHg5QiwweDJBLDB4MEIsMHgyQiwweDk1LAotICAgIDB4
QjAsMHhCNCwweDJFLDB4QTQsMHgyMiwweEEyLDB4RkYsMHg3NywweDExLDB4QkQsMHg0RiwweEE0
LDB4MEEsMHgyRiwweDlGLDB4RDUsCi0gICAgMHgzMiwweEM1LDB4QjAsMHhBQywweDgwLDB4MDIs
MHgyQiwweEI1LDB4MzIsMHhDNSwweDExLDB4QkQsMHg3NywweDJBLDB4ODAsMHgyMywKLSAgICAw
eDQzLDB4NTEsMHgyMywweDUxLDB4RkQsMHhEOCwweDAwLDB4RTAsMHg0MywweDUxLDB4MjMsMHg1
MSwweDRBLDB4QzIsMHg4RCwweDEzLAotICAgIDB4NDMsMHg1MSwweEUyLDB4NDgsMHhBQSwweEZB
LDB4RjgsMHhCQywweDYzLDB4NTksMHgwMywweDQ5LDB4QUYsMHgyOSwweDM1LDB4QkYsCi0gICAg
MHg2NCwweDU5LDB4MjMsMHg1MSwweDdFLDB4MDcsMHhFNSwweDZELDB4NDMsMHg1MSwweDAyLDB4
NDksMHg4MywweDA4LDB4MDIsMHg1QSwKLSAgICAweDIzLDB4NTEsMHhFMiwweDQwLDB4N0MsMHhF
RSwweDZFLDB4QUYsMHgyMywweDQ5LDB4RTIsMHg0OCwweEFCLDB4M0YsMHhBRSwweDAwLAotICAg
IDB4NDQsMHg1MSwweDAyLDB4NDksMHhCRSwweDlELDB4QTMsMHhBMiwweDQzLDB4NTEsMHgwMyww
eDQ5LDB4RjIsMHhFOCwweEJFLDB4MkYsCi0gICAgMHg0NCwweDUxLDB4MDIsMHg0OSwweDk5LDB4
RkMsMHhBMiwweDI4LDB4NDMsMHg1MSwweDAyLDB4NTEsMHhBQSwweDBBLDB4QzgsMHhFRSwKLSAg
ICAweDYzLDB4NTEsMHgwMywweDUxLDB4NkYsMHhCRSwweEFFLDB4MkEsMHg4NSwweDYxLDB4MjMs
MHg1MSwweEU3LDB4Q0UsMHhGNywweDU3LAotICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHg3MCww
eDU4LDB4REYsMHhERCwweDY0LDB4NTksMHgyMywweDUxLDB4OEQsMHhCNywweERBLDB4N0EsCi0g
ICAgMHg2NCwweDU5LDB4MDMsMHg1MSwweDJFLDB4QkIsMHhGRCwweEFGLDB4NDMsMHg1OSwweDAz
LDB4NTEsMHgzMiwweEJBLDB4MjgsMHgxQSwKLSAgICAweDY0LDB4NTksMHgwMywweDUxLDB4MkYs
MHhBNywweEFGLDB4QUEsMHg0QSwweDkzLDB4NjQsMHg1OSwweDNELDB4MkQsMHgyRCwweDJGLAot
ICAgIDB4QUIsMHhBMywweDQ5LDB4OUIsMHhCNSwweEE1LDB4RkIsMHgwRiwweEFCLDB4QTMsMHg2
QSwweDlCLDB4MDIsMHgwMiwweDJCLDB4REEsCi0gICAgMHhDQywweEFCLDB4NkIsMHg5QiwweEUy
LDB4QTIsMHhFQSwweEVBLDB4OEIsMHg5QiwweDJBLDB4OTMsMHhBMiwweEVDLDB4RkEsMHg3RSwK
LSAgICAweDRCLDB4OUIsMHgwOSwweDkzLDB4MjAsMHhDMCwweEZFLDB4N0YsMHg2QiwweDlCLDB4
RTksMHg4QSwweDhBLDB4RUUsMHg3RiwweDc3LAotICAgIDB4MkEsMHg5MywweDg3LDB4N0EsMHgy
MCwweEJBLDB4RkUsMHg1NywweDA5LDB4OEIsMHg4NywweDdBLDB4MDAsMHg4MCwweEVBLDB4NUQs
Ci0gICAgMHgyQSwweDkzLDB4ODcsMHg3QSwweDhBLDB4RkEsMHg3RiwweDU1LDB4QTgsMHg4Miww
eDY2LDB4NzIsMHgwMCwweEJGLDB4N0UsMHg3RCwKLSAgICAweEE3LDB4N0EsMHg0NiwweDcyLDB4
RjAsMHhGQSwweEY3LDB4RkYsMHg4NywweDdBLDB4NDYsMHg3MiwweEUwLDB4N0IsMHg1NiwweEQ3
LAotICAgIDB4NjYsMHg3MiwweDI2LDB4NkEsMHhFNiwweEFELDB4QzgsMHgzQSwweDg3LDB4N0Es
MHgyNiwweDZBLDB4NTcsMHhGNSwweEY1LDB4REEsCi0gICAgMHg2NiwweDcyLDB4MjUsMHg2QSww
eDdGLDB4REEsMHhBRiwweEJBLDB4NjYsMHg3MiwweDI2LDB4NzIsMHhCQiwweEZCLDB4QUEsMHgw
RSwKLSAgICAweEM4LDB4ODIsMHg0NiwweDcyLDB4QjUsMHhGRiwweDJELDB4MkEsMHhFOSwweDgy
LDB4ODgsMHg3QSwweEVBLDB4RkIsMHg3MiwweEVBLAotICAgIDB4QTcsMHg3QSwweDQ2LDB4NzIs
MHhBOCwweDhDLDB4RTgsMHg3RSwweDg3LDB4N0EsMHhFNSwweDY5LDB4QTAsMHhFQSwweDcyLDB4
N0UsCi0gICAgMHgyNiwweDZBLDB4QzQsMHg2MSwweDIwLDB4RTAsMHg1RSwweDdCLDB4MDUsMHg2
QSwweEE0LDB4NjEsMHg3QywweEU3LDB4RUUsMHgyQiwKLSAgICAweDA1LDB4NkEsMHhBNCwweDYx
LDB4N0YsMHhGNSwweEZFLDB4QTIsMHgwNiwweDZBLDB4QTQsMHg2MSwweERGLDB4RkIsMHhBMyww
eEFBLAotICAgIDB4RTUsMHg2OSwweEE0LDB4NTksMHgyQiwweEFFLDB4QUQsMHg4MiwweDA2LDB4
NkEsMHhBNSwweDU5LDB4NUEsMHg3QiwweDdBLDB4RTIsCi0gICAgMHhBNSwweDU5LDB4ODEsMHgz
MCwweDdFLDB4RkEsMHhGQSwweEU4LDB4RTMsMHgzOCwweDgxLDB4MjgsMHhGNSwweERBLDB4N0Ms
MHhGMCwKLSAgICAweEUzLDB4MzgsMHg2MSwweDI4LDB4MkIsMHgyQiwweEZGLDB4NUYsMHgwNCww
eDM5LDB4QTIsMHgzMCwweDAwLDB4ODIsMHhCRCwweEY1LAotICAgIDB4MjQsMHg0MSwweEEyLDB4
MzAsMHg4QSwweDBFLDB4QkYsMHgyNywweDI0LDB4NDEsMHhDMiwweDMwLDB4N0UsMHg3QSwweEEw
LDB4ODAsCi0gICAgMHhFMywweDM4LDB4QTIsMHgzMCwweDAyLDB4QTgsMHhGQywweDU4LDB4RTIs
MHgzOCwweEEyLDB4MzAsMHhBMCwweDNCLDB4QkYsMHg5RiwKLSAgICAweDI0LDB4NDEsMHhFMiww
eDM4LDB4MjUsMHhGQiwweDJCLDB4QkYsMHg2NCwweDQ5LDB4MDMsMHg0MSwweEY3LDB4QkYsMHhC
RiwweEFELAotICAgIDB4NjQsMHg0OSwweDI0LDB4NDEsMHhGQiwweEUyLDB4ODgsMHgwMCwweDY1
LDB4NDksMHgyNCwweDQxLDB4REIsMHg3RiwweDc3LDB4N0YsCi0gICAgMHg0NCwweDQxLDB4RTIs
MHgzOCwweDhGLDB4RjcsMHhGQSwweEEwLDB4NDQsMHg0OSwweDAzLDB4MzksMHhCNywweEZGLDB4
QUEsMHhFQSwKLSAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4NzAsMHhGOCwweERBLDB4QjgsMHgy
NCwweDQxLDB4RTMsMHgzOCwweDY5LDB4NUYsMHhCRSwweDBBLAotICAgIDB4MjQsMHgzOSwweEEy
LDB4MzAsMHg3QiwweEZFLDB4RUEsMHhGMCwweEMzLDB4MzAsMHhBMiwweDI4LDB4MjUsMHgzRiww
eDJDLDB4MDgsCi0gICAgMHgwNCwweDM5LDB4QTIsMHgzMCwweEJGLDB4M0YsMHgzRSwweEI3LDB4
NDQsMHg0MSwweDA0LDB4MzksMHhBRCwweEVGLDB4RTEsMHg1NSwKLSAgICAweDI0LDB4NDEsMHhD
MywweDMwLDB4ODAsMHhBOCwweEU4LDB4REUsMHhFMywweDM4LDB4QzMsMHgzMCwweERDLDB4Qzgs
MHhFQSwweDE3LAotICAgIDB4QzMsMHgzOCwweEUzLDB4MzAsMHhCRiwweERGLDB4N0YsMHg1NSww
eDAzLDB4MzksMHhDMywweDMwLDB4NzcsMHg4QSwweEUyLDB4RDYsCi0gICAgMHgwMywweDM5LDB4
QzMsMHgzMCwweEFELDB4QUYsMHgzRCwweDdCLDB4RTMsMHgzMCwweEMyLDB4MjgsMHhBQywweDZD
LDB4RkUsMHg1QywKLSAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4OUQsMHhGNSwweERGLDB4NzMs
MHgwMywweDM5LDB4QTIsMHgyOCwweEJGLDB4QkQsMHhBRiwweDI5LAotICAgIDB4NDQsMHg0MSww
eEUzLDB4MzgsMHhGRiwweEFCLDB4MEQsMHg4RiwweDQ0LDB4NDEsMHgwMywweDM5LDB4QUQsMHhF
QiwweEZCLDB4N0EsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzOCwweEVGLDB4OEIsMHhGQSwweEZG
LDB4RTIsMHgzMCwweEMyLDB4MzAsMHg2RSwweDU3LDB4NTcsMHg1NywKLSAgICAweEUzLDB4Mzgs
MHhDMiwweDMwLDB4NTUsMHg1RCwweEEyLDB4QTIsMHgwMywweDM5LDB4QzMsMHgzMCwweEZGLDB4
MkYsMHgwRiwweDhGLAotICAgIDB4NDUsMHg0MSwweEUzLDB4MzgsMHhBNSwweDJCLDB4MkUsMHhB
QiwweDY1LDB4NDksMHgyNCwweDQxLDB4NUQsMHg1NSwweEFFLDB4RUIsCi0gICAgMHg2NCwweDQ5
LDB4MDMsMHgzOSwweEZCLDB4N0UsMHg5RiwweEEyLDB4NDQsMHg0OSwweEUzLDB4MzgsMHhGNSww
eEY2LDB4QjgsMHhBMiwKLSAgICAweDY0LDB4NDksMHgyNCwweDQxLDB4QUYsMHhCRiwweEZDLDB4
QUEsMHg2NSwweDQ5LDB4MjMsMHg0MSwweEFGLDB4RkQsMHg5RiwweDgyLAotICAgIDB4NjQsMHg0
OSwweDAzLDB4MzksMHhGOCwweDc4LDB4RkEsMHhBQSwweDQ0LDB4NDEsMHgwMywweDQxLDB4RkEs
MHhBMiwweDk4LDB4RkUsCi0gICAgMHg0NCwweDQxLDB4QzIsMHgzOCwweDJBLDB4MjIsMHhFOCww
eDVFLDB4NDQsMHg0OSwweEUzLDB4MzgsMHhBOCwweEE4LDB4RUYsMHhERCwKLSAgICAweDIzLDB4
NDEsMHgwMywweDM5LDB4QTIsMHg2MCwweDJBLDB4MEIsMHgyMywweDQxLDB4RTIsMHgzOCwweDJF
LDB4MkUsMHgyOCwweERDLAotICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHg4QiwweEJGLDB4Rjcs
MHhENSwweDQ0LDB4NDEsMHhFMiwweDM4LDB4ODgsMHhCQSwweEVGLDB4NzUsCi0gICAgMHgyMyww
eDQxLDB4RTMsMHgzMCwweDA4LDB4ODgsMHg4MywweDAxLDB4NDMsMHg0MSwweDAzLDB4MzksMHhC
NSwweDM1LDB4QkQsMHhENSwKLSAgICAweDY0LDB4NDksMHgyNCwweDQxLDB4ODIsMHg4MiwweDlC
LDB4RkQsMHg2NCwweDQ5LDB4MjMsMHg0MSwweEIyLDB4QTIsMHhCOCwweERELAotICAgIDB4ODUs
MHg1MSwweDIzLDB4NDEsMHgyNywweEJBLDB4RkUsMHhFRSwweEM2LDB4NTksMHg2NCwweDUxLDB4
ODIsMHhBRSwweEZELDB4RkQsCi0gICAgMHgwNiwweDYyLDB4ODQsMHg1MSwweDJELDB4QjcsMHhG
NywweEZGLDB4NDcsMHg2QSwweEM1LDB4NjEsMHhBQiwweDBCLDB4QTksMHhBQiwKLSAgICAweDQ3
LDB4NzIsMHhDNSwweDU5LDB4QkUsMHg1QSwweDU4LDB4RTgsMHg0NywweDcyLDB4QzQsMHg1OSww
eDBBLDB4M0QsMHgyRiwweEFGLAotICAgIDB4ODgsMHg3MiwweDI2LDB4NkEsMHhFOCwweEY1LDB4
QkQsMHhCNSwweDBELDB4QTQsMHg4NywweDcyLDB4MzUsMHgyNSwweDM1LDB4QjUsCi0gICAgMHg5
MiwweEQ1LDB4OEYsMHhCNCwweDhCLDB4MEIsMHgyOSwweDI5LDB4OTMsMHhENSwweDMxLDB4QzUs
MHhBQSwweEEwLDB4RUEsMHg2OCwKLSAgICAweDUyLDB4Q0QsMHhCMCwweEI0LDB4NUMsMHg1OCww
eDVFLDB4NTcsMHg3MywweENELDB4QUYsMHhCNCwweEFELDB4MEIsMHgyQiwweDBCLAotICAgIDB4
OTQsMHhDRCwweDczLDB4QzUsMHg0NywweDg4LDB4RkEsMHg1RSwweDMyLDB4QzUsMHg5MCwweEFD
LDB4RTgsMHhFMCwweEUwLDB4NzgsCi0gICAgMHhEMSwweEI0LDB4MkUsMHhBNCwweDAwLDB4ODgs
MHhGQSwweEY3LDB4QjAsMHhCNCwweDBFLDB4OUMsMHhDOCwweEVBLDB4N0UsMHg1RiwKLSAgICAw
eDRGLDB4QTQsMHhBRCwweDkzLDB4RTgsMHhGRSwweERGLDB4NzcsMHhDRSwweDlCLDB4NkMsMHg4
QiwweDA4LDB4RkEsMHg3RSwweEZCLAotICAgIDB4Q0QsMHg5MywweDZDLDB4OEIsMHgwOCwweDJC
LDB4QjcsMHhBNywweDBFLDB4OUMsMHhBRCwweDkzLDB4QTIsMHhFQSwweEZGLDB4RkQsCi0gICAg
MHgwRSwweDlDLDB4OEQsMHg5MywweDIwLDB4QUEsMHhGRiwweDdGLDB4MEUsMHhBNCwweEFELDB4
OTMsMHg4QSwweDhCLDB4QUQsMHhGOSwKLSAgICAweDJFLDB4QTQsMHhDRCwweDkzLDB4RkQsMHhC
RiwweDBGLDB4RTksMHgyRSwweDlDLDB4RUUsMHg5QiwweDhCLDB4NjgsMHg1OCwweDVFLAotICAg
IDB4Q0QsMHg5MywweDZDLDB4OEIsMHhCQywweEI0LDB4NUUsMHg1RSwweDRGLDB4QTQsMHhBQyww
eDkzLDB4QUYsMHgyQiwweDJELDB4QUQsCi0gICAgMHg2RiwweEFDLDB4MEUsMHhBNCwweDNBLDB4
QTIsMHgwQiwweEFCLDB4QUYsMHhBQywweDRGLDB4QTQsMHhENywweERELDB4QkYsMHhBRCwKLSAg
ICAweEYxLDB4QkMsMHg0RiwweEE0LDB4QjcsMHhBQiwweDAyLDB4MDIsMHgxMSwweEJELDB4NkYs
MHhBQywweDJCLDB4RDYsMHhFOCwweDAwLAotICAgIDB4NjQsMHg1OSwweDAyLDB4NDksMHhGMiww
eEJFLDB4NzgsMHhFQiwweDY0LDB4NTksMHgwMywweDQ5LDB4QUUsMHgzRiwweEI5LDB4QkQsCi0g
ICAgMHg2NSwweDU5LDB4MDMsMHg0OSwweEY0LDB4N0IsMHhFRiwweEZGLDB4NDQsMHg1MSwweEUz
LDB4NDgsMHhBRiwweDhCLDB4RUYsMHhEQiwKLSAgICAweDQzLDB4NTEsMHhFMSwweDQ4LDB4MDIs
MHg4QSwweEFBLDB4N0UsMHgyMywweDQ5LDB4RTIsMHg0MCwweEVDLDB4NUUsMHhCRiwweEZGLAot
ICAgIDB4NDMsMHg1MSwweEUyLDB4NDAsMHhGQiwweEI5LDB4RjcsMHgyRiwweDQzLDB4NTEsMHgw
MiwweDQ5LDB4RkIsMHg4QiwweDBGLDB4QkUsCi0gICAgMHg0MywweDUxLDB4MjMsMHg0OSwweEMw
LDB4NDQsMHhDNiwweEUwLDB4NjQsMHg1MSwweDIzLDB4NTEsMHhBRCwweDVELDB4REYsMHg1NywK
LSAgICAweDQzLDB4NTEsMHgwMywweDUxLDB4MkUsMHhBOCwweDhBLDB4RUIsMHg0NCwweDU5LDB4
MjIsMHg0OSwweEI3LDB4QTcsMHhBNywweENGLAotICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHhC
QSwweEFCLDB4OEIsMHhGOSwweDY0LDB4NTksMHgwMywweDUxLDB4N0UsMHhBQSwweEEwLDB4QUUs
Ci0gICAgMHg0MywweDU5LDB4MjMsMHg1MSwweDNCLDB4RkIsMHg3NSwweEFFLDB4NjQsMHg1OSww
eDIzLDB4NTEsMHhGMiwweDVGLDB4RkYsMHhGQSwKLSAgICAweDQzLDB4NTksMHgyMywweDUxLDB4
MkIsMHgxQiwweDFFLDB4OEIsMHg0NCwweDU5LDB4MDMsMHg1MSwweEVBLDB4RjAsMHg1QSwweDVC
LAotICAgIDB4ODQsMHg2MSwweDAyLDB4NTEsMHhGRiwweEJELDB4MkYsMHhBRCwweDRBLDB4OUIs
MHhDNSwweDYxLDB4MkQsMHgwRCwweDI5LDB4MDksCi0gICAgMHhBQiwweEEzLDB4NkEsMHg5Qiww
eDBELDB4MkQsMHgyRCwweEE1LDB4QUIsMHhBMywweDZBLDB4OUIsMHhCMCwweEZDLDB4RkMsMHg3
NywKLSAgICAweDhCLDB4OUIsMHgwOSwweDhCLDB4QTAsMHg2MCwweDdFLDB4NUYsMHg0QSwweDlC
LDB4ODcsMHg4MiwweEEwLDB4QUEsMHg3QiwweDdGLAotICAgIDB4MjksMHg5MywweDg3LDB4N0Es
MHhBMCwweDdCLDB4REQsMHg1NSwweEU5LDB4OEEsMHg0NiwweDcyLDB4RTgsMHhGQSwweEVGLDB4
RkYsCi0gICAgMHhBOCwweDgyLDB4NDYsMHg3MiwweEIwLDB4QUEsMHhGRiwweEY3LDB4QTgsMHg3
QSwweDQ2LDB4NzIsMHhFMiwweENBLDB4RkEsMHg3RCwKLSAgICAweDg3LDB4N0EsMHg0NiwweDcy
LDB4Q0EsMHhFQSwweEI4LDB4OTcsMHg4NywweDdBLDB4NDYsMHg3MiwweEEzLDB4ODgsMHhFMiww
eDdCLAotICAgIDB4ODcsMHg3QSwweDI1LDB4NzIsMHhDMCwweEVBLDB4RUEsMHg4OSwweDY2LDB4
NzIsMHgyNywweDcyLDB4QUEsMHhCRSwweEJCLDB4RUUsCi0gICAgMHg2NiwweDcyLDB4MDUsMHg2
QSwweEJDLDB4RkEsMHhGRSwweEFBLDB4NjYsMHg3MiwweDA1LDB4NzIsMHhBMCwweEU2LDB4MkYs
MHhBRSwKLSAgICAweDY2LDB4NzIsMHgyNiwweDcyLDB4OEYsMHgyMiwweDAwLDB4MjgsMHhBOCww
eDdBLDB4NDYsMHg3MiwweEQ1LDB4RDUsMHgzNSwweDJFLAotICAgIDB4QzgsMHg4MiwweDg3LDB4
N0EsMHgzNSwweEE3LDB4RUEsMHhBOCwweEM4LDB4ODIsMHgyNiwweDcyLDB4QTAsMHhBQSwweEZB
LDB4N0YsCi0gICAgMHg4NywweDdBLDB4MDUsMHg2QSwweEFDLDB4RkYsMHg3RiwweDc1LDB4MjYs
MHg3MiwweEU1LDB4NjEsMHg3OCwweEE4LDB4RjIsMHhGQSwKLSAgICAweDI1LDB4NkEsMHhFNSww
eDY5LDB4REYsMHgzRiwweEJELDB4NjIsMHgwNSwweDZBLDB4RTUsMHg2MSwweDhFLDB4ODgsMHg5
MCwweEIwLAotICAgIDB4MjYsMHg2QSwweEU1LDB4NjksMHhERCwweEY3LDB4RjMsMHhBRSwweDI3
LDB4NzIsMHhDNCwweDYxLDB4RjcsMHhGRiwweEJGLDB4MkUsCi0gICAgMHgyNiwweDcyLDB4QzUs
MHg2MSwweDlBLDB4REUsMHhBQSwweDAyLDB4MjYsMHg3MiwweEM1LDB4NTksMHg3RSwweDdBLDB4
RkUsMHhFQSwKLSAgICAweEM1LDB4NjEsMHgyNCwweDQ5LDB4N0MsMHg3QSwweEY4LDB4RTgsMHg0
NSwweDQ5LDB4QTIsMHgzMCwweDVFLDB4NUUsMHhGOCwweEY4LAotICAgIDB4QzMsMHgzMCwweDYx
LDB4MjgsMHhERiwweDlGLDB4QkMsMHgyMCwweEEyLDB4MzAsMHg4MiwweDI4LDB4MDIsMHhGRSww
eDg4LDB4ODgsCi0gICAgMHhFMywweDM4LDB4ODEsMHgyOCwweDJCLDB4MkYsMHhCRCwweEI5LDB4
MjQsMHg0MSwweEMyLDB4MzAsMHhFMiwweEFGLDB4MjksMHhCRCwKLSAgICAweDAzLDB4MzksMHhD
MiwweDMwLDB4RjgsMHg3OCwweDdDLDB4N0EsMHhDMiwweDMwLDB4ODIsMHgzMCwweEJDLDB4MkUs
MHgzRSwweEZDLAotICAgIDB4MjMsMHg0MSwweEEyLDB4MzAsMHgyQiwweDJELDB4OEQsMHgzRiww
eDQ0LDB4NDEsMHgwMywweDQxLDB4M0YsMHhCMiwweEEyLDB4ODAsCi0gICAgMHg2NSwweDQ5LDB4
MjQsMHg0MSwweEMyLDB4OEEsMHhDQiwweDVELDB4NjQsMHg0OSwweDI0LDB4NDEsMHg1RiwweDdC
LDB4RUYsMHg4RCwKLSAgICAweDY0LDB4NDksMHgyNCwweDQxLDB4REEsMHg1NiwweDVFLDB4N0Us
MHgyNCwweDQxLDB4MDMsMHg0MSwweDUwLDB4N0EsMHg3OCwweDBBLAotICAgIDB4MjQsMHg0MSww
eEUzLDB4MzgsMHhBRSwweEFGLDB4QkUsMHhGQywweDY1LDB4NDksMHgwMywweDM5LDB4RkYsMHhG
RiwweENGLDB4QTksCi0gICAgMHgyNCwweDQxLDB4QTIsMHgyOCwweEY4LDB4RUEsMHhGOCwweDdB
LDB4QzIsMHgzMCwweDgyLDB4MjgsMHhBMiwweDhBLDB4QUYsMHhFRCwKLSAgICAweEMyLDB4MzAs
MHg4MiwweDI4LDB4M0EsMHg1RSwweDU1LDB4NUYsMHgwNCwweDM5LDB4ODIsMHgyOCwweDgyLDB4
RkEsMHhGRCwweDc1LAotICAgIDB4QzMsMHgzMCwweEEyLDB4MzAsMHgwMCwweDAyLDB4RTMsMHg4
NSwweDAzLDB4MzksMHhDMywweDMwLDB4MTUsMHhGRCwweEJELDB4MUQsCi0gICAgMHgwNCwweDM5
LDB4QzMsMHgzMCwweDIwLDB4QTIsMHg3RSwweDU3LDB4RTMsMHgzOCwweEEyLDB4MjgsMHhFOCww
eEZFLDB4RkYsMHhGNywKLSAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4QTAsMHgxRSwweDM2LDB4
QkEsMHhFMywweDMwLDB4QTIsMHgyOCwweEVDLDB4RkYsMHhCQiwweEJBLAotICAgIDB4MDMsMHgz
OSwweEEyLDB4MjgsMHhERiwweEY3LDB4RjUsMHgzQiwweDAzLDB4MzksMHhDMywweDMwLDB4MjUs
MHgyNSwweEFGLDB4QkYsCi0gICAgMHgyMywweDM5LDB4QzIsMHgzMCwweDJCLDB4QUEsMHhFQSww
eDdGLDB4MjQsMHgzOSwweEMyLDB4MzAsMHg4OCwweEUyLDB4RkYsMHg3NSwKLSAgICAweDAzLDB4
MzksMHhBMiwweDMwLDB4QTIsMHhFQSwweEVBLDB4RjcsMHhFMywweDM4LDB4QzIsMHgzMCwweEY4
LDB4RjAsMHgyQSwweDA3LAotICAgIDB4MDQsMHgzOSwweEMzLDB4MzAsMHhEQSwweEZFLDB4Rjcs
MHg1RiwweDAzLDB4MzksMHhDMywweDM4LDB4QkYsMHhGRiwweDNGLDB4MzUsCi0gICAgMHg2NCww
eDQ5LDB4RTMsMHgzOCwweEJGLDB4RjUsMHhCRCwweDNGLDB4ODUsMHg1MSwweDI0LDB4NDEsMHhG
RiwweEI1LDB4MkYsMHgyQSwKLSAgICAweDg1LDB4NDksMHgyMywweDQxLDB4RkUsMHhGOCwweEVD
LDB4NjAsMHg0NCwweDQ5LDB4MDMsMHg0MSwweEFBLDB4RUUsMHg3NiwweDdCLAotICAgIDB4NjUs
MHg0OSwweDAzLDB4MzksMHgwQSwweDJCLDB4MkIsMHhCNSwweDg1LDB4NTEsMHgyMywweDQxLDB4
RTgsMHg1RiwweERFLDB4N0YsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHgzOSwweEFBLDB4NzAsMHhG
OCwweEZGLDB4MjMsMHg0MSwweEUzLDB4MzgsMHhBMCwweEI4LDB4RjYsMHg1RiwKLSAgICAweDIz
LDB4NDEsMHhDMiwweDMwLDB4NzgsMHhGQSwweDdCLDB4RkIsMHgwMywweDM5LDB4QzIsMHgzMCww
eDJCLDB4QTUsMHhGRCwweDVGLAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHg4QSwweEFCLDB4
OUYsMHhGNSwweDAyLDB4MzksMHhDMiwweDMwLDB4NUMsMHhERiwweEZFLDB4N0UsCi0gICAgMHgw
MywweDMxLDB4QTEsMHgzMCwweDIyLDB4QkYsMHhCRiwweEY5LDB4MjMsMHgzOSwweEMyLDB4MzAs
MHhBNywweDNFLDB4MDIsMHg4RiwKLSAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4QjcsMHgzNyww
eDM1LDB4OUQsMHg0NCwweDQxLDB4MDMsMHgzOSwweDVFLDB4NUMsMHg1OCwweEZFLAotICAgIDB4
NjQsMHg0OSwweDAzLDB4MzksMHhBRCwweDJELDB4QUQsMHhGRCwweDQzLDB4NDksMHgyMywweDQx
LDB4QTUsMHhBNiwweEU4LDB4N0QsCi0gICAgMHg4NSwweDUxLDB4RTIsMHgzOCwweDJBLDB4M0Ys
MHhCNywweDk1LDB4QzYsMHg1MSwweDY0LDB4NTEsMHhGRCwweEIyLDB4QkIsMHhCOSwKLSAgICAw
eDA2LDB4NjIsMHhBNSwweDUxLDB4QkQsMHhBRCwweDJGLDB4MkYsMHg0NywweDZBLDB4QzUsMHg2
MSwweEJGLDB4QTcsMHgyNywweDhGLAotICAgIDB4QTgsMHg3QSwweDA2LDB4NkEsMHg1RSwweDdF
LDB4RUIsMHg4MywweDQ3LDB4NkEsMHhFNSwweDYxLDB4M0IsMHg3NiwweEQ3LDB4RjgsCi0gICAg
MHg2NywweDcyLDB4MjYsMHg2QSwweEZELDB4RjUsMHgxRiwweEY3LDB4Q0MsMHg5QiwweDQ3LDB4
NzIsMHgyRCwweDM1LDB4MzUsMHhCNSwKLSAgICAweDcyLDB4Q0QsMHgyRSwweEFDLDB4MEIsMHgw
QiwweDBCLDB4MjksMHg5MywweEQ1LDB4RjEsMHhCQywweEMwLDB4RTAsMHg2MCwweDcwLAotICAg
IDB4RjEsMHhCQywweDRGLDB4QUMsMHhEQywweEJFLDB4QkYsMHhGNywweDUzLDB4QzUsMHg5MCww
eEFDLDB4MEIsMHhBQiwweEZGLDB4NUQsCi0gICAgMHg1MiwweEM1LDB4RUQsMHg5QiwweDIwLDB4
QjIsMHhGRSwweDdGLDB4RDAsMHhCNCwweDBFLDB4OUMsMHhFOCwweEZBLDB4N0YsMHg1RCwKLSAg
ICAweDRGLDB4QTQsMHhDRCwweDlCLDB4ODgsMHhFOCwweDdGLDB4NUYsMHgwRSwweEE0LDB4OEQs
MHg5MywweEU4LDB4RkEsMHhENywweERGLAotICAgIDB4QUQsMHg5MywweDhDLDB4OEIsMHgwMCww
eDgyLDB4QTIsMHhENiwweENELDB4OTMsMHg4QywweDhCLDB4RkYsMHg1RiwweDdFLDB4NzgsCi0g
ICAgMHhBRCwweDkzLDB4NkMsMHg4QiwweDM2LDB4QUUsMHhBRSwweEFFLDB4RUUsMHg5QiwweDZD
LDB4OEIsMHg4MiwweDhBLDB4QUYsMHhBNywKLSAgICAweEVFLDB4OUIsMHg4QywweDhCLDB4RUYs
MHhCOSwweEFCLDB4RTAsMHgyRiwweEE0LDB4OEMsMHg4QiwweEFCLDB4MEEsMHhCQiwweERGLAot
ICAgIDB4MEUsMHg5QywweENELDB4OTMsMHg3MiwweDY4LDB4OEEsMHg2QiwweEVELDB4OUIsMHg2
QywweDgzLDB4ODIsMHhBOCwweEZBLDB4NUUsCi0gICAgMHhDRCwweDkzLDB4NEIsMHg4MywweEU4
LDB4RUEsMHg3QiwweDVGLDB4NEYsMHhBNCwweDRCLDB4ODMsMHgyRiwweDJELDB4MkQsMHhCNSwK
LSAgICAweDkwLDB4QUMsMHgyRSwweEE0LDB4NTUsMHhGQSwweEVCLDB4OEYsMHhBRiwweEI0LDB4
NEYsMHhBNCwweEE3LDB4M0YsMHhCRiwweEJFLAotICAgIDB4MzIsMHhCRCwweEIwLDB4QUMsMHhF
RiwweEZGLDB4MjksMHhBNSwweDUzLDB4QzUsMHgxMSwweEJELDB4RjUsMHg5NSwweEY1LDB4MkQs
Ci0gICAgMHg0MywweDUxLDB4MjMsMHg1MSwweDU4LDB4N0YsMHgzRiwweEQ1LDB4NjQsMHg1OSww
eDAzLDB4NTEsMHhBRSwweDdGLDB4RUYsMHg4MywKLSAgICAweDQ0LDB4NTEsMHgwMiwweDQ5LDB4
RkMsMHhCRiwweEZGLDB4REEsMHgyMywweDUxLDB4MDMsMHg0OSwweEJBLDB4NTAsMHg1OCwweDcz
LAotICAgIDB4MDIsMHg0OSwweEMyLDB4NDAsMHhBOCwweEE0LDB4M0EsMHgwMiwweDQzLDB4NTEs
MHhFMiwweDQwLDB4REYsMHg3QiwweEZBLDB4Q0YsCi0gICAgMHg0NCwweDUxLDB4MDMsMHg0OSww
eEI1LDB4MjUsMHgzNSwweEZGLDB4NDQsMHg1MSwweDIzLDB4NDksMHhCQiwweEZBLDB4NjIsMHg3
NywKLSAgICAweDY0LDB4NTEsMHgyMywweDUxLDB4REEsMHhFQSwweEUyLDB4NTksMHg0NCwweDUx
LDB4MDIsMHg1MSwweEVBLDB4ODAsMHg4QSwweEZCLAotICAgIDB4NDMsMHg1MSwweDAzLDB4NDks
MHhGQiwweEFFLDB4OEYsMHgwNiwweDY0LDB4NTksMHgyMywweDUxLDB4RUQsMHg4NSwweEJELDB4
M0EsCi0gICAgMHg2NCwweDU5LDB4MjMsMHg1MSwweEVGLDB4QTgsMHg5MiwweEE2LDB4ODQsMHg2
MSwweDIzLDB4NTEsMHhGRiwweEYzLDB4NkYsMHg2NSwKLSAgICAweDg0LDB4NTksMHgyMywweDUx
LDB4RkYsMHhFRSwweENCLDB4QTksMHg2NCwweDU5LDB4MjMsMHg1MSwweEZFLDB4QUIsMHhDNSww
eEQ1LAotICAgIDB4NDQsMHg1OSwweDAzLDB4NTEsMHhFQSwweDYyLDB4NkEsMHg5NCwweDIzLDB4
NTksMHgwMiwweDQ5LDB4RkYsMHhFRCwweEFBLDB4QUEsCi0gICAgMHhBNCwweDYxLDB4MDIsMHg1
MSwweEJELDB4MzUsMHgyNywweDNELDB4OEIsMHg5QiwweDI2LDB4NzIsMHgyOSwweDA5LDB4MEIs
MHgyQiwKLSAgICAweDhBLDB4OUIsMHg0QSwweDkzLDB4QzAsMHg4MiwweEEwLDB4OTIsMHg2QSww
eDlCLDB4MDksMHg4QiwweDAwLDB4ODIsMHhFMiwweDZBLAotICAgIDB4MkEsMHg5MywweDg3LDB4
N0EsMHg4MCwweEU4LDB4N0EsMHg3NiwweDA5LDB4OEIsMHg2NywweDcyLDB4RjgsMHhGRiwweDc3
LDB4N0QsCi0gICAgMHhBOCwweDdBLDB4NDYsMHg3MiwweEZDLDB4RDgsMHhFQSwweEJGLDB4ODcs
MHg3QSwweDI2LDB4NzIsMHhBRSwweEVCLDB4REUsMHhFNCwKLSAgICAweDQ1LDB4ODIsMHg2Nyww
eDcyLDB4NUYsMHhERCwweEQ3LDB4NzUsMHg4NywweDdBLDB4NDYsMHg3MiwweEE2LDB4ODIsMHhG
OCwweDhELAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhCQywweDhBLDB4QjAsMHgxQSwweDg3
LDB4N0EsMHg0NiwweDcyLDB4NkYsMHg4RiwweEJFLDB4RkYsCi0gICAgMHg4NywweDdBLDB4Njcs
MHg3MiwweDc1LDB4QjcsMHg2RSwweEYyLDB4NjYsMHg3MiwweDI1LDB4NzIsMHhBOCwweDEwLDB4
QUMsMHgwRiwKLSAgICAweDY3LDB4N0EsMHg0NiwweDcyLDB4NjUsMHg3RiwweEEzLDB4QkEsMHg2
NiwweDcyLDB4MjYsMHg2QSwweERGLDB4QkEsMHg2OCwweDZBLAotICAgIDB4NjYsMHg3MiwweDI1
LDB4NzIsMHhBRSwweDNFLDB4MzIsMHgyQSwweEM4LDB4ODIsMHg2NywweDdBLDB4QTUsMHhBNyww
eDJGLDB4NkIsCi0gICAgMHhBOCwweDgyLDB4MjUsMHg2QSwweDgwLDB4QTgsMHhGRSwweDU1LDB4
NjcsMHg3QSwweEM0LDB4NjksMHhFMCwweEUwLDB4RkIsMHhGRiwKLSAgICAweDI1LDB4NkEsMHhF
NSwweDY5LDB4RUUsMHg2MiwweDdBLDB4NUUsMHgwNSwweDZBLDB4QzUsMHg2MSwweDMwLDB4QkEs
MHhCRiwweEZELAotICAgIDB4MjYsMHg2QSwweEM0LDB4NjEsMHgyQSwweEZGLDB4RkYsMHg3RSww
eDA2LDB4NkEsMHhDNSwweDYxLDB4QkUsMHhFQiwweEFFLDB4OUYsCi0gICAgMHgyNiwweDZBLDB4
RTUsMHg2OSwweEZGLDB4QkIsMHg4QiwweEFGLDB4NDYsMHg3MiwweDA2LDB4NkEsMHhENSwweEZG
LDB4RUEsMHhGRCwKLSAgICAweDQ3LDB4NzIsMHgwNiwweDZBLDB4RjksMHhBOSwweEFELDB4QUYs
MHg0NywweDcyLDB4RTYsMHg2OSwweDZFLDB4N0EsMHhBOCwweDIyLAotICAgIDB4MjYsMHg2QSww
eDY0LDB4NTEsMHg3RSwweDdBLDB4NzgsMHg2OCwweDQ0LDB4NDksMHhDMywweDM4LDB4RDgsMHg3
QiwweDdBLDB4NzgsCi0gICAgMHhFMywweDM4LDB4ODIsMHgzMCwweEMyLDB4Q0EsMHg3QSwweDdF
LDB4QTIsMHgzMCwweDgxLDB4MjgsMHhDMiwweDYzLDB4RkEsMHhBQiwKLSAgICAweEMxLDB4MzAs
MHg4MiwweDI4LDB4QUQsMHhCRCwweEY3LDB4RkYsMHgwMywweDQxLDB4QTIsMHgzMCwweEFCLDB4
MkEsMHgwRiwweDM5LAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzgsMHg1RiwweDk2LDB4RDQsMHg3
RSwweEUyLDB4MzgsMHhBMiwweDMwLDB4NTYsMHg3NCwweEFBLDB4RTIsCi0gICAgMHg2NCwweDQ5
LDB4QTIsMHgzMCwweEI1LDB4MjksMHgyQiwweDJCLDB4NDQsMHg0OSwweEUzLDB4MzgsMHhFQSww
eEUwLDB4RTAsMHg2MCwKLSAgICAweDAzLDB4NDEsMHhFMywweDM4LDB4MjAsMHg5NiwweDNFLDB4
NzYsMHg2NSwweDQ5LDB4RTMsMHgzOCwweDJBLDB4RkUsMHhFRiwweEY1LAotICAgIDB4NjQsMHg0
OSwweEUzLDB4MzgsMHhFQywweEZCLDB4RkYsMHhENywweDI0LDB4NDEsMHhDMiwweDMwLDB4MDgs
MHg4MCwweEJDLDB4NTcsCi0gICAgMHgyMywweDQxLDB4QzMsMHgzMCwweEJFLDB4RjYsMHhBRiww
eDJCLDB4NDQsMHg0MSwweEMzLDB4MzAsMHgyQSwweEFCLDB4OEUsMHg1RSwKLSAgICAweDA0LDB4
MzksMHhBMiwweDI4LDB4NzgsMHg1QywweDdFLDB4NUYsMHhFMywweDI4LDB4ODIsMHgyOCwweEY1
LDB4QkYsMHhGRiwweEQ3LAotICAgIDB4QTIsMHgyOCwweDYxLDB4MjAsMHhFMCwweEUwLDB4RjAs
MHhFNiwweEEyLDB4MjgsMHg2MSwweDIwLDB4MEYsMHhCRCwweEJELDB4MEIsCi0gICAgMHhFMyww
eDMwLDB4QTIsMHgyOCwweEQ1LDB4QkQsMHhCRCwweDhBLDB4RTMsMHgzMCwweEEyLDB4MjgsMHg4
MiwweEVBLDB4N0EsMHg2OCwKLSAgICAweDgxLDB4MzAsMHhDMiwweDI4LDB4RkYsMHhGQSwweEVC
LDB4N0EsMHhDMiwweDMwLDB4QTIsMHgyOCwweEJGLDB4QjUsMHgyNSwweDA1LAotICAgIDB4RTMs
MHgzMCwweEEyLDB4MjgsMHhBMywweEZCLDB4QUYsMHgyNywweEMyLDB4MzAsMHhBMiwweDI4LDB4
QUUsMHhDRiwweDg4LDB4MDgsCi0gICAgMHhFMywweDMwLDB4QzMsMHgzMCwweDAyLDB4QTksMHg3
NSwweDJELDB4MDQsMHgzOSwweEMyLDB4MzAsMHhERiwweDhCLDB4RUIsMHhERiwKLSAgICAweEMz
LDB4MzgsMHhFMywweDMwLDB4RkQsMHhGNSwweEZGLDB4QUQsMHgwNCwweDM5LDB4QzIsMHgzMCww
eDVGLDB4N0QsMHhBRCwweDJCLAotICAgIDB4RTMsMHgzOCwweEMyLDB4MzAsMHg1NSwweDYxLDB4
NUIsMHhGOCwweEUzLDB4MzgsMHhDMiwweDMwLDB4MjksMHg4MSwweEQ3LDB4RjIsCi0gICAgMHhF
MywweDM4LDB4QzIsMHgzMCwweEQ2LDB4N0YsMHg4OSwweDJCLDB4MDMsMHgzOSwweEMzLDB4MzAs
MHgxNSwweDE1LDB4REEsMHhGMiwKLSAgICAweDg1LDB4NTEsMHhFMywweDM4LDB4QUQsMHgyRiww
eDJELDB4QkQsMHg4NSwweDUxLDB4NjUsMHg0OSwweDU1LDB4N0YsMHhGMiwweDdCLAotICAgIDB4
ODUsMHg1MSwweDIzLDB4NDEsMHhFMiwweEUyLDB4RUEsMHg2MiwweDQ0LDB4NDksMHgwMywweDM5
LDB4RjIsMHg0OCwweDRBLDB4N0IsCi0gICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDJGLDB4MkYs
MHhFNywweEY3LDB4NDQsMHg0OSwweDI0LDB4NDEsMHg3MiwweDZBLDB4NTMsMHg5NSwKLSAgICAw
eDIzLDB4NDEsMHhDMiwweDM4LDB4RkEsMHhERiwweEVFLDB4QkEsMHgwMywweDQxLDB4QzIsMHgz
MCwweDdFLDB4RUEsMHhBQSwweEE4LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgwRiwweEI1
LDB4RDUsMHhCQiwweDAzLDB4MzksMHhDMiwweDMwLDB4N0UsMHhENywweEY2LDB4Q0EsCi0gICAg
MHgwMywweDM5LDB4QzIsMHgzMCwweDNGLDB4M0UsMHgyNywweDJFLDB4MjMsMHgzOSwweEUyLDB4
MzAsMHg3NywweEZGLDB4QUIsMHhCQywKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4RkQsMHg3
RSwweDc4LDB4RjgsMHgyMywweDM5LDB4QzIsMHgzMCwweDhCLDB4MEYsMHgyRCwweDJCLAotICAg
IDB4MjMsMHgzOSwweDAzLDB4MzksMHhEMywweDJGLDB4RkQsMHg5QiwweDIzLDB4MzksMHhFMiww
eDM4LDB4RjgsMHhGMCwweEU4LDB4NkEsCi0gICAgMHgyMywweDQxLDB4QzIsMHgzMCwweDAyLDB4
OEEsMHgwQiwweDg5LDB4NDMsMHg0MSwweDAzLDB4MzksMHg5RiwweEI1LDB4QTUsMHgyQiwKLSAg
ICAweDQ0LDB4NDksMHgwMywweDM5LDB4MzUsMHhCQiwweEFBLDB4QTMsMHhBNSwweDU5LDB4NDQs
MHg0OSwweDNGLDB4M0QsMHhERCwweDM3LAotICAgIDB4MjYsMHg2MiwweDg1LDB4NTEsMHhCNyww
eEJGLDB4OTcsMHgzNywweDY3LDB4NzIsMHgwNiwweDYyLDB4Q0QsMHhFRCwweEE1LDB4QkUsCi0g
ICAgMHg4OCwweDcyLDB4NDYsMHg2QSwweEE5LDB4MjksMHhFRCwweEY1LDB4ODcsMHg3MiwweEU1
LDB4NjEsMHhGQSwweEU4LDB4RTgsMHg1QSwKLSAgICAweDQ3LDB4NkEsMHhDNSwweDU5LDB4QTAs
MHhFRSwweDdFLDB4NUUsMHg2QiwweDkzLDB4RTUsMHg2MSwweDNGLDB4M0QsMHhCRCwweEI1LAot
ICAgIDB4NzMsMHhDRCwweEVELDB4QTMsMHgyQiwweDA5LDB4MjksMHgwOSwweDkzLDB4RDUsMHg2
RiwweEFDLDB4RTAsMHg3MCwweDc4LDB4NzgsCi0gICAgMHhCMCwweEI0LDB4NEYsMHhBQywweEFG
LDB4MzcsMHg3RiwweDdELDB4OTAsMHhBQywweEVELDB4OUIsMHhBMCwweEE4LDB4RkEsMHhENywK
LSAgICAweDRGLDB4QTQsMHhFRSwweDlCLDB4QzIsMHg3RiwweDU3LDB4NzcsMHgwRSwweDlDLDB4
QUQsMHg5MywweEEyLDB4RUEsMHhGMiwweDVFLAotICAgIDB4RUUsMHg5QiwweEFELDB4OTMsMHg3
RSwweDZBLDB4N0EsMHg1NCwweEFELDB4OTMsMHg2RCwweDhCLDB4QjAsMHhFOCwweEEyLDB4QTAs
Ci0gICAgMHhBRCwweDkzLDB4NkMsMHg4QiwweEVBLDB4RUEsMHg4QiwweDBGLDB4Q0QsMHg5Myww
eDhDLDB4OEIsMHg3RCwweEE5LDB4N0QsMHg1RSwKLSAgICAweEFELDB4OTMsMHg2QywweDhCLDB4
QjYsMHhFRiwweEFBLDB4MjIsMHhDRCwweDkzLDB4OEMsMHg4QiwweDA1LDB4MEQsMHhGRiwweEZG
LAotICAgIDB4MEUsMHg5QywweDhDLDB4OEIsMHg4MiwweEJBLDB4NUIsMHg3RiwweEFELDB4OTMs
MHgwQSwweDdCLDB4MjAsMHg4OCwweEE4LDB4NUUsCi0gICAgMHhDRCwweDkzLDB4MkIsMHg3Qiww
eDAwLDB4QUEsMHg2RiwweDc1LDB4OEMsMHg4MywweDBBLDB4N0IsMHhCQywweEZFLDB4N0YsMHhE
NywKLSAgICAweDZDLDB4ODMsMHgwQiwweDdCLDB4QkMsMHhCNywweEZELDB4QjUsMHhBRCwweDkz
LDB4MEIsMHg3QiwweDJGLDB4QkYsMHhCRiwweDU1LAotICAgIDB4NEYsMHhBQywweDZDLDB4OEIs
MHgwQSwweDJGLDB4RkYsMHg1NSwweDZGLDB4QUMsMHhBRCwweDhCLDB4MjAsMHg4QSwweEFGLDB4
QkQsCi0gICAgMHgxMSwweEJELDB4MEUsMHg5QywweDJCLDB4MkIsMHhCRiwweEI1LDB4MzIsMHhD
NSwweDkwLDB4QUMsMHgwMiwweDAwLDB4MEUsMHhBNSwKLSAgICAweDQzLDB4NTEsMHgwMiwweDQ5
LDB4OTgsMHhFMCwweEVDLDB4QkYsMHg2NCwweDUxLDB4MDIsMHg0OSwweDhCLDB4RjksMHhGRiww
eEJGLAotICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHg2QiwweEYyLDB4NUEsMHg1QiwweDIzLDB4
NDksMHhFMSwweDQwLDB4RjgsMHhCQSwweEFELDB4ODIsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0
OCwweEEzLDB4MDAsMHhBMiwweDlFLDB4NDQsMHg1MSwweDAzLDB4NDksMHg2RiwweEQ2LDB4QTcs
MHgyNSwKLSAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4RjUsMHgwOSwweDM2LDB4QUEsMHg2NCww
eDUxLDB4MjMsMHg0OSwweEVGLDB4QkUsMHg3QSwweDc4LAotICAgIDB4NDQsMHg1MSwweDAzLDB4
NDksMHhCQiwweDdFLDB4NTYsMHhEQSwweDQzLDB4NTEsMHgwMywweDQ5LDB4RkYsMHhGRiwweEJF
LDB4QjcsCi0gICAgMHg2NCwweDU5LDB4MDIsMHg0OSwweDJGLDB4MjcsMHhBMywweEFBLDB4NjQs
MHg1OSwweDIzLDB4NTEsMHhBMCwweEY3LDB4RTUsMHg3NywKLSAgICAweDY0LDB4NTksMHgwMyww
eDQ5LDB4QkUsMHhBRiwweEFGLDB4OEYsMHg0NCwweDU5LDB4MDMsMHg1MSwweEFFLDB4RUUsMHhG
NCwweEFDLAotICAgIDB4NDQsMHg1OSwweDIzLDB4NTEsMHgwMSwweEVBLDB4MEIsMHgwOSwweDQ0
LDB4NTksMHhFMiwweDQ4LDB4NkUsMHhFOCwweEU4LDB4RTgsCi0gICAgMHg0MywweDU5LDB4RTIs
MHg0OCwweEVFLDB4RTIsMHhGQiwweERGLDB4MjMsMHg1MSwweDAzLDB4NTEsMHgyMSwweERCLDB4
RkEsMHhGRCwKLSAgICAweDI2LDB4NzIsMHgyMywweDUxLDB4OTUsMHhCNSwweDM1LDB4MzUsMHg0
QSwweDlCLDB4ODcsMHg4MiwweDAxLDB4MEIsMHgwOSwweDAzLAotICAgIDB4NkEsMHg5QiwweDA5
LDB4OTMsMHgyQSwweEZBLDB4RkEsMHg3RSwweDZBLDB4OUIsMHg4NywweDdBLDB4QTgsMHhFRSww
eDdFLDB4N0UsCi0gICAgMHhDOCwweDdBLDB4NjcsMHg3QSwweEY4LDB4RkUsMHhFQywweEQ2LDB4
ODcsMHg3QSwweDQ2LDB4NzIsMHhCRSwweEJDLDB4N0UsMHg2MiwKLSAgICAweDg3LDB4N0EsMHg0
NywweDcyLDB4QkYsMHhCMiwweEZBLDB4RkYsMHg4NywweDdBLDB4MjYsMHg3MiwweDI4LDB4RUEs
MHgzNSwweDBCLAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg0OCwweDJBLDB4RkEsMHhGQSww
eDg3LDB4N0EsMHgyNiwweDcyLDB4MEIsMHg4QSwweDhBLDB4QTcsCi0gICAgMHg4NywweDdBLDB4
MjUsMHg3MiwweEI4LDB4QjYsMHhCNiwweEVBLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhGQywweEZG
LDB4RkYsMHgxRSwKLSAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4QzksMHg2MywweDc4LDB4NkIs
MHg4NywweDcyLDB4MjUsMHg3MiwweDJGLDB4RUYsMHhGRSwweDdGLAotICAgIDB4NjYsMHg3QSww
eDI2LDB4NkEsMHhCMywweEVGLDB4Q0IsMHg4QiwweDY3LDB4N0EsMHg0NiwweDcyLDB4QjcsMHhD
RiwweEFGLDB4MjIsCi0gICAgMHg4NywweDdBLDB4NDYsMHg3MiwweDg5LDB4QUEsMHgyMywweEFE
LDB4QTcsMHg3QSwweDQ2LDB4NzIsMHhBMywweEVBLDB4RkIsMHhGRCwKLSAgICAweDY3LDB4NzIs
MHgwNSwweDZBLDB4NUUsMHg1OCwweEZFLDB4N0EsMHgyNiwweDcyLDB4RTUsMHg2OSwweDc3LDB4
NTYsMHg1NSwweDg5LAotICAgIDB4MDYsMHg2QSwweEM1LDB4NjEsMHhGRSwweDhFLDB4RkIsMHg3
RSwweDA1LDB4NkEsMHhDNSwweDYxLDB4RUEsMHg1QywweDU1LDB4NTUsCi0gICAgMHgwNSwweDZB
LDB4QzUsMHg2MSwweEUyLDB4QTIsMHhGOSwweEZGLDB4MDUsMHg2QSwweEM0LDB4NjEsMHhCNyww
eEJGLDB4QkYsMHhCRiwKLSAgICAweDA1LDB4NkEsMHhFNSwweDYxLDB4MjcsMHgxOCwweDA4LDB4
MEYsMHg2NiwweDcyLDB4MDYsMHg2QSwweDVGLDB4RjMsMHhGRCwweEZELAotICAgIDB4NDcsMHg3
MiwweDA2LDB4NkEsMHhCRiwweEZFLDB4NkIsMHgyQSwweDQ3LDB4NzIsMHgyNiwweDZBLDB4RUIs
MHhBQSwweDJFLDB4QUEsCi0gICAgMHgyNiwweDZBLDB4QTQsMHg1OSwweDcwLDB4RTAsMHgwMCww
eDAwLDB4RTUsMHg2MSwweEUyLDB4MzgsMHg1RiwweDdBLDB4NzgsMHhGMCwKLSAgICAweEUyLDB4
MzgsMHg4MiwweDI4LDB4RkEsMHhGQywweEZBLDB4NzgsMHhBMiwweDMwLDB4ODEsMHgyOCwweEMz
LDB4OEEsMHgwRiwweDNGLAotICAgIDB4RTIsMHgzMCwweDgxLDB4MjgsMHhCRCwweDJELDB4MEIs
MHgyQSwweDAyLDB4MzksMHhBMSwweDMwLDB4M0EsMHgzRSwweEZBLDB4REEsCi0gICAgMHgwMyww
eDM5LDB4QzIsMHgzOCwweEZBLDB4RkUsMHhCRiwweEExLDB4MDMsMHgzOSwweEMyLDB4MzgsMHg1
RiwweEQ0LDB4RDYsMHhGQiwKLSAgICAweDY0LDB4NDksMHhDMiwweDM4LDB4QTksMHgyRCwweDJE
LDB4ODksMHg2NSwweDQ5LDB4RTIsMHgzOCwweDcwLDB4NkEsMHhGMCwweDdFLAotICAgIDB4MDMs
MHgzOSwweEMyLDB4MzAsMHg1RSwweEVBLDB4RkEsMHg3QSwweDAzLDB4MzksMHhDMiwweDMwLDB4
MjksMHhFRSwweEJCLDB4QTUsCi0gICAgMHgyNCwweDQxLDB4QzIsMHgzMCwweEFFLDB4Q0IsMHg1
NywweDU1LDB4RTMsMHgzOCwweEEyLDB4MjgsMHhBQSwweEJBLDB4RkEsMHhGRiwKLSAgICAweDI0
LDB4NDEsMHhDMiwweDMwLDB4MkIsMHgyRCwweEFCLDB4QUQsMHgyNCwweDM5LDB4QTIsMHgyOCww
eDc4LDB4RjgsMHhGRSwweEZFLAotICAgIDB4RTMsMHgzMCwweDgyLDB4MjgsMHhGMiwweEY4LDB4
RkMsMHg3RiwweEEyLDB4MjgsMHg2MiwweDIwLDB4RUMsMHhGNiwweEZGLDB4RjcsCi0gICAgMHg2
MywweDI4LDB4QTIsMHgyMCwweEJFLDB4RkEsMHhFQiwweDZFLDB4RTMsMHgzMCwweDgyLDB4Mjgs
MHhCNSwweDJELDB4MkYsMHgzRiwKLSAgICAweDA0LDB4MzksMHhBMiwweDI4LDB4QUEsMHhBMCww
eDcyLDB4NkEsMHhDMywweDI4LDB4ODIsMHgyOCwweDgwLDB4QUEsMHhGQiwweEY3LAotICAgIDB4
QTIsMHgyOCwweDgyLDB4MjAsMHgyQiwweDJGLDB4QkEsMHgyQywweEMyLDB4MjgsMHhBMiwweDI4
LDB4RTUsMHhENSwweEFELDB4RjksCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEZGLDB4RkIs
MHgzRSwweDI5LDB4RTMsMHgzMCwweEEyLDB4MjgsMHgwRSwweDJGLDB4MkMsMHhBQSwKLSAgICAw
eEUzLDB4MzAsMHhDMiwweDMwLDB4QkYsMHgwQiwweEVBLDB4NkEsMHhFMywweDM4LDB4QTIsMHgy
OCwweDJFLDB4QUYsMHhGRiwweEZGLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHgwOCwweDhB
LDB4QUIsMHgyRiwweDAzLDB4MzksMHhFMywweDMwLDB4QUYsMHhGQiwweEY3LDB4RkUsCi0gICAg
MHhFMywweDM4LDB4QzMsMHgzMCwweEY4LDB4RUMsMHhDQSwweDcwLDB4MjQsMHgzOSwweEMyLDB4
MzAsMHhGQiwweENCLDB4NzksMHg3NSwKLSAgICAweEUzLDB4MzgsMHhDMywweDMwLDB4MzcsMHhC
NSwweEQ1LDB4MzUsMHgwMywweDM5LDB4QzMsMHgzMCwweEEyLDB4QkYsMHhCRiwweEY3LAotICAg
IDB4NDQsMHg0MSwweEUzLDB4MzgsMHgwRCwweDNELDB4OUYsMHhERiwweDQ0LDB4NDksMHhFMyww
eDM4LDB4MDIsMHhBMywweEJGLDB4N0QsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweEUyLDB4
RkYsMHhENywweERELDB4MjQsMHg0MSwweEUzLDB4MzgsMHhBRSwweEZFLDB4QkEsMHhGOSwKLSAg
ICAweDAzLDB4MzksMHhBMiwweDM4LDB4QjgsMHhBOCwweEE4LDB4ODgsMHgyMywweDQxLDB4RTMs
MHgzOCwweDJBLDB4QUYsMHhBQiwweEFCLAotICAgIDB4MDMsMHg0MSwweEUzLDB4MzgsMHhBNSww
eEFBLDB4RUIsMHg2MiwweDQ0LDB4NDEsMHhFMiwweDM4LDB4NzcsMHhBRiwweDBGLDB4RUUsCi0g
ICAgMHgwMywweDM5LDB4QTIsMHgzMCwweDlBLDB4OTgsMHhBMCwweEUyLDB4MDMsMHgzOSwweEMy
LDB4MzAsMHhFOCwweEZBLDB4QTcsMHhENSwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QUMs
MHg3RSwweDE3LDB4OTUsMHgwMywweDM5LDB4RTIsMHgzMCwweEUwLDB4QUQsMHgyRCwweDJFLAot
ICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHhEQiwweDdGLDB4RkUsMHhFOCwweDIzLDB4MzksMHhD
MiwweDMwLDB4MkYsMHgwRCwweEJGLDB4RUYsCi0gICAgMHg2NCwweDQxLDB4MDMsMHgzOSwweDY2
LDB4RUEsMHhBMywweDhELDB4NDMsMHg0MSwweEUyLDB4MzAsMHg3RiwweEVBLDB4QUEsMHhGOCwK
LSAgICAweDQzLDB4NDEsMHhFMiwweDMwLDB4MkQsMHgzNSwweEZCLDB4RkYsMHg2NCwweDQ5LDB4
MDIsMHgzOSwweEFFLDB4MkIsMHgwMSwweDJCLAotICAgIDB4ODQsMHg1MSwweDIzLDB4NDEsMHhB
RCwweEJFLDB4MkUsMHgwOCwweEE1LDB4NTEsMHg2NCwweDQ5LDB4OTYsMHhGMiwweEUwLDB4ODIs
Ci0gICAgMHgyNiwweDYyLDB4ODQsMHg1MSwweDM3LDB4RUQsMHhGNSwweDU3LDB4MjYsMHg2QSww
eDg0LDB4NTEsMHg4MCwweEUyLDB4RkIsMHg3RSwKLSAgICAweDQ3LDB4NkEsMHg4NCwweDUxLDB4
ODIsMHhBQiwweEY3LDB4RDUsMHgyNiwweDZBLDB4QzUsMHg1OSwweEY4LDB4RkUsMHg3RiwweEFE
LAotICAgIDB4MDYsMHg2MiwweEE0LDB4NTksMHhBOCwweEZGLDB4OUQsMHhBRCwweEM5LDB4N0Es
MHhFNiwweDYxLDB4MTUsMHgzNSwweDlELDB4RjUsCi0gICAgMHg1MiwweENELDB4RUEsMHg3QSww
eDBCLDB4MEIsMHgwOSwweDJELDB4NTIsMHhDRCwweDhGLDB4QUMsMHg3OCwweDc4LDB4NzgsMHg1
OCwKLSAgICAweEIwLDB4QjQsMHg0RSwweEE0LDB4NkIsMHg3MCwweEMyLDB4QTgsMHg0RiwweEFD
LDB4QUQsMHg4QiwweEZFLDB4RkUsMHg1RSwweDdDLAotICAgIDB4RUUsMHg5QiwweDhDLDB4OEIs
MHgwQSwweEE3LDB4RDUsMHg1NywweENELDB4OTMsMHg2QywweDhCLDB4QTgsMHhFQiwweEVELDB4
RkYsCi0gICAgMHhDRCwweDkzLDB4NkMsMHg4QiwweEJDLDB4QkMsMHhBRSwweEE5LDB4Q0QsMHg5
MywweDhELDB4OEIsMHhGQiwweDdFLDB4QUIsMHgyQSwKLSAgICAweENFLDB4OTMsMHg4QywweDhC
LDB4RTUsMHhGRCwweEJGLDB4M0YsMHhFRSwweDlCLDB4OEMsMHg4QiwweERGLDB4NzUsMHhCNSww
eEFFLAotICAgIDB4Q0QsMHg5MywweDhDLDB4OEIsMHhFRCwweDhCLDB4MDAsMHhBMCwweEFDLDB4
OEIsMHg0QywweDgzLDB4QTIsMHg2OCwweEFBLDB4N0IsCi0gICAgMHhBQywweDhCLDB4MkIsMHg3
QiwweDhBLDB4NkEsMHhFQSwweDdGLDB4NEIsMHg4MywweEVBLDB4NzIsMHhCMCwweEQwLDB4Rjgs
MHhFRSwKLSAgICAweDJCLDB4N0IsMHhFQSwweDcyLDB4OEEsMHhGNiwweEE2LDB4MTUsMHgyQiww
eDdCLDB4RUEsMHg3MiwweDI4LDB4QjAsMHg5MiwweEI1LAotICAgIDB4NEMsMHg4MywweEVBLDB4
NzIsMHgyRSwweEE5LDB4NUYsMHg1RiwweDRCLDB4ODMsMHhDOSwweDcyLDB4RTgsMHhGQSwweEZF
LDB4RkIsCi0gICAgMHg4QywweDhCLDB4RUEsMHg3QSwweDJGLDB4MkQsMHgyQiwweDJGLDB4Q0Qs
MHg5MywweDZDLDB4OEIsMHgzRiwweDk1LDB4NzcsMHhGRiwKLSAgICAweDJFLDB4QTQsMHg4RCww
eDhCLDB4MEEsMHgyRiwweDM1LDB4QUQsMHhEMSwweEI0LDB4MEUsMHg5QywweDBCLDB4QkQsMHhG
RiwweDc1LAotICAgIDB4NDMsMHg1MSwweEUzLDB4NDgsMHg4RSwweEE5LDB4QUEsMHhCQSwweDQz
LDB4NTEsMHgyMywweDQ5LDB4RTUsMHg1RiwweDVGLDB4N0UsCi0gICAgMHgyMywweDQ5LDB4RTIs
MHg0MCwweEFCLDB4QUEsMHg5QSwweDhFLDB4NDQsMHg1MSwweEUxLDB4NDAsMHg4RiwweEVCLDB4
N0YsMHhGRiwKLSAgICAweDQzLDB4NTEsMHhFMSwweDQwLDB4MkYsMHgwQiwweDJGLDB4QkQsMHg0
MywweDUxLDB4MDIsMHg0OSwweDJFLDB4QUMsMHhBRSwweEU2LAotICAgIDB4NDMsMHg1MSwweDAy
LDB4NDksMHgwOCwweEFFLDB4RDYsMHg3RCwweDQzLDB4NTEsMHhFMiwweDQwLDB4RTAsMHg5QSww
eEZCLDB4RkIsCi0gICAgMHg0MywweDUxLDB4MDIsMHg0OSwweEVBLDB4QkIsMHg3RCwweDJELDB4
NjQsMHg1OSwweDAyLDB4NDksMHgzQiwweEI5LDB4ODksMHhBMiwKLSAgICAweDY0LDB4NTksMHgy
MywweDUxLDB4QUIsMHhFRSwweEY3LDB4NzYsMHg0MywweDUxLDB4MjMsMHg1MSwweEQ0LDB4REIs
MHhDMiwweDAzLAotICAgIDB4NDQsMHg1OSwweDIzLDB4NTEsMHhBRCwweEFELDB4MzEsMHgzRiww
eDQ0LDB4NTEsMHgwMywweDUxLDB4QjgsMHg5QywweERBLDB4RTgsCi0gICAgMHg0MywweDUxLDB4
MDMsMHg1MSwweERBLDB4RDMsMHg3QSwweEZBLDB4NDQsMHg1OSwweDAzLDB4NTEsMHhCOCwweEVB
LDB4N0IsMHhERiwKLSAgICAweEUzLDB4NTAsMHgwMiwweDQ5LDB4RjcsMHhGQywweDU3LDB4Nzcs
MHgyMywweDUxLDB4RTMsMHg0OCwweDhGLDB4RkEsMHhFRSwweEYyLAotICAgIDB4NjcsMHg3QSww
eDAzLDB4NTEsMHgzNSwweDNELDB4MzUsMHgzNSwweDZCLDB4OUIsMHhDOSwweDhBLDB4MjksMHgw
OSwweDJCLDB4QUIsCi0gICAgMHg0QSwweDkzLDB4QzgsMHg4QSwweDYyLDB4RkEsMHhFOCwweDZG
LDB4QzgsMHg4MiwweDg4LDB4N0EsMHhFMCwweEU4LDB4RkEsMHhBQywKLSAgICAweEE4LDB4N0Es
MHg2NywweDdBLDB4RDgsMHhGMiwweEVBLDB4QkEsMHhBNywweDdBLDB4NjcsMHg3QSwweDVGLDB4
RkUsMHg2OCwweEVDLAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg2QSwweDYyLDB4Q0EsMHhB
MiwweDg3LDB4N0EsMHg0NywweDcyLDB4RTksMHhCRSwweDNCLDB4RjksCi0gICAgMHg4NywweDdB
LDB4NDYsMHg3MiwweEVCLDB4NzAsMHhFMCwweEU4LDB4ODcsMHg3QSwweDQ2LDB4NzIsMHgzQSww
eEMwLDB4RkEsMHgzRiwKLSAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4RUMsMHhFRSwweEE2LDB4
RkYsMHg4NywweDdBLDB4NDYsMHg3MiwweEFFLDB4RUIsMHhBRCwweEJGLAotICAgIDB4ODcsMHg3
MiwweDI1LDB4NkEsMHhGMiwweDZFLDB4RkEsMHhGQSwweDg3LDB4NzIsMHgyNSwweDcyLDB4RkYs
MHhGQywweEVFLDB4RkQsCi0gICAgMHg2NiwweDcyLDB4MjUsMHg2QSwweERGLDB4QUEsMHhBQSww
eEU4LDB4ODYsMHg3QSwweDI1LDB4NzIsMHhFNiwweEVCLDB4QUIsMHgzRiwKLSAgICAweEE3LDB4
N0EsMHgyNiwweDZBLDB4RTksMHhBRiwweEFBLDB4MkEsMHg4NywweDdBLDB4MjYsMHg3MiwweEEy
LDB4RTgsMHg3OCwweEQyLAotICAgIDB4NDYsMHg3MiwweEU1LDB4NjEsMHhFOCwweEU4LDB4RTgs
MHg3QSwweDA2LDB4NkEsMHhDNSwweDYxLDB4MDAsMHhGRSwweEQ3LDB4NzIsCi0gICAgMHhFNSww
eDY5LDB4ODQsMHg2MSwweEVDLDB4RkUsMHg3RSwweEZCLDB4RTUsMHg2MSwweDg0LDB4NTksMHhB
QiwweEE3LDB4MkQsMHgyRSwKLSAgICAweDA1LDB4NkEsMHhDNSwweDYxLDB4RjYsMHhFNSwweEVG
LDB4NUEsMHhFNSwweDY5LDB4QzUsMHg2MSwweDk2LDB4MkYsMHhBRSwweDU3LAotICAgIDB4MjYs
MHg2QSwweEM0LDB4NjEsMHhBRiwweDBGLDB4OEYsMHhCOSwweDQ2LDB4NzIsMHgwNSwweDZBLDB4
RUQsMHhGNSwweDdELDB4QzUsCi0gICAgMHg0NiwweDcyLDB4MDUsMHg2QSwweEFBLDB4ODIsMHgw
MywweEEzLDB4NDYsMHg3MiwweDI2LDB4NkEsMHgwQywweDgwLDB4RkIsMHgxRiwKLSAgICAweDY2
LDB4NzIsMHhFNCwweDYxLDB4QkEsMHg3MiwweEZDLDB4NUUsMHgwNiwweDYyLDB4MDMsMHg0MSww
eEY4LDB4NzgsMHhFOCwweDdDLAotICAgIDB4MDMsMHg0MSwweDgxLDB4MjgsMHg1QywweDVBLDB4
NUMsMHg1NiwweEEyLDB4MzAsMHg4MSwweDI4LDB4MTcsMHhCNywweEI3LDB4MUYsCi0gICAgMHhD
MiwweDMwLDB4QTIsMHgyOCwweDBCLDB4MDYsMHgwQSwweDgzLDB4MDIsMHgzOSwweEMyLDB4MzAs
MHg1NSwweEQ1LDB4RkQsMHgyRiwKLSAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4RTUsMHhCRCww
eDA5LDB4MEIsMHg0NCwweDQxLDB4RTIsMHgzOCwweDU1LDB4RjUsMHhCRiwweDAyLAotICAgIDB4
NDQsMHg0OSwweEUyLDB4MzgsMHgyOSwweEVCLDB4QUEsMHgwOCwweDIzLDB4NDEsMHhDMiwweDMw
LDB4QzAsMHhGMiwweDc4LDB4N0MsCi0gICAgMHgwMywweDM5LDB4QTIsMHgzMCwweDcyLDB4N0Us
MHg1RiwweDc3LDB4RTMsMHgzOCwweEEyLDB4MzAsMHg4QiwweEZCLDB4NTUsMHg1NSwKLSAgICAw
eEMyLDB4MzAsMHhBMiwweDI4LDB4MEEsMHgwMiwweEVGLDB4NTUsMHhFMywweDMwLDB4QTIsMHgy
OCwweDNGLDB4QUQsMHhCQiwweEJELAotICAgIDB4MjMsMHgzOSwweEMzLDB4MjgsMHhFRiwweEZG
LDB4RDUsMHhENSwweEUzLDB4MzAsMHg4MiwweDI4LDB4QTgsMHhFOCwweEZFLDB4REMsCi0gICAg
MHhDMiwweDI4LDB4NjIsMHgyMCwweEVBLDB4RkMsMHg3NywweEQ2LDB4ODIsMHgyMCwweDYxLDB4
MjAsMHgzRiwweDJBLDB4MEEsMHhCQSwKLSAgICAweDYxLDB4MzAsMHg4MiwweDIwLDB4NUYsMHg1
NSwweDdELDB4NTUsMHhFMywweDMwLDB4ODIsMHgyMCwweEFGLDB4RUYsMHhBOSwweEFGLAotICAg
IDB4RTMsMHgzMCwweDgyLDB4MjgsMHhFQSwweDYyLDB4RkEsMHhGQiwweEEyLDB4MjgsMHg4Miww
eDIwLDB4RTcsMHg1NSwweEY3LDB4MDgsCi0gICAgMHhFMywweDMwLDB4ODIsMHgyMCwweEZELDB4
RUQsMHhCQiwweDJCLDB4RTMsMHgzMCwweDgxLDB4MjAsMHhERiwweEZGLDB4QkUsMHhBMCwKLSAg
ICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QjUsMHhCRiwweEFBLDB4QUEsMHhFMywweDMwLDB4QTIs
MHgyOCwweEFBLDB4N0EsMHg2RSwweEVBLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhFMiww
eEVGLDB4NzUsMHg1NywweEMyLDB4MzAsMHhBMiwweDI4LDB4RjUsMHhGOSwweDAxLDB4MjksCi0g
ICAgMHhFMywweDMwLDB4QTIsMHgzMCwweDBGLDB4MDEsMHgwQiwweDBGLDB4MDMsMHgzOSwweEMz
LDB4MzAsMHhCQSwweEIzLDB4RkYsMHhGRiwKLSAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4RjAs
MHhGQSwweEZBLDB4RjYsMHhFMywweDM4LDB4QTIsMHgzMCwweDBELDB4QkIsMHhFMiwweEYwLAot
ICAgIDB4RTMsMHgzOCwweEEyLDB4MjgsMHgwQiwweDJFLDB4QTcsMHhCNSwweDAzLDB4MzksMHhB
MiwweDMwLDB4RkYsMHhGNywweEFFLDB4ODgsCi0gICAgMHgwMywweDM5LDB4RTMsMHgzOCwweDcz
LDB4N0IsMHhERiwweDk4LDB4MjQsMHgzOSwweEUzLDB4MzgsMHhBNSwweEI1LDB4RUYsMHg3QiwK
LSAgICAweDIzLDB4NDEsMHhDMiwweDMwLDB4Q0UsMHhGRSwweEZGLDB4N0IsMHgwMywweDM5LDB4
QzIsMHgzMCwweEEzLDB4QUEsMHhFQiwweEJGLAotICAgIDB4RTMsMHg0OCwweDAzLDB4MzksMHg1
RCwweDc3LDB4RjcsMHg1NSwweDIzLDB4NDEsMHhFMywweDM4LDB4QUEsMHgyRSwweEE1LDB4RjUs
Ci0gICAgMHgyMywweDQxLDB4QzIsMHgzMCwweEEyLDB4QUEsMHhGNywweEZGLDB4MjQsMHg0MSww
eEUyLDB4MzgsMHhGQSwweDNBLDB4N0IsMHg3RiwKLSAgICAweDQ0LDB4NDEsMHhDMiwweDMwLDB4
RTIsMHhBMCwweDdGLDB4NUYsMHgwMywweDM5LDB4QzIsMHgzMCwweEJGLDB4QjYsMHhBRiwweDJG
LAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhCNywweEFFLDB4M0IsMHgzRSwweDQ0LDB4NDEs
MHhFMiwweDM4LDB4RkYsMHgwOSwweEU1LDB4RjcsCi0gICAgMHg0MywweDQxLDB4MDMsMHgzOSww
eDVCLDB4RkQsMHhCNSwweEY3LDB4MjMsMHgzOSwweEUyLDB4MzAsMHg1RiwweEZBLDB4RkEsMHhF
QiwKLSAgICAweDQ0LDB4NDEsMHhFMiwweDMwLDB4MjksMHhGRCwweEZGLDB4NTUsMHg0NCwweDQx
LDB4MDMsMHgzOSwweDdDLDB4QkYsMHhBRiwweEU1LAotICAgIDB4MjMsMHgzOSwweEMyLDB4MzAs
MHhBQSwweEU4LDB4N0EsMHg1QywweDY0LDB4NDksMHhDMiwweDMwLDB4MEIsMHhGRiwweERGLDB4
N0QsCi0gICAgMHg4NSwweDUxLDB4RTIsMHgzOCwweDIwLDB4QTMsMHhBQiwweEY1LDB4QzUsMHg1
MSwweDIzLDB4NDEsMHhBMiwweEUyLDB4RkYsMHg5RCwKLSAgICAweDg0LDB4NTEsMHgyMywweDQx
LDB4MkMsMHgzRCwweDNELDB4MkMsMHhDNSwweDU5LDB4NjQsMHg1MSwweDhBLDB4MkIsMHg5QSww
eEI1LAotICAgIDB4RTUsMHg1OSwweDg0LDB4NTEsMHhCNSwweDNELDB4MkUsMHgyRCwweDI2LDB4
NjIsMHhFNSwweDU5LDB4RTksMHhCNSwweDJCLDB4MEIsCi0gICAgMHg0NiwweDZBLDB4QzUsMHg1
OSwweEY3LDB4QkUsMHhBQSwweDJBLDB4NDgsMHg2QSwweEU1LDB4NjEsMHgyNSwweDJGLDB4QkEs
MHhGQSwKLSAgICAweDkwLDB4QjQsMHg4OSwweDcyLDB4MEQsMHgyRCwweEI1LDB4QjUsMHhGMSww
eEJDLDB4MEUsMHhBNCwweEU4LDB4RkUsMHhFRCwweDk1LAotICAgIDB4QjAsMHhCNCwweDZGLDB4
QUMsMHhBQSwweENCLDB4RkIsMHg0QSwweDZGLDB4QUMsMHhBQywweDhCLDB4NTgsMHg3MCwweDY4
LDB4NjgsCi0gICAgMHg4QywweDhCLDB4MkIsMHg4MywweDgyLDB4RUUsMHhGRSwweDVDLDB4QUQs
MHg5MywweDRCLDB4ODMsMHhDQSwweEFCLDB4RjUsMHgyRCwKLSAgICAweENELDB4OTMsMHg0Qiww
eDgzLDB4QUQsMHhBRCwweEFCLDB4MkEsMHhDRCwweDkzLDB4OEMsMHg4QiwweDBCLDB4MkIsMHgy
RCwweDM2LAotICAgIDB4RUUsMHg5MywweEFELDB4OTMsMHhGNiwweDhBLDB4QzIsMHhGRSwweEVE
LDB4OTMsMHgwQiwweDdCLDB4QTgsMHhBOCwweEVBLDB4NkEsCi0gICAgMHhBRCwweDhCLDB4Q0Es
MHg3MiwweDgwLDB4OEEsMHhGQiwweDU1LDB4NkMsMHg4MywweDBBLDB4NzMsMHg3QSwweEYwLDB4
RkIsMHhERCwKLSAgICAweDRCLDB4ODMsMHhDQSwweDZBLDB4QTIsMHgyMiwweEFFLDB4QjYsMHg0
QywweDgzLDB4Q0EsMHg2QSwweEUwLDB4QUUsMHhGMCwweDdBLAotICAgIDB4MEIsMHg3QiwweENB
LDB4NzIsMHhGNiwweERDLDB4NTgsMHg3QSwweDJBLDB4N0IsMHhDQSwweDcyLDB4RjksMHhGNyww
eDU1LDB4NzcsCi0gICAgMHg0QiwweDgzLDB4RUEsMHg3MiwweERELDB4NTcsMHhCRiwweDNCLDB4
NEMsMHg4MywweEVBLDB4NzIsMHhBRCwweEFCLDB4MkEsMHhDOCwKLSAgICAweDZCLDB4ODMsMHgw
QiwweDdCLDB4MkYsMHg5NywweEY3LDB4QkYsMHhBRCwweDkzLDB4NkMsMHg4QiwweEZGLDB4QUIs
MHg2RCwweEY1LAotICAgIDB4Q0UsMHg5MywweDZDLDB4OEIsMHgwRCwweDJGLDB4RjksMHg3RSww
eDRGLDB4QTQsMHg2QywweDhCLDB4MEEsMHhBQiwweEFGLDB4QUQsCi0gICAgMHg0MywweDUxLDB4
RTEsMHg0MCwweDJBLDB4RTAsMHg0QSwweDdBLDB4NDMsMHg1MSwweEUyLDB4NDAsMHg4RSwweDJC
LDB4QUYsMHhFOSwKLSAgICAweDY0LDB4NTEsMHgwMiwweDQ5LDB4RkQsMHg3MywweDVBLDB4NzUs
MHgyMywweDQ5LDB4RTEsMHg0MCwweEIyLDB4OUUsMHg2QiwweEFCLAotICAgIDB4NDMsMHg1MSww
eEUyLDB4NDgsMHhFNiwweEU3LDB4QUQsMHgzRSwweDIzLDB4NDksMHgwMiwweDQ5LDB4ODAsMHg3
RiwweEE0LDB4OTQsCi0gICAgMHg0MywweDUxLDB4MDIsMHg0OSwweERELDB4OUYsMHg1MiwweEUy
LDB4NDMsMHg1MSwweEUyLDB4NDAsMHg3QSwweEY4LDB4REEsMHhEQiwKLSAgICAweDY0LDB4NTks
MHgwMiwweDQ5LDB4QjUsMHgyRCwweEE5LDB4RUEsMHg2NCwweDU5LDB4MjMsMHg1MSwweEFCLDB4
QTgsMHhFQiwweEVGLAotICAgIDB4NjQsMHg1OSwweDIzLDB4NTEsMHhGRiwweDdDLDB4N0QsMHg2
RCwweDQzLDB4NTEsMHgwMiwweDQ5LDB4OEEsMHhGOCwweEZGLDB4ODcsCi0gICAgMHg2NCwweDUx
LDB4MjMsMHg1MSwweDdBLDB4QkYsMHhBNywweDdCLDB4NjQsMHg1OSwweDAzLDB4NDksMHgyRSww
eEE4LDB4RUEsMHhERiwKLSAgICAweDQ0LDB4NTEsMHgwMywweDQ5LDB4QjgsMHg2OCwweEVBLDB4
RUEsMHgyMywweDUxLDB4RTIsMHg0OCwweEFBLDB4RkYsMHhFRiwweDBBLAotICAgIDB4NDQsMHg1
MSwweDAzLDB4NDksMHg3RiwweDVFLDB4MzUsMHhCRiwweDIzLDB4NTEsMHhFMiwweDQ4LDB4RkIs
MHhCRiwweDhFLDB4OEUsCi0gICAgMHg4OCwweDdBLDB4MjMsMHg1MSwweDI1LDB4MjUsMHgzRCww
eDJELDB4MkEsMHg5MywweEU5LDB4OEEsMHhBQiwweEZELDB4QTksMHg2QiwKLSAgICAweDA5LDB4
OEIsMHhBOCwweDgyLDB4RjgsMHhGMiwweDc4LDB4NUEsMHhDOCwweDgyLDB4ODcsMHg3QSwweEYy
LDB4RjAsMHhERSwweDU3LAotICAgIDB4QTgsMHg3QSwweDY3LDB4N0EsMHhGRSwweDVGLDB4N0Ms
MHhGRiwweDg3LDB4N0EsMHg0NiwweDcyLDB4MDAsMHgwRiwweDJFLDB4QkIsCi0gICAgMHhBOCww
eDdBLDB4NjcsMHg3QSwweEY3LDB4RUYsMHhCRiwweEFELDB4ODcsMHg3QSwweDY3LDB4NzIsMHhC
NywweDhBLDB4QzAsMHhBMCwKLSAgICAweDg3LDB4N0EsMHg2NiwweDcyLDB4N0UsMHgwQSwweDNF
LDB4MTIsMHhBNywweDdBLDB4NjcsMHg3MiwweDc1LDB4RTUsMHhERiwweDM3LAotICAgIDB4ODcs
MHg3QSwweDQ2LDB4NzIsMHhGNSwweDBGLDB4MkEsMHgwOCwweDg3LDB4N0EsMHg0NiwweDcyLDB4
NUQsMHg1RiwweDNBLDB4RkEsCi0gICAgMHg4NiwweDcyLDB4MjUsMHg2QSwweEUwLDB4OUUsMHhG
RSwweEZGLDB4NjcsMHg3QSwweDI2LDB4NkEsMHhCRiwweEI2LDB4QkMsMHg4QSwKLSAgICAweDg2
LDB4N0EsMHg0NiwweDcyLDB4NzUsMHg3NSwweEZELDB4RUQsMHg4NywweDdBLDB4NDYsMHg3Miww
eEE1LDB4MDMsMHgyQSwweEFGLAotICAgIDB4QTgsMHg3QSwweDQ2LDB4NzIsMHhFQiwweDBFLDB4
QUMsMHhFRCwweDg3LDB4N0EsMHgyNSwweDZBLDB4N0UsMHhFQywweEFFLDB4NkUsCi0gICAgMHgy
NiwweDcyLDB4QzUsMHg2MSwweDYyLDB4QkEsMHhCOCwweEVBLDB4MDYsMHg2QSwweEE0LDB4NjEs
MHhFMCwweEYyLDB4RkUsMHg3NywKLSAgICAweEM1LDB4NjEsMHg2MywweDU5LDB4QTIsMHgyNyww
eEFDLDB4OEEsMHgwNSwweDZBLDB4QTQsMHg2MSwweEFELDB4MjksMHhBQiwweDVFLAotICAgIDB4
MDUsMHg2QSwweEE0LDB4NjEsMHhGQSwweEE4LDB4RkEsMHg3QSwweDA2LDB4NkEsMHhBNCwweDU5
LDB4REYsMHg3QiwweEZGLDB4MkIsCi0gICAgMHgwNSwweDZBLDB4QTQsMHg2MSwweEJGLDB4N0Ys
MHhGRiwweDgwLDB4NDYsMHg3MiwweEM0LDB4NjEsMHg4QiwweDJELDB4QkUsMHgyRSwKLSAgICAw
eDQ2LDB4NzIsMHgyNiwweDZBLDB4MkYsMHgyRSwweEQwLDB4RkEsMHg4NywweDdBLDB4MjYsMHg2
QSwweEZELDB4NTcsMHg2QiwweEEyLAotICAgIDB4NjYsMHg3MiwweEU1LDB4NjEsMHg3RSwweDdC
LDB4RUEsMHhFMCwweEE0LDB4NTksMHhBMiwweDM4LDB4N0MsMHg3OCwweDc4LDB4RjgsCi0gICAg
MHhBMSwweDMwLDB4NjEsMHgyOCwweDc4LDB4NUYsMHg1RSwweDVFLDB4QzIsMHgzMCwweDYxLDB4
MjgsMHhCRiwweDNELDB4QUQsMHhCRCwKLSAgICAweDIzLDB4NDEsMHhBMSwweDI4LDB4RkQsMHhG
QiwweDJCLDB4MEIsMHgyMywweDQxLDB4RTIsMHgzOCwweDhELDB4RjcsMHhBRiwweEFDLAotICAg
IDB4MjMsMHg0MSwweEUyLDB4MzgsMHgwRiwweDJGLDB4RjcsMHhERiwweDY0LDB4NDksMHgwMyww
eDQxLDB4MkIsMHg4OSwweDg1LDB4MjUsCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweEU2LDB4
RkEsMHg3MCwweEUwLDB4NDMsMHg0MSwweEEyLDB4MzAsMHhGQywweDVFLDB4N0EsMHhGRSwKLSAg
ICAweEMyLDB4MzAsMHg4MSwweDI4LDB4RkMsMHhGQSwweEU4LDB4QTgsMHhBMiwweDI4LDB4ODEs
MHgyOCwweEJFLDB4N0UsMHhGQywweDY4LAotICAgIDB4QTIsMHgyOCwweDgyLDB4MjAsMHg4MCww
eEZBLDB4NUUsMHg1RCwweEMyLDB4MjgsMHg4MiwweDIwLDB4QUYsMHhCRCwweDFGLDB4N0YsCi0g
ICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDAzLDB4RkYsMHhGRiwweDVGLDB4QzMsMHgyOCwweDYx
LDB4MjAsMHhGOCwweEY4LDB4N0UsMHg1NiwKLSAgICAweDgzLDB4MjAsMHg2MSwweDIwLDB4REMs
MHg5NiwweERGLDB4RDIsMHg4MiwweDIwLDB4NjEsMHgyMCwweEY4LDB4QkUsMHhFQiwweEZCLAot
ICAgIDB4QTIsMHgyOCwweDQxLDB4MTgsMHhBMiwweEE4LDB4QkUsMHhERiwweEMzLDB4MjgsMHg2
MSwweDIwLDB4MEIsMHhFRiwweEJGLDB4RjUsCi0gICAgMHhBMiwweDI4LDB4ODIsMHgyMCwweEJB
LDB4RkUsMHgwRiwweDJGLDB4QzMsMHgyOCwweDgyLDB4MjAsMHgyRSwweDg5LDB4M0IsMHhBQiwK
LSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4M0YsMHhCRiwweEZELDB4QkQsMHgwMywweDMxLDB4
QTIsMHgyOCwweERBLDB4RkEsMHhFMywweEZGLAotICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHhG
MiwweDc4LDB4REUsMHg1RCwweEUzLDB4MzAsMHhBMiwweDI4LDB4MkEsMHhCRiwweEJCLDB4Rjcs
Ci0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDdGLDB4RUUsMHhBQiwweDhBLDB4RTMsMHgzOCww
eEEyLDB4MjgsMHhGRCwweEY1LDB4RkUsMHgyQiwKLSAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4
OEYsMHgyQiwweDg4LDB4RUEsMHhFMywweDMwLDB4QTIsMHgzMCwweEI4LDB4RjYsMHhGNywweDdE
LAotICAgIDB4QzIsMHgzMCwweEEyLDB4MzAsMHgwRSwweDBCLDB4MDMsMHgyQSwweEUzLDB4Mzgs
MHhBMiwweDI4LDB4RjgsMHhGQiwweEJGLDB4QUEsCi0gICAgMHgwMywweDM5LDB4QTIsMHgzMCww
eEI1LDB4RkQsMHhCQiwweDJBLDB4MjQsMHgzOSwweEUzLDB4MzAsMHhCMiwweEJCLDB4NTcsMHg1
NywKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4ODAsMHhBMCwweEZBLDB4RkUsMHgwMywweDM5
LDB4QzIsMHgzMCwweEEyLDB4QUIsMHhCRiwweDNGLAotICAgIDB4MjMsMHgzOSwweEUyLDB4MzAs
MHhFRiwweEZFLDB4RTksMHhFMiwweDAzLDB4MzksMHhDMiwweDMwLDB4RkYsMHhBRiwweEFCLDB4
MDAsCi0gICAgMHgwMywweDM5LDB4RTIsMHgzOCwweDAzLDB4NTcsMHgyNywweDA1LDB4MjQsMHgz
OSwweEUyLDB4MzgsMHg5NSwweEY1LDB4OUUsMHg1QSwKLSAgICAweDIzLDB4NDEsMHhFMiwweDM4
LDB4N0UsMHg2RSwweEEwLDB4OEEsMHgwMywweDM5LDB4QzIsMHgzMCwweDYzLDB4NjIsMHg3MCww
eEU4LAotICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHg3QiwweDNGLDB4MkYsMHgyRSwweDQ0LDB4
NDEsMHhFMiwweDMwLDB4QjUsMHhGRCwweEVFLDB4M0EsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHgz
OSwweDU3LDB4NzcsMHhGRiwweEIwLDB4NDQsMHg0OSwweDAzLDB4MzksMHhENSwweDU1LDB4N0Qs
MHhGMiwKLSAgICAweDI0LDB4MzksMHhFMywweDM4LDB4RUEsMHhGMiwweEI5LDB4RkYsMHgwMyww
eDM5LDB4QzIsMHgzOCwweDAyLDB4MDAsMHhDMCwweEMyLAotICAgIDB4MDMsMHgzOSwweEMyLDB4
MzAsMHg3NywweEFGLDB4QkIsMHg4QSwweDIzLDB4MzksMHhDMiwweDMwLDB4OEIsMHhBNiwweDNG
LDB4QUIsCi0gICAgMHgyMywweDM5LDB4RTIsMHgzMCwweDU2LDB4RkYsMHg2QSwweEU4LDB4MDIs
MHgzOSwweEMxLDB4MzAsMHhFQSwweDYzLDB4QTIsMHg4MiwKLSAgICAweDAzLDB4NDEsMHhDMiww
eDMwLDB4MkYsMHhBOSwweDJCLDB4M0YsMHhBNCwweDUxLDB4MjMsMHg0MSwweEFELDB4MzcsMHgy
OSwweDJELAotICAgIDB4QzUsMHg1MSwweDY0LDB4NDksMHhERiwweDU5LDB4OEEsMHgyMiwweEM1
LDB4NTksMHg2NCwweDQ5LDB4RkQsMHg5NSwweEZBLDB4RjgsCi0gICAgMHgwNSwweDYyLDB4NjMs
MHg0OSwweEFGLDB4MkYsMHhBRiwweEY3LDB4NjcsMHg2QSwweEM1LDB4NTksMHg4QSwweEFBLDB4
QkYsMHg3NSwKLSAgICAweDA2LDB4NjIsMHg4NCwweDUxLDB4MDgsMHhCOCwweEZFLDB4REYsMHg0
NywweDZBLDB4QTQsMHg1MSwweDBBLDB4MkEsMHhCRCwweDJELAotICAgIDB4OEMsMHg5MywweDI3
LDB4NjIsMHgyRiwweDJELDB4MkQsMHgyRCwweEIwLDB4QjQsMHhFRCwweDlCLDB4M0QsMHhBRCww
eDI5LDB4MjksCi0gICAgMHhEMCwweEI0LDB4NkYsMHhBQywweEVFLDB4N0YsMHhFMiwweEZBLDB4
NkYsMHhBQywweEFELDB4OTMsMHg2OCwweEUwLDB4RTgsMHhFMCwKLSAgICAweEFELDB4OTMsMHgw
QSwweDdCLDB4RkUsMHhBQywweEY4LDB4NTgsMHhBQywweDhCLDB4MkIsMHg4MywweDJCLDB4MkIs
MHgyRiwweEJELAotICAgIDB4Q0QsMHg4QiwweDhDLDB4OEIsMHhCQywweDY4LDB4ODIsMHhDOSww
eENELDB4OTMsMHg2QywweDdCLDB4QTgsMHhBQSwweDJBLDB4RkYsCi0gICAgMHhDRCwweDkzLDB4
MEEsMHg3MywweEEwLDB4QTIsMHhGQSwweDdFLDB4OEMsMHg4QiwweEFBLDB4NkEsMHhBMCwweEZB
LDB4N0UsMHhERiwKLSAgICAweDBCLDB4NzMsMHhBOSwweDZBLDB4N0IsMHhGMiwweEZFLDB4NUUs
MHgwQSwweDczLDB4ODksMHg2MiwweDAyLDB4MkIsMHhGOSwweERELAotICAgIDB4MkIsMHg3Myww
eEVBLDB4NzIsMHhBRCwweDdELDB4RDUsMHg1RCwweDJCLDB4N0IsMHhBOSwweDZBLDB4QjgsMHhC
RiwweEY3LDB4QjcsCi0gICAgMHgwQSwweDczLDB4QzksMHg3MiwweDk2LDB4RkIsMHg0MiwweEUw
LDB4MEEsMHg3QiwweENBLDB4NzIsMHg5RSwweDM5LDB4MjUsMHhENSwKLSAgICAweDRDLDB4N0Is
MHgwQiwweDdCLDB4REQsMHhERCwweDg5LDB4QjcsMHg2QywweDgzLDB4MEIsMHg3QiwweERFLDB4
QkYsMHgxRiwweEVGLAotICAgIDB4NkMsMHg4MywweDJCLDB4ODMsMHhGRiwweEZBLDB4RUEsMHhB
OCwweEVFLDB4OUIsMHg0QiwweDgzLDB4QkQsMHgwRiwweDI5LDB4MkQsCi0gICAgMHhFRSwweDlC
LDB4NEIsMHg4MywweDdFLDB4N0EsMHg1OCwweEYwLDB4RUUsMHg5QiwweDRDLDB4ODMsMHgyRCww
eDJELDB4RkQsMHhGNSwKLSAgICAweDQzLDB4NTEsMHhFMSwweDQ4LDB4REUsMHhFQiwweDhBLDB4
MEIsMHgyMiwweDQ5LDB4RTIsMHg0MCwweEUwLDB4RkEsMHhGRiwweEVGLAotICAgIDB4NDQsMHg1
MSwweEMyLDB4NDAsMHhGRiwweDdGLDB4QkYsMHgyQiwweDQzLDB4NTEsMHhFMiwweDQwLDB4RkQs
MHhFQiwweDJGLDB4MDgsCi0gICAgMHg2MywweDUxLDB4MDIsMHg0OSwweEY3LDB4NTUsMHg2RCww
eEZFLDB4NDMsMHg1MSwweDAyLDB4NDksMHhGNywweEE1LDB4QjUsMHhCRiwKLSAgICAweDQzLDB4
NTEsMHhFMiwweDQwLDB4RTAsMHg3QSwweDdDLDB4RkEsMHg0MywweDUxLDB4RTIsMHg0MCwweEJG
LDB4QUYsMHhCOSwweEU5LAotICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHg4MCwweEE4LDB4QUYs
MHg0QiwweDQzLDB4NTEsMHgwMywweDQ5LDB4QTAsMHhBMywweEJCLDB4MEYsCi0gICAgMHg2NSww
eDU5LDB4MjMsMHg1MSwweEVELDB4QkEsMHg1QSwweDVGLDB4NjQsMHg1OSwweDAyLDB4NDksMHhC
QiwweDhGLDB4Q0QsMHhFQSwKLSAgICAweDQ0LDB4NTEsMHgyMywweDUxLDB4NUMsMHhEQiwweDhE
LDB4RUQsMHg0MywweDUxLDB4MDMsMHg0OSwweEY3LDB4RkIsMHhDQiwweEUyLAotICAgIDB4MjMs
MHg1MSwweDAzLDB4NDksMHhFMCwweEZDLDB4NUEsMHg3MiwweDIzLDB4NTEsMHhFMiwweDQ4LDB4
Q0EsMHhGQSwweEFBLDB4QUIsCi0gICAgMHgyMywweDUxLDB4RTIsMHg0OCwweEUyLDB4QkIsMHhG
RiwweDc1LDB4MjMsMHg1MSwweEUyLDB4NDgsMHhDRiwweENCLDB4MkIsMHhFRCwKLSAgICAweEU4
LDB4OEEsMHgyMywweDUxLDB4MkQsMHgyNSwweDI5LDB4MkQsMHgyOSwweDkzLDB4RTgsMHg4QSww
eDcyLDB4RjIsMHg2MiwweDVGLAotICAgIDB4QzksMHg4QSwweEE3LDB4N0EsMHhFOCwweEY4LDB4
QkUsMHg3MiwweEE4LDB4N0EsMHg4NywweDdBLDB4NTgsMHg1QywweEUwLDB4RkYsCi0gICAgMHhB
NywweDdBLDB4NjcsMHg3MiwweERCLDB4MkIsMHhCRiwweDc3LDB4ODcsMHg3QSwweDQ2LDB4NzIs
MHg3OSwweENBLDB4MkEsMHgwMCwKLSAgICAweEE3LDB4N0EsMHg2NywweDcyLDB4QTksMHhCNyww
eEU0LDB4N0MsMHhBOCwweDgyLDB4MjYsMHg3MiwweEE4LDB4QUYsMHgwQSwweDIyLAotICAgIDB4
QTcsMHg3QSwweDY2LDB4NzIsMHhCQiwweERDLDB4RTAsMHg4MiwweDg3LDB4N0EsMHg2NywweDcy
LDB4MTgsMHgwQywweDJCLDB4MEUsCi0gICAgMHhBNywweDdBLDB4NjcsMHg3QSwweEZGLDB4NUYs
MHhFRiwweDFGLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHgyQSwweDJGLDB4QkEsMHg5MCwKLSAgICAw
eDY2LDB4NzIsMHgyNiwweDcyLDB4RUMsMHg0QywweEQwLDB4QzIsMHg2NywweDdBLDB4MjUsMHg2
QSwweDlBLDB4QzIsMHhDQiwweDZGLAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhGQSwweDVF
LDB4N0UsMHg3RCwweDg3LDB4N0EsMHg0NiwweDcyLDB4RUYsMHg4RiwweEFELDB4MEYsCi0gICAg
MHg4NywweDdBLDB4NjcsMHg3MiwweEEzLDB4OTMsMHhCRCwweDZGLDB4NjcsMHg3MiwweDA1LDB4
NkEsMHhFOCwweEVDLDB4RkUsMHhERiwKLSAgICAweDI2LDB4NzIsMHhDNSwweDYxLDB4RjgsMHhF
RiwweDc5LDB4QkUsMHhDNSwweDYxLDB4ODMsMHg1OSwweEVDLDB4MDIsMHgyMCwweEU4LAotICAg
IDB4MDUsMHg2QSwweEE0LDB4NjEsMHhGNSwweEU1LDB4MkQsMHgwRCwweDQ2LDB4NzIsMHhBNCww
eDYxLDB4RDcsMHhCRCwweDBBLDB4QUEsCi0gICAgMHg0NiwweDcyLDB4QzUsMHg2MSwweEE1LDB4
OEIsMHg4MCwweDA4LDB4ODcsMHg3QSwweDA2LDB4NkEsMHhGRCwweDJELDB4OEEsMHhBQSwKLSAg
ICAweEE3LDB4N0EsMHg0NiwweDcyLDB4NUYsMHgyQiwweDIyLDB4QUIsMHhBOCwweDgyLDB4MDUs
MHg2QSwweEZELDB4RUIsMHg4OCwweDIyLAotICAgIDB4QTgsMHg3QSwweDI2LDB4NzIsMHg3Nyww
eEFGLDB4OEEsMHhBQSwweEE4LDB4N0EsMHg2NywweDcyLDB4N0YsMHhDQiwweDZBLDB4REQsCi0g
ICAgMHg4NywweDcyLDB4MjYsMHg2QSwweDYwLDB4ODAsMHhFOCwweDdGLDB4MDYsMHg2MiwweEUy
LDB4MzgsMHg1QSwweDc4LDB4NzgsMHg3OCwKLSAgICAweEMyLDB4MzgsMHg2MSwweDI4LDB4NUUs
MHhCRSwweEZBLDB4QjgsMHhFMiwweDM4LDB4ODEsMHgzMCwweEJELDB4M0QsMHgyRiwweDJELAot
ICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHhBOSwweDhGLDB4QTksMHhGRCwweDY0LDB4NDksMHgw
MywweDM5LDB4N0EsMHg3QSwweDdFLDB4QUYsCi0gICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDQ1
LDB4RjcsMHg3QSwweEVBLDB4NjUsMHg0OSwweEUzLDB4MzgsMHgyRCwweEFELDB4RkQsMHhERCwK
LSAgICAweDY0LDB4NDksMHgwMywweDM5LDB4QTIsMHhBMiwweEFCLDB4ODcsMHgyMywweDM5LDB4
QTIsMHgyOCwweDY4LDB4NkEsMHhGMCwweDY4LAotICAgIDB4QzIsMHgzMCwweDgyLDB4MjgsMHgy
RiwweEFFLDB4MjAsMHgyMiwweEMyLDB4MjgsMHhBMiwweDI4LDB4NzcsMHg1RiwweDdGLDB4RUYs
Ci0gICAgMHhBMiwweDI4LDB4ODIsMHgyMCwweDcyLDB4NjIsMHhBQiwweEVDLDB4QzMsMHgyOCww
eDYxLDB4MjAsMHhGRSwweEZBLDB4QjgsMHg3RSwKLSAgICAweEMzLDB4MjgsMHg2MSwweDIwLDB4
RTMsMHhFRiwweDdGLDB4NTcsMHg4MiwweDIwLDB4NjEsMHgyMCwweDU4LDB4REYsMHhGRiwweEJG
LAotICAgIDB4ODIsMHgyMCwweDYxLDB4MjAsMHg2MCwweDBCLDB4M0YsMHgzQiwweEEyLDB4Mjgs
MHg2MSwweDIwLDB4RkYsMHhGQSwweDhCLDB4MDIsCi0gICAgMHhBMiwweDIwLDB4NjEsMHgyMCww
eDU3LDB4OUYsMHhGQSwweEY4LDB4QTIsMHgyOCwweDQxLDB4MTgsMHhCRCwweEVBLDB4QUEsMHgy
QSwKLSAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4MkIsMHhBRiwweDNCLDB4MDgsMHhDMiwweDI4
LDB4ODIsMHgyMCwweEZGLDB4RkYsMHgzRiwweEI3LAotICAgIDB4QzIsMHgyOCwweDgxLDB4Mjgs
MHgwQiwweDIyLDB4RTgsMHhBOCwweEMyLDB4MjgsMHhBMiwweDI4LDB4NzgsMHg1QSwweDVELDB4
REIsCi0gICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweDczLDB4RjUsMHgzNSwweDJCLDB4QzIsMHgz
MCwweEEyLDB4MjgsMHg1NSwweEZBLDB4QTAsMHg4MCwKLSAgICAweDAzLDB4MzksMHhBMiwweDI4
LDB4QUIsMHg4QiwweEE3LDB4RkYsMHgwMywweDM5LDB4QzIsMHgzMCwweEFGLDB4RjYsMHg1Nyww
eDU3LAotICAgIDB4RTMsMHgzOCwweEMzLDB4MzAsMHg3OCwweEVELDB4M0IsMHgzOSwweEUzLDB4
MzAsMHhBMiwweDMwLDB4RkYsMHhFRSwweEFBLDB4QUIsCi0gICAgMHhDMiwweDMwLDB4QTMsMHgy
OCwweDBBLDB4QUEsMHg4MCwweDIwLDB4MDMsMHgzMSwweEEyLDB4MzAsMHhGRSwweDVGLDB4RjUs
MHg3NywKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4MkIsMHgyRiwweEE1LDB4NzUsMHgwMyww
eDM5LDB4QTIsMHgzMCwweEEwLDB4QTgsMHhGRSwweEZBLAotICAgIDB4MDMsMHgzOSwweEMzLDB4
MzAsMHhBQSwweDAyLDB4QTcsMHhENywweDIzLDB4MzksMHhFMywweDM4LDB4OTcsMHhCQiwweDc3
LDB4RDUsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzOCwweEU2LDB4QUEsMHgxMywweDNCLDB4MjMs
MHgzOSwweEMyLDB4MzAsMHg4OCwweDhBLDB4QkEsMHg5QSwKLSAgICAweDAzLDB4MzksMHhDMiww
eDMwLDB4MDMsMHhCRSwweDNDLDB4QkEsMHgwMywweDM5LDB4QzIsMHgzMCwweDAwLDB4MkEsMHhB
QSwweEZFLAotICAgIDB4MjMsMHgzOSwweEUyLDB4MzAsMHgyOCwweDNCLDB4RjUsMHg1NywweDIz
LDB4NDEsMHhFMiwweDM4LDB4RkMsMHg1OCwweDUwLDB4NTMsCi0gICAgMHhFMiwweDM4LDB4QzIs
MHgzMCwweDI4LDB4MEUsMHgwRSwweDJFLDB4NDQsMHg0MSwweEUzLDB4MzgsMHgyMywweEFELDB4
MzcsMHgxRiwKLSAgICAweDg1LDB4NDksMHgyMywweDQxLDB4RkYsMHhGQiwweDlGLDB4MUYsMHg2
NCwweDQ5LDB4MjQsMHg0MSwweDUyLDB4NUEsMHg3OCwweDJBLAotICAgIDB4NDQsMHg0MSwweEUy
LDB4MzgsMHg3RiwweERFLDB4RkUsMHhFQywweDQ0LDB4NDEsMHhFMywweDM4LDB4RUQsMHhBRiww
eEVGLDB4Q0EsCi0gICAgMHgwMiwweDM5LDB4QzIsMHgzMCwweEYwLDB4NUEsMHhDMiwweEFFLDB4
MDIsMHgzOSwweEMxLDB4MzAsMHgyQSwweDI1LDB4QjUsMHhFRiwKLSAgICAweDIzLDB4MzksMHhF
MiwweDM4LDB4RTIsMHhBQywweEI3LDB4QkQsMHg0MywweDQxLDB4RTIsMHgzOCwweERGLDB4RUIs
MHhBMCwweEJDLAotICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHg1NSwweERGLDB4MTQsMHhCRiww
eEE0LDB4NTEsMHgwMiwweDM5LDB4MjksMHhBRiwweEE1LDB4RDcsCi0gICAgMHhBNCwweDUxLDB4
MDIsMHg0MSwweDAwLDB4ODIsMHhBOCwweDZFLDB4QTQsMHg1MSwweDIzLDB4NDEsMHhBMCwweEZF
LDB4RkYsMHhGRCwKLSAgICAweEE0LDB4NTksMHgyMiwweDQxLDB4QUYsMHhCNywweDJELDB4MkYs
MHhDNSwweDU5LDB4ODQsMHg1MSwweDgzLDB4QTksMHhGQiwweEIzLAotICAgIDB4RTYsMHg1OSww
eDg0LDB4NTEsMHg1NywweDVGLDB4N0EsMHhFMiwweDI2LDB4NjIsMHg4NCwweDUxLDB4MkYsMHhC
NSwweEFELDB4QUYsCi0gICAgMHg4QywweDkzLDB4MjYsMHg2MiwweDJELDB4MkQsMHgyNSwweDI1
LDB4QjAsMHhCNCwweDJFLDB4QTQsMHgwRCwweDA5LDB4MjksMHhBRCwKLSAgICAweEIwLDB4QjQs
MHg2RiwweEFDLDB4NzgsMHhGOCwweDdCLDB4RTcsMHg2RiwweEFDLDB4Q0QsMHg5MywweDY4LDB4
NjgsMHhGOCwweDU4LAotICAgIDB4QUQsMHg5MywweEE5LDB4NzIsMHg3OCwweDc4LDB4NzgsMHg3
MCwweDJDLDB4ODMsMHg0OCwweDYyLDB4MDIsMHg4QSwweEFGLDB4RDUsCi0gICAgMHg4QywweDhC
LDB4ODksMHg2QSwweDBBLDB4RkYsMHhGRiwweDdGLDB4OEMsMHg4MywweDY5LDB4NjIsMHgyMCww
eEFCLDB4RkYsMHg1NywKLSAgICAweDJCLDB4NzMsMHg2OCwweDYyLDB4QTAsMHhFOCwweDdGLDB4
NTUsMHhDQSwweDZBLDB4NjgsMHg2MiwweDIyLDB4RUQsMHhGQSwweEY3LAotICAgIDB4Q0EsMHg2
QSwweDY4LDB4NjIsMHhGOCwweDVGLDB4NzUsMHg3RCwweENBLDB4NkEsMHg2OCwweDYyLDB4M0Is
MHhCMywweDlELDB4RTksCi0gICAgMHhFQSwweDcyLDB4ODksMHg2MiwweDgyLDB4QUEsMHgyQiww
eEFELDB4RUEsMHg3MiwweDg5LDB4NjIsMHgyQiwweDJELDB4QkUsMHhCRSwKLSAgICAweDBBLDB4
NzMsMHhDOSwweDZBLDB4QTAsMHhGRiwweEI1LDB4MTUsMHg0QiwweDdCLDB4Q0EsMHg3MiwweDU3
LDB4RkQsMHhBQiwweDJELAotICAgIDB4QUQsMHg4QiwweDBCLDB4N0IsMHhGNSwweEZELDB4OEYs
MHgwQSwweDBFLDB4OUMsMHgyQiwweDdCLDB4RjUsMHhGRiwweEFCLDB4MkEsCi0gICAgMHhFRCww
eDkzLDB4NEIsMHg4MywweDU3LDB4NzcsMHhGRSwweEZDLDB4RUQsMHg5MywweDRCLDB4ODMsMHgz
RiwweDI3LDB4M0QsMHhCRiwKLSAgICAweDJFLDB4QTQsMHg4QywweDhCLDB4NjAsMHhBMiwweDAy
LDB4MDMsMHgwRSwweDlDLDB4NEIsMHg4MywweERELDB4NUYsMHg3RSwweDU4LAotICAgIDB4NDMs
MHg1MSwweDAzLDB4NDksMHg4QiwweENFLDB4OUUsMHg5NiwweDIzLDB4NDksMHhFMiwweDQ4LDB4
RkMsMHg5RSwweDNFLDB4MEEsCi0gICAgMHgyMywweDQ5LDB4MDIsMHg0OSwweDVBLDB4RjgsMHg4
OCwweEE4LDB4NDQsMHg1MSwweDAyLDB4NDksMHhCRiwweEZGLDB4NkEsMHg1MiwKLSAgICAweDQ0
LDB4NTEsMHgwMywweDQ5LDB4QjYsMHhCQSwweEY1LDB4RjUsMHgyMiwweDQ5LDB4RTIsMHg0MCww
eDIwLDB4QTgsMHhBRCwweERDLAotICAgIDB4NDMsMHg1MSwweEUyLDB4NDAsMHhGQSwweEFELDB4
MkIsMHg4QSwweDQzLDB4NTEsMHgwMiwweDQ5LDB4RkIsMHhEQSwweEE4LDB4RkEsCi0gICAgMHg2
NCwweDUxLDB4MDMsMHg0OSwweEZFLDB4RkUsMHhFRSwweDM1LDB4NDQsMHg1MSwweDAyLDB4NDks
MHhDQiwweEVGLDB4RjksMHhGOSwKLSAgICAweDY0LDB4NTEsMHgyMywweDUxLDB4RkQsMHhENSww
eDM1LDB4QTUsMHg0NCwweDU5LDB4MjMsMHg0OSwweEVBLDB4RTMsMHg3QSwweDdBLAotICAgIDB4
NDMsMHg1MSwweDAzLDB4NDksMHhBRiwweEEzLDB4MEYsMHg2RiwweDQzLDB4NTEsMHgwMywweDQ5
LDB4ODMsMHg5QywweDVFLDB4RkQsCi0gICAgMHgyMywweDUxLDB4RTIsMHg0OCwweEU4LDB4Njgs
MHhGQywweDk2LDB4MjMsMHg1MSwweEUyLDB4NDgsMHgzNSwweEE1LDB4QTksMHhDRSwKLSAgICAw
eDAyLDB4NDksMHhFMiwweDQ4LDB4NzAsMHgwMiwweEI4LDB4RjAsMHg0MywweDUxLDB4RTIsMHg0
OCwweEZGLDB4RjcsMHgyRiwweEFELAotICAgIDB4RTgsMHg4MiwweDgzLDB4NTksMHgyNSwweDBE
LDB4MEQsMHgwRCwweDI5LDB4OEIsMHhDOCwweDgyLDB4RUEsMHg3QSwweEUyLDB4RkEsCi0gICAg
MHhFOSwweDhBLDB4ODcsMHg3QSwweDYyLDB4RUIsMHhGQiwweDU2LDB4QTgsMHg3QSwweDY3LDB4
NzIsMHhFMiwweDJFLDB4QkEsMHg3RiwKLSAgICAweEE3LDB4ODIsMHg2NywweDcyLDB4RkYsMHhF
RSwweEVCLDB4RjEsMHhBOCwweDdBLDB4NjcsMHg3QSwweEZFLDB4REEsMHhEQSwweEFBLAotICAg
IDB4QzgsMHg4MiwweDY3LDB4NzIsMHg3RiwweDVFLDB4NTgsMHhFQiwweEE4LDB4N0EsMHg2Nyww
eDcyLDB4QkUsMHhBQiwweDJELDB4QkYsCi0gICAgMHg0NiwweDgyLDB4QTgsMHg3QSwweEY2LDB4
RjcsMHhGRCwweEZGLDB4QTgsMHg3QSwweDQ2LDB4NzIsMHg4QSwweEFFLDB4RkYsMHhBQiwKLSAg
ICAweEE3LDB4N0EsMHg2NywweDcyLDB4RkYsMHg2QiwweDRCLDB4RkYsMHg4NywweDdBLDB4NDYs
MHg3MiwweEFCLDB4RkEsMHhGQSwweDdBLAotICAgIDB4NjYsMHg3MiwweDI2LDB4NzIsMHgyRiww
eEFBLDB4NkIsMHhGRiwweDY2LDB4NzIsMHgwNSwweDcyLDB4QTgsMHg4QSwweDhCLDB4ODIsCi0g
ICAgMHg2NywweDdBLDB4NDYsMHg3MiwweENELDB4MzcsMHhENSwweDE3LDB4ODcsMHg3QSwweDQ2
LDB4NzIsMHhCMiwweEFGLDB4QUYsMHhFRiwKLSAgICAweDg3LDB4N0EsMHgyNiwweDcyLDB4QzIs
MHhERiwweDZGLDB4RkIsMHg0NiwweDcyLDB4RTUsMHg2MSwweEI4LDB4RkUsMHhERSwweDdDLAot
ICAgIDB4MDYsMHg2QSwweEE0LDB4NjEsMHhEQywweDVBLDB4NUEsMHg2QSwweDI1LDB4NkEsMHg4
MywweDU5LDB4N0YsMHhGRiwweERELDB4M0IsCi0gICAgMHg0NiwweDcyLDB4QTQsMHg1OSwweEZE
LDB4NzUsMHgzQiwweDAwLDB4QTgsMHg3QSwweDA1LDB4NkEsMHhENSwweEI1LDB4MEYsMHhFRSwK
LSAgICAweDg3LDB4N0EsMHgwNSwweDZBLDB4MkIsMHgyQSwweEU4LDB4NTYsMHg4OCwweDdBLDB4
MDUsMHg2QSwweEEyLDB4MkMsMHhBRiwweEY1LAotICAgIDB4ODcsMHg3QSwweDA1LDB4NkEsMHgy
MiwweDg4LDB4OEIsMHhGRCwweDg3LDB4N0EsMHgyNiwweDZBLDB4OEEsMHhBQSwweEJCLDB4RkQs
Ci0gICAgMHg2NywweDcyLDB4MjYsMHg2QSwweEE3LDB4QjgsMHg1QSwweDc4LDB4ODcsMHg3QSww
eEU2LDB4NjksMHhBQiwweEZFLDB4QkQsMHgyRSwKLSAgICAweDY3LDB4NzIsMHgwNiwweDZBLDB4
NkEsMHhCRSwweEUwLDB4ODAsMHhFNiwweDYxLDB4MDMsMHg0MSwweDc4LDB4NTgsMHg3OCwweDc4
LAotICAgIDB4RTIsMHgzOCwweDgxLDB4MzAsMHhEOCwweDg4LDB4QTIsMHhBOCwweDAzLDB4NDEs
MHg4MSwweDMwLDB4QUQsMHhBRiwweEFBLDB4ODgsCi0gICAgMHgyMywweDQxLDB4RTMsMHgzOCww
eDA5LDB4MDksMHhGNywweEY1LDB4NjQsMHg0OSwweEUyLDB4MzgsMHg4QiwweDJFLDB4MkQsMHhC
NSwKLSAgICAweDQ0LDB4NDksMHhDMiwweDM4LDB4RkUsMHhGOCwweDU4LDB4RjAsMHhFMiwweDM4
LDB4QzIsMHgzMCwweDAwLDB4RUUsMHhFRSwweEJGLAotICAgIDB4MjQsMHg0MSwweEMyLDB4MzAs
MHgwQSwweEFCLDB4QUYsMHg3RCwweDIzLDB4MzksMHhDMiwweDI4LDB4NzgsMHhFQSwweDdFLDB4
N0YsCi0gICAgMHhDMiwweDI4LDB4NjIsMHgyMCwweEEyLDB4QUEsMHhBQSwweEVBLDB4QzIsMHgy
OCwweDgyLDB4MjAsMHhFQSwweDVCLDB4NUYsMHg1NSwKLSAgICAweEEyLDB4MjAsMHg2MSwweDE4
LDB4MkMsMHhCQSwweEJBLDB4RkYsMHhBMiwweDIwLDB4NjEsMHgyMCwweDdBLDB4N0EsMHg3OCww
eDdGLAotICAgIDB4ODIsMHgyMCwweDYxLDB4MjAsMHg1NSwweEQ1LDB4MzcsMHgwQiwweEExLDB4
MjAsMHg2MiwweDIwLDB4RjcsMHhGNywweEZFLDB4RUEsCi0gICAgMHhBMiwweDI4LDB4NjEsMHgy
MCwweDVGLDB4RkYsMHg4QiwweDAyLDB4QzIsMHgyOCwweDgyLDB4MjAsMHhCRCwweDVELDB4QkYs
MHg3RSwKLSAgICAweEMzLDB4MjgsMHg2MSwweDIwLDB4N0EsMHhFQSwweEFBLDB4OEEsMHhBMiww
eDI4LDB4ODEsMHgyMCwweDA3LDB4N0MsMHg1RSwweDdBLAotICAgIDB4QzIsMHgyOCwweDgxLDB4
MjAsMHhBRiwweEFGLDB4QjUsMHhCNSwweEMyLDB4MjgsMHg2MSwweDIwLDB4MkEsMHgyMCwweEE4
LDB4RUEsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEJGLDB4QkIsMHhCRiwweEQ1LDB4QzIs
MHgyOCwweEEyLDB4MjgsMHg3QSwweEVFLDB4RDQsMHg2NywKLSAgICAweEMyLDB4MzAsMHhBMiww
eDI4LDB4N0UsMHg1RiwweDdELDB4QTksMHhFMywweDMwLDB4QTIsMHgyOCwweEZCLDB4MEIsMHgw
MywweDIwLAotICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHhBQiwweDhCLDB4QUIsMHhGNiwweEUz
LDB4MzAsMHg4MiwweDI4LDB4RUEsMHhGQSwweEZBLDB4REUsCi0gICAgMHhDMiwweDMwLDB4ODEs
MHgyOCwweEEwLDB4QjgsMHg2RiwweEJELDB4RTMsMHgzMCwweEEyLDB4MjgsMHhBOSwweEVCLDB4
RUQsMHg2OSwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RTMsMHhBMywweEZELDB4N0QsMHhD
MiwweDMwLDB4QTIsMHgyOCwweDM4LDB4MzAsMHgzRiwweDBBLAotICAgIDB4RTMsMHgzMCwweEEy
LDB4MzAsMHhCRSwweEI2LDB4QUUsMHgwQSwweEUzLDB4MzgsMHhDMiwweDMwLDB4RjAsMHhFMiww
eEVBLDB4RDAsCi0gICAgMHhDMiwweDM4LDB4RTMsMHgzMCwweEZGLDB4REYsMHhGRSwweDJGLDB4
RTMsMHgzOCwweEEyLDB4MjgsMHgyMiwweEUwLDB4REEsMHhGRSwKLSAgICAweDAzLDB4MzksMHhD
MiwweDMwLDB4M0UsMHg5RiwweEZGLDB4QjcsMHgyMywweDM5LDB4RTIsMHgzMCwweDVGLDB4NTcs
MHhCNSwweEI1LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhEQSwweEFBLDB4MkEsMHgwOCww
eDAzLDB4MzksMHhDMiwweDMwLDB4RkYsMHhCRSwweEE0LDB4MDAsCi0gICAgMHgyNCwweDM5LDB4
RTIsMHgzOCwweDc3LDB4RjcsMHhCRiwweEY4LDB4MjMsMHg0MSwweEUzLDB4MzgsMHhGRCwweEE5
LDB4QUEsMHg0QiwKLSAgICAweDIzLDB4NDEsMHhDMiwweDMwLDB4RkYsMHhEQSwweEMyLDB4QTIs
MHg0NCwweDQxLDB4MDMsMHg0MSwweEE1LDB4QTUsMHg4RCwweEZGLAotICAgIDB4ODUsMHg0OSww
eDIzLDB4NDEsMHhFRCwweDNELDB4OUYsMHhCQSwweDg1LDB4NTEsMHg0NCwweDQxLDB4QUQsMHgw
RCwweEJCLDB4QkEsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweDc2LDB4Q0UsMHhDMCwweDg4
LDB4ODQsMHg0OSwweDIzLDB4NDEsMHhGNSwweDVGLDB4NUIsMHg2MywKLSAgICAweDQ0LDB4NDks
MHhFMiwweDM4LDB4N0UsMHhBQiwweDhBLDB4ODIsMHg0MywweDQ5LDB4QzEsMHgzOCwweDdELDB4
RkUsMHhGQSwweEEwLAotICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHgyRiwweDI5LDB4QUYsMHhF
RiwweDIzLDB4NDEsMHgwMywweDM5LDB4MjQsMHgwQSwweDhGLDB4MkIsCi0gICAgMHgyMywweDQx
LDB4RTIsMHgzOCwweEJGLDB4MzgsMHgwMCwweEIwLDB4NDMsMHg0OSwweEUyLDB4MzgsMHgyQyww
eEVBLDB4QjcsMHgyRCwKLSAgICAweDY0LDB4NDksMHgwMiwweDQxLDB4MkEsMHgyRCwweEFGLDB4
MEEsMHhBNSwweDUxLDB4NDMsMHg0MSwweERGLDB4RTcsMHg4QSwweDAyLAotICAgIDB4RTUsMHg1
OSwweDIyLDB4NDEsMHhBNywweDJGLDB4MEIsMHgyQSwweDI3LDB4NjIsMHg4NCwweDUxLDB4N0Ys
MHhFRiwweDNBLDB4MkYsCi0gICAgMHgyNywweDYyLDB4QzUsMHg1OSwweEZELDB4RUYsMHhBOCww
eDAwLDB4MjcsMHg2MiwweEM1LDB4NTksMHhGNywweDc5LDB4QkUsMHhBOCwKLSAgICAweDJBLDB4
ODMsMHhFNiwweDU5LDB4MkQsMHgzRCwweDM1LDB4MzUsMHgzMiwweEM1LDB4RUQsMHg5QiwweEJE
LDB4MkQsMHgyOSwweDJELAotICAgIDB4NzMsMHhDRCwweEQxLDB4QjQsMHg1NSwweEZGLDB4QTIs
MHgwMCwweDUyLDB4QzUsMHg0RiwweEE0LDB4NUYsMHhFQSwweEEwLDB4ODAsCi0gICAgMHhCMCww
eEI0LDB4RUEsMHg3QSwweDdFLDB4RjgsMHhBMCwweDIwLDB4MkYsMHg5QywweDA3LDB4NUEsMHg1
NSwweDU3LDB4RkEsMHhBMCwKLSAgICAweENBLDB4NzIsMHgwNywweDVBLDB4QTAsMHhBOCwweDZB
LDB4NzAsMHg0OSwweDYyLDB4QTYsMHg1MSwweDgwLDB4QUMsMHhCRSwweEQ3LAotICAgIDB4NDgs
MHg2MiwweEE2LDB4NTEsMHgwQSwweEFCLDB4N0YsMHg3NywweDY4LDB4NjIsMHhFNiwweDUxLDB4
ODAsMHhFRSwweEZGLDB4REYsCi0gICAgMHg2OCwweDYyLDB4MDcsMHg1MiwweDAyLDB4MDIsMHhG
QiwweDc3LDB4ODksMHg2MiwweDI3LDB4NUEsMHgwOCwweDJBLDB4RTgsMHhERiwKLSAgICAweEE5
LDB4NkEsMHg2OCwweDYyLDB4MkIsMHhBQSwweEFELDB4MjUsMHhDQSwweDZBLDB4NjgsMHg2Miww
eDIwLDB4MEIsMHgwRCwweDBCLAotICAgIDB4MEEsMHg3QiwweEE5LDB4NkEsMHhBRiwweEU3LDB4
QjMsMHgwQSwweEFELDB4OEIsMHgwQSwweDczLDB4OTUsMHgzNSwweDJELDB4MEIsCi0gICAgMHg0
RiwweEE0LDB4QUQsMHg4QiwweEY1LDB4QjUsMHgzQSwweEFCLDB4NEUsMHhBNCwweENDLDB4OTMs
MHhENywweEZBLDB4QUEsMHgwMiwKLSAgICAweDRGLDB4QTQsMHhBQywweDhCLDB4N0UsMHhFQSww
eEFBLDB4ODIsMHhDRCwweDkzLDB4NkIsMHg4QiwweEFBLDB4QjAsMHg5OCwweDg4LAotICAgIDB4
NEUsMHhBNCwweENELDB4OTMsMHgwRCwweDJGLDB4QUYsMHgzRCwweDZGLDB4QUMsMHg4QywweDhC
LDB4NUUsMHg3OCwweDc4LDB4RTgsCi0gICAgMHg0NCwweDQ5LDB4MDIsMHg0OSwweDc4LDB4NTUs
MHhENSwweEY1LDB4MjMsMHg0OSwweDAzLDB4NDksMHhFQiwweERBLDB4RjcsMHhDOCwKLSAgICAw
eDIzLDB4NDksMHhFMiwweDQwLDB4MjgsMHhCNywweEQ2LDB4QUUsMHg0MywweDUxLDB4MDMsMHg0
OSwweEZGLDB4MEIsMHhCRiwweEY5LAotICAgIDB4NDMsMHg1MSwweEUyLDB4NDAsMHhFMiwweEE4
LDB4N0EsMHg5QSwweDQzLDB4NTEsMHhFMiwweDQwLDB4OTcsMHhBNywweDJGLDB4MEEsCi0gICAg
MHg2NCwweDUxLDB4MDIsMHg0OSwweEZCLDB4RkEsMHhGNiwweEU4LDB4NDMsMHg1MSwweDAzLDB4
NDksMHg3NywweDBBLDB4MjAsMHg1QiwKLSAgICAweDY0LDB4NTksMHgwMiwweDQ5LDB4OUYsMHhC
RSwweEI4LDB4RUYsMHg0MywweDUxLDB4MDMsMHg1MSwweDIwLDB4MDAsMHgyQywweEVCLAotICAg
IDB4NDMsMHg1MSwweDIzLDB4NTEsMHgyNiwweEZFLDB4NTYsMHhGMSwweDQzLDB4NTEsMHgwMiww
eDQ5LDB4NkEsMHhFQSwweEZBLDB4NTIsCi0gICAgMHgyMywweDUxLDB4MDMsMHg0OSwweDBBLDB4
QzcsMHgyRiwweDA5LDB4RTIsMHg1MCwweDIzLDB4NDksMHhGRSwweEJCLDB4QUQsMHhFRCwKLSAg
ICAweDQ0LDB4NTEsMHhFMiwweDQ4LDB4RkYsMHhGRCwweEFBLDB4QTgsMHgyMywweDUxLDB4QzEs
MHg0MCwweDZFLDB4N0EsMHhFQSwweEU4LAotICAgIDB4MDIsMHg0OSwweEUyLDB4NDgsMHgzOSww
eDBCLDB4OEIsMHhDRCwweEU2LDB4NjksMHgwMiwweDQ5LDB4RDUsMHhENSwweEI1LDB4MjUsCi0g
ICAgMHg0OSwweDkzLDB4RTUsMHg2MSwweEFELDB4MkQsMHhBQiwweDJBLDB4MDgsMHg4QiwweEE3
LDB4N0EsMHhGMCwweEZDLDB4NzgsMHg3QSwKLSAgICAweEM4LDB4ODIsMHg2NiwweDcyLDB4QTgs
MHhFMCwweDZBLDB4N0EsMHhBNywweDdBLDB4NjcsMHg3QSwweEFFLDB4QTIsMHhGQSwweDFGLAot
ICAgIDB4QTcsMHg3QSwweDY2LDB4NzIsMHhFRSwweEE4LDB4NjYsMHhBQSwweEE3LDB4ODIsMHg2
NiwweDcyLDB4QzMsMHg3MSwweDdELDB4NzUsCi0gICAgMHg4NywweDdBLDB4NjcsMHg3MiwweDAy
LDB4QTMsMHgyMSwweDIzLDB4QTcsMHg3QSwweDY2LDB4NzIsMHhCQSwweEFCLDB4MjksMHhERiwK
LSAgICAweEE3LDB4N0EsMHg2NiwweDcyLDB4QkEsMHhBQSwweEI2LDB4NzcsMHhBOCwweDdBLDB4
NjYsMHg3QSwweDJGLDB4QkYsMHhFRSwweDJELAotICAgIDB4QTgsMHg4MiwweDQ2LDB4NzIsMHhC
QSwweEYyLDB4NzgsMHg3OCwweDY3LDB4N0EsMHg0NiwweDcyLDB4RjIsMHhFQiwweDdELDB4Njks
Ci0gICAgMHg2NiwweDcyLDB4MjYsMHg2QSwweEY3LDB4RkYsMHhGOCwweEVCLDB4NjYsMHg3QSww
eDI2LDB4NkEsMHgyQSwweDg5LDB4MEIsMHhCQSwKLSAgICAweEE3LDB4N0EsMHgyNiwweDcyLDB4
QkYsMHhGRiwweDdGLDB4MEEsMHgwOSwweDhCLDB4MjYsMHg3MiwweEY1LDB4QkQsMHhBRCwweDJB
LAotICAgIDB4NEEsMHg5MywweDQ2LDB4NzIsMHg1NSwweEZGLDB4QUEsMHgyQSwweDI5LDB4OEIs
MHg0NiwweDcyLDB4NTUsMHhFRSwweEFBLDB4QTAsCi0gICAgMHhBOCwweDdBLDB4RTUsMHg2MSww
eERGLDB4RUEsMHhBMCwweEI4LDB4NjcsMHg3QSwweEU1LDB4NjksMHgyQiwweDgyLDB4RjAsMHg1
NiwKLSAgICAweDY3LDB4NzIsMHhFNSwweDY5LDB4QUMsMHhGRiwweEZGLDB4RjUsMHgyNSwweDcy
LDB4QzUsMHg2MSwweEU4LDB4RUEsMHhBQSwweEFBLAotICAgIDB4NDYsMHg3MiwweEM0LDB4NjEs
MHg3RiwweDdGLDB4QkEsMHg4QSwweDQ2LDB4NzIsMHhFNSwweDYxLDB4RDcsMHhERiwweEZCLDB4
MjgsCi0gICAgMHg2NywweDcyLDB4MDUsMHg2QSwweERELDB4RkQsMHhGOSwweDgzLDB4NjcsMHg3
QSwweDI2LDB4NkEsMHgyOSwweEY1LDB4NUQsMHhGRiwKLSAgICAweDg3LDB4N0EsMHgyNiwweDZB
LDB4QkYsMHhCNSwweEFGLDB4MEIsMHg4NywweDcyLDB4MjYsMHg2QSwweEFFLDB4RkUsMHhERiww
eDdBLAotICAgIDB4ODcsMHg3MiwweDI2LDB4NkEsMHg3RSwweDdDLDB4NTcsMHg1NywweEU1LDB4
NTksMHgyMywweDQxLDB4NzgsMHg3OCwweDc4LDB4NzgsCi0gICAgMHgyMywweDQxLDB4QTEsMHgz
MCwweERFLDB4RkUsMHhERSwweEZDLDB4MDQsMHgzOSwweEMyLDB4MzgsMHhGQiwweEY3LDB4NkIs
MHhFOSwKLSAgICAweDAzLDB4MzksMHhDMiwweDM4LDB4QUIsMHhGRiwweEZELDB4NzcsMHgyMyww
eDQxLDB4QzIsMHgzMCwweDNGLDB4QjcsMHhCNywweEZGLAotICAgIDB4NDQsMHg0MSwweDAzLDB4
MzksMHg2QSwweDdBLDB4N0YsMHg1NSwweDAzLDB4MzksMHhFMiwweDMwLDB4QkYsMHgyMCwweEY4
LDB4MzQsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEZBLDB4RkMsMHg3OCwweDc4LDB4QzIs
MHgyOCwweDgxLDB4MjAsMHhDMCwweEU4LDB4RjcsMHg1NSwKLSAgICAweEEyLDB4MjgsMHg2MSww
eDIwLDB4RUEsMHhFOCwweEY4LDB4RkEsMHg4MiwweDIwLDB4NjEsMHgxOCwweERCLDB4NUEsMHg3
MiwweEMwLAotICAgIDB4ODIsMHgyMCwweDYxLDB4MTgsMHhENSwweEY1LDB4RUYsMHg4RiwweEEy
LDB4MjAsMHg2MSwweDE4LDB4RjUsMHhFOSwweEFCLDB4QUIsCi0gICAgMHhBMiwweDI4LDB4NjEs
MHgyMCwweEFCLDB4RUYsMHgyNywweEFFLDB4QzIsMHgyOCwweDgxLDB4MjAsMHhGQiwweDhGLDB4
QUQsMHhBRiwKLSAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4RjcsMHhFNywweDdELDB4RkYsMHhF
MywweDMwLDB4ODEsMHgyMCwweDdFLDB4RkUsMHhGMiwweEFBLAotICAgIDB4QzIsMHgyOCwweDgy
LDB4MjgsMHhGRCwweDVGLDB4NUUsMHhCNiwweEEyLDB4MjgsMHg4MSwweDIwLDB4RkUsMHg0MCww
eDc4LDB4NUEsCi0gICAgMHhBMiwweDI4LDB4NjEsMHgyMCwweEFBLDB4QUMsMHg3QSwweEFFLDB4
QTIsMHgyOCwweDYxLDB4MjAsMHgyOCwweEE4LDB4RkEsMHhGQSwKLSAgICAweEEyLDB4MjgsMHg2
MSwweDIwLDB4MDAsMHgwMiwweDJGLDB4QUYsMHhDMiwweDI4LDB4ODEsMHgyOCwweEFCLDB4OEYs
MHgyRiwweEZGLAotICAgIDB4QzIsMHgyOCwweDgxLDB4MjgsMHgwMiwweEE4LDB4N0IsMHg1NSww
eEUyLDB4MzAsMHg4MSwweDI4LDB4OEEsMHhCRSwweEU5LDB4QkYsCi0gICAgMHhFMywweDMwLDB4
QTIsMHgyOCwweDlCLDB4M0IsMHgzRSwweEZGLDB4QzIsMHgzMCwweEEyLDB4MjgsMHg1RSwweERD
LDB4N0MsMHg1RiwKLSAgICAweDYxLDB4MzAsMHhDMiwweDI4LDB4RkIsMHg3NywweEZGLDB4NUQs
MHgwMywweDMxLDB4QzIsMHgyOCwweDdELDB4RjUsMHg2RCwweDQzLAotICAgIDB4RTMsMHgzMCww
eEEyLDB4MjgsMHhGRCwweDhFLDB4QTIsMHg4MiwweDA0LDB4MzksMHhDMywweDMwLDB4RjUsMHhG
RiwweERGLDB4QUYsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzOCwweEY1LDB4OEQsMHgyNSwweEZG
LDB4MjQsMHgzOSwweEMyLDB4MzAsMHg1RSwweDdFLDB4NjAsMHhFOCwKLSAgICAweEUzLDB4MzAs
MHhDMiwweDMwLDB4NzIsMHhERCwweEY3LDB4QjYsMHhDMywweDM4LDB4RTMsMHgzMCwweEY2LDB4
RDcsMHhGRCwweEZGLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgyRiwweDBCLDB4QUEsMHhB
MywweDIzLDB4MzksMHhFMywweDM4LDB4QUQsMHg4MiwweEExLDB4MkYsCi0gICAgMHgyMywweDM5
LDB4RTIsMHgzMCwweEI4LDB4RUIsMHhFQywweEY4LDB4MjMsMHgzOSwweEUyLDB4MzAsMHgyQSww
eDAyLDB4QTMsMHhERCwKLSAgICAweDQ0LDB4NDEsMHhDMiwweDMwLDB4RjgsMHhGRSwweDdGLDB4
N0YsMHgwMywweDM5LDB4RTIsMHgzMCwweEFBLDB4MUYsMHgzRiwweDdGLAotICAgIDB4NDQsMHg0
MSwweEUyLDB4MzgsMHg4RiwweEFGLDB4QkYsMHhENSwweDQ0LDB4NDEsMHhFMiwweDM4LDB4RkUs
MHg3QSwweEY4LDB4RUQsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHgzOSwweDIzLDB4ODMsMHhBMSww
eEU5LDB4ODUsMHg0OSwweDAzLDB4NDEsMHhBQiwweDJELDB4QkYsMHg1RCwKLSAgICAweDg1LDB4
NTEsMHg0NCwweDQ5LDB4RkEsMHhFOSwweEFGLDB4MEEsMHg4NSwweDUxLDB4MjMsMHg0MSwweDAy
LDB4MkEsMHhFQSwweEQ4LAotICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHgwOCwweDAwLDB4ODAs
MHhGMiwweDY0LDB4NDksMHgwMiwweDM5LDB4RjgsMHg1MiwweERFLDB4OUYsCi0gICAgMHgyMyww
eDQxLDB4RTIsMHgzOCwweEZBLDB4N0UsMHhGOCwweEVDLDB4MjMsMHg0MSwweEUyLDB4MzgsMHhB
MiwweEM5LDB4RjksMHg2QiwKLSAgICAweDQzLDB4NDEsMHhFMiwweDM4LDB4REUsMHhCRiwweEZG
LDB4QTMsMHg0MywweDQxLDB4MDMsMHg0MSwweDBELDB4QUEsMHg4QSwweEJGLAotICAgIDB4ODUs
MHg1MSwweDAzLDB4NDEsMHgyMywweDIyLDB4QkEsMHhGRCwweEE1LDB4NTEsMHgyMiwweDQxLDB4
MEEsMHhFQSwweDc3LDB4NTUsCi0gICAgMHhDNSwweDU5LDB4MjIsMHg0MSwweDBBLDB4QUEsMHhB
RCwweEZELDB4RTYsMHg2MSwweDYzLDB4NDksMHgwMiwweDBGLDB4RjUsMHhENSwKLSAgICAweDI3
LDB4NjIsMHg4NCwweDUxLDB4MkEsMHhCRSwweERGLDB4NzUsMHgyNywweDYyLDB4ODQsMHg1MSww
eDAwLDB4ODgsMHhGQiwweDk1LAotICAgIDB4RTksMHg3QSwweEU1LDB4NTksMHgzNSwweDI1LDB4
MzUsMHhCRCwweDEyLDB4QzUsMHg4QywweDkzLDB4MjksMHgyOSwweDI5LDB4MkQsCi0gICAgMHg3
MywweENELDB4MzIsMHhDNSwweDAwLDB4QUUsMHhBRiwweEJELDB4NzMsMHhDRCwweDEyLDB4QkQs
MHg2QywweEY4LDB4RkEsMHhDQSwKLSAgICAweDUyLDB4QzUsMHg5MCwweEFDLDB4NUUsMHg1RSww
eDc4LDB4N0EsMHhCMCwweEI0LDB4MEUsMHg5QywweDVFLDB4QkEsMHhFOCwweEFGLAotICAgIDB4
NkYsMHhBNCwweDRDLDB4ODMsMHg1RSwweEVBLDB4QTgsMHhBMiwweDBFLDB4OUMsMHg2OCwweDYy
LDB4NTcsMHhBOCwweDAwLDB4MDAsCi0gICAgMHgwRSwweDlDLDB4RTcsMHg1OSwweDU1LDB4N0Ys
MHhFOCwweDAwLDB4Q0QsMHg5MywweEM2LDB4NTEsMHg1NSwweDU1LDB4RkYsMHhBOCwKLSAgICAw
eDRDLDB4ODMsMHhFNiwweDUxLDB4NTUsMHg1NSwweEZGLDB4MDAsMHgyQiwweDdCLDB4MDcsMHg1
QSwweDc1LDB4REQsMHhGRiwweDAwLAotICAgIDB4NkMsMHg4MywweDA2LDB4NTIsMHhGRCwweEZG
LDB4QkYsMHgwMCwweEFELDB4OEIsMHg2OCwweDYyLDB4RjUsMHhERiwweEVGLDB4MDAsCi0gICAg
MHgwRCwweDk0LDB4RUEsMHg3MiwweDc1LDB4RjUsMHhBRCwweDJFLDB4RUQsMHg5MywweDZCLDB4
ODMsMHgzRCwweEFGLDB4QjcsMHgyMCwKLSAgICAweDRFLDB4QTQsMHhDQywweDkzLDB4QkYsMHgy
RiwweDJELDB4QUYsMHg2RiwweEFDLDB4MEUsMHg5QywweDJFLDB4OEIsMHg5QSwweEEyLAotICAg
IDB4NkYsMHhBNCwweDBFLDB4QTQsMHg2QSwweEE4LDB4RkEsMHhGRSwweDJFLDB4OUMsMHg4Qiww
eDhCLDB4RkUsMHg1QywweEZFLDB4RjgsCi0gICAgMHgyRSwweEE0LDB4OEMsMHg4QiwweDJELDB4
MjksMHhBRiwweDJGLDB4NkYsMHhBNCwweDJFLDB4QTQsMHg2NywweDdCLDB4RUEsMHhBQiwKLSAg
ICAweDIzLDB4NDksMHhFMiwweDQwLDB4MkUsMHhBRiwweDNFLDB4MkEsMHgwMywweDUxLDB4NDMs
MHg0OSwweEZBLDB4QkYsMHhGRiwweEZCLAotICAgIDB4NDMsMHg1MSwweDAzLDB4NDksMHhFNyww
eDdELDB4RkYsMHhFQiwweDQzLDB4NDksMHgwMywweDQ5LDB4MkUsMHhGNywweDdELDB4RkIsCi0g
ICAgMHg0MywweDUxLDB4MDIsMHg0OSwweEY2LDB4QkMsMHhCRiwweEJGLDB4NDMsMHg1MSwweDAy
LDB4NDksMHhBQSwweEVBLDB4RUIsMHhFRiwKLSAgICAweDYzLDB4NTksMHgwMiwweDQ5LDB4RUEs
MHhBRSwweDI3LDB4QkYsMHg2MywweDU5LDB4MDIsMHg0OSwweEZGLDB4RUIsMHhBQywweEFCLAot
ICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHhGRSwweDdDLDB4QzIsMHgwOCwweDQzLDB4NTEsMHhF
MiwweDQ4LDB4QkIsMHhDRCwweEFCLDB4QUIsCi0gICAgMHg2NCwweDU5LDB4RTIsMHg0OCwweEFB
LDB4QUIsMHhGOSwweDc3LDB4MjMsMHg1MSwweDAyLDB4NDksMHg1MiwweEQ0LDB4RDcsMHg5NSwK
LSAgICAweDQzLDB4NTEsMHgwMywweDQ5LDB4RkQsMHgzRiwweEZGLDB4NUYsMHg0MywweDUxLDB4
MDMsMHg0OSwweEI4LDB4RTcsMHhCNywweDU1LAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhB
MiwweEJGLDB4RjMsMHhEQSwweDIzLDB4NTEsMHhFMiwweDQ4LDB4RkMsMHg1NiwweDdGLDB4QUYs
Ci0gICAgMHg0MywweDUxLDB4RTIsMHg0OCwweEQ1LDB4RDUsMHhCNSwweDJGLDB4MDksMHg4Qiww
eDIzLDB4NTEsMHhCNSwweDJELDB4MEYsMHgwMywKLSAgICAweDI5LDB4OEIsMHhDOCwweDgyLDB4
QkQsMHhFNiwweDVDLDB4N0MsMHhFOCwweDgyLDB4ODcsMHg3QSwweEY4LDB4QzgsMHg2OCwweEVB
LAotICAgIDB4QzcsMHg4MiwweDg3LDB4N0EsMHg3RCwweEZELDB4QUQsMHhCRCwweEE3LDB4N0Es
MHg2NiwweDcyLDB4QjYsMHg3MiwweDgwLDB4QzAsCi0gICAgMHhBNywweDdBLDB4NjYsMHg3Miww
eEVBLDB4N0IsMHhBRSwweEVFLDB4QTcsMHg3QSwweDQ2LDB4N0EsMHhBQSwweDhBLDB4RTgsMHgy
MCwKLSAgICAweEE3LDB4ODIsMHg0NiwweDcyLDB4QUEsMHhBRSwweDBBLDB4MEUsMHhBNywweDdB
LDB4NjYsMHg3MiwweEZCLDB4QkYsMHhBQSwweDBBLAotICAgIDB4QTcsMHg3QSwweDY2LDB4NzIs
MHhGRiwweEFGLDB4RUEsMHhBOCwweDg3LDB4N0EsMHg2NywweDcyLDB4ODAsMHhDMCwweDhBLDB4
QUYsCi0gICAgMHg4NywweDdBLDB4NDYsMHg3MiwweDY4LDB4RTYsMHg3NiwweEFGLDB4NjcsMHg3
QSwweDA1LDB4NkEsMHhBQSwweDY4LDB4QTgsMHgyMiwKLSAgICAweDA5LDB4OEIsMHgwNSwweDZB
LDB4RkQsMHhGRiwweEZELDB4MEYsMHg4OSwweDlCLDB4NDYsMHg3MiwweERELDB4QUQsMHgyQiww
eDAyLAotICAgIDB4OEEsMHg5QiwweEM4LDB4ODIsMHhENSwweDJCLDB4ODAsMHgwMiwweDhBLDB4
OUIsMHgwOCwweDhCLDB4RjUsMHhBRSwweDhFLDB4NzgsCi0gICAgMHgyOSwweDhCLDB4MDUsMHg2
QSwweDgwLDB4MjAsMHhFOCwweDdFLDB4QzgsMHg4MiwweEU1LDB4NjksMHhBMCwweEVBLDB4REYs
MHg1NSwKLSAgICAweDQ2LDB4NkEsMHhFNiwweDY5LDB4RkMsMHhGRiwweERELDB4RkYsMHgyNiww
eDZBLDB4RTUsMHg2MSwweEZFLDB4REEsMHhBQSwweDhBLAotICAgIDB4MjYsMHg2QSwweEM1LDB4
NTksMHgwQSwweEFBLDB4QUIsMHhEQSwweDQ2LDB4NkEsMHg4NCwweDUxLDB4MkEsMHgyMCwweEE4
LDB4NUYsCi0gICAgMHg2NywweDcyLDB4QTUsMHg1OSwweDI4LDB4QTgsMHhFRSwweDU1LDB4Njcs
MHg3MiwweEE1LDB4NTksMHgyMCwweDBBLDB4RkIsMHg1NSwKLSAgICAweDY3LDB4NzIsMHg4NCww
eDUxLDB4MDAsMHgwMCwweEJBLDB4NUQsMHg4NywweDcyLDB4ODQsMHg1MSwweDAwLDB4MDAsMHhC
QSwweDU1LAotICAgIDB4QTgsMHg3QSwweDY0LDB4NTEsMHgwMiwweEE4LDB4RkUsMHg1NSwweDY3
LDB4NzIsMHg0MywweDQ5LDB4QTAsMHhBOCwweEZGLDB4NTUsCi0gICAgMHgwNiwweDYyLDB4NDQs
MHg0OSwweDAwLDB4MDAsMHgyRSwweEU1LDB4QzUsMHg1OSwweDIzLDB4NDksMHhGOCwweDc4LDB4
NzgsMHg3OCwKLSAgICAweDY1LDB4NDksMHhFMywweDM4LDB4NUYsMHg3RiwweEFBLDB4QUEsMHg0
MywweDQxLDB4RTMsMHgzOCwweEZELDB4RUYsMHhGRiwweEY4LAotICAgIDB4MjQsMHg0MSwweEMy
LDB4MzAsMHhGNywweEU3LDB4QUMsMHhBQSwweDAzLDB4MzksMHhBMiwweDMwLDB4QUEsMHhBOCww
eEU4LDB4RkEsCi0gICAgMHhFMywweDM4LDB4QTIsMHgyOCwweEE4LDB4RkMsMHg3RSwweDVGLDB4
MDMsMHgzOSwweDgxLDB4MjAsMHhBOCwweEFFLDB4RDcsMHg3RCwKLSAgICAweDAzLDB4MzEsMHg4
MSwweDIwLDB4RkMsMHhGRSwweEZGLDB4NTUsMHhDMiwweDI4LDB4NjEsMHgyMCwweEZGLDB4RUEs
MHg3OCwweDVFLAotICAgIDB4ODEsMHgyMCwweDYxLDB4MTgsMHhBOCwweDI4LDB4ODAsMHg3Niww
eEEyLDB4MjAsMHg2MSwweDE4LDB4RUEsMHg3QSwweDdGLDB4RkQsCi0gICAgMHg4MiwweDIwLDB4
NjEsMHgxOCwweENELDB4MEIsMHgzQiwweEJBLDB4QzIsMHgyOCwweDgyLDB4MjAsMHhGRCwweEZE
LDB4QkIsMHgyQiwKLSAgICAweEUzLDB4MzAsMHg4MSwweDIwLDB4REQsMHhGNywweEFCLDB4MEEs
MHhDMiwweDI4LDB4QTIsMHgyOCwweEE3LDB4MzUsMHg5NSwweEFDLAotICAgIDB4RTMsMHgzMCww
eEEyLDB4MjgsMHhBQSwweEFCLDB4RjksMHg4MCwweDAzLDB4MzEsMHhDMiwweDI4LDB4N0QsMHhF
RiwweEFFLDB4MkYsCi0gICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweDU3LDB4NzAsMHhFQywweEU4
LDB4RTMsMHgyOCwweDgyLDB4MjgsMHg1RiwweEJGLDB4QkIsMHhFMiwKLSAgICAweEMyLDB4Mjgs
MHg4MSwweDI4LDB4RjUsMHhENiwweEVBLDB4QTgsMHhBMiwweDI4LDB4ODEsMHgyMCwweEZBLDB4
QUEsMHgwQSwweDBDLAotICAgIDB4QzIsMHgzMCwweDYxLDB4MjAsMHhFOSwweDhCLDB4MDIsMHgw
MiwweEUzLDB4MzAsMHg4MSwweDI4LDB4N0QsMHg3QiwweEU4LDB4RTAsCi0gICAgMHhDMiwweDI4
LDB4NjEsMHgyMCwweEY3LDB4QkYsMHhBQSwweDhBLDB4QzIsMHgzMCwweEEyLDB4MjgsMHhENSww
eDc1LDB4OEQsMHhDMywKLSAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4QkIsMHgxRiwweERELDB4
N0YsMHhDMiwweDMwLDB4QTIsMHgyOCwweEY1LDB4RTIsMHhGNywweEU1LAotICAgIDB4RTMsMHgz
MCwweEEyLDB4MjgsMHgyRiwweDBGLDB4QkQsMHg4NSwweDAzLDB4MzEsMHhDMiwweDMwLDB4QUEs
MHgwQSwweDBCLDB4M0QsCi0gICAgMHgwMywweDMxLDB4QzMsMHgzMCwweEFBLDB4MDgsMHgyQSww
eEI3LDB4MjQsMHgzOSwweEUzLDB4MzAsMHg2QiwweEZCLDB4RkYsMHhFRCwKLSAgICAweDI0LDB4
MzksMHhFMywweDM4LDB4QkQsMHhCQiwweDk3LDB4NTUsMHg0NCwweDQxLDB4RTMsMHgzOCwweEYz
LDB4QUEsMHhFRSwweEZELAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHhCNSwweDBBLDB4ODgs
MHg4QywweDI0LDB4NDEsMHhDMywweDMwLDB4RUYsMHgyRSwweDJGLDB4QjcsCi0gICAgMHgyNCww
eDM5LDB4QzIsMHgzMCwweEM5LDB4QUUsMHhCNiwweEVBLDB4MDMsMHgzOSwweEMyLDB4MzAsMHgx
QiwweEYyLDB4MjAsMHgwMCwKLSAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4NzYsMHhCRiwweDNG
LDB4RjgsMHhFMiwweDMwLDB4QzMsMHgzMCwweDIwLDB4MkQsMHhCNiwweEE4LAotICAgIDB4MDMs
MHgzOSwweEMyLDB4MzAsMHg3QSwweEFCLDB4QUYsMHg2QiwweDAyLDB4MzksMHhDMiwweDMwLDB4
QUYsMHgyRSwweEI3LDB4RkYsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDBGLDB4QUEsMHhB
RiwweDczLDB4MjQsMHg0MSwweEMyLDB4MzAsMHhBQSwweDBGLDB4MEEsMHhBNywKLSAgICAweDQz
LDB4NDEsMHhFMywweDM4LDB4RkYsMHhFRiwweEY2LDB4RjgsMHg0MywweDQxLDB4MDMsMHg0MSww
eEZGLDB4M0QsMHgyNiwweEE3LAotICAgIDB4ODUsMHg1MSwweDQ0LDB4NDksMHgyRiwweDhCLDB4
MUYsMHhERiwweDg0LDB4NTEsMHgyMywweDQxLDB4NUMsMHhFOCwweEUzLDB4QTIsCi0gICAgMHg0
NCwweDQ5LDB4MDMsMHg0MSwweEUyLDB4QTIsMHgyQywweEI0LDB4NjQsMHg0OSwweDIzLDB4NDEs
MHhERCwweEVCLDB4QUIsMHhBQiwKLSAgICAweDQ0LDB4NDksMHgwMiwweDM5LDB4RkUsMHhENyww
eEZBLDB4RkMsMHg0NCwweDQxLDB4MDIsMHg0MSwweDdGLDB4RUYsMHhBQiwweDhCLAotICAgIDB4
NDMsMHg0MSwweEUzLDB4MzgsMHhCMiwweEFBLDB4ODIsMHgwQSwweDQ0LDB4NDEsMHhFMiwweDM4
LDB4REIsMHhGRSwweEFBLDB4RTAsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweEQ1LDB4RjUs
MHhCRiwweDJELDB4NjQsMHg0OSwweDIzLDB4NDEsMHhGNywweDU3LDB4RkEsMHhGMCwKLSAgICAw
eDg0LDB4NDksMHgyMiwweDQxLDB4OEQsMHhBNywweDI5LDB4QUIsMHg2NCwweDUxLDB4NDMsMHg0
MSwweDNFLDB4REUsMHg2RiwweDJGLAotICAgIDB4QTUsMHg1MSwweDQ0LDB4NDksMHhCQiwweEY5
LDB4QUIsMHg4QSwweEM1LDB4NTksMHg4NCwweDUxLDB4MkQsMHhGNSwweDBCLDB4MEIsCi0gICAg
MHg2OCwweDcyLDB4QTQsMHg1MSwweDJCLDB4MkQsMHhBRCwweDNGLDB4RDEsMHhCQywweDBBLDB4
ODMsMHgyRiwweDJELDB4QUQsMHhBRCwKLSAgICAweDczLDB4Q0QsMHg5MCwweEI0LDB4MkEsMHgy
QiwweEVELDB4RkQsMHg3MywweENELDB4MTEsMHhCRCwweEUyLDB4OEIsMHgyQiwweEE1LAotICAg
IDB4NzMsMHhDRCwweEIwLDB4QUMsMHg3QSwweEI4LDB4QTAsMHg4MCwweDEyLDB4QkQsMHg2Riww
eEFDLDB4NzcsMHg1RiwweERBLDB4ODAsCi0gICAgMHhGMSwweEJDLDB4NEYsMHhBNCwweDVELDB4
QkYsMHhBQSwweDBBLDB4RDAsMHhCNCwweDJFLDB4QTQsMHg5RCwweEJGLDB4QkEsMHg4MCwKLSAg
ICAweEQwLDB4QjQsMHgyRSwweDlDLDB4N0YsMHhBQSwweEEyLDB4MDgsMHhEMCwweEI0LDB4MkUs
MHg5QywweEQ1LDB4QUEsMHg4OCwweDA4LAotICAgIDB4RDAsMHhCNCwweDJFLDB4OUMsMHg3Nyww
eEZBLDB4QTgsMHg4MCwweEIwLDB4QUMsMHgwRSwweDlDLDB4NTUsMHhFQSwweEE4LDB4MEEsCi0g
ICAgMHg4RiwweEFDLDB4MEQsMHg5NCwweEQ3LDB4RkEsMHhBOCwweEFBLDB4NkYsMHhBNCwweDJF
LDB4OUMsMHhGNiwweEFBLDB4QzAsMHhCQSwKLSAgICAweDZGLDB4QTQsMHgwRSwweDlDLDB4RjUs
MHhFMiwweEVBLDB4RkEsMHg0RiwweEE0LDB4RUQsMHg5MywweDdFLDB4RkMsMHhBRSwweEEyLAot
ICAgIDB4NkYsMHhBNCwweDBFLDB4OUMsMHhCRCwweEFELDB4OEQsMHhBRiwweDZGLDB4QTQsMHgy
RSwweEE0LDB4NjgsMHg5MywweDhFLDB4NzcsCi0gICAgMHg2RiwweEE0LDB4MEUsMHg5QywweEJB
LDB4RkYsMHg4RiwweDNELDB4MkUsMHhBNCwweENDLDB4OTMsMHg1QywweDZBLDB4RUEsMHg4MCwK
LSAgICAweDJFLDB4QTQsMHhDQywweDkzLDB4MjUsMHgzRCwweDk1LDB4MTcsMHg5MCwweEFDLDB4
MkUsMHhBNCwweEVBLDB4MkEsMHgyOSwweEFCLAotICAgIDB4NDQsMHg1MSwweDAyLDB4NDksMHhC
QywweEFDLDB4RTYsMHhCNSwweDIzLDB4NDksMHhFMiwweDQ4LDB4MjgsMHgwMCwweEYwLDB4RjAs
Ci0gICAgMHg0MywweDUxLDB4MDIsMHg0OSwweDJGLDB4QjYsMHg3NywweDc1LDB4MjMsMHg1MSww
eEUyLDB4NDAsMHhBOCwweEFGLDB4MkQsMHgyRCwKLSAgICAweDIzLDB4NTEsMHg0MywweDQ5LDB4
QTAsMHgyQSwweDBCLDB4NzgsMHg4NCwweDU5LDB4MjMsMHg1MSwweEQ1LDB4NTUsMHhENSwweERD
LAotICAgIDB4NjMsMHg1OSwweDAyLDB4NDksMHhBRSwweEU4LDB4RkEsMHhEQSwweDQzLDB4NTEs
MHgwMiwweDQ5LDB4M0UsMHhCNiwweDVBLDB4RTMsCi0gICAgMHg2NCwweDU5LDB4MDIsMHg0OSww
eDI1LDB4RkIsMHhCRiwweEVGLDB4MjMsMHg1MSwweDAyLDB4NDksMHhBMiwweEMyLDB4QTgsMHgy
QSwKLSAgICAweDIzLDB4NTEsMHgwMiwweDQxLDB4RjIsMHg3MiwweEZGLDB4REYsMHgyMywweDQ5
LDB4MDMsMHg0OSwweDU1LDB4MTYsMHgzOCwweDE3LAotICAgIDB4MjMsMHg0OSwweDAyLDB4NDks
MHg1QSwweEYwLDB4MjgsMHhBMCwweDQzLDB4NDksMHgwMywweDQ5LDB4NTUsMHg1NSwweDE1LDB4
RkIsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0OCwweEUyLDB4QTIsMHhBOCwweEYxLDB4MjMsMHg0
OSwweEUyLDB4NDgsMHhCOSwweEIzLDB4QkEsMHgyQSwKLSAgICAweEM4LDB4ODIsMHgwMiwweDQ5
LDB4RjUsMHhCNSwweDJELDB4MkYsMHg0QSwweDkzLDB4QTcsMHg3QSwweEE5LDB4OEIsMHhBMiww
eDhBLAotICAgIDB4MjksMHg4QiwweEM3LDB4ODIsMHg3OCwweEQ4LDB4NzgsMHg1RSwweEU4LDB4
ODIsMHhBNywweDdBLDB4RkEsMHg1OCwweDZBLDB4QUEsCi0gICAgMHhBNywweDdBLDB4NjYsMHg3
MiwweDNDLDB4RTIsMHgyMiwweDAwLDB4QzcsMHg4MiwweDY2LDB4NzIsMHg3QiwweDZGLDB4QUIs
MHhBRiwKLSAgICAweEM3LDB4ODIsMHg2NiwweDdBLDB4RkIsMHhFOSwweEVBLDB4RkUsMHhBNyww
eDgyLDB4NjYsMHg3MiwweDNFLDB4MzYsMHhERiwweEI2LAotICAgIDB4QTcsMHg3QSwweDg3LDB4
N0EsMHhCRCwweDM1LDB4RkYsMHhEQywweDg3LDB4N0EsMHg2NiwweDcyLDB4MDgsMHgyOCwweDgw
LDB4MDAsCi0gICAgMHhBOCwweDdBLDB4NDYsMHg3MiwweEVBLDB4QjIsMHhGRSwweEQ3LDB4ODYs
MHg3QSwweDI1LDB4NkEsMHg4MywweEZBLDB4RkEsMHgzRSwKLSAgICAweEU4LDB4OEEsMHg0Niww
eDcyLDB4REQsMHhFRCwweEFGLDB4MkEsMHg0QSwweDkzLDB4NDcsMHg3MiwweEQ1LDB4QjcsMHgy
RSwweDAyLAotICAgIDB4QUIsMHhBMywweEE4LDB4ODIsMHgzRCwweEFCLDB4OEEsMHgwMCwweEFB
LDB4QTMsMHg0OSwweDkzLDB4QUYsMHg4QSwweEEyLDB4NzIsCi0gICAgMHg4QSwweDlCLDB4Mjcs
MHg3MiwweDAwLDB4ODAsMHhFOCwweDdFLDB4NDksMHg5MywweEM1LDB4NjEsMHhBOCwweEZBLDB4
NUYsMHg1NSwKLSAgICAweDY2LDB4NzIsMHhDNCwweDYxLDB4RjgsMHg3RiwweEY3LDB4REQsMHgw
NiwweDZBLDB4QzUsMHg2MSwweENFLDB4QUQsMHhCNSwweERGLAotICAgIDB4MjYsMHg2QSwweEM2
LDB4NjEsMHhBQSwweEEzLDB4RUEsMHhERSwweDI2LDB4NkEsMHgyMywweDQ5LDB4MDAsMHhBMCww
eDdBLDB4NUYsCi0gICAgMHhFNSwweDYxLDB4MjMsMHg0OSwweEU4LDB4NUYsMHg1NSwweDU1LDB4
NjQsMHg1MSwweDIzLDB4NDksMHg3QSwweDVBLDB4NTUsMHg1NSwKLSAgICAweDY0LDB4NDksMHgw
MywweDQxLDB4QTksMHhCRSwweEE4LDB4QUYsMHg0MywweDQ5LDB4MjMsMHg0MSwweDAwLDB4OEUs
MHhDOSwweENBLAotICAgIDB4NjQsMHg0OSwweDIzLDB4NDksMHhGNSwweEVELDB4NUQsMHhGMyww
eDQzLDB4NDksMHgwMywweDQxLDB4Q0EsMHg2QiwweEVFLDB4QTIsCi0gICAgMHg0MywweDQ5LDB4
RTIsMHg0MCwweDdBLDB4QkIsMHhGQSwweEU4LDB4NDMsMHg0OSwweEUyLDB4NDAsMHg3MiwweEZB
LDB4OEYsMHgyRiwKLSAgICAweDg1LDB4NTEsMHgwMywweDQxLDB4QUQsMHgwNywweEFGLDB4QUEs
MHg4NSwweDUxLDB4MjMsMHg0MSwweDcwLDB4NkMsMHhGQiwweEVBLAotICAgIDB4NjUsMHg0OSww
eEUzLDB4MzgsMHgwQiwweEVBLDB4QkEsMHg1RSwweDQ0LDB4NDEsMHhFMywweDM4LDB4RDgsMHhB
RSwweEE3LDB4REYsCi0gICAgMHgyNCwweDQxLDB4QzIsMHgzMCwweDI4LDB4RUEsMHg4QSwweDVF
LDB4RTMsMHgzMCwweDgxLDB4MjAsMHhBOCwweDQ4LDB4N0EsMHhERiwKLSAgICAweEEyLDB4Mjgs
MHg4MSwweDIwLDB4ODIsMHgwQiwweDhCLDB4QzIsMHhBMiwweDI4LDB4ODEsMHgyMCwweDUwLDB4
NTYsMHg3NiwweEEzLAotICAgIDB4QTIsMHgyMCwweDgxLDB4MjAsMHhFNSwweEVGLDB4QkIsMHhG
MCwweEExLDB4MjAsMHg2MSwweDE4LDB4REEsMHg1QSwweDVBLDB4N0EsCi0gICAgMHg0MSwweDIw
LDB4NjEsMHgxOCwweEZELDB4REQsMHg3RiwweDc3LDB4ODEsMHgyMCwweDQxLDB4MTgsMHhBQiww
eDNCLDB4MkYsMHgyQiwKLSAgICAweEEyLDB4MjgsMHg2MSwweDE4LDB4QkYsMHgzRiwweEFGLDB4
QUIsMHhFMywweDI4LDB4ODIsMHgyMCwweEEzLDB4QUIsMHhGRiwweEU3LAotICAgIDB4MDMsMHgz
MSwweEEyLDB4MjgsMHg4RiwweEVGLDB4RDUsMHg1RiwweDI0LDB4MzksMHhDMiwweDI4LDB4QkYs
MHhCRiwweDA5LDB4ODksCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEY4LDB4OTgsMHg1QSww
eDVDLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBRiwweEY3LDB4RUUsMHg4MywKLSAgICAweEUyLDB4
MzAsMHhBMiwweDI4LDB4RkEsMHg1QSwweDZFLDB4RTAsMHhDMiwweDI4LDB4ODEsMHgyOCwweDIy
LDB4QUEsMHg5RiwweERFLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHg1NSwweDk1LDB4OUQs
MHhCNSwweDAzLDB4MzEsMHhDMiwweDI4LDB4NTUsMHhGNSwweEI2LDB4QUMsCi0gICAgMHgwMyww
eDMxLDB4QzIsMHgyOCwweEZELDB4RkEsMHhGQSwweEJFLDB4RTMsMHgzMCwweEEyLDB4MjgsMHg3
QSwweDdDLDB4RUUsMHhCNiwKLSAgICAweEMyLDB4MzAsMHg4MSwweDI4LDB4MEIsMHhBQSwweEZB
LDB4RjgsMHhFMywweDI4LDB4ODEsMHgyOCwweEZCLDB4RkYsMHhGRCwweDc1LAotICAgIDB4QTIs
MHgyOCwweDgxLDB4MjgsMHgyMCwweDIwLDB4MkEsMHgwQiwweEEyLDB4MjgsMHg4MSwweDIwLDB4
MDAsMHhBMCwweEEwLDB4QzIsCi0gICAgMHhDMiwweDI4LDB4ODEsMHgyOCwweDBCLDB4QUIsMHhC
RiwweEFGLDB4MDMsMHgzMSwweEEyLDB4MjgsMHgzRiwweEZGLDB4RkYsMHg3RCwKLSAgICAweEUz
LDB4MzAsMHhBMiwweDI4LDB4MzQsMHhBRSwweEVCLDB4REYsMHgwMywweDM5LDB4QTIsMHgyOCww
eEFBLDB4QkYsMHhGRiwweERELAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHgwMiwweEE3LDB4
QUQsMHhCNiwweDI0LDB4MzksMHhDMiwweDMwLDB4QUYsMHg4RCwweDhGLDB4RTUsCi0gICAgMHgy
NCwweDM5LDB4RTMsMHgzOCwweEVGLDB4RUIsMHhFQiwweDdGLDB4MDMsMHgzOSwweEMyLDB4MzAs
MHhGRiwweERBLDB4RkEsMHhGRiwKLSAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4QUIsMHgyRiww
eEJGLDB4QkYsMHgyMywweDM5LDB4RTMsMHgzOCwweDJCLDB4M0EsMHgzRSwweEZFLAotICAgIDB4
MjMsMHgzOSwweEUyLDB4MzAsMHhCMCwweEEwLDB4RUEsMHhGQSwweDIzLDB4MzksMHhDMiwweDMw
LDB4RkUsMHhGOCwweEZFLDB4RkIsCi0gICAgMHgwMywweDM5LDB4QzEsMHgzMCwweEI3LDB4MkIs
MHhCMywweEFBLDB4MjMsMHg0MSwweEMyLDB4MzAsMHhBRiwweEFFLDB4MjksMHg4QiwKLSAgICAw
eDIzLDB4NDEsMHhDMiwweDMwLDB4NTIsMHg3OCwweEFDLDB4QTgsMHgwMywweDM5LDB4QTIsMHgz
MCwweDJCLDB4OEYsMHhGQSwweEYyLAotICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHhGQSwweDdB
LDB4N0YsMHhGNywweDY0LDB4NDksMHgwMywweDQxLDB4QjUsMHgyNSwweDM1LDB4MDUsCi0gICAg
MHg4NSwweDUxLDB4MjMsMHg0MSwweEVGLDB4RkUsMHg1QywweDVGLDB4ODQsMHg1MSwweDIzLDB4
NDEsMHhBMiwweDJCLDB4RkYsMHg3NSwKLSAgICAweDQ0LDB4NDksMHgwMywweDQxLDB4MkMsMHhC
NCwweEI0LDB4RjYsMHg0NCwweDQxLDB4MDMsMHg0MSwweDIwLDB4MDAsMHgyOCwweDJGLAotICAg
IDB4NDMsMHg0MSwweEUzLDB4MzgsMHhBMiwweEFBLDB4ODYsMHhGRSwweDQ0LDB4NDEsMHgwMyww
eDQxLDB4OEEsMHhFRiwweDNGLDB4RDcsCi0gICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweDJFLDB4
QkUsMHhGNCwweEY2LDB4NjQsMHg0OSwweDAzLDB4NDEsMHg0MiwweDgyLDB4MDMsMHhFRCwKLSAg
ICAweEE1LDB4NTEsMHgwMywweDQxLDB4MkQsMHhBRiwweEVGLDB4RjUsMHg4NSwweDUxLDB4MjMs
MHg0MSwweEFBLDB4ODgsMHhFMiwweEY5LAotICAgIDB4QTUsMHg1MSwweDQzLDB4NDEsMHhCRiww
eDJFLDB4MkYsMHhBNSwweEM1LDB4NTEsMHg2NCwweDQ5LDB4RDUsMHhFQSwweDBBLDB4OEEsCi0g
ICAgMHhFNSwweDU5LDB4ODQsMHg1MSwweEVELDB4M0QsMHg4QiwweDBBLDB4MjYsMHg2MiwweEM1
LDB4NTksMHhERCwweEJFLDB4RkIsMHgzNSwKLSAgICAweDQ3LDB4NkEsMHhDNSwweDU5LDB4M0Ys
MHhBRiwweEI2LDB4QjcsMHgwRSwweEE0LDB4NjcsMHg2QSwweDBGLDB4MEYsMHgyOSwweDBELAot
ICAgIDB4RDEsMHhCQywweDRGLDB4QUMsMHgwQiwweDJELDB4QUQsMHhGRCwweDMyLDB4QkQsMHhC
MCwweEI0LDB4MkYsMHgzRiwweEY1LDB4RDUsCi0gICAgMHg3MywweEM1LDB4RjEsMHhCQywweDhB
LDB4QkEsMHhENywweEQ1LDB4NTMsMHhDNSwweDExLDB4QkQsMHhGRSwweDJBLDB4MkYsMHgzNywK
LSAgICAweDczLDB4Q0QsMHgxMSwweEJELDB4NzUsMHhBRiwweEFBLDB4ODAsMHg3MywweEM1LDB4
RjAsMHhCNCwweDU3LDB4N0UsMHhBQSwweDIyLAotICAgIDB4NTIsMHhDNSwweEFGLDB4QUMsMHg1
RCwweDVFLDB4NUUsMHg3QywweEQwLDB4QjQsMHg4RiwweEFDLDB4MkIsMHg4QiwweDNGLDB4MTUs
Ci0gICAgMHhEMCwweEI0LDB4NkYsMHhBQywweEIyLDB4QkEsMHhGOCwweDdBLDB4QjAsMHhBQyww
eDRFLDB4QTQsMHhFOCwweEUwLDB4RkEsMHg1NiwKLSAgICAweDhGLDB4QUMsMHgyRSwweEE0LDB4
QkEsMHhBQiwweEVBLDB4N0QsMHg2RiwweEE0LDB4MkUsMHhBNCwweDNGLDB4RUEsMHhBOSwweDI5
LAotICAgIDB4OTAsMHhBQywweDJFLDB4OUMsMHg3QiwweDdFLDB4QUEsMHgyOCwweDZGLDB4QUMs
MHhFRCwweDlCLDB4RkYsMHg1RiwweEVFLDB4QjAsCi0gICAgMHg0RiwweEE0LDB4MEUsMHg5Qyww
eDNCLDB4RUEsMHhERSwweDU2LDB4NEYsMHhBNCwweDBELDB4OUMsMHgzOCwweDNDLDB4MjMsMHhG
QiwKLSAgICAweDRFLDB4QTQsMHgwRSwweDlDLDB4MEEsMHgwQSwweEVCLDB4N0YsMHg2RiwweEFD
LDB4MEQsMHg5QywweDY4LDB4RUEsMHhCRiwweEZGLAotICAgIDB4MkUsMHhBNCwweENELDB4OTMs
MHgzNiwweEI4LDB4QUMsMHhFMCwweDhGLDB4QUMsMHgyRSwweDlDLDB4QUIsMHgwRCwweDM5LDB4
MjUsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0OCwweDlDLDB4QzMsMHg2QiwweDJGLDB4MjMsMHg0
OSwweEUyLDB4NDAsMHhCOCwweDIzLDB4RkUsMHhFQSwKLSAgICAweDIzLDB4NTEsMHhFMiwweDQw
LDB4RkUsMHhGRiwweDlELDB4M0QsMHg0MywweDUxLDB4RTIsMHg0OCwweEFELDB4MkIsMHhBQiww
eDg4LAotICAgIDB4NjMsMHg1MSwweDIzLDB4NTEsMHhGQSwweDE2LDB4NEYsMHg2RCwweDY0LDB4
NTksMHgyMywweDUxLDB4RkUsMHg2NywweEVGLDB4RUUsCi0gICAgMHg2MywweDU5LDB4MDMsMHg0
OSwweEY3LDB4RkYsMHg3QSwweEU4LDB4NDMsMHg1MSwweDAyLDB4NDksMHhCMCwweEUwLDB4QkEs
MHhBOSwKLSAgICAweDQzLDB4NTEsMHhFMSwweDQwLDB4RTIsMHhFQSwweEEyLDB4RjgsMHgyMyww
eDUxLDB4MDIsMHg0OSwweDY5LDB4MEEsMHgyRCwweDVELAotICAgIDB4NDMsMHg1MSwweEUyLDB4
NDAsMHhERSwweEZGLDB4MkUsMHhCRSwweDAyLDB4NDksMHhFMiwweDQwLDB4QkMsMHgyOCwweDM4
LDB4QjAsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEIwLDB4MEEsMHgwQSwweEJFLDB4MDMs
MHg0OSwweDIyLDB4NDEsMHgwQSwweDA4LDB4OEEsMHhBMCwKLSAgICAweDIzLDB4NDksMHhDMiww
eDQwLDB4QkUsMHhBRiwweDNGLDB4OTcsMHg0NywweDcyLDB4MDIsMHg0OSwweEQ1LDB4RjUsMHhC
NSwweDJELAotICAgIDB4MjksMHg4QiwweEE0LDB4NjEsMHgyRCwweDBCLDB4MDIsMHgwMCwweDRB
LDB4OTMsMHhDOCwweDgyLDB4QUEsMHhFQSwweDdFLDB4REMsCi0gICAgMHgwOSwweDhCLDB4Qzgs
MHg4MiwweDc4LDB4QUYsMHhFRiwweDc3LDB4RTgsMHg4MiwweEE3LDB4ODIsMHhBQSwweDU4LDB4
NUIsMHhGQiwKLSAgICAweEU4LDB4ODIsMHg4NywweDdBLDB4N0UsMHhGQiwweEYyLDB4ODAsMHhD
OCwweDgyLDB4ODcsMHg3QSwweEZFLDB4NkEsMHg0MiwweEFCLAotICAgIDB4QzgsMHg4MiwweDg3
LDB4N0EsMHhERiwweDdGLDB4NUIsMHhGOCwweEM4LDB4ODIsMHg4NywweDdBLDB4NTUsMHhENSww
eEFGLDB4QkIsCi0gICAgMHhDNywweDdBLDB4NjYsMHg3QSwweEJBLDB4QTIsMHg2QSwweDdBLDB4
QTcsMHg3QSwweDQ2LDB4NzIsMHhFMiwweEZBLDB4RkIsMHg3QSwKLSAgICAweDY2LDB4N0EsMHg0
NiwweDcyLDB4NzUsMHg1NiwweEQ4LDB4MUUsMHg2QiwweDlCLDB4NDUsMHg3MiwweEQ1LDB4RjUs
MHhCRCwweDJCLAotICAgIDB4QUIsMHhBMywweEM3LDB4ODIsMHhCNSwweEFGLDB4MkEsMHgwMCww
eENCLDB4QTMsMHg2QSwweDlCLDB4QTksMHg4QiwweDI4LDB4QTgsCi0gICAgMHhBQiwweEEzLDB4
MDksMHg4QiwweDg4LDB4QTAsMHhFOCwweDU4LDB4NkEsMHg5QiwweEU1LDB4NjksMHg4MCwweEUw
LDB4NzgsMHg1RiwKLSAgICAweDg3LDB4N0EsMHhBNSwweDYxLDB4RjgsMHg1RSwweEQ1LDB4NTcs
MHhFNiwweDY5LDB4QTUsMHg2MSwweDcyLDB4N0UsMHhGQSwweEVGLAotICAgIDB4RTYsMHg2MSww
eEE0LDB4NjEsMHg1RSwweDlGLDB4QTksMHgyQSwweDI2LDB4NkEsMHg4MywweDU5LDB4RjcsMHhC
RiwweEFBLDB4Q0EsCi0gICAgMHhFNSwweDYxLDB4NDMsMHg1MSwweEU4LDB4RjgsMHg3QSwweEZC
LDB4NjQsMHg1MSwweDAzLDB4NDEsMHhGQywweEY2LDB4RkEsMHg4QSwKLSAgICAweDY0LDB4NDks
MHgwMywweDQxLDB4NUQsMHg1NywweEJGLDB4MkYsMHg2NCwweDQ5LDB4MDMsMHg0MSwweEVELDB4
ODIsMHgyMCwweEIwLAotICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHhFRiwweEVCLDB4N0MsMHhG
RSwweDQzLDB4NDksMHgwMywweDQxLDB4OEMsMHhFQSwweEJBLDB4QzYsCi0gICAgMHg0NCwweDQ5
LDB4MDMsMHg0MSwweEFBLDB4Q0EsMHg3QiwweDVELDB4NDMsMHg0MSwweDAzLDB4NDEsMHhGQSww
eEZBLDB4NzksMHg3RiwKLSAgICAweDQzLDB4NDksMHgwMywweDQxLDB4N0EsMHhGRSwweDVGLDB4
REQsMHg0NCwweDQ5LDB4RTMsMHgzOCwweDI3LDB4QUIsMHhFRiwweEJFLAotICAgIDB4NjQsMHg0
OSwweDAzLDB4NDEsMHgwQSwweEFBLDB4QTksMHg4QiwweDg1LDB4NTEsMHgyMywweDQxLDB4RjAs
MHhGRiwweEY3LDB4NTUsCi0gICAgMHgyMywweDQxLDB4QzMsMHgzMCwweEY4LDB4QUEsMHhBOCww
eDdDLDB4MDMsMHgzOSwweEEyLDB4MzAsMHgyQSwweEE4LDB4QkUsMHhENywKLSAgICAweEUzLDB4
MzAsMHhBMiwweDI4LDB4RUMsMHhGRSwweDdBLDB4QzAsMHhBMiwweDI4LDB4NjEsMHgyMCwweEE4
LDB4RkEsMHhGOCwweEZBLAotICAgIDB4QTEsMHgyMCwweDYwLDB4MjAsMHg4MiwweDAyLDB4Mjks
MHhBQiwweEMyLDB4MjgsMHg4MSwweDIwLDB4RTIsMHg3NSwweEY3LDB4NTUsCi0gICAgMHhBMiww
eDIwLDB4ODEsMHgyMCwweEYwLDB4N0IsMHg1OCwweDU3LDB4ODEsMHgyMCwweDYxLDB4MTgsMHhF
OCwweEFDLDB4QUEsMHhDRiwKLSAgICAweEEyLDB4MjAsMHg0MSwweDE4LDB4RkUsMHhCRSwweEE3
LDB4MkYsMHhBMiwweDIwLDB4NjEsMHgyMCwweEFGLDB4QkEsMHhBMCwweDAwLAotICAgIDB4QTIs
MHgyOCwweDgxLDB4MjAsMHgzNSwweEVELDB4Q0EsMHgwOCwweEUzLDB4MzAsMHhBMiwweDI4LDB4
RjUsMHhFNSwweDNELDB4MkEsCi0gICAgMHgwMywweDMxLDB4QTIsMHgyOCwweDdGLDB4N0YsMHg3
OCwweEUwLDB4MjQsMHgzOSwweEEyLDB4MjgsMHgwRiwweDA5LDB4MDksMHgyRiwKLSAgICAweDQ0
LDB4NDEsMHhDMiwweDMwLDB4NUMsMHg1OCwweEZDLDB4NUMsMHgwMywweDM5LDB4QzIsMHgzMCww
eDgxLDB4ODAsMHg4QSwweEZBLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHg1QSwweEZBLDB4
RkEsMHhGRSwweEMyLDB4MzAsMHg4MSwweDI4LDB4NUIsMHg3RSwweEJGLDB4QUEsCi0gICAgMHhF
MiwweDMwLDB4ODEsMHgyMCwweDI1LDB4OEIsMHhCRiwweEZGLDB4MDMsMHgzMSwweEExLDB4Mjgs
MHhBRSwweDJFLDB4OUQsMHhENSwKLSAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4MjIsMHhBMCww
eEZBLDB4N0UsMHhDMiwweDMwLDB4QTIsMHgyOCwweDJBLDB4MkEsMHhFRSwweEJFLAotICAgIDB4
RTMsMHgzMCwweEEyLDB4MjgsMHg1RiwweDVGLDB4N0EsMHg1QSwweEEyLDB4MjgsMHg4MiwweDIw
LDB4RjIsMHg2MCwweEMwLDB4MDAsCi0gICAgMHhBMiwweDI4LDB4ODEsMHgyMCwweDJFLDB4OUUs
MHg3RiwweENCLDB4QzIsMHgyOCwweDgxLDB4MjAsMHhFQiwweDhGLDB4ODksMHhBMywKLSAgICAw
eEMyLDB4MjgsMHhBMiwweDI4LDB4RjcsMHg2RCwweEM5LDB4RTksMHhDMSwweDI4LDB4ODIsMHgy
OCwweEFBLDB4REEsMHhGRSwweEZFLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg1NywweDdG
LDB4NkIsMHg1OSwweEMyLDB4MzAsMHhBMiwweDI4LDB4QUIsMHhBRiwweEM5LDB4ODgsCi0gICAg
MHhDMiwweDMwLDB4QTIsMHgyOCwweEFDLDB4QUMsMHhBQiwweDhCLDB4RTIsMHgzOCwweEEyLDB4
MjgsMHhBQiwweDNGLDB4QkYsMHhCRiwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QUEsMHg1
RiwweDdGLDB4NTUsMHhFMywweDM4LDB4QTIsMHgzMCwweDg4LDB4RUEsMHhEQSwweEZGLAotICAg
IDB4RTMsMHgzOCwweEMyLDB4MzAsMHgzRSwweDU5LDB4RkYsMHg2RCwweDAzLDB4MzksMHhDMiww
eDMwLDB4RjIsMHhCMiwweEI1LDB4MEQsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzOCwweDhGLDB4
QjcsMHhGRSwweDhGLDB4MjMsMHgzOSwweEMzLDB4MzAsMHhGOCwweEFBLDB4QkUsMHhFQiwKLSAg
ICAweDAyLDB4NDEsMHhFMywweDMwLDB4NTUsMHg3RiwweERGLDB4RkQsMHgyMywweDQxLDB4RTIs
MHgzMCwweDA5LDB4MkYsMHgzRiwweEFGLAotICAgIDB4MjQsMHg0MSwweEUyLDB4MzgsMHhFOCww
eEVDLDB4NzcsMHg0RCwweDAzLDB4MzksMHhDMiwweDMwLDB4QUMsMHhFNywweDZCLDB4N0YsCi0g
ICAgMHgyMywweDQxLDB4QzIsMHgzMCwweEFBLDB4MkYsMHgzRCwweEQ1LDB4NjQsMHg0OSwweEUz
LDB4MzgsMHgyRiwweEFBLDB4MDMsMHgwRiwKLSAgICAweEE1LDB4NTEsMHg0MywweDQxLDB4NUIs
MHg2MCwweEZFLDB4QUEsMHg2NCwweDQ5LDB4MDMsMHg0MSwweEZCLDB4REEsMHhBOCwweEJDLAot
ICAgIDB4NDQsMHg0OSwweEMyLDB4MzgsMHhBRiwweEZFLDB4RDQsMHhGQSwweDQ0LDB4NDEsMHhF
MiwweDM4LDB4MkIsMHgyRiwweEVGLDB4N0YsCi0gICAgMHg0NCwweDQxLDB4QzIsMHgzOCwweEZD
LDB4NUUsMHhGNywweEVGLDB4MDMsMHgzOSwweEMyLDB4MzgsMHhCQSwweEZGLDB4N0EsMHhFMiwK
LSAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4RUEsMHg3RiwweERELDB4RkYsMHgyMywweDQxLDB4
RTMsMHgzOCwweDg5LDB4NUQsMHg1RiwweENELAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg4
QSwweEZGLDB4RkYsMHhBQSwweDQzLDB4NDEsMHhFMiwweDM4LDB4MzcsMHgyNywweEVELDB4QUQs
Ci0gICAgMHg2NCwweDQ5LDB4MDIsMHg0MSwweEE4LDB4RUIsMHhFRiwweEY1LDB4QTQsMHg1MSww
eDIzLDB4NDEsMHg4QiwweDJFLDB4N0IsMHhERiwKLSAgICAweEM1LDB4NTEsMHg0MywweDQxLDB4
MkEsMHhBRiwweEVCLDB4NUQsMHhFNiwweDYxLDB4NjMsMHg0OSwweDBBLDB4QUEsMHhGRiwweEQ1
LAotICAgIDB4RTYsMHg2MSwweDQzLDB4NDksMHgyMCwweEJCLDB4REYsMHhERiwweEVELDB4OUIs
MHgwNiwweDYyLDB4MkYsMHgyOSwweDJELDB4MkQsCi0gICAgMHg4RiwweEFDLDB4RUQsMHg5Qiww
eDBCLDB4QUEsMHhBOSwweEFCLDB4RDAsMHhCNCwweDRFLDB4QUMsMHgyRSwweEFGLDB4MzcsMHhE
RCwKLSAgICAweEYxLDB4QkMsMHg5MCwweEFDLDB4MDAsMHgwMCwweEFCLDB4QkQsMHg1MiwweEM1
LDB4QjAsMHhCNCwweDJFLDB4OUYsMHg1NywweEZCLAotICAgIDB4NzMsMHhDRCwweEYxLDB4QjQs
MHg4MiwweDAyLDB4QUQsMHhCNSwweDczLDB4QzUsMHgzMiwweEM1LDB4RkQsMHhENiwweDdFLDB4
QTksCi0gICAgMHg1MiwweEM1LDB4QjAsMHhCNCwweDVBLDB4N0EsMHhFOCwweEE4LDB4RjEsMHhC
QywweDZGLDB4QUMsMHhGNywweEQ3LDB4RkUsMHg1OCwKLSAgICAweDkwLDB4QUMsMHg0RiwweEE0
LDB4MEYsMHhGQSwweDZBLDB4RjgsMHg4RiwweEFDLDB4MkUsMHhBNCwweEVBLDB4NkYsMHg2QSww
eDNBLAotICAgIDB4NkYsMHhBQywweDBFLDB4OUMsMHhGRiwweEZELDB4QUUsMHhBOCwweDRFLDB4
QTQsMHgwRCwweDlDLDB4MkEsMHg3MiwweEZBLDB4QTAsCi0gICAgMHg5MCwweEFDLDB4MkUsMHhB
NCwweDJFLDB4QTMsMHhBNSwweEJGLDB4OTAsMHhBQywweDBELDB4OUMsMHg5QSwweDgyLDB4MEEs
MHgwQSwKLSAgICAweDkwLDB4QUMsMHgyRSwweDlDLDB4NUYsMHhGQiwweEEyLDB4QTgsMHg2Riww
eEFDLDB4MEQsMHg5QywweEVGLDB4REUsMHhERSwweEJDLAotICAgIDB4NEUsMHhBNCwweDBFLDB4
OUMsMHhGRiwweEVFLDB4QTgsMHgwMCwweDRGLDB4QTQsMHhFRCwweDlCLDB4MkEsMHg4QSwweENF
LDB4NjAsCi0gICAgMHg0RSwweEE0LDB4MEUsMHg5QywweDdGLDB4NUYsMHhCOCwweDNGLDB4NkYs
MHhBQywweDBFLDB4OUMsMHgwOSwweDI5LDB4QTksMHhBRCwKLSAgICAweDIzLDB4NDksMHhFMiww
eDQwLDB4QTMsMHgzNSwweEZFLDB4RjYsMHg0MywweDUxLDB4QzIsMHg0MCwweEZBLDB4REUsMHhB
RCwweDJCLAotICAgIDB4NDMsMHg1MSwweEUyLDB4NDAsMHhBRCwweDNGLDB4MEIsMHgwMiwweDY0
LDB4NTksMHgyMywweDUxLDB4QkQsMHg4QSwweDJBLDB4QUIsCi0gICAgMHg4NCwweDU5LDB4MDIs
MHg0OSwweEZFLDB4RjYsMHhGQywweEVBLDB4NjQsMHg1MSwweDIyLDB4NTEsMHhCRiwweEI3LDB4
MTUsMHhGNywKLSAgICAweDYzLDB4NTksMHgyMywweDUxLDB4RDAsMHhCOCwweERBLDB4RkYsMHg0
MywweDUxLDB4MjMsMHg0OSwweDUzLDB4NjMsMHg2OCwweDdFLAotICAgIDB4MjMsMHg0OSwweDAz
LDB4NDksMHhCOCwweEFGLDB4MzEsMHhBRiwweDIzLDB4NDksMHgwMiwweDQ5LDB4RDcsMHg5Nyww
eDI0LDB4OEMsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0OCwweDkwLDB4QTIsMHhBOCwweEFBLDB4
MjMsMHg0OSwweEUyLDB4NDAsMHg3NiwweEJBLDB4QTIsMHgwQSwKLSAgICAweDIzLDB4NDksMHhF
MiwweDQwLDB4RjMsMHhGMiwweEYwLDB4QjgsMHg0NCwweDUxLDB4RTIsMHg0MCwweEQ3LDB4RkYs
MHhDRiwweEU4LAotICAgIDB4QTQsMHg1OSwweDAzLDB4NDksMHg1NSwweDU1LDB4RDUsMHgxNSww
eEFDLDB4QTMsMHg0MywweDUxLDB4QTUsMHgyRiwweDgzLDB4MEEsCi0gICAgMHg0OSwweDkzLDB4
MDgsMHg4QiwweDVCLDB4NUUsMHg1RSwweDU2LDB4MDgsMHg4QiwweEM4LDB4ODIsMHhEOCwweERB
LDB4MDIsMHgwMywKLSAgICAweEU4LDB4OEEsMHhDOCwweDgyLDB4RkUsMHhGRSwweDQwLDB4NkIs
MHhDNywweDgyLDB4QTcsMHg4MiwweEMwLDB4ODgsMHhDOSwweEVFLAotICAgIDB4QzcsMHg4Miww
eEE3LDB4N0EsMHgwMCwweEVDLDB4RjksMHgxQSwweEM3LDB4ODIsMHg4NywweDdBLDB4MUIsMHg4
OCwweEEwLDB4MDAsCi0gICAgMHhDNywweDgyLDB4ODYsMHg3QSwweEVGLDB4OUUsMHhEQSwweERD
LDB4RTcsMHg4MiwweDg2LDB4N0EsMHhGNywweDc3LDB4NTQsMHg1RiwKLSAgICAweEE3LDB4ODIs
MHg0NSwweDdBLDB4RTgsMHhGQiwweDdGLDB4RkUsMHhFOCwweDhBLDB4NDUsMHg3MiwweDU1LDB4
RjUsMHhCRiwweDJGLAotICAgIDB4QUIsMHhBMywweDY2LDB4N0EsMHhENSwweEI1LDB4MkIsMHgw
MiwweENCLDB4QTMsMHgyOSwweDkzLDB4QTUsMHhBMywweDAwLDB4MDAsCi0gICAgMHhDQiwweEEz
LDB4NkEsMHg5QiwweDJCLDB4MEEsMHgwMiwweDc4LDB4Q0IsMHhBMywweEE3LDB4N0EsMHg4MCww
eEEwLDB4RTgsMHg1RSwKLSAgICAweDQ5LDB4OTMsMHgwNiwweDZBLDB4RTAsMHg3RSwweDVGLDB4
NTcsMHgyNywweDcyLDB4ODQsMHg1OSwweEE4LDB4RUUsMHhGRSwweDVFLAotICAgIDB4QzUsMHg2
MSwweDY0LDB4NTksMHgyOCwweEU4LDB4QUIsMHhBNywweDA2LDB4NkEsMHhBNCwweDU5LDB4RUYs
MHhCRCwweDlELDB4MzUsCi0gICAgMHgwNiwweDZBLDB4QzUsMHg2MSwweDBCLDB4NkEsMHg3Qiww
eDU4LDB4MDYsMHg2QSwweEE1LDB4NTksMHhDOCwweEVBLDB4NkEsMHg1QywKLSAgICAweEE1LDB4
NTksMHg0NCwweDQ5LDB4NDgsMHhGQywweEVDLDB4N0MsMHg2NCwweDUxLDB4NDQsMHg0OSwweEFE
LDB4RjIsMHhEMCwweEY1LAotICAgIDB4NjQsMHg0OSwweDIzLDB4NDksMHhGQSwweDVDLDB4Rjcs
MHhBRSwweDY0LDB4NDksMHhFMiwweDQwLDB4QUEsMHhBQiwweEFFLDB4RkMsCi0gICAgMHg0Myww
eDQ5LDB4MDMsMHg0MSwweEFBLDB4QUEsMHhFQSwweDdBLDB4NDMsMHg0OSwweDAyLDB4NDEsMHgw
QSwweENCLDB4RUIsMHhGQSwKLSAgICAweDQzLDB4NDksMHgwMywweDQxLDB4NUEsMHhFRiwweEZG
LDB4N0YsMHgyNCwweDQ5LDB4RTMsMHg0MCwweDhFLDB4RUYsMHhBRiwweEFGLAotICAgIDB4MjMs
MHg0OSwweEUyLDB4NDAsMHg5RiwweEFFLDB4M0EsMHhGRSwweDQzLDB4NDEsMHhFMywweDQwLDB4
MUYsMHhCNywweEJGLDB4RUYsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEMyLDB4RTIsMHhG
QiwweEZBLDB4NDQsMHg0OSwweEUyLDB4MzgsMHhGOCwweEZDLDB4NUUsMHg3NSwKLSAgICAweDAz
LDB4MzksMHhBMiwweDMwLDB4RjgsMHhCOCwweERCLDB4RkQsMHhDMiwweDMwLDB4QTIsMHgzMCww
eDNFLDB4M0UsMHgyQywweDhBLAotICAgIDB4RTMsMHgzMCwweEMyLDB4MzAsMHhFQiwweERGLDB4
ODksMHg4MywweEMyLDB4MjgsMHg2MSwweDIwLDB4RkUsMHhEOCwweEQ4LDB4RjgsCi0gICAgMHg4
MSwweDIwLDB4NjEsMHgxOCwweDAwLDB4MjgsMHgyOCwweEEwLDB4ODEsMHgyMCwweDYxLDB4MTgs
MHgyOCwweEE4LDB4QUEsMHhDQiwKLSAgICAweDgxLDB4MjAsMHg2MSwweDE4LDB4ODAsMHhFOCww
eEZGLDB4NTUsMHg4MiwweDIwLDB4NjEsMHgxOCwweEVCLDB4MkIsMHg4OSwweDM1LAotICAgIDB4
ODIsMHgyMCwweDYxLDB4MTgsMHgwQSwweDBGLDB4MjgsMHgwOCwweEEyLDB4MjgsMHg4MiwweDE4
LDB4MjIsMHgwMSwweDAyLDB4ODIsCi0gICAgMHhBMiwweDI4LDB4ODIsMHgyMCwweDBBLDB4OEIs
MHhBRiwweEZBLDB4RTMsMHgzMCwweDgxLDB4MjgsMHgyOCwweEEyLDB4RkYsMHg5NywKLSAgICAw
eDAzLDB4MzEsMHhBMiwweDI4LDB4ODAsMHg4RiwweDhELDB4QUYsMHgyNCwweDM5LDB4QzIsMHgz
MCwweDM1LDB4QjcsMHhCNSwweDU1LAotICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhGMCwweEYw
LDB4N0UsMHhEQSwweEUyLDB4MzgsMHhBMiwweDMwLDB4RjIsMHhFMiwweEVCLDB4NjAsCi0gICAg
MHgwNCwweDM5LDB4QTIsMHgyOCwweEZFLDB4RUEsMHg4RiwweEI1LDB4MDMsMHgzOSwweEEyLDB4
MjgsMHhGRiwweEVGLDB4QTIsMHhBMiwKLSAgICAweDAyLDB4MzEsMHg4MCwweDI4LDB4N0YsMHg3
RSwweEI4LDB4QTgsMHhDMiwweDMwLDB4QTEsMHgyOCwweDlELDB4RDUsMHg3RiwweEU4LAotICAg
IDB4QzIsMHgyOCwweDgxLDB4MjAsMHhGOCwweEVFLDB4N0EsMHhFMCwweEUzLDB4MjgsMHg4MSww
eDI4LDB4RkYsMHhGRiwweEI1LDB4RjUsCi0gICAgMHhDMiwweDI4LDB4ODIsMHgyMCwweEUwLDB4
NjgsMHg2QSwweEFFLDB4QzIsMHgzMCwweEEyLDB4MjgsMHhENSwweEI1LDB4RTUsMHhBOSwKLSAg
ICAweEMyLDB4MzAsMHhBMiwweDI4LDB4NzUsMHg1NSwweEJELDB4RkUsMHhFMywweDMwLDB4ODEs
MHgyOCwweEZGLDB4RjcsMHhCRiwweDhCLAotICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHg3NSww
eEY0LDB4RTAsMHg1RiwweEMyLDB4MjgsMHg4MSwweDIwLDB4RjYsMHg4RiwweDgyLDB4RUEsCi0g
ICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweDJCLDB4QUEsMHg4MSwweERCLDB4RTMsMHgzMCwweEEy
LDB4MjgsMHhGQiwweDJGLDB4M0EsMHg1NiwKLSAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4RUYs
MHhGNSwweDM3LDB4QUYsMHgwMywweDM5LDB4QzIsMHgzMCwweDU1LDB4NjUsMHhDQiwweEFGLAot
ICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHhCQiwweEY1LDB4RUYsMHhGOCwweEUyLDB4MzAsMHhB
MiwweDMwLDB4RkYsMHhBQSwweEEzLDB4QTgsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEU5
LDB4RjksMHg3RiwweERELDB4NDQsMHg0MSwweEMyLDB4MzAsMHhCNSwweDNELDB4MkYsMHhCRiwK
LSAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4NkYsMHhBQSwweDhFLDB4MDksMHg0NCwweDQxLDB4
RTMsMHgzOCwweEZCLDB4NkIsMHhFQSwweEUyLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhB
QiwweDg3LDB4M0YsMHhCQiwweDIzLDB4MzksMHgwMiwweDM5LDB4RTksMHg2OSwweDU5LDB4NDIs
Ci0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDY4LDB4QjgsMHgwRSwweEFDLDB4MDMsMHgzOSww
eEMyLDB4MzAsMHhERiwweEJFLDB4OUMsMHhDQywKLSAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4
N0QsMHhGNywweEVCLDB4RjMsMHg2NCwweDQ5LDB4QzIsMHgzMCwweDBELDB4M0QsMHgyRCwweDJG
LAotICAgIDB4QzUsMHg1OSwweDY0LDB4NDksMHg3MywweEU4LDB4RUIsMHg4RSwweDg1LDB4NTEs
MHgwMywweDQxLDB4REEsMHg3QSwweEQwLDB4QTgsCi0gICAgMHgyNCwweDQxLDB4QzIsMHgzOCww
eEEwLDB4ODIsMHg2MCwweEVBLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFMCwweEUyLDB4QTksMHgy
NSwKLSAgICAweDAzLDB4NDEsMHhFMiwweDMwLDB4MzcsMHg4RiwweEY5LDB4RjUsMHg0NCwweDQx
LDB4RTMsMHgzOCwweEU1LDB4QTksMHgyOSwweDBCLAotICAgIDB4MjMsMHgzOSwweEUyLDB4Mzgs
MHhBQSwweEVBLDB4NzgsMHhFOCwweDIzLDB4MzksMHhFMiwweDM4LDB4OTUsMHg5NywweEJGLDB4
RkIsCi0gICAgMHgyNCwweDQxLDB4QzIsMHgzMCwweEI3LDB4QkUsMHhGRiwweDJCLDB4NjQsMHg0
OSwweEUzLDB4MzgsMHhFNSwweEVGLDB4QUIsMHgyQSwKLSAgICAweDg1LDB4NDksMHgyMywweDQx
LDB4RkYsMHhGNSwweDJCLDB4MEEsMHg4NCwweDQ5LDB4NDQsMHg0OSwweDVGLDB4OEIsMHgwMSww
eDhBLAotICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHhFMiwweDY4LDB4RTIsMHgwOCwweEU2LDB4
NTksMHg0NCwweDQ5LDB4RkQsMHg3RiwweEVGLDB4MEIsCi0gICAgMHhDNSwweDU5LDB4NjQsMHg0
OSwweDk2LDB4RjUsMHhBMiwweDBDLDB4QUMsMHg5MywweEE0LDB4NTEsMHgyRCwweDNELDB4QUQs
MHhBRCwKLSAgICAweDZGLDB4QUMsMHhDRCwweDkzLDB4OEEsMHg4OSwweEE5LDB4OEQsMHg2Riww
eEFDLDB4MkUsMHhBNCwweDhBLDB4M0EsMHgyNywweEE1LAotICAgIDB4QjAsMHhCNCwweDJFLDB4
QTQsMHgwQSwweEFBLDB4QkYsMHg1RiwweDMxLDB4QkQsMHg0RiwweEE0LDB4MjIsMHgyQSwweEFE
LDB4RjUsCi0gICAgMHg1MiwweEM1LDB4RDAsMHhCNCwweEFGLDB4QUEsMHhBMiwweDg5LDB4MzIs
MHhDNSwweEQwLDB4QjQsMHgwQSwweDAwLDB4NkUsMHhGOCwKLSAgICAweDUyLDB4QzUsMHhEMCww
eEI0LDB4RTgsMHhBQSwweEZGLDB4N0YsMHhEMCwweEI0LDB4NkYsMHhBQywweDc4LDB4RjgsMHhF
OCwweEFFLAotICAgIDB4QjAsMHhBQywweDZGLDB4QUMsMHg3RiwweEVCLDB4QkUsMHhBQSwweEIw
LDB4QjQsMHg0RSwweEE0LDB4RjUsMHhGRSwweEIyLDB4RTAsCi0gICAgMHg4RiwweEFDLDB4NEYs
MHhBNCwweDdBLDB4N0EsMHhCRCwweERELDB4NkYsMHhBQywweDJFLDB4QTQsMHg5RSwweDJFLDB4
MjgsMHgyQSwKLSAgICAweDkwLDB4QUMsMHg0RiwweEE0LDB4NTUsMHgwQSwweDBFLDB4QUMsMHg4
RiwweEFDLDB4NEYsMHhBNCwweEJGLDB4RkUsMHhFOSwweEFGLAotICAgIDB4OEYsMHhBQywweDRG
LDB4QTQsMHhEQiwweEVFLDB4RkUsMHhBQSwweDhGLDB4QUMsMHgyRSwweEE0LDB4REEsMHhGMiww
eDJBLDB4Q0IsCi0gICAgMHg5MCwweEFDLDB4NEUsMHhBNCwweEZGLDB4NUEsMHhEMiwweEI3LDB4
NkYsMHhBQywweDJFLDB4QTQsMHg1QywweEVFLDB4QzIsMHhBMywKLSAgICAweDhGLDB4QjQsMHgw
RSwweEE0LDB4RjUsMHg2QiwweEVCLDB4OEEsMHg2RiwweEFDLDB4MkUsMHhBNCwweEFELDB4Rjks
MHg5QSwweDgwLAotICAgIDB4MDIsMHg0OSwweEUyLDB4NDAsMHhGNiwweERDLDB4RjUsMHgzNSww
eDg0LDB4NTksMHgwMywweDQ5LDB4QUQsMHgzNSwweEI1LDB4QUQsCi0gICAgMHg2MywweDU5LDB4
NDMsMHg1MSwweDZGLDB4QzIsMHhFOSwweDc3LDB4NjQsMHg1OSwweDIzLDB4NTEsMHhGMiwweEUz
LDB4RkYsMHhGRSwKLSAgICAweDg0LDB4NTksMHgyMiwweDUxLDB4NTYsMHhENywweEY3LDB4Rjcs
MHg2MywweDU5LDB4MDIsMHg0OSwweDdBLDB4M0UsMHhGQSwweEY4LAotICAgIDB4NDMsMHg1MSww
eDAyLDB4NDksMHg4QSwweEE4LDB4M0EsMHg3RSwweDQzLDB4NDksMHgwMiwweDQ5LDB4N0IsMHhG
OCwweEQ4LDB4OTUsCi0gICAgMHgyMywweDQ5LDB4MDIsMHg0OSwweDM2LDB4MEYsMHgwNywweDFG
LDB4NDMsMHg1MSwweDAzLDB4NDksMHg2RiwweDZBLDB4NUUsMHg1NSwKLSAgICAweDIzLDB4NDks
MHhFMiwweDQwLDB4RkUsMHhBQiwweDBBLDB4MkUsMHgyMywweDQ5LDB4QzEsMHg0MCwweDhFLDB4
QjYsMHg4RSwweEE4LAotICAgIDB4NDMsMHg0OSwweEUyLDB4NDAsMHgzRSwweERGLDB4REYsMHhG
RiwweDIzLDB4NDksMHhFMiwweDQwLDB4RTAsMHhFMCwweEUyLDB4RjIsCi0gICAgMHhBNywweDdB
LDB4MDIsMHg0MSwweDk1LDB4QjUsMHgyNSwweDI1LDB4MEMsMHhBQywweDJBLDB4OEIsMHg4OSww
eDgzLDB4MDIsMHgwMiwKLSAgICAweEFCLDB4QTMsMHgwOCwweDhCLDB4NUYsMHhFOCwweEY4LDB4
QkEsMHg2OSwweDkzLDB4RTcsMHg4QSwweDVGLDB4RkUsMHg2OCwweEEyLAotICAgIDB4MDgsMHg4
QiwweEM4LDB4OEEsMHhFRiwweEY4LDB4RTAsMHhCMCwweEU4LDB4OEEsMHhBNywweDgyLDB4QkYs
MHhBRSwweEZDLDB4REEsCi0gICAgMHhFNywweDgyLDB4ODYsMHg3QSwweDZCLDB4RUEsMHgyQSww
eEFGLDB4RTgsMHg4MiwweEE3LDB4N0EsMHg3NywweDU3LDB4RjgsMHg2RSwKLSAgICAweEM3LDB4
ODIsMHg4NiwweDdBLDB4NkUsMHg3QSwweEY4LDB4NTgsMHhBNiwweDgyLDB4NjYsMHg3QSwweDky
LDB4REEsMHhFNSwweEVCLAotICAgIDB4MjksMHg5MywweDg2LDB4N0EsMHg1NSwweDU1LDB4RjUs
MHgwRiwweEFCLDB4QTMsMHg4NywweDgyLDB4QTUsMHgyRiwweDBBLDB4MDIsCi0gICAgMHhDQiww
eEEzLDB4OEEsMHg5QiwweEE5LDB4MEYsMHgyOCwweDAwLDB4RUMsMHhBQiwweDhBLDB4OUIsMHhF
OCwweEI4LDB4RkUsMHg1RSwKLSAgICAweDhCLDB4OUIsMHgyNiwweDcyLDB4ODAsMHhFMCwweDc4
LDB4NTYsMHhDOCwweDgyLDB4MjYsMHg2QSwweDc4LDB4NTYsMHg1NSwweDU1LAotICAgIDB4NDcs
MHg3MiwweDA1LDB4NkEsMHg3RSwweEI3LDB4NzUsMHg1NywweEU1LDB4NjksMHg4NCwweDU5LDB4
N0EsMHg3OCwweDdDLDB4RDYsCi0gICAgMHhDNSwweDYxLDB4ODQsMHg1OSwweDJGLDB4MkQsMHgy
QSwweEFGLDB4MDUsMHg2QSwweEE0LDB4NTksMHgyQiwweEFGLDB4MkYsMHgyRCwKLSAgICAweDI2
LDB4NkEsMHhDNSwweDYxLDB4NUUsMHhEQywweDdFLDB4NUUsMHgwNiwweDZBLDB4NjQsMHg1MSww
eDc4LDB4N0IsMHg1RiwweDVGLAotICAgIDB4ODUsMHg1OSwweDIzLDB4NDEsMHhGMCwweEZBLDB4
N0UsMHg1RiwweDY0LDB4NDksMHgyMywweDQ5LDB4QTksMHgxNSwweEI1LDB4MkUsCi0gICAgMHg2
NCwweDQ5LDB4MjMsMHg0MSwweEI3LDB4QjYsMHgzQSwweDgyLDB4NjQsMHg0OSwweDAzLDB4NDEs
MHhGQywweDYwLDB4QUIsMHhBQSwKLSAgICAweDQzLDB4NDksMHgwMywweDQxLDB4NUIsMHg3RCww
eDcyLDB4QUEsMHhBNSwweDUxLDB4MDIsMHg0MSwweDdGLDB4N0YsMHhCRiwweDBCLAotICAgIDB4
QzUsMHg2MSwweEMyLDB4MzgsMHhGRiwweEZGLDB4OEEsMHgwMCwweEU2LDB4NjEsMHhFMiwweDQw
LDB4RDUsMHhGRiwweEFCLDB4MDAsCi0gICAgMHhFNSwweDU5LDB4MjMsMHg0MSwweDU1LDB4REYs
MHhBQSwweDAwLDB4QzYsMHg1OSwweDAzLDB4NDEsMHg1NSwweEZGLDB4QTAsMHg4MCwKLSAgICAw
eDY0LDB4NDksMHgwMywweDQxLDB4N0EsMHhGRSwweEJDLDB4RkUsMHgyMywweDQxLDB4QzIsMHgz
OCwweEZCLDB4OUEsMHhGRSwweEYwLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhGRiwweDdD
LDB4NzQsMHg1NiwweEUzLDB4MzAsMHhBMiwweDI4LDB4QjksMHgyQiwweEI5LDB4RkQsCi0gICAg
MHhFMywweDMwLDB4QTIsMHgyOCwweEE4LDB4RkEsMHhGMCwweDc5LDB4QzIsMHgyOCwweDgxLDB4
MjAsMHg1QSwweDdFLDB4N0EsMHg1RiwKLSAgICAweEEyLDB4MjAsMHg2MSwweDIwLDB4RkYsMHhG
QSwweEVBLDB4ODMsMHhBMiwweDIwLDB4NjEsMHgxOCwweENCLDB4RUEsMHg3RiwweEVFLAotICAg
IDB4NjEsMHgxOCwweDQxLDB4MTgsMHhBQiwweDJGLDB4MEYsMHgwOCwweEEyLDB4MjAsMHg0MSww
eDE4LDB4RkYsMHhERiwweEZGLDB4MkUsCi0gICAgMHhDMiwweDI4LDB4ODIsMHgyMCwweEY5LDB4
QTksMHhBQiwweDhBLDB4QzIsMHgyOCwweDgxLDB4MjAsMHhFQiwweEJBLDB4RTgsMHhFRSwKLSAg
ICAweEEyLDB4MjgsMHg4MiwweDIwLDB4QkMsMHg5NCwweDNELDB4M0YsMHhBMiwweDI4LDB4ODEs
MHgyOCwweDBFLDB4ODgsMHhCOCwweDgwLAotICAgIDB4RTMsMHgzMCwweDgxLDB4MjgsMHg4Qiww
eEFCLDB4N0YsMHhGRiwweEMyLDB4MzAsMHg4MiwweDI4LDB4M0EsMHhBRiwweDhGLDB4MEYsCi0g
ICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweERFLDB4OUQsMHgyRCwweDhCLDB4RTMsMHgzMCwweEEy
LDB4MzAsMHhGMCwweEZBLDB4RkUsMHhERiwKLSAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4QUQs
MHhBQSwweEJBLDB4RkUsMHgwMywweDM5LDB4QzIsMHgzMCwweEFBLDB4ODMsMHgwMywweEExLAot
ICAgIDB4RTIsMHgzMCwweEMyLDB4MzAsMHhGOCwweEUwLDB4MDAsMHgwMCwweDAzLDB4MzksMHhB
MSwweDI4LDB4RkYsMHhERiwweEQ3LDB4NzIsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweDdC
LDB4RkYsMHhBQiwweDJCLDB4MDQsMHgzOSwweEEyLDB4MjgsMHg1NSwweDU3LDB4N0UsMHhGOCwK
LSAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4RkQsMHgzRCwweDlBLDB4OUEsMHhFMywweDMwLDB4
QTIsMHgyOCwweEU5LDB4N0YsMHhGQSwweDY4LAotICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhB
QSwweEFGLDB4MkQsMHhBRSwweEUyLDB4MzAsMHhBMiwweDI4LDB4OEIsMHhFRiwweEVFLDB4RkYs
Ci0gICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweEQ3LDB4QTUsMHhBNiwweEY3LDB4RTMsMHgzMCww
eDgxLDB4MjgsMHgyQiwweDdBLDB4N0YsMHhGRiwKLSAgICAweEMyLDB4MjgsMHg4MSwweDI4LDB4
M0IsMHhBOSwweEZELDB4QUQsMHhDMywweDMwLDB4ODIsMHgyOCwweEI4LDB4QUUsMHhGQSwweEZF
LAotICAgIDB4QzIsMHgyOCwweDgxLDB4MjgsMHgwMCwweDIyLDB4QUYsMHgwRiwweEUyLDB4MzAs
MHhDMiwweDI4LDB4QUYsMHg5RiwweDI3LDB4MjUsCi0gICAgMHhFMiwweDMwLDB4QzIsMHgzMCww
eEQ0LDB4RjAsMHhBMiwweEZELDB4RTIsMHgzMCwweEEyLDB4MzAsMHhDOCwweDgwLDB4ODAsMHhB
MiwKLSAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4RUYsMHhGRCwweEFBLDB4RTgsMHgwMywweDM5
LDB4QzIsMHgzMCwweEE3LDB4RDcsMHhFRiwweEVGLAotICAgIDB4MjQsMHgzOSwweEMzLDB4MzAs
MHhBQiwweDJGLDB4M0IsMHhGRiwweDQ0LDB4NDEsMHgwMywweDM5LDB4RUEsMHhFQSwweEVCLDB4
N0QsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEJBLDB4M0UsMHhFNiwweDU0LDB4MjMsMHgz
OSwweEUyLDB4MzAsMHhBMCwweEVBLDB4QjUsMHhGNywKLSAgICAweDAyLDB4MzksMHhDMiwweDMw
LDB4QkUsMHg5RSwweEJCLDB4RkEsMHgwMywweDM5LDB4QzIsMHgzMCwweDA4LDB4QTIsMHhEOCww
eERBLAotICAgIDB4RTIsMHgzOCwweDAzLDB4MzEsMHgwOCwweDgwLDB4ODAsMHg2QSwweDg1LDB4
NTEsMHgwMywweDM5LDB4MjUsMHgyNSwweEJELDB4QkQsCi0gICAgMHhBNSwweDUxLDB4NDQsMHg0
MSwweDAyLDB4Q0EsMHg3QiwweDVGLDB4ODUsMHg0OSwweDI0LDB4NDEsMHhFOCwweEUyLDB4RUEs
MHhERiwKLSAgICAweDQ0LDB4NDksMHhDMywweDM4LDB4RUUsMHg3QSwweDdBLDB4RUMsMHgwMyww
eDM5LDB4QzIsMHgzMCwweDI0LDB4MEYsMHgyRiwweEE5LAotICAgIDB4MDMsMHgzOSwweEMyLDB4
MzAsMHgzQywweEU4LDB4RUYsMHhBRiwweDIzLDB4MzksMHhFMywweDM4LDB4MDIsMHgzRCwweEZC
LDB4RTYsCi0gICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEM4LDB4RkEsMHhGNywweEY1LDB4MDMs
MHgzOSwweEMyLDB4MzAsMHhBMiwweDJDLDB4RjcsMHhGRiwKLSAgICAweDI0LDB4NDEsMHgwMyww
eDM5LDB4QjcsMHhBMywweDBCLDB4QTUsMHg2NCwweDQ5LDB4MjQsMHg0MSwweEJELDB4RjUsMHhB
RCwweDI5LAotICAgIDB4QTUsMHg1MSwweDIzLDB4NDEsMHhBOSwweDBCLDB4MDMsMHgwMCwweEU2
LDB4NTksMHg4NSwweDUxLDB4NTUsMHhGRCwweEFELDB4M0YsCi0gICAgMHhFNiwweDU5LDB4NDMs
MHg0OSwweEQ3LDB4QkEsMHhCOCwweEEwLDB4RTYsMHg1OSwweEE1LDB4NTEsMHg4OSwweDBBLDB4
ODIsMHhBQiwKLSAgICAweDA2LDB4NjIsMHhBNSwweDQ5LDB4QkYsMHhCMiwweEFGLDB4RkUsMHg0
QiwweDgzLDB4RTUsMHg1OSwweDJELDB4MkQsMHgyRCwweDJELAotICAgIDB4MkUsMHhBNCwweDhD
LDB4OEIsMHgyQiwweEFELDB4QUYsMHhBRCwweDRGLDB4QTQsMHhFRCwweDlCLDB4MEUsMHhBNyww
eEJELDB4RjUsCi0gICAgMHg2RiwweEFDLDB4MEUsMHhBNCwweDBCLDB4QUYsMHg3RiwweERGLDB4
OEYsMHhBQywweDJFLDB4QTQsMHgyNywweEFBLDB4QUIsMHhGRCwKLSAgICAweEYxLDB4QkMsMHgw
RSwweEE0LDB4MEEsMHhBRiwweEJGLDB4RDcsMHhGMSwweEJDLDB4QjAsMHhCNCwweEE4LDB4QkIs
MHhCQiwweDk1LAotICAgIDB4MTEsMHhCRCwweEIwLDB4QjQsMHgwMiwweDBBLDB4MkEsMHhCRCww
eDMxLDB4QkQsMHhCMCwweEI0LDB4NTcsMHg3QywweEZBLDB4QUEsCi0gICAgMHhGMCwweEJDLDB4
OEYsMHhBQywweERGLDB4REUsMHhCRSwweEZBLDB4QjAsMHhCNCwweDZGLDB4QUMsMHg3QiwweEFB
LDB4RUYsMHhCQywKLSAgICAweDkwLDB4QUMsMHg0RiwweEE0LDB4RDcsMHhGQSwweDkwLDB4Qjgs
MHg4RiwweEFDLDB4MkUsMHhBNCwweDhGLDB4OUEsMHg4MiwweEEyLAotICAgIDB4QUYsMHhCNCww
eDRGLDB4QTQsMHhCRCwweEZGLDB4RkYsMHg3MywweDhGLDB4QUMsMHg0RiwweEE0LDB4QUIsMHhC
RiwweEY3LDB4NzUsCi0gICAgMHg4RiwweEFDLDB4MkUsMHhBNCwweDBBLDB4MkEsMHgyQiwweEU5
LDB4OTAsMHhBQywweDRFLDB4QTQsMHhFNywweEVFLDB4RTIsMHhBQiwKLSAgICAweDhGLDB4QUMs
MHg0RSwweEE0LDB4RTIsMHhBQSwweEFCLDB4RjcsMHg2RiwweEFDLDB4MkUsMHhBNCwweEJCLDB4
MEMsMHhBMCwweEJBLAotICAgIDB4OEYsMHhBQywweDJFLDB4QTQsMHgyQywweEZGLDB4NkYsMHhG
QiwweDZGLDB4QUMsMHgwRCwweDlDLDB4MjgsMHhCQiwweDlGLDB4RkYsCi0gICAgMHg2NCwweDU5
LDB4RTIsMHg0MCwweEY1LDB4QUIsMHgyQSwweEFBLDB4NjQsMHg1MSwweDIzLDB4NTEsMHhCRCww
eEI5LDB4MkYsMHhFMywKLSAgICAweDg0LDB4NTksMHg0MywweDUxLDB4N0YsMHhEQywweEVFLDB4
QkYsMHg4NCwweDU5LDB4NDMsMHg1MSwweDdELDB4NzksMHhBQiwweEVFLAotICAgIDB4NjQsMHg1
OSwweDIyLDB4NTEsMHhGNSwweDU2LDB4QkMsMHhFOCwweDQzLDB4NTEsMHgwMiwweDQ5LDB4Qjgs
MHhEQSwweEU4LDB4RkEsCi0gICAgMHg2NCwweDUxLDB4MDIsMHg0OSwweEZGLDB4QkYsMHg3Riww
eEYyLDB4MjMsMHg0OSwweEUyLDB4NDAsMHgyOSwweDNFLDB4REEsMHgwMiwKLSAgICAweDQzLDB4
NTEsMHgwMywweDQ5LDB4RjYsMHhGRiwweEJBLDB4QUYsMHgyMywweDQ5LDB4MDIsMHg0MSwweDgw
LDB4NDIsMHhBMCwweDdBLAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHgzQiwweDIzLDB4QUYs
MHg5RiwweDIzLDB4NDksMHhFMiwweDQwLDB4QTAsMHgzRSwweEJFLDB4MkUsCi0gICAgMHgyMyww
eDQ5LDB4MDIsMHg0MSwweDFCLDB4RjYsMHhENiwweEZDLDB4NDQsMHg0OSwweDAyLDB4NDksMHg1
RiwweDU3LDB4OTUsMHg5NSwKLSAgICAweDhBLDB4OUIsMHg0MywweDUxLDB4QjUsMHgyRCwweDJE
LDB4MkQsMHgwQywweEFDLDB4OEEsMHg5MywweDgyLDB4QUEsMHg2MiwweEUyLAotICAgIDB4QUIs
MHg5QiwweDQ5LDB4OTMsMHhGQywweEY4LDB4RkEsMHhERCwweDY5LDB4OUIsMHgwOCwweDhCLDB4
RTAsMHg3OCwweEZDLDB4NzgsCi0gICAgMHgwOCwweDhCLDB4RTgsMHg4QSwweDgwLDB4NzcsMHhG
RSwweDlDLDB4MDgsMHg4QiwweEE3LDB4ODIsMHhCRiwweDZGLDB4RUYsMHhCMiwKLSAgICAweEU4
LDB4ODIsMHhBNywweDgyLDB4QkUsMHg3QiwweEFFLDB4QUIsMHhDNywweDgyLDB4ODYsMHg3QSww
eEVFLDB4RUEsMHg4MywweENBLAotICAgIDB4QzcsMHg4MiwweDg3LDB4N0EsMHhCQSwweEVGLDB4
QkYsMHhBQSwweDhBLDB4OUIsMHg4NywweDdBLDB4NUQsMHhCNywweDJGLDB4MEIsCi0gICAgMHhD
QiwweEEzLDB4MDgsMHg4QiwweDI1LDB4MDksMHgwMiwweDAwLDB4RUEsMHhBQiwweEFCLDB4QTMs
MHg2NSwweEVGLDB4RkIsMHhGQSwKLSAgICAweEVDLDB4QUIsMHhDOCwweDgyLDB4MjAsMHhBOCww
eEYwLDB4N0UsMHg4QSwweDlCLDB4NDYsMHg3MiwweEUwLDB4NzgsMHg1RSwweDU1LAotICAgIDB4
NjcsMHg3QSwweDA1LDB4NkEsMHhEQywweEZGLDB4N0YsMHg3NywweDY3LDB4NzIsMHgwNiwweDZB
LDB4RkQsMHhBRCwweEFELDB4OEIsCi0gICAgMHgyNiwweDZBLDB4ODQsMHg1MSwweDgwLDB4RTgs
MHg0MCwweDYwLDB4QzUsMHg1OSwweDQzLDB4NTEsMHhEQywweEZGLDB4QkYsMHgyRiwKLSAgICAw
eEU1LDB4NjEsMHg4NCwweDUxLDB4RUQsMHhBQiwweEFBLDB4QUEsMHgwNiwweDYyLDB4QzUsMHg1
OSwweEE3LDB4RkIsMHg3MiwweDdCLAotICAgIDB4RTUsMHg2MSwweDQ0LDB4NTEsMHhBOCwweDY4
LDB4NzgsMHg3NywweEE1LDB4NTksMHgyMywweDQ5LDB4Q0EsMHhFQSwweEVELDB4RkUsCi0gICAg
MHg2NCwweDQ5LDB4MjQsMHg0OSwweEQ2LDB4RDYsMHhEMiwweEY1LDB4ODQsMHg1MSwweDQ0LDB4
NDksMHg5OSwweEI1LDB4RjUsMHhCNSwKLSAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4RkMsMHhG
RiwweEZFLDB4RkEsMHg2NCwweDUxLDB4MjMsMHg0MSwweEZFLDB4RjYsMHhGRSwweDMzLAotICAg
IDB4MjYsMHg2QSwweDQzLDB4NDksMHhENSwweEJELDB4MkIsMHgwQSwweDI2LDB4NkEsMHhBNSww
eDUxLDB4QjUsMHhFRSwweEUwLDB4QTAsCi0gICAgMHhFNiwweDYxLDB4NDMsMHg1MSwweDAwLDB4
ODIsMHhFMCwweEZBLDB4MDYsMHg2MiwweDQzLDB4NDksMHg4QSwweDJBLDB4QkYsMHg1NSwKLSAg
ICAweEM1LDB4NTksMHg2MywweDQ5LDB4MDAsMHhBOCwweEVBLDB4NUQsMHhDNSwweDU5LDB4MjIs
MHg0MSwweEUwLDB4RkEsMHhGRSwweDdGLAotICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHgwMCww
eEFDLDB4NUUsMHg1RSwweDAzLDB4MzksMHhDMiwweDM4LDB4QzAsMHhBQSwweEZDLDB4QkMsCi0g
ICAgMHhFMiwweDMwLDB4ODEsMHgyOCwweEZFLDB4NzgsMHhGQSwweEVBLDB4QzIsMHgzMCwweDYx
LDB4MjAsMHhBQSwweEVBLDB4RkEsMHg3QSwKLSAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4RTMs
MHg4RCwweDdELDB4N0QsMHhBMiwweDI4LDB4NjEsMHgyMCwweEJBLDB4N0UsMHg1NiwweDVGLAot
ICAgIDB4QTIsMHgyMCwweDYxLDB4MTgsMHhFQSwweERCLDB4RDcsMHg1NywweDgxLDB4MjAsMHg0
MSwweDE4LDB4MDIsMHhFMCwweEZFLDB4RTIsCi0gICAgMHg4MSwweDIwLDB4NDEsMHgxOCwweEZG
LDB4NUYsMHhCRiwweDJFLDB4QzIsMHgyOCwweDYxLDB4MTgsMHhCRCwweDNELDB4MkYsMHgyRSwK
LSAgICAweEMzLDB4MjgsMHhBMiwweDI4LDB4Q0IsMHhGRSwweEUwLDB4ODAsMHhDMiwweDI4LDB4
ODEsMHgyMCwweEZBLDB4RkEsMHhERSwweEEyLAotICAgIDB4QTIsMHgyOCwweDgyLDB4MjAsMHgy
RiwweEFCLDB4RTMsMHgyRSwweEMyLDB4MjgsMHg4MSwweDI4LDB4RkIsMHhFRiwweEFCLDB4QUEs
Ci0gICAgMHhDMiwweDI4LDB4NjEsMHgyOCwweDJCLDB4QUEsMHg4QSwweDAyLDB4MDMsMHgzMSww
eEEyLDB4MjgsMHhGNSwweEI1LDB4MzksMHgzQSwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4
NTcsMHg3RSwweEJDLDB4ODIsMHgwMywweDMxLDB4QzIsMHgzMCwweEQ3LDB4NjUsMHhBRiwweEVC
LAotICAgIDB4QzIsMHgzMCwweDgyLDB4MjgsMHhBOCwweEZDLDB4RjAsMHg3OCwweEUyLDB4MzAs
MHg4MSwweDI4LDB4MDIsMHhBRSwweEVCLDB4QkYsCi0gICAgMHhFMiwweDMwLDB4QTEsMHgyOCww
eDg4LDB4QjgsMHhCRiwweDU1LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFMiwweEJBLDB4QkYsMHhG
RCwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RUYsMHhGOCwweEZBLDB4QTIsMHgwMywweDM5
LDB4QzMsMHgzMCwweDdBLDB4RkYsMHg3RiwweERGLAotICAgIDB4RTIsMHgzMCwweEEyLDB4Mjgs
MHhERiwweERGLDB4REUsMHhGOCwweEUzLDB4MzAsMHhBMiwweDI4LDB4RTMsMHhBRiwweEE2LDB4
RTUsCi0gICAgMHg4MiwweDMwLDB4QzIsMHgyOCwweEJELDB4RDUsMHg3NywweERELDB4QTIsMHgy
OCwweDgxLDB4MjAsMHg2MiwweEZFLDB4MEEsMHgwMCwKLSAgICAweEMyLDB4MjgsMHg4MSwweDI4
LDB4OEYsMHhFRiwweEVGLDB4QUUsMHhDMiwweDI4LDB4ODIsMHgyOCwweDIwLDB4MDIsMHgwOSww
eDAyLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhGRCwweEFFLDB4QUUsMHhCRSwweEMyLDB4
MzAsMHhBMiwweDI4LDB4NTgsMHg1MCwweEVBLDB4QUYsCi0gICAgMHhDMiwweDMwLDB4QTIsMHgy
OCwweEQ1LDB4QzMsMHhGNSwweEY1LDB4QzIsMHgzMCwweEEyLDB4MjgsMHgwMiwweEJBLDB4OUIs
MHhBQiwKLSAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4RUYsMHg0RCwweDRELDB4M0QsMHhFMiww
eDMwLDB4QTEsMHgyOCwweEZBLDB4Q0IsMHhBMywweDBBLAotICAgIDB4MDMsMHgzOSwweEMyLDB4
MzAsMHhGNywweEZGLDB4ODEsMHgwMywweDAzLDB4MzksMHhDMiwweDMwLDB4QUIsMHhBRiwweEJG
LDB4RjYsCi0gICAgMHhFMiwweDMwLDB4QTEsMHgzMCwweDIwLDB4QTAsMHhBRiwweDJCLDB4MjMs
MHgzOSwweEUzLDB4MzgsMHhCRCwweERGLDB4RUYsMHhFRCwKLSAgICAweDAzLDB4MzksMHhDMiww
eDMwLDB4RUUsMHhBQiwweDA2LDB4QjcsMHgwMywweDM5LDB4QzIsMHgzMCwweDhGLDB4ODgsMHhD
MCwweEQyLAotICAgIDB4MDMsMHgzOSwweEUyLDB4MzAsMHhGRiwweEU3LDB4RTMsMHhFOCwweDAz
LDB4NDEsMHhFMiwweDMwLDB4NTUsMHg3RiwweEQ3LDB4RDcsCi0gICAgMHg0MywweDQxLDB4MDMs
MHgzOSwweDk1LDB4N0QsMHhGRCwweEVELDB4NDQsMHg0MSwweEUyLDB4MzAsMHhBMywweEE5LDB4
RUEsMHhFQSwKLSAgICAweDY0LDB4NDksMHhFMywweDM4LDB4QTAsMHhCQSwweEZFLDB4REQsMHg0
NCwweDQxLDB4RTMsMHgzOCwweDI4LDB4RkUsMHg1NywweDU1LAotICAgIDB4MjQsMHg0MSwweEMy
LDB4MzAsMHhFOCwweERFLDB4REIsMHhEQiwweEUzLDB4MzgsMHhDMiwweDMwLDB4QUUsMHg5RSww
eEI4LDB4ODAsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDJGLDB4MkUsMHhBRCwweDNGLDB4
MDMsMHgzOSwweEUzLDB4MzAsMHhBQSwweDBBLDB4MkYsMHhFNywKLSAgICAweDI0LDB4MzksMHhD
MiwweDMwLDB4QUEsMHgzQSwweERFLDB4RkIsMHhFMywweDM4LDB4QzIsMHgzMCwweEZFLDB4NTQs
MHg3NiwweDhFLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgwMywweEE5LDB4REQsMHg4QSww
eDIzLDB4NDEsMHhFMywweDMwLDB4MEYsMHgzNSwweEEzLDB4ODksCi0gICAgMHhBNSwweDUxLDB4
MDMsMHgzOSwweDAyLDB4MEEsMHhFOSwweEJELDB4QzUsMHg1MSwweDQ0LDB4NDksMHgyQSwweDhG
LDB4QTUsMHhCNSwKLSAgICAweDA2LDB4NUEsMHg2NCwweDQ5LDB4OEUsMHhGQSwweEZGLDB4NzUs
MHhBNSwweDUxLDB4NjQsMHg0OSwweDIwLDB4QjgsMHgzQiwweDJCLAotICAgIDB4RTYsMHg1OSww
eDg1LDB4NTEsMHgyQiwweDJCLDB4M0QsMHg5NywweDRCLDB4ODMsMHgwNiwweDVBLDB4MzUsMHhB
NSwweDM1LDB4MkQsCi0gICAgMHhFRCwweDlCLDB4OEMsMHg4QiwweDJELDB4QkQsMHhCNSwweDZG
LDB4RUQsMHg5QiwweEFDLDB4OTMsMHgyMiwweDg4LDB4MkEsMHhENSwKLSAgICAweDBFLDB4QTQs
MHhBQywweDkzLDB4MEEsMHgyRSwweEFFLDB4REQsMHgyRSwweEE0LDB4Q0QsMHg5MywweDAwLDB4
Q0UsMHhBRiwweDdELAotICAgIDB4NEUsMHhBNCwweEVELDB4OUIsMHgwOCwweDJCLDB4QjUsMHhC
NSwweEIwLDB4QUMsMHgwRCwweDlDLDB4MEIsMHhCQiwweEQ3LDB4NTcsCi0gICAgMHhEMCwweEI0
LDB4NEUsMHhBNCwweDBBLDB4QUIsMHgwOSwweEFELDB4MTEsMHhCRCwweEIwLDB4QjQsMHg4Qiww
eDhBLDB4RkIsMHg1NSwKLSAgICAweDExLDB4QkQsMHhCMCwweEFDLDB4N0EsMHg3RSwweDgzLDB4
OEIsMHhGMSwweEJDLDB4OEYsMHhBQywweEQ3LDB4OUUsMHg3RiwweEVDLAotICAgIDB4QjAsMHhC
NCwweDZGLDB4QUMsMHhGRSwweEE4LDB4QUIsMHhBQSwweEIwLDB4QjQsMHg2RiwweEFDLDB4N0Ys
MHg3RSwweEUwLDB4QUEsCi0gICAgMHhBRiwweEI0LDB4NEYsMHhBNCwweDZGLDB4RkQsMHg2RSww
eEE4LDB4OEYsMHhBQywweDRGLDB4QTQsMHhGNywweERGLDB4RkQsMHhCMCwKLSAgICAweDkwLDB4
QUMsMHgyRSwweEE0LDB4N0IsMHg1QSwweEZFLDB4REMsMHg2RiwweEE0LDB4MkUsMHhBNCwweDMz
LDB4RTksMHg2QSwweDlFLAotICAgIDB4NkUsMHhBQywweDJFLDB4QTQsMHgyRSwweENCLDB4RUQs
MHhGOSwweDZGLDB4QUMsMHgyRSwweEE0LDB4QTIsMHhCQiwweERBLDB4NDIsCi0gICAgMHg0Riww
eEE0LDB4MEUsMHg5QywweEY4LDB4RjgsMHg1MCwweEFGLDB4MkUsMHhBNCwweDBFLDB4OUMsMHg3
QiwweERELDB4Q0IsMHg4MiwKLSAgICAweDY0LDB4NTEsMHgyMywweDUxLDB4RUIsMHhBMiwweEJB
LDB4QkYsMHg2NCwweDU5LDB4NDMsMHg1MSwweEZELDB4QUQsMHg1MCwweEY4LAotICAgIDB4NjQs
MHg1OSwweDQzLDB4NTEsMHhBMiwweDg4LDB4NkIsMHhGRCwweDg0LDB4NTksMHgyMywweDUxLDB4
RUEsMHhFQSwweEVBLDB4NEEsCi0gICAgMHg2MywweDUxLDB4MjIsMHg1MSwweEZGLDB4QkYsMHg2
RiwweEEwLDB4NDMsMHg1MSwweDAyLDB4NDksMHhFOCwweEJBLDB4RjYsMHg3QSwKLSAgICAweDQz
LDB4NTEsMHgwMiwweDQ5LDB4QkEsMHg2OCwweEY5LDB4REQsMHg0MywweDQ5LDB4MDIsMHg0OSww
eEFBLDB4QUIsMHhFRCwweEU1LAotICAgIDB4NDMsMHg0OSwweEUyLDB4NDAsMHg4QSwweEI4LDB4
RkYsMHhERiwweDQzLDB4NTEsMHhFMiwweDQwLDB4M0IsMHhCRSwweEZCLDB4RjksCi0gICAgMHgy
MywweDQ5LDB4RTIsMHg0MCwweEJGLDB4QkUsMHhGRSwweEY4LDB4MjMsMHg0OSwweEUyLDB4NDAs
MHgzQSwweEZBLDB4RjgsMHhGQSwKLSAgICAweDQzLDB4NDksMHgwMiwweDQ5LDB4NUUsMHg1NSww
eDU1LDB4RDUsMHg2MywweDU5LDB4RTIsMHg0MCwweERELDB4M0YsMHhBRiwweDJGLAotICAgIDB4
Q0IsMHhBMywweEM1LDB4NjEsMHgyRCwweDJELDB4MEQsMHhBOSwweEVCLDB4QTMsMHg0OSwweDkz
LDB4RTIsMHg4QSwweEVFLDB4N0UsCi0gICAgMHg4QSwweDlCLDB4NDksMHg5MywweEEyLDB4RTIs
MHhGRCwweEVELDB4NjksMHg5QiwweDA4LDB4OEIsMHg0OCwweEYyLDB4N0EsMHg1RSwKLSAgICAw
eDI4LDB4OTMsMHhDNywweDgyLDB4QkEsMHg2RSwweDc4LDB4RkEsMHhDOCwweDhBLDB4MDcsMHg4
MywweEFGLDB4RUUsMHhBRSwweEJGLAotICAgIDB4RTgsMHg4QSwweEM3LDB4ODIsMHhENiwweDk2
LDB4OEEsMHgxQSwweDI5LDB4OTMsMHhBNywweDgyLDB4NTcsMHg1NywweEJGLDB4MkIsCi0gICAg
MHhBQiwweEEzLDB4RTgsMHg4QSwweDU1LDB4NTUsMHhBRCwweDAyLDB4RUIsMHhBQiwweDRBLDB4
OTMsMHhBRCwweEFCLDB4QUIsMHg4OCwKLSAgICAweDBCLDB4QUMsMHhBQiwweEEzLDB4RkUsMHhG
MywweDZCLDB4NUEsMHhDQiwweEEzLDB4NjYsMHg3MiwweDAwLDB4QTAsMHhFOCwweDdFLAotICAg
IDB4NEEsMHg5MywweDI2LDB4NzIsMHg3OCwweDdFLDB4NTcsMHg1NSwweDQ2LDB4NzIsMHgwNSww
eDZBLDB4RUYsMHhFQiwweDhELDB4QUIsCi0gICAgMHg2NywweDcyLDB4MjYsMHg3MiwweDVFLDB4
NjUsMHg3RCwweDA3LDB4NjcsMHg3MiwweDA2LDB4NjIsMHgwMywweDJBLDB4QkIsMHg3RSwKLSAg
ICAweDI2LDB4NkEsMHg4NCwweDUxLDB4NTAsMHg1RSwweERDLDB4N0YsMHgwNiwweDYyLDB4ODQs
MHg1MSwweEI1LDB4MzcsMHhBQSwweEFCLAotICAgIDB4RTUsMHg2MSwweEM1LDB4NTksMHhCMiww
eEQ0LDB4NTcsMHhGQSwweEU2LDB4NjEsMHg0MywweDQ5LDB4QTAsMHhGOCwweDdGLDB4NTcsCi0g
ICAgMHg4NCwweDU5LDB4NDQsMHg0OSwweDdDLDB4RDcsMHg1RiwweDdGLDB4NjQsMHg1MSwweDAz
LDB4NDEsMHhFQywweERBLDB4QkEsMHhBMCwKLSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4QkQs
MHg4NywweDhCLDB4MkEsMHg4NCwweDQ5LDB4NDQsMHg0OSwweEJELDB4REQsMHg1NiwweDU1LAot
ICAgIDB4ODUsMHg1MSwweDAzLDB4NDEsMHhFQywweEI4LDB4RkUsMHg3RiwweEM1LDB4NjEsMHgy
MywweDQxLDB4QkQsMHhCNywweDNELDB4M0QsCi0gICAgMHgyNywweDZBLDB4RTYsMHg2MSwweEU5
LDB4QUIsMHhENSwweDU3LDB4MjYsMHg2QSwweDg0LDB4NTEsMHhBQSwweDZGLDB4N0MsMHg3QSwK
LSAgICAweEE0LDB4NTksMHgwMiwweDQxLDB4RjgsMHg3RiwweDVFLDB4N0UsMHg2MywweDQ5LDB4
RTIsMHg0MCwweDJCLDB4QkQsMHhGNSwweEY1LAotICAgIDB4NjMsMHg0OSwweEUyLDB4NDAsMHgy
MiwweEVFLDB4RkYsMHg3NywweDYzLDB4NDksMHgwMywweDQxLDB4Q0MsMHg2QSwweDdELDB4NUQs
Ci0gICAgMHgwMywweDQxLDB4QzIsMHgzMCwweEI4LDB4NkMsMHhGOCwweEY4LDB4RTIsMHgzOCww
eEEyLDB4MzAsMHhBQSwweEUyLDB4RkIsMHg4QSwKLSAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4
RkEsMHg1RSwweDdBLDB4N0EsMHhDMiwweDI4LDB4NjEsMHgyMCwweEZDLDB4N0EsMHhGRiwweEFF
LAotICAgIDB4QzIsMHgyOCwweDYxLDB4MjAsMHhGQiwweEU5LDB4QkEsMHhBOCwweEEyLDB4Mjgs
MHg2MSwweDIwLDB4NTcsMHhGRSwweDZDLDB4RkEsCi0gICAgMHg4MSwweDIwLDB4NDEsMHgxOCww
eEZCLDB4RkUsMHhGRSwweEY4LDB4ODEsMHgyMCwweDQxLDB4MTgsMHhGQiwweDdFLDB4N0YsMHgz
RiwKLSAgICAweEMzLDB4MjgsMHg2MSwweDE4LDB4QjUsMHhBRCwweEE5LDB4MEEsMHhFMywweDMw
LDB4QTIsMHgyOCwweEU1LDB4RTksMHhBQiwweEZCLAotICAgIDB4QzIsMHgyOCwweEEyLDB4Mjgs
MHg4MywweDg4LDB4MDgsMHhFQSwweEMyLDB4MjgsMHg4MSwweDI4LDB4RTgsMHhBMCwweDAwLDB4
MDAsCi0gICAgMHhDMiwweDI4LDB4ODIsMHgyOCwweEVGLDB4MkUsMHgyOCwweDAyLDB4QzIsMHgz
MCwweDgxLDB4MjgsMHhFRiwweERFLDB4RTYsMHgyQiwKLSAgICAweDAzLDB4MzksMHhBMiwweDI4
LDB4RkQsMHhCRCwweEFGLDB4OEIsMHgwMywweDM5LDB4QzIsMHgzMCwweDNGLDB4QUIsMHg2OCww
eDZBLAotICAgIDB4MjMsMHgzOSwweEMyLDB4MjgsMHhBMiwweDJBLDB4RkQsMHhENSwweEUzLDB4
MzAsMHhDMiwweDI4LDB4ODAsMHg1QywweDU2LDB4RkUsCi0gICAgMHhDMiwweDMwLDB4ODIsMHgy
OCwweDcwLDB4RjgsMHhBMiwweEEyLDB4RTMsMHgzMCwweDgxLDB4MjgsMHhGNSwweEZGLDB4RkEs
MHhBMiwKLSAgICAweEMyLDB4MzAsMHhBMiwweDMwLDB4REIsMHhERiwweDI5LDB4MDIsMHhFMyww
eDM4LDB4QzIsMHgzMCwweEEyLDB4QUEsMHhBNywweDJELAotICAgIDB4MDMsMHgzOSwweEMyLDB4
MzAsMHhFQiwweEJELDB4QkIsMHhBRSwweEUzLDB4MzAsMHhDMiwweDMwLDB4RkMsMHhGQSwweEZG
LDB4MTYsCi0gICAgMHhFMywweDMwLDB4ODIsMHgyMCwweEJBLDB4REUsMHhGQSwweEEwLDB4RTMs
MHgzMCwweEEyLDB4MjgsMHgzRCwweEFCLDB4MkIsMHgzRiwKLSAgICAweDAzLDB4MzEsMHhBMiww
eDI4LDB4RkIsMHhGOCwweDc3LDB4N0UsMHhDMiwweDMwLDB4QTIsMHgyOCwweEY5LDB4RTUsMHg0
NSwweDc1LAotICAgIDB4QTIsMHgzMCwweEMyLDB4MjgsMHhGQSwweEZGLDB4REYsMHhGRiwweEMy
LDB4MjgsMHhBMiwweDI4LDB4RUYsMHhFQiwweEEzLDB4ODAsCi0gICAgMHhFMywweDMwLDB4QTIs
MHgyOCwweEY3LDB4N0QsMHhGRiwweDNGLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhENSwweEVCLDB4
NzIsMHg1QSwKLSAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4QkUsMHhBRSwweDhELDB4RUYsMHhD
MiwweDMwLDB4QTIsMHgyOCwweDg4LDB4QjgsMHhEOCwweDlGLAotICAgIDB4RTMsMHgzMCwweEEx
LDB4MjgsMHgyRiwweDhCLDB4RUIsMHhBNywweEUzLDB4MzAsMHhBMiwweDI4LDB4MjAsMHhCRSww
eDc3LDB4NTUsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweDBBLDB4MEYsMHgyRiwweEFGLDB4
MDMsMHgzOSwweEMyLDB4MzAsMHhBMiwweERBLDB4NjAsMHhDRSwKLSAgICAweEUzLDB4MzAsMHhD
MiwweDMwLDB4QjcsMHhENSwweEQ1LDB4NTcsMHgwMiwweDM5LDB4QzMsMHgzMCwweEZFLDB4RkEs
MHgzQiwweEFGLAotICAgIDB4RTIsMHgzMCwweEEyLDB4MzAsMHhGRSwweERGLDB4RUMsMHhCMiww
eDAzLDB4MzksMHhDMiwweDMwLDB4RUIsMHg5RCwweEFCLDB4NTcsCi0gICAgMHgwMywweDM5LDB4
QzIsMHgzMCwweENBLDB4OEEsMHhBRiwweDk1LDB4MjMsMHgzOSwweEMyLDB4MzAsMHhGRiwweEY3
LDB4M0YsMHhFRiwKLSAgICAweDIzLDB4MzksMHhFMywweDMwLDB4MjMsMHgzRiwweEJELDB4RkQs
MHgyNCwweDM5LDB4RTMsMHgzMCwweDdFLDB4NzIsMHhDOCwweDZCLAotICAgIDB4MjQsMHgzOSww
eEMyLDB4MzAsMHhGNywweEJELDB4RkYsMHhBRiwweDAzLDB4MzksMHhDMywweDMwLDB4RUUsMHhG
MiwweEMwLDB4QzIsCi0gICAgMHgwMywweDM5LDB4QzMsMHgzMCwweEJELDB4M0YsMHhFRCwweEFC
LDB4MDMsMHgzMSwweEMzLDB4MzAsMHhFQSwweDgwLDB4MDgsMHg2OCwKLSAgICAweDAzLDB4Mzks
MHhFMywweDMwLDB4M0YsMHgzRCwweDY3LDB4QjUsMHgyMywweDM5LDB4RTMsMHgzMCwweERGLDB4
RkQsMHhERCwweEM1LAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHg3MSwweEZELDB4RjUsMHg1
OSwweDQ0LDB4NDEsMHhFMywweDMwLDB4N0QsMHg2RiwweEVCLDB4QTksCi0gICAgMHgyMywweDM5
LDB4RTMsMHgzMCwweEVGLDB4RkQsMHgyOSwweDhCLDB4NjQsMHg0MSwweEUzLDB4MzgsMHhFRCww
eEVGLDB4OEEsMHhBQSwKLSAgICAweDY0LDB4NDksMHgwMywweDM5LDB4QUQsMHhBOSwweDNELDB4
MUUsMHg4NCwweDQ5LDB4MjMsMHg0MSwweEJGLDB4NzcsMHhCNiwweEJFLAotICAgIDB4ODQsMHg1
MSwweDQ0LDB4NDksMHhGRSwweEI1LDB4QkQsMHgyNywweEU1LDB4NTksMHg4NSwweDUxLDB4N0Qs
MHhGNSwweEI1LDB4MEUsCi0gICAgMHhFNiwweDU5LDB4QTUsMHg1MSwweDE1LDB4QTUsMHgwRiww
eDIwLDB4NkMsMHg4QiwweEU1LDB4NTksMHgyRCwweDJELDB4MkQsMHgyRiwKLSAgICAweEVFLDB4
OUIsMHhBQywweDkzLDB4N0QsMHhFQiwweDIzLDB4MjMsMHhFRCwweDlCLDB4OEMsMHg4QiwweEZG
LDB4REYsMHg3QSwweDVDLAotICAgIDB4Q0QsMHg5MywweDZCLDB4OEIsMHhBMCwweEI4LDB4RkIs
MHhGRCwweEVELDB4OUIsMHg4QywweDhCLDB4OEUsMHgzOSwweEI5LDB4RjcsCi0gICAgMHgwRSww
eEE0LDB4QUMsMHg5MywweDJBLDB4M0QsMHhBRiwweEJGLDB4MkQsMHhBNCwweENDLDB4OTMsMHhC
OCwweDJFLDB4QUIsMHhGNywKLSAgICAweDZGLDB4QUMsMHhFRCwweDlCLDB4MEIsMHhBRCwweEZG
LDB4NzUsMHhBRiwweEFDLDB4MEQsMHg5QywweDI4LDB4QUYsMHhCRCwweEQ1LAotICAgIDB4RjEs
MHhCQywweDRFLDB4QTQsMHgwMiwweDJBLDB4QkQsMHg5RCwweEYwLDB4QkMsMHg4RiwweEFDLDB4
NzAsMHhFQSwweEFFLDB4RkIsCi0gICAgMHhEMSwweEI0LDB4OEYsMHhBQywweDVGLDB4NUYsMHhB
MCwweEFDLDB4QjAsMHhCNCwweDkwLDB4QUMsMHgyRSwweDhCLDB4MDQsMHgzNiwKLSAgICAweEQw
LDB4QjQsMHg2RiwweEFDLDB4QTcsMHhCRiwweEI3LDB4RjQsMHhCMCwweEI0LDB4NkYsMHhBQyww
eEY4LDB4RTIsMHhBOCwweEU4LAotICAgIDB4QjAsMHhCNCwweDRGLDB4QTQsMHg1QSwweEI4LDB4
QkEsMHhFRSwweDhGLDB4QUMsMHg0RSwweEE0LDB4NTcsMHg0RiwweEMzLDB4Q0UsCi0gICAgMHg2
RiwweEFDLDB4MEUsMHhBNCwweDI4LDB4ODgsMHg4OCwweDdBLDB4NkYsMHhBQywweDJFLDB4QTQs
MHhFQSwweDcyLDB4RkUsMHg3RCwKLSAgICAweDRFLDB4QTQsMHgwRCwweDlDLDB4RUYsMHhCRiww
eEJFLDB4NEIsMHgyRSwweEE0LDB4RUQsMHg5QiwweDgwLDB4Q0IsMHg3RiwweDdFLAotICAgIDB4
NjQsMHg1OSwweDAyLDB4NDksMHhFRiwweEVBLDB4M0MsMHg3RiwweDg0LDB4NTksMHgyMywweDUx
LDB4QUYsMHgzQiwweEJFLDB4RkQsCi0gICAgMHg4NCwweDU5LDB4NDMsMHg1MSwweDc3LDB4NTYs
MHhGNCwweDJGLDB4ODQsMHg1OSwweDQzLDB4NTEsMHhFQiwweEVELDB4RjgsMHg3RSwKLSAgICAw
eDg0LDB4NTksMHgyMiwweDQ5LDB4N0UsMHg1RSwweEVFLDB4NzMsMHg0MywweDUxLDB4MDIsMHg0
OSwweDVFLDB4Q0UsMHg3RSwweDVFLAotICAgIDB4MjMsMHg0OSwweDAyLDB4NDEsMHhGQiwweDIw
LDB4MDIsMHgwMCwweDIyLDB4NDksMHgwMiwweDQxLDB4Q0IsMHg1NiwweDhCLDB4RjYsCi0gICAg
MHgyMywweDQ5LDB4RTIsMHg0MCwweEFCLDB4RUIsMHhGQSwweEE4LDB4MjMsMHg0OSwweEUyLDB4
NDAsMHhBQiwweEJCLDB4REUsMHg3RSwKLSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4QzgsMHg3
OCwweEVGLDB4OEQsMHgwMiwweDQ5LDB4RTIsMHg0MCwweEEwLDB4QjksMHgyNSwweDg3LAotICAg
IDB4MjMsMHg0OSwweEUxLDB4NDAsMHhCRiwweEE1LDB4MEEsMHgyQiwweDA1LDB4NkEsMHg0Myww
eDQ5LDB4RDUsMHhENSwweDE1LDB4MzUsCi0gICAgMHhBQiwweDlCLDB4NjYsMHg3QSwweDI5LDB4
ODksMHgyRiwweDIzLDB4QUIsMHhBMywweDQ5LDB4OTMsMHg3QiwweEY4LDB4NkUsMHg3QSwKLSAg
ICAweDY5LDB4OUIsMHgyOSwweDkzLDB4QTYsMHhCRSwweDZCLDB4RkEsMHg2OSwweDlCLDB4MDgs
MHg4QiwweERBLDB4RTgsMHhFMywweDdFLAotICAgIDB4MjgsMHg5MywweEM3LDB4ODIsMHhFQSww
eEE4LDB4ODgsMHgyOCwweDI4LDB4OEIsMHhFOCwweDhBLDB4NTAsMHg1MiwweDdELDB4RkIsCi0g
ICAgMHg4QSwweDlCLDB4RTgsMHg4MiwweDU1LDB4QkQsMHhBRCwweDJCLDB4MEMsMHhBQywweEU4
LDB4OEEsMHhCRCwweEFCLDB4MkEsMHgwQSwKLSAgICAweDBDLDB4QUMsMHhBQSwweEEzLDB4REQs
MHgzRSwweEJBLDB4MjgsMHgwQywweEFDLDB4NjksMHg5QiwweEEyLDB4RUEsMHhBOCwweDdBLAot
ICAgIDB4Q0IsMHhBMywweDY2LDB4NzIsMHhBMCwweEUwLDB4N0EsMHg1RSwweEM4LDB4ODIsMHgy
NSwweDZBLDB4RjAsMHhERSwweDc3LDB4NUUsCi0gICAgMHg0NiwweDcyLDB4MDUsMHg2QSwweDJD
LDB4QUYsMHgwQiwweDAyLDB4NjcsMHg3QSwweDI2LDB4NkEsMHhGQSwweEFGLDB4QTcsMHgwQSwK
LSAgICAweDY3LDB4NzIsMHgyNiwweDcyLDB4OUUsMHhERSwweEZDLDB4ODgsMHg0NywweDcyLDB4
QTUsMHg1OSwweEU4LDB4RjgsMHg2MiwweDdBLAotICAgIDB4QzUsMHg1OSwweDg0LDB4NTksMHgy
QywweDJGLDB4QUUsMHg4RSwweEM1LDB4NjEsMHg0MywweDUxLDB4MjAsMHhBMCwweEE4LDB4REUs
Ci0gICAgMHhDNSwweDU5LDB4MjMsMHg0OSwweDgwLDB4RkEsMHg1RSwweDVELDB4QTUsMHg1MSww
eDAyLDB4NDEsMHg5RiwweDJGLDB4MkYsMHg4MiwKLSAgICAweDg0LDB4NTEsMHg0MywweDQ5LDB4
NzgsMHg3OCwweDdDLDB4NUEsMHg4NCwweDUxLDB4NDQsMHg0OSwweDZGLDB4RkYsMHhCRiwweEFE
LAotICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHgzMiwweDJBLDB4OUUsMHg1QywweDY0LDB4NDks
MHgyMywweDQxLDB4RTMsMHg4QiwweEFGLDB4QkYsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHg0MSww
eDdGLDB4N0UsMHhEQywweDc4LDB4QTUsMHg1OSwweDAzLDB4NDEsMHgzRCwweDJELDB4MjksMHgy
RiwKLSAgICAweDA1LDB4NjIsMHhDNSwweDYxLDB4NUUsMHhENywweENBLDB4QTIsMHgwNiwweDZB
LDB4QTQsMHg1OSwweDVBLDB4N0MsMHhDOCwweEFCLAotICAgIDB4QTQsMHg1OSwweDIzLDB4NDks
MHg3RSwweDdDLDB4NzgsMHg1RSwweDIzLDB4NDksMHhDMSwweDM4LDB4ODgsMHhCQiwweEZFLDB4
NkMsCi0gICAgMHgyMywweDQxLDB4RTIsMHg0MCwweERGLDB4QkEsMHgwQiwweDQzLDB4MjMsMHg0
MSwweEUyLDB4MzgsMHg1QSwweERBLDB4NUYsMHg1NSwKLSAgICAweDIzLDB4NDEsMHhDMiwweDMw
LDB4RkIsMHhBMywweEZGLDB4N0QsMHgwMywweDM5LDB4QzIsMHgzMCwweEZBLDB4RkEsMHhGRiww
eEZELAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg1RSwweEZBLDB4QUUsMHhGOCwweEEyLDB4
MjgsMHg4MSwweDI4LDB4MEUsMHgwRSwweDA4LDB4MDAsCi0gICAgMHhDMiwweDI4LDB4ODEsMHgy
MCwweEVBLDB4ODIsMHhFMiwweDVFLDB4QTIsMHgyMCwweDQwLDB4MTgsMHhBOCwweEFBLDB4Rjgs
MHg3RSwKLSAgICAweDgyLDB4MjAsMHg2MSwweDE4LDB4NUIsMHg1RCwweEY5LDB4M0QsMHhDMiww
eDI4LDB4NjEsMHgxOCwweEQ1LDB4RDUsMHg5RCwweDBGLAotICAgIDB4RTMsMHgzMCwweEEyLDB4
MjAsMHhGRiwweEVGLDB4RUIsMHhBMiwweEUzLDB4MzAsMHhDMiwweDI4LDB4NTcsMHg1MiwweDJC
LDB4RjcsCi0gICAgMHhBMiwweDMwLDB4QzIsMHgyOCwweERGLDB4RkQsMHg2RCwweEY1LDB4MDMs
MHgzMSwweEEyLDB4MjgsMHhGRiwweERGLDB4QkUsMHgzQiwKLSAgICAweDIzLDB4MzksMHhDMiww
eDI4LDB4NTUsMHg3RiwweEVGLDB4OEEsMHgwMywweDMxLDB4QzIsMHgzMCwweDU1LDB4N0EsMHhG
OCwweEZBLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHgwQSwweDJBLDB4RUEsMHg3QSwweEUz
LDB4MzgsMHg4MSwweDI4LDB4RTgsMHhFRSwweDVCLDB4NUYsCi0gICAgMHhDMiwweDMwLDB4ODEs
MHgyOCwweDAyLDB4OEIsMHhBRiwweEFELDB4QTIsMHgzMCwweEUyLDB4MjgsMHhCRiwweEJFLDB4
RUEsMHhFQSwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4OTUsMHg5RCwweEQ3LDB4QjUsMHgw
MywweDM5LDB4QzIsMHgzMCwweEZBLDB4RUEsMHhFRiwweEVCLAotICAgIDB4RTMsMHgzOCwweEMy
LDB4MzAsMHhGNywweERGLDB4MkYsMHgwRSwweDAzLDB4MzksMHhDMiwweDMwLDB4MzcsMHhCQiww
eDZBLDB4QUEsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEEyLDB4RUIsMHhFQiwweDAwLDB4
MDMsMHgzOSwweEMzLDB4MzAsMHg5QSwweEJCLDB4QjMsMHhGOCwKLSAgICAweDI0LDB4MzksMHhF
MywweDMwLDB4NTcsMHhFMywweEVBLDB4QUIsMHgwMywweDMxLDB4QzMsMHgzMCwweDVFLDB4REUs
MHhCRSwweERFLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg3QSwweEI4LDB4RjgsMHhGMCww
eEMyLDB4MjgsMHhBMiwweDI4LDB4NzUsMHg2NiwweEY3LDB4MUYsCi0gICAgMHhFMiwweDMwLDB4
ODEsMHgyOCwweEZGLDB4NUQsMHg3NSwweEZFLDB4RTMsMHgzMCwweDgxLDB4MjAsMHgyQiwweEFC
LDB4RkYsMHhGRCwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QjcsMHhFQSwweEIzLDB4Qjks
MHhFMywweDMwLDB4QTIsMHgyOCwweEZBLDB4RkEsMHg3NCwweERGLAotICAgIDB4QTIsMHgyOCww
eDgxLDB4MjAsMHgyOCwweEIwLDB4QTgsMHg4MCwweEUyLDB4MjgsMHg4MiwweDI4LDB4QkYsMHhG
RiwweDc1LDB4RkYsCi0gICAgMHhDMiwweDI4LDB4QTIsMHgyOCwweEVBLDB4N0EsMHg1NSwweDlE
LDB4RTMsMHgzMCwweDgxLDB4MjgsMHhGRiwweDdGLDB4QTIsMHhBMiwKLSAgICAweEUzLDB4MzAs
MHhBMiwweDI4LDB4MEIsMHg4OSwweDA5LDB4QkQsMHhFMywweDMwLDB4QTIsMHgzMCwweDgwLDB4
QUEsMHhGRiwweEZFLAotICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHhGQSwweEZBLDB4RjcsMHg1
NiwweEUyLDB4MzAsMHhDMiwweDMwLDB4M0IsMHg5RiwweDVGLDB4REUsCi0gICAgMHgwMywweDM5
LDB4QzIsMHgzMCwweEZBLDB4ODIsMHg3QSwweDU1LDB4RTMsMHgzMCwweEMyLDB4MzAsMHhGRiww
eEI5LDB4NEIsMHg3NywKLSAgICAweEUzLDB4MzAsMHhBMSwweDI4LDB4QjgsMHhCQywweEFFLDB4
QjcsMHgyMywweDM5LDB4QzIsMHgyOCwweEFGLDB4QkYsMHhCRiwweEQ3LAotICAgIDB4MDMsMHgz
MSwweEMyLDB4MjgsMHg3QSwweDUwLDB4OUMsMHhCQywweDAzLDB4MzEsMHhFMywweDMwLDB4RTks
MHhERCwweDU2LDB4NUUsCi0gICAgMHgyNCwweDMxLDB4QzIsMHgzMCwweEZGLDB4RjUsMHg2Riww
eERGLDB4MjQsMHgzMSwweEMyLDB4MzAsMHhGQiwweERGLDB4RkQsMHhFMywKLSAgICAweDAzLDB4
MzEsMHhDMywweDMwLDB4RjIsMHhGRiwweEZBLDB4N0YsMHhFMywweDMwLDB4QzIsMHgyOCwweEMw
LDB4NjAsMHg2MCwweDQzLAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHhBQSwweDJBLDB4RUIs
MHhGOSwweDAzLDB4MzksMHhBMiwweDI4LDB4MkUsMHhBRSwweEY3LDB4RjcsCi0gICAgMHhFMyww
eDMwLDB4QzIsMHgyOCwweDE4LDB4QUEsMHg3MiwweEZCLDB4NDUsMHgzOSwweEUzLDB4MzAsMHhD
QiwweEZELDB4RDUsMHhENSwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4RTIsMHg5RSwweEJD
LDB4QjgsMHgyMywweDQxLDB4RTIsMHgzMCwweDIwLDB4M0UsMHhCRiwweDM2LAotICAgIDB4NjUs
MHg0MSwweDIzLDB4NDEsMHg5RiwweEJGLDB4REUsMHg5RiwweEE1LDB4NTEsMHg0MywweDQxLDB4
NTcsMHhERCwweEJELDB4RkYsCi0gICAgMHhDNSwweDU5LDB4NDQsMHg0OSwweEJCLDB4MzksMHhC
RiwweEZELDB4MDYsMHg2MiwweEM1LDB4NTEsMHhBQiwweDhBLDB4Q0QsMHhFNSwKLSAgICAweDI2
LDB4NjIsMHhDNSwweDU5LDB4REUsMHhCQiwweDJGLDB4OEYsMHg0QiwweDgzLDB4MjYsMHg2Miww
eDJELDB4MkQsMHgyOSwweDJGLAotICAgIDB4RUQsMHg5QiwweDhDLDB4OEIsMHgwMywweDgxLDB4
OEIsMHhBQiwweEVELDB4OUIsMHg4QywweDhCLDB4N0MsMHhFRiwweEJBLDB4QUUsCi0gICAgMHhB
QywweDkzLDB4NkIsMHg4QiwweEFGLDB4QzQsMHg0OCwweDgwLDB4Q0QsMHg5QiwweDRCLDB4OEIs
MHgyQSwweDNCLDB4OUQsMHhENywKLSAgICAweEVELDB4OUIsMHg4QywweDhCLDB4ODMsMHhBQSww
eEFGLDB4RjUsMHhFRCwweDlCLDB4QUMsMHg5MywweEFCLDB4RjMsMHg5MiwweEVBLAotICAgIDB4
MEQsMHg5QywweDhDLDB4OTMsMHg4MCwweDBBLDB4QTksMHg5RCwweDJFLDB4QTQsMHhDRCwweDkz
LDB4RUEsMHgyRSwweEFELDB4RUEsCi0gICAgMHg2RSwweEE0LDB4RUQsMHg5QiwweDIzLDB4RUYs
MHhFRiwweERELDB4QjAsMHhCNCwweDBELDB4OUMsMHg4QSwweEFCLDB4RjUsMHhGRCwKLSAgICAw
eEIwLDB4QjQsMHgwRSwweDlDLDB4QTAsMHhBRSwweEJFLDB4RjcsMHg4RiwweEFDLDB4MkUsMHhB
NCwweDBBLDB4MEUsMHhBRiwweDdELAotICAgIDB4QjAsMHhCNCwweDBFLDB4OUMsMHg4OCwweEVB
LDB4QUYsMHg3RiwweDhGLDB4QUMsMHgyRSwweEE0LDB4ODAsMHhFRiwweEJGLDB4NTUsCi0gICAg
MHg4RiwweEFDLDB4MEQsMHg5QywweDg4LDB4QUEsMHhFQiwweDU1LDB4OEYsMHhBQywweENDLDB4
OTMsMHg4QSwweEVBLDB4NzcsMHg3RiwKLSAgICAweDRFLDB4QTQsMHhDRCwweDkzLDB4QTgsMHhC
QiwweEZGLDB4RkQsMHgyRSwweEE0LDB4RUQsMHg5QiwweDIzLDB4RTAsMHg1OSwweDU1LAotICAg
IDB4NEUsMHhBNCwweEVELDB4OUIsMHhGRSwweDczLDB4REQsMHhENSwweDRGLDB4QTQsMHhFRCww
eDlCLDB4NUUsMHhGRSwweEVGLDB4ODIsCi0gICAgMHg2NCwweDUxLDB4MDIsMHg1MSwweDlFLDB4
RUEsMHhBQSwweEJDLDB4NjMsMHg1MSwweDIyLDB4NTEsMHhCRiwweEJBLDB4QTIsMHhBOCwKLSAg
ICAweDg0LDB4NTksMHg0MywweDUxLDB4QUUsMHhDRSwweEU5LDB4RUYsMHg2NCwweDUxLDB4MjMs
MHg1MSwweEZBLDB4QzgsMHhBMiwweEFBLAotICAgIDB4NjQsMHg1MSwweDIzLDB4NDksMHhDQSww
eDU1LDB4NTcsMHg3RiwweDQzLDB4NDksMHgwMiwweDQ5LDB4NkEsMHg3RSwweDU1LDB4N0QsCi0g
ICAgMHgyMywweDQ5LDB4RTEsMHg0MCwweDgyLDB4MkQsMHhBOSwweEJCLDB4MjMsMHg0OSwweEUy
LDB4NDAsMHhBQSwweEUwLDB4NzgsMHhGNywKLSAgICAweDIzLDB4NDksMHgwMiwweDQxLDB4QjIs
MHhGRCwweDVELDB4NUQsMHgyMywweDQ5LDB4QzIsMHg0MCwweEZBLDB4REEsMHhCQSwweDhBLAot
ICAgIDB4MjMsMHg0OSwweEMyLDB4NDAsMHgwRCwweDJGLDB4RUEsMHhCQSwweDQ0LDB4NDksMHhF
MiwweDQwLDB4OEUsMHg5QiwweEFGLDB4QkIsCi0gICAgMHgyMywweDQ5LDB4RTMsMHg0MCwweEVG
LDB4RTMsMHhFRSwweDZBLDB4MDgsMHg4QiwweDAzLDB4NDksMHhCNSwweEI1LDB4QUQsMHgyRCwK
LSAgICAweEFCLDB4OUIsMHgwOCwweDhCLDB4QTksMHgwRCwweDBCLDB4QUIsMHhBQiwweDlCLDB4
NDksMHg5MywweEM4LDB4NjIsMHg1OCwweDdDLAotICAgIDB4NkEsMHg5QiwweDI5LDB4OTMsMHhF
QiwweEVBLDB4QkUsMHg3RSwweDQ5LDB4OTMsMHhFOCwweDhBLDB4NjAsMHhGMCwweEVBLDB4ODAs
Ci0gICAgMHg0OSwweDkzLDB4RTcsMHg4QSwweEZFLDB4REIsMHhCRiwweDAwLDB4NkEsMHg5Qiww
eDA4LDB4OEIsMHhERCwweDk1LDB4OUYsMHgyRSwKLSAgICAweENCLDB4QTMsMHg2OSwweDkzLDB4
MjUsMHgyRiwweEVGLDB4QjcsMHgwQywweEFDLDB4QUEsMHg5QiwweEFCLDB4RjcsMHg3NSwweEY1
LAotICAgIDB4RUMsMHhBMywweDQ5LDB4OEIsMHgwMCwweDAwLDB4OEEsMHg3QSwweENCLDB4QTMs
MHg4NiwweDdBLDB4RTgsMHg3OCwweDVFLDB4NTcsCi0gICAgMHg4NiwweDdBLDB4MjYsMHg2QSww
eEY4LDB4QUEsMHhEQywweEZGLDB4NjYsMHg3MiwweDI1LDB4NkEsMHhGMCwweEZFLDB4NUEsMHg4
MiwKLSAgICAweDY2LDB4NzIsMHgyNSwweDcyLDB4MjEsMHhFQiwweEVGLDB4Q0UsMHg4NywweDdB
LDB4NDYsMHg3MiwweDcxLDB4N0IsMHhERCwweDcyLAotICAgIDB4NjcsMHg3MiwweEM1LDB4NjEs
MHhDMiwweEE4LDB4RjgsMHg3MiwweEU1LDB4NjEsMHg2MywweDUxLDB4QzAsMHhGOCwweEZFLDB4
NUMsCi0gICAgMHhDNCwweDU5LDB4MjIsMHg0MSwweEE4LDB4RUEsMHhGRiwweDU1LDB4ODQsMHg1
MSwweDIzLDB4NDksMHhGOCwweDZBLDB4N0UsMHg1NSwKLSAgICAweEE1LDB4NTEsMHgwMiwweDQx
LDB4QkQsMHhCRiwweDJCLDB4QUIsMHhBNSwweDU5LDB4NDMsMHg0OSwweEFBLDB4RUEsMHg2OCww
eEVBLAotICAgIDB4ODQsMHg0OSwweDIzLDB4NDEsMHhBQywweEZFLDB4QUIsMHhBQSwweEE1LDB4
NTEsMHg0NCwweDQ5LDB4OEYsMHhFQiwweEZBLDB4N0YsCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0
MSwweEZFLDB4RkEsMHhGQSwweDVGLDB4NjQsMHg0OSwweDIzLDB4NDEsMHhBQSwweEEwLDB4QjUs
MHhCQiwKLSAgICAweDQ0LDB4NDksMHgwMywweDM5LDB4QTgsMHhCMiwweDdDLDB4NTYsMHg4NCww
eDUxLDB4RTIsMHgzOCwweDJGLDB4QkYsMHg5RCwweDU1LAotICAgIDB4RTUsMHg2MSwweDIzLDB4
NDksMHgwMCwweDAyLDB4MDMsMHgyOSwweEU1LDB4NjEsMHhBNCwweDU5LDB4RkEsMHg1QSwweEJB
LDB4NzgsCi0gICAgMHhDNSwweDYxLDB4MjMsMHg0OSwweDc4LDB4N0EsMHhGMCwweEYwLDB4MjMs
MHg0OSwweEUyLDB4NDAsMHhFQSwweDZDLDB4QTgsMHgwMCwKLSAgICAweDIzLDB4NDEsMHhFMiww
eDM4LDB4NjMsMHhFMSwweDdFLDB4NkEsMHgwMywweDQxLDB4QzIsMHgzOCwweEZGLDB4NUIsMHg3
QSwweEVFLAotICAgIDB4RTIsMHgzOCwweEMyLDB4MzAsMHhGOCwweEVGLDB4NjcsMHhERiwweEUz
LDB4MzAsMHhDMiwweDMwLDB4QkYsMHhCQSwweDdFLDB4NUEsCi0gICAgMHgwMywweDM5LDB4QTIs
MHgyOCwweDZBLDB4OEEsMHhBQiwweDNBLDB4RTMsMHgzMCwweDgxLDB4MjAsMHhGRiwweDdCLDB4
RjgsMHg2OCwKLSAgICAweEEyLDB4MjgsMHg0MCwweDE4LDB4NjgsMHhGQSwweEVBLDB4RkUsMHg4
MiwweDE4LDB4NDEsMHgxOCwweDdBLDB4RkYsMHhBRiwweEFGLAotICAgIDB4QTEsMHgyMCwweDQw
LDB4MTgsMHhCRCwweDJBLDB4MkIsMHgyQiwweEMyLDB4MjgsMHhBMiwweDIwLDB4MEIsMHhFMiww
eDYxLDB4REIsCi0gICAgMHgwMywweDMxLDB4QTIsMHgyOCwweEJGLDB4QUYsMHhCRCwweDJELDB4
MjQsMHgzOSwweEMyLDB4MjgsMHhENSwweERELDB4QjcsMHgwQSwKLSAgICAweDY1LDB4NDEsMHhD
MiwweDI4LDB4NTcsMHhERiwweEVGLDB4MDIsMHg2NSwweDQxLDB4QzEsMHgyOCwweEY1LDB4RUYs
MHg4MiwweDgwLAotICAgIDB4NDQsMHg0MSwweEUzLDB4MzAsMHhGQiwweDdFLDB4QkMsMHhCQyww
eDIzLDB4MzksMHhDMiwweDMwLDB4NTUsMHg3NiwweEZFLDB4RTgsCi0gICAgMHgwMywweDM5LDB4
QTIsMHgyOCwweDVGLDB4REYsMHhGQiwweDYwLDB4QzIsMHgzMCwweDgxLDB4MjgsMHhEMCwweEUw
LDB4RjAsMHgwQSwKLSAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4RDUsMHhERCwweEJELDB4ODMs
MHhFMywweDM4LDB4QTIsMHgyOCwweEJFLDB4RkUsMHhGOCwweEU4LAotICAgIDB4MDMsMHgzOSww
eEMyLDB4MzAsMHhBOSwweEVCLDB4NzcsMHhCNSwweDAzLDB4MzksMHhFMiwweDMwLDB4N0EsMHg3
MiwweDYxLDB4NzgsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweEVGLDB4QTMsMHhCQiwweEZE
LDB4MjMsMHgzOSwweEUyLDB4MzAsMHg4RiwweEZBLDB4RUYsMHg3NSwKLSAgICAweDIzLDB4Mzks
MHhFMywweDMwLDB4QTIsMHhCQSwweEFCLDB4RjksMHgwMywweDM5LDB4QTIsMHgyOCwweEU4LDB4
RjgsMHhGOCwweERDLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHgyMiwweEFGLDB4RkQsMHhG
NywweEUyLDB4MzAsMHhBMywweDI4LDB4RkUsMHhBQSwweEVBLDB4MDIsCi0gICAgMHhFMywweDMw
LDB4QTIsMHgyOCwweEVBLDB4QTcsMHhBRiwweDJGLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhFNyww
eEZGLDB4RUYsMHgyRSwKLSAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4RjcsMHhERiwweEZGLDB4
RjgsMHhDMiwweDI4LDB4NjEsMHgyMCwweDdGLDB4RkEsMHgwOCwweDAwLAotICAgIDB4QzIsMHgy
OCwweDgxLDB4MjAsMHhCRCwweEZELDB4RUIsMHg4QiwweEMyLDB4MzAsMHg4MSwweDIwLDB4QUEs
MHhFQiwweEZELDB4N0EsCi0gICAgMHhBMiwweDI4LDB4NjEsMHgyMCwweEIwLDB4RUYsMHhCRSww
eEZFLDB4QTIsMHgyOCwweDgxLDB4MjAsMHgwQSwweDhELDB4RUQsMHg3RCwKLSAgICAweEMyLDB4
MjgsMHg2MSwweDIwLDB4MEEsMHgyQSwweDAxLDB4MEEsMHhFMiwweDMwLDB4QTIsMHgyOCwweDhF
LDB4QjcsMHhDQiwweDg4LAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg2RiwweEFDLDB4MkYs
MHgyRiwweDA0LDB4MzEsMHhDMywweDMwLDB4NTUsMHhEQSwweDVFLDB4RkYsCi0gICAgMHhFMyww
eDMwLDB4QTIsMHgyOCwweDVGLDB4MkMsMHg5QiwweEJCLDB4MDMsMHgzOSwweEMyLDB4MzAsMHg3
RiwweERBLDB4RUEsMHg2QSwKLSAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4QkEsMHhBRiwweEE1
LDB4RDcsMHhFMiwweDMwLDB4QTIsMHgyOCwweEZBLDB4RkUsMHhFRSwweEJGLAotICAgIDB4QzIs
MHgyOCwweEEyLDB4MjgsMHhENywweEJELDB4QUUsMHhBMCwweDAzLDB4MzEsMHhDMiwweDI4LDB4
RjcsMHhCRiwweDJBLDB4QUIsCi0gICAgMHgwMywweDMxLDB4RTMsMHgzMCwweEY1LDB4RTcsMHhG
RiwweDdCLDB4MjQsMHgzOSwweEUzLDB4MzAsMHhFQiwweEIyLDB4QUYsMHgyOSwKLSAgICAweDI0
LDB4MzksMHhDMiwweDI4LDB4N0UsMHhFQSwweEUyLDB4QzMsMHgyNCwweDM5LDB4QzIsMHgyOCww
eEUzLDB4QUQsMHg2QiwweDVFLAotICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHhCQSwweDNDLDB4
MjksMHg4RCwweDAzLDB4MzEsMHhDMiwweDMwLDB4NkIsMHhGQSwweEZFLDB4RkYsCi0gICAgMHgy
MywweDMxLDB4QzIsMHgzMCwweEZELDB4RkIsMHhGRiwweDU3LDB4RTMsMHgzMCwweEMyLDB4Mjgs
MHhENywweEY3LDB4RkEsMHgwMiwKLSAgICAweDAzLDB4MzEsMHhBMywweDMwLDB4QUIsMHgwQSww
eEFBLDB4MDgsMHgwMywweDMxLDB4QzMsMHgzMCwweDJDLDB4QkMsMHhGRSwweDgyLAotICAgIDB4
MDMsMHgzMSwweEUyLDB4MzAsMHhEOCwweDU1LDB4QUYsMHhGQiwweDQ0LDB4NDEsMHhFMiwweDMw
LDB4MkYsMHhBNSwweEJELDB4RjcsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHgzOSwweEFBLDB4MDIs
MHhBRSwweEY3LDB4QTUsMHg1MSwweDIzLDB4NDEsMHgzRSwweDJCLDB4REYsMHhGRCwKLSAgICAw
eEE1LDB4NTEsMHg0NCwweDQ5LDB4RkYsMHhBQSwweEFDLDB4RDYsMHhDNSwweDUxLDB4NjQsMHg0
OSwweEFBLDB4M0YsMHhBRCwweDI5LAotICAgIDB4NDgsMHg2QSwweEM1LDB4NTEsMHhGRCwweEJG
LDB4M0QsMHgzOSwweEFDLDB4OTMsMHg4OCwweDcyLDB4QUQsMHgyRCwweDI5LDB4MkYsCi0gICAg
MHgwRSwweDlDLDB4QUQsMHg5MywweERELDB4NUYsMHhBQiwweEFCLDB4RUQsMHg5QiwweDhDLDB4
OEIsMHgyNywweEVGLDB4N0UsMHhBOCwKLSAgICAweENELDB4OTMsMHg4QywweDhCLDB4RkEsMHg3
QSwweDZBLDB4NzYsMHhBRCwweDkzLDB4NkIsMHg4QiwweEI2LDB4REYsMHhGQiwweDVFLAotICAg
IDB4OEMsMHg5MywweDRCLDB4ODMsMHhDMCwweEJELDB4QjcsMHg2QSwweENELDB4OTMsMHg0Qiww
eDgzLDB4MDIsMHgwQSwweDNCLDB4MkQsCi0gICAgMHhDRCwweDkzLDB4QUMsMHg5MywweDlBLDB4
MzAsMHg5OCwweDVDLDB4MkUsMHhBNCwweENELDB4OTMsMHhFQiwweEZELDB4REYsMHgzNSwKLSAg
ICAweDJFLDB4QTQsMHhDRCwweDkzLDB4RkYsMHhGRiwweDZGLDB4Q0QsMHgyRSwweEE0LDB4Q0Qs
MHg5MywweDhCLDB4RUYsMHg5QiwweEJGLAotICAgIDB4MkUsMHhBNCwweEVFLDB4OUIsMHhGQSww
eDgyLDB4QUUsMHg2QiwweDJFLDB4QTQsMHhDRCwweDkzLDB4MDIsMHhBQiwweDdBLDB4RjksCi0g
ICAgMHgyRSwweEE0LDB4Q0QsMHg5MywweEE4LDB4QTgsMHgyQiwweEFELDB4MEQsMHg5QywweEND
LDB4OTMsMHgwMCwweDIwLDB4QTgsMHg1QSwKLSAgICAweDJELDB4OUMsMHhBQywweDkzLDB4RTgs
MHhFOCwweEZBLDB4NUYsMHhDRCwweDkzLDB4QUMsMHg5MywweDgzLDB4RUYsMHhBQywweDM5LAot
ICAgIDB4RUQsMHg5QiwweEFDLDB4OTMsMHgzRiwweERGLDB4RUIsMHg3QSwweEVELDB4OUIsMHhD
QywweDkzLDB4MDAsMHgyQSwweEZGLDB4OTUsCi0gICAgMHgwRCwweDlDLDB4Q0MsMHg5MywweDhB
LDB4MjgsMHgyQiwweDJCLDB4NEYsMHhBNCwweEVELDB4OUIsMHgwRiwweEFGLDB4REYsMHg2RCwK
LSAgICAweDQzLDB4NTEsMHgyMywweDQ5LDB4MTcsMHg5NSwweEFBLDB4MzksMHg2MywweDUxLDB4
MjMsMHg0OSwweDZBLDB4RUEsMHhFRSwweDdELAotICAgIDB4NjQsMHg1MSwweDIzLDB4NDksMHhD
QiwweDczLDB4RUUsMHg2OSwweDY0LDB4NTEsMHgyMywweDQ5LDB4QUEsMHg2QSwweDdGLDB4RUQs
Ci0gICAgMHg0MywweDQ5LDB4MDIsMHg0OSwweDZDLDB4NUYsMHg1NywweDU4LDB4MjIsMHg0OSww
eEUxLDB4NDAsMHhFQywweERFLDB4RUIsMHhBRSwKLSAgICAweDAyLDB4NDksMHhFMiwweDQwLDB4
RkUsMHg4QSwweEYyLDB4OEEsMHgyMywweDQ5LDB4RTIsMHg0MCwweEU3LDB4QUYsMHg5OSwweDU1
LAotICAgIDB4MjMsMHg0OSwweEMxLDB4MzgsMHgwQSwweDgyLDB4QUEsMHhCNywweDIyLDB4NDks
MHhFMywweDQwLDB4QUEsMHgyQiwweEFCLDB4RkYsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCww
eDc3LDB4QjcsMHgxNywweEZCLDB4MjMsMHg0OSwweEUzLDB4NDAsMHhDMywweDhCLDB4OEUsMHgy
RiwKLSAgICAweDQzLDB4NTEsMHgwMywweDQ5LDB4REQsMHg0MywweEVELDB4QkQsMHg0OSwweDkz
LDB4NDMsMHg1MSwweDI1LDB4MkQsMHgyRCwweDBELAotICAgIDB4QUEsMHg5QiwweDY5LDB4OTMs
MHhGNywweEFFLDB4RTMsMHg2QiwweDhBLDB4OUIsMHg0OSwweDkzLDB4QkEsMHhGOCwweEZBLDB4
RUYsCi0gICAgMHg2OSwweDlCLDB4NDksMHg5MywweEQ2LDB4NTUsMHhFNSwweDU1LDB4ODksMHg5
QiwweDI4LDB4OTMsMHhENywweDY3LDB4MTcsMHgzRCwKLSAgICAweDhBLDB4OUIsMHgyOSwweDkz
LDB4N0QsMHg3RiwweDdBLDB4QzAsMHg2QSwweDlCLDB4MjksMHg5MywweDZCLDB4M0UsMHhCQSww
eEJFLAotICAgIDB4OEEsMHg5QiwweDQ5LDB4OTMsMHgyNywweDBGLDB4QUEsMHhCRiwweENCLDB4
QTMsMHgyOSwweDhCLDB4OEEsMHhBQSwweEVBLDB4RkYsCi0gICAgMHg4QSwweDlCLDB4NjYsMHg3
QSwweEEwLDB4NzgsMHg3RSwweDU3LDB4QTcsMHg3QSwweDQ2LDB4NzIsMHhGOCwweDdCLDB4RkUs
MHhGRiwKLSAgICAweDg3LDB4N0EsMHgyNSwweDZBLDB4RkYsMHg2QSwweEFCLDB4QUIsMHg4Niww
eDdBLDB4NDUsMHg2QSwweEVCLDB4QUQsMHhCNiwweEU4LAotICAgIDB4ODcsMHg3MiwweDQ2LDB4
NzIsMHhGNywweDg3LDB4MDgsMHg2QSwweDg3LDB4N0EsMHgwNiwweDYyLDB4ODIsMHg4MCwweDgy
LDB4NzIsCi0gICAgMHg0NiwweDZBLDB4MjMsMHg0OSwweEUwLDB4RkEsMHg3QSwweEQ2LDB4ODQs
MHg1OSwweDAyLDB4NDEsMHhBOCwweEJFLDB4NzcsMHg3RiwKLSAgICAweDQzLDB4NDksMHgyMyww
eDQxLDB4REMsMHhENywweEE1LDB4ODksMHg2MywweDQ5LDB4MjMsMHg0OSwweDk3LDB4MkYsMHgy
QSwweDBBLAotICAgIDB4QTUsMHg1OSwweDY0LDB4NTEsMHhCRCwweDJELDB4OEYsMHhCQiwweDg0
LDB4NTEsMHg0MywweDQ5LDB4RUUsMHg2OCwweEZFLDB4RkMsCi0gICAgMHg2NCwweDQ5LDB4NDMs
MHg0OSwweDFBLDB4OTUsMHgzNywweDk4LDB4ODUsMHg0OSwweDQ0LDB4NDksMHhGRiwweEFFLDB4
QkEsMHhFQiwKLSAgICAweDY0LDB4NDksMHgyNCwweDQxLDB4N0YsMHhFQywweDZFLDB4N0UsMHg0
NCwweDQ5LDB4MjQsMHg0MSwweDJBLDB4NkYsMHhFNSwweDJELAotICAgIDB4MjMsMHg0MSwweDAz
LDB4NDEsMHhFQywweEZBLDB4MjMsMHhFMCwweDIzLDB4NDEsMHhDMiwweDM4LDB4MkUsMHhBRSww
eEFBLDB4RjQsCi0gICAgMHhBNSwweDU5LDB4MDMsMHg0MSwweDA5LDB4MDUsMHhGNSwweDU1LDB4
QzUsMHg1OSwweDIzLDB4NDksMHhBOCwweEFBLDB4QUEsMHhCRCwKLSAgICAweEE0LDB4NTEsMHg0
MywweDUxLDB4RTgsMHhGQSwweEZFLDB4N0UsMHg2NCwweDUxLDB4MDMsMHg0MSwweEZGLDB4RUEs
MHhGQSwweDZDLAotICAgIDB4MjMsMHg0MSwweEExLDB4MzAsMHhFOCwweEVBLDB4N0EsMHg3RSww
eDAzLDB4MzksMHhBMSwweDMwLDB4QUIsMHg4QiwweEFELDB4QkUsCi0gICAgMHhFMiwweDM4LDB4
QTEsMHgyOCwweDAyLDB4MjgsMHhFRSwweDc4LDB4MDMsMHgzOSwweEMyLDB4MzAsMHg1RSwweEFB
LDB4ODIsMHg1MywKLSAgICAweEUzLDB4MzAsMHg4MSwweDI4LDB4ODIsMHg4QSwweEVGLDB4REYs
MHhFMywweDMwLDB4ODEsMHgyMCwweEZDLDB4RkUsMHhGNywweDVELAotICAgIDB4QTEsMHgyMCww
eDQwLDB4MTgsMHhGOCwweEY4LDB4RjgsMHg3QSwweDgyLDB4MjAsMHg0MCwweDE4LDB4QjksMHgy
RiwweEFCLDB4QUYsCi0gICAgMHhDMiwweDI4LDB4NjEsMHgxOCwweEI3LDB4MkYsMHgyQiwweDAz
LDB4MDMsMHgzMSwweEEyLDB4MjgsMHg5RiwweDg3LDB4MkIsMHgyQSwKLSAgICAweDQ0LDB4NDEs
MHhDMywweDMwLDB4MkQsMHhCQiwweDhBLDB4QkEsMHg0NCwweDQxLDB4QzIsMHgyOCwweDAyLDB4
MDgsMHhCRSwweERFLAotICAgIDB4ODUsMHg0MSwweEEyLDB4MjgsMHgwQSwweEE4LDB4RkUsMHhG
NywweDQ0LDB4NDEsMHhDMiwweDMwLDB4ODAsMHhBQSwweEVGLDB4NUQsCi0gICAgMHgyNCwweDM5
LDB4RTMsMHgzMCwweDg4LDB4QUIsMHgzRCwweEQ1LDB4MjMsMHg0MSwweDAzLDB4MzksMHg1RCww
eDVGLDB4N0IsMHg1NSwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4NzIsMHg5OCwweEFBLDB4
QTAsMHgwMywweDM5LDB4QTIsMHgzMCwweEU1LDB4MkUsMHg4QSwweDhBLAotICAgIDB4MDMsMHgz
OSwweEMzLDB4MzAsMHhFMiwweEVBLDB4RkUsMHhGNSwweEMyLDB4MzgsMHhFMywweDMwLDB4RjUs
MHhCRiwweEZELDB4RkYsCi0gICAgMHhFMywweDM4LDB4QTEsMHgyOCwweDAzLDB4QUEsMHhCNiww
eDlGLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFQSwweEFBLDB4MjIsMHhGMiwKLSAgICAweDAzLDB4
MzksMHhBMiwweDMwLDB4QUIsMHhBQiwweEVFLDB4NzgsMHhFMiwweDMwLDB4QzIsMHgzMCwweEUx
LDB4QTAsMHgyMywweEJCLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhCOSwweEI1LDB4QTcs
MHhENSwweEUzLDB4MzAsMHg4MSwweDI4LDB4QjgsMHhGOCwweDdBLDB4N0YsCi0gICAgMHhDMiww
eDI4LDB4ODIsMHgyOCwweDI4LDB4MkYsMHhBRiwweEY1LDB4RTMsMHgzMCwweEEyLDB4MjgsMHgw
QSwweEFGLDB4QkQsMHhFOSwKLSAgICAweDA0LDB4MzEsMHhDMywweDMwLDB4QkYsMHhFRCwweEZG
LDB4QUQsMHhFMywweDMwLDB4QzIsMHgyOCwweENDLDB4OTgsMHhGMCwweEMwLAotICAgIDB4MDMs
MHgzOSwweEUzLDB4MzAsMHg1NywweDdCLDB4RUIsMHhBNSwweEUzLDB4MzAsMHhBMiwweDI4LDB4
N0YsMHhGRiwweDJFLDB4RTIsCi0gICAgMHhFMywweDMwLDB4ODEsMHgyOCwweEFELDB4QUIsMHhB
QSwweEVBLDB4QzIsMHgyOCwweDgyLDB4MjgsMHg3OCwweEIwLDB4QzIsMHg4MCwKLSAgICAweEUz
LDB4MzAsMHg4MSwweDIwLDB4NTUsMHg3RiwweEVBLDB4QTAsMHhDMiwweDI4LDB4NjEsMHgyMCww
eEZELDB4RkIsMHhBQSwweDAwLAotICAgIDB4RTIsMHgzMCwweDgxLDB4MjAsMHhBRiwweEFELDB4
QkUsMHgyOCwweDIzLDB4MzksMHhDMiwweDI4LDB4RkQsMHhGRiwweEVCLDB4OEYsCi0gICAgMHhF
MywweDMwLDB4QTIsMHgyOCwweDJBLDB4QTAsMHhBMCwweEY4LDB4MDMsMHgzMSwweEMyLDB4MzAs
MHgxNSwweEI1LDB4QTcsMHhBRiwKLSAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4OUMsMHhGRSww
eEZGLDB4NTYsMHhFMywweDMwLDB4QTIsMHgyOCwweDAyLDB4MDIsMHhFQSwweERGLAotICAgIDB4
QzIsMHgzMCwweEEyLDB4MjgsMHhBRSwweDBFLDB4MkUsMHhCNywweEUzLDB4MzAsMHhDMiwweDI4
LDB4REUsMHg5NiwweDJGLDB4RkYsCi0gICAgMHgwMywweDMxLDB4QTIsMHgyOCwweDZBLDB4RTIs
MHhBMCwweEFCLDB4MDMsMHgzMSwweEEyLDB4MzAsMHhBOSwweDIyLDB4ODIsMHhBOCwKLSAgICAw
eDAzLDB4MzEsMHhFMywweDMwLDB4MjIsMHg2QSwweEYxLDB4QjIsMHgyNCwweDM5LDB4QTEsMHgy
OCwweDBBLDB4QUEsMHhERiwweDVGLAotICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHhGOCwweDdB
LDB4N0YsMHg1RCwweEUzLDB4MzAsMHhBMiwweDI4LDB4RjAsMHhGOCwweEZBLDB4N0IsCi0gICAg
MHhFMywweDMwLDB4QTIsMHgyOCwweDA1LDB4RUQsMHg5RiwweEFGLDB4RTMsMHgzMCwweEMyLDB4
MjgsMHg4RSwweDJGLDB4MEQsMHhBNSwKLSAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4NTYsMHgy
QSwweDM5LDB4MkYsMHhFMywweDMwLDB4QTIsMHgyOCwweDA4LDB4QkUsMHgzRSwweDJBLAotICAg
IDB4MjMsMHgzMSwweEUyLDB4MzAsMHg5NywweEM3LDB4OTUsMHhGNSwweDAzLDB4MzEsMHhFMiww
eDMwLDB4RTAsMHg2OCwweDQwLDB4RDcsCi0gICAgMHgwMywweDMxLDB4QTEsMHgyOCwweDIyLDB4
ODIsMHhDMiwweEZBLDB4MDMsMHgzOSwweEMxLDB4MjgsMHg4MiwweDAzLDB4MDksMHgwNSwKLSAg
ICAweDQ0LDB4NDEsMHgwMywweDM5LDB4RkIsMHgyQiwweEFCLDB4RUQsMHg2NCwweDQ5LDB4MjMs
MHg0MSwweDhGLDB4QUQsMHg5RCwweEY1LAotICAgIDB4NjQsMHg0OSwweDIzLDB4NDEsMHg3OSww
eEVFLDB4RTIsMHhFMCwweEU1LDB4NTksMHg0MywweDQxLDB4MkYsMHhBRCwweEFCLDB4QUEsCi0g
ICAgMHhDOCwweDdBLDB4RTQsMHg1MSwweEI3LDB4QkQsMHgyRCwweDJGLDB4Q0QsMHg5QiwweEM5
LDB4N0EsMHgyRCwweDBELDB4MjksMHgwQiwKLSAgICAweDBGLDB4OUMsMHhDRCwweDkzLDB4QUYs
MHhBOSwweEMzLDB4MkYsMHhFRCwweDlCLDB4QUQsMHg5MywweEM4LDB4QTIsMHg2QSwweDgyLAot
ICAgIDB4RUUsMHg5QiwweDhDLDB4OEIsMHg1RSwweDVBLDB4RTgsMHhBQSwweEFDLDB4OTMsMHg0
QiwweDgzLDB4REEsMHhGQiwweEZGLDB4RjYsCi0gICAgMHg4QiwweDhCLDB4NEIsMHg4MywweEJB
LDB4OTksMHg3NywweEFGLDB4QUQsMHg5MywweDJBLDB4ODMsMHgzNywweDk3LDB4RDUsMHhGNSwK
LSAgICAweENELDB4OTMsMHg2QywweDhCLDB4ODAsMHhCQSwweDJGLDB4MkQsMHhFRCwweDlCLDB4
Q0QsMHg5MywweDI2LDB4MkYsMHgzNSwweEY1LAotICAgIDB4MEQsMHg5QywweEFDLDB4OTMsMHg4
MCwweDBBLDB4MzksMHgyQiwweDBFLDB4OUMsMHhDRCwweDlCLDB4QUEsMHhCOSwweEUwLDB4RTIs
Ci0gICAgMHhFRCwweDlCLDB4Q0QsMHg5MywweDY4LDB4MjAsMHgwQSwweEUyLDB4MEUsMHg5Qyww
eENELDB4OTMsMHg2MiwweERFLDB4Q0IsMHhDRSwKLSAgICAweEVELDB4OUIsMHhDRCwweDkzLDB4
RTMsMHg2OCwweDU3LDB4OTcsMHhFRCwweDlCLDB4QUQsMHg5MywweEY2LDB4RUUsMHgzQSwweEFD
LAotICAgIDB4RUQsMHg5MywweDhDLDB4OTMsMHhEQSwweEFBLDB4MkEsMHhBOCwweDBELDB4OUMs
MHhBQywweDkzLDB4RkQsMHg1NSwweEQ0LDB4NUYsCi0gICAgMHhDRCwweDkzLDB4NkIsMHg4Qiww
eEUwLDB4MkEsMHgyMiwweEEyLDB4Q0QsMHg5MywweDhDLDB4OTMsMHgyQSwweDAyLDB4QUUsMHgy
RCwKLSAgICAweEVELDB4OUIsMHg4QywweDhCLDB4MDIsMHgwQSwweDJBLDB4QjYsMHgyRSwweEE0
LDB4Q0QsMHg5MywweDhFLDB4RkUsMHhERiwweEZELAotICAgIDB4NDQsMHg1MSwweDAzLDB4NDks
MHhGMiwweEU4LDB4RkIsMHg5NywweDQzLDB4NTEsMHgwMywweDQ5LDB4M0EsMHhBQiwweDJGLDB4
QTYsCi0gICAgMHg2MywweDUxLDB4MDMsMHg0OSwweEVCLDB4QTAsMHhGQiwweEQ3LDB4NDQsMHg1
MSwweDIzLDB4NDksMHg2QiwweEVGLDB4NTIsMHg1NSwKLSAgICAweDIyLDB4NDksMHgwMiwweDQx
LDB4ODAsMHgwRiwweEJBLDB4QjgsMHgyMywweDQ5LDB4MDIsMHg0MSwweEQ2LDB4REMsMHgwQyww
eEJFLAotICAgIDB4MjMsMHg0OSwweEMxLDB4MzgsMHhBMiwweEU2LDB4NjIsMHhBQSwweDIzLDB4
NDksMHhDMSwweDM4LDB4RkEsMHg2RiwweDJGLDB4MEEsCi0gICAgMHgyMywweDQxLDB4QzEsMHg0
MCwweEY2LDB4ODgsMHhFQSwweENFLDB4MDIsMHg0MSwweEMyLDB4MzgsMHgyOCwweENELDB4QUIs
MHg4QiwKLSAgICAweDIzLDB4NDEsMHhFMywweDQwLDB4RUUsMHgwRiwweDI3LDB4M0UsMHgyMyww
eDQ5LDB4RTIsMHg0MCwweEIyLDB4RDAsMHhFQSwweEZCLAotICAgIDB4NDMsMHg1MSwweEUyLDB4
NDAsMHgyQiwweDBGLDB4M0QsMHhCRiwweDY5LDB4OTMsMHhDNCwweDU5LDB4MkQsMHgwOSwweDI5
LDB4MEQsCi0gICAgMHhBOSwweDlCLDB4NjksMHg5MywweDdGLDB4NTMsMHg3RSwweDU0LDB4OEEs
MHg5QiwweDQ5LDB4OTMsMHhFRiwweEVBLDB4RTgsMHg2RCwKLSAgICAweDY5LDB4OTMsMHgyOCww
eDhCLDB4RkUsMHhBOSwweEZFLDB4MEUsMHg4QSwweDlCLDB4NDksMHg5MywweEE1LDB4MkQsMHgw
RCwweEEwLAotICAgIDB4QUIsMHg5QiwweDQ5LDB4OTMsMHg0MiwweEJBLDB4RkEsMHhENSwweDhB
LDB4OUIsMHg0QSwweDkzLDB4OUYsMHhBQiwweEZBLDB4REYsCi0gICAgMHg4QSwweDlCLDB4RTks
MHg4QSwweEJBLDB4RTgsMHhGOCwweEZBLDB4MkEsMHg5MywweDA2LDB4NkEsMHg4MCwweEU4LDB4
RkEsMHg3RSwKLSAgICAweDg3LDB4N0EsMHgyNSwweDZBLDB4QkMsMHhGOCwweEVFLDB4N0YsMHg4
NywweDcyLDB4NDYsMHg3MiwweEFELDB4ODMsMHg4QSwweDU4LAotICAgIDB4ODcsMHg3MiwweDQ2
LDB4NzIsMHhBQSwweEJBLDB4QUIsMHhERCwweEE3LDB4N0EsMHg0NiwweDcyLDB4NUYsMHg5QSww
eEJGLDB4MEEsCi0gICAgMHhBNywweDdBLDB4NDYsMHg2QSwweEVCLDB4RUUsMHhDMiwweDY4LDB4
NDYsMHg3MiwweDY0LDB4NTEsMHhFMCwweEUwLDB4NzgsMHg1RSwKLSAgICAweDg0LDB4NTksMHgw
MiwweDQxLDB4RkMsMHg1RSwweEZGLDB4REMsMHg0MywweDQ5LDB4MDIsMHg0MSwweEMyLDB4QUEs
MHhBRCwweEJGLAotICAgIDB4NjQsMHg1MSwweDAyLDB4NDEsMHhBOSwweDhGLDB4QUYsMHgyQSww
eEE1LDB4NTEsMHg0MywweDQ5LDB4QkYsMHhBOSwweEJCLDB4ODIsCi0gICAgMHhBNCwweDUxLDB4
NDMsMHg0OSwweEE4LDB4QzgsMHg2QSwweEZFLDB4QTQsMHg1MSwweDQzLDB4NDksMHhEQSwweDM1
LDB4MjUsMHhFRiwKLSAgICAweDg0LDB4NDksMHg0NCwweDQ5LDB4N0EsMHg3OCwweEEwLDB4ODAs
MHg4NSwweDQ5LDB4NDQsMHg0OSwweEVCLDB4OEIsMHgzNywweDE3LAotICAgIDB4ODQsMHg0OSww
eDQ0LDB4NDksMHg3NywweEZFLDB4RjYsMHhEQiwweDQ0LDB4NDEsMHgwMywweDQxLDB4QTgsMHhB
RSwweEFFLDB4RUEsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHg0MSwweEVFLDB4MkYsMHhBRCwweEJB
LDB4MjQsMHg0MSwweEUzLDB4MzgsMHhENiwweEZCLDB4RkMsMHhBQSwKLSAgICAweDAzLDB4NDEs
MHhDMiwweDM4LDB4QTgsMHg1QSwweDc3LDB4NUUsMHg2NCwweDUxLDB4QTIsMHgzOCwweDBCLDB4
QUYsMHhCNSwweEY1LAotICAgIDB4ODQsMHg1MSwweDAzLDB4NDEsMHhBMCwweEEyLDB4OEEsMHhB
NSwweDY0LDB4NTEsMHgwMiwweDQxLDB4RTgsMHhFRSwweDZBLDB4RUIsCi0gICAgMHgyMywweDQx
LDB4QzIsMHgzMCwweDVGLDB4N0IsMHhFQiwweEU4LDB4MDMsMHgzOSwweEMyLDB4MzgsMHhGRiww
eEZGLDB4QTcsMHg4RiwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4NTcsMHhERiwweEZFLDB4
RkEsMHhFMywweDMwLDB4ODEsMHgyOCwweEEyLDB4RUEsMHhFQSwweDVBLAotICAgIDB4QTIsMHgy
OCwweDYxLDB4MjAsMHhBMCwweEEyLDB4N0EsMHg3RiwweDgxLDB4MjAsMHg0MSwweDE4LDB4ODAs
MHhFOCwweDdFLDB4N0YsCi0gICAgMHg2MSwweDIwLDB4NDEsMHgxOCwweEUyLDB4RUYsMHhGRCww
eDk1LDB4QTIsMHgyOCwweDQxLDB4MTgsMHhCRCwweEFGLDB4QUYsMHgzRiwKLSAgICAweEUzLDB4
MjgsMHg4MSwweDIwLDB4OEIsMHhBRCwweEZGLDB4NTcsMHhFMywweDMwLDB4ODEsMHgyMCwweDBB
LDB4QUIsMHhFRCwweEY5LAotICAgIDB4RTMsMHgzMCwweDgxLDB4MjAsMHg4MCwweEVGLDB4RkQs
MHg1NywweEMyLDB4MjgsMHg4MSwweDIwLDB4MjAsMHhGMiwweEFGLDB4QUYsCi0gICAgMHhDMyww
eDMwLDB4ODIsMHgyMCwweEE3LDB4OTcsMHhGRiwweEJFLDB4QzMsMHgyOCwweDgyLDB4MjgsMHhF
QSwweEVCLDB4RkUsMHg3NiwKLSAgICAweDAzLDB4MzksMHg4MSwweDIwLDB4QUIsMHgyRiwweEZE
LDB4RjUsMHgyNCwweDM5LDB4RTIsMHgzMCwweEJGLDB4QkUsMHhBRSwweEI1LAotICAgIDB4MjQs
MHgzOSwweEUzLDB4MzgsMHg3QSwweEYzLDB4REQsMHg3NywweDAzLDB4MzksMHhDMiwweDMwLDB4
RkYsMHhGQiwweEY4LDB4RUUsCi0gICAgMHhFMywweDMwLDB4QTEsMHgyOCwweDNFLDB4RjgsMHg3
MCwweEEyLDB4MDMsMHgzOSwweEEyLDB4MjgsMHg4RiwweEVCLDB4RkIsMHg3RiwKLSAgICAweEMy
LDB4MzAsMHg4MSwweDI4LDB4MjgsMHgyOCwweEE4LDB4QkQsMHhFMiwweDMwLDB4QTIsMHgzMCww
eEVBLDB4QUEsMHg4RiwweDI2LAotICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHg0MCwweDgyLDB4
MDAsMHgwMiwweEMyLDB4MzAsMHhFMywweDI4LDB4QkEsMHgyQSwweDBFLDB4QkUsCi0gICAgMHhD
MiwweDMwLDB4QTIsMHgyOCwweDVBLDB4NUUsMHhFOCwweDU4LDB4QTIsMHgyOCwweDgxLDB4MjAs
MHg3QiwweDZCLDB4NTgsMHg3MCwKLSAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4REYsMHhCRiww
eDFCLDB4MkIsMHhDMywweDMwLDB4QTIsMHgyOCwweDJELDB4REYsMHhDQSwweDJCLAotICAgIDB4
RTMsMHgzMCwweEEyLDB4MjgsMHgyQiwweEVBLDB4QUIsMHgzRiwweDAzLDB4MzEsMHhDMiwweDMw
LDB4RUEsMHhGQiwweEVBLDB4MDksCi0gICAgMHgwMywweDMxLDB4QzMsMHgzMCwweDhGLDB4QkYs
MHhBRiwweEFGLDB4RTMsMHgzMCwweEExLDB4MjgsMHhCMiwweEJDLDB4RjAsMHhGQSwKLSAgICAw
eEUzLDB4MzAsMHhBMiwweDI4LDB4RUIsMHhBQiwweEI5LDB4QkIsMHhFMywweDMwLDB4QTIsMHgy
OCwweEFGLDB4MjYsMHgyQSwweEFBLAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHg1NywweDlG
LDB4MzksMHg0MywweDI0LDB4MzksMHhDMiwweDI4LDB4N0UsMHhFRSwweEZFLDB4REMsCi0gICAg
MHgyMywweDM5LDB4RTMsMHgzMCwweEM1LDB4QkQsMHhFRiwweEY1LDB4MDMsMHgzOSwweEMyLDB4
MzAsMHhFRSwweDdBLDB4RTgsMHhFOCwKLSAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4NTIsMHgx
NSwweEY3LDB4RkIsMHgwMiwweDMxLDB4QTIsMHgyOCwweDNGLDB4RkYsMHhCRCwweEZGLAotICAg
IDB4RTMsMHgzMCwweEEyLDB4MjgsMHhGQywweEZDLDB4NUYsMHg1NywweEUzLDB4MzAsMHhBMiww
eDI4LDB4QkQsMHhFMywweDdCLDB4RUEsCi0gICAgMHhDMiwweDI4LDB4QTIsMHgyOCwweERGLDB4
RDYsMHhBNSwweDhGLDB4QzIsMHgzMCwweEEyLDB4MjgsMHhENiwweDk1LDB4QTUsMHhBRCwKLSAg
ICAweDAzLDB4MzEsMHhDMiwweDI4LDB4MzUsMHhBNSwweEFELDB4OUQsMHgwMywweDMxLDB4QzMs
MHgzMCwweDA4LDB4ODAsMHhBQSwweERFLAotICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg3RSww
eEE3LDB4RUQsMHg2QiwweDAzLDB4MzEsMHhBMiwweDI4LDB4N0UsMHhGOCwweEZBLDB4QUEsCi0g
ICAgMHhFMywweDMwLDB4QzIsMHgyOCwweDc5LDB4RkYsMHg2QiwweEMwLDB4MDMsMHgzMSwweEMy
LDB4MjgsMHg1NSwweERELDB4RjMsMHhCOCwKLSAgICAweEMyLDB4MzAsMHhFMywweDI4LDB4QUUs
MHhBOSwweEFGLDB4QjcsMHhFMywweDMwLDB4QTIsMHgyOCwweEY5LDB4M0UsMHhCQSwweDNBLAot
ICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHhCNywweDM2LDB4RjgsMHhCOCwweDAzLDB4MzEsMHhD
MiwweDMwLDB4QTcsMHhBQSwweEJFLDB4RkUsCi0gICAgMHgwMywweDMxLDB4QzIsMHgyOCwweDJC
LDB4OEUsMHgyNywweDBGLDB4NDMsMHgzOSwweEUyLDB4MzAsMHg1NSwweDdGLDB4RUYsMHhGMiwK
LSAgICAweDAyLDB4MzEsMHhDMiwweDMwLDB4NzIsMHg0MiwweDc2LDB4N0UsMHgwMywweDM5LDB4
QTEsMHgyOCwweDNELDB4QUQsMHgzRCwweEE3LAotICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHhG
OSwweEJGLDB4M0QsMHgyRCwweEE1LDB4NTEsMHg0MywweDQxLDB4NTUsMHhENSwweDhCLDB4ODMs
Ci0gICAgMHhBNSwweDUxLDB4NjQsMHg0OSwweDU3LDB4MDcsMHgyRCwweEFFLDB4MDYsMHg1QSww
eDg0LDB4NDksMHhCNywweEVGLDB4QUYsMHgyRCwKLSAgICAweDBBLDB4ODMsMHhFNSwweDU5LDB4
MkYsMHhBRCwweDI5LDB4MkYsMHhFRCwweDlCLDB4NEIsMHg4QiwweDJGLDB4MEYsMHgzRCwweDk5
LAotICAgIDB4MEUsMHg5QywweDhDLDB4OTMsMHhBQSwweDBBLDB4RUYsMHg1RiwweEVELDB4OUIs
MHg4QywweDkzLDB4MjAsMHhBQSwweEFBLDB4RUYsCi0gICAgMHhDRCwweDkzLDB4OEMsMHg5Myww
eEMwLDB4QzQsMHg2QiwweDVFLDB4OEMsMHg4QiwweDRCLDB4ODMsMHhFMCwweEJFLDB4RTgsMHhG
NiwKLSAgICAweDhDLDB4OEIsMHg0QiwweDgzLDB4RUYsMHg3RSwweEZGLDB4RDUsMHg2QiwweDhC
LDB4MEEsMHg3QiwweEJFLDB4RDgsMHhERSwweDdDLAotICAgIDB4Q0MsMHg5MywweDI5LDB4N0Is
MHgyRiwweEFGLDB4QUQsMHhGRCwweEVELDB4OUIsMHg4QiwweDhCLDB4QUEsMHhBQSwweDNCLDB4
M0QsCi0gICAgMHhFRCwweDlCLDB4QUMsMHg5MywweDIyLDB4MzgsMHhBQSwweEY1LDB4MEUsMHg5
QywweDhDLDB4OEIsMHhBOCwweDJBLDB4QUIsMHg3RiwKLSAgICAweDJFLDB4QTQsMHhBQywweDkz
LDB4RjgsMHhCRSwweEY3LDB4NzUsMHgwRSwweDlDLDB4QUMsMHg5MywweDNBLDB4QkUsMHhFQiww
eDlGLAotICAgIDB4Q0QsMHg5MywweDhDLDB4OEIsMHgwMCwweDAyLDB4MEEsMHgyQywweENELDB4
OTMsMHg4QywweDhCLDB4MzgsMHhEMCwweDZGLDB4RUUsCi0gICAgMHhDRCwweDkzLDB4OEMsMHg4
QiwweEEwLDB4MzAsMHhGQSwweEY3LDB4Q0QsMHg5MywweDhDLDB4OEIsMHgyOCwweDBDLDB4MDgs
MHg4OCwKLSAgICAweENELDB4OTMsMHg2QywweDhCLDB4QUEsMHhGRSwweEE2LDB4MjIsMHhDQyww
eDkzLDB4NkIsMHg4QiwweDMyLDB4RkEsMHhFMiwweEU4LAotICAgIDB4RUQsMHg5QiwweDhDLDB4
OEIsMHhFRiwweEVCLDB4Q0YsMHg1RCwweDBFLDB4OUMsMHhBQywweDkzLDB4QkQsMHhCQywweEZG
LDB4RjUsCi0gICAgMHg0MywweDUxLDB4MDMsMHg0OSwweEVBLDB4RUEsMHhGQiwweDZBLDB4NDMs
MHg1MSwweDAzLDB4NDEsMHhFQiwweEEyLDB4RDMsMHhGRiwKLSAgICAweDIzLDB4NDksMHhFMiww
eDQwLDB4MEIsMHgwRiwweEEyLDB4ODgsMHg0MywweDQ5LDB4RTIsMHg0MCwweEFDLDB4RkMsMHg3
RiwweEVFLAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBQiwweDhGLDB4QkIsMHgyOSwweDIz
LDB4NDksMHhFMiwweDQwLDB4NjIsMHhEQywweDk4LDB4RjgsCi0gICAgMHgwMywweDQ5LDB4RTEs
MHgzOCwweEFBLDB4RjIsMHhGMiwweEQ2LDB4MjMsMHg0MSwweEMxLDB4MzgsMHg4MiwweDhBLDB4
RTMsMHhGRSwKLSAgICAweDAyLDB4NDEsMHhFMiwweDM4LDB4ODksMHhFNSwweEFGLDB4MjUsMHgy
MywweDQ5LDB4RTIsMHgzOCwweEE1LDB4OEQsMHhGRiwweEZCLAotICAgIDB4MDMsMHg0MSwweEUy
LDB4MzgsMHgwOCwweDAyLDB4MjgsMHgwNywweDIzLDB4NDksMHhFMiwweDQwLDB4RkIsMHhGQyww
eEZFLDB4N0YsCi0gICAgMHg0MywweDUxLDB4RTIsMHg0MCwweDNGLDB4QkYsMHgyRiwweDJELDB4
NkEsMHg5MywweEE1LDB4NTksMHgwQiwweDA5LDB4MEIsMHgwQiwKLSAgICAweDhBLDB4OUIsMHg2
OSwweDkzLDB4NjgsMHhDMCwweEEyLDB4MjksMHg4QSwweDlCLDB4NDksMHg5MywweDg3LDB4MDUs
MHgyQSwweEIwLAotICAgIDB4OEEsMHg5QiwweDI4LDB4OEIsMHgyOSwweDBBLDB4RTgsMHhGRSww
eDZBLDB4OUIsMHhFOCwweDgyLDB4QzAsMHg2OCwweDdFLDB4NTcsCi0gICAgMHgyOSwweDhCLDB4
QzgsMHg4MiwweDBBLDB4MkYsMHhBRiwweERELDB4NkEsMHg5MywweDA5LDB4OEIsMHgyMCwweDAz
LDB4QUYsMHhGNSwKLSAgICAweDRBLDB4OTMsMHgwNSwweDZBLDB4ODAsMHhBMCwweEUwLDB4Nzgs
MHg2NywweDdBLDB4RTUsMHg2MSwweEUyLDB4RkUsMHhERSwweERGLAotICAgIDB4NjYsMHg3Miww
eDA1LDB4NkEsMHg4QiwweEVGLDB4QjUsMHg3RiwweDY2LDB4NzIsMHhFNCwweDYxLDB4QTgsMHgy
QiwweDJCLDB4QTksCi0gICAgMHg4NywweDcyLDB4MjYsMHg3MiwweDlBLDB4RUEsMHhFMiwweENB
LDB4QzgsMHg3QSwweDQ2LDB4NkEsMHgyOSwweENGLDB4RkYsMHhENywKLSAgICAweEE3LDB4NzIs
MHg4NCwweDU5LDB4QTAsMHhFQSwweDc4LDB4NUUsMHhFNSwweDYxLDB4MjMsMHg0OSwweEQ4LDB4
REYsMHg3RiwweEZGLAotICAgIDB4NjMsMHg1MSwweDIyLDB4NDEsMHg1QywweDc2LDB4NkEsMHhF
RSwweDQzLDB4NDksMHgwMiwweDQxLDB4RkYsMHg5RiwweDlBLDB4NTgsCi0gICAgMHg2NCwweDUx
LDB4RTIsMHgzOCwweDBBLDB4MEIsMHgyRiwweEFELDB4QTUsMHg1MSwweDY0LDB4NDksMHhDMCww
eDhFLDB4NzcsMHg3NSwKLSAgICAweDg0LDB4NDksMHg0NCwweDQ5LDB4RkEsMHhEOCwweDJBLDB4
MkYsMHhBNSwweDUxLDB4NDMsMHg0OSwweEE2LDB4QTgsMHg4OCwweEFBLAotICAgIDB4ODQsMHg1
MSwweDY0LDB4NDksMHhFMiwweDQyLDB4N0UsMHg1RSwweDg1LDB4NTEsMHgyMywweDQxLDB4QkMs
MHhGNywweDU2LDB4NzcsCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweEEwLDB4NzgsMHhBMyww
eEEzLDB4NjQsMHg0OSwweDIzLDB4NDEsMHg3RiwweENELDB4RkYsMHhERSwKLSAgICAweDY0LDB4
NDksMHgwMywweDM5LDB4QUYsMHhCNywweEU2LDB4RkUsMHg2NCwweDQxLDB4MDMsMHg0MSwweDU3
LDB4N0UsMHg3RiwweERGLAotICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHg3QiwweEEyLDB4RUIs
MHhCRiwweDAzLDB4MzksMHhDMiwweDM4LDB4NTUsMHg1RSwweDVBLDB4RjgsCi0gICAgMHgwMyww
eDQxLDB4QTEsMHgzMCwweDJFLDB4MzcsMHhBRiwweDNCLDB4NDMsMHg0MSwweDAzLDB4NDEsMHgy
MiwweEE4LDB4QUIsMHgwQSwKLSAgICAweDQzLDB4NDEsMHhFMiwweDM4LDB4RkUsMHhGQSwweEUy
LDB4RkEsMHgwMywweDM5LDB4QzIsMHgzOCwweDhBLDB4MkQsMHgyRiwweDJCLAotICAgIDB4MjMs
MHgzOSwweEMyLDB4MzAsMHhGQiwweDdDLDB4RkEsMHhFQiwweEUzLDB4MzAsMHg4MSwweDI4LDB4
NTIsMHg1QSwweDdGLDB4REYsCi0gICAgMHhBMSwweDI4LDB4NDAsMHgyMCwweEY4LDB4NkUsMHhG
QSwweEJBLDB4NjEsMHgyMCwweDQxLDB4MTgsMHhFQSwweEFBLDB4QjAsMHgwMCwKLSAgICAweEEy
LDB4MjgsMHg0MSwweDE4LDB4NTUsMHhGRiwweEZGLDB4MkYsMHhBMiwweDIwLDB4NjEsMHgyMCww
eEI1LDB4QTksMHhBQiwweDg4LAotICAgIDB4QTEsMHgyMCwweDYxLDB4MjAsMHhCRSwweEFGLDB4
QTcsMHgwQiwweEEyLDB4MjgsMHg4MSwweDIwLDB4OEQsMHhCNywweEJCLDB4QjgsCi0gICAgMHhB
MiwweDI4LDB4ODEsMHgyMCwweEJFLDB4M0UsMHhBQSwweEUyLDB4QzIsMHgyOCwweDgxLDB4MjAs
MHgyRiwweEEyLDB4QUYsMHhCRiwKLSAgICAweEEyLDB4MjgsMHg4MiwweDIwLDB4MDgsMHg4QSww
eDdFLDB4RTksMHhBMiwweDI4LDB4ODEsMHgyMCwweEFDLDB4N0EsMHhGRiwweEZCLAotICAgIDB4
QTIsMHgyOCwweDgxLDB4MjAsMHhCRiwweDVFLDB4NkYsMHg5RiwweDI0LDB4MzksMHhBMiwweDI4
LDB4QUYsMHhCRCwweEI1LDB4RDUsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEEwLDB4ODgs
MHhBQSwweEE5LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFRiwweEE3LDB4N0UsMHg5NywKLSAgICAw
eEExLDB4MzgsMHhFMiwweDMwLDB4RjcsMHhENSwweEE3LDB4RjcsMHhDMiwweDMwLDB4ODEsMHgy
OCwweDY4LDB4RkEsMHhCRiwweEY4LAotICAgIDB4QzIsMHgzMCwweDgxLDB4MjgsMHgzNSwweEVD
LDB4RkYsMHhCQSwweEUyLDB4MzAsMHhBMiwweDMwLDB4MDcsMHgyMSwweDJELDB4QkIsCi0gICAg
MHhFMiwweDMwLDB4QTIsMHgyOCwweDBDLDB4ODAsMHgyMCwweEJFLDB4RTMsMHgzMCwweEMyLDB4
MjgsMHgzQiwweEJDLDB4MkUsMHhERiwKLSAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4NTYsMHhE
NywweEUyLDB4QkYsMHhDMiwweDMwLDB4QTIsMHgyOCwweDVELDB4N0QsMHg2MiwweDU4LAotICAg
IDB4QTIsMHgyOCwweDgxLDB4MjAsMHgyRiwweDI1LDB4MkYsMHgwQSwweEMyLDB4MjgsMHhBMiww
eDI4LDB4QkUsMHg1MywweDVELDB4NTUsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEY3LDB4
RkEsMHhBQiwweDI3LDB4RTMsMHgzMCwweEEyLDB4MjgsMHgwQiwweDZFLDB4QUYsMHhDQSwKLSAg
ICAweDI0LDB4MzksMHhDMiwweDMwLDB4RUYsMHhDOSwweEE1LDB4RDUsMHgwMywweDMxLDB4QTIs
MHgyOCwweDVFLDB4RkEsMHg3RSwweEFBLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCRSww
eDFGLDB4OTcsMHhCNSwweEUzLDB4MzAsMHhDMiwweDMwLDB4NjQsMHhFMCwweEEwLDB4M0QsCi0g
ICAgMHgwNCwweDM5LDB4QzIsMHgzMCwweEZGLDB4RTUsMHhDMywweEFFLDB4MDMsMHgzOSwweEMy
LDB4MzAsMHhENCwweEQ2LDB4NzcsMHhCNywKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4MkQs
MHhCRCwweEZELDB4NkIsMHgwMywweDM5LDB4QzIsMHgzMCwweENBLDB4ODIsMHhDOCwweDgyLAot
ICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhCQSwweEJBLDB4RTgsMHhGQywweDAzLDB4MzEsMHhD
MiwweDMwLDB4NzcsMHhGNSwweEE1LDB4NTUsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDdE
LDB4RkYsMHhGNiwweEJFLDB4MjQsMHgzOSwweEMyLDB4MjgsMHg3NSwweEZELDB4QUQsMHgyNSwK
LSAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4RkQsMHhERiwweEYyLDB4RTgsMHhDMiwweDI4LDB4
ODIsMHgyOCwweDIyLDB4MEEsMHhBOCwweEJFLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHgw
MiwweDgyLDB4N0IsMHhERCwweDAzLDB4MzEsMHhDMywweDI4LDB4N0UsMHhFRiwweEFGLDB4Q0Qs
Ci0gICAgMHgwMywweDM5LDB4QzMsMHgzMCwweEMyLDB4OEIsMHhGQiwweDlBLDB4MDMsMHgzMSww
eEMyLDB4MzAsMHhFQiwweEY3LDB4NUUsMHhENywKLSAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4
QTgsMHhCQSwweDdCLDB4RkIsMHgwMywweDM5LDB4QzIsMHgyOCwweDlBLDB4QTAsMHg1RSwweDVE
LAotICAgIDB4RTIsMHgzMCwweEMyLDB4MjgsMHhBRiwweDNFLDB4NkQsMHhGOSwweDAzLDB4MzEs
MHhDMiwweDI4LDB4OTcsMHhENywweDk1LDB4MTUsCi0gICAgMHgwMywweDMxLDB4QzIsMHgyOCww
eEZCLDB4MzYsMHgyQSwweDg4LDB4MjMsMHgzOSwweEUzLDB4MzAsMHg3RCwweEVBLDB4NkIsMHhC
RiwKLSAgICAweDAzLDB4MzEsMHhFMiwweDMwLDB4QjUsMHhGMywweEEzLDB4MzUsMHg0MywweDM5
LDB4MDMsMHgzMSwweDdGLDB4RkYsMHg4RiwweDZELAotICAgIDB4MjMsMHgzOSwweEMyLDB4MzAs
MHhEQSwweEFDLDB4OEEsMHgyRSwweDAyLDB4MzksMHhDMiwweDMwLDB4NjUsMHgzMiwweEEyLDB4
MjgsCi0gICAgMHg2NCwweDQ5LDB4RTIsMHgzOCwweDJELDB4MjksMHhBRiwweEE3LDB4ODUsMHg1
MSwweDQ0LDB4NDksMHg4QiwweEFBLDB4REYsMHhERCwKLSAgICAweDg0LDB4NTEsMHgyMywweDQx
LDB4OEEsMHhGRiwweDNELDB4OEEsMHg2OCwweDZBLDB4NjQsMHg0OSwweEJELDB4QkQsMHhCRCww
eDNGLAotICAgIDB4OEMsMHg5MywweDg4LDB4NzIsMHhBNSwweDJELDB4MjksMHgyRCwweEFDLDB4
OTMsMHg0QywweDhCLDB4QTEsMHhBRSwweDJBLDB4RUUsCi0gICAgMHhBQywweDkzLDB4NEIsMHg4
QiwweEEwLDB4QUIsMHhFRSwweDdGLDB4QUQsMHg5MywweDJCLDB4ODMsMHhBMiwweDg4LDB4Rjgs
MHhERCwKLSAgICAweENDLDB4OTMsMHhFQSwweDdBLDB4MjIsMHhBQSwweEZFLDB4N0YsMHg2Qiww
eDhCLDB4QTksMHg3MiwweEE4LDB4QTAsMHhBMiwweDdFLAotICAgIDB4NEIsMHg4MywweDQ3LDB4
NjIsMHgwMCwweDhBLDB4QUEsMHg3NywweDRCLDB4ODMsMHgwNywweDVBLDB4MjAsMHg4OCwweEZF
LDB4NTUsCi0gICAgMHg0QiwweDgzLDB4MjcsMHg2MiwweDAyLDB4MDIsMHhBQiwweEY1LDB4QUMs
MHg4QiwweDg5LDB4NkEsMHgwMCwweDhBLDB4QUIsMHhGRCwKLSAgICAweEFDLDB4OEIsMHg4OSww
eDcyLDB4MDAsMHhBMCwweEZBLDB4NUYsMHg4QywweDhCLDB4MDcsMHg1QSwweEEwLDB4RkEsMHg1
RiwweDU3LAotICAgIDB4NkIsMHg4QiwweDI3LDB4NjIsMHgwMCwweEJELDB4NzUsMHg1NSwweEFE
LDB4OTMsMHg2OCwweDYyLDB4MDAsMHgwQSwweEJELDB4NTUsCi0gICAgMHhFRCwweDkzLDB4RUEs
MHg3QSwweDgyLDB4OEEsMHhBQSwweEJELDB4QUQsMHg5MywweDhDLDB4OEIsMHhBOCwweEE4LDB4
RUYsMHhGRCwKLSAgICAweEFDLDB4OTMsMHg2QywweDhCLDB4MkIsMHhBMSwweENELDB4QTUsMHhD
QywweDkzLDB4NkMsMHg4QiwweEFBLDB4RUEsMHhFRCwweDNGLAotICAgIDB4Q0QsMHg5MywweDhD
LDB4OEIsMHhBQywweDRGLDB4QTksMHg3QiwweENDLDB4OTMsMHg4QiwweDhCLDB4OEMsMHhGRCww
eEVCLDB4Q0EsCi0gICAgMHhBQywweDkzLDB4OEMsMHg4QiwweEQyLDB4RjIsMHg5RiwweDM2LDB4
RUQsMHg5QiwweDhDLDB4OEIsMHg4OSwweEY5LDB4OTUsMHhERSwKLSAgICAweDQzLDB4NTEsMHhF
MiwweDQwLDB4Q0EsMHg3RiwweEVBLDB4RkUsMHg0MywweDQ5LDB4RTIsMHg0MCwweEY5LDB4NjEs
MHhFRiwweEFELAotICAgIDB4NDMsMHg0OSwweEUyLDB4NDAsMHhFRSwweEVCLDB4QjcsMHhCRiww
eDIzLDB4NDksMHgwMiwweDQxLDB4REEsMHhERiwweEYyLDB4RUEsCi0gICAgMHg0MywweDQ5LDB4
RTIsMHg0MCwweEJCLDB4NkIsMHg3OCwweDVGLDB4MjIsMHg0MSwweEMxLDB4MzgsMHgyQSwweEFG
LDB4QkYsMHhCNSwKLSAgICAweDIzLDB4NDksMHhFMiwweDM4LDB4NUYsMHgyQiwweDNCLDB4RDcs
MHgwMywweDQxLDB4QzIsMHgzOCwweEVBLDB4N0MsMHhGQywweEY2LAotICAgIDB4MDIsMHg0MSww
eEMyLDB4MzgsMHgwQiwweDhCLDB4RUQsMHhFQiwweDAyLDB4NDEsMHhBMSwweDM4LDB4MDAsMHgw
MSwweDA5LDB4MEIsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweDM3LDB4M0EsMHhCRSwweEY2
LDB4MDMsMHg0OSwweDIyLDB4NDEsMHhBQSwweEI5LDB4RjcsMHhBRSwKLSAgICAweDY0LDB4NTEs
MHhFMiwweDQwLDB4MzUsMHgxNywweEJGLDB4QUUsMHg2QSwweDkzLDB4QTUsMHg1OSwweDBCLDB4
MEIsMHgyRCwweEY1LAotICAgIDB4QUEsMHg5QiwweDg3LDB4N0EsMHg4QSwweDgyLDB4RUUsMHg3
RCwweDZBLDB4OTMsMHhDNywweDgyLDB4ODAsMHhBMCwweEZGLDB4NUQsCi0gICAgMHg0OSwweDkz
LDB4QTcsMHg3QSwweDgwLDB4MkEsMHhGRSwweDVGLDB4MjksMHg4QiwweEE3LDB4ODIsMHhGOCww
eEVBLDB4QkYsMHhENywKLSAgICAweEU4LDB4ODIsMHhBNywweDdBLDB4N0UsMHhGRSwweEEwLDB4
NTAsMHgwOSwweDhCLDB4NjYsMHg3MiwweDIyLDB4QUEsMHhEQSwweDdGLAotICAgIDB4MDksMHg4
QiwweEM1LDB4NjEsMHhGMCwweEZFLDB4N0YsMHg1RiwweDA2LDB4NkEsMHhFNSwweDYxLDB4QkMs
MHgzRSwweDdDLDB4NTcsCi0gICAgMHgyNiwweDZBLDB4QzQsMHg2MSwweDI4LDB4MjAsMHgwQSww
eEZELDB4NDYsMHg2QSwweEU1LDB4NjEsMHgwQSwweEFBLDB4QjYsMHhGNywKLSAgICAweDY3LDB4
NzIsMHhBNCwweDU5LDB4MDAsMHhBOCwweEZBLDB4NUUsMHgyNSwweDZBLDB4NjMsMHg1MSwweDAw
LDB4RjgsMHg1RSwweDU1LAotICAgIDB4QTUsMHg1OSwweDAzLDB4NDksMHhCMCwweEZDLDB4RkYs
MHhCRiwweDg0LDB4NTEsMHgyMywweDQ5LDB4QTAsMHhBQSwweDBELDB4MkUsCi0gICAgMHg4NCww
eDUxLDB4MDIsMHg0MSwweDdBLDB4NzIsMHg3RSwweEZFLDB4NjQsMHg0OSwweDAyLDB4NDEsMHg3
RCwweEZGLDB4M0QsMHgwRiwKLSAgICAweEM1LDB4NTEsMHhFMiwweDQwLDB4RkQsMHhCRiwweEFF
LDB4QTAsMHg4NSwweDUxLDB4MjMsMHg0MSwweEFBLDB4MkEsMHhBOSwweEFCLAotICAgIDB4QTUs
MHg1MSwweDQ0LDB4NDksMHhCRiwweEE3LDB4MkYsMHhGRSwweEE1LDB4NTEsMHg0NCwweDQ5LDB4
RkYsMHhENiwweDc4LDB4RkIsCi0gICAgMHg4NCwweDQ5LDB4NDQsMHg0OSwweEVGLDB4N0YsMHg1
QiwweDZCLDB4NjQsMHg0OSwweDIzLDB4NDEsMHg2RiwweENBLDB4QUEsMHhFMiwKLSAgICAweDY0
LDB4NDksMHgwMywweDQxLDB4QUUsMHhGRiwweEZFLDB4REMsMHg0NCwweDQ5LDB4RTIsMHgzOCww
eEEwLDB4QUEsMHhFRSwweERFLAotICAgIDB4NDQsMHg0OSwweEUzLDB4NDAsMHhBMiwweEFCLDB4
RUIsMHhCRiwweDIzLDB4NDEsMHgwMywweDQxLDB4RjAsMHhCRSwweDU3LDB4RDAsCi0gICAgMHg0
NCwweDQxLDB4RTIsMHgzOCwweERGLDB4RkYsMHhGRSwweEI4LDB4MjMsMHg0MSwweEUyLDB4Mzgs
MHg3RSwweEZGLDB4RDgsMHhCQSwKLSAgICAweDQ0LDB4NDksMHhFMywweDM4LDB4OUQsMHhCNyww
eEFCLDB4ODIsMHg2NCwweDQ5LDB4MDMsMHg0MSwweDJCLDB4RUEsMHhFRiwweDU1LAotICAgIDB4
NDMsMHg0MSwweEUyLDB4MzgsMHg3MCwweDdBLDB4N0EsMHg3RiwweDAzLDB4MzksMHhBMSwweDMw
LDB4QUEsMHhCQiwweDJCLDB4RjUsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEUyLDB4NkEs
MHg3OCwweDdBLDB4RTMsMHgzOCwweDgxLDB4MjgsMHg3QywweDVFLDB4NzcsMHhFRiwKLSAgICAw
eEEyLDB4MjgsMHg2MSwweDIwLDB4RkUsMHg3QSwweDdCLDB4N0EsMHhBMiwweDI4LDB4NjEsMHgy
MCwweEY3LDB4RUQsMHgyRCwweDA5LAotICAgIDB4QTIsMHgyMCwweDYxLDB4MjAsMHgyNSwweDBD
LDB4MDgsMHgyQSwweEMyLDB4MjgsMHg4MSwweDIwLDB4QkEsMHhFQSwweDAyLDB4MjUsCi0gICAg
MHhDMiwweDI4LDB4ODEsMHgyMCwweEJELDB4QTUsMHhCQiwweEZGLDB4QTIsMHgyOCwweDgxLDB4
MjAsMHgxQSwweEJBLDB4RkYsMHhDQSwKLSAgICAweEEyLDB4MjgsMHg4MSwweDIwLDB4RTIsMHhD
QiwweDJCLDB4QUYsMHhBMiwweDI4LDB4ODEsMHgyMCwweEE4LDB4QkUsMHhGQiwweEQ3LAotICAg
IDB4QTIsMHgyOCwweDgyLDB4MjAsMHhBRSwweEVGLDB4RUYsMHhCRiwweEEyLDB4MjgsMHg2MSww
eDIwLDB4QUEsMHhGQiwweERGLDB4RkMsCi0gICAgMHhBMiwweDI4LDB4NjEsMHgyMCwweDNFLDB4
QUUsMHhCRiwweDNGLDB4QTIsMHgzMCwweDgxLDB4MjAsMHgzRiwweEJFLDB4MzcsMHgzRSwKLSAg
ICAweDAzLDB4MzksMHhBMiwweDI4LDB4QkQsMHhBRiwweEE5LDB4QUYsMHhFMywweDM4LDB4QzIs
MHgzMCwweEFELDB4QTksMHgwOCwweDgwLAotICAgIDB4RTIsMHgzOCwweEMyLDB4MzAsMHhFQSww
eDY2LDB4RkUsMHhGNCwweEUzLDB4MzgsMHhBMiwweDI4LDB4NUUsMHhGQiwweEZBLDB4RjgsCi0g
ICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweEZBLDB4QkYsMHgzQywweDEzLDB4RTIsMHgzMCwweEEz
LDB4MjgsMHhFRSwweEVCLDB4QUEsMHhFQSwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4Qjcs
MHhFQiwweDI1LDB4RjUsMHhDMiwweDI4LDB4QTEsMHgyOCwweDMwLDB4RjgsMHg1NywweDU1LAot
ICAgIDB4QzIsMHgyOCwweDYxLDB4MjgsMHgwMiwweDg4LDB4QUEsMHhBRSwweEMyLDB4MjgsMHg4
MSwweDIwLDB4QTgsMHhGQSwweDdBLDB4N0UsCi0gICAgMHhDMiwweDI4LDB4ODIsMHgyOCwweEFC
LDB4MEUsMHgwRCwweDJCLDB4RTMsMHgzMCwweEEyLDB4MjgsMHg1RCwweEMzLDB4RkIsMHhCQiwK
LSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QjUsMHhENSwweDU1LDB4NTYsMHhFMywweDMwLDB4
QTIsMHgyOCwweEFFLDB4QUIsMHgwMSwweDAzLAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHgz
RiwweEZGLDB4REUsMHhCRiwweEUzLDB4MzAsMHhDMiwweDMwLDB4ODIsMHg3MywweEUzLDB4MDAs
Ci0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEY3LDB4QTcsMHgzRiwweDBFLDB4MDMsMHgzOSww
eEMzLDB4MzAsMHhCNSwweEZFLDB4Q0UsMHhBQSwKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4
NTksMHg2QiwweDU5LDB4N0YsMHhFMiwweDMwLDB4QTIsMHgzMCwweDBBLDB4MEEsMHgyRiwweEI1
LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFQiwweEFBLDB4RkYsMHhGRCwweDQ0LDB4NDEs
MHhBMiwweDMwLDB4QUYsMHg4RCwweEFGLDB4RUYsCi0gICAgMHgyMywweDM5LDB4QzIsMHgzMCww
eDVFLDB4N0EsMHhBQywweDI4LDB4MDMsMHgzMSwweEMyLDB4MzAsMHg3NSwweDVFLDB4QkMsMHhF
QSwKLSAgICAweEUzLDB4MzAsMHhBMSwweDI4LDB4QkEsMHhFMCwweEJBLDB4RDYsMHgwMywweDMx
LDB4QzIsMHgzMCwweDJCLDB4RUUsMHgyRiwweERGLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MzAs
MHg3QSwweDg4LDB4MkEsMHhGQiwweEUzLDB4MzAsMHhBMiwweDI4LDB4NTUsMHg1NywweERDLDB4
MjgsCi0gICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweDc5LDB4NjIsMHg3MiwweDUyLDB4RTMsMHgz
MCwweDgxLDB4MjAsMHgwQiwweEI3LDB4QjUsMHhFRiwKLSAgICAweEUzLDB4MzAsMHhDMiwweDI4
LDB4RTAsMHhCMCwweEVGLDB4RTUsMHhFMywweDMwLDB4QzIsMHgyOCwweEJBLDB4RUYsMHg4RSww
eEFELAotICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHhBNiwweDA3LDB4RkUsMHg2RiwweDAzLDB4
MzEsMHhDMiwweDMwLDB4NTUsMHhENywweEJELDB4OUIsCi0gICAgMHhFMiwweDMwLDB4QzIsMHgy
OCwweEVELDB4QjMsMHgwMCwweDAwLDB4MjMsMHgzOSwweEMyLDB4MjgsMHhERCwweEZGLDB4RkYs
MHhDQSwKLSAgICAweDIzLDB4MzksMHhFMywweDMwLDB4OEYsMHgyRiwweDdGLDB4RkIsMHgwMyww
eDMxLDB4QzIsMHgzMCwweDg4LDB4RkUsMHhGRSwweEJGLAotICAgIDB4MDMsMHgzOSwweEMyLDB4
MjgsMHgzNywweEI3LDB4QkYsMHhGQiwweDAzLDB4MzksMHhFMiwweDMwLDB4ODIsMHhBMiwweEZE
LDB4QjUsCi0gICAgMHgyMywweDM5LDB4RTIsMHgzMCwweDlGLDB4OUUsMHgxRiwweDNGLDB4MjMs
MHg0MSwweEUyLDB4MzgsMHhENSwweEI3LDB4OUIsMHgwNiwKLSAgICAweDg1LDB4NDksMHgwMyww
eDM5LDB4QkQsMHhCRCwweEFGLDB4MkYsMHhDNSwweDUxLDB4NjQsMHg0OSwweDU1LDB4OUQsMHhF
QiwweDMyLAotICAgIDB4RTUsMHg1OSwweDY0LDB4NDksMHhGRCwweEI1LDB4RUIsMHgyQSwweEM5
LDB4N0EsMHhBNSwweDUxLDB4QjUsMHhCRCwweEFGLDB4MkYsCi0gICAgMHg4QywweDkzLDB4QTgs
MHg3MiwweEFELDB4RkQsMHhGRiwweDhBLDB4NEEsMHg4QiwweDg3LDB4NzIsMHg4OCwweERGLDB4
NTcsMHhBMCwKLSAgICAweDBBLDB4ODMsMHg0NywweDZBLDB4MDAsMHhGRSwweERGLDB4RjgsMHhF
OSwweDdBLDB4MjYsMHg2MiwweDA4LDB4RkQsMHhERCwweEFBLAotICAgIDB4QzgsMHg3MiwweDI2
LDB4NjIsMHhFOCwweDVGLDB4RkYsMHhCRiwweEE4LDB4NzIsMHgwNiwweDVBLDB4RjgsMHg3Nyww
eEZFLDB4MDIsCi0gICAgMHhBOSwweDcyLDB4RTYsMHg1MSwweDU3LDB4NzUsMHhFQiwweDAyLDB4
QzksMHg3MiwweEU2LDB4NTEsMHg1NSwweDc3LDB4QkEsMHgwMCwKLSAgICAweEE5LDB4NzIsMHgw
NywweDVBLDB4RjUsMHhCRiwweEJCLDB4MDAsMHhDOSwweDcyLDB4MjcsMHg2MiwweEY3LDB4RkYs
MHhFOCwweDJBLAotICAgIDB4QTksMHg3MiwweDQ3LDB4NjIsMHhFQiwweEU5LDB4RUYsMHgwQSww
eEE5LDB4NzIsMHgwNywweDYyLDB4RkYsMHg3RiwweEY4LDB4QjgsCi0gICAgMHg2OCwweDZBLDB4
MDYsMHg1QSwweEI5LDB4RUEsMHg4MiwweDg4LDB4NjgsMHg2QSwweDI3LDB4NjIsMHg1NiwweEZF
LDB4QjAsMHgyMCwKLSAgICAweDBBLDB4N0IsMHgwNiwweDVBLDB4MkQsMHhGNywweEZGLDB4N0Ys
MHg4QywweDhCLDB4NDcsMHg2MiwweDAwLDB4MkIsMHhBRCwweEI1LAotICAgIDB4QUQsMHg5Myww
eDRCLDB4ODMsMHgyRiwweEFFLDB4RkYsMHg3NSwweEFELDB4OTMsMHg2QiwweDhCLDB4MEEsMHgz
RiwweEI1LDB4N0IsCi0gICAgMHhBQywweDhCLDB4NkIsMHg4QiwweDJDLDB4MkYsMHhCNSwweDI1
LDB4QUMsMHg5MywweDZDLDB4OEIsMHgwMCwweEVDLDB4QUEsMHg3RSwKLSAgICAweENELDB4OTMs
MHg2QiwweDhCLDB4NUMsMHg1NywweEE1LDB4REIsMHhBRCwweDkzLDB4NkIsMHg4QiwweDJDLDB4
QUUsMHhBRSwweDFFLAotICAgIDB4MjMsMHg0OSwweEMyLDB4NDAsMHhGNiwweDgyLDB4QTgsMHhB
OCwweDIzLDB4NDksMHhFMiwweDQwLDB4QUIsMHhBRSwweEJBLDB4RTIsCi0gICAgMHg0MywweDUx
LDB4RTIsMHg0MCwweDhBLDB4RTMsMHhFRiwweEU3LDB4MjMsMHg0OSwweEUyLDB4NDAsMHhDRiww
eEI3LDB4MkIsMHhBQSwKLSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4NTcsMHhENSwweERDLDB4
QUEsMHgyMywweDQ5LDB4QzEsMHgzOCwweEE3LDB4QUUsMHhFQSwweDhBLAotICAgIDB4MjMsMHg0
OSwweEUyLDB4MzgsMHhCRiwweEJELDB4QUYsMHgyRSwweDI0LDB4NDEsMHhFMiwweDQwLDB4RDUs
MHg0NywweEZCLDB4RUYsCi0gICAgMHgwMywweDQxLDB4RTIsMHgzOCwweDVFLDB4NUMsMHgyOCww
eDgwLDB4MjMsMHg0MSwweEMxLDB4NDAsMHgyRCwweEFGLDB4QUEsMHhBQSwKLSAgICAweDQzLDB4
NDksMHhFMiwweDQwLDB4QkUsMHhCRSwweDlCLDB4MDAsMHgyMiwweDQ5LDB4MDMsMHg0MSwweDYy
LDB4NjAsMHhFQSwweEFFLAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHgwQSwweDJBLDB4Rjcs
MHhGNywweEM0LDB4NTksMHgwMiwweDQxLDB4MkYsMHhBNSwweDU1LDB4NTUsCi0gICAgMHg0Niww
eDcyLDB4MDIsMHg0OSwweDBBLDB4QkYsMHhGRCwweDc1LDB4QTcsMHg3QSwweEEzLDB4NTksMHgw
MiwweDJGLDB4QUQsMHhCNSwKLSAgICAweEM4LDB4ODIsMHgyNSwweDcyLDB4QTAsMHhGMiwweEJF
LDB4RDUsMHhDNywweDgyLDB4NDUsMHg3MiwweEE4LDB4QUEsMHhGRCwweDc1LAotICAgIDB4RTcs
MHg4MiwweDQ2LDB4NzIsMHhBMCwweEFBLDB4QUIsMHhGRCwweDg2LDB4N0EsMHhDNCwweDYxLDB4
QzAsMHg0MCwweDc4LDB4NUUsCi0gICAgMHgwNiwweDZBLDB4NjQsMHg1MSwweEEyLDB4QkUsMHhE
RiwweDU3LDB4RTUsMHg2MSwweDQzLDB4NTEsMHg4MCwweEFDLDB4RkUsMHg1NSwKLSAgICAweEU1
LDB4NjEsMHg0MywweDUxLDB4MDAsMHgwQSwweEFFLDB4QTUsMHgwNSwweDZBLDB4ODQsMHg1MSww
eEE4LDB4RUUsMHg3RiwweERBLAotICAgIDB4QzUsMHg2MSwweDQzLDB4NTEsMHhGMiwweDZBLDB4
NzgsMHhGQSwweDgzLDB4NTEsMHgwMywweDQ5LDB4QUEsMHhGRiwweDdBLDB4QUEsCi0gICAgMHg2
NCwweDUxLDB4MjMsMHg0OSwweEFELDB4RTUsMHhDNSwweDdELDB4NjQsMHg0OSwweDIzLDB4NDks
MHgwOCwweDAyLDB4MDMsMHgwMywKLSAgICAweDYzLDB4NDksMHgyMiwweDQxLDB4RTYsMHg4Qyww
eDAwLDB4MEUsMHhDNiwweDU5LDB4MjMsMHg0MSwweEJELDB4MkQsMHgyRiwweDhCLAotICAgIDB4
QzUsMHg1OSwweDQ0LDB4NDEsMHhBMiwweEE4LDB4NkEsMHhERSwweEE1LDB4NTEsMHg2NCwweDQ5
LDB4NkEsMHhFNiwweDNELDB4QkIsCi0gICAgMHg4NSwweDQ5LDB4NDQsMHg0OSwweEUyLDB4RTgs
MHhGOCwweDlFLDB4NjQsMHg0OSwweDQ0LDB4NDksMHhBMiwweDdBLDB4RjgsMHhGQiwKLSAgICAw
eDg1LDB4NTEsMHgyNCwweDQxLDB4QTMsMHhFRiwweEZCLDB4RkQsMHg2NCwweDQ5LDB4MjMsMHg0
OSwweDMwLDB4ODMsMHhBOSwweEVELAotICAgIDB4NDMsMHg0OSwweDAzLDB4NDEsMHhGQywweEJD
LDB4QUEsMHhCMiwweEU2LDB4NjEsMHgyMywweDQxLDB4NTUsMHg1NSwweEY3LDB4MkQsCi0gICAg
MHhFNiwweDYxLDB4MDMsMHg0MSwweDU1LDB4REYsMHhCRiwweDAwLDB4RTYsMHg2MSwweDIzLDB4
NDEsMHg1NSwweEZBLDB4ODIsMHgwMCwKLSAgICAweEM1LDB4NjEsMHgwMywweDQxLDB4NTUsMHg3
NywweEZFLDB4ODAsMHg2NCwweDQ5LDB4MDMsMHg0MSwweDc1LDB4RkYsMHhCRiwweEE4LAotICAg
IDB4ODUsMHg0OSwweDAzLDB4NDEsMHg3QiwweDVBLDB4RkIsMHhDQSwweDIzLDB4NDEsMHhFMiww
eDM4LDB4MkYsMHgyRiwweEJFLDB4N0EsCi0gICAgMHgyMywweDQxLDB4QzIsMHgzMCwweEVCLDB4
NkIsMHhBMCwweEUyLDB4MDMsMHgzOSwweEEyLDB4MzAsMHhGRCwweDJGLDB4MkEsMHhBQSwKLSAg
ICAweDAzLDB4MzksMHhDMiwweDMwLDB4RTIsMHhFMiwweDgwLDB4MDAsMHgwMywweDM5LDB4QTIs
MHgyOCwweDc3LDB4N0YsMHg3QywweDc4LAotICAgIDB4QzIsMHgyOCwweDYxLDB4MjAsMHg3RSww
eEZFLDB4QkUsMHgzRiwweEUzLDB4MzAsMHg2MSwweDIwLDB4RkQsMHhBRiwweDJBLDB4MDAsCi0g
ICAgMHgwNCwweDMxLDB4ODEsMHgyMCwweDVELDB4RDcsMHhBOCwweDgwLDB4RTMsMHgzMCwweDgx
LDB4MjAsMHhENSwweEZFLDB4QTIsMHhFOCwKLSAgICAweEUyLDB4MjgsMHhBMiwweDI4LDB4NUYs
MHg3QiwweEZFLDB4RjIsMHhBMiwweDI4LDB4ODEsMHgyMCwweEM4LDB4NDgsMHg0MCwweEUwLAot
ICAgIDB4QTIsMHgyOCwweDgxLDB4MjAsMHhGRCwweDY5LDB4QkYsMHhCNywweEEyLDB4MjgsMHg2
MSwweDIwLDB4QUUsMHhBRiwweDBGLDB4MEEsCi0gICAgMHhBMiwweDI4LDB4ODIsMHgyOCwweEI3
LDB4M0YsMHgzRiwweEYzLDB4QzIsMHgzMCwweDgyLDB4MjgsMHg1NCwweEY2LDB4N0YsMHhGNSwK
LSAgICAweEExLDB4MjgsMHg2MSwweDIwLDB4QkUsMHhDRiwweEZELDB4RUYsMHhDMywweDMwLDB4
ODIsMHgyOCwweEY3LDB4RkQsMHhERCwweDQ5LAotICAgIDB4MDMsMHg0MSwweDgyLDB4MjgsMHhB
RiwweDBELDB4M0YsMHgwQiwweDIzLDB4NDEsMHhDMywweDM4LDB4NkYsMHhGQiwweEUwLDB4MDgs
Ci0gICAgMHgyMywweDQxLDB4QTEsMHgzMCwweERELDB4QUYsMHhFOCwweDI4LDB4RTIsMHgzOCww
eEEyLDB4MzAsMHhGOCwweEZBLDB4RTgsMHhFOCwKLSAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4
QkYsMHhERSwweEQ4LDB4NTgsMHhDMiwweDMwLDB4ODEsMHgyOCwweDAwLDB4QUEsMHhGOCwweEZB
LAotICAgIDB4QzIsMHgyOCwweDgxLDB4MjgsMHgzQSwweEJCLDB4QkIsMHhBQiwweEUyLDB4MzAs
MHg4MSwweDI4LDB4N0YsMHhFQiwweEEzLDB4QUEsCi0gICAgMHhDMywweDMwLDB4ODEsMHgyOCww
eEY1LDB4RkYsMHhCRSwweDAyLDB4QzIsMHgyOCwweDgxLDB4MjgsMHhFNywweEY3LDB4RkYsMHhB
OCwKLSAgICAweEEyLDB4MjgsMHg4MSwweDIwLDB4MDIsMHgwNSwweDJELDB4ODAsMHhDMywweDMw
LDB4ODEsMHgyOCwweDBBLDB4QUIsMHg3RiwweEQ1LAotICAgIDB4QzIsMHgyOCwweDgxLDB4MjAs
MHgyQSwweDJCLDB4RDcsMHhERCwweDAzLDB4MzksMHhBMiwweDI4LDB4MkIsMHgyMywweEFELDB4
MEQsCi0gICAgMHgwMywweDM5LDB4RTMsMHgyOCwweEZGLDB4OTQsMHhBNiwweDA4LDB4RTIsMHgz
MCwweEMyLDB4MjgsMHg4MCwweDg4LDB4MjYsMHgyNiwKLSAgICAweDAzLDB4MzksMHhDMiwweDMw
LDB4QUEsMHhGQywweEY4LDB4RjYsMHgwMywweDM5LDB4QzMsMHgzMCwweDVFLDB4QUIsMHhBMyww
eEY4LAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHg2MSwweDdBLDB4NzgsMHg2OCwweEUzLDB4
MzAsMHhBMiwweDMwLDB4REEsMHg3QSwweEFBLDB4MDIsCi0gICAgMHhDMiwweDMwLDB4QTIsMHgz
MCwweDIyLDB4QUIsMHhCOCwweDJDLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGMywweDI1LDB4MjUs
MHhFRCwKLSAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4NkEsMHhGRSwweEZBLDB4QTMsMHgwMyww
eDM5LDB4RTIsMHgzMCwweEFELDB4QUQsMHhGNiwweEI4LAotICAgIDB4MDMsMHgzMSwweEMyLDB4
MzAsMHhENywweDZCLDB4N0EsMHg3QSwweEUyLDB4MzAsMHhBMiwweDI4LDB4QTIsMHhCRSwweEVG
LDB4RkEsCi0gICAgMHgwMywweDM5LDB4QzIsMHgyOCwweDlELDB4RkMsMHhGQSwweDU5LDB4RTIs
MHgzMCwweEEyLDB4MjgsMHhBQywweEJFLDB4Q0UsMHhBRiwKLSAgICAweEUyLDB4MzAsMHhBMSww
eDI4LDB4NUEsMHhGQSwweEZCLDB4QkEsMHhDMiwweDI4LDB4QTEsMHgyOCwweDI3LDB4MEUsMHgw
MCwweDAwLAotICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHhDRCwweDBCLDB4MjUsMHgyRCwweEUz
LDB4MzAsMHhDMiwweDMwLDB4RTUsMHhCRSwweEEwLDB4MjAsCi0gICAgMHgwMywweDM5LDB4QzIs
MHgyOCwweEY3LDB4RkIsMHgyQSwweDZBLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhEQSwweEZBLDB4
QUIsMHhBQSwKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4M0YsMHhCRCwweEFGLDB4RjcsMHgw
MywweDMxLDB4RTIsMHgzMCwweEM0LDB4M0UsMHhGOSwweDYzLAotICAgIDB4MDMsMHgzMSwweEMy
LDB4MzAsMHgwOCwweDJDLDB4QzAsMHg4MiwweDAzLDB4MzEsMHhDMiwweDI4LDB4QUMsMHg3MCww
eDYwLDB4ODAsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEI0LDB4QUIsMHhGRCwweDdBLDB4
MjMsMHgzOSwweEMyLDB4MzAsMHhGRSwweDk3LDB4QUQsMHgyNywKLSAgICAweDQ0LDB4NDEsMHgw
MywweDM5LDB4REQsMHhCNiwweEUzLDB4RTMsMHg2NCwweDQ5LDB4MjMsMHg0MSwweDVGLDB4NUQs
MHg0RiwweEEzLAotICAgIDB4ODUsMHg1MSwweDAzLDB4MzksMHgyNSwweEJELDB4QUYsMHhFQyww
eEM1LDB4NTEsMHg0MywweDQxLDB4RTIsMHhBQSwweEJGLDB4RDUsCi0gICAgMHgyNiwweDYyLDB4
NDMsMHg0OSwweEFGLDB4MkYsMHgyRiwweEJELDB4MEQsMHhBNCwweDI2LDB4NjIsMHhCRCwweEFE
LDB4MkYsMHgwRiwKLSAgICAweDZFLDB4QUMsMHg2QiwweDhCLDB4RUQsMHhBRiwweDBBLDB4MDAs
MHg2RSwweEFDLDB4RUQsMHg5QiwweDU3LDB4MkEsMHg4MiwweDAwLAotICAgIDB4NkUsMHhBQyww
eDJBLDB4ODMsMHg3RiwweEE4LDB4MjAsMHgwMCwweDZFLDB4QUMsMHgyQSwweDgzLDB4NTUsMHhG
RSwweEFBLDB4MDAsCi0gICAgMHg2RiwweEFDLDB4RTksMHg3QSwweDU1LDB4RkUsMHhBMiwweDA4
LDB4MkUsMHhBNCwweEU5LDB4N0EsMHg1NSwweDdGLDB4RUMsMHg4MCwKLSAgICAweDhCLDB4OEIs
MHhBOSwweDcyLDB4RkQsMHhGQSwweEEyLDB4QTAsMHg0QiwweDhCLDB4QzksMHg3MiwweDc3LDB4
RkUsMHg3MiwweEY4LAotICAgIDB4MDksMHg3QiwweEM5LDB4NzIsMHhCQiwweEVCLDB4ODIsMHg2
QSwweEU5LDB4N0EsMHhBOCwweDcyLDB4MzUsMHgxNywweEVFLDB4RkEsCi0gICAgMHhFOSwweDdB
LDB4QTgsMHg3MiwweDY5LDB4QkEsMHgwMiwweEE2LDB4RTksMHg3MiwweDY3LDB4NkEsMHhENiww
eDdGLDB4QUUsMHhFOCwKLSAgICAweEM5LDB4NzIsMHg2NywweDZBLDB4NTYsMHhERSwweEZFLDB4
RDAsMHhBOCwweDcyLDB4NjcsMHg2QSwweDRGLDB4QTMsMHhGNywweEJCLAotICAgIDB4ODgsMHg2
QSwweDQ3LDB4NjIsMHg2NywweDRCLDB4NzYsMHhBOCwweEE4LDB4NzIsMHgwNiwweDVBLDB4MkYs
MHg1RiwweEZBLDB4QkIsCi0gICAgMHg2QywweDhCLDB4NDcsMHg2MiwweDBBLDB4MkQsMHhCNSww
eDU1LDB4OEIsMHg4QiwweEE4LDB4NkEsMHg4MCwweDAwLDB4MEIsMHhBRCwKLSAgICAweEFDLDB4
OTMsMHg2QiwweDgzLDB4RkYsMHhBQiwweEU5LDB4QkQsMHg4QiwweDhCLDB4NEIsMHg4MywweEVF
LDB4RUEsMHhFQSwweDI2LAotICAgIDB4OEMsMHg4QiwweDJBLDB4ODMsMHhBRSwweEY3LDB4QUIs
MHhBMiwweEFDLDB4OTMsMHg0QiwweDgzLDB4QUIsMHhBQiwweDZBLDB4RkEsCi0gICAgMHgyMyww
eDQ5LDB4RTIsMHg0MCwweDNBLDB4QkEsMHhBQywweDdBLDB4MjMsMHg0OSwweEUyLDB4NDAsMHgy
QywweDBBLDB4QUQsMHg0MSwKLSAgICAweDAyLDB4NDksMHhFMiwweDQwLDB4MjgsMHhCQSwweEJF
LDB4MDcsMHgyMywweDQ5LDB4RTIsMHg0MCwweEIwLDB4RUUsMHhFNywweDhCLAotICAgIDB4MjMs
MHg0OSwweEUyLDB4NDAsMHg4QSwweDA4LDB4MjgsMHhBRSwweDIzLDB4NDksMHhDMiwweDM4LDB4
MkIsMHgyNiwweEFBLDB4QkEsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweDhCLDB4QUUsMHgy
RSwweDNDLDB4MjIsMHg0MSwweEUyLDB4NDAsMHg2QiwweDNFLDB4MjAsMHgyQSwKLSAgICAweDIz
LDB4NDksMHgwMiwweDQxLDB4NjEsMHhFQiwweEVDLDB4NzcsMHgyMywweDQxLDB4RTIsMHgzOCww
eDJCLDB4QkEsMHhBRiwweEVCLAotICAgIDB4NDMsMHg0OSwweDAyLDB4NDEsMHgzRiwweEZELDB4
Q0YsMHg4NSwweEUyLDB4NDgsMHgyMiwweDQxLDB4QkQsMHhBOSwweEVCLDB4QkYsCi0gICAgMHgy
MywweDQ5LDB4RTIsMHg0MCwweEZELDB4QkYsMHhFRSwweDYyLDB4MDMsMHg0OSwweEMyLDB4NDAs
MHgwQSwweEZBLDB4RkUsMHhGRiwKLSAgICAweDYzLDB4NTEsMHhDMiwweDQwLDB4QkQsMHhCNSww
eDNGLDB4QkYsMHgyNSwweDZBLDB4NjMsMHg1MSwweDA5LDB4OEQsMHg4RiwweEFELAotICAgIDB4
MjUsMHg2QSwweEM0LDB4NjEsMHgwRiwweEVELDB4MEYsMHgyMiwweDQ3LDB4NzIsMHhFNSwweDYx
LDB4QTIsMHhFRCwweEU1LDB4RDcsCi0gICAgMHg0NiwweDcyLDB4QzUsMHg1OSwweDhBLDB4QUUs
MHhGQiwweDU2LDB4RTUsMHg2MSwweDQzLDB4NTEsMHgyMCwweEY4LDB4QjgsMHg1RSwKLSAgICAw
eEE0LDB4NTksMHgwMiwweDQ5LDB4RjgsMHg1RSwweDU3LDB4NTcsMHgyNCwweDQ5LDB4QTMsMHg0
MCwweEU4LDB4RkUsMHhERiwweEI3LAotICAgIDB4ODQsMHg1OSwweEUyLDB4NDAsMHgwRiwweDJE
LDB4MkQsMHgyRCwweEM0LDB4NTksMHg4NCwweDU5LDB4QzIsMHhBQSwweDhELDB4RUIsCi0gICAg
MHhDNSwweDU5LDB4NjMsMHg1MSwweERFLDB4RUEsMHg4MiwweEEyLDB4QTQsMHg1OSwweDYzLDB4
NTEsMHhENywweERDLDB4NjAsMHg3MiwKLSAgICAweDg0LDB4NTEsMHg0MywweDQ5LDB4RjUsMHhD
RiwweDhBLDB4MkIsMHhBNCwweDUxLDB4NjQsMHg1MSwweDc5LDB4RUQsMHg3QiwweDVELAotICAg
IDB4QTQsMHg1MSwweDQzLDB4NDksMHhCNywweEI1LDB4QUYsMHgyQiwweEE1LDB4NTEsMHg0NCww
eDQ5LDB4ODAsMHhBMCwweEI4LDB4RDgsCi0gICAgMHg4NCwweDUxLDB4NDQsMHg0OSwweEFBLDB4
RTgsMHhGNywweEZGLDB4ODQsMHg0OSwweDQ0LDB4NDksMHgwMSwweEExLDB4RkQsMHhERSwKLSAg
ICAweDY0LDB4NDksMHgyMywweDQxLDB4MDgsMHhBQSwweDdBLDB4ODAsMHg2NCwweDQ5LDB4MjMs
MHg0MSwweDJFLDB4RTIsMHhFRiwweERGLAotICAgIDB4NjQsMHg1MSwweDIzLDB4NDksMHhBRiww
eDBBLDB4QkUsMHgyNywweEE0LDB4NTksMHgyMywweDQ5LDB4REYsMHg3RiwweERFLDB4M0IsCi0g
ICAgMHgwNiwweDZBLDB4MDIsMHg0MSwweEY1LDB4QkYsMHgyQiwweDBFLDB4MDYsMHg2QSwweDY0
LDB4NTEsMHgwRCwweDBCLDB4ODIsMHhBMCwKLSAgICAweDQ3LDB4NzIsMHg0MywweDUxLDB4OEEs
MHhBMiwweEEzLDB4RDcsMHhFNSwweDYxLDB4ODMsMHg1OSwweDg4LDB4QkEsMHhFMiwweDU1LAot
ICAgIDB4RTYsMHg2MSwweDg0LDB4NTEsMHhFMCwweEFCLDB4RUQsMHg3RiwweDg1LDB4NTEsMHgw
MywweDQxLDB4RDgsMHhGOCwweDdBLDB4NUEsCi0gICAgMHg2NCwweDQ5LDB4MDIsMHg0MSwweDJB
LDB4RkYsMHg3RCwweDU1LDB4MjMsMHg0MSwweEMyLDB4MzgsMHg2OCwweEUwLDB4RUEsMHhCQSwK
LSAgICAweDIzLDB4NDEsMHhFMywweDM4LDB4ODIsMHgwMywweEVCLDB4RjksMHgwMywweDM5LDB4
QzIsMHgzMCwweDhBLDB4QTgsMHhGMCwweDdFLAotICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHhB
QiwweEFGLDB4RkYsMHhENSwweDAzLDB4MzksMHg4MiwweDIwLDB4NzAsMHhGMCwweEYwLDB4RkEs
Ci0gICAgMHhDMiwweDI4LDB4NjEsMHgyMCwweDNGLDB4QjcsMHhCRCwweDE3LDB4MDMsMHgzMSww
eEMzLDB4MjgsMHgwQSwweDAzLDB4MDMsMHhGRCwKLSAgICAweDAzLDB4MzEsMHhDMywweDI4LDB4
MjAsMHg2MiwweDc3LDB4NTUsMHhDMywweDI4LDB4NjIsMHgyOCwweEE4LDB4MkEsMHhBOCwweEU4
LAotICAgIDB4QzIsMHgzMCwweDgxLDB4MjgsMHgwMiwweEJDLDB4QUMsMHhCNywweEMyLDB4Mjgs
MHg4MSwweDI4LDB4RkEsMHg3QSwweDZGLDB4QUYsCi0gICAgMHhBMiwweDMwLDB4ODEsMHgyMCww
eEVGLDB4RkQsMHg1RiwweDI4LDB4QzMsMHgzMCwweDgxLDB4MjgsMHhFRCwweEY1LDB4MzUsMHgz
QywKLSAgICAweDQ0LDB4NDEsMHg4MSwweDI4LDB4RDUsMHhCRiwweEJCLDB4ODIsMHgyNCwweDQx
LDB4QTIsMHgzMCwweDU3LDB4NUEsMHhBOCwweDgyLAotICAgIDB4RTMsMHgzOCwweDYxLDB4Mjgs
MHg1NywweEZGLDB4RUEsMHhBMCwweEEyLDB4MzAsMHg4MiwweDI4LDB4OEQsMHhCNywweEJCLDB4
ODgsCi0gICAgMHgyNCwweDQxLDB4QTIsMHgzMCwweEFELDB4MkYsMHhBRCwweEFELDB4NDQsMHg0
OSwweDAzLDB4NDEsMHhBRiwweEJBLDB4QUIsMHg5RiwKLSAgICAweDQ0LDB4NDksMHgwMywweDM5
LDB4REUsMHg3QywweDdFLDB4QzAsMHgyMywweDQxLDB4QTIsMHgzMCwweEZFLDB4RUEsMHhFQSww
eEZDLAotICAgIDB4RTIsMHgzOCwweDgxLDB4MjgsMHg3QSwweEVBLDB4QUEsMHgwMCwweEMyLDB4
MzAsMHg4MSwweDI4LDB4RkYsMHg3QSwweEU4LDB4REEsCi0gICAgMHhFMiwweDMwLDB4ODEsMHgy
MCwweEZGLDB4QUQsMHgwQiwweDJBLDB4MjQsMHgzOSwweEMyLDB4MjgsMHhGRCwweEJGLDB4QUYs
MHgwQSwKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4NTUsMHhFNywweDBCLDB4MDIsMHg0NCww
eDM5LDB4QzIsMHgzMCwweDVGLDB4N0EsMHhFOCwweDBBLAotICAgIDB4NDQsMHgzOSwweEEyLDB4
MjgsMHg1NywweDU3LDB4RkYsMHhFOCwweDAzLDB4MzEsMHg4MiwweDI4LDB4NzcsMHhGRiwweEUy
LDB4QUEsCi0gICAgMHhFMywweDMwLDB4ODEsMHgyOCwweDc3LDB4RkYsMHhCRSwweDAyLDB4MDQs
MHgzOSwweEEyLDB4MjgsMHgwOSwweEFELDB4MkYsMHgzQSwKLSAgICAweDI0LDB4MzksMHhFMiww
eDMwLDB4QUEsMHhFRiwweEVGLDB4RkQsMHhFMiwweDMwLDB4QTIsMHgyOCwweDAwLDB4MDIsMHgw
MCwweEY4LAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCRSwweEE2LDB4RkEsMHhFMywweEMy
LDB4MzAsMHhBMiwweDI4LDB4MDAsMHgwRSwweDJELDB4MkYsCi0gICAgMHgwMywweDM5LDB4QzMs
MHgzMCwweEMyLDB4RUIsMHhGRiwweEY3LDB4RTIsMHgzMCwweEExLDB4MzAsMHhDOCwweEE5LDB4
RTYsMHhBRSwKLSAgICAweEUyLDB4MzAsMHhDMiwweDMwLDB4NTcsMHg1NywweEQ1LDB4OEQsMHgw
MywweDM5LDB4QzIsMHgzMCwweEI1LDB4M0QsMHg5NywweEQ3LAotICAgIDB4NDQsMHgzOSwweEUy
LDB4MzAsMHhGQiwweERFLDB4QUUsMHhGNywweDAzLDB4MzEsMHhFMiwweDMwLDB4MDMsMHg4Miww
eEJFLDB4QjYsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweDhGLDB4OEEsMHg2MiwweEY4LDB4
RTIsMHgzMCwweEEyLDB4MjgsMHhFQSwweDdBLDB4NkYsMHhFQywKLSAgICAweEUzLDB4MzAsMHhB
MiwweDI4LDB4RkQsMHhBOSwweEFELDB4OEIsMHhFMywweDMwLDB4QTIsMHgyOCwweEFELDB4RUIs
MHg2QiwweDdBLAotICAgIDB4RTIsMHgyOCwweEExLDB4MjgsMHhCRiwweDZGLDB4NTUsMHhBNSww
eEMyLDB4MjgsMHhBMiwweDI4LDB4ODAsMHg4QiwweEY5LDB4RjgsCi0gICAgMHhFMiwweDI4LDB4
QTEsMHgyOCwweEFBLDB4REEsMHhGNywweDU1LDB4RTMsMHgzMCwweEExLDB4MjgsMHgyMywweDBF
LDB4QUIsMHg5QiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4RTMsMHhCMiwweEVCLDB4REYs
MHgwMywweDMxLDB4RTMsMHgzMCwweENELDB4RUYsMHhBNSwweEY3LAotICAgIDB4MDIsMHgzMSww
eEMyLDB4MzAsMHg1QiwweENBLDB4REUsMHhGRSwweDAzLDB4MzEsMHhDMiwweDI4LDB4QTgsMHhC
QiwweEZELDB4RUIsCi0gICAgMHgyMywweDMxLDB4QzIsMHgzMCwweEZGLDB4N0UsMHhGNywweEQ1
LDB4MjMsMHgzMSwweEMyLDB4MzAsMHhDQiwweEZGLDB4RkIsMHg5RSwKLSAgICAweDAyLDB4Mzks
MHhDMiwweDMwLDB4N0EsMHhFMiwweEZBLDB4QUMsMHgyNCwweDM5LDB4QzIsMHgzMCwweEI1LDB4
QTUsMHgyNSwweEI1LAotICAgIDB4NjQsMHg0MSwweEUyLDB4MzgsMHhGMywweEZGLDB4RDcsMHg1
NywweDg1LDB4NDksMHgyNCwweDQxLDB4RkIsMHhBRCwweEFELDB4MjksCi0gICAgMHhBNSwweDUx
LDB4NDMsMHg0MSwweERELDB4RkQsMHg2QiwweDhBLDB4QzYsMHg1OSwweDQzLDB4NDksMHg3NSww
eEZELDB4OTcsMHgyNywKLSAgICAweDA5LDB4ODMsMHg0MywweDQ5LDB4RkQsMHhCRCwweDJGLDB4
MkYsMHhBRiwweEI0LDB4QTgsMHg3MiwweEFELDB4QUYsMHgyRiwweDJBLAotICAgIDB4RDAsMHhC
QywweDZFLDB4QUMsMHg3NSwweEZGLDB4QTMsMHhBMiwweEFGLDB4QjQsMHg0RSwweEFDLDB4RkYs
MHg3RSwweEJBLDB4RkUsCi0gICAgMHg4RiwweEI0LDB4NkUsMHhBQywweERELDB4QkEsMHgwQSww
eDBGLDB4QUYsMHhCNCwweDRFLDB4QUMsMHhERiwweEJBLDB4MDAsMHhBMiwKLSAgICAweEFGLDB4
QjQsMHg2RSwweEFDLDB4NTcsMHhGNSwweDJBLDB4MDAsMHhBRiwweEI0LDB4MEQsMHhBNCwweDZB
LDB4QUEsMHhFOCwweDIwLAotICAgIDB4NEYsMHhBQywweDZCLDB4OEIsMHg1NywweDU4LDB4Nzgs
MHhDMCwweDRCLDB4OEIsMHgwQSwweDgzLDB4RUUsMHhGQSwweDVGLDB4NUEsCi0gICAgMHgwQSww
eDdCLDB4QzksMHg3MiwweEEyLDB4RTAsMHhFOCwweDY4LDB4RTksMHg3QSwweEE4LDB4NzIsMHhG
QSwweDYyLDB4NUEsMHg3QSwKLSAgICAweEE4LDB4NzIsMHg0NywweDYyLDB4MjAsMHgwMCwweEVB
LDB4REEsMHhDOSwweDcyLDB4NDcsMHg2MiwweDAyLDB4OEUsMHg4RiwweEI1LAotICAgIDB4RTks
MHg3QSwweDg4LDB4NkEsMHg3RiwweDlFLDB4ODMsMHhDQSwweEM5LDB4NzIsMHg2NywweDZBLDB4
RkQsMHhCRiwweDM4LDB4QUEsCi0gICAgMHhDOSwweDcyLDB4NjcsMHg2MiwweDVBLDB4RkEsMHg4
OCwweEMwLDB4QTgsMHg3MiwweDQ3LDB4NjIsMHhERiwweEY4LDB4RTAsMHhFOCwKLSAgICAweDg3
LDB4NkEsMHgyNywweDYyLDB4NTYsMHhGNywweDZFLDB4Q0IsMHhFOSwweDdBLDB4MDYsMHg1QSww
eDJGLDB4RkYsMHhENSwweDU3LAotICAgIDB4NkIsMHg4MywweDA2LDB4NUEsMHgwMCwweDAyLDB4
MkQsMHgzNSwweDhDLDB4OEIsMHg0QiwweDgzLDB4RUEsMHgzQSwweDJDLDB4MzUsCi0gICAgMHg4
QywweDhCLDB4NEIsMHg4MywweEI4LDB4RTgsMHgzMCwweDlBLDB4OEMsMHg4QiwweDRCLDB4ODMs
MHg5RSwweEJBLDB4QUUsMHhEQywKLSAgICAweDIzLDB4NDksMHhFMywweDQwLDB4RkEsMHhFOCww
eEJGLDB4MkQsMHgyMywweDQ5LDB4RTIsMHg0MCwweEE1LDB4QUQsMHhGQSwweDVFLAotICAgIDB4
MjMsMHg0MSwweEMyLDB4NDAsMHg3RiwweEZDLDB4QkUsMHhGQSwweDIzLDB4NDEsMHhDMiwweDQw
LDB4QUEsMHhBOSwweDJBLDB4QUIsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEJFLDB4OUUs
MHhGRSwweEVBLDB4MjMsMHg0OSwweEUyLDB4NDAsMHg1NiwweERFLDB4MUUsMHhFRCwKLSAgICAw
eDIzLDB4NDksMHhFMiwweDQwLDB4QUYsMHhGRiwweEZFLDB4ODgsMHg0MywweDQ5LDB4RTIsMHg0
MCwweEZGLDB4RUYsMHhBNywweEFDLAotICAgIDB4NDMsMHg0OSwweEUyLDB4NDAsMHhGQiwweDZC
LDB4RTAsMHhEMCwweDIzLDB4NDEsMHhFMiwweDQwLDB4QUIsMHg4OSwweDhCLDB4QUEsCi0gICAg
MHg0MywweDQ5LDB4MDMsMHg0MSwweEY1LDB4RDcsMHhCNywweEE0LDB4NDMsMHg0OSwweDAzLDB4
NDEsMHg5RiwweDNFLDB4QTgsMHhCRiwKLSAgICAweDQzLDB4NDksMHhFMywweDQwLDB4NzgsMHhD
OCwweEFGLDB4RUYsMHgwMiwweDQxLDB4QzIsMHg0MCwweEJGLDB4REYsMHg1QywweEEwLAotICAg
IDB4MjMsMHg0OSwweEUyLDB4NDAsMHgzRiwweDNGLDB4REQsMHhGNywweEU1LDB4NjEsMHgwMyww
eDQ5LDB4MkYsMHgzRiwweEI1LDB4RjUsCi0gICAgMHgwNSwweDZBLDB4QTQsMHg1OSwweDBBLDB4
QUUsMHhDMiwweDJELDB4MjYsMHg2QSwweDg0LDB4NTksMHhBOCwweEUyLDB4N0EsMHg3QSwKLSAg
ICAweEU1LDB4NjEsMHgwMywweDQ5LDB4QTgsMHhFQSwweEZFLDB4N0YsMHg4NCwweDU5LDB4RTIs
MHg0MCwweEEwLDB4RTAsMHhGRiwweERELAotICAgIDB4MDMsMHg0OSwweEMyLDB4NDAsMHhBOCww
eEVBLDB4RkUsMHg5QSwweDAzLDB4NDksMHhDMiwweDQwLDB4QkEsMHg4OCwweDc4LDB4OUEsCi0g
ICAgMHg4NSwweDU5LDB4RTIsMHg0MCwweDNELDB4M0QsMHgzNSwweDI3LDB4RTYsMHg2MSwweEE1
LDB4NTksMHhFRCwweEQ2LDB4QjYsMHgwOSwKLSAgICAweEU2LDB4NjEsMHhBNSwweDU5LDB4NUQs
MHg3NiwweERBLDB4QkIsMHhDNSwweDU5LDB4NjQsMHg1MSwweDVBLDB4NjAsMHhGQywweEY4LAot
ICAgIDB4ODQsMHg1MSwweDQzLDB4NTEsMHhBQSwweDhCLDB4OEIsMHgwNCwweEM1LDB4NTEsMHg2
NCwweDUxLDB4RkQsMHhGRCwweEVELDB4QkYsCi0gICAgMHhDNSwweDU5LDB4ODQsMHg1MSwweEI1
LDB4QkEsMHg2RCwweEQ4LDB4QTUsMHg1MSwweDY0LDB4NDksMHhGOCwweEVFLDB4RDYsMHg1OCwK
LSAgICAweDg1LDB4NTEsMHg0NCwweDQ5LDB4RUMsMHhCQSwweEVGLDB4QkYsMHg4NCwweDQ5LDB4
MjMsMHg0MSwweEY4LDB4NUUsMHhGQSwweDgwLAotICAgIDB4ODUsMHg1MSwweDIzLDB4NDksMHhG
QiwweEZCLDB4NkEsMHhGQSwweDY0LDB4NDksMHgyMywweDQ5LDB4OTcsMHg2RiwweERGLDB4RkEs
Ci0gICAgMHgyNSwweDZBLDB4MjMsMHg0OSwweEY1LDB4M0QsMHgwRiwweDIzLDB4NjUsMHg3Miww
eEM0LDB4NTksMHhCNSwweDhFLDB4MjIsMHhFQSwKLSAgICAweDY2LDB4NzIsMHhBMywweDU5LDB4
QUEsMHhBOCwweEY4LDB4N0UsMHgwNiwweDZBLDB4ODQsMHg1MSwweEE4LDB4QTgsMHhFQSwweDVG
LAotICAgIDB4QzUsMHg1OSwweDY0LDB4NTEsMHg1NiwweEQ0LDB4N0UsMHg3QiwweDY0LDB4NTEs
MHgyMywweDQ5LDB4ODAsMHgwOCwweEZBLDB4NTcsCi0gICAgMHhDNSwweDU5LDB4NDMsMHg0OSww
eENBLDB4QUIsMHhFQiwweEZELDB4NjQsMHg0OSwweDAzLDB4NDEsMHhGQSwweDVFLDB4N0MsMHhE
QywKLSAgICAweDIzLDB4NDEsMHhBMiwweDMwLDB4QUEsMHhBQSwweEZBLDB4N0EsMHgwMywweDM5
LDB4QzIsMHgzOCwweEEyLDB4QUUsMHhCNywweDI1LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAs
MHgzQiwweEJGLDB4NUYsMHhEMCwweEUzLDB4MzgsMHg2MSwweDI4LDB4QjAsMHhFOCwweEE4LDB4
QUEsCi0gICAgMHhDMiwweDMwLDB4NjEsMHgyOCwweDJBLDB4QUIsMHhFRSwweEZBLDB4QzIsMHgy
OCwweDgxLDB4MjgsMHhBQSwweEZELDB4QjUsMHhERCwKLSAgICAweEEyLDB4MjgsMHg2MSwweDIw
LDB4M0YsMHhCQSwweEI4LDB4MkEsMHhFMywweDMwLDB4QTIsMHgyOCwweDJGLDB4QUIsMHhBQiww
eEZELAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg3RSwweDdBLDB4QkMsMHhCNiwweEMzLDB4
MzAsMHg4MiwweDI4LDB4RkYsMHhFQSwweDBBLDB4ODAsCi0gICAgMHhFMywweDMwLDB4ODIsMHgy
MCwweERGLDB4RDUsMHhGQiwweEVGLDB4NDQsMHg0MSwweEEyLDB4MjgsMHhENSwweEZELDB4QUQs
MHgyRiwKLSAgICAweDQ0LDB4NDEsMHhBMiwweDMwLDB4QkQsMHgyRiwweDg4LDB4ODAsMHg2NSww
eDQ5LDB4MDMsMHgzOSwweEQ3LDB4RkYsMHhFRiwweDNELAotICAgIDB4NjUsMHg0OSwweEMzLDB4
MzgsMHhFQSwweEU4LDB4RkEsMHg1OCwweDI0LDB4NDEsMHhDMiwweDM4LDB4MEEsMHgyQSwweDNF
LDB4RkQsCi0gICAgMHgyMywweDQxLDB4RTMsMHgzOCwweERGLDB4RTYsMHhFOCwweEEwLDB4MjMs
MHg0MSwweEEyLDB4MzAsMHhENywweEVGLDB4QUEsMHgwQSwKLSAgICAweDAzLDB4NDEsMHhFMiww
eDM4LDB4N0QsMHg2RCwweEQ3LDB4NUMsMHg0NCwweDQ5LDB4RTIsMHgzOCwweEZGLDB4Q0QsMHhC
NSwweEI1LAotICAgIDB4ODUsMHg1MSwweDIzLDB4NDEsMHhGRiwweEZELDB4OEQsMHhDOSwweDg0
LDB4NTEsMHgwMywweDM5LDB4NTcsMHhGRiwweEFCLDB4QTIsCi0gICAgMHg0MywweDQ5LDB4RTIs
MHgzOCwweDVGLDB4N0UsMHg3OCwweDYwLDB4RTIsMHgzMCwweEEyLDB4MzAsMHg3RiwweDdGLDB4
RkMsMHhENywKLSAgICAweEUyLDB4MzAsMHhBMSwweDI4LDB4M0QsMHhCNSwweEJELDB4REYsMHgw
MywweDM5LDB4QTIsMHgyOCwweDAyLDB4MkYsMHhCRiwweDU3LAotICAgIDB4MjQsMHgzOSwweEMy
LDB4MzAsMHhBMCwweDgyLDB4RUYsMHhGNSwweDQ0LDB4NDEsMHhFMywweDMwLDB4MkQsMHgyRCww
eEFELDB4RkQsCi0gICAgMHg0NSwweDM5LDB4QzMsMHgzMCwweEVDLDB4RkEsMHg3QSwweERFLDB4
MjMsMHgzOSwweEMyLDB4MzAsMHhGOCwweEZCLDB4QUIsMHhBRCwKLSAgICAweEUzLDB4MzAsMHhB
MiwweDI4LDB4MjgsMHhDMiwweEI4LDB4RTAsMHhFMywweDMwLDB4QzIsMHgyOCwweDA4LDB4MDIs
MHgyMCwweDBELAotICAgIDB4MjQsMHgzOSwweEMyLDB4MjgsMHhCRiwweEZGLDB4RkYsMHg1NCww
eDAzLDB4MzEsMHhBMiwweDI4LDB4NUEsMHg1NCwweDc2LDB4N0YsCi0gICAgMHhFMywweDMwLDB4
QTIsMHgyOCwweEU5LDB4RkIsMHg3RCwweDdFLDB4QzIsMHgzMCwweDgyLDB4MjgsMHgzRSwweDNG
LDB4QUIsMHhDMiwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QUYsMHg4RiwweEZCLDB4REIs
MHgwMywweDM5LDB4QzIsMHgzMCwweEFGLDB4MDIsMHhBMiwweEY4LAotICAgIDB4RTIsMHgzMCww
eDgxLDB4MjgsMHhDMiwweEM4LDB4NjAsMHhDOCwweEUyLDB4MzAsMHhBMSwweDI4LDB4MkEsMHhB
RCwweEVGLDB4QkQsCi0gICAgMHhFMiwweDMwLDB4QzIsMHgzMCwweDAyLDB4REIsMHhFQiwweDYz
LDB4MDMsMHgzMSwweEMyLDB4MzAsMHgyOCwweEE4LDB4QTAsMHg4QiwKLSAgICAweDAzLDB4MzEs
MHhDMiwweDMwLDB4NTIsMHg1RSwweEJCLDB4RjcsMHhFMywweDMwLDB4QTIsMHgyOCwweEE4LDB4
RTIsMHg4MCwweDdDLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg2MiwweEZCLDB4OTcsMHhG
NywweEUzLDB4MzAsMHhDMiwweDI4LDB4NUQsMHg0NSwweDhELDB4MjUsCi0gICAgMHhFMiwweDMw
LDB4QzIsMHgyOCwweDg5LDB4QUIsMHg3RiwweDc3LDB4RTIsMHgzMCwweEExLDB4MjgsMHg1QSww
eERBLDB4QUEsMHgyMCwKLSAgICAweEUzLDB4MzAsMHg4MSwweDIwLDB4REYsMHhBRSwweDhBLDB4
OEEsMHhFMiwweDMwLDB4QTIsMHgyOCwweEZCLDB4RTksMHg4QSwweDIyLAotICAgIDB4MDMsMHgz
MSwweEMyLDB4MzAsMHg3RiwweEYyLDB4Q0EsMHhGRSwweDIzLDB4MzksMHhFMywweDMwLDB4N0Ys
MHhGRSwweERELDB4M0YsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzMCwweDVGLDB4RkQsMHhFRiww
eDhCLDB4MjMsMHgzOSwweEMyLDB4MjgsMHhGQiwweEQ3LDB4RUYsMHhCOCwKLSAgICAweDAzLDB4
MzksMHhDMiwweDMwLDB4NTcsMHg1NywweDVDLDB4NzgsMHgyMywweDM5LDB4QzIsMHgzMCwweEQ3
LDB4RDUsMHhCRiwweEJELAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg5NiwweEZGLDB4QUIs
MHhCRSwweDAzLDB4MzksMHhDMiwweDMwLDB4QkYsMHhCRCwweEI3LDB4MTcsCi0gICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweDNFLDB4RUUsMHhCOCwweEJBLDB4QTUsMHg0OSwweDAzLDB4MzksMHhB
QiwweDJELDB4MkQsMHhCRCwKLSAgICAweEM1LDB4NTksMHg4NCwweDQ5LDB4QjksMHhGQSwweEJC
LDB4RjksMHgwNiwweDYyLDB4ODQsMHg1MSwweEI1LDB4QUQsMHgyNywweDJELAotICAgIDB4QUQs
MHg5MywweDI2LDB4NjIsMHhCNSwweDJELDB4MkQsMHgwQiwweEYwLDB4QkMsMHgwRSwweEE0LDB4
QTksMHgyRiwweDBGLDB4MkEsCi0gICAgMHhGMCwweEM0LDB4QUYsMHhCNCwweDdCLDB4RUUsMHhC
RSwweDc4LDB4RjAsMHhDNCwweDhGLDB4QjQsMHg3RiwweDc4LDB4RkEsMHhCRiwKLSAgICAweEQw
LDB4QkMsMHg2RSwweEI0LDB4RjcsMHhGNywweEVDLDB4RkUsMHhEMCwweEJDLDB4OEYsMHhCNCww
eEZGLDB4QkIsMHgzRCwweEJELAotICAgIDB4RDAsMHhCQywweDhGLDB4QjQsMHhGQiwweEJBLDB4
QTgsMHhBOCwweENGLDB4QkMsMHg4RiwweEI0LDB4QjYsMHhFQiwweEUyLDB4QUIsCi0gICAgMHhB
RiwweEI0LDB4MkUsMHhBNCwweDc4LDB4NjgsMHhBOCwweEEwLDB4NkUsMHhBQywweDJCLDB4ODMs
MHg1NywweDVFLDB4RkEsMHhFOCwKLSAgICAweDZDLDB4OEIsMHhFQSwweDdBLDB4NUYsMHg1Nyww
eEFGLDB4QTgsMHgyQiwweDgzLDB4QTksMHg3MiwweDVCLDB4N0EsMHg3OCwweDY4LAotICAgIDB4
QzksMHg3MiwweDQ3LDB4NjIsMHhGNiwweDdGLDB4M0EsMHhFMCwweDg3LDB4NkEsMHgyNiwweDYy
LDB4QkUsMHhBRSwweEJBLDB4NDgsCi0gICAgMHhDOSwweDcyLDB4NDYsMHg2MiwweEFFLDB4MkUs
MHhBRiwweDJELDB4RTksMHg3QSwweEE4LDB4NzIsMHg3RCwweDdDLDB4N0UsMHg3RCwKLSAgICAw
eDA5LDB4N0IsMHhBOCwweDcyLDB4NUIsMHg4OSwweDhCLDB4OEIsMHhFOSwweDdBLDB4ODgsMHg2
QSwweDdFLDB4RkUsMHhFMiwweDIwLAotICAgIDB4QzksMHg3MiwweDY4LDB4NkEsMHg3NywweEVC
LDB4RUUsMHg4MCwweDg4LDB4NkEsMHhFNiwweDU5LDB4N0UsMHg3QSwweEVBLDB4ODAsCi0gICAg
MHgyNywweDYyLDB4QzUsMHg1MSwweDI5LDB4QUYsMHhERSwweEFDLDB4NEIsMHg4MywweEU2LDB4
NTEsMHgwQiwweDM1LDB4RDUsMHg1NSwKLSAgICAweDZCLDB4ODMsMHgwNiwweDVBLDB4MDAsMHgw
MCwweDBBLDB4QjUsMHg4QywweDhCLDB4MkEsMHg3QiwweEJBLDB4QUEsMHhCOCwweEY1LAotICAg
IDB4MDIsMHg0OSwweEUyLDB4NDAsMHg4QiwweDhFLDB4OUUsMHgzNywweDIyLDB4NDksMHhDMiww
eDM4LDB4QjcsMHhERiwweEJCLDB4RkMsCi0gICAgMHgwMywweDQ5LDB4RTIsMHgzOCwweERBLDB4
RkMsMHg3QSwweEUyLDB4MDMsMHg0OSwweEUyLDB4MzgsMHhBQSwweEZBLDB4QkYsMHgyRSwKLSAg
ICAweDIzLDB4NDEsMHhFMiwweDQwLDB4Q0EsMHg4QSwweDlDLDB4M0MsMHgyMywweDQ5LDB4RTIs
MHg0MCwweDA3LDB4ODgsMHhCQSwweEU4LAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBOCww
eEE4LDB4QjgsMHhENywweDIzLDB4NDksMHgwMiwweDQxLDB4NzUsMHg1NCwweDc4LDB4RDgsCi0g
ICAgMHg2NCwweDQ5LDB4MDIsMHg0MSwweERFLDB4QkIsMHhCMywweEVCLDB4NDMsMHg0OSwweEUy
LDB4NDAsMHg5NiwweEZBLDB4RTIsMHhBOCwKLSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4MkMs
MHhERSwweEFFLDB4M0UsMHgyMywweDQxLDB4RTIsMHg0MCwweEFFLDB4RkEsMHhGMywweDU2LAot
ICAgIDB4MjMsMHg0OSwweEMyLDB4MzgsMHhBQSwweEEyLDB4QjUsMHgzNywweDIzLDB4NDksMHhF
MiwweDQwLDB4NzIsMHg0MCwweEE4LDB4RUUsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweDE3
LDB4QkIsMHhBQiwweEIzLDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBNiwweEFGLDB4QTEsMHg4MCwK
LSAgICAweEE1LDB4NTksMHgwMiwweDQxLDB4MkYsMHgyRCwweEJELDB4RjcsMHhDNSwweDYxLDB4
MjMsMHg0OSwweEUwLDB4RkEsMHg3RiwweDU1LAotICAgIDB4NDQsMHg0OSwweEUzLDB4NDAsMHhF
NiwweEJDLDB4RkEsMHhFNiwweDAzLDB4NDksMHhDMiwweDQwLDB4MkEsMHhBOCwweEZBLDB4NUYs
Ci0gICAgMHhFMiwweDQwLDB4QzIsMHgzOCwweEE4LDB4MjYsMHgxRiwweDNCLDB4MDMsMHg0OSww
eEMyLDB4NDAsMHhCRiwweEFFLDB4N0EsMHhGQSwKLSAgICAweEE1LDB4NTksMHgwMywweDQ5LDB4
MzUsMHgyNSwweDM1LDB4QTUsMHgwNiwweDYyLDB4QTQsMHg1OSwweEFGLDB4RUIsMHg4OSwweDhE
LAotICAgIDB4MDYsMHg2MiwweEE0LDB4NTksMHhFRiwweEZGLDB4REYsMHg1QywweEU1LDB4NjEs
MHg4NCwweDUxLDB4N0EsMHg3RSwweDZCLDB4RUEsCi0gICAgMHhDNSwweDU5LDB4NjMsMHg1MSww
eEQ3LDB4QkIsMHgwMywweDA5LDB4QzUsMHg1OSwweDg0LDB4NTEsMHhENywweEJFLDB4QkYsMHhG
QywKLSAgICAweEM1LDB4NTksMHg2NCwweDUxLDB4RTgsMHhEOCwweEZGLDB4RkUsMHg4NCwweDUx
LDB4NDQsMHg0OSwweEY4LDB4RUUsMHhCRiwweEJFLAotICAgIDB4QTUsMHg1MSwweDY0LDB4NDks
MHg1RCwweDdELDB4QTMsMHg3QiwweEE0LDB4NDksMHg0NCwweDQ5LDB4RUYsMHg3RiwweDVGLDB4
RjksCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweEEwLDB4ODAsMHgyMiwweDBFLDB4NjQsMHg1
MSwweDIzLDB4NDksMHgxQywweDNGLDB4MkEsMHgwQiwKLSAgICAweDg4LDB4N0EsMHhDNSwweDU5
LDB4RkQsMHhBRiwweDI5LDB4MzUsMHg0NiwweDcyLDB4QzMsMHg2MSwweENBLDB4NkEsMHhDMCww
eEUwLAotICAgIDB4MDUsMHg2QSwweEEzLDB4NTksMHg3RSwweEZBLDB4RTgsMHhFOCwweDg0LDB4
NTksMHhFMiwweDM4LDB4MDAsMHhBMCwweEYwLDB4NzAsCi0gICAgMHg2NCwweDUxLDB4QTEsMHgz
MCwweDgwLDB4RkEsMHhGQSwweDU3LDB4NDQsMHg0OSwweEEyLDB4MzAsMHgyQSwweEFGLDB4MzUs
MHhERiwKLSAgICAweDY0LDB4NDksMHgyMywweDQxLDB4MjAsMHgwQSwweDAzLDB4QkQsMHg4NCww
eDQ5LDB4MDMsMHgzOSwweDVCLDB4N0EsMHhGOCwweDdBLAotICAgIDB4MDMsMHgzOSwweEEyLDB4
MzAsMHhFOCwweEE4LDB4MkEsMHgwMCwweDIzLDB4NDEsMHhDMiwweDMwLDB4RjUsMHhGQiwweDgy
LDB4MDIsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEYyLDB4RjAsMHhGNywweEU2LDB4RTMs
MHgzMCwweEEyLDB4MzAsMHhGRSwweEZFLDB4RkMsMHhDQSwKLSAgICAweEMyLDB4MzAsMHg4Miww
eDI4LDB4NUMsMHhFOCwweEEyLDB4MjIsMHhDMiwweDI4LDB4ODEsMHgyMCwweEZCLDB4RjIsMHhF
QSwweEY4LAotICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHhCNSwweDk3LDB4QTUsMHhBRCwweEEy
LDB4MzAsMHhDMywweDI4LDB4RkYsMHhENywweDU1LDB4RDcsCi0gICAgMHhFMywweDI4LDB4QTIs
MHgyOCwweEJGLDB4MUQsMHg5NywweEZGLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhGQSwweEZFLDB4
NTcsMHhERCwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4NzcsMHhBNywweEI1LDB4QkQsMHg0
NCwweDQxLDB4RTMsMHgzMCwweDI5LDB4MEIsMHgwMiwweDAzLAotICAgIDB4ODUsMHg1MSwweDAz
LDB4MzksMHg1RiwweEJBLDB4MkEsMHgyQSwweDY0LDB4NDksMHgyMywweDQxLDB4MTUsMHgyRiww
eDhBLDB4QTAsCi0gICAgMHg2NSwweDQ5LDB4QzIsMHgzOCwweDdBLDB4RkUsMHhGRSwweDY4LDB4
MDMsMHgzOSwweEMyLDB4MzgsMHhGOSwweEUxLDB4QUEsMHhBQSwKLSAgICAweDIzLDB4NDEsMHhF
MywweDM4LDB4QTMsMHhCRiwweEJGLDB4RkYsMHgyMywweDQxLDB4RTIsMHgzOCwweEVBLDB4RkMs
MHg3NiwweDc2LAotICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHgwQSwweDA5LDB4QUIsMHg4Myww
eDIzLDB4NDksMHhDMiwweDQwLDB4MkUsMHgzQSwweEZFLDB4NUYsCi0gICAgMHg2NSwweDQ5LDB4
RTIsMHg0MCwweDBCLDB4QkIsMHhBRiwweDVELDB4NjQsMHg0OSwweDAzLDB4NDEsMHgwMCwweDAy
LDB4MkQsMHhCNSwKLSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4NDgsMHg0MCwweEUwLDB4NkIs
MHgyMywweDQxLDB4QTEsMHgzMCwweEQ1LDB4NUYsMHg3RSwweEU4LAotICAgIDB4QzIsMHgzMCww
eDYxLDB4MjgsMHhFOCwweDZBLDB4QTIsMHhBMiwweEMyLDB4MzAsMHg4MSwweDI4LDB4RjUsMHhG
RCwweEFBLDB4MEEsCi0gICAgMHhFMywweDM4LDB4NjEsMHgyOCwweDBCLDB4MkYsMHhBQSwweEEy
LDB4MDMsMHgzOSwweEExLDB4MjgsMHg4MCwweDgyLDB4QUEsMHhBQiwKLSAgICAweDAzLDB4MzEs
MHhBMiwweDMwLDB4RUEsMHg4QSwweDBBLDB4OEEsMHgwMywweDMxLDB4QTIsMHgyOCwweDhBLDB4
QkUsMHhGQSwweDdFLAotICAgIDB4RTMsMHgzMCwweDgxLDB4MjAsMHhFMiwweEVGLDB4RjcsMHg3
RiwweEMyLDB4MzAsMHg4MSwweDI4LDB4MEEsMHgzQiwweEFGLDB4Q0QsCi0gICAgMHhFMywweDMw
LDB4QTIsMHgyOCwweEVBLDB4OEIsMHg4OSwweDVELDB4RTMsMHgzMCwweEEyLDB4MjgsMHhGQiww
eEZGLDB4RkYsMHhEQSwKLSAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4RUUsMHg3RCwweEVBLDB4
RTIsMHhFMiwweDMwLDB4QTIsMHgyOCwweDZCLDB4RjksMHg1NywweDU1LAotICAgIDB4RTIsMHgz
MCwweEEyLDB4MjgsMHgwMiwweEFCLDB4QzksMHg4OSwweDAzLDB4MzksMHhBMiwweDI4LDB4Qjgs
MHhDQiwweEJGLDB4N0QsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEFCLDB4MkIsMHhFRiww
eEZELDB4RTIsMHgzMCwweEEyLDB4MjgsMHhFRSwweEY0LDB4RUEsMHgyQiwKLSAgICAweEUyLDB4
MzAsMHhBMiwweDI4LDB4RUIsMHhFOCwweEJBLDB4N0EsMHhFMiwweDMwLDB4QzIsMHgyOCwweDA5
LDB4MDksMHg4NywweDdELAotICAgIDB4RTIsMHgzMCwweEMyLDB4MjgsMHgyOCwweDcyLDB4N0Ys
MHhFNSwweEUyLDB4MzAsMHhBMiwweDI4LDB4QkMsMHg4MiwweEEyLDB4QUUsCi0gICAgMHhFMiww
eDMwLDB4QzIsMHgyOCwweEY1LDB4NzcsMHhBMCwweDNCLDB4RTMsMHgzMCwweEExLDB4MjgsMHgw
RCwweENELDB4RkYsMHg1QiwKLSAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4QkEsMHhCRiwweEFG
LDB4QkIsMHgwMywweDMxLDB4QzIsMHgyOCwweDdFLDB4N0YsMHhGNywweEVCLAotICAgIDB4MDMs
MHgzMSwweEExLDB4MjgsMHgyRiwweEFGLDB4QTcsMHgxRSwweDAzLDB4MzksMHhFMiwweDMwLDB4
QjcsMHhCMiwweDVFLDB4RkYsCi0gICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweEIwLDB4RjAsMHhG
MiwweEY4LDB4MDMsMHgzMSwweEMyLDB4MjgsMHgwQiwweDNELDB4OTUsMHhENSwKLSAgICAweDAz
LDB4MzEsMHhDMiwweDMwLDB4MDIsMHhCQiwweEY3LDB4N0QsMHgyMywweDM5LDB4RTMsMHgzMCww
eEY4LDB4RkUsMHhFNSwweEY1LAotICAgIDB4MjMsMHgzOSwweEUzLDB4MzgsMHg1RSwweEYzLDB4
N0QsMHg1NSwweDAzLDB4MzksMHhDMiwweDMwLDB4ODcsMHhBRSwweEJFLDB4M0UsCi0gICAgMHgw
MywweDM5LDB4RTMsMHgzMCwweEJGLDB4MjEsMHgyMSwweDMxLDB4MDMsMHgzOSwweEExLDB4Mjgs
MHhGRSwweDdDLDB4RDgsMHhCOCwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QjMsMHhBRiww
eEI5LDB4RDUsMHg0NCwweDQ5LDB4QzIsMHgzMCwweDI5LDB4MDcsMHgyRCwweEJELAotICAgIDB4
QTQsMHg1MSwweDIzLDB4NDEsMHgyMiwweEFGLDB4QkYsMHgzRCwweDZCLDB4OEIsMHhBNCwweDUx
LDB4RjUsMHhBNSwweDI1LDB4MkQsCi0gICAgMHhGMCwweEM0LDB4NEIsMHg4QiwweEJELDB4MkYs
MHgwMiwweDAyLDB4MzEsMHhDRCwweEIwLDB4QjQsMHhCRCwweEFCLDB4ODIsMHgwMiwKLSAgICAw
eDMxLDB4QzUsMHhBRiwweEJDLDB4REYsMHhGOCwweEE4LDB4ODAsMHgxMCwweEM1LDB4OEUsMHhC
NCwweDU3LDB4NzcsMHhGQSwweDgwLAotICAgIDB4RDAsMHhCQywweDRFLDB4QUMsMHhCQSwweEZF
LDB4RkUsMHg3OCwweENGLDB4QjQsMHg2RSwweEI0LDB4REYsMHhGRCwweEVELDB4NzUsCi0gICAg
MHhBRiwweEI0LDB4NkUsMHhCNCwweDNDLDB4QkEsMHg3QSwweDdELDB4Q0YsMHhCQywweDRFLDB4
QUMsMHhBMiwweEVBLDB4QkUsMHhERiwKLSAgICAweEFGLDB4QjQsMHg0RSwweEFDLDB4RjgsMHg3
RSwweDdGLDB4NTcsMHg2RSwweEFDLDB4Q0MsMHg5QiwweDU4LDB4RUUsMHhBQSwweEFBLAotICAg
IDB4NEUsMHhBNCwweDJCLDB4ODMsMHg3NywweDdGLDB4QTgsMHg4MCwweENDLDB4OUIsMHhBOSww
eDcyLDB4N0YsMHg3RSwweDdBLDB4RTgsCi0gICAgMHhFQSwweDdBLDB4NjgsMHg2QSwweEZFLDB4
RkYsMHhEQSwweEYwLDB4QTgsMHg3MiwweDQ3LDB4NjIsMHg1RSwweEZBLDB4Q0EsMHgyMCwKLSAg
ICAweEM4LDB4NzIsMHg0NiwweDYyLDB4QTUsMHgyQiwweEVBLDB4RkEsMHhFOSwweDdBLDB4ODcs
MHg2QSwweEVCLDB4OEYsMHhBRCwweDJBLAotICAgIDB4MDksMHg3QiwweEM5LDB4NzIsMHhBOSww
eEE5LDB4M0IsMHgwOSwweDJBLDB4ODMsMHhDOSwweDcyLDB4N0IsMHhGQiwweEIzLDB4Q0IsCi0g
ICAgMHgwQSwweDdCLDB4ODgsMHg2QSwweEJGLDB4RUEsMHhEQSwweEZDLDB4QzksMHg3MiwweDY4
LDB4NjIsMHg3QywweEVBLDB4OEEsMHhCOCwKLSAgICAweEE5LDB4NkEsMHgwNiwweDVBLDB4NUYs
MHhERSwweEY4LDB4QzgsMHg0NywweDYyLDB4QzUsMHg1MSwweDdGLDB4NzIsMHhGMCwweEUwLAot
ICAgIDB4ODgsMHg2QSwweEE1LDB4NDksMHgzNywweDU3LDB4NTcsMHg1RiwweEVBLDB4NzIsMHg2
NCwweDQxLDB4MDIsMHhBRiwweEZELDB4NTUsCi0gICAgMHg0MywweDQ5LDB4RTIsMHgzOCwweEY3
LDB4QUUsMHhFOCwweEVCLDB4MjMsMHg0OSwweEUyLDB4MzgsMHg3RSwweEVFLDB4RUIsMHhGQSwK
LSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4QUIsMHgwOSwweEM1LDB4RjcsMHgyMywweDQ5LDB4
QzEsMHgzOCwweEE4LDB4RTgsMHhCQSwweEJELAotICAgIDB4MjMsMHg0OSwweDAyLDB4NDEsMHgx
RiwweEE5LDB4REYsMHhERSwweDIzLDB4NDksMHgwMiwweDQxLDB4RTAsMHhFMCwweEQ4LDB4NTcs
Ci0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEQ3LDB4QkQsMHg4MCwweDAwLDB4NDMsMHg0OSww
eDAyLDB4NDEsMHg1RiwweDY5LDB4RTMsMHhGQiwKLSAgICAweDQzLDB4NDksMHgwMiwweDQxLDB4
QTMsMHhGRSwweEVCLDB4RUIsMHgyMywweDQ5LDB4MDIsMHg0MSwweEFBLDB4OUEsMHgyQSwweEI3
LAotICAgIDB4NDMsMHg0OSwweEUyLDB4NDAsMHhCQiwweDJFLDB4REIsMHg1RiwweDIzLDB4NDEs
MHhFMiwweDQwLDB4NUEsMHhERSwweDU3LDB4NzcsCi0gICAgMHgyMywweDQ5LDB4QzIsMHg0MCww
eEY1LDB4QUUsMHhBQiwweEFCLDB4MjMsMHg0OSwweEMyLDB4MzgsMHhDQSwweDJCLDB4RTgsMHg1
QSwKLSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4M0IsMHhBQiwweEFCLDB4RUQsMHgyMywweDQ5
LDB4RTIsMHg0MCwweEFFLDB4Q0EsMHhDQSwweDRGLAotICAgIDB4MDMsMHg0OSwweEUxLDB4Mzgs
MHgyMywweEE5LDB4RTcsMHg2RiwweDAzLDB4NDEsMHhDMiwweDQwLDB4MDIsMHgyMCwweDMyLDB4
MDIsCi0gICAgMHgyMywweDQ5LDB4QzIsMHgzOCwweENBLDB4NkEsMHg2OCwweEU4LDB4MDMsMHg0
MSwweEExLDB4MzgsMHhGMiwweEE2LDB4QUQsMHg4QSwKLSAgICAweDAzLDB4NDksMHhDMiwweDM4
LDB4REYsMHhFQSwweDgyLDB4QkEsMHgyMywweDQ5LDB4RTMsMHg0MCwweEZBLDB4RUEsMHhCRCww
eEJELAotICAgIDB4QTUsMHg1OSwweDAzLDB4NDksMHgyRCwweDM1LDB4MzUsMHgyNSwweDQ2LDB4
NkEsMHhDNSwweDU5LDB4NjUsMHhBRiwweDhGLDB4MEYsCi0gICAgMHgyNiwweDZBLDB4QzQsMHg1
OSwweERFLDB4RkIsMHg3QiwweEZDLDB4RTUsMHg1OSwweDg0LDB4NTEsMHg2QSwweEVBLDB4QUIs
MHhBQiwKLSAgICAweEU1LDB4NjEsMHg4NCwweDUxLDB4RkQsMHhGNywweDMyLDB4MkEsMHhBNCww
eDU5LDB4NjQsMHg0OSwweEZFLDB4RkYsMHgwOCwweDAwLAotICAgIDB4QTQsMHg1MSwweDIzLDB4
NDksMHg4QSwweEVBLDB4RkUsMHg3RiwweDY0LDB4NDksMHgyMywweDQxLDB4QzAsMHg2MCwweEFB
LDB4QkUsCi0gICAgMHg4NSwweDUxLDB4NjQsMHg0OSwweDRGLDB4OTUsMHg5OSwweDU5LDB4ODQs
MHg0OSwweDQ0LDB4NDksMHhDNSwweDVFLDB4NUEsMHhGNywKLSAgICAweDY0LDB4NDksMHgyMyww
eDQxLDB4QUEsMHg2QiwweDJCLDB4QTgsMHg2NCwweDUxLDB4MDMsMHg0MSwweDhCLDB4QkUsMHhG
QywweERFLAotICAgIDB4NDcsMHg3MiwweDQ0LDB4NDksMHgwRiwweEFELDB4QjksMHhCNSwweDg4
LDB4N0EsMHhFNSwweDYxLDB4RTgsMHhGNywweDc3LDB4REQsCi0gICAgMHgwNSwweDYyLDB4NDMs
MHg0OSwweEEwLDB4RTAsMHg2OCwweDVFLDB4NjMsMHg1MSwweDQxLDB4MjgsMHhFMCwweEY4LDB4
N0EsMHg3RSwKLSAgICAweEMyLDB4MzgsMHg0MSwweDIwLDB4MjIsMHhBQSwweEZGLDB4N0QsMHhF
MiwweDM4LDB4NjEsMHgyOCwweEIwLDB4RjIsMHhBQiwweEZELAotICAgIDB4NDQsMHg0MSwweEMy
LDB4MzAsMHgwQiwweEJELDB4RkQsMHhGNSwweDQzLDB4NDEsMHhDMiwweDMwLDB4NjIsMHg3Riww
eEZGLDB4N0YsCi0gICAgMHg0NCwweDQxLDB4RTIsMHgzMCwweEU5LDB4QUYsMHgzOSwweENGLDB4
MjQsMHg0MSwweEUzLDB4MzAsMHg4QiwweDhCLDB4RkUsMHhGRSwKLSAgICAweDAzLDB4MzksMHhF
MywweDMwLDB4RkMsMHhBMCwweDlFLDB4NTcsMHgwMywweDMxLDB4QzMsMHgzMCwweEE3LDB4RjYs
MHg3QywweEYwLAotICAgIDB4QzIsMHgyOCwweEEyLDB4MjgsMHhCRSwweEZFLDB4QkEsMHg1RCww
eEMyLDB4MjgsMHg4MSwweDIwLDB4RjAsMHgwQiwweDI5LDB4QkQsCi0gICAgMHhDMiwweDI4LDB4
ODEsMHgyMCwweEFBLDB4QUEsMHhCRSwweEZGLDB4QzMsMHgyOCwweEEyLDB4MjgsMHgwQiwweDA5
LDB4MDMsMHhBMiwKLSAgICAweEMyLDB4MjgsMHhBMiwweDI4LDB4OTAsMHg3QywweDY4LDB4Qzgs
MHhDMywweDMwLDB4ODIsMHgyMCwweEEyLDB4RUIsMHhBRiwweDNGLAotICAgIDB4RTMsMHgzMCww
eEEyLDB4MjgsMHgzRCwweEJCLDB4M0EsMHgzRiwweDY1LDB4NDksMHgwMywweDM5LDB4QTksMHgy
OSwweEFELDB4MkQsCi0gICAgMHg4NSwweDUxLDB4MDMsMHgzOSwweDhBLDB4QkEsMHhGRSwweDVF
LDB4NDQsMHg0OSwweEMyLDB4MzAsMHgwMCwweEEwLDB4QUEsMHhGRiwKLSAgICAweDQ0LDB4NDks
MHhDMiwweDMwLDB4NzAsMHhFOCwweEFGLDB4NTUsMHgyMywweDQxLDB4QzMsMHgzMCwweEIyLDB4
QUEsMHg4QSwweDZGLAotICAgIDB4MDMsMHg0MSwweEUzLDB4MzgsMHhGOCwweDVBLDB4NUIsMHg1
NSwweDIzLDB4NDEsMHhDMiwweDM4LDB4RkYsMHhGNSwweEQ3LDB4NTYsCi0gICAgMHgyMywweDQx
LDB4RTIsMHgzOCwweEVBLDB4RTksMHhFOSwweEFFLDB4MDMsMHg0MSwweEMyLDB4MzgsMHg1Riww
eEZFLDB4RUMsMHhFMCwKLSAgICAweEUzLDB4NDAsMHhDMiwweDM4LDB4NjksMHhEQSwweEJBLDB4
QkUsMHgyNCwweDQ5LDB4QzIsMHgzOCwweDBCLDB4MjcsMHhBRiwweEFCLAotICAgIDB4NDQsMHg0
OSwweEUyLDB4MzgsMHhDMiwweEVCLDB4NzcsMHg3RiwweDIzLDB4NDEsMHhDMiwweDM4LDB4RTIs
MHhFMCwweDZBLDB4QUQsCi0gICAgMHhFMiwweDM4LDB4QTEsMHgyOCwweEZBLDB4N0MsMHhFQSww
eEMwLDB4QzIsMHgzMCwweEEyLDB4MjgsMHhFRSwweDc1LDB4NEYsMHhGQSwKLSAgICAweEUzLDB4
MzAsMHg4MSwweDI4LDB4RkEsMHg2QSwweDcwLDB4RUEsMHhFMywweDMwLDB4ODIsMHgyOCwweDI5
LDB4QUIsMHhCQiwweEQ3LAotICAgIDB4RTMsMHgzMCwweDgxLDB4MjAsMHhBMCwweEEyLDB4RDYs
MHg1RCwweEMyLDB4MjgsMHg4MSwweDI4LDB4QTAsMHg4MCwweDNFLDB4QkQsCi0gICAgMHhFMyww
eDMwLDB4QTIsMHgyOCwweDdELDB4RjcsMHhGRiwweDA3LDB4QzIsMHgzMCwweDgxLDB4MjgsMHhG
NSwweERELDB4QkYsMHgwMCwKLSAgICAweEUzLDB4MzAsMHg4MSwweDI4LDB4N0QsMHhBRiwweEFC
LDB4ODIsMHhFMywweDMwLDB4QTIsMHgyOCwweDU1LDB4NTcsMHhGRiwweEFBLAotICAgIDB4RTMs
MHgzMCwweEEyLDB4MjgsMHhGRiwweEZELDB4NUYsMHhFMCwweEMzLDB4MzAsMHg4MSwweDI4LDB4
NkUsMHg3NSwweDU3LDB4NzgsCi0gICAgMHhFMiwweDMwLDB4ODIsMHgyOCwweDg5LDB4RkQsMHg3
NSwweDU1LDB4QzIsMHgyOCwweDgxLDB4MjgsMHhFQSwweDdCLDB4QkUsMHg4QiwKLSAgICAweEMy
LDB4MjgsMHhBMiwweDI4LDB4MzUsMHg1NSwweDU1LDB4N0IsMHhDMiwweDMwLDB4QTIsMHgyOCww
eDJELDB4MjUsMHhFRCwweEZGLAotICAgIDB4RTIsMHgzMCwweEMyLDB4MjgsMHhFQiwweEJGLDB4
RkQsMHhBMywweDIzLDB4MzEsMHhDMiwweDI4LDB4N0QsMHg3RiwweDVCLDB4RUIsCi0gICAgMHhF
MiwweDMwLDB4QTIsMHgyOCwweDJGLDB4RkYsMHhENywweEVBLDB4RTMsMHgzMCwweEEyLDB4Mjgs
MHhBRSwweEFGLDB4QUQsMHhBQSwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QUUsMHg5Nyww
eEY3LDB4RUEsMHgwMywweDMxLDB4QzIsMHgyOCwweEZCLDB4QUYsMHg4OSwweEFGLAotICAgIDB4
MDMsMHgzMSwweEMyLDB4MzAsMHhERiwweEVBLDB4QzgsMHhBMiwweDAzLDB4MzEsMHhDMiwweDI4
LDB4RTMsMHhFRiwweEJGLDB4QkYsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweEI3LDB4MEQs
MHhCRSwweEJGLDB4NDQsMHg0MSwweEUzLDB4MzAsMHhCRCwweDI3LDB4QUYsMHhBQiwKLSAgICAw
eDIzLDB4MzksMHhDMiwweDMwLDB4NUUsMHg3QSwweDY4LDB4RkMsMHgwMywweDM5LDB4QTEsMHgy
OCwweEZELDB4RkYsMHhBRCwweDBGLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGQiwweEJC
LDB4RUYsMHhFRSwweDAzLDB4MzksMHhDMiwweDMwLDB4RkYsMHg3QSwweDdBLDB4QkIsCi0gICAg
MHhFMywweDMwLDB4QzIsMHgzMCwweEZCLDB4QUIsMHgyRiwweEU3LDB4RTMsMHgzOCwweDAzLDB4
MzEsMHhDMiwweDhBLDB4RTIsMHhFQSwKLSAgICAweDAzLDB4MzksMHhDMywweDMwLDB4QUEsMHg3
QiwweDI4LDB4MkEsMHgyMywweDM5LDB4RTIsMHgzOCwweDU1LDB4NUQsMHg3RiwweDdDLAotICAg
IDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGRiwweEZCLDB4OTUsMHhBQiwweDQ0LDB4NDksMHhFMyww
eDM4LDB4QkQsMHhCRiwweEJCLDB4MkIsCi0gICAgMHgyNiwweDYyLDB4NDQsMHg0OSwweEZELDB4
QkQsMHhCRCwweDI5LDB4RUMsMHg5QiwweEM0LDB4NTksMHgyRCwweDJELDB4MkYsMHgyRiwKLSAg
ICAweDMxLDB4QzUsMHg4RSwweEI0LDB4MkIsMHgwQiwweDhELDB4MDUsMHgzMSwweENELDB4MTAs
MHhDNSwweEFBLDB4QkYsMHhGQywweEMzLAotICAgIDB4MzEsMHhDRCwweDEwLDB4QzUsMHg0MCww
eEE5LDB4ODIsMHgyQiwweDMxLDB4Q0QsMHgxMCwweEM1LDB4REUsMHg2QSwweEYwLDB4NjAsCi0g
ICAgMHgzMCwweEM1LDB4QUYsMHhCNCwweDVFLDB4RkEsMHhBQSwweDg4LDB4RUYsMHhDNCwweDZF
LDB4QUMsMHg1RCwweDdBLDB4RTgsMHgwMCwKLSAgICAweEVGLDB4QkMsMHg0RCwweEFDLDB4N0Ys
MHg1RiwweDdGLDB4RTgsMHg4RiwweEI0LDB4NEQsMHhBQywweEJGLDB4QUQsMHg1NSwweDU1LAot
ICAgIDB4OEYsMHhCNCwweDJELDB4QUMsMHhGRiwweDc4LDB4RkYsMHhERiwweDhGLDB4QjQsMHg0
RSwweEFDLDB4NTUsMHhGOSwweEJBLDB4QjgsCi0gICAgMHg4RiwweEI0LDB4RUMsMHg5QiwweDdF
LDB4NzIsMHg2OCwweEZBLDB4MEQsMHg5QywweDBBLDB4ODMsMHg3OCwweEUwLDB4RTgsMHhBMCwK
LSAgICAweDZCLDB4OEIsMHhBOSwweDcyLDB4N0YsMHg3QSwweEVBLDB4QTAsMHhFOSwweDdBLDB4
NjcsMHg2QSwweDc3LDB4REEsMHhBOCwweEU4LAotICAgIDB4QzksMHg3MiwweDY2LDB4NkEsMHhC
RCwweEFGLDB4QUEsMHgyMiwweEU5LDB4NzIsMHhBOCwweDcyLDB4QkQsMHhBQiwweDBGLDB4MzUs
Ci0gICAgMHgwQSwweDdCLDB4QzgsMHg3MiwweDJELDB4QkYsMHgyRCwweEFGLDB4NEIsMHg4Myww
eEU5LDB4N0EsMHgzRCwweEJGLDB4QUIsMHhBRiwKLSAgICAweDRCLDB4ODMsMHhFOSwweDdBLDB4
NUUsMHg3RSwweERFLDB4RkMsMHgyQSwweDgzLDB4ODksMHg2QSwweDVBLDB4RkEsMHhBOCwweEEw
LAotICAgIDB4RUEsMHg3QSwweDg4LDB4NkEsMHg1NSwweDc2LDB4QkMsMHhCOCwweEE5LDB4NkEs
MHgwNiwweDVBLDB4NUUsMHhGMiwweEE4LDB4ODgsCi0gICAgMHg0NywweDYyLDB4QTUsMHg0OSww
eDVFLDB4RUYsMHhFQSwweEUwLDB4RTYsMHg1MSwweDI0LDB4MzksMHhGRiwweDZFLDB4RUEsMHg2
MCwKLSAgICAweDIzLDB4NDksMHhDMiwweDM4LDB4QUEsMHgyMCwweEFCLDB4QUQsMHgyMywweDQ5
LDB4RTIsMHg0MCwweDhFLDB4QUUsMHg5NiwweDU3LAotICAgIDB4MjMsMHg0OSwweEMxLDB4Mzgs
MHg2OCwweDcyLDB4REEsMHhGRSwweDQ0LDB4NDksMHhFMiwweDQwLDB4NTUsMHg3NSwweEZGLDB4
MzcsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweDJGLDB4RTEsMHhFMiwweEY4LDB4MjMsMHg0
OSwweEUyLDB4NDAsMHhERSwweDU1LDB4NTUsMHgxRCwKLSAgICAweDIzLDB4NDksMHhFMiwweDQw
LDB4MjMsMHgwQiwweDJCLDB4QUQsMHgyMywweDQ5LDB4RTIsMHg0MCwweENBLDB4OUEsMHhGQiww
eEZCLAotICAgIDB4NDMsMHg0OSwweDAyLDB4NDEsMHgyQiwweEU1LDB4RDUsMHg3RSwweDIyLDB4
NDEsMHhDMiwweDM4LDB4QTAsMHgyOCwweEE4LDB4N0UsCi0gICAgMHgyMywweDQ5LDB4QzIsMHgz
OCwweERGLDB4RDYsMHhEQywweEFGLDB4MDIsMHg0MSwweEUyLDB4MzgsMHhBRCwweDAyLDB4MDIs
MHgwMiwKLSAgICAweDAzLDB4NDEsMHhFMiwweDQwLDB4NDMsMHg3NiwweEQ3LDB4RTksMHgwMyww
eDQxLDB4QzEsMHgzOCwweEZCLDB4RUQsMHhDRiwweDgwLAotICAgIDB4MDIsMHg0OSwweEUyLDB4
MzgsMHgyQSwweEFCLDB4QkQsMHg3NSwweDAyLDB4NDEsMHhFMSwweDQwLDB4NzMsMHgwQSwweDgw
LDB4QzAsCi0gICAgMHgwMiwweDQxLDB4QzEsMHgzOCwweENBLDB4MjYsMHgyRiwweDhCLDB4MjIs
MHg0MSwweEUyLDB4MzgsMHhGQiwweEVCLDB4QjcsMHg5NSwKLSAgICAweDAyLDB4NDEsMHhDMiww
eDM4LDB4RTAsMHgwMCwweEFFLDB4NUUsMHgwMiwweDQxLDB4QzIsMHgzOCwweEVCLDB4RTgsMHhE
OCwweEZBLAotICAgIDB4MDMsMHg0OSwweEUyLDB4NDAsMHg3RiwweDU1LDB4OTUsMHg5NywweDAz
LDB4NDksMHhDMiwweDQwLDB4MEEsMHhFNywweEE4LDB4RkUsCi0gICAgMHhFNSwweDYxLDB4MDMs
MHg0OSwweEE1LDB4MzUsMHhCNSwweEI1LDB4MjYsMHg2QSwweEM1LDB4NTksMHgwQiwweDI5LDB4
ODIsMHg4MCwKLSAgICAweDI2LDB4NkEsMHhDNSwweDU5LDB4RTgsMHhGQSwweDdFLDB4RkYsMHhF
NSwweDYxLDB4QTQsMHg1OSwweEVFLDB4OEMsMHhDMCwweDAyLAotICAgIDB4RTUsMHg2MSwweEE0
LDB4NTEsMHgyQiwweEJGLDB4REEsMHg2MCwweEU1LDB4NTksMHg0MywweDQ5LDB4RkEsMHhFOCww
eDZBLDB4RUEsCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweDc4LDB4RUUsMHhGOCwweENBLDB4
NDQsMHg0OSwweEUyLDB4MzgsMHgyQSwweDI2LDB4QUEsMHhBQSwKLSAgICAweDY0LDB4NDksMHgw
MiwweDM5LDB4QTgsMHhBQSwweEZFLDB4RDcsMHg2NSwweDQ5LDB4MjQsMHg0MSwweEI1LDB4QjUs
MHhFNSwweEY3LAotICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHgyOCwweEJCLDB4REYsMHhERSww
eDY0LDB4NDksMHgwMywweDQxLDB4N0EsMHg3QywweEQyLDB4RTIsCi0gICAgMHhBNSwweDU5LDB4
MDMsMHg0MSwweDJELDB4OTUsMHg5NSwweDU1LDB4MDYsMHg2QSwweDg0LDB4NTEsMHgyQSwweDYy
LDB4RUYsMHhGRCwKLSAgICAweEM1LDB4NTksMHhFMiwweDQwLDB4RjgsMHg3RSwweDVBLDB4QUEs
MHg2NCwweDQ5LDB4NDEsMHgyOCwweDdGLDB4NUYsMHg3RiwweEE4LAotICAgIDB4RTMsMHgzOCww
eDQxLDB4MjgsMHhERCwweDdELDB4RkIsMHhDOCwweEEyLDB4MzAsMHg0MSwweDIwLDB4MkIsMHhB
OSwweDBBLDB4MjIsCi0gICAgMHgwMywweDM5LDB4QTEsMHgyOCwweDJELDB4MjksMHhGRCwweERE
LDB4MjIsMHgzOSwweEMyLDB4MzAsMHg1NywweEY2LDB4REYsMHhGNSwKLSAgICAweDQzLDB4NDEs
MHhFMiwweDMwLDB4QUYsMHhBOSwweDhCLDB4RkYsMHgwMywweDM5LDB4QTIsMHgyOCwweDg4LDB4
RUUsMHhCRSwweEY1LAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHgzQSwweEI2LDB4RDcsMHhE
NSwweEUzLDB4MzAsMHg2MSwweDIwLDB4ODAsMHhBOCwweDZBLDB4NUEsCi0gICAgMHhBMiwweDI4
LDB4NjEsMHgyMCwweEJFLDB4RkUsMHhERiwweDU3LDB4QTIsMHgyOCwweDYxLDB4MjAsMHhBMyww
eEFCLDB4QkYsMHhFOSwKLSAgICAweEEyLDB4MjgsMHg4MiwweDIwLDB4QTQsMHgzNSwweEVCLDB4
MDksMHhDMiwweDI4LDB4ODIsMHgyMCwweDAyLDB4MDIsMHgwQiwweDBGLAotICAgIDB4RTIsMHgy
OCwweEEyLDB4MjgsMHhGOCwweDZBLDB4N0EsMHg3RiwweEMyLDB4MjgsMHg4MiwweDI4LDB4MkYs
MHhBRiwweEVBLDB4MjIsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEFELDB4MjcsMHgyRiww
eDNGLDB4NDQsMHg0MSwweDAzLDB4MzksMHgyNSwweEFELDB4RjMsMHhDQiwKLSAgICAweDQ0LDB4
NDEsMHhBMiwweDI4LDB4RTAsMHhGRSwweDdFLDB4N0YsMHhDMiwweDMwLDB4NjEsMHgyMCwweDgw
LDB4RkUsMHg1QSwweDVGLAotICAgIDB4QzIsMHgzMCwweDYxLDB4MjAsMHhBMiwweEJFLDB4RkYs
MHhGNSwweEUyLDB4MzgsMHg4MSwweDI4LDB4QTMsMHgzQiwweEJELDB4RkYsCi0gICAgMHhFMiww
eDM4LDB4ODEsMHgyOCwweDJBLDB4QUEsMHhFRiwweDc1LDB4RTMsMHgzOCwweDgxLDB4MjgsMHgw
OCwweEFBLDB4QkUsMHhENywKLSAgICAweDIzLDB4NDEsMHhBMiwweDMwLDB4MjIsMHhCQiwweEFE
LDB4QUQsMHgyMywweDQxLDB4RTMsMHgzOCwweEY4LDB4QUEsMHg5QiwweDVGLAotICAgIDB4MjMs
MHg0MSwweEMzLDB4MzgsMHg3RiwweEZBLDB4M0UsMHhCRiwweDIzLDB4NDEsMHhFMywweDM4LDB4
MEQsMHhFRCwweDlFLDB4REYsCi0gICAgMHgyMywweDQxLDB4RTIsMHgzOCwweEZBLDB4NkIsMHhF
QSwweEVBLDB4MjQsMHg0MSwweEUyLDB4MzgsMHhFRCwweDJGLDB4QkQsMHg3RCwKLSAgICAweDIz
LDB4NDEsMHhDMiwweDMwLDB4RkEsMHhFQSwweEY4LDB4RkIsMHhFMiwweDM4LDB4QTIsMHgyOCww
eEZFLDB4N0EsMHhGOCwweEZFLAotICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhGRCwweEZELDB4
QkEsMHgyMCwweEMzLDB4MzgsMHg2MSwweDIwLDB4NUUsMHhGRSwweEZFLDB4RjgsCi0gICAgMHhB
MiwweDI4LDB4NjEsMHgyMCwweEZBLDB4RUUsMHhCRSwweDIwLDB4QzIsMHgyOCwweDgxLDB4Mjgs
MHhCNSwweEE1LDB4RTksMHg3QywKLSAgICAweEMzLDB4MjgsMHg4MiwweDI4LDB4MEIsMHhBRiww
eEQ1LDB4NzUsMHhFMywweDMwLDB4ODEsMHgyOCwweDBBLDB4MkIsMHhBRiwweDc1LAotICAgIDB4
RTMsMHgzMCwweEEyLDB4MjgsMHgwMiwweDAwLDB4QUYsMHg3NSwweEUzLDB4MzAsMHhBMiwweDI4
LDB4QTgsMHgyQSwweDJFLDB4M0YsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweDdBLDB4N0Es
MHhGRSwweDAwLDB4MDMsMHgzOSwweEEyLDB4MjgsMHg3RSwweEVBLDB4RkEsMHhFOCwKLSAgICAw
eEMyLDB4MzAsMHg4MiwweDI4LDB4NTYsMHhCQSwweDhBLDB4MDAsMHhDMSwweDI4LDB4ODIsMHgy
OCwweEJCLDB4RkUsMHhGQSwweDNFLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCRiwweEQ3
LDB4N0IsMHhCRiwweEUzLDB4MzAsMHhBMiwweDI4LDB4RkEsMHgwQSwweDNBLDB4QUEsCi0gICAg
MHgwMywweDMxLDB4QzIsMHgzMCwweDhBLDB4ODIsMHhCQiwweDE3LDB4MDMsMHgzMSwweEMyLDB4
MjgsMHhBMiwweEYwLDB4RkUsMHhENiwKLSAgICAweEUyLDB4MzAsMHhDMiwweDI4LDB4RTgsMHg4
QSwweDJBLDB4MjAsMHgwMywweDMxLDB4RTIsMHgzMCwweDdDLDB4NDAsMHgwQSwweDBCLAotICAg
IDB4MDMsMHgzMSwweEMyLDB4MzAsMHhGNywweEE3LDB4QkYsMHgwRSwweEUyLDB4MzAsMHhDMiww
eDI4LDB4M0YsMHgzRiwweEI1LDB4OTUsCi0gICAgMHgwMywweDMxLDB4QzIsMHgyOCwweDNBLDB4
REEsMHhEQywweEFFLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhEQSwweEQ3LDB4RUUsMHhFQiwKLSAg
ICAweDAzLDB4MzksMHhDMiwweDMwLDB4MEEsMHgzRSwweDlELDB4RjUsMHgyNCwweDM5LDB4RTMs
MHgzMCwweDgzLDB4QUEsMHhGQSwweDU5LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBOCww
eDgwLDB4NkMsMHg3RSwweDIzLDB4MzksMHhBMiwweDI4LDB4QjcsMHhBNywweDhBLDB4MkEsCi0g
ICAgMHg0NCwweDQxLDB4QzIsMHgzMCwweDc3LDB4RkYsMHhGQSwweEYzLDB4MjMsMHgzOSwweEUy
LDB4MzAsMHhCNSwweDVELDB4NkYsMHhBQiwKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4RUYs
MHg3RSwweDdBLDB4QTAsMHgwMywweDM5LDB4QzMsMHgzMCwweDhBLDB4RkYsMHhGRiwweDNFLAot
ICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHg4QiwweEExLDB4QkIsMHhENywweEUyLDB4NDAsMHgw
MywweDM5LDB4QjcsMHhENywweDVGLDB4REUsCi0gICAgMHg0MywweDQxLDB4RTMsMHgzOCwweEZE
LDB4M0YsMHhFRCwweEY3LDB4ODUsMHg0OSwweDAzLDB4MzksMHhCRiwweEJGLDB4M0QsMHgwRiwK
LSAgICAweDQ3LDB4NkEsMHg2NSwweDQ5LDB4MkQsMHhBRCwweDJGLDB4MkYsMHgyRCwweEE0LDB4
NjcsMHg2QSwweDJELDB4MkQsMHgyRiwweDBCLAotICAgIDB4MTAsMHhDNSwweDhFLDB4QjQsMHgw
RCwweDhCLDB4ODksMHhBRCwweDMxLDB4QzUsMHhGMCwweEM0LDB4ODMsMHhFRCwweEY1LDB4RkYs
Ci0gICAgMHgxMCwweEM1LDB4Q0YsMHhCQywweDAwLDB4MDgsMHgwRiwweDk3LDB4MzEsMHhDNSww
eENGLDB4QkMsMHgwQSwweEJCLDB4RkUsMHhCNiwKLSAgICAweDMwLDB4QzUsMHhGMCwweEJDLDB4
RUUsMHg1QSwweDVGLDB4N0YsMHgzMCwweEM1LDB4RjAsMHhCQywweEJGLDB4NzksMHhGMiwweEVF
LAotICAgIDB4MTAsMHhDNSwweEFGLDB4QjQsMHg2MCwweDgwLDB4ODIsMHg4OCwweDEwLDB4QzUs
MHg0RCwweEFDLDB4N0YsMHhGQSwweEE4LDB4MjIsCi0gICAgMHhGMCwweEM0LDB4MkQsMHhBNCww
eEQ3LDB4RDcsMHhFQSwweEUwLDB4QUYsMHhCQywweDRFLDB4QUMsMHhBRSwweEZELDB4REQsMHg5
QywKLSAgICAweDhGLDB4QjQsMHg0RSwweEFDLDB4NUUsMHhCRSwweDgzLDB4QjcsMHg2RiwweEFD
LDB4Q0QsMHg5QiwweDVBLDB4NzgsMHhFQSwweEU4LAotICAgIDB4Q0MsMHg5QiwweDZCLDB4OEIs
MHg1RSwweDVBLDB4RkEsMHhFMCwweEFCLDB4OTMsMHhDOSwweDcyLDB4NTcsMHg3RSwweEVBLDB4
ODAsCi0gICAgMHg0QSwweDgzLDB4QTgsMHg3MiwweDc1LDB4RDUsMHhENiwweEY4LDB4RTksMHg3
QSwweDg4LDB4NkEsMHgzNiwweDJELDB4MzIsMHgyMiwKLSAgICAweDJBLDB4ODMsMHhDOSwweDcy
LDB4N0UsMHhFRSwweDNCLDB4RkYsMHg0QSwweDgzLDB4RTgsMHg3QSwweEJELDB4MkYsMHgyRiww
eDE3LAotICAgIDB4NkIsMHg4MywweDBBLDB4ODMsMHhFRSwweEVFLDB4MkYsMHhCNiwweDRCLDB4
ODMsMHhFOSwweDdBLDB4QkQsMHhGQSwweEI4LDB4MDgsCi0gICAgMHg0QiwweDgzLDB4QzksMHg3
MiwweDVGLDB4NkIsMHhFQSwweDIwLDB4MkIsMHg4MywweDg4LDB4NkEsMHg1NywweDdGLDB4N0Ys
MHhGOCwKLSAgICAweEM5LDB4NzIsMHgyNywweDVBLDB4NUEsMHg1RSwweEFBLDB4RTgsMHgyNyww
eDVBLDB4NDQsMHg0MSwweDc4LDB4RTAsMHhBMCwweDgwLAotICAgIDB4MjMsMHg0OSwweEUyLDB4
MzgsMHhCNywweEY3LDB4QTksMHhDMSwweDAzLDB4NDksMHhFMiwweDM4LDB4QjQsMHgyNywweDJE
LDB4M0YsCi0gICAgMHgwMiwweDQ5LDB4RTIsMHg0MCwweDVBLDB4QzgsMHg2QywweEZCLDB4MjMs
MHg0OSwweEUyLDB4NDAsMHgyQiwweDMyLDB4NzcsMHhCRiwKLSAgICAweDAyLDB4NDksMHhFMiww
eDQwLDB4OEYsMHhBQywweEFELDB4MEEsMHgyMywweDQ5LDB4RTIsMHg0MCwweEFELDB4RkIsMHhF
OCwweDVBLAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhCQiwweEFBLDB4MzgsMHg3NywweDQz
LDB4NDksMHgwMywweDQxLDB4NTcsMHg3RSwweDdELDB4RDUsCi0gICAgMHgyMywweDQ5LDB4RTIs
MHg0MCwweERBLDB4N0YsMHhBRiwweDBCLDB4MDIsMHg0MSwweEMxLDB4MzgsMHhGQSwweDhCLDB4
QUIsMHhFQSwKLSAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4QjAsMHhFRSwweEFCLDB4QTksMHg0
NCwweDQxLDB4RTIsMHg0MCwweEY3LDB4QkYsMHhGRCwweEY1LAotICAgIDB4MjMsMHg0MSwweEMy
LDB4NDAsMHhBRiwweEJBLDB4RkMsMHg3RSwweDIzLDB4NDksMHhFMiwweDM4LDB4RUEsMHhFQSww
eEVFLDB4RUQsCi0gICAgMHgwMywweDQxLDB4RTIsMHgzOCwweDk5LDB4MEIsMHgwMSwweDAxLDB4
MjMsMHg0MSwweEUyLDB4NDAsMHhEQiwweDU3LDB4RDcsMHg5NywKLSAgICAweDIzLDB4NDEsMHhD
MiwweDM4LDB4REYsMHg5RSwweEJBLDB4MkEsMHgyMywweDQxLDB4RTIsMHg0MCwweEQ1LDB4RkYs
MHgyRiwweEFCLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhGRiwweEI4LDB4MjAsMHhBMCww
eDIzLDB4NDksMHhFMiwweDQwLDB4REYsMHhGQiwweEZBLDB4QTksCi0gICAgMHgwMywweDQ5LDB4
RTIsMHgzOCwweEE4LDB4MjIsMHg4QSwweEEyLDB4MDMsMHg0OSwweEUyLDB4NDAsMHg3RiwweEU4
LDB4RjgsMHg1QSwKLSAgICAweEE0LDB4NTksMHhFMiwweDQwLDB4M0QsMHhCRCwweEE1LDB4MzUs
MHg0NiwweDZBLDB4RTUsMHg2MSwweEJFLDB4RkIsMHhBMSwweDA5LAotICAgIDB4NDYsMHg2QSww
eEM1LDB4NTksMHg3RiwweDZFLDB4RkYsMHhBMCwweDA2LDB4NjIsMHhDNSwweDU5LDB4REYsMHhG
NSwweDNGLDB4MjUsCi0gICAgMHgwNSwweDYyLDB4ODMsMHg1MSwweEUyLDB4RkEsMHg2OCwweEU4
LDB4QTUsMHg1MSwweDQzLDB4NDksMHg3MCwweDdFLDB4REUsMHhENywKLSAgICAweDQzLDB4NDks
MHgwMywweDQxLDB4RTIsMHhFQSwweEM4LDB4OUMsMHg2NCwweDQ5LDB4MDMsMHgzOSwweDJCLDB4
QUEsMHhFOSwweEY5LAotICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHg3QywweEI3LDB4QkYsMHhG
RiwweDQ0LDB4NDEsMHgyMywweDQxLDB4QUYsMHhBNywweDI5LDB4MjAsCi0gICAgMHg0NCwweDQ5
LDB4MjMsMHgzOSwweERGLDB4QjcsMHhCNiwweDA5LDB4NDQsMHg0MSwweDAzLDB4NDEsMHg3QSww
eDU4LDB4RkMsMHg5QywKLSAgICAweDQ0LDB4NDEsMHhFMiwweDM4LDB4NzcsMHhGNiwweEUzLDB4
RUIsMHg4NCwweDUxLDB4RTIsMHgzOCwweDAyLDB4MzksMHg5NywweDU1LAotICAgIDB4RTUsMHg1
OSwweDQzLDB4NDksMHgwRSwweDBBLDB4MjMsMHhENSwweEU1LDB4NTksMHg0MywweDQxLDB4Nzgs
MHhDMCwweDgwLDB4RTIsCi0gICAgMHgyMywweDQxLDB4QTIsMHgzMCwweDZDLDB4RjgsMHhGQyww
eDU4LDB4RTMsMHgzOCwweDgxLDB4MjgsMHg1RiwweDdFLDB4RjgsMHg3QiwKLSAgICAweEMxLDB4
MzAsMHg4MSwweDIwLDB4NkIsMHg5RiwweERFLDB4M0EsMHhDMiwweDMwLDB4QTEsMHgyOCwweDlC
LDB4MkEsMHgyQSwweEZDLAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHg4OCwweEZCLDB4QkYs
MHg1RiwweEMyLDB4MjgsMHg4MiwweDIwLDB4MjYsMHhBRSwweEU4LDB4Q0EsCi0gICAgMHhDMiww
eDI4LDB4NjEsMHgyMCwweDBBLDB4OEEsMHg3RiwweDU3LDB4ODEsMHgyMCwweDQxLDB4MTgsMHhF
MCwweEU4LDB4RkYsMHhGRiwKLSAgICAweDgyLDB4MjAsMHg2MSwweDIwLDB4REQsMHhERiwweEFG
LDB4MDgsMHhDMiwweDI4LDB4ODEsMHgyMCwweEY1LDB4QkQsMHhCNSwweDk1LAotICAgIDB4QzIs
MHgyOCwweDgxLDB4MjAsMHgyRiwweDJGLDB4MEIsMHgyRiwweEMyLDB4MjgsMHhBMiwweDI4LDB4
MEYsMHgyQSwweDNCLDB4MjgsCi0gICAgMHhFMywweDI4LDB4QTEsMHgyMCwweEVFLDB4MkIsMHhF
RiwweDZGLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhGQSwweDgzLDB4RjUsMHg5NSwKLSAgICAweDAz
LDB4MzEsMHhBMiwweDI4LDB4MzUsMHg5NSwweEZGLDB4NUEsMHg0NCwweDQxLDB4QzIsMHgzMCww
eDhBLDB4RUYsMHhGRiwweERELAotICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhGQywweEZBLDB4
N0EsMHg3RiwweEMyLDB4MjgsMHg2MSwweDI4LDB4N0UsMHhFOCwweDI4LDB4ODIsCi0gICAgMHhD
MiwweDMwLDB4NjEsMHgyMCwweEY1LDB4RUYsMHgzMiwweEIyLDB4QzIsMHgyOCwweDgxLDB4Mjgs
MHg3RiwweEZBLDB4Q0EsMHg4MCwKLSAgICAweEExLDB4MjgsMHg2MSwweDIwLDB4RkIsMHg3Qyww
eDdBLDB4N0MsMHhBMiwweDI4LDB4NjEsMHgyOCwweEJGLDB4NTcsMHhFQSwweENBLAotICAgIDB4
RTMsMHgzOCwweDYxLDB4MjAsMHgwQiwweDBCLDB4OEYsMHhFRCwweEUyLDB4MzgsMHhDMiwweDMw
LDB4ODAsMHgwMCwweDA3LDB4ODUsCi0gICAgMHgyNCwweDQxLDB4RTIsMHgzOCwweEQ1LDB4OTUs
MHg4RCwweEJGLDB4MjMsMHg0MSwweEUzLDB4MzgsMHhCRiwweEY2LDB4QkYsMHg5NywKLSAgICAw
eDIzLDB4NDEsMHhFMywweDM4LDB4RkEsMHhBNiwweDJFLDB4MjgsMHgyMywweDQxLDB4QzIsMHgz
OCwweEJFLDB4RjYsMHgzQSwweDIwLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHg2MCwweDY4
LDB4RjgsMHhDMiwweEMyLDB4MzAsMHhBMiwweDMwLDB4MDIsMHgwMCwweEI4LDB4RkUsCi0gICAg
MHhFMywweDM4LDB4QTIsMHgzMCwweERFLDB4NUEsMHg3QiwweDZELDB4QzIsMHgzMCwweDgxLDB4
MjgsMHhBOCwweEFGLDB4QjQsMHhBRSwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RDMsMHhC
OCwweEFCLDB4MzUsMHhFMywweDMwLDB4NjEsMHgyMCwweDc4LDB4N0EsMHhFOCwweEEwLAotICAg
IDB4QTIsMHgyOCwweDYxLDB4MjAsMHhCQiwweEZGLDB4RkIsMHhBMCwweEEyLDB4MjgsMHg4MSww
eDIwLDB4QkQsMHhGRiwweDVFLDB4RkYsCi0gICAgMHhBMiwweDI4LDB4NjEsMHgyMCwweDAyLDB4
MEEsMHgyRiwweEE3LDB4QzIsMHgyOCwweDgxLDB4MjgsMHgwQiwweEEyLDB4RkEsMHhGQSwKLSAg
ICAweDAzLDB4MzksMHg4MSwweDI4LDB4MDIsMHhCRiwweEFELDB4RkQsMHgwNCwweDM5LDB4QTIs
MHgyOCwweEUwLDB4RjgsMHhGQiwweEZFLAotICAgIDB4QzIsMHgyOCwweDgyLDB4MjgsMHhBOCww
eEFBLDB4RjgsMHhEQSwweEMyLDB4MjgsMHg4MSwweDIwLDB4QUEsMHg4QiwweEVCLDB4N0YsCi0g
ICAgMHhDMiwweDI4LDB4ODIsMHgyOCwweDBFLDB4MjgsMHhGOCwweDY1LDB4RTMsMHgzMCwweDgx
LDB4MjgsMHg4QSwweDJGLDB4QjcsMHhFRCwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4M0Ms
MHg3RSwweDdGLDB4N0QsMHhFMywweDMwLDB4QTIsMHgyOCwweDNFLDB4MzUsMHgyRCwweEY1LAot
ICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHgyQSwweEFCLDB4M0YsMHhCNSwweDI0LDB4MzksMHhF
MiwweDMwLDB4N0YsMHhGRiwweERGLDB4RUIsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEFB
LDB4QjgsMHg3NiwweEQ3LDB4RTIsMHgzMCwweEMyLDB4MjgsMHg3OCwweEUyLDB4Q0IsMHg4OCwK
LSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4MkQsMHhFRiwweENGLDB4RUYsMHgwMywweDMxLDB4
QTIsMHgyOCwweEMyLDB4QUEsMHhGRiwweDVFLAotICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHgy
QSwweEFBLDB4QUEsMHhBOSwweDAzLDB4MzksMHhDMiwweDMwLDB4NTIsMHg1RiwweEI2LDB4QjUs
Ci0gICAgMHgwNCwweDM5LDB4QzMsMHgzMCwweEVGLDB4MkQsMHhBQiwweEJFLDB4MjMsMHgzOSww
eEMyLDB4MzAsMHhCNywweEZBLDB4RkEsMHg4MiwKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4
QTAsMHg4MiwweDAyLDB4NjIsMHgyMywweDQxLDB4QzIsMHgzMCwweDFFLDB4QkMsMHhBMCwweDIw
LAotICAgIDB4MjMsMHg0MSwweDAzLDB4MzksMHgyQiwweDE5LDB4ODUsMHgyOSwweDQ0LDB4NDks
MHhDMiwweDM4LDB4RkUsMHhERiwweEZGLDB4MDIsCi0gICAgMHgyMywweDQxLDB4QzIsMHgzOCww
eEQ2LDB4QkUsMHhBMiwweDJBLDB4NjQsMHg0OSwweEUzLDB4MzgsMHhENywweEZGLDB4QUIsMHhB
QiwKLSAgICAweDg1LDB4NTEsMHgwMywweDM5LDB4NzUsMHhGRiwweEFCLDB4MEEsMHhDNiwweDU5
LDB4MjQsMHg0OSwweEJELDB4M0IsMHgyQiwweDJCLAotICAgIDB4ODksMHg3MiwweEU2LDB4NTks
MHgzNSwweDI1LDB4QkQsMHhCRiwweDJFLDB4QUMsMHhDOSwweDdBLDB4MDksMHgyRCwweEJELDB4
RjUsCi0gICAgMHgxMCwweEM1LDB4Q0MsMHg5QiwweDBBLDB4MEEsMHhBRCwweEY1LDB4MTAsMHhD
NSwweDhGLDB4QjQsMHgyMiwweDIyLDB4MEEsMHhGRCwKLSAgICAweEYwLDB4QzQsMHhDRiwweEJD
LDB4MzcsMHg1NywweDdBLDB4OEIsMHgxMCwweEM1LDB4Q0YsMHhCQywweEJGLDB4RjksMHhFMyww
eEFBLAotICAgIDB4MTAsMHhDNSwweENGLDB4QkMsMHhBQSwweEVGLDB4RkUsMHg5QSwweDEwLDB4
QzUsMHhGMCwweEJDLDB4QTIsMHg5MCwweDM0LDB4MzIsCi0gICAgMHgzMSwweEM1LDB4RjAsMHhC
QywweEZFLDB4N0IsMHhFQiwweEZFLDB4MTAsMHhDNSwweEQwLDB4QkMsMHhCMSwweDJBLDB4Mjgs
MHhBQiwKLSAgICAweEYwLDB4QkMsMHhBRiwweEJDLDB4RTgsMHg4OCwweEVBLDB4ODIsMHhGMCww
eEM0LDB4NkUsMHhCNCwweDVGLDB4RUEsMHhBMCwweDAwLAotICAgIDB4MTAsMHhDNSwweDRFLDB4
QUMsMHg1NywweEZGLDB4RUEsMHg4OCwweDhGLDB4QjQsMHgyRCwweEE0LDB4NUYsMHhGOCwweEY4
LDB4RjAsCi0gICAgMHgyRCwweEE0LDB4QUMsMHg5MywweEZCLDB4RkEsMHhBOCwweDgyLDB4MEQs
MHg5QywweDhCLDB4OTMsMHg1NywweDc3LDB4RkEsMHhBOCwKLSAgICAweEVELDB4OUIsMHgwOSww
eDdCLDB4N0YsMHhBMiwweDAwLDB4MDAsMHhFRCwweDlCLDB4QzgsMHg3MiwweEQ1LDB4NUYsMHhF
OCwweEEwLAotICAgIDB4OEIsMHg4QiwweEM5LDB4N0EsMHhGRiwweEZGLDB4QkYsMHg4OCwweDRB
LDB4ODMsMHhFOSwweDdBLDB4OTcsMHhCQiwweEZGLDB4RTgsCi0gICAgMHg2QiwweDhCLDB4MEEs
MHg3QiwweERGLDB4QkYsMHhBRiwweDJCLDB4NkIsMHg4QiwweDJBLDB4ODMsMHhCNiwweEVBLDB4
RDMsMHhERSwKLSAgICAweDZCLDB4OEIsMHgyQSwweDgzLDB4OUUsMHhGRSwweERCLDB4RkEsMHg2
QywweDhCLDB4QzksMHg3MiwweDVFLDB4N0EsMHhFMCwweEFBLAotICAgIDB4MEEsMHg3QiwweEE5
LDB4NkEsMHg2RCwweDdCLDB4QkMsMHhCMCwweEU5LDB4NzIsMHgyNiwweDVBLDB4NTcsMHg1QSww
eDdBLDB4NzgsCi0gICAgMHgyMywweDQxLDB4RTIsMHg0MCwweDZCLDB4RUQsMHhGNCwweEFFLDB4
MjMsMHg0OSwweEUyLDB4NDAsMHg5NiwweDJBLDB4QUUsMHhDQiwKLSAgICAweDQ0LDB4NDksMHhF
MiwweDQwLDB4RjksMHhFQywweEYyLDB4RkYsMHgyMywweDQ5LDB4MDIsMHg0MSwweDdELDB4REQs
MHg3NywweEFFLAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhCOCwweDI1LDB4QkQsMHhCOCww
eDIzLDB4NDksMHhFMiwweDQwLDB4RjIsMHhEOCwweEQ4LDB4RjgsCi0gICAgMHgyMywweDQ5LDB4
RTIsMHg0MCwweEFCLDB4MEYsMHhCQSwweEE5LDB4NDMsMHg0OSwweEUyLDB4NDAsMHhCNywweEFG
LDB4ODIsMHhGRSwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4MDAsMHg4MCwweEQwLDB4REEs
MHgwMywweDQxLDB4QzIsMHgzOCwweDYyLDB4QkYsMHhCNywweEJGLAotICAgIDB4MDMsMHg0MSww
eEMyLDB4MzgsMHg4QiwweEQ4LDB4OTIsMHhBQywweDAzLDB4NDEsMHhFMiwweDQwLDB4QjMsMHhD
MiwweDhBLDB4REQsCi0gICAgMHgwMiwweDQxLDB4QzIsMHgzOCwweDdFLDB4QkIsMHhCMiwweEEy
LDB4MDMsMHg0MSwweEUyLDB4MzgsMHgwQSwweEU1LDB4N0QsMHhFRCwKLSAgICAweDAzLDB4NDEs
MHhFMiwweDQwLDB4QkEsMHgwMCwweDA5LDB4REYsMHgyMywweDQxLDB4RTIsMHg0MCwweDNGLDB4
QUUsMHhENiwweDc1LAotICAgIDB4MDMsMHg0MSwweEEyLDB4MzgsMHgwOCwweEE4LDB4QTgsMHhC
NywweDAzLDB4NDEsMHhDMSwweDM4LDB4ODIsMHhCRSwweEUyLDB4NzgsCi0gICAgMHgwMiwweDQx
LDB4RTIsMHg0MCwweDUxLDB4QzMsMHg4RCwweEQ1LDB4MjMsMHg0MSwweEUyLDB4NDAsMHhCRCww
eEFELDB4QkQsMHg3MywKLSAgICAweDAyLDB4NDEsMHhFMSwweDQwLDB4QzAsMHhDMCwweEVBLDB4
RTIsMHgyMiwweDQxLDB4QzEsMHg0MCwweEZELDB4OUYsMHhENywweERGLAotICAgIDB4QzUsMHg1
OSwweEUyLDB4NDAsMHgzNywweDNELDB4QjUsMHhCNSwweDQ3LDB4NkEsMHhFNSwweDYxLDB4QUYs
MHhDMiwweEM5LDB4ODksCi0gICAgMHg0NywweDZBLDB4RTUsMHg2MSwweDYzLDB4N0IsMHg3Qiww
eDZFLDB4MDUsMHg2MiwweEE0LDB4NTksMHhBRiwweEZBLDB4RTIsMHg4MiwKLSAgICAweDA2LDB4
NjIsMHg2NCwweDUxLDB4RUMsMHhGQywweEZBLDB4N0EsMHg0MywweDQ5LDB4MDMsMHg0MSwweDc4
LDB4NzgsMHhGOCwweDVDLAotICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHhCRSwweEI1LDB4RTUs
MHhBQSwweDIzLDB4NDEsMHhDMiwweDMwLDB4QTIsMHhGQiwweDdBLDB4RkEsCi0gICAgMHg0NCww
eDQxLDB4RTIsMHgzMCwweEJGLDB4QUIsMHhBRiwweEE5LDB4NDQsMHg0MSwweDI0LDB4MzksMHgw
MiwweDhBLDB4MDIsMHhDMiwKLSAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4MDIsMHhDQiwweDgz
LDB4ODIsMHg0NCwweDQxLDB4MDMsMHg0MSwweERDLDB4RkUsMHhFQiwweEFBLAotICAgIDB4NDMs
MHg0MSwweEUzLDB4MzgsMHg2QiwweEYyLDB4RkEsMHhCQSwweEUyLDB4MzgsMHhBMSwweDMwLDB4
OEUsMHhCQSwweDRBLDB4NjgsCi0gICAgMHg0NCwweDQ5LDB4QzIsMHgzMCwweEFGLDB4QUQsMHhC
RCwweEJELDB4ODQsMHg0OSwweEUzLDB4MzgsMHg4MiwweEI5LDB4RUYsMHg1RCwKLSAgICAweDIz
LDB4NDEsMHhBMiwweDI4LDB4NTgsMHhGOCwweDdFLDB4RkYsMHhDMiwweDI4LDB4ODEsMHgyOCww
eEFBLDB4RUYsMHhGNywweEVBLAotICAgIDB4RTIsMHgyOCwweDgxLDB4MjAsMHgzRSwweDNGLDB4
RkYsMHhFRCwweEUyLDB4MzAsMHhBMiwweDI4LDB4N0UsMHhGOCwweEZFLDB4RkYsCi0gICAgMHhD
MiwweDI4LDB4QTIsMHgyOCwweERGLDB4RkYsMHhGRiwweDIyLDB4QTIsMHgyOCwweDYxLDB4MjAs
MHg4MCwweEYwLDB4NzAsMHg3OCwKLSAgICAweDgxLDB4MjAsMHg0MSwweDE4LDB4NzgsMHhGRSww
eEZFLDB4RkIsMHg4MSwweDIwLDB4NDEsMHgxOCwweEZCLDB4QUEsMHg4QSwweDBBLAotICAgIDB4
QTIsMHgyOCwweDYxLDB4MjAsMHhFRiwweDZGLDB4QUEsMHgyQiwweEMyLDB4MjgsMHg2MSwweDIw
LDB4QUQsMHhBQiwweDM3LDB4QUUsCi0gICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweDI5LDB4ODUs
MHhBQSwweEJBLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhGRiwweENBLDB4Q0UsMHhBQSwKLSAgICAw
eDAzLDB4MjksMHhBMiwweDI4LDB4RjcsMHg1RiwweEZELDB4RkUsMHhFMiwweDMwLDB4QTIsMHgy
OCwweEI3LDB4QjUsMHhERCwweDVBLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHg2QSwweDYy
LDB4NzIsMHhGRiwweEMyLDB4MzAsMHhBMiwweDI4LDB4RTMsMHg2NiwweDc1LDB4NjUsCi0gICAg
MHhBMiwweDI4LDB4ODEsMHgyMCwweDAyLDB4QjgsMHg1NiwweDdDLDB4QzIsMHgyOCwweDgxLDB4
MjAsMHhBMiwweEIzLDB4RjUsMHhGRCwKLSAgICAweEMyLDB4MjgsMHhBMiwweDI4LDB4MzMsMHgw
MSwweDI4LDB4MjMsMHhFMywweDMwLDB4ODEsMHgyMCwweENBLDB4RUEsMHhGRiwweDdFLAotICAg
IDB4QTIsMHgyOCwweDgxLDB4MjAsMHg1NywweDY5LDB4N0QsMHhCRiwweEEyLDB4MjgsMHg2MSww
eDIwLDB4RkIsMHhGQSwweEFBLDB4ODAsCi0gICAgMHhBMSwweDI4LDB4NjEsMHgyMCwweDA5LDB4
M0YsMHg4QiwweDBFLDB4RTIsMHgzMCwweDgxLDB4MjgsMHgwRiwweDlGLDB4QUYsMHhCQiwKLSAg
ICAweDAzLDB4MzksMHhBMiwweDMwLDB4MjAsMHgwQSwweEJGLDB4RkQsMHgwMywweDM5LDB4QzIs
MHgzMCwweDBDLDB4MDIsMHgwQiwweEJGLAotICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHhGQSww
eEZFLDB4NkIsMHhGRCwweDQ0LDB4NDEsMHgwMywweDM5LDB4NUUsMHg3NywweERELDB4M0IsCi0g
ICAgMHg0NCwweDQxLDB4RTIsMHgzOCwweDZGLDB4N0IsMHg2QiwweDYzLDB4RTMsMHgzOCwweEEy
LDB4MzAsMHhERiwweDVGLDB4N0IsMHg3OCwKLSAgICAweEEyLDB4MjgsMHg2MSwweDI4LDB4MDAs
MHgwMCwweDJBLDB4M0UsMHhFMywweDMwLDB4QTIsMHgzMCwweERELDB4NUYsMHhGRSwweDJELAot
ICAgIDB4RTIsMHgzMCwweDgxLDB4MjgsMHgyNywweEFGLDB4QkYsMHhFRSwweDAzLDB4MzEsMHhD
MiwweDI4LDB4RTIsMHhFRCwweERELDB4N0QsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDU0
LDB4QUYsMHgwRiwweDhGLDB4QzMsMHgyOCwweDgxLDB4MjgsMHhGNywweEZFLDB4RkMsMHhGMCwK
LSAgICAweEEyLDB4MzAsMHg2MSwweDIwLDB4RjcsMHhGQiwweEJFLDB4MkEsMHg4MSwweDMwLDB4
QTIsMHgyOCwweEQ3LDB4NUMsMHg1NiwweDVGLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHhC
RCwweDJGLDB4MEIsMHgyQiwweEUzLDB4MzAsMHhDMiwweDI4LDB4N0MsMHhGMCwweEZBLDB4QkEs
Ci0gICAgMHhFMywweDMwLDB4ODEsMHgyMCwweEZGLDB4RjYsMHhEQywweDdFLDB4QTIsMHgyOCww
eDgxLDB4MjAsMHg3OCwweDVDLDB4QTAsMHgyMywKLSAgICAweEMyLDB4MjgsMHg2MSwweDIwLDB4
RkYsMHhGRCwweEFBLDB4MkEsMHhDMiwweDMwLDB4ODIsMHgyOCwweDBELDB4MEQsMHgwRiwweDAw
LAotICAgIDB4QzIsMHgzMCwweDgyLDB4MjgsMHhFMCwweEU4LDB4RkMsMHhGOCwweEUzLDB4MzAs
MHhBMiwweDI4LDB4RDUsMHhCNSwweDNELDB4RUYsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCww
eEJGLDB4OUYsMHgyRiwweEJGLDB4MDMsMHgzMSwweEMzLDB4MzAsMHhBQSwweEVBLDB4QkIsMHhB
RiwKLSAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4OUYsMHhGNSwweDM3LDB4QjcsMHgwMywweDMx
LDB4QTIsMHgyOCwweDIyLDB4RjIsMHg3RiwweDU1LAotICAgIDB4MDMsMHgzMSwweEEyLDB4Mjgs
MHg4QiwweEEyLDB4QkIsMHg5RCwweEUyLDB4MzAsMHhBMiwweDI4LDB4NUUsMHhFMCwweEUwLDB4
QUEsCi0gICAgMHhFMywweDM4LDB4QzIsMHgyOCwweDU3LDB4N0QsMHhERCwweDdELDB4MDMsMHgz
MSwweEEyLDB4MjgsMHhBNywweERELDB4NUYsMHgyQiwKLSAgICAweDAzLDB4MzksMHhDMiwweDMw
LDB4MzUsMHhBRiwweEJGLDB4M0YsMHg0NCwweDQxLDB4RTIsMHgzMCwweEFCLDB4QTIsMHg5QSww
eEY3LAotICAgIDB4MjMsMHgzOSwweEUyLDB4MzAsMHhFMCwweEUyLDB4RTAsMHg2MiwweDQ0LDB4
NDEsMHhDMSwweDMwLDB4QUEsMHhBRiwweDJCLDB4ODksCi0gICAgMHgyNCwweDQxLDB4RTIsMHgz
OCwweDM2LDB4MjYsMHhCQiwweDdBLDB4NjQsMHg0OSwweEUzLDB4MzgsMHhBQiwweEJGLDB4RUQs
MHhGRiwKLSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4OTUsMHgzNywweDJELDB4M0QsMHg0NCww
eDQ5LDB4MDMsMHg0MSwweDA4LDB4MzgsMHgyNywweDJBLAotICAgIDB4QzYsMHg1OSwweDI0LDB4
NDEsMHhBRCwweEVELDB4RUIsMHgyQiwweDA3LDB4NjIsMHg2NCwweDQ5LDB4QjcsMHgzRCwweEZG
LDB4MEIsCi0gICAgMHhDQSwweDdBLDB4MjcsMHg2QSwweEE1LDB4MkYsMHg4RCwweDBCLDB4MkIs
MHg4QiwweENBLDB4N0EsMHgzRCwweDI1LDB4RkQsMHhFRiwKLSAgICAweEFDLDB4OUIsMHgwQSww
eDgzLDB4MkEsMHhCRCwweEQ1LDB4NTUsMHg4RiwweEI0LDB4MkEsMHg4QiwweDBBLDB4QkYsMHhG
RiwweDU1LAotICAgIDB4RjAsMHhCQywweDhCLDB4OTMsMHgwMiwweDJBLDB4QkQsMHg1NSwweEYw
LDB4QzQsMHgwRCwweEFDLDB4MDAsMHgwMCwweDBCLDB4QkQsCi0gICAgMHgxMCwweEM1LDB4QUYs
MHhCQywweEFBLDB4MjgsMHgyQSwweDJELDB4MTAsMHhDNSwweEYwLDB4QkMsMHhENiwweDJBLDB4
ODYsMHhBRiwKLSAgICAweDEwLDB4QzUsMHhDRiwweEJDLDB4OUEsMHg2MiwweEY4LDB4RkUsMHgx
MCwweEM1LDB4QUYsMHhCNCwweEFBLDB4OEUsMHg3RSwweEZCLAotICAgIDB4RjAsMHhCQywweEFG
LDB4QjQsMHgyQSwweEIyLDB4QjMsMHhBRiwweEYwLDB4QkMsMHhEMCwweEJDLDB4MDUsMHgyQSww
eDJFLDB4QkEsCi0gICAgMHgxMSwweEM1LDB4QUYsMHhCNCwweEFFLDB4QTYsMHhBQSwweEVCLDB4
RjAsMHhCQywweDRELDB4QTQsMHg1OCwweDc4LDB4NDgsMHhFMCwKLSAgICAweDZELDB4QUMsMHgw
RCwweEE0LDB4REYsMHg3RiwweDdBLDB4RjgsMHgyRCwweEE0LDB4Q0MsMHg5QiwweDdDLDB4QUEs
MHhBQSwweDBBLAotICAgIDB4MkQsMHhBNCwweEVDLDB4OUIsMHhGNSwweEJELDB4OTcsMHgyRSww
eDJELDB4QTQsMHgwRCwweDlDLDB4Q0YsMHg3RiwweEZFLDB4QjMsCi0gICAgMHg0RSwweEE0LDB4
Q0MsMHg5MywweDY3LDB4QUEsMHhBMiwweDI4LDB4MEQsMHg5QywweDJBLDB4ODMsMHg3RiwweEU4
LDB4MDAsMHgwMCwKLSAgICAweDBELDB4OUMsMHgyQSwweDgzLDB4NzUsMHhGRiwweEVBLDB4ODAs
MHhDQywweDkzLDB4MkEsMHg4MywweDVGLDB4RkYsMHhGQSwweDAwLAotICAgIDB4MEQsMHg5Qyww
eDJBLDB4ODMsMHg3NywweERGLDB4RUYsMHgyQSwweEVDLDB4OUIsMHgyQSwweDgzLDB4NUQsMHg3
RiwweEZFLDB4MjAsCi0gICAgMHg4QSwweDhCLDB4RTksMHg3QSwweDVGLDB4RUIsMHg1OCwweEEw
LDB4NEEsMHg4MywweDY4LDB4NkEsMHg1RiwweDVCLDB4RUEsMHhBOCwKLSAgICAweDIzLDB4NDks
MHhDMiwweDM4LDB4QUIsMHhBNiwweEE0LDB4MkEsMHg0NCwweDQ5LDB4RTIsMHgzOCwweEFELDB4
QjcsMHhFQSwweEFBLAotICAgIDB4MjMsMHg0OSwweEUzLDB4NDAsMHgzOCwweEFFLDB4RUUsMHhD
RSwweDIzLDB4NDksMHgwMywweDQxLDB4NjAsMHhDRSwweDJDLDB4NUEsCi0gICAgMHgyMywweDQ5
LDB4RTIsMHg0MCwweEFBLDB4MEEsMHhFMCwweEZBLDB4MjMsMHg1MSwweDAzLDB4NDEsMHhGQSww
eDdGLDB4REQsMHg1NSwKLSAgICAweDQzLDB4NDksMHgwMiwweDQxLDB4RkIsMHgzQiwweEEzLDB4
QkIsMHgyMywweDQ5LDB4QzIsMHgzOCwweEVBLDB4QkEsMHg1OCwweEU4LAotICAgIDB4MjMsMHg0
MSwweEExLDB4MzgsMHhFQSwweEFBLDB4RkEsMHg2OCwweDAzLDB4NDEsMHhBMiwweDM4LDB4RkYs
MHhCRSwweEFCLDB4ODksCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEJDLDB4QjcsMHhENCww
eDJBLDB4MjMsMHg0MSwweEUyLDB4NDAsMHhENywweDVFLDB4REMsMHhFNywKLSAgICAweDAzLDB4
NDEsMHhDMiwweDM4LDB4N0EsMHhGRiwweEI3LDB4MkYsMHgwMywweDQxLDB4RTIsMHg0MCwweDA1
LDB4MTUsMHhBOSwweDVDLAotICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHgwMywweENBLDB4RDUs
MHg1RCwweDAzLDB4NDEsMHhDMiwweDM4LDB4RkUsMHhBNiwweEQ2LDB4RDYsCi0gICAgMHgwMiww
eDQxLDB4QzIsMHgzOCwweDNELDB4M0IsMHhBRiwweEJGLDB4MDMsMHg0MSwweEUyLDB4MzgsMHg3
MCwweDcwLDB4NUMsMHg1RCwKLSAgICAweEUyLDB4NDAsMHgwMiwweDM5LDB4RTAsMHgzOCwweEFB
LDB4QjIsMHgwMiwweDQxLDB4RTIsMHgzOCwweEY4LDB4QUIsMHhCRCwweERELAotICAgIDB4MDIs
MHg0MSwweEMyLDB4NDAsMHhBMiwweDIyLDB4MDAsMHhBQywweDAzLDB4NDEsMHhDMiwweDQwLDB4
MkIsMHgwNywweDBFLDB4QTgsCi0gICAgMHg4NCwweDUxLDB4RTIsMHg0MCwweDM1LDB4M0YsMHg5
RCwweEY1LDB4NjcsMHg3MiwweEE0LDB4NTksMHgyQiwweDBCLDB4MDksMHg4MSwKLSAgICAweDY3
LDB4NzIsMHgwNSwweDYyLDB4NUIsMHg3MSwweEU4LDB4NkEsMHgwNSwweDYyLDB4QzUsMHg1OSww
eDJCLDB4MDgsMHg4MCwweEU4LAotICAgIDB4MDUsMHg2MiwweDYzLDB4NDksMHg2MCwweDdBLDB4
RkEsMHg2QSwweDY0LDB4NDksMHhFMiwweDM4LDB4RjAsMHhGOCwweEY4LDB4NUEsCi0gICAgMHg0
NCwweDQxLDB4RTIsMHgzOCwweEZFLDB4REYsMHhENywweDNELDB4NDQsMHg0MSwweDAzLDB4Mzks
MHg3NSwweENFLDB4QTIsMHg5OCwKLSAgICAweDIzLDB4MzksMHhFMiwweDM4LDB4OEIsMHhBMiww
eDAzLDB4MjAsMHgyMywweDM5LDB4QzMsMHgzMCwweDJBLDB4NkUsMHhGRSwweEYyLAotICAgIDB4
NDQsMHg0MSwweEUzLDB4MzAsMHgwQSwweDJCLDB4QkQsMHhFNywweDQ0LDB4NDEsMHhFMiwweDM4
LDB4QUEsMHgyMCwweDhGLDB4QUQsCi0gICAgMHg0NCwweDQxLDB4MjMsMHgzOSwweDU3LDB4MTgs
MHhEOCwweDcxLDB4MjMsMHgzOSwweEMyLDB4MzAsMHg1RSwweEZDLDB4RjgsMHhBOCwKLSAgICAw
eDAzLDB4MzksMHhDMiwweDMwLDB4RTksMHg3QSwweEJBLDB4QTIsMHgwMywweDM5LDB4QTEsMHgy
OCwweEUyLDB4RUEsMHhGMywweDdCLAotICAgIDB4QzIsMHgzMCwweEExLDB4MjgsMHhBMCwweEU4
LDB4QkMsMHhBNSwweEUyLDB4MjgsMHg4MSwweDI4LDB4RUEsMHhBMiwweEE4LDB4NkEsCi0gICAg
MHhFMiwweDMwLDB4QTIsMHgyMCwweEVELDB4RUYsMHhCRSwweDdCLDB4RTMsMHgyOCwweDgxLDB4
MjAsMHg4QSwweEEyLDB4RUEsMHhERiwKLSAgICAweEUzLDB4MjgsMHg4MiwweDIwLDB4RTIsMHg3
QSwweDc3LDB4RkYsMHhDMiwweDIwLDB4NjEsMHgyMCwweDVFLDB4NTcsMHg3RiwweEZGLAotICAg
IDB4QTIsMHgyOCwweDYxLDB4MjAsMHg3RCwweEYzLDB4OEIsMHgwMywweEUzLDB4MzAsMHg4MSww
eDIwLDB4RDUsMHhGRCwweEE5LDB4MEEsCi0gICAgMHhDMywweDI4LDB4ODEsMHgyMCwweEZELDB4
RkUsMHhGQywweEE4LDB4MDIsMHgyOSwweEEyLDB4MjgsMHg3NSwweDdELDB4RkYsMHhERSwKLSAg
ICAweEMyLDB4MjgsMHhBMiwweDI4LDB4Q0EsMHg4MCwweDhFLDB4QkEsMHgwMywweDMxLDB4QzIs
MHgyOCwweEZELDB4RUQsMHhENSwweDk1LAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhGNyww
eDdGLDB4N0IsMHhFQSwweDAzLDB4MjksMHhBMiwweDI4LDB4REYsMHg1RiwweEZFLDB4RkYsCi0g
ICAgMHgwMywweDMxLDB4QTIsMHgyOCwweERELDB4NUQsMHg1QiwweEZCLDB4RTIsMHgyOCwweEEy
LDB4MjgsMHhFRCwweDdGLDB4QkUsMHhFQSwKLSAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4OTcs
MHhGQywweDgyLDB4RTAsMHg4MSwweDI4LDB4QzIsMHgyMCwweEE3LDB4QkYsMHhCQSwweEVBLAot
ICAgIDB4RTMsMHgzMCwweDgxLDB4MjAsMHhCRiwweDJGLDB4RkQsMHhCNywweEMyLDB4MjgsMHg4
MSwweDIwLDB4NTQsMHg1RSwweDU4LDB4RkUsCi0gICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweEZG
LDB4NUYsMHhGRSwweDM4LDB4QzIsMHgyOCwweDgxLDB4MjAsMHhFQiwweDcyLDB4N0EsMHhGOCwK
LSAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4REYsMHhBQiwweDgzLDB4RUIsMHhFMiwweDMwLDB4
QTIsMHgyOCwweDUyLDB4NkIsMHg3QiwweDc1LAotICAgIDB4QzIsMHgzMCwweDgxLDB4MjAsMHhB
QSwweEZFLDB4NzUsMHg1NywweEMyLDB4MzAsMHg4MSwweDIwLDB4MDgsMHgyRiwweEFELDB4RUQs
Ci0gICAgMHgwMywweDM5LDB4ODEsMHgyOCwweDAwLDB4QUEsMHhBRiwweEY1LDB4MjMsMHg0MSww
eEMyLDB4MzAsMHgyMCwweDA4LDB4MkQsMHg5RiwKLSAgICAweDY1LDB4NDksMHgyNCwweDQxLDB4
NDEsMHhBMiwweEJCLDB4RUIsMHg0NCwweDQxLDB4QTIsMHgyOCwweDdBLDB4RjgsMHhDQSwweDc4
LAotICAgIDB4QzIsMHgzMCwweDYxLDB4MjAsMHhENiwweEZFLDB4QjgsMHhBQSwweEEyLDB4MzAs
MHg4MiwweDIwLDB4MDgsMHhBMCwweDIwLDB4QTAsCi0gICAgMHhDMywweDMwLDB4ODIsMHgyOCww
eEVBLDB4RUIsMHhFQiwweEZELDB4QzIsMHgzMCwweDgxLDB4MjgsMHhCMiwweDlGLDB4N0YsMHhB
RiwKLSAgICAweEMyLDB4MzAsMHg4MiwweDI4LDB4OEEsMHhBRSwweEJELDB4RkEsMHgwMywweDM5
LDB4QTIsMHgyOCwweEQ5LDB4QUYsMHhBRiwweEJELAotICAgIDB4MDMsMHgzOSwweEEyLDB4Mjgs
MHhENSwweEJGLDB4MkUsMHgwQSwweDI0LDB4MzksMHhBMiwweDMwLDB4RDUsMHhGQiwweEFBLDB4
QUEsCi0gICAgMHgwMywweDM5LDB4QTIsMHgzMCwweEY3LDB4RkYsMHhGRSwweDIyLDB4RTIsMHgz
MCwweEEyLDB4MjgsMHhGRiwweERGLDB4NTMsMHhDMCwKLSAgICAweEMyLDB4MzAsMHg4MiwweDI4
LDB4QkMsMHg3RSwweEJFLDB4QTIsMHhFMywweDI4LDB4ODEsMHgyOCwweEJELDB4RjcsMHg1Nyww
eEZGLAotICAgIDB4MDMsMHgzMSwweDgyLDB4MjgsMHgzRiwweEFGLDB4QkQsMHhCRCwweDAzLDB4
MzksMHhDMiwweDI4LDB4NjgsMHhFMCwweEMyLDB4ODMsCi0gICAgMHhFMywweDMwLDB4QTIsMHgy
OCwweDU4LDB4RUEsMHhDMCwweEIwLDB4RTIsMHgzMCwweEEyLDB4MjgsMHgyNywweEY3LDB4REYs
MHg3RiwKLSAgICAweEMyLDB4MzAsMHhBMiwweDI4LDB4ODAsMHhCQSwweDU5LDB4QTMsMHhFMyww
eDMwLDB4ODEsMHgyOCwweDBBLDB4Q0EsMHhEQSwweERGLAotICAgIDB4QzIsMHgyOCwweDgxLDB4
MjgsMHg4OCwweDJBLDB4MEEsMHhBRCwweEMyLDB4MjgsMHhBMiwweDI4LDB4NzcsMHhCOSwweEUy
LDB4MjIsCi0gICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweDNFLDB4RUEsMHhGRSwweEYyLDB4QzMs
MHgzMCwweDgxLDB4MjAsMHgwMiwweEFCLDB4RUUsMHg2RiwKLSAgICAweEUzLDB4MzAsMHg4MSww
eDIwLDB4QTIsMHhCQiwweEJELDB4QTUsMHhFMywweDMwLDB4QzIsMHgyOCwweEE3LDB4RjcsMHg2
NSwweDc1LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MjgsMHgzQiwweDNELDB4NzUsMHhBRCwweDAy
LDB4MzksMHhBMiwweDI4LDB4MjgsMHhGRiwweEJGLDB4RkYsCi0gICAgMHgwMywweDM5LDB4QTEs
MHgyOCwweEEwLDB4OEIsMHhBOSwweEFBLDB4NDQsMHg0MSwweEMxLDB4MzAsMHgyOSwweEZCLDB4
N0QsMHhGNSwKLSAgICAweDQ0LDB4NDEsMHhFMiwweDM4LDB4REEsMHg1QiwweEQ3LDB4M0QsMHg4
NCwweDQ5LDB4MDMsMHgzOSwweDVELDB4RkYsMHhDMSwweENBLAotICAgIDB4NDQsMHg0OSwweDAz
LDB4NDEsMHhBRCwweEE1LDB4MjUsMHhGRiwweDg1LDB4NTEsMHgyMywweDQxLDB4RkQsMHhCRiww
eDJGLDB4MEIsCi0gICAgMHhDNiwweDU5LDB4NjQsMHg0OSwweEE1LDB4QjUsMHgzRiwweDBGLDB4
MjcsMHg2QSwweEM1LDB4NTksMHhBRCwweDM1LDB4RjUsMHgyQiwKLSAgICAweEVBLDB4ODIsMHg0
OCwweDZBLDB4MkQsMHgyRCwweDJELDB4MDksMHgyQSwweDgzLDB4RUEsMHg3QSwweEU5LDB4N0Ys
MHg3NiwweDZBLAotICAgIDB4MkIsMHg4MywweEM5LDB4N0EsMHhBRSwweEFGLDB4QjUsMHhCRiww
eDJBLDB4OEIsMHhDOSwweDdBLDB4MkYsMHhFNiwweEE2LDB4QUUsCi0gICAgMHg4QywweDlCLDB4
RTksMHg3QSwweDJCLDB4QkYsMHhENywweEZGLDB4RUQsMHhBMywweDJBLDB4ODMsMHgwQiwweEI3
LDB4RkQsMHg1NSwKLSAgICAweEFGLDB4QkMsMHgyQiwweDgzLDB4MDIsMHhBRiwweEZELDB4RDUs
MHhGMCwweEJDLDB4QUMsMHg5QiwweDAwLDB4MDIsMHhBRCwweDU1LAotICAgIDB4RjAsMHhCQyww
eDRELDB4QUMsMHgwMCwweDAwLDB4MEEsMHhFNSwweEYwLDB4QkMsMHhBRiwweEI0LDB4NzIsMHhB
MiwweDBBLDB4MkYsCi0gICAgMHgxMSwweEM1LDB4RDAsMHhCQywweEZELDB4N0IsMHhDQSwweEVG
LDB4MTAsMHhDNSwweEQwLDB4QkMsMHg3RSwweDdGLDB4NkIsMHhFQSwKLSAgICAweDEwLDB4QzUs
MHhEMCwweEJDLDB4RTUsMHhGRiwweEFGLDB4NkIsMHhGMCwweEJDLDB4NkUsMHhBQywweEU4LDB4
QTgsMHhFMCwweDYwLAotICAgIDB4OEYsMHhBQywweDBELDB4QTQsMHg3NCwweERDLDB4REEsMHhG
QSwweDRFLDB4QUMsMHgyRCwweEE0LDB4NUUsMHg1RSwweDY3LDB4MjQsCi0gICAgMHgyRCwweEE0
LDB4RUMsMHg5QiwweDE4LDB4MkUsMHgwMCwweDAwLDB4MkQsMHhBNCwweDBELDB4QTQsMHg1MCww
eDA4LDB4OUQsMHgwQSwKLSAgICAweDRFLDB4QUMsMHgwRCwweDlDLDB4RkQsMHg5NiwweEFFLDB4
REEsMHg0RSwweEE0LDB4MEQsMHhBNCwweEVBLDB4QUIsMHhBNywweDlGLAotICAgIDB4NkUsMHhB
NCwweDJELDB4QTQsMHg3RCwweEU5LDB4N0QsMHhCNSwweDRFLDB4QTQsMHhFQywweDlCLDB4OUUs
MHgyMiwweDgwLDB4MEEsCi0gICAgMHg2RSwweEFDLDB4MEQsMHg5QywweEQ3LDB4QjgsMHgyQSww
eDAyLDB4NkYsMHhBQywweDBELDB4OUMsMHg3RiwweENGLDB4QUEsMHhFRSwKLSAgICAweDRFLDB4
QTQsMHhBQiwweDhCLDB4NTcsMHhBOCwweEMwLDB4MDIsMHg0RSwweEE0LDB4MkEsMHg4MywweDU3
LDB4RkUsMHhBQSwweEEwLAotICAgIDB4NDQsMHg0OSwweEUyLDB4NDAsMHhBNSwweDZGLDB4NUEs
MHhGQywweDIzLDB4NDksMHhDMiwweDM4LDB4ODgsMHhFQSwweEVBLDB4N0EsCi0gICAgMHgyMyww
eDQ5LDB4QzIsMHgzOCwweEUyLDB4RkEsMHhGQSwweEFELDB4MjMsMHg0OSwweEUzLDB4NDAsMHg4
QSwweEVBLDB4RkEsMHhCRiwKLSAgICAweDIzLDB4NDksMHhFMywweDQwLDB4OUEsMHhCQiwweEU5
LDB4RjAsMHgyMywweDQ5LDB4RTMsMHg0MCwweDk2LDB4MjUsMHhCRiwweDlCLAotICAgIDB4MjMs
MHg0OSwweEUyLDB4NDAsMHg4MiwweEEwLDB4MkUsMHg3QSwweDIzLDB4NDEsMHhFMiwweDQwLDB4
QUEsMHgzNiwweEQ3LDB4RjUsCi0gICAgMHgwMywweDQxLDB4QzEsMHgzOCwweEY4LDB4RTgsMHhB
OCwweDNFLDB4MDIsMHg0MSwweEExLDB4MzgsMHhEQSwweEY4LDB4QkEsMHhFRSwKLSAgICAweDAz
LDB4NDEsMHhBMiwweDM4LDB4MDMsMHhBQiwweEVGLDB4RkEsMHgwMywweDQxLDB4QzIsMHgzOCww
eDg4LDB4OUUsMHg1NywweDVGLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHgyRiwweEZBLDB4
QjksMHhGOSwweDAyLDB4NDEsMHhDMiwweDM4LDB4RUEsMHhFQiwweDZBLDB4RUYsCi0gICAgMHgy
MywweDQ5LDB4QzIsMHgzOCwweERBLDB4RkUsMHhEQywweDdBLDB4RTIsMHg0MCwweEMyLDB4Mzgs
MHg5OCwweDc4LDB4NjgsMHhBOCwKLSAgICAweDAyLDB4NDEsMHhDMiwweDM4LDB4RkYsMHhGRSww
eEIzLDB4MDMsMHgwMiwweDQxLDB4QzIsMHgzOCwweEZFLDB4QjcsMHhCQSwweEI4LAotICAgIDB4
MDMsMHg0MSwweEUyLDB4NDAsMHg5NSwweEY1LDB4Q0QsMHgwNiwweDAzLDB4NDEsMHhFMiwweDQw
LDB4RkYsMHhGOCwweDcwLDB4NUMsCi0gICAgMHgwMiwweDQxLDB4QzIsMHgzOCwweDk3LDB4RkUs
MHhBRSwweEFBLDB4MDMsMHg0MSwweEExLDB4MzgsMHgxOCwweDNBLDB4MEEsMHg4MiwKLSAgICAw
eDIzLDB4NDksMHhBMCwweDM4LDB4MkUsMHhBOCwweDJFLDB4MkQsMHg2NiwweDcyLDB4ODQsMHg1
MSwweDBCLDB4MEIsMHgwOSwweEE5LAotICAgIDB4NDYsMHg2QSwweEU1LDB4NjEsMHhBQSwweDlD
LDB4ODAsMHg4QSwweDI3LDB4NkEsMHhDNSwweDU5LDB4NkYsMHhCNywweEFGLDB4QUMsCi0gICAg
MHgwNiwweDYyLDB4NjMsMHg0OSwweEZFLDB4NTgsMHg3OCwweDc4LDB4NDQsMHg0OSwweEUyLDB4
MzgsMHg3RSwweDVFLDB4NUUsMHg3QywKLSAgICAweDQ0LDB4NDEsMHhFMiwweDM4LDB4QkQsMHhE
NSwweEI1LDB4Q0QsMHg0MywweDQxLDB4MDMsMHgzOSwweDc0LDB4NUYsMHg1RiwweDVGLAotICAg
IDB4MjMsMHgzOSwweEUzLDB4MzgsMHgyQSwweDU3LDB4NUEsMHhBQiwweDI0LDB4MzksMHgwMyww
eDM5LDB4ODEsMHhEMywweDdGLDB4RDcsCi0gICAgMHgyNCwweDQxLDB4RTMsMHgzMCwweEJBLDB4
QUEsMHhFRCwweDZFLDB4MDMsMHgzOSwweEUzLDB4MzAsMHgyRCwweEVGLDB4N0UsMHhBMiwKLSAg
ICAweDIzLDB4MzksMHhFMywweDM4LDB4MDAsMHgyQSwweEJELDB4OUYsMHg0MywweDQxLDB4MDMs
MHgzOSwweDRBLDB4NjksMHhGRiwweDdGLAotICAgIDB4NDQsMHg0MSwweEUyLDB4MzAsMHhGQiww
eDdBLDB4RUYsMHhFMywweDIzLDB4MzksMHhDMSwweDMwLDB4N0YsMHhGRCwweEZCLDB4MjgsCi0g
ICAgMHgwMywweDM5LDB4QTEsMHgyOCwweDVGLDB4NTYsMHhERSwweEE4LDB4QzIsMHgyOCwweDgx
LDB4MjAsMHg3QSwweEJBLDB4QTMsMHgwMiwKLSAgICAweEUzLDB4MzAsMHg4MSwweDIwLDB4NkQs
MHhCRiwweEZDLDB4RUEsMHhFMywweDMwLDB4ODEsMHgyMCwweDVGLDB4RkYsMHg4QSwweDJBLAot
ICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHhENSwweEY3LDB4QkUsMHhBOCwweEUyLDB4MzAsMHg4
MiwweDIwLDB4NUYsMHhBRSwweDJFLDB4MjIsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEU1
LDB4RkYsMHgyRiwweDI4LDB4RTMsMHgzMCwweEMyLDB4MjgsMHg2QiwweDY5LDB4NkYsMHg1NSwK
LSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RUIsMHhBOSwweEVCLDB4RkEsMHhFMywweDMwLDB4
QTIsMHgyOCwweEFBLDB4QTksMHhBQiwweEI4LAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhG
NywweEY3LDB4RjUsMHhCNSwweEUzLDB4MzAsMHhBMiwweDI4LDB4RjIsMHhCQSwweEZFLDB4QTgs
Ci0gICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEVBLDB4NkIsMHg3RiwweEZCLDB4RTMsMHgzMCww
eEMyLDB4MjgsMHg5QSwweDI3LDB4MjMsMHg4QiwKLSAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4
QUEsMHhGQSwweEY4LDB4REUsMHhFMywweDI4LDB4QTIsMHgyOCwweEJBLDB4QkIsMHhBRSwweEFF
LAotICAgIDB4RTIsMHgyOCwweEEyLDB4MjgsMHg1RSwweEZBLDB4QUEsMHgwRSwweEUzLDB4Mjgs
MHhBMiwweDI4LDB4RDUsMHhERSwweEQ2LDB4RUUsCi0gICAgMHhBMiwweDI4LDB4NjEsMHgyMCww
eDhBLDB4RTgsMHhEOCwweDk4LDB4QzIsMHgyOCwweDgxLDB4MjAsMHgyQiwweEI5LDB4RUQsMHg1
RCwKLSAgICAweEUyLDB4MjgsMHhBMiwweDIwLDB4REUsMHhGMiwweDVELDB4NTUsMHhDMiwweDI4
LDB4ODIsMHgyMCwweEMyLDB4NjIsMHhGQSwweDY4LAotICAgIDB4QTIsMHgyMCwweDYxLDB4MjAs
MHgwMCwweDgyLDB4QjgsMHgzQSwweEMyLDB4MjgsMHg4MSwweDIwLDB4RUEsMHhGRiwweEQ3LDB4
NTcsCi0gICAgMHhBMiwweDI4LDB4NjEsMHgyMCwweEZBLDB4RkEsMHg3QSwweEYyLDB4QTIsMHgy
OCwweDgxLDB4MjAsMHgzRiwweDk3LDB4OTUsMHgzRiwKLSAgICAweEMyLDB4MzAsMHg2MSwweDIw
LDB4MkYsMHhGQSwweDZFLDB4QkEsMHhDMiwweDMwLDB4ODEsMHgyOCwweDI4LDB4RjcsMHhCNSww
eEVELAotICAgIDB4NDQsMHg0MSwweEMyLDB4MzAsMHgwQiwweEFELDB4QkQsMHhERCwweDI0LDB4
MzksMHhDMiwweDMwLDB4RDgsMHhCQSwweEFBLDB4RkUsCi0gICAgMHhFMywweDMwLDB4QTIsMHgz
MCwweDk3LDB4QTgsMHhBMCwweEEyLDB4RTMsMHgzOCwweEEyLDB4MzAsMHg1RSwweDVGLDB4REUs
MHhCOCwKLSAgICAweEUyLDB4MzAsMHg4MSwweDI4LDB4N0YsMHhFRSwweEFBLDB4QTIsMHhFMyww
eDMwLDB4QTIsMHgyOCwweDk1LDB4MzcsMHgyRSwweEFCLAotICAgIDB4MDMsMHgzOSwweEEyLDB4
MjgsMHhERiwweEI2LDB4RUEsMHg4QSwweEUyLDB4MzAsMHhBMiwweDMwLDB4MDEsMHgwQSwweDJB
LDB4OUEsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEZBLDB4QkYsMHhBRSwweDBGLDB4NDMs
MHg0MSwweEUzLDB4MzgsMHhGQiwweDdELDB4NzgsMHhFQSwKLSAgICAweDQ0LDB4NDEsMHgwMyww
eDM5LDB4RjUsMHgyRCwweEY5LDB4QTIsMHg2NCwweDQxLDB4RTMsMHgzOCwweDU3LDB4QTgsMHg4
QSwweDJBLAotICAgIDB4NDQsMHg0MSwweEMyLDB4MzAsMHg1RCwweDVGLDB4RUMsMHhBQSwweDI0
LDB4NDEsMHhBMiwweDI4LDB4RDUsMHhGNywweEFBLDB4RTgsCi0gICAgMHhFMywweDMwLDB4QTIs
MHgyOCwweDgzLDB4MDgsMHgyRSwweEE3LDB4RTMsMHgzMCwweEMyLDB4MjgsMHgwMCwweEU4LDB4
QjgsMHg3RSwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QTAsMHhCQywweDNFLDB4RkEsMHhD
MiwweDMwLDB4QTIsMHgyOCwweDVFLDB4NUUsMHg3QywweEZFLAotICAgIDB4RTIsMHgyOCwweDgy
LDB4MjgsMHhDNywweEZGLDB4RkIsMHhCRSwweEEyLDB4MjgsMHg4MSwweDIwLDB4QTgsMHg2RSww
eDM2LDB4MzIsCi0gICAgMHhDMiwweDI4LDB4NjEsMHgyMCwweDJGLDB4QkYsMHhENywweEJCLDB4
QzIsMHgyOCwweDgxLDB4MjgsMHgwMiwweDhBLDB4RjIsMHhFOCwKLSAgICAweEMyLDB4MjgsMHhB
MiwweDI4LDB4M0UsMHgyNywweEI5LDB4MEQsMHhDMiwweDMwLDB4ODIsMHgyOCwweDZFLDB4QTgs
MHhGQSwweEMwLAotICAgIDB4QzIsMHgyOCwweDgxLDB4MjgsMHhCNSwweDk3LDB4OUYsMHhCRSww
eEUyLDB4MzAsMHhBMiwweDI4LDB4QkYsMHg5RiwweDlGLDB4OTUsCi0gICAgMHgwMywweDMxLDB4
QzIsMHgyOCwweEZCLDB4RkYsMHhFRiwweDJCLDB4MDMsMHgzOSwweEMyLDB4MzAsMHg1RiwweDVB
LDB4RjgsMHhDMCwKLSAgICAweEUyLDB4MzAsMHhBMiwweDMwLDB4ODgsMHhCQiwweEJCLDB4QTIs
MHgwMywweDM5LDB4QzEsMHgzMCwweEJELDB4QkYsMHhBQiwweEEzLAotICAgIDB4MjMsMHg0MSww
eEUyLDB4MzgsMHhBRCwweEU3LDB4RjcsMHhCRiwweDY0LDB4NDksMHgwMywweDM5LDB4ODAsMHhF
MywweEZCLDB4RUQsCi0gICAgMHg2NCwweDQ5LDB4MDIsMHgzOSwweDdFLDB4RkEsMHhBOSwweDhC
LDB4QzUsMHg1MSwweDQzLDB4NDEsMHhCRCwweDBGLDB4QUYsMHhGRiwKLSAgICAweEU2LDB4NTks
MHg2NCwweDUxLDB4QTUsMHhCRSwweEVBLDB4MzcsMHg2OCwweDZBLDB4QzYsMHg1OSwweEJELDB4
MkIsMHgzRCwweDJCLAotICAgIDB4RUEsMHg4MiwweDY4LDB4NkEsMHgyOSwweDJCLDB4MEQsMHgy
RiwweDJBLDB4ODMsMHhDQSwweDdBLDB4QUEsMHhBOCwweEJCLDB4QjYsCi0gICAgMHgyQSwweDgz
LDB4RUEsMHg3QSwweEVFLDB4NjIsMHg2QSwweEZCLDB4MkEsMHg4MywweEVBLDB4N0EsMHhERSww
eEZGLDB4REQsMHhDOSwKLSAgICAweDJCLDB4ODMsMHhDOCwweDdBLDB4QUIsMHgyQiwweEE1LDB4
NzcsMHgyQSwweDgzLDB4QzksMHg3QSwweDBGLDB4QkMsMHhGRSwweDZGLAotICAgIDB4NkIsMHg4
QiwweEM5LDB4N0EsMHgyRiwweEFGLDB4RUQsMHhGRCwweDhDLDB4OTMsMHhFQSwweDdBLDB4MDAs
MHgwMiwweEVCLDB4RjUsCi0gICAgMHgwRCwweEE0LDB4MEEsMHg4MywweDAyLDB4QUUsMHhGRCww
eDdELDB4RUYsMHhCQywweDZCLDB4OEIsMHgwQSwweEFCLDB4RjUsMHhENSwKLSAgICAweEYwLDB4
QkMsMHg4QywweDkzLDB4MDAsMHgwMCwweEFCLDB4QkQsMHhGMCwweEJDLDB4OTAsMHhCNCwweDIw
LDB4MDIsMHgwMywweEZELAotICAgIDB4MzAsMHhDNSwweENGLDB4QkMsMHhFRiwweEJCLDB4QkEs
MHhGMSwweDEwLDB4QzUsMHg4RiwweEI0LDB4NkMsMHhGOCwweEU4LDB4RTgsCi0gICAgMHhBRiww
eEI0LDB4MkQsMHhBNCwweERBLDB4RTgsMHhFOCwweEZCLDB4NkUsMHhBQywweDBDLDB4QTQsMHhB
NiwweDIzLDB4MkYsMHg4OCwKLSAgICAweDZFLDB4QUMsMHgyRSwweEE0LDB4N0UsMHhFMCwweEYz
LDB4ODAsMHg2RiwweEFDLDB4MkUsMHhBNCwweDdGLDB4NTcsMHhENywweEZFLAotICAgIDB4NkUs
MHhBQywweDBELDB4QTQsMHg3NiwweDdGLDB4QkYsMHhDQSwweDRFLDB4QUMsMHgwRCwweDlDLDB4
QUQsMHhFMywweDAyLDB4OEEsCi0gICAgMHg0RSwweEFDLDB4MEQsMHhBNCwweDJCLDB4M0IsMHhD
QSwweEEwLDB4NkUsMHhBQywweDBELDB4QTQsMHhBRCwweEZBLDB4MjIsMHgyRSwKLSAgICAweDhG
LDB4QjQsMHgyRCwweEFDLDB4QkEsMHhFNiwweEJCLDB4QUEsMHg2RSwweEFDLDB4MkUsMHhBNCww
eDZBLDB4RUEsMHg2RSwweDNBLAotICAgIDB4NkUsMHhBQywweDJFLDB4QTQsMHhFRiwweEJGLDB4
QUEsMHhBOCwweDRFLDB4QTQsMHgwRCwweDlDLDB4RjAsMHg2OCwweEY4LDB4MDAsCi0gICAgMHgy
MywweDQ5LDB4QzIsMHgzOCwweDg4LDB4RkEsMHhGQiwweDY4LDB4MDIsMHg0MSwweEMyLDB4Mzgs
MHg3QiwweEZELDB4RkQsMHhCNywKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4QjIsMHhFQSww
eEJDLDB4MEUsMHgyMywweDQxLDB4QzIsMHg0MCwweDdFLDB4RkEsMHhBMiwweEFBLAotICAgIDB4
MjMsMHg0OSwweEUzLDB4NDAsMHgyMywweDBCLDB4QUYsMHhGNywweDIzLDB4NDksMHhFMywweDQw
LDB4M0IsMHgyOCwweDhGLDB4OEMsCi0gICAgMHgyMywweDQxLDB4RTIsMHg0MCwweERGLDB4MjAs
MHg4OCwweDc3LDB4MDMsMHg0MSwweEUyLDB4MzgsMHhBRiwweEYwLDB4RUIsMHg4OSwKLSAgICAw
eDAyLDB4NDEsMHhDMiwweDM4LDB4QUYsMHhFRiwweEM3LDB4RkIsMHhFMiwweDQwLDB4QzIsMHgz
OCwweDM2LDB4OUYsMHhFNywweDc3LAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhDMiwweEUz
LDB4QjUsMHhCNSwweDA0LDB4NDEsMHhDMiwweDM4LDB4RTIsMHhGQSwweDc2LDB4NTcsCi0gICAg
MHgwMywweDQxLDB4QzIsMHgzOCwweEJGLDB4QjYsMHhCRSwweEFGLDB4MjMsMHg0MSwweEUyLDB4
NDAsMHhFRCwweEZELDB4OTUsMHg4QiwKLSAgICAweDIzLDB4NDksMHhDMiwweDM4LDB4REUsMHhG
RiwweERGLDB4MzUsMHgwMywweDQxLDB4QzIsMHgzOCwweEZBLDB4QUUsMHhGRiwweEFBLAotICAg
IDB4MDMsMHg0MSwweEUyLDB4MzgsMHhGQiwweDZCLDB4OEEsMHgyNSwweDIzLDB4NDEsMHhDMiww
eDM4LDB4QTcsMHgyRiwweDhCLDB4RkIsCi0gICAgMHgwMiwweDQxLDB4QzIsMHgzOCwweEE4LDB4
OUEsMHhGRiwweERCLDB4MjMsMHg0MSwweEMyLDB4MzgsMHhGQSwweEZELDB4RkQsMHgzNSwKLSAg
ICAweDAzLDB4NDEsMHhFMiwweDM4LDB4RUYsMHg0MiwweDZGLDB4OEUsMHgwMywweDQxLDB4QTEs
MHgzOCwweDg4LDB4QTIsMHhCRiwweDI3LAotICAgIDB4MjMsMHg0OSwweEMyLDB4NDAsMHhCNSww
eDE3LDB4OUUsMHhCRiwweDY2LDB4NzIsMHg0NCwweDUxLDB4MkIsMHhBOSwweDJELDB4MEQsCi0g
ICAgMHg4NywweDcyLDB4MDYsMHg2MiwweEZGLDB4N0EsMHg3OCwweEZDLDB4MjYsMHg2QSwweEU1
LDB4NTksMHhFQSwweDk4LDB4QUEsMHg4QSwKLSAgICAweDA2LDB4NjIsMHg2NCwweDQ5LDB4Njgs
MHg3MCwweDZDLDB4RkEsMHg0NCwweDQxLDB4RTMsMHgzOCwweDdFLDB4N0MsMHhGRiwweERGLAot
ICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHgwMywweDBBLDB4MDIsMHhBQiwweDAzLDB4MzksMHhF
MiwweDMwLDB4MDAsMHgyMCwweDBGLDB4MDMsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzOCwweDAx
LDB4MkIsMHhGRSwweDVGLDB4MjQsMHg0MSwweDAzLDB4MzksMHg1NiwweDc3LDB4NzMsMHg1NywK
LSAgICAweDIzLDB4NDEsMHhFMywweDMwLDB4OEUsMHhGRCwweEIyLDB4QUEsMHgyNCwweDM5LDB4
MDMsMHgzOSwweDQyLDB4NUYsMHhBOSwweDdFLAotICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHg1
RiwweDRCLDB4ODIsMHgwMywweDQ0LDB4NDEsMHhFMiwweDMwLDB4NUYsMHg3RiwweEUyLDB4RTAs
Ci0gICAgMHgyMywweDM5LDB4RTMsMHgzOCwweEY1LDB4N0QsMHhGRiwweDgyLDB4MjMsMHgzOSww
eEUzLDB4MzgsMHgwMiwweDAyLDB4RkUsMHhGOSwKLSAgICAweDQ0LDB4MzksMHhFMywweDMwLDB4
RkYsMHhGRiwweEFGLDB4ODksMHgyNCwweDM5LDB4QzIsMHgzMCwweERGLDB4RkEsMHhFOCwweDJB
LAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhENSwweEZELDB4QkEsMHg4MCwweDAzLDB4MzEs
MHhDMiwweDI4LDB4QkYsMHhGRiwweDZBLDB4NjAsCi0gICAgMHgwMywweDMxLDB4RTMsMHgzMCww
eDZELDB4QUQsMHhGRSwweEY5LDB4MDMsMHgzMSwweEMyLDB4MjgsMHhFRSwweEFGLDB4MEEsMHhD
MiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4QjksMHg4OCwweDAwLDB4MDAsMHgyNCwweDM5
LDB4QzIsMHgzMCwweDc3LDB4RjIsMHhBMiwweEUyLAotICAgIDB4MjQsMHgzMSwweEMyLDB4MzAs
MHg3RiwweEVGLDB4QUUsMHhBMiwweEUzLDB4MzAsMHhDMiwweDMwLDB4REIsMHhBQiwweDIwLDB4
ODIsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEZGLDB4RjcsMHhBOCwweENBLDB4MjQsMHgz
OSwweEMyLDB4MzAsMHg3QywweEY1LDB4NzUsMHhGRCwKLSAgICAweDIzLDB4MzEsMHhFMywweDMw
LDB4NUQsMHhEQiwweDdCLDB4NUQsMHgwMywweDMxLDB4QzIsMHgyOCwweEJGLDB4MkUsMHhGRiww
eEY1LAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHhGRSwweEI4LDB4RkEsMHhBOSwweEUzLDB4
MzAsMHhBMiwweDI4LDB4QUEsMHhFQSwweDQwLDB4ODIsCi0gICAgMHhFMywweDMwLDB4QzIsMHgy
OCwweDlELDB4OUYsMHhBRCwweDBELDB4QTIsMHgzMCwweEUzLDB4MjgsMHhCOSwweDc5LDB4N0Qs
MHhGRCwKLSAgICAweEUzLDB4MjgsMHg4MiwweDIwLDB4REYsMHg5RSwweDg4LDB4MDgsMHhDMyww
eDI4LDB4ODEsMHgyMCwweDVCLDB4RjMsMHhFMiwweEE4LAotICAgIDB4QzMsMHgyOCwweDgyLDB4
MjAsMHhGQiwweEZGLDB4RkEsMHg2QiwweEMyLDB4MjgsMHg4MiwweDIwLDB4N0UsMHg1RiwweDdF
LDB4N0EsCi0gICAgMHhBMiwweDI4LDB4ODIsMHgyMCwweDU1LDB4RDksMHhCNiwweEFBLDB4NjEs
MHgyOCwweEEyLDB4MjAsMHhCRiwweEE1LDB4QkQsMHhGRCwKLSAgICAweEEyLDB4MjAsMHg2MSww
eDIwLDB4QjgsMHhCRiwweERFLDB4RjgsMHhBMiwweDI4LDB4ODIsMHgyMCwweDJBLDB4RjMsMHg1
OSwweEQ1LAotICAgIDB4QTIsMHgyOCwweDgyLDB4MjAsMHhBRSwweDk3LDB4REYsMHg3QiwweEEy
LDB4MjgsMHg4MiwweDIwLDB4MEIsMHgwRCwweDAyLDB4QzIsCi0gICAgMHhFMywweDMwLDB4ODIs
MHgyOCwweDJGLDB4M0YsMHgzRCwweDNELDB4MjMsMHgzOSwweEMyLDB4MzAsMHg3QSwweEVCLDB4
RkEsMHhGOCwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QUUsMHhCRiwweEY3LDB4RTAsMHhF
MywweDMwLDB4QTIsMHgyOCwweDgyLDB4M0UsMHgyRiwweDJGLAotICAgIDB4MjMsMHgzOSwweEMy
LDB4MzAsMHhERiwweDlGLDB4N0UsMHhGQywweEUyLDB4MzAsMHhDMSwweDMwLDB4ODAsMHg4MCww
eEE3LDB4NTYsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEFCLDB4QUEsMHhBQiwweDBGLDB4
MjMsMHgzOSwweEMyLDB4MzAsMHhERiwweEJFLDB4RUEsMHhFOCwKLSAgICAweDIzLDB4MzksMHhD
MiwweDMwLDB4MjMsMHgwOSwweEFCLDB4RjcsMHg0NCwweDQxLDB4RTIsMHgzOCwweDNBLDB4QkUs
MHhGRSwweEJELAotICAgIDB4NjQsMHg0OSwweDI0LDB4NDEsMHg4RSwweEFELDB4QUQsMHhBNSww
eDY0LDB4NDEsMHgyNCwweDQxLDB4QkYsMHg4QiwweDg4LDB4QzAsCi0gICAgMHg2NCwweDQxLDB4
RTMsMHgzMCwweEZFLDB4N0MsMHg3QSwweEYwLDB4MjQsMHgzOSwweEMyLDB4MzAsMHg2MiwweEZG
LDB4NzcsMHg3NywKLSAgICAweEUyLDB4MzAsMHg4MiwweDI4LDB4MkUsMHhBRSwweEU3LDB4RkUs
MHhFMywweDMwLDB4QTEsMHgyOCwweEQ3LDB4QkQsMHhFQiwweDBCLAotICAgIDB4MDMsMHgzOSww
eEEyLDB4MjgsMHhBRCwweDhCLDB4QkYsMHhDQiwweEUzLDB4MzAsMHhBMiwweDI4LDB4QUYsMHgy
RSwweDNBLDB4OUMsCi0gICAgMHhDMiwweDMwLDB4ODIsMHgyOCwweEVFLDB4RkMsMHhCOCwweEJB
LDB4QTIsMHgyOCwweDgxLDB4MjAsMHgzMCwweEY4LDB4M0UsMHgwNiwKLSAgICAweEMyLDB4Mjgs
MHg4MSwweDIwLDB4QUEsMHgxQiwweERFLDB4MkUsMHhDMiwweDI4LDB4NjEsMHgyOCwweEU4LDB4
MkEsMHhBMCwweEE4LAotICAgIDB4MDIsMHgzMSwweEEyLDB4MjgsMHgzNSwweEY1LDB4RkYsMHhG
RiwweEUyLDB4MzAsMHhBMiwweDI4LDB4N0EsMHg1QSwweDc4LDB4NUEsCi0gICAgMHhDMiwweDI4
LDB4ODEsMHgyMCwweEI2LDB4RUUsMHhBRiwweDBELDB4MDMsMHgzMSwweDgyLDB4MjgsMHhGRiww
eEJFLDB4RUIsMHg4RCwKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4MkQsMHgwRiwweDg5LDB4
QUYsMHgyMywweDM5LDB4RTMsMHgzMCwweEMwLDB4ODAsMHgwMSwweDBGLAotICAgIDB4MjMsMHgz
OSwweEUyLDB4MzAsMHg1NywweEZBLDB4RkUsMHgyOCwweDQ0LDB4NDEsMHhFMiwweDM4LDB4N0Is
MHhFOCwweDgzLDB4ODIsCi0gICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDZGLDB4RkEsMHgyMiww
eDAwLDB4NjQsMHg0OSwweDAyLDB4MzksMHhDRCwweEJELDB4QkYsMHhGRiwKLSAgICAweDg1LDB4
NTEsMHgyMywweDQxLDB4QTksMHg4QiwweDhCLDB4MkEsMHg4NSwweDUxLDB4NjQsMHg0OSwweDA5
LDB4Q0EsMHhGMiwweDJFLAotICAgIDB4MDYsMHg2MiwweDY0LDB4NTEsMHhBRiwweDM5LDB4QUQs
MHgyRiwweEM5LDB4N0EsMHgyNiwweDYyLDB4QkQsMHhBNSwweEFELDB4MkQsCi0gICAgMHhFOSww
eDdBLDB4QTksMHg3MiwweDI1LDB4MjEsMHhBQSwweEFDLDB4MEEsMHg4MywweEE5LDB4N0EsMHgy
OCwweEEyLDB4NUEsMHg2QSwKLSAgICAweDBBLDB4ODMsMHhDOSwweDdBLDB4QjAsMHhBMSwweEI1
LDB4QkQsMHgwQSwweDgzLDB4QzksMHg3QSwweEFCLDB4RkYsMHhFQiwweDdGLAotICAgIDB4MEEs
MHg4MywweEM5LDB4N0EsMHhFQywweDAyLDB4MjMsMHgyRCwweDJCLDB4ODMsMHhDOSwweDdBLDB4
QUYsMHhGRiwweEEwLDB4QTAsCi0gICAgMHgyQiwweDgzLDB4QTksMHg3QSwweDhCLDB4RkEsMHg3
QSwweEYwLDB4MEEsMHg4MywweEM5LDB4N0EsMHg2RSwweEJBLDB4MDEsMHgyOSwKLSAgICAweDJB
LDB4ODMsMHhFQSwweDgyLDB4OEQsMHg4RCwweEEyLDB4RjAsMHg2QywweDhCLDB4MEEsMHg4Myww
eDA5LDB4QjUsMHhCRCwweEI3LAotICAgIDB4QUQsMHg5MywweDBBLDB4ODMsMHgwQSwweEFGLDB4
OUYsMHhENywweDZGLDB4QUMsMHgwQSwweDgzLDB4MDIsMHhBRiwweEZGLDB4RkQsCi0gICAgMHhE
MCwweEJDLDB4NEIsMHg4QiwweDAwLDB4MkEsMHhBRiwweEY1LDB4MTAsMHhCRCwweDBELDB4QTQs
MHgyMCwweEE4LDB4Q0IsMHhGNSwKLSAgICAweENGLDB4QjQsMHg0RSwweEFDLDB4NUMsMHg3Qyww
eEZBLDB4N0YsMHg4RiwweEI0LDB4NEUsMHhBQywweDY5LDB4QjEsMHgyRiwweEQ3LAotICAgIDB4
QUYsMHhCNCwweDRFLDB4QUMsMHg3RiwweDlCLDB4RDMsMHhCMywweDhGLDB4QjQsMHg0RSwweEFD
LDB4RDcsMHg3RiwweEJFLDB4ODgsCi0gICAgMHg4RiwweEI0LDB4NEUsMHhBQywweDU3LDB4M0Es
MHg4QSwweENBLDB4NkUsMHhBQywweDJELDB4QTQsMHhCNiwweEJDLDB4MkMsMHgyQSwKLSAgICAw
eDhGLDB4QUMsMHg0RSwweEFDLDB4NUUsMHg3RiwweDZCLDB4QUYsMHhBRSwweEFDLDB4NEUsMHhB
QywweDVELDB4RkQsMHg3RCwweEZFLAotICAgIDB4OEYsMHhCNCwweDJELDB4QTQsMHhCQSwweEI5
LDB4QUIsMHhBMCwweEFGLDB4QUMsMHg0RCwweEFDLDB4OUYsMHhGNSwweEY3LDB4RkYsCi0gICAg
MHg2RSwweEI0LDB4NEUsMHhBNCwweDJBLDB4RUEsMHhGOCwweEY4LDB4OEYsMHhBQywweDRFLDB4
QUMsMHg1RSwweDVELDB4RjksMHg2QSwKLSAgICAweDIzLDB4NDksMHhDMiwweDQwLDB4RkUsMHhC
QSwweEZFLDB4RTcsMHgwMiwweDQxLDB4QzIsMHgzOCwweEJGLDB4RUUsMHhCRiwweEJBLAotICAg
IDB4MDMsMHg0MSwweEUyLDB4NDAsMHgwQiwweDAxLDB4ODEsMHhBQSwweDIzLDB4NDEsMHhFMiww
eDQwLDB4MjcsMHhCOSwweDBGLDB4RkQsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweEJGLDB4
MkYsMHg4NywweDM5LDB4MjMsMHg0OSwweEUyLDB4MzgsMHhFOCwweDU4LDB4REYsMHg5NiwKLSAg
ICAweDIzLDB4NDEsMHhDMiwweDQwLDB4QjksMHhBQiwweEJBLDB4QjgsMHgwMywweDQxLDB4QzIs
MHgzOCwweEFCLDB4N0YsMHhEOCwweDVDLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHg4Qiww
eEMxLDB4RjMsMHg1RSwweDAzLDB4NDEsMHhBMSwweDM4LDB4QUYsMHhBOCwweDAyLDB4MkYsCi0g
ICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEVGLDB4QTIsMHg2MCwweEFBLDB4MDMsMHg0MSwweEMy
LDB4MzgsMHgzNywweDgyLDB4QzMsMHhBRiwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4M0Us
MHhGQSwweEY5LDB4QkYsMHgwMywweDQxLDB4QzIsMHgzOCwweEMyLDB4NjgsMHg0RSwweEZGLAot
ICAgIDB4MDIsMHg0MSwweEExLDB4MzgsMHgzRCwweEFFLDB4QUUsMHhBQSwweDAzLDB4NDEsMHhD
MiwweDM4LDB4MDIsMHhCMiwweEFELDB4OEUsCi0gICAgMHgwMywweDQxLDB4RTIsMHgzOCwweDdG
LDB4N0YsMHhFRCwweEFELDB4MDIsMHg0MSwweEMxLDB4MzgsMHhFOSwweDM4LDB4RjIsMHhFQiwK
LSAgICAweEUyLDB4NDAsMHhDMiwweDM4LDB4REEsMHhGMCwweDAyLDB4MEIsMHgwMiwweDQxLDB4
QzIsMHgzOCwweEVFLDB4RjcsMHg1RSwweDlBLAotICAgIDB4RTIsMHg0MCwweEMyLDB4MzgsMHgw
OCwweDJDLDB4MUIsMHgwMiwweEUyLDB4NDAsMHhDMiwweDM4LDB4MjcsMHhBMiwweEUwLDB4Q0Es
Ci0gICAgMHgwMywweDQ5LDB4RTIsMHgzOCwweEI2LDB4QjcsMHhCRiwweEFELDB4NDYsMHg2QSww
eDQzLDB4NDksMHgwQiwweDA5LDB4MEQsMHgwRCwKLSAgICAweDg2LDB4NzIsMHgyNSwweDZBLDB4
RkUsMHhGRSwweDZBLDB4NjAsMHgyNiwweDZBLDB4RTUsMHg2MSwweEY4LDB4N0MsMHg3MCwweDEy
LAotICAgIDB4MDUsMHg2MiwweDIzLDB4NDEsMHg3MCwweEUwLDB4RTgsMHhBMCwweDIzLDB4NDEs
MHhDMiwweDMwLDB4QUEsMHg5OCwweEQ4LDB4RjgsCi0gICAgMHgwMywweDM5LDB4RTIsMHgzMCww
eEVGLDB4RUEsMHg3QSwweDVCLDB4MDMsMHgzOSwweEUyLDB4MzAsMHhBQiwweDJELDB4MzUsMHg5
NSwKLSAgICAweDI0LDB4MzksMHhDMywweDMwLDB4RkUsMHg5RSwweEYyLDB4RkEsMHgwMywweDM5
LDB4RTMsMHgzMCwweEU4LDB4NkUsMHhFMywweEVFLAotICAgIDB4MjMsMHgzOSwweEUzLDB4Mzgs
MHgyQiwweEJELDB4RUYsMHhGRCwweDIzLDB4MzksMHhFMiwweDM4LDB4QTgsMHgwOCwweEJFLDB4
N0YsCi0gICAgMHgyMywweDM5LDB4RTIsMHgzOCwweDAyLDB4MEUsMHhBRiwweEFCLDB4NDQsMHgz
OSwweEUzLDB4MzAsMHhDQSwweDhBLDB4RjcsMHhCRSwKLSAgICAweDQ0LDB4NDEsMHhFMywweDMw
LDB4RTIsMHhBQSwweDNBLDB4QkYsMHg2NCwweDQxLDB4RTMsMHgzMCwweDdELDB4N0IsMHhGMCww
eEUyLAotICAgIDB4NDQsMHg0MSwweEUzLDB4MzAsMHhGNSwweDU1LDB4RkIsMHhBMiwweDI0LDB4
MzksMHhFMywweDMwLDB4MkIsMHg4NywweDVCLDB4N0IsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgz
MCwweEEwLDB4QTgsMHhFQiwweEI5LDB4MjQsMHgzOSwweEUzLDB4MzAsMHg3QSwweEZBLDB4QkUs
MHhCMiwKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4RTcsMHhGRSwweEJBLDB4QkEsMHgyMyww
eDM5LDB4RTMsMHgzMCwweDFGLDB4QkIsMHhBMiwweDgwLAotICAgIDB4NDQsMHgzOSwweEUzLDB4
MzAsMHhGQywweERGLDB4RDUsMHhGQiwweDI0LDB4MzksMHhFMywweDMwLDB4ODIsMHhBQSwweEJE
LDB4QUUsCi0gICAgMHgyMywweDM5LDB4RTIsMHgzMCwweDhBLDB4M0EsMHhBQiwweEVELDB4MjQs
MHgzOSwweEUzLDB4MzAsMHg3RiwweEZDLDB4RkMsMHhGRSwKLSAgICAweDI0LDB4MzksMHhDMiww
eDMwLDB4NEIsMHg4QSwweDhBLDB4QUUsMHgwMywweDM5LDB4RTMsMHgzMCwweDU5LDB4ODIsMHgw
NiwweDI1LAotICAgIDB4MjQsMHgzOSwweEMyLDB4MjgsMHg1QiwweEZCLDB4QTIsMHhFMiwweDAz
LDB4MzEsMHhDMiwweDI4LDB4RjUsMHhGRiwweEVFLDB4QTgsCi0gICAgMHhFMywweDMwLDB4QzIs
MHgyOCwweEJBLDB4RUEsMHhFNywweEE4LDB4MDMsMHgzMSwweEMyLDB4MjgsMHg0QiwweEJELDB4
QjUsMHhBRiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4QUYsMHhERSwweDk0LDB4RjgsMHgw
MywweDMxLDB4QzMsMHgyOCwweDVBLDB4RkEsMHhGRSwweEJFLAotICAgIDB4MDMsMHgzMSwweEMz
LDB4MjgsMHg3NSwweDU1LDB4REUsMHg2QiwweEUzLDB4MjgsMHhBMiwweDIwLDB4REUsMHhCRSww
eEJBLDB4QUEsCi0gICAgMHhDMywweDI4LDB4ODIsMHgyMCwweDhBLDB4RTAsMHg0MCwweDgwLDB4
QzIsMHgyOCwweDgyLDB4MjAsMHg3QSwweEFBLDB4QUEsMHgzMCwKLSAgICAweEMyLDB4MjgsMHhB
MiwweDIwLDB4N0QsMHgzNSwweEFCLDB4RUMsMHhDMywweDI4LDB4ODIsMHgyMCwweDU3LDB4REMs
MHhEOCwweDdCLAotICAgIDB4QzMsMHgyOCwweDgyLDB4MjAsMHg1RSwweDVGLDB4RkIsMHgyQSww
eEMyLDB4MjgsMHg2MiwweDE4LDB4QUYsMHhBQiwweEVBLDB4QTgsCi0gICAgMHhBMiwweDI4LDB4
NjIsMHgyMCwweDNBLDB4RjgsMHhCRSwweEJFLDB4QTIsMHgyOCwweDgyLDB4MjAsMHhBMCwweEVF
LDB4RUYsMHhERiwKLSAgICAweEMzLDB4MzAsMHg4MSwweDIwLDB4MEIsMHgyQiwweEJGLDB4RUQs
MHgwMywweDMxLDB4QTIsMHgyOCwweDgwLDB4MjIsMHhGQiwweDU1LAotICAgIDB4RTMsMHgzMCww
eEEyLDB4MjgsMHhDMCwweEMwLDB4RTMsMHhBNSwweEUzLDB4MzAsMHhBMiwweDI4LDB4OUYsMHhG
QiwweDZCLDB4RUUsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweDJCLDB4MkYsMHhBRCwweEVG
LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGQSwweDhBLDB4OEIsMHhBQiwKLSAgICAweDAzLDB4Mzks
MHhFMywweDMwLDB4RkQsMHhBRSwweDIzLDB4MDIsMHgwMywweDM5LDB4QTIsMHgyOCwweEEyLDB4
RUEsMHhFQSwweDdFLAotICAgIDB4QzIsMHgzMCwweDgxLDB4MjgsMHgwOCwweDhBLDB4RUIsMHhF
QSwweDAzLDB4MzksMHhBMSwweDMwLDB4QUEsMHgyRiwweEVCLDB4QUQsCi0gICAgMHg0NCwweDQx
LDB4QzIsMHgzMCwweDAyLDB4MkIsMHhFRiwweEQ3LDB4NjUsMHg0OSwweEUyLDB4MzAsMHhBMCww
eEEyLDB4QUYsMHhENSwKLSAgICAweDY1LDB4NDksMHgwMywweDM5LDB4RjIsMHhGMiwweDhCLDB4
RTksMHgyNCwweDQxLDB4QTIsMHgzMCwweDcyLDB4RTgsMHhFOCwweEZBLAotICAgIDB4RTMsMHgz
MCwweDgyLDB4MjgsMHhGRSwweERGLDB4RkEsMHhCOCwweEUzLDB4MzAsMHg4MSwweDI4LDB4MDks
MHhBRiwweEJCLDB4QUUsCi0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweDhCLDB4QkIsMHhGNiww
eEJGLDB4MDMsMHgzOSwweEEyLDB4MjgsMHhGRSwweEFFLDB4RkEsMHg3MiwKLSAgICAweEMyLDB4
MzAsMHg4MiwweDI4LDB4RkUsMHhFQywweDk4LDB4RjgsMHhDMiwweDMwLDB4ODEsMHgyOCwweDM3
LDB4RjYsMHhFMiwweEEwLAotICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHhBNiwweEFCLDB4ODks
MHhBRCwweEUyLDB4MzAsMHhBMSwweDI4LDB4RjUsMHhGNSwweEVFLDB4QTgsCi0gICAgMHhFMiww
eDMwLDB4ODIsMHgyOCwweEI5LDB4RUEsMHhCQSwweDAyLDB4RTMsMHgzMCwweEExLDB4MjgsMHg1
QSwweEIzLDB4RUEsMHhFQSwKLSAgICAweEMyLDB4MjgsMHg4MSwweDI4LDB4MDUsMHhBRiwweEJG
LDB4QkUsMHgyMywweDM5LDB4QzIsMHgyOCwweDI1LDB4RjUsMHg1RCwweEQ3LAotICAgIDB4MjQs
MHgzOSwweEMzLDB4MzAsMHgzNiwweEFCLDB4RTksMHhFRSwweDIzLDB4MzksMHhDMiwweDMwLDB4
MEYsMHhGOSwweDVGLDB4RUYsCi0gICAgMHgyMywweDM5LDB4RTIsMHgzMCwweDM4LDB4MEQsMHgy
QiwweDAzLDB4NjQsMHg0OSwweDIzLDB4NDEsMHhCNSwweDA1LDB4QTUsMHhENSwKLSAgICAweDYz
LDB4NDksMHgwMywweDM5LDB4RkYsMHhGRiwweEVGLDB4RkMsMHg0NCwweDQ5LDB4MDMsMHg0MSww
eEY1LDB4MDUsMHhGRCwweDk3LAotICAgIDB4QTUsMHg1MSwweDIzLDB4NDEsMHgyRiwweDJGLDB4
MkQsMHgzNSwweDQ3LDB4NkEsMHg4NCwweDQ5LDB4RjUsMHhCRCwweEE3LDB4MEYsCi0gICAgMHg2
OCwweDZBLDB4QzUsMHg1OSwweEY1LDB4MkQsMHgwMiwweDA4LDB4QzksMHg3QSwweDY4LDB4NkEs
MHgxRCwweDlELDB4QTksMHg4RiwKLSAgICAweEU5LDB4N0EsMHhBOSwweDcyLDB4QjYsMHgyNyww
eENELDB4MEIsMHgwQSwweDgzLDB4QzksMHg3QSwweDVBLDB4NjIsMHg1OSwweDU1LAotICAgIDB4
RTksMHg3QSwweEE5LDB4N0EsMHg4QSwweDhFLDB4QUEsMHhGRSwweDBBLDB4ODMsMHhBOSwweDcy
LDB4M0QsMHhBRiwweDAzLDB4QjgsCi0gICAgMHgwQSwweDgzLDB4QTksMHg3MiwweDg5LDB4OEUs
MHhCQiwweEVCLDB4MkEsMHg4MywweEM4LDB4N0EsMHgyMCwweEVBLDB4QUIsMHgyRCwKLSAgICAw
eDRCLDB4OEIsMHhFQSwweDdBLDB4RTMsMHhFRSwweERFLDB4RkEsMHgyQSwweDgzLDB4RUEsMHg3
QSwweEJGLDB4QkUsMHg4QiwweEFCLAotICAgIDB4NEIsMHg4QiwweEVBLDB4N0EsMHhCRiwweDhG
LDB4RUUsMHg1NywweDJBLDB4ODMsMHhFOSwweDdBLDB4MjgsMHgyQSwweEVFLDB4QjcsCi0gICAg
MHg0QSwweDhCLDB4RTksMHg3QSwweEY4LDB4RkIsMHhGMywweEZCLDB4NEIsMHg4QiwweEVBLDB4
N0EsMHgwMSwweEJCLDB4M0EsMHhCOCwKLSAgICAweDZCLDB4OEIsMHgwQSwweDgzLDB4MDIsMHhG
RSwweEQ3LDB4REUsMHhFQywweDlCLDB4MkEsMHg4MywweDBBLDB4QkIsMHg5RCwweDc1LAotICAg
IDB4MkQsMHhBNCwweDI5LDB4ODMsMHgwMCwweDJBLDB4RkYsMHg1NSwweDRFLDB4QUMsMHg2Qiww
eDhCLDB4MDAsMHgwMCwweDJCLDB4REQsCi0gICAgMHg4RiwweEI0LDB4Q0QsMHg5QiwweDAwLDB4
MEEsMHgwQSwweEE5LDB4QUYsMHhCNCwweDRFLDB4QUMsMHhFRSwweDhBLDB4QUEsMHg3RiwKLSAg
ICAweDhGLDB4QjQsMHg2RSwweEFDLDB4N0QsMHhBRCwweEEyLDB4NkUsMHg4RiwweEI0LDB4MkQs
MHhBNCwweERBLDB4QUEsMHhBOCwweEIyLAotICAgIDB4OEYsMHhCNCwweDZFLDB4QUMsMHhENiww
eEJDLDB4RTUsMHgzRSwweDhGLDB4QjQsMHg0RSwweEFDLDB4MEEsMHhBRSwweDhFLDB4QTQsCi0g
ICAgMHhBRiwweEI0LDB4NkUsMHhBQywweEZGLDB4NzUsMHhFNywweEZBLDB4QUYsMHhCNCwweDRE
LDB4QUMsMHgzNywweEE3LDB4MkEsMHhBQSwKLSAgICAweEFGLDB4QjQsMHg0RCwweEFDLDB4Rjcs
MHg2RSwweDI4LDB4MjgsMHhEMCwweEI0LDB4NkUsMHhBQywweDc3LDB4N0UsMHhFQSwweEFBLAot
ICAgIDB4MjMsMHg0MSwweEUyLDB4NDAsMHg3NSwweEJELDB4Q0IsMHhBMiwweDIzLDB4NDEsMHhF
MiwweDQwLDB4N0YsMHhFRiwweDZDLDB4RkIsCi0gICAgMHgwMywweDQxLDB4RTIsMHg0MCwweDRC
LDB4RjMsMHg1MywweDczLDB4MjMsMHg0OSwweEMyLDB4MzgsMHhGRiwweEZGLDB4RkYsMHgzRSwK
LSAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4MkIsMHg3RiwweEVBLDB4RUYsMHgyMywweDQxLDB4
QzIsMHg0MCwweDNDLDB4QUYsMHhFRCwweEFELAotICAgIDB4MjMsMHg0OSwweEMyLDB4MzgsMHhG
RSwweEZGLDB4RUIsMHhFMiwweEUyLDB4NDAsMHhDMiwweDM4LDB4OUMsMHhBQywweEVBLDB4NTYs
Ci0gICAgMHgwMiwweDQxLDB4QzIsMHgzOCwweEQ1LDB4RkQsMHhFRiwweDJGLDB4MDMsMHg0MSww
eEExLDB4MzAsMHgzNSwweEJGLDB4MkIsMHgwQSwKLSAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4
RUMsMHhGRSwweEZFLDB4RjgsMHgyMywweDQxLDB4QzIsMHgzOCwweEJELDB4MzcsMHhERSwweEJC
LAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhFRiwweDhBLDB4QTIsMHhFOCwweEUyLDB4NDAs
MHhDMiwweDM4LDB4MjcsMHg4RiwweDAyLDB4MDAsCi0gICAgMHhFMiwweDQwLDB4QzIsMHgzOCww
eDIyLDB4QUEsMHhGRSwweEVFLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhCQiwweEUyLDB4REYsMHg1
NSwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4MDIsMHhDQSwweDU1LDB4NzksMHgwMywweDQx
LDB4QTEsMHgzMCwweDhBLDB4RkYsMHhCRiwweEFBLAotICAgIDB4MDMsMHg0MSwweEUyLDB4Mzgs
MHg1NywweEVDLDB4RDIsMHg1QSwweDAzLDB4NDEsMHhDMiwweDM4LDB4QjIsMHg4MiwweDA5LDB4
MkQsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDhCLDB4QUYsMHhDRSwweDYyLDB4RTIsMHg0
MCwweEEyLDB4MzgsMHhDMiwweEUwLDB4QzgsMHg5QSwKLSAgICAweDAyLDB4NDEsMHhDMiwweDM4
LDB4MEQsMHg5NSwweEJGLDB4MkYsMHhBNywweDdBLDB4NDMsMHg0OSwweDI5LDB4QUQsMHgyRCww
eDJELAotICAgIDB4ODYsMHg3MiwweDQ2LDB4NkEsMHg2QSwweDkyLDB4RTIsMHhGNiwweDI2LDB4
NkEsMHgwNSwweDYyLDB4OTAsMHhEMiwweDcwLDB4NTAsCi0gICAgMHgwNSwweDYyLDB4NjMsMHg0
OSwweDYwLDB4NzgsMHhFMCwweDYwLDB4NjMsMHg0OSwweEMyLDB4MzAsMHg3QiwweDdFLDB4RkMs
MHg3RSwKLSAgICAweEUyLDB4MzgsMHhDMiwweDMwLDB4QkEsMHhFRiwweDc2LDB4QTIsMHgwMyww
eDM5LDB4QzIsMHgzMCwweDk3LDB4RkUsMHhBRCwweEE3LAotICAgIDB4MjMsMHgzOSwweEUyLDB4
MzgsMHg1NSwweDc5LDB4Q0IsMHg2QSwweDIzLDB4MzksMHhFMiwweDMwLDB4NUQsMHhGRSwweDJG
LDB4QUEsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzOCwweEVGLDB4QUYsMHgyRCwweEVGLDB4MjMs
MHgzOSwweEMyLDB4MzgsMHg2MywweEFBLDB4QUEsMHhBRSwKLSAgICAweDQzLDB4NDEsMHgwMyww
eDM5LDB4RjksMHhFRiwweDc4LDB4RkUsMHgyNCwweDM5LDB4MDMsMHgzOSwweEJDLDB4MjcsMHhB
NSwweDk1LAotICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHgwNiwweDNGLDB4QkUsMHhFQSwweDY1
LDB4NDEsMHgwMywweDM5LDB4RTMsMHhBQSwweDJGLDB4RkEsCi0gICAgMHg0NCwweDQxLDB4MDMs
MHgzOSwweEJBLDB4RjgsMHhGRSwweEVFLDB4NDQsMHg0MSwweDAzLDB4MzEsMHg3QiwweEJBLDB4
RTMsMHhBMCwKLSAgICAweDQ0LDB4MzksMHgwMywweDMxLDB4NUQsMHg5MiwweDAwLDB4ODgsMHg0
NCwweDM5LDB4MDMsMHgzMSwweDVELDB4NTcsMHg1NywweDc4LAotICAgIDB4MjQsMHgzOSwweEUy
LDB4MzAsMHhBQSwweEFBLDB4QTcsMHg5RiwweDQ0LDB4MzksMHhFMiwweDMwLDB4QTIsMHhBQSww
eEZGLDB4REYsCi0gICAgMHgyMywweDM5LDB4MDMsMHgzOSwweEIyLDB4MjIsMHhDMSwweDc5LDB4
MjQsMHgzOSwweEUzLDB4MzgsMHhFQSwweDc4LDB4NzAsMHhBMiwKLSAgICAweDAzLDB4MzksMHhB
MiwweDI4LDB4ODIsMHhBMiwweEFDLDB4QUEsMHgyNCwweDM5LDB4QzMsMHgzMCwweEJGLDB4RkQs
MHhCRiwweEE4LAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHhBQiwweEIwLDB4QTAsMHhBMCww
eDIzLDB4MzksMHhFMywweDMwLDB4QUQsMHhBRiwweEVGLDB4RDcsCi0gICAgMHgyNCwweDM5LDB4
RTMsMHgzMCwweDhBLDB4QUIsMHhERiwweDU3LDB4MjMsMHgzOSwweEUzLDB4MzAsMHhGRSwweEZG
LDB4QTMsMHhCRiwKLSAgICAweDAzLDB4MzEsMHhFMywweDMwLDB4REEsMHg3OCwweDVFLDB4RkUs
MHgwMywweDMxLDB4QTIsMHgyOCwweEFBLDB4RUEsMHhBQSwweDA4LAotICAgIDB4MjQsMHgzOSww
eEMyLDB4MjgsMHg3RiwweDdGLDB4REIsMHg2MiwweDIzLDB4MzEsMHhFMywweDMwLDB4RjUsMHg3
RiwweEZGLDB4NzMsCi0gICAgMHgyNCwweDMxLDB4QzIsMHgyOCwweEVDLDB4RTIsMHhFQiwweDdG
LDB4RTMsMHgyOCwweEMzLDB4MjgsMHhENywweEJFLDB4NUUsMHg1NywKLSAgICAweDA0LDB4MzEs
MHhDMywweDI4LDB4N0YsMHg1RSwweEVCLDB4MkMsMHhFMywweDI4LDB4QzMsMHgyOCwweDVGLDB4
QzgsMHg2MiwweDgwLAotICAgIDB4RTMsMHgyOCwweEEyLDB4MjAsMHhCRiwweDhFLDB4OEEsMHg4
MiwweEUzLDB4MjgsMHhBMiwweDIwLDB4NkIsMHhCMiwweEYyLDB4QUEsCi0gICAgMHhDMiwweDI4
LDB4ODIsMHgyMCwweEFCLDB4RjAsMHhCQSwweEE4LDB4QzIsMHgyOCwweEExLDB4MjgsMHg2RSww
eDUzLDB4QjcsMHgwMiwKLSAgICAweEMyLDB4MjgsMHg4MiwweDIwLDB4N0YsMHg3NiwweEZFLDB4
NkUsMHhDMiwweDI4LDB4ODIsMHgyMCwweEQ1LDB4RjUsMHhCRiwweEFCLAotICAgIDB4QzMsMHgy
OCwweDgyLDB4MjAsMHg2RiwweEZBLDB4RkUsMHg1QSwweEEyLDB4MjgsMHg4MiwweDIwLDB4QkYs
MHhBRiwweEY2LDB4QTUsCi0gICAgMHhDMiwweDI4LDB4ODIsMHgyMCwweDBFLDB4RkIsMHhGQSww
eEQ1LDB4QzIsMHgzMCwweEEyLDB4MjgsMHg4OSwweDJCLDB4OTcsMHg1QiwKLSAgICAweEUzLDB4
MzAsMHhBMiwweDI4LDB4QkUsMHhCQywweEFGLDB4OUIsMHgwMywweDMxLDB4QzIsMHgzMCwweDI5
LDB4MjksMHgwNSwweEFCLAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHhGRiwweDdDLDB4RkUs
MHhGRiwweDQ0LDB4NDEsMHg4MSwweDI4LDB4N0YsMHg3RiwweDdBLDB4RUMsCi0gICAgMHgwMyww
eDMxLDB4QTIsMHgzMCwweDdELDB4RkQsMHhGNSwweEJGLDB4RTIsMHgzMCwweEEyLDB4MjgsMHhB
MSwweEE3LDB4QjcsMHhGRSwKLSAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4RkYsMHhCRiwweEFF
LDB4RTIsMHg4MiwweDM4LDB4RTMsMHgzMCwweDc3LDB4RkQsMHhGNywweEJGLAotICAgIDB4MDMs
MHgzOSwweEMyLDB4MzAsMHhBMiwweEYyLDB4NTksMHhERCwweEUyLDB4MzAsMHhBMSwweDMwLDB4
QTAsMHhGMCwweDVBLDB4NkEsCi0gICAgMHhDMiwweDMwLDB4ODEsMHgyOCwweEI4LDB4NUMsMHhG
RSwweDBGLDB4RTIsMHgzMCwweEMyLDB4MzAsMHhGNSwweDZELDB4QUQsMHhBQiwKLSAgICAweEUz
LDB4MzAsMHhBMiwweDMwLDB4MUEsMHgwRSwweDA4LDB4MkEsMHhFMywweDMwLDB4QzIsMHgzMCww
eDdBLDB4NzIsMHg0NSwweENBLAotICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhERiwweDY2LDB4
RkYsMHg0OCwweEMyLDB4MjgsMHhBMiwweDI4LDB4M0IsMHg4QSwweDhCLDB4RkUsCi0gICAgMHhF
MiwweDMwLDB4QTIsMHgyOCwweDJGLDB4QUQsMHg3NSwweDI5LDB4MjMsMHgzOSwweEMyLDB4Mjgs
MHhGRiwweERGLDB4QjksMHhBMiwKLSAgICAweDAzLDB4MzksMHhDMiwweDI4LDB4QUUsMHg3RSww
eEI4LDB4MjgsMHgyMywweDM5LDB4QzIsMHgyOCwweDVGLDB4NkEsMHhBOCwweEEwLAotICAgIDB4
MDMsMHgzMSwweEExLDB4MjgsMHg3NSwweDVGLDB4QkMsMHhBQSwweEUzLDB4MzAsMHhBMiwweDI4
LDB4MkIsMHg4QiwweEFBLDB4ODgsCi0gICAgMHgwMywweDM5LDB4QzMsMHgzMCwweEFBLDB4QkQs
MHhGQSwweEJFLDB4NDMsMHg0MSwweEUyLDB4MzAsMHhCNSwweDk1LDB4RkYsMHhBQSwKLSAgICAw
eDQ0LDB4NDEsMHgwMiwweDM5LDB4Q0UsMHg4MCwweENBLDB4RUIsMHg2NCwweDQ5LDB4MDMsMHgz
OSwweEJGLDB4Q0YsMHg3QiwweDU1LAotICAgIDB4NDQsMHg0OSwweEUyLDB4MzgsMHhCOCwweEFB
LDB4QTUsMHgzNSwweEE1LDB4NTEsMHgwMywweDQxLDB4NTUsMHg1RCwweEJCLDB4MkEsCi0gICAg
MHg2NywweDZBLDB4MjMsMHg0MSwweEY1LDB4QkQsMHhBRiwweDJBLDB4NjcsMHg2QSwweEM1LDB4
NTEsMHgyNSwweDJGLDB4QUIsMHgwMCwKLSAgICAweEE4LDB4NzIsMHg0NywweDZBLDB4QkQsMHgz
RiwweEZGLDB4RUYsMHhFOSwweDdBLDB4NjcsMHg3MiwweEFCLDB4MEYsMHhFOSwweEVGLAotICAg
IDB4QzksMHg3QSwweDg4LDB4NzIsMHgwOCwweEE4LDB4MkEsMHhCRiwweEM5LDB4N0EsMHhBOSww
eDcyLDB4QzUsMHg2MSwweEZBLDB4NUMsCi0gICAgMHhFQSwweDdBLDB4ODksMHg3MiwweDJGLDB4
M0QsMHhBNSwweEFGLDB4MEEsMHg4MywweEE5LDB4N0EsMHgzQSwweEI4LDB4RkEsMHhGRiwKLSAg
ICAweEU5LDB4N0EsMHhBOCwweDdBLDB4N0EsMHg0MCwweEVFLDB4M0YsMHhFOSwweDdBLDB4QTks
MHg3MiwweDAxLDB4RUYsMHhBNCwweEI4LAotICAgIDB4MEEsMHg4MywweEM5LDB4N0EsMHg4Riww
eEI1LDB4QkYsMHhGRiwweDJBLDB4ODMsMHhDOSwweDdBLDB4QUEsMHgyQSwweDBCLDB4MjUsCi0g
ICAgMHgyQSwweDgzLDB4QzksMHg3QSwweDVFLDB4RkMsMHhFRSwweEUyLDB4MkEsMHg4MywweEU5
LDB4N0EsMHg3NiwweEQ1LDB4Q0QsMHhBRCwKLSAgICAweDBBLDB4ODMsMHhFQSwweDdBLDB4RUEs
MHgwMiwweDMyLDB4NUYsMHgyOSwweDgzLDB4RUEsMHg3QSwweEQ4LDB4RUMsMHg4MiwweDAzLAot
ICAgIDB4NEIsMHg4QiwweEE4LDB4NzIsMHhBMCwweDgwLDB4QTIsMHhGRSwweDRCLDB4OEIsMHhD
OSwweDcyLDB4MkIsMHgzRSwweDNGLDB4RkQsCi0gICAgMHg0QSwweDhCLDB4MEEsMHg4MywweEZD
LDB4RUUsMHhENSwweERELDB4OEIsMHg5MywweEU5LDB4N0EsMHgyQiwweEFCLDB4RkYsMHg3RCwK
LSAgICAweDBELDB4QTQsMHgyQSwweDgzLDB4MEEsMHhCRCwweEY1LDB4NTUsMHg0RSwweEFDLDB4
MkEsMHg4QiwweDAyLDB4QUIsMHhCRiwweEY1LAotICAgIDB4OEYsMHhBQywweEFDLDB4OTMsMHgw
MCwweDhBLDB4QTksMHhCNSwweDhGLDB4QUMsMHg0RSwweEFDLDB4QTUsMHhGNSwweEZGLDB4NTUs
Ci0gICAgMHg4RSwweEI0LDB4NEUsMHhBQywweEFDLDB4OEIsMHhCMiwweEZGLDB4OEUsMHhCNCww
eDRELDB4QTQsMHhCRiwweDFELDB4MDcsMHhBRSwKLSAgICAweEFGLDB4QjQsMHg2RSwweEFDLDB4
OUEsMHgyQSwweDJCLDB4MDIsMHhDRiwweEJDLDB4NkUsMHhBQywweEZFLDB4RkYsMHg5RiwweEY3
LAotICAgIDB4QUYsMHhCNCwweDhGLDB4QUMsMHgxQiwweDJFLDB4RTAsMHhDMCwweENGLDB4QjQs
MHg4RiwweEI0LDB4Q0EsMHhDMCwweEFCLDB4RjIsCi0gICAgMHgyMywweDQ5LDB4QzIsMHgzOCww
eEFBLDB4RkUsMHhERCwweEJGLDB4MjMsMHg0MSwweEUyLDB4NDAsMHg3QiwweDdGLDB4OUQsMHhB
NywKLSAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4OTUsMHg5MiwweEVBLDB4QTMsMHgyMywweDQx
LDB4RTIsMHgzOCwweERBLDB4N0YsMHg1QSwweDc4LAotICAgIDB4MDIsMHg0MSwweEEyLDB4MzAs
MHhBRSwweEFBLDB4MkQsMHhBRSwweDAzLDB4NDEsMHhBMSwweDMwLDB4MEEsMHhBQywweERBLDB4
RkEsCi0gICAgMHgwMywweDQxLDB4QTEsMHgzMCwweEIwLDB4QTIsMHhBRiwweEFGLDB4MDMsMHg0
MSwweEExLDB4MzAsMHhFRiwweEZFLDB4QkEsMHgwOCwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4
LDB4QUIsMHhFRiwweEFGLDB4MzcsMHgwMywweDQxLDB4QTIsMHgzOCwweDQ4LDB4QkEsMHgyQiww
eDIwLAotICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHhCMywweDVBLDB4NzYsMHhBRSwweDAzLDB4
NDEsMHhDMiwweDM4LDB4QjAsMHhCOCwweDZFLDB4N0UsCi0gICAgMHgwMywweDQxLDB4RTIsMHgz
OCwweDYyLDB4Q0IsMHg4NSwweEFELDB4MjQsMHg0MSwweEMyLDB4MzgsMHhENywweEQ2LDB4N0Ys
MHhGQiwKLSAgICAweEUyLDB4MzgsMHhDMiwweDM4LDB4RkMsMHgxNiwweDE1LDB4MkIsMHgyMyww
eDQxLDB4QzIsMHgzOCwweEZGLDB4OEIsMHhCRSwweDVGLAotICAgIDB4MDMsMHg0MSwweEExLDB4
MzAsMHhFMiwweEFCLDB4REUsMHhBRiwweDAzLDB4NDEsMHhFMiwweDM4LDB4QzMsMHg2MywweDUw
LDB4REMsCi0gICAgMHgwMiwweDQxLDB4RTIsMHgzOCwweDVGLDB4N0QsMHgzOCwweEI5LDB4MDMs
MHg0MSwweEMyLDB4MzgsMHhCMywweERCLDB4OUEsMHhBQSwKLSAgICAweDAzLDB4NDEsMHhDMiww
eDM4LDB4RjAsMHhDMiwweEVFLDB4REUsMHgwMywweDQxLDB4QzIsMHgzOCwweDU1LDB4RUQsMHgy
RiwweEFGLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhGMywweEUzLDB4RUEsMHhGQSwweDY3
LDB4NzIsMHgwMiwweDQxLDB4MkQsMHgyRCwweDJELDB4MkQsCi0gICAgMHg4NywweDcyLDB4MDUs
MHg2MiwweEE4LDB4RTAsMHg3OCwweEZBLDB4NDYsMHg3MiwweEU1LDB4NjEsMHhERiwweEI2LDB4
RkYsMHhGQywKLSAgICAweDA1LDB4NjIsMHg0MywweDQ5LDB4RTAsMHhFMCwweDYwLDB4RTAsMHg2
MywweDQxLDB4RTIsMHgzOCwweDdGLDB4NUYsMHg1RSwweERDLAotICAgIDB4MDMsMHgzOSwweEMy
LDB4MzAsMHgyQSwweDJBLDB4OEEsMHgyNywweDAzLDB4MzksMHhFMywweDMwLDB4N0IsMHhFMiww
eEJDLDB4QUUsCi0gICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDFFLDB4NkUsMHg3MywweDU4LDB4
MjMsMHgzOSwweEUyLDB4MzAsMHhDMCwweENCLDB4RTMsMHhGQSwKLSAgICAweDIzLDB4MzksMHhF
MiwweDMwLDB4NkIsMHhBQSwweDNELDB4OTUsMHgyMywweDM5LDB4RTMsMHgzOCwweEQ3LDB4RDcs
MHhGQywweEQ1LAotICAgIDB4MjMsMHgzOSwweEUyLDB4MzAsMHg4MiwweEVBLDB4QUUsMHg3Qiww
eDQ0LDB4NDEsMHhFMywweDMwLDB4QUIsMHhBRSwweEU3LDB4RkIsCi0gICAgMHgyMywweDM5LDB4
MDMsMHgzOSwweDAxLDB4NDIsMHhDMiwweDY2LDB4NDQsMHg0MSwweDAzLDB4MzksMHhGQSwweEFC
LDB4RUIsMHhENSwKLSAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4MjcsMHgwRiwweEFCLDB4QUIs
MHg0NCwweDQxLDB4RTMsMHgzMCwweDgwLDB4MjgsMHgzNiwweEVFLAotICAgIDB4NDQsMHg0MSww
eDAzLDB4MzksMHhBOCwweEUyLDB4N0EsMHhBQSwweDQ0LDB4NDEsMHhFMiwweDMwLDB4RkUsMHhG
RiwweDZCLDB4NjIsCi0gICAgMHhFMywweDM4LDB4MDMsMHgzMSwweEZGLDB4MkEsMHhBQSwweDlF
LDB4MDMsMHgzOSwweEUzLDB4MzAsMHhGRiwweDIzLDB4QUYsMHg3RSwKLSAgICAweDAzLDB4Mzks
MHhDMiwweDMwLDB4MEEsMHgwRSwweDAzLDB4MkIsMHg0NCwweDQxLDB4RTIsMHgzMCwweEFCLDB4
MkYsMHhGRCwweEU1LAotICAgIDB4MjQsMHgzOSwweEUzLDB4MzgsMHg4RiwweDhCLDB4MEYsMHhG
RCwweDQ0LDB4NDEsMHgwNCwweDM5LDB4RkYsMHhFNiwweDVBLDB4NTgsCi0gICAgMHg0NCwweDQx
LDB4RTMsMHgzMCwweEZGLDB4N0YsMHhGQSwweEFCLDB4MjQsMHg0MSwweEUzLDB4MzgsMHhCRiww
eEI2LDB4RjgsMHhGOCwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RTAsMHhDQSwweEFBLDB4
QTAsMHgyMywweDM5LDB4QzIsMHgzMCwweDJCLDB4MkYsMHhGRiwweDdGLAotICAgIDB4MjMsMHgz
OSwweEMyLDB4MjgsMHhCQSwweDNFLDB4RjcsMHg5NSwweDAzLDB4MzEsMHhFMywweDMwLDB4ODAs
MHg3OCwweERGLDB4NzUsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweDdBLDB4N0IsMHhGRCww
eDY1LDB4MDMsMHgzMSwweEMzLDB4MjgsMHhCQSwweEFGLDB4QkUsMHhCMiwKLSAgICAweDI0LDB4
MzksMHhDMiwweDI4LDB4N0YsMHhGRiwweEVGLDB4QUUsMHgwMywweDMxLDB4QzIsMHgyOCwweEZG
LDB4RTksMHhDRCwweENBLAotICAgIDB4MDQsMHgzMSwweEMyLDB4MjgsMHgyQSwweEVGLDB4RTUs
MHhFRSwweDA0LDB4MzEsMHhDMywweDI4LDB4NjgsMHg2MywweDY5LDB4RkQsCi0gICAgMHhFMyww
eDMwLDB4QzMsMHgyOCwweERBLDB4N0QsMHg1OSwweDU3LDB4MDMsMHgzMSwweEMzLDB4MjgsMHg3
NSwweERELDB4RkQsMHhBRCwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4RjYsMHhGNywweDBB
LDB4MEEsMHhFMywweDMwLDB4QTIsMHgyOCwweEVGLDB4RkYsMHhGQSwweEI4LAotICAgIDB4RTMs
MHgzMCwweEEyLDB4MjgsMHg2NywweEZELDB4REMsMHgzOCwweEMzLDB4MjgsMHhBMiwweDI4LDB4
NTEsMHg2QiwweDdBLDB4QzMsCi0gICAgMHhDMywweDI4LDB4ODIsMHgyMCwweDdFLDB4RkYsMHhC
RiwweEFGLDB4QTIsMHgyOCwweDgyLDB4MjAsMHgyNiwweDI2LDB4MzgsMHhBOCwKLSAgICAweEEy
LDB4MjAsMHg2MSwweDIwLDB4RkUsMHhGQSwweERBLDB4QUEsMHhBMiwweDI4LDB4NjEsMHgxOCww
eDM4LDB4QkYsMHg5RiwweEZBLAotICAgIDB4QzIsMHgyOCwweDgxLDB4MjAsMHhCOCwweDM3LDB4
REYsMHhERSwweDAzLDB4MzEsMHhDMiwweDI4LDB4QUQsMHhFOSwweEFELDB4N0QsCi0gICAgMHgy
MywweDM5LDB4QzIsMHgyOCwweEJGLDB4QkQsMHhBRiwweEFGLDB4NDQsMHg0MSwweEEyLDB4MzAs
MHhGQywweDdFLDB4N0YsMHhGRSwKLSAgICAweEUyLDB4MzAsMHg4MiwweDMwLDB4MjIsMHgwQSww
eEFCLDB4MjIsMHhDMiwweDMwLDB4QzIsMHgyOCwweDA4LDB4MDAsMHhBMCwweDJBLAotICAgIDB4
MDMsMHgzOSwweEEyLDB4MzAsMHhFRiwweEZELDB4QkIsMHgyQiwweEUyLDB4MzAsMHhBMSwweDMw
LDB4N0YsMHhBQiwweDAwLDB4QTAsCi0gICAgMHhFMiwweDMwLDB4QzIsMHgzMCwweDFCLDB4MkYs
MHgxQiwweEQ3LDB4MDMsMHgzOSwweEMyLDB4MzAsMHg3RiwweEYzLDB4QUIsMHgyRCwKLSAgICAw
eDAyLDB4MzksMHhBMiwweDMwLDB4RkYsMHhEQSwweEUwLDB4QTAsMHgwMywweDM5LDB4QzIsMHgz
MCwweDdGLDB4NkUsMHhFQiwweERELAotICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhCRiwweDFG
LDB4M0YsMHhBRiwweDAzLDB4MzksMHhDMiwweDI4LDB4RkUsMHhGQiwweEY0LDB4NUYsCi0gICAg
MHhFMywweDMwLDB4QTIsMHgyOCwweEJBLDB4RjIsMHhENywweEI1LDB4MDMsMHgzMSwweEExLDB4
MjgsMHhGRSwweDdDLDB4RUIsMHhFQSwKLSAgICAweDAzLDB4MzEsMHhBMSwweDI4LDB4QTksMHhC
RiwweDJGLDB4QUEsMHg0NCwweDQxLDB4RTIsMHgzMCwweEFCLDB4MEQsMHgyRCwweEFELAotICAg
IDB4NDQsMHg0MSwweDAzLDB4MzksMHg1RSwweDVDLDB4NzgsMHgzRSwweDg1LDB4NDksMHgwMyww
eDM5LDB4NUQsMHhFRCwweEE3LDB4OEUsCi0gICAgMHg0NCwweDQxLDB4RTIsMHgzMCwweDU1LDB4
NUYsMHg3OCwweEU4LDB4NDQsMHg0MSwweEUzLDB4MzAsMHg1NywweEZGLDB4RUIsMHgwQiwKLSAg
ICAweDIzLDB4MzksMHhFMywweDMwLDB4RDUsMHhFNywweEEzLDB4ODgsMHg0MywweDQxLDB4MDMs
MHgzOSwweEZFLDB4QUIsMHhBRiwweEU3LAotICAgIDB4NDMsMHg0MSwweDAzLDB4MzksMHhBMiww
eDAyLDB4MEIsMHgwRCwweDY0LDB4NDksMHgwMiwweDM5LDB4RDcsMHg5NywweEEzLDB4RUYsCi0g
ICAgMHhDNSwweDUxLDB4MjMsMHg0MSwweEQ1LDB4QUYsMHgyRiwweDJCLDB4MDYsMHg1QSwweDY0
LDB4NTEsMHhCNSwweDhGLDB4QUUsMHgwMywKLSAgICAweDY3LDB4NkEsMHgwNiwweDVBLDB4QjUs
MHhCRiwweEZCLDB4QkQsMHg2NywweDZBLDB4MjcsMHg2MiwweDI4LDB4MDgsMHg4OCwweDJGLAot
ICAgIDB4QTksMHg2QSwweDQ3LDB4NkEsMHhGQSwweEI2LDB4M0YsMHhBRiwweEM5LDB4NzIsMHg2
NywweDZBLDB4OEQsMHhCNywweEVFLDB4OEIsCi0gICAgMHhDOSwweDdBLDB4NjgsMHg2QSwweDFG
LDB4RUIsMHg4QSwweDJFLDB4QzksMHg3MiwweDY4LDB4NzIsMHhFQSwweEFGLDB4NEEsMHhBQSwK
LSAgICAweEVBLDB4N0EsMHg2OCwweDcyLDB4MkEsMHgwMiwweDJCLDB4RDcsMHhFOSwweDdBLDB4
QTksMHg3QSwweEI3LDB4RkQsMHhFRCwweDI5LAotICAgIDB4MEEsMHg3QiwweDg4LDB4NzIsMHhE
RiwweDVGLDB4RkUsMHhBOCwweDJBLDB4ODMsMHhBOCwweDcyLDB4RkYsMHgzNSwweERELDB4RkYs
Ci0gICAgMHgwQSwweDgzLDB4QTksMHg3MiwweDJBLDB4MkEsMHhBQiwweERFLDB4MEEsMHg4Myww
eEM5LDB4N0EsMHhCNywweEIwLDB4ODAsMHg4RCwKLSAgICAweDJCLDB4ODMsMHhDOSwweDdBLDB4
N0UsMHg2RCwweDVDLDB4RkIsMHgwQSwweDgzLDB4QTksMHg3MiwweEFCLDB4REIsMHhERSwweDJB
LAotICAgIDB4MEEsMHg4MywweEE4LDB4N0EsMHg0QSwweEY5LDB4QkYsMHhGOCwweDA5LDB4N0Is
MHhBOSwweDdBLDB4ODIsMHhBQSwweDJBLDB4OUUsCi0gICAgMHgyQSwweDgzLDB4QzksMHg3QSww
eDVGLDB4QTgsMHhBMiwweEFCLDB4MkEsMHg4MywweEM5LDB4N0EsMHg3NSwweEQ3LDB4QUEsMHhB
QywKLSAgICAweDJCLDB4ODMsMHhFOSwweDdBLDB4OUIsMHhBNiwweEZGLDB4MjIsMHgyQSwweDgz
LDB4QzksMHg3QSwweEU4LDB4RUUsMHg3QSwweDYyLAotICAgIDB4MEEsMHg4MywweEM5LDB4N0Es
MHgwOCwweEUyLDB4MEQsMHhBRiwweDRCLDB4OEIsMHhDOSwweDdBLDB4MDIsMHhERCwweDdFLDB4
NzYsCi0gICAgMHhBQywweDlCLDB4MEEsMHg3QiwweDJBLDB4QkQsMHg3NSwweEQ1LDB4MkQsMHhB
NCwweDBBLDB4ODMsMHgwMiwweEFGLDB4RkYsMHg1RCwKLSAgICAweDZFLDB4QUMsMHg0QiwweDhC
LDB4MDIsMHgwQSwweEJELDB4RjUsMHg4RSwweEFDLDB4QUMsMHg5MywweDIwLDB4MDAsMHhBQSww
eEZELAotICAgIDB4OEYsMHhCNCwweDJELDB4QTQsMHhBOCwweDJBLDB4MkIsMHgwOSwweEFGLDB4
QjQsMHg2RSwweEFDLDB4RjcsMHhCQSwweEI4LDB4QUIsCi0gICAgMHhGMCwweEI0LDB4OEYsMHhC
NCwweERCLDB4RjcsMHhENywweEZELDB4QUYsMHhCNCwweDhGLDB4QjQsMHgyMCwweDg4LDB4MEUs
MHgwMiwKLSAgICAweDQ0LDB4NDEsMHhFMiwweDQwLDB4RkQsMHhCRCwweEY3LDB4REYsMHgyMyww
eDQ5LDB4QzIsMHgzOCwweEFCLDB4QTcsMHhFQSwweDhBLAotICAgIDB4NDMsMHg0OSwweEMyLDB4
MzgsMHhGQiwweEY3LDB4OUUsMHhFMywweDAzLDB4NDEsMHhDMiwweDM4LDB4NzgsMHg2QSwweENB
LDB4Q0MsCi0gICAgMHgyMiwweDM5LDB4QzIsMHgzOCwweERGLDB4NzksMHhGRiwweEQ3LDB4RTIs
MHgzOCwweEMyLDB4MzgsMHgxRiwweEFGLDB4MzYsMHhCMCwKLSAgICAweDAzLDB4NDEsMHhDMiww
eDM4LDB4Q0IsMHg5NiwweDUyLDB4N0YsMHgwMywweDQxLDB4QzIsMHgzOCwweDBGLDB4MkUsMHhF
QSwweEVFLAotICAgIDB4MDMsMHg0MSwweEExLDB4MzAsMHgzNiwweEJFLDB4QUIsMHhBMiwweDAy
LDB4NDEsMHhDMiwweDM4LDB4MzgsMHhGOCwweEVCLDB4RUEsCi0gICAgMHgyMiwweDM5LDB4QzIs
MHgzOCwweEY3LDB4RjYsMHhGQywweEZBLDB4MDIsMHgzOSwweEMyLDB4MzgsMHg5NiwweERFLDB4
RDQsMHhCRSwKLSAgICAweDAyLDB4NDEsMHhDMiwweDM4LDB4QTYsMHgyNSwweDhBLDB4QUEsMHgw
MywweDQxLDB4QzIsMHgzOCwweEE3LDB4QjcsMHhGNywweEJGLAotICAgIDB4MDMsMHg0MSwweEMy
LDB4MzgsMHhBMiwweDYwLDB4NkUsMHhGQSwweDAzLDB4NDEsMHhBMSwweDMwLDB4OUUsMHhGQiww
eEUyLDB4RUEsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzOCwweERCLDB4MjcsMHgwMywweEJGLDB4
MjMsMHgzOSwweEMyLDB4MzgsMHhGRSwweDVGLDB4RjcsMHhGRCwKLSAgICAweDAzLDB4NDEsMHhF
MiwweDM4LDB4OUEsMHhCNSwweEE5LDB4NDcsMHgwMywweDQxLDB4QzIsMHgzOCwweENGLDB4RUYs
MHg4QSwweDhGLAotICAgIDB4RTIsMHgzOCwweEMyLDB4MzAsMHg4OCwweDJFLDB4MUEsMHgyRSww
eDAzLDB4NDEsMHhDMiwweDM4LDB4MkYsMHhCNSwweERFLDB4RUYsCi0gICAgMHhFMiwweDQwLDB4
QTIsMHgzOCwweDAwLDB4QjgsMHhGQSwweEJFLDB4NjYsMHg3MiwweDIzLDB4NDksMHgyRCwweDJE
LDB4MkQsMHgyRCwKLSAgICAweDY2LDB4NzIsMHgwNSwweDYyLDB4RjAsMHg0MiwweDRBLDB4RTgs
MHgyNiwweDZBLDB4MDYsMHg2MiwweDU0LDB4NUUsMHhGRSwweDgwLAotICAgIDB4NDYsMHg2QSww
eDg0LDB4NTEsMHhGRSwweDU4LDB4RkEsMHhGQSwweDY0LDB4NDksMHhFMiwweDM4LDB4REUsMHg1
QSwweDdFLDB4NTgsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDAzLDB4MDIsMHhCOCwweEQ4
LDB4MjMsMHgzOSwweEMyLDB4MzAsMHhCRiwweEY4LDB4N0MsMHg1QSwKLSAgICAweDAzLDB4Mzks
MHhDMiwweDMwLDB4NUEsMHg1RiwweDU1LDB4RDUsMHgwMywweDM5LDB4QzIsMHgzMCwweEVELDB4
QUYsMHhFQiwweEVCLAotICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHgzNiwweEJGLDB4RkIsMHhC
RiwweDAzLDB4MzksMHhFMiwweDMwLDB4RUYsMHhGMCwweEJELDB4OTcsCi0gICAgMHgwMywweDM5
LDB4QTEsMHgyOCwweEEyLDB4QUEsMHhCQywweDc4LDB4MjMsMHgzOSwweEMyLDB4MzAsMHhFMiww
eEEyLDB4RkYsMHg2RCwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QUEsMHgyMiwweDJBLDB4
RkQsMHgyMywweDM5LDB4QzIsMHgzMCwweDhBLDB4MDAsMHgyQSwweDJCLAotICAgIDB4NDQsMHg0
MSwweDAzLDB4MzksMHhBMiwweEVELDB4N0UsMHhCMywweDI0LDB4MzksMHhFMiwweDM4LDB4RjIs
MHgyMiwweEIwLDB4ODgsCi0gICAgMHg0NCwweDQxLDB4RTMsMHgzOCwweEEwLDB4QTAsMHhCQiww
eEY2LDB4NDQsMHg0MSwweEUzLDB4MzgsMHg2QSwweDZBLDB4MkEsMHhCQiwKLSAgICAweDIzLDB4
MzksMHhFMywweDM4LDB4RjUsMHhFNSwweDdGLDB4QTIsMHgwMywweDM5LDB4QzIsMHgzMCwweDBF
LDB4MkEsMHg4MCwweDZBLAotICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHgyRCwweDJFLDB4QUYs
MHgzRiwweDQ0LDB4NDEsMHhFMywweDMwLDB4RTcsMHhGRiwweEZELDB4QTUsCi0gICAgMHgyNCww
eDM5LDB4QzIsMHgzMCwweEZGLDB4N0YsMHhGRiwweEFBLDB4MDMsMHgzOSwweEUzLDB4MzAsMHgw
MywweDA5LDB4ODEsMHgwQiwKLSAgICAweDQ0LDB4NDEsMHhDMiwweDMwLDB4MEEsMHhBRiwweEZF
LDB4N0YsMHg0NCwweDQxLDB4MDQsMHgzOSwweDVBLDB4MzIsMHhDRiwweEFGLAotICAgIDB4NDQs
MHg0MSwweEUzLDB4MzgsMHg1NiwweDdFLDB4RTgsMHhFRSwweDIzLDB4MzksMHhFMywweDMwLDB4
N0YsMHhENywweEZELDB4QUEsCi0gICAgMHgwMywweDM5LDB4QzIsMHgyOCwweDJCLDB4MDgsMHg3
MCwweEEwLDB4MjMsMHgzOSwweEUzLDB4MzAsMHg1RiwweDdFLDB4NkMsMHhBRCwKLSAgICAweDAz
LDB4MzEsMHhDMywweDMwLDB4QkIsMHgzRSwweDIyLDB4QTAsMHgyMywweDM5LDB4RTMsMHgzMCww
eEJGLDB4M0YsMHhERiwweEFGLAotICAgIDB4MjQsMHgzOSwweDAzLDB4MzEsMHg1NSwweDVDLDB4
RkUsMHg4QiwweDIzLDB4MzEsMHhFMywweDMwLDB4NjcsMHhDRCwweEVCLDB4RTAsCi0gICAgMHgw
NCwweDMxLDB4RTMsMHgzMCwweDdELDB4QjcsMHgyOCwweEQ2LDB4MDMsMHgzMSwweEMyLDB4Mjgs
MHg1QSwweEY4LDB4RUMsMHhBRSwKLSAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4NTcsMHg1Niww
eDVBLDB4MEEsMHhFMywweDMwLDB4QzIsMHgyOCwweEFGLDB4MEQsMHhFRCwweDI4LAotICAgIDB4
MDMsMHgzMSwweEMyLDB4MjgsMHg5NywweERDLDB4RUYsMHhGQSwweEUzLDB4MzAsMHhDMiwweDMw
LDB4RjAsMHg3MiwweEFBLDB4RTMsCi0gICAgMHhFMywweDMwLDB4QzIsMHgyOCwweEI0LDB4Njcs
MHhGRiwweDJCLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhGRiwweEZCLDB4RUIsMHhFOCwKLSAgICAw
eEUyLDB4MjgsMHhBMiwweDIwLDB4RjcsMHhFQiwweEVBLDB4QUEsMHg4MiwweDI4LDB4QTIsMHgy
MCwweERGLDB4RkQsMHhGRCwweDVGLAotICAgIDB4QzIsMHgyOCwweEEyLDB4MjAsMHg1RCwweEE1
LDB4RDUsMHg1QywweEMyLDB4MjgsMHg4MSwweDIwLDB4NkUsMHhGMiwweDY4LDB4QTcsCi0gICAg
MHhDMiwweDI4LDB4ODEsMHgyMCwweERGLDB4RDcsMHg3RSwweDgwLDB4QzIsMHgyOCwweDgxLDB4
MjAsMHgyMywweEJGLDB4NUYsMHg3RiwKLSAgICAweDAzLDB4MzksMHg4MSwweDIwLDB4MEEsMHgy
MiwweEFELDB4QjUsMHgyNCwweDM5LDB4QzIsMHgzMCwweEVDLDB4QUEsMHgyRiwweEJELAotICAg
IDB4MjQsMHgzOSwweEMyLDB4MzAsMHg1RCwweDc1LDB4RUUsMHg2OCwweEUyLDB4MzAsMHg4Miww
eDI4LDB4N0YsMHhGRSwweEFBLDB4MDAsCi0gICAgMHhFMywweDM4LDB4QzIsMHgyOCwweDJCLDB4
QTksMHgwQiwweEFCLDB4MDMsMHgzOSwweEUyLDB4MzAsMHg5RSwweEFFLDB4QkYsMHg1RCwKLSAg
ICAweEUyLDB4MzAsMHhDMiwweDMwLDB4NTcsMHhGRCwweEFGLDB4OUEsMHgwMiwweDM5LDB4QzIs
MHgzMCwweDNELDB4QUQsMHhBMywweEJGLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGQSww
eDVFLDB4RUYsMHhBRSwweEUzLDB4MzAsMHhDMiwweDMwLDB4NTcsMHg5RiwweEQ1LDB4NTcsCi0g
ICAgMHgyMywweDM5LDB4QzIsMHgzMCwweEZGLDB4NzcsMHg1RCwweEI1LDB4MDMsMHgzMSwweEEy
LDB4MjgsMHhGMiwweDdBLDB4RjIsMHhGOCwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4OUYs
MHhCNSwweDBGLDB4OEEsMHgwMywweDMxLDB4QzIsMHgzMCwweDgzLDB4QUEsMHg4MiwweDBCLAot
ICAgIDB4MDMsMHgzOSwweEUyLDB4MzAsMHg1QywweDk5LDB4QjYsMHhENywweDIzLDB4MzksMHhF
MiwweDMwLDB4QjUsMHhGNywweDg3LDB4QUIsCi0gICAgMHg0MywweDM5LDB4RTIsMHgzMCwweDJB
LDB4QkUsMHhCRSwweEZBLDB4NjQsMHg0MSwweDAzLDB4MzksMHg4MCwweEZCLDB4N0YsMHg3QiwK
LSAgICAweDQ0LDB4NDEsMHhFMiwweDMwLDB4RTgsMHhBRSwweEZFLDB4RkYsMHg0NCwweDM5LDB4
RTIsMHgzMCwweDhGLDB4RkUsMHgyOSwweEI3LAotICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHgw
MCwweDg4LDB4NzAsMHhBQSwweDIzLDB4MzksMHhFMiwweDMwLDB4RTcsMHhENCwweEE2LDB4MEUs
Ci0gICAgMHg2NCwweDQxLDB4MDMsMHgzOSwweEYxLDB4N0IsMHg3NSwweDU1LDB4NjQsMHg0OSww
eEUyLDB4MzgsMHgyRCwweEFGLDB4QTksMHgyRiwKLSAgICAweEU2LDB4NTksMHg2NCwweDQ5LDB4
QTksMHhBRCwweENGLDB4MjksMHgyNiwweDYyLDB4QzUsMHg1MSwweEQ5LDB4RjksMHhFMiwweEZB
LAotICAgIDB4NDcsMHg2MiwweEU2LDB4NTksMHgzRiwweEI3LDB4OTcsMHhCNSwweDY4LDB4NkEs
MHhFNiwweDU5LDB4MjIsMHgwMywweEI3LDB4QUUsCi0gICAgMHhBOSwweDcyLDB4NDcsMHg2QSww
eEI1LDB4OUYsMHhCRiwweDJELDB4QzksMHg3MiwweDY4LDB4NkEsMHhBQSwweEZBLDB4RUEsMHg2
QiwKLSAgICAweEM5LDB4NzIsMHg4OCwweDZBLDB4QjUsMHhEQSwweEJBLDB4NEUsMHhDOSwweDdB
LDB4ODgsMHg2QSwweEVFLDB4RUIsMHgwRiwweDM1LAotICAgIDB4QzksMHg3QSwweDg4LDB4NzIs
MHhENywweEVELDB4RTIsMHgzMCwweEVBLDB4ODIsMHg4OCwweDcyLDB4MkQsMHhBNywweEI3LDB4
RjcsCi0gICAgMHgwQSwweDgzLDB4QTksMHg3MiwweDBBLDB4QUYsMHhCNywweEZELDB4RTksMHg3
QSwweEE5LDB4NzIsMHhGMiwweDQwLDB4NkEsMHhGRCwKLSAgICAweEM5LDB4N0EsMHg4OCwweDcy
LDB4MzgsMHgzQSwweDhCLDB4QzMsMHgwQSwweDgzLDB4QzksMHg3QSwweEE3LDB4RTcsMHg2Niww
eEQ1LAotICAgIDB4RUEsMHg4MiwweDg4LDB4NzIsMHgwOCwweEFBLDB4NUUsMHhBQiwweDJCLDB4
OEIsMHhDOSwweDdBLDB4QkYsMHhBRiwweDM1LDB4MkQsCi0gICAgMHgyQSwweDgzLDB4RUEsMHg3
QSwweDU4LDB4NUUsMHg1OCwweDU3LDB4MEEsMHg4MywweEM5LDB4N0EsMHg1NSwweDVCLDB4OTAs
MHhGMCwKLSAgICAweDBBLDB4ODMsMHhBOSwweDcyLDB4MDIsMHhCRSwweDM3LDB4QjUsMHgyQiww
eDgzLDB4QzksMHg3QSwweEEyLDB4QTgsMHhFMiwweDVFLAotICAgIDB4MEEsMHg4MywweEVBLDB4
N0EsMHhDMywweDU3LDB4NTcsMHg3RSwweDJCLDB4ODMsMHhFQSwweDgyLDB4ODMsMHgzRCwweDA5
LDB4RUIsCi0gICAgMHgyQSwweDgzLDB4QzksMHg3QSwweDdCLDB4RkEsMHhGQywweDZBLDB4MEEs
MHg4MywweEM5LDB4N0EsMHhGQywweENBLDB4QUEsMHhFOCwKLSAgICAweDJBLDB4ODMsMHhFQSww
eDdBLDB4OUQsMHhCNSwweDVGLDB4NUYsMHgyQSwweDgzLDB4RUEsMHg3QSwweEFBLDB4QjcsMHg2
OSwweDdGLAotICAgIDB4NkIsMHg4QiwweEU5LDB4N0EsMHgwQiwweDJGLDB4RjUsMHg1RiwweEFD
LDB4OTMsMHhFOSwweDdBLDB4MDAsMHgyQSwweEFELDB4NTUsCi0gICAgMHg0RSwweEFDLDB4NEIs
MHg4QiwweDBBLDB4QUIsMHhGRCwweDU1LDB4NkUsMHhBQywweDhDLDB4OTMsMHgwMCwweDBBLDB4
MkYsMHhENSwKLSAgICAweDhGLDB4QjQsMHhFRCwweDlCLDB4MDAsMHgwMCwweDAyLDB4QkQsMHhG
MCwweEJDLDB4NkYsMHhBQywweEFBLDB4OEIsMHhFQiwweEZELAotICAgIDB4MjMsMHg0MSwweEUy
LDB4NDAsMHhGRCwweERCLDB4MEIsMHg4MCwweDIzLDB4NDksMHhFMiwweDQwLDB4QTIsMHg1RSww
eDU4LDB4NTAsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDAwLDB4QTIsMHhFRSwweDBBLDB4
MDMsMHg0MSwweEExLDB4MzAsMHhGOCwweDYyLDB4QTAsMHhCMCwKLSAgICAweDAzLDB4NDEsMHhD
MiwweDM4LDB4OTUsMHgyRCwweEVCLDB4RkUsMHgyMywweDQxLDB4RTIsMHgzOCwweEQ3LDB4RjUs
MHg2NSwweEJCLAotICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHhENywweDM1LDB4MUIsMHhDMSww
eDIzLDB4NDEsMHhFMiwweDM4LDB4NzcsMHg2QSwweEVGLDB4NkYsCi0gICAgMHgwMywweDQxLDB4
QzIsMHgzOCwweEEzLDB4QkYsMHhGQiwweDdBLDB4MDIsMHgzOSwweEMyLDB4MzgsMHhBQSwweEJB
LDB4MjAsMHhCRCwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4NzgsMHhENCwweDdFLDB4RkUs
MHhFMiwweDM4LDB4QzIsMHgzOCwweDNFLDB4QkQsMHgzMywweDZFLAotICAgIDB4MDMsMHg0MSww
eEMyLDB4MzgsMHhBQSwweEEyLDB4ODIsMHhCRCwweEUyLDB4MzgsMHhDMiwweDM4LDB4Q0EsMHhD
MCwweDAwLDB4MDIsCi0gICAgMHgyMywweDQxLDB4QzIsMHgzOCwweEZGLDB4RkIsMHg1RiwweDc1
LDB4MDIsMHgzOSwweEMyLDB4MzgsMHg1NSwweEY3LDB4QkYsMHg4RiwKLSAgICAweDAzLDB4NDEs
MHhDMiwweDM4LDB4RjQsMHg3QywweDdCLDB4QTIsMHgyMywweDM5LDB4QzIsMHgzOCwweEI1LDB4
RjUsMHhGRiwweEZGLAotICAgIDB4RTIsMHgzOCwweEExLDB4MzAsMHgyMCwweDA0LDB4OEEsMHgy
OCwweDAzLDB4MzksMHhDMiwweDM4LDB4RkYsMHgyRiwweDBGLDB4Q0QsCi0gICAgMHgwMiwweDQx
LDB4RTMsMHgzOCwweEQ3LDB4NTUsMHg1QiwweDVELDB4MDMsMHg0MSwweEEyLDB4MzAsMHg4RCww
eEFGLDB4N0UsMHhFQiwKLSAgICAweEUzLDB4NDAsMHhBMiwweDM4LDB4QkYsMHhBOCwweDIyLDB4
MEQsMHg2NywweDcyLDB4MjMsMHg0OSwweDJELDB4MkQsMHgyRCwweDA5LAotICAgIDB4NjYsMHg3
MiwweDI2LDB4NkEsMHg1NSwweEU4LDB4ODAsMHgxMiwweDY2LDB4NzIsMHgwNiwweDYyLDB4RkEs
MHhEQSwweEI4LDB4RkEsCi0gICAgMHg0NiwweDZBLDB4NjQsMHg0OSwweEY4LDB4N0EsMHg3RSww
eERBLDB4NjQsMHg0OSwweEUyLDB4MzgsMHg1QywweDc2LDB4N0UsMHg1RiwKLSAgICAweDIzLDB4
MzksMHhFMiwweDMwLDB4RDUsMHg5NywweEZBLDB4N0YsMHgyMywweDM5LDB4QTIsMHgzMCwweEJB
LDB4QTgsMHhBRSwweDdGLAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHg1NywweDYyLDB4QTIs
MHgwQiwweDAzLDB4MzEsMHhBMiwweDMwLDB4QUIsMHgyQSwweDAyLDB4MkEsCi0gICAgMHgwMyww
eDMxLDB4QzIsMHgzMCwweEZFLDB4RTcsMHg5NiwweEZFLDB4MjQsMHgzOSwweEUzLDB4MzAsMHhG
QiwweEJGLDB4QkQsMHhGRCwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4NzgsMHg2NiwweEQ0
LDB4RkUsMHgwMywweDM5LDB4QzIsMHgzMCwweDI3LDB4MkIsMHgwRiwweDhBLAotICAgIDB4MDMs
MHgzOSwweEMyLDB4MzAsMHhDQSwweDZCLDB4QUEsMHg4MCwweDAzLDB4MzksMHhDMiwweDMwLDB4
MjksMHhBRiwweEJBLDB4MkEsCi0gICAgMHg0NCwweDQxLDB4RTIsMHgzMCwweDhCLDB4QzcsMHhE
NSwweDU1LDB4MjMsMHgzOSwweEUzLDB4MzgsMHhDQiwweEZFLDB4QkMsMHhGQywKLSAgICAweDIz
LDB4MzksMHhFMywweDM4LDB4RkUsMHhBNywweEVCLDB4QkEsMHgwMywweDM5LDB4RTMsMHgzMCww
eDAwLDB4QTIsMHgyMiwweDIwLAotICAgIDB4MjQsMHgzOSwweEUzLDB4MzgsMHgzQSwweDhBLDB4
REEsMHg1OCwweDQ0LDB4NDEsMHhFMywweDMwLDB4NzQsMHg3RiwweDVGLDB4RkIsCi0gICAgMHgy
MywweDM5LDB4QzIsMHgzMCwweDJGLDB4RkYsMHhGRiwweEZFLDB4MjQsMHg0MSwweEUyLDB4MzAs
MHgyNywweEUxLDB4RkYsMHhCRiwKLSAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4NTMsMHg3Riww
eEQ1LDB4RjcsMHg0NCwweDQxLDB4MDQsMHgzOSwweDU1LDB4NUYsMHhFOCwweEFBLAotICAgIDB4
MjQsMHgzOSwweEUzLDB4MzgsMHg2QiwweDgyLDB4RjgsMHhCQywweDIzLDB4MzksMHhFMywweDM4
LDB4QUIsMHhGNywweEJGLDB4OEYsCi0gICAgMHgyMywweDM5LDB4QzIsMHgzMCwweDhBLDB4M0Us
MHgyNiwweEFBLDB4MjMsMHgzOSwweEUzLDB4MzgsMHhBQSwweEFBLDB4RkUsMHg1NiwKLSAgICAw
eDI0LDB4MzksMHgwMywweDM5LDB4NTUsMHhCRSwweDNCLDB4OTUsMHgyNCwweDM5LDB4RTIsMHgz
MCwweEFBLDB4MjAsMHgyQywweDlFLAotICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHg1QSwweEQ4
LDB4RkUsMHhCRiwweDI0LDB4MzksMHhFMywweDMwLDB4REYsMHg3RiwweERGLDB4NjAsCi0gICAg
MHgwMywweDMxLDB4QzIsMHgzMCwweDAyLDB4MkEsMHhBQSwweEY3LDB4MjQsMHgzMSwweEMyLDB4
MzAsMHhCOCwweEJBLDB4QkQsMHhCRiwKLSAgICAweDIzLDB4MzksMHhDMiwweDI4LDB4RkIsMHhC
RiwweEFBLDB4QTMsMHgyMywweDMxLDB4RTMsMHgzMCwweEQ1LDB4NzUsMHhERSwweEJFLAotICAg
IDB4MDMsMHgzMSwweEMyLDB4MjgsMHhCRiwweEJGLDB4QUIsMHhBQSwweDAzLDB4MzEsMHhDMiww
eDI4LDB4OUUsMHhERiwweEU4LDB4QTgsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEFBLDB4
MkQsMHhFQiwweEZBLDB4MDQsMHgzMSwweEEyLDB4MjgsMHhFMiwweEVDLDB4NkYsMHhFRiwKLSAg
ICAweEUzLDB4MzAsMHhDMiwweDI4LDB4QUYsMHhCQSwweDJELDB4OTUsMHhFMywweDMwLDB4QzIs
MHgyOCwweDZFLDB4RDcsMHg3NiwweEZDLAotICAgIDB4RTIsMHgzMCwweEMyLDB4MjgsMHg3Riww
eDY3LDB4NzcsMHg3RCwweEUzLDB4MzAsMHhBMiwweDI4LDB4OEYsMHg4MiwweEZCLDB4OUYsCi0g
ICAgMHhFMiwweDI4LDB4ODIsMHgyMCwweEZDLDB4N0YsMHhCRiwweEVFLDB4QzIsMHgyOCwweDgy
LDB4MjAsMHhFRiwweEJGLDB4QUEsMHhBMiwKLSAgICAweDAzLDB4MjksMHhBMiwweDI4LDB4Rjks
MHhFRiwweEZELDB4REYsMHhDMiwweDI4LDB4ODEsMHgyMCwweDdFLDB4RkMsMHhGRiwweEVFLAot
ICAgIDB4QTIsMHgyOCwweDgxLDB4MjAsMHgyNywweDk1LDB4REYsMHg3QSwweEUzLDB4MzAsMHg4
MSwweDIwLDB4MDIsMHhBRiwweEZGLDB4NUQsCi0gICAgMHgyNCwweDM5LDB4ODEsMHgyMCwweDhB
LDB4RUIsMHhCOSwweEY1LDB4MDMsMHgzMSwweEEyLDB4MjgsMHhBQiwweDJBLDB4QUEsMHhEQiwK
LSAgICAweDIzLDB4MzksMHhFMiwweDMwLDB4RjUsMHgwRSwweEIyLDB4RkIsMHgyMywweDM5LDB4
QzIsMHgyOCwweDVBLDB4NjgsMHhFQSwweEJBLAotICAgIDB4MDMsMHgzMSwweEExLDB4MzAsMHhC
QSwweDgyLDB4ODIsMHhBQSwweDAyLDB4MzEsMHhDMiwweDI4LDB4QkQsMHhCRCwweDdELDB4RkUs
Ci0gICAgMHgwMiwweDM5LDB4QTEsMHgyOCwweEFBLDB4QTgsMHhGQSwweEU5LDB4MDMsMHgzOSww
eEMyLDB4MzAsMHhFRiwweDdBLDB4NTIsMHg1RiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4
MkQsMHgwNywweDBBLDB4MDIsMHgyNCwweDM5LDB4QzIsMHgzMCwweDdDLDB4QkEsMHhBQSwweEYy
LAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHhFQSwweDgwLDB4RkEsMHg5NiwweDI0LDB4Mzks
MHhDMiwweDI4LDB4QUYsMHhBNywweEE3LDB4MEYsCi0gICAgMHgwMywweDM5LDB4RTMsMHgzMCww
eDlGLDB4QkUsMHhCOCwweDcwLDB4MDMsMHgzOSwweEUzLDB4MzAsMHgwMCwweDBBLDB4MDMsMHhC
RiwKLSAgICAweDQ0LDB4NDEsMHgwMywweDM5LDB4NUYsMHhCRiwweDA4LDB4MzgsMHg2NSwweDQx
LDB4RTMsMHgzMCwweDZGLDB4RjYsMHg1RSwweDU0LAotICAgIDB4MDMsMHgzMSwweEMyLDB4Mjgs
MHhCMCwweEVBLDB4RjgsMHg1NywweDAzLDB4MzEsMHhDMiwweDMwLDB4QkYsMHhCRiwweERGLDB4
RjksCi0gICAgMHgyMywweDM5LDB4QzIsMHgyOCwweDJFLDB4QUUsMHg0QiwweDVGLDB4MDMsMHgz
MSwweEEyLDB4MjgsMHgwMCwweDhBLDB4QUIsMHhBNywKLSAgICAweDY0LDB4NDEsMHhDMiwweDMw
LDB4QkYsMHhCRiwweEJELDB4M0YsMHg4NSwweDQ5LDB4RTIsMHgzOCwweEI5LDB4MkYsMHhBMiww
eDAyLAotICAgIDB4MDcsMHg2MiwweDg1LDB4NDksMHhCRCwweEFGLDB4QUIsMHhCQiwweDQ3LDB4
NkEsMHhFNSwweDU5LDB4NUYsMHhGRiwweEI3LDB4QkYsCi0gICAgMHg0OCwweDZBLDB4QzYsMHg1
OSwweEJGLDB4MkYsMHgyNSwweDJGLDB4NjgsMHg2QSwweDI3LDB4NjIsMHgyOSwweDBFLDB4MjIs
MHgwMiwKLSAgICAweEE5LDB4NzIsMHg0NywweDYyLDB4QTcsMHhFRSwweEFBLDB4QUIsMHhBOCww
eDcyLDB4NjgsMHg2QSwweEZGLDB4MEYsMHhFNywweDlCLAotICAgIDB4QTksMHg3MiwweDY3LDB4
NkEsMHg4RSwweEJCLDB4OUEsMHgwOCwweEE5LDB4NzIsMHg4OCwweDZBLDB4MTYsMHgwRSwweDJF
LDB4NEEsCi0gICAgMHhDOSwweDdBLDB4ODgsMHg2QSwweEE4LDB4QkUsMHhFRiwweEZELDB4QTks
MHg3MiwweDY4LDB4NkEsMHg4QSwweEEwLDB4OUUsMHgyQSwKLSAgICAweEVBLDB4ODIsMHg2OCww
eDZBLDB4QUUsMHhFQiwweEVGLDB4NzMsMHhFOSwweDdBLDB4ODgsMHg3MiwweEZBLDB4Q0EsMHhE
QSwweEZELAotICAgIDB4QzksMHg3QSwweDg4LDB4NzIsMHgwQSwweDNGLDB4MkYsMHhBMywweDBB
LDB4ODMsMHg4OCwweDcyLDB4MzAsMHhBMiwweDZBLDB4REYsCi0gICAgMHhFQSwweDdBLDB4ODgs
MHg3MiwweEE4LDB4QkIsMHhGQiwweDlFLDB4MEEsMHg4MywweEE4LDB4NzIsMHgyRiwweEFGLDB4
QUYsMHhENSwKLSAgICAweDBBLDB4ODMsMHhBOSwweDcyLDB4QTIsMHhCQSwweERGLDB4NUYsMHgy
QiwweDgzLDB4QzksMHg3QSwweEVBLDB4QkYsMHgxNSwweDVELAotICAgIDB4MEIsMHg4MywweENB
LDB4N0EsMHhERCwweEZGLDB4N0UsMHhBRiwweDBBLDB4ODMsMHhDOSwweDdBLDB4NkMsMHhGRiww
eEZGLDB4OEEsCi0gICAgMHgyQiwweDgzLDB4QzksMHg3QSwweDNGLDB4RUQsMHhCQiwweDcxLDB4
MEEsMHg4MywweEE5LDB4N0EsMHgyOCwweEJFLDB4MkIsMHg2RCwKLSAgICAweDRCLDB4OEIsMHhD
QSwweDdBLDB4MkEsMHgyQSwweEVCLDB4RjUsMHgyQiwweDhCLDB4QzksMHg3QSwweDYwLDB4NzYs
MHhGMiwweEZFLAotICAgIDB4MEEsMHg4MywweEM5LDB4N0EsMHg4OCwweEVFLDB4QUYsMHg5QSww
eDRCLDB4OEIsMHhFOSwweDdBLDB4N0QsMHhGRCwweEIzLDB4MkEsCi0gICAgMHgyQSwweDgzLDB4
QzksMHg3QSwweEJFLDB4NzcsMHhGQywweEQ4LDB4MEEsMHg4MywweEE4LDB4NzIsMHgzRiwweDJE
LDB4OEIsMHhBRSwKLSAgICAweDRCLDB4OEIsMHhFQSwweDdBLDB4MEIsMHhBNywweEU3LDB4QkYs
MHg4QywweDkzLDB4RTksMHg3QSwweDJBLDB4QkIsMHhBRiwweDdFLAotICAgIDB4Q0QsMHg5Qiww
eDBBLDB4ODMsMHgwMiwweEFBLDB4QkYsMHg3RCwweDhGLDB4QjQsMHg0QiwweDhCLDB4MkEsMHhB
QiwweEZELDB4NTUsCi0gICAgMHgwMywweDQxLDB4MjMsMHgzOSwweDgyLDB4MDAsMHgwOCwweDIz
LDB4MjMsMHg0MSwweEEyLDB4MzgsMHhFOCwweDdBLDB4RjgsMHhGRSwKLSAgICAweDAyLDB4NDEs
MHhDMiwweDM4LDB4QkEsMHhCOSwweDY5LDB4RUEsMHhFMiwweDM4LDB4QzIsMHgzOCwweEY4LDB4
QkIsMHgwQiwweDBGLAotICAgIDB4MDIsMHg0MSwweEEyLDB4MzAsMHhDQSwweEFCLDB4ODMsMHg4
MiwweDIzLDB4NDEsMHhFMiwweDM4LDB4RUIsMHg2RCwweEZDLDB4RkIsCi0gICAgMHgyMywweDQx
LDB4RTIsMHgzOCwweDY1LDB4RDUsMHg1NywweDk1LDB4MjMsMHg0MSwweEMyLDB4MzgsMHhGQiww
eDNCLDB4REYsMHg1QiwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4RkMsMHg1OCwweDZFLDB4
RkYsMHgwMiwweDM5LDB4QzIsMHgzMCwweEFFLDB4M0IsMHhGQiwweERFLAotICAgIDB4MDMsMHg0
MSwweEMyLDB4MzgsMHhERSwweEI4LDB4MjAsMHgzQiwweDIzLDB4NDEsMHhDMiwweDM4LDB4NTYs
MHhERiwweEZFLDB4RkMsCi0gICAgMHgwMywweDQxLDB4QTIsMHgzMCwweEFCLDB4RUIsMHhFNyww
eEIwLDB4MDMsMHg0MSwweEUyLDB4MzgsMHhFMSwweDA5LDB4OUQsMHg1NSwKLSAgICAweDAzLDB4
NDEsMHhDMiwweDM4LDB4NzcsMHhDNCwweDhBLDB4OEEsMHgwMywweDQxLDB4QzIsMHgzOCwweDRE
LDB4NTksMHg1QiwweEUyLAotICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHhGQywweERGLDB4NTcs
MHg1NiwweDAzLDB4MzksMHhDMiwweDM4LDB4QUUsMHhGMCwweDVBLDB4NUQsCi0gICAgMHgwMyww
eDM5LDB4QzEsMHgzMCwweEVGLDB4QkQsMHhCRSwweDhCLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhC
NSwweEJGLDB4NUYsMHhDRSwKLSAgICAweDAzLDB4MzksMHhDMiwweDM4LDB4RkEsMHg4QSwweDdG
LDB4RjcsMHhFMywweDM4LDB4QzIsMHgzOCwweDZDLDB4N0UsMHg3RiwweEY3LAotICAgIDB4MDMs
MHg0MSwweEExLDB4MzAsMHgyNSwweEFGLDB4QUIsMHhGRSwweDg4LDB4NzIsMHg2NCwweDQ5LDB4
MEQsMHgyRCwweDJELDB4MkQsCi0gICAgMHg4NywweDcyLDB4NDcsMHg2QSwweEI4LDB4M0EsMHhC
NiwweEYzLDB4NjYsMHg3MiwweEM0LDB4NTksMHhFMiwweDdBLDB4NzgsMHg3RSwKLSAgICAweEU1
LDB4NTksMHg0NCwweDQ5LDB4RjgsMHg3RSwweDVFLDB4N0EsMHg0MywweDQxLDB4RTIsMHgzOCww
eDVDLDB4N0UsMHhFRiwweDc4LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg2QSwweEEwLDB4
QTIsMHhCQSwweDAzLDB4MzksMHhBMiwweDMwLDB4N0EsMHhCQSwweEFBLDB4ODAsCi0gICAgMHgw
MywweDM5LDB4QzIsMHgzMCwweDg4LDB4RTIsMHg2MiwweDVBLDB4MDMsMHgzMSwweEMyLDB4MzAs
MHgyMywweDhBLDB4MkYsMHgyQSwKLSAgICAweDAzLDB4MzksMHhBMiwweDI4LDB4QUEsMHhCQSww
eDYwLDB4RTAsMHgwMywweDMxLDB4QzIsMHgyOCwweDJFLDB4QkQsMHg5NSwweDlELAotICAgIDB4
MDMsMHgzMSwweEMyLDB4MjgsMHhBQSwweDJDLDB4OUMsMHhGNiwweDAzLDB4MzEsMHhDMiwweDMw
LDB4RUUsMHhBQSwweEZBLDB4NjgsCi0gICAgMHgwMywweDMxLDB4RTIsMHgzMCwweEJGLDB4NUYs
MHg5NywweEU5LDB4MjMsMHgzMSwweEMyLDB4MjgsMHhFQSwweENBLDB4RkYsMHhGOCwKLSAgICAw
eDAzLDB4MzksMHhFMiwweDMwLDB4QkUsMHg2QiwweERFLDB4NTIsMHgwMywweDM5LDB4RTMsMHgz
MCwweDAwLDB4REUsMHgzRSwweEFBLAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHg0MiwweDgy
LDB4M0QsMHhGNywweDI0LDB4MzksMHhDMiwweDMwLDB4ODIsMHhBQSwweEFCLDB4RjcsCi0gICAg
MHgwMywweDM5LDB4RTMsMHgzMCwweEEwLDB4RjAsMHg0MiwweEYwLDB4MjQsMHgzOSwweEMyLDB4
MzAsMHg4QSwweEFCLDB4RkYsMHhERSwKLSAgICAweDAzLDB4MzksMHhFMywweDMwLDB4QjgsMHgy
OCwweEYyLDB4OTIsMHgyMywweDM5LDB4RTMsMHgzMCwweEJFLDB4QUUsMHhBRSwweEJGLAotICAg
IDB4NDQsMHg0MSwweDAzLDB4MzksMHhEQiwweDlGLDB4MDcsMHhBRiwweDQ0LDB4NDEsMHgwMyww
eDM5LDB4RTcsMHhENiwweEJFLDB4MUUsCi0gICAgMHg0NCwweDQxLDB4MDQsMHgzOSwweDc3LDB4
MUQsMHhGQiwweEEwLDB4NDQsMHg0MSwweDAzLDB4MzksMHhCNSwweDZGLDB4RkUsMHhEQSwKLSAg
ICAweDI0LDB4NDEsMHgwMywweDM5LDB4NTUsMHg5NSwweEJGLDB4QkMsMHgyNCwweDM5LDB4QzIs
MHgzMCwweEJCLDB4QTIsMHg4MCwweDIyLAotICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHhGRiww
eDVGLDB4NUEsMHhGOCwweDAzLDB4MzksMHhDMiwweDMwLDB4MkEsMHg4RiwweEY3LDB4QkEsCi0g
ICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweDhGLDB4QTksMHhGRiwweEJGLDB4MjQsMHgzOSwweEUz
LDB4MzAsMHg2MiwweEMwLDB4REUsMHhGRSwKLSAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4RkQs
MHhBQSwweEFBLDB4RUIsMHgwMywweDMxLDB4QzIsMHgzMCwweEFGLDB4MEYsMHgyOCwweEEwLAot
ICAgIDB4MDMsMHgzMSwweEEyLDB4MzAsMHhBMiwweEU4LDB4MjIsMHgyQSwweDI0LDB4MzksMHhF
MywweDMwLDB4MkUsMHgwRiwweDlGLDB4REUsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweDZG
LDB4RUEsMHhGMiwweEVCLDB4MDMsMHgzMSwweEUzLDB4MzAsMHg2MiwweDdGLDB4NUYsMHhCMiwK
LSAgICAweDIzLDB4MzksMHhFMywweDMwLDB4RDUsMHg1NSwweEM1LDB4RjMsMHgyNCwweDM5LDB4
QzIsMHgzMCwweDc3LDB4N0YsMHg3QiwweEVBLAotICAgIDB4MDMsMHgzMSwweEMzLDB4MzAsMHhG
NSwweEVELDB4OEYsMHg4RCwweEUzLDB4MzAsMHhDMiwweDI4LDB4N0UsMHg3OCwweDc0LDB4NzAs
Ci0gICAgMHhFMywweDMwLDB4QzIsMHgyOCwweDU1LDB4RkIsMHhCQiwweEZGLDB4RTIsMHgyOCww
eDgyLDB4MjgsMHgyRSwweEFBLDB4MjgsMHgwMiwKLSAgICAweEUzLDB4MzAsMHhBMiwweDIwLDB4
QkYsMHhFRSwweEJDLDB4RjQsMHgwMywweDMxLDB4QzIsMHgyOCwweDdELDB4N0YsMHg1MywweERE
LAotICAgIDB4QzIsMHgyOCwweEEyLDB4MjAsMHgzQSwweEFGLDB4MkEsMHgwRSwweEUyLDB4Mjgs
MHhBMiwweDIwLDB4NTcsMHg1RSwweDVGLDB4N0MsCi0gICAgMHg4MSwweDI4LDB4QTIsMHgyMCww
eEZGLDB4OUYsMHhGRiwweEZELDB4QzIsMHgyOCwweDgxLDB4MjAsMHhGQiwweEVGLDB4QUEsMHgy
RCwKLSAgICAweEEyLDB4MjgsMHg4MSwweDIwLDB4QjcsMHhBRSwweEEwLDB4QzgsMHhDMiwweDI4
LDB4NjEsMHgyMCwweDJBLDB4QkEsMHhGRiwweEZGLAotICAgIDB4MDMsMHgzMSwweDgxLDB4MjAs
MHgwQSwweEI5LDB4RkYsMHg3NSwweDAzLDB4MzEsMHhBMiwweDI4LDB4MjgsMHhCQSwweDdGLDB4
NTUsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweDIyLDB4QUEsMHgyRiwweEE1LDB4MDMsMHgz
OSwweEUyLDB4MzAsMHhERSwweDJBLDB4MDIsMHg5RiwKLSAgICAweDIzLDB4MzksMHhDMiwweDI4
LDB4NzUsMHhCNywweEFBLDB4M0EsMHgyNCwweDMxLDB4QzIsMHgzMCwweDdELDB4QUIsMHhCQSww
eEY4LAotICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhFQiwweEVFLDB4QTUsMHhFMSwweDI0LDB4
MzksMHhDMiwweDI4LDB4RkEsMHg3QSwweDY4LDB4N0IsCi0gICAgMHhFMywweDMwLDB4QTIsMHgy
OCwweDE3LDB4QkYsMHhCNiwweEE4LDB4MDMsMHgzOSwweEExLDB4MjgsMHgwRSwweDJFLDB4OUYs
MHhCRiwKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4NjIsMHhBQSwweDhFLDB4ODMsMHgyNCww
eDM5LDB4RTMsMHgzOCwweEFELDB4QkQsMHgzNywweEFELAotICAgIDB4NDQsMHg0MSwweEUyLDB4
MzAsMHhBQSwweEFGLDB4RUEsMHg2MiwweDI0LDB4MzksMHhDMywweDI4LDB4RjgsMHg3RSwweEZC
LDB4RkUsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEQ2LDB4NUMsMHhFRSwweEI4LDB4MDMs
MHgzMSwweEEyLDB4MjgsMHhBRCwweEFGLDB4QUEsMHgyRSwKLSAgICAweDAzLDB4MzEsMHhBMSww
eDI4LDB4RkUsMHhGRiwweERDLDB4MEUsMHgwMywweDMxLDB4QzIsMHgyOCwweEE1LDB4QTUsMHhB
MywweDA4LAotICAgIDB4NjQsMHg0MSwweEUyLDB4MzAsMHhCRCwweEJELDB4QUIsMHgyQiwweEE1
LDB4NDksMHg2NCwweDQ5LDB4MjEsMHgyRiwweEFELDB4MzMsCi0gICAgMHhFNiwweDU5LDB4QTUs
MHg1MSwweEIxLDB4QTUsMHhBRCwweDBCLDB4NDgsMHg2MiwweDA2LDB4NUEsMHhFNywweDU1LDB4
OUYsMHg0OSwKLSAgICAweDY4LDB4NkEsMHgwNiwweDVBLDB4M0QsMHhCNSwweERFLDB4RjcsMHg2
OCwweDZBLDB4RTYsMHg1OSwweDA4LDB4MEEsMHgyQSwweEE3LAotICAgIDB4QTksMHg3MiwweDQ4
LDB4NkEsMHg1QywweEZFLDB4RTAsMHgzRCwweEE5LDB4NzIsMHg0OCwweDZBLDB4MjIsMHhCQSww
eEY3LDB4RkUsCi0gICAgMHhDOSwweDcyLDB4NjgsMHg2QSwweEI4LDB4QkIsMHhCQSwweDlGLDB4
Q0EsMHg3QSwweDI3LDB4NjIsMHhCQSwweDgyLDB4ODYsMHgwOCwKLSAgICAweEE5LDB4NzIsMHg2
OCwweDZBLDB4MEUsMHgwMywweEJGLDB4OTgsMHhBOSwweDcyLDB4ODgsMHg2QSwweEY0LDB4QTcs
MHg5NCwweDI0LAotICAgIDB4QzksMHg3QSwweDg4LDB4NzIsMHg3MCwweDZGLDB4REEsMHhCMiww
eEU5LDB4N0EsMHg4OCwweDcyLDB4RDksMHhGNSwweEEyLDB4QjMsCi0gICAgMHhFOSwweDdBLDB4
QTksMHg3MiwweENELDB4RjYsMHhEQywweDVGLDB4RTksMHg3QSwweEE5LDB4NzIsMHhGRCwweDgw
LDB4RTIsMHg2RSwKLSAgICAweEU5LDB4N0EsMHg4OSwweDcyLDB4QkEsMHg5MiwweDJCLDB4QkEs
MHhFOSwweDdBLDB4QTgsMHg3MiwweERGLDB4NzIsMHg3MywweERBLAotICAgIDB4MEEsMHg3Qiww
eDg4LDB4NkEsMHhFRSwweEJGLDB4QjUsMHgyRiwweDJBLDB4ODMsMHhDOSwweDcyLDB4RDcsMHgz
RiwweEY1LDB4RkUsCi0gICAgMHgyQSwweDgzLDB4QzksMHg3QSwweEZELDB4QjQsMHhBQSwweERE
LDB4MkEsMHg4QiwweEE4LDB4N0EsMHgyRiwweEVFLDB4N0EsMHg3NiwKLSAgICAweDBBLDB4ODMs
MHhBOSwweDdBLDB4RTIsMHhBQiwweDg5LDB4RUIsMHhFQSwweDdBLDB4QTksMHg3QSwweEVELDB4
NUQsMHhBOCwweEE4LAotICAgIDB4MEEsMHg4MywweEE5LDB4NzIsMHhBNSwweEFELDB4QUUsMHhB
RSwweDBCLDB4ODMsMHhDQSwweDdBLDB4QkYsMHg5NSwweEFGLDB4NkIsCi0gICAgMHgwQiwweDgz
LDB4Q0EsMHg3QSwweERFLDB4RDcsMHhERSwweDc5LDB4NEIsMHg4QiwweEM5LDB4N0EsMHgyQiww
eEFGLDB4RjUsMHhGRCwKLSAgICAweDJBLDB4ODMsMHhDOSwweDdBLDB4RjAsMHhBMiwweEE2LDB4
MEUsMHgyQSwweDgzLDB4QzksMHg3QSwweEQ3LDB4RTgsMHhDMCwweEE4LAotICAgIDB4MEEsMHg4
MywweEM5LDB4N0EsMHgyOCwweDA5LDB4RUQsMHg4MywweDRCLDB4OEIsMHhFOSwweDdBLDB4QTgs
MHg4QiwweEJELDB4OEQsCi0gICAgMHg0QSwweDgzLDB4MDksMHg3QiwweDhFLDB4NkYsMHhDQiww
eEFGLDB4NEIsMHg4QiwweEU5LDB4N0EsMHgwQSwweDNCLDB4OUUsMHg3RiwKLSAgICAweDAzLDB4
NDEsMHhDMiwweDM4LDB4MDYsMHhBQSwweEMzLDB4RTAsMHgwMywweDQxLDB4QTIsMHgzMCwweDc4
LDB4RUEsMHhCRSwweEVGLAotICAgIDB4MDMsMHg0MSwweEEyLDB4MzgsMHhBQiwweEJCLDB4RUIs
MHhDRCwweEUyLDB4MzgsMHhBMSwweDMwLDB4MDgsMHgwQSwweDA4LDB4QzgsCi0gICAgMHgwMyww
eDQxLDB4QzIsMHgzOCwweEJBLDB4QTUsMHg5NywweDE3LDB4MjMsMHg0MSwweEUyLDB4MzgsMHg2
RiwweDc1LDB4RkUsMHhGRSwKLSAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4QjcsMHhFRiwweEUw
LDB4NTMsMHgwMywweDQxLDB4QzIsMHgzOCwweEUwLDB4RkEsMHg1NywweDczLAotICAgIDB4MDMs
MHg0MSwweEUyLDB4MzgsMHg1NSwweDU2LDB4RkYsMHg2RiwweDIzLDB4NDEsMHhDMSwweDMwLDB4
REYsMHhENywweEJGLDB4QkIsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEFGLDB4QTcsMHgy
QSwweDNDLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhFQiwweEFGLDB4MjcsMHhCNywKLSAgICAweDAz
LDB4NDEsMHhDMiwweDM4LDB4QTAsMHhEQSwweEYwLDB4QTAsMHgwMywweDM5LDB4QzIsMHgzOCww
eEVGLDB4RUEsMHg2QSwweEZCLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHgzNywweEQ3LDB4
QUYsMHhFQiwweDAzLDB4NDEsMHhDMiwweDM4LDB4RTgsMHhDMCwweEMyLDB4REUsCi0gICAgMHgw
MywweDQxLDB4QzIsMHgzOCwweEVCLDB4RDMsMHg3QiwweERBLDB4MDMsMHg0MSwweEExLDB4MzAs
MHg3RiwweEZBLDB4RkQsMHhDQSwKLSAgICAweEUyLDB4MzgsMHhDMiwweDM4LDB4OEQsMHgwRCww
eEM1LDB4MkUsMHhFMiwweDM4LDB4QzIsMHgzOCwweDg0LDB4NzQsMHg5NSwweEE0LAotICAgIDB4
RTIsMHgzOCwweEMyLDB4MzgsMHhDMSwweEYyLDB4MDAsMHgwOCwweDAzLDB4NDEsMHhBMiwweDM4
LDB4QjcsMHhCRiwweEJCLDB4QTIsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDU3LDB4N0Ys
MHhFQiwweDRCLDB4NjcsMHg3MiwweDAzLDB4NDEsMHgyOSwweDBELDB4MEQsMHgwRCwKLSAgICAw
eDg3LDB4NzIsMHgyNiwweDZBLDB4QTAsMHhBQSwweDdBLDB4NzgsMHg0NywweDZBLDB4NjQsMHg1
MSwweEU4LDB4NjgsMHhGOCwweEZBLAotICAgIDB4QTQsMHg1MSwweDAzLDB4NDEsMHhGQywweERF
LDB4N0UsMHhGQSwweDQ0LDB4NDksMHhDMiwweDMwLDB4RTgsMHhCRSwweEZGLDB4RkUsCi0gICAg
MHgwMywweDM5LDB4QzIsMHgzMCwweDI4LDB4RjgsMHhGOCwweEUwLDB4MDMsMHgzOSwweEMyLDB4
MzAsMHhBQSwweEE3LDB4RTUsMHhGNSwKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4REYsMHhC
RSwweEFCLDB4MkYsMHgwMywweDMxLDB4QTIsMHgzMCwweDBBLDB4QUEsMHg4OCwweEUyLAotICAg
IDB4MDMsMHgzMSwweEMyLDB4MzAsMHhDMiwweEJBLDB4QkEsMHg2RSwweDAzLDB4MzEsMHhDMiww
eDI4LDB4QUEsMHhCQSwweDdGLDB4NUYsCi0gICAgMHgwMywweDMxLDB4QzIsMHgyOCwweDdFLDB4
MkEsMHg4OCwweDAyLDB4MDMsMHgzMSwweEMyLDB4MzAsMHg2QSwweEUyLDB4N0MsMHhCOCwKLSAg
ICAweDAzLDB4MzEsMHhDMiwweDI4LDB4OEIsMHhDQiwweEY5LDB4OEUsMHgyMywweDM5LDB4QzMs
MHgzMCwweEJDLDB4RkYsMHg3RiwweDVGLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHhFMiww
eDNGLDB4OEIsMHhBQiwweDAzLDB4MzEsMHhDMiwweDI4LDB4MDIsMHgwMiwweDIzLDB4N0IsCi0g
ICAgMHgwMywweDM5LDB4RTMsMHgzMCwweEZBLDB4RUYsMHgxRSwweERCLDB4MjQsMHgzOSwweEMy
LDB4MzAsMHhCOSwweEY3LDB4RkMsMHhFMCwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QTIs
MHhFQiwweEFCLDB4QUEsMHhFMywweDMwLDB4QTIsMHgzMCwweDA4LDB4MjgsMHgyQSwweDhGLAot
ICAgIDB4MjQsMHg0MSwweEUzLDB4MzAsMHhENywweEFDLDB4QUEsMHg4MCwweDI0LDB4MzksMHhF
MywweDMwLDB4N0IsMHhCQiwweEFFLDB4QUYsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweDAz
LDB4MkEsMHg1RiwweDlGLDB4NDQsMHg0MSwweEUzLDB4MzAsMHgyQSwweDJBLDB4QTcsMHg5NSwK
LSAgICAweDY0LDB4NDEsMHgwMywweDM5LDB4RkEsMHhEOCwweDVGLDB4RjcsMHgyNCwweDM5LDB4
MDMsMHgzOSwweDc0LDB4RjQsMHg1NCwweDU3LAotICAgIDB4MjMsMHgzOSwweEMzLDB4MzAsMHhF
MiwweDlBLDB4RUUsMHhCQiwweDI0LDB4MzksMHhFMywweDM4LDB4MjcsMHhBRiwweEFBLDB4QUEs
Ci0gICAgMHgyNCwweDM5LDB4RTMsMHgzOCwweEZBLDB4QTIsMHhFQiwweEZGLDB4NDQsMHgzOSww
eEUzLDB4MzgsMHg1RiwweEZGLDB4N0UsMHhGRCwKLSAgICAweDI0LDB4MzksMHgwMywweDM5LDB4
NTQsMHg2RCwweEY5LDB4REQsMHgyMywweDM5LDB4RTMsMHgzMCwweEZFLDB4RDgsMHhBOCwweEI2
LAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHhBOSwweEU1LDB4MTcsMHg3NCwweDI0LDB4Mzks
MHhFMywweDMwLDB4NUUsMHgxNSwweDBGLDB4QjUsCi0gICAgMHg0NCwweDM5LDB4RTMsMHgzMCww
eEY1LDB4RTksMHhGRiwweEUzLDB4MjQsMHgzOSwweEMyLDB4MjgsMHgzQSwweEI4LDB4QUUsMHg5
QSwKLSAgICAweDIzLDB4MzksMHhDMywweDI4LDB4REYsMHhGRiwweDJBLDB4MEEsMHgyMywweDM5
LDB4RTMsMHgzMCwweEZGLDB4RkIsMHhGQywweDY4LAotICAgIDB4RTQsMHgzOCwweDIzLDB4MzEs
MHhFRiwweEVBLDB4RkIsMHhBQiwweDIzLDB4MzksMHhFMywweDMwLDB4RDcsMHhGRiwweEVDLDB4
QkIsCi0gICAgMHgyMywweDM5LDB4QzIsMHgzMCwweDhELDB4QUUsMHhFRSwweEZFLDB4MDMsMHgz
MSwweEMzLDB4MzAsMHhGOCwweEY4LDB4QkIsMHg4NywKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4
LDB4RjcsMHhBNywweDA5LDB4MDMsMHgwMywweDMxLDB4QzIsMHgyOCwweEY3LDB4RkUsMHgwQSww
eEY4LAotICAgIDB4RTIsMHgzMCwweEMyLDB4MjgsMHg1NiwweEQ3LDB4RDcsMHg1NywweEUyLDB4
MjgsMHhBMiwweDI4LDB4QUIsMHg4MCwweEVBLDB4OEEsCi0gICAgMHgwMywweDMxLDB4QzIsMHgy
OCwweEQ5LDB4RkIsMHg2RiwweDc1LDB4MDMsMHgzMSwweDgxLDB4MjAsMHg3MiwweEUyLDB4RUEs
MHhBQiwKLSAgICAweEMyLDB4MjgsMHg4MSwweDIwLDB4NzgsMHgzRSwweDJBLDB4MDAsMHhFMyww
eDMwLDB4ODEsMHgyMCwweEE5LDB4NjMsMHhDQSwweEJCLAotICAgIDB4QTIsMHgyOCwweDgxLDB4
MjAsMHhFQiwweDJCLDB4RUEsMHhBMCwweEEyLDB4MjgsMHg4MiwweDIwLDB4M0YsMHhBRiwweEJB
LDB4RkEsCi0gICAgMHhBMiwweDI4LDB4NjEsMHgyMCwweEFGLDB4RDcsMHhGRiwweEYyLDB4QzIs
MHgyOCwweDYxLDB4MjAsMHg4QSwweEJCLDB4RjcsMHg3RiwKLSAgICAweEUzLDB4MzAsMHg4MSww
eDIwLDB4MkIsMHhCNywweEJELDB4RDUsMHhFMywweDMwLDB4QTIsMHgyOCwweDIwLDB4MDIsMHhE
QiwweDVGLAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHgyQSwweEFBLDB4OUYsMHhGNSwweDI0
LDB4MzksMHhDMiwweDI4LDB4M0EsMHhCQSwweEVELDB4RDUsCi0gICAgMHgyNCwweDM5LDB4RTMs
MHgzMCwweDY3LDB4RjcsMHgzNSwweEZGLDB4MDQsMHgzMSwweEUzLDB4MzAsMHg3RCwweDY3LDB4
MUQsMHg1NywKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4N0UsMHhBOCwweEFFLDB4QjUsMHgw
MywweDMxLDB4QzIsMHgyOCwweEY1LDB4QUYsMHgyQSwweDg4LAotICAgIDB4NDQsMHgzOSwweEUy
LDB4MzAsMHhDRiwweEJELDB4OEYsMHgyRCwweDIzLDB4MzksMHhFMiwweDMwLDB4QUYsMHhBRSww
eENBLDB4MjgsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgyOCwweDgwLDB4RTIsMHhFQSwweDYwLDB4
MDMsMHgzOSwweDgyLDB4MjgsMHgwMiwweDgwLDB4QUIsMHhCNSwKLSAgICAweDAzLDB4MzEsMHhD
MiwweDI4LDB4NUUsMHgyNywweEE1LDB4OTUsMHgwMywweDMxLDB4QzIsMHgyOCwweDJGLDB4OUYs
MHhGNywweEZFLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHg4OCwweDJFLDB4M0UsMHgzRiww
eDQ0LDB4MzksMHhFMywweDMwLDB4QkYsMHhGRCwweEFGLDB4MkYsCi0gICAgMHhBNSwweDQ5LDB4
MjMsMHgzOSwweEJELDB4MkQsMHgyRiwweDJCLDB4QzUsMHg1MSwweDg1LDB4NDksMHhCMSwweDBC
LDB4QTgsMHgwMiwKLSAgICAweDA2LDB4NUEsMHhDNiwweDUxLDB4OUQsMHhCNSwweDIzLDB4MzIs
MHgyNywweDYyLDB4QzYsMHg1OSwweDBCLDB4RkIsMHg2QSwweEJBLAotICAgIDB4MjcsMHg2Miww
eEM2LDB4NTEsMHg4MCwweEI4LDB4RUEsMHgyQSwweDQ3LDB4NjIsMHgwNywweDYyLDB4QUEsMHhB
RSwweDJGLDB4MzksCi0gICAgMHg2OCwweDZBLDB4MjcsMHg2MiwweDBFLDB4QkUsMHhERiwweEFB
LDB4ODgsMHg2QSwweDQ4LDB4NkEsMHhEQywweEVFLDB4OTcsMHhCRCwKLSAgICAweEM5LDB4NzIs
MHg0OCwweDZBLDB4QkYsMHgyRiwweEJGLDB4REYsMHhFQSwweDdBLDB4QTksMHg3MiwweEJCLDB4
RUIsMHg3RiwweEQ2LAotICAgIDB4RUEsMHg3QSwweDg4LDB4NkEsMHg1RSwweDdCLDB4N0YsMHgy
QiwweEU5LDB4N0EsMHg4OCwweDZBLDB4RTUsMHg4OSwweEUwLDB4QUUsCi0gICAgMHhFOSwweDdB
LDB4ODgsMHg3MiwweEYyLDB4RTUsMHhCNSwweEFDLDB4RUEsMHg3QSwweDg5LDB4NzIsMHg1Qiww
eEZGLDB4QkUsMHg4RSwKLSAgICAweEM5LDB4N0EsMHg4OCwweDcyLDB4QjAsMHhGQSwweEQyLDB4
QTAsMHhFOSwweDdBLDB4ODgsMHg3MiwweEFFLDB4QUQsMHhCRiwweEZGLAotICAgIDB4RUEsMHg3
QSwweDg4LDB4NzIsMHhBQiwweEVBLDB4NzIsMHg2MiwweEU5LDB4N0EsMHhBOCwweDcyLDB4RkEs
MHhFRSwweEY5LDB4MjksCi0gICAgMHgwQSwweDgzLDB4QTksMHg3MiwweDI5LDB4Q0IsMHhBMiww
eEVCLDB4MkEsMHg4MywweEM5LDB4N0EsMHhFQiwweEFBLDB4MkYsMHhCRCwKLSAgICAweDBBLDB4
ODMsMHhDOSwweDdBLDB4NTQsMHgzQSwweEFBLDB4RkEsMHgwQSwweDgzLDB4QzksMHg3QSwweDU3
LDB4QTgsMHhBOCwweEY3LAotICAgIDB4MkEsMHg4MywweEE5LDB4N0EsMHhCNywweEEzLDB4QUEs
MHhCMiwweDJBLDB4ODMsMHhDOSwweDdBLDB4NzUsMHhGRiwweEEyLDB4QTIsCi0gICAgMHgwQSww
eDgzLDB4QTksMHg3MiwweEJFLDB4QkEsMHg1RSwweDdDLDB4MEEsMHg4MywweEE5LDB4NzIsMHhG
RiwweEEyLDB4RkEsMHg1QiwKLSAgICAweDBCLDB4ODMsMHhDQSwweDdBLDB4RUEsMHhGRiwweEZE
LDB4RkQsMHhFQSwweDdBLDB4QTksMHg3MiwweDIwLDB4MjIsMHhEQSwweEEwLAotICAgIDB4MkEs
MHg4MywweEE5LDB4NzIsMHg4QSwweEVGLDB4N0YsMHg3RSwweDJCLDB4ODMsMHhBOSwweDcyLDB4
QUEsMHgyRCwweEJGLDB4RjcsCi0gICAgMHgyQSwweDgzLDB4QzksMHg3QSwweEIyLDB4QjgsMHhG
RSwweERGLDB4NEIsMHg4QiwweEVBLDB4N0EsMHhDQiwweDIxLDB4OEUsMHg1RCwKLSAgICAweDRC
LDB4ODMsMHhFOSwweDdBLDB4RkUsMHhERSwweEFCLDB4N0IsMHgwQSwweDgzLDB4QzksMHg3QSww
eEIwLDB4RkYsMHhCQSwweEY2LAotICAgIDB4MDMsMHg0MSwweEExLDB4MzAsMHhCMCwweEYyLDB4
QkEsMHg4QiwweEUyLDB4MzgsMHhBMSwweDMwLDB4QkMsMHhGQiwweDI4LDB4QkMsCi0gICAgMHgw
MywweDQxLDB4QzIsMHgzOCwweDU1LDB4NUUsMHhFQSwweEFGLDB4MjMsMHg0MSwweEMyLDB4Mzgs
MHg3NSwweDNELDB4QkQsMHg5RSwKLSAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4QUQsMHhFNyww
eDI2LDB4QUYsMHgyMywweDQxLDB4RTIsMHgzOCwweEQ3LDB4RDcsMHg1RSwweEI4LAotICAgIDB4
MDIsMHgzOSwweEMyLDB4MzgsMHg2QSwweEVBLDB4NjgsMHhBOCwweDAyLDB4MzksMHhDMiwweDM4
LDB4RkYsMHg2RiwweDVBLDB4N0MsCi0gICAgMHgyMiwweDQxLDB4QzIsMHgzOCwweDVCLDB4NUQs
MHg3RCwweDdGLDB4MDMsMHg0MSwweEExLDB4MzAsMHg4QiwweEFCLDB4RkQsMHhFNSwKLSAgICAw
eDAzLDB4NDEsMHhDMiwweDM4LDB4RjQsMHg1QSwweDVCLDB4N0EsMHgyMywweDM5LDB4QzIsMHgz
OCwweEJELDB4RDcsMHhGRCwweDVGLAotICAgIDB4MDMsMHgzOSwweEExLDB4MzAsMHgyQSwweEFG
LDB4RTYsMHhFQSwweEUyLDB4MzgsMHhDMiwweDM4LDB4MDgsMHgyQSwweENBLDB4N0IsCi0gICAg
MHgwMiwweDM5LDB4QzIsMHgzOCwweEZCLDB4RjcsMHg3RiwweEVCLDB4RTIsMHgzOCwweEMyLDB4
MzAsMHhBQywweDBFLDB4QzksMHg0RiwKLSAgICAweEUyLDB4MzgsMHhDMiwweDM4LDB4MDgsMHgw
MiwweEEyLDB4MjAsMHgwMywweDQxLDB4QzIsMHgzOCwweEFBLDB4REUsMHhGOSwweDRGLAotICAg
IDB4MDMsMHg0MSwweEMyLDB4MzgsMHhGQywweEY4LDB4RkEsMHhGRCwweDAzLDB4MzksMHhDMiww
eDM4LDB4RkEsMHhCQiwweERGLDB4RDUsCi0gICAgMHgwMywweDQxLDB4QTIsMHgzOCwweEZBLDB4
N0EsMHhGRSwweEI4LDB4RTIsMHgzOCwweEEyLDB4MzAsMHhBMiwweDlCLDB4QkMsMHgzQywKLSAg
ICAweDAzLDB4NDEsMHhDMiwweDM4LDB4QUIsMHhBQSwweEJBLDB4RTcsMHg2NywweDcyLDB4MDIs
MHg0MSwweDBELDB4MkQsMHhBRCwweDM1LAotICAgIDB4ODcsMHg3MiwweDA2LDB4NjIsMHg3OCww
eDY4LDB4NkEsMHhFQSwweDA2LDB4NkEsMHg2MywweDQ5LDB4RTAsMHhFOCwweEZDLDB4N0UsCi0g
ICAgMHg4NCwweDUxLDB4MjMsMHg0MSwweDdDLDB4RkUsMHg3RSwweENCLDB4MjMsMHg0MSwweEUy
LDB4MzAsMHhGRSwweEZDLDB4N0MsMHg1QywKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QTAs
MHhGRSwweEFGLDB4RTcsMHgwMywweDM5LDB4QzIsMHgzMCwweEY1LDB4RDUsMHhBQiwweEJELAot
ICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhDQiwweDZGLDB4RUEsMHhDQiwweEUzLDB4MzAsMHhD
MiwweDI4LDB4RTAsMHhGQywweEIwLDB4RTAsCi0gICAgMHgwMywweDMxLDB4QTIsMHgyOCwweEJC
LDB4QUUsMHhGRSwweDU4LDB4RTMsMHgzMCwweEMyLDB4MjgsMHhCQywweEY2LDB4M0QsMHgwOSwK
LSAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4MkEsMHg4QiwweEU3LDB4RkYsMHgyMywweDM5LDB4
QTIsMHgyOCwweEEyLDB4RkIsMHhGNywweEY3LAotICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHhB
NiwweEFFLDB4OEIsMHhBQiwweDAzLDB4MzEsMHhDMiwweDMwLDB4REEsMHg1MCwweEYyLDB4QUEs
Ci0gICAgMHhFMywweDMwLDB4QzIsMHgyOCwweDJBLDB4MkYsMHhCQywweDI4LDB4MjMsMHgzOSww
eEMyLDB4MjgsMHhGRiwweEZGLDB4RkIsMHhBMiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4
MEIsMHgyQiwweDJGLDB4MEEsMHgyMywweDM5LDB4RTMsMHgzMCwweDdBLDB4N0EsMHhERiwweEQ3
LAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHg4QiwweEVCLDB4RjIsMHhEMiwweDAzLDB4Mzks
MHhDMiwweDMwLDB4QTgsMHgzOCwweEZGLDB4NkYsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgzMCww
eEEwLDB4RkEsMHg3RiwweEVELDB4MjQsMHgzOSwweEUzLDB4MzAsMHhDRiwweEU1LDB4RkYsMHhG
NywKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4OEIsMHg4QiwweDhFLDB4OUMsMHgyNCwweDM5
LDB4RTMsMHgzMCwweDNGLDB4MkYsMHhCMywweEZBLAotICAgIDB4NDQsMHg0MSwweEUyLDB4MzAs
MHhCMiwweEY4LDB4RUUsMHg3RCwweDQzLDB4MzksMHhFMiwweDM4LDB4RkEsMHhBQSwweEFBLDB4
QkYsCi0gICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweEJELDB4QUIsMHhBRCwweEY3LDB4NDQsMHg0
MSwweDAzLDB4MzksMHg3NywweDdFLDB4QjcsMHg2OCwKLSAgICAweDQ0LDB4NDEsMHhFMywweDM4
LDB4N0YsMHg0QSwweEVBLDB4RkYsMHhFMywweDM4LDB4MjMsMHgzMSwweEVGLDB4QUEsMHhBRSww
eEFGLAotICAgIDB4MDMsMHgzOSwweEMzLDB4MzAsMHgwMCwweEUyLDB4REEsMHhBMywweDI0LDB4
NDEsMHhFMywweDMwLDB4QUYsMHhCRiwweEE5LDB4OEEsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgz
MCwweEZBLDB4RkUsMHhCRSwweDdDLDB4MjQsMHgzOSwweEMyLDB4MzAsMHhBRCwweEVCLDB4QUEs
MHhFMiwKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4NjMsMHg3QiwweDdGLDB4RUQsMHgwMyww
eDMxLDB4QzIsMHgzMCwweDAwLDB4QUIsMHhBRCwweEVBLAotICAgIDB4NDMsMHgzOSwweEUyLDB4
MzAsMHhCRCwweEVBLDB4QUMsMHhFQiwweDIzLDB4MzksMHgwMywweDMxLDB4NEMsMHg1MCwweDcw
LDB4NUEsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweDVGLDB4RkYsMHhFQiwweEE4LDB4MDMs
MHgzMSwweEUyLDB4MzAsMHhDMSwweEZBLDB4RjcsMHg1RSwKLSAgICAweDI0LDB4MzksMHhFMyww
eDMwLDB4QkYsMHhGRiwweEVCLDB4Q0IsMHgwMywweDM5LDB4QTIsMHgyOCwweDIyLDB4MjgsMHgy
QSwweDJCLAotICAgIDB4NDQsMHgzOSwweEUzLDB4MzAsMHg3NSwweDc3LDB4N0MsMHhGQSwweDAz
LDB4MzEsMHhDMiwweDMwLDB4QzIsMHhFRSwweERFLDB4OEEsCi0gICAgMHgwMywweDMxLDB4QzIs
MHgyOCwweDVELDB4RkQsMHhGRiwweEEwLDB4MDMsMHgzMSwweEMyLDB4MjgsMHg1NSwweDU3LDB4
QjcsMHgxRiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4RDUsMHhGNSwweEJBLDB4MjAsMHgy
NCwweDMxLDB4QzIsMHgyOCwweDVGLDB4NUIsMHg3MywweDZGLAotICAgIDB4RTMsMHgzMCwweEMy
LDB4MjgsMHhERCwweEY3LDB4NTUsMHg3RiwweEUzLDB4MjgsMHhBMiwweDI4LDB4N0EsMHhEOCww
eEFBLDB4QUIsCi0gICAgMHhDMiwweDI4LDB4QTIsMHgyMCwweDVBLDB4RUIsMHgwQiwweDhGLDB4
QzIsMHgyOCwweEEyLDB4MjAsMHg3RiwweEVDLDB4RUIsMHhCNywKLSAgICAweEMyLDB4MjgsMHg4
MiwweDIwLDB4NUEsMHg1QSwweERDLDB4RkEsMHhDMywweDI4LDB4ODIsMHgyMCwweDVELDB4NTcs
MHhGQywweEFBLAotICAgIDB4QzIsMHgyMCwweDYxLDB4MTgsMHhGNywweEZGLDB4QkEsMHhBMiww
eEEyLDB4MjgsMHg4MSwweDIwLDB4MEYsMHgxNSwweEY3LDB4NzgsCi0gICAgMHhBMiwweDI4LDB4
NjEsMHgyMCwweDJBLDB4QkEsMHhCQiwweEJGLDB4RTIsMHgzMCwweDgyLDB4MjAsMHhCQSwweDJG
LDB4RkIsMHhGNSwKLSAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4M0EsMHhCRSwweDVGLDB4RDUs
MHgwMywweDMxLDB4QTIsMHgyOCwweDIyLDB4MkMsMHgyRSwweEJELAotICAgIDB4RTMsMHgzMCww
eEEyLDB4MjgsMHhBOCwweDgwLDB4RjgsMHg1RiwweDAzLDB4MzEsMHhBMiwweDI4LDB4OEMsMHg4
RSwweDU3LDB4NTUsCi0gICAgMHg0NCwweDM5LDB4QTIsMHgyOCwweDJCLDB4QUYsMHhBRiwweEZE
LDB4NjUsMHg0MSwweDAzLDB4MzEsMHhCRSwweEU4LDB4RTMsMHg3RCwKLSAgICAweDI0LDB4Mzks
MHhDMiwweDI4LDB4RTgsMHg3OCwweDVFLDB4NUUsMHhFMywweDMwLDB4QTIsMHgyOCwweEUzLDB4
QzIsMHhCRiwweDhCLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhFRiwweDhBLDB4QUIsMHgz
RiwweDIzLDB4MzksMHhDMiwweDI4LDB4REYsMHhGNywweEUyLDB4QUIsCi0gICAgMHgyMywweDM5
LDB4RTMsMHgzMCwweEY3LDB4QUYsMHhBRiwweDBELDB4QTUsMHg0OSwweDAzLDB4MzksMHhBNSww
eDI1LDB4QUYsMHgyQiwKLSAgICAweDA2LDB4NUEsMHg2NSwweDQxLDB4QUQsMHg4QiwweEFCLDB4
RUEsMHgwNiwweDVBLDB4QTUsMHg1MSwweEFCLDB4MkUsMHgwOSwweEEyLAotICAgIDB4QzYsMHg1
OSwweDA1LDB4NTIsMHhBQiwweEVFLDB4RkIsMHhFQSwweDI3LDB4NjIsMHhDNSwweDU5LDB4QTcs
MHhBRCwweDhCLDB4QTIsCi0gICAgMHg0OCwweDZBLDB4RTYsMHg1OSwweEJBLDB4RkQsMHhEQiww
eDgyLDB4ODgsMHg2QSwweDA2LDB4NUEsMHhENywweEQ3LDB4REYsMHhBQSwKLSAgICAweEE5LDB4
NzIsMHg0NywweDYyLDB4RUYsMHgyRCwweEFELDB4M0IsMHg4OSwweDZBLDB4NDgsMHg2QSwweEZB
LDB4QTAsMHg4MiwweDhCLAotICAgIDB4ODgsMHg2QSwweDQ4LDB4NkEsMHhBRiwweEFBLDB4QUEs
MHhERiwweENBLDB4N0EsMHg2OCwweDZBLDB4OEIsMHgwMywweDJCLDB4QkQsCi0gICAgMHhFOSww
eDdBLDB4NjgsMHg2QSwweDIyLDB4RkIsMHhGQSwweEY3LDB4RTksMHg3QSwweEE5LDB4NzIsMHhG
RCwweEJCLDB4QUYsMHhENSwKLSAgICAweEU5LDB4N0EsMHg2OCwweDZBLDB4QkEsMHg5RiwweEZF
LDB4QTgsMHhDOSwweDdBLDB4NjgsMHg2QSwweDgwLDB4MjgsMHhFQSwweEZDLAotICAgIDB4RTks
MHg3QSwweDg4LDB4NzIsMHg2MywweEIyLDB4MDMsMHhBRiwweEU5LDB4N0EsMHg4OCwweDcyLDB4
RkYsMHhCRCwweDJCLDB4MDAsCi0gICAgMHhFQSwweDdBLDB4ODgsMHg3MiwweDhBLDB4QkEsMHg2
QSwweDdDLDB4RTksMHg3QSwweEE5LDB4NzIsMHg4MiwweDBCLDB4QUYsMHg2RCwKLSAgICAweEU5
LDB4N0EsMHhBOCwweDcyLDB4NzksMHg3QSwweEEyLDB4RUEsMHhFOSwweDdBLDB4QTksMHg3Miww
eEI4LDB4RTQsMHhDMCwweEIwLAotICAgIDB4QzksMHg3QSwweDg4LDB4NzIsMHhCQywweERCLDB4
QkIsMHg3RSwweEM5LDB4N0EsMHg4OCwweDcyLDB4MkIsMHgyQiwweEFGLDB4MTUsCi0gICAgMHgw
QSwweDgzLDB4QTksMHg3MiwweDIyLDB4QkYsMHhGOSwweEZGLDB4MkIsMHg4MywweDg4LDB4NzIs
MHhBOCwweEEzLDB4QkQsMHhERiwKLSAgICAweEVBLDB4N0EsMHhBOCwweDcyLDB4QjgsMHhGRSww
eEJDLDB4QUEsMHhFQSwweDdBLDB4ODgsMHg3MiwweEQyLDB4QkEsMHhBQSwweEE4LAotICAgIDB4
MkIsMHg4MywweEM5LDB4N0EsMHhGRCwweDVELDB4QjcsMHhENSwweDBBLDB4ODMsMHhBOSwweDcy
LDB4MjAsMHhCNiwweDlFLDB4QTIsCi0gICAgMHgyQiwweDgzLDB4QzksMHg3QSwweDVFLDB4QkYs
MHgzRiwweEFELDB4MkIsMHg4MywweEE4LDB4N0EsMHg3QiwweDJBLDB4MjIsMHg4QSwKLSAgICAw
eDBBLDB4ODMsMHhBOCwweDcyLDB4ODksMHgyRiwweEFCLDB4OEUsMHgwQSwweDgzLDB4QzksMHg3
QSwweEMwLDB4QUEsMHgwMCwweEJFLAotICAgIDB4RUEsMHg4MiwweDBBLDB4N0IsMHhFRiwweEY1
LDB4NkEsMHhFRiwweDJBLDB4ODMsMHhFQSwweDdBLDB4OUUsMHhCNiwweDc2LDB4NzMsCi0gICAg
MHgwMywweDQxLDB4QTEsMHgzMCwweEE4LDB4QkMsMHg3NiwweEQ2LDB4MjMsMHg0MSwweEMyLDB4
MzgsMHhFNSwweDVELDB4RUYsMHhFRiwKLSAgICAweDAzLDB4NDEsMHhBMSwweDMwLDB4QUYsMHgz
OSwweDBFLDB4MkEsMHgwMywweDM5LDB4QzIsMHgzOCwweEFBLDB4MkIsMHgzRCwweDk2LAotICAg
IDB4MDMsMHg0MSwweEMyLDB4MzgsMHgwMywweEFCLDB4QTgsMHg3OCwweDAzLDB4NDEsMHhDMiww
eDM4LDB4MjgsMHhCQSwweDE2LDB4RDUsCi0gICAgMHgwMiwweDQxLDB4RTIsMHgzOCwweEIyLDB4
MzgsMHg1RSwweDVFLDB4MDMsMHg0MSwweEExLDB4MzAsMHhGRSwweEY4LDB4QUEsMHgyQSwKLSAg
ICAweEUyLDB4MzgsMHhBMSwweDMwLDB4RkYsMHhERiwweEJFLDB4RTgsMHgwMywweDQxLDB4QTEs
MHgzMCwweDI5LDB4QUIsMHhFQiwweEZCLAotICAgIDB4RTIsMHgzOCwweEExLDB4MzAsMHhBMCww
eDJBLDB4QkUsMHgwQSwweDAyLDB4NDEsMHhFMiwweDM4LDB4NUYsMHg1NywweDg1LDB4REQsCi0g
ICAgMHgwMywweDQxLDB4QTEsMHgzMCwweEVBLDB4N0UsMHg3QSwweDgyLDB4MjMsMHg0MSwweEMy
LDB4MzgsMHg3QiwweDVGLDB4NUQsMHg3RiwKLSAgICAweDIyLDB4NDEsMHhDMiwweDM4LDB4RDUs
MHhENywweDc3LDB4N0YsMHhFMiwweDM4LDB4QTEsMHgzMCwweEZDLDB4RkUsMHhCQywweEEyLAot
ICAgIDB4MDIsMHg0MSwweEMyLDB4MzgsMHg1NSwweEVELDB4ODMsMHg2OCwweDAzLDB4MzksMHhD
MiwweDM4LDB4RUIsMHhFQiwweDJCLDB4NEYsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzOCwweEQ3
LDB4RkIsMHhBQSwweEQ2LDB4MDIsMHg0MSwweEExLDB4MzAsMHhGRSwweEZBLDB4RjgsMHhCOSwK
LSAgICAweEUyLDB4MzgsMHhBMiwweDMwLDB4M0EsMHhBQiwweEVBLDB4QUMsMHhFMiwweDM4LDB4
QTIsMHgzMCwweDc4LDB4QjksMHhBOCwweDhBLAotICAgIDB4RTIsMHgzOCwweEExLDB4MzAsMHg4
QSwweDg4LDB4RkYsMHg1QSwweDI2LDB4NkEsMHhDMSwweDMwLDB4M0QsMHgzNSwweEI1LDB4QjUs
Ci0gICAgMHg2NiwweDZBLDB4QzUsMHg1OSwweEEwLDB4RTIsMHg3QSwweDdBLDB4RTUsMHg1OSww
eDg0LDB4NTEsMHg1QywweDdDLDB4RjcsMHhFQiwKLSAgICAweEE0LDB4NTEsMHg2NCwweDQ5LDB4
NkYsMHg1RSwweDVFLDB4RTIsMHg2NCwweDQ5LDB4RTIsMHgzMCwweDU0LDB4NUUsMHhENiwweERG
LAotICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHhFNSwweEM5LDB4QTgsMHhFMCwweDAzLDB4Mzks
MHhDMiwweDMwLDB4QUUsMHhBNywweENGLDB4QUYsCi0gICAgMHgyNCwweDMxLDB4QzIsMHgzMCww
eEU3LDB4REQsMHhGNywweERGLDB4MDMsMHgzMSwweEMyLDB4MzAsMHhBQywweEYwLDB4NTYsMHhE
NywKLSAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4RDgsMHhCRSwweEZGLDB4RkYsMHhFMywweDMw
LDB4QzIsMHgyOCwweDJBLDB4MjgsMHhBRSwweEZELAotICAgIDB4RTMsMHgzMCwweEMyLDB4Mjgs
MHgyQywweDJGLDB4M0EsMHhBQiwweDAyLDB4MzEsMHhDMiwweDI4LDB4RDcsMHhDRiwweEVBLDB4
QUIsCi0gICAgMHgwMywweDMxLDB4RTMsMHgzMCwweDU1LDB4RTcsMHhCRCwweDhELDB4MDMsMHgz
OSwweEEyLDB4MjgsMHhBQSwweEUzLDB4QUEsMHg4MiwKLSAgICAweDAzLDB4MzEsMHhFMywweDMw
LDB4MTUsMHg1NSwweDdELDB4N0YsMHgyMywweDM5LDB4RTMsMHgzMCwweDYyLDB4RjcsMHg1Nyww
eDU1LAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHgwOCwweEZBLDB4RjYsMHg3RCwweDAzLDB4
MzEsMHhFMiwweDMwLDB4RDUsMHhERSwweEY1LDB4RTUsCi0gICAgMHgwMywweDMxLDB4QzIsMHgz
MCwweEEzLDB4QTIsMHgyQSwweDJCLDB4MDMsMHgzMSwweEUyLDB4MzAsMHhDRiwweEFBLDB4MEYs
MHgyOCwKLSAgICAweDAzLDB4MzksMHhDMywweDMwLDB4ODksMHhDOCwweDg4LDB4RTgsMHgwMyww
eDM5LDB4QTIsMHgyOCwweDJGLDB4QkEsMHhFRSwweDJFLAotICAgIDB4MDMsMHgzMSwweEMyLDB4
MzAsMHhBOCwweDMwLDB4NUYsMHhGRiwweDAzLDB4MzksMHhFMywweDMwLDB4RTIsMHhBQSwweEVE
LDB4NzMsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweEYzLDB4NzksMHhGRiwweEJELDB4MjMs
MHgzOSwweEUzLDB4MzAsMHhBQSwweEYzLDB4RDcsMHhEOCwKLSAgICAweDIzLDB4MzksMHhFMyww
eDMwLDB4MjIsMHgyRSwweDNGLDB4MkUsMHgyNCwweDM5LDB4RTIsMHgzMCwweEEwLDB4N0EsMHg3
RSwweDhBLAotICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHhFOCwweEUzLDB4NkEsMHg2QSwweDI0
LDB4MzksMHhDMiwweDM4LDB4QUEsMHhBOCwweDhBLDB4QTksCi0gICAgMHgyMywweDM5LDB4RTMs
MHgzOCwweERGLDB4NTgsMHhGOCwweEY2LDB4MjQsMHgzOSwweEMzLDB4MzgsMHgwMiwweDhCLDB4
QUEsMHg4QSwKLSAgICAweDQ0LDB4NDEsMHhDMywweDMwLDB4RkUsMHhEQSwweEZBLDB4MjIsMHgy
NCwweDM5LDB4QzIsMHgzMCwweEIzLDB4REYsMHhCRSwweENDLAotICAgIDB4NDQsMHgzOSwweEUz
LDB4MzAsMHhFRCwweEVELDB4RjUsMHg4NywweDQ0LDB4MzksMHgwMywweDMxLDB4N0UsMHhGQSww
eEVFLDB4QUIsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEUyLDB4QTIsMHgwMCwweEEwLDB4
MDMsMHgzMSwweEMyLDB4MzAsMHgwOCwweDJBLDB4M0UsMHgzRSwKLSAgICAweDQ0LDB4MzksMHhF
MiwweDMwLDB4QTcsMHgyQiwweEFCLDB4RkIsMHgyNCwweDM5LDB4RTIsMHgzMCwweERDLDB4Qjgs
MHgyOCwweEFBLAotICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhFQSwweEY4LDB4QTgsMHgwMCww
eDI0LDB4MzksMHhDMiwweDMwLDB4QkQsMHgyMywweDAwLDB4QTAsCi0gICAgMHgyNCwweDM5LDB4
RTMsMHgzMCwweDI3LDB4M0MsMHhBMCwweEFFLDB4MjQsMHgzOSwweEUzLDB4MzAsMHhGRSwweDVF
LDB4N0EsMHhCMiwKLSAgICAweDIzLDB4MzksMHhFMywweDMwLDB4NUUsMHhFRSwweEY4LDB4Qzgs
MHgyMywweDM5LDB4QzIsMHgyOCwweEZGLDB4RUYsMHhGRSwweEQyLAotICAgIDB4MDMsMHgzMSww
eEMyLDB4MjgsMHhCQiwweDNGLDB4QjYsMHgyQSwweDI0LDB4MzksMHhDMiwweDMwLDB4RkUsMHhG
QSwweEYyLDB4N0EsCi0gICAgMHhFMywweDMwLDB4QzIsMHgyOCwweDVBLDB4MkEsMHgwRCwweDNE
LDB4MDMsMHgzMSwweEMyLDB4MjgsMHg1NywweDdFLDB4RkUsMHgzNCwKLSAgICAweDAzLDB4MzEs
MHhBMiwweDIwLDB4NkYsMHhGRiwweEFCLDB4QTgsMHgwMywweDMxLDB4QzIsMHgyOCwweDU1LDB4
REQsMHhGNywweDRCLAotICAgIDB4RTMsMHgyOCwweEEyLDB4MjAsMHg1NywweDlFLDB4RUEsMHgw
MCwweEUzLDB4MjgsMHhBMiwweDI4LDB4RkQsMHhGRiwweEYzLDB4RjMsCi0gICAgMHhDMiwweDI4
LDB4QTIsMHgyMCwweDk3LDB4QTUsMHgwNSwweDBFLDB4QzMsMHgyOCwweDgxLDB4MjAsMHhGRSww
eEUwLDB4MDAsMHg4MCwKLSAgICAweEMyLDB4MjgsMHg4MiwweDIwLDB4NTUsMHhENSwweERCLDB4
QTgsMHhDMywweDI4LDB4ODIsMHgyMCwweEZELDB4RjUsMHhCNywweDJCLAotICAgIDB4QzIsMHgy
OCwweDgyLDB4MjAsMHhGNywweEQ1LDB4RjcsMHhBRSwweEMzLDB4MjgsMHg4MSwweDIwLDB4QUEs
MHg2RiwweEJBLDB4RkMsCi0gICAgMHhBMiwweDI4LDB4ODIsMHgyMCwweERGLDB4RkYsMHhCRiww
eEJDLDB4QzIsMHgyOCwweDgyLDB4MjAsMHhGRiwweDJGLDB4MkYsMHgzRSwKLSAgICAweEUyLDB4
MjgsMHhBMiwweDI4LDB4QUIsMHhBNywweEY1LDB4RDUsMHgwMywweDMxLDB4QzIsMHgyOCwweDAz
LDB4M0IsMHhBNywweEJELAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHg3MiwweEVBLDB4QkEs
MHhGQSwweDAzLDB4MzEsMHhBMiwweDI4LDB4RUYsMHgzNSwweDNGLDB4M0UsCi0gICAgMHgyNCww
eDM5LDB4QzIsMHgyOCwweEZGLDB4OUYsMHg5RiwweDNGLDB4MjQsMHgzOSwweDAzLDB4MzEsMHg1
NSwweEI1LDB4M0YsMHgyQSwKLSAgICAweDg1LDB4NDEsMHhFMiwweDMwLDB4QUQsMHhBOSwweDJG
LDB4MkEsMHhDNiwweDUxLDB4NjMsMHg0MSwweEJGLDB4RUEsMHgwOSwweDAyLAotICAgIDB4MDYs
MHg1QSwweEM2LDB4NTEsMHhBOSwweEVCLDB4QjIsMHgzRSwweDA2LDB4NUEsMHhDNSwweDUxLDB4
RjgsMHhBQSwweDkyLDB4RTIsCi0gICAgMHgwNiwweDVBLDB4QTUsMHg1MSwweEVCLDB4QjcsMHhC
RiwweEE4LDB4NDgsMHg2QSwweEU2LDB4NTksMHhFRiwweEI1LDB4M0IsMHhBRCwKLSAgICAweDY4
LDB4NkEsMHgwNiwweDVBLDB4RTksMHhBNSwweEFGLDB4MkYsMHg4OCwweDcyLDB4MjcsMHg2Miww
eEFGLDB4MjksMHgyNSwweEYzLAotICAgIDB4QTksMHg3MiwweDY4LDB4NkEsMHgyRSwweEFBLDB4
QUEsMHhGNiwweEVBLDB4N0EsMHg2OCwweDZBLDB4RkQsMHhGRiwweEY1LDB4RTMsCi0gICAgMHhD
QSwweDcyLDB4NDgsMHg2QSwweDVFLDB4N0YsMHhFQSwweDhBLDB4QzksMHg3MiwweDY4LDB4NkEs
MHgyRCwweEFFLDB4MjMsMHhDMiwKLSAgICAweEM5LDB4N0EsMHg2OCwweDZBLDB4RUIsMHhDQSww
eEI4LDB4OUEsMHhDOSwweDcyLDB4NjcsMHg2QSwweDhCLDB4QUYsMHg1NywweEZFLAotICAgIDB4
RUEsMHg3QSwweDY4LDB4NkEsMHg4MywweEE1LDB4RkQsMHg3RiwweEM5LDB4N0EsMHg2NywweDZB
LDB4QjgsMHhBRiwweDM3LDB4QUQsCi0gICAgMHhDOSwweDdBLDB4NjcsMHg2QSwweEFDLDB4MkYs
MHg2QSwweDdFLDB4MEEsMHg4MywweEE5LDB4NzIsMHg4QiwweEVGLDB4N0YsMHhGNSwKLSAgICAw
eDBBLDB4ODMsMHhBOCwweDcyLDB4NzgsMHhGQiwweEI1LDB4RkQsMHgwQiwweDgzLDB4ODgsMHg3
MiwweEZELDB4N0YsMHg2OCwweEJCLAotICAgIDB4RTksMHg3QSwweDg4LDB4NzIsMHhBOCwweEY1
LDB4REQsMHg2MywweEU5LDB4N0EsMHg4OCwweDcyLDB4QjAsMHhBQSwweEFCLDB4REYsCi0gICAg
MHhFOSwweDdBLDB4ODgsMHg3MiwweDdFLDB4RkUsMHhBRiwweDI5LDB4RTksMHg3QSwweDg4LDB4
NzIsMHg5NSwweEY3LDB4N0MsMHg2RSwKLSAgICAweEVBLDB4N0EsMHhBOSwweDcyLDB4RUIsMHhD
QSwweDhELDB4NkQsMHhDOSwweDdBLDB4NjgsMHg3MiwweDlBLDB4RjIsMHhFOCwweEFBLAotICAg
IDB4RTksMHg3QSwweDg4LDB4NzIsMHhBQiwweEZELDB4MkQsMHgwRCwweEVBLDB4N0EsMHg4OSww
eDcyLDB4QTIsMHg4MiwweEYwLDB4RDAsCi0gICAgMHhFQSwweDdBLDB4QTksMHg3MiwweEJGLDB4
QkUsMHhCNywweEY1LDB4RUEsMHg3QSwweDg4LDB4NzIsMHg4MiwweDVBLDB4QjYsMHhBQSwKLSAg
ICAweDBCLDB4N0IsMHhBOSwweDcyLDB4QkQsMHhERCwweEJFLDB4RjgsMHgyQiwweDgzLDB4QTks
MHg3MiwweDJBLDB4RUUsMHhGRiwweEZGLAotICAgIDB4MEEsMHg4MywweEE5LDB4NzIsMHhBMiww
eEYyLDB4RkQsMHhCNSwweDRCLDB4ODMsMHhDOSwweDdBLDB4RkQsMHhGRiwweDM1LDB4QTcsCi0g
ICAgMHgyQiwweDgzLDB4RTksMHg3QSwweEZGLDB4RjcsMHhEQywweDdGLDB4MkIsMHg4MywweEU5
LDB4N0EsMHhGQSwweEY1LDB4Q0QsMHg3RCwKLSAgICAweEUyLDB4MzgsMHhBMSwweDMwLDB4OTgs
MHgwOCwweDAyLDB4OEEsMHgwMywweDQxLDB4QzIsMHgzOCwweEE5LDB4RjgsMHgwQSwweEFCLAot
ICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhGRiwweEZGLDB4MEYsMHg4QiwweDAzLDB4NDEsMHhB
MSwweDMwLDB4RTYsMHhCQSwweEFBLDB4QTIsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDdF
LDB4N0YsMHhDRiwweENCLDB4MDIsMHgzOSwweEEyLDB4MzAsMHgyNywweDNCLDB4QUYsMHgyRiwK
LSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4RkEsMHhGRSwweEZDLDB4RjYsMHgwMywweDQxLDB4
QzIsMHgzOCwweEI3LDB4OTUsMHgyRiwweEFCLAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzgsMHg1
QSwweDc4LDB4QTgsMHhGQSwweEUyLDB4MzgsMHhBMSwweDMwLDB4MjEsMHhBMCwweDhBLDB4ODIs
Ci0gICAgMHgwMywweDQxLDB4QTEsMHgzMCwweDJDLDB4QTIsMHhBRSwweEZELDB4MjMsMHgzOSww
eEMyLDB4MzgsMHhERiwweEZGLDB4RjUsMHg0NSwKLSAgICAweEUyLDB4MzgsMHhDMiwweDM4LDB4
MDAsMHgwQSwweDlFLDB4N0YsMHgwMywweDQxLDB4QzIsMHgzOCwweERCLDB4N0IsMHhBQiwweEZG
LAotICAgIDB4MjMsMHg0MSwweEMxLDB4MzAsMHg3QiwweEZGLDB4RkYsMHhCRCwweDAzLDB4Mzks
MHhDMiwweDM4LDB4NUEsMHg3RSwweDA2LDB4OEYsCi0gICAgMHgwMiwweDM5LDB4QTEsMHgzMCww
eDYyLDB4RkEsMHhEMiwweDdBLDB4RTIsMHgzOCwweEMxLDB4MzgsMHhBOSwweDQzLDB4Q0QsMHgy
NywKLSAgICAweEEyLDB4MzgsMHhFMywweDMwLDB4QkEsMHhGQiwweEVBLDB4QUEsMHgwMywweDQx
LDB4QTEsMHgzMCwweEJELDB4OTcsMHhBRSwweDJFLAotICAgIDB4MDMsMHg0MSwweEMyLDB4Mzgs
MHg1RiwweDdCLDB4NUUsMHg1OCwweEUyLDB4MzgsMHhBMiwweDMwLDB4MkUsMHhBOSwweDQzLDB4
N0IsCi0gICAgMHhDMiwweDMwLDB4ODEsMHgzMCwweEI4LDB4QjgsMHhGRiwweEFCLDB4ODMsMHg0
OSwweEMyLDB4MzAsMHgyNSwweDM1LDB4QjUsMHg5NSwKLSAgICAweDI3LDB4NjIsMHhBNSwweDU5
LDB4RTgsMHhFOSwweEFFLDB4QkQsMHhFNSwweDU5LDB4ODQsMHg1MSwweEFBLDB4MjgsMHhFQSww
eDY4LAotICAgIDB4QzUsMHg1MSwweDIyLDB4NDEsMHhGQSwweDc4LDB4RkEsMHg4MiwweDIzLDB4
NDEsMHhDMiwweDMwLDB4QUEsMHhBRiwweEJDLDB4OTgsCi0gICAgMHgyMywweDM5LDB4QzIsMHgz
MCwweEVBLDB4RUEsMHgyQSwweEZFLDB4MjMsMHgzOSwweEUyLDB4MzAsMHg1NywweEVFLDB4RkUs
MHhCQiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4RUEsMHg1QSwweEI4LDB4QTgsMHgwMyww
eDMxLDB4QzIsMHgyOCwweDdFLDB4QkIsMHhCRSwweDIwLAotICAgIDB4RTMsMHgzMCwweEMyLDB4
MjgsMHhENSwweEVGLDB4RkMsMHg1QywweDAzLDB4MzEsMHhDMiwweDI4LDB4RjcsMHhFRiwweDg2
LDB4QUIsCi0gICAgMHgyMywweDM5LDB4QzIsMHgyOCwweDVGLDB4RkYsMHg5RiwweDI1LDB4MDMs
MHgzMSwweEMyLDB4MjgsMHhCRCwweEI3LDB4RjgsMHhDOCwKLSAgICAweDAzLDB4MzEsMHhBMiww
eDI4LDB4OEEsMHg4QSwweEJFLDB4OUUsMHgwMywweDMxLDB4QTMsMHgyOCwweEEyLDB4MjAsMHg4
MCwweEE4LAotICAgIDB4MDMsMHgzMSwweEUzLDB4MzAsMHg1NSwweDVFLDB4NTYsMHhENSwweDIz
LDB4MzEsMHhDMywweDMwLDB4RUYsMHhFRiwweEE3LDB4MzYsCi0gICAgMHgyMywweDM5LDB4QzIs
MHgyOCwweEY1LDB4RkYsMHhBRSwweEY4LDB4MDMsMHgzMSwweEUzLDB4MzAsMHhFRCwweDMzLDB4
OTgsMHg5NywKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4OUEsMHhGRSwweEVFLDB4QUUsMHgw
MywweDMxLDB4QzIsMHgyOCwweDAwLDB4RTYsMHhFQiwweEVFLAotICAgIDB4MDMsMHgzMSwweEMz
LDB4MzAsMHhBQSwweEFCLDB4QTUsMHhBRiwweDI0LDB4MzksMHhDMiwweDMwLDB4MkYsMHhCRSww
eDdBLDB4NzYsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgyOCwweEZCLDB4QjIsMHhGQiwweEExLDB4
MjQsMHgzOSwweEUzLDB4MzAsMHhGQSwweEVGLDB4Q0IsMHgyMCwKLSAgICAweDQ0LDB4MzksMHhF
MywweDMwLDB4M0QsMHhCRCwweEZELDB4RjcsMHg0NCwweDM5LDB4MDMsMHgzOSwweERGLDB4REEs
MHhERiwweDU1LAotICAgIDB4MjMsMHgzOSwweEUzLDB4MzgsMHhBOCwweEVCLDB4RUYsMHg3Riww
eDIzLDB4MzksMHhFMywweDM4LDB4OEEsMHg4RiwweDI3LDB4RUYsCi0gICAgMHgwMywweDM5LDB4
QzIsMHgzMCwweDhFLDB4NkMsMHhGQywweEUwLDB4MjMsMHg0MSwweEUzLDB4MzAsMHg3RCwweEZE
LDB4QTgsMHhBMiwKLSAgICAweDAzLDB4MzksMHhFMiwweDMwLDB4QTcsMHgxNiwweDVDLDB4REMs
MHg2NCwweDQxLDB4MDMsMHgzOSwweDU1LDB4REMsMHg1RCwweEVELAotICAgIDB4NDUsMHg0MSww
eEUzLDB4MzAsMHhBQSwweEZBLDB4NzAsMHg2QSwweDIzLDB4MzksMHhFMywweDM4LDB4N0IsMHg0
QiwweDJGLDB4QkYsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzMCwweDBCLDB4RTMsMHhFOCwweEFB
LDB4MjMsMHgzOSwweEUyLDB4MzAsMHg4MiwweDAyLDB4MjMsMHhCNSwKLSAgICAweDI0LDB4Mzks
MHhFMywweDMwLDB4OEYsMHhDMCwweDgwLDB4QUEsMHgyMywweDM5LDB4RTIsMHgzMCwweEI3LDB4
RkYsMHhEOSwweDZELAotICAgIDB4MDMsMHgzOSwweEUyLDB4MzAsMHhGOCwweEMwLDB4NzgsMHg0
RiwweDAzLDB4MzksMHhFMywweDMwLDB4OTUsMHhENSwweEY1LDB4RUYsCi0gICAgMHg0NSwweDQx
LDB4QzIsMHgzMCwweDA4LDB4OEEsMHg5RiwweDU3LDB4MjQsMHgzOSwweEUzLDB4MzgsMHg4MCww
eEFBLDB4RkUsMHg2RiwKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4QUEsMHg2MiwweDdBLDB4
QkEsMHgyMywweDM5LDB4RTMsMHgzMCwweEFGLDB4QTIsMHhCQSwweDk4LAotICAgIDB4MjMsMHgz
OSwweEUyLDB4MzAsMHhCRSwweERBLDB4NzgsMHhGQSwweDI0LDB4MzksMHhFMiwweDMwLDB4N0Es
MHg3RSwweEY3LDB4QTYsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzMCwweEZCLDB4Q0EsMHhBNyww
eDZDLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhFMCwweEMyLDB4MUEsMHgyMiwKLSAgICAweDQ0LDB4
MzksMHhFMiwweDI4LDB4RDUsMHhGQSwweEVBLDB4RkUsMHgwMywweDMxLDB4QzIsMHgyOCwweDM3
LDB4RTYsMHhBQSwweDgzLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhGNiwweDhBLDB4M0Es
MHhBQSwweDAzLDB4MzEsMHhDMiwweDI4LDB4RTMsMHhGRSwweEJBLDB4MjIsCi0gICAgMHgwMyww
eDMxLDB4QzMsMHgyOCwweDdBLDB4RkQsMHhGRiwweEVBLDB4RTMsMHgzMCwweEEyLDB4MjgsMHhG
QiwweDNFLDB4RUYsMHhGNywKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QkEsMHhCMiwweDJC
LDB4ODMsMHhFMywweDMwLDB4QTIsMHgyOCwweDdBLDB4QkMsMHhFQSwweDgzLAotICAgIDB4RTMs
MHgyOCwweDgyLDB4MjgsMHhCQSwweEVELDB4Q0QsMHg4QSwweEMyLDB4MjgsMHhBMiwweDI4LDB4
NEUsMHgyMCwweDAzLDB4OEEsCi0gICAgMHhFMywweDMwLDB4QTMsMHgyOCwweEZCLDB4RjIsMHhB
OCwweDJFLDB4MDMsMHgzMSwweEEyLDB4MjgsMHhERiwweEJBLDB4RkYsMHg4QiwKLSAgICAweEUy
LDB4MjgsMHhBMiwweDI4LDB4NTcsMHhCRiwweDBBLDB4ODIsMHhFMywweDMwLDB4QTIsMHgyOCww
eDU5LDB4OEYsMHgwMCwweDBBLAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHhENSwweDlELDB4
QUUsMHgwQSwweDAzLDB4MzEsMHhDMiwweDI4LDB4OUYsMHgyRiwweDg1LDB4MkEsCi0gICAgMHgy
NCwweDM5LDB4RTMsMHgzMCwweDU3LDB4N0YsMHg0RiwweEZGLDB4MDMsMHgzOSwweEUzLDB4MzAs
MHgwOSwweDY5LDB4NUQsMHhCNSwKLSAgICAweDQ0LDB4MzksMHhFMywweDMwLDB4QkYsMHhBRCww
eEIzLDB4M0YsMHg2NSwweDQxLDB4MjQsMHgzOSwweEE5LDB4MDMsMHgwQiwweEE1LAotICAgIDB4
MDcsMHg1QSwweDY1LDB4NDksMHg3RiwweEFGLDB4QUYsMHgwRiwweDA2LDB4NUEsMHhBNSwweDQ5
LDB4QkQsMHhFOSwweEVDLDB4MDAsCi0gICAgMHgwNiwweDVBLDB4QzYsMHg1MSwweEJGLDB4MDYs
MHg4MywweDBFLDB4MjcsMHg2MiwweEM1LDB4NTEsMHgyRiwweEY3LDB4Q0UsMHhBMiwKLSAgICAw
eDI2LDB4NjIsMHhDNSwweDUxLDB4QkUsMHg5RSwweEFCLDB4QUIsMHg0NywweDYyLDB4MDcsMHg2
MiwweEYzLDB4RUEsMHg2RSwweERELAotICAgIDB4NjgsMHg2QSwweDA3LDB4NjIsMHhCNSwweDI1
LDB4MDcsMHgyMiwweEE5LDB4NzIsMHg0OCwweDZBLDB4NkIsMHhBMiwweEZGLDB4QUIsCi0gICAg
MHhBOSwweDcyLDB4NDgsMHg2QSwweDNBLDB4M0QsMHhGRiwweEZCLDB4RUEsMHg3QSwweDY4LDB4
NkEsMHhGQywweEZCLDB4N0IsMHg3RCwKLSAgICAweEVBLDB4N0EsMHg4OSwweDcyLDB4MkIsMHhB
QSwweEZELDB4RjUsMHhDOSwweDdBLDB4ODgsMHg2QSwweDBCLDB4QUYsMHg3RiwweDZFLAotICAg
IDB4QzksMHg3QSwweDQ3LDB4NjIsMHg2QSwweEE4LDB4MDIsMHgyQiwweEU5LDB4N0EsMHg2OCww
eDZBLDB4NTcsMHhCRiwweEVFLDB4MEEsCi0gICAgMHhDOSwweDcyLDB4ODgsMHg3MiwweEU4LDB4
RUUsMHgxRiwweEZBLDB4RUEsMHg3QSwweDg3LDB4NkEsMHg3NSwweDc3LDB4QUEsMHgyRiwKLSAg
ICAweEM4LDB4N0EsMHg2NywweDZBLDB4MEEsMHg4RCwweEE4LDB4QTgsMHhFOSwweDdBLDB4Njgs
MHg3MiwweDIzLDB4QUEsMHhBRSwweERFLAotICAgIDB4RTksMHg3QSwweEE5LDB4NzIsMHhGMSww
eDQyLDB4ODAsMHhBOSwweEVBLDB4N0EsMHg4OCwweDcyLDB4M0YsMHhFNiwweEZDLDB4QUYsCi0g
ICAgMHhFQSwweDdBLDB4QTksMHg3QSwweEMyLDB4QTMsMHhBOSwweDU4LDB4MEEsMHg4MywweEE4
LDB4NzIsMHg3RiwweDdBLDB4NjIsMHhDOSwKLSAgICAweEU5LDB4N0EsMHg4OCwweDcyLDB4MEIs
MHgzNywweDk3LDB4QTMsMHgwOSwweDdCLDB4QTksMHg3MiwweEE0LDB4RjIsMHhFQiwweEQ0LAot
ICAgIDB4QzksMHg3QSwweDg4LDB4NzIsMHhGOCwweENFLDB4NkEsMHg2MywweEVBLDB4N0EsMHg4
OCwweDcyLDB4Q0IsMHhCRiwweEFELDB4ODIsCi0gICAgMHgwQSwweDdCLDB4QTgsMHg3MiwweEVE
LDB4QTcsMHg4QiwweEEzLDB4MEEsMHg3QiwweEM5LDB4N0EsMHhGQiwweEFBLDB4RUEsMHhGQywK
LSAgICAweEVBLDB4N0EsMHg4OCwweDZBLDB4RkEsMHhGNiwweDhBLDB4MDgsMHhFQSwweDdBLDB4
NjgsMHg2QSwweDhGLDB4QTcsMHhCNywweEVBLAotICAgIDB4RUEsMHg3QSwweEE5LDB4NzIsMHgy
MCwweDEwLDB4QkYsMHg1RSwweEVBLDB4N0EsMHhBOSwweDcyLDB4ODUsMHgwMiwweEIyLDB4RkQs
Ci0gICAgMHgwQSwweDgzLDB4QTksMHg3MiwweDVELDB4RkQsMHg3RiwweDhFLDB4MEEsMHg4Myww
eEE5LDB4NzIsMHgyNywweEI3LDB4REQsMHhFRiwKLSAgICAweDJBLDB4ODMsMHhDOSwweDdBLDB4
OEUsMHhDQiwweEE1LDB4RDUsMHgwQSwweDgzLDB4QzksMHg3QSwweDM4LDB4N0UsMHg3RSwweEJB
LAotICAgIDB4RTIsMHgzOCwweEMyLDB4MzgsMHg1QiwweDVCLDB4MEEsMHhDOCwweDIzLDB4Mzks
MHhDMiwweDM4LDB4RTcsMHgyNiwweEVGLDB4QUEsCi0gICAgMHgyMywweDM5LDB4QzIsMHgzOCww
eEZELDB4RkYsMHhGMywweEZCLDB4MDIsMHgzOSwweEMyLDB4MzgsMHhFRiwweEY4LDB4RUEsMHg5
RiwKLSAgICAweDAzLDB4NDEsMHhBMSwweDMwLDB4QTIsMHhBQSwweEJBLDB4RkUsMHgwMywweDQx
LDB4QzIsMHgzOCwweEE3LDB4NzgsMHg1QSwweEQ3LAotICAgIDB4RTIsMHgzOCwweEMyLDB4Mzgs
MHhEMCwweEJGLDB4MEYsMHgyMSwweDIzLDB4NDEsMHhDMiwweDM4LDB4NkQsMHhGRCwweENGLDB4
RTMsCi0gICAgMHgwMiwweDM5LDB4QzIsMHgzOCwweEZBLDB4NEEsMHhFMywweEZGLDB4RTIsMHgz
OCwweEExLDB4MzAsMHgyMCwweEIyLDB4MkYsMHgyRSwKLSAgICAweDAzLDB4NDEsMHhBMSwweDMw
LDB4QjcsMHg4QSwweEVBLDB4QkEsMHgwMiwweDM5LDB4QzIsMHgzOCwweEFCLDB4OEIsMHg0Qiww
eDc4LAotICAgIDB4RTIsMHgzOCwweEExLDB4MzAsMHg4OCwweDIwLDB4MDIsMHgwQiwweEUyLDB4
MzgsMHhBMSwweDMwLDB4QTAsMHhBMCwweDYwLDB4RTgsCi0gICAgMHgwMywweDQxLDB4QzIsMHgz
OCwweEVGLDB4RDksMHhGRiwweDJGLDB4MDIsMHgzOSwweEMyLDB4MzgsMHhCNywweEZGLDB4RkYs
MHg2OCwKLSAgICAweDAyLDB4MzksMHhDMiwweDM4LDB4RjYsMHhEQSwweEY3LDB4REQsMHhFMiww
eDM4LDB4QTIsMHgzMCwweDhFLDB4MDAsMHgyOCwweDBDLAotICAgIDB4MDMsMHg0MSwweEMyLDB4
MzgsMHg0OSwweEU3LDB4RjUsMHhENywweDAzLDB4MzksMHhDMiwweDM4LDB4MUQsMHgyRiwweDI5
LDB4MDgsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDZFLDB4N0EsMHg3OCwweDc4LDB4QzIs
MHgzOCwweEExLDB4MzAsMHhDMCwweEZBLDB4RkUsMHg1MCwKLSAgICAweEUyLDB4MzgsMHhBMSww
eDMwLDB4NUYsMHhFNSwweDI1LDB4MzUsMHg4NSwweDUxLDB4QTEsMHgzMCwweEI1LDB4QjUsMHhC
NywweDM3LAotICAgIDB4QTgsMHg3MiwweDQzLDB4NDksMHhCRCwweEVGLDB4RUEsMHhBMiwweEU1
LDB4NTksMHg4NCwweDUxLDB4NjgsMHhDQiwweDBBLDB4MDgsCi0gICAgMHhDNSwweDUxLDB4ODQs
MHg0OSwweDQyLDB4NjIsMHhGRSwweDdFLDB4MjMsMHg0MSwweEMyLDB4MzAsMHhGOCwweDUwLDB4
RjgsMHhGOCwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QUYsMHg2RiwweDVGLDB4ODAsMHgw
MywweDMxLDB4QzIsMHgyOCwweDAyLDB4MjMsMHgyMiwweDFGLAotICAgIDB4MDMsMHgzMSwweEUz
LDB4MzAsMHhCRSwweDVDLDB4NTcsMHg1RiwweDI0LDB4MzksMHhFMywweDMwLDB4NUEsMHg3Riww
eEZELDB4NkIsCi0gICAgMHgyMywweDMxLDB4QzIsMHgzMCwweDc3LDB4RkUsMHg1RiwweEJGLDB4
MDMsMHgzOSwweEMyLDB4MjgsMHhGRiwweDdCLDB4QUIsMHhGMiwKLSAgICAweDAzLDB4MzEsMHhD
MiwweDMwLDB4ODcsMHhGRCwweEVBLDB4RUEsMHgwMywweDMxLDB4QTIsMHgyOCwweENBLDB4RUUs
MHg2QiwweEJGLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MzAsMHhENywweEY1LDB4QjksMHg4Qiww
eDAzLDB4MzEsMHhDMiwweDMwLDB4RUEsMHg3OCwweDdBLDB4NjIsCi0gICAgMHgwMywweDMxLDB4
QzIsMHgzMCwweDgzLDB4QkIsMHhGQiwweEY1LDB4MDMsMHgzMSwweEEyLDB4MzAsMHgyOCwweEFB
LDB4QUUsMHg4QSwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4RTgsMHhCQSwweEUyLDB4NkEs
MHgwMywweDMxLDB4QzIsMHgyOCwweDhBLDB4MEIsMHhBOSwweDNELAotICAgIDB4MjQsMHgzOSww
eEMyLDB4MzAsMHhGRiwweDhFLDB4MkIsMHg5RiwweEUzLDB4MzAsMHhDMiwweDI4LDB4RUEsMHhB
RSwweEVDLDB4RkUsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweDc5LDB4RUEsMHg3RiwweDU1
LDB4MDMsMHgzMSwweEEyLDB4MzAsMHhCQSwweEFFLDB4MkEsMHgyMiwKLSAgICAweDI0LDB4Mzks
MHhFMywweDMwLDB4ODksMHg1RCwweDU1LDB4NTcsMHgyNCwweDM5LDB4QzIsMHgzMCwweDgyLDB4
RUEsMHhCNywweEJGLAotICAgIDB4MjQsMHgzOSwweEUyLDB4MzAsMHhGRSwweDdBLDB4NkIsMHg1
RiwweDAzLDB4MzksMHhDMiwweDMwLDB4QTIsMHhCQiwweEVCLDB4Q0YsCi0gICAgMHgwMywweDM5
LDB4RTMsMHgzMCwweEE4LDB4MkUsMHgyQiwweDk1LDB4MjQsMHgzOSwweEUyLDB4MzAsMHhFQiww
eEFBLDB4RkEsMHg3RiwKLSAgICAweDAzLDB4MzksMHhFMywweDMwLDB4QzEsMHg2OCwweDc4LDB4
RjMsMHgwMywweDM5LDB4RTMsMHgzMCwweEMzLDB4QzcsMHhFRSwweDhCLAotICAgIDB4NDQsMHg0
MSwweEMyLDB4MzAsMHhERiwweDJFLDB4RkYsMHg3RCwweDI0LDB4MzksMHhFMywweDM4LDB4RTAs
MHhGQSwweEVCLDB4RUIsCi0gICAgMHg0NCwweDQxLDB4RTMsMHgzMCwweEEzLDB4RUIsMHg3Riww
eDVGLDB4MDMsMHgzOSwweEUzLDB4MzgsMHg5QywweEI4LDB4NUIsMHgxQiwKLSAgICAweDI0LDB4
MzksMHhFMywweDM4LDB4RUIsMHg4QiwweEZELDB4RDcsMHgwMywweDM5LDB4RTMsMHgzMCwweDIw
LDB4MDAsMHg4MiwweDgzLAotICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHg1NSwweEFGLDB4QUQs
MHg2RCwweDIzLDB4MzksMHhFMywweDMwLDB4MEIsMHg4OSwweEFBLDB4QjcsCi0gICAgMHgyMyww
eDM5LDB4RTIsMHgzOCwweENCLDB4QzIsMHhDMiwweEZBLDB4MjQsMHgzOSwweEUzLDB4MzAsMHhC
RCwweDZELDB4QkYsMHgxNywKLSAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4RjcsMHhBRSwweEVD
LDB4QjgsMHgwMywweDM5LDB4RTMsMHgzMCwweEZFLDB4N0QsMHg5RSwweDIzLAotICAgIDB4MjQs
MHgzOSwweEMzLDB4MzAsMHhBQSwweEI1LDB4QkEsMHhGOCwweDIzLDB4MzksMHhDNCwweDMwLDB4
MEEsMHgyQSwweEIyLDB4QUEsCi0gICAgMHgyMywweDM5LDB4MDMsMHgzMSwweDdGLDB4N0UsMHhC
NiwweDk1LDB4MjMsMHgzOSwweEUyLDB4MzAsMHhFNywweDJGLDB4MkMsMHgzMiwKLSAgICAweDQ0
LDB4MzksMHhFMiwweDMwLDB4RkIsMHg3RSwweEZBLDB4OEEsMHgyMywweDM5LDB4QzIsMHgyOCww
eEFBLDB4OUEsMHhCRSwweDJBLAotICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHg1QSwweEZGLDB4
QkUsMHhBQSwweDAzLDB4MzEsMHhFMywweDMwLDB4MjksMHhGRCwweEQ3LDB4MkMsCi0gICAgMHgy
NCwweDM5LDB4RTMsMHgzMCwweEY4LDB4RkYsMHhGQSwweEUyLDB4MjQsMHgzOSwweEUzLDB4Mjgs
MHhERiwweERGLDB4QkEsMHhCMywKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4NzMsMHhGQSww
eEEwLDB4QUEsMHgwNCwweDMxLDB4QzMsMHgyOCwweEQ3LDB4RDcsMHhCQywweDMwLAotICAgIDB4
MDQsMHgzMSwweEUzLDB4MzAsMHg1NSwweEY1LDB4RUIsMHg3MCwweDI0LDB4MzEsMHhFMywweDMw
LDB4N0YsMHg4RiwweEVGLDB4OTcsCi0gICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEVGLDB4RTAs
MHhFOCwweEEwLDB4MDMsMHgzMSwweEEyLDB4MjgsMHhCNywweEVBLDB4QTIsMHhBMCwKLSAgICAw
eDAzLDB4MzEsMHhDMiwweDI4LDB4MzYsMHhBMiwweDAzLDB4QTIsMHgyMywweDMxLDB4RTMsMHgz
MCwweEQ1LDB4RjcsMHhGRCwweEZBLAotICAgIDB4RTMsMHgzMCwweDAzLDB4MjksMHgyRiwweDJC
LDB4QjAsMHgyMCwweDI0LDB4MzksMHhDMiwweDI4LDB4REYsMHhGQSwweEUyLDB4MjIsCi0gICAg
MHgyNCwweDM5LDB4RTMsMHgzMCwweEJGLDB4ODMsMHg4MSwweEFBLDB4MjQsMHgzOSwweDAzLDB4
MzEsMHg1NywweDU3LDB4RkYsMHgzRiwKLSAgICAweDQ0LDB4NDEsMHhFMywweDMwLDB4N0QsMHhG
OCwweEVFLDB4RkUsMHgyNCwweDM5LDB4RTMsMHgzMCwweDM3LDB4QUEsMHgyMiwweDIwLAotICAg
IDB4NjQsMHg0MSwweDAzLDB4MzEsMHgyNywweDJELDB4QUIsMHgyQSwweEM1LDB4NTEsMHg0Myww
eDM5LDB4RDUsMHhCRiwweEFGLDB4MkEsCi0gICAgMHgwNywweDVBLDB4QTUsMHg0OSwweEI1LDB4
QkYsMHhCRiwweDNGLDB4MjcsMHg2MiwweEU2LDB4NTksMHhDOCwweEFFLDB4MDUsMHgyNywKLSAg
ICAweDI3LDB4NjIsMHhFNiwweDU5LDB4MkYsMHhCQywweEQ2LDB4NzgsMHg0NywweDYyLDB4RTUs
MHg1OSwweDZBLDB4QTIsMHhCRCwweDJELAotICAgIDB4MjcsMHg2MiwweEM1LDB4NTksMHg2RSww
eEMwLDB4QzgsMHhFMCwweDY4LDB4NkEsMHhFNiwweDU5LDB4M0QsMHhBRCwweDM1LDB4QTUsCi0g
ICAgMHg4OCwweDZBLDB4MjcsMHg2MiwweEJGLDB4RDcsMHhERiwweDg3LDB4QTksMHg2QSwweDQ4
LDB4NkEsMHhFRiwweEFFLDB4Q0IsMHhFNywKLSAgICAweEE4LDB4NkEsMHg0OCwweDZBLDB4N0Is
MHg3RiwweDc3LDB4REYsMHg2OCwweDZBLDB4NDcsMHg2MiwweDhCLDB4RTMsMHhGMiwweEUxLAot
ICAgIDB4QTksMHg3MiwweDI3LDB4NjIsMHgyRiwweEJCLDB4QjcsMHhFQiwweEE5LDB4NzIsMHg2
OCwweDZBLDB4MkMsMHg4RiwweDNELDB4QkQsCi0gICAgMHhBOSwweDcyLDB4NDgsMHg2QSwweDBC
LDB4MDIsMHg3MiwweEYwLDB4QzksMHg3QSwweDY3LDB4NkEsMHgyQSwweEJCLDB4RUIsMHhGRCwK
LSAgICAweEU5LDB4N0EsMHg4OCwweDcyLDB4NzgsMHgyRSwweEQ5LDB4NTUsMHhDOSwweDdBLDB4
NDcsMHg2MiwweDJGLDB4OTQsMHhCQSwweEFBLAotICAgIDB4QzksMHg3QSwweDg4LDB4NzIsMHhC
QSwweEJBLDB4MkEsMHhFRiwweEM5LDB4N0EsMHg2NywweDZBLDB4RUEsMHhBMiwweDAwLDB4OEEs
Ci0gICAgMHhDOSwweDdBLDB4QTgsMHg3MiwweDhBLDB4RTksMHg3MiwweEZDLDB4RTksMHg3QSww
eDg4LDB4NzIsMHhFMywweEVFLDB4NzcsMHg1RiwKLSAgICAweEVBLDB4N0EsMHhBOSwweDcyLDB4
NjIsMHhFQiwweDlELDB4NUYsMHgwQSwweDdCLDB4QTgsMHg3MiwweEVGLDB4RkQsMHhGRiwweDlG
LAotICAgIDB4MEEsMHg3QiwweEE4LDB4NzIsMHhDQiwweEYzLDB4NkIsMHhBQiwweEU5LDB4N0Es
MHhBOCwweDcyLDB4RUMsMHhBRCwweDhGLDB4N0YsCi0gICAgMHgwQSwweDdCLDB4QTgsMHg3Miww
eEQ3LDB4QTcsMHgwRSwweDNCLDB4MEEsMHg4MywweEE5LDB4NkEsMHhFRSwweEQ3LDB4RjcsMHhF
MiwKLSAgICAweEVBLDB4N0EsMHhBOSwweDcyLDB4RTgsMHg0NywweEJGLDB4NUYsMHhFQSwweDdB
LDB4QTksMHg3MiwweEJGLDB4RkEsMHhGQiwweDdFLAotICAgIDB4RUEsMHg3QSwweEE5LDB4NzIs
MHgzQywweEFBLDB4QkMsMHg0RiwweEVBLDB4N0EsMHg4OSwweDcyLDB4OUEsMHhGRSwweDBFLDB4
MDYsCi0gICAgMHhFQSwweDdBLDB4QTksMHg3MiwweDdFLDB4QjMsMHhBRSwweEZGLDB4RUEsMHg3
QSwweDg4LDB4NkEsMHhFRiwweDU4LDB4QTIsMHgwMCwKLSAgICAweDBCLDB4ODMsMHhBOSwweDcy
LDB4ODIsMHhCRCwweDk3LDB4QkYsMHgwQSwweDdCLDB4QzksMHg3QSwweEZDLDB4QUIsMHg2Miww
eENFLAotICAgIDB4MEEsMHg3QiwweEE4LDB4NzIsMHhERiwweEJFLDB4M0IsMHhBMywweDBBLDB4
ODMsMHhDOSwweDdBLDB4ODMsMHgwMSwweEMwLDB4RkUsCi0gICAgMHgyMywweDQxLDB4QzIsMHgz
OCwweEZFLDB4QkMsMHhGRiwweDdGLDB4MDIsMHgzOSwweEMyLDB4MzgsMHhBMCwweEJFLDB4QkYs
MHg3RCwKLSAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4NUUsMHhGQSwweEJCLDB4Q0YsMHhDMiww
eDQwLDB4MDMsMHgzOSwweEZCLDB4RUYsMHhBQiwweDlGLAotICAgIDB4MDMsMHg0MSwweEMyLDB4
MzgsMHg1RSwweEFDLDB4QTksMHhCRCwweDAzLDB4NDEsMHhDMiwweDM4LDB4RDUsMHhGRiwweEVB
LDB4QzAsCi0gICAgMHgyMywweDQxLDB4QzIsMHgzOCwweEJELDB4RDUsMHhENywweDdGLDB4MDMs
MHg0MSwweEMyLDB4MzgsMHg5OCwweDlELDB4RjcsMHhENSwKLSAgICAweDAzLDB4NDEsMHhBMSww
eDMwLDB4OUEsMHhFMiwweDg4LDB4QUYsMHgwMywweDM5LDB4QzIsMHgzOCwweEZGLDB4QUYsMHgw
QSwweDJCLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhEQiwweEY4LDB4N0EsMHhGNiwweEUy
LDB4MzgsMHhDMSwweDMwLDB4NzgsMHgxOCwweDAwLDB4ODIsCi0gICAgMHhFMiwweDM4LDB4QzIs
MHgzOCwweDdGLDB4NzAsMHg2MCwweDBGLDB4MDMsMHg0MSwweEExLDB4MzAsMHg3RSwweEVGLDB4
QUIsMHhBQSwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4OEIsMHg3OSwweDdFLDB4RkUsMHhF
MiwweDM4LDB4QTIsMHgzMCwweDAwLDB4OEEsMHhGMCwweDIwLAotICAgIDB4RTIsMHgzOCwweEMy
LDB4MzgsMHg3MywweEVCLDB4MDAsMHhFMCwweEUzLDB4MzgsMHhDMiwweDM4LDB4MkMsMHhERSww
eEQ0LDB4RjAsCi0gICAgMHhFMiwweDM4LDB4QzIsMHgzOCwweDBCLDB4RTIsMHg2QiwweEVELDB4
MDMsMHg0MSwweEMyLDB4MzgsMHhERSwweDU1LDB4RkIsMHhFMywKLSAgICAweDAzLDB4MzksMHhB
MiwweDMwLDB4RTIsMHg2QSwweEZBLDB4REUsMHhDMiwweDM4LDB4ODEsMHgzMCwweEJFLDB4QUEs
MHgyOCwweDM3LAotICAgIDB4RTIsMHgzOCwweEEyLDB4MzAsMHgyNSwweDNGLDB4MEEsMHgwMyww
eDI2LDB4NjIsMHhFMiwweDM4LDB4QkQsMHgzNSwweDJELDB4MkQsCi0gICAgMHhDOCwweDdBLDB4
NDcsMHg2QSwweDdGLDB4RUEsMHhFMiwweEMwLDB4NDcsMHg2QSwweEU1LDB4NTksMHg3QiwweDc4
LDB4N0EsMHhFQSwKLSAgICAweEU2LDB4NTksMHg2NCwweDQ5LDB4RkMsMHg3RSwweDcyLDB4N0Es
MHg0MywweDQxLDB4QzIsMHgzMCwweERFLDB4REUsMHhGRSwweEYyLAotICAgIDB4MjMsMHgzOSww
eEUyLDB4MzAsMHhGMywweDU5LDB4REUsMHhGRiwweDAzLDB4MzksMHhDMiwweDI4LDB4N0IsMHhF
QiwweEFFLDB4RjAsCi0gICAgMHgwMywweDMxLDB4RTMsMHgzMCwweDQwLDB4N0EsMHhERiwweEQ3
LDB4MDMsMHgzMSwweEMzLDB4MzAsMHg4MiwweDhBLDB4M0UsMHhERSwKLSAgICAweDAzLDB4MzEs
MHhFMywweDMwLDB4MzUsMHhENywweDU3LDB4NTksMHgwMywweDMxLDB4QzMsMHgzMCwweEUwLDB4
RjIsMHhCMCwweEIwLAotICAgIDB4MDMsMHgzMSwweEUzLDB4MzAsMHhCNSwweDY1LDB4NjUsMHhC
RCwweDAzLDB4MzEsMHhDMiwweDI4LDB4RkYsMHhGRSwweEZBLDB4QTIsCi0gICAgMHhFMiwweDMw
LDB4QzIsMHgyOCwweDAyLDB4MDksMHgwQiwweDMwLDB4MDMsMHgzMSwweEMyLDB4MzAsMHhBQiww
eEQ3LDB4RkYsMHhGQiwKLSAgICAweEUzLDB4MzAsMHhDMywweDI4LDB4M0EsMHhBQywweDA4LDB4
QUEsMHgwMywweDMxLDB4QzMsMHgzMCwweEEyLDB4OEIsMHgwQSwweEE5LAotICAgIDB4RTMsMHgz
MCwweEMyLDB4MzAsMHgwMCwweDBDLDB4ODMsMHhEOCwweEUzLDB4MzAsMHhDMiwweDI4LDB4MDgs
MHg4QywweEI4LDB4NjAsCi0gICAgMHgwMywweDMxLDB4QzIsMHgyOCwweEJFLDB4RkIsMHhBOSww
eEVCLDB4MDMsMHgzOSwweEMzLDB4MjgsMHhCNywweEY3LDB4QUEsMHhFQiwKLSAgICAweDAzLDB4
MzEsMHhDMiwweDMwLDB4OUYsMHgwRSwweEVBLDB4RUIsMHgwMywweDMxLDB4QzMsMHgzMCwweDBG
LDB4MkIsMHgyRiwweEFGLAotICAgIDB4MDMsMHgzMSwweEUzLDB4MzAsMHg4NiwweEU3LDB4Nzcs
MHhCRCwweEEyLDB4MzgsMHgwMywweDMxLDB4REYsMHg3RiwweEZGLDB4QkQsCi0gICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweEI4LDB4RDgsMHhERSwweEMyLDB4MDMsMHgzOSwweEMyLDB4MzAsMHgy
RiwweDFELDB4OUYsMHhERiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4OTcsMHgwOCwweDBD
LDB4MkEsMHgwMywweDM5LDB4RTIsMHgzMCwweEMwLDB4RTMsMHhCNiwweEE4LAotICAgIDB4MDMs
MHgzOSwweEUyLDB4MzAsMHgzMiwweEJGLDB4RkYsMHhBMywweDI0LDB4MzksMHhDMiwweDMwLDB4
QTgsMHhGNywweDlELDB4RkYsCi0gICAgMHhFMywweDM4LDB4QTIsMHgzMCwweEI4LDB4QkUsMHhC
RSwweEVFLDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBMiwweEEzLDB4QjksMHgwRCwKLSAgICAweDAz
LDB4MzksMHhDMywweDMwLDB4QjAsMHhDOCwweEFBLDB4RUEsMHgyNCwweDM5LDB4QzIsMHgzMCww
eDJCLDB4RkYsMHg2NywweEZFLAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHgxQiwweDE1LDB4
MkQsMHgwMSwweDAzLDB4MzksMHhDMywweDMwLDB4MDAsMHgwQSwweEFFLDB4M0UsCi0gICAgMHgy
MywweDM5LDB4RTMsMHgzMCwweDhFLDB4MjcsMHg5NywweDM1LDB4MjMsMHgzOSwweEUzLDB4Mzgs
MHg3RiwweEIwLDB4QUYsMHhCNywKLSAgICAweDAzLDB4MzksMHhDMywweDMwLDB4M0IsMHgwNyww
eEZGLDB4MjAsMHgyNCwweDM5LDB4RTMsMHgzMCwweDdGLDB4NkUsMHhBQiwweEI4LAotICAgIDB4
NDQsMHg0MSwweEUzLDB4MzAsMHhFQiwweEVBLDB4NkEsMHhEQiwweDI0LDB4MzksMHhDMiwweDMw
LDB4QkEsMHhCNiwweEJCLDB4MkEsCi0gICAgMHgwMywweDM5LDB4RTMsMHgzOCwweDI4LDB4MjAs
MHhBMCwweDI4LDB4MjQsMHg0MSwweEUzLDB4MzAsMHhGRSwweERFLDB4QUIsMHgwMywKLSAgICAw
eDI0LDB4MzksMHhFMywweDMwLDB4OUYsMHhENSwweDJFLDB4QUMsMHgyMywweDM5LDB4RTIsMHgz
MCwweDJCLDB4MjAsMHgyMCwweDdBLAotICAgIDB4NDQsMHgzOSwweEUyLDB4MzAsMHgyRSwweEFB
LDB4RkUsMHhGNSwweDQ0LDB4MzksMHhFMiwweDMwLDB4QUEsMHhBOCwweEE3LDB4QkQsCi0gICAg
MHg0NCwweDM5LDB4MDMsMHgzMSwweDJELDB4MkIsMHg5RiwweDJFLDB4NDQsMHgzOSwweDAzLDB4
MzksMHg1NywweEZFLDB4RUIsMHhBMiwKLSAgICAweDQ0LDB4MzksMHhFMywweDMwLDB4RUYsMHg3
NiwweEE4LDB4RTAsMHgyNCwweDM5LDB4MDMsMHgzMSwweEY5LDB4RjUsMHg4QiwweDAzLAotICAg
IDB4NDQsMHgzOSwweDAzLDB4MzEsMHhCNSwweEFBLDB4RUEsMHgwOCwweDI0LDB4MzksMHhFMyww
eDMwLDB4QkUsMHhCQywweEE4LDB4OEEsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweEJGLDB4
RjYsMHgyRSwweEE4LDB4MjQsMHgzOSwweEUzLDB4MzAsMHhCOCwweDVBLDB4RkUsMHhDQSwKLSAg
ICAweDI0LDB4MzksMHhFMywweDMwLDB4REEsMHhCRiwweEJELDB4MjMsMHgyNCwweDM5LDB4RTMs
MHgzMCwweDU2LDB4QkUsMHhGRCwweENFLAotICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhCQSww
eENFLDB4NkIsMHhDQiwweDI0LDB4MzksMHhFMywweDMwLDB4QjAsMHhBQiwweDY5LDB4NkEsCi0g
ICAgMHg0NSwweDQxLDB4QzIsMHgzMCwweEY3LDB4RjcsMHhBRiwweEE4LDB4MjQsMHgzOSwweDAz
LDB4MzEsMHg5RCwweEY1LDB4OTYsMHhBNiwKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4RUIs
MHhFQSwweEVBLDB4OEIsMHgyNCwweDM5LDB4RTMsMHgzMCwweDIwLDB4MDIsMHgwNywweDg5LAot
ICAgIDB4NjUsMHg0MSwweDAzLDB4MzksMHg1QywweEY1LDB4RjcsMHhGNSwweDY1LDB4NDksMHgw
MywweDM5LDB4RjcsMHhGQSwweEEzLDB4OEEsCi0gICAgMHhBNiwweDQ5LDB4NDQsMHg0MSwweDdE
LDB4NzUsMHg3RiwweDBCLDB4RTcsMHg1MSwweDY1LDB4NDEsMHgzRCwweEFELDB4MkIsMHg4QSwK
LSAgICAweDA2LDB4NUEsMHhBNSwweDUxLDB4OUEsMHhBQiwweDJBLDB4OEEsMHgwNywweDYyLDB4
QTUsMHg1MSwweEZFLDB4OUIsMHhDMiwweEUwLAotICAgIDB4MjcsMHg2MiwweEM2LDB4NTksMHhD
MCwweEZFLDB4NUYsMHg5NSwweDQ3LDB4NjIsMHhFNiwweDU5LDB4M0YsMHhCRCwweEJCLDB4OEYs
Ci0gICAgMHg4OCwweDZBLDB4RTYsMHg1OSwweEQ3LDB4RkIsMHhBMiwweEVBLDB4NjgsMHg2Miww
eDA2LDB4NUEsMHhCNywweDNFLDB4OEEsMHhFQSwKLSAgICAweDg5LDB4NkEsMHgyNywweDYyLDB4
ODksMHgwRCwweEU5LDB4RUYsMHg4OCwweDcyLDB4NDcsMHg2MiwweENBLDB4NzksMHhGQiwweEZF
LAotICAgIDB4QTksMHg3MiwweDQ4LDB4NjIsMHhGRSwweDZBLDB4N0IsMHg3QywweDg4LDB4NkEs
MHg0OCwweDZBLDB4RkYsMHhBRiwweEY1LDB4RkYsCi0gICAgMHg4OCwweDcyLDB4NDgsMHg2QSww
eEU4LDB4N0UsMHhGRiwweDJGLDB4QTksMHg3MiwweDY4LDB4NkEsMHhERCwweEQ1LDB4RTksMHg4
QSwKLSAgICAweEE5LDB4NzIsMHg2OCwweDZBLDB4NzYsMHg5QywweEZFLDB4QkIsMHhBOSwweDcy
LDB4NDcsMHg2QSwweEVDLDB4OTgsMHgzNywweEI3LAotICAgIDB4QzksMHg3MiwweDg4LDB4NkEs
MHg1NSwweDUzLDB4MkEsMHg4RCwweEM5LDB4NzIsMHg4OCwweDcyLDB4RUQsMHhBRSwweEI4LDB4
QjYsCi0gICAgMHhFOSwweDdBLDB4ODgsMHg3MiwweDZGLDB4RkYsMHg1RSwweEY4LDB4QzksMHg3
QSwweDg4LDB4NzIsMHg2RiwweEFGLDB4REEsMHg4QiwKLSAgICAweEE4LDB4NzIsMHg0OCwweDZB
LDB4MDgsMHgwQSwweERDLDB4RjgsMHhDOSwweDdBLDB4NjgsMHg2QSwweDJBLDB4QkMsMHhGNyww
eEZBLAotICAgIDB4RTksMHg3QSwweDg4LDB4NzIsMHg3QSwweEU2LDB4MEYsMHhBQiwweEM5LDB4
NzIsMHg2OCwweDZBLDB4MzIsMHg3NiwweEZGLDB4QkMsCi0gICAgMHhFOSwweDdBLDB4ODgsMHg3
MiwweEE4LDB4MkIsMHhGMiwweEI1LDB4MEEsMHg3QiwweEE4LDB4NzIsMHg1RiwweDc3LDB4QzMs
MHgzQSwKLSAgICAweEVBLDB4NzIsMHg4OCwweDZBLDB4M0YsMHhGRSwweDZBLDB4RUMsMHgwQSww
eDdCLDB4QTksMHg3MiwweDhBLDB4QUYsMHhGNywweDdGLAotICAgIDB4RUEsMHg3QSwweDg4LDB4
NkEsMHhCQSwweDIyLDB4N0EsMHhFQiwweEVBLDB4N0EsMHhBOSwweDcyLDB4NUIsMHhBMCwweEE5
LDB4MjksCi0gICAgMHhFQSwweDdBLDB4ODgsMHg2QSwweDBGLDB4QUIsMHhBNywweDBGLDB4MEIs
MHg4MywweDY3LDB4NkEsMHgwQSwweEMyLDB4RkUsMHg5NywKLSAgICAweEU5LDB4N0EsMHhBOSww
eDcyLDB4REYsMHhCRSwweEEzLDB4NEYsMHgyQSwweDdCLDB4Q0EsMHg3QSwweEVELDB4N0QsMHhG
RiwweDZGLAotICAgIDB4MEEsMHg3QiwweEM5LDB4N0EsMHg3MiwweEJGLDB4MkYsMHgyRiwweDJB
LDB4ODMsMHhDOSwweDcyLDB4RjUsMHhDRiwweEMzLDB4RUIsCi0gICAgMHhFOSwweDdBLDB4ODcs
MHg2QSwweEMwLDB4NDAsMHhBQSwweEE4LDB4MEEsMHg3QiwweEE5LDB4NzIsMHhFNSwweDI1LDB4
QUMsMHhFRiwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4RUUsMHhDOCwweEY2LDB4RTYsMHgw
MywweDQxLDB4QzIsMHgzOCwweEE5LDB4Q0IsMHhDRiwweEVGLAotICAgIDB4MDMsMHg0MSwweEUy
LDB4MzgsMHhFNywweDU1LDB4ODUsMHhBOSwweDAzLDB4NDEsMHhDMiwweDM4LDB4OEIsMHhGQiww
eDdBLDB4NjgsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEJBLDB4RkIsMHhBMSwweENCLDB4
MjMsMHg0MSwweEMyLDB4MzgsMHhFQSwweDNCLDB4REUsMHg5QSwKLSAgICAweEMzLDB4NDAsMHgw
MiwweDM5LDB4RkYsMHhCRiwweEY1LDB4REYsMHgwMywweDQxLDB4QzIsMHgzOCwweEQ3LDB4MkQs
MHhFMiwweEZBLAotICAgIDB4MDMsMHg0MSwweEEyLDB4MzAsMHhCRiwweEZGLDB4NjIsMHhDQSww
eEUzLDB4MzgsMHhBMSwweDMwLDB4QjAsMHg5RiwweEFELDB4M0QsCi0gICAgMHhFMiwweDM4LDB4
QzIsMHgzMCwweDJGLDB4N0MsMHgyMCwweDgwLDB4MDMsMHg0MSwweEMyLDB4MzgsMHgzRiwweDJE
LDB4OEIsMHhCRiwKLSAgICAweDAzLDB4NDEsMHhBMSwweDMwLDB4QkUsMHhCNiwweEFFLDB4ODIs
MHgwMywweDQxLDB4QzIsMHgzOCwweEY2LDB4RkYsMHgyNiwweEJBLAotICAgIDB4MDMsMHg0MSww
eEMyLDB4MzgsMHhGRiwweERGLDB4N0EsMHg4RiwweEMyLDB4MzgsMHhFMiwweDMwLDB4M0EsMHhB
MiwweDIwLDB4MkIsCi0gICAgMHhDMiwweDM4LDB4RTIsMHgzMCwweEFBLDB4ODAsMHgyMCwweEFC
LDB4MDMsMHg0MSwweEExLDB4MzAsMHhFQiwweEVGLDB4RjksMHg4RSwKLSAgICAweDAzLDB4Mzks
MHhDMiwweDM4LDB4N0YsMHg3RiwweDdFLDB4RkUsMHgwMywweDM5LDB4QTIsMHgzMCwweEUzLDB4
RTMsMHhFQiwweDdBLAotICAgIDB4RTIsMHgzOCwweDgxLDB4MzAsMHg2MiwweDVFLDB4QkEsMHhB
RiwweEUzLDB4MzgsMHg4MSwweDI4LDB4OTcsMHhBNywweDgyLDB4ODgsCi0gICAgMHgwMywweDM5
LDB4QTIsMHgzMCwweEUxLDB4RUIsMHhGRCwweEI1LDB4QzcsMHg3QSwweEUyLDB4MzgsMHgyRCww
eDJELDB4MkQsMHgyNSwKLSAgICAweDA4LDB4ODMsMHg2NywweDZBLDB4RTIsMHg2QSwweEZBLDB4
RUEsMHg2NywweDZBLDB4NjQsMHg0OSwweEE4LDB4RTgsMHhFMCwweDc4LAotICAgIDB4QzUsMHg1
OSwweDAzLDB4MzksMHhGMCwweEZFLDB4RDYsMHg1NywweDQ0LDB4NDEsMHhFMiwweDMwLDB4RUIs
MHhGMiwweDcyLDB4RUEsCi0gICAgMHgyMywweDM5LDB4QzIsMHgyOCwweDJBLDB4RkEsMHg2Riww
eEVFLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhCMCwweEE5LDB4RkQsMHhFOSwKLSAgICAweDAzLDB4
MzEsMHhDMiwweDI4LDB4QUIsMHhFRSwweEFGLDB4QUYsMHgwMywweDMxLDB4QzIsMHgzMCwweEYy
LDB4ODIsMHhCMiwweEExLAotICAgIDB4MDMsMHgzMSwweEMzLDB4MzAsMHhFQiwweDAxLDB4MkYs
MHhCQSwweDAzLDB4MzEsMHhDMiwweDI4LDB4RTIsMHhFOCwweDgwLDB4NDIsCi0gICAgMHgwMyww
eDMxLDB4QzIsMHgyOCwweDNFLDB4MkIsMHgyQSwweEFELDB4MDMsMHgzMSwweEMzLDB4MzAsMHgw
RSwweDBCLDB4RTgsMHhGOCwKLSAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4RUMsMHhDRSwweEE3
LDB4MDIsMHgwMywweDMxLDB4QzMsMHgzMCwweEJELDB4OUQsMHhENywweEJGLAotICAgIDB4RTMs
MHgzMCwweEMyLDB4MjgsMHhBMiwweEVBLDB4RjAsMHhFNywweEUzLDB4MzAsMHhDMiwweDI4LDB4
MDIsMHgwMSwweDZBLDB4ODYsCi0gICAgMHgwMywweDMxLDB4QzMsMHgzMCwweEZBLDB4MkUsMHg2
MywweDYzLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhGQSwweDkyLDB4REIsMHhCRiwKLSAgICAweDAz
LDB4MzEsMHhDMiwweDMwLDB4RkUsMHhGRSwweEFCLDB4OEUsMHgwMywweDMxLDB4QzMsMHgzMCww
eDdCLDB4RkYsMHgyQSwweDBFLAotICAgIDB4MDMsMHgzMSwweEEyLDB4MjgsMHhGQSwweEQ2LDB4
RkUsMHhDQywweEUzLDB4MzAsMHhBMiwweDI4LDB4MjIsMHhGQSwweEExLDB4MEIsCi0gICAgMHgw
MywweDMxLDB4QzIsMHgyOCwweDJBLDB4QTksMHg1RiwweDdFLDB4MDMsMHgzMSwweEMyLDB4MzAs
MHg3QywweEY3LDB4NjUsMHg3MywKLSAgICAweEUzLDB4MzAsMHhDMiwweDI4LDB4MDAsMHgyQiww
eDk1LDB4REEsMHgyMywweDM5LDB4QzIsMHgyOCwweEYyLDB4Q0IsMHhGNywweEI3LAotICAgIDB4
MDMsMHgzMSwweEUyLDB4MzAsMHhDMywweEMyLDB4Q0YsMHg1NywweDIzLDB4MzEsMHhDMiwweDMw
LDB4QTcsMHg2RSwweEUzLDB4RTMsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweDAyLDB4MjAs
MHhFQywweDY4LDB4MDMsMHgzOSwweEMyLDB4MzAsMHg4OCwweDAwLDB4RjgsMHgwQiwKLSAgICAw
eDAzLDB4MzksMHhDMiwweDMwLDB4N0UsMHhFQSwweEEyLDB4MEEsMHgwMywweDM5LDB4QzMsMHgz
MCwweDJBLDB4MzcsMHhBQiwweERCLAotICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhFRSwweEFB
LDB4QUUsMHhGNSwweDI0LDB4MzksMHhDMywweDMwLDB4QzIsMHg3QSwweEI4LDB4QjIsCi0gICAg
MHgyNCwweDM5LDB4RTMsMHgzMCwweEE5LDB4QUYsMHhBQiwweEI3LDB4MjQsMHgzOSwweEUzLDB4
MzAsMHg1NSwweERFLDB4RjcsMHg3QSwKLSAgICAweDI0LDB4NDEsMHhFMywweDMwLDB4MDksMHhC
RSwweEJELDB4NjUsMHgyNCwweDM5LDB4RTMsMHgzOCwweEI0LDB4MzYsMHhGNCwweEQ3LAotICAg
IDB4MjQsMHg0MSwweEMzLDB4MzAsMHg4QSwweDg4LDB4RTMsMHhEQSwweDI0LDB4MzksMHhFMyww
eDM4LDB4NTcsMHhGQiwweEUyLDB4MkYsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzOCwweDZELDB4
N0EsMHg3MiwweEVDLDB4MjQsMHgzOSwweEUzLDB4MzgsMHgzMywweDNCLDB4MzksMHhCNywKLSAg
ICAweDI0LDB4MzksMHhFMywweDMwLDB4QkYsMHhCNiwweEEyLDB4QTIsMHgyNCwweDM5LDB4MDMs
MHgzOSwweEJFLDB4NTUsMHg1RiwweDU1LAotICAgIDB4MjMsMHgzOSwweEU0LDB4MzAsMHhGQSww
eEVBLDB4RUIsMHhBMiwweDAzLDB4MzksMHhDMiwweDMwLDB4M0YsMHhCRiwweEVFLDB4MDIsCi0g
ICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweERGLDB4RDcsMHhGQywweEFCLDB4MDMsMHgzMSwweEMy
LDB4MzAsMHgyMiwweEJGLDB4MkUsMHgwMCwKLSAgICAweDI0LDB4MzksMHhFMiwweDMwLDB4M0Es
MHhCRiwweDc4LDB4QTgsMHg2NSwweDQxLDB4RTMsMHgzMCwweEUzLDB4QkIsMHhBNSwweEE3LAot
ICAgIDB4NjQsMHg0MSwweDA0LDB4MzEsMHg3QiwweEVFLDB4RjAsMHhBQiwweDQ0LDB4MzksMHgw
MywweDMxLDB4QUEsMHhFMiwweEU4LDB4NzAsCi0gICAgMHg0NCwweDQxLDB4MjQsMHgzOSwweENC
LDB4NzksMHg1NSwweDM1LDB4NDQsMHgzOSwweDA0LDB4MzksMHg2QSwweDZCLDB4N0EsMHhCQSwK
LSAgICAweDI0LDB4NDEsMHgwMywweDMxLDB4RjcsMHhCRSwweEE3LDB4MEUsMHg2NCwweDQxLDB4
MDMsMHgzOSwweEZELDB4RjcsMHhFNSwweEZGLAotICAgIDB4NDQsMHg0MSwweEUzLDB4MzAsMHhG
MiwweEUyLDB4QzIsMHhBQSwweDQ0LDB4MzksMHhFMywweDMwLDB4NjIsMHg2MiwweEJCLDB4QUIs
Ci0gICAgMHg0NCwweDQxLDB4RTMsMHgzMCwweEVCLDB4NzMsMHhCQSwweEIyLDB4MjQsMHg0MSww
eDAzLDB4MzEsMHg3RiwweEFGLDB4QkIsMHgwOCwKLSAgICAweDQ0LDB4NDEsMHhFMywweDMwLDB4
QjcsMHhGQiwweEJBLDB4QTgsMHg0NCwweDQxLDB4MDMsMHgzOSwweDdFLDB4RkEsMHgyRiwweDAx
LAotICAgIDB4NjUsMHg0MSwweDAzLDB4MzksMHhERCwweEY3LDB4Q0EsMHgyMywweDY1LDB4NDEs
MHgwNCwweDM5LDB4NzUsMHhGNywweDJFLDB4MEMsCi0gICAgMHhDNiwweDUxLDB4RTMsMHgzOCww
eDVGLDB4NUYsMHhBRiwweDJCLDB4QzYsMHg1MSwweDI0LDB4MzksMHhCRCwweEZELDB4MkIsMHgw
MCwKLSAgICAweDI3LDB4NjIsMHg4NSwweDQ5LDB4RjUsMHhCRCwweEEzLDB4QTIsMHgyNywweDYy
LDB4QTUsMHg0OSwweEJELDB4RkUsMHhBRSwweDBBLAotICAgIDB4MjcsMHg2MiwweEM2LDB4NTEs
MHhFRCwweEVGLDB4RkEsMHhBOCwweDA3LDB4NjIsMHhFNiwweDU5LDB4QkEsMHg5NSwweEI1LDB4
MkYsCi0gICAgMHg0NywweDZBLDB4RTYsMHg1OSwweEJELDB4QUIsMHgwMiwweDgwLDB4NDcsMHg2
MiwweDA3LDB4NjIsMHgzRCwweDYyLDB4MDIsMHgwMCwKLSAgICAweDg4LDB4NkEsMHgyNywweDYy
LDB4RDIsMHg0MiwweDdELDB4NUYsMHg2OCwweDZBLDB4MDcsMHg2MiwweEFFLDB4QUEsMHgxRiww
eEJELAotICAgIDB4QTgsMHg3MiwweDQ3LDB4NkEsMHg3RCwweEFBLDB4QUYsMHhERiwweEE5LDB4
NzIsMHg0NywweDYyLDB4QTcsMHhCRiwweEI4LDB4RkEsCi0gICAgMHhBOCwweDcyLDB4NDgsMHg2
MiwweEVGLDB4NUUsMHhGRSwweEE4LDB4QTksMHg3MiwweDI3LDB4NjIsMHhBQSwweDNFLDB4QTcs
MHgyQSwKLSAgICAweEE5LDB4NzIsMHg2OCwweDZBLDB4RDYsMHg3NywweENGLDB4OUUsMHhDQSww
eDcyLDB4NDgsMHg2QSwweEFELDB4QUIsMHhBQiwweDc4LAotICAgIDB4QTgsMHg3MiwweDQ3LDB4
NjIsMHhBQSwweDJFLDB4RkYsMHhCOCwweEE5LDB4NzIsMHg2NywweDZBLDB4RUUsMHg0NiwweEEw
LDB4MDIsCi0gICAgMHhBOCwweDcyLDB4NDcsMHg2MiwweDBCLDB4ODksMHgyNywweDAyLDB4Qzks
MHg3QSwweDg4LDB4NkEsMHhBQSwweDlCLDB4NkYsMHhFMSwKLSAgICAweEVBLDB4N0EsMHg2Nyww
eDZBLDB4RjgsMHhCNiwweEJGLDB4RkQsMHhDOSwweDcyLDB4QTgsMHg3MiwweEFELDB4MTUsMHhC
RiwweDdBLAotICAgIDB4QzksMHg3MiwweDY4LDB4NkEsMHg3QywweEZCLDB4QzksMHhBQiwweEM5
LDB4NzIsMHg4OSwweDcyLDB4NDMsMHg4OSwweEJGLDB4QUEsCi0gICAgMHhFQiwweDdBLDB4QTks
MHg3MiwweEQ1LDB4RDUsMHhGMywweEFGLDB4QzksMHg3MiwweDg4LDB4NkEsMHhGNSwweEY1LDB4
OTYsMHhFMiwKLSAgICAweEM4LDB4NzIsMHg2OCwweDZBLDB4RkUsMHhGQSwweDJCLDB4MUYsMHhD
OSwweDcyLDB4NjcsMHg2QSwweDMwLDB4QUUsMHhFQSwweEFBLAotICAgIDB4QzksMHg3MiwweDg4
LDB4NzIsMHgwMCwweDBCLDB4M0QsMHg5QSwweEU5LDB4N0EsMHg2OCwweDZBLDB4NjgsMHhFQSww
eEJDLDB4RkEsCi0gICAgMHhFQSwweDdBLDB4ODgsMHg2QSwweEQ1LDB4QkIsMHhBMywweEFELDB4
RUEsMHg3QSwweEE5LDB4NzIsMHg4MSwweDAyLDB4N0UsMHhBRCwKLSAgICAweEVBLDB4N0EsMHhB
OSwweDcyLDB4MzksMHgyOCwweDAzLDB4MkEsMHgwQSwweDdCLDB4QTgsMHg3MiwweDU2LDB4OEUs
MHgyQywweEJFLAotICAgIDB4MEEsMHg3QiwweEE5LDB4NzIsMHg1NywweEY1LDB4NzAsMHhBMCww
eDBCLDB4ODMsMHg4OSwweDcyLDB4OEYsMHg2RiwweDZGLDB4OUYsCi0gICAgMHhFOSwweDdBLDB4
QTksMHg3MiwweDBDLDB4MjMsMHg2RSwweEQ2LDB4MEEsMHg3QiwweEM5LDB4NzIsMHhFMywweEJE
LDB4QkYsMHhBRCwKLSAgICAweDJCLDB4ODMsMHhDOSwweDcyLDB4NUYsMHg3NywweEQ3LDB4MkEs
MHgyQiwweDgzLDB4QTgsMHg3MiwweEFGLDB4QUIsMHhBNiwweEYwLAotICAgIDB4MjMsMHg0MSww
eEMyLDB4MzgsMHg1NCwweDVFLDB4NUUsMHg1RSwweDAzLDB4NDEsMHhDMiwweDM4LDB4QkYsMHg4
MSwweEY5LDB4QTMsCi0gICAgMHgwMiwweDQxLDB4QzIsMHgzOCwweDhBLDB4MkEsMHhCQSwweEI1
LDB4MDMsMHg0MSwweEUyLDB4MzgsMHhGMywweEQ1LDB4RjcsMHg1NiwKLSAgICAweDAzLDB4NDEs
MHhDMiwweDM4LDB4N0MsMHhFOCwweEFBLDB4RjcsMHgyMywweDQxLDB4RTIsMHgzOCwweDczLDB4
RUIsMHhGNSwweDU1LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHg3NiwweERFLDB4OTAsMHhE
QSwweDAzLDB4NDEsMHhDMiwweDM4LDB4NkUsMHg2RSwweEZBLDB4QUEsCi0gICAgMHhFMiwweDM4
LDB4QzIsMHgzMCwweDBCLDB4OEQsMHgyNywweERFLDB4MDIsMHg0MSwweEExLDB4MzAsMHhCNyww
eEJBLDB4QUUsMHhBOCwKLSAgICAweEUyLDB4MzgsMHhDMSwweDM4LDB4NDAsMHhGQSwweDRCLDB4
N0MsMHhFMiwweDM4LDB4QzEsMHgzMCwweDZFLDB4MzcsMHgyMiwweDAxLAotICAgIDB4MDIsMHg0
MSwweEEyLDB4MzAsMHhBQSwweDg2LDB4MjIsMHhFMiwweDAzLDB4NDEsMHhDMiwweDM4LDB4N0Ys
MHhGQSwweEY4LDB4REYsCi0gICAgMHhFMiwweDM4LDB4QzIsMHgzOCwweDI5LDB4QjUsMHhEOCww
eDNCLDB4RTIsMHgzOCwweEMyLDB4MzgsMHhBRiwweEJBLDB4NTgsMHhERiwKLSAgICAweDAzLDB4
MzksMHhDMiwweDM4LDB4RkIsMHhENywweDk1LDB4QkEsMHgwMywweDM5LDB4QzIsMHgzOCwweEZF
LDB4QkIsMHg2QSwweDU4LAotICAgIDB4RTIsMHgzOCwweEEyLDB4MzAsMHhBQSwweEI4LDB4RkEs
MHhFRSwweEMyLDB4MzAsMHg4MiwweDMwLDB4QjAsMHhGOCwweEJBLDB4QjIsCi0gICAgMHgwMyww
eDM5LDB4QTIsMHgzMCwweEY1LDB4QTUsMHgyRiwweEFGLDB4RTIsMHgzOCwweEMyLDB4MzAsMHgw
QiwweDJDLDB4RjYsMHg3NCwKLSAgICAweEUyLDB4MzgsMHhBMiwweDMwLDB4REYsMHg1RSwweDdB
LDB4RkIsMHg4NywweDcyLDB4RTIsMHgzOCwweDBELDB4MkQsMHhCRCwweEQ1LAotICAgIDB4QTcs
MHg3MiwweDY0LDB4NDksMHgwMCwweEE4LDB4N0YsMHg1NSwweDI2LDB4NjIsMHgyMywweDQxLDB4
NzgsMHg1RSwweDdGLDB4NzUsCi0gICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweDFGLDB4RkIsMHhF
OCwweEEwLDB4MjMsMHgzOSwweEUyLDB4MzAsMHhGOCwweEQ3LDB4REYsMHhFRSwKLSAgICAweDI0
LDB4MzksMHhFMiwweDMwLDB4RkYsMHg4OSwweDY2LDB4N0UsMHgwMywweDMxLDB4QzIsMHgzMCww
eEE4LDB4MzMsMHhCQiwweEVBLAotICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHhENSwweDc1LDB4
NzUsMHhERSwweDAzLDB4MzEsMHhDMywweDMwLDB4MEIsMHhCNywweEYzLDB4QjAsCi0gICAgMHgw
MywweDMxLDB4QzIsMHgyOCwweEFGLDB4N0UsMHhBQiwweEM4LDB4MDMsMHgzMSwweEMzLDB4MzAs
MHhGNiwweEVFLDB4QUUsMHhBNywKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4M0QsMHhGRiww
eEQ3LDB4REIsMHgwMywweDMxLDB4QzIsMHgzMCwweEZFLDB4RUUsMHhBRSwweEVBLAotICAgIDB4
RTMsMHgzMCwweEMyLDB4MjgsMHgyRCwweDM1LDB4MjgsMHgwOCwweDAzLDB4MzEsMHhDMiwweDMw
LDB4RTUsMHg1RSwweEFDLDB4RUIsCi0gICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweEE5LDB4QTcs
MHgyQSwweDAwLDB4RTIsMHgzMCwweEMyLDB4MjgsMHgyRiwweDBCLDB4QTgsMHhBMCwKLSAgICAw
eDIzLDB4MzEsMHhDMiwweDMwLDB4NkIsMHhGRiwweDdELDB4NUYsMHgwMywweDMxLDB4QzIsMHgz
MCwweEVGLDB4MkYsMHgyRiwweDNBLAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHg1NSwweDU1
LDB4QjcsMHg1RSwweDI0LDB4MzksMHhFMywweDMwLDB4QkYsMHhERiwweEVGLDB4RUQsCi0gICAg
MHgwMywweDM5LDB4QzIsMHgzMCwweEZFLDB4RkUsMHhGOCwweEY4LDB4MDMsMHgzMSwweEMyLDB4
MjgsMHg5NywweEQ1LDB4RTYsMHgwRiwKLSAgICAweDI0LDB4MzksMHhDMiwweDI4LDB4RjcsMHhC
RiwweEI1LDB4QUYsMHgwMywweDMxLDB4QzIsMHgzMCwweEYyLDB4QzgsMHhBQSwweENBLAotICAg
IDB4RTMsMHgzMCwweEMyLDB4MjgsMHhBMiwweDdGLDB4RTYsMHgyMCwweDAzLDB4MzEsMHhDMiww
eDI4LDB4QjYsMHhBRiwweEY3LDB4N0UsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEZGLDB4
QjYsMHhCRiwweEFELDB4MDQsMHgzMSwweEUyLDB4MzAsMHhGRCwweEYzLDB4MUUsMHgyNSwKLSAg
ICAweDAzLDB4MzEsMHhDMiwweDI4LDB4REYsMHg3RiwweDcwLDB4ODAsMHgwMywweDMxLDB4QzIs
MHgzMCwweEFCLDB4RUIsMHhGRCwweEVBLAotICAgIDB4MDMsMHgzMSwweEUzLDB4MzAsMHgwOSww
eDdCLDB4N0EsMHg1NSwweDAzLDB4MzksMHhDMywweDMwLDB4QjIsMHhCRSwweEE4LDB4RjcsCi0g
ICAgMHgwMywweDM5LDB4RTMsMHgzMCwweEY1LDB4QkUsMHgxQiwweEJFLDB4MjQsMHgzOSwweEUz
LDB4MzAsMHg3RiwweEJGLDB4RkIsMHhCMiwKLSAgICAweDI0LDB4MzksMHhFMywweDMwLDB4RDYs
MHg3RSwweERBLDB4N0EsMHgyNCwweDQxLDB4MDMsMHgzMSwweEZGLDB4RUIsMHhFMywweDhELAot
ICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHg1NSwweDc3LDB4RTAsMHhGOCwweDI0LDB4NDEsMHhF
MywweDM4LDB4RjUsMHhCRCwweEJELDB4RDIsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweDU3
LDB4QUUsMHgzQSwweEFBLDB4MjQsMHgzOSwweEMzLDB4MzgsMHgwQiwweEFBLDB4QkUsMHhBQSwK
LSAgICAweEUzLDB4MzgsMHgyNCwweDMxLDB4RUEsMHhBQSwweEFFLDB4QTYsMHgyNCwweDQxLDB4
RTMsMHgzMCwweEVGLDB4OEEsMHg4OCwweEFELAotICAgIDB4NDQsMHgzOSwweEUzLDB4MzgsMHg3
RCwweEZELDB4RjksMHhCRiwweDI0LDB4MzksMHhDMywweDM4LDB4QkEsMHhBQSwweDgyLDB4MjAs
Ci0gICAgMHgyNCwweDM5LDB4MDMsMHgzOSwweDNFLDB4NkUsMHhBMCwweDVDLDB4MjMsMHgzOSww
eEUzLDB4MzAsMHgwOSwweDJBLDB4QkEsMHhEQiwKLSAgICAweDI0LDB4MzksMHgwMywweDMxLDB4
NUEsMHhCMiwweDhCLDB4N0QsMHgyMywweDM5LDB4RTMsMHgzMCwweDAwLDB4RjAsMHg2QSwweEFG
LAotICAgIDB4NDQsMHgzOSwweDAzLDB4MzEsMHhGRCwweDhGLDB4Q0YsMHg2NywweDY1LDB4NDEs
MHhFMywweDMwLDB4Q0YsMHhFRiwweDc5LDB4QkYsCi0gICAgMHg0NCwweDM5LDB4RTMsMHgzMCww
eDJCLDB4QUYsMHhGRiwweEY3LDB4MjMsMHgzOSwweEUzLDB4MzAsMHgwMCwweEI4LDB4RUUsMHg3
RSwKLSAgICAweDY0LDB4NDEsMHhDMiwweDMwLDB4MkEsMHhBRiwweEZGLDB4NzcsMHg0NCwweDQx
LDB4MDQsMHgzOSwweDJDLDB4MjAsMHhBQSwweDE1LAotICAgIDB4NjUsMHg0OSwweDI0LDB4NDEs
MHg3RSwweEVFLDB4RkIsMHgwQSwweDY0LDB4NDEsMHgwMywweDM5LDB4NUEsMHhGQSwweEVBLDB4
MjgsCi0gICAgMHg2NCwweDQxLDB4MDMsMHgzOSwweEZGLDB4QTUsMHhBRSwweDNDLDB4ODYsMHg0
OSwweDAzLDB4MzksMHhGNywweEFELDB4OEEsMHg4OCwKLSAgICAweDY1LDB4NDEsMHgwNCwweDM5
LDB4REYsMHhFQiwweDM4LDB4MDAsMHg4NSwweDQ5LDB4MjQsMHgzOSwweEQ1LDB4QkYsMHhCQiww
eDAyLAotICAgIDB4ODUsMHg0OSwweDI0LDB4MzksMHg3RCwweEZGLDB4QjgsMHhFMCwweEE2LDB4
NTEsMHgyMywweDM5LDB4RjksMHhFQiwweDhBLDB4QUEsCi0gICAgMHg4NSwweDQ5LDB4MjQsMHg0
MSwweEY3LDB4MEEsMHgwMiwweDhFLDB4QTUsMHg1MSwweDQ0LDB4NDEsMHhENSwweEFFLDB4RkUs
MHgwQiwKLSAgICAweEU2LDB4NTksMHg4NSwweDQ5LDB4OTUsMHgzRCwweDNGLDB4REYsMHgwNiww
eDVBLDB4QzYsMHg1MSwweEJGLDB4M0YsMHhFMywweDlCLAotICAgIDB4MjcsMHg2MiwweEM1LDB4
NTEsMHgyMCwweDA4LDB4QTksMHgyOSwweDQ3LDB4NjIsMHgwNiwweDVBLDB4RDUsMHhGNSwweDdE
LDB4QkQsCi0gICAgMHg0OCwweDZBLDB4MDcsMHg1QSwweEZGLDB4QUYsMHhBNSwweDI3LDB4NDgs
MHg2MiwweEU2LDB4NTksMHhGNywweEJBLDB4MkYsMHg4NywKLSAgICAweDY4LDB4NkEsMHgwNiww
eDVBLDB4RkEsMHhFQSwweDhCLDB4ODcsMHg2NywweDZBLDB4MjcsMHg2MiwweDRBLDB4QjAsMHgz
RSwweEJGLAotICAgIDB4NjgsMHg2QSwweDA2LDB4NUEsMHgyQSwweEJFLDB4N0MsMHg3QiwweDg4
LDB4NkEsMHgyNywweDYyLDB4OTcsMHhEOSwweEJELDB4MEYsCi0gICAgMHhBOCwweDcyLDB4NDcs
MHg2MiwweERGLDB4QkYsMHhDQSwweDgyLDB4QzksMHg3MiwweDY3LDB4NkEsMHgyQiwweDM1LDB4
RDUsMHg1NywKLSAgICAweEE4LDB4NzIsMHg2OCwweDZBLDB4QkIsMHhFOCwweEE4LDB4RkYsMHhB
OSwweDcyLDB4NDcsMHg2MiwweERGLDB4NTUsMHg2QiwweDJBLAotICAgIDB4QTksMHg3MiwweDQ3
LDB4NjIsMHg5RSwweEI1LDB4MjcsMHhCRSwweEM5LDB4NzIsMHg4OCwweDZBLDB4N0EsMHhFQSww
eDZBLDB4Q0YsCi0gICAgMHhBOSwweDcyLDB4NDcsMHg2MiwweEVBLDB4MjIsMHgwOSwweDAyLDB4
QzksMHg3MiwweDg4LDB4NkEsMHgzOSwweDk2LDB4NUYsMHg1NywKLSAgICAweEM5LDB4NzIsMHg4
OCwweDcyLDB4ODAsMHhFQSwweEJFLDB4RkQsMHhDOSwweDdBLDB4NjgsMHg2QSwweEM5LDB4QUIs
MHhBQSwweEI3LAotICAgIDB4QzksMHg3MiwweDY3LDB4NkEsMHhDOSwweEUwLDB4QTgsMHhEQSww
eEE4LDB4NzIsMHg2OCwweDZBLDB4NzAsMHg5RiwweERGLDB4RUEsCi0gICAgMHhDOSwweDdBLDB4
NjgsMHg2QSwweEZBLDB4QkYsMHhCMywweEE1LDB4QTksMHg3MiwweDY4LDB4NkEsMHgyRSwweEFB
LDB4OTgsMHhEQiwKLSAgICAweENBLDB4N0EsMHg2OCwweDZBLDB4MjgsMHhCRiwweEZFLDB4RUYs
MHhDOSwweDcyLDB4NjgsMHg2QSwweEUwLDB4QUUsMHg4OSwweEI5LAotICAgIDB4QzksMHg3QSww
eDY4LDB4NkEsMHhCNywweDA1LDB4OEUsMHhFQSwweEU5LDB4N0EsMHg4OCwweDZBLDB4QkIsMHhC
QSwweEEyLDB4RDUsCi0gICAgMHhFQSwweDdBLDB4ODgsMHg2QSwweDdBLDB4RTgsMHg1QSwweDc5
LDB4Q0EsMHg3QSwweDY3LDB4NkEsMHg4QSwweEMxLDB4MkIsMHgwQSwKLSAgICAweEM5LDB4NzIs
MHg4OSwweDcyLDB4OTksMHhCNywweDI2LDB4QjIsMHhDOSwweDcyLDB4NjgsMHg2QSwweDI4LDB4
QUIsMHhGNywweEZDLAotICAgIDB4QzksMHg3MiwweDI2LDB4NjIsMHgwMCwweDAwLDB4MDIsMHhB
NiwweEU5LDB4N0EsMHg4NywweDZBLDB4QkEsMHhFRSwweEEzLDB4QTcsCi0gICAgMHhFQSwweDdB
LDB4ODgsMHg2QSwweDAyLDB4QUIsMHhGQiwweEZBLDB4Q0EsMHg3QSwweDY4LDB4NkEsMHgzOSww
eEZBLDB4MkEsMHgwRiwKLSAgICAweENBLDB4N0EsMHg2OCwweDZBLDB4MEEsMHg4RCwweDJBLDB4
QUIsMHgwQSwweDgzLDB4QTksMHg3MiwweDJCLDB4QUYsMHhGNSwweDU2LAotICAgIDB4MEEsMHg3
QiwweEM5LDB4NzIsMHhFQSwweEY4LDB4RkIsMHg5NSwweDBBLDB4N0IsMHhBOCwweDcyLDB4QTAs
MHg3RSwweERBLDB4N0YsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweEZGLDB4OUIsMHg3Myww
eERCLDB4MDMsMHg0MSwweEMyLDB4MzgsMHg2QSwweDUwLDB4RjIsMHhFMiwKLSAgICAweDAzLDB4
NDEsMHhBMiwweDM4LDB4RUYsMHhGMiwweDdBLDB4NkIsMHgwMiwweDM5LDB4QTEsMHgzMCwweEFC
LDB4QTMsMHhGOSwweEZCLAotICAgIDB4MDIsMHg0MSwweEEyLDB4MzAsMHhCRSwweEFBLDB4MjYs
MHg4RiwweDAzLDB4MzksMHhDMiwweDM4LDB4RkYsMHhFOCwweEJDLDB4RjYsCi0gICAgMHhFMiww
eDM4LDB4QTEsMHgzMCwweEEwLDB4RkEsMHhENywweEQ3LDB4RTMsMHgzOCwweEExLDB4MzAsMHgw
MiwweDgzLDB4QkUsMHgxNiwKLSAgICAweEUyLDB4MzgsMHhBMiwweDMwLDB4QUEsMHhBMywweDhB
LDB4MDAsMHgwMiwweDM5LDB4QzIsMHgzOCwweEFFLDB4RDYsMHhBRiwweDk5LAotICAgIDB4RTIs
MHgzOCwweEExLDB4MzAsMHhBMCwweEYwLDB4REUsMHhBQSwweDAzLDB4NDEsMHhDMiwweDM4LDB4
REYsMHhBRiwweDJGLDB4NzksCi0gICAgMHgwMywweDM5LDB4QzIsMHgzOCwweDlBLDB4RUMsMHhG
RSwweEVGLDB4MDIsMHgzOSwweEExLDB4MzgsMHhFQSwweEE4LDB4NkEsMHhCQSwKLSAgICAweEUy
LDB4MzgsMHhBMiwweDMwLDB4RkEsMHhBQiwweEEzLDB4QTAsMHhFMiwweDM4LDB4QzIsMHgzOCww
eDA1LDB4QTMsMHhDMiwweDYwLAotICAgIDB4RTIsMHgzOCwweEMyLDB4MzAsMHgwMiwweDhGLDB4
QkYsMHhFRiwweEUyLDB4MzgsMHg4MSwweDMwLDB4QjAsMHhEQiwweEQzLDB4N0EsCi0gICAgMHhF
MywweDM4LDB4QTIsMHgzMCwweDRBLDB4N0EsMHhERCwweEZELDB4MDMsMHgzOSwweEEyLDB4MzAs
MHg1RCwweDlELDB4MzUsMHhERCwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4OUEsMHhFQSww
eEVBLDB4REYsMHgwMywweDM5LDB4QTIsMHgyOCwweEJDLDB4MTgsMHhFRSwweEVCLAotICAgIDB4
MDMsMHgzOSwweDgxLDB4MzAsMHhCRSwweEVDLDB4QkYsMHg3RCwweEUzLDB4MzgsMHhBMSwweDMw
LDB4MEIsMHhBQiwweEZGLDB4NzUsCi0gICAgMHgyMywweDQxLDB4QTIsMHgzMCwweDBCLDB4RUYs
MHg3RCwweERGLDB4MjQsMHg0MSwweDgxLDB4MzAsMHg4MiwweEFFLDB4RkYsMHhENywKLSAgICAw
eDI0LDB4NDEsMHhBMSwweDMwLDB4QTAsMHhCQSwweEZGLDB4RDUsMHgyMywweDM5LDB4RTMsMHgz
MCwweEFFLDB4QUEsMHg3QiwweDY5LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGQSwweEYy
LDB4RkYsMHhGRiwweDAzLDB4MzEsMHhDMiwweDMwLDB4MjksMHgzNSwweEJGLDB4RkYsCi0gICAg
MHgwMywweDMxLDB4QzIsMHgyOCwweDgwLDB4QkUsMHhGQiwweEZELDB4MjQsMHgzOSwweEMzLDB4
MjgsMHhEQSwweDdCLDB4Q0YsMHhGQSwKLSAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4NzMsMHg2
RCwweERELDB4OTcsMHhFMywweDMwLDB4QzMsMHgyOCwweDBCLDB4RTMsMHhBMiwweEU4LAotICAg
IDB4MDMsMHgzMSwweEMzLDB4MzAsMHhCQSwweDNFLDB4QUEsMHhBQiwweDAzLDB4MzEsMHhDMiww
eDI4LDB4QTgsMHhFMCwweDZBLDB4RkEsCi0gICAgMHhFMywweDMwLDB4QzIsMHgyOCwweDE4LDB4
MUYsMHg4RiwweEJGLDB4MDMsMHgzMSwweEMyLDB4MzAsMHhFNywweEZFLDB4QkYsMHhGRCwKLSAg
ICAweDAzLDB4MzEsMHhDMiwweDI4LDB4RUIsMHhFNywweERFLDB4NzMsMHgwMywweDMxLDB4QzIs
MHgyOCwweEVBLDB4QUIsMHhFQywweERELAotICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHhCMiww
eEQ3LDB4ODAsMHgzQSwweDI0LDB4MzksMHhDMiwweDMwLDB4MkIsMHhFQiwweEI5LDB4NUIsCi0g
ICAgMHgyMywweDM5LDB4QzMsMHgzMCwweEZFLDB4RjksMHhFQSwweEUyLDB4MjQsMHgzOSwweEMy
LDB4MzAsMHg4MiwweDdCLDB4RkQsMHhENywKLSAgICAweDAzLDB4MzksMHhFMywweDMwLDB4RTcs
MHg3NSwweDU1LDB4NTQsMHgwNCwweDM5LDB4RTMsMHgzMCwweDA5LDB4NTUsMHg1NSwweDU1LAot
ICAgIDB4RTMsMHgzMCwweEMyLDB4MzAsMHgwOCwweEEwLDB4QjAsMHgwMCwweDAzLDB4MzEsMHhD
MiwweDI4LDB4OEYsMHg4QSwweDJBLDB4QTcsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweDgw
LDB4QUEsMHhCNSwweDM2LDB4MDMsMHgzMSwweEMzLDB4MzAsMHhGRSwweEYwLDB4RkUsMHhFRSwK
LSAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4QUIsMHhGQSwweEVELDB4QkUsMHgyNCwweDM5LDB4
QzIsMHgzMCwweDBGLDB4MEYsMHhCQiwweEY3LAotICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHhB
NywweDNFLDB4QkYsMHhFRiwweDAzLDB4MzksMHhDMywweDMwLDB4NzYsMHhFRSwweENBLDB4ODAs
Ci0gICAgMHgwMywweDMxLDB4QTIsMHgzMCwweEFBLDB4MjIsMHhBQSwweEIyLDB4MDMsMHgzMSww
eEMyLDB4MzAsMHhERSwweEJBLDB4MkIsMHgzQSwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4
QUEsMHhCOCwweDcwLDB4NzAsMHgwMywweDMxLDB4QzIsMHgyOCwweDAwLDB4MjAsMHhCRiwweDJE
LAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHhFOCwweEE2LDB4NUUsMHg1RiwweDI0LDB4Mzks
MHhFMywweDMwLDB4MkYsMHgyRiwweDc3LDB4NzUsCi0gICAgMHgwMywweDM5LDB4RTMsMHgzMCww
eDhCLDB4MjAsMHgyMCwweDNBLDB4MjQsMHgzOSwweDAzLDB4MzksMHg3RiwweDZGLDB4MjUsMHhG
NSwKLSAgICAweDI0LDB4NDEsMHgwMywweDM5LDB4NjMsMHg1QiwweDVFLDB4NTYsMHg0NCwweDM5
LDB4RTMsMHgzOCwweEZELDB4RkYsMHg3RiwweEE1LAotICAgIDB4MjQsMHgzOSwweEUzLDB4Mzgs
MHg3RiwweDdGLDB4RkEsMHhBMywweDI0LDB4MzksMHhFMywweDM4LDB4QTUsMHgzNywweEJFLDB4
RkYsCi0gICAgMHgwMywweDM5LDB4QzMsMHgzMCwweDAwLDB4MDAsMHhFMiwweEUyLDB4MjQsMHgz
OSwweEMzLDB4MzgsMHhBMCwweDJBLDB4QjIsMHhBMiwKLSAgICAweDQ0LDB4NDEsMHhFMywweDM4
LDB4REUsMHhBRSwweDNFLDB4MzcsMHg0NCwweDQxLDB4RTMsMHgzMCwweERGLDB4QkIsMHhFRSww
eDJFLAotICAgIDB4NDQsMHg0MSwweEUzLDB4MzAsMHhFQSwweDUzLDB4NkUsMHhFOCwweDQ0LDB4
NDEsMHhFMywweDMwLDB4QkEsMHgwQSwweEFELDB4RUYsCi0gICAgMHgyNCwweDM5LDB4MDMsMHgz
OSwweDgwLDB4OTgsMHg5NSwweDE1LDB4NDQsMHgzOSwweDAzLDB4MzksMHhGRiwweDk3LDB4QUYs
MHhBOCwKLSAgICAweDY1LDB4NDEsMHhFMywweDMwLDB4RDcsMHg3RSwweDJBLDB4MkUsMHgyNCww
eDQxLDB4MDMsMHgzOSwweDVELDB4NzksMHg2RiwweDQ4LAotICAgIDB4NDQsMHg0MSwweEMzLDB4
MzAsMHg3RiwweDdCLDB4QUIsMHgwMiwweDQ1LDB4NDEsMHgwMywweDM5LDB4MTUsMHhENSwweDdE
LDB4QUYsCi0gICAgMHg2NSwweDQxLDB4RTIsMHgzMCwweDI4LDB4MkYsMHhCRCwweEY3LDB4ODUs
MHg0OSwweDIzLDB4MzksMHgwQSwweDgwLDB4QUEsMHg2RCwKLSAgICAweDg1LDB4NDksMHg0NCww
eDQxLDB4QkUsMHgzMiwweDgyLDB4MDksMHhBNSwweDQ5LDB4NDQsMHg0MSwweEZFLDB4RkEsMHhB
QSwweDNFLAotICAgIDB4QTYsMHg0OSwweDQ1LDB4NDEsMHhCNiwweEI2LDB4OUUsMHhGRSwweEM2
LDB4NTEsMHg2NSwweDQ5LDB4RUEsMHg4QSwweEU3LDB4OTcsCi0gICAgMHhBNSwweDUxLDB4NjUs
MHg0OSwweEFCLDB4MjIsMHhBQSwweDNGLDB4QzYsMHg1MSwweDg1LDB4NDksMHg3RCwweEU2LDB4
MUUsMHhBQiwKLSAgICAweEM2LDB4NTEsMHg2NSwweDQ5LDB4NzcsMHg5RiwweEI2LDB4MEUsMHgw
NiwweDVBLDB4NDQsMHg0MSwweEFELDB4QUIsMHhBQSwweDJBLAotICAgIDB4MjcsMHg2MiwweDg1
LDB4NDksMHhBRCwweDNGLDB4MkYsMHgyRSwweDQ3LDB4NjIsMHhDNiwweDU5LDB4RjYsMHg4QSww
eEFBLDB4QUUsCi0gICAgMHgyNywweDYyLDB4RTYsMHg1OSwweDI1LDB4M0IsMHhGMiwweEM4LDB4
NDcsMHg2MiwweDA2LDB4NUEsMHhFMiwweEJGLDB4QTksMHg1NywKLSAgICAweDQ3LDB4NjIsMHgw
NywweDYyLDB4QkYsMHhGMiwweDIyLDB4OEUsMHg4OCwweDZBLDB4MDYsMHg1QSwweEFELDB4RkYs
MHhGRiwweDNCLAotICAgIDB4NjcsMHg2QSwweDA2LDB4NjIsMHhBRSwweEZELDB4RkIsMHg2MCww
eDY3LDB4NkEsMHhFNiwweDU5LDB4M0EsMHhBRiwweENELDB4MjcsCi0gICAgMHg2NywweDZBLDB4
MjYsMHg2MiwweDdBLDB4QjIsMHhGQiwweEI4LDB4ODgsMHg2QSwweDI3LDB4NjIsMHhCRiwweEEy
LDB4OUEsMHhENSwKLSAgICAweEE4LDB4NzIsMHg2OCwweDZBLDB4M0IsMHhCRiwweEZGLDB4RjUs
MHg4OCwweDZBLDB4MjcsMHg2MiwweDgwLDB4MkUsMHhBNywweEJFLAotICAgIDB4ODgsMHg2QSww
eDI3LDB4NjIsMHhEMiwweDdBLDB4QkEsMHhCQSwweEE4LDB4NzIsMHgwNywweDYyLDB4MkIsMHhG
NywweEQ3LDB4RkUsCi0gICAgMHhBOCwweDcyLDB4NDcsMHg2MiwweEVBLDB4QzgsMHhBQiwweDJE
LDB4QzksMHg3MiwweDY4LDB4NkEsMHgyQSwweDIzLDB4RkYsMHg1NSwKLSAgICAweEM5LDB4NzIs
MHg2OCwweDZBLDB4MkEsMHhBQSwweDJCLDB4MjUsMHgwQSwweDgzLDB4ODgsMHg2QSwweEZGLDB4
N0YsMHg3QSwweEEyLAotICAgIDB4QzksMHg3MiwweDY4LDB4NkEsMHg3OCwweEVBLDB4RUEsMHhB
MCwweEVBLDB4N0EsMHg2OCwweDZBLDB4RjUsMHg5RSwweDJGLDB4RkYsCi0gICAgMHhDOSwweDcy
LDB4ODgsMHg2QSwweEQ2LDB4OUYsMHhGOCwweDlCLDB4QTksMHg3MiwweDY4LDB4NkEsMHhFMiww
eDY2LDB4RkUsMHhGQSwKLSAgICAweEE5LDB4NkEsMHg0OCwweDZBLDB4QkYsMHhERiwweEZGLDB4
M0IsMHg4OSwweDZBLDB4NDgsMHg2QSwweDY4LDB4NEEsMHhCRSwweDI4LAotICAgIDB4QzksMHg3
MiwweDQ4LDB4NjIsMHg4QSwweEFGLDB4RTcsMHhGRiwweEM5LDB4NzIsMHg2OCwweDZBLDB4QTgs
MHhFOCwweDdGLDB4NUYsCi0gICAgMHhDQSwweDdBLDB4NjgsMHg2QSwweENBLDB4OEEsMHgzQiww
eDI5LDB4RTksMHg3QSwweDg4LDB4NkEsMHhFRiwweEY5LDB4MkEsMHg4MywKLSAgICAweEM5LDB4
N0EsMHg2NywweDZBLDB4ODEsMHhDMywweENBLDB4QTYsMHhFQSwweDdBLDB4QTksMHg3MiwweEEx
LDB4ODUsMHhBRCwweDU2LAotICAgIDB4RUEsMHg3QSwweDg4LDB4NkEsMHg3RSwweDdBLDB4Njgs
MHhFMCwweEE5LDB4NzIsMHg0NywweDYyLDB4MDIsMHhFOSwweEJGLDB4QUUsCi0gICAgMHhBOCww
eDcyLDB4NDcsMHg2MiwweDhFLDB4ODAsMHg4MCwweEU4LDB4RTksMHg3QSwweDg4LDB4NkEsMHgx
RCwweEZELDB4N0QsMHgxQiwKLSAgICAweEU5LDB4N0EsMHg4OSwweDZBLDB4RkIsMHg3RSwweEVB
LDB4RTIsMHhFQSwweDdBLDB4ODgsMHg2QSwweEFCLDB4OEIsMHhFRiwweDM3LAotICAgIDB4MEEs
MHg3QiwweDg5LDB4NkEsMHg3QiwweDdFLDB4QjAsMHgyMiwweEM5LDB4NzIsMHg2OCwweDZBLDB4
MEUsMHgwQSwweDJDLDB4MjYsCi0gICAgMHgwQSwweDdCLDB4QTksMHg3MiwweDhCLDB4QTIsMHhE
NSwweERELDB4MDksMHg3QiwweEE5LDB4NzIsMHhBRSwweDhGLDB4QUQsMHhCRiwKLX07Ci0KLXN0
YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfMV93aWR0aCA9IDI1NjsKLXN0YXRpYyBjb25zdCBzaXpl
X3QgcGl4ZWxfMV9oZWlnaHQgPSAyNTY7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzFfc2l6
ZSA9IDMyNzY4Owotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcGl4ZWxfMV9kYXRhWzMyNzY4
XSA9Ci17Ci0gICAgMHhBOCwweDZBLDB4ODQsMHg0OSwweDVCLDB4NTUsMHhBRCwweDBELDB4NDYs
MHg2MiwweDIzLDB4MzksMHhENiwweERGLDB4RkUsMHhGOCwKLSAgICAweDA2LDB4NUEsMHgwMiww
eDM5LDB4QTIsMHg1NywweDdFLDB4QUUsMHg2NywweDYyLDB4RTIsMHgzMCwweERGLDB4RkYsMHgw
QiwweEZGLAotICAgIDB4QzUsMHg0OSwweEUyLDB4MzAsMHhBMiwweDVBLDB4RTgsMHhCRSwweDg4
LDB4NjIsMHgwMiwweDMxLDB4NUYsMHhBRiwweDJGLDB4RDUsCi0gICAgMHhDNSwweDQ5LDB4MDMs
MHgzOSwweDVGLDB4NzgsMHg2OCwweEVGLDB4NjcsMHg1QSwweEUyLDB4MzAsMHhGRiwweDhCLDB4
QkQsMHg1NywKLSAgICAweEE1LDB4NDksMHhFMiwweDMwLDB4REUsMHg3MCwweEJBLDB4MEEsMHg0
NywweDYyLDB4MjMsMHgzOSwweEVGLDB4MEYsMHg1NSwweDU3LAotICAgIDB4RTUsMHg1MSwweEMy
LDB4MzAsMHhERSwweDdBLDB4RkYsMHg4QSwweDI2LDB4NUEsMHgwMywweDM5LDB4OEIsMHhBRCww
eDU1LDB4NUYsCi0gICAgMHgwNiwweDVBLDB4MjMsMHgzOSwweDk3LDB4RkYsMHhGNSwweDhGLDB4
NDcsMHg2MiwweDY0LDB4NDksMHg4MiwweDdCLDB4NTUsMHhERiwKLSAgICAweDQ3LDB4NjIsMHg0
MywweDQxLDB4NUUsMHg1RiwweEVCLDB4OEYsMHgyNywweDVBLDB4MDMsMHgzOSwweDgyLDB4NTUs
MHhENywweDdFLAotICAgIDB4MDcsMHg1QSwweDIzLDB4NDEsMHhERiwweDdELDB4Q0EsMHhFRiww
eEM1LDB4NTEsMHgwMywweDM5LDB4QTIsMHhGNSwweDlFLDB4NUYsCi0gICAgMHg4OSwweDZBLDB4
NDQsMHg0MSwweDU1LDB4NUQsMHhFMywweDVELDB4QzUsMHg1MSwweDAyLDB4MzEsMHhFRiwweEI1
LDB4MUMsMHg3QiwKLSAgICAweDI3LDB4NUEsMHgwMywweDM5LDB4NUYsMHhGQSwweEUyLDB4NTcs
MHhDNSwweDUxLDB4MjQsMHgzOSwweEY1LDB4MjUsMHg5NywweEZELAotICAgIDB4RTUsMHg1MSww
eDAzLDB4MzksMHg3RSwweEE4LDB4RUEsMHhERiwweDI2LDB4NUEsMHgyMywweDM5LDB4QUQsMHgw
RCwweEQ3LDB4OEEsCi0gICAgMHhFNSwweDUxLDB4MDMsMHgzOSwweDdFLDB4RTgsMHhGRSwweERG
LDB4NjcsMHg2MiwweDQ0LDB4NDEsMHgyRCwweEFELDB4RDUsMHgwMywKLSAgICAweDI3LDB4NjIs
MHg2NCwweDQ5LDB4RjAsMHhGMCwweDU1LDB4RTgsMHhFNiwweDU5LDB4NjQsMHg0MSwweEFCLDB4
N0YsMHg5NSwweDAyLAotICAgIDB4NDYsMHg1QSwweDg0LDB4NDksMHhGNywweDA1LDB4MkQsMHhG
RiwweDY4LDB4NkEsMHhFNSwweDUxLDB4QjUsMHhBRSwweEE4LDB4MkIsCi0gICAgMHg4NywweDZB
LDB4MDYsMHg1QSwweEE3LDB4MkIsMHhDQiwweDhBLDB4ODcsMHg2QSwweDIzLDB4NDEsMHgyMCww
eEEyLDB4QkYsMHhGNywKLSAgICAweDQ3LDB4NjIsMHhBNSwweDUxLDB4MDAsMHgwMiwweDhDLDB4
RDcsMHg4NywweDZBLDB4MjYsMHg1QSwweDZFLDB4MkUsMHg4OCwweEZGLAotICAgIDB4QTcsMHg2
QSwweDQzLDB4NDEsMHg1NSwweDVFLDB4N0EsMHg2QSwweDI3LDB4NUEsMHgwMywweDM5LDB4RkYs
MHg4MywweDhCLDB4RjUsCi0gICAgMHhBNSwweDQ5LDB4MjMsMHgzOSwweEJELDB4QjQsMHg1RSww
eEYwLDB4NDcsMHg1QSwweDAyLDB4MzEsMHg3RSwweEUwLDB4RkIsMHhGRiwKLSAgICAweDI2LDB4
NTIsMHgwMywweDM5LDB4MkQsMHgyRCwweEQ3LDB4N0YsMHgyNiwweDUyLDB4MjMsMHgzOSwweERF
LDB4NzgsMHg3NywweEJELAotICAgIDB4MjYsMHg1QSwweDIzLDB4MzksMHgwMiwweEFCLDB4RjUs
MHhENywweDU0LDB4RTYsMHhBNSwweDUxLDB4MEQsMHhCNSwweDU1LDB4NTUsCi0gICAgMHg5Niww
eEVFLDB4MjYsMHg1QSwweDAwLDB4MDAsMHgwMywweDJELDB4QjYsMHhGNiwweDk2LDB4RUUsMHhC
RiwweEFGLDB4OEIsMHhBRCwKLSAgICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4REYsMHhGRCwweEJE
LDB4MkYsMHhENywweEY2LDB4OTYsMHhFRSwweDBCLDB4ODIsMHg3MCwweDVFLAotICAgIDB4RDcs
MHhGNiwweDk2LDB4RUUsMHgyRSwweEFFLDB4M0QsMHhCNywweEQ3LDB4RjYsMHg3NSwweEU2LDB4
NzgsMHhCQywweEFBLDB4RkEsCi0gICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEQ1LDB4RUQsMHg4
QSwweEU1LDB4RjgsMHhGRSwweEI2LDB4RUUsMHhGNiwweEJGLDB4MDIsMHhERiwKLSAgICAweEY3
LDB4RjYsMHhENywweEY2LDB4MjksMHgwMiwweDAyLDB4MDksMHgxOCwweEZGLDB4RjcsMHhGNiww
eEJBLDB4M0UsMHhGNywweDU1LAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHhFQSwweEEwLDB4
QUIsMHg1NSwweDE4LDB4RkYsMHhGOCwweEY2LDB4NTUsMHhENywweEZFLDB4QjksCi0gICAgMHgx
OCwweEY3LDB4RDcsMHhGNiwweEFBLDB4RkEsMHhEQSwweEEwLDB4MTgsMHhGNywweEQ3LDB4RjYs
MHg1RiwweDdGLDB4RkYsMHg2QSwKLSAgICAweEQ3LDB4RjYsMHg5NywweEVFLDB4MjAsMHgwRSww
eEY4LDB4QzAsMHhGNywweEY2LDB4OTYsMHhFRSwweDIyLDB4QUIsMHhGQSwweEFELAotICAgIDB4
RjcsMHhGNiwweDk2LDB4RUUsMHg1RSwweDcyLDB4RUIsMHhCRiwweDk2LDB4RUUsMHg1MSwweEM1
LDB4NzAsMHg2OCwweEUwLDB4RTgsCi0gICAgMHgzNCwweEU2LDB4MTAsMHhDNSwweDgwLDB4MDMs
MHg4OSwweDBELDB4MTQsMHhERSwweEYzLDB4REQsMHg3NiwweDdDLDB4NUYsMHg3NiwKLSAgICAw
eDE0LDB4REUsMHhGMywweERELDB4N0UsMHhCRiwweDhELDB4OEIsMHgxNCwweERFLDB4RDMsMHhE
RCwweEE5LDB4QUYsMHhFQiwweEZFLAotICAgIDB4NDcsMHg1QSwweDIzLDB4NDEsMHhGNSwweDNE
LDB4QTcsMHhERSwweDg4LDB4NkEsMHg0MywweDQxLDB4NUQsMHg4MCwweEEyLDB4NUQsCi0gICAg
MHg4NiwweDYyLDB4MjIsMHgzOSwweEZELDB4RjgsMHhGRSwweEQ3LDB4QzUsMHg0OSwweEMyLDB4
MzAsMHg1RSwweEZBLDB4QUEsMHgyRSwKLSAgICAweDI3LDB4NUEsMHgwMiwweDMxLDB4QUYsMHgw
QiwweEZELDB4RkUsMHhBNSwweDQ5LDB4RTIsMHgzMCwweEY4LDB4RTAsMHhCRCwweEFELAotICAg
IDB4NjcsMHg2MiwweDIzLDB4MzksMHgyRiwweEI1LDB4NTUsMHhGMiwweEE1LDB4NDksMHgwMiww
eDMxLDB4NjgsMHg3RSwweEI1LDB4MzcsCi0gICAgMHg2OCwweDYyLDB4RTIsMHgzMCwweDBCLDB4
RjUsMHhGRiwweEEwLDB4QzUsMHg0OSwweEUyLDB4MzAsMHg3MCwweDdFLDB4QjUsMHhCRSwKLSAg
ICAweDA2LDB4NTIsMHhDMiwweDMwLDB4MEIsMHhGRCwweEIwLDB4QTIsMHg4NSwweDQ5LDB4RTIs
MHgzMCwweEUwLDB4QUQsMHgyRSwweDk4LAotICAgIDB4MDcsMHg2MiwweDAzLDB4NDEsMHhBRCww
eEZELDB4RTAsMHhFQiwweEM1LDB4NjEsMHg2NCwweDQ5LDB4NjcsMHhBRCwweEFCLDB4MEYsCi0g
ICAgMHhFNiwweDYxLDB4NDQsMHg0MSwweERGLDB4RjgsMHhGMCwweDZBLDB4QTUsMHg0OSwweEUy
LDB4MzAsMHhGRCwweDI3LDB4MzYsMHhGQSwKLSAgICAweDQ4LDB4NjIsMHgyNCwweDM5LDB4NzUs
MHhGMCwweEZBLDB4RkYsMHgyNywweDVBLDB4RTIsMHgzMCwweEJELDB4MjcsMHhGRiwweEZFLAot
ICAgIDB4QzgsMHg2QSwweDAzLDB4MzksMHg1RiwweEYwLDB4N0YsMHhGRiwweDI3LDB4NTIsMHhF
MiwweDMwLDB4MkQsMHhBRiwweEZGLDB4QUEsCi0gICAgMHgwNiwweDUyLDB4MjQsMHg0MSwweDdD
LDB4RjgsMHhGRiwweEFBLDB4NjgsMHg2MiwweDIzLDB4MzksMHgyRCwweEY1LDB4NTcsMHg1RiwK
LSAgICAweDA2LDB4NTIsMHgyMywweDM5LDB4N0EsMHhGQiwweDBBLDB4MEIsMHgyNywweDVBLDB4
MDIsMHgzMSwweDBCLDB4RkQsMHhERSwweEZFLAotICAgIDB4MDYsMHg1MiwweDQyLDB4MzksMHg3
RSwweEZGLDB4MDIsMHhCRiwweDY3LDB4NjIsMHg4NCwweDQxLDB4QUQsMHg1NSwweEUwLDB4NTUs
Ci0gICAgMHhFNiwweDUxLDB4MDMsMHgzMSwweDgwLDB4NUUsMHg2OCwweEZFLDB4NDYsMHg2Miww
eDQzLDB4MzksMHhGRiwweDBGLDB4QUQsMHg1NSwKLSAgICAweDA1LDB4NTIsMHg0MywweDM5LDB4
RkUsMHhBOCwweEZDLDB4NTUsMHgyNywweDYyLDB4MjMsMHgzMSwweDAzLDB4MEEsMHhCRiwweEQ1
LAotICAgIDB4MjcsMHg2MiwweEUyLDB4MzgsMHgwMCwweDJCLDB4QkYsMHg1RSwweDI2LDB4NUEs
MHgwMiwweDM5LDB4REMsMHg2OCwweEZBLDB4RDUsCi0gICAgMHgyNiwweDVBLDB4MjMsMHg0MSww
eEZGLDB4MEIsMHhGNSwweDU2LDB4MDYsMHg1QSwweDQ0LDB4NDEsMHhCMCwweDU4LDB4RDUsMHgy
NSwKLSAgICAweEM1LDB4NTEsMHgwMiwweDM5LDB4MDIsMHgwMiwweEVELDB4RjAsMHhDNSwweDUx
LDB4MjMsMHgzOSwweERFLDB4NUMsMHg1NSwweEVCLAotICAgIDB4NjgsMHg2MiwweDAyLDB4Mzks
MHhBMiwweEZGLDB4NTUsMHhBRiwweEM2LDB4NTEsMHgyMywweDM5LDB4QTIsMHg1NywweDU1LDB4
MDAsCi0gICAgMHgyNiwweDVBLDB4MDMsMHgzOSwweEZGLDB4NTUsMHhGNywweDgyLDB4MjYsMHg1
QSwweDAzLDB4MzksMHhCRCwweDU1LDB4RkYsMHgwMiwKLSAgICAweDI2LDB4NjIsMHgwMiwweDM5
LDB4N0UsMHg1NSwweEFGLDB4MDAsMHgyNywweDYyLDB4MDIsMHgzOSwweERELDB4REQsMHhBRSww
eDAwLAotICAgIDB4RjAsMHhCQywweDQ0LDB4NDksMHgzNSwweEY1LDB4QkYsMHgyRiwweEQ3LDB4
RjYsMHhEMiwweEQ1LDB4MjIsMHg4OSwweDI5LDB4MEIsCi0gICAgMHhENywweEY2LDB4OTYsMHhF
RSwweDhCLDB4NDMsMHg2OCwweDc4LDB4QjYsMHhFRSwweDc2LDB4RUUsMHhCNiwweDlGLDB4OTUs
MHg1NiwKLSAgICAweEI2LDB4RjYsMHgzNCwweEU2LDB4MDIsMHgyMiwweEFBLDB4RjUsMHg5Niww
eEVFLDB4RjMsMHhERCwweEYwLDB4OUMsMHhENiwweDk3LAotICAgIDB4RjcsMHhGNiwweEQzLDB4
RDUsMHgyQSwweEFBLDB4QkYsMHg1RiwweEY3LDB4RjYsMHhEMywweEQ1LDB4ODgsMHgwQSwweDJB
LDB4QjUsCi0gICAgMHgxOCwweEZGLDB4NzUsMHhFNiwweEY3LDB4NUUsMHhFOCwweEJCLDB4Rjcs
MHhGNiwweDU1LDB4RTYsMHgwMiwweEI1LDB4NUYsMHhGQSwKLSAgICAweEY3LDB4RjYsMHg1NSww
eEU2LDB4MjAsMHgwMCwweDJELDB4OTcsMHgxOCwweEY3LDB4RDcsMHhGNiwweEY3LDB4RkYsMHg4
QSwweEU5LAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RUUsMHhBQSwweEZELDB4RUEsMHhFQiwweDE4
LDB4RjcsMHhENywweEY2LDB4RTIsMHhBQSwweDU3LDB4NUMsCi0gICAgMHhGNywweEY2LDB4Qjcs
MHhFRSwweEY4LDB4QTgsMHhGRiwweEZFLDB4RDcsMHhGNiwweDc1LDB4RUUsMHgyRSwweEYwLDB4
NDAsMHg4MiwKLSAgICAweEQ3LDB4RjYsMHg1NSwweEU2LDB4QTAsMHhFMiwweEUyLDB4QzEsMHg5
NiwweEVFLDB4RDMsMHhENSwweDYwLDB4RTAsMHhDMCwweEMyLAotICAgIDB4MTQsMHhERSwweDUx
LDB4Q0QsMHgyNSwweDM1LDB4QkYsMHhGRiwweDE0LDB4REUsMHhGMywweERELDB4RDQsMHhCRSww
eEJDLDB4QkEsCi0gICAgMHgzNCwweEU2LDB4RjMsMHhERCwweEVCLDB4RUEsMHhFMiwweEZBLDB4
MTQsMHhERSwweEYzLDB4REQsMHhCNywweEVELDB4REIsMHhGNSwKLSAgICAweDA1LDB4NUEsMHg0
MywweDQxLDB4RDgsMHg1MCwweDcyLDB4QzAsMHg0NywweDYyLDB4NjMsMHg0MSwweDAzLDB4QUIs
MHg1NSwweDI1LAotICAgIDB4NjcsMHg2MiwweDg0LDB4NDEsMHg1NywweDc3LDB4NTUsMHg3OCww
eEE1LDB4NDksMHg2MywweDQxLDB4MDAsMHg2QSwweEVCLDB4RkUsCi0gICAgMHhBNSwweDQ5LDB4
MDIsMHgzOSwweEEwLDB4N0IsMHhBMCwweEFBLDB4QTUsMHg0OSwweDAyLDB4MzEsMHgzRSwweEIz
LDB4OEYsMHg5QSwKLSAgICAweENBLDB4OEIsMHhBNCwweDQ5LDB4NTUsMHg3RCwweEM5LDB4NTUs
MHg4NSwweDQxLDB4RTIsMHgyOCwweDlFLDB4QkUsMHhGOCwweDU4LAotICAgIDB4NDcsMHg1QSww
eDAyLDB4MzEsMHhGRiwweDBGLDB4QUYsMHg3NSwweEE1LDB4NDksMHgwMiwweDMxLDB4NUUsMHhD
OCwweENBLDB4RkYsCi0gICAgMHg4NCwweDQ5LDB4RTIsMHgzMCwweEFBLDB4MDIsMHhBOSwweDc3
LDB4ODQsMHg0OSwweEUyLDB4MzAsMHhBQiwweDIyLDB4QTgsMHg1NSwKLSAgICAweEE0LDB4NTEs
MHgwMiwweDM5LDB4QUYsMHhBRSwweEJBLDB4OTUsMHgyNiwweDcyLDB4ODQsMHg1MSwweEVELDB4
QkQsMHhBQiwweDhCLAotICAgIDB4MDYsMHg2QSwweDg0LDB4NTEsMHg3RSwweDdBLDB4NzgsMHg0
MCwweDg1LDB4NTEsMHhFMywweDM4LDB4ODAsMHhBQSwweDdFLDB4NUMsCi0gICAgMHg4NSwweDQ5
LDB4QzIsMHgzMCwweDAwLDB4MkEsMHg1RCwweEZELDB4ODUsMHg0OSwweEMzLDB4MzAsMHgwMCww
eEFBLDB4NTcsMHhBRiwKLSAgICAweDg1LDB4NDksMHhFMiwweDMwLDB4ODgsMHhFRSwweDU1LDB4
QUEsMHhDNSwweDUxLDB4RTMsMHgzMCwweEFBLDB4N0YsMHg1NSwweDJBLAotICAgIDB4QzUsMHg0
OSwweDAzLDB4MzksMHhBQSwweDU1LDB4NTUsMHgyOCwweDA2LDB4NTIsMHgwMywweDM5LDB4NUIs
MHhENSwweEI1LDB4MDAsCi0gICAgMHgwNiwweDVBLDB4RTIsMHgzMCwweEZGLDB4NTUsMHhBRSww
eDAwLDB4MDYsMHg1QSwweEUyLDB4MzAsMHhGRiwweEI1LDB4MkIsMHgwMCwKLSAgICAweDI3LDB4
NUEsMHgwMiwweDM5LDB4NzUsMHg1NywweEFBLDB4MDAsMHgwNiwweDVBLDB4MjMsMHgzOSwweDU1
LDB4NTUsMHgyQSwweDAwLAotICAgIDB4MDUsMHg1QSwweEUyLDB4MzAsMHhENywweEJGLDB4MDAs
MHgyMCwweDA3LDB4NUEsMHhDMiwweDMwLDB4RDYsMHhBOCwweDgwLDB4MjIsCi0gICAgMHgwNyww
eDYyLDB4RTIsMHgzMCwweDU1LDB4QUEsMHgwMCwweEFBLDB4MDYsMHg1QSwweDAzLDB4MzEsMHhE
NSwweDBBLDB4MjAsMHgwMCwKLSAgICAweEM4LDB4NzIsMHg2NCwweDQ5LDB4NUIsMHhGRiwweEZB
LDB4MEEsMHhBQywweDkzLDB4ODQsMHg0OSwweDU1LDB4RkQsMHg1NSwweDAyLAotICAgIDB4RDAs
MHhCNCwweEU2LDB4NTksMHg1NSwweDU1LDB4NTUsMHgwQSwweDMyLDB4QzUsMHgwNiwweDVBLDB4
NTUsMHg1NSwweDU1LDB4MDAsCi0gICAgMHhCNCwweEQ1LDB4MDYsMHg1QSwweDU1LDB4NTUsMHhG
NSwweDAwLDB4MzYsMHhFNiwweDA2LDB4NUEsMHg1NSwweDU1LDB4RkYsMHgwMCwKLSAgICAweDU1
LDB4RTYsMHgwNiwweDVBLDB4NTUsMHg1NSwweEFCLDB4MDAsMHg5NywweEVFLDB4MjcsMHg2Miww
eDU1LDB4NTUsMHhBQSwweDAwLAotICAgIDB4MzUsMHhERSwweDI2LDB4NjIsMHg1NSwweEQ1LDB4
MDAsMHgwMCwweDc1LDB4RTYsMHhFNSwweDU5LDB4NTUsMHhGRiwweDAwLDB4MDAsCi0gICAgMHg3
NSwweEU2LDB4MDYsMHg1QSwweDU1LDB4QUYsMHgwMCwweDAwLDB4OTYsMHhFRSwweDI3LDB4NjIs
MHg1NSwweEFBLDB4MDAsMHgwMCwKLSAgICAweEI2LDB4RUUsMHhFOCwweDdBLDB4QkQsMHgwQSww
eDAwLDB4MDAsMHhENywweEY2LDB4NzUsMHhFRSwweDBELDB4ODksMHhBMiwweEEwLAotICAgIDB4
QjYsMHhGNiwweDc2LDB4RUUsMHhFMCwweDY4LDB4NzgsMHhFQSwweDk2LDB4RUUsMHhGNCwweERE
LDB4RTgsMHhFMCwweDdBLDB4N0EsCi0gICAgMHhCNiwweEY2LDB4RDMsMHhENSwweEJGLDB4QkQs
MHhCNSwweDJGLDB4RDcsMHhGNiwweDE0LDB4REUsMHhGNSwweEFCLDB4ODIsMHgwMCwKLSAgICAw
eEI3LDB4RjYsMHg1NSwweEU2LDB4NUQsMHhCRiwweEZFLDB4RTAsMHhCNiwweEVFLDB4NTEsMHhD
RCwweDVGLDB4ODAsMHgwOCwweDIyLAotICAgIDB4OTYsMHhFRSwweDkyLDB4Q0QsMHgwQiwweEI1
LDB4RjgsMHg4MCwweEY3LDB4RjYsMHgzNCwweERFLDB4QUEsMHhBQiwweEI1LDB4RjUsCi0gICAg
MHhENywweEY2LDB4MTQsMHhERSwweDZBLDB4QzAsMHgwMiwweDBBLDB4RDcsMHhGNiwweDkyLDB4
Q0QsMHgwMiwweDJELDB4QkUsMHg4MCwKLSAgICAweDE4LDB4RkYsMHg5NiwweEU2LDB4QUEsMHgy
MCwweDI5LDB4OTUsMHgxOCwweEY3LDB4RDcsMHhGNiwweEVBLDB4QkEsMHhBQSwweEVBLAotICAg
IDB4RjcsMHhGNiwweEI3LDB4RUUsMHhFRSwweEVDLDB4RjAsMHhDMCwweEQ3LDB4RjYsMHg5Niww
eEVFLDB4QUEsMHhCQywweEZBLDB4NkEsCi0gICAgMHhCNiwweEVFLDB4MzQsMHhERSwweDhCLDB4
MjcsMHhCNCwweEJFLDB4OTYsMHhFRSwweDM0LDB4RTYsMHhDQiwweEVCLDB4RkQsMHhCNywKLSAg
ICAweEYzLDB4REQsMHg3MSwweENELDB4REYsMHhENiwweDVDLDB4NUMsMHgzNCwweEU2LDB4RDMs
MHhERCwweEFGLDB4QTksMHgzOSwweEE5LAotICAgIDB4MzQsMHhFNiwweDE0LDB4REUsMHg3OCww
eDUzLDB4NUYsMHg1RSwweDM0LDB4RTYsMHhGMywweERELDB4RDUsMHhCNSwweERGLDB4RkYsCi0g
ICAgMHgyQSwweDgzLDB4QzUsMHg1MSwweDU3LDB4NUUsMHg1RSwweDdDLDB4ODQsMHg0OSwweEUx
LDB4MzAsMHgyQiwweEQ2LDB4NUMsMHgwMCwKLSAgICAweDY3LDB4NjIsMHgyMiwweDM5LDB4RkYs
MHg3NywweDU1LDB4MkIsMHhBOCwweDZBLDB4MjMsMHgzOSwweEZGLDB4NTUsMHhGRiwweDAwLAot
ICAgIDB4MjcsMHg2MiwweDAyLDB4MzEsMHhGRiwweDU1LDB4QUEsMHgwMCwweDI3LDB4NUEsMHgw
MiwweDMxLDB4NUYsMHg3RCwweDhBLDB4ODAsCi0gICAgMHgwNiwweDVBLDB4MDIsMHgzMSwweDU1
LDB4NTUsMHhBQSwweDAwLDB4RTYsMHg1MSwweEMyLDB4MjgsMHg1RCwweEZGLDB4MDAsMHgyMCwK
LSAgICAweDA3LDB4NUEsMHhDMSwweDMwLDB4NTUsMHhGRiwweDAwLDB4QTIsMHgwNiwweDVBLDB4
RTIsMHgzMCwweEQ1LDB4RkYsMHgwMCwweEFBLAotICAgIDB4MDcsMHg1QSwweEMxLDB4MzAsMHg1
NiwweEEyLDB4MDAsMHhBQSwweDA2LDB4NUEsMHhFMiwweDMwLDB4NTUsMHgyMiwweDgwLDB4QUUs
Ci0gICAgMHhDNSwweDU5LDB4MDIsMHgzOSwweEI1LDB4MDAsMHgwMCwweDAwLDB4MjYsMHg3Miww
eEM1LDB4NjEsMHgwOSwweEE5LDB4RUYsMHhFRCwKLSAgICAweDI2LDB4NzIsMHhFNSwweDY5LDB4
NEEsMHhCRiwweEZCLDB4OEIsMHhBQiwweEEzLDB4QzUsMHg1OSwweDU1LDB4NTcsMHg1RCwweDJG
LAotICAgIDB4MTEsMHhDNSwweEM2LDB4NTksMHg1NSwweDU1LDB4NTUsMHgwMiwweDcyLDB4Q0Qs
MHhFNSwweDUxLDB4NTUsMHg1NSwweDc1LDB4MDAsCi0gICAgMHhGMywweEQ1LDB4QzUsMHg1MSww
eDU1LDB4NTUsMHhGRiwweDAwLDB4MzUsMHhFNiwweEU2LDB4NTksMHg1NSwweDU1LDB4QkYsMHgw
MCwKLSAgICAweDU1LDB4RTYsMHhFNiwweDU5LDB4NTUsMHg1NSwweEFBLDB4MDAsMHhCNiwweEVF
LDB4MjYsMHg2MiwweDU1LDB4NTUsMHhBQSwweDAwLAotICAgIDB4MzQsMHhERSwweEM2LDB4NTEs
MHg1NSwweEZELDB4MDAsMHgwMCwweDc2LDB4RUUsMHhFNiwweDU5LDB4NTUsMHhGRiwweDAwLDB4
MDAsCi0gICAgMHg3NiwweEU2LDB4QzUsMHg1OSwweDU1LDB4QUEsMHgwMCwweDAwLDB4OTYsMHhF
RSwweDI2LDB4NjIsMHg1NSwweEFBLDB4MDAsMHgwMCwKLSAgICAweEI3LDB4RjYsMHhBOCwweDdB
LDB4NTUsMHgyQSwweDAwLDB4MDAsMHg3NiwweEVFLDB4RTksMHg3QSwweEY1LDB4MjAsMHgwMCww
eDAwLAotICAgIDB4NzYsMHhFRSwweDJFLDB4QTQsMHhENSwweDAwLDB4MDAsMHgwMCwweEQzLDB4
REQsMHgyNiwweDZBLDB4QUEsMHhDMCwweEUwLDB4NzgsCi0gICAgMHg0RSwweEFDLDB4MDYsMHg2
MiwweDNFLDB4QjcsMHg1NSwweDU1LDB4QjcsMHhGNiwweDhGLDB4QjQsMHhBQSwweDAzLDB4MDks
MHgwOSwKLSAgICAweEY4LDB4RkUsMHg1NSwweEU2LDB4RDUsMHhBRSwweEFBLDB4MDAsMHgxOCww
eEZGLDB4NzYsMHhFRSwweDc1LDB4QkYsMHhBMiwweDA4LAotICAgIDB4RjcsMHhGNiwweDk2LDB4
RUUsMHg1RCwweEFFLDB4QTgsMHhBQywweEQ3LDB4RjYsMHg5NiwweEVFLDB4QkQsMHhBQSwweDA4
LDB4MDAsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweDVELDB4RUYsMHhFQywweDhBLDB4RDcs
MHhGNiwweDk2LDB4RUUsMHhFRiwweEFBLDB4ODIsMHg4MiwKLSAgICAweEQ3LDB4RjYsMHhCNyww
eEVFLDB4RjcsMHhFNywweEVBLDB4QTgsMHhENywweEY2LDB4QjYsMHhFRSwweEVCLDB4RUIsMHhG
RiwweEFBLAotICAgIDB4QjYsMHhGNiwweEQ3LDB4RUUsMHg4QSwweDIyLDB4RkEsMHhFQiwweEY3
LDB4RjYsMHhCNiwweEVFLDB4NzcsMHg1RiwweEZELDB4QkIsCi0gICAgMHhGNywweEY2LDB4OTYs
MHhFRSwweDJBLDB4OEIsMHg2MiwweDU4LDB4RDcsMHhGNiwweDc2LDB4RUUsMHhFOCwweEJCLDB4
RkQsMHg1RCwKLSAgICAweDk2LDB4RUUsMHgxNCwweEU2LDB4MDAsMHhFOCwweEY4LDB4N0UsMHhC
NiwweEY2LDB4MTQsMHhERSwweDVGLDB4RkQsMHgyRiwweDJELAotICAgIDB4RjcsMHhGNiwweDU1
LDB4RTYsMHhBRCwweDBBLDB4QUEsMHhBQSwweEY3LDB4RjYsMHhCNywweEY2LDB4OEEsMHhBMiww
eEFBLDB4QUQsCi0gICAgMHhGNywweEY2LDB4QjYsMHhFRSwweDVFLDB4RkEsMHhBOCwweEFCLDB4
RDcsMHhGNiwweDc1LDB4RTYsMHhERiwweEZBLDB4QUEsMHg4MCwKLSAgICAweEI2LDB4RUUsMHg3
NiwweEVFLDB4MzcsMHhCRiwweEFBLDB4MDAsMHhENywweEY2LDB4NTUsMHhFNiwweEQ2LDB4QTgs
MHgwQSwweDJBLAotICAgIDB4RjcsMHhGNiwweDc2LDB4RUUsMHhCRCwweEJGLDB4QUUsMHhBOCww
eDM4LDB4RkYsMHhENywweEY2LDB4RkYsMHhFRCwweEJELDB4MkYsCi0gICAgMHgxOCwweEZGLDB4
QjcsMHhFRSwweDdFLDB4QUUsMHhFQSwweEEwLDB4MTgsMHhGNywweEI3LDB4RUUsMHhBMywweEFE
LDB4REUsMHhGQSwKLSAgICAweDE4LDB4RjcsMHhENywweEY2LDB4NkEsMHhFQSwweEVCLDB4RkYs
MHhCNywweEVFLDB4NzUsMHhFNiwweEEwLDB4NjAsMHg2MCwweDYwLAotICAgIDB4OTYsMHhFRSww
eDkyLDB4RDUsMHhBOCwweEI4LDB4RkEsMHg1QSwweDc1LDB4RUUsMHgxNCwweERFLDB4QjYsMHhG
NCwweERFLDB4NTYsCi0gICAgMHg1NSwweEU2LDB4NzEsMHhDRCwweDVFLDB4NUMsMHg1QywweDU4
LDB4MzQsMHhFNiwweEIzLDB4RDUsMHg4QiwweDg5LDB4MEIsMHgwMSwKLSAgICAweDM0LDB4RTYs
MHhGMywweERELDB4REEsMHg1QSwweDVFLDB4NUYsMHgxNCwweERFLDB4RDMsMHhERCwweDBCLDB4
QTIsMHhFQSwweDZGLAotICAgIDB4MzUsMHhFNiwweEU1LDB4NTksMHg1NiwweDdBLDB4QTAsMHgw
MCwweEY0LDB4RDUsMHhBNCwweDUxLDB4NTUsMHg1NSwweEJBLDB4MDAsCi0gICAgMHhGNCwweEQ1
LDB4QzUsMHg1MSwweDU1LDB4NTUsMHhBQSwweDAwLDB4MzUsMHhFNiwweDA2LDB4NUEsMHg1NSww
eDU1LDB4QUEsMHgwMCwKLSAgICAweDM1LDB4RTYsMHgyNiwweDYyLDB4NTUsMHg1NSwweDhBLDB4
MDAsMHgzNSwweEU2LDB4QTUsMHg1MSwweDU1LDB4RkYsMHgwMCwweDAwLAotICAgIDB4MzUsMHhF
NiwweEM1LDB4NTEsMHg1NSwweEJCLDB4MDAsMHgwMCwweDU1LDB4RTYsMHhDNSwweDUxLDB4NTUs
MHhBQSwweDAwLDB4MDAsCi0gICAgMHg3NSwweEVFLDB4NjcsMHg2QSwweDU1LDB4QUEsMHgwMCww
eDAwLDB4NTUsMHhFNiwweEU5LDB4N0EsMHg1NSwweDIyLDB4MDAsMHgwMCwKLSAgICAweDU1LDB4
RTYsMHhDQywweDkzLDB4NTUsMHgwMiwweDAwLDB4MDAsMHg3NiwweEVFLDB4MkUsMHhBNCwweEY1
LDB4MjAsMHgwMCwweDAwLAotICAgIDB4NTUsMHhFRSwweEFDLDB4OUIsMHg3QiwweEMwLDB4QzAs
MHhDMCwweDY3LDB4NzIsMHhBNCwweDYxLDB4RjcsMHhENiwweDU0LDB4NUMsCi0gICAgMHgyNiww
eDcyLDB4QTQsMHg2MSwweEFCLDB4OEIsMHhBOSwweDBGLDB4MkQsMHhBQywweDI2LDB4NzIsMHgz
NSwweEI1LDB4NTUsMHg1NSwKLSAgICAweDU1LDB4RUUsMHhFOSwweDhBLDB4MDIsMHgwMywweDBC
LDB4MkQsMHhCNiwweEY2LDB4NzUsMHhFRSwweEQ1LDB4QUIsMHhBQSwweDhCLAotICAgIDB4QjYs
MHhGNiwweDc1LDB4RUUsMHhGRCwweEFCLDB4QTIsMHg4MiwweEI2LDB4RjYsMHg5NiwweEVFLDB4
NTUsMHhFQSwweEVBLDB4RUEsCi0gICAgMHhCNiwweEY2LDB4OTYsMHhFRSwweEE1LDB4MkIsMHhC
RSwweDhGLDB4QjYsMHhGNiwweDk2LDB4RUUsMHhGMywweDg4LDB4MzIsMHgwRiwKLSAgICAweEI2
LDB4RjYsMHg5NiwweEVFLDB4MkUsMHg4MiwweDJBLDB4MDgsMHhCNiwweEY2LDB4RDcsMHhFRSww
eDIyLDB4QzgsMHg4OCwweEZDLAotICAgIDB4RjcsMHhGNiwweEI2LDB4RjYsMHhFNywweEFBLDB4
MEEsMHgwMiwweEY4LDB4RkUsMHhENywweEVFLDB4RjUsMHhFQSwweDhBLDB4QUEsCi0gICAgMHhG
NywweEY2LDB4RDcsMHhGNiwweEQ1LDB4MEEsMHgwMiwweDAwLDB4RjcsMHhGRSwweEQ3LDB4RjYs
MHhENywweEZDLDB4RUEsMHg3RSwKLSAgICAweEI2LDB4RjYsMHhDQiwweEEzLDB4ODAsMHhBMCww
eEUwLDB4NzgsMHhDRiwweEJDLDB4NjcsMHg3MiwweDU4LDB4NTYsMHg1NywweDU1LAotICAgIDB4
NjcsMHg3QSwweEM1LDB4NjEsMHhERSwweEZBLDB4QjgsMHgzMCwweEQ3LDB4RjYsMHgyRCwweEFD
LDB4MDksMHgwOSwweDA5LDB4MDksCi0gICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweERGLDB4QkYs
MHhCRCwweEZGLDB4MTcsMHhGRiwweEY3LDB4RjYsMHhFQiwweEJCLDB4ODIsMHhBQiwKLSAgICAw
eEY3LDB4RjYsMHhENywweEY2LDB4NkMsMHg1QSwweEQwLDB4MzAsMHhGNywweEY2LDB4RDcsMHhG
NiwweDU1LDB4RkUsMHhGRiwweEVGLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHgwQiwweDJC
LDB4MDAsMHgwMCwweEI3LDB4RjYsMHhGNywweEVFLDB4QUEsMHhFQSwweEFFLDB4RUYsCi0gICAg
MHhENywweEY2LDB4QjcsMHhFRSwweDg4LDB4MEEsMHgwMiwweDgwLDB4RjcsMHhGNiwweEI2LDB4
RUUsMHhGRiwweEJFLDB4QUUsMHhBRSwKLSAgICAweEI2LDB4RjYsMHhGNywweEVFLDB4QUEsMHhC
QSwweEJCLDB4RUUsMHhGNywweEY2LDB4QjYsMHhFRSwweDBFLDB4ODIsMHhDMiwweDc4LAotICAg
IDB4RDcsMHhGNiwweDk2LDB4RUUsMHg3OCwweDU0LDB4NzYsMHg1NywweDk2LDB4RUUsMHhGNCww
eERELDB4QTAsMHhFOCwweDZBLDB4NzgsCi0gICAgMHgzNSwweEU2LDB4OTEsMHhDRCwweEUwLDB4
NzAsMHg1RiwweDE2LDB4OTYsMHhGNiwweEYzLDB4REQsMHhBRCwweEZELDB4MDMsMHgwMCwKLSAg
ICAweEI2LDB4RjYsMHhCMywweEQ1LDB4MEEsMHhGNywweEZFLDB4QTgsMHhENywweEY2LDB4RjQs
MHhERCwweDAyLDB4QUYsMHhGRCwweEZGLAotICAgIDB4RDcsMHhGNiwweDU1LDB4RTYsMHgwMCww
eDBBLDB4M0QsMHhENSwweEY3LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhBQSwweDgzLDB4QjUsCi0g
ICAgMHhENywweEY2LDB4OTYsMHhFRSwweEZFLDB4RjgsMHgyOCwweDAwLDB4RDcsMHhGNiwweDk2
LDB4RUUsMHgwQSwweEFFLDB4OUUsMHhGOCwKLSAgICAweDE4LDB4RjcsMHhENywweEY2LDB4RkYs
MHhGRCwweEI1LDB4QTUsMHgzOCwweEZGLDB4RjgsMHhGNiwweEE1LDB4QjUsMHhERCwweEQ3LAot
ICAgIDB4MzgsMHhGRiwweEY4LDB4RjYsMHhGQSwweEU4LDB4ODIsMHgwQiwweDE4LDB4RkYsMHhC
NywweEY2LDB4RUEsMHhGQSwweEZBLDB4REMsCi0gICAgMHhGNywweEY2LDB4NzYsMHhFRSwweDgy
LDB4QUIsMHhBRiwweEI3LDB4RDcsMHhGNiwweDc1LDB4RTYsMHg3QSwweDc4LDB4NzgsMHhEQSwK
LSAgICAweDU1LDB4RTYsMHgxMCwweEM1LDB4RjgsMHhGOCwweDU4LDB4NTgsMHg1NSwweEVFLDB4
RDMsMHhERCwweEZBLDB4RjMsMHhGMiwweEUxLAotICAgIDB4MTQsMHhFNiwweDEwLDB4QzUsMHhG
MCwweDYwLDB4NjAsMHg0MCwweEQ3LDB4RjYsMHg5MiwweEQ1LDB4RkQsMHhCRCwweEE5LDB4MkQs
Ci0gICAgMHg3NSwweEVFLDB4RjMsMHhERCwweDdGLDB4NzcsMHg3RSwweDgwLDB4MzQsMHhFNiww
eDkyLDB4Q0QsMHg2QSwweDdBLDB4NkEsMHg4OCwKLSAgICAweEQ2LDB4RjYsMHg5NiwweEVFLDB4
NUYsMHg1RSwweEVBLDB4QUUsMHhCNiwweEVFLDB4NzUsMHhFNiwweDU1LDB4QkIsMHgwMiwweDAw
LAotICAgIDB4QjYsMHhFRSwweDc1LDB4RTYsMHhENSwweEFBLDB4MDIsMHgwMCwweEQ3LDB4RjYs
MHg3NSwweEU2LDB4NTUsMHhFRiwweEFBLDB4QTIsCi0gICAgMHhCNiwweEVFLDB4NzUsMHhFNiww
eEZELDB4QUEsMHgyMCwweDAwLDB4QjYsMHhFRSwweDc1LDB4RUUsMHhGRiwweDIyLDB4MDAsMHgw
MCwKLSAgICAweEQ1LDB4RUUsMHg3NiwweEVFLDB4RjcsMHhGRiwweEZGLDB4RkUsMHg5NiwweEVF
LDB4NzUsMHhFRSwweDhCLDB4QzgsMHgwQSwweDA4LAotICAgIDB4QjcsMHhGNiwweDc1LDB4RUUs
MHhGRiwweEZGLDB4QkUsMHhBQSwweEQ2LDB4RjYsMHg5NiwweEVFLDB4RjcsMHhCRiwweEFCLDB4
QUEsCi0gICAgMHhENywweEY2LDB4OTYsMHhFRSwweEZGLDB4MkYsMHg4QSwweEEyLDB4RDcsMHhG
NiwweDk2LDB4RjYsMHhEQiwweEFBLDB4QUEsMHhBOCwKLSAgICAweEI2LDB4RjYsMHg2RCwweEI0
LDB4NjAsMHg0MCwweDYwLDB4QzAsMHg2NiwweDdBLDB4ODQsMHg2MSwweDdFLDB4RkUsMHhGQSww
eEVDLAotICAgIDB4MjcsMHg3QSwweDg0LDB4NjEsMHgyRCwweEJGLDB4RkYsMHhERSwweDI2LDB4
NzIsMHhFNiwweDcxLDB4MjUsMHgyRSwweEJGLDB4NkQsCi0gICAgMHhEMywweERELDB4NjcsMHg3
QSwweDI1LDB4QjUsMHhENSwweEQ1LDB4OTYsMHhGNiwweDhGLDB4QkMsMHgwMCwweDAyLDB4MDIs
MHgwOSwKLSAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4MjgsMHgwMiwweDhBLDB4MEEsMHhENiww
eEY2LDB4OTYsMHhFRSwweEZFLDB4RUEsMHhBQSwweEVBLAotICAgIDB4QjYsMHhGNiwweDk2LDB4
RUUsMHgyQSwweDAyLDB4MjIsMHgwMCwweEI2LDB4RjYsMHg5NiwweEVFLDB4QUEsMHg4MiwweDIw
LDB4MDgsCi0gICAgMHhENiwweEY2LDB4QjYsMHhGNiwweDVELDB4RDUsMHg2RCwweEE1LDB4RDcs
MHhGNiwweEI2LDB4RUUsMHgyQiwweDJCLDB4MkUsMHgzQSwKLSAgICAweEQ3LDB4RkUsMHhGNyww
eEY2LDB4NzUsMHg1NywweEQ3LDB4NTUsMHgxNywweEZGLDB4RjcsMHhGNiwweDVELDB4REYsMHg3
RiwweDVCLAotICAgIDB4RDYsMHhGRSwweEY3LDB4RjYsMHhENywweEQ3LDB4NTUsMHhBNywweEQ2
LDB4RjYsMHhBRiwweEJDLDB4MDAsMHg4MCwweEUwLDB4NzgsCi0gICAgMHgzNSwweEVFLDB4ODcs
MHg3QSwweDc4LDB4NUUsMHg1NywweDU3LDB4QzcsMHg4QSwweDQ3LDB4N0EsMHhGRiwweEZGLDB4
QUQsMHgyRiwKLSAgICAweEFCLDB4QTMsMHg0NiwweDcyLDB4RDUsMHg5NywweDk3LDB4MUYsMHhG
NywweEZFLDB4OEYsMHhCQywweDA5LDB4MEIsMHgwMywweDAyLAotICAgIDB4MTcsMHhGRiwweEY4
LDB4RjYsMHhFQSwweDJFLDB4MkEsMHhBQSwweDE4LDB4RkYsMHhGNywweEY2LDB4MEEsMHhBOCww
eEEyLDB4Q0EsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEE4LDB4QTgsMHhBOCwweDgyLDB4
RjcsMHhGNiwweEQ3LDB4RjYsMHhGRiwweDlGLDB4RkEsMHg1QSwKLSAgICAweEQ3LDB4RjYsMHhE
NiwweEVFLDB4ODIsMHhBOCwweDIyLDB4OEEsMHhGNywweEY2LDB4RDcsMHhGNiwweERGLDB4N0Is
MHhENSwweDlELAotICAgIDB4RjcsMHhGNiwweEI3LDB4RUUsMHhBRiwweEJBLDB4RUEsMHhBQSww
eEY3LDB4RjYsMHhENywweEY2LDB4NUQsMHhERCwweEY3LDB4MkIsCi0gICAgMHgxNywweEZGLDB4
QjcsMHhFRSwweEFGLDB4QUIsMHhFQSwweDc4LDB4RjgsMHhGNiwweDk2LDB4RUUsMHhGQywweDdF
LDB4NUYsMHg1RiwKLSAgICAweDk2LDB4RUUsMHgzNCwweEU2LDB4ODAsMHhDOCwweDY4LDB4NUMs
MHg1NSwweEU2LDB4QjIsMHhENSwweEU4LDB4RkEsMHhGRSwweDk3LAotICAgIDB4QjcsMHhGNiww
eEYzLDB4REQsMHgzNSwweDJELDB4MEIsMHgwMiwweEQ3LDB4RjYsMHhCNiwweEY2LDB4QUQsMHhB
MCwweDgyLDB4QTIsCi0gICAgMHhENywweEY2LDB4OTYsMHhFRSwweDdFLDB4QUUsMHhCQSwweEE4
LDB4RDcsMHhGNiwweDU1LDB4RTYsMHhENywweDhBLDB4MjIsMHgyQSwKLSAgICAweEQ3LDB4RjYs
MHg3NSwweEU2LDB4NUYsMHhBRiwweDI4LDB4QTgsMHhGNywweEY2LDB4NzUsMHhFNiwweEJELDB4
RkYsMHhGRSwweDgyLAotICAgIDB4RjcsMHhGNiwweDk2LDB4RUUsMHhBMiwweDgzLDB4ODksMHgy
RiwweEY3LDB4RjYsMHhCNywweEVFLDB4NUUsMHhGQSwweEIwLDB4QTAsCi0gICAgMHhGOCwweEY2
LDB4QjcsMHhFRSwweDBCLDB4MEIsMHg4QSwweEEyLDB4MTgsMHhGNywweEQ3LDB4RUUsMHgyMCww
eDhBLDB4QUYsMHhCNywKLSAgICAweDM4LDB4RkYsMHhGOCwweEY2LDB4OEYsMHhCNSwweERGLDB4
NTcsMHgzOCwweEZGLDB4OTYsMHhFRSwweEY4LDB4NzgsMHg3MiwweDZBLAotICAgIDB4RDcsMHhG
NiwweDM1LDB4RTYsMHgyRSwweDNGLDB4QkUsMHhERiwweEI2LDB4RjYsMHgxNCwweERFLDB4Qjgs
MHhGQywweERDLDB4N0MsCi0gICAgMHgzNCwweEU2LDB4MTAsMHhCRCwweDU4LDB4NUMsMHg1Qyww
eDVDLDB4MzQsMHhFNiwweDkyLDB4Q0QsMHg4MywweEMxLDB4QzksMHhDOSwKLSAgICAweEY0LDB4
REQsMHg1MSwweEM1LDB4NDAsMHg0MiwweDQyLDB4OEIsMHg3NiwweEVFLDB4Q0YsMHhCNCwweDBC
LDB4MkQsMHhCNSwweDI1LAotICAgIDB4OTUsMHhFRSwweDU1LDB4RTYsMHhFQywweDVFLDB4NUYs
MHhEQywweDk2LDB4RUUsMHg1NSwweEU2LDB4RDcsMHhGQiwweEFELDB4QTksCi0gICAgMHhENiww
eEY2LDB4QjYsMHhFRSwweEI1LDB4RkQsMHhGRCwweERELDB4RDYsMHhGNiwweEI2LDB4RUUsMHhG
NSwweERGLDB4RjYsMHhGOSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUQsMHhGRiwweEJC
LDB4QkIsMHhENiwweEY2LDB4QjYsMHhFRSwweEZGLDB4REYsMHhCRiwweEZGLAotICAgIDB4RDcs
MHhGNiwweEI2LDB4RUUsMHg3NywweEZGLDB4QkEsMHhGQSwweEI2LDB4RjYsMHhENiwweEVFLDB4
MjgsMHhCQSwweEFGLDB4QkEsCi0gICAgMHhCNywweEVFLDB4OTUsMHhFRSwweDU2LDB4REYsMHg1
NywweDc2LDB4QjcsMHhGRSwweDk1LDB4RUUsMHhENSwweEQ1LDB4N0YsMHhGNSwKLSAgICAweEI1
LDB4RjYsMHg5NiwweEVFLDB4QUYsMHhFRSwweEZCLDB4QkYsMHhENywweEY2LDB4QjYsMHhFRSww
eEFCLDB4MkIsMHg4QiwweDI5LAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhBRSwweDI4LDB4
MDIsMHg4MCwweEQ3LDB4RjYsMHhCNiwweEVFLDB4QkEsMHhBQSwweEEwLDB4MDAsCi0gICAgMHhC
NiwweEY2LDB4ODYsMHg3QSwweDgwLDB4RTAsMHg2MCwweDcwLDB4NDcsMHg3MiwweDYzLDB4NjEs
MHhBOCwweEFFLDB4QkEsMHhEQywKLSAgICAweDI2LDB4NzIsMHg4NCwweDYxLDB4N0EsMHg3MCww
eEY4LDB4RUEsMHgwNywweDcyLDB4NjQsMHg2MSwweDBBLDB4QUIsMHhCRiwweEY3LAotICAgIDB4
QTcsMHg3QSwweEE1LDB4NjEsMHgyRiwweEJGLDB4QkQsMHhGNSwweDc1LDB4RUUsMHhBNywweDgy
LDB4MEIsMHgyRCwweDM1LDB4QjUsCi0gICAgMHhENywweEY2LDB4NzUsMHhGNiwweEFBLDB4MkEs
MHhBQSwweDgxLDB4RDYsMHhGNiwweEI2LDB4RjYsMHhEQiwweEVFLDB4QjksMHhBMywKLSAgICAw
eEQ2LDB4RjYsMHhCNiwweEY2LDB4NUQsMHg3NiwweDc4LDB4RkYsMHhCNiwweEY2LDB4QjcsMHhF
RSwweDg4LDB4MjIsMHg4OCwweDIwLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RjYsMHgzNywweEJE
LDB4QjcsMHg5RCwweEY3LDB4RjYsMHhCNiwweEVFLDB4QkIsMHhCRSwweEFGLDB4QUYsCi0gICAg
MHhENiwweEZFLDB4RjcsMHhGNiwweEQ1LDB4REYsMHg3NywweDU1LDB4RDcsMHhGRSwweEY3LDB4
RjYsMHg3RCwweDU1LDB4RjUsMHhFRCwKLSAgICAweEY3LDB4RkUsMHg1MSwweEQ1LDB4MDAsMHhB
MCwweEUwLDB4NzgsMHhGMywweEU1LDB4NDYsMHg3MiwweEUwLDB4NzgsMHg1RSwweDU3LAotICAg
IDB4NjcsMHg3QSwweDI2LDB4N0EsMHg4OSwweEZBLDB4N0EsMHhGRSwweEE3LDB4OEEsMHg0Nyww
eDgyLDB4M0IsMHgwQSwweEFGLDB4OEQsCi0gICAgMHhCMiwweERELDB4ODcsMHg4MiwweDk1LDB4
OTUsMHhCNSwweDM1LDB4RjcsMHhGRSwweDU1LDB4RUUsMHgwMSwweDAxLDB4MDMsMHgwMiwKLSAg
ICAweDE4LDB4RkYsMHhGNywweEY2LDB4M0EsMHgyQSwweDJBLDB4MkEsMHgzNywweEZGLDB4Rjgs
MHhGNiwweEZFLDB4RkEsMHhFRSwweEFFLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBMCww
eEUwLDB4QTgsMHhCQywweEY3LDB4RjYsMHhENywweEY2LDB4N0EsMHg2RiwweEZFLDB4REIsCi0g
ICAgMHhENywweEY2LDB4RjcsMHhFRSwweDA4LDB4ODgsMHgwQSwweDIyLDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHhENywweEI1LDB4QjUsMHhENSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4REQs
MHhGRCwweDNELDB4MkIsMHgxOCwweEZGLDB4RDcsMHhGNiwweDJELDB4OEYsMHg2MywweDU4LAot
ICAgIDB4RjcsMHhGNiwweDk2LDB4RUUsMHhGOCwweEY4LDB4N0YsMHg1RiwweEI3LDB4RjYsMHgz
NSwweEU2LDB4QTgsMHhFQSwweDdBLDB4N0EsCi0gICAgMHg1NSwweEVFLDB4OTIsMHhDRCwweEUw
LDB4RTgsMHg1QSwweERFLDB4RDcsMHhGNiwweDcxLDB4Q0QsMHhCNywweDJELDB4MEIsMHgwMiwK
LSAgICAweEQ3LDB4RjYsMHhCNiwweEY2LDB4OEQsMHgwQiwweDAwLDB4MDAsMHhENywweEY2LDB4
QjcsMHhFRSwweEE4LDB4QUEsMHgwMCwweDgwLAotICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHhF
OCwweDhBLDB4RjgsMHhGQywweEQ3LDB4RjYsMHhCNiwweEVFLDB4NTUsMHg3RiwweDhGLDB4MjMs
Ci0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweDVELDB4NTUsMHg3NywweDZFLDB4RjcsMHhGNiww
eDk2LDB4RUUsMHgyQiwweDJGLDB4QkQsMHhGRiwKLSAgICAweDE4LDB4RkYsMHhENywweEY2LDB4
RkYsMHhBQSwweDJCLDB4MkQsMHgzOSwweEZGLDB4RjcsMHhGNiwweDVGLDB4N0YsMHhFQSwweEFB
LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RUUsMHgyQywweDJFLDB4MDIsMHgwMCwweEY4LDB4RjYs
MHhENywweEY2LDB4QTQsMHhFQywweERBLDB4QjgsCi0gICAgMHhGNywweEY2LDB4QjcsMHhFRSww
eEEwLDB4QTIsMHhDMiwweEUwLDB4RDcsMHhGNiwweEI3LDB4RUUsMHg0MCwweDZBLDB4QTIsMHgy
MiwKLSAgICAweEI3LDB4RUUsMHgxNCwweERFLDB4OUUsMHhERSwweEQ4LDB4NTgsMHhENywweEY2
LDB4MzQsMHhFNiwweDU4LDB4N0EsMHg3MiwweDYyLAotICAgIDB4MTQsMHhERSwweDEwLDB4QzUs
MHg1QywweEY4LDB4RjgsMHhGOCwweDM0LDB4RTYsMHg3MSwweENELDB4ODksMHhBOSwweEFELDB4
QUQsCi0gICAgMHhEMywweERELDB4NTEsMHhDNSwweDhCLDB4MEIsMHgwRiwweEE1LDB4QjYsMHhG
NiwweDEwLDB4QzUsMHgyNSwweDJELDB4MkYsMHgyRiwKLSAgICAweEI2LDB4RjYsMHgzNCwweEU2
LDB4REEsMHg1OCwweEY4LDB4NzAsMHg5NiwweEVFLDB4MzUsMHhFNiwweDNGLDB4QjUsMHhCRCww
eEJELAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg1QiwweEY3LDB4RkQsMHhCRCwweEQ2LDB4
RjYsMHhCNiwweEVFLDB4NkYsMHhCRSwweEJBLDB4QjYsCi0gICAgMHhENiwweEY2LDB4QjYsMHhF
RSwweEJGLDB4RTMsMHhBRCwweEE3LDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBRiwweDZFLDB4RkYs
MHhFQywKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4QUQsMHhCRiwweEUzLDB4RUYsMHhENiww
eEY2LDB4QjYsMHhFRSwweDNGLDB4RUUsMHhFRSwweEZELAotICAgIDB4QjYsMHhGNiwweDk1LDB4
RUUsMHhGQSwweEY2LDB4RkMsMHhCRSwweEI2LDB4RjYsMHg5NiwweEVFLDB4QTUsMHhFRCwweDdF
LDB4RkUsCi0gICAgMHg5NiwweEY2LDB4QjYsMHhFRSwweDlGLDB4NkUsMHg3RiwweDdBLDB4RjYs
MHhGNiwweEI2LDB4RUUsMHhGRCwweEJGLDB4RkYsMHhBQiwKLSAgICAweEQ3LDB4RjYsMHhCNiww
eEVFLDB4RTAsMHhFMCwweDBBLDB4MDgsMHhCNiwweEY2LDB4RjcsMHhFRSwweEFGLDB4QUYsMHhB
QiwweEFCLAotICAgIDB4NTUsMHhFRSwweEM0LDB4NjEsMHg3MCwweDcwLDB4NzAsMHg3MCwweEU2
LDB4NjksMHgyMywweDUxLDB4NTgsMHg1RSwweDVFLDB4N0YsCi0gICAgMHhFNiwweDcxLDB4MDMs
MHg1MSwweDAyLDB4MDMsMHgwOSwweEFELDB4QTUsMHg2MSwweDQ0LDB4NTksMHhGQSwweEJFLDB4
NUMsMHg1OCwKLSAgICAweEM1LDB4NjksMHg0NCwweDUxLDB4MkYsMHhBRCwweEI1LDB4RjUsMHhB
QiwweDlCLDB4RTYsMHg2OSwweDJELDB4QkQsMHhCNSwweEQ1LAotICAgIDB4QjYsMHhGNiwweDZB
LDB4OTMsMHgwMiwweDBCLDB4MDksMHgyNSwweEQ2LDB4RkUsMHhENywweEY2LDB4RkYsMHhGRiww
eERGLDB4QkUsCi0gICAgMHhENywweEY2LDB4QjYsMHhGNiwweEJDLDB4RkUsMHhFQywweEI4LDB4
RDcsMHhGNiwweEI2LDB4RjYsMHhENSwweEI3LDB4QkYsMHhBQiwKLSAgICAweEQ2LDB4RjYsMHhC
NiwweEY2LDB4RkUsMHhCRSwweEFDLDB4QTAsMHhGNywweEZFLDB4QjYsMHhGNiwweEJELDB4RUYs
MHhCRiwweEJFLAotICAgIDB4RDcsMHhGRSwweEY3LDB4RjYsMHg1NSwweDU3LDB4RkYsMHhFRiww
eEQ3LDB4RjYsMHhCMiwweERELDB4MDAsMHgwMCwweDgwLDB4NjAsCi0gICAgMHg3NiwweEVFLDB4
NjYsMHg3QSwweEUwLDB4NzgsMHg1RSwweDVGLDB4NjcsMHg4MiwweDA1LDB4NzIsMHhFOCwweEZE
LDB4QkYsMHgyQiwKLSAgICAweDg3LDB4OEEsMHgwNSwweDdBLDB4QTcsMHhBRCwweDJGLDB4RUEs
MHg4NywweDhBLDB4MjUsMHg3QSwweDAyLDB4RUEsMHhGRSwweERGLAotICAgIDB4NzYsMHhFRSww
eDY2LDB4ODIsMHgzNSwweDI1LDB4MjUsMHgyRCwweDE4LDB4RkYsMHhGNywweEZFLDB4MkQsMHgw
OSwweDI5LDB4MDEsCi0gICAgMHgzOCwweEZGLDB4MTcsMHhGNywweDU3LDB4REQsMHg3RiwweEZF
LDB4MTgsMHhGRiwweEY3LDB4RUUsMHg4OCwweEUyLDB4QTAsMHhDMCwKLSAgICAweEY3LDB4RjYs
MHhENywweEY2LDB4QUMsMHgyRSwweEI4LDB4QUEsMHhGNywweEY2LDB4RDcsMHhGNiwweEZGLDB4
RkEsMHg3QSwweEJBLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1QSwweEY3LDB4OTUsMHhB
QSwweEY3LDB4RjYsMHhENywweEY2LDB4RDcsMHg1RSwweDVGLDB4MjMsCi0gICAgMHgxOCwweEZG
LDB4QjYsMHhGNiwweDJCLDB4MkIsMHhBMiwweDcyLDB4MTcsMHhGRiwweEI2LDB4RjYsMHg1Qyww
eDVGLDB4NTcsMHg1NSwKLSAgICAweEI2LDB4RjYsMHg1NCwweEU2LDB4RTAsMHhBOCwweEU4LDB4
NzgsMHg3NSwweEVFLDB4OTIsMHhENSwweEEwLDB4RTgsMHg3OCwweEZBLAotICAgIDB4QjcsMHhG
NiwweDkyLDB4Q0QsMHhCNywweDI1LDB4MEIsMHgwMiwweEY3LDB4RjYsMHhCNiwweEY2LDB4QUQs
MHhCQiwweEFBLDB4QUIsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDVGLDB4RDUsMHhGRCww
eDc1LDB4RDcsMHhGNiwweEI3LDB4RUUsMHhBOCwweDAwLDB4MDAsMHgwMCwKLSAgICAweEQ3LDB4
RjYsMHhCNywweEVFLDB4M0EsMHhBQSwweDBBLDB4QTgsMHhENywweEY2LDB4QjYsMHhFRSwweDI4
LDB4RkEsMHhCOCwweEZCLAotICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHhGRSwweEJFLDB4MkYs
MHhCOCwweEQ3LDB4RjYsMHhCNywweEVFLDB4NUYsMHhGQywweEEyLDB4QTAsCi0gICAgMHhGNyww
eEY2LDB4QjcsMHhFRSwweDJELDB4M0QsMHhGRiwweEZGLDB4MzgsMHhGRiwweEY3LDB4RjYsMHgy
QSwweEFCLDB4QUQsMHhCNSwKLSAgICAweDM5LDB4RkYsMHhGNywweEY2LDB4NUUsMHg1OCwweDYw
LDB4QzAsMHhGNywweEY2LDB4RDgsMHhGNiwweEFBLDB4QUEsMHg4QiwweDc4LAotICAgIDB4Rjcs
MHhGNiwweDk2LDB4RUUsMHg4QSwweEU4LDB4NjgsMHg1RiwweEQ3LDB4RjYsMHg5NiwweEVFLDB4
MkEsMHgyQSwweDJGLDB4MkQsCi0gICAgMHhCNywweEY2LDB4OTEsMHhDRCwweEI4LDB4QjgsMHhF
OCwweEQ4LDB4RDYsMHhGNiwweDU0LDB4RTYsMHg2MiwweEUyLDB4QTMsMHhBOSwKLSAgICAweDE0
LDB4REUsMHg3MSwweENELDB4NzQsMHhGQywweDc0LDB4RkMsMHgzNCwweEU2LDB4OTIsMHhDRCww
eEFELDB4QTUsMHhCNSwweEI1LAotICAgIDB4NzEsMHhDRCwweEFGLDB4QjQsMHhBOCwweEFDLDB4
QkUsMHhENCwweEI2LDB4RjYsMHg3MSwweENELDB4MEQsMHgwOSwweDBCLDB4MkQsCi0gICAgMHhE
NywweEY2LDB4MzQsMHhFNiwweEY4LDB4RjgsMHg3OCwweDdBLDB4NzUsMHhFRSwweDM0LDB4RTYs
MHgyNywweEE3LDB4QkYsMHhFRiwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4RkYsMHhFQSww
eEJBLDB4QUIsMHhENiwweEY2LDB4QjYsMHhFRSwweDI5LDB4QUIsMHhFQywweEVBLAotICAgIDB4
RDYsMHhGNiwweEI2LDB4RUUsMHhBQSwweEFBLDB4MEEsMHgwRSwweEQ2LDB4RjYsMHhCNiwweEVF
LDB4QUEsMHhBQSwweEFBLDB4QTIsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweEFBLDB4ODYs
MHg3RiwweDRBLDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGRSwweEVBLDB4QkIsMHhCQSwKLSAgICAw
eDk2LDB4RjYsMHhCNiwweEVFLDB4RjksMHhGRCwweEJELDB4RUQsMHhCNiwweEY2LDB4OTYsMHhF
RSwweEVFLDB4QUEsMHhFRSwweENBLAotICAgIDB4OTUsMHhGNiwweEI2LDB4RUUsMHhERiwweDdG
LDB4REQsMHg1NSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4ODIsMHgwMywweDIzLDB4MDMsCi0gICAg
MHhENiwweEY2LDB4RjcsMHhFRSwweDAwLDB4MjAsMHgyMiwweEEwLDB4RDYsMHhGNiwweEI3LDB4
RUUsMHhBMiwweDgyLDB4MDAsMHgwMCwKLSAgICAweEI2LDB4RjYsMHhDNCwweDU5LDB4NzAsMHg3
MCwweDcwLDB4NjAsMHg4NSwweDU5LDB4MjMsMHg0OSwweEUzLDB4QUUsMHg1RSwweEY3LAotICAg
IDB4ODUsMHg1OSwweDIzLDB4NTEsMHgyRCwweEFFLDB4N0YsMHg3RiwweDg1LDB4NjEsMHhFMyww
eDQwLDB4RTAsMHhGOCwweEZCLDB4NUYsCi0gICAgMHg2NCwweDUxLDB4RTMsMHg0MCwweDJBLDB4
MkYsMHgyRiwweDNELDB4ODcsMHg3MiwweDg0LDB4NTksMHgzRCwweEJELDB4QkQsMHgyRCwKLSAg
ICAweENGLDB4QkMsMHhBOCwweDdBLDB4MkQsMHhCRCwweEY1LDB4RjUsMHg5NiwweEY2LDB4OEIs
MHg5MywweDAwLDB4MEIsMHhGNSwweDU1LAotICAgIDB4QjYsMHhGNiwweDhCLDB4OTMsMHgwMCww
eDI4LDB4RkYsMHg1NSwweEI2LDB4RjYsMHhBQiwweDkzLDB4MDAsMHgwMCwweDJBLDB4RDUsCi0g
ICAgMHhCNiwweEY2LDB4Q0YsMHhCQywweDAwLDB4MDAsMHgwMCwweEY1LDB4RDcsMHhGNiwweDMx
LDB4Q0QsMHgwMCwweDAwLDB4MEEsMHhCNSwKLSAgICAweEQ3LDB4RkUsMHg5MiwweEQ1LDB4MDAs
MHgwMCwweDAwLDB4N0EsMHgzNSwweEU2LDB4RTUsMHg2OSwweDgwLDB4RTAsMHg3OCwweDVFLAot
ICAgIDB4RTgsMHg4QSwweEU1LDB4NzEsMHhEQywweEY3LDB4RkQsMHhGNSwweDg3LDB4OEEsMHgy
NiwweDdBLDB4MjksMHhBOSwweENBLDB4RUIsCi0gICAgMHg2NywweDhBLDB4MDYsMHg3QSwweDYw
LDB4RkMsMHg5QSwweDk3LDB4QzgsMHg5MiwweDA2LDB4N0EsMHhGNSwweEJELDB4MkYsMHgwQSwK
LSAgICAweEI2LDB4RjYsMHg4OCwweDhBLDB4MEQsMHgwOSwweDBCLDB4MEIsMHgzOCwweEZGLDB4
RjgsMHhGRSwweEJGLDB4QkQsMHhCRiwweEY3LAotICAgIDB4MTgsMHhGRiwweDM4LDB4RjcsMHhB
RSwweEJBLDB4QUEsMHhBOCwweDM4LDB4RkYsMHhGNywweEY2LDB4RkEsMHg3QSwweEZBLDB4Rjgs
Ci0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweENFLDB4MzIsMHhBMCwweDIwLDB4RjcsMHhGNiww
eEQ3LDB4RjYsMHhBQywweEJBLDB4QzIsMHgwMCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4
QTAsMHhBQSwweDhBLDB4MjMsMHgxOCwweEZGLDB4RDYsMHhGNiwweEJGLDB4MkYsMHg4QSwweDcy
LAotICAgIDB4MTcsMHhGRiwweDk2LDB4RUUsMHhGOCwweDdFLDB4RDcsMHg1NywweEI2LDB4RjYs
MHg1NSwweEU2LDB4ODIsMHhBQSwweEUyLDB4NjIsCi0gICAgMHg5NiwweEVFLDB4QjMsMHhENSww
eEEwLDB4QTgsMHhGQSwweERGLDB4RDcsMHhGNiwweDE0LDB4REUsMHhCNSwweDBCLDB4MkIsMHgw
MiwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4RDUsMHg5NiwweEFGLDB4RkYsMHhENywweEY2
LDB4RjYsMHhFRSwweDAyLDB4ODIsMHgwQSwweDAwLAotICAgIDB4RjcsMHhGNiwweEI2LDB4RUUs
MHhFQSwweEVBLDB4N0EsMHhFQSwweEQ3LDB4RjYsMHhCNywweEVFLDB4ODAsMHhDMiwweEZCLDB4
QUMsCi0gICAgMHhENywweEY2LDB4QjcsMHhFRSwweEFBLDB4RUEsMHgwMCwweDAwLDB4QjcsMHhG
NiwweEQ3LDB4RUUsMHhFQSwweEZGLDB4RkYsMHhBRSwKLSAgICAweEQ3LDB4RjYsMHhCNywweEVF
LDB4ODgsMHgwQSwweDJCLDB4RkYsMHhENywweEY2LDB4QjcsMHhFRSwweDg4LDB4QTAsMHg4MCww
eEEwLAotICAgIDB4RDcsMHhGNiwweEY3LDB4RUUsMHg4OCwweEEwLDB4ODgsMHhBMCwweDE4LDB4
RkYsMHhENywweEY2LDB4M0QsMHhCRiwweEJELDB4RjUsCi0gICAgMHgzOCwweEZGLDB4RjcsMHhG
NiwweDgyLDB4OEEsMHhBQiwweEJELDB4MzksMHhGRiwweDk3LDB4RUUsMHhGRSwweEZFLDB4N0Ms
MHg3OCwKLSAgICAweEI3LDB4RjYsMHg3NiwweEU2LDB4RTgsMHhFOCwweEZGLDB4RkUsMHhENyww
eEY2LDB4NzYsMHhFRSwweEFGLDB4QkYsMHhCRiwweEI1LAotICAgIDB4QjcsMHhGNiwweDMwLDB4
QzUsMHhEOCwweEQ4LDB4RDgsMHhGOCwweEI3LDB4RjYsMHgzNCwweEU2LDB4ODMsMHg4QiwweDIz
LDB4ODksCi0gICAgMHg1NSwweEVFLDB4OTIsMHhDRCwweDU2LDB4N0MsMHg1QywweEZDLDB4RjQs
MHhERCwweDcxLDB4Q0QsMHgyRCwweDJELDB4MkYsMHgyRiwKLSAgICAweDkyLDB4Q0QsMHg0RCww
eEFDLDB4RkUsMHhEQywweEQ0LDB4NUMsMHgzNSwweEU2LDB4MTAsMHhDNSwweDJCLDB4MkQsMHhC
RCwweEFELAotICAgIDB4OTYsMHhFRSwweDM0LDB4RTYsMHhFMCwweEUyLDB4QTksMHhFOSwweDU1
LDB4RTYsMHgzNCwweEU2LDB4OTIsMHgxQywweDI4LDB4ODAsCi0gICAgMHhENiwweEY2LDB4QjYs
MHhFRSwweEFCLDB4RUUsMHhBRSwweDJBLDB4RDYsMHhGNiwweEI2LDB4RUUsMHg4QSwweEFCLDB4
QkEsMHhBMCwKLSAgICAweEQ2LDB4RjYsMHhCNywweEVFLDB4QUEsMHgwMywweDI4LDB4QUMsMHhG
NywweEY2LDB4QjYsMHhFRSwweEFCLDB4RUEsMHhCQiwweEVGLAotICAgIDB4RDYsMHhGNiwweEQ3
LDB4RUUsMHg4QSwweDhBLDB4QTIsMHhBQSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4NzIsMHhFMCww
eDgwLDB4ODAsCi0gICAgMHhENiwweEY2LDB4OTYsMHhFRSwweEZGLDB4RkUsMHhGRSwweEVBLDB4
OTUsMHhGNiwweEQ2LDB4RUUsMHhCQSwweEVBLDB4RjYsMHhGRiwKLSAgICAweEQ2LDB4RjYsMHhC
NiwweEVFLDB4RjUsMHhGNywweEZELDB4RkYsMHhENiwweEY2LDB4RjcsMHhFRSwweDI4LDB4QTgs
MHg4MCwweDIwLAotICAgIDB4RDYsMHhGNiwweEY3LDB4RUUsMHg4MCwweDA4LDB4MjgsMHg4Miww
eEY2LDB4RjYsMHhENywweEY2LDB4NzcsMHg1RiwweEZGLDB4RkUsCi0gICAgMHhENiwweEY2LDB4
NEEsMHg4QiwweDYwLDB4QzAsMHg4MCwweDgwLDB4NDcsMHg2QSwweDAzLDB4NDEsMHg3NywweEQ3
LDB4NTYsMHhENCwKLSAgICAweDQ0LDB4NDksMHhFMywweDQwLDB4QUIsMHhBOCwweEEwLDB4NjAs
MHgyMywweDQ5LDB4RTMsMHg0MCwweDdBLDB4NjgsMHg1RSwweDU2LAotICAgIDB4NjQsMHg1MSww
eEUzLDB4NDAsMHgzRCwweEI1LDB4MzUsMHgzRCwweEM4LDB4N0EsMHhBNSwweDU5LDB4MkQsMHgy
RCwweDJELDB4QkQsCi0gICAgMHg0QSwweDkzLDB4QTgsMHg3QSwweDJGLDB4MkQsMHg4QiwweENE
LDB4NEIsMHg5MywweEE4LDB4N0EsMHg4MCwweEU4LDB4NUUsMHg1NywKLSAgICAweDA5LDB4ODMs
MHg0NywweDcyLDB4MDAsMHhBQSwweEZGLDB4RDcsMHg0QSwweDhCLDB4ODcsMHg3MiwweDAyLDB4
QUYsMHhGNSwweEQ1LAotICAgIDB4MEMsMHhBNCwweEU4LDB4ODIsMHgyQSwweEFGLDB4QkQsMHhC
RCwweDZFLDB4QjQsMHgwOSwweDhCLDB4MkEsMHhGQSwweDdCLDB4NUYsCi0gICAgMHg2RSwweEI0
LDB4MDUsMHg2QSwweDgwLDB4N0EsMHg1RiwweDU3LDB4QTgsMHg4MiwweEM0LDB4NjEsMHhGQyww
eEJFLDB4QUYsMHhBRCwKLSAgICAweDQ2LDB4N0EsMHhDNSwweDY5LDB4QkMsMHhGRSwweEZFLDB4
RDYsMHg0NywweDgyLDB4RTUsMHg3OSwweEUyLDB4QUYsMHhCNSwweDM1LAotICAgIDB4QTgsMHg5
MiwweDA2LDB4N0EsMHhBNywweDg5LDB4OEIsMHg4QiwweDJBLDB4OUIsMHg2NywweDhBLDB4MjUs
MHgzRCwweDJCLDB4MEIsCi0gICAgMHhGNywweEZFLDB4MEQsMHhCNCwweDA5LDB4MDMsMHgwMSww
eDA5LDB4MzgsMHhGRiwweEY3LDB4RjYsMHhCRiwweEZGLDB4QkYsMHhGRiwKLSAgICAweDM4LDB4
RkYsMHgxNywweEY3LDB4RkYsMHhCRiwweEZELDB4RkIsMHgzOCwweEZGLDB4MTcsMHhGNywweDVF
LDB4NUYsMHhGNywweDdGLAotICAgIDB4MzgsMHhGRiwweEY3LDB4RjYsMHg1NywweDVGLDB4N0Ys
MHhGQSwweDE4LDB4RkYsMHhGNywweEY2LDB4NzcsMHg1RCwweEI1LDB4QUUsCi0gICAgMHgxNyww
eEZGLDB4QjYsMHhFRSwweDJBLDB4MEEsMHhDMCwweDYwLDB4RjcsMHhGRSwweDU1LDB4RTYsMHhB
MCwweEZDLDB4RkYsMHhGRiwKLSAgICAweEI2LDB4RjYsMHg3NSwweEVFLDB4ODIsMHgwMiwweEFC
LDB4NTcsMHhCNiwweEY2LDB4NTUsMHhFNiwweDcwLDB4N0EsMHhCQSwweERGLAotICAgIDB4Rjcs
MHhGRSwweEIzLDB4RDUsMHg5NywweDBGLDB4MDIsMHhBQSwweEY3LDB4RkUsMHhENywweEY2LDB4
RDUsMHg3QSwweEVBLDB4QUIsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEUzLDB4RUYsMHhF
MywweEY5LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1NSwweDVGLDB4NzYsMHhFQSwKLSAgICAweEY3
LDB4RjYsMHhCNiwweEVFLDB4QUIsMHhCRiwweEJCLDB4QjIsMHhENywweEY2LDB4QjcsMHhFRSww
eDA4LDB4ODAsMHhFOCwweDgwLAotICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHhBMCwweEE4LDB4
RTgsMHhBNiwweEI2LDB4RjYsMHhENywweEVFLDB4QUIsMHhBQiwweEFGLDB4RkEsCi0gICAgMHhE
NywweEY2LDB4QjcsMHhFRSwweEZGLDB4QkIsMHhBQSwweEVBLDB4QjcsMHhGNiwweEY3LDB4RUUs
MHhBQSwweEFBLDB4QUEsMHg2RSwKLSAgICAweEY4LDB4RjYsMHhENywweEY2LDB4RDUsMHg1NSww
eEZELDB4MkIsMHhGOCwweEY2LDB4RDcsMHhGNiwweDBGLDB4MEIsMHgwQSwweDBBLAotICAgIDB4
MTgsMHhGRiwweEQ3LDB4RjYsMHgyQSwweDJCLDB4QkIsMHhGRiwweDM5LDB4RkYsMHg5NywweEVF
LDB4NzgsMHg3QSwweDcyLDB4NkEsCi0gICAgMHg5NiwweEVFLDB4NzYsMHhFNiwweEI4LDB4ODAs
MHhBOCwweEJELDB4QjcsMHhGNiwweDU2LDB4RUUsMHgzRiwweEJGLDB4QUYsMHhBRSwKLSAgICAw
eEI3LDB4RjYsMHgzMCwweEM1LDB4RDgsMHhEOCwweEY4LDB4NTgsMHhCNywweEY2LDB4MzQsMHhF
NiwweDA5LDB4ODksMHgyOSwweDg5LAotICAgIDB4NzYsMHhFRSwweDcyLDB4Q0QsMHhGOCwweEY4
LDB4NzgsMHg1OCwweEQzLDB4RDUsMHg3MSwweENELDB4MkIsMHhBRSwweEZFLDB4RDUsCi0gICAg
MHg5MiwweEQ1LDB4NkQsMHhBQywweEQ0LDB4OTYsMHgxNiwweDM2LDB4MzQsMHhFNiwweDkyLDB4
RDUsMHhCRCwweEFGLDB4MkIsMHgwRiwKLSAgICAweDk2LDB4RUUsMHgzNCwweEU2LDB4RTEsMHhF
QiwweENCLDB4OEIsMHg1NSwweEU2LDB4MzUsMHhFNiwweEEyLDB4QkUsMHhGQSwweEFDLAotICAg
IDB4RDYsMHhGNiwweEI2LDB4RUUsMHhBQSwweEFBLDB4QUEsMHgwMiwweEQ3LDB4RjYsMHhCNiww
eEVFLDB4QUEsMHhBOCwweEJBLDB4MjgsCi0gICAgMHhENiwweEY2LDB4QjcsMHhFNiwweDIwLDB4
MDIsMHhDMCwweEEyLDB4RDYsMHhGNiwweEI2LDB4RUUsMHg4QSwweDJBLDB4MEIsMHgwMiwKLSAg
ICAweEQ3LDB4RjYsMHhENiwweEVFLDB4QUEsMHgyQSwweEIyLDB4MjIsMHhGOCwweEY2LDB4RDYs
MHhGNiwweDdELDB4NUYsMHg3NywweERELAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHg1Niww
eEY3LDB4NUUsMHg5RSwweEQ2LDB4RjYsMHhCNiwweEVFLDB4NzUsMHhGNSwweEQ1LDB4QjYsCi0g
ICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDlELDB4RDcsMHhGRCwweEJCLDB4RjgsMHhGNiwweEQ3
LDB4RjYsMHg1RCwweEY1LDB4RkYsMHhCRCwKLSAgICAweEY2LDB4RjYsMHhENywweEY2LDB4NTUs
MHhERCwweEZDLDB4RkUsMHhGNiwweEY2LDB4RDcsMHhGNiwweEZELDB4NzUsMHg1RiwweDZFLAot
ICAgIDB4RjgsMHhGRSwweDc2LDB4RTYsMHg2QSwweEU4LDB4Q0EsMHhBQSwweDUxLDB4QzUsMHgw
MiwweDQxLDB4NTYsMHg1NiwweDU0LDB4NUMsCi0gICAgMHg4NCwweDUxLDB4MjMsMHg0MSwweEY3
LDB4RkQsMHg4RCwweDlELDB4NDQsMHg0OSwweDAzLDB4NDEsMHg1NiwweDk0LDB4RjQsMHgzNiwK
LSAgICAweDA2LDB4NjIsMHgwMywweDQxLDB4QjUsMHhCRiwweDJCLDB4MjMsMHg2NywweDcyLDB4
QzUsMHg1OSwweDI5LDB4MEIsMHgyQSwweEQ3LAotICAgIDB4MDksMHg4MywweDQ2LDB4NkEsMHgy
QSwweEFCLDB4RkYsMHhGRCwweEE4LDB4N0EsMHgyNywweDZBLDB4QTgsMHhFOCwweEZFLDB4RkIs
Ci0gICAgMHg4OCwweDcyLDB4MjYsMHg2QSwweEE4LDB4MkUsMHhFQiwweDZGLDB4QTcsMHg3QSww
eDI2LDB4NkEsMHgyRiwweEJGLDB4QjcsMHhENSwKLSAgICAweDZBLDB4OTMsMHhBNywweDdBLDB4
MjksMHhCRCwweEQ1LDB4NTUsMHg2QSwweDkzLDB4NDcsMHg3MiwweEEwLDB4QTIsMHhFQSwweDdG
LAotICAgIDB4ODgsMHg3QSwweEE0LDB4NjEsMHg3OCwweDc4LDB4NUUsMHhERiwweDY4LDB4N0Es
MHhFNSwweDY5LDB4MEQsMHgyRCwweEVELDB4RUQsCi0gICAgMHg0NywweDdBLDB4MjMsMHg1OSww
eEI4LDB4RjgsMHhERSwweERFLDB4MjYsMHg4MiwweDg0LDB4NjksMHgyQiwweDBCLDB4MEIsMHgy
RCwKLSAgICAweDY3LDB4OEEsMHgyNiwweDgyLDB4MDIsMHhEQSwweDdBLDB4REQsMHg0OSwweDlC
LDB4NjcsMHg4QSwweDJELDB4MzUsMHhCRCwweEU5LAotICAgIDB4RjcsMHhGRSwweDBDLDB4QjQs
MHgwOSwweDA5LDB4MDksMHgwOSwweDE4LDB4RkYsMHhGNywweEY2LDB4MkEsMHgyQSwweEJBLDB4
QUEsCi0gICAgMHgzOCwweEZGLDB4RjcsMHhGNiwweDNCLDB4QUUsMHhGQiwweEVGLDB4MTgsMHhG
RiwweDM4LDB4RjcsMHhFQiwweEFBLDB4QUEsMHhBOCwKLSAgICAweDM4LDB4RkYsMHgxOCwweEZG
LDB4QkEsMHhBQSwweDhBLDB4RkEsMHgzOCwweEZGLDB4RDcsMHhGNiwweEFBLDB4QUEsMHhDQSww
eDZBLAotICAgIDB4MTgsMHhGRiwweEI2LDB4RUUsMHg1OCwweDVFLDB4RjcsMHhGRiwweEQ2LDB4
RjYsMHg5NiwweEVFLDB4RkYsMHhGRiwweDY4LDB4N0EsCi0gICAgMHg5NSwweEVFLDB4OTEsMHhE
NSwweEEwLDB4RTAsMHg3MCwweDg4LDB4NzYsMHhFRSwweEYwLDB4QzQsMHhBMiwweEI3LDB4MkQs
MHgwMiwKLSAgICAweDU1LDB4RUUsMHg1MSwweENELDB4MkYsMHhENywweEY4LDB4RjAsMHhENyww
eEY2LDB4RDQsMHhERCwweDAyLDB4MDMsMHgwRiwweDJELAotICAgIDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHhBOSwweDJCLDB4QkEsMHhBRCwweEQ4LDB4RkUsMHhGNywweEY2LDB4RDUsMHg3NSwweDc3
LDB4REQsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDVFLDB4QTcsMHg4OCwweDU2LDB4Rjcs
MHhGNiwweEI3LDB4RUUsMHhBQSwweEU4LDB4RUEsMHhGRiwKLSAgICAweEY3LDB4RjYsMHhCNyww
eEVFLDB4RkYsMHhERSwweEY1LDB4QUIsMHhGNywweEY2LDB4QjcsMHhGNiwweEZGLDB4QUIsMHhB
QSwweDA4LAotICAgIDB4RjcsMHhGNiwweEI3LDB4RUUsMHhCRiwweEFCLDB4MDAsMHgwMCwweEY4
LDB4RjYsMHhENywweEY2LDB4OEEsMHhFQSwweEEwLDB4QUEsCi0gICAgMHhGOCwweEY2LDB4RDcs
MHhGNiwweDJBLDB4MEEsMHhBMiwweDZFLDB4RjcsMHhGNiwweEQ4LDB4RjYsMHgwMiwweDAwLDB4
RjgsMHhGQiwKLSAgICAweEQ3LDB4RjYsMHhGOCwweEVFLDB4QUEsMHg4MiwweDIyLDB4MEEsMHgx
OCwweEZGLDB4QjcsMHhFRSwweDRBLDB4RUEsMHhFQiwweEVGLAotICAgIDB4QjYsMHhFRSwweDc2
LDB4RUUsMHg3NywweDVGLDB4NUUsMHg3NCwweDk2LDB4RUUsMHg1NSwweEVFLDB4MjIsMHgyQSww
eDJBLDB4MzcsCi0gICAgMHhCNiwweEY2LDB4MzEsMHhDNSwweEQ4LDB4RDgsMHhEOCwweEQ4LDB4
OTYsMHhFRSwweDE0LDB4RTYsMHgwMSwweDA5LDB4MEIsMHgwOSwKLSAgICAweDk2LDB4RUUsMHg3
MiwweENELDB4NTgsMHg3OCwweDc4LDB4NjgsMHg3MiwweENELDB4NTEsMHhDNSwweDJBLDB4OUIs
MHhDMiwweDdCLAotICAgIDB4RDMsMHhENSwweENGLDB4QkMsMHgzNywweDJGLDB4MkEsMHgwQiww
eDM0LDB4RTYsMHhEMywweEQ1LDB4M0QsMHgzOSwweDNCLDB4QUYsCi0gICAgMHg5NiwweEVFLDB4
NTUsMHhFNiwweENGLDB4QUIsMHhBMSwweEFCLDB4NzYsMHhFRSwweDU1LDB4RTYsMHg1NywweDU3
LDB4OUMsMHgxRSwKLSAgICAweEQ2LDB4RjYsMHhCNywweEVFLDB4ODAsMHhBOCwweEU4LDB4QTIs
MHhENywweEY2LDB4RjYsMHhFRSwweDg4LDB4QTAsMHgwMCwweDAwLAotICAgIDB4RDcsMHhGNiww
eEQ2LDB4RUUsMHhBQSwweEE4LDB4QUEsMHhBQSwweEQ3LDB4RjYsMHhGNiwweEVFLDB4MjAsMHgy
QSwweEE4LDB4ODAsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDU5LDB4RDUsMHhGRCwweEJE
LDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGRiwweERGLDB4QUYsMHhBMywKLSAgICAweEQ2LDB4RjYs
MHhCNywweEVFLDB4QTgsMHhFQSwweEEwLDB4QjAsMHhENiwweEY2LDB4QjYsMHhFRSwweERCLDB4
RkUsMHhCMiwweDgyLAotICAgIDB4RDcsMHhGNiwweEI2LDB4RUUsMHhCRiwweEJFLDB4NkUsMHhB
RSwweEY4LDB4RjYsMHhENywweEY2LDB4QkYsMHg1NSwweERELDB4RDksCi0gICAgMHhGNywweEY2
LDB4RDcsMHhGNiwweDVGLDB4RkYsMHhCRiwweEVGLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBQSww
eEFBLDB4QUUsMHhFMiwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4NzYsMHg3NiwweDc2LDB4
REQsMHg1NCwweEU2LDB4MjMsMHg0MSwweDVDLDB4NUMsMHg1QywweDU4LAotICAgIDB4QzUsMHg1
OSwweEEyLDB4MzgsMHhCRiwweEJELDB4QkQsMHgyQiwweDA2LDB4NjIsMHgyMywweDQ5LDB4RjUs
MHhCRiwweDBCLDB4MDAsCi0gICAgMHgyNiwweDZBLDB4QTUsMHg1OSwweEZELDB4RkIsMHhBMCww
eDgwLDB4RTUsMHg2MSwweEE1LDB4NTksMHhCRiwweDY1LDB4RTYsMHgzOCwKLSAgICAweDQ3LDB4
NkEsMHhFNiwweDYxLDB4MkYsMHhBNSwweEZGLDB4MEIsMHg0NywweDcyLDB4RTUsMHg2MSwweDJB
LDB4M0UsMHhENywweDVFLAotICAgIDB4NjgsMHg3MiwweEU1LDB4NjEsMHhFOCwweEZFLDB4NTUs
MHg1NSwweDQ2LDB4NkEsMHhFNSwweDYxLDB4OEUsMHhCRiwweEJELDB4NTUsCi0gICAgMHhBOCww
eDdBLDB4QzUsMHg2MSwweDAyLDB4QUEsMHhGRiwweDVELDB4NjgsMHg3MiwweEM0LDB4NjEsMHhF
MCwweDdBLDB4NTcsMHg1NSwKLSAgICAweDg4LDB4ODIsMHhBNCwweDYxLDB4RDUsMHhBRCwweDhG
LDB4MEIsMHhBOCwweDgyLDB4QTUsMHg2OSwweEZFLDB4RkEsMHg2QSwweDcwLAotICAgIDB4ODUs
MHg2MSwweEUzLDB4NTgsMHhCOCwweEZFLDB4QkYsMHhBRiwweDY3LDB4ODIsMHg2NCwweDYxLDB4
QkQsMHhCNSwweEE1LDB4MjUsCi0gICAgMHhBOCwweDhBLDB4MjYsMHg4MiwweDdELDB4RkQsMHhB
QiwweDAyLDB4NkEsMHg5QiwweDQ2LDB4ODIsMHhGRCwweEJELDB4QkYsMHgxNywKLSAgICAweEY3
LDB4RkUsMHg4RiwweEJDLDB4MDksMHgwOSwweDAzLDB4MDMsMHhGNywweEZFLDB4MTcsMHhGNyww
eEZBLDB4RUUsMHhBRSwweEVGLAotICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHgyRiwweEFCLDB4
ODIsMHhBQSwweDE3LDB4RkYsMHhGNywweEY2LDB4QUEsMHhGQSwweDVFLDB4NzYsCi0gICAgMHgx
NywweEZGLDB4RDcsMHhGNiwweDIwLDB4MEEsMHgwQiwweDQyLDB4MTcsMHhGRiwweEI2LDB4RUUs
MHhFMCwweDdDLDB4REYsMHg3NSwKLSAgICAweDE4LDB4RkYsMHhCNiwweEVFLDB4N0QsMHhGNyww
eEZELDB4MkIsMHhGOCwweEZFLDB4RjMsMHhERCwweEVBLDB4N0EsMHg3QSwweEMwLAotICAgIDB4
RjgsMHhGRSwweEQzLDB4RDUsMHgwQiwweDA5LDB4MEIsMHgwMiwweEY3LDB4RkUsMHg3NiwweEVF
LDB4N0UsMHg3MCwweDYwLDB4QzAsCi0gICAgMHg3NiwweEVFLDB4RjQsMHhERCwweDcwLDB4NDgs
MHg4OCwweDg4LDB4NzYsMHhFRSwweEQzLDB4RDUsMHgyRCwweDJELDB4MkYsMHhCRSwKLSAgICAw
eEY3LDB4RkUsMHg5NiwweEVFLDB4QUEsMHg4QiwweDI5LDB4MjksMHhGNywweEY2LDB4RDcsMHhG
NiwweEVCLDB4RUMsMHhGQSwweEEwLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhGNSwweEYz
LDB4QjksMHhEMSwweEY3LDB4RjYsMHhENywweEY2LDB4QjUsMHgyQiwweEVGLDB4NzUsCi0gICAg
MHhGNywweEY2LDB4RDcsMHhGNiwweEQ2LDB4RjYsMHhGNywweEZGLDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHhBQSwweEJFLDB4QkYsMHhGOSwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4QTYsMHhB
RiwweEJBLDB4Q0EsMHhGNywweEY2LDB4RDcsMHhGNiwweDgwLDB4QTIsMHgwQSwweEFBLAotICAg
IDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4RSwweDgyLDB4ODgsMHhCNSwweEY3LDB4RjYsMHhENyww
eEY2LDB4MDgsMHgwMCwweEM4LDB4NzIsCi0gICAgMHhGOCwweEY2LDB4QjcsMHhFRSwweEZBLDB4
NzgsMHhGRSwweDVGLDB4RjgsMHhGNiwweEI3LDB4RUUsMHg4QiwweDhCLDB4QUIsMHhCNSwKLSAg
ICAweEI2LDB4RUUsMHg3NiwweEU2LDB4NzYsMHhGNiwweEJFLDB4QUMsMHg5NiwweEVFLDB4NzYs
MHhFRSwweDM1LDB4ODgsMHhEOCwweEQ2LAotICAgIDB4OTYsMHhGNiwweDUxLDB4Q0QsMHhEOCww
eEQ4LDB4RjgsMHhEOCwweDk2LDB4RUUsMHgxNCwweERFLDB4ODksMHg4QiwweDhCLDB4QUIsCi0g
ICAgMHg1NSwweEVFLDB4NzIsMHhDRCwweDYwLDB4NjAsMHg0MCwweDYwLDB4NTEsMHhDRCwweEFG
LDB4QjQsMHhBMCwweEU4LDB4RjgsMHg3RSwKLSAgICAweDM0LDB4RTYsMHhGMCwweEJDLDB4QTks
MHgyRCwweDI5LDB4MDksMHg1NCwweEU2LDB4MTQsMHhFNiwweEQ3LDB4REYsMHhCQSwweDlBLAot
ICAgIDB4OTYsMHhFRSwweDU1LDB4RTYsMHhBOSwweDJCLDB4MDMsMHgwRiwweEI2LDB4RUUsMHg1
NSwweEU2LDB4RjcsMHhGRiwweEY3LDB4MjcsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweEFB
LDB4QTgsMHgwQSwweDAyLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhBQSwweEFBLDB4QUEsMHhBOCwK
LSAgICAweEQ2LDB4RjYsMHhCNywweEVFLDB4QTIsMHgyMiwweDIyLDB4MDIsMHhGNywweEY2LDB4
QjYsMHhFRSwweEFBLDB4QkEsMHhFQiwweEJCLAotICAgIDB4RDcsMHhGNiwweEY3LDB4RUUsMHhB
MCwweDgwLDB4MjgsMHg4QSwweEY3LDB4RjYsMHhENywweEY2LDB4RUIsMHg2RCwweDU2LDB4NUUs
Ci0gICAgMHhGNywweEY2LDB4QjYsMHhFRSwweEVBLDB4QUEsMHhBRiwweEZGLDB4RDcsMHhGNiww
eEY2LDB4RUUsMHg4OCwweDgwLDB4QTIsMHg4MCwKLSAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4
RjYsMHhGQSwweEZBLDB4QUEsMHhGNywweEY2LDB4RDcsMHhGNiwweEU5LDB4RkQsMHhFMCwweDhB
LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBQSwweEFBLDB4QkUsMHhBRSwweEY3LDB4RjYs
MHhENywweEY2LDB4QTksMHhBRiwweEVCLDB4QUEsCi0gICAgMHhGNywweEY2LDB4OTcsMHhGNiww
eDIyLDB4QTgsMHhDOCwweDZBLDB4NzUsMHhFRSwweEE0LDB4NTksMHg3OCwweDc4LDB4N0MsMHhG
RSwKLSAgICAweEE3LDB4N0EsMHg4MywweDUxLDB4RjUsMHhCRiwweDJBLDB4MDgsMHgwOSwweDhC
LDB4MDYsMHg2QSwweDU1LDB4RkYsMHhFQiwweDAyLAotICAgIDB4RTksMHg4MiwweDI2LDB4NkEs
MHg1NSwweDdGLDB4RkEsMHg4OCwweDg3LDB4NzIsMHhDNCwweDU5LDB4N0YsMHg1NywweDdFLDB4
NzAsCi0gICAgMHhDOCwweDdBLDB4QTQsMHg1OSwweEFGLDB4MkIsMHgyNSwweEFELDB4ODgsMHg3
MiwweEU1LDB4NjEsMHg1OCwweDU4LDB4NzgsMHg1QywKLSAgICAweDA1LDB4NjIsMHhBNCwweDU5
LDB4QkYsMHgyRiwweDI3LDB4RkYsMHgyNywweDZBLDB4RTUsMHg2MSwweDU1LDB4RDUsMHg3MCww
eDU1LAotICAgIDB4MDYsMHg2MiwweDg0LDB4NTksMHg2MiwweDc4LDB4QUEsMHgwOCwweEM4LDB4
ODIsMHhBNCwweDU5LDB4OTUsMHgyNSwweDJGLDB4MEEsCi0gICAgMHhBQywweEEzLDB4ODcsMHg3
QSwweEY1LDB4QUIsMHgyQSwweDAyLDB4NkIsMHhBMywweEU2LDB4NzEsMHg3QSwweEVBLDB4QUMs
MHgyOCwKLSAgICAweDJBLDB4OUIsMHhDNSwweDY5LDB4NTUsMHg3QiwweEUwLDB4MDAsMHg4Qiww
eEEzLDB4RTUsMHg3MSwweEI1LDB4QjUsMHhCRiwweEYwLAotICAgIDB4QzksMHg5MiwweEM1LDB4
NjksMHhBMCwweEU4LDB4RkEsMHg3RSwweDc2LDB4RjYsMHg0NiwweDcyLDB4OTUsMHhCNSwweDI1
LDB4MEQsCi0gICAgMHhGNywweEZFLDB4MzUsMHhFRSwweDAxLDB4MDIsMHgwMCwweDAwLDB4Rjgs
MHhGRSwweDE3LDB4RjcsMHhGOSwweEZCLDB4Q0UsMHhCRSwKLSAgICAweDE3LDB4RkYsMHhGNyww
eEY2LDB4Q0EsMHhFQSwweEVBLDB4REEsMHgxNywweEZGLDB4RDcsMHhGNiwweEVBLDB4QUUsMHg4
QSwweDZBLAotICAgIDB4MTgsMHhGRiwweDk2LDB4RTYsMHhFMiwweEI4LDB4RkUsMHg3RiwweEQ3
LDB4RjYsMHgxNCwweERFLDB4MDAsMHgyMCwweEVBLDB4N0UsCi0gICAgMHgzOCwweEZGLDB4MzQs
MHhERSwweDAyLDB4MEEsMHgyOSwweDA5LDB4MzgsMHhGRiwweDU1LDB4RTYsMHg3MCwweEU4LDB4
QTgsMHhBMCwKLSAgICAweDE4LDB4RkYsMHhCNywweEVFLDB4MkQsMHgyOSwweEFBLDB4MEYsMHgx
OCwweEZGLDB4RDcsMHhGNiwweDZBLDB4RUEsMHhBQSwweDg4LAotICAgIDB4RDcsMHhGNiwweDU1
LDB4RTYsMHhENywweDVFLDB4N0MsMHg3OCwweDc2LDB4RUUsMHgxNCwweEU2LDB4REUsMHg1QSww
eEVBLDB4RUEsCi0gICAgMHhGOCwweEZFLDB4NTUsMHhFNiwweDg5LDB4MkQsMHgyRCwweEE1LDB4
MTgsMHhGRiwweEQ3LDB4RjYsMHhBOSwweEJELDB4QkYsMHhGRiwKLSAgICAweDE4LDB4RkYsMHhE
NywweEY2LDB4NUYsMHg3RSwweEZBLDB4QUIsMHhGNywweEY2LDB4RDcsMHhGNiwweDc1LDB4NTUs
MHg1NywweEY4LAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBNywweDZELDB4NkQsMHhBQiww
eDE3LDB4RjcsMHhENywweEY2LDB4N0QsMHhENSwweEZELDB4QUEsCi0gICAgMHhGOCwweEZFLDB4
RDcsMHhFRSwweDdGLDB4QkYsMHhBQSwweDI4LDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhGRCwweEZB
LDB4QUIsMHhGQSwKLSAgICAweEQ4LDB4RkUsMHhGNywweEY2LDB4NTUsMHg1NSwweEY1LDB4REQs
MHhGNywweEY2LDB4QjcsMHhFRSwweEU4LDB4RTgsMHhGQSwweDdBLAotICAgIDB4QjYsMHhFRSww
eDU2LDB4RTYsMHhBMCwweEE4LDB4MjgsMHgyQywweEQ3LDB4RjYsMHg5NiwweEVFLDB4MDcsMHgw
MywweDAyLDB4MDAsCi0gICAgMHhCNiwweEY2LDB4NTYsMHhFRSwweEJBLDB4N0UsMHhFQSwweEVF
LDB4OTYsMHhFRSwweDM1LDB4RTYsMHg4OCwweDJCLDB4MkEsMHgyQSwKLSAgICAweDc2LDB4RUUs
MHg3MiwweENELDB4RDgsMHhEMCwweEQ4LDB4RjgsMHg5NiwweEVFLDB4MTUsMHhFNiwweDhCLDB4
ODksMHhBRiwweEU5LAotICAgIDB4NTYsMHhFRSwweEIzLDB4RDUsMHg2MCwweDYwLDB4NkEsMHg2
QSwweEYxLDB4QzQsMHg2RSwweEFDLDB4RTgsMHhGOCwweDdFLDB4REMsCi0gICAgMHgzNCwweEU2
LDB4RUYsMHhDNCwweDI5LDB4MDksMHgwQiwweDBCLDB4NTUsMHhFNiwweDE0LDB4REUsMHhCRSww
eDk3LDB4RkUsMHgzRSwKLSAgICAweDk2LDB4RUUsMHgzNSwweEU2LDB4MEIsMHgzQiwweDU3LDB4
NUYsMHhENywweEY2LDB4MzUsMHhFNiwweDJGLDB4MkYsMHg4RCwweDJCLAotICAgIDB4RDYsMHhG
NiwweEI2LDB4RUUsMHgwMiwweDAwLDB4RTIsMHgwMiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4MjIs
MHhDQSwweDg4LDB4QTgsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDAyLDB4MkIsMHhBQSww
eDg4LDB4RDcsMHhGNiwweEQ2LDB4RUUsMHhBQSwweEEyLDB4QUEsMHgyQSwKLSAgICAweEQ3LDB4
RjYsMHhGNiwweEVFLDB4ODIsMHgwQSwweDgwLDB4MEEsMHhENiwweEY2LDB4RjcsMHhFRSwweDA4
LDB4ODIsMHg4MiwweDA4LAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhCQSwweEJFLDB4RkUs
MHhGQywweEQ2LDB4RjYsMHhCNiwweEVFLDB4MDIsMHgyMywweEFCLDB4QUEsCi0gICAgMHhENiww
eEY2LDB4RjcsMHhFRSwweEE4LDB4QTIsMHhBMCwweDA4LDB4RjcsMHhGNiwweEQ2LDB4RjYsMHgw
OCwweDAyLDB4OEYsMHhGRCwKLSAgICAweEY3LDB4RjYsMHhENiwweEY2LDB4QjgsMHgwMiwweDAw
LDB4QUIsMHhENywweEZFLDB4RjcsMHhGNiwweEJELDB4RjcsMHhENSwweEY1LAotICAgIDB4RDcs
MHhGNiwweDEzLDB4RTYsMHhDMCwweEMwLDB4NDAsMHg0MCwweDhELDB4QjQsMHg4NiwweDcyLDB4
NUMsMHg1QywweDU2LDB4NTYsCi0gICAgMHhBOCwweDdBLDB4MDYsMHg2QSwweDJBLDB4RUYsMHhG
RiwweDVDLDB4RTgsMHg4QSwweEU1LDB4NjEsMHgwMiwweEFBLDB4NUYsMHg3NSwKLSAgICAweEM4
LDB4ODIsMHgwNSwweDYyLDB4QTgsMHhGRSwweEY1LDB4REQsMHg4NywweDcyLDB4ODQsMHg1MSww
eEU4LDB4N0EsMHg3RSwweDdFLAotICAgIDB4RTUsMHg2MSwweDQzLDB4NDksMHgwMiwweEFCLDB4
RDcsMHhERiwweEU2LDB4NjEsMHg4NCwweDUxLDB4QUEsMHhBQiwweEU1LDB4MjksCi0gICAgMHgy
NiwweDZBLDB4QTUsMHg1OSwweDVGLDB4QkYsMHhBRiwweDNGLDB4NjcsMHg3MiwweEM1LDB4NTks
MHhGNSwweEZELDB4QTcsMHgyQiwKLSAgICAweDI5LDB4OTMsMHhFNSwweDYxLDB4RDUsMHhGRiww
eDJCLDB4MEIsMHg0QSwweDlCLDB4NjYsMHg3QSwweEFELDB4MkIsMHg4QSwweDAyLAotICAgIDB4
MkUsMHhCQywweDRBLDB4OUIsMHgyRCwweDJELDB4MkQsMHgzRCwweDhGLDB4QzQsMHgyQSwweDlC
LDB4NUYsMHhFOCwweDgwLDB4MDAsCi0gICAgMHhFQywweEFCLDB4QzksMHg4QSwweDlELDB4RDcs
MHhGRSwweEY4LDB4QUMsMHhBQiwweDA1LDB4NkEsMHhFMCwweEU4LDB4RkEsMHg1RiwKLSAgICAw
eDMwLDB4Q0QsMHgyNiwweDcyLDB4NTUsMHhENSwweEI1LDB4MkQsMHhENywweEZFLDB4MkEsMHg5
MywweDA5LDB4MEIsMHgwMiwweDAwLAotICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHhFRSwweEVC
LDB4ODMsMHhBQiwweDE3LDB4RkYsMHhGNywweEY2LDB4QUIsMHhCRiwweEFFLDB4RUEsCi0gICAg
MHgxNywweEZGLDB4RDcsMHhGNiwweEJBLDB4QkUsMHhBRSwweEZBLDB4MTgsMHhGNywweDk1LDB4
RUUsMHg2MCwweDdDLDB4NUUsMHhCNSwKLSAgICAweDE3LDB4RkYsMHg3NSwweEU2LDB4NzcsMHhG
NywweEFCLDB4MDAsMHgxNywweEZGLDB4QjMsMHhENSwweDdFLDB4RkEsMHhBOCwweEEwLAotICAg
IDB4MTgsMHhGRiwweDc1LDB4RTYsMHgwMSwweDAyLDB4MDAsMHgwMCwweDM5LDB4RkYsMHhENyww
eEY2LDB4NzAsMHhGMCwweEU4LDB4RTAsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEFELDB4
MkYsMHhBRiwweEVGLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhFRSwweERELDB4QUIsMHhCQiwKLSAg
ICAweEY4LDB4RkUsMHg1NSwweEU2LDB4NzgsMHg2MCwweEMwLDB4ODAsMHg3NSwweEVFLDB4MzQs
MHhFNiwweDZBLDB4RUEsMHhFQSwweEY4LAotICAgIDB4RDcsMHhGNiwweDM0LDB4RTYsMHgyRiww
eDM1LDB4QkQsMHhCRiwweEY3LDB4RjYsMHhCNywweEY2LDB4MjAsMHhBQSwweEFCLDB4QUIsCi0g
ICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweEY1LDB4RDUsMHhCRiwweDU1LDB4RjgsMHhGNiwweEQ3
LDB4RjYsMHgzQSwweEJDLDB4RTAsMHgwMCwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4NTcs
MHg2QiwweEQ1LDB4NTUsMHhGOCwweEZFLDB4RjcsMHhGNiwweEQ1LDB4RDUsMHg1RiwweDVGLAot
ICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHg3NSwweEY3LDB4RkQsMHhENSwweEY3LDB4RjYsMHhE
OCwweEY2LDB4MDAsMHgwMCwweEE4LDB4RTgsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEU4
LDB4N0EsMHhGQSwweDdBLDB4RDcsMHhGNiwweDk2LDB4RUUsMHhCMCwweEU4LDB4RjIsMHg3QSwK
LSAgICAweEQ3LDB4RUUsMHg3NSwweEVFLDB4MkYsMHhCRiwweDM3LDB4QjcsMHhENywweEY2LDB4
QjYsMHhFRSwweDAwLDB4MDAsMHhCRSwweEVBLAotICAgIDB4OTYsMHhFRSwweDM1LDB4RTYsMHgy
QSwweEFDLDB4QTYsMHg5NiwweDc2LDB4RUUsMHg1NSwweEU2LDB4MDgsMHgyRSwweDM4LDB4MEEs
Ci0gICAgMHg3NiwweEVFLDB4OTIsMHhDRCwweEQ4LDB4RDgsMHhEOCwweEQ4LDB4NzYsMHhFRSww
eDE0LDB4REUsMHhDOSwweEMxLDB4QTksMHhFQiwKLSAgICAweDM1LDB4RTYsMHhCMywweEQ1LDB4
NjgsMHg2QSwweDZFLDB4N0UsMHg1MSwweENELDB4RUMsMHhBMywweEJFLDB4OTYsMHg5NywweDM2
LAotICAgIDB4OTUsMHhFRSwweDcyLDB4RDUsMHhBRCwweEE5LDB4OEYsMHgwQiwweEI3LDB4RjYs
MHgxNCwweERFLDB4QjcsMHgzNywweDJGLDB4QTgsCi0gICAgMHhCNywweEY2LDB4MzUsMHhFNiww
eEZGLDB4RjgsMHhCRSwweDU3LDB4QjYsMHhFRSwweDU1LDB4RUUsMHgwMywweDhBLDB4QUEsMHg3
QiwKLSAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4OEYsMHhFRiwweEVGLDB4QUIsMHhENywweEY2
LDB4RDYsMHhFRSwweEFBLDB4QUEsMHhBQSwweEFBLAotICAgIDB4RDYsMHhGNiwweEY2LDB4RUUs
MHgwMCwweEEwLDB4QTAsMHg4MiwweEQ3LDB4RjYsMHhENiwweEVFLDB4QUEsMHhBQSwweDJBLDB4
MkEsCi0gICAgMHhENiwweEY2LDB4RDcsMHhFRSwweDJBLDB4QTIsMHhBQSwweDhBLDB4RDYsMHhG
NiwweEQ2LDB4RUUsMHg4QSwweEFBLDB4MkEsMHhBMiwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVF
LDB4QUUsMHhEQywweEZCLDB4QkEsMHhENiwweEY2LDB4QjYsMHhFRSwweEVGLDB4QkEsMHhFRSww
eEJCLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHgwQSwweDgzLDB4QkEsMHhBRSwweEQ2LDB4
RjYsMHhCNiwweEVFLDB4MDAsMHg4MiwweDgwLDB4QUEsCi0gICAgMHhENiwweEY2LDB4RjcsMHhF
RSwweEE4LDB4QUEsMHg4MCwweDAwLDB4RDcsMHhGRSwweEY2LDB4RUUsMHhBQiwweEFCLDB4M0Us
MHgyQSwKLSAgICAweEI2LDB4RjYsMHg0OSwweDhCLDB4ODAsMHhFMCwweDYwLDB4NjAsMHg0OSww
eDhCLDB4NDMsMHg0OSwweEE4LDB4RkUsMHg1RiwweDVGLAotICAgIDB4ODcsMHg3MiwweEUyLDB4
MzgsMHhBOCwweEFFLDB4REYsMHg1NSwweDA2LDB4NjIsMHgyMywweDQxLDB4MDAsMHgyQSwweEZG
LDB4NTUsCi0gICAgMHgwNSwweDYyLDB4RTIsMHgzOCwweEEwLDB4RUUsMHhERiwweDU1LDB4QTQs
MHg1OSwweDAyLDB4MzksMHg4MCwweEFBLDB4QkQsMHhCNSwKLSAgICAweEE4LDB4N0EsMHg0NCww
eDUxLDB4RjUsMHhBRCwweDBCLDB4MEIsMHg4NywweDdBLDB4RTUsMHg2MSwweDU1LDB4N0UsMHhG
OCwweDc4LAotICAgIDB4MjcsMHg2QSwweEU1LDB4NjEsMHhEQywweDcwLDB4RDcsMHhCNywweEND
LDB4QTMsMHgyNiwweDZBLDB4RjUsMHhBRCwweDJELDB4QUQsCi0gICAgMHgyRCwweEI0LDB4Mjks
MHg5MywweDU1LDB4RkYsMHg4MiwweDBBLDB4NEQsMHhCQywweDI5LDB4OUIsMHhENSwweEQ1LDB4
N0UsMHhGOCwKLSAgICAweDBELDB4QjQsMHgyOSwweDkzLDB4MkIsMHgzRiwweEY1LDB4NUYsMHhB
RiwweENDLDB4OEIsMHhBMywweDgyLDB4QUIsMHhERCwweDU1LAotICAgIDB4RUMsMHhBQiwweDY3
LDB4N0EsMHhGOCwweDc4LDB4NTgsMHg1RSwweEVDLDB4QUIsMHgwNiwweDcyLDB4NTcsMHg1NSww
eEQ1LDB4M0YsCi0gICAgMHhENywweEZFLDB4RTgsMHg4MiwweDJELDB4MjksMHgwQiwweDAyLDB4
MTgsMHhGRiwweEY3LDB4RkUsMHhCRCwweEFGLDB4MDksMHgwMSwKLSAgICAweDE3LDB4RkYsMHhG
OCwweEY2LDB4QTIsMHgwOCwweEEyLDB4QTgsMHgxNywweEZGLDB4RjcsMHhGNiwweDdBLDB4RkEs
MHhBRSwweDZBLAotICAgIDB4MTgsMHhGRiwweEI3LDB4RUUsMHg3OCwweERBLDB4QkUsMHhBRiww
eDM5LDB4RkYsMHhENiwweEY2LDB4RjUsMHhBRiwweEFCLDB4MEEsCi0gICAgMHg1OSwweEZGLDB4
RDcsMHhGRSwweEFBLDB4QUEsMHg4QSwweDYwLDB4RjgsMHhGRSwweEY0LDB4REQsMHhCOCwweDFD
LDB4MzYsMHgyRiwKLSAgICAweDM4LDB4RkYsMHgxOCwweEZGLDB4QkQsMHhCRCwweEJELDB4RkQs
MHgzOSwweEZGLDB4RjgsMHhGNiwweEU4LDB4NzgsMHg3QSwweDVBLAotICAgIDB4MTgsMHhGRiww
eEY4LDB4RjYsMHhBNSwweEE1LDB4RUQsMHhFRCwweDE4LDB4RkYsMHhGOCwweEY2LDB4RkYsMHhB
QiwweDBCLDB4QUQsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEUyLDB4QTIsMHhBMiwweEEw
LDB4RjcsMHhGNiwweDU1LDB4RTYsMHg1NywweDdFLDB4RjgsMHhFOCwKLSAgICAweEI2LDB4RjYs
MHg1NSwweEU2LDB4MzUsMHhCNywweEJCLDB4QUUsMHhGNywweEY2LDB4QjcsMHhGNiwweDhCLDB4
ODksMHgwRCwweDJCLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgwMCwweDBCLDB4MkIsMHgw
QSwweEQ3LDB4RkUsMHhGOCwweEY2LDB4N0QsMHhERiwweDVELDB4NTUsCi0gICAgMHhGNywweEY2
LDB4RDcsMHhGNiwweDg4LDB4MDIsMHgwMCwweDgyLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHgwOCww
eDJCLDB4NUYsMHg3OCwKLSAgICAweEY3LDB4RjYsMHhENywweEY2LDB4MzgsMHhBQSwweEZBLDB4
RUEsMHhGNywweEY2LDB4RDcsMHhGNiwweEY4LDB4N0EsMHg3QiwweDdGLAotICAgIDB4RjcsMHhG
NiwweEI2LDB4RUUsMHhCMiwweEZBLDB4RkIsMHg3RiwweEQ3LDB4RjYsMHg1NSwweEU2LDB4RTgs
MHg3QSwweDdBLDB4NUYsCi0gICAgMHhENywweEY2LDB4NTUsMHhFRSwweDJELDB4MkQsMHgyRCww
eDJCLDB4RDcsMHhGNiwweDk2LDB4RjYsMHhBQSwweEU4LDB4QTgsMHg2QSwKLSAgICAweDc1LDB4
RUUsMHhEMywweEQ1LDB4MkMsMHhCQywweEI2LDB4RjYsMHg5NiwweEVFLDB4NTUsMHhFNiwweEFC
LDB4QkYsMHhBQiwweEFELAotICAgIDB4NTUsMHhFNiwweDkyLDB4RDUsMHhEOCwweEY4LDB4RDgs
MHhEOCwweDc2LDB4RUUsMHhGMywweERELDB4OEIsMHhBQiwweEFCLDB4QTksCi0gICAgMHgzNCww
eEVFLDB4QjMsMHhERCwweEZFLDB4NkEsMHg3RSwweDdDLDB4NzIsMHhENSwweDZFLDB4QUMsMHgz
NywweDNGLDB4MkUsMHgyQSwKLSAgICAweDk2LDB4RjYsMHgzMSwweENELDB4MEIsMHhBRiwweEZG
LDB4NzcsMHg1NSwweEVFLDB4MzEsMHhDRCwweEEwLDB4RkEsMHhGRiwweDU1LAotICAgIDB4RjMs
MHhERCwweDUxLDB4Q0QsMHhBOCwweDJGLDB4QUQsMHgyQiwweDc1LDB4RUUsMHhGNCwweERELDB4
ODEsMHhCQiwweEY5LDB4QUYsCi0gICAgMHhENiwweEY2LDB4RjIsMHhERCwweDAwLDB4MDAsMHgw
OCwweEFELDB4RjcsMHhGNiwweEI2LDB4RUUsMHhBQiwweEFCLDB4QUYsMHhGRiwKLSAgICAweEQ2
LDB4RjYsMHhCNywweEVFLDB4MDgsMHgwMiwweDBBLDB4MDgsMHhENiwweEY2LDB4RjcsMHhFRSww
eEEwLDB4MDIsMHg4MiwweDJDLAotICAgIDB4RDYsMHhGNiwweEY2LDB4RUUsMHgwMCwweDBBLDB4
ODgsMHgwMCwweEQ2LDB4RjYsMHhGNywweEVFLDB4MjgsMHgwMCwweDg4LDB4MjgsCi0gICAgMHhG
NiwweEY2LDB4QjYsMHhFRSwweDdGLDB4QkIsMHhBQSwweEJBLDB4RDYsMHhGNiwweEI2LDB4RUUs
MHhFRiwweDg4LDB4MDAsMHgwMCwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4RkYsMHgzQiww
eDIwLDB4ODAsMHhENiwweEY2LDB4QjYsMHhFRSwweEFCLDB4RkIsMHhBMiwweEEwLAotICAgIDB4
RDYsMHhGNiwweEI2LDB4RUUsMHgwMiwweDAyLDB4MDAsMHgyQSwweEQ2LDB4RjYsMHhCNiwweEY2
LDB4QTAsMHhFMCwweEM4LDB4RTgsCi0gICAgMHg3NSwweEVFLDB4ODYsMHg3MiwweEUwLDB4NjAs
MHg2MCwweDcwLDB4MDUsMHg2MiwweEMyLDB4MzAsMHhFOCwweEVDLDB4RkEsMHg3RSwKLSAgICAw
eDAyLDB4MzksMHhBMSwweDI4LDB4N0MsMHhGRiwweDdFLDB4NTYsMHgwMywweDM5LDB4QTEsMHgy
OCwweEFCLDB4RkYsMHgzRiwweEY1LAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhFRiwweDI5
LDB4MjksMHhBRiwweEU1LDB4NjksMHgyMywweDQxLDB4RjUsMHhCNSwweDM1LDB4M0QsCi0gICAg
MHgwOSwweDkzLDB4MDYsMHg2QSwweEFELDB4QUIsMHg4MiwweDAyLDB4ODcsMHg3QSwweDIzLDB4
NDEsMHhFOCwweEZBLDB4NUUsMHg1QywKLSAgICAweEM1LDB4NjEsMHgwMywweDQxLDB4MDAsMHgw
RiwweEI1LDB4RDUsMHgyOSwweDkzLDB4ODQsMHg1MSwweDJCLDB4QUIsMHhCRiwweEZELAotICAg
IDB4Q0MsMHhBQiwweDQ3LDB4NzIsMHgwQSwweEFCLDB4QjcsMHhGNSwweDBELDB4QjQsMHgyQSww
eDkzLDB4ODAsMHg4MiwweEFCLDB4QUQsCi0gICAgMHhBQiwweEFCLDB4MDksMHg4QiwweDc4LDB4
RTAsMHhFMiwweDYwLDB4MjksMHg5MywweDY3LDB4N0EsMHg4MCwweEVFLDB4NUUsMHg1NywKLSAg
ICAweEVDLDB4QUIsMHg2NywweDdBLDB4NTcsMHhGRiwweEFELDB4MkQsMHg4RSwweEJDLDB4QTgs
MHg4MiwweDM1LDB4M0QsMHhCRiwweEJGLAotICAgIDB4RDcsMHhGRSwweEVGLDB4QzQsMHgwMiww
eDAzLDB4MDMsMHgyRCwweDE4LDB4RkYsMHhGNywweEZFLDB4MkUsMHhBNiwweEFFLDB4QkQsCi0g
ICAgMHgxOCwweEZGLDB4RjcsMHhGNiwweEEyLDB4ODIsMHgwMiwweENBLDB4MTgsMHhGRiwweEI2
LDB4RUUsMHhFMCwweEI4LDB4RkUsMHg3RSwKLSAgICAweDM4LDB4RkYsMHhCNiwweEVFLDB4QkYs
MHhFRiwweEJGLDB4MzUsMHg1OSwweEZGLDB4MTgsMHhGRiwweEE1LDB4QTksMHhBQSwweDhBLAot
ICAgIDB4MzksMHhGRiwweDk2LDB4RUUsMHhFMCwweDYwLDB4NzgsMHg1OCwweDE4LDB4RkYsMHg1
NSwweEU2LDB4MzcsMHhBNywweDI3LDB4MkQsCi0gICAgMHgzOSwweEZGLDB4MTgsMHhGRiwweEY1
LDB4QkQsMHhENSwweEQ1LDB4MzksMHhGRiwweEY4LDB4RjYsMHhGQSwweEZBLDB4RkMsMHhGQSwK
LSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4N0UsMHg3RiwweDU3LDB4OTYsMHgxOCwweEZGLDB4
RjgsMHhGNiwweDJCLDB4RUIsMHhFRSwweEFCLAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYsMHg2
MiwweEVBLDB4Q0EsMHhFQSwweEY3LDB4RjYsMHg5NiwweEVFLDB4NUEsMHhGQSwweEY4LDB4Qjgs
Ci0gICAgMHhENywweEY2LDB4NzUsMHhFRSwweERGLDB4RkUsMHhCOCwweEEwLDB4RjgsMHhGNiww
eEI2LDB4RjYsMHgwOSwweDBELDB4MjUsMHgzNywKLSAgICAweDE4LDB4RkYsMHhENywweEY2LDB4
QUYsMHhCRiwweDNFLDB4QkYsMHgxOCwweEZGLDB4RjcsMHhGNiwweDU3LDB4N0UsMHg4MCwweEFB
LAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhERiwweEFCLDB4QkEsMHhBQSwweEY4LDB4RkUs
MHhGNywweEY2LDB4N0YsMHhGRiwweEZELDB4RkYsCi0gICAgMHhGNywweEY2LDB4QjYsMHhGNiww
eEEyLDB4NjgsMHg3QSwweDVBLDB4RDcsMHhGNiwweDc2LDB4RUUsMHg4MCwweEVCLDB4N0UsMHg3
QSwKLSAgICAweEI2LDB4RjYsMHg1NSwweEU2LDB4ODgsMHg3RSwweDdGLDB4RkIsMHg5NiwweEVF
LDB4NTUsMHhFNiwweEQ2LDB4QTUsMHgyRCwweDAyLAotICAgIDB4RDcsMHhGNiwweDc2LDB4RUUs
MHg4RCwweDhGLDB4MkYsMHhBRiwweEI2LDB4RjYsMHg5NiwweEVFLDB4NUUsMHhFRiwweDJCLDB4
RTUsCi0gICAgMHg1NSwweEU2LDB4QjMsMHhENSwweEI0LDB4QkUsMHhGNCwweEJFLDB4NzUsMHhF
RSwweDM1LDB4RTYsMHg4MywweDhELDB4RjksMHhBRCwKLSAgICAweDU1LDB4RUUsMHg5MiwweEQ1
LDB4RkMsMHhEQywweERDLDB4REUsMHg1NSwweEVFLDB4NTEsMHhDRCwweDAyLDB4QTIsMHhGQSww
eDVBLAotICAgIDB4MTQsMHhFNiwweDcyLDB4Q0QsMHhBMCwweDgwLDB4ODIsMHhBOSwweDUxLDB4
Q0QsMHg2RSwweEI0LDB4MjgsMHgyRSwweDJFLDB4MzYsCi0gICAgMHg3MiwweENELDB4MzEsMHhD
NSwweDgwLDB4RTAsMHg1QywweDVDLDB4OTIsMHhENSwweDMwLDB4QzUsMHgzNywweDJELDB4MEYs
MHgyRCwKLSAgICAweEY0LDB4REQsMHg5MiwweEQ1LDB4QkQsMHhBNSwweEE1LDB4MkQsMHg1NSww
eEU2LDB4RDMsMHhERCwweDJCLDB4QTcsMHhCNywweDc1LAotICAgIDB4OTIsMHhENSwweEU4LDB4
ODIsMHgyRiwweEQ1LDB4NTUsMHg1NSwweDk1LDB4RUUsMHgwOCwweDgzLDB4MDAsMHhBRCwweEQ1
LDB4NTUsCi0gICAgMHhCNSwweEY2LDB4MjgsMHg4MywweDAwLDB4MDAsMHgyRiwweEQ1LDB4QjYs
MHhGNiwweDZELDB4QjQsMHgwMCwweDAwLDB4MDAsMHgyRCwKLSAgICAweEY3LDB4RjYsMHg5NSww
eEY2LDB4QUEsMHgyQiwweEFBLDB4QkQsMHhGNywweEY2LDB4RDYsMHhGNiwweERELDB4OUYsMHg1
RCwweDc1LAotICAgIDB4RjcsMHhGNiwweEI2LDB4RjYsMHhBQSwweDM4LDB4QkIsMHg3RiwweEY2
LDB4RjYsMHhENiwweEY2LDB4RjUsMHg3RSwweEY3LDB4NUQsCi0gICAgMHhGNiwweEY2LDB4RDYs
MHhGNiwweDdCLDB4NTcsMHg1NiwweDU3LDB4RjcsMHhGRSwweEQ2LDB4RjYsMHg1RiwweEZCLDB4
NTUsMHg1NywKLSAgICAweEQ2LDB4RjYsMHhCNiwweEY2LDB4M0EsMHhBMiwweDAwLDB4MDAsMHhG
NywweEY2LDB4QjYsMHhGNiwweEZGLDB4RkYsMHhFQSwweEFBLAotICAgIDB4NzUsMHhFRSwweDI2
LDB4NjIsMHg3MCwweDcwLDB4NzAsMHg2MCwweDg0LDB4NDksMHhFMiwweDMwLDB4RjgsMHg3Qyww
eDdFLDB4RkUsCi0gICAgMHgwMywweDM5LDB4NjEsMHgyMCwweEZFLDB4NUUsMHhEQSwweDgwLDB4
MDIsMHgzOSwweDgxLDB4MjAsMHhBRCwweEJELDB4MkIsMHgyQSwKLSAgICAweDAyLDB4MzksMHhD
MiwweDMwLDB4QkUsMHgyRiwweEJCLDB4RjAsMHg0NiwweDdBLDB4MDMsMHg0MSwweEJELDB4MzUs
MHgzRCwweDJELAotICAgIDB4MDksMHg5MywweDY3LDB4N0EsMHg4MywweDgzLDB4Q0IsMHg3Riww
eDQ3LDB4NzIsMHhFMiwweDM4LDB4NzgsMHg1QywweDdDLDB4NUUsCi0gICAgMHg0NCwweDQ5LDB4
QzIsMHgzMCwweDNGLDB4MzUsMHhCRCwweEJELDB4RTUsMHg2MSwweEExLDB4MzAsMHgwMiwweDBB
LDB4QUEsMHg1NSwKLSAgICAweEU4LDB4ODIsMHhFMywweDQwLDB4MkEsMHgwQSwweEFGLDB4RDUs
MHg4QSwweEEzLDB4RTUsMHg2MSwweDBBLDB4QUEsMHhBQiwweEJELAotICAgIDB4QUIsMHhBMyww
eEM4LDB4ODIsMHhFMCwweEZBLDB4N0IsMHg1NSwweEU5LDB4OEEsMHg0NiwweDdBLDB4OUYsMHhC
NywweEFGLDB4MkYsCi0gICAgMHhFQiwweEEzLDB4RTksMHg4QSwweDJELDB4MkQsMHhGNywweEQ3
LDB4RUMsMHhBQiwweDg4LDB4N0EsMHhGOCwweDcwLDB4NkEsMHhGRSwKLSAgICAweEVGLDB4QzQs
MHgwNiwweDZBLDB4MkYsMHhGNSwweDU1LDB4NTcsMHhCNiwweEY2LDB4MjUsMHg2QSwweDAwLDB4
MkQsMHgzNSwweEI1LAotICAgIDB4MTgsMHhGRiwweDc1LDB4RUUsMHhBMCwweEUyLDB4RkYsMHhG
RCwweEQ2LDB4RjYsMHg5NiwweEVFLDB4QUEsMHhBRSwweENGLDB4MzgsCi0gICAgMHg1OSwweEZG
LDB4QjcsMHhFRSwweEFELDB4MEQsMHg4QiwweDIyLDB4NTksMHhGRiwweDE4LDB4RkYsMHhFQSww
eEU4LDB4RkUsMHg3QSwKLSAgICAweEY3LDB4RkUsMHg1NSwweEU2LDB4RjAsMHg3QywweDVDLDB4
NUYsMHhGOCwweEZFLDB4NTUsMHhFNiwweDBELDB4MkQsMHgwRCwweDBELAotICAgIDB4MzksMHhG
RiwweEY4LDB4RjYsMHhBQiwweEFCLDB4MjksMHhBRiwweDM5LDB4RkYsMHhGOCwweEY2LDB4RUEs
MHhGQSwweDZBLDB4RUEsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDdELDB4QjcsMHg1RSww
eERCLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBRiwweEZCLDB4RkQsMHhGNywKLSAgICAweDE4LDB4
RkYsMHhGOCwweEY2LDB4RkEsMHg2QSwweEVGLDB4NUYsMHhGNywweEY2LDB4OTcsMHhFRSwweEE4
LDB4QTgsMHhBQSwweEEyLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg1NSwweDVGLDB4QUIs
MHhBQSwweEY4LDB4RjYsMHhCNywweEY2LDB4MzcsMHgzQiwweDJBLDB4MjIsCi0gICAgMHgxOCww
eEZGLDB4RjcsMHhGNiwweDVGLDB4REYsMHg1QSwweDdCLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhC
QiwweEFBLDB4QkYsMHhFRiwKLSAgICAweEY3LDB4RkUsMHgxOCwweEY3LDB4QUYsMHhCRCwweEFG
LDB4RkYsMHhGNywweEY2LDB4RDcsMHhGNiwweEEwLDB4MDAsMHhFMCwweDU4LAotICAgIDB4RDcs
MHhGNiwweDk2LDB4RUUsMHhFMCwweEVDLDB4N0EsMHg3NiwweEI3LDB4RjYsMHg3NiwweEVFLDB4
RjgsMHhGQSwweDVFLDB4NTUsCi0gICAgMHg5NiwweEVFLDB4NTUsMHhFNiwweEVBLDB4N0EsMHhG
QSwweDVCLDB4NzYsMHhFRSwweDU1LDB4RTYsMHg4QiwweDJELDB4QjksMHgyRiwKLSAgICAweEI2
LDB4RjYsMHg3NiwweEVFLDB4QTMsMHhFQiwweEVBLDB4QUEsMHhCNiwweEY2LDB4NzYsMHhFRSww
eEFCLDB4OEYsMHhFQiwweENCLAotICAgIDB4MTQsMHhFNiwweDcyLDB4Q0QsMHhBQywweEJDLDB4
QjQsMHhENiwweDc1LDB4RUUsMHhGNCwweEU1LDB4MkIsMHg4QiwweEFCLDB4QTksCi0gICAgMHgz
NCwweEU2LDB4QjMsMHhENSwweERDLDB4REMsMHhENCwweERFLDB4MTQsMHhFNiwweDMwLDB4QzUs
MHg1OCwweDU4LDB4NjgsMHhFMCwKLSAgICAweEIzLDB4RDUsMHgxMCwweEM1LDB4MDksMHgyRCww
eDM1LDB4OUYsMHgzMSwweEM1LDB4NEQsMHhBQywweDI2LDB4MjYsMHhBNiwweDM2LAotICAgIDB4
MzEsMHhDRCwweEYwLDB4QkMsMHgzQywweDNGLDB4MzcsMHhFQSwweDkyLDB4RDUsMHgzMSwweEM1
LDB4MkYsMHhBRiwweEE3LDB4QTUsCi0gICAgMHhGMywweERELDB4NzIsMHhENSwweDJGLDB4QUYs
MHhBRCwweEFELDB4RDMsMHhERCwweDUxLDB4Q0QsMHg4MiwweEVBLDB4NzIsMHg1OCwKLSAgICAw
eEU4LDB4ODIsMHhDNywweDdBLDB4MDAsMHg4RSwweEZFLDB4OTgsMHgwOCwweDgzLDB4QzcsMHg3
QSwweEZFLDB4QTIsMHhGQiwweERCLAotICAgIDB4MDgsMHg4MywweEM3LDB4ODIsMHgyQiwweDJF
LDB4RkUsMHhGRCwweEVCLDB4OUIsMHhFOCwweDgyLDB4M0YsMHg3NSwweDU1LDB4NTUsCi0gICAg
MHg1NSwweEVFLDB4RTgsMHg4MiwweDBBLDB4RjUsMHg1NSwweDU1LDB4QjUsMHhGNiwweEU3LDB4
ODIsMHgwMCwweDBBLDB4QkQsMHg1NSwKLSAgICAweEI2LDB4RjYsMHg4QSwweDlCLDB4MDAsMHgw
MCwweDAyLDB4RjUsMHhENiwweEY2LDB4RjQsMHhFNSwweDAwLDB4MDgsMHgwMiwweDJELAotICAg
IDB4RjYsMHhGRSwweEI2LDB4RjYsMHhBRSwweEFGLDB4RkYsMHhENSwweEY4LDB4RkUsMHhENiww
eEY2LDB4REYsMHg1RiwweEQ1LDB4NTUsCi0gICAgMHhENywweEZFLDB4RDYsMHhGNiwweEQ1LDB4
N0YsMHg3RiwweEZGLDB4RjYsMHhGRSwweEQ3LDB4RjYsMHg3RSwweDVELDB4N0IsMHg3QSwKLSAg
ICAweEI2LDB4RjYsMHg4NiwweDcyLDB4NjAsMHg2MCwweEMwLDB4QzAsMHhFNiwweDU5LDB4MjMs
MHg0MSwweDU1LDB4NTcsMHg1RSwweEU4LAotICAgIDB4ODQsMHg0OSwweDIzLDB4NDEsMHg3Riww
eEZCLDB4NTUsMHgzQSwweDY0LDB4NDksMHhFMiwweDMwLDB4RDcsMHhFQywweEJBLDB4RjgsCi0g
ICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDdGLDB4RjYsMHhCQiwweDI5LDB4NDYsMHg3QSwweDQ0
LDB4NDksMHgyRCwweDJELDB4MEQsMHgyRiwKLSAgICAweDY2LDB4N0EsMHg4NCwweDU5LDB4QTAs
MHhFOCwweDdBLDB4NUEsMHg2NCwweDUxLDB4RTMsMHgzOCwweDVDLDB4NzgsMHg2RSwweEU4LAot
ICAgIDB4RTIsMHgzOCwweEEyLDB4MzAsMHg2MiwweEUyLDB4ODAsMHgwOCwweEMyLDB4MzAsMHg4
MSwweDI4LDB4OTcsMHhCRSwweEVBLDB4RjgsCi0gICAgMHgyMywweDQxLDB4ODIsMHgyOCwweDJG
LDB4MkYsMHhBRiwweDM1LDB4ODgsMHg4MiwweDQzLDB4NDksMHgyRCwweEI1LDB4MzUsMHgzNSwK
LSAgICAweEU5LDB4OEEsMHg2NywweDdBLDB4QUIsMHgzRCwweDNGLDB4N0EsMHgwOSwweDhCLDB4
ODgsMHg3QSwweEZCLDB4REUsMHhEOCwweERGLAotICAgIDB4MjksMHg5MywweDg3LDB4N0EsMHgy
QiwweEI3LDB4RkYsMHg2RiwweDA5LDB4OEIsMHhBNSwweDU5LDB4QTgsMHhGOCwweDdBLDB4NUYs
Ci0gICAgMHhFOCwweDgyLDB4QzUsMHg2MSwweEVFLDB4QUYsMHgyRCwweDA5LDB4Q0MsMHhBMyww
eEM1LDB4NjEsMHgzNSwweEY3LDB4RkIsMHhGRSwKLSAgICAweEI2LDB4RjYsMHhFOSwweDhBLDB4
MDIsMHgwQiwweDJELDB4RDUsMHgzOCwweEZGLDB4NzUsMHhFRSwweEJFLDB4MkYsMHgwQSwweDAx
LAotICAgIDB4MzksMHhGRiwweDE5LDB4RkYsMHgwMCwweDgwLDB4MjAsMHhFMCwweDM5LDB4RkYs
MHg5NiwweEY2LDB4QzAsMHhDOCwweDYwLDB4NzgsCi0gICAgMHg3NiwweEVFLDB4MzUsMHhFNiww
eEM4LDB4NjgsMHg2RSwweDdBLDB4RjgsMHhGRSwweDU1LDB4RTYsMHgwOSwweDA5LDB4MDksMHgw
QiwKLSAgICAweDM5LDB4RkYsMHhGOCwweEZFLDB4QUYsMHhBRiwweEFELDB4QUQsMHgxOCwweEZG
LDB4RjgsMHhGNiwweEUwLDB4QzAsMHhBMCwweEEwLAotICAgIDB4MTgsMHhGRiwweEY4LDB4RjYs
MHhGNywweEZGLDB4REQsMHhGRSwweDE5LDB4RkYsMHhGNywweEY2LDB4REYsMHhGRiwweEZELDB4
NTcsCi0gICAgMHhGOCwweEZFLDB4MTcsMHhGNywweDJBLDB4QTIsMHgyQSwweDJBLDB4RjcsMHhG
NiwweEQ3LDB4RjYsMHg5QywweEZBLDB4QUEsMHhBMiwKLSAgICAweEY4LDB4RjYsMHhENywweEY2
LDB4QkEsMHgzRiwweDI3LDB4MkQsMHgxNywweEZGLDB4RjgsMHhGNiwweERELDB4RjcsMHg3Riww
eEZELAotICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHg3RiwweEVCLDB4RTksMHhFQiwweDE4LDB4
RkYsMHhENywweEY2LDB4MkEsMHhBQSwweDJGLDB4OEYsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhG
NiwweEVBLDB4NkEsMHg2RiwweDdELDB4RjcsMHhGNiwweEI3LDB4RUUsMHg3OCwweDc4LDB4N0Es
MHg1QSwKLSAgICAweEI3LDB4RjYsMHg3NiwweEVFLDB4RjgsMHg3NiwweDVFLDB4NzUsMHg5Niww
eEVFLDB4NTUsMHhFNiwweDVGLDB4N0UsMHg4QSwweDk3LAotICAgIDB4OTYsMHhFRSwweDM1LDB4
RTYsMHg3NywweEY3LDB4RkEsMHgyOCwweDk2LDB4RUUsMHgzNSwweEU2LDB4QkYsMHhBRiwweEI3
LDB4M0YsCi0gICAgMHhCNywweEY2LDB4NzYsMHhFRSwweENBLDB4RkEsMHg3RSwweDVFLDB4QjYs
MHhGNiwweDU1LDB4RTYsMHhFMiwweEVBLDB4RUEsMHg2QSwKLSAgICAweEQzLDB4REQsMHgzMSww
eENELDB4M0MsMHhBQywweEJDLDB4QjYsMHgzNSwweEU2LDB4QjMsMHhENSwweDAyLDB4MEIsMHgw
QiwweDA5LAotICAgIDB4MTQsMHhFNiwweEIzLDB4RDUsMHg5RSwweEZDLDB4OUMsMHhCQywweDE0
LDB4RTYsMHhEMywweERELDB4N0EsMHg2QywweERDLDB4RjQsCi0gICAgMHhEMywweERELDB4MzEs
MHhDNSwweDVFLDB4NzgsMHg0MCwweDQwLDB4MzEsMHhDRCwweDRFLDB4QUMsMHgzNywweDM3LDB4
MzcsMHgxNywKLSAgICAweDMxLDB4Q0QsMHhDRiwweEJDLDB4QTgsMHgyOCwweEJDLDB4NUUsMHg3
MSwweENELDB4MTEsMHhDNSwweDJGLDB4QUYsMHhBRiwweEE3LAotICAgIDB4MTQsMHhFNiwweDMx
LDB4QzUsMHgyQiwweDBGLDB4QkYsMHg1RiwweEQzLDB4REQsMHhGMCwweEJDLDB4RjgsMHg3Qyww
eEY3LDB4QjUsCi0gICAgMHhFOCwweDgyLDB4QTcsMHg3QSwweEVGLDB4M0YsMHhBQiwweEVBLDB4
RTgsMHg4MiwweEE3LDB4N0EsMHgyQywweEJGLDB4REQsMHhGRiwKLSAgICAweEU4LDB4ODIsMHhD
NywweDgyLDB4MkIsMHhDQSwweDVFLDB4N0IsMHhFOCwweDgyLDB4QTcsMHg3QSwweDhBLDB4QUEs
MHhGRSwweDJELAotICAgIDB4RTgsMHg4MiwweEM3LDB4ODIsMHhFRiwweDJBLDB4Q0IsMHhDNCww
eDA4LDB4OEIsMHhDOCwweDgyLDB4QUQsMHhBRCwweDlGLDB4NTYsCi0gICAgMHg0OSwweDhCLDB4
QzcsMHg4MiwweDNGLDB4RkYsMHg3RCwweDU1LDB4QjMsMHhERCwweDA4LDB4ODMsMHgyRiwweDU1
LDB4NTUsMHg1NSwKLSAgICAweDc1LDB4RUUsMHgyOCwweDhCLDB4MDAsMHgyRiwweDU1LDB4NTUs
MHg5NiwweEY2LDB4MDgsMHg4MywweDAwLDB4MDAsMHgyQiwweEQ1LAotICAgIDB4QjYsMHhGNiww
eDhFLDB4QjQsMHgwMCwweDAwLDB4MDAsMHgyRCwweDk1LDB4RkUsMHhENiwweEY2LDB4NTUsMHg3
NSwweEZGLDB4QkEsCi0gICAgMHhCNiwweEY2LDB4NTEsMHhDNSwweDQwLDB4QzAsMHgwMCwweDAw
LDB4MTMsMHhFNiwweDg0LDB4NTEsMHg1NywweDU3LDB4NUUsMHg1OCwKLSAgICAweEM1LDB4NTks
MHg2NCwweDQ5LDB4QUEsMHg4RiwweEFBLDB4RjUsMHg4NSwweDUxLDB4MjMsMHg0MSwweDU4LDB4
NUMsMHhGOCwweEFBLAotICAgIDB4NjYsMHg3QSwweDIzLDB4NDksMHg1NSwweEQ1LDB4QkQsMHgy
RiwweDI5LDB4OTMsMHgwNiwweDZBLDB4RjUsMHhFRCwweEFCLDB4OEEsCi0gICAgMHg4OCwweDgy
LDB4ODQsMHg1OSwweDc4LDB4NjgsMHhGMCwweEU4LDB4QTUsMHg2MSwweDAzLDB4NDEsMHg3Riww
eDdGLDB4QkEsMHhBMCwKLSAgICAweEM2LDB4NTksMHhBMiwweDMwLDB4RjUsMHhENywweEZFLDB4
QTIsMHgyNCwweDQxLDB4ODEsMHgyOCwweDVFLDB4NUUsMHhGQSwweDJBLAotICAgIDB4NjQsMHg0
OSwweEExLDB4MjgsMHhCNSwweEI1LDB4QUQsMHgwMiwweDY3LDB4N0EsMHg0MywweDQ5LDB4MjUs
MHgyRCwweEFELDB4RkYsCi0gICAgMHhBOCwweDdBLDB4QTQsMHg1OSwweEMwLDB4RkEsMHg1Riww
eEY1LDB4ODgsMHg3QSwweEU1LDB4NjEsMHgwQiwweEI1LDB4NTUsMHhENSwKLSAgICAweEE4LDB4
N0EsMHgyMywweDQ5LDB4MDAsMHhFMCwweEVBLDB4NzIsMHgyNiwweDZBLDB4MDIsMHg0OSwweEJB
LDB4QjcsMHhCNSwweDI1LAotICAgIDB4QTcsMHg3QSwweEM1LDB4NjEsMHgyOSwweDJGLDB4QUUs
MHhGQSwweDA5LDB4OTMsMHgwNiwweDcyLDB4RUEsMHhFQSwweEVCLDB4ODksCi0gICAgMHg0QSww
eDkzLDB4MjYsMHg3MiwweDJGLDB4M0YsMHhCRCwweEI1LDB4MTgsMHhGRiwweDZBLDB4OTMsMHgw
MywweDA5LDB4MjUsMHgyNSwKLSAgICAweDM4LDB4RkYsMHgxOCwweEZGLDB4RTIsMHhBMiwweDc5
LDB4NUQsMHgxOCwweEZGLDB4NzUsMHhFRSwweDcwLDB4NzAsMHg1OCwweDVDLAotICAgIDB4NzUs
MHhFRSwweDM1LDB4RTYsMHg3RSwweEVCLDB4RkEsMHhCQSwweDE4LDB4RkYsMHg5NiwweEVFLDB4
QTksMHg4OSwweDg5LDB4OEIsCi0gICAgMHgzOSwweEZGLDB4RjgsMHhGNiwweEFGLDB4QTksMHhB
RiwweEVGLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhBOCwweEFFLDB4QUEsMHhFQSwKLSAgICAweDE4
LDB4RkYsMHhGOCwweEY2LDB4RkYsMHhEQSwweEY2LDB4N0YsMHgxNywweEZGLDB4RjgsMHhGNiww
eDVGLDB4NTYsMHg1NywweEQ1LAotICAgIDB4RDgsMHhGRSwweEY3LDB4RjYsMHhERiwweDVELDB4
N0QsMHhERCwweEQ3LDB4RkUsMHhGNywweEY2LDB4RDcsMHg3RCwweDVFLDB4REYsCi0gICAgMHhG
NywweEY2LDB4RDcsMHhGNiwweDNGLDB4OTgsMHhFMCwweDJBLDB4MTgsMHhGRiwweEY4LDB4RjYs
MHhGNywweERELDB4QjUsMHhCRiwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4RTMsMHhBQiww
eEZFLDB4RkUsMHhEOCwweEZFLDB4RjcsMHhGNiwweDU1LDB4NkYsMHg3RCwweEZGLAotICAgIDB4
RjcsMHhGNiwweEI3LDB4RjYsMHg4OCwweEU4LDB4RTgsMHhFQSwweEQ3LDB4RjYsMHg3NiwweEVF
LDB4RTAsMHhGOCwweDVFLDB4REUsCi0gICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweDY3LDB4Nzcs
MHg1NSwweDU3LDB4NzYsMHhFRSwweDM1LDB4RTYsMHhFQSwweEZCLDB4RkUsMHhFQSwKLSAgICAw
eDc1LDB4RUUsMHgzNCwweEU2LDB4QTIsMHhGRSwweEZBLDB4ODIsMHhCNiwweEY2LDB4NTUsMHhF
NiwweEE1LDB4MkYsMHhBRCwweEJELAotICAgIDB4QjYsMHhGNiwweDU1LDB4RUUsMHhCQywweEFF
LDB4QkUsMHhCRiwweEI2LDB4RjYsMHgzNSwweEU2LDB4QzIsMHhGMCwweDYyLDB4RUEsCi0gICAg
MHhEMywweERELDB4MzEsMHhDRCwweEJDLDB4RjYsMHhGRSwweDdDLDB4MzQsMHhFNiwweDcyLDB4
Q0QsMHgwQiwweEFCLDB4QUQsMHhBOSwKLSAgICAweDE0LDB4RTYsMHhCMywweEQ1LDB4QkMsMHgz
RSwweDNGLDB4QjYsMHgxNCwweEU2LDB4MTAsMHhDNSwweDg4LDB4ODgsMHg2OCwweDU2LAotICAg
IDB4RDMsMHhERCwweEYwLDB4QzQsMHhFMCwweDdFLDB4NTUsMHg1NSwweDMxLDB4QzUsMHgyRCww
eEFDLDB4QjcsMHg5NiwweERFLDB4OTgsCi0gICAgMHgxMSwweEM1LDB4NkUsMHhCNCwweEI4LDB4
RjgsMHhEOCwweDUwLDB4NzIsMHhDRCwweEYwLDB4QzQsMHgyRiwweEE5LDB4QTksMHhCQiwKLSAg
ICAweDUxLDB4Q0QsMHhGMCwweEJDLDB4NjAsMHg3OCwweERDLDB4OTcsMHg3MSwweEQ1LDB4RjAs
MHhCQywweDJELDB4MEYsMHgyQiwweDJBLAotICAgIDB4QzgsMHg4MiwweDQ1LDB4NzIsMHgwQSww
eEFELDB4RDcsMHhENywweEU4LDB4ODIsMHg0NSwweDZBLDB4MEEsMHgwQSwweEFGLDB4NUQsCi0g
ICAgMHhFOCwweDgyLDB4NjYsMHg3MiwweEEyLDB4MDIsMHg4QSwweEFELDB4RTgsMHg4MiwweEE3
LDB4N0EsMHhGMiwweEFFLDB4QjQsMHhBQSwKLSAgICAweEU4LDB4ODIsMHhBNywweDgyLDB4QUUs
MHhDMiwweDQyLDB4RkUsMHhFOCwweDgyLDB4QzgsMHg4MiwweDVFLDB4N0YsMHhGNSwweEQ1LAot
ICAgIDB4RTgsMHg4MiwweEE3LDB4ODIsMHgwQiwweDAyLDB4OEIsMHgyRiwweEM4LDB4OEEsMHhF
OCwweDgyLDB4RUQsMHg3RCwweDVELDB4RUYsCi0gICAgMHgwOCwweDhCLDB4QzgsMHg4MiwweEFG
LDB4RUIsMHhGNiwweEJCLDB4MDgsMHg4QiwweEM4LDB4ODIsMHgyRiwweEJGLDB4OUQsMHhCQiwK
LSAgICAweDJELDB4QUMsMHhFOCwweDhBLDB4MkQsMHg1NSwweDU1LDB4NTUsMHg3NSwweEY2LDB4
MDksMHg4QiwweDBBLDB4RjUsMHg1NSwweDU1LAotICAgIDB4QjYsMHhGNiwweDI5LDB4OEIsMHgw
MCwweDBBLDB4RkQsMHg1NSwweDM1LDB4RUUsMHhFNSwweDU5LDB4NzAsMHg3MCwweDYwLDB4N0Ys
Ci0gICAgMHg2NCwweDQ5LDB4MDIsMHg0MSwweEFFLDB4M0YsMHhCNSwweEFGLDB4QTUsMHg1OSww
eDQzLDB4NDksMHhCQSwweEJGLDB4QUIsMHgzRCwKLSAgICAweEM4LDB4OEEsMHhBNSwweDU5LDB4
MkQsMHgyRCwweDJGLDB4QkQsMHgyOSwweDlCLDB4QzgsMHg4QSwweDQwLDB4NDAsMHhBQSwweDI5
LAotICAgIDB4QzksMHg5MiwweEU1LDB4NjksMHhGQSwweDdBLDB4RDgsMHhGOCwweDY3LDB4N0Es
MHhDNSwweDYxLDB4RDcsMHhCRiwweEZGLDB4RjgsCi0gICAgMHg2NywweDdBLDB4QTUsMHg1OSww
eDdGLDB4RUEsMHg4MCwweEEyLDB4MDYsMHg2MiwweEUyLDB4MzgsMHhGRiwweEZBLDB4N0UsMHhG
OCwKLSAgICAweDg1LDB4NTEsMHgwMywweDQxLDB4MDIsMHhFQSwweEI1LDB4RkYsMHg4NSwweDU5
LDB4MjMsMHg0MSwweEE4LDB4MkYsMHgyNSwweDJCLAotICAgIDB4NDcsMHg3MiwweEE0LDB4NTks
MHhFRCwweDBGLDB4MEIsMHgwRiwweDg4LDB4NzIsMHhDNSwweDYxLDB4QjUsMHhCNywweEFBLDB4
QTAsCi0gICAgMHg0NiwweDZBLDB4RTIsMHgzOCwweDcwLDB4NzgsMHg3QywweDdFLDB4NjcsMHg3
MiwweDAyLDB4NDEsMHgyRCwweDJELDB4MjksMHhBRiwKLSAgICAweDY3LDB4N0EsMHhDNSwweDYx
LDB4ODAsMHhFOCwweDVGLDB4REYsMHgwOSwweDhCLDB4MjYsMHg3MiwweDA5LDB4MjksMHgwQiww
eDhCLAotICAgIDB4QzksMHg4MiwweDY3LDB4N0EsMHgyRSwweEUwLDB4QkUsMHhGOSwweDkzLDB4
REQsMHhDOCwweDgyLDB4MzUsMHhCNSwweDU1LDB4NTUsCi0gICAgMHhGNywweEZFLDB4OEIsMHg5
QiwweDAwLDB4MDIsMHgwMywweDJELDB4RjcsMHhGRSwweDU1LDB4RUUsMHg1QywweERDLDB4NUUs
MHg1NiwKLSAgICAweDk2LDB4RUUsMHg1NSwweEVFLDB4RDcsMHhERCwweEI3LDB4MTcsMHgxOCww
eEZGLDB4QjcsMHhGNiwweEE5LDB4ODksMHhBRiwweDg5LAotICAgIDB4MzksMHhGRiwweEY4LDB4
RjYsMHhBRiwweEU5LDB4QUYsMHhBQiwweDE4LDB4RkYsMHhGOCwweEY2LDB4RkEsMHhGRSwweEVB
LDB4NjgsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDc3LDB4REIsMHg1NywweDVGLDB4RDcs
MHhGRSwweEY4LDB4RjYsMHg1NywweDVELDB4RkYsMHhGRiwKLSAgICAweEY3LDB4RjYsMHhENiww
eEY2LDB4MkUsMHhBRSwweDIyLDB4MEEsMHgxOCwweEZGLDB4RjcsMHhGNiwweDU3LDB4RkIsMHhE
QSwweEZCLAotICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHhFRiwweEZGLDB4NUYsMHg1NSwweDE4
LDB4RkYsMHhGOCwweEY2LDB4RTcsMHhFNSwweERGLDB4RkYsCi0gICAgMHgxOCwweEZGLDB4Rjgs
MHhGNiwweDVGLDB4N0YsMHg1RSwweERGLDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhBQSwweEVBLDB4
RTIsMHhGOCwKLSAgICAweEY4LDB4RjYsMHg5NiwweEVFLDB4RTgsMHhGQSwweDVFLDB4N0UsMHg5
NiwweEVFLDB4NzYsMHhFRSwweEQ4LDB4NUMsMHg1QywweDU3LAotICAgIDB4NzYsMHhFRSwweDU2
LDB4RUUsMHg3MiwweDRELDB4RjAsMHhGQSwweDc2LDB4RUUsMHgxNCwweEU2LDB4QUEsMHhBOCww
eEZBLDB4NkMsCi0gICAgMHg3NiwweEVFLDB4MTQsMHhFNiwweDBFLDB4QUIsMHgwQiwweEE5LDB4
OTYsMHhFRSwweDc2LDB4RUUsMHg2NSwweEY1LDB4QkYsMHhCRCwKLSAgICAweDk2LDB4RUUsMHg3
NiwweEVFLDB4NUQsMHhGNywweEVGLDB4RkUsMHg5NiwweEVFLDB4MzUsMHhFNiwweENBLDB4RUEs
MHg2MCwweEUwLAotICAgIDB4MTQsMHhFNiwweDcyLDB4Q0QsMHg3NiwweEZBLDB4ODgsMHgwMCww
eEY0LDB4REQsMHg3MiwweEQ1LDB4MDksMHgyQiwweDBBLDB4MjAsCi0gICAgMHhGNCwweEU1LDB4
MzEsMHhDNSwweEE4LDB4QTgsMHhFOCwweDYwLDB4NTAsMHhDRCwweEFGLDB4QjQsMHhGOCwweEVF
LDB4N0YsMHhENywKLSAgICAweEYwLDB4QzQsMHg2RCwweEFDLDB4MDIsMHhBOCwweEVBLDB4NUUs
MHg3MSwweENELDB4OEUsMHhCNCwweDdBLDB4NjIsMHhFMywweDhCLAotICAgIDB4MTAsMHhDNSww
eDJELDB4QTQsMHhGMCwweDcyLDB4NzIsMHg2MiwweDUxLDB4Q0QsMHhEMCwweEJDLDB4MEIsMHgw
MSwweEE5LDB4ODksCi0gICAgMHg3MiwweENELDB4RjAsMHhCQywweEI3LDB4QUYsMHgyQiwweDBC
LDB4NzEsMHhDRCwweDUxLDB4Q0QsMHhGNywweEVFLDB4QkYsMHhGOCwKLSAgICAweEE3LDB4N0Es
MHg2NiwweDcyLDB4RkQsMHhGNywweEVFLDB4QkEsMHhBNiwweDdBLDB4NjYsMHg3MiwweDc1LDB4
NzYsMHg3OSwweEVBLAotICAgIDB4ODYsMHg3MiwweDQ2LDB4NzIsMHhBNSwweEFFLDB4ODAsMHgy
MCwweEM4LDB4ODIsMHgyNSwweDZBLDB4MEEsMHhENywweEZGLDB4RkYsCi0gICAgMHhDOCwweDgy
LDB4NDYsMHg3MiwweDAwLDB4MEEsMHg5NSwweDU1LDB4RTgsMHg4QSwweDQ2LDB4NzIsMHgwQSww
eDg4LDB4OEEsMHhCNSwKLSAgICAweEU4LDB4ODIsMHhBNywweDdBLDB4RUEsMHg4QSwweEVCLDB4
MkQsMHhFOCwweDgyLDB4QzgsMHg4MiwweEJGLDB4RkQsMHg1MSwweDU1LAotICAgIDB4RTgsMHg4
MiwweEM4LDB4ODIsMHhBQiwweDYyLDB4OUMsMHhDRiwweDA5LDB4OEIsMHhBNywweDgyLDB4RUEs
MHhCOCwweEZFLDB4RjYsCi0gICAgMHhFOCwweDhBLDB4QzgsMHg4MiwweEMwLDB4QzgsMHhFRSww
eEZCLDB4MDgsMHg4QiwweEM4LDB4ODIsMHhGMiwweDBCLDB4RkYsMHg2RSwKLSAgICAweEM4LDB4
OEEsMHgwOSwweDgzLDB4REYsMHhCQiwweEEyLDB4QTgsMHgwOCwweDhCLDB4QzUsMHg1OSwweDYw
LDB4NjgsMHg3MiwweDc4LAotICAgIDB4ODQsMHg1MSwweDQzLDB4NDksMHhCNSwweEY3LDB4OTQs
MHg1NSwweEE1LDB4NTksMHg0NCwweDQ5LDB4M0QsMHgyRiwweDA4LDB4MDIsCi0gICAgMHhBOCww
eDhBLDB4QzUsMHg2MSwweEI1LDB4MzUsMHgyRCwweDJGLDB4RTksMHg5MiwweDY3LDB4ODIsMHgw
QSwweEEyLDB4NjIsMHg3OCwKLSAgICAweEE4LDB4OEEsMHgyNiwweDcyLDB4RjAsMHg3OCwweDU2
LDB4NTcsMHg2NywweDdBLDB4RTUsMHg2OSwweEYwLDB4RUEsMHhGRiwweDc3LAotICAgIDB4Njcs
MHg3MiwweEE0LDB4NTksMHhFQSwweEUwLDB4RkYsMHg1NywweDA1LDB4NjIsMHg0NCwweDUxLDB4
NzgsMHg3QSwweDU3LDB4NTcsCi0gICAgMHg2NCwweDUxLDB4MDMsMHg0MSwweEY3LDB4QjcsMHhF
QiwweEU4LDB4QTUsMHg1OSwweDIzLDB4NDksMHhGRCwweEFGLDB4MzUsMHgzNywKLSAgICAweDY3
LDB4NzIsMHhDNSwweDU5LDB4M0QsMHhCNSwweEE1LDB4RUQsMHg4OCwweDcyLDB4RTUsMHg2MSww
eDY4LDB4NzAsMHg3RSwweEY3LAotICAgIDB4QTQsMHg1OSwweDAyLDB4NDEsMHg3OCwweEZBLDB4
RkMsMHgzQywweDQ3LDB4NzIsMHg0MywweDQ5LDB4RjUsMHgzRCwweDJGLDB4QUYsCi0gICAgMHhF
OSwweDhBLDB4RTYsMHg2OSwweEQ1LDB4QkQsMHgzRiwweDJCLDB4MjksMHg5MywweDQ3LDB4N0Es
MHg2RiwweDdBLDB4RjgsMHg3OCwKLSAgICAweEU5LDB4OEEsMHg0NywweDdBLDB4MkQsMHgzNSww
eEY5LDB4QzEsMHg0QSwweDkzLDB4MjYsMHg2QSwweEY4LDB4RkEsMHhGRiwweDU3LAotICAgIDB4
RDMsMHhERCwweEM4LDB4ODIsMHgyRCwweEQ1LDB4RDUsMHg1NSwweDU1LDB4RUUsMHg2QiwweDlC
LDB4MDAsMHgwMiwweDBCLDB4MEQsCi0gICAgMHhCNiwweEY2LDB4NTUsMHhFRSwweEI3LDB4Mzcs
MHgxNSwweEI1LDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhFOSwweEVCLDB4RjksMHhFOSwKLSAgICAw
eDM4LDB4RkYsMHhGOCwweEY2LDB4QUIsMHhBQiwweEVCLDB4QjksMHgxOCwweEZGLDB4RjgsMHhG
NiwweEVBLDB4RjgsMHhGOCwweEZBLAotICAgIDB4MTgsMHhGRiwweEQ4LDB4RjYsMHhFQSwweEZB
LDB4QkUsMHhGQSwweEY3LDB4RjYsMHhEOCwweEY2LDB4QUEsMHhCQSwweDJBLDB4QTIsCi0gICAg
MHhEOCwweEZFLDB4RjcsMHhGNiwweDVGLDB4RjcsMHg1NywweDVGLDB4MTgsMHhGRiwweEY3LDB4
RjYsMHg2RCwweEJELDB4QUQsMHhFQiwKLSAgICAweDE4LDB4RkYsMHhGOCwweEY2LDB4NzUsMHhG
RiwweEZCLDB4RUEsMHgxNywweEZGLDB4RjgsMHhGNiwweEZBLDB4QUYsMHhGRiwweDdGLAotICAg
IDB4MTgsMHhGRiwweEI3LDB4RjYsMHhBOCwweEVBLDB4RUUsMHg3QiwweEQ3LDB4RjYsMHg5Niww
eEVFLDB4MjAsMHhGRSwweDVFLDB4NUUsCi0gICAgMHhCNywweEY2LDB4NTUsMHhFNiwweEUwLDB4
RTgsMHhGRiwweEZGLDB4OTYsMHhFRSwweDU1LDB4RTYsMHhBRiwweEJCLDB4RUEsMHhGQSwKLSAg
ICAweDc2LDB4RUUsMHg1NiwweEVFLDB4REUsMHhCRSwweEJBLDB4OEMsMHg3NiwweEVFLDB4MzUs
MHhFNiwweDdFLDB4RTgsMHhBMCwweDgyLAotICAgIDB4NzYsMHhFRSwweDE0LDB4RTYsMHgyRiww
eDNGLDB4RkUsMHhGQSwweDk2LDB4RUUsMHgzNSwweEU2LDB4MDIsMHgwOCwweDBBLDB4N0YsCi0g
ICAgMHg5NiwweEVFLDB4NTUsMHhFRSwweEJFLDB4MkEsMHg4MiwweEQ1LDB4OTYsMHhFRSwweDM0
LDB4RTYsMHhDOCwweDQ4LDB4NjIsMHg0MiwKLSAgICAweDM0LDB4RTYsMHhGNCwweERELDB4QkMs
MHg1RCwweDU1LDB4NUQsMHgxNCwweEU2LDB4RDMsMHhERCwweEJBLDB4N0YsMHhBNSwweEFCLAot
ICAgIDB4RjQsMHhFNSwweEFGLDB4QkMsMHhFMCwweDYwLDB4NzgsMHg1OCwweENGLDB4QkMsMHg2
RSwweEI0LDB4RTgsMHg3QiwweDdBLDB4ODAsCi0gICAgMHhBRiwweEJDLDB4MEQsMHhBNCwweEJB
LDB4REYsMHhERiwweEU4LDB4NTEsMHhDRCwweEFGLDB4QkMsMHgwOSwweDJELDB4OTUsMHg1NSwK
LSAgICAweDUxLDB4Q0QsMHgwRCwweEFDLDB4NjgsMHg2MCwweEUwLDB4REUsMHgzMSwweENELDB4
QUYsMHhCQywweDgxLDB4MDksMHgwQiwweEEzLAotICAgIDB4OTIsMHhENSwweDMxLDB4Q0QsMHhB
OSwweEE5LDB4QUIsMHhBOSwweDkxLDB4RDUsMHg1MiwweENELDB4RkEsMHhGRSwweEVCLDB4RUEs
Ci0gICAgMHhBNywweDdBLDB4NDUsMHg2QSwweDAyLDB4OEEsMHgwQSwweDhELDB4QTcsMHg3QSww
eDg2LDB4NzIsMHhENCwweDU2LDB4RkUsMHhBRCwKLSAgICAweDg2LDB4N0EsMHhBNywweDcyLDB4
RUEsMHhFRiwweEVCLDB4QTcsMHhDOCwweDgyLDB4NjYsMHg3QSwweEZGLDB4REYsMHg5RSwweEFC
LAotICAgIDB4QTcsMHg3QSwweDY2LDB4NzIsMHg1NSwweEZCLDB4OEIsMHhBOCwweDg3LDB4N0Es
MHg2NiwweDcyLDB4QkQsMHhGMCwweEMyLDB4MkMsCi0gICAgMHhBNiwweDdBLDB4NDYsMHg3Miww
eDJGLDB4RjcsMHhGRSwweEVFLDB4RTgsMHg4MiwweDQ1LDB4NzIsMHgwOCwweEFGLDB4NUQsMHhE
NSwKLSAgICAweEU5LDB4OEEsMHg0NiwweDcyLDB4MDIsMHg4OCwweDJCLDB4RkQsMHhFOCwweDhB
LDB4ODcsMHg3QSwweEE4LDB4ODIsMHhBOCwweEFELAotICAgIDB4RTgsMHg4MiwweEE3LDB4ODIs
MHgwMiwweDhBLDB4OUQsMHhBQSwweEU4LDB4OEEsMHhDOCwweDgyLDB4RjYsMHgyQywweDJGLDB4
OUUsCi0gICAgMHhFOCwweDhBLDB4QTcsMHg3QSwweEEyLDB4ODIsMHg2QSwweEFFLDB4RTgsMHg4
MiwweEE0LDB4NTksMHg3OCwweDc4LDB4NzIsMHg2OCwKLSAgICAweDIzLDB4NDksMHhFMiwweDM4
LDB4MDgsMHhGOCwweEZDLDB4NUMsMHg4NCwweDU5LDB4QzIsMHgzMCwweDAyLDB4M0YsMHhCNSww
eEQ1LAotICAgIDB4QzcsMHg4QSwweDYzLDB4NTEsMHgyQiwweEFCLDB4QkYsMHhGNSwweDA5LDB4
OTMsMHg0NywweDdBLDB4RTIsMHg4MiwweEVBLDB4NzUsCi0gICAgMHg2OCwweDdBLDB4MDYsMHg3
MiwweEE4LDB4QkMsMHhGRiwweDY4LDB4NDcsMHg3MiwweDY0LDB4NTksMHhGRSwweDc4LDB4RkEs
MHhBQiwKLSAgICAweEM1LDB4NjEsMHgyNCwweDUxLDB4RjAsMHg3QiwweEVCLDB4RTgsMHg2NCww
eDUxLDB4MjMsMHg0OSwweDJBLDB4RDUsMHhENywweEY1LAotICAgIDB4ODQsMHg1MSwweDIzLDB4
NDksMHg1RSwweERFLDB4MkYsMHg3QiwweEM1LDB4NTksMHgwMywweDQxLDB4MkYsMHgwQSwweEZB
LDB4REYsCi0gICAgMHhFNiwweDYxLDB4NDMsMHg0MSwweDAwLDB4QkEsMHhGNSwweDU1LDB4QzUs
MHg1OSwweDIzLDB4NDEsMHgwMCwweDAwLDB4Q0EsMHg1NSwKLSAgICAweDQ3LDB4NzIsMHg2NCww
eDUxLDB4RDUsMHhGNSwweDJELDB4MEQsMHg4OCwweDgyLDB4QzUsMHg2MSwweDc1LDB4QjUsMHgy
RSwweDBBLAotICAgIDB4QzksMHg4QSwweDA2LDB4NzIsMHgwQiwweEJFLDB4RkMsMHg3OCwweEM5
LDB4OEEsMHgwNiwweDZBLDB4RTAsMHhFOCwweEJBLDB4RDUsCi0gICAgMHg4NywweDdBLDB4NjQs
MHg1MSwweDAyLDB4OEEsMHhFOCwweDdFLDB4QzUsMHg2MSwweDAzLDB4NDksMHgyMCwweDlFLDB4
QjcsMHhCNywKLSAgICAweDg3LDB4N0EsMHg2NCwweDUxLDB4MEEsMHgzRiwweEFELDB4QUYsMHgx
NSwweEVFLDB4NjcsMHg3MiwweDJGLDB4QkQsMHhENSwweDU1LAotICAgIDB4NzYsMHhFRSwweDA5
LDB4OEIsMHgwMCwweDAyLDB4QUYsMHg1NSwweEQ4LDB4RkUsMHgwRCwweEFDLDB4MDAsMHgwMCww
eDIyLDB4RjUsCi0gICAgMHgxOCwweEZGLDB4MzQsMHhFNiwweDAwLDB4MDIsMHgwMiwweDI5LDB4
MTgsMHhGRiwweEY4LDB4RjYsMHhGQSwweEZBLDB4RkEsMHhBRiwKLSAgICAweEY3LDB4RkUsMHhG
OCwweEY2LDB4RkYsMHhGRiwweEVGLDB4RkYsMHhGNywweEY2LDB4RDgsMHhGNiwweDJBLDB4QTgs
MHhBRSwweDJBLAotICAgIDB4MTgsMHhGRiwweEY3LDB4RjYsMHg1NywweEZELDB4RjUsMHhCRiww
eEY4LDB4RkUsMHgxNywweEY3LDB4QUEsMHhFQSwweEJCLDB4OEUsCi0gICAgMHgxOCwweEZGLDB4
RjgsMHhGNiwweEZFLDB4RkYsMHhFRSwweEZFLDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhFQSwweEVF
LDB4RkIsMHg3QSwKLSAgICAweDE3LDB4RjcsMHhCNywweEY2LDB4N0YsMHhGRSwweDVGLDB4NUQs
MHhCNywweEY2LDB4NzYsMHhFRSwweEY4LDB4NTgsMHhGOCwweEZFLAotICAgIDB4NzUsMHhFRSww
eDM1LDB4RTYsMHhBRSwweEZFLDB4RkEsMHhGMCwweDc2LDB4RUUsMHg1NSwweEVFLDB4RkUsMHhE
RCwweDFFLDB4MDIsCi0gICAgMHg3NiwweEVFLDB4NTUsMHhFRSwweEY5LDB4REMsMHg1OCwweEY4
LDB4NzYsMHhFRSwweDU1LDB4RUUsMHhFOSwweEFFLDB4RUUsMHhBQiwKLSAgICAweDc1LDB4RUUs
MHgzNSwweEU2LDB4NkUsMHg2OCwweEU4LDB4QUEsMHg1NiwweEVFLDB4MTQsMHhFNiwweDdGLDB4
RkYsMHhCRSwweEFFLAotICAgIDB4OTYsMHhGNiwweDM1LDB4RTYsMHhCNSwweDA1LDB4M0QsMHhC
RiwweDk2LDB4RjYsMHhEMywweERELDB4RTAsMHg2MCwweDY4LDB4N0EsCi0gICAgMHgxNCwweEU2
LDB4RDMsMHhERCwweDBCLDB4MEQsMHgwOSwweDI1LDB4MTQsMHhFNiwweEQzLDB4REQsMHg4MCww
eDIwLDB4NUMsMHhEOCwKLSAgICAweEQ0LDB4REQsMHhGMCwweEM0LDB4NTgsMHg3OCwweDc4LDB4
N0MsMHhGMCwweEM0LDB4QUYsMHhCQywweEIwLDB4RkEsMHhEQSwweEFBLAotICAgIDB4RjAsMHhD
NCwweDRELDB4QUMsMHg2QSwweDYyLDB4RTAsMHgwMCwweEQwLDB4QkMsMHg2QSwweDkzLDB4QTIs
MHhBQSwweEZCLDB4NUMsCi0gICAgMHg4RSwweEI0LDB4NEIsMHg5MywweDI4LDB4MkEsMHgzRiww
eDM1LDB4MzEsMHhDNSwweEYwLDB4QzQsMHhBOSwweDhCLDB4RjksMHg3NSwKLSAgICAweDcyLDB4
RDUsMHgxMCwweEM1LDB4MjMsMHhBRiwweEFELDB4RkQsMHg3MiwweEQ1LDB4MzEsMHhDRCwweDAw
LDB4QkEsMHhBQSwweDU3LAotICAgIDB4NDUsMHg2QSwweDA1LDB4NjIsMHgzQSwweEVBLDB4N0Qs
MHhFNiwweDg2LDB4NzIsMHhFNSwweDYxLDB4MDIsMHhBRiwweDZGLDB4RkUsCi0gICAgMHhBNyww
eDdBLDB4MDUsMHg2MiwweDgwLDB4MEEsMHhBRiwweEQ1LDB4QTcsMHg3QSwweDQ2LDB4NzIsMHg4
MCwweEE4LDB4MEEsMHg5NSwKLSAgICAweEE3LDB4N0EsMHg4NiwweDdBLDB4RjksMHhCOSwweEJC
LDB4QUIsMHhBNywweDdBLDB4NjYsMHg3QSwweEJELDB4QjgsMHhBQSwweEI4LAotICAgIDB4QTcs
MHg3QSwweDQ2LDB4NzIsMHhFOCwweEEyLDB4QTIsMHgwMiwweEE3LDB4N0EsMHg2NiwweDdBLDB4
N0UsMHgzQiwweDJBLDB4MjIsCi0gICAgMHhBNywweDdBLDB4NjYsMHg3QSwweDc3LDB4NUUsMHhC
OCwweDIwLDB4QTcsMHg3QSwweDY2LDB4N0EsMHhFNSwweDVELDB4RkYsMHhFOCwKLSAgICAweEU4
LDB4ODIsMHg0NSwweDcyLDB4MDIsMHhCRCwweEQ3LDB4RkUsMHhFOCwweDgyLDB4NjYsMHg3Miww
eEEyLDB4MkEsMHhCNSwweDU1LAotICAgIDB4MDgsMHg4QiwweDg3LDB4N0EsMHgyQSwweEM4LDB4
QTIsMHhCRCwweEM3LDB4ODIsMHgwNSwweDYyLDB4NjAsMHg4MCwweDAwLDB4MDAsCi0gICAgMHhD
NywweDgyLDB4RTIsMHg0MCwweDU3LDB4NTcsMHg1RSwweDc4LDB4RTIsMHgzOCwweEExLDB4Mzgs
MHhGQywweDVFLDB4N0EsMHhFOCwKLSAgICAweDY0LDB4NTksMHhBMiwweDM4LDB4MEIsMHhGRCww
eEJELDB4M0QsMHgyNiwweDcyLDB4MjMsMHg1MSwweDJGLDB4M0QsMHgyRCwweDJGLAotICAgIDB4
ODgsMHg4MiwweEU2LDB4NjksMHg2QSwweDAyLDB4MDAsMHgyQSwweDg4LDB4ODIsMHgwNSwweDZB
LDB4NTUsMHhGQiwweDAyLDB4OTYsCi0gICAgMHhFOSwweDhBLDB4ODQsMHg1MSwweDdGLDB4RUEs
MHhGMCwweEVBLDB4MjcsMHg2QSwweDAyLDB4NDEsMHhGRiwweDdGLDB4NTgsMHg1RiwKLSAgICAw
eDQ0LDB4NDksMHhDMiwweDM4LDB4RTAsMHg2OCwweEZFLDB4RDcsMHg0NCwweDQxLDB4RTIsMHgz
OCwweDJCLDB4QTksMHhFRCwweDdGLAotICAgIDB4NDQsMHg0MSwweEEyLDB4MzAsMHhFMCwweDdB
LDB4NUYsMHg1RiwweEE1LDB4NTksMHg4MSwweDMwLDB4RkYsMHhCRCwweEFELDB4MkIsCi0gICAg
MHg0NywweDcyLDB4NDMsMHg1MSwweDBELDB4MEQsMHhBRiwweEJGLDB4ODgsMHg3QSwweDA2LDB4
NkEsMHhDQSwweEVGLDB4OEIsMHhBRCwKLSAgICAweDI3LDB4NzIsMHg4NCwweDU5LDB4RTAsMHhG
OCwweDY4LDB4NUEsMHhFNiwweDYxLDB4ODQsMHg1OSwweDA5LDB4NkYsMHhBRCwweEVCLAotICAg
IDB4QzYsMHg2MSwweDIzLDB4NDEsMHg3MCwweDcyLDB4N0EsMHg3RSwweEE1LDB4NTksMHgwMyww
eDQxLDB4QjUsMHhCNSwweDM1LDB4MzUsCi0gICAgMHg0NywweDcyLDB4QzUsMHg2MSwweEU5LDB4
NjMsMHhGQiwweDNBLDB4RTksMHg4QSwweDA2LDB4NzIsMHgyOSwweDBELDB4QUIsMHhFQSwKLSAg
ICAweEM4LDB4ODIsMHgyNiwweDcyLDB4QkMsMHg1QywweEZFLDB4MkYsMHg4QiwweDlCLDB4Njcs
MHg3QSwweDJCLDB4QkQsMHhCRCwweEVGLAotICAgIDB4RjgsMHhGRSwweEM4LDB4ODIsMHgwMiww
eEFCLDB4RkQsMHg1NSwweEQ3LDB4RkUsMHg2QSwweDkzLDB4MDAsMHgwMiwweEFGLDB4RDUsCi0g
ICAgMHhGNywweEZFLDB4NzIsMHhENSwweDAwLDB4MDAsMHgyMiwweEZELDB4RjgsMHhGRSwweDU2
LDB4RUUsMHgwOCwweDA4LDB4MjIsMHhCRCwKLSAgICAweEY4LDB4RkUsMHhENywweEY2LDB4MDAs
MHhBQSwweEE4LDB4RkUsMHgxOCwweEZGLDB4RDcsMHhGNiwweEFBLDB4QUEsMHhBQiwweEZGLAot
ICAgIDB4MTgsMHhGRiwweEQ4LDB4RjYsMHhBQSwweEFGLDB4RkYsMHhFRiwweEY4LDB4RkUsMHhC
NywweEY2LDB4NjAsMHhGMiwweEY4LDB4NUUsCi0gICAgMHhENywweEY2LDB4NzYsMHhFRSwweEEw
LDB4RUMsMHhGQSwweDdFLDB4QjYsMHhGNiwweDU1LDB4RUUsMHhBQSwweEZBLDB4RkEsMHhGNSwK
LSAgICAweDk2LDB4RjYsMHg1NSwweEVFLDB4N0EsMHg4QSwweEFCLDB4RUYsMHg3NiwweEVFLDB4
NTUsMHhFRSwweEZCLDB4N0MsMHg5OCwweDBCLAotICAgIDB4OTcsMHhGNiwweDU2LDB4RUUsMHhE
RSwweDlGLDB4RTYsMHhGQSwweDk3LDB4RjYsMHg1NiwweEVFLDB4N0QsMHhGRiwweEZBLDB4RUEs
Ci0gICAgMHg3NiwweEVFLDB4NTUsMHhFRSwweDM2LDB4RUEsMHhCQSwweEFFLDB4NzUsMHhFRSww
eDM1LDB4RUUsMHhCNywweEFFLDB4ODgsMHgwQSwKLSAgICAweDc2LDB4RUUsMHgzNCwweEU2LDB4
NUEsMHg3MCwweDdBLDB4NUYsMHg1NSwweEVFLDB4QjMsMHhENSwweEYwLDB4NjgsMHg3MCwweDc4
LAotICAgIDB4MTQsMHhFNiwweEIzLDB4RDUsMHgyRCwweDJGLDB4MkIsMHhBRCwweDc1LDB4RUUs
MHgxNCwweEU2LDB4N0QsMHhGRiwweEJGLDB4MkQsCi0gICAgMHg1NSwweEVFLDB4MzEsMHhDRCww
eDU2LDB4N0MsMHhFMCwweDgwLDB4RDMsMHhERCwweEQwLDB4QkMsMHg1NSwweEY3LDB4REUsMHhF
OCwKLSAgICAweDcyLDB4Q0QsMHhGMCwweEM0LDB4RkQsMHhBRiwweDJCLDB4QUEsMHgzMSwweENE
LDB4MDksMHg4MywweDcwLDB4NzAsMHhDMCwweDgwLAotICAgIDB4QUYsMHhCNCwweEE4LDB4N0Es
MHgyRCwweDJELDB4MzUsMHhGNywweEYwLDB4QzQsMHgwQywweEE0LDB4MDAsMHgwQSwweEFBLDB4
QjUsCi0gICAgMHgzMSwweENELDB4QUYsMHhCQywweDBBLDB4QUIsMHgzNywweEY1LDB4MzEsMHhD
RCwweENGLDB4QkMsMHgwMCwweEVBLDB4RUIsMHhERiwKLSAgICAweDQ2LDB4NzIsMHgyNiwweDZB
LDB4RUQsMHhERSwweDE4LDB4ODgsMHg0NiwweDcyLDB4MjYsMHg2QSwweEU1LDB4NkIsMHgwOCww
eDIyLAotICAgIDB4NDYsMHg3MiwweDA1LDB4NkEsMHhCRiwweEFBLDB4RkUsMHhEQSwweDQ2LDB4
NzIsMHgwNSwweDZBLDB4RkYsMHg2RSwweEQ3LDB4QkEsCi0gICAgMHhBNywweDdBLDB4MDUsMHg2
QSwweDJGLDB4N0QsMHhERiwweEZGLDB4QTcsMHg3QSwweDI2LDB4NkEsMHgwMCwweDJCLDB4RDcs
MHg1NSwKLSAgICAweEE3LDB4ODIsMHgyNSwweDZBLDB4MDgsMHhBMCwweDJBLDB4OTUsMHhBNyww
eDdBLDB4ODcsMHg3QSwweEFGLDB4RkEsMHhGRiwweEE1LAotICAgIDB4QTcsMHg3QSwweDg3LDB4
N0EsMHg4QiwweDBGLDB4MkQsMHhGQywweEM3LDB4ODIsMHg2NiwweDcyLDB4N0YsMHhGRiwweDNB
LDB4RjgsCi0gICAgMHhBNywweDgyLDB4ODcsMHg3QSwweEZGLDB4QkQsMHhGRiwweDBDLDB4QTcs
MHg4MiwweDY2LDB4N0EsMHhFNiwweEZBLDB4QUEsMHgwOCwKLSAgICAweEM3LDB4ODIsMHg2Niww
eDcyLDB4RDUsMHhCQiwweEZFLDB4OEIsMHhDOCwweDgyLDB4NjYsMHg3MiwweDBCLDB4RjcsMHhG
RiwweEFBLAotICAgIDB4QzcsMHg4MiwweDg0LDB4NTksMHg3MCwweEMyLDB4QTIsMHgyOCwweDQ2
LDB4NzIsMHhFMywweDQwLDB4NTUsMHg1NywweEZDLDB4RTgsCi0gICAgMHg2NCwweDU5LDB4RTIs
MHg0MCwweEFELDB4MkQsMHg4RSwweDg4LDB4QTUsMHg2MSwweDAzLDB4NDksMHgyRiwweDU3LDB4
NUYsMHg1RiwKLSAgICAweDI3LDB4NzIsMHhFMywweDQ4LDB4MEEsMHhBRiwweEY1LDB4RjUsMHg2
NywweDdBLDB4NDQsMHg1MSwweDAwLDB4QUEsMHhGRCwweDVELAotICAgIDB4NDcsMHg3QSwweEUz
LDB4NDAsMHhBMCwweEZBLDB4RkYsMHg3RiwweDQ0LDB4NTEsMHhBMiwweDMwLDB4RTAsMHhCQSww
eEZFLDB4RDcsCi0gICAgMHg0NCwweDQxLDB4QzIsMHgzOCwweEY3LDB4RUYsMHhCQiwweDJBLDB4
NDQsMHg0MSwweEUzLDB4MzgsMHg3RiwweEVGLDB4RUEsMHg4MywKLSAgICAweDIzLDB4NDEsMHhB
MiwweDMwLDB4REUsMHhERSwweEJFLDB4MkEsMHhBNSwweDU5LDB4MDMsMHg0MSwweDJELDB4MEQs
MHgyRCwweDAzLAotICAgIDB4MDYsMHg3MiwweDg0LDB4NTksMHgzNSwweEZELDB4Q0EsMHhBMiww
eDA2LDB4NkEsMHhBNCwweDYxLDB4MkEsMHhGRCwweEQ1LDB4REUsCi0gICAgMHhFNSwweDY5LDB4
MjQsMHg0OSwweEI4LDB4RkEsMHhGRSwweDVFLDB4RTUsMHg2MSwweDIzLDB4NDksMHg4QiwweDJB
LDB4QUYsMHhCNSwKLSAgICAweDg0LDB4NTEsMHgwMywweDQxLDB4RjgsMHhGOCwweEQ2LDB4RjYs
MHhDNiwweDU5LDB4MDIsMHg0MSwweDJELDB4MkQsMHhBQSwweEUzLAotICAgIDB4ODgsMHg3QSww
eDQ0LDB4NTEsMHgyQSwweDBCLDB4MkYsMHhCNSwweDg4LDB4ODIsMHhFNSwweDY5LDB4NEEsMHhG
OCwweDU4LDB4QTAsCi0gICAgMHhDOSwweDhBLDB4MDUsMHg2QSwweDJELDB4MkYsMHhCRiwweEVG
LDB4MEEsMHg5MywweDY3LDB4N0EsMHhBMCwweEUyLDB4N0YsMHg1RCwKLSAgICAweDg4LDB4N0Es
MHgyNiwweDcyLDB4MjYsMHgzRCwweEJELDB4MDEsMHgyQSwweDkzLDB4MjYsMHg3MiwweDNFLDB4
QjcsMHhENywweEZGLAotICAgIDB4RUMsMHhBMywweDg4LDB4N0EsMHhGOCwweDU3LDB4NTUsMHg1
NSwweEQzLDB4REQsMHg2OCwweDdBLDB4MEIsMHhGRCwweEQ1LDB4NTUsCi0gICAgMHgzNCwweEU2
LDB4ODgsMHg3QSwweDAwLDB4QkYsMHhENSwweDU1LDB4OTYsMHhGNiwweEE4LDB4N0EsMHgwMCww
eDAyLDB4RkYsMHg1NSwKLSAgICAweEI3LDB4RjYsMHg2QSwweDkzLDB4MDAsMHgwMCwweDAzLDB4
QkQsMHhENywweEY2LDB4MzUsMHhFNiwweDg4LDB4QTgsMHhBQSwweEZELAotICAgIDB4OTYsMHhF
RSwweDU1LDB4RUUsMHhDMCwweEU4LDB4QUUsMHhGRiwweDk2LDB4RjYsMHgzNSwweEU2LDB4QUUs
MHg4QSwweDdFLDB4RDcsCi0gICAgMHg3NiwweEVFLDB4MzQsMHhFNiwweDI4LDB4QUUsMHhCRiww
eDU1LDB4NzYsMHhFRSwweDM1LDB4RUUsMHgwMCwweDAwLDB4QTAsMHhGQiwKLSAgICAweDk3LDB4
RjYsMHgzNSwweEU2LDB4QUEsMHhBMiwweEFBLDB4RDUsMHg5NiwweEY2LDB4MzUsMHhFNiwweDIy
LDB4MDIsMHhGOCwweERGLAotICAgIDB4NzYsMHhFRSwweDU1LDB4RUUsMHhENCwweDU3LDB4RTUs
MHgyNSwweDk2LDB4RjYsMHg1NSwweEVFLDB4RDUsMHhGRCwweEVCLDB4MkEsCi0gICAgMHg3Niww
eEVFLDB4MzUsMHhFNiwweEZCLDB4RjgsMHg3MCwweDcwLDB4MzUsMHhFRSwweDkyLDB4RDUsMHg3
MCwweDc4LDB4NzgsMHg3MCwKLSAgICAweDE1LDB4RTYsMHg5MiwweEQ1LDB4MjUsMHgzRCwweEFE
LDB4QTksMHgzNSwweEU2LDB4RjQsMHhFNSwweDBBLDB4REYsMHg4NSwweDBELAotICAgIDB4OTYs
MHhFRSwweDM1LDB4RTYsMHhFRCwweDg5LDB4MjksMHgyQiwweDc2LDB4RUUsMHg5MiwweEQ1LDB4
NkEsMHgwMCwweDAwLDB4MDAsCi0gICAgMHg3NSwweEVFLDB4NTEsMHhDRCwweDU1LDB4NTcsMHhG
QywweEYwLDB4QjIsMHhENSwweDEwLDB4QzUsMHg3QiwweEVGLDB4QUUsMHhBOCwKLSAgICAweDcy
LDB4Q0QsMHg0NywweDZBLDB4NTcsMHg1QywweDc4LDB4RjAsMHgwRCwweEE0LDB4MDYsMHg2Miww
eDBCLDB4QjUsMHhENSwweDVGLAotICAgIDB4QUYsMHhCQywweDg4LDB4NzIsMHgwMCwweDIyLDB4
QUQsMHg1NSwweENGLDB4QkMsMHgyQiwweDhCLDB4MDAsMHgwMiwweDBCLDB4MEQsCi0gICAgMHg2
NiwweDcyLDB4MjYsMHg2QSwweEJBLDB4N0UsMHg4QywweDBDLDB4NDYsMHg3MiwweDI1LDB4NkEs
MHgyMCwweDA4LDB4MDAsMHgzMCwKLSAgICAweDY2LDB4NzIsMHgyNiwweDZBLDB4N0YsMHhCMSww
eEJCLDB4MkEsMHg2NiwweDcyLDB4MjUsMHg2QSwweEZELDB4RUUsMHhGRSwweDNDLAotICAgIDB4
NjYsMHg3MiwweDI1LDB4NkEsMHg2RiwweEFFLDB4QUYsMHgxRiwweDQ2LDB4NzIsMHgyNiwweDZB
LDB4QjksMHgyOSwweDNCLDB4MDAsCi0gICAgMHg0NiwweDcyLDB4MjYsMHg2QSwweDk1LDB4Q0Ms
MHhBQiwweDgwLDB4ODcsMHg3QSwweDI1LDB4NkEsMHgyOSwweERGLDB4N0QsMHg3RCwKLSAgICAw
eEE3LDB4N0EsMHgyNSwweDZBLDB4MjAsMHgyRCwweEQ1LDB4NTcsMHhDNywweDgyLDB4MjUsMHg2
QSwweEFBLDB4QTgsMHgyRiwweEZELAotICAgIDB4QTcsMHg4MiwweDY3LDB4N0EsMHhBOCwweDgw
LDB4QTgsMHhCRCwweEE3LDB4ODIsMHg4NywweDdBLDB4MjgsMHhFMCwweDhBLDB4QzgsCi0gICAg
MHhDNywweDhBLDB4QTcsMHg3QSwweDU1LDB4N0QsMHhGRCwweEVGLDB4QzcsMHg4MiwweDg2LDB4
N0EsMHhBRSwweEE5LDB4ODIsMHhBMiwKLSAgICAweEM4LDB4ODIsMHg4NiwweDdBLDB4N0YsMHhC
QiwweEJCLDB4M0UsMHhDOCwweDgyLDB4NjQsMHg1OSwweDdBLDB4NjgsMHhBOCwweDIwLAotICAg
IDB4QzgsMHg4QSwweDY0LDB4NTksMHg1NSwweERELDB4RkEsMHhBMCwweDY3LDB4NzIsMHg0NCww
eDU5LDB4NTUsMHhGRiwweEZBLDB4RTAsCi0gICAgMHhBNSwweDU5LDB4MjQsMHg0OSwweEJGLDB4
RTgsMHhGOCwweDVFLDB4ODUsMHg1MSwweEUyLDB4MzgsMHhBMCwweEFBLDB4RkUsMHg1RSwKLSAg
ICAweDY0LDB4NTEsMHhDMiwweDMwLDB4NjgsMHg1QSwweDVGLDB4N0QsMHgwMywweDM5LDB4QTIs
MHgzMCwweEI1LDB4RUYsMHhBRiwweDAzLAotICAgIDB4NDQsMHg0MSwweEMyLDB4MzAsMHg4Myww
eEFBLDB4N0UsMHg3QSwweDQ0LDB4NDksMHhDMiwweDM4LDB4QUUsMHhCRiwweEJELDB4M0QsCi0g
ICAgMHg2NCwweDUxLDB4MDMsMHg0MSwweDM1LDB4OEYsMHhDOCwweEEwLDB4QTUsMHg1OSwweDIz
LDB4NDksMHgwRiwweDNELDB4QkQsMHhBRiwKLSAgICAweDQ3LDB4N0EsMHhBNSwweDU5LDB4QjIs
MHgyQiwweDI5LDB4QTUsMHg2NywweDdBLDB4NDQsMHg1MSwweEZBLDB4NjgsMHg3MCwweDdBLAot
ICAgIDB4QTUsMHg1OSwweEMyLDB4MzgsMHhCOCwweEZBLDB4RjcsMHhENywweEE1LDB4NTksMHgy
MywweDQxLDB4RkIsMHg2QiwweEU5LDB4MDksCi0gICAgMHhBNSwweDUxLDB4MDMsMHg0MSwweERF
LDB4RkYsMHhCNSwweEZDLDB4QTUsMHg1MSwweDIzLDB4NDksMHhFQiwweEJCLDB4RTgsMHg1RiwK
LSAgICAweDY4LDB4N0EsMHgwMywweDQxLDB4MkYsMHhBRCwweDJELDB4MjUsMHg0QiwweDkzLDB4
QTcsMHg4MiwweEE5LDB4OEQsMHhBRSwweDVELAotICAgIDB4RTksMHg4QSwweEE1LDB4NTksMHhG
QSwweEY4LDB4N0UsMHg1RSwweDY3LDB4N0EsMHhFNiwweDYxLDB4MkIsMHgyQiwweEFGLDB4QkQs
Ci0gICAgMHhDOSwweDhBLDB4MjcsMHg3MiwweDJGLDB4QUEsMHhCRiwweDM1LDB4MDksMHg5Myww
eEE4LDB4ODIsMHg1RiwweDdBLDB4MkUsMHhCRiwKLSAgICAweEU5LDB4OEEsMHg0NywweDdBLDB4
NTUsMHg1RiwweEY4LDB4RTgsMHg2NywweDdBLDB4RTUsMHg2OSwweDdGLDB4QUEsMHg4QSwweEY4
LAotICAgIDB4ODcsMHg3QSwweEU1LDB4NjksMHhBRCwweEFCLDB4MDIsMHhBQiwweDg3LDB4NzIs
MHgyNiwweDZBLDB4NzgsMHhFQSwweERGLDB4NUEsCi0gICAgMHg0RSwweEFDLDB4NDcsMHg2QSww
eDI1LDB4RDUsMHg1NSwweDU1LDB4NTUsMHhFRSwweDg4LDB4NzIsMHgwMiwweDAzLDB4RjUsMHg1
NSwKLSAgICAweDM1LDB4RTYsMHg2QSwweDkzLDB4MDAsMHgwMCwweDBBLDB4QjUsMHg1NSwweEVF
LDB4RDMsMHhERCwweEE4LDB4QTIsMHhBQSwweEE5LAotICAgIDB4MzQsMHhFNiwweEY0LDB4RTUs
MHhBMCwweEE4LDB4RkEsMHhERSwweDM1LDB4RTYsMHhGNCwweEU1LDB4MDIsMHg4RSwweDJGLDB4
REQsCi0gICAgMHgzNCwweEU2LDB4RjQsMHhERCwweEZFLDB4NTcsMHhGQywweEVGLDB4MzUsMHhF
NiwweEQzLDB4REQsMHgyRiwweDI5LDB4QkIsMHhBRiwKLSAgICAweDk2LDB4RjYsMHgzNCwweEU2
LDB4QUQsMHhBRiwweDM3LDB4QjUsMHg5NiwweEY2LDB4MzUsMHhFNiwweDgyLDB4QTgsMHg3Miww
eDVGLAotICAgIDB4NTUsMHhFRSwweDM1LDB4RTYsMHhDMCwweDJBLDB4QUQsMHhGNSwweDM1LDB4
RTYsMHg3MiwweEQ1LDB4NzgsMHhBMCwweDAwLDB4MDAsCi0gICAgMHgzNSwweEVFLDB4OTIsMHhE
NSwweEI1LDB4QkQsMHhBOCwweDgwLDB4MzQsMHhFNiwweEY0LDB4REQsMHgwQiwweEJBLDB4REYs
MHhEQiwKLSAgICAweDk2LDB4RUUsMHgxNCwweEU2LDB4OEIsMHgwQiwweDBGLDB4MkQsMHg5Niww
eEVFLDB4NzYsMHhFRSwweEU4LDB4RjgsMHg4QSwweEE4LAotICAgIDB4NzYsMHhFRSwweEQzLDB4
REQsMHg3MCwweEMwLDB4MDAsMHgwMCwweDU1LDB4RUUsMHg3MiwweEQ1LDB4N0YsMHg3RiwweDdB
LDB4RTAsCi0gICAgMHhGMywweERELDB4RjEsMHhDNCwweDYyLDB4MEEsMHgwQSwweDBBLDB4QjMs
MHhERCwweEU5LDB4ODIsMHg1NywweEUwLDB4MDAsMHgwMCwKLSAgICAweDcyLDB4RDUsMHg2Nyww
eDcyLDB4NTUsMHhGRiwweEE4LDB4ODAsMHhDRiwweEJDLDB4RTksMHg4MiwweDA5LDB4MDMsMHgw
MiwweDI4LAotICAgIDB4NjYsMHg3MiwweDQ2LDB4NzIsMHgyNSwweEQ2LDB4OUMsMHhCRSwweDY2
LDB4NzIsMHgyNSwweDcyLDB4QUUsMHg4OSwweEE4LDB4QTAsCi0gICAgMHg2NywweDcyLDB4NDYs
MHg3MiwweEQ5LDB4QTMsMHg2NiwweEI2LDB4NjYsMHg3QSwweDQ2LDB4NzIsMHhBRiwweENGLDB4
N0MsMHhCMiwKLSAgICAweDY2LDB4NzIsMHg0NiwweDcyLDB4RkUsMHhGNCwweEJELDB4NUQsMHg2
NiwweDcyLDB4NDYsMHg3MiwweDVFLDB4MTYsMHhGOCwweEYzLAotICAgIDB4NjcsMHg3QSwweDI2
LDB4NzIsMHg3RiwweDhGLDB4MkQsMHhBOCwweDY2LDB4N0EsMHgyNiwweDZBLDB4REYsMHhFRiww
eEE4LDB4QzMsCi0gICAgMHg2NiwweDcyLDB4MjUsMHg3MiwweEUyLDB4QUIsMHhFQSwweEVFLDB4
NjYsMHg3MiwweDI1LDB4NkEsMHg2RiwweERGLDB4OUEsMHhCQSwKLSAgICAweDY2LDB4NzIsMHgy
NSwweDZBLDB4MkYsMHg3RiwweDY3LDB4QTgsMHhDNywweDgyLDB4MjYsMHg2QSwweDhBLDB4QUQs
MHg3RCwweEZGLAotICAgIDB4QzgsMHg4QSwweDQ2LDB4NzIsMHhBQSwweDhBLDB4OUQsMHhENSww
eEM3LDB4ODIsMHg2NiwweDdBLDB4MjIsMHgwQSwweEFBLDB4QjUsCi0gICAgMHhDNywweDgyLDB4
QTcsMHg4MiwweDA5LDB4MDIsMHgwQSwweDA3LDB4RTgsMHg4QSwweDg3LDB4N0EsMHg3QSwweEVB
LDB4MDAsMHgwQSwKLSAgICAweDA5LDB4OTMsMHg0NiwweDcyLDB4N0EsMHhFQiwweEU4LDB4Njgs
MHg4NywweDdBLDB4MjMsMHg0OSwweEUwLDB4RjgsMHhGQSwweDdFLAotICAgIDB4NjUsMHg1MSww
eEMyLDB4MzAsMHg4OCwweEZBLDB4NUUsMHg1NywweDIzLDB4NDEsMHg4MSwweDI4LDB4RjgsMHhE
RiwweERGLDB4RDUsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDAyLDB4QUEsMHhBRiwweEJG
LDB4MDMsMHgzOSwweEEyLDB4MjgsMHhBMiwweEEyLDB4RUEsMHhERSwKLSAgICAweEUzLDB4MzAs
MHhBMiwweDMwLDB4MDAsMHhBQSwweEZBLDB4RkYsMHg4NCwweDUxLDB4QzIsMHgzMCwweEI3LDB4
QkYsMHgyNSwweDBELAotICAgIDB4ODQsMHg1MSwweEUzLDB4NDAsMHhFMCwweEFFLDB4QjYsMHhE
NywweEE1LDB4NTksMHg0NCwweDUxLDB4RjUsMHgyRiwweDJGLDB4RkIsCi0gICAgMHgyNywweDcy
LDB4ODUsMHg1OSwweDM1LDB4MzUsMHhBNywweEE1LDB4RTYsMHg2MSwweDAzLDB4NDEsMHhGOCww
eEY4LDB4N0EsMHg3QywKLSAgICAweDQ0LDB4NDksMHhDMywweDM4LDB4RUUsMHg3QSwweDdDLDB4
QkEsMHhDNiwweDU5LDB4RTMsMHgzOCwweDJELDB4MEQsMHgwQiwweEFCLAotICAgIDB4QzYsMHg1
OSwweDQ0LDB4NDksMHhGMCwweDVDLDB4NzAsMHg3QSwweDQ0LDB4NDksMHhFMywweDM4LDB4RTgs
MHhGRSwweDc2LDB4QUUsCi0gICAgMHhBNSwweDU5LDB4RTMsMHgzOCwweDI1LDB4QjUsMHhGRCww
eEZCLDB4NjcsMHg3MiwweDQ0LDB4NDksMHg4MiwweEZBLDB4N0YsMHg3NSwKLSAgICAweEU1LDB4
NjEsMHg0NCwweDQ5LDB4RTAsMHhCRiwweEY1LDB4NTUsMHhFNiwweDYxLDB4NDMsMHg1MSwweDJC
LDB4QkYsMHhCRiwweEI1LAotICAgIDB4NjcsMHg3QSwweDg0LDB4NTksMHgwQiwweDJELDB4MkYs
MHgzRiwweEU5LDB4OEEsMHgwNiwweDcyLDB4MkEsMHhCRSwweERBLDB4NUYsCi0gICAgMHhFOSww
eDkyLDB4NjcsMHg3QSwweDc4LDB4RUYsMHhBRCwweEU5LDB4QzksMHg4QSwweDI3LDB4NzIsMHg1
RSwweEYwLDB4QzAsMHg4OCwKLSAgICAweDg3LDB4N0EsMHhDNCwweDYxLDB4QUIsMHg3RiwweEZB
LDB4QTgsMHg0NywweDcyLDB4ODQsMHg1OSwweDAwLDB4MEIsMHhGRiwweDVFLAotICAgIDB4MjYs
MHg2QSwweDg0LDB4NTEsMHg4MCwweEEwLDB4RkIsMHg1NSwweDY3LDB4NzIsMHhBNSwweDU5LDB4
MkEsMHhGRCwweEY1LDB4RDUsCi0gICAgMHgwQywweEE0LDB4MjYsMHg2QSwweDJGLDB4QkQsMHhE
NSwweDU1LDB4MzQsMHhFRSwweDBBLDB4OEIsMHgwMiwweDBBLDB4MkQsMHhENSwKLSAgICAweDM1
LDB4RUUsMHgzMSwweENELDB4QTAsMHhBOCwweDIyLDB4QUQsMHgxNCwweEU2LDB4QjMsMHhERCww
eEVBLDB4NkIsMHhBMiwweDg4LAotICAgIDB4MTQsMHhFNiwweEIzLDB4REQsMHhDQSwweEFGLDB4
RkEsMHg2QSwweEY0LDB4RTUsMHhEMywweERELDB4MkUsMHg5RiwweDk3LDB4RDUsCi0gICAgMHg1
NSwweEU2LDB4RjQsMHhERCwweDBCLDB4QUIsMHhBRiwweEVGLDB4MzQsMHhFNiwweEY0LDB4REQs
MHg4MCwweDJBLDB4QUYsMHhENSwKLSAgICAweDU1LDB4RUUsMHgxNCwweEU2LDB4QUEsMHhBRiww
eEFGLDB4Q0QsMHgzNCwweEU2LDB4RjQsMHhERCwweEQ2LDB4NUUsMHg3QSwweDY3LAotICAgIDB4
MzQsMHhFNiwweEY0LDB4REQsMHhCRiwweEFGLDB4QjUsMHhGRCwweDE0LDB4RTYsMHhGNCwweERE
LDB4MjAsMHgyOCwweDgyLDB4MDIsCi0gICAgMHg5NiwweEVFLDB4MTQsMHhFNiwweDJGLDB4MEQs
MHgyRCwweDI1LDB4NzYsMHhGRSwweDk2LDB4RUUsMHg3NywweERELDB4NzUsMHg1RCwKLSAgICAw
eDk2LDB4RUUsMHg3NiwweEVFLDB4RjgsMHhDMiwweDhBLDB4QTAsMHg5NiwweEVFLDB4MzUsMHhF
NiwweDdBLDB4ODgsMHhBMiwweEUyLAotICAgIDB4NzYsMHhFRSwweDkzLDB4RDUsMHhENywweEY4
LDB4RTAsMHhGQSwweDE1LDB4RTYsMHhCMywweEQ1LDB4QUEsMHg4QiwweEFGLDB4RDcsCi0gICAg
MHhGNCwweERELDB4OTIsMHhENSwweDdBLDB4ODAsMHgwQSwweEFBLDB4RDMsMHhERCwweENDLDB4
OUIsMHg1QSwweEUwLDB4ODAsMHgwMCwKLSAgICAweDY2LDB4NzIsMHg0NSwweDcyLDB4QzMsMHgy
QiwweDAyLDB4ODMsMHg2NiwweDdBLDB4NDYsMHg3MiwweEJBLDB4QjQsMHhGRCwweDQyLAotICAg
IDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhFQSwweEJBLDB4REIsMHg3RiwweDg3LDB4N0EsMHg0Niww
eDcyLDB4RkQsMHhFRCwweEJBLDB4QkIsCi0gICAgMHg2NiwweDcyLDB4MjUsMHg3MiwweDFBLDB4
QUEsMHg4OCwweDgyLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhGNSwweEZFLDB4QjMsMHhFQSwKLSAg
ICAweDg2LDB4N0EsMHg0NiwweDcyLDB4N0QsMHhGRCwweEVFLDB4RkMsMHg4NywweDdBLDB4MjUs
MHg2QSwweEVGLDB4QUYsMHhBQSwweDg4LAotICAgIDB4NjYsMHg3QSwweDQ2LDB4NzIsMHg3OSww
eEI4LDB4NzYsMHhDMiwweDY2LDB4N0EsMHg0NiwweDcyLDB4RUMsMHg0QywweDZDLDB4QzQsCi0g
ICAgMHg2NiwweDdBLDB4NDYsMHg3MiwweDE3LDB4NzIsMHg4RiwweEM2LDB4ODcsMHg3QSwweDQ2
LDB4NzIsMHg3NywweDdELDB4QkUsMHhFQSwKLSAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4NUYs
MHg3RCwweEI1LDB4OEEsMHg4NywweDdBLDB4MjUsMHg3MiwweEZELDB4QUYsMHhFQiwweDhBLAot
ICAgIDB4QTcsMHg4MiwweDQ2LDB4NzIsMHgwQSwweEJGLDB4N0QsMHg2RiwweEU4LDB4OEEsMHg0
NiwweDcyLDB4MEEsMHgwRiwweEI3LDB4MUYsCi0gICAgMHgwOSwweDhCLDB4RTUsMHg2OSwweDcw
LDB4NzAsMHg3OCwweDc4LDB4QTQsMHg1OSwweEMyLDB4MzgsMHhGOCwweDVFLDB4N0MsMHg3OCwK
LSAgICAweEMyLDB4MzAsMHg4MiwweDI4LDB4NjAsMHhGMCwweEM4LDB4QzAsMHhFMiwweDMwLDB4
ODIsMHgyMCwweEQ1LDB4N0YsMHhCRiwweEFFLAotICAgIDB4QzIsMHgyOCwweEEyLDB4MjgsMHhG
RiwweEZGLDB4NTIsMHgzQSwweEMyLDB4MzAsMHhBMiwweDI4LDB4MEEsMHhBMywweDdCLDB4NUMs
Ci0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweDk3LDB4QkQsMHgyNSwweDJELDB4NjUsMHg0OSww
eEUyLDB4MzgsMHhDRCwweEZCLDB4NjIsMHg2MiwKLSAgICAweDI0LDB4NDEsMHhDMiwweDM4LDB4
M0YsMHgyNywweEI3LDB4MkYsMHg2NCwweDUxLDB4MDMsMHg0MSwweEEwLDB4MEYsMHgwMSwweDgz
LAotICAgIDB4QzUsMHg1OSwweDIzLDB4NDksMHgyRCwweEZGLDB4N0EsMHg2QSwweDg1LDB4NTEs
MHhFMywweDM4LDB4NzgsMHg1QSwweEZCLDB4RkUsCi0gICAgMHgyNCwweDQxLDB4RTIsMHgzOCww
eDMyLDB4RjUsMHhCNSwweEFBLDB4NjUsMHg0OSwweEUzLDB4MzgsMHhBMiwweEEzLDB4RkYsMHg1
NSwKLSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4RjMsMHg1RiwweERELDB4MzksMHg2NCwweDQ5
LDB4RTMsMHgzOCwweEJFLDB4RkYsMHg3QSwweDYwLAotICAgIDB4MjQsMHg0OSwweEEyLDB4MzAs
MHgwMCwweEFCLDB4QjcsMHhBNywweEM1LDB4NTksMHg0NCwweDQ5LDB4RUQsMHhBRCwweEFCLDB4
MDksCi0gICAgMHg4NCwweDUxLDB4MDIsMHg0MSwweEVBLDB4RTgsMHg3QSwweDdDLDB4ODUsMHg1
MSwweEUyLDB4MzgsMHgyRiwweDJGLDB4QkYsMHhBRCwKLSAgICAweDI2LDB4NzIsMHg4NSwweDU5
LDB4OTUsMHhENSwweEFCLDB4MDMsMHgwNiwweDZBLDB4QzUsMHg2OSwweDJCLDB4OEQsMHhFMiww
eDYwLAotICAgIDB4QTgsMHg4MiwweEM1LDB4NjEsMHgwMiwweDgyLDB4RkQsMHg1NSwweEE4LDB4
ODIsMHhDNSwweDY5LDB4MDgsMHg4QSwweEFGLDB4QUQsCi0gICAgMHg4OCwweDdBLDB4QTUsMHg2
MSwweEU4LDB4RkUsMHhGQSwweDdFLDB4MDYsMHg2QSwweDQzLDB4NTEsMHhGRSwweEE4LDB4ODAs
MHg4MiwKLSAgICAweEM2LDB4NTksMHg2NCwweDUxLDB4QkQsMHhBQSwweDgwLDB4NjgsMHhFNiww
eDYxLDB4ODUsMHg1MSwweEFBLDB4QkEsMHhGMCwweEZELAotICAgIDB4MDYsMHg2QSwweDg0LDB4
NTEsMHgyQSwweDJGLDB4MzUsMHhCNSwweDRCLDB4OTMsMHhFNSwweDYxLDB4MkIsMHhBRiwweEJE
LDB4RDUsCi0gICAgMHg3MiwweEQ1LDB4QTgsMHg4MiwweDJGLDB4QjUsMHhENSwweDU1LDB4RjQs
MHhFNSwweENDLDB4QTMsMHgwMCwweDAyLDB4MEIsMHgyOSwKLSAgICAweEY0LDB4RTUsMHhCMyww
eERELDB4RjAsMHhEMCwweDc4LDB4QkIsMHhEMywweERELDB4NzIsMHhENSwweDIwLDB4MjgsMHhB
MCwweDc4LAotICAgIDB4MTQsMHhFNiwweDkzLDB4RDUsMHg4MiwweDJBLDB4QUYsMHhCNSwweDM1
LDB4RTYsMHhEMywweERELDB4REYsMHhCNywweDM3LDB4MkYsCi0gICAgMHg1NSwweEVFLDB4QjMs
MHhERCwweDgyLDB4ODAsMHhBOCwweDdBLDB4MzUsMHhFNiwweEQzLDB4REQsMHhGNywweEJFLDB4
MDAsMHgwMywKLSAgICAweDM1LDB4RTYsMHhGNCwweERELDB4QjUsMHhGRSwweEJFLDB4QzAsMHgz
NSwweEU2LDB4RDMsMHhERCwweDdBLDB4RkEsMHg4QSwweDIwLAotICAgIDB4OTYsMHhFRSwweEY0
LDB4REQsMHgyRCwweDI1LDB4MkYsMHgyRiwweEI3LDB4RjYsMHg5NiwweEVFLDB4RjcsMHhGRiww
eDVGLDB4REYsCi0gICAgMHg5NiwweEVFLDB4NzYsMHhFRSwweEYwLDB4RjAsMHhFOCwweEEwLDB4
NzUsMHhFRSwweEIzLDB4RDUsMHhFOCwweDdDLDB4NzgsMHg2MCwKLSAgICAweEQzLDB4REQsMHg5
MiwweEQ1LDB4QTgsMHg3RSwweEVGLDB4NkEsMHhCMywweEQ1LDB4NTIsMHhENSwweDAyLDB4QTIs
MHhFQSwweEFBLAotICAgIDB4QjMsMHhENSwweDcyLDB4RDUsMHgwMCwweDhBLDB4RkYsMHg1Riww
eDkyLDB4RDUsMHg1MSwweENELDB4MDAsMHhBQywweDdFLDB4QjcsCi0gICAgMHg2NywweDdBLDB4
RTUsMHg2OSwweDgwLDB4MjIsMHgyMiwweDNELDB4NjcsMHg3QSwweDQ3LDB4NzIsMHhFOCwweDIy
LDB4M0YsMHg0RCwKLSAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4RUYsMHhBNywweEJGLDB4REYs
MHg0NywweDdBLDB4NjYsMHg3MiwweDdELDB4RjcsMHg1NiwweDc3LAotICAgIDB4ODcsMHg4Miww
eDY2LDB4NzIsMHg1RCwweDVELDB4RDcsMHhEQSwweDg3LDB4N0EsMHg0NiwweDcyLDB4RUEsMHhB
RiwweDNFLDB4RkUsCi0gICAgMHg4NiwweDdBLDB4NjYsMHg3MiwweDdFLDB4RUQsMHhDQiwweEEx
LDB4ODYsMHg3QSwweDQ2LDB4NzIsMHhCRCwweEFBLDB4QUEsMHgyQSwKLSAgICAweDg2LDB4N0Es
MHg2NiwweDcyLDB4N0QsMHg3OSwweEYwLDB4QjQsMHg4NywweDdBLDB4NDYsMHg3MiwweEVBLDB4
RjAsMHhFQSwweEY4LAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhGQiwweEZFLDB4QjIsMHgy
QiwweDg3LDB4N0EsMHg0NiwweDcyLDB4QUUsMHhDRSwweEJFLDB4QkUsCi0gICAgMHhBNywweDgy
LDB4NDYsMHg3MiwweEZFLDB4QkYsMHg5RiwweDJBLDB4QTcsMHg4MiwweDY2LDB4N0EsMHg3NSww
eDU3LDB4QkYsMHhGRiwKLSAgICAweDg3LDB4N0EsMHg0NSwweDdBLDB4QUYsMHgyQiwweDIwLDB4
QTAsMHhFQywweEFCLDB4ODcsMHg3QSwweDk1LDB4QjUsMHgyRCwweDBELAotICAgIDB4Q0IsMHhB
MywweEU1LDB4NjksMHg3RSwweDdDLDB4NzgsMHg3OCwweEE1LDB4NTksMHhFMiwweDM4LDB4NUMs
MHg1OCwweDU4LDB4RjgsCi0gICAgMHhFMywweDM4LDB4QTIsMHgyOCwweDdELDB4NUIsMHhGRSww
eEY4LDB4RTMsMHgzMCwweEEyLDB4MjgsMHhCRiwweDhCLDB4QUEsMHhGRCwKLSAgICAweEUzLDB4
MzAsMHhBMiwweDI4LDB4QkUsMHhGOCwweEY4LDB4RkUsMHhFMiwweDMwLDB4ODEsMHgyOCwweEZB
LDB4RkYsMHgzRSwweDJELAotICAgIDB4NDQsMHg0MSwweEEyLDB4MjgsMHhCRCwweDJGLDB4MkIs
MHgwMiwweDg1LDB4NDksMHhFMywweDM4LDB4NjMsMHg3RSwweDVGLDB4NTcsCi0gICAgMHg4NSww
eDUxLDB4RTMsMHgzOCwweDI1LDB4MkQsMHgwRiwweEFELDB4ODUsMHg1MSwweEUyLDB4MzgsMHhB
QSwweEI4LDB4RjgsMHg3QSwKLSAgICAweDg1LDB4NTEsMHhFMiwweDM4LDB4ODAsMHhGQSwweDU1
LDB4NTUsMHgyNCwweDM5LDB4QzIsMHgzOCwweEJFLDB4RDQsMHhCQiwweDVGLAotICAgIDB4NDQs
MHg0MSwweEUzLDB4MzgsMHgwQiwweENGLDB4RDUsMHg1RiwweDQ0LDB4NDksMHhFMiwweDM4LDB4
NUMsMHhEQSwweEU5LDB4OTcsCi0gICAgMHg4NSwweDQ5LDB4MDMsMHg0MSwweDNELDB4QjUsMHhE
RiwweDVGLDB4ODUsMHg1MSwweEUzLDB4MzgsMHg1OCwweEZFLDB4QUEsMHhBQSwKLSAgICAweDQ1
LDB4NDksMHhDMywweDM4LDB4RjUsMHhGRiwweEVFLDB4MDgsMHhBNSwweDUxLDB4MDMsMHgzOSww
eDI5LDB4QkQsMHhGRCwweEJFLAotICAgIDB4ODUsMHg1MSwweDAzLDB4NDEsMHg3OCwweEZBLDB4
RkEsMHhBQSwweEU1LDB4NjEsMHgwMywweDQxLDB4QkQsMHhBRCwweDJGLDB4MkIsCi0gICAgMHg0
NywweDcyLDB4QTQsMHg1OSwweDBELDB4QkYsMHhGQiwweDdGLDB4MjYsMHg2QSwweDY0LDB4NTEs
MHhGOCwweDdDLDB4N0YsMHhGNSwKLSAgICAweEM2LDB4NjEsMHg0MywweDUxLDB4OEEsMHhBRCww
eDg1LDB4MkUsMHgwNiwweDZBLDB4ODUsMHg1OSwweEFGLDB4Q0QsMHg4RiwweDAyLAotICAgIDB4
RTYsMHg2OSwweDY0LDB4NTEsMHhDMCwweEUyLDB4RjcsMHhERCwweEE1LDB4NTksMHg0NCwweDQ5
LDB4MEIsMHg3NywweERGLDB4RkIsCi0gICAgMHhBNSwweDU5LDB4NDQsMHg0OSwweEYyLDB4N0Ys
MHhGRCwweDU1LDB4QzYsMHg1OSwweDQ0LDB4NDksMHhCRCwweDM1LDB4MzUsMHhCQiwKLSAgICAw
eEU2LDB4NTksMHg4NSwweDU5LDB4RjYsMHhDMCwweDgwLDB4QjIsMHhFNiwweDYxLDB4QTUsMHg1
OSwweEUyLDB4RjUsMHhERiwweEY5LAotICAgIDB4QzksMHg4MiwweEE1LDB4NTksMHgyQiwweEFE
LDB4QjcsMHhBRiwweDEwLDB4Q0QsMHhBOCwweDgyLDB4MEIsMHgyRCwweEJELDB4RjUsCi0gICAg
MHhEMywweERELDB4NEUsMHhCNCwweDAwLDB4MDAsMHgwMywweDJELDB4QjMsMHhERCwweDcyLDB4
RDUsMHhEQywweDU3LDB4OTYsMHhGRSwKLSAgICAweEY0LDB4REQsMHg3MiwweEQ1LDB4MkQsMHhB
QiwweDJCLDB4MkIsMHgzNSwweEU2LDB4RDMsMHhERCwweDhCLDB4N0EsMHg1NSwweEJGLAotICAg
IDB4RjQsMHhERCwweDEwLDB4QzUsMHhBMCwweEUwLDB4RTAsMHg3MCwweDE0LDB4RTYsMHgxMCww
eEM1LDB4MDIsMHgwMiwweDBCLDB4MkQsCi0gICAgMHg3NiwweEVFLDB4MTQsMHhFNiwweEU5LDB4
MkEsMHhBQSwweEZBLDB4NTUsMHhFRSwweDE0LDB4RTYsMHhFQSwweEY4LDB4RkUsMHg3RiwKLSAg
ICAweEI3LDB4RjYsMHgxNCwweEU2LDB4QkQsMHgyNSwweDI1LDB4MkQsMHhCNywweEY2LDB4NzYs
MHhFRSwweEY4LDB4QkEsMHhGQSwweDVFLAotICAgIDB4OTYsMHhFRSwweDU1LDB4RUUsMHgyMCww
eENBLDB4QkEsMHhGRCwweDc2LDB4RUUsMHhGNCwweERELDB4NjAsMHg4MCwweEEwLDB4QTIsCi0g
ICAgMHg1NSwweEVFLDB4QjMsMHhENSwweDU3LDB4NUYsMHg3OCwweDc4LDB4QjIsMHhENSwweDcz
LDB4Q0QsMHhCQSwweEZFLDB4RUEsMHgzMiwKLSAgICAweDkyLDB4RDUsMHg3MiwweENELDB4Rjgs
MHhFQywweDY4LDB4RkEsMHg5MiwweEQ1LDB4MzEsMHhDNSwweEZGLDB4RkUsMHg3QSwweDcyLAot
ICAgIDB4QzQsMHg2MSwweDQyLDB4NTksMHgzRiwweEZGLDB4QkYsMHhGRiwweDY2LDB4NzIsMHg2
NCwweDU5LDB4MEEsMHhCRCwweEQ1LDB4NTUsCi0gICAgMHg4NiwweDdBLDB4NDQsMHg1OSwweDgy
LDB4MjIsMHhBRiwweEY1LDB4ODcsMHg3QSwweEM0LDB4NjEsMHgwQSwweDgwLDB4QUEsMHhBRCwK
LSAgICAweDg2LDB4N0EsMHgyNiwweDcyLDB4MjgsMHhBQSwweEFBLDB4QTksMHg4NywweDdBLDB4
MjUsMHg3MiwweEFBLDB4QTIsMHhBQSwweDhCLAotICAgIDB4ODcsMHg3QSwweDY2LDB4NzIsMHhB
MSwweDBELDB4QkIsMHg2MywweDg2LDB4N0EsMHg2NiwweDcyLDB4MjcsMHhDMCwweEI4LDB4MkMs
Ci0gICAgMHg4NywweDdBLDB4NjYsMHg3MiwweEJCLDB4MjgsMHgwMiwweEFDLDB4ODYsMHg3QSww
eDQ2LDB4NzIsMHhCOCwweEMwLDB4MDgsMHhCOCwKLSAgICAweDg3LDB4N0EsMHgyNSwweDdBLDB4
QTIsMHhBMiwweEMyLDB4MjIsMHhBNywweDdBLDB4NDYsMHg3QSwweDdBLDB4QkYsMHhCQiwweDJF
LAotICAgIDB4ODcsMHg3QSwweDY2LDB4N0EsMHgzMiwweDA4LDB4QjAsMHhEMywweEE3LDB4ODIs
MHg2NiwweDdBLDB4NjcsMHhCRSwweEJGLDB4QUUsCi0gICAgMHg2QSwweDlCLDB4ODcsMHg3QSww
eDU1LDB4RDUsMHhENSwweDE1LDB4MkUsMHhCNCwweDA4LDB4OEIsMHgyRCwweDg5LDB4ODMsMHgy
MiwKLSAgICAweDhBLDB4OUIsMHgwNSwweDZBLDB4NzgsMHg1OCwweDVDLDB4N0MsMHhFNiwweDYx
LDB4MDIsMHg0MSwweEZBLDB4NzgsMHg3OCwweDc4LAotICAgIDB4MjMsMHg0MSwweEEyLDB4Mjgs
MHg3OCwweDdBLDB4RkEsMHg2QSwweEMyLDB4MzAsMHhBMiwweDI4LDB4OUIsMHgzRSwweDU3LDB4
N0QsCi0gICAgMHhDMiwweDI4LDB4ODEsMHgyOCwweEY4LDB4RUEsMHhCNiwweEJCLDB4RTMsMHgz
OCwweDgyLDB4MjgsMHgzNywweEFGLDB4QUYsMHhBRiwKLSAgICAweDI0LDB4NDEsMHhBMiwweDMw
LDB4ODAsMHhBQSwweEZGLDB4RDcsMHg0NCwweDQxLDB4QzIsMHgzMCwweEY3LDB4RkQsMHg4Qiww
eEM5LAotICAgIDB4MjQsMHg0MSwweEMyLDB4MzgsMHgyQiwweEE5LDB4RUYsMHgyQiwweDQ0LDB4
NDksMHhDMiwweDM4LDB4NjgsMHhGRSwweEY3LDB4QkUsCi0gICAgMHgyNCwweDQxLDB4QzIsMHgz
MCwweEU1LDB4QjcsMHhBNywweDBDLDB4MDQsMHg0MSwweEEyLDB4MzAsMHhGOCwweEMwLDB4MDAs
MHhBOCwKLSAgICAweEUzLDB4MzAsMHg4MiwweDMwLDB4QTMsMHhFRiwweERGLDB4QkUsMHgyMyww
eDQxLDB4QzIsMHgzOCwweDJCLDB4MjksMHhBQiwweDJBLAotICAgIDB4NDQsMHg0MSwweDAzLDB4
NDEsMHhFQiwweDcyLDB4ODIsMHgwQSwweDQ0LDB4NDksMHhFMywweDM4LDB4MEEsMHg4MywweEFF
LDB4N0YsCi0gICAgMHg4NiwweDQ5LDB4MDMsMHg0MSwweEFGLDB4MjcsMHgyRCwweEZELDB4ODUs
MHg1MSwweDAzLDB4NDEsMHhFMCwweEY4LDB4REMsMHg1RiwKLSAgICAweDg1LDB4NTEsMHgyNCww
eDQxLDB4OEQsMHhFRiwweEVCLDB4N0YsMHgwNiwweDYyLDB4MDQsMHg0MSwweDJGLDB4M0YsMHhC
NSwweEY1LAotICAgIDB4RTUsMHg2MSwweDQ0LDB4NDksMHhFOCwweEVFLDB4REYsMHg1NywweEE1
LDB4NTksMHgyMywweDQ5LDB4MEEsMHgyOCwweEJGLDB4OTUsCi0gICAgMHhFNiwweDYxLDB4ODUs
MHg1OSwweDNGLDB4QkEsMHhBQSwweDdGLDB4MjcsMHg3MiwweEE1LDB4NTksMHhFMCwweDhCLDB4
QUYsMHhERCwKLSAgICAweEU2LDB4NjEsMHgwMywweDQxLDB4RkUsMHg1RSwweEY4LDB4QTIsMHg4
NSwweDUxLDB4MjMsMHg0OSwweDg4LDB4ODMsMHgzNSwweEZFLAotICAgIDB4NjQsMHg0OSwweDQ0
LDB4NDksMHhBOCwweDgxLDB4ODMsMHgzRCwweEM2LDB4NTksMHg2NCwweDQ5LDB4RjksMHhFMiww
eDAxLDB4NUYsCi0gICAgMHhBNSwweDU5LDB4NDQsMHg0OSwweDg4LDB4RkEsMHg5QSwweDVFLDB4
RTUsMHg2MSwweDQzLDB4NDksMHg4MywweEFELDB4RkYsMHhFRCwKLSAgICAweDY3LDB4NzIsMHhD
NSwweDU5LDB4MDksMHgwQiwweDJELDB4MjUsMHgyOSwweDhCLDB4ODcsMHg3QSwweDJCLDB4QUYs
MHhGRCwweEZELAotICAgIDB4MTEsMHhDRCwweEM4LDB4ODIsMHgwQiwweDI1LDB4QkQsMHhENSww
eDE0LDB4RTYsMHhEMCwweEM0LDB4QUEsMHhBMiwweDBBLDB4MDksCi0gICAgMHg1NiwweEVFLDB4
QjMsMHhENSwweEFELDB4QUYsMHhBQSwweDBBLDB4NTUsMHhFRSwweEYzLDB4REQsMHhERiwweEJG
LDB4Q0EsMHhBMCwKLSAgICAweDE0LDB4RTYsMHhGMCwweEM0LDB4NTgsMHg1OCwweERDLDB4RkUs
MHgxNCwweEU2LDB4RjAsMHhDNCwweDJELDB4MkYsMHgzRiwweDNGLAotICAgIDB4NzYsMHhFRSww
eDE0LDB4RTYsMHhGOCwweDZBLDB4RkEsMHhFQSwweDk2LDB4RUUsMHgxNCwweEU2LDB4RDcsMHhE
NSwweEJELDB4MkYsCi0gICAgMHg5NiwweEVFLDB4MzUsMHhFNiwweDA5LDB4MEEsMHgwMiwweEEw
LDB4OTYsMHhFRSwweDU1LDB4RTYsMHhGOCwweDVFLDB4REUsMHg1RiwKLSAgICAweDc1LDB4RUUs
MHg1NSwweEU2LDB4RUYsMHhCRiwweEJFLDB4NUUsMHg3NSwweEVFLDB4NTUsMHhFNiwweENCLDB4
RUIsMHhGQSwweEJELAotICAgIDB4NzYsMHhFRSwweEQzLDB4REQsMHg3QSwweEFBLDB4QTAsMHhB
MCwweDU1LDB4RUUsMHg5MiwweEQ1LDB4NTcsMHg1RSwweEU4LDB4ODAsCi0gICAgMHgxNCwweEU2
LDB4OTIsMHhENSwweDc1LDB4NTUsMHg1RiwweDdDLDB4QjIsMHhENSwweDUxLDB4Q0QsMHhERSww
eERFLDB4RjgsMHhFQSwKLSAgICAweDg0LDB4NjEsMHg0MywweDU5LDB4QkIsMHhGQSwweEJFLDB4
N0EsMHg4NCwweDYxLDB4NDMsMHg1OSwweENBLDB4NjYsMHg4RiwweEVELAotICAgIDB4NDMsMHg2
MSwweDg0LDB4NTksMHhERSwweERELDB4RkYsMHhGQSwweEM0LDB4NjEsMHg2MywweDU5LDB4MzUs
MHhCRCwweEY1LDB4N0QsCi0gICAgMHg0NiwweDcyLDB4NDMsMHg1MSwweDAyLDB4RkYsMHhENSww
eDU1LDB4NjYsMHg3MiwweDQzLDB4NTEsMHgwMCwweDBBLDB4QkYsMHg1NSwKLSAgICAweEM3LDB4
N0EsMHhBNSwweDYxLDB4QTgsMHhBQSwweEFBLDB4RjUsMHg4NywweDdBLDB4NDYsMHg3MiwweEEw
LDB4QzIsMHg4MCwweDg5LAotICAgIDB4ODcsMHg3QSwweDY2LDB4N0EsMHhCRSwweEFFLDB4QTYs
MHhBRCwweDg3LDB4N0EsMHg2NiwweDdBLDB4OUUsMHhCRSwweEFGLDB4NDcsCi0gICAgMHg4Nyww
eDdBLDB4NjYsMHg3QSwweEFFLDB4NjgsMHg4RiwweEEwLDB4QTgsMHg4MiwweDY3LDB4N0EsMHhG
QiwweEFGLDB4QUYsMHhCQiwKLSAgICAweEE3LDB4ODIsMHg2NywweDdBLDB4RkQsMHhGQiwweEVB
LDB4QkYsMHhBNywweDgyLDB4NjcsMHg3QSwweEFFLDB4RUYsMHhFRiwweEVFLAotICAgIDB4Q0Is
MHhBMywweDg3LDB4ODIsMHgzNSwweDJELDB4MDksMHgwMywweDBELDB4QUMsMHhDQywweEFCLDB4
RkEsMHg1RCwweEY2LDB4NTUsCi0gICAgMHhBQSwweEEzLDB4QTQsMHg1OSwweDdDLDB4NzgsMHg3
OCwweDcwLDB4QTUsMHg1OSwweDAyLDB4NDEsMHg3OCwweEZBLDB4RkEsMHg2QSwKLSAgICAweDAy
LDB4NDEsMHhDMiwweDMwLDB4N0EsMHg1QSwweDVBLDB4NzgsMHhDMiwweDMwLDB4ODIsMHgyOCww
eEFCLDB4QUYsMHgwMiwweDA4LAotICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHhENSwweEI1LDB4
QUEsMHhBOCwweDQ0LDB4NDEsMHhBMiwweDI4LDB4REQsMHhGRCwweEFGLDB4MDMsCi0gICAgMHgy
MywweDQxLDB4QTEsMHgzMCwweEQ3LDB4RUYsMHgyQSwweDAwLDB4MjQsMHg0MSwweEUzLDB4Mzgs
MHhBRiwweDBBLDB4MDAsMHgyMiwKLSAgICAweDI0LDB4NDEsMHhFMywweDM4LDB4MEIsMHgwQSww
eDAyLDB4ODAsMHg0NCwweDQxLDB4RTMsMHgzOCwweEJBLDB4NjAsMHg1RiwweEQ3LAotICAgIDB4
NjQsMHg0OSwweDI0LDB4NDEsMHg2NiwweENCLDB4NDEsMHg0RCwweDQ0LDB4NDEsMHhDMywweDM4
LDB4NzcsMHg3NywweEJGLDB4QTAsCi0gICAgMHgyMywweDQxLDB4QTIsMHgzMCwweEI1LDB4QkYs
MHhBQSwweDAwLDB4NjUsMHg0OSwweEUzLDB4MzgsMHhBRiwweDBBLDB4MkQsMHhCNSwKLSAgICAw
eDIzLDB4NDEsMHhFMywweDM4LDB4QTgsMHhBOCwweENDLDB4NzIsMHgyNCwweDQxLDB4RTMsMHgz
OCwweEZGLDB4MkYsMHgyRiwweDNELAotICAgIDB4MjQsMHg0MSwweEUzLDB4MzgsMHg4QiwweEY3
LDB4QkEsMHhFMCwweDY0LDB4NDksMHgwMywweDQxLDB4NUQsMHhGRCwweEJELDB4MDMsCi0gICAg
MHg2NSwweDUxLDB4MDMsMHg0MSwweERGLDB4RTksMHhFRiwweEU4LDB4NDQsMHg0OSwweEUzLDB4
NDAsMHgyNywweEVGLDB4QUIsMHgyRSwKLSAgICAweDIzLDB4NDksMHhFMywweDQwLDB4ODAsMHhF
MiwweDUwLDB4RjgsMHg4NSwweDUxLDB4RTIsMHg0MCwweEE3LDB4QjcsMHhCRCwweEI1LAotICAg
IDB4QTUsMHg1OSwweDQ0LDB4NDksMHgwMiwweEFBLDB4RUEsMHg3QSwweEE1LDB4NTksMHgwMyww
eDQxLDB4QTIsMHhFQSwweDc3LDB4RDUsCi0gICAgMHhBNSwweDU5LDB4MDMsMHgzOSwweDgyLDB4
QUUsMHhGRiwweEQ1LDB4NjQsMHg0OSwweDAzLDB4NDEsMHgyQSwweDJDLDB4MzYsMHg5RCwKLSAg
ICAweDY0LDB4NDksMHgyNCwweDQxLDB4MkUsMHhCNywweERCLDB4RTgsMHg4NSwweDQ5LDB4MjMs
MHg0MSwweDAyLDB4QUUsMHhCRiwweDc3LAotICAgIDB4NjQsMHg0OSwweDAzLDB4NDEsMHhFOCww
eEU4LDB4REYsMHg3RiwweDg0LDB4NTEsMHgyMywweDQxLDB4MjUsMHgyNSwweEJELDB4MjksCi0g
ICAgMHg0NywweDcyLDB4QTQsMHg1MSwweEFELDB4QTUsMHhBRiwweDJELDB4ODcsMHg3QSwweEM2
LDB4NjEsMHgwQiwweEI1LDB4QkYsMHhCQSwKLSAgICAweEU4LDB4ODIsMHg2NywweDdBLDB4MjIs
MHg4QSwweEE5LDB4QTksMHhEMywweERELDB4MDksMHg4QiwweDA5LDB4MEQsMHgyRCwweDM1LAot
ICAgIDB4NTUsMHhFRSwweEY0LDB4RTUsMHgyRCwweDBELDB4QTIsMHhGRiwweDM1LDB4RUUsMHg5
MiwweEQ1LDB4MDAsMHhFMCwweDc4LDB4N0YsCi0gICAgMHg5MiwweEQ1LDB4RjAsMHhDNCwweERD
LDB4RkUsMHhGNywweEZGLDB4RDMsMHhERCwweDEwLDB4QzUsMHgzNSwweEJELDB4QkYsMHhCRCwK
LSAgICAweDc2LDB4RUUsMHhENCwweERELDB4MjIsMHgyMywweDBCLDB4MDksMHhCNywweEY2LDB4
NzYsMHhFRSwweEI1LDB4QUYsMHhCRiwweEFCLAotICAgIDB4OTYsMHhFRSwweDc2LDB4RUUsMHg3
QywweDU4LDB4NUMsMHg3RSwweDc1LDB4RUUsMHg1NSwweEU2LDB4QkUsMHhGMCwweEZCLDB4RkUs
Ci0gICAgMHg3NSwweEVFLDB4NTUsMHhFNiwweEZDLDB4NUYsMHhGRCwweDU3LDB4NzUsMHhFRSww
eDM0LDB4RTYsMHgwRiwweEFFLDB4QUUsMHhGQSwKLSAgICAweDc2LDB4RUUsMHg1NSwweEU2LDB4
N0UsMHg1QSwweEZGLDB4RUIsMHg3NiwweEVFLDB4NTUsMHhFNiwweDc3LDB4N0YsMHg1RCwweDA4
LAotICAgIDB4NzYsMHhFRSwweDE0LDB4RTYsMHg1NywweEJFLDB4QUUsMHgwMCwweDU2LDB4RUUs
MHhCMywweEQ1LDB4NTcsMHhCQSwweDgwLDB4MDAsCi0gICAgMHg2MywweDU5LDB4MjMsMHg1MSww
eEUyLDB4M0IsMHgzQSwweDNDLDB4ODQsMHg2MSwweDQzLDB4NTksMHhCRSwweERCLDB4RTgsMHg2
QSwKLSAgICAweDg0LDB4NTksMHg0MywweDU5LDB4RkEsMHhFQSwweDBBLDB4ODMsMHg4NCwweDYx
LDB4MjIsMHg1MSwweEUwLDB4N0EsMHhERSwweEJCLAotICAgIDB4NDMsMHg1MSwweDIyLDB4NTEs
MHg0QiwweDhDLDB4NkMsMHgxQSwweDY0LDB4NTksMHgwMiwweDQ5LDB4RkYsMHg5NywweEFGLDB4
QTIsCi0gICAgMHg4NCwweDYxLDB4MjMsMHg1MSwweEFELDB4QjcsMHgyNywweDJCLDB4MjYsMHg3
MiwweDg0LDB4NTksMHgwQSwweEQ1LDB4NTUsMHg1NSwKLSAgICAweDY2LDB4N0EsMHg4NCwweDYx
LDB4MDAsMHgwQiwweEQ1LDB4NTUsMHg2NywweDdBLDB4ODQsMHg2MSwweDAwLDB4MDAsMHgwMiww
eEI1LAotICAgIDB4QTcsMHg4MiwweDQ3LDB4N0EsMHhBQSwweDJBLDB4QkIsMHhCRCwweEE3LDB4
ODIsMHg2NywweDdBLDB4RUIsMHhBRiwweEI3LDB4QkIsCi0gICAgMHhBNywweDgyLDB4ODcsMHg3
QSwweEZBLDB4RjMsMHgxRiwweEY1LDB4QUIsMHhBMywweDg3LDB4ODIsMHhENSwweDk1LDB4M0Qs
MHgyRCwKLSAgICAweEVDLDB4QUIsMHg4QSwweDlCLDB4QTksMHhFMywweEZBLDB4RkEsMHhDQiww
eEEzLDB4QUIsMHhBMywweDBELDB4RkEsMHhGRCwweEZELAotICAgIDB4QUIsMHhBMywweDA1LDB4
NkEsMHg3MCwweDc4LDB4NzAsMHhFMCwweEM1LDB4NTksMHhFMiwweDQwLDB4RkUsMHhERSwweDc4
LDB4NzgsCi0gICAgMHg0NCwweDQxLDB4QzIsMHgzOCwweDVBLDB4NzIsMHhGQiwweDVGLDB4RTMs
MHgzOCwweEEyLDB4MzAsMHhFRiwweENELDB4RkQsMHhBQSwKLSAgICAweDAzLDB4MzksMHhBMiww
eDMwLDB4QUYsMHhBRiwweDI1LDB4MEUsMHg2NCwweDQ5LDB4MDMsMHg0MSwweEE3LDB4QUYsMHg4
QiwweDBCLAotICAgIDB4NjUsMHg0OSwweDAzLDB4NDEsMHhGRSwweDdBLDB4QUEsMHgyQSwweDY1
LDB4NDksMHgwMywweDQxLDB4RkYsMHhGQiwweEY4LDB4REMsCi0gICAgMHgyNCwweDQxLDB4RTMs
MHgzOCwweDQwLDB4RjcsMHg5QywweEEwLDB4ODUsMHg1MSwweEUzLDB4MzgsMHhERCwweEFELDB4
QzIsMHgwMiwKLSAgICAweDg1LDB4NTEsMHgwMywweDQxLDB4RTcsMHhCNywweEZGLDB4MkYsMHg4
NSwweDUxLDB4MjQsMHg0OSwweEZCLDB4N0IsMHhDMiwweDAwLAotICAgIDB4ODQsMHg1MSwweDI0
LDB4NDksMHg3RSwweEE5LDB4MkQsMHgyRSwweDY1LDB4NDksMHhFMywweDM4LDB4QjUsMHhCNyww
eEZFLDB4NUMsCi0gICAgMHgyMywweDQxLDB4RTMsMHgzOCwweEUwLDB4RTAsMHhGQiwweERELDB4
MjQsMHg0MSwweEUzLDB4MzgsMHgyRiwweDI2LDB4RUYsMHhGRSwKLSAgICAweDI0LDB4NDEsMHhF
MywweDM4LDB4RjgsMHg5RSwweEZBLDB4RkEsMHhBNSwweDUxLDB4MDMsMHg0MSwweDI5LDB4MDks
MHgwRCwweDJELAotICAgIDB4ODUsMHg1MSwweEUyLDB4MzgsMHg3OCwweEZBLDB4RjgsMHhGQSww
eDY1LDB4NTEsMHhFMywweDM4LDB4QUYsMHgwRiwweEJGLDB4RkQsCi0gICAgMHg4NSwweDU5LDB4
MDMsMHg0MSwweDdFLDB4RkUsMHhCRiwweDJCLDB4NjQsMHg0OSwweDAzLDB4NDEsMHgyRCwweDJF
LDB4MzAsMHgyQywKLSAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4NTgsMHg3QSwweEUyLDB4RjMs
MHg0NCwweDQ5LDB4MDMsMHg0MSwweEUyLDB4MDAsMHgzNywweDFCLAotICAgIDB4NDMsMHg0MSww
eEUzLDB4MzgsMHhGQSwweEZCLDB4RUEsMHhFRSwweDIzLDB4NDEsMHhDMiwweDM4LDB4MkEsMHhC
RiwweDI5LDB4MkIsCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweEEyLDB4RUIsMHhENSwweDVE
LDB4NDQsMHg0OSwweEUyLDB4MzgsMHgyOCwweEZBLDB4REYsMHhERiwKLSAgICAweDQ0LDB4NDEs
MHgwMywweDQxLDB4QUUsMHgxRiwweDJCLDB4QUYsMHhBNSwweDUxLDB4NDQsMHg0OSwweDNELDB4
MEIsMHgyRiwweEVELAotICAgIDB4NDcsMHg2QSwweEE1LDB4NTksMHgyQiwweDJELDB4OTUsMHhG
RCwweEM4LDB4ODIsMHgwNiwweDYyLDB4RkYsMHhBQSwweDAzLDB4QTUsCi0gICAgMHhDOCwweDgy
LDB4NjcsMHg3QSwweDI3LDB4M0YsMHg5NiwweDVGLDB4NEQsMHhBQywweEU4LDB4ODIsMHgzNSww
eEI1LDB4RDUsMHg1NSwKLSAgICAweEY0LDB4RTUsMHg4QiwweDlCLDB4MDAsMHgwMywweDBCLDB4
MDksMHgxNSwweEU2LDB4MTAsMHhDNSwweEU4LDB4NjAsMHg3MCwweDc4LAotICAgIDB4MzEsMHhD
RCwweEYwLDB4QzQsMHhBQSwweEJGLDB4OTUsMHg5NSwweDUxLDB4Q0QsMHgxMCwweEM1LDB4MEEs
MHgyQSwweDNGLDB4M0YsCi0gICAgMHg5NiwweEY2LDB4NzIsMHhDRCwweDJCLDB4MEQsMHgyRCww
eDI1LDB4QjYsMHhGNiwweDc2LDB4RUUsMHhBQiwweEVGLDB4MDIsMHhGQSwKLSAgICAweEI3LDB4
RjYsMHg1NSwweEU2LDB4RUIsMHhCQSwweDgwLDB4N0YsMHhCNywweEY2LDB4MzUsMHhFNiwweEZC
LDB4OEEsMHhBQSwweDU1LAotICAgIDB4QjYsMHhGNiwweDE0LDB4REUsMHhBRSwweDA4LDB4QUEs
MHg1NSwweDk2LDB4RUUsMHg5MiwweENELDB4MDAsMHgwMCwweEEwLDB4NUYsCi0gICAgMHg3Niww
eEVFLDB4RjAsMHhCQywweDAwLDB4MDAsMHhBQSwweDVGLDB4OTYsMHhGNiwweEQwLDB4QkMsMHgw
MCwweDg4LDB4RkUsMHg1NSwKLSAgICAweDc2LDB4RUUsMHg4RiwweEFDLDB4MDAsMHhBQSwweEZG
LDB4RjUsMHgzNiwweEU2LDB4MzIsMHhDNSwweEU4LDB4RkYsMHhGRiwweDdGLAotICAgIDB4ODQs
MHg1OSwweDIzLDB4NTksMHhCNywweEJGLDB4MkIsMHg4QiwweDg0LDB4NTksMHg0NCwweDU5LDB4
RjYsMHhBQSwweEE4LDB4QzIsCi0gICAgMHg4NCwweDU5LDB4MjMsMHg1MSwweDZBLDB4RjgsMHhB
QiwweEZGLDB4ODQsMHg1OSwweDIzLDB4NTEsMHhGMSwweEZELDB4N0YsMHhBRiwKLSAgICAweDYz
LDB4NTksMHgyMywweDUxLDB4NkEsMHg3MiwweERGLDB4NzcsMHg4NCwweDYxLDB4MjMsMHg1MSww
eDdELDB4RjUsMHgyRCwweEFGLAotICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHhBOSwweDhBLDB4
ODgsMHgwOCwweEE0LDB4NjEsMHg2MywweDU5LDB4RkUsMHhCQSwweDJGLDB4QUYsCi0gICAgMHhB
NCwweDYxLDB4NDMsMHg1OSwweEVBLDB4N0MsMHhGRSwweEZGLDB4NjQsMHg1OSwweDQzLDB4NTks
MHgxRSwweDU4LDB4N0UsMHg1NywKLSAgICAweDQ3LDB4N0EsMHgyMywweDUxLDB4MkIsMHhGNSww
eERELDB4NTUsMHg2NywweDdBLDB4MjMsMHg1MSwweDAwLDB4MEEsMHhGNSwweDU1LAotICAgIDB4
ODcsMHg3QSwweDIzLDB4NTEsMHgwMCwweDAwLDB4MEEsMHgzNSwweEVCLDB4QUIsMHhDOCwweDgy
LDB4MkQsMHgwOSwweDgzLDB4QTIsCi0gICAgMHhDQiwweEEzLDB4NkEsMHg5QiwweEE4LDB4REYs
MHg1RiwweERELDB4QUIsMHhBMywweDZBLDB4OUIsMHgyQSwweEVCLDB4RUQsMHhBOSwKLSAgICAw
eEFCLDB4QTMsMHg0NiwweDcyLDB4NjAsMHg3QSwweDZBLDB4RjAsMHg2NiwweDdBLDB4MjMsMHg0
OSwweDdFLDB4N0EsMHg3QSwweEY4LAotICAgIDB4MjMsMHg0OSwweEMyLDB4MzgsMHg1NywweDU3
LDB4N0MsMHhEOCwweDA0LDB4NDEsMHhDMiwweDM4LDB4QUQsMHgyRCwweEJELDB4OUYsCi0gICAg
MHg2NCwweDQ5LDB4RTMsMHgzOCwweEY1LDB4RkYsMHhFRSwweENBLDB4ODQsMHg0OSwweEUyLDB4
MzgsMHgyRCwweEFGLDB4QkYsMHhGNywKLSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4QjAsMHg1
OCwweERFLDB4NUUsMHg0NCwweDQ5LDB4MDMsMHgzOSwweEQ2LDB4N0YsMHg3QSwweEEyLAotICAg
IDB4NDQsMHg0MSwweEUyLDB4NDAsMHhERSwweEJFLDB4OEEsMHhGMiwweEE2LDB4NTEsMHg0Myww
eDQ5LDB4QUIsMHhFQSwweEUzLDB4NzksCi0gICAgMHhDNiwweDU5LDB4NDQsMHg0OSwweEY1LDB4
QUQsMHhFRCwweDhELDB4QTUsMHg1OSwweDQ0LDB4NTEsMHgzRSwweDFGLDB4MTUsMHhGNywKLSAg
ICAweDA2LDB4NkEsMHg4NSwweDUxLDB4NTcsMHg3QSwweEMwLDB4ODMsMHhBNSwweDUxLDB4RTIs
MHgzOCwweDVDLDB4NUEsMHg3QSwweDY4LAotICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHhCRiww
eEFELDB4MkIsMHgyQiwweDIzLDB4NDEsMHhFMywweDM4LDB4REUsMHg3RCwweEFBLDB4ODIsCi0g
ICAgMHgyMywweDQxLDB4RTIsMHgzOCwweEU3LDB4M0IsMHhCQiwweEE4LDB4NjQsMHg1MSwweDAz
LDB4NDEsMHgyOSwweDhGLDB4RDcsMHhERCwKLSAgICAweDY0LDB4NTEsMHgwMywweDQxLDB4NzAs
MHhCQSwweEVBLDB4QUIsMHg2NCwweDQ5LDB4MDMsMHg0OSwweERELDB4MkUsMHgzRSwweDMyLAot
ICAgIDB4QTYsMHg1OSwweDQzLDB4NDksMHhBRiwweDhGLDB4RkIsMHg1NywweDg0LDB4NDksMHgy
MywweDQxLDB4OTcsMHhGRSwweEZCLDB4QUEsCi0gICAgMHg2NCwweDQ5LDB4RTMsMHgzOCwweEVF
LDB4RUMsMHg3QSwweDVBLDB4MjMsMHg0MSwweEMyLDB4MzAsMHg4MCwweDhBLDB4MjYsMHgyQSwK
LSAgICAweDY0LDB4NDksMHhFMiwweDM4LDB4NzcsMHhGRCwweDBFLDB4MkEsMHg2NCwweDQ5LDB4
RTMsMHgzOCwweDI1LDB4QkQsMHhBRSwweEUwLAotICAgIDB4NjQsMHg0MSwweDAzLDB4NDEsMHhB
QSwweEE4LDB4RkUsMHg2NywweDY0LDB4NDksMHgwMywweDM5LDB4RDUsMHhCNywweDJCLDB4MkUs
Ci0gICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweEZELDB4N0YsMHg1NywweDU4LDB4NjQsMHg0OSww
eDAzLDB4NDEsMHhCRSwweEVBLDB4QzAsMHg4MSwKLSAgICAweEU2LDB4NjEsMHg0NCwweDQ5LDB4
MkIsMHhBRCwweDI1LDB4RjUsMHg2NiwweDcyLDB4QzUsMHg1OSwweDBGLDB4QUQsMHhBRiwweEFC
LAotICAgIDB4NjcsMHg3MiwweEU1LDB4NjksMHhFOCwweEVBLDB4RkEsMHhFMiwweEM4LDB4ODIs
MHgyNiwweDZBLDB4MDMsMHgwRCwweEVELDB4QjUsCi0gICAgMHg3MiwweEQ1LDB4QzgsMHg4Miww
eDBELDB4MkQsMHgzNSwweEI1LDB4RDMsMHhERCwweEYwLDB4QzQsMHg3MCwweDU4LDB4NzgsMHg1
RSwKLSAgICAweDEwLDB4QzUsMHhEMCwweEJDLDB4MkUsMHgyRiwweEJGLDB4MTUsMHg1MSwweENE
LDB4MTAsMHhDNSwweEJCLDB4QkYsMHhFRCwweEZELAotICAgIDB4MTQsMHhFNiwweDMxLDB4Q0Qs
MHgzRCwweDM1LDB4QjUsMHhENSwweEY0LDB4REQsMHhBRiwweEJDLDB4MDAsMHhGRSwweDVFLDB4
NTYsCi0gICAgMHhCMywweEQ1LDB4OEYsMHhCNCwweDAwLDB4RkYsMHg3NSwweDU1LDB4NzIsMHhD
RCwweDJELDB4QUMsMHgwMCwweEVBLDB4NzcsMHg1NywKLSAgICAweDUyLDB4Q0QsMHgyRCwweEE0
LDB4MDAsMHhGRiwweDVGLDB4NTUsMHgxMSwweEM1LDB4MkUsMHhBNCwweEEwLDB4RkUsMHg1NSww
eDNELAotICAgIDB4MzIsMHhDNSwweDRFLDB4QUMsMHg3RSwweDU1LDB4QjUsMHgwMCwweEIzLDB4
RDUsMHg4RiwweEFDLDB4QjUsMHgwRCwweDBBLDB4MjIsCi0gICAgMHhCNCwweEQ1LDB4MTEsMHhC
RCwweEJELDB4RTgsMHhGOCwweDVBLDB4NzIsMHhDNSwweDZGLDB4QUMsMHhBOCwweEVBLDB4NUEs
MHg3RSwKLSAgICAweDg0LDB4NTksMHg0MywweDUxLDB4MkUsMHhDRSwweDc3LDB4NkYsMHg2NCww
eDU5LDB4MjMsMHg1MSwweEEwLDB4N0EsMHg3NywweDVGLAotICAgIDB4NjMsMHg1OSwweDIzLDB4
NTEsMHhCRSwweDhGLDB4RUYsMHhGNSwweDIyLDB4NTksMHg2MywweDUxLDB4RkYsMHhFRiwweEJC
LDB4QUIsCi0gICAgMHg2MywweDU5LDB4MjMsMHg1MSwweEZCLDB4QUYsMHgwNywweDBGLDB4ODQs
MHg2MSwweDQzLDB4NTksMHgzOSwweERGLDB4QkUsMHhGRiwKLSAgICAweDg0LDB4NjEsMHg2Myww
eDU5LDB4MEEsMHhBQSwweDlGLDB4QzcsMHhBNCwweDYxLDB4NDMsMHg1OSwweDZBLDB4NkMsMHg1
RiwweEQ3LAotICAgIDB4NjMsMHg1OSwweDIzLDB4NTEsMHgwOCwweEFCLDB4RjgsMHhGQSwweDQz
LDB4NTksMHgyMywweDUxLDB4MEEsMHg4QSwweDgwLDB4NUMsCi0gICAgMHgyMywweDU5LDB4MDIs
MHg0OSwweEQ4LDB4RkEsMHhCRSwweEU3LDB4MjMsMHg1MSwweDAzLDB4NDksMHhDMCwweEM4LDB4
ODgsMHg4QSwKLSAgICAweEFCLDB4QTMsMHg0MywweDU5LDB4OTUsMHgzNSwweDI1LDB4MDksMHhD
QiwweEEzLDB4NEEsMHg5QiwweEMyLDB4RjAsMHg1OCwweDdFLAotICAgIDB4OEIsMHg5QiwweDQ5
LDB4OTMsMHgyOCwweDAyLDB4MEIsMHhFRiwweEFDLDB4QTMsMHg2QSwweDlCLDB4MEUsMHhBRiww
eEZGLDB4RDUsCi0gICAgMHhDQywweEFCLDB4QzcsMHg4MiwweDc4LDB4NTIsMHg1QSwweDVFLDB4
QTcsMHg3QSwweDY0LDB4NTEsMHg3RSwweDU4LDB4NzgsMHg2MCwKLSAgICAweDQ0LDB4NDksMHgw
MywweDQxLDB4NTgsMHhBMCwweDI4LDB4QkUsMHgyMywweDQxLDB4RTMsMHgzOCwweDU3LDB4REMs
MHg5RSwweEY4LAotICAgIDB4ODQsMHg1MSwweDIzLDB4NDEsMHg4OSwweEFCLDB4OEIsMHg4Qiww
eDQ0LDB4NDksMHhFMiwweDM4LDB4RkUsMHg1OCwweEY4LDB4QkEsCi0gICAgMHg0NCwweDQ5LDB4
MDMsMHg0MSwweDcyLDB4RTMsMHg3QiwweDU4LDB4NjUsMHg0OSwweEUzLDB4MzgsMHhFMiwweERB
LDB4RkYsMHg3QSwKLSAgICAweDIzLDB4NDEsMHgwMiwweDQxLDB4RTAsMHhBMCwweERFLDB4MDks
MHhFMywweDQwLDB4MjMsMHgzOSwweEI3LDB4MEIsMHhBQSwweEFELAotICAgIDB4QzYsMHg2MSww
eDAzLDB4NDEsMHgwRCwweDhELDB4MkQsMHgwOSwweEE1LDB4NTksMHgwMywweDQ5LDB4RTgsMHhG
RSwweEY2LDB4NTYsCi0gICAgMHhDNiwweDYxLDB4MjMsMHg0OSwweDBCLDB4M0YsMHhERiwweERE
LDB4ODUsMHg1MSwweEMyLDB4MzgsMHg3OCwweDcwLDB4NjAsMHg2MCwKLSAgICAweDAzLDB4Mzks
MHhBMiwweDMwLDB4MkYsMHgyRCwweEJGLDB4OTcsMHgyMywweDQxLDB4RTMsMHgzOCwweDIyLDB4
MkIsMHhGRiwweDU3LAotICAgIDB4NjQsMHg0OSwweDA0LDB4NDEsMHhGQSwweEFBLDB4ODksMHhB
QiwweDg1LDB4NTEsMHgyMywweDQ5LDB4NTcsMHhFNywweDJCLDB4MEEsCi0gICAgMHhBNSwweDU5
LDB4NDQsMHg0OSwweEVELDB4ODIsMHg4OCwweDhCLDB4ODUsMHg1MSwweDAzLDB4NDEsMHhGQSww
eDU4LDB4RkUsMHhEQywKLSAgICAweDQzLDB4NDksMHhFMiwweDM4LDB4RTAsMHhFQSwweEVBLDB4
RjgsMHg2NCwweDQ5LDB4MDIsMHgzOSwweDBCLDB4QUQsMHhGRCwweEY1LAotICAgIDB4MjMsMHg0
MSwweDAzLDB4MzksMHg2MCwweEMwLDB4RjAsMHhBQSwweDI0LDB4NDEsMHhFMywweDM4LDB4MkIs
MHhGOCwweDc2LDB4NzYsCi0gICAgMHg2NSwweDQ5LDB4RTIsMHgzOCwweDBBLDB4MkIsMHhBRiww
eEJELDB4QTUsMHg1MSwweDIzLDB4NDEsMHg3QSwweEUyLDB4RUYsMHg3RiwKLSAgICAweDQ0LDB4
NDEsMHgwMywweDM5LDB4REYsMHg1NywweEE4LDB4RUEsMHg4NSwweDQ5LDB4MDMsMHgzOSwweDJC
LDB4MjksMHhBRCwweEY3LAotICAgIDB4NjQsMHg0OSwweDI0LDB4NDEsMHgwMCwweDIwLDB4OTQs
MHhBRiwweEE2LDB4NTksMHgyMywweDQxLDB4REQsMHg3QSwweEVBLDB4MkYsCi0gICAgMHg4NCww
eDUxLDB4NDQsMHg0OSwweEVGLDB4RjUsMHhBNywweEY4LDB4NjcsMHg3MiwweDg0LDB4NTEsMHgy
RCwweEI1LDB4NTUsMHg1NSwKLSAgICAweEE4LDB4N0EsMHhBNSwweDU5LDB4QTAsMHhBQSwweEFE
LDB4QjUsMHhDOSwweDgyLDB4MjYsMHg2QSwweEFELDB4QUIsMHgwRiwweEI1LAotICAgIDB4RUMs
MHhBMywweEM4LDB4ODIsMHgxNSwweEI1LDB4OTUsMHhENSwweEIzLDB4REQsMHg4RiwweEI0LDB4
RkEsMHhGMywweEUyLDB4RTksCi0gICAgMHhGMCwweEM0LDB4QUYsMHhCQywweDJFLDB4MkYsMHhB
RiwweDk1LDB4MzEsMHhDRCwweEYwLDB4QzQsMHhBOSwweDBCLDB4MjksMHhGNSwKLSAgICAweDUx
LDB4Q0QsMHhGMCwweEJDLDB4M0EsMHhBQiwweDZBLDB4N0YsMHg3MSwweEQ1LDB4MkQsMHhBQyww
eEY4LDB4NUUsMHg1RiwweDU3LAotICAgIDB4Q0YsMHhCQywweDJELDB4QTQsMHhGRiwweDVGLDB4
RjUsMHgyNSwweDkzLDB4Q0QsMHgyRCwweEE0LDB4NTUsMHg1NSwweEJGLDB4MDIsCi0gICAgMHhC
MywweEQ1LDB4MEQsMHhBNCwweEQ1LDB4MkYsMHgwMiwweDAwLDB4QjQsMHhENSwweDExLDB4QkQs
MHhBOSwweEVDLDB4RkMsMHg1QywKLSAgICAweDczLDB4Q0QsMHhGMCwweEI0LDB4QTAsMHgzRSww
eDNGLDB4MzUsMHg5MywweENELDB4RjEsMHhCQywweDYwLDB4NjAsMHhFMCwweDc4LAotICAgIDB4
MzIsMHhCRCwweEIwLDB4QjQsMHhCMCwweEE1LDB4QTcsMHg2NywweEYxLDB4QkMsMHg4RiwweEFD
LDB4NUEsMHg1QywweEQ3LDB4RjUsCi0gICAgMHg2NCwweDUxLDB4MjMsMHg1MSwweEYwLDB4OTYs
MHhGRiwweEY1LDB4NDMsMHg1MSwweDIzLDB4NTEsMHgzQywweDg0LDB4NzcsMHhCQiwKLSAgICAw
eDY0LDB4NTksMHgyMywweDUxLDB4QjcsMHhFRCwweENFLDB4QUIsMHg2MywweDU5LDB4MjMsMHg1
MSwweEZGLDB4QUUsMHgyRSwweDhFLAotICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHhDQiwweEVB
LDB4OEUsMHhGRiwweDg0LDB4NjEsMHg0MywweDU5LDB4MkIsMHhBRCwweEY2LDB4N0YsCi0gICAg
MHg4NCwweDU5LDB4MjMsMHg1MSwweEI4LDB4RkEsMHhFRSwweDdGLDB4NjMsMHg1OSwweDIzLDB4
NTEsMHhBOCwweEJBLDB4RUEsMHhFOSwKLSAgICAweDYzLDB4NTksMHgyMywweDUxLDB4Q0YsMHhF
NSwweEZGLDB4NzcsMHgyMywweDUxLDB4MDMsMHg0OSwweDZDLDB4RDgsMHhDRSwweDBGLAotICAg
IDB4MjMsMHg1MSwweDAzLDB4NDksMHg0RCwweDcyLDB4RkYsMHhFQiwweEU4LDB4OEEsMHgwMiww
eDUxLDB4NTUsMHhENSwweEI1LDB4MzUsCi0gICAgMHhBQiwweEEzLDB4MjYsMHg3MiwweDA5LDB4
MDMsMHgwMiwweDAwLDB4OEIsMHhBMywweDI5LDB4OTMsMHhBMCwweEUwLDB4RUEsMHhERSwKLSAg
ICAweDhBLDB4OUIsMHgwOSwweDkzLDB4RjgsMHhGRSwweERCLDB4N0YsMHg4QiwweDlCLDB4Mjks
MHg5MywweEFCLDB4QUYsMHhBRCwweDJELAotICAgIDB4NkEsMHg5QiwweDg3LDB4N0EsMHg3OCww
eEQ4LDB4NzgsMHg1QywweEU4LDB4ODIsMHgwNiwweDZBLDB4NjIsMHhFMiwweEVBLDB4QUEsCi0g
ICAgMHg4OCwweDdBLDB4MjMsMHg0OSwweDU1LDB4NTcsMHg1RSwweDc4LDB4NjQsMHg0OSwweEUz
LDB4NDAsMHhGQiwweDhCLDB4MkQsMHhCRiwKLSAgICAweDY0LDB4NDksMHgwMywweDQxLDB4QUYs
MHg5RSwweEQ2LDB4NUMsMHgyMywweDQxLDB4RTMsMHgzOCwweEJDLDB4REMsMHg1RiwweDU3LAot
ICAgIDB4NDQsMHg0OSwweDAzLDB4NDEsMHg4MiwweDA5LDB4MEQsMHgyNywweDQ0LDB4NDksMHhF
MywweDM4LDB4N0EsMHg3OCwweDdCLDB4N0EsCi0gICAgMHgyMywweDQxLDB4RTMsMHgzOCwweEE5
LDB4QkQsMHhGRCwweEY1LDB4MjQsMHg0MSwweEUyLDB4MzgsMHg5QSwweDJGLDB4MEUsMHhBQSwK
LSAgICAweEU3LDB4NjEsMHg0NCwweDQ5LDB4MkQsMHhBRCwweEY1LDB4NTUsMHhDNiwweDYxLDB4
MjQsMHg0OSwweDVDLDB4RjgsMHgyRiwweEI3LAotICAgIDB4QTYsMHg1OSwweDQ0LDB4NDksMHhE
NSwweEI3LDB4OTYsMHhCMCwweDg1LDB4NTEsMHhFMywweDM4LDB4N0EsMHg3OCwweDU4LDB4NTgs
Ci0gICAgMHgwNCwweDM5LDB4QTIsMHgzMCwweERGLDB4RDUsMHhGRCwweDM1LDB4MjQsMHg0MSww
eEMyLDB4MzAsMHhENywweDlELDB4QUEsMHhCMiwKLSAgICAweDg1LDB4NTEsMHgyMywweDQxLDB4
RUQsMHhGOSwweEVCLDB4ODIsMHg4NSwweDU5LDB4NDQsMHg1MSwweDA5LDB4RUQsMHhDQiwweDBB
LAotICAgIDB4ODUsMHg1OSwweDAzLDB4NDksMHhBMiwweDhBLDB4NTcsMHhENiwweDY0LDB4NTEs
MHhFMywweDM4LDB4RjgsMHhFRSwweDdFLDB4N0UsCi0gICAgMHgyMywweDQxLDB4QzMsMHgzOCww
eDg4LDB4QkUsMHhCRiwweEVELDB4NjUsMHg0OSwweEUyLDB4MzgsMHhGRCwweEZELDB4RUYsMHg4
QSwKLSAgICAweDg1LDB4NDksMHgwMiwweDM5LDB4RDUsMHg3RiwweENCLDB4RUYsMHgyMywweDQx
LDB4RTIsMHgzOCwweEVBLDB4ODAsMHhCRSwweEZCLAotICAgIDB4NDMsMHg0MSwweDAzLDB4Mzks
MHgzNSwweDk1LDB4RDUsMHhERiwweDQzLDB4NDEsMHhFMiwweDM4LDB4QzgsMHhFMCwweEYyLDB4
NkUsCi0gICAgMHgyMywweDM5LDB4RTIsMHgzOCwweEJGLDB4NkQsMHhBRiwweEFELDB4MjMsMHg0
MSwweEUyLDB4MzAsMHgwOCwweDBBLDB4QTMsMHhBRCwKLSAgICAweDY0LDB4NDksMHgwMywweDM5
LDB4MkYsMHhENywweEQ1LDB4RkUsMHg4NSwweDUxLDB4MjMsMHg0OSwweEJFLDB4RUEsMHg4Riww
eDJGLAotICAgIDB4ODUsMHg1MSwweDQ0LDB4NDksMHgwMiwweDJFLDB4MUYsMHg1RSwweDQ3LDB4
NkEsMHg4NCwweDUxLDB4NTUsMHhCRiwweDNELDB4RjUsCi0gICAgMHg2NywweDcyLDB4QzUsMHg2
MSwweDc1LDB4OTcsMHg1OCwweEEzLDB4QTgsMHg4MiwweDA2LDB4NjIsMHg5NSwweEQ1LDB4Mzcs
MHgzRCwKLSAgICAweEM5LDB4ODIsMHg0NiwweDcyLDB4MjIsMHhCRiwweERFLDB4RTAsMHgzMSww
eENELDB4QzksMHg4MiwweDAzLDB4MDksMHgwRCwweDI1LAotICAgIDB4RjAsMHhDNCwweDZFLDB4
QjQsMHhBRSwweEZDLDB4NTgsMHg3MCwweEYwLDB4QzQsMHg4RiwweEI0LDB4MkEsMHhBQiwweEVE
LDB4NTUsCi0gICAgMHgxMCwweEM1LDB4NkUsMHhCNCwweEU4LDB4N0EsMHhCNywweDI1LDB4MzEs
MHhDRCwweDJFLDB4QUMsMHg1NSwweEZELDB4MkEsMHgwMCwKLSAgICAweEIzLDB4RDUsMHg0RSww
eEFDLDB4QjUsMHhBRiwweDBBLDB4MEEsMHhENCwweEQ1LDB4MTEsMHhCRCwweDJCLDB4QkYsMHhE
RiwweDdFLAotICAgIDB4RDUsMHhENSwweDMyLDB4QzUsMHhCMCwweEVBLDB4MkYsMHhGNSwweDcz
LDB4Q0QsMHhEMCwweEI0LDB4NTgsMHg1QywweDVDLDB4NDAsCi0gICAgMHg3MywweEM1LDB4OEYs
MHhBQywweDI1LDB4MzUsMHhBNSwweEU1LDB4NzMsMHhDNSwweDBELDB4OUMsMHhFMCwweEZBLDB4
RkYsMHg5NSwKLSAgICAweEQwLDB4QjQsMHhCMCwweEFDLDB4QzMsMHg0MywweEUyLDB4N0IsMHhG
MSwweEI0LDB4OEYsMHhBQywweDk1LDB4MkQsMHgzRiwweEE3LAotICAgIDB4NDMsMHg1MSwweDAy
LDB4NDksMHhFRiwweEY2LDB4ODgsMHhFMCwweDY0LDB4NTksMHgyMywweDUxLDB4RUQsMHhBQiww
eEFCLDB4RkYsCi0gICAgMHg4NCwweDU5LDB4MjMsMHg1MSwweDk3LDB4QUYsMHg4RSwweEVGLDB4
NjQsMHg1OSwweDQzLDB4NTksMHhDMiwweDcyLDB4NUQsMHgzMCwKLSAgICAweEE0LDB4NjEsMHg0
MywweDU5LDB4QkYsMHhGOSwweEVCLDB4Q0IsMHg2NCwweDYxLDB4NDMsMHg1MSwweEUwLDB4NUUs
MHhFNywweEY2LAotICAgIDB4NDMsMHg1OSwweDY0LDB4NTEsMHgwMCwweDIwLDB4QTgsMHhDMCww
eDY0LDB4NTksMHgyMywweDUxLDB4RTksMHhFNywweEZDLDB4RkMsCi0gICAgMHg0NCwweDU5LDB4
MDMsMHg0OSwweEMyLDB4RkEsMHg2RSwweDdGLDB4MjMsMHg1MSwweDAzLDB4NDksMHhCRiwweDVF
LDB4NjgsMHhBOCwKLSAgICAweDQ0LDB4NTksMHgwMywweDQ5LDB4RkQsMHhCRiwweDNELDB4M0Ys
MHg4QiwweEEzLDB4NDMsMHg1OSwweDI1LDB4MkQsMHgwQiwweDAzLAotICAgIDB4Q0MsMHhBMyww
eDRBLDB4OUIsMHhGMCwweDdDLDB4N0EsMHg4MiwweDhBLDB4OUIsMHgyOSwweDkzLDB4N0YsMHg1
RSwweEZGLDB4NzAsCi0gICAgMHg0QSwweDkzLDB4MDksMHg5MywweDBGLDB4MEIsMHhGRSwweEEw
LDB4NkIsMHg5QiwweDI5LDB4OTMsMHgwOSwweDJGLDB4RDcsMHhERCwKLSAgICAweDRBLDB4OTMs
MHg4NywweDdBLDB4N0MsMHg3QywweDU4LDB4NTgsMHhBOCwweDdBLDB4MjcsMHg3MiwweDg4LDB4
QUEsMHhGOCwweDZGLAotICAgIDB4NjcsMHg3MiwweDg1LDB4NTksMHg3OCwweEUwLDB4QTAsMHhB
MCwweEU2LDB4NjEsMHgwMywweDQ5LDB4RDUsMHg3NywweDc4LDB4RTAsCi0gICAgMHg2NCwweDUx
LDB4RTIsMHgzOCwweDcwLDB4N0EsMHhFRiwweEQ3LDB4MDMsMHgzOSwweEMyLDB4MzgsMHg4Qiww
eEJBLDB4RkYsMHg1RSwKLSAgICAweDg1LDB4NTEsMHhFMiwweDM4LDB4QkYsMHgyRCwweDNELDB4
OTUsMHg4NSwweDUxLDB4RTIsMHgzOCwweDdBLDB4NzgsMHg3OCwweDVBLAotICAgIDB4MjQsMHg0
MSwweEUzLDB4MzgsMHhBNSwweEY2LDB4NzYsMHhGMCwweDI0LDB4NDEsMHhFMywweDM4LDB4QUEs
MHhBRSwweEVELDB4MjcsCi0gICAgMHg2NSwweDUxLDB4MDMsMHg0MSwweEJGLDB4QUQsMHhDRCww
eDhGLDB4QTYsMHg1OSwweDIzLDB4NDksMHhBRiwweEFCLDB4MEIsMHhBNSwKLSAgICAweEM2LDB4
NTksMHg2NSwweDUxLDB4QjgsMHhBRSwweDZGLDB4QkYsMHg2NSwweDUxLDB4QzIsMHgzOCwweDcw
LDB4NzAsMHg1QSwweDU2LAotICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHgyNywweEJGLDB4RDcs
MHhGNSwweDAzLDB4MzksMHhBMiwweDMwLDB4MDAsMHgwMCwweEJGLDB4RjcsCi0gICAgMHhDNiww
eDYxLDB4MjMsMHg0MSwweDg5LDB4MDksMHgwRCwweEE1LDB4RTYsMHg2MSwweDg1LDB4NTksMHhE
NywweDc4LDB4NzAsMHg0OSwKLSAgICAweDg1LDB4NTEsMHgwMywweDQxLDB4REMsMHg1QywweDVF
LDB4RkUsMHgyNCwweDQxLDB4RTMsMHgzOCwweDc4LDB4NzgsMHg3QiwweDc2LAotICAgIDB4MjQs
MHg0MSwweEUzLDB4MzgsMHhBOSwweDNCLDB4REQsMHg1NywweDY0LDB4NDksMHgyMywweDQxLDB4
QkIsMHgyOSwweEMzLDB4ODEsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEVGLDB4RkEsMHhG
MiwweEY3LDB4MjMsMHg0MSwweEUyLDB4MzgsMHg1RiwweDVCLDB4NTgsMHhFQywKLSAgICAweDQ0
LDB4NDEsMHhFMiwweDM4LDB4RjMsMHhGNSwweEY1LDB4OTUsMHgyNCwweDQxLDB4MDMsMHgzOSww
eDc2LDB4OEQsMHhCRSwweEI5LAotICAgIDB4NDQsMHgzOSwweEUyLDB4MzgsMHhGRCwweEZGLDB4
RDYsMHg3RSwweDIzLDB4MzksMHhFMiwweDM4LDB4RjcsMHg5RiwweDkzLDB4QkIsCi0gICAgMHg2
NCwweDQ5LDB4MDMsMHgzOSwweEUzLDB4QTksMHgyRCwweEJGLDB4NjQsMHg0OSwweDIzLDB4NDEs
MHhBRSwweDBCLDB4MEYsMHhBQiwKLSAgICAweDY0LDB4NDksMHgyMywweDQ5LDB4QkUsMHhERiww
eERGLDB4RjgsMHhDNSwweDYxLDB4NDQsMHg0OSwweDJELDB4QkQsMHhGNSwweEFELAotICAgIDB4
MjYsMHg2QSwweDY0LDB4NTEsMHgwQSwweDJELDB4QjcsMHg3NywweDg4LDB4N0EsMHhDNSwweDYx
LDB4M0YsMHhBQiwweEJGLDB4RDUsCi0gICAgMHgwOSwweDhCLDB4NjgsMHg3QSwweEUwLDB4OEEs
MHgwMywweDBELDB4MTEsMHhDNSwweEU5LDB4ODIsMHgzNSwweDM1LDB4MTUsMHg5NSwKLSAgICAw
eDM1LDB4RUUsMHg2RiwweEI0LDB4N0YsMHhGRSwweEFBLDB4MDIsMHgzNSwweEU2LDB4NkUsMHhC
NCwweDU1LDB4RkYsMHgwMiwweDAwLAotICAgIDB4RjQsMHhERCwweDZFLDB4QjQsMHhCNSwweEI3
LDB4MDAsMHgwMCwweDE0LDB4RTYsMHg1MiwweENELDB4RjUsMHhFQiwweDVBLDB4NjAsCi0gICAg
MHhCMywweEQ1LDB4NTIsMHhDNSwweDI3LDB4Q0YsMHhBOSwweDJCLDB4QjQsMHhDRCwweDMyLDB4
QzUsMHg3OCwweDdBLDB4N0IsMHg2RSwKLSAgICAweDUyLDB4QzUsMHhGMSwweEJDLDB4QUIsMHhC
QSwweDdDLDB4N0EsMHg5MywweENELDB4RjEsMHhCQywweDAyLDB4MkEsMHhBRCwweEY1LAotICAg
IDB4NzMsMHhDRCwweDBFLDB4OUMsMHhFOCwweDYwLDB4NzgsMHg3QSwweEIwLDB4QjQsMHhDQyww
eDkzLDB4MjUsMHgwRCwweDBCLDB4MDMsCi0gICAgMHhEMCwweEI0LDB4OTAsMHhBQywweEVDLDB4
N0UsMHg3RSwweERFLDB4RDAsMHhCNCwweDkwLDB4QUMsMHhBOSwweDI5LDB4RjcsMHhENywKLSAg
ICAweDg0LDB4NTksMHg0MywweDUxLDB4NzcsMHhCNSwweEVCLDB4RkEsMHg2NCwweDU5LDB4MjMs
MHg1MSwweEY2LDB4QkMsMHhGQSwweEI4LAotICAgIDB4NjQsMHg1OSwweDQzLDB4NTksMHg1NSww
eERGLDB4MEEsMHgxMSwweDg0LDB4NjEsMHg0MywweDU5LDB4MkYsMHg4MywweEU4LDB4RjAsCi0g
ICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweEUyLDB4RjIsMHhEQywweEQ1LDB4NjQsMHg1OSwweDIz
LDB4NTEsMHhFQSwweEZBLDB4QUIsMHhBQSwKLSAgICAweDY0LDB4NTksMHgyMywweDUxLDB4RkEs
MHg3RiwweDdGLDB4NkYsMHg0NCwweDU5LDB4RTIsMHg0OCwweDg4LDB4RTIsMHhFRSwweDhBLAot
ICAgIDB4MjMsMHg1MSwweEUyLDB4NDgsMHhFQSwweEVBLDB4N0UsMHhGQywweDIzLDB4NTEsMHhF
MiwweDQ4LDB4Q0UsMHgyRSwweEE4LDB4OUEsCi0gICAgMHhFOSwweDhBLDB4MjMsMHg1MSwweEQ1
LDB4OTUsMHgzNSwweDI1LDB4Q0MsMHhBMywweEM5LDB4OEEsMHhBOSwweDJBLDB4MkEsMHgwMiwK
LSAgICAweEVDLDB4QUIsMHg4QiwweEEzLDB4QTMsMHgwQSwweEFBLDB4RkMsMHhBQiwweEEzLDB4
NEEsMHg5MywweDc4LDB4NjgsMHhFMCwweEFBLAotICAgIDB4OEIsMHg5QiwweDI5LDB4OTMsMHg1
RCwweDdGLDB4RkUsMHgyQSwweDZBLDB4OUIsMHgyQSwweDkzLDB4OUYsMHgyQSwweEFBLDB4RjAs
Ci0gICAgMHgyQSwweDkzLDB4NDcsMHg3MiwweDc4LDB4NzgsMHg3OCwweDc4LDB4NjcsMHg3Miww
eDI2LDB4NzIsMHg2MCwweEYyLDB4QTIsMHhGRSwKLSAgICAweDQ3LDB4NzIsMHgwNiwweDZBLDB4
QkMsMHhGRSwweDhFLDB4NEMsMHgyNiwweDZBLDB4QTUsMHg1OSwweDcwLDB4ODgsMHgyMCwweDIw
LAotICAgIDB4RTYsMHg2MSwweEUzLDB4NDAsMHg1NywweERFLDB4NzgsMHhFMCwweDIzLDB4NDEs
MHhDMiwweDM4LDB4N0YsMHg1RSwweDU4LDB4RkEsCi0gICAgMHgyNCwweDQxLDB4RTIsMHgzOCww
eEI1LDB4QjUsMHgzRCwweDJELDB4NDQsMHg0MSwweEUzLDB4MzgsMHg3QSwweERFLDB4RjYsMHg3
OCwKLSAgICAweDI0LDB4NDEsMHhDMiwweDM4LDB4OEEsMHhBQiwweEJFLDB4REYsMHgyNCwweDQx
LDB4RTIsMHgzOCwweEZGLDB4QUYsMHhBQiwweDA5LAotICAgIDB4NDQsMHg0OSwweEUzLDB4Mzgs
MHhBRSwweEJELDB4RUEsMHhBQSwweEE2LDB4NTksMHgwMywweDQxLDB4QjcsMHhCRCwweEE3LDB4
MkQsCi0gICAgMHhBNiwweDU5LDB4NDQsMHg0OSwweEZBLDB4NzIsMHg3QSwweDU4LDB4NDQsMHg0
OSwweEEyLDB4MzAsMHg1QywweEY4LDB4RkEsMHhGQiwKLSAgICAweDAzLDB4MzksMHhBMiwweDMw
LDB4QkYsMHgwRCwweDA3LDB4MzcsMHgwMywweDM5LDB4QzMsMHgzMCwweEQ1LDB4QkUsMHgyRiww
eDNBLAotICAgIDB4ODUsMHg1MSwweEUzLDB4MzgsMHgyRCwweEI1LDB4QkYsMHhBRiwweEU2LDB4
NjEsMHg0NCwweDQ5LDB4MEIsMHgyRiwweEQ3LDB4NUQsCi0gICAgMHhBNiwweDU5LDB4MDQsMHg0
MSwweDdBLDB4RjgsMHg3RSwweDVGLDB4MDQsMHg0MSwweEUzLDB4MzgsMHhFOCwweDYwLDB4NkIs
MHg0OSwKLSAgICAweDIzLDB4MzksMHhDMywweDM4LDB4RkYsMHhCRiwweEVELDB4RDMsMHg2NCww
eDQ5LDB4RTMsMHgzOCwweEUyLDB4QUIsMHhFOSwweEFELAotICAgIDB4NDQsMHg0MSwweDAzLDB4
NDEsMHgyNSwweDJFLDB4MkIsMHg3RSwweDY0LDB4NDksMHhDMiwweDMwLDB4QTgsMHhGOCwweEZB
LDB4N0EsCi0gICAgMHgwMywweDM5LDB4RTIsMHgzMCwweDk2LDB4RTIsMHg1OCwweDdELDB4MjMs
MHgzOSwweEUzLDB4MzgsMHhDQiwweEVELDB4NzUsMHhENSwKLSAgICAweDAzLDB4MzksMHhFMyww
eDMwLDB4QzAsMHhCNywweDc1LDB4M0UsMHgyMywweDQxLDB4RTMsMHgzOCwweDg5LDB4MDksMHhB
RCwweEJFLAotICAgIDB4QTYsMHg1MSwweDI0LDB4NDEsMHhGRCwweEFELDB4MEYsMHhBOSwweEE1
LDB4NTEsMHg0NCwweDQ5LDB4NzUsMHhFRiwweEIwLDB4RTgsCi0gICAgMHhFNiwweDYxLDB4NDQs
MHg0OSwweDVELDB4RkYsMHgyRiwweEI1LDB4RTYsMHg2MSwweDY0LDB4NTEsMHhCRCwweEJGLDB4
QTgsMHgwMCwKLSAgICAweDA3LDB4NkEsMHhBNSwweDU5LDB4N0QsMHg1RCwweEE3LDB4QUMsMHg4
OCwweDdBLDB4ODQsMHg1OSwweEQ1LDB4RkYsMHhBQiwweDJELAotICAgIDB4RTgsMHg4MiwweDI2
LDB4NkEsMHgyRCwweEJELDB4MzUsMHhCNSwweEFDLDB4OUIsMHhFOCwweDgyLDB4MzUsMHgxNSww
eDk1LDB4OTUsCi0gICAgMHg1NSwweEVFLDB4NkUsMHhCNCwweDAyLDB4MDMsMHgwMSwweDA5LDB4
NzYsMHhFRSwweDM1LDB4RTYsMHhFRiwweENBLDB4RUEsMHg3QiwKLSAgICAweDU1LDB4RUUsMHhG
NCwweERELDB4QTgsMHhBOCwweEUyLDB4RkYsMHgzNSwweEU2LDB4MzIsMHhDNSwweDYwLDB4Njgs
MHg3OCwweERBLAotICAgIDB4QjMsMHhENSwweDUyLDB4QzUsMHhBQiwweEU5LDB4RkIsMHg2OCww
eDkzLDB4Q0QsMHg1MiwweEM1LDB4RTgsMHhCOCwweEFCLDB4MkQsCi0gICAgMHg3MywweENELDB4
MTEsMHhCRCwweDdFLDB4REUsMHhGQSwweEQ4LDB4MTEsMHhCRCwweDRGLDB4QTQsMHgwOCwweDgw
LDB4QzAsMHg2MCwKLSAgICAweEIwLDB4QjQsMHhFQSwweDdBLDB4QTAsMHhCNywweDM3LDB4QUYs
MHhCMCwweEI0LDB4NkYsMHhBQywweDAxLDB4OEIsMHgyMSwweDI5LAotICAgIDB4RDEsMHhCNCww
eDZGLDB4QUMsMHhBQiwweDhBLDB4Q0EsMHg3OCwweEQxLDB4QjQsMHg2RiwweEFDLDB4OEEsMHhF
QSwweEZBLDB4NTUsCi0gICAgMHg2MywweDU5LDB4MjMsMHg1MSwweEJBLDB4MjYsMHgxNywweDg5
LDB4ODQsMHg1OSwweDQzLDB4NTEsMHhGRiwweEVELDB4RkIsMHhBRSwKLSAgICAweEE0LDB4NjEs
MHg2NCwweDU5LDB4RDcsMHhERCwweDE5LDB4REYsMHg4NCwweDYxLDB4NDMsMHg1OSwweEVBLDB4
RjgsMHg3QywweDdFLAotICAgIDB4NjMsMHg1OSwweDIyLDB4NTEsMHhBQSwweDY4LDB4RUEsMHhC
NiwweDYzLDB4NTksMHgyMiwweDUxLDB4ODIsMHhBQiwweEZCLDB4RUUsCi0gICAgMHg0MywweDU5
LDB4MjMsMHg0OSwweEE4LDB4RjgsMHhERSwweEQ3LDB4NDQsMHg1OSwweDAzLDB4NDksMHhFNiww
eEZFLDB4RkMsMHhCNiwKLSAgICAweDIzLDB4NTEsMHhFMywweDQ4LDB4QUIsMHhBRiwweEVBLDB4
QUEsMHg0NCwweDU5LDB4RTIsMHg0OCwweEZGLDB4NTcsMHgyNywweDBFLAotICAgIDB4NkEsMHg5
QiwweDIzLDB4NTEsMHgyNSwweDBELDB4MEQsMHgwOSwweENDLDB4QUIsMHg4QiwweDlCLDB4RkYs
MHg3QiwweEFFLDB4MEIsCi0gICAgMHhDQiwweEEzLDB4NDksMHg5MywweDVFLDB4NzcsMHhGNiww
eEUwLDB4OEEsMHg5QiwweDI5LDB4OTMsMHgwQSwweEFBLDB4NkEsMHg2RSwKLSAgICAweDhCLDB4
QTMsMHgwOSwweDhCLDB4QTgsMHhGRSwweDU1LDB4NTcsMHg2QSwweDlCLDB4QzgsMHg4QSwweEEw
LDB4RUEsMHhGRiwweDdGLAotICAgIDB4RTksMHg4QSwweDQ2LDB4NzIsMHg3OCwweDU4LDB4N0Ms
MHg3OCwweDg2LDB4NzIsMHgyNiwweDcyLDB4NTcsMHhGRiwweDdGLDB4NkYsCi0gICAgMHgyNiww
eDcyLDB4MDYsMHg2QSwweEMwLDB4RTAsMHgxQywweDkwLDB4NDcsMHg3MiwweDA2LDB4NkEsMHhC
RCwweDI1LDB4MUYsMHgwRSwKLSAgICAweDg3LDB4N0EsMHg4NSwweDUxLDB4N0EsMHhDOCwweEEy
LDB4MDgsMHhFNiwweDYxLDB4QzMsMHgzOCwweDc3LDB4N0YsMHg1RSwweDc4LAotICAgIDB4MjMs
MHg0MSwweEMyLDB4MzgsMHgyQSwweEJGLDB4RkQsMHhBNSwweDQ0LDB4NDksMHhFMywweDM4LDB4
NzAsMHhGQiwweERGLDB4N0YsCi0gICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDlBLDB4RkEsMHg3
RiwweEFGLDB4NjQsMHg0OSwweEUyLDB4MzgsMHhCRCwweDNELDB4RUQsMHhCRCwKLSAgICAweDQ0
LDB4NDksMHgwMywweDQxLDB4QjgsMHhCQywweDVDLDB4NUMsMHhBNiwweDU5LDB4MDQsMHg0MSww
eDJGLDB4QkYsMHhCRCwweEY1LAotICAgIDB4QTYsMHg1OSwweDQ0LDB4NDksMHg3MCwweEY4LDB4
RTgsMHhGRCwweDQ0LDB4NDEsMHhBMiwweDM4LDB4RkYsMHhFRSwweEJFLDB4RjgsCi0gICAgMHhF
MywweDM4LDB4QTIsMHgzMCwweDM3LDB4MkEsMHgyQSwweEFBLDB4MjQsMHg0MSwweEMyLDB4MzAs
MHhCOCwweEIwLDB4QUEsMHhCNSwKLSAgICAweDQ0LDB4NDksMHhFMywweDM4LDB4MjcsMHgyRiww
eDJGLDB4M0EsMHg2NSwweDUxLDB4MjQsMHg0MSwweEZBLDB4N0EsMHhGQiwweDdCLAotICAgIDB4
MjQsMHg0MSwweEUzLDB4MzgsMHhDMiwweEUzLDB4RkEsMHhENiwweDI0LDB4NDEsMHhFMywweDM4
LDB4RjUsMHg3RiwweEE3LDB4MkYsCi0gICAgMHgyNCwweDQxLDB4RTMsMHgzOCwweEUyLDB4RUUs
MHhCRSwweERDLDB4NDQsMHg0MSwweEUzLDB4MzgsMHg4RCwweDBGLDB4QUUsMHg4RCwKLSAgICAw
eDQ0LDB4NDEsMHhFMiwweDM4LDB4N0EsMHhDMiwweDYwLDB4RkUsMHgwMywweDM5LDB4QzIsMHgz
MCwweDc4LDB4RjQsMHhCNywweEJFLAotICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHhEOSwweEJC
LDB4QUIsMHhBMiwweDI0LDB4NDEsMHhFMywweDMwLDB4RjUsMHhGQiwweEVBLDB4MkIsCi0gICAg
MHgyMywweDM5LDB4QzIsMHgzMCwweDJGLDB4QkEsMHhGRSwweDdFLDB4NDQsMHg0MSwweEMyLDB4
MzAsMHhGRSwweEFBLDB4QUIsMHgyNSwKLSAgICAweDY0LDB4NDksMHhFMywweDM4LDB4MDksMHhB
NywweEQ1LDB4RkYsMHg4NCwweDUxLDB4MDMsMHg0MSwweDgyLDB4QkQsMHg1NSwweDVELAotICAg
IDB4ODUsMHg1MSwweDIzLDB4NDEsMHgzNiwweDNGLDB4MzcsMHg5NSwweDQ3LDB4NzIsMHhBNSww
eDU5LDB4RUYsMHhCRiwweEE5LDB4MEQsCi0gICAgMHg0NywweDcyLDB4QTUsMHg1OSwweEFCLDB4
MEYsMHgzNywweEZFLDB4NjcsMHg3QSwweEU1LDB4NjEsMHgzRCwweEI1LDB4NUUsMHhENywKLSAg
ICAweDY3LDB4NzIsMHhFNSwweDYxLDB4MkMsMHg5RSwweEYzLDB4QUIsMHgyOSwweDhCLDB4Njcs
MHg3MiwweDIzLDB4QTksMHhCRCwweEJELAotICAgIDB4MzUsMHhFNiwweDI5LDB4OEIsMHgwQiww
eDA5LDB4MkQsMHgyRCwweDU1LDB4RUUsMHgxNCwweEU2LDB4QUEsMHhFQSwweDdGLDB4NTUsCi0g
ICAgMHgzNSwweEU2LDB4QjMsMHhENSwweEU4LDB4RjgsMHg2QSwweDdBLDB4QjMsMHhENSwweEYx
LDB4QkMsMHhCMCwweDNDLDB4QkUsMHhCNiwKLSAgICAweEI0LDB4RDUsMHg1MiwweEM1LDB4RTgs
MHhFQSwweEVBLDB4NUEsMHg3MywweENELDB4MzIsMHhDNSwweDJGLDB4RTcsMHhFRSwweEZGLAot
ICAgIDB4NTIsMHhDNSwweEQxLDB4QjQsMHhFMCwweEE4LDB4RjgsMHg3OCwweDExLDB4QkQsMHhF
RSwweDlCLDB4RTgsMHhFQSwweDY4LDB4N0EsCi0gICAgMHg2RiwweEFDLDB4Q0QsMHg5MywweDJE
LDB4QUYsMHgyRiwweDI1LDB4QjAsMHhCNCwweDRGLDB4QTQsMHgyQiwweDhCLDB4RUEsMHg3RSwK
LSAgICAweEIwLDB4QjQsMHgyRSwweEE0LDB4RkMsMHhGRSwweDk3LDB4QkYsMHhCMCwweEI0LDB4
NEYsMHhBNCwweDlGLDB4M0YsMHhBQSwweDRFLAotICAgIDB4NjMsMHg1OSwweDIyLDB4NTEsMHgw
QiwweDhBLDB4QTAsMHhDOSwweDg0LDB4NTksMHg0MywweDU5LDB4OUUsMHgxNywweDZELDB4RkQs
Ci0gICAgMHg4MywweDYxLDB4MjMsMHg1MSwweEVBLDB4N0EsMHhGRiwweDdELDB4NjMsMHg1OSww
eDIzLDB4NTEsMHg4QSwweDJCLDB4QUUsMHhGNiwKLSAgICAweDYzLDB4NTksMHgyMywweDUxLDB4
M0UsMHg3OCwweEVFLDB4NzcsMHg0MywweDUxLDB4MDIsMHg0OSwweEFBLDB4QkMsMHg5QSwweDJF
LAotICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHhBRSwweDIzLDB4QTAsMHg1RSwweDQ0LDB4NTEs
MHgwMywweDQ5LDB4RkEsMHhEQywweEQ3LDB4RkIsCi0gICAgMHg0NCwweDU5LDB4MDIsMHg0OSww
eEU3LDB4QjcsMHgzRiwweDBBLDB4NjQsMHg1OSwweDIzLDB4NTEsMHhBOSwweEFGLDB4QkUsMHhE
QywKLSAgICAweDhCLDB4OUIsMHhFNiwweDY5LDB4MEQsMHgwOSwweDA5LDB4MEIsMHhFQywweEFC
LDB4OEIsMHg5QiwweDBCLDB4MkYsMHg4OSwweDJGLAotICAgIDB4MEQsMHhBQywweDhCLDB4QTMs
MHg3QSwweDdFLDB4QkEsMHg4MiwweENDLDB4QUIsMHg0OSwweDkzLDB4REYsMHg3QiwweDU4LDB4
NzgsCi0gICAgMHg2QSwweDkzLDB4QzgsMHg4MiwweEEwLDB4RkEsMHhGRSwweDdGLDB4MjksMHg5
MywweEM4LDB4OEEsMHg3OCwweDU2LDB4REQsMHhCNywKLSAgICAweEU5LDB4OEEsMHg2NiwweDcy
LDB4NUMsMHg1QywweDU4LDB4NTgsMHg2NiwweDcyLDB4MjYsMHg3MiwweEVBLDB4QkEsMHhCQSww
eEZBLAotICAgIDB4NDYsMHg3MiwweDA2LDB4NkEsMHhGQywweEI4LDB4MjgsMHhFMiwweDY3LDB4
N0EsMHgyNiwweDcyLDB4RDUsMHhCRCwweEZELDB4MkQsCi0gICAgMHhDOCwweDgyLDB4NDYsMHg3
MiwweEE5LDB4MkIsMHgyQiwweDhBLDB4QTcsMHg3QSwweDAzLDB4NDksMHg1RSwweDc4LDB4NzAs
MHhFMCwKLSAgICAweEUzLDB4MzgsMHhBMiwweDMwLDB4MzgsMHgzQSwweEZFLDB4NjAsMHgwMyww
eDQxLDB4QTIsMHgzMCwweDgyLDB4RUEsMHhGQiwweDdELAotICAgIDB4MjQsMHg0MSwweEMyLDB4
MzAsMHhBNSwweDI1LDB4QkQsMHhGNSwweDI0LDB4NDEsMHhDMywweDM4LDB4MkUsMHhFRSwweEZF
LDB4RkUsCi0gICAgMHg0NCwweDQxLDB4RTMsMHgzOCwweDdDLDB4RkIsMHhBRCwweEY1LDB4NDQs
MHg0OSwweEUzLDB4NDAsMHhERiwweDU3LDB4N0YsMHgwQSwKLSAgICAweDY1LDB4NDksMHhFMyww
eDQwLDB4MkYsMHhCRCwweEZGLDB4RkEsMHg2NCwweDQ5LDB4QzIsMHgzMCwweDc4LDB4NkEsMHhG
QSwweEYyLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MzAsMHg3RCwweDU3LDB4NUMsMHhEQSwweEUz
LDB4MzgsMHhBMiwweDI4LDB4MkQsMHgyRCwweDhELDB4MEEsCi0gICAgMHhBNSwweDUxLDB4MDMs
MHgzOSwweEY1LDB4QjUsMHhCNSwweDM1LDB4ODUsMHg1MSwweDIzLDB4NDEsMHhERiwweDVGLDB4
N0UsMHg3MCwKLSAgICAweDQ0LDB4NDksMHhFMywweDM4LDB4NUUsMHg3QSwweDdBLDB4NUEsMHgy
NCwweDM5LDB4QzIsMHgzMCwweDhFLDB4QkIsMHhGRSwweERGLAotICAgIDB4MDMsMHgzOSwweEMy
LDB4MzAsMHhCQSwweDU2LDB4RDUsMHhGNSwweDIzLDB4MzksMHhDMiwweDMwLDB4MDIsMHhFQSww
eDc3LDB4NzcsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEJDLDB4QUEsMHg3RSwweEFCLDB4
MDMsMHg0MSwweEUyLDB4MzAsMHhGRSwweEY1LDB4N0QsMHg1RiwKLSAgICAweDI0LDB4MzksMHhD
MywweDMwLDB4MEIsMHhCQSwweEVCLDB4N0UsMHgyNCwweDM5LDB4QzIsMHgzMCwweDJBLDB4QUEs
MHhFMiwweEE5LAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHhDMCwweDA4LDB4ODgsMHhFRSww
eDIzLDB4NDEsMHhDMiwweDMwLDB4QjUsMHhCRiwweDNFLDB4QkUsCi0gICAgMHgyMywweDQxLDB4
MDMsMHgzOSwweDUwLDB4QjAsMHhFMywweDJGLDB4MjMsMHg0MSwweEUzLDB4MzgsMHg3NiwweEU1
LDB4RTcsMHhBOCwKLSAgICAweDY0LDB4NDksMHgwMywweDM5LDB4MkIsMHgyQiwweDBELDB4QjUs
MHg0NywweDcyLDB4NjQsMHg1MSwweDI3LDB4RjUsMHhGNSwweDU1LAotICAgIDB4ODcsMHg3QSww
eEE1LDB4NTksMHhFOCwweDgyLDB4MDksMHhCNSwweDQ3LDB4NzIsMHhBNSwweDU5LDB4QkYsMHgy
RiwweEQ0LDB4NTgsCi0gICAgMHg4NywweDdBLDB4MDUsMHg2MiwweEFGLDB4MEEsMHgyQSwweEE5
LDB4QTgsMHg3QSwweDY3LDB4NzIsMHgzRiwweEJBLDB4RTgsMHg4MCwKLSAgICAweDkzLDB4RDUs
MHhDOSwweDgyLDB4MDksMHgwRCwweDJELDB4MkQsMHgxNCwweEU2LDB4NzIsMHhDRCwweDg4LDB4
QUEsMHhGRiwweDVELAotICAgIDB4RjQsMHhERCwweDMyLDB4QzUsMHhBMCwweEU4LDB4RUEsMHg3
QSwweDkzLDB4Q0QsMHhGMSwweEJDLDB4MDcsMHgwRiwweDA5LDB4QTksCi0gICAgMHg3MywweENE
LDB4MTEsMHhCRCwweEEwLDB4NjAsMHg0MCwweEEwLDB4NzMsMHhDRCwweEQwLDB4QjQsMHgwQiww
eDJGLDB4QjUsMHhGRiwKLSAgICAweDUyLDB4QzUsMHhCMCwweEI0LDB4RTgsMHg3OCwweERFLDB4
NzcsMHg5MCwweEFDLDB4MkIsMHg3QiwweEUwLDB4RjAsMHg3OCwweDU4LAotICAgIDB4NzAsMHhB
QywweDhDLDB4OEIsMHgyRiwweDJELDB4MDksMHhBQiwweDkwLDB4QUMsMHgwRSwweDlDLDB4Rjgs
MHhERiwweEZGLDB4QTcsCi0gICAgMHg4RiwweEFDLDB4NEYsMHhBNCwweDBELDB4NkQsMHhGRCww
eEQ4LDB4RDAsMHhCNCwweDBFLDB4OUMsMHhGRiwweEJELDB4QkQsMHgyQSwKLSAgICAweDg0LDB4
NTksMHg0MywweDUxLDB4RDUsMHhFRCwweDJFLDB4M0EsMHg2MywweDU5LDB4MjIsMHg1MSwweDgz
LDB4NDIsMHg2MiwweEZFLAotICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHhBOCwweDJBLDB4M0Es
MHhCNywweDQzLDB4NTEsMHgyMiwweDUxLDB4MDQsMHgwMiwweEMyLDB4NEMsCi0gICAgMHg0Myww
eDUxLDB4MDIsMHg0OSwweEZFLDB4N0EsMHhCQSwweEI0LDB4NDQsMHg1MSwweDAyLDB4NDksMHhB
QiwweEVCLDB4QkEsMHhCQSwKLSAgICAweDQzLDB4NTEsMHgwMywweDQ5LDB4REMsMHhCRiwweDhC
LDB4QTcsMHg0NCwweDU5LDB4MDMsMHg0OSwweDVFLDB4RkYsMHhCRiwweDI3LAotICAgIDB4NjQs
MHg1OSwweDAzLDB4NTEsMHhBRCwweEFGLDB4QTIsMHhFQSwweEE0LDB4NjEsMHgyNCwweDUxLDB4
OTcsMHg5RiwweEJGLDB4MTcsCi0gICAgMHhBQiwweEEzLDB4NDcsMHg3QSwweDA5LDB4MEIsMHgw
QiwweDBCLDB4MEQsMHhBQywweEFCLDB4QTMsMHhBRCwweDNELDB4RjUsMHhGRCwKLSAgICAweDJE
LDB4QjQsMHhFQywweEFCLDB4N0EsMHhGMiwweDY1LDB4NTUsMHhFQywweEFCLDB4NEEsMHg5Myww
eDdBLDB4N0MsMHhBOCwweDgwLAotICAgIDB4OEIsMHhBMywweEM4LDB4ODIsMHg3RSwweDdFLDB4
RTIsMHhBMCwweDI5LDB4OEIsMHhDOCwweDgyLDB4QkYsMHg3RCwweERGLDB4NzgsCi0gICAgMHhD
OCwweDgyLDB4MjYsMHg2QSwweEY4LDB4NjgsMHg3OCwweDc4LDB4NDYsMHg3MiwweDI2LDB4NkEs
MHg2MCwweEYwLDB4OEIsMHhBRSwKLSAgICAweDQ2LDB4NzIsMHgyNSwweDZBLDB4RUIsMHhBQiww
eEZCLDB4M0UsMHhDOCwweDgyLDB4MjYsMHg3MiwweEJELDB4QUYsMHhBRiwweDBCLAotICAgIDB4
QzksMHg4MiwweDg4LDB4ODIsMHhCQiwweDZBLDB4OEEsMHgwQSwweEE4LDB4ODIsMHgyNiwweDZB
LDB4NjgsMHg2OCwweEU4LDB4RTAsCi0gICAgMHhFNSwweDYxLDB4QzIsMHgzOCwweDU2LDB4N0Us
MHg3QywweDc4LDB4QTIsMHgzMCwweDYxLDB4MjgsMHgwOCwweDJBLDB4M0MsMHhBRSwKLSAgICAw
eEUzLDB4MzgsMHhBMiwweDMwLDB4MkUsMHhFRCwweEQ1LDB4NUQsMHgwMywweDM5LDB4QTIsMHgz
MCwweEUyLDB4RUIsMHg3RCwweDVELAotICAgIDB4MDMsMHg0MSwweEExLDB4MzAsMHgwRSwweEFB
LDB4RTksMHhCRCwweDQ0LDB4NDksMHhFMywweDM4LDB4MEUsMHgyNSwweEJELDB4RkQsCi0gICAg
MHg2NSwweDQ5LDB4MDMsMHg0MSwweDcwLDB4RTIsMHhCRiwweERELDB4MjQsMHg0MSwweEUzLDB4
MzgsMHhFMCwweEJFLDB4NzYsMHhEQywKLSAgICAweDAzLDB4MzksMHg4MiwweDI4LDB4RUEsMHhG
QSwweEZDLDB4NTgsMHhFMywweDM4LDB4QTIsMHgzMCwweDIyLDB4MDMsMHgwQiwweENELAotICAg
IDB4NjUsMHg0OSwweEMyLDB4MzAsMHgyQiwweDA5LDB4MjksMHhFRCwweEE1LDB4NTEsMHgwMyww
eDQxLDB4RTgsMHhFQSwweDZGLDB4NTUsCi0gICAgMHgyNCwweDQxLDB4QzIsMHgzMCwweEUwLDB4
RTgsMHhFQSwweDdFLDB4RTMsMHgzOCwweEMyLDB4MzAsMHg3MiwweEZDLDB4MzcsMHgyOSwKLSAg
ICAweEUzLDB4MzgsMHhDMywweDI4LDB4QUEsMHgwQiwweDA4LDB4QTgsMHgwMywweDM5LDB4QzIs
MHgzMCwweDdFLDB4N0EsMHgyQSwweEVBLAotICAgIDB4RTMsMHgzOCwweEMyLDB4MzAsMHhBQiww
eDQyLDB4REIsMHg5NSwweDAzLDB4MzksMHhDMiwweDMwLDB4RkEsMHhGNywweEY3LDB4RDQsCi0g
ICAgMHgwMywweDM5LDB4RTMsMHgzMCwweDdELDB4RDcsMHhENiwweDJELDB4MDMsMHgzOSwweEMy
LDB4MzAsMHg4RiwweEVFLDB4QjYsMHg4QSwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RkQs
MHg1NywweDVFLDB4QTgsMHgwMywweDM5LDB4QzIsMHgzMCwweEJCLDB4QkYsMHgyRCwweDJBLAot
ICAgIDB4NDQsMHg0MSwweDAzLDB4MzksMHhCRiwweEVELDB4MEQsMHgwOSwweDQ0LDB4NDEsMHgw
MywweDM5LDB4RkEsMHg2QiwweDc4LDB4RkMsCi0gICAgMHgyMywweDQxLDB4RTIsMHgzOCwweDcw
LDB4NjAsMHhFQSwweEIyLDB4NjQsMHg0OSwweDAzLDB4NDEsMHgyMywweDI5LDB4RDUsMHg1NSwK
LSAgICAweEE1LDB4NTksMHg0NCwweDQ5LDB4QUEsMHhFOSwweEZGLDB4RjksMHhFNiwweDYxLDB4
NDMsMHg0OSwweEEwLDB4QTMsMHhCRiwweEI1LAotICAgIDB4ODgsMHg3QSwweEE1LDB4NTksMHgy
RCwweDJELDB4MkQsMHgyNywweEU4LDB4ODIsMHg2NywweDdBLDB4RUUsMHhFNywweEI2LDB4RDgs
Ci0gICAgMHgzMSwweEM1LDB4QzgsMHg4MiwweDJELDB4QTUsMHgzNSwweEI1LDB4OTIsMHhENSww
eEQwLDB4QkMsMHhBMiwweDhCLDB4MkIsMHhBRCwKLSAgICAweDcyLDB4Q0QsMHhGMSwweEJDLDB4
NDAsMHg3MiwweEZBLDB4RjIsMHg5NCwweENELDB4MTEsMHhCRCwweEU5LDB4RTMsMHhDMiwweEMy
LAotICAgIDB4NTIsMHhDNSwweEQwLDB4QjQsMHgwQSwweEJGLDB4RkUsMHg3RSwweDMyLDB4QzUs
MHg4RiwweEFDLDB4RTAsMHg3MCwweDdBLDB4N0YsCi0gICAgMHhCMCwweEI0LDB4NEYsMHhBNCww
eDBDLDB4OEYsMHhFRiwweEFCLDB4QjAsMHhBQywweEVBLDB4N0EsMHhERSwweDk2LDB4MjYsMHgw
MCwKLSAgICAweEYxLDB4QkMsMHg0RSwweEE0LDB4NTUsMHgzOSwweDAwLDB4MDgsMHgzMiwweEJE
LDB4OEYsMHhBQywweEQ1LDB4RkEsMHhFMCwweDgwLAotICAgIDB4RjEsMHhCQywweDZGLDB4QUMs
MHhGQiwweDdGLDB4RkUsMHhBOCwweEIwLDB4QUMsMHg2RiwweEFDLDB4RkUsMHhERSwweERGLDB4
NzgsCi0gICAgMHg2MywweDU5LDB4MjMsMHg1MSwweDQyLDB4RkUsMHhGRSwweDc1LDB4NDQsMHg1
OSwweDIzLDB4NDksMHhGQSwweEEyLDB4QkIsMHhGNywKLSAgICAweDQzLDB4NTEsMHgyMywweDUx
LDB4QjUsMHg2RiwweDhCLDB4NzYsMHg0MywweDUxLDB4MDMsMHg0OSwweEEyLDB4N0EsMHg3QSww
eDc2LAotICAgIDB4NDQsMHg1MSwweDAyLDB4NDksMHgzNSwweEQ1LDB4QkYsMHhBQiwweDQzLDB4
NTEsMHgwMywweDQ5LDB4OUEsMHhGNywweEE3LDB4QUIsCi0gICAgMHg2MywweDU5LDB4MDMsMHg1
MSwweERGLDB4NUYsMHhENywweEZGLDB4NjQsMHg1OSwweDAzLDB4NTEsMHg4RCwweEFGLDB4QUEs
MHgyQywKLSAgICAweDY0LDB4NTksMHgyMywweDUxLDB4NUMsMHhGNiwweEJFLDB4QUYsMHg2Nyww
eDdBLDB4NDMsMHg1OSwweEQ1LDB4OTUsMHgxNSwweDE1LAotICAgIDB4QUIsMHhBMywweDI5LDB4
OTMsMHgyOSwweDI5LDB4MDksMHgwQiwweEVDLDB4QUIsMHg4QiwweDlCLDB4MkIsMHhCRSwweEZF
LDB4N0YsCi0gICAgMHgwRCwweEFDLDB4NkIsMHg5QiwweDAyLDB4MEEsMHhERiwweDU1LDB4RUMs
MHhBQiwweDJBLDB4OTMsMHgwMCwweDAwLDB4QUEsMHhERiwKLSAgICAweEVDLDB4QUIsMHhFOCww
eDhBLDB4QTgsMHhBMCwweEZBLDB4NUYsMHg4QiwweDlCLDB4ODcsMHg3QSwweEY4LDB4NzgsMHg1
NiwweDU3LAotICAgIDB4QTgsMHg3QSwweDQ2LDB4NzIsMHg1QywweDVGLDB4NTcsMHg1NywweDQ2
LDB4NzIsMHgyNiwweDZBLDB4OTgsMHg4OCwweEY4LDB4REYsCi0gICAgMHhDOCwweDgyLDB4MjYs
MHg2QSwweEY1LDB4RkQsMHhCNSwweDBELDB4QzgsMHg4MiwweDg3LDB4N0EsMHg4OSwweEUzLDB4
QUEsMHg3QywKLSAgICAweEE4LDB4ODIsMHgwNSwweDZBLDB4MDAsMHhFOCwweDdDLDB4NTcsMHg4
NywweDdBLDB4QzQsMHg2MSwweEE4LDB4RUUsMHhENSwweDU1LAotICAgIDB4MjYsMHg2QSwweDAz
LDB4NDEsMHg1OCwweDc4LDB4NzIsMHhFMiwweEUzLDB4NDAsMHg2MSwweDI4LDB4RkYsMHhGRSww
eEI2LDB4OUMsCi0gICAgMHhFMywweDM4LDB4QTIsMHgzMCwweDU3LDB4N0YsMHhGRSwweDhCLDB4
RTMsMHgzOCwweEEyLDB4MzAsMHhENSwweEI3LDB4QkEsMHhFMiwKLSAgICAweDAzLDB4NDEsMHhB
MiwweDMwLDB4M0QsMHhBQSwweDBCLDB4MDIsMHgyNCwweDQxLDB4QzIsMHgzOCwweEJGLDB4RDcs
MHg5RSwweDBGLAotICAgIDB4NDQsMHg0OSwweEUzLDB4MzgsMHhBOSwweDAzLDB4MDMsMHg4Miww
eDQ0LDB4NDksMHhFMywweDM4LDB4NTcsMHhFQSwweEFBLDB4QUEsCi0gICAgMHgyNCwweDQxLDB4
QTIsMHgyOCwweDdCLDB4NkYsMHhFOCwweEEwLDB4QzMsMHgzMCwweDgxLDB4MjgsMHg4RiwweEVG
LDB4MkYsMHgyQywKLSAgICAweDI0LDB4NDEsMHhBMiwweDMwLDB4QkYsMHhCNSwweDNGLDB4MkYs
MHg0NSwweDQxLDB4QzMsMHgzOCwweEZFLDB4RTgsMHhFMiwweDcyLAotICAgIDB4RTMsMHgzMCww
eEEyLDB4MzAsMHhGRSwweDU1LDB4NUYsMHhFQiwweEUzLDB4MzAsMHhBMiwweDMwLDB4QkYsMHhG
RiwweEZGLDB4MkEsCi0gICAgMHhFMywweDM4LDB4QTIsMHgyOCwweDBBLDB4QkIsMHhGRSwweEJG
LDB4MjQsMHgzOSwweEMyLDB4MzAsMHhGRiwweEY1LDB4RkQsMHgyRiwKLSAgICAweDAzLDB4Mzks
MHhDMiwweDMwLDB4RDcsMHhCRiwweEJFLDB4RTIsMHhFMywweDM4LDB4QzIsMHgzMCwweDk4LDB4
RDgsMHg3MiwweEZELAotICAgIDB4MDQsMHg0MSwweEUyLDB4MzAsMHhGRCwweEZGLDB4MkIsMHgw
QiwweDQ0LDB4NDEsMHhFMywweDM4LDB4NzcsMHhGRiwweDdGLDB4RjIsCi0gICAgMHgyNCwweDQx
LDB4RTIsMHgzOCwweERGLDB4N0EsMHgyMCwweDIwLDB4MjQsMHg0MSwweEUyLDB4MzgsMHhERCww
eEJCLDB4QUIsMHgwOCwKLSAgICAweDg0LDB4NDksMHgwMywweDQxLDB4RkYsMHg2OSwweEUzLDB4
RkYsMHgyMywweDQxLDB4RTMsMHgzOCwweEEyLDB4RjAsMHhGOCwweEI4LAotICAgIDB4NDQsMHg0
MSwweDAzLDB4MzksMHhGRiwweDVELDB4QUYsMHhBMCwweDIzLDB4NDEsMHhFMiwweDM4LDB4MDIs
MHg4OSwweEFFLDB4MkEsCi0gICAgMHhBNSwweDUxLDB4MjMsMHg0MSwweEE5LDB4QUQsMHhCRCww
eEY1LDB4QzUsMHg1OSwweDY0LDB4NTEsMHg5RiwweEIwLDB4QkYsMHhBRCwKLSAgICAweDY3LDB4
NzIsMHhFNiwweDYxLDB4MkQsMHgyNywweDJCLDB4QTksMHhDOCwweDgyLDB4MjYsMHg2QSwweEU4
LDB4ODIsMHg4QSwweDlELAotICAgIDB4NkUsMHhBQywweDY3LDB4NzIsMHgyNSwweEI1LDB4MzUs
MHg5NSwweDkzLDB4Q0QsMHhBRiwweEJDLDB4QkQsMHgyRCwweDBCLDB4MEIsCi0gICAgMHg5Myww
eENELDB4NkYsMHhBQywweEIwLDB4RjgsMHg5QywweEJFLDB4OTQsMHhDRCwweEYxLDB4QkMsMHhB
MiwweEEyLDB4RTIsMHg1OCwKLSAgICAweDUzLDB4QzUsMHhCMCwweEI0LDB4N0EsMHg3OCwweDYy
LDB4N0YsMHg5MCwweEFDLDB4RUUsMHg5QiwweDI4LDB4MEEsMHhBMCwweDdDLAotICAgIDB4RDAs
MHhCNCwweENELDB4OTMsMHgwMiwweDgwLDB4RUEsMHhGNSwweEIwLDB4QjQsMHgwRSwweDlDLDB4
QTAsMHhGRiwweEQ3LDB4NzUsCi0gICAgMHg2RiwweEFDLDB4Q0MsMHg5MywweDAwLDB4QUEsMHg1
RiwweDc3LDB4MTEsMHhCRCwweENELDB4OUIsMHgwMiwweEFGLDB4RkQsMHhENSwKLSAgICAweDEx
LDB4QkQsMHg0RiwweEE0LDB4MDAsMHg4QSwweDJGLDB4RDUsMHgzMiwweEM1LDB4QjAsMHhCNCww
eDdGLDB4MkEsMHg4MCwweDA5LAotICAgIDB4NDMsMHg1MSwweDIzLDB4NTEsMHhBRSwweEIwLDB4
M0MsMHg5NCwweDQzLDB4NTEsMHgwMywweDQ5LDB4MkYsMHgzNiwweEJDLDB4NUEsCi0gICAgMHg0
MywweDUxLDB4RTIsMHg0MCwweDAwLDB4QTIsMHhGMCwweEZFLDB4NDQsMHg1MSwweDAzLDB4NDks
MHg1NywweEQ1LDB4QTUsMHhCRCwKLSAgICAweDQzLDB4NTEsMHgyMywweDQ5LDB4NjUsMHhCRiww
eDNBLDB4RTgsMHg0MywweDUxLDB4MjMsMHg1MSwweEI1LDB4N0UsMHg5QiwweDlELAotICAgIDB4
NDQsMHg1OSwweDIzLDB4NTEsMHgwRiwweEEzLDB4NDAsMHgwMiwweDY0LDB4NTksMHgyMywweDUx
LDB4QjQsMHhFNywweDZGLDB4RjcsCi0gICAgMHg0MywweDU5LDB4MDMsMHg1MSwweEEyLDB4QTMs
MHhBMiwweDY4LDB4MjksMHg5MywweDQzLDB4NTEsMHhCNSwweDM1LDB4MzUsMHgyNSwKLSAgICAw
eEFCLDB4QTMsMHg0QSwweDkzLDB4MDksMHhBQiwweDgyLDB4RUIsMHhDQiwweEEzLDB4QTgsMHg4
MiwweEEwLDB4QTgsMHhGQSwweDdFLAotICAgIDB4NEIsMHg5QiwweDg3LDB4N0EsMHgwMCwweEFB
LDB4N0UsMHg1NSwweDA5LDB4OEIsMHg2NywweDcyLDB4MDAsMHhFRSwweDc3LDB4NTUsCi0gICAg
MHhFOSwweDhBLDB4NjcsMHg3MiwweEYwLDB4N0UsMHhENSwweDU1LDB4ODcsMHg3QSwweDQ2LDB4
NzIsMHhFOCwweDdGLDB4NUEsMHg1RiwKLSAgICAweDg2LDB4NzIsMHgyNiwweDcyLDB4REQsMHg3
QiwweEY3LDB4REYsMHg4NywweDcyLDB4MjUsMHg2QSwweEY3LDB4QkIsMHhCQiwweDJBLAotICAg
IDB4QzgsMHg4MiwweDQ2LDB4NzIsMHg4RiwweDBCLDB4QTIsMHg3MiwweDg3LDB4N0EsMHgwNSww
eDZBLDB4QzAsMHg2OCwweDdFLDB4NzcsCi0gICAgMHgyNiwweDZBLDB4QzQsMHg2MSwweDU4LDB4
RjYsMHhBQSwweEVBLDB4MDYsMHg2QSwweEM0LDB4NjEsMHg1NSwweEJGLDB4QkEsMHgyMCwKLSAg
ICAweDA2LDB4NkEsMHhBNSwweDU5LDB4NkIsMHhFRiwweEM4LDB4ODAsMHhBNSwweDU5LDB4QzIs
MHgzOCwweDU3LDB4NUUsMHg1OCwweDc4LAotICAgIDB4MDQsMHg0MSwweDgxLDB4MjgsMHgwQiww
eEY1LDB4NzUsMHhGRiwweDI0LDB4NDEsMHhBMiwweDMwLDB4RUEsMHgwQiwweEFELDB4QkQsCi0g
ICAgMHgwMywweDM5LDB4QTIsMHgzMCwweEJBLDB4RkYsMHg1QywweDVBLDB4NDQsMHg0OSwweEMy
LDB4MzAsMHhBQiwweDJCLDB4MjksMHg4OSwKLSAgICAweDY1LDB4NDksMHgyNCwweDQxLDB4NkUs
MHg3MCwweDc4LDB4QjcsMHg0NCwweDQ5LDB4MDMsMHg0MSwweERELDB4QUUsMHg3QywweEY4LAot
ICAgIDB4NDQsMHg0MSwweEUzLDB4MzgsMHg3NiwweEJGLDB4QUYsMHgyRiwweDA0LDB4MzksMHhB
MiwweDI4LDB4REUsMHhGOCwweDdDLDB4NUMsCi0gICAgMHgyNCwweDQxLDB4ODIsMHgyOCwweDBC
LDB4MkIsMHhFNywweEQ1LDB4MDQsMHg0MSwweEEyLDB4MjgsMHhFMCwweEI4LDB4QkYsMHhCRCwK
LSAgICAweDA0LDB4MzksMHhDMywweDMwLDB4QkYsMHhFQSwweDVBLDB4NTcsMHgwMywweDM5LDB4
QTIsMHgyOCwweEIzLDB4RkEsMHhGNywweEZGLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhC
RCwweEI3LDB4M0YsMHhBRiwweDI0LDB4NDEsMHhDMywweDMwLDB4MjIsMHgwMiwweENBLDB4RkYs
Ci0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDcwLDB4NTAsMHhFRSwweEI3LDB4MDMsMHgzOSww
eEMzLDB4MzAsMHhCNSwweDNFLDB4RkUsMHg5RCwKLSAgICAweDY1LDB4NDksMHgwMywweDM5LDB4
RkQsMHhBRiwweDJELDB4MjksMHg2NCwweDQ5LDB4MDMsMHgzOSwweDVGLDB4RUUsMHhFOCwweDcw
LAotICAgIDB4NjUsMHg0OSwweDAyLDB4NDEsMHhBQSwweEFBLDB4ODIsMHhBOSwweDY0LDB4NDks
MHhFMywweDM4LDB4QUMsMHhFQSwweEVFLDB4NUUsCi0gICAgMHg0NCwweDQ5LDB4QzIsMHgzMCww
eEEyLDB4QUUsMHhENiwweDVGLDB4MjMsMHg0MSwweEMxLDB4MzAsMHgyOCwweEEwLDB4N0EsMHhG
RCwKLSAgICAweDQ0LDB4NDEsMHhDMiwweDMwLDB4QTAsMHhFQiwweEJGLDB4QjUsMHg0NCwweDQx
LDB4MDMsMHgzOSwweDlCLDB4RDksMHg2QiwweEVELAotICAgIDB4NjQsMHg0OSwweDAzLDB4NDEs
MHhBMCwweEFCLDB4QjksMHhGQiwweEE1LDB4NTksMHgwMywweDQxLDB4MEIsMHhBRSwweDJCLDB4
MDUsCi0gICAgMHgyNiwweDZBLDB4QTUsMHg1OSwweDJELDB4MjUsMHgzOSwweDNCLDB4NjcsMHg3
MiwweEU1LDB4NjEsMHg5NywweDk2LDB4RkMsMHhGMCwKLSAgICAweDZCLDB4OTMsMHgyNiwweDZB
LDB4MzUsMHgzRCwweDE1LDB4MUQsMHg3MiwweENELDB4RDAsMHhCQywweDAzLDB4MDEsMHgwMSww
eDgxLAotICAgIDB4NTMsMHhDNSwweDZGLDB4QUMsMHgyRSwweDJFLDB4MjcsMHhGRCwweDkzLDB4
Q0QsMHg0RSwweEE0LDB4RTAsMHhFOCwweDdFLDB4NTcsCi0gICAgMHhEMCwweEI0LDB4QUQsMHg5
MywweEEwLDB4RUEsMHg3RiwweDVGLDB4MkUsMHhBNCwweDhDLDB4OEIsMHhGOCwweDVGLDB4Nzcs
MHg3NSwKLSAgICAweEVFLDB4OUIsMHg4QywweDhCLDB4MEIsMHhBRCwweEE1LDB4OUQsMHgwRSww
eDlDLDB4QUQsMHg5MywweDJBLDB4RjUsMHgyRCwweEZGLAotICAgIDB4MkUsMHg5QywweDhDLDB4
OEIsMHg4QSwweEEyLDB4RkEsMHg3QSwweDJFLDB4QTQsMHg2QywweDgzLDB4MkYsMHgzNywweDM3
LDB4OTUsCi0gICAgMHg4RiwweEFDLDB4MkYsMHhBNCwweEJGLDB4MkIsMHgyNywweDJCLDB4MzIs
MHhDNSwweDhGLDB4QUMsMHhERCwweEFCLDB4MkIsMHgwQiwKLSAgICAweDQzLDB4NTEsMHgyMyww
eDUxLDB4RjYsMHgzOSwweDk2LDB4RDUsMHgyMywweDUxLDB4MDIsMHg0OSwweEM4LDB4NkEsMHg3
OCwweDU0LAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDgsMHhFNywweDJGLDB4ODIsMHgyQSwweDY0
LDB4NTEsMHgwMiwweDQ5LDB4RUQsMHhFRCwweEFGLDB4Q0YsCi0gICAgMHg0NCwweDUxLDB4MDIs
MHg0OSwweDgwLDB4QjAsMHhGRiwweEE2LDB4NDQsMHg1OSwweDIyLDB4NDksMHgzRiwweDI5LDB4
ODEsMHhCOCwKLSAgICAweDQ0LDB4NTksMHgyMywweDUxLDB4MDAsMHgyMCwweERCLDB4RjEsMHg2
NCwweDU5LDB4MDMsMHg1MSwweEEyLDB4QjIsMHg3QSwweEZCLAotICAgIDB4NDMsMHg1OSwweDAz
LDB4NTEsMHhERSwweEZFLDB4RjYsMHg3NSwweDZBLDB4OUIsMHg0MywweDU5LDB4MjUsMHgyNSww
eDI1LDB4MkQsCi0gICAgMHg2QSwweDlCLDB4QzgsMHg4MiwweDAwLDB4ODAsMHhFOCwweDdBLDB4
MjksMHg5MywweDY3LDB4NzIsMHhFOCwweDVFLDB4NTcsMHg1RiwKLSAgICAweDg3LDB4N0EsMHg0
NiwweDcyLDB4RkMsMHg3MiwweEVFLDB4OUUsMHg4NywweDdBLDB4NDYsMHg3MiwweEFCLDB4QkUs
MHgzQSwweEJFLAotICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhCQSwweEJDLDB4RUYsMHhCRiww
eDg3LDB4N0EsMHg0NiwweDcyLDB4N0EsMHhEQSwweDlFLDB4N0UsCi0gICAgMHg2NywweDdBLDB4
NDYsMHg3MiwweDU3LDB4N0EsMHhCNSwweEFELDB4QTgsMHg3QSwweDQ2LDB4NzIsMHgzNSwweDJG
LDB4QUYsMHhGQiwKLSAgICAweEE4LDB4N0EsMHgwNSwweDZBLDB4NjAsMHg1RiwweDU3LDB4NTcs
MHgwNSwweDZBLDB4QzUsMHg2MSwweEMwLDB4OTgsMHhFQSwweDVGLAotICAgIDB4MDUsMHg2QSww
eEM1LDB4NjEsMHhFMiwweEJFLDB4QjgsMHhGRiwweDI2LDB4NkEsMHhFNSwweDY5LDB4QUYsMHgw
QSwweDBELDB4MEYsCi0gICAgMHg0NywweDcyLDB4MDYsMHg2QSwweDdCLDB4QUIsMHg4RiwweDJB
LDB4MjYsMHg2QSwweEUzLDB4MzgsMHg1QSwweDdDLDB4NzgsMHhFMCwKLSAgICAweEMyLDB4Mzgs
MHg4MSwweDI4LDB4RjAsMHhGQywweEZDLDB4RkMsMHgwMywweDM5LDB4ODEsMHgyOCwweDJELDB4
QUQsMHhBOSwweEFCLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MzgsMHg3QSwweEU4LDB4RkEsMHhB
QSwweDY1LDB4NDksMHhDMiwweDM4LDB4RTksMHhDQiwweENCLDB4RTMsCi0gICAgMHg0NCwweDQx
LDB4QzIsMHgzOCwweDBGLDB4QkYsMHhGNywweEQ3LDB4MjQsMHg0MSwweEMyLDB4MzAsMHgwMCww
eEZBLDB4N0EsMHg1NSwKLSAgICAweDIzLDB4NDEsMHhDMywweDMwLDB4MkIsMHhBQiwweDYzLDB4
N0IsMHhFMywweDM4LDB4ODIsMHgyMCwweEZDLDB4RkUsMHg1RSwweDVFLAotICAgIDB4QzMsMHgy
OCwweDYxLDB4MjAsMHhGRSwweEJFLDB4M0YsMHgyRiwweDAzLDB4MzEsMHg4MSwweDI4LDB4QUYs
MHhFQiwweEY4LDB4RkMsCi0gICAgMHhDMiwweDI4LDB4NjEsMHgyMCwweDJBLDB4MjIsMHgyQiww
eEFBLDB4RTMsMHgzOCwweEMyLDB4MjgsMHg1RiwweERELDB4OTUsMHhGRCwKLSAgICAweEUzLDB4
MzAsMHhDMiwweDMwLDB4MDIsMHhBOSwweDkzLDB4NUUsMHgwMywweDM5LDB4QzMsMHgzMCwweDdF
LDB4MzcsMHhBRiwweEFELAotICAgIDB4MDQsMHgzOSwweEMzLDB4MzAsMHhGNSwweDdGLDB4QUYs
MHhERiwweEUzLDB4MzgsMHhDMiwweDMwLDB4MUYsMHg4QiwweDBCLDB4QjksCi0gICAgMHg4NSww
eDUxLDB4MDMsMHgzOSwweDI5LDB4ODksMHhGRCwweDU1LDB4ODUsMHg0OSwweDAzLDB4NDEsMHhG
OCwweDdBLDB4NUYsMHg1NywKLSAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4OEIsMHhBRCwweEI1
LDB4RjcsMHgyNCwweDQxLDB4RTIsMHgzOCwweDU3LDB4N0YsMHhCRiwweDJGLAotICAgIDB4MDMs
MHgzOSwweEMyLDB4MzAsMHhGOSwweEVGLDB4QzYsMHhEQywweDAzLDB4MzksMHhDMiwweDMwLDB4
QUIsMHgwMywweDhFLDB4MkQsCi0gICAgMHgyMywweDM5LDB4QzIsMHgzMCwweDNGLDB4M0UsMHgz
NiwweEJFLDB4NDQsMHg0MSwweDAzLDB4MzksMHg3RiwweDc3LDB4N0EsMHhFMiwKLSAgICAweDQ0
LDB4NDksMHhDMiwweDMwLDB4QUEsMHhBQiwweDBCLDB4MkYsMHhBNSwweDUxLDB4MDMsMHg0MSww
eEFELDB4QkYsMHhBQiwweDBBLAotICAgIDB4NDcsMHg2QSwweEE1LDB4NTEsMHgyRCwweDJELDB4
QUQsMHg3NSwweDY3LDB4NzIsMHhBNSwweDU5LDB4ODAsMHg4MCwweEZCLDB4RjUsCi0gICAgMHhD
OCwweDdBLDB4ODQsMHg1OSwweDJFLDB4M0YsMHhCRiwweEJELDB4NzIsMHhDRCwweDhDLDB4OTMs
MHg4MywweDgyLDB4QTMsMHg4OSwKLSAgICAweDkwLDB4QjQsMHhBRCwweDkzLDB4ODIsMHhFOCww
eEY4LDB4NzAsMHgyRiwweEE0LDB4OEMsMHg4QiwweEEwLDB4RUEsMHg1RiwweEQ1LAotICAgIDB4
RUUsMHg5MywweDhDLDB4OEIsMHg3QSwweDdFLDB4RkYsMHhCRCwweENELDB4OTMsMHg4RCwweDhC
LDB4RjcsMHg3OSwweEZELDB4M0IsCi0gICAgMHhDRCwweDkzLDB4NkMsMHg4MywweDNGLDB4QUEs
MHhGQSwweDcwLDB4RUUsMHg5QiwweDBBLDB4N0IsMHhBMCwweEZBLDB4N0UsMHg3RiwKLSAgICAw
eEFELDB4OTMsMHhFQSwweDcyLDB4RTAsMHhGRSwweEZELDB4NUQsMHg4QywweDhCLDB4RUIsMHg3
MiwweDNCLDB4RUYsMHhGRiwweDc3LAotICAgIDB4MkUsMHhBNCwweDJCLDB4N0IsMHgwMiwweDJC
LDB4RkQsMHhGRCwweDMyLDB4QkQsMHhBRCwweDkzLDB4MEEsMHgyQiwweEJELDB4RkQsCi0gICAg
MHg0MywweDUxLDB4MDMsMHg0OSwweEJCLDB4QUYsMHhCQywweEQ2LDB4MjMsMHg0OSwweDAyLDB4
NDksMHgzRCwweDc3LDB4NTgsMHg1OCwKLSAgICAweDQzLDB4NTEsMHgwMiwweDQ5LDB4MzMsMHhC
RCwweEZELDB4REQsMHg0MywweDQ5LDB4RTIsMHg0OCwweEEyLDB4RUUsMHhFQSwweDZBLAotICAg
IDB4NjQsMHg1OSwweDAyLDB4NDksMHhCRiwweEFELDB4MjksMHhBQSwweDQzLDB4NTEsMHgwMyww
eDUxLDB4ODAsMHgyOCwweEE4LDB4QjIsCi0gICAgMHg0NCwweDUxLDB4MjMsMHg1MSwweDczLDB4
NjMsMHgwOCwweDdBLDB4NDMsMHg1MSwweDAyLDB4NDksMHhBRSwweEVFLDB4NUMsMHhEQSwKLSAg
ICAweDIzLDB4NTEsMHgwMywweDQ5LDB4RDUsMHg2NSwweDVFLDB4MTMsMHgwQSwweDkzLDB4MjMs
MHg1MSwweDBELDB4MEQsMHgwOSwweDA5LAotICAgIDB4MkEsMHg5MywweDg3LDB4N0EsMHhGOCww
eDc4LDB4RkUsMHg3RSwweEE3LDB4N0EsMHg2NywweDdBLDB4RkMsMHhFRSwweEJGLDB4NUUsCi0g
ICAgMHg4NywweDdBLDB4NjcsMHg3QSwweDU2LDB4NUYsMHhEQSwweDgzLDB4ODcsMHg3QSwweDQ3
LDB4NzIsMHg4RSwweEI4LDB4QkEsMHgwOCwKLSAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4QUUs
MHhCQiwweDVCLDB4QTIsMHg2NiwweDcyLDB4NDYsMHg3MiwweDY0LDB4RDYsMHg1QywweEY3LAot
ICAgIDB4ODcsMHg3QSwweDQ2LDB4NzIsMHhENSwweEY3LDB4MzUsMHhCOSwweDg3LDB4N0EsMHg0
NiwweDcyLDB4RTksMHg2MCwweDcwLDB4N0EsCi0gICAgMHgyNiwweDcyLDB4QzUsMHg2MSwweEYw
LDB4RjgsMHg2RSwweDVBLDB4RTUsMHg2MSwweEE0LDB4NjEsMHg5RiwweDE3LDB4MzUsMHhBRCwK
LSAgICAweEU1LDB4NjksMHhDNSwweDYxLDB4QkIsMHhGOCwweDVDLDB4OTQsMHgyNiwweDZBLDB4
QzQsMHg2MSwweDIzLDB4MkIsMHgyNSwweDJGLAotICAgIDB4NjcsMHg3QSwweDI2LDB4NzIsMHhG
RiwweERELDB4RkQsMHg4NywweDQ2LDB4NkEsMHhFMiwweDM4LDB4RTAsMHhFOCwweDc4LDB4NzAs
Ci0gICAgMHhFMiwweDM4LDB4NjEsMHgyOCwweEZDLDB4RkUsMHhENywweEY3LDB4MjMsMHg0MSww
eEExLDB4MjgsMHhGRCwweEJGLDB4QUYsMHhBMywKLSAgICAweDY0LDB4NDksMHhFMywweDM4LDB4
NUQsMHhCOSwweDJGLDB4MzUsMHg2NCwweDQ5LDB4QzIsMHgzMCwweEVCLDB4NkEsMHg3OCwweDc4
LAotICAgIDB4RTMsMHgzOCwweDgxLDB4MjgsMHhBOCwweEZFLDB4NUYsMHg3RSwweEMzLDB4MzAs
MHg4MiwweDIwLDB4MjAsMHgyQiwweEJFLDB4RjUsCi0gICAgMHhFMywweDMwLDB4NjIsMHgyMCww
eDgwLDB4RTIsMHhFMiwweDdBLDB4QzIsMHgyOCwweDYxLDB4MjAsMHg3RSwweERGLDB4NzUsMHg3
NywKLSAgICAweEMzLDB4MjgsMHg2MSwweDIwLDB4MkYsMHgyRiwweEJGLDB4RjUsMHhDMywweDMw
LDB4ODIsMHgyMCwweDU4LDB4RjgsMHhCNywweEFGLAotICAgIDB4RTMsMHgzMCwweEEyLDB4Mjgs
MHg1NSwweDY5LDB4Q0IsMHhBRiwweEUzLDB4MzAsMHhBMiwweDI4LDB4RUIsMHhFQSwweEE4LDB4
RkUsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDdFLDB4RjUsMHhERiwweEFBLDB4MDMsMHgz
OSwweEEyLDB4MzAsMHhBQiwweEFCLDB4RkIsMHg1RSwKLSAgICAweEUzLDB4MzAsMHhBMiwweDMw
LDB4M0MsMHhDRSwweEU5LDB4QUYsMHgwMywweDM5LDB4QTIsMHgzMCwweEZCLDB4QUQsMHgwOSww
eEFBLAotICAgIDB4MDMsMHgzOSwweEUzLDB4MzAsMHgzRSwweDhBLDB4QUMsMHg1NywweDAzLDB4
MzksMHhFMiwweDM4LDB4RkIsMHg1NywweDU4LDB4QjAsCi0gICAgMHgwMywweDM5LDB4RTIsMHgz
OCwweDAwLDB4MzAsMHhCRiwweEMzLDB4MjMsMHg0MSwweEUyLDB4MzgsMHhBRSwweEY1LDB4N0Us
MHg3OCwKLSAgICAweDIzLDB4NDEsMHhDMiwweDMwLDB4RjgsMHhGRiwweEI3LDB4MjksMHg0NCww
eDQxLDB4RTIsMHgzOCwweEJELDB4REQsMHhGRiwweEE4LAotICAgIDB4MjMsMHgzOSwweEUyLDB4
MzAsMHhGOCwweEIyLDB4QkEsMHhGQiwweDIzLDB4MzksMHhFMiwweDMwLDB4MDMsMHgyRCwweEI1
LDB4OUQsCi0gICAgMHgyMywweDQxLDB4QzEsMHgzMCwweDJBLDB4RjYsMHhFRSwweEZBLDB4QzUs
MHg1MSwweDAyLDB4MzksMHg4RSwweEZELDB4QjUsMHhCNSwKLSAgICAweEM1LDB4NTEsMHg0Myww
eDQ5LDB4MkQsMHhBRCwweEZGLDB4QTAsMHg0NiwweDZBLDB4QTUsMHg1MSwweEE1LDB4QUQsMHgw
RCwweEY1LAotICAgIDB4NDcsMHg2QSwweEE0LDB4NTEsMHgzQiwweEEyLDB4MkYsMHhCNywweDkw
LDB4QjQsMHg4OCwweDcyLDB4MDMsMHgyRCwweDJELDB4MEQsCi0gICAgMHg5MCwweEI0LDB4QUQs
MHg4QiwweDYwLDB4RTAsMHhFMCwweEMwLDB4OEMsMHg4QiwweDJCLDB4ODMsMHgwQSwweDNFLDB4
MkUsMHgzNCwKLSAgICAweENELDB4OTMsMHg2QywweDgzLDB4MjksMHgzQSwweEFBLDB4QkEsMHhD
RCwweDkzLDB4MEEsMHg3MywweDgwLDB4QzAsMHhGOCwweDVFLAotICAgIDB4OEMsMHg4QiwweEE5
LDB4NkEsMHhBMCwweEVGLDB4RjcsMHg1NywweDJCLDB4N0IsMHhDQSwweDZBLDB4ODAsMHg4Miww
eEZCLDB4REYsCi0gICAgMHgyQSwweDczLDB4Q0EsMHg3MiwweEZGLDB4RDYsMHhGNywweERFLDB4
NEMsMHg4MywweEVBLDB4NzIsMHhCNywweEFCLDB4QUIsMHgyQSwKLSAgICAweENELDB4OTMsMHgy
QiwweDdCLDB4QTUsMHhBNSwweDM3LDB4MkYsMHgwRSwweDlDLDB4NkMsMHg4MywweDA5LDB4Mzcs
MHg5NywweEQ0LAotICAgIDB4NDMsMHg1MSwweEUyLDB4NDAsMHg2RSwweEQyLDB4RjIsMHhCQSww
eDQzLDB4NTEsMHhFMiwweDQwLDB4QjUsMHhBQiwweEFFLDB4RUEsCi0gICAgMHgyMywweDUxLDB4
MDIsMHg0MSwweEJGLDB4MzgsMHhFMCwweERCLDB4NDMsMHg1MSwweDAyLDB4NDksMHhENiwweEQ2
LDB4RUQsMHhFQiwKLSAgICAweDQzLDB4NTEsMHgwMywweDUxLDB4QTgsMHhCQiwweEFBLDB4RkIs
MHg0MywweDUxLDB4MjMsMHg1MSwweDMwLDB4QkMsMHhBOSwweDQxLAotICAgIDB4NDMsMHg1MSww
eDAzLDB4NDksMHhGOCwweEFBLDB4QUIsMHg2QiwweDIzLDB4NTEsMHhFMiwweDQ4LDB4QTgsMHhC
OCwweDlDLDB4QkUsCi0gICAgMHgyMywweDUxLDB4RTIsMHg0OCwweEJBLDB4QkYsMHhCRiwweDNG
LDB4MDksMHg4QiwweDg0LDB4NTksMHgwOSwweDA5LDB4MDEsMHgwQiwKLSAgICAweEM4LDB4ODIs
MHg4NywweDdBLDB4NzgsMHhGOCwweDc4LDB4NUUsMHhBNywweDdBLDB4NjcsMHg3QSwweDVFLDB4
RkYsMHhFRiwweEVFLAotICAgIDB4QTgsMHg4MiwweDY3LDB4NzIsMHhGRiwweEFFLDB4RTYsMHhC
QywweEE4LDB4N0EsMHg2NywweDdBLDB4RkYsMHhCOCwweEJBLDB4REUsCi0gICAgMHg4NywweDdB
LDB4NjcsMHg3MiwweDlBLDB4NjIsMHg3OCwweDZBLDB4NjYsMHg3MiwweDQ2LDB4NzIsMHhFNiww
eDU2LDB4RkQsMHhENSwKLSAgICAweDg3LDB4N0EsMHg0NiwweDcyLDB4QjYsMHgzNywweEE5LDB4
QkQsMHg4NywweDdBLDB4MDUsMHg2QSwweEUwLDB4RkEsMHg3QSwweDdFLAotICAgIDB4MDYsMHg2
QSwweEE0LDB4NjEsMHg3OCwweDdBLDB4NzYsMHg5RSwweDg3LDB4N0EsMHhDNCwweDYxLDB4NTUs
MHhCRCwweEI1LDB4MkIsCi0gICAgMHg2NywweDdBLDB4MDUsMHg2QSwweEI1LDB4MEIsMHgwMCww
eEJFLDB4QTgsMHg3QSwweDQ2LDB4NzIsMHg1RiwweDhBLDB4RkIsMHg1NSwKLSAgICAweDg3LDB4
N0EsMHgyNiwweDZBLDB4MEIsMHg4MCwweDdGLDB4RDcsMHg0NiwweDZBLDB4MDMsMHg0MSwweDYw
LDB4NjAsMHg2MCwweEUwLAotICAgIDB4RTIsMHgzOCwweDgxLDB4MzAsMHhCNSwweEJGLDB4M0Us
MHgwOCwweDQ0LDB4NDEsMHhFMiwweDM4LDB4ODIsMHhBMiwweDJCLDB4M0QsCi0gICAgMHg0NCww
eDQ5LDB4QzIsMHgzMCwweDJGLDB4QkUsMHg3RSwweDVDLDB4NDQsMHg0OSwweEMyLDB4MzAsMHhG
MCwweDYyLDB4NkIsMHg3RiwKLSAgICAweEMyLDB4MzAsMHg4MiwweDIwLDB4QUEsMHhBMiwweEZB
LDB4NzYsMHhBMiwweDI4LDB4NjIsMHgyMCwweEM4LDB4Q0EsMHhFQSwweDdGLAotICAgIDB4QTIs
MHgyMCwweDYxLDB4MjAsMHg3OCwweEY3LDB4RjUsMHhFRiwweEMzLDB4MjgsMHg2MiwweDIwLDB4
RkYsMHhCRCwweEI3LDB4QUIsCi0gICAgMHhBMiwweDI4LDB4NjEsMHgyMCwweEQ3LDB4QUUsMHhB
OCwweEEwLDB4QzIsMHgyOCwweDgyLDB4MjAsMHhGRCwweEJGLDB4QUIsMHhBRCwKLSAgICAweEMy
LDB4MjgsMHhBMiwweDI4LDB4NEIsMHhGNiwweEUwLDB4RUIsMHhFMywweDMwLDB4QTIsMHgyOCww
eDVGLDB4QUQsMHhBNywweDJELAotICAgIDB4RTMsMHgzMCwweEEyLDB4MjgsMHgwMiwweEUzLDB4
RTIsMHg3QSwweEUzLDB4MzgsMHhBMiwweDI4LDB4QkEsMHhFMiwweEI3LDB4RjUsCi0gICAgMHhD
MiwweDMwLDB4QTIsMHgyOCwweDgyLDB4QjAsMHgwMCwweDJCLDB4MDQsMHgzOSwweEMzLDB4MzAs
MHhFMywweDdELDB4RTUsMHhGRCwKLSAgICAweDAzLDB4MzksMHhDMywweDMwLDB4MjIsMHhBRiww
eEVGLDB4NTcsMHgyMywweDM5LDB4QzIsMHgzMCwweDJBLDB4RUEsMHhFRiwweEJGLAotICAgIDB4
MDMsMHgzOSwweEUyLDB4MzAsMHg4QiwweDdGLDB4NTcsMHgzQSwweDIzLDB4MzksMHhFMiwweDM4
LDB4NEEsMHg0NSwweEZGLDB4QUUsCi0gICAgMHgyMywweDQxLDB4RTMsMHgzOCwweDI1LDB4QjUs
MHgzNSwweDJBLDB4ODQsMHg0OSwweDI0LDB4NDEsMHg2RiwweEVGLDB4M0IsMHhBRiwKLSAgICAw
eDY0LDB4NDksMHgwMywweDM5LDB4NTUsMHhGNywweEJGLDB4ODgsMHg0MywweDQ5LDB4QzEsMHgz
MCwweEY3LDB4REYsMHhGQSwweEEyLAotICAgIDB4NDMsMHg0MSwweEUyLDB4MzgsMHhGRSwweDhE
LDB4QkIsMHhCRiwweDg0LDB4NDksMHhFMiwweDM4LDB4MjUsMHhCNywweEZGLDB4OUYsCi0gICAg
MHhBNCwweDUxLDB4NDMsMHg0OSwweEUwLDB4NTcsMHhGNSwweDA1LDB4MDYsMHg2MiwweDYzLDB4
NDksMHhCNSwweEZELDB4QUQsMHgyQiwKLSAgICAweDI3LDB4NjIsMHg4NCwweDUxLDB4OTcsMHhC
RiwweEJBLDB4ODgsMHhGMSwweEJDLDB4MjcsMHg2MiwweDBELDB4MkQsMHgyRCwweDJELAotICAg
IDB4NzMsMHhDNSwweEVELDB4OUIsMHg3RiwweDdGLDB4RUEsMHg4MCwweDcwLDB4QUMsMHg0OCww
eDYyLDB4RkUsMHhENiwweDVBLDB4RTAsCi0gICAgMHg0QywweDgzLDB4QzcsMHg1MSwweDAwLDB4
RUEsMHhGRSwweDVFLDB4MEIsMHg3MywweEE2LDB4NTEsMHhBMCwweEFBLDB4RkYsMHhGNSwKLSAg
ICAweEE5LDB4NkEsMHgyNywweDVBLDB4MDgsMHhBRSwweEFCLDB4RjUsMHhFQSwweDcyLDB4Njgs
MHg2MiwweDMyLDB4QUEsMHhBRiwweEJELAotICAgIDB4NkMsMHg4QiwweEE5LDB4NkEsMHhGRiww
eEJGLDB4M0QsMHgyRiwweDJFLDB4OUMsMHgwQiwweDdCLDB4RkQsMHhBRiwweDhBLDB4MDAsCi0g
ICAgMHgwRSwweDlDLDB4NkMsMHg4MywweDk1LDB4RDcsMHhFOCwweEUwLDB4NEYsMHhBNCwweDZC
LDB4OEIsMHg1QSwweDcyLDB4NjIsMHg4QSwKLSAgICAweDIzLDB4NDksMHgwMiwweDQ5LDB4RTQs
MHhCOSwweDBELDB4MDksMHgyMywweDQ5LDB4MDMsMHg0OSwweDBELDB4MjUsMHgyRiwweEEwLAot
ICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHg1RSwweDE2LDB4QUUsMHhCQiwweDQzLDB4NTEsMHgy
MywweDUxLDB4NTYsMHg3NCwweEQyLDB4MDEsCi0gICAgMHg0MywweDUxLDB4MDMsMHg0OSwweDBB
LDB4QjIsMHg5RSwweDkyLDB4NDMsMHg1MSwweDAyLDB4NDksMHhFMiwweEVDLDB4NzIsMHhERCwK
LSAgICAweDIzLDB4NTEsMHgwMywweDQ5LDB4RDMsMHg2MywweDAyLDB4REUsMHgyMywweDUxLDB4
RTIsMHg0OCwweDdCLDB4NjAsMHhFRSwweEZFLAotICAgIDB4RTksMHg4MiwweEUyLDB4NDgsMHhE
NSwweEQ1LDB4QjUsMHgyRCwweEU4LDB4OEEsMHgyNiwweDZBLDB4ODEsMHg4MiwweDgwLDB4QTAs
Ci0gICAgMHhDOCwweDdBLDB4NjYsMHg3MiwweEI4LDB4RkUsMHhGRSwweEUzLDB4QTcsMHg3QSww
eDY2LDB4NzIsMHhGQSwweEZFLDB4QkUsMHg4QiwKLSAgICAweEE3LDB4N0EsMHg2NiwweDdBLDB4
QUYsMHhGRiwweEZCLDB4QTIsMHg4NywweDdBLDB4NjYsMHg3MiwweDAwLDB4MEEsMHgwQSwweEEw
LAotICAgIDB4QTcsMHg3QSwweDQ2LDB4NzIsMHhGRSwweDVDLDB4NUYsMHg3RiwweDQ5LDB4OEIs
MHg0NiwweDcyLDB4NTUsMHg1NSwweDk1LDB4MEQsCi0gICAgMHg4QSwweDlCLDB4NjcsMHg3QSww
eDU1LDB4RDUsMHhBQSwweDIwLDB4MjksMHg4QiwweDA2LDB4NkEsMHhGRiwweDgyLDB4RTAsMHg1
RSwKLSAgICAweDY3LDB4N0EsMHgwNiwweDZBLDB4QUUsMHg3MCwweDU3LDB4NTUsMHgyNiwweDZB
LDB4QzUsMHg1OSwweEEwLDB4QTIsMHgwMiwweDdFLAotICAgIDB4NDYsMHg3MiwweEM0LDB4NTks
MHhGRiwweEFBLDB4MDAsMHhENSwweDY3LDB4NzIsMHhDNSwweDYxLDB4MkUsMHhBMiwweDAwLDB4
NTUsCi0gICAgMHhBOCwweDdBLDB4ODQsMHg1MSwweEFBLDB4QTIsMHhBMiwweDU3LDB4NjYsMHg3
MiwweDQ0LDB4NDksMHg3OCwweDY4LDB4N0EsMHg3RiwKLSAgICAweDQ0LDB4NDEsMHhDMiwweDM4
LDB4RDcsMHg3NywweEJFLDB4RTAsMHgwMywweDM5LDB4QzIsMHgzOCwweEJCLDB4QkYsMHhBRiww
eDYwLAotICAgIDB4MjQsMHg0MSwweDgxLDB4MjgsMHhBMCwweEE4LDB4RUYsMHhERiwweDAzLDB4
MzEsMHg2MSwweDE4LDB4RUEsMHhGOCwweEZFLDB4N0YsCi0gICAgMHhBMiwweDIwLDB4NjEsMHgx
OCwweDdDLDB4RUMsMHhFRiwweEZGLDB4QTIsMHgyMCwweDYxLDB4MTgsMHhGNSwweEFELDB4QUIs
MHgwRiwKLSAgICAweEUzLDB4MzAsMHg4MiwweDIwLDB4RjUsMHhGNSwweEJELDB4QjIsMHhFMyww
eDMwLDB4QTIsMHgyOCwweDVCLDB4RUYsMHhBQSwweDBBLAotICAgIDB4RTIsMHgzMCwweDgxLDB4
MjAsMHg3NywweDdGLDB4RkUsMHhBOCwweEEyLDB4MjgsMHg4MSwweDIwLDB4QUIsMHg2NywweEVF
LDB4MDAsCi0gICAgMHhFMiwweDMwLDB4ODIsMHgyMCwweEJGLDB4RkQsMHhGRCwweEEyLDB4QzIs
MHgyOCwweDgxLDB4MjgsMHgwOCwweEE3LDB4QTUsMHgwQiwKLSAgICAweEMyLDB4MzAsMHhBMiww
eDI4LDB4NjIsMHg2QSwweEZCLDB4RDcsMHgwMywweDMxLDB4QTIsMHgyOCwweEI1LDB4RUQsMHgy
QiwweDJELAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhENSwweEJGLDB4OEEsMHgyQiwweDI0
LDB4MzksMHhDMiwweDM4LDB4NkIsMHhDQSwweDBCLDB4QUIsCi0gICAgMHgwMywweDM5LDB4QzIs
MHgzMCwweEY3LDB4RkQsMHgyMiwweDMyLDB4MjMsMHgzOSwweEUzLDB4MzAsMHhBRCwweDNELDB4
NzksMHhFRiwKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4MkEsMHhBQSwweEZBLDB4NUEsMHgy
MywweDM5LDB4RTIsMHgzMCwweEZDLDB4RDUsMHhENywweDU1LAotICAgIDB4MjMsMHg0MSwweEUz
LDB4MzgsMHhBMiwweEE5LDB4QkQsMHg5NSwweDY0LDB4NDksMHgwMywweDM5LDB4MkIsMHhGRiww
eEY1LDB4QjcsCi0gICAgMHg4NSwweDUxLDB4NDQsMHg0OSwweEFFLDB4NzMsMHg2MywweEVGLDB4
NDQsMHg0OSwweDIzLDB4NDEsMHg0MCwweDVFLDB4RTYsMHgwRiwKLSAgICAweDQzLDB4NDEsMHgw
MywweDM5LDB4RDcsMHg1NSwweEZGLDB4QUUsMHg0MywweDQxLDB4MDMsMHgzOSwweDM1LDB4QUYs
MHg3RSwweEUyLAotICAgIDB4ODQsMHg1MSwweDAzLDB4MzksMHgwMiwweEZGLDB4RkQsMHhFRiww
eEM1LDB4NTksMHg0MywweDQxLDB4MEEsMHg5OSwweDdELDB4REQsCi0gICAgMHgwNiwweDYyLDB4
NjQsMHg0OSwweDAyLDB4QkYsMHhGNSwweEJGLDB4RDEsMHhCNCwweDA2LDB4NjIsMHgyRCwweDI1
LDB4MjUsMHhCNSwKLSAgICAweDkzLDB4Q0QsMHhEMSwweEJDLDB4QUEsMHhBQSwweEFCLDB4QkQs
MHg1MywweEM1LDB4MkYsMHhBNCwweDdFLDB4RkUsMHhGOCwweEUwLAotICAgIDB4QjAsMHhBQyww
eEVCLDB4N0EsMHg3RSwweEFBLDB4MjAsMHgwMCwweDhGLDB4QUMsMHhFNiwweDUxLDB4NTcsMHhG
QSwweDAwLDB4MDAsCi0gICAgMHg2RiwweEE0LDB4MDcsMHg1QSwweDU1LDB4RkYsMHgwMCwweDAw
LDB4NEYsMHhBNCwweEE5LDB4NkEsMHg1NSwweEZELDB4MDAsMHgwMCwKLSAgICAweDJFLDB4OUMs
MHhDQSwweDcyLDB4QUQsMHhBQiwweDAwLDB4MDAsMHg2RiwweEFDLDB4RUQsMHg5MywweDJELDB4
QTksMHg4QiwweEFCLAotICAgIDB4NEYsMHhBNCwweEFDLDB4OEIsMHg3MCwweEY4LDB4RTAsMHhB
MiwweDZGLDB4QUMsMHhDQywweDkzLDB4QUQsMHg4RCwweDBELDB4MEQsCi0gICAgMHgyMywweDUx
LDB4MDIsMHg0MSwweEEwLDB4NDMsMHhGRiwweEZGLDB4MjMsMHg1MSwweEUyLDB4NDAsMHhBMiww
eDFBLDB4MkYsMHgwRiwKLSAgICAweDQzLDB4NTEsMHgyMywweDUxLDB4RkQsMHg4QiwweEEwLDB4
MDMsMHg0MywweDUxLDB4MjMsMHg1MSwweDU4LDB4NzQsMHg2NSwweDU0LAotICAgIDB4NDMsMHg1
MSwweDAzLDB4NDksMHhGMywweEJBLDB4RkUsMHhERSwweDIzLDB4NTEsMHgwMiwweDQxLDB4RkMs
MHhBNywweDVGLDB4N0IsCi0gICAgMHgyMywweDQ5LDB4MDMsMHg0OSwweDU0LDB4MjgsMHg3RSww
eEY5LDB4QzQsMHg2MSwweEExLDB4NDAsMHhGRiwweEZGLDB4QkYsMHgzRCwKLSAgICAweDA5LDB4
OEIsMHg0MywweDUxLDB4MEQsMHgwOSwweDAyLDB4MDAsMHgwOSwweDhCLDB4QTcsMHg4MiwweDc4
LDB4RUMsMHhGQSwweDdBLAotICAgIDB4RTgsMHg4MiwweDg2LDB4N0EsMHg1NywweERGLDB4RkYs
MHhGOCwweEE3LDB4N0EsMHg4NywweDdBLDB4REUsMHg1RSwweDVFLDB4MDgsCi0gICAgMHhBNyww
eDdBLDB4NjYsMHg3MiwweEIyLDB4RUEsMHg2MCwweDc4LDB4MjksMHg5MywweDY2LDB4NzIsMHg1
NywweDU1LDB4NTUsMHgxNSwKLSAgICAweEFCLDB4QTMsMHg4NywweDdBLDB4NTUsMHhCNSwweDBC
LDB4MDAsMHg4QSwweDlCLDB4MjUsMHg2QSwweDAyLDB4MDAsMHhDMCwweDc4LAotICAgIDB4OEEs
MHg5QiwweEM1LDB4NjEsMHhFMCwweDVBLDB4NTcsMHg1NSwweDI2LDB4NkEsMHhBNCwweDYxLDB4
QjgsMHhGQiwweEQ3LDB4QUYsCi0gICAgMHgwNiwweDZBLDB4NDQsMHg0OSwweDAwLDB4NjgsMHg1
RSwweDVFLDB4QTQsMHg1OSwweDAzLDB4NDEsMHhFQywweDc3LDB4RjUsMHhFRiwKLSAgICAweDQz
LDB4NDksMHgyMywweDQxLDB4MEIsMHhBMiwweEUyLDB4RDgsMHg0MywweDQ5LDB4MDMsMHg0MSww
eEUyLDB4QTgsMHhFQSwweEY3LAotICAgIDB4NDMsMHg0OSwweDAzLDB4NDEsMHg2NywweDlFLDB4
REUsMHhENywweDg1LDB4NTEsMHgyMywweDQxLDB4QzksMHhFQiwweEVGLDB4RDksCi0gICAgMHg0
NCwweDQ5LDB4QzIsMHgzMCwweEEwLDB4QkEsMHhGRSwweDVFLDB4MDMsMHgzOSwweDgyLDB4MjAs
MHhFMCwweEYwLDB4NUUsMHg3RSwKLSAgICAweEEyLDB4MjgsMHg4MSwweDIwLDB4NjIsMHhFMiww
eEFBLDB4REQsMHhBMiwweDIwLDB4NjEsMHgxOCwweDZBLDB4RTgsMHhGOCwweEZFLAotICAgIDB4
QTIsMHgyOCwweDYxLDB4MTgsMHhENSwweEQ1LDB4QTcsMHhBOSwweEUzLDB4MzAsMHg4MiwweDIw
LDB4QTUsMHhGNSwweEJELDB4MkYsCi0gICAgMHgyNCwweDM5LDB4QTEsMHgyOCwweEFGLDB4M0Qs
MHgzNywweDNFLDB4MjQsMHgzOSwweEMyLDB4MzAsMHhGNiwweEY3LDB4QTQsMHhGQywKLSAgICAw
eEUyLDB4MzAsMHg4MSwweDI4LDB4QkEsMHg3OCwweEZDLDB4RjgsMHhFMywweDMwLDB4QTEsMHgy
OCwweEJCLDB4MDIsMHgyOSwweEY1LAotICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHhFMiwweEYw
LDB4RTgsMHhGRSwweEUzLDB4MjgsMHg4MSwweDI4LDB4RkIsMHhERSwweDdFLDB4RkUsCi0gICAg
MHhDMiwweDI4LDB4ODEsMHgyMCwweEVBLDB4RUYsMHhCRiwweDI3LDB4QzIsMHgyOCwweEEyLDB4
MjgsMHgwOSwweDA1LDB4NTksMHg1QiwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4MEEsMHhG
RiwweEY3LDB4RjcsMHgwMywweDM5LDB4QTIsMHgyOCwweDJCLDB4MkQsMHhGRiwweERGLAotICAg
IDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFMCwweEYwLDB4RkYsMHg1NywweDI0LDB4MzksMHhDMiww
eDMwLDB4QTMsMHhBRiwweEVELDB4OTUsCi0gICAgMHgyMywweDM5LDB4RTIsMHgzMCwweDY4LDB4
N0UsMHhFQiwweEZBLDB4MjMsMHgzOSwweEUyLDB4MzgsMHhCNSwweEI3LDB4MzUsMHhCNSwKLSAg
ICAweDIzLDB4NDEsMHhDMiwweDMwLDB4RjQsMHg3QSwweEY4LDB4RkIsMHg2NCwweDQ5LDB4QzIs
MHgzOCwweEJGLDB4M0YsMHgyRiwweDJELAotICAgIDB4ODUsMHg0OSwweDIzLDB4NDEsMHhBQiww
eEQ2LDB4N0MsMHhGMCwweDQ0LDB4NDksMHhFMiwweDM4LDB4MEEsMHgyQSwweEJGLDB4RjYsCi0g
ICAgMHgyMywweDQxLDB4QzIsMHgzOCwweDAwLDB4MDIsMHhGQywweEZGLDB4NjQsMHg0OSwweEUz
LDB4MzgsMHg4QiwweEFGLDB4REYsMHhERCwKLSAgICAweDg1LDB4NDksMHhFMiwweDM4LDB4ODIs
MHhBQiwweEQ1LDB4RjUsMHhDNSwweDUxLDB4MjMsMHg0MSwweEFCLDB4MkIsMHhBNywweDc1LAot
ICAgIDB4MDYsMHg2MiwweDYzLDB4NDksMHgyQiwweDJBLDB4QUYsMHhENSwweEFDLDB4OTMsMHg2
NCwweDUxLDB4MkYsMHgyRiwweDI1LDB4MzUsCi0gICAgMHgxMSwweEJELDB4MkUsMHhBNCwweDJC
LDB4QUYsMHhCRCwweEZELDB4NTIsMHhDNSwweEIwLDB4QjQsMHgyMCwweDJCLDB4QkYsMHg3RCwK
LSAgICAweDczLDB4Q0QsMHhGMCwweEJDLDB4N0IsMHhBOCwweEEyLDB4QTksMHgzMiwweEM1LDB4
NkYsMHhBQywweEZFLDB4RkUsMHhEQywweDY4LAotICAgIDB4QUYsMHhCNCwweDRGLDB4QTQsMHhD
MCwweEY4LDB4NUIsMHhGRiwweDZGLDB4QUMsMHgyRSwweEE0LDB4RTgsMHhCQSwweDU1LDB4N0Ys
Ci0gICAgMHg4RiwweEFDLDB4MEUsMHg5QywweDVFLDB4RTIsMHhBQSwweDIzLDB4NkYsMHhBQyww
eDBFLDB4OUMsMHhFRiwweEY3LDB4RkEsMHhFMCwKLSAgICAweDZGLDB4QTQsMHgyRSwweEE0LDB4
NEYsMHhENSwweDU1LDB4NUYsMHg5MCwweEFDLDB4RUQsMHg5QiwweDJELDB4MzcsMHhCRiwweEJG
LAotICAgIDB4NDMsMHg1MSwweEUyLDB4NDAsMHhGRiwweDlGLDB4MjUsMHgzRCwweDY0LDB4NTks
MHgwMiwweDQ5LDB4QUQsMHgyQiwweEEyLDB4QUEsCi0gICAgMHg4MywweDUxLDB4MjMsMHg1MSww
eEY3LDB4REUsMHg3NywweDdGLDB4NjMsMHg1MSwweDAyLDB4NDksMHhFOCwweEZBLDB4RUUsMHg3
RiwKLSAgICAweDIzLDB4NDksMHgwMywweDQ5LDB4REEsMHgyMywweDAzLDB4NzksMHgyMywweDQ5
LDB4RTIsMHg0MCwweEY4LDB4MkEsMHg5RSwweEEyLAotICAgIDB4MjMsMHg0OSwweDAyLDB4NDEs
MHg1NiwweDI0LDB4Q0YsMHg2NywweENCLDB4QTMsMHgwMywweDQ5LDB4QjUsMHgyNSwweDBELDB4
MEQsCi0gICAgMHg4QiwweDlCLDB4QzgsMHg4MiwweDdFLDB4RkYsMHhGQywweEM4LDB4MDgsMHg4
QiwweEE3LDB4ODIsMHhGQiwweERFLDB4RkEsMHhFOCwKLSAgICAweEE3LDB4ODIsMHhFNywweDdB
LDB4MkEsMHhBQSwweDIyLDB4QkUsMHhDNywweDgyLDB4ODYsMHg3QSwweEZCLDB4NzYsMHg3RSww
eDU0LAotICAgIDB4QUIsMHhBMywweDQ2LDB4NzIsMHg1NywweEY1LDB4QjcsMHgyQiwweENCLDB4
QTMsMHg2NywweDdBLDB4MkQsMHgwQSwweDAwLDB4ODAsCi0gICAgMHhBQiwweEEzLDB4MjYsMHg2
QSwweDAwLDB4QzAsMHg3OCwweDU2LDB4RTksMHg4QSwweEE0LDB4NTksMHhGOCwweDVFLDB4NUYs
MHg1RiwKLSAgICAweEU2LDB4NjEsMHg4NCwweDU5LDB4QUUsMHgzRCwweDJCLDB4MkYsMHgwNiww
eDZBLDB4NjQsMHg1MSwweDIyLDB4RTgsMHhFOCwweDdBLAotICAgIDB4ODQsMHg1MSwweDIzLDB4
NDksMHhBOCwweEU4LDB4REMsMHhGNywweDY0LDB4NDksMHgyMywweDQxLDB4RkUsMHg3QiwweDZG
LDB4QjIsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEJCLDB4RkYsMHhFNywweDJFLDB4RTUs
MHg2MSwweDAzLDB4NDEsMHg1NSwweDVELDB4RDcsMHgyQSwKLSAgICAweEM1LDB4NTksMHgwMyww
eDQxLDB4NTUsMHg1NSwweEZGLDB4ODAsMHg2NCwweDQ5LDB4RTIsMHgzOCwweEU4LDB4NUEsMHg3
RSwweDdBLAotICAgIDB4RTMsMHgzOCwweEExLDB4MjgsMHhGOCwweEJFLDB4QUUsMHhGNiwweEUz
LDB4MzAsMHg4MSwweDIwLDB4NzIsMHg3MCwweDc4LDB4N0EsCi0gICAgMHg4MSwweDIwLDB4NjEs
MHgxOCwweDAwLDB4QUEsMHgwOCwweDgwLDB4ODIsMHgyMCwweDYxLDB4MTgsMHhCOCwweEJGLDB4
NTUsMHhCNSwKLSAgICAweEMzLDB4MjgsMHg2MSwweDE4LDB4QUYsMHhBRiwweEFBLDB4OEEsMHhD
MywweDMwLDB4ODIsMHgyMCwweDBGLDB4QkYsMHhGNywweEVELAotICAgIDB4MDQsMHgzOSwweEEy
LDB4MjgsMHgzQSwweEJCLDB4REYsMHhENSwweDAzLDB4MzksMHhBMiwweDI4LDB4RUMsMHhFNiww
eEZGLDB4NzksCi0gICAgMHgwMywweDM5LDB4QTIsMHgzMCwweEZFLDB4QTksMHgwRiwweDJGLDB4
RTIsMHgzMCwweEExLDB4MjgsMHg1NywweEY4LDB4RjgsMHhDMCwKLSAgICAweEUzLDB4MzAsMHg4
MSwweDI4LDB4RkYsMHhENiwweEZBLDB4ODAsMHhDMiwweDMwLDB4QTIsMHgyOCwweEQ2LDB4OTUs
MHhBQiwweDhFLAotICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHg1NSwweEJGLDB4MkEsMHg4Qiww
eEMyLDB4MzAsMHhBMiwweDI4LDB4NUYsMHhGNCwweEFELDB4NUIsCi0gICAgMHhDMiwweDI4LDB4
ODIsMHgyOCwweDAwLDB4MEEsMHhBQSwweEVGLDB4RTIsMHgzMCwweEEyLDB4MjgsMHhBRiwweDBC
LDB4QUYsMHgzRCwKLSAgICAweEUyLDB4MzAsMHhBMiwweDI4LDB4RUYsMHg4RSwweDI4LDB4MEEs
MHgyNCwweDM5LDB4QzIsMHgzMCwweEJGLDB4MzcsMHhENSwweEZGLAotICAgIDB4NDQsMHg0MSww
eEUzLDB4MzgsMHhGQSwweEMyLDB4QUQsMHhBRCwweDIzLDB4MzksMHhFMiwweDMwLDB4QUQsMHg4
NSwweEFELDB4RDUsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzMCwweEVDLDB4QUEsMHg4RSwweEVF
LDB4NjQsMHg0OSwweEMyLDB4MzAsMHhCNSwweDM1LDB4MzcsMHgyRiwKLSAgICAweEE1LDB4NTEs
MHgyNCwweDQxLDB4NjgsMHg2MCwweEUwLDB4RjYsMHgyNCwweDQxLDB4QzIsMHgzMCwweEU4LDB4
OUMsMHhCQSwweEZDLAotICAgIDB4NDQsMHg0MSwweEUyLDB4MzgsMHhCRCwweDM1LDB4QjcsMHhG
NSwweDIzLDB4NDEsMHhDMiwweDMwLDB4QkEsMHhBOCwweEJBLDB4N0UsCi0gICAgMHg2NSwweDQx
LDB4RTMsMHgzOCwweEY1LDB4QUQsMHhBRiwweDJCLDB4QzYsMHg1OSwweDIzLDB4NDksMHhGRCww
eEJGLDB4QUIsMHgyQSwKLSAgICAweEU2LDB4NTksMHg0MywweDQxLDB4RjUsMHhCNywweDBGLDB4
ODgsMHgwQSwweDdCLDB4NjQsMHg0OSwweDM1LDB4M0YsMHgyNywweDNGLAotICAgIDB4NkYsMHhB
QywweENELDB4OTMsMHgwQSwweEFCLDB4QkQsMHhCNSwweEYxLDB4QkMsMHgwRSwweEE0LDB4MEIs
MHgzRiwweEZGLDB4RjUsCi0gICAgMHgzMiwweEJELDB4NEUsMHhBQywweDAyLDB4ODAsMHhBQiww
eEI1LDB4MzIsMHhDNSwweDhGLDB4QUMsMHg3OCwweDdBLDB4RUEsMHhBQiwKLSAgICAweEQwLDB4
QjQsMHg2RiwweEFDLDB4NTcsMHg2RiwweEZBLDB4RjgsMHg4RiwweEFDLDB4NEYsMHhBNCwweERF
LDB4RkYsMHhGNywweENDLAotICAgIDB4OEYsMHhBQywweDRGLDB4QTQsMHhCRiwweEJBLDB4QUIs
MHhEQywweDkwLDB4QUMsMHg0RSwweEE0LDB4NkYsMHhCQSwweEIyLDB4QTksCi0gICAgMHg4Riww
eEFDLDB4NEYsMHhBNCwweDVGLDB4N0UsMHhEQSwweDZGLDB4NkYsMHhBQywweDJFLDB4QTQsMHhG
RCwweDg4LDB4QjIsMHg1QSwKLSAgICAweDY0LDB4NTksMHgwMywweDQ5LDB4QkQsMHhBQSwweDJB
LDB4OEEsMHg2NCwweDU5LDB4NDMsMHg1MSwweDZFLDB4MDgsMHg4MiwweEFGLAotICAgIDB4NjMs
MHg1MSwweDIyLDB4NDksMHg3NywweDc4LDB4N0YsMHg1QSwweDQzLDB4NDksMHgwMiwweDQ5LDB4
NUEsMHg1QywweEFBLDB4OUYsCi0gICAgMHgyMywweDQ5LDB4MDIsMHg0OSwweEMwLDB4QzAsMHg4
MCwweEQ1LDB4MjMsMHg0OSwweDAyLDB4NDEsMHhCMywweEQ1LDB4RUQsMHg2NiwKLSAgICAweDYz
LDB4NTEsMHgwMiwweDQ5LDB4NUQsMHhENSwweEQ3LDB4OTUsMHhBQiwweDlCLDB4ODQsMHg1OSww
eDA5LDB4MDksMHgwMywweDAzLAotICAgIDB4OEEsMHg5QiwweDA4LDB4OEIsMHhFOCwweEVBLDB4
RTAsMHg3QSwweDA4LDB4OEIsMHhDOCwweDgyLDB4NTgsMHhGQSwweEU4LDB4RUMsCi0gICAgMHgw
OCwweDhCLDB4QTcsMHg4MiwweDVGLDB4REYsMHg3RiwweDJBLDB4Q0IsMHhBMywweEE3LDB4ODIs
MHg1NSwweEI1LDB4MkQsMHgwMiwKLSAgICAweENCLDB4QTMsMHhDOCwweDgyLDB4MDMsMHgwMCww
eDgwLDB4NjAsMHhBQiwweEEzLDB4MjYsMHg3MiwweEMwLDB4NTgsMHg1NiwweDU1LAotICAgIDB4
NjcsMHg3MiwweDA1LDB4NkEsMHg5RSwweEI3LDB4MkUsMHhGMywweDI2LDB4NkEsMHg2MywweDUx
LDB4NzgsMHhEQywweEZFLDB4QkUsCi0gICAgMHhFNiwweDYxLDB4NjMsMHg0OSwweDBCLDB4MDgs
MHhDOCwweDUyLDB4QzUsMHg1OSwweDIzLDB4NDEsMHhFOCwweEZFLDB4N0YsMHhGRiwKLSAgICAw
eDY0LDB4NDksMHgwMywweDQxLDB4MEUsMHgyQSwweDI5LDB4QTIsMHg4NSwweDUxLDB4MjMsMHg0
OSwweDdGLDB4RkUsMHgzRSwweDM3LAotICAgIDB4MDYsMHg2QSwweDY0LDB4NDksMHhBRCwweDAy
LDB4QTAsMHhFMiwweEM1LDB4NjEsMHhFMiwweDQwLDB4MDAsMHhBOCwweEZFLDB4NUYsCi0gICAg
MHhDNSwweDU5LDB4MDIsMHg0MSwweEMwLDB4RkEsMHhGRiwweDU1LDB4MjMsMHg0MSwweEMyLDB4
MzAsMHhFMCwweEZFLDB4NUUsMHg1RSwKLSAgICAweEMyLDB4MzAsMHg4MSwweDIwLDB4RUMsMHg2
OCwweDY4LDB4RDgsMHhBMiwweDI4LDB4NjEsMHgyMCwweEUwLDB4N0EsMHg3QSwweEU4LAotICAg
IDB4ODEsMHgyMCwweDQxLDB4MTgsMHgyMCwweEVBLDB4RkYsMHhFRSwweEMyLDB4MjgsMHg0MCww
eDE4LDB4QjcsMHhBRiwweDBCLDB4MEEsCi0gICAgMHhDMywweDMwLDB4QTEsMHgyMCwweDdFLDB4
RkEsMHhDQSwweEFBLDB4QzIsMHgzMCwweDgxLDB4MjAsMHhGRiwweEFGLDB4RUIsMHhCOCwKLSAg
ICAweDAzLDB4MzksMHhBMiwweDI4LDB4RDUsMHhCRCwweEFGLDB4OEIsMHgwMywweDMxLDB4QzIs
MHgzMCwweEQ3LDB4QTgsMHhGMCwweDdELAotICAgIDB4RTIsMHgzMCwweDgyLDB4MjgsMHhBRSww
eEI2LDB4REUsMHg4RSwweDAzLDB4MzksMHhBMiwweDMwLDB4QUUsMHhBNSwweEE1LDB4QkYsCi0g
ICAgMHgwMiwweDM5LDB4QzMsMHgzMCwweEVFLDB4N0EsMHg3QiwweERFLDB4RTMsMHgzMCwweEEy
LDB4MjgsMHhCRiwweEJFLDB4QjcsMHhCNCwKLSAgICAweEUzLDB4MzAsMHg4MSwweDI4LDB4N0Us
MHhGQSwweEY4LDB4RkUsMHhDMiwweDMwLDB4QTIsMHgyOCwweEE1LDB4MzUsMHhGQiwweEFBLAot
ICAgIDB4QTIsMHgzMCwweEMyLDB4MjgsMHg5NywweEY1LDB4RkYsMHg5NywweEMyLDB4MzAsMHhB
MiwweDI4LDB4MkYsMHhBRCwweEFBLDB4RTksCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEVB
LDB4MkEsMHhBMywweDVCLDB4MDMsMHgzOSwweEMzLDB4MzAsMHhCRiwweEYyLDB4RTMsMHhBOSwK
LSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4MkYsMHgyRCwweEU1LDB4QjUsMHgwMywweDM5LDB4
QTIsMHgzMCwweDJBLDB4ODMsMHhBNywweEVGLAotICAgIDB4MDMsMHgzOSwweEUyLDB4MzAsMHg3
RiwweEZFLDB4REIsMHg5NSwweDIzLDB4MzksMHhFMywweDMwLDB4MEEsMHgwMiwweEVBLDB4RTks
Ci0gICAgMHg2NCwweDQxLDB4QzMsMHgzMCwweEE4LDB4N0YsMHhGRCwweEZGLDB4MDMsMHgzOSww
eEMyLDB4MzAsMHhGOCwweEVFLDB4QUIsMHhBQiwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4
MjMsMHhBQiwweEFBLDB4MjMsMHgyNCwweDM5LDB4QzIsMHgzMCwweDdBLDB4REUsMHhBRiwweDJG
LAotICAgIDB4NDQsMHg0MSwweEUzLDB4MzAsMHg5RCwweEI1LDB4QkYsMHgwOSwweEE1LDB4NTEs
MHgyMywweDQxLDB4MjIsMHgzRCwweEZELDB4RjUsCi0gICAgMHhDNSwweDU5LDB4NDQsMHg0OSww
eEEwLDB4QkIsMHhBRCwweDJELDB4MkEsMHg4MywweEM1LDB4NTEsMHhCNSwweEI1LDB4MzUsMHgz
NSwKLSAgICAweEVELDB4OUIsMHg4QywweDhCLDB4MDksMHhCRiwweEZBLDB4NjIsMHgyRSwweEE0
LDB4OEMsMHg4QiwweDBBLDB4QUYsMHhGRiwweEQ1LAotICAgIDB4NkYsMHhBQywweENELDB4OTMs
MHgwQSwweEVGLDB4RkQsMHhERCwweEYwLDB4QjQsMHgwRCwweDlDLDB4MEEsMHgwQiwweEJELDB4
RDUsCi0gICAgMHhGMSwweEJDLDB4OEYsMHhBQywweEZDLDB4RTIsMHhFMiwweEI1LDB4RDEsMHhC
NCwweDcwLDB4QUMsMHg3RSwweEVGLDB4QUUsMHhCOCwKLSAgICAweEIwLDB4QjQsMHg0RiwweEE0
LDB4REYsMHhGQSwweDhBLDB4OEEsMHg4RiwweEFDLDB4MkQsMHhBNCwweEY2LDB4RkUsMHhFOCww
eDI4LAotICAgIDB4NkYsMHhBQywweDJFLDB4QTQsMHhBQSwweENGLDB4RUEsMHhGRSwweDRGLDB4
QTQsMHgwRSwweDlDLDB4N0UsMHhCRSwweEZCLDB4NUEsCi0gICAgMHg2NCwweDU5LDB4MjMsMHg1
MSwweDI3LDB4QTcsMHhFNywweEFFLDB4NjQsMHg1OSwweDQzLDB4NTEsMHgyRiwweDgwLDB4NjAs
MHg3MiwKLSAgICAweDY0LDB4NTEsMHgwMiwweDQ5LDB4RkEsMHg3OCwweEZFLDB4NUUsMHgyMiww
eDQ5LDB4RTEsMHg0MCwweEE4LDB4QTAsMHg4MiwweEZCLAotICAgIDB4MjMsMHg0OSwweEUyLDB4
NDAsMHhBQiwweEVDLDB4N0EsMHhBRSwweDIzLDB4NDksMHhFMiwweDQwLDB4RkEsMHg5QiwweDI5
LDB4MkYsCi0gICAgMHgyNSwweDZBLDB4RTIsMHg0MCwweEY1LDB4QkQsMHgzNSwweDM3LDB4OEEs
MHg5QiwweEU4LDB4ODIsMHg4MSwweDgxLDB4MDMsMHg4MiwKLSAgICAweDY5LDB4OUIsMHgwOSww
eDhCLDB4RUEsMHhFQSwweDZBLDB4RUEsMHg0OSwweDkzLDB4RTgsMHg4QSwweDZGLDB4N0UsMHhC
RiwweDJBLAotICAgIDB4Q0IsMHhBMywweEU4LDB4OEEsMHhCRCwweDBGLDB4MDIsMHgwQSwweEVC
LDB4QTMsMHg4NiwweDdBLDB4MDAsMHg4MCwweEUwLDB4NzgsCi0gICAgMHhBQSwweDlCLDB4NDYs
MHg3MiwweDc4LDB4NUUsMHg1NSwweDU1LDB4NjcsMHg3QSwweDI2LDB4NkEsMHhFRCwweDNCLDB4
OEIsMHg4QiwKLSAgICAweDQ2LDB4NzIsMHhBNCwweDU5LDB4RTAsMHhFMCwweDcwLDB4NUMsMHhD
NSwweDYxLDB4MjIsMHg0MSwweDgyLDB4QTIsMHhGQSwweDc3LAotICAgIDB4QTUsMHg1MSwweDIz
LDB4NDEsMHhGOCwweDNGLDB4QUQsMHg4QiwweDg0LDB4NTEsMHg0NCwweDQ5LDB4RjQsMHhCNiww
eEFGLDB4RUYsCi0gICAgMHg2NCwweDQ5LDB4MjMsMHg0MSwweEEyLDB4QjYsMHhBRSwweEJGLDB4
ODQsMHg1MSwweEUzLDB4MzgsMHgzRiwweDJFLDB4QkUsMHhERiwKLSAgICAweDA2LDB4NjIsMHg4
NCwweDU5LDB4RUEsMHg4OCwweEVBLDB4RTksMHhBNSwweDU5LDB4MDIsMHg0MSwweDVFLDB4NUUs
MHg1QywweDc4LAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHg4MCwweEUwLDB4NjAsMHhFMCww
eDAyLDB4MzksMHhDMywweDMwLDB4RTgsMHhGRiwweERGLDB4NzUsCi0gICAgMHhFMywweDMwLDB4
ODEsMHgyMCwweERBLDB4QkEsMHhGMCwweEMwLDB4QzIsMHgyOCwweDYxLDB4MTgsMHhGOCwweDdB
LDB4NTYsMHg1NywKLSAgICAweEMyLDB4MjgsMHg2MSwweDE4LDB4RDcsMHhCNSwweDBELDB4QUIs
MHgwMywweDMxLDB4QzIsMHgyOCwweDc1LDB4REQsMHhERCwweDI5LAotICAgIDB4NDQsMHgzOSww
eEEyLDB4MjgsMHhERCwweEY3LDB4QkYsMHgwMiwweDIzLDB4MzksMHhDMiwweDMwLDB4NzUsMHg2
QSwweDU4LDB4RTgsCi0gICAgMHhFMywweDMwLDB4ODEsMHgzMCwweEEyLDB4NzgsMHhFRSwweEU4
LDB4RTMsMHgzOCwweEEyLDB4MjgsMHhFRiwweEY1LDB4RUQsMHhBMiwKLSAgICAweDAzLDB4Mzks
MHhDMiwweDMwLDB4RUQsMHhCRCwweEFCLDB4OEQsMHgwMywweDM5LDB4QzIsMHgzMCwweEI3LDB4
RUIsMHgwMiwweEFCLAotICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHhGQiwweEZCLDB4NjgsMHg3
QSwweDA0LDB4MzksMHhBMiwweDI4LDB4RTgsMHhBMCwweEZBLDB4RUQsCi0gICAgMHhFMywweDMw
LDB4QTIsMHgyOCwweDVFLDB4RkMsMHhGRSwweEIzLDB4QzIsMHgzMCwweDgxLDB4MjgsMHgyRiww
eEZGLDB4N0EsMHgyMCwKLSAgICAweEMyLDB4MjgsMHg4MiwweDI4LDB4MDAsMHg4MCwweEFELDB4
RkEsMHhBMiwweDI4LDB4ODEsMHgyMCwweDA4LDB4MjgsMHgzRSwweEY1LAotICAgIDB4RTIsMHgz
MCwweEEyLDB4MjgsMHg1RiwweEU1LDB4QkQsMHhBRCwweEUzLDB4MzAsMHhBMiwweDI4LDB4ODMs
MHhGQiwweDhFLDB4ODMsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEFFLDB4QUYsMHg4Riww
eDBFLDB4MDIsMHgzOSwweEEyLDB4MjgsMHhCOCwweEVFLDB4RkYsMHhGRCwKLSAgICAweDAzLDB4
MzEsMHhBMSwweDI4LDB4MkYsMHhBRiwweEJELDB4MkYsMHgyNCwweDMxLDB4QzIsMHgzMCwweEY2
LDB4RkYsMHhBQiwweDJGLAotICAgIDB4MDMsMHgzMSwweEEyLDB4MzAsMHhBQiwweEFBLDB4Mjgs
MHhBMCwweEUzLDB4MzAsMHhDMiwweDI4LDB4QzgsMHg4OCwweDhBLDB4ODMsCi0gICAgMHgwNCww
eDMxLDB4QzIsMHgzMCwweEJCLDB4NUQsMHg1RiwweEZGLDB4MjQsMHgzOSwweEMzLDB4MjgsMHgy
NywweEI3LDB4QkYsMHhFQiwKLSAgICAweDIzLDB4MzksMHhFMywweDMwLDB4MjcsMHhCNSwweDM3
LDB4QkYsMHg4NSwweDQ5LDB4MjMsMHg0MSwweEJGLDB4QTcsMHgyQiwweEY1LAotICAgIDB4MDYs
MHg1QSwweDY0LDB4NDksMHgwRCwweEE1LDB4RjcsMHhGNSwweDhDLDB4OEIsMHgwNiwweDVBLDB4
OTUsMHgzNSwweDM1LDB4MjUsCi0gICAgMHhFRCwweDlCLDB4QUQsMHg5MywweDczLDB4RkIsMHhE
NywweDYyLDB4QUMsMHg5MywweDZCLDB4OEIsMHgyQiwweDU4LDB4RjAsMHg2OCwKLSAgICAweEVE
LDB4OUIsMHg2QiwweDhCLDB4QTIsMHg4QiwweEE1LDB4RDUsMHgwRSwweDlDLDB4QUMsMHg5Myww
eDAyLDB4MkQsMHhBNywweEE3LAotICAgIDB4OEYsMHhBQywweEVELDB4OUIsMHgyQiwweEJGLDB4
NTUsMHg1NSwweDkwLDB4QUMsMHhFRCwweDlCLDB4MjgsMHhBQSwweERGLDB4NzcsCi0gICAgMHg5
MCwweEFDLDB4RUQsMHg5QiwweEEwLDB4QkIsMHg3RiwweDVELDB4NkUsMHhBQywweENDLDB4OTMs
MHhBMCwweEZBLDB4NUYsMHg1NywKLSAgICAweDJFLDB4QTQsMHhDQywweDkzLDB4ODgsMHhGRiww
eEY1LDB4RDUsMHgyRSwweEE0LDB4RUQsMHg5QiwweEVDLDB4MkQsMHgyRiwweEZELAotICAgIDB4
NjMsMHg1MSwweDIzLDB4NDksMHhFRCwweEZGLDB4RDcsMHhENSwweDQzLDB4NTEsMHgyMywweDQ5
LDB4MDAsMHhBQSwweEY4LDB4NzcsCi0gICAgMHgyMiwweDQ5LDB4MDIsMHg0MSwweDc4LDB4REMs
MHhGMiwweEFBLDB4MjMsMHg0OSwweEUyLDB4NDAsMHhCRiwweDdGLDB4N0UsMHhCNiwKLSAgICAw
eDIzLDB4NDksMHhFMiwweDQwLDB4QUEsMHhGRiwweERGLDB4REYsMHgyMywweDQ5LDB4RTMsMHg0
MCwweEFGLDB4M0YsMHhDQiwweEVCLAotICAgIDB4NDksMHg5MywweDIzLDB4NDksMHgxNSwweDM1
LDB4MzUsMHgyNSwweDhBLDB4OUIsMHg2OSwweDkzLDB4NjIsMHg1OCwweDdDLDB4NUUsCi0gICAg
MHg4QSwweDlCLDB4MjgsMHg5MywweEZGLDB4OUYsMHgzRiwweDJGLDB4OEEsMHg5QiwweDI5LDB4
OTMsMHhGNywweEZDLDB4QTAsMHhBQSwKLSAgICAweEFCLDB4OUIsMHg2NywweDdBLDB4MDIsMHhB
MiwweEVBLDB4NTgsMHg0OSwweDhCLDB4NDYsMHg3MiwweDc4LDB4NzYsMHhENywweDc1LAotICAg
IDB4ODcsMHg3MiwweDQ2LDB4NzIsMHhCNywweEVCLDB4RUEsMHgyRiwweEE3LDB4N0EsMHhBNSww
eDU5LDB4OEEsMHhBOCwweEUyLDB4NzgsCi0gICAgMHgwNSwweDYyLDB4MDIsMHg0MSwweEY4LDB4
REUsMHg3NywweEQ3LDB4ODQsMHg1MSwweDIzLDB4NDEsMHhGNSwweEJELDB4MjksMHgwRiwKLSAg
ICAweEE0LDB4NTEsMHg2NCwweDQ5LDB4N0IsMHg1QSwweERBLDB4RDcsMHg4NCwweDQ5LDB4NDQs
MHg0OSwweEI3LDB4RUQsMHhCNCwweEI4LAotICAgIDB4NjQsMHg0OSwweDI0LDB4NDEsMHhGRSww
eERFLDB4N0EsMHg1OCwweDIzLDB4NDEsMHhFMywweDM4LDB4QkEsMHhGMCwweEYwLDB4QTAsCi0g
ICAgMHhBNSwweDUxLDB4QTIsMHgzOCwweDAzLDB4MkIsMHhCRiwweEQ3LDB4ODQsMHg1MSwweDIz
LDB4NDEsMHg3OCwweEY4LDB4RjgsMHg3OSwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4QkMs
MHhENiwweEY3LDB4QjgsMHhFMywweDMwLDB4QTIsMHgzMCwweDAyLDB4MEUsMHhFOCwweDcwLAot
ICAgIDB4RTMsMHgzMCwweDYxLDB4MTgsMHhBMiwweEZBLDB4N0YsMHg1RiwweDgxLDB4MjAsMHg0
MSwweDE4LDB4QjgsMHhCQywweDNGLDB4M0QsCi0gICAgMHhFMywweDMwLDB4ODEsMHgyMCwweDJE
LDB4MjksMHgyQiwweEZGLDB4MjQsMHgzOSwweDYxLDB4MjAsMHgwMiwweDgwLDB4RkIsMHhGRiwK
LSAgICAweDQ0LDB4NDEsMHhBMiwweDI4LDB4ODAsMHhGRSwweDU1LDB4NTUsMHg0MywweDQxLDB4
QTIsMHgyOCwweEFBLDB4QUIsMHhFRiwweEI1LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhE
RSwweEE4LDB4RjgsMHhFQSwweDAzLDB4MzksMHhDMiwweDMwLDB4RkEsMHhFRiwweEQ1LDB4Nzcs
Ci0gICAgMHgwMywweDM5LDB4QTIsMHgyOCwweEFCLDB4OEYsMHhGRiwweEI1LDB4RTMsMHgzOCww
eEMyLDB4MjgsMHhFMiwweEVDLDB4RkUsMHhFMiwKLSAgICAweEUzLDB4MzAsMHg4MSwweDI4LDB4
QTIsMHg2MiwweDVFLDB4N0UsMHhFMywweDMwLDB4ODEsMHgyMCwweDJCLDB4QkYsMHhCNSwweEE1
LAotICAgIDB4RTMsMHgzMCwweEMzLDB4MjgsMHhBMiwweDgyLDB4MEYsMHgwRCwweDAzLDB4MzEs
MHhBMiwweDMwLDB4N0EsMHhCMiwweEVBLDB4NkEsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCww
eDZELDB4RkUsMHhCQSwweEFGLDB4MDMsMHgzOSwweDgxLDB4MjAsMHg1NSwweEVFLDB4QTgsMHg4
MCwKLSAgICAweDAzLDB4MzksMHhBMSwweDI4LDB4QUQsMHgyRiwweEEyLDB4ODIsMHhFMywweDMw
LDB4QzIsMHgyOCwweDFDLDB4MkUsMHg5RiwweERGLAotICAgIDB4RTMsMHgzMCwweEEyLDB4Mjgs
MHgyQSwweEVFLDB4QkUsMHhFNywweEUzLDB4MzAsMHhBMiwweDI4LDB4QUYsMHhBRiwweEY1LDB4
REQsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEJFLDB4OEUsMHgwOSwweEVELDB4MDMsMHgz
MSwweEMyLDB4MjgsMHgwOCwweDc4LDB4NzIsMHhFMCwKLSAgICAweDAzLDB4MzksMHhDMiwweDI4
LDB4NkMsMHg1RiwweDU3LDB4RUYsMHhFMywweDMwLDB4QTIsMHgyOCwweDIxLDB4M0YsMHhCOCww
eEE4LAotICAgIDB4MjMsMHgzMSwweEMyLDB4MzAsMHhERCwweDVELDB4RkYsMHhGNiwweDIzLDB4
MzksMHhFMiwweDMwLDB4RkYsMHhGRCwweDdELDB4OEQsCi0gICAgMHgwMywweDM5LDB4QTEsMHgy
OCwweDIyLDB4M0UsMHhCOCwweDlFLDB4ODQsMHg1MSwweDAzLDB4MzksMHhCRiwweEZELDB4QkYs
MHgwOSwKLSAgICAweEU1LDB4NTksMHg0NCwweDQxLDB4QjUsMHhCNywweDJGLDB4MkIsMHhBQyww
eDkzLDB4MjUsMHg2MiwweDI1LDB4MkQsMHgwRCwweDI5LAotICAgIDB4RUUsMHg5QiwweEFDLDB4
OTMsMHg4MiwweDgwLDB4ODAsMHhGNywweENELDB4OTMsMHg2QiwweDhCLDB4N0MsMHg1MCwweDc4
LDB4NUUsCi0gICAgMHg2QiwweDhCLDB4MEEsMHg3QiwweDIwLDB4QjgsMHhFOCwweDYyLDB4RUQs
MHg5QiwweDRCLDB4ODMsMHgwQSwweDJCLDB4MjksMHhBRCwKLSAgICAweDBELDB4OUMsMHhBQyww
eDkzLDB4QTAsMHg4QiwweEFBLDB4N0YsMHhFRCwweDlCLDB4Q0QsMHg5MywweDg4LDB4MDIsMHhB
OCwweEZELAotICAgIDB4RUQsMHg5QiwweEFDLDB4OTMsMHhGOCwweEFCLDB4N0IsMHg1RiwweENE
LDB4OTMsMHg4QywweDhCLDB4MjgsMHg4MCwweDA4LDB4MkYsCi0gICAgMHhDRCwweDkzLDB4OEMs
MHg4QiwweDI4LDB4QkEsMHhFRiwweEVCLDB4MEUsMHg5QywweEFDLDB4OTMsMHgwQiwweEJGLDB4
QjUsMHhGNSwKLSAgICAweDQzLDB4NDksMHgwMiwweDQ5LDB4QUEsMHhGRSwweDU3LDB4RDcsMHgy
MywweDQ5LDB4MDIsMHg0MSwweDgxLDB4N0EsMHhGQiwweEU5LAotICAgIDB4MjMsMHg0OSwweEUy
LDB4NDAsMHhFMywweENCLDB4OTgsMHg1NiwweDAyLDB4NDEsMHhFMiwweDM4LDB4MDgsMHhDQyww
eDcyLDB4NzIsCi0gICAgMHgwMiwweDQxLDB4QzIsMHgzOCwweDJBLDB4MEEsMHgyMywweDNCLDB4
MjMsMHg0OSwweEUyLDB4NDAsMHhFRiwweEZCLDB4QUIsMHgyQiwKLSAgICAweDZBLDB4OTMsMHgw
MywweDQ5LDB4MjUsMHgyNSwweDI1LDB4QjUsMHg4QSwweDlCLDB4RTgsMHg4MiwweDIwLDB4MjAs
MHhBMiwweDU1LAotICAgIDB4OEEsMHg5QiwweEU4LDB4ODIsMHhFMiwweDdBLDB4N0UsMHg1NSww
eDZBLDB4OTMsMHg4NywweDdBLDB4MEEsMHhBRiwweEZGLDB4N0YsCi0gICAgMHgyOSwweDkzLDB4
RTUsMHg2MSwweDcwLDB4REMsMHg1RSwweDU3LDB4NDYsMHg2QSwweEU1LDB4NjEsMHgwMCwweDJC
LDB4QUEsMHhGRCwKLSAgICAweEM4LDB4N0EsMHg4NCwweDU5LDB4MkEsMHhBQSwweEZBLDB4NUYs
MHg2NywweDcyLDB4NDMsMHg0OSwweDcwLDB4NUUsMHg3NywweEQ1LAotICAgIDB4NjMsMHg0OSww
eDAyLDB4NDEsMHhGRSwweDZBLDB4REMsMHgzRSwweEE1LDB4NTEsMHgwMiwweDQxLDB4OEIsMHhB
RCwweEFELDB4QjgsCi0gICAgMHg4NCwweDUxLDB4NjQsMHg0OSwweEE3LDB4MDksMHg3OSwweDZC
LDB4ODQsMHg1MSwweDI0LDB4NDEsMHhGMCwweDdBLDB4RkUsMHhFRSwKLSAgICAweDY0LDB4NDks
MHgwMywweDQxLDB4QTgsMHhFQSwweEVFLDB4NUUsMHg2NCwweDQxLDB4MDMsMHg0MSwweDdCLDB4
RkYsMHg3RiwweDVELAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzgsMHg1QSwweDZBLDB4RUEsMHhB
OCwweDQ0LDB4NDksMHhDMiwweDM4LDB4MEQsMHgyRCwweDBCLDB4QUEsCi0gICAgMHg0MywweDQ5
LDB4QzIsMHgzMCwweEZFLDB4RjgsMHhERSwweERFLDB4MDMsMHgzOSwweDgxLDB4MjgsMHg2OCww
eDc4LDB4NzgsMHhGQSwKLSAgICAweEEyLDB4MjgsMHg2MSwweDIwLDB4NTcsMHg1RSwweEY2LDB4
QjYsMHhDMiwweDI4LDB4NDEsMHgxOCwweEJELDB4QUYsMHg4QiwweDJBLAotICAgIDB4QTIsMHgy
OCwweDgxLDB4MjAsMHg5RCwweENELDB4QTEsMHhCQSwweEMyLDB4MjgsMHg4MSwweDIwLDB4QUYs
MHhCRiwweEZFLDB4REYsCi0gICAgMHhBMiwweDI4LDB4ODEsMHgyMCwweEEyLDB4RkYsMHhGQiww
eDVCLDB4RTMsMHgzMCwweDgxLDB4MjgsMHgyNSwweEI1LDB4RjUsMHhENSwKLSAgICAweDAzLDB4
MzksMHhDMiwweDMwLDB4QkEsMHhGQiwweEY1LDB4QjksMHhFMiwweDMwLDB4QTIsMHgyOCwweDc4
LDB4N0MsMHhGOCwweENBLAotICAgIDB4RTMsMHgzMCwweEEyLDB4MzAsMHgzNSwweEI1LDB4RTcs
MHhBRiwweEUzLDB4MzAsMHhBMSwweDI4LDB4ODgsMHhBQSwweEZCLDB4NTksCi0gICAgMHhFMyww
eDMwLDB4ODEsMHgyOCwweEZFLDB4RTAsMHhGQiwweDdGLDB4QzIsMHgyOCwweDYxLDB4MjAsMHg4
QiwweEFBLDB4MDIsMHgwQSwKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4QkYsMHhBQiwweEFE
LDB4MjcsMHgwMywweDM5LDB4QTIsMHgzMCwweEYyLDB4RUIsMHhFRiwweEFGLAotICAgIDB4MDMs
MHgzOSwweEEyLDB4MjgsMHhFRiwweEFELDB4QkYsMHgyMywweDAzLDB4MzksMHhBMiwweDI4LDB4
RUIsMHhCMiwweEE4LDB4RDgsCi0gICAgMHgyMywweDM5LDB4QzIsMHgzMCwweEI5LDB4RUYsMHgx
RiwweEJGLDB4MjMsMHgzOSwweEMyLDB4MzAsMHhERiwweDU3LDB4NzYsMHhGMiwKLSAgICAweDAz
LDB4MzEsMHhBMSwweDI4LDB4QjcsMHgzRiwweDJFLDB4QUYsMHgwMywweDMxLDB4QTIsMHgyOCww
eDdGLDB4REUsMHg1OCwweEVBLAotICAgIDB4MDQsMHgzMSwweEEyLDB4MjgsMHhBQSwweEI3LDB4
RDcsMHg1NywweDA0LDB4MzEsMHhDMiwweDMwLDB4RkEsMHg3QSwweEY2LDB4REQsCi0gICAgMHgw
MywweDMxLDB4QTIsMHgyOCwweDhBLDB4RTYsMHhGQiwweEFCLDB4MDMsMHgzMSwweEMyLDB4Mjgs
MHhERiwweERELDB4RkYsMHgyQiwKLSAgICAweDAzLDB4MzEsMHhFMiwweDMwLDB4ODUsMHg4Qiww
eEUyLDB4NTgsMHgyMywweDM5LDB4RTIsMHgzMCwweDg3LDB4MkYsMHhGNSwweEQ1LAotICAgIDB4
MjMsMHgzOSwweEUyLDB4MzAsMHg1RSwweEZCLDB4RkYsMHgzQiwweEE1LDB4NTEsMHgwMiwweDM5
LDB4QUQsMHhBRCwweEFGLDB4MEYsCi0gICAgMHg4OCwweDcyLDB4NjMsMHg0OSwweDk1LDB4RjUs
MHhCNSwweDJGLDB4OEMsMHg5MywweEE5LDB4N0EsMHgwOSwweDAxLDB4RjksMHg3RSwKLSAgICAw
eDhDLDB4OEIsMHg2OCwweDZBLDB4MDAsMHg4MCwweERGLDB4NTcsMHg4QywweDhCLDB4MDYsMHg2
MiwweDgwLDB4QTgsMHg1RiwweEY3LAotICAgIDB4MkEsMHg3QiwweDA2LDB4NUEsMHgwMCwweEZB
LDB4NTUsMHhGRiwweDhCLDB4OEIsMHgyNywweDYyLDB4MEEsMHhBRiwweEQ1LDB4RkYsCi0gICAg
MHg4QywweDkzLDB4MjcsMHg2MiwweEEwLDB4N0UsMHg1RiwweDdGLDB4Q0QsMHg5MywweDQ3LDB4
NjIsMHgyQiwweEQ1LDB4NTUsMHg1NSwKLSAgICAweEFELDB4OTMsMHg0NywweDYyLDB4MDAsMHgw
MiwweEFELDB4OTUsMHhBQywweDkzLDB4NEIsMHg4MywweDAyLDB4QUIsMHgyMywweEJELAotICAg
IDB4QUMsMHg5MywweDZDLDB4OEIsMHgwMCwweDAwLDB4OEIsMHhFOSwweENELDB4OTMsMHg2Qiww
eDhCLDB4MkUsMHhBQiwweEI3LDB4RkYsCi0gICAgMHgwMywweDQ5LDB4MjIsMHg0MSwweDgwLDB4
QUEsMHhBQSwweDgyLDB4MjMsMHg0OSwweEUyLDB4NDAsMHhCMCwweEFCLDB4Q0UsMHhCRiwKLSAg
ICAweDIzLDB4NDEsMHhFMiwweDQwLDB4OTUsMHhGQSwweDEyLDB4RTIsMHgyMywweDQxLDB4RTIs
MHg0MCwweERCLDB4QkIsMHhBQSwweEEyLAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhENyww
eEJGLDB4RUEsMHhCQSwweDQzLDB4NDksMHgwMiwweDQxLDB4RUYsMHhGRSwweDdGLDB4NUIsCi0g
ICAgMHg2MywweDUxLDB4RTIsMHg0MCwweDJGLDB4RkQsMHg1NywweDVGLDB4NjYsMHg3MiwweDIy
LDB4NDksMHgwQiwweDI1LDB4QjUsMHhCNSwKLSAgICAweEE3LDB4N0EsMHhFNCwweDYxLDB4MDAs
MHhBRSwweEZELDB4NUQsMHhDNywweDgyLDB4NjQsMHg1MSwweEEwLDB4RTIsMHg3QiwweDdGLAot
ICAgIDB4QzUsMHg2MSwweEMyLDB4NDAsMHgwMCwweEFBLDB4N0UsMHg1RiwweEM0LDB4NjEsMHgw
MywweDQ5LDB4MDAsMHg4MiwweDA5LDB4MkQsCi0gICAgMHhBNCwweDU5LDB4NDMsMHg0OSwweDU4
LDB4N0MsMHhFOCwweDgwLDB4ODQsMHg1MSwweDIzLDB4NDksMHhBRCwweEJELDB4MEIsMHg4MiwK
LSAgICAweEE1LDB4NTEsMHg0MywweDQ5LDB4OTUsMHgzRiwweDhELDB4Q0EsMHhBNSwweDUxLDB4
NDQsMHg0OSwweEEwLDB4QUUsMHhCRSwweDc3LAotICAgIDB4ODQsMHg0OSwweDIzLDB4NDEsMHhF
OCwweEFBLDB4RkEsMHhERSwweDY0LDB4NTEsMHg0NCwweDQ5LDB4RUIsMHg1NSwweDc5LDB4OEQs
Ci0gICAgMHhFNiwweDYxLDB4MjMsMHg0OSwweDU1LDB4OTUsMHgyRCwweDAyLDB4MDYsMHg2QSww
eDIzLDB4NDEsMHg3NSwweDJBLDB4QTAsMHhBQSwKLSAgICAweEE1LDB4NTksMHgyMywweDQxLDB4
NTUsMHg1OCwweEUwLDB4NjAsMHg2NCwweDQ5LDB4RTIsMHgzOCwweEZFLDB4NzgsMHhGQSwweDdG
LAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhERSwweEY4LDB4RTIsMHhGQSwweDAzLDB4Mzks
MHhBMiwweDI4LDB4NzgsMHg2MCwweDQyLDB4NEIsCi0gICAgMHgwMywweDMxLDB4NjEsMHgyMCww
eEY3LDB4QUYsMHgwRCwweDJELDB4RTMsMHgzMCwweDgxLDB4MjAsMHhGNywweEEwLDB4RTAsMHhF
OCwKLSAgICAweEMyLDB4MjgsMHg4MiwweDIwLDB4RjgsMHhFMCwweEU4LDB4QkEsMHhDMiwweDI4
LDB4ODEsMHgyMCwweERELDB4REQsMHg5RiwweDNGLAotICAgIDB4MjQsMHgzOSwweDgxLDB4Mjgs
MHg3NSwweDVELDB4RUQsMHg4MCwweEMyLDB4MzAsMHg2MSwweDI4LDB4QkYsMHhCRCwweEJGLDB4
RTAsCi0gICAgMHgyNCwweDQxLDB4QTIsMHgzMCwweEU5LDB4ODksMHgwQiwweDA5LDB4NDMsMHg0
MSwweEExLDB4MzAsMHg3RiwweEZBLDB4RkEsMHhFOCwKLSAgICAweEUyLDB4MzgsMHhBMiwweDMw
LDB4RjcsMHg1NywweDU3LDB4NUEsMHgwMywweDMxLDB4QTEsMHgyOCwweDc1LDB4RjUsMHhBRCww
eDBGLAotICAgIDB4MjQsMHgzOSwweDgxLDB4MjgsMHhENSwweDdGLDB4QUEsMHgwMCwweDAzLDB4
MzksMHg4MSwweDI4LDB4RkQsMHg1RCwweEZGLDB4QTgsCi0gICAgMHgwNCwweDMxLDB4ODIsMHgy
OCwweDJGLDB4MzUsMHgzRiwweEFCLDB4MDMsMHgzMSwweEMyLDB4MzAsMHhGQSwweDkyLDB4QjAs
MHg2MiwKLSAgICAweEUzLDB4MzAsMHhBMiwweDMwLDB4MDAsMHgwMCwweEJCLDB4REEsMHgwMyww
eDM5LDB4QTIsMHgzMCwweDZBLDB4QjgsMHhGQSwweEZBLAotICAgIDB4MDMsMHgzMSwweEEyLDB4
MzAsMHhCRiwweDNELDB4QkYsMHhCQiwweDI0LDB4MzksMHhFMywweDMwLDB4REUsMHhGQSwweEZF
LDB4RkEsCi0gICAgMHgwMiwweDMxLDB4QTEsMHgyOCwweEVFLDB4RkEsMHhGMiwweEY4LDB4RTIs
MHgzMCwweEMyLDB4MjgsMHhGOCwweERDLDB4RDUsMHg3RCwKLSAgICAweEMyLDB4MjgsMHhBMiww
eDI4LDB4MzgsMHgwMCwweDAyLDB4RTksMHhFMywweDMwLDB4QTEsMHgyOCwweEEyLDB4MDMsMHgy
RSwweEU3LAotICAgIDB4MDMsMHgzMSwweEUzLDB4MzAsMHg1NSwweERGLDB4OTcsMHg5NSwweDAz
LDB4MzEsMHhDMiwweDI4LDB4MkIsMHhBRiwweEFFLDB4RkUsCi0gICAgMHgwMywweDMxLDB4RTIs
MHgzMCwweDZBLDB4NEEsMHhCNywweDc1LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhBRSwweDNGLDB4
MUUsMHgxQywKLSAgICAweDY0LDB4NDksMHgwMywweDM5LDB4RTcsMHhBRiwweDI3LDB4MjUsMHhB
NSwweDUxLDB4MDMsMHg0MSwweDA5LDB4QUYsMHhCRSwweDIyLAotICAgIDB4NEUsMHhBNCwweEM1
LDB4NTksMHhCNSwweEI1LDB4MjUsMHgyRCwweEFGLDB4QjQsMHhDQywweDlCLDB4RkQsMHhBQiww
eEEyLDB4ODAsCi0gICAgMHhBRiwweEI0LDB4OEIsMHg5MywweDU3LDB4RUEsMHg4OCwweDAyLDB4
OEYsMHhCNCwweDJBLDB4ODMsMHg1NSwweEVBLDB4MDAsMHgwMCwKLSAgICAweDJFLDB4QUMsMHhF
OSwweDdBLDB4NTUsMHg3RiwweDdFLDB4NzgsMHgwQSwweDdCLDB4QTgsMHg3MiwweERBLDB4Rjgs
MHhFOCwweDc4LAotICAgIDB4RTksMHg3QSwweDY3LDB4NjIsMHhGQSwweEEwLDB4QkIsMHhENyww
eEU5LDB4NzIsMHg2NywweDZBLDB4RjcsMHhGNiwweEZFLDB4QjIsCi0gICAgMHhDOSwweDcyLDB4
NDYsMHg2MiwweDVELDB4N0YsMHhGRSwweEU4LDB4NkIsMHg4MywweDI3LDB4NjIsMHgwMywweDJG
LDB4RDUsMHg1NywKLSAgICAweDZCLDB4OEIsMHg0NywweDYyLDB4MDAsMHgwMCwweDAwLDB4MDks
MHg4QywweDhCLDB4NEIsMHg4MywweDBELDB4OEIsMHhFQywweEU4LAotICAgIDB4MDMsMHg0OSww
eEUyLDB4NDAsMHgxMCwweDgyLDB4NTIsMHg3RiwweDAzLDB4NDEsMHhFMiwweDQwLDB4MjYsMHgy
NiwweDg2LDB4M0MsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweDdGLDB4QUUsMHhBQSwweEFF
LDB4MjMsMHg0OSwweDAyLDB4NDEsMHhENSwweDNGLDB4N0MsMHhFNywKLSAgICAweDQzLDB4NDks
MHgwMiwweDQxLDB4RDcsMHhENCwweDdBLDB4RTgsMHgyMywweDQ5LDB4MDMsMHg0MSwweDI5LDB4
MDIsMHg3NywweDVGLAotICAgIDB4MjMsMHg0OSwweEMyLDB4MzgsMHhGOCwweEUyLDB4Q0EsMHg4
RiwweDg0LDB4NTksMHhDMiwweDQwLDB4MkYsMHgzRCwweEZGLDB4RkYsCi0gICAgMHgyNiwweDZB
LDB4NDMsMHg0OSwweDhBLDB4QTIsMHhGRCwweDU1LDB4QzUsMHg1OSwweEMyLDB4NDAsMHhBOCww
eEZFLDB4N0YsMHg1RiwKLSAgICAweDAzLDB4NDEsMHhDMiwweDQwLDB4OEEsMHhDRSwweEJGLDB4
RUYsMHgwNSwweDYyLDB4MDMsMHg0OSwweEFELDB4MkQsMHg4RCwweDJELAotICAgIDB4RTUsMHg2
MSwweDg0LDB4NTksMHg3RSwweDdBLDB4NkEsMHhFQywweEU2LDB4NTksMHg2NCwweDUxLDB4RjUs
MHhERCwweEZGLDB4RUIsCi0gICAgMHhBNSwweDUxLDB4NjQsMHg0OSwweEUyLDB4NjAsMHg3OCww
eDVBLDB4ODUsMHg1MSwweDIyLDB4MzksMHhFQSwweEFBLDB4QUEsMHhBMCwKLSAgICAweDY0LDB4
NDksMHgyMywweDQxLDB4RkEsMHhFOCwweEE4LDB4MjIsMHg2NiwweDcyLDB4NDMsMHg0OSwweEFE
LDB4MkIsMHg4QSwweEEyLAotICAgIDB4NDYsMHg2QSwweDIyLDB4NDksMHhBMCwweEVDLDB4RkEs
MHg3QSwweEE0LDB4NTksMHhFMiwweDM4LDB4QTgsMHhGOCwweERFLDB4NTUsCi0gICAgMHhBNCww
eDUxLDB4MDMsMHg0MSwweDcwLDB4N0EsMHhGQSwweDZGLDB4MjMsMHg0MSwweEMyLDB4MzAsMHhF
RSwweDk2LDB4RkYsMHgyQSwKLSAgICAweDAzLDB4MzksMHhBMiwweDMwLDB4NkEsMHhGRSwweEY4
LDB4RkUsMHhDMiwweDMwLDB4ODIsMHgyOCwweEJCLDB4RDcsMHhFQywweEVBLAotICAgIDB4RTMs
MHgzMCwweDgyLDB4MjAsMHgyNSwweEE3LDB4QUQsMHhBRCwweEMzLDB4MzAsMHhBMiwweDI4LDB4
N0MsMHhBOCwweDhCLDB4RkIsCi0gICAgMHg0NCwweDQxLDB4QTIsMHgyOCwweEQ1LDB4QjUsMHgy
NSwweDBELDB4NjQsMHg0OSwweEMzLDB4MzAsMHhBRCwweEFBLDB4MjgsMHg4MiwKLSAgICAweDQ1
LDB4NDEsMHhFMywweDM4LDB4QjgsMHg1NCwweDU2LDB4NUUsMHgyMywweDQxLDB4QzIsMHgzOCww
eERFLDB4QTgsMHhBMiwweEZBLAotICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHgzRCwweDk3LDB4
QkIsMHg3RiwweDY0LDB4NDksMHgwMywweDQxLDB4RkEsMHg4MiwweDBCLDB4OTUsCi0gICAgMHg0
NCwweDQ5LDB4QTEsMHgyOCwweDdFLDB4NTgsMHg3MCwweEU4LDB4RTMsMHgzMCwweDgxLDB4Mjgs
MHgwQiwweEJBLDB4RDcsMHhBRSwKLSAgICAweDQ0LDB4MzksMHhBMiwweDMwLDB4MkEsMHhCRiww
eEFELDB4RjcsMHgyNCwweDM5LDB4QzIsMHgyOCwweEU4LDB4QkUsMHhGRiwweDdCLAotICAgIDB4
RTMsMHgzMCwweDgxLDB4MjgsMHgwOCwweDA4LDB4QkUsMHhGRCwweEUzLDB4MzAsMHhBMiwweDI4
LDB4NDAsMHhGOCwweEVBLDB4RkYsCi0gICAgMHhDMiwweDMwLDB4QTIsMHgyOCwweDkyLDB4RjYs
MHhBRiwweDU4LDB4MDMsMHgzOSwweEMyLDB4MjgsMHhBQiwweDhFLDB4RUQsMHg1RCwKLSAgICAw
eEUyLDB4MzAsMHhBMiwweDI4LDB4QjgsMHhCRSwweEZBLDB4QUYsMHgwMywweDMxLDB4QzIsMHgy
OCwweDhGLDB4MkYsMHg5NywweEQ3LAotICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHhFQywweDYy
LDB4QUMsMHhFRiwweEUyLDB4MzAsMHhBMSwweDI4LDB4QkUsMHgzRiwweEJBLDB4RUEsCi0gICAg
MHhFMiwweDMwLDB4QTIsMHgyOCwweDYyLDB4OEUsMHhBQSwweDhCLDB4MDMsMHgzMSwweEExLDB4
MjgsMHhGRCwweEFGLDB4OEIsMHgyQiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4OEUsMHgy
RSwweDM3LDB4NTcsMHgwMywweDM5LDB4QzIsMHgzMCwweEZBLDB4ODAsMHgwQSwweEFGLAotICAg
IDB4MDMsMHgzOSwweEMyLDB4MzAsMHhENywweEJFLDB4QjgsMHhBQSwweDAzLDB4MzksMHhDMiww
eDMwLDB4QkYsMHhEQiwweDcyLDB4NjIsCi0gICAgMHg2NCwweDQ5LDB4QTIsMHgzMCwweDJGLDB4
MkYsMHgzRiwweEJGLDB4RTksMHg3QSwweDIzLDB4NDEsMHhGRiwweEZGLDB4QkQsMHgzNSwKLSAg
ICAweDExLDB4QzUsMHhBOSwweDcyLDB4MjUsMHgyRCwweDAzLDB4MDIsMHgzMCwweENELDB4OEUs
MHhCNCwweDdGLDB4RkYsMHg3RSwweEU4LAotICAgIDB4QUYsMHhCQywweDZFLDB4QUMsMHgyQiww
eDI4LDB4RUYsMHg5NCwweEQwLDB4QkMsMHg2RSwweEI0LDB4QUEsMHg4OCwweEVCLDB4NzcsCi0g
ICAgMHg4RiwweEI0LDB4MkIsMHg4MywweDc4LDB4RTAsMHhBMCwweDg4LDB4MkQsMHhBNCwweEE5
LDB4NzIsMHg3NywweDdGLDB4RkUsMHg2MCwKLSAgICAweEM5LDB4NzIsMHg0NiwweDYyLDB4REYs
MHg3QywweDZBLDB4QTgsMHhFOSwweDcyLDB4NjcsMHg2QSwweEFGLDB4QTksMHhBRCwweDJGLAot
ICAgIDB4MEEsMHg3QiwweEE4LDB4NkEsMHg3RiwweEUyLDB4OEEsMHgwQSwweEU5LDB4N0EsMHgw
NiwweDVBLDB4N0EsMHhGQSwweEM4LDB4QTgsCi0gICAgMHhFQSwweDdBLDB4RTYsMHg1OSwweDM1
LDB4RDUsMHg1RiwweDdFLDB4NkIsMHg4MywweEE1LDB4NDksMHgwMCwweDAzLDB4QkQsMHg1NSwK
LSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4RkIsMHhFOCwweEFBLDB4NzksMHgyMywweDQ5LDB4
RTIsMHg0MCwweENCLDB4NUIsMHg1NiwweEI3LAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHg4
QSwweEFBLDB4N0IsMHhEQywweDIzLDB4NDksMHhFMiwweDQwLDB4QUYsMHgwMCwweEFBLDB4RUIs
Ci0gICAgMHgyMywweDQxLDB4RTIsMHg0MCwweDgwLDB4MDAsMHhBMiwweDY4LDB4MjMsMHg0OSww
eEMyLDB4MzgsMHhFMCwweEZFLDB4QkYsMHhBRSwKLSAgICAweDAzLDB4NDEsMHhFMiwweDQwLDB4
MDksMHg0MywweDVFLDB4QkQsMHgyMywweDQ5LDB4RTIsMHg0MCwweEFBLDB4QkIsMHhGRiwweEU1
LAotICAgIDB4MDIsMHg0MSwweEUyLDB4NDAsMHgyMywweEFGLDB4MDksMHg5RCwweDIzLDB4NDks
MHhDMiwweDM4LDB4N0EsMHhEQywweEVFLDB4RkYsCi0gICAgMHgwMywweDQ5LDB4RTIsMHg0MCww
eDA1LDB4QkYsMHg5NywweDdELDB4MjYsMHg2QSwweDAzLDB4NDksMHgyRCwweDI5LDB4MEQsMHgw
RCwKLSAgICAweDA2LDB4NjIsMHhBNCwweDU5LDB4N0MsMHhEOCwweEU4LDB4QUEsMHhFNSwweDYx
LDB4ODQsMHg1MSwweDVELDB4RjgsMHg2QSwweDdDLAotICAgIDB4ODQsMHg1MSwweDAzLDB4NDEs
MHhBMCwweEJBLDB4REUsMHhGRSwweDY0LDB4NDksMHgyMywweDQxLDB4ODAsMHg4MCwweDlBLDB4
RDUsCi0gICAgMHg2NCwweDQ5LDB4MDMsMHg0MSwweEFBLDB4RTIsMHg2QSwweEM3LDB4MjYsMHg2
QSwweDAzLDB4NDksMHgwMywweDBCLDB4QUQsMHhBNSwKLSAgICAweEU1LDB4NjEsMHg2MSwweDI4
LDB4RTAsMHg3OCwweDdFLDB4N0EsMHhDMiwweDM4LDB4NjEsMHgyOCwweDhBLDB4QTUsMHhENSww
eEFDLAotICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhDMywweEY5LDB4N0QsMHhENSwweDIzLDB4
MzksMHhDMiwweDMwLDB4MjIsMHhBMiwweEYyLDB4NTIsCi0gICAgMHgwMywweDM5LDB4ODIsMHgy
MCwweEEwLDB4OEEsMHhFQSwweDdGLDB4QzIsMHgyOCwweDYxLDB4MjAsMHhBMiwweEE4LDB4QkYs
MHhGNSwKLSAgICAweEMyLDB4MjgsMHg4MiwweDIwLDB4MkEsMHgwRiwweDBELDB4MkYsMHhFMiww
eDI4LDB4ODEsMHgyOCwweEVFLDB4OUEsMHhCQywweEZBLAotICAgIDB4NDQsMHg0MSwweEMyLDB4
MzAsMHgyNSwweDI1LDB4MkQsMHhBRCwweDQ0LDB4NDksMHg4MSwweDI4LDB4MDAsMHhBMCwweDVB
LDB4NUUsCi0gICAgMHg0NCwweDQ5LDB4NjEsMHgyMCwweEE4LDB4QUEsMHhGNywweEZELDB4MDMs
MHg0MSwweDgxLDB4MjgsMHhBOCwweEFBLDB4QUEsMHg3RCwKLSAgICAweDAzLDB4NDEsMHhDMiww
eDM4LDB4RjAsMHhDMCwweDAyLDB4ODksMHgyMywweDQxLDB4QzIsMHgzOCwweDM3LDB4QkYsMHgz
RiwweEVCLAotICAgIDB4MjMsMHg0MSwweEUyLDB4MzgsMHhFMCwweEZGLDB4QkUsMHhGRSwweDAz
LDB4NDEsMHhBMiwweDI4LDB4NUYsMHg3RSwweEY4LDB4RjgsCi0gICAgMHhFMywweDMwLDB4NjEs
MHgyOCwweEFBLDB4QkMsMHg3QiwweEVBLDB4RTMsMHgzMCwweDgxLDB4MjgsMHhFOCwweEY3LDB4
RDUsMHhGNSwKLSAgICAweEMyLDB4MjgsMHg4MiwweDI4LDB4REEsMHg4MiwweDAzLDB4QjUsMHhF
MywweDMwLDB4QTIsMHgyOCwweDc1LDB4RUEsMHg4MiwweDNGLAotICAgIDB4MDMsMHgzMSwweDgy
LDB4MjgsMHg3RiwweDdFLDB4RTgsMHhBMiwweEMyLDB4MjgsMHg4MSwweDI4LDB4RTMsMHhBRCww
eEZGLDB4QTAsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDlELDB4NzcsMHhBRiwweEFGLDB4
MDMsMHgzMSwweEMyLDB4MzAsMHg2NywweEVGLDB4Q0EsMHhGQiwKLSAgICAweDAzLDB4MzEsMHhD
MiwweDI4LDB4RDUsMHhENSwweDhGLDB4MEUsMHgwMiwweDMxLDB4QzIsMHgyOCwweEE1LDB4OTUs
MHhGRiwweERCLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhFRSwweEI4LDB4NkUsMHhFRSww
eDI0LDB4MzksMHhDMiwweDMwLDB4M0IsMHgyQiwweDJCLDB4RUQsCi0gICAgMHgyMywweDM5LDB4
QzIsMHgzMCwweDU2LDB4REUsMHhERSwweDNGLDB4MjMsMHgzOSwweEUyLDB4MzAsMHg1NSwweDVE
LDB4RDUsMHhCQywKLSAgICAweDI0LDB4MzksMHhDMiwweDMwLDB4RkQsMHhCNywweEZGLDB4RkMs
MHgwMywweDQxLDB4RTMsMHgzMCwweDc3LDB4RUEsMHhBQSwweDJGLAotICAgIDB4NjQsMHg0OSww
eEMyLDB4MzgsMHhGRCwweEE1LDB4QUIsMHgyRiwweDBDLDB4QTQsMHg4NSwweDUxLDB4QjUsMHgz
NSwweDNELDB4MkQsCi0gICAgMHgzMSwweENELDB4QUYsMHhCNCwweDAzLDB4ODksMHgyOSwweEE5
LDB4MzEsMHhDNSwweEQwLDB4QkMsMHg4MCwweDAwLDB4QUEsMHhGOSwKLSAgICAweDEwLDB4QzUs
MHg4RSwweEI0LDB4N0UsMHhFMCwweDAwLDB4MDgsMHgxMCwweEM1LDB4NEQsMHhBQywweEQ3LDB4
NUUsMHhGOCwweDgwLAotICAgIDB4RDAsMHhCQywweDRFLDB4QUMsMHg1NywweEY1LDB4RjUsMHhG
QywweDZFLDB4QUMsMHg2QiwweDhCLDB4NzgsMHhFOCwweEUwLDB4ODAsCi0gICAgMHhDQywweDlC
LDB4ODgsMHg2QSwweDVGLDB4N0UsMHhGOCwweDg4LDB4MEEsMHg3QiwweDg3LDB4NkEsMHhCRCww
eEJGLDB4QkYsMHhBOCwKLSAgICAweDJBLDB4ODMsMHhDOCwweDcyLDB4MjksMHgyRiwweDJFLDB4
MkYsMHg0QiwweDgzLDB4QTksMHg2QSwweDdBLDB4QUEsMHhBMCwweDgyLAotICAgIDB4MkEsMHg4
MywweDI3LDB4NUEsMHg3RiwweEZBLDB4RTgsMHhBMCwweDg4LDB4NkEsMHg2NCwweDQxLDB4NUYs
MHg3QSwweEU4LDB4RTAsCi0gICAgMHgyMywweDQ5LDB4RTIsMHg0MCwweERELDB4RkIsMHhBRiww
eEJCLDB4MjMsMHg0OSwweEUyLDB4NDAsMHhBRiwweEZGLDB4RkEsMHhBOCwKLSAgICAweDIzLDB4
NDksMHhFMiwweDQwLDB4RkYsMHhFRiwweENCLDB4Q0IsMHgyMywweDQ5LDB4MDIsMHg0MSwweDZG
LDB4RjUsMHg5MSwweDg3LAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBOCwweEEwLDB4RTAs
MHhCQywweDAzLDB4NDEsMHhFMiwweDQwLDB4MkMsMHgzMywweDg3LDB4RkYsCi0gICAgMHgwMyww
eDQxLDB4RTIsMHgzOCwweDBBLDB4MEUsMHhCNSwweERFLDB4MDMsMHg0MSwweEUyLDB4NDAsMHg2
QiwweEIzLDB4MjAsMHhCQiwKLSAgICAweDAzLDB4NDEsMHhDMSwweDM4LDB4QUUsMHgwMCwweDg4
LDB4Q0YsMHgyMywweDQxLDB4RTIsMHg0MCwweEY1LDB4RUYsMHhCRiwweEZELAotICAgIDB4MDIs
MHg0MSwweEMyLDB4NDAsMHhBMCwweDgwLDB4QjgsMHhGOCwweDQ2LDB4NkEsMHgwMiwweDQxLDB4
OEQsMHgyRCwweDBELDB4MkQsCi0gICAgMHgyNiwweDZBLDB4QzUsMHg1OSwweERFLDB4RDgsMHhE
OCwweEZBLDB4MDUsMHg2MiwweDAzLDB4NDEsMHhFOCwweEY4LDB4N0EsMHg3QywKLSAgICAweDQ0
LDB4NDksMHhFMiwweDM4LDB4MEEsMHhBOCwweEZELDB4N0YsMHg0NCwweDQxLDB4MDMsMHgzOSww
eDJFLDB4MkEsMHgwRCwweDg5LAotICAgIDB4NDQsMHg0MSwweDAzLDB4NDEsMHhFQSwweEVBLDB4
NjIsMHhBQSwweDY0LDB4NDksMHhDMiwweDMwLDB4MkYsMHhGQSwweDVFLDB4NUUsCi0gICAgMHhF
NSwweDU5LDB4RTMsMHgzOCwweDgyLDB4OEEsMHhGRCwweDc1LDB4MDMsMHgzOSwweDgxLDB4MjAs
MHg3OCwweEU4LDB4RkMsMHg3QSwKLSAgICAweEMyLDB4MzAsMHhBMSwweDIwLDB4QTcsMHhBRiww
eDhCLDB4QUQsMHhFMywweDMwLDB4ODEsMHgyMCwweEYwLDB4RkEsMHg2RiwweDdBLAotICAgIDB4
QzIsMHgyOCwweDYxLDB4MjAsMHg3MiwweDU3LDB4NTUsMHhENSwweEEyLDB4MjgsMHg2MSwweDIw
LDB4QTUsMHgyRiwweDNCLDB4MkEsCi0gICAgMHhFMywweDMwLDB4ODEsMHgyOCwweEJCLDB4QUIs
MHhBRCwweDJGLDB4QzIsMHgyOCwweEEyLDB4MjgsMHgwMCwweDMzLDB4MUEsMHhDMCwKLSAgICAw
eDI0LDB4MzksMHhBMiwweDI4LDB4MEQsMHhGNywweDdGLDB4NTcsMHhFMywweDMwLDB4ODEsMHgy
MCwweDc4LDB4QjgsMHhGRiwweEY1LAotICAgIDB4QzIsMHgyOCwweDYxLDB4MjAsMHhBOSwweDg4
LDB4MDAsMHhBMCwweEExLDB4MjgsMHg2MSwweDIwLDB4RkUsMHhBRSwweEVFLDB4QUEsCi0gICAg
MHhFMywweDM4LDB4ODEsMHgyOCwweDAzLDB4MjksMHhCNSwweEJELDB4MDMsMHg0MSwweEMyLDB4
MzAsMHgwQiwweEEyLDB4MjIsMHhCNSwKLSAgICAweDIzLDB4NDEsMHhFMiwweDM4LDB4NUEsMHhB
QSwweDg4LDB4MDgsMHgyMywweDQxLDB4QTIsMHgzMCwweEZFLDB4NUEsMHg1OCwweEY4LAotICAg
IDB4QzIsMHgzMCwweDgyLDB4MjgsMHhBOCwweEE4LDB4QUEsMHgyRCwweEUzLDB4MzAsMHg4MSww
eDI4LDB4NkEsMHhDQSwweDBCLDB4QUYsCi0gICAgMHhFMywweDMwLDB4ODEsMHgyOCwweDU1LDB4
NTUsMHhGRSwweDYyLDB4QzIsMHgyOCwweDgyLDB4MjgsMHgyRiwweEVELDB4OTUsMHhCRCwKLSAg
ICAweDAzLDB4MzksMHhBMiwweDI4LDB4Q0IsMHhFRCwweEVGLDB4RUIsMHhDMiwweDI4LDB4ODEs
MHgyOCwweEFBLDB4RkUsMHg3RSwweEVFLAotICAgIDB4RTMsMHgzMCwweDgxLDB4MjAsMHhBQiww
eEJGLDB4OTUsMHhBRiwweEUzLDB4MzAsMHhBMiwweDI4LDB4QkUsMHg5RiwweEQ3LDB4QjcsCi0g
ICAgMHgwMywweDM5LDB4QTIsMHgyOCwweDJBLDB4OEIsMHhBRCwweEFGLDB4MDMsMHgzMSwweEEy
LDB4MjgsMHhFQSwweEFFLDB4OEQsMHg3OSwKLSAgICAweDAzLDB4MzEsMHhDMiwweDI4LDB4QUIs
MHg1QiwweDdFLDB4N0QsMHhDMiwweDMwLDB4RTMsMHgyOCwweEJBLDB4RTgsMHgwQSwweEEyLAot
ICAgIDB4MjMsMHg0MSwweEMyLDB4MzAsMHhGOSwweEFGLDB4MDksMHhBRiwweDIzLDB4NDEsMHgw
MywweDM5LDB4NUUsMHg2NywweDk2LDB4MTYsCi0gICAgMHgyMywweDQxLDB4RTMsMHgzOCwweDcy
LDB4MjIsMHgwQiwweDNFLDB4NDQsMHg0OSwweEUyLDB4MzgsMHhGNSwweDJCLDB4MjMsMHhBMiwK
LSAgICAweEM2LDB4NTksMHgyMywweDQxLDB4QjUsMHgyRiwweDNCLDB4MEIsMHhFRSwweEEzLDB4
RTYsMHg1OSwweDJELDB4QTUsMHhCRiwweEVGLAotICAgIDB4RjAsMHhCQywweDJCLDB4OEIsMHgw
MCwweDBCLDB4QkQsMHg1NSwweEYwLDB4QkMsMHhBQiwweDkzLDB4MDAsMHgwMCwweDAyLDB4QTUs
Ci0gICAgMHgxMCwweEM1LDB4RjAsMHhCQywweDhELDB4QTcsMHhBRiwweEJELDB4MTAsMHhDNSww
eENGLDB4QkMsMHhBOCwweEEwLDB4QkUsMHg3RSwKLSAgICAweEYwLDB4QkMsMHg4RiwweEI0LDB4
NzgsMHgwOCwweDIyLDB4MEEsMHhGMCwweEJDLDB4NEUsMHhBQywweDc3LDB4NzgsMHg2MCwweDgw
LAotICAgIDB4NEUsMHhBQywweEFDLDB4OTMsMHg1RiwweEZBLDB4RUEsMHhBOCwweDJELDB4QTQs
MHgwOSwweDdCLDB4NUYsMHhFOCwweDAyLDB4ODAsCi0gICAgMHgyRCwweDlDLDB4MEEsMHg3Qiww
eDU1LDB4NUYsMHhFMiwweDAwLDB4Q0MsMHg5MywweDJBLDB4N0IsMHhGNSwweDdELDB4RkYsMHhB
MCwKLSAgICAweENCLDB4OTMsMHhFQSwweDdBLDB4N0YsMHhGRSwweEZCLDB4ODAsMHg4QiwweDhC
LDB4MjcsMHg1QSwweDdGLDB4N0EsMHhGQSwweEE4LAotICAgIDB4MjMsMHg0OSwweEUyLDB4Mzgs
MHhCRiwweDhCLDB4QUIsMHg2QywweDIzLDB4NDksMHhFMywweDQwLDB4OEEsMHhBQSwweEE2LDB4
RUQsCi0gICAgMHgyMywweDQ5LDB4RTMsMHg0MCwweEEyLDB4RUUsMHhCRSwweEZFLDB4MjMsMHg0
OSwweEUyLDB4NDAsMHhGMCwweDYwLDB4QTgsMHhEQSwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4
LDB4N0EsMHg5QywweDZDLDB4RkEsMHgwMywweDQxLDB4QzIsMHgzOCwweEFCLDB4MEUsMHhBMyww
eDc3LAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHgzRSwweEFCLDB4RUIsMHhFRiwweDAzLDB4
NDEsMHhDMiwweDM4LDB4QjIsMHhGRSwweEZDLDB4RUMsCi0gICAgMHhFMiwweDQwLDB4MDMsMHgz
MSwweDI4LDB4MDgsMHg4MCwweDJBLDB4MDMsMHg0MSwweEUyLDB4NDAsMHhFRCwweDU5LDB4RUQs
MHhDMywKLSAgICAweDAzLDB4NDEsMHhDMiwweDQwLDB4M0EsMHgyOCwweEVGLDB4MkEsMHg2Nyww
eDcyLDB4MDIsMHg0MSwweDJELDB4MjUsMHgyNSwweDI1LAotICAgIDB4NDYsMHg2QSwweEU1LDB4
NjEsMHhEQywweDc4LDB4NUEsMHhGOCwweEU1LDB4NTksMHgwMywweDQxLDB4NzgsMHg3OCwweDVD
LDB4NTgsCi0gICAgMHg0NCwweDQxLDB4RTMsMHgzOCwweEFGLDB4OEYsMHhFRCwweEY5LDB4MjMs
MHgzOSwweEUzLDB4MzgsMHhGMiwweDc4LDB4OEYsMHhBRSwKLSAgICAweDQzLDB4NDEsMHhFMyww
eDMwLDB4ODIsMHhCRiwweERGLDB4N0YsMHg0NCwweDQxLDB4RTIsMHgzMCwweDdBLDB4RjgsMHhB
QSwweEVELAotICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHg3RiwweDdGLDB4NzgsMHhBMiwweEUy
LDB4MzAsMHhBMSwweDI4LDB4RUUsMHhGRiwweDU3LDB4RjgsCi0gICAgMHhFMywweDI4LDB4QTIs
MHgyOCwweEFGLDB4N0YsMHg1NSwweEE2LDB4RTIsMHgyOCwweDgxLDB4MjAsMHg1RSwweDVGLDB4
RkIsMHgyMCwKLSAgICAweEUzLDB4MzAsMHg4MSwweDIwLDB4RDUsMHhBRCwweDJBLDB4QUEsMHhF
MywweDMwLDB4QTIsMHgyOCwweEQ1LDB4RTUsMHhCQiwweEFFLAotICAgIDB4RTMsMHgzMCwweEEy
LDB4MjgsMHgyRiwweEJGLDB4RUEsMHhBMywweEUzLDB4MzAsMHhBMiwweDI4LDB4NkEsMHhFOCww
eDIwLDB4MjgsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweERGLDB4RUUsMHhCOCwweEVDLDB4
RTIsMHgyOCwweEEyLDB4MjgsMHg1NSwweDU3LDB4RjYsMHhGMiwKLSAgICAweEMyLDB4MjgsMHg4
MSwweDIwLDB4NjMsMHg2QiwweEFGLDB4RDcsMHhDMiwweDI4LDB4ODIsMHgyMCwweEVGLDB4RUUs
MHhDOCwweENFLAotICAgIDB4QzIsMHgyOCwweDgyLDB4MjAsMHg4QiwweDhBLDB4QkIsMHg1Nyww
eEMyLDB4MzAsMHg2MSwweDIwLDB4MkEsMHhCRiwweEJGLDB4RjYsCi0gICAgMHgyNCwweDQxLDB4
ODEsMHgyMCwweDBBLDB4QUYsMHhERCwweEQ3LDB4NDQsMHg0MSwweEMyLDB4MzAsMHg2MCwweEUw
LDB4RTMsMHhGRCwKLSAgICAweEUzLDB4MzAsMHg4MSwweDI4LDB4RjUsMHhGRiwweEVBLDB4ODgs
MHhFMiwweDMwLDB4QTIsMHgyOCwweDVELDB4NTUsMHhENywweEFBLAotICAgIDB4RTMsMHgzMCww
eEEyLDB4MjgsMHhCRiwweDM1LDB4MkIsMHhBMCwweDIzLDB4MzksMHhBMiwweDI4LDB4RkQsMHhB
QSwweDhFLDB4MEIsCi0gICAgMHg0NCwweDQxLDB4QTIsMHgzMCwweDVELDB4N0YsMHhBMiwweDAy
LDB4MjQsMHgzOSwweDgxLDB4MjgsMHhENywweDVGLDB4RkUsMHg4OCwKLSAgICAweDAzLDB4MzEs
MHhBMiwweDI4LDB4ODksMHgwRCwweEVCLDB4QUYsMHhFMywweDMwLDB4QTIsMHgyOCwweEJFLDB4
NzgsMHg3OCwweEZFLAotICAgIDB4QzIsMHgyOCwweDgyLDB4MjgsMHgwMCwweEVBLDB4RUIsMHhG
QSwweEMyLDB4MjgsMHg4MSwweDI4LDB4QTIsMHg4MywweDBELDB4QzUsCi0gICAgMHhDMiwweDMw
LDB4QTIsMHgyOCwweEI1LDB4NTcsMHg3RiwweEU5LDB4QzIsMHgyOCwweDgyLDB4MjgsMHgwMCww
eDBCLDB4MEQsMHgyRSwKLSAgICAweDAzLDB4MzksMHhDMiwweDI4LDB4QkIsMHhERCwweDZGLDB4
OEEsMHgwMiwweDM5LDB4QzIsMHgzMCwweDJBLDB4QkQsMHhGRCwweEE3LAotICAgIDB4NjQsMHg0
OSwweEUyLDB4MzgsMHhCNywweDhGLDB4OEQsMHhCRCwweEE1LDB4NTEsMHgwMywweDQxLDB4RkQs
MHgzRCwweDI3LDB4QUYsCi0gICAgMHg0NywweDZBLDB4NjQsMHg1MSwweEJELDB4QUQsMHgyRiww
eDJGLDB4MEEsMHg4MywweDY4LDB4NkEsMHgwOSwweDA5LDB4MEIsMHgwQiwKLSAgICAweDBBLDB4
ODMsMHhFOSwweDdBLDB4MzMsMHgzRCwweEE4LDB4MzAsMHhBQywweDlCLDB4RTksMHg3QSwweDJC
LDB4QjcsMHhERCwweDU1LAotICAgIDB4RDAsMHhCQywweEVBLDB4ODIsMHgwQSwweEJGLDB4RkQs
MHhENSwweENGLDB4QkMsMHg0QiwweDhCLDB4MDAsMHgwMCwweDJGLDB4RDUsCi0gICAgMHhGMCww
eEJDLDB4MEUsMHhBNCwweDAwLDB4MDAsMHgwMCwweDJELDB4MTAsMHhDNSwweEFFLDB4QjQsMHg3
QSwweDZBLDB4RUEsMHhDOCwKLSAgICAweDhFLDB4QjQsMHgyRCwweEE0LDB4NzcsMHhENiwweERD
LDB4QjgsMHg2RSwweEFDLDB4MEQsMHhBNCwweEY1LDB4REUsMHhGQSwweEU4LAotICAgIDB4NEUs
MHhBQywweDBELDB4QTQsMHhBRCwweDlFLDB4RkUsMHgwQSwweDRFLDB4QUMsMHgyRCwweDlDLDB4
N0EsMHhCQiwweEFCLDB4MEEsCi0gICAgMHg2RSwweEFDLDB4MkQsMHhBNCwweDU1LDB4RjIsMHhF
MiwweEE4LDB4NEUsMHhBNCwweDZCLDB4ODMsMHg3RSwweEEwLDB4ODAsMHgwMCwKLSAgICAweDAz
LDB4NDEsMHhDMSwweDM4LDB4RjAsMHg5OCwweEY4LDB4QUEsMHg0MywweDQxLDB4RTIsMHg0MCww
eDc3LDB4RjUsMHhGRiwweDlGLAotICAgIDB4MjMsMHg0OSwweEUzLDB4NDAsMHhBMiwweDJGLDB4
RUIsMHg3QiwweDAzLDB4NDEsMHhDMiwweDM4LDB4ODAsMHhBMCwweEYyLDB4NjAsCi0gICAgMHgw
MiwweDQxLDB4QzIsMHgzOCwweEZCLDB4REIsMHhGMywweDNFLDB4MDMsMHg0MSwweEMyLDB4Mzgs
MHhFQSwweDc5LDB4QkEsMHhBRSwKLSAgICAweDAzLDB4NDEsMHhFMiwweDM4LDB4M0QsMHgyRCww
eEVGLDB4NTUsMHgwMywweDQxLDB4QzIsMHgzOCwweEVFLDB4RUIsMHg4RCwweDNCLAotICAgIDB4
MDMsMHg0MSwweEUyLDB4MzgsMHgxRSwweEIzLDB4RkYsMHg2RiwweDAyLDB4NDEsMHhDMiwweDM4
LDB4QUEsMHg5RiwweEJFLDB4RkIsCi0gICAgMHgwMywweDQxLDB4QzEsMHgzOCwweEFBLDB4OUEs
MHhGQSwweEVGLDB4NDYsMHg2QSwweEUyLDB4NDAsMHgyNSwweDM1LDB4MjUsMHgzNSwKLSAgICAw
eDY2LDB4NzIsMHhFNSwweDYxLDB4RkEsMHhGQywweDc4LDB4RTgsMHgwNSwweDYyLDB4RTIsMHgz
OCwweDU4LDB4N0EsMHg1QywweDc4LAotICAgIDB4MDMsMHgzOSwweEUyLDB4MzAsMHgwMiwweDJC
LDB4QkUsMHg5NywweDI0LDB4MzksMHhFMywweDM4LDB4RTIsMHhBRiwweEY3LDB4NzYsCi0gICAg
MHgyMywweDM5LDB4MDMsMHgzOSwweDZELDB4RjYsMHhBRCwweDU1LDB4NDQsMHg0MSwweEUyLDB4
MzAsMHhGRSwweDgyLDB4QUEsMHhGRiwKLSAgICAweDQzLDB4MzksMHhFMywweDM4LDB4QUQsMHg3
RiwweEZBLDB4OEEsMHgyNCwweDM5LDB4RTMsMHgzMCwweDdCLDB4QTIsMHhCRCwweEY4LAotICAg
IDB4MjQsMHgzOSwweEMyLDB4MjgsMHg3RCwweEVFLDB4QTgsMHg4QSwweDIzLDB4MzksMHhFMyww
eDMwLDB4NUQsMHhENywweEFGLDB4QUEsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzMCwweDVELDB4
Q0UsMHhBRSwweEJGLDB4MjQsMHgzOSwweEMyLDB4MzAsMHhERiwweEZBLDB4RTIsMHhBQSwKLSAg
ICAweDAzLDB4MzksMHhDMiwweDI4LDB4RTUsMHhGQSwweDIwLDB4MjAsMHgwMywweDMxLDB4QzIs
MHgyOCwweEI4LDB4REEsMHhEQywweEEwLAotICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHhGNCww
eENBLDB4MkUsMHgzQSwweEUzLDB4MzAsMHhDMiwweDI4LDB4RkYsMHhCQiwweEMyLDB4MDgsCi0g
ICAgMHhFMywweDI4LDB4ODIsMHgyMCwweDdGLDB4RTgsMHhBQSwweEEwLDB4QzIsMHgyOCwweDgy
LDB4MjAsMHg3RiwweEVFLDB4RTgsMHg4OCwKLSAgICAweEMzLDB4MjgsMHg4MiwweDIwLDB4NzUs
MHg3RiwweDZCLDB4RTIsMHhBMiwweDI4LDB4ODEsMHgyMCwweEE3LDB4NTUsMHgxNiwweDgwLAot
ICAgIDB4QTIsMHgyOCwweDgyLDB4MjAsMHgzQiwweDA3LDB4QUUsMHhGRCwweDAzLDB4MzksMHg4
MiwweDI4LDB4OEYsMHg4OSwweDBGLDB4RkQsCi0gICAgMHhDMiwweDMwLDB4RTMsMHgyOCwweEEw
LDB4ODIsMHgwQiwweDA4LDB4MDMsMHgzOSwweEMyLDB4MzAsMHhFRiwweDVDLDB4QUIsMHgzRCwK
LSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RUEsMHg4MywweEVBLDB4NzAsMHgyMywweDQxLDB4
QTIsMHgyOCwweDAyLDB4QUIsMHhCRCwweEY1LAotICAgIDB4NjQsMHg0OSwweEUzLDB4MzgsMHhB
MiwweDAzLDB4OEIsMHhENSwweDY0LDB4NDEsMHhDMiwweDMwLDB4RkUsMHg3QywweDc4LDB4NkEs
Ci0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEZCLDB4QjUsMHhCNSwweEZFLDB4RTMsMHgzOCww
eEMyLDB4MjgsMHhEMSwweEVBLDB4QjMsMHg0RiwKLSAgICAweEMyLDB4MzAsMHg4MSwweDI4LDB4
RkUsMHhEQSwweEJFLDB4OEEsMHhFMiwweDMwLDB4QTIsMHgyOCwweDU1LDB4RjUsMHhEQiwweEEz
LAotICAgIDB4RTIsMHgzMCwweEEyLDB4MjgsMHg2OSwweDZCLDB4RUYsMHhBQSwweEUzLDB4MzAs
MHg4MSwweDIwLDB4QUYsMHgzOSwweDJCLDB4QUYsCi0gICAgMHgyMywweDM5LDB4RTIsMHgzMCww
eDA5LDB4MjksMHg5RCwweDVGLDB4NjQsMHg0OSwweEUyLDB4MzAsMHhFNywweEJGLDB4MkYsMHhC
RiwKLSAgICAweDQzLDB4NDEsMHgwMywweDM5LDB4MzUsMHhBRSwweDlCLDB4RjgsMHgyNiwweDYy
LDB4MjMsMHg0MSwweEZELDB4RkYsMHhCRiwweDJELAotICAgIDB4QTgsMHg3MiwweDg0LDB4NTEs
MHgyRCwweDJELDB4MkIsMHgwQSwweDBBLDB4ODMsMHhBOCwweDdBLDB4MjksMHhFQiwweENELDB4
RkIsCi0gICAgMHgwQSwweDgzLDB4QzksMHg3QSwweEFBLDB4RjksMHhERCwweEE1LDB4MkIsMHg4
MywweENBLDB4N0EsMHhGQiwweDhCLDB4QTksMHhCNywKLSAgICAweDJBLDB4ODMsMHhDOSwweDdB
LDB4RkIsMHhCNiwweEIwLDB4MjgsMHg0QiwweDhCLDB4RUEsMHg3QSwweDM5LDB4MkUsMHhCQiww
eERGLAotICAgIDB4MkUsMHhBNCwweDJBLDB4ODMsMHgyRiwweEY1LDB4NTUsMHg1NSwweEYwLDB4
QkMsMHg0QSwweDhCLDB4MDIsMHhBRiwweEQ1LDB4NTUsCi0gICAgMHhEMCwweEI0LDB4OEIsMHg5
MywweEE4LDB4QUEsMHhBQiwweEQ1LDB4QjAsMHhCNCwweDJFLDB4QTQsMHhGRSwweEFBLDB4QUEs
MHhBOSwKLSAgICAweDhGLDB4QjQsMHg0RSwweEFDLDB4NUYsMHhGQSwweDdBLDB4Q0EsMHg4Riww
eEI0LDB4NEUsMHhBQywweEQ3LDB4RUIsMHgzQSwweEIyLAotICAgIDB4OEYsMHhCNCwweDRFLDB4
QUMsMHhGRCwweEJFLDB4M0EsMHgwMCwweEFGLDB4QjQsMHg0RSwweEFDLDB4NUYsMHhGNywweEFG
LDB4ODAsCi0gICAgMHg0MywweDQxLDB4RTIsMHg0MCwweDdELDB4RUYsMHg3RiwweEQ1LDB4MDMs
MHg0MSwweEUyLDB4MzgsMHg3QSwweEI2LDB4NEUsMHhDQSwKLSAgICAweDAzLDB4NDEsMHhDMiww
eDM4LDB4MEEsMHhCQSwweEJCLDB4NjksMHgwMiwweDQxLDB4QzIsMHgzOCwweDZFLDB4RjgsMHg1
QSwweEFELAotICAgIDB4MDMsMHgzOSwweEExLDB4MzgsMHg5QiwweDJBLDB4QUEsMHgyMywweEUy
LDB4NDAsMHgwMywweDM5LDB4OEIsMHhBQiwweDNCLDB4MkIsCi0gICAgMHgwMywweDQxLDB4QzIs
MHgzOCwweDlBLDB4QUEsMHg3OCwweEUzLDB4MDIsMHg0MSwweEMyLDB4MzgsMHhFQiwweDc3LDB4
QUYsMHhFRCwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4RkEsMHhERiwweEFFLDB4OEQsMHgw
MywweDQxLDB4RTIsMHgzOCwweENGLDB4OTYsMHg1NSwweEZBLAotICAgIDB4MDMsMHg0MSwweEMy
LDB4MzgsMHg3MywweDdFLDB4RkMsMHhCRSwweDQ2LDB4NkEsMHhFMiwweDQwLDB4MjUsMHgzNSww
eDM1LDB4MzUsCi0gICAgMHg4NywweDcyLDB4MDUsMHg2MiwweDc4LDB4N0EsMHg1OCwweDdFLDB4
MDUsMHg2MiwweEUyLDB4MzgsMHg1OCwweDc4LDB4NTgsMHg3OCwKLSAgICAweDAzLDB4MzksMHhD
MiwweDMwLDB4RkYsMHg5RiwweDhBLDB4MjMsMHgyMywweDM5LDB4RTMsMHgzMCwweEY3LDB4QkEs
MHg4NywweEU3LAotICAgIDB4MjMsMHgzOSwweEUyLDB4MzAsMHhFQiwweEJCLDB4N0EsMHhGRCww
eDIzLDB4MzksMHgwMywweDM5LDB4QjIsMHg5OCwweDM2LDB4NTUsCi0gICAgMHg0NCwweDQxLDB4
MDMsMHgzOSwweDhCLDB4MkEsMHhFRiwweEZGLDB4NDQsMHg0MSwweDAzLDB4MzksMHg2RSwweDhF
LDB4OEIsMHhEQSwKLSAgICAweDQ0LDB4MzksMHgwMywweDM5LDB4NUYsMHg2MCwweDVBLDB4NkUs
MHgyNCwweDM5LDB4RTIsMHgzMCwweDBBLDB4RUYsMHhGRiwweERGLAotICAgIDB4MjQsMHgzOSww
eEUzLDB4MzgsMHhFMCwweENBLDB4MkQsMHg5OSwweDQ0LDB4NDEsMHhFMywweDMwLDB4NTcsMHhG
NSwweEFCLDB4RUQsCi0gICAgMHgyNCwweDQxLDB4RTMsMHgzMCwweEJGLDB4REUsMHhCRSwweENB
LDB4MDMsMHgzOSwweEUyLDB4MzAsMHg4MCwweDJFLDB4M0UsMHg1RSwKLSAgICAweDAzLDB4MzEs
MHhBMiwweDMwLDB4QTgsMHgyQSwweDgwLDB4QUIsMHgwMywweDMxLDB4RTMsMHgzMCwweEI1LDB4
QzYsMHg3QywweDVCLAotICAgIDB4MDMsMHgzMSwweEMzLDB4MjgsMHg3OCwweDVBLDB4QkUsMHhC
MiwweDAzLDB4MzEsMHhDMywweDI4LDB4RjcsMHg2QSwweEVBLDB4RkYsCi0gICAgMHhFMywweDMw
LDB4QzMsMHgyOCwweDU1LDB4N0YsMHhGRiwweEI3LDB4MDMsMHgzMSwweEEyLDB4MjAsMHg3Nyww
eEY3LDB4RkYsMHhGQiwKLSAgICAweEUzLDB4MjgsMHg4MSwweDIwLDB4RDcsMHhGRiwweEZBLDB4
QUEsMHhBMiwweDI4LDB4ODIsMHgyMCwweEI4LDB4RkMsMHgzQSwweEEyLAotICAgIDB4QzIsMHgz
MCwweDgxLDB4MjAsMHgyQiwweEFGLDB4NTUsMHg1NywweEUzLDB4MzAsMHg4MSwweDI4LDB4MEEs
MHgyQSwweDBGLDB4MjcsCi0gICAgMHgwMywweDM5LDB4QTIsMHgzMCwweDZBLDB4NDgsMHhDMyww
eEUyLDB4RTMsMHgzMCwweEEyLDB4MzAsMHhCRiwweEZCLDB4RUEsMHhBQiwKLSAgICAweEUyLDB4
MzAsMHhDMiwweDMwLDB4RjUsMHg3NywweDVELDB4QTIsMHgwMiwweDM5LDB4QTEsMHgyOCwweEU4
LDB4NkYsMHhFQSwweDJGLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhGNywweEI1LDB4RUYs
MHhBOCwweEUzLDB4MzAsMHhDMiwweDMwLDB4RUYsMHhCMywweDhELDB4QzEsCi0gICAgMHhFMyww
eDMwLDB4QTIsMHgyOCwweEY3LDB4RkYsMHhDRSwweEFELDB4NDQsMHg0MSwweEExLDB4MjgsMHhG
RCwweEVELDB4MkYsMHgzRiwKLSAgICAweDY0LDB4NDEsMHhDMiwweDI4LDB4NzcsMHhFRiwweEFF
LDB4MkEsMHgyNCwweDM5LDB4QTEsMHgyOCwweEY1LDB4RkUsMHhBQSwweDA4LAotICAgIDB4MjMs
MHgzOSwweEUzLDB4MzAsMHhCNSwweEE1LDB4MEYsMHgwQSwweDQzLDB4NDEsMHgwMywweDM5LDB4
MkEsMHhGQSwweEQyLDB4MjMsCi0gICAgMHhDNSwweDUxLDB4QzIsMHgzOCwweEZGLDB4QUYsMHgy
QiwweDAyLDB4NjcsMHg2QSwweDYzLDB4NDksMHgzRCwweDhCLDB4MEEsMHgwMiwKLSAgICAweEM5
LDB4N0EsMHg2OCwweDZBLDB4MkQsMHhCNSwweEI3LDB4QkQsMHhDOSwweDdBLDB4ODgsMHg3Miww
eEE4LDB4OEIsMHhGRCwweEVCLAotICAgIDB4RUEsMHg3QSwweDg4LDB4NzIsMHgwQiwweDg5LDB4
QTIsMHhCRiwweEU5LDB4N0EsMHhBOSwweDcyLDB4QkMsMHhBQiwweEI3LDB4QUUsCi0gICAgMHgy
QSwweDgzLDB4QzksMHg3QSwweEE5LDB4M0YsMHhGQiwweEI1LDB4MEEsMHg4MywweEM5LDB4N0Es
MHhBQywweDI4LDB4N0YsMHhGQywKLSAgICAweDJBLDB4ODMsMHhDOSwweDdBLDB4QUEsMHg4Riww
eEI3LDB4NzcsMHgyQSwweDhCLDB4QzksMHg3QSwweDIwLDB4RkMsMHhERSwweEFBLAotICAgIDB4
NEIsMHg4QiwweEVBLDB4N0EsMHgyQSwweEJCLDB4N0YsMHg3RiwweEVELDB4OUIsMHhDOSwweDdB
LDB4MDIsMHhBRiwweEY3LDB4NUQsCi0gICAgMHg0RSwweEFDLDB4RUEsMHg4MiwweDAwLDB4MDIs
MHhBRiwweEZELDB4NkUsMHhBQywweDZCLDB4OEIsMHgwMCwweDAwLDB4MDIsMHhBRCwKLSAgICAw
eEFGLDB4QjQsMHg0RSwweEFDLDB4QUEsMHhBMiwweEFCLDB4QTksMHhEMCwweEI0LDB4OEYsMHhC
NCwweEFGLDB4RUYsMHhFRSwweEJGLAotICAgIDB4MjMsMHg0MSwweEUyLDB4NDAsMHhEQiwweEVG
LDB4QUYsMHg0MiwweDAyLDB4NDEsMHhDMiwweDM4LDB4RUEsMHhBMCwweDQ4LDB4Q0EsCi0gICAg
MHgwMywweDM5LDB4QzIsMHgzOCwweERFLDB4RkYsMHhBQiwweDJFLDB4MDMsMHg0MSwweEMyLDB4
MzgsMHgzRiwweEE2LDB4OEEsMHgwMiwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4Q0QsMHhB
RSwweEFCLDB4QkUsMHgwMywweDQxLDB4QzIsMHgzOCwweEZGLDB4RUMsMHhERSwweEZFLAotICAg
IDB4MDIsMHg0MSwweEMyLDB4MzgsMHhCQiwweEZBLDB4RkEsMHhCQSwweDAzLDB4NDEsMHhDMiww
eDM4LDB4NzgsMHhFRiwweDVFLDB4QkYsCi0gICAgMHhFMiwweDM4LDB4QzIsMHgzOCwweDgyLDB4
MDAsMHgzMCwweDAwLDB4MDMsMHgzOSwweEMyLDB4MzgsMHhCQSwweDMyLDB4QkYsMHhCRiwKLSAg
ICAweDAzLDB4NDEsMHhDMiwweDM4LDB4QkYsMHhGNywweDlFLDB4N0UsMHg0NiwweDZBLDB4RTIs
MHgzOCwweDM1LDB4MzUsMHgzNSwweDM1LAotICAgIDB4NjcsMHg3MiwweDA2LDB4NjIsMHg3Qyww
eDdBLDB4RUUsMHhFOCwweDA1LDB4NjIsMHhFMiwweDM4LDB4NzgsMHg3OCwweDc4LDB4NTgsCi0g
ICAgMHgwMywweDM5LDB4QzIsMHgzMCwweDgyLDB4NEMsMHg4QSwweEY4LDB4MDMsMHgzOSwweEMy
LDB4MzAsMHhCNiwweEU1LDB4QkEsMHhBMiwKLSAgICAweDAzLDB4MzksMHhFMiwweDI4LDB4QUIs
MHhCQiwweDJELDB4QTcsMHgwMywweDM5LDB4QzIsMHgzMCwweDBFLDB4QjYsMHhCRSwweDJFLAot
ICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHgyQSwweEFELDB4RkYsMHhFRSwweDIzLDB4NDEsMHhF
MywweDMwLDB4QTAsMHg4OCwweEIzLDB4RUQsCi0gICAgMHg0NCwweDQxLDB4MDMsMHgzOSwweDc4
LDB4QkQsMHg1NSwweDU1LDB4MjMsMHgzOSwweEUzLDB4MzgsMHg5RCwweDdBLDB4NkEsMHhFNiwK
LSAgICAweDIzLDB4MzksMHhFMywweDMwLDB4QTksMHg5OSwweEJELDB4QkQsMHg0NCwweDQxLDB4
RTMsMHgzMCwweEY1LDB4REYsMHhGRSwweDhCLAotICAgIDB4NDQsMHg0MSwweEUzLDB4MzAsMHg4
QiwweEE3LDB4REUsMHhCRSwweDI0LDB4NDEsMHhFMywweDM4LDB4NzYsMHhCOCwweEJCLDB4NkYs
Ci0gICAgMHgyMywweDM5LDB4RTMsMHgzMCwweDdCLDB4QjcsMHg4QSwweEFBLDB4MjQsMHgzOSww
eEUzLDB4MzAsMHhCNSwweEZGLDB4RjQsMHhFRiwKLSAgICAweDIzLDB4MzEsMHhFMywweDMwLDB4
QkUsMHhBMiwweDZGLDB4RDUsMHgwMywweDMxLDB4QzMsMHgyOCwweEVBLDB4QUEsMHhBQSwweDAw
LAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhCNSwweEZGLDB4RkYsMHhBQSwweEUzLDB4MzAs
MHhDMiwweDI4LDB4Q0UsMHhBOCwweDAwLDB4RjAsCi0gICAgMHhDMywweDMwLDB4RTIsMHgyOCww
eDBFLDB4QkUsMHhBRSwweEI4LDB4RTIsMHgzMCwweEEyLDB4MjAsMHg1RiwweDVBLDB4QUEsMHhG
RSwKLSAgICAweEMyLDB4MjgsMHg4MiwweDIwLDB4RUIsMHhFRSwweEJBLDB4QUEsMHhDMiwweDI4
LDB4ODEsMHgyMCwweEJGLDB4RkUsMHhFMCwweEIwLAotICAgIDB4MDMsMHgzOSwweDgxLDB4MjAs
MHgwMiwweDI5LDB4QkQsMHg3NSwweDAzLDB4MzEsMHhBMiwweDI4LDB4N0YsMHhGMCwweEFBLDB4
RUQsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEFGLDB4QUIsMHhDMCwweDgwLDB4MjMsMHgz
MSwweEMyLDB4MzAsMHhGNSwweEY3LDB4REYsMHg3QiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMw
LDB4NUUsMHg1QiwweEVFLDB4NkYsMHgwMywweDMxLDB4QzIsMHgzMCwweDZGLDB4NkYsMHg4Myww
eDgyLAotICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHgyRCwweDJCLDB4MkUsMHgyNywweDAzLDB4
MzksMHhFMiwweDMwLDB4MTYsMHgyOSwweDBGLDB4QUMsCi0gICAgMHg0NCwweDQxLDB4RTIsMHgz
MCwweDBBLDB4RUUsMHhGQiwweDYwLDB4MjMsMHgzOSwweEMyLDB4MjgsMHgyMCwweDJBLDB4RkUs
MHhGNywKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4RTAsMHgyRSwweEJBLDB4REYsMHg4NCww
eDUxLDB4RTIsMHgzMCwweEJGLDB4QkYsMHhCRCwweDJELAotICAgIDB4MjcsMHg2MiwweDg0LDB4
NDksMHhBRCwweEE5LDB4QUYsMHgyQiwweDY4LDB4NkEsMHhFNiwweDU5LDB4MkYsMHhCRCwweDJE
LDB4MDksCi0gICAgMHhBOCwweDcyLDB4NjgsMHg2QSwweDg1LDB4OEQsMHhCRCwweEZCLDB4Qzks
MHg3QSwweDg4LDB4NkEsMHhFRiwweDFCLDB4REQsMHhGNywKLSAgICAweEM5LDB4N0EsMHg4OCww
eDcyLDB4M0YsMHhCOCwweEZBLDB4NUQsMHhFQSwweDdBLDB4QTksMHg3MiwweEMwLDB4RkIsMHhF
NSwweDU1LAotICAgIDB4MEEsMHg4MywweEE5LDB4NzIsMHhBNywweEJELDB4Q0QsMHg3RCwweDBB
LDB4ODMsMHhBOSwweDcyLDB4MkUsMHgzRCwweEJGLDB4OTcsCi0gICAgMHgwQSwweDgzLDB4QTks
MHg3MiwweEU4LDB4ODgsMHgyQSwweEI3LDB4MkEsMHg4MywweEM5LDB4N0EsMHg4RiwweEU1LDB4
RkQsMHhGRiwKLSAgICAweDJCLDB4ODMsMHhDOSwweDdBLDB4QUIsMHgyRiwweEZCLDB4REYsMHgy
QiwweDhCLDB4RUEsMHg3QSwweDc3LDB4NzYsMHg2MiwweEZGLAotICAgIDB4MkEsMHg4MywweEU5
LDB4N0EsMHhBRCwweEY3LDB4RkYsMHgwNSwweEFDLDB4OTMsMHhFOSwweDdBLDB4MkIsMHhERCww
eDU1LDB4NTcsCi0gICAgMHg2RSwweEFDLDB4MEEsMHg4MywweDBBLDB4QkYsMHhGNSwweDU1LDB4
QUYsMHhCNCwweDRBLDB4OEIsMHgwMCwweDBBLDB4QUYsMHg1NSwKLSAgICAweDAzLDB4NDEsMHhD
MiwweDM4LDB4QzAsMHhDMCwweDcyLDB4N0MsMHhFMiwweDQwLDB4QzIsMHgzMCwweEYyLDB4Mzgs
MHhBQSwweEE5LAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBQiwweDBBLDB4QUIsMHgwRiww
eDAzLDB4MzksMHhDMiwweDM4LDB4MkEsMHhFQiwweENBLDB4NjgsCi0gICAgMHgyMiwweDM5LDB4
QzIsMHgzOCwweEY2LDB4N0YsMHg3RiwweEJGLDB4MDMsMHgzOSwweEMyLDB4MzgsMHg2RSwweEMy
LDB4QkIsMHhCMiwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4MkYsMHhCRiwweEVDLDB4RUMs
MHgwMywweDQxLDB4QzIsMHgzOCwweDdGLDB4RTIsMHg4RiwweEVCLAotICAgIDB4MjIsMHgzOSww
eEMyLDB4MzgsMHhGRSwweDdGLDB4NUYsMHhERiwweEUyLDB4MzgsMHhDMiwweDM4LDB4MzMsMHgw
MCwweEIzLDB4QjEsCi0gICAgMHhFMiwweDM4LDB4QzIsMHgzOCwweEUwLDB4RjgsMHhEQSwweDI4
LDB4NDcsMHg2QSwweEUyLDB4MzgsMHgzNSwweDI1LDB4MzUsMHgzNSwKLSAgICAweDY3LDB4NzIs
MHhDNSwweDU5LDB4RTAsMHhFMCwweDYwLDB4NzgsMHhBNSwweDU5LDB4MDIsMHgzOSwweDc4LDB4
NUMsMHg3RSwweDU2LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHg3QywweDhBLDB4QjgsMHg5
QywweDAzLDB4MzksMHhFMywweDMwLDB4QkUsMHhENywweEQ3LDB4RjEsCi0gICAgMHgwMywweDMx
LDB4QzIsMHgyOCwweEJFLDB4REMsMHhBMiwweDdFLDB4MDMsMHgzMSwweEUyLDB4MzAsMHg3Riww
eDY1LDB4NzUsMHg3MiwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4OEEsMHhBQSwweDhCLDB4
RkEsMHgwMywweDMxLDB4RTMsMHgzMCwweDhFLDB4MjQsMHgyRCwweDU5LAotICAgIDB4MjMsMHgz
OSwweEUzLDB4MzAsMHhBRiwweERELDB4REYsMHhFNywweDAzLDB4MzksMHhDMiwweDMwLDB4MDgs
MHhFOCwweEZBLDB4REEsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweEFGLDB4QkYsMHhGRSww
eDM4LDB4NDQsMHg0MSwweEUzLDB4MzAsMHhCQSwweEEzLDB4QUIsMHhGNywKLSAgICAweDQ0LDB4
NDEsMHgwMywweDM5LDB4RkYsMHhFRSwweDc4LDB4NUYsMHgyNCwweDM5LDB4RTMsMHgzOCwweEZC
LDB4ODgsMHhCRSwweEFGLAotICAgIDB4MjQsMHgzOSwweEMyLDB4MzAsMHhCRiwweEY2LDB4RTgs
MHhBQSwweDIzLDB4MzksMHhFMiwweDMwLDB4QzMsMHhGRiwweEVBLDB4QUEsCi0gICAgMHgyMyww
eDM5LDB4RTMsMHgzMCwweERGLDB4RkYsMHhGRCwweDlGLDB4MjMsMHgzOSwweEUzLDB4MzAsMHgz
NywweEZELDB4RUIsMHhGQSwKLSAgICAweDIzLDB4MzksMHhFMywweDMwLDB4N0UsMHhGRSwweEY1
LDB4QTMsMHgwMywweDMxLDB4QzIsMHgzMCwweEZCLDB4QzAsMHgyMCwweDAwLAotICAgIDB4MDMs
MHgzMSwweEMyLDB4MjgsMHg3OSwweDczLDB4QzIsMHhCQSwweDAzLDB4MzEsMHhDMiwweDI4LDB4
NTUsMHhGRiwweEZGLDB4ODMsCi0gICAgMHhFMywweDI4LDB4QzIsMHgyOCwweDY1LDB4QzUsMHhG
NywweEJELDB4RTIsMHgyOCwweEEyLDB4MjAsMHg3RiwweDdCLDB4ODgsMHhBMiwKLSAgICAweEMy
LDB4MjgsMHg4MSwweDIwLDB4QkYsMHhBRiwweDJFLDB4ODAsMHhBMiwweDI4LDB4ODEsMHgyMCww
eDJCLDB4RDgsMHhCQiwweEU4LAotICAgIDB4RTMsMHgzMCwweDYxLDB4MjAsMHgwMiwweEFGLDB4
RkYsMHhGNywweDAzLDB4MzksMHg4MiwweDIwLDB4ODIsMHgyMiwweEFGLDB4RkQsCi0gICAgMHgw
MywweDM5LDB4QzIsMHgyOCwweEE5LDB4ODgsMHg4QiwweDk1LDB4MDMsMHgzOSwweEUzLDB4MzAs
MHg0MiwweDYyLDB4NUIsMHg1MywKLSAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4MkQsMHhGQiww
eEJBLDB4MEIsMHgyMywweDM5LDB4RTMsMHgzMCwweEJFLDB4QkIsMHhCQSwweDgzLAotICAgIDB4
MjMsMHgzOSwweEExLDB4MjgsMHhFMCwweEEwLDB4QTgsMHhEQywweEUzLDB4MzAsMHhBMiwweDI4
LDB4MjcsMHgyQSwweDIwLDB4ODMsCi0gICAgMHg0NCwweDQxLDB4QzIsMHgyOCwweEQ1LDB4RkYs
MHhCRiwweEFELDB4QzUsMHg1MSwweDAyLDB4MzEsMHhBRCwweEFELDB4MEIsMHgwQiwKLSAgICAw
eDI3LDB4NjIsMHhBNSwweDUxLDB4MkQsMHgwRiwweEFGLDB4QUEsMHg2OCwweDZBLDB4MDcsMHg1
QSwweDI5LDB4OUYsMHhCNywweEY1LAotICAgIDB4ODgsMHg2QSwweDQ4LDB4NkEsMHgwQywweEEy
LDB4NkQsMHhENSwweEM5LDB4N0EsMHg2OCwweDZBLDB4RUUsMHgzRSwweDA5LDB4QUQsCi0gICAg
MHhDOSwweDcyLDB4ODksMHg3MiwweEQ5LDB4RjUsMHgzNiwweDBBLDB4QzksMHg3QSwweDg4LDB4
NzIsMHhGRSwweDBFLDB4RUEsMHgyQiwKLSAgICAweEU5LDB4N0EsMHhBOSwweDcyLDB4RUIsMHhF
NywweDk3LDB4RDYsMHhDOSwweDdBLDB4QTksMHg3MiwweENDLDB4QzIsMHg4OCwweDI0LAotICAg
IDB4MEEsMHg4MywweEE4LDB4NzIsMHhBRCwweEI5LDB4MEIsMHgyQSwweDBBLDB4ODMsMHhDOSww
eDdBLDB4M0IsMHg2QSwweEZFLDB4QUUsCi0gICAgMHgwQSwweDgzLDB4QTksMHg3QSwweERBLDB4
RkIsMHhBQSwweDA4LDB4RUEsMHg3QSwweEE5LDB4N0EsMHgyMSwweDAwLDB4OEEsMHg0NCwKLSAg
ICAweDJCLDB4ODMsMHhDOSwweDdBLDB4MjcsMHhENywweEZGLDB4N0QsMHgyQSwweDgzLDB4QTks
MHg3MiwweEU4LDB4OEEsMHgzQSwweEZGLAotICAgIDB4MkEsMHg4MywweEU5LDB4N0EsMHgwOSww
eDNELDB4MkUsMHgyNywweDJBLDB4ODMsMHhFOSwweDdBLDB4MDAsMHhFMCwweDdFLDB4NUEsCi0g
ICAgMHgwMywweDQxLDB4QzIsMHgzOCwweDU0LDB4N0YsMHhERSwweDM1LDB4MDMsMHgzOSwweEMy
LDB4MzgsMHhCNywweEJBLDB4QTksMHhCQiwKLSAgICAweDIzLDB4NDEsMHhDMiwweDM4LDB4Rjks
MHg4QiwweEZBLDB4RkYsMHgwMywweDQxLDB4QzIsMHgzOCwweEZFLDB4RUMsMHg2OCwweEJFLAot
ICAgIDB4MDIsMHgzOSwweEExLDB4MzAsMHhCRSwweEZBLDB4MzcsMHhFRiwweDAyLDB4MzksMHhD
MiwweDM4LDB4QkUsMHhGNiwweEVGLDB4M0QsCi0gICAgMHhFMiwweDM4LDB4QzIsMHgzOCwweDIz
LDB4RUIsMHhDNCwweEM4LDB4RTIsMHgzOCwweEMyLDB4MzgsMHgyQSwweEQ4LDB4N0IsMHg3QywK
LSAgICAweDAzLDB4MzksMHhDMiwweDM4LDB4RUIsMHhGRiwweEJGLDB4QkEsMHgwMywweDM5LDB4
QzIsMHgzOCwweEVFLDB4N0UsMHg3RiwweEZGLAotICAgIDB4RTIsMHgzOCwweEMyLDB4MzAsMHg2
QywweEZDLDB4N0IsMHhGRiwweDI1LDB4NjIsMHhDMiwweDM4LDB4M0QsMHgzNSwweDk1LDB4OTUs
Ci0gICAgMHg2NiwweDZBLDB4QTQsMHg1MSwweEY4LDB4NzgsMHg3OCwweDVFLDB4ODQsMHg1MSww
eEUyLDB4MzAsMHg3QSwweDdBLDB4NzAsMHg3OCwKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4
REYsMHhGRiwweDlCLDB4RkEsMHgwMywweDMxLDB4QzIsMHgyOCwweEZBLDB4RUEsMHhBQiwweDdG
LAotICAgIDB4RTMsMHgzMCwweEMyLDB4MjgsMHhCQSwweDM0LDB4MjQsMHhGNywweDAzLDB4Mzks
MHhDMiwweDI4LDB4QTIsMHg1QSwweEZGLDB4QUYsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCww
eDRCLDB4RUEsMHhFQiwweEEyLDB4MDMsMHgzOSwweEMyLDB4MjgsMHhFRiwweDhGLDB4OEIsMHhB
QSwKLSAgICAweDAzLDB4MzEsMHhDMiwweDMwLDB4ODMsMHhBMiwweEFBLDB4QkYsMHgwMywweDM5
LDB4RTMsMHgzMCwweEVCLDB4NUMsMHhGRiwweDM5LAotICAgIDB4MjQsMHgzOSwweEMyLDB4MzAs
MHhBQywweEJGLDB4RkYsMHhEQSwweDIzLDB4MzksMHhDMiwweDMwLDB4QTIsMHhBQSwweEFFLDB4
RTcsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzMCwweDg4LDB4MkEsMHhBRSwweDZELDB4MjQsMHgz
OSwweDAzLDB4MzksMHg0MiwweDAzLDB4NjMsMHg3RCwKLSAgICAweDIzLDB4MzksMHgwMywweDM5
LDB4NzYsMHg1RSwweDc3LDB4NTcsMHgyMywweDM5LDB4RTMsMHgzOCwweEJGLDB4MzcsMHgyNiww
eEJFLAotICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHhENywweEU2LDB4NzYsMHhFOCwweDQ0LDB4
MzksMHhFMywweDMwLDB4N0YsMHg1RCwweEVGLDB4MjksCi0gICAgMHgyNCwweDM5LDB4RTIsMHgz
MCwweDhBLDB4RTIsMHhGNywweERFLDB4MjQsMHgzOSwweEUyLDB4MzAsMHhGRiwweDdFLDB4RTMs
MHg4OCwKLSAgICAweDIzLDB4MzksMHhDMiwweDMwLDB4QUEsMHg5QSwweEI4LDB4MDAsMHgyNCww
eDM5LDB4RTMsMHgzMCwweDVGLDB4N0MsMHhGMywweEVBLAotICAgIDB4MjQsMHgzOSwweEMyLDB4
MjgsMHg1NSwweEZGLDB4RkEsMHhFOCwweDAzLDB4MzEsMHhDMiwweDI4LDB4NkQsMHhFQSwweDhC
LDB4Q0EsCi0gICAgMHhBMiwweDMwLDB4RTIsMHgyOCwweEJGLDB4RkIsMHhERCwweDc3LDB4RTMs
MHgyOCwweEEyLDB4MjAsMHhGNywweDdCLDB4QUIsMHgwMCwKLSAgICAweEUzLDB4MjgsMHg4Miww
eDIwLDB4NTcsMHhGRSwweEFGLDB4QTAsMHhDMywweDI4LDB4ODEsMHgyMCwweDk1LDB4N0YsMHhF
QSwweDAyLAotICAgIDB4QzIsMHgyOCwweDgyLDB4MjAsMHgyRiwweEI1LDB4RDUsMHhCQSwweDAz
LDB4MzEsMHg4MiwweDIwLDB4OEEsMHgzRiwweDdELDB4RjcsCi0gICAgMHhFMywweDMwLDB4ODEs
MHgyMCwweDIwLDB4RUUsMHhGNywweDlELDB4NDQsMHgzOSwweEEyLDB4MjgsMHgwQiwweEFCLDB4
QkQsMHhGNSwKLSAgICAweDAzLDB4MzksMHhDMiwweDI4LDB4NzgsMHhENiwweEQ2LDB4REYsMHgy
MywweDM5LDB4RTIsMHgzMCwweDVELDB4RjUsMHhCNSwweDJELAotICAgIDB4RTYsMHg1MSwweDAz
LDB4MzEsMHg5NSwweEI1LDB4QUQsMHgyRiwweDA2LDB4NUEsMHhBNSwweDUxLDB4MzksMHhBRiww
eEFBLDB4OEEsCi0gICAgMHgyNywweDYyLDB4QzUsMHg1MSwweEJGLDB4QUYsMHhBRCwweDI3LDB4
NjgsMHg2QSwweDA3LDB4NjIsMHg3NSwweEFGLDB4MjksMHgyQiwKLSAgICAweEE5LDB4NzIsMHg2
OCwweDZBLDB4N0QsMHhGRCwweEJBLDB4OEUsMHhDOSwweDcyLDB4NDgsMHg2QSwweDJGLDB4QTcs
MHgzRiwweDJBLAotICAgIDB4QzksMHg3QSwweDY4LDB4NkEsMHg4OCwweDJCLDB4QkEsMHg3RSww
eEM5LDB4N0EsMHg2NywweDZBLDB4OEEsMHhFOCwweEEzLDB4OUYsCi0gICAgMHhFQSwweDdBLDB4
ODgsMHg3MiwweEZFLDB4MjIsMHgyRiwweEI3LDB4RTksMHg3QSwweEE5LDB4NzIsMHgyQSwweEY3
LDB4NUMsMHg4QiwKLSAgICAweEU5LDB4N0EsMHhBOSwweDcyLDB4RUUsMHg4QSwweEVELDB4RDcs
MHhDOSwweDdBLDB4ODgsMHg3MiwweDNFLDB4QkYsMHhEQywweEMzLAotICAgIDB4MEIsMHg4Myww
eDg4LDB4NzIsMHg4QSwweEZFLDB4N0IsMHg3QiwweEVBLDB4N0EsMHhBOSwweDcyLDB4NkUsMHhB
QSwweDhELDB4NjksCi0gICAgMHhFQSwweDdBLDB4QTksMHg3MiwweDAyLDB4MDIsMHg2QiwweEZE
LDB4MEEsMHg4MywweEE5LDB4NzIsMHhBQSwweDAyLDB4MEQsMHhGRSwKLSAgICAweDJBLDB4ODMs
MHhBOCwweDcyLDB4QUIsMHhBQiwweEFFLDB4M0QsMHgwQSwweDgzLDB4RTksMHg3QSwweDI4LDB4
Q0IsMHhBQSwweDlDLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzgsMHhBRiwweDJGLDB4MzcsMHhB
QiwweDAzLDB4NDEsMHhDMiwweDM4LDB4RkYsMHhFMywweEVGLDB4RkEsCi0gICAgMHgyMiwweDM5
LDB4QzIsMHgzOCwweEQ3LDB4REIsMHhGRiwweDc3LDB4MDMsMHg0MSwweEMyLDB4MzgsMHhERSww
eEFFLDB4QjcsMHhBRiwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4REMsMHhGOCwweDdFLDB4
REUsMHgwMiwweDM5LDB4QzIsMHgzOCwweEZBLDB4OUQsMHhBOSwweEVGLAotICAgIDB4RTIsMHgz
OCwweEMyLDB4MzgsMHhDMCwweDBGLDB4Q0EsMHg0MywweDAzLDB4NDEsMHhDMiwweDM4LDB4NkUs
MHgzRiwweERGLDB4RUIsCi0gICAgMHgwMiwweDM5LDB4QTEsMHgzMCwweEFFLDB4QjQsMHhCQSww
eEJCLDB4MDIsMHg0MSwweEEyLDB4MzAsMHhERiwweEFGLDB4M0IsMHgyQiwKLSAgICAweDAzLDB4
NDEsMHhBMSwweDMwLDB4RkUsMHhGRSwweEY4LDB4N0UsMHgyMywweDQ5LDB4QTEsMHgzMCwweDM3
LDB4QjUsMHg5NSwweDNELAotICAgIDB4NDcsMHg2QSwweEE0LDB4NTEsMHhGRSwweDdGLDB4N0Qs
MHhGOCwweEE0LDB4NTEsMHhFMiwweDMwLDB4RDgsMHg3OCwweDcwLDB4NzAsCi0gICAgMHgwMyww
eDM5LDB4QzIsMHgzMCwweEE4LDB4MDgsMHgyRiwweEFBLDB4MDMsMHgzMSwweEEzLDB4MzAsMHhB
RSwweDg4LDB4ODgsMHgwQSwKLSAgICAweDIzLDB4MzEsMHhDMiwweDMwLDB4NzUsMHhCNywweDdG
LDB4RjcsMHgwMywweDMxLDB4QzIsMHgyOCwweEZGLDB4OEIsMHhGQiwweERBLAotICAgIDB4MDMs
MHgzMSwweEMyLDB4MjgsMHg4QSwweDg3LDB4RUQsMHhDQSwweDAzLDB4MzEsMHhBMiwweDMwLDB4
MkEsMHgyQSwweEEyLDB4QUUsCi0gICAgMHgwMywweDMxLDB4QTIsMHgzMCwweDJBLDB4ODgsMHgy
OCwweDNBLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhBRSwweEVCLDB4RjIsMHhGMiwKLSAgICAweDAz
LDB4MzksMHhFMywweDMwLDB4M0QsMHg3RCwweDVBLDB4RDcsMHgyMywweDM5LDB4RTMsMHgzMCww
eEU3LDB4QUYsMHhBRiwweEQ1LAotICAgIDB4MjMsMHgzOSwweEUzLDB4MzAsMHg4MywweEFELDB4
N0UsMHg1RiwweDIzLDB4MzksMHhFMywweDMwLDB4M0EsMHhCRiwweEFCLDB4RkQsCi0gICAgMHgy
MywweDM5LDB4RTMsMHgzOCwweEQ3LDB4ODcsMHhERiwweEY3LDB4MjQsMHg0MSwweEUzLDB4Mzgs
MHhDRCwweDI3LDB4RTksMHhFNSwKLSAgICAweDQ0LDB4NDEsMHhFMywweDM4LDB4N0EsMHhGNCww
eERCLDB4NzcsMHgyMywweDM5LDB4MDMsMHgzOSwweDI5LDB4REYsMHg1NywweDU1LAotICAgIDB4
MjQsMHg0MSwweEUzLDB4MzAsMHhGQSwweERBLDB4M0EsMHhCMiwweDIzLDB4MzksMHhFMywweDMw
LDB4NUUsMHhENywweEZBLDB4RkEsCi0gICAgMHg0NCwweDQxLDB4QzMsMHgzMCwweEEyLDB4Rjcs
MHhGRiwweEZFLDB4MjQsMHgzOSwweEUzLDB4MzAsMHhBRSwweEVBLDB4MkQsMHhFRSwKLSAgICAw
eDIzLDB4MzksMHhFMywweDMwLDB4NkUsMHhGRSwweEJBLDB4MkIsMHgyNCwweDM5LDB4RTIsMHgz
MCwweDdBLDB4REIsMHhGRSwweEI4LAotICAgIDB4MjMsMHgzMSwweEUzLDB4MzAsMHg1QiwweERD
LDB4REUsMHg3QSwweDAzLDB4MzksMHhFMywweDI4LDB4N0YsMHhGRiwweEY4LDB4MDgsCi0gICAg
MHgyNCwweDM5LDB4QzMsMHgyOCwweDU3LDB4NUYsMHg1QSwweEU4LDB4MDMsMHgzMSwweEMzLDB4
MjgsMHg3NywweDdELDB4MkEsMHgwOCwKLSAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4N0QsMHhG
RCwweEZBLDB4ODgsMHgwMywweDMxLDB4QzMsMHgyOCwweDU3LDB4OUYsMHhBQSwweDAyLAotICAg
IDB4MjMsMHgzMSwweEEyLDB4MjgsMHhERCwweEVGLDB4QUEsMHhBQSwweDI0LDB4MzksMHhBMiww
eDI4LDB4QkQsMHhCQiwweEEyLDB4MDgsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzMCwweEY3LDB4
REYsMHhCQSwweDBBLDB4QTUsMHg0OSwweDAzLDB4MzEsMHhCRCwweEI1LDB4QjksMHgwRiwKLSAg
ICAweDI3LDB4NjIsMHhBNSwweDQ5LDB4RjUsMHhBRCwweDhELDB4MkYsMHgyNiwweDYyLDB4RTYs
MHg1OSwweEQ1LDB4QkQsMHg4QSwweDM2LAotICAgIDB4NDcsMHg2MiwweEU2LDB4NTksMHg4NSww
eEJGLDB4QkYsMHgxRSwweDg5LDB4NzIsMHgyNywweDYyLDB4OEQsMHgyOSwweDJGLDB4QUYsCi0g
ICAgMHhBOSwweDcyLDB4NDgsMHg2QSwweDhCLDB4OEUsMHg3NywweDc3LDB4QzksMHg3MiwweDY4
LDB4NkEsMHgyMCwweEFBLDB4QkQsMHhENSwKLSAgICAweEM5LDB4N0EsMHg2NywweDZBLDB4RkUs
MHgyMiwweEFCLDB4RjYsMHhDOSwweDdBLDB4ODgsMHg3MiwweDVFLDB4MkYsMHg1OCwweDc3LAot
ICAgIDB4QzksMHg3QSwweDg4LDB4NzIsMHgyMSwweEVFLDB4RUEsMHgyQiwweEU5LDB4N0EsMHg4
OCwweDcyLDB4QkEsMHhCMiwweEJBLDB4N0UsCi0gICAgMHhFOSwweDdBLDB4QTksMHg3MiwweEVB
LDB4OEUsMHhCRSwweEI3LDB4RTksMHg3QSwweEE4LDB4NzIsMHg4OSwweEFGLDB4QjgsMHhCQSwK
LSAgICAweDBBLDB4N0IsMHhBOSwweDcyLDB4RDcsMHhGNSwweERGLDB4RTMsMHgwQSwweDdCLDB4
QTksMHg3MiwweEE5LDB4QTIsMHhGRiwweEY3LAotICAgIDB4RUEsMHg3QSwweDg5LDB4NzIsMHg5
RiwweEYyLDB4RTgsMHgzQSwweEVBLDB4N0EsMHhBOSwweDcyLDB4MzgsMHhFRiwweDdFLDB4OEIs
Ci0gICAgMHhFQSwweDdBLDB4QTksMHg3MiwweDNELDB4QkEsMHgwMCwweDBCLDB4MEEsMHg3Qiww
eEM5LDB4N0EsMHhBMCwweEU5LDB4MjUsMHg4QiwKLSAgICAweDAzLDB4NDEsMHhDMiwweDM4LDB4
QUEsMHhEQiwweEJBLDB4QUYsMHgwMywweDQxLDB4RTIsMHgzOCwweEQ2LDB4NUIsMHg3RCwweDZC
LAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhERSwweDhGLDB4OEUsMHhFQiwweDAzLDB4NDEs
MHhDMiwweDM4LDB4RUQsMHhERiwweERBLDB4QUEsCi0gICAgMHgwMywweDQxLDB4QTIsMHgzMCww
eEFFLDB4MkEsMHhFRiwweERBLDB4MjMsMHgzOSwweEMyLDB4MzgsMHg3RiwweEZGLDB4OUQsMHhG
RiwKLSAgICAweDIzLDB4MzksMHhDMiwweDM4LDB4NTcsMHhGRiwweEY1LDB4RkIsMHhFMiwweDM4
LDB4QzIsMHgzOCwweDAwLDB4RTgsMHhEOCwweEUwLAotICAgIDB4RTIsMHgzOCwweEMyLDB4Mzgs
MHhBRSwweEM4LDB4QkYsMHhCNywweEUyLDB4MzgsMHhDMiwweDM4LDB4RUEsMHgwRiwweDhBLDB4
NEMsCi0gICAgMHhFMiwweDM4LDB4ODEsMHgzMCwweEU4LDB4RjgsMHg5RSwweEFCLDB4NjcsMHg2
QSwweEMyLDB4MzAsMHhGNSwweEI1LDB4MzUsMHgzNSwKLSAgICAweEU4LDB4N0EsMHhBNSwweDU5
LDB4RkEsMHhGOCwweEU4LDB4NzAsMHhDNSwweDU5LDB4RTIsMHgzMCwweDU4LDB4NzgsMHhGQSww
eDdGLAotICAgIDB4MDMsMHgzOSwweEUyLDB4MzAsMHg1QywweDdDLDB4NUEsMHg1RiwweDAzLDB4
MzEsMHhFMywweDMwLDB4MkMsMHg1RCwweDY1LDB4RkQsCi0gICAgMHgwMywweDMxLDB4RTMsMHgz
MCwweDRELDB4NDcsMHg2OSwweENELDB4MDMsMHgzMSwweEUzLDB4MzAsMHg1OSwweDdELDB4MUQs
MHg2RCwKLSAgICAweEUzLDB4MzAsMHhDMiwweDMwLDB4MjIsMHg4MiwweDNBLDB4QTMsMHgwMyww
eDMxLDB4QzIsMHgzMCwweDJGLDB4M0YsMHhCRiwweEZGLAotICAgIDB4MDMsMHgzMSwweEMyLDB4
MjgsMHhFRSwweEZGLDB4RUEsMHhFRSwweDAzLDB4MzEsMHhDMiwweDMwLDB4OUYsMHhFQSwweEZF
LDB4MkIsCi0gICAgMHgwMywweDMxLDB4QTIsMHgzMCwweDJBLDB4QUEsMHhFNiwweEJFLDB4MDMs
MHgzMSwweEMyLDB4MzAsMHhBQSwweEVBLDB4RkIsMHhGRiwKLSAgICAweDAzLDB4MzEsMHhDMiww
eDMwLDB4QkUsMHhGQSwweDBCLDB4RjUsMHgwMywweDM5LDB4RTMsMHgzMCwweDhELDB4QUIsMHhE
QSwweEVELAotICAgIDB4MDMsMHgzOSwweEUyLDB4MzAsMHhBQSwweERGLDB4QTIsMHhCNywweDAz
LDB4MzksMHhDMiwweDMwLDB4ODcsMHhCNSwweDNFLDB4RjIsCi0gICAgMHgyNCwweDM5LDB4RTMs
MHgzMCwweEZGLDB4NTcsMHhFQSwweENGLDB4RTMsMHgzOCwweDAzLDB4MzEsMHhGRSwweEFFLDB4
QTcsMHhGNywKLSAgICAweDIzLDB4MzksMHhFMywweDMwLDB4RUIsMHhCOSwweEIzLDB4RjksMHgy
NCwweDM5LDB4RTMsMHgzOCwweEZELDB4QkQsMHhGMiwweEE2LAotICAgIDB4MjQsMHgzOSwweEUz
LDB4MzgsMHhGQSwweEJDLDB4QUYsMHhCRSwweDI0LDB4MzksMHhFMywweDM4LDB4NkIsMHhBRiww
eEFGLDB4QTgsCi0gICAgMHgyNCwweDM5LDB4QzIsMHgzMCwweDJCLDB4OEEsMHhGQSwweEVBLDB4
MjMsMHgzOSwweEUyLDB4MzAsMHgwMCwweDFCLDB4REYsMHhGRSwKLSAgICAweDQ0LDB4MzksMHgw
MywweDMxLDB4RjMsMHhBQiwweEE1LDB4OTcsMHg2NSwweDQxLDB4MDMsMHgzMSwweDU1LDB4RkUs
MHhGRSwweEVBLAotICAgIDB4NDQsMHgzOSwweDAzLDB4MzksMHg1RiwweEYyLDB4RUEsMHhFQSww
eDI0LDB4MzksMHhFMywweDMwLDB4RTUsMHhFQSwweDJBLDB4MDIsCi0gICAgMHgyNCwweDM5LDB4
RTMsMHgzMCwweEZGLDB4QkIsMHg4MCwweDIwLDB4MjQsMHg0MSwweDAzLDB4MzEsMHhGRCwweDdE
LDB4RkUsMHhBQywKLSAgICAweDQ0LDB4NDEsMHhFMywweDMwLDB4RjUsMHhFRSwweEFGLDB4MkEs
MHg2NCwweDQxLDB4MDQsMHgzOSwweEY1LDB4NTUsMHhERiwweDJBLAotICAgIDB4QzUsMHg1MSww
eDI0LDB4MzksMHg1NSwweEY1LDB4RDUsMHgyRiwweDA2LDB4NUEsMHg2NSwweDQxLDB4OTUsMHhB
NSwweEFCLDB4MDAsCi0gICAgMHgwNywweDVBLDB4QzYsMHg1OSwweDdGLDB4Q0IsMHgyQiwweEEw
LDB4NDcsMHg2QSwweEM2LDB4NTksMHhCRSwweEFELDB4QUIsMHgwMCwKLSAgICAweDY4LDB4NkEs
MHgwNiwweDVBLDB4QjcsMHhBOCwweEE4LDB4QkUsMHg4OCwweDZBLDB4NDcsMHg2MiwweEE5LDB4
RUQsMHgzQSwweDhBLAotICAgIDB4ODgsMHg2QSwweDQ4LDB4NkEsMHhCQywweDc0LDB4QUUsMHgz
OCwweEE5LDB4NzIsMHg2OCwweDZBLDB4NTUsMHhBNSwweDM3LDB4Q0UsCi0gICAgMHhBOSwweDcy
LDB4NjgsMHg2QSwweDZFLDB4REYsMHhGQiwweDBGLDB4QTgsMHg3MiwweDY4LDB4NkEsMHgyQSww
eDAwLDB4MDEsMHgwMywKLSAgICAweEM5LDB4N0EsMHg4OCwweDZBLDB4QkUsMHhBQywweDNFLDB4
QTksMHhDQSwweDcyLDB4NjgsMHg2QSwweEFCLDB4RTcsMHhBRSwweEFCLAotICAgIDB4RUEsMHg3
QSwweDg4LDB4NkEsMHg3RSwweDdCLDB4REIsMHhGQSwweEU5LDB4N0EsMHg4OCwweDZBLDB4RUEs
MHgwQiwweEY3LDB4RkQsCi0gICAgMHhFOSwweDcyLDB4ODgsMHg2QSwweDBGLDB4QUMsMHhFQiww
eEVGLDB4RUEsMHg3QSwweDg4LDB4NzIsMHg4QSwweDNFLDB4MEQsMHhCQSwKLSAgICAweEVBLDB4
N0EsMHhBOCwweDcyLDB4MDksMHg1OSwweEFBLDB4MDIsMHgwQSwweDdCLDB4QTksMHg3MiwweEJG
LDB4QUYsMHhGRCwweERDLAotICAgIDB4MEEsMHg3QiwweEE5LDB4NzIsMHgzQSwweDAyLDB4QUIs
MHhCNywweDBBLDB4N0IsMHhBOSwweDcyLDB4OUUsMHhBRiwweEFFLDB4MjIsCi0gICAgMHgwMiww
eDM5LDB4QzIsMHgzOCwweEI2LDB4QTQsMHhFRiwweENFLDB4MDMsMHg0MSwweEMyLDB4MzgsMHhB
QSwweEVCLDB4RkYsMHg1NywKLSAgICAweDAzLDB4MzksMHhDMiwweDM4LDB4MEUsMHhBRSwweEVG
LDB4RTksMHgwMywweDM5LDB4QTEsMHgzMCwweEFFLDB4QTgsMHhBRSwweEY1LAotICAgIDB4RTIs
MHgzOCwweEMyLDB4MzgsMHhEMywweDBELDB4MEIsMHgyOCwweEUyLDB4MzgsMHhDMiwweDMwLDB4
RjgsMHgyRSwweDA0LDB4MjcsCi0gICAgMHgwMiwweDQxLDB4QzIsMHgzOCwweEVCLDB4NkEsMHhG
RSwweEVGLDB4RTIsMHgzOCwweEMyLDB4MzgsMHhBQiwweEVFLDB4MzUsMHhDRSwKLSAgICAweEUy
LDB4MzgsMHhBMSwweDMwLDB4MDgsMHg4MiwweDYwLDB4NkEsMHhFMiwweDM4LDB4QTIsMHgzMCww
eDdBLDB4N0UsMHhGRSwweDlGLAotICAgIDB4RTIsMHgzOCwweEEyLDB4MzAsMHgwOSwweEEyLDB4
ODAsMHg4OCwweDQ2LDB4NkEsMHhDMiwweDMwLDB4MzUsMHg5NSwweDU1LDB4NTUsCi0gICAgMHhB
NywweDcyLDB4QzMsMHgzOCwweEU4LDB4RkYsMHg1RCwweDU1LDB4MjQsMHg0MSwweEMyLDB4MzAs
MHhFQSwweEU4LDB4QUUsMHhBNSwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QTIsMHhFOCww
eEJDLDB4RkYsMHgwMywweDMxLDB4QTIsMHgzMCwweDJBLDB4ODgsMHhDQSwweDJBLAotICAgIDB4
MDMsMHgzMSwweEMyLDB4MjgsMHhCRSwweEJBLDB4RkEsMHhGRiwweDAzLDB4MzEsMHhDMiwweDMw
LDB4RTMsMHhCRSwweDhBLDB4RkEsCi0gICAgMHhFMywweDMwLDB4QzIsMHgyOCwweEU5LDB4MDAs
MHhBQSwweEFCLDB4RTMsMHgzMCwweEMyLDB4MjgsMHgyRCwweEE4LDB4MDIsMHg4QywKLSAgICAw
eDAzLDB4MzEsMHhDMiwweDI4LDB4QkEsMHgyNywweDA3LDB4RUUsMHgyMywweDM5LDB4QzMsMHgz
MCwweEVGLDB4QkYsMHhBRiwweEQ4LAotICAgIDB4MDMsMHgzOSwweEMyLDB4MjgsMHhERSwweEJD
LDB4QUEsMHhFRSwweEEyLDB4MzgsMHgwMywweDMxLDB4REYsMHg3NiwweDdGLDB4RkYsCi0gICAg
MHgwMiwweDM5LDB4QzMsMHgzMCwweEI3LDB4N0YsMHhFQSwweEZCLDB4MjQsMHgzOSwweEMyLDB4
MjgsMHhCRiwweEJELDB4M0YsMHhCRCwKLSAgICAweDAzLDB4MzksMHhDMiwweDI4LDB4QTcsMHhG
QywweEUzLDB4OEEsMHgwMywweDMxLDB4RTMsMHgzMCwweEZCLDB4REYsMHg3NywweDk1LAotICAg
IDB4QzMsMHgzOCwweDAzLDB4MzEsMHhERiwweDU3LDB4NUYsMHhFOSwweDI0LDB4MzksMHhFMyww
eDMwLDB4QUYsMHgyRSwweEJGLDB4RDcsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweEY1LDB4
RUUsMHhBRiwweDJFLDB4MjQsMHgzOSwweEUzLDB4MzgsMHhCRiwweEVBLDB4QkMsMHhCQSwKLSAg
ICAweDI0LDB4MzksMHhFMywweDM4LDB4QUYsMHhBRSwweDlGLDB4QkEsMHgyNCwweDM5LDB4RTMs
MHgzOCwweEVGLDB4MkIsMHhDRSwweEE3LAotICAgIDB4MjQsMHg0MSwweDAzLDB4MzEsMHg5QSww
eDdBLDB4RkUsMHhBMywweDQ1LDB4MzksMHgwMywweDM5LDB4RjcsMHg1RCwweEI2LDB4OTcsCi0g
ICAgMHgyMywweDM5LDB4MDMsMHgzOSwweDIzLDB4QjIsMHhBOCwweDBELDB4NjQsMHg0MSwweDAz
LDB4MzksMHhGRCwweDU1LDB4NTUsMHg3MywKLSAgICAweDQ0LDB4NDEsMHhFMywweDMwLDB4MjIs
MHhBNSwweEI3LDB4QUEsMHg4NSwweDQxLDB4RTMsMHgzOCwweEVBLDB4QUEsMHgwQiwweEFELAot
ICAgIDB4ODUsMHg0OSwweDI0LDB4MzksMHhENSwweDJGLDB4OEEsMHgyMCwweEE2LDB4NTEsMHgy
NCwweDM5LDB4RDUsMHhBRSwweDBCLDB4QUUsCi0gICAgMHhBNSwweDUxLDB4MjQsMHgzOSwweEI3
LDB4QUUsMHgwMCwweDBBLDB4QzYsMHg1MSwweDQ0LDB4NDEsMHhERCwweEJGLDB4MkIsMHgwQSwK
LSAgICAweDI3LDB4NjIsMHg4NSwweDQ5LDB4QUQsMHhCRiwweDg5LDB4MEEsMHgyNywweDYyLDB4
RTYsMHg1OSwweEI4LDB4MjksMHgwMywweEFBLAotICAgIDB4NDgsMHg2QSwweDA2LDB4NjIsMHg1
RiwweDk5LDB4M0UsMHgyMiwweDY3LDB4NkEsMHgwNiwweDVBLDB4OEUsMHhBMywweEJCLDB4OUUs
Ci0gICAgMHg2OCwweDZBLDB4MDYsMHg2MiwweEFBLDB4MjYsMHgyQSwweEFBLDB4QTgsMHg2QSww
eDQ3LDB4NjIsMHgyRiwweEIyLDB4QkEsMHhEQiwKLSAgICAweEE5LDB4NzIsMHgyNywweDYyLDB4
RjgsMHhBQSwweEY2LDB4N0YsMHhBOCwweDcyLDB4NjgsMHg2QSwweDA1LDB4MEQsMHgwRSwweEY5
LAotICAgIDB4RUEsMHg3QSwweDg4LDB4NkEsMHhGNSwweDdELDB4RkIsMHg4RCwweEM5LDB4NzIs
MHg4OCwweDcyLDB4OTgsMHhGRiwweEQ2LDB4QkUsCi0gICAgMHhBOCwweDcyLDB4NjgsMHg2QSww
eEUwLDB4RjgsMHhFQSwweEUwLDB4QTksMHg3MiwweDY4LDB4NkEsMHhBQSwweEVBLDB4NzUsMHg3
RCwKLSAgICAweEM5LDB4NzIsMHg2OCwweDZBLDB4QUEsMHhCQiwweEFCLDB4N0QsMHhFOSwweDdB
LDB4ODksMHg2QSwweEFELDB4RkYsMHhGQiwweDJGLAotICAgIDB4QzksMHg3MiwweDg4LDB4NzIs
MHhCQywweDI0LDB4MkIsMHgwQiwweEM5LDB4N0EsMHg2NywweDZBLDB4QUIsMHhGMiwweEZDLDB4
RDgsCi0gICAgMHhDOSwweDcyLDB4ODgsMHg2QSwweDgwLDB4MjksMHg5RCwweEVGLDB4RUEsMHg3
MiwweDg4LDB4NkEsMHhEMiwweEJFLDB4QkUsMHhCRSwKLSAgICAweEVBLDB4N0EsMHg4OCwweDcy
LDB4MjksMHhBRiwweDlFLDB4RjAsMHhFOSwweDdBLDB4QTksMHg3MiwweDgwLDB4RTIsMHgyMCww
eEJELAotfTsKLQotc3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF8yX3dpZHRoID0gMTI4Owotc3Rh
dGljIGNvbnN0IHNpemVfdCBwaXhlbF8yX2hlaWdodCA9IDEyODsKLXN0YXRpYyBjb25zdCBzaXpl
X3QgcGl4ZWxfMl9zaXplID0gODE5MjsKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHBpeGVs
XzJfZGF0YVs4MTkyXSA9Ci17Ci0gICAgMHg4NywweDYyLDB4MjMsMHg0MSwweDdGLDB4RTMsMHhB
RCwweEZGLDB4RTUsMHg1MSwweEUyLDB4MzAsMHhFRSwweDNBLDB4NjgsMHhCQSwKLSAgICAweEU2
LDB4NTEsMHgwMiwweDMxLDB4QTYsMHhCRSwweEUzLDB4REIsMHgwNiwweDUyLDB4MjMsMHgzOSww
eEI3LDB4REYsMHg3MywweERFLAotICAgIDB4RTYsMHg1MSwweDIzLDB4MzksMHgzNywweDdGLDB4
NzMsMHhEOCwweEU2LDB4NTEsMHgwMiwweDM5LDB4MzcsMHg1QiwweEZCLDB4RjgsCi0gICAgMHhF
NiwweDU5LDB4NDMsMHg0MSwweDBELDB4RjksMHhCRCwweEFDLDB4RTUsMHg1OSwweDIzLDB4Mzks
MHhCRSwweDcyLDB4REUsMHg1QywKLSAgICAweEM2LDB4NTEsMHgyMywweDM5LDB4RkYsMHg3Miww
eDFDLDB4RkMsMHgyNywweDVBLDB4MjQsMHgzOSwweEQ3LDB4N0EsMHg5QywweEZGLAotICAgIDB4
RTYsMHg1MSwweDAzLDB4MzksMHg5RSwweEZFLDB4M0MsMHhGQSwweDI2LDB4NTIsMHg0NCwweDQx
LDB4MTcsMHhGNywweDlGLDB4NzMsCi0gICAgMHgyNiwweDVBLDB4NjQsMHg0MSwweDE3LDB4QjUs
MHg5NywweEVCLDB4MjcsMHg1QSwweDQ0LDB4NDEsMHhGOCwweEJGLDB4QjYsMHhENywKLSAgICAw
eDQ3LDB4NjIsMHg0MywweDM5LDB4MkIsMHgwQiwweDJFLDB4NTcsMHg2NiwweDYyLDB4NDMsMHg0
MSwweDgyLDB4RjAsMHg2QSwweDU1LAotICAgIDB4NDYsMHg2MiwweDQzLDB4NDEsMHgwMCwweDBB
LDB4RUIsMHhENSwweDY3LDB4NjIsMHg0NCwweDQxLDB4RjcsMHhEQywweDdGLDB4NTcsCi0gICAg
MHhFNiwweDUxLDB4NDMsMHgzOSwweENELDB4RjcsMHhGOCwweEZELDB4QzUsMHg1MSwweDIzLDB4
MzksMHhDMSwweEJGLDB4NTcsMHgwQSwKLSAgICAweDRFLDB4QTQsMHgwMiwweDM5LDB4M0YsMHhG
NSwweDU1LDB4RkYsMHg5NiwweEVFLDB4RTYsMHg1OSwweDAwLDB4MDMsMHgwRCwweDBELAotICAg
IDB4RDcsMHhGNiwweDc1LDB4RUUsMHgyQiwweENBLDB4RDIsMHg3QywweEY3LDB4RjYsMHgzNCww
eEU2LDB4QUEsMHhBQSwweDdBLDB4NUYsCi0gICAgMHhENywweEY2LDB4MTQsMHhERSwweDAwLDB4
MDAsMHgwQSwweDk1LDB4MTgsMHhGRiwweDc1LDB4RTYsMHgwQSwweEEyLDB4QjcsMHg3QSwKLSAg
ICAweDE4LDB4RkYsMHg5NiwweEU2LDB4QTAsMHgwQSwweEFBLDB4QUQsMHgxOCwweEY3LDB4RDcs
MHhGNiwweDdFLDB4RUEsMHhBQiwweDdBLAotICAgIDB4RDcsMHhGNiwweEI3LDB4RUUsMHgwQSww
eEJFLDB4NzAsMHhFOCwweEQ3LDB4RjYsMHhCMiwweEQ1LDB4NjgsMHhFMCwweEM4LDB4QTgsCi0g
ICAgMHgxNCwweEU2LDB4NzEsMHhDRCwweDgyLDB4ODEsMHgyOSwweDBELDB4MzQsMHhERSwweEYz
LDB4REQsMHg1RiwweDVELDB4REUsMHg1QSwKLSAgICAweEE4LDB4NzIsMHg2MywweDQxLDB4Qjcs
MHhERiwweDVFLDB4NUMsMHgyNywweDVBLDB4NDMsMHgzOSwweEZGLDB4RkMsMHg1NywweDBCLAot
ICAgIDB4RTYsMHg1MSwweDIzLDB4MzksMHhGRiwweEZFLDB4NzUsMHgwMCwweDY3LDB4NjIsMHgw
MywweDMxLDB4N0UsMHg3MiwweDU1LDB4QUEsCi0gICAgMHhDNiwweDUxLDB4MjMsMHgzOSwweDYy
LDB4RjksMHg1NSwweDAwLDB4QzYsMHg1MSwweDIzLDB4MzksMHhGRiwweDU1LDB4RjYsMHgwMCwK
LSAgICAweEU2LDB4NjksMHg0MywweDQxLDB4MkQsMHgyNSwweDA5LDB4MEEsMHg2OCwweDdBLDB4
MDMsMHgzOSwweEZFLDB4NUEsMHhBQSwweDBBLAotICAgIDB4MEQsMHg5QywweDI0LDB4MzksMHg3
NSwweDU1LDB4NzcsMHgwMiwweEFGLDB4QUMsMHgyMywweDM5LDB4NTUsMHg1NSwweEZGLDB4MDAs
Ci0gICAgMHhEMywweEQ1LDB4ODUsMHg0OSwweDU1LDB4NTUsMHg1NSwweDAwLDB4MzUsMHhFNiww
eDY0LDB4NDEsMHg1NSwweDU1LDB4RkYsMHgwMCwKLSAgICAweDk2LDB4RUUsMHg4NCwweDQ5LDB4
NTUsMHg1NSwweEJGLDB4MDAsMHg3NSwweEVFLDB4ODQsMHg0OSwweDU1LDB4NTUsMHhBQSwweDAw
LAotICAgIDB4RDcsMHhGRSwweEE1LDB4NTEsMHg1NSwweDU1LDB4QUEsMHhFMCwweDU1LDB4RUUs
MHhFNiwweDU5LDB4NTUsMHhENSwweDBGLDB4MjUsCi0gICAgMHhCNywweEY2LDB4RTYsMHg1OSww
eDU1LDB4RkYsMHgwMCwweDAwLDB4QjYsMHhFRSwweDA2LDB4NUEsMHg1NSwweEFCLDB4MDAsMHgw
MCwKLSAgICAweEI3LDB4RjYsMHgyNiwweDYyLDB4NTUsMHgyQSwweDAwLDB4MDAsMHg5NiwweEVF
LDB4ODcsMHg2QSwweDU1LDB4MDAsMHgwMCwweDAwLAotICAgIDB4QjYsMHhFRSwweDJBLDB4ODMs
MHhENSwweDAwLDB4MDAsMHgwMCwweEI2LDB4RjYsMHg4RSwweEFDLDB4MDksMHgwMCwweDAwLDB4
MDAsCi0gICAgMHhCNiwweEY2LDB4MTQsMHhERSwweEU4LDB4NjgsMHhGQSwweEI2LDB4RDcsMHhG
NiwweDE0LDB4REUsMHhGRCwweDBELDB4MDIsMHgwOCwKLSAgICAweEQ3LDB4RjYsMHhGMywweEQ1
LDB4N0EsMHhBQSwweEEwLDB4MDAsMHhENywweEY2LDB4RDMsMHhENSwweDBELDB4QkUsMHhBMiww
eDA4LAotICAgIDB4MTgsMHhGNywweDM1LDB4REUsMHg5RSwweEZBLDB4OEIsMHgyQSwweDE4LDB4
RjcsMHg5NiwweEVFLDB4ODgsMHgyOSwweEFBLDB4RTgsCi0gICAgMHgxOCwweEY3LDB4OTYsMHhF
NiwweEZFLDB4RjgsMHg3QSwweDdBLDB4NzUsMHhFRSwweEQzLDB4RDUsMHgwMCwweEEwLDB4QUMs
MHhFNiwKLSAgICAweDM0LDB4RTYsMHg5MiwweENELDB4QTUsMHhBNywweDM2LDB4MjYsMHgzNCww
eEU2LDB4RjMsMHhERCwweERBLDB4RkUsMHhENiwweDU2LAotICAgIDB4OTYsMHhFRSwweEU1LDB4
NTEsMHg1NiwweEE4LDB4MDAsMHgwMCwweEI2LDB4RUUsMHgwNiwweDVBLDB4NTUsMHhBQSwweDAw
LDB4MDAsCi0gICAgMHg5NiwweEVFLDB4NDcsMHg2MiwweDU1LDB4MDIsMHgwMCwweDAwLDB4NzUs
MHhFRSwweEM5LDB4NzIsMHhENSwweDAwLDB4MDAsMHgwMCwKLSAgICAweDk2LDB4RUUsMHg4Qiww
eDkzLDB4RjUsMHgwMCwweDAwLDB4MDAsMHhCNiwweEVFLDB4MTAsMHhCRCwweEQ1LDB4MDIsMHgw
MCwweDAwLAotICAgIDB4RDcsMHhGNiwweEU1LDB4NjksMHg1QSwweDU4LDB4NTgsMHg1OCwweDBB
LDB4OEIsMHhDNSwweDY5LDB4M0QsMHhERCwweEY1LDB4RDUsCi0gICAgMHg5NiwweEVFLDB4NDYs
MHg3MiwweDAyLDB4MDMsMHgwOSwweDI1LDB4QjYsMHhGNiwweDk2LDB4RUUsMHhGNSwweEFBLDB4
ODIsMHgwMiwKLSAgICAweEI2LDB4RjYsMHg5NiwweEVFLDB4QUIsMHhBQiwweDAyLDB4MjAsMHhC
NiwweEY2LDB4RDYsMHhFRSwweDIwLDB4QzAsMHg2MCwweEZDLAotICAgIDB4RjcsMHhGNiwweEQ3
LDB4RjYsMHhGNSwweDgyLDB4MDIsMHgwMCwweEY3LDB4RjYsMHg3MSwweENELDB4MDAsMHgwMCww
eDgwLDB4NjAsCi0gICAgMHg1NSwweEVFLDB4ODcsMHg3QSwweDcwLDB4NTgsMHg1NiwweDU1LDB4
QjcsMHhGNiwweDQ2LDB4NzIsMHgyNSwweDI1LDB4MjUsMHgwRCwKLSAgICAweEY4LDB4RkUsMHgx
NywweEY3LDB4RkEsMHhGRSwweEZGLDB4RjcsMHhGNywweEY2LDB4RDcsMHhGNiwweDdFLDB4RkMs
MHhGOCwweDYyLAotICAgIDB4RDcsMHhGNiwweEY3LDB4RUUsMHgwMCwweDAwLDB4MjgsMHg4MCww
eEQ3LDB4RjYsMHhGNywweEVFLDB4MDAsMHhBMCwweDA4LDB4QTgsCi0gICAgMHhGNywweEY2LDB4
OTYsMHhFRSwweDJBLDB4OEEsMHhFMiwweDc4LDB4OTYsMHhFRSwweEYzLDB4REQsMHg4MCwweEUw
LDB4NzAsMHg1QywKLSAgICAweEI3LDB4RjYsMHhEMiwweEQ1LDB4QjcsMHgyNSwweDBCLDB4MDIs
MHhENywweEY2LDB4MzQsMHhFNiwweEJELDB4NTcsMHhBQSwweDI4LAotICAgIDB4RjgsMHhGNiww
eDU1LDB4RTYsMHgwQSwweDJELDB4RkIsMHhBQSwweEY3LDB4RjYsMHhCNywweEVFLDB4RDcsMHg3
RSwweDZBLDB4ODksCi0gICAgMHgxOCwweEY3LDB4RDcsMHhGNiwweDNGLDB4QTksMHgyOSwweEZG
LDB4MzksMHhGRiwweEI2LDB4RUUsMHhFOCwweEYyLDB4NjIsMHhFRSwKLSAgICAweEQ3LDB4RjYs
MHgzNCwweEU2LDB4QzAsMHg4QSwweDZCLDB4NkYsMHgzNCwweEU2LDB4MTAsMHhDNSwweDhDLDB4
MDQsMHhBNiwweDI2LAotICAgIDB4NzYsMHhFRSwweENGLDB4QkMsMHhBRSwweDJBLDB4M0UsMHg5
QSwweDk2LDB4RUUsMHhEMywweEQ1LDB4N0YsMHg3QSwweEE4LDB4MkEsCi0gICAgMHhENiwweEY2
LDB4QjYsMHhFRSwweEZELDB4RjcsMHhGRiwweEFELDB4RDYsMHhGNiwweEI2LDB4RUUsMHhGQiww
eEZBLDB4QkEsMHhFOSwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4REYsMHhFRSwweEJCLDB4
RkEsMHhCNSwweEY2LDB4OTYsMHhFRSwweEQ3LDB4REQsMHhCRSwweEZFLAotICAgIDB4RDcsMHhG
NiwweDk2LDB4RUUsMHgyRiwweDI3LDB4MkYsMHgyRiwweEQ3LDB4RjYsMHhCNiwweEVFLDB4Q0Es
MHgwOCwweDA4LDB4ODIsCi0gICAgMHg5NSwweEY2LDB4QTUsMHg2MSwweDU4LDB4N0MsMHg1Qyww
eDU0LDB4MDYsMHg3MiwweDQ0LDB4NTksMHgyQywweEI4LDB4N0EsMHg3OSwKLSAgICAweDkyLDB4
RDUsMHg4NCwweDU5LDB4MkQsMHhCNSwweEY1LDB4RDUsMHhENiwweEY2LDB4RUMsMHhBMywweDAw
LDB4MDAsMHgwMiwweDA5LAotICAgIDB4RDcsMHhGNiwweEI2LDB4RjYsMHg3NywweERFLDB4REUs
MHhCOCwweEQ2LDB4RjYsMHhCNiwweEY2LDB4MEIsMHgyRCwweDJFLDB4MDgsCi0gICAgMHhGNyww
eEY2LDB4NTUsMHhFRSwweDAwLDB4MDAsMHg4MCwweDQwLDB4MTcsMHhGRiwweDQ2LDB4N0EsMHhF
MCwweDc4LDB4NUUsMHg1NywKLSAgICAweDg3LDB4OEEsMHgyNiwweDdBLDB4MEYsMHgyNywweEE5
LDB4RkIsMHhGNywweEZFLDB4ODcsMHg4MiwweDBELDB4MEQsMHgwOSwweDA5LAotICAgIDB4MTgs
MHhGRiwweDE3LDB4RjcsMHhFRSwweEJCLDB4RUUsMHhFQSwweEY3LDB4RjYsMHhENywweEY2LDB4
RTgsMHhFOCwweEVBLDB4RUEsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweEY1LDB4RDcsMHg3
RiwweEVCLDB4MTcsMHhGRiwweEI3LDB4RUUsMHhBRiwweENCLDB4NkEsMHg1QSwKLSAgICAweEQ2
LDB4RjYsMHhEMywweEQ1LDB4QTAsMHhBOCwweEU4LDB4N0EsMHhENywweEY2LDB4OTIsMHhENSww
eDlFLDB4MjcsMHgwOSwweDAyLAotICAgIDB4RjcsMHhGNiwweEI2LDB4RUUsMHhCRiwweEFBLDB4
RUUsMHhFQSwweEQ3LDB4RjYsMHhCNiwweEVFLDB4RDgsMHhBRSwweDhBLDB4RTgsCi0gICAgMHhG
NywweEY2LDB4QjYsMHhFRSwweDE1LDB4NTcsMHg3NywweEVGLDB4MzgsMHhGRiwweEQ3LDB4RUUs
MHhFRiwweEFCLDB4MkQsMHhCNSwKLSAgICAweDM5LDB4RkYsMHhENywweEY2LDB4REYsMHg3Riww
eERFLDB4NzgsMHhGOCwweEY2LDB4QjYsMHhFRSwweEY4LDB4RjgsMHhGRSwweEQ3LAotICAgIDB4
QjYsMHhFRSwweEYzLDB4RDUsMHhDRSwweDhFLDB4OEMsMHgyNiwweEYzLDB4REQsMHgzMCwweEM1
LDB4MjQsMHgzQywweDJBLDB4M0EsCi0gICAgMHg5NiwweEY2LDB4MzAsMHhDNSwweDFGLDB4M0Qs
MHgzNSwweDM1LDB4QjYsMHhGNiwweDM0LDB4RTYsMHhERSwweERDLDB4REMsMHhGQywKLSAgICAw
eEI2LDB4RjYsMHhENiwweEVFLDB4RUIsMHhGRiwweEZCLDB4RkYsMHhENiwweEY2LDB4QjcsMHhF
RSwweEFBLDB4ODIsMHgwQSwweDIyLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHhFQSwweEFF
LDB4QzAsMHg4MCwweEQ2LDB4RjYsMHg5NiwweEVFLDB4RkYsMHhGRiwweEJCLDB4QkUsCi0gICAg
MHhGNywweEY2LDB4QjYsMHhFRSwweEI1LDB4QjUsMHhCRCwweEE3LDB4RDYsMHhGNiwweEY3LDB4
RUUsMHgwMCwweDA4LDB4QTIsMHhBOCwKLSAgICAweDk1LDB4RUUsMHg0MywweDUxLDB4NUMsMHg1
QywweDU4LDB4NTAsMHg4NSwweDU5LDB4RTIsMHg0MCwweEMyLDB4RkUsMHg3QiwweDc2LAotICAg
IDB4NjcsMHg3MiwweDAzLDB4NDEsMHgzRCwweEFELDB4MjUsMHgyNSwweDM0LDB4RTYsMHgwOSww
eDgzLDB4MEQsMHhGNSwweDU1LDB4NTUsCi0gICAgMHg5NSwweEVFLDB4QzgsMHg3QSwweDAwLDB4
QkYsMHhENSwweDU1LDB4QjYsMHhGNiwweDA5LDB4OEIsMHgwMCwweDIyLDB4N0QsMHg1NSwKLSAg
ICAweDc2LDB4RjYsMHg0NiwweDcyLDB4ODAsMHg2MCwweDVGLDB4NTUsMHg2NywweDgyLDB4RTUs
MHg3MSwweDJDLDB4MEIsMHhFNywweEQ3LAotICAgIDB4MjksMHg5QiwweDI2LDB4ODIsMHhENyww
eEY1LDB4QkQsMHgyRCwweEY3LDB4RkUsMHg0QiwweEEzLDB4MDEsMHgwMywweDAyLDB4MDIsCi0g
ICAgMHgzOCwweEZGLDB4MTgsMHhGNywweDdFLDB4NkIsMHg3RiwweEZGLDB4MTcsMHhGNywweEQ3
LDB4RjYsMHhGRiwweEVFLDB4RUUsMHhBMCwKLSAgICAweDE4LDB4RkYsMHg3NSwweEVFLDB4MkEs
MHg4MiwweEUyLDB4NTgsMHhGNywweEZFLDB4NTUsMHhFRSwweEY4LDB4RUUsMHg2RSwweDdGLAot
ICAgIDB4RDcsMHhGNiwweEY0LDB4REQsMHhCRSwweDI3LDB4MDksMHgwMiwweEY3LDB4RjYsMHhE
NywweEY2LDB4N0QsMHg3QiwweDVBLDB4RUUsCi0gICAgMHhENywweEY2LDB4QjYsMHhFRSwweDAw
LDB4QTAsMHg4MCwweDgwLDB4RDcsMHhGNiwweEI2LDB4RUUsMHhBQSwweEEwLDB4RTgsMHhBQSwK
LSAgICAweEQ3LDB4RjYsMHhCNywweEVFLDB4ODAsMHgwQiwweEFGLDB4MEEsMHhGOCwweEY2LDB4
RDcsMHhGNiwweDJELDB4M0QsMHgyNSwweEFCLAotICAgIDB4MzksMHhGRiwweDk3LDB4RUUsMHhF
MCwweDZBLDB4NEEsMHhFQSwweEI2LDB4RUUsMHg3NiwweEVFLDB4MzgsMHhCRiwweDlGLDB4RkYs
Ci0gICAgMHhCNywweEY2LDB4NzEsMHhDRCwweDI0LDB4MDYsMHgyNCwweDI2LDB4MzUsMHhFNiww
eDkyLDB4Q0QsMHhENiwweDlFLDB4REMsMHg1NCwKLSAgICAweEYzLDB4REQsMHg4RSwweEI0LDB4
MjcsMHgzNywweDA3LDB4MDksMHg5NiwweEVFLDB4MzQsMHhFNiwweEQ4LDB4RkIsMHhEQiwweEZC
LAotICAgIDB4RDYsMHhGNiwweEI3LDB4RUUsMHhBQSwweDhBLDB4MDAsMHgyQSwweEQ3LDB4RjYs
MHhENiwweEVFLDB4QUEsMHhBQSwweEFBLDB4MEEsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiww
eDc1LDB4NzcsMHhGNSwweEFELDB4RDYsMHhGNiwweEI2LDB4RUUsMHhERiwweEQ2LDB4RUEsMHhB
OCwKLSAgICAweEY3LDB4RjYsMHhCNiwweEVFLDB4QUQsMHhBNywweEFGLDB4QUYsMHhGNywweEY2
LDB4RDcsMHhGNiwweEY1LDB4N0UsMHhBNywweEFCLAotICAgIDB4RDcsMHhGNiwweDAyLDB4NDEs
MHg3MCwweDcwLDB4NjAsMHg2MCwweEU1LDB4NjEsMHhFMiwweDQwLDB4N0YsMHhGRiwweEJELDB4
MDksCi0gICAgMHg2NywweDcyLDB4NDQsMHg0OSwweDJELDB4QUYsMHhGQiwweEVBLDB4QTgsMHg3
QSwweEU1LDB4NjEsMHg4MCwweEEyLDB4RkQsMHg1RiwKLSAgICAweDg4LDB4NzIsMHhFNSwweDYx
LDB4MjIsMHhCQSwweEZFLDB4RDUsMHgyQSwweDhCLDB4RTUsMHg2MSwweDAyLDB4QUEsMHg3Qiww
eDU1LAotICAgIDB4NjcsMHg3QSwweEM1LDB4NjEsMHgzNCwweEI3LDB4RUQsMHhDMywweDI2LDB4
N0EsMHg0MywweDU5LDB4MkMsMHgyNiwweEI1LDB4MTUsCi0gICAgMHhFOSwweDkyLDB4NDcsMHg4
MiwweDM1LDB4MjUsMHhCNSwweDNGLDB4RjcsMHhGRSwweDEwLDB4Q0QsMHgwMSwweDAxLDB4MDMs
MHgwMywKLSAgICAweDM4LDB4RkYsMHhGNywweEY2LDB4QUEsMHhBRiwweEZGLDB4NUIsMHgzOCww
eEZGLDB4RDYsMHhGNiwweEE4LDB4RTAsMHg2QiwweDVCLAotICAgIDB4RDcsMHhGNiwweDU0LDB4
RTYsMHhBOCwweDgwLDB4NjAsMHg0MCwweEY4LDB4RkUsMHhEMywweERELDB4NUUsMHhENiwweDgz
LDB4ODIsCi0gICAgMHhENywweEY2LDB4QjIsMHhENSwweDI1LDB4MzcsMHhCRSwweEZBLDB4Rjcs
MHhGNiwweEI2LDB4RjYsMHgwMiwweDAyLDB4QUIsMHgwOSwKLSAgICAweEY3LDB4RjYsMHhENyww
eEY2LDB4N0YsMHg1QSwweEJGLDB4REYsMHhGNywweEY2LDB4OTcsMHhFRSwweEFBLDB4MEUsMHgy
MiwweDhBLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHg4NSwweEMyLDB4OEIsMHhBQSwweEY4
LDB4RjYsMHhENywweEY2LDB4MDIsMHhFQSwweDBBLDB4Q0EsCi0gICAgMHhGOCwweEY2LDB4Qjcs
MHhFRSwweDhBLDB4MkEsMHhCRSwweEI3LDB4OTYsMHhFRSwweDc2LDB4RUUsMHhBRSwweDlDLDB4
QkUsMHhFMCwKLSAgICAweDk2LDB4RUUsMHg1MSwweENELDB4MjQsMHgyNCwweDJFLDB4MkMsMHg1
NSwweEVFLDB4RjAsMHhCQywweEZDLDB4RjgsMHg3OCwweDU4LAotICAgIDB4MzQsMHhFNiwweDEw
LDB4QzUsMHgyRCwweDJCLDB4MDEsMHgwQiwweDk2LDB4RUUsMHg1NSwweEU2LDB4NUIsMHhGQSww
eEYzLDB4MzMsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFNiwweDI4LDB4ODIsMHgyMCwweDg4LDB4
RDcsMHhGNiwweEQ2LDB4RUUsMHg4QSwweEFBLDB4MkIsMHhBQSwKLSAgICAweEY2LDB4RjYsMHhE
NywweEY2LDB4RkQsMHg3RiwweDc3LDB4N0QsMHhENiwweEY2LDB4QjcsMHhFRSwweDAwLDB4MDgs
MHgyQSwweEFFLAotICAgIDB4RjcsMHhGNiwweEQ3LDB4RjYsMHhENSwweEE3LDB4MkQsMHhBNSww
eEY3LDB4RjYsMHhENiwweEY2LDB4QkEsMHhBQSwweENBLDB4MDIsCi0gICAgMHhCNiwweEY2LDB4
NjYsMHg3MiwweDYwLDB4NjAsMHg3MCwweDcwLDB4QzgsMHg4MiwweEM1LDB4NTksMHhFNSwweDBB
LDB4MkEsMHhGRSwKLSAgICAweEE4LDB4N0EsMHhBNCwweDU5LDB4N0EsMHhFMCwweDY4LDB4N0Is
MHg2NywweDcyLDB4NjQsMHg1MSwweDgyLDB4QzMsMHhGRiwweEY1LAotICAgIDB4NDYsMHg3Miww
eEM1LDB4NTksMHhGRCwweEU1LDB4RDUsMHgzOSwweDJBLDB4OTMsMHhDNSwweDYxLDB4RDUsMHhC
NSwweDJGLDB4MEEsCi0gICAgMHg4RSwweEM0LDB4ODgsMHg4MiwweDdELDB4REIsMHhFQiwweDBB
LDB4OEIsMHhBMywweEM1LDB4NjksMHg5NywweEVBLDB4OEEsMHhFOCwKLSAgICAweEQ3LDB4RkUs
MHg2NywweDdBLDB4RDUsMHgxNSwweDI1LDB4MEQsMHgxNywweEZGLDB4QjgsMHhGNiwweDIxLDB4
MjIsMHgyMiwweDIwLAotICAgIDB4MTgsMHhGRiwweEI2LDB4RUUsMHgyOCwweDg4LDB4NkEsMHg1
QSwweDE3LDB4RkYsMHgzNCwweEU2LDB4QTgsMHg3QSwweDdGLDB4QTIsCi0gICAgMHgzOSwweEZG
LDB4OTYsMHhFRSwweEUyLDB4QzEsMHg4MywweDg4LDB4MTgsMHhGRiwweEQ4LDB4RjYsMHhFOSww
eDg5LDB4QUIsMHhBQiwKLSAgICAweDE4LDB4RkYsMHgxNCwweEU2LDB4N0YsMHg3RSwweEZDLDB4
NzgsMHgxOCwweEZGLDB4NTUsMHhFNiwweDJCLDB4MjksMHhBRCwweEFELAotICAgIDB4MzgsMHhG
RiwweEQ3LDB4RjYsMHg1NywweDdGLDB4RkYsMHhGQiwweEY3LDB4RjYsMHhENywweEY2LDB4RDks
MHgwQiwweDAwLDB4MDAsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGNiwweEZELDB4QUUsMHhCQiww
eEZBLDB4RjcsMHhGNiwweDk1LDB4RUUsMHg4MCwweEEwLDB4RTgsMHhFOCwKLSAgICAweEQ3LDB4
RjYsMHg5NiwweEVFLDB4MzcsMHgwRCwweDA5LDB4QUQsMHg5NiwweEVFLDB4NTUsMHhFNiwweEE4
LDB4QTgsMHhCQiwweEJELAotICAgIDB4NTUsMHhFRSwweEIzLDB4RDUsMHgwNCwweDI0LDB4MDQs
MHgyNCwweDU1LDB4RUUsMHg2RSwweEI0LDB4NzgsMHg3OCwweDU4LDB4NUEsCi0gICAgMHg3Niww
eEVFLDB4OTIsMHhENSwweEE5LDB4QTksMHgyOSwweDAzLDB4QjYsMHhGNiwweDM0LDB4RTYsMHgz
QiwweDI1LDB4MkUsMHhBRiwKLSAgICAweEQ2LDB4RjYsMHg1NSwweEVFLDB4MDAsMHgwMCwweDAw
LDB4MDksMHhENiwweEY2LDB4RjcsMHhFRSwweDIwLDB4ODgsMHg4OCwweDIwLAotICAgIDB4RDYs
MHhGNiwweEQ3LDB4RUUsMHg4QSwweEFBLDB4ODgsMHgyMiwweEQ2LDB4RjYsMHhCNiwweEVFLDB4
RUUsMHhCRSwweEFBLDB4MDAsCi0gICAgMHhENiwweEY2LDB4QjYsMHhFRSwweDAyLDB4OEEsMHhC
QiwweDgwLDB4RjcsMHhGNiwweEI2LDB4RUUsMHhBQSwweEFCLDB4RUIsMHhGRSwKLSAgICAweDc1
LDB4RUUsMHg2MywweDQ5LDB4NzgsMHg1OCwweDU4LDB4NUMsMHhFNSwweDYxLDB4QTEsMHgyOCww
eDAwLDB4RUYsMHhENywweEQ1LAotICAgIDB4QzUsMHg1OSwweEUyLDB4MzgsMHhBOCwweEI3LDB4
QkQsMHgzNSwweDA5LDB4OTMsMHg4NCwweDUxLDB4RkQsMHhFQiwweDdBLDB4NzIsCi0gICAgMHgy
QSwweDhCLDB4MjMsMHg0OSwweDJGLDB4MkIsMHgzRiwweEI1LDB4RUMsMHhBQiwweDg3LDB4ODIs
MHhCQSwweDgwLDB4MEIsMHgyRCwKLSAgICAweDRFLDB4QkMsMHg0NywweDdBLDB4MEEsMHhBRSww
eEZFLDB4N0EsMHhFQywweEFCLDB4MjYsMHg3MiwweDVDLDB4RDYsMHgzRiwweDJCLAotICAgIDB4
RjgsMHhGRSwweENCLDB4QTMsMHgwOSwweDAyLDB4MDIsMHgwMiwweDE4LDB4RkYsMHhENiwweEY2
LDB4QTAsMHhBMiwweEUwLDB4NzAsCi0gICAgMHg1OSwweEZGLDB4RDYsMHhGNiwweEQ3LDB4QTUs
MHhBRCwweDBELDB4MzgsMHhGRiwweDc1LDB4RTYsMHg3MCwweEQwLDB4REMsMHg5QywKLSAgICAw
eDM4LDB4RkYsMHhGOSwweEY2LDB4Q0EsMHg2QSwweEVBLDB4RUUsMHgxOCwweEZGLDB4RjgsMHhG
NiwweEI5LDB4QkYsMHhBRiwweEE3LAotICAgIDB4MTgsMHhGRiwweDU1LDB4RUUsMHg3OCwweEUw
LDB4RTAsMHhBOCwweEY3LDB4RjYsMHg1NSwweEVFLDB4MkQsMHgyRiwweDBGLDB4MkEsCi0gICAg
MHgxOCwweEZGLDB4RjcsMHhGNiwweDU1LDB4NTUsMHhGRCwweEE1LDB4RjcsMHhGNiwweEQ3LDB4
RjYsMHgyOCwweDYyLDB4MDAsMHgwMCwKLSAgICAweEY3LDB4RjYsMHg5NiwweEVFLDB4ODAsMHgy
OCwweEY4LDB4N0EsMHhENywweEY2LDB4NTUsMHhFNiwweEUwLDB4RjAsMHhERSwweEY3LAotICAg
IDB4RDcsMHhGNiwweDc2LDB4RUUsMHg4OSwweDg5LDB4RjMsMHhCQiwweDc1LDB4RUUsMHhGNCww
eERELDB4MEEsMHgwNywweDI1LDB4QTcsCi0gICAgMHg1NiwweEVFLDB4OTIsMHhDRCwweDJDLDB4
MkUsMHgyRSwweDY2LDB4MTQsMHhFNiwweEFGLDB4QkMsMHhEOCwweEY4LDB4RjAsMHhEMiwKLSAg
ICAweDM0LDB4RTYsMHgzMSwweENELDB4ODIsMHg3RiwweEQ3LDB4RDcsMHgzNSwweEU2LDB4OTIs
MHhENSwweDBGLDB4MEQsMHgyRCwweEJELAotICAgIDB4MzQsMHhFNiwweEU4LDB4ODIsMHgyRCww
eDU1LDB4NTUsMHg1NSwweEI2LDB4RjYsMHgwOCwweDgzLDB4MDAsMHgyRiwweDU1LDB4NTUsCi0g
ICAgMHhCNiwweEY2LDB4RTgsMHg4MiwweDAwLDB4MDAsMHgwQiwweEQ1LDB4RDYsMHhGNiwweEYw
LDB4QzQsMHgwMCwweDAwLDB4MDAsMHgyRCwKLSAgICAweEI3LDB4RkUsMHhGNiwweEY2LDB4RkYs
MHhGRiwweEJGLDB4RUEsMHhGNywweEZFLDB4QjYsMHhGNiwweEZGLDB4QUUsMHhFRSwweEFBLAot
ICAgIDB4OTUsMHhFRSwweDQzLDB4NDEsMHg1QywweDVDLDB4NUMsMHg1OCwweDQ0LDB4NDEsMHhB
MSwweDI4LDB4RDUsMHhGNywweEEwLDB4ODAsCi0gICAgMHgwNiwweDcyLDB4RTIsMHgzOCwweEI1
LDB4MzUsMHgzNSwweDJELDB4QzgsMHg4MiwweEUzLDB4NDAsMHg2MCwweDcwLDB4N0EsMHg1RSwK
LSAgICAweEU2LDB4NjEsMHg4MSwweDI4LDB4MkYsMHhGRiwweDc3LDB4NUYsMHgwOSwweDkzLDB4
QzIsMHgzMCwweDBBLDB4MkYsMHhCNSwweEI1LAotICAgIDB4NkIsMHg5QiwweDY3LDB4N0EsMHhE
OCwweERFLDB4RkYsMHhGRiwweENCLDB4QTMsMHgwNiwweDZBLDB4QzIsMHhBQSwweEZCLDB4N0Ys
Ci0gICAgMHgzNCwweEU2LDB4NjcsMHg3MiwweDJELDB4OTUsMHg1NSwweDU1LDB4RDcsMHhGNiww
eDRCLDB4OTMsMHgwMCwweDAwLDB4MDIsMHgwRCwKLSAgICAweDc5LDB4RkYsMHhENywweEY2LDB4
QTksMHhFQiwweEVBLDB4NkUsMHhGNywweEZFLDB4MzUsMHhFNiwweDNDLDB4M0YsMHgzNywweDI3
LAotICAgIDB4MzgsMHhGRiwweEY3LDB4RjYsMHhFMywweEVCLDB4RUIsMHhFQiwweEY4LDB4RkUs
MHgxOCwweEY3LDB4RUEsMHhBQiwweEFBLDB4QUEsCi0gICAgMHgxOCwweEZGLDB4RDcsMHhGNiww
eDdBLDB4NUEsMHhGRSwweEZBLDB4RjgsMHhGNiwweEQ3LDB4RjYsMHhENSwweEJBLDB4MEEsMHgw
QiwKLSAgICAweDE4LDB4RkYsMHhGNywweEY2LDB4QTcsMHhGNiwweEJGLDB4OUIsMHgxOCwweEZG
LDB4QjcsMHhGNiwweEE4LDB4RTIsMHg2OCwweDdBLAotICAgIDB4RDcsMHhGNiwweDU1LDB4RTYs
MHhFOCwweEZBLDB4N0UsMHhGRiwweDc1LDB4RUUsMHgzNSwweEU2LDB4MjAsMHhBOCwweEFGLDB4
MzgsCi0gICAgMHhCNywweEY2LDB4NzYsMHhFRSwweDNFLDB4QUEsMHhFRSwweDdGLDB4NzUsMHhF
RSwweDkyLDB4RDUsMHgyRiwweDI1LDB4QTUsMHhCNSwKLSAgICAweEY0LDB4REQsMHg1MSwweENE
LDB4NDgsMHhDOCwweDAwLDB4MDAsMHhEMywweERELDB4NkUsMHhCNCwweEZBLDB4REEsMHhEQSww
eEQ4LAotICAgIDB4NzIsMHhENSwweEYwLDB4QzQsMHgyRiwweDJELDB4QUYsMHhCNywweEQzLDB4
REQsMHgzMCwweEM1LDB4MjIsMHhFMiwweDYyLDB4NUYsCi0gICAgMHhFOCwweDgyLDB4NjUsMHg3
MiwweDJBLDB4QTgsMHgyQiwweDU1LDB4RTgsMHg4MiwweEE3LDB4N0EsMHhBMiwweEJBLDB4RUEs
MHhBRCwKLSAgICAweEU4LDB4ODIsMHhDOCwweDgyLDB4MjMsMHhBQSwweEZGLDB4NTcsMHg0RCww
eEFDLDB4RTgsMHg4MiwweDM1LDB4NTUsMHg1NSwweDU1LAotICAgIDB4NzUsMHhFRSwweEU4LDB4
ODIsMHgwMiwweEI1LDB4NTUsMHg1NSwweEI2LDB4RjYsMHgwOSwweDhCLDB4MDAsMHgwMiwweEI1
LDB4NTUsCi0gICAgMHg3NSwweEVFLDB4NjMsMHg1MSwweDcwLDB4NjAsMHhDMCwweEVGLDB4QTUs
MHg1MSwweDIzLDB4NDEsMHg2MCwweEUyLDB4QUQsMHhBNSwKLSAgICAweDA5LDB4OTMsMHg2NCww
eDUxLDB4QjUsMHgyRCwweDBCLDB4MEIsMHg4NywweDgyLDB4MjQsMHg0OSwweDVDLDB4RjgsMHhC
OCwweDg4LAotICAgIDB4NDcsMHg3QSwweEMyLDB4MzAsMHg1NSwweDVGLDB4RTgsMHg2MCwweDA2
LDB4NzIsMHhBMiwweDMwLDB4M0QsMHgyRiwweEVFLDB4QkYsCi0gICAgMHg4OCwweDdBLDB4QzUs
MHg2MSwweEJDLDB4RDUsMHg5OSwweEFCLDB4QTgsMHg3QSwweDIyLDB4NDEsMHhGOCwweERFLDB4
OTYsMHhCNywKLSAgICAweDA5LDB4OEIsMHhDNSwweDYxLDB4QUYsMHhBRiwweDJGLDB4MjcsMHhC
NiwweEY2LDB4QTgsMHg4MiwweDI1LDB4MzUsMHhENSwweDU1LAotICAgIDB4MTgsMHhGRiwweEYw
LDB4Q0MsMHg4MCwweDgwLDB4QTAsMHg4OSwweEY4LDB4RkUsMHg1NSwweEVFLDB4MjUsMHgyNSww
eDI1LDB4MEQsCi0gICAgMHgxOCwweEZGLDB4RjgsMHhGNiwweDgyLDB4RTIsMHhFMiwweEMyLDB4
MTgsMHhGRiwweEY4LDB4RjYsMHg3RSwweDVGLDB4RjcsMHg1NywKLSAgICAweDE4LDB4RkYsMHhE
NywweEY2LDB4RkYsMHhCQiwweEVGLDB4QUIsMHgxOCwweEZGLDB4RDcsMHhGNiwweEFGLDB4QkYs
MHhBQSwweEFFLAotICAgIDB4MTgsMHhGRiwweEQ3LDB4RjYsMHhCQSwweEZBLDB4RkEsMHhGRSww
eEY4LDB4RjYsMHg3NiwweEVFLDB4RTgsMHg3OCwweDdBLDB4NUUsCi0gICAgMHg3NiwweEVFLDB4
MzUsMHhFNiwweEUwLDB4RTAsMHhFOCwweDY4LDB4OTYsMHhFRSwweDM1LDB4RTYsMHgzRiwweDJF
LDB4QUIsMHgyRCwKLSAgICAweDk2LDB4RUUsMHg1NSwweEVFLDB4ODgsMHhDMiwweEVFLDB4NEEs
MHgxNCwweEU2LDB4NzEsMHhDRCwweDI3LDB4QjUsMHhCRSwweEE4LAotICAgIDB4RDMsMHhERCww
eENGLDB4QkMsMHgwMCwweDgwLDB4NzAsMHg1OCwweDkyLDB4RDUsMHg2RSwweEI0LDB4NTgsMHg3
QiwweEVGLDB4QTcsCi0gICAgMHg1MSwweENELDB4NEUsMHhBQywweDJFLDB4MEUsMHgyNiwweDI2
LDB4NzIsMHhDRCwweDEwLDB4QzUsMHgxNiwweEI1LDB4MEQsMHhBMywKLSAgICAweEE3LDB4N0Es
MHg2NiwweDcyLDB4REQsMHhGQSwweEFBLDB4QUIsMHhBNywweDdBLDB4NDYsMHg3MiwweEJGLDB4
REEsMHhBMiwweDA4LAotICAgIDB4RTgsMHg4MiwweDQ2LDB4NzIsMHgwQSwweEJELDB4RjcsMHhG
QiwweEU4LDB4OEEsMHg2NiwweDcyLDB4MjIsMHhBQSwweDNELDB4NTUsCi0gICAgMHhFOCwweDgy
LDB4ODcsMHg3QSwweDA4LDB4QTAsMHg4MiwweEE1LDB4MDgsMHg4QiwweEM4LDB4ODIsMHhBRSww
eEZGLDB4RkYsMHhGNSwKLSAgICAweDA4LDB4OEIsMHhDNCwweDU5LDB4QzAsMHhFMiwweDY4LDB4
RTIsMHhBNCwweDU5LDB4QzIsMHgzMCwweDJBLDB4MEEsMHhCRiwweERGLAotICAgIDB4RTgsMHg5
MiwweEE0LDB4NTksMHgwOSwweDhCLDB4MEIsMHhBRCwweEE4LDB4OEEsMHhBNSwweDYxLDB4RTgs
MHhGRSwweDdBLDB4N0UsCi0gICAgMHg0NiwweDcyLDB4MjMsMHg0OSwweEU4LDB4N0EsMHg1Riww
eDVGLDB4QTUsMHg1MSwweDIzLDB4NDEsMHhCNSwweEI3LDB4M0YsMHhFRiwKLSAgICAweDg4LDB4
NzIsMHg2NCwweDQ5LDB4OEIsMHhBQiwweEZGLDB4NTUsMHg0NywweDcyLDB4MDMsMHg0OSwweEI3
LDB4QkYsMHgyRiwweDAzLAotICAgIDB4RTksMHg5MiwweDA2LDB4NkEsMHhBRCwweDhCLDB4RUIs
MHhGRSwweEU5LDB4OEEsMHgyMywweDQ5LDB4ODIsMHhBMiwweDdBLDB4NUUsCi0gICAgMHgxNCww
eEU2LDB4RTUsMHg2MSwweDBCLDB4MkQsMHhCNSwweEQ1LDB4RDcsMHhGRSwweDBELDB4QUMsMHgw
OCwweDAyLDB4MDIsMHhCNSwKLSAgICAweDE4LDB4RkYsMHhCNywweEY2LDB4ODAsMHg4MCwweDgy
LDB4ODksMHhENywweEZFLDB4RjgsMHhGNiwweEY1LDB4N0QsMHhENywweEY1LAotICAgIDB4MTgs
MHhGRiwweEY3LDB4RjYsMHhERCwweEI1LDB4RkYsMHhFRCwweDE4LDB4RkYsMHhENywweEY2LDB4
OEUsMHhBQSwweEFBLDB4NkEsCi0gICAgMHhGOCwweEZFLDB4OTYsMHhFRSwweEYwLDB4N0EsMHg3
QSwweDVFLDB4QjYsMHhGNiwweDU1LDB4RTYsMHhGQywweEVGLDB4NzUsMHhGNywKLSAgICAweDc2
LDB4RUUsMHgzNSwweEVFLDB4RUEsMHg4OCwweDJBLDB4QTgsMHg3NiwweEVFLDB4MTQsMHhFNiww
eDBCLDB4MEUsMHg3QSwweEY4LAotICAgIDB4OTYsMHhGNiwweEY0LDB4RTUsMHg4MiwweDhBLDB4
QzMsMHg2QSwweDE0LDB4RTYsMHhEMywweERELDB4RUEsMHhCRSwweDAzLDB4NjEsCi0gICAgMHhE
MywweERELDB4OEUsMHhCNCwweDU4LDB4NUMsMHhGQywweDdFLDB4NTEsMHhDRCwweENDLDB4OUIs
MHgyRiwweEFGLDB4RkUsMHg3QSwKLSAgICAweDEwLDB4QzUsMHhBQiwweDlCLDB4MDgsMHgwOCww
eDBGLDB4MEQsMHg3MiwweENELDB4MTEsMHhDNSwweDAyLDB4MDAsMHgwMywweEFGLAotICAgIDB4
NjcsMHg3MiwweDI1LDB4NkEsMHgyNSwweDU1LDB4REQsMHhCRSwweEE4LDB4N0EsMHgyNSwweDZB
LDB4ODIsMHhCRCwweDU1LDB4NTUsCi0gICAgMHhBNywweDdBLDB4MjYsMHg3MiwweEEyLDB4ODAs
MHgyRCwweDU1LDB4QTcsMHg3QSwweDQ2LDB4N0EsMHhBOCwweDBBLDB4QTAsMHgyRCwKLSAgICAw
eEE3LDB4N0EsMHg2NiwweDdBLDB4RDcsMHhFOCwweEUyLDB4OEEsMHhDOCwweDgyLDB4NjYsMHg3
MiwweDBBLDB4RDcsMHhGQiwweEFBLAotICAgIDB4RTgsMHg4MiwweDg2LDB4N0EsMHg2MCwweDIy
LDB4RDUsMHg3NywweDg2LDB4N0EsMHhBMiwweDM4LDB4NTcsMHg1QywweEY4LDB4RTAsCi0gICAg
MHhFNiwweDY5LDB4QzIsMHg0MCwweDJELDB4MkQsMHhGRiwweEZGLDB4NjcsMHg3QSwweDAzLDB4
NDksMHgyMCwweDAwLDB4OEIsMHhGNSwKLSAgICAweEE4LDB4ODIsMHhDMiwweDM4LDB4RkEsMHhG
OCwweDdBLDB4NUYsMHg0NCwweDQ5LDB4RTIsMHgzOCwweEJDLDB4RjcsMHhGRCwweEFCLAotICAg
IDB4QTQsMHg1OSwweEEyLDB4MzAsMHhERiwweEI3LDB4MzcsMHgyRiwweDY3LDB4N0EsMHg4NCww
eDU5LDB4MDksMHgyRCwweEZELDB4RkYsCi0gICAgMHgwNiwweDZBLDB4NDQsMHg1MSwweEE4LDB4
QjgsMHhCRSwweEQ3LDB4QTUsMHg1OSwweDAzLDB4NDEsMHg5QywweDlDLDB4M0UsMHhBNywKLSAg
ICAweEU5LDB4OEEsMHhBNSwweDU5LDB4M0YsMHhBRiwweEVCLDB4RUQsMHg0QSwweDkzLDB4Njcs
MHg3QSwweDM3LDB4QjUsMHhFRCwweDU1LAotICAgIDB4OTYsMHhGNiwweDY3LDB4N0EsMHgwMiww
eEI3LDB4NTUsMHg1NSwweDk3LDB4RjYsMHg2NywweDdBLDB4MDAsMHgwMCwweEI3LDB4NTUsCi0g
ICAgMHhENywweEZFLDB4NjcsMHg3MiwweDAwLDB4MDAsMHgwQSwweDc1LDB4RDcsMHhGRSwweEIw
LDB4QkMsMHgwMCwweDAwLDB4MDAsMHgyOSwKLSAgICAweEQ3LDB4RjYsMHg1NSwweEVFLDB4RTgs
MHg3RSwweEZGLDB4NUYsMHg5NiwweEY2LDB4MzUsMHhFNiwweEVBLDB4QUEsMHhBQiwweEU1LAot
ICAgIDB4OTYsMHhGNiwweDU1LDB4RUUsMHg3RiwweEVFLDB4MkEsMHg3RCwweDc2LDB4RUUsMHg1
NSwweEVFLDB4NUEsMHgzQSwweEQ3LDB4MDksCi0gICAgMHg3NSwweEVFLDB4QjMsMHhENSwweEU4
LDB4NjIsMHg2OCwweDY4LDB4NzUsMHhFRSwweEIzLDB4RDUsMHhBRCwweEFGLDB4QUQsMHhCRCwK
LSAgICAweDc1LDB4RUUsMHgxMCwweEM1LDB4NTYsMHg3OCwweDgyLDB4MDAsMHgzNSwweEU2LDB4
OEIsMHg5MywweDZBLDB4RUEsMHhBQSwweEE4LAotICAgIDB4MzAsMHhDNSwweDY4LDB4NzIsMHgw
QiwweEFELDB4RDcsMHg1QywweEYwLDB4QzQsMHhDOSwweDdBLDB4MDAsMHgwMCwweDAyLDB4MzUs
Ci0gICAgMHg2NiwweDcyLDB4NDYsMHg3MiwweEQ3LDB4NUIsMHhERCwweEFFLDB4NjcsMHg3QSww
eDQ2LDB4NkEsMHg1NSwweEZGLDB4QUEsMHhBQiwKLSAgICAweDY2LDB4NzIsMHgyNiwweDZBLDB4
RkUsMHhFQiwweEFBLDB4OEEsMHg2NiwweDcyLDB4MjYsMHg3MiwweDNELDB4RkYsMHhGQiwweEFB
LAotICAgIDB4QTcsMHg3QSwweDI1LDB4NkEsMHgwQSwweEJELDB4NUYsMHhGRiwweEE3LDB4ODIs
MHg0NiwweDcyLDB4MDgsMHgwQSwweEI1LDB4NTUsCi0gICAgMHhDNywweDgyLDB4NDYsMHg3Miww
eDJBLDB4ODgsMHgwQSwweEFELDB4RTgsMHg4QSwweEU1LDB4NjksMHg2QSwweEVBLDB4ODAsMHgw
MiwKLSAgICAweEU4LDB4OEEsMHg4NCwweDU5LDB4NTUsMHhGQSwweDY4LDB4NzgsMHg4NSwweDUx
LDB4QTIsMHgzMCwweDIwLDB4RTgsMHg3QSwweDU3LAotICAgIDB4NDQsMHg0OSwweEEyLDB4Mjgs
MHhEQywweEJGLDB4RkYsMHhGRCwweDY0LDB4NDksMHhDMiwweDMwLDB4RkEsMHhCNywweEI3LDB4
MTUsCi0gICAgMHg4NSwweDU5LDB4MjMsMHg0MSwweDNELDB4QUYsMHgyRSwweDI1LDB4MjcsMHg3
MiwweDQ0LDB4NDksMHhDMCwweEMzLDB4NkIsMHg3QiwKLSAgICAweEE1LDB4NTksMHhFMiwweDM4
LDB4QUUsMHhBNSwweDM3LDB4MjcsMHhBNSwweDU5LDB4MDMsMHg0MSwweEFGLDB4RUYsMHg3OCww
eDVDLAotICAgIDB4QzgsMHg4MiwweEUzLDB4NDAsMHgwQiwweDA5LDB4QUQsMHhGRCwweDY3LDB4
N0EsMHg0NCwweDUxLDB4MjgsMHhBOCwweEZGLDB4RDUsCi0gICAgMHhFOSwweDhBLDB4RTUsMHg2
MSwweDhBLDB4MEIsMHhBRCwweEZELDB4QzksMHg4QSwweDI3LDB4NzIsMHg1RiwweDc4LDB4Njgs
MHg4QSwKLSAgICAweDY3LDB4NzIsMHhBNSwweDU5LDB4MDIsMHg4MCwweEFBLDB4NTgsMHg1NSww
eEVFLDB4MDYsMHg2MiwweDJELDB4RjUsMHg1NSwweDU1LAotICAgIDB4MzQsMHhFRSwweDQ3LDB4
NzIsMHgwMCwweDBBLDB4MkQsMHhCNSwweDM1LDB4RTYsMHg5MywweERELDB4MjAsMHgyQSwweEU4
LDB4QTksCi0gICAgMHgxNCwweEU2LDB4RDMsMHhERCwweDNBLDB4MjAsMHhGRiwweDU2LDB4OTYs
MHhGNiwweEY0LDB4RTUsMHg4QSwweEFCLDB4RkIsMHg1RCwKLSAgICAweDU1LDB4RUUsMHhEMyww
eERELDB4NjAsMHhBQSwweEYyLDB4RjIsMHg1NSwweEU2LDB4QjMsMHhENSwweEFELDB4RUEsMHhB
QSwweEJCLAotICAgIDB4OTYsMHhFRSwweDE0LDB4RTYsMHg4MiwweDBCLDB4MDMsMHgwMSwweDc2
LDB4RUUsMHg5MiwweEQ1LDB4NzgsMHhFMCwweDAwLDB4MDAsCi0gICAgMHgzNSwweEU2LDB4MEQs
MHhBNCwweDdBLDB4QTIsMHgwOCwweDIwLDB4QjIsMHhENSwweEM5LDB4N0EsMHhCNSwweEE4LDB4
QzAsMHgwMCwKLSAgICAweDY2LDB4NzIsMHgyNywweDcyLDB4ODIsMHhBMCwweDAyLDB4QTksMHg0
NywweDdBLDB4NjYsMHg3MiwweEY1LDB4NUYsMHhERiwweDdGLAotICAgIDB4ODYsMHg3QSwweDQ2
LDB4NzIsMHhGNywweEVGLDB4QkIsMHhCQSwweDg2LDB4N0EsMHg0NiwweDcyLDB4REYsMHhFRSww
eEJBLDB4QTIsCi0gICAgMHg4NiwweDdBLDB4NDYsMHg3MiwweEZGLDB4RkYsMHhFQSwweEE4LDB4
NjYsMHg3QSwweDQ2LDB4NzIsMHhCRiwweDBBLDB4MDgsMHgwMCwKLSAgICAweDg3LDB4N0EsMHg0
NSwweDdBLDB4RDcsMHhGQiwweEFBLDB4ODIsMHhBQiwweEEzLDB4NjYsMHg3QSwweERELDB4RDUs
MHg5NSwweDM1LAotICAgIDB4MDksMHg5MywweEMyLDB4MzgsMHg3OCwweDc4LDB4NzgsMHg3OCww
eEMyLDB4MzAsMHg4MSwweDI4LDB4N0MsMHhBOCwweDA4LDB4MDgsCi0gICAgMHhDMiwweDMwLDB4
QTIsMHgyOCwweEFGLDB4RUUsMHg2OCwweDE4LDB4NDQsMHg0MSwweEEyLDB4MjgsMHgyRCwweDg5
LDB4OEIsMHhFMiwKLSAgICAweDY0LDB4NTEsMHhFMiwweDM4LDB4MkQsMHgyRCwweDgxLDB4NDMs
MHg4NSwweDUxLDB4RTMsMHgzOCwweDYyLDB4RTgsMHg1QSwweDU1LAotICAgIDB4NDQsMHg0MSww
eEUzLDB4MzgsMHgwRiwweDdGLDB4NjMsMHhCNSwweDY1LDB4NDksMHgwMywweDQxLDB4RjYsMHg2
RiwweDYxLDB4MjcsCi0gICAgMHg4NSwweDUxLDB4RTMsMHgzOCwweDJGLDB4MDUsMHgzNSwweEFG
LDB4QTUsMHg1OSwweDAzLDB4NDEsMHhGRSwweEQ2LDB4MzYsMHgyRSwKLSAgICAweDI2LDB4NkEs
MHg4NCwweDU5LDB4QUQsMHhBMiwweDYzLDB4REUsMHg4NywweDgyLDB4NjQsMHg1OSwweDAwLDB4
M0IsMHhGRCwweEZELAotICAgIDB4NDcsMHg3MiwweDY0LDB4NTEsMHhGOCwweEE4LDB4NUYsMHg1
RCwweEM1LDB4NTksMHg0NCwweDQ5LDB4MEEsMHg4OCwweDlGLDB4QjUsCi0gICAgMHhDOCwweDdB
LDB4NjQsMHg0OSwweDBGLDB4QkQsMHhGRiwweDdGLDB4RDMsMHhFNSwweDI2LDB4NzIsMHgwQiww
eDJELDB4QjUsMHhGNSwKLSAgICAweEQ0LDB4REQsMHgxMCwweEM1LDB4MDAsMHg4MCwweEEwLDB4
QTksMHgxNCwweEU2LDB4OTMsMHhENSwweEEyLDB4MkYsMHgwOSwweEFCLAotICAgIDB4MzUsMHhF
RSwweDUxLDB4Q0QsMHhBMCwweDA4LDB4MkUsMHgxNiwweDU1LDB4RUUsMHhGNCwweERELDB4N0Qs
MHhCRSwweDgyLDB4RTgsCi0gICAgMHhCNiwweEY2LDB4MTQsMHhFNiwweDI5LDB4MjksMHg4OSww
eDhCLDB4OTYsMHhGNiwweEY0LDB4REQsMHg3MCwweDYwLDB4QzgsMHhBQSwKLSAgICAweDM1LDB4
RTYsMHg5MiwweEQ1LDB4NUYsMHg1RCwweDVGLDB4NUMsMHhCMywweEQ1LDB4NTEsMHhDRCwweEEw
LDB4N0UsMHg1RSwweDdFLAotICAgIDB4MjUsMHg3MiwweDY0LDB4NTksMHgzRCwweEQ1LDB4NTUs
MHg1NSwweDY2LDB4NzIsMHg2MywweDU5LDB4MDAsMHgyOSwweEQ1LDB4NTUsCi0gICAgMHg2Niww
eDcyLDB4NjMsMHg1MSwweDAwLDB4MDAsMHgwQiwweEQ1LDB4ODcsMHg3QSwweEU1LDB4NjksMHgw
MCwweDA4LDB4ODAsMHgwRCwKLSAgICAweDg3LDB4N0EsMHg2NiwweDdBLDB4RUEsMHhBMiwweEVF
LDB4QkIsMHg2NiwweDgyLDB4ODcsMHg3QSwweEJCLDB4RkIsMHg3RiwweDdGLAotICAgIDB4NjYs
MHg4QSwweDg3LDB4N0EsMHg3NSwweDVGLDB4REQsMHhERCwweEVDLDB4QUIsMHg4NywweDgyLDB4
MjUsMHgwNSwweDA5LDB4MDIsCi0gICAgMHg2OSwweDlCLDB4NDMsMHg0OSwweDdDLDB4N0UsMHg1
QywweDVDLDB4MDIsMHgzOSwweEEyLDB4MjgsMHg3QywweDVDLDB4REUsMHhGOCwKLSAgICAweDIz
LDB4NDEsMHhBMiwweDI4LDB4RDUsMHhENSwweERELDB4MkYsMHgyNCwweDQxLDB4QzIsMHgzMCww
eEZBLDB4MjUsMHgyRCwweDAyLAotICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHhDQiwweEY5LDB4
ODIsMHhFMCwweDQ0LDB4NDksMHhDMiwweDMwLDB4NkQsMHhGQiwweEYwLDB4RTAsCi0gICAgMHg2
NCwweDQ5LDB4QTIsMHgzMCwweEI1LDB4QkQsMHgyRCwweEJBLDB4NDQsMHg0OSwweEUzLDB4Mzgs
MHgyQSwweEYwLDB4RkYsMHg5RSwKLSAgICAweDY1LDB4NTEsMHgwMywweDM5LDB4ODMsMHhFQiww
eEY1LDB4QjcsMHhBNSwweDU5LDB4MDMsMHg0MSwweDJCLDB4OUYsMHg1NywweERGLAotICAgIDB4
QTUsMHg1OSwweDAzLDB4NDEsMHgyMCwweEJFLDB4RDcsMHhENywweDA2LDB4NkEsMHgyMywweDQ5
LDB4MEEsMHhBQSwweEZCLDB4NUYsCi0gICAgMHhDNiwweDU5LDB4MjMsMHg0MSwweEI2LDB4Rjgs
MHhEQiwweDU1LDB4QTUsMHg1MSwweDQ0LDB4NDksMHg4RiwweDI1LDB4RjUsMHg1NSwKLSAgICAw
eEM1LDB4NTksMHgyMywweDQxLDB4MkEsMHhCRSwweEQ3LDB4RjUsMHgwOSwweDhCLDB4QzUsMHg1
OSwweDBGLDB4QUQsMHhGRCwweEZELAotICAgIDB4QjMsMHhERCwweEM4LDB4ODIsMHgwQiwweDBE
LDB4MzUsMHgxNSwweDM1LDB4RTYsMHhCMywweEQ1LDB4OEIsMHgwMCwweDgyLDB4NjAsCi0gICAg
MHhGMywweERELDB4RjAsMHhDNCwweDM0LDB4QkUsMHhCNywweEZGLDB4OTYsMHhFRSwweDE1LDB4
RTYsMHg1RSwweEJFLDB4MkIsMHgwOSwKLSAgICAweDk2LDB4RUUsMHg1NSwweEVFLDB4NjMsMHg3
QSwweEZDLDB4RjgsMHg3NSwweEVFLDB4NTUsMHhFNiwweEFGLDB4RkUsMHg5RiwweEY3LAotICAg
IDB4NTUsMHhFRSwweDkyLDB4RDUsMHg3OCwweDgwLDB4MDAsMHgwMCwweDc2LDB4RUUsMHg1MSww
eENELDB4NUYsMHg3RiwweEVBLDB4MDAsCi0gICAgMHg4NCwweDU5LDB4NDMsMHg1OSwweEU3LDB4
QzUsMHhBRCwweEFCLDB4ODQsMHg2MSwweDQzLDB4NTEsMHg2RSwweDcyLDB4RDYsMHg1RiwKLSAg
ICAweDYzLDB4NTksMHgyMywweDUxLDB4NUYsMHhGNywweEZFLDB4M0YsMHhFNSwweDY5LDB4NDMs
MHg1OSwweDI1LDB4RkQsMHhGRiwweEJGLAotICAgIDB4ODcsMHg3QSwweDQzLDB4NTksMHgwMiww
eEJELDB4NTcsMHg1RCwweDg3LDB4N0EsMHg0MywweDU5LDB4MDAsMHgwMCwweDJELDB4NTUsCi0g
ICAgMHhDQiwweEEzLDB4RTUsMHg2OSwweEZGLDB4M0YsMHgyRiwweDBELDB4Q0IsMHhBQiwweDZB
LDB4OUIsMHgyMiwweEE4LDB4QkUsMHhGNywKLSAgICAweDhBLDB4OUIsMHg0MywweDQ5LDB4NUMs
MHg3OCwweDU4LDB4RjgsMHgyMywweDQxLDB4QzIsMHgzMCwweDVDLDB4NTYsMHhCNywweEZFLAot
ICAgIDB4NjQsMHg0OSwweEMyLDB4MzAsMHhBRCwweDJELDB4M0YsMHhBQSwweDY0LDB4NDksMHgw
MywweDQxLDB4RkUsMHhFQSwweDdDLDB4RjYsCi0gICAgMHg4NSwweDUxLDB4MDMsMHgzOSwweEQ1
LDB4MjcsMHgwNSwweEFGLDB4QTUsMHg1OSwweDI0LDB4NDEsMHhGRCwweEFELDB4QUIsMHhCMiwK
LSAgICAweDA2LDB4NjIsMHhFMywweDM4LDB4REYsMHg3QiwweDdBLDB4RjAsMHgyNCwweDQxLDB4
QzIsMHgzMCwweDI4LDB4QUUsMHhFRCwweDI5LAotICAgIDB4QTUsMHg1MSwweDAzLDB4NDEsMHgz
NSwweDE1LDB4RjUsMHhENSwweDY0LDB4NTEsMHgwMywweDQxLDB4OTQsMHhERSwweEZFLDB4QUEs
Ci0gICAgMHg4NSwweDQ5LDB4MjMsMHg0OSwweEQ3LDB4RkIsMHhFMiwweEVFLDB4NjQsMHg1MSww
eEUzLDB4MzgsMHhBOCwweEI4LDB4RkUsMHhERSwKLSAgICAweDY0LDB4NDksMHhFMywweDM4LDB4
REYsMHhERiwweDlGLDB4QTIsMHg2NCwweDQ5LDB4RTMsMHgzOCwweEU4LDB4N0IsMHhGOCwweDJC
LAotICAgIDB4ODUsMHg1MSwweDIzLDB4NDEsMHgyNSwweDI1LDB4RjcsMHhGNywweEE4LDB4N0Es
MHg0NCwweDQ5LDB4OEIsMHgyRiwweEFGLDB4QkQsCi0gICAgMHg4QSwweDlCLDB4MjYsMHg3Miww
eDJGLDB4QkYsMHhGNSwweEQ1LDB4RDMsMHhERCwweDI5LDB4OEIsMHgwMCwweDgzLDB4ODEsMHg4
RCwKLSAgICAweDUxLDB4RDUsMHhEMCwweEM0LDB4MkIsMHhBRiwweDJELDB4QUQsMHg5NiwweEVF
LDB4QUYsMHhCQywweDAyLDB4MDMsMHhGQiwweDdGLAotICAgIDB4NzYsMHhFRSwweDhFLDB4QjQs
MHgwMCwweDAwLDB4RkIsMHg1NSwweDc1LDB4RUUsMHg0RSwweEFDLDB4MDAsMHg4MCwweDdGLDB4
NTUsCi0gICAgMHg3NiwweEVFLDB4OEYsMHhCNCwweDAwLDB4RkUsMHhENSwweEJELDB4MTUsMHhE
RSwweEIwLDB4QjQsMHg4MCwweEVELDB4RkUsMHg3RSwKLSAgICAweDY0LDB4NTksMHgyMywweDUx
LDB4QzAsMHg3QSwweEZFLDB4REYsMHg2MywweDU5LDB4MjMsMHg1MSwweEFCLDB4RkYsMHhCOSww
eEFBLAotICAgIDB4ODQsMHg2MSwweDQzLDB4NTksMHhGNSwweEZELDB4QkUsMHhGQiwweDg0LDB4
NjEsMHg0MywweDU5LDB4QzIsMHg2QSwweDVFLDB4NTUsCi0gICAgMHg2MywweDU5LDB4MDMsMHg0
OSwweEEyLDB4RUMsMHg3MywweERFLDB4MjUsMHg3MiwweDIzLDB4NTEsMHg1NSwweDU1LDB4NTUs
MHg5NSwKLSAgICAweDhCLDB4OUIsMHgwMiwweDUxLDB4MDksMHgwMywweDAyLDB4MDAsMHg4Qiww
eDlCLDB4MjksMHg5MywweDAwLDB4MEEsMHhCNiwweEI3LAotICAgIDB4NDksMHg5MywweEE0LDB4
NTksMHg3OCwweDYwLDB4RTgsMHhFOCwweEU1LDB4NjksMHhFMywweDQwLDB4NUYsMHg1RiwweEY3
LDB4REMsCi0gICAgMHg4NSwweDUxLDB4RTMsMHgzOCwweEZBLDB4RjIsMHg3QiwweDVFLDB4NDQs
MHg0OSwweEUzLDB4MzgsMHg4QywweEVBLDB4NjIsMHhFMywKLSAgICAweDIzLDB4NDEsMHhFMyww
eDM4LDB4RTAsMHhFQSwweEFCLDB4QUQsMHhDNiwweDYxLDB4MjMsMHg0OSwweEYxLDB4NzEsMHhF
MywweEJELAotICAgIDB4ODUsMHg1OSwweEUzLDB4MzgsMHg0MiwweDRBLDB4RUEsMHg2MCwweDI0
LDB4NDEsMHhBMiwweDMwLDB4MkIsMHhBRCwweEZELDB4QUQsCi0gICAgMHg4NSwweDU5LDB4MjMs
MHg0MSwweEZGLDB4QUQsMHhBRiwweDJBLDB4QTUsMHg1OSwweEUzLDB4MzgsMHhFMiwweEU4LDB4
RkEsMHg3RiwKLSAgICAweDQ0LDB4NDksMHhFMiwweDM4LDB4MkMsMHhCQSwweERGLDB4MkQsMHg0
NCwweDQxLDB4RTMsMHgzOCwweEZBLDB4RkUsMHhFQiwweEYwLAotICAgIDB4ODUsMHg1MSwweDAz
LDB4MzksMHg4QiwweEFELDB4N0QsMHg3NSwweDY0LDB4NDksMHhFMywweDM4LDB4MkYsMHhCRSww
eEJELDB4RkQsCi0gICAgMHg4NSwweDUxLDB4MjMsMHg0MSwweEVBLDB4MkYsMHhFNSwweDM1LDB4
RTYsMHg2MSwweDQ0LDB4NDksMHgyRCwweEY3LDB4QUYsMHgzRCwKLSAgICAweEE4LDB4N0EsMHhF
NSwweDYxLDB4MkEsMHgzRCwweEY1LDB4OUYsMHgxMSwweEM1LDB4QTgsMHg3QSwweDBELDB4MEQs
MHgyNSwweDE1LAotICAgIDB4MzEsMHhDRCwweDhFLDB4QjQsMHgyQiwweDJGLDB4RkYsMHhENyww
eDExLDB4QzUsMHgyRSwweEFDLDB4QzAsMHg3MCwweDdDLDB4MEIsCi0gICAgMHg5MywweENELDB4
MkQsMHhBQywweDU1LDB4QUQsMHgwQiwweDgyLDB4QjQsMHhDRCwweDZGLDB4QUMsMHgyRCwweEEw
LDB4RTAsMHhFMiwKLSAgICAweDk0LDB4Q0QsMHgyRSwweEE0LDB4ODgsMHg4QSwweEVCLDB4REIs
MHhGMSwweEJDLDB4OEYsMHhBQywweDYwLDB4RjIsMHg5RSwweEJGLAotICAgIDB4NjMsMHg1OSww
eDAzLDB4NDksMHhCRiwweEFFLDB4QTIsMHhBMCwweDg0LDB4NTksMHg0MywweDU5LDB4RkQsMHg3
RCwweDJELDB4Q0YsCi0gICAgMHg4NCwweDYxLDB4NDMsMHg1OSwweDdFLDB4NTIsMHg3QSwweDVG
LDB4NjQsMHg1OSwweDIzLDB4NTEsMHg5QiwweEVCLDB4N0UsMHg1RiwKLSAgICAweDQ0LDB4NTEs
MHhFMiwweDQwLDB4RTgsMHhBQSwweEJGLDB4RkUsMHg2QiwweDlCLDB4MDMsMHg0OSwweDM1LDB4
MjUsMHgwRCwweDA5LAotICAgIDB4RUQsMHhBQiwweDRBLDB4OTMsMHg1RSwweDdFLDB4NzIsMHhF
OCwweDZBLDB4OUIsMHgyOSwweDkzLDB4M0QsMHhGNywweEI3LDB4ODAsCi0gICAgMHgwOSwweDhC
LDB4NDcsMHg3MiwweEZDLDB4NzgsMHg1QywweDVDLDB4NjcsMHg3MiwweDI0LDB4NDksMHg1OCww
eDY4LDB4QTIsMHhBOCwKLSAgICAweEM1LDB4NjEsMHhDMiwweDM4LDB4NzYsMHg1RiwweDVGLDB4
NzgsMHg2NCwweDQ5LDB4RTMsMHgzOCwweENCLDB4NDksMHhGRCwweEZELAotICAgIDB4MjMsMHg0
MSwweEUzLDB4MzgsMHhBRiwweDlFLDB4QkIsMHgyNSwweDg1LDB4NTksMHgwMywweDQxLDB4MkYs
MHgyOSwweDk1LDB4QkYsCi0gICAgMHg4NSwweDU5LDB4QzMsMHgzOCwweDQwLDB4NzAsMHg3MCww
eDc4LDB4MDQsMHg0MSwweEEyLDB4MzAsMHgwQiwweEY1LDB4QkIsMHhBMSwKLSAgICAweEE2LDB4
NTksMHhFMywweDM4LDB4MDIsMHgwMywweDA5LDB4QUYsMHg4NSwweDUxLDB4RTMsMHgzOCwweDdF
LDB4NUUsMHhGQywweDVFLAotICAgIDB4NjQsMHg0OSwweEUzLDB4MzgsMHgyRiwweDI1LDB4QTUs
MHhCNSwweDQ0LDB4NDEsMHhFMiwweDM4LDB4NzgsMHg2QSwweDgyLDB4RUEsCi0gICAgMHgyNCww
eDQxLDB4RTIsMHgzOCwweEFFLDB4MkQsMHhCRiwweDU1LDB4MjMsMHgzOSwweEUyLDB4MzAsMHhG
QiwweEFFLDB4M0YsMHhCRCwKLSAgICAweEE1LDB4NTksMHgyMywweDQxLDB4RkQsMHhERCwweEI5
LDB4QTMsMHhFNiwweDYxLDB4NDQsMHg0OSwweDk1LDB4RDUsMHhCNywweDBCLAotICAgIDB4NDcs
MHg3MiwweDg0LDB4NTksMHgyQiwweEE1LDB4RkYsMHgzRiwweDRFLDB4QjQsMHgyNiwweDcyLDB4
M0YsMHgzRiwweEJELDB4RjUsCi0gICAgMHg1NSwweEVFLDB4RDAsMHhCQywweDU3LDB4MkEsMHgw
MiwweDAzLDB4MzUsMHhFNiwweEQwLDB4QkMsMHhCRCwweEM4LDB4QzAsMHhFMCwKLSAgICAweDkz
LDB4Q0QsMHg1MiwweEM1LDB4NDMsMHg2MiwweEMyLDB4QkMsMHg5MywweENELDB4QjAsMHhCNCww
eDBFLDB4QkUsMHhGQSwweDdBLAotICAgIDB4NTIsMHhDNSwweDRDLDB4OEIsMHhCOCwweEFDLDB4
QUYsMHhBRCwweEQwLDB4QjQsMHg5MCwweEFDLDB4QkUsMHhGNiwweEVBLDB4NTYsCi0gICAgMHg2
MywweDU5LDB4NDMsMHg1MSwweEFELDB4MEQsMHgyOSwweDNCLDB4ODQsMHg2MSwweDQzLDB4NTEs
MHhBQSwweEUyLDB4RDYsMHg1NSwKLSAgICAweDYzLDB4NTksMHgyMywweDUxLDB4QUEsMHhFRiww
eDVBLDB4NUYsMHg0MywweDUxLDB4MDQsMHg0OSwweEI4LDB4RUEsMHhFQSwweEZFLAotICAgIDB4
NDQsMHg1OSwweEUyLDB4NDgsMHg3RiwweDNFLDB4MEIsMHgwMiwweEFCLDB4QTMsMHhBNSwweDYx
LDB4MDksMHgwMSwweDAzLDB4MDMsCi0gICAgMHhDQywweEFCLDB4NDksMHg5MywweEY3LDB4N0Us
MHhGOCwweDYwLDB4NkEsMHg5QiwweEM4LDB4ODIsMHg4OCwweEZCLDB4N0EsMHhERiwKLSAgICAw
eEM4LDB4ODIsMHgyNiwweDcyLDB4NUMsMHg3QywweEZDLDB4N0MsMHg0NiwweDcyLDB4MDYsMHg2
QSwweDlFLDB4QTYsMHgyRSwweDI4LAotICAgIDB4QTgsMHg4MiwweDAzLDB4NDEsMHg1QSwweDc4
LDB4NjAsMHhDMCwweDI0LDB4NDEsMHhDMiwweDMwLDB4OEIsMHhBQiwweEZELDB4NTcsCi0gICAg
MHg0NCwweDQ5LDB4QzIsMHgzMCwweDNGLDB4QkYsMHhCRCwweDZELDB4NjUsMHg1MSwweEUzLDB4
MzgsMHgyRSwweEJFLDB4N0YsMHhGRCwKLSAgICAweEE2LDB4NTksMHhFMywweDM4LDB4NTgsMHg3
QSwweDdGLDB4RkYsMHgwMywweDM5LDB4QTIsMHgzMCwweDBCLDB4MkIsMHg5NywweEI2LAotICAg
IDB4NjUsMHg0OSwweDAzLDB4NDEsMHhDRCwweEU5LDB4RTksMHg4MSwweDI0LDB4NDEsMHhFMyww
eDM4LDB4RkEsMHhCNiwweEZDLDB4NTQsCi0gICAgMHg0NCwweDQxLDB4RTMsMHgzMCwweDNGLDB4
M0YsMHhGNSwweDU1LDB4NDQsMHg0MSwweEMyLDB4MzAsMHg3QSwweEQ4LDB4RkYsMHhGNywKLSAg
ICAweDIzLDB4MzksMHhFMiwweDMwLDB4RkQsMHhBRSwweEFCLDB4RjcsMHgyMywweDM5LDB4QzMs
MHgzOCwweEFCLDB4M0UsMHg5QSwweEJBLAotICAgIDB4NjQsMHg0OSwweDAzLDB4MzksMHgyOSww
eDc1LDB4NTcsMHg1RiwweDQ3LDB4NkEsMHgwMywweDQxLDB4QUYsMHgyRCwweEJELDB4RkQsCi0g
ICAgMHg0NywweDcyLDB4QTUsMHg1OSwweDMzLDB4RUYsMHhCMCwweDYzLDB4MDksMHg4MywweDI2
LDB4NkEsMHgyNSwweEI1LDB4RUYsMHhFRCwKLSAgICAweDE1LDB4RTYsMHg4QiwweDkzLDB4MDMs
MHgwMSwweDA5LDB4QTksMHgxNCwweEU2LDB4MzIsMHhDNSwweEY4LDB4RDgsMHhEQSwweERFLAot
ICAgIDB4OTMsMHhDRCwweEYxLDB4QkMsMHhBMCwweEU4LDB4QkMsMHhEQSwweDUyLDB4QzUsMHg2
QywweDhCLDB4QTAsMHhFOCwweEU4LDB4NkEsCi0gICAgMHg5MCwweEFDLDB4RUUsMHg5QiwweDA5
LDB4ODksMHhFRCwweEI5LDB4OEYsMHhBQywweDRGLDB4QTQsMHgzRSwweDg5LDB4NTksMHgxRSwK
LSAgICAweDYzLDB4NTksMHgyMywweDUxLDB4QUEsMHhDMCwweEZFLDB4REYsMHg0MywweDUxLDB4
MDMsMHg0OSwweDAyLDB4MkIsMHhDQSwweEZBLAotICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHhC
RSwweEFFLDB4RUQsMHhCQiwweDQ0LDB4NTksMHgwMywweDUxLDB4N0YsMHhCQiwweDNGLDB4MEYs
Ci0gICAgMHhDNiwweDY5LDB4MDMsMHg1MSwweEZELDB4QkYsMHhCRiwweDNGLDB4RUMsMHhBQiww
eEU5LDB4OEEsMHgyOSwweDA5LDB4MkIsMHg4QSwKLSAgICAweDJELDB4QjQsMHg4QiwweDlCLDB4
NzgsMHhGQSwweEFBLDB4NTUsMHhBQiwweEEzLDB4ODcsMHg3QSwweEZFLDB4RkEsMHhFMCwweDdB
LAotICAgIDB4QTcsMHg4MiwweDI1LDB4NkEsMHg3QywweERDLDB4N0UsMHg1RiwweEE4LDB4ODIs
MHgyNSwweDZBLDB4QkQsMHgyNywweDBELDB4MDMsCi0gICAgMHhBOCwweDgyLDB4RTUsMHg2OSww
eEMwLDB4ODAsMHhFOCwweDU2LDB4RTUsMHg2MSwweEEyLDB4MzAsMHg1RiwweDU0LDB4NUMsMHg1
OCwKLSAgICAweEUzLDB4MzgsMHhBMiwweDMwLDB4OEIsMHhGNSwweEQ3LDB4QUEsMHgyNCwweDQ5
LDB4QzIsMHgzMCwweDJGLDB4QUQsMHhGRCwweEJCLAotICAgIDB4NjUsMHg0OSwweDAzLDB4Mzks
MHg3QywweDVGLDB4NUIsMHhGQiwweDAzLDB4NDEsMHhBMiwweDI4LDB4QkUsMHhCNiwweDVFLDB4
RDgsCi0gICAgMHg2NSwweDQ5LDB4QzIsMHgzMCwweDAzLDB4QUIsMHhFRCwweEVELDB4MjMsMHg0
MSwweEEyLDB4MjgsMHhGOCwweEJFLDB4NzcsMHhGNywKLSAgICAweDAzLDB4MzksMHhDMywweDMw
LDB4RUYsMHhBQiwweDlGLDB4MzUsMHgwMywweDM5LDB4QzIsMHgzMCwweEJGLDB4N0QsMHhGRiww
eEZFLAotICAgIDB4MjMsMHg0MSwweEUzLDB4MzgsMHg1NSwweDU1LDB4RkQsMHhDQiwweDIzLDB4
NDEsMHhDMiwweDMwLDB4RjUsMHhCRSwweEFFLDB4MjAsCi0gICAgMHg0NCwweDQ5LDB4MDMsMHgz
OSwweEVGLDB4RTMsMHg3QSwweDc4LDB4NDQsMHg0OSwweDAzLDB4NDEsMHgyNywweEQ1LDB4RDcs
MHg1QSwKLSAgICAweEM1LDB4NjEsMHgyMywweDQxLDB4MEUsMHhCQiwweEFGLDB4QUQsMHhBOCww
eDdBLDB4QzUsMHg2MSwweDA5LDB4MDksMHgwQiwweEFCLAotICAgIDB4NTIsMHhDRCwweEE4LDB4
N0EsMHgwOSwweDA5LDB4MEQsMHgyRCwweDczLDB4Q0QsMHhEMCwweEI0LDB4OEMsMHgwQywweDBD
LDB4QzcsCi0gICAgMHgzMiwweEM1LDB4MkUsMHhBNCwweDgwLDB4RUEsMHhGOCwweDc4LDB4RjEs
MHhCQywweEFELDB4OTMsMHg1QSwweEJBLDB4QTgsMHhGRiwKLSAgICAweDMxLDB4QkQsMHhFRCww
eDlCLDB4QUYsMHgwMiwweEJGLDB4RDUsMHgzMiwweEM1LDB4OEYsMHhBQywweDU1LDB4NUYsMHhB
QSwweDI1LAotICAgIDB4NDMsMHg1MSwweDAyLDB4NDksMHhCOCwweEUwLDB4RkEsMHg2QSwweDQz
LDB4NTEsMHgwMiwweDQ5LDB4RDgsMHg5NiwweEI1LDB4MkQsCi0gICAgMHg0MywweDUxLDB4MjMs
MHg1MSwweERELDB4RkEsMHgzQywweDI1LDB4NDQsMHg1OSwweDIzLDB4NTEsMHhBQSwweEE4LDB4
ODAsMHg0RSwKLSAgICAweDI5LDB4OTMsMHgyMywweDUxLDB4OTUsMHg5NSwweDE1LDB4MzUsMHhB
QiwweEEzLDB4ODcsMHg3QSwweDgyLDB4RTAsMHg3QSwweDVFLAotICAgIDB4MEEsMHg5MywweDY3
LDB4NzIsMHhBMCwweDdFLDB4NTUsMHg1NSwweEM4LDB4ODIsMHg0NiwweDcyLDB4NzgsMHg3Riww
eDdGLDB4NzcsCi0gICAgMHg4NywweDdBLDB4MjYsMHg2QSwweEZGLDB4QUYsMHgzRiwweDJCLDB4
QzgsMHg4MiwweEM1LDB4NjEsMHhBMiwweEY4LDB4N0UsMHg1RiwKLSAgICAweDI2LDB4NkEsMHhD
NCwweDYxLDB4REUsMHhFQSwweDJGLDB4M0YsMHgwNiwweDZBLDB4ODIsMHgzMCwweDc4LDB4RTAs
MHhDMCwweDgwLAotICAgIDB4MDMsMHgzOSwweDgxLDB4MjgsMHgwQiwweDNELDB4OUYsMHhCRiww
eDQ0LDB4NDksMHhBMiwweDMwLDB4QUYsMHgzNywweEFGLDB4MkYsCi0gICAgMHg2NSwweDQ5LDB4
QzMsMHgzMCwweEE4LDB4QUEsMHhFQiwweDc3LDB4MjQsMHg0MSwweDgyLDB4MjAsMHhFOCwweEUy
LDB4RjIsMHg3QSwKLSAgICAweDI0LDB4NDEsMHg4MiwweDIwLDB4QTMsMHhCRiwweEY1LDB4RUQs
MHhFMywweDMwLDB4QTIsMHgyOCwweDgwLDB4RjgsMHhFRCwweEI1LAotICAgIDB4MjQsMHg0MSww
eEEyLDB4MzAsMHgwRCwweEFGLDB4RkYsMHhCRiwweDA0LDB4MzksMHhDMiwweDMwLDB4QjQsMHhG
RiwweEZGLDB4RkYsCi0gICAgMHg4NSwweDQ5LDB4MDMsMHgzOSwweEZGLDB4RTksMHhFMywweDdE
LDB4NDQsMHg0OSwweEUzLDB4MzgsMHg4MCwweEUwLDB4NUIsMHhGRCwKLSAgICAweDIzLDB4NDEs
MHhFMiwweDM4LDB4ODIsMHg1NywweEQ1LDB4NTUsMHg0MywweDQxLDB4QzIsMHgzMCwweEFBLDB4
QTksMHhBRiwweDhGLAotICAgIDB4ODUsMHg1MSwweDAyLDB4MzksMHgyRSwweDNGLDB4M0QsMHgy
OSwweDY3LDB4NzIsMHhDNSwweDU5LDB4QkQsMHhDRCwweDg5LDB4REQsCi0gICAgMHgzMSwweEM1
LDB4MDYsMHg2MiwweDBELDB4MEQsMHgwNSwweDI1LDB4NTMsMHhDRCwweDhDLDB4OEIsMHgwMiww
eEVBLDB4RkYsMHg1RSwKLSAgICAweDkwLDB4QUMsMHhBRCwweDkzLDB4NzgsMHg1RiwweDU1LDB4
NTUsMHhFRSwweDlCLDB4NEIsMHg4MywweDIyLDB4MkIsMHhFQiwweDdFLAotICAgIDB4MEUsMHg5
QywweDJCLDB4N0IsMHgzMCwweEI4LDB4RDcsMHg1NSwweEYxLDB4QkMsMHg0QiwweDgzLDB4MEEs
MHgwQSwweDJCLDB4QjUsCi0gICAgMHgyMywweDUxLDB4MDIsMHg0MSwweEYyLDB4RUMsMHg5RSww
eEFDLDB4MjMsMHg0OSwweDAyLDB4NDksMHg4MCwweENCLDB4RUEsMHgwQywKLSAgICAweDQzLDB4
NTEsMHgyMywweDUxLDB4QTEsMHhFMywweDhGLDB4QTcsMHg0NCwweDUxLDB4MDIsMHg0OSwweEI4
LDB4NjgsMHhGQSwweDVFLAotICAgIDB4MDksMHg4QiwweDAzLDB4NDksMHgzNSwweDM1LDB4MjUs
MHgyNSwweEU5LDB4OEEsMHg0NywweDcyLDB4RjgsMHhGOCwweEZBLDB4RkUsCi0gICAgMHg4Nyww
eDdBLDB4NjcsMHg3MiwweEZGLDB4QUEsMHg4MCwweDAwLDB4ODcsMHg3QSwweDQ2LDB4NzIsMHg3
RSwweDdFLDB4RDgsMHg1QSwKLSAgICAweDg3LDB4N0EsMHgyNiwweDZBLDB4QUIsMHhDQiwweENB
LDB4N0EsMHgyNiwweDcyLDB4QTQsMHg2MSwweDdDLDB4REUsMHhCNiwweDJGLAotICAgIDB4ODcs
MHg3QSwweEU1LDB4NjEsMHhENSwweEQ1LDB4OEIsMHhBQSwweDg3LDB4N0EsMHgyMywweDQxLDB4
RUEsMHg2MCwweEMwLDB4RUEsCi0gICAgMHgyMywweDQxLDB4ODEsMHgyOCwweEI3LDB4QTUsMHgw
RCwweDBCLDB4NDQsMHg0OSwweEUyLDB4MzgsMHhFRiwweDQzLDB4NEYsMHg1NywKLSAgICAweEMy
LDB4MzAsMHg4MiwweDIwLDB4MjAsMHhGRSwweDdBLDB4NUYsMHhFMywweDMwLDB4NjEsMHgyMCww
eDc4LDB4REUsMHhGNywweEZELAotICAgIDB4QzMsMHgyOCwweDgyLDB4MjAsMHhDOSwweEJELDB4
RDUsMHhCNywweEUzLDB4MzAsMHhBMiwweDI4LDB4QTcsMHhFQiwweEZGLDB4QkYsCi0gICAgMHhF
MywweDMwLDB4QTIsMHgyOCwweDBGLDB4RUIsMHhBOCwweDlFLDB4MDMsMHgzOSwweEMzLDB4MzAs
MHhERCwweEI1LDB4RjUsMHg5NSwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4QTIsMHg4QSww
eDBBLDB4QTcsMHgwMywweDQxLDB4RTIsMHgzMCwweEEyLDB4Q0UsMHhCRiwweDJGLAotICAgIDB4
NjUsMHg0OSwweEUyLDB4MzgsMHhENywweEZELDB4QUQsMHgwRiwweDQzLDB4NDksMHhFMywweDMw
LDB4QjYsMHhERiwweDVCLDB4RTAsCi0gICAgMHg4NCwweDQ5LDB4RTIsMHgzOCwweDJELDB4OTcs
MHhCRCwweEZGLDB4MDYsMHg2MiwweDYzLDB4NDksMHgyRCwweDNGLDB4RDUsMHhCNSwKLSAgICAw
eDZGLDB4QUMsMHhFNiwweDU5LDB4MjUsMHgzNSwweDM1LDB4MzUsMHhEMCwweEI0LDB4Q0EsMHg3
MiwweEY4LDB4RjgsMHg1QSwweDYwLAotICAgIDB4QUQsMHg4QiwweDA3LDB4NUEsMHgwMCwweDgw
LDB4RkEsMHg1NywweDRCLDB4N0IsMHg2OCwweDVBLDB4MjAsMHhFQiwweEZELDB4RjUsCi0gICAg
MHhFRCwweDkzLDB4RUEsMHg3MiwweEQ1LDB4RjUsMHhCNSwweDBELDB4MEUsMHg5QywweDRCLDB4
ODMsMHgzRCwweEZELDB4Q0YsMHgwOCwKLSAgICAweDIzLDB4NDksMHgwMywweDQ5LDB4MUIsMHhB
MywweEU4LDB4OTcsMHg0MywweDUxLDB4MjMsMHg1MSwweDc1LDB4QTUsMHg2QiwweEY4LAotICAg
IDB4NDMsMHg1MSwweDAzLDB4NDksMHhBMiwweDdFLDB4REUsMHg3RiwweDY0LDB4NTEsMHhFMiww
eDQ4LDB4RkYsMHhGRiwweEZGLDB4MUYsCi0gICAgMHhFOCwweDgyLDB4MDIsMHg0OSwweDA1LDB4
MDksMHgwMywweDAwLDB4QzcsMHg4MiwweDg3LDB4N0EsMHg1NywweDVGLDB4NzcsMHhGOCwKLSAg
ICAweEE3LDB4N0EsMHg2NiwweDcyLDB4RUIsMHhCQSwweDdBLDB4MUMsMHhBQSwweDlCLDB4Njcs
MHg3MiwweDU1LDB4RDUsMHgyRCwweEMyLAotICAgIDB4NDksMHg5MywweEU1LDB4NjEsMHhBRiww
eEUwLDB4NUMsMHg1NSwweDY3LDB4N0EsMHgyMywweDQ5LDB4QTgsMHhBQSwweDVBLDB4RDcsCi0g
ICAgMHg0NiwweDcyLDB4NDMsMHg0MSwweDAyLDB4MkEsMHg1NSwweDU1LDB4NDcsMHg3MiwweDAz
LDB4NDEsMHhDMCwweEU4LDB4RjUsMHhENSwKLSAgICAweDIzLDB4NDEsMHg4MSwweDI4LDB4QUEs
MHhBOCwweEUwLDB4N0EsMHgyMywweDM5LDB4ODEsMHgyMCwweDY4LDB4N0YsMHg1NywweDVELAot
ICAgIDB4QzMsMHgyOCwweDYxLDB4MTgsMHhERiwweEJGLDB4QjUsMHgyOSwweDAzLDB4MzksMHg4
MiwweDIwLDB4RkQsMHhBRiwweEEzLDB4MDIsCi0gICAgMHhFMiwweDMwLDB4ODIsMHgyMCwweEQ3
LDB4RkEsMHgyRSwweEFDLDB4RTIsMHgzMCwweEEyLDB4MjgsMHhENSwweERGLDB4NUMsMHg3QSwK
LSAgICAweEUzLDB4MzAsMHg4MSwweDI4LDB4M0UsMHgyQiwweEJGLDB4RUQsMHgwNCwweDM5LDB4
QTIsMHgyOCwweDhCLDB4MjIsMHgzRiwweEZELAotICAgIDB4MjQsMHgzOSwweEMzLDB4MzAsMHgz
RCwweEVBLDB4QUUsMHhENSwweDAzLDB4MzksMHhFMiwweDMwLDB4QTAsMHg1NCwweDM4LDB4Mzgs
Ci0gICAgMHg0NCwweDQxLDB4RTIsMHgzOCwweDBGLDB4QkQsMHhCNywweDE3LDB4NjQsMHg0OSww
eDAzLDB4NDEsMHhFMCwweEIwLDB4QjIsMHg1OCwKLSAgICAweDQ0LDB4NDEsMHhFMiwweDM4LDB4
M0YsMHhDQSwweDJBLDB4RjUsMHhBNSwweDUxLDB4RTIsMHgzOCwweDJBLDB4QUYsMHgyQSwweEJE
LAotICAgIDB4MEUsMHhBNCwweEM1LDB4NTksMHgzNSwweDE1LDB4OTUsMHg5NSwweDUyLDB4QzUs
MHg2RiwweEFDLDB4NzAsMHhDMiwweDI5LDB4QjUsCi0gICAgMHg1MiwweEM1LDB4RUEsMHg3Miww
eDVGLDB4QUEsMHhBMCwweDgwLDB4NkYsMHhBNCwweDg5LDB4NjIsMHhENSwweDAwLDB4MDAsMHgw
MCwKLSAgICAweDZGLDB4QTQsMHg2QiwweDgzLDB4MkQsMHgyQSwweDI4LDB4ODAsMHg2RiwweEFD
LDB4Q0QsMHg5MywweEI2LDB4M0UsMHgzQSwweEFBLAotICAgIDB4NjQsMHg1OSwweEUyLDB4NDAs
MHgzRiwweEE5LDB4MEEsMHgwMiwweDQzLDB4NTEsMHgwMiwweDQ5LDB4ODgsMHhBOCwweDY4LDB4
RjgsCi0gICAgMHgyMiwweDQ5LDB4MDMsMHg0OSwweEZFLDB4NUEsMHhGOCwweDdGLDB4Q0IsMHhB
MywweDAzLDB4NDksMHg5NSwweDM1LDB4MzUsMHgyNSwKLSAgICAweDZBLDB4OUIsMHhDNywweDgy
LDB4NUYsMHg3OCwweDc4LDB4RjgsMHg4QSwweDlCLDB4ODYsMHg3QSwweDc3LDB4NTcsMHg5Riww
eDJGLAotICAgIDB4Q0IsMHhBMywweDY2LDB4N0EsMHgzNSwweDBCLDB4RTIsMHg1OCwweDhBLDB4
OUIsMHhBNCwweDU5LDB4NzAsMHg3RSwweDVGLDB4NUYsCi0gICAgMHhFNSwweDYxLDB4NDMsMHg0
OSwweDBBLDB4ODIsMHg2MiwweDVDLDB4ODQsMHg1MSwweDI0LDB4NDEsMHg3OCwweEZGLDB4RkIs
MHhCRiwKLSAgICAweDA2LDB4NjIsMHgwMywweDQxLDB4NUQsMHhGRCwweEEyLDB4NzgsMHhBNCww
eDUxLDB4QzIsMHgzOCwweEVGLDB4RkEsMHg3MCwweDdGLAotICAgIDB4RTMsMHgzOCwweDYxLDB4
MTgsMHhDOCwweEVBLDB4RkUsMHg2RSwweEMyLDB4MzAsMHg2MSwweDE4LDB4REYsMHg1RiwweEQ3
LDB4MjUsCi0gICAgMHhDMiwweDI4LDB4ODEsMHgyMCwweDNELDB4RkEsMHhCOCwweEEyLDB4RTMs
MHgzMCwweEEyLDB4MjgsMHhBMCwweEU3LDB4MEIsMHg4MiwKLSAgICAweEUyLDB4MzAsMHhBMiww
eDI4LDB4RjIsMHhDMiwweDM5LDB4M0YsMHhFMywweDMwLDB4QTIsMHgyOCwweEQ1LDB4RkEsMHhG
MCwweEI4LAotICAgIDB4QzIsMHgzMCwweEEyLDB4MjgsMHhGRCwweEZBLDB4OTYsMHhBNCwweEUy
LDB4MzAsMHhBMiwweDI4LDB4QUYsMHhCNSwweEZGLDB4RkYsCi0gICAgMHgwMywweDMxLDB4QzIs
MHgzMCwweDM1LDB4RkYsMHhFNywweEI1LDB4MjMsMHgzOSwweEMyLDB4MzAsMHhCMCwweEIyLDB4
RjksMHhERCwKLSAgICAweDQ0LDB4NDEsMHhDMiwweDMwLDB4OUYsMHgzRiwweEFGLDB4QkYsMHg4
NSwweDUxLDB4RTMsMHgzMCwweDc4LDB4NzgsMHg1RiwweEQ1LAotICAgIDB4MjQsMHgzOSwweEMz
LDB4MjgsMHhBMiwweEVCLDB4RUIsMHhCRSwweEE1LDB4NTEsMHgwMywweDM5LDB4QkQsMHgwRCww
eEE1LDB4RjUsCi0gICAgMHg4OCwweDZBLDB4NjQsMHg0OSwweDM1LDB4M0YsMHgzNywweDNELDB4
RDAsMHhCNCwweEFELDB4OTMsMHgyQiwweEJGLDB4RjUsMHg1NSwKLSAgICAweDMxLDB4QkQsMHhF
RCwweDlCLDB4ODAsMHhBQiwweEFGLDB4RDUsMHhGMCwweEI0LDB4NEYsMHhBNCwweERGLDB4RkUs
MHhGOCwweEFBLAotICAgIDB4QjAsMHhBQywweDRFLDB4QTQsMHhGRiwweEZGLDB4NUYsMHhFMiww
eDZGLDB4QUMsMHgwRSwweDlDLDB4QTgsMHhBMCwweEZBLDB4N0EsCi0gICAgMHg2NCwweDUxLDB4
MjMsMHg0OSwweDBCLDB4OEIsMHhFRiwweERELDB4NDMsMHg1MSwweDAyLDB4NDksMHhGQywweDVF
LDB4NTcsMHg1NywKLSAgICAweDIzLDB4NDksMHhFMiwweDQwLDB4RUEsMHhCRSwweEJCLDB4QTcs
MHg2QSwweDkzLDB4MjMsMHg0OSwweDA1LDB4MEQsMHgwRCwweDA5LAotICAgIDB4NkEsMHg5Qiww
eDA4LDB4OEIsMHg1QSwweEZFLDB4QUEsMHgwMiwweENCLDB4QTMsMHg2NiwweDcyLDB4MDIsMHhD
MiwweDcyLDB4NUUsCi0gICAgMHgyOSwweDkzLDB4MDUsMHg2MiwweEZDLDB4REYsMHhGRiwweDdG
LDB4NDYsMHg3MiwweDQzLDB4NDksMHhGOCwweDdDLDB4NTcsMHg1NSwKLSAgICAweDg0LDB4NTEs
MHg0NCwweDQ5LDB4RkUsMHhCMywweDk4LDB4RTgsMHg2NCwweDUxLDB4MDMsMHgzOSwweDNBLDB4
RkEsMHg3RSwweDdBLAotICAgIDB4QzUsMHg2MSwweEUyLDB4NDAsMHg2MCwweEUwLDB4RUIsMHhF
NSwweDAzLDB4NDEsMHhDMiwweDMwLDB4RTgsMHg3QywweEZFLDB4N0UsCi0gICAgMHhFMiwweDMw
LDB4NjEsMHgxOCwweDZBLDB4NTgsMHg3QSwweDU3LDB4MjQsMHgzOSwweDYxLDB4MTgsMHhCRCww
eEFELDB4MEIsMHhGRiwKLSAgICAweDIzLDB4MzksMHhBMiwweDI4LDB4RkYsMHg4MiwweEE4LDB4
QjUsMHgwMywweDM5LDB4QTIsMHgyOCwweERGLDB4RkYsMHhBQSwweEI4LAotICAgIDB4MDMsMHgz
OSwweEEyLDB4MjgsMHhBQiwweDhBLDB4QTMsMHhFRiwweDAzLDB4MzEsMHg4MiwweDIwLDB4ODgs
MHhBOCwweEJBLDB4RDcsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweDU2LDB4N0UsMHg4MCww
eDgyLDB4RTMsMHgzMCwweDgxLDB4MjgsMHhGQSwweDVGLDB4RkUsMHgwQSwKLSAgICAweDAzLDB4
MzksMHhBMiwweDI4LDB4RkQsMHhCRCwweEJCLDB4RjgsMHhFMiwweDMwLDB4QTEsMHgyOCwweDhC
LDB4RTIsMHhCQSwweEZGLAotICAgIDB4MDMsMHgzMSwweEMyLDB4MjgsMHhCOSwweDBELDB4OEEs
MHhFQiwweDAzLDB4MzEsMHhDMywweDMwLDB4RkIsMHhGOCwweEQ2LDB4N0QsCi0gICAgMHgwMyww
eDMxLDB4QzIsMHgzMCwweDFGLDB4QUYsMHgyNywweDJFLDB4NjQsMHg0OSwweEMyLDB4MjgsMHgy
RiwweDBGLDB4QUYsMHgyNSwKLSAgICAweDRCLDB4OEIsMHg2NCwweDQ5LDB4QkQsMHgzNSwweDI1
LDB4MkQsMHhFRSwweDlCLDB4NkIsMHg4QiwweEZBLDB4RkEsMHg2MCwweDZBLAotICAgIDB4RUQs
MHg5QiwweDJBLDB4ODMsMHgwMiwweDJCLDB4MkYsMHhCNywweDZGLDB4QTQsMHhDRCwweDkzLDB4
MDIsMHhGNywweEZGLDB4NTUsCi0gICAgMHg2RiwweEFDLDB4Q0QsMHg5MywweEM4LDB4N0YsMHg1
NSwweDU1LDB4MkUsMHg5QywweEFDLDB4OTMsMHgyQSwweEFGLDB4QjUsMHhENSwKLSAgICAweDIz
LDB4NDksMHgwMiwweDQxLDB4RTAsMHhFRSwweEVGLDB4REYsMHgyMywweDQ5LDB4RTIsMHg0MCww
eEZBLDB4NzYsMHhGRiwweEFFLAotICAgIDB4MjMsMHg0OSwweEUyLDB4NDAsMHhGRiwweEFELDB4
OEYsMHhBQSwweDQ5LDB4OTMsMHgwMywweDQ5LDB4MDEsMHgwOSwweEY1LDB4RDUsCi0gICAgMHgy
OSwweDkzLDB4ODQsMHg1OSwweDAwLDB4QTgsMHhFQSwweDdGLDB4QzgsMHg4MiwweDAzLDB4NDEs
MHhBOCwweEFBLDB4RkYsMHhENSwKLSAgICAweDY3LDB4NzIsMHg0MywweDUxLDB4NjAsMHg3RSww
eDU3LDB4REYsMHg4NSwweDUxLDB4MjIsMHg0MSwweDM3LDB4QjcsMHgwMywweEEyLAotICAgIDB4
ODQsMHg0OSwweDQ0LDB4NDksMHg2MiwweDdBLDB4N0UsMHhENywweEU2LDB4NjEsMHgyMywweDQx
LDB4NTcsMHg1NSwweEJELDB4ODIsCi0gICAgMHhDNCwweDU5LDB4MDMsMHgzOSwweDU1LDB4RDUs
MHg3RiwweDVDLDB4MjMsMHg0MSwweEEyLDB4MjgsMHg2OCwweDZFLDB4NkEsMHhFQywKLSAgICAw
eDAzLDB4MzEsMHg2MSwweDIwLDB4RDUsMHhGNywweEVCLDB4QUIsMHg4MSwweDI4LDB4QzIsMHgy
MCwweEU4LDB4QUEsMHg4RiwweEFCLAotICAgIDB4RTMsMHgzMCwweDgxLDB4MjgsMHg5NywweEQ1
LDB4REYsMHg3MCwweDIzLDB4NDEsMHhBMSwweDI4LDB4N0UsMHhGQiwweEVCLDB4ODMsCi0gICAg
MHhFMywweDMwLDB4QTIsMHgyOCwweDI5LDB4RkIsMHhERiwweDM3LDB4MDMsMHgzOSwweDgxLDB4
MjgsMHhERSwweEZGLDB4RjcsMHhFMCwKLSAgICAweDAzLDB4MzEsMHhBMiwweDI4LDB4RUYsMHhC
OSwweEE5LDB4ODksMHgwMywweDM5LDB4QzIsMHgzMCwweEZELDB4NjksMHhFRSwweDc1LAotICAg
IDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGMywweEVCLDB4MEQsMHg4RCwweEUzLDB4MzAsMHhDMiww
eDI4LDB4NzEsMHg0QiwweEVFLDB4NTQsCi0gICAgMHhFMywweDMwLDB4QTEsMHgyOCwweDAyLDB4
ODcsMHg4RiwweEJGLDB4MDMsMHgzMSwweEMyLDB4MjgsMHhGQiwweEI3LDB4QkEsMHhFQiwKLSAg
ICAweDIzLDB4MzksMHhFMiwweDMwLDB4QkQsMHhERiwweDU3LDB4REQsMHg4NCwweDUxLDB4RTIs
MHgzMCwweDM3LDB4MkQsMHgzQiwweDhCLAotICAgIDB4MkQsMHhBNCwweDg0LDB4NTEsMHhBNSww
eEVELDB4MDksMHgwQiwweDhGLDB4QjQsMHhBOCwweDcyLDB4RkYsMHg1NSwweEVBLDB4MDAsCi0g
ICAgMHhDRCwweDlCLDB4NjcsMHg2MiwweEJGLDB4NTUsMHhGRiwweEY4LDB4NEIsMHg4MywweDQ3
LDB4NjIsMHhCQywweDU3LDB4RkYsMHhGRiwKLSAgICAweEFDLDB4OEIsMHg2NywweDYyLDB4MDAs
MHgyRCwweEI1LDB4NTcsMHhBRCwweDkzLDB4MDksMHg3QiwweDAwLDB4MjIsMHhBQSwweEE5LAot
ICAgIDB4MDIsMHg0MSwweEUzLDB4NDAsMHgzMCwweEFFLDB4MDAsMHhCMCwweDIzLDB4NDksMHhF
MiwweDQwLDB4QUYsMHhBQSwweDIyLDB4RTYsCi0gICAgMHgyMywweDQxLDB4RTIsMHg0MCwweDBB
LDB4RTAsMHhFMCwweDlDLDB4NDQsMHg0OSwweEUyLDB4NDAsMHgzNiwweEJELDB4RkYsMHhGNSwK
LSAgICAweEU1LDB4NjEsMHgwMiwweDQxLDB4RTAsMHg1RiwweDU1LDB4NTUsMHgwNiwweDYyLDB4
RTIsMHg0MCwweEI1LDB4MzUsMHgzNSwweDM1LAotICAgIDB4RTUsMHg2MSwweDg0LDB4NTEsMHg1
RSwweEZFLDB4NzgsMHhFMCwweEE1LDB4NTEsMHgyMywweDQxLDB4RTgsMHhFOCwweEVGLDB4RDcs
Ci0gICAgMHgyNiwweDZBLDB4NDQsMHg0OSwweDM1LDB4MDUsMHgyNSwweEQ1LDB4RTQsMHg2MSww
eDgyLDB4MzAsMHhBMCwweEY4LDB4NUMsMHg1NiwKLSAgICAweDg0LDB4NTEsMHhDMiwweDMwLDB4
NzgsMHhEQSwweEZGLDB4RjUsMHgwMywweDM5LDB4ODEsMHgyMCwweDdBLDB4RkEsMHhGOCwweDVG
LAotICAgIDB4QzIsMHgyOCwweDgyLDB4MjgsMHg4MSwweDgzLDB4QTIsMHg4QiwweDY0LDB4NDks
MHhBMiwweDI4LDB4QUQsMHg4OSwweDhCLDB4N0IsCi0gICAgMHgyNCwweDQxLDB4ODEsMHgyOCww
eDg4LDB4QTgsMHhBQSwweEZELDB4NDQsMHg0OSwweEUyLDB4MzgsMHgwRCwweDJGLDB4RDcsMHhE
RCwKLSAgICAweDQ0LDB4NDEsMHhBMSwweDI4LDB4REUsMHg1QywweDdBLDB4RkEsMHgwNCwweDM5
LDB4ODEsMHgyOCwweDAwLDB4QTMsMHhGRiwweEQ3LAotICAgIDB4RTMsMHgzMCwweEEyLDB4Mjgs
MHhDMCwweEY1LDB4RjcsMHhBRCwweEUzLDB4MzAsMHhBMiwweDI4LDB4MEYsMHhBRiwweDU3LDB4
NzgsCi0gICAgMHgwMywweDMxLDB4QTIsMHgyOCwweDJGLDB4RkYsMHhBRCwweEFGLDB4MDMsMHgz
MSwweEMyLDB4MjgsMHg1RiwweDdGLDB4RDUsMHhFMywKLSAgICAweDIzLDB4MzksMHhDMiwweDI4
LDB4RDUsMHhGRCwweEFGLDB4QkYsMHgwMywweDM5LDB4QzIsMHgzMCwweDhCLDB4QkYsMHhBNiww
eEFBLAotICAgIDB4MDMsMHgzOSwweEMyLDB4MzAsMHhGRiwweENBLDB4QUIsMHgyQSwweDRBLDB4
OEIsMHgwMywweDM5LDB4RjUsMHhCNSwweEI1LDB4MzUsCi0gICAgMHgzMSwweEM1LDB4NEEsMHg4
MywweEE5LDB4ODIsMHgwMiwweDAwLDB4MTAsMHhDNSwweDZFLDB4QUMsMHhCRiwweEY3LDB4N0Ms
MHhBMCwKLSAgICAweDZFLDB4QUMsMHgwQSwweDgzLDB4NUMsMHg3MCwweDgwLDB4ODAsMHg2Qiww
eDkzLDB4NjcsMHg2QSwweEQ1LDB4RjcsMHhERSwweEU4LAotICAgIDB4NEEsMHg4MywweDQ3LDB4
NjIsMHg3RSwweEVBLDB4QUEsMHgwMiwweDRCLDB4ODMsMHhBNSwweDQ5LDB4MEYsMHhERiwweDdF
LDB4RjgsCi0gICAgMHgyMywweDQ5LDB4RTMsMHg0MCwweEJGLDB4QUIsMHhBQiwweEJFLDB4MjMs
MHg0OSwweDAzLDB4NDEsMHhGNSwweEJGLDB4NEYsMHg3NywKLSAgICAweDAzLDB4NDEsMHhDMiww
eDM4LDB4MjgsMHgyQywweEFFLDB4RkUsMHgwMywweDQxLDB4RTIsMHgzOCwweEEyLDB4QUYsMHg3
OSwweDY1LAotICAgIDB4MDIsMHg0MSwweEUyLDB4MzgsMHgzMiwweDJCLDB4RkQsMHhBRiwweDI2
LDB4NkEsMHhFMiwweDQwLDB4MzUsMHgzNSwweDM1LDB4MTUsCi0gICAgMHgyNiwweDZBLDB4MjMs
MHg0MSwweEU4LDB4NjgsMHg2OCwweDY4LDB4NDQsMHg0MSwweDAzLDB4MzksMHhBMiwweDM1LDB4
N0QsMHg1RCwKLSAgICAweDQ0LDB4NDEsMHhFMiwweDMwLDB4QkEsMHg2OCwweDRBLDB4QkYsMHhB
NCwweDUxLDB4QTIsMHgyOCwweDcwLDB4N0IsMHg1NywweDdGLAotICAgIDB4QzIsMHgyOCwweDgx
LDB4MjAsMHg4MywweEMyLDB4NjAsMHgwQSwweEUzLDB4MjgsMHg2MSwweDIwLDB4RDcsMHhGNSww
eEFCLDB4MjIsCi0gICAgMHhFMywweDMwLDB4QTIsMHgyOCwweEZGLDB4RjksMHhBQiwweDhBLDB4
MDMsMHgzMSwweEEyLDB4MjgsMHg3MywweDU3LDB4NUYsMHhGRSwKLSAgICAweEMyLDB4MjgsMHg4
MSwweDIwLDB4NUIsMHg3OCwweEJFLDB4QUYsMHgwMywweDQxLDB4ODEsMHgyMCwweDBCLDB4QUQs
MHhGRiwweDU3LAotICAgIDB4NDQsMHg0MSwweEEyLDB4MjgsMHhGQSwweEVBLDB4OEIsMHhFNSww
eEUyLDB4MzAsMHg4MSwweDI4LDB4RUUsMHgzQiwweEZELDB4QTgsCi0gICAgMHgwMywweDM5LDB4
ODEsMHgyMCwweEY1LDB4REUsMHhBRiwweDJBLDB4MjQsMHg0MSwweEEyLDB4MjgsMHg1RiwweDVG
LDB4NUYsMHhFMCwKLSAgICAweDAzLDB4MzksMHg4MiwweDI4LDB4RkYsMHhCRCwweEUzLDB4RUEs
MHgwMywweDMxLDB4ODEsMHgyOCwweEEyLDB4QjMsMHhGRiwweERGLAotICAgIDB4RTIsMHgzMCww
eEEyLDB4MjgsMHgyOCwweEE4LDB4OTUsMHhERiwweDIzLDB4MzksMHhDMiwweDMwLDB4QUIsMHgy
MywweEY3LDB4RkYsCi0gICAgMHg2NSwweDUxLDB4MDMsMHgzOSwweEQ3LDB4QkQsMHhCRCwweDM5
LDB4NkMsMHg5MywweDg1LDB4NTEsMHgzNSwweEI1LDB4QUQsMHhBRCwKLSAgICAweEYwLDB4QkMs
MHgwQSwweDgzLDB4MDIsMHgyRCwweEQ1LDB4NTUsMHhGMCwweEJDLDB4RTksMHg3QSwweDAwLDB4
MDAsMHgwMywweEZELAotICAgIDB4MTAsMHhDNSwweDZFLDB4QUMsMHg3QSwweEVBLDB4QTIsMHg4
QiwweDZFLDB4QUMsMHg2QiwweDhCLDB4N0UsMHhBQSwweEE4LDB4ODAsCi0gICAgMHgyRCwweEE0
LDB4MEEsMHg3QiwweDc1LDB4RTgsMHgwMCwweDAwLDB4NEUsMHhBNCwweDY4LDB4NjIsMHg3Riww
eEZBLDB4ODAsMHgwMCwKLSAgICAweDAzLDB4NDEsMHhFMiwweDQwLDB4MzQsMHgyNywweEY4LDB4
QkIsMHgyMywweDQ5LDB4RTIsMHgzOCwweEVBLDB4N0UsMHg3RiwweDU1LAotICAgIDB4MDMsMHg0
MSwweEMyLDB4MzgsMHhGRiwweEFBLDB4QUYsMHhBQiwweDAzLDB4NDEsMHhDMiwweDM4LDB4QTMs
MHhCQiwweEZFLDB4QkEsCi0gICAgMHgwMywweDQxLDB4RTIsMHgzOCwweEZBLDB4NUYsMHhGNSww
eEZELDB4MDUsMHg2MiwweEUyLDB4NDAsMHgxNSwweDE1LDB4MTUsMHg5NSwKLSAgICAweDQ2LDB4
NkEsMHgwMywweDM5LDB4NjgsMHg2MCwweDYwLDB4NjgsMHgwMywweDM5LDB4RTIsMHgzMCwweDAy
LDB4QUIsMHgyNSwweDNCLAotICAgIDB4MjMsMHgzOSwweEUzLDB4MzgsMHg4QSwweDJCLDB4OEIs
MHhCRiwweDQ0LDB4NDEsMHhFMywweDMwLDB4NkYsMHhGQSwweEEyLDB4QUEsCi0gICAgMHg0NCww
eDM5LDB4RTMsMHgzMCwweDU1LDB4QkYsMHhGQywweEZBLDB4MjQsMHg0MSwweEUzLDB4MzAsMHg3
RiwweEZGLDB4RkEsMHgzQiwKLSAgICAweDIzLDB4MzksMHhFMywweDMwLDB4NTUsMHg3RiwweEZF
LDB4RkEsMHgwMywweDMxLDB4QzMsMHgyOCwweEZGLDB4RkYsMHgyQSwweENBLAotICAgIDB4MDMs
MHgzMSwweEEyLDB4MjAsMHg1NywweDdFLDB4QUEsMHhBQSwweEUzLDB4MjgsMHg4MiwweDIwLDB4
NUQsMHhGNiwweEFBLDB4QTIsCi0gICAgMHgwMywweDM5LDB4ODIsMHgyMCwweDNELDB4QkQsMHg3
NywweDdGLDB4RTMsMHgzMCwweDgyLDB4MjAsMHgwMiwweDBBLDB4MkIsMHgzNSwKLSAgICAweDIz
LDB4NDEsMHhBMiwweDMwLDB4QUEsMHhERSwweEZFLDB4RkUsMHg0NCwweDQxLDB4QzIsMHgzMCww
eEUwLDB4Q0EsMHg3NSwweERELAotICAgIDB4RTIsMHgzMCwweEEyLDB4MzAsMHg4RiwweEFGLDB4
QTksMHgyMiwweDIyLDB4MzksMHhBMiwweDI4LDB4NTUsMHhGNSwweEZELDB4M0YsCi0gICAgMHg0
NCwweDQxLDB4QTEsMHgyOCwweEQ3LDB4REQsMHhGRSwweEEyLDB4NDMsMHg0MSwweEUzLDB4MzAs
MHhCQiwweDM1LDB4QTksMHg4QiwKLSAgICAweDQ3LDB4NjIsMHgyMywweDQxLDB4RjUsMHg5NSww
eDI1LDB4MkIsMHhFOSwweDdBLDB4QzUsMHg1OSwweDA5LDB4MkIsMHg4QSwweDJBLAotICAgIDB4
MEEsMHg4MywweEE5LDB4NzIsMHgyQSwweDJCLDB4RkIsMHhGRiwweDJCLDB4ODMsMHhDOSwweDdB
LDB4MkYsMHgyOCwweEVCLDB4RkYsCi0gICAgMHhDRiwweEI0LDB4MEEsMHg4MywweDJELDB4REQs
MHg1NSwweDU1LDB4NkUsMHhBQywweDBBLDB4ODMsMHgwMCwweDBBLDB4QjUsMHg1NSwKLSAgICAw
eDZFLDB4QUMsMHg0QSwweDhCLDB4MDAsMHgwMCwweDAwLDB4MjUsMHhBRiwweEI0LDB4NEUsMHhB
QywweDdGLDB4QUIsMHgwQSwweDBCLAotICAgIDB4MDMsMHg0MSwweEMyLDB4MzgsMHhBMCwweEMw
LDB4RTgsMHhGRSwweDAzLDB4NDEsMHhFMiwweDM4LDB4RDUsMHhBRCwweEQxLDB4NzksCi0gICAg
MHgwMiwweDQxLDB4RTIsMHgzOCwweDdELDB4NUQsMHg1NSwweEY1LDB4MDMsMHg0MSwweEUyLDB4
MzgsMHg3NywweDU3LDB4NUQsMHhENywKLSAgICAweEUyLDB4MzgsMHhDMiwweDM4LDB4MDAsMHgw
MCwweDAwLDB4QTgsMHgwNiwweDYyLDB4RTIsMHgzOCwweDk1LDB4MTUsMHg5NSwweDE1LAotICAg
IDB4NjcsMHg3MiwweDAzLDB4NDEsMHg2OCwweDY4LDB4NzgsMHg3OCwweDAzLDB4MzksMHhFMiww
eDMwLDB4NUUsMHhFRSwweERGLDB4RjcsCi0gICAgMHgwMiwweDM5LDB4RTMsMHgzMCwweERGLDB4
OTksMHg1NSwweDc1LDB4MjMsMHgzOSwweEUzLDB4MzAsMHgwQiwweEE3LDB4RkYsMHhENSwKLSAg
ICAweDI0LDB4MzksMHhFMywweDM4LDB4NjgsMHhCQiwweEZGLDB4NUYsMHgyNCwweDQxLDB4RTMs
MHgzMCwweEZGLDB4MjksMHg4RiwweEFFLAotICAgIDB4MjQsMHg0MSwweDAzLDB4MzksMHg3MSww
eDU3LDB4N0EsMHg1QywweDI0LDB4MzksMHhFMiwweDMwLDB4RkYsMHhGQSwweEJELDB4QUUsCi0g
ICAgMHgwMywweDMxLDB4RTMsMHgzMCwweDYwLDB4QUUsMHgyRSwweDAzLDB4MDMsMHgzMSwweEMy
LDB4MjgsMHhGRiwweEVCLDB4QzgsMHgwMCwKLSAgICAweDAzLDB4MzEsMHhBMiwweDIwLDB4N0Us
MHhGQiwweEJBLDB4QTgsMHhFMiwweDI4LDB4QTIsMHgyOCwweDU1LDB4NjcsMHg3MywweEFBLAot
ICAgIDB4MDMsMHgzMSwweDgxLDB4MjAsMHhBMiwweEFELDB4REYsMHg3RiwweDAzLDB4MzksMHg4
MiwweDIwLDB4QTIsMHhBOCwweDBCLDB4RjUsCi0gICAgMHgwMywweDMxLDB4QzIsMHgzMCwweEY3
LDB4MkUsMHg4MiwweEE5LDB4MjMsMHgzOSwweEMyLDB4MjgsMHhCOSwweEE5LDB4QUQsMHgyRiwK
LSAgICAweDIzLDB4NDEsMHhDMiwweDI4LDB4QTAsMHhGOCwweERDLDB4RkUsMHhBNSwweDUxLDB4
QzIsMHgyOCwweEZGLDB4QjcsMHgzRCwweDJGLAotICAgIDB4NjgsMHg2QSwweEM1LDB4NTEsMHhC
RCwweDNELDB4QTksMHhCRiwweEM5LDB4NzIsMHg0OCwweDZBLDB4QUIsMHhBQiwweEFGLDB4M0Qs
Ci0gICAgMHhFOSwweDdBLDB4ODksMHg3MiwweDhGLDB4RkYsMHhCNSwweEJCLDB4RUEsMHg4Miww
eEE5LDB4N0EsMHgzQiwweEI5LDB4RkIsMHhGNywKLSAgICAweDBBLDB4ODMsMHhDOSwweDcyLDB4
M0EsMHhCRiwweEU5LDB4QUIsMHgwQSwweDgzLDB4QzksMHg3QSwweEEyLDB4MEUsMHhGNywweERB
LAotICAgIDB4NEIsMHg4QiwweEVBLDB4N0EsMHgyRiwweDVELDB4RkQsMHg1NSwweDhGLDB4QUMs
MHgwQSwweDgzLDB4MEIsMHhCRCwweDU1LDB4NTUsCi0gICAgMHgwMywweDM5LDB4QzIsMHgzOCww
eEU3LDB4QkYsMHhFQiwweEVCLDB4MDMsMHg0MSwweEUyLDB4MzgsMHg1QiwweDdGLDB4NTUsMHhE
NSwKLSAgICAweDIyLDB4MzksMHhDMiwweDM4LDB4RjcsMHhERCwweEY2LDB4RkYsMHhFMiwweDM4
LDB4QzIsMHgzOCwweEFBLDB4RUEsMHgwMiwweDBBLAotICAgIDB4RTIsMHgzOCwweEMyLDB4Mzgs
MHg4MCwweEMwLDB4REEsMHgyQSwweDg0LDB4NTEsMHhDMiwweDMwLDB4MzUsMHg5NSwweEQ3LDB4
NTcsCi0gICAgMHgyNiwweDZBLDB4MDMsMHgzOSwweDc4LDB4NzgsMHg3QSwweDY4LDB4MDMsMHgz
OSwweEUzLDB4MzAsMHg1NywweDU2LDB4NUEsMHhCRCwKLSAgICAweEUyLDB4MzAsMHhDMywweDMw
LDB4MEYsMHgyMywweDAzLDB4ODIsMHgwMywweDMxLDB4RTMsMHgzMCwweERELDB4OTcsMHhGOSww
eDU1LAotICAgIDB4MDMsMHgzMSwweEEyLDB4MzAsMHg4MiwweDJBLDB4QTIsMHhDQSwweDAzLDB4
MzksMHhDMywweDMwLDB4MEEsMHhBRSwweDJBLDB4MkEsCi0gICAgMHgyMywweDM5LDB4RTMsMHgz
MCwweDgyLDB4QUYsMHhBQSwweEY3LDB4RTMsMHgzOCwweDI0LDB4MzEsMHhBQiwweEVCLDB4RUUs
MHhDQSwKLSAgICAweDIzLDB4MzksMHhFMywweDM4LDB4RkYsMHgyRSwweEFFLDB4RkUsMHgyMyww
eDM5LDB4RTIsMHgzMCwweEZBLDB4OEYsMHg3RSwweEU4LAotICAgIDB4MjMsMHgzOSwweEUzLDB4
MzAsMHg3RiwweEE4LDB4QUEsMHhCRiwweDIzLDB4MzksMHhDMiwweDI4LDB4RjcsMHhCQSwweEVB
LDB4OEEsCi0gICAgMHgwMywweDMxLDB4QTIsMHgyMCwweDdGLDB4QkEsMHg4OCwweDAwLDB4MDMs
MHgzMSwweDgxLDB4MjAsMHhENywweEZFLDB4QUEsMHgwOCwKLSAgICAweEUzLDB4MzAsMHg4Miww
eDIwLDB4MkQsMHhGRiwweEFFLDB4MDAsMHgyNCwweDM5LDB4QTIsMHgyMCwweDJGLDB4RjUsMHhC
RiwweDJBLAotICAgIDB4NjUsMHg0MSwweEMyLDB4MjgsMHhGNywweEY1LDB4QUYsMHgyRSwweDI3
LDB4NjIsMHgwMywweDMxLDB4QUQsMHgyQiwweDJBLDB4MDIsCi0gICAgMHg2OCwweDZBLDB4RTYs
MHg1OSwweEJELDB4QUQsMHgyRCwweDBGLDB4QzksMHg3MiwweDQ4LDB4NkEsMHhCRiwweEJBLDB4
OEIsMHhCNywKLSAgICAweEM5LDB4NzIsMHg4OCwweDcyLDB4QUEsMHhGRiwweEJFLDB4NkQsMHhD
OSwweDdBLDB4QTgsMHg3MiwweDI4LDB4ODEsMHg4RiwweDdCLAotICAgIDB4QzksMHg3QSwweEE5
LDB4NzIsMHhEMCwweDZCLDB4MjAsMHgwMiwweEU5LDB4N0EsMHhBOSwweDcyLDB4QUEsMHhCNiww
eDJELDB4QkEsCi0gICAgMHgwQSwweDgzLDB4QTksMHg3MiwweDJBLDB4QjcsMHhGNywweEZGLDB4
MEEsMHg4MywweEM5LDB4N0EsMHg4QiwweDhCLDB4QTUsMHg5QiwKLSAgICAweDAzLDB4NDEsMHhD
MiwweDM4LDB4QUUsMHhBRSwweEVCLDB4RkIsMHgwMywweDQxLDB4QzIsMHgzOCwweEZCLDB4RUEs
MHhCQiwweERFLAotICAgIDB4RTIsMHgzOCwweEMyLDB4MzgsMHg4MCwweDI2LDB4QUIsMHgzMiww
eEUyLDB4MzgsMHhDMiwweDM4LDB4OEEsMHhFMCwweEIwLDB4QjAsCi0gICAgMHhFMiwweDM4LDB4
QTIsMHgzMCwweDA4LDB4MkEsMHg2MiwweEZDLDB4RTUsMHg1OSwweEMyLDB4MzgsMHg5NSwweDE1
LDB4OTUsMHg1NSwKLSAgICAweEE4LDB4NzIsMHhFMywweDM4LDB4NzgsMHg3OCwweDVFLDB4NTUs
MHgwMywweDM5LDB4RTMsMHgzMCwweEY2LDB4RDcsMHhGQywweEQ1LAotICAgIDB4MDMsMHgzMSww
eEUzLDB4MzAsMHg3RCwweEZCLDB4RDcsMHg1NSwweEUzLDB4MzAsMHhDMiwweDI4LDB4MjAsMHgy
QSwweEIyLDB4MEIsCi0gICAgMHgwMywweDMxLDB4RTMsMHgzMCwweDU1LDB4NTUsMHhCNSwweEVE
LDB4MDMsMHgzMSwweEMyLDB4MzAsMHhBQSwweEY3LDB4QUUsMHhCQSwKLSAgICAweDAzLDB4MzEs
MHhDMiwweDMwLDB4MkUsMHg4QiwweEJGLDB4M0UsMHgwMywweDMxLDB4QzMsMHgzMCwweDlBLDB4
QTgsMHhBQiwweEFBLAotICAgIDB4RTMsMHgzOCwweDI0LDB4MzEsMHhBQSwweEFBLDB4RUUsMHhB
QSwweDI0LDB4MzksMHhFMywweDMwLDB4RkIsMHhFRSwweEFGLDB4RUIsCi0gICAgMHgyNCwweDM5
LDB4MDMsMHgzOSwweDU3LDB4NzUsMHhERCwweEQ1LDB4MjQsMHgzOSwweEUyLDB4MzAsMHhBMyww
eEY2LDB4QTgsMHgwQSwKLSAgICAweDAzLDB4MzksMHg2NCwweDMxLDB4QUEsMHhBOCwweDhBLDB4
MkEsMHg2NCwweDQxLDB4MDMsMHgzOSwweDU3LDB4RkYsMHhBRiwweDNELAotICAgIDB4ODUsMHg0
OSwweDAzLDB4MzEsMHg1NSwweERGLDB4QUIsMHgwOCwweEM2LDB4NTEsMHgwMywweDMxLDB4NTUs
MHhGRCwweEJCLDB4MjIsCi0gICAgMHgwNywweDYyLDB4NDQsMHg0MSwweDk1LDB4QUQsMHgwQiww
eDAwLDB4NDcsMHg2MiwweEU2LDB4NTksMHg5NSwweEFELDB4MEUsMHg4MiwKLSAgICAweDg4LDB4
NzIsMHgyNywweDYyLDB4QkQsMHgyRiwweDJGLDB4OEYsMHhBOCwweDcyLDB4NDgsMHg2MiwweEJG
LDB4QUUsMHgzRSwweDI3LAotICAgIDB4QzksMHg3MiwweDg4LDB4NkEsMHhCNSwweDlELDB4RUQs
MHhGMiwweEE5LDB4NzIsMHg2OCwweDZBLDB4QTAsMHgyMCwweEE4LDB4N0MsCi0gICAgMHhDOSww
eDcyLDB4ODksMHg3MiwweDBFLDB4RkUsMHhCRiwweDJELDB4QzksMHg3QSwweDg4LDB4NkEsMHgw
MiwweDJBLDB4RkUsMHg2MywKLSAgICAweEVBLDB4N0EsMHhBOSwweDcyLDB4MkYsMHhFMiwweDdE
LDB4RjUsMHgwQSwweDdCLDB4QTksMHg3MiwweEIyLDB4QUIsMHhFRCwweEJGLAotfTsKLQotc3Rh
dGljIGNvbnN0IHNpemVfdCBwaXhlbF8zX3dpZHRoID0gNjQ7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90
IHBpeGVsXzNfaGVpZ2h0ID0gNjQ7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzNfc2l6ZSA9
IDIwNDg7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwaXhlbF8zX2RhdGFbMjA0OF0gPQot
ewotICAgIDB4MjYsMHg1QSwweDQzLDB4NDEsMHhGRSwweDdCLDB4RkEsMHhCNCwweDA1LDB4NTIs
MHgyMywweDM5LDB4RkYsMHhGRiwweDRGLDB4RkUsCi0gICAgMHhBNSwweDQ5LDB4NDMsMHgzOSww
eERCLDB4NjQsMHg1RSwweDhCLDB4MjYsMHg2QSwweDQ0LDB4NDEsMHhGRiwweDdGLDB4NjksMHgw
MywKLSAgICAweDJBLDB4ODMsMHg0NCwweDQxLDB4NTUsMHg3NywweDU1LDB4MDIsMHg2RSwweEE0
LDB4ODQsMHg0OSwweDU1LDB4NTUsMHg1NSwweDBBLAotICAgIDB4NTIsMHhDNSwweEE1LDB4NDks
MHg1NSwweDU1LDB4NTUsMHgwMCwweEY0LDB4RTUsMHhDNSwweDUxLDB4NzUsMHg1NSwweDU1LDB4
MzgsCi0gICAgMHg5NywweEVFLDB4NjQsMHg0OSwweDVELDB4NTUsMHhGRiwweDAwLDB4QjYsMHhF
RSwweDg0LDB4NDksMHg1NSwweDU1LDB4QkIsMHgwMCwKLSAgICAweDc1LDB4RUUsMHg2NCwweDQ5
LDB4MEQsMHgzNSwweDBBLDB4MDAsMHhENywweEY2LDB4MzQsMHhFNiwweEEyLDB4NkMsMHg5RSww
eDI3LAotICAgIDB4RjcsMHhGNiwweDU1LDB4RTYsMHgwMiwweEVELDB4RDcsMHhCQSwweDM4LDB4
RkYsMHg3NiwweEVFLDB4QUEsMHhBQiwweEE3LDB4QUIsCi0gICAgMHhENywweEY2LDB4MzQsMHhF
NiwweDYwLDB4RTAsMHhGOCwweDUwLDB4MTQsMHhERSwweDkyLDB4RDUsMHhBMiwweDAxLDB4MDEs
MHg4MywKLSAgICAweEI2LDB4RUUsMHg4QiwweDhCLDB4NTcsMHgwMCwweDAwLDB4MDAsMHhCNiww
eEVFLDB4RUQsMHg5QiwweEY1LDB4MDAsMHgwMCwweDAwLAotICAgIDB4QjYsMHhGNiwweDUxLDB4
QzUsMHhGNSwweDAwLDB4MDAsMHgwMCwweEIzLDB4RDUsMHhDNSwweDY5LDB4RDQsMHg1NCwweDU0
LDB4NTYsCi0gICAgMHhCNiwweEY2LDB4RTUsMHg2OSwweDAyLDB4MDMsMHgwRCwweDA1LDB4RDYs
MHhGNiwweEI2LDB4RjYsMHhENSwweDE1LDB4MzcsMHhBRSwKLSAgICAweEQ3LDB4RjYsMHg0Niww
eDdBLDB4MDAsMHgwMCwweEMwLDB4NzAsMHhGNywweEZFLDB4NjcsMHg3QSwweDk2LDB4MTcsMHgz
NSwweDM1LAotICAgIDB4MTgsMHhGNywweEQ3LDB4RjYsMHg3MiwweEY4LDB4RjAsMHhGMCwweEY3
LDB4RjYsMHhCNiwweEY2LDB4RUIsMHhBQSwweDJFLDB4Q0EsCi0gICAgMHhENywweEY2LDB4MTQs
MHhERSwweEUwLDB4NjAsMHhEQywweDM2LDB4RDcsMHhGNiwweEQzLDB4REQsMHhCOSwweDgyLDB4
MDAsMHgwMCwKLSAgICAweDE4LDB4RkYsMHhCNiwweEVFLDB4N0QsMHhGNSwweDI1LDB4M0YsMHgz
OCwweEZGLDB4QjcsMHhFRSwweENCLDB4RUIsMHhGRiwweDdDLAotICAgIDB4QjYsMHhFRSwweDcx
LDB4Q0QsMHhGMCwweEQ4LDB4RDIsMHhGMiwweDk2LDB4RUUsMHgzMSwweEM1LDB4QUIsMHg4Riww
eDhCLDB4ODksCi0gICAgMHhENiwweEY2LDB4QjYsMHhFNiwweDhBLDB4MjIsMHg4OCwweDAyLDB4
RjcsMHhGNiwweEI2LDB4RUUsMHg1RiwweDVFLDB4N0EsMHhGQSwKLSAgICAweEY3LDB4RjYsMHhC
NiwweEVFLDB4RUQsMHhBQiwweEE5LDB4MkIsMHg5NiwweEVFLDB4NDQsMHg1MSwweDU2LDB4NTQs
MHg1NCwweDVDLAotICAgIDB4NkUsMHhCNCwweDIzLDB4NDksMHgyRCwweEFELDB4RkQsMHhGRiww
eDE0LDB4RTYsMHgwNiwweDZBLDB4MDIsMHhGNywweEZELDB4NTUsCi0gICAgMHg1NSwweEVFLDB4
RTYsMHg3MSwweDU4LDB4NTcsMHg1NSwweDU1LDB4MTcsMHhGRiwweDg3LDB4OEEsMHgyNSwweDI1
LDB4MjUsMHgwNSwKLSAgICAweDM4LDB4RkYsMHhENywweEY2LDB4RkEsMHhFQSwweEEyLDB4NkUs
MHhGNywweEY2LDB4RjMsMHhERCwweEEwLDB4QTgsMHg3OCwweDI4LAotICAgIDB4RjcsMHhGNiww
eEQzLDB4REQsMHgwQiwweDAyLDB4MDksMHgyRiwweEY3LDB4RjYsMHhCNywweEVFLDB4RkUsMHhF
RSwweEJBLDB4MkEsCi0gICAgMHhGNywweEY2LDB4RDcsMHhGNiwweDE1LDB4QjUsMHg4QiwweEEy
LDB4MTgsMHhGRiwweDc2LDB4RUUsMHhGOCwweDU4LDB4NUEsMHg3QSwKLSAgICAweDc1LDB4RUUs
MHgxMCwweEM1LDB4RTIsMHhFMiwweEUyLDB4NjIsMHg1NSwweEVFLDB4RUYsMHhCQywweDBELDB4
MDksMHgwQiwweDAyLAotICAgIDB4RDYsMHhGNiwweEI2LDB4RUUsMHgyMiwweDA4LDB4MDAsMHgw
MSwweEY3LDB4RjYsMHhCNiwweEVFLDB4QUEsMHhGQSwweEZFLDB4QkEsCi0gICAgMHhGNywweEY2
LDB4OTYsMHhFRSwweDIyLDB4MDIsMHhBQSwweEFBLDB4MzQsMHhFRSwweDAyLDB4NDEsMHhGOCww
eEZDLDB4NUMsMHg1NiwKLSAgICAweEE4LDB4ODIsMHhFMiwweDM4LDB4QTgsMHhCQSwweEFGLDB4
Q0QsMHhBQiwweEEzLDB4NDMsMHg0OSwweEZGLDB4QkYsMHgwQiwweDJELAotICAgIDB4MEQsMHhC
NCwweDg3LDB4ODIsMHg1RiwweEYyLDB4NzIsMHhCNiwweEY3LDB4RkUsMHhBOCwweDgyLDB4MEQs
MHgwOSwweDAyLDB4MDAsCi0gICAgMHgzOCwweEZGLDB4OTYsMHhFRSwweDdBLDB4N0UsMHg0QSww
eDYzLDB4MTgsMHhGRiwweEY4LDB4RjYsMHhERCwweDkwLDB4QjAsMHhCMCwKLSAgICAweDE4LDB4
RkYsMHg1NSwweEU2LDB4QjcsMHhCNiwweEJDLDB4QjgsMHgxOCwweEZGLDB4RDcsMHhGNiwweERG
LDB4RUUsMHhGQiwweEJBLAotICAgIDB4RjcsMHhGNiwweDc1LDB4RUUsMHg4MCwweDgwLDB4NjAs
MHg1RSwweEQ3LDB4RjYsMHhGNCwweERELDB4QTIsMHhFMiwweEIyLDB4RDgsCi0gICAgMHg3Niww
eEVFLDB4QUUsMHhCQywweDYyLDB4NjIsMHhFMiwweDZBLDB4OTYsMHhFRSwweDUyLDB4Q0QsMHgw
QiwweDIyLDB4QkYsMHhCNSwKLSAgICAweDk1LDB4RUUsMHhFOCwweDgyLDB4MkQsMHg1NSwweDU1
LDB4NTUsMHhENiwweEY2LDB4RTgsMHg4MiwweDAwLDB4MEYsMHg1NSwweDU1LAotICAgIDB4RDYs
MHhGNiwweEU4LDB4OEEsMHgwMCwweDAwLDB4MEIsMHhENSwweDk2LDB4RjYsMHgyMywweDQxLDB4
NTYsMHg1NiwweDVDLDB4NUEsCi0gICAgMHhFOCwweDkyLDB4RTMsMHgzOCwweENELDB4NkQsMHhF
MywweEUyLDB4QzgsMHg4MiwweEUyLDB4MzgsMHgyRCwweEQ1LDB4RDUsMHhERSwKLSAgICAweDRB
LDB4OTMsMHg4NCwweDU5LDB4MDgsMHhFQSwweDdGLDB4NUYsMHhENywweEY2LDB4ODgsMHg3QSww
eDBELDB4MjUsMHg5NSwweEQ1LAotICAgIDB4MzgsMHhGRiwweDU1LDB4RUUsMHhGMCwweDk4LDB4
OUMsMHg5RCwweDE4LDB4RkYsMHhGOCwweEY2LDB4RjAsMHhGOCwweEY4LDB4NTgsCi0gICAgMHgx
OCwweEZGLDB4RDcsMHhGNiwweDc2LDB4QkUsMHhCRiwweEFCLDB4MTgsMHhGRiwweDk2LDB4RUUs
MHg4MiwweEM4LDB4NjgsMHg3QSwKLSAgICAweEI2LDB4RjYsMHg1NSwweEU2LDB4RjgsMHg3Niww
eEY3LDB4RDcsMHg5NiwweEVFLDB4OTIsMHhENSwweEIwLDB4RDAsMHhEMCwweEY4LAotICAgIDB4
RDMsMHhERCwweEFGLDB4QkMsMHg2MCwweDYwLDB4NzAsMHhEQywweDkyLDB4RDUsMHhBRiwweEJD
LDB4MDMsMHg4QiwweEE5LDB4QUQsCi0gICAgMHhBNywweDdBLDB4MjUsMHg2QSwweEFBLDB4QTIs
MHgzRCwweDU3LDB4QzcsMHg4MiwweDQ1LDB4NzIsMHgwQSwweEJCLDB4RUUsMHhCRCwKLSAgICAw
eEU4LDB4OEEsMHg4NywweDdBLDB4MDIsMHhBQiwweEQ1LDB4NzcsMHhFOCwweDgyLDB4QzIsMHgz
OCwweEY4LDB4NzgsMHg3MCwweEUyLAotICAgIDB4QzgsMHg4QSwweDQ0LDB4NTEsMHhBMiwweEUz
LDB4QUQsMHhENSwweDA2LDB4NkEsMHgwMywweDQxLDB4RkMsMHhGRiwweDVDLDB4NTYsCi0gICAg
MHgyNiwweDcyLDB4MDMsMHg0MSwweEIwLDB4MkYsMHgyNSwweEFELDB4QTgsMHg4MiwweDQ0LDB4
NDksMHgwMiwweDY4LDB4NUYsMHg1RiwKLSAgICAweDk2LDB4RjYsMHg0NywweDdBLDB4MEIsMHgy
RCwweDU1LDB4NTUsMHhGNywweEY2LDB4ODgsMHg3QSwweDAwLDB4MDAsMHgwQiwweEQ1LAotICAg
IDB4RjgsMHhGRSwweEVDLDB4QTMsMHgwMCwweDAwLDB4MDAsMHgyRCwweEY3LDB4RjYsMHg1NSww
eEVFLDB4RjgsMHg1RSwweDdFLDB4NTcsCi0gICAgMHg3NiwweEVFLDB4MzUsMHhFNiwweDM4LDB4
NkEsMHg4MCwweDIwLDB4NzYsMHhFRSwweEQzLDB4REQsMHhGMCwweEY4LDB4OUUsMHhENCwKLSAg
ICAweDc1LDB4RUUsMHg0RCwweEFDLDB4RDYsMHg3RiwweDdFLDB4QTAsMHgzMSwweENELDB4Qzgs
MHg3QSwweDAwLDB4MDMsMHgwQiwweEI3LAotICAgIDB4NjYsMHg3MiwweDQ2LDB4NzIsMHg1Nyww
eEFFLDB4MEEsMHgyOSwweDY2LDB4NzIsMHgyNiwweDcyLDB4RkUsMHhBQSwweDgyLDB4MDAsCi0g
ICAgMHhBNywweDgyLDB4NDYsMHg3MiwweDI5LDB4RDUsMHhERiwweEZGLDB4MDksMHg4QiwweDY2
LDB4N0EsMHg3RiwweEFGLDB4RDUsMHgxNSwKLSAgICAweDg3LDB4ODIsMHhBMiwweDMwLDB4RkEs
MHg3OCwweDVDLDB4NUMsMHgyMywweDQxLDB4QTIsMHgyOCwweEFFLDB4M0IsMHgzNSwweDg3LAot
ICAgIDB4MDYsMHg2QSwweEUzLDB4MzgsMHgwRiwweEVCLDB4RkQsMHg3RiwweDg1LDB4NTEsMHgw
MywweDM5LDB4QUIsMHg0OSwweEZELDB4RjUsCi0gICAgMHhDOCwweDhBLDB4MjMsMHg0MSwweEEz
LDB4RkQsMHg1RCwweEQ1LDB4QzksMHg4QSwweEM1LDB4NjEsMHhFMiwweDhCLDB4QjUsMHg1NywK
LSAgICAweEVDLDB4QUIsMHg4NCwweDUxLDB4M0YsMHhERiwweDU3LDB4NTUsMHhGNCwweEU1LDB4
MDYsMHg2QSwweDAwLDB4MDksMHgzNSwweEQ1LAotICAgIDB4NTUsMHhFRSwweDkyLDB4RDUsMHgw
QSwweEFGLDB4QkYsMHhCNSwweDU1LDB4RUUsMHhCMywweERELDB4QjgsMHhCQSwweEFBLDB4QUQs
Ci0gICAgMHhCNiwweEY2LDB4RDMsMHhERCwweDZBLDB4QTIsMHhDMywweEFBLDB4RjMsMHhERCww
eDJELDB4QUMsMHg1QywweDgwLDB4QTgsMHg4OCwKLSAgICAweDQ2LDB4NzIsMHg2MywweDU5LDB4
MkQsMHhENSwweDU1LDB4NTUsMHg2NiwweDdBLDB4NDMsMHg1MSwweDAwLDB4MEIsMHhENSwweEQ1
LAotICAgIDB4ODcsMHg3QSwweDY0LDB4NTksMHgwMCwweDAwLDB4MEIsMHhENSwweENDLDB4QUIs
MHg4NywweDdBLDB4MTUsMHgyNSwweDBELDB4QTksCi0gICAgMHgyOSwweDkzLDB4QzIsMHgzOCww
eDVFLDB4NUUsMHg1QywweDVDLDB4NDQsMHg0OSwweEMyLDB4MzAsMHhGNSwweEI1LDB4ODEsMHg4
QSwKLSAgICAweDg0LDB4NTEsMHhFMiwweDM4LDB4NTcsMHhFRiwweEJCLDB4MDMsMHhDNiwweDYx
LDB4QTIsMHgzMCwweEZELDB4RkYsMHhGRSwweEQ4LAotICAgIDB4NjUsMHg0OSwweDAzLDB4NDEs
MHgyQSwweEY5LDB4RTEsMHhFRCwweEM2LDB4NjEsMHgwMywweDQxLDB4MEEsMHhFNSwweEZGLDB4
NUUsCi0gICAgMHhBNSwweDUxLDB4MDMsMHgzOSwweEFBLDB4QkUsMHg3NSwweEZGLDB4QTgsMHg4
MiwweDIzLDB4NDEsMHgyRiwweEE1LDB4M0QsMHhCNSwKLSAgICAweDE0LDB4RTYsMHg4NywweDdB
LDB4MDMsMHgwOSwweDg1LDB4QjUsMHg5NiwweEVFLDB4MTAsMHhDNSwweEFGLDB4MEQsMHgyNSww
eDc1LAotICAgIDB4NzUsMHhFRSwweDhGLDB4QjQsMHgwMCwweDAwLDB4MDAsMHg1NywweDU1LDB4
RUUsMHhGMSwweEJDLDB4RTgsMHg4MCwweEJBLDB4N0QsCi0gICAgMHg4NCwweDU5LDB4MjMsMHg1
MSwweEZFLDB4RjcsMHhBRCwweDNFLDB4ODQsMHg1OSwweDIzLDB4NTEsMHg4QiwweEVBLDB4RkMs
MHg3RSwKLSAgICAweDZCLDB4OUIsMHgyMywweDUxLDB4NTUsMHg1NSwweDk1LDB4MzUsMHhBQiww
eEEzLDB4NjcsMHg3QSwweDIxLDB4QUEsMHhBOCwweEEwLAotICAgIDB4RTgsMHg4QSwweDAzLDB4
NDEsMHg1OCwweDc4LDB4RTgsMHhFOCwweDY0LDB4NTEsMHhFMiwweDM4LDB4RUMsMHhFNiwweEI3
LDB4RjQsCi0gICAgMHg4NSwweDUxLDB4MDMsMHg0MSwweDg1LDB4ODUsMHgzNSwweDk1LDB4QTUs
MHg1OSwweEMzLDB4MzAsMHhEQSwweERFLDB4NUMsMHhERSwKLSAgICAweEE1LDB4NTksMHgwMyww
eDM5LDB4RUIsMHhGQiwweDcwLDB4N0IsMHg0NCwweDQxLDB4RTMsMHgzOCwweEVBLDB4RUIsMHhD
MSwweEExLAotICAgIDB4NjUsMHg0MSwweEUzLDB4MzgsMHhCMiwweEZGLDB4RkYsMHhERCwweEM1
LDB4NTksMHgyMywweDQxLDB4M0YsMHgzRCwweEZELDB4M0IsCi0gICAgMHgzMSwweENELDB4MDYs
MHg2QSwweDM1LDB4QjUsMHhGNSwweEQ1LDB4MzUsMHhFNiwweEFGLDB4QkMsMHg3RCwweDU1LDB4
QUUsMHg4MiwKLSAgICAweDkzLDB4Q0QsMHg0RSwweEFDLDB4MkQsMHg4QSwweEEwLDB4QTAsMHgz
MiwweEM1LDB4MEUsMHg5QywweEEwLDB4QUEsMHhCRSwweEVELAotICAgIDB4ODQsMHg1OSwweDIz
LDB4NTEsMHg4QiwweEZFLDB4RkUsMHg1NywweDQzLDB4NTksMHgyMywweDQ5LDB4RjAsMHg3Qyww
eERELDB4QkQsCi0gICAgMHhBQiwweEEzLDB4NDQsMHg1OSwweDM1LDB4MjUsMHgwNSwweDA1LDB4
MEMsMHhBQywweEU4LDB4OEEsMHg3QiwweDdFLDB4NzgsMHg2QSwKLSAgICAweEE3LDB4ODIsMHgy
NiwweDZBLDB4NTQsMHhGRSwweDlFLDB4M0YsMHg2NywweDdBLDB4QTIsMHgzMCwweERDLDB4NTgs
MHg3MCwweDYwLAotICAgIDB4NDQsMHg0OSwweEMyLDB4MzAsMHgyQiwweEFGLDB4OTUsMHhGNSww
eDY1LDB4NTEsMHhBMiwweDMwLDB4RkMsMHhEQSwweEZFLDB4N0EsCi0gICAgMHg0NCwweDQ5LDB4
QzMsMHgzMCwweEUyLDB4RTIsMHhGMiwweDVCLDB4MjQsMHgzOSwweEMyLDB4MzAsMHhDMiwweEZG
LDB4RkYsMHhGRCwKLSAgICAweDAzLDB4NDEsMHhFMywweDMwLDB4QkIsMHhFQSwweERGLDB4MEEs
MHhFNiwweDU5LDB4MDMsMHg0MSwweDNELDB4QjUsMHg1NSwweDc3LAotICAgIDB4ODgsMHg3QSww
eDY0LDB4NTEsMHgyQSwweDBFLDB4MkQsMHgyNSwweDE1LDB4REUsMHg2QiwweDkzLDB4ODIsMHhB
MywweEE5LDB4QTksCi0gICAgMHg3MywweENELDB4RUQsMHg5QiwweEUwLDB4NjgsMHg3QSwweEZF
LDB4MTEsMHhCRCwweDJFLDB4QTQsMHhGRCwweEY1LDB4RUEsMHgyRCwKLSAgICAweDQ0LDB4NTEs
MHgwMywweDQ5LDB4RUMsMHg5RSwweEZGLDB4RkYsMHg0MywweDUxLDB4MDMsMHg0OSwweDBBLDB4
ODIsMHhBMiwweDYyLAotICAgIDB4NkEsMHg5MywweDIzLDB4NTEsMHgwRCwweDhELDB4QTksMHhB
OSwweEU5LDB4OEEsMHg0NiwweDcyLDB4RjgsMHhERiwweDVGLDB4N0YsCi0gICAgMHhBNywweDdB
LDB4QzQsMHg2MSwweDhBLDB4N0EsMHg3QSwweERBLDB4NjcsMHg3MiwweDAzLDB4NDksMHg2QSww
eENBLDB4Q0EsMHg4MCwKLSAgICAweDIzLDB4NDEsMHhBMiwweDMwLDB4QjksMHgzRCwweDBELDB4
QTEsMHgyNCwweDQxLDB4ODEsMHgyMCwweEMwLDB4RUEsMHg3RiwweDU3LAotICAgIDB4RTMsMHgz
OCwweDgyLDB4MjAsMHhBMiwweEJCLDB4QUQsMHhCRCwweDA0LDB4MzksMHhDMywweDMwLDB4QjEs
MHhGQiwweEQ1LDB4RDUsCi0gICAgMHg0NCwweDQ5LDB4RTIsMHgzMCwweDgyLDB4RkEsMHhGRiww
eEY1LDB4NDQsMHg0MSwweEUyLDB4MzgsMHhCRiwweDk1LDB4RkQsMHhDMywKLSAgICAweDI2LDB4
NkEsMHgwMywweDM5LDB4MkYsMHgyRCwweEJELDB4QjUsMHhGMSwweEJDLDB4MDYsMHg2MiwweDAz
LDB4QTEsMHhBOSwweEM5LAotICAgIDB4MkYsMHhBNCwweDg5LDB4NjIsMHgyOCwweEFBLDB4RkEs
MHg1NSwweDExLDB4QkQsMHgwQiwweDdCLDB4MkYsMHhCNSwweEY1LDB4RkQsCi0gICAgMHg2NCww
eDU5LDB4MDIsMHg0OSwweEY3LDB4RTcsMHhFOSwweEYyLDB4MDksMHg4QiwweDIzLDB4NDksMHg1
NSwweDU1LDB4OTUsMHgxNSwKLSAgICAweDQ5LDB4OTMsMHg4NCwweDU5LDB4QTksMHhBQSwweEE4
LDB4MjgsMHhBQiwweEEzLDB4RTUsMHg2MSwweEZGLDB4QUYsMHg2MiwweDdDLAotICAgIDB4Qzcs
MHg4MiwweDQ0LDB4NDksMHhFMCwweDdFLDB4NUYsMHg1NywweDA2LDB4NkEsMHhFMiwweDM4LDB4
MDAsMHhGRiwweDdGLDB4N0EsCi0gICAgMHgwMywweDQxLDB4NjEsMHgxOCwweEE4LDB4RjgsMHg3
RSwweERGLDB4RTMsMHgzMCwweDgxLDB4MjAsMHhCNSwweDBELDB4QUYsMHgyRSwKLSAgICAweEUy
LDB4MzAsMHhBMiwweDI4LDB4NTUsMHg2QiwweEY4LDB4Q0IsMHgwMywweDM5LDB4QTIsMHgyOCww
eDJGLDB4RjUsMHhERCwweEY3LAotICAgIDB4MjMsMHgzOSwweEMyLDB4MzAsMHhFQiwweEFGLDB4
OEQsMHhGRCwweDY0LDB4NDksMHhFMiwweDMwLDB4OEIsMHhDRCwweENELDB4N0QsCi0gICAgMHg4
NCwweDUxLDB4RTIsMHgzMCwweDJGLDB4QkYsMHgzNywweEJELDB4RDEsMHhCNCwweDg1LDB4NTEs
MHgwOSwweDBELDB4MkQsMHhBNSwKLSAgICAweDExLDB4QkQsMHhBQywweDhCLDB4NTcsMHhGMCww
eEE4LDB4QUIsMHg2RiwweEFDLDB4Q0QsMHg5MywweEI5LDB4QTgsMHg4MCwweEEwLAotICAgIDB4
NjQsMHg1OSwweDAyLDB4NDEsMHhGMiwweDVCLDB4NTcsMHg1RCwweDY5LDB4OTMsMHgwMiwweDQx
LDB4MTUsMHgzNSwweDM1LDB4RDUsCi0gICAgMHg2OSwweDkzLDB4ODQsMHg1OSwweDA4LDB4ODAs
MHhGOCwweDVGLDB4NjYsMHg3MiwweDQzLDB4NDksMHhFMCwweDUwLDB4NUUsMHg3NywKLSAgICAw
eEE1LDB4NTEsMHgwMywweDQxLDB4RkEsMHg3QSwweDdBLDB4MkUsMHhDNSwweDU5LDB4QzIsMHgz
MCwweDU4LDB4REIsMHg3RiwweDVFLAotICAgIDB4RTMsMHgzMCwweDYxLDB4MjAsMHgzRSwweDI3
LDB4RkYsMHhFQSwweDAzLDB4MzksMHg4MSwweDIwLDB4QjIsMHhBMiwweEFELDB4MDYsCi0gICAg
MHhFMywweDMwLDB4QTIsMHgyOCwweDAwLDB4RjIsMHg3QiwweEVGLDB4RTMsMHgzMCwweDgyLDB4
MjgsMHhGRSwweEEwLDB4MkEsMHgwMiwKLSAgICAweDAzLDB4MzksMHhDMiwweDMwLDB4RDUsMHg1
RiwweDVFLDB4NzMsMHgwMywweDMxLDB4QzIsMHgyOCwweEVCLDB4RkEsMHhGOSwweEFELAotICAg
IDB4NjQsMHg0OSwweEUzLDB4MzAsMHhCNSwweDk1LDB4M0QsMHgyNSwweDBELDB4QTQsMHhBNSww
eDUxLDB4OEQsMHgyOSwweEU5LDB4MDMsCi0gICAgMHg2RiwweEFDLDB4QTksMHg3MiwweDJBLDB4
QUIsMHg1NSwweDU3LDB4MkUsMHg5QywweEE4LDB4NzIsMHgyMCwweEFBLDB4QUIsMHhCNSwKLSAg
ICAweDIzLDB4NDksMHgwMywweDQxLDB4RDUsMHhGNSwweERELDB4RkQsMHgyMywweDQ5LDB4RTIs
MHg0MCwweDM4LDB4RkUsMHhERiwweDU1LAotICAgIDB4QTQsMHg1OSwweEUyLDB4NDAsMHgxQyww
eDE1LDB4MUQsMHgxNSwweEU1LDB4NjEsMHgyMywweDM5LDB4RUEsMHg3OCwweDU4LDB4NUMsCi0g
ICAgMHhFNSwweDYxLDB4QTIsMHgzMCwweEMyLDB4NzMsMHg2RiwweDdGLDB4NDQsMHg0OSwweDgx
LDB4MjAsMHhGOCwweDdBLDB4NTcsMHhGRiwKLSAgICAweDI0LDB4NDEsMHhBMiwweDI4LDB4M0Qs
MHhBNSwweDdGLDB4N0YsMHgyMywweDQ5LDB4ODEsMHgyMCwweDJBLDB4QUEsMHhCNywweERELAot
ICAgIDB4MDMsMHgzOSwweEEyLDB4MjgsMHhBQywweDdDLDB4RDgsMHhGMywweDAzLDB4MzksMHhB
MiwweDI4LDB4QkYsMHg3RCwweDc1LDB4Q0IsCi0gICAgMHhFMiwweDMwLDB4QTIsMHgyOCwweDhB
LDB4QTMsMHg4RCwweDdDLDB4MDMsMHgzOSwweEExLDB4MjgsMHhBQiwweEEyLDB4MEYsMHhBNywK
LSAgICAweEM5LDB4N0EsMHgwMywweDM5LDB4RDUsMHgxNSwweDM1LDB4M0QsMHgxMCwweEM1LDB4
MkEsMHg4MywweDJBLDB4ODAsMHgwQSwweEI1LAotICAgIDB4RDAsMHhCQywweEE4LDB4NzIsMHg1
RSwweDU4LDB4QTAsMHhBMCwweDJELDB4QTQsMHgwNiwweDVBLDB4REYsMHg3QiwweEVBLDB4MDAs
Ci0gICAgMHgwMywweDQxLDB4RTIsMHgzOCwweDAzLDB4N0EsMHhGQywweDc3LDB4MDMsMHg0OSww
eEUyLDB4MzgsMHhGRCwweDdELDB4NTUsMHhERCwKLSAgICAweDg0LDB4NTksMHhFMiwweDM4LDB4
MTUsMHg5NSwweDk1LDB4OTUsMHg0NiwweDZBLDB4MDMsMHgzOSwweDVDLDB4NUMsMHg1QywweDU0
LAotICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhDQSwweDBCLDB4QTcsMHhGNSwweDIzLDB4Mzks
MHhFMiwweDMwLDB4RkYsMHhBQywweEJBLDB4M0YsCi0gICAgMHgyMywweDM5LDB4RTMsMHgzMCww
eDU3LDB4NUUsMHhFRSwweEI4LDB4MDMsMHgzMSwweEEyLDB4MjAsMHg1NywweEZBLDB4QTAsMHgw
MCwKLSAgICAweEUzLDB4MzAsMHg4MSwweDIwLDB4MkIsMHhCRiwweEZBLDB4QTAsMHg0NCwweDQx
LDB4QTIsMHgyOCwweEFCLDB4RkYsMHhGRiwweEQ1LAotICAgIDB4MDMsMHgzOSwweEEyLDB4Mjgs
MHhERiwweEJCLDB4QUEsMHgyQSwweDY0LDB4NDksMHhDMiwweDI4LDB4QjUsMHhCRiwweEJFLDB4
MzcsCi0gICAgMHhBOSwweDcyLDB4NDQsMHg0OSwweDI1LDB4MDksMHgwQiwweDJBLDB4MEEsMHg4
MywweEE5LDB4NzIsMHgwQSwweDhGLDB4RkQsMHhGNSwKLSAgICAweDZGLDB4QUMsMHhFQSwweDdB
LDB4MkIsMHhGNSwweDU1LDB4NTUsMHg2RSwweEFDLDB4MEEsMHg4MywweDAwLDB4MDIsMHgzNSww
eDU1LAotICAgIDB4MDMsMHg0MSwweEUyLDB4MzgsMHhGNSwweDU1LDB4N0YsMHg1NSwweEUyLDB4
MzgsMHhDMiwweDM4LDB4QTMsMHgyMCwweEEyLDB4OEEsCi0gICAgMHg0MywweDQ5LDB4QTIsMHgz
MCwweEJGLDB4RkYsMHgxRiwweEY3LDB4NjYsMHg2QSwweEUzLDB4MzAsMHg1RSwweDVFLDB4NUMs
MHg1NywKLSAgICAweEUzLDB4MzAsMHhDMywweDMwLDB4MDMsMHgwMiwweDAwLDB4ODAsMHgwMyww
eDMxLDB4RTMsMHgzMCwweDNGLDB4QkYsMHhENSwweDdGLAotICAgIDB4MjMsMHgzOSwweEUzLDB4
MzAsMHhFQSwweEJCLDB4N0QsMHhENSwweDAzLDB4MzksMHgwNCwweDMxLDB4QkEsMHhBMCwweDBB
LDB4MkIsCi0gICAgMHgyNCwweDM5LDB4RTMsMHgzMCwweDVFLDB4RUIsMHhCQSwweDJBLDB4NDQs
MHg0MSwweEEyLDB4MjAsMHg1RiwweEZCLDB4QTIsMHgwQSwKLSAgICAweDY1LDB4NDksMHhBMiww
eDI4LDB4RDUsMHhGRiwweEFCLDB4MDAsMHg0OCwweDZBLDB4MDMsMHgzMSwweEI1LDB4QTUsMHgy
QiwweDBBLAotICAgIDB4QTksMHg3MiwweDA2LDB4NjIsMHgyRCwweDI5LDB4QUIsMHhBQiwweEM5
LDB4N0EsMHg4OCwweDZBLDB4MkIsMHhBQiwweEVELDB4N0UsCi0gICAgMHhFOSwweDdBLDB4ODgs
MHg3MiwweEFFLDB4MkEsMHhCQiwweEVELDB4MEEsMHg4MywweEE5LDB4NzIsMHgyQiwweEFGLDB4
RUYsMHhGRCwKLX07Ci0KLXN0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfNF93aWR0aCA9IDMyOwot
c3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF80X2hlaWdodCA9IDMyOwotc3RhdGljIGNvbnN0IHNp
emVfdCBwaXhlbF80X3NpemUgPSA1MTI7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwaXhl
bF80X2RhdGFbNTEyXSA9Ci17Ci0gICAgMHhENywweEY2LDB4QTQsMHg0OSwweDU1LDB4NTUsMHhB
QSwweDAwLDB4NzUsMHhFRSwweEE1LDB4NTEsMHg1NSwweDU1LDB4NzAsMHg3MCwKLSAgICAweEI2
LDB4RjYsMHg4NSwweDQ5LDB4NTUsMHhERCwweDAyLDB4MDMsMHhGNywweEZFLDB4RTYsMHg1OSww
eDU1LDB4RkYsMHhGMCwweDlDLAotICAgIDB4RjcsMHhGNiwweDg1LDB4NDksMHg1NSwweEFBLDB4
MDAsMHgwMCwweDk2LDB4RUUsMHg0NiwweDVBLDB4MDksMHgwMiwweDAwLDB4MDAsCi0gICAgMHhG
OCwweEY2LDB4NzUsMHhFRSwweDBCLDB4MjcsMHgwQSwweDgyLDB4RDcsMHhFRSwweEIyLDB4RDUs
MHhGOCwweEQ4LDB4RDYsMHg5NiwKLSAgICAweEQ2LDB4RjYsMHhCNiwweEVFLDB4NEEsMHg4Miww
eDAwLDB4MDIsMHhENiwweEY2LDB4NDMsMHg0OSwweDcwLDB4NjAsMHhFMCwweDcwLAotICAgIDB4
OEYsMHhCQywweDAyLDB4NDEsMHgwOSwweEZGLDB4RkYsMHhCRCwweEI2LDB4RjYsMHg0NywweDgy
LDB4MTcsMHgxNSwweDM3LDB4MDcsCi0gICAgMHgxOCwweEZGLDB4OTUsMHhFRSwweDY4LDB4NzAs
MHhBRSwweDBDLDB4RjcsMHhGNiwweDM1LDB4RTYsMHg4MywweDIxLDB4MEIsMHgwOCwKLSAgICAw
eEY3LDB4RjYsMHg1NSwweEU2LDB4QzIsMHhDMCwweDYwLDB4NkUsMHg3NSwweEVFLDB4NTEsMHhD
RCwweDFDLDB4M0UsMHgyNiwweEI2LAotICAgIDB4QjYsMHhGNiwweEE3LDB4N0EsMHgyRiwweDU1
LDB4NTUsMHg1NSwweDk1LDB4RjYsMHgwMiwweDQ5LDB4NzAsMHg2QSwweDdGLDB4N0YsCi0gICAg
MHg0NywweDdBLDB4RTMsMHgzOCwweDlCLDB4RjgsMHhGMCwweDZCLDB4RjMsMHhFNSwweEE1LDB4
NTksMHgzRiwweEY1LDB4NzUsMHg1NSwKLSAgICAweEQ3LDB4RjYsMHg0NywweDdBLDB4MDAsMHgw
MCwweDBCLDB4QjUsMHhGOCwweEY2LDB4QjMsMHhENSwweDAwLDB4ODAsMHg4MCwweEE5LAotICAg
IDB4NzYsMHhFRSwweEY0LDB4REQsMHg0MCwweDQwLDB4NDgsMHg3MCwweEIzLDB4RDUsMHhDQyww
eDlCLDB4MjgsMHhBOCwweEFFLDB4RDgsCi0gICAgMHg2NiwweDcyLDB4NDMsMHg1OSwweDAwLDB4
MDAsMHgyRCwweEQ3LDB4OEEsMHhBMywweEU1LDB4NjksMHhGRiwweEJGLDB4M0YsMHgyNSwKLSAg
ICAweDA2LDB4NkEsMHhDMiwweDMwLDB4REMsMHg1NCwweEQ0LDB4RjQsMHhDNSwweDYxLDB4MDMs
MHgzOSwweEYzLDB4REYsMHg1NSwweDdGLAotICAgIDB4NjcsMHg3QSwweDQ0LDB4NDksMHgwRSww
eEE1LDB4RDUsMHg1NSwweDcyLDB4REQsMHg0MywweDQ5LDB4MkYsMHhCNSwweEQ1LDB4NTUsCi0g
ICAgMHgxNCwweEU2LDB4RTgsMHg4MiwweDAwLDB4MDAsMHgyMywweDI5LDB4NTUsMHhFNiwweEYw
LDB4QkMsMHg2MCwweEUwLDB4ODAsMHhGRSwKLSAgICAweDYzLDB4NTksMHgyMywweDUxLDB4MEEs
MHhFMywweDcyLDB4NTYsMHhDQiwweEEzLDB4NDQsMHg1OSwweDI1LDB4OEQsMHg4OSwweDgxLAot
ICAgIDB4ODcsMHg3QSwweDIzLDB4NDEsMHg1NCwweDU4LDB4NjgsMHg2MCwweDY1LDB4NTEsMHhD
MiwweDMwLDB4NDMsMHg0QiwweDZCLDB4NkQsCi0gICAgMHg2NCwweDQ5LDB4RTMsMHgzMCwweEU4
LDB4QjgsMHg3RSwweDU3LDB4ODUsMHg1MSwweEUzLDB4MzgsMHgyRiwweDI3LDB4M0QsMHhGNSwK
LSAgICAweDkzLDB4RDUsMHg4NCwweDU5LDB4OEYsMHgwRCwweDBELDB4MkQsMHg3MiwweENELDB4
NEUsMHhBNCwweEVBLDB4RjgsMHg1QywweEY3LAotICAgIDB4QzUsMHg2MSwweDIzLDB4NDksMHhE
NSwweDc1LDB4NTUsMHgxNywweDI5LDB4OEIsMHhDNSwweDYxLDB4RTEsMHhCOSwweEFCLDB4Qzgs
Ci0gICAgMHg2NywweDdBLDB4MjMsMHg0MSwweEUwLDB4QUMsMHhGOCwweDdGLDB4MDMsMHgzOSww
eDgxLDB4MjAsMHg4MiwweDcyLDB4OUUsMHhCNywKLSAgICAweEUzLDB4MzAsMHhBMiwweDI4LDB4
MEIsMHhBRCwweDNGLDB4RkUsMHg0NCwweDQ5LDB4RTIsMHgzMCwweEZBLDB4QkYsMHgzRCwweEZE
LAotICAgIDB4RDEsMHhCQywweDQzLDB4NDEsMHgyRCwweEI1LDB4MzUsMHhCNSwweDRGLDB4QTQs
MHhFQSwweDcyLDB4M0EsMHhCNSwweDg4LDB4MDAsCi0gICAgMHg4NywweDdBLDB4MDIsMHg0MSww
eDE3LDB4OTUsMHg1NSwweDU1LDB4MjksMHg5MywweDIzLDB4NDksMHhFMCwweDdFLDB4NzUsMHg3
NSwKLSAgICAweDY0LDB4NTEsMHhBMiwweDI4LDB4QzgsMHhFMCwweDY4LDB4NUUsMHgwMywweDQx
LDB4ODIsMHgyMCwweEFELDB4QkYsMHgyMywweEZGLAotICAgIDB4RTMsMHgzOCwweEMyLDB4Mjgs
MHg3RSwweEI3LDB4NUUsMHhGQywweEUzLDB4MzAsMHhDMiwweDI4LDB4MEYsMHgzOCwweDBBLDB4
MTUsCi0gICAgMHhBRiwweEI0LDB4MDMsMHgzOSwweEI1LDB4QTUsMHgwNSwweDJELDB4QUYsMHhC
NCwweDI3LDB4NUEsMHhBQSwweEJGLDB4N0UsMHhBOCwKLSAgICAweDAzLDB4NDEsMHhFMiwweDM4
LDB4RkEsMHg3RiwweDVELDB4NTUsMHhBNSwweDUxLDB4RTIsMHgzOCwweENELDB4NEQsMHg0NSww
eDQ1LAotICAgIDB4MjQsMHgzOSwweEUzLDB4MzAsMHhFMiwweEJELDB4RjUsMHg1NSwweDAzLDB4
MzksMHhDMiwweDI4LDB4NUEsMHhBMCwweDAwLDB4MEEsCi0gICAgMHgyNCwweDM5LDB4QTIsMHgy
OCwweEJELDB4REYsMHhFQSwweDA4LDB4MjcsMHg2MiwweEMyLDB4MjgsMHhENSwweERELDB4QjUs
MHgyRiwKLSAgICAweDBBLDB4ODMsMHhBNSwweDUxLDB4MDksMHhBQiwweDJCLDB4QUIsMHg2RSww
eEFDLDB4QzksMHg3QSwweDBCLDB4RDUsMHhENSwweDU1LAotfTsKLQotc3RhdGljIGNvbnN0IHNp
emVfdCBwaXhlbF81X3dpZHRoID0gMTY7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzVfaGVp
Z2h0ID0gMTY7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzVfc2l6ZSA9IDEyODsKLXN0YXRp
YyBjb25zdCB1bnNpZ25lZCBjaGFyIHBpeGVsXzVfZGF0YVsxMjhdID0KLXsKLSAgICAweDk2LDB4
RUUsMHg2NCwweDQ5LDB4NTUsMHhDMCwweEMwLDB4QzAsMHg1NSwweEVFLDB4NDcsMHg2QSwweDU1
LDB4QzIsMHg5RCwweDM1LAotICAgIDB4RDcsMHhGNiwweDhCLDB4OEIsMHgzNSwweDAwLDB4MDAs
MHgwMCwweEQ3LDB4RjYsMHhCMiwweEQ1LDB4RTAsMHhGMCwweEYwLDB4RDgsCi0gICAgMHg3MSww
eENELDB4NDMsMHg1OSwweEMzLDB4N0YsMHhGRiwweEY1LDB4NkEsMHg5QiwweEUzLDB4MzgsMHgy
RiwweEZGLDB4RDcsMHg1NywKLSAgICAweEY3LDB4RjYsMHhDNSwweDU5LDB4MDAsMHgwQiwweEQ1
LDB4NTUsMHg3NiwweEVFLDB4QUYsMHhCNCwweEYwLDB4NzgsMHhDMiwweEFELAotICAgIDB4NDks
MHg5MywweDQzLDB4NTEsMHgxNSwweDI1LDB4QjUsMHhBNSwweDI2LDB4NkEsMHhDMiwweDMwLDB4
RkMsMHg1OCwweDUwLDB4NUEsCi0gICAgMHg2NCwweDUxLDB4QzIsMHgyOCwweDJDLDB4QkYsMHhG
RCwweEI1LDB4RDAsMHhCNCwweDQzLDB4NDksMHgwMywweDAzLDB4QTksMHg4OSwKLSAgICAweEM4
LDB4ODIsMHgwMiwweDQxLDB4Q0QsMHhENSwweEQ1LDB4NTUsMHg0NCwweDQxLDB4QTIsMHgyOCww
eEQ4LDB4RkMsMHhGQSwweEFGLAotICAgIDB4ODUsMHg0OSwweEMyLDB4MzAsMHhENSwweDU1LDB4
RjUsMHgzRiwweDBELDB4QTQsMHg2NCwweDQ5LDB4QTksMHg4MSwweDJCLDB4RUYsCi19OwotCi1z
dGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzZfd2lkdGggPSA4Owotc3RhdGljIGNvbnN0IHNpemVf
dCBwaXhlbF82X2hlaWdodCA9IDg7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzZfc2l6ZSA9
IDMyOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcGl4ZWxfNl9kYXRhWzMyXSA9Ci17Ci0g
ICAgMHgzNCwweEU2LDB4NjQsMHg1MSwweEVGLDB4QjgsMHhEQiwweDVELDB4QjcsMHhGNiwweDQ3
LDB4NkEsMHgwMiwweDgwLDB4ODIsMHhBNSwKLSAgICAweDY3LDB4N0EsMHhDMiwweDMwLDB4RTMs
MHg2MywweDdCLDB4NUQsMHhGMSwweEJDLDB4MDMsMHgzOSwweDI1LDB4QjUsMHhCNSwweEI1LAot
fTsKLQotc3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF83X3dpZHRoID0gNDsKLXN0YXRpYyBjb25z
dCBzaXplX3QgcGl4ZWxfN19oZWlnaHQgPSA0Owotc3RhdGljIGNvbnN0IHNpemVfdCBwaXhlbF83
X3NpemUgPSA4Owotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgcGl4ZWxfN19kYXRhWzhdID0K
LXsKLSAgICAweDE0LDB4REUsMHg0NCwweDQ5LDB4MEEsMHgyNywweEQ1LDB4RDUsCi19OwotCi1z
dGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzhfd2lkdGggPSAyOwotc3RhdGljIGNvbnN0IHNpemVf
dCBwaXhlbF84X2hlaWdodCA9IDI7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVsXzhfc2l6ZSA9
IDg7Ci1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBwaXhlbF84X2RhdGFbOF0gPQotewotICAg
IDB4OTIsMHhDRCwweDQ0LDB4NDksMHgzMywweERELDB4MzMsMHhERCwKLX07Ci0KLXN0YXRpYyBj
b25zdCBzaXplX3QgcGl4ZWxfOV93aWR0aCA9IDE7Ci1zdGF0aWMgY29uc3Qgc2l6ZV90IHBpeGVs
XzlfaGVpZ2h0ID0gMTsKLXN0YXRpYyBjb25zdCBzaXplX3QgcGl4ZWxfOV9zaXplID0gODsKLXN0
YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHBpeGVsXzlfZGF0YVs4XSA9Ci17Ci0gICAgMHgyQSww
eDgzLDB4MEEsMHg4MywweEZCLDB4RUYsMHhFRSwweEVGLAotfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2dlbmVy
YXRlX2dsZXNfY29uZm9ybWFuY2VfdGVzdHMucHkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy9nZW5lcmF0ZV9nbGVzX2NvbmZvcm1hbmNl
X3Rlc3RzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWQzMTNhMTY5YS4uMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXNfY29u
Zm9ybWFuY2VfdGVzdHMvZ2VuZXJhdGVfZ2xlc19jb25mb3JtYW5jZV90ZXN0cy5weQorKysgL2Rl
di9udWxsCkBAIC0xLDY4ICswLDAgQEAKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc3lz
Ci0KLWRlZiBSZWFkRmlsZUFzTGluZXMoZmlsZW5hbWUpOgotICAgICIiIlJlYWRzIGEgZmlsZSwg
cmVtb3ZpbmcgYmxhbmsgbGluZXMgYW5kIGxpbmVzIHRoYXQgc3RhcnQgd2l0aCAjIiIiCi0gICAg
ZmlsZSA9IG9wZW4oZmlsZW5hbWUsICJyIikKLSAgICByYXdfbGluZXMgPSBmaWxlLnJlYWRsaW5l
cygpCi0gICAgZmlsZS5jbG9zZSgpCi0gICAgbGluZXMgPSBbXQotICAgIGZvciBsaW5lIGluIHJh
d19saW5lczoKLSAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQotICAgICAgICBpZiBsZW4obGlu
ZSkgPiAwIGFuZCBub3QgbGluZS5zdGFydHN3aXRoKCIjIik6Ci0gICAgICAgICAgICBsaW5lcy5h
cHBlbmQobGluZSkKLSAgICByZXR1cm4gbGluZXMKLQotZGVmIEdldFN1aXRlTmFtZSh0ZXN0TmFt
ZSk6Ci0gICAgcmV0dXJuIHRlc3ROYW1lWzp0ZXN0TmFtZS5maW5kKCIvIildCi0KLWRlZiBHZXRU
ZXN0TmFtZSh0ZXN0TmFtZSk6Ci0gICAgcmVwbGFjZW1lbnRzID0geyAiLnRlc3QiOiAiIiwgIi4i
OiAiXyIgfQotICAgIHNwbGl0VGVzdE5hbWUgPSB0ZXN0TmFtZS5zcGxpdCgiLyIpCi0gICAgY2xl
YW5OYW1lID0gc3BsaXRUZXN0TmFtZVstMl0gKyAiXyIgKyBzcGxpdFRlc3ROYW1lWy0xXQotICAg
IGZvciByZXBsYWNlS2V5IGluIHJlcGxhY2VtZW50czoKLSAgICAgICAgY2xlYW5OYW1lID0gY2xl
YW5OYW1lLnJlcGxhY2UocmVwbGFjZUtleSwgcmVwbGFjZW1lbnRzW3JlcGxhY2VLZXldKQotICAg
IHJldHVybiBjbGVhbk5hbWUKLQotZGVmIEdlbmVyYXRlVGVzdHMob3V0RmlsZSwgdGVzdE5hbWVz
KToKLSAgICAjIFJlbW92ZSBkdXBsaWNhdGUgdGVzdHMKLSAgICB0ZXN0TmFtZXMgPSBsaXN0KHNl
dCh0ZXN0TmFtZXMpKQotICAgIHRlc3RTdWl0ZXMgPSBbXQotCi0gICAgb3V0RmlsZS53cml0ZSgi
I2luY2x1ZGUgXCJnbGVzX2NvbmZvcm1hbmNlX3Rlc3RzLmhcIlxuXG4iKQotCi0gICAgZm9yIHRl
c3QgaW4gdGVzdE5hbWVzOgotICAgICAgICB0ZXN0U3VpdGUgPSBHZXRTdWl0ZU5hbWUodGVzdCkK
LSAgICAgICAgaWYgbm90IHRlc3RTdWl0ZSBpbiB0ZXN0U3VpdGVzOgotICAgICAgICAgICAgb3V0
RmlsZS53cml0ZSgiREVGSU5FX0NPTkZPUk1BTkNFX1RFU1RfQ0xBU1MoIiArIHRlc3RTdWl0ZSAr
ICIpO1xuXG4iKQotICAgICAgICAgICAgdGVzdFN1aXRlcy5hcHBlbmQodGVzdFN1aXRlKQotCi0g
ICAgICAgIG91dEZpbGUud3JpdGUoIlRZUEVEX1RFU1QoIiArIHRlc3RTdWl0ZSArICIsICIgKyBH
ZXRUZXN0TmFtZSh0ZXN0KSArICIpXG4iKQotICAgICAgICBvdXRGaWxlLndyaXRlKCJ7XG4iKQot
ICAgICAgICBvdXRGaWxlLndyaXRlKCIgICAgcnVuKFwiIiArIHRlc3QgKyAiXCIpO1xuIikKLSAg
ICAgICAgb3V0RmlsZS53cml0ZSgifVxuXG4iKQotCi1kZWYgR2VuZXJhdGVUZXN0TGlzdChzb3Vy
Y2VGaWxlLCByb290RGlyKToKLSAgICB0ZXN0cyA9IFsgXQotICAgIGZpbGVOYW1lLCBmaWxlRXh0
ZW5zaW9uID0gb3MucGF0aC5zcGxpdGV4dChzb3VyY2VGaWxlKQotICAgIGlmIGZpbGVFeHRlbnNp
b24gPT0gIi5ydW4iOgotICAgICAgICBsaW5lcyA9IFJlYWRGaWxlQXNMaW5lcyhzb3VyY2VGaWxl
KQotICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgICAgIHRlc3RzICs9IEdlbmVy
YXRlVGVzdExpc3Qob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShzb3VyY2VGaWxlKSwgbGlu
ZSksIHJvb3REaXIpCi0gICAgZWxpZiBmaWxlRXh0ZW5zaW9uID09ICIudGVzdCI6Ci0gICAgICAg
IHRlc3RzLmFwcGVuZChvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5yZWFscGF0aChzb3VyY2VGaWxl
KSwgcm9vdERpcikucmVwbGFjZSgiXFwiLCAiLyIpKQotICAgIHJldHVybiB0ZXN0czsKLQotZGVm
IG1haW4oYXJndik6Ci0gICAgdGVzdHMgPSBHZW5lcmF0ZVRlc3RMaXN0KGFyZ3ZbMF0sIGFyZ3Zb
MV0pCi0gICAgdGVzdHMuc29ydCgpCi0KLSAgICBvdXRwdXQgPSBvcGVuKGFyZ3ZbMl0sICd3Yicp
Ci0gICAgR2VuZXJhdGVUZXN0cyhvdXRwdXQsIHRlc3RzKQotICAgIG91dHB1dC5jbG9zZSgpCi0K
LSAgICByZXR1cm4gMAotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHN5cy5leGl0
KG1haW4oc3lzLmFyZ3ZbMTpdKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXNfY29uZm9ybWFuY2Vf
dGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDBhMTZiYzZiMDc1Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rl
c3RzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLSNpbmNsdWRlICJnbGVzX2Nv
bmZvcm1hbmNlX3Rlc3RzLmgiCi0jaW5jbHVkZSAiR1RGTWFpbi5oIgotCi0jaW5jbHVkZSA8c3Rk
aW8uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0jaW5jbHVkZSA8
c3N0cmVhbT4KLSNpbmNsdWRlIDxzdGRhcmcuaD4KLQotc3RhdGljIHN0ZDo6dmVjdG9yPGNoYXI+
IEZvcm1hdEFyZyhjb25zdCBjaGFyKiBmbXQsIC4uLikKLXsKLSAgICB2YV9saXN0IHZhcmFyZzsK
LSAgICB2YV9zdGFydCh2YXJhcmcsIGZtdCk7Ci0gICAgaW50IGxlbiA9IHZzbnByaW50ZihOVUxM
LCAwLCBmbXQsIHZhcmFyZyk7Ci0gICAgdmFfZW5kKHZhcmFyZyk7Ci0KLSAgICBzdGQ6OnZlY3Rv
cjxjaGFyPiBidWYobGVuICsgMSk7Ci0KLSAgICB2YV9zdGFydCh2YXJhcmcsIGZtdCk7Ci0gICAg
dnNucHJpbnRmKGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCksIGZtdCwgdmFyYXJnKTsKLSAgICB2YV9l
bmQodmFyYXJnKTsKLQotICAgIHJldHVybiBidWY7Ci19Ci0KLXN0YXRpYyBzdGQ6OnN0cmluZyBH
ZXRFeGVjdXRhYmxlRGlyZWN0b3J5KCkKLXsKLSAgICBzdGQ6OnZlY3RvcjxjaGFyPiBleGVjdXRh
YmxlRmlsZUJ1ZihNQVhfUEFUSCk7Ci0gICAgRFdPUkQgZXhlY3V0YWJsZVBhdGhMZW4gPSBHZXRN
b2R1bGVGaWxlTmFtZUEoTlVMTCwgZXhlY3V0YWJsZUZpbGVCdWYuZGF0YSgpLCBleGVjdXRhYmxl
RmlsZUJ1Zi5zaXplKCkpOwotICAgIGlmIChleGVjdXRhYmxlUGF0aExlbiA9PSAwKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nIGV4ZWN1dGFi
bGVMb2NhdGlvbiA9IGV4ZWN1dGFibGVGaWxlQnVmLmRhdGEoKTsKLSAgICBzaXplX3QgbGFzdFBh
dGhTZXBMb2MgPSBleGVjdXRhYmxlTG9jYXRpb24uZmluZF9sYXN0X29mKCJcXC8iKTsKLSAgICBp
ZiAobGFzdFBhdGhTZXBMb2MgIT0gc3RkOjpzdHJpbmc6Om5wb3MpCi0gICAgewotICAgICAgICBl
eGVjdXRhYmxlTG9jYXRpb24gPSBleGVjdXRhYmxlTG9jYXRpb24uc3Vic3RyKDAsIGxhc3RQYXRo
U2VwTG9jKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgZXhlY3V0YWJsZUxvY2F0
aW9uID0gIiI7Ci0gICAgfQotCi0gICAgcmV0dXJuIGV4ZWN1dGFibGVMb2NhdGlvbjsKLX0KLQot
dm9pZCBSdW5Db25mb3JtYW5jZVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcgJnRlc3RQYXRoLCBFR0xO
YXRpdmVEaXNwbGF5VHlwZSBuYXRpdmVEaXNwbGF5KQotewotICAgIHN0ZDo6dmVjdG9yPGNoYXIq
PiBhcmdzOwotCi0gICAgLy8gRW1wdHkgZmlyc3QgYXJndW1lbnQgZm9yIHRoZSBwcm9ncmFtIG5h
bWUKLSAgICBhcmdzLnB1c2hfYmFjaygiIik7Ci0KLSAgICBzdGQ6OnZlY3RvcjxjaGFyPiB3aWR0
aEFyZyA9IEZvcm1hdEFyZygiLXdpZHRoPSV1IiwgNjQpOwotICAgIGFyZ3MucHVzaF9iYWNrKHdp
ZHRoQXJnLmRhdGEoKSk7Ci0KLSAgICBzdGQ6OnZlY3RvcjxjaGFyPiBoZWlnaHRBcmcgPSBGb3Jt
YXRBcmcoIi1oZWlnaHQ9JXUiLCA2NCk7Ci0gICAgYXJncy5wdXNoX2JhY2soaGVpZ2h0QXJnLmRh
dGEoKSk7Ci0KLSAgICBzdGQ6OnZlY3RvcjxjaGFyPiBkaXNwbGF5QXJnID0gRm9ybWF0QXJnKCIt
ZD0lbGx1IiwgbmF0aXZlRGlzcGxheSk7Ci0gICAgYXJncy5wdXNoX2JhY2soZGlzcGxheUFyZy5k
YXRhKCkpOwotCi0gICAgc3RkOjp2ZWN0b3I8Y2hhcj4gcnVuQXJnID0gRm9ybWF0QXJnKCItcnVu
PSVzL2NvbmZvcm1hbmNlX3Rlc3RzLyVzIiwgR2V0RXhlY3V0YWJsZURpcmVjdG9yeSgpLmNfc3Ry
KCksIHRlc3RQYXRoLmNfc3RyKCkpOwotICAgIGFyZ3MucHVzaF9iYWNrKHJ1bkFyZy5kYXRhKCkp
OwotCi0gICAgLy8gUmVkaXJlY3QgY291dAotICAgIHN0ZDo6c3RyZWFtYnVmKiBvbGRDb3V0U3Ry
ZWFtQnVmID0gc3RkOjpjb3V0LnJkYnVmKCk7Ci0gICAgc3RkOjpvc3RyaW5nc3RyZWFtIHN0ckNv
dXQ7Ci0gICAgc3RkOjpjb3V0LnJkYnVmKHN0ckNvdXQucmRidWYoKSk7Ci0KLSAgICBpZiAoR1RG
TWFpbihhcmdzLnNpemUoKSwgYXJncy5kYXRhKCkpICE9IDApCi0gICAgewotICAgICAgICBGQUlM
KCkgPDwgIkdURk1haW4gZmFpbGVkLiI7Ci0gICAgfQotCi0gICAgLy8gUmVzdG9yZSBvbGQgY291
dAotICAgIHN0ZDo6Y291dC5yZGJ1ZihvbGRDb3V0U3RyZWFtQnVmKTsKLSAgICBzdGQ6OnN0cmlu
ZyBsb2cgPSBzdHJDb3V0LnN0cigpOwotCi0gICAgLy8gTG9vayBmb3IgZmFpbHVyZXMKLSAgICBz
aXplX3Qgb2Zmc2V0ID0gMDsKLSAgICBzdGQ6OnN0cmluZyBvZmZzZXRTZWFyY2hTdHJpbmcgPSAi
ZmFpbHVyZSA9ICI7Ci0gICAgd2hpbGUgKChvZmZzZXQgPSBsb2cuZmluZCgiZmFpbHVyZSA9ICIs
IG9mZnNldCkpICE9IHN0ZDo6c3RyaW5nOjpucG9zKQotICAgIHsKLSAgICAgICAgb2Zmc2V0ICs9
IG9mZnNldFNlYXJjaFN0cmluZy5sZW5ndGgoKTsKLQotICAgICAgICBzaXplX3QgZmFpbHVyZUNv
dW50ID0gYXRvbGwobG9nLmNfc3RyKCkgKyBvZmZzZXQpOwotICAgICAgICBFWFBFQ1RfRVEoMCwg
ZmFpbHVyZUNvdW50KSA8PCBsb2c7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvZ2xlc19jb25mb3Jt
YW5jZV90ZXN0cy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXNfY29u
Zm9ybWFuY2VfdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkZjkxMWIwMzQ5Zi4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMvZ2xlc19jb25mb3Jt
YW5jZV90ZXN0cy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLy8KLS8vIENvcHly
aWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8v
Ci0KLSNpZm5kZWYgQ09ORk9STUFOQ0VfVEVTVFNfQ09ORk9STUFOQ0VfVEVTVF9IXwotI2RlZmlu
ZSBDT05GT1JNQU5DRV9URVNUU19DT05GT1JNQU5DRV9URVNUX0hfCi0KLSNpbmNsdWRlICJndGVz
dC9ndGVzdC5oIgotCi0jaW5jbHVkZSA8RUdML2VnbC5oPgotI2luY2x1ZGUgPEVHTC9lZ2xleHQu
aD4KLQotI2luY2x1ZGUgPHN0cmluZz4KLQotc3RydWN0IEQzRDkKLXsKLSAgICBzdGF0aWMgRUdM
TmF0aXZlRGlzcGxheVR5cGUgR2V0TmF0aXZlRGlzcGxheSgpCi0gICAgewotICAgICAgICByZXR1
cm4gRUdMX0RFRkFVTFRfRElTUExBWTsKLSAgICB9Ci19OwotCi1zdHJ1Y3QgRDNEMTEKLXsKLSAg
ICBzdGF0aWMgRUdMTmF0aXZlRGlzcGxheVR5cGUgR2V0TmF0aXZlRGlzcGxheSgpCi0gICAgewot
ICAgICAgICByZXR1cm4gRUdMX0QzRDExX09OTFlfRElTUExBWV9BTkdMRTsKLSAgICB9Ci19Owot
Ci0jZGVmaW5lIENPTkZPUk1BTkNFX1RFU1RTX0VTMiAyCi0jZGVmaW5lIENPTkZPUk1BTkNFX1RF
U1RTX0VTMyAzCi0KLSNpZiBDT05GT1JNQU5DRV9URVNUU19UWVBFID09IENPTkZPUk1BTkNFX1RF
U1RTX0VTMgotICAgIHR5cGVkZWYgdGVzdGluZzo6VHlwZXM8RDNEOSwgRDNEMTE+IENvbmZvcm1h
bmNlVGVzdFR5cGVzOwotI2VsaWYgQ09ORk9STUFOQ0VfVEVTVFNfVFlQRSA9PSBDT05GT1JNQU5D
RV9URVNUU19FUzMKLSAgICB0eXBlZGVmIHRlc3Rpbmc6OlR5cGVzPEQzRDExPiBDb25mb3JtYW5j
ZVRlc3RUeXBlczsKLSNlbHNlCi0jICAgZXJyb3IgIlVua25vd24gQ09ORk9STUFOQ0VfVEVTVFNf
VFlQRSIKLSNlbmRpZgotCi0jZGVmaW5lIERFRklORV9DT05GT1JNQU5DRV9URVNUX0NMQVNTKG5h
bWUpIFwKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgbmFtZSA6IHB1YmxpYyBDb25m
b3JtYW5jZVRlc3Q8VD4geyB9OyBcCi0gICAgVFlQRURfVEVTVF9DQVNFKG5hbWUsIENvbmZvcm1h
bmNlVGVzdFR5cGVzKTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBDb25mb3JtYW5j
ZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAotewotICBwdWJsaWM6Ci0gICAgQ29uZm9ybWFu
Y2VUZXN0KCkKLSAgICAgICAgOiBtTmF0aXZlRGlzcGxheShUOjpHZXROYXRpdmVEaXNwbGF5KCkp
Ci0gICAgewotICAgIH0KLQotICBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBydW4oY29uc3Qgc3RkOjpz
dHJpbmcgJnRlc3RQYXRoKQotICAgIHsKLSAgICAgICAgUnVuQ29uZm9ybWFuY2VUZXN0KHRlc3RQ
YXRoLCBtTmF0aXZlRGlzcGxheSk7Ci0gICAgfQotCi0gIHByaXZhdGU6Ci0gICAgRUdMTmF0aXZl
RGlzcGxheVR5cGUgbU5hdGl2ZURpc3BsYXk7Ci19OwotCi12b2lkIFJ1bkNvbmZvcm1hbmNlVGVz
dChjb25zdCBzdGQ6OnN0cmluZyAmdGVzdFBhdGgsIEVHTE5hdGl2ZURpc3BsYXlUeXBlIG5hdGl2
ZURpc3BsYXkpOwotCi0jZW5kaWYgLy8gQ09ORk9STUFOQ0VfVEVTVFNfQ09ORk9STUFOQ0VfVEVT
VF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL2dsZXNf
Y29uZm9ybWFuY2VfdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0c19tYWluLmNwcCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2dsZXNf
Y29uZm9ybWFuY2VfdGVzdHNfbWFpbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDBiOTVkNWM4OTQ1Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvZ2xlc19jb25mb3JtYW5jZV90ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzX21h
aW4uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAo
YykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNp
bmNsdWRlICJnbGVzX2NvbmZvcm1hbmNlX3Rlc3RzLmgiCi0KLSNpbmNsdWRlICJndGVzdC9ndGVz
dC5oIgotCi0jaW5jbHVkZSA8RUdML2VnbC5oPgotI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KLQot
I2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi1p
bnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi17Ci0gICAgdGVzdGluZzo6SW5pdEdvb2ds
ZVRlc3QoJmFyZ2MsIGFyZ3YpOwotICAgIGludCBydCA9IFJVTl9BTExfVEVTVFMoKTsKLSAgICBy
ZXR1cm4gcnQ7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvcGVyZl90ZXN0cy9BTkdMRVBlcmZUZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0FOR0xFUGVyZlRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlN2M3NDM3MGRlZS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQU5HTEVQZXJmVGVzdC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNCBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBBTkdMRVBlcmZUZXN0
czoKLS8vICAgQmFzZSBjbGFzcyBmb3IgZ29vZ2xlIHRlc3QgcGVyZm9ybWFuY2UgdGVzdHMKLS8v
Ci0KLSNpbmNsdWRlICJBTkdMRVBlcmZUZXN0LmgiCi0KLSNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9w
ZXJmL3BlcmZfdGVzdC5oIgotCi0jaW5jbHVkZSA8Y2Fzc2VydD4KLSNpbmNsdWRlIDxjbWF0aD4K
LSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotQU5HTEVQZXJmVGVzdDo6QU5HTEVQZXJmVGVzdChjb25z
dCBzdGQ6OnN0cmluZyAmbmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcgJnN1ZmZpeCkKLSAgICA6IG1O
YW1lKG5hbWUpLAotICAgICAgbVN1ZmZpeChzdWZmaXgpLAotICAgICAgbVRpbWVyKG51bGxwdHIp
LAotICAgICAgbVJ1blRpbWVTZWNvbmRzKDUuMCksCi0gICAgICBtTnVtU3RlcHNQZXJmb3JtZWQo
MCksCi0gICAgICBtUnVubmluZyh0cnVlKQotewotICAgIG1UaW1lciA9IENyZWF0ZVRpbWVyKCk7
Ci19Ci0KLUFOR0xFUGVyZlRlc3Q6On5BTkdMRVBlcmZUZXN0KCkKLXsKLSAgICBTYWZlRGVsZXRl
KG1UaW1lcik7Ci19Ci0KLXZvaWQgQU5HTEVQZXJmVGVzdDo6cnVuKCkKLXsKLSAgICBtVGltZXIt
PnN0YXJ0KCk7Ci0gICAgd2hpbGUgKG1SdW5uaW5nKQotICAgIHsKLSAgICAgICAgc3RlcCgpOwot
ICAgICAgICBpZiAobVJ1bm5pbmcpCi0gICAgICAgIHsKLSAgICAgICAgICAgICsrbU51bVN0ZXBz
UGVyZm9ybWVkOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtVGltZXItPmdldEVsYXBzZWRUaW1l
KCkgPiBtUnVuVGltZVNlY29uZHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1SdW5uaW5nID0g
ZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZmluaXNoVGVzdCgpOwotICAgIG1UaW1lci0+
c3RvcCgpOwotfQotCi12b2lkIEFOR0xFUGVyZlRlc3Q6OnByaW50UmVzdWx0KGNvbnN0IHN0ZDo6
c3RyaW5nICZ0cmFjZSwgZG91YmxlIHZhbHVlLCBjb25zdCBzdGQ6OnN0cmluZyAmdW5pdHMsIGJv
b2wgaW1wb3J0YW50KSBjb25zdAotewotICAgIHBlcmZfdGVzdDo6UHJpbnRSZXN1bHQobU5hbWUs
IG1TdWZmaXgsIHRyYWNlLCB2YWx1ZSwgdW5pdHMsIGltcG9ydGFudCk7Ci19Ci0KLXZvaWQgQU5H
TEVQZXJmVGVzdDo6cHJpbnRSZXN1bHQoY29uc3Qgc3RkOjpzdHJpbmcgJnRyYWNlLCBzaXplX3Qg
dmFsdWUsIGNvbnN0IHN0ZDo6c3RyaW5nICZ1bml0cywgYm9vbCBpbXBvcnRhbnQpIGNvbnN0Ci17
Ci0gICAgcGVyZl90ZXN0OjpQcmludFJlc3VsdChtTmFtZSwgbVN1ZmZpeCwgdHJhY2UsIHZhbHVl
LCB1bml0cywgaW1wb3J0YW50KTsKLX0KLQotdm9pZCBBTkdMRVBlcmZUZXN0OjpTZXRVcCgpCi17
Ci19Ci0KLXZvaWQgQU5HTEVQZXJmVGVzdDo6VGVhckRvd24oKQotewotICAgIGRvdWJsZSByZWxh
dGl2ZVNjb3JlID0gc3RhdGljX2Nhc3Q8ZG91YmxlPihtTnVtU3RlcHNQZXJmb3JtZWQpIC8gbVRp
bWVyLT5nZXRFbGFwc2VkVGltZSgpOwotICAgIHByaW50UmVzdWx0KCJzY29yZSIsIHN0YXRpY19j
YXN0PHNpemVfdD4oc3RkOjpyb3VuZChyZWxhdGl2ZVNjb3JlKSksICJzY29yZSIsIHRydWUpOwot
fQotCi1kb3VibGUgQU5HTEVQZXJmVGVzdDo6bm9ybWFsaXplZFRpbWUoc2l6ZV90IHZhbHVlKSBj
b25zdAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIHN0YXRpY19j
YXN0PGRvdWJsZT4obU51bVN0ZXBzUGVyZm9ybWVkKTsKLX0KLQotc3RkOjpzdHJpbmcgUmVuZGVy
VGVzdFBhcmFtczo6c3VmZml4KCkgY29uc3QKLXsKLSAgICBzd2l0Y2ggKGdldFJlbmRlcmVyKCkp
Ci0gICAgewotICAgICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xF
OgotICAgICAgICAgICAgcmV0dXJuICJfZDNkMTEiOwotICAgICAgICBjYXNlIEVHTF9QTEFURk9S
TV9BTkdMRV9UWVBFX0QzRDlfQU5HTEU6Ci0gICAgICAgICAgICByZXR1cm4gIl9kM2Q5IjsKLSAg
ICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xfQU5HTEU6Ci0gICAgICAg
ICAgICByZXR1cm4gIl9nbCI7Ci0gICAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVf
T1BFTkdMRVNfQU5HTEU6Ci0gICAgICAgICAgICByZXR1cm4gIl9nbGVzIjsKLSAgICAgICAgY2Fz
ZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xFOgotICAgICAgICAgICAgcmV0
dXJuICJfZGVmYXVsdCI7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBhc3NlcnQoMCk7
Ci0gICAgICAgICAgICByZXR1cm4gIl91bmsiOwotICAgIH0KLX0KLQotQU5HTEVSZW5kZXJUZXN0
OjpBTkdMRVJlbmRlclRlc3QoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIGNvbnN0IFJlbmRlclRl
c3RQYXJhbXMgJnRlc3RQYXJhbXMpCi0gICAgOiBBTkdMRVBlcmZUZXN0KG5hbWUsIHRlc3RQYXJh
bXMuc3VmZml4KCkpLAotICAgICAgbVRlc3RQYXJhbXModGVzdFBhcmFtcyksCi0gICAgICBtRUdM
V2luZG93KG51bGxwdHIpLAotICAgICAgbU9TV2luZG93KG51bGxwdHIpCi17Ci19Ci0KLUFOR0xF
UmVuZGVyVGVzdDo6fkFOR0xFUmVuZGVyVGVzdCgpCi17Ci0gICAgU2FmZURlbGV0ZShtT1NXaW5k
b3cpOwotICAgIFNhZmVEZWxldGUobUVHTFdpbmRvdyk7Ci19Ci0KLXZvaWQgQU5HTEVSZW5kZXJU
ZXN0OjpTZXRVcCgpCi17Ci0gICAgbU9TV2luZG93ID0gQ3JlYXRlT1NXaW5kb3coKTsKLSAgICBt
RUdMV2luZG93ID0gbmV3IEVHTFdpbmRvdyhtVGVzdFBhcmFtcy5tYWpvclZlcnNpb24sIG1UZXN0
UGFyYW1zLm1pbm9yVmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVGVz
dFBhcmFtcy5lZ2xQYXJhbWV0ZXJzKTsKLSAgICBtRUdMV2luZG93LT5zZXRTd2FwSW50ZXJ2YWwo
MCk7Ci0KLSAgICBpZiAoIW1PU1dpbmRvdy0+aW5pdGlhbGl6ZShtTmFtZSwgbVRlc3RQYXJhbXMu
d2luZG93V2lkdGgsIG1UZXN0UGFyYW1zLndpbmRvd0hlaWdodCkpCi0gICAgewotICAgICAgICBG
QUlMKCkgPDwgIkZhaWxlZCBpbml0aWFsaXppbmcgT1NXaW5kb3ciOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgaWYgKCFtRUdMV2luZG93LT5pbml0aWFsaXplR0wobU9TV2luZG93KSkK
LSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiRmFpbGVkIGluaXRpYWxpemluZyBFR0xXaW5kb3ci
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaW5pdGlhbGl6ZUJlbmNobWFyaygpOwot
Ci0gICAgQU5HTEVQZXJmVGVzdDo6U2V0VXAoKTsKLX0KLQotdm9pZCBBTkdMRVJlbmRlclRlc3Q6
OlRlYXJEb3duKCkKLXsKLSAgICBBTkdMRVBlcmZUZXN0OjpUZWFyRG93bigpOwotCi0gICAgZGVz
dHJveUJlbmNobWFyaygpOwotCi0gICAgbUVHTFdpbmRvdy0+ZGVzdHJveUdMKCk7Ci0gICAgbU9T
V2luZG93LT5kZXN0cm95KCk7Ci19Ci0KLXZvaWQgQU5HTEVSZW5kZXJUZXN0OjpzdGVwKCkKLXsK
LSAgICAvLyBDbGVhciBldmVudHMgdGhhdCB0aGUgYXBwbGljYXRpb24gZGlkIG5vdCBwcm9jZXNz
IGZyb20gdGhpcyBmcmFtZQotICAgIEV2ZW50IGV2ZW50OwotICAgIGJvb2wgY2xvc2VkID0gZmFs
c2U7Ci0gICAgd2hpbGUgKHBvcEV2ZW50KCZldmVudCkpCi0gICAgewotICAgICAgICAvLyBJZiB0
aGUgYXBwbGljYXRpb24gZGlkIG5vdCBjYXRjaCBhIGNsb3NlIGV2ZW50LCBjbG9zZSBub3cKLSAg
ICAgICAgaWYgKGV2ZW50LlR5cGUgPT0gRXZlbnQ6OkVWRU5UX0NMT1NFRCkKLSAgICAgICAgewot
ICAgICAgICAgICAgY2xvc2VkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChj
bG9zZWQpCi0gICAgewotICAgICAgICBhYm9ydFRlc3QoKTsKLSAgICB9Ci0gICAgZWxzZQotICAg
IHsKLSAgICAgICAgZHJhd0JlbmNobWFyaygpOwotICAgICAgICAvLyBTd2FwIGlzIG5lZWRlZCBz
byB0aGF0IHRoZSBHUFUgZHJpdmVyIHdpbGwgb2NjYXNpb25hbGx5IGZsdXNoIGl0cyBpbnRlcm5h
bCBjb21tYW5kIHF1ZXVlCi0gICAgICAgIC8vIHRvIHRoZSBHUFUuIFRoZSBudWxsIGRldmljZSBi
ZW5jaG1hcmtzIGFyZSBvbmx5IHRlc3RpbmcgQ1BVIG92ZXJoZWFkLCBzbyB0aGV5IGRvbid0IG5l
ZWQKLSAgICAgICAgLy8gdG8gc3dhcC4KLSAgICAgICAgaWYgKG1UZXN0UGFyYW1zLmVnbFBhcmFt
ZXRlcnMuZGV2aWNlVHlwZSAhPSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfTlVMTF9B
TkdMRSkKLSAgICAgICAgewotICAgICAgICAgICAgbUVHTFdpbmRvdy0+c3dhcCgpOwotICAgICAg
ICB9Ci0gICAgICAgIG1PU1dpbmRvdy0+bWVzc2FnZUxvb3AoKTsKLSAgICB9Ci19Ci0KLXZvaWQg
QU5HTEVSZW5kZXJUZXN0OjpmaW5pc2hUZXN0KCkKLXsKLSAgICBpZiAobVRlc3RQYXJhbXMuZWds
UGFyYW1ldGVycy5kZXZpY2VUeXBlICE9IEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9O
VUxMX0FOR0xFKQotICAgIHsKLSAgICAgICAgZ2xGaW5pc2goKTsKLSAgICB9Ci19Ci0KLWJvb2wg
QU5HTEVSZW5kZXJUZXN0Ojpwb3BFdmVudChFdmVudCAqZXZlbnQpCi17Ci0gICAgcmV0dXJuIG1P
U1dpbmRvdy0+cG9wRXZlbnQoZXZlbnQpOwotfQotCi1PU1dpbmRvdyAqQU5HTEVSZW5kZXJUZXN0
OjpnZXRXaW5kb3coKQotewotICAgIHJldHVybiBtT1NXaW5kb3c7Ci19CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9BTkdMRVBlcmZUZXN0
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9BTkdMRVBl
cmZUZXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyZjJjYjQ0NDdlLi4wMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0
cy9BTkdMRVBlcmZUZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDcgKzAsMCBAQAotLy8KLS8v
IENvcHlyaWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC
U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls
ZS4KLS8vCi0vLyBBTkdMRVBlcmZUZXN0czoKLS8vICAgQmFzZSBjbGFzcyBmb3IgZ29vZ2xlIHRl
c3QgcGVyZm9ybWFuY2UgdGVzdHMKLS8vCi0KLSNpZm5kZWYgUEVSRl9URVNUU19BTkdMRV9QRVJG
X1RFU1RfSF8KLSNkZWZpbmUgUEVSRl9URVNUU19BTkdMRV9QRVJGX1RFU1RfSF8KLQotI2luY2x1
ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDx2ZWN0b3I+Ci0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5o
PgotI2luY2x1ZGUgPEVHTC9lZ2wuaD4KLSNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+Ci0KLSNpbmNs
dWRlICJjb21tb24vYW5nbGV1dGlscy5oIgotI2luY2x1ZGUgImNvbW1vbi9kZWJ1Zy5oIgotI2lu
Y2x1ZGUgIkVHTFdpbmRvdy5oIgotI2luY2x1ZGUgIk9TV2luZG93LmgiCi0jaW5jbHVkZSAidGVz
dF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuaCIKLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL2FuZ2xl
X3Rlc3RfaW5zdGFudGlhdGUuaCIKLSNpbmNsdWRlICJUaW1lci5oIgotCi1jbGFzcyBFdmVudDsK
LQotI2lmbmRlZiBBU1NFUlRfR0xfTk9fRVJST1IKLSNkZWZpbmUgQVNTRVJUX0dMX05PX0VSUk9S
KCkgQVNTRVJUX0VRKHN0YXRpY19jYXN0PEdMZW51bT4oR0xfTk9fRVJST1IpLCBnbEdldEVycm9y
KCkpCi0jZW5kaWYKLQotY2xhc3MgQU5HTEVQZXJmVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0
LCBhbmdsZTo6Tm9uQ29weWFibGUKLXsKLSAgcHVibGljOgotICAgIEFOR0xFUGVyZlRlc3QoY29u
c3Qgc3RkOjpzdHJpbmcgJm5hbWUsIGNvbnN0IHN0ZDo6c3RyaW5nICZzdWZmaXgpOwotICAgIHZp
cnR1YWwgfkFOR0xFUGVyZlRlc3QoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBzdGVwKCkgPSAwOwot
Ci0gICAgLy8gQ2FsbGVkIHJpZ2h0IGJlZm9yZSB0aW1lciBpcyBzdG9wcGVkIHRvIGxldCB0aGUg
dGVzdCB3YWl0IGZvciBhc3luY2hyb25vdXMgb3BlcmF0aW9ucy4KLSAgICB2aXJ0dWFsIHZvaWQg
ZmluaXNoVGVzdCgpIHt9Ci0KLSAgcHJvdGVjdGVkOgotICAgIHZvaWQgcnVuKCk7Ci0gICAgdm9p
ZCBwcmludFJlc3VsdChjb25zdCBzdGQ6OnN0cmluZyAmdHJhY2UsIGRvdWJsZSB2YWx1ZSwgY29u
c3Qgc3RkOjpzdHJpbmcgJnVuaXRzLCBib29sIGltcG9ydGFudCkgY29uc3Q7Ci0gICAgdm9pZCBw
cmludFJlc3VsdChjb25zdCBzdGQ6OnN0cmluZyAmdHJhY2UsIHNpemVfdCB2YWx1ZSwgY29uc3Qg
c3RkOjpzdHJpbmcgJnVuaXRzLCBib29sIGltcG9ydGFudCkgY29uc3Q7Ci0gICAgdm9pZCBTZXRV
cCgpIG92ZXJyaWRlOwotICAgIHZvaWQgVGVhckRvd24oKSBvdmVycmlkZTsKLQotICAgIC8vIE5v
cm1hbGl6ZSBhIHRpbWUgdmFsdWUgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgdGVzdCBsb29w
IGl0ZXJhdGlvbnMgKG1GcmFtZUNvdW50KQotICAgIGRvdWJsZSBub3JtYWxpemVkVGltZShzaXpl
X3QgdmFsdWUpIGNvbnN0OwotCi0gICAgLy8gQ2FsbCBpZiB0aGUgdGVzdCBzdGVwIHdhcyBhYm9y
dGVkIGFuZCB0aGUgdGVzdCBzaG91bGQgc3RvcCBydW5uaW5nLgotICAgIHZvaWQgYWJvcnRUZXN0
KCkgeyBtUnVubmluZyA9IGZhbHNlOyB9Ci0KLSAgICB1bnNpZ25lZCBpbnQgZ2V0TnVtU3RlcHNQ
ZXJmb3JtZWQoKSBjb25zdCB7IHJldHVybiBtTnVtU3RlcHNQZXJmb3JtZWQ7IH0KLQotICAgIHN0
ZDo6c3RyaW5nIG1OYW1lOwotICAgIHN0ZDo6c3RyaW5nIG1TdWZmaXg7Ci0gICAgVGltZXIgKm1U
aW1lcjsKLSAgICBkb3VibGUgbVJ1blRpbWVTZWNvbmRzOwotCi0gIHByaXZhdGU6Ci0gICAgdW5z
aWduZWQgaW50IG1OdW1TdGVwc1BlcmZvcm1lZDsKLSAgICBib29sIG1SdW5uaW5nOwotfTsKLQot
c3RydWN0IFJlbmRlclRlc3RQYXJhbXMgOiBwdWJsaWMgYW5nbGU6OlBsYXRmb3JtUGFyYW1ldGVy
cwotewotICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgc3VmZml4KCkgY29uc3Q7Ci0KLSAgICBFR0xp
bnQgd2luZG93V2lkdGg7Ci0gICAgRUdMaW50IHdpbmRvd0hlaWdodDsKLX07Ci0KLWNsYXNzIEFO
R0xFUmVuZGVyVGVzdCA6IHB1YmxpYyBBTkdMRVBlcmZUZXN0Ci17Ci0gIHB1YmxpYzoKLSAgICBB
TkdMRVJlbmRlclRlc3QoY29uc3Qgc3RkOjpzdHJpbmcgJm5hbWUsIGNvbnN0IFJlbmRlclRlc3RQ
YXJhbXMgJnRlc3RQYXJhbXMpOwotICAgIH5BTkdMRVJlbmRlclRlc3QoKTsKLQotICAgIHZpcnR1
YWwgdm9pZCBpbml0aWFsaXplQmVuY2htYXJrKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRlc3Ry
b3lCZW5jaG1hcmsoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBkcmF3QmVuY2htYXJrKCkgPSAw
OwotCi0gICAgYm9vbCBwb3BFdmVudChFdmVudCAqZXZlbnQpOwotCi0gICAgT1NXaW5kb3cgKmdl
dFdpbmRvdygpOwotCi0gIHByb3RlY3RlZDoKLSAgICBjb25zdCBSZW5kZXJUZXN0UGFyYW1zICZt
VGVzdFBhcmFtczsKLQotICBwcml2YXRlOgotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlkZTsKLSAg
ICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHN0ZXAoKSBvdmVycmlkZTsK
LSAgICB2b2lkIGZpbmlzaFRlc3QoKSBvdmVycmlkZTsKLQotICAgIEVHTFdpbmRvdyAqbUVHTFdp
bmRvdzsKLSAgICBPU1dpbmRvdyAqbU9TV2luZG93OwotfTsKLQotI2VuZGlmIC8vIFBFUkZfVEVT
VFNfQU5HTEVfUEVSRl9URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9CdWZmZXJTdWJEYXRhLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0J1ZmZlclN1YkRhdGEuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODE4ZDUyZWU5OC4uMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvQnVmZmVyU3ViRGF0YS5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MTggKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykg
MjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBCdWZm
ZXJTdWJEYXRhQmVuY2htYXJrOgotLy8gICBQZXJmb3JtYW5jZSB0ZXN0IGZvciBBTkdMRSBidWZm
ZXIgdXBkYXRlcy4KLS8vCi0KLSNpbmNsdWRlIDxzc3RyZWFtPgotCi0jaW5jbHVkZSAiQU5HTEVQ
ZXJmVGVzdC5oIgotI2luY2x1ZGUgInNoYWRlcl91dGlscy5oIgotCi11c2luZyBuYW1lc3BhY2Ug
YW5nbGU7Ci0KLW5hbWVzcGFjZQotewotCi1zdHJ1Y3QgQnVmZmVyU3ViRGF0YVBhcmFtcyBmaW5h
bCA6IHB1YmxpYyBSZW5kZXJUZXN0UGFyYW1zCi17Ci0gICAgQnVmZmVyU3ViRGF0YVBhcmFtcygp
Ci0gICAgewotICAgICAgICAvLyBDb21tb24gZGVmYXVsdCB2YWx1ZXMKLSAgICAgICAgbWFqb3JW
ZXJzaW9uID0gMjsKLSAgICAgICAgbWlub3JWZXJzaW9uID0gMDsKLSAgICAgICAgd2luZG93V2lk
dGggPSA1MTI7Ci0gICAgICAgIHdpbmRvd0hlaWdodCA9IDUxMjsKLSAgICAgICAgdXBkYXRlU2l6
ZSA9IDMwMDA7Ci0gICAgICAgIGJ1ZmZlclNpemUgPSA0MDAwMDAwMDsKLSAgICAgICAgaXRlcmF0
aW9ucyAgID0gNDsKLSAgICAgICAgdXBkYXRlUmF0ZSA9IDE7Ci0gICAgfQotCi0gICAgc3RkOjpz
dHJpbmcgc3VmZml4KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBHTGJvb2xlYW4gdmVydGV4Tm9y
bWFsaXplZDsKLSAgICBHTGVudW0gdmVydGV4VHlwZTsKLSAgICBHTGludCB2ZXJ0ZXhDb21wb25l
bnRDb3VudDsKLSAgICB1bnNpZ25lZCBpbnQgdXBkYXRlUmF0ZTsKLQotICAgIC8vIHN0YXRpYyBw
YXJhbWV0ZXJzCi0gICAgR0xzaXplaXB0ciB1cGRhdGVTaXplOwotICAgIEdMc2l6ZWlwdHIgYnVm
ZmVyU2l6ZTsKLSAgICB1bnNpZ25lZCBpbnQgaXRlcmF0aW9uczsKLX07Ci0KLXN0ZDo6b3N0cmVh
bSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBCdWZmZXJTdWJEYXRhUGFyYW1z
ICZwYXJhbXMpCi17Ci0gICAgb3MgPDwgcGFyYW1zLnN1ZmZpeCgpLnN1YnN0cigxKTsKLSAgICBy
ZXR1cm4gb3M7Ci19Ci0KLWNsYXNzIEJ1ZmZlclN1YkRhdGFCZW5jaG1hcmsgOiBwdWJsaWMgQU5H
TEVSZW5kZXJUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyA6OnRl
c3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxCdWZmZXJTdWJEYXRhUGFyYW1zPgotewotICBwdWJs
aWM6Ci0gICAgQnVmZmVyU3ViRGF0YUJlbmNobWFyaygpOwotCi0gICAgdm9pZCBpbml0aWFsaXpl
QmVuY2htYXJrKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZXN0cm95QmVuY2htYXJrKCkgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBkcmF3QmVuY2htYXJrKCkgb3ZlcnJpZGU7Ci0KLSAgcHJpdmF0ZToKLSAg
ICBHTHVpbnQgbVByb2dyYW07Ci0gICAgR0x1aW50IG1CdWZmZXI7Ci0gICAgdWludDhfdCAqbVVw
ZGF0ZURhdGE7Ci0gICAgaW50IG1OdW1UcmlzOwotfTsKLQotR0xmbG9hdCAqR2V0RmxvYXREYXRh
KEdMaW50IGNvbXBvbmVudENvdW50KQotewotICAgIHN0YXRpYyBHTGZsb2F0IHZlcnRpY2VzMltd
ID0KLSAgICB7Ci0gICAgICAgIDEsIDIsCi0gICAgICAgIDAsIDAsCi0gICAgICAgIDIsIDAsCi0g
ICAgfTsKLQotICAgIHN0YXRpYyBHTGZsb2F0IHZlcnRpY2VzM1tdID0KLSAgICB7Ci0gICAgICAg
IDEsIDIsIDEsCi0gICAgICAgIDAsIDAsIDEsCi0gICAgICAgIDIsIDAsIDEsCi0gICAgfTsKLQot
ICAgIHN0YXRpYyBHTGZsb2F0IHZlcnRpY2VzNFtdID0KLSAgICB7Ci0gICAgICAgIDEsIDIsIDEs
IDMsCi0gICAgICAgIDAsIDAsIDEsIDMsCi0gICAgICAgIDIsIDAsIDEsIDMsCi0gICAgfTsKLQot
ICAgIHN3aXRjaCAoY29tcG9uZW50Q291bnQpCi0gICAgewotICAgICAgICBjYXNlIDI6Ci0gICAg
ICAgICAgICByZXR1cm4gdmVydGljZXMyOwotICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICBy
ZXR1cm4gdmVydGljZXMzOwotICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICByZXR1cm4gdmVy
dGljZXM0OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLUdMc2l6ZWlwdHIgR2V0Tm9ybWFsaXplZERh
dGEoR0xzaXplaXB0ciBudW1FbGVtZW50cywgR0xmbG9hdCAqZmxvYXREYXRhLCBzdGQ6OnZlY3Rv
cjx1aW50OF90PiAqZGF0YSkKLXsKLSAgICBHTHNpemVpcHRyIHRyaURhdGFTaXplID0gc2l6ZW9m
KFQpICogbnVtRWxlbWVudHM7Ci0gICAgZGF0YS0+cmVzaXplKHRyaURhdGFTaXplKTsKLQotICAg
IFQgKmRlc3RQdHIgPSByZWludGVycHJldF9jYXN0PFQqPihkYXRhLT5kYXRhKCkpOwotCi0gICAg
Zm9yIChHTHNpemVpcHRyIGRhdGFJbmRleCA9IDA7IGRhdGFJbmRleCA8IG51bUVsZW1lbnRzOyBk
YXRhSW5kZXgrKykKLSAgICB7Ci0gICAgICAgIEdMZmxvYXQgc2NhbGVkID0gZmxvYXREYXRhW2Rh
dGFJbmRleF0gKiAwLjI1ZjsKLSAgICAgICAgZGVzdFB0cltkYXRhSW5kZXhdID0gc3RhdGljX2Nh
c3Q8VD4oc2NhbGVkICogc3RhdGljX2Nhc3Q8R0xmbG9hdD4oc3RkOjpudW1lcmljX2xpbWl0czxU
Pjo6bWF4KCkpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJpRGF0YVNpemU7Ci19Ci0KLXRlbXBs
YXRlIDxjbGFzcyBUPgotR0xzaXplaXB0ciBHZXRJbnREYXRhKEdMc2l6ZWlwdHIgbnVtRWxlbWVu
dHMsIEdMZmxvYXQgKmZsb2F0RGF0YSwgc3RkOjp2ZWN0b3I8dWludDhfdD4gKmRhdGEpCi17Ci0g
ICAgR0xzaXplaXB0ciB0cmlEYXRhU2l6ZSA9IHNpemVvZihUKSAqIG51bUVsZW1lbnRzOwotICAg
IGRhdGEtPnJlc2l6ZSh0cmlEYXRhU2l6ZSk7Ci0KLSAgICBUICpkZXN0UHRyID0gcmVpbnRlcnBy
ZXRfY2FzdDxUKj4oZGF0YS0+ZGF0YSgpKTsKLQotICAgIGZvciAoR0xzaXplaXB0ciBkYXRhSW5k
ZXggPSAwOyBkYXRhSW5kZXggPCBudW1FbGVtZW50czsgZGF0YUluZGV4KyspCi0gICAgewotICAg
ICAgICBkZXN0UHRyW2RhdGFJbmRleF0gPSBzdGF0aWNfY2FzdDxUPihmbG9hdERhdGFbZGF0YUlu
ZGV4XSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRyaURhdGFTaXplOwotfQotCi1HTHNpemVpcHRy
IEdldFZlcnRleERhdGEoR0xlbnVtIHR5cGUsIEdMaW50IGNvbXBvbmVudENvdW50LCBHTGJvb2xl
YW4gbm9ybWFsaXplZCwgc3RkOjp2ZWN0b3I8dWludDhfdD4gKmRhdGEpCi17Ci0gICAgR0xzaXpl
aXB0ciB0cmlEYXRhU2l6ZSA9IDA7Ci0gICAgR0xmbG9hdCAqZmxvYXREYXRhID0gR2V0RmxvYXRE
YXRhKGNvbXBvbmVudENvdW50KTsKLQotICAgIGlmICh0eXBlID09IEdMX0ZMT0FUKQotICAgIHsK
LSAgICAgICAgdHJpRGF0YVNpemUgPSBzaXplb2YoR0xmbG9hdCkgKiBjb21wb25lbnRDb3VudCAq
IDM7Ci0gICAgICAgIGRhdGEtPnJlc2l6ZSh0cmlEYXRhU2l6ZSk7Ci0gICAgICAgIG1lbWNweShk
YXRhLT5kYXRhKCksIGZsb2F0RGF0YSwgdHJpRGF0YVNpemUpOwotICAgIH0KLSAgICBlbHNlIGlm
IChub3JtYWxpemVkID09IEdMX1RSVUUpCi0gICAgewotICAgICAgICBHTHNpemVpcHRyIG51bUVs
ZW1lbnRzID0gY29tcG9uZW50Q291bnQgKiAzOwotCi0gICAgICAgIHN3aXRjaCAodHlwZSkKLSAg
ICAgICAgewotICAgICAgICAgICAgY2FzZSBHTF9CWVRFOgotICAgICAgICAgICAgICAgIHRyaURh
dGFTaXplID0gR2V0Tm9ybWFsaXplZERhdGE8R0xieXRlPihudW1FbGVtZW50cywgZmxvYXREYXRh
LCBkYXRhKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgR0xfU0hP
UlQ6Ci0gICAgICAgICAgICAgICAgdHJpRGF0YVNpemUgPSBHZXROb3JtYWxpemVkRGF0YTxHTHNo
b3J0PihudW1FbGVtZW50cywgZmxvYXREYXRhLCBkYXRhKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgR0xfSU5UOgotICAgICAgICAgICAgICAgIHRyaURhdGFTaXpl
ID0gR2V0Tm9ybWFsaXplZERhdGE8R0xpbnQ+KG51bUVsZW1lbnRzLCBmbG9hdERhdGEsIGRhdGEp
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9C
WVRFOgotICAgICAgICAgICAgICAgIHRyaURhdGFTaXplID0gR2V0Tm9ybWFsaXplZERhdGE8R0x1
Ynl0ZT4obnVtRWxlbWVudHMsIGZsb2F0RGF0YSwgZGF0YSk7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgotICAgICAgICAgICAgICAg
IHRyaURhdGFTaXplID0gR2V0Tm9ybWFsaXplZERhdGE8R0x1c2hvcnQ+KG51bUVsZW1lbnRzLCBm
bG9hdERhdGEsIGRhdGEpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2Fz
ZSBHTF9VTlNJR05FRF9JTlQ6Ci0gICAgICAgICAgICAgICAgdHJpRGF0YVNpemUgPSBHZXROb3Jt
YWxpemVkRGF0YTxHTHVpbnQ+KG51bUVsZW1lbnRzLCBmbG9hdERhdGEsIGRhdGEpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBh
c3NlcnQoMCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgR0xz
aXplaXB0ciBudW1FbGVtZW50cyA9IGNvbXBvbmVudENvdW50ICogMzsKLQotICAgICAgICBzd2l0
Y2ggKHR5cGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNhc2UgR0xfQllURToKLSAgICAgICAg
ICAgICAgICB0cmlEYXRhU2l6ZSA9IEdldEludERhdGE8R0xieXRlPihudW1FbGVtZW50cywgZmxv
YXREYXRhLCBkYXRhKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
R0xfU0hPUlQ6Ci0gICAgICAgICAgICAgICAgdHJpRGF0YVNpemUgPSBHZXRJbnREYXRhPEdMc2hv
cnQ+KG51bUVsZW1lbnRzLCBmbG9hdERhdGEsIGRhdGEpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBHTF9JTlQ6Ci0gICAgICAgICAgICAgICAgdHJpRGF0YVNpemUg
PSBHZXRJbnREYXRhPEdMaW50PihudW1FbGVtZW50cywgZmxvYXREYXRhLCBkYXRhKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAg
ICAgICAgICAgICAgICB0cmlEYXRhU2l6ZSA9IEdldEludERhdGE8R0x1Ynl0ZT4obnVtRWxlbWVu
dHMsIGZsb2F0RGF0YSwgZGF0YSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgotICAgICAgICAgICAgICAgIHRyaURhdGFTaXplID0g
R2V0SW50RGF0YTxHTHVzaG9ydD4obnVtRWxlbWVudHMsIGZsb2F0RGF0YSwgZGF0YSk7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKLSAg
ICAgICAgICAgICAgICB0cmlEYXRhU2l6ZSA9IEdldEludERhdGE8R0x1aW50PihudW1FbGVtZW50
cywgZmxvYXREYXRhLCBkYXRhKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KDApOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgcmV0dXJuIHRyaURhdGFTaXplOwotfQotCi1zdGQ6OnN0cmluZyBCdWZmZXJTdWJEYXRh
UGFyYW1zOjpzdWZmaXgoKSBjb25zdAotewotICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cnN0cjsK
LQotICAgIHN0cnN0ciA8PCBSZW5kZXJUZXN0UGFyYW1zOjpzdWZmaXgoKTsKLQotICAgIGlmICh2
ZXJ0ZXhOb3JtYWxpemVkKQotICAgIHsKLSAgICAgICAgc3Ryc3RyIDw8ICJfbm9ybSI7Ci0gICAg
fQotCi0gICAgc3dpdGNoICh2ZXJ0ZXhUeXBlKQotICAgIHsKLSAgICAgICAgY2FzZSBHTF9GTE9B
VDoKLSAgICAgICAgICAgIHN0cnN0ciA8PCAiX2Zsb2F0IjsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIEdMX0lOVDoKLSAgICAgICAgICAgIHN0cnN0ciA8PCAiX2ludCI7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHTF9CWVRFOgotICAgICAgICAgICAgc3Ryc3Ry
IDw8ICJfYnl0ZSI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHTF9TSE9SVDoK
LSAgICAgICAgICAgIHN0cnN0ciA8PCAiX3Nob3J0IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEdMX1VOU0lHTkVEX0lOVDoKLSAgICAgICAgICAgIHN0cnN0ciA8PCAiX3VpbnQi
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAg
ICAgICAgICAgIHN0cnN0ciA8PCAiX3VieXRlIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUOgotICAgICAgICAgICAgc3Ryc3RyIDw8ICJfdXNob3J0
IjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgc3Ry
c3RyIDw8ICJfdnVua18iIDw8IHZlcnRleFR5cGUgPDwgIl8iOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgfQotCi0gICAgc3Ryc3RyIDw8IHZlcnRleENvbXBvbmVudENvdW50OwotICAgIHN0cnN0
ciA8PCAiX2V2ZXJ5IiA8PCB1cGRhdGVSYXRlOwotCi0gICAgcmV0dXJuIHN0cnN0ci5zdHIoKTsK
LX0KLQotQnVmZmVyU3ViRGF0YUJlbmNobWFyazo6QnVmZmVyU3ViRGF0YUJlbmNobWFyaygpCi0g
ICAgOiBBTkdMRVJlbmRlclRlc3QoIkJ1ZmZlclN1YkRhdGEiLCBHZXRQYXJhbSgpKSwKLSAgICAg
IG1Qcm9ncmFtKDApLAotICAgICAgbUJ1ZmZlcigwKSwKLSAgICAgIG1VcGRhdGVEYXRhKG51bGxw
dHIpLAotICAgICAgbU51bVRyaXMoMCkKLXsKLX0KLQotdm9pZCBCdWZmZXJTdWJEYXRhQmVuY2ht
YXJrOjppbml0aWFsaXplQmVuY2htYXJrKCkKLXsKLSAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBH
ZXRQYXJhbSgpOwotCi0gICAgQVNTRVJUX0xUKDEsIHBhcmFtcy52ZXJ0ZXhDb21wb25lbnRDb3Vu
dCk7Ci0gICAgQVNTRVJUX0xUKDB1LCBwYXJhbXMuaXRlcmF0aW9ucyk7Ci0KLSAgICBjb25zdCBz
dGQ6OnN0cmluZyB2cyA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIGF0dHJpYnV0ZSB2
ZWMyIHZQb3NpdGlvbjsKLSAgICAgICAgdW5pZm9ybSBmbG9hdCB1U2NhbGU7Ci0gICAgICAgIHVu
aWZvcm0gZmxvYXQgdU9mZnNldDsKLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHZQb3NpdGlvbiAqIHZlYzIodVNjYWxlKSAtIHZl
YzIodU9mZnNldCksIDAsIDEpOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIGNvbnN0IHN0ZDo6
c3RyaW5nIGZzID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgcHJlY2lzaW9uIG1lZGl1
bXAgZmxvYXQ7Ci0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGds
X0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKLSAgICAgICAgfQotICAgICk7
Ci0KLSAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzLCBmcyk7Ci0gICAgQVNTRVJUX05F
KDB1LCBtUHJvZ3JhbSk7Ci0KLSAgICAvLyBVc2UgdGhlIHByb2dyYW0gb2JqZWN0Ci0gICAgZ2xV
c2VQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBm
LCAwLjBmKTsKLQotCi0gICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gemVyb0RhdGEocGFyYW1zLmJ1
ZmZlclNpemUpOwotICAgIG1lbXNldCgmemVyb0RhdGFbMF0sIDAsIHplcm9EYXRhLnNpemUoKSk7
Ci0KLSAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1CdWZmZXIpOwotICAgIGdsQmluZEJ1ZmZlcihHTF9B
UlJBWV9CVUZGRVIsIG1CdWZmZXIpOwotICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIs
IHBhcmFtcy5idWZmZXJTaXplLCAmemVyb0RhdGFbMF0sIEdMX0RZTkFNSUNfRFJBVyk7Ci0KLSAg
ICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoMCwgcGFyYW1zLnZlcnRleENvbXBvbmVudENvdW50LCBw
YXJhbXMudmVydGV4VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnZlcnRl
eE5vcm1hbGl6ZWQsIDAsIDApOwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkoMCk7Ci0K
LSAgICBpZiAocGFyYW1zLnVwZGF0ZVNpemUgPiAwKQotICAgIHsKLSAgICAgICAgbVVwZGF0ZURh
dGEgPSBuZXcgdWludDhfdFtwYXJhbXMudXBkYXRlU2l6ZV07Ci0gICAgfQotCi0gICAgc3RkOjp2
ZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICBHTHNpemVpIHRyaURhdGFTaXplID0gc3RhdGljX2Nh
c3Q8R0xzaXplaT4oR2V0VmVydGV4RGF0YShwYXJhbXMudmVydGV4VHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMu
dmVydGV4Q29tcG9uZW50Q291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLnZlcnRleE5vcm1hbGl6ZWQsICZkYXRh
KSk7Ci0KLSAgICBtTnVtVHJpcyA9IHN0YXRpY19jYXN0PGludD4ocGFyYW1zLnVwZGF0ZVNpemUg
LyB0cmlEYXRhU2l6ZSk7Ci0gICAgZm9yIChpbnQgaSA9IDAsIG9mZnNldCA9IDA7IGkgPCBtTnVt
VHJpczsgKytpKQotICAgIHsKLSAgICAgICAgbWVtY3B5KG1VcGRhdGVEYXRhICsgb2Zmc2V0LCAm
ZGF0YVswXSwgdHJpRGF0YVNpemUpOwotICAgICAgICBvZmZzZXQgKz0gdHJpRGF0YVNpemU7Ci0g
ICAgfQotCi0gICAgaWYgKHBhcmFtcy51cGRhdGVTaXplID09IDApCi0gICAgewotICAgICAgICBt
TnVtVHJpcyA9IDE7Ci0gICAgICAgIGdsQnVmZmVyU3ViRGF0YShHTF9BUlJBWV9CVUZGRVIsIDAs
IGRhdGEuc2l6ZSgpLCAmZGF0YVswXSk7Ci0gICAgfQotCi0gICAgLy8gU2V0IHRoZSB2aWV3cG9y
dAotICAgIGdsVmlld3BvcnQoMCwgMCwgZ2V0V2luZG93KCktPmdldFdpZHRoKCksIGdldFdpbmRv
dygpLT5nZXRIZWlnaHQoKSk7Ci0KLSAgICBHTGZsb2F0IHNjYWxlID0gMC41ZjsKLSAgICBHTGZs
b2F0IG9mZnNldCA9IDAuNWY7Ci0KLSAgICBpZiAocGFyYW1zLnZlcnRleE5vcm1hbGl6ZWQgPT0g
R0xfVFJVRSkKLSAgICB7Ci0gICAgICAgIHNjYWxlID0gMi4wZjsKLSAgICAgICAgb2Zmc2V0ID0g
MC41ZjsKLSAgICB9Ci0KLSAgICBnbFVuaWZvcm0xZihnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJv
Z3JhbSwgInVTY2FsZSIpLCBzY2FsZSk7Ci0gICAgZ2xVbmlmb3JtMWYoZ2xHZXRVbmlmb3JtTG9j
YXRpb24obVByb2dyYW0sICJ1T2Zmc2V0IiksIG9mZnNldCk7Ci0KLSAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLX0KLQotdm9pZCBCdWZmZXJTdWJEYXRhQmVuY2htYXJrOjpkZXN0cm95QmVuY2ht
YXJrKCkKLXsKLSAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotICAgIGdsRGVsZXRlQnVm
ZmVycygxLCAmbUJ1ZmZlcik7Ci0gICAgU2FmZURlbGV0ZUFycmF5KG1VcGRhdGVEYXRhKTsKLX0K
LQotdm9pZCBCdWZmZXJTdWJEYXRhQmVuY2htYXJrOjpkcmF3QmVuY2htYXJrKCkKLXsKLSAgICBn
bENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgY29uc3QgYXV0byAmcGFyYW1zID0g
R2V0UGFyYW0oKTsKLQotICAgIGZvciAodW5zaWduZWQgaW50IGl0ID0gMDsgaXQgPCBwYXJhbXMu
aXRlcmF0aW9uczsgaXQrKykKLSAgICB7Ci0gICAgICAgIGlmIChwYXJhbXMudXBkYXRlU2l6ZSA+
IDAgJiYgKChnZXROdW1TdGVwc1BlcmZvcm1lZCgpICUgcGFyYW1zLnVwZGF0ZVJhdGUpID09IDAp
KQotICAgICAgICB7Ci0gICAgICAgICAgICBnbEJ1ZmZlclN1YkRhdGEoR0xfQVJSQVlfQlVGRkVS
LCAwLCBwYXJhbXMudXBkYXRlU2l6ZSwgbVVwZGF0ZURhdGEpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyAqIG1OdW1UcmlzKTsKLSAgICB9Ci0K
LSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotQnVmZmVyU3ViRGF0YVBhcmFtcyBCdWZm
ZXJVcGRhdGVEM0QxMVBhcmFtcygpCi17Ci0gICAgQnVmZmVyU3ViRGF0YVBhcmFtcyBwYXJhbXM7
Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06OkQzRDExKCk7Ci0gICAg
cGFyYW1zLnZlcnRleFR5cGUgPSBHTF9GTE9BVDsKLSAgICBwYXJhbXMudmVydGV4Q29tcG9uZW50
Q291bnQgPSA0OwotICAgIHBhcmFtcy52ZXJ0ZXhOb3JtYWxpemVkID0gR0xfRkFMU0U7Ci0gICAg
cmV0dXJuIHBhcmFtczsKLX0KLQotQnVmZmVyU3ViRGF0YVBhcmFtcyBCdWZmZXJVcGRhdGVEM0Q5
UGFyYW1zKCkKLXsKLSAgICBCdWZmZXJTdWJEYXRhUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMu
ZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNEOSgpOwotICAgIHBhcmFtcy52ZXJ0ZXhU
eXBlID0gR0xfRkxPQVQ7Ci0gICAgcGFyYW1zLnZlcnRleENvbXBvbmVudENvdW50ID0gNDsKLSAg
ICBwYXJhbXMudmVydGV4Tm9ybWFsaXplZCA9IEdMX0ZBTFNFOwotICAgIHJldHVybiBwYXJhbXM7
Ci19Ci0KLUJ1ZmZlclN1YkRhdGFQYXJhbXMgQnVmZmVyVXBkYXRlT3BlbkdMUGFyYW1zKCkKLXsK
LSAgICBCdWZmZXJTdWJEYXRhUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVy
cyA9IGVnbF9wbGF0Zm9ybTo6T1BFTkdMKCk7Ci0gICAgcGFyYW1zLnZlcnRleFR5cGUgPSBHTF9G
TE9BVDsKLSAgICBwYXJhbXMudmVydGV4Q29tcG9uZW50Q291bnQgPSA0OwotICAgIHBhcmFtcy52
ZXJ0ZXhOb3JtYWxpemVkID0gR0xfRkFMU0U7Ci0gICAgcmV0dXJuIHBhcmFtczsKLX0KLQotVEVT
VF9QKEJ1ZmZlclN1YkRhdGFCZW5jaG1hcmssIFJ1bikKLXsKLSAgICBydW4oKTsKLX0KLQotQU5H
TEVfSU5TVEFOVElBVEVfVEVTVChCdWZmZXJTdWJEYXRhQmVuY2htYXJrLAotICAgICAgICAgICAg
ICAgICAgICAgICBCdWZmZXJVcGRhdGVEM0QxMVBhcmFtcygpLCBCdWZmZXJVcGRhdGVEM0Q5UGFy
YW1zKCksCi0gICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlclVwZGF0ZU9wZW5HTFBhcmFtcygp
KTsKLQotfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0RyYXdDYWxsUGVyZi5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9EcmF3Q2FsbFBlcmYuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlNTAwN2UxOWVmMi4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvRHJhd0NhbGxQZXJmLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDI1NiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE0
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIERyYXdDYWxs
UGVyZjoKLS8vICAgUGVyZm9ybWFuY2UgdGVzdHMgZm9yIEFOR0xFIGRyYXcgY2FsbCBvdmVyaGVh
ZC4KLS8vCi0KLSNpbmNsdWRlIDxzc3RyZWFtPgotCi0jaW5jbHVkZSAiQU5HTEVQZXJmVGVzdC5o
IgotI2luY2x1ZGUgInNoYWRlcl91dGlscy5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7Ci0K
LW5hbWVzcGFjZQotewotCi1zdHJ1Y3QgRHJhd0NhbGxQZXJmUGFyYW1zIGZpbmFsIDogcHVibGlj
IFJlbmRlclRlc3RQYXJhbXMKLXsKLSAgICAvLyBDb21tb24gZGVmYXVsdCBvcHRpb25zCi0gICAg
RHJhd0NhbGxQZXJmUGFyYW1zKCkKLSAgICB7Ci0gICAgICAgIG1ham9yVmVyc2lvbiA9IDI7Ci0g
ICAgICAgIG1pbm9yVmVyc2lvbiA9IDA7Ci0gICAgICAgIHdpbmRvd1dpZHRoID0gMjU2OwotICAg
ICAgICB3aW5kb3dIZWlnaHQgPSAyNTY7Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgc3VmZml4
KCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cnN0
cjsKLQotICAgICAgICBzdHJzdHIgPDwgUmVuZGVyVGVzdFBhcmFtczo6c3VmZml4KCk7Ci0KLSAg
ICAgICAgaWYgKG51bVRyaXMgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgc3Ryc3RyIDw8
ICJfdmFsaWRhdGlvbl9vbmx5IjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh1c2VGQk8pCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHN0cnN0ciA8PCAiX3JlbmRlcl90b190ZXh0dXJlIjsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChlZ2xQYXJhbWV0ZXJzLmRldmljZVR5cGUgPT0gRUdMX1BM
QVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX05VTExfQU5HTEUpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIHN0cnN0ciA8PCAiX251bGwiOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHN0cnN0
ci5zdHIoKTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBpbnQgaXRlcmF0aW9ucyA9IDUwOwotICAg
IGRvdWJsZSBydW5UaW1lU2Vjb25kcyAgID0gMTAuMDsKLSAgICBpbnQgbnVtVHJpcyAgICAgICAg
ICAgICA9IDE7Ci0gICAgYm9vbCB1c2VGQk8gICAgICAgICAgICAgPSBmYWxzZTsKLX07Ci0KLXN0
ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBEcmF3Q2FsbFBl
cmZQYXJhbXMgJnBhcmFtcykKLXsKLSAgICBvcyA8PCBwYXJhbXMuc3VmZml4KCkuc3Vic3RyKDEp
OwotICAgIHJldHVybiBvczsKLX0KLQotY2xhc3MgRHJhd0NhbGxQZXJmQmVuY2htYXJrIDogcHVi
bGljIEFOR0xFUmVuZGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxp
YyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxEcmF3Q2FsbFBlcmZQYXJhbXM+Ci17Ci0g
IHB1YmxpYzoKLSAgICBEcmF3Q2FsbFBlcmZCZW5jaG1hcmsoKTsKLQotICAgIHZvaWQgaW5pdGlh
bGl6ZUJlbmNobWFyaygpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVzdHJveUJlbmNobWFyaygpIG92
ZXJyaWRlOwotICAgIHZvaWQgZHJhd0JlbmNobWFyaygpIG92ZXJyaWRlOwotCi0gIHByaXZhdGU6
Ci0gICAgR0x1aW50IG1Qcm9ncmFtID0gMDsKLSAgICBHTHVpbnQgbUJ1ZmZlciAgPSAwOwotICAg
IEdMdWludCBtRkJPICAgICA9IDA7Ci0gICAgR0x1aW50IG1UZXh0dXJlID0gMDsKLSAgICBpbnQg
bU51bVRyaXMgICAgPSBHZXRQYXJhbSgpLm51bVRyaXM7Ci19OwotCi1EcmF3Q2FsbFBlcmZCZW5j
aG1hcms6OkRyYXdDYWxsUGVyZkJlbmNobWFyaygpIDogQU5HTEVSZW5kZXJUZXN0KCJEcmF3Q2Fs
bFBlcmYiLCBHZXRQYXJhbSgpKQotewotICAgIG1SdW5UaW1lU2Vjb25kcyA9IEdldFBhcmFtKCku
cnVuVGltZVNlY29uZHM7Ci19Ci0KLXZvaWQgRHJhd0NhbGxQZXJmQmVuY2htYXJrOjppbml0aWFs
aXplQmVuY2htYXJrKCkKLXsKLSAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOwot
Ci0gICAgQVNTRVJUX0xUKDB1LCBwYXJhbXMuaXRlcmF0aW9ucyk7Ci0KLSAgICBjb25zdCBzdGQ6
OnN0cmluZyB2cyA9IFNIQURFUl9TT1VSQ0UKLSAgICAoCi0gICAgICAgIGF0dHJpYnV0ZSB2ZWMy
IHZQb3NpdGlvbjsKLSAgICAgICAgdW5pZm9ybSBmbG9hdCB1U2NhbGU7Ci0gICAgICAgIHVuaWZv
cm0gZmxvYXQgdU9mZnNldDsKLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAg
ICAgICAgZ2xfUG9zaXRpb24gPSB2ZWM0KHZQb3NpdGlvbiAqIHZlYzIodVNjYWxlKSAtIHZlYzIo
dU9mZnNldCksIDAsIDEpOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nIGZzID0gU0hBREVSX1NPVVJDRQotICAgICgKLSAgICAgICAgcHJlY2lzaW9uIG1lZGl1bXAg
ZmxvYXQ7Ci0gICAgICAgIHZvaWQgbWFpbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsX0Zy
YWdDb2xvciA9IHZlYzQoMS4wLCAwLjAsIDAuMCwgMS4wKTsKLSAgICAgICAgfQotICAgICk7Ci0K
LSAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzLCBmcyk7Ci0gICAgQVNTRVJUX05FKDB1
LCBtUHJvZ3JhbSk7Ci0KLSAgICAvLyBVc2UgdGhlIHByb2dyYW0gb2JqZWN0Ci0gICAgZ2xVc2VQ
cm9ncmFtKG1Qcm9ncmFtKTsKLQotICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAw
LjBmKTsKLQotICAgIHN0ZDo6dmVjdG9yPEdMZmxvYXQ+IGZsb2F0RGF0YTsKLQotICAgIGZvciAo
aW50IHF1YWRJbmRleCA9IDA7IHF1YWRJbmRleCA8IG1OdW1UcmlzOyArK3F1YWRJbmRleCkKLSAg
ICB7Ci0gICAgICAgIGZsb2F0RGF0YS5wdXNoX2JhY2soMSk7Ci0gICAgICAgIGZsb2F0RGF0YS5w
dXNoX2JhY2soMik7Ci0gICAgICAgIGZsb2F0RGF0YS5wdXNoX2JhY2soMCk7Ci0gICAgICAgIGZs
b2F0RGF0YS5wdXNoX2JhY2soMCk7Ci0gICAgICAgIGZsb2F0RGF0YS5wdXNoX2JhY2soMik7Ci0g
ICAgICAgIGZsb2F0RGF0YS5wdXNoX2JhY2soMCk7Ci0gICAgfQotCi0gICAgZ2xHZW5CdWZmZXJz
KDEsICZtQnVmZmVyKTsKLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtQnVmZmVy
KTsKLQotICAgIC8vIFRvIGF2b2lkIGdlbmVyYXRpbmcgR0wgZXJyb3JzIHdoZW4gdGVzdGluZyB2
YWxpZGF0aW9uLW9ubHkKLSAgICBpZiAoZmxvYXREYXRhLmVtcHR5KCkpCi0gICAgewotICAgICAg
ICBmbG9hdERhdGEucHVzaF9iYWNrKDAuMGYpOwotICAgIH0KLQotICAgIGdsQnVmZmVyRGF0YShH
TF9BUlJBWV9CVUZGRVIsIGZsb2F0RGF0YS5zaXplKCkgKiBzaXplb2YoR0xmbG9hdCksICZmbG9h
dERhdGFbMF0sIEdMX1NUQVRJQ19EUkFXKTsKLQotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcigw
LCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIDApOwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoMCk7Ci0KLSAgICAvLyBTZXQgdGhlIHZpZXdwb3J0Ci0gICAgZ2xWaWV3cG9ydCgwLCAw
LCBnZXRXaW5kb3coKS0+Z2V0V2lkdGgoKSwgZ2V0V2luZG93KCktPmdldEhlaWdodCgpKTsKLQot
ICAgIEdMZmxvYXQgc2NhbGUgPSAwLjVmOwotICAgIEdMZmxvYXQgb2Zmc2V0ID0gMC41ZjsKLQot
ICAgIGdsVW5pZm9ybTFmKGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidVNjYWxlIiks
IHNjYWxlKTsKLSAgICBnbFVuaWZvcm0xZihnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwg
InVPZmZzZXQiKSwgb2Zmc2V0KTsKLQotICAgIGlmIChwYXJhbXMudXNlRkJPKQotICAgIHsKLSAg
ICAgICAgZ2xHZW5GcmFtZWJ1ZmZlcnMoMSwgJm1GQk8pOwotICAgICAgICBnbEJpbmRGcmFtZWJ1
ZmZlcihHTF9GUkFNRUJVRkZFUiwgbUZCTyk7Ci0gICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJm1U
ZXh0dXJlKTsKLSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZSk7
Ci0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCBnZXRXaW5k
b3coKS0+Z2V0V2lkdGgoKSwgZ2V0V2luZG93KCktPmdldEhlaWdodCgpLAotICAgICAgICAgICAg
ICAgICAgICAgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgbnVsbHB0cik7Ci0gICAgICAg
IGdsRnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1F
TlQwLCBHTF9URVhUVVJFXzJELCBtVGV4dHVyZSwgMCk7Ci0gICAgfQotCi0gICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci19Ci0KLXZvaWQgRHJhd0NhbGxQZXJmQmVuY2htYXJrOjpkZXN0cm95QmVu
Y2htYXJrKCkKLXsKLSAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotICAgIGdsRGVsZXRl
QnVmZmVycygxLCAmbUJ1ZmZlcik7Ci0gICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUp
OwotICAgIGdsRGVsZXRlRnJhbWVidWZmZXJzKDEsICZtRkJPKTsKLX0KLQotdm9pZCBEcmF3Q2Fs
bFBlcmZCZW5jaG1hcms6OmRyYXdCZW5jaG1hcmsoKQotewotICAgIC8vIFRoaXMgd29ya2Fyb3Vu
ZCBmaXhlcyBhIGh1Z2UgcXVldWUgb2YgZ3JhcGhpY3MgY29tbWFuZHMgYWNjdW11bGF0aW5nIG9u
IHRoZSBHTAotICAgIC8vIGJhY2stZW5kLiBUaGUgR0wgYmFjay1lbmQgZG9lc24ndCBoYXZlIGEg
cHJvcGVyIE5VTEwgZGV2aWNlIGF0IHRoZSBtb21lbnQuCi0gICAgLy8gVE9ETyhqbWFkaWxsKTog
UmVtb3ZlIHRoaXMgd2hlbi9pZiB3ZSBldmVyIGdldCBhIHByb3BlciBPcGVuR0wgTlVMTCBkZXZp
Y2UuCi0gICAgY29uc3QgYXV0byAmZWdsUGFyYW1zID0gR2V0UGFyYW0oKS5lZ2xQYXJhbWV0ZXJz
OwotICAgIGlmIChlZ2xQYXJhbXMuZGV2aWNlVHlwZSAhPSBFR0xfUExBVEZPUk1fQU5HTEVfREVW
SUNFX1RZUEVfTlVMTF9BTkdMRSB8fAotICAgICAgICAoZWdsUGFyYW1zLnJlbmRlcmVyICE9IEVH
TF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSAmJgotICAgICAgICAgZWdsUGFyYW1z
LnJlbmRlcmVyICE9IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTEVTX0FOR0xFKSkKLSAg
ICB7Ci0gICAgICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgfQotCi0gICAg
Y29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKLQotICAgIGZvciAodW5zaWduZWQgaW50
IGl0ID0gMDsgaXQgPCBwYXJhbXMuaXRlcmF0aW9uczsgaXQrKykKLSAgICB7Ci0gICAgICAgIGds
RHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KDMgKiBtTnVt
VHJpcykpOwotICAgIH0KLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotfQotCi11c2luZyBu
YW1lc3BhY2UgZWdsX3BsYXRmb3JtOwotCi1EcmF3Q2FsbFBlcmZQYXJhbXMgRHJhd0NhbGxQZXJm
RDNEMTFQYXJhbXMoYm9vbCB1c2VOdWxsRGV2aWNlLCBib29sIHJlbmRlclRvVGV4dHVyZSkKLXsK
LSAgICBEcmF3Q2FsbFBlcmZQYXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJz
ID0gdXNlTnVsbERldmljZSA/IEQzRDExX05VTEwoKSA6IEQzRDExKCk7Ci0gICAgcGFyYW1zLnVz
ZUZCTyAgICAgICAgPSByZW5kZXJUb1RleHR1cmU7Ci0gICAgcmV0dXJuIHBhcmFtczsKLX0KLQot
RHJhd0NhbGxQZXJmUGFyYW1zIERyYXdDYWxsUGVyZkQzRDlQYXJhbXMoYm9vbCB1c2VOdWxsRGV2
aWNlLCBib29sIHJlbmRlclRvVGV4dHVyZSkKLXsKLSAgICBEcmF3Q2FsbFBlcmZQYXJhbXMgcGFy
YW1zOwotICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gdXNlTnVsbERldmljZSA/IEQzRDlfTlVM
TCgpIDogRDNEOSgpOwotICAgIHBhcmFtcy51c2VGQk8gICAgICAgID0gcmVuZGVyVG9UZXh0dXJl
OwotICAgIHJldHVybiBwYXJhbXM7Ci19Ci0KLURyYXdDYWxsUGVyZlBhcmFtcyBEcmF3Q2FsbFBl
cmZPcGVuR0xQYXJhbXMoYm9vbCB1c2VOdWxsRGV2aWNlLCBib29sIHJlbmRlclRvVGV4dHVyZSkK
LXsKLSAgICBEcmF3Q2FsbFBlcmZQYXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQYXJhbWV0
ZXJzID0gdXNlTnVsbERldmljZSA/IE9QRU5HTF9OVUxMKCkgOiBPUEVOR0woKTsKLSAgICBwYXJh
bXMudXNlRkJPICAgICAgICA9IHJlbmRlclRvVGV4dHVyZTsKLSAgICByZXR1cm4gcGFyYW1zOwot
fQotCi1EcmF3Q2FsbFBlcmZQYXJhbXMgRHJhd0NhbGxQZXJmVmFsaWRhdGlvbk9ubHkoKQotewot
ICAgIERyYXdDYWxsUGVyZlBhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMg
PSBERUZBVUxUKCk7Ci0gICAgcGFyYW1zLml0ZXJhdGlvbnMgICAgID0gMTAwMDA7Ci0gICAgcGFy
YW1zLm51bVRyaXMgPSAwOwotICAgIHBhcmFtcy5ydW5UaW1lU2Vjb25kcyA9IDUuMDsKLSAgICBy
ZXR1cm4gcGFyYW1zOwotfQotCi1URVNUX1AoRHJhd0NhbGxQZXJmQmVuY2htYXJrLCBSdW4pCi17
Ci0gICAgcnVuKCk7Ci19Ci0KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRHJhd0NhbGxQZXJmQmVu
Y2htYXJrLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3Q2FsbFBlcmZEM0Q5UGFyYW1zKGZh
bHNlLCBmYWxzZSksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdDYWxsUGVyZkQzRDlQYXJh
bXModHJ1ZSwgZmFsc2UpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3Q2FsbFBlcmZEM0Qx
MVBhcmFtcyhmYWxzZSwgZmFsc2UpLAotICAgICAgICAgICAgICAgICAgICAgICBEcmF3Q2FsbFBl
cmZEM0QxMVBhcmFtcyh0cnVlLCBmYWxzZSksCi0gICAgICAgICAgICAgICAgICAgICAgIERyYXdD
YWxsUGVyZkQzRDExUGFyYW1zKHRydWUsIHRydWUpLAotICAgICAgICAgICAgICAgICAgICAgICBE
cmF3Q2FsbFBlcmZPcGVuR0xQYXJhbXMoZmFsc2UsIGZhbHNlKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgRHJhd0NhbGxQZXJmT3BlbkdMUGFyYW1zKHRydWUsIGZhbHNlKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgRHJhd0NhbGxQZXJmT3BlbkdMUGFyYW1zKHRydWUsIHRydWUpLAotICAgICAg
ICAgICAgICAgICAgICAgICBEcmF3Q2FsbFBlcmZWYWxpZGF0aW9uT25seSgpKTsKLQotfSAvLyBu
YW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9w
ZXJmX3Rlc3RzL0R5bmFtaWNQcm9tb3Rpb25QZXJmVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9EeW5hbWljUHJvbW90aW9uUGVyZlRlc3QuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzgzMTQzNTRiZS4uMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvRHluYW1p
Y1Byb21vdGlvblBlcmZUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4OSArMCwwIEBACi0v
LwotLy8gQ29weXJpZ2h0IDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCi0vLwotLy8gRHluYW1pY1Byb21vdGlvblBlcmZUZXN0OgotLy8gICBUZXN0cyB0aGF0IEFO
R0xFIHdpbGwgcHJvbW90ZSBidWZmZXIgc3BlY2ZpZWQgd2l0aCBEWU5BTUlDIHVzYWdlIHRvIHN0
YXRpYyBhZnRlciBhIG51bWJlciBvZgotLy8gICBpdGVyYXRpb25zIHdpdGhvdXQgY2hhbmdpbmcg
dGhlIGRhdGEuIEl0IHNwZWNpZmljYWxseSBhZmZlY3RzIHRoZSBEM0QgYmFjay1lbmQsIHdoaWNo
IHRyZWF0cwotLy8gICBkeW5hbWljIGFuZCBzdGF0aWMgYnVmZmVycyBxdWl0ZSBkaWZmZXJlbnRs
eS4KLS8vCi0KLSNpbmNsdWRlICJBTkdMRVBlcmZUZXN0LmgiCi0jaW5jbHVkZSAicmFuZG9tX3V0
aWxzLmgiCi0jaW5jbHVkZSAic2hhZGVyX3V0aWxzLmgiCi0jaW5jbHVkZSAiVmVjdG9yLmgiCi0K
LXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17Ci0KLXN0cnVjdCBEeW5hbWlj
UHJvbW90aW9uUGFyYW1zIGZpbmFsIDogcHVibGljIFJlbmRlclRlc3RQYXJhbXMKLXsKLSAgICBE
eW5hbWljUHJvbW90aW9uUGFyYW1zKCk7Ci0gICAgc3RkOjpzdHJpbmcgc3VmZml4KCkgY29uc3Qg
b3ZlcnJpZGU7Ci0KLSAgICBzaXplX3QgdmVydGV4Q291bnQ7Ci0gICAgdW5zaWduZWQgaW50IGl0
ZXJhdGlvbnM7Ci19OwotCi1EeW5hbWljUHJvbW90aW9uUGFyYW1zOjpEeW5hbWljUHJvbW90aW9u
UGFyYW1zKCkgOiB2ZXJ0ZXhDb3VudCgxMDI0KSwgaXRlcmF0aW9ucyg0KQotewotfQotCi1zdGQ6
OnN0cmluZyBEeW5hbWljUHJvbW90aW9uUGFyYW1zOjpzdWZmaXgoKSBjb25zdAotewotICAgIHJl
dHVybiBSZW5kZXJUZXN0UGFyYW1zOjpzdWZmaXgoKTsKLX0KLQotc3RkOjpvc3RyZWFtICZvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IER5bmFtaWNQcm9tb3Rpb25QYXJhbXMgJnBh
cmFtcykKLXsKLSAgICBvcyA8PCBwYXJhbXMuc3VmZml4KCkuc3Vic3RyKDEpOwotICAgIHJldHVy
biBvczsKLX0KLQotY2xhc3MgRHluYW1pY1Byb21vdGlvblBlcmZUZXN0IDogcHVibGljIEFOR0xF
UmVuZGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB0ZXN0
aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8RHluYW1pY1Byb21vdGlvblBhcmFtcz4KLXsKLSAgcHVi
bGljOgotICAgIER5bmFtaWNQcm9tb3Rpb25QZXJmVGVzdCgpOwotCi0gICAgdm9pZCBpbml0aWFs
aXplQmVuY2htYXJrKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZXN0cm95QmVuY2htYXJrKCkgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkcmF3QmVuY2htYXJrKCkgb3ZlcnJpZGU7Ci0KLSAgcHJpdmF0ZToK
LSAgICBHTHVpbnQgbVByb2dyYW07Ci0gICAgR0x1aW50IG1FbGVtZW50QXJyYXlCdWZmZXI7Ci0g
ICAgR0x1aW50IG1BcnJheUJ1ZmZlcjsKLX07Ci0KLUR5bmFtaWNQcm9tb3Rpb25QZXJmVGVzdDo6
RHluYW1pY1Byb21vdGlvblBlcmZUZXN0KCkKLSAgICA6IEFOR0xFUmVuZGVyVGVzdCgiRHluYW1p
Y1Byb21vdGlvbiIsIEdldFBhcmFtKCkpLAotICAgICAgbVByb2dyYW0oMCksCi0gICAgICBtRWxl
bWVudEFycmF5QnVmZmVyKDApLAotICAgICAgbUFycmF5QnVmZmVyKDApCi17Ci19Ci0KLXZvaWQg
RHluYW1pY1Byb21vdGlvblBlcmZUZXN0Ojppbml0aWFsaXplQmVuY2htYXJrKCkKLXsKLSAgICBj
b25zdCBzdGQ6OnN0cmluZyAmdmVydGV4U2hhZGVyU291cmNlID0KLSAgICAgICAgImF0dHJpYnV0
ZSB2ZWMyIHBvc2l0aW9uO1xuIgotICAgICAgICAiYXR0cmlidXRlIHZlYzMgY29sb3I7XG4iCi0g
ICAgICAgICJ2YXJ5aW5nIHZlYzMgdkNvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKClcbiIK
LSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICB2Q29sb3IgPSBjb2xvcjtcbiIKLSAgICAgICAg
IiAgICBnbF9Qb3NpdGlvbiA9IHZlYzQocG9zaXRpb24sIDAsIDEpO1xuIgotICAgICAgICAifSI7
Ci0KLSAgICBjb25zdCBzdGQ6OnN0cmluZyAmZnJhZ21lbnRTaGFkZXJTb3VyY2UgPQotICAgICAg
ICAidmFyeWluZyBtZWRpdW1wIHZlYzMgdkNvbG9yO1xuIgotICAgICAgICAidm9pZCBtYWluKClc
biIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHZDb2xv
ciwgMSk7XG4iCi0gICAgICAgICJ9IjsKLQotICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0o
dmVydGV4U2hhZGVyU291cmNlLCBmcmFnbWVudFNoYWRlclNvdXJjZSk7Ci0gICAgQVNTRVJUX05F
KDB1LCBtUHJvZ3JhbSk7Ci0KLSAgICBjb25zdCBzaXplX3QgdmVydGV4Q291bnQgPSBHZXRQYXJh
bSgpLnZlcnRleENvdW50OwotCi0gICAgc3RkOjp2ZWN0b3I8R0x1c2hvcnQ+IGluZGV4RGF0YTsK
LSAgICBzdGQ6OnZlY3RvcjxWZWN0b3IyPiBwb3NpdGlvbkRhdGE7Ci0gICAgc3RkOjp2ZWN0b3I8
VmVjdG9yMz4gY29sb3JEYXRhOwotCi0gICAgQVNTRVJUX0dFKHN0YXRpY19jYXN0PHNpemVfdD4o
c3RkOjpudW1lcmljX2xpbWl0czxHTHVzaG9ydD46Om1heCgpKSwgdmVydGV4Q291bnQpOwotCi0g
ICAgUk5HIHJuZygxKTsKLQotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCB2ZXJ0
ZXhDb3VudDsgKytpbmRleCkKLSAgICB7Ci0gICAgICAgIGluZGV4RGF0YS5wdXNoX2JhY2soc3Rh
dGljX2Nhc3Q8R0x1c2hvcnQ+KGluZGV4KSk7Ci0KLSAgICAgICAgVmVjdG9yMiBwb3NpdGlvbihy
bmcucmFuZG9tTmVnYXRpdmVPbmVUb09uZSgpLCBybmcucmFuZG9tTmVnYXRpdmVPbmVUb09uZSgp
KTsKLSAgICAgICAgcG9zaXRpb25EYXRhLnB1c2hfYmFjayhwb3NpdGlvbik7Ci0KLSAgICAgICAg
VmVjdG9yMyBjb2xvcihybmcucmFuZG9tRmxvYXQoKSwgcm5nLnJhbmRvbUZsb2F0KCksIHJuZy5y
YW5kb21GbG9hdCgpKTsKLSAgICAgICAgY29sb3JEYXRhLnB1c2hfYmFjayhjb2xvcik7Ci0gICAg
fQotCi0gICAgZ2xHZW5CdWZmZXJzKDEsICZtRWxlbWVudEFycmF5QnVmZmVyKTsKLSAgICBnbEdl
bkJ1ZmZlcnMoMSwgJm1BcnJheUJ1ZmZlcik7Ci0KLSAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVO
VF9BUlJBWV9CVUZGRVIsIG1FbGVtZW50QXJyYXlCdWZmZXIpOwotICAgIGdsQmluZEJ1ZmZlcihH
TF9BUlJBWV9CVUZGRVIsIG1BcnJheUJ1ZmZlcik7Ci0KLSAgICBHTHNpemVpcHRyIGVsZW1lbnRB
cnJheVNpemUgID0gc2l6ZW9mKEdMdXNob3J0KSAqIHZlcnRleENvdW50OwotICAgIEdMc2l6ZWlw
dHIgcG9zaXRpb25BcnJheVNpemUgPSBzaXplb2YoVmVjdG9yMikgKiB2ZXJ0ZXhDb3VudDsKLSAg
ICBHTHNpemVpcHRyIGNvbG9yQXJyYXlTaXplICAgID0gc2l6ZW9mKFZlY3RvcjMpICogdmVydGV4
Q291bnQ7Ci0KLSAgICAvLyBUaGUgRFlOQU1JQ19EUkFXIHVzYWdlIGlzIHRoZSBrZXkgdG8gdGhl
IHRlc3QuCi0gICAgZ2xCdWZmZXJEYXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBlbGVtZW50
QXJyYXlTaXplLCBpbmRleERhdGEuZGF0YSgpLCBHTF9EWU5BTUlDX0RSQVcpOwotICAgIGdsQnVm
ZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHBvc2l0aW9uQXJyYXlTaXplICsgY29sb3JBcnJheVNp
emUsIG51bGxwdHIsIEdMX0RZTkFNSUNfRFJBVyk7Ci0gICAgZ2xCdWZmZXJTdWJEYXRhKEdMX0FS
UkFZX0JVRkZFUiwgMCwgcG9zaXRpb25BcnJheVNpemUsIHBvc2l0aW9uRGF0YS5kYXRhKCkpOwot
ICAgIGdsQnVmZmVyU3ViRGF0YShHTF9BUlJBWV9CVUZGRVIsIHBvc2l0aW9uQXJyYXlTaXplLCBj
b2xvckFycmF5U2l6ZSwgY29sb3JEYXRhLmRhdGEoKSk7Ci0KLSAgICBnbFVzZVByb2dyYW0obVBy
b2dyYW0pOwotICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9u
KG1Qcm9ncmFtLCAicG9zaXRpb24iKTsKLSAgICBBU1NFUlRfTkUoLTEsIHBvc2l0aW9uTG9jYXRp
b24pOwotICAgIEdMaW50IGNvbG9yTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9n
cmFtLCAiY29sb3IiKTsKLSAgICBBU1NFUlRfTkUoLTEsIGNvbG9yTG9jYXRpb24pOwotCi0gICAg
Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9G
QUxTRSwgMCwgbnVsbHB0cik7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKGNvbG9yTG9jYXRp
b24sIDMsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHZvaWQgKj4ocG9zaXRpb25BcnJheVNpemUpKTsKLQot
ICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7Ci0gICAgZ2xF
bmFibGVWZXJ0ZXhBdHRyaWJBcnJheShjb2xvckxvY2F0aW9uKTsKLQotICAgIEFTU0VSVF9HTF9O
T19FUlJPUigpOwotfQotCi12b2lkIER5bmFtaWNQcm9tb3Rpb25QZXJmVGVzdDo6ZGVzdHJveUJl
bmNobWFyaygpCi17Ci0gICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBnbERlbGV0
ZUJ1ZmZlcnMoMSwgJm1FbGVtZW50QXJyYXlCdWZmZXIpOwotICAgIGdsRGVsZXRlQnVmZmVycygx
LCAmbUFycmF5QnVmZmVyKTsKLX0KLQotdm9pZCBEeW5hbWljUHJvbW90aW9uUGVyZlRlc3Q6OmRy
YXdCZW5jaG1hcmsoKQotewotICAgIHVuc2lnbmVkIGludCBpdGVyYXRpb25zID0gR2V0UGFyYW0o
KS5pdGVyYXRpb25zOwotICAgIHNpemVfdCB2ZXJ0ZXhDb3VudCAgICAgID0gR2V0UGFyYW0oKS52
ZXJ0ZXhDb3VudDsKLQotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpbnQgY291bnQgPSAwOyBjb3VudCA8IGl0ZXJhdGlvbnM7ICsrY291bnQpCi0g
ICAgewotICAgICAgICBnbERyYXdFbGVtZW50cyhHTF9UUklBTkdMRVMsIHN0YXRpY19jYXN0PEdM
c2l6ZWk+KHZlcnRleENvdW50KSwgR0xfVU5TSUdORURfU0hPUlQsIG51bGxwdHIpOwotICAgIH0K
LQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotfQotCi1EeW5hbWljUHJvbW90aW9uUGFyYW1z
IER5bmFtaWNQcm9tb3Rpb25EM0QxMVBhcmFtcygpCi17Ci0gICAgRHluYW1pY1Byb21vdGlvblBh
cmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06OkQz
RDExKCk7Ci0gICAgcmV0dXJuIHBhcmFtczsKLX0KLQotRHluYW1pY1Byb21vdGlvblBhcmFtcyBE
eW5hbWljUHJvbW90aW9uRDNEOVBhcmFtcygpCi17Ci0gICAgRHluYW1pY1Byb21vdGlvblBhcmFt
cyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06OkQzRDko
KTsKLSAgICByZXR1cm4gcGFyYW1zOwotfQotCi1URVNUX1AoRHluYW1pY1Byb21vdGlvblBlcmZU
ZXN0LCBSdW4pCi17Ci0gICAgcnVuKCk7Ci19Ci0KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1QoRHlu
YW1pY1Byb21vdGlvblBlcmZUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljUHJv
bW90aW9uRDNEMTFQYXJhbXMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY1Byb21v
dGlvbkQzRDlQYXJhbXMoKSk7Ci0KLX0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0VHTEluaXRp
YWxpemVQZXJmLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rl
c3RzL0VHTEluaXRpYWxpemVQZXJmLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MjEwYmEyNzQ1Y2UuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9wZXJmX3Rlc3RzL0VHTEluaXRpYWxpemVQZXJmLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDE2MSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gRUdMSW5pdGlhbGl6ZVBlcmZUZXN0OgotLy8g
ICBQZXJmb3JtYW5jZSB0ZXN0IGZvciBkZXZpY2UgY3JlYXRpb24uCi0vLwotCi0jaW5jbHVkZSAi
QU5HTEVQZXJmVGVzdC5oIgotI2luY2x1ZGUgIlRpbWVyLmgiCi0jaW5jbHVkZSAidGVzdF91dGls
cy9hbmdsZV90ZXN0X2NvbmZpZ3MuaCIKLSNpbmNsdWRlICJ0ZXN0X3V0aWxzL2FuZ2xlX3Rlc3Rf
aW5zdGFudGlhdGUuaCIKLSNpbmNsdWRlICJwbGF0Zm9ybS9QbGF0Zm9ybS5oIgotCi11c2luZyBu
YW1lc3BhY2UgdGVzdGluZzsKLQotbmFtZXNwYWNlCi17Ci0KLS8vIE9ubHkgYXBwbGllcyB0byBE
M0QxMQotY2xhc3MgQ2FwdHVyZVBsYXRmb3JtIDogcHVibGljIGFuZ2xlOjpQbGF0Zm9ybQotewot
ICBwdWJsaWM6Ci0gICAgQ2FwdHVyZVBsYXRmb3JtKCkKLSAgICAgICAgOiBtVGltZXIoQ3JlYXRl
VGltZXIoKSksCi0gICAgICAgICAgbUxvYWRETExzTVMoMCksCi0gICAgICAgICAgbUNyZWF0ZURl
dmljZU1TKDApLAotICAgICAgICAgIG1Jbml0UmVzb3VyY2VzTVMoMCkKLSAgICB7Ci0gICAgICAg
IG1UaW1lci0+c3RhcnQoKTsKLSAgICB9Ci0KLSAgICBkb3VibGUgY3VycmVudFRpbWUoKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGhpc3RvZ3JhbUN1c3RvbUNvdW50cygKLSAgICAgICAgY29uc3QgY2hh
ciAqbmFtZSwgaW50IHNhbXBsZSwgaW50IG1pbiwgaW50IG1heCwgaW50IGJ1Y2tldENvdW50KSBv
dmVycmlkZTsKLQotICAgIHNpemVfdCBnZXRMb2FkRExMc01TKCkgY29uc3QgeyByZXR1cm4gbUxv
YWRETExzTVM7IH0KLSAgICBzaXplX3QgZ2V0Q3JlYXRlRGV2aWNlTVMoKSBjb25zdCB7IHJldHVy
biBtQ3JlYXRlRGV2aWNlTVM7IH0KLSAgICBzaXplX3QgZ2V0SW5pdFJlc291cmNlc01TKCkgY29u
c3QgeyByZXR1cm4gbUluaXRSZXNvdXJjZXNNUzsgfQotCi0gIHByaXZhdGU6Ci0gICAgVGltZXIg
Km1UaW1lcjsKLSAgICBzaXplX3QgbUxvYWRETExzTVM7Ci0gICAgc2l6ZV90IG1DcmVhdGVEZXZp
Y2VNUzsKLSAgICBzaXplX3QgbUluaXRSZXNvdXJjZXNNUzsKLX07Ci0KLWRvdWJsZSBDYXB0dXJl
UGxhdGZvcm06OmN1cnJlbnRUaW1lKCkKLXsKLSAgICByZXR1cm4gbVRpbWVyLT5nZXRFbGFwc2Vk
VGltZSgpOwotfQotCi12b2lkIENhcHR1cmVQbGF0Zm9ybTo6aGlzdG9ncmFtQ3VzdG9tQ291bnRz
KAotICAgIGNvbnN0IGNoYXIgKm5hbWUsIGludCBzYW1wbGUsIGludCAvKm1pbiovLCBpbnQgLypt
YXgqLywgaW50IC8qYnVja2V0Q291bnQqLykKLXsKLSAgICAvLyBUaGVzZSBtdXN0IG1hdGNoIHRo
ZSBuYW1lcyBvZiB0aGUgaGlzdG9ncmFtcy4KLSAgICBpZiAoc3RyY21wKG5hbWUsICJHUFUuQU5H
TEUuUmVuZGVyZXIxMUluaXRpYWxpemVETExzTVMiKSA9PSAwKQotICAgIHsKLSAgICAgICAgbUxv
YWRETExzTVMgKz0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzYW1wbGUpOwotICAgIH0KLSAgICAvLyBO
b3RlOiBub3QgY2FwdHVyZWQgaW4gZGVidWcsIGR1ZSB0byBjcmVhdGluZyBhIGRlYnVnIGRldmlj
ZQotICAgIGVsc2UgaWYgKHN0cmNtcChuYW1lLCAiR1BVLkFOR0xFLkQzRDExQ3JlYXRlRGV2aWNl
TVMiKSA9PSAwKQotICAgIHsKLSAgICAgICAgbUNyZWF0ZURldmljZU1TICs9IHN0YXRpY19jYXN0
PHNpemVfdD4oc2FtcGxlKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoc3RyY21wKG5hbWUsICJHUFUu
QU5HTEUuUmVuZGVyZXIxMUluaXRpYWxpemVEZXZpY2VNUyIpID09IDApCi0gICAgewotICAgICAg
ICBtSW5pdFJlc291cmNlc01TICs9IHN0YXRpY19jYXN0PHNpemVfdD4oc2FtcGxlKTsKLSAgICB9
Ci19Ci0KLWNsYXNzIEVHTEluaXRpYWxpemVQZXJmVGVzdCA6IHB1YmxpYyBBTkdMRVBlcmZUZXN0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdpdGhQYXJhbUludGVyZmFj
ZTxhbmdsZTo6UGxhdGZvcm1QYXJhbWV0ZXJzPgotewotICBwdWJsaWM6Ci0gICAgRUdMSW5pdGlh
bGl6ZVBlcmZUZXN0KCk7Ci0gICAgfkVHTEluaXRpYWxpemVQZXJmVGVzdCgpOwotCi0gICAgdm9p
ZCBzdGVwKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBUZWFyRG93bigpIG92ZXJyaWRlOwotCi0gIHBy
aXZhdGU6Ci0gICAgT1NXaW5kb3cgKm1PU1dpbmRvdzsKLSAgICBFR0xEaXNwbGF5IG1EaXNwbGF5
OwotICAgIENhcHR1cmVQbGF0Zm9ybSBtQ2FwdHVyZVBsYXRmb3JtOwotfTsKLQotRUdMSW5pdGlh
bGl6ZVBlcmZUZXN0OjpFR0xJbml0aWFsaXplUGVyZlRlc3QoKQotICAgIDogQU5HTEVQZXJmVGVz
dCgiRUdMSW5pdGlhbGl6ZSIsICJfcnVuIiksCi0gICAgICBtT1NXaW5kb3cobnVsbHB0ciksCi0g
ICAgICBtRGlzcGxheShFR0xfTk9fRElTUExBWSkKLXsKLSAgICBhdXRvIHBsYXRmb3JtID0gR2V0
UGFyYW0oKS5lZ2xQYXJhbWV0ZXJzOwotCi0gICAgc3RkOjp2ZWN0b3I8RUdMaW50PiBkaXNwbGF5
QXR0cmlidXRlczsKLSAgICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2soRUdMX1BMQVRGT1JN
X0FOR0xFX1RZUEVfQU5HTEUpOwotICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhwbGF0
Zm9ybS5yZW5kZXJlcik7Ci0gICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9iYWNrKEVHTF9QTEFU
Rk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NQUpPUl9BTkdMRSk7Ci0gICAgZGlzcGxheUF0dHJpYnV0
ZXMucHVzaF9iYWNrKHBsYXRmb3JtLm1ham9yVmVyc2lvbik7Ci0gICAgZGlzcGxheUF0dHJpYnV0
ZXMucHVzaF9iYWNrKEVHTF9QTEFURk9STV9BTkdMRV9NQVhfVkVSU0lPTl9NSU5PUl9BTkdMRSk7
Ci0gICAgZGlzcGxheUF0dHJpYnV0ZXMucHVzaF9iYWNrKHBsYXRmb3JtLm1pbm9yVmVyc2lvbik7
Ci0KLSAgICBpZiAocGxhdGZvcm0ucmVuZGVyZXIgPT0gRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVf
RDNEOV9BTkdMRSB8fAotICAgICAgICBwbGF0Zm9ybS5yZW5kZXJlciA9PSBFR0xfUExBVEZPUk1f
QU5HTEVfVFlQRV9EM0QxMV9BTkdMRSkKLSAgICB7Ci0gICAgICAgIGRpc3BsYXlBdHRyaWJ1dGVz
LnB1c2hfYmFjayhFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfQU5HTEUpOwotICAgICAg
ICBkaXNwbGF5QXR0cmlidXRlcy5wdXNoX2JhY2socGxhdGZvcm0uZGV2aWNlVHlwZSk7Ci0gICAg
fQotICAgIGRpc3BsYXlBdHRyaWJ1dGVzLnB1c2hfYmFjayhFR0xfTk9ORSk7Ci0KLSAgICBtT1NX
aW5kb3cgPSBDcmVhdGVPU1dpbmRvdygpOwotICAgIG1PU1dpbmRvdy0+aW5pdGlhbGl6ZSgiRUdM
SW5pdGlhbGl6ZSBUZXN0IiwgNjQsIDY0KTsKLQotICAgIGF1dG8gZWdsR2V0UGxhdGZvcm1EaXNw
bGF5RVhUID0KLSAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxQRk5FR0xHRVRQTEFURk9STURJU1BM
QVlFWFRQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZWdsR2V0UGxhdGZvcm1EaXNwbGF5RVhUIikp
OwotICAgIGlmIChlZ2xHZXRQbGF0Zm9ybURpc3BsYXlFWFQgPT0gbnVsbHB0cikKLSAgICB7Ci0g
ICAgICAgIHN0ZDo6Y2VyciA8PCAiRXJyb3IgZ2V0dGluZyBwbGF0Zm9ybSBkaXNwbGF5ISIgPDwg
c3RkOjplbmRsOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbURpc3BsYXkgPSBlZ2xH
ZXRQbGF0Zm9ybURpc3BsYXlFWFQoRUdMX1BMQVRGT1JNX0FOR0xFX0FOR0xFLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqPiht
T1NXaW5kb3ctPmdldE5hdGl2ZURpc3BsYXkoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJmRpc3BsYXlBdHRyaWJ1dGVzWzBdKTsKLQotICAgIEFOR0xFUGxhdGZv
cm1Jbml0aWFsaXplKCZtQ2FwdHVyZVBsYXRmb3JtKTsKLX0KLQotRUdMSW5pdGlhbGl6ZVBlcmZU
ZXN0Ojp+RUdMSW5pdGlhbGl6ZVBlcmZUZXN0KCkKLXsKLSAgICBTYWZlRGVsZXRlKG1PU1dpbmRv
dyk7Ci19Ci0KLXZvaWQgRUdMSW5pdGlhbGl6ZVBlcmZUZXN0OjpzdGVwKCkKLXsKLSAgICBBU1NF
UlRfTkUoRUdMX05PX0RJU1BMQVksIG1EaXNwbGF5KTsKLQotICAgIEVHTGludCBtYWpvclZlcnNp
b24sIG1pbm9yVmVyc2lvbjsKLSAgICBBU1NFUlRfRVEoc3RhdGljX2Nhc3Q8RUdMQm9vbGVhbj4o
RUdMX1RSVUUpLCBlZ2xJbml0aWFsaXplKG1EaXNwbGF5LCAmbWFqb3JWZXJzaW9uLCAmbWlub3JW
ZXJzaW9uKSk7Ci0gICAgQVNTRVJUX0VRKHN0YXRpY19jYXN0PEVHTEJvb2xlYW4+KEVHTF9UUlVF
KSwgZWdsVGVybWluYXRlKG1EaXNwbGF5KSk7Ci19Ci0KLXZvaWQgRUdMSW5pdGlhbGl6ZVBlcmZU
ZXN0OjpUZWFyRG93bigpCi17Ci0gICAgQU5HTEVQZXJmVGVzdDo6VGVhckRvd24oKTsKLSAgICBw
cmludFJlc3VsdCgiTG9hZERMTHMiLCBub3JtYWxpemVkVGltZShtQ2FwdHVyZVBsYXRmb3JtLmdl
dExvYWRETExzTVMoKSksICJtcyIsIHRydWUpOwotICAgIHByaW50UmVzdWx0KCJEM0QxMUNyZWF0
ZURldmljZSIsIG5vcm1hbGl6ZWRUaW1lKG1DYXB0dXJlUGxhdGZvcm0uZ2V0Q3JlYXRlRGV2aWNl
TVMoKSksICJtcyIsIHRydWUpOwotICAgIHByaW50UmVzdWx0KCJJbml0UmVzb3VyY2VzIiwgbm9y
bWFsaXplZFRpbWUobUNhcHR1cmVQbGF0Zm9ybS5nZXRJbml0UmVzb3VyY2VzTVMoKSksICJtcyIs
IHRydWUpOwotCi0gICAgQU5HTEVQbGF0Zm9ybVNodXRkb3duKCk7Ci19Ci0KLVRFU1RfUChFR0xJ
bml0aWFsaXplUGVyZlRlc3QsIFJ1bikKLXsKLSAgICBydW4oKTsKLX0KLQotQU5HTEVfSU5TVEFO
VElBVEVfVEVTVChFR0xJbml0aWFsaXplUGVyZlRlc3QsIGFuZ2xlOjpFUzJfRDNEMTEoKSk7Ci0K
LX0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvcGVyZl90ZXN0cy9JbmRleENvbnZlcnNpb25QZXJmLmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0luZGV4Q29udmVyc2lvblBlcmYuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDVlNzlkMDllYi4uMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvSW5kZXhDb252
ZXJzaW9uUGVyZi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzEgKzAsMCBAQAotLy8KLS8vIENv
cHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8K
LS8vIEluZGV4Q29udmVyc2lvblBlcmY6Ci0vLyAgIFBlcmZvcm1hbmNlIHRlc3RzIGZvciBBTkdM
RSBpbmRleCBjb252ZXJzaW9uIGluIEQzRDExLgotLy8KLQotI2luY2x1ZGUgPHNzdHJlYW0+Ci0K
LSNpbmNsdWRlICJBTkdMRVBlcmZUZXN0LmgiCi0jaW5jbHVkZSAic2hhZGVyX3V0aWxzLmgiCi0K
LXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17Ci0KLXN0cnVjdCBJbmRleENv
bnZlcnNpb25QZXJmUGFyYW1zIGZpbmFsIDogcHVibGljIFJlbmRlclRlc3RQYXJhbXMKLXsKLSAg
ICBzdGQ6OnN0cmluZyBzdWZmaXgoKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgc3Rk
OjpzdHJpbmdzdHJlYW0gc3Ryc3RyOwotCi0gICAgICAgIGlmIChpbmRleFJhbmdlT2Zmc2V0ID4g
MCkKLSAgICAgICAgewotICAgICAgICAgICAgc3Ryc3RyIDw8ICJfaW5kZXhfcmFuZ2UiOwotICAg
ICAgICB9Ci0KLSAgICAgICAgc3Ryc3RyIDw8IFJlbmRlclRlc3RQYXJhbXM6OnN1ZmZpeCgpOwot
Ci0gICAgICAgIHJldHVybiBzdHJzdHIuc3RyKCk7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgaW50
IGl0ZXJhdGlvbnM7Ci0gICAgdW5zaWduZWQgaW50IG51bUluZGV4VHJpczsKLQotICAgIC8vIEEg
c2Vjb25kIHRlc3QsIHdoaWNoIGNvdmVycyB1c2luZyBpbmRleCByYW5nZXMgd2l0aCBhbiBvZmZz
ZXQuCi0gICAgdW5zaWduZWQgaW50IGluZGV4UmFuZ2VPZmZzZXQ7Ci19OwotCi0vLyBQcm92aWRl
IGEgY3VzdG9tIGd0ZXN0IHBhcmFtZXRlciBuYW1lIGZ1bmN0aW9uIGZvciBJbmRleENvbnZlcnNp
b25QZXJmUGFyYW1zLgotc3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmc3Ry
ZWFtLCBjb25zdCBJbmRleENvbnZlcnNpb25QZXJmUGFyYW1zICZwYXJhbSkKLXsKLSAgICBzdHJl
YW0gPDwgcGFyYW0uc3VmZml4KCkuc3Vic3RyKDEpOwotICAgIHJldHVybiBzdHJlYW07Ci19Ci0K
LWNsYXNzIEluZGV4Q29udmVyc2lvblBlcmZUZXN0IDogcHVibGljIEFOR0xFUmVuZGVyVGVzdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBh
cmFtSW50ZXJmYWNlPEluZGV4Q29udmVyc2lvblBlcmZQYXJhbXM+Ci17Ci0gIHB1YmxpYzoKLSAg
ICBJbmRleENvbnZlcnNpb25QZXJmVGVzdCgpOwotCi0gICAgdm9pZCBpbml0aWFsaXplQmVuY2ht
YXJrKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZXN0cm95QmVuY2htYXJrKCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkcmF3QmVuY2htYXJrKCkgb3ZlcnJpZGU7Ci0KLSAgcHJpdmF0ZToKLSAgICB2b2lk
IHVwZGF0ZUJ1ZmZlckRhdGEoKTsKLSAgICB2b2lkIGRyYXdDb252ZXJzaW9uKCk7Ci0gICAgdm9p
ZCBkcmF3SW5kZXhSYW5nZSgpOwotCi0gICAgR0x1aW50IG1Qcm9ncmFtOwotICAgIEdMdWludCBt
VmVydGV4QnVmZmVyOwotICAgIEdMdWludCBtSW5kZXhCdWZmZXI7Ci0gICAgc3RkOjp2ZWN0b3I8
R0x1c2hvcnQ+IG1JbmRleERhdGE7Ci19OwotCi1JbmRleENvbnZlcnNpb25QZXJmVGVzdDo6SW5k
ZXhDb252ZXJzaW9uUGVyZlRlc3QoKQotICAgIDogQU5HTEVSZW5kZXJUZXN0KCJJbmRleENvbnZl
cnNpb25QZXJmVGVzdCIsIEdldFBhcmFtKCkpLAotICAgICAgbVByb2dyYW0oMCksCi0gICAgICBt
VmVydGV4QnVmZmVyKDApLAotICAgICAgbUluZGV4QnVmZmVyKDApCi17Ci0gICAgbVJ1blRpbWVT
ZWNvbmRzID0gMy4wOwotfQotCi12b2lkIEluZGV4Q29udmVyc2lvblBlcmZUZXN0Ojppbml0aWFs
aXplQmVuY2htYXJrKCkKLXsKLSAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOwot
Ci0gICAgQVNTRVJUX0xUKDB1LCBwYXJhbXMuaXRlcmF0aW9ucyk7Ci0gICAgQVNTRVJUX0xUKDB1
LCBwYXJhbXMubnVtSW5kZXhUcmlzKTsKLQotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIHZzID0gU0hB
REVSX1NPVVJDRQotICAgICgKLSAgICAgICAgYXR0cmlidXRlIHZlYzIgdlBvc2l0aW9uOwotICAg
ICAgICB1bmlmb3JtIGZsb2F0IHVTY2FsZTsKLSAgICAgICAgdW5pZm9ybSBmbG9hdCB1T2Zmc2V0
OwotICAgICAgICB2b2lkIG1haW4oKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbF9Qb3NpdGlv
biA9IHZlYzQodlBvc2l0aW9uICogdmVjMih1U2NhbGUpIC0gdmVjMih1T2Zmc2V0KSwgMCwgMSk7
Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcgZnMgPSBTSEFERVJf
U09VUkNFCi0gICAgKAotICAgICAgICBwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsKLSAgICAgICAg
dm9pZCBtYWluKCkKLSAgICAgICAgewotICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCgx
LjAsIDAuMCwgMC4wLCAxLjApOwotICAgICAgICB9Ci0gICAgKTsKLQotICAgIG1Qcm9ncmFtID0g
Q29tcGlsZVByb2dyYW0odnMsIGZzKTsKLSAgICBBU1NFUlRfTkUoMHUsIG1Qcm9ncmFtKTsKLQot
ICAgIC8vIFVzZSB0aGUgcHJvZ3JhbSBvYmplY3QKLSAgICBnbFVzZVByb2dyYW0obVByb2dyYW0p
OwotCi0gICAgZ2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOwotCi0gICAgLy8g
SW5pdGlhbGl6ZSB0aGUgdmVydGV4IGRhdGEKLSAgICBzdGQ6OnZlY3RvcjxHTGZsb2F0PiBmbG9h
dERhdGE7Ci0KLSAgICBzaXplX3QgbnVtVHJpcyA9IHN0ZDo6bnVtZXJpY19saW1pdHM8R0x1c2hv
cnQ+OjptYXgoKSAvIDMgKyAxOwotICAgIGZvciAoc2l6ZV90IHRyaUluZGV4ID0gMDsgdHJpSW5k
ZXggPCBudW1UcmlzOyArK3RyaUluZGV4KQotICAgIHsKLSAgICAgICAgZmxvYXREYXRhLnB1c2hf
YmFjaygxKTsKLSAgICAgICAgZmxvYXREYXRhLnB1c2hfYmFjaygyKTsKLSAgICAgICAgZmxvYXRE
YXRhLnB1c2hfYmFjaygwKTsKLSAgICAgICAgZmxvYXREYXRhLnB1c2hfYmFjaygwKTsKLSAgICAg
ICAgZmxvYXREYXRhLnB1c2hfYmFjaygyKTsKLSAgICAgICAgZmxvYXREYXRhLnB1c2hfYmFjaygw
KTsKLSAgICB9Ci0KLSAgICBnbEdlbkJ1ZmZlcnMoMSwgJm1WZXJ0ZXhCdWZmZXIpOwotICAgIGds
QmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1WZXJ0ZXhCdWZmZXIpOwotICAgIGdsQnVmZmVy
RGF0YShHTF9BUlJBWV9CVUZGRVIsIGZsb2F0RGF0YS5zaXplKCkgKiBzaXplb2YoR0xmbG9hdCks
ICZmbG9hdERhdGFbMF0sIEdMX1NUQVRJQ19EUkFXKTsKLQotICAgIGdsVmVydGV4QXR0cmliUG9p
bnRlcigwLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIDApOwotICAgIGdsRW5hYmxlVmVydGV4
QXR0cmliQXJyYXkoMCk7Ci0KLSAgICAvLyBJbml0aWFsaXplIHRoZSBpbmRleCBidWZmZXIKLSAg
ICBmb3IgKHVuc2lnbmVkIGludCB0cmlJbmRleCA9IDA7IHRyaUluZGV4IDwgcGFyYW1zLm51bUlu
ZGV4VHJpczsgKyt0cmlJbmRleCkKLSAgICB7Ci0gICAgICAgIC8vIEhhbmRsZSB0d28gZGlmZmVy
ZW50IHR5cGVzIG9mIHRlc3RzLCBvbmUgd2l0aCBpbmRleCBjb252ZXJzaW9uIHRyaWdnZXJlZCBi
eSBhIC0xIGluZGV4LgotICAgICAgICBpZiAocGFyYW1zLmluZGV4UmFuZ2VPZmZzZXQgPT0gMCkK
LSAgICAgICAgewotICAgICAgICAgICAgbUluZGV4RGF0YS5wdXNoX2JhY2soc3RkOjpudW1lcmlj
X2xpbWl0czxHTHVzaG9ydD46Om1heCgpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIG1JbmRleERhdGEucHVzaF9iYWNrKDApOwotICAgICAgICB9Ci0K
LSAgICAgICAgbUluZGV4RGF0YS5wdXNoX2JhY2soMSk7Ci0gICAgICAgIG1JbmRleERhdGEucHVz
aF9iYWNrKDIpOwotICAgIH0KLQotICAgIGdsR2VuQnVmZmVycygxLCAmbUluZGV4QnVmZmVyKTsK
LSAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1JbmRleEJ1ZmZlcik7
Ci0gICAgdXBkYXRlQnVmZmVyRGF0YSgpOwotCi0gICAgLy8gU2V0IHRoZSB2aWV3cG9ydAotICAg
IGdsVmlld3BvcnQoMCwgMCwgZ2V0V2luZG93KCktPmdldFdpZHRoKCksIGdldFdpbmRvdygpLT5n
ZXRIZWlnaHQoKSk7Ci0KLSAgICBHTGZsb2F0IHNjYWxlID0gMC41ZjsKLSAgICBHTGZsb2F0IG9m
ZnNldCA9IDAuNWY7Ci0KLSAgICBnbFVuaWZvcm0xZihnbEdldFVuaWZvcm1Mb2NhdGlvbihtUHJv
Z3JhbSwgInVTY2FsZSIpLCBzY2FsZSk7Ci0gICAgZ2xVbmlmb3JtMWYoZ2xHZXRVbmlmb3JtTG9j
YXRpb24obVByb2dyYW0sICJ1T2Zmc2V0IiksIG9mZnNldCk7Ci0KLSAgICBBU1NFUlRfR0xfTk9f
RVJST1IoKTsKLX0KLQotdm9pZCBJbmRleENvbnZlcnNpb25QZXJmVGVzdDo6dXBkYXRlQnVmZmVy
RGF0YSgpCi17Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBtSW5k
ZXhEYXRhLnNpemUoKSAqIHNpemVvZihtSW5kZXhEYXRhWzBdKSwgJm1JbmRleERhdGFbMF0sIEdM
X1NUQVRJQ19EUkFXKTsKLX0KLQotdm9pZCBJbmRleENvbnZlcnNpb25QZXJmVGVzdDo6ZGVzdHJv
eUJlbmNobWFyaygpCi17Ci0gICAgZ2xEZWxldGVQcm9ncmFtKG1Qcm9ncmFtKTsKLSAgICBnbERl
bGV0ZUJ1ZmZlcnMoMSwgJm1WZXJ0ZXhCdWZmZXIpOwotICAgIGdsRGVsZXRlQnVmZmVycygxLCAm
bUluZGV4QnVmZmVyKTsKLX0KLQotdm9pZCBJbmRleENvbnZlcnNpb25QZXJmVGVzdDo6ZHJhd0Jl
bmNobWFyaygpCi17Ci0gICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKLQotICAg
IGlmIChwYXJhbXMuaW5kZXhSYW5nZU9mZnNldCA9PSAwKQotICAgIHsKLSAgICAgICAgZHJhd0Nv
bnZlcnNpb24oKTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgZHJhd0luZGV4UmFu
Z2UoKTsKLSAgICB9Ci19Ci0KLXZvaWQgSW5kZXhDb252ZXJzaW9uUGVyZlRlc3Q6OmRyYXdDb252
ZXJzaW9uKCkKLXsKLSAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOwotCi0gICAg
Ly8gVHJpZ2dlciBhbiB1cGRhdGUgdG8gZW5zdXJlIHdlIGNvbnZlcnQgb25jZSBhIGZyYW1lCi0g
ICAgdXBkYXRlQnVmZmVyRGF0YSgpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaXQgPSAwOyBp
dCA8IHBhcmFtcy5pdGVyYXRpb25zOyBpdCsrKQotICAgIHsKLSAgICAgICAgZ2xEcmF3RWxlbWVu
dHMoR0xfVFJJQU5HTEVTLAotICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNp
emVpPihwYXJhbXMubnVtSW5kZXhUcmlzICogMyAtIDEpLAotICAgICAgICAgICAgICAgICAgICAg
ICBHTF9VTlNJR05FRF9TSE9SVCwKLSAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxHTHZvaWQqPigwKSk7Ci0gICAgfQotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19
Ci0KLXZvaWQgSW5kZXhDb252ZXJzaW9uUGVyZlRlc3Q6OmRyYXdJbmRleFJhbmdlKCkKLXsKLSAg
ICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOwotCi0gICAgdW5zaWduZWQgaW50IGlu
ZGV4Q291bnQgPSAzOwotICAgIHNpemVfdCBvZmZzZXQgICAgICAgICAgID0gc3RhdGljX2Nhc3Q8
c2l6ZV90PihpbmRleENvdW50ICogZ2V0TnVtU3RlcHNQZXJmb3JtZWQoKSk7Ci0KLSAgICBvZmZz
ZXQgJT0gKHBhcmFtcy5udW1JbmRleFRyaXMgKiAzKTsKLQotICAgIC8vIFRoaXMgdGVzdCBpbmNy
ZW1lbnRzIGFuIG9mZnNldCBlYWNoIHN0ZXAuIERyYXdpbmcgcmVwZWF0ZWRseSBtYXkgY2F1c2Ug
dGhlIHN5c3RlbSBtZW1vcnkKLSAgICAvLyB0byByZWxlYXNlLiBUaGVuLCB1c2luZyBhIGZyZXNo
IG9mZnNldCB3aWxsIHJlcXVpcmUgaW5kZXggcmFuZ2UgdmFsaWRhdGlvbiwgd2hpY2ggcGFnZXMK
LSAgICAvLyBpdCBiYWNrIGluLiBUaGUgcGVyZm9ybWFuY2Ugc2hvdWxkIGJlIGdvb2QgZXZlbiBp
ZiB0aGUgZGF0YSBpcyB3YXMgdXNlZCBxdWl0ZSBhIGJpdC4KLSAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpdCA9IDA7IGl0IDwgcGFyYW1zLml0ZXJhdGlvbnM7IGl0KyspCi0gICAgewotICAgICAgICBn
bERyYXdFbGVtZW50cyhHTF9UUklBTkdMRVMsIHN0YXRpY19jYXN0PEdMc2l6ZWk+KGluZGV4Q291
bnQpLCBHTF9VTlNJR05FRF9TSE9SVCwKLSAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnBy
ZXRfY2FzdDxHTHZvaWQgKj4ob2Zmc2V0KSk7Ci0gICAgfQotCi0gICAgQVNTRVJUX0dMX05PX0VS
Uk9SKCk7Ci19Ci0KLUluZGV4Q29udmVyc2lvblBlcmZQYXJhbXMgSW5kZXhDb252ZXJzaW9uUGVy
ZkQzRDExUGFyYW1zKCkKLXsKLSAgICBJbmRleENvbnZlcnNpb25QZXJmUGFyYW1zIHBhcmFtczsK
LSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNEMTFfTlVMTCgpOwot
ICAgIHBhcmFtcy5tYWpvclZlcnNpb24gPSAyOwotICAgIHBhcmFtcy5taW5vclZlcnNpb24gPSAw
OwotICAgIHBhcmFtcy53aW5kb3dXaWR0aCA9IDI1NjsKLSAgICBwYXJhbXMud2luZG93SGVpZ2h0
ID0gMjU2OwotICAgIHBhcmFtcy5pdGVyYXRpb25zICAgID0gMjI1OwotICAgIHBhcmFtcy5udW1J
bmRleFRyaXMgPSAzMDAwOwotICAgIHBhcmFtcy5pbmRleFJhbmdlT2Zmc2V0ID0gMDsKLSAgICBy
ZXR1cm4gcGFyYW1zOwotfQotCi1JbmRleENvbnZlcnNpb25QZXJmUGFyYW1zIEluZGV4UmFuZ2VP
ZmZzZXRQZXJmRDNEMTFQYXJhbXMoKQotewotICAgIEluZGV4Q29udmVyc2lvblBlcmZQYXJhbXMg
cGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzICAgID0gZWdsX3BsYXRmb3JtOjpEM0Qx
MV9OVUxMKCk7Ci0gICAgcGFyYW1zLm1ham9yVmVyc2lvbiAgICAgPSAyOwotICAgIHBhcmFtcy5t
aW5vclZlcnNpb24gICAgID0gMDsKLSAgICBwYXJhbXMud2luZG93V2lkdGggICAgICA9IDI1NjsK
LSAgICBwYXJhbXMud2luZG93SGVpZ2h0ICAgICA9IDI1NjsKLSAgICBwYXJhbXMuaXRlcmF0aW9u
cyAgICAgICA9IDE2OwotICAgIHBhcmFtcy5udW1JbmRleFRyaXMgICAgID0gNTAwMDA7Ci0gICAg
cGFyYW1zLmluZGV4UmFuZ2VPZmZzZXQgPSA2NDsKLSAgICByZXR1cm4gcGFyYW1zOwotfQotCi1U
RVNUX1AoSW5kZXhDb252ZXJzaW9uUGVyZlRlc3QsIFJ1bikKLXsKLSAgICBydW4oKTsKLX0KLQot
QU5HTEVfSU5TVEFOVElBVEVfVEVTVChJbmRleENvbnZlcnNpb25QZXJmVGVzdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgSW5kZXhDb252ZXJzaW9uUGVyZkQzRDExUGFyYW1zKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgIEluZGV4UmFuZ2VPZmZzZXRQZXJmRDNEMTFQYXJhbXMoKSk7Ci0KLX0g
IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3BlcmZfdGVzdHMvSW5kZXhEYXRhTWFuYWdlclRlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvSW5kZXhEYXRhTWFuYWdlclRlc3QuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjdiYzI0N2U1NC4uMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvSW5kZXhEYXRh
TWFuYWdlclRlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTc2ICswLDAgQEAKLS8vCi0vLyBD
b3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8v
Ci0vLyBJbmRleERhdGFNYW5hZ2VyUGVyZlRlc3Q6Ci0vLyAgIFBlcmZvcm1hbmNlIHRlc3QgZm9y
IGluZGV4IGJ1ZmZlciBtYW5hZ2VtZW50LgotLy8KLQotI2luY2x1ZGUgIkFOR0xFUGVyZlRlc3Qu
aCIKLQotI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+Ci0KLSNpbmNsdWRlICJsaWJBTkdMRS9yZW5k
ZXJlci9kM2QvQnVmZmVyRDNELmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0lu
ZGV4QnVmZmVyLmgiCi0jaW5jbHVkZSAibGliQU5HTEUvcmVuZGVyZXIvZDNkL0luZGV4RGF0YU1h
bmFnZXIuaCIKLQotdXNpbmcgbmFtZXNwYWNlIHRlc3Rpbmc7Ci0KLW5hbWVzcGFjZQotewotCi1j
bGFzcyBNb2NrSW5kZXhCdWZmZXIgOiBwdWJsaWMgcng6OkluZGV4QnVmZmVyCi17Ci0gIHB1Ymxp
YzoKLSAgICBNb2NrSW5kZXhCdWZmZXIodW5zaWduZWQgaW50IGJ1ZmZlclNpemUsIEdMZW51bSBp
bmRleFR5cGUpCi0gICAgICAgIDogbUJ1ZmZlclNpemUoYnVmZmVyU2l6ZSksCi0gICAgICAgICAg
bUluZGV4VHlwZShpbmRleFR5cGUpCi0gICAgewotICAgIH0KLQotICAgIE1PQ0tfTUVUSE9EMyhp
bml0aWFsaXplLCBnbDo6RXJyb3IodW5zaWduZWQgaW50LCBHTGVudW0sIGJvb2wpKTsKLSAgICBN
T0NLX01FVEhPRDMobWFwQnVmZmVyLCBnbDo6RXJyb3IodW5zaWduZWQgaW50LCB1bnNpZ25lZCBp
bnQsIHZvaWQqKikpOwotICAgIE1PQ0tfTUVUSE9EMCh1bm1hcEJ1ZmZlciwgZ2w6OkVycm9yKCkp
OwotICAgIE1PQ0tfTUVUSE9EMChkaXNjYXJkLCBnbDo6RXJyb3IoKSk7Ci0gICAgTU9DS19NRVRI
T0QyKHNldFNpemUsIGdsOjpFcnJvcih1bnNpZ25lZCBpbnQsIEdMZW51bSkpOwotCi0gICAgLy8g
aW5saW5lZCBmb3Igc3BlZWQKLSAgICBHTGVudW0gZ2V0SW5kZXhUeXBlKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbUluZGV4VHlwZTsgfQotICAgIHVuc2lnbmVkIGludCBnZXRCdWZmZXJTaXpl
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbUJ1ZmZlclNpemU7IH0KLQotICBwcml2YXRlOgot
ICAgIHVuc2lnbmVkIGludCBtQnVmZmVyU2l6ZTsKLSAgICBHTGVudW0gbUluZGV4VHlwZTsKLX07
Ci0KLWNsYXNzIE1vY2tCdWZmZXJGYWN0b3J5RDNEIDogcHVibGljIHJ4OjpCdWZmZXJGYWN0b3J5
RDNECi17Ci0gIHB1YmxpYzoKLSAgICBNb2NrQnVmZmVyRmFjdG9yeUQzRCh1bnNpZ25lZCBpbnQg
YnVmZmVyU2l6ZSwgR0xlbnVtIGluZGV4VHlwZSkKLSAgICAgICAgOiBtQnVmZmVyU2l6ZShidWZm
ZXJTaXplKSwKLSAgICAgICAgICBtSW5kZXhUeXBlKGluZGV4VHlwZSkKLSAgICB7Ci0gICAgfQot
Ci0gICAgTU9DS19NRVRIT0QwKGNyZWF0ZVZlcnRleEJ1ZmZlciwgcng6OlZlcnRleEJ1ZmZlcioo
KSk7Ci0gICAgTU9DS19DT05TVF9NRVRIT0QxKGdldFZlcnRleENvbnZlcnNpb25UeXBlLCByeDo6
VmVydGV4Q29udmVyc2lvblR5cGUoZ2w6OlZlcnRleEZvcm1hdFR5cGUpKTsKLSAgICBNT0NLX0NP
TlNUX01FVEhPRDEoZ2V0VmVydGV4Q29tcG9uZW50VHlwZSwgR0xlbnVtKGdsOjpWZXJ0ZXhGb3Jt
YXRUeXBlKSk7Ci0gICAgTU9DS19DT05TVF9NRVRIT0QzKGdldFZlcnRleFNwYWNlUmVxdWlyZWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgIGdsOjpFcnJvck9yUmVzdWx0PHVuc2lnbmVkIGludD4o
Y29uc3QgZ2w6OlZlcnRleEF0dHJpYnV0ZSAmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xzaXplaSkpOwotCi0gICAgLy8g
RGVwZW5kZW5jeSBpbmplY3Rpb24KLSAgICByeDo6SW5kZXhCdWZmZXIqIGNyZWF0ZUluZGV4QnVm
ZmVyKCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgTW9ja0luZGV4QnVmZmVy
KG1CdWZmZXJTaXplLCBtSW5kZXhUeXBlKTsKLSAgICB9Ci0KLSAgcHJpdmF0ZToKLSAgICB1bnNp
Z25lZCBpbnQgbUJ1ZmZlclNpemU7Ci0gICAgR0xlbnVtIG1JbmRleFR5cGU7Ci19OwotCi1jbGFz
cyBNb2NrQnVmZmVyRDNEIDogcHVibGljIHJ4OjpCdWZmZXJEM0QKLXsKLSAgcHVibGljOgotICAg
IE1vY2tCdWZmZXJEM0Qocng6OkJ1ZmZlckZhY3RvcnlEM0QgKmZhY3RvcnkpCi0gICAgICAgIDog
QnVmZmVyRDNEKGZhY3RvcnkpLAotICAgICAgICAgIG1EYXRhKCkKLSAgICB7Ci0gICAgfQotCi0g
ICAgLy8gQnVmZmVySW1wbAotICAgIGdsOjpFcnJvciBzZXREYXRhKEdMZW51bSB0YXJnZXQsIGNv
bnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCBHTGVudW0pIG92ZXJyaWRlCi0gICAgewotICAg
ICAgICBtRGF0YS5yZXNpemUoc2l6ZSk7Ci0gICAgICAgIGlmIChkYXRhICYmIHNpemUgPiAwKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBtZW1jcHkoJm1EYXRhWzBdLCBkYXRhLCBzaXplKTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gZ2w6OkVycm9yKEdMX05PX0VSUk9SKTsKLSAgICB9Ci0K
LSAgICBNT0NLX01FVEhPRDQoc2V0U3ViRGF0YSwgZ2w6OkVycm9yKEdMZW51bSwgY29uc3Qgdm9p
ZCAqLCBzaXplX3QsIHNpemVfdCkpOwotICAgIE1PQ0tfTUVUSE9ENChjb3B5U3ViRGF0YSwgZ2w6
OkVycm9yKEJ1ZmZlckltcGwqLCBHTGludHB0ciwgR0xpbnRwdHIsIEdMc2l6ZWlwdHIpKTsKLSAg
ICBNT0NLX01FVEhPRDIobWFwLCBnbDo6RXJyb3IoR0xlbnVtLCBHTHZvaWQgKiopKTsKLSAgICBN
T0NLX01FVEhPRDQobWFwUmFuZ2UsIGdsOjpFcnJvcihzaXplX3QsIHNpemVfdCwgR0xiaXRmaWVs
ZCwgR0x2b2lkICoqKSk7Ci0gICAgTU9DS19NRVRIT0QxKHVubWFwLCBnbDo6RXJyb3IoR0xib29s
ZWFuICopKTsKLQotICAgIC8vIEJ1ZmZlckQzRAotICAgIE1PQ0tfTUVUSE9EMChtYXJrVHJhbnNm
b3JtRmVlZGJhY2tVc2FnZSwgZ2w6OkVycm9yKCkpOwotCi0gICAgLy8gaW5saW5lZCBmb3Igc3Bl
ZWQKLSAgICBib29sIHN1cHBvcnRzRGlyZWN0QmluZGluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgc2l6ZV90IGdldFNpemUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBtRGF0YS5zaXplKCk7IH0KLQotICAgIGdsOjpFcnJvciBnZXREYXRhKGNvbnN0IHVpbnQ4X3Qg
KipvdXREYXRhKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgKm91dERhdGEgPSAmbURhdGFbMF07
Ci0gICAgICAgIHJldHVybiBnbDo6RXJyb3IoR0xfTk9fRVJST1IpOwotICAgIH0KLQotICBwcml2
YXRlOgotICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IG1EYXRhOwotfTsKLQotY2xhc3MgSW5kZXhE
YXRhTWFuYWdlclBlcmZUZXN0IDogcHVibGljIEFOR0xFUGVyZlRlc3QKLXsKLSAgcHVibGljOgot
ICAgIEluZGV4RGF0YU1hbmFnZXJQZXJmVGVzdCgpOwotCi0gICAgdm9pZCBzdGVwKCkgb3ZlcnJp
ZGU7Ci0KLSAgICByeDo6SW5kZXhEYXRhTWFuYWdlciBtSW5kZXhEYXRhTWFuYWdlcjsKLSAgICBH
THNpemVpIG1JbmRleENvdW50OwotICAgIHVuc2lnbmVkIGludCBtQnVmZmVyU2l6ZTsKLSAgICBN
b2NrQnVmZmVyRmFjdG9yeUQzRCBtTW9ja0ZhY3Rvcnk7Ci0gICAgZ2w6OkJ1ZmZlciBtSW5kZXhC
dWZmZXI7Ci19OwotCi1Nb2NrQnVmZmVyRDNEICpJbml0TW9ja0J1ZmZlckQzRChNb2NrQnVmZmVy
RmFjdG9yeUQzRCAqbW9ja0ZhY3RvcnkpCi17Ci0gICAgTW9ja0J1ZmZlckQzRCAqbW9ja0J1ZmZl
ckQzRCA9IG5ldyBNb2NrQnVmZmVyRDNEKG1vY2tGYWN0b3J5KTsKLQotICAgIEVYUEVDVF9DQUxM
KCptb2NrRmFjdG9yeSwgY3JlYXRlVmVydGV4QnVmZmVyKCkpLldpbGxPbmNlKFJldHVybihudWxs
cHRyKSkuUmV0aXJlc09uU2F0dXJhdGlvbigpOwotICAgIG1vY2tCdWZmZXJEM0QtPmluaXRpYWxp
emVTdGF0aWNEYXRhKCk7Ci0KLSAgICByZXR1cm4gbW9ja0J1ZmZlckQzRDsKLX0KLQotSW5kZXhE
YXRhTWFuYWdlclBlcmZUZXN0OjpJbmRleERhdGFNYW5hZ2VyUGVyZlRlc3QoKQotICAgIDogQU5H
TEVQZXJmVGVzdCgiSW5kZXhEYXRhTWFuZ2VyIiwgIl9ydW4iKSwKLSAgICAgIG1JbmRleERhdGFN
YW5hZ2VyKCZtTW9ja0ZhY3RvcnksIHJ4OjpSRU5ERVJFUl9EM0QxMSksCi0gICAgICBtSW5kZXhD
b3VudCg0MDAwKSwKLSAgICAgIG1CdWZmZXJTaXplKG1JbmRleENvdW50ICogc2l6ZW9mKEdMdXNo
b3J0KSksCi0gICAgICBtTW9ja0ZhY3RvcnkobUJ1ZmZlclNpemUsIEdMX1VOU0lHTkVEX1NIT1JU
KSwKLSAgICAgIG1JbmRleEJ1ZmZlcihJbml0TW9ja0J1ZmZlckQzRCgmbU1vY2tGYWN0b3J5KSwg
MSkKLXsKLSAgICBzdGQ6OnZlY3RvcjxHTHVzaG9ydD4gaW5kZXhEYXRhKG1JbmRleENvdW50KTsK
LSAgICBmb3IgKEdMc2l6ZWkgaW5kZXggPSAwOyBpbmRleCA8IG1JbmRleENvdW50OyArK2luZGV4
KQotICAgIHsKLSAgICAgICAgaW5kZXhEYXRhW2luZGV4XSA9IHN0YXRpY19jYXN0PEdMdXNob3J0
PihpbmRleCk7Ci0gICAgfQotICAgIG1JbmRleEJ1ZmZlci5idWZmZXJEYXRhKEdMX0FSUkFZX0JV
RkZFUiwgJmluZGV4RGF0YVswXSwgaW5kZXhEYXRhLnNpemUoKSAqIHNpemVvZihHTHVzaG9ydCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xfU1RBVElDX0RSQVcpOwotfQotCi12b2lk
IEluZGV4RGF0YU1hbmFnZXJQZXJmVGVzdDo6c3RlcCgpCi17Ci0gICAgcng6OlRyYW5zbGF0ZWRJ
bmRleERhdGEgdHJhbnNsYXRlZEluZGV4RGF0YTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpdGVy
YXRpb24gPSAwOyBpdGVyYXRpb24gPCAxMDA7ICsraXRlcmF0aW9uKQotICAgIHsKLSAgICAgICAg
bUluZGV4QnVmZmVyLmdldEluZGV4UmFuZ2UoR0xfVU5TSUdORURfU0hPUlQsIDAsIG1JbmRleENv
dW50LCBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRyYW5zbGF0
ZWRJbmRleERhdGEuaW5kZXhSYW5nZSk7Ci0gICAgICAgIG1JbmRleERhdGFNYW5hZ2VyLnByZXBh
cmVJbmRleERhdGEoR0xfVU5TSUdORURfU0hPUlQsIG1JbmRleENvdW50LCAmbUluZGV4QnVmZmVy
LCBudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0
cmFuc2xhdGVkSW5kZXhEYXRhLCBmYWxzZSk7Ci0gICAgfQotfQotCi1URVNUX0YoSW5kZXhEYXRh
TWFuYWdlclBlcmZUZXN0LCBSdW4pCi17Ci0gICAgcnVuKCk7Ci19Ci0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0luc3RhbmNpbmdQ
ZXJmLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0lu
c3RhbmNpbmdQZXJmLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIwMmMxMGU5
OWMuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9w
ZXJmX3Rlc3RzL0luc3RhbmNpbmdQZXJmLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2NiArMCww
IEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCi0vLwotLy8gSW5zdGFuY2luZ1BlcmY6Ci0vLyAgIFBlcmZvcm1hbmNlIHRlc3Rz
IGZvciBBTkdMRSBpbnN0YW5jZWQgZHJhdyBjYWxscy4KLS8vCi0KLSNpbmNsdWRlIDxjbWF0aD4K
LSNpbmNsdWRlIDxzc3RyZWFtPgotCi0jaW5jbHVkZSAiQU5HTEVQZXJmVGVzdC5oIgotI2luY2x1
ZGUgIk1hdHJpeC5oIgotI2luY2x1ZGUgInJhbmRvbV91dGlscy5oIgotI2luY2x1ZGUgInNoYWRl
cl91dGlscy5oIgotI2luY2x1ZGUgIlZlY3Rvci5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5nbGU7
Ci11c2luZyBuYW1lc3BhY2UgZWdsX3BsYXRmb3JtOwotCi1uYW1lc3BhY2UKLXsKLQotZmxvYXQg
QW5pbWF0aW9uU2lnbmFsKGZsb2F0IHQpCi17Ci0gICAgZmxvYXQgbCA9IHQgLyAyLjBmOwotICAg
IGZsb2F0IGYgPSBsIC0gc3RkOjpmbG9vcihsKTsKLSAgICByZXR1cm4gKGYgPiAwLjVmID8gMS4w
ZiAtIGYgOiBmKSAqIDQuMGYgLSAxLjBmOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXNp
emVfdCBWZWN0b3JTaXplQnl0ZXMoY29uc3Qgc3RkOjp2ZWN0b3I8VD4gJnZlYykKLXsKLSAgICBy
ZXR1cm4gc2l6ZW9mKFQpICogdmVjLnNpemUoKTsKLX0KLQotVmVjdG9yMyBSYW5kb21WZWN0b3Iz
KFJORyAqcm5nKQotewotICAgIHJldHVybiBWZWN0b3IzKHJuZy0+cmFuZG9tTmVnYXRpdmVPbmVU
b09uZSgpLCBybmctPnJhbmRvbU5lZ2F0aXZlT25lVG9PbmUoKSwKLSAgICAgICAgICAgICAgICAg
ICBybmctPnJhbmRvbU5lZ2F0aXZlT25lVG9PbmUoKSk7Ci19Ci0KLXN0cnVjdCBJbnN0YW5jaW5n
UGVyZlBhcmFtcyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUZXN0UGFyYW1zCi17Ci0gICAgLy8gQ29t
bW9uIGRlZmF1bHQgb3B0aW9ucwotICAgIEluc3RhbmNpbmdQZXJmUGFyYW1zKCkKLSAgICB7Ci0g
ICAgICAgIG1ham9yVmVyc2lvbiAgICAgID0gMjsKLSAgICAgICAgbWlub3JWZXJzaW9uICAgICAg
PSAwOwotICAgICAgICB3aW5kb3dXaWR0aCAgICAgICA9IDI1NjsKLSAgICAgICAgd2luZG93SGVp
Z2h0ICAgICAgPSAyNTY7Ci0gICAgICAgIGl0ZXJhdGlvbnMgICAgICAgID0gMTsKLSAgICAgICAg
cnVuVGltZVNlY29uZHMgICAgPSAxMC4wOwotICAgICAgICBhbmltYXRpb25FbmFibGVkICA9IGZh
bHNlOwotICAgICAgICBpbnN0YW5jaW5nRW5hYmxlZCA9IHRydWU7Ci0gICAgfQotCi0gICAgc3Rk
OjpzdHJpbmcgc3VmZml4KCkgY29uc3Qgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3Ry
aW5nc3RyZWFtIHN0cnN0cjsKLQotICAgICAgICBzdHJzdHIgPDwgUmVuZGVyVGVzdFBhcmFtczo6
c3VmZml4KCk7Ci0KLSAgICAgICAgaWYgKCFpbnN0YW5jaW5nRW5hYmxlZCkKLSAgICAgICAgewot
ICAgICAgICAgICAgc3Ryc3RyIDw8ICJfYmlsbGJvYXJkcyI7Ci0gICAgICAgIH0KLQotICAgICAg
ICByZXR1cm4gc3Ryc3RyLnN0cigpOwotICAgIH0KLQotICAgIHVuc2lnbmVkIGludCBpdGVyYXRp
b25zOwotICAgIGRvdWJsZSBydW5UaW1lU2Vjb25kczsKLSAgICBib29sIGFuaW1hdGlvbkVuYWJs
ZWQ7Ci0gICAgYm9vbCBpbnN0YW5jaW5nRW5hYmxlZDsKLX07Ci0KLXN0ZDo6b3N0cmVhbSAmb3Bl
cmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBJbnN0YW5jaW5nUGVyZlBhcmFtcyAmcGFy
YW1zKQotewotICAgIG9zIDw8IHBhcmFtcy5zdWZmaXgoKS5zdWJzdHIoMSk7Ci0gICAgcmV0dXJu
IG9zOwotfQotCi1jbGFzcyBJbnN0YW5jaW5nUGVyZkJlbmNobWFyayA6IHB1YmxpYyBBTkdMRVJl
bmRlclRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyA6OnRlc3Rp
bmc6OldpdGhQYXJhbUludGVyZmFjZTxJbnN0YW5jaW5nUGVyZlBhcmFtcz4KLXsKLSAgcHVibGlj
OgotICAgIEluc3RhbmNpbmdQZXJmQmVuY2htYXJrKCk7Ci0KLSAgICB2b2lkIGluaXRpYWxpemVC
ZW5jaG1hcmsoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRlc3Ryb3lCZW5jaG1hcmsoKSBvdmVycmlk
ZTsKLSAgICB2b2lkIGRyYXdCZW5jaG1hcmsoKSBvdmVycmlkZTsKLQotICBwcml2YXRlOgotICAg
IEdMdWludCBtUHJvZ3JhbTsKLSAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1CdWZmZXJzOwotICAg
IEdMdWludCBtTnVtUG9pbnRzOwotICAgIHN0ZDo6dmVjdG9yPFZlY3RvcjM+IG1UcmFuc2xhdGVE
YXRhOwotICAgIHN0ZDo6dmVjdG9yPGZsb2F0PiBtU2l6ZURhdGE7Ci0gICAgc3RkOjp2ZWN0b3I8
VmVjdG9yMz4gbUNvbG9yRGF0YTsKLSAgICBhbmdsZTo6Uk5HIG1STkc7Ci19OwotCi1JbnN0YW5j
aW5nUGVyZkJlbmNobWFyazo6SW5zdGFuY2luZ1BlcmZCZW5jaG1hcmsoKQotICAgIDogQU5HTEVS
ZW5kZXJUZXN0KCJJbnN0YW5jaW5nUGVyZiIsIEdldFBhcmFtKCkpLCBtUHJvZ3JhbSgwKSwgbU51
bVBvaW50cyg3NTAwMCkKLXsKLSAgICBtUnVuVGltZVNlY29uZHMgPSBHZXRQYXJhbSgpLnJ1blRp
bWVTZWNvbmRzOwotfQotCi12b2lkIEluc3RhbmNpbmdQZXJmQmVuY2htYXJrOjppbml0aWFsaXpl
QmVuY2htYXJrKCkKLXsKLSAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOwotCi0g
ICAgQVNTRVJUX0xUKDB1LCBwYXJhbXMuaXRlcmF0aW9ucyk7Ci0KLSAgICBjb25zdCBzdGQ6OnN0
cmluZyB2cyA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjMiBhUG9zaXRpb247XG4iCi0gICAgICAg
ICJhdHRyaWJ1dGUgdmVjMyBhVHJhbnNsYXRlO1xuIgotICAgICAgICAiYXR0cmlidXRlIGZsb2F0
IGFTY2FsZTtcbiIKLSAgICAgICAgImF0dHJpYnV0ZSB2ZWMzIGFDb2xvcjtcbiIKLSAgICAgICAg
InVuaWZvcm0gbWF0NCB1V29ybGRNYXRyaXg7XG4iCi0gICAgICAgICJ1bmlmb3JtIG1hdDQgdVBy
b2plY3Rpb25NYXRyaXg7XG4iCi0gICAgICAgICJ2YXJ5aW5nIHZlYzMgdkNvbG9yO1xuIgotICAg
ICAgICAidm9pZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICB2ZWM0IHBv
c2l0aW9uID0gdVdvcmxkTWF0cml4ICogdmVjNChhVHJhbnNsYXRlLCAxLjApO1xuIgotICAgICAg
ICAiICAgIHBvc2l0aW9uLnh5ICs9IGFQb3NpdGlvbiAqIGFTY2FsZTtcbiIKLSAgICAgICAgIiAg
ICBnbF9Qb3NpdGlvbiA9IHVQcm9qZWN0aW9uTWF0cml4ICogcG9zaXRpb247XG4iCi0gICAgICAg
ICIgICAgdkNvbG9yID0gYUNvbG9yO1xuIgotICAgICAgICAifVxuIjsKLQotICAgIGNvbnN0IHN0
ZDo6c3RyaW5nIGZzID0KLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAg
ICAgICAidmFyeWluZyB2ZWMzIHZDb2xvcjtcbiIKLSAgICAgICAgInZvaWQgbWFpbigpXG4iCi0g
ICAgICAgICJ7XG4iCi0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh2Q29sb3IsIDEu
MCk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3JhbSh2
cywgZnMpOwotICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotCi0gICAgZ2xVc2VQcm9ncmFt
KG1Qcm9ncmFtKTsKLQotICAgIGdsQ2xlYXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsK
LQotICAgIEdMdWludCBiYXNlSW5kZXhEYXRhWzZdICAgICA9IHswLCAxLCAyLCAxLCAzLCAyfTsK
LSAgICBWZWN0b3IyIGJhc2VQb3NpdGlvbkRhdGFbNF0gPSB7VmVjdG9yMigtMS4wZiwgMS4wZiks
IFZlY3RvcjIoMS4wZiwgMS4wZiksIFZlY3RvcjIoLTEuMGYsIC0xLjBmKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yMigxLjBmLCAtMS4wZil9OwotCi0gICAgc3Rk
Ojp2ZWN0b3I8R0x1aW50PiBpbmRleERhdGE7Ci0gICAgc3RkOjp2ZWN0b3I8VmVjdG9yMj4gcG9z
aXRpb25EYXRhOwotCi0gICAgaWYgKCFwYXJhbXMuaW5zdGFuY2luZ0VuYWJsZWQpCi0gICAgewot
ICAgICAgICBHTHVpbnQgcG9pbnRWZXJ0ZXhTdHJpZGUgPSA0OwotICAgICAgICBmb3IgKEdMdWlu
dCBwb2ludEluZGV4ID0gMDsgcG9pbnRJbmRleCA8IG1OdW1Qb2ludHM7ICsrcG9pbnRJbmRleCkK
LSAgICAgICAgewotICAgICAgICAgICAgZm9yIChHTHVpbnQgaW5kZXhJbmRleCA9IDA7IGluZGV4
SW5kZXggPCA2OyArK2luZGV4SW5kZXgpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
aW5kZXhEYXRhLnB1c2hfYmFjayhiYXNlSW5kZXhEYXRhW2luZGV4SW5kZXhdICsgcG9pbnRJbmRl
eCAqIHBvaW50VmVydGV4U3RyaWRlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgVmVj
dG9yMyByYW5kVmVjID0gUmFuZG9tVmVjdG9yMygmbVJORyk7Ci0gICAgICAgICAgICBmb3IgKEdM
dWludCB2ZXJ0ZXhJbmRleCA9IDA7IHZlcnRleEluZGV4IDwgNDsgKyt2ZXJ0ZXhJbmRleCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBwb3NpdGlvbkRhdGEucHVzaF9iYWNrKGJhc2VQ
b3NpdGlvbkRhdGFbdmVydGV4SW5kZXhdKTsKLSAgICAgICAgICAgICAgICBtVHJhbnNsYXRlRGF0
YS5wdXNoX2JhY2socmFuZFZlYyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAg
ICBtU2l6ZURhdGEucmVzaXplKG1OdW1Qb2ludHMgKiA0LCAwLjAxMmYpOwotICAgICAgICBtQ29s
b3JEYXRhLnJlc2l6ZShtTnVtUG9pbnRzICogNCwgVmVjdG9yMygxLjBmLCAwLjBmLCAwLjBmKSk7
Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIGZvciAoR0x1aW50IGluZGV4IDogYmFz
ZUluZGV4RGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgaW5kZXhEYXRhLnB1c2hfYmFjayhp
bmRleCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKGNvbnN0IFZlY3RvcjIgJnBvc2l0aW9u
IDogYmFzZVBvc2l0aW9uRGF0YSkKLSAgICAgICAgewotICAgICAgICAgICAgcG9zaXRpb25EYXRh
LnB1c2hfYmFjayhwb3NpdGlvbik7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3IgKEdMdWludCBw
b2ludEluZGV4ID0gMDsgcG9pbnRJbmRleCA8IG1OdW1Qb2ludHM7ICsrcG9pbnRJbmRleCkKLSAg
ICAgICAgewotICAgICAgICAgICAgVmVjdG9yMyByYW5kVmVjID0gUmFuZG9tVmVjdG9yMygmbVJO
Ryk7Ci0gICAgICAgICAgICBtVHJhbnNsYXRlRGF0YS5wdXNoX2JhY2socmFuZFZlYyk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBtU2l6ZURhdGEucmVzaXplKG1OdW1Qb2ludHMsIDAuMDEyZik7Ci0g
ICAgICAgIG1Db2xvckRhdGEucmVzaXplKG1OdW1Qb2ludHMsIFZlY3RvcjMoMS4wZiwgMC4wZiwg
MC4wZikpOwotICAgIH0KLQotICAgIG1CdWZmZXJzLnJlc2l6ZSg1LCAwKTsKLSAgICBnbEdlbkJ1
ZmZlcnMoc3RhdGljX2Nhc3Q8R0xzaXplaT4obUJ1ZmZlcnMuc2l6ZSgpKSwgJm1CdWZmZXJzWzBd
KTsKLQotICAgIC8vIEluZGV4IERhdGEKLSAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJB
WV9CVUZGRVIsIG1CdWZmZXJzWzBdKTsKLSAgICBnbEJ1ZmZlckRhdGEoR0xfRUxFTUVOVF9BUlJB
WV9CVUZGRVIsIFZlY3RvclNpemVCeXRlcyhpbmRleERhdGEpLCAmaW5kZXhEYXRhWzBdLAotICAg
ICAgICAgICAgICAgICBHTF9TVEFUSUNfRFJBVyk7Ci0KLSAgICAvLyBQb3NpdGlvbiBEYXRhCi0g
ICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcnNbMV0pOwotICAgIGdsQnVm
ZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIFZlY3RvclNpemVCeXRlcyhwb3NpdGlvbkRhdGEpLCAm
cG9zaXRpb25EYXRhWzBdLCBHTF9TVEFUSUNfRFJBVyk7Ci0gICAgR0xpbnQgcG9zaXRpb25Mb2Nh
dGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVByb2dyYW0sICJhUG9zaXRpb24iKTsKLSAgICBB
U1NFUlRfTkUoLTEsIHBvc2l0aW9uTG9jYXRpb24pOwotICAgIGdsVmVydGV4QXR0cmliUG9pbnRl
cihwb3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDgsIG51bGxwdHIpOwot
ICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7Ci0KLSAgICAv
LyBUcmFuc2xhdGUgRGF0YQotICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZm
ZXJzWzJdKTsKLSAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCBWZWN0b3JTaXplQnl0
ZXMobVRyYW5zbGF0ZURhdGEpLCAmbVRyYW5zbGF0ZURhdGFbMF0sCi0gICAgICAgICAgICAgICAg
IEdMX1NUQVRJQ19EUkFXKTsKLSAgICBHTGludCB0cmFuc2xhdGVMb2NhdGlvbiA9IGdsR2V0QXR0
cmliTG9jYXRpb24obVByb2dyYW0sICJhVHJhbnNsYXRlIik7Ci0gICAgQVNTRVJUX05FKC0xLCB0
cmFuc2xhdGVMb2NhdGlvbik7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHRyYW5zbGF0ZUxv
Y2F0aW9uLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDEyLCBudWxscHRyKTsKLSAgICBnbEVuYWJs
ZVZlcnRleEF0dHJpYkFycmF5KHRyYW5zbGF0ZUxvY2F0aW9uKTsKLSAgICBnbFZlcnRleEF0dHJp
YkRpdmlzb3JBTkdMRSh0cmFuc2xhdGVMb2NhdGlvbiwgMSk7Ci0KLSAgICAvLyBTY2FsZSBEYXRh
Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcnNbM10pOwotICAgIGds
QnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIFZlY3RvclNpemVCeXRlcyhtU2l6ZURhdGEpLCBu
dWxscHRyLCBHTF9EWU5BTUlDX0RSQVcpOwotICAgIEdMaW50IHNjYWxlTG9jYXRpb24gPSBnbEdl
dEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiYVNjYWxlIik7Ci0gICAgQVNTRVJUX05FKC0xLCBz
Y2FsZUxvY2F0aW9uKTsKLSAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoc2NhbGVMb2NhdGlvbiwg
MSwgR0xfRkxPQVQsIEdMX0ZBTFNFLCA0LCBudWxscHRyKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0
dHJpYkFycmF5KHNjYWxlTG9jYXRpb24pOwotICAgIGdsVmVydGV4QXR0cmliRGl2aXNvckFOR0xF
KHNjYWxlTG9jYXRpb24sIDEpOwotCi0gICAgLy8gQ29sb3IgRGF0YQotICAgIGdsQmluZEJ1ZmZl
cihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXJzWzRdKTsKLSAgICBnbEJ1ZmZlckRhdGEoR0xfQVJS
QVlfQlVGRkVSLCBWZWN0b3JTaXplQnl0ZXMobUNvbG9yRGF0YSksIG51bGxwdHIsIEdMX0RZTkFN
SUNfRFJBVyk7Ci0gICAgR0xpbnQgY29sb3JMb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24o
bVByb2dyYW0sICJhQ29sb3IiKTsKLSAgICBBU1NFUlRfTkUoLTEsIGNvbG9yTG9jYXRpb24pOwot
ICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihjb2xvckxvY2F0aW9uLCAzLCBHTF9GTE9BVCwgR0xf
RkFMU0UsIDEyLCBudWxscHRyKTsKLSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KGNvbG9y
TG9jYXRpb24pOwotICAgIGdsVmVydGV4QXR0cmliRGl2aXNvckFOR0xFKGNvbG9yTG9jYXRpb24s
IDEpOwotCi0gICAgLy8gU2V0IHRoZSB2aWV3cG9ydAotICAgIGdsVmlld3BvcnQoMCwgMCwgZ2V0
V2luZG93KCktPmdldFdpZHRoKCksIGdldFdpbmRvdygpLT5nZXRIZWlnaHQoKSk7Ci0KLSAgICAv
LyBJbml0IG1hdHJpY2VzCi0gICAgR0xpbnQgd29ybGRNYXRyaXhMb2NhdGlvbiA9IGdsR2V0VW5p
Zm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCAidVdvcmxkTWF0cml4Iik7Ci0gICAgQVNTRVJUX05FKC0x
LCB3b3JsZE1hdHJpeExvY2F0aW9uKTsKLSAgICBNYXRyaXg0IHdvcmxkTWF0cml4ID0gTWF0cml4
NDo6dHJhbnNsYXRlKFZlY3RvcjMoMCwgMCwgLTMuMGYpKTsKLSAgICB3b3JsZE1hdHJpeCAqPSBN
YXRyaXg0Ojpyb3RhdGUoMjUuMGYsIFZlY3RvcjMoMC42ZiwgMS4wZiwgMC4wZikpOwotICAgIGds
VW5pZm9ybU1hdHJpeDRmdih3b3JsZE1hdHJpeExvY2F0aW9uLCAxLCBHTF9GQUxTRSwgJndvcmxk
TWF0cml4LmRhdGFbMF0pOwotCi0gICAgR0xpbnQgcHJvamVjdGlvbk1hdHJpeExvY2F0aW9uID0g
Z2xHZXRVbmlmb3JtTG9jYXRpb24obVByb2dyYW0sICJ1UHJvamVjdGlvbk1hdHJpeCIpOwotICAg
IEFTU0VSVF9ORSgtMSwgcHJvamVjdGlvbk1hdHJpeExvY2F0aW9uKTsKLSAgICBmbG9hdCBmb3Yg
PQotICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4oZ2V0V2luZG93KCktPmdldFdpZHRoKCkpIC8g
c3RhdGljX2Nhc3Q8ZmxvYXQ+KGdldFdpbmRvdygpLT5nZXRIZWlnaHQoKSk7Ci0gICAgTWF0cml4
NCBwcm9qZWN0aW9uTWF0cml4ID0gTWF0cml4NDo6cGVyc3BlY3RpdmUoNjAuMGYsIGZvdiwgMS4w
ZiwgMzAwLjBmKTsKLSAgICBnbFVuaWZvcm1NYXRyaXg0ZnYocHJvamVjdGlvbk1hdHJpeExvY2F0
aW9uLCAxLCBHTF9GQUxTRSwgJnByb2plY3Rpb25NYXRyaXguZGF0YVswXSk7Ci0KLSAgICBnZXRX
aW5kb3coKS0+c2V0VmlzaWJsZSh0cnVlKTsKLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwot
fQotCi12b2lkIEluc3RhbmNpbmdQZXJmQmVuY2htYXJrOjpkZXN0cm95QmVuY2htYXJrKCkKLXsK
LSAgICBnbERlbGV0ZVByb2dyYW0obVByb2dyYW0pOwotCi0gICAgaWYgKCFtQnVmZmVycy5lbXB0
eSgpKQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVCdWZmZXJzKHN0YXRpY19jYXN0PEdMc2l6ZWk+
KG1CdWZmZXJzLnNpemUoKSksICZtQnVmZmVyc1swXSk7Ci0gICAgICAgIG1CdWZmZXJzLmNsZWFy
KCk7Ci0gICAgfQotfQotCi12b2lkIEluc3RhbmNpbmdQZXJmQmVuY2htYXJrOjpkcmF3QmVuY2ht
YXJrKCkKLXsKLSAgICBnbENsZWFyKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgY29uc3Qg
YXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKLQotICAgIC8vIEFuaW1hdGlubyBtYWtlcyB0aGUg
dGVzdCBtb3JlIGludGVyZXN0aW5nIHZpc3VhbGx5LCBidXQgYWxzbyBlYXRzIHVwIG1hbnkgQ1BV
IGN5Y2xlcy4KLSAgICBpZiAocGFyYW1zLmFuaW1hdGlvbkVuYWJsZWQpCi0gICAgewotICAgICAg
ICAvLyBOb3QgaW1wbGVtZW50ZWQgZm9yIGJpbGxib2FyZHMuCi0gICAgICAgIEFTU0VSVChwYXJh
bXMuaW5zdGFuY2luZ0VuYWJsZWQpOwotCi0gICAgICAgIGZsb2F0IHRpbWUgPSBzdGF0aWNfY2Fz
dDxmbG9hdD4obVRpbWVyLT5nZXRFbGFwc2VkVGltZSgpKTsKLQotICAgICAgICBmb3IgKHNpemVf
dCBwb2ludEluZGV4ID0gMDsgcG9pbnRJbmRleCA8IG1UcmFuc2xhdGVEYXRhLnNpemUoKTsgKytw
b2ludEluZGV4KQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBWZWN0b3IzICZ0cmFuc2xh
dGUgPSBtVHJhbnNsYXRlRGF0YVtwb2ludEluZGV4XTsKLQotICAgICAgICAgICAgZmxvYXQgdHgg
PSB0cmFuc2xhdGUueCArIHRpbWU7Ci0gICAgICAgICAgICBmbG9hdCB0eSA9IHRyYW5zbGF0ZS55
ICsgdGltZTsKLSAgICAgICAgICAgIGZsb2F0IHR6ID0gdHJhbnNsYXRlLnogKyB0aW1lOwotCi0g
ICAgICAgICAgICBmbG9hdCBzY2FsZSAgICAgICAgICAgPSBBbmltYXRpb25TaWduYWwodHgpICog
MC4wMWYgKyAwLjAxZjsKLSAgICAgICAgICAgIG1TaXplRGF0YVtwb2ludEluZGV4XSA9IHNjYWxl
OwotCi0gICAgICAgICAgICBWZWN0b3IzIGNvbG9yOwotICAgICAgICAgICAgY29sb3IueCA9IEFu
aW1hdGlvblNpZ25hbCh0eCkgKiAwLjVmICsgMC41ZjsKLSAgICAgICAgICAgIGNvbG9yLnkgPSBB
bmltYXRpb25TaWduYWwodHkpICogMC41ZiArIDAuNWY7Ci0gICAgICAgICAgICBjb2xvci56ID0g
QW5pbWF0aW9uU2lnbmFsKHR6KSAqIDAuNWYgKyAwLjVmOwotCi0gICAgICAgICAgICBtQ29sb3JE
YXRhW3BvaW50SW5kZXhdID0gY29sb3I7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBVcGRh
dGUgc2NhbGVzIGFuZCBjb2xvcnMuCi0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwg
bUJ1ZmZlcnNbM10pOwotICAgIGdsQnVmZmVyU3ViRGF0YShHTF9BUlJBWV9CVUZGRVIsIDAsIFZl
Y3RvclNpemVCeXRlcyhtU2l6ZURhdGEpLCAmbVNpemVEYXRhWzBdKTsKLQotICAgIGdsQmluZEJ1
ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1CdWZmZXJzWzRdKTsKLSAgICBnbEJ1ZmZlclN1YkRhdGEo
R0xfQVJSQVlfQlVGRkVSLCAwLCBWZWN0b3JTaXplQnl0ZXMobUNvbG9yRGF0YSksICZtQ29sb3JE
YXRhWzBdKTsKLQotICAgIC8vIFJlbmRlciB0aGUgaW5zdGFuY2VzL2JpbGxib2FyZHMuCi0gICAg
aWYgKHBhcmFtcy5pbnN0YW5jaW5nRW5hYmxlZCkKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgaW50IGl0ID0gMDsgaXQgPCBwYXJhbXMuaXRlcmF0aW9uczsgaXQrKykKLSAgICAgICAgewot
ICAgICAgICAgICAgZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHTF9UUklBTkdMRVMsIDYs
IEdMX1VOU0lHTkVEX0lOVCwgbnVsbHB0ciwgbU51bVBvaW50cyk7Ci0gICAgICAgIH0KLSAgICB9
Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaXQgPSAwOyBpdCA8
IHBhcmFtcy5pdGVyYXRpb25zOyBpdCsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBnbERyYXdF
bGVtZW50cyhHTF9UUklBTkdMRVMsIDYgKiBtTnVtUG9pbnRzLCBHTF9VTlNJR05FRF9JTlQsIG51
bGxwdHIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19
Ci0KLUluc3RhbmNpbmdQZXJmUGFyYW1zIEluc3RhbmNpbmdQZXJmRDNEMTFQYXJhbXMoKQotewot
ICAgIEluc3RhbmNpbmdQZXJmUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVy
cyA9IEQzRDExKCk7Ci0gICAgcmV0dXJuIHBhcmFtczsKLX0KLQotSW5zdGFuY2luZ1BlcmZQYXJh
bXMgSW5zdGFuY2luZ1BlcmZEM0Q5UGFyYW1zKCkKLXsKLSAgICBJbnN0YW5jaW5nUGVyZlBhcmFt
cyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBEM0Q5KCk7Ci0gICAgcmV0dXJu
IHBhcmFtczsKLX0KLQotSW5zdGFuY2luZ1BlcmZQYXJhbXMgSW5zdGFuY2luZ1BlcmZPcGVuR0xQ
YXJhbXMoKQotewotICAgIEluc3RhbmNpbmdQZXJmUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMu
ZWdsUGFyYW1ldGVycyA9IE9QRU5HTCgpOwotICAgIHJldHVybiBwYXJhbXM7Ci19Ci0KLVRFU1Rf
UChJbnN0YW5jaW5nUGVyZkJlbmNobWFyaywgUnVuKQotewotICAgIHJ1bigpOwotfQotCi1BTkdM
RV9JTlNUQU5USUFURV9URVNUKEluc3RhbmNpbmdQZXJmQmVuY2htYXJrLAotICAgICAgICAgICAg
ICAgICAgICAgICBJbnN0YW5jaW5nUGVyZkQzRDExUGFyYW1zKCksCi0gICAgICAgICAgICAgICAg
ICAgICAgIEluc3RhbmNpbmdQZXJmRDNEOVBhcmFtcygpLAotICAgICAgICAgICAgICAgICAgICAg
ICBJbnN0YW5jaW5nUGVyZk9wZW5HTFBhcmFtcygpKTsKLQotfSAgLy8gYW5vbnltb3VzIG5hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZf
dGVzdHMvSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL0ludGVybGVhdmVkQXR0cmlidXRlRGF0YS5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1ZTJhNWIxNGJhLi4wMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9JbnRlcmxlYXZl
ZEF0dHJpYnV0ZURhdGEuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLS8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCi0vLwotLy8gSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhOgotLy8gICBQZXJmb3JtYW5jZSB0
ZXN0IGZvciBkcmF3cyB1c2luZyBpbnRlcmxlYXZlZCBhdHRyaWJ1dGUgZGF0YSBpbiB2ZXJ0ZXgg
YnVmZmVycy4KLS8vCi0KLSNpbmNsdWRlIDxzc3RyZWFtPgotCi0jaW5jbHVkZSAiQU5HTEVQZXJm
VGVzdC5oIgotI2luY2x1ZGUgInNoYWRlcl91dGlscy5oIgotCi11c2luZyBuYW1lc3BhY2UgYW5n
bGU7Ci0KLW5hbWVzcGFjZQotewotCi1zdHJ1Y3QgSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhUGFy
YW1zIGZpbmFsIDogcHVibGljIFJlbmRlclRlc3RQYXJhbXMKLXsKLSAgICBJbnRlcmxlYXZlZEF0
dHJpYnV0ZURhdGFQYXJhbXMoKQotICAgIHsKLSAgICAgICAgLy8gQ29tbW9uIGRlZmF1bHQgdmFs
dWVzCi0gICAgICAgIG1ham9yVmVyc2lvbiA9IDI7Ci0gICAgICAgIG1pbm9yVmVyc2lvbiA9IDA7
Ci0gICAgICAgIHdpbmRvd1dpZHRoICA9IDUxMjsKLSAgICAgICAgd2luZG93SGVpZ2h0ID0gNTEy
OwotICAgICAgICBudW1TcHJpdGVzICAgPSAzMDAwOwotICAgIH0KLQotICAgIC8vIHN0YXRpYyBw
YXJhbWV0ZXJzCi0gICAgdW5zaWduZWQgaW50IG51bVNwcml0ZXM7Ci19OwotCi1zdGQ6Om9zdHJl
YW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvcywgY29uc3QgSW50ZXJsZWF2ZWRBdHRyaWJ1
dGVEYXRhUGFyYW1zICZwYXJhbXMpCi17Ci0gICAgb3MgPDwgcGFyYW1zLnN1ZmZpeCgpLnN1YnN0
cigxKTsKLQotICAgIGlmIChwYXJhbXMuZWdsUGFyYW1ldGVycy5tYWpvclZlcnNpb24gIT0gRUdM
X0RPTlRfQ0FSRSkKLSAgICB7Ci0gICAgICAgIG9zIDw8ICJfIiA8PCBwYXJhbXMuZWdsUGFyYW1l
dGVycy5tYWpvclZlcnNpb24gPDwgIl8iIDw8IHBhcmFtcy5lZ2xQYXJhbWV0ZXJzLm1pbm9yVmVy
c2lvbjsKLSAgICB9Ci0KLSAgICByZXR1cm4gb3M7Ci19Ci0KLWNsYXNzIEludGVybGVhdmVkQXR0
cmlidXRlRGF0YUJlbmNobWFyawotICAgIDogcHVibGljIEFOR0xFUmVuZGVyVGVzdCwKLSAgICAg
IHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxJbnRlcmxlYXZlZEF0dHJpYnV0
ZURhdGFQYXJhbXM+Ci17Ci0gIHB1YmxpYzoKLSAgICBJbnRlcmxlYXZlZEF0dHJpYnV0ZURhdGFC
ZW5jaG1hcmsoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUJlbmNobWFyaygpIG92ZXJyaWRlOwot
ICAgIHZvaWQgZGVzdHJveUJlbmNobWFyaygpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0JlbmNo
bWFyaygpIG92ZXJyaWRlOwotCi0gIHByaXZhdGU6Ci0gICAgR0x1aW50IG1Qb2ludFNwcml0ZVBy
b2dyYW07Ci0gICAgR0x1aW50IG1Qb3NpdGlvbkNvbG9yQnVmZmVyWzJdOwotCi0gICAgLy8gVGhl
IGJ1ZmZlcnMgY29udGFpbiB0d28gZmxvYXRzIGFuZCAzIHVuc2lnbmVkIGJ5dGVzIHBlciBwb2lu
dCBzcHJpdGUKLSAgICBjb25zdCBzaXplX3QgbUJ5dGVzUGVyU3ByaXRlID0gMiAqIHNpemVvZihm
bG9hdCkgKyAzOwotfTsKLQotSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhQmVuY2htYXJrOjpJbnRl
cmxlYXZlZEF0dHJpYnV0ZURhdGFCZW5jaG1hcmsoKQotICAgIDogQU5HTEVSZW5kZXJUZXN0KCJJ
bnRlcmxlYXZlZEF0dHJpYnV0ZURhdGEiLCBHZXRQYXJhbSgpKSwgbVBvaW50U3ByaXRlUHJvZ3Jh
bSgwKQotewotfQotCi12b2lkIEludGVybGVhdmVkQXR0cmlidXRlRGF0YUJlbmNobWFyazo6aW5p
dGlhbGl6ZUJlbmNobWFyaygpCi17Ci0gICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0o
KTsKLQotICAgIC8vIENvbXBpbGUgcG9pbnQgc3ByaXRlIHNoYWRlcnMKLSAgICBjb25zdCBzdGQ6
OnN0cmluZyB2cyA9Ci0gICAgICAgICJhdHRyaWJ1dGUgdmVjNCBhUG9zaXRpb247IgotICAgICAg
ICAiYXR0cmlidXRlIHZlYzQgYUNvbG9yOyIKLSAgICAgICAgInZhcnlpbmcgdmVjNCB2Q29sb3I7
IgotICAgICAgICAidm9pZCBtYWluKCkiCi0gICAgICAgICJ7IgotICAgICAgICAiICAgIGdsX1Bv
aW50U2l6ZSA9IDI1LjA7IgotICAgICAgICAiICAgIGdsX1Bvc2l0aW9uICA9IGFQb3NpdGlvbjsi
Ci0gICAgICAgICIgICAgdkNvbG9yID0gYUNvbG9yOyIKLSAgICAgICAgIn0iOwotCi0gICAgY29u
c3Qgc3RkOjpzdHJpbmcgZnMgPQotICAgICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7Igot
ICAgICAgICAidmFyeWluZyB2ZWM0IHZDb2xvcjsiCi0gICAgICAgICJ2b2lkIG1haW4oKSIKLSAg
ICAgICAgInsiCi0gICAgICAgICIgICAgZ2xfRnJhZ0NvbG9yID0gdkNvbG9yOyIKLSAgICAgICAg
In0iOwotCi0gICAgbVBvaW50U3ByaXRlUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzLCBmcyk7
Ci0gICAgQVNTRVJUX05FKDB1LCBtUG9pbnRTcHJpdGVQcm9ncmFtKTsKLQotICAgIGdsQ2xlYXJD
b2xvcigwLjBmLCAxLjBmLCAwLjBmLCAxLjBmKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgQXJyYXlTaXplKG1Qb3NpdGlvbkNvbG9yQnVmZmVyKTsgaSsrKQotICAgIHsKLSAgICAgICAg
Ly8gU2V0IHVwIGluaXRpYWwgZGF0YSBmb3IgcG9pbnRzcHJpdGUgcG9zaXRpb25zIGFuZCBjb2xv
cnMKLSAgICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gcG9zaXRpb25Db2xvckRhdGEobUJ5dGVz
UGVyU3ByaXRlICogcGFyYW1zLm51bVNwcml0ZXMpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBqID0gMDsgaiA8IHBhcmFtcy5udW1TcHJpdGVzOyBqKyspCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGZsb2F0IHBvaW50U3ByaXRlWCA9Ci0gICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PGZs
b2F0PihyYW5kKCkgJSBnZXRXaW5kb3coKS0+Z2V0V2lkdGgoKSkgLyBnZXRXaW5kb3coKS0+Z2V0
V2lkdGgoKSkgKgotICAgICAgICAgICAgICAgICAgICAyLjBmIC0gMS4wZjsKLSAgICAgICAgICAg
IGZsb2F0IHBvaW50U3ByaXRlWSA9Ci0gICAgICAgICAgICAgICAgKHN0YXRpY19jYXN0PGZsb2F0
PihyYW5kKCkgJSBnZXRXaW5kb3coKS0+Z2V0SGVpZ2h0KCkpIC8gZ2V0V2luZG93KCktPmdldEhl
aWdodCgpKSAqCi0gICAgICAgICAgICAgICAgICAgIDIuMGYgLSAxLjBmOwotICAgICAgICAgICAg
R0x1Ynl0ZSBwb2ludFNwcml0ZVJlZCAgID0gc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4ocmFuZCgpICUg
MjU1KTsKLSAgICAgICAgICAgIEdMdWJ5dGUgcG9pbnRTcHJpdGVHcmVlbiA9IHN0YXRpY19jYXN0
PEdMdWJ5dGU+KHJhbmQoKSAlIDI1NSk7Ci0gICAgICAgICAgICBHTHVieXRlIHBvaW50U3ByaXRl
Qmx1ZSAgPSBzdGF0aWNfY2FzdDxHTHVieXRlPihyYW5kKCkgJSAyNTUpOwotCi0gICAgICAgICAg
ICAvLyBBZGQgcG9zaXRpb24gZGF0YSBmb3IgdGhlIHBvaW50c3ByaXRlCi0gICAgICAgICAgICAq
cmVpbnRlcnByZXRfY2FzdDxmbG9hdCAqPigKLSAgICAgICAgICAgICAgICAmKHBvc2l0aW9uQ29s
b3JEYXRhW2ogKiBtQnl0ZXNQZXJTcHJpdGUgKyAwICogc2l6ZW9mKGZsb2F0KSArIDBdKSkgPQot
ICAgICAgICAgICAgICAgIHBvaW50U3ByaXRlWDsgIC8vIFgKLSAgICAgICAgICAgICpyZWludGVy
cHJldF9jYXN0PGZsb2F0ICo+KAotICAgICAgICAgICAgICAgICYocG9zaXRpb25Db2xvckRhdGFb
aiAqIG1CeXRlc1BlclNwcml0ZSArIDEgKiBzaXplb2YoZmxvYXQpICsgMF0pKSA9Ci0gICAgICAg
ICAgICAgICAgcG9pbnRTcHJpdGVZOyAgLy8gWQotCi0gICAgICAgICAgICAvLyBBZGQgY29sb3Ig
ZGF0YSBmb3IgdGhlIHBvaW50c3ByaXRlCi0gICAgICAgICAgICBwb3NpdGlvbkNvbG9yRGF0YVtq
ICogbUJ5dGVzUGVyU3ByaXRlICsgMiAqIHNpemVvZihmbG9hdCkgKyAwXSA9IHBvaW50U3ByaXRl
UmVkOyAgICAvLyBSCi0gICAgICAgICAgICBwb3NpdGlvbkNvbG9yRGF0YVtqICogbUJ5dGVzUGVy
U3ByaXRlICsgMiAqIHNpemVvZihmbG9hdCkgKyAxXSA9IHBvaW50U3ByaXRlR3JlZW47ICAvLyBH
Ci0gICAgICAgICAgICBwb3NpdGlvbkNvbG9yRGF0YVtqICogbUJ5dGVzUGVyU3ByaXRlICsgMiAq
IHNpemVvZihmbG9hdCkgKyAyXSA9IHBvaW50U3ByaXRlQmx1ZTsgICAvLyBCCi0gICAgICAgIH0K
LQotICAgICAgICAvLyBHZW5lcmF0ZSB0aGUgR0wgYnVmZmVyIHdpdGggdGhlIHBvc2l0aW9uL2Nv
bG9yIGRhdGEKLSAgICAgICAgZ2xHZW5CdWZmZXJzKDEsICZtUG9zaXRpb25Db2xvckJ1ZmZlcltp
XSk7Ci0gICAgICAgIGdsQmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZGRVIsIG1Qb3NpdGlvbkNvbG9y
QnVmZmVyW2ldKTsKLSAgICAgICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgcGFyYW1z
Lm51bVNwcml0ZXMgKiBtQnl0ZXNQZXJTcHJpdGUsICYocG9zaXRpb25Db2xvckRhdGFbMF0pLAot
ICAgICAgICAgICAgICAgICAgICAgR0xfU1RBVElDX0RSQVcpOwotICAgIH0KLQotICAgIEFTU0VS
VF9HTF9OT19FUlJPUigpOwotfQotCi12b2lkIEludGVybGVhdmVkQXR0cmlidXRlRGF0YUJlbmNo
bWFyazo6ZGVzdHJveUJlbmNobWFyaygpCi17Ci0gICAgZ2xEZWxldGVQcm9ncmFtKG1Qb2ludFNw
cml0ZVByb2dyYW0pOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBBcnJheVNpemUobVBv
c2l0aW9uQ29sb3JCdWZmZXIpOyBpKyspCi0gICAgewotICAgICAgICBnbERlbGV0ZUJ1ZmZlcnMo
MSwgJm1Qb3NpdGlvbkNvbG9yQnVmZmVyW2ldKTsKLSAgICB9Ci19Ci0KLXZvaWQgSW50ZXJsZWF2
ZWRBdHRyaWJ1dGVEYXRhQmVuY2htYXJrOjpkcmF3QmVuY2htYXJrKCkKLXsKLSAgICBnbENsZWFy
KEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgZm9yIChzaXplX3QgayA9IDA7IGsgPCAyMDsg
aysrKQotICAgIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBBcnJheVNpemUobVBv
c2l0aW9uQ29sb3JCdWZmZXIpOyBpKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEZpcnN0
bHkgZ2V0IHRoZSBhdHRyaWJ1dGUgbG9jYXRpb25zIGZvciB0aGUgcHJvZ3JhbQotICAgICAgICAg
ICAgZ2xVc2VQcm9ncmFtKG1Qb2ludFNwcml0ZVByb2dyYW0pOwotICAgICAgICAgICAgR0xpbnQg
cG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9jYXRpb24obVBvaW50U3ByaXRlUHJvZ3Jh
bSwgImFQb3NpdGlvbiIpOwotICAgICAgICAgICAgQVNTRVJUX05FKHBvc2l0aW9uTG9jYXRpb24s
IC0xKTsKLSAgICAgICAgICAgIEdMaW50IGNvbG9yTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0
aW9uKG1Qb2ludFNwcml0ZVByb2dyYW0sICJhQ29sb3IiKTsKLSAgICAgICAgICAgIEFTU0VSVF9O
RShjb2xvckxvY2F0aW9uLCAtMSk7Ci0KLSAgICAgICAgICAgIC8vIEJpbmQgdGhlIHBvc2l0aW9u
IGRhdGEgZnJvbSBvbmUgYnVmZmVyCi0gICAgICAgICAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlf
QlVGRkVSLCBtUG9zaXRpb25Db2xvckJ1ZmZlcltpXSk7Ci0gICAgICAgICAgICBnbEVuYWJsZVZl
cnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOwotICAgICAgICAgICAgZ2xWZXJ0ZXhB
dHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHTHNpemVpPihtQnl0
ZXNQZXJTcHJpdGUpLCAwKTsKLQotICAgICAgICAgICAgLy8gQnV0IGJpbmQgdGhlIGNvbG9yIGRh
dGEgZnJvbSB0aGUgb3RoZXIgYnVmZmVyLgotICAgICAgICAgICAgZ2xCaW5kQnVmZmVyKEdMX0FS
UkFZX0JVRkZFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtUG9zaXRpb25Db2xvckJ1ZmZl
clsoaSArIDEpICUgQXJyYXlTaXplKG1Qb3NpdGlvbkNvbG9yQnVmZmVyKV0pOwotICAgICAgICAg
ICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShjb2xvckxvY2F0aW9uKTsKLSAgICAgICAgICAg
IGdsVmVydGV4QXR0cmliUG9pbnRlcihjb2xvckxvY2F0aW9uLCAzLCBHTF9VTlNJR05FRF9CWVRF
LCBHTF9UUlVFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PEdMc2l6ZWk+KG1CeXRlc1BlclNwcml0ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVpbnRlcnByZXRfY2FzdDx2b2lkICo+KDIgKiBzaXplb2YoZmxvYXQpKSk7Ci0KLSAg
ICAgICAgICAgIC8vIFRoZW4gZHJhdyB0aGUgY29sb3JlZCBwb2ludHNwcml0ZXMKLSAgICAgICAg
ICAgIGdsRHJhd0FycmF5cyhHTF9QT0lOVFMsIDAsIEdldFBhcmFtKCkubnVtU3ByaXRlcyk7Ci0g
ICAgICAgICAgICBnbEZsdXNoKCk7Ci0KLSAgICAgICAgICAgIGdsRGlzYWJsZVZlcnRleEF0dHJp
YkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOwotICAgICAgICAgICAgZ2xEaXNhYmxlVmVydGV4QXR0
cmliQXJyYXkoY29sb3JMb2NhdGlvbik7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBBU1NFUlRf
R0xfTk9fRVJST1IoKTsKLX0KLQotVEVTVF9QKEludGVybGVhdmVkQXR0cmlidXRlRGF0YUJlbmNo
bWFyaywgUnVuKQotewotICAgIHJ1bigpOwotfQotCi1JbnRlcmxlYXZlZEF0dHJpYnV0ZURhdGFQ
YXJhbXMgRDNEMTFQYXJhbXMoKQotewotICAgIEludGVybGVhdmVkQXR0cmlidXRlRGF0YVBhcmFt
cyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06OkQzRDEx
KCk7Ci0gICAgcmV0dXJuIHBhcmFtczsKLX0KLQotSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhUGFy
YW1zIEQzRDExXzlfM1BhcmFtcygpCi17Ci0gICAgSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhUGFy
YW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNE
MTFfRkw5XzMoKTsKLSAgICByZXR1cm4gcGFyYW1zOwotfQotCi1JbnRlcmxlYXZlZEF0dHJpYnV0
ZURhdGFQYXJhbXMgRDNEOVBhcmFtcygpCi17Ci0gICAgSW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRh
UGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6
RDNEOSgpOwotICAgIHJldHVybiBwYXJhbXM7Ci19Ci0KLUludGVybGVhdmVkQXR0cmlidXRlRGF0
YVBhcmFtcyBPcGVuR0xQYXJhbXMoKQotewotICAgIEludGVybGVhdmVkQXR0cmlidXRlRGF0YVBh
cmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxhdGZvcm06Ok9Q
RU5HTCgpOwotICAgIHJldHVybiBwYXJhbXM7Ci19Ci0KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1Qo
SW50ZXJsZWF2ZWRBdHRyaWJ1dGVEYXRhQmVuY2htYXJrLAotICAgICAgICAgICAgICAgICAgICAg
ICBEM0QxMVBhcmFtcygpLAotICAgICAgICAgICAgICAgICAgICAgICBEM0QxMV85XzNQYXJhbXMo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgRDNEOVBhcmFtcygpLAotICAgICAgICAgICAgICAg
ICAgICAgICBPcGVuR0xQYXJhbXMoKSk7Ci0KLX0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL1Bv
aW50U3ByaXRlcy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90
ZXN0cy9Qb2ludFNwcml0ZXMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMGIy
MzEwOWIzMy4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3BlcmZfdGVzdHMvUG9pbnRTcHJpdGVzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzMCAr
MCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgotLy8KLS8vIFBvaW50U3ByaXRlc0JlbmNobWFyazoKLS8vICAgUGVy
Zm9ybWFuY2UgdGVzdCBmb3IgQU5HTEUgcG9pbnQgc3ByaXRlcy4KLS8vCi0vLwotI2luY2x1ZGUg
IkFOR0xFUGVyZlRlc3QuaCIKLQotI2luY2x1ZGUgPGlvc3RyZWFtPgotI2luY2x1ZGUgPHNzdHJl
YW0+Ci0KLSNpbmNsdWRlICJzaGFkZXJfdXRpbHMuaCIKLSNpbmNsdWRlICJyYW5kb21fdXRpbHMu
aCIKLQotdXNpbmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotc3RydWN0IFBv
aW50U3ByaXRlc1BhcmFtcyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUZXN0UGFyYW1zCi17Ci0gICAg
UG9pbnRTcHJpdGVzUGFyYW1zKCkKLSAgICB7Ci0gICAgICAgIC8vIENvbW1vbiBkZWZhdWx0IHBh
cmFtcwotICAgICAgICBtYWpvclZlcnNpb24gPSAyOwotICAgICAgICBtaW5vclZlcnNpb24gPSAw
OwotICAgICAgICB3aW5kb3dXaWR0aCA9IDEyODA7Ci0gICAgICAgIHdpbmRvd0hlaWdodCA9IDcy
MDsKLSAgICAgICAgaXRlcmF0aW9ucyAgID0gMTAwOwotICAgICAgICBjb3VudCA9IDEwOwotICAg
ICAgICBzaXplID0gMy4wZjsKLSAgICAgICAgbnVtVmFyeWluZ3MgPSAzOwotICAgIH0KLQotICAg
IHN0ZDo6c3RyaW5nIHN1ZmZpeCgpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgdW5zaWduZWQgaW50
IGNvdW50OwotICAgIGZsb2F0IHNpemU7Ci0gICAgdW5zaWduZWQgaW50IG51bVZhcnlpbmdzOwot
Ci0gICAgLy8gc3RhdGljIHBhcmFtZXRlcnMKLSAgICB1bnNpZ25lZCBpbnQgaXRlcmF0aW9uczsK
LX07Ci0KLXN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBQ
b2ludFNwcml0ZXNQYXJhbXMgJnBhcmFtcykKLXsKLSAgICBvcyA8PCBwYXJhbXMuc3VmZml4KCku
c3Vic3RyKDEpOwotICAgIHJldHVybiBvczsKLX0KLQotY2xhc3MgUG9pbnRTcHJpdGVzQmVuY2ht
YXJrIDogcHVibGljIEFOR0xFUmVuZGVyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyA6OnRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxQb2ludFNwcml0ZXNQYXJh
bXM+Ci17Ci0gIHB1YmxpYzoKLSAgICBQb2ludFNwcml0ZXNCZW5jaG1hcmsoKTsKLQotICAgIHZv
aWQgaW5pdGlhbGl6ZUJlbmNobWFyaygpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVzdHJveUJlbmNo
bWFyaygpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0JlbmNobWFyaygpIG92ZXJyaWRlOwotCi0g
IHByaXZhdGU6Ci0gICAgR0x1aW50IG1Qcm9ncmFtOwotICAgIEdMdWludCBtQnVmZmVyOwotICAg
IFJORyBtUk5HOwotfTsKLQotc3RkOjpzdHJpbmcgUG9pbnRTcHJpdGVzUGFyYW1zOjpzdWZmaXgo
KSBjb25zdAotewotICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cnN0cjsKLQotICAgIHN0cnN0ciA8
PCBSZW5kZXJUZXN0UGFyYW1zOjpzdWZmaXgoKQotICAgICAgICAgICA8PCAiXyIgPDwgY291bnQg
PDwgIl8iIDw8IHNpemUgPDwgInB4IgotICAgICAgICAgICA8PCAiXyIgPDwgbnVtVmFyeWluZ3Mg
PDwgInZhcnMiOwotCi0gICAgcmV0dXJuIHN0cnN0ci5zdHIoKTsKLX0KLQotUG9pbnRTcHJpdGVz
QmVuY2htYXJrOjpQb2ludFNwcml0ZXNCZW5jaG1hcmsoKQotICAgIDogQU5HTEVSZW5kZXJUZXN0
KCJQb2ludFNwcml0ZXMiLCBHZXRQYXJhbSgpKSwgbVJORygxKQotewotfQotCi12b2lkIFBvaW50
U3ByaXRlc0JlbmNobWFyazo6aW5pdGlhbGl6ZUJlbmNobWFyaygpCi17Ci0gICAgY29uc3QgYXV0
byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKLQotICAgIEFTU0VSVF9MVCgwdSwgcGFyYW1zLml0ZXJh
dGlvbnMpOwotCi0gICAgc3RkOjpzdHJpbmdzdHJlYW0gdnN0cnN0cjsKLQotICAgIC8vIFZlcmlm
eSAibnVtVmFyeWluZ3MiIGlzIHdpdGhpbiBNQVhfVkFSWUlOR1MgbGltaXQKLSAgICBHTGludCBt
YXhWYXJ5aW5nczsKLSAgICBnbEdldEludGVnZXJ2KEdMX01BWF9WQVJZSU5HX1ZFQ1RPUlMsICZt
YXhWYXJ5aW5ncyk7Ci0KLSAgICBpZiAocGFyYW1zLm51bVZhcnlpbmdzID4gc3RhdGljX2Nhc3Q8
dW5zaWduZWQgaW50PihtYXhWYXJ5aW5ncykpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlZh
cnlpbmcgY291bnQgKCIgPDwgcGFyYW1zLm51bVZhcnlpbmdzIDw8ICIpIgotICAgICAgICAgICAg
ICAgPDwgIiBleGNlZWRzIG1heGltdW0gdmFyeWluZ3M6ICIgPDwgbWF4VmFyeWluZ3MgPDwgc3Rk
OjplbmRsOwotICAgIH0KLQotICAgIHZzdHJzdHIgPDwgImF0dHJpYnV0ZSB2ZWMyIHZQb3NpdGlv
bjtcbiIKLSAgICAgICAgICAgICAgICJ1bmlmb3JtIGZsb2F0IHVQb2ludFNpemU7XG4iOwotCi0g
ICAgZm9yICh1bnNpZ25lZCBpbnQgdmFyQ291bnQgPSAwOyB2YXJDb3VudCA8IHBhcmFtcy5udW1W
YXJ5aW5nczsgdmFyQ291bnQrKykKLSAgICB7Ci0gICAgICAgIHZzdHJzdHIgPDwgInZhcnlpbmcg
dmVjNCB2IiA8PCB2YXJDb3VudCA8PCAiO1xuIjsKLSAgICB9Ci0KLSAgICB2c3Ryc3RyIDw8ICJ2
b2lkIG1haW4oKVxuIgotICAgICAgICAgICAgICAgIntcbiI7Ci0KLSAgICBmb3IgKHVuc2lnbmVk
IGludCB2YXJDb3VudCA9IDA7IHZhckNvdW50IDwgcGFyYW1zLm51bVZhcnlpbmdzOyB2YXJDb3Vu
dCsrKQotICAgIHsKLSAgICAgICAgdnN0cnN0ciA8PCAiICAgIHYiIDw8IHZhckNvdW50IDw8ICIg
PSB2ZWM0KDEuMCk7XG4iOwotICAgIH0KLQotICAgIHZzdHJzdHIgPDwgIiAgICBnbF9Qb3NpdGlv
biA9IHZlYzQodlBvc2l0aW9uLCAwLCAxLjApO1xuIgotICAgICAgICAgICAgICAgIiAgICBnbF9Q
b2ludFNpemUgPSB1UG9pbnRTaXplO1xuIgotICAgICAgICAgICAgICAgIn0iOwotCi0gICAgc3Rk
OjpzdHJpbmdzdHJlYW0gZnN0cnN0cjsKLQotICAgIGZzdHJzdHIgPDwgInByZWNpc2lvbiBtZWRp
dW1wIGZsb2F0O1xuIjsKLQotICAgIGZvciAodW5zaWduZWQgaW50IHZhckNvdW50ID0gMDsgdmFy
Q291bnQgPCBwYXJhbXMubnVtVmFyeWluZ3M7IHZhckNvdW50KyspCi0gICAgewotICAgICAgICBm
c3Ryc3RyIDw8ICJ2YXJ5aW5nIHZlYzQgdiIgPDwgdmFyQ291bnQgPDwgIjtcbiI7Ci0gICAgfQot
Ci0gICAgZnN0cnN0ciA8PCAidm9pZCBtYWluKClcbiIKLSAgICAgICAgICAgICAgICJ7XG4iCi0g
ICAgICAgICAgICAgICAiICAgIHZlYzQgY29sb3JPdXQgPSB2ZWM0KDEuMCwgMC4wLCAwLjAsIDEu
MCk7XG4iOwotCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgdmFyQ291bnQgPSAwOyB2YXJDb3VudCA8
IHBhcmFtcy5udW1WYXJ5aW5nczsgdmFyQ291bnQrKykKLSAgICB7Ci0gICAgICAgIGZzdHJzdHIg
PDwgIiAgICBjb2xvck91dC5yICs9IHYiIDw8IHZhckNvdW50IDw8ICIucjtcbiI7Ci0gICAgfQot
Ci0gICAgZnN0cnN0ciA8PCAiICAgIGdsX0ZyYWdDb2xvciA9IGNvbG9yT3V0O1xuIgotICAgICAg
ICAgICAgICAgIn1cbiI7Ci0KLSAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZzdHJzdHIu
c3RyKCksIGZzdHJzdHIuc3RyKCkpOwotICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotCi0g
ICAgLy8gVXNlIHRoZSBwcm9ncmFtIG9iamVjdAotICAgIGdsVXNlUHJvZ3JhbShtUHJvZ3JhbSk7
Ci0KLSAgICBnbENsZWFyQ29sb3IoMC4wZiwgMC4wZiwgMC4wZiwgMC4wZik7Ci0KLSAgICBzdGQ6
OnZlY3RvcjxmbG9hdD4gdmVydGV4UG9zaXRpb25zKHBhcmFtcy5jb3VudCAqIDIpOwotICAgIGZv
ciAoc2l6ZV90IHBvaW50SW5kZXggPSAwOyBwb2ludEluZGV4IDwgdmVydGV4UG9zaXRpb25zLnNp
emUoKTsgKytwb2ludEluZGV4KQotICAgIHsKLSAgICAgICAgdmVydGV4UG9zaXRpb25zW3BvaW50
SW5kZXhdID0gbVJORy5yYW5kb21OZWdhdGl2ZU9uZVRvT25lKCk7Ci0gICAgfQotCi0gICAgZ2xH
ZW5CdWZmZXJzKDEsICZtQnVmZmVyKTsKLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVS
LCBtQnVmZmVyKTsKLSAgICBnbEJ1ZmZlckRhdGEoR0xfQVJSQVlfQlVGRkVSLCB2ZXJ0ZXhQb3Np
dGlvbnMuc2l6ZSgpICogc2l6ZW9mKGZsb2F0KSwgJnZlcnRleFBvc2l0aW9uc1swXSwgR0xfU1RB
VElDX0RSQVcpOwotCi0gICAgR0xpbnQgcG9zaXRpb25Mb2NhdGlvbiA9IGdsR2V0QXR0cmliTG9j
YXRpb24obVByb2dyYW0sICJ2UG9zaXRpb24iKTsKLSAgICBBU1NFUlRfTkUoLTEsIHBvc2l0aW9u
TG9jYXRpb24pOwotCi0gICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9jYXRpb24s
IDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgbnVsbHB0cik7Ci0gICAgZ2xFbmFibGVWZXJ0ZXhB
dHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsKLQotICAgIC8vIFNldCB0aGUgdmlld3BvcnQK
LSAgICBnbFZpZXdwb3J0KDAsIDAsIGdldFdpbmRvdygpLT5nZXRXaWR0aCgpLCBnZXRXaW5kb3co
KS0+Z2V0SGVpZ2h0KCkpOwotCi0gICAgR0xpbnQgcG9pbnRTaXplTG9jYXRpb24gPSBnbEdldFVu
aWZvcm1Mb2NhdGlvbihtUHJvZ3JhbSwgInVQb2ludFNpemUiKTsKLSAgICBBU1NFUlRfTkUoLTEs
IHBvaW50U2l6ZUxvY2F0aW9uKTsKLQotICAgIGdsVW5pZm9ybTFmKHBvaW50U2l6ZUxvY2F0aW9u
LCBwYXJhbXMuc2l6ZSk7Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotdm9pZCBQ
b2ludFNwcml0ZXNCZW5jaG1hcms6OmRlc3Ryb3lCZW5jaG1hcmsoKQotewotICAgIGdsRGVsZXRl
UHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtQnVmZmVyKTsKLX0K
LQotdm9pZCBQb2ludFNwcml0ZXNCZW5jaG1hcms6OmRyYXdCZW5jaG1hcmsoKQotewotICAgIGds
Q2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBH
ZXRQYXJhbSgpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaXQgPSAwOyBpdCA8IHBhcmFtcy5p
dGVyYXRpb25zOyBpdCsrKQotICAgIHsKLSAgICAgICAgLy9UT0RPKGptYWRpbGwpOiBJbmRleGVk
IHBvaW50IHJlbmRlcmluZy4gQU5HTEUgaXMgYmFkIGF0IHRoaXMuCi0gICAgICAgIGdsRHJhd0Fy
cmF5cyhHTF9QT0lOVFMsIDAsIHBhcmFtcy5jb3VudCk7Ci0gICAgfQotCi0gICAgQVNTRVJUX0dM
X05PX0VSUk9SKCk7Ci19Ci0KLVBvaW50U3ByaXRlc1BhcmFtcyBEM0QxMVBhcmFtcygpCi17Ci0g
ICAgUG9pbnRTcHJpdGVzUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9
IGVnbF9wbGF0Zm9ybTo6RDNEMTEoKTsKLSAgICByZXR1cm4gcGFyYW1zOwotfQotCi1Qb2ludFNw
cml0ZXNQYXJhbXMgRDNEOVBhcmFtcygpCi17Ci0gICAgUG9pbnRTcHJpdGVzUGFyYW1zIHBhcmFt
czsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNEOSgpOwotICAg
IHJldHVybiBwYXJhbXM7Ci19Ci0KLVBvaW50U3ByaXRlc1BhcmFtcyBPcGVuR0xQYXJhbXMoKQot
ewotICAgIFBvaW50U3ByaXRlc1BhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRl
cnMgPSBlZ2xfcGxhdGZvcm06Ok9QRU5HTCgpOwotICAgIHJldHVybiBwYXJhbXM7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlCi0KLVRFU1RfUChQb2ludFNwcml0ZXNCZW5jaG1hcmssIFJ1bikKLXsKLSAg
ICBydW4oKTsKLX0KLQotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChQb2ludFNwcml0ZXNCZW5jaG1h
cmssCi0gICAgICAgICAgICAgICAgICAgICAgIEQzRDExUGFyYW1zKCksIEQzRDlQYXJhbXMoKSwg
T3BlbkdMUGFyYW1zKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3BlcmZfdGVzdHMvVGV4U3ViSW1hZ2UuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVGV4U3ViSW1hZ2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAzZTRiNWNmNjg3Ny4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVGV4U3ViSW1hZ2UuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMjk4ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTQgVGhlIEFO
R0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlz
IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g
YmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gVGV4U3ViSW1hZ2VCZW5j
aG1hcms6Ci0vLyAgIFBlcmZvcm1hY2UgdGVzdCBmb3IgQU5HTEUgdGV4dHVyZSB1cGRhdGVzLgot
Ly8KLQotI2luY2x1ZGUgPHNzdHJlYW0+Ci0KLSNpbmNsdWRlICJBTkdMRVBlcmZUZXN0LmgiCi0j
aW5jbHVkZSAic2hhZGVyX3V0aWxzLmgiCi0KLXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotbmFt
ZXNwYWNlCi17Ci0KLXN0cnVjdCBUZXhTdWJJbWFnZVBhcmFtcyBmaW5hbCA6IHB1YmxpYyBSZW5k
ZXJUZXN0UGFyYW1zCi17Ci0gICAgVGV4U3ViSW1hZ2VQYXJhbXMoKQotICAgIHsKLSAgICAgICAg
Ly8gQ29tbW9uIGRlZmF1bHQgcGFyYW1ldGVycwotICAgICAgICBtYWpvclZlcnNpb24gPSAyOwot
ICAgICAgICBtaW5vclZlcnNpb24gPSAwOwotICAgICAgICB3aW5kb3dXaWR0aCA9IDUxMjsKLSAg
ICAgICAgd2luZG93SGVpZ2h0ID0gNTEyOwotCi0gICAgICAgIGltYWdlV2lkdGggPSAxMDI0Owot
ICAgICAgICBpbWFnZUhlaWdodCA9IDEwMjQ7Ci0gICAgICAgIHN1YkltYWdlV2lkdGggPSA2NDsK
LSAgICAgICAgc3ViSW1hZ2VIZWlnaHQgPSA2NDsKLSAgICAgICAgaXRlcmF0aW9ucyAgICAgPSA5
OwotICAgIH0KLQotICAgIHN0ZDo6c3RyaW5nIHN1ZmZpeCgpIGNvbnN0IG92ZXJyaWRlOwotCi0g
ICAgLy8gU3RhdGljIHBhcmFtZXRlcnMKLSAgICBpbnQgaW1hZ2VXaWR0aDsKLSAgICBpbnQgaW1h
Z2VIZWlnaHQ7Ci0gICAgaW50IHN1YkltYWdlV2lkdGg7Ci0gICAgaW50IHN1YkltYWdlSGVpZ2h0
OwotICAgIHVuc2lnbmVkIGludCBpdGVyYXRpb25zOwotfTsKLQotc3RkOjpvc3RyZWFtICZvcGVy
YXRvcjw8KHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IFRleFN1YkltYWdlUGFyYW1zICZwYXJhbXMp
Ci17Ci0gICAgb3MgPDwgcGFyYW1zLnN1ZmZpeCgpLnN1YnN0cigxKTsKLSAgICByZXR1cm4gb3M7
Ci19Ci0KLWNsYXNzIFRleFN1YkltYWdlQmVuY2htYXJrIDogcHVibGljIEFOR0xFUmVuZGVyVGVz
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBh
cmFtSW50ZXJmYWNlPFRleFN1YkltYWdlUGFyYW1zPgotewotICBwdWJsaWM6Ci0gICAgVGV4U3Vi
SW1hZ2VCZW5jaG1hcmsoKTsKLQotICAgIHZvaWQgaW5pdGlhbGl6ZUJlbmNobWFyaygpIG92ZXJy
aWRlOwotICAgIHZvaWQgZGVzdHJveUJlbmNobWFyaygpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJh
d0JlbmNobWFyaygpIG92ZXJyaWRlOwotCi0gIHByaXZhdGU6Ci0gICAgR0x1aW50IGNyZWF0ZVRl
eHR1cmUoKTsKLQotICAgIC8vIEhhbmRsZSB0byBhIHByb2dyYW0gb2JqZWN0Ci0gICAgR0x1aW50
IG1Qcm9ncmFtOwotCi0gICAgLy8gQXR0cmlidXRlIGxvY2F0aW9ucwotICAgIEdMaW50IG1Qb3Np
dGlvbkxvYzsKLSAgICBHTGludCBtVGV4Q29vcmRMb2M7Ci0KLSAgICAvLyBTYW1wbGVyIGxvY2F0
aW9uCi0gICAgR0xpbnQgbVNhbXBsZXJMb2M7Ci0KLSAgICAvLyBUZXh0dXJlIGhhbmRsZQotICAg
IEdMdWludCBtVGV4dHVyZTsKLQotICAgIC8vIEJ1ZmZlciBoYW5kbGUKLSAgICBHTHVpbnQgbVZl
cnRleEJ1ZmZlcjsKLSAgICBHTHVpbnQgbUluZGV4QnVmZmVyOwotCi0gICAgR0x1Ynl0ZSAqbVBp
eGVsczsKLX07Ci0KLXN0ZDo6c3RyaW5nIFRleFN1YkltYWdlUGFyYW1zOjpzdWZmaXgoKSBjb25z
dAotewotICAgIC8vIFRPRE8oam1hZGlsbCkKLSAgICByZXR1cm4gUmVuZGVyVGVzdFBhcmFtczo6
c3VmZml4KCk7Ci19Ci0KLVRleFN1YkltYWdlQmVuY2htYXJrOjpUZXhTdWJJbWFnZUJlbmNobWFy
aygpCi0gICAgOiBBTkdMRVJlbmRlclRlc3QoIlRleFN1YkltYWdlIiwgR2V0UGFyYW0oKSksCi0g
ICAgICBtUHJvZ3JhbSgwKSwKLSAgICAgIG1Qb3NpdGlvbkxvYygtMSksCi0gICAgICBtVGV4Q29v
cmRMb2MoLTEpLAotICAgICAgbVNhbXBsZXJMb2MoLTEpLAotICAgICAgbVRleHR1cmUoMCksCi0g
ICAgICBtVmVydGV4QnVmZmVyKDApLAotICAgICAgbUluZGV4QnVmZmVyKDApLAotICAgICAgbVBp
eGVscyhudWxscHRyKQotewotfQotCi1HTHVpbnQgVGV4U3ViSW1hZ2VCZW5jaG1hcms6OmNyZWF0
ZVRleHR1cmUoKQotewotICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7Ci0KLSAg
ICBhc3NlcnQocGFyYW1zLml0ZXJhdGlvbnMgPiAwKTsKLQotICAgIC8vIFVzZSB0aWdodGx5IHBh
Y2tlZCBkYXRhCi0gICAgZ2xQaXhlbFN0b3JlaShHTF9VTlBBQ0tfQUxJR05NRU5ULCAxKTsKLQot
ICAgIC8vIEdlbmVyYXRlIGEgdGV4dHVyZSBvYmplY3QKLSAgICBHTHVpbnQgdGV4dHVyZTsKLSAg
ICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlKTsKLQotICAgIC8vIEJpbmQgdGhlIHRleHR1cmUg
b2JqZWN0Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKLQotICAg
IGdsVGV4U3RvcmFnZTJERVhUKEdMX1RFWFRVUkVfMkQsIDEsIEdMX1JHQkE4LCBwYXJhbXMuaW1h
Z2VXaWR0aCwgcGFyYW1zLmltYWdlSGVpZ2h0KTsKLQotICAgIC8vIFNldCB0aGUgZmlsdGVyaW5n
IG1vZGUKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5f
RklMVEVSLCBHTF9ORUFSRVNUKTsKLSAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwg
R0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKLQotICAgIHJldHVybiB0ZXh0dXJl
OwotfQotCi12b2lkIFRleFN1YkltYWdlQmVuY2htYXJrOjppbml0aWFsaXplQmVuY2htYXJrKCkK
LXsKLSAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOwotCi0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgdnMgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBhdHRyaWJ1dGUgdmVj
NCBhX3Bvc2l0aW9uOwotICAgICAgICBhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOwotICAgICAg
ICB2YXJ5aW5nIHZlYzIgdl90ZXhDb29yZDsKLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZ2xfUG9zaXRpb24gPSBhX3Bvc2l0aW9uOwotICAgICAgICAgICAgdl90
ZXhDb29yZCA9IGFfdGV4Q29vcmQ7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgY29uc3Qgc3Rk
OjpzdHJpbmcgZnMgPSBTSEFERVJfU09VUkNFCi0gICAgKAotICAgICAgICBwcmVjaXNpb24gbWVk
aXVtcCBmbG9hdDsKLSAgICAgICAgdmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7Ci0gICAgICAgIHVu
aWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsKLSAgICAgICAgdm9pZCBtYWluKCkKLSAgICAgICAg
ewotICAgICAgICAgICAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHNfdGV4dHVyZSwgdl90ZXhD
b29yZCk7Ci0gICAgICAgIH0KLSAgICApOwotCi0gICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3Jh
bSh2cywgZnMpOwotICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotCi0gICAgLy8gR2V0IHRo
ZSBhdHRyaWJ1dGUgbG9jYXRpb25zCi0gICAgbVBvc2l0aW9uTG9jID0gZ2xHZXRBdHRyaWJMb2Nh
dGlvbihtUHJvZ3JhbSwgImFfcG9zaXRpb24iKTsKLSAgICBtVGV4Q29vcmRMb2MgPSBnbEdldEF0
dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAiYV90ZXhDb29yZCIpOwotCi0gICAgLy8gR2V0IHRoZSBz
YW1wbGVyIGxvY2F0aW9uCi0gICAgbVNhbXBsZXJMb2MgPSBnbEdldFVuaWZvcm1Mb2NhdGlvbiht
UHJvZ3JhbSwgInNfdGV4dHVyZSIpOwotCi0gICAgLy8gQnVpbGQgdGhlIHZlcnRleCBidWZmZXIK
LSAgICBHTGZsb2F0IHZlcnRpY2VzW10gPQotICAgIHsKLSAgICAgICAgLTAuNWYsIDAuNWYsIDAu
MGYsICAvLyBQb3NpdGlvbiAwCi0gICAgICAgIDAuMGYsIDAuMGYsICAgICAgICAvLyBUZXhDb29y
ZCAwCi0gICAgICAgIC0wLjVmLCAtMC41ZiwgMC4wZiwgIC8vIFBvc2l0aW9uIDEKLSAgICAgICAg
MC4wZiwgMS4wZiwgICAgICAgIC8vIFRleENvb3JkIDEKLSAgICAgICAgMC41ZiwgLTAuNWYsIDAu
MGYsICAvLyBQb3NpdGlvbiAyCi0gICAgICAgIDEuMGYsIDEuMGYsICAgICAgICAvLyBUZXhDb29y
ZCAyCi0gICAgICAgIDAuNWYsIDAuNWYsIDAuMGYsICAvLyBQb3NpdGlvbiAzCi0gICAgICAgIDEu
MGYsIDAuMGYgICAgICAgICAvLyBUZXhDb29yZCAzCi0gICAgfTsKLQotICAgIGdsR2VuQnVmZmVy
cygxLCAmbVZlcnRleEJ1ZmZlcik7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwg
bVZlcnRleEJ1ZmZlcik7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9m
KHZlcnRpY2VzKSwgdmVydGljZXMsIEdMX1NUQVRJQ19EUkFXKTsKLQotICAgIEdMdXNob3J0IGlu
ZGljZXNbXSA9IHsgMCwgMSwgMiwgMCwgMiwgMyB9OwotICAgIGdsR2VuQnVmZmVycygxLCAmbUlu
ZGV4QnVmZmVyKTsKLSAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIG1J
bmRleEJ1ZmZlcik7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSLCBz
aXplb2YoaW5kaWNlcyksIGluZGljZXMsIEdMX1NUQVRJQ19EUkFXKTsKLQotICAgIC8vIExvYWQg
dGhlIHRleHR1cmUKLSAgICBtVGV4dHVyZSA9IGNyZWF0ZVRleHR1cmUoKTsKLQotICAgIGdsQ2xl
YXJDb2xvcigwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKLQotICAgIG1QaXhlbHMgPSBuZXcgR0x1
Ynl0ZVtwYXJhbXMuc3ViSW1hZ2VXaWR0aCAqIHBhcmFtcy5zdWJJbWFnZUhlaWdodCAqIDRdOwot
Ci0gICAgLy8gRmlsbCB0aGUgcGl4ZWxzIHN0cnVjdHVyZSB3aXRoIHJhbmRvbSBkYXRhOgotICAg
IGZvciAoaW50IHkgPSAwOyB5IDwgcGFyYW1zLnN1YkltYWdlSGVpZ2h0OyArK3kpCi0gICAgewot
ICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHBhcmFtcy5zdWJJbWFnZVdpZHRoOyArK3gpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSAoeCArICh5ICogcGFyYW1zLnN1Yklt
YWdlV2lkdGgpKSAqIDQ7Ci0gICAgICAgICAgICBtUGl4ZWxzW29mZnNldCArIDBdID0gcmFuZCgp
ICUgMjU1OyAvLyBSZWQKLSAgICAgICAgICAgIG1QaXhlbHNbb2Zmc2V0ICsgMV0gPSByYW5kKCkg
JSAyNTU7IC8vIEdyZWVuCi0gICAgICAgICAgICBtUGl4ZWxzW29mZnNldCArIDJdID0gcmFuZCgp
ICUgMjU1OyAvLyBCbHVlCi0gICAgICAgICAgICBtUGl4ZWxzW29mZnNldCArIDNdID0gMjU1OyAv
LyBBbHBoYQotICAgICAgICB9Ci0gICAgfQotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19
Ci0KLXZvaWQgVGV4U3ViSW1hZ2VCZW5jaG1hcms6OmRlc3Ryb3lCZW5jaG1hcmsoKQotewotICAg
IGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci0gICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtVmVy
dGV4QnVmZmVyKTsKLSAgICBnbERlbGV0ZUJ1ZmZlcnMoMSwgJm1JbmRleEJ1ZmZlcik7Ci0gICAg
Z2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUpOwotICAgIGRlbGV0ZVtdIG1QaXhlbHM7Ci19
Ci0KLXZvaWQgVGV4U3ViSW1hZ2VCZW5jaG1hcms6OmRyYXdCZW5jaG1hcmsoKQotewotICAgIC8v
IFNldCB0aGUgdmlld3BvcnQKLSAgICBnbFZpZXdwb3J0KDAsIDAsIGdldFdpbmRvdygpLT5nZXRX
aWR0aCgpLCBnZXRXaW5kb3coKS0+Z2V0SGVpZ2h0KCkpOwotCi0gICAgLy8gQ2xlYXIgdGhlIGNv
bG9yIGJ1ZmZlcgotICAgIGdsQ2xlYXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICAvLyBV
c2UgdGhlIHByb2dyYW0gb2JqZWN0Ci0gICAgZ2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLQotICAg
IC8vIEJpbmQgdGhlIGJ1ZmZlcnMKLSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBt
VmVydGV4QnVmZmVyKTsKLSAgICBnbEJpbmRCdWZmZXIoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIs
IG1JbmRleEJ1ZmZlcik7Ci0KLSAgICAvLyBMb2FkIHRoZSB2ZXJ0ZXggcG9zaXRpb24KLSAgICBn
bFZlcnRleEF0dHJpYlBvaW50ZXIobVBvc2l0aW9uTG9jLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0Us
IDUgKiBzaXplb2YoR0xmbG9hdCksIDApOwotICAgIC8vIExvYWQgdGhlIHRleHR1cmUgY29vcmRp
bmF0ZQotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihtVGV4Q29vcmRMb2MsIDIsIEdMX0ZMT0FU
LCBHTF9GQUxTRSwgNSAqIHNpemVvZihHTGZsb2F0KSwgKEdMdm9pZCopKDMgKiBzaXplb2YoR0xm
bG9hdCkpKTsKLQotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkobVBvc2l0aW9uTG9jKTsK
LSAgICBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KG1UZXhDb29yZExvYyk7Ci0KLSAgICAvLyBC
aW5kIHRoZSB0ZXh0dXJlCi0gICAgZ2xBY3RpdmVUZXh0dXJlKEdMX1RFWFRVUkUwKTsKLSAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlKTsKLQotICAgIC8vIFNldCB0aGUg
dGV4dHVyZSBzYW1wbGVyIHRvIHRleHR1cmUgdW5pdCB0byAwCi0gICAgZ2xVbmlmb3JtMWkobVNh
bXBsZXJMb2MsIDApOwotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci0KLSAgICBjb25zdCBh
dXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaXRlcmF0
aW9uID0gMDsgaXRlcmF0aW9uIDwgcGFyYW1zLml0ZXJhdGlvbnM7ICsraXRlcmF0aW9uKQotICAg
IHsKLSAgICAgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsCi0gICAgICAgICAg
ICAgICAgICAgICAgICByYW5kKCkgJSAocGFyYW1zLmltYWdlV2lkdGggLSBwYXJhbXMuc3ViSW1h
Z2VXaWR0aCksCi0gICAgICAgICAgICAgICAgICAgICAgICByYW5kKCkgJSAocGFyYW1zLmltYWdl
SGVpZ2h0IC0gcGFyYW1zLnN1YkltYWdlSGVpZ2h0KSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IHBhcmFtcy5zdWJJbWFnZVdpZHRoLCBwYXJhbXMuc3ViSW1hZ2VIZWlnaHQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBtUGl4ZWxzKTsKLQotICAg
ICAgICBnbERyYXdFbGVtZW50cyhHTF9UUklBTkdMRVMsIDYsIEdMX1VOU0lHTkVEX1NIT1JULCAw
KTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotVGV4U3ViSW1hZ2VQ
YXJhbXMgRDNEMTFQYXJhbXMoKQotewotICAgIFRleFN1YkltYWdlUGFyYW1zIHBhcmFtczsKLSAg
ICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNEMTEoKTsKLSAgICByZXR1
cm4gcGFyYW1zOwotfQotCi1UZXhTdWJJbWFnZVBhcmFtcyBEM0Q5UGFyYW1zKCkKLXsKLSAgICBU
ZXhTdWJJbWFnZVBhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xf
cGxhdGZvcm06OkQzRDkoKTsKLSAgICByZXR1cm4gcGFyYW1zOwotfQotCi1UZXhTdWJJbWFnZVBh
cmFtcyBPcGVuR0xQYXJhbXMoKQotewotICAgIFRleFN1YkltYWdlUGFyYW1zIHBhcmFtczsKLSAg
ICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6T1BFTkdMKCk7Ci0gICAgcmV0
dXJuIHBhcmFtczsKLX0KLQotfSAvLyBuYW1lc3BhY2UKLQotVEVTVF9QKFRleFN1YkltYWdlQmVu
Y2htYXJrLCBSdW4pCi17Ci0gICAgcnVuKCk7Ci19Ci0KLUFOR0xFX0lOU1RBTlRJQVRFX1RFU1Qo
VGV4U3ViSW1hZ2VCZW5jaG1hcmssCi0gICAgICAgICAgICAgICAgICAgICAgIEQzRDExUGFyYW1z
KCksIEQzRDlQYXJhbXMoKSwgT3BlbkdMUGFyYW1zKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvVGV4dHVyZVNhbXBsaW5nLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL1RleHR1cmVTYW1w
bGluZy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMDBhY2RkZmMxLi4wMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0
cy9UZXh0dXJlU2FtcGxpbmcuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLS8v
Ci0vLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCi0vLwotLy8gVGV4dHVyZVNhbXBsaW5nQmVuY2htYXJrOgotLy8gICBQZXJmb3JtYW5j
ZSB0ZXN0IGZvciB0ZXh0dXJlIHNhbXBsaW5nLiBUaGUgdGVzdCBnZW5lcmF0ZXMgYSB0ZXh0dXJl
IGNvbnRhaW5pbmcgcmFuZG9tIGRhdGEKLS8vICAgYW5kIHRoZW4gYmx1cnMgaXQgaW4gYSBmcmFn
bWVudCBzaGFkZXIgdXNpbmcgbmVhcmVzdCBuZWlnaGJvciBzYW1wbGluZy4gVGhlIHRlc3QgaXMK
LS8vICAgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHRlc3Qgb3ZlcmhlYWQgb2YgR0xTTCdzIGJ1
aWx0aW4gdGV4dHVyZSooKSBmdW5jdGlvbnMgdGhhdCBtYXkgcmVzdWx0Ci0vLyAgIGZyb20gaG93
IEFOR0xFIHRyYW5zbGF0ZXMgdGhlbSBvbiBlYWNoIGJhY2tlbmQuCi0vLwotCi0jaW5jbHVkZSAi
QU5HTEVQZXJmVGVzdC5oIgotCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8cmFuZG9t
PgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0KLSNpbmNsdWRlICJzaGFkZXJfdXRpbHMuaCIKLQotdXNp
bmcgbmFtZXNwYWNlIGFuZ2xlOwotCi1uYW1lc3BhY2UKLXsKLQotc3RydWN0IFRleHR1cmVTYW1w
bGluZ1BhcmFtcyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUZXN0UGFyYW1zCi17Ci0gICAgVGV4dHVy
ZVNhbXBsaW5nUGFyYW1zKCkKLSAgICB7Ci0gICAgICAgIC8vIENvbW1vbiBkZWZhdWx0IHBhcmFt
cwotICAgICAgICBtYWpvclZlcnNpb24gPSAyOwotICAgICAgICBtaW5vclZlcnNpb24gPSAwOwot
ICAgICAgICB3aW5kb3dXaWR0aCAgPSA3MjA7Ci0gICAgICAgIHdpbmRvd0hlaWdodCA9IDcyMDsK
LSAgICAgICAgaXRlcmF0aW9ucyAgID0gNDsKLQotICAgICAgICBudW1TYW1wbGVycyA9IDI7Ci0g
ICAgICAgIHRleHR1cmVTaXplID0gMzI7Ci0gICAgICAgIGtlcm5lbFNpemUgID0gMzsKLSAgICB9
Ci0KLSAgICBzdGQ6OnN0cmluZyBzdWZmaXgoKSBjb25zdCBvdmVycmlkZTsKLSAgICB1bnNpZ25l
ZCBpbnQgbnVtU2FtcGxlcnM7Ci0gICAgdW5zaWduZWQgaW50IHRleHR1cmVTaXplOwotICAgIHVu
c2lnbmVkIGludCBrZXJuZWxTaXplOwotCi0gICAgLy8gc3RhdGljIHBhcmFtZXRlcnMKLSAgICB1
bnNpZ25lZCBpbnQgaXRlcmF0aW9uczsKLX07Ci0KLXN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChz
dGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBUZXh0dXJlU2FtcGxpbmdQYXJhbXMgJnBhcmFtcykKLXsK
LSAgICBvcyA8PCBwYXJhbXMuc3VmZml4KCkuc3Vic3RyKDEpOwotICAgIHJldHVybiBvczsKLX0K
LQotc3RkOjpzdHJpbmcgVGV4dHVyZVNhbXBsaW5nUGFyYW1zOjpzdWZmaXgoKSBjb25zdAotewot
ICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cnN0cjsKLQotICAgIHN0cnN0ciA8PCBSZW5kZXJUZXN0
UGFyYW1zOjpzdWZmaXgoKSA8PCAiXyIgPDwgbnVtU2FtcGxlcnMgPDwgInNhbXBsZXJzIjsKLQot
ICAgIHJldHVybiBzdHJzdHIuc3RyKCk7Ci19Ci0KLWNsYXNzIFRleHR1cmVTYW1wbGluZ0JlbmNo
bWFyayA6IHB1YmxpYyBBTkdMRVJlbmRlclRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8VGV4dHVyZVNhbXBs
aW5nUGFyYW1zPgotewotICBwdWJsaWM6Ci0gICAgVGV4dHVyZVNhbXBsaW5nQmVuY2htYXJrKCk7
Ci0KLSAgICB2b2lkIGluaXRpYWxpemVCZW5jaG1hcmsoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRl
c3Ryb3lCZW5jaG1hcmsoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRyYXdCZW5jaG1hcmsoKSBvdmVy
cmlkZTsKLQotICBwcml2YXRlOgotICAgIHZvaWQgaW5pdFNoYWRlcnMoKTsKLSAgICB2b2lkIGlu
aXRWZXJ0ZXhCdWZmZXIoKTsKLSAgICB2b2lkIGluaXRUZXh0dXJlcygpOwotCi0gICAgR0x1aW50
IG1Qcm9ncmFtOwotICAgIEdMdWludCBtQnVmZmVyOwotICAgIHN0ZDo6dmVjdG9yPEdMdWludD4g
bVRleHR1cmVzOwotfTsKLQotVGV4dHVyZVNhbXBsaW5nQmVuY2htYXJrOjpUZXh0dXJlU2FtcGxp
bmdCZW5jaG1hcmsoKQotICAgIDogQU5HTEVSZW5kZXJUZXN0KCJUZXh0dXJlU2FtcGxpbmciLCBH
ZXRQYXJhbSgpKSwgbVByb2dyYW0oMHUpLCBtQnVmZmVyKDB1KQotewotfQotCi12b2lkIFRleHR1
cmVTYW1wbGluZ0JlbmNobWFyazo6aW5pdGlhbGl6ZUJlbmNobWFyaygpCi17Ci0gICAgY29uc3Qg
YXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKLQotICAgIEFTU0VSVF9MVCgwdSwgcGFyYW1zLml0
ZXJhdGlvbnMpOwotCi0gICAgLy8gVmVyaWZ5ICJudW1TYW1wbGVycyIgaXMgd2l0aGluIE1BWF9U
RVhUVVJFX0lNQUdFX1VOSVRTIGxpbWl0Ci0gICAgR0xpbnQgbWF4VGV4dHVyZUltYWdlVW5pdHM7
Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUUywgJm1heFRleHR1
cmVJbWFnZVVuaXRzKTsKLQotICAgIGlmIChwYXJhbXMubnVtU2FtcGxlcnMgPiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQ+KG1heFRleHR1cmVJbWFnZVVuaXRzKSkKLSAgICB7Ci0gICAgICAgIEZB
SUwoKSA8PCAiU2FtcGxlciBjb3VudCAoIiA8PCBwYXJhbXMubnVtU2FtcGxlcnMgPDwgIikiCi0g
ICAgICAgICAgICAgICA8PCAiIGV4Y2VlZHMgbWF4aW11bSB0ZXh0dXJlIGNvdW50OiAiIDw8IG1h
eFRleHR1cmVJbWFnZVVuaXRzIDw8IHN0ZDo6ZW5kbDsKLSAgICB9Ci0gICAgaW5pdFNoYWRlcnMo
KTsKLSAgICBpbml0VmVydGV4QnVmZmVyKCk7Ci0gICAgaW5pdFRleHR1cmVzKCk7Ci0gICAgZ2xD
bGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOwotICAgIGdsVmlld3BvcnQoMCwgMCwg
Z2V0V2luZG93KCktPmdldFdpZHRoKCksIGdldFdpbmRvdygpLT5nZXRIZWlnaHQoKSk7Ci0KLSAg
ICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotdm9pZCBUZXh0dXJlU2FtcGxpbmdCZW5jaG1h
cms6OmluaXRTaGFkZXJzKCkKLXsKLSAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgp
OwotCi0gICAgc3RkOjpzdHJpbmdzdHJlYW0gdnN0cnN0cjsKLSAgICB2c3Ryc3RyIDw8ICJhdHRy
aWJ1dGUgdmVjMiBhUG9zaXRpb247XG4iCi0gICAgICAgICAgICAgICAidmFyeWluZyB2ZWMyIHZU
ZXh0dXJlQ29vcmRpbmF0ZXM7XG4iCi0gICAgICAgICAgICAgICAidm9pZCBtYWluKClcbiIKLSAg
ICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAiICAgIHZUZXh0dXJlQ29vcmRpbmF0
ZXMgPSAoYVBvc2l0aW9uICsgdmVjMigxLjApKSAqIDAuNTtcbiIKLSAgICAgICAgICAgICAgICIg
ICAgZ2xfUG9zaXRpb24gPSB2ZWM0KGFQb3NpdGlvbiwgMCwgMS4wKTtcbiIKLSAgICAgICAgICAg
ICAgICJ9IjsKLQotICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGZzdHJzdHI7Ci0gICAgZnN0cnN0ciA8
PCAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAgICAgICAgICAidmFyeWluZyB2
ZWMyIHZUZXh0dXJlQ29vcmRpbmF0ZXM7XG4iOwotICAgIGZvciAodW5zaWduZWQgaW50IGNvdW50
ID0gMDsgY291bnQgPCBwYXJhbXMubnVtU2FtcGxlcnM7IGNvdW50KyspCi0gICAgewotICAgICAg
ICBmc3Ryc3RyIDw8ICJ1bmlmb3JtIHNhbXBsZXIyRCB1U2FtcGxlciIgPDwgY291bnQgPDwgIjtc
biI7Ci0gICAgfQotICAgIGZzdHJzdHIgPDwgInZvaWQgbWFpbigpXG4iCi0gICAgICAgICAgICAg
ICAie1xuIgotICAgICAgICAgICAgICAgIiAgICBjb25zdCBmbG9hdCBpbnZlcnNlVGV4dHVyZVNp
emUgPSAxLjAgLyAiCi0gICAgICAgICAgICA8PCBwYXJhbXMudGV4dHVyZVNpemUgPDwgIi4wO1xu
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgdmVjNCBjb2xvck91
dCA9IHZlYzQoMC4wLCAwLjAsIDAuMCwgMS4wKTtcbiI7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQg
Y291bnQgPSAwOyBjb3VudCA8IHBhcmFtcy5udW1TYW1wbGVyczsgY291bnQrKykKLSAgICB7Ci0g
ICAgICAgIGZzdHJzdHIgPDwgIiAgICBmb3IgKGludCB4ID0gMDsgeCA8ICIgPDwgcGFyYW1zLmtl
cm5lbFNpemUgPDwgIjsgKyt4KVxuIgotICAgICAgICAgICAgICAgICAgICIgICAge1xuIgotICAg
ICAgICAgICAgICAgICAgICIgICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgIiA8PCBwYXJhbXMu
a2VybmVsU2l6ZSA8PCAiOyArK3kpXG4iCi0gICAgICAgICAgICAgICAgICAgIiAgICAgICAge1xu
IgotICAgICAgICAgICAgICAgICAgICIgICAgICAgICAgICBjb2xvck91dCArPSB0ZXh0dXJlMkQo
dVNhbXBsZXIiIDw8IGNvdW50Ci0gICAgICAgICAgICAgICAgICAgPDwgIiwgdlRleHR1cmVDb29y
ZGluYXRlcyArIHZlYzIoeCwgeSkgKiBpbnZlcnNlVGV4dHVyZVNpemUpICogMC4xO1xuIgotICAg
ICAgICAgICAgICAgICAgICIgICAgICAgIH1cbiIKLSAgICAgICAgICAgICAgICAgICAiICAgIH1c
biI7Ci0gICAgfQotICAgIGZzdHJzdHIgPDwgIiAgICBnbF9GcmFnQ29sb3IgPSBjb2xvck91dDtc
biIKLSAgICAgICAgICAgICAgICJ9XG4iOwotCi0gICAgbVByb2dyYW0gPSBDb21waWxlUHJvZ3Jh
bSh2c3Ryc3RyLnN0cigpLCBmc3Ryc3RyLnN0cigpKTsKLSAgICBBU1NFUlRfTkUoMHUsIG1Qcm9n
cmFtKTsKLQotICAgIC8vIFVzZSB0aGUgcHJvZ3JhbSBvYmplY3QKLSAgICBnbFVzZVByb2dyYW0o
bVByb2dyYW0pOwotfQotCi12b2lkIFRleHR1cmVTYW1wbGluZ0JlbmNobWFyazo6aW5pdFZlcnRl
eEJ1ZmZlcigpCi17Ci0gICAgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHZlcnRleFBvc2l0aW9ucygxMik7
Ci0gICAgewotICAgICAgICAvLyBCb3R0b20gbGVmdCB0cmlhbmdsZQotICAgICAgICB2ZXJ0ZXhQ
b3NpdGlvbnNbMF0gPSAtMS4wZjsKLSAgICAgICAgdmVydGV4UG9zaXRpb25zWzFdID0gLTEuMGY7
Ci0gICAgICAgIHZlcnRleFBvc2l0aW9uc1syXSA9IDEuMGY7Ci0gICAgICAgIHZlcnRleFBvc2l0
aW9uc1szXSA9IC0xLjBmOwotICAgICAgICB2ZXJ0ZXhQb3NpdGlvbnNbNF0gPSAtMS4wZjsKLSAg
ICAgICAgdmVydGV4UG9zaXRpb25zWzVdID0gMS4wZjsKLQotICAgICAgICAvLyBUb3AgcmlnaHQg
dHJpYW5nbGUKLSAgICAgICAgdmVydGV4UG9zaXRpb25zWzZdICA9IC0xLjBmOwotICAgICAgICB2
ZXJ0ZXhQb3NpdGlvbnNbN10gID0gMS4wZjsKLSAgICAgICAgdmVydGV4UG9zaXRpb25zWzhdICA9
IDEuMGY7Ci0gICAgICAgIHZlcnRleFBvc2l0aW9uc1s5XSAgPSAtMS4wZjsKLSAgICAgICAgdmVy
dGV4UG9zaXRpb25zWzEwXSA9IDEuMGY7Ci0gICAgICAgIHZlcnRleFBvc2l0aW9uc1sxMV0gPSAx
LjBmOwotICAgIH0KLQotICAgIGdsR2VuQnVmZmVycygxLCAmbUJ1ZmZlcik7Ci0gICAgZ2xCaW5k
QnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbUJ1ZmZlcik7Ci0gICAgZ2xCdWZmZXJEYXRhKEdMX0FS
UkFZX0JVRkZFUiwgdmVydGV4UG9zaXRpb25zLnNpemUoKSAqIHNpemVvZihmbG9hdCksICZ2ZXJ0
ZXhQb3NpdGlvbnNbMF0sCi0gICAgICAgICAgICAgICAgIEdMX1NUQVRJQ19EUkFXKTsKLQotICAg
IEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKG1Qcm9ncmFtLCAi
YVBvc2l0aW9uIik7Ci0gICAgQVNTRVJUX05FKC0xLCBwb3NpdGlvbkxvY2F0aW9uKTsKLQotICAg
IGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCAyLCBHTF9GTE9BVCwgR0xf
RkFMU0UsIDAsIG51bGxwdHIpOwotICAgIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkocG9zaXRp
b25Mb2NhdGlvbik7Ci19Ci0KLXZvaWQgVGV4dHVyZVNhbXBsaW5nQmVuY2htYXJrOjppbml0VGV4
dHVyZXMoKQotewotICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7Ci0KLSAgICB1
bnNpZ25lZCBpbnQgZGF0YVNpemUgPSBwYXJhbXMudGV4dHVyZVNpemUgKiBwYXJhbXMudGV4dHVy
ZVNpemU7Ci0gICAgc3RkOjp2ZWN0b3I8dW5zaWduZWQgaW50PiByYW5kb21UZXh0dXJlRGF0YTsK
LSAgICByYW5kb21UZXh0dXJlRGF0YS5yZXNpemUoZGF0YVNpemUpOwotCi0gICAgdW5zaWduZWQg
aW50IHBzZXVkb1JhbmRvbSA9IDF1OwotICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
ZGF0YVNpemU7ICsraSkKLSAgICB7Ci0gICAgICAgIHBzZXVkb1JhbmRvbSAgICAgICAgID0gcHNl
dWRvUmFuZG9tICogMTY2NDUyNXUgKyAxMDEzOTA0MjIzdTsKLSAgICAgICAgcmFuZG9tVGV4dHVy
ZURhdGFbaV0gPSBwc2V1ZG9SYW5kb207Ci0gICAgfQotCi0gICAgbVRleHR1cmVzLnJlc2l6ZShw
YXJhbXMubnVtU2FtcGxlcnMpOwotICAgIGdsR2VuVGV4dHVyZXMocGFyYW1zLm51bVNhbXBsZXJz
LCBtVGV4dHVyZXMuZGF0YSgpKTsKLSAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IHBh
cmFtcy5udW1TYW1wbGVyczsgKytpKQotICAgIHsKLSAgICAgICAgZ2xBY3RpdmVUZXh0dXJlKEdM
X1RFWFRVUkUwICsgaSk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRl
eHR1cmVzW2ldKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RF
WFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJp
KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKLSAg
ICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRF
UiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgICAgICBnbFRleEltYWdlMkQo
R0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgcGFyYW1zLnRleHR1cmVTaXplLCBwYXJhbXMudGV4
dHVyZVNpemUsIDAsIEdMX1JHQkEsCi0gICAgICAgICAgICAgICAgICAgICBHTF9VTlNJR05FRF9C
WVRFLCByYW5kb21UZXh0dXJlRGF0YS5kYXRhKCkpOwotICAgIH0KLQotICAgIGZvciAodW5zaWdu
ZWQgaW50IGNvdW50ID0gMDsgY291bnQgPCBwYXJhbXMubnVtU2FtcGxlcnM7IGNvdW50KyspCi0g
ICAgewotICAgICAgICBzdGQ6OnN0cmluZ3N0cmVhbSBzYW1wbGVyc3Ryc3RyOwotICAgICAgICBz
YW1wbGVyc3Ryc3RyIDw8ICJ1U2FtcGxlciIgPDwgY291bnQ7Ci0gICAgICAgIEdMaW50IHNhbXBs
ZXJMb2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCBzYW1wbGVyc3Ryc3Ry
LnN0cigpLmNfc3RyKCkpOwotICAgICAgICBBU1NFUlRfTkUoLTEsIHNhbXBsZXJMb2NhdGlvbik7
Ci0KLSAgICAgICAgZ2xVbmlmb3JtMWkoc2FtcGxlckxvY2F0aW9uLCBjb3VudCk7Ci0gICAgfQot
fQotCi12b2lkIFRleHR1cmVTYW1wbGluZ0JlbmNobWFyazo6ZGVzdHJveUJlbmNobWFyaygpCi17
Ci0gICAgY29uc3QgYXV0byAmcGFyYW1zID0gR2V0UGFyYW0oKTsKLQotICAgIGdsRGVsZXRlUHJv
Z3JhbShtUHJvZ3JhbSk7Ci0gICAgZ2xEZWxldGVCdWZmZXJzKDEsICZtQnVmZmVyKTsKLSAgICBp
ZiAoIW1UZXh0dXJlcy5lbXB0eSgpKQotICAgIHsKLSAgICAgICAgZ2xEZWxldGVUZXh0dXJlcyhw
YXJhbXMubnVtU2FtcGxlcnMsIG1UZXh0dXJlcy5kYXRhKCkpOwotICAgIH0KLX0KLQotdm9pZCBU
ZXh0dXJlU2FtcGxpbmdCZW5jaG1hcms6OmRyYXdCZW5jaG1hcmsoKQotewotICAgIGdsQ2xlYXIo
R0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJh
bSgpOwotCi0gICAgZm9yICh1bnNpZ25lZCBpbnQgaXQgPSAwOyBpdCA8IHBhcmFtcy5pdGVyYXRp
b25zOyArK2l0KQotICAgIHsKLSAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwg
Nik7Ci0gICAgfQotCi0gICAgQVNTRVJUX0dMX05PX0VSUk9SKCk7Ci19Ci0KLVRleHR1cmVTYW1w
bGluZ1BhcmFtcyBEM0QxMVBhcmFtcygpCi17Ci0gICAgVGV4dHVyZVNhbXBsaW5nUGFyYW1zIHBh
cmFtczsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNEMTEoKTsK
LSAgICByZXR1cm4gcGFyYW1zOwotfQotCi1UZXh0dXJlU2FtcGxpbmdQYXJhbXMgRDNEOVBhcmFt
cygpCi17Ci0gICAgVGV4dHVyZVNhbXBsaW5nUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWds
UGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNEOSgpOwotICAgIHJldHVybiBwYXJhbXM7Ci19
Ci0KLVRleHR1cmVTYW1wbGluZ1BhcmFtcyBPcGVuR0xQYXJhbXMoKQotewotICAgIFRleHR1cmVT
YW1wbGluZ1BhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xfcGxh
dGZvcm06Ok9QRU5HTCgpOwotICAgIHJldHVybiBwYXJhbXM7Ci19Ci0KLX0gIC8vIGFub255bW91
cyBuYW1lc3BhY2UKLQotVEVTVF9QKFRleHR1cmVTYW1wbGluZ0JlbmNobWFyaywgUnVuKQotewot
ICAgIHJ1bigpOwotfQotCi1BTkdMRV9JTlNUQU5USUFURV9URVNUKFRleHR1cmVTYW1wbGluZ0Jl
bmNobWFyaywgRDNEMTFQYXJhbXMoKSwgRDNEOVBhcmFtcygpLCBPcGVuR0xQYXJhbXMoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9U
ZXh0dXJlc1BlcmYuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZf
dGVzdHMvVGV4dHVyZXNQZXJmLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThl
MWE5YmE2YWUuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy9wZXJmX3Rlc3RzL1RleHR1cmVzUGVyZi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTMg
KzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg
Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4g
dGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBUZXh0dXJlc1BlcmY6Ci0vLyAgIFBlcmZvcm1hbmNl
IHRlc3QgZm9yIHNldHRpbmcgdGV4dHVyZSBzdGF0ZS4KLS8vCi0KLSNpbmNsdWRlICJBTkdMRVBl
cmZUZXN0LmgiCi0KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxyYW5kb20+Ci0jaW5j
bHVkZSA8c3N0cmVhbT4KLQotI2luY2x1ZGUgInNoYWRlcl91dGlscy5oIgotCi1uYW1lc3BhY2Ug
YW5nbGUKLXsKLQotc3RydWN0IFRleHR1cmVzUGFyYW1zIGZpbmFsIDogcHVibGljIFJlbmRlclRl
c3RQYXJhbXMKLXsKLSAgICBUZXh0dXJlc1BhcmFtcygpCi0gICAgewotICAgICAgICAvLyBDb21t
b24gZGVmYXVsdCBwYXJhbXMKLSAgICAgICAgbWFqb3JWZXJzaW9uID0gMjsKLSAgICAgICAgbWlu
b3JWZXJzaW9uID0gMDsKLSAgICAgICAgd2luZG93V2lkdGggID0gNzIwOwotICAgICAgICB3aW5k
b3dIZWlnaHQgPSA3MjA7Ci0gICAgICAgIGl0ZXJhdGlvbnMgICA9IDI1NjsKLQotICAgICAgICBu
dW1UZXh0dXJlcyAgICAgICAgICAgICAgICAgPSA4OwotICAgICAgICB0ZXh0dXJlUmViaW5kRnJl
cXVlbmN5ICAgICAgPSA1OwotICAgICAgICB0ZXh0dXJlU3RhdGVVcGRhdGVGcmVxdWVuY3kgPSAz
OwotICAgICAgICB0ZXh0dXJlTWlwQ291bnQgICAgICAgICAgICAgPSA4OwotICAgIH0KLQotICAg
IHN0ZDo6c3RyaW5nIHN1ZmZpeCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHNpemVfdCBudW1UZXh0
dXJlczsKLSAgICBzaXplX3QgdGV4dHVyZVJlYmluZEZyZXF1ZW5jeTsKLSAgICBzaXplX3QgdGV4
dHVyZVN0YXRlVXBkYXRlRnJlcXVlbmN5OwotICAgIHNpemVfdCB0ZXh0dXJlTWlwQ291bnQ7Ci0K
LSAgICAvLyBzdGF0aWMgcGFyYW1ldGVycwotICAgIHNpemVfdCBpdGVyYXRpb25zOwotfTsKLQot
c3RkOjpvc3RyZWFtICZvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSAmb3MsIGNvbnN0IFRleHR1cmVz
UGFyYW1zICZwYXJhbXMpCi17Ci0gICAgb3MgPDwgcGFyYW1zLnN1ZmZpeCgpLnN1YnN0cigxKTsK
LSAgICByZXR1cm4gb3M7Ci19Ci0KLXN0ZDo6c3RyaW5nIFRleHR1cmVzUGFyYW1zOjpzdWZmaXgo
KSBjb25zdAotewotICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cnN0cjsKLQotICAgIHN0cnN0ciA8
PCBSZW5kZXJUZXN0UGFyYW1zOjpzdWZmaXgoKTsKLSAgICBzdHJzdHIgPDwgIl8iIDw8IG51bVRl
eHR1cmVzIDw8ICJfdGV4dHVyZXMiOwotICAgIHN0cnN0ciA8PCAiXyIgPDwgdGV4dHVyZVJlYmlu
ZEZyZXF1ZW5jeSA8PCAiX3JlYmluZCI7Ci0gICAgc3Ryc3RyIDw8ICJfIiA8PCB0ZXh0dXJlU3Rh
dGVVcGRhdGVGcmVxdWVuY3kgPDwgIl9zdGF0ZSI7Ci0gICAgc3Ryc3RyIDw8ICJfIiA8PCB0ZXh0
dXJlTWlwQ291bnQgPDwgIl9taXBzIjsKLQotICAgIHJldHVybiBzdHJzdHIuc3RyKCk7Ci19Ci0K
LWNsYXNzIFRleHR1cmVzQmVuY2htYXJrIDogcHVibGljIEFOR0xFUmVuZGVyVGVzdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVibGljIDo6dGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNl
PFRleHR1cmVzUGFyYW1zPgotewotICBwdWJsaWM6Ci0gICAgVGV4dHVyZXNCZW5jaG1hcmsoKTsK
LQotICAgIHZvaWQgaW5pdGlhbGl6ZUJlbmNobWFyaygpIG92ZXJyaWRlOwotICAgIHZvaWQgZGVz
dHJveUJlbmNobWFyaygpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0JlbmNobWFyaygpIG92ZXJy
aWRlOwotCi0gIHByaXZhdGU6Ci0gICAgdm9pZCBpbml0U2hhZGVycygpOwotICAgIHZvaWQgaW5p
dFRleHR1cmVzKCk7Ci0KLSAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1UZXh0dXJlczsKLQotICAg
IEdMdWludCBtUHJvZ3JhbTsKLSAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1Vbmlmb3JtTG9jYXRp
b25zOwotfTsKLQotVGV4dHVyZXNCZW5jaG1hcms6OlRleHR1cmVzQmVuY2htYXJrKCkgOiBBTkdM
RVJlbmRlclRlc3QoIlRleHR1cmVzIiwgR2V0UGFyYW0oKSksIG1Qcm9ncmFtKDB1KQotewotfQot
Ci12b2lkIFRleHR1cmVzQmVuY2htYXJrOjppbml0aWFsaXplQmVuY2htYXJrKCkKLXsKLSAgICBj
b25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOwotCi0gICAgQVNTRVJUX0dUKHBhcmFtcy5p
dGVyYXRpb25zLCAwdSk7Ci0KLSAgICAvLyBWZXJpZnkgdGhlIHVuaWZvcm0gY291bnRzIGFyZSB3
aXRoaW4gdGhlIGxpbWl0cwotICAgIEdMaW50IG1heFRleHR1cmVVbml0czsKLSAgICBnbEdldElu
dGVnZXJ2KEdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTLCAmbWF4VGV4dHVyZVVuaXRzKTsKLSAg
ICBpZiAocGFyYW1zLm51bVRleHR1cmVzID4gc3RhdGljX2Nhc3Q8c2l6ZV90PihtYXhUZXh0dXJl
VW5pdHMpKQotICAgIHsKLSAgICAgICAgRkFJTCgpIDw8ICJUZXh0dXJlIGNvdW50ICgiIDw8IHBh
cmFtcy5udW1UZXh0dXJlcyA8PCAiKSIKLSAgICAgICAgICAgICAgIDw8ICIgZXhjZWVkcyBtYXhp
bXVtIHRleHR1cmUgdW5pdCBjb3VudDogIiA8PCBtYXhUZXh0dXJlVW5pdHMgPDwgc3RkOjplbmRs
OwotICAgIH0KLQotICAgIGluaXRTaGFkZXJzKCk7Ci0gICAgaW5pdFRleHR1cmVzKCk7Ci0gICAg
Z2xDbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYpOwotICAgIGdsVmlld3BvcnQoMCwg
MCwgZ2V0V2luZG93KCktPmdldFdpZHRoKCksIGdldFdpbmRvdygpLT5nZXRIZWlnaHQoKSk7Ci0K
LSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQotc3RkOjpzdHJpbmcgR2V0VW5pZm9ybUxv
Y2F0aW9uTmFtZShzaXplX3QgaWR4LCBib29sIHZlcnRleFNoYWRlcikKLXsKLSAgICBzdGQ6OnN0
cmluZ3N0cmVhbSBzdHJzdHI7Ci0gICAgc3Ryc3RyIDw8ICh2ZXJ0ZXhTaGFkZXIgPyAidnMiIDog
ImZzIikgPDwgIl91XyIgPDwgaWR4OwotICAgIHJldHVybiBzdHJzdHIuc3RyKCk7Ci19Ci0KLXZv
aWQgVGV4dHVyZXNCZW5jaG1hcms6OmluaXRTaGFkZXJzKCkKLXsKLSAgICBjb25zdCBhdXRvICZw
YXJhbXMgPSBHZXRQYXJhbSgpOwotCi0gICAgc3RkOjpzdHJpbmcgdnMgPQotICAgICAgICAidm9p
ZCBtYWluKClcbiIKLSAgICAgICAgIntcbiIKLSAgICAgICAgIiAgICBnbF9Qb3NpdGlvbiA9IHZl
YzQoMCwgMCwgMCwgMCk7XG4iCi0gICAgICAgICJ9XG4iOwotCi0gICAgc3RkOjpzdHJpbmdzdHJl
YW0gZnN0cnN0cjsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtcy5udW1UZXh0dXJl
czsgaSsrKQotICAgIHsKLSAgICAgICAgZnN0cnN0ciA8PCAidW5pZm9ybSBzYW1wbGVyMkQgdGV4
IiA8PCBpIDw8ICI7IjsKLSAgICB9Ci0gICAgZnN0cnN0ciA8PCAidm9pZCBtYWluKClcbiIKLSAg
ICAgICAgICAgICAgICJ7XG4iCi0gICAgICAgICAgICAgICAiICAgIGdsX0ZyYWdDb2xvciA9IHZl
YzQoMCwgMCwgMCwgMCkiOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1zLm51bVRl
eHR1cmVzOyBpKyspCi0gICAgewotICAgICAgICBmc3Ryc3RyIDw8ICIrIHRleHR1cmUyRCh0ZXgi
IDw8IGkgPDwgIiwgdmVjMigwLCAwKSkiOwotICAgIH0KLSAgICBmc3Ryc3RyIDw8ICI7XG4iCi0g
ICAgICAgICAgICAgICAifVxuIjsKLQotICAgIG1Qcm9ncmFtID0gQ29tcGlsZVByb2dyYW0odnMs
IGZzdHJzdHIuc3RyKCkpOwotICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0pOwotCi0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbXMubnVtVGV4dHVyZXM7ICsraSkKLSAgICB7Ci0gICAg
ICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHVuaWZvcm1OYW1lOwotICAgICAgICB1bmlmb3JtTmFtZSA8
PCAidGV4IiA8PCBpOwotCi0gICAgICAgIEdMaW50IGxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9j
YXRpb24obVByb2dyYW0sIHVuaWZvcm1OYW1lLnN0cigpLmNfc3RyKCkpOwotICAgICAgICBBU1NF
UlRfTkUoLTEsIGxvY2F0aW9uKTsKLSAgICAgICAgbVVuaWZvcm1Mb2NhdGlvbnMucHVzaF9iYWNr
KGxvY2F0aW9uKTsKLSAgICB9Ci0KLSAgICAvLyBVc2UgdGhlIHByb2dyYW0gb2JqZWN0Ci0gICAg
Z2xVc2VQcm9ncmFtKG1Qcm9ncmFtKTsKLX0KLQotdm9pZCBUZXh0dXJlc0JlbmNobWFyazo6aW5p
dFRleHR1cmVzKCkKLXsKLSAgICBjb25zdCBhdXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOwotCi0g
ICAgc2l6ZV90IHRleHR1cmVTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PigxKSA8PCBwYXJhbXMu
dGV4dHVyZU1pcENvdW50OwotICAgIHN0ZDo6dmVjdG9yPEdMdWJ5dGU+IHRleHR1cmVEYXRhKHRl
eHR1cmVTaXplICogdGV4dHVyZVNpemUgKiA0KTsKLSAgICBmb3IgKGF1dG8gJmJ5dGUgOiB0ZXh0
dXJlRGF0YSkKLSAgICB7Ci0gICAgICAgIGJ5dGUgPSByYW5kKCkgJSAyNTV1OwotICAgIH0KLQot
ICAgIGZvciAoc2l6ZV90IHRleEluZGV4ID0gMDsgdGV4SW5kZXggPCBwYXJhbXMubnVtVGV4dHVy
ZXM7IHRleEluZGV4KyspCi0gICAgewotICAgICAgICBHTHVpbnQgdGV4ID0gMDsKLSAgICAgICAg
Z2xHZW5UZXh0dXJlcygxLCAmdGV4KTsKLQotICAgICAgICBnbEFjdGl2ZVRleHR1cmUoc3RhdGlj
X2Nhc3Q8R0xlbnVtPihHTF9URVhUVVJFMCArIHRleEluZGV4KSk7Ci0gICAgICAgIGdsQmluZFRl
eHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4KTsKLSAgICAgICAgZm9yIChzaXplX3QgbWlwID0gMDsg
bWlwIDwgcGFyYW1zLnRleHR1cmVNaXBDb3VudDsgbWlwKyspCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIEdMc2l6ZWkgbGV2ZWxTaXplID0gc3RhdGljX2Nhc3Q8R0xzaXplaT4odGV4dHVyZVNpemUg
Pj4gbWlwKTsKLSAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCBzdGF0aWNf
Y2FzdDxHTGludD4obWlwKSwgR0xfUkdCQSwgbGV2ZWxTaXplLCBsZXZlbFNpemUsIDAsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgdGV4dHVyZURh
dGEuZGF0YSgpKTsKLSAgICAgICAgfQotICAgICAgICBtVGV4dHVyZXMucHVzaF9iYWNrKHRleCk7
Ci0KLSAgICAgICAgZ2xVbmlmb3JtMWkobVVuaWZvcm1Mb2NhdGlvbnNbdGV4SW5kZXhdLCBzdGF0
aWNfY2FzdDxHTGludD4odGV4SW5kZXgpKTsKLSAgICB9Ci19Ci0KLXZvaWQgVGV4dHVyZXNCZW5j
aG1hcms6OmRlc3Ryb3lCZW5jaG1hcmsoKQotewotICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3Jh
bSk7Ci19Ci0KLXZvaWQgVGV4dHVyZXNCZW5jaG1hcms6OmRyYXdCZW5jaG1hcmsoKQotewotICAg
IGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpdCA9
IDA7IGl0IDwgcGFyYW1zLml0ZXJhdGlvbnM7ICsraXQpCi0gICAgewotICAgICAgICBpZiAoaXQg
JSBwYXJhbXMudGV4dHVyZVJlYmluZEZyZXF1ZW5jeSA9PSAwKQotICAgICAgICB7Ci0gICAgICAg
ICAgICAvLyBTd2FwIHR3byB0ZXh0dXJlcwotICAgICAgICAgICAgc2l6ZV90IHN3YXBUZXh0dXJl
ID0gKGl0IC8gcGFyYW1zLnRleHR1cmVSZWJpbmRGcmVxdWVuY3kpICUgKHBhcmFtcy5udW1UZXh0
dXJlcyAtIDEpOwotCi0gICAgICAgICAgICBnbEFjdGl2ZVRleHR1cmUoc3RhdGljX2Nhc3Q8R0xl
bnVtPihHTF9URVhUVVJFMCArIHN3YXBUZXh0dXJlKSk7Ci0gICAgICAgICAgICBnbEJpbmRUZXh0
dXJlKEdMX1RFWFRVUkVfMkQsIG1UZXh0dXJlc1tzd2FwVGV4dHVyZV0pOwotICAgICAgICAgICAg
Z2xBY3RpdmVUZXh0dXJlKHN0YXRpY19jYXN0PEdMZW51bT4oR0xfVEVYVFVSRTAgKyBzd2FwVGV4
dHVyZSArIDEpKTsKLSAgICAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVRl
eHR1cmVzW3N3YXBUZXh0dXJlICsgMV0pOwotICAgICAgICAgICAgc3RkOjpzd2FwKG1UZXh0dXJl
c1tzd2FwVGV4dHVyZV0sIG1UZXh0dXJlc1tzd2FwVGV4dHVyZSArIDFdKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIGlmIChpdCAlIHBhcmFtcy50ZXh0dXJlU3RhdGVVcGRhdGVGcmVxdWVuY3kgPT0g
MCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gVXBkYXRlIGEgdGV4dHVyZSdzIHN0YXRlCi0g
ICAgICAgICAgICBzaXplX3Qgc3RhdGVVcGRhdGVDb3VudCA9IGl0IC8gcGFyYW1zLnRleHR1cmVT
dGF0ZVVwZGF0ZUZyZXF1ZW5jeTsKLQotICAgICAgICAgICAgY29uc3Qgc2l6ZV90IG51bVVwZGF0
ZVRleHR1cmVzID0gNDsKLSAgICAgICAgICAgIEFTU0VSVF9MRShudW1VcGRhdGVUZXh0dXJlcywg
cGFyYW1zLm51bVRleHR1cmVzKTsKLQotICAgICAgICAgICAgc2l6ZV90IGZpcnN0VGV4dHVyZSA9
IHN0YXRlVXBkYXRlQ291bnQgJSAocGFyYW1zLm51bVRleHR1cmVzIC0gbnVtVXBkYXRlVGV4dHVy
ZXMpOwotCi0gICAgICAgICAgICBmb3IgKHNpemVfdCB1cGRhdGVUZXh0dXJlSWR4ID0gMDsgdXBk
YXRlVGV4dHVyZUlkeCA8IG51bVVwZGF0ZVRleHR1cmVzOwotICAgICAgICAgICAgICAgICB1cGRh
dGVUZXh0dXJlSWR4KyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgc2l6ZV90IHVw
ZGF0ZVRleHR1cmUgPSBmaXJzdFRleHR1cmUgKyB1cGRhdGVUZXh0dXJlSWR4OwotICAgICAgICAg
ICAgICAgIGdsQWN0aXZlVGV4dHVyZShzdGF0aWNfY2FzdDxHTGVudW0+KEdMX1RFWFRVUkUwICsg
dXBkYXRlVGV4dHVyZSkpOwotCi0gICAgICAgICAgICAgICAgY29uc3QgR0xlbnVtIG1pbkZpbHRl
cnNbXSA9IHsKLSAgICAgICAgICAgICAgICAgICAgR0xfTkVBUkVTVCwKLSAgICAgICAgICAgICAg
ICAgICAgR0xfTElORUFSLAotICAgICAgICAgICAgICAgICAgICBHTF9ORUFSRVNUX01JUE1BUF9O
RUFSRVNULAotICAgICAgICAgICAgICAgICAgICBHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QsCi0g
ICAgICAgICAgICAgICAgICAgIEdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUiwKLSAgICAgICAgICAg
ICAgICAgICAgR0xfTElORUFSX01JUE1BUF9MSU5FQVIsCi0gICAgICAgICAgICAgICAgfTsKLSAg
ICAgICAgICAgICAgICBnbFRleFBhcmFtZXRlcmkoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9N
SU5fRklMVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5GaWx0ZXJzW3N0
YXRlVXBkYXRlQ291bnQgJSBBcnJheVNpemUobWluRmlsdGVycyldKTsKLQotICAgICAgICAgICAg
ICAgIGNvbnN0IEdMZW51bSBtYWdGaWx0ZXJzW10gPSB7Ci0gICAgICAgICAgICAgICAgICAgIEdM
X05FQVJFU1QsIEdMX0xJTkVBUiwKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAg
IGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hZ0ZpbHRlcnNbc3RhdGVVcGRhdGVDb3Vu
dCAlIEFycmF5U2l6ZShtYWdGaWx0ZXJzKV0pOwotCi0gICAgICAgICAgICAgICAgY29uc3QgR0xl
bnVtIHdyYXBQYXJhbWV0ZXJzW10gPSB7Ci0gICAgICAgICAgICAgICAgICAgIEdMX0NMQU1QX1RP
X0VER0UsIEdMX1JFUEVBVCwgR0xfTUlSUk9SRURfUkVQRUFULAotICAgICAgICAgICAgICAgIH07
Ci0gICAgICAgICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfV1JBUF9TLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwUGFyYW1ldGVy
c1tzdGF0ZVVwZGF0ZUNvdW50ICUgQXJyYXlTaXplKHdyYXBQYXJhbWV0ZXJzKV0pOwotICAgICAg
ICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBf
VCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcFBhcmFtZXRlcnNbc3RhdGVV
cGRhdGVDb3VudCAlIEFycmF5U2l6ZSh3cmFwUGFyYW1ldGVycyldKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotCi0gICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDMpOwot
ICAgIH0KLQotICAgIEFTU0VSVF9HTF9OT19FUlJPUigpOwotfQotCi1UZXh0dXJlc1BhcmFtcyBE
M0QxMVBhcmFtcygpCi17Ci0gICAgVGV4dHVyZXNQYXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5l
Z2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpEM0QxMV9OVUxMKCk7Ci0gICAgcmV0dXJuIHBh
cmFtczsKLX0KLQotVGV4dHVyZXNQYXJhbXMgRDNEOVBhcmFtcygpCi17Ci0gICAgVGV4dHVyZXNQ
YXJhbXMgcGFyYW1zOwotICAgIHBhcmFtcy5lZ2xQYXJhbWV0ZXJzID0gZWdsX3BsYXRmb3JtOjpE
M0Q5X05VTEwoKTsKLSAgICByZXR1cm4gcGFyYW1zOwotfQotCi1UZXh0dXJlc1BhcmFtcyBPcGVu
R0xQYXJhbXMoKQotewotICAgIFRleHR1cmVzUGFyYW1zIHBhcmFtczsKLSAgICBwYXJhbXMuZWds
UGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6T1BFTkdMX05VTEwoKTsKLSAgICByZXR1cm4gcGFy
YW1zOwotfQotCi1URVNUX1AoVGV4dHVyZXNCZW5jaG1hcmssIFJ1bikKLXsKLSAgICBydW4oKTsK
LX0KLQotQU5HTEVfSU5TVEFOVElBVEVfVEVTVChUZXh0dXJlc0JlbmNobWFyaywgRDNEMTFQYXJh
bXMoKSwgRDNEOVBhcmFtcygpLCBPcGVuR0xQYXJhbXMoKSk7Ci0KLX0gIC8vIG5hbWVzcGFjZSBh
bmdsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZf
dGVzdHMvVW5pZm9ybXNQZXJmLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9wZXJmX3Rlc3RzL1VuaWZvcm1zUGVyZi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDI3NmIxYWI5YmYwLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvcGVyZl90ZXN0cy9Vbmlmb3Jtc1BlcmYuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsMjI4ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTYgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gVW5pZm9ybXNCZW5jaG1hcms6Ci0vLyAg
IFBlcmZvcm1hbmNlIHRlc3QgZm9yIHNldHRpbmcgdW5pZm9ybSBkYXRhLgotLy8KLQotI2luY2x1
ZGUgIkFOR0xFUGVyZlRlc3QuaCIKLQotI2luY2x1ZGUgPGlvc3RyZWFtPgotI2luY2x1ZGUgPHJh
bmRvbT4KLSNpbmNsdWRlIDxzc3RyZWFtPgotCi0jaW5jbHVkZSAic2hhZGVyX3V0aWxzLmgiCi0K
LXVzaW5nIG5hbWVzcGFjZSBhbmdsZTsKLQotbmFtZXNwYWNlCi17Ci0KLXN0cnVjdCBVbmlmb3Jt
c1BhcmFtcyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJUZXN0UGFyYW1zCi17Ci0gICAgVW5pZm9ybXNQ
YXJhbXMoKQotICAgIHsKLSAgICAgICAgLy8gQ29tbW9uIGRlZmF1bHQgcGFyYW1zCi0gICAgICAg
IG1ham9yVmVyc2lvbiA9IDI7Ci0gICAgICAgIG1pbm9yVmVyc2lvbiA9IDA7Ci0gICAgICAgIHdp
bmRvd1dpZHRoICA9IDcyMDsKLSAgICAgICAgd2luZG93SGVpZ2h0ID0gNzIwOwotICAgICAgICBp
dGVyYXRpb25zICAgPSA0OwotCi0gICAgICAgIG51bVZlcnRleFVuaWZvcm1zICAgPSAyMDA7Ci0g
ICAgICAgIG51bUZyYWdtZW50VW5pZm9ybXMgPSAyMDA7Ci0gICAgfQotCi0gICAgc3RkOjpzdHJp
bmcgc3VmZml4KCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgc2l6ZV90IG51bVZlcnRleFVuaWZvcm1z
OwotICAgIHNpemVfdCBudW1GcmFnbWVudFVuaWZvcm1zOwotCi0gICAgLy8gc3RhdGljIHBhcmFt
ZXRlcnMKLSAgICBzaXplX3QgaXRlcmF0aW9uczsKLX07Ci0KLXN0ZDo6b3N0cmVhbSAmb3BlcmF0
b3I8PChzdGQ6Om9zdHJlYW0gJm9zLCBjb25zdCBVbmlmb3Jtc1BhcmFtcyAmcGFyYW1zKQotewot
ICAgIG9zIDw8IHBhcmFtcy5zdWZmaXgoKS5zdWJzdHIoMSk7Ci0gICAgcmV0dXJuIG9zOwotfQot
Ci1zdGQ6OnN0cmluZyBVbmlmb3Jtc1BhcmFtczo6c3VmZml4KCkgY29uc3QKLXsKLSAgICBzdGQ6
OnN0cmluZ3N0cmVhbSBzdHJzdHI7Ci0KLSAgICBzdHJzdHIgPDwgUmVuZGVyVGVzdFBhcmFtczo6
c3VmZml4KCk7Ci0gICAgc3Ryc3RyIDw8ICJfIiA8PCBudW1WZXJ0ZXhVbmlmb3JtcyA8PCAiX3Zl
cnRleF91bmlmb3JtcyI7Ci0gICAgc3Ryc3RyIDw8ICJfIiA8PCBudW1GcmFnbWVudFVuaWZvcm1z
IDw8ICJfZnJhZ21lbnRfdW5pZm9ybXMiOwotCi0gICAgcmV0dXJuIHN0cnN0ci5zdHIoKTsKLX0K
LQotY2xhc3MgVW5pZm9ybXNCZW5jaG1hcmsgOiBwdWJsaWMgQU5HTEVSZW5kZXJUZXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgOjp0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZh
Y2U8VW5pZm9ybXNQYXJhbXM+Ci17Ci0gIHB1YmxpYzoKLSAgICBVbmlmb3Jtc0JlbmNobWFyaygp
OwotCi0gICAgdm9pZCBpbml0aWFsaXplQmVuY2htYXJrKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBk
ZXN0cm95QmVuY2htYXJrKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3QmVuY2htYXJrKCkgb3Zl
cnJpZGU7Ci0KLSAgcHJpdmF0ZToKLSAgICB2b2lkIGluaXRTaGFkZXJzKCk7Ci0gICAgdm9pZCBp
bml0VmVydGV4QnVmZmVyKCk7Ci0gICAgdm9pZCBpbml0VGV4dHVyZXMoKTsKLQotICAgIEdMdWlu
dCBtUHJvZ3JhbTsKLSAgICBzdGQ6OnZlY3RvcjxHTHVpbnQ+IG1Vbmlmb3JtTG9jYXRpb25zOwot
fTsKLQotVW5pZm9ybXNCZW5jaG1hcms6OlVuaWZvcm1zQmVuY2htYXJrKCkgOiBBTkdMRVJlbmRl
clRlc3QoIlVuaWZvcm1zIiwgR2V0UGFyYW0oKSksIG1Qcm9ncmFtKDB1KQotewotfQotCi12b2lk
IFVuaWZvcm1zQmVuY2htYXJrOjppbml0aWFsaXplQmVuY2htYXJrKCkKLXsKLSAgICBjb25zdCBh
dXRvICZwYXJhbXMgPSBHZXRQYXJhbSgpOwotCi0gICAgQVNTRVJUX0dUKHBhcmFtcy5pdGVyYXRp
b25zLCAwdSk7Ci0KLSAgICAvLyBWZXJpZnkgdGhlIHVuaWZvcm0gY291bnRzIGFyZSB3aXRoaW4g
dGhlIGxpbWl0cwotICAgIEdMaW50IG1heFZlcnRleFVuaWZvcm1zLCBtYXhGcmFnbWVudFVuaWZv
cm1zOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlMsICZt
YXhWZXJ0ZXhVbmlmb3Jtcyk7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfRlJBR01FTlRfVU5J
Rk9STV9WRUNUT1JTLCAmbWF4RnJhZ21lbnRVbmlmb3Jtcyk7Ci0KLSAgICBpZiAocGFyYW1zLm51
bVZlcnRleFVuaWZvcm1zID4gc3RhdGljX2Nhc3Q8c2l6ZV90PihtYXhWZXJ0ZXhVbmlmb3Jtcykp
Ci0gICAgewotICAgICAgICBGQUlMKCkgPDwgIlZlcnRleCB1bmlmb3JtIGNvdW50ICgiIDw8IHBh
cmFtcy5udW1WZXJ0ZXhVbmlmb3JtcyA8PCAiKSIKLSAgICAgICAgICAgICAgIDw8ICIgZXhjZWVk
cyBtYXhpbXVtIHZlcnRleCB1bmlmb3JtIGNvdW50OiAiIDw8IG1heFZlcnRleFVuaWZvcm1zIDw8
IHN0ZDo6ZW5kbDsKLSAgICB9Ci0gICAgaWYgKHBhcmFtcy5udW1GcmFnbWVudFVuaWZvcm1zID4g
c3RhdGljX2Nhc3Q8c2l6ZV90PihtYXhGcmFnbWVudFVuaWZvcm1zKSkKLSAgICB7Ci0gICAgICAg
IEZBSUwoKSA8PCAiRnJhZ21lbnQgdW5pZm9ybSBjb3VudCAoIiA8PCBwYXJhbXMubnVtRnJhZ21l
bnRVbmlmb3JtcyA8PCAiKSIKLSAgICAgICAgICAgICAgIDw8ICIgZXhjZWVkcyBtYXhpbXVtIGZy
YWdtZW50IHVuaWZvcm0gY291bnQ6ICIgPDwgbWF4RnJhZ21lbnRVbmlmb3JtcyA8PCBzdGQ6OmVu
ZGw7Ci0gICAgfQotCi0gICAgaW5pdFNoYWRlcnMoKTsKLSAgICBnbENsZWFyQ29sb3IoMC4wZiwg
MC4wZiwgMC4wZiwgMC4wZik7Ci0gICAgZ2xWaWV3cG9ydCgwLCAwLCBnZXRXaW5kb3coKS0+Z2V0
V2lkdGgoKSwgZ2V0V2luZG93KCktPmdldEhlaWdodCgpKTsKLQotICAgIEFTU0VSVF9HTF9OT19F
UlJPUigpOwotfQotCi1zdGQ6OnN0cmluZyBHZXRVbmlmb3JtTG9jYXRpb25OYW1lKHNpemVfdCBp
ZHgsIGJvb2wgdmVydGV4U2hhZGVyKQotewotICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHN0cnN0cjsK
LSAgICBzdHJzdHIgPDwgKHZlcnRleFNoYWRlciA/ICJ2cyIgOiAiZnMiKSA8PCAiX3VfIiA8PCBp
ZHg7Ci0gICAgcmV0dXJuIHN0cnN0ci5zdHIoKTsKLX0KLQotdm9pZCBVbmlmb3Jtc0JlbmNobWFy
azo6aW5pdFNoYWRlcnMoKQotewotICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBhcmFtKCk7
Ci0KLSAgICBzdGQ6OnN0cmluZ3N0cmVhbSB2c3Ryc3RyOwotICAgIHZzdHJzdHIgPDwgInByZWNp
c2lvbiBtZWRpdW1wIGZsb2F0O1xuIjsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFt
cy5udW1WZXJ0ZXhVbmlmb3JtczsgaSsrKQotICAgIHsKLSAgICAgICAgdnN0cnN0ciA8PCAidW5p
Zm9ybSB2ZWM0ICIgPDwgR2V0VW5pZm9ybUxvY2F0aW9uTmFtZShpLCB0cnVlKSA8PCAiO1xuIjsK
LSAgICB9Ci0gICAgdnN0cnN0ciA8PCAidm9pZCBtYWluKClcbiIKLSAgICAgICAgICAgICAgICJ7
XG4iCi0gICAgICAgICAgICAgICAiICAgIGdsX1Bvc2l0aW9uID0gdmVjNCgwLCAwLCAwLCAwKTtc
biI7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbXMubnVtVmVydGV4VW5pZm9ybXM7
IGkrKykKLSAgICB7Ci0gICAgICAgIHZzdHJzdHIgPDwgIiAgICBnbF9Qb3NpdGlvbiA9IGdsX1Bv
c2l0aW9uICsgIiA8PCBHZXRVbmlmb3JtTG9jYXRpb25OYW1lKGksIHRydWUpIDw8ICI7XG4iOwot
ICAgIH0KLSAgICB2c3Ryc3RyIDw8ICJ9IjsKLQotICAgIHN0ZDo6c3RyaW5nc3RyZWFtIGZzdHJz
dHI7Ci0gICAgZnN0cnN0ciA8PCAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFyYW1zLm51bUZyYWdtZW50VW5pZm9ybXM7IGkrKykKLSAg
ICB7Ci0gICAgICAgIGZzdHJzdHIgPDwgInVuaWZvcm0gdmVjNCAiIDw8IEdldFVuaWZvcm1Mb2Nh
dGlvbk5hbWUoaSwgZmFsc2UpIDw8ICI7XG4iOwotICAgIH0KLSAgICBmc3Ryc3RyIDw8ICJ2b2lk
IG1haW4oKVxuIgotICAgICAgICAgICAgICAgIntcbiIKLSAgICAgICAgICAgICAgICIgICAgZ2xf
RnJhZ0NvbG9yID0gdmVjNCgwLCAwLCAwLCAwKTtcbiI7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBwYXJhbXMubnVtRnJhZ21lbnRVbmlmb3JtczsgaSsrKQotICAgIHsKLSAgICAgICAgZnN0
cnN0ciA8PCAiICAgIGdsX0ZyYWdDb2xvciA9IGdsX0ZyYWdDb2xvciArICIgPDwgR2V0VW5pZm9y
bUxvY2F0aW9uTmFtZShpLCBmYWxzZSkKLSAgICAgICAgICAgICAgICA8PCAiO1xuIjsKLSAgICB9
Ci0gICAgZnN0cnN0ciA8PCAifSI7Ci0KLSAgICBtUHJvZ3JhbSA9IENvbXBpbGVQcm9ncmFtKHZz
dHJzdHIuc3RyKCksIGZzdHJzdHIuc3RyKCkpOwotICAgIEFTU0VSVF9ORSgwdSwgbVByb2dyYW0p
OwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbXMubnVtVmVydGV4VW5pZm9ybXM7
ICsraSkKLSAgICB7Ci0gICAgICAgIEdMaW50IGxvY2F0aW9uID0gZ2xHZXRVbmlmb3JtTG9jYXRp
b24obVByb2dyYW0sIEdldFVuaWZvcm1Mb2NhdGlvbk5hbWUoaSwgdHJ1ZSkuY19zdHIoKSk7Ci0g
ICAgICAgIEFTU0VSVF9ORSgtMSwgbG9jYXRpb24pOwotICAgICAgICBtVW5pZm9ybUxvY2F0aW9u
cy5wdXNoX2JhY2sobG9jYXRpb24pOwotICAgIH0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHBhcmFtcy5udW1GcmFnbWVudFVuaWZvcm1zOyArK2kpCi0gICAgewotICAgICAgICBHTGludCBs
b2NhdGlvbiA9IGdsR2V0VW5pZm9ybUxvY2F0aW9uKG1Qcm9ncmFtLCBHZXRVbmlmb3JtTG9jYXRp
b25OYW1lKGksIGZhbHNlKS5jX3N0cigpKTsKLSAgICAgICAgQVNTRVJUX05FKC0xLCBsb2NhdGlv
bik7Ci0gICAgICAgIG1Vbmlmb3JtTG9jYXRpb25zLnB1c2hfYmFjayhsb2NhdGlvbik7Ci0gICAg
fQotCi0gICAgLy8gVXNlIHRoZSBwcm9ncmFtIG9iamVjdAotICAgIGdsVXNlUHJvZ3JhbShtUHJv
Z3JhbSk7Ci19Ci0KLXZvaWQgVW5pZm9ybXNCZW5jaG1hcms6OmRlc3Ryb3lCZW5jaG1hcmsoKQot
ewotICAgIGdsRGVsZXRlUHJvZ3JhbShtUHJvZ3JhbSk7Ci19Ci0KLXZvaWQgVW5pZm9ybXNCZW5j
aG1hcms6OmRyYXdCZW5jaG1hcmsoKQotewotICAgIGNvbnN0IGF1dG8gJnBhcmFtcyA9IEdldFBh
cmFtKCk7Ci0KLSAgICBmb3IgKHNpemVfdCBpdCA9IDA7IGl0IDwgcGFyYW1zLml0ZXJhdGlvbnM7
ICsraXQpCi0gICAgewotICAgICAgICBmb3IgKHNpemVfdCB1bmlmb3JtID0gMDsgdW5pZm9ybSA8
IG1Vbmlmb3JtTG9jYXRpb25zLnNpemUoKTsgKyt1bmlmb3JtKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBmbG9hdCB2YWx1ZSA9IHN0YXRpY19jYXN0PGZsb2F0Pih1bmlmb3JtKTsKLSAgICAgICAg
ICAgIGdsVW5pZm9ybTRmKG1Vbmlmb3JtTG9jYXRpb25zW3VuaWZvcm1dLCB2YWx1ZSwgdmFsdWUs
IHZhbHVlLCB2YWx1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBnbERyYXdBcnJheXMoR0xfVFJJ
QU5HTEVTLCAwLCAzKTsKLSAgICB9Ci0KLSAgICBBU1NFUlRfR0xfTk9fRVJST1IoKTsKLX0KLQot
VW5pZm9ybXNQYXJhbXMgRDNEMTFQYXJhbXMoKQotewotICAgIFVuaWZvcm1zUGFyYW1zIHBhcmFt
czsKLSAgICBwYXJhbXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6RDNEMTEoKTsKLSAg
ICByZXR1cm4gcGFyYW1zOwotfQotCi1Vbmlmb3Jtc1BhcmFtcyBEM0Q5UGFyYW1zKCkKLXsKLSAg
ICBVbmlmb3Jtc1BhcmFtcyBwYXJhbXM7Ci0gICAgcGFyYW1zLmVnbFBhcmFtZXRlcnMgPSBlZ2xf
cGxhdGZvcm06OkQzRDkoKTsKLSAgICByZXR1cm4gcGFyYW1zOwotfQotCi1Vbmlmb3Jtc1BhcmFt
cyBPcGVuR0xQYXJhbXMoKQotewotICAgIFVuaWZvcm1zUGFyYW1zIHBhcmFtczsKLSAgICBwYXJh
bXMuZWdsUGFyYW1ldGVycyA9IGVnbF9wbGF0Zm9ybTo6T1BFTkdMKCk7Ci0gICAgcmV0dXJuIHBh
cmFtczsKLX0KLQotfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQotCi1URVNUX1AoVW5pZm9ybXNC
ZW5jaG1hcmssIFJ1bikKLXsKLSAgICBydW4oKTsKLX0KLQotQU5HTEVfSU5TVEFOVElBVEVfVEVT
VChVbmlmb3Jtc0JlbmNobWFyaywgRDNEMTFQYXJhbXMoKSwgRDNEOVBhcmFtcygpLCBPcGVuR0xQ
YXJhbXMoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
cGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL2FuZ2xlLW1vZHMucGF0Y2ggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL2FuZ2xl
LW1vZHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwYjY0MDI4OTU5Li4w
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90
ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL2FuZ2xlLW1vZHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt
MSw2MSArMCwwIEBACi1kaWZmIC0tZ2l0IGEvdGVzdHMvcGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9w
ZXJmL3BlcmZfdGVzdC5jYyBiL3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRfcGFydHkvcGVyZi9wZXJm
X3Rlc3QuY2MKLWluZGV4IDBkNWFiYzAuLjczNjQzMzAgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9wZXJm
X3Rlc3RzL3RoaXJkX3BhcnR5L3BlcmYvcGVyZl90ZXN0LmNjCi0rKysgYi90ZXN0cy9wZXJmX3Rl
c3RzL3RoaXJkX3BhcnR5L3BlcmYvcGVyZl90ZXN0LmNjCi1AQCAtMiwxNiArMiw1MSBAQAotIC8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKLSAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotIAotLSNpbmNs
dWRlICJ0ZXN0aW5nL3BlcmYvcGVyZl90ZXN0LmgiCi0rI2luY2x1ZGUgInBlcmZfdGVzdC5oIgot
IAotICNpbmNsdWRlIDxzdGRpby5oPgotLQotLSNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKLS0j
aW5jbHVkZSAiYmFzZS9zdHJpbmdzL3N0cmluZ19udW1iZXJfY29udmVyc2lvbnMuaCIKLS0jaW5j
bHVkZSAiYmFzZS9zdHJpbmdzL3N0cmluZ3ByaW50Zi5oIgotKyNpbmNsdWRlIDxzdGRhcmcuaD4K
LSsjaW5jbHVkZSA8dmVjdG9yPgotIAotIG5hbWVzcGFjZSB7Ci0gCi0rbmFtZXNwYWNlIGJhc2Ug
ewotKwotK3N0ZDo6c3RyaW5nIEZvcm1hdFN0cmluZyhjb25zdCBjaGFyICpmbXQsIHZhX2xpc3Qg
dmFyYXJnKSB7Ci0rICBzdGF0aWMgc3RkOjp2ZWN0b3I8Y2hhcj4gYnVmZmVyKDUxMik7Ci0rCi0r
ICAvLyBBdHRlbXB0IHRvIGp1c3QgcHJpbnQgdG8gdGhlIGN1cnJlbnQgYnVmZmVyCi0rICBpbnQg
bGVuID0gdnNucHJpbnRmKCZidWZmZXJbMF0sIGJ1ZmZlci5zaXplKCksIGZtdCwgdmFyYXJnKTsK
LSsgIGlmIChsZW4gPCAwIHx8IHN0YXRpY19jYXN0PHNpemVfdD4obGVuKSA+PSBidWZmZXIuc2l6
ZSgpKSB7Ci0rICAgIC8vIEJ1ZmZlciB3YXMgbm90IGxhcmdlIGVub3VnaCwgY2FsY3VsYXRlIHRo
ZSByZXF1aXJlZCBzaXplIGFuZCByZXNpemUgdGhlIGJ1ZmZlcgotKyAgICBsZW4gPSB2c25wcmlu
dGYoTlVMTCwgMCwgZm10LCB2YXJhcmcpOwotKyAgICBidWZmZXIucmVzaXplKGxlbiArIDEpOwot
KwotKyAgICAvLyBQcmludCBhZ2FpbgotKyAgICB2c25wcmludGYoJmJ1ZmZlclswXSwgYnVmZmVy
LnNpemUoKSwgZm10LCB2YXJhcmcpOwotKyAgfQotKwotKyAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1
ZmZlci5kYXRhKCksIGxlbik7Ci0rfQotKwotK3N0ZDo6c3RyaW5nIFN0cmluZ1ByaW50Zihjb25z
dCBjaGFyICpmbXQsIC4uLikgewotKyAgdmFfbGlzdCB2YXJhcmc7Ci0rICB2YV9zdGFydCh2YXJh
cmcsIGZtdCk7Ci0rICBzdGQ6OnN0cmluZyByZXN1bHQgPSBGb3JtYXRTdHJpbmcoZm10LCB2YXJh
cmcpOwotKyAgdmFfZW5kKHZhcmFyZyk7Ci0rICByZXR1cm4gcmVzdWx0OwotK30KLSsKLStzdGQ6
OnN0cmluZyBVaW50VG9TdHJpbmcodW5zaWduZWQgaW50IHZhbHVlKSB7Ci0rICByZXR1cm4gU3Ry
aW5nUHJpbnRmKCIldSIsIHZhbHVlKTsKLSt9Ci0rCi0rc3RkOjpzdHJpbmcgRG91YmxlVG9TdHJp
bmcoZG91YmxlIHZhbHVlKSB7Ci0rICByZXR1cm4gU3RyaW5nUHJpbnRmKCIlLjEwbGYiLCB2YWx1
ZSk7Ci0rfQotKwotK30KLSsKLSBzdGQ6OnN0cmluZyBSZXN1bHRzVG9TdHJpbmcoY29uc3Qgc3Rk
OjpzdHJpbmcmIG1lYXN1cmVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3RoaXJkX3BhcnR5L3BlcmYvcGVyZl90ZXN0LmNjIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRfcGFydHkv
cGVyZi9wZXJmX3Rlc3QuY2MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczNjQzMzA2
Yzk3Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
cGVyZl90ZXN0cy90aGlyZF9wYXJ0eS9wZXJmL3BlcmZfdGVzdC5jYworKysgL2Rldi9udWxsCkBA
IC0xLDIzOSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAxMyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVy
bmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBM
SUNFTlNFIGZpbGUuCi0KLSNpbmNsdWRlICJwZXJmX3Rlc3QuaCIKLQotI2luY2x1ZGUgPHN0ZGlv
Lmg+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0jaW5jbHVkZSA8dmVjdG9yPgotCi1uYW1lc3BhY2Ug
ewotCi1uYW1lc3BhY2UgYmFzZSB7Ci0KLXN0ZDo6c3RyaW5nIEZvcm1hdFN0cmluZyhjb25zdCBj
aGFyICpmbXQsIHZhX2xpc3QgdmFyYXJnKSB7Ci0gIHN0YXRpYyBzdGQ6OnZlY3RvcjxjaGFyPiBi
dWZmZXIoNTEyKTsKLQotICAvLyBBdHRlbXB0IHRvIGp1c3QgcHJpbnQgdG8gdGhlIGN1cnJlbnQg
YnVmZmVyCi0gIGludCBsZW4gPSB2c25wcmludGYoJmJ1ZmZlclswXSwgYnVmZmVyLnNpemUoKSwg
Zm10LCB2YXJhcmcpOwotICBpZiAobGVuIDwgMCB8fCBzdGF0aWNfY2FzdDxzaXplX3Q+KGxlbikg
Pj0gYnVmZmVyLnNpemUoKSkgewotICAgIC8vIEJ1ZmZlciB3YXMgbm90IGxhcmdlIGVub3VnaCwg
Y2FsY3VsYXRlIHRoZSByZXF1aXJlZCBzaXplIGFuZCByZXNpemUgdGhlIGJ1ZmZlcgotICAgIGxl
biA9IHZzbnByaW50ZihOVUxMLCAwLCBmbXQsIHZhcmFyZyk7Ci0gICAgYnVmZmVyLnJlc2l6ZShs
ZW4gKyAxKTsKLQotICAgIC8vIFByaW50IGFnYWluCi0gICAgdnNucHJpbnRmKCZidWZmZXJbMF0s
IGJ1ZmZlci5zaXplKCksIGZtdCwgdmFyYXJnKTsKLSAgfQotCi0gIHJldHVybiBzdGQ6OnN0cmlu
ZyhidWZmZXIuZGF0YSgpLCBsZW4pOwotfQotCi1zdGQ6OnN0cmluZyBTdHJpbmdQcmludGYoY29u
c3QgY2hhciAqZm10LCAuLi4pIHsKLSAgdmFfbGlzdCB2YXJhcmc7Ci0gIHZhX3N0YXJ0KHZhcmFy
ZywgZm10KTsKLSAgc3RkOjpzdHJpbmcgcmVzdWx0ID0gRm9ybWF0U3RyaW5nKGZtdCwgdmFyYXJn
KTsKLSAgdmFfZW5kKHZhcmFyZyk7Ci0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0ZDo6c3RyaW5n
IFVpbnRUb1N0cmluZyh1bnNpZ25lZCBpbnQgdmFsdWUpIHsKLSAgcmV0dXJuIFN0cmluZ1ByaW50
ZigiJXUiLCB2YWx1ZSk7Ci19Ci0KLXN0ZDo6c3RyaW5nIERvdWJsZVRvU3RyaW5nKGRvdWJsZSB2
YWx1ZSkgewotICByZXR1cm4gU3RyaW5nUHJpbnRmKCIlLjEwbGYiLCB2YWx1ZSk7Ci19Ci0KLX0K
LQotc3RkOjpzdHJpbmcgUmVzdWx0c1RvU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJl
bWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbW9k
aWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRy
YWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1
ZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHByZWZp
eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgc3VmZml4
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCkgewotICAvLyA8Kj5S
RVNVTFQgPGdyYXBoX25hbWU+OiA8dHJhY2VfbmFtZT49IDx2YWx1ZT4gPHVuaXRzPgotICAvLyA8
Kj5SRVNVTFQgPGdyYXBoX25hbWU+OiA8dHJhY2VfbmFtZT49IHs8bWVhbj4sIDxzdGQgZGV2aWF0
aW9uPn0gPHVuaXRzPgotICAvLyA8Kj5SRVNVTFQgPGdyYXBoX25hbWU+OiA8dHJhY2VfbmFtZT49
IFs8dmFsdWU+LHZhbHVlLHZhbHVlLC4uLixdIDx1bml0cz4KLSAgcmV0dXJuIGJhc2U6OlN0cmlu
Z1ByaW50ZigiJXNSRVNVTFQgJXMlczogJXM9ICVzJXMlcyAlc1xuIiwKLSAgICAgICAgIGltcG9y
dGFudCA/ICIqIiA6ICIiLCBtZWFzdXJlbWVudC5jX3N0cigpLCBtb2RpZmllci5jX3N0cigpLAot
ICAgICAgICAgdHJhY2UuY19zdHIoKSwgcHJlZml4LmNfc3RyKCksIHZhbHVlcy5jX3N0cigpLCBz
dWZmaXguY19zdHIoKSwKLSAgICAgICAgIHVuaXRzLmNfc3RyKCkpOwotfQotCi12b2lkIFByaW50
UmVzdWx0c0ltcGwoY29uc3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAotICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKLSAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcmIHZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgcHJlZml4LAotICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBzdWZmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRz
LAotICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KSB7Ci0gIGZmbHVzaChzdGRv
dXQpOwotICBwcmludGYoIiVzIiwgUmVzdWx0c1RvU3RyaW5nKG1lYXN1cmVtZW50LCBtb2RpZmll
ciwgdHJhY2UsIHZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgs
IHN1ZmZpeCwgdW5pdHMsIGltcG9ydGFudCkuY19zdHIoKSk7Ci0gIGZmbHVzaChzdGRvdXQpOwot
fQotCi19ICAvLyBuYW1lc3BhY2UKLQotbmFtZXNwYWNlIHBlcmZfdGVzdCB7Ci0KLXZvaWQgUHJp
bnRSZXN1bHQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAotICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiB0cmFjZSwKLSAgICAgICAgICAgICAgICAgc2l6ZV90IHZhbHVlLAotICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdW5pdHMsCi0gICAgICAgICAgICAgICAgIGJv
b2wgaW1wb3J0YW50KSB7Ci0gIFByaW50UmVzdWx0c0ltcGwobWVhc3VyZW1lbnQsCi0gICAgICAg
ICAgICAgICAgICAgbW9kaWZpZXIsCi0gICAgICAgICAgICAgICAgICAgdHJhY2UsCi0gICAgICAg
ICAgICAgICAgICAgYmFzZTo6VWludFRvU3RyaW5nKHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4o
dmFsdWUpKSwKLSAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZygpLAotICAgICAgICAgICAg
ICAgICAgIHN0ZDo6c3RyaW5nKCksCi0gICAgICAgICAgICAgICAgICAgdW5pdHMsCi0gICAgICAg
ICAgICAgICAgICAgaW1wb3J0YW50KTsKLX0KLQotdm9pZCBQcmludFJlc3VsdChjb25zdCBzdGQ6
OnN0cmluZyYgbWVhc3VyZW1lbnQsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBtb2RpZmllciwKLSAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHRyYWNlLAot
ICAgICAgICAgICAgICAgICBkb3VibGUgdmFsdWUsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiB1bml0cywKLSAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKLSAg
UHJpbnRSZXN1bHRzSW1wbChtZWFzdXJlbWVudCwKLSAgICAgICAgICAgICAgICAgICBtb2RpZmll
ciwKLSAgICAgICAgICAgICAgICAgICB0cmFjZSwKLSAgICAgICAgICAgICAgICAgICBiYXNlOjpE
b3VibGVUb1N0cmluZyh2YWx1ZSksCi0gICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoKSwK
LSAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZygpLAotICAgICAgICAgICAgICAgICAgIHVu
aXRzLAotICAgICAgICAgICAgICAgICAgIGltcG9ydGFudCk7Ci19Ci0KLXZvaWQgQXBwZW5kUmVz
dWx0KHN0ZDo6c3RyaW5nJiBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgbWVhc3VyZW1lbnQsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg
bW9kaWZpZXIsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhY2UsCi0g
ICAgICAgICAgICAgICAgICBzaXplX3QgdmFsdWUsCi0gICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgdW5pdHMsCi0gICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCkgewot
ICBvdXRwdXQgKz0gUmVzdWx0c1RvU3RyaW5nKAotICAgICAgbWVhc3VyZW1lbnQsCi0gICAgICBt
b2RpZmllciwKLSAgICAgIHRyYWNlLAotICAgICAgYmFzZTo6VWludFRvU3RyaW5nKHN0YXRpY19j
YXN0PHVuc2lnbmVkIGludD4odmFsdWUpKSwKLSAgICAgIHN0ZDo6c3RyaW5nKCksCi0gICAgICBz
dGQ6OnN0cmluZygpLAotICAgICAgdW5pdHMsCi0gICAgICBpbXBvcnRhbnQpOwotfQotCi12b2lk
IFByaW50UmVzdWx0KGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKLSAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAotICAgICAgICAgICAgICAgICBjb25z
dCBzdGQ6OnN0cmluZyYgdHJhY2UsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAotICAg
ICAgICAgICAgICAgICBib29sIGltcG9ydGFudCkgewotICBQcmludFJlc3VsdHNJbXBsKG1lYXN1
cmVtZW50LAotICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyLAotICAgICAgICAgICAgICAgICAg
IHRyYWNlLAotICAgICAgICAgICAgICAgICAgIHZhbHVlLAotICAgICAgICAgICAgICAgICAgIHN0
ZDo6c3RyaW5nKCksCi0gICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoKSwKLSAgICAgICAg
ICAgICAgICAgICB1bml0cywKLSAgICAgICAgICAgICAgICAgICBpbXBvcnRhbnQpOwotfQotCi12
b2lkIEFwcGVuZFJlc3VsdChzdGQ6OnN0cmluZyYgb3V0cHV0LAotICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAotICAgICAgICAgICAgICAgICAgY29uc3Qg
c3RkOjpzdHJpbmcmIG1vZGlmaWVyLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHRyYWNlLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHZhbHVlLAot
ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAotICAgICAgICAgICAg
ICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKLSAgb3V0cHV0ICs9IFJlc3VsdHNUb1N0cmluZyhtZWFz
dXJlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0cmFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZygpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5pdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0YW50KTsK
LX0KLQotdm9pZCBQcmludFJlc3VsdE1lYW5BbmRFcnJvcihjb25zdCBzdGQ6OnN0cmluZyYgbWVh
c3VyZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBtb2RpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHRyYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbWVhbl9hbmRfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0
ZDo6c3RyaW5nJiB1bml0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBv
cnRhbnQpIHsKLSAgUHJpbnRSZXN1bHRzSW1wbChtZWFzdXJlbWVudCwgbW9kaWZpZXIsIHRyYWNl
LCBtZWFuX2FuZF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAieyIsICJ9IiwgdW5pdHMsIGlt
cG9ydGFudCk7Ci19Ci0KLXZvaWQgQXBwZW5kUmVzdWx0TWVhbkFuZEVycm9yKHN0ZDo6c3RyaW5n
JiBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbWVhc3VyZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6
OnN0cmluZyYgbW9kaWZpZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgdHJhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgbWVhbl9hbmRfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBzdGQ6OnN0cmluZyYgdW5pdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGltcG9ydGFudCkgewotICBvdXRwdXQgKz0gUmVzdWx0c1RvU3RyaW5nKG1lYXN1cmVt
ZW50LCBtb2RpZmllciwgdHJhY2UsIG1lYW5fYW5kX2Vycm9yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJ7IiwgIn0iLCB1bml0cywgaW1wb3J0YW50KTsKLX0KLQotdm9pZCBQcmludFJl
c3VsdExpc3QoY29uc3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAotICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAotICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIHRyYWNlLAotICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk
OjpzdHJpbmcmIHZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiB1bml0cywKLSAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KSB7Ci0gIFByaW50
UmVzdWx0c0ltcGwobWVhc3VyZW1lbnQsIG1vZGlmaWVyLCB0cmFjZSwgdmFsdWVzLAotICAgICAg
ICAgICAgICAgICAgICJbIiwgIl0iLCB1bml0cywgaW1wb3J0YW50KTsKLX0KLQotdm9pZCBBcHBl
bmRSZXN1bHRMaXN0KHN0ZDo6c3RyaW5nJiBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAg
Y29uc3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAotICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgdHJhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHZhbHVlcywKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdW5p
dHMsCi0gICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpIHsKLSAgb3V0cHV0ICs9
IFJlc3VsdHNUb1N0cmluZyhtZWFzdXJlbWVudCwgbW9kaWZpZXIsIHRyYWNlLCB2YWx1ZXMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlsiLCAiXSIsIHVuaXRzLCBpbXBvcnRhbnQpOwot
fQotCi12b2lkIFByaW50U3lzdGVtQ29tbWl0Q2hhcmdlKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0
X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjaGFyZ2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KSB7Ci0gIFByaW50U3lzdGVt
Q29tbWl0Q2hhcmdlKHN0ZG91dCwgdGVzdF9uYW1lLCBjaGFyZ2UsIGltcG9ydGFudCk7Ci19Ci0K
LXZvaWQgUHJpbnRTeXN0ZW1Db21taXRDaGFyZ2UoRklMRSogdGFyZ2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdGVzdF9uYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2hhcmdlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGltcG9ydGFudCkgewotICBmcHJpbnRmKHRhcmdldCwgIiVzIiwgU3lzdGVt
Q29tbWl0Q2hhcmdlVG9TdHJpbmcodGVzdF9uYW1lLCBjaGFyZ2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRhbnQpLmNfc3RyKCkpOwot
fQotCi1zdGQ6OnN0cmluZyBTeXN0ZW1Db21taXRDaGFyZ2VUb1N0cmluZyhjb25zdCBzdGQ6OnN0
cmluZyYgdGVzdF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGNoYXJnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaW1wb3J0YW50KSB7Ci0gIHN0ZDo6c3RyaW5nIHRyYWNlX25hbWUodGVzdF9uYW1lKTsKLSAg
c3RkOjpzdHJpbmcgb3V0cHV0OwotICBBcHBlbmRSZXN1bHQob3V0cHV0LAotICAgICAgICAgICAg
ICAgImNvbW1pdF9jaGFyZ2UiLAotICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcoKSwKLSAgICAg
ICAgICAgICAgICJjYyIgKyB0cmFjZV9uYW1lLAotICAgICAgICAgICAgICAgY2hhcmdlLAotICAg
ICAgICAgICAgICAgImtiIiwKLSAgICAgICAgICAgICAgIGltcG9ydGFudCk7Ci0gIHJldHVybiBv
dXRwdXQ7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZSBwZXJmX3Rlc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wZXJmX3Rlc3RzL3RoaXJkX3BhcnR5L3BlcmYv
cGVyZl90ZXN0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcGVyZl90ZXN0
cy90aGlyZF9wYXJ0eS9wZXJmL3BlcmZfdGVzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzNmUyOTE2YzVmNS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3Rlc3RzL3BlcmZfdGVzdHMvdGhpcmRfcGFydHkvcGVyZi9wZXJmX3Rlc3QuaAorKysg
L2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAxMyBUaGUgQ2hyb21p
dW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLSNpZm5kZWYgVEVTVElOR19QRVJGX1BFUkZfVEVT
VF9IXwotI2RlZmluZSBURVNUSU5HX1BFUkZfUEVSRl9URVNUX0hfCi0KLSNpbmNsdWRlIDxzdHJp
bmc+Ci0KLW5hbWVzcGFjZSBwZXJmX3Rlc3QgewotCi0vLyBQcmludHMgbnVtZXJpY2FsIGluZm9y
bWF0aW9uIHRvIHN0ZG91dCBpbiBhIGNvbnRyb2xsZWQgZm9ybWF0LCBmb3IKLS8vIHBvc3QtcHJv
Y2Vzc2luZy4gfG1lYXN1cmVtZW50fCBpcyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBxdWFudGl0eSBi
ZWluZwotLy8gbWVhc3VyZWQsIGUuZy4gInZtX3BlYWsiOyB8bW9kaWZpZXJ8IGlzIHByb3ZpZGVk
IGFzIGEgY29udmVuaWVuY2UgYW5kCi0vLyB3aWxsIGJlIGFwcGVuZGVkIGRpcmVjdGx5IHRvIHRo
ZSBuYW1lIG9mIHRoZSB8bWVhc3VyZW1lbnR8LCBlLmcuCi0vLyAiX2Jyb3dzZXIiOyB8dHJhY2V8
IGlzIGEgZGVzY3JpcHRpb24gb2YgdGhlIHBhcnRpY3VsYXIgZGF0YSBwb2ludCwgZS5nLgotLy8g
InJlZmVyZW5jZSI7IHx2YWx1ZXwgaXMgdGhlIG1lYXN1cmVkIHZhbHVlOyBhbmQgfHVuaXRzfCBp
cyBhIGRlc2NyaXB0aW9uCi0vLyBvZiB0aGUgdW5pdHMgb2YgbWVhc3VyZSwgZS5nLiAiYnl0ZXMi
LiBJZiB8aW1wb3J0YW50fCBpcyB0cnVlLCB0aGUgb3V0cHV0Ci0vLyBsaW5lIHdpbGwgYmUgc3Bl
Y2lhbGx5IG1hcmtlZCwgdG8gbm90aWZ5IHRoZSBwb3N0LXByb2Nlc3Nvci4gVGhlIHN0cmluZ3MK
LS8vIG1heSBiZSBlbXB0eS4gIFRoZXkgc2hvdWxkIG5vdCBjb250YWluIGFueSBjb2xvbnMgKDop
IG9yIGVxdWFscyBzaWducyAoPSkuCi0vLyBBIHR5cGljYWwgcG9zdC1wcm9jZXNzaW5nIHN0ZXAg
d291bGQgYmUgdG8gcHJvZHVjZSBncmFwaHMgb2YgdGhlIGRhdGEKLS8vIHByb2R1Y2VkIGZvciB2
YXJpb3VzIGJ1aWxkcywgdXNpbmcgdGhlIGNvbWJpbmVkIHxtZWFzdXJlbWVudHwgKyB8bW9kaWZp
ZXJ8Ci0vLyBzdHJpbmcgdG8gc3BlY2lmeSBhIHBhcnRpY3VsYXIgZ3JhcGggYW5kIHRoZSB8dHJh
Y2V8IHRvIGlkZW50aWZ5IGEgdHJhY2UKLS8vIChpLmUuLCBkYXRhIHNlcmllcykgb24gdGhhdCBn
cmFwaC4KLXZvaWQgUHJpbnRSZXN1bHQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAot
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCi0gICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKLSAgICAgICAgICAgICAgICAgc2l6ZV90
IHZhbHVlLAotICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdW5pdHMsCi0gICAg
ICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KTsKLXZvaWQgUHJpbnRSZXN1bHQoY29uc3Qgc3Rk
OjpzdHJpbmcmIG1lYXN1cmVtZW50LAotICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgbW9kaWZpZXIsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwK
LSAgICAgICAgICAgICAgICAgZG91YmxlIHZhbHVlLAotICAgICAgICAgICAgICAgICBjb25zdCBz
dGQ6OnN0cmluZyYgdW5pdHMsCi0gICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KTsKLQot
dm9pZCBBcHBlbmRSZXN1bHQoc3RkOjpzdHJpbmcmIG91dHB1dCwKLSAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwKLSAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0ZDo6c3RyaW5nJiBtb2RpZmllciwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiB0cmFjZSwKLSAgICAgICAgICAgICAgICAgIHNpemVfdCB2YWx1ZSwKLSAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKLSAgICAgICAgICAgICAgICAgIGJvb2wg
aW1wb3J0YW50KTsKLQotLy8gTGlrZSB0aGUgYWJvdmUgdmVyc2lvbiBvZiBQcmludFJlc3VsdCgp
LCBidXQgdGFrZXMgYSBzdGQ6OnN0cmluZyB2YWx1ZQotLy8gaW5zdGVhZCBvZiBhIHNpemVfdC4K
LXZvaWQgUHJpbnRSZXN1bHQoY29uc3Qgc3RkOjpzdHJpbmcmIG1lYXN1cmVtZW50LAotICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCi0gICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKLSAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIHZhbHVlLAotICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdW5pdHMs
Ci0gICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0YW50KTsKLQotdm9pZCBBcHBlbmRSZXN1bHQo
c3RkOjpzdHJpbmcmIG91dHB1dCwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5n
JiBtZWFzdXJlbWVudCwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtb2Rp
ZmllciwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKLSAgICAg
ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB2YWx1ZSwKLSAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKLSAgICAgICAgICAgICAgICAgIGJvb2wgaW1wb3J0
YW50KTsKLQotLy8gTGlrZSBQcmludFJlc3VsdCgpLCBidXQgcHJpbnRzIGEgKG1lYW4sIHN0YW5k
YXJkIGRldmlhdGlvbikgcmVzdWx0IHBhaXIuCi0vLyBUaGUgfDx2YWx1ZXM+fCBzaG91bGQgYmUg
dHdvIGNvbW1hLXNlcGFyYXRlZCBudW1iZXJzLCB0aGUgbWVhbiBhbmQKLS8vIHN0YW5kYXJkIGRl
dmlhdGlvbiAob3Igb3RoZXIgZXJyb3IgbWV0cmljKSBvZiB0aGUgbWVhc3VyZW1lbnQuCi12b2lk
IFByaW50UmVzdWx0TWVhbkFuZEVycm9yKGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFzdXJlbWVudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhY2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZWFuX2Fu
ZF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcm
IHVuaXRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCk7Ci0K
LXZvaWQgQXBwZW5kUmVzdWx0TWVhbkFuZEVycm9yKHN0ZDo6c3RyaW5nJiBvdXRwdXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZp
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJh
Y2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVh
bl9hbmRfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0
cmluZyYgdW5pdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFu
dCk7Ci0KLS8vIExpa2UgUHJpbnRSZXN1bHQoKSwgYnV0IHByaW50cyBhbiBlbnRpcmUgbGlzdCBv
ZiByZXN1bHRzLiBUaGUgfHZhbHVlc3wKLS8vIHdpbGwgZ2VuZXJhbGx5IGJlIGEgbGlzdCBvZiBj
b21tYS1zZXBhcmF0ZWQgbnVtYmVycy4gQSB0eXBpY2FsCi0vLyBwb3N0LXByb2Nlc3Npbmcgc3Rl
cCBtaWdodCBwcm9kdWNlIHBsb3RzIG9mIHRoZWlyIG1lYW4gYW5kIHN0YW5kYXJkCi0vLyBkZXZp
YXRpb24uCi12b2lkIFByaW50UmVzdWx0TGlzdChjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1l
bnQsCi0gICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbW9kaWZpZXIsCi0g
ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdHJhY2UsCi0gICAgICAgICAg
ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWVzLAotICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgc3RkOjpzdHJpbmcmIHVuaXRzLAotICAgICAgICAgICAgICAgICAgICAgYm9vbCBp
bXBvcnRhbnQpOwotCi12b2lkIEFwcGVuZFJlc3VsdExpc3Qoc3RkOjpzdHJpbmcmIG91dHB1dCwK
LSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbWVhc3VyZW1lbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG1vZGlmaWVyLAotICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0cmFjZSwKLSAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdmFsdWVzLAotICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IHN0ZDo6c3RyaW5nJiB1bml0cywKLSAgICAgICAgICAgICAgICAgICAgICBib29sIGlt
cG9ydGFudCk7Ci0KLS8vIFByaW50cyBtZW1vcnkgY29tbWl0IGNoYXJnZSBzdGF0cyBmb3IgdXNl
IGJ5IHBlcmYgZ3JhcGhzLgotdm9pZCBQcmludFN5c3RlbUNvbW1pdENoYXJnZShjb25zdCBzdGQ6
OnN0cmluZyYgdGVzdF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qg
Y2hhcmdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGltcG9ydGFudCk7Ci0K
LXZvaWQgUHJpbnRTeXN0ZW1Db21taXRDaGFyZ2UoRklMRSogdGFyZ2V0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgdGVzdF9uYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2hhcmdlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGltcG9ydGFudCk7Ci0KLXN0ZDo6c3RyaW5nIFN5c3RlbUNvbW1pdENoYXJn
ZVRvU3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X25hbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2hhcmdlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbXBvcnRhbnQpOwotCi19ICAvLyBuYW1lc3BhY2Ug
cGVyZl90ZXN0Ci0KLSNlbmRpZiAgLy8gVEVTVElOR19QRVJGX1BFUkZfVEVTVF9IXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0
cy9Nb2NrRGlhZ25vc3RpY3MuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9w
cmVwcm9jZXNzb3JfdGVzdHMvTW9ja0RpYWdub3N0aWNzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDM5NzYxNzg2OWIxLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL01vY2tEaWFnbm9zdGljcy5oCisr
KyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMiBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9m
IHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0
IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpZm5kZWYgUFJF
UFJPQ0VTU09SX1RFU1RTX01PQ0tfRElBR05PU1RJQ1NfSF8KLSNkZWZpbmUgUFJFUFJPQ0VTU09S
X1RFU1RTX01PQ0tfRElBR05PU1RJQ1NfSF8KLQotI2luY2x1ZGUgImdtb2NrL2dtb2NrLmgiCi0j
aW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL0RpYWdub3N0aWNzQmFzZS5oIgotCi1jbGFz
cyBNb2NrRGlhZ25vc3RpY3MgOiBwdWJsaWMgcHA6OkRpYWdub3N0aWNzCi17Ci0gIHB1YmxpYzoK
LSAgICBNT0NLX01FVEhPRDMocHJpbnQsCi0gICAgICAgIHZvaWQoSUQgaWQsIGNvbnN0IHBwOjpT
b3VyY2VMb2NhdGlvbiYgbG9jLCBjb25zdCBzdGQ6OnN0cmluZyYgdGV4dCkpOwotfTsKLQotI2Vu
ZGlmICAvLyBQUkVQUk9DRVNTT1JfVEVTVFNfTU9DS19ESUFHTk9TVElDU19IXwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9N
b2NrRGlyZWN0aXZlSGFuZGxlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3ByZXByb2Nlc3Nvcl90ZXN0cy9Nb2NrRGlyZWN0aXZlSGFuZGxlci5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3NTYwYWRkZTQxNi4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9Nb2NrRGlyZWN0aXZl
SGFuZGxlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdo
dCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0K
LSNpZm5kZWYgUFJFUFJPQ0VTU09SX1RFU1RTX01PQ0tfRElSRUNUSVZFX0hBTkRMRVJfSF8KLSNk
ZWZpbmUgUFJFUFJPQ0VTU09SX1RFU1RTX01PQ0tfRElSRUNUSVZFX0hBTkRMRVJfSF8KLQotI2lu
Y2x1ZGUgImdtb2NrL2dtb2NrLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL0Rp
cmVjdGl2ZUhhbmRsZXJCYXNlLmgiCi0KLWNsYXNzIE1vY2tEaXJlY3RpdmVIYW5kbGVyIDogcHVi
bGljIHBwOjpEaXJlY3RpdmVIYW5kbGVyCi17Ci0gIHB1YmxpYzoKLSAgICBNT0NLX01FVEhPRDIo
aGFuZGxlRXJyb3IsCi0gICAgICAgIHZvaWQoY29uc3QgcHA6OlNvdXJjZUxvY2F0aW9uJiBsb2Ms
IGNvbnN0IHN0ZDo6c3RyaW5nJiBtc2cpKTsKLQotICAgIE1PQ0tfTUVUSE9ENChoYW5kbGVQcmFn
bWEsCi0gICAgICAgIHZvaWQoY29uc3QgcHA6OlNvdXJjZUxvY2F0aW9uJiBsb2MsCi0gICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCi0gICAgICAgICAgICAgY29uc3Qgc3RkOjpz
dHJpbmcmIHZhbHVlLAotICAgICAgICAgICAgIGJvb2wgc3RkZ2wpKTsKLQotICAgIE1PQ0tfTUVU
SE9EMyhoYW5kbGVFeHRlbnNpb24sCi0gICAgICAgIHZvaWQoY29uc3QgcHA6OlNvdXJjZUxvY2F0
aW9uJiBsb2MsCi0gICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCi0gICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGJlaGF2aW9yKSk7Ci0KLSAgICBNT0NLX01FVEhPRDIo
aGFuZGxlVmVyc2lvbiwKLSAgICAgICAgdm9pZChjb25zdCBwcDo6U291cmNlTG9jYXRpb24mIGxv
YywgaW50IHZlcnNpb24pKTsKLX07Ci0KLSNlbmRpZiAgLy8gUFJFUFJPQ0VTU09SX1RFU1RTX01P
Q0tfRElSRUNUSVZFX0hBTkRMRVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvUHJlcHJvY2Vzc29yVGVzdC5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL1ByZXBy
b2Nlc3NvclRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNGFjZDI4ZGZm
Mi4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3By
ZXByb2Nlc3Nvcl90ZXN0cy9QcmVwcm9jZXNzb3JUZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDI5ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAiUHJlcHJvY2Vzc29yVGVzdC5o
IgotI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgotCi12b2lkIFByZXBy
b2Nlc3NvclRlc3Q6OnByZXByb2Nlc3MoY29uc3QgY2hhciogaW5wdXQsIGNvbnN0IGNoYXIqIGV4
cGVjdGVkKQotewotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmaW5wdXQs
IE5VTEwpKTsKLQotICAgIGludCBsaW5lID0gMTsKLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAg
c3RkOjpzdHJpbmdzdHJlYW0gc3RyZWFtOwotICAgIGRvCi0gICAgewotICAgICAgICBtUHJlcHJv
Y2Vzc29yLmxleCgmdG9rZW4pOwotICAgICAgICBmb3IgKDsgbGluZSA8IHRva2VuLmxvY2F0aW9u
LmxpbmU7ICsrbGluZSkKLSAgICAgICAgewotICAgICAgICAgICAgc3RyZWFtIDw8ICJcbiI7Ci0g
ICAgICAgIH0KLSAgICAgICAgc3RyZWFtIDw8IHRva2VuOwotICAgIH0gd2hpbGUgKHRva2VuLnR5
cGUgIT0gcHA6OlRva2VuOjpMQVNUKTsKLQotICAgIHN0ZDo6c3RyaW5nIGFjdHVhbCA9IHN0cmVh
bS5zdHIoKTsKLSAgICBFWFBFQ1RfU1RSRVEoZXhwZWN0ZWQsIGFjdHVhbC5jX3N0cigpKTsKLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNz
b3JfdGVzdHMvUHJlcHJvY2Vzc29yVGVzdC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9QcmVwcm9jZXNzb3JUZXN0LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGUyNzBmMTI4NWQ0Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL1ByZXByb2Nlc3Nv
clRlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQg
KGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0j
aW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotI2luY2x1ZGUgIk1vY2tEaWFnbm9zdGljcy5oIgot
I2luY2x1ZGUgIk1vY2tEaXJlY3RpdmVIYW5kbGVyLmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvcHJl
cHJvY2Vzc29yL1ByZXByb2Nlc3Nvci5oIgotCi0jaWZuZGVmIFBSRVBST0NFU1NPUl9URVNUU19Q
UkVQUk9DRVNTT1JfVEVTVF9IXwotI2RlZmluZSBQUkVQUk9DRVNTT1JfVEVTVFNfUFJFUFJPQ0VT
U09SX1RFU1RfSF8KLQotY2xhc3MgUHJlcHJvY2Vzc29yVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBQcmVwcm9jZXNzb3JUZXN0KCkgOiBtUHJlcHJvY2Vz
c29yKCZtRGlhZ25vc3RpY3MsICZtRGlyZWN0aXZlSGFuZGxlcikgeyB9Ci0KLSAgICAvLyBQcmVw
cm9jZXNzZXMgdGhlIGlucHV0IHN0cmluZyBhbmQgdmVyaWZpZXMgdGhhdCBpdCBtYXRjaGVzCi0g
ICAgLy8gZXhwZWN0ZWQgb3V0cHV0LgotICAgIHZvaWQgcHJlcHJvY2Vzcyhjb25zdCBjaGFyKiBp
bnB1dCwgY29uc3QgY2hhciogZXhwZWN0ZWQpOwotCi0gICAgTW9ja0RpYWdub3N0aWNzIG1EaWFn
bm9zdGljczsKLSAgICBNb2NrRGlyZWN0aXZlSGFuZGxlciBtRGlyZWN0aXZlSGFuZGxlcjsKLSAg
ICBwcDo6UHJlcHJvY2Vzc29yIG1QcmVwcm9jZXNzb3I7Ci19OwotCi0jZW5kaWYgIC8vIFBSRVBS
T0NFU1NPUl9URVNUU19QUkVQUk9DRVNTT1JfVEVTVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9jaGFyX3Rlc3QuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9j
aGFyX3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDFlZjJjZjhjMS4u
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXBy
b2Nlc3Nvcl90ZXN0cy9jaGFyX3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBA
QAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8Y2xpbWl0
cz4KLQotI2luY2x1ZGUgIlByZXByb2Nlc3NvclRlc3QuaCIKLSNpbmNsdWRlICJjb21waWxlci9w
cmVwcm9jZXNzb3IvVG9rZW4uaCIKLQotY2xhc3MgQ2hhclRlc3QgOiBwdWJsaWMgUHJlcHJvY2Vz
c29yVGVzdCwKLSAgICAgICAgICAgICAgICAgcHVibGljIHRlc3Rpbmc6OldpdGhQYXJhbUludGVy
ZmFjZTxpbnQ+Ci17Ci19OwotCi1zdGF0aWMgY29uc3QgY2hhciBrUHVuY3R1YXRvcnNbXSA9IHsK
LSAgICAnLicsICcrJywgJy0nLCAnLycsICcqJywgJyUnLCAnPCcsICc+JywgJ1snLCAnXScsICco
JywgJyknLCAneycsICd9JywKLSAgICAnXicsICd8JywgJyYnLCAnficsICc9JywgJyEnLCAnOics
ICc7JywgJywnLCAnPyd9Owotc3RhdGljIGNvbnN0IGludCBrTnVtUHVuY3R1YXRvcnMgPQotICAg
IHNpemVvZihrUHVuY3R1YXRvcnMpIC8gc2l6ZW9mKGtQdW5jdHVhdG9yc1swXSk7Ci0KLWJvb2wg
aXNQdW5jdHVhdG9yKGNoYXIgYykKLXsKLSAgICBzdGF0aWMgY29uc3QgY2hhcioga1B1bmN0dWF0
b3JCZWcgPSBrUHVuY3R1YXRvcnM7Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGtQdW5jdHVhdG9y
RW5kID0ga1B1bmN0dWF0b3JzICsga051bVB1bmN0dWF0b3JzOwotICAgIHJldHVybiBzdGQ6OmZp
bmQoa1B1bmN0dWF0b3JCZWcsIGtQdW5jdHVhdG9yRW5kLCBjKSAhPSBrUHVuY3R1YXRvckVuZDsK
LX0KLQotc3RhdGljIGNvbnN0IGNoYXIga1doaXRlc3BhY2VzW10gPSB7JyAnLCAnXHQnLCAnXHYn
LCAnXGYnLCAnXG4nLCAnXHInfTsKLXN0YXRpYyBjb25zdCBpbnQga051bVdoaXRlc3BhY2VzID0K
LSAgICBzaXplb2Yoa1doaXRlc3BhY2VzKSAvIHNpemVvZihrV2hpdGVzcGFjZXNbMF0pOwotCi1i
b29sIGlzV2hpdGVzcGFjZShjaGFyIGMpCi17Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGtXaGl0
ZXNwYWNlQmVnID0ga1doaXRlc3BhY2VzOwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBrV2hpdGVz
cGFjZUVuZCA9IGtXaGl0ZXNwYWNlcyArIGtOdW1XaGl0ZXNwYWNlczsKLSAgICByZXR1cm4gc3Rk
OjpmaW5kKGtXaGl0ZXNwYWNlQmVnLCBrV2hpdGVzcGFjZUVuZCwgYykgIT0ga1doaXRlc3BhY2VF
bmQ7Ci19Ci0KLVRFU1RfUChDaGFyVGVzdCwgSWRlbnRpZmllZCkKLXsKLSAgICBzdGQ6OnN0cmlu
ZyBzdHIoMSwgc3RhdGljX2Nhc3Q8Y2hhcj4oR2V0UGFyYW0oKSkpOwotICAgIGNvbnN0IGNoYXIq
IGNzdHIgPSBzdHIuY19zdHIoKTsKLSAgICBpbnQgbGVuZ3RoID0gMTsKLQotICAgIC8vIE5vdGUg
dGhhdCB3ZSBwYXNzIHRoZSBsZW5ndGggcGFyYW0gYXMgd2VsbCBiZWNhdXNlIHRoZSBpbnZhbGlk
Ci0gICAgLy8gc3RyaW5nIG1heSBjb250YWluIHRoZSBudWxsIGNoYXJhY3Rlci4KLSAgICBBU1NF
UlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJmNzdHIsICZsZW5ndGgpKTsKLQotICAgIGlu
dCBleHBlY3RlZFR5cGUgPSBwcDo6VG9rZW46OkxBU1Q7Ci0gICAgc3RkOjpzdHJpbmcgZXhwZWN0
ZWRWYWx1ZTsKLQotICAgIGlmIChzdHJbMF0gPT0gJyMnKQotICAgIHsKLSAgICAgICAgLy8gTG9u
ZSAnIycgaXMgaWdub3JlZC4KLSAgICB9Ci0gICAgZWxzZSBpZiAoKHN0clswXSA9PSAnXycpIHx8
Ci0gICAgICAgICAgICAgKChzdHJbMF0gPj0gJ2EnKSAmJiAoc3RyWzBdIDw9ICd6JykpIHx8Ci0g
ICAgICAgICAgICAgKChzdHJbMF0gPj0gJ0EnKSAmJiAoc3RyWzBdIDw9ICdaJykpKQotICAgIHsK
LSAgICAgICAgZXhwZWN0ZWRUeXBlID0gcHA6OlRva2VuOjpJREVOVElGSUVSOwotICAgICAgICBl
eHBlY3RlZFZhbHVlID0gc3RyOwotICAgIH0KLSAgICBlbHNlIGlmIChzdHJbMF0gPj0gJzAnICYm
IHN0clswXSA8PSAnOScpCi0gICAgewotICAgICAgICBleHBlY3RlZFR5cGUgPSBwcDo6VG9rZW46
OkNPTlNUX0lOVDsKLSAgICAgICAgZXhwZWN0ZWRWYWx1ZSA9IHN0cjsKLSAgICB9Ci0gICAgZWxz
ZSBpZiAoaXNQdW5jdHVhdG9yKHN0clswXSkpCi0gICAgewotICAgICAgICBleHBlY3RlZFR5cGUg
PSBzdHJbMF07Ci0gICAgICAgIGV4cGVjdGVkVmFsdWUgPSBzdHI7Ci0gICAgfQotICAgIGVsc2Ug
aWYgKGlzV2hpdGVzcGFjZShzdHJbMF0pKQotICAgIHsKLSAgICAgICAgLy8gV2hpdGVzcGFjZSBp
cyBpZ25vcmVkLgotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICAvLyBFdmVyeXRoaW5n
IGVsc2UgaXMgaW52YWxpZC4KLSAgICAgICAgdXNpbmcgdGVzdGluZzo6XzsKLSAgICAgICAgRVhQ
RUNUX0NBTEwobURpYWdub3N0aWNzLAotICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNz
OjpQUF9JTlZBTElEX0NIQVJBQ1RFUiwgXywgc3RyKSk7Ci0gICAgfQotCi0gICAgcHA6OlRva2Vu
IHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci0gICAgRVhQRUNUX0VRKGV4
cGVjdGVkVHlwZSwgdG9rZW4udHlwZSk7Ci0gICAgRVhQRUNUX0VRKGV4cGVjdGVkVmFsdWUsIHRv
a2VuLnRleHQpOwotfTsKLQotLy8gTm90ZSArMSBmb3IgdGhlIG1heC12YWx1ZSBpbiByYW5nZS4g
SXQgaXMgdGhlcmUgYmVjYXVzZSB0aGUgbWF4LXZhbHVlCi0vLyBub3QgaW5jbHVkZWQgaW4gdGhl
IHJhbmdlLgotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQWxsLCBDaGFyVGVzdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlJhbmdlKENIQVJfTUlOLCBDSEFSX01BWCArIDEpKTsK
LQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nl
c3Nvcl90ZXN0cy9jb21tZW50X3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9jb21tZW50X3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkMzcxMmVhNjQ3ZC4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9jb21tZW50X3Rlc3Qu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAoYykg
MjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8g
VXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5z
ZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNs
dWRlICJQcmVwcm9jZXNzb3JUZXN0LmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29y
L1Rva2VuLmgiCi0KLWNsYXNzIENvbW1lbnRUZXN0IDogcHVibGljIFByZXByb2Nlc3NvclRlc3Qs
Ci0gICAgICAgICAgICAgICAgICAgIHB1YmxpYyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8
Y29uc3QgY2hhcio+Ci17Ci19OwotCi1URVNUX1AoQ29tbWVudFRlc3QsIENvbW1lbnRJZ25vcmVk
KQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9IEdldFBhcmFtKCk7Ci0KLSAgICBBU1NFUlRfVFJV
RShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgMCkpOwotCi0gICAgcHA6OlRva2VuIHRva2Vu
OwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci0gICAgRVhQRUNUX0VRKHBwOjpUb2tl
bjo6TEFTVCwgdG9rZW4udHlwZSk7Ci19Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKExpbmVD
b21tZW50LCBDb21tZW50VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZh
bHVlcygiLy9mb29cbiIsIC8vIFdpdGggbmV3bGluZS4KLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiLy9mb28iLCAgIC8vIFdpdGhvdXQgbmV3bGluZS4KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy8qKi8iLCAgIC8vIE5lc3RlZCBibG9j
ayBjb21tZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvLy8v
IiwgICAgLy8gTmVzdGVkIGxpbmUgY29tbWVudC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiLy9cIiIpKTsgIC8vIEludmFsaWQgY2hhcmFjdGVyLiAgCi0KLUlOU1RB
TlRJQVRFX1RFU1RfQ0FTRV9QKEJsb2NrQ29tbWVudCwgQ29tbWVudFRlc3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXMoIi8qZm9vKi8iLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIvKmZvb1xuKi8iLCAvLyBXaXRoIG5ld2xpbmUuCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8qLy8qLyIsICAgIC8vIE5l
c3RlZCBsaW5lIGNvbW1lbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIi8qLyoqLyIsICAgIC8vIE5lc3RlZCBibG9jayBjb21tZW50LgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIvKioqLyIsICAgICAvLyBXaXRoIGxvbmUgJyonLgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvKlwiKi8iKSk7ICAvLyBJ
bnZhbGlkIGNoYXJhY3Rlci4KLQotY2xhc3MgQmxvY2tDb21tZW50VGVzdCA6IHB1YmxpYyBQcmVw
cm9jZXNzb3JUZXN0Ci17Ci19OwotCi1URVNUX0YoQmxvY2tDb21tZW50VGVzdCwgQ29tbWVudFJl
cGxhY2VkV2l0aFNwYWNlKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIvKmZvbyovYmFyIjsK
LQotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7Ci0KLSAg
ICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLSAgICBF
WFBFQ1RfRVEocHA6OlRva2VuOjpJREVOVElGSUVSLCB0b2tlbi50eXBlKTsKLSAgICBFWFBFQ1Rf
RVEoImJhciIsIHRva2VuLnRleHQpOwotICAgIEVYUEVDVF9UUlVFKHRva2VuLmhhc0xlYWRpbmdT
cGFjZSgpKTsKLX0KLQotVEVTVF9GKEJsb2NrQ29tbWVudFRlc3QsIFVudGVybWluYXRlZENvbW1l
bnQpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIi8qZm9vIjsKLQotICAgIEFTU0VSVF9UUlVF
KG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7Ci0KLSAgICB1c2luZyB0ZXN0aW5nOjpf
OwotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQ
UF9FT0ZfSU5fQ09NTUVOVCwgXywgXykpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1Q
cmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2RlZmluZV90ZXN0LmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvZGVmaW5l
X3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MTdhMDM5ZDdmNy4uMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nl
c3Nvcl90ZXN0cy9kZWZpbmVfdGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NTcgKzAsMCBA
QAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJQcmVwcm9jZXNzb3JUZXN0LmgiCi0jaW5jbHVk
ZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgiCi0KLXVzaW5nIHRlc3Rpbmc6Ol87Ci0K
LWNsYXNzIERlZmluZVRlc3QgOiBwdWJsaWMgUHJlcHJvY2Vzc29yVGVzdAotewotfTsKLQotVEVT
VF9GKERlZmluZVRlc3QsIE5vbklkZW50aWZpZXIpCi17Ci0gICAgY29uc3QgY2hhciogaW5wdXQg
PSAiI2RlZmluZSAyIGZvb1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgIjJcbiI7Ci0gICAg
Y29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAi
MlxuIjsKLQotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBw
cmludChwcDo6RGlhZ25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU4sCi0gICAgICAgICAgICAg
ICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLAotICAgICAgICAgICAgICAgICAgICAg
ICIyIikpOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfTsKLQotVEVTVF9G
KERlZmluZVRlc3QsIFJlZGVmaW5lUHJlZGVmaW5lZCkKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1
dCA9ICIjZGVmaW5lIF9fTElORV9fIDEwXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiX19M
SU5FX19cbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIF9fRklMRV9fIDIwXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAiX19GSUxFX19cbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICIjZGVmaW5lIF9fVkVSU0lPTl9fIDIwMFxuIgotICAgICAgICAgICAgICAgICAgICAg
ICAgIl9fVkVSU0lPTl9fXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBHTF9F
UyAwXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiR0xfRVNcbiI7Ci0gICAgY29uc3QgY2hh
ciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiMlxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IjBcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIxMDBcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIxXG4iOwotCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0
aWNzLAotICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfTUFDUk9fUFJF
REVGSU5FRF9SRURFRklORUQsCi0gICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0
aW9uKDAsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICJfX0xJTkVfXyIpKTsKLSAgICBFWFBF
Q1RfQ0FMTChtRGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0
aWNzOjpQUF9NQUNST19QUkVERUZJTkVEX1JFREVGSU5FRCwKLSAgICAgICAgICAgICAgICAgICAg
ICBwcDo6U291cmNlTG9jYXRpb24oMCwgMyksCi0gICAgICAgICAgICAgICAgICAgICAgIl9fRklM
RV9fIikpOwotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBw
cmludChwcDo6RGlhZ25vc3RpY3M6OlBQX01BQ1JPX1BSRURFRklORURfUkVERUZJTkVELAotICAg
ICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCA1KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAiX19WRVJTSU9OX18iKSk7Ci0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNz
LAotICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfTUFDUk9fUFJFREVG
SU5FRF9SRURFRklORUQsCi0gICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9u
KDAsIDcpLAotICAgICAgICAgICAgICAgICAgICAgICJHTF9FUyIpKTsKLQotICAgIHByZXByb2Nl
c3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIFJlc2VydmVkVW5k
ZXJTY29yZTEpCi17Ci0gICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBfX2ZvbyBiYXJc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICJfX2Zvb1xuIjsKLSAgICBjb25zdCBjaGFyKiBl
eHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYXJcbiI7Ci0KLSAg
ICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfV0FS
TklOR19NQUNST19OQU1FX1JFU0VSVkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiX19mb28iKSk7Ci0KLSAgICBwcmVwcm9j
ZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBSZXNlcnZlZFVu
ZGVyU2NvcmUyKQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vX19iYXIg
YmF6XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vX19iYXJcbiI7Ci0gICAgY29uc3Qg
Y2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiYmF6XG4i
OwotCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6
OlBQX1dBUk5JTkdfTUFDUk9fTkFNRV9SRVNFUlZFRCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgImZvb19fYmFyIikpOwotCi0g
ICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwg
UmVzZXJ2ZWRHTCkKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIEdMX2ZvbyBi
YXJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICJHTF9mb29cbiI7Ci0gICAgY29uc3QgY2hh
ciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiR0xfZm9vXG4i
OwotCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgIHByaW50
KHBwOjpEaWFnbm9zdGljczo6UFBfTUFDUk9fTkFNRV9SRVNFUlZFRCwKLSAgICAgICAgICAgICAg
ICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksCi0gICAgICAgICAgICAgICAgICAgICAg
IkdMX2ZvbyIpKTsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVT
VF9GKERlZmluZVRlc3QsIE9ialJlZGVmaW5lVmFsaWQpCi17Ci0gICAgY29uc3QgY2hhciogaW5w
dXQgPSAiI2RlZmluZSBmb28gKDEtMSlcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIjZGVm
aW5lIGZvbyAvKiB3aGl0ZXNwYWNlICovICgxLTEpIC8qIG90aGVyICovIFxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgImZvb1xuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIoMS0xKVxuIjsKLSAgICAvLyBObyBlcnJvciBvciB3YXJuaW5nLgotICAgIHVzaW5nIHRl
c3Rpbmc6Ol87Ci0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSku
VGltZXMoMCk7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1Rf
RihEZWZpbmVUZXN0LCBPYmpSZWRlZmluZUludmFsaWQpCi17Ci0gICAgY29uc3QgY2hhciogaW5w
dXQgPSAiI2RlZmluZSBmb28gKDApXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmlu
ZSBmb28gKDEtMSlcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICJmb29cbiI7Ci0gICAgY29u
c3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAiKDApXG4iOwotCi0gICAgRVhQRUNUX0NBTEwo
bURpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBf
TUFDUk9fUkVERUZJTkVELAotICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlv
bigwLCAyKSwKLSAgICAgICAgICAgICAgICAgICAgICAiZm9vIikpOwotCi0gICAgcHJlcHJvY2Vz
cyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgRnVuY1JlZGVmaW5l
VmFsaWQpCi17Ci0gICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28oYSkgKCBhIClc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGZvbyggYSApKCAvKiB3aGl0ZXNw
YWNlICovIGEgLyogb3RoZXIgKi8gKVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvbyhi
KVxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIoIGIgKVxuIjsKLSAg
ICAvLyBObyBlcnJvciBvciB3YXJuaW5nLgotICAgIHVzaW5nIHRlc3Rpbmc6Ol87Ci0gICAgRVhQ
RUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSkuVGltZXMoMCk7Ci0KLSAgICBw
cmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBGdW5j
UmVkZWZpbmVJbnZhbGlkKQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9v
KGIpICggYSApXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBmb28oYikgKCBi
IClcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICJmb28oMSlcbiI7Ci0gICAgY29uc3QgY2hh
ciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAiKCBhIClcbiI7Ci0KLSAgICBFWFBFQ1RfQ0FMTChtRGlh
Z25vc3RpY3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9NQUNS
T19SRURFRklORUQsCi0gICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAs
IDIpLAotICAgICAgICAgICAgICAgICAgICAgICJmb28iKSk7Ci0KLSAgICBwcmVwcm9jZXNzKGlu
cHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBPYmpCYXNpYykKLXsKLSAg
ICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyAxXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAiZm9vXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIjFcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBl
Y3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBPYmpFbXB0eSkKLXsKLSAgICBjb25zdCBj
aGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvb1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZv
b1xuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0K
LVRFU1RfRihEZWZpbmVUZXN0LCBPYmpDaGFpbikKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9
ICIjZGVmaW5lIGZvbyAxXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBiYXIg
Zm9vXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiYmFyXG4iOwotICAgIGNvbnN0IGNoYXIq
IGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIjFcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBl
Y3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBPYmpDaGFpblJldmVyc2UpCi17Ci0gICAg
Y29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBiYXIgZm9vXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAiI2RlZmluZSBmb28gMVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgImJhclxu
IjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIxXG4iOwotCi0gICAgcHJl
cHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgT2JqUmVj
dXJzaXZlKQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vIGJhclxuIgot
ICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgYmFyIGJhelxuIgotICAgICAgICAgICAg
ICAgICAgICAgICAgIiNkZWZpbmUgYmF6IGZvb1xuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ImZvb1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgImJhclxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgImJhelxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb29cbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJiYXJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYXpcbiI7Ci0K
LSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0
LCBPYmpDb21wb3NpdGVDaGFpbikKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5l
IGZvbyAxXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBiYXIgYSBmb29cbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICJiYXJcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0
ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAiYSAxXG4iOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQp
OwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgT2JqQ29tcG9zaXRlQ2hhaW5SZXZlcnNlKQotewot
ICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgYmFyIGEgZm9vXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAiI2RlZmluZSBmb28gMVxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ImJhclxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJhIDFcbiI7Ci0K
LSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0
LCBPYmpDb21wb3NpdGVSZWN1cnNpdmUpCi17Ci0gICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2Rl
ZmluZSBmb28gYSBiYXJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGJhciBi
IGJhelxuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgYmF6IGMgZm9vXG4iCi0g
ICAgICAgICAgICAgICAgICAgICAgICAiZm9vXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAi
YmFyXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiYmF6XG4iOwotICAgIGNvbnN0IGNoYXIq
IGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgImEg
YiBjIGZvb1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgImIgYyBhIGJhclxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImMgYSBiIGJhelxuIjsKLQotICAgIHByZXByb2Nlc3Mo
aW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIE9iakNoYWluU2VsZlJl
Y3Vyc2l2ZSkKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyBmb29cbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGJhciBmb29cbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICJiYXJcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZm9vXG4iOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNU
X0YoRGVmaW5lVGVzdCwgT2JqZWN0TGlrZVdpdGhQYXJlbnMpCi17Ci0gICAgY29uc3QgY2hhciog
aW5wdXQgPSAiI2RlZmluZSBmb28gKCkxXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9v
KClcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGJhciAoKTJcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICJiYXIoKVxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9
ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIoKTEoKVxuIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIigpMigpXG4i
OwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5l
VGVzdCwgRnVuY0VtcHR5KQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9v
KClcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICJmb28oKVxuIjsKLSAgICBjb25zdCBjaGFy
KiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7Ci0KLSAg
ICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBG
dW5jTm9BcmdzKQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vKCkgYmFy
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vKClcbiI7Ci0gICAgY29uc3QgY2hhciog
ZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFyXG4iOwotCi0g
ICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwg
RnVuY09uZUFyZ1VudXNlZCkKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZv
byh4KSAxXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vKGJhcilcbiI7Ci0gICAgY29u
c3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiMVxu
IjsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmlu
ZVRlc3QsIEZ1bmNUd29BcmdzVW51c2VkKQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNk
ZWZpbmUgZm9vKHgseSkgMVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvbyhiYXIsYmF6
KVxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIxXG4iOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQot
Ci1URVNUX0YoRGVmaW5lVGVzdCwgRnVuY09uZUFyZykKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1
dCA9ICIjZGVmaW5lIGZvbyh4KSAoKHgpKzEpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAi
Zm9vKGJhcilcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAiKChiYXIpKzEpXG4iOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwg
ZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgRnVuY1R3b0FyZ3MpCi17Ci0gICAg
Y29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28oeCx5KSAoKHgpKih5KSlcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICJmb28oYmFyLGJheilcbiI7Ci0gICAgY29uc3QgY2hhciogZXhw
ZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiKChiYXIpKihiYXopKVxu
IjsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmlu
ZVRlc3QsIEZ1bmNFbXB0eUFyZ3MpCi17Ci0gICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmlu
ZSB6ZXJvKCkgcGFzc1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgb25lKHgp
IHBhc3NcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIHR3byh4LHkpIHBhc3Nc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICJ6ZXJvKClcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICJvbmUoKVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgInR3bygsKVxuIjsKLSAg
ICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwYXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlu
cHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBGdW5jTWFjcm9Bc1BhcmFt
KQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgeCAwXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAiI2RlZmluZSBmb28oeCkgeFxuIgotICAgICAgICAgICAgICAgICAgICAg
ICAgImZvbygxKVxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIxXG4i
OwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5l
VGVzdCwgRnVuY09uZUFyZ011bHRpKQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZp
bmUgZm9vKHgpICh4KVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvbyh0aGlzIGlzIGEg
bXVsdGktd29yZCBhcmd1bWVudClcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAiKHRoaXMgaXMgYSBtdWx0aS13b3JkIGFyZ3Vt
ZW50KVxuIjsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9G
KERlZmluZVRlc3QsIEZ1bmNUd29BcmdzTXVsdGkpCi17Ci0gICAgY29uc3QgY2hhciogaW5wdXQg
PSAiI2RlZmluZSBmb28oeCx5KSB4LHR3byBmaXNoLHJlZCBmaXNoLHlcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICJmb28ob25lIGZpc2gsIGJsdWUgZmlzaClcbiI7Ci0gICAgY29uc3QgY2hh
ciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAib25lIGZpc2gs
dHdvIGZpc2gscmVkIGZpc2gsYmx1ZSBmaXNoXG4iOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwg
ZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgRnVuY0NvbXBvc2UpCi17Ci0gICAg
Y29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBiYXIoeCkgKDErKHgpKVxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgIiNkZWZpbmUgZm9vKHkpICgyKih5KSlcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICJmb28oYmFyKDMpKVxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICIoMiooKDErKDMpKSkpXG4iOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0
ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgRnVuY0FyZ1dpdGhQYXJlbnMpCi17Ci0gICAg
Y29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28oeCkgKHgpXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAiZm9vKGFyZ3VtZW50KHdpdGggcGFyZW5zKSBGVFcpXG4iOwotICAgIGNvbnN0
IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIihhcmd1
bWVudCh3aXRoIHBhcmVucykgRlRXKVxuIjsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVj
dGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNNYWNyb0FzTm9uTWFjcm8pCi17Ci0g
ICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28oYmFyKSBiYXJcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICJmb28gYmFyXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0g
IlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvbyBiYXJcbiI7Ci0KLSAgICBwcmVw
cm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBGdW5jRXh0
cmFOZXdsaW5lcykKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyhhKSAo
YSlcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICJmb29cbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICIoXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiMVxuIgotICAgICAgICAgICAg
ICAgICAgICAgICAgIilcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAiKDEpXG4iOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQot
Ci1URVNUX0YoRGVmaW5lVGVzdCwgQ2hhaW5PYmpUb0Z1bmMpCi17Ci0gICAgY29uc3QgY2hhciog
aW5wdXQgPSAiI2RlZmluZSBmb28oKSBwYXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAi
I2RlZmluZSBiYXIgZm9vKClcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICJiYXJcbiI7Ci0g
ICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIjsKLQotICAgIHByZXBy
b2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIENoYWluT2Jq
VG9Ob25GdW5jKQotewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgcGFzcygpIGZh
aWxcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGJhciBwYXNzXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAiYmFyXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0g
IlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInBhc3NcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19
Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBDaGFpbk9ialRvRnVuY1dpdGhBcmdzKQotewotICAgIGNv
bnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vKGZhaWwpIGZhaWxcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICIjZGVmaW5lIGJhciBmb28ocGFzcylcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICJiYXJcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFz
c1xuIjsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERl
ZmluZVRlc3QsIENoYWluT2JqVG9GdW5jQ29tcG9zZSkKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1
dCA9ICIjZGVmaW5lIGJheihmYWlsKSBmYWlsXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAi
I2RlZmluZSBiYXIoZmFpbCkgZmFpbFxuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZp
bmUgZm9vIGJhcihiYXoocGFzcykpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vXG4i
OwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInBhc3NcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3Rl
ZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBDaGFpbk9ialRvRnVuY1BhcmVuc0luVGV4dDEp
Ci17Ci0gICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmYWlsKCkgcGFzc1xuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgZm9vIGZhaWxcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICJmb28oKVxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwYXNzXG4iOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNU
X0YoRGVmaW5lVGVzdCwgQ2hhaW5PYmpUb0Z1bmNQYXJlbnNJblRleHQyKQotewotICAgIGNvbnN0
IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgYmFyIHdpdGgsZW1iZWRkZWQsY29tbWFzXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBmdW5jKHgpIHBhc3NcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICIjZGVmaW5lIGZvbyBmdW5jXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAiZm9vKGJhcilcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIjsKLQotICAgIHByZXByb2Nlc3Mo
aW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIENoYWluT2JqVG9GdW5j
TXVsdGlMZXZlbCkKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyh4KSBw
YXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBiYXIgZm9vXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBiYXogYmFyXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAiI2RlZmluZSBqb2UgYmF6XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiam9l
IChmYWlsKVxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwYXNzXG4iOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNU
X0YoRGVmaW5lVGVzdCwgT2JqVG9GdW5jUmVjdXJzaXZlKQotewotICAgIGNvbnN0IGNoYXIqIGlu
cHV0ID0gIiNkZWZpbmUgQShhLGIpIEIoYSxiKVxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
IiNkZWZpbmUgQyBBKDAsQylcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICJDXG4iOwotICAg
IGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIkIoMCxDKVxuIjsKLQotICAgIHByZXBy
b2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIENoYWluRnVu
Y1RvRnVuY0NvbXBvc2UpCi17Ci0gICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBiYXoo
ZmFpbCkgZmFpbFxuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgYmFyKGZhaWwp
IGZhaWxcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGZvbygpIGJhcihiYXoo
cGFzcykpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vKClcbiI7Ci0gICAgY29uc3Qg
Y2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAicGFzc1xuIjsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVT
VF9GKERlZmluZVRlc3QsIEZ1bmNTZWxmUmVjdXJzaXZlKQotewotICAgIGNvbnN0IGNoYXIqIGlu
cHV0ID0gIiNkZWZpbmUgZm9vKGEpIGZvbygyKihhKSlcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICJmb28oMylcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZm9vKDIqKDMpKVxuIjsKLQotICAgIHByZXByb2Nlc3MoaW5w
dXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNTZWxmQ29tcG9zZSkK
LXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyhhKSBmb28oMiooYSkpXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vKGZvbygzKSlcbiI7Ci0gICAgY29uc3QgY2hh
ciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9vKDIqKGZv
bygyKigzKSkpKVxuIjsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQot
VEVTVF9GKERlZmluZVRlc3QsIEZ1bmNTZWxmQ29tcG9zZU5vbkZ1bmMpCi17Ci0gICAgY29uc3Qg
Y2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28oYmFyKSBiYXJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICJmb28oZm9vKVxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJmb29cbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0
LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBGdW5jU2VsZkNvbXBvc2VOb25G
dW5jTXVsdGlUb2tlbkFyZykKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZv
byhiYXIpIGJhclxuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvbygxK2ZvbylcbiI7Ci0g
ICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAiMStmb29cbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRF
U1RfRihEZWZpbmVUZXN0LCBGaW5hbGl6ZVVuZXhwYW5kZWRNYWNybykKLXsKLSAgICBjb25zdCBj
aGFyKiBpbnB1dCA9ICIjZGVmaW5lIGV4cGFuZCh4KSBleHBhbmQoeCBvbmNlKVxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgIiNkZWZpbmUgZm9vKHgpIHhcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICJmb28oZXhwYW5kKGp1c3QpKVxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9
ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJleHBhbmQoanVzdCBvbmNlKVxuIjsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQs
IGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIEZ1bmNBcmdXaXRoQ29tbWFzKQot
ewotICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vKHgpIHBhc3NcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICJmb28oYXJndW1lbnQgKHdpdGgsZW1iZWRkZWQsIGNvbW1hcykg
LS0gYmF6KVxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJwYXNzXG4iOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0
ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgRnVuY0FyZ09iak1hcm9XaXRoQ29tbWEpCi17
Ci0gICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBmb28oYSkgKGEpXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICAiI2RlZmluZSBiYXIgdHdvLHdvcmRzXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAiZm9vKGJhcilcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAiKHR3byx3b3JkcylcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7
Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBGdW5jTGVmdFBhcmVuSW5NYWNyb1JpZ2h0UGFyZW5J
blRleHQpCi17Ci0gICAgY29uc3QgY2hhciogaW5wdXQgPSAiI2RlZmluZSBiYXIoYSkgYSoyXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSBmb28gYmFyKFxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgImZvbyBiKVxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJiKjJcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0K
LVRFU1RfRihEZWZpbmVUZXN0LCBSZXBlYXRlZEFyZykKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1
dCA9ICIjZGVmaW5lIGRvdWJsZSh4KSB4IHhcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICJk
b3VibGUoMSlcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAiMSAxXG4iOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0
ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgRnVuY01pc3NpbmdSaWdodFBhcmVuKQotewot
ICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vKHgpICgyKih4KSlcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICJmb28oM1xuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9
ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7Ci0KLSAgICBFWFBFQ1RfQ0FM
TChtRGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQ
UF9NQUNST19VTlRFUk1JTkFURURfSU5WT0NBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICBw
cDo6U291cmNlTG9jYXRpb24oMCwgMiksCi0gICAgICAgICAgICAgICAgICAgICAgImZvbyIpKTsK
LQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKERlZmluZVRl
c3QsIEZ1bmNJbmNvcnJlY3RBcmdDb3VudCkKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIj
ZGVmaW5lIGZvbyh4LHkpICgoeCkrKHkpKVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZv
bygpXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vKDEpXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAiZm9vKDEsMiwzKVxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7Ci0KLSAgICBFWFBF
Q1RfQ0FMTChtRGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0
aWNzOjpQUF9NQUNST19UT09fRkVXX0FSR1MsCi0gICAgICAgICAgICAgICAgICAgICAgcHA6OlNv
dXJjZUxvY2F0aW9uKDAsIDIpLAotICAgICAgICAgICAgICAgICAgICAgICJmb28iKSk7Ci0gICAg
RVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFn
bm9zdGljczo6UFBfTUFDUk9fVE9PX0ZFV19BUkdTLAotICAgICAgICAgICAgICAgICAgICAgIHBw
OjpTb3VyY2VMb2NhdGlvbigwLCAzKSwKLSAgICAgICAgICAgICAgICAgICAgICAiZm9vIikpOwot
ICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBwcmludChwcDo6
RGlhZ25vc3RpY3M6OlBQX01BQ1JPX1RPT19NQU5ZX0FSR1MsCi0gICAgICAgICAgICAgICAgICAg
ICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDQpLAotICAgICAgICAgICAgICAgICAgICAgICJmb28i
KSk7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZp
bmVUZXN0LCBVbmRlZikKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9ICIjZGVmaW5lIGZvbyAx
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vXG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgICAiI3VuZGVmIGZvb1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvb1xuIjsKLSAg
ICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIxXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZm9vXG4iOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwot
fQotCi1URVNUX0YoRGVmaW5lVGVzdCwgVW5kZWZQcmVkZWZpbmVkKQotewotICAgIGNvbnN0IGNo
YXIqIGlucHV0ID0gIiN1bmRlZiBfX0xJTkVfX1xuIgotICAgICAgICAgICAgICAgICAgICAgICAg
Il9fTElORV9fXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiI3VuZGVmIF9fRklMRV9fXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAiX19GSUxFX19cbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICIjdW5kZWYgX19WRVJTSU9OX19cbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICJf
X1ZFUlNJT05fX1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgIiN1bmRlZiBHTF9FU1xuIgot
ICAgICAgICAgICAgICAgICAgICAgICAgIkdMX0VTXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVj
dGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIjJcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICIwXG4iCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAiMTAwXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAiMVxuIjsKLQotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAg
ICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX01BQ1JPX1BSRURFRklORURf
VU5ERUZJTkVELAotICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAx
KSwKLSAgICAgICAgICAgICAgICAgICAgICAiX19MSU5FX18iKSk7Ci0gICAgRVhQRUNUX0NBTEwo
bURpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBf
TUFDUk9fUFJFREVGSU5FRF9VTkRFRklORUQsCi0gICAgICAgICAgICAgICAgICAgICAgcHA6OlNv
dXJjZUxvY2F0aW9uKDAsIDMpLAotICAgICAgICAgICAgICAgICAgICAgICJfX0ZJTEVfXyIpKTsK
LSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6
OkRpYWdub3N0aWNzOjpQUF9NQUNST19QUkVERUZJTkVEX1VOREVGSU5FRCwKLSAgICAgICAgICAg
ICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgNSksCi0gICAgICAgICAgICAgICAgICAg
ICAgIl9fVkVSU0lPTl9fIikpOwotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAg
ICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX01BQ1JPX1BSRURFRklORURfVU5E
RUZJTkVELAotICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCA3KSwK
LSAgICAgICAgICAgICAgICAgICAgICAiR0xfRVMiKSk7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0
LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBVbmRlZlJlZGVmaW5lKQotewot
ICAgIGNvbnN0IGNoYXIqIGlucHV0ID0gIiNkZWZpbmUgZm9vIDFcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICJmb29cbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICIjdW5kZWYgZm9vXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAiZm9vXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAiI2RlZmluZSBmb28gMlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgImZvb1xuIjsKLSAg
ICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICIxXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAiZm9vXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAiMlxuIjsKLQotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4
cGVjdGVkKTsKLX0KLQotLy8gRXhhbXBsZSBmcm9tIEM5OSBzdGFuZGFyZCBzZWN0aW9uIDYuMTAu
My41IFNjb3BlIG9mIG1hY3JvIGRlZmluaXRpb25zCi1URVNUX0YoRGVmaW5lVGVzdCwgQzk5RXhh
bXBsZSkKLXsKLSAgICBjb25zdCBjaGFyKiBpbnB1dCA9Ci0gICAgICAgICIjZGVmaW5lIHggICAg
MyAgICAgICAgICBcbiIKLSAgICAgICAgIiNkZWZpbmUgZihhKSBmKHggKiAoYSkpIFxuIgotICAg
ICAgICAiI3VuZGVmICB4ICAgICAgICAgICAgICAgXG4iCi0gICAgICAgICIjZGVmaW5lIHggICAg
MiAgICAgICAgICBcbiIKLSAgICAgICAgIiNkZWZpbmUgZyAgICBmICAgICAgICAgIFxuIgotICAg
ICAgICAiI2RlZmluZSB6ICAgIHpbMF0gICAgICAgXG4iCi0gICAgICAgICIjZGVmaW5lIGggICAg
Zyh+ICAgICAgICBcbiIKLSAgICAgICAgIiNkZWZpbmUgbShhKSBhKHcpICAgICAgIFxuIgotICAg
ICAgICAiI2RlZmluZSB3ICAgIDAsMSAgICAgICAgXG4iCi0gICAgICAgICIjZGVmaW5lIHQoYSkg
YSAgICAgICAgICBcbiIKLSAgICAgICAgIiNkZWZpbmUgcCgpICBpbnQgICAgICAgIFxuIgotICAg
ICAgICAiI2RlZmluZSBxKHgpIHggICAgICAgICAgXG4iCi0gICAgICAgICIgICAgICAgICAgICAg
ICAgICAgICAgICBcbiIKLSAgICAgICAgImYoeSsxKSArIGYoZih6KSkgJSB0KHQoZykoMCkgKyB0
KSgxKTtcbiIKLSAgICAgICAgImcoeCsoMyw0KS13KSB8IGggNSkgJiBtXG4iCi0gICAgICAgICIg
ICAgKGYpXm0obSk7XG4iCi0gICAgICAgICJwKCkgaVtxKCldID0geyBxKDEpLCAyMywgNCwgNSwg
fTtcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAKLSAgICAgICAgIlxuIgotICAgICAg
ICAiXG4iCi0gICAgICAgICJcbiIKLSAgICAgICAgIlxuIgotICAgICAgICAiXG4iCi0gICAgICAg
ICJcbiIKLSAgICAgICAgIlxuIgotICAgICAgICAiXG4iCi0gICAgICAgICJcbiIKLSAgICAgICAg
IlxuIgotICAgICAgICAiXG4iCi0gICAgICAgICJcbiIKLSAgICAgICAgIlxuIgotICAgICAgICAi
ZigyICogKHkrMSkpICsgZigyICogKGYoMiAqICh6WzBdKSkpKSAlIGYoMiAqICgwKSkgKyB0KDEp
O1xuIgotICAgICAgICAiZigyICogKDIrKDMsNCktMCwxKSkgfCBmKDIgKiAofiA1KSkgJlxuIgot
ICAgICAgICAiIGYoMiAqICgwLDEpKV5tKDAsMSk7XG4iCi0gICAgICAgICJpbnQgaVtdID0geyAx
LCAyMywgNCwgNSwgfTtcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19
Ci0KLVRFU1RfRihEZWZpbmVUZXN0LCBQcmVkZWZpbmVkX0dMX0VTKQotewotICAgIGNvbnN0IGNo
YXIqIGlucHV0ID0gIkdMX0VTXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIjFcbiI7
Ci0KLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihEZWZpbmVU
ZXN0LCBQcmVkZWZpbmVkX1ZFUlNJT04pCi17Ci0gICAgY29uc3QgY2hhciogaW5wdXQgPSAiX19W
RVJTSU9OX19cbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiMTAwXG4iOwotCi0gICAg
cHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRGVmaW5lVGVzdCwgUHJl
ZGVmaW5lZF9MSU5FMSkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiXG5cbl9fTElORV9fIjsK
LSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgTlVMTCkpOwotCi0g
ICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci0gICAg
RVhQRUNUX0VRKHBwOjpUb2tlbjo6Q09OU1RfSU5ULCB0b2tlbi50eXBlKTsKLSAgICBFWFBFQ1Rf
RVEoIjMiLCB0b2tlbi50ZXh0KTsKLX0KLQotVEVTVF9GKERlZmluZVRlc3QsIFByZWRlZmluZWRf
TElORTIpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNsaW5lIDEwXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgIl9fTElORV9fXG4iOwotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3Iu
aW5pdCgxLCAmc3RyLCBOVUxMKSk7Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgbVByZXBy
b2Nlc3Nvci5sZXgoJnRva2VuKTsKLSAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpDT05TVF9JTlQs
IHRva2VuLnR5cGUpOwotICAgIEVYUEVDVF9FUSgiMTAiLCB0b2tlbi50ZXh0KTsKLX0KLQotVEVT
VF9GKERlZmluZVRlc3QsIFByZWRlZmluZWRfRklMRTEpCi17Ci0gICAgY29uc3QgY2hhciogY29u
c3Qgc3RyW10gPSB7IiIsICIiLCAiX19GSUxFX18ifTsKLSAgICBBU1NFUlRfVFJVRShtUHJlcHJv
Y2Vzc29yLmluaXQoMywgc3RyLCBOVUxMKSk7Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAg
bVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLSAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpDT05T
VF9JTlQsIHRva2VuLnR5cGUpOwotICAgIEVYUEVDVF9FUSgiMiIsIHRva2VuLnRleHQpOwotfQot
Ci1URVNUX0YoRGVmaW5lVGVzdCwgUHJlZGVmaW5lZF9GSUxFMikKLXsKLSAgICBjb25zdCBjaGFy
KiBjb25zdCBzdHJbXSA9IHsiI2xpbmUgMTAgMjBcbiIsICJfX0ZJTEVfXyJ9OwotICAgIEFTU0VS
VF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgyLCBzdHIsIE5VTEwpKTsKLQotICAgIHBwOjpUb2tl
biB0b2tlbjsKLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotICAgIEVYUEVDVF9FUShw
cDo6VG9rZW46OkNPTlNUX0lOVCwgdG9rZW4udHlwZSk7Ci0gICAgRVhQRUNUX0VRKCIyMSIsIHRv
a2VuLnRleHQpOwotfQotCi0vLyBEZWZpbmVkIG9wZXJhdG9yIHByb2R1Y2VkIGJ5IG1hY3JvIGV4
cGFuc2lvbiBzaG91bGQgYmUgcGFyc2VkIGluc2lkZSAjaWYgZGlyZWN0aXZlcwotVEVTVF9GKERl
ZmluZVRlc3QsIEV4cGFuZGVkRGVmaW5lZFBhcnNlZEluc2lkZUlmKQotewotICAgIGNvbnN0IGNo
YXIgKmlucHV0ID0KLSAgICAgICAgIiNkZWZpbmUgYmFyIDFcbiIKLSAgICAgICAgIiNkZWZpbmUg
Zm9vIGRlZmluZWQoYmFyKVxuIgotICAgICAgICAiI2lmIGZvb1xuIgotICAgICAgICAiYmFyXG4i
Ci0gICAgICAgICIjZW5kaWZcbiI7Ci0gICAgY29uc3QgY2hhciAqZXhwZWN0ZWQgPQotICAgICAg
ICAiXG4iCi0gICAgICAgICJcbiIKLSAgICAgICAgIlxuIgotICAgICAgICAiMVxuIgotICAgICAg
ICAiXG4iOwotICAgIHByZXByb2Nlc3MoaW5wdXQsIGV4cGVjdGVkKTsKLX0KLQotLy8gRGVmaW5l
ZCBvcGVyYXRvciBwcm9kdWNlZCBieSBtYWNybyBleHBhbnNpb24gc2hvdWxkIG5vdCBiZSBwYXJz
ZWQgb3V0c2lkZSAjaWYgZGlyZWN0aXZlcwotVEVTVF9GKERlZmluZVRlc3QsIEV4cGFuZGVkRGVm
aW5lZE5vdFBhcnNlZE91dHNpZGVJZikKLXsKLSAgICBjb25zdCBjaGFyICppbnB1dCA9Ci0gICAg
ICAgICIjZGVmaW5lIGZvbyBkZWZpbmVkKGJhcilcbiIKLSAgICAgICAgImZvb1xuIjsKLSAgICBj
b25zdCBjaGFyICpleHBlY3RlZCA9Ci0gICAgICAgICJcbiIKLSAgICAgICAgImRlZmluZWQoYmFy
KVxuIjsKLSAgICBwcmVwcm9jZXNzKGlucHV0LCBleHBlY3RlZCk7Ci19Ci0KLS8vIFRlc3QgdGhh
dCBsaW5lIGRpcmVjdGl2ZSBleHByZXNzaW9ucyBnaXZlIGVycm9ycyBvbiBuZWdhdGl2ZSBvciB1
bmRlZmluZWQgc2hpZnRzLgotVEVTVF9GKERlZmluZVRlc3QsIE5lZ2F0aXZlU2hpZnRJbkxpbmVE
aXJlY3RpdmUpCi17Ci0gICAgY29uc3QgY2hhciAqaW5wdXQgPQotICAgICAgICAiI2xpbmUgMSA8
PCAtMVxuIgotICAgICAgICAiI2xpbmUgMSA+PiAtMVxuIgotICAgICAgICAiI2xpbmUgMSA8PCB4
XG4iCi0gICAgICAgICIjbGluZSAxID4+IHhcbiI7Ci0gICAgY29uc3QgY2hhciAqZXhwZWN0ZWQg
PQotICAgICAgICAiXG4iCi0gICAgICAgICJcbiIKLSAgICAgICAgIlxuIgotICAgICAgICAiXG4i
OwotCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6
OlBQX1VOREVGSU5FRF9TSElGVCwgXywgXykpLlRpbWVzKDQpOwotICAgIEVYUEVDVF9DQUxMKG1E
aWFnbm9zdGljcywgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9JTlZBTElEX0xJTkVfTlVNQkVS
LCBfLCBfKSkuVGltZXMoMik7Ci0gICAgcHJlcHJvY2VzcyhpbnB1dCwgZXhwZWN0ZWQpOwotfQot
Ci0vLyBVbmRlZmluaW5nIGEgbWFjcm8gaW4gaXRzIGludm9jYXRpb24gcGFyYW1ldGVycyBwcm9k
dWNlcyBhbmQgZXJyb3IKLVRFU1RfRihEZWZpbmVUZXN0LCBVbmRlZmluZUluSW52b2NhdGlvbikK
LXsKLSAgICBjb25zdCBjaGFyICppbnB1dCA9Ci0gICAgICAgICIjZGVmaW5lIEcoYSwgYikgYSBi
XG4iCi0gICAgICAgICJHKFxuIgotICAgICAgICAiI3VuZGVmIEdcbiIKLSAgICAgICAgIjEsIDIp
XG4iOwotICAgIGNvbnN0IGNoYXIgKmV4cGVjdGVkID0gIlxuXG5cbjEgMlxuIjsKLQotICAgIEVY
UEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9NQUNST19V
TkRFRklORURfV0hJTEVfSU5WT0tFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAzKSwgXykpOwotCi0gICAgcHJlcHJvY2VzcyhpbnB1
dCwgZXhwZWN0ZWQpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9lcnJvcl90ZXN0LmNwcCBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvZXJyb3JfdGVzdC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwY2Y4YWY2NTYwLi4wMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2Vy
cm9yX3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotLy8KLS8vIENvcHly
aWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8v
Ci0KLSNpbmNsdWRlICJQcmVwcm9jZXNzb3JUZXN0LmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvcHJl
cHJvY2Vzc29yL1Rva2VuLmgiCi0KLWNsYXNzIEVycm9yVGVzdCA6IHB1YmxpYyBQcmVwcm9jZXNz
b3JUZXN0Ci17Ci19OwotCi1URVNUX0YoRXJyb3JUZXN0LCBFbXB0eSkKLXsKLSAgICBjb25zdCBj
aGFyKiBzdHIgPSAiI2Vycm9yXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIjsK
LQotICAgIHVzaW5nIHRlc3Rpbmc6Ol87Ci0gICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRs
ZXIsIGhhbmRsZUVycm9yKHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgIiIpKTsKLSAgICAvLyBO
byBlcnJvciBvciB3YXJuaW5nLgotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQo
XywgXywgXykpLlRpbWVzKDApOwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0K
LQotVEVTVF9GKEVycm9yVGVzdCwgT25lVG9rZW5NZXNzYWdlKQotewotICAgIGNvbnN0IGNoYXIq
IHN0ciA9ICIjZXJyb3IgZm9vXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIjsK
LQotICAgIHVzaW5nIHRlc3Rpbmc6Ol87Ci0gICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRs
ZXIsCi0gICAgICAgICAgICAgICAgaGFuZGxlRXJyb3IocHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEp
LCAiIGZvbyIpKTsKLSAgICAvLyBObyBlcnJvciBvciB3YXJuaW5nLgotICAgIEVYUEVDVF9DQUxM
KG1EaWFnbm9zdGljcywgcHJpbnQoXywgXywgXykpLlRpbWVzKDApOwotCi0gICAgcHJlcHJvY2Vz
cyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKEVycm9yVGVzdCwgVHdvVG9rZW5NZXNzYWdl
KQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjZXJyb3IgZm9vIGJhclxuIjsKLSAgICBjb25z
dCBjaGFyKiBleHBlY3RlZCA9ICJcbiI7Ci0KLSAgICB1c2luZyB0ZXN0aW5nOjpfOwotICAgIEVY
UEVDVF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVyLAotICAgICAgICAgICAgICAgIGhhbmRsZUVycm9y
KHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgIiBmb28gYmFyIikpOwotICAgIC8vIE5vIGVycm9y
IG9yIHdhcm5pbmcuCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBf
KSkuVGltZXMoMCk7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNU
X0YoRXJyb3JUZXN0LCBDb21tZW50cykKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiLypmb28q
LyIKLSAgICAgICAgICAgICAgICAgICAgICAiIyIKLSAgICAgICAgICAgICAgICAgICAgICAiLypm
b28qLyIKLSAgICAgICAgICAgICAgICAgICAgICAiZXJyb3IiCi0gICAgICAgICAgICAgICAgICAg
ICAgIi8qZm9vKi8iCi0gICAgICAgICAgICAgICAgICAgICAgImZvbyIKLSAgICAgICAgICAgICAg
ICAgICAgICAiLypmb28qLyIKLSAgICAgICAgICAgICAgICAgICAgICAiYmFyIgotICAgICAgICAg
ICAgICAgICAgICAgICIvKmZvbyovIgotICAgICAgICAgICAgICAgICAgICAgICIvL2ZvbyIKLSAg
ICAgICAgICAgICAgICAgICAgICAiXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxu
IjsKLQotICAgIHVzaW5nIHRlc3Rpbmc6Ol87Ci0gICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhh
bmRsZXIsCi0gICAgICAgICAgICAgICAgaGFuZGxlRXJyb3IocHA6OlNvdXJjZUxvY2F0aW9uKDAs
IDEpLCAiIGZvbyBiYXIiKSk7Ci0gICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KLSAgICBFWFBF
Q1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KF8sIF8sIF8pKS5UaW1lcygwKTsKLQotICAgIHBy
ZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihFcnJvclRlc3QsIE1pc3NpbmdO
ZXdsaW5lKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjZXJyb3IgZm9vIjsKLSAgICBjb25z
dCBjaGFyKiBleHBlY3RlZCA9ICIiOwotCi0gICAgdXNpbmcgdGVzdGluZzo6XzsKLSAgICAvLyBE
aXJlY3RpdmUgc3VjY2Vzc2Z1bGx5IHBhcnNlZC4KLSAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZl
SGFuZGxlciwKLSAgICAgICAgICAgICAgICBoYW5kbGVFcnJvcihwcDo6U291cmNlTG9jYXRpb24o
MCwgMSksICIgZm9vIikpOwotICAgIC8vIEVycm9yIHJlcG9ydGVkIGFib3V0IEVPRi4KLSAgICBF
WFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfRU9GX0lO
X0RJUkVDVElWRSwgXywgXykpOwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNz
b3JfdGVzdHMvZXh0ZW5zaW9uX3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9leHRlbnNpb25fdGVzdC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDQ2OGNhNDk4MjY4Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2V4dGVuc2lvbl90
ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0
IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQot
I2luY2x1ZGUgIlByZXByb2Nlc3NvclRlc3QuaCIKLSNpbmNsdWRlICJjb21waWxlci9wcmVwcm9j
ZXNzb3IvVG9rZW4uaCIKLQotY2xhc3MgRXh0ZW5zaW9uVGVzdCA6IHB1YmxpYyBQcmVwcm9jZXNz
b3JUZXN0Ci17Ci19OwotCi1URVNUX0YoRXh0ZW5zaW9uVGVzdCwgVmFsaWQpCi17Ci0gICAgY29u
c3QgY2hhciogc3RyID0gIiNleHRlbnNpb24gZm9vIDogYmFyXG4iOwotICAgIGNvbnN0IGNoYXIq
IGV4cGVjdGVkID0gIlxuIjsKLQotICAgIHVzaW5nIHRlc3Rpbmc6Ol87Ci0gICAgRVhQRUNUX0NB
TEwobURpcmVjdGl2ZUhhbmRsZXIsCi0gICAgICAgICAgICAgICAgaGFuZGxlRXh0ZW5zaW9uKHBw
OjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgImZvbyIsICJiYXIiKSk7Ci0gICAgLy8gTm8gZXJyb3Ig
b3Igd2FybmluZy4KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KF8sIF8sIF8p
KS5UaW1lcygwKTsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRFU1Rf
RihFeHRlbnNpb25UZXN0LCBDb21tZW50cykKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiLypm
b28qLyIKLSAgICAgICAgICAgICAgICAgICAgICAiIyIKLSAgICAgICAgICAgICAgICAgICAgICAi
Lypmb28qLyIKLSAgICAgICAgICAgICAgICAgICAgICAiZXh0ZW5zaW9uIgotICAgICAgICAgICAg
ICAgICAgICAgICIvKmZvbyovIgotICAgICAgICAgICAgICAgICAgICAgICJmb28iCi0gICAgICAg
ICAgICAgICAgICAgICAgIi8qZm9vKi8iCi0gICAgICAgICAgICAgICAgICAgICAgIjoiCi0gICAg
ICAgICAgICAgICAgICAgICAgIi8qZm9vKi8iCi0gICAgICAgICAgICAgICAgICAgICAgImJhciIK
LSAgICAgICAgICAgICAgICAgICAgICAiLypmb28qLyIKLSAgICAgICAgICAgICAgICAgICAgICAi
Ly9mb28iCi0gICAgICAgICAgICAgICAgICAgICAgIlxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBl
Y3RlZCA9ICJcbiI7Ci0KLSAgICB1c2luZyB0ZXN0aW5nOjpfOwotICAgIEVYUEVDVF9DQUxMKG1E
aXJlY3RpdmVIYW5kbGVyLAotICAgICAgICAgICAgICAgIGhhbmRsZUV4dGVuc2lvbihwcDo6U291
cmNlTG9jYXRpb24oMCwgMSksICJmb28iLCAiYmFyIikpOwotICAgIC8vIE5vIGVycm9yIG9yIHdh
cm5pbmcuCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChfLCBfLCBfKSkuVGlt
ZXMoMCk7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoRXh0
ZW5zaW9uVGVzdCwgTWlzc2luZ05ld2xpbmUpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNl
eHRlbnNpb24gZm9vIDogYmFyIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICIiOwotCi0g
ICAgdXNpbmcgdGVzdGluZzo6XzsKLSAgICAvLyBEaXJlY3RpdmUgc3VjY2Vzc2Z1bGx5IHBhcnNl
ZC4KLSAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwKLSAgICAgICAgICAgICAgICBo
YW5kbGVFeHRlbnNpb24ocHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiZm9vIiwgImJhciIpKTsK
LSAgICAvLyBFcnJvciByZXBvcnRlZCBhYm91dCBFT0YuCi0gICAgRVhQRUNUX0NBTEwobURpYWdu
b3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0VPRl9JTl9ESVJFQ1RJVkUsIF8sIF8p
KTsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihFeHRlbnNp
b25UZXN0LCBFeHRlbnNpb25BZnRlck5vblByZVByb2Nlc3NvclRva2VuRVNTTDEpCi17Ci0gICAg
Y29uc3QgY2hhciAqc3RyID0gImludCBiYXogPSAxO1xuIgotICAgICAgICAgICAgICAgICAgICAg
ICIjZXh0ZW5zaW9uIGZvbyA6IGJhclxuIjsKLSAgICBjb25zdCBjaGFyICpleHBlY3RlZCA9ICJp
bnQgYmF6ID0gMTtcblxuIjsKLQotICAgIHVzaW5nIHRlc3Rpbmc6Ol87Ci0gICAgLy8gRGlyZWN0
aXZlIHN1Y2Nlc3NmdWxseSBwYXJzZWQuCi0gICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRs
ZXIsCi0gICAgICAgIGhhbmRsZUV4dGVuc2lvbihwcDo6U291cmNlTG9jYXRpb24oMCwgMiksICJm
b28iLCAiYmFyIikpOwotICAgIC8vIEV4cGVjdCBhIHdhcm5pbmcgYWJvdXQgZXh0ZW5zaW9uIHBy
YWdtYXMgYWZ0ZXIgbm9uLXByZXByb2Nlc3NvciB0b2tlbnMuCi0gICAgRVhQRUNUX0NBTEwobURp
YWdub3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX05PTl9QUF9UT0tFTl9CRUZPUkVf
RVhURU5TSU9OX0VTU0wxLCBfLCBfKSk7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQp
OwotfQotCi1URVNUX0YoRXh0ZW5zaW9uVGVzdCwgRXh0ZW5zaW9uQWZ0ZXJOb25QcmVQcm9jZXNz
b3JUb2tlbkVTU0wzKQotewotICAgIGNvbnN0IGNoYXIgKnN0ciA9ICIjdmVyc2lvbiAzMDAgZXNc
biIKLSAgICAgICAgICAgICAgICAgICAgICAiaW50IGJheiA9IDE7XG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgIiNleHRlbnNpb24gZm9vIDogYmFyXG4iOwotICAgIGNvbnN0IGNoYXIgKmV4cGVj
dGVkID0gIlxuaW50IGJheiA9IDE7XG5cbiI7Ci0KLSAgICB1c2luZyB0ZXN0aW5nOjpfOwotICAg
IC8vIERpcmVjdGl2ZSBzdWNjZXNzZnVsbHkgcGFyc2VkLgotICAgIEVYUEVDVF9DQUxMKG1EaXJl
Y3RpdmVIYW5kbGVyLAotICAgICAgICBoYW5kbGVWZXJzaW9uKHBwOjpTb3VyY2VMb2NhdGlvbigw
LCAxKSwgMzAwKSk7Ci0gICAgLy8gRXhwZWN0IGEgZXJyb3IgYWJvdXQgZXh0ZW5zaW9uIHByYWdt
YXMgYWZ0ZXIgbm9uLXByZXByb2Nlc3NvciB0b2tlbnMuCi0gICAgRVhQRUNUX0NBTEwobURpYWdu
b3N0aWNzLCBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX05PTl9QUF9UT0tFTl9CRUZPUkVfRVhU
RU5TSU9OX0VTU0wzLCBfLCBfKSk7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwot
fQotCi1zdHJ1Y3QgRXh0ZW5zaW9uVGVzdFBhcmFtCi17Ci0gICAgY29uc3QgY2hhciogc3RyOwot
ICAgIHBwOjpEaWFnbm9zdGljczo6SUQgaWQ7Ci19OwotCi11c2luZyB0ZXN0aW5nOjpXaXRoUGFy
YW1JbnRlcmZhY2U7Ci1jbGFzcyBJbnZhbGlkRXh0ZW5zaW9uVGVzdCA6IHB1YmxpYyBFeHRlbnNp
b25UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2l0aFBhcmFtSW50
ZXJmYWNlPEV4dGVuc2lvblRlc3RQYXJhbT4KLXsKLX07Ci0KLVRFU1RfUChJbnZhbGlkRXh0ZW5z
aW9uVGVzdCwgSWRlbnRpZmllZCkKLXsKLSAgICBFeHRlbnNpb25UZXN0UGFyYW0gcGFyYW0gPSBH
ZXRQYXJhbSgpOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIjsKLQotICAgIHVzaW5n
IHRlc3Rpbmc6Ol87Ci0gICAgLy8gTm8gaGFuZGxlRXh0ZW5zaW9uIGNhbGwuCi0gICAgRVhQRUNU
X0NBTEwobURpcmVjdGl2ZUhhbmRsZXIsIGhhbmRsZUV4dGVuc2lvbihfLCBfLCBfKSkuVGltZXMo
MCk7Ci0gICAgLy8gSW52YWxpZCBleHRlbnNpb24gZGlyZWN0aXZlIGNhbGwuCi0gICAgRVhQRUNU
X0NBTEwobURpYWdub3N0aWNzLCBwcmludChwYXJhbS5pZCwgcHA6OlNvdXJjZUxvY2F0aW9uKDAs
IDEpLCBfKSk7Ci0KLSAgICBwcmVwcm9jZXNzKHBhcmFtLnN0ciwgZXhwZWN0ZWQpOwotfQotCi1z
dGF0aWMgY29uc3QgRXh0ZW5zaW9uVGVzdFBhcmFtIGtQYXJhbXNbXSA9IHsKLSAgICB7IiNleHRl
bnNpb25cbiIsIHBwOjpEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9FWFRFTlNJT05fRElSRUNUSVZF
fSwKLSAgICB7IiNleHRlbnNpb24gMVxuIiwgcHA6OkRpYWdub3N0aWNzOjpQUF9JTlZBTElEX0VY
VEVOU0lPTl9OQU1FfSwKLSAgICB7IiNleHRlbnNpb24gZm9vIGJhclxuIiwgcHA6OkRpYWdub3N0
aWNzOjpQUF9VTkVYUEVDVEVEX1RPS0VOfSwKLSAgICB7IiNleHRlbnNpb24gZm9vIDogXG4iLCBw
cDo6RGlhZ25vc3RpY3M6OlBQX0lOVkFMSURfRVhURU5TSU9OX0RJUkVDVElWRX0sCi0gICAgeyIj
ZXh0ZW5zaW9uIGZvbyA6IDFcbiIsIHBwOjpEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9FWFRFTlNJ
T05fQkVIQVZJT1J9LAotICAgIHsiI2V4dGVuc2lvbiBmb28gOiBiYXIgYmF6XG4iLCBwcDo6RGlh
Z25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU59Ci19OwotSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoQWxsLCBJbnZhbGlkRXh0ZW5zaW9uVGVzdCwgdGVzdGluZzo6VmFsdWVzSW4oa1BhcmFtcykp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nl
c3Nvcl90ZXN0cy9pZGVudGlmaWVyX3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9pZGVudGlmaWVyX3Rlc3QuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzEyYjM4Y2JhYS4uMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9pZGVudGlm
aWVyX3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTYyICswLDAgQEAKLS8vCi0vLyBDb3B5
cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0v
LwotCi0jaW5jbHVkZSAiUHJlcHJvY2Vzc29yVGVzdC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3By
ZXByb2Nlc3Nvci9Ub2tlbi5oIgotCi0jZGVmaW5lIENMT1NFRF9SQU5HRSh4LCB5KSB0ZXN0aW5n
OjpSYW5nZSh4LCBzdGF0aWNfY2FzdDxjaGFyPigoeSkgKyAxKSkKLQotY2xhc3MgSWRlbnRpZmll
clRlc3QgOiBwdWJsaWMgUHJlcHJvY2Vzc29yVGVzdAotewotcHJvdGVjdGVkOgotICAgIHZvaWQg
ZXhwZWN0SWRlbnRpZmllcihjb25zdCBzdGQ6OnN0cmluZyYgc3RyKQotICAgIHsKLSAgICAgICAg
Y29uc3QgY2hhciogY3N0ciA9IHN0ci5jX3N0cigpOwotICAgICAgICBBU1NFUlRfVFJVRShtUHJl
cHJvY2Vzc29yLmluaXQoMSwgJmNzdHIsIDApKTsKLQotICAgICAgICBwcDo6VG9rZW4gdG9rZW47
Ci0gICAgICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci0gICAgICAgIEVYUEVDVF9FUShw
cDo6VG9rZW46OklERU5USUZJRVIsIHRva2VuLnR5cGUpOwotICAgICAgICBFWFBFQ1RfRVEoc3Ry
LCB0b2tlbi50ZXh0KTsKLSAgICB9Ci19OwotCi1jbGFzcyBTaW5nbGVMZXR0ZXJJZGVudGlmaWVy
VGVzdCA6IHB1YmxpYyBJZGVudGlmaWVyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxjaGFyPgotewotfTsK
LQotLy8gVGhpcyB0ZXN0IGNvdmVycyBpZGVudGlmaWVyIG5hbWVzIG9mIGZvcm0gW19hLXpBLVpd
LgotVEVTVF9QKFNpbmdsZUxldHRlcklkZW50aWZpZXJUZXN0LCBJZGVudGlmaWVkKQotewotICAg
IHN0ZDo6c3RyaW5nIHN0cigxLCBHZXRQYXJhbSgpKTsKLSAgICBleHBlY3RJZGVudGlmaWVyKHN0
cik7Ci19Ci0KLS8vIFRlc3Qgc3RyaW5nOiAnXycKLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKFVu
ZGVyc2NvcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVMZXR0ZXJJZGVudGlmaWVy
VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlcygnXycpKTsKLQot
Ly8gVGVzdCBzdHJpbmc6IFthLXpdCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChhX3osCi0gICAg
ICAgICAgICAgICAgICAgICAgICBTaW5nbGVMZXR0ZXJJZGVudGlmaWVyVGVzdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIENMT1NFRF9SQU5HRSgnYScsICd6JykpOwotCi0vLyBUZXN0IHN0cmlu
ZzogW0EtWl0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFfWiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIFNpbmdsZUxldHRlcklkZW50aWZpZXJUZXN0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgQ0xPU0VEX1JBTkdFKCdBJywgJ1onKSk7Ci0KLXR5cGVkZWYgc3RkOjp0cjE6OnR1cGxlPGNo
YXIsIGNoYXI+IElkZW50aWZpZXJQYXJhbXM7Ci1jbGFzcyBEb3VibGVMZXR0ZXJJZGVudGlmaWVy
VGVzdCA6Ci0gICAgcHVibGljIElkZW50aWZpZXJUZXN0LAotICAgIHB1YmxpYyB0ZXN0aW5nOjpX
aXRoUGFyYW1JbnRlcmZhY2U8SWRlbnRpZmllclBhcmFtcz4KLXsKLX07Ci0KLS8vIFRoaXMgdGVz
dCBjb3ZlcnMgaWRlbnRpZmllciBuYW1lcyBvZiBmb3JtIFtfYS16QS1aXVtfYS16QS1aMC05XS4K
LVRFU1RfUChEb3VibGVMZXR0ZXJJZGVudGlmaWVyVGVzdCwgSWRlbnRpZmllZCkKLXsKLSAgICBz
dGQ6OnN0cmluZyBzdHI7Ci0gICAgc3RyLnB1c2hfYmFjayhzdGQ6OnRyMTo6Z2V0PDA+KEdldFBh
cmFtKCkpKTsKLSAgICBzdHIucHVzaF9iYWNrKHN0ZDo6dHIxOjpnZXQ8MT4oR2V0UGFyYW0oKSkp
OwotCi0gICAgZXhwZWN0SWRlbnRpZmllcihzdHIpOwotfQotCi0vLyBUZXN0IHN0cmluZzogIl9f
IgotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoVW5kZXJzY29yZV9VbmRlcnNjb3JlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgRG91YmxlTGV0dGVySWRlbnRpZmllclRlc3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKHRlc3Rpbmc6OlZhbHVlcygnXycpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXMoJ18n
KSkpOwotCi0vLyBUZXN0IHN0cmluZzogIl8iW2Etel0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KFVuZGVyc2NvcmVfYV96LAotICAgICAgICAgICAgICAgICAgICAgICAgRG91YmxlTGV0dGVySWRl
bnRpZmllclRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKHRl
c3Rpbmc6OlZhbHVlcygnXycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDTE9TRURfUkFOR0UoJ2EnLCAneicpKSk7Ci0KLS8vIFRlc3Qgc3RyaW5nOiAiXyJbQS1a
XQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoVW5kZXJzY29yZV9BX1osCi0gICAgICAgICAgICAg
ICAgICAgICAgICBEb3VibGVMZXR0ZXJJZGVudGlmaWVyVGVzdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUodGVzdGluZzo6VmFsdWVzKCdfJyksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5HRSgnQScsICdaJykpKTsK
LQotLy8gVGVzdCBzdHJpbmc6ICJfIlswLTldCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChVbmRl
cnNjb3JlXzBfOSwKLSAgICAgICAgICAgICAgICAgICAgICAgIERvdWJsZUxldHRlcklkZW50aWZp
ZXJUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZSh0ZXN0aW5n
OjpWYWx1ZXMoJ18nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0xPU0VEX1JBTkdFKCcwJywgJzknKSkpOwotCi0vLyBUZXN0IHN0cmluZzogW2Etel0iXyIKLUlO
U1RBTlRJQVRFX1RFU1RfQ0FTRV9QKGFfel9VbmRlcnNjb3JlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgRG91YmxlTGV0dGVySWRlbnRpZmllclRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0aW5nOjpDb21iaW5lKENMT1NFRF9SQU5HRSgnYScsICd6JyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OlZhbHVlcygnXycpKSk7Ci0KLS8v
IFRlc3Qgc3RyaW5nOiBbYS16XVthLXpdCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChhX3pfYV96
LAotICAgICAgICAgICAgICAgICAgICAgICAgRG91YmxlTGV0dGVySWRlbnRpZmllclRlc3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKENMT1NFRF9SQU5HRSgnYScs
ICd6JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9S
QU5HRSgnYScsICd6JykpKTsKLQotLy8gVGVzdCBzdHJpbmc6IFthLXpdW0EtWl0KLUlOU1RBTlRJ
QVRFX1RFU1RfQ0FTRV9QKGFfel9BX1osCi0gICAgICAgICAgICAgICAgICAgICAgICBEb3VibGVM
ZXR0ZXJJZGVudGlmaWVyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkNv
bWJpbmUoQ0xPU0VEX1JBTkdFKCdhJywgJ3onKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ0xPU0VEX1JBTkdFKCdBJywgJ1onKSkpOwotCi0vLyBUZXN0IHN0cmlu
ZzogW2Etel1bMC05XQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoYV96XzBfOSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIERvdWJsZUxldHRlcklkZW50aWZpZXJUZXN0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZShDTE9TRURfUkFOR0UoJ2EnLCAneicpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTE9TRURfUkFOR0UoJzAnLCAn
OScpKSk7Ci0KLS8vIFRlc3Qgc3RyaW5nOiBbQS1aXSJfIgotSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoQV9aX1VuZGVyc2NvcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBEb3VibGVMZXR0ZXJJ
ZGVudGlmaWVyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUo
Q0xPU0VEX1JBTkdFKCdBJywgJ1onKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdGluZzo6VmFsdWVzKCdfJykpKTsKLQotLy8gVGVzdCBzdHJpbmc6IFtBLVpd
W2Etel0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEFfWl9hX3osCi0gICAgICAgICAgICAgICAg
ICAgICAgICBEb3VibGVMZXR0ZXJJZGVudGlmaWVyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3Rpbmc6OkNvbWJpbmUoQ0xPU0VEX1JBTkdFKCdBJywgJ1onKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xPU0VEX1JBTkdFKCdhJywgJ3onKSkpOwot
Ci0vLyBUZXN0IHN0cmluZzogW0EtWl1bQS1aXQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQV9a
X0FfWiwKLSAgICAgICAgICAgICAgICAgICAgICAgIERvdWJsZUxldHRlcklkZW50aWZpZXJUZXN0
LAotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZShDTE9TRURfUkFOR0Uo
J0EnLCAnWicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTE9T
RURfUkFOR0UoJ0EnLCAnWicpKSk7Ci0KLS8vIFRlc3Qgc3RyaW5nOiBbQS1aXVswLTldCi1JTlNU
QU5USUFURV9URVNUX0NBU0VfUChBX1pfMF85LAotICAgICAgICAgICAgICAgICAgICAgICAgRG91
YmxlTGV0dGVySWRlbnRpZmllclRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5n
OjpDb21iaW5lKENMT1NFRF9SQU5HRSgnQScsICdaJyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5HRSgnMCcsICc5JykpKTsKLQotLy8gVGhlIHRl
c3RzIGFib3ZlIGNvdmVyIG9uZS1sZXR0ZXIgYW5kIHZhcmlvdXMgY29tYmluYXRpb25zIG9mIHR3
by1sZXR0ZXIKLS8vIGlkZW50aWZpZXIgbmFtZXMuIFRoaXMgdGVzdCBjb3ZlcnMgYWxsIGNoYXJh
Y3RlcnMgaW4gYSBzaW5nbGUgc3RyaW5nLgotVEVTVF9GKElkZW50aWZpZXJUZXN0LCBBbGxMZXR0
ZXJzKQotewotICAgIHN0ZDo6c3RyaW5nIHN0cjsKLSAgICBmb3IgKGNoYXIgYyA9ICdhJzsgYyA8
PSAneic7ICsrYykKLSAgICAgICAgc3RyLnB1c2hfYmFjayhjKTsKLQotICAgIHN0ci5wdXNoX2Jh
Y2soJ18nKTsKLQotICAgIGZvciAoY2hhciBjID0gJ0EnOyBjIDw9ICdaJzsgKytjKQotICAgICAg
ICBzdHIucHVzaF9iYWNrKGMpOwotCi0gICAgc3RyLnB1c2hfYmFjaygnXycpOwotCi0gICAgZm9y
IChjaGFyIGMgPSAnMCc7IGMgPD0gJzknOyArK2MpCi0gICAgICAgIHN0ci5wdXNoX2JhY2soYyk7
Ci0KLSAgICBleHBlY3RJZGVudGlmaWVyKHN0cik7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL2lmX3Rlc3QuY3BwIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9pZl90
ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk0MGI1NjRhNWQuLjAwMDAw
MDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNz
b3JfdGVzdHMvaWZfdGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQ4ICswLDAgQEAKLS8v
Ci0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5
IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNF
IGZpbGUuCi0vLwotCi0jaW5jbHVkZSAiUHJlcHJvY2Vzc29yVGVzdC5oIgotI2luY2x1ZGUgImNv
bXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgotCi1jbGFzcyBJZlRlc3QgOiBwdWJsaWMgUHJl
cHJvY2Vzc29yVGVzdAotewotfTsKLQotVEVTVF9GKElmVGVzdCwgSWZfMCkKLXsKLSAgICBjb25z
dCBjaGFyKiBzdHIgPSAicGFzc18xXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNpZiAwXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgImZhaWxcbiIKLSAgICAgICAgICAgICAgICAgICAgICAi
I2VuZGlmXG4iCi0gICAgICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIjsKLSAgICBjb25zdCBj
aGFyKiBleHBlY3RlZCA9ICJwYXNzXzFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJc
biIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzJcbiI7Ci0KLSAg
ICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoSWZUZXN0LCBJZl8xKQot
ewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICJwYXNzXzFcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAiI2lmIDFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgIiNlbmRpZlxuIgotICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzNcbiI7
Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAicGFzc18xXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAicGFzc18zXG4iOwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVT
VF9GKElmVGVzdCwgSWZfMF9FbHNlKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICJwYXNzXzFc
biIKLSAgICAgICAgICAgICAgICAgICAgICAiI2lmIDBcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAiZmFpbFxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgotICAgICAgICAgICAg
ICAgICAgICAgICJwYXNzXzJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iCi0g
ICAgICAgICAgICAgICAgICAgICAgInBhc3NfM1xuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3Rl
ZCA9ICJwYXNzXzFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzNcbiI7Ci0K
LSAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoSWZUZXN0LCBJZl8x
X0Vsc2UpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gInBhc3NfMVxuIgotICAgICAgICAgICAg
ICAgICAgICAgICIjaWYgMVxuIgotICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzJcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiZmFp
bFxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAicGFzc18zXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gInBhc3NfMVxuIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInBhc3NfMlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NfM1xuIjsKLQotICAgIHByZXByb2Nlc3Mo
c3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihJZlRlc3QsIElmXzBfRWxpZikKLXsKLSAgICBj
b25zdCBjaGFyKiBzdHIgPSAicGFzc18xXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNpZiAw
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgImZhaWxfMVxuIgotICAgICAgICAgICAgICAgICAg
ICAgICIjZWxpZiAwXG4iCi0gICAgICAgICAgICAgICAgICAgICAgImZhaWxfMlxuIgotICAgICAg
ICAgICAgICAgICAgICAgICIjZWxpZiAxXG4iCi0gICAgICAgICAgICAgICAgICAgICAgInBhc3Nf
MlxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxpZiAxXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgImZhaWxfM1xuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgotICAgICAg
ICAgICAgICAgICAgICAgICJmYWlsXzRcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlm
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgInBhc3NfM1xuIjsKLSAgICBjb25zdCBjaGFyKiBl
eHBlY3RlZCA9ICJwYXNzXzFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzJcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJwYXNzXzNcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhw
ZWN0ZWQpOwotfQotCi1URVNUX0YoSWZUZXN0LCBJZl8xX0VsaWYpCi17Ci0gICAgY29uc3QgY2hh
ciogc3RyID0gInBhc3NfMVxuIgotICAgICAgICAgICAgICAgICAgICAgICIjaWYgMVxuIgotICAg
ICAgICAgICAgICAgICAgICAgICJwYXNzXzJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2Vs
aWYgMFxuIgotICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzFcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAiI2VsaWYgMVxuIgotICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzJcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiZmFp
bF80XG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICJwYXNzXzNcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAicGFzc18xXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAicGFzc18yXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc18zXG4i
OwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKElmVGVzdCwg
SWZfRWxpZl9FbHNlKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICJwYXNzXzFcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAiI2lmIDBcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiZmFpbF8x
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbGlmIDBcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAiZmFpbF8yXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbGlmIDBcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAiZmFpbF8zXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbHNl
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgotICAgICAgICAgICAgICAgICAg
ICAgICIjZW5kaWZcbiIKLSAgICAgICAgICAgICAgICAgICAgICAicGFzc18zXG4iOwotICAgIGNv
bnN0IGNoYXIqIGV4cGVjdGVkID0gInBhc3NfMVxuIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxu
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInBhc3NfMlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInBhc3NfM1xuIjsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBl
eHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihJZlRlc3QsIElmXzBfTmVzdGVkKQotewotICAgIGNvbnN0
IGNoYXIqIHN0ciA9ICJwYXNzXzFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2lmIDBcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAiZmFpbF8xXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
IiNpZiAxXG4iCi0gICAgICAgICAgICAgICAgICAgICAgImZhaWxfMlxuIgotICAgICAgICAgICAg
ICAgICAgICAgICIjZWxzZVxuIgotICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzNcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNl
bHNlXG4iCi0gICAgICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICIjZW5kaWZcbiIKLSAgICAgICAgICAgICAgICAgICAgICAicGFzc18zXG4iOwotICAg
IGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gInBhc3NfMVxuIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
InBhc3NfM1xuIjsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRFU1Rf
RihJZlRlc3QsIElmXzFfTmVzdGVkKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICJwYXNzXzFc
biIKLSAgICAgICAgICAgICAgICAgICAgICAiI2lmIDFcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAicGFzc18yXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNpZiAxXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgInBhc3NfM1xuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgot
ICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAi
I2VuZGlmXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgImZhaWxfMlxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAicGFzc180XG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVk
ID0gInBhc3NfMVxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NfM1xuIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NfNFxuIjsKLQot
ICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihJZlRlc3QsIE9wZXJh
dG9yUHJlY2VkZW5jZSkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmIDEgKyAyICogMyAr
IC0gKDI2ICUgMTcgLSArIDQgLyAyKVxuIgotICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzFc
biIKLSAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAicGFzc18xXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKLSAgICBjb25z
dCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJwYXNzXzFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7Ci0KLSAgICBw
cmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoSWZUZXN0LCBPcGVyYXRvckRl
ZmluZWQpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNpZiBkZWZpbmVkIGZvb1xuIgotICAg
ICAgICAgICAgICAgICAgICAgICJmYWlsXzFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2Vs
c2VcbiIKLSAgICAgICAgICAgICAgICAgICAgICAicGFzc18xXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgIiNlbmRpZlxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIGZvb1xuIgot
ICAgICAgICAgICAgICAgICAgICAgICIjaWYgZGVmaW5lZChmb28pXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgInBhc3NfMlxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgotICAg
ICAgICAgICAgICAgICAgICAgICJmYWlsXzJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2Vu
ZGlmXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiN1bmRlZiBmb29cbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAiI2lmIGRlZmluZWQgKCBmb28gKSBcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAiZmFpbF8zXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgInBhc3NfM1xuIgotICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7
Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAicGFzc18xXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAicGFzc18zXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iOwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9G
KElmVGVzdCwgT3BlcmF0b3JFUSkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmIDQgLSAx
ID09IDIgKyAxXG4iCi0gICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAiI2Vsc2VcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiZmFpbFxuIgotICAg
ICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQg
PSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBl
Y3RlZCk7Ci19Ci0KLVRFU1RfRihJZlRlc3QsIE9wZXJhdG9yTkUpCi17Ci0gICAgY29uc3QgY2hh
ciogc3RyID0gIiNpZiAxICE9IDJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIgot
ICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgotICAgICAgICAgICAgICAgICAgICAgICJm
YWlsXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKLSAgICBjb25zdCBjaGFy
KiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4iCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iOwotCi0gICAgcHJlcHJvY2Vz
cyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKElmVGVzdCwgT3BlcmF0b3JMZXNzKQotewot
ICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgMSA8IDJcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAicGFzc1xuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgotICAgICAgICAgICAg
ICAgICAgICAgICJmYWlsXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKLSAg
ICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJwYXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iOwotCi0g
ICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKElmVGVzdCwgT3BlcmF0
b3JHcmVhdGVyKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgMiA+IDFcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAicGFzc1xuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxu
IgotICAgICAgICAgICAgICAgICAgICAgICJmYWlsXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
IiNlbmRpZlxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJwYXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iOwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9G
KElmVGVzdCwgT3BlcmF0b3JMRSkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmIDEgPD0g
MlxuIgotICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzFcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAiI2Vsc2VcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiZmFpbF8xXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgIiNlbmRpZlxuIgotICAgICAgICAgICAgICAgICAgICAgICIjaWYgMiA8
PSAyXG4iCi0gICAgICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICIjZWxzZVxuIgotICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzJcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0g
IlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NfMVxuIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NfMlxuIgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBl
Y3RlZCk7Ci19Ci0KLVRFU1RfRihJZlRlc3QsIE9wZXJhdG9yR0UpCi17Ci0gICAgY29uc3QgY2hh
ciogc3RyID0gIiNpZiAyID49IDFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAicGFzc18xXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ImZhaWxfMVxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAiI2lmIDIgPj0gMlxuIgotICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzJc
biIKLSAgICAgICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKLSAgICAgICAgICAgICAgICAgICAg
ICAiZmFpbF8yXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKLSAgICBjb25z
dCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNz
XzFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNz
XzJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7Ci0KLSAgICBw
cmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoSWZUZXN0LCBPcGVyYXRvckJp
dHdpc2VPUikKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmICgweGFhYWFhYWFhIHwgMHg1
NTU1NTU1NSkgPT0gMHhmZmZmZmZmZlxuIgotICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ImZhaWxcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOwotICAgIGNvbnN0IGNo
YXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7Ci0KLSAgICBwcmVwcm9j
ZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoSWZUZXN0LCBPcGVyYXRvckJpdHdpc2VB
TkQpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNpZiAoMHhhYWFhYWFhICYgMHg1NTU1NTU1
KSA9PSAwXG4iCi0gICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAiI2Vsc2VcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiZmFpbFxuIgotICAgICAg
ICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAi
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIjsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3Rl
ZCk7Ci19Ci0KLVRFU1RfRihJZlRlc3QsIE9wZXJhdG9yQml0d2lzZVhPUikKLXsKLSAgICBjb25z
dCBjaGFyKiBzdHIgPSAiI2lmICgweGFhYWFhYWEgXiAweDU1NTU1NTUpID09IDB4ZmZmZmZmZlxu
IgotICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
IiNlbHNlXG4iCi0gICAgICAgICAgICAgICAgICAgICAgImZhaWxcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAiI2VuZGlmXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQot
Ci1URVNUX0YoSWZUZXN0LCBPcGVyYXRvckJpdHdpc2VDb21wbGVtZW50KQotewotICAgIGNvbnN0
IGNoYXIqIHN0ciA9ICIjaWYgKH4gMHhkZWFkYmVlZikgPT0gLTM3MzU5Mjg1NjBcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAicGFzc1xuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxu
IgotICAgICAgICAgICAgICAgICAgICAgICJmYWlsXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
IiNlbmRpZlxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJwYXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAiXG4iOwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9G
KElmVGVzdCwgT3BlcmF0b3JMZWZ0KQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgKDEg
PDwgMTIpID09IDQwOTZcbiIKLSAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIgotICAgICAg
ICAgICAgICAgICAgICAgICIjZWxzZVxuIgotICAgICAgICAgICAgICAgICAgICAgICJmYWlsXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBl
Y3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNzXG4iCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iOwotCi0gICAgcHJlcHJvY2VzcyhzdHIs
IGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKElmVGVzdCwgT3BlcmF0b3JSaWdodCkKLXsKLSAgICBj
b25zdCBjaGFyKiBzdHIgPSAiI2lmICgzMTc2MiA+PiA4KSA9PSAxMjRcbiIKLSAgICAgICAgICAg
ICAgICAgICAgICAicGFzc1xuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgotICAg
ICAgICAgICAgICAgICAgICAgICJmYWlsXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbmRp
ZlxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwYXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iOwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKElmVGVz
dCwgRXhwcmVzc2lvbldpdGhNYWNyb3MpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNkZWZp
bmUgb25lIDFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2RlZmluZSB0d28gMlxuIgotICAg
ICAgICAgICAgICAgICAgICAgICIjZGVmaW5lIHRocmVlIDNcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAiI2lmIG9uZSArIHR3byA9PSB0aHJlZVxuIgotICAgICAgICAgICAgICAgICAgICAgICJw
YXNzXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgImZhaWxcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOwotICAgIGNv
bnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxu
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhc3NcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwg
ZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoSWZUZXN0LCBKdW5rSW5zaWRlRXhjbHVkZWRCbG9ja0ln
bm9yZWQpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNpZiAwXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgImZvbyAhQCMkJV4mKiAuMWJhclxuIgotICAgICAgICAgICAgICAgICAgICAgICIj
Zm9vXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNpZiBiYXJcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAiZmFpbFxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAiI2Vsc2VcbiIKLSAgICAgICAgICAgICAgICAgICAgICAicGFzc1xu
IgotICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7Ci0gICAgY29uc3QgY2hhciogZXhw
ZWN0ZWQgPSAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAicGFzc1xuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIjsKLQot
ICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihJZlRlc3QsIElmZGVm
KQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjZGVmaW5lIGZvb1xuIgotICAgICAgICAgICAg
ICAgICAgICAgICIjaWZkZWYgZm9vXG4iCi0gICAgICAgICAgICAgICAgICAgICAgInBhc3NfMVxu
IgotICAgICAgICAgICAgICAgICAgICAgICIjZWxzZVxuIgotICAgICAgICAgICAgICAgICAgICAg
ICJmYWlsXzFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgIiN1bmRlZiBmb29cbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2lmZGVm
IGZvb1xuIgotICAgICAgICAgICAgICAgICAgICAgICJmYWlsXzJcbiIKLSAgICAgICAgICAgICAg
ICAgICAgICAiI2Vsc2VcbiIKLSAgICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9
ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwYXNzXzFcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXNz
XzJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiI7Ci0KLSAgICBwcmVwcm9jZXNz
KHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0YoSWZUZXN0LCBJZm5kZWYpCi17Ci0gICAgY29u
c3QgY2hhciogc3RyID0gIiNkZWZpbmUgZm9vXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNp
Zm5kZWYgZm9vXG4iCi0gICAgICAgICAgICAgICAgICAgICAgImZhaWxfMVxuIgotICAgICAgICAg
ICAgICAgICAgICAgICIjZWxzZVxuIgotICAgICAgICAgICAgICAgICAgICAgICJwYXNzXzFcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iCi0gICAgICAgICAgICAgICAgICAgICAg
IiN1bmRlZiBmb29cbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2lmbmRlZiBmb29cbiIKLSAg
ICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNl
bHNlXG4iCi0gICAgICAgICAgICAgICAgICAgICAgImZhaWxfMlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICIjZW5kaWZcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAicGFzc18xXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAi
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc18yXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG4iCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAiXG4iOwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVj
dGVkKTsKLX0KLQotVEVTVF9GKElmVGVzdCwgTWlzc2luZ0V4cHJlc3Npb24pCi17Ci0gICAgY29u
c3QgY2hhciogc3RyID0gIiNpZlxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7
Ci0gICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKLQotICAg
IEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBwcmludChwcDo6RGlh
Z25vc3RpY3M6OlBQX0lOVkFMSURfRVhQUkVTU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICBw
cDo6U291cmNlTG9jYXRpb24oMCwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgInN5bnRheCBl
cnJvciIpKTsKLQotICAgIHBwOjpUb2tlbiB0b2tlbjsKLSAgICBtUHJlcHJvY2Vzc29yLmxleCgm
dG9rZW4pOwotfQotCi1URVNUX0YoSWZUZXN0LCBEaXZpc2lvbkJ5WmVybykKLXsKLSAgICBjb25z
dCBjaGFyKiBzdHIgPSAiI2lmIDEgLyAoMyAtICgxICsgMikpXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgIiNlbmRpZlxuIjsKLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwg
JnN0ciwgMCkpOwotCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAotICAgICAgICAgICAg
ICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfRElWSVNJT05fQllfWkVSTywKLSAgICAgICAg
ICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksICIxIC8gMCIpKTsKLQotICAg
IHBwOjpUb2tlbiB0b2tlbjsKLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotfQotCi1U
RVNUX0YoSWZUZXN0LCBNb2R1bG9CeVplcm8pCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNp
ZiAxICUgKDMgLSAoMSArIDIpKVxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7
Ci0gICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKLQotICAg
IEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBwcmludChwcDo6RGlh
Z25vc3RpY3M6OlBQX0RJVklTSU9OX0JZX1pFUk8sCi0gICAgICAgICAgICAgICAgICAgICAgcHA6
OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiMSAlIDAiKSk7Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47
Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLX0KLQotVEVTVF9GKElmVGVzdCwgRGVj
SW50ZWdlck92ZXJmbG93KQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgNDI5NDk2NzI5
NlxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7Ci0gICAgQVNTRVJUX1RSVUUo
bVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKLQotICAgIEVYUEVDVF9DQUxMKG1EaWFn
bm9zdGljcywKLSAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0lOVEVH
RVJfT1ZFUkZMT1csCi0gICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAs
IDEpLCAiNDI5NDk2NzI5NiIpKTsKLQotICAgIHBwOjpUb2tlbiB0b2tlbjsKLSAgICBtUHJlcHJv
Y2Vzc29yLmxleCgmdG9rZW4pOwotfQotCi1URVNUX0YoSWZUZXN0LCBPY3RJbnRlZ2VyT3ZlcmZs
b3cpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNpZiAwNzc3Nzc3Nzc3NzdcbiIKLSAgICAg
ICAgICAgICAgICAgICAgICAiI2VuZGlmXG4iOwotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNz
b3IuaW5pdCgxLCAmc3RyLCAwKSk7Ci0KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCi0g
ICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9JTlRFR0VSX09WRVJGTE9X
LAotICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgIjA3Nzc3
Nzc3Nzc3NyIpKTsKLQotICAgIHBwOjpUb2tlbiB0b2tlbjsKLSAgICBtUHJlcHJvY2Vzc29yLmxl
eCgmdG9rZW4pOwotfQotCi1URVNUX0YoSWZUZXN0LCBIZXhJbnRlZ2VyT3ZlcmZsb3cpCi17Ci0g
ICAgY29uc3QgY2hhciogc3RyID0gIiNpZiAweGZmZmZmZmZmZlxuIgotICAgICAgICAgICAgICAg
ICAgICAgICIjZW5kaWZcbiI7Ci0gICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEs
ICZzdHIsIDApKTsKLQotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAgICAgICAg
ICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0lOVEVHRVJfT1ZFUkZMT1csCi0gICAgICAg
ICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiMHhmZmZmZmZmZmYiKSk7
Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsK
LX0KLQotVEVTVF9GKElmVGVzdCwgVW5kZWZpbmVkTWFjcm8pCi17Ci0gICAgY29uc3QgY2hhciog
c3RyID0gIiNpZiBVTkRFRklORURcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2VuZGlmXG4i
OwotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7Ci0KLSAg
ICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6OkRp
YWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RPS0VOLAotICAgICAgICAgICAg
ICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAiVU5ERUZJTkVEIikpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNz
b3IubGV4KCZ0b2tlbik7Ci19Ci0KLVRFU1RfRihJZlRlc3QsIEludmFsaWRFeHByZXNzaW9uSWdu
b3JlZEZvckV4Y2x1ZGVkRWxpZikKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmIDFcbiIK
LSAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIgotICAgICAgICAgICAgICAgICAgICAgICIj
ZWxpZiBVTkRFRklORURcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiZmFpbFxuIgotICAgICAg
ICAgICAgICAgICAgICAgICIjZW5kaWZcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAi
XG4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAicGFzc1xuIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIlxuIjsKLQotICAgIC8vIE5vIGVycm9yIG9yIHdhcm5pbmcu
Ci0gICAgdXNpbmcgdGVzdGluZzo6XzsKLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHBy
aW50KF8sIF8sIF8pKS5UaW1lcygwKTsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7
Ci19Ci0KLVRFU1RfRihJZlRlc3QsIEVsc2VXaXRob3V0SWYpCi17Ci0gICAgY29uc3QgY2hhciog
c3RyID0gIiNlbHNlXG4iOwotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAm
c3RyLCAwKSk7Ci0KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAg
ICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9FTFNFX1dJVEhPVVRfSUYs
Ci0gICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLAotICAgICAg
ICAgICAgICAgICAgICAgICJlbHNlIikpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1Q
cmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci19Ci0KLVRFU1RfRihJZlRlc3QsIEVsaWZXaXRob3V0
SWYpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNlbGlmIDFcbiI7Ci0gICAgQVNTRVJUX1RS
VUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKLQotICAgIEVYUEVDVF9DQUxMKG1E
aWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0NP
TkRJVElPTkFMX0VMSUZfV0lUSE9VVF9JRiwKLSAgICAgICAgICAgICAgICAgICAgICBwcDo6U291
cmNlTG9jYXRpb24oMCwgMSksCi0gICAgICAgICAgICAgICAgICAgICAgImVsaWYiKSk7Ci0KLSAg
ICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLX0KLQot
VEVTVF9GKElmVGVzdCwgRW5kaWZXaXRob3V0SWYpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0g
IiNlbmRpZlxuIjsKLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwg
MCkpOwotCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAotICAgICAgICAgICAgICAgIHBy
aW50KHBwOjpEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfRU5ESUZfV0lUSE9VVF9JRiwKLSAg
ICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksCi0gICAgICAgICAg
ICAgICAgICAgICAgImVuZGlmIikpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVw
cm9jZXNzb3IubGV4KCZ0b2tlbik7Ci19Ci0KLVRFU1RfRihJZlRlc3QsIEVsc2VBZnRlckVsc2Up
Ci17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNpZiAxXG4iCi0gICAgICAgICAgICAgICAgICAg
ICAgIiNlbHNlXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNlbHNlXG4iCi0gICAgICAgICAg
ICAgICAgICAgICAgIiNlbmRpZlxuIjsKLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmlu
aXQoMSwgJnN0ciwgMCkpOwotCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAotICAgICAg
ICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfRUxTRV9BRlRF
Ul9FTFNFLAotICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAzKSwK
LSAgICAgICAgICAgICAgICAgICAgICAiZWxzZSIpKTsKLQotICAgIHBwOjpUb2tlbiB0b2tlbjsK
LSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotfQotCi1URVNUX0YoSWZUZXN0LCBFbGlm
QWZ0ZXJFbHNlKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgMVxuIgotICAgICAgICAg
ICAgICAgICAgICAgICIjZWxzZVxuIgotICAgICAgICAgICAgICAgICAgICAgICIjZWxpZiAwXG4i
Ci0gICAgICAgICAgICAgICAgICAgICAgIiNlbmRpZlxuIjsKLSAgICBBU1NFUlRfVFJVRShtUHJl
cHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgMCkpOwotCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0
aWNzLAotICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfQ09ORElUSU9O
QUxfRUxJRl9BRlRFUl9FTFNFLAotICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2Nh
dGlvbigwLCAzKSwKLSAgICAgICAgICAgICAgICAgICAgICAiZWxpZiIpKTsKLQotICAgIHBwOjpU
b2tlbiB0b2tlbjsKLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotfQotCi1URVNUX0Yo
SWZUZXN0LCBVbnRlcm1pbmF0ZWRJZikKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2lmIDFc
biI7Ci0gICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKLQot
ICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBwcmludChwcDo6
RGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFMX1VOVEVSTUlOQVRFRCwKLSAgICAgICAgICAgICAg
ICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksCi0gICAgICAgICAgICAgICAgICAgICAg
ImlmIikpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0
b2tlbik7Ci19Ci0KLVRFU1RfRihJZlRlc3QsIFVudGVybWluYXRlZElmZGVmKQotewotICAgIGNv
bnN0IGNoYXIqIHN0ciA9ICIjaWZkZWYgZm9vXG4iOwotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9j
ZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7Ci0KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3Ms
Ci0gICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9DT05ESVRJT05BTF9V
TlRFUk1JTkFURUQsCi0gICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAs
IDEpLAotICAgICAgICAgICAgICAgICAgICAgICJpZmRlZiIpKTsKLQotICAgIHBwOjpUb2tlbiB0
b2tlbjsKLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotfQotCi0vLyBUaGUgcHJlcHJv
Y2Vzc29yIG9ubHkgYWxsb3dzIG9uZSBleHByZXNzaW9uIHRvIGZvbGxvdyBhbiAjaWYgZGlyZWN0
aXZlLgotLy8gU3VwcGx5aW5nIHR3byBpbnRlZ2VyIGV4cHJlc3Npb25zIHNob3VsZCBiZSBhbiBl
cnJvci4KLVRFU1RfRihJZlRlc3QsIEV4dHJhSW50RXhwcmVzc2lvbikKLXsKLSAgICBjb25zdCBj
aGFyICpzdHIgPQotICAgICAgICAiI2lmIDEgMVxuIgotICAgICAgICAiI2VuZGlmXG4iOwotICAg
IEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7Ci0KLSAgICBFWFBF
Q1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfQ09ORElUSU9O
QUxfVU5FWFBFQ1RFRF9UT0tFTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgIjEiKSk7Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47
Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLX0KLQotLy8gVGhlIHByZXByb2Nlc3Nv
ciBvbmx5IGFsbG93cyBvbmUgZXhwcmVzc2lvbiB0byBmb2xsb3cgYW4gI2lmIGRpcmVjdGl2ZS4K
LS8vIFN1cHBseWluZyB0d28gZXhwcmVzc2lvbnMgd2hlcmUgb25lIHVzZXMgYSBwcmVwcm9jZXNz
b3IgZGVmaW5lIHNob3VsZCBiZSBhbiBlcnJvci4KLVRFU1RfRihJZlRlc3QsIEV4dHJhSWRlbnRp
ZmllckV4cHJlc3Npb24pCi17Ci0gICAgY29uc3QgY2hhciAqc3RyID0KLSAgICAgICAgIiNkZWZp
bmUgb25lIDFcbiIKLSAgICAgICAgIiNpZiAxIG9uZVxuIgotICAgICAgICAiI2VuZGlmXG4iOwot
ICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7Ci0KLSAgICBF
WFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfQ09ORElU
SU9OQUxfVU5FWFBFQ1RFRF9UT0tFTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAyKSwgIjEiKSk7Ci0KLSAgICBwcDo6VG9rZW4gdG9r
ZW47Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLX0KLQotLy8gRGl2aWRlIGJ5IHpl
cm8gdGhhdCdzIG5vdCBldmFsdWF0ZWQgYmVjYXVzZSBvZiBzaG9ydC1jaXJjdWl0aW5nIHNob3Vs
ZCBub3QgY2F1c2UgYW4gZXJyb3IuCi1URVNUX0YoSWZUZXN0LCBTaG9ydENpcmN1aXRlZERpdmlk
ZUJ5WmVybykKLXsKLSAgICBjb25zdCBjaGFyICpzdHIgPQotICAgICAgICAiI2lmIDEgfHwgKDIg
LyAwKVxuIgotICAgICAgICAicGFzc1xuIgotICAgICAgICAiI2VuZGlmXG4iOwotICAgIGNvbnN0
IGNoYXIgKmV4cGVjdGVkID0KLSAgICAgICAgIlxuIgotICAgICAgICAicGFzc1xuIgotICAgICAg
ICAiXG4iOwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotLy8gVW5kZWZp
bmVkIGlkZW50aWZpZXIgdGhhdCdzIG5vdCBldmFsdWF0ZWQgYmVjYXVzZSBvZiBzaG9ydC1jaXJj
dWl0aW5nIHNob3VsZCBub3QgY2F1c2UgYW4gZXJyb3IuCi1URVNUX0YoSWZUZXN0LCBTaG9ydENp
cmN1aXRlZFVuZGVmaW5lZCkKLXsKLSAgICBjb25zdCBjaGFyICpzdHIgPQotICAgICAgICAiI2lm
IDEgfHwgVU5ERUZJTkVEXG4iCi0gICAgICAgICJwYXNzXG4iCi0gICAgICAgICIjZW5kaWZcbiI7
Ci0gICAgY29uc3QgY2hhciAqZXhwZWN0ZWQgPQotICAgICAgICAiXG4iCi0gICAgICAgICJwYXNz
XG4iCi0gICAgICAgICJcbiI7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQot
Ci0vLyBEZWZpbmVkIG9wZXJhdG9yIHByb2R1Y2VkIGJ5IG1hY3JvIGV4cGFuc2lvbiBoYXMgdW5k
ZWZpbmVkIGJlaGF2aW9yIGFjY29yZGluZyB0byBDKysgc3BlYywKLS8vIHdoaWNoIHRoZSBHTFNM
IHNwZWMgcmVmZXJlbmNlcyAoc2VlIEMrKzE0IGRyYWZ0IHNwZWMgc2VjdGlvbiAxNi4xLjQpLCBi
dXQgdGhpcyBiZWhhdmlvciBpcwotLy8gbmVlZGVkIGZvciBwYXNzaW5nIGRFUVAgdGVzdHMsIHdo
aWNoIGVuZm9yY2Ugc3RyaWN0ZXIgY29tcGF0aWJpbGl0eSBiZXR3ZWVuIGltcGxlbWVudGF0aW9u
cy4KLVRFU1RfRihJZlRlc3QsIERlZmluZWRPcGVyYXRvclZhbGlkQWZ0ZXJNYWNyb0V4cGFuc2lv
bikKLXsKLSAgICBjb25zdCBjaGFyICpzdHIgPQotICAgICAgICAiI2RlZmluZSBmb28gZGVmaW5l
ZFxuIgotICAgICAgICAiI2lmICFmb28gYmFyXG4iCi0gICAgICAgICJwYXNzXG4iCi0gICAgICAg
ICIjZW5kaWZcbiI7Ci0gICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIs
IDApKTsKLQotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQocHA6OkRpYWdub3N0
aWNzOjpQUF9DT05ESVRJT05BTF9VTkVYUEVDVEVEX1RPS0VOLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDIpLCAiZGVmaW5lZCIpKTsK
LSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBf
Q09ORElUSU9OQUxfVU5FWFBFQ1RFRF9UT0tFTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAyKSwgImJhciIpKTsKLQotICAgIHBwOjpU
b2tlbiB0b2tlbjsKLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotfQotCi0vLyBEZWZp
bmVkIG9wZXJhdG9yIHByb2R1Y2VkIGJ5IG1hY3JvIGV4cGFuc2lvbiBoYXMgdW5kZWZpbmVkIGJl
aGF2aW9yIGFjY29yZGluZyB0byBDKysgc3BlYywKLS8vIHdoaWNoIHRoZSBHTFNMIHNwZWMgcmVm
ZXJlbmNlcyAoc2VlIEMrKzE0IGRyYWZ0IHNwZWMgc2VjdGlvbiAxNi4xLjQpLCBidXQgdGhpcyBi
ZWhhdmlvciBpcwotLy8gbmVlZGVkIGZvciBwYXNzaW5nIGRFUVAgdGVzdHMsIHdoaWNoIGVuZm9y
Y2Ugc3RyaWN0ZXIgY29tcGF0aWJpbGl0eSBiZXR3ZWVuIGltcGxlbWVudGF0aW9ucy4KLVRFU1Rf
RihJZlRlc3QsIFVudGVybWluYXRlZERlZmluZWRJbk1hY3JvKQotewotICAgIGNvbnN0IGNoYXIg
KnN0ciA9Ci0gICAgICAgICIjZGVmaW5lIGZvbyBkZWZpbmVkKFxuIgotICAgICAgICAiI2lmIGZv
b1xuIgotICAgICAgICAiI2VuZGlmXG4iOwotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3Iu
aW5pdCgxLCAmc3RyLCAwKSk7Ci0KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50
KHBwOjpEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfVU5FWFBFQ1RFRF9UT0tFTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAyKSwg
ImRlZmluZWQiKSk7Ci0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLCBwcmludChwcDo6RGlh
Z25vc3RpY3M6OlBQX0NPTkRJVElPTkFMX1VORVhQRUNURURfVE9LRU4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMiksICIoIikpOwot
Ci0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci19
Ci0KLS8vIERlZmluZWQgb3BlcmF0b3IgcHJvZHVjZWQgYnkgbWFjcm8gZXhwYW5zaW9uIGhhcyB1
bmRlZmluZWQgYmVoYXZpb3IgYWNjb3JkaW5nIHRvIEMrKyBzcGVjLAotLy8gd2hpY2ggdGhlIEdM
U0wgc3BlYyByZWZlcmVuY2VzIChzZWUgQysrMTQgZHJhZnQgc3BlYyBzZWN0aW9uIDE2LjEuNCks
IGJ1dCB0aGlzIGJlaGF2aW9yIGlzCi0vLyBuZWVkZWQgZm9yIHBhc3NpbmcgZEVRUCB0ZXN0cywg
d2hpY2ggZW5mb3JjZSBzdHJpY3RlciBjb21wYXRpYmlsaXR5IGJldHdlZW4gaW1wbGVtZW50YXRp
b25zLgotVEVTVF9GKElmVGVzdCwgVW50ZXJtaW5hdGVkRGVmaW5lZEluTWFjcm8yKQotewotICAg
IGNvbnN0IGNoYXIgKnN0ciA9Ci0gICAgICAgICIjZGVmaW5lIGZvbyBkZWZpbmVkKGJhclxuIgot
ICAgICAgICAiI2lmIGZvb1xuIgotICAgICAgICAiI2VuZGlmXG4iOwotICAgIEFTU0VSVF9UUlVF
KG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7Ci0KLSAgICBFWFBFQ1RfQ0FMTChtRGlh
Z25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfQ09ORElUSU9OQUxfVU5FWFBFQ1RF
RF9UT0tFTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VM
b2NhdGlvbigwLCAyKSwgImRlZmluZWQiKSk7Ci0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNz
LCBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX0NPTkRJVElPTkFMX1VORVhQRUNURURfVE9LRU4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24o
MCwgMiksICIoIikpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3Iu
bGV4KCZ0b2tlbik7Ci19Ci0KLS8vIFVuZGVmaW5lZCBzaGlmdDogbmVnYXRpdmUgc2hpZnQgb2Zm
c2V0LgotVEVTVF9GKElmVGVzdCwgQml0U2hpZnRMZWZ0T3BlcmF0b3JOZWdhdGl2ZU9mZnNldCkK
LXsKLSAgICBjb25zdCBjaGFyICpzdHIgPQotICAgICAgICAiI2lmIDIgPDwgLTEgPT0gMVxuIgot
ICAgICAgICAiZm9vXG4iCi0gICAgICAgICIjZW5kaWZcbiI7Ci0gICAgQVNTRVJUX1RSVUUobVBy
ZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIDApKTsKLQotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9z
dGljcywKLSAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX1VOREVGSU5F
RF9TSElGVCwgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiMiA8PCAtMSIpKTsKLQotICAgIHBw
OjpUb2tlbiB0b2tlbjsKLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotfQotCi0vLyBV
bmRlZmluZWQgc2hpZnQ6IHNoaWZ0IG9mZnNldCBpcyBvdXQgb2YgcmFuZ2UuCi1URVNUX0YoSWZU
ZXN0LCBCaXRTaGlmdExlZnRPcGVyYXRvck9mZnNldDMyKQotewotICAgIGNvbnN0IGNoYXIgKnN0
ciA9Ci0gICAgICAgICIjaWYgMiA8PCAzMiA9PSAxXG4iCi0gICAgICAgICJmb29cbiIKLSAgICAg
ICAgIiNlbmRpZlxuIjsKLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0
ciwgMCkpOwotCi0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNzLAotICAgICAgICAgICAgICAg
IHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfVU5ERUZJTkVEX1NISUZULCBwcDo6U291cmNlTG9j
YXRpb24oMCwgMSksICIyIDw8IDMyIikpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1Q
cmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci19Ci0KLS8vIExlZnQgaGFuZCBzaWRlIG9mIHNoaWZ0
IGlzIG5lZ2F0aXZlLgotVEVTVF9GKElmVGVzdCwgQml0U2hpZnRMZWZ0T3BlcmF0b3JOZWdhdGl2
ZUxIUykKLXsKLSAgICBjb25zdCBjaGFyICpzdHIgPQotICAgICAgICAiI2lmICgtMikgPDwgMSA9
PSAtNFxuIgotICAgICAgICAicGFzc1xuIgotICAgICAgICAiI2VuZGlmXG4iOwotICAgIGNvbnN0
IGNoYXIgKmV4cGVjdGVkID0KLSAgICAgICAgIlxuIgotICAgICAgICAicGFzc1xuIgotICAgICAg
ICAiXG4iOwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotLy8gVW5kZWZp
bmVkIHNoaWZ0OiBzaGlmdCBvZmZzZXQgaXMgb3V0IG9mIHJhbmdlLgotVEVTVF9GKElmVGVzdCwg
Qml0U2hpZnRSaWdodE9wZXJhdG9yTmVnYXRpdmVPZmZzZXQpCi17Ci0gICAgY29uc3QgY2hhciAq
c3RyID0KLSAgICAgICAgIiNpZiAyID4+IC0xID09IDRcbiIKLSAgICAgICAgImZvb1xuIgotICAg
ICAgICAiI2VuZGlmXG4iOwotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAm
c3RyLCAwKSk7Ci0KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAg
ICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9VTkRFRklORURfU0hJRlQsIHBwOjpTb3VyY2VM
b2NhdGlvbigwLCAxKSwgIjIgPj4gLTEiKSk7Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAg
bVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLX0KLQotLy8gVW5kZWZpbmVkIHNoaWZ0OiBzaGlm
dCBvZmZzZXQgaXMgb3V0IG9mIHJhbmdlLgotVEVTVF9GKElmVGVzdCwgQml0U2hpZnRSaWdodE9w
ZXJhdG9yT2Zmc2V0MzIpCi17Ci0gICAgY29uc3QgY2hhciAqc3RyID0KLSAgICAgICAgIiNpZiAy
ID4+IDMyID09IDBcbiIKLSAgICAgICAgImZvb1xuIgotICAgICAgICAiI2VuZGlmXG4iOwotICAg
IEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmc3RyLCAwKSk7Ci0KLSAgICBFWFBF
Q1RfQ0FMTChtRGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0
aWNzOjpQUF9VTkRFRklORURfU0hJRlQsIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgIjIgPj4g
MzIiKSk7Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRv
a2VuKTsKLX0KLQotLy8gTGVmdCBoYW5kIHNpZGUgb2Ygc2hpZnQgaXMgbmVnYXRpdmUuCi1URVNU
X0YoSWZUZXN0LCBCaXRTaGlmdFJpZ2h0T3BlcmF0b3JOZWdhdGl2ZUxIUykKLXsKLSAgICBjb25z
dCBjaGFyICpzdHIgPQotICAgICAgICAiI2lmICgtMikgPj4gMSA9PSAweDdmZmZmZmZmXG4iCi0g
ICAgICAgICJwYXNzXG4iCi0gICAgICAgICIjZW5kaWZcbiI7Ci0gICAgY29uc3QgY2hhciAqZXhw
ZWN0ZWQgPQotICAgICAgICAiXG4iCi0gICAgICAgICJwYXNzXG4iCi0gICAgICAgICJcbiI7Ci0K
LSAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9pbnB1dF90ZXN0LmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMv
aW5wdXRfdGVzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhMTg3OGM1ZmFm
Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJl
cHJvY2Vzc29yX3Rlc3RzL2lucHV0X3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICsw
LDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAiUHJlcHJvY2Vzc29yVGVzdC5oIgotI2lu
Y2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9JbnB1dC5oIgotI2luY2x1ZGUgImNvbXBpbGVy
L3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgotCi1jbGFzcyBJbml0VGVzdCA6IHB1YmxpYyBQcmVwcm9j
ZXNzb3JUZXN0Ci17Ci19OwotCi1URVNUX0YoSW5pdFRlc3QsIFplcm9Db3VudCkKLXsKLSAgICBF
WFBFQ1RfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMCwgTlVMTCwgTlVMTCkpOwotCi0gICAgcHA6
OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci0gICAgRVhQRUNU
X0VRKHBwOjpUb2tlbjo6TEFTVCwgdG9rZW4udHlwZSk7Ci19Ci0KLVRFU1RfRihJbml0VGVzdCwg
TnVsbFN0cmluZykKLXsKLSAgICBFWFBFQ1RfRkFMU0UobVByZXByb2Nlc3Nvci5pbml0KDEsIE5V
TEwsIE5VTEwpKTsKLX0KLQotVEVTVChJbnB1dFRlc3QsIERlZmF1bHRDb25zdHJ1Y3RvcikKLXsK
LSAgICBwcDo6SW5wdXQgaW5wdXQ7Ci0gICAgRVhQRUNUX0VRKDB1LCBpbnB1dC5jb3VudCgpKTsK
LSAgICBpbnQgbGluZU5vID0gMDsKLSAgICBFWFBFQ1RfRVEoMHUsIGlucHV0LnJlYWQoTlVMTCwg
MSwgJmxpbmVObykpOwotfQotCi1URVNUKElucHV0VGVzdCwgTnVsbExlbmd0aCkKLXsKLSAgICBj
b25zdCBjaGFyKiBzdHJbXSA9IHsiZm9vIn07Ci0gICAgcHA6OklucHV0IGlucHV0KDEsIHN0ciwg
TlVMTCk7Ci0gICAgRVhQRUNUX0VRKDN1LCBpbnB1dC5sZW5ndGgoMCkpOwotfQotCi1URVNUKElu
cHV0VGVzdCwgTmVnYXRpdmVMZW5ndGgpCi17Ci0gICAgY29uc3QgY2hhciogc3RyW10gPSB7ImZv
byJ9OwotICAgIGludCBsZW5ndGhbXSA9IHstMX07Ci0gICAgcHA6OklucHV0IGlucHV0KDEsIHN0
ciwgbGVuZ3RoKTsKLSAgICBFWFBFQ1RfRVEoM3UsIGlucHV0Lmxlbmd0aCgwKSk7Ci19Ci0KLVRF
U1QoSW5wdXRUZXN0LCBBY3R1YWxMZW5ndGgpCi17Ci0gICAgY29uc3QgY2hhciogc3RyW10gPSB7
ImZvb2JhciJ9OwotICAgIGludCBsZW5ndGhbXSA9IHszfTsKLSAgICBwcDo6SW5wdXQgaW5wdXQo
MSwgc3RyLCBsZW5ndGgpOwotICAgIC8vIE5vdGUgdGhhdCBzdHJsZW4oc3RyWzBdKSAhPSBsZW5n
dGhbMF0uCi0gICAgLy8gRXZlbiB0aGVuIElucHV0IHNob3VsZCBqdXN0IGFjY2VwdCBhbnkgbm9u
LW5lZ2F0aXZlIG51bWJlci4KLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihsZW5n
dGhbMF0pLCBpbnB1dC5sZW5ndGgoMCkpOwotfQotCi1URVNUKElucHV0VGVzdCwgU3RyaW5nKQot
ewotICAgIGNvbnN0IGNoYXIqIHN0cltdID0geyJmb28ifTsKLSAgICBwcDo6SW5wdXQgaW5wdXQo
MSwgc3RyLCBOVUxMKTsKLSAgICBFWFBFQ1RfU1RSRVEoc3RyWzBdLCBpbnB1dC5zdHJpbmcoMCkp
OwotfQotCi1URVNUKElucHV0VGVzdCwgUmVhZFNpbmdsZVN0cmluZykKLXsKLSAgICBpbnQgY291
bnQgPSAxOwotICAgIGNvbnN0IGNoYXIqIHN0cltdID0geyJmb28ifTsKLSAgICBjaGFyIGJ1Zls0
XSA9IHsnXDAnLCAnXDAnLCAnXDAnLCAnXDAnfTsKLQotICAgIGludCBtYXhTaXplID0gMTsKLSAg
ICBpbnQgbGluZU5vID0gMDsKLSAgICBwcDo6SW5wdXQgaW5wdXQxKGNvdW50LCBzdHIsIE5VTEwp
OwotICAgIEVYUEVDVF9FUSgxdSwgaW5wdXQxLnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7
Ci0gICAgRVhQRUNUX0VRKCdmJywgYnVmWzBdKTsKLSAgICBFWFBFQ1RfRVEoMXUsIGlucHV0MS5y
ZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOwotICAgIEVYUEVDVF9FUSgnbycsIGJ1ZlswXSk7
Ci0gICAgRVhQRUNUX0VRKDF1LCBpbnB1dDEucmVhZChidWYsIG1heFNpemUsICZsaW5lTm8pKTsK
LSAgICBFWFBFQ1RfRVEoJ28nLCBidWZbMF0pOwotICAgIEVYUEVDVF9FUSgwdSwgaW5wdXQxLnJl
YWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7Ci0KLSAgICBtYXhTaXplID0gMjsKLSAgICBwcDo6
SW5wdXQgaW5wdXQyKGNvdW50LCBzdHIsIE5VTEwpOwotICAgIEVYUEVDVF9FUSgydSwgaW5wdXQy
LnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJmbyIsIGJ1
Zik7Ci0gICAgRVhQRUNUX0VRKDF1LCBpbnB1dDIucmVhZChidWYsIG1heFNpemUsICZsaW5lTm8p
KTsKLSAgICBFWFBFQ1RfRVEoJ28nLCBidWZbMF0pOwotICAgIEVYUEVDVF9FUSgwdSwgaW5wdXQy
LnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7Ci0KLSAgICBtYXhTaXplID0gMzsKLSAgICBw
cDo6SW5wdXQgaW5wdXQzKGNvdW50LCBzdHIsIE5VTEwpOwotICAgIEVYUEVDVF9FUSgzdSwgaW5w
dXQzLnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJmb28i
LCBidWYpOwotICAgIEVYUEVDVF9FUSgwdSwgaW5wdXQzLnJlYWQoYnVmLCBtYXhTaXplLCAmbGlu
ZU5vKSk7Ci0KLSAgICBtYXhTaXplID0gNDsKLSAgICBwcDo6SW5wdXQgaW5wdXQ0KGNvdW50LCBz
dHIsIE5VTEwpOwotICAgIEVYUEVDVF9FUSgzdSwgaW5wdXQ0LnJlYWQoYnVmLCBtYXhTaXplLCAm
bGluZU5vKSk7Ci0gICAgRVhQRUNUX1NUUkVRKCJmb28iLCBidWYpOwotICAgIEVYUEVDVF9FUSgw
dSwgaW5wdXQ0LnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7Ci19Ci0KLVRFU1QoSW5wdXRU
ZXN0LCBSZWFkTXVsdGlwbGVTdHJpbmdzKQotewotICAgIGludCBjb3VudCA9IDM7Ci0gICAgY29u
c3QgY2hhciogc3RyW10gPSB7ImYiLCAibyIsICJvIn07Ci0gICAgY2hhciBidWZbNF0gPSB7J1ww
JywgJ1wwJywgJ1wwJywgJ1wwJ307Ci0KLSAgICBpbnQgbWF4U2l6ZSA9IDE7Ci0gICAgaW50IGxp
bmVObyA9IDA7Ci0gICAgcHA6OklucHV0IGlucHV0MShjb3VudCwgc3RyLCBOVUxMKTsKLSAgICBF
WFBFQ1RfRVEoMXUsIGlucHV0MS5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOwotICAgIEVY
UEVDVF9FUSgnZicsIGJ1ZlswXSk7Ci0gICAgRVhQRUNUX0VRKDF1LCBpbnB1dDEucmVhZChidWYs
IG1heFNpemUsICZsaW5lTm8pKTsKLSAgICBFWFBFQ1RfRVEoJ28nLCBidWZbMF0pOwotICAgIEVY
UEVDVF9FUSgxdSwgaW5wdXQxLnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7Ci0gICAgRVhQ
RUNUX0VRKCdvJywgYnVmWzBdKTsKLSAgICBFWFBFQ1RfRVEoMHUsIGlucHV0MS5yZWFkKGJ1Ziwg
bWF4U2l6ZSwgJmxpbmVObykpOwotCi0gICAgbWF4U2l6ZSA9IDI7Ci0gICAgcHA6OklucHV0IGlu
cHV0Mihjb3VudCwgc3RyLCBOVUxMKTsKLSAgICBFWFBFQ1RfRVEoMnUsIGlucHV0Mi5yZWFkKGJ1
ZiwgbWF4U2l6ZSwgJmxpbmVObykpOwotICAgIEVYUEVDVF9TVFJFUSgiZm8iLCBidWYpOwotICAg
IEVYUEVDVF9FUSgxdSwgaW5wdXQyLnJlYWQoYnVmLCBtYXhTaXplLCAmbGluZU5vKSk7Ci0gICAg
RVhQRUNUX0VRKCdvJywgYnVmWzBdKTsKLSAgICBFWFBFQ1RfRVEoMHUsIGlucHV0Mi5yZWFkKGJ1
ZiwgbWF4U2l6ZSwgJmxpbmVObykpOwotCi0gICAgbWF4U2l6ZSA9IDM7Ci0gICAgcHA6OklucHV0
IGlucHV0Myhjb3VudCwgc3RyLCBOVUxMKTsKLSAgICBFWFBFQ1RfRVEoM3UsIGlucHV0My5yZWFk
KGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOwotICAgIEVYUEVDVF9TVFJFUSgiZm9vIiwgYnVmKTsK
LSAgICBFWFBFQ1RfRVEoMHUsIGlucHV0My5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOwot
Ci0gICAgbWF4U2l6ZSA9IDQ7Ci0gICAgcHA6OklucHV0IGlucHV0NChjb3VudCwgc3RyLCBOVUxM
KTsKLSAgICBFWFBFQ1RfRVEoM3UsIGlucHV0NC5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykp
OwotICAgIEVYUEVDVF9TVFJFUSgiZm9vIiwgYnVmKTsKLSAgICBFWFBFQ1RfRVEoMHUsIGlucHV0
NC5yZWFkKGJ1ZiwgbWF4U2l6ZSwgJmxpbmVObykpOwotfQotCi1URVNUKElucHV0VGVzdCwgUmVh
ZFN0cmluZ3NXaXRoTGVuZ3RoKQotewotICAgIGludCBjb3VudCA9IDI7Ci0gICAgY29uc3QgY2hh
ciogc3RyW10gPSB7ImZvbyIsICJiYXIifTsKLSAgICAvLyBOb3RlIHRoYXQgdGhlIGxlbmd0aCBm
b3IgdGhlIGZpcnN0IHN0cmluZyBpcyAyIHdoaWNoIGlzIGxlc3MgdGhhbgotICAgIC8vIHN0cmxl
bihzdHJbMF0uIFdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGxhc3QgY2hhcmFjdGVyIGlz
IGlnbm9yZWQuCi0gICAgaW50IGxlbmd0aFtdID0gezIsIDN9OwotICAgIGNoYXIgYnVmWzZdID0g
eydcMCcsICdcMCcsICdcMCcsICdcMCcsICdcMCcsICdcMCd9OwotICAgIHNpemVfdCBtYXhTaXpl
ID0gNTsKLSAgICBpbnQgbGluZU5vID0gMDsKLQotICAgIHBwOjpJbnB1dCBpbnB1dChjb3VudCwg
c3RyLCBsZW5ndGgpOwotICAgIEVYUEVDVF9FUShtYXhTaXplLCBpbnB1dC5yZWFkKGJ1ZiwgbWF4
U2l6ZSwgJmxpbmVObykpOwotICAgIEVYUEVDVF9TVFJFUSgiZm9iYXIiLCBidWYpOwotfQotCi1U
RVNUKElucHV0VGVzdCwgUmVhZFN0cmluZ3NXaXRoTGluZUNvbnRpbnVhdGlvbikKLXsKLSAgICBp
bnQgY291bnQgPSAyOwotICAgIGNvbnN0IGNoYXIqIHN0cltdID0geyJmb29cXCIsICJcbmJhXFxc
clxuciJ9OwotICAgIGludCBsZW5ndGhbXSA9IHs0LCA3fTsKLSAgICBjaGFyIGJ1ZlsxMV0gPSB7
J1wwJywgJ1wwJywgJ1wwJywgJ1wwJywgJ1wwJywgJ1wwJywgJ1wwJywgJ1wwJywgJ1wwJywgJ1ww
JywgJ1wwJ307Ci0gICAgc2l6ZV90IG1heFNpemUgPSAxMTsKLSAgICBpbnQgbGluZU5vID0gMDsK
LQotICAgIHBwOjpJbnB1dCBpbnB1dChjb3VudCwgc3RyLCBsZW5ndGgpOwotICAgIEVYUEVDVF9F
USgzdSwgaW5wdXQucmVhZChidWYsIG1heFNpemUsICZsaW5lTm8pKTsKLSAgICBFWFBFQ1RfRVEo
MCwgbGluZU5vKTsKLSAgICBFWFBFQ1RfRVEoMnUsIGlucHV0LnJlYWQoYnVmICsgMywgbWF4U2l6
ZSAtIDMsICZsaW5lTm8pKTsKLSAgICBFWFBFQ1RfRVEoMSwgbGluZU5vKTsKLSAgICBFWFBFQ1Rf
RVEoMXUsIGlucHV0LnJlYWQoYnVmICsgNSwgbWF4U2l6ZSAtIDUsICZsaW5lTm8pKTsKLSAgICBF
WFBFQ1RfRVEoMiwgbGluZU5vKTsKLSAgICBFWFBFQ1RfU1RSRVEoImZvb2JhciIsIGJ1Zik7Ci19
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vz
c29yX3Rlc3RzL2xvY2F0aW9uX3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9sb2NhdGlvbl90ZXN0LmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZWJhZjY4YTgzODYuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvbG9jYXRpb25fdGVz
dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNTEgKzAsMCBAQAotLy8KLS8vIENvcHlyaWdodCAo
YykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0KLSNp
bmNsdWRlICJQcmVwcm9jZXNzb3JUZXN0LmgiCi0jaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vz
c29yL1Rva2VuLmgiCi0KLWNsYXNzIExvY2F0aW9uVGVzdCA6IHB1YmxpYyBQcmVwcm9jZXNzb3JU
ZXN0Ci17Ci1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBleHBlY3RMb2NhdGlvbihpbnQgY291bnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBsZW5ndGhbXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHBwOjpTb3VyY2VMb2NhdGlvbiYgbG9jYXRpb24pCi0gICAgewotICAgICAg
ICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoY291bnQsIHN0cmluZywgbGVuZ3RoKSk7
Ci0KLSAgICAgICAgcHA6OlRva2VuIHRva2VuOwotICAgICAgICBtUHJlcHJvY2Vzc29yLmxleCgm
dG9rZW4pOwotICAgICAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpJREVOVElGSUVSLCB0b2tlbi50
eXBlKTsKLSAgICAgICAgRVhQRUNUX0VRKCJmb28iLCB0b2tlbi50ZXh0KTsKLQotICAgICAgICBF
WFBFQ1RfRVEobG9jYXRpb24uZmlsZSwgdG9rZW4ubG9jYXRpb24uZmlsZSk7Ci0gICAgICAgIEVY
UEVDVF9FUShsb2NhdGlvbi5saW5lLCB0b2tlbi5sb2NhdGlvbi5saW5lKTsKLSAgICB9Ci19Owot
Ci1URVNUX0YoTG9jYXRpb25UZXN0LCBTdHJpbmcwX0xpbmUxKQotewotICAgIGNvbnN0IGNoYXIq
IHN0ciA9ICJmb28iOwotICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBsb2MoMCwgMSk7Ci0KLSAgICBT
Q09QRURfVFJBQ0UoIlN0cmluZzBfTGluZTEiKTsKLSAgICBleHBlY3RMb2NhdGlvbigxLCAmc3Ry
LCBOVUxMLCBsb2MpOwotfQotCi1URVNUX0YoTG9jYXRpb25UZXN0LCBTdHJpbmcwX0xpbmUyKQot
ewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICJcbmZvbyI7Ci0gICAgcHA6OlNvdXJjZUxvY2F0aW9u
IGxvYygwLCAyKTsKLQotICAgIFNDT1BFRF9UUkFDRSgiU3RyaW5nMF9MaW5lMiIpOwotICAgIGV4
cGVjdExvY2F0aW9uKDEsICZzdHIsIE5VTEwsIGxvYyk7Ci19Ci0KLVRFU1RfRihMb2NhdGlvblRl
c3QsIFN0cmluZzFfTGluZTEpCi17Ci0gICAgY29uc3QgY2hhciogY29uc3Qgc3RyW10gPSB7Ilxu
XG4iLCAiZm9vIn07Ci0gICAgcHA6OlNvdXJjZUxvY2F0aW9uIGxvYygxLCAxKTsKLQotICAgIFND
T1BFRF9UUkFDRSgiU3RyaW5nMV9MaW5lMSIpOwotICAgIGV4cGVjdExvY2F0aW9uKDIsIHN0ciwg
TlVMTCwgbG9jKTsKLX0KLQotVEVTVF9GKExvY2F0aW9uVGVzdCwgU3RyaW5nMV9MaW5lMikKLXsK
LSAgICBjb25zdCBjaGFyKiBjb25zdCBzdHJbXSA9IHsiXG5cbiIsICJcbmZvbyJ9OwotICAgIHBw
OjpTb3VyY2VMb2NhdGlvbiBsb2MoMSwgMik7Ci0KLSAgICBTQ09QRURfVFJBQ0UoIlN0cmluZzFf
TGluZTIiKTsKLSAgICBleHBlY3RMb2NhdGlvbigyLCBzdHIsIE5VTEwsIGxvYyk7Ci19Ci0KLVRF
U1RfRihMb2NhdGlvblRlc3QsIE5ld2xpbmVJbnNpZGVDb21tZW50Q291bnRlZCkKLXsKLSAgICBj
b25zdCBjaGFyKiBzdHIgPSAiLypcblxuKi9mb28iOwotICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBs
b2MoMCwgMyk7Ci0KLSAgICBTQ09QRURfVFJBQ0UoIk5ld2xpbmVJbnNpZGVDb21tZW50Q291bnRl
ZCIpOwotICAgIGV4cGVjdExvY2F0aW9uKDEsICZzdHIsIE5VTEwsIGxvYyk7Ci19Ci0KLVRFU1Rf
RihMb2NhdGlvblRlc3QsIEVycm9yTG9jYXRpb25BZnRlckNvbW1lbnQpCi17Ci0gICAgY29uc3Qg
Y2hhciogc3RyID0gIi8qXG5cbiovQCI7Ci0KLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29y
LmluaXQoMSwgJnN0ciwgTlVMTCkpOwotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJp
bnQocHA6OkRpYWdub3N0aWNzOjpQUF9JTlZBTElEX0NIQVJBQ1RFUiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAzKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJAIikpOwotCi0gICAgcHA6OlRva2VuIHRva2Vu
OwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci19Ci0KLS8vIFRoZSBsb2NhdGlvbiBv
ZiBhIHRva2VuIHN0cmFkZGxpbmcgdHdvIG9yIG1vcmUgc3RyaW5ncyBpcyB0aGF0IG9mIHRoZQot
Ly8gZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSB0b2tlbi4KLQotVEVTVF9GKExvY2F0aW9uVGVzdCwg
VG9rZW5TdHJhZGRsaW5nVHdvU3RyaW5ncykKLXsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBzdHJb
XSA9IHsiZiIsICJvbyJ9OwotICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBsb2MoMCwgMSk7Ci0KLSAg
ICBTQ09QRURfVFJBQ0UoIlRva2VuU3RyYWRkbGluZ1R3b1N0cmluZ3MiKTsKLSAgICBleHBlY3RM
b2NhdGlvbigyLCBzdHIsIE5VTEwsIGxvYyk7Ci19Ci0KLVRFU1RfRihMb2NhdGlvblRlc3QsIFRv
a2VuU3RyYWRkbGluZ1RocmVlU3RyaW5ncykKLXsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBzdHJb
XSA9IHsiZiIsICJvIiwgIm8ifTsKLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jKDAsIDEpOwot
Ci0gICAgU0NPUEVEX1RSQUNFKCJUb2tlblN0cmFkZGxpbmdUaHJlZVN0cmluZ3MiKTsKLSAgICBl
eHBlY3RMb2NhdGlvbigzLCBzdHIsIE5VTEwsIGxvYyk7Ci19Ci0KLVRFU1RfRihMb2NhdGlvblRl
c3QsIEVuZE9mRmlsZVdpdGhvdXROZXdsaW5lKQotewotICAgIGNvbnN0IGNoYXIqIGNvbnN0IHN0
cltdID0geyJmb28ifTsKLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgc3Ry
LCBOVUxMKSk7Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgo
JnRva2VuKTsKLSAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpJREVOVElGSUVSLCB0b2tlbi50eXBl
KTsKLSAgICBFWFBFQ1RfRVEoImZvbyIsIHRva2VuLnRleHQpOwotICAgIEVYUEVDVF9FUSgwLCB0
b2tlbi5sb2NhdGlvbi5maWxlKTsKLSAgICBFWFBFQ1RfRVEoMSwgdG9rZW4ubG9jYXRpb24ubGlu
ZSk7Ci0KLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotICAgIEVYUEVDVF9FUShwcDo6
VG9rZW46OkxBU1QsIHRva2VuLnR5cGUpOwotICAgIEVYUEVDVF9FUSgwLCB0b2tlbi5sb2NhdGlv
bi5maWxlKTsKLSAgICBFWFBFQ1RfRVEoMSwgdG9rZW4ubG9jYXRpb24ubGluZSk7Ci19Ci0KLVRF
U1RfRihMb2NhdGlvblRlc3QsIEVuZE9mRmlsZUFmdGVyTmV3bGluZSkKLXsKLSAgICBjb25zdCBj
aGFyKiBjb25zdCBzdHJbXSA9IHsiZm9vXG4ifTsKLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vz
c29yLmluaXQoMSwgc3RyLCBOVUxMKSk7Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgbVBy
ZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLSAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpJREVOVElG
SUVSLCB0b2tlbi50eXBlKTsKLSAgICBFWFBFQ1RfRVEoImZvbyIsIHRva2VuLnRleHQpOwotICAg
IEVYUEVDVF9FUSgwLCB0b2tlbi5sb2NhdGlvbi5maWxlKTsKLSAgICBFWFBFQ1RfRVEoMSwgdG9r
ZW4ubG9jYXRpb24ubGluZSk7Ci0KLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotICAg
IEVYUEVDVF9FUShwcDo6VG9rZW46OkxBU1QsIHRva2VuLnR5cGUpOwotICAgIEVYUEVDVF9FUSgw
LCB0b2tlbi5sb2NhdGlvbi5maWxlKTsKLSAgICBFWFBFQ1RfRVEoMiwgdG9rZW4ubG9jYXRpb24u
bGluZSk7Ci19Ci0KLVRFU1RfRihMb2NhdGlvblRlc3QsIEVuZE9mRmlsZUFmdGVyRW1wdHlTdHJp
bmcpCi17Ci0gICAgY29uc3QgY2hhciogY29uc3Qgc3RyW10gPSB7ImZvb1xuIiwgIlxuIiwgIiJ9
OwotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgzLCBzdHIsIE5VTEwpKTsKLQot
ICAgIHBwOjpUb2tlbiB0b2tlbjsKLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotICAg
IEVYUEVDVF9FUShwcDo6VG9rZW46OklERU5USUZJRVIsIHRva2VuLnR5cGUpOwotICAgIEVYUEVD
VF9FUSgiZm9vIiwgdG9rZW4udGV4dCk7Ci0gICAgRVhQRUNUX0VRKDAsIHRva2VuLmxvY2F0aW9u
LmZpbGUpOwotICAgIEVYUEVDVF9FUSgxLCB0b2tlbi5sb2NhdGlvbi5saW5lKTsKLQotICAgIG1Q
cmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci0gICAgRVhQRUNUX0VRKHBwOjpUb2tlbjo6TEFTVCwg
dG9rZW4udHlwZSk7Ci0gICAgRVhQRUNUX0VRKDIsIHRva2VuLmxvY2F0aW9uLmZpbGUpOwotICAg
IEVYUEVDVF9FUSgxLCB0b2tlbi5sb2NhdGlvbi5saW5lKTsKLX0KLQotVEVTVF9GKExvY2F0aW9u
VGVzdCwgVmFsaWRMaW5lRGlyZWN0aXZlMSkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2xp
bmUgMTBcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiZm9vIjsKLSAgICBwcDo6U291cmNlTG9j
YXRpb24gbG9jKDAsIDEwKTsKLQotICAgIFNDT1BFRF9UUkFDRSgiVmFsaWRMaW5lRGlyZWN0aXZl
MSIpOwotICAgIGV4cGVjdExvY2F0aW9uKDEsICZzdHIsIE5VTEwsIGxvYyk7Ci19Ci0KLVRFU1Rf
RihMb2NhdGlvblRlc3QsIFZhbGlkTGluZURpcmVjdGl2ZTIpCi17Ci0gICAgY29uc3QgY2hhciog
c3RyID0gIiNsaW5lIDEwIDIwXG4iCi0gICAgICAgICAgICAgICAgICAgICAgImZvbyI7Ci0gICAg
cHA6OlNvdXJjZUxvY2F0aW9uIGxvYygyMCwgMTApOwotCi0gICAgU0NPUEVEX1RSQUNFKCJWYWxp
ZExpbmVEaXJlY3RpdmUyIik7Ci0gICAgZXhwZWN0TG9jYXRpb24oMSwgJnN0ciwgTlVMTCwgbG9j
KTsKLX0KLQotVEVTVF9GKExvY2F0aW9uVGVzdCwgTGluZURpcmVjdGl2ZUNvbW1lbnRzSWdub3Jl
ZCkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiLyogYmFyICovIgotICAgICAgICAgICAgICAg
ICAgICAgICIjIgotICAgICAgICAgICAgICAgICAgICAgICIvKiBiYXIgKi8iCi0gICAgICAgICAg
ICAgICAgICAgICAgImxpbmUiCi0gICAgICAgICAgICAgICAgICAgICAgIi8qIGJhciAqLyIKLSAg
ICAgICAgICAgICAgICAgICAgICAiMTAiCi0gICAgICAgICAgICAgICAgICAgICAgIi8qIGJhciAq
LyIKLSAgICAgICAgICAgICAgICAgICAgICAiMjAiCi0gICAgICAgICAgICAgICAgICAgICAgIi8q
IGJhciAqLyIKLSAgICAgICAgICAgICAgICAgICAgICAiLy8gYmFyICAgIgotICAgICAgICAgICAg
ICAgICAgICAgICJcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiZm9vIjsKLSAgICBwcDo6U291
cmNlTG9jYXRpb24gbG9jKDIwLCAxMCk7Ci0KLSAgICBTQ09QRURfVFJBQ0UoIkxpbmVEaXJlY3Rp
dmVDb21tZW50c0lnbm9yZWQiKTsKLSAgICBleHBlY3RMb2NhdGlvbigxLCAmc3RyLCBOVUxMLCBs
b2MpOwotfQotCi1URVNUX0YoTG9jYXRpb25UZXN0LCBMaW5lRGlyZWN0aXZlV2l0aE1hY3JvMSkK
LXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2RlZmluZSBMIDEwXG4iCi0gICAgICAgICAgICAg
ICAgICAgICAgIiNkZWZpbmUgRih4KSB4XG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiNsaW5l
IEwgRigyMClcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiZm9vIjsKLSAgICBwcDo6U291cmNl
TG9jYXRpb24gbG9jKDIwLCAxMCk7Ci0KLSAgICBTQ09QRURfVFJBQ0UoIkxpbmVEaXJlY3RpdmVX
aXRoTWFjcm8xIik7Ci0gICAgZXhwZWN0TG9jYXRpb24oMSwgJnN0ciwgTlVMTCwgbG9jKTsKLX0K
LQotVEVTVF9GKExvY2F0aW9uVGVzdCwgTGluZURpcmVjdGl2ZVdpdGhNYWNybzIpCi17Ci0gICAg
Y29uc3QgY2hhciogc3RyID0gIiNkZWZpbmUgTE9DIDEwIDIwXG4iCi0gICAgICAgICAgICAgICAg
ICAgICAgIiNsaW5lIExPQ1xuIgotICAgICAgICAgICAgICAgICAgICAgICJmb28iOwotICAgIHBw
OjpTb3VyY2VMb2NhdGlvbiBsb2MoMjAsIDEwKTsKLQotICAgIFNDT1BFRF9UUkFDRSgiTGluZURp
cmVjdGl2ZVdpdGhNYWNybzIiKTsKLSAgICBleHBlY3RMb2NhdGlvbigxLCAmc3RyLCBOVUxMLCBs
b2MpOwotfQotCi1URVNUX0YoTG9jYXRpb25UZXN0LCBMaW5lRGlyZWN0aXZlV2l0aFByZWRlZmlu
ZWRNYWNybykKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI2xpbmUgX19MSU5FX18gX19GSUxF
X19cbiIKLSAgICAgICAgICAgICAgICAgICAgICAiZm9vIjsKLSAgICBwcDo6U291cmNlTG9jYXRp
b24gbG9jKDAsIDEpOwotCi0gICAgU0NPUEVEX1RSQUNFKCJMaW5lRGlyZWN0aXZlV2l0aE1hY3Jv
Iik7Ci0gICAgZXhwZWN0TG9jYXRpb24oMSwgJnN0ciwgTlVMTCwgbG9jKTsKLX0KLQotVEVTVF9G
KExvY2F0aW9uVGVzdCwgTGluZURpcmVjdGl2ZU5ld2xpbmVCZWZvcmVTdHJpbmdCcmVhaykKLXsK
LSAgICBjb25zdCBjaGFyKiBjb25zdCBzdHJbXSA9IHsiI2xpbmUgMTAgMjBcbiIsICJmb28ifTsK
LSAgICAvLyBTdHJpbmcgbnVtYmVyIGlzIGluY3JlbWVudGVkIGFmdGVyIGl0IGlzIHNldCBieSB0
aGUgbGluZSBkaXJlY3RpdmUuCi0gICAgLy8gQWxzbyBub3RpY2UgdGhhdCBsaW5lIG51bWJlciBp
cyByZXNldCBhZnRlciB0aGUgc3RyaW5nIGJyZWFrLgotICAgIHBwOjpTb3VyY2VMb2NhdGlvbiBs
b2MoMjEsIDEpOwotCi0gICAgU0NPUEVEX1RSQUNFKCJMaW5lRGlyZWN0aXZlTmV3bGluZUJlZm9y
ZVN0cmluZ0JyZWFrIik7Ci0gICAgZXhwZWN0TG9jYXRpb24oMiwgc3RyLCBOVUxMLCBsb2MpOwot
fQotCi1URVNUX0YoTG9jYXRpb25UZXN0LCBMaW5lRGlyZWN0aXZlTmV3bGluZUFmdGVyU3RyaW5n
QnJlYWspCi17Ci0gICAgY29uc3QgY2hhciogY29uc3Qgc3RyW10gPSB7IiNsaW5lIDEwIDIwIiwg
IlxuZm9vIn07Ci0gICAgLy8gU3RyaW5nIG51bWJlciBpcyBpbmNyZW1lbnRlZCBiZWZvcmUgaXQg
aXMgc2V0IGJ5IHRoZSBsaW5lIGRpcmVjdGl2ZS4KLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9j
KDIwLCAxMCk7Ci0KLSAgICBTQ09QRURfVFJBQ0UoIkxpbmVEaXJlY3RpdmVOZXdsaW5lQWZ0ZXJT
dHJpbmdCcmVhayIpOwotICAgIGV4cGVjdExvY2F0aW9uKDIsIHN0ciwgTlVMTCwgbG9jKTsKLX0K
LQotVEVTVF9GKExvY2F0aW9uVGVzdCwgTGluZURpcmVjdGl2ZU1pc3NpbmdOZXdsaW5lKQotewot
ICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjbGluZSAxMCI7Ci0gICAgQVNTRVJUX1RSVUUobVByZXBy
b2Nlc3Nvci5pbml0KDEsICZzdHIsIE5VTEwpKTsKLQotICAgIHVzaW5nIHRlc3Rpbmc6Ol87Ci0g
ICAgLy8gRXJyb3IgcmVwb3J0ZWQgYWJvdXQgRU9GLgotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9z
dGljcywgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9FT0ZfSU5fRElSRUNUSVZFLCBfLCBfKSk7
Ci0KLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsK
LX0KLQotc3RydWN0IExpbmVUZXN0UGFyYW0KLXsKLSAgICBjb25zdCBjaGFyKiBzdHI7Ci0gICAg
cHA6OkRpYWdub3N0aWNzOjpJRCBpZDsKLX07Ci0KLWNsYXNzIEludmFsaWRMaW5lVGVzdCA6IHB1
YmxpYyBMb2NhdGlvblRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdGVzdGlu
Zzo6V2l0aFBhcmFtSW50ZXJmYWNlPExpbmVUZXN0UGFyYW0+Ci17Ci19OwotCi1URVNUX1AoSW52
YWxpZExpbmVUZXN0LCBJZGVudGlmaWVkKQotewotICAgIExpbmVUZXN0UGFyYW0gcGFyYW0gPSBH
ZXRQYXJhbSgpOwotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5pdCgxLCAmcGFyYW0u
c3RyLCBOVUxMKSk7Ci0KLSAgICB1c2luZyB0ZXN0aW5nOjpfOwotICAgIC8vIEludmFsaWQgbGlu
ZSBkaXJlY3RpdmUgY2FsbC4KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBh
cmFtLmlkLCBwcDo6U291cmNlTG9jYXRpb24oMCwgMSksIF8pKTsKLQotICAgIHBwOjpUb2tlbiB0
b2tlbjsKLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotfQotCi1zdGF0aWMgY29uc3Qg
TGluZVRlc3RQYXJhbSBrUGFyYW1zW10gPSB7Ci0gICAgeyIjbGluZVxuIiwgcHA6OkRpYWdub3N0
aWNzOjpQUF9JTlZBTElEX0xJTkVfRElSRUNUSVZFfSwKLSAgICB7IiNsaW5lIGZvb1xuIiwgcHA6
OkRpYWdub3N0aWNzOjpQUF9JTlZBTElEX0xJTkVfTlVNQkVSfSwKLSAgICB7IiNsaW5lIGRlZmlu
ZWQoZm9vKVxuIiwgcHA6OkRpYWdub3N0aWNzOjpQUF9JTlZBTElEX0xJTkVfTlVNQkVSfSwKLSAg
ICB7IiNsaW5lIDEwIGZvb1xuIiwgcHA6OkRpYWdub3N0aWNzOjpQUF9JTlZBTElEX0ZJTEVfTlVN
QkVSfSwKLSAgICB7IiNsaW5lIDEwIDIwIGZvb1xuIiwgcHA6OkRpYWdub3N0aWNzOjpQUF9VTkVY
UEVDVEVEX1RPS0VOfSwKLSAgICB7IiNsaW5lIDB4ZmZmZmZmZmZcbiIsIHBwOjpEaWFnbm9zdGlj
czo6UFBfSU5URUdFUl9PVkVSRkxPV30sCi0gICAgeyIjbGluZSAxMCAweGZmZmZmZmZmXG4iLCBw
cDo6RGlhZ25vc3RpY3M6OlBQX0lOVEVHRVJfT1ZFUkZMT1d9fTsKLQotSU5TVEFOVElBVEVfVEVT
VF9DQVNFX1AoQWxsLCBJbnZhbGlkTGluZVRlc3QsIHRlc3Rpbmc6OlZhbHVlc0luKGtQYXJhbXMp
KTsKLQotc3RydWN0IExpbmVFeHByZXNzaW9uVGVzdFBhcmFtCi17Ci0gICAgY29uc3QgY2hhciAq
ZXhwcmVzc2lvbjsKLSAgICBpbnQgZXhwZWN0ZWRMaW5lOwotfTsKLQotY2xhc3MgTGluZUV4cHJl
c3Npb25UZXN0IDogcHVibGljIExvY2F0aW9uVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8TGluZUV4cHJlc3Npb25UZXN0
UGFyYW0+Ci17Ci19OwotCi1URVNUX1AoTGluZUV4cHJlc3Npb25UZXN0LCBFeHByZXNzaW9uRXZh
bHVhdGlvbikKLXsKLSAgICBMaW5lRXhwcmVzc2lvblRlc3RQYXJhbSBwYXJhbSA9IEdldFBhcmFt
KCk7Ci0gICAgY29uc3QgY2hhciAqc3Ryc1szXSA9IHsiI2xpbmUgIiwgcGFyYW0uZXhwcmVzc2lv
biwgIlxuZm9vIn07Ci0KLSAgICBwcDo6U291cmNlTG9jYXRpb24gbG9jKDIsIHBhcmFtLmV4cGVj
dGVkTGluZSk7Ci0KLSAgICBleHBlY3RMb2NhdGlvbigzLCBzdHJzLCBOVUxMLCBsb2MpOwotfQot
Ci1zdGF0aWMgY29uc3QgTGluZUV4cHJlc3Npb25UZXN0UGFyYW0ga1BhcmFtc0xpbmVFeHByZXNz
aW9uVGVzdFtdID0gewotICAgIHsiMSArIDIiLCAzfSwKLSAgICB7IjUgLSAzIiwgMn0sCi0gICAg
eyI3ICogMTEiLCA3N30sCi0gICAgeyIyMCAvIDEwIiwgMn0sCi0gICAgeyIxMCAlIDUiLCAwfSwK
LSAgICB7IjcgJiYgMyIsIDF9LAotICAgIHsiNyB8fCAwIiwgMX0sCi0gICAgeyIxMSA9PSAxMSIs
IDF9LAotICAgIHsiMTEgIT0gMTEiLCAwfSwKLSAgICB7IjExID4gNyIsIDF9LAotICAgIHsiMTEg
PCA3IiwgMH0sCi0gICAgeyIxMSA+PSA3IiwgMX0sCi0gICAgeyIxMSA8PSA3IiwgMH0sCi0gICAg
eyIhMTEiLCAwfSwKLSAgICB7Ii0xIiwgLTF9LAotICAgIHsiKzkiLCA5fSwKLSAgICB7IigxICsg
MikgKiA0IiwgMTJ9LAotICAgIHsiMyB8IDUiLCA3fSwKLSAgICB7IjMgXiA1IiwgNn0sCi0gICAg
eyIzICYgNSIsIDF9LAotICAgIHsifjUiLCB+NX0sCi0gICAgeyIyIDw8IDMiLCAxNn0sCi0gICAg
eyIxNiA+PiAyIiwgNH19OwotCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChBbGwsIExpbmVFeHBy
ZXNzaW9uVGVzdCwgdGVzdGluZzo6VmFsdWVzSW4oa1BhcmFtc0xpbmVFeHByZXNzaW9uVGVzdCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nl
c3Nvcl90ZXN0cy9udW1iZXJfdGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL251bWJlcl90ZXN0LmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNGUyOTVkMzA3MDcuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvbnVtYmVyX3Rlc3QuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMTcwICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIw
MTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVk
ZSAiUHJlcHJvY2Vzc29yVGVzdC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9U
b2tlbi5oIgotCi0jZGVmaW5lIENMT1NFRF9SQU5HRSh4LCB5KSB0ZXN0aW5nOjpSYW5nZSh4LCBz
dGF0aWNfY2FzdDxjaGFyPigoeSkgKyAxKSkKLQotY2xhc3MgSW52YWxpZE51bWJlclRlc3QgOiBw
dWJsaWMgUHJlcHJvY2Vzc29yVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxjb25zdCBjaGFyKj4KLXsKLX07Ci0KLVRFU1Rf
UChJbnZhbGlkTnVtYmVyVGVzdCwgSW52YWxpZE51bWJlcklkZW50aWZpZWQpCi17Ci0gICAgY29u
c3QgY2hhciogc3RyID0gR2V0UGFyYW0oKTsKLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29y
LmluaXQoMSwgJnN0ciwgMCkpOwotCi0gICAgdXNpbmcgdGVzdGluZzo6XzsKLSAgICBFWFBFQ1Rf
Q0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9OVU1C
RVIsIF8sIHN0cikpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIG1QcmVwcm9jZXNzb3Iu
bGV4KCZ0b2tlbik7Ci19Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKEludmFsaWRJbnRlZ2Vy
cywgSW52YWxpZE51bWJlclRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpW
YWx1ZXMoIjFhIiwgIjA4IiwgIjB4RyIpKTsKLQotCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChJ
bnZhbGlkRmxvYXRzLCBJbnZhbGlkTnVtYmVyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3Rpbmc6OlZhbHVlcygiMWVnIiwgIjAuYSIsICIwLjEuMiIsICIuMGEiLCAiLjAuMSIpKTsK
LQotdHlwZWRlZiBzdGQ6OnRyMTo6dHVwbGU8Y29uc3QgY2hhciosIGNoYXI+IEludGVnZXJQYXJh
bXM7Ci1jbGFzcyBJbnRlZ2VyVGVzdCA6IHB1YmxpYyBQcmVwcm9jZXNzb3JUZXN0LAotICAgICAg
ICAgICAgICAgICAgICBwdWJsaWMgdGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPEludGVnZXJQ
YXJhbXM+Ci17Ci19OwotCi1URVNUX1AoSW50ZWdlclRlc3QsIElkZW50aWZpZWQpCi17Ci0gICAg
c3RkOjpzdHJpbmcgc3RyKHN0ZDo6dHIxOjpnZXQ8MD4oR2V0UGFyYW0oKSkpOyAgLy8gcHJlZml4
LgotICAgIHN0ci5wdXNoX2JhY2soc3RkOjp0cjE6OmdldDwxPihHZXRQYXJhbSgpKSk7ICAvLyBk
aWdpdC4KLSAgICBjb25zdCBjaGFyKiBjc3RyID0gc3RyLmNfc3RyKCk7Ci0KLSAgICBBU1NFUlRf
VFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJmNzdHIsIDApKTsKLQotICAgIHBwOjpUb2tlbiB0
b2tlbjsKLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotICAgIEVYUEVDVF9FUShwcDo6
VG9rZW46OkNPTlNUX0lOVCwgdG9rZW4udHlwZSk7Ci0gICAgRVhQRUNUX0VRKHN0ciwgdG9rZW4u
dGV4dCk7Ci19Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9QKERlY2ltYWxJbnRlZ2VyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgSW50ZWdlclRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0aW5nOjpDb21iaW5lKHRlc3Rpbmc6OlZhbHVlcygiIiksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5HRSgnMCcsICc5JykpKTsKLQotSU5T
VEFOVElBVEVfVEVTVF9DQVNFX1AoT2N0YWxJbnRlZ2VyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgSW50ZWdlclRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpDb21iaW5l
KHRlc3Rpbmc6OlZhbHVlcygiMCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDTE9TRURfUkFOR0UoJzAnLCAnNycpKSk7Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QKEhleGFkZWNpbWFsSW50ZWdlcl8wXzksCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnRl
Z2VyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUodGVzdGlu
Zzo6VmFsdWVzKCIweCIsICIwWCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDTE9TRURfUkFOR0UoJzAnLCAnOScpKSk7Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QKEhleGFkZWNpbWFsSW50ZWdlcl9hX2YsCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnRl
Z2VyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUodGVzdGlu
Zzo6VmFsdWVzKCIweCIsICIwWCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDTE9TRURfUkFOR0UoJ2EnLCAnZicpKSk7Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FT
RV9QKEhleGFkZWNpbWFsSW50ZWdlcl9BX0YsCi0gICAgICAgICAgICAgICAgICAgICAgICBJbnRl
Z2VyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUodGVzdGlu
Zzo6VmFsdWVzKCIweCIsICIwWCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDTE9TRURfUkFOR0UoJ0EnLCAnRicpKSk7Ci0KLWNsYXNzIEZsb2F0VGVzdCA6IHB1
YmxpYyBQcmVwcm9jZXNzb3JUZXN0Ci17Ci0gIHByb3RlY3RlZDoKLSAgICB2b2lkIGV4cGVjdEZs
b2F0KGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIpCi0gICAgewotICAgICAgICBjb25zdCBjaGFyKiBj
c3RyID0gc3RyLmNfc3RyKCk7Ci0gICAgICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9jZXNzb3IuaW5p
dCgxLCAmY3N0ciwgMCkpOwotCi0gICAgICAgIHBwOjpUb2tlbiB0b2tlbjsKLSAgICAgICAgbVBy
ZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLSAgICAgICAgRVhQRUNUX0VRKHBwOjpUb2tlbjo6Q09O
U1RfRkxPQVQsIHRva2VuLnR5cGUpOwotICAgICAgICBFWFBFQ1RfRVEoc3RyLCB0b2tlbi50ZXh0
KTsKLSAgICB9Ci19OwotCi10eXBlZGVmIHN0ZDo6dHIxOjp0dXBsZTxjaGFyLCBjaGFyLCBjb25z
dCBjaGFyKiwgY2hhcj4gRmxvYXRTY2llbnRpZmljUGFyYW1zOwotY2xhc3MgRmxvYXRTY2llbnRp
ZmljVGVzdCA6Ci0gICAgcHVibGljIEZsb2F0VGVzdCwKLSAgICBwdWJsaWMgdGVzdGluZzo6V2l0
aFBhcmFtSW50ZXJmYWNlPEZsb2F0U2NpZW50aWZpY1BhcmFtcz4KLXsKLX07Ci0KLS8vIFRoaXMg
dGVzdCBjb3ZlcnMgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBvZiBmb3JtIFswLTldW2VFXVsrLV0/
WzAtOV0uCi1URVNUX1AoRmxvYXRTY2llbnRpZmljVGVzdCwgRmxvYXRJZGVudGlmaWVkKQotewot
ICAgIHN0ZDo6c3RyaW5nIHN0cjsKLSAgICBzdHIucHVzaF9iYWNrKHN0ZDo6dHIxOjpnZXQ8MD4o
R2V0UGFyYW0oKSkpOyAgLy8gc2lnbmlmaWNhbmQgWzAtOV0uCi0gICAgc3RyLnB1c2hfYmFjayhz
dGQ6OnRyMTo6Z2V0PDE+KEdldFBhcmFtKCkpKTsgIC8vIHNlcGFyYXRvciBbZUVdLgotICAgIHN0
ci5hcHBlbmQoc3RkOjp0cjE6OmdldDwyPihHZXRQYXJhbSgpKSk7ICAvLyBzaWduIFsiICIgIisi
ICItIl0uCi0gICAgc3RyLnB1c2hfYmFjayhzdGQ6OnRyMTo6Z2V0PDM+KEdldFBhcmFtKCkpKTsg
IC8vIGV4cG9uZW50IFswLTldLgotCi0gICAgU0NPUEVEX1RSQUNFKCJGbG9hdFNjaWVudGlmaWNU
ZXN0Iik7Ci0gICAgZXhwZWN0RmxvYXQoc3RyKTsKLX0KLQotSU5TVEFOVElBVEVfVEVTVF9DQVNF
X1AoRmxvYXRTY2llbnRpZmljLAotICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRTY2llbnRp
ZmljVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6OkNvbWJpbmUoQ0xPU0VE
X1JBTkdFKCcwJywgJzknKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdGluZzo6VmFsdWVzKCdlJywgJ0UnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdGluZzo6VmFsdWVzKCIiLCAiKyIsICItIiksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT1NFRF9SQU5HRSgnMCcsICc5JykpKTsK
LQotdHlwZWRlZiBzdGQ6OnRyMTo6dHVwbGU8Y2hhciwgY2hhcj4gRmxvYXRGcmFjdGlvblBhcmFt
czsKLWNsYXNzIEZsb2F0RnJhY3Rpb25UZXN0IDoKLSAgICBwdWJsaWMgRmxvYXRUZXN0LAotICAg
IHB1YmxpYyB0ZXN0aW5nOjpXaXRoUGFyYW1JbnRlcmZhY2U8RmxvYXRGcmFjdGlvblBhcmFtcz4K
LXsKLX07Ci0KLS8vIFRoaXMgdGVzdCBjb3ZlcnMgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBvZiBm
b3JtIFswLTldIi4iIGFuZCBbMC05XT8iLiJbMC05XS4KLVRFU1RfUChGbG9hdEZyYWN0aW9uVGVz
dCwgRmxvYXRJZGVudGlmaWVkKQotewotICAgIHN0ZDo6c3RyaW5nIHN0cjsKLQotICAgIGNoYXIg
c2lnbmlmaWNhbmQgPSBzdGQ6OnRyMTo6Z2V0PDA+KEdldFBhcmFtKCkpOwotICAgIGlmIChzaWdu
aWZpY2FuZCAhPSAnXDAnKQotICAgICAgICBzdHIucHVzaF9iYWNrKHNpZ25pZmljYW5kKTsKLQot
ICAgIHN0ci5wdXNoX2JhY2soJy4nKTsKLQotICAgIGNoYXIgZnJhY3Rpb24gPSBzdGQ6OnRyMTo6
Z2V0PDE+KEdldFBhcmFtKCkpOwotICAgIGlmIChmcmFjdGlvbiAhPSAnXDAnKQotICAgICAgICBz
dHIucHVzaF9iYWNrKGZyYWN0aW9uKTsKLQotICAgIFNDT1BFRF9UUkFDRSgiRmxvYXRGcmFjdGlv
blRlc3QiKTsKLSAgICBleHBlY3RGbG9hdChzdHIpOwotfQotCi1JTlNUQU5USUFURV9URVNUX0NB
U0VfUChGbG9hdEZyYWN0aW9uX1hfWCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0RnJh
Y3Rpb25UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZShDTE9T
RURfUkFOR0UoJzAnLCAnOScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDTE9TRURfUkFOR0UoJzAnLCAnOScpKSk7Ci0KLUlOU1RBTlRJQVRFX1RFU1RfQ0FTRV9Q
KEZsb2F0RnJhY3Rpb25fMF9YLAotICAgICAgICAgICAgICAgICAgICAgICAgRmxvYXRGcmFjdGlv
blRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKHRlc3Rpbmc6
OlZhbHVlcygnXDAnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Q0xPU0VEX1JBTkdFKCcwJywgJzknKSkpOwotCi1JTlNUQU5USUFURV9URVNUX0NBU0VfUChGbG9h
dEZyYWN0aW9uX1hfMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0RnJhY3Rpb25UZXN0
LAotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGluZzo6Q29tYmluZShDTE9TRURfUkFOR0Uo
JzAnLCAnOScpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
aW5nOjpWYWx1ZXMoJ1wwJykpKTsKLQotLy8gSW4gdGhlIHRlc3RzIGFib3ZlIHdlIGhhdmUgdGVz
dGVkIGluZGl2aWR1YWwgcGFydHMgb2YgYSBmbG9hdCBzZXBhcmF0ZWx5LgotLy8gVGhpcyB0ZXN0
IGhhcyBhbGwgcGFydHMgb2YgYSBmbG9hdC4KLVRFU1RfRihGbG9hdFRlc3QsIEZyYWN0aW9uU2Np
ZW50aWZpYykKLXsKLSAgICBTQ09QRURfVFJBQ0UoIkZyYWN0aW9uU2NpZW50aWZpYyIpOwotICAg
IGV4cGVjdEZsb2F0KCIwLjFlKzIiKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvb3BlcmF0b3JfdGVzdC5jcHAgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL29wZXJh
dG9yX3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDVjYmUzZmM2Ny4u
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXBy
b2Nlc3Nvcl90ZXN0cy9vcGVyYXRvcl90ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgwICsw
LDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAiUHJlcHJvY2Vzc29yVGVzdC5oIgotI2lu
Y2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5oIgotCi1zdHJ1Y3QgT3BlcmF0b3JU
ZXN0UGFyYW0KLXsKLSAgICBjb25zdCBjaGFyKiBzdHI7Ci0gICAgaW50IG9wOwotfTsKLQotY2xh
c3MgT3BlcmF0b3JUZXN0IDogcHVibGljIFByZXByb2Nlc3NvclRlc3QsCi0gICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgdGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPE9wZXJhdG9yVGVzdFBh
cmFtPgotewotfTsKLQotVEVTVF9QKE9wZXJhdG9yVGVzdCwgSWRlbnRpZmllZCkKLXsKLSAgICBP
cGVyYXRvclRlc3RQYXJhbSBwYXJhbSA9IEdldFBhcmFtKCk7Ci0KLSAgICBBU1NFUlRfVFJVRSht
UHJlcHJvY2Vzc29yLmluaXQoMSwgJnBhcmFtLnN0ciwgMCkpOwotCi0gICAgcHA6OlRva2VuIHRv
a2VuOwotICAgIG1QcmVwcm9jZXNzb3IubGV4KCZ0b2tlbik7Ci0gICAgRVhQRUNUX0VRKHBhcmFt
Lm9wLCB0b2tlbi50eXBlKTsKLSAgICBFWFBFQ1RfRVEocGFyYW0uc3RyLCB0b2tlbi50ZXh0KTsK
LX0KLQotc3RhdGljIGNvbnN0IE9wZXJhdG9yVGVzdFBhcmFtIGtPcGVyYXRvcnNbXSA9IHsKLSAg
ICB7IigiLCAnKCd9LAotICAgIHsiKSIsICcpJ30sCi0gICAgeyJbIiwgJ1snfSwKLSAgICB7Il0i
LCAnXSd9LAotICAgIHsiLiIsICcuJ30sCi0gICAgeyIrIiwgJysnfSwKLSAgICB7Ii0iLCAnLSd9
LAotICAgIHsifiIsICd+J30sCi0gICAgeyIhIiwgJyEnfSwKLSAgICB7IioiLCAnKid9LAotICAg
IHsiLyIsICcvJ30sCi0gICAgeyIlIiwgJyUnfSwKLSAgICB7IjwiLCAnPCd9LAotICAgIHsiPiIs
ICc+J30sCi0gICAgeyImIiwgJyYnfSwKLSAgICB7Il4iLCAnXid9LAotICAgIHsifCIsICd8J30s
Ci0gICAgeyI/IiwgJz8nfSwKLSAgICB7IjoiLCAnOid9LAotICAgIHsiPSIsICc9J30sCi0gICAg
eyIsIiwgJywnfSwKLSAgICB7IisrIiwgIHBwOjpUb2tlbjo6T1BfSU5DfSwKLSAgICB7Ii0tIiwg
IHBwOjpUb2tlbjo6T1BfREVDfSwKLSAgICB7Ijw8IiwgIHBwOjpUb2tlbjo6T1BfTEVGVH0sCi0g
ICAgeyI+PiIsICBwcDo6VG9rZW46Ok9QX1JJR0hUfSwKLSAgICB7Ijw9IiwgIHBwOjpUb2tlbjo6
T1BfTEV9LAotICAgIHsiPj0iLCAgcHA6OlRva2VuOjpPUF9HRX0sCi0gICAgeyI9PSIsICBwcDo6
VG9rZW46Ok9QX0VRfSwKLSAgICB7IiE9IiwgIHBwOjpUb2tlbjo6T1BfTkV9LAotICAgIHsiJiYi
LCAgcHA6OlRva2VuOjpPUF9BTkR9LAotICAgIHsiXl4iLCAgcHA6OlRva2VuOjpPUF9YT1J9LAot
ICAgIHsifHwiLCAgcHA6OlRva2VuOjpPUF9PUn0sCi0gICAgeyIrPSIsICBwcDo6VG9rZW46Ok9Q
X0FERF9BU1NJR059LAotICAgIHsiLT0iLCAgcHA6OlRva2VuOjpPUF9TVUJfQVNTSUdOfSwKLSAg
ICB7Iio9IiwgIHBwOjpUb2tlbjo6T1BfTVVMX0FTU0lHTn0sCi0gICAgeyIvPSIsICBwcDo6VG9r
ZW46Ok9QX0RJVl9BU1NJR059LAotICAgIHsiJT0iLCAgcHA6OlRva2VuOjpPUF9NT0RfQVNTSUdO
fSwKLSAgICB7Ijw8PSIsIHBwOjpUb2tlbjo6T1BfTEVGVF9BU1NJR059LAotICAgIHsiPj49Iiwg
cHA6OlRva2VuOjpPUF9SSUdIVF9BU1NJR059LAotICAgIHsiJj0iLCAgcHA6OlRva2VuOjpPUF9B
TkRfQVNTSUdOfSwKLSAgICB7Il49IiwgIHBwOjpUb2tlbjo6T1BfWE9SX0FTU0lHTn0sCi0gICAg
eyJ8PSIsICBwcDo6VG9rZW46Ok9QX09SX0FTU0lHTn0KLX07Ci0KLUlOU1RBTlRJQVRFX1RFU1Rf
Q0FTRV9QKEFsbCwgT3BlcmF0b3JUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdGlu
Zzo6VmFsdWVzSW4oa09wZXJhdG9ycykpOwotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL3ByYWdtYV90ZXN0LmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvcHJhZ21h
X3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Mjk5MmFjZWQ1MC4uMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nl
c3Nvcl90ZXN0cy9wcmFnbWFfdGVzdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTQgKzAsMCBA
QAotLy8KLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KLS8vCi0KLSNpbmNsdWRlICJQcmVwcm9jZXNzb3JUZXN0LmgiCi0jaW5jbHVk
ZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL1Rva2VuLmgiCi0KLWNsYXNzIFByYWdtYVRlc3QgOiBw
dWJsaWMgUHJlcHJvY2Vzc29yVGVzdAotewotfTsKLQotVEVTVF9GKFByYWdtYVRlc3QsIEVtcHR5
TmFtZSkKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI3ByYWdtYVxuIjsKLSAgICBjb25zdCBj
aGFyKiBleHBlY3RlZCA9ICJcbiI7Ci0KLSAgICB1c2luZyB0ZXN0aW5nOjpfOwotICAgIC8vIE5v
IGhhbmRsZVByYWdtYSBjYWxscy4KLSAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwg
aGFuZGxlUHJhZ21hKF8sIF8sIF8sIGZhbHNlKSkuVGltZXMoMCk7Ci0gICAgLy8gTm8gZXJyb3Ig
b3Igd2FybmluZy4KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KF8sIF8sIF8p
KS5UaW1lcygwKTsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRFU1Rf
RihQcmFnbWFUZXN0LCBFbXB0eVZhbHVlKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjcHJh
Z21hIGZvb1xuIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcbiI7Ci0KLSAgICB1c2lu
ZyB0ZXN0aW5nOjpfOwotICAgIEVYUEVDVF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVyLAotICAgICAg
ICAgICAgICAgIGhhbmRsZVByYWdtYShwcDo6U291cmNlTG9jYXRpb24oMCwgMSksICJmb28iLCAi
IiwgZmFsc2UpKTsKLSAgICAvLyBObyBlcnJvciBvciB3YXJuaW5nLgotICAgIEVYUEVDVF9DQUxM
KG1EaWFnbm9zdGljcywgcHJpbnQoXywgXywgXykpLlRpbWVzKDApOwotCi0gICAgcHJlcHJvY2Vz
cyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKFByYWdtYVRlc3QsIE5hbWVWYWx1ZSkKLXsK
LSAgICBjb25zdCBjaGFyKiBzdHIgPSAiI3ByYWdtYSBmb28oYmFyKVxuIjsKLSAgICBjb25zdCBj
aGFyKiBleHBlY3RlZCA9ICJcbiI7Ci0KLSAgICB1c2luZyB0ZXN0aW5nOjpfOwotICAgIEVYUEVD
VF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVyLAotICAgICAgICAgICAgICAgIGhhbmRsZVByYWdtYShw
cDo6U291cmNlTG9jYXRpb24oMCwgMSksICJmb28iLCAiYmFyIiwgZmFsc2UpKTsKLSAgICAvLyBO
byBlcnJvciBvciB3YXJuaW5nLgotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQo
XywgXywgXykpLlRpbWVzKDApOwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0K
LQotVEVTVF9GKFByYWdtYVRlc3QsIFNUREdMKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIj
cHJhZ21hIFNUREdMXG4iOwotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gIlxuIjsKLQotICAg
IHVzaW5nIHRlc3Rpbmc6Ol87Ci0gICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRsZXIsCi0g
ICAgICAgICAgICAgICAgaGFuZGxlUHJhZ21hKF8sIF8sIF8sIF8pKS5UaW1lcygwKTsKLSAgICAv
LyBObyBlcnJvciBvciB3YXJuaW5nLgotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJp
bnQoXywgXywgXykpLlRpbWVzKDApOwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsK
LX0KLQotVEVTVF9GKFByYWdtYVRlc3QsIFNUREdMSW52YXJpYW50QWxsKQotewotICAgIGNvbnN0
IGNoYXIqIHN0ciA9ICIjcHJhZ21hIFNUREdMIGludmFyaWFudChhbGwpXG4iOwotICAgIGNvbnN0
IGNoYXIqIGV4cGVjdGVkID0gIlxuIjsKLQotICAgIHVzaW5nIHRlc3Rpbmc6Ol87Ci0gICAgRVhQ
RUNUX0NBTEwobURpcmVjdGl2ZUhhbmRsZXIsCi0gICAgICAgICAgICAgICAgaGFuZGxlUHJhZ21h
KHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgImludmFyaWFudCIsICJhbGwiLCB0cnVlKSk7Ci0g
ICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3Ms
IHByaW50KF8sIF8sIF8pKS5UaW1lcygwKTsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3Rl
ZCk7Ci19Ci0KLVRFU1RfRihQcmFnbWFUZXN0LCBDb21tZW50cykKLXsKLSAgICBjb25zdCBjaGFy
KiBzdHIgPSAiLypmb28qLyIKLSAgICAgICAgICAgICAgICAgICAgICAiIyIKLSAgICAgICAgICAg
ICAgICAgICAgICAiLypmb28qLyIKLSAgICAgICAgICAgICAgICAgICAgICAicHJhZ21hIgotICAg
ICAgICAgICAgICAgICAgICAgICIvKmZvbyovIgotICAgICAgICAgICAgICAgICAgICAgICJmb28i
Ci0gICAgICAgICAgICAgICAgICAgICAgIi8qZm9vKi8iCi0gICAgICAgICAgICAgICAgICAgICAg
IigiCi0gICAgICAgICAgICAgICAgICAgICAgIi8qZm9vKi8iCi0gICAgICAgICAgICAgICAgICAg
ICAgImJhciIKLSAgICAgICAgICAgICAgICAgICAgICAiLypmb28qLyIKLSAgICAgICAgICAgICAg
ICAgICAgICAiKSIKLSAgICAgICAgICAgICAgICAgICAgICAiLypmb28qLyIKLSAgICAgICAgICAg
ICAgICAgICAgICAiLy9mb28iCi0gICAgICAgICAgICAgICAgICAgICAgIlxuIjsKLSAgICBjb25z
dCBjaGFyKiBleHBlY3RlZCA9ICJcbiI7Ci0KLSAgICB1c2luZyB0ZXN0aW5nOjpfOwotICAgIEVY
UEVDVF9DQUxMKG1EaXJlY3RpdmVIYW5kbGVyLAotICAgICAgICAgICAgICAgIGhhbmRsZVByYWdt
YShwcDo6U291cmNlTG9jYXRpb24oMCwgMSksICJmb28iLCAiYmFyIiwgZmFsc2UpKTsKLSAgICAv
LyBObyBlcnJvciBvciB3YXJuaW5nLgotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJp
bnQoXywgXywgXykpLlRpbWVzKDApOwotCi0gICAgcHJlcHJvY2VzcyhzdHIsIGV4cGVjdGVkKTsK
LX0KLQotVEVTVF9GKFByYWdtYVRlc3QsIE1pc3NpbmdOZXdsaW5lKQotewotICAgIGNvbnN0IGNo
YXIqIHN0ciA9ICIjcHJhZ21hIGZvbyhiYXIpIjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9
ICIiOwotCi0gICAgdXNpbmcgdGVzdGluZzo6XzsKLSAgICAvLyBQcmFnbWEgc3VjY2Vzc2Z1bGx5
IHBhcnNlZC4KLSAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwKLSAgICAgICAgICAg
ICAgICBoYW5kbGVQcmFnbWEocHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiZm9vIiwgImJhciIs
IGZhbHNlKSk7Ci0gICAgLy8gRXJyb3IgcmVwb3J0ZWQgYWJvdXQgRU9GLgotICAgIEVYUEVDVF9D
QUxMKG1EaWFnbm9zdGljcywgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9FT0ZfSU5fRElSRUNU
SVZFLCBfLCBfKSk7Ci0KLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1jbGFz
cyBJbnZhbGlkUHJhZ21hVGVzdCA6IHB1YmxpYyBQcmFnbWFUZXN0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgdGVzdGluZzo6V2l0aFBhcmFtSW50ZXJmYWNlPGNvbnN0IGNoYXIq
PgotewotfTsKLQotVEVTVF9QKEludmFsaWRQcmFnbWFUZXN0LCBJZGVudGlmaWVkKQotewotICAg
IGNvbnN0IGNoYXIqIHN0ciA9IEdldFBhcmFtKCk7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQg
PSAiXG4iOwotCi0gICAgdXNpbmcgdGVzdGluZzo6XzsKLSAgICAvLyBObyBoYW5kbGVQcmFnbWEg
Y2FsbHMuCi0gICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRsZXIsIGhhbmRsZVByYWdtYShf
LCBfLCBfLCBmYWxzZSkpLlRpbWVzKDApOwotICAgIC8vIFVucmVjb2duaXplZCBwcmFnbWEgd2Fy
bmluZy4KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAgICAgcHJp
bnQocHA6OkRpYWdub3N0aWNzOjpQUF9VTlJFQ09HTklaRURfUFJBR01BLAotICAgICAgICAgICAg
ICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgXykpOwotCi0gICAgcHJlcHJvY2Vz
cyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoQWxsLCBJbnZh
bGlkUHJhZ21hVGVzdCwgdGVzdGluZzo6VmFsdWVzKAotICAgICIjcHJhZ21hIDFcbiIsICAgICAg
ICAgICAgICAgLy8gSW52YWxpZCBuYW1lLgotICAgICIjcHJhZ21hIGZvbygpXG4iLCAgICAgICAg
ICAgLy8gTWlzc2luZyB2YWx1ZS4KLSAgICAiI3ByYWdtYSBmb28gYmFyKVxuIiwgICAgICAgIC8v
IE1pc3NpbmcgbGVmdCBwYXJlbiwKLSAgICAiI3ByYWdtYSBmb28oYmFyXG4iLCAgICAgICAgIC8v
IE1pc3NpbmcgcmlnaHQgcGFyZW4uCi0gICAgIiNwcmFnbWEgZm9vIGJhclxuIiwgICAgICAgICAv
LyBNaXNzaW5nIHBhcmVucy4KLSAgICAiI3ByYWdtYSBmb28oYmFyKSBiYXpcbiIpKTsgIC8vIEV4
dHJhIHRva2Vucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy9wcmVwcm9jZXNzb3JfdGVzdHMvc3BhY2VfdGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL3NwYWNlX3Rlc3QuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzM0OTRiZTU5MS4uMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy9zcGFjZV90
ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0
IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQot
I2luY2x1ZGUgIlByZXByb2Nlc3NvclRlc3QuaCIKLSNpbmNsdWRlICJjb21waWxlci9wcmVwcm9j
ZXNzb3IvVG9rZW4uaCIKLQotY2xhc3MgU3BhY2VUZXN0IDogcHVibGljIFByZXByb2Nlc3NvclRl
c3QKLXsKLSAgcHJvdGVjdGVkOgotICAgIHZvaWQgZXhwZWN0U3BhY2UoY29uc3Qgc3RkOjpzdHJp
bmcmIHN0cikKLSAgICB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIGNzdHIgPSBzdHIuY19zdHIoKTsK
LSAgICAgICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZjc3RyLCAwKSk7Ci0K
LSAgICAgICAgcHA6OlRva2VuIHRva2VuOwotICAgICAgICAvLyAiZm9vIiBpcyByZXR1cm5lZCBh
ZnRlciBpZ25vcmluZyB0aGUgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzLgotICAgICAgICBtUHJlcHJv
Y2Vzc29yLmxleCgmdG9rZW4pOwotICAgICAgICBFWFBFQ1RfRVEocHA6OlRva2VuOjpJREVOVElG
SUVSLCB0b2tlbi50eXBlKTsKLSAgICAgICAgRVhQRUNUX0VRKCJmb28iLCB0b2tlbi50ZXh0KTsK
LSAgICAgICAgLy8gVGhlIHdoaXRlc3BhY2UgY2hhcmFjdGVyIGlzIGhvd2V2ZXIgcmVjb3JkZWQg
d2l0aCB0aGUgbmV4dCB0b2tlbi4KLSAgICAgICAgRVhQRUNUX1RSVUUodG9rZW4uaGFzTGVhZGlu
Z1NwYWNlKCkpOwotICAgIH0KLX07Ci0KLS8vIFdoaXRlc3BhY2UgY2hhcmFjdGVycyBhbGxvd2Vk
IGluIEdMU0wuCi0vLyBOb3RlIHRoYXQgbmV3bGluZSBjaGFyYWN0ZXJzIChcbikgd2lsbCBiZSB0
ZXN0ZWQgc2VwYXJhdGVseS4KLXN0YXRpYyBjb25zdCBjaGFyIGtTcGFjZUNoYXJzW10gPSB7JyAn
LCAnXHQnLCAnXHYnLCAnXGYnfTsKLQotLy8gVGhpcyB0ZXN0IGZpeHR1cmUgdGVzdHMgdGhlIHBy
b2Nlc3Npbmcgb2YgYSBzaW5nbGUgd2hpdGVzcGFjZSBjaGFyYWN0ZXIuCi0vLyBBbGwgdGVzdHMg
aW4gdGhpcyBmaXh0dXJlIGFyZSByYW4gd2l0aCBhbGwgcG9zc2libGUgd2hpdGVzcGFjZSBjaGFy
YWN0ZXIKLS8vIGFsbG93ZWQgaW4gR0xTTC4KLWNsYXNzIFNwYWNlQ2hhclRlc3QgOiBwdWJsaWMg
U3BhY2VUZXN0LAotICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB0ZXN0aW5nOjpXaXRoUGFy
YW1JbnRlcmZhY2U8Y2hhcj4KLXsKLX07Ci0KLVRFU1RfUChTcGFjZUNoYXJUZXN0LCBTcGFjZUln
bm9yZWQpCi17Ci0gICAgLy8gQ29uc3RydWN0IHRlc3Qgc3RyaW5nIHdpdGggdGhlIHdoaXRlc3Bh
Y2UgY2hhciBiZWZvcmUgImZvbyIuCi0gICAgc3RkOjpzdHJpbmcgc3RyKDEsIEdldFBhcmFtKCkp
OwotICAgIHN0ci5hcHBlbmQoImZvbyIpOwotCi0gICAgZXhwZWN0U3BhY2Uoc3RyKTsKLX0KLQot
SU5TVEFOVElBVEVfVEVTVF9DQVNFX1AoU2luZ2xlU3BhY2VDaGFyLAotICAgICAgICAgICAgICAg
ICAgICAgICAgU3BhY2VDaGFyVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rpbmc6
OlZhbHVlc0luKGtTcGFjZUNoYXJzKSk7Ci0KLS8vIFRoaXMgdGVzdCBmaXh0dXJlIHRlc3RzIHRo
ZSBwcm9jZXNzaW5nIG9mIGEgc3RyaW5nIGNvbnRhaW5pbmcgY29uc2VjdXRpdmUKLS8vIHdoaXRl
c3BhY2UgY2hhcmFjdGVycy4gQWxsIHRlc3RzIGluIHRoaXMgZml4dHVyZSBhcmUgcmFuIHdpdGgg
YWxsIHBvc3NpYmxlCi0vLyBjb21iaW5hdGlvbnMgb2Ygd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGFs
bG93ZWQgaW4gR0xTTC4KLXR5cGVkZWYgc3RkOjp0cjE6OnR1cGxlPGNoYXIsIGNoYXIsIGNoYXI+
IFNwYWNlU3RyaW5nUGFyYW1zOwotY2xhc3MgU3BhY2VTdHJpbmdUZXN0IDogcHVibGljIFNwYWNl
VGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB0ZXN0aW5nOjpXaXRoUGFyYW1J
bnRlcmZhY2U8U3BhY2VTdHJpbmdQYXJhbXM+Ci17Ci19OwotCi1URVNUX1AoU3BhY2VTdHJpbmdU
ZXN0LCBTcGFjZUlnbm9yZWQpCi17Ci0gICAgLy8gQ29uc3RydWN0IHRlc3Qgc3RyaW5nIHdpdGgg
dGhlIHdoaXRlc3BhY2UgY2hhciBiZWZvcmUgImZvbyIuCi0gICAgc3RkOjpzdHJpbmcgc3RyOwot
ICAgIHN0ci5wdXNoX2JhY2soc3RkOjp0cjE6OmdldDwwPihHZXRQYXJhbSgpKSk7Ci0gICAgc3Ry
LnB1c2hfYmFjayhzdGQ6OnRyMTo6Z2V0PDE+KEdldFBhcmFtKCkpKTsKLSAgICBzdHIucHVzaF9i
YWNrKHN0ZDo6dHIxOjpnZXQ8Mj4oR2V0UGFyYW0oKSkpOwotICAgIHN0ci5hcHBlbmQoImZvbyIp
OwotCi0gICAgZXhwZWN0U3BhY2Uoc3RyKTsKLX0KLQotSU5TVEFOVElBVEVfVEVTVF9DQVNFX1Ao
U3BhY2VDaGFyQ29tYmluYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICBTcGFjZVN0cmlu
Z1Rlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpDb21iaW5lKHRlc3Rpbmc6
OlZhbHVlc0luKGtTcGFjZUNoYXJzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGVzdGluZzo6VmFsdWVzSW4oa1NwYWNlQ2hhcnMpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXNJbihrU3BhY2VDaGFycykp
KTsKLQotLy8gVGhlIHRlc3RzIGFib3ZlIG1ha2Ugc3VyZSB0aGF0IHRoZSBzcGFjZSBjaGFyIGlz
IHJlY29yZGVkIGluIHRoZQotLy8gbmV4dCB0b2tlbi4gVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhh
dCBhIHRva2VuIGlzIG5vdCBpbmNvcnJlY3RseSBtYXJrZWQKLS8vIHRvIGhhdmUgbGVhZGluZyBz
cGFjZS4KLVRFU1RfRihTcGFjZVRlc3QsIExlYWRpbmdTcGFjZSkKLXsKLSAgICBjb25zdCBjaGFy
KiBzdHIgPSAiIGZvbysgLWJhciI7Ci0gICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0
KDEsICZzdHIsIDApKTsKLQotICAgIHBwOjpUb2tlbiB0b2tlbjsKLSAgICBtUHJlcHJvY2Vzc29y
LmxleCgmdG9rZW4pOwotICAgIEVYUEVDVF9FUShwcDo6VG9rZW46OklERU5USUZJRVIsIHRva2Vu
LnR5cGUpOwotICAgIEVYUEVDVF9FUSgiZm9vIiwgdG9rZW4udGV4dCk7Ci0gICAgRVhQRUNUX1RS
VUUodG9rZW4uaGFzTGVhZGluZ1NwYWNlKCkpOwotCi0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRv
a2VuKTsKLSAgICBFWFBFQ1RfRVEoJysnLCB0b2tlbi50eXBlKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
dG9rZW4uaGFzTGVhZGluZ1NwYWNlKCkpOwotCi0gICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2Vu
KTsKLSAgICBFWFBFQ1RfRVEoJy0nLCB0b2tlbi50eXBlKTsKLSAgICBFWFBFQ1RfVFJVRSh0b2tl
bi5oYXNMZWFkaW5nU3BhY2UoKSk7Ci0KLSAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwot
ICAgIEVYUEVDVF9FUShwcDo6VG9rZW46OklERU5USUZJRVIsIHRva2VuLnR5cGUpOwotICAgIEVY
UEVDVF9FUSgiYmFyIiwgdG9rZW4udGV4dCk7Ci0gICAgRVhQRUNUX0ZBTFNFKHRva2VuLmhhc0xl
YWRpbmdTcGFjZSgpKTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy9wcmVwcm9jZXNzb3JfdGVzdHMvdG9rZW5fdGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvdGVzdHMvcHJlcHJvY2Vzc29yX3Rlc3RzL3Rva2VuX3Rlc3QuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDY2NDdjOGVkZS4uMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy90
b2tlbl90ZXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLS8vCi0vLyBDb3B5
cmlnaHQgKGMpIDIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0v
LwotCi0jaW5jbHVkZSAiZ3Rlc3QvZ3Rlc3QuaCIKLQotI2luY2x1ZGUgImNvbXBpbGVyL3ByZXBy
b2Nlc3Nvci9Ub2tlbi5oIgotCi1URVNUKFRva2VuVGVzdCwgRGVmYXVsdENvbnN0cnVjdG9yKQot
ewotICAgIHBwOjpUb2tlbiB0b2tlbjsKLSAgICBFWFBFQ1RfRVEoMCwgdG9rZW4udHlwZSk7Ci0g
ICAgRVhQRUNUX0VRKDB1LCB0b2tlbi5mbGFncyk7Ci0gICAgRVhQRUNUX0VRKDAsIHRva2VuLmxv
Y2F0aW9uLmxpbmUpOwotICAgIEVYUEVDVF9FUSgwLCB0b2tlbi5sb2NhdGlvbi5maWxlKTsKLSAg
ICBFWFBFQ1RfRVEoIiIsIHRva2VuLnRleHQpOwotfQotCi1URVNUKFRva2VuVGVzdCwgQXNzaWdu
bWVudCkKLXsKLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgdG9rZW4udHlwZSA9IDE7Ci0gICAg
dG9rZW4uZmxhZ3MgPSAxOwotICAgIHRva2VuLmxvY2F0aW9uLmxpbmUgPSAxOwotICAgIHRva2Vu
LmxvY2F0aW9uLmZpbGUgPSAxOwotICAgIHRva2VuLnRleHQuYXNzaWduKCJmb28iKTsKLQotICAg
IHRva2VuID0gcHA6OlRva2VuKCk7Ci0gICAgRVhQRUNUX0VRKDAsIHRva2VuLnR5cGUpOwotICAg
IEVYUEVDVF9FUSgwdSwgdG9rZW4uZmxhZ3MpOwotICAgIEVYUEVDVF9FUSgwLCB0b2tlbi5sb2Nh
dGlvbi5saW5lKTsKLSAgICBFWFBFQ1RfRVEoMCwgdG9rZW4ubG9jYXRpb24uZmlsZSk7Ci0gICAg
RVhQRUNUX0VRKCIiLCB0b2tlbi50ZXh0KTsKLX0KLQotVEVTVChUb2tlblRlc3QsIEVxdWFscykK
LXsKLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgRVhQRUNUX1RSVUUodG9rZW4uZXF1YWxzKHBw
OjpUb2tlbigpKSk7Ci0KLSAgICB0b2tlbi50eXBlID0gMTsKLSAgICBFWFBFQ1RfRkFMU0UodG9r
ZW4uZXF1YWxzKHBwOjpUb2tlbigpKSk7Ci0gICAgdG9rZW4udHlwZSA9IDA7Ci0KLSAgICB0b2tl
bi5mbGFncyA9IDE7Ci0gICAgRVhQRUNUX0ZBTFNFKHRva2VuLmVxdWFscyhwcDo6VG9rZW4oKSkp
OwotICAgIHRva2VuLmZsYWdzID0gMDsKLQotICAgIHRva2VuLmxvY2F0aW9uLmxpbmUgPSAxOwot
ICAgIEVYUEVDVF9GQUxTRSh0b2tlbi5lcXVhbHMocHA6OlRva2VuKCkpKTsKLSAgICB0b2tlbi5s
b2NhdGlvbi5saW5lID0gMDsKLQotICAgIHRva2VuLmxvY2F0aW9uLmZpbGUgPSAxOwotICAgIEVY
UEVDVF9GQUxTRSh0b2tlbi5lcXVhbHMocHA6OlRva2VuKCkpKTsKLSAgICB0b2tlbi5sb2NhdGlv
bi5maWxlID0gMDsKLQotICAgIHRva2VuLnRleHQuYXNzaWduKCJmb28iKTsKLSAgICBFWFBFQ1Rf
RkFMU0UodG9rZW4uZXF1YWxzKHBwOjpUb2tlbigpKSk7Ci0gICAgdG9rZW4udGV4dC5jbGVhcigp
OwotCi0gICAgRVhQRUNUX1RSVUUodG9rZW4uZXF1YWxzKHBwOjpUb2tlbigpKSk7Ci19Ci0KLVRF
U1QoVG9rZW5UZXN0LCBIYXNMZWFkaW5nU3BhY2UpCi17Ci0gICAgcHA6OlRva2VuIHRva2VuOwot
ICAgIEVYUEVDVF9GQUxTRSh0b2tlbi5oYXNMZWFkaW5nU3BhY2UoKSk7Ci0gICAgdG9rZW4uc2V0
SGFzTGVhZGluZ1NwYWNlKHRydWUpOwotICAgIEVYUEVDVF9UUlVFKHRva2VuLmhhc0xlYWRpbmdT
cGFjZSgpKTsKLSAgICB0b2tlbi5zZXRIYXNMZWFkaW5nU3BhY2UoZmFsc2UpOwotICAgIEVYUEVD
VF9GQUxTRSh0b2tlbi5oYXNMZWFkaW5nU3BhY2UoKSk7Ci19Ci0KLVRFU1QoVG9rZW5UZXN0LCBX
cml0ZSkKLXsKLSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgdG9rZW4udGV4dC5hc3NpZ24oImZv
byIpOwotICAgIHN0ZDo6c3RyaW5nc3RyZWFtIG91dDE7Ci0gICAgb3V0MSA8PCB0b2tlbjsKLSAg
ICBFWFBFQ1RfVFJVRShvdXQxLmdvb2QoKSk7Ci0gICAgRVhQRUNUX0VRKCJmb28iLCBvdXQxLnN0
cigpKTsKLQotICAgIHRva2VuLnNldEhhc0xlYWRpbmdTcGFjZSh0cnVlKTsKLSAgICBzdGQ6OnN0
cmluZ3N0cmVhbSBvdXQyOwotICAgIG91dDIgPDwgdG9rZW47Ci0gICAgRVhQRUNUX1RSVUUob3V0
Mi5nb29kKCkpOwotICAgIEVYUEVDVF9FUSgiIGZvbyIsIG91dDIuc3RyKCkpOwotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0
cy92ZXJzaW9uX3Rlc3QuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3By
ZXByb2Nlc3Nvcl90ZXN0cy92ZXJzaW9uX3Rlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhMzg1NDJkYjE5MS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3ByZXByb2Nlc3Nvcl90ZXN0cy92ZXJzaW9uX3Rlc3QuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0jaW5jbHVkZSAiUHJl
cHJvY2Vzc29yVGVzdC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nvci9Ub2tlbi5o
IgotCi1jbGFzcyBWZXJzaW9uVGVzdCA6IHB1YmxpYyBQcmVwcm9jZXNzb3JUZXN0Ci17Ci19Owot
Ci1URVNUX0YoVmVyc2lvblRlc3QsIFZhbGlkKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIj
dmVyc2lvbiAyMDBcbiI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iOwotCi0gICAg
dXNpbmcgdGVzdGluZzo6XzsKLSAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwKLSAg
ICAgICAgICAgICAgICBoYW5kbGVWZXJzaW9uKHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgMjAw
KSk7Ci0gICAgLy8gTm8gZXJyb3Igb3Igd2FybmluZy4KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25v
c3RpY3MsIHByaW50KF8sIF8sIF8pKS5UaW1lcygwKTsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBl
eHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihWZXJzaW9uVGVzdCwgQ29tbWVudHNJZ25vcmVkKQotewot
ICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIvKmZvbyovIgotICAgICAgICAgICAgICAgICAgICAgICIj
IgotICAgICAgICAgICAgICAgICAgICAgICIvKmZvbyovIgotICAgICAgICAgICAgICAgICAgICAg
ICJ2ZXJzaW9uIgotICAgICAgICAgICAgICAgICAgICAgICIvKmZvbyovIgotICAgICAgICAgICAg
ICAgICAgICAgICIyMDAiCi0gICAgICAgICAgICAgICAgICAgICAgIi8qZm9vKi8iCi0gICAgICAg
ICAgICAgICAgICAgICAgIi8vZm9vIgotICAgICAgICAgICAgICAgICAgICAgICJcbiI7Ci0gICAg
Y29uc3QgY2hhciogZXhwZWN0ZWQgPSAiXG4iOwotCi0gICAgdXNpbmcgdGVzdGluZzo6XzsKLSAg
ICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwKLSAgICAgICAgICAgICAgICBoYW5kbGVW
ZXJzaW9uKHBwOjpTb3VyY2VMb2NhdGlvbigwLCAxKSwgMjAwKSk7Ci0gICAgLy8gTm8gZXJyb3Ig
b3Igd2FybmluZy4KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KF8sIF8sIF8p
KS5UaW1lcygwKTsKLQotICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRFU1Rf
RihWZXJzaW9uVGVzdCwgTWlzc2luZ05ld2xpbmUpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0g
IiN2ZXJzaW9uIDIwMCI7Ci0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiIjsKLQotICAgIHVz
aW5nIHRlc3Rpbmc6Ol87Ci0gICAgLy8gRGlyZWN0aXZlIHN1Y2Nlc3NmdWxseSBwYXJzZWQuCi0g
ICAgRVhQRUNUX0NBTEwobURpcmVjdGl2ZUhhbmRsZXIsCi0gICAgICAgICAgICAgICAgaGFuZGxl
VmVyc2lvbihwcDo6U291cmNlTG9jYXRpb24oMCwgMSksIDIwMCkpOwotICAgIC8vIEVycm9yIHJl
cG9ydGVkIGFib3V0IEVPRi4KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KHBw
OjpEaWFnbm9zdGljczo6UFBfRU9GX0lOX0RJUkVDVElWRSwgXywgXykpOwotCi0gICAgcHJlcHJv
Y2VzcyhzdHIsIGV4cGVjdGVkKTsKLX0KLQotVEVTVF9GKFZlcnNpb25UZXN0LCBBZnRlckNvbW1l
bnRzKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIvKiBibG9jayBjb21tZW50IGFjY2VwdGFi
bGUgKi9cbiIKLSAgICAgICAgICAgICAgICAgICAgICAiLy8gbGluZSBjb21tZW50IGFjY2VwdGFi
bGVcbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI3ZlcnNpb24gMjAwXG4iOwotICAgIGNvbnN0
IGNoYXIqIGV4cGVjdGVkID0gIlxuXG5cbiI7Ci0KLSAgICB1c2luZyB0ZXN0aW5nOjpfOwotICAg
IC8vIERpcmVjdGl2ZSBzdWNjZXNzZnVsbHkgcGFyc2VkLgotICAgIEVYUEVDVF9DQUxMKG1EaXJl
Y3RpdmVIYW5kbGVyLAotICAgICAgICAgICAgICAgIGhhbmRsZVZlcnNpb24ocHA6OlNvdXJjZUxv
Y2F0aW9uKDAsIDMpLCAyMDApKTsKLSAgICAvLyBObyBlcnJvciBvciB3YXJuaW5nLgotICAgIEVY
UEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQoXywgXywgXykpLlRpbWVzKDApOwotICAgIAot
ICAgIHByZXByb2Nlc3Moc3RyLCBleHBlY3RlZCk7Ci19Ci0KLVRFU1RfRihWZXJzaW9uVGVzdCwg
QWZ0ZXJXaGl0ZXNwYWNlKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICJcbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiN2ZXJzaW9uIDIwMFxu
IjsKLSAgICBjb25zdCBjaGFyKiBleHBlY3RlZCA9ICJcblxuXG4iOwotCi0gICAgdXNpbmcgdGVz
dGluZzo6XzsKLSAgICAvLyBEaXJlY3RpdmUgc3VjY2Vzc2Z1bGx5IHBhcnNlZC4KLSAgICBFWFBF
Q1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwKLSAgICAgICAgICAgICAgICBoYW5kbGVWZXJzaW9u
KHBwOjpTb3VyY2VMb2NhdGlvbigwLCAzKSwgMjAwKSk7Ci0gICAgLy8gTm8gZXJyb3Igb3Igd2Fy
bmluZy4KLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsIHByaW50KF8sIF8sIF8pKS5UaW1l
cygwKTsKLSAgICAKLSAgICBwcmVwcm9jZXNzKHN0ciwgZXhwZWN0ZWQpOwotfQotCi1URVNUX0Yo
VmVyc2lvblRlc3QsIEFmdGVyVmFsaWRUb2tlbikKLXsKLSAgICBjb25zdCBjaGFyKiBzdHIgPSAi
Zm9vXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiN2ZXJzaW9uIDIwMFxuIjsKLSAgICBBU1NF
UlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgTlVMTCkpOwotCi0gICAgdXNpbmcg
dGVzdGluZzo6XzsKLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAg
ICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9WRVJTSU9OX05PVF9GSVJTVF9TVEFURU1FTlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDIpLCBfKSk7Ci0K
LSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgZG8KLSAgICB7Ci0gICAgICAgIG1QcmVwcm9jZXNz
b3IubGV4KCZ0b2tlbik7Ci0gICAgfSB3aGlsZSAodG9rZW4udHlwZSAhPSBwcDo6VG9rZW46OkxB
U1QpOwotfQotCi1URVNUX0YoVmVyc2lvblRlc3QsIEFmdGVySW52YWxpZFRva2VuKQotewotICAg
IGNvbnN0IGNoYXIqIHN0ciA9ICIkXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiN2ZXJzaW9u
IDIwMFxuIjsKLSAgICBBU1NFUlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgTlVM
TCkpOwotCi0gICAgdXNpbmcgdGVzdGluZzo6XzsKLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3Rp
Y3MsCi0gICAgICAgICAgICAgICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9JTlZBTElEX0NI
QVJBQ1RFUiwKLSAgICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMSks
ICIkIikpOwotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBw
cmludChwcDo6RGlhZ25vc3RpY3M6OlBQX1ZFUlNJT05fTk9UX0ZJUlNUX1NUQVRFTUVOVCwKLSAg
ICAgICAgICAgICAgICAgICAgICBwcDo6U291cmNlTG9jYXRpb24oMCwgMiksIF8pKTsKLQotICAg
IHBwOjpUb2tlbiB0b2tlbjsKLSAgICBkbwotICAgIHsKLSAgICAgICAgbVByZXByb2Nlc3Nvci5s
ZXgoJnRva2VuKTsKLSAgICB9IHdoaWxlICh0b2tlbi50eXBlICE9IHBwOjpUb2tlbjo6TEFTVCk7
Ci19Ci0KLVRFU1RfRihWZXJzaW9uVGVzdCwgQWZ0ZXJWYWxpZERpcmVjdGl2ZSkKLXsKLSAgICBj
b25zdCBjaGFyKiBzdHIgPSAiI1xuIgotICAgICAgICAgICAgICAgICAgICAgICIjdmVyc2lvbiAy
MDBcbiI7Ci0gICAgQVNTRVJUX1RSVUUobVByZXByb2Nlc3Nvci5pbml0KDEsICZzdHIsIE5VTEwp
KTsKLQotICAgIHVzaW5nIHRlc3Rpbmc6Ol87Ci0gICAgRVhQRUNUX0NBTEwobURpYWdub3N0aWNz
LAotICAgICAgICAgICAgICAgIHByaW50KHBwOjpEaWFnbm9zdGljczo6UFBfVkVSU0lPTl9OT1Rf
RklSU1RfU1RBVEVNRU5ULAotICAgICAgICAgICAgICAgICAgICAgIHBwOjpTb3VyY2VMb2NhdGlv
bigwLCAyKSwgXykpOwotCi0gICAgcHA6OlRva2VuIHRva2VuOwotICAgIGRvCi0gICAgewotICAg
ICAgICBtUHJlcHJvY2Vzc29yLmxleCgmdG9rZW4pOwotICAgIH0gd2hpbGUgKHRva2VuLnR5cGUg
IT0gcHA6OlRva2VuOjpMQVNUKTsKLX0KLQotVEVTVF9GKFZlcnNpb25UZXN0LCBBZnRlckludmFs
aWREaXJlY3RpdmUpCi17Ci0gICAgY29uc3QgY2hhciogc3RyID0gIiNmb29cbiIKLSAgICAgICAg
ICAgICAgICAgICAgICAiI3ZlcnNpb24gMjAwXG4iOwotICAgIEFTU0VSVF9UUlVFKG1QcmVwcm9j
ZXNzb3IuaW5pdCgxLCAmc3RyLCBOVUxMKSk7Ci0KLSAgICB1c2luZyB0ZXN0aW5nOjpfOwotICAg
IEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBwcmludChwcDo6RGlh
Z25vc3RpY3M6OlBQX0RJUkVDVElWRV9JTlZBTElEX05BTUUsCi0gICAgICAgICAgICAgICAgICAg
ICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDEpLCAiZm9vIikpOwotICAgIEVYUEVDVF9DQUxMKG1E
aWFnbm9zdGljcywKLSAgICAgICAgICAgICAgICBwcmludChwcDo6RGlhZ25vc3RpY3M6OlBQX1ZF
UlNJT05fTk9UX0ZJUlNUX1NUQVRFTUVOVCwKLSAgICAgICAgICAgICAgICAgICAgICBwcDo6U291
cmNlTG9jYXRpb24oMCwgMiksIF8pKTsKLQotICAgIHBwOjpUb2tlbiB0b2tlbjsKLSAgICBkbwot
ICAgIHsKLSAgICAgICAgbVByZXByb2Nlc3Nvci5sZXgoJnRva2VuKTsKLSAgICB9IHdoaWxlICh0
b2tlbi50eXBlICE9IHBwOjpUb2tlbjo6TEFTVCk7Ci19Ci0KLVRFU1RfRihWZXJzaW9uVGVzdCwg
QWZ0ZXJFeGNsdWRlZEJsb2NrKQotewotICAgIGNvbnN0IGNoYXIqIHN0ciA9ICIjaWYgMFxuIgot
ICAgICAgICAgICAgICAgICAgICAgICJmb29cbiIKLSAgICAgICAgICAgICAgICAgICAgICAiI2Vu
ZGlmXG4iCi0gICAgICAgICAgICAgICAgICAgICAgIiN2ZXJzaW9uIDIwMFxuIjsKLSAgICBBU1NF
UlRfVFJVRShtUHJlcHJvY2Vzc29yLmluaXQoMSwgJnN0ciwgTlVMTCkpOwotCi0gICAgdXNpbmcg
dGVzdGluZzo6XzsKLSAgICBFWFBFQ1RfQ0FMTChtRGlhZ25vc3RpY3MsCi0gICAgICAgICAgICAg
ICAgcHJpbnQocHA6OkRpYWdub3N0aWNzOjpQUF9WRVJTSU9OX05PVF9GSVJTVF9TVEFURU1FTlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgcHA6OlNvdXJjZUxvY2F0aW9uKDAsIDQpLCBfKSk7Ci0K
LSAgICBwcDo6VG9rZW4gdG9rZW47Ci0gICAgZG8KLSAgICB7Ci0gICAgICAgIG1QcmVwcm9jZXNz
b3IubGV4KCZ0b2tlbik7Ci0gICAgfSB3aGlsZSAodG9rZW4udHlwZSAhPSBwcDo6VG9rZW46OkxB
U1QpOwotfQotCi1zdHJ1Y3QgVmVyc2lvblRlc3RQYXJhbQotewotICAgIGNvbnN0IGNoYXIqIHN0
cjsKLSAgICBwcDo6RGlhZ25vc3RpY3M6OklEIGlkOwotfTsKLQotY2xhc3MgSW52YWxpZFZlcnNp
b25UZXN0IDogcHVibGljIFZlcnNpb25UZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIHRlc3Rpbmc6OldpdGhQYXJhbUludGVyZmFjZTxWZXJzaW9uVGVzdFBhcmFtPgotewot
fTsKLQotVEVTVF9QKEludmFsaWRWZXJzaW9uVGVzdCwgSWRlbnRpZmllZCkKLXsKLSAgICBWZXJz
aW9uVGVzdFBhcmFtIHBhcmFtID0gR2V0UGFyYW0oKTsKLSAgICBjb25zdCBjaGFyKiBleHBlY3Rl
ZCA9ICJcbiI7Ci0KLSAgICB1c2luZyB0ZXN0aW5nOjpfOwotICAgIC8vIE5vIGhhbmRsZVZlcnNp
b24gY2FsbC4KLSAgICBFWFBFQ1RfQ0FMTChtRGlyZWN0aXZlSGFuZGxlciwgaGFuZGxlVmVyc2lv
bihfLCBfKSkuVGltZXMoMCk7Ci0gICAgLy8gSW52YWxpZCB2ZXJzaW9uIGRpcmVjdGl2ZSBjYWxs
LgotICAgIEVYUEVDVF9DQUxMKG1EaWFnbm9zdGljcywgcHJpbnQocGFyYW0uaWQsIHBwOjpTb3Vy
Y2VMb2NhdGlvbigwLCAxKSwgXykpOwotCi0gICAgcHJlcHJvY2VzcyhwYXJhbS5zdHIsIGV4cGVj
dGVkKTsKLX0KLQotc3RhdGljIGNvbnN0IFZlcnNpb25UZXN0UGFyYW0ga1BhcmFtc1tdID0gewot
ICAgIHsiI3ZlcnNpb25cbiIsIHBwOjpEaWFnbm9zdGljczo6UFBfSU5WQUxJRF9WRVJTSU9OX0RJ
UkVDVElWRX0sCi0gICAgeyIjdmVyc2lvbiBmb29cbiIsIHBwOjpEaWFnbm9zdGljczo6UFBfSU5W
QUxJRF9WRVJTSU9OX05VTUJFUn0sCi0gICAgeyIjdmVyc2lvbiAxMDAgZm9vXG4iLCBwcDo6RGlh
Z25vc3RpY3M6OlBQX1VORVhQRUNURURfVE9LRU59LAotICAgIHsiI3ZlcnNpb24gMHhmZmZmZmZm
ZlxuIiwgcHA6OkRpYWdub3N0aWNzOjpQUF9JTlRFR0VSX09WRVJGTE9XfQotfTsKLQotSU5TVEFO
VElBVEVfVEVTVF9DQVNFX1AoQWxsLCBJbnZhbGlkVmVyc2lvblRlc3QsIHRlc3Rpbmc6OlZhbHVl
c0luKGtQYXJhbXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy90ZXN0X3V0aWxzL0FOR0xFVGVzdC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvdGVzdF91dGlscy9BTkdMRVRlc3QuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3YzIxODQyNDExNi4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvQU5HTEVUZXN0LmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDg1NSArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IDIwMTUgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gQU5HTEVUZXN0OgotLy8gICBJbXBsZW1lbnRh
dGlvbiBvZiBjb21tb24gQU5HTEUgdGVzdGluZyBmaXh0dXJlLgotLy8KLQotI2luY2x1ZGUgIkFO
R0xFVGVzdC5oIgotI2luY2x1ZGUgIkVHTFdpbmRvdy5oIgotI2luY2x1ZGUgIk9TV2luZG93Lmgi
Ci0jaW5jbHVkZSAicGxhdGZvcm0vUGxhdGZvcm0uaCIKLQotbmFtZXNwYWNlIGFuZ2xlCi17Ci0K
LWNvbnN0IEdMQ29sb3JSR0IgR0xDb2xvclJHQjo6YmxhY2soMHUsIDB1LCAwdSk7Ci1jb25zdCBH
TENvbG9yUkdCIEdMQ29sb3JSR0I6OmJsdWUoMHUsIDB1LCAyNTV1KTsKLWNvbnN0IEdMQ29sb3JS
R0IgR0xDb2xvclJHQjo6Z3JlZW4oMHUsIDI1NXUsIDB1KTsKLWNvbnN0IEdMQ29sb3JSR0IgR0xD
b2xvclJHQjo6cmVkKDI1NXUsIDB1LCAwdSk7Ci1jb25zdCBHTENvbG9yUkdCIEdMQ29sb3JSR0I6
OnllbGxvdygyNTV1LCAyNTV1LCAwKTsKLQotY29uc3QgR0xDb2xvciBHTENvbG9yOjpibGFjayAg
ICAgICAgICAgID0gR0xDb2xvcigwdSwgMHUsIDB1LCAyNTV1KTsKLWNvbnN0IEdMQ29sb3IgR0xD
b2xvcjo6Ymx1ZSAgICAgICAgICAgICA9IEdMQ29sb3IoMHUsIDB1LCAyNTV1LCAyNTV1KTsKLWNv
bnN0IEdMQ29sb3IgR0xDb2xvcjo6Y3lhbiAgICAgICAgICAgICA9IEdMQ29sb3IoMHUsIDI1NXUs
IDI1NXUsIDI1NXUpOwotY29uc3QgR0xDb2xvciBHTENvbG9yOjpncmVlbiAgICAgICAgICAgID0g
R0xDb2xvcigwdSwgMjU1dSwgMHUsIDI1NXUpOwotY29uc3QgR0xDb2xvciBHTENvbG9yOjpyZWQg
ICAgICAgICAgICAgID0gR0xDb2xvcigyNTV1LCAwdSwgMHUsIDI1NXUpOwotY29uc3QgR0xDb2xv
ciBHTENvbG9yOjp0cmFuc3BhcmVudEJsYWNrID0gR0xDb2xvcigwdSwgMHUsIDB1LCAwdSk7Ci1j
b25zdCBHTENvbG9yIEdMQ29sb3I6OndoaXRlICAgICAgICAgICAgPSBHTENvbG9yKDI1NXUsIDI1
NXUsIDI1NXUsIDI1NXUpOwotY29uc3QgR0xDb2xvciBHTENvbG9yOjp5ZWxsb3cgICAgICAgICAg
ID0gR0xDb2xvcigyNTV1LCAyNTV1LCAwLCAyNTV1KTsKLQotbmFtZXNwYWNlCi17Ci1mbG9hdCBD
b2xvck5vcm0oR0x1Ynl0ZSBjaGFubmVsVmFsdWUpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PGZsb2F0PihjaGFubmVsVmFsdWUpIC8gMjU1LjBmOwotfQotCi1HTHVieXRlIENvbG9yRGVub3Jt
KGZsb2F0IGNvbG9yVmFsdWUpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEdMdWJ5dGU+KGNv
bG9yVmFsdWUgKiAyNTUuMGYpOwotfQotCi0vLyBVc2UgYSBjdXN0b20gQU5HTEUgcGxhdGZvcm0g
Y2xhc3MgdG8gY2FwdHVyZSBhbmQgcmVwb3J0IGludGVybmFsIGVycm9ycy4KLWNsYXNzIFRlc3RQ
bGF0Zm9ybSA6IHB1YmxpYyBhbmdsZTo6UGxhdGZvcm0KLXsKLSAgcHVibGljOgotICAgIFRlc3RQ
bGF0Zm9ybSgpIDogbUlnbm9yZU1lc3NhZ2VzKGZhbHNlKSB7fQotCi0gICAgdm9pZCBsb2dFcnJv
cihjb25zdCBjaGFyICplcnJvck1lc3NhZ2UpIG92ZXJyaWRlOwotICAgIHZvaWQgbG9nV2Fybmlu
Zyhjb25zdCBjaGFyICp3YXJuaW5nTWVzc2FnZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBsb2dJbmZv
KGNvbnN0IGNoYXIgKmluZm9NZXNzYWdlKSBvdmVycmlkZTsKLQotICAgIHZvaWQgaWdub3JlTWVz
c2FnZXMoKTsKLSAgICB2b2lkIGVuYWJsZU1lc3NhZ2VzKCk7Ci0KLSAgcHJpdmF0ZToKLSAgICBi
b29sIG1JZ25vcmVNZXNzYWdlczsKLX07Ci0KLXZvaWQgVGVzdFBsYXRmb3JtOjpsb2dFcnJvcihj
b25zdCBjaGFyICplcnJvck1lc3NhZ2UpCi17Ci0gICAgaWYgKG1JZ25vcmVNZXNzYWdlcykKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgRkFJTCgpIDw8IGVycm9yTWVzc2FnZTsKLX0KLQotdm9pZCBU
ZXN0UGxhdGZvcm06OmxvZ1dhcm5pbmcoY29uc3QgY2hhciAqd2FybmluZ01lc3NhZ2UpCi17Ci0g
ICAgaWYgKG1JZ25vcmVNZXNzYWdlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc3RkOjpjZXJy
IDw8ICJXYXJuaW5nOiAiIDw8IHdhcm5pbmdNZXNzYWdlIDw8IHN0ZDo6ZW5kbDsKLX0KLQotdm9p
ZCBUZXN0UGxhdGZvcm06OmxvZ0luZm8oY29uc3QgY2hhciAqaW5mb01lc3NhZ2UpCi17Ci0gICAg
aWYgKG1JZ25vcmVNZXNzYWdlcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYW5nbGU6OldyaXRl
RGVidWdNZXNzYWdlKCIlc1xuIiwgaW5mb01lc3NhZ2UpOwotfQotCi12b2lkIFRlc3RQbGF0Zm9y
bTo6aWdub3JlTWVzc2FnZXMoKQotewotICAgIG1JZ25vcmVNZXNzYWdlcyA9IHRydWU7Ci19Ci0K
LXZvaWQgVGVzdFBsYXRmb3JtOjplbmFibGVNZXNzYWdlcygpCi17Ci0gICAgbUlnbm9yZU1lc3Nh
Z2VzID0gZmFsc2U7Ci19Ci0KLVRlc3RQbGF0Zm9ybSBnX3Rlc3RQbGF0Zm9ybUluc3RhbmNlOwot
Ci1zdGQ6OmFycmF5PFZlY3RvcjMsIDQ+IEdldEluZGV4ZWRRdWFkVmVydGljZXMoKQotewotICAg
IHN0ZDo6YXJyYXk8VmVjdG9yMywgND4gdmVydGljZXM7Ci0gICAgdmVydGljZXNbMF0gPSBWZWN0
b3IzKC0xLjBmLCAxLjBmLCAwLjVmKTsKLSAgICB2ZXJ0aWNlc1sxXSA9IFZlY3RvcjMoLTEuMGYs
IC0xLjBmLCAwLjVmKTsKLSAgICB2ZXJ0aWNlc1syXSA9IFZlY3RvcjMoMS4wZiwgLTEuMGYsIDAu
NWYpOwotICAgIHZlcnRpY2VzWzNdID0gVmVjdG9yMygxLjBmLCAxLjBmLCAwLjVmKTsKLSAgICBy
ZXR1cm4gdmVydGljZXM7Ci19Ci0KLX0gIC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotR0xDb2xv
clJHQjo6R0xDb2xvclJHQigpIDogUigwKSwgRygwKSwgQigwKQotewotfQotCi1HTENvbG9yUkdC
OjpHTENvbG9yUkdCKEdMdWJ5dGUgciwgR0x1Ynl0ZSBnLCBHTHVieXRlIGIpIDogUihyKSwgRyhn
KSwgQihiKQotewotfQotCi1HTENvbG9yUkdCOjpHTENvbG9yUkdCKGNvbnN0IFZlY3RvcjMgJmZs
b2F0Q29sb3IpCi0gICAgOiBSKENvbG9yRGVub3JtKGZsb2F0Q29sb3IueCkpLCBHKENvbG9yRGVu
b3JtKGZsb2F0Q29sb3IueSkpLCBCKENvbG9yRGVub3JtKGZsb2F0Q29sb3IueikpCi17Ci19Ci0K
LUdMQ29sb3I6OkdMQ29sb3IoKSA6IFIoMCksIEcoMCksIEIoMCksIEEoMCkKLXsKLX0KLQotR0xD
b2xvcjo6R0xDb2xvcihHTHVieXRlIHIsIEdMdWJ5dGUgZywgR0x1Ynl0ZSBiLCBHTHVieXRlIGEp
IDogUihyKSwgRyhnKSwgQihiKSwgQShhKQotewotfQotCi1HTENvbG9yOjpHTENvbG9yKGNvbnN0
IFZlY3RvcjQgJmZsb2F0Q29sb3IpCi0gICAgOiBSKENvbG9yRGVub3JtKGZsb2F0Q29sb3IueCkp
LAotICAgICAgRyhDb2xvckRlbm9ybShmbG9hdENvbG9yLnkpKSwKLSAgICAgIEIoQ29sb3JEZW5v
cm0oZmxvYXRDb2xvci56KSksCi0gICAgICBBKENvbG9yRGVub3JtKGZsb2F0Q29sb3IudykpCi17
Ci19Ci0KLUdMQ29sb3I6OkdMQ29sb3IoR0x1aW50IGNvbG9yVmFsdWUpIDogUigwKSwgRygwKSwg
QigwKSwgQSgwKQotewotICAgIG1lbWNweSgmUiwgJmNvbG9yVmFsdWUsIHNpemVvZihHTHVpbnQp
KTsKLX0KLQotVmVjdG9yNCBHTENvbG9yOjp0b05vcm1hbGl6ZWRWZWN0b3IoKSBjb25zdAotewot
ICAgIHJldHVybiBWZWN0b3I0KENvbG9yTm9ybShSKSwgQ29sb3JOb3JtKEcpLCBDb2xvck5vcm0o
QiksIENvbG9yTm9ybShBKSk7Ci19Ci0KLUdMQ29sb3IgUmVhZENvbG9yKEdMaW50IHgsIEdMaW50
IHkpCi17Ci0gICAgR0xDb2xvciBhY3R1YWw7Ci0gICAgZ2xSZWFkUGl4ZWxzKCh4KSwgKHkpLCAx
LCAxLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAmYWN0dWFsLlIpOwotICAgIEVYUEVDVF9H
TF9OT19FUlJPUigpOwotICAgIHJldHVybiBhY3R1YWw7Ci19Ci0KLWJvb2wgb3BlcmF0b3I9PShj
b25zdCBHTENvbG9yICZhLCBjb25zdCBHTENvbG9yICZiKQotewotICAgIHJldHVybiBhLlIgPT0g
Yi5SICYmIGEuRyA9PSBiLkcgJiYgYS5CID09IGIuQiAmJiBhLkEgPT0gYi5BOwotfQotCi1zdGQ6
Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZvc3RyZWFtLCBjb25zdCBHTENvbG9y
ICZjb2xvcikKLXsKLSAgICBvc3RyZWFtIDw8ICIoIiA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBp
bnQ+KGNvbG9yLlIpIDw8ICIsICIKLSAgICAgICAgICAgIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVk
IGludD4oY29sb3IuRykgPDwgIiwgIiA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGNvbG9y
LkIpCi0gICAgICAgICAgICA8PCAiLCAiIDw8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oY29s
b3IuQSkgPDwgIikiOwotICAgIHJldHVybiBvc3RyZWFtOwotfQotCi19ICAvLyBuYW1lc3BhY2Ug
YW5nbGUKLQotLy8gc3RhdGljCi1zdGQ6OmFycmF5PFZlY3RvcjMsIDY+IEFOR0xFVGVzdDo6R2V0
UXVhZFZlcnRpY2VzKCkKLXsKLSAgICBzdGQ6OmFycmF5PFZlY3RvcjMsIDY+IHZlcnRpY2VzOwot
ICAgIHZlcnRpY2VzWzBdID0gVmVjdG9yMygtMS4wZiwgMS4wZiwgMC41Zik7Ci0gICAgdmVydGlj
ZXNbMV0gPSBWZWN0b3IzKC0xLjBmLCAtMS4wZiwgMC41Zik7Ci0gICAgdmVydGljZXNbMl0gPSBW
ZWN0b3IzKDEuMGYsIC0xLjBmLCAwLjVmKTsKLSAgICB2ZXJ0aWNlc1szXSA9IFZlY3RvcjMoLTEu
MGYsIDEuMGYsIDAuNWYpOwotICAgIHZlcnRpY2VzWzRdID0gVmVjdG9yMygxLjBmLCAtMS4wZiwg
MC41Zik7Ci0gICAgdmVydGljZXNbNV0gPSBWZWN0b3IzKDEuMGYsIDEuMGYsIDAuNWYpOwotICAg
IHJldHVybiB2ZXJ0aWNlczsKLX0KLQotQU5HTEVUZXN0OjpBTkdMRVRlc3QoKQotICAgIDogbUVH
TFdpbmRvdyhudWxscHRyKSwKLSAgICAgIG1XaWR0aCgxNiksCi0gICAgICBtSGVpZ2h0KDE2KSwK
LSAgICAgIG1JZ25vcmVEM0QxMVNES0xheWVyc1dhcm5pbmdzKGZhbHNlKSwKLSAgICAgIG1RdWFk
VmVydGV4QnVmZmVyKDApCi17Ci0gICAgbUVHTFdpbmRvdyA9Ci0gICAgICAgIG5ldyBFR0xXaW5k
b3coR2V0UGFyYW0oKS5tYWpvclZlcnNpb24sIEdldFBhcmFtKCkubWlub3JWZXJzaW9uLCBHZXRQ
YXJhbSgpLmVnbFBhcmFtZXRlcnMpOwotfQotCi1BTkdMRVRlc3Q6On5BTkdMRVRlc3QoKQotewot
ICAgIGlmIChtUXVhZFZlcnRleEJ1ZmZlcikKLSAgICB7Ci0gICAgICAgIGdsRGVsZXRlQnVmZmVy
cygxLCAmbVF1YWRWZXJ0ZXhCdWZmZXIpOwotICAgIH0KLSAgICBTYWZlRGVsZXRlKG1FR0xXaW5k
b3cpOwotfQotCi12b2lkIEFOR0xFVGVzdDo6U2V0VXAoKQotewotICAgIGFuZ2xlOjpnX3Rlc3RQ
bGF0Zm9ybUluc3RhbmNlLmVuYWJsZU1lc3NhZ2VzKCk7Ci0KLSAgICAvLyBSZXNpemUgdGhlIHdp
bmRvdyBiZWZvcmUgY3JlYXRpbmcgdGhlIGNvbnRleHQgc28gdGhhdCB0aGUgZmlyc3QgbWFrZSBj
dXJyZW50Ci0gICAgLy8gc2V0cyB0aGUgdmlld3BvcnQgYW5kIHNjaXNzb3IgYm94IHRvIHRoZSBy
aWdodCBzaXplLgotICAgIGJvb2wgbmVlZFN3YXAgPSBmYWxzZTsKLSAgICBpZiAobU9TV2luZG93
LT5nZXRXaWR0aCgpICE9IG1XaWR0aCB8fCBtT1NXaW5kb3ctPmdldEhlaWdodCgpICE9IG1IZWln
aHQpCi0gICAgewotICAgICAgICBpZiAoIW1PU1dpbmRvdy0+cmVzaXplKG1XaWR0aCwgbUhlaWdo
dCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEZBSUwoKSA8PCAiRmFpbGVkIHRvIHJlc2l6ZSBB
TkdMRSB0ZXN0IHdpbmRvdy4iOwotICAgICAgICB9Ci0gICAgICAgIG5lZWRTd2FwID0gdHJ1ZTsK
LSAgICB9Ci0KLSAgICBpZiAoIWNyZWF0ZUVHTENvbnRleHQoKSkKLSAgICB7Ci0gICAgICAgIEZB
SUwoKSA8PCAiZWdsIGNvbnRleHQgY3JlYXRpb24gZmFpbGVkLiI7Ci0gICAgfQotCi0gICAgaWYg
KG5lZWRTd2FwKQotICAgIHsKLSAgICAgICAgLy8gU3dhcCB0aGUgYnVmZmVycyBzbyB0aGF0IHRo
ZSBkZWZhdWx0IGZyYW1lYnVmZmVyIHBpY2tzIHVwIHRoZSByZXNpemUKLSAgICAgICAgLy8gd2hp
Y2ggd2lsbCBhbGxvdyBmb2xsb3ctdXAgdGVzdCBjb2RlIHRvIGFzc3VtZSB0aGUgZnJhbWVidWZm
ZXIgY292ZXJzCi0gICAgICAgIC8vIHRoZSB3aG9sZSB3aW5kb3cuCi0gICAgICAgIHN3YXBCdWZm
ZXJzKCk7Ci0gICAgfQotCi0gICAgLy8gVGhpcyBWaWV3cG9ydCBjb21tYW5kIGlzIG5vdCBzdHJp
Y3RseSBuZWNlc3NhcnkgYnV0IHdlIGFkZCBpdCBzbyB0aGF0IHByb2dyYW1zCi0gICAgLy8gdGFr
aW5nIE9wZW5HTCB0cmFjZXMgY2FuIGd1ZXNzIHRoZSBzaXplIG9mIHRoZSBkZWZhdWx0IGZyYW1l
YnVmZmVyIGFuZCBzaG93IGl0Ci0gICAgLy8gaW4gdGhlaXIgVUlzCi0gICAgZ2xWaWV3cG9ydCgw
LCAwLCBtV2lkdGgsIG1IZWlnaHQpOwotCi0gICAgY29uc3QgYXV0byAmaW5mbyA9IHRlc3Rpbmc6
OlVuaXRUZXN0OjpHZXRJbnN0YW5jZSgpLT5jdXJyZW50X3Rlc3RfaW5mbygpOwotICAgIGFuZ2xl
OjpXcml0ZURlYnVnTWVzc2FnZSgiRW50ZXJpbmcgJXMuJXNcbiIsIGluZm8tPnRlc3RfY2FzZV9u
YW1lKCksIGluZm8tPm5hbWUoKSk7Ci19Ci0KLXZvaWQgQU5HTEVUZXN0OjpUZWFyRG93bigpCi17
Ci0gICAgY2hlY2tEM0QxMVNES0xheWVyc01lc3NhZ2VzKCk7Ci0KLSAgICBjb25zdCBhdXRvICZp
bmZvID0gdGVzdGluZzo6VW5pdFRlc3Q6OkdldEluc3RhbmNlKCktPmN1cnJlbnRfdGVzdF9pbmZv
KCk7Ci0gICAgYW5nbGU6OldyaXRlRGVidWdNZXNzYWdlKCJFeGl0aW5nICVzLiVzXG4iLCBpbmZv
LT50ZXN0X2Nhc2VfbmFtZSgpLCBpbmZvLT5uYW1lKCkpOwotCi0gICAgc3dhcEJ1ZmZlcnMoKTsK
LSAgICBtT1NXaW5kb3ctPm1lc3NhZ2VMb29wKCk7Ci0KLSAgICBpZiAoIWRlc3Ryb3lFR0xDb250
ZXh0KCkpCi0gICAgewotICAgICAgICBGQUlMKCkgPDwgImVnbCBjb250ZXh0IGRlc3RydWN0aW9u
IGZhaWxlZC4iOwotICAgIH0KLQotICAgIC8vIENoZWNrIGZvciBxdWl0IG1lc3NhZ2UKLSAgICBF
dmVudCBteUV2ZW50OwotICAgIHdoaWxlIChtT1NXaW5kb3ctPnBvcEV2ZW50KCZteUV2ZW50KSkK
LSAgICB7Ci0gICAgICAgIGlmIChteUV2ZW50LlR5cGUgPT0gRXZlbnQ6OkVWRU5UX0NMT1NFRCkK
LSAgICAgICAgewotICAgICAgICAgICAgZXhpdCgwKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQot
dm9pZCBBTkdMRVRlc3Q6OnN3YXBCdWZmZXJzKCkKLXsKLSAgICBpZiAobUVHTFdpbmRvdy0+aXNH
TEluaXRpYWxpemVkKCkpCi0gICAgewotICAgICAgICBtRUdMV2luZG93LT5zd2FwKCk7Ci0gICAg
fQotfQotCi12b2lkIEFOR0xFVGVzdDo6c2V0dXBRdWFkVmVydGV4QnVmZmVyKEdMZmxvYXQgcG9z
aXRpb25BdHRyaWJaLCBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWFlTY2FsZSkKLXsKLSAgICBpZiAo
bVF1YWRWZXJ0ZXhCdWZmZXIgPT0gMCkKLSAgICB7Ci0gICAgICAgIGdsR2VuQnVmZmVycygxLCAm
bVF1YWRWZXJ0ZXhCdWZmZXIpOwotICAgIH0KLQotICAgIGF1dG8gcXVhZFZlcnRpY2VzID0gR2V0
UXVhZFZlcnRpY2VzKCk7Ci0gICAgZm9yIChWZWN0b3IzICZ2ZXJ0ZXggOiBxdWFkVmVydGljZXMp
Ci0gICAgewotICAgICAgICB2ZXJ0ZXgueCAqPSBwb3NpdGlvbkF0dHJpYlhZU2NhbGU7Ci0gICAg
ICAgIHZlcnRleC55ICo9IHBvc2l0aW9uQXR0cmliWFlTY2FsZTsKLSAgICAgICAgdmVydGV4Lnog
PSBwb3NpdGlvbkF0dHJpYlo7Ci0gICAgfQotCi0gICAgZ2xCaW5kQnVmZmVyKEdMX0FSUkFZX0JV
RkZFUiwgbVF1YWRWZXJ0ZXhCdWZmZXIpOwotICAgIGdsQnVmZmVyRGF0YShHTF9BUlJBWV9CVUZG
RVIsIHNpemVvZihHTGZsb2F0KSAqIDMgKiA2LCBxdWFkVmVydGljZXMuZGF0YSgpLCBHTF9TVEFU
SUNfRFJBVyk7Ci19Ci0KLXZvaWQgQU5HTEVUZXN0OjpzZXR1cEluZGV4ZWRRdWFkVmVydGV4QnVm
ZmVyKEdMZmxvYXQgcG9zaXRpb25BdHRyaWJaLCBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWFlTY2Fs
ZSkKLXsKLSAgICBpZiAobVF1YWRWZXJ0ZXhCdWZmZXIgPT0gMCkKLSAgICB7Ci0gICAgICAgIGds
R2VuQnVmZmVycygxLCAmbVF1YWRWZXJ0ZXhCdWZmZXIpOwotICAgIH0KLQotICAgIGF1dG8gcXVh
ZFZlcnRpY2VzID0gYW5nbGU6OkdldEluZGV4ZWRRdWFkVmVydGljZXMoKTsKLSAgICBmb3IgKFZl
Y3RvcjMgJnZlcnRleCA6IHF1YWRWZXJ0aWNlcykKLSAgICB7Ci0gICAgICAgIHZlcnRleC54ICo9
IHBvc2l0aW9uQXR0cmliWFlTY2FsZTsKLSAgICAgICAgdmVydGV4LnkgKj0gcG9zaXRpb25BdHRy
aWJYWVNjYWxlOwotICAgICAgICB2ZXJ0ZXgueiA9IHBvc2l0aW9uQXR0cmliWjsKLSAgICB9Ci0K
LSAgICBnbEJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtUXVhZFZlcnRleEJ1ZmZlcik7Ci0g
ICAgZ2xCdWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKEdMZmxvYXQpICogMyAqIDQs
IHF1YWRWZXJ0aWNlcy5kYXRhKCksIEdMX1NUQVRJQ19EUkFXKTsKLX0KLQotLy8gc3RhdGljCi12
b2lkIEFOR0xFVGVzdDo6ZHJhd1F1YWQoR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnBvc2l0aW9uQXR0cmliTmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWikKLXsKLSAgICBkcmF3UXVh
ZChwcm9ncmFtLCBwb3NpdGlvbkF0dHJpYk5hbWUsIHBvc2l0aW9uQXR0cmliWiwgMS4wZik7Ci19
Ci0KLS8vIHN0YXRpYwotdm9pZCBBTkdMRVRlc3Q6OmRyYXdRdWFkKEdMdWludCBwcm9ncmFtLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZwb3NpdGlvbkF0dHJp
Yk5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBwb3NpdGlvbkF0dHJpYlos
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBwb3NpdGlvbkF0dHJpYlhZU2NhbGUp
Ci17Ci0gICAgZHJhd1F1YWQocHJvZ3JhbSwgcG9zaXRpb25BdHRyaWJOYW1lLCBwb3NpdGlvbkF0
dHJpYlosIHBvc2l0aW9uQXR0cmliWFlTY2FsZSwgZmFsc2UpOwotfQotCi12b2lkIEFOR0xFVGVz
dDo6ZHJhd1F1YWQoR0x1aW50IHByb2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3Qgc3RkOjpzdHJpbmcgJnBvc2l0aW9uQXR0cmliTmFtZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBH
TGZsb2F0IHBvc2l0aW9uQXR0cmliWFlTY2FsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIHVzZVZlcnRleEJ1ZmZlcikKLXsKLSAgICBHTGludCBwcmV2aW91c1Byb2dyYW0gPSAwOwot
ICAgIGdsR2V0SW50ZWdlcnYoR0xfQ1VSUkVOVF9QUk9HUkFNLCAmcHJldmlvdXNQcm9ncmFtKTsK
LSAgICBpZiAocHJldmlvdXNQcm9ncmFtICE9IHN0YXRpY19jYXN0PEdMaW50Pihwcm9ncmFtKSkK
LSAgICB7Ci0gICAgICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKLSAgICB9Ci0KLSAgICBHTGlu
dCBwb3NpdGlvbkxvY2F0aW9uID0gZ2xHZXRBdHRyaWJMb2NhdGlvbihwcm9ncmFtLCBwb3NpdGlv
bkF0dHJpYk5hbWUuY19zdHIoKSk7Ci0KLSAgICBpZiAodXNlVmVydGV4QnVmZmVyKQotICAgIHsK
LSAgICAgICAgc2V0dXBRdWFkVmVydGV4QnVmZmVyKHBvc2l0aW9uQXR0cmliWiwgcG9zaXRpb25B
dHRyaWJYWVNjYWxlKTsKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHBvc2l0aW9uTG9j
YXRpb24sIDMsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgMCk7Ci0gICAgICAgIGdsQmluZEJ1ZmZl
cihHTF9BUlJBWV9CVUZGRVIsIDApOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBh
dXRvIHF1YWRWZXJ0aWNlcyA9IEdldFF1YWRWZXJ0aWNlcygpOwotICAgICAgICBmb3IgKFZlY3Rv
cjMgJnZlcnRleCA6IHF1YWRWZXJ0aWNlcykKLSAgICAgICAgewotICAgICAgICAgICAgdmVydGV4
LnggKj0gcG9zaXRpb25BdHRyaWJYWVNjYWxlOwotICAgICAgICAgICAgdmVydGV4LnkgKj0gcG9z
aXRpb25BdHRyaWJYWVNjYWxlOwotICAgICAgICAgICAgdmVydGV4LnogPSBwb3NpdGlvbkF0dHJp
Ylo7Ci0gICAgICAgIH0KLQotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocG9zaXRpb25M
b2NhdGlvbiwgMywgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCBxdWFkVmVydGljZXMuZGF0YSgpKTsK
LSAgICB9Ci0gICAgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShwb3NpdGlvbkxvY2F0aW9uKTsK
LQotICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRVMsIDAsIDYpOwotCi0gICAgZ2xEaXNhYmxl
VmVydGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7Ci0gICAgZ2xWZXJ0ZXhBdHRyaWJQ
b2ludGVyKHBvc2l0aW9uTG9jYXRpb24sIDQsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgTlVMTCk7
Ci0KLSAgICBpZiAocHJldmlvdXNQcm9ncmFtICE9IHN0YXRpY19jYXN0PEdMaW50Pihwcm9ncmFt
KSkKLSAgICB7Ci0gICAgICAgIGdsVXNlUHJvZ3JhbShwcmV2aW91c1Byb2dyYW0pOwotICAgIH0K
LX0KLQotdm9pZCBBTkdMRVRlc3Q6OmRyYXdJbmRleGVkUXVhZChHTHVpbnQgcHJvZ3JhbSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnBvc2l0aW9u
QXR0cmliTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBwb3Np
dGlvbkF0dHJpYlopCi17Ci0gICAgZHJhd0luZGV4ZWRRdWFkKHByb2dyYW0sIHBvc2l0aW9uQXR0
cmliTmFtZSwgcG9zaXRpb25BdHRyaWJaLCAxLjBmKTsKLX0KLQotdm9pZCBBTkdMRVRlc3Q6OmRy
YXdJbmRleGVkUXVhZChHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnBvc2l0aW9uQXR0cmliTmFtZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0xmbG9hdCBwb3NpdGlvbkF0dHJpYlosCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcG9zaXRpb25BdHRyaWJYWVNjYWxlKQotewot
ICAgIEdMaW50IHBvc2l0aW9uTG9jYXRpb24gPSBnbEdldEF0dHJpYkxvY2F0aW9uKHByb2dyYW0s
IHBvc2l0aW9uQXR0cmliTmFtZS5jX3N0cigpKTsKLQotICAgIEdMaW50IGFjdGl2ZVByb2dyYW0g
PSAwOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfQ1VSUkVOVF9QUk9HUkFNLCAmYWN0aXZlUHJvZ3Jh
bSk7Ci0gICAgaWYgKHN0YXRpY19jYXN0PEdMdWludD4oYWN0aXZlUHJvZ3JhbSkgIT0gcHJvZ3Jh
bSkKLSAgICB7Ci0gICAgICAgIGdsVXNlUHJvZ3JhbShwcm9ncmFtKTsKLSAgICB9Ci0KLSAgICBH
THVpbnQgcHJldkJpbmRpbmcgPSAwOwotICAgIGdsR2V0SW50ZWdlcnYoR0xfQVJSQVlfQlVGRkVS
X0JJTkRJTkcsIHJlaW50ZXJwcmV0X2Nhc3Q8R0xpbnQgKj4oJnByZXZCaW5kaW5nKSk7Ci0KLSAg
ICBzZXR1cEluZGV4ZWRRdWFkVmVydGV4QnVmZmVyKHBvc2l0aW9uQXR0cmliWiwgcG9zaXRpb25B
dHRyaWJYWVNjYWxlKTsKLQotICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0
aW9uLCAzLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIG51bGxwdHIpOwotICAgIGdsRW5hYmxlVmVy
dGV4QXR0cmliQXJyYXkocG9zaXRpb25Mb2NhdGlvbik7Ci0gICAgZ2xCaW5kQnVmZmVyKEdMX0FS
UkFZX0JVRkZFUiwgcHJldkJpbmRpbmcpOwotCi0gICAgY29uc3QgR0x1c2hvcnQgaW5kaWNlc1td
ID0gewotICAgICAgICAwLCAxLCAyLCAwLCAyLCAzLAotICAgIH07Ci0KLSAgICBnbERyYXdFbGVt
ZW50cyhHTF9UUklBTkdMRVMsIDYsIEdMX1VOU0lHTkVEX1NIT1JULCBpbmRpY2VzKTsKLQotICAg
IGdsRGlzYWJsZVZlcnRleEF0dHJpYkFycmF5KHBvc2l0aW9uTG9jYXRpb24pOwotICAgIGdsVmVy
dGV4QXR0cmliUG9pbnRlcihwb3NpdGlvbkxvY2F0aW9uLCA0LCBHTF9GTE9BVCwgR0xfRkFMU0Us
IDAsIE5VTEwpOwotCi0gICAgaWYgKHN0YXRpY19jYXN0PEdMdWludD4oYWN0aXZlUHJvZ3JhbSkg
IT0gcHJvZ3JhbSkKLSAgICB7Ci0gICAgICAgIGdsVXNlUHJvZ3JhbShzdGF0aWNfY2FzdDxHTHVp
bnQ+KGFjdGl2ZVByb2dyYW0pKTsKLSAgICB9Ci19Ci0KLUdMdWludCBBTkdMRVRlc3Q6OmNvbXBp
bGVTaGFkZXIoR0xlbnVtIHR5cGUsIGNvbnN0IHN0ZDo6c3RyaW5nICZzb3VyY2UpCi17Ci0gICAg
R0x1aW50IHNoYWRlciA9IGdsQ3JlYXRlU2hhZGVyKHR5cGUpOwotCi0gICAgY29uc3QgY2hhciAq
c291cmNlQXJyYXlbMV0gPSB7IHNvdXJjZS5jX3N0cigpIH07Ci0gICAgZ2xTaGFkZXJTb3VyY2Uo
c2hhZGVyLCAxLCBzb3VyY2VBcnJheSwgTlVMTCk7Ci0gICAgZ2xDb21waWxlU2hhZGVyKHNoYWRl
cik7Ci0KLSAgICBHTGludCBjb21waWxlUmVzdWx0OwotICAgIGdsR2V0U2hhZGVyaXYoc2hhZGVy
LCBHTF9DT01QSUxFX1NUQVRVUywgJmNvbXBpbGVSZXN1bHQpOwotCi0gICAgaWYgKGNvbXBpbGVS
ZXN1bHQgPT0gMCkKLSAgICB7Ci0gICAgICAgIEdMaW50IGluZm9Mb2dMZW5ndGg7Ci0gICAgICAg
IGdsR2V0U2hhZGVyaXYoc2hhZGVyLCBHTF9JTkZPX0xPR19MRU5HVEgsICZpbmZvTG9nTGVuZ3Ro
KTsKLQotICAgICAgICBpZiAoaW5mb0xvZ0xlbmd0aCA9PSAwKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBzdGQ6OmNlcnIgPDwgInNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQgd2l0aCBlbXB0eSBs
b2cuIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0g
ICAgICAgICAgICBzdGQ6OnZlY3RvcjxHTGNoYXI+IGluZm9Mb2coaW5mb0xvZ0xlbmd0aCk7Ci0g
ICAgICAgICAgICBnbEdldFNoYWRlckluZm9Mb2coc2hhZGVyLCBzdGF0aWNfY2FzdDxHTHNpemVp
PihpbmZvTG9nLnNpemUoKSksIE5VTEwsICZpbmZvTG9nWzBdKTsKLQotICAgICAgICAgICAgc3Rk
OjpjZXJyIDw8ICJzaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkOiAiIDw8ICZpbmZvTG9nWzBdOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZ2xEZWxldGVTaGFkZXIoc2hhZGVyKTsKLSAgICAgICAgc2hh
ZGVyID0gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gc2hhZGVyOwotfQotCi12b2lkIEFOR0xFVGVz
dDo6Y2hlY2tEM0QxMVNES0xheWVyc01lc3NhZ2VzKCkKLXsKLSNpZiBkZWZpbmVkKEFOR0xFX1BM
QVRGT1JNX1dJTkRPV1MpICYmICFkZWZpbmVkKE5ERUJVRykKLSAgICAvLyBJbiBkZWJ1ZyBEM0Qx
MSBtb2RlLCBjaGVjayBJRDNEMTFJbmZvUXVldWUgdG8gc2VlIGlmIGFueSBEM0QxMSBTREsgTGF5
ZXJzIG1lc3NhZ2VzCi0gICAgLy8gd2VyZSBvdXRwdXR0ZWQgYnkgdGhlIHRlc3QKLSAgICBpZiAo
bUlnbm9yZUQzRDExU0RLTGF5ZXJzV2FybmluZ3MgfHwKLSAgICAgICAgbUVHTFdpbmRvdy0+Z2V0
UGxhdGZvcm0oKS5yZW5kZXJlciAhPSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdM
RSB8fAotICAgICAgICBtRUdMV2luZG93LT5nZXREaXNwbGF5KCkgPT0gRUdMX05PX0RJU1BMQVkp
Ci0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29uc3QgY2hhciAqZXh0ZW5z
aW9uU3RyaW5nID0KLSAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhciAqPihlZ2xRdWVyeVN0
cmluZyhtRUdMV2luZG93LT5nZXREaXNwbGF5KCksIEVHTF9FWFRFTlNJT05TKSk7Ci0gICAgaWYg
KCFzdHJzdHIoZXh0ZW5zaW9uU3RyaW5nLCAiRUdMX0VYVF9kZXZpY2VfcXVlcnkiKSkKLSAgICB7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBFR0xBdHRyaWIgZGV2aWNlICAgICAgPSAw
OwotICAgIEVHTEF0dHJpYiBhbmdsZURldmljZSA9IDA7Ci0KLSAgICBQRk5FR0xRVUVSWURJU1BM
QVlBVFRSSUJFWFRQUk9DIHF1ZXJ5RGlzcGxheUF0dHJpYkVYVDsKLSAgICBQRk5FR0xRVUVSWURF
VklDRUFUVFJJQkVYVFBST0MgcXVlcnlEZXZpY2VBdHRyaWJFWFQ7Ci0KLSAgICBxdWVyeURpc3Bs
YXlBdHRyaWJFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkVHTFFVRVJZRElTUExBWUFUVFJJQkVY
VFBST0M+KAotICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygiZWdsUXVlcnlEaXNwbGF5QXR0cmli
RVhUIikpOwotICAgIHF1ZXJ5RGV2aWNlQXR0cmliRVhUID0gcmVpbnRlcnByZXRfY2FzdDxQRk5F
R0xRVUVSWURFVklDRUFUVFJJQkVYVFBST0M+KAotICAgICAgICBlZ2xHZXRQcm9jQWRkcmVzcygi
ZWdsUXVlcnlEZXZpY2VBdHRyaWJFWFQiKSk7Ci0gICAgQVNTRVJUX05FKG51bGxwdHIsIHF1ZXJ5
RGlzcGxheUF0dHJpYkVYVCk7Ci0gICAgQVNTRVJUX05FKG51bGxwdHIsIHF1ZXJ5RGV2aWNlQXR0
cmliRVhUKTsKLQotICAgIEFTU0VSVF9FR0xfVFJVRShxdWVyeURpc3BsYXlBdHRyaWJFWFQobUVH
TFdpbmRvdy0+Z2V0RGlzcGxheSgpLCBFR0xfREVWSUNFX0VYVCwgJmFuZ2xlRGV2aWNlKSk7Ci0g
ICAgQVNTRVJUX0VHTF9UUlVFKHF1ZXJ5RGV2aWNlQXR0cmliRVhUKHJlaW50ZXJwcmV0X2Nhc3Q8
RUdMRGV2aWNlRVhUPihhbmdsZURldmljZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVHTF9EM0QxMV9ERVZJQ0VfQU5HTEUsICZkZXZpY2UpKTsKLSAgICBJRDNE
MTFEZXZpY2UgKmQzZDExRGV2aWNlID0gcmVpbnRlcnByZXRfY2FzdDxJRDNEMTFEZXZpY2UgKj4o
ZGV2aWNlKTsKLQotICAgIElEM0QxMUluZm9RdWV1ZSAqaW5mb1F1ZXVlID0gbnVsbHB0cjsKLSAg
ICBIUkVTVUxUIGhyID0KLSAgICAgICAgZDNkMTFEZXZpY2UtPlF1ZXJ5SW50ZXJmYWNlKF9fdXVp
ZG9mKGluZm9RdWV1ZSksIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCAqKj4oJmluZm9RdWV1ZSkpOwot
ICAgIGlmIChTVUNDRUVERUQoaHIpKQotICAgIHsKLSAgICAgICAgVUlOVDY0IG51bVN0b3JlZEQz
RERlYnVnTWVzc2FnZXMgPQotICAgICAgICAgICAgaW5mb1F1ZXVlLT5HZXROdW1TdG9yZWRNZXNz
YWdlc0FsbG93ZWRCeVJldHJpZXZhbEZpbHRlcigpOwotCi0gICAgICAgIGlmIChudW1TdG9yZWRE
M0REZWJ1Z01lc3NhZ2VzID4gMCkKLSAgICAgICAgewotICAgICAgICAgICAgZm9yIChVSU5UNjQg
aSA9IDA7IGkgPCBudW1TdG9yZWREM0REZWJ1Z01lc3NhZ2VzOyBpKyspCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgU0laRV9UIG1lc3NhZ2VMZW5ndGggPSAwOwotICAgICAgICAgICAg
ICAgIGhyICAgICAgICAgICAgICAgICAgID0gaW5mb1F1ZXVlLT5HZXRNZXNzYWdlKGksIG51bGxw
dHIsICZtZXNzYWdlTGVuZ3RoKTsKLQotICAgICAgICAgICAgICAgIGlmIChTVUNDRUVERUQoaHIp
KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgRDNEMTFfTUVTU0FHRSAq
cE1lc3NhZ2UgPQotICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxEM0Qx
MV9NRVNTQUdFICo+KG1hbGxvYyhtZXNzYWdlTGVuZ3RoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IGluZm9RdWV1ZS0+R2V0TWVzc2FnZShpLCBwTWVzc2FnZSwgJm1lc3NhZ2VMZW5ndGgpOwotCi0g
ICAgICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiTWVzc2FnZSAiIDw8IGkgPDwgIjoiCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiICIgPDwgcE1lc3NhZ2UtPnBEZXNjcmlw
dGlvbiA8PCAiXG4iOwotICAgICAgICAgICAgICAgICAgICBmcmVlKHBNZXNzYWdlKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEZBSUwoKSA8PCBudW1T
dG9yZWREM0REZWJ1Z01lc3NhZ2VzCi0gICAgICAgICAgICAgICAgICAgPDwgIiBEM0QxMSBTREsg
TGF5ZXJzIG1lc3NhZ2UocykgZGV0ZWN0ZWQhIFRlc3QgRmFpbGVkLlxuIjsKLSAgICAgICAgfQot
ICAgIH0KLQotICAgIFNhZmVSZWxlYXNlKGluZm9RdWV1ZSk7Ci0jZW5kaWYKLX0KLQotc3RhdGlj
IGJvb2wgY2hlY2tFeHRlbnNpb25FeGlzdHMoY29uc3QgY2hhciAqYWxsRXh0ZW5zaW9ucywgY29u
c3Qgc3RkOjpzdHJpbmcgJmV4dE5hbWUpCi17Ci0gICAgcmV0dXJuIHN0cnN0cihhbGxFeHRlbnNp
b25zLCBleHROYW1lLmNfc3RyKCkpICE9IG51bGxwdHI7Ci19Ci0KLWJvb2wgQU5HTEVUZXN0Ojpl
eHRlbnNpb25FbmFibGVkKGNvbnN0IHN0ZDo6c3RyaW5nICZleHROYW1lKQotewotICAgIHJldHVy
biBjaGVja0V4dGVuc2lvbkV4aXN0cyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oZ2xH
ZXRTdHJpbmcoR0xfRVhURU5TSU9OUykpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBleHROYW1lKTsKLX0KLQotYm9vbCBBTkdMRVRlc3Q6OmVnbERpc3BsYXlFeHRlbnNpb25FbmFi
bGVkKEVHTERpc3BsYXkgZGlzcGxheSwgY29uc3Qgc3RkOjpzdHJpbmcgJmV4dE5hbWUpCi17Ci0g
ICAgcmV0dXJuIGNoZWNrRXh0ZW5zaW9uRXhpc3RzKGVnbFF1ZXJ5U3RyaW5nKGRpc3BsYXksIEVH
TF9FWFRFTlNJT05TKSwgZXh0TmFtZSk7Ci19Ci0KLWJvb2wgQU5HTEVUZXN0OjplZ2xDbGllbnRF
eHRlbnNpb25FbmFibGVkKGNvbnN0IHN0ZDo6c3RyaW5nICZleHROYW1lKQotewotICAgIHJldHVy
biBjaGVja0V4dGVuc2lvbkV4aXN0cyhlZ2xRdWVyeVN0cmluZyhFR0xfTk9fRElTUExBWSwgRUdM
X0VYVEVOU0lPTlMpLCBleHROYW1lKTsKLX0KLQotdm9pZCBBTkdMRVRlc3Q6OnNldFdpbmRvd1dp
ZHRoKGludCB3aWR0aCkKLXsKLSAgICBtV2lkdGggPSB3aWR0aDsKLX0KLQotdm9pZCBBTkdMRVRl
c3Q6OnNldFdpbmRvd0hlaWdodChpbnQgaGVpZ2h0KQotewotICAgIG1IZWlnaHQgPSBoZWlnaHQ7
Ci19Ci0KLXZvaWQgQU5HTEVUZXN0OjpzZXRDb25maWdSZWRCaXRzKGludCBiaXRzKQotewotICAg
IG1FR0xXaW5kb3ctPnNldENvbmZpZ1JlZEJpdHMoYml0cyk7Ci19Ci0KLXZvaWQgQU5HTEVUZXN0
OjpzZXRDb25maWdHcmVlbkJpdHMoaW50IGJpdHMpCi17Ci0gICAgbUVHTFdpbmRvdy0+c2V0Q29u
ZmlnR3JlZW5CaXRzKGJpdHMpOwotfQotCi12b2lkIEFOR0xFVGVzdDo6c2V0Q29uZmlnQmx1ZUJp
dHMoaW50IGJpdHMpCi17Ci0gICAgbUVHTFdpbmRvdy0+c2V0Q29uZmlnQmx1ZUJpdHMoYml0cyk7
Ci19Ci0KLXZvaWQgQU5HTEVUZXN0OjpzZXRDb25maWdBbHBoYUJpdHMoaW50IGJpdHMpCi17Ci0g
ICAgbUVHTFdpbmRvdy0+c2V0Q29uZmlnQWxwaGFCaXRzKGJpdHMpOwotfQotCi12b2lkIEFOR0xF
VGVzdDo6c2V0Q29uZmlnRGVwdGhCaXRzKGludCBiaXRzKQotewotICAgIG1FR0xXaW5kb3ctPnNl
dENvbmZpZ0RlcHRoQml0cyhiaXRzKTsKLX0KLQotdm9pZCBBTkdMRVRlc3Q6OnNldENvbmZpZ1N0
ZW5jaWxCaXRzKGludCBiaXRzKQotewotICAgIG1FR0xXaW5kb3ctPnNldENvbmZpZ1N0ZW5jaWxC
aXRzKGJpdHMpOwotfQotCi12b2lkIEFOR0xFVGVzdDo6c2V0TXVsdGlzYW1wbGVFbmFibGVkKGJv
b2wgZW5hYmxlZCkKLXsKLSAgICBtRUdMV2luZG93LT5zZXRNdWx0aXNhbXBsZShlbmFibGVkKTsK
LX0KLQotdm9pZCBBTkdMRVRlc3Q6OnNldERlYnVnRW5hYmxlZChib29sIGVuYWJsZWQpCi17Ci0g
ICAgbUVHTFdpbmRvdy0+c2V0RGVidWdFbmFibGVkKGVuYWJsZWQpOwotfQotCi12b2lkIEFOR0xF
VGVzdDo6c2V0Tm9FcnJvckVuYWJsZWQoYm9vbCBlbmFibGVkKQotewotICAgIG1FR0xXaW5kb3ct
PnNldE5vRXJyb3JFbmFibGVkKGVuYWJsZWQpOwotfQotCi12b2lkIEFOR0xFVGVzdDo6c2V0V2Vi
R0xDb21wYXRpYmlsaXR5RW5hYmxlZChib29sIHdlYmdsQ29tcGF0aWJpbGl0eSkKLXsKLSAgICBt
RUdMV2luZG93LT5zZXRXZWJHTENvbXBhdGliaWxpdHlFbmFibGVkKHdlYmdsQ29tcGF0aWJpbGl0
eSk7Ci19Ci0KLXZvaWQgQU5HTEVUZXN0OjpzZXRCaW5kR2VuZXJhdGVzUmVzb3VyY2UoYm9vbCBi
aW5kR2VuZXJhdGVzUmVzb3VyY2UpCi17Ci0gICAgbUVHTFdpbmRvdy0+c2V0QmluZEdlbmVyYXRl
c1Jlc291cmNlKGJpbmRHZW5lcmF0ZXNSZXNvdXJjZSk7Ci19Ci0KLWludCBBTkdMRVRlc3Q6Omdl
dENsaWVudE1ham9yVmVyc2lvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1FR0xXaW5kb3ctPmdl
dENsaWVudE1ham9yVmVyc2lvbigpOwotfQotCi1pbnQgQU5HTEVUZXN0OjpnZXRDbGllbnRNaW5v
clZlcnNpb24oKSBjb25zdAotewotICAgIHJldHVybiBtRUdMV2luZG93LT5nZXRDbGllbnRNaW5v
clZlcnNpb24oKTsKLX0KLQotRUdMV2luZG93ICpBTkdMRVRlc3Q6OmdldEVHTFdpbmRvdygpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1FR0xXaW5kb3c7Ci19Ci0KLWludCBBTkdMRVRlc3Q6OmdldFdp
bmRvd1dpZHRoKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVdpZHRoOwotfQotCi1pbnQgQU5HTEVU
ZXN0OjpnZXRXaW5kb3dIZWlnaHQoKSBjb25zdAotewotICAgIHJldHVybiBtSGVpZ2h0OwotfQot
Ci1ib29sIEFOR0xFVGVzdDo6aXNNdWx0aXNhbXBsZUVuYWJsZWQoKSBjb25zdAotewotICAgIHJl
dHVybiBtRUdMV2luZG93LT5pc011bHRpc2FtcGxlKCk7Ci19Ci0KLWJvb2wgQU5HTEVUZXN0Ojpj
cmVhdGVFR0xDb250ZXh0KCkKLXsKLSAgICByZXR1cm4gbUVHTFdpbmRvdy0+aW5pdGlhbGl6ZUdM
KG1PU1dpbmRvdyk7Ci19Ci0KLWJvb2wgQU5HTEVUZXN0OjpkZXN0cm95RUdMQ29udGV4dCgpCi17
Ci0gICAgbUVHTFdpbmRvdy0+ZGVzdHJveUdMKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJv
b2wgQU5HTEVUZXN0OjpJbml0VGVzdFdpbmRvdygpCi17Ci0gICAgbU9TV2luZG93ID0gQ3JlYXRl
T1NXaW5kb3coKTsKLSAgICBpZiAoIW1PU1dpbmRvdy0+aW5pdGlhbGl6ZSgiQU5HTEVfVEVTVCIs
IDEyOCwgMTI4KSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBt
T1NXaW5kb3ctPnNldFZpc2libGUodHJ1ZSk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9v
bCBBTkdMRVRlc3Q6OkRlc3Ryb3lUZXN0V2luZG93KCkKLXsKLSAgICBpZiAobU9TV2luZG93KQot
ICAgIHsKLSAgICAgICAgbU9TV2luZG93LT5kZXN0cm95KCk7Ci0gICAgICAgIGRlbGV0ZSBtT1NX
aW5kb3c7Ci0gICAgICAgIG1PU1dpbmRvdyA9IE5VTEw7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRy
dWU7Ci19Ci0KLXZvaWQgQU5HTEVUZXN0OjpTZXRXaW5kb3dWaXNpYmxlKGJvb2wgaXNWaXNpYmxl
KQotewotICAgIG1PU1dpbmRvdy0+c2V0VmlzaWJsZShpc1Zpc2libGUpOwotfQotCi1ib29sIElz
SW50ZWwoKQotewotICAgIHN0ZDo6c3RyaW5nIHJlbmRlcmVyU3RyaW5nKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgY2hhciAqPihnbEdldFN0cmluZyhHTF9SRU5ERVJFUikpKTsKLSAgICByZXR1cm4g
KHJlbmRlcmVyU3RyaW5nLmZpbmQoIkludGVsIikgIT0gc3RkOjpzdHJpbmc6Om5wb3MpOwotfQot
Ci1ib29sIElzQWRyZW5vKCkKLXsKLSAgICBzdGQ6OnN0cmluZyByZW5kZXJlclN0cmluZyhyZWlu
dGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oZ2xHZXRTdHJpbmcoR0xfUkVOREVSRVIpKSk7Ci0g
ICAgcmV0dXJuIChyZW5kZXJlclN0cmluZy5maW5kKCJBZHJlbm8iKSAhPSBzdGQ6OnN0cmluZzo6
bnBvcyk7Ci19Ci0KLWJvb2wgSXNBTUQoKQotewotICAgIHN0ZDo6c3RyaW5nIHJlbmRlcmVyU3Ry
aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihnbEdldFN0cmluZyhHTF9SRU5ERVJF
UikpKTsKLSAgICByZXR1cm4gKHJlbmRlcmVyU3RyaW5nLmZpbmQoIkFNRCIpICE9IHN0ZDo6c3Ry
aW5nOjpucG9zKSB8fAotICAgICAgICAgICAocmVuZGVyZXJTdHJpbmcuZmluZCgiQVRJIikgIT0g
c3RkOjpzdHJpbmc6Om5wb3MpOwotfQotCi1ib29sIElzTlZJRElBKCkKLXsKLSAgICBzdGQ6OnN0
cmluZyByZW5kZXJlclN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oZ2xHZXRT
dHJpbmcoR0xfUkVOREVSRVIpKSk7Ci0gICAgcmV0dXJuIChyZW5kZXJlclN0cmluZy5maW5kKCJO
VklESUEiKSAhPSBzdGQ6OnN0cmluZzo6bnBvcyk7Ci19Ci0KLWJvb2wgSXNEM0QxMSgpCi17Ci0g
ICAgc3RkOjpzdHJpbmcgcmVuZGVyZXJTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFy
ICo+KGdsR2V0U3RyaW5nKEdMX1JFTkRFUkVSKSkpOwotICAgIHJldHVybiAocmVuZGVyZXJTdHJp
bmcuZmluZCgiRGlyZWN0M0QxMSB2c181XzAiKSAhPSBzdGQ6OnN0cmluZzo6bnBvcyk7Ci19Ci0K
LWJvb2wgSXNEM0QxMV9GTDkzKCkKLXsKLSAgICBzdGQ6OnN0cmluZyByZW5kZXJlclN0cmluZyhy
ZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oZ2xHZXRTdHJpbmcoR0xfUkVOREVSRVIpKSk7
Ci0gICAgcmV0dXJuIChyZW5kZXJlclN0cmluZy5maW5kKCJEaXJlY3QzRDExIHZzXzRfMF8iKSAh
PSBzdGQ6OnN0cmluZzo6bnBvcyk7Ci19Ci0KLWJvb2wgSXNEM0Q5KCkKLXsKLSAgICBzdGQ6OnN0
cmluZyByZW5kZXJlclN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oZ2xHZXRT
dHJpbmcoR0xfUkVOREVSRVIpKSk7Ci0gICAgcmV0dXJuIChyZW5kZXJlclN0cmluZy5maW5kKCJE
aXJlY3QzRDkiKSAhPSBzdGQ6OnN0cmluZzo6bnBvcyk7Ci19Ci0KLWJvb2wgSXNEM0RTTTMoKQot
ewotICAgIHJldHVybiBJc0QzRDkoKSB8fCBJc0QzRDExX0ZMOTMoKTsKLX0KLQotYm9vbCBJc0Rl
c2t0b3BPcGVuR0woKQotewotICAgIHJldHVybiBJc09wZW5HTCgpICYmICFJc09wZW5HTEVTKCk7
Ci19Ci0KLWJvb2wgSXNPcGVuR0xFUygpCi17Ci0gICAgc3RkOjpzdHJpbmcgcmVuZGVyZXJTdHJp
bmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KGdsR2V0U3RyaW5nKEdMX1JFTkRFUkVS
KSkpOwotICAgIHJldHVybiAocmVuZGVyZXJTdHJpbmcuZmluZCgiT3BlbkdMIEVTIikgIT0gc3Rk
OjpzdHJpbmc6Om5wb3MpOwotfQotCi1ib29sIElzT3BlbkdMKCkKLXsKLSAgICBzdGQ6OnN0cmlu
ZyByZW5kZXJlclN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oZ2xHZXRTdHJp
bmcoR0xfUkVOREVSRVIpKSk7Ci0gICAgcmV0dXJuIChyZW5kZXJlclN0cmluZy5maW5kKCJPcGVu
R0wiKSAhPSBzdGQ6OnN0cmluZzo6bnBvcyk7Ci19Ci0KLWJvb2wgSXNBbmRyb2lkKCkKLXsKLSNp
ZiBkZWZpbmVkKEFOR0xFX1BMQVRGT1JNX0FORFJPSUQpCi0gICAgcmV0dXJuIHRydWU7Ci0jZWxz
ZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi1ib29sIElzTGludXgoKQotewotI2lm
IGRlZmluZWQoQU5HTEVfUExBVEZPUk1fTElOVVgpCi0gICAgcmV0dXJuIHRydWU7Ci0jZWxzZQot
ICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCi1ib29sIElzT1NYKCkKLXsKLSNpZiBkZWZp
bmVkKEFOR0xFX1BMQVRGT1JNX0FQUExFKQotICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICBy
ZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLX0KLQotYm9vbCBJc1dpbmRvd3MoKQotewotI2lmIGRlZmlu
ZWQoQU5HTEVfUExBVEZPUk1fV0lORE9XUykKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAg
cmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLWJvb2wgSXNEZWJ1ZygpCi17Ci0jaWYgIWRlZmlu
ZWQoTkRFQlVHKQotICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0j
ZW5kaWYKLX0KLQotYm9vbCBJc1JlbGVhc2UoKQotewotICAgIHJldHVybiAhSXNEZWJ1ZygpOwot
fQotCi1FR0xpbnQgQU5HTEVUZXN0OjpnZXRQbGF0Zm9ybVJlbmRlcmVyKCkgY29uc3QKLXsKLSAg
ICBhc3NlcnQobUVHTFdpbmRvdyk7Ci0gICAgcmV0dXJuIG1FR0xXaW5kb3ctPmdldFBsYXRmb3Jt
KCkucmVuZGVyZXI7Ci19Ci0KLXZvaWQgQU5HTEVUZXN0OjppZ25vcmVEM0QxMVNES0xheWVyc1dh
cm5pbmdzKCkKLXsKLSAgICAvLyBTb21lIHRlc3RzIG1heSBuZWVkIHRvIGRpc2FibGUgdGhlIEQz
RDExIFNESyBMYXllcnMgV2FybmluZ3MgY2hlY2tzCi0gICAgbUlnbm9yZUQzRDExU0RLTGF5ZXJz
V2FybmluZ3MgPSB0cnVlOwotfQotCi1PU1dpbmRvdyAqQU5HTEVUZXN0OjptT1NXaW5kb3cgPSBO
VUxMOwotCi12b2lkIEFOR0xFVGVzdEVudmlyb25tZW50OjpTZXRVcCgpCi17Ci0gICAgbUdMRVNM
aWJyYXJ5LnJlc2V0KGFuZ2xlOjpsb2FkTGlicmFyeSgibGliR0xFU3YyIikpOwotICAgIGlmICht
R0xFU0xpYnJhcnkpCi0gICAgewotICAgICAgICBhdXRvIGluaXRGdW5jID0gcmVpbnRlcnByZXRf
Y2FzdDxBTkdMRVBsYXRmb3JtSW5pdGlhbGl6ZUZ1bmM+KAotICAgICAgICAgICAgbUdMRVNMaWJy
YXJ5LT5nZXRTeW1ib2woIkFOR0xFUGxhdGZvcm1Jbml0aWFsaXplIikpOwotICAgICAgICBpZiAo
aW5pdEZ1bmMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGluaXRGdW5jKCZhbmdsZTo6Z190ZXN0
UGxhdGZvcm1JbnN0YW5jZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIUFOR0xFVGVz
dDo6SW5pdFRlc3RXaW5kb3coKSkKLSAgICB7Ci0gICAgICAgIEZBSUwoKSA8PCAiRmFpbGVkIHRv
IGNyZWF0ZSBBTkdMRSB0ZXN0IHdpbmRvdy4iOwotICAgIH0KLX0KLQotdm9pZCBBTkdMRVRlc3RF
bnZpcm9ubWVudDo6VGVhckRvd24oKQotewotICAgIEFOR0xFVGVzdDo6RGVzdHJveVRlc3RXaW5k
b3coKTsKLQotICAgIGlmIChtR0xFU0xpYnJhcnkpCi0gICAgewotICAgICAgICBhdXRvIHNodXRk
b3duRnVuYyA9IHJlaW50ZXJwcmV0X2Nhc3Q8QU5HTEVQbGF0Zm9ybVNodXRkb3duRnVuYz4oCi0g
ICAgICAgICAgICBtR0xFU0xpYnJhcnktPmdldFN5bWJvbCgiQU5HTEVQbGF0Zm9ybVNodXRkb3du
IikpOwotICAgICAgICBpZiAoc2h1dGRvd25GdW5jKQotICAgICAgICB7Ci0gICAgICAgICAgICBz
aHV0ZG93bkZ1bmMoKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBJZ25vcmVBTkdMRVBs
YXRmb3JtTWVzc2FnZXMoKQotewotICAgIC8vIE5lZ2F0aXZlIHRlc3RzIG1heSB0cmlnZ2VyIGV4
cGVjdGVkIGVycm9ycy93YXJuaW5ncyBpbiB0aGUgQU5HTEUgUGxhdGZvcm0uCi0gICAgYW5nbGU6
OmdfdGVzdFBsYXRmb3JtSW5zdGFuY2UuaWdub3JlTWVzc2FnZXMoKTsKLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL0FOR0xFVGVzdC5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvQU5HTEVUZXN0
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzMmNiMzBhNzgwLi4wMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9BTkdM
RVRlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDI3MyArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0
IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLS8v
IEFOR0xFVGVzdDoKLS8vICAgSW1wbGVtZW50YXRpb24gb2YgY29tbW9uIEFOR0xFIHRlc3Rpbmcg
Zml4dHVyZS4KLS8vCi0KLSNpZm5kZWYgQU5HTEVfVEVTVFNfQU5HTEVfVEVTVF9IXwotI2RlZmlu
ZSBBTkdMRV9URVNUU19BTkdMRV9URVNUX0hfCi0KLSNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgot
I2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDxhcnJheT4KLQotI2luY2x1ZGUgImFuZ2xl
X2dsLmgiCi0jaW5jbHVkZSAiYW5nbGVfdGVzdF9jb25maWdzLmgiCi0jaW5jbHVkZSAiY29tbW9u
L2FuZ2xldXRpbHMuaCIKLSNpbmNsdWRlICJzaGFkZXJfdXRpbHMuaCIKLSNpbmNsdWRlICJzeXN0
ZW1fdXRpbHMuaCIKLSNpbmNsdWRlICJWZWN0b3IuaCIKLQotI2RlZmluZSBFWFBFQ1RfR0xfRVJS
T1IoZXJyKSBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8R0xlbnVtPihlcnIpLCBnbEdldEVycm9yKCkp
Ci0jZGVmaW5lIEVYUEVDVF9HTF9OT19FUlJPUigpIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxHTGVu
dW0+KEdMX05PX0VSUk9SKSwgZ2xHZXRFcnJvcigpKQotCi0jZGVmaW5lIEFTU0VSVF9HTF9FUlJP
UihlcnIpIEFTU0VSVF9FUShzdGF0aWNfY2FzdDxHTGVudW0+KGVyciksIGdsR2V0RXJyb3IoKSkK
LSNkZWZpbmUgQVNTRVJUX0dMX05PX0VSUk9SKCkgQVNTRVJUX0VRKHN0YXRpY19jYXN0PEdMZW51
bT4oR0xfTk9fRVJST1IpLCBnbEdldEVycm9yKCkpCi0KLSNkZWZpbmUgRVhQRUNUX0VHTF9FUlJP
UihlcnIpIEVYUEVDVF9FUSgoZXJyKSwgZWdsR2V0RXJyb3IoKSkKLSNkZWZpbmUgRVhQRUNUX0VH
TF9TVUNDRVNTKCkgRVhQRUNUX0VHTF9FUlJPUihFR0xfU1VDQ0VTUykKLQotLy8gRUdMQm9vbGVh
biBpcyB8dW5zaWduZWQgaW50fCBidXQgRUdMX1RSVUUgaXMgMCwgbm90IDB1LgotI2RlZmluZSBB
U1NFUlRfRUdMX1RSVUUoYSkgQVNTRVJUX0VRKHN0YXRpY19jYXN0PEVHTEJvb2xlYW4+KEVHTF9U
UlVFKSwgKGEpKQotI2RlZmluZSBBU1NFUlRfRUdMX0ZBTFNFKGEpIEFTU0VSVF9FUShzdGF0aWNf
Y2FzdDxFR0xCb29sZWFuPihFR0xfRkFMU0UpLCAoYSkpCi0jZGVmaW5lIEVYUEVDVF9FR0xfVFJV
RShhKSBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8RUdMQm9vbGVhbj4oRUdMX1RSVUUpLCAoYSkpCi0j
ZGVmaW5lIEVYUEVDVF9FR0xfRkFMU0UoYSkgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEVHTEJvb2xl
YW4+KEVHTF9GQUxTRSksIChhKSkKLQotI2RlZmluZSBBU1NFUlRfRUdMX0VSUk9SKGVycikgQVNT
RVJUX0VRKChlcnIpLCBlZ2xHZXRFcnJvcigpKQotI2RlZmluZSBBU1NFUlRfRUdMX1NVQ0NFU1Mo
KSBBU1NFUlRfRUdMX0VSUk9SKEVHTF9TVUNDRVNTKQotCi0jZGVmaW5lIEFTU0VSVF9HTEVOVU1f
RVEoZXhwZWN0ZWQsIGFjdHVhbCkgQVNTRVJUX0VRKHN0YXRpY19jYXN0PEdMZW51bT4oZXhwZWN0
ZWQpLCBzdGF0aWNfY2FzdDxHTGVudW0+KGFjdHVhbCkpCi0jZGVmaW5lIEVYUEVDVF9HTEVOVU1f
RVEoZXhwZWN0ZWQsIGFjdHVhbCkgRVhQRUNUX0VRKHN0YXRpY19jYXN0PEdMZW51bT4oZXhwZWN0
ZWQpLCBzdGF0aWNfY2FzdDxHTGVudW0+KGFjdHVhbCkpCi0KLW5hbWVzcGFjZSBhbmdsZQotewot
c3RydWN0IEdMQ29sb3JSR0IKLXsKLSAgICBHTENvbG9yUkdCKCk7Ci0gICAgR0xDb2xvclJHQihH
THVieXRlIHIsIEdMdWJ5dGUgZywgR0x1Ynl0ZSBiKTsKLSAgICBHTENvbG9yUkdCKGNvbnN0IFZl
Y3RvcjMgJmZsb2F0Q29sb3IpOwotCi0gICAgR0x1Ynl0ZSBSLCBHLCBCOwotCi0gICAgc3RhdGlj
IGNvbnN0IEdMQ29sb3JSR0IgYmxhY2s7Ci0gICAgc3RhdGljIGNvbnN0IEdMQ29sb3JSR0IgYmx1
ZTsKLSAgICBzdGF0aWMgY29uc3QgR0xDb2xvclJHQiBncmVlbjsKLSAgICBzdGF0aWMgY29uc3Qg
R0xDb2xvclJHQiByZWQ7Ci0gICAgc3RhdGljIGNvbnN0IEdMQ29sb3JSR0IgeWVsbG93OwotfTsK
LQotc3RydWN0IEdMQ29sb3IKLXsKLSAgICBHTENvbG9yKCk7Ci0gICAgR0xDb2xvcihHTHVieXRl
IHIsIEdMdWJ5dGUgZywgR0x1Ynl0ZSBiLCBHTHVieXRlIGEpOwotICAgIEdMQ29sb3IoY29uc3Qg
VmVjdG9yNCAmZmxvYXRDb2xvcik7Ci0gICAgR0xDb2xvcihHTHVpbnQgY29sb3JWYWx1ZSk7Ci0K
LSAgICBWZWN0b3I0IHRvTm9ybWFsaXplZFZlY3RvcigpIGNvbnN0OwotCi0gICAgR0x1Ynl0ZSBS
LCBHLCBCLCBBOwotCi0gICAgc3RhdGljIGNvbnN0IEdMQ29sb3IgYmxhY2s7Ci0gICAgc3RhdGlj
IGNvbnN0IEdMQ29sb3IgYmx1ZTsKLSAgICBzdGF0aWMgY29uc3QgR0xDb2xvciBjeWFuOwotICAg
IHN0YXRpYyBjb25zdCBHTENvbG9yIGdyZWVuOwotICAgIHN0YXRpYyBjb25zdCBHTENvbG9yIHJl
ZDsKLSAgICBzdGF0aWMgY29uc3QgR0xDb2xvciB0cmFuc3BhcmVudEJsYWNrOwotICAgIHN0YXRp
YyBjb25zdCBHTENvbG9yIHdoaXRlOwotICAgIHN0YXRpYyBjb25zdCBHTENvbG9yIHllbGxvdzsK
LX07Ci0KLS8vIFVzZWZ1bCB0byBjYXN0IGFueSB0eXBlIHRvIEdMdWJ5dGUuCi10ZW1wbGF0ZSA8
dHlwZW5hbWUgVFIsIHR5cGVuYW1lIFRHLCB0eXBlbmFtZSBUQiwgdHlwZW5hbWUgVEE+Ci1HTENv
bG9yIE1ha2VHTENvbG9yKFRSIHIsIFRHIGcsIFRCIGIsIFRBIGEpCi17Ci0gICAgcmV0dXJuIEdM
Q29sb3Ioc3RhdGljX2Nhc3Q8R0x1Ynl0ZT4ociksIHN0YXRpY19jYXN0PEdMdWJ5dGU+KGcpLCBz
dGF0aWNfY2FzdDxHTHVieXRlPihiKSwKLSAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxH
THVieXRlPihhKSk7Ci19Ci0KLWJvb2wgb3BlcmF0b3I9PShjb25zdCBHTENvbG9yICZhLCBjb25z
dCBHTENvbG9yICZiKTsKLXN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0gJm9z
dHJlYW0sIGNvbnN0IEdMQ29sb3IgJmNvbG9yKTsKLUdMQ29sb3IgUmVhZENvbG9yKEdMaW50IHgs
IEdMaW50IHkpOwotCi19ICAvLyBuYW1lc3BhY2UgYW5nbGUKLQotI2RlZmluZSBFWFBFQ1RfUElY
RUxfRVEoeCwgeSwgciwgZywgYiwgYSkgXAotICAgIEVYUEVDVF9FUShhbmdsZTo6TWFrZUdMQ29s
b3IociwgZywgYiwgYSksIGFuZ2xlOjpSZWFkQ29sb3IoeCwgeSkpCi0KLSNkZWZpbmUgRVhQRUNU
X1BJWEVMX0FMUEhBX0VRKHgsIHksIGEpIEVYUEVDVF9FUShhLCBhbmdsZTo6UmVhZENvbG9yKHgs
IHkpLkEpCi0KLSNkZWZpbmUgRVhQRUNUX1BJWEVMX0NPTE9SX0VRKHgsIHksIGFuZ2xlQ29sb3Ip
IEVYUEVDVF9FUShhbmdsZUNvbG9yLCBhbmdsZTo6UmVhZENvbG9yKHgsIHkpKQotCi0jZGVmaW5l
IEVYUEVDVF9QSVhFTF9ORUFSKHgsIHksIHIsIGcsIGIsIGEsIGFic19lcnJvcikgXAoteyBcCi0g
ICAgR0x1Ynl0ZSBwaXhlbFs0XTsgXAotICAgIGdsUmVhZFBpeGVscygoeCksICh5KSwgMSwgMSwg
R0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgcGl4ZWwpOyBcCi0gICAgRVhQRUNUX0dMX05PX0VS
Uk9SKCk7IFwKLSAgICBFWFBFQ1RfTkVBUigociksIHBpeGVsWzBdLCBhYnNfZXJyb3IpOyBcCi0g
ICAgRVhQRUNUX05FQVIoKGcpLCBwaXhlbFsxXSwgYWJzX2Vycm9yKTsgXAotICAgIEVYUEVDVF9O
RUFSKChiKSwgcGl4ZWxbMl0sIGFic19lcnJvcik7IFwKLSAgICBFWFBFQ1RfTkVBUigoYSksIHBp
eGVsWzNdLCBhYnNfZXJyb3IpOyBcCi19Ci0KLS8vIFRPRE8oam1hZGlsbCk6IEZpZ3VyZSBvdXQg
aG93IHdlIGNhbiB1c2UgR0xDb2xvcidzIG5pY2UgcHJpbnRpbmcgd2l0aCBFWFBFQ1RfTkVBUi4K
LSNkZWZpbmUgRVhQRUNUX1BJWEVMX0NPTE9SX05FQVIoeCwgeSwgYW5nbGVDb2xvciwgYWJzX2Vy
cm9yKSBcCi0gICAgRVhQRUNUX1BJWEVMX05FQVIoeCwgeSwgYW5nbGVDb2xvci5SLCBhbmdsZUNv
bG9yLkcsIGFuZ2xlQ29sb3IuQiwgYW5nbGVDb2xvci5BLCBhYnNfZXJyb3IpCi0KLSNkZWZpbmUg
RVhQRUNUX0NPTE9SX05FQVIoZXhwZWN0ZWQsIGFjdHVhbCwgYWJzX2Vycm9yKSBcCi0gICAgXAot
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg
ICBFWFBFQ1RfTkVBUihleHBlY3RlZC5SLCBhY3R1YWwuUiwgYWJzX2Vycm9yKTsgIFwKLSAgICAg
ICAgRVhQRUNUX05FQVIoZXhwZWN0ZWQuRywgYWN0dWFsLkcsIGFic19lcnJvcik7ICBcCi0gICAg
ICAgIEVYUEVDVF9ORUFSKGV4cGVjdGVkLkIsIGFjdHVhbC5CLCBhYnNfZXJyb3IpOyAgXAotICAg
ICAgICBFWFBFQ1RfTkVBUihleHBlY3RlZC5BLCBhY3R1YWwuQSwgYWJzX2Vycm9yKTsgIFwKLSAg
ICBcCi19Ci0KLWNsYXNzIEVHTFdpbmRvdzsKLWNsYXNzIE9TV2luZG93OwotCi1jbGFzcyBBTkdM
RVRlc3QgOiBwdWJsaWMgOjp0ZXN0aW5nOjpUZXN0V2l0aFBhcmFtPGFuZ2xlOjpQbGF0Zm9ybVBh
cmFtZXRlcnM+Ci17Ci0gIHByb3RlY3RlZDoKLSAgICBBTkdMRVRlc3QoKTsKLSAgICB+QU5HTEVU
ZXN0KCk7Ci0KLSAgcHVibGljOgotICAgIHN0YXRpYyBib29sIEluaXRUZXN0V2luZG93KCk7Ci0g
ICAgc3RhdGljIGJvb2wgRGVzdHJveVRlc3RXaW5kb3coKTsKLSAgICBzdGF0aWMgdm9pZCBTZXRX
aW5kb3dWaXNpYmxlKGJvb2wgaXNWaXNpYmxlKTsKLSAgICBzdGF0aWMgYm9vbCBlZ2xEaXNwbGF5
RXh0ZW5zaW9uRW5hYmxlZChFR0xEaXNwbGF5IGRpc3BsYXksIGNvbnN0IHN0ZDo6c3RyaW5nICZl
eHROYW1lKTsKLQotICBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIFNldFVwKCk7Ci0gICAg
dmlydHVhbCB2b2lkIFRlYXJEb3duKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMo
KTsKLQotICAgIHZvaWQgc2V0dXBRdWFkVmVydGV4QnVmZmVyKEdMZmxvYXQgcG9zaXRpb25BdHRy
aWJaLCBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWFlTY2FsZSk7Ci0gICAgdm9pZCBzZXR1cEluZGV4
ZWRRdWFkVmVydGV4QnVmZmVyKEdMZmxvYXQgcG9zaXRpb25BdHRyaWJaLCBHTGZsb2F0IHBvc2l0
aW9uQXR0cmliWFlTY2FsZSk7Ci0KLSAgICB2b2lkIGRyYXdRdWFkKEdMdWludCBwcm9ncmFtLCBj
b25zdCBzdGQ6OnN0cmluZyAmcG9zaXRpb25BdHRyaWJOYW1lLCBHTGZsb2F0IHBvc2l0aW9uQXR0
cmliWik7Ci0gICAgdm9pZCBkcmF3UXVhZChHTHVpbnQgcHJvZ3JhbSwKLSAgICAgICAgICAgICAg
ICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZwb3NpdGlvbkF0dHJpYk5hbWUsCi0gICAgICAgICAgICAg
ICAgICBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWiwKLSAgICAgICAgICAgICAgICAgIEdMZmxvYXQg
cG9zaXRpb25BdHRyaWJYWVNjYWxlKTsKLSAgICB2b2lkIGRyYXdRdWFkKEdMdWludCBwcm9ncmFt
LAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnBvc2l0aW9uQXR0cmliTmFt
ZSwKLSAgICAgICAgICAgICAgICAgIEdMZmxvYXQgcG9zaXRpb25BdHRyaWJaLAotICAgICAgICAg
ICAgICAgICAgR0xmbG9hdCBwb3NpdGlvbkF0dHJpYlhZU2NhbGUsCi0gICAgICAgICAgICAgICAg
ICBib29sIHVzZVZlcnRleEJ1ZmZlcik7Ci0gICAgc3RhdGljIHN0ZDo6YXJyYXk8VmVjdG9yMywg
Nj4gR2V0UXVhZFZlcnRpY2VzKCk7Ci0gICAgdm9pZCBkcmF3SW5kZXhlZFF1YWQoR0x1aW50IHBy
b2dyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnBvc2l0
aW9uQXR0cmliTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHBvc2l0aW9u
QXR0cmliWik7Ci0gICAgdm9pZCBkcmF3SW5kZXhlZFF1YWQoR0x1aW50IHByb2dyYW0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnBvc2l0aW9uQXR0cmliTmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBHTGZsb2F0IHBvc2l0aW9uQXR0cmliWFlTY2FsZSk7Ci0K
LSAgICBzdGF0aWMgR0x1aW50IGNvbXBpbGVTaGFkZXIoR0xlbnVtIHR5cGUsIGNvbnN0IHN0ZDo6
c3RyaW5nICZzb3VyY2UpOwotICAgIHN0YXRpYyBib29sIGV4dGVuc2lvbkVuYWJsZWQoY29uc3Qg
c3RkOjpzdHJpbmcgJmV4dE5hbWUpOwotICAgIHN0YXRpYyBib29sIGVnbENsaWVudEV4dGVuc2lv
bkVuYWJsZWQoY29uc3Qgc3RkOjpzdHJpbmcgJmV4dE5hbWUpOwotCi0gICAgdm9pZCBzZXRXaW5k
b3dXaWR0aChpbnQgd2lkdGgpOwotICAgIHZvaWQgc2V0V2luZG93SGVpZ2h0KGludCBoZWlnaHQp
OwotICAgIHZvaWQgc2V0Q29uZmlnUmVkQml0cyhpbnQgYml0cyk7Ci0gICAgdm9pZCBzZXRDb25m
aWdHcmVlbkJpdHMoaW50IGJpdHMpOwotICAgIHZvaWQgc2V0Q29uZmlnQmx1ZUJpdHMoaW50IGJp
dHMpOwotICAgIHZvaWQgc2V0Q29uZmlnQWxwaGFCaXRzKGludCBiaXRzKTsKLSAgICB2b2lkIHNl
dENvbmZpZ0RlcHRoQml0cyhpbnQgYml0cyk7Ci0gICAgdm9pZCBzZXRDb25maWdTdGVuY2lsQml0
cyhpbnQgYml0cyk7Ci0gICAgdm9pZCBzZXRNdWx0aXNhbXBsZUVuYWJsZWQoYm9vbCBlbmFibGVk
KTsKLSAgICB2b2lkIHNldERlYnVnRW5hYmxlZChib29sIGVuYWJsZWQpOwotICAgIHZvaWQgc2V0
Tm9FcnJvckVuYWJsZWQoYm9vbCBlbmFibGVkKTsKLSAgICB2b2lkIHNldFdlYkdMQ29tcGF0aWJp
bGl0eUVuYWJsZWQoYm9vbCB3ZWJnbENvbXBhdGliaWxpdHkpOwotICAgIHZvaWQgc2V0QmluZEdl
bmVyYXRlc1Jlc291cmNlKGJvb2wgYmluZEdlbmVyYXRlc1Jlc291cmNlKTsKLQotICAgIGludCBn
ZXRDbGllbnRNYWpvclZlcnNpb24oKSBjb25zdDsKLSAgICBpbnQgZ2V0Q2xpZW50TWlub3JWZXJz
aW9uKCkgY29uc3Q7Ci0KLSAgICBFR0xXaW5kb3cgKmdldEVHTFdpbmRvdygpIGNvbnN0OwotICAg
IGludCBnZXRXaW5kb3dXaWR0aCgpIGNvbnN0OwotICAgIGludCBnZXRXaW5kb3dIZWlnaHQoKSBj
b25zdDsKLSAgICBib29sIGlzTXVsdGlzYW1wbGVFbmFibGVkKCkgY29uc3Q7Ci0KLSAgICBFR0xp
bnQgZ2V0UGxhdGZvcm1SZW5kZXJlcigpIGNvbnN0OwotCi0gICAgdm9pZCBpZ25vcmVEM0QxMVNE
S0xheWVyc1dhcm5pbmdzKCk7Ci0KLSAgcHJpdmF0ZToKLSAgICBib29sIGNyZWF0ZUVHTENvbnRl
eHQoKTsKLSAgICBib29sIGRlc3Ryb3lFR0xDb250ZXh0KCk7Ci0KLSAgICB2b2lkIGNoZWNrRDNE
MTFTREtMYXllcnNNZXNzYWdlcygpOwotCi0gICAgRUdMV2luZG93ICptRUdMV2luZG93OwotICAg
IGludCBtV2lkdGg7Ci0gICAgaW50IG1IZWlnaHQ7Ci0KLSAgICBib29sIG1JZ25vcmVEM0QxMVNE
S0xheWVyc1dhcm5pbmdzOwotCi0gICAgLy8gVXNlZCBmb3IgaW5kZXhlZCBxdWFkIHJlbmRlcmlu
ZwotICAgIEdMdWludCBtUXVhZFZlcnRleEJ1ZmZlcjsKLQotICAgIHN0YXRpYyBPU1dpbmRvdyAq
bU9TV2luZG93OwotfTsKLQotY2xhc3MgQU5HTEVUZXN0RW52aXJvbm1lbnQgOiBwdWJsaWMgdGVz
dGluZzo6RW52aXJvbm1lbnQKLXsKLSAgcHVibGljOgotICAgIHZvaWQgU2V0VXAoKSBvdmVycmlk
ZTsKLSAgICB2b2lkIFRlYXJEb3duKCkgb3ZlcnJpZGU7Ci0KLSAgcHJpdmF0ZToKLSAgICAvLyBG
b3IgbG9hZGluZyBhbmQgZnJlZWluZyBwbGF0Zm9ybQotICAgIHN0ZDo6dW5pcXVlX3B0cjxhbmds
ZTo6TGlicmFyeT4gbUdMRVNMaWJyYXJ5OwotfTsKLQotLy8gRHJpdmVyIHZlbmRvcnMKLWJvb2wg
SXNJbnRlbCgpOwotYm9vbCBJc0FkcmVubygpOwotYm9vbCBJc0FNRCgpOwotYm9vbCBJc05WSURJ
QSgpOwotCi0vLyBSZW5kZXJlciBiYWNrLWVuZHMKLS8vIE5vdGU6IEZMOV8zIGlzIGV4cGxpY2l0
bHkgKm5vdCogY29uc2lkZXJlZCBEM0QxMS4KLWJvb2wgSXNEM0QxMSgpOwotYm9vbCBJc0QzRDEx
X0ZMOTMoKTsKLS8vIElzIGEgRDNEOS1jbGFzcyByZW5kZXJlci4KLWJvb2wgSXNEM0Q5KCk7Ci0v
LyBJcyBEM0Q5IG9yIFNNOV8zIHJlbmRlcmVyLgotYm9vbCBJc0QzRFNNMygpOwotYm9vbCBJc0Rl
c2t0b3BPcGVuR0woKTsKLWJvb2wgSXNPcGVuR0xFUygpOwotYm9vbCBJc09wZW5HTCgpOwotCi0v
LyBPcGVyYXRpbmcgc3lzdGVtcwotYm9vbCBJc0FuZHJvaWQoKTsKLWJvb2wgSXNMaW51eCgpOwot
Ym9vbCBJc09TWCgpOwotYm9vbCBJc1dpbmRvd3MoKTsKLQotLy8gRGVidWcvUmVsZWFzZQotYm9v
bCBJc0RlYnVnKCk7Ci1ib29sIElzUmVsZWFzZSgpOwotCi0vLyBOZWdhdGl2ZSB0ZXN0cyBtYXkg
dHJpZ2dlciBleHBlY3RlZCBlcnJvcnMvd2FybmluZ3MgaW4gdGhlIEFOR0xFIFBsYXRmb3JtLgot
dm9pZCBJZ25vcmVBTkdMRVBsYXRmb3JtTWVzc2FnZXMoKTsKLQotLy8gTm90ZTogZ2l0IGNsIGZv
cm1hdCBtZXNzZXMgdXAgdGhpcyBmb3JtYXR0aW5nLgotI2RlZmluZSBBTkdMRV9TS0lQX1RFU1Rf
SUYoQ09ORCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgXAotaWYoQ09ORCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgc3RkOjpjb3V0IDw8ICJUZXN0IHNraXBwZWQ6ICIgI0NPTkQgIi4iIDw8
IHN0ZDo6ZW5kbDsgXAotICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgXAotfQotCi0jZW5kaWYgIC8vIEFOR0xFX1RFU1RT
X0FOR0xFX1RFU1RfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfY29uZmlncy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjY5MGNhN2IxZC4uMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvYW5nbGVfdGVzdF9j
b25maWdzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5OCArMCwwIEBACi0vLwotLy8gQ29weXJp
Z2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8K
LQotI2luY2x1ZGUgInRlc3RfdXRpbHMvYW5nbGVfdGVzdF9jb25maWdzLmgiCi0KLW5hbWVzcGFj
ZSBhbmdsZQotewotCi1QbGF0Zm9ybVBhcmFtZXRlcnM6OlBsYXRmb3JtUGFyYW1ldGVycygpCi0g
ICAgOiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKCkpCi17
Ci19Ci0KLVBsYXRmb3JtUGFyYW1ldGVyczo6UGxhdGZvcm1QYXJhbWV0ZXJzKEVHTGludCBtYWpv
clZlcnNpb24sIEVHTGludCBtaW5vclZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgJmVnbFBsYXRmb3JtUGFy
YW1ldGVycykKLSAgICA6IG1ham9yVmVyc2lvbihtYWpvclZlcnNpb24pLAotICAgICAgbWlub3JW
ZXJzaW9uKG1pbm9yVmVyc2lvbiksCi0gICAgICBlZ2xQYXJhbWV0ZXJzKGVnbFBsYXRmb3JtUGFy
YW1ldGVycykKLXsKLX0KLQotRUdMaW50IFBsYXRmb3JtUGFyYW1ldGVyczo6Z2V0UmVuZGVyZXIo
KSBjb25zdAotewotICAgIHJldHVybiBlZ2xQYXJhbWV0ZXJzLnJlbmRlcmVyOwotfQotCi1ib29s
IG9wZXJhdG9yPChjb25zdCBQbGF0Zm9ybVBhcmFtZXRlcnMgJmEsIGNvbnN0IFBsYXRmb3JtUGFy
YW1ldGVycyAmYikKLXsKLSAgICBpZiAoYS5tYWpvclZlcnNpb24gIT0gYi5tYWpvclZlcnNpb24p
Ci0gICAgewotICAgICAgICByZXR1cm4gYS5tYWpvclZlcnNpb24gPCBiLm1ham9yVmVyc2lvbjsK
LSAgICB9Ci0KLSAgICBpZiAoYS5taW5vclZlcnNpb24gIT0gYi5taW5vclZlcnNpb24pCi0gICAg
ewotICAgICAgICByZXR1cm4gYS5taW5vclZlcnNpb24gPCBiLm1pbm9yVmVyc2lvbjsKLSAgICB9
Ci0KLSAgICByZXR1cm4gYS5lZ2xQYXJhbWV0ZXJzIDwgYi5lZ2xQYXJhbWV0ZXJzOwotfQotCi1i
b29sIG9wZXJhdG9yPT0oY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZhLCBjb25zdCBQbGF0Zm9y
bVBhcmFtZXRlcnMgJmIpCi17Ci0gICAgcmV0dXJuIChhLm1ham9yVmVyc2lvbiA9PSBiLm1ham9y
VmVyc2lvbikgJiYKLSAgICAgICAgICAgKGEubWlub3JWZXJzaW9uID09IGIubWlub3JWZXJzaW9u
KSAmJgotICAgICAgICAgICAoYS5lZ2xQYXJhbWV0ZXJzID09IGIuZWdsUGFyYW1ldGVycyk7Ci19
Ci0KLXN0ZDo6b3N0cmVhbSAmb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mIHN0cmVhbSwgY29uc3Qg
UGxhdGZvcm1QYXJhbWV0ZXJzICZwcCkKLXsKLSAgICBzdHJlYW0gPDwgIkVTIiA8PCBwcC5tYWpv
clZlcnNpb24gPDwgIl8iIDsKLSAgICBpZiAocHAubWlub3JWZXJzaW9uICE9IDApCi0gICAgewot
ICAgICAgICBzdHJlYW0gPDwgcHAubWlub3JWZXJzaW9uIDw8ICJfIjsKLSAgICB9Ci0KLSAgICBz
d2l0Y2ggKHBwLmVnbFBhcmFtZXRlcnMucmVuZGVyZXIpCi0gICAgewotICAgICAgY2FzZSBFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFOgotICAgICAgICBzdHJlYW0gPDwgIkQzRDki
OwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNE
MTFfQU5HTEU6Ci0gICAgICAgIHN0cmVhbSA8PCAiRDNEMTEiOwotICAgICAgICBicmVhazsKLSAg
ICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFOgotICAgICAgICBz
dHJlYW0gPDwgIk9QRU5HTCI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBFR0xfUExBVEZP
Uk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRToKLSAgICAgICAgICBzdHJlYW0gPDwgIk9QRU5H
TEVTIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X0RFRkFVTFRfQU5HTEU6Ci0gICAgICAgIHN0cmVhbSA8PCAiREVGQVVMVCI7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCi0gICAgaWYgKHBwLmVnbFBhcmFtZXRlcnMubWFqb3JWZXJzaW9uICE9IEVH
TF9ET05UX0NBUkUpCi0gICAgewotICAgICAgICBzdHJlYW0gPDwgIl8iIDw8IHBwLmVnbFBhcmFt
ZXRlcnMubWFqb3JWZXJzaW9uOwotICAgIH0KLQotICAgIGlmIChwcC5lZ2xQYXJhbWV0ZXJzLm1p
bm9yVmVyc2lvbiAhPSBFR0xfRE9OVF9DQVJFKQotICAgIHsKLSAgICAgICAgc3RyZWFtIDw8ICJf
IiA8PCBwcC5lZ2xQYXJhbWV0ZXJzLm1pbm9yVmVyc2lvbjsKLSAgICB9Ci0KLSAgICBzd2l0Y2gg
KHBwLmVnbFBhcmFtZXRlcnMuZGV2aWNlVHlwZSkKLSAgICB7Ci0gICAgICBjYXNlIEVHTF9ET05U
X0NBUkU6Ci0gICAgICBjYXNlIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FS
RV9BTkdMRToKLSAgICAgICAgLy8gZGVmYXVsdAotICAgICAgICBicmVhazsKLQotICAgICAgY2Fz
ZSBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfTlVMTF9BTkdMRToKLSAgICAgICAgICBz
dHJlYW0gPDwgIl9OVUxMIjsKLSAgICAgICAgICBicmVhazsKLQotICAgICAgY2FzZSBFR0xfUExB
VEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfUkVGRVJFTkNFX0FOR0xFOgotICAgICAgICBzdHJlYW0g
PDwgIl9SRUZFUkVOQ0UiOwotICAgICAgICBicmVhazsKLQotICAgICAgY2FzZSBFR0xfUExBVEZP
Uk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRToKLSAgICAgICAgc3RyZWFtIDw8ICJfV0FS
UCI7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICBkZWZhdWx0OgotICAgICAgICBVTlJFQUNIQUJM
RSgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHBwLmVnbFBhcmFtZXRl
cnMucHJlc2VudFBhdGgpCi0gICAgewotICAgICAgICBjYXNlIEVHTF9FWFBFUklNRU5UQUxfUFJF
U0VOVF9QQVRIX0NPUFlfQU5HTEU6Ci0gICAgICAgICAgICBzdHJlYW0gPDwgIl9QUkVTRU5UX1BB
VEhfQ09QWSI7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEVHTF9FWFBFUklN
RU5UQUxfUFJFU0VOVF9QQVRIX0ZBU1RfQU5HTEU6Ci0gICAgICAgICAgICBzdHJlYW0gPDwgIl9Q
UkVTRU5UX1BBVEhfRkFTVCI7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEVH
TF9ET05UX0NBUkU6Ci0gICAgICAgICAgICAvLyBkZWZhdWx0Ci0gICAgICAgICAgICBicmVhazsK
LQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiBzdHJlYW07Ci19Ci0KLS8vIEVHTCBwbGF0
Zm9ybXMKLW5hbWVzcGFjZSBlZ2xfcGxhdGZvcm0KLXsKLQotRUdMUGxhdGZvcm1QYXJhbWV0ZXJz
IERFRkFVTFQoKQotewotICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoRUdMX1BMQVRG
T1JNX0FOR0xFX1RZUEVfREVGQVVMVF9BTkdMRSk7Ci19Ci0KLUVHTFBsYXRmb3JtUGFyYW1ldGVy
cyBERUZBVUxUX05VTEwoKQotewotICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoCi0g
ICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0RFRkFVTFRfQU5HTEUsCi0gICAgICAgIEVH
TF9ET05UX0NBUkUsIEVHTF9ET05UX0NBUkUsCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9E
RVZJQ0VfVFlQRV9OVUxMX0FOR0xFKTsKLX0KLQotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDko
KQotewotICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoCi0gICAgICAgIEVHTF9QTEFU
Rk9STV9BTkdMRV9UWVBFX0QzRDlfQU5HTEUsCi0gICAgICAgIEVHTF9ET05UX0NBUkUsIEVHTF9E
T05UX0NBUkUsCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FS
RV9BTkdMRSk7Ci19Ci0KLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0Q5X05VTEwoKQotewotICAg
IHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdM
RV9UWVBFX0QzRDlfQU5HTEUsCi0gICAgICAgIEVHTF9ET05UX0NBUkUsIEVHTF9ET05UX0NBUkUs
Ci0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9OVUxMX0FOR0xFKTsKLX0K
LQotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDlfUkVGRVJFTkNFKCkKLXsKLSAgICByZXR1cm4g
RUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9E
M0Q5X0FOR0xFLAotICAgICAgICBFR0xfRE9OVF9DQVJFLCBFR0xfRE9OVF9DQVJFLAotICAgICAg
ICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfUkVGRVJFTkNFX0FOR0xFKTsKLX0KLQot
RUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExKCkKLXsKLSAgICByZXR1cm4gRUdMUGxhdGZvcm1Q
YXJhbWV0ZXJzKAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwK
LSAgICAgICAgRUdMX0RPTlRfQ0FSRSwgRUdMX0RPTlRfQ0FSRSwKLSAgICAgICAgRUdMX1BMQVRG
T1JNX0FOR0xFX0RFVklDRV9UWVBFX0hBUkRXQVJFX0FOR0xFKTsKLX0KLQotRUdMUGxhdGZvcm1Q
YXJhbWV0ZXJzIEQzRDExKEVHTGVudW0gcHJlc2VudFBhdGgpCi17Ci0gICAgcmV0dXJuIEVHTFBs
YXRmb3JtUGFyYW1ldGVycyhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwgRUdM
X0RPTlRfQ0FSRSwgRUdMX0RPTlRfQ0FSRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRSwgcHJlc2Vu
dFBhdGgpOwotfQotCi1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwxMV8xKCkKLXsKLSAg
ICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAotICAgICAgICBFR0xfUExBVEZPUk1fQU5H
TEVfVFlQRV9EM0QxMV9BTkdMRSwKLSAgICAgICAgMTEsIDEsCi0gICAgICAgIEVHTF9QTEFURk9S
TV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRSk7Ci19Ci0KLUVHTFBsYXRmb3JtUGFy
YW1ldGVycyBEM0QxMV9GTDExXzAoKQotewotICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRl
cnMoCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLAotICAgICAg
ICAxMSwgMCwKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX0hBUkRXQVJF
X0FOR0xFKTsKLX0KLQotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTBfMSgpCi17Ci0g
ICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfRDNEMTFfQU5HTEUsCi0gICAgICAgIDEwLCAxLAotICAgICAgICBFR0xfUExBVEZP
Uk1fQU5HTEVfREVWSUNFX1RZUEVfSEFSRFdBUkVfQU5HTEUpOwotfQotCi1FR0xQbGF0Zm9ybVBh
cmFtZXRlcnMgRDNEMTFfRkwxMF8wKCkKLXsKLSAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0
ZXJzKAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwKLSAgICAg
ICAgMTAsIDAsCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FS
RV9BTkdMRSk7Ci19Ci0KLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDlfMygpCi17Ci0g
ICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FO
R0xFX1RZUEVfRDNEMTFfQU5HTEUsCi0gICAgICAgIDksIDMsCi0gICAgICAgIEVHTF9QTEFURk9S
TV9BTkdMRV9ERVZJQ0VfVFlQRV9IQVJEV0FSRV9BTkdMRSk7Ci19Ci0KLUVHTFBsYXRmb3JtUGFy
YW1ldGVycyBEM0QxMV9OVUxMKCkKLXsKLSAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJz
KAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwKLSAgICAgICAg
RUdMX0RPTlRfQ0FSRSwgRUdMX0RPTlRfQ0FSRSwKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xF
X0RFVklDRV9UWVBFX05VTExfQU5HTEUpOwotfQotCi1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNE
MTFfV0FSUCgpCi17Ci0gICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKLSAgICAgICAg
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCi0gICAgICAgIEVHTF9ET05UX0NB
UkUsIEVHTF9ET05UX0NBUkUsCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQ
RV9XQVJQX0FOR0xFKTsKLX0KLQotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTFfMV9X
QVJQKCkKLXsKLSAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAotICAgICAgICBFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwKLSAgICAgICAgMTEsIDEsCi0gICAgICAg
IEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9XQVJQX0FOR0xFKTsKLX0KLQotRUdMUGxh
dGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTFfMF9XQVJQKCkKLXsKLSAgICByZXR1cm4gRUdMUGxh
dGZvcm1QYXJhbWV0ZXJzKAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9B
TkdMRSwKLSAgICAgICAgMTEsIDAsCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0Vf
VFlQRV9XQVJQX0FOR0xFKTsKLX0KLQotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTBf
MV9XQVJQKCkKLXsKLSAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJhbWV0ZXJzKAotICAgICAgICBF
R0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwKLSAgICAgICAgMTAsIDEsCi0gICAg
ICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9XQVJQX0FOR0xFKTsKLX0KLQotRUdM
UGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTBfMF9XQVJQKCkKLXsKLSAgICByZXR1cm4gRUdM
UGxhdGZvcm1QYXJhbWV0ZXJzKAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Qx
MV9BTkdMRSwKLSAgICAgICAgMTAsIDAsCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJ
Q0VfVFlQRV9XQVJQX0FOR0xFKTsKLX0KLQotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZM
OV8zX1dBUlAoKQotewotICAgIHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoCi0gICAgICAg
IEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xFLAotICAgICAgICA5LCAzLAotICAg
ICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfV0FSUF9BTkdMRSk7Ci19Ci0KLUVH
TFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9SRUZFUkVOQ0UoKQotewotICAgIHJldHVybiBFR0xQ
bGF0Zm9ybVBhcmFtZXRlcnMoCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDEx
X0FOR0xFLAotICAgICAgICBFR0xfRE9OVF9DQVJFLCBFR0xfRE9OVF9DQVJFLAotICAgICAgICBF
R0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfUkVGRVJFTkNFX0FOR0xFKTsKLX0KLQotRUdM
UGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTFfMV9SRUZFUkVOQ0UoKQotewotICAgIHJldHVy
biBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBF
X0QzRDExX0FOR0xFLAotICAgICAgICAxMSwgMSwKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xF
X0RFVklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci19Ci0KLUVHTFBsYXRmb3JtUGFyYW1ldGVy
cyBEM0QxMV9GTDExXzBfUkVGRVJFTkNFKCkKLXsKLSAgICByZXR1cm4gRUdMUGxhdGZvcm1QYXJh
bWV0ZXJzKAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0QxMV9BTkdMRSwKLSAg
ICAgICAgMTEsIDAsCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9ERVZJQ0VfVFlQRV9SRUZF
UkVOQ0VfQU5HTEUpOwotfQotCi1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwxMF8xX1JF
RkVSRU5DRSgpCi17Ci0gICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycygKLSAgICAgICAg
RUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEUsCi0gICAgICAgIDEwLCAxLAotICAg
ICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVfUkVGRVJFTkNFX0FOR0xFKTsKLX0K
LQotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTBfMF9SRUZFUkVOQ0UoKQotewotICAg
IHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdM
RV9UWVBFX0QzRDExX0FOR0xFLAotICAgICAgICAxMCwgMCwKLSAgICAgICAgRUdMX1BMQVRGT1JN
X0FOR0xFX0RFVklDRV9UWVBFX1JFRkVSRU5DRV9BTkdMRSk7Ci19Ci0KLUVHTFBsYXRmb3JtUGFy
YW1ldGVycyBEM0QxMV9GTDlfM19SRUZFUkVOQ0UoKQotewotICAgIHJldHVybiBFR0xQbGF0Zm9y
bVBhcmFtZXRlcnMoCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX0QzRDExX0FOR0xF
LAotICAgICAgICA5LCAzLAotICAgICAgICBFR0xfUExBVEZPUk1fQU5HTEVfREVWSUNFX1RZUEVf
UkVGRVJFTkNFX0FOR0xFKTsKLX0KLQotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIE9QRU5HTCgpCi17
Ci0gICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVycyhFR0xfUExBVEZPUk1fQU5HTEVfVFlQ
RV9PUEVOR0xfQU5HTEUpOwotfQotCi0KLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBPUEVOR0woRUdM
aW50IG1ham9yLCBFR0xpbnQgbWlub3IpCi17Ci0gICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1l
dGVycygKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BFTkdMX0FOR0xFLAotICAg
ICAgICBtYWpvciwgbWlub3IsCi0gICAgICAgIEVHTF9ET05UX0NBUkUpOwotfQotCi1FR0xQbGF0
Zm9ybVBhcmFtZXRlcnMgT1BFTkdMX05VTEwoKQotewotICAgIHJldHVybiBFR0xQbGF0Zm9ybVBh
cmFtZXRlcnMoCi0gICAgICAgIEVHTF9QTEFURk9STV9BTkdMRV9UWVBFX09QRU5HTF9BTkdMRSwK
LSAgICAgICAgMCwgMCwKLSAgICAgICAgRUdMX1BMQVRGT1JNX0FOR0xFX0RFVklDRV9UWVBFX05V
TExfQU5HTEUpOwotfQotCi1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgT1BFTkdMRVMoKQotewotICAg
IHJldHVybiBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMoRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BF
TkdMRVNfQU5HTEUpOwotfQotCi1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgT1BFTkdMRVMoRUdMaW50
IG1ham9yLCBFR0xpbnQgbWlub3IpCi17Ci0gICAgcmV0dXJuIEVHTFBsYXRmb3JtUGFyYW1ldGVy
cyhFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19BTkdMRSwgbWFqb3IsIG1pbm9yLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMX0RPTlRfQ0FSRSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIGVnbF9wbGF0Zm9ybQotCi0vLyBBTkdMRSB0ZXN0cyBwbGF0Zm9ybXMKLVBs
YXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEOSgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1l
dGVycygyLCAwLCBlZ2xfcGxhdGZvcm06OkQzRDkoKSk7Ci19Ci0KLVBsYXRmb3JtUGFyYW1ldGVy
cyBFUzJfRDNEOV9SRUZFUkVOQ0UoKQotewotICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMo
MiwgMCwgZWdsX3BsYXRmb3JtOjpEM0Q5X1JFRkVSRU5DRSgpKTsKLX0KLQotUGxhdGZvcm1QYXJh
bWV0ZXJzIEVTMl9EM0QxMSgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAw
LCBlZ2xfcGxhdGZvcm06OkQzRDExKCkpOwotfQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0Qz
RDExKEVHTGVudW0gcHJlc2VudFBhdGgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVy
cygyLCAwLCBlZ2xfcGxhdGZvcm06OkQzRDExKHByZXNlbnRQYXRoKSk7Ci19Ci0KLVBsYXRmb3Jt
UGFyYW1ldGVycyBFUzJfRDNEMTFfRkwxMV8wKCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXJh
bWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfRkwxMV8wKCkpOwotfQotCi1QbGF0Zm9y
bVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZMMTBfMSgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFy
YW1ldGVycygyLCAwLCBlZ2xfcGxhdGZvcm06OkQzRDExX0ZMMTBfMSgpKTsKLX0KLQotUGxhdGZv
cm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDEwXzAoKQotewotICAgIHJldHVybiBQbGF0Zm9ybVBh
cmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3JtOjpEM0QxMV9GTDEwXzAoKSk7Ci19Ci0KLVBsYXRm
b3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfRkw5XzMoKQotewotICAgIHJldHVybiBQbGF0Zm9ybVBh
cmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3JtOjpEM0QxMV9GTDlfMygpKTsKLX0KLQotUGxhdGZv
cm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9XQVJQKCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXJh
bWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfV0FSUCgpKTsKLX0KLQotUGxhdGZvcm1Q
YXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDExXzBfV0FSUCgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3Jt
UGFyYW1ldGVycygyLCAwLCBlZ2xfcGxhdGZvcm06OkQzRDExX0ZMMTFfMF9XQVJQKCkpOwotfQot
Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZMMTBfMV9XQVJQKCkKLXsKLSAgICByZXR1
cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfRkwxMF8xX1dB
UlAoKSk7Ci19Ci0KLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfRkwxMF8wX1dBUlAoKQot
ewotICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwgZWdsX3BsYXRmb3JtOjpEM0Qx
MV9GTDEwXzBfV0FSUCgpKTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9GTDlf
M19XQVJQKCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0
Zm9ybTo6RDNEMTFfRkw5XzNfV0FSUCgpKTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9E
M0QxMV9SRUZFUkVOQ0UoKQotewotICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMiwgMCwg
ZWdsX3BsYXRmb3JtOjpEM0QxMV9SRUZFUkVOQ0UoKSk7Ci19Ci0KLVBsYXRmb3JtUGFyYW1ldGVy
cyBFUzJfRDNEMTFfRkwxMV8wX1JFRkVSRU5DRSgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFy
YW1ldGVycygyLCAwLCBlZ2xfcGxhdGZvcm06OkQzRDExX0ZMMTFfMF9SRUZFUkVOQ0UoKSk7Ci19
Ci0KLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfRkwxMF8xX1JFRkVSRU5DRSgpCi17Ci0g
ICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAwLCBlZ2xfcGxhdGZvcm06OkQzRDExX0ZM
MTBfMV9SRUZFUkVOQ0UoKSk7Ci19Ci0KLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfRkwx
MF8wX1JFRkVSRU5DRSgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAwLCBl
Z2xfcGxhdGZvcm06OkQzRDExX0ZMMTBfMF9SRUZFUkVOQ0UoKSk7Ci19Ci0KLVBsYXRmb3JtUGFy
YW1ldGVycyBFUzJfRDNEMTFfRkw5XzNfUkVGRVJFTkNFKCkKLXsKLSAgICByZXR1cm4gUGxhdGZv
cm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfRkw5XzNfUkVGRVJFTkNFKCkp
OwotfQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExKCkKLXsKLSAgICByZXR1cm4gUGxh
dGZvcm1QYXJhbWV0ZXJzKDMsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTEoKSk7Ci19Ci0KLVBsYXRm
b3JtUGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMV8xKCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1Q
YXJhbWV0ZXJzKDMsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfRkwxMV8xKCkpOwotfQotCi1QbGF0
Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZMMTFfMCgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3Jt
UGFyYW1ldGVycygzLCAwLCBlZ2xfcGxhdGZvcm06OkQzRDExX0ZMMTFfMCgpKTsKLX0KLQotUGxh
dGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9GTDEwXzEoKQotewotICAgIHJldHVybiBQbGF0Zm9y
bVBhcmFtZXRlcnMoMywgMCwgZWdsX3BsYXRmb3JtOjpEM0QxMV9GTDEwXzEoKSk7Ci19Ci0KLVBs
YXRmb3JtUGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMF8wKCkKLXsKLSAgICByZXR1cm4gUGxhdGZv
cm1QYXJhbWV0ZXJzKDMsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfRkwxMF8wKCkpOwotfQotCi1Q
bGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX1dBUlAoKQotewotICAgIHJldHVybiBQbGF0Zm9y
bVBhcmFtZXRlcnMoMywgMCwgZWdsX3BsYXRmb3JtOjpEM0QxMV9XQVJQKCkpOwotfQotCi1QbGF0
Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZMMTFfMV9XQVJQKCkKLXsKLSAgICByZXR1cm4gUGxh
dGZvcm1QYXJhbWV0ZXJzKDMsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfRkwxMV8xX1dBUlAoKSk7
Ci19Ci0KLVBsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMV8wX1dBUlAoKQotewotICAg
IHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywgMCwgZWdsX3BsYXRmb3JtOjpEM0QxMV9GTDEx
XzBfV0FSUCgpKTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9GTDEwXzFfV0FS
UCgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAwLCBlZ2xfcGxhdGZvcm06
OkQzRDExX0ZMMTBfMV9XQVJQKCkpOwotfQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDEx
X0ZMMTBfMF9XQVJQKCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDMsIDAsIGVn
bF9wbGF0Zm9ybTo6RDNEMTFfRkwxMF8wX1dBUlAoKSk7Ci19Ci0KLVBsYXRmb3JtUGFyYW1ldGVy
cyBFUzNfRDNEMTFfUkVGRVJFTkNFKCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJz
KDMsIDAsIGVnbF9wbGF0Zm9ybTo6RDNEMTFfUkVGRVJFTkNFKCkpOwotfQotCi1QbGF0Zm9ybVBh
cmFtZXRlcnMgRVMzX0QzRDExX0ZMMTFfMV9SRUZFUkVOQ0UoKQotewotICAgIHJldHVybiBQbGF0
Zm9ybVBhcmFtZXRlcnMoMywgMCwgZWdsX3BsYXRmb3JtOjpEM0QxMV9GTDExXzFfUkVGRVJFTkNF
KCkpOwotfQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZMMTFfMF9SRUZFUkVOQ0Uo
KQotewotICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMoMywgMCwgZWdsX3BsYXRmb3JtOjpE
M0QxMV9GTDExXzBfUkVGRVJFTkNFKCkpOwotfQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0Qz
RDExX0ZMMTBfMV9SRUZFUkVOQ0UoKQotewotICAgIHJldHVybiBQbGF0Zm9ybVBhcmFtZXRlcnMo
MywgMCwgZWdsX3BsYXRmb3JtOjpEM0QxMV9GTDEwXzFfUkVGRVJFTkNFKCkpOwotfQotCi1QbGF0
Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZMMTBfMF9SRUZFUkVOQ0UoKQotewotICAgIHJldHVy
biBQbGF0Zm9ybVBhcmFtZXRlcnMoMywgMCwgZWdsX3BsYXRmb3JtOjpEM0QxMV9GTDEwXzBfUkVG
RVJFTkNFKCkpOwotfQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX09QRU5HTEVTKCkKLXsKLSAg
ICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0Zm9ybTo6T1BFTkdMRVMo
KSk7Ci19Ci0KLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfT1BFTkdMRVMoRUdMaW50IG1ham9yLCBF
R0xpbnQgbWlub3IpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygyLCAwLCBlZ2xf
cGxhdGZvcm06Ok9QRU5HTEVTKG1ham9yLCBtaW5vcikpOwotfQotCi1QbGF0Zm9ybVBhcmFtZXRl
cnMgRVMzX09QRU5HTEVTKCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDMsIDAs
IGVnbF9wbGF0Zm9ybTo6T1BFTkdMRVMoKSk7Ci19Ci0KLVBsYXRmb3JtUGFyYW1ldGVycyBFUzNf
T1BFTkdMRVMoRUdMaW50IG1ham9yLCBFR0xpbnQgbWlub3IpCi17Ci0gICAgcmV0dXJuIFBsYXRm
b3JtUGFyYW1ldGVycygzLCAwLCBlZ2xfcGxhdGZvcm06Ok9QRU5HTEVTKG1ham9yLCBtaW5vcikp
OwotfQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMzMV9PUEVOR0xFUygpCi17Ci0gICAgcmV0dXJu
IFBsYXRmb3JtUGFyYW1ldGVycygzLCAxLCBlZ2xfcGxhdGZvcm06Ok9QRU5HTEVTKCkpOwotfQot
Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMzMV9PUEVOR0xFUyhFR0xpbnQgbWFqb3IsIEVHTGludCBt
aW5vcikKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDMsIDEsIGVnbF9wbGF0Zm9y
bTo6T1BFTkdMRVMobWFqb3IsIG1pbm9yKSk7Ci19Ci0KLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJf
T1BFTkdMKCkKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJzKDIsIDAsIGVnbF9wbGF0
Zm9ybTo6T1BFTkdMKCkpOwotfQotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX09QRU5HTChFR0xp
bnQgbWFqb3IsIEVHTGludCBtaW5vcikKLXsKLSAgICByZXR1cm4gUGxhdGZvcm1QYXJhbWV0ZXJz
KDIsIDAsIGVnbF9wbGF0Zm9ybTo6T1BFTkdMKG1ham9yLCBtaW5vcikpOwotfQotCi1QbGF0Zm9y
bVBhcmFtZXRlcnMgRVMzX09QRU5HTCgpCi17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVy
cygzLCAwLCBlZ2xfcGxhdGZvcm06Ok9QRU5HTCgpKTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJz
IEVTM19PUEVOR0woRUdMaW50IG1ham9yLCBFR0xpbnQgbWlub3IpCi17Ci0gICAgcmV0dXJuIFBs
YXRmb3JtUGFyYW1ldGVycygzLCAwLCBlZ2xfcGxhdGZvcm06Ok9QRU5HTChtYWpvciwgbWlub3Ip
KTsKLX0KLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMzFfT1BFTkdMKCkKLXsKLSAgICByZXR1cm4g
UGxhdGZvcm1QYXJhbWV0ZXJzKDMsIDEsIGVnbF9wbGF0Zm9ybTo6T1BFTkdMKCkpOwotfQotCi1Q
bGF0Zm9ybVBhcmFtZXRlcnMgRVMzMV9PUEVOR0woRUdMaW50IG1ham9yLCBFR0xpbnQgbWlub3Ip
Ci17Ci0gICAgcmV0dXJuIFBsYXRmb3JtUGFyYW1ldGVycygzLCAxLCBlZ2xfcGxhdGZvcm06Ok9Q
RU5HTChtYWpvciwgbWlub3IpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgYW5nbGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rl
c3RfY29uZmlncy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRp
bHMvYW5nbGVfdGVzdF9jb25maWdzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZh
NTk1YTU1NmM5Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2NvbmZpZ3MuaAorKysgL2Rldi9udWxsCkBAIC0x
LDE0NCArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQcm9qZWN0
IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k
ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3Vu
ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotI2lmbmRlZiBBTkdMRV9URVNUX0NPTkZJR1Nf
SF8KLSNkZWZpbmUgQU5HTEVfVEVTVF9DT05GSUdTX0hfCi0KLS8vIE9uIExpbnV4IEVHTC9lZ2wu
aCBpbmNsdWRlcyBYLmggd2hpY2ggZG9lcyBkZWZpbmVzIGZvciBzb21lIHZlcnkgY29tbW9uCi0v
LyBuYW1lcyB0aGF0IGFyZSB1c2VkIGJ5IGd0ZXN0IChsaWtlIE5vbmUgYW5kIEJvb2wpIGFuZCBj
YXVzZXMgYSBsb3Qgb2YKLS8vIGNvbXBpbGF0aW9uIGVycm9ycy4gVG8gd29yayBhcm91bmQgdGhp
cywgZXZlbiBpZiB0aGlzIGZpbGUgZG9lc24ndCB1c2UgaXQsCi0vLyB3ZSBpbmNsdWRlIGd0ZXN0
IGJlZm9yZSBFR0wgc28gdGhhdCBpdCBjb21waWxlcyBmaW5lIGluIG90aGVyIGZpbGVzIHRoYXQK
LS8vIHdhbnQgdG8gdXNlIGd0ZXN0LgotI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+Ci0KLSNpbmNs
dWRlIDxFR0wvZWdsLmg+Ci0jaW5jbHVkZSA8RUdML2VnbGV4dC5oPgotCi0jaW5jbHVkZSAiYW5n
bGVfdGVzdF9pbnN0YW50aWF0ZS5oIgotI2luY2x1ZGUgIkVHTFdpbmRvdy5oIgotCi1uYW1lc3Bh
Y2UgYW5nbGUKLXsKLQotc3RydWN0IFBsYXRmb3JtUGFyYW1ldGVycwotewotICAgIFBsYXRmb3Jt
UGFyYW1ldGVycygpOwotICAgIFBsYXRmb3JtUGFyYW1ldGVycyhFR0xpbnQgbWFqb3JWZXJzaW9u
LCBFR0xpbnQgbWlub3JWZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFR0xQ
bGF0Zm9ybVBhcmFtZXRlcnMgJmVnbFBsYXRmb3JtUGFyYW1ldGVycyk7Ci0KLSAgICBFR0xpbnQg
Z2V0UmVuZGVyZXIoKSBjb25zdDsKLQotICAgIEVHTGludCBtYWpvclZlcnNpb247Ci0gICAgRUdM
aW50IG1pbm9yVmVyc2lvbjsKLSAgICBFR0xQbGF0Zm9ybVBhcmFtZXRlcnMgZWdsUGFyYW1ldGVy
czsKLX07Ci0KLWJvb2wgb3BlcmF0b3I8KGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAmYSwgY29u
c3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZiKTsKLWJvb2wgb3BlcmF0b3I9PShjb25zdCBQbGF0Zm9y
bVBhcmFtZXRlcnMgJmEsIGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAmYik7Ci1zdGQ6Om9zdHJl
YW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBzdHJlYW0sIGNvbnN0IFBsYXRmb3JtUGFyYW1l
dGVycyAmcHApOwotCi0vLyBFR0wgcGxhdGZvcm1zCi1uYW1lc3BhY2UgZWdsX3BsYXRmb3JtCi17
Ci0KLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBERUZBVUxUKCk7Ci1FR0xQbGF0Zm9ybVBhcmFtZXRl
cnMgREVGQVVMVF9OVUxMKCk7Ci0KLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0Q5KCk7Ci1FR0xQ
bGF0Zm9ybVBhcmFtZXRlcnMgRDNEOV9OVUxMKCk7Ci1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNE
OV9SRUZFUkVOQ0UoKTsKLQotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExKCk7Ci1FR0xQbGF0
Zm9ybVBhcmFtZXRlcnMgRDNEMTEoRUdMZW51bSBwcmVzZW50UGF0aCk7Ci1FR0xQbGF0Zm9ybVBh
cmFtZXRlcnMgRDNEMTFfRkwxMV8xKCk7Ci1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwx
MV8wKCk7Ci1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwxMF8xKCk7Ci1FR0xQbGF0Zm9y
bVBhcmFtZXRlcnMgRDNEMTFfRkwxMF8wKCk7Ci1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFf
Rkw5XzMoKTsKLQotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX05VTEwoKTsKLQotRUdMUGxh
dGZvcm1QYXJhbWV0ZXJzIEQzRDExX1dBUlAoKTsKLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0Qx
MV9GTDExXzFfV0FSUCgpOwotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTFfMF9XQVJQ
KCk7Ci1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwxMF8xX1dBUlAoKTsKLUVHTFBsYXRm
b3JtUGFyYW1ldGVycyBEM0QxMV9GTDEwXzBfV0FSUCgpOwotRUdMUGxhdGZvcm1QYXJhbWV0ZXJz
IEQzRDExX0ZMOV8zX1dBUlAoKTsKLQotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX1JFRkVS
RU5DRSgpOwotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIEQzRDExX0ZMMTFfMV9SRUZFUkVOQ0UoKTsK
LUVHTFBsYXRmb3JtUGFyYW1ldGVycyBEM0QxMV9GTDExXzBfUkVGRVJFTkNFKCk7Ci1FR0xQbGF0
Zm9ybVBhcmFtZXRlcnMgRDNEMTFfRkwxMF8xX1JFRkVSRU5DRSgpOwotRUdMUGxhdGZvcm1QYXJh
bWV0ZXJzIEQzRDExX0ZMMTBfMF9SRUZFUkVOQ0UoKTsKLUVHTFBsYXRmb3JtUGFyYW1ldGVycyBE
M0QxMV9GTDlfM19SRUZFUkVOQ0UoKTsKLQotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIE9QRU5HTCgp
OwotRUdMUGxhdGZvcm1QYXJhbWV0ZXJzIE9QRU5HTChFR0xpbnQgbWFqb3IsIEVHTGludCBtaW5v
cik7Ci1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgT1BFTkdMX05VTEwoKTsKLQotRUdMUGxhdGZvcm1Q
YXJhbWV0ZXJzIE9QRU5HTEVTKCk7Ci1FR0xQbGF0Zm9ybVBhcmFtZXRlcnMgT1BFTkdMRVMoRUdM
aW50IG1ham9yLCBFR0xpbnQgbWlub3IpOwotCi19IC8vIG5hbWVzcGFjZSBlZ2xfcGxhdGZvcm0K
LQotLy8gQU5HTEUgdGVzdHMgcGxhdGZvcm1zCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDko
KTsKLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEOV9SRUZFUkVOQ0UoKTsKLQotUGxhdGZvcm1Q
YXJhbWV0ZXJzIEVTMl9EM0QxMSgpOwotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMShFR0xl
bnVtIHByZXNlbnRQYXRoKTsKLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfRkwxMV8wKCk7
Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZMMTBfMSgpOwotUGxhdGZvcm1QYXJhbWV0
ZXJzIEVTMl9EM0QxMV9GTDEwXzAoKTsKLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfRkw5
XzMoKTsKLQotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9XQVJQKCk7Ci1QbGF0Zm9ybVBh
cmFtZXRlcnMgRVMyX0QzRDExX0ZMMTFfMF9XQVJQKCk7Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMy
X0QzRDExX0ZMMTBfMV9XQVJQKCk7Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZMMTBf
MF9XQVJQKCk7Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDExX0ZMOV8zX1dBUlAoKTsKLQot
UGxhdGZvcm1QYXJhbWV0ZXJzIEVTMl9EM0QxMV9SRUZFUkVOQ0UoKTsKLVBsYXRmb3JtUGFyYW1l
dGVycyBFUzJfRDNEMTFfRkwxMV8wX1JFRkVSRU5DRSgpOwotUGxhdGZvcm1QYXJhbWV0ZXJzIEVT
Ml9EM0QxMV9GTDEwXzFfUkVGRVJFTkNFKCk7Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX0QzRDEx
X0ZMMTBfMF9SRUZFUkVOQ0UoKTsKLVBsYXRmb3JtUGFyYW1ldGVycyBFUzJfRDNEMTFfRkw5XzNf
UkVGRVJFTkNFKCk7Ci0KLVBsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNEMTEoKTsKLVBsYXRmb3Jt
UGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMV8xKCk7Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0Qz
RDExX0ZMMTFfMCgpOwotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9GTDEwXzEoKTsKLVBs
YXRmb3JtUGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMF8wKCk7Ci0KLVBsYXRmb3JtUGFyYW1ldGVy
cyBFUzNfRDNEMTFfV0FSUCgpOwotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9GTDExXzFf
V0FSUCgpOwotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9GTDExXzBfV0FSUCgpOwotUGxh
dGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9GTDEwXzFfV0FSUCgpOwotUGxhdGZvcm1QYXJhbWV0
ZXJzIEVTM19EM0QxMV9GTDEwXzBfV0FSUCgpOwotCi1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0Qz
RDExX1JFRkVSRU5DRSgpOwotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9GTDExXzFfUkVG
RVJFTkNFKCk7Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX0QzRDExX0ZMMTFfMF9SRUZFUkVOQ0Uo
KTsKLVBsYXRmb3JtUGFyYW1ldGVycyBFUzNfRDNEMTFfRkwxMF8xX1JFRkVSRU5DRSgpOwotUGxh
dGZvcm1QYXJhbWV0ZXJzIEVTM19EM0QxMV9GTDEwXzBfUkVGRVJFTkNFKCk7Ci0KLVBsYXRmb3Jt
UGFyYW1ldGVycyBFUzJfT1BFTkdMKCk7Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX09QRU5HTChF
R0xpbnQgbWFqb3IsIEVHTGludCBtaW5vcik7Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMzX09QRU5H
TCgpOwotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTM19PUEVOR0woRUdMaW50IG1ham9yLCBFR0xpbnQg
bWlub3IpOwotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMzFfT1BFTkdMKCk7Ci1QbGF0Zm9ybVBhcmFt
ZXRlcnMgRVMzMV9PUEVOR0woRUdMaW50IG1ham9yLCBFR0xpbnQgbWlub3IpOwotCi1QbGF0Zm9y
bVBhcmFtZXRlcnMgRVMyX09QRU5HTEVTKCk7Ci1QbGF0Zm9ybVBhcmFtZXRlcnMgRVMyX09QRU5H
TEVTKEVHTGludCBtYWpvciwgRUdMaW50IG1pbm9yKTsKLVBsYXRmb3JtUGFyYW1ldGVycyBFUzNf
T1BFTkdMRVMoKTsKLVBsYXRmb3JtUGFyYW1ldGVycyBFUzNfT1BFTkdMRVMoRUdMaW50IG1ham9y
LCBFR0xpbnQgbWlub3IpOwotUGxhdGZvcm1QYXJhbWV0ZXJzIEVTMzFfT1BFTkdMRVMoKTsKLVBs
YXRmb3JtUGFyYW1ldGVycyBFUzMxX09QRU5HTEVTKEVHTGludCBtYWpvciwgRUdMaW50IG1pbm9y
KTsKLQotfSAvLyBuYW1lc3BhY2UgYW5nbGUKLQotI2VuZGlmIC8vIEFOR0xFX1RFU1RfQ09ORklH
U19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3Rf
dXRpbHMvYW5nbGVfdGVzdF9pbnN0YW50aWF0ZS5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkyOGQ4NWUxYTcuLjAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2FuZ2xlX3Rlc3RfaW5z
dGFudGlhdGUuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLy8KLS8vIENvcHly
aWdodCAoYykgMjAxNCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8v
Ci0KLS8vIGFuZ2xlX3Rlc3RfaW5zdGFudGlhdGUuY3BwOiBBZGRzIHN1cHBvcnQgZm9yIGZpbHRl
cmluZyBwYXJhbWV0ZXJpemVkCi0vLyB0ZXN0cyBieSBwbGF0Zm9ybSwgc28gd2Ugc2tpcCB1bnN1
cHBvcnRlZCBjb25maWdzLgotCi0jaW5jbHVkZSAidGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3Rh
bnRpYXRlLmgiCi0KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSNpbmNs
dWRlICJFR0xXaW5kb3cuaCIKLSNpbmNsdWRlICJPU1dpbmRvdy5oIgotI2luY2x1ZGUgInRlc3Rf
dXRpbHMvYW5nbGVfdGVzdF9jb25maWdzLmgiCi0KLW5hbWVzcGFjZSBhbmdsZQotewotCi1ib29s
IElzUGxhdGZvcm1BdmFpbGFibGUoY29uc3QgUGxhdGZvcm1QYXJhbWV0ZXJzICZwYXJhbSkKLXsK
LSAgICBzd2l0Y2ggKHBhcmFtLmdldFJlbmRlcmVyKCkpCi0gICAgewotICAgICAgY2FzZSBFR0xf
UExBVEZPUk1fQU5HTEVfVFlQRV9ERUZBVUxUX0FOR0xFOgotICAgICAgICBicmVhazsKLQotICAg
ICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9EM0Q5X0FOR0xFOgotI2lmbmRlZiBBTkdM
RV9FTkFCTEVfRDNEOQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLSAgICAgICAgYnJl
YWs7Ci0KLSAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfRDNEMTFfQU5HTEU6Ci0j
aWZuZGVmIEFOR0xFX0VOQUJMRV9EM0QxMQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYK
LSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGNhc2UgRUdMX1BMQVRGT1JNX0FOR0xFX1RZUEVfT1BF
TkdMX0FOR0xFOgotICAgICAgY2FzZSBFR0xfUExBVEZPUk1fQU5HTEVfVFlQRV9PUEVOR0xFU19B
TkdMRToKLSNpZm5kZWYgQU5HTEVfRU5BQkxFX09QRU5HTAotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0jZW5kaWYKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIFVOUkVB
Q0hBQkxFKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHN0YXRpYyBzdGQ6Om1hcDxQ
bGF0Zm9ybVBhcmFtZXRlcnMsIGJvb2w+IHBhcmFtQXZhaWxhYmlsaXR5Q2FjaGU7Ci0gICAgYXV0
byBpdGVyID0gcGFyYW1BdmFpbGFiaWxpdHlDYWNoZS5maW5kKHBhcmFtKTsKLSAgICBpZiAoaXRl
ciAhPSBwYXJhbUF2YWlsYWJpbGl0eUNhY2hlLmVuZCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGl0ZXItPnNlY29uZDsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgT1NXaW5kb3cg
Km9zV2luZG93ID0gQ3JlYXRlT1NXaW5kb3coKTsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBvc1dp
bmRvdy0+aW5pdGlhbGl6ZSgiQ09ORklHX1RFU1RFUiIsIDEsIDEpOwotCi0gICAgICAgIGlmIChy
ZXN1bHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEVHTFdpbmRvdyAqZWdsV2luZG93ID0KLSAg
ICAgICAgICAgICAgICBuZXcgRUdMV2luZG93KHBhcmFtLm1ham9yVmVyc2lvbiwgcGFyYW0ubWlu
b3JWZXJzaW9uLCBwYXJhbS5lZ2xQYXJhbWV0ZXJzKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IGVn
bFdpbmRvdy0+aW5pdGlhbGl6ZUdMKG9zV2luZG93KTsKLQotICAgICAgICAgICAgZWdsV2luZG93
LT5kZXN0cm95R0woKTsKLSAgICAgICAgICAgIFNhZmVEZWxldGUoZWdsV2luZG93KTsKLSAgICAg
ICAgfQotCi0gICAgICAgIG9zV2luZG93LT5kZXN0cm95KCk7Ci0gICAgICAgIFNhZmVEZWxldGUo
b3NXaW5kb3cpOwotCi0gICAgICAgIHBhcmFtQXZhaWxhYmlsaXR5Q2FjaGVbcGFyYW1dID0gcmVz
dWx0OwotCi0gICAgICAgIGlmICghcmVzdWx0KQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6
OmNvdXQgPDwgIlNraXBwaW5nIHRlc3RzIHVzaW5nIGNvbmZpZ3VyYXRpb24gIiA8PCBwYXJhbSA8
PCAiIGJlY2F1c2UgaXQgaXMgbm90IGF2YWlsYWJsZS4iIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAg
fQotCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfQotfQotCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2lu
c3RhbnRpYXRlLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGls
cy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGE3YjZhODFhYTFiLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvdGVzdF91dGlscy9hbmdsZV90ZXN0X2luc3RhbnRpYXRlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw1MiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE0IFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0v
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotLy8KLQotLy8gYW5nbGVfdGVzdF9pbnN0YW50
aWF0ZS5oOiBBZGRzIHN1cHBvcnQgZm9yIGZpbHRlcmluZyBwYXJhbWV0ZXJpemVkCi0vLyB0ZXN0
cyBieSBwbGF0Zm9ybSwgc28gd2Ugc2tpcCB1bnN1cHBvcnRlZCBjb25maWdzLgotCi0jaWZuZGVm
IEFOR0xFX1RFU1RfSU5TVEFOVElBVEVfSF8KLSNkZWZpbmUgQU5HTEVfVEVTVF9JTlNUQU5USUFU
RV9IXwotCi0jaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLQotI2luY2x1ZGUgImNvbW1vbi9kZWJ1
Zy5oIgotCi1uYW1lc3BhY2UgYW5nbGUKLXsKLQotc3RydWN0IFBsYXRmb3JtUGFyYW1ldGVyczsK
LQotYm9vbCBJc1BsYXRmb3JtQXZhaWxhYmxlKGNvbnN0IFBsYXRmb3JtUGFyYW1ldGVycyAmcGFy
YW0pOwotCi0vLyBUaGlzIGZ1bmN0aW9ucyBpcyB1c2VkIHRvIGZpbHRlciB3aGljaCB0ZXN0cyBz
aG91bGQgYmUgcmVnaXN0ZXJlZCwKLS8vIFQgbXVzdCBiZSBvciBpbmhlcml0IGZyb20gYW5nbGU6
OlBsYXRmb3JtUGFyYW1ldGVycy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RkOjp2ZWN0b3I8
VD4gRmlsdGVyVGVzdFBhcmFtcyhjb25zdCBUICpwYXJhbXMsIHNpemVfdCBudW1QYXJhbXMpCi17
Ci0gICAgc3RkOjp2ZWN0b3I8VD4gZmlsdGVyZWQ7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG51bVBhcmFtczsgaSsrKQotICAgIHsKLSAgICAgICAgaWYgKElzUGxhdGZvcm1BdmFpbGFi
bGUocGFyYW1zW2ldKSkKLSAgICAgICAgewotICAgICAgICAgICAgZmlsdGVyZWQucHVzaF9iYWNr
KHBhcmFtc1tpXSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZmlsdGVyZWQ7Ci19
Ci0KLS8vIEluc3RhbnRpYXRlIHRoZSB0ZXN0IG9uY2UgZm9yIGVhY2ggZXh0cmEgYXJndW1lbnQu
IFRoZSB0eXBlcyBvZiBhbGwgdGhlCi0vLyBhcmd1bWVudHMgbXVzdCBtYXRjaCwgYW5kIGdldFJl
bmRlcmVyIG11c3QgYmUgaW1wbGVtZW50ZWQgZm9yIHRoYXQgdHlwZS4KLSNkZWZpbmUgQU5HTEVf
SU5TVEFOVElBVEVfVEVTVCh0ZXN0TmFtZSwgZmlyc3RQYXJhbSwgLi4uKSBcCi0gICAgY29uc3Qg
ZGVjbHR5cGUoZmlyc3RQYXJhbSkgdGVzdE5hbWUjI3BhcmFtc1tdID0geyBmaXJzdFBhcmFtLCAj
I19fVkFfQVJHU19fIH07IFwKLSAgICBJTlNUQU5USUFURV9URVNUX0NBU0VfUCgsIHRlc3ROYW1l
LCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpWYWx1ZXNJbig6OmFu
Z2xlOjpGaWx0ZXJUZXN0UGFyYW1zKHRlc3ROYW1lIyNwYXJhbXMsIEFycmF5U2l6ZSh0ZXN0TmFt
ZSMjcGFyYW1zKSkpLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0aW5nOjpQ
cmludFRvU3RyaW5nUGFyYW1OYW1lKCkpOwotCi19IC8vIG5hbWVzcGFjZSBhbmdsZQotCi0jZW5k
aWYgLy8gQU5HTEVfVEVTVF9JTlNUQU5USUFURV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rlc3RfdXRpbHMvY29tcGlsZXJfdGVzdC5jcHAgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGVzdF91dGlscy9jb21waWxlcl90ZXN0LmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTIxNWQ4OTJhYjIuLjAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0aWxzL2NvbXBp
bGVyX3Rlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjE3ICswLDAgQEAKLS8vCi0vLyBDb3B5
cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0v
LwotLy8gY29tcGlsZXJfdGVzdC5jcHA6Ci0vLyAgICAgdXRpbGl0aWVzIGZvciBjb21waWxlciB1
bml0IHRlc3RzLgotCi0jaW5jbHVkZSAidGVzdHMvdGVzdF91dGlscy9jb21waWxlcl90ZXN0Lmgi
Ci0KLSNpbmNsdWRlICJhbmdsZV9nbC5oIgotI2luY2x1ZGUgImNvbXBpbGVyL3RyYW5zbGF0b3Iv
Q29tcGlsZXIuaCIKLQotbmFtZXNwYWNlCi17Ci0KLWNsYXNzIFNoYWRlclZhcmlhYmxlRmluZGVy
IDogcHVibGljIFRJbnRlcm1UcmF2ZXJzZXIKLXsKLSAgcHVibGljOgotICAgIFNoYWRlclZhcmlh
YmxlRmluZGVyKGNvbnN0IFRTdHJpbmcgJnZhcmlhYmxlTmFtZSwgVEJhc2ljVHlwZSBiYXNpY1R5
cGUpCi0gICAgICAgIDogVEludGVybVRyYXZlcnNlcih0cnVlLCBmYWxzZSwgZmFsc2UpLAotICAg
ICAgICAgIG1WYXJpYWJsZU5hbWUodmFyaWFibGVOYW1lKSwKLSAgICAgICAgICBtTm9kZUZvdW5k
KG51bGxwdHIpLAotICAgICAgICAgIG1CYXNpY1R5cGUoYmFzaWNUeXBlKQotICAgIHsKLSAgICB9
Ci0KLSAgICB2b2lkIHZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKm5vZGUpCi0gICAgewotICAg
ICAgICBpZiAobm9kZS0+Z2V0QmFzaWNUeXBlKCkgPT0gbUJhc2ljVHlwZSAmJiBub2RlLT5nZXRT
eW1ib2woKSA9PSBtVmFyaWFibGVOYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICBtTm9kZUZv
dW5kID0gbm9kZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGJvb2wgaXNGb3VuZCgpIGNvbnN0
IHsgcmV0dXJuIG1Ob2RlRm91bmQgIT0gbnVsbHB0cjsgfQotICAgIGNvbnN0IFRJbnRlcm1TeW1i
b2wgKmdldE5vZGUoKSBjb25zdCB7IHJldHVybiBtTm9kZUZvdW5kOyB9Ci0KLSAgcHJpdmF0ZToK
LSAgICBUU3RyaW5nIG1WYXJpYWJsZU5hbWU7Ci0gICAgVEludGVybVN5bWJvbCAqbU5vZGVGb3Vu
ZDsKLSAgICBUQmFzaWNUeXBlIG1CYXNpY1R5cGU7Ci19OwotCi19ICAvLyBhbm9ueW1vdXMgbmFt
ZXNwYWNlCi0KLWJvb2wgY29tcGlsZVRlc3RTaGFkZXIoR0xlbnVtIHR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgIFNoU2hhZGVyU3BlYyBzcGVjLAotICAgICAgICAgICAgICAgICAgICAgICBT
aFNoYWRlck91dHB1dCBvdXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6
c3RyaW5nICZzaGFkZXJTdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgIFNoQnVpbHRJblJl
c291cmNlcyAqcmVzb3VyY2VzLAotICAgICAgICAgICAgICAgICAgICAgICBTaENvbXBpbGVPcHRp
b25zIGNvbXBpbGVPcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAq
dHJhbnNsYXRlZENvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICppbmZv
TG9nKQotewotICAgIFRDb21waWxlciAqdHJhbnNsYXRvciA9IENvbnN0cnVjdENvbXBpbGVyKHR5
cGUsIHNwZWMsIG91dHB1dCk7Ci0gICAgaWYgKCF0cmFuc2xhdG9yLT5Jbml0KCpyZXNvdXJjZXMp
KQotICAgIHsKLSAgICAgICAgU2FmZURlbGV0ZSh0cmFuc2xhdG9yKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIGNvbnN0IGNoYXIgKnNoYWRlclN0cmluZ3NbXSA9IHsgc2hh
ZGVyU3RyaW5nLmNfc3RyKCkgfTsKLQotICAgIGJvb2wgY29tcGlsYXRpb25TdWNjZXNzID0gdHJh
bnNsYXRvci0+Y29tcGlsZShzaGFkZXJTdHJpbmdzLCAxLCBTSF9PQkpFQ1RfQ09ERSB8IGNvbXBp
bGVPcHRpb25zKTsKLSAgICBUSW5mb1NpbmsgJmluZm9TaW5rID0gdHJhbnNsYXRvci0+Z2V0SW5m
b1NpbmsoKTsKLSAgICBpZiAodHJhbnNsYXRlZENvZGUpCi0gICAgICAgICp0cmFuc2xhdGVkQ29k
ZSA9IGluZm9TaW5rLm9iai5jX3N0cigpOwotICAgIGlmIChpbmZvTG9nKQotICAgICAgICAqaW5m
b0xvZyA9IGluZm9TaW5rLmluZm8uY19zdHIoKTsKLSAgICBTYWZlRGVsZXRlKHRyYW5zbGF0b3Ip
OwotICAgIHJldHVybiBjb21waWxhdGlvblN1Y2Nlc3M7Ci19Ci0KLWJvb2wgY29tcGlsZVRlc3RT
aGFkZXIoR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyU3BlYyBz
cGVjLAotICAgICAgICAgICAgICAgICAgICAgICBTaFNoYWRlck91dHB1dCBvdXRwdXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcsCi0gICAg
ICAgICAgICAgICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMsCi0gICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICp0cmFuc2xhdGVkQ29kZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKmluZm9Mb2cpCi17Ci0gICAgU2hCdWlsdEluUmVz
b3VyY2VzIHJlc291cmNlczsKLSAgICBTaEluaXRCdWlsdEluUmVzb3VyY2VzKCZyZXNvdXJjZXMp
OwotICAgIHJldHVybiBjb21waWxlVGVzdFNoYWRlcih0eXBlLCBzcGVjLCBvdXRwdXQsIHNoYWRl
clN0cmluZywgJnJlc291cmNlcywgY29tcGlsZU9wdGlvbnMsIHRyYW5zbGF0ZWRDb2RlLCBpbmZv
TG9nKTsKLX0KLQotTWF0Y2hPdXRwdXRDb2RlVGVzdDo6TWF0Y2hPdXRwdXRDb2RlVGVzdChHTGVu
dW0gc2hhZGVyVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2hDb21waWxlT3B0aW9ucyBkZWZhdWx0Q29tcGlsZU9wdGlvbnMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dFR5cGUpCi0gICAg
OiBtU2hhZGVyVHlwZShzaGFkZXJUeXBlKSwgbURlZmF1bHRDb21waWxlT3B0aW9ucyhkZWZhdWx0
Q29tcGlsZU9wdGlvbnMpCi17Ci0gICAgU2hJbml0QnVpbHRJblJlc291cmNlcygmbVJlc291cmNl
cyk7Ci0gICAgbU91dHB1dENvZGVbb3V0cHV0VHlwZV0gPSBzdGQ6OnN0cmluZygpOwotfQotCi12
b2lkIE1hdGNoT3V0cHV0Q29kZVRlc3Q6OmFkZE91dHB1dFR5cGUoY29uc3QgU2hTaGFkZXJPdXRw
dXQgb3V0cHV0VHlwZSkKLXsKLSAgICBtT3V0cHV0Q29kZVtvdXRwdXRUeXBlXSA9IHN0ZDo6c3Ry
aW5nKCk7Ci19Ci0KLVNoQnVpbHRJblJlc291cmNlcyAqTWF0Y2hPdXRwdXRDb2RlVGVzdDo6Z2V0
UmVzb3VyY2VzKCkKLXsKLSAgICByZXR1cm4gJm1SZXNvdXJjZXM7Ci19Ci0KLXZvaWQgTWF0Y2hP
dXRwdXRDb2RlVGVzdDo6Y29tcGlsZShjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nKQot
ewotICAgIGNvbXBpbGUoc2hhZGVyU3RyaW5nLCBtRGVmYXVsdENvbXBpbGVPcHRpb25zKTsKLX0K
LQotdm9pZCBNYXRjaE91dHB1dENvZGVUZXN0Ojpjb21waWxlKGNvbnN0IHN0ZDo6c3RyaW5nICZz
aGFkZXJTdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU2hD
b21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucykKLXsKLSAgICBzdGQ6OnN0cmluZyBpbmZvTG9n
OwotICAgIGZvciAoYXV0byAmY29kZSA6IG1PdXRwdXRDb2RlKQotICAgIHsKLSAgICAgICAgYm9v
bCBjb21waWxhdGlvblN1Y2Nlc3MgPQotICAgICAgICAgICAgY29tcGlsZVdpdGhTZXR0aW5ncyhj
b2RlLmZpcnN0LCBzaGFkZXJTdHJpbmcsIGNvbXBpbGVPcHRpb25zLCAmY29kZS5zZWNvbmQsICZp
bmZvTG9nKTsKLSAgICAgICAgaWYgKCFjb21waWxhdGlvblN1Y2Nlc3MpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIEZBSUwoKSA8PCAiU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZDpcbiIgPDwgaW5m
b0xvZzsKLSAgICAgICAgfQotICAgIH0KLX0KLQotYm9vbCBNYXRjaE91dHB1dENvZGVUZXN0Ojpj
b21waWxlV2l0aFNldHRpbmdzKFNoU2hhZGVyT3V0cHV0IG91dHB1dCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVy
U3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFNoQ29tcGlsZU9wdGlvbnMgY29tcGlsZU9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnRyYW5zbGF0ZWRDb2RlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5n
ICppbmZvTG9nKQotewotICAgIHJldHVybiBjb21waWxlVGVzdFNoYWRlcihtU2hhZGVyVHlwZSwg
U0hfR0xFUzNfU1BFQywgb3V0cHV0LCBzaGFkZXJTdHJpbmcsICZtUmVzb3VyY2VzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlT3B0aW9ucywgdHJhbnNsYXRlZENvZGUsIGlu
Zm9Mb2cpOwotfQotCi1ib29sIE1hdGNoT3V0cHV0Q29kZVRlc3Q6OmZvdW5kSW5Db2RlKFNoU2hh
ZGVyT3V0cHV0IG91dHB1dCwgY29uc3QgY2hhciAqc3RyaW5nVG9GaW5kKSBjb25zdAotewotICAg
IGNvbnN0IGF1dG8gY29kZSA9IG1PdXRwdXRDb2RlLmZpbmQob3V0cHV0KTsKLSAgICBFWFBFQ1Rf
TkUobU91dHB1dENvZGUuZW5kKCksIGNvZGUpOwotICAgIGlmIChjb2RlID09IG1PdXRwdXRDb2Rl
LmVuZCgpKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVy
biBjb2RlLT5zZWNvbmQuZmluZChzdHJpbmdUb0ZpbmQpICE9IHN0ZDo6c3RyaW5nOjpucG9zOwot
fQotCi1ib29sIE1hdGNoT3V0cHV0Q29kZVRlc3Q6OmZvdW5kSW5Db2RlKFNoU2hhZGVyT3V0cHV0
IG91dHB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqc3RyaW5nVG9GaW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBpbnQgZXhwZWN0ZWRPY2N1cnJlbmNlcykgY29uc3QKLXsKLSAgICBjb25zdCBhdXRvIGNv
ZGUgPSBtT3V0cHV0Q29kZS5maW5kKG91dHB1dCk7Ci0gICAgRVhQRUNUX05FKG1PdXRwdXRDb2Rl
LmVuZCgpLCBjb2RlKTsKLSAgICBpZiAoY29kZSA9PSBtT3V0cHV0Q29kZS5lbmQoKSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBzaXplX3QgY3VycmVudFBvcyAg
PSAwOwotICAgIGludCBvY2N1cmVuY2VzTGVmdCA9IGV4cGVjdGVkT2NjdXJyZW5jZXM7Ci0gICAg
d2hpbGUgKG9jY3VyZW5jZXNMZWZ0LS0gPiAwKQotICAgIHsKLSAgICAgICAgYXV0byBwb3NpdGlv
biA9IGNvZGUtPnNlY29uZC5maW5kKHN0cmluZ1RvRmluZCwgY3VycmVudFBvcyk7Ci0gICAgICAg
IGlmIChwb3NpdGlvbiA9PSBzdGQ6OnN0cmluZzo6bnBvcykKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGN1cnJlbnRQb3MgPSBwb3NpdGlv
biArIDE7Ci0gICAgfQotICAgIHJldHVybiBjb2RlLT5zZWNvbmQuZmluZChzdHJpbmdUb0ZpbmQs
IGN1cnJlbnRQb3MpID09IHN0ZDo6c3RyaW5nOjpucG9zOwotfQotCi1ib29sIE1hdGNoT3V0cHV0
Q29kZVRlc3Q6OmZvdW5kSW5Db2RlKGNvbnN0IGNoYXIgKnN0cmluZ1RvRmluZCkgY29uc3QKLXsK
LSAgICBmb3IgKGF1dG8gJmNvZGUgOiBtT3V0cHV0Q29kZSkKLSAgICB7Ci0gICAgICAgIGlmICgh
Zm91bmRJbkNvZGUoY29kZS5maXJzdCwgc3RyaW5nVG9GaW5kKSkKLSAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwot
fQotCi1ib29sIE1hdGNoT3V0cHV0Q29kZVRlc3Q6OmZvdW5kSW5Db2RlKGNvbnN0IGNoYXIgKnN0
cmluZ1RvRmluZCwgY29uc3QgaW50IGV4cGVjdGVkT2NjdXJyZW5jZXMpIGNvbnN0Ci17Ci0gICAg
Zm9yIChhdXRvICZjb2RlIDogbU91dHB1dENvZGUpCi0gICAgewotICAgICAgICBpZiAoIWZvdW5k
SW5Db2RlKGNvZGUuZmlyc3QsIHN0cmluZ1RvRmluZCwgZXhwZWN0ZWRPY2N1cnJlbmNlcykpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBNYXRjaE91dHB1dENvZGVUZXN0Ojpub3RGb3VuZElu
Q29kZShjb25zdCBjaGFyICpzdHJpbmdUb0ZpbmQpIGNvbnN0Ci17Ci0gICAgZm9yIChhdXRvICZj
b2RlIDogbU91dHB1dENvZGUpCi0gICAgewotICAgICAgICBpZiAoZm91bmRJbkNvZGUoY29kZS5m
aXJzdCwgc3RyaW5nVG9GaW5kKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi1jb25zdCBUSW50ZXJt
U3ltYm9sICpGaW5kU3ltYm9sTm9kZShUSW50ZXJtTm9kZSAqcm9vdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRTdHJpbmcgJnN5bWJvbE5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQmFzaWNUeXBlIGJhc2ljVHlwZSkKLXsKLSAg
ICBTaGFkZXJWYXJpYWJsZUZpbmRlciBmaW5kZXIoc3ltYm9sTmFtZSwgYmFzaWNUeXBlKTsKLSAg
ICByb290LT50cmF2ZXJzZSgmZmluZGVyKTsKLSAgICByZXR1cm4gZmluZGVyLmdldE5vZGUoKTsK
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90ZXN0X3V0
aWxzL2NvbXBpbGVyX3Rlc3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90
ZXN0X3V0aWxzL2NvbXBpbGVyX3Rlc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDFiNjA2YmFjZjguLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy90ZXN0X3V0aWxzL2NvbXBpbGVyX3Rlc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDk2
ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMTUgVGhlIEFOR0xFIFByb2plY3QgQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotLy8gY29tcGlsZXJfdGVzdC5oOgotLy8gICAgIHV0aWxp
dGllcyBmb3IgY29tcGlsZXIgdW5pdCB0ZXN0cy4KLQotI2lmbmRlZiBURVNUU19URVNUX1VUSUxT
X0NPTVBJTEVSX1RFU1RfSF8KLSNkZWZpbmUgVEVTVFNfVEVTVF9VVElMU19DT01QSUxFUl9URVNU
X0hfCi0KLSNpbmNsdWRlIDxtYXA+Ci0KLSNpbmNsdWRlICJndGVzdC9ndGVzdC5oIgotCi0jaW5j
bHVkZSAiYW5nbGVfZ2wuaCIKLSNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL1RyYW5zbGF0
b3JFU1NMLmgiCi0jaW5jbHVkZSAiR0xTTEFORy9TaGFkZXJMYW5nLmgiCi0KLWJvb2wgY29tcGls
ZVRlc3RTaGFkZXIoR0xlbnVtIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVy
U3BlYyBzcGVjLAotICAgICAgICAgICAgICAgICAgICAgICBTaFNoYWRlck91dHB1dCBvdXRwdXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcs
Ci0gICAgICAgICAgICAgICAgICAgICAgIFNoQnVpbHRJblJlc291cmNlcyAqcmVzb3VyY2VzLAot
ICAgICAgICAgICAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25zIGNvbXBpbGVPcHRpb25zLAot
ICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqdHJhbnNsYXRlZENvZGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nICppbmZvTG9nKTsKLQotYm9vbCBjb21waWxl
VGVzdFNoYWRlcihHTGVudW0gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgU2hTaGFkZXJT
cGVjIHNwZWMsCi0gICAgICAgICAgICAgICAgICAgICAgIFNoU2hhZGVyT3V0cHV0IG91dHB1dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJnNoYWRlclN0cmluZywK
LSAgICAgICAgICAgICAgICAgICAgICAgU2hDb21waWxlT3B0aW9ucyBjb21waWxlT3B0aW9ucywK
LSAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgKnRyYW5zbGF0ZWRDb2RlLAotICAg
ICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyAqaW5mb0xvZyk7Ci0KLWNsYXNzIE1hdGNo
T3V0cHV0Q29kZVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdAotewotICBwcm90ZWN0ZWQ6Ci0g
ICAgTWF0Y2hPdXRwdXRDb2RlVGVzdChHTGVudW0gc2hhZGVyVHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIFNoQ29tcGlsZU9wdGlvbnMgZGVmYXVsdENvbXBpbGVPcHRpb25zLAotICAgICAg
ICAgICAgICAgICAgICAgICAgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSk7Ci0KLSAgICB2b2lk
IGFkZE91dHB1dFR5cGUoY29uc3QgU2hTaGFkZXJPdXRwdXQgb3V0cHV0VHlwZSk7Ci0KLSAgICBT
aEJ1aWx0SW5SZXNvdXJjZXMgKmdldFJlc291cmNlcygpOwotCi0gICAgLy8gQ29tcGlsZSBmdW5j
dGlvbnMgY2xlYXIgYW55IHJlc3VsdHMgZnJvbSBlYXJsaWVyIGNhbGxzIHRvIHRoZW0uCi0gICAg
dm9pZCBjb21waWxlKGNvbnN0IHN0ZDo6c3RyaW5nICZzaGFkZXJTdHJpbmcpOwotICAgIHZvaWQg
Y29tcGlsZShjb25zdCBzdGQ6OnN0cmluZyAmc2hhZGVyU3RyaW5nLCBjb25zdCBTaENvbXBpbGVP
cHRpb25zIGNvbXBpbGVPcHRpb25zKTsKLQotICAgIGJvb2wgZm91bmRJbkVTU0xDb2RlKGNvbnN0
IGNoYXIgKnN0cmluZ1RvRmluZCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBmb3VuZElu
Q29kZShTSF9FU1NMX09VVFBVVCwgc3RyaW5nVG9GaW5kKTsKLSAgICB9Ci0KLSAgICBib29sIGZv
dW5kSW5HTFNMQ29kZShjb25zdCBjaGFyICpzdHJpbmdUb0ZpbmQpIGNvbnN0Ci0gICAgewotICAg
ICAgICByZXR1cm4gZm91bmRJbkNvZGUoU0hfR0xTTF9DT01QQVRJQklMSVRZX09VVFBVVCwgc3Ry
aW5nVG9GaW5kKTsKLSAgICB9Ci0KLSAgICBib29sIGZvdW5kSW5Db2RlKFNoU2hhZGVyT3V0cHV0
IG91dHB1dCwgY29uc3QgY2hhciAqc3RyaW5nVG9GaW5kKSBjb25zdDsKLQotICAgIC8vIFRlc3Qg
dGhhdCB0aGUgc3RyaW5nIG9jY3VycyBmb3IgZXhhY3RseSBleHBlY3RlZE9jY3VycmVuY2VzIHRp
bWVzCi0gICAgYm9vbCBmb3VuZEluQ29kZShTaFNoYWRlck91dHB1dCBvdXRwdXQsCi0gICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdHJpbmdUb0ZpbmQsCi0gICAgICAgICAgICAgICAg
ICAgICBjb25zdCBpbnQgZXhwZWN0ZWRPY2N1cnJlbmNlcykgY29uc3Q7Ci0KLSAgICAvLyBUZXN0
IHRoYXQgdGhlIHN0cmluZyBpcyBmb3VuZCBpbiBhbGwgb3V0cHV0cwotICAgIGJvb2wgZm91bmRJ
bkNvZGUoY29uc3QgY2hhciAqc3RyaW5nVG9GaW5kKSBjb25zdDsKLQotICAgIC8vIFRlc3QgdGhh
dCB0aGUgc3RyaW5nIG9jY3VycyBmb3IgZXhhY3RseSBleHBlY3RlZE9jY3VycmVuY2VzIHRpbWVz
IGluIGFsbCBvdXRwdXRzCi0gICAgYm9vbCBmb3VuZEluQ29kZShjb25zdCBjaGFyICpzdHJpbmdU
b0ZpbmQsIGNvbnN0IGludCBleHBlY3RlZE9jY3VycmVuY2VzKSBjb25zdDsKLQotICAgIC8vIFRl
c3QgdGhhdCB0aGUgc3RyaW5nIGlzIGZvdW5kIGluIG5vbmUgb2YgdGhlIG91dHB1dHMKLSAgICBi
b29sIG5vdEZvdW5kSW5Db2RlKGNvbnN0IGNoYXIgKnN0cmluZ1RvRmluZCkgY29uc3Q7Ci0KLSAg
cHJpdmF0ZToKLSAgICBib29sIGNvbXBpbGVXaXRoU2V0dGluZ3MoU2hTaGFkZXJPdXRwdXQgb3V0
cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmc2hh
ZGVyU3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaENvbXBpbGVPcHRpb25z
IGNvbXBpbGVPcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmlu
ZyAqdHJhbnNsYXRlZENvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3Ry
aW5nICppbmZvTG9nKTsKLQotICAgIEdMZW51bSBtU2hhZGVyVHlwZTsKLSAgICBTaENvbXBpbGVP
cHRpb25zIG1EZWZhdWx0Q29tcGlsZU9wdGlvbnM7Ci0gICAgU2hCdWlsdEluUmVzb3VyY2VzIG1S
ZXNvdXJjZXM7Ci0KLSAgICBzdGQ6Om1hcDxTaFNoYWRlck91dHB1dCwgc3RkOjpzdHJpbmc+IG1P
dXRwdXRDb2RlOwotfTsKLQotY29uc3QgVEludGVybVN5bWJvbCAqRmluZFN5bWJvbE5vZGUoVElu
dGVybU5vZGUgKnJvb3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBUU3RyaW5nICZzeW1ib2xOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgVEJhc2ljVHlwZSBiYXNpY1R5cGUpOwotCi0jZW5kaWYgLy8gVEVTVFNfVEVTVF9VVElMU19D
T01QSUxFUl9URVNUX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvdGVzdF91dGlscy9nbF9yYWlpLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvdGVzdF91dGlscy9nbF9yYWlpLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDlhZGMwY2YwMjM2Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvdGVzdF91dGlscy9nbF9yYWlpLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NSArMCww
IEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDE2IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl
cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUg
TElDRU5TRSBmaWxlLgotLy8KLS8vIGdsX3JhaWk6Ci0vLyAgIEhlbHBlciBtZXRob2RzIGZvciBj
b250YWluaW5nIEdMIG9iamVjdHMgbGlrZSBidWZmZXJzIGFuZCB0ZXh0dXJlcy4KLQotI2lmbmRl
ZiBBTkdMRV9URVNUU19HTF9SQUlJX0hfCi0jZGVmaW5lIEFOR0xFX1RFU1RTX0dMX1JBSUlfSF8K
LQotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0KLSNpbmNsdWRlICJhbmdsZV9nbC5oIgotCi1uYW1l
c3BhY2UgYW5nbGUKLXsKLQotLy8gVGhpcyBpcyBhIGJpdCBvZiBoYWNrIHRvIHdvcmsgYXJvdW5k
IGEgYnVnIGluIE1TVlMgaW50ZWxsaXNlbnNlLCBhbmQgbWFrZSBpdCB2ZXJ5IGVhc3kgdG8KLS8v
IHVzZSB0aGUgY29ycmVjdCBmdW5jdGlvbiBwb2ludGVyIHR5cGUgd2l0aG91dCB3b3JyeWluZyBh
Ym91dCB0aGUgdmFyaW91cyBkZWZpbml0aW9ucyBvZgotLy8gR0xfQVBJQ0FMTC4KLXVzaW5nIEdM
R2VuICAgID0gZGVjbHR5cGUoZ2xHZW5CdWZmZXJzKTsKLXVzaW5nIEdMRGVsZXRlID0gZGVjbHR5
cGUoZ2xEZWxldGVCdWZmZXJzKTsKLQotdGVtcGxhdGUgPEdMR2VuIEdlbkYsIEdMRGVsZXRlIERl
bGV0ZUY+Ci1jbGFzcyBHTFdyYXBwZXIKLXsKLSAgcHVibGljOgotICAgIEdMV3JhcHBlcigpIHt9
Ci0gICAgfkdMV3JhcHBlcigpIHsgRGVsZXRlRigxLCAmbUhhbmRsZSk7IH0KLQotICAgIEdMdWlu
dCBnZXQoKQotICAgIHsKLSAgICAgICAgaWYgKCFtSGFuZGxlKQotICAgICAgICB7Ci0gICAgICAg
ICAgICBHZW5GKDEsICZtSGFuZGxlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbUhhbmRs
ZTsKLSAgICB9Ci0KLSAgcHJpdmF0ZToKLSAgICBHTHVpbnQgbUhhbmRsZSA9IDA7Ci19OwotCi11
c2luZyBHTEJ1ZmZlciAgICAgICA9IEdMV3JhcHBlcjxnbEdlbkJ1ZmZlcnMsIGdsRGVsZXRlQnVm
ZmVycz47Ci11c2luZyBHTFRleHR1cmUgICAgICA9IEdMV3JhcHBlcjxnbEdlblRleHR1cmVzLCBn
bERlbGV0ZVRleHR1cmVzPjsKLXVzaW5nIEdMRnJhbWVidWZmZXIgID0gR0xXcmFwcGVyPGdsR2Vu
RnJhbWVidWZmZXJzLCBnbERlbGV0ZUZyYW1lYnVmZmVycz47Ci11c2luZyBHTFJlbmRlcmJ1ZmZl
ciA9IEdMV3JhcHBlcjxnbEdlblJlbmRlcmJ1ZmZlcnMsIGdsRGVsZXRlUmVuZGVyYnVmZmVycz47
Ci0KLWNsYXNzIEdMUHJvZ3JhbQotewotICBwdWJsaWM6Ci0gICAgR0xQcm9ncmFtKGNvbnN0IHN0
ZDo6c3RyaW5nICZ2ZXJ0ZXhTaGFkZXIsIGNvbnN0IHN0ZDo6c3RyaW5nICZmcmFnbWVudFNoYWRl
cikKLSAgICAgICAgOiBtSGFuZGxlKDApLCBtVmVydGV4U2hhZGVyKHZlcnRleFNoYWRlciksIG1G
cmFnbWVudFNoYWRlcihmcmFnbWVudFNoYWRlcikKLSAgICB7Ci0gICAgfQotCi0gICAgR0xQcm9n
cmFtKGNvbnN0IHN0ZDo6c3RyaW5nICZjb21wdXRlU2hhZGVyKSA6IG1IYW5kbGUoMCksIG1Db21w
dXRlU2hhZGVyKGNvbXB1dGVTaGFkZXIpIHt9Ci0KLSAgICB+R0xQcm9ncmFtKCkgeyBnbERlbGV0
ZVByb2dyYW0obUhhbmRsZSk7IH0KLQotICAgIEdMdWludCBnZXQoKQotICAgIHsKLSAgICAgICAg
aWYgKG1IYW5kbGUgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtQ29tcHV0ZVNo
YWRlci5lbXB0eSgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1IYW5kbGUgPSBD
b21waWxlQ29tcHV0ZVByb2dyYW0obUNvbXB1dGVTaGFkZXIpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1IYW5kbGUgPSBD
b21waWxlUHJvZ3JhbShtVmVydGV4U2hhZGVyLCBtRnJhZ21lbnRTaGFkZXIpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtSGFuZGxlOwotICAgIH0KLQotICBwcml2
YXRlOgotICAgIEdMdWludCBtSGFuZGxlOwotICAgIGNvbnN0IHN0ZDo6c3RyaW5nIG1WZXJ0ZXhT
aGFkZXI7Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgbUZyYWdtZW50U2hhZGVyOwotICAgIGNvbnN0
IHN0ZDo6c3RyaW5nIG1Db21wdXRlU2hhZGVyOwotfTsKLQotI2RlZmluZSBBTkdMRV9HTF9QUk9H
UkFNKG5hbWUsIHZlcnRleCwgZnJhZ21lbnQpIFwKLSAgICBHTFByb2dyYW0gbmFtZSh2ZXJ0ZXgs
IGZyYWdtZW50KTsgICAgICAgICAgICBcCi0gICAgQVNTRVJUX05FKDB1LCBuYW1lLmdldCgpKTsK
LQotI2RlZmluZSBBTkdMRV9HTF9DT01QVVRFX1BST0dSQU0obmFtZSwgY29tcHV0ZSkgXAotICAg
IEdMUHJvZ3JhbSBuYW1lKGNvbXB1dGUpOyAgICAgICAgICAgICAgICAgICAgXAotICAgIEFTU0VS
VF9ORSgwdSwgbmFtZS5nZXQoKSk7Ci0KLX0gIC8vIG5hbWVzcGFjZSBhbmdsZQotCi0jZW5kaWYg
IC8vIEFOR0xFX1RFU1RTX0dMX1JBSUlfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy90ZXN0cy5neXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvdGVzdHMuZ3lwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmQxOGU3ODk4
Yy4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Rl
c3RzLmd5cAorKysgL2Rldi9udWxsCkBAIC0xLDM0OSArMCwwIEBACi0jIENvcHlyaWdodCAoYykg
MjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCi0jIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLXsKLSAgICAnaW5j
bHVkZXMnOgotICAgIFsKLSAgICAgICAgJ2RlcXAuZ3lwaScsCi0gICAgICAgICcuLi8uLi9idWls
ZC9jb21tb25fZGVmaW5lcy5neXBpJywKLSAgICBdLAotICAgICd2YXJpYWJsZXMnOgotICAgIHsK
LSAgICAgICAgJ2FuZ2xlX2J1aWxkX2NvbmZvcm1hbmNlX3Rlc3RzJSc6ICcwJywKLQotICAgICAg
ICAncmFwaWRqc29uX2luY2x1ZGVfZGlyJzogJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRl
JywKLSAgICAgICAgJ3JhcGlkanNvbl9oZWFkZXJzJzoKLSAgICAgICAgWwotICAgICAgICAgICAg
J3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9hbGxvY2F0b3JzLmgnLAot
ICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9kb2N1
bWVudC5oJywKLSAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBp
ZGpzb24vZW5jb2RlZHN0cmVhbS5oJywKLSAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9yYXBpZGpz
b24vaW5jbHVkZS9yYXBpZGpzb24vZW5jb2RpbmdzLmgnLAotICAgICAgICAgICAgJ3RoaXJkX3Bh
cnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9maWxlcmVhZHN0cmVhbS5oJywKLSAgICAg
ICAgICAgICd0aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZmlsZXN0cmVh
bS5oJywKLSAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpz
b24vZmlsZXdyaXRlc3RyZWFtLmgnLAotICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNv
bi9pbmNsdWRlL3JhcGlkanNvbi9tZW1vcnlidWZmZXIuaCcsCi0gICAgICAgICAgICAndGhpcmRf
cGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL21lbW9yeXN0cmVhbS5oJywKLSAgICAg
ICAgICAgICd0aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vcHJldHR5d3Jp
dGVyLmgnLAotICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlk
anNvbi9yYXBpZGpzb24uaCcsCi0gICAgICAgICAgICAndGhpcmRfcGFydHkvcmFwaWRqc29uL2lu
Y2x1ZGUvcmFwaWRqc29uL3JlYWRlci5oJywKLSAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9yYXBp
ZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vc3RyaW5nYnVmZmVyLmgnLAotICAgICAgICAgICAgJ3Ro
aXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi93cml0ZXIuaCcsCi0gICAgICAg
ICAgICAndGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2Vycm9yL2VuLmgn
LAotICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9l
cnJvci9lcnJvci5oJywKLSAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVk
ZS9yYXBpZGpzb24vaW50ZXJuYWwvZHRvYS5oJywKLSAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9y
YXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvaXRvYS5oJywKLSAgICAgICAgICAg
ICd0aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvbWV0YS5o
JywKLSAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24v
aW50ZXJuYWwvcG93MTAuaCcsCi0gICAgICAgICAgICAndGhpcmRfcGFydHkvcmFwaWRqc29uL2lu
Y2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL3N0YWNrLmgnLAotICAgICAgICAgICAgJ3RoaXJkX3Bh
cnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9zdHJmdW5jLmgnLAotICAg
ICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9tc2ludHR5
cGVzL2ludHR5cGVzLmgnLAotICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNs
dWRlL3JhcGlkanNvbi9tc2ludHR5cGVzL3N0ZGludC5oJywKLSAgICAgICAgXSwKLSAgICB9LAot
ICAgICdjb25kaXRpb25zJzoKLSAgICBbCi0gICAgICAgICMgR29vZ2xlVGVzdCBkb2Vzbid0IHN1
cHBvcnQgV2luUlQKLSAgICAgICAgWydhbmdsZV9idWlsZF93aW5ydD09MCcsCi0gICAgICAgIHsK
LSAgICAgICAgICAgICd0YXJnZXRzJzoKLSAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV90ZXN0X3N1cHBvcnQn
LAotICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdub25lJywKLSAgICAgICAgICAgICAgICAg
ICAgJ2RlcGVuZGVuY2llcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICdhbmdsZV9pbnRlcm5hbF9nbW9jaycsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAnYW5nbGVfaW50ZXJuYWxfZ3Rlc3QnLAotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICBdLAotICAgICAgICB9XSwKLSAgICAgICAgWydhbmds
ZV9idWlsZF93aW5ydD09MCcsCi0gICAgICAgIHsKLSAgICAgICAgICAgICd0YXJnZXRzJzoKLSAg
ICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAjIEhpZGUgdGhlc2UgdGFyZ2V0cyBmcm9tIENo
cm9taXVtLCBiZWNhdXNlIGl0IGNhbid0Ci0gICAgICAgICAgICAgICAgIyBmaW5kIG91ciBzdGFu
ZGFsb25lIGNvcHkgb2YgdGhlIGd0ZXN0L2dtb2NrIHNvdXJjZXMuCi0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfaW50ZXJuYWxfZ3Rl
c3QnLAotICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCi0gICAg
ICAgICAgICAgICAgICAgICdpbmNsdWRlcyc6IFsgJy4uLy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVz
Lmd5cGknLCBdLAotICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzoKLSAgICAgICAg
ICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dvb2ds
ZXRlc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qv
aW5jbHVkZScsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdz
b3VyY2VzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAg
J3RoaXJkX3BhcnR5L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LWFsbC5jYycsCi0gICAgICAgICAgICAg
ICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdkZWZpbmVzJzoKLSAgICAgICAgICAgICAg
ICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJ19WQVJJQURJQ19NQVg9MTAnLAotICAg
ICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAnYWxsX2RlcGVuZGVudF9z
ZXR0aW5ncyc6Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICdkZWZpbmVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnX1ZBUklBRElDX01BWD0xMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICBd
LAotICAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9nb29n
bGV0ZXN0L2luY2x1ZGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfaW50ZXJuYWxfZ21vY2snLAot
ICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdzdGF0aWNfbGlicmFyeScsCi0gICAgICAgICAg
ICAgICAgICAgICdpbmNsdWRlcyc6IFsgJy4uLy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGkn
LCBdLAotICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzoKLSAgICAgICAgICAgICAg
ICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dvb2dsZW1vY2sn
LAotICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dvb2dsZW1vY2svaW5jbHVk
ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkvZ29vZ2xldGVzdC9pbmNs
dWRlJywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJj
ZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAndGhp
cmRfcGFydHkvZ29vZ2xlbW9jay9zcmMvZ21vY2stYWxsLmNjJywKLSAgICAgICAgICAgICAgICAg
ICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAgICAgICAgICAg
ICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnX1ZBUklBRElDX01BWD0xMCcsCi0gICAgICAg
ICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICdhbGxfZGVwZW5kZW50X3NldHRp
bmdzJzoKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgJ2Rl
ZmluZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdfVkFSSUFESUNfTUFYPTEwJywKLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhpcmRfcGFydHkvZ29vZ2xl
bW9jaycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dvb2dsZW1v
Y2svaW5jbHVkZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoaXJkX3BhcnR5L2dv
b2dsZXRlc3QvaW5jbHVkZScsCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAg
ICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0sCi0KLSAgICAgICAgICAgICAgICAjIFRo
ZXNlIHNhbWUgdGFyZ2V0IG5hbWVzIGV4aXN0IG9uIHRoZSBDaHJvbWl1bSBzaWRlLAotICAgICAg
ICAgICAgICAgICMgd2hpY2ggaXMgZm9yYmlkZGVuLCBzbyB3ZSBtYWtlIHRoZW0gY29uZGl0aW9u
YWwgb24KLSAgICAgICAgICAgICAgICAjIEFOR0xFJ3Mgc3RhbmRhbG9uZSBidWlsZC4KLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICd0YXJnZXRfbmFtZSc6ICdhbmdsZV91
bml0dGVzdHMnLAotICAgICAgICAgICAgICAgICAgICAndHlwZSc6ICdleGVjdXRhYmxlJywKLSAg
ICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVzJzoKLSAgICAgICAgICAgICAgICAgICAgWwotICAg
ICAgICAgICAgICAgICAgICAgICAgJy4uLy4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLAot
ICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX3VuaXR0ZXN0cy5neXBpJywKLSAgICAgICAg
ICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAgICAg
ICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfdW5pdHRlc3RzX21h
aW4uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ21z
dnNfc2V0dGluZ3MnOgotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAnVkNMaW5rZXJUb29sJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2FuZ2xlX2J1aWxkX3dp
bnJ0PT0xJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ0FkZGl0aW9uYWxEZXBlbmRlbmNpZXMnOgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdydW50aW1lb2JqZWN0LmxpYicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgJ21zdnNfZGlz
YWJsZWRfd2FybmluZ3MnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAg
ICAgICAgICA0MjQ0LCAjIENvbnZlcnNpb24gZnJvbSAndHlwZTEnIHRvICd0eXBlMicsIHBvc3Np
YmxlIGxvc3Mgb2YgZGF0YQotICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUn
OiAnYW5nbGVfZW5kMmVuZF90ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ2V4
ZWN1dGFibGUnLAotICAgICAgICAgICAgICAgICAgICAnaW5jbHVkZXMnOgotICAgICAgICAgICAg
ICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAnLi4vLi4vYnVpbGQvY29tbW9uX2Rl
ZmluZXMuZ3lwaScsCi0gICAgICAgICAgICAgICAgICAgICAgICAnYW5nbGVfZW5kMmVuZF90ZXN0
cy5neXBpJywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgJ3Nv
dXJjZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAgICAn
YW5nbGVfZW5kMmVuZF90ZXN0c19tYWluLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0g
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICd0YXJnZXRfbmFtZSc6ICdhbmdsZV9wZXJmdGVzdHMnLAotICAgICAgICAgICAgICAgICAgICAn
dHlwZSc6ICdleGVjdXRhYmxlJywKLSAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGVzJzoKLSAg
ICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgJy4uLy4uL2J1aWxk
L2NvbW1vbl9kZWZpbmVzLmd5cGknLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2FuZ2xlX3Bl
cmZ0ZXN0cy5neXBpJywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAg
ICAgJ3NvdXJjZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAg
ICAgICAnYW5nbGVfcGVyZnRlc3RzX21haW4uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgXSwK
LSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgXSwKLSAgICAgICAgfV0sCi0gICAgICAg
IFsnT1M9PSJ3aW4iJywKLSAgICAgICAgewotICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOgotICAg
ICAgICAgICAgWwotICAgICAgICAgICAgICAgIFsnYW5nbGVfYnVpbGRfY29uZm9ybWFuY2VfdGVz
dHMnLAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcyc6
Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdnbGVzX2Nv
bmZvcm1hbmNlX3Rlc3RzX291dHB1dF9kaXInOiAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikv
Y29uZm9ybWFuY2VfdGVzdHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2dsZXNfY29uZm9y
bWFuY2VfdGVzdHNfaW5wdXRfZGlyJzogJ3RoaXJkX3BhcnR5L2dsZXNfY29uZm9ybWFuY2VfdGVz
dHMvY29uZm9ybS9HVEZfRVMvZ2xzbC9HVEYnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2ds
ZXNfY29uZm9ybWFuY2VfdGVzdHNfZ2VuZXJhdG9yX3NjcmlwdCc6ICdnbGVzX2NvbmZvcm1hbmNl
X3Rlc3RzL2dlbmVyYXRlX2dsZXNfY29uZm9ybWFuY2VfdGVzdHMucHknLAotICAgICAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAndGFyZ2V0cyc6Ci0gICAgICAgICAgICAg
ICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZ2xlczJfY29uZm9ybWFuY2VfdGVzdHMnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ2V4ZWN1dGFibGUnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlcyc6IFsgJy4uLy4uL2J1aWxkL2NvbW1vbl9k
ZWZpbmVzLmd5cGknLCBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXBlbmRlbmNp
ZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2FuZ2xlLmd5cDpsaWJHTEVTdjInLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lw
OmxpYkVHTCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9n
bGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2NvbmZvcm0vR1RGX0VTL2dsc2wvR1RGL2VzX2N0cy5neXA6
ZXNfY3RzX3Rlc3RfZGF0YScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGly
ZF9wYXJ0eS9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2NvbmZvcm0vR1RGX0VTL2dsc2wvR1RGL2Vz
X2N0cy5neXA6ZXMyX2N0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbmds
ZV90ZXN0X3N1cHBvcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcyc6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2xlczJfY29uZm9ybWFu
Y2VfdGVzdHNfaW5wdXRfZmlsZSc6ICc8KGdsZXNfY29uZm9ybWFuY2VfdGVzdHNfaW5wdXRfZGly
KS9tdXN0cGFzc19lczIwLnJ1bicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdn
bGVzMl9jb25mb3JtYW5jZV90ZXN0c19nZW5lcmF0ZWRfZmlsZSc6ICc8KGdsZXNfY29uZm9ybWFu
Y2VfdGVzdHNfb3V0cHV0X2RpcikvZ2VuZXJhdGVkX2dsZXMyX2NvbmZvcm1hbmNlX3Rlc3RzLmNw
cCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2xlc19jb25mb3JtYW5jZV90ZXN0cy9nbGVzX2Nv
bmZvcm1hbmNlX3Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdn
bGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHMuaCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdnbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2dsZXNfY29u
Zm9ybWFuY2VfdGVzdHNfbWFpbi5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnPChnbGVzMl9jb25mb3JtYW5jZV90ZXN0c19nZW5lcmF0ZWRfZmlsZSknLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1
ZGVfZGlycyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9pbmNsdWRlJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ2dsZXNfY29uZm9ybWFuY2VfdGVzdHMnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZXMn
OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0NPTkZPUk1BTkNFX1RFU1RTX1RZUEU9Q09ORk9STUFOQ0VfVEVTVFNfRVMyJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdtc3ZzX3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWQ0NMQ29tcGlsZXJUb29sJzoKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIyBNU1ZTIGhhcyB0cm91YmxlIGNvbXBpbGluZyB0aGlzIGR1ZSB0byB0aGUgb2JqIGZp
bGVzIGJlY29taW5nIHRvbyBsYXJnZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdBZGRpdGlvbmFsT3B0aW9ucyc6IFsgJy9iaWdvYmonIF0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9ucyc6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uX25hbWUnOiAnZ2VuZXJhdGVfZ2xlczJfY29u
Zm9ybWFuY2VfdGVzdHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21l
c3NhZ2UnOiAnR2VuZXJhdGluZyBFUzIgY29uZm9ybWFuY2UgdGVzdHMuLi4nLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNfY3lnd2luX3NoZWxsJzogMCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnB1dHMnOgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICc8KGdsZXNfY29uZm9ybWFuY2VfdGVzdHNfZ2VuZXJhdG9yX3NjcmlwdCknLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8KGdsZXMyX2NvbmZvcm1hbmNl
X3Rlc3RzX2lucHV0X2ZpbGUpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3V0cHV0cyc6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJzwoZ2xlczJfY29uZm9ybWFuY2VfdGVzdHNfZ2VuZXJhdGVkX2Zp
bGUpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJzoKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAncHl0aG9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChn
bGVzX2NvbmZvcm1hbmNlX3Rlc3RzX2dlbmVyYXRvcl9zY3JpcHQpJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnPChnbGVzMl9jb25mb3JtYW5jZV90ZXN0c19pbnB1
dF9maWxlKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwoZ2xl
c19jb25mb3JtYW5jZV90ZXN0c19pbnB1dF9kaXIpJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnPChnbGVzMl9jb25mb3JtYW5jZV90ZXN0c19nZW5lcmF0ZWRfZmls
ZSknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAot
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAndGFyZ2V0X25hbWUnOiAnYW5nbGVfZ2xlczNfY29u
Zm9ybWFuY2VfdGVzdHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0eXBlJzogJ2V4
ZWN1dGFibGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlcyc6IFsgJy4u
Ly4uL2J1aWxkL2NvbW1vbl9kZWZpbmVzLmd5cGknLCBdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdkZXBlbmRlbmNpZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2FuZ2xlLmd5
cDpsaWJHTEVTdjInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9w
YXRoKS9zcmMvYW5nbGUuZ3lwOmxpYkVHTCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICd0aGlyZF9wYXJ0eS9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2NvbmZvcm0vR1RGX0VTL2ds
c2wvR1RGL2VzX2N0cy5neXA6ZXNfY3RzX3Rlc3RfZGF0YScsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd0aGlyZF9wYXJ0eS9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2NvbmZvcm0v
R1RGX0VTL2dsc2wvR1RGL2VzX2N0cy5neXA6ZXMzX2N0cycsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdhbmdsZV90ZXN0X3N1cHBvcnQnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcyc6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnZ2xlczNfY29uZm9ybWFuY2VfdGVzdHNfaW5wdXRfZmlsZSc6ICc8KGdsZXNfY29uZm9ybWFu
Y2VfdGVzdHNfaW5wdXRfZGlyKS9tdXN0cGFzc19lczMwLnJ1bicsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdnbGVzM19jb25mb3JtYW5jZV90ZXN0c19nZW5lcmF0ZWRfZmlsZSc6
ICc8KGdsZXNfY29uZm9ybWFuY2VfdGVzdHNfb3V0cHV0X2RpcikvZ2VuZXJhdGVkX2dsZXMzX2Nv
bmZvcm1hbmNlX3Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2xlc19jb25mb3Jt
YW5jZV90ZXN0cy9nbGVzX2NvbmZvcm1hbmNlX3Rlc3RzLmNwcCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdnbGVzX2NvbmZvcm1hbmNlX3Rlc3RzL2dsZXNfY29uZm9ybWFuY2Vf
dGVzdHMuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnbGVzX2NvbmZvcm1h
bmNlX3Rlc3RzL2dsZXNfY29uZm9ybWFuY2VfdGVzdHNfbWFpbi5jcHAnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnPChnbGVzM19jb25mb3JtYW5jZV90ZXN0c19nZW5lcmF0ZWRf
ZmlsZSknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
WwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9pbmNsdWRl
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dsZXNfY29uZm9ybWFuY2VfdGVz
dHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2RlZmluZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NPTkZPUk1BTkNFX1RFU1RTX1RZUEU9Q09ORk9S
TUFOQ0VfVEVTVFNfRVMzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdtc3ZzX3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWQ0NMQ29tcGls
ZXJUb29sJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIyBNU1ZTIGhhcyB0cm91YmxlIGNvbXBpbGluZyB0aGlz
IGR1ZSB0byB0aGUgb2JqIGZpbGVzIGJlY29taW5nIHRvbyBsYXJnZS4KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdBZGRpdGlvbmFsT3B0aW9ucyc6IFsgJy9iaWdvYmonIF0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9ucyc6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uX25hbWUnOiAn
Z2VuZXJhdGVfZ2xlczNfY29uZm9ybWFuY2VfdGVzdHMnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiAnR2VuZXJhdGluZyBFUzMgY29uZm9ybWFuY2UgdGVz
dHMuLi4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21zdnNfY3lnd2lu
X3NoZWxsJzogMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnB1dHMn
OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICc8KGdsZXNfY29uZm9ybWFuY2VfdGVzdHNfZ2VuZXJh
dG9yX3NjcmlwdCknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8
KGdsZXMzX2NvbmZvcm1hbmNlX3Rlc3RzX2lucHV0X2ZpbGUpJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnb3V0cHV0cyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwoZ2xlczNfY29uZm9ybWFuY2Vf
dGVzdHNfZ2VuZXJhdGVkX2ZpbGUpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJzoKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAncHl0aG9uJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnPChnbGVzX2NvbmZvcm1hbmNlX3Rlc3RzX2dlbmVyYXRvcl9zY3JpcHQp
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChnbGVzM19jb25m
b3JtYW5jZV90ZXN0c19pbnB1dF9maWxlKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJzwoZ2xlc19jb25mb3JtYW5jZV90ZXN0c19pbnB1dF9kaXIpJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPChnbGVzM19jb25mb3JtYW5jZV90
ZXN0c19nZW5lcmF0ZWRfZmlsZSknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgIF0sCi0gICAgICAg
IH1dLAotICAgIF0sCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL0hvd1RvTWFrZUNoYW5nZXMu
bWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rl
c3RfZXhwZWN0YXRpb25zL0hvd1RvTWFrZUNoYW5nZXMubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDE5MGEzZTljMzYyLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL0hvd1Rv
TWFrZUNoYW5nZXMubWQKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1CZWNhdXNlIHRo
ZSBgYGBncHVfdGVzdF9leHBlY3RhdGlvbnNgYGAgZGlyZWN0b3J5IGlzIGJhc2VkIG9uIHBhcnRz
IG9mIENocm9taXVtJ3MgYGBgZ3B1L2NvbmZpZ2BgYAotZGlyZWN0b3J5LCB3ZSB3YW50IHRvIGtl
ZXAgYSBwYXRjaCBvZiB0aGUgY2hhbmdlcyBhZGRlZCB0byBtYWtlIGl0IGNvbXBpbGUgd2l0aCBB
TkdMRS4gVGhpcwotd2lsbCBhbGxvdyB1cyB0byBtZXJnZSBDaHJvbWl1bSBjaGFuZ2VzIGVhc2ls
eSBpbiBvdXIgYGBgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zYGBgLgotCi1JbiBvcmRlciB0byBtYWtl
IGEgY2hhbmdlIHRvIHRoaXMgZGlyZWN0b3J5LCBkbyB0aGUgZm9sbG93aW5nOgotCi0gKiBjb3B5
IHRoZSBkaXJlY3Rvcnkgc29tZXdoZXJlIGxpa2UgaW4gYGBgZ3B1X3Rlc3RfZXhwZWN0YXRpb25z
X3JldmVydGVkYGBgCi0gKiBpbiBgYGBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWRgYGAg
cnVuIGBgYHBhdGNoIC1wIDEgLVIgPCBhbmdsZS1tb2RzLnBhdGNoYGBgCi0gKiBkbyB5b3VyIGNo
YW5nZXMgaW4gYGBgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zYGBgCi0gKiBkZWxldGUgYW5nbGUtbW9k
cy5wYXRjaCBpbiBib3RoIGRpcmVjdG9yaWVzCi0gKiBydW4gYGBgZGlmZiAtcnVwTiBncHVfdGVz
dF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zID4gYW5nbGUtbW9k
cy5wYXRjaGBgYAotICogY29weSBgYGBhbmdsZS1tb2RzLnBhdGNoYGBgIGluIGBgYGdwdV90ZXN0
X2V4cGVjdGF0aW9uc2BgYAotCi1Ib3cgdG8gdXBkYXRlIGZyb20gQ2hyb21pdW06Ci0KLSAqIGBg
YGdpdCBhcHBseSAtUiBhbmdsZS1tb2RzLnBhdGNoYGBgLCBgYGBnaXQgYWRkIC4gLXVgYGAsIGBg
YGdpdCBjb21taXRgYGAKLSAqIENvcHkgb3ZlciBDaHJvbWl1bSBmaWxlcywgYGBgZ2l0IGFkZCAu
IC11YGBgLCBgYGBnaXQgY29tbWl0YGBgCi0gKiBgYGBnaXQgcmV2ZXJ0IEhFQUR+YGBgCi0gKiBg
YGBybSBhbmdsZS1tb2RzLnBhdGNoYGBgCi0gKiBgYGBnaXQgZGlmZiBIRUFEfiAoYClscyhgKSA+
IGFuZ2xlLW1vZHMucGF0Y2hgYGAsYGBgZ2l0IGFkZCBhbmdsZS1tb2RzLnBhdGNoYGBgLCBgYGBn
aXQgY29tbWl0IC0tYW1lbmRgYGAKLSAqIGBgYGdpdCByZWJhc2UgLWlgYGAgdG8gc3F1YXNoIHRo
ZSB0aHJlZSBwYXRjaGVzIGludG8gb25lLgotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2FuZ2xl
LW1vZHMucGF0Y2ggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFy
dHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2FuZ2xlLW1vZHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDhkZjg1OGM3Y2NiLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25z
L2FuZ2xlLW1vZHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NjggKzAsMCBAQAotZGlmZiAt
cnVwTiBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQvYW5nbGVfY29uZmlnLmggZ3B1X3Rl
c3RfZXhwZWN0YXRpb25zL2FuZ2xlX2NvbmZpZy5oCi0tLS0gZ3B1X3Rlc3RfZXhwZWN0YXRpb25z
X3JldmVydGVkL2FuZ2xlX2NvbmZpZy5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0w
NTAwCi0rKysgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2FuZ2xlX2NvbmZpZy5oCTIwMTYtMDgtMjMg
MTM6NTA6MTguMjgyNzQyNTA1IC0wNDAwCi1AQCAtMCwwICsxLDY2IEBACi0rLy8KLSsvLyBDb3B5
cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSsvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotKy8v
Ci0rLy8gYW5nbGVfY29uZmlnLmg6Ci0rLy8gICBIZWxwZXJzIGZvciBpbXBvcnRpbmcgdGhlIGdw
dSB0ZXN0IGV4cGVjdGF0aW9ucyBwYWNrYWdlIGZyb20gQ2hyb21lLgotKy8vCi0rCi0rI2lmbmRl
ZiBHUFVfVEVTVF9FWFBFQ1RBVElPTlNfQU5HTEVfQ09ORklHX0hfCi0rI2RlZmluZSBHUFVfVEVT
VF9FWFBFQ1RBVElPTlNfQU5HTEVfQ09ORklHX0hfCi0rCi0rI2luY2x1ZGUgPHN0ZGludC5oPgot
KwotKyNpbmNsdWRlIDxpb3N0cmVhbT4KLSsKLSsjaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCi0r
I2luY2x1ZGUgImNvbW1vbi9zdHJpbmdfdXRpbHMuaCIKLSsKLSsjZGVmaW5lIERDSEVDS19FUShB
LEIpIEFTU0VSVCgoQSkgPT0gKEIpKQotKyNkZWZpbmUgRENIRUNLX05FKEEsQikgQVNTRVJUKChB
KSAhPSAoQikpCi0rI2RlZmluZSBEQ0hFQ0soWCkgQVNTRVJUKFgpCi0rI2RlZmluZSBMT0coWCkg
c3RkOjpjZXJyCi0rCi0rI2RlZmluZSBHUFVfRVhQT1JUCi0rCi0rdHlwZWRlZiBpbnQzMl90IGlu
dDMyOwotK3R5cGVkZWYgdWludDMyX3QgdWludDMyOwotK3R5cGVkZWYgaW50NjRfdCBpbnQ2NDsK
LSt0eXBlZGVmIHVpbnQ2NF90IHVpbnQ2NDsKLSsKLSsvLyBTaGltIENocm9taXVtJ3MgYmFzZSBi
eSBpbXBvcnRpbmcgZnVuY3Rpb25zIGluIHRoZSBiYXNlIG5hbWVzcGFjZS4KLStuYW1lc3BhY2Ug
YmFzZQotK3sKLSsgICAgdXNpbmcgYW5nbGU6OmtXaGl0ZXNwYWNlQVNDSUk7Ci0rICAgIHVzaW5n
IGFuZ2xlOjpUUklNX1dISVRFU1BBQ0U7Ci0rICAgIHVzaW5nIGFuZ2xlOjpLRUVQX1dISVRFU1BB
Q0U7Ci0rICAgIHVzaW5nIGFuZ2xlOjpTUExJVF9XQU5UX0FMTDsKLSsgICAgdXNpbmcgYW5nbGU6
OlNQTElUX1dBTlRfTk9ORU1QVFk7Ci0rICAgIHVzaW5nIGFuZ2xlOjpTcGxpdFN0cmluZzsKLSsg
ICAgdXNpbmcgYW5nbGU6OlNwbGl0U3RyaW5nQWxvbmdXaGl0ZXNwYWNlOwotKyAgICB1c2luZyBh
bmdsZTo6SGV4U3RyaW5nVG9VSW50OwotKyAgICB1c2luZyBhbmdsZTo6UmVhZEZpbGVUb1N0cmlu
ZzsKLSsKLSsgICAgLy8gU3RyaW5nUHJpbnRmIGlzIGNhbGxlZCBkaWZmZXJlbnRseSBpbiBBTkdM
RSBidXQgdXNpbmcgY2Fubm90IGNoYW5nZQotKyAgICAvLyB0aGUgbmFtZSBvZiB0aGUgaW1wb3J0
ZWQgZnVuY3Rpb24uIFVzZSBhIGRlZmluZSB0byBjaGFuZ2UgdGhlIG5hbWUuCi0rICAgIHVzaW5n
IDo6Rm9ybWF0U3RyaW5nOwotKyAgICAjZGVmaW5lIFN0cmluZ1ByaW50ZiBGb3JtYXRTdHJpbmcK
LSt9Ci0rCi0rLy8gVE9ETyhqbWFkaWxsKTogb3RoZXIgcGxhdGZvcm1zCi0rLy8gY2xhbmctZm9y
bWF0IG9mZgotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpCi0rIyAgICBk
ZWZpbmUgT1NfV0lOCi0rI2VsaWYgZGVmaW5lZChBTkRST0lEKQotKyMgICAgZGVmaW5lIE9TX0FO
RFJPSUQKLSsjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKLSsjICAgIGRlZmluZSBPU19MSU5VWAot
KyNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQotKyMgICAgZGVmaW5lIE9TX01BQ09TWAotKyNlbHNl
Ci0rIyAgICBlcnJvciAiVW5zdXBwb3J0ZWQgcGxhdGZvcm0iCi0rI2VuZGlmCi0rLy8gY2xhbmct
Zm9ybWF0IG9uCi0rCi0rI2VuZGlmCi1kaWZmIC1ydXBOIGdwdV90ZXN0X2V4cGVjdGF0aW9uc19y
ZXZlcnRlZC9ncHVfaW5mby5jYyBncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X2luZm8uY2MKLS0t
LSBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQvZ3B1X2luZm8uY2MJMjAxNi0wOC0xMiAy
MToyMzo1NC44ODQxMzI0MDUgLTA0MDAKLSsrKyBncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X2lu
Zm8uY2MJMjAxNS0xMS0zMCAyMTo1NDozMC4yMzkyNjc2MzUgLTA1MDAKLUBAIC0yLDcgKzIsNyBA
QAotIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
IGxpY2Vuc2UgdGhhdCBjYW4gYmUKLSAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotIAot
LSNpbmNsdWRlICJncHUvY29uZmlnL2dwdV9pbmZvLmgiCi0rI2luY2x1ZGUgImdwdV9pbmZvLmgi
Ci0gCi0gbmFtZXNwYWNlIHsKLSAKLUBAIC0xNywzMSArMTcsNiBAQCB2b2lkIEVudW1lcmF0ZUdQ
VURldmljZShjb25zdCBncHU6OkdQVUluCi0gICBlbnVtZXJhdG9yLT5FbmRHUFVEZXZpY2UoKTsK
LSB9Ci0gCi0tdm9pZCBFbnVtZXJhdGVWaWRlb0RlY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJv
ZmlsZSgKLS0gICAgY29uc3QgZ3B1OjpWaWRlb0RlY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJv
ZmlsZSYgcHJvZmlsZSwKLS0gICAgZ3B1OjpHUFVJbmZvOjpFbnVtZXJhdG9yKiBlbnVtZXJhdG9y
KSB7Ci0tICBlbnVtZXJhdG9yLT5CZWdpblZpZGVvRGVjb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQ
cm9maWxlKCk7Ci0tICBlbnVtZXJhdG9yLT5BZGRJbnQoInByb2ZpbGUiLCBwcm9maWxlLnByb2Zp
bGUpOwotLSAgZW51bWVyYXRvci0+QWRkSW50KCJtYXhSZXNvbHV0aW9uV2lkdGgiLCBwcm9maWxl
Lm1heF9yZXNvbHV0aW9uLndpZHRoKCkpOwotLSAgZW51bWVyYXRvci0+QWRkSW50KCJtYXhSZXNv
bHV0aW9uSGVpZ2h0IiwgcHJvZmlsZS5tYXhfcmVzb2x1dGlvbi5oZWlnaHQoKSk7Ci0tICBlbnVt
ZXJhdG9yLT5BZGRJbnQoIm1pblJlc29sdXRpb25XaWR0aCIsIHByb2ZpbGUubWluX3Jlc29sdXRp
b24ud2lkdGgoKSk7Ci0tICBlbnVtZXJhdG9yLT5BZGRJbnQoIm1pblJlc29sdXRpb25IZWlnaHQi
LCBwcm9maWxlLm1pbl9yZXNvbHV0aW9uLmhlaWdodCgpKTsKLS0gIGVudW1lcmF0b3ItPkVuZFZp
ZGVvRGVjb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxlKCk7Ci0tfQotLQotLXZvaWQgRW51
bWVyYXRlVmlkZW9FbmNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGUoCi0tICAgIGNvbnN0
IGdwdTo6VmlkZW9FbmNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGUmIHByb2ZpbGUsCi0t
ICAgIGdwdTo6R1BVSW5mbzo6RW51bWVyYXRvciogZW51bWVyYXRvcikgewotLSAgZW51bWVyYXRv
ci0+QmVnaW5WaWRlb0VuY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZSgpOwotLSAgZW51
bWVyYXRvci0+QWRkSW50KCJwcm9maWxlIiwgcHJvZmlsZS5wcm9maWxlKTsKLS0gIGVudW1lcmF0
b3ItPkFkZEludCgibWF4UmVzb2x1dGlvbldpZHRoIiwgcHJvZmlsZS5tYXhfcmVzb2x1dGlvbi53
aWR0aCgpKTsKLS0gIGVudW1lcmF0b3ItPkFkZEludCgibWF4UmVzb2x1dGlvbkhlaWdodCIsIHBy
b2ZpbGUubWF4X3Jlc29sdXRpb24uaGVpZ2h0KCkpOwotLSAgZW51bWVyYXRvci0+QWRkSW50KCJt
YXhGcmFtZXJhdGVOdW1lcmF0b3IiLCBwcm9maWxlLm1heF9mcmFtZXJhdGVfbnVtZXJhdG9yKTsK
LS0gIGVudW1lcmF0b3ItPkFkZEludCgibWF4RnJhbWVyYXRlRGVub21pbmF0b3IiLAotLSAgICAg
ICAgICAgICAgICAgICAgIHByb2ZpbGUubWF4X2ZyYW1lcmF0ZV9kZW5vbWluYXRvcik7Ci0tICBl
bnVtZXJhdG9yLT5FbmRWaWRlb0VuY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZSgpOwot
LX0KLS0KLSB9ICAvLyBuYW1lc3BhY2UKLSAKLSBuYW1lc3BhY2UgZ3B1IHsKLUBAIC02OCw5ICs0
Myw2IEBAIEdQVUluZm86OkdQVUluZm8oKQotICAgICAgIGluX3Byb2Nlc3NfZ3B1KHRydWUpLAot
ICAgICAgIGJhc2ljX2luZm9fc3RhdGUoa0NvbGxlY3RJbmZvTm9uZSksCi0gICAgICAgY29udGV4
dF9pbmZvX3N0YXRlKGtDb2xsZWN0SW5mb05vbmUpLAotLSNpZiBkZWZpbmVkKE9TX1dJTikKLS0g
ICAgICBkeF9kaWFnbm9zdGljc19pbmZvX3N0YXRlKGtDb2xsZWN0SW5mb05vbmUpLAotLSNlbmRp
ZgotICAgICAgIGpwZWdfZGVjb2RlX2FjY2VsZXJhdG9yX3N1cHBvcnRlZChmYWxzZSkgewotIH0K
LSAKLUBAIC03OCwxMSArNTAsOSBAQCBHUFVJbmZvOjp+R1BVSW5mbygpIHsgfQotIAotIHZvaWQg
R1BVSW5mbzo6RW51bWVyYXRlRmllbGRzKEVudW1lcmF0b3IqIGVudW1lcmF0b3IpIGNvbnN0IHsK
LSAgIHN0cnVjdCBHUFVJbmZvS25vd25GaWVsZHMgewotLSAgICBiYXNlOjpUaW1lRGVsdGEgaW5p
dGlhbGl6YXRpb25fdGltZTsKLSAgICAgYm9vbCBvcHRpbXVzOwotICAgICBib29sIGFtZF9zd2l0
Y2hhYmxlOwotICAgICBib29sIGxlbm92b19kY3V0ZTsKLS0gICAgVmVyc2lvbiBkaXNwbGF5X2xp
bmtfdmVyc2lvbjsKLSAgICAgR1BVRGV2aWNlIGdwdTsKLSAgICAgc3RkOjp2ZWN0b3I8R1BVRGV2
aWNlPiBzZWNvbmRhcnlfZ3B1czsKLSAgICAgdWludDY0IGFkYXB0ZXJfbHVpZDsKLUBAIC0xMTAs
MTQgKzgwLDYgQEAgdm9pZCBHUFVJbmZvOjpFbnVtZXJhdGVGaWVsZHMoRW51bWVyYXRvcgotICAg
ICBib29sIGluX3Byb2Nlc3NfZ3B1OwotICAgICBDb2xsZWN0SW5mb1Jlc3VsdCBiYXNpY19pbmZv
X3N0YXRlOwotICAgICBDb2xsZWN0SW5mb1Jlc3VsdCBjb250ZXh0X2luZm9fc3RhdGU7Ci0tI2lm
IGRlZmluZWQoT1NfV0lOKQotLSAgICBDb2xsZWN0SW5mb1Jlc3VsdCBkeF9kaWFnbm9zdGljc19p
bmZvX3N0YXRlOwotLSAgICBEeERpYWdOb2RlIGR4X2RpYWdub3N0aWNzOwotLSNlbmRpZgotLSAg
ICBWaWRlb0RlY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZXMKLS0gICAgICAgIHZpZGVv
X2RlY29kZV9hY2NlbGVyYXRvcl9zdXBwb3J0ZWRfcHJvZmlsZXM7Ci0tICAgIFZpZGVvRW5jb2Rl
QWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxlcwotLSAgICAgICAgdmlkZW9fZW5jb2RlX2FjY2Vs
ZXJhdG9yX3N1cHBvcnRlZF9wcm9maWxlczsKLSAgICAgYm9vbCBqcGVnX2RlY29kZV9hY2NlbGVy
YXRvcl9zdXBwb3J0ZWQ7Ci0gICB9OwotIAotQEAgLTEzNiwxNSArOTgsOSBAQCB2b2lkIEdQVUlu
Zm86OkVudW1lcmF0ZUZpZWxkcyhFbnVtZXJhdG9yCi0gICAgIEVudW1lcmF0ZUdQVURldmljZShz
ZWNvbmRhcnlfZ3B1LCBlbnVtZXJhdG9yKTsKLSAKLSAgIGVudW1lcmF0b3ItPkJlZ2luQXV4QXR0
cmlidXRlcygpOwotLSAgZW51bWVyYXRvci0+QWRkVGltZURlbHRhSW5TZWNvbmRzRigiaW5pdGlh
bGl6YXRpb25UaW1lIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5p
dGlhbGl6YXRpb25fdGltZSk7Ci0gICBlbnVtZXJhdG9yLT5BZGRCb29sKCJvcHRpbXVzIiwgb3B0
aW11cyk7Ci0gICBlbnVtZXJhdG9yLT5BZGRCb29sKCJhbWRTd2l0Y2hhYmxlIiwgYW1kX3N3aXRj
aGFibGUpOwotICAgZW51bWVyYXRvci0+QWRkQm9vbCgibGVub3ZvRGN1dGUiLCBsZW5vdm9fZGN1
dGUpOwotLSAgaWYgKGRpc3BsYXlfbGlua192ZXJzaW9uLklzVmFsaWQoKSkgewotLSAgICBlbnVt
ZXJhdG9yLT5BZGRTdHJpbmcoImRpc3BsYXlMaW5rVmVyc2lvbiIsCi0tICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaXNwbGF5X2xpbmtfdmVyc2lvbi5HZXRTdHJpbmcoKSk7Ci0tICB9Ci0gICBl
bnVtZXJhdG9yLT5BZGRJbnQ2NCgiYWRhcHRlckx1aWQiLCBhZGFwdGVyX2x1aWQpOwotICAgZW51
bWVyYXRvci0+QWRkU3RyaW5nKCJkcml2ZXJWZW5kb3IiLCBkcml2ZXJfdmVuZG9yKTsKLSAgIGVu
dW1lcmF0b3ItPkFkZFN0cmluZygiZHJpdmVyVmVyc2lvbiIsIGRyaXZlcl92ZXJzaW9uKTsKLUBA
IC0xNzEsMTQgKzEyNyw3IEBAIHZvaWQgR1BVSW5mbzo6RW51bWVyYXRlRmllbGRzKEVudW1lcmF0
b3IKLSAgIGVudW1lcmF0b3ItPkFkZEJvb2woImluUHJvY2Vzc0dwdSIsIGluX3Byb2Nlc3NfZ3B1
KTsKLSAgIGVudW1lcmF0b3ItPkFkZEludCgiYmFzaWNJbmZvU3RhdGUiLCBiYXNpY19pbmZvX3N0
YXRlKTsKLSAgIGVudW1lcmF0b3ItPkFkZEludCgiY29udGV4dEluZm9TdGF0ZSIsIGNvbnRleHRf
aW5mb19zdGF0ZSk7Ci0tI2lmIGRlZmluZWQoT1NfV0lOKQotLSAgZW51bWVyYXRvci0+QWRkSW50
KCJEeERpYWdub3N0aWNzSW5mb1N0YXRlIiwgZHhfZGlhZ25vc3RpY3NfaW5mb19zdGF0ZSk7Ci0t
I2VuZGlmCi0gICAvLyBUT0RPKGticik6IGFkZCBkeF9kaWFnbm9zdGljcyBvbiBXaW5kb3dzLgot
LSAgZm9yIChjb25zdCBhdXRvJiBwcm9maWxlIDogdmlkZW9fZGVjb2RlX2FjY2VsZXJhdG9yX3N1
cHBvcnRlZF9wcm9maWxlcykKLS0gICAgRW51bWVyYXRlVmlkZW9EZWNvZGVBY2NlbGVyYXRvclN1
cHBvcnRlZFByb2ZpbGUocHJvZmlsZSwgZW51bWVyYXRvcik7Ci0tICBmb3IgKGNvbnN0IGF1dG8m
IHByb2ZpbGUgOiB2aWRlb19lbmNvZGVfYWNjZWxlcmF0b3Jfc3VwcG9ydGVkX3Byb2ZpbGVzKQot
LSAgICBFbnVtZXJhdGVWaWRlb0VuY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZShwcm9m
aWxlLCBlbnVtZXJhdG9yKTsKLSAgIGVudW1lcmF0b3ItPkFkZEJvb2woImpwZWdEZWNvZGVBY2Nl
bGVyYXRvclN1cHBvcnRlZCIsCi0gICAgICAganBlZ19kZWNvZGVfYWNjZWxlcmF0b3Jfc3VwcG9y
dGVkKTsKLSAgIGVudW1lcmF0b3ItPkVuZEF1eEF0dHJpYnV0ZXMoKTsKLWRpZmYgLXJ1cE4gZ3B1
X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVydGVkL2dwdV9pbmZvLmggZ3B1X3Rlc3RfZXhwZWN0YXRp
b25zL2dwdV9pbmZvLmgKLS0tLSBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQvZ3B1X2lu
Zm8uaAkyMDE2LTA4LTEyIDIxOjIzOjU0Ljg4NDEzMjQwNSAtMDQwMAotKysrIGdwdV90ZXN0X2V4
cGVjdGF0aW9ucy9ncHVfaW5mby5oCTIwMTUtMTEtMzAgMjE6NTQ6MzAuMjM5MjY3NjM1IC0wNTAw
Ci1AQCAtMTEsMTMgKzExLDcgQEAKLSAjaW5jbHVkZSA8c3RyaW5nPgotICNpbmNsdWRlIDx2ZWN0
b3I+Ci0gCi0tI2luY2x1ZGUgImJhc2UvYmFzaWN0eXBlcy5oIgotLSNpbmNsdWRlICJiYXNlL3Rp
bWUvdGltZS5oIgotLSNpbmNsdWRlICJiYXNlL3ZlcnNpb24uaCIKLS0jaW5jbHVkZSAiYnVpbGQv
YnVpbGRfY29uZmlnLmgiCi0tI2luY2x1ZGUgImdwdS9jb25maWcvZHhfZGlhZ19ub2RlLmgiCi0t
I2luY2x1ZGUgImdwdS9ncHVfZXhwb3J0LmgiCi0tI2luY2x1ZGUgInVpL2dmeC9nZW9tZXRyeS9z
aXplLmgiCi0rI2luY2x1ZGUgImFuZ2xlX2NvbmZpZy5oIgotIAotIG5hbWVzcGFjZSBncHUgewot
IAotQEAgLTU0LDI1ICs0OCw2IEBAIGVudW0gVmlkZW9Db2RlY1Byb2ZpbGUgewotICAgVklERU9f
Q09ERUNfUFJPRklMRV9NQVggPSBWUDlQUk9GSUxFX0FOWSwKLSB9OwotIAotLS8vIFNwZWNpZmlj
YXRpb24gb2YgYSBkZWNvZGluZyBwcm9maWxlIHN1cHBvcnRlZCBieSBhIGhhcmR3YXJlIGRlY29k
ZXIuCi0tc3RydWN0IEdQVV9FWFBPUlQgVmlkZW9EZWNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFBy
b2ZpbGUgewotLSAgVmlkZW9Db2RlY1Byb2ZpbGUgcHJvZmlsZTsKLS0gIGdmeDo6U2l6ZSBtYXhf
cmVzb2x1dGlvbjsKLS0gIGdmeDo6U2l6ZSBtaW5fcmVzb2x1dGlvbjsKLS19OwotLXVzaW5nIFZp
ZGVvRGVjb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxlcyA9Ci0tICAgIHN0ZDo6dmVjdG9y
PFZpZGVvRGVjb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9maWxlPjsKLS0KLS0vLyBTcGVjaWZp
Y2F0aW9uIG9mIGFuIGVuY29kaW5nIHByb2ZpbGUgc3VwcG9ydGVkIGJ5IGEgaGFyZHdhcmUgZW5j
b2Rlci4KLS1zdHJ1Y3QgR1BVX0VYUE9SVCBWaWRlb0VuY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVk
UHJvZmlsZSB7Ci0tICBWaWRlb0NvZGVjUHJvZmlsZSBwcm9maWxlOwotLSAgZ2Z4OjpTaXplIG1h
eF9yZXNvbHV0aW9uOwotLSAgdWludDMyIG1heF9mcmFtZXJhdGVfbnVtZXJhdG9yOwotLSAgdWlu
dDMyIG1heF9mcmFtZXJhdGVfZGVub21pbmF0b3I7Ci0tfTsKLS11c2luZyBWaWRlb0VuY29kZUFj
Y2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZXMgPQotLSAgICBzdGQ6OnZlY3RvcjxWaWRlb0VuY29k
ZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZT47Ci0tCi0gc3RydWN0IEdQVV9FWFBPUlQgR1BV
SW5mbyB7Ci0gICBzdHJ1Y3QgR1BVX0VYUE9SVCBHUFVEZXZpY2UgewotICAgICBHUFVEZXZpY2Uo
KTsKLUBAIC0xMDQsMTAgKzc5LDYgQEAgc3RydWN0IEdQVV9FWFBPUlQgR1BVSW5mbyB7Ci0gICAg
IHJldHVybiAhY2FuX2xvc2VfY29udGV4dCAmJiAhc29mdHdhcmVfcmVuZGVyaW5nOwotICAgfQot
IAotLSAgLy8gVGhlIGFtb3VudCBvZiB0aW1lIHRha2VuIHRvIGdldCBmcm9tIHRoZSBwcm9jZXNz
IHN0YXJ0aW5nIHRvIHRoZSBtZXNzYWdlCi0tICAvLyBsb29wIGJlaW5nIHB1bXBlZC4KLS0gIGJh
c2U6OlRpbWVEZWx0YSBpbml0aWFsaXphdGlvbl90aW1lOwotLQotICAgLy8gQ29tcHV0ZXIgaGFz
IE5WSURJQSBPcHRpbXVzCi0gICBib29sIG9wdGltdXM7Ci0gCi1AQCAtMTE3LDEwICs4OCw2IEBA
IHN0cnVjdCBHUFVfRVhQT1JUIEdQVUluZm8gewotICAgLy8gTGVub3ZvIGRDdXRlIGlzIGluc3Rh
bGxlZC4gaHR0cDovL2NyYnVnLmNvbS8xODE2NjUuCi0gICBib29sIGxlbm92b19kY3V0ZTsKLSAK
LS0gIC8vIFZlcnNpb24gb2YgRGlzcGxheUxpbmsgZHJpdmVyIGluc3RhbGxlZC4gWmVybyBpZiBu
b3QgaW5zdGFsbGVkLgotLSAgLy8gaHR0cDovL2NyYnVnLmNvbS8xNzc2MTEuCi0tICBWZXJzaW9u
IGRpc3BsYXlfbGlua192ZXJzaW9uOwotLQotICAgLy8gUHJpbWFyeSBHUFUsIGZvciBleG1hcGxl
LCB0aGUgZGlzY3JldGUgR1BVIGluIGEgZHVhbCBHUFUgbWFjaGluZS4KLSAgIEdQVURldmljZSBn
cHU7Ci0gCi1AQCAtMjEzLDE3ICsxODAsNyBAQCBzdHJ1Y3QgR1BVX0VYUE9SVCBHUFVJbmZvIHsK
LSAgIC8vIGlmIHRoZSBjb2xsZWN0aW9uIGZhaWxzIG9yIG5vdC4KLSAgIENvbGxlY3RJbmZvUmVz
dWx0IGJhc2ljX2luZm9fc3RhdGU7Ci0gICBDb2xsZWN0SW5mb1Jlc3VsdCBjb250ZXh0X2luZm9f
c3RhdGU7Ci0tI2lmIGRlZmluZWQoT1NfV0lOKQotLSAgQ29sbGVjdEluZm9SZXN1bHQgZHhfZGlh
Z25vc3RpY3NfaW5mb19zdGF0ZTsKLSAKLS0gIC8vIFRoZSBpbmZvcm1hdGlvbiByZXR1cm5lZCBi
eSB0aGUgRGlyZWN0WCBEaWFnbm9zdGljcyBUb29sLgotLSAgRHhEaWFnTm9kZSBkeF9kaWFnbm9z
dGljczsKLS0jZW5kaWYKLS0KLS0gIFZpZGVvRGVjb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQcm9m
aWxlcwotLSAgICAgIHZpZGVvX2RlY29kZV9hY2NlbGVyYXRvcl9zdXBwb3J0ZWRfcHJvZmlsZXM7
Ci0tICBWaWRlb0VuY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZXMKLS0gICAgICB2aWRl
b19lbmNvZGVfYWNjZWxlcmF0b3Jfc3VwcG9ydGVkX3Byb2ZpbGVzOwotICAgYm9vbCBqcGVnX2Rl
Y29kZV9hY2NlbGVyYXRvcl9zdXBwb3J0ZWQ7Ci0gCi0gICAvLyBOb3RlOiB3aGVuIGFkZGluZyBu
ZXcgbWVtYmVycywgcGxlYXNlIHJlbWVtYmVyIHRvIHVwZGF0ZSBFbnVtZXJhdGVGaWVsZHMKLUBA
IC0yNDMsOCArMjAwLDYgQEAgc3RydWN0IEdQVV9FWFBPUlQgR1BVSW5mbyB7Ci0gICAgIHZpcnR1
YWwgdm9pZCBBZGRJbnQoY29uc3QgY2hhciogbmFtZSwgaW50IHZhbHVlKSA9IDA7Ci0gICAgIHZp
cnR1YWwgdm9pZCBBZGRTdHJpbmcoY29uc3QgY2hhciogbmFtZSwgY29uc3Qgc3RkOjpzdHJpbmcm
IHZhbHVlKSA9IDA7Ci0gICAgIHZpcnR1YWwgdm9pZCBBZGRCb29sKGNvbnN0IGNoYXIqIG5hbWUs
IGJvb2wgdmFsdWUpID0gMDsKLS0gICAgdmlydHVhbCB2b2lkIEFkZFRpbWVEZWx0YUluU2Vjb25k
c0YoY29uc3QgY2hhciogbmFtZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgYmFzZTo6VGltZURlbHRhJiB2YWx1ZSkgPSAwOwotIAotICAgICAvLyBNYXJr
ZXJzIGluZGljYXRpbmcgdGhhdCBhIEdQVURldmljZSBpcyBiZWluZyBkZXNjcmliZWQuCi0gICAg
IHZpcnR1YWwgdm9pZCBCZWdpbkdQVURldmljZSgpID0gMDsKLWRpZmYgLXJ1cE4gZ3B1X3Rlc3Rf
ZXhwZWN0YXRpb25zX3JldmVydGVkL2dwdV90ZXN0X2NvbmZpZy5jYyBncHVfdGVzdF9leHBlY3Rh
dGlvbnMvZ3B1X3Rlc3RfY29uZmlnLmNjCi0tLS0gZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVy
dGVkL2dwdV90ZXN0X2NvbmZpZy5jYwkyMDE2LTA4LTEyIDIxOjIzOjU0Ljg4NDEzMjQwNSAtMDQw
MAotKysrIGdwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWcuY2MJMjAxNi0wOS0w
OSAxNjo0MDowNS41OTc4NjQ0NjUgLTA0MDAKLUBAIC0yLDIwICsyLDIwNSBAQAotIC8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKLSAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotIAotLSNpbmNsdWRlICJn
cHUvY29uZmlnL2dwdV90ZXN0X2NvbmZpZy5oIgotKyNpbmNsdWRlICJncHVfdGVzdF9jb25maWcu
aCIKLSAKLS0jaW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgiCi0tI2luY2x1ZGUgImJhc2Uvc3lzX2lu
Zm8uaCIKLS0jaW5jbHVkZSAiZ3B1L2NvbmZpZy9ncHVfaW5mby5oIgotLSNpbmNsdWRlICJncHUv
Y29uZmlnL2dwdV9pbmZvX2NvbGxlY3Rvci5oIgotLSNpbmNsdWRlICJncHUvY29uZmlnL2dwdV90
ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIuaCIKLSsjaW5jbHVkZSAiZ3B1X2luZm8uaCIKLSsjaW5j
bHVkZSAiZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNlci5oIgotKwotKyNpZiBkZWZpbmVkKE9T
X0xJTlVYKQotK2V4dGVybiAiQyIgewotKyMgICBpbmNsdWRlIDxwY2kvcGNpLmg+Ci0rfQotKyNl
bmRpZgotIAotICNpZiBkZWZpbmVkKE9TX01BQ09TWCkKLS0jaW5jbHVkZSAiYmFzZS9tYWMvbWFj
X3V0aWwuaCIKLS0jZWxpZiBkZWZpbmVkKE9TX1dJTikKLS0jaW5jbHVkZSAiYmFzZS93aW4vd2lu
ZG93c192ZXJzaW9uLmgiCi0rI2luY2x1ZGUgImdwdV90ZXN0X2NvbmZpZ19tYWMuaCIKLSsjZW5k
aWYKLSsKLSt1c2luZyBuYW1lc3BhY2UgZ3B1OwotKwotKyNpZiBkZWZpbmVkKE9TX1dJTikKLSsK
LStuYW1lc3BhY2UgYmFzZSB7Ci0rCi0rbmFtZXNwYWNlIHsKLSsKLSsvLyBEaXNhYmxlIHRoZSBk
ZXByZWNhdGVkIGZ1bmN0aW9uIHdhcm5pbmcgZm9yIEdldFZlcnNpb25FeAotKyNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlOiA0OTk2KQotKwotK2NsYXNzIFN5c0luZm8KLSt7Ci0rICBwdWJsaWM6Ci0r
ICAgIHN0YXRpYyB2b2lkIE9wZXJhdGluZ1N5c3RlbVZlcnNpb25OdW1iZXJzKAotKyAgICAgICAg
aW50MzIgKm1ham9yX3ZlcnNpb24sIGludDMyICptaW5vcl92ZXJzaW9uLCBpbnQzMiAqYnVnZml4
X3ZlcnNpb24pOwotK307Ci0rCi0rLy8gc3RhdGljCi0rdm9pZCBTeXNJbmZvOjpPcGVyYXRpbmdT
eXN0ZW1WZXJzaW9uTnVtYmVycygKLSsgICAgaW50MzIgKm1ham9yX3ZlcnNpb24sIGludDMyICpt
aW5vcl92ZXJzaW9uLCBpbnQzMiAqYnVnZml4X3ZlcnNpb24pCi0rewotKyAgT1NWRVJTSU9OSU5G
T0VYIHZlcnNpb25faW5mbyA9IHsgc2l6ZW9mIHZlcnNpb25faW5mbyB9OwotKyAgOjpHZXRWZXJz
aW9uRXgocmVpbnRlcnByZXRfY2FzdDxPU1ZFUlNJT05JTkZPKj4oJnZlcnNpb25faW5mbykpOwot
KyAgKm1ham9yX3ZlcnNpb24gPSB2ZXJzaW9uX2luZm8uZHdNYWpvclZlcnNpb247Ci0rICAqbWlu
b3JfdmVyc2lvbiA9IHZlcnNpb25faW5mby5kd01pbm9yVmVyc2lvbjsKLSsgICpidWdmaXhfdmVy
c2lvbiA9IHZlcnNpb25faW5mby5kd0J1aWxkTnVtYmVyOwotK30KLSsKLSt9IC8vIGFub255bW91
cyBuYW1lc3BhY2UKLSsKLSt9IC8vIG5hbWVzcGFjZSBiYXNlCi0rCi0rdm9pZCBEZXZpY2VJRFRv
VmVuZG9yQW5kRGV2aWNlKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZCwKLSsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdWludDMyKiB2ZW5kb3JfaWQsCi0rICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVpbnQzMiogZGV2aWNlX2lkKSB7Ci0rICAqdmVuZG9yX2lkID0gMDsKLSsgICpk
ZXZpY2VfaWQgPSAwOwotKyAgaWYgKGlkLmxlbmd0aCgpIDwgMjEpCi0rICAgIHJldHVybjsKLSsg
IHN0ZDo6c3RyaW5nIHZlbmRvcl9pZF9zdHJpbmcgPSBpZC5zdWJzdHIoOCwgNCk7Ci0rICBzdGQ6
OnN0cmluZyBkZXZpY2VfaWRfc3RyaW5nID0gaWQuc3Vic3RyKDE3LCA0KTsKLSsgIGJhc2U6Okhl
eFN0cmluZ1RvVUludCh2ZW5kb3JfaWRfc3RyaW5nLCB2ZW5kb3JfaWQpOwotKyAgYmFzZTo6SGV4
U3RyaW5nVG9VSW50KGRldmljZV9pZF9zdHJpbmcsIGRldmljZV9pZCk7Ci0rfQotKwotK0NvbGxl
Y3RJbmZvUmVzdWx0IENvbGxlY3RHcHVJRCh1aW50MzIqIHZlbmRvcl9pZCwgdWludDMyKiBkZXZp
Y2VfaWQpIHsKLSsgIERDSEVDSyh2ZW5kb3JfaWQgJiYgZGV2aWNlX2lkKTsKLSsgICp2ZW5kb3Jf
aWQgPSAwOwotKyAgKmRldmljZV9pZCA9IDA7Ci0rCi0rICAvLyBUYWtlbiBmcm9tIGh0dHA6Ly9k
ZXZlbG9wZXIubnZpZGlhLmNvbS9vYmplY3QvZGV2aWNlX2lkcy5odG1sCi0rICBESVNQTEFZX0RF
VklDRUEgZGQ7Ci0rICBkZC5jYiA9IHNpemVvZihESVNQTEFZX0RFVklDRUEpOwotKyAgc3RkOjpz
dHJpbmcgaWQ7Ci0rICBmb3IgKGludCBpID0gMDsgRW51bURpc3BsYXlEZXZpY2VzQShOVUxMLCBp
LCAmZGQsIDApOyArK2kpIHsKLSsgICAgaWYgKGRkLlN0YXRlRmxhZ3MgJiBESVNQTEFZX0RFVklD
RV9QUklNQVJZX0RFVklDRSkgewotKyAgICAgIGlkID0gZGQuRGV2aWNlSUQ7Ci0rICAgICAgYnJl
YWs7Ci0rICAgIH0KLSsgIH0KLSsKLSsgIGlmIChpZC5sZW5ndGgoKSA+IDIwKSB7Ci0rICAgIERl
dmljZUlEVG9WZW5kb3JBbmREZXZpY2UoaWQsIHZlbmRvcl9pZCwgZGV2aWNlX2lkKTsKLSsgICAg
aWYgKCp2ZW5kb3JfaWQgIT0gMCAmJiAqZGV2aWNlX2lkICE9IDApCi0rICAgICAgcmV0dXJuIGtD
b2xsZWN0SW5mb1N1Y2Nlc3M7Ci0rICB9Ci0rICByZXR1cm4ga0NvbGxlY3RJbmZvTm9uRmF0YWxG
YWlsdXJlOwotK30KLSsKLSsjZW5kaWYgLy8gZGVmaW5lZChPU19XSU4pCi0rCi0rI2lmIGRlZmlu
ZWQoT1NfTElOVVgpCi0rCi0rY29uc3QgdWludDMyIGtWZW5kb3JJREludGVsID0gMHg4MDg2Owot
K2NvbnN0IHVpbnQzMiBrVmVuZG9ySUROVmlkaWEgPSAweDEwZGU7Ci0rY29uc3QgdWludDMyIGtW
ZW5kb3JJREFNRCA9IDB4MTAwMjsKLSsKLStDb2xsZWN0SW5mb1Jlc3VsdCBDb2xsZWN0UENJVmlk
ZW9DYXJkSW5mbyhHUFVJbmZvKiBncHVfaW5mbykgewotKyAgRENIRUNLKGdwdV9pbmZvKTsKLSsK
LSsgIHN0cnVjdCBwY2lfYWNjZXNzKiBhY2Nlc3MgPSBwY2lfYWxsb2MoKTsKLSsgIERDSEVDSyhh
Y2Nlc3MgIT0gTlVMTCk7Ci0rICBwY2lfaW5pdChhY2Nlc3MpOwotKyAgcGNpX3NjYW5fYnVzKGFj
Y2Vzcyk7Ci0rCi0rICBib29sIHByaW1hcnlfZ3B1X2lkZW50aWZpZWQgPSBmYWxzZTsKLSsgIGZv
ciAocGNpX2RldiogZGV2aWNlID0gYWNjZXNzLT5kZXZpY2VzOwotKyAgICAgICBkZXZpY2UgIT0g
TlVMTDsgZGV2aWNlID0gZGV2aWNlLT5uZXh0KSB7Ci0rICAgIHBjaV9maWxsX2luZm8oZGV2aWNl
LCAzMyk7Ci0rICAgIGJvb2wgaXNfZ3B1ID0gZmFsc2U7Ci0rICAgIHN3aXRjaCAoZGV2aWNlLT5k
ZXZpY2VfY2xhc3MpIHsKLSsgICAgICBjYXNlIFBDSV9DTEFTU19ESVNQTEFZX1ZHQToKLSsgICAg
ICBjYXNlIFBDSV9DTEFTU19ESVNQTEFZX1hHQToKLSsgICAgICBjYXNlIFBDSV9DTEFTU19ESVNQ
TEFZXzNEOgotKyAgICAgICAgaXNfZ3B1ID0gdHJ1ZTsKLSsgICAgICAgIGJyZWFrOwotKyAgICAg
IGNhc2UgUENJX0NMQVNTX0RJU1BMQVlfT1RIRVI6Ci0rICAgICAgZGVmYXVsdDoKLSsgICAgICAg
IGJyZWFrOwotKyAgICB9Ci0rICAgIGlmICghaXNfZ3B1KQotKyAgICAgIGNvbnRpbnVlOwotKyAg
ICBpZiAoZGV2aWNlLT52ZW5kb3JfaWQgPT0gMCB8fCBkZXZpY2UtPmRldmljZV9pZCA9PSAwKQot
KyAgICAgIGNvbnRpbnVlOwotKwotKyAgICBHUFVJbmZvOjpHUFVEZXZpY2UgZ3B1OwotKyAgICBn
cHUudmVuZG9yX2lkID0gZGV2aWNlLT52ZW5kb3JfaWQ7Ci0rICAgIGdwdS5kZXZpY2VfaWQgPSBk
ZXZpY2UtPmRldmljZV9pZDsKLSsKLSsgICAgaWYgKCFwcmltYXJ5X2dwdV9pZGVudGlmaWVkKSB7
Ci0rICAgICAgcHJpbWFyeV9ncHVfaWRlbnRpZmllZCA9IHRydWU7Ci0rICAgICAgZ3B1X2luZm8t
PmdwdSA9IGdwdTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAvLyBUT0RPKHptbyk6IGlmIHRoZXJl
IGFyZSBtdWx0aXBsZSBHUFVzLCB3ZSBhc3N1bWUgdGhlIG5vbiBJbnRlbAotKyAgICAgIC8vIG9u
ZSBpcyBwcmltYXJ5LiBSZXZpc2l0IHRoaXMgbG9naWMgYmVjYXVzZSB3ZSBhY3R1YWxseSBkb24n
dCBrbm93Ci0rICAgICAgLy8gd2hpY2ggR1BVIHdlIGFyZSB1c2luZyBhdCB0aGlzIHBvaW50Lgot
KyAgICAgIGlmIChncHVfaW5mby0+Z3B1LnZlbmRvcl9pZCA9PSBrVmVuZG9ySURJbnRlbCAmJgot
KyAgICAgICAgICBncHUudmVuZG9yX2lkICE9IGtWZW5kb3JJREludGVsKSB7Ci0rICAgICAgICBn
cHVfaW5mby0+c2Vjb25kYXJ5X2dwdXMucHVzaF9iYWNrKGdwdV9pbmZvLT5ncHUpOwotKyAgICAg
ICAgZ3B1X2luZm8tPmdwdSA9IGdwdTsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgZ3B1X2lu
Zm8tPnNlY29uZGFyeV9ncHVzLnB1c2hfYmFjayhncHUpOwotKyAgICAgIH0KLSsgICAgfQotKyAg
fQotKwotKyAgLy8gRGV0ZWN0IE9wdGltdXMgb3IgQU1EIFN3aXRjaGFibGUgR1BVLgotKyAgaWYg
KGdwdV9pbmZvLT5zZWNvbmRhcnlfZ3B1cy5zaXplKCkgPT0gMSAmJgotKyAgICAgIGdwdV9pbmZv
LT5zZWNvbmRhcnlfZ3B1c1swXS52ZW5kb3JfaWQgPT0ga1ZlbmRvcklESW50ZWwpIHsKLSsgICAg
aWYgKGdwdV9pbmZvLT5ncHUudmVuZG9yX2lkID09IGtWZW5kb3JJRE5WaWRpYSkKLSsgICAgICBn
cHVfaW5mby0+b3B0aW11cyA9IHRydWU7Ci0rICAgIGlmIChncHVfaW5mby0+Z3B1LnZlbmRvcl9p
ZCA9PSBrVmVuZG9ySURBTUQpCi0rICAgICAgZ3B1X2luZm8tPmFtZF9zd2l0Y2hhYmxlID0gdHJ1
ZTsKLSsgIH0KLSsKLSsgIHBjaV9jbGVhbnVwKGFjY2Vzcyk7Ci0rICBpZiAoIXByaW1hcnlfZ3B1
X2lkZW50aWZpZWQpCi0rICAgIHJldHVybiBrQ29sbGVjdEluZm9Ob25GYXRhbEZhaWx1cmU7Ci0r
ICByZXR1cm4ga0NvbGxlY3RJbmZvU3VjY2VzczsKLSt9Ci0rCi0rQ29sbGVjdEluZm9SZXN1bHQg
Q29sbGVjdEdwdUlEKHVpbnQzMiogdmVuZG9yX2lkLCB1aW50MzIqIGRldmljZV9pZCkgewotKyAg
RENIRUNLKHZlbmRvcl9pZCAmJiBkZXZpY2VfaWQpOwotKyAgKnZlbmRvcl9pZCA9IDA7Ci0rICAq
ZGV2aWNlX2lkID0gMDsKLSsKLSsgIEdQVUluZm8gZ3B1X2luZm87Ci0rICBDb2xsZWN0SW5mb1Jl
c3VsdCByZXN1bHQgPSBDb2xsZWN0UENJVmlkZW9DYXJkSW5mbygmZ3B1X2luZm8pOwotKyAgaWYg
KHJlc3VsdCA9PSBrQ29sbGVjdEluZm9TdWNjZXNzKSB7Ci0rICAgICp2ZW5kb3JfaWQgPSBncHVf
aW5mby5ncHUudmVuZG9yX2lkOwotKyAgICAqZGV2aWNlX2lkID0gZ3B1X2luZm8uZ3B1LmRldmlj
ZV9pZDsKLSsgIH0KLSsgIHJldHVybiByZXN1bHQ7Ci0rfQotKwotKyNlbmRpZiAvLyBkZWZpbmVk
KE9TX0xJTlVYKQotKwotKyNpZiBkZWZpbmVkKE9TX01BQ09TWCkKLSsKLStDb2xsZWN0SW5mb1Jl
c3VsdCBDb2xsZWN0R3B1SUQodWludDMyKiB2ZW5kb3JfaWQsIHVpbnQzMiogZGV2aWNlX2lkKSB7
Ci0rICBEQ0hFQ0sodmVuZG9yX2lkICYmIGRldmljZV9pZCk7Ci0rCi0rICBHUFVJbmZvOjpHUFVE
ZXZpY2UgZ3B1ID0gR2V0QWN0aXZlR1BVKCk7Ci0rICAqdmVuZG9yX2lkID0gZ3B1LnZlbmRvcl9p
ZDsKLSsgICpkZXZpY2VfaWQgPSBncHUuZGV2aWNlX2lkOwotKwotKyAgaWYgKCp2ZW5kb3JfaWQg
IT0gMCAmJiAqZGV2aWNlX2lkICE9IDApCi0rICAgIHJldHVybiBrQ29sbGVjdEluZm9TdWNjZXNz
OwotKyAgcmV0dXJuIGtDb2xsZWN0SW5mb05vbkZhdGFsRmFpbHVyZTsKLSt9Ci0rCi0gI2VuZGlm
Ci0gCi0rI2lmIGRlZmluZWQoT1NfQU5EUk9JRCkKLStDb2xsZWN0SW5mb1Jlc3VsdCBDb2xsZWN0
R3B1SUQodWludDMyICp2ZW5kb3JfaWQsIHVpbnQzMiAqZGV2aWNlX2lkKQotK3sKLSsgICAgRENI
RUNLKHZlbmRvcl9pZCAmJiBkZXZpY2VfaWQpOwotKyAgICAqdmVuZG9yX2lkID0gMDsKLSsgICAg
KmRldmljZV9pZCA9IDA7Ci0rICAgIHJldHVybiBrQ29sbGVjdEluZm9Ob25GYXRhbEZhaWx1cmU7
Ci0rfQotKyNlbmRpZiAgLy8gZGVmaW5lZChPU19BTkRST0lEKQotKwotIG5hbWVzcGFjZSBncHUg
ewotIAotIG5hbWVzcGFjZSB7Ci1AQCAtMjQ1LDMzICs0MzAsNDEgQEAgYm9vbCBHUFVUZXN0Qm90
Q29uZmlnOjpNYXRjaGVzKGNvbnN0IHN0ZAotICAgcmV0dXJuIE1hdGNoZXMoY29uZmlnKTsKLSB9
Ci0gCi0tYm9vbCBHUFVUZXN0Qm90Q29uZmlnOjpMb2FkQ3VycmVudENvbmZpZyhjb25zdCBHUFVJ
bmZvKiBncHVfaW5mbykgewotLSAgYm9vbCBydDsKLS0gIGlmIChncHVfaW5mbyA9PSBOVUxMKSB7
Ci0tICAgIEdQVUluZm8gbXlfZ3B1X2luZm87Ci0tICAgIENvbGxlY3RJbmZvUmVzdWx0IHJlc3Vs
dCA9IENvbGxlY3RHcHVJRCgKLS0gICAgICAgICZteV9ncHVfaW5mby5ncHUudmVuZG9yX2lkLCAm
bXlfZ3B1X2luZm8uZ3B1LmRldmljZV9pZCk7Ci0tICAgIGlmIChyZXN1bHQgIT0ga0NvbGxlY3RJ
bmZvU3VjY2VzcykgewotLSAgICAgIExPRyhFUlJPUikgPDwgIkZhaWwgdG8gaWRlbnRpZnkgR1BV
IjsKLS0gICAgICBEaXNhYmxlR1BVSW5mb1ZhbGlkYXRpb24oKTsKLS0gICAgICBydCA9IHRydWU7
Ci0tICAgIH0gZWxzZSB7Ci0tICAgICAgcnQgPSBTZXRHUFVJbmZvKG15X2dwdV9pbmZvKTsKLSti
b29sIEdQVVRlc3RCb3RDb25maWc6OkxvYWRDdXJyZW50Q29uZmlnKGNvbnN0IEdQVUluZm8gKmdw
dV9pbmZvKQotK3sKLSsgICAgYm9vbCBydDsKLSsgICAgaWYgKGdwdV9pbmZvID09IE5VTEwpCi0r
ICAgIHsKLSsgICAgICAgIEdQVUluZm8gbXlfZ3B1X2luZm87Ci0rICAgICAgICBDb2xsZWN0SW5m
b1Jlc3VsdCByZXN1bHQgPQotKyAgICAgICAgICAgIENvbGxlY3RHcHVJRCgmbXlfZ3B1X2luZm8u
Z3B1LnZlbmRvcl9pZCwgJm15X2dwdV9pbmZvLmdwdS5kZXZpY2VfaWQpOwotKyAgICAgICAgaWYg
KHJlc3VsdCAhPSBrQ29sbGVjdEluZm9TdWNjZXNzKQotKyAgICAgICAgewotKyAgICAgICAgICAg
IExPRyhFUlJPUikgPDwgIkZhaWwgdG8gaWRlbnRpZnkgR1BVXG4iOwotKyAgICAgICAgICAgIERp
c2FibGVHUFVJbmZvVmFsaWRhdGlvbigpOwotKyAgICAgICAgICAgIHJ0ID0gdHJ1ZTsKLSsgICAg
ICAgIH0KLSsgICAgICAgIGVsc2UKLSsgICAgICAgIHsKLSsgICAgICAgICAgICBydCA9IFNldEdQ
VUluZm8obXlfZ3B1X2luZm8pOwotKyAgICAgICAgfQotKyAgICB9Ci0rICAgIGVsc2UKLSsgICAg
ewotKyAgICAgICAgcnQgPSBTZXRHUFVJbmZvKCpncHVfaW5mbyk7Ci0rICAgIH0KLSsgICAgc2V0
X29zKEdldEN1cnJlbnRPUygpKTsKLSsgICAgaWYgKG9zKCkgPT0ga09zVW5rbm93bikKLSsgICAg
ewotKyAgICAgICAgTE9HKEVSUk9SKSA8PCAiVW5rbm93biBPU1xuIjsKLSsgICAgICAgIHJ0ID0g
ZmFsc2U7Ci0gICAgIH0KLS0gIH0gZWxzZSB7Ci0tICAgIHJ0ID0gU2V0R1BVSW5mbygqZ3B1X2lu
Zm8pOwotLSAgfQotLSAgc2V0X29zKEdldEN1cnJlbnRPUygpKTsKLS0gIGlmIChvcygpID09IGtP
c1Vua25vd24pIHsKLS0gICAgTE9HKEVSUk9SKSA8PCAiVW5rbm93biBPUyI7Ci0tICAgIHJ0ID0g
ZmFsc2U7Ci0tICB9Ci0gI2lmIGRlZmluZWQoTkRFQlVHKQotLSAgc2V0X2J1aWxkX3R5cGUoa0J1
aWxkVHlwZVJlbGVhc2UpOwotKyAgICBzZXRfYnVpbGRfdHlwZShrQnVpbGRUeXBlUmVsZWFzZSk7
Ci0gI2Vsc2UKLS0gIHNldF9idWlsZF90eXBlKGtCdWlsZFR5cGVEZWJ1Zyk7Ci0rICAgIHNldF9i
dWlsZF90eXBlKGtCdWlsZFR5cGVEZWJ1Zyk7Ci0gI2VuZGlmCi0tICByZXR1cm4gcnQ7Ci0rICAg
IHJldHVybiBydDsKLSB9Ci0gCi0gLy8gc3RhdGljCi1AQCAtMjk1LDIxICs0ODgsNSBAQCBib29s
IEdQVVRlc3RCb3RDb25maWc6OkN1cnJlbnRDb25maWdNYXRjCi0gICByZXR1cm4gZmFsc2U7Ci0g
fQotIAotLS8vIHN0YXRpYwotLWJvb2wgR1BVVGVzdEJvdENvbmZpZzo6R3B1QmxhY2tsaXN0ZWRP
bkJvdCgpIHsKLS0jaWYgZGVmaW5lZChPU19NQUNPU1gpCi0tICAvLyBCbGFja2xpc3QgcnVsZSAj
ODEgZGlzYWJsZXMgYWxsIEdwdSBhY2NlbGVyYXRpb24gb24gTWFjIDwgMTAuOCBib3RzLgotLSAg
aWYgKEN1cnJlbnRDb25maWdNYXRjaGVzKCJNQUMgVk1XQVJFIikgJiYgYmFzZTo6bWFjOjpJc09T
TGlvbk9yRWFybGllcigpKSB7Ci0tICAgIHJldHVybiB0cnVlOwotLSAgfQotLSNlbGlmIGRlZmlu
ZWQoT1NfV0lOKQotLSAgLy8gQmxhY2tsaXN0IHJ1bGUgIzc5IGRpc2FibGVzIGFsbCBHcHUgYWNj
ZWxlcmF0aW9uIGJlZm9yZSBXaW5kb3dzIDcuCi0tICBpZiAoYmFzZTo6d2luOjpHZXRWZXJzaW9u
KCkgPD0gYmFzZTo6d2luOjpWRVJTSU9OX1ZJU1RBKSB7Ci0tICAgIHJldHVybiB0cnVlOwotLSAg
fQotLSNlbmRpZgotLSAgcmV0dXJuIGZhbHNlOwotLX0KLS0KLSB9ICAvLyBuYW1lc3BhY2UgZ3B1
Ci0gCi1kaWZmIC1ydXBOIGdwdV90ZXN0X2V4cGVjdGF0aW9uc19yZXZlcnRlZC9ncHVfdGVzdF9j
b25maWcuaCBncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnLmgKLS0tLSBncHVf
dGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQvZ3B1X3Rlc3RfY29uZmlnLmgJMjAxNi0wOC0xMiAy
MToyMzo1NC44ODQxMzI0MDUgLTA0MDAKLSsrKyBncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rl
c3RfY29uZmlnLmgJMjAxNS0xMS0zMCAyMTo1NDozMC4yMzkyNjc2MzUgLTA1MDAKLUBAIC04LDkg
KzgsNyBAQAotICNpbmNsdWRlIDxzdHJpbmc+Ci0gI2luY2x1ZGUgPHZlY3Rvcj4KLSAKLS0jaW5j
bHVkZSAiYmFzZS9iYXNpY3R5cGVzLmgiCi0tI2luY2x1ZGUgImJhc2UvY29tcGlsZXJfc3BlY2lm
aWMuaCIKLS0jaW5jbHVkZSAiZ3B1L2dwdV9leHBvcnQuaCIKLSsjaW5jbHVkZSAiYW5nbGVfY29u
ZmlnLmgiCi0gCi0gbmFtZXNwYWNlIGdwdSB7Ci0gCi1AQCAtMTM0LDkgKzEzMiw2IEBAIGNsYXNz
IEdQVV9FWFBPUlQgR1BVVGVzdEJvdENvbmZpZyA6IHB1YmwKLSAgIC8vIENoZWNrIGlmIHRoaXMg
Ym90J3MgY29uZmlnIG1hdGNoZXMgfGNvbmZpZ19kYXRhfCBvciBhbnkgb2YgdGhlIHxjb25maWdz
fC4KLSAgIHN0YXRpYyBib29sIEN1cnJlbnRDb25maWdNYXRjaGVzKGNvbnN0IHN0ZDo6c3RyaW5n
JiBjb25maWdfZGF0YSk7Ci0gICBzdGF0aWMgYm9vbCBDdXJyZW50Q29uZmlnTWF0Y2hlcyhjb25z
dCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGNvbmZpZ3MpOwotLQotLSAgLy8gQ2hlY2sgaWYg
dGhlIGJvdCBoYXMgYmxhY2tsaXN0ZWQgYWxsIEdQVSBmZWF0dXJlcy4KLS0gIHN0YXRpYyBib29s
IEdwdUJsYWNrbGlzdGVkT25Cb3QoKTsKLSB9OwotIAotIH0gIC8vIG5hbWVzcGFjZSBncHUKLWRp
ZmYgLXJ1cE4gZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVydGVkL2dwdV90ZXN0X2NvbmZpZ19t
YWMuaCBncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnX21hYy5oCi0tLS0gZ3B1
X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVydGVkL2dwdV90ZXN0X2NvbmZpZ19tYWMuaAkxOTY5LTEy
LTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGdwdV90ZXN0X2V4cGVjdGF0aW9ucy9n
cHVfdGVzdF9jb25maWdfbWFjLmgJMjAxNS0xMS0zMCAyMTo1NDozMC4yMzkyNjc2MzUgLTA1MDAK
LUBAIC0wLDAgKzEsMjggQEAKLSsvLwotKy8vIENvcHlyaWdodCAyMDE1IFRoZSBBTkdMRSBQcm9q
ZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0rLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotKy8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0rLy8KLSsvLyBncHVfdGVzdF9jb25maWdfbWFj
Lmg6Ci0rLy8gICBIZWxwZXIgZnVuY3Rpb25zIGZvciBncHVfdGVzdF9jb25maWcgdGhhdCBoYXZl
IHRvIGJlIGNvbXBpbGVkIGluIE9iamVjdGl2ZUMrKwotKy8vCi0rCi0rI2lmbmRlZiBHUFVfVEVT
VF9FWFBFQ1RBVElPTlNfR1BVX1RFU1RfQ09ORklHX01BQ19IXwotKyNkZWZpbmUgR1BVX1RFU1Rf
RVhQRUNUQVRJT05TX0dQVV9URVNUX0NPTkZJR19NQUNfSF8KLSsKLSsjaW5jbHVkZSAiZ3B1X2lu
Zm8uaCIKLSsKLStuYW1lc3BhY2UgYmFzZSB7Ci0rCi0rY2xhc3MgU3lzSW5mbwotK3sKLSsgIHB1
YmxpYzoKLSsgICAgc3RhdGljIHZvaWQgT3BlcmF0aW5nU3lzdGVtVmVyc2lvbk51bWJlcnMoCi0r
ICAgICAgICBpbnQzMiAqbWFqb3JfdmVyc2lvbiwgaW50MzIgKm1pbm9yX3ZlcnNpb24sIGludDMy
ICpidWdmaXhfdmVyc2lvbik7Ci0rfTsKLSsKLSt9IC8vIG5hbWVzcGFjZSBiYXNlCi0rCi0rZ3B1
OjpHUFVJbmZvOjpHUFVEZXZpY2UgR2V0QWN0aXZlR1BVKCk7Ci0rCi0rI2VuZGlmIC8vIEdQVV9U
RVNUX0VYUEVDVEFUSU9OU19HUFVfVEVTVF9DT05GSUdfTUFDX0hfCi1kaWZmIC1ydXBOIGdwdV90
ZXN0X2V4cGVjdGF0aW9uc19yZXZlcnRlZC9ncHVfdGVzdF9jb25maWdfbWFjLm1tIGdwdV90ZXN0
X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWdfbWFjLm1tCi0tLS0gZ3B1X3Rlc3RfZXhwZWN0
YXRpb25zX3JldmVydGVkL2dwdV90ZXN0X2NvbmZpZ19tYWMubW0JMTk2OS0xMi0zMSAxOTowMDow
MC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29u
ZmlnX21hYy5tbQkyMDE1LTExLTMwIDIxOjU0OjMwLjIzOTI2NzYzNSAtMDUwMAotQEAgLTAsMCAr
MSw2NyBAQAotKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSsvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0rLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KLSsKLSsvLyBncHVfdGVzdF9jb25maWdfbWFjLm1tOgotKy8vICAgSGVscGVy
IGZ1bmN0aW9ucyBmb3IgZ3B1X3Rlc3RfY29uZmlnIHRoYXQgaGF2ZSB0byBiZSBjb21waWxlZCBp
biBPYmplY3RpdmVDKysKLSsKLSsjaW5jbHVkZSAiZ3B1X3Rlc3RfY29uZmlnX21hYy5oIgotKwot
KyNpbXBvcnQgPENvY29hL0NvY29hLmg+Ci0rCi0rbmFtZXNwYWNlIGJhc2UgewotKwotK3ZvaWQg
U3lzSW5mbzo6T3BlcmF0aW5nU3lzdGVtVmVyc2lvbk51bWJlcnMoCi0rICAgIGludDMyICptYWpv
cl92ZXJzaW9uLCBpbnQzMiAqbWlub3JfdmVyc2lvbiwgaW50MzIgKmJ1Z2ZpeF92ZXJzaW9uKQot
K3sKLSsjaWYgTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCBNQUNfT1NfWF9WRVJTSU9O
XzEwXzgKLSsgIEdlc3RhbHQoZ2VzdGFsdFN5c3RlbVZlcnNpb25NYWpvciwgcmVpbnRlcnByZXRf
Y2FzdDxTSW50MzIqPihtYWpvcl92ZXJzaW9uKSk7Ci0rICBHZXN0YWx0KGdlc3RhbHRTeXN0ZW1W
ZXJzaW9uTWlub3IsIHJlaW50ZXJwcmV0X2Nhc3Q8U0ludDMyKj4obWlub3JfdmVyc2lvbikpOwot
KyAgR2VzdGFsdChnZXN0YWx0U3lzdGVtVmVyc2lvbkJ1Z0ZpeCwgcmVpbnRlcnByZXRfY2FzdDxT
SW50MzIqPihidWdmaXhfdmVyc2lvbikpOwotKyNlbHNlCi0rICBOU09wZXJhdGluZ1N5c3RlbVZl
cnNpb24gdmVyc2lvbiA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gb3BlcmF0aW5nU3lz
dGVtVmVyc2lvbl07Ci0rICAqbWFqb3JfdmVyc2lvbiA9IHZlcnNpb24ubWFqb3JWZXJzaW9uOwot
KyAgKm1pbm9yX3ZlcnNpb24gPSB2ZXJzaW9uLm1pbm9yVmVyc2lvbjsKLSsgICpidWdmaXhfdmVy
c2lvbiA9IHZlcnNpb24ucGF0Y2hWZXJzaW9uOwotKyNlbmRpZgotK30KLSsKLSt9IC8vIG5hbWVz
cGFjZSBiYXNlCi0rCi0rVUludDMyIEdldEVudHJ5UHJvcGVydHkoaW9fcmVnaXN0cnlfZW50cnlf
dCBlbnRyeSwgQ0ZTdHJpbmdSZWYgcHJvcGVydHlfbmFtZSkgewotKyAgQ0ZUeXBlUmVmIHR5cGUg
PSBJT1JlZ2lzdHJ5RW50cnlTZWFyY2hDRlByb3BlcnR5KGVudHJ5LAotKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtJT1NlcnZpY2VQbGFuZSwKLSsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0
eV9uYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGtDRkFsbG9jYXRvckRlZmF1bHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga0lPUmVnaXN0cnlJdGVyYXRlUmVjdXJzaXZlbHkgfCBrSU9S
ZWdpc3RyeUl0ZXJhdGVQYXJlbnRzKTsKLSsgIENGRGF0YVJlZiBkYXRhID0gcmVpbnRlcnByZXRf
Y2FzdDxDRkRhdGFSZWY+KHR5cGUpOwotKyAgaWYgKCFkYXRhKSB7Ci0rICAgIENGUmVsZWFzZShk
YXRhKTsKLSsgICAgcmV0dXJuIDA7Ci0rICB9Ci0rCi0rICBVSW50MzIgdmFsdWUgPSAwOwotKyAg
Y29uc3QgdWludDMyX3QqIHZhbHVlUG9pbnRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWlu
dDMyX3QqPihDRkRhdGFHZXRCeXRlUHRyKGRhdGEpKTsKLSsgIGlmICh2YWx1ZVBvaW50ZXIgIT0g
TlVMTCkgewotKyAgICB2YWx1ZSA9ICp2YWx1ZVBvaW50ZXI7Ci0rICB9Ci0rICBDRlJlbGVhc2Uo
ZGF0YSk7Ci0rICByZXR1cm4gdmFsdWU7Ci0rfQotKwotK2dwdTo6R1BVSW5mbzo6R1BVRGV2aWNl
IEdldEFjdGl2ZUdQVSgpIHsKLSsgIGdwdTo6R1BVSW5mbzo6R1BVRGV2aWNlIGdwdTsKLSsKLSsg
IC8vIElnbm9yZSB0aGUgZmFjdCB0aGF0IENHRGlzcGxheUlPU2VydmljZVBvcnQgaXMgZGVwcmVj
YXRlZCBhcyBBcHBsZQotKyAgLy8gZGlkIG5vdCBwcm92aWRlIGEgZ29vZCByZXBsYWNlbWVudCBm
b3IgaXQgYXMgb2YgMTAuMTAuCi0rICAvLyBUT0RPKGN3YWxsZXopIHJldmlzaXQgd2l0aCBsYXRl
ciBzeXN0ZW1zCi0rICAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotKyAgI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0rICAg
IGlvX3JlZ2lzdHJ5X2VudHJ5X3QgZHNwX3BvcnQgPSBDR0Rpc3BsYXlJT1NlcnZpY2VQb3J0KGtD
R0RpcmVjdE1haW5EaXNwbGF5KTsKLSsgICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSsK
LSsgIGdwdS52ZW5kb3JfaWQgPSBHZXRFbnRyeVByb3BlcnR5KGRzcF9wb3J0LCBDRlNUUigidmVu
ZG9yLWlkIikpOwotKyAgZ3B1LmRldmljZV9pZCA9IEdldEVudHJ5UHJvcGVydHkoZHNwX3BvcnQs
IENGU1RSKCJkZXZpY2UtaWQiKSk7Ci0rICByZXR1cm4gZ3B1OwotK30KLSsKLWRpZmYgLXJ1cE4g
Z3B1X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVydGVkL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJz
ZXIuY2MgZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIu
Y2MKLS0tLSBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQvZ3B1X3Rlc3RfZXhwZWN0YXRp
b25zX3BhcnNlci5jYwkyMDE2LTA4LTEyIDIxOjIzOjU0Ljg4NDEzMjQwNSAtMDQwMAotKysrIGdw
dV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9leHBlY3RhdGlvbnNfcGFyc2VyLmNjCTIwMTUt
MTEtMzAgMjE6NTQ6MzAuMjM5MjY3NjM1IC0wNTAwCi1AQCAtMiwxNCArMiw0MyBAQAotIC8vIFVz
ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug
dGhhdCBjYW4gYmUKLSAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotIAotLSNpbmNsdWRl
ICJncHUvY29uZmlnL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIuaCIKLSsjaW5jbHVkZSAi
Z3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNlci5oIgotIAotLSNpbmNsdWRlICJiYXNlL2ZpbGVz
L2ZpbGVfdXRpbC5oIgotLSNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKLS0jaW5jbHVkZSAiYmFz
ZS9zdHJpbmdzL3N0cmluZ19udW1iZXJfY29udmVyc2lvbnMuaCIKLS0jaW5jbHVkZSAiYmFzZS9z
dHJpbmdzL3N0cmluZ19zcGxpdC5oIgotLSNpbmNsdWRlICJiYXNlL3N0cmluZ3Mvc3RyaW5nX3V0
aWwuaCIKLS0jaW5jbHVkZSAiYmFzZS9zdHJpbmdzL3N0cmluZ3ByaW50Zi5oIgotKyNpbmNsdWRl
ICJjb21tb24vYW5nbGV1dGlscy5oIgotKwotK25hbWVzcGFjZSBiYXNlIHsKLSsKLStuYW1lc3Bh
Y2UgewotKwotK2Jvb2wgU3RhcnRzV2l0aEFTQ0lJKGNvbnN0IHN0ZDo6c3RyaW5nJiBzdHIsCi0r
ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHNlYXJjaCwKLSsgICAgICAg
ICAgICAgICAgICAgICBib29sIGNhc2Vfc2Vuc2l0aXZlKSB7Ci0rICBBU1NFUlQoIWNhc2Vfc2Vu
c2l0aXZlKTsKLSsgIHJldHVybiBzdHIuY29tcGFyZSgwLCBzZWFyY2gubGVuZ3RoKCksIHNlYXJj
aCkgPT0gMDsKLSt9Ci0rCi0rdGVtcGxhdGUgPGNsYXNzIENoYXI+IGlubGluZSBDaGFyIFRvTG93
ZXJBU0NJSShDaGFyIGMpIHsKLSsgIHJldHVybiAoYyA+PSAnQScgJiYgYyA8PSAnWicpID8gKGMg
KyAoJ2EnIC0gJ0EnKSkgOiBjOwotK30KLSsKLSt0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyPgotK3N0
YXRpYyBpbmxpbmUgYm9vbCBEb0xvd2VyQ2FzZUVxdWFsc0FTQ0lJKEl0ZXIgYV9iZWdpbiwKLSsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyIGFfZW5kLAotKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGIpIHsK
LSsgIGZvciAoSXRlciBpdCA9IGFfYmVnaW47IGl0ICE9IGFfZW5kOyArK2l0LCArK2IpIHsKLSsg
ICAgaWYgKCEqYiB8fCBiYXNlOjpUb0xvd2VyQVNDSUkoKml0KSAhPSAqYikKLSsgICAgICByZXR1
cm4gZmFsc2U7Ci0rICB9Ci0rICByZXR1cm4gKmIgPT0gMDsKLSt9Ci0rCi0rYm9vbCBMb3dlckNh
c2VFcXVhbHNBU0NJSShjb25zdCBzdGQ6OnN0cmluZyYgYSwgY29uc3QgY2hhciogYikgewotKyAg
cmV0dXJuIERvTG93ZXJDYXNlRXF1YWxzQVNDSUkoYS5iZWdpbigpLCBhLmVuZCgpLCBiKTsKLSt9
Ci0rCi0rfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCi0rCi0rfSAvLyBuYW1lc3BhY2UgYmFzZQot
IAotIG5hbWVzcGFjZSBncHUgewotIAotQEAgLTE0Niw5ICsxNzUsOSBAQCBjb25zdCBjaGFyKiBr
RXJyb3JNZXNzYWdlW10gPSB7Ci0gfTsKLSAKLSBUb2tlbiBQYXJzZVRva2VuKGNvbnN0IHN0ZDo6
c3RyaW5nJiB3b3JkKSB7Ci0tICBpZiAoYmFzZTo6U3RhcnRzV2l0aCh3b3JkLCAiLy8iLCBiYXNl
OjpDb21wYXJlQ2FzZTo6SU5TRU5TSVRJVkVfQVNDSUkpKQotKyAgaWYgKGJhc2U6OlN0YXJ0c1dp
dGhBU0NJSSh3b3JkLCAiLy8iLCBmYWxzZSkpCi0gICAgIHJldHVybiBrVG9rZW5Db21tZW50Owot
LSAgaWYgKGJhc2U6OlN0YXJ0c1dpdGgod29yZCwgIjB4IiwgYmFzZTo6Q29tcGFyZUNhc2U6OklO
U0VOU0lUSVZFX0FTQ0lJKSkKLSsgIGlmIChiYXNlOjpTdGFydHNXaXRoQVNDSUkod29yZCwgIjB4
IiwgZmFsc2UpKQotICAgICByZXR1cm4ga0NvbmZpZ0dQVURldmljZUlEOwotIAotICAgZm9yIChp
bnQzMiBpID0gMDsgaSA8IGtOdW1iZXJPZkV4YWN0TWF0Y2hUb2tlbnM7ICsraSkgewotQEAgLTE3
NiwxMCArMjA1LDEwIEBAIGJvb2wgTmFtZXNNYXRjaGluZyhjb25zdCBzdGQ6OnN0cmluZyYgcmUK
LSAKLSBHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjpHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2Vy
KCkgewotICAgLy8gU29tZSBzYW5pdHkgY2hlY2suCi0tICBEQ0hFQ0tfRVEoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgaW50PihrTnVtYmVyT2ZFeGFjdE1hdGNoVG9rZW5zKSwKLS0gICAgICAgICAgICBz
aXplb2Yoa1Rva2VuRGF0YSkgLyBzaXplb2Yoa1Rva2VuRGF0YVswXSkpOwotLSAgRENIRUNLX0VR
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oa051bWJlck9mRXJyb3JzKSwKLS0gICAgICAgICAg
ICBzaXplb2Yoa0Vycm9yTWVzc2FnZSkgLyBzaXplb2Yoa0Vycm9yTWVzc2FnZVswXSkpOwotKyAg
c3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGtOdW1iZXJPZkV4YWN0TWF0
Y2hUb2tlbnMpID09Ci0rICAgICAgICAgICAgICAgIHNpemVvZihrVG9rZW5EYXRhKSAvIHNpemVv
ZihrVG9rZW5EYXRhWzBdKSwgInNhbml0eSBjaGVjayIpOwotKyAgc3RhdGljX2Fzc2VydChzdGF0
aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGtOdW1iZXJPZkVycm9ycykgPT0KLSsgICAgICAgICAgICAg
ICAgc2l6ZW9mKGtFcnJvck1lc3NhZ2UpIC8gc2l6ZW9mKGtFcnJvck1lc3NhZ2VbMF0pLCAic2Fu
aXR5IGNoZWNrIik7Ci0gfQotIAotIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6On5HUFVUZXN0
RXhwZWN0YXRpb25zUGFyc2VyKCkgewotQEAgLTIwNCw4ICsyMzMsOCBAQCBib29sIEdQVVRlc3RF
eHBlY3RhdGlvbnNQYXJzZXI6OkxvYWRUZXN0Ci0gICByZXR1cm4gcnQ7Ci0gfQotIAotLWJvb2wg
R1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6TG9hZFRlc3RFeHBlY3RhdGlvbnMoCi0tICAgIGNv
bnN0IGJhc2U6OkZpbGVQYXRoJiBwYXRoKSB7Ci0rYm9vbCBHUFVUZXN0RXhwZWN0YXRpb25zUGFy
c2VyOjpMb2FkVGVzdEV4cGVjdGF0aW9uc0Zyb21GaWxlKAotKyAgICBjb25zdCBzdGQ6OnN0cmlu
ZyYgcGF0aCkgewotICAgZW50cmllc18uY2xlYXIoKTsKLSAgIGVycm9yX21lc3NhZ2VzXy5jbGVh
cigpOwotIAotQEAgLTM5OSw3ICs0MjgsNyBAQCBib29sIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJz
ZXI6OlBhcnNlTGluCi0gICAgICAgICAgIHN0YWdlKys7Ci0gICAgICAgICBicmVhazsKLSAgICAg
ICBkZWZhdWx0OgotLSAgICAgICAgRENIRUNLKGZhbHNlKTsKLSsgICAgICAgIFVOUkVBQ0hBQkxF
KCk7Ci0gICAgICAgICBicmVhazsKLSAgICAgfQotICAgfQotQEAgLTQ4OCw3ICs1MTcsNyBAQCBi
b29sIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OlVwZGF0ZVRlCi0gICAgICAgY29uZmlnLT5z
ZXRfYXBpKGNvbmZpZy0+YXBpKCkgfCBrVG9rZW5EYXRhW3Rva2VuXS5mbGFnKTsKLSAgICAgICBi
cmVhazsKLSAgICAgZGVmYXVsdDoKLS0gICAgICBEQ0hFQ0soZmFsc2UpOwotKyAgICAgIFVOUkVB
Q0hBQkxFKCk7Ci0gICAgICAgYnJlYWs7Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsKLWRpZmYgLXJ1
cE4gZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVydGVkL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19w
YXJzZXIuaCBncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNl
ci5oCi0tLS0gZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3JldmVydGVkL2dwdV90ZXN0X2V4cGVjdGF0
aW9uc19wYXJzZXIuaAkyMDE2LTA4LTEyIDIxOjIzOjU0Ljg4NDEzMjQwNSAtMDQwMAotKysrIGdw
dV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9leHBlY3RhdGlvbnNfcGFyc2VyLmgJMjAxNS0x
MS0zMCAyMTo1NDozMC4yMzkyNjc2MzUgLTA1MDAKLUBAIC04LDEwICs4LDggQEAKLSAjaW5jbHVk
ZSA8c3RyaW5nPgotICNpbmNsdWRlIDx2ZWN0b3I+Ci0gCi0tI2luY2x1ZGUgImJhc2UvYmFzaWN0
eXBlcy5oIgotLSNpbmNsdWRlICJiYXNlL2ZpbGVzL2ZpbGVfcGF0aC5oIgotLSNpbmNsdWRlICJn
cHUvY29uZmlnL2dwdV90ZXN0X2NvbmZpZy5oIgotLSNpbmNsdWRlICJncHUvZ3B1X2V4cG9ydC5o
IgotKyNpbmNsdWRlICJhbmdsZV9jb25maWcuaCIKLSsjaW5jbHVkZSAiZ3B1X3Rlc3RfY29uZmln
LmgiCi0gCi0gbmFtZXNwYWNlIGdwdSB7Ci0gCi1AQCAtMzIsNyArMzAsNyBAQCBjbGFzcyBHUFVf
RVhQT1JUIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzCi0gICAvLyBzYXZlIGFsbCB0aGUgZW50cmll
cy4gT3RoZXJ3aXNlLCBnZW5lcmF0ZSBlcnJvciBtZXNzYWdlcy4KLSAgIC8vIFJldHVybiB0cnVl
IGlmIHBhcnNpbmcgc3VjY2VlZHMuCi0gICBib29sIExvYWRUZXN0RXhwZWN0YXRpb25zKGNvbnN0
IHN0ZDo6c3RyaW5nJiBkYXRhKTsKLS0gIGJvb2wgTG9hZFRlc3RFeHBlY3RhdGlvbnMoY29uc3Qg
YmFzZTo6RmlsZVBhdGgmIHBhdGgpOwotKyAgYm9vbCBMb2FkVGVzdEV4cGVjdGF0aW9uc0Zyb21G
aWxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoKTsKLSAKLSAgIC8vIFF1ZXJ5IGVycm9yIG1lc3Nh
Z2VzIGZyb20gdGhlIGxhc3QgTG9hZFRlc3RFeHBlY3RhdGlvbnMoKSBjYWxsLgotICAgY29uc3Qg
c3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiBHZXRFcnJvck1lc3NhZ2VzKCkgY29uc3Q7Ci1kaWZm
IC1ydXBOIGdwdV90ZXN0X2V4cGVjdGF0aW9uc19yZXZlcnRlZC9Ib3dUb01ha2VDaGFuZ2VzLm1k
IGdwdV90ZXN0X2V4cGVjdGF0aW9ucy9Ib3dUb01ha2VDaGFuZ2VzLm1kCi0tLS0gZ3B1X3Rlc3Rf
ZXhwZWN0YXRpb25zX3JldmVydGVkL0hvd1RvTWFrZUNoYW5nZXMubWQJMTk2OS0xMi0zMSAxOTow
MDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBncHVfdGVzdF9leHBlY3RhdGlvbnMvSG93VG9NYWtl
Q2hhbmdlcy5tZAkyMDE2LTA5LTA5IDE2OjI3OjU2LjU3NTgwOTkyMSAtMDQwMAotQEAgLTAsMCAr
MSwyMiBAQAotK0JlY2F1c2UgdGhlIGBgYGdwdV90ZXN0X2V4cGVjdGF0aW9uc2BgYCBkaXJlY3Rv
cnkgaXMgYmFzZWQgb24gcGFydHMgb2YgQ2hyb21pdW0ncyBgYGBncHUvY29uZmlnYGBgCi0rZGly
ZWN0b3J5LCB3ZSB3YW50IHRvIGtlZXAgYSBwYXRjaCBvZiB0aGUgY2hhbmdlcyBhZGRlZCB0byBt
YWtlIGl0IGNvbXBpbGUgd2l0aCBBTkdMRS4gVGhpcwotK3dpbGwgYWxsb3cgdXMgdG8gbWVyZ2Ug
Q2hyb21pdW0gY2hhbmdlcyBlYXNpbHkgaW4gb3VyIGBgYGdwdV90ZXN0X2V4cGVjdGF0aW9uc2Bg
YC4KLSsKLStJbiBvcmRlciB0byBtYWtlIGEgY2hhbmdlIHRvIHRoaXMgZGlyZWN0b3J5LCBkbyB0
aGUgZm9sbG93aW5nOgotKwotKyAqIGNvcHkgdGhlIGRpcmVjdG9yeSBzb21ld2hlcmUgbGlrZSBp
biBgYGBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWRgYGAKLSsgKiBpbiBgYGBncHVfdGVz
dF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWRgYGAgcnVuIGBgYHBhdGNoIC1wIDEgLVIgPCBhbmdsZS1t
b2RzLnBhdGNoYGBgCi0rICogZG8geW91ciBjaGFuZ2VzIGluIGBgYGdwdV90ZXN0X2V4cGVjdGF0
aW9uc2BgYAotKyAqIGRlbGV0ZSBhbmdsZS1tb2RzLnBhdGNoIGluIGJvdGggZGlyZWN0b3JpZXMK
LSsgKiBydW4gYGBgZGlmZiAtcnVwTiBncHVfdGVzdF9leHBlY3RhdGlvbnNfcmV2ZXJ0ZWQgZ3B1
X3Rlc3RfZXhwZWN0YXRpb25zID4gYW5nbGUtbW9kcy5wYXRjaGBgYAotKyAqIGNvcHkgYGBgYW5n
bGUtbW9kcy5wYXRjaGBgYCBpbiBgYGBncHVfdGVzdF9leHBlY3RhdGlvbnNgYGAKLSsKLStIb3cg
dG8gdXBkYXRlIGZyb20gQ2hyb21pdW06Ci0rCi0rICogYGBgZ2l0IGFwcGx5IC1SIGFuZ2xlLW1v
ZHMucGF0Y2hgYGAsIGBgYGdpdCBhZGQgLiAtdWBgYCwgYGBgZ2l0IGNvbW1pdGBgYAotKyAqIENv
cHkgb3ZlciBDaHJvbWl1bSBmaWxlcywgYGBgZ2l0IGFkZCAuIC11YGBgLCBgYGBnaXQgY29tbWl0
YGBgCi0rICogYGBgZ2l0IHJldmVydCBIRUFEfmBgYAotKyAqIGBgYHJtIGFuZ2xlLW1vZHMucGF0
Y2hgYGAKLSsgKiBgYGBnaXQgZGlmZiBIRUFEfiAoYClscyhgKSA+IGFuZ2xlLW1vZHMucGF0Y2hg
YGAsYGBgZ2l0IGFkZCBhbmdsZS1tb2RzLnBhdGNoYGBgLCBgYGBnaXQgY29tbWl0IC0tYW1lbmRg
YGAKLSsgKiBgYGBnaXQgcmViYXNlIC1pYGBgIHRvIHNxdWFzaCB0aGUgdGhyZWUgcGF0Y2hlcyBp
bnRvIG9uZS4KLSsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvYW5nbGVfY29uZmlnLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0
YXRpb25zL2FuZ2xlX2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTQ2
Zjk4Y2NkNi4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9hbmdsZV9jb25maWcuaAorKysg
L2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBhbmdsZV9jb25maWcuaDoK
LS8vICAgSGVscGVycyBmb3IgaW1wb3J0aW5nIHRoZSBncHUgdGVzdCBleHBlY3RhdGlvbnMgcGFj
a2FnZSBmcm9tIENocm9tZS4KLS8vCi0KLSNpZm5kZWYgR1BVX1RFU1RfRVhQRUNUQVRJT05TX0FO
R0xFX0NPTkZJR19IXwotI2RlZmluZSBHUFVfVEVTVF9FWFBFQ1RBVElPTlNfQU5HTEVfQ09ORklH
X0hfCi0KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLQotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi0jaW5j
bHVkZSAiY29tbW9uL2RlYnVnLmgiCi0jaW5jbHVkZSAiY29tbW9uL3N0cmluZ191dGlscy5oIgot
Ci0jZGVmaW5lIERDSEVDS19FUShBLEIpIEFTU0VSVCgoQSkgPT0gKEIpKQotI2RlZmluZSBEQ0hF
Q0tfTkUoQSxCKSBBU1NFUlQoKEEpICE9IChCKSkKLSNkZWZpbmUgRENIRUNLKFgpIEFTU0VSVChY
KQotI2RlZmluZSBMT0coWCkgc3RkOjpjZXJyCi0KLSNkZWZpbmUgR1BVX0VYUE9SVAotCi10eXBl
ZGVmIGludDMyX3QgaW50MzI7Ci10eXBlZGVmIHVpbnQzMl90IHVpbnQzMjsKLXR5cGVkZWYgaW50
NjRfdCBpbnQ2NDsKLXR5cGVkZWYgdWludDY0X3QgdWludDY0OwotCi0vLyBTaGltIENocm9taXVt
J3MgYmFzZSBieSBpbXBvcnRpbmcgZnVuY3Rpb25zIGluIHRoZSBiYXNlIG5hbWVzcGFjZS4KLW5h
bWVzcGFjZSBiYXNlCi17Ci0gICAgdXNpbmcgYW5nbGU6OmtXaGl0ZXNwYWNlQVNDSUk7Ci0gICAg
dXNpbmcgYW5nbGU6OlRSSU1fV0hJVEVTUEFDRTsKLSAgICB1c2luZyBhbmdsZTo6S0VFUF9XSElU
RVNQQUNFOwotICAgIHVzaW5nIGFuZ2xlOjpTUExJVF9XQU5UX0FMTDsKLSAgICB1c2luZyBhbmds
ZTo6U1BMSVRfV0FOVF9OT05FTVBUWTsKLSAgICB1c2luZyBhbmdsZTo6U3BsaXRTdHJpbmc7Ci0g
ICAgdXNpbmcgYW5nbGU6OlNwbGl0U3RyaW5nQWxvbmdXaGl0ZXNwYWNlOwotICAgIHVzaW5nIGFu
Z2xlOjpIZXhTdHJpbmdUb1VJbnQ7Ci0gICAgdXNpbmcgYW5nbGU6OlJlYWRGaWxlVG9TdHJpbmc7
Ci0KLSAgICAvLyBTdHJpbmdQcmludGYgaXMgY2FsbGVkIGRpZmZlcmVudGx5IGluIEFOR0xFIGJ1
dCB1c2luZyBjYW5ub3QgY2hhbmdlCi0gICAgLy8gdGhlIG5hbWUgb2YgdGhlIGltcG9ydGVkIGZ1
bmN0aW9uLiBVc2UgYSBkZWZpbmUgdG8gY2hhbmdlIHRoZSBuYW1lLgotICAgIHVzaW5nIDo6Rm9y
bWF0U3RyaW5nOwotICAgICNkZWZpbmUgU3RyaW5nUHJpbnRmIEZvcm1hdFN0cmluZwotfQotCi0v
LyBUT0RPKGptYWRpbGwpOiBvdGhlciBwbGF0Zm9ybXMKLS8vIGNsYW5nLWZvcm1hdCBvZmYKLSNp
ZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfV0lONjQpCi0jICAgIGRlZmluZSBPU19XSU4K
LSNlbGlmIGRlZmluZWQoQU5EUk9JRCkKLSMgICAgZGVmaW5lIE9TX0FORFJPSUQKLSNlbGlmIGRl
ZmluZWQoX19saW51eF9fKQotIyAgICBkZWZpbmUgT1NfTElOVVgKLSNlbGlmIGRlZmluZWQoX19B
UFBMRV9fKQotIyAgICBkZWZpbmUgT1NfTUFDT1NYCi0jZWxzZQotIyAgICBlcnJvciAiVW5zdXBw
b3J0ZWQgcGxhdGZvcm0iCi0jZW5kaWYKLS8vIGNsYW5nLWZvcm1hdCBvbgotCi0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9n
cHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X2luZm8uY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV9pbmZvLmNj
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjI3OWE0MjkwYy4uMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90
ZXN0X2V4cGVjdGF0aW9ucy9ncHVfaW5mby5jYworKysgL2Rldi9udWxsCkBAIC0xLDEzNiArMCww
IEBACi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0vLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgotCi0jaW5jbHVkZSAiZ3B1X2luZm8uaCIKLQotbmFtZXNwYWNlIHsKLQotdm9pZCBFbnVt
ZXJhdGVHUFVEZXZpY2UoY29uc3QgZ3B1OjpHUFVJbmZvOjpHUFVEZXZpY2UmIGRldmljZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGdwdTo6R1BVSW5mbzo6RW51bWVyYXRvciogZW51bWVyYXRv
cikgewotICBlbnVtZXJhdG9yLT5CZWdpbkdQVURldmljZSgpOwotICBlbnVtZXJhdG9yLT5BZGRJ
bnQoInZlbmRvcklkIiwgZGV2aWNlLnZlbmRvcl9pZCk7Ci0gIGVudW1lcmF0b3ItPkFkZEludCgi
ZGV2aWNlSWQiLCBkZXZpY2UuZGV2aWNlX2lkKTsKLSAgZW51bWVyYXRvci0+QWRkQm9vbCgiYWN0
aXZlIiwgZGV2aWNlLmFjdGl2ZSk7Ci0gIGVudW1lcmF0b3ItPkFkZFN0cmluZygidmVuZG9yU3Ry
aW5nIiwgZGV2aWNlLnZlbmRvcl9zdHJpbmcpOwotICBlbnVtZXJhdG9yLT5BZGRTdHJpbmcoImRl
dmljZVN0cmluZyIsIGRldmljZS5kZXZpY2Vfc3RyaW5nKTsKLSAgZW51bWVyYXRvci0+RW5kR1BV
RGV2aWNlKCk7Ci19Ci0KLX0gIC8vIG5hbWVzcGFjZQotCi1uYW1lc3BhY2UgZ3B1IHsKLQotR1BV
SW5mbzo6R1BVRGV2aWNlOjpHUFVEZXZpY2UoKQotICAgIDogdmVuZG9yX2lkKDApLAotICAgICAg
ZGV2aWNlX2lkKDApLAotICAgICAgYWN0aXZlKGZhbHNlKSB7Ci19Ci0KLUdQVUluZm86OkdQVURl
dmljZTo6fkdQVURldmljZSgpIHsgfQotCi1HUFVJbmZvOjpHUFVJbmZvKCkKLSAgICA6IG9wdGlt
dXMoZmFsc2UpLAotICAgICAgYW1kX3N3aXRjaGFibGUoZmFsc2UpLAotICAgICAgbGVub3ZvX2Rj
dXRlKGZhbHNlKSwKLSAgICAgIGFkYXB0ZXJfbHVpZCgwKSwKLSAgICAgIGdsX3Jlc2V0X25vdGlm
aWNhdGlvbl9zdHJhdGVneSgwKSwKLSAgICAgIGNhbl9sb3NlX2NvbnRleHQoZmFsc2UpLAotICAg
ICAgc29mdHdhcmVfcmVuZGVyaW5nKGZhbHNlKSwKLSAgICAgIGRpcmVjdF9yZW5kZXJpbmcodHJ1
ZSksCi0gICAgICBzYW5kYm94ZWQoZmFsc2UpLAotICAgICAgcHJvY2Vzc19jcmFzaF9jb3VudCgw
KSwKLSAgICAgIGluX3Byb2Nlc3NfZ3B1KHRydWUpLAotICAgICAgYmFzaWNfaW5mb19zdGF0ZShr
Q29sbGVjdEluZm9Ob25lKSwKLSAgICAgIGNvbnRleHRfaW5mb19zdGF0ZShrQ29sbGVjdEluZm9O
b25lKSwKLSAgICAgIGpwZWdfZGVjb2RlX2FjY2VsZXJhdG9yX3N1cHBvcnRlZChmYWxzZSkgewot
fQotCi1HUFVJbmZvOjp+R1BVSW5mbygpIHsgfQotCi12b2lkIEdQVUluZm86OkVudW1lcmF0ZUZp
ZWxkcyhFbnVtZXJhdG9yKiBlbnVtZXJhdG9yKSBjb25zdCB7Ci0gIHN0cnVjdCBHUFVJbmZvS25v
d25GaWVsZHMgewotICAgIGJvb2wgb3B0aW11czsKLSAgICBib29sIGFtZF9zd2l0Y2hhYmxlOwot
ICAgIGJvb2wgbGVub3ZvX2RjdXRlOwotICAgIEdQVURldmljZSBncHU7Ci0gICAgc3RkOjp2ZWN0
b3I8R1BVRGV2aWNlPiBzZWNvbmRhcnlfZ3B1czsKLSAgICB1aW50NjQgYWRhcHRlcl9sdWlkOwot
ICAgIHN0ZDo6c3RyaW5nIGRyaXZlcl92ZW5kb3I7Ci0gICAgc3RkOjpzdHJpbmcgZHJpdmVyX3Zl
cnNpb247Ci0gICAgc3RkOjpzdHJpbmcgZHJpdmVyX2RhdGU7Ci0gICAgc3RkOjpzdHJpbmcgcGl4
ZWxfc2hhZGVyX3ZlcnNpb247Ci0gICAgc3RkOjpzdHJpbmcgdmVydGV4X3NoYWRlcl92ZXJzaW9u
OwotICAgIHN0ZDo6c3RyaW5nIG1heF9tc2FhX3NhbXBsZXM7Ci0gICAgc3RkOjpzdHJpbmcgbWFj
aGluZV9tb2RlbF9uYW1lOwotICAgIHN0ZDo6c3RyaW5nIG1hY2hpbmVfbW9kZWxfdmVyc2lvbjsK
LSAgICBzdGQ6OnN0cmluZyBnbF92ZXJzaW9uX3N0cmluZzsKLSAgICBzdGQ6OnN0cmluZyBnbF92
ZW5kb3I7Ci0gICAgc3RkOjpzdHJpbmcgZ2xfcmVuZGVyZXI7Ci0gICAgc3RkOjpzdHJpbmcgZ2xf
ZXh0ZW5zaW9uczsKLSAgICBzdGQ6OnN0cmluZyBnbF93c192ZW5kb3I7Ci0gICAgc3RkOjpzdHJp
bmcgZ2xfd3NfdmVyc2lvbjsKLSAgICBzdGQ6OnN0cmluZyBnbF93c19leHRlbnNpb25zOwotICAg
IHVpbnQzMiBnbF9yZXNldF9ub3RpZmljYXRpb25fc3RyYXRlZ3k7Ci0gICAgYm9vbCBjYW5fbG9z
ZV9jb250ZXh0OwotICAgIGJvb2wgc29mdHdhcmVfcmVuZGVyaW5nOwotICAgIGJvb2wgZGlyZWN0
X3JlbmRlcmluZzsKLSAgICBib29sIHNhbmRib3hlZDsKLSAgICBpbnQgcHJvY2Vzc19jcmFzaF9j
b3VudDsKLSAgICBib29sIGluX3Byb2Nlc3NfZ3B1OwotICAgIENvbGxlY3RJbmZvUmVzdWx0IGJh
c2ljX2luZm9fc3RhdGU7Ci0gICAgQ29sbGVjdEluZm9SZXN1bHQgY29udGV4dF9pbmZvX3N0YXRl
OwotICAgIGJvb2wganBlZ19kZWNvZGVfYWNjZWxlcmF0b3Jfc3VwcG9ydGVkOwotICB9OwotCi0g
IC8vIElmIHRoaXMgYXNzZXJ0IGZhaWxzIHRoZW4gbW9zdCBsaWtlbHkgc29tZXRoaW5nIGJlbG93
IG5lZWRzIHRvIGJlIHVwZGF0ZWQuCi0gIC8vIE5vdGUgdGhhdCB0aGlzIGFzc2VydCBpcyBvbmx5
IGFwcHJveGltYXRlLiBJZiBhIG5ldyBmaWVsZCBpcyBhZGRlZCB0bwotICAvLyBHUFVJbmZvIHdo
aWNoIGZpdHMgd2l0aGluIHRoZSBjdXJyZW50IHBhZGRpbmcgdGhlbiBpdCB3aWxsIG5vdCBiZSBj
YXVnaHQuCi0gIHN0YXRpY19hc3NlcnQoCi0gICAgICBzaXplb2YoR1BVSW5mbykgPT0gc2l6ZW9m
KEdQVUluZm9Lbm93bkZpZWxkcyksCi0gICAgICAiZmllbGRzIGhhdmUgY2hhbmdlZCBpbiBHUFVJ
bmZvLCBHUFVJbmZvS25vd25GaWVsZHMgbXVzdCBiZSB1cGRhdGVkIik7Ci0KLSAgLy8gUmVxdWly
ZWQgZmllbGRzIChhY2NvcmRpbmcgdG8gRGV2VG9vbHMgcHJvdG9jb2wpIGZpcnN0LgotICBlbnVt
ZXJhdG9yLT5BZGRTdHJpbmcoIm1hY2hpbmVNb2RlbE5hbWUiLCBtYWNoaW5lX21vZGVsX25hbWUp
OwotICBlbnVtZXJhdG9yLT5BZGRTdHJpbmcoIm1hY2hpbmVNb2RlbFZlcnNpb24iLCBtYWNoaW5l
X21vZGVsX3ZlcnNpb24pOwotICBFbnVtZXJhdGVHUFVEZXZpY2UoZ3B1LCBlbnVtZXJhdG9yKTsK
LSAgZm9yIChjb25zdCBhdXRvJiBzZWNvbmRhcnlfZ3B1OiBzZWNvbmRhcnlfZ3B1cykKLSAgICBF
bnVtZXJhdGVHUFVEZXZpY2Uoc2Vjb25kYXJ5X2dwdSwgZW51bWVyYXRvcik7Ci0KLSAgZW51bWVy
YXRvci0+QmVnaW5BdXhBdHRyaWJ1dGVzKCk7Ci0gIGVudW1lcmF0b3ItPkFkZEJvb2woIm9wdGlt
dXMiLCBvcHRpbXVzKTsKLSAgZW51bWVyYXRvci0+QWRkQm9vbCgiYW1kU3dpdGNoYWJsZSIsIGFt
ZF9zd2l0Y2hhYmxlKTsKLSAgZW51bWVyYXRvci0+QWRkQm9vbCgibGVub3ZvRGN1dGUiLCBsZW5v
dm9fZGN1dGUpOwotICBlbnVtZXJhdG9yLT5BZGRJbnQ2NCgiYWRhcHRlckx1aWQiLCBhZGFwdGVy
X2x1aWQpOwotICBlbnVtZXJhdG9yLT5BZGRTdHJpbmcoImRyaXZlclZlbmRvciIsIGRyaXZlcl92
ZW5kb3IpOwotICBlbnVtZXJhdG9yLT5BZGRTdHJpbmcoImRyaXZlclZlcnNpb24iLCBkcml2ZXJf
dmVyc2lvbik7Ci0gIGVudW1lcmF0b3ItPkFkZFN0cmluZygiZHJpdmVyRGF0ZSIsIGRyaXZlcl9k
YXRlKTsKLSAgZW51bWVyYXRvci0+QWRkU3RyaW5nKCJwaXhlbFNoYWRlclZlcnNpb24iLCBwaXhl
bF9zaGFkZXJfdmVyc2lvbik7Ci0gIGVudW1lcmF0b3ItPkFkZFN0cmluZygidmVydGV4U2hhZGVy
VmVyc2lvbiIsIHZlcnRleF9zaGFkZXJfdmVyc2lvbik7Ci0gIGVudW1lcmF0b3ItPkFkZFN0cmlu
ZygibWF4TXNhYVNhbXBsZXMiLCBtYXhfbXNhYV9zYW1wbGVzKTsKLSAgZW51bWVyYXRvci0+QWRk
U3RyaW5nKCJnbFZlcnNpb24iLCBnbF92ZXJzaW9uKTsKLSAgZW51bWVyYXRvci0+QWRkU3RyaW5n
KCJnbFZlbmRvciIsIGdsX3ZlbmRvcik7Ci0gIGVudW1lcmF0b3ItPkFkZFN0cmluZygiZ2xSZW5k
ZXJlciIsIGdsX3JlbmRlcmVyKTsKLSAgZW51bWVyYXRvci0+QWRkU3RyaW5nKCJnbEV4dGVuc2lv
bnMiLCBnbF9leHRlbnNpb25zKTsKLSAgZW51bWVyYXRvci0+QWRkU3RyaW5nKCJnbFdzVmVuZG9y
IiwgZ2xfd3NfdmVuZG9yKTsKLSAgZW51bWVyYXRvci0+QWRkU3RyaW5nKCJnbFdzVmVyc2lvbiIs
IGdsX3dzX3ZlcnNpb24pOwotICBlbnVtZXJhdG9yLT5BZGRTdHJpbmcoImdsV3NFeHRlbnNpb25z
IiwgZ2xfd3NfZXh0ZW5zaW9ucyk7Ci0gIGVudW1lcmF0b3ItPkFkZEludCgKLSAgICAgICJnbFJl
c2V0Tm90aWZpY2F0aW9uU3RyYXRlZ3kiLAotICAgICAgc3RhdGljX2Nhc3Q8aW50PihnbF9yZXNl
dF9ub3RpZmljYXRpb25fc3RyYXRlZ3kpKTsKLSAgZW51bWVyYXRvci0+QWRkQm9vbCgiY2FuX2xv
c2VfY29udGV4dCIsIGNhbl9sb3NlX2NvbnRleHQpOwotICAvLyBUT0RPKGticik6IGFkZCBwZXJm
b3JtYW5jZV9zdGF0cy4KLSAgZW51bWVyYXRvci0+QWRkQm9vbCgic29mdHdhcmVSZW5kZXJpbmci
LCBzb2Z0d2FyZV9yZW5kZXJpbmcpOwotICBlbnVtZXJhdG9yLT5BZGRCb29sKCJkaXJlY3RSZW5k
ZXJpbmciLCBkaXJlY3RfcmVuZGVyaW5nKTsKLSAgZW51bWVyYXRvci0+QWRkQm9vbCgic2FuZGJv
eGVkIiwgc2FuZGJveGVkKTsKLSAgZW51bWVyYXRvci0+QWRkSW50KCJwcm9jZXNzQ3Jhc2hDb3Vu
dCIsIHByb2Nlc3NfY3Jhc2hfY291bnQpOwotICBlbnVtZXJhdG9yLT5BZGRCb29sKCJpblByb2Nl
c3NHcHUiLCBpbl9wcm9jZXNzX2dwdSk7Ci0gIGVudW1lcmF0b3ItPkFkZEludCgiYmFzaWNJbmZv
U3RhdGUiLCBiYXNpY19pbmZvX3N0YXRlKTsKLSAgZW51bWVyYXRvci0+QWRkSW50KCJjb250ZXh0
SW5mb1N0YXRlIiwgY29udGV4dF9pbmZvX3N0YXRlKTsKLSAgLy8gVE9ETyhrYnIpOiBhZGQgZHhf
ZGlhZ25vc3RpY3Mgb24gV2luZG93cy4KLSAgZW51bWVyYXRvci0+QWRkQm9vbCgianBlZ0RlY29k
ZUFjY2VsZXJhdG9yU3VwcG9ydGVkIiwKLSAgICAgIGpwZWdfZGVjb2RlX2FjY2VsZXJhdG9yX3N1
cHBvcnRlZCk7Ci0gIGVudW1lcmF0b3ItPkVuZEF1eEF0dHJpYnV0ZXMoKTsKLX0KLQotfSAgLy8g
bmFtZXNwYWNlIGdwdQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfaW5mby5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0
aW9ucy9ncHVfaW5mby5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTdmOWFhNTky
Ny4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Ro
aXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfaW5mby5oCisrKyAvZGV2L251bGwK
QEAgLTEsMjMzICswLDAgQEAKLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0
aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz
IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGlu
IHRoZSBMSUNFTlNFIGZpbGUuCi0KLSNpZm5kZWYgR1BVX0NPTkZJR19HUFVfSU5GT19IXwotI2Rl
ZmluZSBHUFVfQ09ORklHX0dQVV9JTkZPX0hfCi0KLS8vIFByb3ZpZGVzIGFjY2VzcyB0byB0aGUg
R1BVIGluZm9ybWF0aW9uIGZvciB0aGUgc3lzdGVtCi0vLyBvbiB3aGljaCBjaHJvbWUgaXMgY3Vy
cmVudGx5IHJ1bm5pbmcuCi0KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgot
Ci0jaW5jbHVkZSAiYW5nbGVfY29uZmlnLmgiCi0KLW5hbWVzcGFjZSBncHUgewotCi0vLyBSZXN1
bHQgZm9yIHRoZSB2YXJpb3VzIENvbGxlY3QqSW5mbyogZnVuY3Rpb25zIGJlbG93LgotLy8gRmF0
YWwgZmFpbHVyZXMgYXJlIGZvciBjYXNlcyB3aGVyZSB3ZSBjYW4ndCBjcmVhdGUgYSBjb250ZXh0
IGF0IGFsbCBvcgotLy8gc29tZXRoaW5nLCBtYWtpbmcgdGhlIHVzZSBvZiB0aGUgR1BVIGltcG9z
c2libGUuCi0vLyBOb24tZmF0YWwgZmFpbHVyZXMgYXJlIGZvciBjYXNlcyB3aGVyZSB3ZSBjb3Vs
ZCBnYXRoZXIgbW9zdCBpbmZvLCBidXQgbWF5YmUKLS8vIHNvbWUgaXMgbWlzc2luZyAoZS5nLiB1
bmFibGUgdG8gcGFyc2UgYSB2ZXJzaW9uIHN0cmluZyBvciB0byBkZXRlY3QgdGhlIGV4YWN0Ci0v
LyBtb2RlbCkuCi1lbnVtIENvbGxlY3RJbmZvUmVzdWx0IHsKLSAga0NvbGxlY3RJbmZvTm9uZSA9
IDAsCi0gIGtDb2xsZWN0SW5mb1N1Y2Nlc3MgPSAxLAotICBrQ29sbGVjdEluZm9Ob25GYXRhbEZh
aWx1cmUgPSAyLAotICBrQ29sbGVjdEluZm9GYXRhbEZhaWx1cmUgPSAzCi19OwotCi0vLyBWaWRl
byBwcm9maWxlLiAgVGhpcyAqbXVzdCogbWF0Y2ggbWVkaWE6OlZpZGVvQ29kZWNQcm9maWxlLgot
ZW51bSBWaWRlb0NvZGVjUHJvZmlsZSB7Ci0gIFZJREVPX0NPREVDX1BST0ZJTEVfVU5LTk9XTiA9
IC0xLAotICBWSURFT19DT0RFQ19QUk9GSUxFX01JTiA9IFZJREVPX0NPREVDX1BST0ZJTEVfVU5L
Tk9XTiwKLSAgSDI2NFBST0ZJTEVfQkFTRUxJTkUgPSAwLAotICBIMjY0UFJPRklMRV9NQUlOID0g
MSwKLSAgSDI2NFBST0ZJTEVfRVhURU5ERUQgPSAyLAotICBIMjY0UFJPRklMRV9ISUdIID0gMywK
LSAgSDI2NFBST0ZJTEVfSElHSDEwUFJPRklMRSA9IDQsCi0gIEgyNjRQUk9GSUxFX0hJR0g0MjJQ
Uk9GSUxFID0gNSwKLSAgSDI2NFBST0ZJTEVfSElHSDQ0NFBSRURJQ1RJVkVQUk9GSUxFID0gNiwK
LSAgSDI2NFBST0ZJTEVfU0NBTEFCTEVCQVNFTElORSA9IDcsCi0gIEgyNjRQUk9GSUxFX1NDQUxB
QkxFSElHSCA9IDgsCi0gIEgyNjRQUk9GSUxFX1NURVJFT0hJR0ggPSA5LAotICBIMjY0UFJPRklM
RV9NVUxUSVZJRVdISUdIID0gMTAsCi0gIFZQOFBST0ZJTEVfQU5ZID0gMTEsCi0gIFZQOVBST0ZJ
TEVfQU5ZID0gMTIsCi0gIFZJREVPX0NPREVDX1BST0ZJTEVfTUFYID0gVlA5UFJPRklMRV9BTlks
Ci19OwotCi1zdHJ1Y3QgR1BVX0VYUE9SVCBHUFVJbmZvIHsKLSAgc3RydWN0IEdQVV9FWFBPUlQg
R1BVRGV2aWNlIHsKLSAgICBHUFVEZXZpY2UoKTsKLSAgICB+R1BVRGV2aWNlKCk7Ci0KLSAgICAv
LyBUaGUgRFdPUkQgKHVpbnQzMikgcmVwcmVzZW50aW5nIHRoZSBncmFwaGljcyBjYXJkIHZlbmRv
ciBpZC4KLSAgICB1aW50MzIgdmVuZG9yX2lkOwotCi0gICAgLy8gVGhlIERXT1JEICh1aW50MzIp
IHJlcHJlc2VudGluZyB0aGUgZ3JhcGhpY3MgY2FyZCBkZXZpY2UgaWQuCi0gICAgLy8gRGV2aWNl
IGlkcyBhcmUgdW5pcXVlIHRvIHZlbmRvciwgbm90IHRvIG9uZSBhbm90aGVyLgotICAgIHVpbnQz
MiBkZXZpY2VfaWQ7Ci0KLSAgICAvLyBXaGV0aGVyIHRoaXMgR1BVIGlzIHRoZSBjdXJyZW50bHkg
dXNlZCBvbmUuCi0gICAgLy8gQ3VycmVudGx5IHRoaXMgZmllbGQgaXMgb25seSBzdXBwb3J0ZWQg
YW5kIG1lYW5pbmdmdWwgb24gT1MgWC4KLSAgICBib29sIGFjdGl2ZTsKLQotICAgIC8vIFRoZSBz
dHJpbmdzIHRoYXQgZGVzY3JpYmUgdGhlIEdQVS4KLSAgICAvLyBJbiBMaW51eCB0aGVzZSBzdHJp
bmdzIGFyZSBvYnRhaW5lZCB0aHJvdWdoIGxpYnBjaS4KLSAgICAvLyBJbiBXaW4vTWFjT1NYLCB0
aGVzZSB0d28gc3RyaW5ncyBhcmUgbm90IGZpbGxlZCBhdCB0aGUgbW9tZW50LgotICAgIC8vIElu
IEFuZHJvaWQsIHRoZXNlIGFyZSByZXNwZWN0aXZlbHkgR0xfVkVORE9SIGFuZCBHTF9SRU5ERVJF
Ui4KLSAgICBzdGQ6OnN0cmluZyB2ZW5kb3Jfc3RyaW5nOwotICAgIHN0ZDo6c3RyaW5nIGRldmlj
ZV9zdHJpbmc7Ci0gIH07Ci0KLSAgR1BVSW5mbygpOwotICB+R1BVSW5mbygpOwotCi0gIGJvb2wg
U3VwcG9ydHNBY2NlbGVyYXRlZDJkQ2FudmFzKCkgY29uc3QgewotICAgIHJldHVybiAhY2FuX2xv
c2VfY29udGV4dCAmJiAhc29mdHdhcmVfcmVuZGVyaW5nOwotICB9Ci0KLSAgLy8gQ29tcHV0ZXIg
aGFzIE5WSURJQSBPcHRpbXVzCi0gIGJvb2wgb3B0aW11czsKLQotICAvLyBDb21wdXRlciBoYXMg
QU1EIER5bmFtaWMgU3dpdGNoYWJsZSBHcmFwaGljcwotICBib29sIGFtZF9zd2l0Y2hhYmxlOwot
Ci0gIC8vIExlbm92byBkQ3V0ZSBpcyBpbnN0YWxsZWQuIGh0dHA6Ly9jcmJ1Zy5jb20vMTgxNjY1
LgotICBib29sIGxlbm92b19kY3V0ZTsKLQotICAvLyBQcmltYXJ5IEdQVSwgZm9yIGV4bWFwbGUs
IHRoZSBkaXNjcmV0ZSBHUFUgaW4gYSBkdWFsIEdQVSBtYWNoaW5lLgotICBHUFVEZXZpY2UgZ3B1
OwotCi0gIC8vIFNlY29uZGFyeSBHUFVzLCBmb3IgZXhhbXBsZSwgdGhlIGludGVncmF0ZWQgR1BV
IGluIGEgZHVhbCBHUFUgbWFjaGluZS4KLSAgc3RkOjp2ZWN0b3I8R1BVRGV2aWNlPiBzZWNvbmRh
cnlfZ3B1czsKLQotICAvLyBPbiBXaW5kb3dzLCB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhl
IGFkYXB0ZXIgdGhlIEdQVSBwcm9jZXNzIHVzZXMuCi0gIC8vIFRoZSBkZWZhdWx0IGlzIHplcm8s
IHdoaWNoIG1ha2VzIHRoZSBicm93c2VyIHByb2Nlc3MgY3JlYXRlIGl0cyBEM0QgZGV2aWNlCi0g
IC8vIG9uIHRoZSBwcmltYXJ5IGFkYXB0ZXIuIE5vdGUgdGhhdCB0aGUgcHJpbWFyeSBhZGFwdGVy
IGNhbiBjaGFuZ2UgYXQgYW55Ci0gIC8vIHRpbWUgc28gaXQgaXMgYmV0dGVyIHRvIHNwZWNpZnkg
YSBwYXJ0aWN1bGFyIExVSUQuIE5vdGUgdGhhdCB2YWxpZCBMVUlEcwotICAvLyBhcmUgYWx3YXlz
IG5vbi16ZXJvLgotICB1aW50NjQgYWRhcHRlcl9sdWlkOwotCi0gIC8vIFRoZSB2ZW5kb3Igb2Yg
dGhlIGdyYXBoaWNzIGRyaXZlciBjdXJyZW50bHkgaW5zdGFsbGVkLgotICBzdGQ6OnN0cmluZyBk
cml2ZXJfdmVuZG9yOwotCi0gIC8vIFRoZSB2ZXJzaW9uIG9mIHRoZSBncmFwaGljcyBkcml2ZXIg
Y3VycmVudGx5IGluc3RhbGxlZC4KLSAgc3RkOjpzdHJpbmcgZHJpdmVyX3ZlcnNpb247Ci0KLSAg
Ly8gVGhlIGRhdGUgb2YgdGhlIGdyYXBoaWNzIGRyaXZlciBjdXJyZW50bHkgaW5zdGFsbGVkLgot
ICBzdGQ6OnN0cmluZyBkcml2ZXJfZGF0ZTsKLQotICAvLyBUaGUgdmVyc2lvbiBvZiB0aGUgcGl4
ZWwvZnJhZ21lbnQgc2hhZGVyIHVzZWQgYnkgdGhlIGdwdS4KLSAgc3RkOjpzdHJpbmcgcGl4ZWxf
c2hhZGVyX3ZlcnNpb247Ci0KLSAgLy8gVGhlIHZlcnNpb24gb2YgdGhlIHZlcnRleCBzaGFkZXIg
dXNlZCBieSB0aGUgZ3B1LgotICBzdGQ6OnN0cmluZyB2ZXJ0ZXhfc2hhZGVyX3ZlcnNpb247Ci0K
LSAgLy8gVGhlIG1heGltdW0gbXVsdGlzYXBsaW5nIHNhbXBsZSBjb3VudCwgZWl0aGVyIHRocm91
Z2ggRVMzIG9yCi0gIC8vIEVYVF9tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUgTVNBQS4K
LSAgc3RkOjpzdHJpbmcgbWF4X21zYWFfc2FtcGxlczsKLQotICAvLyBUaGUgbWFjaGluZSBtb2Rl
bCBpZGVudGlmaWVyLiBUaGV5IGNhbiBjb250YWluIGFueSBjaGFyYWN0ZXIsIGluY2x1ZGluZwot
ICAvLyB3aGl0ZXNwYWNlcy4gIEN1cnJlbnRseSBpdCBpcyBzdXBwb3J0ZWQgb24gTWFjT1NYIGFu
ZCBBbmRyb2lkLgotICAvLyBBbmRyb2lkIGV4YW1wbGVzOiAiTmF4dXMgNSIsICJYVDEwMzIiLgot
ICAvLyBPbiBNYWNPU1gsIHRoZSB2ZXJzaW9uIGlzIHN0cmlwcGVkIG91dCBvZiB0aGUgbW9kZWwg
aWRlbnRpZmllciwgZm9yCi0gIC8vIGV4YW1wbGUsIHRoZSBvcmlnaW5hbCBpZGVudGlmaWVyIGlz
ICJNYWNCb29rUHJvNywyIiwgYW5kIHdlIHB1dAotICAvLyAiTWFjQm9va1BybyIgYXMgbWFjaGlu
ZV9tb2RlbF9uYW1lLCBhbmQgIjcuMiIgYXMgbWFjaGluZV9tb2RlbF92ZXJzaW9uLgotICBzdGQ6
OnN0cmluZyBtYWNoaW5lX21vZGVsX25hbWU7Ci0KLSAgLy8gVGhlIHZlcnNpb24gb2YgdGhlIG1h
Y2hpbmUgbW9kZWwuIEN1cnJlbnRseSBpdCBpcyBzdXBwb3J0ZWQgb24gTWFjT1NYLgotICAvLyBT
ZWUgbWFjaGluZV9tb2RlbF9uYW1lJ3MgY29tbWVudC4KLSAgc3RkOjpzdHJpbmcgbWFjaGluZV9t
b2RlbF92ZXJzaW9uOwotCi0gIC8vIFRoZSBHTF9WRVJTSU9OIHN0cmluZy4KLSAgc3RkOjpzdHJp
bmcgZ2xfdmVyc2lvbjsKLQotICAvLyBUaGUgR0xfVkVORE9SIHN0cmluZy4KLSAgc3RkOjpzdHJp
bmcgZ2xfdmVuZG9yOwotCi0gIC8vIFRoZSBHTF9SRU5ERVJFUiBzdHJpbmcuCi0gIHN0ZDo6c3Ry
aW5nIGdsX3JlbmRlcmVyOwotCi0gIC8vIFRoZSBHTF9FWFRFTlNJT05TIHN0cmluZy4KLSAgc3Rk
OjpzdHJpbmcgZ2xfZXh0ZW5zaW9uczsKLQotICAvLyBHTCB3aW5kb3cgc3lzdGVtIGJpbmRpbmcg
dmVuZG9yLiAgIiIgaWYgbm90IGF2YWlsYWJsZS4KLSAgc3RkOjpzdHJpbmcgZ2xfd3NfdmVuZG9y
OwotCi0gIC8vIEdMIHdpbmRvdyBzeXN0ZW0gYmluZGluZyB2ZXJzaW9uLiAgIiIgaWYgbm90IGF2
YWlsYWJsZS4KLSAgc3RkOjpzdHJpbmcgZ2xfd3NfdmVyc2lvbjsKLQotICAvLyBHTCB3aW5kb3cg
c3lzdGVtIGJpbmRpbmcgZXh0ZW5zaW9ucy4gICIiIGlmIG5vdCBhdmFpbGFibGUuCi0gIHN0ZDo6
c3RyaW5nIGdsX3dzX2V4dGVuc2lvbnM7Ci0KLSAgLy8gR0wgcmVzZXQgbm90aWZpY2F0aW9uIHN0
cmF0ZWd5IGFzIGRlZmluZWQgYnkgR0xfQVJCX3JvYnVzdG5lc3MuIDAgaWYgR1BVCi0gIC8vIHJl
c2V0IGRldGVjdGlvbiBvciBub3RpZmljYXRpb24gbm90IGF2YWlsYWJsZS4KLSAgdWludDMyIGds
X3Jlc2V0X25vdGlmaWNhdGlvbl9zdHJhdGVneTsKLQotICAvLyBUaGUgZGV2aWNlIHNlbWFudGlj
cywgaS5lLiB3aGV0aGVyIHRoZSBWaXN0YSBhbmQgV2luZG93cyA3IHNwZWNpZmljCi0gIC8vIHNl
bWFudGljcyBhcmUgYXZhaWxhYmxlLgotICBib29sIGNhbl9sb3NlX2NvbnRleHQ7Ci0KLSAgYm9v
bCBzb2Z0d2FyZV9yZW5kZXJpbmc7Ci0KLSAgLy8gV2hldGhlciB0aGUgZHJpdmVyIHVzZXMgZGly
ZWN0IHJlbmRlcmluZy4gVHJ1ZSBvbiBtb3N0IHBsYXRmb3JtcywgZmFsc2Ugb24KLSAgLy8gWDEx
IHdoZW4gdXNpbmcgcmVtb3RlIFguCi0gIGJvb2wgZGlyZWN0X3JlbmRlcmluZzsKLQotICAvLyBX
aGV0aGVyIHRoZSBncHUgcHJvY2VzcyBpcyBydW5uaW5nIGluIGEgc2FuZGJveC4KLSAgYm9vbCBz
YW5kYm94ZWQ7Ci0KLSAgLy8gTnVtYmVyIG9mIEdQVSBwcm9jZXNzIGNyYXNoZXMgcmVjb3JkZWQu
Ci0gIGludCBwcm9jZXNzX2NyYXNoX2NvdW50OwotCi0gIC8vIFRydWUgaWYgdGhlIEdQVSBpcyBy
dW5uaW5nIGluIHRoZSBicm93c2VyIHByb2Nlc3MgaW5zdGVhZCBvZiBpdHMgb3duLgotICBib29s
IGluX3Byb2Nlc3NfZ3B1OwotCi0gIC8vIFRoZSBzdGF0ZSBvZiB3aGV0aGVyIHRoZSBiYXNpYy9j
b250ZXh0L0R4RGlhZ25vc3RpY3MgaW5mbyBpcyBjb2xsZWN0ZWQgYW5kCi0gIC8vIGlmIHRoZSBj
b2xsZWN0aW9uIGZhaWxzIG9yIG5vdC4KLSAgQ29sbGVjdEluZm9SZXN1bHQgYmFzaWNfaW5mb19z
dGF0ZTsKLSAgQ29sbGVjdEluZm9SZXN1bHQgY29udGV4dF9pbmZvX3N0YXRlOwotCi0gIGJvb2wg
anBlZ19kZWNvZGVfYWNjZWxlcmF0b3Jfc3VwcG9ydGVkOwotCi0gIC8vIE5vdGU6IHdoZW4gYWRk
aW5nIG5ldyBtZW1iZXJzLCBwbGVhc2UgcmVtZW1iZXIgdG8gdXBkYXRlIEVudW1lcmF0ZUZpZWxk
cwotICAvLyBpbiBncHVfaW5mby5jYy4KLQotICAvLyBJbiBjb25qdW5jdGlvbiB3aXRoIEVudW1l
cmF0ZUZpZWxkcywgdGhpcyBhbGxvd3MgdGhlIGVtYmVkZGVyIHRvCi0gIC8vIGVudW1lcmF0ZSB0
aGUgdmFsdWVzIGluIHRoaXMgc3RydWN0dXJlIHdpdGhvdXQgaGF2aW5nIHRvIGVtYmVkCi0gIC8v
IHJlZmVyZW5jZXMgdG8gaXRzIHNwZWNpZmljIG1lbWJlciB2YXJpYWJsZXMuIFRoaXMgc2ltcGxp
ZmllcyB0aGUKLSAgLy8gYWRkaXRpb24gb2YgbmV3IGZpZWxkcyB0byB0aGlzIHR5cGUuCi0gIGNs
YXNzIEVudW1lcmF0b3IgewotICAgcHVibGljOgotICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9k
cyBhcHBseSB0byB0aGUgImN1cnJlbnQiIG9iamVjdC4gSW5pdGlhbGx5IHRoaXMKLSAgICAvLyBp
cyB0aGUgcm9vdCBvYmplY3QsIGJ1dCBjYWxscyB0byBCZWdpbkdQVURldmljZS9FbmRHUFVEZXZp
Y2UgYW5kCi0gICAgLy8gQmVnaW5BdXhBdHRyaWJ1dGVzL0VuZEF1eEF0dHJpYnV0ZXMgY2hhbmdl
IHRoZSBvYmplY3QgdG8gd2hpY2ggdGhlc2UKLSAgICAvLyBjYWxscyBzaG91bGQgYXBwbHkuCi0g
ICAgdmlydHVhbCB2b2lkIEFkZEludDY0KGNvbnN0IGNoYXIqIG5hbWUsIGludDY0IHZhbHVlKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIEFkZEludChjb25zdCBjaGFyKiBuYW1lLCBpbnQgdmFsdWUp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgQWRkU3RyaW5nKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0
IHN0ZDo6c3RyaW5nJiB2YWx1ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBBZGRCb29sKGNvbnN0
IGNoYXIqIG5hbWUsIGJvb2wgdmFsdWUpID0gMDsKLQotICAgIC8vIE1hcmtlcnMgaW5kaWNhdGlu
ZyB0aGF0IGEgR1BVRGV2aWNlIGlzIGJlaW5nIGRlc2NyaWJlZC4KLSAgICB2aXJ0dWFsIHZvaWQg
QmVnaW5HUFVEZXZpY2UoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIEVuZEdQVURldmljZSgpID0g
MDsKLQotICAgIC8vIE1hcmtlcnMgaW5kaWNhdGluZyB0aGF0IGEgVmlkZW9EZWNvZGVBY2NlbGVy
YXRvclN1cHBvcnRlZFByb2ZpbGUgaXMKLSAgICAvLyBiZWluZyBkZXNjcmliZWQuCi0gICAgdmly
dHVhbCB2b2lkIEJlZ2luVmlkZW9EZWNvZGVBY2NlbGVyYXRvclN1cHBvcnRlZFByb2ZpbGUoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIEVuZFZpZGVvRGVjb2RlQWNjZWxlcmF0b3JTdXBwb3J0ZWRQ
cm9maWxlKCkgPSAwOwotCi0gICAgLy8gTWFya2VycyBpbmRpY2F0aW5nIHRoYXQgYSBWaWRlb0Vu
Y29kZUFjY2VsZXJhdG9yU3VwcG9ydGVkUHJvZmlsZSBpcwotICAgIC8vIGJlaW5nIGRlc2NyaWJl
ZC4KLSAgICB2aXJ0dWFsIHZvaWQgQmVnaW5WaWRlb0VuY29kZUFjY2VsZXJhdG9yU3VwcG9ydGVk
UHJvZmlsZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgRW5kVmlkZW9FbmNvZGVBY2NlbGVyYXRv
clN1cHBvcnRlZFByb2ZpbGUoKSA9IDA7Ci0KLSAgICAvLyBNYXJrZXJzIGluZGljYXRpbmcgdGhh
dCAiYXV4aWxpYXJ5IiBhdHRyaWJ1dGVzIG9mIHRoZSBHUFVJbmZvCi0gICAgLy8gKGFjY29yZGlu
ZyB0byB0aGUgRGV2VG9vbHMgcHJvdG9jb2wpIGFyZSBiZWluZyBkZXNjcmliZWQuCi0gICAgdmly
dHVhbCB2b2lkIEJlZ2luQXV4QXR0cmlidXRlcygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgRW5k
QXV4QXR0cmlidXRlcygpID0gMDsKLQotICAgcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfkVudW1l
cmF0b3IoKSB7fQotICB9OwotCi0gIC8vIE91dHB1dHMgdGhlIGZpZWxkcyBpbiB0aGlzIHN0cnVj
dHVyZSB0byB0aGUgcHJvdmlkZWQgZW51bWVyYXRvci4KLSAgdm9pZCBFbnVtZXJhdGVGaWVsZHMo
RW51bWVyYXRvciogZW51bWVyYXRvcikgY29uc3Q7Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgZ3B1
Ci0KLSNlbmRpZiAgLy8gR1BVX0NPTkZJR19HUFVfSU5GT19IXwpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0
aW9ucy9ncHVfdGVzdF9jb25maWcuY2MgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2NvbmZpZy5jYwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBiZjZmMDYzNTYuLjAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVz
dF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnLmNjCisrKyAvZGV2L251bGwKQEAgLTEsNDky
ICswLDAgQEAKLS8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCi0KLSNpbmNsdWRlICJncHVfdGVzdF9jb25maWcuaCIKLQotI2luY2x1ZGUgImdw
dV9pbmZvLmgiCi0jaW5jbHVkZSAiZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNlci5oIgotCi0j
aWYgZGVmaW5lZChPU19MSU5VWCkKLWV4dGVybiAiQyIgewotIyAgIGluY2x1ZGUgPHBjaS9wY2ku
aD4KLX0KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChPU19NQUNPU1gpCi0jaW5jbHVkZSAiZ3B1X3Rl
c3RfY29uZmlnX21hYy5oIgotI2VuZGlmCi0KLXVzaW5nIG5hbWVzcGFjZSBncHU7Ci0KLSNpZiBk
ZWZpbmVkKE9TX1dJTikKLQotbmFtZXNwYWNlIGJhc2UgewotCi1uYW1lc3BhY2UgewotCi0vLyBE
aXNhYmxlIHRoZSBkZXByZWNhdGVkIGZ1bmN0aW9uIHdhcm5pbmcgZm9yIEdldFZlcnNpb25FeAot
I3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ5OTYpCi0KLWNsYXNzIFN5c0luZm8KLXsKLSAgcHVi
bGljOgotICAgIHN0YXRpYyB2b2lkIE9wZXJhdGluZ1N5c3RlbVZlcnNpb25OdW1iZXJzKAotICAg
ICAgICBpbnQzMiAqbWFqb3JfdmVyc2lvbiwgaW50MzIgKm1pbm9yX3ZlcnNpb24sIGludDMyICpi
dWdmaXhfdmVyc2lvbik7Ci19OwotCi0vLyBzdGF0aWMKLXZvaWQgU3lzSW5mbzo6T3BlcmF0aW5n
U3lzdGVtVmVyc2lvbk51bWJlcnMoCi0gICAgaW50MzIgKm1ham9yX3ZlcnNpb24sIGludDMyICpt
aW5vcl92ZXJzaW9uLCBpbnQzMiAqYnVnZml4X3ZlcnNpb24pCi17Ci0gIE9TVkVSU0lPTklORk9F
WCB2ZXJzaW9uX2luZm8gPSB7IHNpemVvZiB2ZXJzaW9uX2luZm8gfTsKLSAgOjpHZXRWZXJzaW9u
RXgocmVpbnRlcnByZXRfY2FzdDxPU1ZFUlNJT05JTkZPKj4oJnZlcnNpb25faW5mbykpOwotICAq
bWFqb3JfdmVyc2lvbiA9IHZlcnNpb25faW5mby5kd01ham9yVmVyc2lvbjsKLSAgKm1pbm9yX3Zl
cnNpb24gPSB2ZXJzaW9uX2luZm8uZHdNaW5vclZlcnNpb247Ci0gICpidWdmaXhfdmVyc2lvbiA9
IHZlcnNpb25faW5mby5kd0J1aWxkTnVtYmVyOwotfQotCi19IC8vIGFub255bW91cyBuYW1lc3Bh
Y2UKLQotfSAvLyBuYW1lc3BhY2UgYmFzZQotCi12b2lkIERldmljZUlEVG9WZW5kb3JBbmREZXZp
Y2UoY29uc3Qgc3RkOjpzdHJpbmcmIGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVpbnQzMiogdmVuZG9yX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz
MiogZGV2aWNlX2lkKSB7Ci0gICp2ZW5kb3JfaWQgPSAwOwotICAqZGV2aWNlX2lkID0gMDsKLSAg
aWYgKGlkLmxlbmd0aCgpIDwgMjEpCi0gICAgcmV0dXJuOwotICBzdGQ6OnN0cmluZyB2ZW5kb3Jf
aWRfc3RyaW5nID0gaWQuc3Vic3RyKDgsIDQpOwotICBzdGQ6OnN0cmluZyBkZXZpY2VfaWRfc3Ry
aW5nID0gaWQuc3Vic3RyKDE3LCA0KTsKLSAgYmFzZTo6SGV4U3RyaW5nVG9VSW50KHZlbmRvcl9p
ZF9zdHJpbmcsIHZlbmRvcl9pZCk7Ci0gIGJhc2U6OkhleFN0cmluZ1RvVUludChkZXZpY2VfaWRf
c3RyaW5nLCBkZXZpY2VfaWQpOwotfQotCi1Db2xsZWN0SW5mb1Jlc3VsdCBDb2xsZWN0R3B1SUQo
dWludDMyKiB2ZW5kb3JfaWQsIHVpbnQzMiogZGV2aWNlX2lkKSB7Ci0gIERDSEVDSyh2ZW5kb3Jf
aWQgJiYgZGV2aWNlX2lkKTsKLSAgKnZlbmRvcl9pZCA9IDA7Ci0gICpkZXZpY2VfaWQgPSAwOwot
Ci0gIC8vIFRha2VuIGZyb20gaHR0cDovL2RldmVsb3Blci5udmlkaWEuY29tL29iamVjdC9kZXZp
Y2VfaWRzLmh0bWwKLSAgRElTUExBWV9ERVZJQ0VBIGRkOwotICBkZC5jYiA9IHNpemVvZihESVNQ
TEFZX0RFVklDRUEpOwotICBzdGQ6OnN0cmluZyBpZDsKLSAgZm9yIChpbnQgaSA9IDA7IEVudW1E
aXNwbGF5RGV2aWNlc0EoTlVMTCwgaSwgJmRkLCAwKTsgKytpKSB7Ci0gICAgaWYgKGRkLlN0YXRl
RmxhZ3MgJiBESVNQTEFZX0RFVklDRV9QUklNQVJZX0RFVklDRSkgewotICAgICAgaWQgPSBkZC5E
ZXZpY2VJRDsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgfQotCi0gIGlmIChpZC5sZW5ndGgoKSA+
IDIwKSB7Ci0gICAgRGV2aWNlSURUb1ZlbmRvckFuZERldmljZShpZCwgdmVuZG9yX2lkLCBkZXZp
Y2VfaWQpOwotICAgIGlmICgqdmVuZG9yX2lkICE9IDAgJiYgKmRldmljZV9pZCAhPSAwKQotICAg
ICAgcmV0dXJuIGtDb2xsZWN0SW5mb1N1Y2Nlc3M7Ci0gIH0KLSAgcmV0dXJuIGtDb2xsZWN0SW5m
b05vbkZhdGFsRmFpbHVyZTsKLX0KLQotI2VuZGlmIC8vIGRlZmluZWQoT1NfV0lOKQotCi0jaWYg
ZGVmaW5lZChPU19MSU5VWCkKLQotY29uc3QgdWludDMyIGtWZW5kb3JJREludGVsID0gMHg4MDg2
OwotY29uc3QgdWludDMyIGtWZW5kb3JJRE5WaWRpYSA9IDB4MTBkZTsKLWNvbnN0IHVpbnQzMiBr
VmVuZG9ySURBTUQgPSAweDEwMDI7Ci0KLUNvbGxlY3RJbmZvUmVzdWx0IENvbGxlY3RQQ0lWaWRl
b0NhcmRJbmZvKEdQVUluZm8qIGdwdV9pbmZvKSB7Ci0gIERDSEVDSyhncHVfaW5mbyk7Ci0KLSAg
c3RydWN0IHBjaV9hY2Nlc3MqIGFjY2VzcyA9IHBjaV9hbGxvYygpOwotICBEQ0hFQ0soYWNjZXNz
ICE9IE5VTEwpOwotICBwY2lfaW5pdChhY2Nlc3MpOwotICBwY2lfc2Nhbl9idXMoYWNjZXNzKTsK
LQotICBib29sIHByaW1hcnlfZ3B1X2lkZW50aWZpZWQgPSBmYWxzZTsKLSAgZm9yIChwY2lfZGV2
KiBkZXZpY2UgPSBhY2Nlc3MtPmRldmljZXM7Ci0gICAgICAgZGV2aWNlICE9IE5VTEw7IGRldmlj
ZSA9IGRldmljZS0+bmV4dCkgewotICAgIHBjaV9maWxsX2luZm8oZGV2aWNlLCAzMyk7Ci0gICAg
Ym9vbCBpc19ncHUgPSBmYWxzZTsKLSAgICBzd2l0Y2ggKGRldmljZS0+ZGV2aWNlX2NsYXNzKSB7
Ci0gICAgICBjYXNlIFBDSV9DTEFTU19ESVNQTEFZX1ZHQToKLSAgICAgIGNhc2UgUENJX0NMQVNT
X0RJU1BMQVlfWEdBOgotICAgICAgY2FzZSBQQ0lfQ0xBU1NfRElTUExBWV8zRDoKLSAgICAgICAg
aXNfZ3B1ID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIFBDSV9DTEFTU19ESVNQ
TEFZX09USEVSOgotICAgICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlm
ICghaXNfZ3B1KQotICAgICAgY29udGludWU7Ci0gICAgaWYgKGRldmljZS0+dmVuZG9yX2lkID09
IDAgfHwgZGV2aWNlLT5kZXZpY2VfaWQgPT0gMCkKLSAgICAgIGNvbnRpbnVlOwotCi0gICAgR1BV
SW5mbzo6R1BVRGV2aWNlIGdwdTsKLSAgICBncHUudmVuZG9yX2lkID0gZGV2aWNlLT52ZW5kb3Jf
aWQ7Ci0gICAgZ3B1LmRldmljZV9pZCA9IGRldmljZS0+ZGV2aWNlX2lkOwotCi0gICAgaWYgKCFw
cmltYXJ5X2dwdV9pZGVudGlmaWVkKSB7Ci0gICAgICBwcmltYXJ5X2dwdV9pZGVudGlmaWVkID0g
dHJ1ZTsKLSAgICAgIGdwdV9pbmZvLT5ncHUgPSBncHU7Ci0gICAgfSBlbHNlIHsKLSAgICAgIC8v
IFRPRE8oem1vKTogaWYgdGhlcmUgYXJlIG11bHRpcGxlIEdQVXMsIHdlIGFzc3VtZSB0aGUgbm9u
IEludGVsCi0gICAgICAvLyBvbmUgaXMgcHJpbWFyeS4gUmV2aXNpdCB0aGlzIGxvZ2ljIGJlY2F1
c2Ugd2UgYWN0dWFsbHkgZG9uJ3Qga25vdwotICAgICAgLy8gd2hpY2ggR1BVIHdlIGFyZSB1c2lu
ZyBhdCB0aGlzIHBvaW50LgotICAgICAgaWYgKGdwdV9pbmZvLT5ncHUudmVuZG9yX2lkID09IGtW
ZW5kb3JJREludGVsICYmCi0gICAgICAgICAgZ3B1LnZlbmRvcl9pZCAhPSBrVmVuZG9ySURJbnRl
bCkgewotICAgICAgICBncHVfaW5mby0+c2Vjb25kYXJ5X2dwdXMucHVzaF9iYWNrKGdwdV9pbmZv
LT5ncHUpOwotICAgICAgICBncHVfaW5mby0+Z3B1ID0gZ3B1OwotICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgZ3B1X2luZm8tPnNlY29uZGFyeV9ncHVzLnB1c2hfYmFjayhncHUpOwotICAgICAgfQot
ICAgIH0KLSAgfQotCi0gIC8vIERldGVjdCBPcHRpbXVzIG9yIEFNRCBTd2l0Y2hhYmxlIEdQVS4K
LSAgaWYgKGdwdV9pbmZvLT5zZWNvbmRhcnlfZ3B1cy5zaXplKCkgPT0gMSAmJgotICAgICAgZ3B1
X2luZm8tPnNlY29uZGFyeV9ncHVzWzBdLnZlbmRvcl9pZCA9PSBrVmVuZG9ySURJbnRlbCkgewot
ICAgIGlmIChncHVfaW5mby0+Z3B1LnZlbmRvcl9pZCA9PSBrVmVuZG9ySUROVmlkaWEpCi0gICAg
ICBncHVfaW5mby0+b3B0aW11cyA9IHRydWU7Ci0gICAgaWYgKGdwdV9pbmZvLT5ncHUudmVuZG9y
X2lkID09IGtWZW5kb3JJREFNRCkKLSAgICAgIGdwdV9pbmZvLT5hbWRfc3dpdGNoYWJsZSA9IHRy
dWU7Ci0gIH0KLQotICBwY2lfY2xlYW51cChhY2Nlc3MpOwotICBpZiAoIXByaW1hcnlfZ3B1X2lk
ZW50aWZpZWQpCi0gICAgcmV0dXJuIGtDb2xsZWN0SW5mb05vbkZhdGFsRmFpbHVyZTsKLSAgcmV0
dXJuIGtDb2xsZWN0SW5mb1N1Y2Nlc3M7Ci19Ci0KLUNvbGxlY3RJbmZvUmVzdWx0IENvbGxlY3RH
cHVJRCh1aW50MzIqIHZlbmRvcl9pZCwgdWludDMyKiBkZXZpY2VfaWQpIHsKLSAgRENIRUNLKHZl
bmRvcl9pZCAmJiBkZXZpY2VfaWQpOwotICAqdmVuZG9yX2lkID0gMDsKLSAgKmRldmljZV9pZCA9
IDA7Ci0KLSAgR1BVSW5mbyBncHVfaW5mbzsKLSAgQ29sbGVjdEluZm9SZXN1bHQgcmVzdWx0ID0g
Q29sbGVjdFBDSVZpZGVvQ2FyZEluZm8oJmdwdV9pbmZvKTsKLSAgaWYgKHJlc3VsdCA9PSBrQ29s
bGVjdEluZm9TdWNjZXNzKSB7Ci0gICAgKnZlbmRvcl9pZCA9IGdwdV9pbmZvLmdwdS52ZW5kb3Jf
aWQ7Ci0gICAgKmRldmljZV9pZCA9IGdwdV9pbmZvLmdwdS5kZXZpY2VfaWQ7Ci0gIH0KLSAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotI2VuZGlmIC8vIGRlZmluZWQoT1NfTElOVVgpCi0KLSNpZiBkZWZp
bmVkKE9TX01BQ09TWCkKLQotQ29sbGVjdEluZm9SZXN1bHQgQ29sbGVjdEdwdUlEKHVpbnQzMiog
dmVuZG9yX2lkLCB1aW50MzIqIGRldmljZV9pZCkgewotICBEQ0hFQ0sodmVuZG9yX2lkICYmIGRl
dmljZV9pZCk7Ci0KLSAgR1BVSW5mbzo6R1BVRGV2aWNlIGdwdSA9IEdldEFjdGl2ZUdQVSgpOwot
ICAqdmVuZG9yX2lkID0gZ3B1LnZlbmRvcl9pZDsKLSAgKmRldmljZV9pZCA9IGdwdS5kZXZpY2Vf
aWQ7Ci0KLSAgaWYgKCp2ZW5kb3JfaWQgIT0gMCAmJiAqZGV2aWNlX2lkICE9IDApCi0gICAgcmV0
dXJuIGtDb2xsZWN0SW5mb1N1Y2Nlc3M7Ci0gIHJldHVybiBrQ29sbGVjdEluZm9Ob25GYXRhbEZh
aWx1cmU7Ci19Ci0KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChPU19BTkRST0lEKQotQ29sbGVjdElu
Zm9SZXN1bHQgQ29sbGVjdEdwdUlEKHVpbnQzMiAqdmVuZG9yX2lkLCB1aW50MzIgKmRldmljZV9p
ZCkKLXsKLSAgICBEQ0hFQ0sodmVuZG9yX2lkICYmIGRldmljZV9pZCk7Ci0gICAgKnZlbmRvcl9p
ZCA9IDA7Ci0gICAgKmRldmljZV9pZCA9IDA7Ci0gICAgcmV0dXJuIGtDb2xsZWN0SW5mb05vbkZh
dGFsRmFpbHVyZTsKLX0KLSNlbmRpZiAgLy8gZGVmaW5lZChPU19BTkRST0lEKQotCi1uYW1lc3Bh
Y2UgZ3B1IHsKLQotbmFtZXNwYWNlIHsKLQotR1BVVGVzdENvbmZpZzo6T1MgR2V0Q3VycmVudE9T
KCkgewotI2lmIGRlZmluZWQoT1NfQ0hST01FT1MpCi0gIHJldHVybiBHUFVUZXN0Q29uZmlnOjpr
T3NDaHJvbWVPUzsKLSNlbGlmIGRlZmluZWQoT1NfTElOVVgpIHx8IGRlZmluZWQoT1NfT1BFTkJT
RCkKLSAgcmV0dXJuIEdQVVRlc3RDb25maWc6OmtPc0xpbnV4OwotI2VsaWYgZGVmaW5lZChPU19X
SU4pCi0gIGludDMyIG1ham9yX3ZlcnNpb24gPSAwOwotICBpbnQzMiBtaW5vcl92ZXJzaW9uID0g
MDsKLSAgaW50MzIgYnVnZml4X3ZlcnNpb24gPSAwOwotICBiYXNlOjpTeXNJbmZvOjpPcGVyYXRp
bmdTeXN0ZW1WZXJzaW9uTnVtYmVycygKLSAgICAgICZtYWpvcl92ZXJzaW9uLCAmbWlub3JfdmVy
c2lvbiwgJmJ1Z2ZpeF92ZXJzaW9uKTsKLSAgaWYgKG1ham9yX3ZlcnNpb24gPT0gNSkKLSAgICBy
ZXR1cm4gR1BVVGVzdENvbmZpZzo6a09zV2luWFA7Ci0gIGlmIChtYWpvcl92ZXJzaW9uID09IDYg
JiYgbWlub3JfdmVyc2lvbiA9PSAwKQotICAgIHJldHVybiBHUFVUZXN0Q29uZmlnOjprT3NXaW5W
aXN0YTsKLSAgaWYgKG1ham9yX3ZlcnNpb24gPT0gNiAmJiBtaW5vcl92ZXJzaW9uID09IDEpCi0g
ICAgcmV0dXJuIEdQVVRlc3RDb25maWc6OmtPc1dpbjc7Ci0gIGlmIChtYWpvcl92ZXJzaW9uID09
IDYgJiYgKG1pbm9yX3ZlcnNpb24gPT0gMiB8fCBtaW5vcl92ZXJzaW9uID09IDMpKQotICAgIHJl
dHVybiBHUFVUZXN0Q29uZmlnOjprT3NXaW44OwotICBpZiAobWFqb3JfdmVyc2lvbiA9PSAxMCkK
LSAgICByZXR1cm4gR1BVVGVzdENvbmZpZzo6a09zV2luMTA7Ci0jZWxpZiBkZWZpbmVkKE9TX01B
Q09TWCkKLSAgaW50MzIgbWFqb3JfdmVyc2lvbiA9IDA7Ci0gIGludDMyIG1pbm9yX3ZlcnNpb24g
PSAwOwotICBpbnQzMiBidWdmaXhfdmVyc2lvbiA9IDA7Ci0gIGJhc2U6OlN5c0luZm86Ok9wZXJh
dGluZ1N5c3RlbVZlcnNpb25OdW1iZXJzKAotICAgICAgJm1ham9yX3ZlcnNpb24sICZtaW5vcl92
ZXJzaW9uLCAmYnVnZml4X3ZlcnNpb24pOwotICBpZiAobWFqb3JfdmVyc2lvbiA9PSAxMCkgewot
ICAgIHN3aXRjaCAobWlub3JfdmVyc2lvbikgewotICAgICAgY2FzZSA1OgotICAgICAgICByZXR1
cm4gR1BVVGVzdENvbmZpZzo6a09zTWFjTGVvcGFyZDsKLSAgICAgIGNhc2UgNjoKLSAgICAgICAg
cmV0dXJuIEdQVVRlc3RDb25maWc6OmtPc01hY1Nub3dMZW9wYXJkOwotICAgICAgY2FzZSA3Ogot
ICAgICAgICByZXR1cm4gR1BVVGVzdENvbmZpZzo6a09zTWFjTGlvbjsKLSAgICAgIGNhc2UgODoK
LSAgICAgICAgcmV0dXJuIEdQVVRlc3RDb25maWc6OmtPc01hY01vdW50YWluTGlvbjsKLSAgICAg
IGNhc2UgOToKLSAgICAgICAgcmV0dXJuIEdQVVRlc3RDb25maWc6OmtPc01hY01hdmVyaWNrczsK
LSAgICAgIGNhc2UgMTA6Ci0gICAgICAgIHJldHVybiBHUFVUZXN0Q29uZmlnOjprT3NNYWNZb3Nl
bWl0ZTsKLSAgICAgIGNhc2UgMTE6Ci0gICAgICAgIHJldHVybiBHUFVUZXN0Q29uZmlnOjprT3NN
YWNFbENhcGl0YW47Ci0gICAgfQotICB9Ci0jZWxpZiBkZWZpbmVkKE9TX0FORFJPSUQpCi0gIHJl
dHVybiBHUFVUZXN0Q29uZmlnOjprT3NBbmRyb2lkOwotI2VuZGlmCi0gIHJldHVybiBHUFVUZXN0
Q29uZmlnOjprT3NVbmtub3duOwotfQotCi19ICAvLyBuYW1lc3BhY2UgYW5vbnltb3VzCi0KLUdQ
VVRlc3RDb25maWc6OkdQVVRlc3RDb25maWcoKQotICAgIDogdmFsaWRhdGVfZ3B1X2luZm9fKHRy
dWUpLAotICAgICAgb3NfKGtPc1Vua25vd24pLAotICAgICAgZ3B1X2RldmljZV9pZF8oMCksCi0g
ICAgICBidWlsZF90eXBlXyhrQnVpbGRUeXBlVW5rbm93biksCi0gICAgICBhcGlfKGtBUElVbmtu
b3duKSB7fQotCi1HUFVUZXN0Q29uZmlnOjp+R1BVVGVzdENvbmZpZygpIHsKLX0KLQotdm9pZCBH
UFVUZXN0Q29uZmlnOjpzZXRfb3MoaW50MzIgb3MpIHsKLSAgRENIRUNLX0VRKDAsIG9zICYgfihr
T3NBbmRyb2lkIHwga09zV2luIHwga09zTWFjIHwga09zTGludXggfCBrT3NDaHJvbWVPUykpOwot
ICBvc18gPSBvczsKLX0KLQotdm9pZCBHUFVUZXN0Q29uZmlnOjpBZGRHUFVWZW5kb3IodWludDMy
IGdwdV92ZW5kb3IpIHsKLSAgRENIRUNLX05FKDB1LCBncHVfdmVuZG9yKTsKLSAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBncHVfdmVuZG9yXy5zaXplKCk7ICsraSkKLSAgICBEQ0hFQ0tfTkUoZ3B1
X3ZlbmRvcl9baV0sIGdwdV92ZW5kb3IpOwotICBncHVfdmVuZG9yXy5wdXNoX2JhY2soZ3B1X3Zl
bmRvcik7Ci19Ci0KLXZvaWQgR1BVVGVzdENvbmZpZzo6c2V0X2dwdV9kZXZpY2VfaWQodWludDMy
IGlkKSB7Ci0gIGdwdV9kZXZpY2VfaWRfID0gaWQ7Ci19Ci0KLXZvaWQgR1BVVGVzdENvbmZpZzo6
c2V0X2J1aWxkX3R5cGUoaW50MzIgYnVpbGRfdHlwZSkgewotICBEQ0hFQ0tfRVEoMCwgYnVpbGRf
dHlwZSAmIH4oa0J1aWxkVHlwZVJlbGVhc2UgfCBrQnVpbGRUeXBlRGVidWcpKTsKLSAgYnVpbGRf
dHlwZV8gPSBidWlsZF90eXBlOwotfQotCi12b2lkIEdQVVRlc3RDb25maWc6OnNldF9hcGkoaW50
MzIgYXBpKSB7Ci0gIERDSEVDS19FUSgwLCBhcGkgJiB+KGtBUElEM0Q5IHwga0FQSUQzRDExIHwg
a0FQSUdMRGVza3RvcCB8IGtBUElHTEVTKSk7Ci0gIGFwaV8gPSBhcGk7Ci19Ci0KLWJvb2wgR1BV
VGVzdENvbmZpZzo6SXNWYWxpZCgpIGNvbnN0IHsKLSAgaWYgKCF2YWxpZGF0ZV9ncHVfaW5mb18p
Ci0gICAgcmV0dXJuIHRydWU7Ci0gIGlmIChncHVfZGV2aWNlX2lkXyAhPSAwICYmIChncHVfdmVu
ZG9yXy5zaXplKCkgIT0gMSB8fCBncHVfdmVuZG9yX1swXSA9PSAwKSkKLSAgICByZXR1cm4gZmFs
c2U7Ci0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIEdQVVRlc3RDb25maWc6Ok92ZXJsYXBzV2l0
aChjb25zdCBHUFVUZXN0Q29uZmlnJiBjb25maWcpIGNvbnN0IHsKLSAgRENIRUNLKElzVmFsaWQo
KSk7Ci0gIERDSEVDSyhjb25maWcuSXNWYWxpZCgpKTsKLSAgaWYgKGNvbmZpZy5vc18gIT0ga09z
VW5rbm93biAmJiBvc18gIT0ga09zVW5rbm93biAmJgotICAgICAgKG9zXyAmIGNvbmZpZy5vc18p
ID09IDApCi0gICAgcmV0dXJuIGZhbHNlOwotICBpZiAoY29uZmlnLmdwdV92ZW5kb3JfLnNpemUo
KSA+IDAgJiYgZ3B1X3ZlbmRvcl8uc2l6ZSgpID4gMCkgewotICAgIGJvb2wgc2hhcmVkID0gZmFs
c2U7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb25maWcuZ3B1X3ZlbmRvcl8uc2l6ZSgp
ICYmICFzaGFyZWQ7ICsraSkgewotICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBncHVfdmVu
ZG9yXy5zaXplKCk7ICsraikgewotICAgICAgICBpZiAoY29uZmlnLmdwdV92ZW5kb3JfW2ldID09
IGdwdV92ZW5kb3JfW2pdKSB7Ci0gICAgICAgICAgc2hhcmVkID0gdHJ1ZTsKLSAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgICBpZiAoIXNoYXJlZCkKLSAgICAg
IHJldHVybiBmYWxzZTsKLSAgfQotICBpZiAoY29uZmlnLmdwdV9kZXZpY2VfaWRfICE9IDAgJiYg
Z3B1X2RldmljZV9pZF8gIT0gMCAmJgotICAgICAgZ3B1X2RldmljZV9pZF8gIT0gY29uZmlnLmdw
dV9kZXZpY2VfaWRfKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKGNvbmZpZy5idWlsZF90eXBl
XyAhPSBrQnVpbGRUeXBlVW5rbm93biAmJgotICAgICAgYnVpbGRfdHlwZV8gIT0ga0J1aWxkVHlw
ZVVua25vd24gJiYKLSAgICAgIChidWlsZF90eXBlXyAmIGNvbmZpZy5idWlsZF90eXBlXykgPT0g
MCkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIHJldHVybiB0cnVlOwotfQotCi12b2lkIEdQVVRlc3RD
b25maWc6OkRpc2FibGVHUFVJbmZvVmFsaWRhdGlvbigpIHsKLSAgdmFsaWRhdGVfZ3B1X2luZm9f
ID0gZmFsc2U7Ci19Ci0KLXZvaWQgR1BVVGVzdENvbmZpZzo6Q2xlYXJHUFVWZW5kb3IoKSB7Ci0g
IGdwdV92ZW5kb3JfLmNsZWFyKCk7Ci19Ci0KLUdQVVRlc3RCb3RDb25maWc6On5HUFVUZXN0Qm90
Q29uZmlnKCkgewotfQotCi12b2lkIEdQVVRlc3RCb3RDb25maWc6OkFkZEdQVVZlbmRvcih1aW50
MzIgZ3B1X3ZlbmRvcikgewotICBEQ0hFQ0tfRVEoMHUsIEdQVVRlc3RDb25maWc6OmdwdV92ZW5k
b3IoKS5zaXplKCkpOwotICBHUFVUZXN0Q29uZmlnOjpBZGRHUFVWZW5kb3IoZ3B1X3ZlbmRvcik7
Ci19Ci0KLWJvb2wgR1BVVGVzdEJvdENvbmZpZzo6U2V0R1BVSW5mbyhjb25zdCBHUFVJbmZvJiBn
cHVfaW5mbykgewotICBEQ0hFQ0sodmFsaWRhdGVfZ3B1X2luZm9fKTsKLSAgaWYgKGdwdV9pbmZv
LmdwdS5kZXZpY2VfaWQgPT0gMCB8fCBncHVfaW5mby5ncHUudmVuZG9yX2lkID09IDApCi0gICAg
cmV0dXJuIGZhbHNlOwotICBDbGVhckdQVVZlbmRvcigpOwotICBBZGRHUFVWZW5kb3IoZ3B1X2lu
Zm8uZ3B1LnZlbmRvcl9pZCk7Ci0gIHNldF9ncHVfZGV2aWNlX2lkKGdwdV9pbmZvLmdwdS5kZXZp
Y2VfaWQpOwotICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBHUFVUZXN0Qm90Q29uZmlnOjpJc1Zh
bGlkKCkgY29uc3QgewotICBzd2l0Y2ggKG9zKCkpIHsKLSAgICBjYXNlIGtPc1dpblhQOgotICAg
IGNhc2Uga09zV2luVmlzdGE6Ci0gICAgY2FzZSBrT3NXaW43OgotICAgIGNhc2Uga09zV2luODoK
LSAgICBjYXNlIGtPc1dpbjEwOgotICAgIGNhc2Uga09zTWFjTGVvcGFyZDoKLSAgICBjYXNlIGtP
c01hY1Nub3dMZW9wYXJkOgotICAgIGNhc2Uga09zTWFjTGlvbjoKLSAgICBjYXNlIGtPc01hY01v
dW50YWluTGlvbjoKLSAgICBjYXNlIGtPc01hY01hdmVyaWNrczoKLSAgICBjYXNlIGtPc01hY1lv
c2VtaXRlOgotICAgIGNhc2Uga09zTWFjRWxDYXBpdGFuOgotICAgIGNhc2Uga09zTGludXg6Ci0g
ICAgY2FzZSBrT3NDaHJvbWVPUzoKLSAgICBjYXNlIGtPc0FuZHJvaWQ6Ci0gICAgICBicmVhazsK
LSAgICBkZWZhdWx0OgotICAgICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIGlmICh2YWxpZGF0ZV9n
cHVfaW5mb18pIHsKLSAgICBpZiAoZ3B1X3ZlbmRvcigpLnNpemUoKSAhPSAxIHx8IGdwdV92ZW5k
b3IoKVswXSA9PSAwKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChncHVfZGV2aWNlX2lk
KCkgPT0gMCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgfQotICBzd2l0Y2ggKGJ1aWxkX3R5cGUo
KSkgewotICAgIGNhc2Uga0J1aWxkVHlwZVJlbGVhc2U6Ci0gICAgY2FzZSBrQnVpbGRUeXBlRGVi
dWc6Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgcmV0dXJuIGZhbHNlOwotICB9
Ci0gIHJldHVybiB0cnVlOwotfQotCi1ib29sIEdQVVRlc3RCb3RDb25maWc6Ok1hdGNoZXMoY29u
c3QgR1BVVGVzdENvbmZpZyYgY29uZmlnKSBjb25zdCB7Ci0gIERDSEVDSyhJc1ZhbGlkKCkpOwot
ICBEQ0hFQ0soY29uZmlnLklzVmFsaWQoKSk7Ci0gIGlmIChjb25maWcub3MoKSAhPSBrT3NVbmtu
b3duICYmIChvcygpICYgY29uZmlnLm9zKCkpID09IDApCi0gICAgcmV0dXJuIGZhbHNlOwotICBp
ZiAoY29uZmlnLmdwdV92ZW5kb3IoKS5zaXplKCkgPiAwKSB7Ci0gICAgYm9vbCBjb250YWluZWQg
PSBmYWxzZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbmZpZy5ncHVfdmVuZG9yKCku
c2l6ZSgpOyArK2kpIHsKLSAgICAgIGlmIChjb25maWcuZ3B1X3ZlbmRvcigpW2ldID09IGdwdV92
ZW5kb3IoKVswXSkgewotICAgICAgICBjb250YWluZWQgPSB0cnVlOwotICAgICAgICBicmVhazsK
LSAgICAgIH0KLSAgICB9Ci0gICAgaWYgKCFjb250YWluZWQpCi0gICAgICByZXR1cm4gZmFsc2U7
Ci0gIH0KLSAgaWYgKGNvbmZpZy5ncHVfZGV2aWNlX2lkKCkgIT0gMCAmJgotICAgICAgZ3B1X2Rl
dmljZV9pZCgpICE9IGNvbmZpZy5ncHVfZGV2aWNlX2lkKCkpCi0gICAgcmV0dXJuIGZhbHNlOwot
ICBpZiAoY29uZmlnLmJ1aWxkX3R5cGUoKSAhPSBrQnVpbGRUeXBlVW5rbm93biAmJgotICAgICAg
KGJ1aWxkX3R5cGUoKSAmIGNvbmZpZy5idWlsZF90eXBlKCkpID09IDApCi0gICAgcmV0dXJuIGZh
bHNlOwotICBpZiAoY29uZmlnLmFwaSgpICE9IDAgJiYgKGFwaSgpICYgY29uZmlnLmFwaSgpKSA9
PSAwKQotICAgIHJldHVybiBmYWxzZTsKLSAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgR1BVVGVz
dEJvdENvbmZpZzo6TWF0Y2hlcyhjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnX2RhdGEpIGNvbnN0
IHsKLSAgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlciBwYXJzZXI7Ci0gIEdQVVRlc3RDb25maWcg
Y29uZmlnOwotCi0gIGlmICghcGFyc2VyLlBhcnNlQ29uZmlnKGNvbmZpZ19kYXRhLCAmY29uZmln
KSkKLSAgICByZXR1cm4gZmFsc2U7Ci0gIHJldHVybiBNYXRjaGVzKGNvbmZpZyk7Ci19Ci0KLWJv
b2wgR1BVVGVzdEJvdENvbmZpZzo6TG9hZEN1cnJlbnRDb25maWcoY29uc3QgR1BVSW5mbyAqZ3B1
X2luZm8pCi17Ci0gICAgYm9vbCBydDsKLSAgICBpZiAoZ3B1X2luZm8gPT0gTlVMTCkKLSAgICB7
Ci0gICAgICAgIEdQVUluZm8gbXlfZ3B1X2luZm87Ci0gICAgICAgIENvbGxlY3RJbmZvUmVzdWx0
IHJlc3VsdCA9Ci0gICAgICAgICAgICBDb2xsZWN0R3B1SUQoJm15X2dwdV9pbmZvLmdwdS52ZW5k
b3JfaWQsICZteV9ncHVfaW5mby5ncHUuZGV2aWNlX2lkKTsKLSAgICAgICAgaWYgKHJlc3VsdCAh
PSBrQ29sbGVjdEluZm9TdWNjZXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICBMT0coRVJST1Ip
IDw8ICJGYWlsIHRvIGlkZW50aWZ5IEdQVVxuIjsKLSAgICAgICAgICAgIERpc2FibGVHUFVJbmZv
VmFsaWRhdGlvbigpOwotICAgICAgICAgICAgcnQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgcnQgPSBTZXRHUFVJbmZvKG15X2dwdV9pbmZv
KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBydCA9IFNldEdQ
VUluZm8oKmdwdV9pbmZvKTsKLSAgICB9Ci0gICAgc2V0X29zKEdldEN1cnJlbnRPUygpKTsKLSAg
ICBpZiAob3MoKSA9PSBrT3NVbmtub3duKQotICAgIHsKLSAgICAgICAgTE9HKEVSUk9SKSA8PCAi
VW5rbm93biBPU1xuIjsKLSAgICAgICAgcnQgPSBmYWxzZTsKLSAgICB9Ci0jaWYgZGVmaW5lZChO
REVCVUcpCi0gICAgc2V0X2J1aWxkX3R5cGUoa0J1aWxkVHlwZVJlbGVhc2UpOwotI2Vsc2UKLSAg
ICBzZXRfYnVpbGRfdHlwZShrQnVpbGRUeXBlRGVidWcpOwotI2VuZGlmCi0gICAgcmV0dXJuIHJ0
OwotfQotCi0vLyBzdGF0aWMKLWJvb2wgR1BVVGVzdEJvdENvbmZpZzo6Q3VycmVudENvbmZpZ01h
dGNoZXMoY29uc3Qgc3RkOjpzdHJpbmcmIGNvbmZpZ19kYXRhKSB7Ci0gIEdQVVRlc3RCb3RDb25m
aWcgbXlfY29uZmlnOwotICBpZiAoIW15X2NvbmZpZy5Mb2FkQ3VycmVudENvbmZpZyhOVUxMKSkK
LSAgICByZXR1cm4gZmFsc2U7Ci0gIHJldHVybiBteV9jb25maWcuTWF0Y2hlcyhjb25maWdfZGF0
YSk7Ci19Ci0KLS8vIHN0YXRpYwotYm9vbCBHUFVUZXN0Qm90Q29uZmlnOjpDdXJyZW50Q29uZmln
TWF0Y2hlcygKLSAgICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIGNvbmZpZ3MpIHsK
LSAgR1BVVGVzdEJvdENvbmZpZyBteV9jb25maWc7Ci0gIGlmICghbXlfY29uZmlnLkxvYWRDdXJy
ZW50Q29uZmlnKE5VTEwpKQotICAgIHJldHVybiBmYWxzZTsKLSAgZm9yIChzaXplX3QgaSA9IDAg
OyBpIDwgY29uZmlncy5zaXplKCk7ICsraSkgewotICAgIGlmIChteV9jb25maWcuTWF0Y2hlcyhj
b25maWdzW2ldKSkKLSAgICAgIHJldHVybiB0cnVlOwotICB9Ci0gIHJldHVybiBmYWxzZTsKLX0K
LQotfSAgLy8gbmFtZXNwYWNlIGdwdQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0
X2NvbmZpZy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5
L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWcuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNGNiYzJjMDdlNTEuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMv
Z3B1X3Rlc3RfY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotLy8gQ29w
eXJpZ2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLQotI2lm
bmRlZiBHUFVfQ09ORklHX0dQVV9URVNUX0NPTkZJR19IXwotI2RlZmluZSBHUFVfQ09ORklHX0dQ
VV9URVNUX0NPTkZJR19IXwotCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4K
LQotI2luY2x1ZGUgImFuZ2xlX2NvbmZpZy5oIgotCi1uYW1lc3BhY2UgZ3B1IHsKLQotc3RydWN0
IEdQVUluZm87Ci0KLWNsYXNzIEdQVV9FWFBPUlQgR1BVVGVzdENvbmZpZyB7Ci0gcHVibGljOgot
ICBlbnVtIE9TIHsKLSAgICBrT3NVbmtub3duID0gMCwKLSAgICBrT3NXaW5YUCA9IDEgPDwgMCwK
LSAgICBrT3NXaW5WaXN0YSA9IDEgPDwgMSwKLSAgICBrT3NXaW43ID0gMSA8PCAyLAotICAgIGtP
c1dpbjggPSAxIDw8IDMsCi0gICAga09zTWFjTGVvcGFyZCA9IDEgPDwgNCwKLSAgICBrT3NNYWNT
bm93TGVvcGFyZCA9IDEgPDwgNSwKLSAgICBrT3NNYWNMaW9uID0gMSA8PCA2LAotICAgIGtPc01h
Y01vdW50YWluTGlvbiA9IDEgPDwgNywKLSAgICBrT3NNYWNNYXZlcmlja3MgPSAxIDw8IDgsCi0g
ICAga09zTWFjWW9zZW1pdGUgPSAxIDw8IDksCi0gICAga09zTWFjRWxDYXBpdGFuID0gMSA8PCAx
MCwKLSAgICBrT3NNYWMgPSBrT3NNYWNMZW9wYXJkIHwga09zTWFjU25vd0xlb3BhcmQgfCBrT3NN
YWNMaW9uIHwKLSAgICAgICAgICAgICBrT3NNYWNNb3VudGFpbkxpb24gfCBrT3NNYWNNYXZlcmlj
a3MgfCBrT3NNYWNZb3NlbWl0ZSB8Ci0gICAgICAgICAgICAga09zTWFjRWxDYXBpdGFuLAotICAg
IGtPc0xpbnV4ID0gMSA8PCAxMSwKLSAgICBrT3NDaHJvbWVPUyA9IDEgPDwgMTIsCi0gICAga09z
QW5kcm9pZCA9IDEgPDwgMTMsCi0gICAga09zV2luMTAgPSAxIDw8IDE0LAotICAgIGtPc1dpbiA9
IGtPc1dpblhQIHwga09zV2luVmlzdGEgfCBrT3NXaW43IHwga09zV2luOCB8IGtPc1dpbjEwLAot
ICB9OwotCi0gIGVudW0gQnVpbGRUeXBlIHsKLSAgICBrQnVpbGRUeXBlVW5rbm93biA9IDAsCi0g
ICAga0J1aWxkVHlwZVJlbGVhc2UgPSAxIDw8IDAsCi0gICAga0J1aWxkVHlwZURlYnVnID0gMSA8
PCAxLAotICB9OwotCi0gIGVudW0gQVBJIHsKLSAgICBrQVBJVW5rbm93biA9IDAsCi0gICAga0FQ
SUQzRDkgPSAxIDw8IDAsCi0gICAga0FQSUQzRDExID0gMSA8PCAxLAotICAgIGtBUElHTERlc2t0
b3AgPSAxIDw8IDIsCi0gICAga0FQSUdMRVMgPSAxIDw8IDMsCi0gIH07Ci0KLSAgR1BVVGVzdENv
bmZpZygpOwotICB2aXJ0dWFsIH5HUFVUZXN0Q29uZmlnKCk7Ci0KLSAgdm9pZCBzZXRfb3MoaW50
MzIgb3MpOwotICB2b2lkIHNldF9ncHVfZGV2aWNlX2lkKHVpbnQzMiBpZCk7Ci0gIHZvaWQgc2V0
X2J1aWxkX3R5cGUoaW50MzIgYnVpbGRfdHlwZSk7Ci0gIHZvaWQgc2V0X2FwaShpbnQzMiBhcGkp
OwotCi0gIHZpcnR1YWwgdm9pZCBBZGRHUFVWZW5kb3IodWludDMyIGdwdV92ZW5kb3IpOwotCi0g
IGludDMyIG9zKCkgY29uc3QgeyByZXR1cm4gb3NfOyB9Ci0gIGNvbnN0IHN0ZDo6dmVjdG9yPHVp
bnQzMj4mIGdwdV92ZW5kb3IoKSBjb25zdCB7IHJldHVybiBncHVfdmVuZG9yXzsgfQotICB1aW50
MzIgZ3B1X2RldmljZV9pZCgpIGNvbnN0IHsgcmV0dXJuIGdwdV9kZXZpY2VfaWRfOyB9Ci0gIGlu
dDMyIGJ1aWxkX3R5cGUoKSBjb25zdCB7IHJldHVybiBidWlsZF90eXBlXzsgfQotICBpbnQzMiBh
cGkoKSBjb25zdCB7IHJldHVybiBhcGlfOyB9Ci0KLSAgLy8gQ2hlY2sgaWYgdGhlIGNvbmZpZyBp
cyB2YWxpZC4gRm9yIGV4YW1wbGUsIGlmIGdwdV9kZXZpY2VfaWRfIGlzIHNldCwgYnV0Ci0gIC8v
IGdwdV92ZW5kb3JfIGlzIHVua25vd24sIHRoZW4gaXQncyBpbnZhbGlkLgotICB2aXJ0dWFsIGJv
b2wgSXNWYWxpZCgpIGNvbnN0OwotCi0gIC8vIENoZWNrIGlmIHR3byBjb25maWdzIG92ZXJsYXAs
IGkuZS4sIGlmIHRoZXJlIGV4aXN0cyBhIGNvbmZpZyB0aGF0IG1hdGNoZXMKLSAgLy8gYm90aCBj
b25maWdzLgotICBib29sIE92ZXJsYXBzV2l0aChjb25zdCBHUFVUZXN0Q29uZmlnJiBjb25maWcp
IGNvbnN0OwotCi0gIC8vIERpc2FibGUgdmFsaWRhdGlvbiBvZiBHUFUgdmVuZG9yIGFuZCBkZXZp
Y2UgaWRzLgotICB2b2lkIERpc2FibGVHUFVJbmZvVmFsaWRhdGlvbigpOwotCi0gcHJvdGVjdGVk
OgotICB2b2lkIENsZWFyR1BVVmVuZG9yKCk7Ci0KLSAgLy8gSW5kaWNhdGVzIHRoYXQgdGhlIE9T
IGhhcyB0aGUgbm90aW9uIG9mIGEgbnVtZXJpYyBHUFUgdmVuZG9yIGFuZCBkZXZpY2UgaWQKLSAg
Ly8gYW5kIHRoaXMgZGF0YSBzaG91bGQgYmUgdmFsaWRhdGVkLgotICBib29sIHZhbGlkYXRlX2dw
dV9pbmZvXzsKLQotIHByaXZhdGU6Ci0gIC8vIG9wZXJhdGluZyBzeXN0ZW0uCi0gIGludDMyIG9z
XzsKLQotICAvLyBHUFUgdmVuZG9yLgotICBzdGQ6OnZlY3Rvcjx1aW50MzI+IGdwdV92ZW5kb3Jf
OwotCi0gIC8vIEdQVSBkZXZpY2UgaWQgKHVuaXF1ZSB0byBlYWNoIHZlbmRvcikuCi0gIHVpbnQz
MiBncHVfZGV2aWNlX2lkXzsKLQotICAvLyBSZWxlYXNlIG9yIERlYnVnLgotICBpbnQzMiBidWls
ZF90eXBlXzsKLQotICAvLyBCYWNrLWVuZCByZW5kZXJpbmcgQVBJcy4KLSAgaW50MzIgYXBpXzsK
LX07Ci0KLWNsYXNzIEdQVV9FWFBPUlQgR1BVVGVzdEJvdENvbmZpZyA6IHB1YmxpYyBHUFVUZXN0
Q29uZmlnIHsKLSBwdWJsaWM6Ci0gIEdQVVRlc3RCb3RDb25maWcoKSB7IH0KLSAgfkdQVVRlc3RC
b3RDb25maWcoKSBvdmVycmlkZTsKLQotICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3
aGVuIG5vIGdwdV92ZW5kb3IgaXMgYWRkZWQuCi0gIHZvaWQgQWRkR1BVVmVuZG9yKHVpbnQzMiBn
cHVfdmVuZG9yKSBvdmVycmlkZTsKLQotICAvLyBSZXR1cm4gZmFsc2UgaWYgZ3B1X2luZm8gZG9l
cyBub3QgaGF2ZSB2YWxpZCB2ZW5kb3JfaWQgYW5kIGRldmljZV9pZC4KLSAgYm9vbCBTZXRHUFVJ
bmZvKGNvbnN0IEdQVUluZm8mIGdwdV9pbmZvKTsKLQotICAvLyBDaGVjayBpZiB0aGUgYm90IGNv
bmZpZyBpcyB2YWxpZCwgaS5lLiwgaWYgaXQgaXMgb25lIHZhbGlkIHRlc3QtYm90Ci0gIC8vIGVu
dmlyb25tZW50LiBGb3IgZXhhbXBsZSwgaWYgYSBmaWVsZCBpcyB1bmtub3duLCBvciBpZiBPUyBp
cyBub3Qgb25lCi0gIC8vIGZ1bGx5IGRlZmluZWQgT1MsIHRoZW4gaXQncyB2YWxpZC4KLSAgYm9v
bCBJc1ZhbGlkKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgLy8gQ2hlY2sgaWYgYSBib3QgY29uZmln
IG1hdGNoZXMgYSB0ZXN0IGNvbmZpZywgaS5lLiwgdGhlIHRlc3QgY29uZmlnIGlzIGEKLSAgLy8g
c3VwZXJzZXQgb2YgdGhlIGJvdCBjb25maWcuCi0gIGJvb2wgTWF0Y2hlcyhjb25zdCBHUFVUZXN0
Q29uZmlnJiBjb25maWcpIGNvbnN0OwotICBib29sIE1hdGNoZXMoY29uc3Qgc3RkOjpzdHJpbmcm
IGNvbmZpZ19kYXRhKSBjb25zdDsKLQotICAvLyBTZXR1cCB0aGUgY29uZmlnIHdpdGggdGhlIGN1
cnJlbnQgZ3B1IHRlc3RpbmcgZW52aXJvbm1lbnQuCi0gIC8vIElmIGdwdV9pbmZvIGlzIE5VTEws
IGNvbGxlY3QgR1BVSW5mbyBmaXJzdC4KLSAgYm9vbCBMb2FkQ3VycmVudENvbmZpZyhjb25zdCBH
UFVJbmZvKiBncHVfaW5mbyk7Ci0KLSAgLy8gQ2hlY2sgaWYgdGhpcyBib3QncyBjb25maWcgbWF0
Y2hlcyB8Y29uZmlnX2RhdGF8IG9yIGFueSBvZiB0aGUgfGNvbmZpZ3N8LgotICBzdGF0aWMgYm9v
bCBDdXJyZW50Q29uZmlnTWF0Y2hlcyhjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnX2RhdGEpOwot
ICBzdGF0aWMgYm9vbCBDdXJyZW50Q29uZmlnTWF0Y2hlcyhjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6
OnN0cmluZz4mIGNvbmZpZ3MpOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGdwdQotCi0jZW5kaWYg
IC8vIEdQVV9DT05GSUdfR1BVX1RFU1RfQ09ORklHX0hfCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlv
bnMvZ3B1X3Rlc3RfY29uZmlnX21hYy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9jb25maWdfbWFj
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMjJiZDZlZTExLi4wMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvZ3B1
X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2NvbmZpZ19tYWMuaAorKysgL2Rldi9udWxsCkBA
IC0xLDI4ICswLDAgQEAKLS8vCi0vLyBDb3B5cmlnaHQgMjAxNSBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KLS8vCi0vLyBncHVfdGVzdF9jb25maWdfbWFjLmg6Ci0vLyAg
IEhlbHBlciBmdW5jdGlvbnMgZm9yIGdwdV90ZXN0X2NvbmZpZyB0aGF0IGhhdmUgdG8gYmUgY29t
cGlsZWQgaW4gT2JqZWN0aXZlQysrCi0vLwotCi0jaWZuZGVmIEdQVV9URVNUX0VYUEVDVEFUSU9O
U19HUFVfVEVTVF9DT05GSUdfTUFDX0hfCi0jZGVmaW5lIEdQVV9URVNUX0VYUEVDVEFUSU9OU19H
UFVfVEVTVF9DT05GSUdfTUFDX0hfCi0KLSNpbmNsdWRlICJncHVfaW5mby5oIgotCi1uYW1lc3Bh
Y2UgYmFzZSB7Ci0KLWNsYXNzIFN5c0luZm8KLXsKLSAgcHVibGljOgotICAgIHN0YXRpYyB2b2lk
IE9wZXJhdGluZ1N5c3RlbVZlcnNpb25OdW1iZXJzKAotICAgICAgICBpbnQzMiAqbWFqb3JfdmVy
c2lvbiwgaW50MzIgKm1pbm9yX3ZlcnNpb24sIGludDMyICpidWdmaXhfdmVyc2lvbik7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBiYXNlCi0KLWdwdTo6R1BVSW5mbzo6R1BVRGV2aWNlIEdldEFjdGl2
ZUdQVSgpOwotCi0jZW5kaWYgLy8gR1BVX1RFU1RfRVhQRUNUQVRJT05TX0dQVV9URVNUX0NPTkZJ
R19NQUNfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90
aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnX21hYy5tbSBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9l
eHBlY3RhdGlvbnMvZ3B1X3Rlc3RfY29uZmlnX21hYy5tbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOGNiZDQ5ODk0YmMuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rl
c3RfY29uZmlnX21hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8vIENvcHly
aWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp
Y2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLS8vIGdw
dV90ZXN0X2NvbmZpZ19tYWMubW06Ci0vLyAgIEhlbHBlciBmdW5jdGlvbnMgZm9yIGdwdV90ZXN0
X2NvbmZpZyB0aGF0IGhhdmUgdG8gYmUgY29tcGlsZWQgaW4gT2JqZWN0aXZlQysrCi0KLSNpbmNs
dWRlICJncHVfdGVzdF9jb25maWdfbWFjLmgiCi0KLSNpbXBvcnQgPENvY29hL0NvY29hLmg+Ci0K
LW5hbWVzcGFjZSBiYXNlIHsKLQotdm9pZCBTeXNJbmZvOjpPcGVyYXRpbmdTeXN0ZW1WZXJzaW9u
TnVtYmVycygKLSAgICBpbnQzMiAqbWFqb3JfdmVyc2lvbiwgaW50MzIgKm1pbm9yX3ZlcnNpb24s
IGludDMyICpidWdmaXhfdmVyc2lvbikKLXsKLSNpZiBNQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFV
SVJFRCA8IE1BQ19PU19YX1ZFUlNJT05fMTBfOAotICBHZXN0YWx0KGdlc3RhbHRTeXN0ZW1WZXJz
aW9uTWFqb3IsIHJlaW50ZXJwcmV0X2Nhc3Q8U0ludDMyKj4obWFqb3JfdmVyc2lvbikpOwotICBH
ZXN0YWx0KGdlc3RhbHRTeXN0ZW1WZXJzaW9uTWlub3IsIHJlaW50ZXJwcmV0X2Nhc3Q8U0ludDMy
Kj4obWlub3JfdmVyc2lvbikpOwotICBHZXN0YWx0KGdlc3RhbHRTeXN0ZW1WZXJzaW9uQnVnRml4
LCByZWludGVycHJldF9jYXN0PFNJbnQzMio+KGJ1Z2ZpeF92ZXJzaW9uKSk7Ci0jZWxzZQotICBO
U09wZXJhdGluZ1N5c3RlbVZlcnNpb24gdmVyc2lvbiA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNz
SW5mb10gb3BlcmF0aW5nU3lzdGVtVmVyc2lvbl07Ci0gICptYWpvcl92ZXJzaW9uID0gdmVyc2lv
bi5tYWpvclZlcnNpb247Ci0gICptaW5vcl92ZXJzaW9uID0gdmVyc2lvbi5taW5vclZlcnNpb247
Ci0gICpidWdmaXhfdmVyc2lvbiA9IHZlcnNpb24ucGF0Y2hWZXJzaW9uOwotI2VuZGlmCi19Ci0K
LX0gLy8gbmFtZXNwYWNlIGJhc2UKLQotVUludDMyIEdldEVudHJ5UHJvcGVydHkoaW9fcmVnaXN0
cnlfZW50cnlfdCBlbnRyeSwgQ0ZTdHJpbmdSZWYgcHJvcGVydHlfbmFtZSkgewotICBDRlR5cGVS
ZWYgdHlwZSA9IElPUmVnaXN0cnlFbnRyeVNlYXJjaENGUHJvcGVydHkoZW50cnksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrSU9TZXJ2aWNlUGxh
bmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
cm9wZXJ0eV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga0NGQWxsb2NhdG9yRGVmYXVsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGtJT1JlZ2lzdHJ5SXRlcmF0ZVJlY3Vyc2l2ZWx5IHwg
a0lPUmVnaXN0cnlJdGVyYXRlUGFyZW50cyk7Ci0gIENGRGF0YVJlZiBkYXRhID0gcmVpbnRlcnBy
ZXRfY2FzdDxDRkRhdGFSZWY+KHR5cGUpOwotICBpZiAoIWRhdGEpIHsKLSAgICBDRlJlbGVhc2Uo
ZGF0YSk7Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLQotICBVSW50MzIgdmFsdWUgPSAwOwotICBjb25z
dCB1aW50MzJfdCogdmFsdWVQb2ludGVyID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJf
dCo+KENGRGF0YUdldEJ5dGVQdHIoZGF0YSkpOwotICBpZiAodmFsdWVQb2ludGVyICE9IE5VTEwp
IHsKLSAgICB2YWx1ZSA9ICp2YWx1ZVBvaW50ZXI7Ci0gIH0KLSAgQ0ZSZWxlYXNlKGRhdGEpOwot
ICByZXR1cm4gdmFsdWU7Ci19Ci0KLWdwdTo6R1BVSW5mbzo6R1BVRGV2aWNlIEdldEFjdGl2ZUdQ
VSgpIHsKLSAgZ3B1OjpHUFVJbmZvOjpHUFVEZXZpY2UgZ3B1OwotCi0gIC8vIElnbm9yZSB0aGUg
ZmFjdCB0aGF0IENHRGlzcGxheUlPU2VydmljZVBvcnQgaXMgZGVwcmVjYXRlZCBhcyBBcHBsZQot
ICAvLyBkaWQgbm90IHByb3ZpZGUgYSBnb29kIHJlcGxhY2VtZW50IGZvciBpdCBhcyBvZiAxMC4x
MC4KLSAgLy8gVE9ETyhjd2FsbGV6KSByZXZpc2l0IHdpdGggbGF0ZXIgc3lzdGVtcwotICAjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotICAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdu
b3JlZCAiLVdkZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAgICBpb19yZWdpc3RyeV9lbnRyeV90
IGRzcF9wb3J0ID0gQ0dEaXNwbGF5SU9TZXJ2aWNlUG9ydChrQ0dEaXJlY3RNYWluRGlzcGxheSk7
Ci0gICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLQotICBncHUudmVuZG9yX2lkID0gR2V0
RW50cnlQcm9wZXJ0eShkc3BfcG9ydCwgQ0ZTVFIoInZlbmRvci1pZCIpKTsKLSAgZ3B1LmRldmlj
ZV9pZCA9IEdldEVudHJ5UHJvcGVydHkoZHNwX3BvcnQsIENGU1RSKCJkZXZpY2UtaWQiKSk7Ci0g
IHJldHVybiBncHU7Ci19Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfZXhwZWN0
YXRpb25zX3BhcnNlci5jYyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGly
ZF9wYXJ0eS9ncHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNl
ci5jYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNjNGQ4YzQ1M2IuLjAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9n
cHVfdGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNlci5jYworKysg
L2Rldi9udWxsCkBAIC0xLDU4MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIENo
cm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0v
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotCi0jaW5jbHVkZSAiZ3B1X3Rlc3RfZXhwZWN0
YXRpb25zX3BhcnNlci5oIgotCi0jaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKLQotbmFt
ZXNwYWNlIGJhc2UgewotCi1uYW1lc3BhY2UgewotCi1ib29sIFN0YXJ0c1dpdGhBU0NJSShjb25z
dCBzdGQ6OnN0cmluZyYgc3RyLAotICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJp
bmcmIHNlYXJjaCwKLSAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FzZV9zZW5zaXRpdmUpIHsK
LSAgQVNTRVJUKCFjYXNlX3NlbnNpdGl2ZSk7Ci0gIHJldHVybiBzdHIuY29tcGFyZSgwLCBzZWFy
Y2gubGVuZ3RoKCksIHNlYXJjaCkgPT0gMDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIENoYXI+IGlu
bGluZSBDaGFyIFRvTG93ZXJBU0NJSShDaGFyIGMpIHsKLSAgcmV0dXJuIChjID49ICdBJyAmJiBj
IDw9ICdaJykgPyAoYyArICgnYScgLSAnQScpKSA6IGM7Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1l
IEl0ZXI+Ci1zdGF0aWMgaW5saW5lIGJvb2wgRG9Mb3dlckNhc2VFcXVhbHNBU0NJSShJdGVyIGFf
YmVnaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyIGFf
ZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciogYikgewotICBmb3IgKEl0ZXIgaXQgPSBhX2JlZ2luOyBpdCAhPSBhX2VuZDsgKytpdCwgKyti
KSB7Ci0gICAgaWYgKCEqYiB8fCBiYXNlOjpUb0xvd2VyQVNDSUkoKml0KSAhPSAqYikKLSAgICAg
IHJldHVybiBmYWxzZTsKLSAgfQotICByZXR1cm4gKmIgPT0gMDsKLX0KLQotYm9vbCBMb3dlckNh
c2VFcXVhbHNBU0NJSShjb25zdCBzdGQ6OnN0cmluZyYgYSwgY29uc3QgY2hhciogYikgewotICBy
ZXR1cm4gRG9Mb3dlckNhc2VFcXVhbHNBU0NJSShhLmJlZ2luKCksIGEuZW5kKCksIGIpOwotfQot
Ci19IC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotfSAvLyBuYW1lc3BhY2UgYmFzZQotCi1uYW1l
c3BhY2UgZ3B1IHsKLQotbmFtZXNwYWNlIHsKLQotZW51bSBMaW5lUGFyc2VyU3RhZ2UgewotICBr
TGluZVBhcnNlckJlZ2luID0gMCwKLSAga0xpbmVQYXJzZXJCdWdJRCwKLSAga0xpbmVQYXJzZXJD
b25maWdzLAotICBrTGluZVBhcnNlckNvbG9uLAotICBrTGluZVBhcnNlclRlc3ROYW1lLAotICBr
TGluZVBhcnNlckVxdWFsLAotICBrTGluZVBhcnNlckV4cGVjdGF0aW9ucywKLX07Ci0KLWVudW0g
VG9rZW4gewotICAvLyBvcwotICBrQ29uZmlnV2luWFAgPSAwLAotICBrQ29uZmlnV2luVmlzdGEs
Ci0gIGtDb25maWdXaW43LAotICBrQ29uZmlnV2luOCwKLSAga0NvbmZpZ1dpbjEwLAotICBrQ29u
ZmlnV2luLAotICBrQ29uZmlnTWFjTGVvcGFyZCwKLSAga0NvbmZpZ01hY1Nub3dMZW9wYXJkLAot
ICBrQ29uZmlnTWFjTGlvbiwKLSAga0NvbmZpZ01hY01vdW50YWluTGlvbiwKLSAga0NvbmZpZ01h
Y01hdmVyaWNrcywKLSAga0NvbmZpZ01hY1lvc2VtaXRlLAotICBrQ29uZmlnTWFjRWxDYXBpdGFu
LAotICBrQ29uZmlnTWFjLAotICBrQ29uZmlnTGludXgsCi0gIGtDb25maWdDaHJvbWVPUywKLSAg
a0NvbmZpZ0FuZHJvaWQsCi0gIC8vIGdwdSB2ZW5kb3IKLSAga0NvbmZpZ05WaWRpYSwKLSAga0Nv
bmZpZ0FNRCwKLSAga0NvbmZpZ0ludGVsLAotICBrQ29uZmlnVk1XYXJlLAotICAvLyBidWlsZCB0
eXBlCi0gIGtDb25maWdSZWxlYXNlLAotICBrQ29uZmlnRGVidWcsCi0gIC8vIEFOR0xFIHJlbmRl
cmVyCi0gIGtDb25maWdEM0Q5LAotICBrQ29uZmlnRDNEMTEsCi0gIGtDb25maWdHTERlc2t0b3As
Ci0gIGtDb25maWdHTEVTLAotICAvLyBleHBlY3RhdGlvbgotICBrRXhwZWN0YXRpb25QYXNzLAot
ICBrRXhwZWN0YXRpb25GYWlsLAotICBrRXhwZWN0YXRpb25GbGFreSwKLSAga0V4cGVjdGF0aW9u
VGltZW91dCwKLSAga0V4cGVjdGF0aW9uU2tpcCwKLSAgLy8gc2VwYXJhdG9yCi0gIGtTZXBhcmF0
b3JDb2xvbiwKLSAga1NlcGFyYXRvckVxdWFsLAotCi0gIGtOdW1iZXJPZkV4YWN0TWF0Y2hUb2tl
bnMsCi0KLSAgLy8gb3RoZXJzCi0gIGtDb25maWdHUFVEZXZpY2VJRCwKLSAga1Rva2VuQ29tbWVu
dCwKLSAga1Rva2VuV29yZCwKLX07Ci0KLXN0cnVjdCBUb2tlbkluZm8gewotICBjb25zdCBjaGFy
KiBuYW1lOwotICBpbnQzMiBmbGFnOwotfTsKLQotY29uc3QgVG9rZW5JbmZvIGtUb2tlbkRhdGFb
XSA9IHsKLSAgICB7InhwIiwgR1BVVGVzdENvbmZpZzo6a09zV2luWFB9LAotICAgIHsidmlzdGEi
LCBHUFVUZXN0Q29uZmlnOjprT3NXaW5WaXN0YX0sCi0gICAgeyJ3aW43IiwgR1BVVGVzdENvbmZp
Zzo6a09zV2luN30sCi0gICAgeyJ3aW44IiwgR1BVVGVzdENvbmZpZzo6a09zV2luOH0sCi0gICAg
eyJ3aW4xMCIsIEdQVVRlc3RDb25maWc6OmtPc1dpbjEwfSwKLSAgICB7IndpbiIsIEdQVVRlc3RD
b25maWc6OmtPc1dpbn0sCi0gICAgeyJsZW9wYXJkIiwgR1BVVGVzdENvbmZpZzo6a09zTWFjTGVv
cGFyZH0sCi0gICAgeyJzbm93bGVvcGFyZCIsIEdQVVRlc3RDb25maWc6OmtPc01hY1Nub3dMZW9w
YXJkfSwKLSAgICB7Imxpb24iLCBHUFVUZXN0Q29uZmlnOjprT3NNYWNMaW9ufSwKLSAgICB7Im1v
dW50YWlubGlvbiIsIEdQVVRlc3RDb25maWc6OmtPc01hY01vdW50YWluTGlvbn0sCi0gICAgeyJt
YXZlcmlja3MiLCBHUFVUZXN0Q29uZmlnOjprT3NNYWNNYXZlcmlja3N9LAotICAgIHsieW9zZW1p
dGUiLCBHUFVUZXN0Q29uZmlnOjprT3NNYWNZb3NlbWl0ZX0sCi0gICAgeyJlbGNhcGl0YW4iLCBH
UFVUZXN0Q29uZmlnOjprT3NNYWNFbENhcGl0YW59LAotICAgIHsibWFjIiwgR1BVVGVzdENvbmZp
Zzo6a09zTWFjfSwKLSAgICB7ImxpbnV4IiwgR1BVVGVzdENvbmZpZzo6a09zTGludXh9LAotICAg
IHsiY2hyb21lb3MiLCBHUFVUZXN0Q29uZmlnOjprT3NDaHJvbWVPU30sCi0gICAgeyJhbmRyb2lk
IiwgR1BVVGVzdENvbmZpZzo6a09zQW5kcm9pZH0sCi0gICAgeyJudmlkaWEiLCAweDEwREV9LAot
ICAgIHsiYW1kIiwgMHgxMDAyfSwKLSAgICB7ImludGVsIiwgMHg4MDg2fSwKLSAgICB7InZtd2Fy
ZSIsIDB4MTVhZH0sCi0gICAgeyJyZWxlYXNlIiwgR1BVVGVzdENvbmZpZzo6a0J1aWxkVHlwZVJl
bGVhc2V9LAotICAgIHsiZGVidWciLCBHUFVUZXN0Q29uZmlnOjprQnVpbGRUeXBlRGVidWd9LAot
ICAgIHsiZDNkOSIsIEdQVVRlc3RDb25maWc6OmtBUElEM0Q5fSwKLSAgICB7ImQzZDExIiwgR1BV
VGVzdENvbmZpZzo6a0FQSUQzRDExfSwKLSAgICB7Im9wZW5nbCIsIEdQVVRlc3RDb25maWc6OmtB
UElHTERlc2t0b3B9LAotICAgIHsiZ2xlcyIsIEdQVVRlc3RDb25maWc6OmtBUElHTEVTfSwKLSAg
ICB7InBhc3MiLCBHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjprR3B1VGVzdFBhc3N9LAotICAg
IHsiZmFpbCIsIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OmtHcHVUZXN0RmFpbH0sCi0gICAg
eyJmbGFreSIsIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OmtHcHVUZXN0Rmxha3l9LAotICAg
IHsidGltZW91dCIsIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OmtHcHVUZXN0VGltZW91dH0s
Ci0gICAgeyJza2lwIiwgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6a0dwdVRlc3RTa2lwfSwK
LSAgICB7IjoiLCAwfSwKLSAgICB7Ij0iLCAwfSwKLX07Ci0KLWVudW0gRXJyb3JUeXBlIHsKLSAg
a0Vycm9yRmlsZUlPID0gMCwKLSAga0Vycm9ySWxsZWdhbEVudHJ5LAotICBrRXJyb3JJbnZhbGlk
RW50cnksCi0gIGtFcnJvckVudHJ5V2l0aE9zQ29uZmxpY3RzLAotICBrRXJyb3JFbnRyeVdpdGhH
cHVWZW5kb3JDb25mbGljdHMsCi0gIGtFcnJvckVudHJ5V2l0aEJ1aWxkVHlwZUNvbmZsaWN0cywK
LSAga0Vycm9yRW50cnlXaXRoQVBJQ29uZmxpY3RzLAotICBrRXJyb3JFbnRyeVdpdGhHcHVEZXZp
Y2VJZENvbmZsaWN0cywKLSAga0Vycm9yRW50cnlXaXRoRXhwZWN0YXRpb25Db25mbGljdHMsCi0g
IGtFcnJvckVudHJpZXNPdmVybGFwLAotCi0gIGtOdW1iZXJPZkVycm9ycywKLX07Ci0KLWNvbnN0
IGNoYXIqIGtFcnJvck1lc3NhZ2VbXSA9IHsKLSAgICAiZmlsZSBJTyBmYWlsZWQiLAotICAgICJl
bnRyeSB3aXRoIHdyb25nIGZvcm1hdCIsCi0gICAgImVudHJ5IGludmFsaWQsIGxpa2VseSB3cm9u
ZyBtb2RpZmllcnMgY29tYmluYXRpb24iLAotICAgICJlbnRyeSB3aXRoIE9TIG1vZGlmaWVyIGNv
bmZsaWN0cyIsCi0gICAgImVudHJ5IHdpdGggR1BVIHZlbmRvciBtb2RpZmllciBjb25mbGljdHMi
LAotICAgICJlbnRyeSB3aXRoIEdQVSBidWlsZCB0eXBlIGNvbmZsaWN0cyIsCi0gICAgImVudHJ5
IHdpdGggR1BVIEFQSSBjb25mbGljdHMiLAotICAgICJlbnRyeSB3aXRoIEdQVSBkZXZpY2UgaWQg
Y29uZmxpY3RzIG9yIG1hbGZvcm1hdCIsCi0gICAgImVudHJ5IHdpdGggZXhwZWN0YXRpb24gbW9k
aWZpZXIgY29uZmxpY3RzIiwKLSAgICAidHdvIGVudHJpZXMnIGNvbmZpZ3Mgb3ZlcmxhcCIsCi19
OwotCi1Ub2tlbiBQYXJzZVRva2VuKGNvbnN0IHN0ZDo6c3RyaW5nJiB3b3JkKSB7Ci0gIGlmIChi
YXNlOjpTdGFydHNXaXRoQVNDSUkod29yZCwgIi8vIiwgZmFsc2UpKQotICAgIHJldHVybiBrVG9r
ZW5Db21tZW50OwotICBpZiAoYmFzZTo6U3RhcnRzV2l0aEFTQ0lJKHdvcmQsICIweCIsIGZhbHNl
KSkKLSAgICByZXR1cm4ga0NvbmZpZ0dQVURldmljZUlEOwotCi0gIGZvciAoaW50MzIgaSA9IDA7
IGkgPCBrTnVtYmVyT2ZFeGFjdE1hdGNoVG9rZW5zOyArK2kpIHsKLSAgICBpZiAoYmFzZTo6TG93
ZXJDYXNlRXF1YWxzQVNDSUkod29yZCwga1Rva2VuRGF0YVtpXS5uYW1lKSkKLSAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxUb2tlbj4oaSk7Ci0gIH0KLSAgcmV0dXJuIGtUb2tlbldvcmQ7Ci19Ci0K
LS8vIHJlZmVyZW5jZSBuYW1lIGNhbiBoYXZlIHRoZSBsYXN0IGNoYXJhY3RlciBhcyAqLgotYm9v
bCBOYW1lc01hdGNoaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiByZWYsIGNvbnN0IHN0ZDo6c3RyaW5n
JiB0ZXN0X25hbWUpIHsKLSAgc2l6ZV90IGxlbiA9IHJlZi5sZW5ndGgoKTsKLSAgaWYgKGxlbiA9
PSAwKQotICAgIHJldHVybiBmYWxzZTsKLSAgaWYgKHJlZltsZW4gLSAxXSA9PSAnKicpIHsKLSAg
ICBpZiAodGVzdF9uYW1lLmxlbmd0aCgpID4gbGVuIC0xICYmCi0gICAgICAgIHJlZi5jb21wYXJl
KDAsIGxlbiAtIDEsIHRlc3RfbmFtZSwgMCwgbGVuIC0gMSkgPT0gMCkKLSAgICAgIHJldHVybiB0
cnVlOwotICAgIHJldHVybiBmYWxzZTsKLSAgfQotICByZXR1cm4gKHJlZiA9PSB0ZXN0X25hbWUp
OwotfQotCi19ICAvLyBuYW1lc3BhY2UgYW5vbnltb3VzCi0KLUdQVVRlc3RFeHBlY3RhdGlvbnNQ
YXJzZXI6OkdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXIoKSB7Ci0gIC8vIFNvbWUgc2FuaXR5IGNo
ZWNrLgotICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oa051bWJlck9m
RXhhY3RNYXRjaFRva2VucykgPT0KLSAgICAgICAgICAgICAgICBzaXplb2Yoa1Rva2VuRGF0YSkg
LyBzaXplb2Yoa1Rva2VuRGF0YVswXSksICJzYW5pdHkgY2hlY2siKTsKLSAgc3RhdGljX2Fzc2Vy
dChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGtOdW1iZXJPZkVycm9ycykgPT0KLSAgICAgICAg
ICAgICAgICBzaXplb2Yoa0Vycm9yTWVzc2FnZSkgLyBzaXplb2Yoa0Vycm9yTWVzc2FnZVswXSks
ICJzYW5pdHkgY2hlY2siKTsKLX0KLQotR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6fkdQVVRl
c3RFeHBlY3RhdGlvbnNQYXJzZXIoKSB7Ci19Ci0KLWJvb2wgR1BVVGVzdEV4cGVjdGF0aW9uc1Bh
cnNlcjo6TG9hZFRlc3RFeHBlY3RhdGlvbnMoY29uc3Qgc3RkOjpzdHJpbmcmIGRhdGEpIHsKLSAg
ZW50cmllc18uY2xlYXIoKTsKLSAgZXJyb3JfbWVzc2FnZXNfLmNsZWFyKCk7Ci0KLSAgc3RkOjp2
ZWN0b3I8c3RkOjpzdHJpbmc+IGxpbmVzID0gYmFzZTo6U3BsaXRTdHJpbmcoCi0gICAgICBkYXRh
LCAiXG4iLCBiYXNlOjpUUklNX1dISVRFU1BBQ0UsIGJhc2U6OlNQTElUX1dBTlRfQUxMKTsKLSAg
Ym9vbCBydCA9IHRydWU7Ci0gIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGluZXMuc2l6ZSgpOyAr
K2kpIHsKLSAgICBpZiAoIVBhcnNlTGluZShsaW5lc1tpXSwgaSArIDEpKQotICAgICAgcnQgPSBm
YWxzZTsKLSAgfQotICBpZiAoRGV0ZWN0Q29uZmxpY3RzQmV0d2VlbkVudHJpZXMoKSkgewotICAg
IGVudHJpZXNfLmNsZWFyKCk7Ci0gICAgcnQgPSBmYWxzZTsKLSAgfQotCi0gIHJldHVybiBydDsK
LX0KLQotYm9vbCBHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjpMb2FkVGVzdEV4cGVjdGF0aW9u
c0Zyb21GaWxlKAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoKSB7Ci0gIGVudHJpZXNfLmNs
ZWFyKCk7Ci0gIGVycm9yX21lc3NhZ2VzXy5jbGVhcigpOwotCi0gIHN0ZDo6c3RyaW5nIGRhdGE7
Ci0gIGlmICghYmFzZTo6UmVhZEZpbGVUb1N0cmluZyhwYXRoLCAmZGF0YSkpIHsKLSAgICBlcnJv
cl9tZXNzYWdlc18ucHVzaF9iYWNrKGtFcnJvck1lc3NhZ2Vba0Vycm9yRmlsZUlPXSk7Ci0gICAg
cmV0dXJuIGZhbHNlOwotICB9Ci0gIHJldHVybiBMb2FkVGVzdEV4cGVjdGF0aW9ucyhkYXRhKTsK
LX0KLQotaW50MzIgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6R2V0VGVzdEV4cGVjdGF0aW9u
KAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0X25hbWUsCi0gICAgY29uc3QgR1BVVGVzdEJv
dENvbmZpZyYgYm90X2NvbmZpZykgY29uc3QgewotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVu
dHJpZXNfLnNpemUoKTsgKytpKSB7Ci0gICAgaWYgKE5hbWVzTWF0Y2hpbmcoZW50cmllc19baV0u
dGVzdF9uYW1lLCB0ZXN0X25hbWUpICYmCi0gICAgICAgIGJvdF9jb25maWcuTWF0Y2hlcyhlbnRy
aWVzX1tpXS50ZXN0X2NvbmZpZykpCi0gICAgICByZXR1cm4gZW50cmllc19baV0udGVzdF9leHBl
Y3RhdGlvbjsKLSAgfQotICByZXR1cm4ga0dwdVRlc3RQYXNzOwotfQotCi1jb25zdCBzdGQ6OnZl
Y3RvcjxzdGQ6OnN0cmluZz4mCi1HUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjpHZXRFcnJvck1l
c3NhZ2VzKCkgY29uc3QgewotICByZXR1cm4gZXJyb3JfbWVzc2FnZXNfOwotfQotCi1ib29sIEdQ
VVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OlBhcnNlQ29uZmlnKAotICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nJiBjb25maWdfZGF0YSwgR1BVVGVzdENvbmZpZyogY29uZmlnKSB7Ci0gIERDSEVDSyhjb25m
aWcpOwotICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdG9rZW5zID0gYmFzZTo6U3BsaXRTdHJp
bmcoCi0gICAgICBjb25maWdfZGF0YSwgYmFzZTo6a1doaXRlc3BhY2VBU0NJSSwgYmFzZTo6S0VF
UF9XSElURVNQQUNFLAotICAgICAgYmFzZTo6U1BMSVRfV0FOVF9OT05FTVBUWSk7Ci0KLSAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB0b2tlbnMuc2l6ZSgpOyArK2kpIHsKLSAgICBUb2tlbiB0b2tl
biA9IFBhcnNlVG9rZW4odG9rZW5zW2ldKTsKLSAgICBzd2l0Y2ggKHRva2VuKSB7Ci0gICAgICBj
YXNlIGtDb25maWdXaW5YUDoKLSAgICAgIGNhc2Uga0NvbmZpZ1dpblZpc3RhOgotICAgICAgY2Fz
ZSBrQ29uZmlnV2luNzoKLSAgICAgIGNhc2Uga0NvbmZpZ1dpbjg6Ci0gICAgICBjYXNlIGtDb25m
aWdXaW4xMDoKLSAgICAgIGNhc2Uga0NvbmZpZ1dpbjoKLSAgICAgIGNhc2Uga0NvbmZpZ01hY0xl
b3BhcmQ6Ci0gICAgICBjYXNlIGtDb25maWdNYWNTbm93TGVvcGFyZDoKLSAgICAgIGNhc2Uga0Nv
bmZpZ01hY0xpb246Ci0gICAgICBjYXNlIGtDb25maWdNYWNNb3VudGFpbkxpb246Ci0gICAgICBj
YXNlIGtDb25maWdNYWNNYXZlcmlja3M6Ci0gICAgICBjYXNlIGtDb25maWdNYWNZb3NlbWl0ZToK
LSAgICAgIGNhc2Uga0NvbmZpZ01hY0VsQ2FwaXRhbjoKLSAgICAgIGNhc2Uga0NvbmZpZ01hYzoK
LSAgICAgIGNhc2Uga0NvbmZpZ0xpbnV4OgotICAgICAgY2FzZSBrQ29uZmlnQ2hyb21lT1M6Ci0g
ICAgICBjYXNlIGtDb25maWdBbmRyb2lkOgotICAgICAgY2FzZSBrQ29uZmlnTlZpZGlhOgotICAg
ICAgY2FzZSBrQ29uZmlnQU1EOgotICAgICAgY2FzZSBrQ29uZmlnSW50ZWw6Ci0gICAgICBjYXNl
IGtDb25maWdWTVdhcmU6Ci0gICAgICBjYXNlIGtDb25maWdSZWxlYXNlOgotICAgICAgY2FzZSBr
Q29uZmlnRGVidWc6Ci0gICAgICBjYXNlIGtDb25maWdEM0Q5OgotICAgICAgY2FzZSBrQ29uZmln
RDNEMTE6Ci0gICAgICBjYXNlIGtDb25maWdHTERlc2t0b3A6Ci0gICAgICBjYXNlIGtDb25maWdH
TEVTOgotICAgICAgY2FzZSBrQ29uZmlnR1BVRGV2aWNlSUQ6Ci0gICAgICAgIGlmICh0b2tlbiA9
PSBrQ29uZmlnR1BVRGV2aWNlSUQpIHsKLSAgICAgICAgICBpZiAoIVVwZGF0ZVRlc3RDb25maWco
Y29uZmlnLCB0b2tlbnNbaV0sIDApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgIGlmICghVXBkYXRlVGVzdENvbmZpZyhjb25maWcsIHRva2Vu
LCAwKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBicmVh
azsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0gIH0KLSAg
cmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6UGFyc2VM
aW5lKAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBsaW5lX2RhdGEsIHNpemVfdCBsaW5lX251bWJl
cikgewotICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gdG9rZW5zID0gYmFzZTo6U3BsaXRTdHJp
bmcoCi0gICAgICBsaW5lX2RhdGEsIGJhc2U6OmtXaGl0ZXNwYWNlQVNDSUksIGJhc2U6OktFRVBf
V0hJVEVTUEFDRSwKLSAgICAgIGJhc2U6OlNQTElUX1dBTlRfTk9ORU1QVFkpOwotICBpbnQzMiBz
dGFnZSA9IGtMaW5lUGFyc2VyQmVnaW47Ci0gIEdQVVRlc3RFeHBlY3RhdGlvbkVudHJ5IGVudHJ5
OwotICBlbnRyeS5saW5lX251bWJlciA9IGxpbmVfbnVtYmVyOwotICBHUFVUZXN0Q29uZmlnJiBj
b25maWcgPSBlbnRyeS50ZXN0X2NvbmZpZzsKLSAgYm9vbCBjb21tZW50c19lbmNvdW50ZXJlZCA9
IGZhbHNlOwotICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRva2Vucy5zaXplKCkgJiYgIWNvbW1l
bnRzX2VuY291bnRlcmVkOyArK2kpIHsKLSAgICBUb2tlbiB0b2tlbiA9IFBhcnNlVG9rZW4odG9r
ZW5zW2ldKTsKLSAgICBzd2l0Y2ggKHRva2VuKSB7Ci0gICAgICBjYXNlIGtUb2tlbkNvbW1lbnQ6
Ci0gICAgICAgIGNvbW1lbnRzX2VuY291bnRlcmVkID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgICBjYXNlIGtDb25maWdXaW5YUDoKLSAgICAgIGNhc2Uga0NvbmZpZ1dpblZpc3RhOgotICAg
ICAgY2FzZSBrQ29uZmlnV2luNzoKLSAgICAgIGNhc2Uga0NvbmZpZ1dpbjg6Ci0gICAgICBjYXNl
IGtDb25maWdXaW4xMDoKLSAgICAgIGNhc2Uga0NvbmZpZ1dpbjoKLSAgICAgIGNhc2Uga0NvbmZp
Z01hY0xlb3BhcmQ6Ci0gICAgICBjYXNlIGtDb25maWdNYWNTbm93TGVvcGFyZDoKLSAgICAgIGNh
c2Uga0NvbmZpZ01hY0xpb246Ci0gICAgICBjYXNlIGtDb25maWdNYWNNb3VudGFpbkxpb246Ci0g
ICAgICBjYXNlIGtDb25maWdNYWNNYXZlcmlja3M6Ci0gICAgICBjYXNlIGtDb25maWdNYWNZb3Nl
bWl0ZToKLSAgICAgIGNhc2Uga0NvbmZpZ01hY0VsQ2FwaXRhbjoKLSAgICAgIGNhc2Uga0NvbmZp
Z01hYzoKLSAgICAgIGNhc2Uga0NvbmZpZ0xpbnV4OgotICAgICAgY2FzZSBrQ29uZmlnQ2hyb21l
T1M6Ci0gICAgICBjYXNlIGtDb25maWdBbmRyb2lkOgotICAgICAgY2FzZSBrQ29uZmlnTlZpZGlh
OgotICAgICAgY2FzZSBrQ29uZmlnQU1EOgotICAgICAgY2FzZSBrQ29uZmlnSW50ZWw6Ci0gICAg
ICBjYXNlIGtDb25maWdWTVdhcmU6Ci0gICAgICBjYXNlIGtDb25maWdSZWxlYXNlOgotICAgICAg
Y2FzZSBrQ29uZmlnRGVidWc6Ci0gICAgICBjYXNlIGtDb25maWdEM0Q5OgotICAgICAgY2FzZSBr
Q29uZmlnRDNEMTE6Ci0gICAgICBjYXNlIGtDb25maWdHTERlc2t0b3A6Ci0gICAgICBjYXNlIGtD
b25maWdHTEVTOgotICAgICAgY2FzZSBrQ29uZmlnR1BVRGV2aWNlSUQ6Ci0gICAgICAgIC8vIE1P
RElGSUVSUywgY291bGQgYmUgaW4gYW55IG9yZGVyLCBuZWVkIGF0IGxlYXN0IG9uZS4KLSAgICAg
ICAgaWYgKHN0YWdlICE9IGtMaW5lUGFyc2VyQ29uZmlncyAmJiBzdGFnZSAhPSBrTGluZVBhcnNl
ckJ1Z0lEKSB7Ci0gICAgICAgICAgUHVzaEVycm9yTWVzc2FnZShrRXJyb3JNZXNzYWdlW2tFcnJv
cklsbGVnYWxFbnRyeV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlcik7
Ci0gICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0b2tlbiA9
PSBrQ29uZmlnR1BVRGV2aWNlSUQpIHsKLSAgICAgICAgICBpZiAoIVVwZGF0ZVRlc3RDb25maWco
JmNvbmZpZywgdG9rZW5zW2ldLCBsaW5lX251bWJlcikpCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgaWYgKCFVcGRhdGVUZXN0Q29uZmlnKCZj
b25maWcsIHRva2VuLCBsaW5lX251bWJlcikpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKHN0YWdlID09IGtMaW5lUGFyc2VyQnVnSUQpCi0gICAgICAg
ICAgc3RhZ2UrKzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIGtTZXBhcmF0b3JDb2xvbjoK
LSAgICAgICAgLy8gOgotICAgICAgICBpZiAoc3RhZ2UgIT0ga0xpbmVQYXJzZXJDb25maWdzKSB7
Ci0gICAgICAgICAgUHVzaEVycm9yTWVzc2FnZShrRXJyb3JNZXNzYWdlW2tFcnJvcklsbGVnYWxF
bnRyeV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlcik7Ci0gICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHN0YWdlKys7Ci0gICAgICAgIGJy
ZWFrOwotICAgICAgY2FzZSBrU2VwYXJhdG9yRXF1YWw6Ci0gICAgICAgIC8vID0KLSAgICAgICAg
aWYgKHN0YWdlICE9IGtMaW5lUGFyc2VyVGVzdE5hbWUpIHsKLSAgICAgICAgICBQdXNoRXJyb3JN
ZXNzYWdlKGtFcnJvck1lc3NhZ2Vba0Vycm9ySWxsZWdhbEVudHJ5XSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxpbmVfbnVtYmVyKTsKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIH0KLSAgICAgICAgc3RhZ2UrKzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIGtUb2tl
bldvcmQ6Ci0gICAgICAgIC8vIEJVR19JRCBvciBURVNUX05BTUUKLSAgICAgICAgaWYgKHN0YWdl
ID09IGtMaW5lUGFyc2VyQmVnaW4pIHsKLSAgICAgICAgICAvLyBCdWcgSUQgaXMgbm90IHVzZWQg
Zm9yIGFueXRoaW5nOyBpZ25vcmUgaXQuCi0gICAgICAgIH0gZWxzZSBpZiAoc3RhZ2UgPT0ga0xp
bmVQYXJzZXJDb2xvbikgewotICAgICAgICAgIGVudHJ5LnRlc3RfbmFtZSA9IHRva2Vuc1tpXTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBQdXNoRXJyb3JNZXNzYWdlKGtFcnJvck1lc3Nh
Z2Vba0Vycm9ySWxsZWdhbEVudHJ5XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVf
bnVtYmVyKTsKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgc3Rh
Z2UrKzsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIGtFeHBlY3RhdGlvblBhc3M6Ci0gICAg
ICBjYXNlIGtFeHBlY3RhdGlvbkZhaWw6Ci0gICAgICBjYXNlIGtFeHBlY3RhdGlvbkZsYWt5Ogot
ICAgICAgY2FzZSBrRXhwZWN0YXRpb25UaW1lb3V0OgotICAgICAgY2FzZSBrRXhwZWN0YXRpb25T
a2lwOgotICAgICAgICAvLyBURVNUX0VYUEVDVEFUSU9OUwotICAgICAgICBpZiAoc3RhZ2UgIT0g
a0xpbmVQYXJzZXJFcXVhbCAmJiBzdGFnZSAhPSBrTGluZVBhcnNlckV4cGVjdGF0aW9ucykgewot
ICAgICAgICAgIFB1c2hFcnJvck1lc3NhZ2Uoa0Vycm9yTWVzc2FnZVtrRXJyb3JJbGxlZ2FsRW50
cnldLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXIpOwotICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoKGtUb2tlbkRhdGFbdG9rZW5d
LmZsYWcgJiBlbnRyeS50ZXN0X2V4cGVjdGF0aW9uKSAhPSAwKSB7Ci0gICAgICAgICAgUHVzaEVy
cm9yTWVzc2FnZShrRXJyb3JNZXNzYWdlW2tFcnJvckVudHJ5V2l0aEV4cGVjdGF0aW9uQ29uZmxp
Y3RzXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyKTsKLSAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZW50cnkudGVzdF9leHBlY3RhdGlv
biA9Ci0gICAgICAgICAgICAoa1Rva2VuRGF0YVt0b2tlbl0uZmxhZyB8IGVudHJ5LnRlc3RfZXhw
ZWN0YXRpb24pOwotICAgICAgICBpZiAoc3RhZ2UgPT0ga0xpbmVQYXJzZXJFcXVhbCkKLSAgICAg
ICAgICBzdGFnZSsrOwotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIFVO
UkVBQ0hBQkxFKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgfQotICBpZiAoc3RhZ2UgPT0g
a0xpbmVQYXJzZXJCZWdpbikgewotICAgIC8vIFRoZSB3aG9sZSBsaW5lIGlzIGVtcHR5IG9yIGFs
bCBjb21tZW50cwotICAgIHJldHVybiB0cnVlOwotICB9Ci0gIGlmIChzdGFnZSA9PSBrTGluZVBh
cnNlckV4cGVjdGF0aW9ucykgewotICAgIGlmICghY29uZmlnLklzVmFsaWQoKSkgewotICAgICAg
ICBQdXNoRXJyb3JNZXNzYWdlKGtFcnJvck1lc3NhZ2Vba0Vycm9ySW52YWxpZEVudHJ5XSwgbGlu
ZV9udW1iZXIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIGVudHJpZXNfLnB1
c2hfYmFjayhlbnRyeSk7Ci0gICAgcmV0dXJuIHRydWU7Ci0gIH0KLSAgUHVzaEVycm9yTWVzc2Fn
ZShrRXJyb3JNZXNzYWdlW2tFcnJvcklsbGVnYWxFbnRyeV0sIGxpbmVfbnVtYmVyKTsKLSAgcmV0
dXJuIGZhbHNlOwotfQotCi1ib29sIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OlVwZGF0ZVRl
c3RDb25maWcoCi0gICAgR1BVVGVzdENvbmZpZyogY29uZmlnLCBpbnQzMiB0b2tlbiwgc2l6ZV90
IGxpbmVfbnVtYmVyKSB7Ci0gIERDSEVDSyhjb25maWcpOwotICBzd2l0Y2ggKHRva2VuKSB7Ci0g
ICAgY2FzZSBrQ29uZmlnV2luWFA6Ci0gICAgY2FzZSBrQ29uZmlnV2luVmlzdGE6Ci0gICAgY2Fz
ZSBrQ29uZmlnV2luNzoKLSAgICBjYXNlIGtDb25maWdXaW44OgotICAgIGNhc2Uga0NvbmZpZ1dp
bjEwOgotICAgIGNhc2Uga0NvbmZpZ1dpbjoKLSAgICBjYXNlIGtDb25maWdNYWNMZW9wYXJkOgot
ICAgIGNhc2Uga0NvbmZpZ01hY1Nub3dMZW9wYXJkOgotICAgIGNhc2Uga0NvbmZpZ01hY0xpb246
Ci0gICAgY2FzZSBrQ29uZmlnTWFjTW91bnRhaW5MaW9uOgotICAgIGNhc2Uga0NvbmZpZ01hY01h
dmVyaWNrczoKLSAgICBjYXNlIGtDb25maWdNYWNZb3NlbWl0ZToKLSAgICBjYXNlIGtDb25maWdN
YWNFbENhcGl0YW46Ci0gICAgY2FzZSBrQ29uZmlnTWFjOgotICAgIGNhc2Uga0NvbmZpZ0xpbnV4
OgotICAgIGNhc2Uga0NvbmZpZ0Nocm9tZU9TOgotICAgIGNhc2Uga0NvbmZpZ0FuZHJvaWQ6Ci0g
ICAgICBpZiAoKGNvbmZpZy0+b3MoKSAmIGtUb2tlbkRhdGFbdG9rZW5dLmZsYWcpICE9IDApIHsK
LSAgICAgICAgUHVzaEVycm9yTWVzc2FnZShrRXJyb3JNZXNzYWdlW2tFcnJvckVudHJ5V2l0aE9z
Q29uZmxpY3RzXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlcik7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGNvbmZpZy0+c2V0X29zKGNvbmZpZy0+
b3MoKSB8IGtUb2tlbkRhdGFbdG9rZW5dLmZsYWcpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBr
Q29uZmlnTlZpZGlhOgotICAgIGNhc2Uga0NvbmZpZ0FNRDoKLSAgICBjYXNlIGtDb25maWdJbnRl
bDoKLSAgICBjYXNlIGtDb25maWdWTVdhcmU6Ci0gICAgICB7Ci0gICAgICAgIHVpbnQzMiBncHVf
dmVuZG9yID0KLSAgICAgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMj4oa1Rva2VuRGF0YVt0b2tl
bl0uZmxhZyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29uZmlnLT5ncHVfdmVu
ZG9yKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICBpZiAoY29uZmlnLT5ncHVfdmVuZG9yKClb
aV0gPT0gZ3B1X3ZlbmRvcikgewotICAgICAgICAgICAgUHVzaEVycm9yTWVzc2FnZSgKLSAgICAg
ICAgICAgICAgICBrRXJyb3JNZXNzYWdlW2tFcnJvckVudHJ5V2l0aEdwdVZlbmRvckNvbmZsaWN0
c10sCi0gICAgICAgICAgICAgICAgbGluZV9udW1iZXIpOwotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBjb25maWctPkFkZEdQVVZlbmRv
cihncHVfdmVuZG9yKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2Uga0NvbmZpZ1Jl
bGVhc2U6Ci0gICAgY2FzZSBrQ29uZmlnRGVidWc6Ci0gICAgICBpZiAoKGNvbmZpZy0+YnVpbGRf
dHlwZSgpICYga1Rva2VuRGF0YVt0b2tlbl0uZmxhZykgIT0gMCkgewotICAgICAgICBQdXNoRXJy
b3JNZXNzYWdlKAotICAgICAgICAgICAga0Vycm9yTWVzc2FnZVtrRXJyb3JFbnRyeVdpdGhCdWls
ZFR5cGVDb25mbGljdHNdLAotICAgICAgICAgICAgbGluZV9udW1iZXIpOwotICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBjb25maWctPnNldF9idWlsZF90eXBlKAotICAgICAg
ICAgIGNvbmZpZy0+YnVpbGRfdHlwZSgpIHwga1Rva2VuRGF0YVt0b2tlbl0uZmxhZyk7Ci0gICAg
ICBicmVhazsKLSAgICBjYXNlIGtDb25maWdEM0Q5OgotICAgIGNhc2Uga0NvbmZpZ0QzRDExOgot
ICAgIGNhc2Uga0NvbmZpZ0dMRGVza3RvcDoKLSAgICBjYXNlIGtDb25maWdHTEVTOgotICAgICAg
aWYgKChjb25maWctPmFwaSgpICYga1Rva2VuRGF0YVt0b2tlbl0uZmxhZykgIT0gMCkgewotICAg
ICAgICBQdXNoRXJyb3JNZXNzYWdlKGtFcnJvck1lc3NhZ2Vba0Vycm9yRW50cnlXaXRoQVBJQ29u
ZmxpY3RzXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlcik7Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGNvbmZpZy0+c2V0X2FwaShjb25maWctPmFw
aSgpIHwga1Rva2VuRGF0YVt0b2tlbl0uZmxhZyk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0
OgotICAgICAgVU5SRUFDSEFCTEUoKTsKLSAgICAgIGJyZWFrOwotICB9Ci0gIHJldHVybiB0cnVl
OwotfQotCi1ib29sIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXI6OlVwZGF0ZVRlc3RDb25maWco
Ci0gICAgR1BVVGVzdENvbmZpZyogY29uZmlnLAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBncHVf
ZGV2aWNlX2lkLAotICAgIHNpemVfdCBsaW5lX251bWJlcikgewotICBEQ0hFQ0soY29uZmlnKTsK
LSAgdWludDMyIGRldmljZV9pZCA9IDA7Ci0gIGlmIChjb25maWctPmdwdV9kZXZpY2VfaWQoKSAh
PSAwIHx8Ci0gICAgICAhYmFzZTo6SGV4U3RyaW5nVG9VSW50KGdwdV9kZXZpY2VfaWQsICZkZXZp
Y2VfaWQpIHx8Ci0gICAgICBkZXZpY2VfaWQgPT0gMCkgewotICAgIFB1c2hFcnJvck1lc3NhZ2Uo
a0Vycm9yTWVzc2FnZVtrRXJyb3JFbnRyeVdpdGhHcHVEZXZpY2VJZENvbmZsaWN0c10sCi0gICAg
ICAgICAgICAgICAgICAgICBsaW5lX251bWJlcik7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0g
IGNvbmZpZy0+c2V0X2dwdV9kZXZpY2VfaWQoZGV2aWNlX2lkKTsKLSAgcmV0dXJuIHRydWU7Ci19
Ci0KLWJvb2wgR1BVVGVzdEV4cGVjdGF0aW9uc1BhcnNlcjo6RGV0ZWN0Q29uZmxpY3RzQmV0d2Vl
bkVudHJpZXMoKSB7Ci0gIGJvb2wgcnQgPSBmYWxzZTsKLSAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBlbnRyaWVzXy5zaXplKCk7ICsraSkgewotICAgIGZvciAoc2l6ZV90IGogPSBpICsgMTsgaiA8
IGVudHJpZXNfLnNpemUoKTsgKytqKSB7Ci0gICAgICBpZiAoZW50cmllc19baV0udGVzdF9uYW1l
ID09IGVudHJpZXNfW2pdLnRlc3RfbmFtZSAmJgotICAgICAgICAgIGVudHJpZXNfW2ldLnRlc3Rf
Y29uZmlnLk92ZXJsYXBzV2l0aChlbnRyaWVzX1tqXS50ZXN0X2NvbmZpZykpIHsKLSAgICAgICAg
UHVzaEVycm9yTWVzc2FnZShrRXJyb3JNZXNzYWdlW2tFcnJvckVudHJpZXNPdmVybGFwXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBlbnRyaWVzX1tpXS5saW5lX251bWJlciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBlbnRyaWVzX1tqXS5saW5lX251bWJlcik7Ci0gICAgICAgIHJ0ID0g
dHJ1ZTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHJ0OwotfQotCi12b2lkIEdQVVRl
c3RFeHBlY3RhdGlvbnNQYXJzZXI6OlB1c2hFcnJvck1lc3NhZ2UoCi0gICAgY29uc3Qgc3RkOjpz
dHJpbmcmIG1lc3NhZ2UsIHNpemVfdCBsaW5lX251bWJlcikgewotICBlcnJvcl9tZXNzYWdlc18u
cHVzaF9iYWNrKAotICAgICAgYmFzZTo6U3RyaW5nUHJpbnRmKCJMaW5lICVkIDogJXMiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGludD4obGluZV9udW1iZXIpLCBtZXNz
YWdlLmNfc3RyKCkpKTsKLX0KLQotdm9pZCBHUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjpQdXNo
RXJyb3JNZXNzYWdlKAotICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBtZXNzYWdlLAotICAgIHNpemVf
dCBlbnRyeTFfbGluZV9udW1iZXIsCi0gICAgc2l6ZV90IGVudHJ5Ml9saW5lX251bWJlcikgewot
ICBlcnJvcl9tZXNzYWdlc18ucHVzaF9iYWNrKAotICAgICAgYmFzZTo6U3RyaW5nUHJpbnRmKCJM
aW5lICVkIGFuZCAlZCA6ICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxpbnQ+KGVudHJ5MV9saW5lX251bWJlciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8aW50PihlbnRyeTJfbGluZV9udW1iZXIpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIG1lc3NhZ2UuY19zdHIoKSkpOwotfQotCi1HUFVUZXN0RXhwZWN0YXRpb25zUGFyc2VyOjog
R1BVVGVzdEV4cGVjdGF0aW9uRW50cnk6OkdQVVRlc3RFeHBlY3RhdGlvbkVudHJ5KCkKLSAgICA6
IHRlc3RfZXhwZWN0YXRpb24oMCksCi0gICAgICBsaW5lX251bWJlcigwKSB7Ci19Ci0KLX0gIC8v
IG5hbWVzcGFjZSBncHUKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3RoaXJkX3BhcnR5L2dwdV90ZXN0X2V4cGVjdGF0aW9ucy9ncHVfdGVzdF9leHBlY3Rh
dGlvbnNfcGFyc2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRf
cGFydHkvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zL2dwdV90ZXN0X2V4cGVjdGF0aW9uc19wYXJzZXIu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTExMjcwMGUyNWQuLjAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9ncHVf
dGVzdF9leHBlY3RhdGlvbnMvZ3B1X3Rlc3RfZXhwZWN0YXRpb25zX3BhcnNlci5oCisrKyAvZGV2
L251bGwKQEAgLTEsODYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1
bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv
ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQotLy8gZm91
bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KLQotI2lmbmRlZiBHUFVfQ09ORklHX0dQVV9URVNUX0VY
UEVDVEFUSU9OU19QQVJTRVJfSF8KLSNkZWZpbmUgR1BVX0NPTkZJR19HUFVfVEVTVF9FWFBFQ1RB
VElPTlNfUEFSU0VSX0hfCi0KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8dmVjdG9yPgot
Ci0jaW5jbHVkZSAiYW5nbGVfY29uZmlnLmgiCi0jaW5jbHVkZSAiZ3B1X3Rlc3RfY29uZmlnLmgi
Ci0KLW5hbWVzcGFjZSBncHUgewotCi1jbGFzcyBHUFVfRVhQT1JUIEdQVVRlc3RFeHBlY3RhdGlv
bnNQYXJzZXIgewotIHB1YmxpYzoKLSAgZW51bSBHUFVUZXN0RXhwZWN0YXRpb24gewotICAgIGtH
cHVUZXN0UGFzcyA9IDEgPDwgMCwKLSAgICBrR3B1VGVzdEZhaWwgPSAxIDw8IDEsCi0gICAga0dw
dVRlc3RGbGFreSA9IDEgPDwgMiwKLSAgICBrR3B1VGVzdFRpbWVvdXQgPSAxIDw8IDMsCi0gICAg
a0dwdVRlc3RTa2lwID0gMSA8PCA0LAotICB9OwotCi0gIEdQVVRlc3RFeHBlY3RhdGlvbnNQYXJz
ZXIoKTsKLSAgfkdQVVRlc3RFeHBlY3RhdGlvbnNQYXJzZXIoKTsKLQotICAvLyBQYXJzZSB0aGUg
dGV4dCBleHBlY3RhdGlvbnMsIGFuZCBpZiBubyBlcnJvciBpcyBlbmNvdW50ZXJlZCwKLSAgLy8g
c2F2ZSBhbGwgdGhlIGVudHJpZXMuIE90aGVyd2lzZSwgZ2VuZXJhdGUgZXJyb3IgbWVzc2FnZXMu
Ci0gIC8vIFJldHVybiB0cnVlIGlmIHBhcnNpbmcgc3VjY2VlZHMuCi0gIGJvb2wgTG9hZFRlc3RF
eHBlY3RhdGlvbnMoY29uc3Qgc3RkOjpzdHJpbmcmIGRhdGEpOwotICBib29sIExvYWRUZXN0RXhw
ZWN0YXRpb25zRnJvbUZpbGUoY29uc3Qgc3RkOjpzdHJpbmcmIHBhdGgpOwotCi0gIC8vIFF1ZXJ5
IGVycm9yIG1lc3NhZ2VzIGZyb20gdGhlIGxhc3QgTG9hZFRlc3RFeHBlY3RhdGlvbnMoKSBjYWxs
LgotICBjb25zdCBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4mIEdldEVycm9yTWVzc2FnZXMoKSBj
b25zdDsKLQotICAvLyBHZXQgdGhlIHRlc3QgZXhwZWN0YXRpb24gb2YgYSBnaXZlbiB0ZXN0IG9u
IGEgZ2l2ZW4gYm90LgotICBpbnQzMiBHZXRUZXN0RXhwZWN0YXRpb24oY29uc3Qgc3RkOjpzdHJp
bmcmIHRlc3RfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdQVVRlc3RC
b3RDb25maWcmIGJvdF9jb25maWcpIGNvbnN0OwotCi0gIC8vIFBhcnNlIGEgbGlzdCBvZiBjb25m
aWcgbW9kaWZpZXJzLiBJZiB3ZSBoYXZlIGEgdmFsaWQgZW50cnkgd2l0aCBubwotICAvLyBjb25m
bGljdHMsIHwgY29uZmlnIHwgc3RvcmVzIGl0LCBhbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMgdHJ1
ZS4KLSAgYm9vbCBQYXJzZUNvbmZpZyhjb25zdCBzdGQ6OnN0cmluZyYgY29uZmlnX2RhdGEsIEdQ
VVRlc3RDb25maWcqIGNvbmZpZyk7Ci0KLSBwcml2YXRlOgotICBzdHJ1Y3QgR1BVVGVzdEV4cGVj
dGF0aW9uRW50cnkgewotICAgIEdQVVRlc3RFeHBlY3RhdGlvbkVudHJ5KCk7Ci0KLSAgICBzdGQ6
OnN0cmluZyB0ZXN0X25hbWU7Ci0gICAgR1BVVGVzdENvbmZpZyB0ZXN0X2NvbmZpZzsKLSAgICBp
bnQzMiB0ZXN0X2V4cGVjdGF0aW9uOwotICAgIHNpemVfdCBsaW5lX251bWJlcjsKLSAgfTsKLQot
ICAvLyBQYXJzZSBhIGxpbmUgb2YgdGV4dC4gSWYgd2UgaGF2ZSBhIHZhbGlkIGVudHJ5LCBzYXZl
IGl0OyBvdGhlcndpc2UsCi0gIC8vIGdlbmVyYXRlIGVycm9yIG1lc3NhZ2VzLgotICBib29sIFBh
cnNlTGluZShjb25zdCBzdGQ6OnN0cmluZyYgbGluZV9kYXRhLCBzaXplX3QgbGluZV9udW1iZXIp
OwotCi0gIC8vIFVwZGF0ZSBPUy9HUFVWZW5kb3IvQnVpbGRUeXBlIG1vZGlmaWVycy4gTWF5IGdl
bmVyYXRlIGFuIGVycm9yIG1lc3NhZ2UuCi0gIGJvb2wgVXBkYXRlVGVzdENvbmZpZygKLSAgICAg
IEdQVVRlc3RDb25maWcqIGNvbmZpZywgaW50MzIgdG9rZW4sIHNpemVfdCBsaW5lX251bWJlcik7
Ci0KLSAgLy8gVXBkYXRlIEdQVURldmljZUlEIG1vZGlmaWVyLiBNYXkgZ2VuZXJhdGUgYW4gZXJy
b3IgbWVzc2FnZS4KLSAgYm9vbCBVcGRhdGVUZXN0Q29uZmlnKEdQVVRlc3RDb25maWcqIGNvbmZp
ZywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nICYgZ3B1X2Rldmlj
ZV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsaW5lX251bWJlcik7Ci0KLSAg
Ly8gQ2hlY2sgaWYgdHdvIGVudHJpZXMnIGNvbmZpZyBvdmVybGFwIHdpdGggZWFjaCBvdGhlci4g
TWF5IGdlbmVyYXRlIGFuCi0gIC8vIGVycm9yIG1lc3NhZ2UuCi0gIGJvb2wgRGV0ZWN0Q29uZmxp
Y3RzQmV0d2VlbkVudHJpZXMoKTsKLQotICAvLyBTYXZlIGFuIGVycm9yIG1lc3NhZ2UsIHdoaWNo
IGNhbiBiZSBxdWVyaWVkIGxhdGVyLgotICB2b2lkIFB1c2hFcnJvck1lc3NhZ2UoY29uc3Qgc3Rk
OjpzdHJpbmcmIG1lc3NhZ2UsIHNpemVfdCBsaW5lX251bWJlcik7Ci0gIHZvaWQgUHVzaEVycm9y
TWVzc2FnZShjb25zdCBzdGQ6OnN0cmluZyYgbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBlbnRyeTFfbGluZV9udW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgZW50cnkyX2xpbmVfbnVtYmVyKTsKLQotICBzdGQ6OnZlY3RvcjxHUFVUZXN0RXhwZWN0
YXRpb25FbnRyeT4gZW50cmllc187Ci0gIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBlcnJvcl9t
ZXNzYWdlc187Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgZ3B1Ci0KLSNlbmRpZiAgLy8gR1BVX0NP
TkZJR19HUFVfVEVTVF9FWFBFQ1RBVElPTlNfUEFSU0VSX0hfCi0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vTElDRU5T
RSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpz
b24vTElDRU5TRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNkOTdkMTYzZWQuLjAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9w
YXJ0eS9yYXBpZGpzb24vTElDRU5TRQorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLUNv
cHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAotCi1QZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk
LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci1vZiB0aGlz
IHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdh
cmUiKSwgdG8gZGVhbAotaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1
ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotdG8gdXNlLCBjb3B5LCBtb2RpZnks
IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotY29w
aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNv
ZnR3YXJlIGlzCi1mdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zOgotCi1UaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz
aW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotYWxsIGNvcGllcyBvciBzdWJzdGFudGlh
bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0KLVRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi
QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi1JTVBMSUVE
LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSwKLUZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H
RU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVS
UyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotTElBQklMSVRZLCBX
SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ
TkcgRlJPTSwKLU9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI
RSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KLVRIRSBTT0ZUV0FSRS4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL1JFQURNRS5jaHJvbWl1bSBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vUkVBRE1FLmNocm9taXVt
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjY2NTlhOGY2Ni4uMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlk
anNvbi9SRUFETUUuY2hyb21pdW0KKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLU5hbWU6
IFJhcGlkSlNPTgotVVJMOiBodHRwczovL2dpdGh1Yi5jb20vbWlsb3lpcC9yYXBpZGpzb24KLVZl
cnNpb246IDI0ZGQ3ZWY4MzliNzk5NDFkMTI5ZTgzMzM2OGU5MTNhYTljMDQ1ZGEKLUxpY2Vuc2U6
IEN1c3RvbQotTGljZW5zZSBGaWxlOiBMSUNFTlNFCi0KLURlc2NyaXB0aW9uOgotUmFwaWRKU09O
IGlzIGEgSlNPTiBwYXJzZXIgYW5kIGdlbmVyYXRvciBmb3IgQysrLgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vYWxsb2NhdG9ycy5oIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9p
bmNsdWRlL3JhcGlkanNvbi9hbGxvY2F0b3JzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDBiZDJkMjg5NWFlLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2FsbG9j
YXRvcnMuaAorKysgL2Rldi9udWxsCkBAIC0xLDI0NSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMp
IDIwMTEgTWlsbyBZaXAKLS8vCi0vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl
IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0vLyBvZiB0aGlzIHNv
ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi
KSwgdG8gZGVhbAotLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1
ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotLy8gdG8gdXNlLCBjb3B5LCBtb2Rp
ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAot
Ly8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g
dGhlIFNvZnR3YXJlIGlzCi0vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zOgotLy8KLS8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu
ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0vLyBhbGwgY29w
aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLS8vCi0vLyBUSEUg
U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO
RCwgRVhQUkVTUyBPUgotLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU
SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0vLyBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUK
LS8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s
IERBTUFHRVMgT1IgT1RIRVIKLS8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg
Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi0vLyBPVVQgT0YgT1Ig
SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ
TkdTIElOCi0vLyBUSEUgU09GVFdBUkUuCi0KLSNpZm5kZWYgUkFQSURKU09OX0FMTE9DQVRPUlNf
SF8KLSNkZWZpbmUgUkFQSURKU09OX0FMTE9DQVRPUlNfSF8KLQotI2luY2x1ZGUgInJhcGlkanNv
bi5oIgotCi1SQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KLS8vIEFsbG9jYXRvcgotCi0vKiEgXGNsYXNzIHJhcGlkanNvbjo6QWxsb2NhdG9yCi0gICAg
XGJyaWVmIENvbmNlcHQgZm9yIGFsbG9jYXRpbmcsIHJlc2l6aW5nIGFuZCBmcmVlaW5nIG1lbW9y
eSBibG9jay4KLSAgICAKLSAgICBOb3RlIHRoYXQgTWFsbG9jKCkgYW5kIFJlYWxsb2MoKSBhcmUg
bm9uLXN0YXRpYyBidXQgRnJlZSgpIGlzIHN0YXRpYy4KLSAgICAKLSAgICBTbyBpZiBhbiBhbGxv
Y2F0b3IgbmVlZCB0byBzdXBwb3J0IEZyZWUoKSwgaXQgbmVlZHMgdG8gcHV0IGl0cyBwb2ludGVy
IGluIAotICAgIHRoZSBoZWFkZXIgb2YgbWVtb3J5IGJsb2NrLgotCi1cY29kZQotY29uY2VwdCBB
bGxvY2F0b3IgewotICAgIHN0YXRpYyBjb25zdCBib29sIGtOZWVkRnJlZTsgICAgLy8hPCBXaGV0
aGVyIHRoaXMgYWxsb2NhdG9yIG5lZWRzIHRvIGNhbGwgRnJlZSgpLgotCi0gICAgLy8gQWxsb2Nh
dGUgYSBtZW1vcnkgYmxvY2suCi0gICAgLy8gXHBhcmFtIHNpemUgb2YgdGhlIG1lbW9yeSBibG9j
ayBpbiBieXRlcy4KLSAgICAvLyBccmV0dXJucyBwb2ludGVyIHRvIHRoZSBtZW1vcnkgYmxvY2su
Ci0gICAgdm9pZCogTWFsbG9jKHNpemVfdCBzaXplKTsKLQotICAgIC8vIFJlc2l6ZSBhIG1lbW9y
eSBibG9jay4KLSAgICAvLyBccGFyYW0gb3JpZ2luYWxQdHIgVGhlIHBvaW50ZXIgdG8gY3VycmVu
dCBtZW1vcnkgYmxvY2suIE51bGwgcG9pbnRlciBpcyBwZXJtaXR0ZWQuCi0gICAgLy8gXHBhcmFt
IG9yaWdpbmFsU2l6ZSBUaGUgY3VycmVudCBzaXplIGluIGJ5dGVzLiAoRGVzaWduIGlzc3VlOiBz
aW5jZSBzb21lIGFsbG9jYXRvciBtYXkgbm90IGJvb2sta2VlcCB0aGlzLCBleHBsaWNpdGx5IHBh
c3MgdG8gaXQgY2FuIHNhdmUgbWVtb3J5LikKLSAgICAvLyBccGFyYW0gbmV3U2l6ZSB0aGUgbmV3
IHNpemUgaW4gYnl0ZXMuCi0gICAgdm9pZCogUmVhbGxvYyh2b2lkKiBvcmlnaW5hbFB0ciwgc2l6
ZV90IG9yaWdpbmFsU2l6ZSwgc2l6ZV90IG5ld1NpemUpOwotCi0gICAgLy8gRnJlZSBhIG1lbW9y
eSBibG9jay4KLSAgICAvLyBccGFyYW0gcG9pbnRlciB0byB0aGUgbWVtb3J5IGJsb2NrLiBOdWxs
IHBvaW50ZXIgaXMgcGVybWl0dGVkLgotICAgIHN0YXRpYyB2b2lkIEZyZWUodm9pZCAqcHRyKTsK
LX07Ci1cZW5kY29kZQotKi8KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gQ3J0QWxsb2Nh
dG9yCi0KLS8vISBDLXJ1bnRpbWUgbGlicmFyeSBhbGxvY2F0b3IuCi0vKiEgVGhpcyBjbGFzcyBp
cyBqdXN0IHdyYXBwZXIgZm9yIHN0YW5kYXJkIEMgbGlicmFyeSBtZW1vcnkgcm91dGluZXMuCi0g
ICAgXG5vdGUgaW1wbGVtZW50cyBBbGxvY2F0b3IgY29uY2VwdAotKi8KLWNsYXNzIENydEFsbG9j
YXRvciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wga05lZWRGcmVlID0gdHJ1ZTsK
LSAgICB2b2lkKiBNYWxsb2Moc2l6ZV90IHNpemUpIHsgcmV0dXJuIHN0ZDo6bWFsbG9jKHNpemUp
OyB9Ci0gICAgdm9pZCogUmVhbGxvYyh2b2lkKiBvcmlnaW5hbFB0ciwgc2l6ZV90IG9yaWdpbmFs
U2l6ZSwgc2l6ZV90IG5ld1NpemUpIHsgKHZvaWQpb3JpZ2luYWxTaXplOyByZXR1cm4gc3RkOjpy
ZWFsbG9jKG9yaWdpbmFsUHRyLCBuZXdTaXplKTsgfQotICAgIHN0YXRpYyB2b2lkIEZyZWUodm9p
ZCAqcHRyKSB7IHN0ZDo6ZnJlZShwdHIpOyB9Ci19OwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ci0vLyBNZW1vcnlQb29sQWxsb2NhdG9yCi0KLS8vISBEZWZhdWx0IG1lbW9yeSBhbGxvY2F0b3Ig
dXNlZCBieSB0aGUgcGFyc2VyIGFuZCBET00uCi0vKiEgVGhpcyBhbGxvY2F0b3IgYWxsb2NhdGUg
bWVtb3J5IGJsb2NrcyBmcm9tIHByZS1hbGxvY2F0ZWQgbWVtb3J5IGNodW5rcy4gCi0KLSAgICBJ
dCBkb2VzIG5vdCBmcmVlIG1lbW9yeSBibG9ja3MuIEFuZCBSZWFsbG9jKCkgb25seSBhbGxvY2F0
ZSBuZXcgbWVtb3J5LgotCi0gICAgVGhlIG1lbW9yeSBjaHVua3MgYXJlIGFsbG9jYXRlZCBieSBC
YXNlQWxsb2NhdG9yLCB3aGljaCBpcyBDcnRBbGxvY2F0b3IgYnkgZGVmYXVsdC4KLQotICAgIFVz
ZXIgbWF5IGFsc28gc3VwcGx5IGEgYnVmZmVyIGFzIHRoZSBmaXJzdCBjaHVuay4KLQotICAgIElm
IHRoZSB1c2VyLWJ1ZmZlciBpcyBmdWxsIHRoZW4gYWRkaXRpb25hbCBjaHVua3MgYXJlIGFsbG9j
YXRlZCBieSBCYXNlQWxsb2NhdG9yLgotCi0gICAgVGhlIHVzZXItYnVmZmVyIGlzIG5vdCBkZWFs
bG9jYXRlZCBieSB0aGlzIGFsbG9jYXRvci4KLQotICAgIFx0cGFyYW0gQmFzZUFsbG9jYXRvciB0
aGUgYWxsb2NhdG9yIHR5cGUgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IGNodW5rcy4gRGVmYXVsdCBp
cyBDcnRBbGxvY2F0b3IuCi0gICAgXG5vdGUgaW1wbGVtZW50cyBBbGxvY2F0b3IgY29uY2VwdAot
Ki8KLXRlbXBsYXRlIDx0eXBlbmFtZSBCYXNlQWxsb2NhdG9yID0gQ3J0QWxsb2NhdG9yPgotY2xh
c3MgTWVtb3J5UG9vbEFsbG9jYXRvciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wg
a05lZWRGcmVlID0gZmFsc2U7ICAgIC8vITwgVGVsbCB1c2VycyB0aGF0IG5vIG5lZWQgdG8gY2Fs
bCBGcmVlKCkgd2l0aCB0aGlzIGFsbG9jYXRvci4gKGNvbmNlcHQgQWxsb2NhdG9yKQotCi0gICAg
Ly8hIENvbnN0cnVjdG9yIHdpdGggY2h1bmtTaXplLgotICAgIC8qISBccGFyYW0gY2h1bmtTaXpl
IFRoZSBzaXplIG9mIG1lbW9yeSBjaHVuay4gVGhlIGRlZmF1bHQgaXMga0RlZmF1bHRDaHVua1Np
emUuCi0gICAgICAgIFxwYXJhbSBiYXNlQWxsb2NhdG9yIFRoZSBhbGxvY2F0b3IgZm9yIGFsbG9j
YXRpbmcgbWVtb3J5IGNodW5rcy4KLSAgICAqLwotICAgIE1lbW9yeVBvb2xBbGxvY2F0b3Ioc2l6
ZV90IGNodW5rU2l6ZSA9IGtEZWZhdWx0Q2h1bmtDYXBhY2l0eSwgQmFzZUFsbG9jYXRvciogYmFz
ZUFsbG9jYXRvciA9IDApIDogCi0gICAgICAgIGNodW5rSGVhZF8oMCksIGNodW5rX2NhcGFjaXR5
XyhjaHVua1NpemUpLCB1c2VyQnVmZmVyXygwKSwgYmFzZUFsbG9jYXRvcl8oYmFzZUFsbG9jYXRv
ciksIG93bkJhc2VBbGxvY2F0b3JfKDApCi0gICAgewotICAgIH0KLQotICAgIC8vISBDb25zdHJ1
Y3RvciB3aXRoIHVzZXItc3VwcGxpZWQgYnVmZmVyLgotICAgIC8qISBUaGUgdXNlciBidWZmZXIg
d2lsbCBiZSB1c2VkIGZpcnN0bHkuIFdoZW4gaXQgaXMgZnVsbCwgbWVtb3J5IHBvb2wgYWxsb2Nh
dGVzIG5ldyBjaHVuayB3aXRoIGNodW5rIHNpemUuCi0KLSAgICAgICAgVGhlIHVzZXIgYnVmZmVy
IHdpbGwgbm90IGJlIGRlYWxsb2NhdGVkIHdoZW4gdGhpcyBhbGxvY2F0b3IgaXMgZGVzdHJ1Y3Rl
ZC4KLQotICAgICAgICBccGFyYW0gYnVmZmVyIFVzZXIgc3VwcGxpZWQgYnVmZmVyLgotICAgICAg
ICBccGFyYW0gc2l6ZSBTaXplIG9mIHRoZSBidWZmZXIgaW4gYnl0ZXMuIEl0IG11c3QgYXQgbGVh
c3QgbGFyZ2VyIHRoYW4gc2l6ZW9mKENodW5rSGVhZGVyKS4KLSAgICAgICAgXHBhcmFtIGNodW5r
U2l6ZSBUaGUgc2l6ZSBvZiBtZW1vcnkgY2h1bmsuIFRoZSBkZWZhdWx0IGlzIGtEZWZhdWx0Q2h1
bmtTaXplLgotICAgICAgICBccGFyYW0gYmFzZUFsbG9jYXRvciBUaGUgYWxsb2NhdG9yIGZvciBh
bGxvY2F0aW5nIG1lbW9yeSBjaHVua3MuCi0gICAgKi8KLSAgICBNZW1vcnlQb29sQWxsb2NhdG9y
KHZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUsIHNpemVfdCBjaHVua1NpemUgPSBrRGVmYXVsdENo
dW5rQ2FwYWNpdHksIEJhc2VBbGxvY2F0b3IqIGJhc2VBbGxvY2F0b3IgPSAwKSA6Ci0gICAgICAg
IGNodW5rSGVhZF8oMCksIGNodW5rX2NhcGFjaXR5XyhjaHVua1NpemUpLCB1c2VyQnVmZmVyXyhi
dWZmZXIpLCBiYXNlQWxsb2NhdG9yXyhiYXNlQWxsb2NhdG9yKSwgb3duQmFzZUFsbG9jYXRvcl8o
MCkKLSAgICB7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoYnVmZmVyICE9IDApOwotICAgICAg
ICBSQVBJREpTT05fQVNTRVJUKHNpemUgPiBzaXplb2YoQ2h1bmtIZWFkZXIpKTsKLSAgICAgICAg
Y2h1bmtIZWFkXyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q2h1bmtIZWFkZXIqPihidWZmZXIpOwotICAg
ICAgICBjaHVua0hlYWRfLT5jYXBhY2l0eSA9IHNpemUgLSBzaXplb2YoQ2h1bmtIZWFkZXIpOwot
ICAgICAgICBjaHVua0hlYWRfLT5zaXplID0gMDsKLSAgICAgICAgY2h1bmtIZWFkXy0+bmV4dCA9
IDA7Ci0gICAgfQotCi0gICAgLy8hIERlc3RydWN0b3IuCi0gICAgLyohIFRoaXMgZGVhbGxvY2F0
ZXMgYWxsIG1lbW9yeSBjaHVua3MsIGV4Y2x1ZGluZyB0aGUgdXNlci1zdXBwbGllZCBidWZmZXIu
Ci0gICAgKi8KLSAgICB+TWVtb3J5UG9vbEFsbG9jYXRvcigpIHsKLSAgICAgICAgQ2xlYXIoKTsK
LSAgICAgICAgUkFQSURKU09OX0RFTEVURShvd25CYXNlQWxsb2NhdG9yXyk7Ci0gICAgfQotCi0g
ICAgLy8hIERlYWxsb2NhdGVzIGFsbCBtZW1vcnkgY2h1bmtzLCBleGNsdWRpbmcgdGhlIHVzZXIt
c3VwcGxpZWQgYnVmZmVyLgotICAgIHZvaWQgQ2xlYXIoKSB7Ci0gICAgICAgIHdoaWxlKGNodW5r
SGVhZF8gIT0gMCAmJiBjaHVua0hlYWRfICE9IHVzZXJCdWZmZXJfKSB7Ci0gICAgICAgICAgICBD
aHVua0hlYWRlciogbmV4dCA9IGNodW5rSGVhZF8tPm5leHQ7Ci0gICAgICAgICAgICBiYXNlQWxs
b2NhdG9yXy0+RnJlZShjaHVua0hlYWRfKTsKLSAgICAgICAgICAgIGNodW5rSGVhZF8gPSBuZXh0
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8hIENvbXB1dGVzIHRoZSB0b3RhbCBjYXBhY2l0
eSBvZiBhbGxvY2F0ZWQgbWVtb3J5IGNodW5rcy4KLSAgICAvKiEgXHJldHVybiB0b3RhbCBjYXBh
Y2l0eSBpbiBieXRlcy4KLSAgICAqLwotICAgIHNpemVfdCBDYXBhY2l0eSgpIGNvbnN0IHsKLSAg
ICAgICAgc2l6ZV90IGNhcGFjaXR5ID0gMDsKLSAgICAgICAgZm9yIChDaHVua0hlYWRlciogYyA9
IGNodW5rSGVhZF87IGMgIT0gMDsgYyA9IGMtPm5leHQpCi0gICAgICAgICAgICBjYXBhY2l0eSAr
PSBjLT5jYXBhY2l0eTsKLSAgICAgICAgcmV0dXJuIGNhcGFjaXR5OwotICAgIH0KLQotICAgIC8v
ISBDb21wdXRlcyB0aGUgbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQuCi0gICAgLyohIFxyZXR1cm4g
dG90YWwgdXNlZCBieXRlcy4KLSAgICAqLwotICAgIHNpemVfdCBTaXplKCkgY29uc3QgewotICAg
ICAgICBzaXplX3Qgc2l6ZSA9IDA7Ci0gICAgICAgIGZvciAoQ2h1bmtIZWFkZXIqIGMgPSBjaHVu
a0hlYWRfOyBjICE9IDA7IGMgPSBjLT5uZXh0KQotICAgICAgICAgICAgc2l6ZSArPSBjLT5zaXpl
OwotICAgICAgICByZXR1cm4gc2l6ZTsKLSAgICB9Ci0KLSAgICAvLyEgQWxsb2NhdGVzIGEgbWVt
b3J5IGJsb2NrLiAoY29uY2VwdCBBbGxvY2F0b3IpCi0gICAgdm9pZCogTWFsbG9jKHNpemVfdCBz
aXplKSB7Ci0gICAgICAgIHNpemUgPSBSQVBJREpTT05fQUxJR04oc2l6ZSk7Ci0gICAgICAgIGlm
IChjaHVua0hlYWRfID09IDAgfHwgY2h1bmtIZWFkXy0+c2l6ZSArIHNpemUgPiBjaHVua0hlYWRf
LT5jYXBhY2l0eSkKLSAgICAgICAgICAgIEFkZENodW5rKGNodW5rX2NhcGFjaXR5XyA+IHNpemUg
PyBjaHVua19jYXBhY2l0eV8gOiBzaXplKTsKLQotICAgICAgICB2b2lkICpidWZmZXIgPSByZWlu
dGVycHJldF9jYXN0PGNoYXIgKj4oY2h1bmtIZWFkXyArIDEpICsgY2h1bmtIZWFkXy0+c2l6ZTsK
LSAgICAgICAgY2h1bmtIZWFkXy0+c2l6ZSArPSBzaXplOwotICAgICAgICByZXR1cm4gYnVmZmVy
OwotICAgIH0KLQotICAgIC8vISBSZXNpemVzIGEgbWVtb3J5IGJsb2NrIChjb25jZXB0IEFsbG9j
YXRvcikKLSAgICB2b2lkKiBSZWFsbG9jKHZvaWQqIG9yaWdpbmFsUHRyLCBzaXplX3Qgb3JpZ2lu
YWxTaXplLCBzaXplX3QgbmV3U2l6ZSkgewotICAgICAgICBpZiAob3JpZ2luYWxQdHIgPT0gMCkK
LSAgICAgICAgICAgIHJldHVybiBNYWxsb2MobmV3U2l6ZSk7Ci0KLSAgICAgICAgLy8gRG8gbm90
IHNocmluayBpZiBuZXcgc2l6ZSBpcyBzbWFsbGVyIHRoYW4gb3JpZ2luYWwKLSAgICAgICAgaWYg
KG9yaWdpbmFsU2l6ZSA+PSBuZXdTaXplKQotICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsUHRy
OwotCi0gICAgICAgIC8vIFNpbXBseSBleHBhbmQgaXQgaWYgaXQgaXMgdGhlIGxhc3QgYWxsb2Nh
dGlvbiBhbmQgdGhlcmUgaXMgc3VmZmljaWVudCBzcGFjZQotICAgICAgICBpZiAob3JpZ2luYWxQ
dHIgPT0gKGNoYXIgKikoY2h1bmtIZWFkXyArIDEpICsgY2h1bmtIZWFkXy0+c2l6ZSAtIG9yaWdp
bmFsU2l6ZSkgewotICAgICAgICAgICAgc2l6ZV90IGluY3JlbWVudCA9IHN0YXRpY19jYXN0PHNp
emVfdD4obmV3U2l6ZSAtIG9yaWdpbmFsU2l6ZSk7Ci0gICAgICAgICAgICBpbmNyZW1lbnQgPSBS
QVBJREpTT05fQUxJR04oaW5jcmVtZW50KTsKLSAgICAgICAgICAgIGlmIChjaHVua0hlYWRfLT5z
aXplICsgaW5jcmVtZW50IDw9IGNodW5rSGVhZF8tPmNhcGFjaXR5KSB7Ci0gICAgICAgICAgICAg
ICAgY2h1bmtIZWFkXy0+c2l6ZSArPSBpbmNyZW1lbnQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IG9yaWdpbmFsUHRyOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUmVh
bGxvYyBwcm9jZXNzOiBhbGxvY2F0ZSBhbmQgY29weSBtZW1vcnksIGRvIG5vdCBmcmVlIG9yaWdp
bmFsIGJ1ZmZlci4KLSAgICAgICAgdm9pZCogbmV3QnVmZmVyID0gTWFsbG9jKG5ld1NpemUpOwot
ICAgICAgICBSQVBJREpTT05fQVNTRVJUKG5ld0J1ZmZlciAhPSAwKTsgICAvLyBEbyBub3QgaGFu
ZGxlIG91dC1vZi1tZW1vcnkgZXhwbGljaXRseS4KLSAgICAgICAgcmV0dXJuIHN0ZDo6bWVtY3B5
KG5ld0J1ZmZlciwgb3JpZ2luYWxQdHIsIG9yaWdpbmFsU2l6ZSk7Ci0gICAgfQotCi0gICAgLy8h
IEZyZWVzIGEgbWVtb3J5IGJsb2NrIChjb25jZXB0IEFsbG9jYXRvcikKLSAgICBzdGF0aWMgdm9p
ZCBGcmVlKHZvaWQgKnB0cikgeyAodm9pZClwdHI7IH0gLy8gRG8gbm90aGluZwotCi1wcml2YXRl
OgotICAgIC8vISBDb3B5IGNvbnN0cnVjdG9yIGlzIG5vdCBwZXJtaXR0ZWQuCi0gICAgTWVtb3J5
UG9vbEFsbG9jYXRvcihjb25zdCBNZW1vcnlQb29sQWxsb2NhdG9yJiByaHMpIC8qID0gZGVsZXRl
ICovOwotICAgIC8vISBDb3B5IGFzc2lnbm1lbnQgb3BlcmF0b3IgaXMgbm90IHBlcm1pdHRlZC4K
LSAgICBNZW1vcnlQb29sQWxsb2NhdG9yJiBvcGVyYXRvcj0oY29uc3QgTWVtb3J5UG9vbEFsbG9j
YXRvciYgcmhzKSAvKiA9IGRlbGV0ZSAqLzsKLQotICAgIC8vISBDcmVhdGVzIGEgbmV3IGNodW5r
LgotICAgIC8qISBccGFyYW0gY2FwYWNpdHkgQ2FwYWNpdHkgb2YgdGhlIGNodW5rIGluIGJ5dGVz
LgotICAgICovCi0gICAgdm9pZCBBZGRDaHVuayhzaXplX3QgY2FwYWNpdHkpIHsKLSAgICAgICAg
aWYgKCFiYXNlQWxsb2NhdG9yXykKLSAgICAgICAgICAgIG93bkJhc2VBbGxvY2F0b3JfID0gYmFz
ZUFsbG9jYXRvcl8gPSBSQVBJREpTT05fTkVXKEJhc2VBbGxvY2F0b3IoKSk7Ci0gICAgICAgIENo
dW5rSGVhZGVyKiBjaHVuayA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q2h1bmtIZWFkZXIqPihiYXNlQWxs
b2NhdG9yXy0+TWFsbG9jKHNpemVvZihDaHVua0hlYWRlcikgKyBjYXBhY2l0eSkpOwotICAgICAg
ICBjaHVuay0+Y2FwYWNpdHkgPSBjYXBhY2l0eTsKLSAgICAgICAgY2h1bmstPnNpemUgPSAwOwot
ICAgICAgICBjaHVuay0+bmV4dCA9IGNodW5rSGVhZF87Ci0gICAgICAgIGNodW5rSGVhZF8gPSAg
Y2h1bms7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGludCBrRGVmYXVsdENodW5rQ2FwYWNp
dHkgPSA2NCAqIDEwMjQ7IC8vITwgRGVmYXVsdCBjaHVuayBjYXBhY2l0eS4KLQotICAgIC8vISBD
aHVuayBoZWFkZXIgZm9yIHBlcnBlbmRpbmcgdG8gZWFjaCBjaHVuay4KLSAgICAvKiEgQ2h1bmtz
IGFyZSBzdG9yZWQgYXMgYSBzaW5nbHkgbGlua2VkIGxpc3QuCi0gICAgKi8KLSAgICBzdHJ1Y3Qg
Q2h1bmtIZWFkZXIgewotICAgICAgICBzaXplX3QgY2FwYWNpdHk7ICAgIC8vITwgQ2FwYWNpdHkg
b2YgdGhlIGNodW5rIGluIGJ5dGVzIChleGNsdWRpbmcgdGhlIGhlYWRlciBpdHNlbGYpLgotICAg
ICAgICBzaXplX3Qgc2l6ZTsgICAgICAgIC8vITwgQ3VycmVudCBzaXplIG9mIGFsbG9jYXRlZCBt
ZW1vcnkgaW4gYnl0ZXMuCi0gICAgICAgIENodW5rSGVhZGVyICpuZXh0OyAgLy8hPCBOZXh0IGNo
dW5rIGluIHRoZSBsaW5rZWQgbGlzdC4KLSAgICB9OwotCi0gICAgQ2h1bmtIZWFkZXIgKmNodW5r
SGVhZF87ICAgIC8vITwgSGVhZCBvZiB0aGUgY2h1bmsgbGlua2VkLWxpc3QuIE9ubHkgdGhlIGhl
YWQgY2h1bmsgc2VydmVzIGFsbG9jYXRpb24uCi0gICAgc2l6ZV90IGNodW5rX2NhcGFjaXR5Xzsg
ICAgIC8vITwgVGhlIG1pbmltdW0gY2FwYWNpdHkgb2YgY2h1bmsgd2hlbiB0aGV5IGFyZSBhbGxv
Y2F0ZWQuCi0gICAgdm9pZCAqdXNlckJ1ZmZlcl87ICAgICAgICAgIC8vITwgVXNlciBzdXBwbGll
ZCBidWZmZXIuCi0gICAgQmFzZUFsbG9jYXRvciogYmFzZUFsbG9jYXRvcl87ICAvLyE8IGJhc2Ug
YWxsb2NhdG9yIGZvciBhbGxvY2F0aW5nIG1lbW9yeSBjaHVua3MuCi0gICAgQmFzZUFsbG9jYXRv
ciogb3duQmFzZUFsbG9jYXRvcl87ICAgLy8hPCBiYXNlIGFsbG9jYXRvciBjcmVhdGVkIGJ5IHRo
aXMgb2JqZWN0LgotfTsKLQotUkFQSURKU09OX05BTUVTUEFDRV9FTkQKLQotI2VuZGlmIC8vIFJB
UElESlNPTl9FTkNPRElOR1NfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZG9jdW1l
bnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBp
ZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZG9jdW1lbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggOTRkNmU1MzU1ZmIuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24v
ZG9jdW1lbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDE5MzIgKzAsMCBAQAotLy8gQ29weXJpZ2h0
IChDKSAyMDExIE1pbG8gWWlwCi0vLwotLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg
ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQotLy8gb2YgdGhp
cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3
YXJlIiksIHRvIGRlYWwKLS8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp
bmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKLS8vIHRvIHVzZSwgY29weSwg
bW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNl
bGwKLS8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3
aG9tIHRoZSBTb2Z0d2FyZSBpcwotLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLS8vCi0vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj
ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotLy8gYWxs
IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0vLwotLy8g
VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z
IEtJTkQsIEVYUFJFU1MgT1IKLS8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQg
VE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotLy8gRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFCi0vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM
QUlNLCBEQU1BR0VTIE9SIE9USEVSCi0vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O
IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAotLy8gT1VUIE9G
IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBE
RUFMSU5HUyBJTgotLy8gVEhFIFNPRlRXQVJFLgotCi0jaWZuZGVmIFJBUElESlNPTl9ET0NVTUVO
VF9IXwotI2RlZmluZSBSQVBJREpTT05fRE9DVU1FTlRfSF8KLQotLyohIFxmaWxlIGRvY3VtZW50
LmggKi8KLQotI2luY2x1ZGUgInJlYWRlci5oIgotI2luY2x1ZGUgImludGVybmFsL21ldGEuaCIK
LSNpbmNsdWRlICJpbnRlcm5hbC9zdHJmdW5jLmgiCi0jaW5jbHVkZSA8bmV3PiAgICAgIC8vIHBs
YWNlbWVudCBuZXcKLQotI2lmZGVmIF9NU0NfVkVSCi1SQVBJREpTT05fRElBR19QVVNICi1SQVBJ
REpTT05fRElBR19PRkYoNDEyNykgLy8gY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFu
dAotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykKLVJBUElESlNPTl9ESUFHX1BVU0gKLVJBUElESlNP
Tl9ESUFHX09GRihlZmZjKyspCi0jZW5kaWYKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8g
UkFQSURKU09OX0hBU19TVERTVFJJTkcKLQotI2lmbmRlZiBSQVBJREpTT05fSEFTX1NURFNUUklO
RwotI2lmZGVmIFJBUElESlNPTl9ET1hZR0VOX1JVTk5JTkcKLSNkZWZpbmUgUkFQSURKU09OX0hB
U19TVERTVFJJTkcgMSAvLyBmb3JjZSBnZW5lcmF0aW9uIG9mIGRvY3VtZW50YXRpb24KLSNlbHNl
Ci0jZGVmaW5lIFJBUElESlNPTl9IQVNfU1REU1RSSU5HIDAgLy8gbm8gc3RkOjpzdHJpbmcgc3Vw
cG9ydCBieSBkZWZhdWx0Ci0jZW5kaWYKLS8qISBcZGVmIFJBUElESlNPTl9IQVNfU1REU1RSSU5H
Ci0gICAgXGluZ3JvdXAgUkFQSURKU09OX0NPTkZJRwotICAgIFxicmllZiBFbmFibGUgUmFwaWRK
U09OIHN1cHBvcnQgZm9yIFxjIHN0ZDo6c3RyaW5nCi0KLSAgICBCeSBkZWZpbmluZyB0aGlzIHBy
ZXByb2Nlc3NvciBzeW1ib2wgdG8gXGMgMSwgc2V2ZXJhbCBjb252ZW5pZW5jZSBmdW5jdGlvbnMg
Zm9yIHVzaW5nCi0gICAgXHJlZiByYXBpZGpzb246OkdlbmVyaWNWYWx1ZSB3aXRoIFxjIHN0ZDo6
c3RyaW5nIGFyZSBlbmFibGVkLCBlc3BlY2lhbGx5Ci0gICAgZm9yIGNvbnN0cnVjdGlvbiBhbmQg
Y29tcGFyaXNvbi4KLQotICAgIFxoaWRlaW5pdGlhbGl6ZXIKLSovCi0jaW5jbHVkZSA8c3RyaW5n
PgotI2VuZGlmIC8vIFJBUElESlNPTl9IQVNfU1REU1RSSU5HCi0KLSNpZm5kZWYgUkFQSURKU09O
X05PTUVNQkVSSVRFUkFUT1JDTEFTUwotI2luY2x1ZGUgPGl0ZXJhdG9yPiAvLyBzdGQ6Oml0ZXJh
dG9yLCBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnCi0jZW5kaWYKLQotI2lmIFJBUElE
SlNPTl9IQVNfQ1hYMTFfUlZBTFVFX1JFRlMKLSNpbmNsdWRlIDx1dGlsaXR5PiAvLyBzdGQ6Om1v
dmUKLSNlbmRpZgotCi1SQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCi0KLS8vIEZvcndhcmQgZGVj
bGFyYXRpb24uCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRW5jb2RpbmcsIHR5cGVuYW1lIEFsbG9jYXRv
cj4KLWNsYXNzIEdlbmVyaWNWYWx1ZTsKLQotLy8hIE5hbWUtdmFsdWUgcGFpciBpbiBhIEpTT04g
b2JqZWN0IHZhbHVlLgotLyohCi0gICAgVGhpcyBjbGFzcyB3YXMgaW50ZXJuYWwgdG8gR2VuZXJp
Y1ZhbHVlLiBJdCB1c2VkIHRvIGJlIGEgaW5uZXIgc3RydWN0LgotICAgIEJ1dCBhIGNvbXBpbGVy
IChJQk0gWEwgQy9DKysgZm9yIEFJWCkgaGF2ZSByZXBvcnRlZCB0byBoYXZlIHByb2JsZW0gd2l0
aCB0aGF0IHNvIGl0IG1vdmVkIGFzIGEgbmFtZXNwYWNlIHNjb3BlIHN0cnVjdC4KLSAgICBodHRw
czovL2NvZGUuZ29vZ2xlLmNvbS9wL3JhcGlkanNvbi9pc3N1ZXMvZGV0YWlsP2lkPTY0Ci0qLwot
dGVtcGxhdGUgPHR5cGVuYW1lIEVuY29kaW5nLCB0eXBlbmFtZSBBbGxvY2F0b3I+IAotc3RydWN0
IEdlbmVyaWNNZW1iZXIgeyAKLSAgICBHZW5lcmljVmFsdWU8RW5jb2RpbmcsIEFsbG9jYXRvcj4g
bmFtZTsgICAgIC8vITwgbmFtZSBvZiBtZW1iZXIgKG11c3QgYmUgYSBzdHJpbmcpCi0gICAgR2Vu
ZXJpY1ZhbHVlPEVuY29kaW5nLCBBbGxvY2F0b3I+IHZhbHVlOyAgICAvLyE8IHZhbHVlIG9mIG1l
bWJlci4KLX07Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIEdlbmVyaWNNZW1iZXJJdGVy
YXRvcgotCi0jaWZuZGVmIFJBUElESlNPTl9OT01FTUJFUklURVJBVE9SQ0xBU1MKLQotLy8hIChD
b25zdGFudCkgbWVtYmVyIGl0ZXJhdG9yIGZvciBhIEpTT04gb2JqZWN0IHZhbHVlCi0vKiEKLSAg
ICBcdHBhcmFtIENvbnN0IElzIHRoaXMgYSBjb25zdGFudCBpdGVyYXRvcj8KLSAgICBcdHBhcmFt
IEVuY29kaW5nICAgIEVuY29kaW5nIG9mIHRoZSB2YWx1ZS4gKEV2ZW4gbm9uLXN0cmluZyB2YWx1
ZXMgbmVlZCB0byBoYXZlIHRoZSBzYW1lIGVuY29kaW5nIGluIGEgZG9jdW1lbnQpCi0gICAgXHRw
YXJhbSBBbGxvY2F0b3IgICBBbGxvY2F0b3IgdHlwZSBmb3IgYWxsb2NhdGluZyBtZW1vcnkgb2Yg
b2JqZWN0LCBhcnJheSBhbmQgc3RyaW5nLgotCi0gICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGEg
UmFuZG9tIEFjY2VzcyBJdGVyYXRvciBmb3IgR2VuZXJpY01lbWJlciBlbGVtZW50cwotICAgIG9m
IGEgR2VuZXJpY1ZhbHVlLCBzZWUgSVNPL0lFQyAxNDg4MjoyMDAzKEUpIEMrKyBzdGFuZGFyZCwg
MjQuMSBbbGliLml0ZXJhdG9yLnJlcXVpcmVtZW50c10uCi0KLSAgICBcbm90ZSBUaGlzIGl0ZXJh
dG9yIGltcGxlbWVudGF0aW9uIGlzIG1haW5seSBpbnRlbmRlZCB0byBhdm9pZCBpbXBsaWNpdAot
ICAgICAgICBjb252ZXJzaW9ucyBmcm9tIGl0ZXJhdG9yIHZhbHVlcyB0byBcYyBOVUxMLAotICAg
ICAgICBlLmcuIGZyb20gR2VuZXJpY1ZhbHVlOjpGaW5kTWVtYmVyLgotCi0gICAgXG5vdGUgRGVm
aW5lIFxjIFJBUElESlNPTl9OT01FTUJFUklURVJBVE9SQ0xBU1MgdG8gZmFsbCBiYWNrIHRvIGEK
LSAgICAgICAgcG9pbnRlci1iYXNlZCBpbXBsZW1lbnRhdGlvbiwgaWYgeW91ciBwbGF0Zm9ybSBk
b2Vzbid0IHByb3ZpZGUKLSAgICAgICAgdGhlIEMrKyA8aXRlcmF0b3I+IGhlYWRlci4KLQotICAg
IFxzZWUgR2VuZXJpY01lbWJlciwgR2VuZXJpY1ZhbHVlOjpNZW1iZXJJdGVyYXRvciwgR2VuZXJp
Y1ZhbHVlOjpDb25zdE1lbWJlckl0ZXJhdG9yCi0gKi8KLXRlbXBsYXRlIDxib29sIENvbnN0LCB0
eXBlbmFtZSBFbmNvZGluZywgdHlwZW5hbWUgQWxsb2NhdG9yPgotY2xhc3MgR2VuZXJpY01lbWJl
ckl0ZXJhdG9yCi0gICAgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OnJhbmRvbV9hY2Nlc3Nf
aXRlcmF0b3JfdGFnCi0gICAgICAgICwgdHlwZW5hbWUgaW50ZXJuYWw6Ok1heWJlQWRkQ29uc3Q8
Q29uc3QsR2VuZXJpY01lbWJlcjxFbmNvZGluZyxBbGxvY2F0b3I+ID46OlR5cGU+IHsKLQotICAg
IGZyaWVuZCBjbGFzcyBHZW5lcmljVmFsdWU8RW5jb2RpbmcsQWxsb2NhdG9yPjsKLSAgICB0ZW1w
bGF0ZSA8Ym9vbCwgdHlwZW5hbWUsIHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgR2VuZXJpY01lbWJl
ckl0ZXJhdG9yOwotCi0gICAgdHlwZWRlZiBHZW5lcmljTWVtYmVyPEVuY29kaW5nLEFsbG9jYXRv
cj4gUGxhaW5UeXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW50ZXJuYWw6Ok1heWJlQWRkQ29u
c3Q8Q29uc3QsUGxhaW5UeXBlPjo6VHlwZSBWYWx1ZVR5cGU7Ci0gICAgdHlwZWRlZiBzdGQ6Oml0
ZXJhdG9yPHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcsVmFsdWVUeXBlPiBCYXNlVHlw
ZTsKLQotcHVibGljOgotICAgIC8vISBJdGVyYXRvciB0eXBlIGl0c2VsZgotICAgIHR5cGVkZWYg
R2VuZXJpY01lbWJlckl0ZXJhdG9yIEl0ZXJhdG9yOwotICAgIC8vISBDb25zdGFudCBpdGVyYXRv
ciB0eXBlCi0gICAgdHlwZWRlZiBHZW5lcmljTWVtYmVySXRlcmF0b3I8dHJ1ZSxFbmNvZGluZyxB
bGxvY2F0b3I+ICBDb25zdEl0ZXJhdG9yOwotICAgIC8vISBOb24tY29uc3RhbnQgaXRlcmF0b3Ig
dHlwZQotICAgIHR5cGVkZWYgR2VuZXJpY01lbWJlckl0ZXJhdG9yPGZhbHNlLEVuY29kaW5nLEFs
bG9jYXRvcj4gTm9uQ29uc3RJdGVyYXRvcjsKLQotICAgIC8vISBQb2ludGVyIHRvIChjb25zdCkg
R2VuZXJpY01lbWJlcgotICAgIHR5cGVkZWYgdHlwZW5hbWUgQmFzZVR5cGU6OnBvaW50ZXIgICAg
ICAgICBQb2ludGVyOwotICAgIC8vISBSZWZlcmVuY2UgdG8gKGNvbnN0KSBHZW5lcmljTWVtYmVy
Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBCYXNlVHlwZTo6cmVmZXJlbmNlICAgICAgIFJlZmVyZW5j
ZTsKLSAgICAvLyEgU2lnbmVkIGludGVnZXIgdHlwZSAoZS5nLiBcYyBwdHJkaWZmX3QpCi0gICAg
dHlwZWRlZiB0eXBlbmFtZSBCYXNlVHlwZTo6ZGlmZmVyZW5jZV90eXBlIERpZmZlcmVuY2VUeXBl
OwotCi0gICAgLy8hIERlZmF1bHQgY29uc3RydWN0b3IgKHNpbmd1bGFyIHZhbHVlKQotICAgIC8q
ISBDcmVhdGVzIGFuIGl0ZXJhdG9yIHBvaW50aW5nIHRvIG5vIGVsZW1lbnQuCi0gICAgICAgIFxu
b3RlIEFsbCBvcGVyYXRpb25zLCBleGNlcHQgZm9yIGNvbXBhcmlzb25zLCBhcmUgdW5kZWZpbmVk
IG9uIHN1Y2ggdmFsdWVzLgotICAgICAqLwotICAgIEdlbmVyaWNNZW1iZXJJdGVyYXRvcigpIDog
cHRyXygpIHt9Ci0KLSAgICAvLyEgSXRlcmF0b3IgY29udmVyc2lvbnMgdG8gbW9yZSBjb25zdAot
ICAgIC8qIQotICAgICAgICBccGFyYW0gaXQgKE5vbi1jb25zdCkgaXRlcmF0b3IgdG8gY29weSBm
cm9tCi0KLSAgICAgICAgQWxsb3dzIHRoZSBjcmVhdGlvbiBvZiBhbiBpdGVyYXRvciBmcm9tIGFu
b3RoZXIgR2VuZXJpY01lbWJlckl0ZXJhdG9yCi0gICAgICAgIHRoYXQgaXMgImxlc3MgY29uc3Qi
LiAgRXNwZWNpYWxseSwgY3JlYXRpbmcgYSBub24tY29uc3RhbnQgaXRlcmF0b3IKLSAgICAgICAg
ZnJvbSBhIGNvbnN0YW50IGl0ZXJhdG9yIGFyZSBkaXNhYmxlZDoKLSAgICAgICAgXGxpIGNvbnN0
IC0+IG5vbi1jb25zdCAobm90IG9rKQotICAgICAgICBcbGkgY29uc3QgLT4gY29uc3QgKG9rKQot
ICAgICAgICBcbGkgbm9uLWNvbnN0IC0+IGNvbnN0IChvaykKLSAgICAgICAgXGxpIG5vbi1jb25z
dCAtPiBub24tY29uc3QgKG9rKQotCi0gICAgICAgIFxub3RlIElmIHRoZSBcYyBDb25zdCB0ZW1w
bGF0ZSBwYXJhbWV0ZXIgaXMgYWxyZWFkeSBcYyBmYWxzZSwgdGhpcwotICAgICAgICAgICAgY29u
c3RydWN0b3IgZWZmZWN0aXZlbHkgZGVmaW5lcyBhIHJlZ3VsYXIgY29weS1jb25zdHJ1Y3Rvci4K
LSAgICAgICAgICAgIE90aGVyd2lzZSwgdGhlIGNvcHkgY29uc3RydWN0b3IgaXMgaW1wbGljaXRs
eSBkZWZpbmVkLgotICAgICovCi0gICAgR2VuZXJpY01lbWJlckl0ZXJhdG9yKGNvbnN0IE5vbkNv
bnN0SXRlcmF0b3IgJiBpdCkgOiBwdHJfKGl0LnB0cl8pIHt9Ci0KLSAgICAvLyEgQG5hbWUgc3Rl
cHBpbmcKLSAgICAvL0B7Ci0gICAgSXRlcmF0b3ImIG9wZXJhdG9yKysoKXsgKytwdHJfOyByZXR1
cm4gKnRoaXM7IH0KLSAgICBJdGVyYXRvciYgb3BlcmF0b3ItLSgpeyAtLXB0cl87IHJldHVybiAq
dGhpczsgfQotICAgIEl0ZXJhdG9yICBvcGVyYXRvcisrKGludCl7IEl0ZXJhdG9yIG9sZCgqdGhp
cyk7ICsrcHRyXzsgcmV0dXJuIG9sZDsgfQotICAgIEl0ZXJhdG9yICBvcGVyYXRvci0tKGludCl7
IEl0ZXJhdG9yIG9sZCgqdGhpcyk7IC0tcHRyXzsgcmV0dXJuIG9sZDsgfQotICAgIC8vQH0KLQot
ICAgIC8vISBAbmFtZSBpbmNyZW1lbnQvZGVjcmVtZW50Ci0gICAgLy9AewotICAgIEl0ZXJhdG9y
IG9wZXJhdG9yKyhEaWZmZXJlbmNlVHlwZSBuKSBjb25zdCB7IHJldHVybiBJdGVyYXRvcihwdHJf
K24pOyB9Ci0gICAgSXRlcmF0b3Igb3BlcmF0b3ItKERpZmZlcmVuY2VUeXBlIG4pIGNvbnN0IHsg
cmV0dXJuIEl0ZXJhdG9yKHB0cl8tbik7IH0KLQotICAgIEl0ZXJhdG9yJiBvcGVyYXRvcis9KERp
ZmZlcmVuY2VUeXBlIG4pIHsgcHRyXys9bjsgcmV0dXJuICp0aGlzOyB9Ci0gICAgSXRlcmF0b3Im
IG9wZXJhdG9yLT0oRGlmZmVyZW5jZVR5cGUgbikgeyBwdHJfLT1uOyByZXR1cm4gKnRoaXM7IH0K
LSAgICAvL0B9Ci0KLSAgICAvLyEgQG5hbWUgcmVsYXRpb25zCi0gICAgLy9AewotICAgIGJvb2wg
b3BlcmF0b3I9PShDb25zdEl0ZXJhdG9yIHRoYXQpIGNvbnN0IHsgcmV0dXJuIHB0cl8gPT0gdGhh
dC5wdHJfOyB9Ci0gICAgYm9vbCBvcGVyYXRvciE9KENvbnN0SXRlcmF0b3IgdGhhdCkgY29uc3Qg
eyByZXR1cm4gcHRyXyAhPSB0aGF0LnB0cl87IH0KLSAgICBib29sIG9wZXJhdG9yPD0oQ29uc3RJ
dGVyYXRvciB0aGF0KSBjb25zdCB7IHJldHVybiBwdHJfIDw9IHRoYXQucHRyXzsgfQotICAgIGJv
b2wgb3BlcmF0b3I+PShDb25zdEl0ZXJhdG9yIHRoYXQpIGNvbnN0IHsgcmV0dXJuIHB0cl8gPj0g
dGhhdC5wdHJfOyB9Ci0gICAgYm9vbCBvcGVyYXRvcjwgKENvbnN0SXRlcmF0b3IgdGhhdCkgY29u
c3QgeyByZXR1cm4gcHRyXyA8IHRoYXQucHRyXzsgfQotICAgIGJvb2wgb3BlcmF0b3I+IChDb25z
dEl0ZXJhdG9yIHRoYXQpIGNvbnN0IHsgcmV0dXJuIHB0cl8gPiB0aGF0LnB0cl87IH0KLSAgICAv
L0B9Ci0KLSAgICAvLyEgQG5hbWUgZGVyZWZlcmVuY2UKLSAgICAvL0B7Ci0gICAgUmVmZXJlbmNl
IG9wZXJhdG9yKigpIGNvbnN0IHsgcmV0dXJuICpwdHJfOyB9Ci0gICAgUG9pbnRlciAgIG9wZXJh
dG9yLT4oKSBjb25zdCB7IHJldHVybiBwdHJfOyB9Ci0gICAgUmVmZXJlbmNlIG9wZXJhdG9yW10o
RGlmZmVyZW5jZVR5cGUgbikgY29uc3QgeyByZXR1cm4gcHRyX1tuXTsgfQotICAgIC8vQH0KLQot
ICAgIC8vISBEaXN0YW5jZQotICAgIERpZmZlcmVuY2VUeXBlIG9wZXJhdG9yLShDb25zdEl0ZXJh
dG9yIHRoYXQpIGNvbnN0IHsgcmV0dXJuIHB0cl8tdGhhdC5wdHJfOyB9Ci0KLXByaXZhdGU6Ci0g
ICAgLy8hIEludGVybmFsIGNvbnN0cnVjdG9yIGZyb20gcGxhaW4gcG9pbnRlcgotICAgIGV4cGxp
Y2l0IEdlbmVyaWNNZW1iZXJJdGVyYXRvcihQb2ludGVyIHApIDogcHRyXyhwKSB7fQotCi0gICAg
UG9pbnRlciBwdHJfOyAvLyE8IHJhdyBwb2ludGVyCi19OwotCi0jZWxzZSAvLyBSQVBJREpTT05f
Tk9NRU1CRVJJVEVSQVRPUkNMQVNTCi0KLS8vIGNsYXNzLWJhc2VkIG1lbWJlciBpdGVyYXRvciBp
bXBsZW1lbnRhdGlvbiBkaXNhYmxlZCwgdXNlIHBsYWluIHBvaW50ZXJzCi0KLXRlbXBsYXRlIDxi
b29sIENvbnN0LCB0eXBlbmFtZSBFbmNvZGluZywgdHlwZW5hbWUgQWxsb2NhdG9yPgotc3RydWN0
IEdlbmVyaWNNZW1iZXJJdGVyYXRvcjsKLQotLy8hIG5vbi1jb25zdCBHZW5lcmljTWVtYmVySXRl
cmF0b3IKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbmNvZGluZywgdHlwZW5hbWUgQWxsb2NhdG9yPgot
c3RydWN0IEdlbmVyaWNNZW1iZXJJdGVyYXRvcjxmYWxzZSxFbmNvZGluZyxBbGxvY2F0b3I+IHsK
LSAgICAvLyEgdXNlIHBsYWluIHBvaW50ZXIgYXMgaXRlcmF0b3IgdHlwZQotICAgIHR5cGVkZWYg
R2VuZXJpY01lbWJlcjxFbmNvZGluZyxBbGxvY2F0b3I+KiBJdGVyYXRvcjsKLX07Ci0vLyEgY29u
c3QgR2VuZXJpY01lbWJlckl0ZXJhdG9yCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRW5jb2RpbmcsIHR5
cGVuYW1lIEFsbG9jYXRvcj4KLXN0cnVjdCBHZW5lcmljTWVtYmVySXRlcmF0b3I8dHJ1ZSxFbmNv
ZGluZyxBbGxvY2F0b3I+IHsKLSAgICAvLyEgdXNlIHBsYWluIGNvbnN0IHBvaW50ZXIgYXMgaXRl
cmF0b3IgdHlwZQotICAgIHR5cGVkZWYgY29uc3QgR2VuZXJpY01lbWJlcjxFbmNvZGluZyxBbGxv
Y2F0b3I+KiBJdGVyYXRvcjsKLX07Ci0KLSNlbmRpZiAvLyBSQVBJREpTT05fTk9NRU1CRVJJVEVS
QVRPUkNMQVNTCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIEdlbmVyaWNTdHJpbmdSZWYK
LQotLy8hIFJlZmVyZW5jZSB0byBhIGNvbnN0YW50IHN0cmluZyAobm90IHRha2luZyBhIGNvcHkp
Ci0vKiEKLSAgICBcdHBhcmFtIENoYXJUeXBlIGNoYXJhY3RlciB0eXBlIG9mIHRoZSBzdHJpbmcK
LQotICAgIFRoaXMgaGVscGVyIGNsYXNzIGlzIHVzZWQgdG8gYXV0b21hdGljYWxseSBpbmZlciBj
b25zdGFudCBzdHJpbmcKLSAgICByZWZlcmVuY2VzIGZvciBzdHJpbmcgbGl0ZXJhbHMsIGVzcGVj
aWFsbHkgZnJvbSBcYyBjb25zdCBcYiAoISkKLSAgICBjaGFyYWN0ZXIgYXJyYXlzLgotCi0gICAg
VGhlIG1haW4gdXNlIGlzIGZvciBjcmVhdGluZyBKU09OIHN0cmluZyB2YWx1ZXMgd2l0aG91dCBj
b3B5aW5nIHRoZQotICAgIHNvdXJjZSBzdHJpbmcgdmlhIGFuIFxyZWYgQWxsb2NhdG9yLiAgVGhp
cyByZXF1aXJlcyB0aGF0IHRoZSByZWZlcmVuY2VkCi0gICAgc3RyaW5nIHBvaW50ZXJzIGhhdmUg
YSBzdWZmaWNpZW50IGxpZmV0aW1lLCB3aGljaCBleGNlZWRzIHRoZSBsaWZldGltZQotICAgIG9m
IHRoZSBhc3NvY2lhdGVkIEdlbmVyaWNWYWx1ZS4KLQotICAgIFxiIEV4YW1wbGUKLSAgICBcY29k
ZQotICAgIFZhbHVlIHYoImZvbyIpOyAgIC8vIG9rLCBubyBuZWVkIHRvIGNvcHkgJiBjYWxjdWxh
dGUgbGVuZ3RoCi0gICAgY29uc3QgY2hhciBmb29bXSA9ICJmb28iOwotICAgIHYuU2V0U3RyaW5n
KGZvbyk7IC8vIG9rCi0KLSAgICBjb25zdCBjaGFyKiBiYXIgPSBmb287Ci0gICAgLy8gVmFsdWUg
eChiYXIpOyAvLyBub3Qgb2ssIGNhbid0IHJlbHkgb24gYmFyJ3MgbGlmZXRpbWUKLSAgICBWYWx1
ZSB4KFN0cmluZ1JlZihiYXIpKTsgLy8gbGlmZXRpbWUgZXhwbGljaXRseSBndWFyYW50ZWVkIGJ5
IHVzZXIKLSAgICBWYWx1ZSB5KFN0cmluZ1JlZihiYXIsIDMpKTsgIC8vIG9rLCBleHBsaWNpdGx5
IHBhc3MgbGVuZ3RoCi0gICAgXGVuZGNvZGUKLQotICAgIFxzZWUgU3RyaW5nUmVmLCBHZW5lcmlj
VmFsdWU6OlNldFN0cmluZwotKi8KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgotc3RydWN0
IEdlbmVyaWNTdHJpbmdSZWYgewotICAgIHR5cGVkZWYgQ2hhclR5cGUgQ2g7IC8vITwgY2hhcmFj
dGVyIHR5cGUgb2YgdGhlIHN0cmluZwotCi0gICAgLy8hIENyZWF0ZSBzdHJpbmcgcmVmZXJlbmNl
IGZyb20gXGMgY29uc3QgY2hhcmFjdGVyIGFycmF5Ci0gICAgLyohCi0gICAgICAgIFRoaXMgY29u
c3RydWN0b3IgaW1wbGljaXRseSBjcmVhdGVzIGEgY29uc3RhbnQgc3RyaW5nIHJlZmVyZW5jZSBm
cm9tCi0gICAgICAgIGEgXGMgY29uc3QgY2hhcmFjdGVyIGFycmF5LiAgSXQgaGFzIGJldHRlciBw
ZXJmb3JtYW5jZSB0aGFuCi0gICAgICAgIFxyZWYgU3RyaW5nUmVmKGNvbnN0IENoYXJUeXBlKikg
YnkgaW5mZXJyaW5nIHRoZSBzdHJpbmcgXHJlZiBsZW5ndGgKLSAgICAgICAgZnJvbSB0aGUgYXJy
YXkgbGVuZ3RoLCBhbmQgYWxzbyBzdXBwb3J0cyBzdHJpbmdzIGNvbnRhaW5pbmcgbnVsbAotICAg
ICAgICBjaGFyYWN0ZXJzLgotCi0gICAgICAgIFx0cGFyYW0gTiBsZW5ndGggb2YgdGhlIHN0cmlu
ZywgYXV0b21hdGljYWxseSBpbmZlcnJlZAotCi0gICAgICAgIFxwYXJhbSBzdHIgQ29uc3RhbnQg
Y2hhcmFjdGVyIGFycmF5LCBsaWZldGltZSBhc3N1bWVkIHRvIGJlIGxvbmdlcgotICAgICAgICAg
ICAgdGhhbiB0aGUgdXNlIG9mIHRoZSBzdHJpbmcgaW4gZS5nLiBhIEdlbmVyaWNWYWx1ZQotCi0g
ICAgICAgIFxwb3N0IFxyZWYgcyA9PSBzdHIKLQotICAgICAgICBcbm90ZSBDb25zdGFudCBjb21w
bGV4aXR5LgotICAgICAgICBcbm90ZSBUaGVyZSBpcyBhIGhpZGRlbiwgcHJpdmF0ZSBvdmVybG9h
ZCB0byBkaXNhbGxvdyByZWZlcmVuY2VzIHRvCi0gICAgICAgICAgICBub24tY29uc3QgY2hhcmFj
dGVyIGFycmF5cyB0byBiZSBjcmVhdGVkIHZpYSB0aGlzIGNvbnN0cnVjdG9yLgotICAgICAgICAg
ICAgQnkgdGhpcywgZS5nLiBmdW5jdGlvbi1zY29wZSBhcnJheXMgdXNlZCB0byBiZSBmaWxsZWQg
dmlhCi0gICAgICAgICAgICBcYyBzbnByaW50ZiBhcmUgZXhjbHVkZWQgZnJvbSBjb25zaWRlcmF0
aW9uLgotICAgICAgICAgICAgSW4gc3VjaCBjYXNlcywgdGhlIHJlZmVyZW5jZWQgc3RyaW5nIHNo
b3VsZCBiZSBcYiBjb3BpZWQgdG8gdGhlCi0gICAgICAgICAgICBHZW5lcmljVmFsdWUgaW5zdGVh
ZC4KLSAgICAgKi8KLSAgICB0ZW1wbGF0ZTxTaXplVHlwZSBOPgotICAgIEdlbmVyaWNTdHJpbmdS
ZWYoY29uc3QgQ2hhclR5cGUgKCZzdHIpW05dKSBSQVBJREpTT05fTk9FWENFUFQKLSAgICAgICAg
OiBzKHN0ciksIGxlbmd0aChOLTEpIHt9Ci0KLSAgICAvLyEgRXhwbGljaXRseSBjcmVhdGUgc3Ry
aW5nIHJlZmVyZW5jZSBmcm9tIFxjIGNvbnN0IGNoYXJhY3RlciBwb2ludGVyCi0gICAgLyohCi0g
ICAgICAgIFRoaXMgY29uc3RydWN0b3IgY2FuIGJlIHVzZWQgdG8gXGIgZXhwbGljaXRseSAgY3Jl
YXRlIGEgcmVmZXJlbmNlIHRvCi0gICAgICAgIGEgY29uc3RhbnQgc3RyaW5nIHBvaW50ZXIuCi0K
LSAgICAgICAgXHNlZSBTdHJpbmdSZWYoY29uc3QgQ2hhclR5cGUqKQotCi0gICAgICAgIFxwYXJh
bSBzdHIgQ29uc3RhbnQgY2hhcmFjdGVyIHBvaW50ZXIsIGxpZmV0aW1lIGFzc3VtZWQgdG8gYmUg
bG9uZ2VyCi0gICAgICAgICAgICB0aGFuIHRoZSB1c2Ugb2YgdGhlIHN0cmluZyBpbiBlLmcuIGEg
R2VuZXJpY1ZhbHVlCi0KLSAgICAgICAgXHBvc3QgXHJlZiBzID09IHN0cgotCi0gICAgICAgIFxu
b3RlIFRoZXJlIGlzIGEgaGlkZGVuLCBwcml2YXRlIG92ZXJsb2FkIHRvIGRpc2FsbG93IHJlZmVy
ZW5jZXMgdG8KLSAgICAgICAgICAgIG5vbi1jb25zdCBjaGFyYWN0ZXIgYXJyYXlzIHRvIGJlIGNy
ZWF0ZWQgdmlhIHRoaXMgY29uc3RydWN0b3IuCi0gICAgICAgICAgICBCeSB0aGlzLCBlLmcuIGZ1
bmN0aW9uLXNjb3BlIGFycmF5cyB1c2VkIHRvIGJlIGZpbGxlZCB2aWEKLSAgICAgICAgICAgIFxj
IHNucHJpbnRmIGFyZSBleGNsdWRlZCBmcm9tIGNvbnNpZGVyYXRpb24uCi0gICAgICAgICAgICBJ
biBzdWNoIGNhc2VzLCB0aGUgcmVmZXJlbmNlZCBzdHJpbmcgc2hvdWxkIGJlIFxiIGNvcGllZCB0
byB0aGUKLSAgICAgICAgICAgIEdlbmVyaWNWYWx1ZSBpbnN0ZWFkLgotICAgICAqLwotICAgIGV4
cGxpY2l0IEdlbmVyaWNTdHJpbmdSZWYoY29uc3QgQ2hhclR5cGUqIHN0cikKLSAgICAgICAgOiBz
KHN0ciksIGxlbmd0aChpbnRlcm5hbDo6U3RyTGVuKHN0cikpeyBSQVBJREpTT05fQVNTRVJUKHMg
IT0gTlVMTCk7IH0KLQotICAgIC8vISBDcmVhdGUgY29uc3RhbnQgc3RyaW5nIHJlZmVyZW5jZSBm
cm9tIHBvaW50ZXIgYW5kIGxlbmd0aAotICAgIC8qISBccGFyYW0gc3RyIGNvbnN0YW50IHN0cmlu
ZywgbGlmZXRpbWUgYXNzdW1lZCB0byBiZSBsb25nZXIgdGhhbiB0aGUgdXNlIG9mIHRoZSBzdHJp
bmcgaW4gZS5nLiBhIEdlbmVyaWNWYWx1ZQotICAgICAgICBccGFyYW0gbGVuIGxlbmd0aCBvZiB0
aGUgc3RyaW5nLCBleGNsdWRpbmcgdGhlIHRyYWlsaW5nIE5VTEwgdGVybWluYXRvcgotCi0gICAg
ICAgIFxwb3N0IFxyZWYgcyA9PSBzdHIgJiYgXHJlZiBsZW5ndGggPT0gbGVuCi0gICAgICAgIFxu
b3RlIENvbnN0YW50IGNvbXBsZXhpdHkuCi0gICAgICovCi0gICAgR2VuZXJpY1N0cmluZ1JlZihj
b25zdCBDaGFyVHlwZSogc3RyLCBTaXplVHlwZSBsZW4pCi0gICAgICAgIDogcyhzdHIpLCBsZW5n
dGgobGVuKSB7IFJBUElESlNPTl9BU1NFUlQocyAhPSBOVUxMKTsgfQotCi0gICAgLy8hIGltcGxp
Y2l0IGNvbnZlcnNpb24gdG8gcGxhaW4gQ2hhclR5cGUgcG9pbnRlcgotICAgIG9wZXJhdG9yIGNv
bnN0IENoICooKSBjb25zdCB7IHJldHVybiBzOyB9Ci0KLSAgICBjb25zdCBDaCogY29uc3Qgczsg
Ly8hPCBwbGFpbiBDaGFyVHlwZSBwb2ludGVyCi0gICAgY29uc3QgU2l6ZVR5cGUgbGVuZ3RoOyAv
LyE8IGxlbmd0aCBvZiB0aGUgc3RyaW5nIChleGNsdWRpbmcgdGhlIHRyYWlsaW5nIE5VTEwgdGVy
bWluYXRvcikKLQotcHJpdmF0ZToKLSAgICAvLyEgRGlzYWxsb3cgY29weS1hc3NpZ25tZW50Ci0g
ICAgR2VuZXJpY1N0cmluZ1JlZiBvcGVyYXRvcj0oY29uc3QgR2VuZXJpY1N0cmluZ1JlZiYpOwot
ICAgIC8vISBEaXNhbGxvdyBjb25zdHJ1Y3Rpb24gZnJvbSBub24tY29uc3QgYXJyYXkKLSAgICB0
ZW1wbGF0ZTxTaXplVHlwZSBOPgotICAgIEdlbmVyaWNTdHJpbmdSZWYoQ2hhclR5cGUgKCZzdHIp
W05dKSAvKiA9IGRlbGV0ZSAqLzsKLX07Ci0KLS8vISBNYXJrIGEgY2hhcmFjdGVyIHBvaW50ZXIg
YXMgY29uc3RhbnQgc3RyaW5nCi0vKiEgTWFyayBhIHBsYWluIGNoYXJhY3RlciBwb2ludGVyIGFz
IGEgInN0cmluZyBsaXRlcmFsIi4gIFRoaXMgZnVuY3Rpb24KLSAgICBjYW4gYmUgdXNlZCB0byBh
dm9pZCBjb3B5aW5nIGEgY2hhcmFjdGVyIHN0cmluZyB0byBiZSByZWZlcmVuY2VkIGFzIGEKLSAg
ICB2YWx1ZSBpbiBhIEpTT04gR2VuZXJpY1ZhbHVlIG9iamVjdCwgaWYgdGhlIHN0cmluZydzIGxp
ZmV0aW1lIGlzIGtub3duCi0gICAgdG8gYmUgdmFsaWQgbG9uZyBlbm91Z2guCi0gICAgXHRwYXJh
bSBDaGFyVHlwZSBDaGFyYWN0ZXIgdHlwZSBvZiB0aGUgc3RyaW5nCi0gICAgXHBhcmFtIHN0ciBD
b25zdGFudCBzdHJpbmcsIGxpZmV0aW1lIGFzc3VtZWQgdG8gYmUgbG9uZ2VyIHRoYW4gdGhlIHVz
ZSBvZiB0aGUgc3RyaW5nIGluIGUuZy4gYSBHZW5lcmljVmFsdWUKLSAgICBccmV0dXJuIEdlbmVy
aWNTdHJpbmdSZWYgc3RyaW5nIHJlZmVyZW5jZSBvYmplY3QKLSAgICBccmVsYXRlc2Fsc28gR2Vu
ZXJpY1N0cmluZ1JlZgotCi0gICAgXHNlZSBHZW5lcmljVmFsdWU6OkdlbmVyaWNWYWx1ZShTdHJp
bmdSZWZUeXBlKSwgR2VuZXJpY1ZhbHVlOjpvcGVyYXRvcj0oU3RyaW5nUmVmVHlwZSksIEdlbmVy
aWNWYWx1ZTo6U2V0U3RyaW5nKFN0cmluZ1JlZlR5cGUpLCBHZW5lcmljVmFsdWU6OlB1c2hCYWNr
KFN0cmluZ1JlZlR5cGUsIEFsbG9jYXRvciYpLCBHZW5lcmljVmFsdWU6OkFkZE1lbWJlcgotKi8K
LXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgotaW5saW5lIEdlbmVyaWNTdHJpbmdSZWY8Q2hh
clR5cGU+IFN0cmluZ1JlZihjb25zdCBDaGFyVHlwZSogc3RyKSB7Ci0gICAgcmV0dXJuIEdlbmVy
aWNTdHJpbmdSZWY8Q2hhclR5cGU+KHN0ciwgaW50ZXJuYWw6OlN0ckxlbihzdHIpKTsKLX0KLQot
Ly8hIE1hcmsgYSBjaGFyYWN0ZXIgcG9pbnRlciBhcyBjb25zdGFudCBzdHJpbmcKLS8qISBNYXJr
IGEgcGxhaW4gY2hhcmFjdGVyIHBvaW50ZXIgYXMgYSAic3RyaW5nIGxpdGVyYWwiLiAgVGhpcyBm
dW5jdGlvbgotICAgIGNhbiBiZSB1c2VkIHRvIGF2b2lkIGNvcHlpbmcgYSBjaGFyYWN0ZXIgc3Ry
aW5nIHRvIGJlIHJlZmVyZW5jZWQgYXMgYQotICAgIHZhbHVlIGluIGEgSlNPTiBHZW5lcmljVmFs
dWUgb2JqZWN0LCBpZiB0aGUgc3RyaW5nJ3MgbGlmZXRpbWUgaXMga25vd24KLSAgICB0byBiZSB2
YWxpZCBsb25nIGVub3VnaC4KLQotICAgIFRoaXMgdmVyc2lvbiBoYXMgYmV0dGVyIHBlcmZvcm1h
bmNlIHdpdGggc3VwcGxpZWQgbGVuZ3RoLCBhbmQgYWxzbwotICAgIHN1cHBvcnRzIHN0cmluZyBj
b250YWluaW5nIG51bGwgY2hhcmFjdGVycy4KLQotICAgIFx0cGFyYW0gQ2hhclR5cGUgY2hhcmFj
dGVyIHR5cGUgb2YgdGhlIHN0cmluZwotICAgIFxwYXJhbSBzdHIgQ29uc3RhbnQgc3RyaW5nLCBs
aWZldGltZSBhc3N1bWVkIHRvIGJlIGxvbmdlciB0aGFuIHRoZSB1c2Ugb2YgdGhlIHN0cmluZyBp
biBlLmcuIGEgR2VuZXJpY1ZhbHVlCi0gICAgXHBhcmFtIGxlbmd0aCBUaGUgbGVuZ3RoIG9mIHNv
dXJjZSBzdHJpbmcuCi0gICAgXHJldHVybiBHZW5lcmljU3RyaW5nUmVmIHN0cmluZyByZWZlcmVu
Y2Ugb2JqZWN0Ci0gICAgXHJlbGF0ZXNhbHNvIEdlbmVyaWNTdHJpbmdSZWYKLSovCi10ZW1wbGF0
ZTx0eXBlbmFtZSBDaGFyVHlwZT4KLWlubGluZSBHZW5lcmljU3RyaW5nUmVmPENoYXJUeXBlPiBT
dHJpbmdSZWYoY29uc3QgQ2hhclR5cGUqIHN0ciwgc2l6ZV90IGxlbmd0aCkgewotICAgIHJldHVy
biBHZW5lcmljU3RyaW5nUmVmPENoYXJUeXBlPihzdHIsIFNpemVUeXBlKGxlbmd0aCkpOwotfQot
Ci0jaWYgUkFQSURKU09OX0hBU19TVERTVFJJTkcKLS8vISBNYXJrIGEgc3RyaW5nIG9iamVjdCBh
cyBjb25zdGFudCBzdHJpbmcKLS8qISBNYXJrIGEgc3RyaW5nIG9iamVjdCAoZS5nLiBcYyBzdGQ6
OnN0cmluZykgYXMgYSAic3RyaW5nIGxpdGVyYWwiLgotICAgIFRoaXMgZnVuY3Rpb24gY2FuIGJl
IHVzZWQgdG8gYXZvaWQgY29weWluZyBhIHN0cmluZyB0byBiZSByZWZlcmVuY2VkIGFzIGEKLSAg
ICB2YWx1ZSBpbiBhIEpTT04gR2VuZXJpY1ZhbHVlIG9iamVjdCwgaWYgdGhlIHN0cmluZydzIGxp
ZmV0aW1lIGlzIGtub3duCi0gICAgdG8gYmUgdmFsaWQgbG9uZyBlbm91Z2guCi0KLSAgICBcdHBh
cmFtIENoYXJUeXBlIGNoYXJhY3RlciB0eXBlIG9mIHRoZSBzdHJpbmcKLSAgICBccGFyYW0gc3Ry
IENvbnN0YW50IHN0cmluZywgbGlmZXRpbWUgYXNzdW1lZCB0byBiZSBsb25nZXIgdGhhbiB0aGUg
dXNlIG9mIHRoZSBzdHJpbmcgaW4gZS5nLiBhIEdlbmVyaWNWYWx1ZQotICAgIFxyZXR1cm4gR2Vu
ZXJpY1N0cmluZ1JlZiBzdHJpbmcgcmVmZXJlbmNlIG9iamVjdAotICAgIFxyZWxhdGVzYWxzbyBH
ZW5lcmljU3RyaW5nUmVmCi0gICAgXG5vdGUgUmVxdWlyZXMgdGhlIGRlZmluaXRpb24gb2YgdGhl
IHByZXByb2Nlc3NvciBzeW1ib2wgXHJlZiBSQVBJREpTT05fSEFTX1NURFNUUklORy4KLSovCi10
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZT4KLWlubGluZSBHZW5lcmljU3RyaW5nUmVmPENoYXJU
eXBlPiBTdHJpbmdSZWYoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Q2hhclR5cGU+JiBzdHIpIHsK
LSAgICByZXR1cm4gR2VuZXJpY1N0cmluZ1JlZjxDaGFyVHlwZT4oc3RyLmRhdGEoKSwgU2l6ZVR5
cGUoc3RyLnNpemUoKSkpOwotfQotI2VuZGlmCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8v
IEdlbmVyaWNWYWx1ZSB0eXBlIHRyYWl0cwotbmFtZXNwYWNlIGludGVybmFsIHsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEVuY29kaW5nID0gdm9pZCwgdHlwZW5hbWUgQWxsb2Nh
dG9yID0gdm9pZD4KLXN0cnVjdCBJc0dlbmVyaWNWYWx1ZUltcGwgOiBGYWxzZVR5cGUge307Ci0K
LS8vIHNlbGVjdCBjYW5kaWRhdGVzIGFjY29yZGluZyB0byBuZXN0ZWQgZW5jb2RpbmcgYW5kIGFs
bG9jYXRvciB0eXBlcwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJc0dlbmVyaWNWYWx1
ZUltcGw8VCwgdHlwZW5hbWUgVm9pZDx0eXBlbmFtZSBUOjpFbmNvZGluZ1R5cGU+OjpUeXBlLCB0
eXBlbmFtZSBWb2lkPHR5cGVuYW1lIFQ6OkFsbG9jYXRvclR5cGU+OjpUeXBlPgotICAgIDogSXNC
YXNlT2Y8R2VuZXJpY1ZhbHVlPHR5cGVuYW1lIFQ6OkVuY29kaW5nVHlwZSwgdHlwZW5hbWUgVDo6
QWxsb2NhdG9yVHlwZT4sIFQ+OjpUeXBlIHt9OwotCi0vLyBoZWxwZXIgdG8gbWF0Y2ggYXJiaXRy
YXJ5IEdlbmVyaWNWYWx1ZSBpbnN0YW50aWF0aW9ucywgaW5jbHVkaW5nIGRlcml2ZWQgY2xhc3Nl
cwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJc0dlbmVyaWNWYWx1ZSA6IElzR2VuZXJp
Y1ZhbHVlSW1wbDxUPjo6VHlwZSB7fTsKLQotfSAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwotLy8gR2VuZXJpY1ZhbHVlCi0KLS8vISBSZXByZXNlbnRzIGEg
SlNPTiB2YWx1ZS4gVXNlIFZhbHVlIGZvciBVVEY4IGVuY29kaW5nIGFuZCBkZWZhdWx0IGFsbG9j
YXRvci4KLS8qIQotICAgIEEgSlNPTiB2YWx1ZSBjYW4gYmUgb25lIG9mIDcgdHlwZXMuIFRoaXMg
Y2xhc3MgaXMgYSB2YXJpYW50IHR5cGUgc3VwcG9ydGluZwotICAgIHRoZXNlIHR5cGVzLgotCi0g
ICAgVXNlIHRoZSBWYWx1ZSBpZiBVVEY4IGFuZCBkZWZhdWx0IGFsbG9jYXRvcgotCi0gICAgXHRw
YXJhbSBFbmNvZGluZyAgICBFbmNvZGluZyBvZiB0aGUgdmFsdWUuIChFdmVuIG5vbi1zdHJpbmcg
dmFsdWVzIG5lZWQgdG8gaGF2ZSB0aGUgc2FtZSBlbmNvZGluZyBpbiBhIGRvY3VtZW50KQotICAg
IFx0cGFyYW0gQWxsb2NhdG9yICAgQWxsb2NhdG9yIHR5cGUgZm9yIGFsbG9jYXRpbmcgbWVtb3J5
IG9mIG9iamVjdCwgYXJyYXkgYW5kIHN0cmluZy4KLSovCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRW5j
b2RpbmcsIHR5cGVuYW1lIEFsbG9jYXRvciA9IE1lbW9yeVBvb2xBbGxvY2F0b3I8PiA+IAotY2xh
c3MgR2VuZXJpY1ZhbHVlIHsKLXB1YmxpYzoKLSAgICAvLyEgTmFtZS12YWx1ZSBwYWlyIGluIGFu
IG9iamVjdC4KLSAgICB0eXBlZGVmIEdlbmVyaWNNZW1iZXI8RW5jb2RpbmcsIEFsbG9jYXRvcj4g
TWVtYmVyOwotICAgIHR5cGVkZWYgRW5jb2RpbmcgRW5jb2RpbmdUeXBlOyAgICAgICAgICAgICAg
ICAgIC8vITwgRW5jb2RpbmcgdHlwZSBmcm9tIHRlbXBsYXRlIHBhcmFtZXRlci4KLSAgICB0eXBl
ZGVmIEFsbG9jYXRvciBBbGxvY2F0b3JUeXBlOyAgICAgICAgICAgICAgICAvLyE8IEFsbG9jYXRv
ciB0eXBlIGZyb20gdGVtcGxhdGUgcGFyYW1ldGVyLgotICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5j
b2Rpbmc6OkNoIENoOyAgICAgICAgICAgICAgIC8vITwgQ2hhcmFjdGVyIHR5cGUgZGVyaXZlZCBm
cm9tIEVuY29kaW5nLgotICAgIHR5cGVkZWYgR2VuZXJpY1N0cmluZ1JlZjxDaD4gU3RyaW5nUmVm
VHlwZTsgICAgIC8vITwgUmVmZXJlbmNlIHRvIGEgY29uc3RhbnQgc3RyaW5nCi0gICAgdHlwZWRl
ZiB0eXBlbmFtZSBHZW5lcmljTWVtYmVySXRlcmF0b3I8ZmFsc2UsRW5jb2RpbmcsQWxsb2NhdG9y
Pjo6SXRlcmF0b3IgTWVtYmVySXRlcmF0b3I7ICAvLyE8IE1lbWJlciBpdGVyYXRvciBmb3IgaXRl
cmF0aW5nIGluIG9iamVjdC4KLSAgICB0eXBlZGVmIHR5cGVuYW1lIEdlbmVyaWNNZW1iZXJJdGVy
YXRvcjx0cnVlLEVuY29kaW5nLEFsbG9jYXRvcj46Okl0ZXJhdG9yIENvbnN0TWVtYmVySXRlcmF0
b3I7ICAvLyE8IENvbnN0YW50IG1lbWJlciBpdGVyYXRvciBmb3IgaXRlcmF0aW5nIGluIG9iamVj
dC4KLSAgICB0eXBlZGVmIEdlbmVyaWNWYWx1ZSogVmFsdWVJdGVyYXRvcjsgICAgICAgICAgICAv
LyE8IFZhbHVlIGl0ZXJhdG9yIGZvciBpdGVyYXRpbmcgaW4gYXJyYXkuCi0gICAgdHlwZWRlZiBj
b25zdCBHZW5lcmljVmFsdWUqIENvbnN0VmFsdWVJdGVyYXRvcjsgLy8hPCBDb25zdGFudCB2YWx1
ZSBpdGVyYXRvciBmb3IgaXRlcmF0aW5nIGluIGFycmF5LgotCi0gICAgLy8hQG5hbWUgQ29uc3Ry
dWN0b3JzIGFuZCBkZXN0cnVjdG9yLgotICAgIC8vQHsKLQotICAgIC8vISBEZWZhdWx0IGNvbnN0
cnVjdG9yIGNyZWF0ZXMgYSBudWxsIHZhbHVlLgotICAgIEdlbmVyaWNWYWx1ZSgpIFJBUElESlNP
Tl9OT0VYQ0VQVCA6IGRhdGFfKCksIGZsYWdzXyhrTnVsbEZsYWcpIHt9Ci0KLSNpZiBSQVBJREpT
T05fSEFTX0NYWDExX1JWQUxVRV9SRUZTCi0gICAgLy8hIE1vdmUgY29uc3RydWN0b3IgaW4gQysr
MTEKLSAgICBHZW5lcmljVmFsdWUoR2VuZXJpY1ZhbHVlJiYgcmhzKSBSQVBJREpTT05fTk9FWENF
UFQgOiBkYXRhXyhyaHMuZGF0YV8pLCBmbGFnc18ocmhzLmZsYWdzXykgewotICAgICAgICByaHMu
ZmxhZ3NfID0ga051bGxGbGFnOyAvLyBnaXZlIHVwIGNvbnRlbnRzCi0gICAgfQotI2VuZGlmCi0K
LXByaXZhdGU6Ci0gICAgLy8hIENvcHkgY29uc3RydWN0b3IgaXMgbm90IHBlcm1pdHRlZC4KLSAg
ICBHZW5lcmljVmFsdWUoY29uc3QgR2VuZXJpY1ZhbHVlJiByaHMpOwotCi1wdWJsaWM6Ci0KLSAg
ICAvLyEgQ29uc3RydWN0b3Igd2l0aCBKU09OIHZhbHVlIHR5cGUuCi0gICAgLyohIFRoaXMgY3Jl
YXRlcyBhIFZhbHVlIG9mIHNwZWNpZmllZCB0eXBlIHdpdGggZGVmYXVsdCBjb250ZW50LgotICAg
ICAgICBccGFyYW0gdHlwZSBUeXBlIG9mIHRoZSB2YWx1ZS4KLSAgICAgICAgXG5vdGUgRGVmYXVs
dCBjb250ZW50IGZvciBudW1iZXIgaXMgemVyby4KLSAgICAqLwotICAgIGV4cGxpY2l0IEdlbmVy
aWNWYWx1ZShUeXBlIHR5cGUpIFJBUElESlNPTl9OT0VYQ0VQVCA6IGRhdGFfKCksIGZsYWdzXygp
IHsKLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGRlZmF1bHRGbGFnc1s3XSA9IHsKLSAg
ICAgICAgICAgIGtOdWxsRmxhZywga0ZhbHNlRmxhZywga1RydWVGbGFnLCBrT2JqZWN0RmxhZywg
a0FycmF5RmxhZywga1Nob3J0U3RyaW5nRmxhZywKLSAgICAgICAgICAgIGtOdW1iZXJBbnlGbGFn
Ci0gICAgICAgIH07Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQodHlwZSA8PSBrTnVtYmVyVHlw
ZSk7Ci0gICAgICAgIGZsYWdzXyA9IGRlZmF1bHRGbGFnc1t0eXBlXTsKLQotICAgICAgICAvLyBV
c2UgU2hvcnRTdHJpbmcgdG8gc3RvcmUgZW1wdHkgc3RyaW5nLgotICAgICAgICBpZiAodHlwZSA9
PSBrU3RyaW5nVHlwZSkKLSAgICAgICAgICAgIGRhdGFfLnNzLlNldExlbmd0aCgwKTsKLSAgICB9
Ci0KLSAgICAvLyEgRXhwbGljaXQgY29weSBjb25zdHJ1Y3RvciAod2l0aCBhbGxvY2F0b3IpCi0g
ICAgLyohIENyZWF0ZXMgYSBjb3B5IG9mIGEgVmFsdWUgYnkgdXNpbmcgdGhlIGdpdmVuIEFsbG9j
YXRvcgotICAgICAgICBcdHBhcmFtIFNvdXJjZUFsbG9jYXRvciBhbGxvY2F0b3Igb2YgXGMgcmhz
Ci0gICAgICAgIFxwYXJhbSByaHMgVmFsdWUgdG8gY29weSBmcm9tIChyZWFkLW9ubHkpCi0gICAg
ICAgIFxwYXJhbSBhbGxvY2F0b3IgQWxsb2NhdG9yIGZvciBhbGxvY2F0aW5nIGNvcGllZCBlbGVt
ZW50cyBhbmQgYnVmZmVycy4gQ29tbW9ubHkgdXNlIEdlbmVyaWNEb2N1bWVudDo6R2V0QWxsb2Nh
dG9yKCkuCi0gICAgICAgIFxzZWUgQ29weUZyb20oKQotICAgICovCi0gICAgdGVtcGxhdGU8IHR5
cGVuYW1lIFNvdXJjZUFsbG9jYXRvciA+Ci0gICAgR2VuZXJpY1ZhbHVlKGNvbnN0IEdlbmVyaWNW
YWx1ZTxFbmNvZGluZywgU291cmNlQWxsb2NhdG9yPiYgcmhzLCBBbGxvY2F0b3IgJiBhbGxvY2F0
b3IpOwotCi0gICAgLy8hIENvbnN0cnVjdG9yIGZvciBib29sZWFuIHZhbHVlLgotICAgIC8qISBc
cGFyYW0gYiBCb29sZWFuIHZhbHVlCi0gICAgICAgIFxub3RlIFRoaXMgY29uc3RydWN0b3IgaXMg
bGltaXRlZCB0byBcZW0gcmVhbCBib29sZWFuIHZhbHVlcyBhbmQgcmVqZWN0cwotICAgICAgICAg
ICAgaW1wbGljaXRseSBjb252ZXJ0ZWQgdHlwZXMgbGlrZSBhcmJpdHJhcnkgcG9pbnRlcnMuICBV
c2UgYW4gZXhwbGljaXQgY2FzdAotICAgICAgICAgICAgdG8gXGMgYm9vbCwgaWYgeW91IHdhbnQg
dG8gY29uc3RydWN0IGEgYm9vbGVhbiBKU09OIHZhbHVlIGluIHN1Y2ggY2FzZXMuCi0gICAgICov
Ci0jaWZuZGVmIFJBUElESlNPTl9ET1hZR0VOX1JVTk5JTkcgLy8gaGlkZSBTRklOQUUgZnJvbSBE
b3h5Z2VuCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgZXhwbGljaXQgR2VuZXJpY1Zh
bHVlKFQgYiwgUkFQSURKU09OX0VOQUJMRUlGKChpbnRlcm5hbDo6SXNTYW1lPFQsYm9vbD4pKSkg
UkFQSURKU09OX05PRVhDRVBUCi0jZWxzZQotICAgIGV4cGxpY2l0IEdlbmVyaWNWYWx1ZShib29s
IGIpIFJBUElESlNPTl9OT0VYQ0VQVAotI2VuZGlmCi0gICAgICAgIDogZGF0YV8oKSwgZmxhZ3Nf
KGIgPyBrVHJ1ZUZsYWcgOiBrRmFsc2VGbGFnKSB7Ci0gICAgICAgICAgICAvLyBzYWZlLWd1YXJk
IGFnYWluc3QgZmFpbGluZyBTRklOQUUKLSAgICAgICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNT
RVJUKChpbnRlcm5hbDo6SXNTYW1lPGJvb2wsVD46OlZhbHVlKSk7Ci0gICAgfQotCi0gICAgLy8h
IENvbnN0cnVjdG9yIGZvciBpbnQgdmFsdWUuCi0gICAgZXhwbGljaXQgR2VuZXJpY1ZhbHVlKGlu
dCBpKSBSQVBJREpTT05fTk9FWENFUFQgOiBkYXRhXygpLCBmbGFnc18oa051bWJlckludEZsYWcp
IHsKLSAgICAgICAgZGF0YV8ubi5pNjQgPSBpOwotICAgICAgICBpZiAoaSA+PSAwKQotICAgICAg
ICAgICAgZmxhZ3NfIHw9IGtVaW50RmxhZyB8IGtVaW50NjRGbGFnOwotICAgIH0KLQotICAgIC8v
ISBDb25zdHJ1Y3RvciBmb3IgdW5zaWduZWQgdmFsdWUuCi0gICAgZXhwbGljaXQgR2VuZXJpY1Zh
bHVlKHVuc2lnbmVkIHUpIFJBUElESlNPTl9OT0VYQ0VQVCA6IGRhdGFfKCksIGZsYWdzXyhrTnVt
YmVyVWludEZsYWcpIHsKLSAgICAgICAgZGF0YV8ubi51NjQgPSB1OyAKLSAgICAgICAgaWYgKCEo
dSAmIDB4ODAwMDAwMDApKQotICAgICAgICAgICAgZmxhZ3NfIHw9IGtJbnRGbGFnIHwga0ludDY0
RmxhZzsKLSAgICB9Ci0KLSAgICAvLyEgQ29uc3RydWN0b3IgZm9yIGludDY0X3QgdmFsdWUuCi0g
ICAgZXhwbGljaXQgR2VuZXJpY1ZhbHVlKGludDY0X3QgaTY0KSBSQVBJREpTT05fTk9FWENFUFQg
OiBkYXRhXygpLCBmbGFnc18oa051bWJlckludDY0RmxhZykgewotICAgICAgICBkYXRhXy5uLmk2
NCA9IGk2NDsKLSAgICAgICAgaWYgKGk2NCA+PSAwKSB7Ci0gICAgICAgICAgICBmbGFnc18gfD0g
a051bWJlclVpbnQ2NEZsYWc7Ci0gICAgICAgICAgICBpZiAoIShzdGF0aWNfY2FzdDx1aW50NjRf
dD4oaTY0KSAmIFJBUElESlNPTl9VSU5UNjRfQzIoMHhGRkZGRkZGRiwgMHgwMDAwMDAwMCkpKQot
ICAgICAgICAgICAgICAgIGZsYWdzXyB8PSBrVWludEZsYWc7Ci0gICAgICAgICAgICBpZiAoIShz
dGF0aWNfY2FzdDx1aW50NjRfdD4oaTY0KSAmIFJBUElESlNPTl9VSU5UNjRfQzIoMHhGRkZGRkZG
RiwgMHg4MDAwMDAwMCkpKQotICAgICAgICAgICAgICAgIGZsYWdzXyB8PSBrSW50RmxhZzsKLSAg
ICAgICAgfQotICAgICAgICBlbHNlIGlmIChpNjQgPj0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oUkFQ
SURKU09OX1VJTlQ2NF9DMigweEZGRkZGRkZGLCAweDgwMDAwMDAwKSkpCi0gICAgICAgICAgICBm
bGFnc18gfD0ga0ludEZsYWc7Ci0gICAgfQotCi0gICAgLy8hIENvbnN0cnVjdG9yIGZvciB1aW50
NjRfdCB2YWx1ZS4KLSAgICBleHBsaWNpdCBHZW5lcmljVmFsdWUodWludDY0X3QgdTY0KSBSQVBJ
REpTT05fTk9FWENFUFQgOiBkYXRhXygpLCBmbGFnc18oa051bWJlclVpbnQ2NEZsYWcpIHsKLSAg
ICAgICAgZGF0YV8ubi51NjQgPSB1NjQ7Ci0gICAgICAgIGlmICghKHU2NCAmIFJBUElESlNPTl9V
SU5UNjRfQzIoMHg4MDAwMDAwMCwgMHgwMDAwMDAwMCkpKQotICAgICAgICAgICAgZmxhZ3NfIHw9
IGtJbnQ2NEZsYWc7Ci0gICAgICAgIGlmICghKHU2NCAmIFJBUElESlNPTl9VSU5UNjRfQzIoMHhG
RkZGRkZGRiwgMHgwMDAwMDAwMCkpKQotICAgICAgICAgICAgZmxhZ3NfIHw9IGtVaW50RmxhZzsK
LSAgICAgICAgaWYgKCEodTY0ICYgUkFQSURKU09OX1VJTlQ2NF9DMigweEZGRkZGRkZGLCAweDgw
MDAwMDAwKSkpCi0gICAgICAgICAgICBmbGFnc18gfD0ga0ludEZsYWc7Ci0gICAgfQotCi0gICAg
Ly8hIENvbnN0cnVjdG9yIGZvciBkb3VibGUgdmFsdWUuCi0gICAgZXhwbGljaXQgR2VuZXJpY1Zh
bHVlKGRvdWJsZSBkKSBSQVBJREpTT05fTk9FWENFUFQgOiBkYXRhXygpLCBmbGFnc18oa051bWJl
ckRvdWJsZUZsYWcpIHsgZGF0YV8ubi5kID0gZDsgfQotCi0gICAgLy8hIENvbnN0cnVjdG9yIGZv
ciBjb25zdGFudCBzdHJpbmcgKGkuZS4gZG8gbm90IG1ha2UgYSBjb3B5IG9mIHN0cmluZykKLSAg
ICBHZW5lcmljVmFsdWUoY29uc3QgQ2gqIHMsIFNpemVUeXBlIGxlbmd0aCkgUkFQSURKU09OX05P
RVhDRVBUIDogZGF0YV8oKSwgZmxhZ3NfKCkgeyBTZXRTdHJpbmdSYXcoU3RyaW5nUmVmKHMsIGxl
bmd0aCkpOyB9Ci0KLSAgICAvLyEgQ29uc3RydWN0b3IgZm9yIGNvbnN0YW50IHN0cmluZyAoaS5l
LiBkbyBub3QgbWFrZSBhIGNvcHkgb2Ygc3RyaW5nKQotICAgIGV4cGxpY2l0IEdlbmVyaWNWYWx1
ZShTdHJpbmdSZWZUeXBlIHMpIFJBUElESlNPTl9OT0VYQ0VQVCA6IGRhdGFfKCksIGZsYWdzXygp
IHsgU2V0U3RyaW5nUmF3KHMpOyB9Ci0KLSAgICAvLyEgQ29uc3RydWN0b3IgZm9yIGNvcHktc3Ry
aW5nIChpLmUuIGRvIG1ha2UgYSBjb3B5IG9mIHN0cmluZykKLSAgICBHZW5lcmljVmFsdWUoY29u
c3QgQ2gqIHMsIFNpemVUeXBlIGxlbmd0aCwgQWxsb2NhdG9yJiBhbGxvY2F0b3IpIDogZGF0YV8o
KSwgZmxhZ3NfKCkgeyBTZXRTdHJpbmdSYXcoU3RyaW5nUmVmKHMsIGxlbmd0aCksIGFsbG9jYXRv
cik7IH0KLQotICAgIC8vISBDb25zdHJ1Y3RvciBmb3IgY29weS1zdHJpbmcgKGkuZS4gZG8gbWFr
ZSBhIGNvcHkgb2Ygc3RyaW5nKQotICAgIEdlbmVyaWNWYWx1ZShjb25zdCBDaCpzLCBBbGxvY2F0
b3ImIGFsbG9jYXRvcikgOiBkYXRhXygpLCBmbGFnc18oKSB7IFNldFN0cmluZ1JhdyhTdHJpbmdS
ZWYocyksIGFsbG9jYXRvcik7IH0KLQotI2lmIFJBUElESlNPTl9IQVNfU1REU1RSSU5HCi0gICAg
Ly8hIENvbnN0cnVjdG9yIGZvciBjb3B5LXN0cmluZyBmcm9tIGEgc3RyaW5nIG9iamVjdCAoaS5l
LiBkbyBtYWtlIGEgY29weSBvZiBzdHJpbmcpCi0gICAgLyohIFxub3RlIFJlcXVpcmVzIHRoZSBk
ZWZpbml0aW9uIG9mIHRoZSBwcmVwcm9jZXNzb3Igc3ltYm9sIFxyZWYgUkFQSURKU09OX0hBU19T
VERTVFJJTkcuCi0gICAgICovCi0gICAgR2VuZXJpY1ZhbHVlKGNvbnN0IHN0ZDo6YmFzaWNfc3Ry
aW5nPENoPiYgcywgQWxsb2NhdG9yJiBhbGxvY2F0b3IpIDogZGF0YV8oKSwgZmxhZ3NfKCkgeyBT
ZXRTdHJpbmdSYXcoU3RyaW5nUmVmKHMpLCBhbGxvY2F0b3IpOyB9Ci0jZW5kaWYKLQotICAgIC8v
ISBEZXN0cnVjdG9yLgotICAgIC8qISBOZWVkIHRvIGRlc3RydWN0IGVsZW1lbnRzIG9mIGFycmF5
LCBtZW1iZXJzIG9mIG9iamVjdCwgb3IgY29weS1zdHJpbmcuCi0gICAgKi8KLSAgICB+R2VuZXJp
Y1ZhbHVlKCkgewotICAgICAgICBpZiAoQWxsb2NhdG9yOjprTmVlZEZyZWUpIHsgLy8gU2hvcnRj
dXQgYnkgQWxsb2NhdG9yJ3MgdHJhaXQKLSAgICAgICAgICAgIHN3aXRjaChmbGFnc18pIHsKLSAg
ICAgICAgICAgIGNhc2Uga0FycmF5RmxhZzoKLSAgICAgICAgICAgICAgICBmb3IgKEdlbmVyaWNW
YWx1ZSogdiA9IGRhdGFfLmEuZWxlbWVudHM7IHYgIT0gZGF0YV8uYS5lbGVtZW50cyArIGRhdGFf
LmEuc2l6ZTsgKyt2KQotICAgICAgICAgICAgICAgICAgICB2LT5+R2VuZXJpY1ZhbHVlKCk7Ci0g
ICAgICAgICAgICAgICAgQWxsb2NhdG9yOjpGcmVlKGRhdGFfLmEuZWxlbWVudHMpOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBjYXNlIGtPYmplY3RGbGFnOgotICAgICAg
ICAgICAgICAgIGZvciAoTWVtYmVySXRlcmF0b3IgbSA9IE1lbWJlckJlZ2luKCk7IG0gIT0gTWVt
YmVyRW5kKCk7ICsrbSkKLSAgICAgICAgICAgICAgICAgICAgbS0+fk1lbWJlcigpOwotICAgICAg
ICAgICAgICAgIEFsbG9jYXRvcjo6RnJlZShkYXRhXy5vLm1lbWJlcnMpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgICAgICBjYXNlIGtDb3B5U3RyaW5nRmxhZzoKLSAgICAgICAg
ICAgICAgICBBbGxvY2F0b3I6OkZyZWUoY29uc3RfY2FzdDxDaCo+KGRhdGFfLnMuc3RyKSk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7ICAvLyBEbyBub3RoaW5nIGZvciBvdGhlciB0eXBlcy4KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vQH0KLQotICAgIC8vIUBuYW1lIEFzc2lnbm1l
bnQgb3BlcmF0b3JzCi0gICAgLy9AewotCi0gICAgLy8hIEFzc2lnbm1lbnQgd2l0aCBtb3ZlIHNl
bWFudGljcy4KLSAgICAvKiEgXHBhcmFtIHJocyBTb3VyY2Ugb2YgdGhlIGFzc2lnbm1lbnQuIEl0
IHdpbGwgYmVjb21lIGEgbnVsbCB2YWx1ZSBhZnRlciBhc3NpZ25tZW50LgotICAgICovCi0gICAg
R2VuZXJpY1ZhbHVlJiBvcGVyYXRvcj0oR2VuZXJpY1ZhbHVlJiByaHMpIFJBUElESlNPTl9OT0VY
Q0VQVCB7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQodGhpcyAhPSAmcmhzKTsKLSAgICAgICAg
dGhpcy0+fkdlbmVyaWNWYWx1ZSgpOwotICAgICAgICBSYXdBc3NpZ24ocmhzKTsKLSAgICAgICAg
cmV0dXJuICp0aGlzOwotICAgIH0KLQotI2lmIFJBUElESlNPTl9IQVNfQ1hYMTFfUlZBTFVFX1JF
RlMKLSAgICAvLyEgTW92ZSBhc3NpZ25tZW50IGluIEMrKzExCi0gICAgR2VuZXJpY1ZhbHVlJiBv
cGVyYXRvcj0oR2VuZXJpY1ZhbHVlJiYgcmhzKSBSQVBJREpTT05fTk9FWENFUFQgewotICAgICAg
ICByZXR1cm4gKnRoaXMgPSByaHMuTW92ZSgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgLy8hIEFz
c2lnbm1lbnQgb2YgY29uc3RhbnQgc3RyaW5nIHJlZmVyZW5jZSAobm8gY29weSkKLSAgICAvKiEg
XHBhcmFtIHN0ciBDb25zdGFudCBzdHJpbmcgcmVmZXJlbmNlIHRvIGJlIGFzc2lnbmVkCi0gICAg
ICAgIFxub3RlIFRoaXMgb3ZlcmxvYWQgaXMgbmVlZGVkIHRvIGF2b2lkIGNsYXNoZXMgd2l0aCB0
aGUgZ2VuZXJpYyBwcmltaXRpdmUgdHlwZSBhc3NpZ25tZW50IG92ZXJsb2FkIGJlbG93LgotICAg
ICAgICBcc2VlIEdlbmVyaWNTdHJpbmdSZWYsIG9wZXJhdG9yPShUKQotICAgICovCi0gICAgR2Vu
ZXJpY1ZhbHVlJiBvcGVyYXRvcj0oU3RyaW5nUmVmVHlwZSBzdHIpIFJBUElESlNPTl9OT0VYQ0VQ
VCB7Ci0gICAgICAgIEdlbmVyaWNWYWx1ZSBzKHN0cik7Ci0gICAgICAgIHJldHVybiAqdGhpcyA9
IHM7Ci0gICAgfQotCi0gICAgLy8hIEFzc2lnbm1lbnQgd2l0aCBwcmltaXRpdmUgdHlwZXMuCi0g
ICAgLyohIFx0cGFyYW0gVCBFaXRoZXIgXHJlZiBUeXBlLCBcYyBpbnQsIFxjIHVuc2lnbmVkLCBc
YyBpbnQ2NF90LCBcYyB1aW50NjRfdAotICAgICAgICBccGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRv
IGJlIGFzc2lnbmVkLgotCi0gICAgICAgIFxub3RlIFRoZSBzb3VyY2UgdHlwZSBcYyBUIGV4cGxp
Y2l0bHkgZGlzYWxsb3dzIGFsbCBwb2ludGVyIHR5cGVzLAotICAgICAgICAgICAgZXNwZWNpYWxs
eSAoXGMgY29uc3QpIFxyZWYgQ2gqLiAgVGhpcyBoZWxwcyBhdm9pZGluZyBpbXBsaWNpdGx5Ci0g
ICAgICAgICAgICByZWZlcmVuY2luZyBjaGFyYWN0ZXIgc3RyaW5ncyB3aXRoIGluc3VmZmljaWVu
dCBsaWZldGltZSwgdXNlCi0gICAgICAgICAgICBccmVmIFNldFN0cmluZyhjb25zdCBDaCosIEFs
bG9jYXRvciYpIChmb3IgY29weWluZykgb3IKLSAgICAgICAgICAgIFxyZWYgU3RyaW5nUmVmKCkg
KHRvIGV4cGxpY2l0bHkgbWFyayB0aGUgcG9pbnRlciBhcyBjb25zdGFudCkgaW5zdGVhZC4KLSAg
ICAgICAgICAgIEFsbCBvdGhlciBwb2ludGVyIHR5cGVzIHdvdWxkIGltcGxpY2l0bHkgY29udmVy
dCB0byBcYyBib29sLAotICAgICAgICAgICAgdXNlIFxyZWYgU2V0Qm9vbCgpIGluc3RlYWQuCi0g
ICAgKi8KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBSQVBJREpTT05fRElTQUJMRUlG
X1JFVFVSTigoaW50ZXJuYWw6OklzUG9pbnRlcjxUPiksIChHZW5lcmljVmFsdWUmKSkKLSAgICBv
cGVyYXRvcj0oVCB2YWx1ZSkgewotICAgICAgICBHZW5lcmljVmFsdWUgdih2YWx1ZSk7Ci0gICAg
ICAgIHJldHVybiAqdGhpcyA9IHY7Ci0gICAgfQotCi0gICAgLy8hIERlZXAtY29weSBhc3NpZ25t
ZW50IGZyb20gVmFsdWUKLSAgICAvKiEgQXNzaWducyBhIFxiIGNvcHkgb2YgdGhlIFZhbHVlIHRv
IHRoZSBjdXJyZW50IFZhbHVlIG9iamVjdAotICAgICAgICBcdHBhcmFtIFNvdXJjZUFsbG9jYXRv
ciBBbGxvY2F0b3IgdHlwZSBvZiBcYyByaHMKLSAgICAgICAgXHBhcmFtIHJocyBWYWx1ZSB0byBj
b3B5IGZyb20gKHJlYWQtb25seSkKLSAgICAgICAgXHBhcmFtIGFsbG9jYXRvciBBbGxvY2F0b3Ig
dG8gdXNlIGZvciBjb3B5aW5nCi0gICAgICovCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNvdXJj
ZUFsbG9jYXRvcj4KLSAgICBHZW5lcmljVmFsdWUmIENvcHlGcm9tKGNvbnN0IEdlbmVyaWNWYWx1
ZTxFbmNvZGluZywgU291cmNlQWxsb2NhdG9yPiYgcmhzLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikg
ewotICAgICAgICBSQVBJREpTT05fQVNTRVJUKCh2b2lkKil0aGlzICE9ICh2b2lkIGNvbnN0Kikm
cmhzKTsKLSAgICAgICAgdGhpcy0+fkdlbmVyaWNWYWx1ZSgpOwotICAgICAgICBuZXcgKHRoaXMp
IEdlbmVyaWNWYWx1ZShyaHMsIGFsbG9jYXRvcik7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAg
ICB9Ci0KLSAgICAvLyEgRXhjaGFuZ2UgdGhlIGNvbnRlbnRzIG9mIHRoaXMgdmFsdWUgd2l0aCB0
aG9zZSBvZiBvdGhlci4KLSAgICAvKiEKLSAgICAgICAgXHBhcmFtIG90aGVyIEFub3RoZXIgdmFs
dWUuCi0gICAgICAgIFxub3RlIENvbnN0YW50IGNvbXBsZXhpdHkuCi0gICAgKi8KLSAgICBHZW5l
cmljVmFsdWUmIFN3YXAoR2VuZXJpY1ZhbHVlJiBvdGhlcikgUkFQSURKU09OX05PRVhDRVBUIHsK
LSAgICAgICAgR2VuZXJpY1ZhbHVlIHRlbXA7Ci0gICAgICAgIHRlbXAuUmF3QXNzaWduKCp0aGlz
KTsKLSAgICAgICAgUmF3QXNzaWduKG90aGVyKTsKLSAgICAgICAgb3RoZXIuUmF3QXNzaWduKHRl
bXApOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgLy8hIFByZXBhcmUgVmFs
dWUgZm9yIG1vdmUgc2VtYW50aWNzCi0gICAgLyohIFxyZXR1cm4gKnRoaXMgKi8KLSAgICBHZW5l
cmljVmFsdWUmIE1vdmUoKSBSQVBJREpTT05fTk9FWENFUFQgeyByZXR1cm4gKnRoaXM7IH0KLSAg
ICAvL0B9Ci0KLSAgICAvLyFAbmFtZSBFcXVhbC10byBhbmQgbm90LWVxdWFsLXRvIG9wZXJhdG9y
cwotICAgIC8vQHsKLSAgICAvLyEgRXF1YWwtdG8gb3BlcmF0b3IKLSAgICAvKiEKLSAgICAgICAg
XG5vdGUgSWYgYW4gb2JqZWN0IGNvbnRhaW5zIGR1cGxpY2F0ZWQgbmFtZWQgbWVtYmVyLCBjb21w
YXJpbmcgZXF1YWxpdHkgd2l0aCBhbnkgb2JqZWN0IGlzIGFsd2F5cyBcYyBmYWxzZS4KLSAgICAg
ICAgXG5vdGUgTGluZWFyIHRpbWUgY29tcGxleGl0eSAobnVtYmVyIG9mIGFsbCB2YWx1ZXMgaW4g
dGhlIHN1YnRyZWUgYW5kIHRvdGFsIGxlbmd0aHMgb2YgYWxsIHN0cmluZ3MpLgotICAgICovCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNvdXJjZUFsbG9jYXRvcj4KLSAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgR2VuZXJpY1ZhbHVlPEVuY29kaW5nLCBTb3VyY2VBbGxvY2F0b3I+JiByaHMpIGNv
bnN0IHsKLSAgICAgICAgdHlwZWRlZiBHZW5lcmljVmFsdWU8RW5jb2RpbmcsIFNvdXJjZUFsbG9j
YXRvcj4gUmhzVHlwZTsKLSAgICAgICAgaWYgKEdldFR5cGUoKSAhPSByaHMuR2V0VHlwZSgpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHN3aXRjaCAoR2V0VHlwZSgpKSB7
Ci0gICAgICAgIGNhc2Uga09iamVjdFR5cGU6IC8vIFdhcm5pbmc6IE8obl4yKSBpbm5lci1sb29w
Ci0gICAgICAgICAgICBpZiAoZGF0YV8uby5zaXplICE9IHJocy5kYXRhXy5vLnNpemUpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKENv
bnN0TWVtYmVySXRlcmF0b3IgbGhzTWVtYmVySXRyID0gTWVtYmVyQmVnaW4oKTsgbGhzTWVtYmVy
SXRyICE9IE1lbWJlckVuZCgpOyArK2xoc01lbWJlckl0cikgewotICAgICAgICAgICAgICAgIHR5
cGVuYW1lIFJoc1R5cGU6OkNvbnN0TWVtYmVySXRlcmF0b3IgcmhzTWVtYmVySXRyID0gcmhzLkZp
bmRNZW1iZXIobGhzTWVtYmVySXRyLT5uYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAocmhzTWVt
YmVySXRyID09IHJocy5NZW1iZXJFbmQoKSB8fCBsaHNNZW1iZXJJdHItPnZhbHVlICE9IHJoc01l
bWJlckl0ci0+dmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgCi0gICAgICAg
IGNhc2Uga0FycmF5VHlwZToKLSAgICAgICAgICAgIGlmIChkYXRhXy5hLnNpemUgIT0gcmhzLmRh
dGFfLmEuc2l6ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBm
b3IgKFNpemVUeXBlIGkgPSAwOyBpIDwgZGF0YV8uYS5zaXplOyBpKyspCi0gICAgICAgICAgICAg
ICAgaWYgKCgqdGhpcylbaV0gIT0gcmhzW2ldKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBjYXNlIGtTdHJpbmdU
eXBlOgotICAgICAgICAgICAgcmV0dXJuIFN0cmluZ0VxdWFsKHJocyk7Ci0KLSAgICAgICAgY2Fz
ZSBrTnVtYmVyVHlwZToKLSAgICAgICAgICAgIGlmIChJc0RvdWJsZSgpIHx8IHJocy5Jc0RvdWJs
ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBHZXREb3VibGUoKSA9PSByaHMuR2V0RG91Ymxl
KCk7IC8vIE1heSBjb252ZXJ0IG9uZSBvcGVyYW5kIGZyb20gaW50ZWdlciB0byBkb3VibGUuCi0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFfLm4udTY0ID09IHJo
cy5kYXRhXy5uLnU2NDsKLQotICAgICAgICBkZWZhdWx0OiAvLyBrVHJ1ZVR5cGUsIGtGYWxzZVR5
cGUsIGtOdWxsVHlwZQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICAvLyEgRXF1YWwtdG8gb3BlcmF0b3Igd2l0aCBjb25zdCBDLXN0cmluZyBwb2ludGVy
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENoKiByaHMpIGNvbnN0IHsgcmV0dXJuICp0aGlz
ID09IEdlbmVyaWNWYWx1ZShTdHJpbmdSZWYocmhzKSk7IH0KLQotI2lmIFJBUElESlNPTl9IQVNf
U1REU1RSSU5HCi0gICAgLy8hIEVxdWFsLXRvIG9wZXJhdG9yIHdpdGggc3RyaW5nIG9iamVjdAot
ICAgIC8qISBcbm90ZSBSZXF1aXJlcyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgcHJlcHJvY2Vzc29y
IHN5bWJvbCBccmVmIFJBUElESlNPTl9IQVNfU1REU1RSSU5HLgotICAgICAqLwotICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxDaD4mIHJocykgY29uc3QgeyByZXR1
cm4gKnRoaXMgPT0gR2VuZXJpY1ZhbHVlKFN0cmluZ1JlZihyaHMpKTsgfQotI2VuZGlmCi0KLSAg
ICAvLyEgRXF1YWwtdG8gb3BlcmF0b3Igd2l0aCBwcmltaXRpdmUgdHlwZXMKLSAgICAvKiEgXHRw
YXJhbSBUIEVpdGhlciBccmVmIFR5cGUsIFxjIGludCwgXGMgdW5zaWduZWQsIFxjIGludDY0X3Qs
IFxjIHVpbnQ2NF90LCBcYyBkb3VibGUsIFxjIHRydWUsIFxjIGZhbHNlCi0gICAgKi8KLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gUkFQSURKU09OX0RJU0FCTEVJRl9SRVRVUk4oKGludGVybmFs
OjpPckV4cHI8aW50ZXJuYWw6OklzUG9pbnRlcjxUPixpbnRlcm5hbDo6SXNHZW5lcmljVmFsdWU8
VD4gPiksIChib29sKSkgb3BlcmF0b3I9PShjb25zdCBUJiByaHMpIGNvbnN0IHsgcmV0dXJuICp0
aGlzID09IEdlbmVyaWNWYWx1ZShyaHMpOyB9Ci0KLSAgICAvLyEgTm90LWVxdWFsLXRvIG9wZXJh
dG9yCi0gICAgLyohIFxyZXR1cm4gISgqdGhpcyA9PSByaHMpCi0gICAgICovCi0gICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFNvdXJjZUFsbG9jYXRvcj4KLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
R2VuZXJpY1ZhbHVlPEVuY29kaW5nLCBTb3VyY2VBbGxvY2F0b3I+JiByaHMpIGNvbnN0IHsgcmV0
dXJuICEoKnRoaXMgPT0gcmhzKTsgfQotCi0gICAgLy8hIE5vdC1lcXVhbC10byBvcGVyYXRvciB3
aXRoIGNvbnN0IEMtc3RyaW5nIHBvaW50ZXIKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ2gq
IHJocykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSByaHMpOyB9Ci0KLSAgICAvLyEgTm90LWVx
dWFsLXRvIG9wZXJhdG9yIHdpdGggYXJiaXRyYXJ5IHR5cGVzCi0gICAgLyohIFxyZXR1cm4gISgq
dGhpcyA9PSByaHMpCi0gICAgICovCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IFJBUElESlNP
Tl9ESVNBQkxFSUZfUkVUVVJOKChpbnRlcm5hbDo6SXNHZW5lcmljVmFsdWU8VD4pLCAoYm9vbCkp
IG9wZXJhdG9yIT0oY29uc3QgVCYgcmhzKSBjb25zdCB7IHJldHVybiAhKCp0aGlzID09IHJocyk7
IH0KLQotICAgIC8vISBFcXVhbC10byBvcGVyYXRvciB3aXRoIGFyYml0cmFyeSB0eXBlcyAoc3lt
bWV0cmljIHZlcnNpb24pCi0gICAgLyohIFxyZXR1cm4gKHJocyA9PSBsaHMpCi0gICAgICovCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGZyaWVuZCBSQVBJREpTT05fRElTQUJMRUlGX1JFVFVS
TigoaW50ZXJuYWw6OklzR2VuZXJpY1ZhbHVlPFQ+KSwgKGJvb2wpKSBvcGVyYXRvcj09KGNvbnN0
IFQmIGxocywgY29uc3QgR2VuZXJpY1ZhbHVlJiByaHMpIHsgcmV0dXJuIHJocyA9PSBsaHM7IH0K
LQotICAgIC8vISBOb3QtRXF1YWwtdG8gb3BlcmF0b3Igd2l0aCBhcmJpdHJhcnkgdHlwZXMgKHN5
bW1ldHJpYyB2ZXJzaW9uKQotICAgIC8qISBccmV0dXJuICEocmhzID09IGxocykKLSAgICAgKi8K
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gZnJpZW5kIFJBUElESlNPTl9ESVNBQkxFSUZfUkVU
VVJOKChpbnRlcm5hbDo6SXNHZW5lcmljVmFsdWU8VD4pLCAoYm9vbCkpIG9wZXJhdG9yIT0oY29u
c3QgVCYgbGhzLCBjb25zdCBHZW5lcmljVmFsdWUmIHJocykgeyByZXR1cm4gIShyaHMgPT0gbGhz
KTsgfQotICAgIC8vQH0KLQotICAgIC8vIUBuYW1lIFR5cGUKLSAgICAvL0B7Ci0KLSAgICBUeXBl
IEdldFR5cGUoKSAgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VHlwZT4oZmxhZ3NfICYga1R5
cGVNYXNrKTsgfQotICAgIGJvb2wgSXNOdWxsKCkgICBjb25zdCB7IHJldHVybiBmbGFnc18gPT0g
a051bGxGbGFnOyB9Ci0gICAgYm9vbCBJc0ZhbHNlKCkgIGNvbnN0IHsgcmV0dXJuIGZsYWdzXyA9
PSBrRmFsc2VGbGFnOyB9Ci0gICAgYm9vbCBJc1RydWUoKSAgIGNvbnN0IHsgcmV0dXJuIGZsYWdz
XyA9PSBrVHJ1ZUZsYWc7IH0KLSAgICBib29sIElzQm9vbCgpICAgY29uc3QgeyByZXR1cm4gKGZs
YWdzXyAmIGtCb29sRmxhZykgIT0gMDsgfQotICAgIGJvb2wgSXNPYmplY3QoKSBjb25zdCB7IHJl
dHVybiBmbGFnc18gPT0ga09iamVjdEZsYWc7IH0KLSAgICBib29sIElzQXJyYXkoKSAgY29uc3Qg
eyByZXR1cm4gZmxhZ3NfID09IGtBcnJheUZsYWc7IH0KLSAgICBib29sIElzTnVtYmVyKCkgY29u
c3QgeyByZXR1cm4gKGZsYWdzXyAmIGtOdW1iZXJGbGFnKSAhPSAwOyB9Ci0gICAgYm9vbCBJc0lu
dCgpICAgIGNvbnN0IHsgcmV0dXJuIChmbGFnc18gJiBrSW50RmxhZykgIT0gMDsgfQotICAgIGJv
b2wgSXNVaW50KCkgICBjb25zdCB7IHJldHVybiAoZmxhZ3NfICYga1VpbnRGbGFnKSAhPSAwOyB9
Ci0gICAgYm9vbCBJc0ludDY0KCkgIGNvbnN0IHsgcmV0dXJuIChmbGFnc18gJiBrSW50NjRGbGFn
KSAhPSAwOyB9Ci0gICAgYm9vbCBJc1VpbnQ2NCgpIGNvbnN0IHsgcmV0dXJuIChmbGFnc18gJiBr
VWludDY0RmxhZykgIT0gMDsgfQotICAgIGJvb2wgSXNEb3VibGUoKSBjb25zdCB7IHJldHVybiAo
ZmxhZ3NfICYga0RvdWJsZUZsYWcpICE9IDA7IH0KLSAgICBib29sIElzU3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gKGZsYWdzXyAmIGtTdHJpbmdGbGFnKSAhPSAwOyB9Ci0KLSAgICAvL0B9Ci0KLSAg
ICAvLyFAbmFtZSBOdWxsCi0gICAgLy9AewotCi0gICAgR2VuZXJpY1ZhbHVlJiBTZXROdWxsKCkg
eyB0aGlzLT5+R2VuZXJpY1ZhbHVlKCk7IG5ldyAodGhpcykgR2VuZXJpY1ZhbHVlKCk7IHJldHVy
biAqdGhpczsgfQotCi0gICAgLy9AfQotCi0gICAgLy8hQG5hbWUgQm9vbAotICAgIC8vQHsKLQot
ICAgIGJvb2wgR2V0Qm9vbCgpIGNvbnN0IHsgUkFQSURKU09OX0FTU0VSVChJc0Jvb2woKSk7IHJl
dHVybiBmbGFnc18gPT0ga1RydWVGbGFnOyB9Ci0gICAgLy8hPCBTZXQgYm9vbGVhbiB2YWx1ZQot
ICAgIC8qISBccG9zdCBJc0Jvb2woKSA9PSB0cnVlICovCi0gICAgR2VuZXJpY1ZhbHVlJiBTZXRC
b29sKGJvb2wgYikgeyB0aGlzLT5+R2VuZXJpY1ZhbHVlKCk7IG5ldyAodGhpcykgR2VuZXJpY1Zh
bHVlKGIpOyByZXR1cm4gKnRoaXM7IH0KLQotICAgIC8vQH0KLQotICAgIC8vIUBuYW1lIE9iamVj
dAotICAgIC8vQHsKLQotICAgIC8vISBTZXQgdGhpcyB2YWx1ZSBhcyBhbiBlbXB0eSBvYmplY3Qu
Ci0gICAgLyohIFxwb3N0IElzT2JqZWN0KCkgPT0gdHJ1ZSAqLwotICAgIEdlbmVyaWNWYWx1ZSYg
U2V0T2JqZWN0KCkgeyB0aGlzLT5+R2VuZXJpY1ZhbHVlKCk7IG5ldyAodGhpcykgR2VuZXJpY1Zh
bHVlKGtPYmplY3RUeXBlKTsgcmV0dXJuICp0aGlzOyB9Ci0KLSAgICAvLyEgR2V0IHRoZSBudW1i
ZXIgb2YgbWVtYmVycyBpbiB0aGUgb2JqZWN0LgotICAgIFNpemVUeXBlIE1lbWJlckNvdW50KCkg
Y29uc3QgeyBSQVBJREpTT05fQVNTRVJUKElzT2JqZWN0KCkpOyByZXR1cm4gZGF0YV8uby5zaXpl
OyB9Ci0KLSAgICAvLyEgQ2hlY2sgd2hldGhlciB0aGUgb2JqZWN0IGlzIGVtcHR5LgotICAgIGJv
b2wgT2JqZWN0RW1wdHkoKSBjb25zdCB7IFJBUElESlNPTl9BU1NFUlQoSXNPYmplY3QoKSk7IHJl
dHVybiBkYXRhXy5vLnNpemUgPT0gMDsgfQotCi0gICAgLy8hIEdldCBhIHZhbHVlIGZyb20gYW4g
b2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgbmFtZS4KLSAgICAvKiEgXHByZSBJc09iamVjdCgp
ID09IHRydWUKLSAgICAgICAgXHRwYXJhbSBUIEVpdGhlciBcYyBDaCBvciBcYyBjb25zdCBcYyBD
aCAodGVtcGxhdGUgdXNlZCBmb3IgZGlzYW1iaWd1YXRpb24gd2l0aCBccmVmIG9wZXJhdG9yW10o
U2l6ZVR5cGUpKQotICAgICAgICBcbm90ZSBJbiB2ZXJzaW9uIDAuMXgsIGlmIHRoZSBtZW1iZXIg
aXMgbm90IGZvdW5kLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYSBudWxsIHZhbHVlLiBUaGlzIG1h
a2VzIGlzc3VlIDcuCi0gICAgICAgIFNpbmNlIDAuMiwgaWYgdGhlIG5hbWUgaXMgbm90IGNvcnJl
Y3QsIGl0IHdpbGwgYXNzZXJ0LgotICAgICAgICBJZiB1c2VyIGlzIHVuc3VyZSB3aGV0aGVyIGEg
bWVtYmVyIGV4aXN0cywgdXNlciBzaG91bGQgdXNlIEhhc01lbWJlcigpIGZpcnN0LgotICAgICAg
ICBBIGJldHRlciBhcHByb2FjaCBpcyB0byB1c2UgRmluZE1lbWJlcigpLgotICAgICAgICBcbm90
ZSBMaW5lYXIgdGltZSBjb21wbGV4aXR5LgotICAgICovCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+Ci0gICAgUkFQSURKU09OX0RJU0FCTEVJRl9SRVRVUk4oKGludGVybmFsOjpOb3RFeHByPGlu
dGVybmFsOjpJc1NhbWU8dHlwZW5hbWUgaW50ZXJuYWw6OlJlbW92ZUNvbnN0PFQ+OjpUeXBlLCBD
aD4gPiksKEdlbmVyaWNWYWx1ZSYpKSBvcGVyYXRvcltdKFQqIG5hbWUpIHsKLSAgICAgICAgR2Vu
ZXJpY1ZhbHVlIG4oU3RyaW5nUmVmKG5hbWUpKTsKLSAgICAgICAgcmV0dXJuICgqdGhpcylbbl07
Ci0gICAgfQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIFJBUElESlNPTl9ESVNBQkxF
SUZfUkVUVVJOKChpbnRlcm5hbDo6Tm90RXhwcjxpbnRlcm5hbDo6SXNTYW1lPHR5cGVuYW1lIGlu
dGVybmFsOjpSZW1vdmVDb25zdDxUPjo6VHlwZSwgQ2g+ID4pLChjb25zdCBHZW5lcmljVmFsdWUm
KSkgb3BlcmF0b3JbXShUKiBuYW1lKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEdlbmVyaWNW
YWx1ZSY+KCp0aGlzKVtuYW1lXTsgfQotCi0gICAgLy8hIEdldCBhIHZhbHVlIGZyb20gYW4gb2Jq
ZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgbmFtZS4KLSAgICAvKiEgXHByZSBJc09iamVjdCgpID09
IHRydWUKLSAgICAgICAgXHRwYXJhbSBTb3VyY2VBbGxvY2F0b3IgQWxsb2NhdG9yIG9mIHRoZSBc
YyBuYW1lIHZhbHVlCi0KLSAgICAgICAgXG5vdGUgQ29tcGFyZWQgdG8gXHJlZiBvcGVyYXRvcltd
KFQqKSwgdGhpcyB2ZXJzaW9uIGlzIGZhc3RlciBiZWNhdXNlIGl0IGRvZXMgbm90IG5lZWQgYSBT
dHJMZW4oKS4KLSAgICAgICAgQW5kIGl0IGNhbiBhbHNvIGhhbmRsZSBzdHJpbmdzIHdpdGggZW1i
ZWRkZWQgbnVsbCBjaGFyYWN0ZXJzLgotCi0gICAgICAgIFxub3RlIExpbmVhciB0aW1lIGNvbXBs
ZXhpdHkuCi0gICAgKi8KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU291cmNlQWxsb2NhdG9yPgot
ICAgIEdlbmVyaWNWYWx1ZSYgb3BlcmF0b3JbXShjb25zdCBHZW5lcmljVmFsdWU8RW5jb2Rpbmcs
IFNvdXJjZUFsbG9jYXRvcj4mIG5hbWUpIHsKLSAgICAgICAgTWVtYmVySXRlcmF0b3IgbWVtYmVy
ID0gRmluZE1lbWJlcihuYW1lKTsKLSAgICAgICAgaWYgKG1lbWJlciAhPSBNZW1iZXJFbmQoKSkK
LSAgICAgICAgICAgIHJldHVybiBtZW1iZXItPnZhbHVlOwotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyAgICAvLyBzZWUgYWJvdmUgbm90ZQotICAg
ICAgICAgICAgc3RhdGljIEdlbmVyaWNWYWx1ZSBOdWxsVmFsdWU7Ci0gICAgICAgICAgICByZXR1
cm4gTnVsbFZhbHVlOwotICAgICAgICB9Ci0gICAgfQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBT
b3VyY2VBbGxvY2F0b3I+Ci0gICAgY29uc3QgR2VuZXJpY1ZhbHVlJiBvcGVyYXRvcltdKGNvbnN0
IEdlbmVyaWNWYWx1ZTxFbmNvZGluZywgU291cmNlQWxsb2NhdG9yPiYgbmFtZSkgY29uc3QgeyBy
ZXR1cm4gY29uc3RfY2FzdDxHZW5lcmljVmFsdWUmPigqdGhpcylbbmFtZV07IH0KLQotICAgIC8v
ISBDb25zdCBtZW1iZXIgaXRlcmF0b3IKLSAgICAvKiEgXHByZSBJc09iamVjdCgpID09IHRydWUg
Ki8KLSAgICBDb25zdE1lbWJlckl0ZXJhdG9yIE1lbWJlckJlZ2luKCkgY29uc3QgeyBSQVBJREpT
T05fQVNTRVJUKElzT2JqZWN0KCkpOyByZXR1cm4gQ29uc3RNZW1iZXJJdGVyYXRvcihkYXRhXy5v
Lm1lbWJlcnMpOyB9Ci0gICAgLy8hIENvbnN0IFxlbSBwYXN0LXRoZS1lbmQgbWVtYmVyIGl0ZXJh
dG9yCi0gICAgLyohIFxwcmUgSXNPYmplY3QoKSA9PSB0cnVlICovCi0gICAgQ29uc3RNZW1iZXJJ
dGVyYXRvciBNZW1iZXJFbmQoKSBjb25zdCAgIHsgUkFQSURKU09OX0FTU0VSVChJc09iamVjdCgp
KTsgcmV0dXJuIENvbnN0TWVtYmVySXRlcmF0b3IoZGF0YV8uby5tZW1iZXJzICsgZGF0YV8uby5z
aXplKTsgfQotICAgIC8vISBNZW1iZXIgaXRlcmF0b3IKLSAgICAvKiEgXHByZSBJc09iamVjdCgp
ID09IHRydWUgKi8KLSAgICBNZW1iZXJJdGVyYXRvciBNZW1iZXJCZWdpbigpICAgICAgICAgICAg
eyBSQVBJREpTT05fQVNTRVJUKElzT2JqZWN0KCkpOyByZXR1cm4gTWVtYmVySXRlcmF0b3IoZGF0
YV8uby5tZW1iZXJzKTsgfQotICAgIC8vISBcZW0gUGFzdC10aGUtZW5kIG1lbWJlciBpdGVyYXRv
cgotICAgIC8qISBccHJlIElzT2JqZWN0KCkgPT0gdHJ1ZSAqLwotICAgIE1lbWJlckl0ZXJhdG9y
IE1lbWJlckVuZCgpICAgICAgICAgICAgICB7IFJBUElESlNPTl9BU1NFUlQoSXNPYmplY3QoKSk7
IHJldHVybiBNZW1iZXJJdGVyYXRvcihkYXRhXy5vLm1lbWJlcnMgKyBkYXRhXy5vLnNpemUpOyB9
Ci0KLSAgICAvLyEgQ2hlY2sgd2hldGhlciBhIG1lbWJlciBleGlzdHMgaW4gdGhlIG9iamVjdC4K
LSAgICAvKiEKLSAgICAgICAgXHBhcmFtIG5hbWUgTWVtYmVyIG5hbWUgdG8gYmUgc2VhcmNoZWQu
Ci0gICAgICAgIFxwcmUgSXNPYmplY3QoKSA9PSB0cnVlCi0gICAgICAgIFxyZXR1cm4gV2hldGhl
ciBhIG1lbWJlciB3aXRoIHRoYXQgbmFtZSBleGlzdHMuCi0gICAgICAgIFxub3RlIEl0IGlzIGJl
dHRlciB0byB1c2UgRmluZE1lbWJlcigpIGRpcmVjdGx5IGlmIHlvdSBuZWVkIHRoZSBvYnRhaW4g
dGhlIHZhbHVlIGFzIHdlbGwuCi0gICAgICAgIFxub3RlIExpbmVhciB0aW1lIGNvbXBsZXhpdHku
Ci0gICAgKi8KLSAgICBib29sIEhhc01lbWJlcihjb25zdCBDaCogbmFtZSkgY29uc3QgeyByZXR1
cm4gRmluZE1lbWJlcihuYW1lKSAhPSBNZW1iZXJFbmQoKTsgfQotCi0gICAgLy8hIENoZWNrIHdo
ZXRoZXIgYSBtZW1iZXIgZXhpc3RzIGluIHRoZSBvYmplY3Qgd2l0aCBHZW5lcmljVmFsdWUgbmFt
ZS4KLSAgICAvKiEKLSAgICAgICAgVGhpcyB2ZXJzaW9uIGlzIGZhc3RlciBiZWNhdXNlIGl0IGRv
ZXMgbm90IG5lZWQgYSBTdHJMZW4oKS4gSXQgY2FuIGFsc28gaGFuZGxlIHN0cmluZyB3aXRoIG51
bGwgY2hhcmFjdGVyLgotICAgICAgICBccGFyYW0gbmFtZSBNZW1iZXIgbmFtZSB0byBiZSBzZWFy
Y2hlZC4KLSAgICAgICAgXHByZSBJc09iamVjdCgpID09IHRydWUKLSAgICAgICAgXHJldHVybiBX
aGV0aGVyIGEgbWVtYmVyIHdpdGggdGhhdCBuYW1lIGV4aXN0cy4KLSAgICAgICAgXG5vdGUgSXQg
aXMgYmV0dGVyIHRvIHVzZSBGaW5kTWVtYmVyKCkgZGlyZWN0bHkgaWYgeW91IG5lZWQgdGhlIG9i
dGFpbiB0aGUgdmFsdWUgYXMgd2VsbC4KLSAgICAgICAgXG5vdGUgTGluZWFyIHRpbWUgY29tcGxl
eGl0eS4KLSAgICAqLwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTb3VyY2VBbGxvY2F0b3I+Ci0g
ICAgYm9vbCBIYXNNZW1iZXIoY29uc3QgR2VuZXJpY1ZhbHVlPEVuY29kaW5nLCBTb3VyY2VBbGxv
Y2F0b3I+JiBuYW1lKSBjb25zdCB7IHJldHVybiBGaW5kTWVtYmVyKG5hbWUpICE9IE1lbWJlckVu
ZCgpOyB9Ci0KLSAgICAvLyEgRmluZCBtZW1iZXIgYnkgbmFtZS4KLSAgICAvKiEKLSAgICAgICAg
XHBhcmFtIG5hbWUgTWVtYmVyIG5hbWUgdG8gYmUgc2VhcmNoZWQuCi0gICAgICAgIFxwcmUgSXNP
YmplY3QoKSA9PSB0cnVlCi0gICAgICAgIFxyZXR1cm4gSXRlcmF0b3IgdG8gbWVtYmVyLCBpZiBp
dCBleGlzdHMuCi0gICAgICAgICAgICBPdGhlcndpc2UgcmV0dXJucyBccmVmIE1lbWJlckVuZCgp
LgotCi0gICAgICAgIFxub3RlIEVhcmxpZXIgdmVyc2lvbnMgb2YgUmFwaWRqc29uIHJldHVybmVk
IGEgXGMgTlVMTCBwb2ludGVyLCBpbiBjYXNlCi0gICAgICAgICAgICB0aGUgcmVxdWVzdGVkIG1l
bWJlciBkb2Vzbid0IGV4aXN0LiBGb3IgY29uc2lzdGVuY3kgd2l0aCBlLmcuCi0gICAgICAgICAg
ICBcYyBzdGQ6Om1hcCwgdGhpcyBoYXMgYmVlbiBjaGFuZ2VkIHRvIE1lbWJlckVuZCgpIG5vdy4K
LSAgICAgICAgXG5vdGUgTGluZWFyIHRpbWUgY29tcGxleGl0eS4KLSAgICAqLwotICAgIE1lbWJl
ckl0ZXJhdG9yIEZpbmRNZW1iZXIoY29uc3QgQ2gqIG5hbWUpIHsKLSAgICAgICAgR2VuZXJpY1Zh
bHVlIG4oU3RyaW5nUmVmKG5hbWUpKTsKLSAgICAgICAgcmV0dXJuIEZpbmRNZW1iZXIobik7Ci0g
ICAgfQotCi0gICAgQ29uc3RNZW1iZXJJdGVyYXRvciBGaW5kTWVtYmVyKGNvbnN0IENoKiBuYW1l
KSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEdlbmVyaWNWYWx1ZSY+KCp0aGlzKS5GaW5kTWVt
YmVyKG5hbWUpOyB9Ci0KLSAgICAvLyEgRmluZCBtZW1iZXIgYnkgbmFtZS4KLSAgICAvKiEKLSAg
ICAgICAgVGhpcyB2ZXJzaW9uIGlzIGZhc3RlciBiZWNhdXNlIGl0IGRvZXMgbm90IG5lZWQgYSBT
dHJMZW4oKS4gSXQgY2FuIGFsc28gaGFuZGxlIHN0cmluZyB3aXRoIG51bGwgY2hhcmFjdGVyLgot
ICAgICAgICBccGFyYW0gbmFtZSBNZW1iZXIgbmFtZSB0byBiZSBzZWFyY2hlZC4KLSAgICAgICAg
XHByZSBJc09iamVjdCgpID09IHRydWUKLSAgICAgICAgXHJldHVybiBJdGVyYXRvciB0byBtZW1i
ZXIsIGlmIGl0IGV4aXN0cy4KLSAgICAgICAgICAgIE90aGVyd2lzZSByZXR1cm5zIFxyZWYgTWVt
YmVyRW5kKCkuCi0KLSAgICAgICAgXG5vdGUgRWFybGllciB2ZXJzaW9ucyBvZiBSYXBpZGpzb24g
cmV0dXJuZWQgYSBcYyBOVUxMIHBvaW50ZXIsIGluIGNhc2UKLSAgICAgICAgICAgIHRoZSByZXF1
ZXN0ZWQgbWVtYmVyIGRvZXNuJ3QgZXhpc3QuIEZvciBjb25zaXN0ZW5jeSB3aXRoIGUuZy4KLSAg
ICAgICAgICAgIFxjIHN0ZDo6bWFwLCB0aGlzIGhhcyBiZWVuIGNoYW5nZWQgdG8gTWVtYmVyRW5k
KCkgbm93LgotICAgICAgICBcbm90ZSBMaW5lYXIgdGltZSBjb21wbGV4aXR5LgotICAgICovCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNvdXJjZUFsbG9jYXRvcj4KLSAgICBNZW1iZXJJdGVyYXRv
ciBGaW5kTWVtYmVyKGNvbnN0IEdlbmVyaWNWYWx1ZTxFbmNvZGluZywgU291cmNlQWxsb2NhdG9y
PiYgbmFtZSkgewotICAgICAgICBSQVBJREpTT05fQVNTRVJUKElzT2JqZWN0KCkpOwotICAgICAg
ICBSQVBJREpTT05fQVNTRVJUKG5hbWUuSXNTdHJpbmcoKSk7Ci0gICAgICAgIE1lbWJlckl0ZXJh
dG9yIG1lbWJlciA9IE1lbWJlckJlZ2luKCk7Ci0gICAgICAgIGZvciAoIDsgbWVtYmVyICE9IE1l
bWJlckVuZCgpOyArK21lbWJlcikKLSAgICAgICAgICAgIGlmIChuYW1lLlN0cmluZ0VxdWFsKG1l
bWJlci0+bmFtZSkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHJldHVybiBtZW1i
ZXI7Ci0gICAgfQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTb3VyY2VBbGxvY2F0b3I+IENvbnN0
TWVtYmVySXRlcmF0b3IgRmluZE1lbWJlcihjb25zdCBHZW5lcmljVmFsdWU8RW5jb2RpbmcsIFNv
dXJjZUFsbG9jYXRvcj4mIG5hbWUpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8R2VuZXJpY1Zh
bHVlJj4oKnRoaXMpLkZpbmRNZW1iZXIobmFtZSk7IH0KLQotICAgIC8vISBBZGQgYSBtZW1iZXIg
KG5hbWUtdmFsdWUgcGFpcikgdG8gdGhlIG9iamVjdC4KLSAgICAvKiEgXHBhcmFtIG5hbWUgQSBz
dHJpbmcgdmFsdWUgYXMgbmFtZSBvZiBtZW1iZXIuCi0gICAgICAgIFxwYXJhbSB2YWx1ZSBWYWx1
ZSBvZiBhbnkgdHlwZS4KLSAgICAgICAgXHBhcmFtIGFsbG9jYXRvciAgICBBbGxvY2F0b3IgZm9y
IHJlYWxsb2NhdGluZyBtZW1vcnkuIEl0IG11c3QgYmUgdGhlIHNhbWUgb25lIGFzIHVzZWQgYmVm
b3JlLiBDb21tb25seSB1c2UgR2VuZXJpY0RvY3VtZW50OjpHZXRBbGxvY2F0b3IoKS4KLSAgICAg
ICAgXHJldHVybiBUaGUgdmFsdWUgaXRzZWxmIGZvciBmbHVlbnQgQVBJLgotICAgICAgICBcbm90
ZSBUaGUgb3duZXJzaGlwIG9mIFxjIG5hbWUgYW5kIFxjIHZhbHVlIHdpbGwgYmUgdHJhbnNmZXJy
ZWQgdG8gdGhpcyBvYmplY3Qgb24gc3VjY2Vzcy4KLSAgICAgICAgXHByZSAgSXNPYmplY3QoKSAm
JiBuYW1lLklzU3RyaW5nKCkKLSAgICAgICAgXHBvc3QgbmFtZS5Jc051bGwoKSAmJiB2YWx1ZS5J
c051bGwoKQotICAgICAgICBcbm90ZSBBbW9ydGl6ZWQgQ29uc3RhbnQgdGltZSBjb21wbGV4aXR5
LgotICAgICovCi0gICAgR2VuZXJpY1ZhbHVlJiBBZGRNZW1iZXIoR2VuZXJpY1ZhbHVlJiBuYW1l
LCBHZW5lcmljVmFsdWUmIHZhbHVlLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgewotICAgICAgICBS
QVBJREpTT05fQVNTRVJUKElzT2JqZWN0KCkpOwotICAgICAgICBSQVBJREpTT05fQVNTRVJUKG5h
bWUuSXNTdHJpbmcoKSk7Ci0KLSAgICAgICAgT2JqZWN0JiBvID0gZGF0YV8ubzsKLSAgICAgICAg
aWYgKG8uc2l6ZSA+PSBvLmNhcGFjaXR5KSB7Ci0gICAgICAgICAgICBpZiAoby5jYXBhY2l0eSA9
PSAwKSB7Ci0gICAgICAgICAgICAgICAgby5jYXBhY2l0eSA9IGtEZWZhdWx0T2JqZWN0Q2FwYWNp
dHk7Ci0gICAgICAgICAgICAgICAgby5tZW1iZXJzID0gcmVpbnRlcnByZXRfY2FzdDxNZW1iZXIq
PihhbGxvY2F0b3IuTWFsbG9jKG8uY2FwYWNpdHkgKiBzaXplb2YoTWVtYmVyKSkpOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgU2l6ZVR5cGUgb2xk
Q2FwYWNpdHkgPSBvLmNhcGFjaXR5OwotICAgICAgICAgICAgICAgIG8uY2FwYWNpdHkgKz0gKG9s
ZENhcGFjaXR5ICsgMSkgLyAyOyAvLyBncm93IGJ5IGZhY3RvciAxLjUKLSAgICAgICAgICAgICAg
ICBvLm1lbWJlcnMgPSByZWludGVycHJldF9jYXN0PE1lbWJlcio+KGFsbG9jYXRvci5SZWFsbG9j
KG8ubWVtYmVycywgb2xkQ2FwYWNpdHkgKiBzaXplb2YoTWVtYmVyKSwgby5jYXBhY2l0eSAqIHNp
emVvZihNZW1iZXIpKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgby5tZW1i
ZXJzW28uc2l6ZV0ubmFtZS5SYXdBc3NpZ24obmFtZSk7Ci0gICAgICAgIG8ubWVtYmVyc1tvLnNp
emVdLnZhbHVlLlJhd0Fzc2lnbih2YWx1ZSk7Ci0gICAgICAgIG8uc2l6ZSsrOwotICAgICAgICBy
ZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jaWYgUkFQSURKU09OX0hBU19DWFgxMV9SVkFMVUVfUkVG
UwotICAgIEdlbmVyaWNWYWx1ZSYgQWRkTWVtYmVyKEdlbmVyaWNWYWx1ZSYmIG5hbWUsIEdlbmVy
aWNWYWx1ZSYmIHZhbHVlLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgewotICAgICAgICByZXR1cm4g
QWRkTWVtYmVyKG5hbWUsIHZhbHVlLCBhbGxvY2F0b3IpOwotICAgIH0KLSAgICBHZW5lcmljVmFs
dWUmIEFkZE1lbWJlcihHZW5lcmljVmFsdWUmJiBuYW1lLCBHZW5lcmljVmFsdWUmIHZhbHVlLCBB
bGxvY2F0b3ImIGFsbG9jYXRvcikgewotICAgICAgICByZXR1cm4gQWRkTWVtYmVyKG5hbWUsIHZh
bHVlLCBhbGxvY2F0b3IpOwotICAgIH0KLSAgICBHZW5lcmljVmFsdWUmIEFkZE1lbWJlcihHZW5l
cmljVmFsdWUmIG5hbWUsIEdlbmVyaWNWYWx1ZSYmIHZhbHVlLCBBbGxvY2F0b3ImIGFsbG9jYXRv
cikgewotICAgICAgICByZXR1cm4gQWRkTWVtYmVyKG5hbWUsIHZhbHVlLCBhbGxvY2F0b3IpOwot
ICAgIH0KLSAgICBHZW5lcmljVmFsdWUmIEFkZE1lbWJlcihTdHJpbmdSZWZUeXBlIG5hbWUsIEdl
bmVyaWNWYWx1ZSYmIHZhbHVlLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgewotICAgICAgICBHZW5l
cmljVmFsdWUgbihuYW1lKTsKLSAgICAgICAgcmV0dXJuIEFkZE1lbWJlcihuLCB2YWx1ZSwgYWxs
b2NhdG9yKTsKLSAgICB9Ci0jZW5kaWYgLy8gUkFQSURKU09OX0hBU19DWFgxMV9SVkFMVUVfUkVG
UwotCi0KLSAgICAvLyEgQWRkIGEgbWVtYmVyIChuYW1lLXZhbHVlIHBhaXIpIHRvIHRoZSBvYmpl
Y3QuCi0gICAgLyohIFxwYXJhbSBuYW1lIEEgY29uc3RhbnQgc3RyaW5nIHJlZmVyZW5jZSBhcyBu
YW1lIG9mIG1lbWJlci4KLSAgICAgICAgXHBhcmFtIHZhbHVlIFZhbHVlIG9mIGFueSB0eXBlLgot
ICAgICAgICBccGFyYW0gYWxsb2NhdG9yICAgIEFsbG9jYXRvciBmb3IgcmVhbGxvY2F0aW5nIG1l
bW9yeS4gSXQgbXVzdCBiZSB0aGUgc2FtZSBvbmUgYXMgdXNlZCBiZWZvcmUuIENvbW1vbmx5IHVz
ZSBHZW5lcmljRG9jdW1lbnQ6OkdldEFsbG9jYXRvcigpLgotICAgICAgICBccmV0dXJuIFRoZSB2
YWx1ZSBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCi0gICAgICAgIFxub3RlIFRoZSBvd25lcnNoaXAg
b2YgXGMgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJlZCB0byB0aGlzIG9iamVjdCBvbiBzdWNjZXNz
LgotICAgICAgICBccHJlICBJc09iamVjdCgpCi0gICAgICAgIFxwb3N0IHZhbHVlLklzTnVsbCgp
Ci0gICAgICAgIFxub3RlIEFtb3J0aXplZCBDb25zdGFudCB0aW1lIGNvbXBsZXhpdHkuCi0gICAg
Ki8KLSAgICBHZW5lcmljVmFsdWUmIEFkZE1lbWJlcihTdHJpbmdSZWZUeXBlIG5hbWUsIEdlbmVy
aWNWYWx1ZSYgdmFsdWUsIEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7Ci0gICAgICAgIEdlbmVyaWNW
YWx1ZSBuKG5hbWUpOwotICAgICAgICByZXR1cm4gQWRkTWVtYmVyKG4sIHZhbHVlLCBhbGxvY2F0
b3IpOwotICAgIH0KLQotICAgIC8vISBBZGQgYSBjb25zdGFudCBzdHJpbmcgdmFsdWUgYXMgbWVt
YmVyIChuYW1lLXZhbHVlIHBhaXIpIHRvIHRoZSBvYmplY3QuCi0gICAgLyohIFxwYXJhbSBuYW1l
IEEgY29uc3RhbnQgc3RyaW5nIHJlZmVyZW5jZSBhcyBuYW1lIG9mIG1lbWJlci4KLSAgICAgICAg
XHBhcmFtIHZhbHVlIGNvbnN0YW50IHN0cmluZyByZWZlcmVuY2UgYXMgdmFsdWUgb2YgbWVtYmVy
LgotICAgICAgICBccGFyYW0gYWxsb2NhdG9yICAgIEFsbG9jYXRvciBmb3IgcmVhbGxvY2F0aW5n
IG1lbW9yeS4gSXQgbXVzdCBiZSB0aGUgc2FtZSBvbmUgYXMgdXNlZCBiZWZvcmUuIENvbW1vbmx5
IHVzZSBHZW5lcmljRG9jdW1lbnQ6OkdldEFsbG9jYXRvcigpLgotICAgICAgICBccmV0dXJuIFRo
ZSB2YWx1ZSBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCi0gICAgICAgIFxwcmUgIElzT2JqZWN0KCkK
LSAgICAgICAgXG5vdGUgVGhpcyBvdmVybG9hZCBpcyBuZWVkZWQgdG8gYXZvaWQgY2xhc2hlcyB3
aXRoIHRoZSBnZW5lcmljIHByaW1pdGl2ZSB0eXBlIEFkZE1lbWJlcihTdHJpbmdSZWZUeXBlLFQs
QWxsb2NhdG9yJikgb3ZlcmxvYWQgYmVsb3cuCi0gICAgICAgIFxub3RlIEFtb3J0aXplZCBDb25z
dGFudCB0aW1lIGNvbXBsZXhpdHkuCi0gICAgKi8KLSAgICBHZW5lcmljVmFsdWUmIEFkZE1lbWJl
cihTdHJpbmdSZWZUeXBlIG5hbWUsIFN0cmluZ1JlZlR5cGUgdmFsdWUsIEFsbG9jYXRvciYgYWxs
b2NhdG9yKSB7Ci0gICAgICAgIEdlbmVyaWNWYWx1ZSB2KHZhbHVlKTsKLSAgICAgICAgcmV0dXJu
IEFkZE1lbWJlcihuYW1lLCB2LCBhbGxvY2F0b3IpOwotICAgIH0KLQotICAgIC8vISBBZGQgYW55
IHByaW1pdGl2ZSB2YWx1ZSBhcyBtZW1iZXIgKG5hbWUtdmFsdWUgcGFpcikgdG8gdGhlIG9iamVj
dC4KLSAgICAvKiEgXHRwYXJhbSBUIEVpdGhlciBccmVmIFR5cGUsIFxjIGludCwgXGMgdW5zaWdu
ZWQsIFxjIGludDY0X3QsIFxjIHVpbnQ2NF90Ci0gICAgICAgIFxwYXJhbSBuYW1lIEEgY29uc3Rh
bnQgc3RyaW5nIHJlZmVyZW5jZSBhcyBuYW1lIG9mIG1lbWJlci4KLSAgICAgICAgXHBhcmFtIHZh
bHVlIFZhbHVlIG9mIHByaW1pdGl2ZSB0eXBlIFxjIFQgYXMgdmFsdWUgb2YgbWVtYmVyCi0gICAg
ICAgIFxwYXJhbSBhbGxvY2F0b3IgQWxsb2NhdG9yIGZvciByZWFsbG9jYXRpbmcgbWVtb3J5LiBD
b21tb25seSB1c2UgR2VuZXJpY0RvY3VtZW50OjpHZXRBbGxvY2F0b3IoKS4KLSAgICAgICAgXHJl
dHVybiBUaGUgdmFsdWUgaXRzZWxmIGZvciBmbHVlbnQgQVBJLgotICAgICAgICBccHJlICBJc09i
amVjdCgpCi0KLSAgICAgICAgXG5vdGUgVGhlIHNvdXJjZSB0eXBlIFxjIFQgZXhwbGljaXRseSBk
aXNhbGxvd3MgYWxsIHBvaW50ZXIgdHlwZXMsCi0gICAgICAgICAgICBlc3BlY2lhbGx5IChcYyBj
b25zdCkgXHJlZiBDaCouICBUaGlzIGhlbHBzIGF2b2lkaW5nIGltcGxpY2l0bHkKLSAgICAgICAg
ICAgIHJlZmVyZW5jaW5nIGNoYXJhY3RlciBzdHJpbmdzIHdpdGggaW5zdWZmaWNpZW50IGxpZmV0
aW1lLCB1c2UKLSAgICAgICAgICAgIFxyZWYgQWRkTWVtYmVyKFN0cmluZ1JlZlR5cGUsIEdlbmVy
aWNWYWx1ZSYsIEFsbG9jYXRvciYpIG9yIFxyZWYKLSAgICAgICAgICAgIEFkZE1lbWJlcihTdHJp
bmdSZWZUeXBlLCBTdHJpbmdSZWZUeXBlLCBBbGxvY2F0b3ImKS4KLSAgICAgICAgICAgIEFsbCBv
dGhlciBwb2ludGVyIHR5cGVzIHdvdWxkIGltcGxpY2l0bHkgY29udmVydCB0byBcYyBib29sLAot
ICAgICAgICAgICAgdXNlIGFuIGV4cGxpY2l0IGNhc3QgaW5zdGVhZCwgaWYgbmVlZGVkLgotICAg
ICAgICBcbm90ZSBBbW9ydGl6ZWQgQ29uc3RhbnQgdGltZSBjb21wbGV4aXR5LgotICAgICovCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgUkFQSURKU09OX0RJU0FCTEVJRl9SRVRVUk4o
KGludGVybmFsOjpPckV4cHI8aW50ZXJuYWw6OklzUG9pbnRlcjxUPiwgaW50ZXJuYWw6OklzR2Vu
ZXJpY1ZhbHVlPFQ+ID4pLCAoR2VuZXJpY1ZhbHVlJikpCi0gICAgQWRkTWVtYmVyKFN0cmluZ1Jl
ZlR5cGUgbmFtZSwgVCB2YWx1ZSwgQWxsb2NhdG9yJiBhbGxvY2F0b3IpIHsKLSAgICAgICAgR2Vu
ZXJpY1ZhbHVlIG4obmFtZSk7Ci0gICAgICAgIEdlbmVyaWNWYWx1ZSB2KHZhbHVlKTsKLSAgICAg
ICAgcmV0dXJuIEFkZE1lbWJlcihuLCB2LCBhbGxvY2F0b3IpOwotICAgIH0KLQotICAgIC8vISBS
ZW1vdmUgYWxsIG1lbWJlcnMgaW4gdGhlIG9iamVjdC4KLSAgICAvKiEgVGhpcyBmdW5jdGlvbiBk
byBub3QgZGVhbGxvY2F0ZSBtZW1vcnkgaW4gdGhlIG9iamVjdCwgaS5lLiB0aGUgY2FwYWNpdHkg
aXMgdW5jaGFuZ2VkLgotICAgICAgICBcbm90ZSBMaW5lYXIgdGltZSBjb21wbGV4aXR5LgotICAg
ICovCi0gICAgdm9pZCBSZW1vdmVBbGxNZW1iZXJzKCkgewotICAgICAgICBSQVBJREpTT05fQVNT
RVJUKElzT2JqZWN0KCkpOyAKLSAgICAgICAgZm9yIChNZW1iZXJJdGVyYXRvciBtID0gTWVtYmVy
QmVnaW4oKTsgbSAhPSBNZW1iZXJFbmQoKTsgKyttKQotICAgICAgICAgICAgbS0+fk1lbWJlcigp
OwotICAgICAgICBkYXRhXy5vLnNpemUgPSAwOwotICAgIH0KLQotICAgIC8vISBSZW1vdmUgYSBt
ZW1iZXIgaW4gb2JqZWN0IGJ5IGl0cyBuYW1lLgotICAgIC8qISBccGFyYW0gbmFtZSBOYW1lIG9m
IG1lbWJlciB0byBiZSByZW1vdmVkLgotICAgICAgICBccmV0dXJuIFdoZXRoZXIgdGhlIG1lbWJl
ciBleGlzdGVkLgotICAgICAgICBcbm90ZSBUaGlzIGZ1bmN0aW9uIG1heSByZW9yZGVyIHRoZSBv
YmplY3QgbWVtYmVycy4gVXNlIFxyZWYKLSAgICAgICAgICAgIEVyYXNlTWVtYmVyKENvbnN0TWVt
YmVySXRlcmF0b3IpIGlmIHlvdSBuZWVkIHRvIHByZXNlcnZlIHRoZQotICAgICAgICAgICAgcmVs
YXRpdmUgb3JkZXIgb2YgdGhlIHJlbWFpbmluZyBtZW1iZXJzLgotICAgICAgICBcbm90ZSBMaW5l
YXIgdGltZSBjb21wbGV4aXR5LgotICAgICovCi0gICAgYm9vbCBSZW1vdmVNZW1iZXIoY29uc3Qg
Q2gqIG5hbWUpIHsKLSAgICAgICAgR2VuZXJpY1ZhbHVlIG4oU3RyaW5nUmVmKG5hbWUpKTsKLSAg
ICAgICAgcmV0dXJuIFJlbW92ZU1lbWJlcihuKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgU291cmNlQWxsb2NhdG9yPgotICAgIGJvb2wgUmVtb3ZlTWVtYmVyKGNvbnN0IEdlbmVy
aWNWYWx1ZTxFbmNvZGluZywgU291cmNlQWxsb2NhdG9yPiYgbmFtZSkgewotICAgICAgICBNZW1i
ZXJJdGVyYXRvciBtID0gRmluZE1lbWJlcihuYW1lKTsKLSAgICAgICAgaWYgKG0gIT0gTWVtYmVy
RW5kKCkpIHsKLSAgICAgICAgICAgIFJlbW92ZU1lbWJlcihtKTsKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9Ci0KLSAgICAvLyEgUmVtb3ZlIGEgbWVtYmVyIGluIG9iamVjdCBieSBpdGVyYXRv
ci4KLSAgICAvKiEgXHBhcmFtIG0gbWVtYmVyIGl0ZXJhdG9yIChvYnRhaW5lZCBieSBGaW5kTWVt
YmVyKCkgb3IgTWVtYmVyQmVnaW4oKSkuCi0gICAgICAgIFxyZXR1cm4gdGhlIG5ldyBpdGVyYXRv
ciBhZnRlciByZW1vdmFsLgotICAgICAgICBcbm90ZSBUaGlzIGZ1bmN0aW9uIG1heSByZW9yZGVy
IHRoZSBvYmplY3QgbWVtYmVycy4gVXNlIFxyZWYKLSAgICAgICAgICAgIEVyYXNlTWVtYmVyKENv
bnN0TWVtYmVySXRlcmF0b3IpIGlmIHlvdSBuZWVkIHRvIHByZXNlcnZlIHRoZQotICAgICAgICAg
ICAgcmVsYXRpdmUgb3JkZXIgb2YgdGhlIHJlbWFpbmluZyBtZW1iZXJzLgotICAgICAgICBcbm90
ZSBDb25zdGFudCB0aW1lIGNvbXBsZXhpdHkuCi0gICAgKi8KLSAgICBNZW1iZXJJdGVyYXRvciBS
ZW1vdmVNZW1iZXIoTWVtYmVySXRlcmF0b3IgbSkgewotICAgICAgICBSQVBJREpTT05fQVNTRVJU
KElzT2JqZWN0KCkpOwotICAgICAgICBSQVBJREpTT05fQVNTRVJUKGRhdGFfLm8uc2l6ZSA+IDAp
OwotICAgICAgICBSQVBJREpTT05fQVNTRVJUKGRhdGFfLm8ubWVtYmVycyAhPSAwKTsKLSAgICAg
ICAgUkFQSURKU09OX0FTU0VSVChtID49IE1lbWJlckJlZ2luKCkgJiYgbSA8IE1lbWJlckVuZCgp
KTsKLQotICAgICAgICBNZW1iZXJJdGVyYXRvciBsYXN0KGRhdGFfLm8ubWVtYmVycyArIChkYXRh
Xy5vLnNpemUgLSAxKSk7Ci0gICAgICAgIGlmIChkYXRhXy5vLnNpemUgPiAxICYmIG0gIT0gbGFz
dCkgewotICAgICAgICAgICAgLy8gTW92ZSB0aGUgbGFzdCBvbmUgdG8gdGhpcyBwbGFjZQotICAg
ICAgICAgICAgKm0gPSAqbGFzdDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIC8vIE9ubHkgb25lIGxlZnQsIGp1c3QgZGVzdHJveQotICAgICAgICAgICAgbS0+fk1lbWJl
cigpOwotICAgICAgICB9Ci0gICAgICAgIC0tZGF0YV8uby5zaXplOwotICAgICAgICByZXR1cm4g
bTsKLSAgICB9Ci0KLSAgICAvLyEgUmVtb3ZlIGEgbWVtYmVyIGZyb20gYW4gb2JqZWN0IGJ5IGl0
ZXJhdG9yLgotICAgIC8qISBccGFyYW0gcG9zIGl0ZXJhdG9yIHRvIHRoZSBtZW1iZXIgdG8gcmVt
b3ZlCi0gICAgICAgIFxwcmUgSXNPYmplY3QoKSA9PSB0cnVlICYmIFxyZWYgTWVtYmVyQmVnaW4o
KSA8PSBcYyBwb3MgPCBccmVmIE1lbWJlckVuZCgpCi0gICAgICAgIFxyZXR1cm4gSXRlcmF0b3Ig
Zm9sbG93aW5nIHRoZSByZW1vdmVkIGVsZW1lbnQuCi0gICAgICAgICAgICBJZiB0aGUgaXRlcmF0
b3IgXGMgcG9zIHJlZmVycyB0byB0aGUgbGFzdCBlbGVtZW50LCB0aGUgXHJlZiBNZW1iZXJFbmQo
KSBpdGVyYXRvciBpcyByZXR1cm5lZC4KLSAgICAgICAgXG5vdGUgVGhpcyBmdW5jdGlvbiBwcmVz
ZXJ2ZXMgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIHRoZSByZW1haW5pbmcgb2JqZWN0Ci0gICAgICAg
ICAgICBtZW1iZXJzLiBJZiB5b3UgZG8gbm90IG5lZWQgdGhpcywgdXNlIHRoZSBtb3JlIGVmZmlj
aWVudCBccmVmIFJlbW92ZU1lbWJlcihNZW1iZXJJdGVyYXRvcikuCi0gICAgICAgIFxub3RlIExp
bmVhciB0aW1lIGNvbXBsZXhpdHkuCi0gICAgKi8KLSAgICBNZW1iZXJJdGVyYXRvciBFcmFzZU1l
bWJlcihDb25zdE1lbWJlckl0ZXJhdG9yIHBvcykgewotICAgICAgICByZXR1cm4gRXJhc2VNZW1i
ZXIocG9zLCBwb3MgKzEpOwotICAgIH0KLQotICAgIC8vISBSZW1vdmUgbWVtYmVycyBpbiB0aGUg
cmFuZ2UgW2ZpcnN0LCBsYXN0KSBmcm9tIGFuIG9iamVjdC4KLSAgICAvKiEgXHBhcmFtIGZpcnN0
IGl0ZXJhdG9yIHRvIHRoZSBmaXJzdCBtZW1iZXIgdG8gcmVtb3ZlCi0gICAgICAgIFxwYXJhbSBs
YXN0ICBpdGVyYXRvciBmb2xsb3dpbmcgdGhlIGxhc3QgbWVtYmVyIHRvIHJlbW92ZQotICAgICAg
ICBccHJlIElzT2JqZWN0KCkgPT0gdHJ1ZSAmJiBccmVmIE1lbWJlckJlZ2luKCkgPD0gXGMgZmly
c3QgPD0gXGMgbGFzdCA8PSBccmVmIE1lbWJlckVuZCgpCi0gICAgICAgIFxyZXR1cm4gSXRlcmF0
b3IgZm9sbG93aW5nIHRoZSBsYXN0IHJlbW92ZWQgZWxlbWVudC4KLSAgICAgICAgXG5vdGUgVGhp
cyBmdW5jdGlvbiBwcmVzZXJ2ZXMgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIHRoZSByZW1haW5pbmcg
b2JqZWN0Ci0gICAgICAgICAgICBtZW1iZXJzLgotICAgICAgICBcbm90ZSBMaW5lYXIgdGltZSBj
b21wbGV4aXR5LgotICAgICovCi0gICAgTWVtYmVySXRlcmF0b3IgRXJhc2VNZW1iZXIoQ29uc3RN
ZW1iZXJJdGVyYXRvciBmaXJzdCwgQ29uc3RNZW1iZXJJdGVyYXRvciBsYXN0KSB7Ci0gICAgICAg
IFJBUElESlNPTl9BU1NFUlQoSXNPYmplY3QoKSk7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQo
ZGF0YV8uby5zaXplID4gMCk7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoZGF0YV8uby5tZW1i
ZXJzICE9IDApOwotICAgICAgICBSQVBJREpTT05fQVNTRVJUKGZpcnN0ID49IE1lbWJlckJlZ2lu
KCkpOwotICAgICAgICBSQVBJREpTT05fQVNTRVJUKGZpcnN0IDw9IGxhc3QpOwotICAgICAgICBS
QVBJREpTT05fQVNTRVJUKGxhc3QgPD0gTWVtYmVyRW5kKCkpOwotCi0gICAgICAgIE1lbWJlckl0
ZXJhdG9yIHBvcyA9IE1lbWJlckJlZ2luKCkgKyAoZmlyc3QgLSBNZW1iZXJCZWdpbigpKTsKLSAg
ICAgICAgZm9yIChNZW1iZXJJdGVyYXRvciBpdHIgPSBwb3M7IGl0ciAhPSBsYXN0OyArK2l0cikK
LSAgICAgICAgICAgIGl0ci0+fk1lbWJlcigpOwotICAgICAgICBzdGQ6Om1lbW1vdmUoJipwb3Ms
ICYqbGFzdCwgKE1lbWJlckVuZCgpIC0gbGFzdCkgKiBzaXplb2YoTWVtYmVyKSk7Ci0gICAgICAg
IGRhdGFfLm8uc2l6ZSAtPSAobGFzdCAtIGZpcnN0KTsKLSAgICAgICAgcmV0dXJuIHBvczsKLSAg
ICB9Ci0KLSAgICAvL0B9Ci0KLSAgICAvLyFAbmFtZSBBcnJheQotICAgIC8vQHsKLQotICAgIC8v
ISBTZXQgdGhpcyB2YWx1ZSBhcyBhbiBlbXB0eSBhcnJheS4KLSAgICAvKiEgXHBvc3QgSXNBcnJh
eSA9PSB0cnVlICovCi0gICAgR2VuZXJpY1ZhbHVlJiBTZXRBcnJheSgpIHsgIHRoaXMtPn5HZW5l
cmljVmFsdWUoKTsgbmV3ICh0aGlzKSBHZW5lcmljVmFsdWUoa0FycmF5VHlwZSk7IHJldHVybiAq
dGhpczsgfQotCi0gICAgLy8hIEdldCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIGFycmF5Lgot
ICAgIFNpemVUeXBlIFNpemUoKSBjb25zdCB7IFJBUElESlNPTl9BU1NFUlQoSXNBcnJheSgpKTsg
cmV0dXJuIGRhdGFfLmEuc2l6ZTsgfQotCi0gICAgLy8hIEdldCB0aGUgY2FwYWNpdHkgb2YgYXJy
YXkuCi0gICAgU2l6ZVR5cGUgQ2FwYWNpdHkoKSBjb25zdCB7IFJBUElESlNPTl9BU1NFUlQoSXNB
cnJheSgpKTsgcmV0dXJuIGRhdGFfLmEuY2FwYWNpdHk7IH0KLQotICAgIC8vISBDaGVjayB3aGV0
aGVyIHRoZSBhcnJheSBpcyBlbXB0eS4KLSAgICBib29sIEVtcHR5KCkgY29uc3QgeyBSQVBJREpT
T05fQVNTRVJUKElzQXJyYXkoKSk7IHJldHVybiBkYXRhXy5hLnNpemUgPT0gMDsgfQotCi0gICAg
Ly8hIFJlbW92ZSBhbGwgZWxlbWVudHMgaW4gdGhlIGFycmF5LgotICAgIC8qISBUaGlzIGZ1bmN0
aW9uIGRvIG5vdCBkZWFsbG9jYXRlIG1lbW9yeSBpbiB0aGUgYXJyYXksIGkuZS4gdGhlIGNhcGFj
aXR5IGlzIHVuY2hhbmdlZC4KLSAgICAgICAgXG5vdGUgTGluZWFyIHRpbWUgY29tcGxleGl0eS4K
LSAgICAqLwotICAgIHZvaWQgQ2xlYXIoKSB7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoSXNB
cnJheSgpKTsgCi0gICAgICAgIGZvciAoU2l6ZVR5cGUgaSA9IDA7IGkgPCBkYXRhXy5hLnNpemU7
ICsraSkKLSAgICAgICAgICAgIGRhdGFfLmEuZWxlbWVudHNbaV0ufkdlbmVyaWNWYWx1ZSgpOwot
ICAgICAgICBkYXRhXy5hLnNpemUgPSAwOwotICAgIH0KLQotICAgIC8vISBHZXQgYW4gZWxlbWVu
dCBmcm9tIGFycmF5IGJ5IGluZGV4LgotICAgIC8qISBccHJlIElzQXJyYXkoKSA9PSB0cnVlCi0g
ICAgICAgIFxwYXJhbSBpbmRleCBaZXJvLWJhc2VkIGluZGV4IG9mIGVsZW1lbnQuCi0gICAgICAg
IFxzZWUgb3BlcmF0b3JbXShUKikKLSAgICAqLwotICAgIEdlbmVyaWNWYWx1ZSYgb3BlcmF0b3Jb
XShTaXplVHlwZSBpbmRleCkgewotICAgICAgICBSQVBJREpTT05fQVNTRVJUKElzQXJyYXkoKSk7
Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoaW5kZXggPCBkYXRhXy5hLnNpemUpOwotICAgICAg
ICByZXR1cm4gZGF0YV8uYS5lbGVtZW50c1tpbmRleF07Ci0gICAgfQotICAgIGNvbnN0IEdlbmVy
aWNWYWx1ZSYgb3BlcmF0b3JbXShTaXplVHlwZSBpbmRleCkgY29uc3QgeyByZXR1cm4gY29uc3Rf
Y2FzdDxHZW5lcmljVmFsdWUmPigqdGhpcylbaW5kZXhdOyB9Ci0KLSAgICAvLyEgRWxlbWVudCBp
dGVyYXRvcgotICAgIC8qISBccHJlIElzQXJyYXkoKSA9PSB0cnVlICovCi0gICAgVmFsdWVJdGVy
YXRvciBCZWdpbigpIHsgUkFQSURKU09OX0FTU0VSVChJc0FycmF5KCkpOyByZXR1cm4gZGF0YV8u
YS5lbGVtZW50czsgfQotICAgIC8vISBcZW0gUGFzdC10aGUtZW5kIGVsZW1lbnQgaXRlcmF0b3IK
LSAgICAvKiEgXHByZSBJc0FycmF5KCkgPT0gdHJ1ZSAqLwotICAgIFZhbHVlSXRlcmF0b3IgRW5k
KCkgeyBSQVBJREpTT05fQVNTRVJUKElzQXJyYXkoKSk7IHJldHVybiBkYXRhXy5hLmVsZW1lbnRz
ICsgZGF0YV8uYS5zaXplOyB9Ci0gICAgLy8hIENvbnN0YW50IGVsZW1lbnQgaXRlcmF0b3IKLSAg
ICAvKiEgXHByZSBJc0FycmF5KCkgPT0gdHJ1ZSAqLwotICAgIENvbnN0VmFsdWVJdGVyYXRvciBC
ZWdpbigpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8R2VuZXJpY1ZhbHVlJj4oKnRoaXMpLkJl
Z2luKCk7IH0KLSAgICAvLyEgQ29uc3RhbnQgXGVtIHBhc3QtdGhlLWVuZCBlbGVtZW50IGl0ZXJh
dG9yCi0gICAgLyohIFxwcmUgSXNBcnJheSgpID09IHRydWUgKi8KLSAgICBDb25zdFZhbHVlSXRl
cmF0b3IgRW5kKCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2FzdDxHZW5lcmljVmFsdWUmPigqdGhp
cykuRW5kKCk7IH0KLQotICAgIC8vISBSZXF1ZXN0IHRoZSBhcnJheSB0byBoYXZlIGVub3VnaCBj
YXBhY2l0eSB0byBzdG9yZSBlbGVtZW50cy4KLSAgICAvKiEgXHBhcmFtIG5ld0NhcGFjaXR5ICBU
aGUgY2FwYWNpdHkgdGhhdCB0aGUgYXJyYXkgYXQgbGVhc3QgbmVlZCB0byBoYXZlLgotICAgICAg
ICBccGFyYW0gYWxsb2NhdG9yICAgIEFsbG9jYXRvciBmb3IgcmVhbGxvY2F0aW5nIG1lbW9yeS4g
SXQgbXVzdCBiZSB0aGUgc2FtZSBvbmUgYXMgdXNlZCBiZWZvcmUuIENvbW1vbmx5IHVzZSBHZW5l
cmljRG9jdW1lbnQ6OkdldEFsbG9jYXRvcigpLgotICAgICAgICBccmV0dXJuIFRoZSB2YWx1ZSBp
dHNlbGYgZm9yIGZsdWVudCBBUEkuCi0gICAgICAgIFxub3RlIExpbmVhciB0aW1lIGNvbXBsZXhp
dHkuCi0gICAgKi8KLSAgICBHZW5lcmljVmFsdWUmIFJlc2VydmUoU2l6ZVR5cGUgbmV3Q2FwYWNp
dHksIEFsbG9jYXRvciAmYWxsb2NhdG9yKSB7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoSXNB
cnJheSgpKTsKLSAgICAgICAgaWYgKG5ld0NhcGFjaXR5ID4gZGF0YV8uYS5jYXBhY2l0eSkgewot
ICAgICAgICAgICAgZGF0YV8uYS5lbGVtZW50cyA9IChHZW5lcmljVmFsdWUqKWFsbG9jYXRvci5S
ZWFsbG9jKGRhdGFfLmEuZWxlbWVudHMsIGRhdGFfLmEuY2FwYWNpdHkgKiBzaXplb2YoR2VuZXJp
Y1ZhbHVlKSwgbmV3Q2FwYWNpdHkgKiBzaXplb2YoR2VuZXJpY1ZhbHVlKSk7Ci0gICAgICAgICAg
ICBkYXRhXy5hLmNhcGFjaXR5ID0gbmV3Q2FwYWNpdHk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0
dXJuICp0aGlzOwotICAgIH0KLQotICAgIC8vISBBcHBlbmQgYSBHZW5lcmljVmFsdWUgYXQgdGhl
IGVuZCBvZiB0aGUgYXJyYXkuCi0gICAgLyohIFxwYXJhbSB2YWx1ZSAgICAgICAgVmFsdWUgdG8g
YmUgYXBwZW5kZWQuCi0gICAgICAgIFxwYXJhbSBhbGxvY2F0b3IgICAgQWxsb2NhdG9yIGZvciBy
ZWFsbG9jYXRpbmcgbWVtb3J5LiBJdCBtdXN0IGJlIHRoZSBzYW1lIG9uZSBhcyB1c2VkIGJlZm9y
ZS4gQ29tbW9ubHkgdXNlIEdlbmVyaWNEb2N1bWVudDo6R2V0QWxsb2NhdG9yKCkuCi0gICAgICAg
IFxwcmUgSXNBcnJheSgpID09IHRydWUKLSAgICAgICAgXHBvc3QgdmFsdWUuSXNOdWxsKCkgPT0g
dHJ1ZQotICAgICAgICBccmV0dXJuIFRoZSB2YWx1ZSBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCi0g
ICAgICAgIFxub3RlIFRoZSBvd25lcnNoaXAgb2YgXGMgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJl
ZCB0byB0aGlzIGFycmF5IG9uIHN1Y2Nlc3MuCi0gICAgICAgIFxub3RlIElmIHRoZSBudW1iZXIg
b2YgZWxlbWVudHMgdG8gYmUgYXBwZW5kZWQgaXMga25vd24sIGNhbGxzIFJlc2VydmUoKSBvbmNl
IGZpcnN0IG1heSBiZSBtb3JlIGVmZmljaWVudC4KLSAgICAgICAgXG5vdGUgQW1vcnRpemVkIGNv
bnN0YW50IHRpbWUgY29tcGxleGl0eS4KLSAgICAqLwotICAgIEdlbmVyaWNWYWx1ZSYgUHVzaEJh
Y2soR2VuZXJpY1ZhbHVlJiB2YWx1ZSwgQWxsb2NhdG9yJiBhbGxvY2F0b3IpIHsKLSAgICAgICAg
UkFQSURKU09OX0FTU0VSVChJc0FycmF5KCkpOwotICAgICAgICBpZiAoZGF0YV8uYS5zaXplID49
IGRhdGFfLmEuY2FwYWNpdHkpCi0gICAgICAgICAgICBSZXNlcnZlKGRhdGFfLmEuY2FwYWNpdHkg
PT0gMCA/IGtEZWZhdWx0QXJyYXlDYXBhY2l0eSA6IChkYXRhXy5hLmNhcGFjaXR5ICsgKGRhdGFf
LmEuY2FwYWNpdHkgKyAxKSAvIDIpLCBhbGxvY2F0b3IpOwotICAgICAgICBkYXRhXy5hLmVsZW1l
bnRzW2RhdGFfLmEuc2l6ZSsrXS5SYXdBc3NpZ24odmFsdWUpOwotICAgICAgICByZXR1cm4gKnRo
aXM7Ci0gICAgfQotCi0jaWYgUkFQSURKU09OX0hBU19DWFgxMV9SVkFMVUVfUkVGUwotICAgIEdl
bmVyaWNWYWx1ZSYgUHVzaEJhY2soR2VuZXJpY1ZhbHVlJiYgdmFsdWUsIEFsbG9jYXRvciYgYWxs
b2NhdG9yKSB7Ci0gICAgICAgIHJldHVybiBQdXNoQmFjayh2YWx1ZSwgYWxsb2NhdG9yKTsKLSAg
ICB9Ci0jZW5kaWYgLy8gUkFQSURKU09OX0hBU19DWFgxMV9SVkFMVUVfUkVGUwotCi0gICAgLy8h
IEFwcGVuZCBhIGNvbnN0YW50IHN0cmluZyByZWZlcmVuY2UgYXQgdGhlIGVuZCBvZiB0aGUgYXJy
YXkuCi0gICAgLyohIFxwYXJhbSB2YWx1ZSAgICAgICAgQ29uc3RhbnQgc3RyaW5nIHJlZmVyZW5j
ZSB0byBiZSBhcHBlbmRlZC4KLSAgICAgICAgXHBhcmFtIGFsbG9jYXRvciAgICBBbGxvY2F0b3Ig
Zm9yIHJlYWxsb2NhdGluZyBtZW1vcnkuIEl0IG11c3QgYmUgdGhlIHNhbWUgb25lIHVzZWQgcHJl
dmlvdXNseS4gQ29tbW9ubHkgdXNlIEdlbmVyaWNEb2N1bWVudDo6R2V0QWxsb2NhdG9yKCkuCi0g
ICAgICAgIFxwcmUgSXNBcnJheSgpID09IHRydWUKLSAgICAgICAgXHJldHVybiBUaGUgdmFsdWUg
aXRzZWxmIGZvciBmbHVlbnQgQVBJLgotICAgICAgICBcbm90ZSBJZiB0aGUgbnVtYmVyIG9mIGVs
ZW1lbnRzIHRvIGJlIGFwcGVuZGVkIGlzIGtub3duLCBjYWxscyBSZXNlcnZlKCkgb25jZSBmaXJz
dCBtYXkgYmUgbW9yZSBlZmZpY2llbnQuCi0gICAgICAgIFxub3RlIEFtb3J0aXplZCBjb25zdGFu
dCB0aW1lIGNvbXBsZXhpdHkuCi0gICAgICAgIFxzZWUgR2VuZXJpY1N0cmluZ1JlZgotICAgICov
Ci0gICAgR2VuZXJpY1ZhbHVlJiBQdXNoQmFjayhTdHJpbmdSZWZUeXBlIHZhbHVlLCBBbGxvY2F0
b3ImIGFsbG9jYXRvcikgewotICAgICAgICByZXR1cm4gKCp0aGlzKS50ZW1wbGF0ZSBQdXNoQmFj
azxTdHJpbmdSZWZUeXBlPih2YWx1ZSwgYWxsb2NhdG9yKTsKLSAgICB9Ci0KLSAgICAvLyEgQXBw
ZW5kIGEgcHJpbWl0aXZlIHZhbHVlIGF0IHRoZSBlbmQgb2YgdGhlIGFycmF5LgotICAgIC8qISBc
dHBhcmFtIFQgRWl0aGVyIFxyZWYgVHlwZSwgXGMgaW50LCBcYyB1bnNpZ25lZCwgXGMgaW50NjRf
dCwgXGMgdWludDY0X3QKLSAgICAgICAgXHBhcmFtIHZhbHVlIFZhbHVlIG9mIHByaW1pdGl2ZSB0
eXBlIFQgdG8gYmUgYXBwZW5kZWQuCi0gICAgICAgIFxwYXJhbSBhbGxvY2F0b3IgICAgQWxsb2Nh
dG9yIGZvciByZWFsbG9jYXRpbmcgbWVtb3J5LiBJdCBtdXN0IGJlIHRoZSBzYW1lIG9uZSBhcyB1
c2VkIGJlZm9yZS4gQ29tbW9ubHkgdXNlIEdlbmVyaWNEb2N1bWVudDo6R2V0QWxsb2NhdG9yKCku
Ci0gICAgICAgIFxwcmUgSXNBcnJheSgpID09IHRydWUKLSAgICAgICAgXHJldHVybiBUaGUgdmFs
dWUgaXRzZWxmIGZvciBmbHVlbnQgQVBJLgotICAgICAgICBcbm90ZSBJZiB0aGUgbnVtYmVyIG9m
IGVsZW1lbnRzIHRvIGJlIGFwcGVuZGVkIGlzIGtub3duLCBjYWxscyBSZXNlcnZlKCkgb25jZSBm
aXJzdCBtYXkgYmUgbW9yZSBlZmZpY2llbnQuCi0KLSAgICAgICAgXG5vdGUgVGhlIHNvdXJjZSB0
eXBlIFxjIFQgZXhwbGljaXRseSBkaXNhbGxvd3MgYWxsIHBvaW50ZXIgdHlwZXMsCi0gICAgICAg
ICAgICBlc3BlY2lhbGx5IChcYyBjb25zdCkgXHJlZiBDaCouICBUaGlzIGhlbHBzIGF2b2lkaW5n
IGltcGxpY2l0bHkKLSAgICAgICAgICAgIHJlZmVyZW5jaW5nIGNoYXJhY3RlciBzdHJpbmdzIHdp
dGggaW5zdWZmaWNpZW50IGxpZmV0aW1lLCB1c2UKLSAgICAgICAgICAgIFxyZWYgUHVzaEJhY2so
R2VuZXJpY1ZhbHVlJiwgQWxsb2NhdG9yJikgb3IgXHJlZgotICAgICAgICAgICAgUHVzaEJhY2so
U3RyaW5nUmVmVHlwZSwgQWxsb2NhdG9yJikuCi0gICAgICAgICAgICBBbGwgb3RoZXIgcG9pbnRl
ciB0eXBlcyB3b3VsZCBpbXBsaWNpdGx5IGNvbnZlcnQgdG8gXGMgYm9vbCwKLSAgICAgICAgICAg
IHVzZSBhbiBleHBsaWNpdCBjYXN0IGluc3RlYWQsIGlmIG5lZWRlZC4KLSAgICAgICAgXG5vdGUg
QW1vcnRpemVkIGNvbnN0YW50IHRpbWUgY29tcGxleGl0eS4KLSAgICAqLwotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBUPgotICAgIFJBUElESlNPTl9ESVNBQkxFSUZfUkVUVVJOKChpbnRlcm5hbDo6
T3JFeHByPGludGVybmFsOjpJc1BvaW50ZXI8VD4sIGludGVybmFsOjpJc0dlbmVyaWNWYWx1ZTxU
PiA+KSwgKEdlbmVyaWNWYWx1ZSYpKQotICAgIFB1c2hCYWNrKFQgdmFsdWUsIEFsbG9jYXRvciYg
YWxsb2NhdG9yKSB7Ci0gICAgICAgIEdlbmVyaWNWYWx1ZSB2KHZhbHVlKTsKLSAgICAgICAgcmV0
dXJuIFB1c2hCYWNrKHYsIGFsbG9jYXRvcik7Ci0gICAgfQotCi0gICAgLy8hIFJlbW92ZSB0aGUg
bGFzdCBlbGVtZW50IGluIHRoZSBhcnJheS4KLSAgICAvKiEKLSAgICAgICAgXG5vdGUgQ29uc3Rh
bnQgdGltZSBjb21wbGV4aXR5LgotICAgICovCi0gICAgR2VuZXJpY1ZhbHVlJiBQb3BCYWNrKCkg
ewotICAgICAgICBSQVBJREpTT05fQVNTRVJUKElzQXJyYXkoKSk7Ci0gICAgICAgIFJBUElESlNP
Tl9BU1NFUlQoIUVtcHR5KCkpOwotICAgICAgICBkYXRhXy5hLmVsZW1lbnRzWy0tZGF0YV8uYS5z
aXplXS5+R2VuZXJpY1ZhbHVlKCk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAg
ICAvLyEgUmVtb3ZlIGFuIGVsZW1lbnQgb2YgYXJyYXkgYnkgaXRlcmF0b3IuCi0gICAgLyohCi0g
ICAgICAgIFxwYXJhbSBwb3MgaXRlcmF0b3IgdG8gdGhlIGVsZW1lbnQgdG8gcmVtb3ZlCi0gICAg
ICAgIFxwcmUgSXNBcnJheSgpID09IHRydWUgJiYgXHJlZiBCZWdpbigpIDw9IFxjIHBvcyA8IFxy
ZWYgRW5kKCkKLSAgICAgICAgXHJldHVybiBJdGVyYXRvciBmb2xsb3dpbmcgdGhlIHJlbW92ZWQg
ZWxlbWVudC4gSWYgdGhlIGl0ZXJhdG9yIHBvcyByZWZlcnMgdG8gdGhlIGxhc3QgZWxlbWVudCwg
dGhlIEVuZCgpIGl0ZXJhdG9yIGlzIHJldHVybmVkLgotICAgICAgICBcbm90ZSBMaW5lYXIgdGlt
ZSBjb21wbGV4aXR5LgotICAgICovCi0gICAgVmFsdWVJdGVyYXRvciBFcmFzZShDb25zdFZhbHVl
SXRlcmF0b3IgcG9zKSB7Ci0gICAgICAgIHJldHVybiBFcmFzZShwb3MsIHBvcyArIDEpOwotICAg
IH0KLQotICAgIC8vISBSZW1vdmUgZWxlbWVudHMgaW4gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkg
b2YgdGhlIGFycmF5LgotICAgIC8qIQotICAgICAgICBccGFyYW0gZmlyc3QgaXRlcmF0b3IgdG8g
dGhlIGZpcnN0IGVsZW1lbnQgdG8gcmVtb3ZlCi0gICAgICAgIFxwYXJhbSBsYXN0ICBpdGVyYXRv
ciBmb2xsb3dpbmcgdGhlIGxhc3QgZWxlbWVudCB0byByZW1vdmUKLSAgICAgICAgXHByZSBJc0Fy
cmF5KCkgPT0gdHJ1ZSAmJiBccmVmIEJlZ2luKCkgPD0gXGMgZmlyc3QgPD0gXGMgbGFzdCA8PSBc
cmVmIEVuZCgpCi0gICAgICAgIFxyZXR1cm4gSXRlcmF0b3IgZm9sbG93aW5nIHRoZSBsYXN0IHJl
bW92ZWQgZWxlbWVudC4KLSAgICAgICAgXG5vdGUgTGluZWFyIHRpbWUgY29tcGxleGl0eS4KLSAg
ICAqLwotICAgIFZhbHVlSXRlcmF0b3IgRXJhc2UoQ29uc3RWYWx1ZUl0ZXJhdG9yIGZpcnN0LCBD
b25zdFZhbHVlSXRlcmF0b3IgbGFzdCkgewotICAgICAgICBSQVBJREpTT05fQVNTRVJUKElzQXJy
YXkoKSk7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoZGF0YV8uYS5zaXplID4gMCk7Ci0gICAg
ICAgIFJBUElESlNPTl9BU1NFUlQoZGF0YV8uYS5lbGVtZW50cyAhPSAwKTsKLSAgICAgICAgUkFQ
SURKU09OX0FTU0VSVChmaXJzdCA+PSBCZWdpbigpKTsKLSAgICAgICAgUkFQSURKU09OX0FTU0VS
VChmaXJzdCA8PSBsYXN0KTsKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVChsYXN0IDw9IEVuZCgp
KTsKLSAgICAgICAgVmFsdWVJdGVyYXRvciBwb3MgPSBCZWdpbigpICsgKGZpcnN0IC0gQmVnaW4o
KSk7Ci0gICAgICAgIGZvciAoVmFsdWVJdGVyYXRvciBpdHIgPSBwb3M7IGl0ciAhPSBsYXN0OyAr
K2l0cikKLSAgICAgICAgICAgIGl0ci0+fkdlbmVyaWNWYWx1ZSgpOyAgICAgICAKLSAgICAgICAg
c3RkOjptZW1tb3ZlKHBvcywgbGFzdCwgKEVuZCgpIC0gbGFzdCkgKiBzaXplb2YoR2VuZXJpY1Zh
bHVlKSk7Ci0gICAgICAgIGRhdGFfLmEuc2l6ZSAtPSAobGFzdCAtIGZpcnN0KTsKLSAgICAgICAg
cmV0dXJuIHBvczsKLSAgICB9Ci0KLSAgICAvL0B9Ci0KLSAgICAvLyFAbmFtZSBOdW1iZXIKLSAg
ICAvL0B7Ci0KLSAgICBpbnQgR2V0SW50KCkgY29uc3QgICAgICAgICAgeyBSQVBJREpTT05fQVNT
RVJUKGZsYWdzXyAmIGtJbnRGbGFnKTsgICByZXR1cm4gZGF0YV8ubi5pLmk7ICAgfQotICAgIHVu
c2lnbmVkIEdldFVpbnQoKSBjb25zdCAgICB7IFJBUElESlNPTl9BU1NFUlQoZmxhZ3NfICYga1Vp
bnRGbGFnKTsgIHJldHVybiBkYXRhXy5uLnUudTsgICB9Ci0gICAgaW50NjRfdCBHZXRJbnQ2NCgp
IGNvbnN0ICAgIHsgUkFQSURKU09OX0FTU0VSVChmbGFnc18gJiBrSW50NjRGbGFnKTsgcmV0dXJu
IGRhdGFfLm4uaTY0OyB9Ci0gICAgdWludDY0X3QgR2V0VWludDY0KCkgY29uc3QgIHsgUkFQSURK
U09OX0FTU0VSVChmbGFnc18gJiBrVWludDY0RmxhZyk7IHJldHVybiBkYXRhXy5uLnU2NDsgfQot
Ci0gICAgZG91YmxlIEdldERvdWJsZSgpIGNvbnN0IHsKLSAgICAgICAgUkFQSURKU09OX0FTU0VS
VChJc051bWJlcigpKTsKLSAgICAgICAgaWYgKChmbGFnc18gJiBrRG91YmxlRmxhZykgIT0gMCkg
ICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFfLm4uZDsgICAvLyBleGFjdCB0eXBlLCBubyBjb252
ZXJzaW9uLgotICAgICAgICBpZiAoKGZsYWdzXyAmIGtJbnRGbGFnKSAhPSAwKSAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZGF0YV8ubi5pLmk7IC8vIGludCAtPiBkb3VibGUKLSAgICAgICAgaWYg
KChmbGFnc18gJiBrVWludEZsYWcpICE9IDApICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFf
Lm4udS51OyAvLyB1bnNpZ25lZCAtPiBkb3VibGUKLSAgICAgICAgaWYgKChmbGFnc18gJiBrSW50
NjRGbGFnKSAhPSAwKSAgICAgICAgICAgICAgICAgcmV0dXJuIChkb3VibGUpZGF0YV8ubi5pNjQ7
IC8vIGludDY0X3QgLT4gZG91YmxlIChtYXkgbG9zZSBwcmVjaXNpb24pCi0gICAgICAgIFJBUElE
SlNPTl9BU1NFUlQoKGZsYWdzXyAmIGtVaW50NjRGbGFnKSAhPSAwKTsgIHJldHVybiAoZG91Ymxl
KWRhdGFfLm4udTY0OyAvLyB1aW50NjRfdCAtPiBkb3VibGUgKG1heSBsb3NlIHByZWNpc2lvbikK
LSAgICB9Ci0KLSAgICBHZW5lcmljVmFsdWUmIFNldEludChpbnQgaSkgICAgICAgICAgICAgeyB0
aGlzLT5+R2VuZXJpY1ZhbHVlKCk7IG5ldyAodGhpcykgR2VuZXJpY1ZhbHVlKGkpOyAgICByZXR1
cm4gKnRoaXM7IH0KLSAgICBHZW5lcmljVmFsdWUmIFNldFVpbnQodW5zaWduZWQgdSkgICAgICAg
eyB0aGlzLT5+R2VuZXJpY1ZhbHVlKCk7IG5ldyAodGhpcykgR2VuZXJpY1ZhbHVlKHUpOyAgICBy
ZXR1cm4gKnRoaXM7IH0KLSAgICBHZW5lcmljVmFsdWUmIFNldEludDY0KGludDY0X3QgaTY0KSAg
ICAgeyB0aGlzLT5+R2VuZXJpY1ZhbHVlKCk7IG5ldyAodGhpcykgR2VuZXJpY1ZhbHVlKGk2NCk7
ICByZXR1cm4gKnRoaXM7IH0KLSAgICBHZW5lcmljVmFsdWUmIFNldFVpbnQ2NCh1aW50NjRfdCB1
NjQpICAgeyB0aGlzLT5+R2VuZXJpY1ZhbHVlKCk7IG5ldyAodGhpcykgR2VuZXJpY1ZhbHVlKHU2
NCk7ICByZXR1cm4gKnRoaXM7IH0KLSAgICBHZW5lcmljVmFsdWUmIFNldERvdWJsZShkb3VibGUg
ZCkgICAgICAgeyB0aGlzLT5+R2VuZXJpY1ZhbHVlKCk7IG5ldyAodGhpcykgR2VuZXJpY1ZhbHVl
KGQpOyAgICByZXR1cm4gKnRoaXM7IH0KLQotICAgIC8vQH0KLQotICAgIC8vIUBuYW1lIFN0cmlu
ZwotICAgIC8vQHsKLQotICAgIGNvbnN0IENoKiBHZXRTdHJpbmcoKSBjb25zdCB7IFJBUElESlNP
Tl9BU1NFUlQoSXNTdHJpbmcoKSk7IHJldHVybiAoKGZsYWdzXyAmIGtJbmxpbmVTdHJGbGFnKSA/
IGRhdGFfLnNzLnN0ciA6IGRhdGFfLnMuc3RyKTsgfQotCi0gICAgLy8hIEdldCB0aGUgbGVuZ3Ro
IG9mIHN0cmluZy4KLSAgICAvKiEgU2luY2UgcmFwaWRqc29uIHBlcm1pdHMgIlxcdTAwMDAiIGlu
IHRoZSBqc29uIHN0cmluZywgc3RybGVuKHYuR2V0U3RyaW5nKCkpIG1heSBub3QgZXF1YWwgdG8g
di5HZXRTdHJpbmdMZW5ndGgoKS4KLSAgICAqLwotICAgIFNpemVUeXBlIEdldFN0cmluZ0xlbmd0
aCgpIGNvbnN0IHsgUkFQSURKU09OX0FTU0VSVChJc1N0cmluZygpKTsgcmV0dXJuICgoZmxhZ3Nf
ICYga0lubGluZVN0ckZsYWcpID8gKGRhdGFfLnNzLkdldExlbmd0aCgpKSA6IGRhdGFfLnMubGVu
Z3RoKTsgfQotCi0gICAgLy8hIFNldCB0aGlzIHZhbHVlIGFzIGEgc3RyaW5nIHdpdGhvdXQgY29w
eWluZyBzb3VyY2Ugc3RyaW5nLgotICAgIC8qISBUaGlzIHZlcnNpb24gaGFzIGJldHRlciBwZXJm
b3JtYW5jZSB3aXRoIHN1cHBsaWVkIGxlbmd0aCwgYW5kIGFsc28gc3VwcG9ydCBzdHJpbmcgY29u
dGFpbmluZyBudWxsIGNoYXJhY3Rlci4KLSAgICAgICAgXHBhcmFtIHMgc291cmNlIHN0cmluZyBw
b2ludGVyLiAKLSAgICAgICAgXHBhcmFtIGxlbmd0aCBUaGUgbGVuZ3RoIG9mIHNvdXJjZSBzdHJp
bmcsIGV4Y2x1ZGluZyB0aGUgdHJhaWxpbmcgbnVsbCB0ZXJtaW5hdG9yLgotICAgICAgICBccmV0
dXJuIFRoZSB2YWx1ZSBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCi0gICAgICAgIFxwb3N0IElzU3Ry
aW5nKCkgPT0gdHJ1ZSAmJiBHZXRTdHJpbmcoKSA9PSBzICYmIEdldFN0cmluZ0xlbmd0aCgpID09
IGxlbmd0aAotICAgICAgICBcc2VlIFNldFN0cmluZyhTdHJpbmdSZWZUeXBlKQotICAgICovCi0g
ICAgR2VuZXJpY1ZhbHVlJiBTZXRTdHJpbmcoY29uc3QgQ2gqIHMsIFNpemVUeXBlIGxlbmd0aCkg
eyByZXR1cm4gU2V0U3RyaW5nKFN0cmluZ1JlZihzLCBsZW5ndGgpKTsgfQotCi0gICAgLy8hIFNl
dCB0aGlzIHZhbHVlIGFzIGEgc3RyaW5nIHdpdGhvdXQgY29weWluZyBzb3VyY2Ugc3RyaW5nLgot
ICAgIC8qISBccGFyYW0gcyBzb3VyY2Ugc3RyaW5nIHJlZmVyZW5jZQotICAgICAgICBccmV0dXJu
IFRoZSB2YWx1ZSBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCi0gICAgICAgIFxwb3N0IElzU3RyaW5n
KCkgPT0gdHJ1ZSAmJiBHZXRTdHJpbmcoKSA9PSBzICYmIEdldFN0cmluZ0xlbmd0aCgpID09IHMu
bGVuZ3RoCi0gICAgKi8KLSAgICBHZW5lcmljVmFsdWUmIFNldFN0cmluZyhTdHJpbmdSZWZUeXBl
IHMpIHsgdGhpcy0+fkdlbmVyaWNWYWx1ZSgpOyBTZXRTdHJpbmdSYXcocyk7IHJldHVybiAqdGhp
czsgfQotCi0gICAgLy8hIFNldCB0aGlzIHZhbHVlIGFzIGEgc3RyaW5nIGJ5IGNvcHlpbmcgZnJv
bSBzb3VyY2Ugc3RyaW5nLgotICAgIC8qISBUaGlzIHZlcnNpb24gaGFzIGJldHRlciBwZXJmb3Jt
YW5jZSB3aXRoIHN1cHBsaWVkIGxlbmd0aCwgYW5kIGFsc28gc3VwcG9ydCBzdHJpbmcgY29udGFp
bmluZyBudWxsIGNoYXJhY3Rlci4KLSAgICAgICAgXHBhcmFtIHMgc291cmNlIHN0cmluZy4gCi0g
ICAgICAgIFxwYXJhbSBsZW5ndGggVGhlIGxlbmd0aCBvZiBzb3VyY2Ugc3RyaW5nLCBleGNsdWRp
bmcgdGhlIHRyYWlsaW5nIG51bGwgdGVybWluYXRvci4KLSAgICAgICAgXHBhcmFtIGFsbG9jYXRv
ciBBbGxvY2F0b3IgZm9yIGFsbG9jYXRpbmcgY29waWVkIGJ1ZmZlci4gQ29tbW9ubHkgdXNlIEdl
bmVyaWNEb2N1bWVudDo6R2V0QWxsb2NhdG9yKCkuCi0gICAgICAgIFxyZXR1cm4gVGhlIHZhbHVl
IGl0c2VsZiBmb3IgZmx1ZW50IEFQSS4KLSAgICAgICAgXHBvc3QgSXNTdHJpbmcoKSA9PSB0cnVl
ICYmIEdldFN0cmluZygpICE9IHMgJiYgc3RyY21wKEdldFN0cmluZygpLHMpID09IDAgJiYgR2V0
U3RyaW5nTGVuZ3RoKCkgPT0gbGVuZ3RoCi0gICAgKi8KLSAgICBHZW5lcmljVmFsdWUmIFNldFN0
cmluZyhjb25zdCBDaCogcywgU2l6ZVR5cGUgbGVuZ3RoLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikg
eyB0aGlzLT5+R2VuZXJpY1ZhbHVlKCk7IFNldFN0cmluZ1JhdyhTdHJpbmdSZWYocywgbGVuZ3Ro
KSwgYWxsb2NhdG9yKTsgcmV0dXJuICp0aGlzOyB9Ci0KLSAgICAvLyEgU2V0IHRoaXMgdmFsdWUg
YXMgYSBzdHJpbmcgYnkgY29weWluZyBmcm9tIHNvdXJjZSBzdHJpbmcuCi0gICAgLyohIFxwYXJh
bSBzIHNvdXJjZSBzdHJpbmcuIAotICAgICAgICBccGFyYW0gYWxsb2NhdG9yIEFsbG9jYXRvciBm
b3IgYWxsb2NhdGluZyBjb3BpZWQgYnVmZmVyLiBDb21tb25seSB1c2UgR2VuZXJpY0RvY3VtZW50
OjpHZXRBbGxvY2F0b3IoKS4KLSAgICAgICAgXHJldHVybiBUaGUgdmFsdWUgaXRzZWxmIGZvciBm
bHVlbnQgQVBJLgotICAgICAgICBccG9zdCBJc1N0cmluZygpID09IHRydWUgJiYgR2V0U3RyaW5n
KCkgIT0gcyAmJiBzdHJjbXAoR2V0U3RyaW5nKCkscykgPT0gMCAmJiBHZXRTdHJpbmdMZW5ndGgo
KSA9PSBsZW5ndGgKLSAgICAqLwotICAgIEdlbmVyaWNWYWx1ZSYgU2V0U3RyaW5nKGNvbnN0IENo
KiBzLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgeyByZXR1cm4gU2V0U3RyaW5nKHMsIGludGVybmFs
OjpTdHJMZW4ocyksIGFsbG9jYXRvcik7IH0KLQotI2lmIFJBUElESlNPTl9IQVNfU1REU1RSSU5H
Ci0gICAgLy8hIFNldCB0aGlzIHZhbHVlIGFzIGEgc3RyaW5nIGJ5IGNvcHlpbmcgZnJvbSBzb3Vy
Y2Ugc3RyaW5nLgotICAgIC8qISBccGFyYW0gcyBzb3VyY2Ugc3RyaW5nLgotICAgICAgICBccGFy
YW0gYWxsb2NhdG9yIEFsbG9jYXRvciBmb3IgYWxsb2NhdGluZyBjb3BpZWQgYnVmZmVyLiBDb21t
b25seSB1c2UgR2VuZXJpY0RvY3VtZW50OjpHZXRBbGxvY2F0b3IoKS4KLSAgICAgICAgXHJldHVy
biBUaGUgdmFsdWUgaXRzZWxmIGZvciBmbHVlbnQgQVBJLgotICAgICAgICBccG9zdCBJc1N0cmlu
ZygpID09IHRydWUgJiYgR2V0U3RyaW5nKCkgIT0gcy5kYXRhKCkgJiYgc3RyY21wKEdldFN0cmlu
ZygpLHMuZGF0YSgpID09IDAgJiYgR2V0U3RyaW5nTGVuZ3RoKCkgPT0gcy5zaXplKCkKLSAgICAg
ICAgXG5vdGUgUmVxdWlyZXMgdGhlIGRlZmluaXRpb24gb2YgdGhlIHByZXByb2Nlc3NvciBzeW1i
b2wgXHJlZiBSQVBJREpTT05fSEFTX1NURFNUUklORy4KLSAgICAqLwotICAgIEdlbmVyaWNWYWx1
ZSYgU2V0U3RyaW5nKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPENoPiYgcywgQWxsb2NhdG9yJiBh
bGxvY2F0b3IpIHsgcmV0dXJuIFNldFN0cmluZyhzLmRhdGEoKSwgcy5zaXplKCksIGFsbG9jYXRv
cik7IH0KLSNlbmRpZgotCi0gICAgLy9AfQotCi0gICAgLy8hIEdlbmVyYXRlIGV2ZW50cyBvZiB0
aGlzIHZhbHVlIHRvIGEgSGFuZGxlci4KLSAgICAvKiEgVGhpcyBmdW5jdGlvbiBhZG9wdHMgdGhl
IEdvRiB2aXNpdG9yIHBhdHRlcm4uCi0gICAgICAgIFR5cGljYWwgdXNhZ2UgaXMgdG8gb3V0cHV0
IHRoaXMgSlNPTiB2YWx1ZSBhcyBKU09OIHRleHQgdmlhIFdyaXRlciwgd2hpY2ggaXMgYSBIYW5k
bGVyLgotICAgICAgICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGRlZXAgY2xvbmUgdGhpcyB2YWx1
ZSB2aWEgR2VuZXJpY0RvY3VtZW50LCB3aGljaCBpcyBhbHNvIGEgSGFuZGxlci4KLSAgICAgICAg
XHRwYXJhbSBIYW5kbGVyIHR5cGUgb2YgaGFuZGxlci4KLSAgICAgICAgXHBhcmFtIGhhbmRsZXIg
QW4gb2JqZWN0IGltcGxlbWVudGluZyBjb25jZXB0IEhhbmRsZXIuCi0gICAgKi8KLSAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgSGFuZGxlcj4KLSAgICBib29sIEFjY2VwdChIYW5kbGVyJiBoYW5kbGVy
KSBjb25zdCB7Ci0gICAgICAgIHN3aXRjaChHZXRUeXBlKCkpIHsKLSAgICAgICAgY2FzZSBrTnVs
bFR5cGU6ICAgICByZXR1cm4gaGFuZGxlci5OdWxsKCk7Ci0gICAgICAgIGNhc2Uga0ZhbHNlVHlw
ZTogICAgcmV0dXJuIGhhbmRsZXIuQm9vbChmYWxzZSk7Ci0gICAgICAgIGNhc2Uga1RydWVUeXBl
OiAgICAgcmV0dXJuIGhhbmRsZXIuQm9vbCh0cnVlKTsKLQotICAgICAgICBjYXNlIGtPYmplY3RU
eXBlOgotICAgICAgICAgICAgaWYgKCFoYW5kbGVyLlN0YXJ0T2JqZWN0KCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgZm9yIChDb25zdE1lbWJlckl0ZXJhdG9y
IG0gPSBNZW1iZXJCZWdpbigpOyBtICE9IE1lbWJlckVuZCgpOyArK20pIHsKLSAgICAgICAgICAg
ICAgICBSQVBJREpTT05fQVNTRVJUKG0tPm5hbWUuSXNTdHJpbmcoKSk7IC8vIFVzZXIgbWF5IGNo
YW5nZSB0aGUgdHlwZSBvZiBuYW1lIGJ5IE1lbWJlckl0ZXJhdG9yLgotICAgICAgICAgICAgICAg
IGlmICghaGFuZGxlci5LZXkobS0+bmFtZS5HZXRTdHJpbmcoKSwgbS0+bmFtZS5HZXRTdHJpbmdM
ZW5ndGgoKSwgKG0tPm5hbWUuZmxhZ3NfICYga0NvcHlGbGFnKSAhPSAwKSkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGlmICghbS0+dmFsdWUuQWNj
ZXB0KGhhbmRsZXIpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gaGFuZGxlci5FbmRPYmplY3QoZGF0YV8uby5zaXpl
KTsKLQotICAgICAgICBjYXNlIGtBcnJheVR5cGU6Ci0gICAgICAgICAgICBpZiAoIWhhbmRsZXIu
U3RhcnRBcnJheSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IGZvciAoR2VuZXJpY1ZhbHVlKiB2ID0gZGF0YV8uYS5lbGVtZW50czsgdiAhPSBkYXRhXy5hLmVs
ZW1lbnRzICsgZGF0YV8uYS5zaXplOyArK3YpCi0gICAgICAgICAgICAgICAgaWYgKCF2LT5BY2Nl
cHQoaGFuZGxlcikpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIHJldHVybiBoYW5kbGVyLkVuZEFycmF5KGRhdGFfLmEuc2l6ZSk7Ci0gICAgCi0gICAgICAg
IGNhc2Uga1N0cmluZ1R5cGU6Ci0gICAgICAgICAgICByZXR1cm4gaGFuZGxlci5TdHJpbmcoR2V0
U3RyaW5nKCksIEdldFN0cmluZ0xlbmd0aCgpLCAoZmxhZ3NfICYga0NvcHlGbGFnKSAhPSAwKTsK
LSAgICAKLSAgICAgICAgY2FzZSBrTnVtYmVyVHlwZToKLSAgICAgICAgICAgIGlmIChJc0ludCgp
KSAgICAgICAgICAgIHJldHVybiBoYW5kbGVyLkludChkYXRhXy5uLmkuaSk7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChJc1VpbnQoKSkgICAgICByZXR1cm4gaGFuZGxlci5VaW50KGRhdGFfLm4udS51
KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKElzSW50NjQoKSkgICAgIHJldHVybiBoYW5kbGVyLklu
dDY0KGRhdGFfLm4uaTY0KTsKLSAgICAgICAgICAgIGVsc2UgaWYgKElzVWludDY0KCkpICAgIHJl
dHVybiBoYW5kbGVyLlVpbnQ2NChkYXRhXy5uLnU2NCk7Ci0gICAgICAgICAgICBlbHNlICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlci5Eb3VibGUoZGF0YV8ubi5kKTsKLSAgICAKLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOwotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdGVt
cGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIEdlbmVyaWNWYWx1ZTsKLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1lLCB0eXBlbmFtZT4gZnJpZW5kIGNsYXNzIEdl
bmVyaWNEb2N1bWVudDsKLQotICAgIGVudW0gewotICAgICAgICBrQm9vbEZsYWcgPSAweDEwMCwK
LSAgICAgICAga051bWJlckZsYWcgPSAweDIwMCwKLSAgICAgICAga0ludEZsYWcgPSAweDQwMCwK
LSAgICAgICAga1VpbnRGbGFnID0gMHg4MDAsCi0gICAgICAgIGtJbnQ2NEZsYWcgPSAweDEwMDAs
Ci0gICAgICAgIGtVaW50NjRGbGFnID0gMHgyMDAwLAotICAgICAgICBrRG91YmxlRmxhZyA9IDB4
NDAwMCwKLSAgICAgICAga1N0cmluZ0ZsYWcgPSAweDEwMDAwMCwKLSAgICAgICAga0NvcHlGbGFn
ID0gMHgyMDAwMDAsCi0gICAgICAgIGtJbmxpbmVTdHJGbGFnID0gMHg0MDAwMDAsCi0KLSAgICAg
ICAgLy8gSW5pdGlhbCBmbGFncyBvZiBkaWZmZXJlbnQgdHlwZXMuCi0gICAgICAgIGtOdWxsRmxh
ZyA9IGtOdWxsVHlwZSwKLSAgICAgICAga1RydWVGbGFnID0ga1RydWVUeXBlIHwga0Jvb2xGbGFn
LAotICAgICAgICBrRmFsc2VGbGFnID0ga0ZhbHNlVHlwZSB8IGtCb29sRmxhZywKLSAgICAgICAg
a051bWJlckludEZsYWcgPSBrTnVtYmVyVHlwZSB8IGtOdW1iZXJGbGFnIHwga0ludEZsYWcgfCBr
SW50NjRGbGFnLAotICAgICAgICBrTnVtYmVyVWludEZsYWcgPSBrTnVtYmVyVHlwZSB8IGtOdW1i
ZXJGbGFnIHwga1VpbnRGbGFnIHwga1VpbnQ2NEZsYWcgfCBrSW50NjRGbGFnLAotICAgICAgICBr
TnVtYmVySW50NjRGbGFnID0ga051bWJlclR5cGUgfCBrTnVtYmVyRmxhZyB8IGtJbnQ2NEZsYWcs
Ci0gICAgICAgIGtOdW1iZXJVaW50NjRGbGFnID0ga051bWJlclR5cGUgfCBrTnVtYmVyRmxhZyB8
IGtVaW50NjRGbGFnLAotICAgICAgICBrTnVtYmVyRG91YmxlRmxhZyA9IGtOdW1iZXJUeXBlIHwg
a051bWJlckZsYWcgfCBrRG91YmxlRmxhZywKLSAgICAgICAga051bWJlckFueUZsYWcgPSBrTnVt
YmVyVHlwZSB8IGtOdW1iZXJGbGFnIHwga0ludEZsYWcgfCBrSW50NjRGbGFnIHwga1VpbnRGbGFn
IHwga1VpbnQ2NEZsYWcgfCBrRG91YmxlRmxhZywKLSAgICAgICAga0NvbnN0U3RyaW5nRmxhZyA9
IGtTdHJpbmdUeXBlIHwga1N0cmluZ0ZsYWcsCi0gICAgICAgIGtDb3B5U3RyaW5nRmxhZyA9IGtT
dHJpbmdUeXBlIHwga1N0cmluZ0ZsYWcgfCBrQ29weUZsYWcsCi0gICAgICAgIGtTaG9ydFN0cmlu
Z0ZsYWcgPSBrU3RyaW5nVHlwZSB8IGtTdHJpbmdGbGFnIHwga0NvcHlGbGFnIHwga0lubGluZVN0
ckZsYWcsCi0gICAgICAgIGtPYmplY3RGbGFnID0ga09iamVjdFR5cGUsCi0gICAgICAgIGtBcnJh
eUZsYWcgPSBrQXJyYXlUeXBlLAotCi0gICAgICAgIGtUeXBlTWFzayA9IDB4RkYgICAgLy8gYml0
d2lzZS1hbmQgd2l0aCBtYXNrIG9mIDB4RkYgY2FuIGJlIG9wdGltaXplZCBieSBjb21waWxlcgot
ICAgIH07Ci0KLSAgICBzdGF0aWMgY29uc3QgU2l6ZVR5cGUga0RlZmF1bHRBcnJheUNhcGFjaXR5
ID0gMTY7Ci0gICAgc3RhdGljIGNvbnN0IFNpemVUeXBlIGtEZWZhdWx0T2JqZWN0Q2FwYWNpdHkg
PSAxNjsKLQotICAgIHN0cnVjdCBTdHJpbmcgewotICAgICAgICBjb25zdCBDaCogc3RyOwotICAg
ICAgICBTaXplVHlwZSBsZW5ndGg7Ci0gICAgICAgIHVuc2lnbmVkIGhhc2hjb2RlOyAgLy8hPCBy
ZXNlcnZlZAotICAgIH07ICAvLyAxMiBieXRlcyBpbiAzMi1iaXQgbW9kZSwgMTYgYnl0ZXMgaW4g
NjQtYml0IG1vZGUKLQotICAgIC8vIGltcGxlbWVudGF0aW9uIGRldGFpbDogU2hvcnRTdHJpbmcg
Y2FuIHJlcHJlc2VudCB6ZXJvLXRlcm1pbmF0ZWQgc3RyaW5ncyB1cCB0byBNYXhTaXplIGNoYXJz
Ci0gICAgLy8gKGV4Y2x1ZGluZyB0aGUgdGVybWluYXRpbmcgemVybykgYW5kIHN0b3JlIGEgdmFs
dWUgdG8gZGV0ZXJtaW5lIHRoZSBsZW5ndGggb2YgdGhlIGNvbnRhaW5lZAotICAgIC8vIHN0cmlu
ZyBpbiB0aGUgbGFzdCBjaGFyYWN0ZXIgc3RyW0xlblBvc10gYnkgc3RvcmluZyAiTWF4U2l6ZSAt
IGxlbmd0aCIgdGhlcmUuIElmIHRoZSBzdHJpbmcKLSAgICAvLyB0byBzdG9yZSBoYXMgdGhlIG1h
eGltYWwgbGVuZ3RoIG9mIE1heFNpemUgdGhlbiBzdHJbTGVuUG9zXSB3aWxsIGJlIDAgYW5kIHRo
ZXJlZm9yZSBhY3QgYXMKLSAgICAvLyB0aGUgc3RyaW5nIHRlcm1pbmF0b3IgYXMgd2VsbC4gRm9y
IGdldHRpbmcgdGhlIHN0cmluZyBsZW5ndGggYmFjayBmcm9tIHRoYXQgdmFsdWUganVzdCB1c2UK
LSAgICAvLyAiTWF4U2l6ZSAtIHN0cltMZW5Qb3NdIi4KLSAgICAvLyBUaGlzIGFsbG93cyB0byBz
dG9yZSAxMS1jaGFycyBzdHJpbmdzIGluIDMyLWJpdCBtb2RlIGFuZCAxNS1jaGFycyBzdHJpbmdz
IGluIDY0LWJpdCBtb2RlCi0gICAgLy8gaW5saW5lIChmb3IgYFVURjhgLWVuY29kZWQgc3RyaW5n
cykuCi0gICAgc3RydWN0IFNob3J0U3RyaW5nIHsKLSAgICAgICAgZW51bSB7IE1heENoYXJzID0g
c2l6ZW9mKFN0cmluZykgLyBzaXplb2YoQ2gpLCBNYXhTaXplID0gTWF4Q2hhcnMgLSAxLCBMZW5Q
b3MgPSBNYXhTaXplIH07Ci0gICAgICAgIENoIHN0cltNYXhDaGFyc107Ci0KLSAgICAgICAgaW5s
aW5lIHN0YXRpYyBib29sIFVzYWJsZShTaXplVHlwZSBsZW4pIHsgcmV0dXJuICAgICAgICAgICAg
KE1heFNpemUgPj0gbGVuKTsgfQotICAgICAgICBpbmxpbmUgdm9pZCAgICAgU2V0TGVuZ3RoKFNp
emVUeXBlIGxlbikgeyBzdHJbTGVuUG9zXSA9IChDaCkoTWF4U2l6ZSAtICBsZW4pOyB9Ci0gICAg
ICAgIGlubGluZSBTaXplVHlwZSBHZXRMZW5ndGgoKSBjb25zdCAgICAgICB7IHJldHVybiAgKFNp
emVUeXBlKShNYXhTaXplIC0gIHN0cltMZW5Qb3NdKTsgfQotICAgIH07ICAvLyBhdCBtb3N0IGFz
IG1hbnkgYnl0ZXMgYXMgIlN0cmluZyIgYWJvdmUgPT4gMTIgYnl0ZXMgaW4gMzItYml0IG1vZGUs
IDE2IGJ5dGVzIGluIDY0LWJpdCBtb2RlCi0KLSAgICAvLyBCeSB1c2luZyBwcm9wZXIgYmluYXJ5
IGxheW91dCwgcmV0cmlldmFsIG9mIGRpZmZlcmVudCBpbnRlZ2VyIHR5cGVzIGRvIG5vdCBuZWVk
IGNvbnZlcnNpb25zLgotICAgIHVuaW9uIE51bWJlciB7Ci0jaWYgUkFQSURKU09OX0VORElBTiA9
PSBSQVBJREpTT05fTElUVExFRU5ESUFOCi0gICAgICAgIHN0cnVjdCBJIHsKLSAgICAgICAgICAg
IGludCBpOwotICAgICAgICAgICAgY2hhciBwYWRkaW5nWzRdOwotICAgICAgICB9aTsKLSAgICAg
ICAgc3RydWN0IFUgewotICAgICAgICAgICAgdW5zaWduZWQgdTsKLSAgICAgICAgICAgIGNoYXIg
cGFkZGluZzJbNF07Ci0gICAgICAgIH11OwotI2Vsc2UKLSAgICAgICAgc3RydWN0IEkgewotICAg
ICAgICAgICAgY2hhciBwYWRkaW5nWzRdOwotICAgICAgICAgICAgaW50IGk7Ci0gICAgICAgIH1p
OwotICAgICAgICBzdHJ1Y3QgVSB7Ci0gICAgICAgICAgICBjaGFyIHBhZGRpbmcyWzRdOwotICAg
ICAgICAgICAgdW5zaWduZWQgdTsKLSAgICAgICAgfXU7Ci0jZW5kaWYKLSAgICAgICAgaW50NjRf
dCBpNjQ7Ci0gICAgICAgIHVpbnQ2NF90IHU2NDsKLSAgICAgICAgZG91YmxlIGQ7Ci0gICAgfTsg
IC8vIDggYnl0ZXMKLQotICAgIHN0cnVjdCBPYmplY3QgewotICAgICAgICBNZW1iZXIqIG1lbWJl
cnM7Ci0gICAgICAgIFNpemVUeXBlIHNpemU7Ci0gICAgICAgIFNpemVUeXBlIGNhcGFjaXR5Owot
ICAgIH07ICAvLyAxMiBieXRlcyBpbiAzMi1iaXQgbW9kZSwgMTYgYnl0ZXMgaW4gNjQtYml0IG1v
ZGUKLQotICAgIHN0cnVjdCBBcnJheSB7Ci0gICAgICAgIEdlbmVyaWNWYWx1ZSogZWxlbWVudHM7
Ci0gICAgICAgIFNpemVUeXBlIHNpemU7Ci0gICAgICAgIFNpemVUeXBlIGNhcGFjaXR5OwotICAg
IH07ICAvLyAxMiBieXRlcyBpbiAzMi1iaXQgbW9kZSwgMTYgYnl0ZXMgaW4gNjQtYml0IG1vZGUK
LQotICAgIHVuaW9uIERhdGEgewotICAgICAgICBTdHJpbmcgczsKLSAgICAgICAgU2hvcnRTdHJp
bmcgc3M7Ci0gICAgICAgIE51bWJlciBuOwotICAgICAgICBPYmplY3QgbzsKLSAgICAgICAgQXJy
YXkgYTsKLSAgICB9OyAgLy8gMTIgYnl0ZXMgaW4gMzItYml0IG1vZGUsIDE2IGJ5dGVzIGluIDY0
LWJpdCBtb2RlCi0KLSAgICAvLyBJbml0aWFsaXplIHRoaXMgdmFsdWUgYXMgYXJyYXkgd2l0aCBp
bml0aWFsIGRhdGEsIHdpdGhvdXQgY2FsbGluZyBkZXN0cnVjdG9yLgotICAgIHZvaWQgU2V0QXJy
YXlSYXcoR2VuZXJpY1ZhbHVlKiB2YWx1ZXMsIFNpemVUeXBlIGNvdW50LCBBbGxvY2F0b3ImIGFs
bG9jYXRvcikgewotICAgICAgICBmbGFnc18gPSBrQXJyYXlGbGFnOwotICAgICAgICBkYXRhXy5h
LmVsZW1lbnRzID0gKEdlbmVyaWNWYWx1ZSopYWxsb2NhdG9yLk1hbGxvYyhjb3VudCAqIHNpemVv
ZihHZW5lcmljVmFsdWUpKTsKLSAgICAgICAgc3RkOjptZW1jcHkoZGF0YV8uYS5lbGVtZW50cywg
dmFsdWVzLCBjb3VudCAqIHNpemVvZihHZW5lcmljVmFsdWUpKTsKLSAgICAgICAgZGF0YV8uYS5z
aXplID0gZGF0YV8uYS5jYXBhY2l0eSA9IGNvdW50OwotICAgIH0KLQotICAgIC8vISBJbml0aWFs
aXplIHRoaXMgdmFsdWUgYXMgb2JqZWN0IHdpdGggaW5pdGlhbCBkYXRhLCB3aXRob3V0IGNhbGxp
bmcgZGVzdHJ1Y3Rvci4KLSAgICB2b2lkIFNldE9iamVjdFJhdyhNZW1iZXIqIG1lbWJlcnMsIFNp
emVUeXBlIGNvdW50LCBBbGxvY2F0b3ImIGFsbG9jYXRvcikgewotICAgICAgICBmbGFnc18gPSBr
T2JqZWN0RmxhZzsKLSAgICAgICAgZGF0YV8uby5tZW1iZXJzID0gKE1lbWJlciopYWxsb2NhdG9y
Lk1hbGxvYyhjb3VudCAqIHNpemVvZihNZW1iZXIpKTsKLSAgICAgICAgc3RkOjptZW1jcHkoZGF0
YV8uby5tZW1iZXJzLCBtZW1iZXJzLCBjb3VudCAqIHNpemVvZihNZW1iZXIpKTsKLSAgICAgICAg
ZGF0YV8uby5zaXplID0gZGF0YV8uby5jYXBhY2l0eSA9IGNvdW50OwotICAgIH0KLQotICAgIC8v
ISBJbml0aWFsaXplIHRoaXMgdmFsdWUgYXMgY29uc3RhbnQgc3RyaW5nLCB3aXRob3V0IGNhbGxp
bmcgZGVzdHJ1Y3Rvci4KLSAgICB2b2lkIFNldFN0cmluZ1JhdyhTdHJpbmdSZWZUeXBlIHMpIFJB
UElESlNPTl9OT0VYQ0VQVCB7Ci0gICAgICAgIGZsYWdzXyA9IGtDb25zdFN0cmluZ0ZsYWc7Ci0g
ICAgICAgIGRhdGFfLnMuc3RyID0gczsKLSAgICAgICAgZGF0YV8ucy5sZW5ndGggPSBzLmxlbmd0
aDsKLSAgICB9Ci0KLSAgICAvLyEgSW5pdGlhbGl6ZSB0aGlzIHZhbHVlIGFzIGNvcHkgc3RyaW5n
IHdpdGggaW5pdGlhbCBkYXRhLCB3aXRob3V0IGNhbGxpbmcgZGVzdHJ1Y3Rvci4KLSAgICB2b2lk
IFNldFN0cmluZ1JhdyhTdHJpbmdSZWZUeXBlIHMsIEFsbG9jYXRvciYgYWxsb2NhdG9yKSB7Ci0g
ICAgICAgIENoKiBzdHIgPSBOVUxMOwotICAgICAgICBpZihTaG9ydFN0cmluZzo6VXNhYmxlKHMu
bGVuZ3RoKSkgewotICAgICAgICAgICAgZmxhZ3NfID0ga1Nob3J0U3RyaW5nRmxhZzsKLSAgICAg
ICAgICAgIGRhdGFfLnNzLlNldExlbmd0aChzLmxlbmd0aCk7Ci0gICAgICAgICAgICBzdHIgPSBk
YXRhXy5zcy5zdHI7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBmbGFnc18gPSBrQ29w
eVN0cmluZ0ZsYWc7Ci0gICAgICAgICAgICBkYXRhXy5zLmxlbmd0aCA9IHMubGVuZ3RoOwotICAg
ICAgICAgICAgc3RyID0gKENoICopYWxsb2NhdG9yLk1hbGxvYygocy5sZW5ndGggKyAxKSAqIHNp
emVvZihDaCkpOwotICAgICAgICAgICAgZGF0YV8ucy5zdHIgPSBzdHI7Ci0gICAgICAgIH0KLSAg
ICAgICAgc3RkOjptZW1jcHkoc3RyLCBzLCBzLmxlbmd0aCAqIHNpemVvZihDaCkpOwotICAgICAg
ICBzdHJbcy5sZW5ndGhdID0gJ1wwJzsKLSAgICB9Ci0KLSAgICAvLyEgQXNzaWdubWVudCB3aXRo
b3V0IGNhbGxpbmcgZGVzdHJ1Y3RvcgotICAgIHZvaWQgUmF3QXNzaWduKEdlbmVyaWNWYWx1ZSYg
cmhzKSBSQVBJREpTT05fTk9FWENFUFQgewotICAgICAgICBkYXRhXyA9IHJocy5kYXRhXzsKLSAg
ICAgICAgZmxhZ3NfID0gcmhzLmZsYWdzXzsKLSAgICAgICAgcmhzLmZsYWdzXyA9IGtOdWxsRmxh
ZzsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU291cmNlQWxsb2NhdG9yPgotICAg
IGJvb2wgU3RyaW5nRXF1YWwoY29uc3QgR2VuZXJpY1ZhbHVlPEVuY29kaW5nLCBTb3VyY2VBbGxv
Y2F0b3I+JiByaHMpIGNvbnN0IHsKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVChJc1N0cmluZygp
KTsKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVChyaHMuSXNTdHJpbmcoKSk7Ci0KLSAgICAgICAg
Y29uc3QgU2l6ZVR5cGUgbGVuMSA9IEdldFN0cmluZ0xlbmd0aCgpOwotICAgICAgICBjb25zdCBT
aXplVHlwZSBsZW4yID0gcmhzLkdldFN0cmluZ0xlbmd0aCgpOwotICAgICAgICBpZihsZW4xICE9
IGxlbjIpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICAgICAgY29uc3QgQ2gqIGNvbnN0IHN0cjEg
PSBHZXRTdHJpbmcoKTsKLSAgICAgICAgY29uc3QgQ2gqIGNvbnN0IHN0cjIgPSByaHMuR2V0U3Ry
aW5nKCk7Ci0gICAgICAgIGlmKHN0cjEgPT0gc3RyMikgeyByZXR1cm4gdHJ1ZTsgfSAvLyBmYXN0
IHBhdGggZm9yIGNvbnN0YW50IHN0cmluZwotCi0gICAgICAgIHJldHVybiAoc3RkOjptZW1jbXAo
c3RyMSwgc3RyMiwgc2l6ZW9mKENoKSAqIGxlbjEpID09IDApOwotICAgIH0KLQotICAgIERhdGEg
ZGF0YV87Ci0gICAgdW5zaWduZWQgZmxhZ3NfOwotfTsKLQotLy8hIEdlbmVyaWNWYWx1ZSB3aXRo
IFVURjggZW5jb2RpbmcKLXR5cGVkZWYgR2VuZXJpY1ZhbHVlPFVURjg8PiA+IFZhbHVlOwotCi0v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBHZW5lcmljRG9jdW1lbnQgCi0KLS8vISBBIGRvY3Vt
ZW50IGZvciBwYXJzaW5nIEpTT04gdGV4dCBhcyBET00uCi0vKiEKLSAgICBcbm90ZSBpbXBsZW1l
bnRzIEhhbmRsZXIgY29uY2VwdAotICAgIFx0cGFyYW0gRW5jb2RpbmcgRW5jb2RpbmcgZm9yIGJv
dGggcGFyc2luZyBhbmQgc3RyaW5nIHN0b3JhZ2UuCi0gICAgXHRwYXJhbSBBbGxvY2F0b3IgQWxs
b2NhdG9yIGZvciBhbGxvY2F0aW5nIG1lbW9yeSBmb3IgdGhlIERPTQotICAgIFx0cGFyYW0gU3Rh
Y2tBbGxvY2F0b3IgQWxsb2NhdG9yIGZvciBhbGxvY2F0aW5nIG1lbW9yeSBmb3Igc3RhY2sgZHVy
aW5nIHBhcnNpbmcuCi0gICAgXHdhcm5pbmcgQWx0aG91Z2ggR2VuZXJpY0RvY3VtZW50IGluaGVy
aXRzIGZyb20gR2VuZXJpY1ZhbHVlLCB0aGUgQVBJIGRvZXMgXGIgbm90IHByb3ZpZGUgYW55IHZp
cnR1YWwgZnVuY3Rpb25zLCBlc3BlY2lhbGx5IG5vIHZpcnR1YWwgZGVzdHJ1Y3Rvci4gIFRvIGF2
b2lkIG1lbW9yeSBsZWFrcywgZG8gbm90IFxjIGRlbGV0ZSBhIEdlbmVyaWNEb2N1bWVudCBvYmpl
Y3QgdmlhIGEgcG9pbnRlciB0byBhIEdlbmVyaWNWYWx1ZS4KLSovCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgRW5jb2RpbmcsIHR5cGVuYW1lIEFsbG9jYXRvciA9IE1lbW9yeVBvb2xBbGxvY2F0b3I8Piwg
dHlwZW5hbWUgU3RhY2tBbGxvY2F0b3IgPSBDcnRBbGxvY2F0b3I+Ci1jbGFzcyBHZW5lcmljRG9j
dW1lbnQgOiBwdWJsaWMgR2VuZXJpY1ZhbHVlPEVuY29kaW5nLCBBbGxvY2F0b3I+IHsKLXB1Ymxp
YzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEVuY29kaW5nOjpDaCBDaDsgICAgICAgICAgICAgICAg
ICAgICAgIC8vITwgQ2hhcmFjdGVyIHR5cGUgZGVyaXZlZCBmcm9tIEVuY29kaW5nLgotICAgIHR5
cGVkZWYgR2VuZXJpY1ZhbHVlPEVuY29kaW5nLCBBbGxvY2F0b3I+IFZhbHVlVHlwZTsgICAgLy8h
PCBWYWx1ZSB0eXBlIG9mIHRoZSBkb2N1bWVudC4KLSAgICB0eXBlZGVmIEFsbG9jYXRvciBBbGxv
Y2F0b3JUeXBlOyAgICAgICAgICAgICAgICAgICAgICAgIC8vITwgQWxsb2NhdG9yIHR5cGUgZnJv
bSB0ZW1wbGF0ZSBwYXJhbWV0ZXIuCi0KLSAgICAvLyEgQ29uc3RydWN0b3IKLSAgICAvKiEgXHBh
cmFtIGFsbG9jYXRvciAgICAgICAgT3B0aW9uYWwgYWxsb2NhdG9yIGZvciBhbGxvY2F0aW5nIG1l
bW9yeS4KLSAgICAgICAgXHBhcmFtIHN0YWNrQ2FwYWNpdHkgICAgT3B0aW9uYWwgaW5pdGlhbCBj
YXBhY2l0eSBvZiBzdGFjayBpbiBieXRlcy4KLSAgICAgICAgXHBhcmFtIHN0YWNrQWxsb2NhdG9y
ICAgT3B0aW9uYWwgYWxsb2NhdG9yIGZvciBhbGxvY2F0aW5nIG1lbW9yeSBmb3Igc3RhY2suCi0g
ICAgKi8KLSAgICBHZW5lcmljRG9jdW1lbnQoQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAwLCBzaXpl
X3Qgc3RhY2tDYXBhY2l0eSA9IGtEZWZhdWx0U3RhY2tDYXBhY2l0eSwgU3RhY2tBbGxvY2F0b3Iq
IHN0YWNrQWxsb2NhdG9yID0gMCkgOiAKLSAgICAgICAgYWxsb2NhdG9yXyhhbGxvY2F0b3IpLCBv
d25BbGxvY2F0b3JfKDApLCBzdGFja18oc3RhY2tBbGxvY2F0b3IsIHN0YWNrQ2FwYWNpdHkpLCBw
YXJzZVJlc3VsdF8oKQotICAgIHsKLSAgICAgICAgaWYgKCFhbGxvY2F0b3JfKQotICAgICAgICAg
ICAgb3duQWxsb2NhdG9yXyA9IGFsbG9jYXRvcl8gPSBSQVBJREpTT05fTkVXKEFsbG9jYXRvcigp
KTsKLSAgICB9Ci0KLSNpZiBSQVBJREpTT05fSEFTX0NYWDExX1JWQUxVRV9SRUZTCi0gICAgLy8h
IE1vdmUgY29uc3RydWN0b3IgaW4gQysrMTEKLSAgICBHZW5lcmljRG9jdW1lbnQoR2VuZXJpY0Rv
Y3VtZW50JiYgcmhzKSBSQVBJREpTT05fTk9FWENFUFQKLSAgICAgICAgOiBWYWx1ZVR5cGUoc3Rk
Ojptb3ZlKHJocykpLAotICAgICAgICAgIGFsbG9jYXRvcl8ocmhzLmFsbG9jYXRvcl8pLAotICAg
ICAgICAgIG93bkFsbG9jYXRvcl8ocmhzLm93bkFsbG9jYXRvcl8pLAotICAgICAgICAgIHN0YWNr
XyhzdGQ6Om1vdmUocmhzLnN0YWNrXykpLAotICAgICAgICAgIHBhcnNlUmVzdWx0XyhyaHMucGFy
c2VSZXN1bHRfKQotICAgIHsKLSAgICAgICAgcmhzLmFsbG9jYXRvcl8gPSAwOwotICAgICAgICBy
aHMub3duQWxsb2NhdG9yXyA9IDA7Ci0gICAgICAgIHJocy5wYXJzZVJlc3VsdF8gPSBQYXJzZVJl
c3VsdCgpOwotICAgIH0KLSNlbmRpZgotCi0gICAgfkdlbmVyaWNEb2N1bWVudCgpIHsKLSAgICAg
ICAgRGVzdHJveSgpOwotICAgIH0KLQotI2lmIFJBUElESlNPTl9IQVNfQ1hYMTFfUlZBTFVFX1JF
RlMKLSAgICAvLyEgTW92ZSBhc3NpZ25tZW50IGluIEMrKzExCi0gICAgR2VuZXJpY0RvY3VtZW50
JiBvcGVyYXRvcj0oR2VuZXJpY0RvY3VtZW50JiYgcmhzKSBSQVBJREpTT05fTk9FWENFUFQKLSAg
ICB7Ci0gICAgICAgIC8vIFRoZSBjYXN0IHRvIFZhbHVlVHlwZSBpcyBuZWNlc3NhcnkgaGVyZSwg
YmVjYXVzZSBvdGhlcndpc2UgaXQgd291bGQKLSAgICAgICAgLy8gYXR0ZW1wdCB0byBjYWxsIEdl
bmVyaWNWYWx1ZSdzIHRlbXBsYXRlZCBhc3NpZ25tZW50IG9wZXJhdG9yLgotICAgICAgICBWYWx1
ZVR5cGU6Om9wZXJhdG9yPShzdGQ6OmZvcndhcmQ8VmFsdWVUeXBlPihyaHMpKTsKLQotICAgICAg
ICAvLyBDYWxsaW5nIHRoZSBkZXN0cnVjdG9yIGhlcmUgd291bGQgcHJlbWF0dXJlbHkgY2FsbCBz
dGFja18ncyBkZXN0cnVjdG9yCi0gICAgICAgIERlc3Ryb3koKTsKLQotICAgICAgICBhbGxvY2F0
b3JfID0gcmhzLmFsbG9jYXRvcl87Ci0gICAgICAgIG93bkFsbG9jYXRvcl8gPSByaHMub3duQWxs
b2NhdG9yXzsKLSAgICAgICAgc3RhY2tfID0gc3RkOjptb3ZlKHJocy5zdGFja18pOwotICAgICAg
ICBwYXJzZVJlc3VsdF8gPSByaHMucGFyc2VSZXN1bHRfOwotCi0gICAgICAgIHJocy5hbGxvY2F0
b3JfID0gMDsKLSAgICAgICAgcmhzLm93bkFsbG9jYXRvcl8gPSAwOwotICAgICAgICByaHMucGFy
c2VSZXN1bHRfID0gUGFyc2VSZXN1bHQoKTsKLQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAg
fQotI2VuZGlmCi0KLSAgICAvLyFAbmFtZSBQYXJzZSBmcm9tIHN0cmVhbQotICAgIC8vIUB7Ci0K
LSAgICAvLyEgUGFyc2UgSlNPTiB0ZXh0IGZyb20gYW4gaW5wdXQgc3RyZWFtICh3aXRoIEVuY29k
aW5nIGNvbnZlcnNpb24pCi0gICAgLyohIFx0cGFyYW0gcGFyc2VGbGFncyBDb21iaW5hdGlvbiBv
ZiBccmVmIFBhcnNlRmxhZy4KLSAgICAgICAgXHRwYXJhbSBTb3VyY2VFbmNvZGluZyBFbmNvZGlu
ZyBvZiBpbnB1dCBzdHJlYW0KLSAgICAgICAgXHRwYXJhbSBJbnB1dFN0cmVhbSBUeXBlIG9mIGlu
cHV0IHN0cmVhbSwgaW1wbGVtZW50aW5nIFN0cmVhbSBjb25jZXB0Ci0gICAgICAgIFxwYXJhbSBp
cyBJbnB1dCBzdHJlYW0gdG8gYmUgcGFyc2VkLgotICAgICAgICBccmV0dXJuIFRoZSBkb2N1bWVu
dCBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCi0gICAgKi8KLSAgICB0ZW1wbGF0ZSA8dW5zaWduZWQg
cGFyc2VGbGFncywgdHlwZW5hbWUgU291cmNlRW5jb2RpbmcsIHR5cGVuYW1lIElucHV0U3RyZWFt
PgotICAgIEdlbmVyaWNEb2N1bWVudCYgUGFyc2VTdHJlYW0oSW5wdXRTdHJlYW0mIGlzKSB7Ci0g
ICAgICAgIFZhbHVlVHlwZTo6U2V0TnVsbCgpOyAvLyBSZW1vdmUgZXhpc3Rpbmcgcm9vdCBpZiBl
eGlzdAotICAgICAgICBHZW5lcmljUmVhZGVyPFNvdXJjZUVuY29kaW5nLCBFbmNvZGluZywgQWxs
b2NhdG9yPiByZWFkZXIoJkdldEFsbG9jYXRvcigpKTsKLSAgICAgICAgQ2xlYXJTdGFja09uRXhp
dCBzY29wZSgqdGhpcyk7Ci0gICAgICAgIHBhcnNlUmVzdWx0XyA9IHJlYWRlci50ZW1wbGF0ZSBQ
YXJzZTxwYXJzZUZsYWdzPihpcywgKnRoaXMpOwotICAgICAgICBpZiAocGFyc2VSZXN1bHRfKSB7
Ci0gICAgICAgICAgICBSQVBJREpTT05fQVNTRVJUKHN0YWNrXy5HZXRTaXplKCkgPT0gc2l6ZW9m
KFZhbHVlVHlwZSkpOyAvLyBHb3Qgb25lIGFuZCBvbmx5IG9uZSByb290IG9iamVjdAotICAgICAg
ICAgICAgdGhpcy0+UmF3QXNzaWduKCpzdGFja18udGVtcGxhdGUgUG9wPFZhbHVlVHlwZT4oMSkp
OyAgICAvLyBBZGQgdGhpcy0+IHRvIHByZXZlbnQgaXNzdWUgMTMuCi0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIC8vISBQYXJzZSBKU09OIHRleHQgZnJvbSBh
biBpbnB1dCBzdHJlYW0KLSAgICAvKiEgXHRwYXJhbSBwYXJzZUZsYWdzIENvbWJpbmF0aW9uIG9m
IFxyZWYgUGFyc2VGbGFnLgotICAgICAgICBcdHBhcmFtIElucHV0U3RyZWFtIFR5cGUgb2YgaW5w
dXQgc3RyZWFtLCBpbXBsZW1lbnRpbmcgU3RyZWFtIGNvbmNlcHQKLSAgICAgICAgXHBhcmFtIGlz
IElucHV0IHN0cmVhbSB0byBiZSBwYXJzZWQuCi0gICAgICAgIFxyZXR1cm4gVGhlIGRvY3VtZW50
IGl0c2VsZiBmb3IgZmx1ZW50IEFQSS4KLSAgICAqLwotICAgIHRlbXBsYXRlIDx1bnNpZ25lZCBw
YXJzZUZsYWdzLCB0eXBlbmFtZSBJbnB1dFN0cmVhbT4KLSAgICBHZW5lcmljRG9jdW1lbnQmIFBh
cnNlU3RyZWFtKElucHV0U3RyZWFtJiBpcykgewotICAgICAgICByZXR1cm4gUGFyc2VTdHJlYW08
cGFyc2VGbGFncyxFbmNvZGluZyxJbnB1dFN0cmVhbT4oaXMpOwotICAgIH0KLQotICAgIC8vISBQ
YXJzZSBKU09OIHRleHQgZnJvbSBhbiBpbnB1dCBzdHJlYW0gKHdpdGggXHJlZiBrUGFyc2VEZWZh
dWx0RmxhZ3MpCi0gICAgLyohIFx0cGFyYW0gSW5wdXRTdHJlYW0gVHlwZSBvZiBpbnB1dCBzdHJl
YW0sIGltcGxlbWVudGluZyBTdHJlYW0gY29uY2VwdAotICAgICAgICBccGFyYW0gaXMgSW5wdXQg
c3RyZWFtIHRvIGJlIHBhcnNlZC4KLSAgICAgICAgXHJldHVybiBUaGUgZG9jdW1lbnQgaXRzZWxm
IGZvciBmbHVlbnQgQVBJLgotICAgICovCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0U3Ry
ZWFtPgotICAgIEdlbmVyaWNEb2N1bWVudCYgUGFyc2VTdHJlYW0oSW5wdXRTdHJlYW0mIGlzKSB7
Ci0gICAgICAgIHJldHVybiBQYXJzZVN0cmVhbTxrUGFyc2VEZWZhdWx0RmxhZ3MsIEVuY29kaW5n
LCBJbnB1dFN0cmVhbT4oaXMpOwotICAgIH0KLSAgICAvLyFAfQotCi0gICAgLy8hQG5hbWUgUGFy
c2UgaW4tcGxhY2UgZnJvbSBtdXRhYmxlIHN0cmluZwotICAgIC8vIUB7Ci0KLSAgICAvLyEgUGFy
c2UgSlNPTiB0ZXh0IGZyb20gYSBtdXRhYmxlIHN0cmluZyAod2l0aCBFbmNvZGluZyBjb252ZXJz
aW9uKQotICAgIC8qISBcdHBhcmFtIHBhcnNlRmxhZ3MgQ29tYmluYXRpb24gb2YgXHJlZiBQYXJz
ZUZsYWcuCi0gICAgICAgIFx0cGFyYW0gU291cmNlRW5jb2RpbmcgVHJhbnNjb2RpbmcgZnJvbSBp
bnB1dCBFbmNvZGluZwotICAgICAgICBccGFyYW0gc3RyIE11dGFibGUgemVyby10ZXJtaW5hdGVk
IHN0cmluZyB0byBiZSBwYXJzZWQuCi0gICAgICAgIFxyZXR1cm4gVGhlIGRvY3VtZW50IGl0c2Vs
ZiBmb3IgZmx1ZW50IEFQSS4KLSAgICAqLwotICAgIHRlbXBsYXRlIDx1bnNpZ25lZCBwYXJzZUZs
YWdzLCB0eXBlbmFtZSBTb3VyY2VFbmNvZGluZz4KLSAgICBHZW5lcmljRG9jdW1lbnQmIFBhcnNl
SW5zaXR1KENoKiBzdHIpIHsKLSAgICAgICAgR2VuZXJpY0luc2l0dVN0cmluZ1N0cmVhbTxFbmNv
ZGluZz4gcyhzdHIpOwotICAgICAgICByZXR1cm4gUGFyc2VTdHJlYW08cGFyc2VGbGFncyB8IGtQ
YXJzZUluc2l0dUZsYWcsIFNvdXJjZUVuY29kaW5nPihzKTsKLSAgICB9Ci0KLSAgICAvLyEgUGFy
c2UgSlNPTiB0ZXh0IGZyb20gYSBtdXRhYmxlIHN0cmluZwotICAgIC8qISBcdHBhcmFtIHBhcnNl
RmxhZ3MgQ29tYmluYXRpb24gb2YgXHJlZiBQYXJzZUZsYWcuCi0gICAgICAgIFxwYXJhbSBzdHIg
TXV0YWJsZSB6ZXJvLXRlcm1pbmF0ZWQgc3RyaW5nIHRvIGJlIHBhcnNlZC4KLSAgICAgICAgXHJl
dHVybiBUaGUgZG9jdW1lbnQgaXRzZWxmIGZvciBmbHVlbnQgQVBJLgotICAgICovCi0gICAgdGVt
cGxhdGUgPHVuc2lnbmVkIHBhcnNlRmxhZ3M+Ci0gICAgR2VuZXJpY0RvY3VtZW50JiBQYXJzZUlu
c2l0dShDaCogc3RyKSB7Ci0gICAgICAgIHJldHVybiBQYXJzZUluc2l0dTxwYXJzZUZsYWdzLCBF
bmNvZGluZz4oc3RyKTsKLSAgICB9Ci0KLSAgICAvLyEgUGFyc2UgSlNPTiB0ZXh0IGZyb20gYSBt
dXRhYmxlIHN0cmluZyAod2l0aCBccmVmIGtQYXJzZURlZmF1bHRGbGFncykKLSAgICAvKiEgXHBh
cmFtIHN0ciBNdXRhYmxlIHplcm8tdGVybWluYXRlZCBzdHJpbmcgdG8gYmUgcGFyc2VkLgotICAg
ICAgICBccmV0dXJuIFRoZSBkb2N1bWVudCBpdHNlbGYgZm9yIGZsdWVudCBBUEkuCi0gICAgKi8K
LSAgICBHZW5lcmljRG9jdW1lbnQmIFBhcnNlSW5zaXR1KENoKiBzdHIpIHsKLSAgICAgICAgcmV0
dXJuIFBhcnNlSW5zaXR1PGtQYXJzZURlZmF1bHRGbGFncywgRW5jb2Rpbmc+KHN0cik7Ci0gICAg
fQotICAgIC8vIUB9Ci0KLSAgICAvLyFAbmFtZSBQYXJzZSBmcm9tIHJlYWQtb25seSBzdHJpbmcK
LSAgICAvLyFAewotCi0gICAgLy8hIFBhcnNlIEpTT04gdGV4dCBmcm9tIGEgcmVhZC1vbmx5IHN0
cmluZyAod2l0aCBFbmNvZGluZyBjb252ZXJzaW9uKQotICAgIC8qISBcdHBhcmFtIHBhcnNlRmxh
Z3MgQ29tYmluYXRpb24gb2YgXHJlZiBQYXJzZUZsYWcgKG11c3Qgbm90IGNvbnRhaW4gXHJlZiBr
UGFyc2VJbnNpdHVGbGFnKS4KLSAgICAgICAgXHRwYXJhbSBTb3VyY2VFbmNvZGluZyBUcmFuc2Nv
ZGluZyBmcm9tIGlucHV0IEVuY29kaW5nCi0gICAgICAgIFxwYXJhbSBzdHIgUmVhZC1vbmx5IHpl
cm8tdGVybWluYXRlZCBzdHJpbmcgdG8gYmUgcGFyc2VkLgotICAgICovCi0gICAgdGVtcGxhdGUg
PHVuc2lnbmVkIHBhcnNlRmxhZ3MsIHR5cGVuYW1lIFNvdXJjZUVuY29kaW5nPgotICAgIEdlbmVy
aWNEb2N1bWVudCYgUGFyc2UoY29uc3QgQ2gqIHN0cikgewotICAgICAgICBSQVBJREpTT05fQVNT
RVJUKCEocGFyc2VGbGFncyAmIGtQYXJzZUluc2l0dUZsYWcpKTsKLSAgICAgICAgR2VuZXJpY1N0
cmluZ1N0cmVhbTxTb3VyY2VFbmNvZGluZz4gcyhzdHIpOwotICAgICAgICByZXR1cm4gUGFyc2VT
dHJlYW08cGFyc2VGbGFncywgU291cmNlRW5jb2Rpbmc+KHMpOwotICAgIH0KLQotICAgIC8vISBQ
YXJzZSBKU09OIHRleHQgZnJvbSBhIHJlYWQtb25seSBzdHJpbmcKLSAgICAvKiEgXHRwYXJhbSBw
YXJzZUZsYWdzIENvbWJpbmF0aW9uIG9mIFxyZWYgUGFyc2VGbGFnIChtdXN0IG5vdCBjb250YWlu
IFxyZWYga1BhcnNlSW5zaXR1RmxhZykuCi0gICAgICAgIFxwYXJhbSBzdHIgUmVhZC1vbmx5IHpl
cm8tdGVybWluYXRlZCBzdHJpbmcgdG8gYmUgcGFyc2VkLgotICAgICovCi0gICAgdGVtcGxhdGUg
PHVuc2lnbmVkIHBhcnNlRmxhZ3M+Ci0gICAgR2VuZXJpY0RvY3VtZW50JiBQYXJzZShjb25zdCBD
aCogc3RyKSB7Ci0gICAgICAgIHJldHVybiBQYXJzZTxwYXJzZUZsYWdzLCBFbmNvZGluZz4oc3Ry
KTsKLSAgICB9Ci0KLSAgICAvLyEgUGFyc2UgSlNPTiB0ZXh0IGZyb20gYSByZWFkLW9ubHkgc3Ry
aW5nICh3aXRoIFxyZWYga1BhcnNlRGVmYXVsdEZsYWdzKQotICAgIC8qISBccGFyYW0gc3RyIFJl
YWQtb25seSB6ZXJvLXRlcm1pbmF0ZWQgc3RyaW5nIHRvIGJlIHBhcnNlZC4KLSAgICAqLwotICAg
IEdlbmVyaWNEb2N1bWVudCYgUGFyc2UoY29uc3QgQ2gqIHN0cikgewotICAgICAgICByZXR1cm4g
UGFyc2U8a1BhcnNlRGVmYXVsdEZsYWdzPihzdHIpOwotICAgIH0KLSAgICAvLyFAfQotCi0gICAg
Ly8hQG5hbWUgSGFuZGxpbmcgcGFyc2UgZXJyb3JzCi0gICAgLy8hQHsKLQotICAgIC8vISBXaGV0
aGVyIGEgcGFyc2UgZXJyb3IgaGFzIG9jY3VyZWQgaW4gdGhlIGxhc3QgcGFyc2luZy4KLSAgICBi
b29sIEhhc1BhcnNlRXJyb3IoKSBjb25zdCB7IHJldHVybiBwYXJzZVJlc3VsdF8uSXNFcnJvcigp
OyB9Ci0KLSAgICAvLyEgR2V0IHRoZSBccmVmIFBhcnNlRXJyb3JDb2RlIG9mIGxhc3QgcGFyc2lu
Zy4KLSAgICBQYXJzZUVycm9yQ29kZSBHZXRQYXJzZUVycm9yKCkgY29uc3QgeyByZXR1cm4gcGFy
c2VSZXN1bHRfLkNvZGUoKTsgfQotCi0gICAgLy8hIEdldCB0aGUgcG9zaXRpb24gb2YgbGFzdCBw
YXJzaW5nIGVycm9yIGluIGlucHV0LCAwIG90aGVyd2lzZS4KLSAgICBzaXplX3QgR2V0RXJyb3JP
ZmZzZXQoKSBjb25zdCB7IHJldHVybiBwYXJzZVJlc3VsdF8uT2Zmc2V0KCk7IH0KLQotICAgIC8v
IUB9Ci0KLSAgICAvLyEgR2V0IHRoZSBhbGxvY2F0b3Igb2YgdGhpcyBkb2N1bWVudC4KLSAgICBB
bGxvY2F0b3ImIEdldEFsbG9jYXRvcigpIHsgcmV0dXJuICphbGxvY2F0b3JfOyB9Ci0KLSAgICAv
LyEgR2V0IHRoZSBjYXBhY2l0eSBvZiBzdGFjayBpbiBieXRlcy4KLSAgICBzaXplX3QgR2V0U3Rh
Y2tDYXBhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YWNrXy5HZXRDYXBhY2l0eSgpOyB9Ci0KLXBy
aXZhdGU6Ci0gICAgLy8gY2xlYXIgc3RhY2sgb24gYW55IGV4aXQgZnJvbSBQYXJzZVN0cmVhbSwg
ZS5nLiBkdWUgdG8gZXhjZXB0aW9uCi0gICAgc3RydWN0IENsZWFyU3RhY2tPbkV4aXQgewotICAg
ICAgICBleHBsaWNpdCBDbGVhclN0YWNrT25FeGl0KEdlbmVyaWNEb2N1bWVudCYgZCkgOiBkXyhk
KSB7fQotICAgICAgICB+Q2xlYXJTdGFja09uRXhpdCgpIHsgZF8uQ2xlYXJTdGFjaygpOyB9Ci0g
ICAgcHJpdmF0ZToKLSAgICAgICAgQ2xlYXJTdGFja09uRXhpdChjb25zdCBDbGVhclN0YWNrT25F
eGl0Jik7Ci0gICAgICAgIENsZWFyU3RhY2tPbkV4aXQmIG9wZXJhdG9yPShjb25zdCBDbGVhclN0
YWNrT25FeGl0Jik7Ci0gICAgICAgIEdlbmVyaWNEb2N1bWVudCYgZF87Ci0gICAgfTsKLQotICAg
IC8vIGNhbGxlcnMgb2YgdGhlIGZvbGxvd2luZyBwcml2YXRlIEhhbmRsZXIgZnVuY3Rpb25zCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lLHR5cGVuYW1lLHR5cGVuYW1lPiBmcmllbmQgY2xhc3MgR2Vu
ZXJpY1JlYWRlcjsgLy8gZm9yIHBhcnNpbmcKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVu
YW1lPiBmcmllbmQgY2xhc3MgR2VuZXJpY1ZhbHVlOyAvLyBmb3IgZGVlcCBjb3B5aW5nCi0KLSAg
ICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBIYW5kbGVyCi0gICAgYm9vbCBOdWxsKCkgeyBuZXcgKHN0
YWNrXy50ZW1wbGF0ZSBQdXNoPFZhbHVlVHlwZT4oKSkgVmFsdWVUeXBlKCk7IHJldHVybiB0cnVl
OyB9Ci0gICAgYm9vbCBCb29sKGJvb2wgYikgeyBuZXcgKHN0YWNrXy50ZW1wbGF0ZSBQdXNoPFZh
bHVlVHlwZT4oKSkgVmFsdWVUeXBlKGIpOyByZXR1cm4gdHJ1ZTsgfQotICAgIGJvb2wgSW50KGlu
dCBpKSB7IG5ldyAoc3RhY2tfLnRlbXBsYXRlIFB1c2g8VmFsdWVUeXBlPigpKSBWYWx1ZVR5cGUo
aSk7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBVaW50KHVuc2lnbmVkIGkpIHsgbmV3IChzdGFj
a18udGVtcGxhdGUgUHVzaDxWYWx1ZVR5cGU+KCkpIFZhbHVlVHlwZShpKTsgcmV0dXJuIHRydWU7
IH0KLSAgICBib29sIEludDY0KGludDY0X3QgaSkgeyBuZXcgKHN0YWNrXy50ZW1wbGF0ZSBQdXNo
PFZhbHVlVHlwZT4oKSkgVmFsdWVUeXBlKGkpOyByZXR1cm4gdHJ1ZTsgfQotICAgIGJvb2wgVWlu
dDY0KHVpbnQ2NF90IGkpIHsgbmV3IChzdGFja18udGVtcGxhdGUgUHVzaDxWYWx1ZVR5cGU+KCkp
IFZhbHVlVHlwZShpKTsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIERvdWJsZShkb3VibGUgZCkg
eyBuZXcgKHN0YWNrXy50ZW1wbGF0ZSBQdXNoPFZhbHVlVHlwZT4oKSkgVmFsdWVUeXBlKGQpOyBy
ZXR1cm4gdHJ1ZTsgfQotCi0gICAgYm9vbCBTdHJpbmcoY29uc3QgQ2gqIHN0ciwgU2l6ZVR5cGUg
bGVuZ3RoLCBib29sIGNvcHkpIHsgCi0gICAgICAgIGlmIChjb3B5KSAKLSAgICAgICAgICAgIG5l
dyAoc3RhY2tfLnRlbXBsYXRlIFB1c2g8VmFsdWVUeXBlPigpKSBWYWx1ZVR5cGUoc3RyLCBsZW5n
dGgsIEdldEFsbG9jYXRvcigpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbmV3IChzdGFj
a18udGVtcGxhdGUgUHVzaDxWYWx1ZVR5cGU+KCkpIFZhbHVlVHlwZShzdHIsIGxlbmd0aCk7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgU3RhcnRPYmplY3QoKSB7IG5l
dyAoc3RhY2tfLnRlbXBsYXRlIFB1c2g8VmFsdWVUeXBlPigpKSBWYWx1ZVR5cGUoa09iamVjdFR5
cGUpOyByZXR1cm4gdHJ1ZTsgfQotICAgIAotICAgIGJvb2wgS2V5KGNvbnN0IENoKiBzdHIsIFNp
emVUeXBlIGxlbmd0aCwgYm9vbCBjb3B5KSB7IHJldHVybiBTdHJpbmcoc3RyLCBsZW5ndGgsIGNv
cHkpOyB9Ci0KLSAgICBib29sIEVuZE9iamVjdChTaXplVHlwZSBtZW1iZXJDb3VudCkgewotICAg
ICAgICB0eXBlbmFtZSBWYWx1ZVR5cGU6Ok1lbWJlciogbWVtYmVycyA9IHN0YWNrXy50ZW1wbGF0
ZSBQb3A8dHlwZW5hbWUgVmFsdWVUeXBlOjpNZW1iZXI+KG1lbWJlckNvdW50KTsKLSAgICAgICAg
c3RhY2tfLnRlbXBsYXRlIFRvcDxWYWx1ZVR5cGU+KCktPlNldE9iamVjdFJhdyhtZW1iZXJzLCAo
U2l6ZVR5cGUpbWVtYmVyQ291bnQsIEdldEFsbG9jYXRvcigpKTsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotCi0gICAgYm9vbCBTdGFydEFycmF5KCkgeyBuZXcgKHN0YWNrXy50ZW1wbGF0
ZSBQdXNoPFZhbHVlVHlwZT4oKSkgVmFsdWVUeXBlKGtBcnJheVR5cGUpOyByZXR1cm4gdHJ1ZTsg
fQotICAgIAotICAgIGJvb2wgRW5kQXJyYXkoU2l6ZVR5cGUgZWxlbWVudENvdW50KSB7Ci0gICAg
ICAgIFZhbHVlVHlwZSogZWxlbWVudHMgPSBzdGFja18udGVtcGxhdGUgUG9wPFZhbHVlVHlwZT4o
ZWxlbWVudENvdW50KTsKLSAgICAgICAgc3RhY2tfLnRlbXBsYXRlIFRvcDxWYWx1ZVR5cGU+KCkt
PlNldEFycmF5UmF3KGVsZW1lbnRzLCBlbGVtZW50Q291bnQsIEdldEFsbG9jYXRvcigpKTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vISBQcm9oaWJpdCBj
b3B5aW5nCi0gICAgR2VuZXJpY0RvY3VtZW50KGNvbnN0IEdlbmVyaWNEb2N1bWVudCYpOwotICAg
IC8vISBQcm9oaWJpdCBhc3NpZ25tZW50Ci0gICAgR2VuZXJpY0RvY3VtZW50JiBvcGVyYXRvcj0o
Y29uc3QgR2VuZXJpY0RvY3VtZW50Jik7Ci0KLSAgICB2b2lkIENsZWFyU3RhY2soKSB7Ci0gICAg
ICAgIGlmIChBbGxvY2F0b3I6OmtOZWVkRnJlZSkKLSAgICAgICAgICAgIHdoaWxlIChzdGFja18u
R2V0U2l6ZSgpID4gMCkgICAgLy8gSGVyZSBhc3N1bWVzIGFsbCBlbGVtZW50cyBpbiBzdGFjayBh
cnJheSBhcmUgR2VuZXJpY1ZhbHVlIChNZW1iZXIgaXMgYWN0dWFsbHkgMiBHZW5lcmljVmFsdWUg
b2JqZWN0cykKLSAgICAgICAgICAgICAgICAoc3RhY2tfLnRlbXBsYXRlIFBvcDxWYWx1ZVR5cGU+
KDEpKS0+flZhbHVlVHlwZSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdGFja18uQ2xl
YXIoKTsKLSAgICAgICAgc3RhY2tfLlNocmlua1RvRml0KCk7Ci0gICAgfQotCi0gICAgdm9pZCBE
ZXN0cm95KCkgewotICAgICAgICBSQVBJREpTT05fREVMRVRFKG93bkFsbG9jYXRvcl8pOwotICAg
IH0KLQotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qga0RlZmF1bHRTdGFja0NhcGFjaXR5ID0gMTAy
NDsKLSAgICBBbGxvY2F0b3IqIGFsbG9jYXRvcl87Ci0gICAgQWxsb2NhdG9yKiBvd25BbGxvY2F0
b3JfOwotICAgIGludGVybmFsOjpTdGFjazxTdGFja0FsbG9jYXRvcj4gc3RhY2tfOwotICAgIFBh
cnNlUmVzdWx0IHBhcnNlUmVzdWx0XzsKLX07Ci0KLS8vISBHZW5lcmljRG9jdW1lbnQgd2l0aCBV
VEY4IGVuY29kaW5nCi10eXBlZGVmIEdlbmVyaWNEb2N1bWVudDxVVEY4PD4gPiBEb2N1bWVudDsK
LQotLy8gZGVmaW5lZCBoZXJlIGR1ZSB0byB0aGUgZGVwZW5kZW5jeSBvbiBHZW5lcmljRG9jdW1l
bnQKLXRlbXBsYXRlIDx0eXBlbmFtZSBFbmNvZGluZywgdHlwZW5hbWUgQWxsb2NhdG9yPgotdGVt
cGxhdGUgPHR5cGVuYW1lIFNvdXJjZUFsbG9jYXRvcj4KLWlubGluZQotR2VuZXJpY1ZhbHVlPEVu
Y29kaW5nLEFsbG9jYXRvcj46OkdlbmVyaWNWYWx1ZShjb25zdCBHZW5lcmljVmFsdWU8RW5jb2Rp
bmcsU291cmNlQWxsb2NhdG9yPiYgcmhzLCBBbGxvY2F0b3ImIGFsbG9jYXRvcikKLXsKLSAgICBz
d2l0Y2ggKHJocy5HZXRUeXBlKCkpIHsKLSAgICBjYXNlIGtPYmplY3RUeXBlOgotICAgIGNhc2Ug
a0FycmF5VHlwZTogeyAvLyBwZXJmb3JtIGRlZXAgY29weSB2aWEgU0FYIEhhbmRsZXIKLSAgICAg
ICAgICAgIEdlbmVyaWNEb2N1bWVudDxFbmNvZGluZyxBbGxvY2F0b3I+IGQoJmFsbG9jYXRvcik7
Ci0gICAgICAgICAgICByaHMuQWNjZXB0KGQpOwotICAgICAgICAgICAgUmF3QXNzaWduKCpkLnN0
YWNrXy50ZW1wbGF0ZSBQb3A8R2VuZXJpY1ZhbHVlPigxKSk7Ci0gICAgICAgIH0KLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBrU3RyaW5nVHlwZToKLSAgICAgICAgaWYgKHJocy5mbGFnc18gPT0g
a0NvbnN0U3RyaW5nRmxhZykgewotICAgICAgICAgICAgZmxhZ3NfID0gcmhzLmZsYWdzXzsKLSAg
ICAgICAgICAgIGRhdGFfICA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IERhdGEqPigmcmhzLmRh
dGFfKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFNldFN0cmluZ1JhdyhTdHJpbmdS
ZWYocmhzLkdldFN0cmluZygpLCByaHMuR2V0U3RyaW5nTGVuZ3RoKCkpLCBhbGxvY2F0b3IpOwot
ICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6IC8vIGtOdW1iZXJUeXBlLCBr
VHJ1ZVR5cGUsIGtGYWxzZVR5cGUsIGtOdWxsVHlwZQotICAgICAgICBmbGFnc18gPSByaHMuZmxh
Z3NfOwotICAgICAgICBkYXRhXyAgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBEYXRhKj4oJnJo
cy5kYXRhXyk7Ci0gICAgfQotfQotCi1SQVBJREpTT05fTkFNRVNQQUNFX0VORAotCi0jaWYgZGVm
aW5lZChfTVNDX1ZFUikgfHwgZGVmaW5lZChfX0dOVUNfXykKLVJBUElESlNPTl9ESUFHX1BPUAot
I2VuZGlmCi0KLSNlbmRpZiAvLyBSQVBJREpTT05fRE9DVU1FTlRfSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5j
bHVkZS9yYXBpZGpzb24vZW5jb2RlZHN0cmVhbS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9lbmNvZGVk
c3RyZWFtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlOGNhYTA1ZmU4Li4wMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFy
dHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2VuY29kZWRzdHJlYW0uaAorKysgL2Rldi9u
dWxsCkBAIC0xLDI5MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAKLS8v
Ci0vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55
IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh
dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAotLy8gaW4g
dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0
YXRpb24gdGhlIHJpZ2h0cwotLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo
LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotLy8gY29waWVzIG9mIHRoZSBT
b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0v
LyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
OgotLy8KLS8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g
bm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs
IHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLS8vCi0vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklE
RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotLy8g
SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFksCi0vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg
Tk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLS8vIEFVVEhPUlMgT1IgQ09Q
WVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIK
LS8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Ig
T1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi0vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI
IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCi0vLyBUSEUgU09G
VFdBUkUuCi0KLSNpZm5kZWYgUkFQSURKU09OX0VOQ09ERURTVFJFQU1fSF8KLSNkZWZpbmUgUkFQ
SURKU09OX0VOQ09ERURTVFJFQU1fSF8KLQotI2luY2x1ZGUgInJhcGlkanNvbi5oIgotCi0jaWZk
ZWYgX19HTlVDX18KLVJBUElESlNPTl9ESUFHX1BVU0gKLVJBUElESlNPTl9ESUFHX09GRihlZmZj
KyspCi0jZW5kaWYKLQotUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgotCi0vLyEgSW5wdXQgYnl0
ZSBzdHJlYW0gd3JhcHBlciB3aXRoIGEgc3RhdGljYWxseSBib3VuZCBlbmNvZGluZy4KLS8qIQot
ICAgIFx0cGFyYW0gRW5jb2RpbmcgVGhlIGludGVycHJldGF0aW9uIG9mIGVuY29kaW5nIG9mIHRo
ZSBzdHJlYW0uIEVpdGhlciBVVEY4LCBVVEYxNkxFLCBVVEYxNkJFLCBVVEYzMkxFLCBVVEYzMkJF
LgotICAgIFx0cGFyYW0gSW5wdXRCeXRlU3RyZWFtIFR5cGUgb2YgaW5wdXQgYnl0ZSBzdHJlYW0u
IEZvciBleGFtcGxlLCBGaWxlUmVhZFN0cmVhbS4KLSovCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRW5j
b2RpbmcsIHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KLWNsYXNzIEVuY29kZWRJbnB1dFN0cmVh
bSB7Ci0gICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIElucHV0Qnl0
ZVN0cmVhbTo6Q2gpID09IDEpOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5jb2Rp
bmc6OkNoIENoOwotCi0gICAgRW5jb2RlZElucHV0U3RyZWFtKElucHV0Qnl0ZVN0cmVhbSYgaXMp
IDogaXNfKGlzKSB7IAotICAgICAgICBjdXJyZW50XyA9IEVuY29kaW5nOjpUYWtlQk9NKGlzXyk7
Ci0gICAgfQotCi0gICAgQ2ggUGVlaygpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfOyB9Ci0gICAg
Q2ggVGFrZSgpIHsgQ2ggYyA9IGN1cnJlbnRfOyBjdXJyZW50XyA9IEVuY29kaW5nOjpUYWtlKGlz
Xyk7IHJldHVybiBjOyB9Ci0gICAgc2l6ZV90IFRlbGwoKSBjb25zdCB7IHJldHVybiBpc18uVGVs
bCgpOyB9Ci0KLSAgICAvLyBOb3QgaW1wbGVtZW50ZWQKLSAgICB2b2lkIFB1dChDaCkgeyBSQVBJ
REpTT05fQVNTRVJUKGZhbHNlKTsgfQotICAgIHZvaWQgRmx1c2goKSB7IFJBUElESlNPTl9BU1NF
UlQoZmFsc2UpOyB9IAotICAgIENoKiBQdXRCZWdpbigpIHsgUkFQSURKU09OX0FTU0VSVChmYWxz
ZSk7IHJldHVybiAwOyB9Ci0gICAgc2l6ZV90IFB1dEVuZChDaCopIHsgUkFQSURKU09OX0FTU0VS
VChmYWxzZSk7IHJldHVybiAwOyB9Ci0KLXByaXZhdGU6Ci0gICAgRW5jb2RlZElucHV0U3RyZWFt
KGNvbnN0IEVuY29kZWRJbnB1dFN0cmVhbSYpOwotICAgIEVuY29kZWRJbnB1dFN0cmVhbSYgb3Bl
cmF0b3I9KGNvbnN0IEVuY29kZWRJbnB1dFN0cmVhbSYpOwotCi0gICAgSW5wdXRCeXRlU3RyZWFt
JiBpc187Ci0gICAgQ2ggY3VycmVudF87Ci19OwotCi0vLyEgT3V0cHV0IGJ5dGUgc3RyZWFtIHdy
YXBwZXIgd2l0aCBzdGF0aWNhbGx5IGJvdW5kIGVuY29kaW5nLgotLyohCi0gICAgXHRwYXJhbSBF
bmNvZGluZyBUaGUgaW50ZXJwcmV0YXRpb24gb2YgZW5jb2Rpbmcgb2YgdGhlIHN0cmVhbS4gRWl0
aGVyIFVURjgsIFVURjE2TEUsIFVURjE2QkUsIFVURjMyTEUsIFVURjMyQkUuCi0gICAgXHRwYXJh
bSBJbnB1dEJ5dGVTdHJlYW0gVHlwZSBvZiBpbnB1dCBieXRlIHN0cmVhbS4gRm9yIGV4YW1wbGUs
IEZpbGVXcml0ZVN0cmVhbS4KLSovCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRW5jb2RpbmcsIHR5cGVu
YW1lIE91dHB1dEJ5dGVTdHJlYW0+Ci1jbGFzcyBFbmNvZGVkT3V0cHV0U3RyZWFtIHsKLSAgICBS
QVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbTo6
Q2gpID09IDEpOwotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5jb2Rpbmc6OkNoIENo
OwotCi0gICAgRW5jb2RlZE91dHB1dFN0cmVhbShPdXRwdXRCeXRlU3RyZWFtJiBvcywgYm9vbCBw
dXRCT00gPSB0cnVlKSA6IG9zXyhvcykgeyAKLSAgICAgICAgaWYgKHB1dEJPTSkKLSAgICAgICAg
ICAgIEVuY29kaW5nOjpQdXRCT00ob3NfKTsKLSAgICB9Ci0KLSAgICB2b2lkIFB1dChDaCBjKSB7
IEVuY29kaW5nOjpQdXQob3NfLCBjKTsgIH0KLSAgICB2b2lkIEZsdXNoKCkgeyBvc18uRmx1c2go
KTsgfQotCi0gICAgLy8gTm90IGltcGxlbWVudGVkCi0gICAgQ2ggUGVlaygpIGNvbnN0IHsgUkFQ
SURKU09OX0FTU0VSVChmYWxzZSk7IH0KLSAgICBDaCBUYWtlKCkgeyBSQVBJREpTT05fQVNTRVJU
KGZhbHNlKTsgIH0KLSAgICBzaXplX3QgVGVsbCgpIGNvbnN0IHsgUkFQSURKU09OX0FTU0VSVChm
YWxzZSk7ICByZXR1cm4gMDsgfQotICAgIENoKiBQdXRCZWdpbigpIHsgUkFQSURKU09OX0FTU0VS
VChmYWxzZSk7IHJldHVybiAwOyB9Ci0gICAgc2l6ZV90IFB1dEVuZChDaCopIHsgUkFQSURKU09O
X0FTU0VSVChmYWxzZSk7IHJldHVybiAwOyB9Ci0KLXByaXZhdGU6Ci0gICAgRW5jb2RlZE91dHB1
dFN0cmVhbShjb25zdCBFbmNvZGVkT3V0cHV0U3RyZWFtJik7Ci0gICAgRW5jb2RlZE91dHB1dFN0
cmVhbSYgb3BlcmF0b3I9KGNvbnN0IEVuY29kZWRPdXRwdXRTdHJlYW0mKTsKLQotICAgIE91dHB1
dEJ5dGVTdHJlYW0mIG9zXzsKLX07Ci0KLSNkZWZpbmUgUkFQSURKU09OX0VOQ09ESU5HU19GVU5D
KHgpIFVURjg8Q2g+Ojp4LCBVVEYxNkxFPENoPjo6eCwgVVRGMTZCRTxDaD46OngsIFVURjMyTEU8
Q2g+Ojp4LCBVVEYzMkJFPENoPjo6eAotCi0vLyEgSW5wdXQgc3RyZWFtIHdyYXBwZXIgd2l0aCBk
eW5hbWljYWxseSBib3VuZCBlbmNvZGluZyBhbmQgYXV0b21hdGljIGVuY29kaW5nIGRldGVjdGlv
bi4KLS8qIQotICAgIFx0cGFyYW0gQ2hhclR5cGUgVHlwZSBvZiBjaGFyYWN0ZXIgZm9yIHJlYWRp
bmcuCi0gICAgXHRwYXJhbSBJbnB1dEJ5dGVTdHJlYW0gdHlwZSBvZiBpbnB1dCBieXRlIHN0cmVh
bSB0byBiZSB3cmFwcGVkLgotKi8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZSwgdHlwZW5h
bWUgSW5wdXRCeXRlU3RyZWFtPgotY2xhc3MgQXV0b1VURklucHV0U3RyZWFtIHsKLSAgICBSQVBJ
REpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtOjpDaCkg
PT0gMSk7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBDaGFyVHlwZSBDaDsKLQotICAgIC8vISBDb25z
dHJ1Y3Rvci4KLSAgICAvKiEKLSAgICAgICAgXHBhcmFtIGlzIGlucHV0IHN0cmVhbSB0byBiZSB3
cmFwcGVkLgotICAgICAgICBccGFyYW0gdHlwZSBVVEYgZW5jb2RpbmcgdHlwZSBpZiBpdCBpcyBu
b3QgZGV0ZWN0ZWQgZnJvbSB0aGUgc3RyZWFtLgotICAgICovCi0gICAgQXV0b1VURklucHV0U3Ry
ZWFtKElucHV0Qnl0ZVN0cmVhbSYgaXMsIFVURlR5cGUgdHlwZSA9IGtVVEY4KSA6IGlzXygmaXMp
LCB0eXBlXyh0eXBlKSwgaGFzQk9NXyhmYWxzZSkgewotICAgICAgICBEZXRlY3RUeXBlKCk7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBUYWtlRnVuYyBmW10gPSB7IFJBUElESlNPTl9FTkNPRElOR1Nf
RlVOQyhUYWtlKSB9OwotICAgICAgICB0YWtlRnVuY18gPSBmW3R5cGVfXTsKLSAgICAgICAgY3Vy
cmVudF8gPSB0YWtlRnVuY18oKmlzXyk7Ci0gICAgfQotCi0gICAgVVRGVHlwZSBHZXRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gdHlwZV87IH0KLSAgICBib29sIEhhc0JPTSgpIGNvbnN0IHsgcmV0dXJu
IGhhc0JPTV87IH0KLQotICAgIENoIFBlZWsoKSBjb25zdCB7IHJldHVybiBjdXJyZW50XzsgfQot
ICAgIENoIFRha2UoKSB7IENoIGMgPSBjdXJyZW50XzsgY3VycmVudF8gPSB0YWtlRnVuY18oKmlz
Xyk7IHJldHVybiBjOyB9Ci0gICAgc2l6ZV90IFRlbGwoKSBjb25zdCB7IHJldHVybiBpc18tPlRl
bGwoKTsgfQotCi0gICAgLy8gTm90IGltcGxlbWVudGVkCi0gICAgdm9pZCBQdXQoQ2gpIHsgUkFQ
SURKU09OX0FTU0VSVChmYWxzZSk7IH0KLSAgICB2b2lkIEZsdXNoKCkgeyBSQVBJREpTT05fQVNT
RVJUKGZhbHNlKTsgfSAKLSAgICBDaCogUHV0QmVnaW4oKSB7IFJBUElESlNPTl9BU1NFUlQoZmFs
c2UpOyByZXR1cm4gMDsgfQotICAgIHNpemVfdCBQdXRFbmQoQ2gqKSB7IFJBUElESlNPTl9BU1NF
UlQoZmFsc2UpOyByZXR1cm4gMDsgfQotCi1wcml2YXRlOgotICAgIEF1dG9VVEZJbnB1dFN0cmVh
bShjb25zdCBBdXRvVVRGSW5wdXRTdHJlYW0mKTsKLSAgICBBdXRvVVRGSW5wdXRTdHJlYW0mIG9w
ZXJhdG9yPShjb25zdCBBdXRvVVRGSW5wdXRTdHJlYW0mKTsKLQotICAgIC8vIERldGVjdCBlbmNv
ZGluZyB0eXBlIHdpdGggQk9NIG9yIFJGQyA0NjI3Ci0gICAgdm9pZCBEZXRlY3RUeXBlKCkgewot
ICAgICAgICAvLyBCT00gKEJ5dGUgT3JkZXIgTWFyayk6Ci0gICAgICAgIC8vIDAwIDAwIEZFIEZG
ICBVVEYtMzJCRQotICAgICAgICAvLyBGRiBGRSAwMCAwMCAgVVRGLTMyTEUKLSAgICAgICAgLy8g
RkUgRkYgICAgICAgIFVURi0xNkJFCi0gICAgICAgIC8vIEZGIEZFICAgICAgICBVVEYtMTZMRQot
ICAgICAgICAvLyBFRiBCQiBCRiAgICAgVVRGLTgKLQotICAgICAgICBjb25zdCB1bnNpZ25lZCBj
aGFyKiBjID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilpc18tPlBlZWs0KCk7Ci0gICAgICAgIGlm
ICghYykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB1bnNpZ25lZCBib20gPSBjWzBd
IHwgKGNbMV0gPDwgOCkgfCAoY1syXSA8PCAxNikgfCAoY1szXSA8PCAyNCk7Ci0gICAgICAgIGhh
c0JPTV8gPSBmYWxzZTsKLSAgICAgICAgaWYgKGJvbSA9PSAweEZGRkUwMDAwKSAgICAgICAgICAg
ICAgICAgIHsgdHlwZV8gPSBrVVRGMzJCRTsgaGFzQk9NXyA9IHRydWU7IGlzXy0+VGFrZSgpOyBp
c18tPlRha2UoKTsgaXNfLT5UYWtlKCk7IGlzXy0+VGFrZSgpOyB9Ci0gICAgICAgIGVsc2UgaWYg
KGJvbSA9PSAweDAwMDBGRUZGKSAgICAgICAgICAgICB7IHR5cGVfID0ga1VURjMyTEU7IGhhc0JP
TV8gPSB0cnVlOyBpc18tPlRha2UoKTsgaXNfLT5UYWtlKCk7IGlzXy0+VGFrZSgpOyBpc18tPlRh
a2UoKTsgfQotICAgICAgICBlbHNlIGlmICgoYm9tICYgMHhGRkZGKSA9PSAweEZGRkUpICAgICAg
eyB0eXBlXyA9IGtVVEYxNkJFOyBoYXNCT01fID0gdHJ1ZTsgaXNfLT5UYWtlKCk7IGlzXy0+VGFr
ZSgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoKGJvbSAm
IDB4RkZGRikgPT0gMHhGRUZGKSAgICAgIHsgdHlwZV8gPSBrVVRGMTZMRTsgaGFzQk9NXyA9IHRy
dWU7IGlzXy0+VGFrZSgpOyBpc18tPlRha2UoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgIGVsc2UgaWYgKChib20gJiAweEZGRkZGRikgPT0gMHhCRkJCRUYpICB7IHR5cGVf
ID0ga1VURjg7ICAgIGhhc0JPTV8gPSB0cnVlOyBpc18tPlRha2UoKTsgaXNfLT5UYWtlKCk7IGlz
Xy0+VGFrZSgpOyAgICAgICAgICAgICAgfQotCi0gICAgICAgIC8vIFJGQyA0NjI3OiBTZWN0aW9u
IDMKLSAgICAgICAgLy8gIlNpbmNlIHRoZSBmaXJzdCB0d28gY2hhcmFjdGVycyBvZiBhIEpTT04g
dGV4dCB3aWxsIGFsd2F5cyBiZSBBU0NJSQotICAgICAgICAvLyBjaGFyYWN0ZXJzIFtSRkMwMDIw
XSwgaXQgaXMgcG9zc2libGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW4gb2N0ZXQKLSAgICAgICAg
Ly8gc3RyZWFtIGlzIFVURi04LCBVVEYtMTYgKEJFIG9yIExFKSwgb3IgVVRGLTMyIChCRSBvciBM
RSkgYnkgbG9va2luZwotICAgICAgICAvLyBhdCB0aGUgcGF0dGVybiBvZiBudWxscyBpbiB0aGUg
Zmlyc3QgZm91ciBvY3RldHMuIgotICAgICAgICAvLyAwMCAwMCAwMCB4eCAgVVRGLTMyQkUKLSAg
ICAgICAgLy8gMDAgeHggMDAgeHggIFVURi0xNkJFCi0gICAgICAgIC8vIHh4IDAwIDAwIDAwICBV
VEYtMzJMRQotICAgICAgICAvLyB4eCAwMCB4eCAwMCAgVVRGLTE2TEUKLSAgICAgICAgLy8geHgg
eHggeHggeHggIFVURi04Ci0KLSAgICAgICAgaWYgKCFoYXNCT01fKSB7Ci0gICAgICAgICAgICB1
bnNpZ25lZCBwYXR0ZXJuID0gKGNbMF0gPyAxIDogMCkgfCAoY1sxXSA/IDIgOiAwKSB8IChjWzJd
ID8gNCA6IDApIHwgKGNbM10gPyA4IDogMCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKHBhdHRlcm4p
IHsKLSAgICAgICAgICAgIGNhc2UgMHgwODogdHlwZV8gPSBrVVRGMzJCRTsgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIDB4MEE6IHR5cGVfID0ga1VURjE2QkU7IGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSAweDAxOiB0eXBlXyA9IGtVVEYzMkxFOyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgMHgw
NTogdHlwZV8gPSBrVVRGMTZMRTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIDB4MEY6IHR5cGVf
ID0ga1VURjg7ICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDogYnJlYWs7IC8vIFVzZSB0
eXBlIGRlZmluZWQgYnkgdXNlci4KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IC8vIFJ1bnRpbWUgY2hlY2sgd2hldGhlciB0aGUgc2l6ZSBvZiBjaGFyYWN0ZXIgdHlwZSBpcyBz
dWZmaWNpZW50LiBJdCBvbmx5IHBlcmZvcm0gY2hlY2tzIHdpdGggYXNzZXJ0aW9uLgotICAgICAg
ICBzd2l0Y2ggKHR5cGVfKSB7Ci0gICAgICAgIGNhc2Uga1VURjg6Ci0gICAgICAgICAgICAvLyBE
byBub3RoaW5nCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBrVVRGMTZMRToKLSAg
ICAgICAgY2FzZSBrVVRGMTZCRToKLSAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoc2l6ZW9m
KENoKSA+PSAyKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIGtVVEYzMkxFOgot
ICAgICAgICBjYXNlIGtVVEYzMkJFOgotICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChzaXpl
b2YoQ2gpID49IDQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsgICAgLy8gSW52YWxpZCB0eXBlCi0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICB0eXBlZGVmIENoICgqVGFrZUZ1bmMpKElucHV0Qnl0ZVN0cmVh
bSYgaXMpOwotICAgIElucHV0Qnl0ZVN0cmVhbSogaXNfOwotICAgIFVURlR5cGUgdHlwZV87Ci0g
ICAgQ2ggY3VycmVudF87Ci0gICAgVGFrZUZ1bmMgdGFrZUZ1bmNfOwotICAgIGJvb2wgaGFzQk9N
XzsKLX07Ci0KLS8vISBPdXRwdXQgc3RyZWFtIHdyYXBwZXIgd2l0aCBkeW5hbWljYWxseSBib3Vu
ZCBlbmNvZGluZyBhbmQgYXV0b21hdGljIGVuY29kaW5nIGRldGVjdGlvbi4KLS8qIQotICAgIFx0
cGFyYW0gQ2hhclR5cGUgVHlwZSBvZiBjaGFyYWN0ZXIgZm9yIHdyaXRpbmcuCi0gICAgXHRwYXJh
bSBJbnB1dEJ5dGVTdHJlYW0gdHlwZSBvZiBvdXRwdXQgYnl0ZSBzdHJlYW0gdG8gYmUgd3JhcHBl
ZC4KLSovCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGUsIHR5cGVuYW1lIE91dHB1dEJ5dGVT
dHJlYW0+Ci1jbGFzcyBBdXRvVVRGT3V0cHV0U3RyZWFtIHsKLSAgICBSQVBJREpTT05fU1RBVElD
X0FTU0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOwotcHVi
bGljOgotICAgIHR5cGVkZWYgQ2hhclR5cGUgQ2g7Ci0KLSAgICAvLyEgQ29uc3RydWN0b3IuCi0g
ICAgLyohCi0gICAgICAgIFxwYXJhbSBvcyBvdXRwdXQgc3RyZWFtIHRvIGJlIHdyYXBwZWQuCi0g
ICAgICAgIFxwYXJhbSB0eXBlIFVURiBlbmNvZGluZyB0eXBlLgotICAgICAgICBccGFyYW0gcHV0
Qk9NIFdoZXRoZXIgdG8gd3JpdGUgQk9NIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmVhbS4K
LSAgICAqLwotICAgIEF1dG9VVEZPdXRwdXRTdHJlYW0oT3V0cHV0Qnl0ZVN0cmVhbSYgb3MsIFVU
RlR5cGUgdHlwZSwgYm9vbCBwdXRCT00pIDogb3NfKCZvcyksIHR5cGVfKHR5cGUpIHsKLSAgICAg
ICAgLy8gUlVudGltZSBjaGVjayB3aGV0aGVyIHRoZSBzaXplIG9mIGNoYXJhY3RlciB0eXBlIGlz
IHN1ZmZpY2llbnQuIEl0IG9ubHkgcGVyZm9ybSBjaGVja3Mgd2l0aCBhc3NlcnRpb24uCi0gICAg
ICAgIHN3aXRjaCAodHlwZV8pIHsKLSAgICAgICAgY2FzZSBrVVRGMTZMRToKLSAgICAgICAgY2Fz
ZSBrVVRGMTZCRToKLSAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoc2l6ZW9mKENoKSA+PSAy
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIGtVVEYzMkxFOgotICAgICAgICBj
YXNlIGtVVEYzMkJFOgotICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVChzaXplb2YoQ2gpID49
IDQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Uga1VURjg6Ci0gICAgICAgICAg
ICAvLyBEbyBub3RoaW5nCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyAgICAvLyBJbnZhbGlkIFVURlR5cGUK
LSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBjb25zdCBQdXRGdW5jIGZbXSA9IHsgUkFQSURK
U09OX0VOQ09ESU5HU19GVU5DKFB1dCkgfTsKLSAgICAgICAgcHV0RnVuY18gPSBmW3R5cGVfXTsK
LQotICAgICAgICBpZiAocHV0Qk9NKQotICAgICAgICAgICAgUHV0Qk9NKCk7Ci0gICAgfQotCi0g
ICAgVVRGVHlwZSBHZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gdHlwZV87IH0KLQotICAgIHZvaWQg
UHV0KENoIGMpIHsgcHV0RnVuY18oKm9zXywgYyk7IH0KLSAgICB2b2lkIEZsdXNoKCkgeyBvc18t
PkZsdXNoKCk7IH0gCi0KLSAgICAvLyBOb3QgaW1wbGVtZW50ZWQKLSAgICBDaCBQZWVrKCkgY29u
c3QgeyBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsgfQotICAgIENoIFRha2UoKSB7IFJBUElESlNP
Tl9BU1NFUlQoZmFsc2UpOyB9Ci0gICAgc2l6ZV90IFRlbGwoKSBjb25zdCB7IFJBUElESlNPTl9B
U1NFUlQoZmFsc2UpOyByZXR1cm4gMDsgfQotICAgIENoKiBQdXRCZWdpbigpIHsgUkFQSURKU09O
X0FTU0VSVChmYWxzZSk7IHJldHVybiAwOyB9Ci0gICAgc2l6ZV90IFB1dEVuZChDaCopIHsgUkFQ
SURKU09OX0FTU0VSVChmYWxzZSk7IHJldHVybiAwOyB9Ci0KLXByaXZhdGU6Ci0gICAgQXV0b1VU
Rk91dHB1dFN0cmVhbShjb25zdCBBdXRvVVRGT3V0cHV0U3RyZWFtJik7Ci0gICAgQXV0b1VURk91
dHB1dFN0cmVhbSYgb3BlcmF0b3I9KGNvbnN0IEF1dG9VVEZPdXRwdXRTdHJlYW0mKTsKLQotICAg
IHZvaWQgUHV0Qk9NKCkgeyAKLSAgICAgICAgdHlwZWRlZiB2b2lkICgqUHV0Qk9NRnVuYykoT3V0
cHV0Qnl0ZVN0cmVhbSYpOwotICAgICAgICBzdGF0aWMgY29uc3QgUHV0Qk9NRnVuYyBmW10gPSB7
IFJBUElESlNPTl9FTkNPRElOR1NfRlVOQyhQdXRCT00pIH07Ci0gICAgICAgIGZbdHlwZV9dKCpv
c18pOwotICAgIH0KLQotICAgIHR5cGVkZWYgdm9pZCAoKlB1dEZ1bmMpKE91dHB1dEJ5dGVTdHJl
YW0mLCBDaCk7Ci0KLSAgICBPdXRwdXRCeXRlU3RyZWFtKiBvc187Ci0gICAgVVRGVHlwZSB0eXBl
XzsKLSAgICBQdXRGdW5jIHB1dEZ1bmNfOwotfTsKLQotI3VuZGVmIFJBUElESlNPTl9FTkNPRElO
R1NfRlVOQwotCi1SQVBJREpTT05fTkFNRVNQQUNFX0VORAotCi0jaWZkZWYgX19HTlVDX18KLVJB
UElESlNPTl9ESUFHX1BPUAotI2VuZGlmCi0KLSNlbmRpZiAvLyBSQVBJREpTT05fRklMRVNUUkVB
TV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJk
X3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9lbmNvZGluZ3MuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9y
YXBpZGpzb24vZW5jb2RpbmdzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxNTk1
ZjcwYzgzLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2VuY29kaW5ncy5oCisr
KyAvZGV2L251bGwKQEAgLTEsNjMwICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxv
IFlpcAotLy8KLS8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl
LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLS8vIG9mIHRoaXMgc29mdHdhcmUgYW5k
IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFs
Ci0vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv
dXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi0vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us
IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi0vLyBjb3BpZXMg
b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdh
cmUgaXMKLS8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnM6Ci0vLwotLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy
bWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLS8vIGFsbCBjb3BpZXMgb3Igc3Vi
c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotLy8KLS8vIFRIRSBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT
IE9SCi0vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLS8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotLy8gQVVUSE9S
UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP
UiBPVEhFUgotLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg
VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLS8vIE9VVCBPRiBPUiBJTiBDT05ORUNU
SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KLS8v
IFRIRSBTT0ZUV0FSRS4KLQotI2lmbmRlZiBSQVBJREpTT05fRU5DT0RJTkdTX0hfCi0jZGVmaW5l
IFJBUElESlNPTl9FTkNPRElOR1NfSF8KLQotI2luY2x1ZGUgInJhcGlkanNvbi5oIgotCi0jaWZk
ZWYgX01TQ19WRVIKLVJBUElESlNPTl9ESUFHX1BVU0gKLVJBUElESlNPTl9ESUFHX09GRig0MjQ0
KSAvLyBjb252ZXJzaW9uIGZyb20gJ3R5cGUxJyB0byAndHlwZTInLCBwb3NzaWJsZSBsb3NzIG9m
IGRhdGEKLVJBUElESlNPTl9ESUFHX09GRig0NzAyKSAgLy8gdW5yZWFjaGFibGUgY29kZQotI2Vs
aWYgZGVmaW5lZChfX0dOVUNfXykKLVJBUElESlNPTl9ESUFHX1BVU0gKLVJBUElESlNPTl9ESUFH
X09GRihlZmZjKyspCi0jZW5kaWYKLQotUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgotCi0vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vCi0vLyBFbmNvZGluZwotCi0vKiEgXGNsYXNzIHJhcGlkanNvbjo6
RW5jb2RpbmcKLSAgICBcYnJpZWYgQ29uY2VwdCBmb3IgZW5jb2Rpbmcgb2YgVW5pY29kZSBjaGFy
YWN0ZXJzLgotCi1cY29kZQotY29uY2VwdCBFbmNvZGluZyB7Ci0gICAgdHlwZW5hbWUgQ2g7ICAg
IC8vISBUeXBlIG9mIGNoYXJhY3Rlci4gQSAiY2hhcmFjdGVyIiBpcyBhY3R1YWxseSBhIGNvZGUg
dW5pdCBpbiB1bmljb2RlJ3MgZGVmaW5pdGlvbi4KLQotICAgIGVudW0geyBzdXBwb3J0VW5pY29k
ZSA9IDEgfTsgLy8gb3IgMCBpZiBub3Qgc3VwcG9ydGluZyB1bmljb2RlCi0KLSAgICAvLyEgXGJy
aWVmIEVuY29kZSBhIFVuaWNvZGUgY29kZXBvaW50IHRvIGFuIG91dHB1dCBzdHJlYW0uCi0gICAg
Ly8hIFxwYXJhbSBvcyBPdXRwdXQgc3RyZWFtLgotICAgIC8vISBccGFyYW0gY29kZXBvaW50IEFu
IHVuaWNvZGUgY29kZXBvaW50LCByYW5naW5nIGZyb20gMHgwIHRvIDB4MTBGRkZGIGluY2x1c2l2
ZWx5LgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dFN0cmVhbT4KLSAgICBzdGF0aWMgdm9p
ZCBFbmNvZGUoT3V0cHV0U3RyZWFtJiBvcywgdW5zaWduZWQgY29kZXBvaW50KTsKLQotICAgIC8v
ISBcYnJpZWYgRGVjb2RlIGEgVW5pY29kZSBjb2RlcG9pbnQgZnJvbSBhbiBpbnB1dCBzdHJlYW0u
Ci0gICAgLy8hIFxwYXJhbSBpcyBJbnB1dCBzdHJlYW0uCi0gICAgLy8hIFxwYXJhbSBjb2RlcG9p
bnQgT3V0cHV0IG9mIHRoZSB1bmljb2RlIGNvZGVwb2ludC4KLSAgICAvLyEgXHJldHVybiB0cnVl
IGlmIGEgdmFsaWQgY29kZXBvaW50IGNhbiBiZSBkZWNvZGVkIGZyb20gdGhlIHN0cmVhbS4KLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRTdHJlYW0+Ci0gICAgc3RhdGljIGJvb2wgRGVjb2Rl
KElucHV0U3RyZWFtJiBpcywgdW5zaWduZWQqIGNvZGVwb2ludCk7Ci0KLSAgICAvLyEgXGJyaWVm
IFZhbGlkYXRlIG9uZSBVbmljb2RlIGNvZGVwb2ludCBmcm9tIGFuIGVuY29kZWQgc3RyZWFtLgot
ICAgIC8vISBccGFyYW0gaXMgSW5wdXQgc3RyZWFtIHRvIG9idGFpbiBjb2RlcG9pbnQuCi0gICAg
Ly8hIFxwYXJhbSBvcyBPdXRwdXQgZm9yIGNvcHlpbmcgb25lIGNvZGVwb2ludC4KLSAgICAvLyEg
XHJldHVybiB0cnVlIGlmIGl0IGlzIHZhbGlkLgotICAgIC8vISBcbm90ZSBUaGlzIGZ1bmN0aW9u
IGp1c3QgdmFsaWRhdGluZyBhbmQgY29weWluZyB0aGUgY29kZXBvaW50IHdpdGhvdXQgYWN0dWFs
bHkgZGVjb2RlIGl0LgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dFN0cmVhbSwgdHlwZW5h
bWUgT3V0cHV0U3RyZWFtPgotICAgIHN0YXRpYyBib29sIFZhbGlkYXRlKElucHV0U3RyZWFtJiBp
cywgT3V0cHV0U3RyZWFtJiBvcyk7Ci0KLSAgICAvLyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBh
cmUgZGVhbCB3aXRoIGJ5dGUgc3RyZWFtcy4KLQotICAgIC8vISBUYWtlIGEgY2hhcmFjdGVyIGZy
b20gaW5wdXQgYnl0ZSBzdHJlYW0sIHNraXAgQk9NIGlmIGV4aXN0LgotICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW0+Ci0gICAgc3RhdGljIENoYXJUeXBlIFRha2VCT00oSW5w
dXRCeXRlU3RyZWFtJiBpcyk7Ci0KLSAgICAvLyEgVGFrZSBhIGNoYXJhY3RlciBmcm9tIGlucHV0
IGJ5dGUgc3RyZWFtLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW0+Ci0g
ICAgc3RhdGljIENoIFRha2UoSW5wdXRCeXRlU3RyZWFtJiBpcyk7Ci0KLSAgICAvLyEgUHV0IEJP
TSB0byBvdXRwdXQgYnl0ZSBzdHJlYW0uCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE91dHB1dEJ5
dGVTdHJlYW0+Ci0gICAgc3RhdGljIHZvaWQgUHV0Qk9NKE91dHB1dEJ5dGVTdHJlYW0mIG9zKTsK
LQotICAgIC8vISBQdXQgYSBjaGFyYWN0ZXIgdG8gb3V0cHV0IGJ5dGUgc3RyZWFtLgotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtPgotICAgIHN0YXRpYyB2b2lkIFB1dChP
dXRwdXRCeXRlU3RyZWFtJiBvcywgQ2ggYyk7Ci19OwotXGVuZGNvZGUKLSovCi0KLS8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KLS8vIFVURjgKLQotLy8hIFVURi04IGVuY29kaW5nLgotLyohIGh0dHA6
Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVVRGLTgKLSAgICBodHRwOi8vdG9vbHMuaWV0Zi5vcmcv
aHRtbC9yZmMzNjI5Ci0gICAgXHRwYXJhbSBDaGFyVHlwZSBDb2RlIHVuaXQgZm9yIHN0b3Jpbmcg
OC1iaXQgVVRGLTggZGF0YS4gRGVmYXVsdCBpcyBjaGFyLgotICAgIFxub3RlIGltcGxlbWVudHMg
RW5jb2RpbmcgY29uY2VwdAotKi8KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlID0gY2hhcj4K
LXN0cnVjdCBVVEY4IHsKLSAgICB0eXBlZGVmIENoYXJUeXBlIENoOwotCi0gICAgZW51bSB7IHN1
cHBvcnRVbmljb2RlID0gMSB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgT3V0cHV0U3RyZWFt
PgotICAgIHN0YXRpYyB2b2lkIEVuY29kZShPdXRwdXRTdHJlYW0mIG9zLCB1bnNpZ25lZCBjb2Rl
cG9pbnQpIHsKLSAgICAgICAgaWYgKGNvZGVwb2ludCA8PSAweDdGKSAKLSAgICAgICAgICAgIG9z
LlB1dChzdGF0aWNfY2FzdDxDaD4oY29kZXBvaW50ICYgMHhGRikpOwotICAgICAgICBlbHNlIGlm
IChjb2RlcG9pbnQgPD0gMHg3RkYpIHsKLSAgICAgICAgICAgIG9zLlB1dChzdGF0aWNfY2FzdDxD
aD4oMHhDMCB8ICgoY29kZXBvaW50ID4+IDYpICYgMHhGRikpKTsKLSAgICAgICAgICAgIG9zLlB1
dChzdGF0aWNfY2FzdDxDaD4oMHg4MCB8ICgoY29kZXBvaW50ICYgMHgzRikpKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgZWxzZSBpZiAoY29kZXBvaW50IDw9IDB4RkZGRikgewotICAgICAgICAgICAg
b3MuUHV0KHN0YXRpY19jYXN0PENoPigweEUwIHwgKChjb2RlcG9pbnQgPj4gMTIpICYgMHhGRikp
KTsKLSAgICAgICAgICAgIG9zLlB1dChzdGF0aWNfY2FzdDxDaD4oMHg4MCB8ICgoY29kZXBvaW50
ID4+IDYpICYgMHgzRikpKTsKLSAgICAgICAgICAgIG9zLlB1dChzdGF0aWNfY2FzdDxDaD4oMHg4
MCB8IChjb2RlcG9pbnQgJiAweDNGKSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgUkFQSURKU09OX0FTU0VSVChjb2RlcG9pbnQgPD0gMHgxMEZGRkYpOwotICAgICAg
ICAgICAgb3MuUHV0KHN0YXRpY19jYXN0PENoPigweEYwIHwgKChjb2RlcG9pbnQgPj4gMTgpICYg
MHhGRikpKTsKLSAgICAgICAgICAgIG9zLlB1dChzdGF0aWNfY2FzdDxDaD4oMHg4MCB8ICgoY29k
ZXBvaW50ID4+IDEyKSAmIDB4M0YpKSk7Ci0gICAgICAgICAgICBvcy5QdXQoc3RhdGljX2Nhc3Q8
Q2g+KDB4ODAgfCAoKGNvZGVwb2ludCA+PiA2KSAmIDB4M0YpKSk7Ci0gICAgICAgICAgICBvcy5Q
dXQoc3RhdGljX2Nhc3Q8Q2g+KDB4ODAgfCAoY29kZXBvaW50ICYgMHgzRikpKTsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dFN0cmVhbT4KLSAgICBzdGF0
aWMgYm9vbCBEZWNvZGUoSW5wdXRTdHJlYW0mIGlzLCB1bnNpZ25lZCogY29kZXBvaW50KSB7Ci0j
ZGVmaW5lIENPUFkoKSBjID0gaXMuVGFrZSgpOyAqY29kZXBvaW50ID0gKCpjb2RlcG9pbnQgPDwg
NikgfCAoKHVuc2lnbmVkIGNoYXIpYyAmIDB4M0Z1KQotI2RlZmluZSBUUkFOUyhtYXNrKSByZXN1
bHQgJj0gKChHZXRSYW5nZSgodW5zaWduZWQgY2hhciljKSAmIG1hc2spICE9IDApCi0jZGVmaW5l
IFRBSUwoKSBDT1BZKCk7IFRSQU5TKDB4NzApCi0gICAgICAgIENoIGMgPSBpcy5UYWtlKCk7Ci0g
ICAgICAgIGlmICghKGMgJiAweDgwKSkgewotICAgICAgICAgICAgKmNvZGVwb2ludCA9ICh1bnNp
Z25lZCBjaGFyKWM7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHVuc2lnbmVkIGNoYXIgdHlwZSA9IEdldFJhbmdlKCh1bnNpZ25lZCBjaGFyKWMpOwotICAg
ICAgICAqY29kZXBvaW50ID0gKDB4RkYgPj4gdHlwZSkgJiAodW5zaWduZWQgY2hhciljOwotICAg
ICAgICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAg
ICBjYXNlIDI6IFRBSUwoKTsgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgY2FzZSAzOiBUQUlMKCk7
IFRBSUwoKTsgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgY2FzZSA0OiBDT1BZKCk7IFRSQU5TKDB4
NTApOyBUQUlMKCk7IHJldHVybiByZXN1bHQ7Ci0gICAgICAgIGNhc2UgNTogQ09QWSgpOyBUUkFO
UygweDEwKTsgVEFJTCgpOyBUQUlMKCk7IHJldHVybiByZXN1bHQ7Ci0gICAgICAgIGNhc2UgNjog
VEFJTCgpOyBUQUlMKCk7IFRBSUwoKTsgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgY2FzZSAxMDog
Q09QWSgpOyBUUkFOUygweDIwKTsgVEFJTCgpOyByZXR1cm4gcmVzdWx0OwotICAgICAgICBjYXNl
IDExOiBDT1BZKCk7IFRSQU5TKDB4NjApOyBUQUlMKCk7IFRBSUwoKTsgcmV0dXJuIHJlc3VsdDsK
LSAgICAgICAgZGVmYXVsdDogcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0jdW5kZWYgQ09QWQot
I3VuZGVmIFRSQU5TCi0jdW5kZWYgVEFJTAotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBJbnB1dFN0cmVhbSwgdHlwZW5hbWUgT3V0cHV0U3RyZWFtPgotICAgIHN0YXRpYyBib29sIFZh
bGlkYXRlKElucHV0U3RyZWFtJiBpcywgT3V0cHV0U3RyZWFtJiBvcykgewotI2RlZmluZSBDT1BZ
KCkgb3MuUHV0KGMgPSBpcy5UYWtlKCkpCi0jZGVmaW5lIFRSQU5TKG1hc2spIHJlc3VsdCAmPSAo
KEdldFJhbmdlKCh1bnNpZ25lZCBjaGFyKWMpICYgbWFzaykgIT0gMCkKLSNkZWZpbmUgVEFJTCgp
IENPUFkoKTsgVFJBTlMoMHg3MCkKLSAgICAgICAgQ2ggYzsKLSAgICAgICAgQ09QWSgpOwotICAg
ICAgICBpZiAoIShjICYgMHg4MCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAg
ICBib29sIHJlc3VsdCA9IHRydWU7Ci0gICAgICAgIHN3aXRjaCAoR2V0UmFuZ2UoKHVuc2lnbmVk
IGNoYXIpYykpIHsKLSAgICAgICAgY2FzZSAyOiBUQUlMKCk7IHJldHVybiByZXN1bHQ7Ci0gICAg
ICAgIGNhc2UgMzogVEFJTCgpOyBUQUlMKCk7IHJldHVybiByZXN1bHQ7Ci0gICAgICAgIGNhc2Ug
NDogQ09QWSgpOyBUUkFOUygweDUwKTsgVEFJTCgpOyByZXR1cm4gcmVzdWx0OwotICAgICAgICBj
YXNlIDU6IENPUFkoKTsgVFJBTlMoMHgxMCk7IFRBSUwoKTsgVEFJTCgpOyByZXR1cm4gcmVzdWx0
OwotICAgICAgICBjYXNlIDY6IFRBSUwoKTsgVEFJTCgpOyBUQUlMKCk7IHJldHVybiByZXN1bHQ7
Ci0gICAgICAgIGNhc2UgMTA6IENPUFkoKTsgVFJBTlMoMHgyMCk7IFRBSUwoKTsgcmV0dXJuIHJl
c3VsdDsKLSAgICAgICAgY2FzZSAxMTogQ09QWSgpOyBUUkFOUygweDYwKTsgVEFJTCgpOyBUQUlM
KCk7IHJldHVybiByZXN1bHQ7Ci0gICAgICAgIGRlZmF1bHQ6IHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQotI3VuZGVmIENPUFkKLSN1bmRlZiBUUkFOUwotI3VuZGVmIFRBSUwKLSAgICB9Ci0KLSAg
ICBzdGF0aWMgdW5zaWduZWQgY2hhciBHZXRSYW5nZSh1bnNpZ25lZCBjaGFyIGMpIHsKLSAgICAg
ICAgLy8gUmVmZXJyaW5nIHRvIERGQSBvZiBodHRwOi8vYmpvZXJuLmhvZWhybWFubi5kZS91dGYt
OC9kZWNvZGVyL2RmYS8KLSAgICAgICAgLy8gV2l0aCBuZXcgbWFwcGluZyAxIC0+IDB4MTAsIDcg
LT4gMHgyMCwgOSAtPiAweDQwLCBzdWNoIHRoYXQgQU5EIG9wZXJhdGlvbiBjYW4gdGVzdCBtdWx0
aXBsZSB0eXBlcy4KLSAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgdHlwZVtdID0g
ewotICAgICAgICAgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwgIDAsMCwwLDAs
MCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgICAgICAgICAwLDAsMCwwLDAsMCwwLDAsMCww
LDAsMCwwLDAsMCwwLCAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAgICAg
ICAgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsICAwLDAsMCwwLDAsMCwwLDAsMCww
LDAsMCwwLDAsMCwwLAotICAgICAgICAgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAs
MCwgIDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCi0gICAgICAgICAgICAweDEwLDB4
MTAsMHgxMCwweDEwLDB4MTAsMHgxMCwweDEwLDB4MTAsMHgxMCwweDEwLDB4MTAsMHgxMCwweDEw
LDB4MTAsMHgxMCwweDEwLAotICAgICAgICAgICAgMHg0MCwweDQwLDB4NDAsMHg0MCwweDQwLDB4
NDAsMHg0MCwweDQwLDB4NDAsMHg0MCwweDQwLDB4NDAsMHg0MCwweDQwLDB4NDAsMHg0MCwKLSAg
ICAgICAgICAgIDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4
MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsCi0gICAgICAgICAgICAweDIwLDB4MjAs
MHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4MjAsMHgyMCwweDIwLDB4
MjAsMHgyMCwweDIwLAotICAgICAgICAgICAgOCw4LDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIs
MiwgIDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsCi0gICAgICAgICAgICAxMCwzLDMs
MywzLDMsMywzLDMsMywzLDMsMyw0LDMsMywgMTEsNiw2LDYsNSw4LDgsOCw4LDgsOCw4LDgsOCw4
LDgsCi0gICAgICAgIH07Ci0gICAgICAgIHJldHVybiB0eXBlW2NdOwotICAgIH0KLQotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW0+Ci0gICAgc3RhdGljIENoYXJUeXBlIFRh
a2VCT00oSW5wdXRCeXRlU3RyZWFtJiBpcykgewotICAgICAgICBSQVBJREpTT05fU1RBVElDX0FT
U0VSVChzaXplb2YodHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtOjpDaCkgPT0gMSk7Ci0gICAgICAg
IENoIGMgPSBUYWtlKGlzKTsKLSAgICAgICAgaWYgKCh1bnNpZ25lZCBjaGFyKWMgIT0gMHhFRnUp
IHJldHVybiBjOwotICAgICAgICBjID0gaXMuVGFrZSgpOwotICAgICAgICBpZiAoKHVuc2lnbmVk
IGNoYXIpYyAhPSAweEJCdSkgcmV0dXJuIGM7Ci0gICAgICAgIGMgPSBpcy5UYWtlKCk7Ci0gICAg
ICAgIGlmICgodW5zaWduZWQgY2hhciljICE9IDB4QkZ1KSByZXR1cm4gYzsKLSAgICAgICAgYyA9
IGlzLlRha2UoKTsKLSAgICAgICAgcmV0dXJuIGM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KLSAgICBzdGF0aWMgQ2ggVGFrZShJbnB1dEJ5dGVTdHJl
YW0mIGlzKSB7Ci0gICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFt
ZSBJbnB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKLSAgICAgICAgcmV0dXJuIGlzLlRha2UoKTsK
LSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbT4KLSAgICBz
dGF0aWMgdm9pZCBQdXRCT00oT3V0cHV0Qnl0ZVN0cmVhbSYgb3MpIHsKLSAgICAgICAgUkFQSURK
U09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW06OkNoKSA9
PSAxKTsKLSAgICAgICAgb3MuUHV0KDB4RUZ1KTsgb3MuUHV0KDB4QkJ1KTsgb3MuUHV0KDB4QkZ1
KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbT4KLSAg
ICBzdGF0aWMgdm9pZCBQdXQoT3V0cHV0Qnl0ZVN0cmVhbSYgb3MsIENoIGMpIHsKLSAgICAgICAg
UkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW06
OkNoKSA9PSAxKTsKLSAgICAgICAgb3MuUHV0KHN0YXRpY19jYXN0PHR5cGVuYW1lIE91dHB1dEJ5
dGVTdHJlYW06OkNoPihjKSk7Ci0gICAgfQotfTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwot
Ly8gVVRGMTYKLQotLy8hIFVURi0xNiBlbmNvZGluZy4KLS8qISBodHRwOi8vZW4ud2lraXBlZGlh
Lm9yZy93aWtpL1VURi0xNgotICAgIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzI3ODEK
LSAgICBcdHBhcmFtIENoYXJUeXBlIFR5cGUgZm9yIHN0b3JpbmcgMTYtYml0IFVURi0xNiBkYXRh
LiBEZWZhdWx0IGlzIHdjaGFyX3QuIEMrKzExIG1heSB1c2UgY2hhcjE2X3QgaW5zdGVhZC4KLSAg
ICBcbm90ZSBpbXBsZW1lbnRzIEVuY29kaW5nIGNvbmNlcHQKLQotICAgIFxub3RlIEZvciBpbi1t
ZW1vcnkgYWNjZXNzLCBubyBuZWVkIHRvIGNvbmNlcm4gZW5kaWFubmVzcy4gVGhlIGNvZGUgdW5p
dHMgYW5kIGNvZGUgcG9pbnRzIGFyZSByZXByZXNlbnRlZCBieSBDUFUncyBlbmRpYW5uZXNzLgot
ICAgIEZvciBzdHJlYW1pbmcsIHVzZSBVVEYxNkxFIGFuZCBVVEYxNkJFLCB3aGljaCBoYW5kbGUg
ZW5kaWFubmVzcy4KLSovCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSA9IHdjaGFyX3Q+Ci1z
dHJ1Y3QgVVRGMTYgewotICAgIHR5cGVkZWYgQ2hhclR5cGUgQ2g7Ci0gICAgUkFQSURKU09OX1NU
QVRJQ19BU1NFUlQoc2l6ZW9mKENoKSA+PSAyKTsKLQotICAgIGVudW0geyBzdXBwb3J0VW5pY29k
ZSA9IDEgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE91dHB1dFN0cmVhbT4KLSAgICBzdGF0
aWMgdm9pZCBFbmNvZGUoT3V0cHV0U3RyZWFtJiBvcywgdW5zaWduZWQgY29kZXBvaW50KSB7Ci0g
ICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBPdXRwdXRTdHJl
YW06OkNoKSA+PSAyKTsKLSAgICAgICAgaWYgKGNvZGVwb2ludCA8PSAweEZGRkYpIHsKLSAgICAg
ICAgICAgIFJBUElESlNPTl9BU1NFUlQoY29kZXBvaW50IDwgMHhEODAwIHx8IGNvZGVwb2ludCA+
IDB4REZGRik7IC8vIENvZGUgcG9pbnQgaXRzZWxmIGNhbm5vdCBiZSBzdXJyb2dhdGUgcGFpciAK
LSAgICAgICAgICAgIG9zLlB1dChzdGF0aWNfY2FzdDx0eXBlbmFtZSBPdXRwdXRTdHJlYW06OkNo
Pihjb2RlcG9pbnQpKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJB
UElESlNPTl9BU1NFUlQoY29kZXBvaW50IDw9IDB4MTBGRkZGKTsKLSAgICAgICAgICAgIHVuc2ln
bmVkIHYgPSBjb2RlcG9pbnQgLSAweDEwMDAwOwotICAgICAgICAgICAgb3MuUHV0KHN0YXRpY19j
YXN0PHR5cGVuYW1lIE91dHB1dFN0cmVhbTo6Q2g+KCh2ID4+IDEwKSB8IDB4RDgwMCkpOwotICAg
ICAgICAgICAgb3MuUHV0KCh2ICYgMHgzRkYpIHwgMHhEQzAwKTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dFN0cmVhbT4KLSAgICBzdGF0aWMgYm9vbCBE
ZWNvZGUoSW5wdXRTdHJlYW0mIGlzLCB1bnNpZ25lZCogY29kZXBvaW50KSB7Ci0gICAgICAgIFJB
UElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBJbnB1dFN0cmVhbTo6Q2gpID49
IDIpOwotICAgICAgICBDaCBjID0gaXMuVGFrZSgpOwotICAgICAgICBpZiAoYyA8IDB4RDgwMCB8
fCBjID4gMHhERkZGKSB7Ci0gICAgICAgICAgICAqY29kZXBvaW50ID0gYzsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGMgPD0gMHhEQkZGKSB7
Ci0gICAgICAgICAgICAqY29kZXBvaW50ID0gKGMgJiAweDNGRikgPDwgMTA7Ci0gICAgICAgICAg
ICBjID0gaXMuVGFrZSgpOwotICAgICAgICAgICAgKmNvZGVwb2ludCB8PSAoYyAmIDB4M0ZGKTsK
LSAgICAgICAgICAgICpjb2RlcG9pbnQgKz0gMHgxMDAwMDsKLSAgICAgICAgICAgIHJldHVybiBj
ID49IDB4REMwMCAmJiBjIDw9IDB4REZGRjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0U3RyZWFtLCB0eXBlbmFt
ZSBPdXRwdXRTdHJlYW0+Ci0gICAgc3RhdGljIGJvb2wgVmFsaWRhdGUoSW5wdXRTdHJlYW0mIGlz
LCBPdXRwdXRTdHJlYW0mIG9zKSB7Ci0gICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNp
emVvZih0eXBlbmFtZSBJbnB1dFN0cmVhbTo6Q2gpID49IDIpOwotICAgICAgICBSQVBJREpTT05f
U1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0U3RyZWFtOjpDaCkgPj0gMik7Ci0g
ICAgICAgIENoIGM7Ci0gICAgICAgIG9zLlB1dChjID0gaXMuVGFrZSgpKTsKLSAgICAgICAgaWYg
KGMgPCAweEQ4MDAgfHwgYyA+IDB4REZGRikKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAg
ICAgICBlbHNlIGlmIChjIDw9IDB4REJGRikgewotICAgICAgICAgICAgb3MuUHV0KGMgPSBpcy5U
YWtlKCkpOwotICAgICAgICAgICAgcmV0dXJuIGMgPj0gMHhEQzAwICYmIGMgPD0gMHhERkZGOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19OwotCi0vLyEgVVRGLTE2
IGxpdHRsZSBlbmRpYW4gZW5jb2RpbmcuCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSA9IHdj
aGFyX3Q+Ci1zdHJ1Y3QgVVRGMTZMRSA6IFVURjE2PENoYXJUeXBlPiB7Ci0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KLSAgICBzdGF0aWMgQ2hhclR5cGUgVGFrZUJPTShJ
bnB1dEJ5dGVTdHJlYW0mIGlzKSB7Ci0gICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNp
emVvZih0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKLSAgICAgICAgQ2hhclR5
cGUgYyA9IFRha2UoaXMpOwotICAgICAgICByZXR1cm4gKHVuc2lnbmVkIHNob3J0KWMgPT0gMHhG
RUZGdSA/IFRha2UoaXMpIDogYzsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5w
dXRCeXRlU3RyZWFtPgotICAgIHN0YXRpYyBDaGFyVHlwZSBUYWtlKElucHV0Qnl0ZVN0cmVhbSYg
aXMpIHsKLSAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIElu
cHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOwotICAgICAgICBDaGFyVHlwZSBjID0gKHVuc2lnbmVk
IGNoYXIpaXMuVGFrZSgpOwotICAgICAgICBjIHw9ICh1bnNpZ25lZCBjaGFyKWlzLlRha2UoKSA8
PCA4OwotICAgICAgICByZXR1cm4gYzsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
T3V0cHV0Qnl0ZVN0cmVhbT4KLSAgICBzdGF0aWMgdm9pZCBQdXRCT00oT3V0cHV0Qnl0ZVN0cmVh
bSYgb3MpIHsKLSAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1l
IE91dHB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKLSAgICAgICAgb3MuUHV0KDB4RkZ1KTsgb3Mu
UHV0KDB4RkV1KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0
cmVhbT4KLSAgICBzdGF0aWMgdm9pZCBQdXQoT3V0cHV0Qnl0ZVN0cmVhbSYgb3MsIENoYXJUeXBl
IGMpIHsKLSAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIE91
dHB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKLSAgICAgICAgb3MuUHV0KGMgJiAweEZGdSk7Ci0g
ICAgICAgIG9zLlB1dCgoYyA+PiA4KSAmIDB4RkZ1KTsKLSAgICB9Ci19OwotCi0vLyEgVVRGLTE2
IGJpZyBlbmRpYW4gZW5jb2RpbmcuCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSA9IHdjaGFy
X3Q+Ci1zdHJ1Y3QgVVRGMTZCRSA6IFVURjE2PENoYXJUeXBlPiB7Ci0gICAgdGVtcGxhdGUgPHR5
cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KLSAgICBzdGF0aWMgQ2hhclR5cGUgVGFrZUJPTShJbnB1
dEJ5dGVTdHJlYW0mIGlzKSB7Ci0gICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVv
Zih0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKLSAgICAgICAgQ2hhclR5cGUg
YyA9IFRha2UoaXMpOwotICAgICAgICByZXR1cm4gKHVuc2lnbmVkIHNob3J0KWMgPT0gMHhGRUZG
dSA/IFRha2UoaXMpIDogYzsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRC
eXRlU3RyZWFtPgotICAgIHN0YXRpYyBDaGFyVHlwZSBUYWtlKElucHV0Qnl0ZVN0cmVhbSYgaXMp
IHsKLSAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIElucHV0
Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOwotICAgICAgICBDaGFyVHlwZSBjID0gKHVuc2lnbmVkIGNo
YXIpaXMuVGFrZSgpIDw8IDg7Ci0gICAgICAgIGMgfD0gKHVuc2lnbmVkIGNoYXIpaXMuVGFrZSgp
OwotICAgICAgICByZXR1cm4gYzsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0
cHV0Qnl0ZVN0cmVhbT4KLSAgICBzdGF0aWMgdm9pZCBQdXRCT00oT3V0cHV0Qnl0ZVN0cmVhbSYg
b3MpIHsKLSAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIE91
dHB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKLSAgICAgICAgb3MuUHV0KDB4RkV1KTsgb3MuUHV0
KDB4RkZ1KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVh
bT4KLSAgICBzdGF0aWMgdm9pZCBQdXQoT3V0cHV0Qnl0ZVN0cmVhbSYgb3MsIENoYXJUeXBlIGMp
IHsKLSAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIE91dHB1
dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKLSAgICAgICAgb3MuUHV0KChjID4+IDgpICYgMHhGRnUp
OwotICAgICAgICBvcy5QdXQoYyAmIDB4RkZ1KTsKLSAgICB9Ci19OwotCi0vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCi0vLyBVVEYzMgotCi0vLyEgVVRGLTMyIGVuY29kaW5nLiAKLS8qISBodHRwOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL1VURi0zMgotICAgIFx0cGFyYW0gQ2hhclR5cGUgVHlwZSBm
b3Igc3RvcmluZyAzMi1iaXQgVVRGLTMyIGRhdGEuIERlZmF1bHQgaXMgdW5zaWduZWQuIEMrKzEx
IG1heSB1c2UgY2hhcjMyX3QgaW5zdGVhZC4KLSAgICBcbm90ZSBpbXBsZW1lbnRzIEVuY29kaW5n
IGNvbmNlcHQKLQotICAgIFxub3RlIEZvciBpbi1tZW1vcnkgYWNjZXNzLCBubyBuZWVkIHRvIGNv
bmNlcm4gZW5kaWFubmVzcy4gVGhlIGNvZGUgdW5pdHMgYW5kIGNvZGUgcG9pbnRzIGFyZSByZXBy
ZXNlbnRlZCBieSBDUFUncyBlbmRpYW5uZXNzLgotICAgIEZvciBzdHJlYW1pbmcsIHVzZSBVVEYz
MkxFIGFuZCBVVEYzMkJFLCB3aGljaCBoYW5kbGUgZW5kaWFubmVzcy4KLSovCi10ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyVHlwZSA9IHVuc2lnbmVkPgotc3RydWN0IFVURjMyIHsKLSAgICB0eXBlZGVm
IENoYXJUeXBlIENoOwotICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZihDaCkgPj0g
NCk7Ci0KLSAgICBlbnVtIHsgc3VwcG9ydFVuaWNvZGUgPSAxIH07Ci0KLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBPdXRwdXRTdHJlYW0+Ci0gICAgc3RhdGljIHZvaWQgRW5jb2RlKE91dHB1dFN0cmVh
bSYgb3MsIHVuc2lnbmVkIGNvZGVwb2ludCkgewotICAgICAgICBSQVBJREpTT05fU1RBVElDX0FT
U0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0U3RyZWFtOjpDaCkgPj0gNCk7Ci0gICAgICAgIFJB
UElESlNPTl9BU1NFUlQoY29kZXBvaW50IDw9IDB4MTBGRkZGKTsKLSAgICAgICAgb3MuUHV0KGNv
ZGVwb2ludCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0U3RyZWFtPgot
ICAgIHN0YXRpYyBib29sIERlY29kZShJbnB1dFN0cmVhbSYgaXMsIHVuc2lnbmVkKiBjb2RlcG9p
bnQpIHsKLSAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIElu
cHV0U3RyZWFtOjpDaCkgPj0gNCk7Ci0gICAgICAgIENoIGMgPSBpcy5UYWtlKCk7Ci0gICAgICAg
ICpjb2RlcG9pbnQgPSBjOwotICAgICAgICByZXR1cm4gYyA8PSAweDEwRkZGRjsKLSAgICB9Ci0K
LSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRTdHJlYW0sIHR5cGVuYW1lIE91dHB1dFN0cmVh
bT4KLSAgICBzdGF0aWMgYm9vbCBWYWxpZGF0ZShJbnB1dFN0cmVhbSYgaXMsIE91dHB1dFN0cmVh
bSYgb3MpIHsKLSAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1l
IElucHV0U3RyZWFtOjpDaCkgPj0gNCk7Ci0gICAgICAgIENoIGM7Ci0gICAgICAgIG9zLlB1dChj
ID0gaXMuVGFrZSgpKTsKLSAgICAgICAgcmV0dXJuIGMgPD0gMHgxMEZGRkY7Ci0gICAgfQotfTsK
LQotLy8hIFVURi0zMiBsaXR0bGUgZW5kaWFuIGVub2NvZGluZy4KLXRlbXBsYXRlPHR5cGVuYW1l
IENoYXJUeXBlID0gdW5zaWduZWQ+Ci1zdHJ1Y3QgVVRGMzJMRSA6IFVURjMyPENoYXJUeXBlPiB7
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KLSAgICBzdGF0aWMgQ2hh
clR5cGUgVGFrZUJPTShJbnB1dEJ5dGVTdHJlYW0mIGlzKSB7Ci0gICAgICAgIFJBUElESlNPTl9T
VEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsK
LSAgICAgICAgQ2hhclR5cGUgYyA9IFRha2UoaXMpOwotICAgICAgICByZXR1cm4gKHVuc2lnbmVk
KWMgPT0gMHgwMDAwRkVGRnUgPyBUYWtlKGlzKSA6IGM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUg
PHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KLSAgICBzdGF0aWMgQ2hhclR5cGUgVGFrZShJbnB1
dEJ5dGVTdHJlYW0mIGlzKSB7Ci0gICAgICAgIFJBUElESlNPTl9TVEFUSUNfQVNTRVJUKHNpemVv
Zih0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKLSAgICAgICAgQ2hhclR5cGUg
YyA9ICh1bnNpZ25lZCBjaGFyKWlzLlRha2UoKTsKLSAgICAgICAgYyB8PSAodW5zaWduZWQgY2hh
cilpcy5UYWtlKCkgPDwgODsKLSAgICAgICAgYyB8PSAodW5zaWduZWQgY2hhcilpcy5UYWtlKCkg
PDwgMTY7Ci0gICAgICAgIGMgfD0gKHVuc2lnbmVkIGNoYXIpaXMuVGFrZSgpIDw8IDI0OwotICAg
ICAgICByZXR1cm4gYzsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0cHV0Qnl0
ZVN0cmVhbT4KLSAgICBzdGF0aWMgdm9pZCBQdXRCT00oT3V0cHV0Qnl0ZVN0cmVhbSYgb3MpIHsK
LSAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIE91dHB1dEJ5
dGVTdHJlYW06OkNoKSA9PSAxKTsKLSAgICAgICAgb3MuUHV0KDB4RkZ1KTsgb3MuUHV0KDB4RkV1
KTsgb3MuUHV0KDB4MDB1KTsgb3MuUHV0KDB4MDB1KTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbT4KLSAgICBzdGF0aWMgdm9pZCBQdXQoT3V0cHV0Qnl0
ZVN0cmVhbSYgb3MsIENoYXJUeXBlIGMpIHsKLSAgICAgICAgUkFQSURKU09OX1NUQVRJQ19BU1NF
UlQoc2l6ZW9mKHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKLSAgICAgICAg
b3MuUHV0KGMgJiAweEZGdSk7Ci0gICAgICAgIG9zLlB1dCgoYyA+PiA4KSAmIDB4RkZ1KTsKLSAg
ICAgICAgb3MuUHV0KChjID4+IDE2KSAmIDB4RkZ1KTsKLSAgICAgICAgb3MuUHV0KChjID4+IDI0
KSAmIDB4RkZ1KTsKLSAgICB9Ci19OwotCi0vLyEgVVRGLTMyIGJpZyBlbmRpYW4gZW5jb2Rpbmcu
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSA9IHVuc2lnbmVkPgotc3RydWN0IFVURjMyQkUg
OiBVVEYzMjxDaGFyVHlwZT4gewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEJ5dGVTdHJl
YW0+Ci0gICAgc3RhdGljIENoYXJUeXBlIFRha2VCT00oSW5wdXRCeXRlU3RyZWFtJiBpcykgewot
ICAgICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgSW5wdXRCeXRl
U3RyZWFtOjpDaCkgPT0gMSk7Ci0gICAgICAgIENoYXJUeXBlIGMgPSBUYWtlKGlzKTsKLSAgICAg
ICAgcmV0dXJuICh1bnNpZ25lZCljID09IDB4MDAwMEZFRkZ1ID8gVGFrZShpcykgOiBjOyAKLSAg
ICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtPgotICAgIHN0YXRp
YyBDaGFyVHlwZSBUYWtlKElucHV0Qnl0ZVN0cmVhbSYgaXMpIHsKLSAgICAgICAgUkFQSURKU09O
X1NUQVRJQ19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEp
OwotICAgICAgICBDaGFyVHlwZSBjID0gKHVuc2lnbmVkIGNoYXIpaXMuVGFrZSgpIDw8IDI0Owot
ICAgICAgICBjIHw9ICh1bnNpZ25lZCBjaGFyKWlzLlRha2UoKSA8PCAxNjsKLSAgICAgICAgYyB8
PSAodW5zaWduZWQgY2hhcilpcy5UYWtlKCkgPDwgODsKLSAgICAgICAgYyB8PSAodW5zaWduZWQg
Y2hhcilpcy5UYWtlKCk7Ci0gICAgICAgIHJldHVybiBjOwotICAgIH0KLQotICAgIHRlbXBsYXRl
IDx0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtPgotICAgIHN0YXRpYyB2b2lkIFB1dEJPTShPdXRw
dXRCeXRlU3RyZWFtJiBvcykgewotICAgICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXpl
b2YodHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOwotICAgICAgICBvcy5QdXQo
MHgwMHUpOyBvcy5QdXQoMHgwMHUpOyBvcy5QdXQoMHhGRXUpOyBvcy5QdXQoMHhGRnUpOwotICAg
IH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPdXRwdXRCeXRlU3RyZWFtPgotICAgIHN0YXRp
YyB2b2lkIFB1dChPdXRwdXRCeXRlU3RyZWFtJiBvcywgQ2hhclR5cGUgYykgewotICAgICAgICBS
QVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbTo6
Q2gpID09IDEpOwotICAgICAgICBvcy5QdXQoKGMgPj4gMjQpICYgMHhGRnUpOwotICAgICAgICBv
cy5QdXQoKGMgPj4gMTYpICYgMHhGRnUpOwotICAgICAgICBvcy5QdXQoKGMgPj4gOCkgJiAweEZG
dSk7Ci0gICAgICAgIG9zLlB1dChjICYgMHhGRnUpOwotICAgIH0KLX07Ci0KLS8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KLS8vIEFTQ0lJCi0KLS8vISBBU0NJSSBlbmNvZGluZy4KLS8qISBodHRwOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL0FTQ0lJCi0gICAgXHRwYXJhbSBDaGFyVHlwZSBDb2RlIHVu
aXQgZm9yIHN0b3JpbmcgNy1iaXQgQVNDSUkgZGF0YS4gRGVmYXVsdCBpcyBjaGFyLgotICAgIFxu
b3RlIGltcGxlbWVudHMgRW5jb2RpbmcgY29uY2VwdAotKi8KLXRlbXBsYXRlPHR5cGVuYW1lIENo
YXJUeXBlID0gY2hhcj4KLXN0cnVjdCBBU0NJSSB7Ci0gICAgdHlwZWRlZiBDaGFyVHlwZSBDaDsK
LQotICAgIGVudW0geyBzdXBwb3J0VW5pY29kZSA9IDAgfTsKLQotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIE91dHB1dFN0cmVhbT4KLSAgICBzdGF0aWMgdm9pZCBFbmNvZGUoT3V0cHV0U3RyZWFtJiBv
cywgdW5zaWduZWQgY29kZXBvaW50KSB7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoY29kZXBv
aW50IDw9IDB4N0YpOwotICAgICAgICBvcy5QdXQoc3RhdGljX2Nhc3Q8Q2g+KGNvZGVwb2ludCAm
IDB4RkYpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRTdHJlYW0+Ci0g
ICAgc3RhdGljIGJvb2wgRGVjb2RlKElucHV0U3RyZWFtJiBpcywgdW5zaWduZWQqIGNvZGVwb2lu
dCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFy
Pihpcy5UYWtlKCkpOwotICAgICAgICAqY29kZXBvaW50ID0gYzsKLSAgICAgICAgcmV0dXJuIGMg
PD0gMFg3RjsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRTdHJlYW0sIHR5
cGVuYW1lIE91dHB1dFN0cmVhbT4KLSAgICBzdGF0aWMgYm9vbCBWYWxpZGF0ZShJbnB1dFN0cmVh
bSYgaXMsIE91dHB1dFN0cmVhbSYgb3MpIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBjID0gaXMu
VGFrZSgpOwotICAgICAgICBvcy5QdXQoYyk7Ci0gICAgICAgIHJldHVybiBjIDw9IDB4N0Y7Ci0g
ICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbT4KLSAgICBzdGF0
aWMgQ2hhclR5cGUgVGFrZUJPTShJbnB1dEJ5dGVTdHJlYW0mIGlzKSB7Ci0gICAgICAgIFJBUElE
SlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZih0eXBlbmFtZSBJbnB1dEJ5dGVTdHJlYW06OkNoKSA9
PSAxKTsKLSAgICAgICAgQ2ggYyA9IFRha2UoaXMpOwotICAgICAgICByZXR1cm4gYzsKLSAgICB9
Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRCeXRlU3RyZWFtPgotICAgIHN0YXRpYyBD
aCBUYWtlKElucHV0Qnl0ZVN0cmVhbSYgaXMpIHsKLSAgICAgICAgUkFQSURKU09OX1NUQVRJQ19B
U1NFUlQoc2l6ZW9mKHR5cGVuYW1lIElucHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOwotICAgICAg
ICByZXR1cm4gaXMuVGFrZSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBPdXRw
dXRCeXRlU3RyZWFtPgotICAgIHN0YXRpYyB2b2lkIFB1dEJPTShPdXRwdXRCeXRlU3RyZWFtJiBv
cykgewotICAgICAgICBSQVBJREpTT05fU1RBVElDX0FTU0VSVChzaXplb2YodHlwZW5hbWUgT3V0
cHV0Qnl0ZVN0cmVhbTo6Q2gpID09IDEpOwotICAgICAgICAodm9pZClvczsKLSAgICB9Ci0KLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgT3V0cHV0Qnl0ZVN0cmVhbT4KLSAgICBzdGF0aWMgdm9pZCBQ
dXQoT3V0cHV0Qnl0ZVN0cmVhbSYgb3MsIENoIGMpIHsKLSAgICAgICAgUkFQSURKU09OX1NUQVRJ
Q19BU1NFUlQoc2l6ZW9mKHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW06OkNoKSA9PSAxKTsKLSAg
ICAgICAgb3MuUHV0KHN0YXRpY19jYXN0PHR5cGVuYW1lIE91dHB1dEJ5dGVTdHJlYW06OkNoPihj
KSk7Ci0gICAgfQotfTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gQXV0b1VURgotCi0v
LyEgUnVudGltZS1zcGVjaWZpZWQgVVRGIGVuY29kaW5nIHR5cGUgb2YgYSBzdHJlYW0uCi1lbnVt
IFVURlR5cGUgewotICAgIGtVVEY4ID0gMCwgICAgICAvLyE8IFVURi04LgotICAgIGtVVEYxNkxF
ID0gMSwgICAvLyE8IFVURi0xNiBsaXR0bGUgZW5kaWFuLgotICAgIGtVVEYxNkJFID0gMiwgICAv
LyE8IFVURi0xNiBiaWcgZW5kaWFuLgotICAgIGtVVEYzMkxFID0gMywgICAvLyE8IFVURi0zMiBs
aXR0bGUgZW5kaWFuLgotICAgIGtVVEYzMkJFID0gNCAgICAvLyE8IFVURi0zMiBiaWcgZW5kaWFu
LgotfTsKLQotLy8hIER5bmFtaWNhbGx5IHNlbGVjdCBlbmNvZGluZyBhY2NvcmRpbmcgdG8gc3Ry
ZWFtJ3MgcnVudGltZS1zcGVjaWZpZWQgVVRGIGVuY29kaW5nIHR5cGUuCi0vKiEgXG5vdGUgVGhp
cyBjbGFzcyBjYW4gYmUgdXNlZCB3aXRoIEF1dG9VVEZJbnB1dHRTdHJlYW0gYW5kIEF1dG9VVEZP
dXRwdXRTdHJlYW0sIHdoaWNoIHByb3ZpZGVzIEdldFR5cGUoKS4KLSovCi10ZW1wbGF0ZTx0eXBl
bmFtZSBDaGFyVHlwZT4KLXN0cnVjdCBBdXRvVVRGIHsKLSAgICB0eXBlZGVmIENoYXJUeXBlIENo
OwotCi0gICAgZW51bSB7IHN1cHBvcnRVbmljb2RlID0gMSB9OwotCi0jZGVmaW5lIFJBUElESlNP
Tl9FTkNPRElOR1NfRlVOQyh4KSBVVEY4PENoPjo6eCwgVVRGMTZMRTxDaD46OngsIFVURjE2QkU8
Q2g+Ojp4LCBVVEYzMkxFPENoPjo6eCwgVVRGMzJCRTxDaD46OngKLQotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE91dHB1dFN0cmVhbT4KLSAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgc3RhdGljIHZv
aWQgRW5jb2RlKE91dHB1dFN0cmVhbSYgb3MsIHVuc2lnbmVkIGNvZGVwb2ludCkgewotICAgICAg
ICB0eXBlZGVmIHZvaWQgKCpFbmNvZGVGdW5jKShPdXRwdXRTdHJlYW0mLCB1bnNpZ25lZCk7Ci0g
ICAgICAgIHN0YXRpYyBjb25zdCBFbmNvZGVGdW5jIGZbXSA9IHsgUkFQSURKU09OX0VOQ09ESU5H
U19GVU5DKEVuY29kZSkgfTsKLSAgICAgICAgKCpmW29zLkdldFR5cGUoKV0pKG9zLCBjb2RlcG9p
bnQpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dFN0cmVhbT4KLSAgICBS
QVBJREpTT05fRk9SQ0VJTkxJTkUgc3RhdGljIGJvb2wgRGVjb2RlKElucHV0U3RyZWFtJiBpcywg
dW5zaWduZWQqIGNvZGVwb2ludCkgewotICAgICAgICB0eXBlZGVmIGJvb2wgKCpEZWNvZGVGdW5j
KShJbnB1dFN0cmVhbSYsIHVuc2lnbmVkKik7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBEZWNvZGVG
dW5jIGZbXSA9IHsgUkFQSURKU09OX0VOQ09ESU5HU19GVU5DKERlY29kZSkgfTsKLSAgICAgICAg
cmV0dXJuICgqZltpcy5HZXRUeXBlKCldKShpcywgY29kZXBvaW50KTsKLSAgICB9Ci0KLSAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRTdHJlYW0sIHR5cGVuYW1lIE91dHB1dFN0cmVhbT4KLSAg
ICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgc3RhdGljIGJvb2wgVmFsaWRhdGUoSW5wdXRTdHJlYW0m
IGlzLCBPdXRwdXRTdHJlYW0mIG9zKSB7Ci0gICAgICAgIHR5cGVkZWYgYm9vbCAoKlZhbGlkYXRl
RnVuYykoSW5wdXRTdHJlYW0mLCBPdXRwdXRTdHJlYW0mKTsKLSAgICAgICAgc3RhdGljIGNvbnN0
IFZhbGlkYXRlRnVuYyBmW10gPSB7IFJBUElESlNPTl9FTkNPRElOR1NfRlVOQyhWYWxpZGF0ZSkg
fTsKLSAgICAgICAgcmV0dXJuICgqZltpcy5HZXRUeXBlKCldKShpcywgb3MpOwotICAgIH0KLQot
I3VuZGVmIFJBUElESlNPTl9FTkNPRElOR1NfRlVOQwotfTsKLQotLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwotLy8gVHJhbnNjb2RlcgotCi0vLyEgRW5jb2RpbmcgY29udmVyc2lvbi4KLXRlbXBsYXRl
PHR5cGVuYW1lIFNvdXJjZUVuY29kaW5nLCB0eXBlbmFtZSBUYXJnZXRFbmNvZGluZz4KLXN0cnVj
dCBUcmFuc2NvZGVyIHsKLSAgICAvLyEgVGFrZSBvbmUgVW5pY29kZSBjb2RlcG9pbnQgZnJvbSBz
b3VyY2UgZW5jb2RpbmcsIGNvbnZlcnQgaXQgdG8gdGFyZ2V0IGVuY29kaW5nIGFuZCBwdXQgaXQg
dG8gdGhlIG91dHB1dCBzdHJlYW0uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRTdHJlYW0s
IHR5cGVuYW1lIE91dHB1dFN0cmVhbT4KLSAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgc3RhdGlj
IGJvb2wgVHJhbnNjb2RlKElucHV0U3RyZWFtJiBpcywgT3V0cHV0U3RyZWFtJiBvcykgewotICAg
ICAgICB1bnNpZ25lZCBjb2RlcG9pbnQ7Ci0gICAgICAgIGlmICghU291cmNlRW5jb2Rpbmc6OkRl
Y29kZShpcywgJmNvZGVwb2ludCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IFRhcmdldEVuY29kaW5nOjpFbmNvZGUob3MsIGNvZGVwb2ludCk7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLQotICAgIC8vISBWYWxpZGF0ZSBvbmUgVW5pY29kZSBjb2RlcG9pbnQgZnJv
bSBhbiBlbmNvZGVkIHN0cmVhbS4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnB1dFN0cmVhbSwg
dHlwZW5hbWUgT3V0cHV0U3RyZWFtPgotICAgIFJBUElESlNPTl9GT1JDRUlOTElORSBzdGF0aWMg
Ym9vbCBWYWxpZGF0ZShJbnB1dFN0cmVhbSYgaXMsIE91dHB1dFN0cmVhbSYgb3MpIHsKLSAgICAg
ICAgcmV0dXJuIFRyYW5zY29kZShpcywgb3MpOyAgIC8vIFNpbmNlIHNvdXJjZS90YXJnZXQgZW5j
b2RpbmcgaXMgZGlmZmVyZW50LCBtdXN0IHRyYW5zY29kZS4KLSAgICB9Ci19OwotCi0vLyEgU3Bl
Y2lhbGl6YXRpb24gb2YgVHJhbnNjb2RlciB3aXRoIHNhbWUgc291cmNlIGFuZCB0YXJnZXQgZW5j
b2RpbmcuCi10ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGluZz4KLXN0cnVjdCBUcmFuc2NvZGVyPEVu
Y29kaW5nLCBFbmNvZGluZz4gewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0U3RyZWFtLCB0
eXBlbmFtZSBPdXRwdXRTdHJlYW0+Ci0gICAgUkFQSURKU09OX0ZPUkNFSU5MSU5FIHN0YXRpYyBi
b29sIFRyYW5zY29kZShJbnB1dFN0cmVhbSYgaXMsIE91dHB1dFN0cmVhbSYgb3MpIHsKLSAgICAg
ICAgb3MuUHV0KGlzLlRha2UoKSk7ICAvLyBKdXN0IGNvcHkgb25lIGNvZGUgdW5pdC4gVGhpcyBz
ZW1hbnRpYyBpcyBkaWZmZXJlbnQgZnJvbSBwcmltYXJ5IHRlbXBsYXRlIGNsYXNzLgotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSW5wdXRT
dHJlYW0sIHR5cGVuYW1lIE91dHB1dFN0cmVhbT4KLSAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUg
c3RhdGljIGJvb2wgVmFsaWRhdGUoSW5wdXRTdHJlYW0mIGlzLCBPdXRwdXRTdHJlYW0mIG9zKSB7
Ci0gICAgICAgIHJldHVybiBFbmNvZGluZzo6VmFsaWRhdGUoaXMsIG9zKTsgIC8vIHNvdXJjZS90
YXJnZXQgZW5jb2RpbmcgYXJlIHRoZSBzYW1lCi0gICAgfQotfTsKLQotUkFQSURKU09OX05BTUVT
UEFDRV9FTkQKLQotI2lmIGRlZmluZWQoX19HTlVDX18pIHx8IGRlZmluZWQoX01TVl9WRVIpCi1S
QVBJREpTT05fRElBR19QT1AKLSNlbmRpZgotCi0jZW5kaWYgLy8gUkFQSURKU09OX0VOQ09ESU5H
U19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJk
X3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9lcnJvci9lbi5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3Jh
cGlkanNvbi9lcnJvci9lbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTcxMTgz
M2UxZS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3Rz
L3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9lcnJvci9lbi5oCisrKyAv
ZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlw
Ci0vLwotLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv
IGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQotLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz
b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKLS8v
IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBs
aW1pdGF0aW9uIHRoZSByaWdodHMKLS8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi
bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKLS8vIGNvcGllcyBvZiB0
aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBp
cwotLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9uczoKLS8vCi0vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz
aW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotLy8gYWxsIGNvcGllcyBvciBzdWJzdGFu
dGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0vLwotLy8gVEhFIFNPRlRXQVJFIElTIFBS
T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK
LS8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZLAotLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0vLyBBVVRIT1JTIE9S
IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9U
SEVSCi0vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU
IE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAotLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g
V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgotLy8gVEhF
IFNPRlRXQVJFLgotCi0jaWZuZGVmIFJBUElESlNPTl9FUlJPUl9FTl9IX18KLSNkZWZpbmUgUkFQ
SURKU09OX0VSUk9SX0VOX0hfXwotCi0jaW5jbHVkZSAiZXJyb3IuaCIKLQotUkFQSURKU09OX05B
TUVTUEFDRV9CRUdJTgotCi0vLyEgTWFwcyBlcnJvciBjb2RlIG9mIHBhcnNpbmcgaW50byBlcnJv
ciBtZXNzYWdlLgotLyohCi0gICAgXGluZ3JvdXAgUkFQSURKU09OX0VSUk9SUwotICAgIFxwYXJh
bSBwYXJzZUVycm9yQ29kZSBFcnJvciBjb2RlIG9idGFpbmVkIGluIHBhcnNpbmcuCi0gICAgXHJl
dHVybiB0aGUgZXJyb3IgbWVzc2FnZS4KLSAgICBcbm90ZSBVc2VyIGNhbiBtYWtlIGEgY29weSBv
ZiB0aGlzIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24uCi0gICAgICAgIFVzaW5nIHN3aXRjaC1j
YXNlIGlzIHNhZmVyIGZvciBmdXR1cmUgbW9kaWZpY2F0aW9uIG9mIGVycm9yIGNvZGVzLgotKi8K
LWlubGluZSBjb25zdCBSQVBJREpTT05fRVJST1JfQ0hBUlRZUEUqIEdldFBhcnNlRXJyb3JfRW4o
UGFyc2VFcnJvckNvZGUgcGFyc2VFcnJvckNvZGUpIHsKLSAgICBzd2l0Y2ggKHBhcnNlRXJyb3JD
b2RlKSB7Ci0gICAgICAgIGNhc2Uga1BhcnNlRXJyb3JOb25lOiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBSQVBJREpTT05fRVJST1JfU1RSSU5HKCJObyBlcnJvci4iKTsKLQotICAg
ICAgICBjYXNlIGtQYXJzZUVycm9yRG9jdW1lbnRFbXB0eTogICAgICAgICAgICAgICAgICByZXR1
cm4gUkFQSURKU09OX0VSUk9SX1NUUklORygiVGhlIGRvY3VtZW50IGlzIGVtcHR5LiIpOwotICAg
ICAgICBjYXNlIGtQYXJzZUVycm9yRG9jdW1lbnRSb290Tm90U2luZ3VsYXI6ICAgICAgICByZXR1
cm4gUkFQSURKU09OX0VSUk9SX1NUUklORygiVGhlIGRvY3VtZW50IHJvb3QgbXVzdCBub3QgZm9s
bG93IGJ5IG90aGVyIHZhbHVlcy4iKTsKLSAgICAKLSAgICAgICAgY2FzZSBrUGFyc2VFcnJvclZh
bHVlSW52YWxpZDogICAgICAgICAgICAgICAgICAgcmV0dXJuIFJBUElESlNPTl9FUlJPUl9TVFJJ
TkcoIkludmFsaWQgdmFsdWUuIik7Ci0gICAgCi0gICAgICAgIGNhc2Uga1BhcnNlRXJyb3JPYmpl
Y3RNaXNzTmFtZTogICAgICAgICAgICAgICAgIHJldHVybiBSQVBJREpTT05fRVJST1JfU1RSSU5H
KCJNaXNzaW5nIGEgbmFtZSBmb3Igb2JqZWN0IG1lbWJlci4iKTsKLSAgICAgICAgY2FzZSBrUGFy
c2VFcnJvck9iamVjdE1pc3NDb2xvbjogICAgICAgICAgICAgICAgcmV0dXJuIFJBUElESlNPTl9F
UlJPUl9TVFJJTkcoIk1pc3NpbmcgYSBjb2xvbiBhZnRlciBhIG5hbWUgb2Ygb2JqZWN0IG1lbWJl
ci4iKTsKLSAgICAgICAgY2FzZSBrUGFyc2VFcnJvck9iamVjdE1pc3NDb21tYU9yQ3VybHlCcmFj
a2V0OiAgcmV0dXJuIFJBUElESlNPTl9FUlJPUl9TVFJJTkcoIk1pc3NpbmcgYSBjb21tYSBvciAn
fScgYWZ0ZXIgYW4gb2JqZWN0IG1lbWJlci4iKTsKLSAgICAKLSAgICAgICAgY2FzZSBrUGFyc2VF
cnJvckFycmF5TWlzc0NvbW1hT3JTcXVhcmVCcmFja2V0OiAgcmV0dXJuIFJBUElESlNPTl9FUlJP
Ul9TVFJJTkcoIk1pc3NpbmcgYSBjb21tYSBvciAnXScgYWZ0ZXIgYW4gYXJyYXkgZWxlbWVudC4i
KTsKLQotICAgICAgICBjYXNlIGtQYXJzZUVycm9yU3RyaW5nVW5pY29kZUVzY2FwZUludmFsaWRI
ZXg6ICByZXR1cm4gUkFQSURKU09OX0VSUk9SX1NUUklORygiSW5jb3JyZWN0IGhleCBkaWdpdCBh
ZnRlciBcXHUgZXNjYXBlIGluIHN0cmluZy4iKTsKLSAgICAgICAgY2FzZSBrUGFyc2VFcnJvclN0
cmluZ1VuaWNvZGVTdXJyb2dhdGVJbnZhbGlkOiAgcmV0dXJuIFJBUElESlNPTl9FUlJPUl9TVFJJ
TkcoIlRoZSBzdXJyb2dhdGUgcGFpciBpbiBzdHJpbmcgaXMgaW52YWxpZC4iKTsKLSAgICAgICAg
Y2FzZSBrUGFyc2VFcnJvclN0cmluZ0VzY2FwZUludmFsaWQ6ICAgICAgICAgICAgcmV0dXJuIFJB
UElESlNPTl9FUlJPUl9TVFJJTkcoIkludmFsaWQgZXNjYXBlIGNoYXJhY3RlciBpbiBzdHJpbmcu
Iik7Ci0gICAgICAgIGNhc2Uga1BhcnNlRXJyb3JTdHJpbmdNaXNzUXVvdGF0aW9uTWFyazogICAg
ICAgIHJldHVybiBSQVBJREpTT05fRVJST1JfU1RSSU5HKCJNaXNzaW5nIGEgY2xvc2luZyBxdW90
YXRpb24gbWFyayBpbiBzdHJpbmcuIik7Ci0gICAgICAgIGNhc2Uga1BhcnNlRXJyb3JTdHJpbmdJ
bnZhbGlkRW5jb2Rpbmc6ICAgICAgICAgIHJldHVybiBSQVBJREpTT05fRVJST1JfU1RSSU5HKCJJ
bnZhbGlkIGVuY29kaW5nIGluIHN0cmluZy4iKTsKLQotICAgICAgICBjYXNlIGtQYXJzZUVycm9y
TnVtYmVyVG9vQmlnOiAgICAgICAgICAgICAgICAgICByZXR1cm4gUkFQSURKU09OX0VSUk9SX1NU
UklORygiTnVtYmVyIHRvbyBiaWcgdG8gYmUgc3RvcmVkIGluIGRvdWJsZS4iKTsKLSAgICAgICAg
Y2FzZSBrUGFyc2VFcnJvck51bWJlck1pc3NGcmFjdGlvbjogICAgICAgICAgICAgcmV0dXJuIFJB
UElESlNPTl9FUlJPUl9TVFJJTkcoIk1pc3MgZnJhY3Rpb24gcGFydCBpbiBudW1iZXIuIik7Ci0g
ICAgICAgIGNhc2Uga1BhcnNlRXJyb3JOdW1iZXJNaXNzRXhwb25lbnQ6ICAgICAgICAgICAgIHJl
dHVybiBSQVBJREpTT05fRVJST1JfU1RSSU5HKCJNaXNzIGV4cG9uZW50IGluIG51bWJlci4iKTsK
LQotICAgICAgICBjYXNlIGtQYXJzZUVycm9yVGVybWluYXRpb246ICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gUkFQSURKU09OX0VSUk9SX1NUUklORygiVGVybWluYXRlIHBhcnNpbmcgZHVlIHRv
IEhhbmRsZXIgZXJyb3IuIik7Ci0gICAgICAgIGNhc2Uga1BhcnNlRXJyb3JVbnNwZWNpZmljU3lu
dGF4RXJyb3I6ICAgICAgICAgIHJldHVybiBSQVBJREpTT05fRVJST1JfU1RSSU5HKCJVbnNwZWNp
ZmljIHN5bnRheCBlcnJvci4iKTsKLQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0
dXJuIFJBUElESlNPTl9FUlJPUl9TVFJJTkcoIlVua25vd24gZXJyb3IuIik7Ci0gICAgfQotfQot
Ci1SQVBJREpTT05fTkFNRVNQQUNFX0VORAotCi0jZW5kaWYgLy8gUkFQSURKU09OX0VSUk9SX0VO
X0hfXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJk
X3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9lcnJvci9lcnJvci5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRl
L3JhcGlkanNvbi9lcnJvci9lcnJvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
NjFlZjg3ODc4ZS4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9lcnJvci9lcnJv
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAx
MSBNaWxvIFlpcAotLy8KLS8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg
Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLS8vIG9mIHRoaXMgc29mdHdh
cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0
byBkZWFsCi0vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n
IHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi0vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwg
bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi0vLyBj
b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUg
U29mdHdhcmUgaXMKLS8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnM6Ci0vLwotLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo
aXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLS8vIGFsbCBjb3BpZXMg
b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotLy8KLS8vIFRIRSBTT0ZU
V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF
WFBSRVNTIE9SCi0vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLS8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotLy8g
QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN
QUdFUyBPUiBPVEhFUgotLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U
UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLS8vIE9VVCBPRiBPUiBJTiBD
T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1Mg
SU4KLS8vIFRIRSBTT0ZUV0FSRS4KLQotI2lmbmRlZiBSQVBJREpTT05fRVJST1JfRVJST1JfSF9f
Ci0jZGVmaW5lIFJBUElESlNPTl9FUlJPUl9FUlJPUl9IX18KLQotLyohIFxmaWxlIGVycm9yLmgg
Ki8KLQotLyohIFxkZWZncm91cCBSQVBJREpTT05fRVJST1JTIFJhcGlkSlNPTiBlcnJvciBoYW5k
bGluZyAqLwotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBSQVBJREpTT05fRVJST1JfQ0hB
UlRZUEUKLQotLy8hIENoYXJhY3RlciB0eXBlIG9mIGVycm9yIG1lc3NhZ2VzLgotLyohIFxpbmdy
b3VwIFJBUElESlNPTl9FUlJPUlMKLSAgICBUaGUgZGVmYXVsdCBjaGFyYWN0ZXIgdHlwZSBpcyBc
YyBjaGFyLgotICAgIE9uIFdpbmRvd3MsIHVzZXIgY2FuIGRlZmluZSB0aGlzIG1hY3JvIGFzIFxj
IFRDSEFSIGZvciBzdXBwb3J0aW5nIGJvdGgKLSAgICB1bmljb2RlL25vbi11bmljb2RlIHNldHRp
bmdzLgotKi8KLSNpZm5kZWYgUkFQSURKU09OX0VSUk9SX0NIQVJUWVBFCi0jZGVmaW5lIFJBUElE
SlNPTl9FUlJPUl9DSEFSVFlQRSBjaGFyCi0jZW5kaWYKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
LwotLy8gUkFQSURKU09OX0VSUk9SX1NUUklORwotCi0vLyEgTWFjcm8gZm9yIGNvbnZlcnRpbmcg
c3RyaW5nIGxpdGVyaWFsIHRvIFxyZWYgUkFQSURKU09OX0VSUk9SX0NIQVJUWVBFW10uCi0vKiEg
XGluZ3JvdXAgUkFQSURKU09OX0VSUk9SUwotICAgIEJ5IGRlZmF1bHQgdGhpcyBjb252ZXJzaW9u
IG1hY3JvIGRvZXMgbm90aGluZy4KLSAgICBPbiBXaW5kb3dzLCB1c2VyIGNhbiBkZWZpbmUgdGhp
cyBtYWNybyBhcyBcYyBfVCh4KSBmb3Igc3VwcG9ydGluZyBib3RoCi0gICAgdW5pY29kZS9ub24t
dW5pY29kZSBzZXR0aW5ncy4KLSovCi0jaWZuZGVmIFJBUElESlNPTl9FUlJPUl9TVFJJTkcKLSNk
ZWZpbmUgUkFQSURKU09OX0VSUk9SX1NUUklORyh4KSB4Ci0jZW5kaWYKLQotUkFQSURKU09OX05B
TUVTUEFDRV9CRUdJTgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBQYXJzZUVycm9yQ29k
ZQotCi0vLyEgRXJyb3IgY29kZSBvZiBwYXJzaW5nLgotLyohIFxpbmdyb3VwIFJBUElESlNPTl9F
UlJPUlMKLSAgICBcc2VlIEdlbmVyaWNSZWFkZXI6OlBhcnNlLCBHZW5lcmljUmVhZGVyOjpHZXRQ
YXJzZUVycm9yQ29kZQotKi8KLWVudW0gUGFyc2VFcnJvckNvZGUgewotICAgIGtQYXJzZUVycm9y
Tm9uZSA9IDAsICAgICAgICAgICAgICAgICAgICAgICAgLy8hPCBObyBlcnJvci4KLQotICAgIGtQ
YXJzZUVycm9yRG9jdW1lbnRFbXB0eSwgICAgICAgICAgICAgICAgICAgLy8hPCBUaGUgZG9jdW1l
bnQgaXMgZW1wdHkuCi0gICAga1BhcnNlRXJyb3JEb2N1bWVudFJvb3ROb3RTaW5ndWxhciwgICAg
ICAgICAvLyE8IFRoZSBkb2N1bWVudCByb290IG11c3Qgbm90IGZvbGxvdyBieSBvdGhlciB2YWx1
ZXMuCi0KLSAgICBrUGFyc2VFcnJvclZhbHVlSW52YWxpZCwgICAgICAgICAgICAgICAgICAgIC8v
ITwgSW52YWxpZCB2YWx1ZS4KLQotICAgIGtQYXJzZUVycm9yT2JqZWN0TWlzc05hbWUsICAgICAg
ICAgICAgICAgICAgLy8hPCBNaXNzaW5nIGEgbmFtZSBmb3Igb2JqZWN0IG1lbWJlci4KLSAgICBr
UGFyc2VFcnJvck9iamVjdE1pc3NDb2xvbiwgICAgICAgICAgICAgICAgIC8vITwgTWlzc2luZyBh
IGNvbG9uIGFmdGVyIGEgbmFtZSBvZiBvYmplY3QgbWVtYmVyLgotICAgIGtQYXJzZUVycm9yT2Jq
ZWN0TWlzc0NvbW1hT3JDdXJseUJyYWNrZXQsICAgLy8hPCBNaXNzaW5nIGEgY29tbWEgb3IgJ30n
IGFmdGVyIGFuIG9iamVjdCBtZW1iZXIuCi0KLSAgICBrUGFyc2VFcnJvckFycmF5TWlzc0NvbW1h
T3JTcXVhcmVCcmFja2V0LCAgIC8vITwgTWlzc2luZyBhIGNvbW1hIG9yICddJyBhZnRlciBhbiBh
cnJheSBlbGVtZW50LgotCi0gICAga1BhcnNlRXJyb3JTdHJpbmdVbmljb2RlRXNjYXBlSW52YWxp
ZEhleCwgICAvLyE8IEluY29ycmVjdCBoZXggZGlnaXQgYWZ0ZXIgXFx1IGVzY2FwZSBpbiBzdHJp
bmcuCi0gICAga1BhcnNlRXJyb3JTdHJpbmdVbmljb2RlU3Vycm9nYXRlSW52YWxpZCwgICAvLyE8
IFRoZSBzdXJyb2dhdGUgcGFpciBpbiBzdHJpbmcgaXMgaW52YWxpZC4KLSAgICBrUGFyc2VFcnJv
clN0cmluZ0VzY2FwZUludmFsaWQsICAgICAgICAgICAgIC8vITwgSW52YWxpZCBlc2NhcGUgY2hh
cmFjdGVyIGluIHN0cmluZy4KLSAgICBrUGFyc2VFcnJvclN0cmluZ01pc3NRdW90YXRpb25NYXJr
LCAgICAgICAgIC8vITwgTWlzc2luZyBhIGNsb3NpbmcgcXVvdGF0aW9uIG1hcmsgaW4gc3RyaW5n
LgotICAgIGtQYXJzZUVycm9yU3RyaW5nSW52YWxpZEVuY29kaW5nLCAgICAgICAgICAgLy8hPCBJ
bnZhbGlkIGVuY29kaW5nIGluIHN0cmluZy4KLQotICAgIGtQYXJzZUVycm9yTnVtYmVyVG9vQmln
LCAgICAgICAgICAgICAgICAgICAgLy8hPCBOdW1iZXIgdG9vIGJpZyB0byBiZSBzdG9yZWQgaW4g
ZG91YmxlLgotICAgIGtQYXJzZUVycm9yTnVtYmVyTWlzc0ZyYWN0aW9uLCAgICAgICAgICAgICAg
Ly8hPCBNaXNzIGZyYWN0aW9uIHBhcnQgaW4gbnVtYmVyLgotICAgIGtQYXJzZUVycm9yTnVtYmVy
TWlzc0V4cG9uZW50LCAgICAgICAgICAgICAgLy8hPCBNaXNzIGV4cG9uZW50IGluIG51bWJlci4K
LQotICAgIGtQYXJzZUVycm9yVGVybWluYXRpb24sICAgICAgICAgICAgICAgICAgICAgLy8hPCBQ
YXJzaW5nIHdhcyB0ZXJtaW5hdGVkLgotICAgIGtQYXJzZUVycm9yVW5zcGVjaWZpY1N5bnRheEVy
cm9yLCAgICAgICAgICAgLy8hPCBVbnNwZWNpZmljIHN5bnRheCBlcnJvci4KLX07Ci0KLS8vISBS
ZXN1bHQgb2YgcGFyc2luZyAod3JhcHMgUGFyc2VFcnJvckNvZGUpCi0vKiEKLSAgICBcaW5ncm91
cCBSQVBJREpTT05fRVJST1JTCi0gICAgXGNvZGUKLSAgICAgICAgRG9jdW1lbnQgZG9jOwotICAg
ICAgICBQYXJzZVJlc3VsdCBvayA9IGRvYy5QYXJzZSgiWzQyXSIpOwotICAgICAgICBpZiAoIW9r
KSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkpTT04gcGFyc2UgZXJyb3I6ICVzICgl
dSkiLAotICAgICAgICAgICAgICAgICAgICBHZXRQYXJzZUVycm9yX0VuKG9rLkNvZGUoKSksIG9r
Lk9mZnNldCgpKTsKLSAgICAgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKLSAgICAgICAgfQot
ICAgIFxlbmRjb2RlCi0gICAgXHNlZSBHZW5lcmljUmVhZGVyOjpQYXJzZSwgR2VuZXJpY0RvY3Vt
ZW50OjpQYXJzZQotKi8KLXN0cnVjdCBQYXJzZVJlc3VsdCB7Ci0KLSAgICAvLyEgRGVmYXVsdCBj
b25zdHJ1Y3Rvciwgbm8gZXJyb3IuCi0gICAgUGFyc2VSZXN1bHQoKSA6IGNvZGVfKGtQYXJzZUVy
cm9yTm9uZSksIG9mZnNldF8oMCkge30KLSAgICAvLyEgQ29uc3RydWN0b3IgdG8gc2V0IGFuIGVy
cm9yLgotICAgIFBhcnNlUmVzdWx0KFBhcnNlRXJyb3JDb2RlIGNvZGUsIHNpemVfdCBvZmZzZXQp
IDogY29kZV8oY29kZSksIG9mZnNldF8ob2Zmc2V0KSB7fQotCi0gICAgLy8hIEdldCB0aGUgZXJy
b3IgY29kZS4KLSAgICBQYXJzZUVycm9yQ29kZSBDb2RlKCkgY29uc3QgeyByZXR1cm4gY29kZV87
IH0KLSAgICAvLyEgR2V0IHRoZSBlcnJvciBvZmZzZXQsIGlmIFxyZWYgSXNFcnJvcigpLCAwIG90
aGVyd2lzZS4KLSAgICBzaXplX3QgT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gb2Zmc2V0XzsgfQot
Ci0gICAgLy8hIENvbnZlcnNpb24gdG8gXGMgYm9vbCwgcmV0dXJucyBcYyB0cnVlLCBpZmYgIVxy
ZWYgSXNFcnJvcigpLgotICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhSXNFcnJv
cigpOyB9Ci0gICAgLy8hIFdoZXRoZXIgdGhlIHJlc3VsdCBpcyBhbiBlcnJvci4KLSAgICBib29s
IElzRXJyb3IoKSBjb25zdCB7IHJldHVybiBjb2RlXyAhPSBrUGFyc2VFcnJvck5vbmU7IH0KLQot
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXJzZVJlc3VsdCYgdGhhdCkgY29uc3QgeyByZXR1
cm4gY29kZV8gPT0gdGhhdC5jb2RlXzsgfQotICAgIGJvb2wgb3BlcmF0b3I9PShQYXJzZUVycm9y
Q29kZSBjb2RlKSBjb25zdCB7IHJldHVybiBjb2RlXyA9PSBjb2RlOyB9Ci0gICAgZnJpZW5kIGJv
b2wgb3BlcmF0b3I9PShQYXJzZUVycm9yQ29kZSBjb2RlLCBjb25zdCBQYXJzZVJlc3VsdCAmIGVy
cikgeyByZXR1cm4gY29kZSA9PSBlcnIuY29kZV87IH0KLQotICAgIC8vISBSZXNldCBlcnJvciBj
b2RlLgotICAgIHZvaWQgQ2xlYXIoKSB7IFNldChrUGFyc2VFcnJvck5vbmUpOyB9Ci0gICAgLy8h
IFVwZGF0ZSBlcnJvciBjb2RlIGFuZCBvZmZzZXQuCi0gICAgdm9pZCBTZXQoUGFyc2VFcnJvckNv
ZGUgY29kZSwgc2l6ZV90IG9mZnNldCA9IDApIHsgY29kZV8gPSBjb2RlOyBvZmZzZXRfID0gb2Zm
c2V0OyB9Ci0KLXByaXZhdGU6Ci0gICAgUGFyc2VFcnJvckNvZGUgY29kZV87Ci0gICAgc2l6ZV90
IG9mZnNldF87Ci19OwotCi0vLyEgRnVuY3Rpb24gcG9pbnRlciB0eXBlIG9mIEdldFBhcnNlRXJy
b3IoKS4KLS8qISBcaW5ncm91cCBSQVBJREpTT05fRVJST1JTCi0KLSAgICBUaGlzIGlzIHRoZSBw
cm90b3R5cGUgZm9yIFxjIEdldFBhcnNlRXJyb3JfWCgpLCB3aGVyZSBcYyBYIGlzIGEgbG9jYWxl
LgotICAgIFVzZXIgY2FuIGR5bmFtaWNhbGx5IGNoYW5nZSBsb2NhbGUgaW4gcnVudGltZSwgZS5n
LjoKLVxjb2RlCi0gICAgR2V0UGFyc2VFcnJvckZ1bmMgR2V0UGFyc2VFcnJvciA9IEdldFBhcnNl
RXJyb3JfRW47IC8vIG9yIHdoYXRldmVyCi0gICAgY29uc3QgUkFQSURKU09OX0VSUk9SX0NIQVJU
WVBFKiBzID0gR2V0UGFyc2VFcnJvcihkb2N1bWVudC5HZXRQYXJzZUVycm9yQ29kZSgpKTsKLVxl
bmRjb2RlCi0qLwotdHlwZWRlZiBjb25zdCBSQVBJREpTT05fRVJST1JfQ0hBUlRZUEUqICgqR2V0
UGFyc2VFcnJvckZ1bmMpKFBhcnNlRXJyb3JDb2RlKTsKLQotUkFQSURKU09OX05BTUVTUEFDRV9F
TkQKLQotI2VuZGlmIC8vIFJBUElESlNPTl9FUlJPUl9FUlJPUl9IX18KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5j
bHVkZS9yYXBpZGpzb24vZmlsZXJlYWRzdHJlYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZmlsZXJl
YWRzdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFmOWJlNTc5ZGIuLjAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9w
YXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZmlsZXJlYWRzdHJlYW0uaAorKysgL2Rl
di9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAot
Ly8KLS8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh
bnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLS8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j
aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCi0vLyBp
biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt
aXRhdGlvbiB0aGUgcmlnaHRzCi0vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp
c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi0vLyBjb3BpZXMgb2YgdGhl
IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMK
LS8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnM6Ci0vLwotLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv
biBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLS8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp
YWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotLy8KLS8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9W
SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0v
LyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSwKLS8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO
RCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotLy8gQVVUSE9SUyBPUiBD
T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF
UgotLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP
UiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLS8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ
VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KLS8vIFRIRSBT
T0ZUV0FSRS4KLQotI2lmbmRlZiBSQVBJREpTT05fRklMRVJFQURTVFJFQU1fSF8KLSNkZWZpbmUg
UkFQSURKU09OX0ZJTEVSRUFEU1RSRUFNX0hfCi0KLSNpbmNsdWRlICJyYXBpZGpzb24uaCIKLSNp
bmNsdWRlIDxjc3RkaW8+Ci0KLVJBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KLQotLy8hIEZpbGUg
Ynl0ZSBzdHJlYW0gZm9yIGlucHV0IHVzaW5nIGZyZWFkKCkuCi0vKiEKLSAgICBcbm90ZSBpbXBs
ZW1lbnRzIFN0cmVhbSBjb25jZXB0Ci0qLwotY2xhc3MgRmlsZVJlYWRTdHJlYW0gewotcHVibGlj
OgotICAgIHR5cGVkZWYgY2hhciBDaDsgICAgLy8hPCBDaGFyYWN0ZXIgdHlwZSAoYnl0ZSkuCi0K
LSAgICAvLyEgQ29uc3RydWN0b3IuCi0gICAgLyohCi0gICAgICAgIFxwYXJhbSBmcCBGaWxlIHBv
aW50ZXIgb3BlbmVkIGZvciByZWFkLgotICAgICAgICBccGFyYW0gYnVmZmVyIHVzZXItc3VwcGxp
ZWQgYnVmZmVyLgotICAgICAgICBccGFyYW0gYnVmZmVyU2l6ZSBzaXplIG9mIGJ1ZmZlciBpbiBi
eXRlcy4gTXVzdCA+PTQgYnl0ZXMuCi0gICAgKi8KLSAgICBGaWxlUmVhZFN0cmVhbShzdGQ6OkZJ
TEUqIGZwLCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKSA6IGZwXyhmcCksIGJ1ZmZl
cl8oYnVmZmVyKSwgYnVmZmVyU2l6ZV8oYnVmZmVyU2l6ZSksIGJ1ZmZlckxhc3RfKDApLCBjdXJy
ZW50XyhidWZmZXJfKSwgcmVhZENvdW50XygwKSwgY291bnRfKDApLCBlb2ZfKGZhbHNlKSB7IAot
ICAgICAgICBSQVBJREpTT05fQVNTRVJUKGZwXyAhPSAwKTsKLSAgICAgICAgUkFQSURKU09OX0FT
U0VSVChidWZmZXJTaXplID49IDQpOwotICAgICAgICBSZWFkKCk7Ci0gICAgfQotCi0gICAgQ2gg
UGVlaygpIGNvbnN0IHsgcmV0dXJuICpjdXJyZW50XzsgfQotICAgIENoIFRha2UoKSB7IENoIGMg
PSAqY3VycmVudF87IFJlYWQoKTsgcmV0dXJuIGM7IH0KLSAgICBzaXplX3QgVGVsbCgpIGNvbnN0
IHsgcmV0dXJuIGNvdW50XyArIHN0YXRpY19jYXN0PHNpemVfdD4oY3VycmVudF8gLSBidWZmZXJf
KTsgfQotCi0gICAgLy8gTm90IGltcGxlbWVudGVkCi0gICAgdm9pZCBQdXQoQ2gpIHsgUkFQSURK
U09OX0FTU0VSVChmYWxzZSk7IH0KLSAgICB2b2lkIEZsdXNoKCkgeyBSQVBJREpTT05fQVNTRVJU
KGZhbHNlKTsgfSAKLSAgICBDaCogUHV0QmVnaW4oKSB7IFJBUElESlNPTl9BU1NFUlQoZmFsc2Up
OyByZXR1cm4gMDsgfQotICAgIHNpemVfdCBQdXRFbmQoQ2gqKSB7IFJBUElESlNPTl9BU1NFUlQo
ZmFsc2UpOyByZXR1cm4gMDsgfQotCi0gICAgLy8gRm9yIGVuY29kaW5nIGRldGVjdGlvbiBvbmx5
LgotICAgIGNvbnN0IENoKiBQZWVrNCgpIGNvbnN0IHsKLSAgICAgICAgcmV0dXJuIChjdXJyZW50
XyArIDQgPD0gYnVmZmVyTGFzdF8pID8gY3VycmVudF8gOiAwOwotICAgIH0KLQotcHJpdmF0ZToK
LSAgICB2b2lkIFJlYWQoKSB7Ci0gICAgICAgIGlmIChjdXJyZW50XyA8IGJ1ZmZlckxhc3RfKQot
ICAgICAgICAgICAgKytjdXJyZW50XzsKLSAgICAgICAgZWxzZSBpZiAoIWVvZl8pIHsKLSAgICAg
ICAgICAgIGNvdW50XyArPSByZWFkQ291bnRfOwotICAgICAgICAgICAgcmVhZENvdW50XyA9IGZy
ZWFkKGJ1ZmZlcl8sIDEsIGJ1ZmZlclNpemVfLCBmcF8pOwotICAgICAgICAgICAgYnVmZmVyTGFz
dF8gPSBidWZmZXJfICsgcmVhZENvdW50XyAtIDE7Ci0gICAgICAgICAgICBjdXJyZW50XyA9IGJ1
ZmZlcl87Ci0KLSAgICAgICAgICAgIGlmIChyZWFkQ291bnRfIDwgYnVmZmVyU2l6ZV8pIHsKLSAg
ICAgICAgICAgICAgICBidWZmZXJfW3JlYWRDb3VudF9dID0gJ1wwJzsKLSAgICAgICAgICAgICAg
ICArK2J1ZmZlckxhc3RfOwotICAgICAgICAgICAgICAgIGVvZl8gPSB0cnVlOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RkOjpGSUxFKiBmcF87Ci0gICAgQ2ggKmJ1
ZmZlcl87Ci0gICAgc2l6ZV90IGJ1ZmZlclNpemVfOwotICAgIENoICpidWZmZXJMYXN0XzsKLSAg
ICBDaCAqY3VycmVudF87Ci0gICAgc2l6ZV90IHJlYWRDb3VudF87Ci0gICAgc2l6ZV90IGNvdW50
XzsgIC8vITwgTnVtYmVyIG9mIGNoYXJhY3RlcnMgcmVhZAotICAgIGJvb2wgZW9mXzsKLX07Ci0K
LVJBUElESlNPTl9OQU1FU1BBQ0VfRU5ECi0KLSNlbmRpZiAvLyBSQVBJREpTT05fRklMRVNUUkVB
TV9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJk
X3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9maWxlc3RyZWFtLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUv
cmFwaWRqc29uL2ZpbGVzdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM3
MGM2MDU3MGYuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZmlsZXN0cmVhbS5o
CisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDExIE1p
bG8gWWlwCi0vLwotLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy
Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQotLy8gb2YgdGhpcyBzb2Z0d2FyZSBh
bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRl
YWwKLS8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0
aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKLS8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn
ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKLS8vIGNvcGll
cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0
d2FyZSBpcwotLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9uczoKLS8vCi0vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw
ZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotLy8gYWxsIGNvcGllcyBvciBz
dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0vLwotLy8gVEhFIFNPRlRXQVJF
IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJF
U1MgT1IKLS8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0vLyBBVVRI
T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT
IE9SIE9USEVSCi0vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNU
LCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAotLy8gT1VUIE9GIE9SIElOIENPTk5F
Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgot
Ly8gVEhFIFNPRlRXQVJFLgotCi0jaWZuZGVmIFJBUElESlNPTl9GSUxFU1RSRUFNX0hfCi0jZGVm
aW5lIFJBUElESlNPTl9GSUxFU1RSRUFNX0hfCi0KLSNpbmNsdWRlICJyYXBpZGpzb24uaCIKLSNp
bmNsdWRlIDxjc3RkaW8+Ci0KLVJBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KLQotLy8hIChEZXBy
ZWNhdGVkKSBXcmFwcGVyIG9mIEMgZmlsZSBzdHJlYW0gZm9yIGlucHV0IG9yIG91dHB1dC4KLS8q
IQotICAgIFRoaXMgc2ltcGxlIHdyYXBwZXIgZG9lcyBub3QgY2hlY2sgdGhlIHZhbGlkaXR5IG9m
IHRoZSBzdHJlYW0uCi0gICAgXG5vdGUgaW1wbGVtZW50cyBTdHJlYW0gY29uY2VwdAotICAgIFxu
b3RlIGRlcHJlY2F0ZWQ6IFRoaXMgd2FzIG9ubHkgZm9yIGJhc2ljIHRlc3RpbmcgaW4gdmVyc2lv
biAwLjEsIGl0IGlzIGZvdW5kIHRoYXQgdGhlIHBlcmZvcm1hbmNlIGlzIHZlcnkgbG93IGJ5IHVz
aW5nIGZnZXRjKCkuIFVzZSBGaWxlUmVhZFN0cmVhbSBpbnN0ZWFkLgotKi8KLWNsYXNzIEZpbGVT
dHJlYW0gewotcHVibGljOgotICAgIHR5cGVkZWYgY2hhciBDaDsgICAgLy8hPCBDaGFyYWN0ZXIg
dHlwZS4gT25seSBzdXBwb3J0IGNoYXIuCi0KLSAgICBGaWxlU3RyZWFtKHN0ZDo6RklMRSogZnAp
IDogZnBfKGZwKSwgY3VycmVudF8oJ1wwJyksIGNvdW50XygwKSB7IFJlYWQoKTsgfQotICAgIGNo
YXIgUGVlaygpIGNvbnN0IHsgcmV0dXJuIGN1cnJlbnRfOyB9Ci0gICAgY2hhciBUYWtlKCkgeyBj
aGFyIGMgPSBjdXJyZW50XzsgUmVhZCgpOyByZXR1cm4gYzsgfQotICAgIHNpemVfdCBUZWxsKCkg
Y29uc3QgeyByZXR1cm4gY291bnRfOyB9Ci0gICAgdm9pZCBQdXQoY2hhciBjKSB7IGZwdXRjKGMs
IGZwXyk7IH0KLSAgICB2b2lkIEZsdXNoKCkgeyBmZmx1c2goZnBfKTsgfQotCi0gICAgLy8gTm90
IGltcGxlbWVudGVkCi0gICAgY2hhciogUHV0QmVnaW4oKSB7IHJldHVybiAwOyB9Ci0gICAgc2l6
ZV90IFB1dEVuZChjaGFyKikgeyByZXR1cm4gMDsgfQotCi1wcml2YXRlOgotICAgIC8vIFByb2hp
Yml0IGNvcHkgY29uc3RydWN0b3IgJiBhc3NpZ25tZW50IG9wZXJhdG9yLgotICAgIEZpbGVTdHJl
YW0oY29uc3QgRmlsZVN0cmVhbSYpOwotICAgIEZpbGVTdHJlYW0mIG9wZXJhdG9yPShjb25zdCBG
aWxlU3RyZWFtJik7Ci0KLSAgICB2b2lkIFJlYWQoKSB7Ci0gICAgICAgIFJBUElESlNPTl9BU1NF
UlQoZnBfICE9IDApOwotICAgICAgICBpbnQgYyA9IGZnZXRjKGZwXyk7Ci0gICAgICAgIGlmIChj
ICE9IEVPRikgewotICAgICAgICAgICAgY3VycmVudF8gPSAoY2hhciljOwotICAgICAgICAgICAg
Y291bnRfKys7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY3VycmVudF8gIT0gJ1wwJykK
LSAgICAgICAgICAgIGN1cnJlbnRfID0gJ1wwJzsKLSAgICB9Ci0KLSAgICBzdGQ6OkZJTEUqIGZw
XzsKLSAgICBjaGFyIGN1cnJlbnRfOwotICAgIHNpemVfdCBjb3VudF87Ci19OwotCi1SQVBJREpT
T05fTkFNRVNQQUNFX0VORAotCi0jZW5kaWYgLy8gUkFQSURKU09OX0ZJTEVTVFJFQU1fSF8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9y
YXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vZmlsZXdyaXRlc3RyZWFtLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFw
aWRqc29uL2ZpbGV3cml0ZXN0cmVhbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
MzUyYzhmMTcyZi4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9maWxld3JpdGVz
dHJlYW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykg
MjAxMSBNaWxvIFlpcAotLy8KLS8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg
b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLS8vIG9mIHRoaXMgc29m
dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIp
LCB0byBkZWFsCi0vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk
aW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi0vLyB0byB1c2UsIGNvcHksIG1vZGlm
eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi0v
LyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0
aGUgU29mdHdhcmUgaXMKLS8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnM6Ci0vLwotLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k
IHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLS8vIGFsbCBjb3Bp
ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotLy8KLS8vIFRIRSBT
T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E
LCBFWFBSRVNTIE9SCi0vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI
RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLS8vIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQot
Ly8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg
REFNQUdFUyBPUiBPVEhFUgotLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBD
T05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLS8vIE9VVCBPRiBPUiBJ
TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElO
R1MgSU4KLS8vIFRIRSBTT0ZUV0FSRS4KLQotI2lmbmRlZiBSQVBJREpTT05fRklMRVdSSVRFU1RS
RUFNX0hfCi0jZGVmaW5lIFJBUElESlNPTl9GSUxFV1JJVEVTVFJFQU1fSF8KLQotI2luY2x1ZGUg
InJhcGlkanNvbi5oIgotI2luY2x1ZGUgPGNzdGRpbz4KLQotUkFQSURKU09OX05BTUVTUEFDRV9C
RUdJTgotCi0vLyEgV3JhcHBlciBvZiBDIGZpbGUgc3RyZWFtIGZvciBpbnB1dCB1c2luZyBmcmVh
ZCgpLgotLyohCi0gICAgXG5vdGUgaW1wbGVtZW50cyBTdHJlYW0gY29uY2VwdAotKi8KLWNsYXNz
IEZpbGVXcml0ZVN0cmVhbSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjaGFyIENoOyAgICAvLyE8
IENoYXJhY3RlciB0eXBlLiBPbmx5IHN1cHBvcnQgY2hhci4KLQotICAgIEZpbGVXcml0ZVN0cmVh
bShzdGQ6OkZJTEUqIGZwLCBjaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKSA6IGZwXyhm
cCksIGJ1ZmZlcl8oYnVmZmVyKSwgYnVmZmVyRW5kXyhidWZmZXIgKyBidWZmZXJTaXplKSwgY3Vy
cmVudF8oYnVmZmVyXykgeyAKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVChmcF8gIT0gMCk7Ci0g
ICAgfQotCi0gICAgdm9pZCBQdXQoY2hhciBjKSB7IAotICAgICAgICBpZiAoY3VycmVudF8gPj0g
YnVmZmVyRW5kXykKLSAgICAgICAgICAgIEZsdXNoKCk7Ci0KLSAgICAgICAgKmN1cnJlbnRfKysg
PSBjOwotICAgIH0KLQotICAgIHZvaWQgUHV0TihjaGFyIGMsIHNpemVfdCBuKSB7Ci0gICAgICAg
IHNpemVfdCBhdmFpbCA9IHN0YXRpY19jYXN0PHNpemVfdD4oYnVmZmVyRW5kXyAtIGN1cnJlbnRf
KTsKLSAgICAgICAgd2hpbGUgKG4gPiBhdmFpbCkgewotICAgICAgICAgICAgc3RkOjptZW1zZXQo
Y3VycmVudF8sIGMsIGF2YWlsKTsKLSAgICAgICAgICAgIGN1cnJlbnRfICs9IGF2YWlsOwotICAg
ICAgICAgICAgRmx1c2goKTsKLSAgICAgICAgICAgIG4gLT0gYXZhaWw7Ci0gICAgICAgICAgICBh
dmFpbCA9IHN0YXRpY19jYXN0PHNpemVfdD4oYnVmZmVyRW5kXyAtIGN1cnJlbnRfKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChuID4gMCkgewotICAgICAgICAgICAgc3RkOjptZW1zZXQoY3Vy
cmVudF8sIGMsIG4pOwotICAgICAgICAgICAgY3VycmVudF8gKz0gbjsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIHZvaWQgRmx1c2goKSB7Ci0gICAgICAgIGlmIChjdXJyZW50XyAhPSBidWZmZXJf
KSB7Ci0gICAgICAgICAgICBmd3JpdGUoYnVmZmVyXywgMSwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihj
dXJyZW50XyAtIGJ1ZmZlcl8pLCBmcF8pOwotICAgICAgICAgICAgY3VycmVudF8gPSBidWZmZXJf
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gTm90IGltcGxlbWVudGVkCi0gICAgY2hhciBQ
ZWVrKCkgY29uc3QgeyBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7IH0KLSAgICBj
aGFyIFRha2UoKSB7IFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyByZXR1cm4gMDsgfQotICAgIHNp
emVfdCBUZWxsKCkgY29uc3QgeyBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7IH0K
LSAgICBjaGFyKiBQdXRCZWdpbigpIHsgUkFQSURKU09OX0FTU0VSVChmYWxzZSk7IHJldHVybiAw
OyB9Ci0gICAgc2l6ZV90IFB1dEVuZChjaGFyKikgeyBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsg
cmV0dXJuIDA7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBQcm9oaWJpdCBjb3B5IGNvbnN0cnVjdG9y
ICYgYXNzaWdubWVudCBvcGVyYXRvci4KLSAgICBGaWxlV3JpdGVTdHJlYW0oY29uc3QgRmlsZVdy
aXRlU3RyZWFtJik7Ci0gICAgRmlsZVdyaXRlU3RyZWFtJiBvcGVyYXRvcj0oY29uc3QgRmlsZVdy
aXRlU3RyZWFtJik7Ci0KLSAgICBzdGQ6OkZJTEUqIGZwXzsKLSAgICBjaGFyICpidWZmZXJfOwot
ICAgIGNoYXIgKmJ1ZmZlckVuZF87Ci0gICAgY2hhciAqY3VycmVudF87Ci19OwotCi0vLyEgSW1w
bGVtZW50IHNwZWNpYWxpemVkIHZlcnNpb24gb2YgUHV0TigpIHdpdGggbWVtc2V0KCkgZm9yIGJl
dHRlciBwZXJmb3JtYW5jZS4KLXRlbXBsYXRlPD4KLWlubGluZSB2b2lkIFB1dE4oRmlsZVdyaXRl
U3RyZWFtJiBzdHJlYW0sIGNoYXIgYywgc2l6ZV90IG4pIHsKLSAgICBzdHJlYW0uUHV0TihjLCBu
KTsKLX0KLQotUkFQSURKU09OX05BTUVTUEFDRV9FTkQKLQotI2VuZGlmIC8vIFJBUElESlNPTl9G
SUxFU1RSRUFNX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL2JpZ2lu
dGVnZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9y
YXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvYmlnaW50ZWdlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmFjZmMzODUzMy4uMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNs
dWRlL3JhcGlkanNvbi9pbnRlcm5hbC9iaWdpbnRlZ2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwy
OTQgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlwCi0vLwotLy8gUGVybWlz
c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0
YWluaW5nIGEgY29weQotLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVu
dGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKLS8vIGluIHRoZSBTb2Z0d2Fy
ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSBy
aWdodHMKLS8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0
ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKLS8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu
ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotLy8gZnVybmlzaGVk
IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLS8vCi0vLyBU
aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFs
bCBiZSBpbmNsdWRlZCBpbgotLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv
ZiB0aGUgU29mdHdhcmUuCi0vLwotLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs
IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLS8vIElNUExJRUQsIElO
Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZLAotLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF
TUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE
RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0vLyBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg
QVJJU0lORyBGUk9NLAotLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB
UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgotLy8gVEhFIFNPRlRXQVJFLgotCi0j
aWZuZGVmIFJBUElESlNPTl9CSUdJTlRFR0VSX0hfCi0jZGVmaW5lIFJBUElESlNPTl9CSUdJTlRF
R0VSX0hfCi0KLSNpbmNsdWRlICIuLi9yYXBpZGpzb24uaCIKLQotI2lmIGRlZmluZWQoX01TQ19W
RVIpICYmIGRlZmluZWQoX01fQU1ENjQpCi0jaW5jbHVkZSA8aW50cmluLmg+IC8vIGZvciBfdW11
bDEyOAotI2VuZGlmCi0KLVJBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KLW5hbWVzcGFjZSBpbnRl
cm5hbCB7Ci0KLWNsYXNzIEJpZ0ludGVnZXIgewotcHVibGljOgotICAgIHR5cGVkZWYgdWludDY0
X3QgVHlwZTsKLQotICAgIEJpZ0ludGVnZXIoY29uc3QgQmlnSW50ZWdlciYgcmhzKSA6IGNvdW50
XyhyaHMuY291bnRfKSB7Ci0gICAgICAgIHN0ZDo6bWVtY3B5KGRpZ2l0c18sIHJocy5kaWdpdHNf
LCBjb3VudF8gKiBzaXplb2YoVHlwZSkpOwotICAgIH0KLQotICAgIGV4cGxpY2l0IEJpZ0ludGVn
ZXIodWludDY0X3QgdSkgOiBjb3VudF8oMSkgewotICAgICAgICBkaWdpdHNfWzBdID0gdTsKLSAg
ICB9Ci0KLSAgICBCaWdJbnRlZ2VyKGNvbnN0IGNoYXIqIGRlY2ltYWxzLCBzaXplX3QgbGVuZ3Ro
KSA6IGNvdW50XygxKSB7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQobGVuZ3RoID4gMCk7Ci0g
ICAgICAgIGRpZ2l0c19bMF0gPSAwOwotICAgICAgICBzaXplX3QgaSA9IDA7Ci0gICAgICAgIGNv
bnN0IHNpemVfdCBrTWF4RGlnaXRQZXJJdGVyYXRpb24gPSAxOTsgIC8vIDJeNjQgPSAxODQ0Njc0
NDA3MzcwOTU1MTYxNiA+IDEwXjE5Ci0gICAgICAgIHdoaWxlIChsZW5ndGggPj0ga01heERpZ2l0
UGVySXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICBBcHBlbmREZWNpbWFsNjQoZGVjaW1hbHMgKyBp
LCBkZWNpbWFscyArIGkgKyBrTWF4RGlnaXRQZXJJdGVyYXRpb24pOwotICAgICAgICAgICAgbGVu
Z3RoIC09IGtNYXhEaWdpdFBlckl0ZXJhdGlvbjsKLSAgICAgICAgICAgIGkgKz0ga01heERpZ2l0
UGVySXRlcmF0aW9uOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGxlbmd0aCA+IDApCi0gICAg
ICAgICAgICBBcHBlbmREZWNpbWFsNjQoZGVjaW1hbHMgKyBpLCBkZWNpbWFscyArIGkgKyBsZW5n
dGgpOwotICAgIH0KLQotICAgIEJpZ0ludGVnZXImIG9wZXJhdG9yPSh1aW50NjRfdCB1KSB7Ci0g
ICAgICAgIGRpZ2l0c19bMF0gPSB1OyAgICAgICAgICAgIAotICAgICAgICBjb3VudF8gPSAxOwot
ICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgQmlnSW50ZWdlciYgb3BlcmF0b3Ir
PSh1aW50NjRfdCB1KSB7Ci0gICAgICAgIFR5cGUgYmFja3VwID0gZGlnaXRzX1swXTsKLSAgICAg
ICAgZGlnaXRzX1swXSArPSB1OwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50
XyAtIDE7IGkrKykgewotICAgICAgICAgICAgaWYgKGRpZ2l0c19baV0gPj0gYmFja3VwKQotICAg
ICAgICAgICAgICAgIHJldHVybiAqdGhpczsgLy8gbm8gY2FycnkKLSAgICAgICAgICAgIGJhY2t1
cCA9IGRpZ2l0c19baSArIDFdOwotICAgICAgICAgICAgZGlnaXRzX1tpICsgMV0gKz0gMTsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8vIExhc3QgY2FycnkKLSAgICAgICAgaWYgKGRpZ2l0c19bY291
bnRfIC0gMV0gPCBiYWNrdXApCi0gICAgICAgICAgICBQdXNoQmFjaygxKTsKLQotICAgICAgICBy
ZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgQmlnSW50ZWdlciYgb3BlcmF0b3IqPSh1aW50NjRf
dCB1KSB7Ci0gICAgICAgIGlmICh1ID09IDApIHJldHVybiAqdGhpcyA9IDA7Ci0gICAgICAgIGlm
ICh1ID09IDEpIHJldHVybiAqdGhpczsKLSAgICAgICAgaWYgKCp0aGlzID09IDEpIHJldHVybiAq
dGhpcyA9IHU7Ci0KLSAgICAgICAgdWludDY0X3QgayA9IDA7Ci0gICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY291bnRfOyBpKyspIHsKLSAgICAgICAgICAgIHVpbnQ2NF90IGhpOwotICAg
ICAgICAgICAgZGlnaXRzX1tpXSA9IE11bEFkZDY0KGRpZ2l0c19baV0sIHUsIGssICZoaSk7Ci0g
ICAgICAgICAgICBrID0gaGk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChrID4g
MCkKLSAgICAgICAgICAgIFB1c2hCYWNrKGspOwotCi0gICAgICAgIHJldHVybiAqdGhpczsKLSAg
ICB9Ci0KLSAgICBCaWdJbnRlZ2VyJiBvcGVyYXRvcio9KHVpbnQzMl90IHUpIHsKLSAgICAgICAg
aWYgKHUgPT0gMCkgcmV0dXJuICp0aGlzID0gMDsKLSAgICAgICAgaWYgKHUgPT0gMSkgcmV0dXJu
ICp0aGlzOwotICAgICAgICBpZiAoKnRoaXMgPT0gMSkgcmV0dXJuICp0aGlzID0gdTsKLQotICAg
ICAgICB1aW50MzJfdCBrID0gMDsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3Vu
dF87IGkrKykgewotICAgICAgICAgICAgY29uc3QgdWludDY0X3QgYyA9IGRpZ2l0c19baV0gPj4g
MzI7Ci0gICAgICAgICAgICBjb25zdCB1aW50NjRfdCBkID0gZGlnaXRzX1tpXSAmIDB4RkZGRkZG
RkY7Ci0gICAgICAgICAgICBjb25zdCB1aW50NjRfdCB1YyA9IHUgKiBjOwotICAgICAgICAgICAg
Y29uc3QgdWludDY0X3QgdWQgPSB1ICogZDsKLSAgICAgICAgICAgIGNvbnN0IHVpbnQ2NF90IHAw
ID0gdWQgKyBrOwotICAgICAgICAgICAgY29uc3QgdWludDY0X3QgcDEgPSB1YyArIChwMCA+PiAz
Mik7Ci0gICAgICAgICAgICBkaWdpdHNfW2ldID0gKHAwICYgMHhGRkZGRkZGRikgfCAocDEgPDwg
MzIpOwotICAgICAgICAgICAgayA9IHAxID4+IDMyOwotICAgICAgICB9Ci0gICAgICAgIAotICAg
ICAgICBpZiAoayA+IDApCi0gICAgICAgICAgICBQdXNoQmFjayhrKTsKLQotICAgICAgICByZXR1
cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgQmlnSW50ZWdlciYgb3BlcmF0b3I8PD0oc2l6ZV90IHNo
aWZ0KSB7Ci0gICAgICAgIGlmIChJc1plcm8oKSB8fCBzaGlmdCA9PSAwKSByZXR1cm4gKnRoaXM7
Ci0KLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IHNoaWZ0IC8ga1R5cGVCaXQ7Ci0gICAgICAgIHNp
emVfdCBpbnRlclNoaWZ0ID0gc2hpZnQgJSBrVHlwZUJpdDsKLSAgICAgICAgUkFQSURKU09OX0FT
U0VSVChjb3VudF8gKyBvZmZzZXQgPD0ga0NhcGFjaXR5KTsKLQotICAgICAgICBpZiAoaW50ZXJT
aGlmdCA9PSAwKSB7Ci0gICAgICAgICAgICBzdGQ6Om1lbW1vdmUoJmRpZ2l0c19bY291bnRfIC0g
MSArIG9mZnNldF0sICZkaWdpdHNfW2NvdW50XyAtIDFdLCBjb3VudF8gKiBzaXplb2YoVHlwZSkp
OwotICAgICAgICAgICAgY291bnRfICs9IG9mZnNldDsKLSAgICAgICAgfQotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIGRpZ2l0c19bY291bnRfXSA9IDA7Ci0gICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gY291bnRfOyBpID4gMDsgaS0tKQotICAgICAgICAgICAgICAgIGRpZ2l0c19baSAr
IG9mZnNldF0gPSAoZGlnaXRzX1tpXSA8PCBpbnRlclNoaWZ0KSB8IChkaWdpdHNfW2kgLSAxXSA+
PiAoa1R5cGVCaXQgLSBpbnRlclNoaWZ0KSk7Ci0gICAgICAgICAgICBkaWdpdHNfW29mZnNldF0g
PSBkaWdpdHNfWzBdIDw8IGludGVyU2hpZnQ7Ci0gICAgICAgICAgICBjb3VudF8gKz0gb2Zmc2V0
OwotICAgICAgICAgICAgaWYgKGRpZ2l0c19bY291bnRfXSkKLSAgICAgICAgICAgICAgICBjb3Vu
dF8rKzsKLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6bWVtc2V0KGRpZ2l0c18sIDAsIG9mZnNl
dCAqIHNpemVvZihUeXBlKSk7Ci0KLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBCaWdJbnRlZ2VyJiByaHMpIGNvbnN0IHsKLSAgICAgICAg
cmV0dXJuIGNvdW50XyA9PSByaHMuY291bnRfICYmIG1lbWNtcChkaWdpdHNfLCByaHMuZGlnaXRz
XywgY291bnRfICogc2l6ZW9mKFR5cGUpKSA9PSAwOwotICAgIH0KLQotICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBUeXBlIHJocykgY29uc3QgewotICAgICAgICByZXR1cm4gY291bnRfID09IDEg
JiYgZGlnaXRzX1swXSA9PSByaHM7Ci0gICAgfQotCi0gICAgQmlnSW50ZWdlciYgTXVsdGlwbHlQ
b3c1KHVuc2lnbmVkIGV4cCkgewotICAgICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qga1BvdzVb
MTJdID0gewotICAgICAgICAgICAgNSwKLSAgICAgICAgICAgIDUgKiA1LAotICAgICAgICAgICAg
NSAqIDUgKiA1LAotICAgICAgICAgICAgNSAqIDUgKiA1ICogNSwKLSAgICAgICAgICAgIDUgKiA1
ICogNSAqIDUgKiA1LAotICAgICAgICAgICAgNSAqIDUgKiA1ICogNSAqIDUgKiA1LAotICAgICAg
ICAgICAgNSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSwKLSAgICAgICAgICAgIDUgKiA1ICogNSAq
IDUgKiA1ICogNSAqIDUgKiA1LAotICAgICAgICAgICAgNSAqIDUgKiA1ICogNSAqIDUgKiA1ICog
NSAqIDUgKiA1LAotICAgICAgICAgICAgNSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1
ICogNSwKLSAgICAgICAgICAgIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUg
KiA1LAotICAgICAgICAgICAgNSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSAqIDUgKiA1ICogNSAq
IDUgKiA1Ci0gICAgICAgIH07Ci0gICAgICAgIGlmIChleHAgPT0gMCkgcmV0dXJuICp0aGlzOwot
ICAgICAgICBmb3IgKDsgZXhwID49IDI3OyBleHAgLT0gMjcpICp0aGlzICo9IFJBUElESlNPTl9V
SU5UNjRfQzIoMFg2NzY1Qzc5MywgMFhGQTEwMDc5RCk7IC8vIDVeMjcKLSAgICAgICAgZm9yICg7
IGV4cCA+PSAxMzsgZXhwIC09IDEzKSAqdGhpcyAqPSAxMjIwNzAzMTI1dTsgLy8gNV4xMwotICAg
ICAgICBpZiAoZXhwID4gMCkgICAgICAgICAgICAgICAgICp0aGlzICo9IGtQb3c1W2V4cCAtIDFd
OwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgLy8gQ29tcHV0ZSBhYnNvbHV0
ZSBkaWZmZXJlbmNlIG9mIHRoaXMgYW5kIHJocy4KLSAgICAvLyBSZXR1cm4gZmFsc2UgaWYgdGhp
cyA8IHJocwotICAgIGJvb2wgRGlmZmVyZW5jZShjb25zdCBCaWdJbnRlZ2VyJiByaHMsIEJpZ0lu
dGVnZXIqIG91dCkgY29uc3QgewotICAgICAgICBpbnQgY21wID0gQ29tcGFyZShyaHMpOwotICAg
ICAgICBpZiAoY21wID09IDApIHsKLSAgICAgICAgICAgICpvdXQgPSBCaWdJbnRlZ2VyKDApOwot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0IEJpZ0lu
dGVnZXIgKmEsICpiOyAgLy8gTWFrZXMgYSA+IGIKLSAgICAgICAgYm9vbCByZXQ7Ci0gICAgICAg
IGlmIChjbXAgPCAwKSB7IGEgPSAmcmhzOyBiID0gdGhpczsgcmV0ID0gdHJ1ZTsgfQotICAgICAg
ICBlbHNlICAgICAgICAgeyBhID0gdGhpczsgYiA9ICZyaHM7IHJldCA9IGZhbHNlOyB9Ci0KLSAg
ICAgICAgVHlwZSBib3Jyb3cgPSAwOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGEt
PmNvdW50XzsgaSsrKSB7Ci0gICAgICAgICAgICBUeXBlIGQgPSBhLT5kaWdpdHNfW2ldIC0gYm9y
cm93OwotICAgICAgICAgICAgaWYgKGkgPCBiLT5jb3VudF8pCi0gICAgICAgICAgICAgICAgZCAt
PSBiLT5kaWdpdHNfW2ldOwotICAgICAgICAgICAgYm9ycm93ID0gKGQgPiBhLT5kaWdpdHNfW2ld
KSA/IDEgOiAwOwotICAgICAgICAgICAgb3V0LT5kaWdpdHNfW2ldID0gZDsKLSAgICAgICAgICAg
IGlmIChkICE9IDApCi0gICAgICAgICAgICAgICAgb3V0LT5jb3VudF8gPSBpICsgMTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQotCi0gICAgaW50IENvbXBhcmUoY29u
c3QgQmlnSW50ZWdlciYgcmhzKSBjb25zdCB7Ci0gICAgICAgIGlmIChjb3VudF8gIT0gcmhzLmNv
dW50XykKLSAgICAgICAgICAgIHJldHVybiBjb3VudF8gPCByaHMuY291bnRfID8gLTEgOiAxOwot
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSBjb3VudF87IGktLSA+IDA7KQotICAgICAgICAgICAg
aWYgKGRpZ2l0c19baV0gIT0gcmhzLmRpZ2l0c19baV0pCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGRpZ2l0c19baV0gPCByaHMuZGlnaXRzX1tpXSA/IC0xIDogMTsKLQotICAgICAgICByZXR1cm4g
MDsKLSAgICB9Ci0KLSAgICBzaXplX3QgR2V0Q291bnQoKSBjb25zdCB7IHJldHVybiBjb3VudF87
IH0KLSAgICBUeXBlIEdldERpZ2l0KHNpemVfdCBpbmRleCkgY29uc3QgeyBSQVBJREpTT05fQVNT
RVJUKGluZGV4IDwgY291bnRfKTsgcmV0dXJuIGRpZ2l0c19baW5kZXhdOyB9Ci0gICAgYm9vbCBJ
c1plcm8oKSBjb25zdCB7IHJldHVybiBjb3VudF8gPT0gMSAmJiBkaWdpdHNfWzBdID09IDA7IH0K
LQotcHJpdmF0ZToKLSAgICB2b2lkIEFwcGVuZERlY2ltYWw2NChjb25zdCBjaGFyKiBiZWdpbiwg
Y29uc3QgY2hhciogZW5kKSB7Ci0gICAgICAgIHVpbnQ2NF90IHUgPSBQYXJzZVVpbnQ2NChiZWdp
biwgZW5kKTsKLSAgICAgICAgaWYgKElzWmVybygpKQotICAgICAgICAgICAgKnRoaXMgPSB1Owot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGV4cCA9IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihlbmQgLSBiZWdpbik7Ci0gICAgICAgICAgICAoTXVsdGlwbHlQb3c1KGV4cCkgPDw9
IGV4cCkgKz0gdTsgICAvLyAqdGhpcyA9ICp0aGlzICogMTBeZXhwICsgdQotICAgICAgICB9Ci0g
ICAgfQotCi0gICAgdm9pZCBQdXNoQmFjayhUeXBlIGRpZ2l0KSB7Ci0gICAgICAgIFJBUElESlNP
Tl9BU1NFUlQoY291bnRfIDwga0NhcGFjaXR5KTsKLSAgICAgICAgZGlnaXRzX1tjb3VudF8rK10g
PSBkaWdpdDsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdWludDY0X3QgUGFyc2VVaW50NjQoY29uc3Qg
Y2hhciogYmVnaW4sIGNvbnN0IGNoYXIqIGVuZCkgewotICAgICAgICB1aW50NjRfdCByID0gMDsK
LSAgICAgICAgZm9yIChjb25zdCBjaGFyKiBwID0gYmVnaW47IHAgIT0gZW5kOyArK3ApIHsKLSAg
ICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoKnAgPj0gJzAnICYmICpwIDw9ICc5Jyk7Ci0gICAg
ICAgICAgICByID0gciAqIDEwICsgKCpwIC0gJzAnKTsKLSAgICAgICAgfQotICAgICAgICByZXR1
cm4gcjsKLSAgICB9Ci0KLSAgICAvLyBBc3N1bWUgYSAqIGIgKyBrIDwgMl4xMjgKLSAgICBzdGF0
aWMgdWludDY0X3QgTXVsQWRkNjQodWludDY0X3QgYSwgdWludDY0X3QgYiwgdWludDY0X3Qgaywg
dWludDY0X3QqIG91dEhpZ2gpIHsKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBkZWZpbmVkKF9N
X0FNRDY0KQotICAgICAgICB1aW50NjRfdCBsb3cgPSBfdW11bDEyOChhLCBiLCBvdXRIaWdoKSAr
IGs7Ci0gICAgICAgIGlmIChsb3cgPCBrKQotICAgICAgICAgICAgKCpvdXRIaWdoKSsrOwotICAg
ICAgICByZXR1cm4gbG93OwotI2VsaWYgKF9fR05VQ19fID4gNCB8fCAoX19HTlVDX18gPT0gNCAm
JiBfX0dOVUNfTUlOT1JfXyA+PSA2KSkgJiYgZGVmaW5lZChfX3g4Nl82NF9fKQotICAgICAgICB1
bnNpZ25lZCBfX2ludDEyOCBwID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgX19pbnQxMjg+KGEpICog
c3RhdGljX2Nhc3Q8dW5zaWduZWQgX19pbnQxMjg+KGIpOwotICAgICAgICBwICs9IGs7Ci0gICAg
ICAgICpvdXRIaWdoID0gcCA+PiA2NDsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2
NF90PihwKTsKLSNlbHNlCi0gICAgICAgIGNvbnN0IHVpbnQ2NF90IGEwID0gYSAmIDB4RkZGRkZG
RkYsIGExID0gYSA+PiAzMiwgYjAgPSBiICYgMHhGRkZGRkZGRiwgYjEgPSBiID4+IDMyOwotICAg
ICAgICB1aW50NjRfdCB4MCA9IGEwICogYjAsIHgxID0gYTAgKiBiMSwgeDIgPSBhMSAqIGIwLCB4
MyA9IGExICogYjE7Ci0gICAgICAgIHgxICs9ICh4MCA+PiAzMik7IC8vIGNhbid0IGdpdmUgY2Fy
cnkKLSAgICAgICAgeDEgKz0geDI7Ci0gICAgICAgIGlmICh4MSA8IHgyKQotICAgICAgICAgICAg
eDMgKz0gKHN0YXRpY19jYXN0PHVpbnQ2NF90PigxKSA8PCAzMik7Ci0gICAgICAgIHVpbnQ2NF90
IGxvID0gKHgxIDw8IDMyKSArICh4MCAmIDB4RkZGRkZGRkYpOwotICAgICAgICB1aW50NjRfdCBo
aSA9IHgzICsgKHgxID4+IDMyKTsKLQotICAgICAgICBsbyArPSBrOwotICAgICAgICBpZiAobG8g
PCBrKQotICAgICAgICAgICAgaGkrKzsKLSAgICAgICAgKm91dEhpZ2ggPSBoaTsKLSAgICAgICAg
cmV0dXJuIGxvOwotI2VuZGlmCi0gICAgfQotCi0gICAgc3RhdGljIFR5cGUgRnVsbEFkZChUeXBl
IGEsIFR5cGUgYiwgYm9vbCBpbkNhcnJ5LCBib29sKiBvdXRDYXJyeSkgewotICAgICAgICBUeXBl
IGMgPSBhICsgYiArIChpbkNhcnJ5ID8gMSA6IDApOwotICAgICAgICAqb3V0Q2FycnkgPSBjIDwg
YTsKLSAgICAgICAgcmV0dXJuIGM7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBr
Qml0Q291bnQgPSAzMzI4OyAgLy8gNjRiaXQgKiA1NCA+IDEwXjEwMDAKLSAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IGtDYXBhY2l0eSA9IGtCaXRDb3VudCAvIHNpemVvZihUeXBlKTsKLSAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IGtUeXBlQml0ID0gc2l6ZW9mKFR5cGUpICogODsKLQotICAgIFR5cGUg
ZGlnaXRzX1trQ2FwYWNpdHldOwotICAgIHNpemVfdCBjb3VudF87Ci19OwotCi19IC8vIG5hbWVz
cGFjZSBpbnRlcm5hbAotUkFQSURKU09OX05BTUVTUEFDRV9FTkQKLQotI2VuZGlmIC8vIFJBUElE
SlNPTl9CSUdJTlRFR0VSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFs
L2RpeWZwLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkv
cmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL2RpeWZwLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDE3NGI5ZmFjZmIwLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUv
cmFwaWRqc29uL2ludGVybmFsL2RpeWZwLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNjggKzAsMCBA
QAotLy8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlwCi0vLwotLy8gUGVybWlzc2lvbiBpcyBo
ZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEg
Y29weQotLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp
bGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKLS8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0
IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKLS8v
IHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGlj
ZW5zZSwgYW5kL29yIHNlbGwKLS8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt
aXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotLy8gZnVybmlzaGVkIHRvIGRvIHNv
LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLS8vCi0vLyBUaGUgYWJvdmUg
Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNs
dWRlZCBpbgotLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29m
dHdhcmUuCi0vLwotLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg
V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLS8vIElNUExJRUQsIElOQ0xVRElORyBC
VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotLy8g
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFCi0vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJ
QUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0vLyBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBG
Uk9NLAotLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF
IFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgotLy8gVEhFIFNPRlRXQVJFLgotCi0vLyBUaGlzIGlz
IGEgQysrIGhlYWRlci1vbmx5IGltcGxlbWVudGF0aW9uIG9mIEdyaXN1MiBhbGdvcml0aG0gZnJv
bSB0aGUgcHVibGljYXRpb246Ci0vLyBMb2l0c2NoLCBGbG9yaWFuLiAiUHJpbnRpbmcgZmxvYXRp
bmctcG9pbnQgbnVtYmVycyBxdWlja2x5IGFuZCBhY2N1cmF0ZWx5IHdpdGgKLS8vIGludGVnZXJz
LiIgQUNNIFNpZ3BsYW4gTm90aWNlcyA0NS42ICgyMDEwKTogMjMzLTI0My4KLQotI2lmbmRlZiBS
QVBJREpTT05fRElZRlBfSF8KLSNkZWZpbmUgUkFQSURKU09OX0RJWUZQX0hfCi0KLSNpZiBkZWZp
bmVkKF9NU0NfVkVSKQotI2luY2x1ZGUgPGludHJpbi5oPgotI2lmIGRlZmluZWQoX01fQU1ENjQp
Ci0jcHJhZ21hIGludHJpbnNpYyhfQml0U2NhblJldmVyc2U2NCkKLSNlbmRpZgotI2VuZGlmCi0K
LVJBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLSNpZmRl
ZiBfX0dOVUNfXwotUkFQSURKU09OX0RJQUdfUFVTSAotUkFQSURKU09OX0RJQUdfT0ZGKGVmZmMr
KykKLSNlbmRpZgotCi1zdHJ1Y3QgRGl5RnAgewotICAgIERpeUZwKCkge30KLQotICAgIERpeUZw
KHVpbnQ2NF90IGZwLCBpbnQgZXhwKSA6IGYoZnApLCBlKGV4cCkge30KLQotICAgIGV4cGxpY2l0
IERpeUZwKGRvdWJsZSBkKSB7Ci0gICAgICAgIHVuaW9uIHsKLSAgICAgICAgICAgIGRvdWJsZSBk
OwotICAgICAgICAgICAgdWludDY0X3QgdTY0OwotICAgICAgICB9IHUgPSB7IGQgfTsKLQotICAg
ICAgICBpbnQgYmlhc2VkX2UgPSAodS51NjQgJiBrRHBFeHBvbmVudE1hc2spID4+IGtEcFNpZ25p
ZmljYW5kU2l6ZTsKLSAgICAgICAgdWludDY0X3Qgc2lnbmlmaWNhbmQgPSAodS51NjQgJiBrRHBT
aWduaWZpY2FuZE1hc2spOwotICAgICAgICBpZiAoYmlhc2VkX2UgIT0gMCkgewotICAgICAgICAg
ICAgZiA9IHNpZ25pZmljYW5kICsga0RwSGlkZGVuQml0OwotICAgICAgICAgICAgZSA9IGJpYXNl
ZF9lIC0ga0RwRXhwb25lbnRCaWFzOwotICAgICAgICB9IAotICAgICAgICBlbHNlIHsKLSAgICAg
ICAgICAgIGYgPSBzaWduaWZpY2FuZDsKLSAgICAgICAgICAgIGUgPSBrRHBNaW5FeHBvbmVudCAr
IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBEaXlGcCBvcGVyYXRvci0oY29uc3QgRGl5RnAm
IHJocykgY29uc3QgewotICAgICAgICByZXR1cm4gRGl5RnAoZiAtIHJocy5mLCBlKTsKLSAgICB9
Ci0KLSAgICBEaXlGcCBvcGVyYXRvciooY29uc3QgRGl5RnAmIHJocykgY29uc3QgewotI2lmIGRl
ZmluZWQoX01TQ19WRVIpICYmIGRlZmluZWQoX01fQU1ENjQpCi0gICAgICAgIHVpbnQ2NF90IGg7
Ci0gICAgICAgIHVpbnQ2NF90IGwgPSBfdW11bDEyOChmLCByaHMuZiwgJmgpOwotICAgICAgICBp
ZiAobCAmICh1aW50NjRfdCgxKSA8PCA2MykpIC8vIHJvdW5kaW5nCi0gICAgICAgICAgICBoKys7
Ci0gICAgICAgIHJldHVybiBEaXlGcChoLCBlICsgcmhzLmUgKyA2NCk7Ci0jZWxpZiAoX19HTlVD
X18gPiA0IHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fID49IDYpKSAmJiBkZWZp
bmVkKF9feDg2XzY0X18pCi0gICAgICAgIHVuc2lnbmVkIF9faW50MTI4IHAgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBfX2ludDEyOD4oZikgKiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBfX2ludDEyOD4o
cmhzLmYpOwotICAgICAgICB1aW50NjRfdCBoID0gcCA+PiA2NDsKLSAgICAgICAgdWludDY0X3Qg
bCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihwKTsKLSAgICAgICAgaWYgKGwgJiAodWludDY0X3Qo
MSkgPDwgNjMpKSAvLyByb3VuZGluZwotICAgICAgICAgICAgaCsrOwotICAgICAgICByZXR1cm4g
RGl5RnAoaCwgZSArIHJocy5lICsgNjQpOwotI2Vsc2UKLSAgICAgICAgY29uc3QgdWludDY0X3Qg
TTMyID0gMHhGRkZGRkZGRjsKLSAgICAgICAgY29uc3QgdWludDY0X3QgYSA9IGYgPj4gMzI7Ci0g
ICAgICAgIGNvbnN0IHVpbnQ2NF90IGIgPSBmICYgTTMyOwotICAgICAgICBjb25zdCB1aW50NjRf
dCBjID0gcmhzLmYgPj4gMzI7Ci0gICAgICAgIGNvbnN0IHVpbnQ2NF90IGQgPSByaHMuZiAmIE0z
MjsKLSAgICAgICAgY29uc3QgdWludDY0X3QgYWMgPSBhICogYzsKLSAgICAgICAgY29uc3QgdWlu
dDY0X3QgYmMgPSBiICogYzsKLSAgICAgICAgY29uc3QgdWludDY0X3QgYWQgPSBhICogZDsKLSAg
ICAgICAgY29uc3QgdWludDY0X3QgYmQgPSBiICogZDsKLSAgICAgICAgdWludDY0X3QgdG1wID0g
KGJkID4+IDMyKSArIChhZCAmIE0zMikgKyAoYmMgJiBNMzIpOwotICAgICAgICB0bXAgKz0gMVUg
PDwgMzE7ICAvLy8gbXVsdF9yb3VuZAotICAgICAgICByZXR1cm4gRGl5RnAoYWMgKyAoYWQgPj4g
MzIpICsgKGJjID4+IDMyKSArICh0bXAgPj4gMzIpLCBlICsgcmhzLmUgKyA2NCk7Ci0jZW5kaWYK
LSAgICB9Ci0KLSAgICBEaXlGcCBOb3JtYWxpemUoKSBjb25zdCB7Ci0jaWYgZGVmaW5lZChfTVND
X1ZFUikgJiYgZGVmaW5lZChfTV9BTUQ2NCkKLSAgICAgICAgdW5zaWduZWQgbG9uZyBpbmRleDsK
LSAgICAgICAgX0JpdFNjYW5SZXZlcnNlNjQoJmluZGV4LCBmKTsKLSAgICAgICAgcmV0dXJuIERp
eUZwKGYgPDwgKDYzIC0gaW5kZXgpLCBlIC0gKDYzIC0gaW5kZXgpKTsKLSNlbGlmIGRlZmluZWQo
X19HTlVDX18pICYmIF9fR05VQ19fID49IDQKLSAgICAgICAgaW50IHMgPSBfX2J1aWx0aW5fY2x6
bGwoZik7Ci0gICAgICAgIHJldHVybiBEaXlGcChmIDw8IHMsIGUgLSBzKTsKLSNlbHNlCi0gICAg
ICAgIERpeUZwIHJlcyA9ICp0aGlzOwotICAgICAgICB3aGlsZSAoIShyZXMuZiAmIChzdGF0aWNf
Y2FzdDx1aW50NjRfdD4oMSkgPDwgNjMpKSkgewotICAgICAgICAgICAgcmVzLmYgPDw9IDE7Ci0g
ICAgICAgICAgICByZXMuZS0tOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXM7Ci0jZW5k
aWYKLSAgICB9Ci0KLSAgICBEaXlGcCBOb3JtYWxpemVCb3VuZGFyeSgpIGNvbnN0IHsKLSAgICAg
ICAgRGl5RnAgcmVzID0gKnRoaXM7Ci0gICAgICAgIHdoaWxlICghKHJlcy5mICYgKGtEcEhpZGRl
bkJpdCA8PCAxKSkpIHsKLSAgICAgICAgICAgIHJlcy5mIDw8PSAxOwotICAgICAgICAgICAgcmVz
LmUtLTsKLSAgICAgICAgfQotICAgICAgICByZXMuZiA8PD0gKGtEaXlTaWduaWZpY2FuZFNpemUg
LSBrRHBTaWduaWZpY2FuZFNpemUgLSAyKTsKLSAgICAgICAgcmVzLmUgPSByZXMuZSAtIChrRGl5
U2lnbmlmaWNhbmRTaXplIC0ga0RwU2lnbmlmaWNhbmRTaXplIC0gMik7Ci0gICAgICAgIHJldHVy
biByZXM7Ci0gICAgfQotCi0gICAgdm9pZCBOb3JtYWxpemVkQm91bmRhcmllcyhEaXlGcCogbWlu
dXMsIERpeUZwKiBwbHVzKSBjb25zdCB7Ci0gICAgICAgIERpeUZwIHBsID0gRGl5RnAoKGYgPDwg
MSkgKyAxLCBlIC0gMSkuTm9ybWFsaXplQm91bmRhcnkoKTsKLSAgICAgICAgRGl5RnAgbWkgPSAo
ZiA9PSBrRHBIaWRkZW5CaXQpID8gRGl5RnAoKGYgPDwgMikgLSAxLCBlIC0gMikgOiBEaXlGcCgo
ZiA8PCAxKSAtIDEsIGUgLSAxKTsKLSAgICAgICAgbWkuZiA8PD0gbWkuZSAtIHBsLmU7Ci0gICAg
ICAgIG1pLmUgPSBwbC5lOwotICAgICAgICAqcGx1cyA9IHBsOwotICAgICAgICAqbWludXMgPSBt
aTsKLSAgICB9Ci0KLSAgICBkb3VibGUgVG9Eb3VibGUoKSBjb25zdCB7Ci0gICAgICAgIHVuaW9u
IHsKLSAgICAgICAgICAgIGRvdWJsZSBkOwotICAgICAgICAgICAgdWludDY0X3QgdTY0OwotICAg
ICAgICB9dTsKLSAgICAgICAgdWludDY0X3Qgc2lnbmlmaWNhbmQgPSBmOwotICAgICAgICBpbnQg
ZXhwb25lbnQgPSBlOwotICAgICAgICB3aGlsZSAoc2lnbmlmaWNhbmQgPiBrRHBIaWRkZW5CaXQg
KyBrRHBTaWduaWZpY2FuZE1hc2spIHsKLSAgICAgICAgICAgIHNpZ25pZmljYW5kID4+PSAxOwot
ICAgICAgICAgICAgZXhwb25lbnQrKzsKLSAgICAgICAgfQotICAgICAgICB3aGlsZSAoZXhwb25l
bnQgPiBrRHBEZW5vcm1hbEV4cG9uZW50ICYmIChzaWduaWZpY2FuZCAmIGtEcEhpZGRlbkJpdCkg
PT0gMCkgewotICAgICAgICAgICAgc2lnbmlmaWNhbmQgPDw9IDE7Ci0gICAgICAgICAgICBleHBv
bmVudC0tOwotICAgICAgICB9Ci0gICAgICAgIGlmIChleHBvbmVudCA+PSBrRHBNYXhFeHBvbmVu
dCkgewotICAgICAgICAgICAgdS51NjQgPSBrRHBFeHBvbmVudE1hc2s7ICAgIC8vIEluZmluaXR5
Ci0gICAgICAgICAgICByZXR1cm4gdS5kOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGV4
cG9uZW50IDwga0RwRGVub3JtYWxFeHBvbmVudCkKLSAgICAgICAgICAgIHJldHVybiAwLjA7Ci0g
ICAgICAgIGNvbnN0IHVpbnQ2NF90IGJlID0gKGV4cG9uZW50ID09IGtEcERlbm9ybWFsRXhwb25l
bnQgJiYgKHNpZ25pZmljYW5kICYga0RwSGlkZGVuQml0KSA9PSAwKSA/IDAgOiAKLSAgICAgICAg
ICAgIHN0YXRpY19jYXN0PHVpbnQ2NF90PihleHBvbmVudCArIGtEcEV4cG9uZW50Qmlhcyk7Ci0g
ICAgICAgIHUudTY0ID0gKHNpZ25pZmljYW5kICYga0RwU2lnbmlmaWNhbmRNYXNrKSB8IChiZSA8
PCBrRHBTaWduaWZpY2FuZFNpemUpOwotICAgICAgICByZXR1cm4gdS5kOwotICAgIH0KLQotICAg
IHN0YXRpYyBjb25zdCBpbnQga0RpeVNpZ25pZmljYW5kU2l6ZSA9IDY0OwotICAgIHN0YXRpYyBj
b25zdCBpbnQga0RwU2lnbmlmaWNhbmRTaXplID0gNTI7Ci0gICAgc3RhdGljIGNvbnN0IGludCBr
RHBFeHBvbmVudEJpYXMgPSAweDNGRiArIGtEcFNpZ25pZmljYW5kU2l6ZTsKLSAgICBzdGF0aWMg
Y29uc3QgaW50IGtEcE1heEV4cG9uZW50ID0gMHg3RkYgLSBrRHBFeHBvbmVudEJpYXM7Ci0gICAg
c3RhdGljIGNvbnN0IGludCBrRHBNaW5FeHBvbmVudCA9IC1rRHBFeHBvbmVudEJpYXM7Ci0gICAg
c3RhdGljIGNvbnN0IGludCBrRHBEZW5vcm1hbEV4cG9uZW50ID0gLWtEcEV4cG9uZW50QmlhcyAr
IDE7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGtEcEV4cG9uZW50TWFzayA9IFJBUElESlNP
Tl9VSU5UNjRfQzIoMHg3RkYwMDAwMCwgMHgwMDAwMDAwMCk7Ci0gICAgc3RhdGljIGNvbnN0IHVp
bnQ2NF90IGtEcFNpZ25pZmljYW5kTWFzayA9IFJBUElESlNPTl9VSU5UNjRfQzIoMHgwMDBGRkZG
RiwgMHhGRkZGRkZGRik7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGtEcEhpZGRlbkJpdCA9
IFJBUElESlNPTl9VSU5UNjRfQzIoMHgwMDEwMDAwMCwgMHgwMDAwMDAwMCk7Ci0KLSAgICB1aW50
NjRfdCBmOwotICAgIGludCBlOwotfTsKLQotaW5saW5lIERpeUZwIEdldENhY2hlZFBvd2VyQnlJ
bmRleChzaXplX3QgaW5kZXgpIHsKLSAgICAvLyAxMF4tMzQ4LCAxMF4tMzQwLCAuLi4sIDEwXjM0
MAotICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBrQ2FjaGVkUG93ZXJzX0ZbXSA9IHsKLSAgICAg
ICAgUkFQSURKU09OX1VJTlQ2NF9DMigweGZhOGZkNWEwLCAweDA4MWMwMjg4KSwgUkFQSURKU09O
X1VJTlQ2NF9DMigweGJhYWVlMTdmLCAweGEyM2ViZjc2KSwKLSAgICAgICAgUkFQSURKU09OX1VJ
TlQ2NF9DMigweDhiMTZmYjIwLCAweDMwNTVhYzc2KSwgUkFQSURKU09OX1VJTlQ2NF9DMigweGNm
NDI4OTRhLCAweDVkY2UzNWVhKSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweDlhNmJi
MGFhLCAweDU1NjUzYjJkKSwgUkFQSURKU09OX1VJTlQ2NF9DMigweGU2MWFjZjAzLCAweDNkMWE0
NWRmKSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweGFiNzBmZTE3LCAweGM3OWFjNmNh
KSwgUkFQSURKU09OX1VJTlQ2NF9DMigweGZmNzdiMWZjLCAweGJlYmNkYzRmKSwKLSAgICAgICAg
UkFQSURKU09OX1VJTlQ2NF9DMigweGJlNTY5MWVmLCAweDQxNmJkNjBjKSwgUkFQSURKU09OX1VJ
TlQ2NF9DMigweDhkZDAxZmFkLCAweDkwN2ZmYzNjKSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2
NF9DMigweGQzNTE1YzI4LCAweDMxNTU5YTgzKSwgUkFQSURKU09OX1VJTlQ2NF9DMigweDlkNzFh
YzhmLCAweGFkYTZjOWI1KSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweGVhOWMyMjc3
LCAweDIzZWU4YmNiKSwgUkFQSURKU09OX1VJTlQ2NF9DMigweGFlY2M0OTkxLCAweDQwNzg1MzZk
KSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweDgyM2MxMjc5LCAweDVkYjZjZTU3KSwg
UkFQSURKU09OX1VJTlQ2NF9DMigweGMyMTA5NDM2LCAweDRkZmI1NjM3KSwKLSAgICAgICAgUkFQ
SURKU09OX1VJTlQ2NF9DMigweDkwOTZlYTZmLCAweDM4NDg5ODRmKSwgUkFQSURKU09OX1VJTlQ2
NF9DMigweGQ3NzQ4NWNiLCAweDI1ODIzYWM3KSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9D
MigweGEwODZjZmNkLCAweDk3YmY5N2Y0KSwgUkFQSURKU09OX1VJTlQ2NF9DMigweGVmMzQwYTk4
LCAweDE3MmFhY2U1KSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweGIyMzg2N2ZiLCAw
eDJhMzViMjhlKSwgUkFQSURKU09OX1VJTlQ2NF9DMigweDg0YzhkNGRmLCAweGQyYzYzZjNiKSwK
LSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweGM1ZGQ0NDI3LCAweDFhZDNjZGJhKSwgUkFQ
SURKU09OX1VJTlQ2NF9DMigweDkzNmI5ZmNlLCAweGJiMjVjOTk2KSwKLSAgICAgICAgUkFQSURK
U09OX1VJTlQ2NF9DMigweGRiYWM2YzI0LCAweDdkNjJhNTg0KSwgUkFQSURKU09OX1VJTlQ2NF9D
MigweGEzYWI2NjU4LCAweDBkNWZkYWY2KSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigw
eGYzZTJmODkzLCAweGRlYzNmMTI2KSwgUkFQSURKU09OX1VJTlQ2NF9DMigweGI1YjVhZGE4LCAw
eGFhZmY4MGI4KSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweDg3NjI1ZjA1LCAweDZj
N2M0YThiKSwgUkFQSURKU09OX1VJTlQ2NF9DMigweGM5YmNmZjYwLCAweDM0YzEzMDUzKSwKLSAg
ICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweDk2NGU4NThjLCAweDkxYmEyNjU1KSwgUkFQSURK
U09OX1VJTlQ2NF9DMigweGRmZjk3NzI0LCAweDcwMjk3ZWJkKSwKLSAgICAgICAgUkFQSURKU09O
X1VJTlQ2NF9DMigweGE2ZGZiZDlmLCAweGI4ZTViODhmKSwgUkFQSURKU09OX1VJTlQ2NF9DMigw
eGY4YTk1ZmNmLCAweDg4NzQ3ZDk0KSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweGI5
NDQ3MDkzLCAweDhmYTg5YmNmKSwgUkFQSURKU09OX1VJTlQ2NF9DMigweDhhMDhmMGY4LCAweGJm
MGYxNTZiKSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweGNkYjAyNTU1LCAweDY1MzEz
MWI2KSwgUkFQSURKU09OX1VJTlQ2NF9DMigweDk5M2ZlMmM2LCAweGQwN2I3ZmFjKSwKLSAgICAg
ICAgUkFQSURKU09OX1VJTlQ2NF9DMigweGU0NWMxMGM0LCAweDJhMmIzYjA2KSwgUkFQSURKU09O
X1VJTlQ2NF9DMigweGFhMjQyNDk5LCAweDY5NzM5MmQzKSwKLSAgICAgICAgUkFQSURKU09OX1VJ
TlQ2NF9DMigweGZkODdiNWYyLCAweDgzMDBjYTBlKSwgUkFQSURKU09OX1VJTlQ2NF9DMigweGJj
ZTUwODY0LCAweDkyMTExYWViKSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweDhjYmNj
YzA5LCAweDZmNTA4OGNjKSwgUkFQSURKU09OX1VJTlQ2NF9DMigweGQxYjcxNzU4LCAweGUyMTk2
NTJjKSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweDljNDAwMDAwLCAweDAwMDAwMDAw
KSwgUkFQSURKU09OX1VJTlQ2NF9DMigweGU4ZDRhNTEwLCAweDAwMDAwMDAwKSwKLSAgICAgICAg
UkFQSURKU09OX1VJTlQ2NF9DMigweGFkNzhlYmM1LCAweGFjNjIwMDAwKSwgUkFQSURKU09OX1VJ
TlQ2NF9DMigweDgxM2YzOTc4LCAweGY4OTQwOTg0KSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2
NF9DMigweGMwOTdjZTdiLCAweGM5MDcxNWIzKSwgUkFQSURKU09OX1VJTlQ2NF9DMigweDhmN2Uz
MmNlLCAweDdiZWE1YzcwKSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweGQ1ZDIzOGE0
LCAweGFiZTk4MDY4KSwgUkFQSURKU09OX1VJTlQ2NF9DMigweDlmNGYyNzI2LCAweDE3OWEyMjQ1
KSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweGVkNjNhMjMxLCAweGQ0YzRmYjI3KSwg
UkFQSURKU09OX1VJTlQ2NF9DMigweGIwZGU2NTM4LCAweDhjYzhhZGE4KSwKLSAgICAgICAgUkFQ
SURKU09OX1VJTlQ2NF9DMigweDgzYzcwODhlLCAweDFhYWI2NWRiKSwgUkFQSURKU09OX1VJTlQ2
NF9DMigweGM0NWQxZGY5LCAweDQyNzExZDlhKSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9D
MigweDkyNGQ2OTJjLCAweGE2MWJlNzU4KSwgUkFQSURKU09OX1VJTlQ2NF9DMigweGRhMDFlZTY0
LCAweDFhNzA4ZGVhKSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweGEyNmRhMzk5LCAw
eDlhZWY3NzRhKSwgUkFQSURKU09OX1VJTlQ2NF9DMigweGYyMDk3ODdiLCAweGI0N2Q2Yjg1KSwK
LSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweGI0NTRlNGExLCAweDc5ZGQxODc3KSwgUkFQ
SURKU09OX1VJTlQ2NF9DMigweDg2NWI4NjkyLCAweDViOWJjNWMyKSwKLSAgICAgICAgUkFQSURK
U09OX1VJTlQ2NF9DMigweGM4MzU1M2M1LCAweGM4OTY1ZDNkKSwgUkFQSURKU09OX1VJTlQ2NF9D
MigweDk1MmFiNDVjLCAweGZhOTdhMGIzKSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigw
eGRlNDY5ZmJkLCAweDk5YTA1ZmUzKSwgUkFQSURKU09OX1VJTlQ2NF9DMigweGE1OWJjMjM0LCAw
eGRiMzk4YzI1KSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweGY2YzY5YTcyLCAweGEz
OTg5ZjVjKSwgUkFQSURKU09OX1VJTlQ2NF9DMigweGI3ZGNiZjUzLCAweDU0ZTliZWNlKSwKLSAg
ICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweDg4ZmNmMzE3LCAweGYyMjI0MWUyKSwgUkFQSURK
U09OX1VJTlQ2NF9DMigweGNjMjBjZTliLCAweGQzNWM3OGE1KSwKLSAgICAgICAgUkFQSURKU09O
X1VJTlQ2NF9DMigweDk4MTY1YWYzLCAweDdiMjE1M2RmKSwgUkFQSURKU09OX1VJTlQ2NF9DMigw
eGUyYTBiNWRjLCAweDk3MWYzMDNhKSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweGE4
ZDlkMTUzLCAweDVjZTNiMzk2KSwgUkFQSURKU09OX1VJTlQ2NF9DMigweGZiOWI3Y2Q5LCAweGE0
YTc0NDNjKSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweGJiNzY0YzRjLCAweGE3YTQ0
NDEwKSwgUkFQSURKU09OX1VJTlQ2NF9DMigweDhiYWI4ZWVmLCAweGI2NDA5YzFhKSwKLSAgICAg
ICAgUkFQSURKU09OX1VJTlQ2NF9DMigweGQwMWZlZjEwLCAweGE2NTc4NDJjKSwgUkFQSURKU09O
X1VJTlQ2NF9DMigweDliMTBhNGU1LCAweGU5OTEzMTI5KSwKLSAgICAgICAgUkFQSURKU09OX1VJ
TlQ2NF9DMigweGU3MTA5YmZiLCAweGExOWMwYzlkKSwgUkFQSURKU09OX1VJTlQ2NF9DMigweGFj
MjgyMGQ5LCAweDYyM2JmNDI5KSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweDgwNDQ0
YjVlLCAweDdhYTdjZjg1KSwgUkFQSURKU09OX1VJTlQ2NF9DMigweGJmMjFlNDQwLCAweDAzYWNk
ZDJkKSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2NF9DMigweDhlNjc5YzJmLCAweDVlNDRmZjhm
KSwgUkFQSURKU09OX1VJTlQ2NF9DMigweGQ0MzMxNzlkLCAweDljOGNiODQxKSwKLSAgICAgICAg
UkFQSURKU09OX1VJTlQ2NF9DMigweDllMTlkYjkyLCAweGI0ZTMxYmE5KSwgUkFQSURKU09OX1VJ
TlQ2NF9DMigweGViOTZiZjZlLCAweGJhZGY3N2Q5KSwKLSAgICAgICAgUkFQSURKU09OX1VJTlQ2
NF9DMigweGFmODcwMjNiLCAweDliZjBlZTZiKQotICAgIH07Ci0gICAgc3RhdGljIGNvbnN0IGlu
dDE2X3Qga0NhY2hlZFBvd2Vyc19FW10gPSB7Ci0gICAgICAgIC0xMjIwLCAtMTE5MywgLTExNjYs
IC0xMTQwLCAtMTExMywgLTEwODcsIC0xMDYwLCAtMTAzNCwgLTEwMDcsICAtOTgwLAotICAgICAg
ICAtOTU0LCAgLTkyNywgIC05MDEsICAtODc0LCAgLTg0NywgIC04MjEsICAtNzk0LCAgLTc2OCwg
IC03NDEsICAtNzE1LAotICAgICAgICAtNjg4LCAgLTY2MSwgIC02MzUsICAtNjA4LCAgLTU4Miwg
IC01NTUsICAtNTI5LCAgLTUwMiwgIC00NzUsICAtNDQ5LAotICAgICAgICAtNDIyLCAgLTM5Niwg
IC0zNjksICAtMzQzLCAgLTMxNiwgIC0yODksICAtMjYzLCAgLTIzNiwgIC0yMTAsICAtMTgzLAot
ICAgICAgICAtMTU3LCAgLTEzMCwgIC0xMDMsICAgLTc3LCAgIC01MCwgICAtMjQsICAgICAzLCAg
ICAzMCwgICAgNTYsICAgIDgzLAotICAgICAgICAxMDksICAgMTM2LCAgIDE2MiwgICAxODksICAg
MjE2LCAgIDI0MiwgICAyNjksICAgMjk1LCAgIDMyMiwgICAzNDgsCi0gICAgICAgIDM3NSwgICA0
MDIsICAgNDI4LCAgIDQ1NSwgICA0ODEsICAgNTA4LCAgIDUzNCwgICA1NjEsICAgNTg4LCAgIDYx
NCwKLSAgICAgICAgNjQxLCAgIDY2NywgICA2OTQsICAgNzIwLCAgIDc0NywgICA3NzQsICAgODAw
LCAgIDgyNywgICA4NTMsICAgODgwLAotICAgICAgICA5MDcsICAgOTMzLCAgIDk2MCwgICA5ODYs
ICAxMDEzLCAgMTAzOSwgIDEwNjYKLSAgICB9OwotICAgIHJldHVybiBEaXlGcChrQ2FjaGVkUG93
ZXJzX0ZbaW5kZXhdLCBrQ2FjaGVkUG93ZXJzX0VbaW5kZXhdKTsKLX0KLSAgICAKLWlubGluZSBE
aXlGcCBHZXRDYWNoZWRQb3dlcihpbnQgZSwgaW50KiBLKSB7Ci0KLSAgICAvL2ludCBrID0gc3Rh
dGljX2Nhc3Q8aW50PihjZWlsKCgtNjEgLSBlKSAqIDAuMzAxMDI5OTk1NjYzOTgxMTQpKSArIDM3
NDsKLSAgICBkb3VibGUgZGsgPSAoLTYxIC0gZSkgKiAwLjMwMTAyOTk5NTY2Mzk4MTE0ICsgMzQ3
OyAgLy8gZGsgbXVzdCBiZSBwb3NpdGl2ZSwgc28gY2FuIGRvIGNlaWxpbmcgaW4gcG9zaXRpdmUK
LSAgICBpbnQgayA9IHN0YXRpY19jYXN0PGludD4oZGspOwotICAgIGlmIChrICE9IGRrKQotICAg
ICAgICBrKys7Ci0KLSAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPigo
ayA+PiAzKSArIDEpOwotICAgICpLID0gLSgtMzQ4ICsgc3RhdGljX2Nhc3Q8aW50PihpbmRleCA8
PCAzKSk7ICAgIC8vIGRlY2ltYWwgZXhwb25lbnQgbm8gbmVlZCBsb29rdXAgdGFibGUKLQotICAg
IHJldHVybiBHZXRDYWNoZWRQb3dlckJ5SW5kZXgoaW5kZXgpOwotfQotCi1pbmxpbmUgRGl5RnAg
R2V0Q2FjaGVkUG93ZXIxMChpbnQgZXhwLCBpbnQgKm91dEV4cCkgewotICAgICB1bnNpZ25lZCBp
bmRleCA9IChleHAgKyAzNDgpIC8gODsKLSAgICAgKm91dEV4cCA9IC0zNDggKyBpbmRleCAqIDg7
Ci0gICAgIHJldHVybiBHZXRDYWNoZWRQb3dlckJ5SW5kZXgoaW5kZXgpOwotIH0KLQotI2lmZGVm
IF9fR05VQ19fCi1SQVBJREpTT05fRElBR19QT1AKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBp
bnRlcm5hbAotUkFQSURKU09OX05BTUVTUEFDRV9FTkQKLQotI2VuZGlmIC8vIFJBUElESlNPTl9E
SVlGUF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Ro
aXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9kdG9hLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2lu
Y2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL2R0b2EuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYzBmYTJiODkwODUuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50
ZXJuYWwvZHRvYS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjI1ICswLDAgQEAKLS8vIENvcHlyaWdo
dCAoQykgMjAxMSBNaWxvIFlpcAotLy8KLS8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs
IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLS8vIG9mIHRo
aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0
d2FyZSIpLCB0byBkZWFsCi0vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwg
aW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi0vLyB0byB1c2UsIGNvcHks
IG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBz
ZWxsCi0vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8g
d2hvbSB0aGUgU29mdHdhcmUgaXMKLS8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0vLwotLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3Rp
Y2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLS8vIGFs
bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotLy8KLS8v
IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO
WSBLSU5ELCBFWFBSRVNTIE9SCi0vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE
IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLS8vIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRQotLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBD
TEFJTSwgREFNQUdFUyBPUiBPVEhFUgotLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP
TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLS8vIE9VVCBP
RiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIg
REVBTElOR1MgSU4KLS8vIFRIRSBTT0ZUV0FSRS4KLQotLy8gVGhpcyBpcyBhIEMrKyBoZWFkZXIt
b25seSBpbXBsZW1lbnRhdGlvbiBvZiBHcmlzdTIgYWxnb3JpdGhtIGZyb20gdGhlIHB1YmxpY2F0
aW9uOgotLy8gTG9pdHNjaCwgRmxvcmlhbi4gIlByaW50aW5nIGZsb2F0aW5nLXBvaW50IG51bWJl
cnMgcXVpY2tseSBhbmQgYWNjdXJhdGVseSB3aXRoCi0vLyBpbnRlZ2Vycy4iIEFDTSBTaWdwbGFu
IE5vdGljZXMgNDUuNiAoMjAxMCk6IDIzMy0yNDMuCi0KLSNpZm5kZWYgUkFQSURKU09OX0RUT0Ff
Ci0jZGVmaW5lIFJBUElESlNPTl9EVE9BXwotCi0jaW5jbHVkZSAiaXRvYS5oIiAvLyBHZXREaWdp
dHNMdXQoKQotI2luY2x1ZGUgImRpeWZwLmgiCi0KLVJBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4K
LW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLSNpZmRlZiBfX0dOVUNfXwotUkFQSURKU09OX0RJQUdf
UFVTSAotUkFQSURKU09OX0RJQUdfT0ZGKGVmZmMrKykKLSNlbmRpZgotCi1pbmxpbmUgdm9pZCBH
cmlzdVJvdW5kKGNoYXIqIGJ1ZmZlciwgaW50IGxlbiwgdWludDY0X3QgZGVsdGEsIHVpbnQ2NF90
IHJlc3QsIHVpbnQ2NF90IHRlbl9rYXBwYSwgdWludDY0X3Qgd3BfdykgewotICAgIHdoaWxlIChy
ZXN0IDwgd3BfdyAmJiBkZWx0YSAtIHJlc3QgPj0gdGVuX2thcHBhICYmCi0gICAgICAgICAgIChy
ZXN0ICsgdGVuX2thcHBhIDwgd3BfdyB8fCAgLy8vIGNsb3NlcgotICAgICAgICAgICAgd3BfdyAt
IHJlc3QgPiByZXN0ICsgdGVuX2thcHBhIC0gd3BfdykpIHsKLSAgICAgICAgYnVmZmVyW2xlbiAt
IDFdLS07Ci0gICAgICAgIHJlc3QgKz0gdGVuX2thcHBhOwotICAgIH0KLX0KLQotaW5saW5lIHVu
c2lnbmVkIENvdW50RGVjaW1hbERpZ2l0MzIodWludDMyX3QgbikgewotICAgIC8vIFNpbXBsZSBw
dXJlIEMrKyBpbXBsZW1lbnRhdGlvbiB3YXMgZmFzdGVyIHRoYW4gX19idWlsdGluX2NseiB2ZXJz
aW9uIGluIHRoaXMgc2l0dWF0aW9uLgotICAgIGlmIChuIDwgMTApIHJldHVybiAxOwotICAgIGlm
IChuIDwgMTAwKSByZXR1cm4gMjsKLSAgICBpZiAobiA8IDEwMDApIHJldHVybiAzOwotICAgIGlm
IChuIDwgMTAwMDApIHJldHVybiA0OwotICAgIGlmIChuIDwgMTAwMDAwKSByZXR1cm4gNTsKLSAg
ICBpZiAobiA8IDEwMDAwMDApIHJldHVybiA2OwotICAgIGlmIChuIDwgMTAwMDAwMDApIHJldHVy
biA3OwotICAgIGlmIChuIDwgMTAwMDAwMDAwKSByZXR1cm4gODsKLSAgICBpZiAobiA8IDEwMDAw
MDAwMDApIHJldHVybiA5OwotICAgIHJldHVybiAxMDsKLX0KLQotaW5saW5lIHZvaWQgRGlnaXRH
ZW4oY29uc3QgRGl5RnAmIFcsIGNvbnN0IERpeUZwJiBNcCwgdWludDY0X3QgZGVsdGEsIGNoYXIq
IGJ1ZmZlciwgaW50KiBsZW4sIGludCogSykgewotICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBr
UG93MTBbXSA9IHsgMSwgMTAsIDEwMCwgMTAwMCwgMTAwMDAsIDEwMDAwMCwgMTAwMDAwMCwgMTAw
MDAwMDAsIDEwMDAwMDAwMCwgMTAwMDAwMDAwMCB9OwotICAgIGNvbnN0IERpeUZwIG9uZSh1aW50
NjRfdCgxKSA8PCAtTXAuZSwgTXAuZSk7Ci0gICAgY29uc3QgRGl5RnAgd3BfdyA9IE1wIC0gVzsK
LSAgICB1aW50MzJfdCBwMSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihNcC5mID4+IC1vbmUuZSk7
Ci0gICAgdWludDY0X3QgcDIgPSBNcC5mICYgKG9uZS5mIC0gMSk7Ci0gICAgaW50IGthcHBhID0g
Q291bnREZWNpbWFsRGlnaXQzMihwMSk7Ci0gICAgKmxlbiA9IDA7Ci0KLSAgICB3aGlsZSAoa2Fw
cGEgPiAwKSB7Ci0gICAgICAgIHVpbnQzMl90IGQ7Ci0gICAgICAgIHN3aXRjaCAoa2FwcGEpIHsK
LSAgICAgICAgICAgIGNhc2UgMTA6IGQgPSBwMSAvIDEwMDAwMDAwMDA7IHAxICU9IDEwMDAwMDAw
MDA7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAgOTogZCA9IHAxIC8gIDEwMDAwMDAwMDsgcDEg
JT0gIDEwMDAwMDAwMDsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICA4OiBkID0gcDEgLyAgIDEw
MDAwMDAwOyBwMSAlPSAgIDEwMDAwMDAwOyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgIDc6IGQg
PSBwMSAvICAgIDEwMDAwMDA7IHAxICU9ICAgIDEwMDAwMDA7IGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSAgNjogZCA9IHAxIC8gICAgIDEwMDAwMDsgcDEgJT0gICAgIDEwMDAwMDsgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlICA1OiBkID0gcDEgLyAgICAgIDEwMDAwOyBwMSAlPSAgICAgIDEwMDAw
OyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgIDQ6IGQgPSBwMSAvICAgICAgIDEwMDA7IHAxICU9
ICAgICAgIDEwMDA7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAgMzogZCA9IHAxIC8gICAgICAg
IDEwMDsgcDEgJT0gICAgICAgIDEwMDsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICAyOiBkID0g
cDEgLyAgICAgICAgIDEwOyBwMSAlPSAgICAgICAgIDEwOyBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgIDE6IGQgPSBwMTsgICAgICAgICAgICAgIHAxID0gICAgICAgICAgIDA7IGJyZWFrOwotICAg
ICAgICAgICAgZGVmYXVsdDogCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikKLSAgICAgICAgICAgICAg
ICBfX2Fzc3VtZSgwKTsKLSNlbGlmIF9fR05VQ19fID4gNCB8fCAoX19HTlVDX18gPT0gNCAmJiBf
X0dOVUNfTUlOT1JfXyA+PSA1KQotICAgICAgICAgICAgICAgIF9fYnVpbHRpbl91bnJlYWNoYWJs
ZSgpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBkID0gMDsKLSNlbmRpZgotICAgICAgICB9Ci0g
ICAgICAgIGlmIChkIHx8ICpsZW4pCi0gICAgICAgICAgICBidWZmZXJbKCpsZW4pKytdID0gc3Rh
dGljX2Nhc3Q8Y2hhcj4oJzAnICsgc3RhdGljX2Nhc3Q8Y2hhcj4oZCkpOwotICAgICAgICBrYXBw
YS0tOwotICAgICAgICB1aW50NjRfdCB0bXAgPSAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHAxKSA8
PCAtb25lLmUpICsgcDI7Ci0gICAgICAgIGlmICh0bXAgPD0gZGVsdGEpIHsKLSAgICAgICAgICAg
ICpLICs9IGthcHBhOwotICAgICAgICAgICAgR3Jpc3VSb3VuZChidWZmZXIsICpsZW4sIGRlbHRh
LCB0bXAsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihrUG93MTBba2FwcGFdKSA8PCAtb25lLmUsIHdw
X3cuZik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBr
YXBwYSA9IDAKLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIHAyICo9IDEwOwotICAgICAgICBkZWx0
YSAqPSAxMDsKLSAgICAgICAgY2hhciBkID0gc3RhdGljX2Nhc3Q8Y2hhcj4ocDIgPj4gLW9uZS5l
KTsKLSAgICAgICAgaWYgKGQgfHwgKmxlbikKLSAgICAgICAgICAgIGJ1ZmZlclsoKmxlbikrK10g
PSBzdGF0aWNfY2FzdDxjaGFyPignMCcgKyBkKTsKLSAgICAgICAgcDIgJj0gb25lLmYgLSAxOwot
ICAgICAgICBrYXBwYS0tOwotICAgICAgICBpZiAocDIgPCBkZWx0YSkgewotICAgICAgICAgICAg
KksgKz0ga2FwcGE7Ci0gICAgICAgICAgICBHcmlzdVJvdW5kKGJ1ZmZlciwgKmxlbiwgZGVsdGEs
IHAyLCBvbmUuZiwgd3Bfdy5mICoga1BvdzEwWy1rYXBwYV0pOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgfQotfQotCi1pbmxpbmUgdm9pZCBHcmlzdTIoZG91YmxlIHZhbHVl
LCBjaGFyKiBidWZmZXIsIGludCogbGVuZ3RoLCBpbnQqIEspIHsKLSAgICBjb25zdCBEaXlGcCB2
KHZhbHVlKTsKLSAgICBEaXlGcCB3X20sIHdfcDsKLSAgICB2Lk5vcm1hbGl6ZWRCb3VuZGFyaWVz
KCZ3X20sICZ3X3ApOwotCi0gICAgY29uc3QgRGl5RnAgY19tayA9IEdldENhY2hlZFBvd2VyKHdf
cC5lLCBLKTsKLSAgICBjb25zdCBEaXlGcCBXID0gdi5Ob3JtYWxpemUoKSAqIGNfbWs7Ci0gICAg
RGl5RnAgV3AgPSB3X3AgKiBjX21rOwotICAgIERpeUZwIFdtID0gd19tICogY19tazsKLSAgICBX
bS5mKys7Ci0gICAgV3AuZi0tOwotICAgIERpZ2l0R2VuKFcsIFdwLCBXcC5mIC0gV20uZiwgYnVm
ZmVyLCBsZW5ndGgsIEspOwotfQotCi1pbmxpbmUgY2hhciogV3JpdGVFeHBvbmVudChpbnQgSywg
Y2hhciogYnVmZmVyKSB7Ci0gICAgaWYgKEsgPCAwKSB7Ci0gICAgICAgICpidWZmZXIrKyA9ICct
JzsKLSAgICAgICAgSyA9IC1LOwotICAgIH0KLQotICAgIGlmIChLID49IDEwMCkgewotICAgICAg
ICAqYnVmZmVyKysgPSBzdGF0aWNfY2FzdDxjaGFyPignMCcgKyBzdGF0aWNfY2FzdDxjaGFyPihL
IC8gMTAwKSk7Ci0gICAgICAgIEsgJT0gMTAwOwotICAgICAgICBjb25zdCBjaGFyKiBkID0gR2V0
RGlnaXRzTHV0KCkgKyBLICogMjsKLSAgICAgICAgKmJ1ZmZlcisrID0gZFswXTsKLSAgICAgICAg
KmJ1ZmZlcisrID0gZFsxXTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoSyA+PSAxMCkgewotICAgICAg
ICBjb25zdCBjaGFyKiBkID0gR2V0RGlnaXRzTHV0KCkgKyBLICogMjsKLSAgICAgICAgKmJ1ZmZl
cisrID0gZFswXTsKLSAgICAgICAgKmJ1ZmZlcisrID0gZFsxXTsKLSAgICB9Ci0gICAgZWxzZQot
ICAgICAgICAqYnVmZmVyKysgPSBzdGF0aWNfY2FzdDxjaGFyPignMCcgKyBzdGF0aWNfY2FzdDxj
aGFyPihLKSk7Ci0KLSAgICByZXR1cm4gYnVmZmVyOwotfQotCi1pbmxpbmUgY2hhciogUHJldHRp
ZnkoY2hhciogYnVmZmVyLCBpbnQgbGVuZ3RoLCBpbnQgaykgewotICAgIGNvbnN0IGludCBrayA9
IGxlbmd0aCArIGs7ICAvLyAxMF4oa2stMSkgPD0gdiA8IDEwXmtrCi0KLSAgICBpZiAobGVuZ3Ro
IDw9IGtrICYmIGtrIDw9IDIxKSB7Ci0gICAgICAgIC8vIDEyMzRlNyAtPiAxMjM0MDAwMDAwMAot
ICAgICAgICBmb3IgKGludCBpID0gbGVuZ3RoOyBpIDwga2s7IGkrKykKLSAgICAgICAgICAgIGJ1
ZmZlcltpXSA9ICcwJzsKLSAgICAgICAgYnVmZmVyW2trXSA9ICcuJzsKLSAgICAgICAgYnVmZmVy
W2trICsgMV0gPSAnMCc7Ci0gICAgICAgIHJldHVybiAmYnVmZmVyW2trICsgMl07Ci0gICAgfQot
ICAgIGVsc2UgaWYgKDAgPCBrayAmJiBrayA8PSAyMSkgewotICAgICAgICAvLyAxMjM0ZS0yIC0+
IDEyLjM0Ci0gICAgICAgIHN0ZDo6bWVtbW92ZSgmYnVmZmVyW2trICsgMV0sICZidWZmZXJba2td
LCBsZW5ndGggLSBrayk7Ci0gICAgICAgIGJ1ZmZlcltra10gPSAnLic7Ci0gICAgICAgIHJldHVy
biAmYnVmZmVyW2xlbmd0aCArIDFdOwotICAgIH0KLSAgICBlbHNlIGlmICgtNiA8IGtrICYmIGtr
IDw9IDApIHsKLSAgICAgICAgLy8gMTIzNGUtNiAtPiAwLjAwMTIzNAotICAgICAgICBjb25zdCBp
bnQgb2Zmc2V0ID0gMiAtIGtrOwotICAgICAgICBzdGQ6Om1lbW1vdmUoJmJ1ZmZlcltvZmZzZXRd
LCAmYnVmZmVyWzBdLCBsZW5ndGgpOwotICAgICAgICBidWZmZXJbMF0gPSAnMCc7Ci0gICAgICAg
IGJ1ZmZlclsxXSA9ICcuJzsKLSAgICAgICAgZm9yIChpbnQgaSA9IDI7IGkgPCBvZmZzZXQ7IGkr
KykKLSAgICAgICAgICAgIGJ1ZmZlcltpXSA9ICcwJzsKLSAgICAgICAgcmV0dXJuICZidWZmZXJb
bGVuZ3RoICsgb2Zmc2V0XTsKLSAgICB9Ci0gICAgZWxzZSBpZiAobGVuZ3RoID09IDEpIHsKLSAg
ICAgICAgLy8gMWUzMAotICAgICAgICBidWZmZXJbMV0gPSAnZSc7Ci0gICAgICAgIHJldHVybiBX
cml0ZUV4cG9uZW50KGtrIC0gMSwgJmJ1ZmZlclsyXSk7Ci0gICAgfQotICAgIGVsc2UgewotICAg
ICAgICAvLyAxMjM0ZTMwIC0+IDEuMjM0ZTMzCi0gICAgICAgIHN0ZDo6bWVtbW92ZSgmYnVmZmVy
WzJdLCAmYnVmZmVyWzFdLCBsZW5ndGggLSAxKTsKLSAgICAgICAgYnVmZmVyWzFdID0gJy4nOwot
ICAgICAgICBidWZmZXJbbGVuZ3RoICsgMV0gPSAnZSc7Ci0gICAgICAgIHJldHVybiBXcml0ZUV4
cG9uZW50KGtrIC0gMSwgJmJ1ZmZlclswICsgbGVuZ3RoICsgMl0pOwotICAgIH0KLX0KLQotaW5s
aW5lIGNoYXIqIGR0b2EoZG91YmxlIHZhbHVlLCBjaGFyKiBidWZmZXIpIHsKLSAgICBpZiAodmFs
dWUgPT0gMCkgewotICAgICAgICBidWZmZXJbMF0gPSAnMCc7Ci0gICAgICAgIGJ1ZmZlclsxXSA9
ICcuJzsKLSAgICAgICAgYnVmZmVyWzJdID0gJzAnOwotICAgICAgICByZXR1cm4gJmJ1ZmZlclsz
XTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmICh2YWx1ZSA8IDApIHsKLSAgICAgICAg
ICAgICpidWZmZXIrKyA9ICctJzsKLSAgICAgICAgICAgIHZhbHVlID0gLXZhbHVlOwotICAgICAg
ICB9Ci0gICAgICAgIGludCBsZW5ndGgsIEs7Ci0gICAgICAgIEdyaXN1Mih2YWx1ZSwgYnVmZmVy
LCAmbGVuZ3RoLCAmSyk7Ci0gICAgICAgIHJldHVybiBQcmV0dGlmeShidWZmZXIsIGxlbmd0aCwg
Syk7Ci0gICAgfQotfQotCi0jaWZkZWYgX19HTlVDX18KLVJBUElESlNPTl9ESUFHX1BPUAotI2Vu
ZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGludGVybmFsCi1SQVBJREpTT05fTkFNRVNQQUNFX0VORAot
Ci0jZW5kaWYgLy8gUkFQSURKU09OX0RUT0FfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29u
L2ludGVybmFsL2llZWU3NTQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90
aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvaWVlZTc1NC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjY1Y2M5YTgyMC4uMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlk
anNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9pZWVlNzU0LmgKKysrIC9kZXYvbnVsbApA
QCAtMSw5MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAKLS8vCi0vLyBQ
ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv
biBvYnRhaW5pbmcgYSBjb3B5Ci0vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv
Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAotLy8gaW4gdGhlIFNv
ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24g
dGhlIHJpZ2h0cwotLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0
cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotLy8gY29waWVzIG9mIHRoZSBTb2Z0d2Fy
ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0vLyBmdXJu
aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotLy8K
LS8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl
IHNoYWxsIGJlIGluY2x1ZGVkIGluCi0vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp
b25zIG9mIHRoZSBTb2Z0d2FyZS4KLS8vCi0vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT
IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotLy8gSU1QTElF
RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFksCi0vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G
UklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLS8vIEFVVEhPUlMgT1IgQ09QWVJJR0hU
IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLS8vIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX
SVNFLCBBUklTSU5HIEZST00sCi0vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT
T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCi0vLyBUSEUgU09GVFdBUkUu
Ci0KLSNpZm5kZWYgUkFQSURKU09OX0lFRUU3NTRfCi0jZGVmaW5lIFJBUElESlNPTl9JRUVFNzU0
XwotCi0jaW5jbHVkZSAiLi4vcmFwaWRqc29uLmgiCi0KLVJBUElESlNPTl9OQU1FU1BBQ0VfQkVH
SU4KLW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLWNsYXNzIERvdWJsZSB7Ci1wdWJsaWM6Ci0gICAg
RG91YmxlKCkge30KLSAgICBEb3VibGUoZG91YmxlIGQpIDogZChkKSB7fQotICAgIERvdWJsZSh1
aW50NjRfdCB1KSA6IHUodSkge30KLQotICAgIGRvdWJsZSBWYWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IGQ7IH0KLSAgICB1aW50NjRfdCBVaW50NjRWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIHU7IH0KLQot
ICAgIGRvdWJsZSBOZXh0UG9zaXRpdmVEb3VibGUoKSBjb25zdCB7Ci0gICAgICAgIFJBUElESlNP
Tl9BU1NFUlQoIVNpZ24oKSk7Ci0gICAgICAgIHJldHVybiBEb3VibGUodSArIDEpLlZhbHVlKCk7
Ci0gICAgfQotCi0gICAgZG91YmxlIFByZXZpb3VzUG9zaXRpdmVEb3VibGUoKSBjb25zdCB7Ci0g
ICAgICAgIFJBUElESlNPTl9BU1NFUlQoIVNpZ24oKSk7Ci0gICAgICAgIGlmIChkID09IDAuMCkK
LSAgICAgICAgICAgIHJldHVybiAwLjA7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVy
biBEb3VibGUodSAtIDEpLlZhbHVlKCk7Ci0gICAgfQotCi0gICAgYm9vbCBTaWduKCkgY29uc3Qg
eyByZXR1cm4gKHUgJiBrU2lnbk1hc2spICE9IDA7IH0KLSAgICB1aW50NjRfdCBTaWduaWZpY2Fu
ZCgpIGNvbnN0IHsgcmV0dXJuIHUgJiBrU2lnbmlmaWNhbmRNYXNrOyB9Ci0gICAgaW50IEV4cG9u
ZW50KCkgY29uc3QgeyByZXR1cm4gKCh1ICYga0V4cG9uZW50TWFzaykgPj4ga1NpZ25pZmljYW5k
U2l6ZSkgLSBrRXhwb25lbnRCaWFzOyB9Ci0KLSAgICBib29sIElzTmFuKCkgY29uc3QgeyByZXR1
cm4gKHUgJiBrRXhwb25lbnRNYXNrKSA9PSBrRXhwb25lbnRNYXNrICYmIFNpZ25pZmljYW5kKCkg
IT0gMDsgfQotICAgIGJvb2wgSXNJbmYoKSBjb25zdCB7IHJldHVybiAodSAmIGtFeHBvbmVudE1h
c2spID09IGtFeHBvbmVudE1hc2sgJiYgU2lnbmlmaWNhbmQoKSA9PSAwOyB9Ci0gICAgYm9vbCBJ
c05vcm1hbCgpIGNvbnN0IHsgcmV0dXJuICh1ICYga0V4cG9uZW50TWFzaykgIT0gMCB8fCBTaWdu
aWZpY2FuZCgpID09IDA7IH0KLQotICAgIHVpbnQ2NF90IEludGVnZXJTaWduaWZpY2FuZCgpIGNv
bnN0IHsgcmV0dXJuIElzTm9ybWFsKCkgPyBTaWduaWZpY2FuZCgpIHwga0hpZGRlbkJpdCA6IFNp
Z25pZmljYW5kKCk7IH0KLSAgICBpbnQgSW50ZWdlckV4cG9uZW50KCkgY29uc3QgeyByZXR1cm4g
KElzTm9ybWFsKCkgPyBFeHBvbmVudCgpIDoga0Rlbm9ybWFsRXhwb25lbnQpIC0ga1NpZ25pZmlj
YW5kU2l6ZTsgfQotICAgIHVpbnQ2NF90IFRvQmlhcygpIGNvbnN0IHsgcmV0dXJuICh1ICYga1Np
Z25NYXNrKSA/IH51ICsgMSA6IHUgfCBrU2lnbk1hc2s7IH0KLQotICAgIHN0YXRpYyB1bnNpZ25l
ZCBFZmZlY3RpdmVTaWduaWZpY2FuZFNpemUoaW50IG9yZGVyKSB7Ci0gICAgICAgIGlmIChvcmRl
ciA+PSAtMTAyMSkKLSAgICAgICAgICAgIHJldHVybiA1MzsKLSAgICAgICAgZWxzZSBpZiAob3Jk
ZXIgPD0gLTEwNzQpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcmV0dXJuIG9yZGVyICsgMTA3NDsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGlj
IGNvbnN0IGludCBrU2lnbmlmaWNhbmRTaXplID0gNTI7Ci0gICAgc3RhdGljIGNvbnN0IGludCBr
RXhwb25lbnRCaWFzID0gMHgzRkY7Ci0gICAgc3RhdGljIGNvbnN0IGludCBrRGVub3JtYWxFeHBv
bmVudCA9IDEgLSBrRXhwb25lbnRCaWFzOwotICAgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBrU2ln
bk1hc2sgPSBSQVBJREpTT05fVUlOVDY0X0MyKDB4ODAwMDAwMDAsIDB4MDAwMDAwMDApOwotICAg
IHN0YXRpYyBjb25zdCB1aW50NjRfdCBrRXhwb25lbnRNYXNrID0gUkFQSURKU09OX1VJTlQ2NF9D
MigweDdGRjAwMDAwLCAweDAwMDAwMDAwKTsKLSAgICBzdGF0aWMgY29uc3QgdWludDY0X3Qga1Np
Z25pZmljYW5kTWFzayA9IFJBUElESlNPTl9VSU5UNjRfQzIoMHgwMDBGRkZGRiwgMHhGRkZGRkZG
Rik7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGtIaWRkZW5CaXQgPSBSQVBJREpTT05fVUlO
VDY0X0MyKDB4MDAxMDAwMDAsIDB4MDAwMDAwMDApOwotCi0gICAgdW5pb24gewotICAgICAgICBk
b3VibGUgZDsKLSAgICAgICAgdWludDY0X3QgdTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3Bh
Y2UgaW50ZXJuYWwKLVJBUElESlNPTl9OQU1FU1BBQ0VfRU5ECi0KLSNlbmRpZiAvLyBSQVBJREpT
T05fSUVFRTc1NF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvaXRvYS5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNv
bi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9pdG9hLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDM2ODRmMDczNjNmLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29u
L2ludGVybmFsL2l0b2EuaAorKysgL2Rldi9udWxsCkBAIC0xLDMwNiArMCwwIEBACi0vLyBDb3B5
cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAKLS8vCi0vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu
dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0vLyBv
ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAi
U29mdHdhcmUiKSwgdG8gZGVhbAotLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp
b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotLy8gdG8gdXNlLCBj
b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQv
b3Igc2VsbAotLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25z
IHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3Qg
dG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotLy8KLS8vIFRoZSBhYm92ZSBjb3B5cmlnaHQg
bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0v
LyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLS8v
Ci0vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP
RiBBTlkgS0lORCwgRVhQUkVTUyBPUgotLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN
SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0vLyBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUKLS8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBB
TlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLS8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB
Q1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi0vLyBP
VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9U
SEVSIERFQUxJTkdTIElOCi0vLyBUSEUgU09GVFdBUkUuCi0KLSNpZm5kZWYgUkFQSURKU09OX0lU
T0FfCi0jZGVmaW5lIFJBUElESlNPTl9JVE9BXwotCi1SQVBJREpTT05fTkFNRVNQQUNFX0JFR0lO
Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi1pbmxpbmUgY29uc3QgY2hhciogR2V0RGlnaXRzTHV0
KCkgewotICAgIHN0YXRpYyBjb25zdCBjaGFyIGNEaWdpdHNMdXRbMjAwXSA9IHsKLSAgICAgICAg
JzAnLCcwJywnMCcsJzEnLCcwJywnMicsJzAnLCczJywnMCcsJzQnLCcwJywnNScsJzAnLCc2Jywn
MCcsJzcnLCcwJywnOCcsJzAnLCc5JywKLSAgICAgICAgJzEnLCcwJywnMScsJzEnLCcxJywnMics
JzEnLCczJywnMScsJzQnLCcxJywnNScsJzEnLCc2JywnMScsJzcnLCcxJywnOCcsJzEnLCc5JywK
LSAgICAgICAgJzInLCcwJywnMicsJzEnLCcyJywnMicsJzInLCczJywnMicsJzQnLCcyJywnNScs
JzInLCc2JywnMicsJzcnLCcyJywnOCcsJzInLCc5JywKLSAgICAgICAgJzMnLCcwJywnMycsJzEn
LCczJywnMicsJzMnLCczJywnMycsJzQnLCczJywnNScsJzMnLCc2JywnMycsJzcnLCczJywnOCcs
JzMnLCc5JywKLSAgICAgICAgJzQnLCcwJywnNCcsJzEnLCc0JywnMicsJzQnLCczJywnNCcsJzQn
LCc0JywnNScsJzQnLCc2JywnNCcsJzcnLCc0JywnOCcsJzQnLCc5JywKLSAgICAgICAgJzUnLCcw
JywnNScsJzEnLCc1JywnMicsJzUnLCczJywnNScsJzQnLCc1JywnNScsJzUnLCc2JywnNScsJzcn
LCc1JywnOCcsJzUnLCc5JywKLSAgICAgICAgJzYnLCcwJywnNicsJzEnLCc2JywnMicsJzYnLCcz
JywnNicsJzQnLCc2JywnNScsJzYnLCc2JywnNicsJzcnLCc2JywnOCcsJzYnLCc5JywKLSAgICAg
ICAgJzcnLCcwJywnNycsJzEnLCc3JywnMicsJzcnLCczJywnNycsJzQnLCc3JywnNScsJzcnLCc2
JywnNycsJzcnLCc3JywnOCcsJzcnLCc5JywKLSAgICAgICAgJzgnLCcwJywnOCcsJzEnLCc4Jywn
MicsJzgnLCczJywnOCcsJzQnLCc4JywnNScsJzgnLCc2JywnOCcsJzcnLCc4JywnOCcsJzgnLCc5
JywKLSAgICAgICAgJzknLCcwJywnOScsJzEnLCc5JywnMicsJzknLCczJywnOScsJzQnLCc5Jywn
NScsJzknLCc2JywnOScsJzcnLCc5JywnOCcsJzknLCc5JwotICAgIH07Ci0gICAgcmV0dXJuIGNE
aWdpdHNMdXQ7Ci19Ci0KLWlubGluZSBjaGFyKiB1MzJ0b2EodWludDMyX3QgdmFsdWUsIGNoYXIq
IGJ1ZmZlcikgewotICAgIGNvbnN0IGNoYXIqIGNEaWdpdHNMdXQgPSBHZXREaWdpdHNMdXQoKTsK
LQotICAgIGlmICh2YWx1ZSA8IDEwMDAwKSB7Ci0gICAgICAgIGNvbnN0IHVpbnQzMl90IGQxID0g
KHZhbHVlIC8gMTAwKSA8PCAxOwotICAgICAgICBjb25zdCB1aW50MzJfdCBkMiA9ICh2YWx1ZSAl
IDEwMCkgPDwgMTsKLSAgICAgICAgCi0gICAgICAgIGlmICh2YWx1ZSA+PSAxMDAwKQotICAgICAg
ICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMV07Ci0gICAgICAgIGlmICh2YWx1ZSA+PSAx
MDApCi0gICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QxICsgMV07Ci0gICAgICAg
IGlmICh2YWx1ZSA+PSAxMCkKLSAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDJd
OwotICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QyICsgMV07Ci0gICAgfQotICAgIGVs
c2UgaWYgKHZhbHVlIDwgMTAwMDAwMDAwKSB7Ci0gICAgICAgIC8vIHZhbHVlID0gYmJiYmNjY2MK
LSAgICAgICAgY29uc3QgdWludDMyX3QgYiA9IHZhbHVlIC8gMTAwMDA7Ci0gICAgICAgIGNvbnN0
IHVpbnQzMl90IGMgPSB2YWx1ZSAlIDEwMDAwOwotICAgICAgICAKLSAgICAgICAgY29uc3QgdWlu
dDMyX3QgZDEgPSAoYiAvIDEwMCkgPDwgMTsKLSAgICAgICAgY29uc3QgdWludDMyX3QgZDIgPSAo
YiAlIDEwMCkgPDwgMTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IHVpbnQzMl90IGQzID0gKGMg
LyAxMDApIDw8IDE7Ci0gICAgICAgIGNvbnN0IHVpbnQzMl90IGQ0ID0gKGMgJSAxMDApIDw8IDE7
Ci0gICAgICAgIAotICAgICAgICBpZiAodmFsdWUgPj0gMTAwMDAwMDApCi0gICAgICAgICAgICAq
YnVmZmVyKysgPSBjRGlnaXRzTHV0W2QxXTsKLSAgICAgICAgaWYgKHZhbHVlID49IDEwMDAwMDAp
Ci0gICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QxICsgMV07Ci0gICAgICAgIGlm
ICh2YWx1ZSA+PSAxMDAwMDApCi0gICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Qy
XTsKLSAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMiArIDFdOwotICAgICAgICAKLSAg
ICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkM107Ci0gICAgICAgICpidWZmZXIrKyA9IGNE
aWdpdHNMdXRbZDMgKyAxXTsKLSAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNF07Ci0g
ICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDQgKyAxXTsKLSAgICB9Ci0gICAgZWxzZSB7
Ci0gICAgICAgIC8vIHZhbHVlID0gYWFiYmJiY2NjYyBpbiBkZWNpbWFsCi0gICAgICAgIAotICAg
ICAgICBjb25zdCB1aW50MzJfdCBhID0gdmFsdWUgLyAxMDAwMDAwMDA7IC8vIDEgdG8gNDIKLSAg
ICAgICAgdmFsdWUgJT0gMTAwMDAwMDAwOwotICAgICAgICAKLSAgICAgICAgaWYgKGEgPj0gMTAp
IHsKLSAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGkgPSBhIDw8IDE7Ci0gICAgICAgICAgICAq
YnVmZmVyKysgPSBjRGlnaXRzTHV0W2ldOwotICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0
c0x1dFtpICsgMV07Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgKmJ1ZmZl
cisrID0gc3RhdGljX2Nhc3Q8Y2hhcj4oJzAnICsgc3RhdGljX2Nhc3Q8Y2hhcj4oYSkpOwotCi0g
ICAgICAgIGNvbnN0IHVpbnQzMl90IGIgPSB2YWx1ZSAvIDEwMDAwOyAvLyAwIHRvIDk5OTkKLSAg
ICAgICAgY29uc3QgdWludDMyX3QgYyA9IHZhbHVlICUgMTAwMDA7IC8vIDAgdG8gOTk5OQotICAg
ICAgICAKLSAgICAgICAgY29uc3QgdWludDMyX3QgZDEgPSAoYiAvIDEwMCkgPDwgMTsKLSAgICAg
ICAgY29uc3QgdWludDMyX3QgZDIgPSAoYiAlIDEwMCkgPDwgMTsKLSAgICAgICAgCi0gICAgICAg
IGNvbnN0IHVpbnQzMl90IGQzID0gKGMgLyAxMDApIDw8IDE7Ci0gICAgICAgIGNvbnN0IHVpbnQz
Ml90IGQ0ID0gKGMgJSAxMDApIDw8IDE7Ci0gICAgICAgIAotICAgICAgICAqYnVmZmVyKysgPSBj
RGlnaXRzTHV0W2QxXTsKLSAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMSArIDFdOwot
ICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QyXTsKLSAgICAgICAgKmJ1ZmZlcisrID0g
Y0RpZ2l0c0x1dFtkMiArIDFdOwotICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QzXTsK
LSAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMyArIDFdOwotICAgICAgICAqYnVmZmVy
KysgPSBjRGlnaXRzTHV0W2Q0XTsKLSAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNCAr
IDFdOwotICAgIH0KLSAgICByZXR1cm4gYnVmZmVyOwotfQotCi1pbmxpbmUgY2hhciogaTMydG9h
KGludDMyX3QgdmFsdWUsIGNoYXIqIGJ1ZmZlcikgewotICAgIGlmICh2YWx1ZSA8IDApIHsKLSAg
ICAgICAgKmJ1ZmZlcisrID0gJy0nOwotICAgICAgICB2YWx1ZSA9IC12YWx1ZTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gdTMydG9hKHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSksIGJ1ZmZlcik7
Ci19Ci0KLWlubGluZSBjaGFyKiB1NjR0b2EodWludDY0X3QgdmFsdWUsIGNoYXIqIGJ1ZmZlcikg
ewotICAgIGNvbnN0IGNoYXIqIGNEaWdpdHNMdXQgPSBHZXREaWdpdHNMdXQoKTsKLSAgICBjb25z
dCB1aW50NjRfdCAga1RlbjggPSAxMDAwMDAwMDA7Ci0gICAgY29uc3QgdWludDY0X3QgIGtUZW45
ID0ga1RlbjggKiAxMDsKLSAgICBjb25zdCB1aW50NjRfdCBrVGVuMTAgPSBrVGVuOCAqIDEwMDsK
LSAgICBjb25zdCB1aW50NjRfdCBrVGVuMTEgPSBrVGVuOCAqIDEwMDA7Ci0gICAgY29uc3QgdWlu
dDY0X3Qga1RlbjEyID0ga1RlbjggKiAxMDAwMDsKLSAgICBjb25zdCB1aW50NjRfdCBrVGVuMTMg
PSBrVGVuOCAqIDEwMDAwMDsKLSAgICBjb25zdCB1aW50NjRfdCBrVGVuMTQgPSBrVGVuOCAqIDEw
MDAwMDA7Ci0gICAgY29uc3QgdWludDY0X3Qga1RlbjE1ID0ga1RlbjggKiAxMDAwMDAwMDsKLSAg
ICBjb25zdCB1aW50NjRfdCBrVGVuMTYgPSBrVGVuOCAqIGtUZW44OwotICAgIAotICAgIGlmICh2
YWx1ZSA8IGtUZW44KSB7Ci0gICAgICAgIHVpbnQzMl90IHYgPSBzdGF0aWNfY2FzdDx1aW50MzJf
dD4odmFsdWUpOwotICAgICAgICBpZiAodiA8IDEwMDAwKSB7Ci0gICAgICAgICAgICBjb25zdCB1
aW50MzJfdCBkMSA9ICh2IC8gMTAwKSA8PCAxOwotICAgICAgICAgICAgY29uc3QgdWludDMyX3Qg
ZDIgPSAodiAlIDEwMCkgPDwgMTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHYgPj0g
MTAwMCkKLSAgICAgICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QxXTsKLSAgICAg
ICAgICAgIGlmICh2ID49IDEwMCkKLSAgICAgICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRz
THV0W2QxICsgMV07Ci0gICAgICAgICAgICBpZiAodiA+PSAxMCkKLSAgICAgICAgICAgICAgICAq
YnVmZmVyKysgPSBjRGlnaXRzTHV0W2QyXTsKLSAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdp
dHNMdXRbZDIgKyAxXTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8v
IHZhbHVlID0gYmJiYmNjY2MKLSAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGIgPSB2IC8gMTAw
MDA7Ci0gICAgICAgICAgICBjb25zdCB1aW50MzJfdCBjID0gdiAlIDEwMDAwOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBjb25zdCB1aW50MzJfdCBkMSA9IChiIC8gMTAwKSA8PCAxOwotICAg
ICAgICAgICAgY29uc3QgdWludDMyX3QgZDIgPSAoYiAlIDEwMCkgPDwgMTsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgY29uc3QgdWludDMyX3QgZDMgPSAoYyAvIDEwMCkgPDwgMTsKLSAgICAg
ICAgICAgIGNvbnN0IHVpbnQzMl90IGQ0ID0gKGMgJSAxMDApIDw8IDE7Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIGlmICh2YWx1ZSA+PSAxMDAwMDAwMCkKLSAgICAgICAgICAgICAgICAqYnVm
ZmVyKysgPSBjRGlnaXRzTHV0W2QxXTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA+PSAxMDAwMDAw
KQotICAgICAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDEgKyAxXTsKLSAgICAg
ICAgICAgIGlmICh2YWx1ZSA+PSAxMDAwMDApCi0gICAgICAgICAgICAgICAgKmJ1ZmZlcisrID0g
Y0RpZ2l0c0x1dFtkMl07Ci0gICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QyICsg
MV07Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDNd
OwotICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMyArIDFdOwotICAgICAgICAg
ICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNF07Ci0gICAgICAgICAgICAqYnVmZmVyKysgPSBj
RGlnaXRzTHV0W2Q0ICsgMV07Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAodmFsdWUg
PCBrVGVuMTYpIHsKLSAgICAgICAgY29uc3QgdWludDMyX3QgdjAgPSBzdGF0aWNfY2FzdDx1aW50
MzJfdD4odmFsdWUgLyBrVGVuOCk7Ci0gICAgICAgIGNvbnN0IHVpbnQzMl90IHYxID0gc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHZhbHVlICUga1RlbjgpOwotICAgICAgICAKLSAgICAgICAgY29uc3Qg
dWludDMyX3QgYjAgPSB2MCAvIDEwMDAwOwotICAgICAgICBjb25zdCB1aW50MzJfdCBjMCA9IHYw
ICUgMTAwMDA7Ci0gICAgICAgIAotICAgICAgICBjb25zdCB1aW50MzJfdCBkMSA9IChiMCAvIDEw
MCkgPDwgMTsKLSAgICAgICAgY29uc3QgdWludDMyX3QgZDIgPSAoYjAgJSAxMDApIDw8IDE7Ci0g
ICAgICAgIAotICAgICAgICBjb25zdCB1aW50MzJfdCBkMyA9IChjMCAvIDEwMCkgPDwgMTsKLSAg
ICAgICAgY29uc3QgdWludDMyX3QgZDQgPSAoYzAgJSAxMDApIDw8IDE7Ci0KLSAgICAgICAgY29u
c3QgdWludDMyX3QgYjEgPSB2MSAvIDEwMDAwOwotICAgICAgICBjb25zdCB1aW50MzJfdCBjMSA9
IHYxICUgMTAwMDA7Ci0gICAgICAgIAotICAgICAgICBjb25zdCB1aW50MzJfdCBkNSA9IChiMSAv
IDEwMCkgPDwgMTsKLSAgICAgICAgY29uc3QgdWludDMyX3QgZDYgPSAoYjEgJSAxMDApIDw8IDE7
Ci0gICAgICAgIAotICAgICAgICBjb25zdCB1aW50MzJfdCBkNyA9IChjMSAvIDEwMCkgPDwgMTsK
LSAgICAgICAgY29uc3QgdWludDMyX3QgZDggPSAoYzEgJSAxMDApIDw8IDE7Ci0KLSAgICAgICAg
aWYgKHZhbHVlID49IGtUZW4xNSkKLSAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRb
ZDFdOwotICAgICAgICBpZiAodmFsdWUgPj0ga1RlbjE0KQotICAgICAgICAgICAgKmJ1ZmZlcisr
ID0gY0RpZ2l0c0x1dFtkMSArIDFdOwotICAgICAgICBpZiAodmFsdWUgPj0ga1RlbjEzKQotICAg
ICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkMl07Ci0gICAgICAgIGlmICh2YWx1ZSA+
PSBrVGVuMTIpCi0gICAgICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2QyICsgMV07Ci0g
ICAgICAgIGlmICh2YWx1ZSA+PSBrVGVuMTEpCi0gICAgICAgICAgICAqYnVmZmVyKysgPSBjRGln
aXRzTHV0W2QzXTsKLSAgICAgICAgaWYgKHZhbHVlID49IGtUZW4xMCkKLSAgICAgICAgICAgICpi
dWZmZXIrKyA9IGNEaWdpdHNMdXRbZDMgKyAxXTsKLSAgICAgICAgaWYgKHZhbHVlID49IGtUZW45
KQotICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNF07Ci0gICAgICAgIGlmICh2
YWx1ZSA+PSBrVGVuOCkKLSAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDQgKyAx
XTsKLSAgICAgICAgCi0gICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDVdOwotICAgICAg
ICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q1ICsgMV07Ci0gICAgICAgICpidWZmZXIrKyA9IGNE
aWdpdHNMdXRbZDZdOwotICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q2ICsgMV07Ci0g
ICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDddOwotICAgICAgICAqYnVmZmVyKysgPSBj
RGlnaXRzTHV0W2Q3ICsgMV07Ci0gICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDhdOwot
ICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2Q4ICsgMV07Ci0gICAgfQotICAgIGVsc2Ug
ewotICAgICAgICBjb25zdCB1aW50MzJfdCBhID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHZhbHVl
IC8ga1RlbjE2KTsgLy8gMSB0byAxODQ0Ci0gICAgICAgIHZhbHVlICU9IGtUZW4xNjsKLSAgICAg
ICAgCi0gICAgICAgIGlmIChhIDwgMTApCi0gICAgICAgICAgICAqYnVmZmVyKysgPSBzdGF0aWNf
Y2FzdDxjaGFyPignMCcgKyBzdGF0aWNfY2FzdDxjaGFyPihhKSk7Ci0gICAgICAgIGVsc2UgaWYg
KGEgPCAxMDApIHsKLSAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IGkgPSBhIDw8IDE7Ci0gICAg
ICAgICAgICAqYnVmZmVyKysgPSBjRGlnaXRzTHV0W2ldOwotICAgICAgICAgICAgKmJ1ZmZlcisr
ID0gY0RpZ2l0c0x1dFtpICsgMV07Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoYSA8IDEw
MDApIHsKLSAgICAgICAgICAgICpidWZmZXIrKyA9IHN0YXRpY19jYXN0PGNoYXI+KCcwJyArIHN0
YXRpY19jYXN0PGNoYXI+KGEgLyAxMDApKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgY29u
c3QgdWludDMyX3QgaSA9IChhICUgMTAwKSA8PCAxOwotICAgICAgICAgICAgKmJ1ZmZlcisrID0g
Y0RpZ2l0c0x1dFtpXTsKLSAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbaSArIDFd
OwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgY29uc3QgdWludDMyX3Qg
aSA9IChhIC8gMTAwKSA8PCAxOwotICAgICAgICAgICAgY29uc3QgdWludDMyX3QgaiA9IChhICUg
MTAwKSA8PCAxOwotICAgICAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtpXTsKLSAgICAg
ICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbaSArIDFdOwotICAgICAgICAgICAgKmJ1ZmZl
cisrID0gY0RpZ2l0c0x1dFtqXTsKLSAgICAgICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRb
aiArIDFdOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBjb25zdCB1aW50MzJfdCB2MCA9
IHN0YXRpY19jYXN0PHVpbnQzMl90Pih2YWx1ZSAvIGtUZW44KTsKLSAgICAgICAgY29uc3QgdWlu
dDMyX3QgdjEgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4odmFsdWUgJSBrVGVuOCk7Ci0gICAgICAg
IAotICAgICAgICBjb25zdCB1aW50MzJfdCBiMCA9IHYwIC8gMTAwMDA7Ci0gICAgICAgIGNvbnN0
IHVpbnQzMl90IGMwID0gdjAgJSAxMDAwMDsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IHVpbnQz
Ml90IGQxID0gKGIwIC8gMTAwKSA8PCAxOwotICAgICAgICBjb25zdCB1aW50MzJfdCBkMiA9IChi
MCAlIDEwMCkgPDwgMTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IHVpbnQzMl90IGQzID0gKGMw
IC8gMTAwKSA8PCAxOwotICAgICAgICBjb25zdCB1aW50MzJfdCBkNCA9IChjMCAlIDEwMCkgPDwg
MTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0IHVpbnQzMl90IGIxID0gdjEgLyAxMDAwMDsKLSAg
ICAgICAgY29uc3QgdWludDMyX3QgYzEgPSB2MSAlIDEwMDAwOwotICAgICAgICAKLSAgICAgICAg
Y29uc3QgdWludDMyX3QgZDUgPSAoYjEgLyAxMDApIDw8IDE7Ci0gICAgICAgIGNvbnN0IHVpbnQz
Ml90IGQ2ID0gKGIxICUgMTAwKSA8PCAxOwotICAgICAgICAKLSAgICAgICAgY29uc3QgdWludDMy
X3QgZDcgPSAoYzEgLyAxMDApIDw8IDE7Ci0gICAgICAgIGNvbnN0IHVpbnQzMl90IGQ4ID0gKGMx
ICUgMTAwKSA8PCAxOwotICAgICAgICAKLSAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtk
MV07Ci0gICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDEgKyAxXTsKLSAgICAgICAgKmJ1
ZmZlcisrID0gY0RpZ2l0c0x1dFtkMl07Ci0gICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRb
ZDIgKyAxXTsKLSAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkM107Ci0gICAgICAgICpi
dWZmZXIrKyA9IGNEaWdpdHNMdXRbZDMgKyAxXTsKLSAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0
c0x1dFtkNF07Ci0gICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDQgKyAxXTsKLSAgICAg
ICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNV07Ci0gICAgICAgICpidWZmZXIrKyA9IGNEaWdp
dHNMdXRbZDUgKyAxXTsKLSAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkNl07Ci0gICAg
ICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDYgKyAxXTsKLSAgICAgICAgKmJ1ZmZlcisrID0g
Y0RpZ2l0c0x1dFtkN107Ci0gICAgICAgICpidWZmZXIrKyA9IGNEaWdpdHNMdXRbZDcgKyAxXTsK
LSAgICAgICAgKmJ1ZmZlcisrID0gY0RpZ2l0c0x1dFtkOF07Ci0gICAgICAgICpidWZmZXIrKyA9
IGNEaWdpdHNMdXRbZDggKyAxXTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGJ1ZmZlcjsKLX0K
LQotaW5saW5lIGNoYXIqIGk2NHRvYShpbnQ2NF90IHZhbHVlLCBjaGFyKiBidWZmZXIpIHsKLSAg
ICBpZiAodmFsdWUgPCAwKSB7Ci0gICAgICAgICpidWZmZXIrKyA9ICctJzsKLSAgICAgICAgdmFs
dWUgPSAtdmFsdWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHU2NHRvYShzdGF0aWNfY2FzdDx1aW50
NjRfdD4odmFsdWUpLCBidWZmZXIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotUkFQ
SURKU09OX05BTUVTUEFDRV9FTkQKLQotI2VuZGlmIC8vIFJBUElESlNPTl9JVE9BXwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlk
anNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9tZXRhLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29u
L2ludGVybmFsL21ldGEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzMzZjYwN2Q1
ODUuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90
aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvbWV0YS5oCisr
KyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxv
IFlpcAotLy8KLS8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdl
LCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLS8vIG9mIHRoaXMgc29mdHdhcmUgYW5k
IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFs
Ci0vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhv
dXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi0vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us
IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi0vLyBjb3BpZXMg
b2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdh
cmUgaXMKLS8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnM6Ci0vLwotLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVy
bWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLS8vIGFsbCBjb3BpZXMgb3Igc3Vi
c3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotLy8KLS8vIFRIRSBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNT
IE9SCi0vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKLS8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotLy8gQVVUSE9S
UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP
UiBPVEhFUgotLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg
VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLS8vIE9VVCBPRiBPUiBJTiBDT05ORUNU
SU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KLS8v
IFRIRSBTT0ZUV0FSRS4KLQotI2lmbmRlZiBSQVBJREpTT05fSU5URVJOQUxfTUVUQV9IXwotI2Rl
ZmluZSBSQVBJREpTT05fSU5URVJOQUxfTUVUQV9IXwotCi0jaWZuZGVmIFJBUElESlNPTl9SQVBJ
REpTT05fSF8KLSNlcnJvciA8cmFwaWRqc29uLmg+IG5vdCB5ZXQgaW5jbHVkZWQuIERvIG5vdCBp
bmNsdWRlIHRoaXMgZmlsZSBkaXJlY3RseS4KLSNlbmRpZgotCi0jaWZkZWYgX19HTlVDX18KLVJB
UElESlNPTl9ESUFHX1BVU0gKLVJBUElESlNPTl9ESUFHX09GRihlZmZjKyspCi0jZW5kaWYKLSNp
ZiBkZWZpbmVkKF9NU0NfVkVSKQotUkFQSURKU09OX0RJQUdfUFVTSAotUkFQSURKU09OX0RJQUdf
T0ZGKDYzMzQpCi0jZW5kaWYKLQotI2lmIFJBUElESlNPTl9IQVNfQ1hYMTFfVFlQRVRSQUlUUwot
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgotI2VuZGlmCi0KLS8vQGNvbmQgUkFQSURKU09OX0lOVEVS
TkFMCi1SQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCi1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi0v
LyBIZWxwZXIgdG8gd3JhcC9jb252ZXJ0IGFyYml0cmFyeSB0eXBlcyB0byB2b2lkLCB1c2VmdWwg
Zm9yIGFyYml0cmFyeSB0eXBlIG1hdGNoaW5nCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0
IFZvaWQgeyB0eXBlZGVmIHZvaWQgVHlwZTsgfTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwot
Ly8gQm9vbFR5cGUsIFRydWVUeXBlLCBGYWxzZVR5cGUKLS8vCi10ZW1wbGF0ZSA8Ym9vbCBDb25k
PiBzdHJ1Y3QgQm9vbFR5cGUgewotICAgIHN0YXRpYyBjb25zdCBib29sIFZhbHVlID0gQ29uZDsK
LSAgICB0eXBlZGVmIEJvb2xUeXBlIFR5cGU7Ci19OwotdHlwZWRlZiBCb29sVHlwZTx0cnVlPiBU
cnVlVHlwZTsKLXR5cGVkZWYgQm9vbFR5cGU8ZmFsc2U+IEZhbHNlVHlwZTsKLQotCi0vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCi0vLyBTZWxlY3RJZiwgQm9vbEV4cHIsIE5vdEV4cHIsIEFuZEV4cHIs
IE9yRXhwcgotLy8KLQotdGVtcGxhdGUgPGJvb2wgQz4gc3RydWN0IFNlbGVjdElmSW1wbCB7IHRl
bXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+IHN0cnVjdCBBcHBseSB7IHR5cGVkZWYg
VDEgVHlwZTsgfTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBTZWxlY3RJZkltcGw8ZmFsc2U+IHsg
dGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4gc3RydWN0IEFwcGx5IHsgdHlwZWRl
ZiBUMiBUeXBlOyB9OyB9OwotdGVtcGxhdGUgPGJvb2wgQywgdHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyPiBzdHJ1Y3QgU2VsZWN0SWZDb25kIDogU2VsZWN0SWZJbXBsPEM+Ojp0ZW1wbGF0ZSBBcHBs
eTxUMSxUMj4ge307Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQywgdHlwZW5hbWUgVDEsIHR5cGVuYW1l
IFQyPiBzdHJ1Y3QgU2VsZWN0SWYgOiBTZWxlY3RJZkNvbmQ8Qzo6VmFsdWUsIFQxLCBUMj4ge307
Ci0KLXRlbXBsYXRlIDxib29sIENvbmQxLCBib29sIENvbmQyPiBzdHJ1Y3QgQW5kRXhwckNvbmQg
OiBGYWxzZVR5cGUge307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgQW5kRXhwckNvbmQ8dHJ1ZSwgdHJ1
ZT4gOiBUcnVlVHlwZSB7fTsKLXRlbXBsYXRlIDxib29sIENvbmQxLCBib29sIENvbmQyPiBzdHJ1
Y3QgT3JFeHByQ29uZCA6IFRydWVUeXBlIHt9OwotdGVtcGxhdGUgPD4gc3RydWN0IE9yRXhwckNv
bmQ8ZmFsc2UsIGZhbHNlPiA6IEZhbHNlVHlwZSB7fTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEM+
IHN0cnVjdCBCb29sRXhwciA6IFNlbGVjdElmPEMsVHJ1ZVR5cGUsRmFsc2VUeXBlPjo6VHlwZSB7
fTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBDPiBzdHJ1Y3QgTm90RXhwciAgOiBTZWxlY3RJZjxDLEZh
bHNlVHlwZSxUcnVlVHlwZT46OlR5cGUge307Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQzEsIHR5cGVu
YW1lIEMyPiBzdHJ1Y3QgQW5kRXhwciA6IEFuZEV4cHJDb25kPEMxOjpWYWx1ZSwgQzI6OlZhbHVl
Pjo6VHlwZSB7fTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBDMSwgdHlwZW5hbWUgQzI+IHN0cnVjdCBP
ckV4cHIgIDogT3JFeHByQ29uZDxDMTo6VmFsdWUsIEMyOjpWYWx1ZT46OlR5cGUge307Ci0KLQot
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gQWRkQ29uc3QsIE1heWJlQWRkQ29uc3QsIFJlbW92
ZUNvbnN0Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IEFkZENvbnN0IHsgdHlwZWRlZiBj
b25zdCBUIFR5cGU7IH07Ci10ZW1wbGF0ZSA8Ym9vbCBDb25zdGlmeSwgdHlwZW5hbWUgVD4gc3Ry
dWN0IE1heWJlQWRkQ29uc3QgOiBTZWxlY3RJZkNvbmQ8Q29uc3RpZnksIGNvbnN0IFQsIFQ+IHt9
OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVDb25zdCB7IHR5cGVkZWYgVCBU
eXBlOyB9OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBSZW1vdmVDb25zdDxjb25zdCBU
PiB7IHR5cGVkZWYgVCBUeXBlOyB9OwotCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIElz
U2FtZSwgSXNDb25zdCwgSXNNb3JlQ29uc3QsIElzUG9pbnRlcgotLy8KLXRlbXBsYXRlIDx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPiBzdHJ1Y3QgSXNTYW1lIDogRmFsc2VUeXBlIHt9OwotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJc1NhbWU8VCwgVD4gOiBUcnVlVHlwZSB7fTsKLQotdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJc0NvbnN0IDogRmFsc2VUeXBlIHt9OwotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJc0NvbnN0PGNvbnN0IFQ+IDogVHJ1ZVR5cGUge307Ci0K
LXRlbXBsYXRlIDx0eXBlbmFtZSBDVCwgdHlwZW5hbWUgVD4KLXN0cnVjdCBJc01vcmVDb25zdAot
ICAgIDogQW5kRXhwcjxJc1NhbWU8dHlwZW5hbWUgUmVtb3ZlQ29uc3Q8Q1Q+OjpUeXBlLCB0eXBl
bmFtZSBSZW1vdmVDb25zdDxUPjo6VHlwZT4sCi0gICAgICAgICAgICAgIEJvb2xUeXBlPElzQ29u
c3Q8Q1Q+OjpWYWx1ZSA+PSBJc0NvbnN0PFQ+OjpWYWx1ZT4gPjo6VHlwZSB7fTsKLQotdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJc1BvaW50ZXIgOiBGYWxzZVR5cGUge307Ci10ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElzUG9pbnRlcjxUKj4gOiBUcnVlVHlwZSB7fTsKLQotLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwotLy8gSXNCYXNlT2YKLS8vCi0jaWYgUkFQSURKU09OX0hBU19D
WFgxMV9UWVBFVFJBSVRTCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBCLCB0eXBlbmFtZSBEPiBzdHJ1
Y3QgSXNCYXNlT2YKLSAgICA6IEJvb2xUeXBlPCA6OnN0ZDo6aXNfYmFzZV9vZjxCLEQ+Ojp2YWx1
ZT4ge307Ci0KLSNlbHNlIC8vIHNpbXBsaWZpZWQgdmVyc2lvbiBhZG9wdGVkIGZyb20gQm9vc3QK
LQotdGVtcGxhdGU8dHlwZW5hbWUgQiwgdHlwZW5hbWUgRD4gc3RydWN0IElzQmFzZU9mSW1wbCB7
Ci0gICAgUkFQSURKU09OX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKEIpICE9IDApOwotICAgIFJBUElE
SlNPTl9TVEFUSUNfQVNTRVJUKHNpemVvZihEKSAhPSAwKTsKLQotICAgIHR5cGVkZWYgY2hhciAo
JlllcylbMV07Ci0gICAgdHlwZWRlZiBjaGFyICgmTm8pIFsyXTsKLQotICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPgotICAgIHN0YXRpYyBZZXMgQ2hlY2soY29uc3QgRCosIFQpOwotICAgIHN0YXRp
YyBObyAgQ2hlY2soY29uc3QgQiosIGludCk7Ci0KLSAgICBzdHJ1Y3QgSG9zdCB7Ci0gICAgICAg
IG9wZXJhdG9yIGNvbnN0IEIqKCkgY29uc3Q7Ci0gICAgICAgIG9wZXJhdG9yIGNvbnN0IEQqKCk7
Ci0gICAgfTsKLQotICAgIGVudW0geyBWYWx1ZSA9IChzaXplb2YoQ2hlY2soSG9zdCgpLCAwKSkg
PT0gc2l6ZW9mKFllcykpIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQiwgdHlwZW5hbWUg
RD4gc3RydWN0IElzQmFzZU9mCi0gICAgOiBPckV4cHI8SXNTYW1lPEIsIEQ+LCBCb29sRXhwcjxJ
c0Jhc2VPZkltcGw8QiwgRD4gPiA+OjpUeXBlIHt9OwotCi0jZW5kaWYgLy8gUkFQSURKU09OX0hB
U19DWFgxMV9UWVBFVFJBSVRTCi0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIEVuYWJsZUlmIC8g
RGlzYWJsZUlmCi0vLwotdGVtcGxhdGUgPGJvb2wgQ29uZGl0aW9uLCB0eXBlbmFtZSBUID0gdm9p
ZD4gc3RydWN0IEVuYWJsZUlmQ29uZCAgeyB0eXBlZGVmIFQgVHlwZTsgfTsKLXRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBzdHJ1Y3QgRW5hYmxlSWZDb25kPGZhbHNlLCBUPiB7IC8qIGVtcHR5ICovIH07
Ci0KLXRlbXBsYXRlIDxib29sIENvbmRpdGlvbiwgdHlwZW5hbWUgVCA9IHZvaWQ+IHN0cnVjdCBE
aXNhYmxlSWZDb25kIHsgdHlwZWRlZiBUIFR5cGU7IH07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
c3RydWN0IERpc2FibGVJZkNvbmQ8dHJ1ZSwgVD4geyAvKiBlbXB0eSAqLyB9OwotCi10ZW1wbGF0
ZSA8dHlwZW5hbWUgQ29uZGl0aW9uLCB0eXBlbmFtZSBUID0gdm9pZD4KLXN0cnVjdCBFbmFibGVJ
ZiA6IEVuYWJsZUlmQ29uZDxDb25kaXRpb246OlZhbHVlLCBUPiB7fTsKLQotdGVtcGxhdGUgPHR5
cGVuYW1lIENvbmRpdGlvbiwgdHlwZW5hbWUgVCA9IHZvaWQ+Ci1zdHJ1Y3QgRGlzYWJsZUlmIDog
RGlzYWJsZUlmQ29uZDxDb25kaXRpb246OlZhbHVlLCBUPiB7fTsKLQotLy8gU0ZJTkFFIGhlbHBl
cnMKLXN0cnVjdCBTZmluYWVUYWcge307Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IFJl
bW92ZVNmaW5hZVRhZzsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgUmVtb3ZlU2ZpbmFl
VGFnPFNmaW5hZVRhZyYoKikoVCk+IHsgdHlwZWRlZiBUIFR5cGU7IH07Ci0KLSNkZWZpbmUgUkFQ
SURKU09OX1JFTU9WRUZQVFJfKHR5cGUpIFwKLSAgICB0eXBlbmFtZSA6OlJBUElESlNPTl9OQU1F
U1BBQ0U6OmludGVybmFsOjpSZW1vdmVTZmluYWVUYWcgXAotICAgICAgICA8IDo6UkFQSURKU09O
X05BTUVTUEFDRTo6aW50ZXJuYWw6OlNmaW5hZVRhZyYoKikgdHlwZT46OlR5cGUKLQotI2RlZmlu
ZSBSQVBJREpTT05fRU5BQkxFSUYoY29uZCkgXAotICAgIHR5cGVuYW1lIDo6UkFQSURKU09OX05B
TUVTUEFDRTo6aW50ZXJuYWw6OkVuYWJsZUlmIFwKLSAgICAgICAgPFJBUElESlNPTl9SRU1PVkVG
UFRSXyhjb25kKT46OlR5cGUgKiA9IE5VTEwKLQotI2RlZmluZSBSQVBJREpTT05fRElTQUJMRUlG
KGNvbmQpIFwKLSAgICB0eXBlbmFtZSA6OlJBUElESlNPTl9OQU1FU1BBQ0U6OmludGVybmFsOjpE
aXNhYmxlSWYgXAotICAgICAgICA8UkFQSURKU09OX1JFTU9WRUZQVFJfKGNvbmQpPjo6VHlwZSAq
ID0gTlVMTAotCi0jZGVmaW5lIFJBUElESlNPTl9FTkFCTEVJRl9SRVRVUk4oY29uZCxyZXR1cm50
eXBlKSBcCi0gICAgdHlwZW5hbWUgOjpSQVBJREpTT05fTkFNRVNQQUNFOjppbnRlcm5hbDo6RW5h
YmxlSWYgXAotICAgICAgICA8UkFQSURKU09OX1JFTU9WRUZQVFJfKGNvbmQpLCBcCi0gICAgICAg
ICBSQVBJREpTT05fUkVNT1ZFRlBUUl8ocmV0dXJudHlwZSk+OjpUeXBlCi0KLSNkZWZpbmUgUkFQ
SURKU09OX0RJU0FCTEVJRl9SRVRVUk4oY29uZCxyZXR1cm50eXBlKSBcCi0gICAgdHlwZW5hbWUg
OjpSQVBJREpTT05fTkFNRVNQQUNFOjppbnRlcm5hbDo6RGlzYWJsZUlmIFwKLSAgICAgICAgPFJB
UElESlNPTl9SRU1PVkVGUFRSXyhjb25kKSwgXAotICAgICAgICAgUkFQSURKU09OX1JFTU9WRUZQ
VFJfKHJldHVybnR5cGUpPjo6VHlwZQotCi19IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotUkFQSURK
U09OX05BTUVTUEFDRV9FTkQKLS8vQGVuZGNvbmQKLQotI2lmIGRlZmluZWQoX19HTlVDX18pIHx8
IGRlZmluZWQoX01TQ19WRVIpCi1SQVBJREpTT05fRElBR19QT1AKLSNlbmRpZgotCi0jZW5kaWYg
Ly8gUkFQSURKU09OX0lOVEVSTkFMX01FVEFfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpz
b24vaW50ZXJuYWwvcG93MTAuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90
aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvcG93MTAuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFjZjY0NzhiYTIuLjAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpz
b24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvcG93MTAuaAorKysgL2Rldi9udWxsCkBAIC0x
LDU5ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAotLy8KLS8vIFBlcm1p
c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i
dGFpbmluZyBhIGNvcHkKLS8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1l
bnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCi0vLyBpbiB0aGUgU29mdHdh
cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUg
cmlnaHRzCi0vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1
dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi0vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh
bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLS8vIGZ1cm5pc2hl
ZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0vLwotLy8g
VGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hh
bGwgYmUgaW5jbHVkZWQgaW4KLS8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMg
b2YgdGhlIFNvZnR3YXJlLgotLy8KLS8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi
LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0vLyBJTVBMSUVELCBJ
TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSwKLS8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H
RU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M
REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotLy8gTElBQklM
SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us
IEFSSVNJTkcgRlJPTSwKLS8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX
QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KLS8vIFRIRSBTT0ZUV0FSRS4KLQot
I2lmbmRlZiBSQVBJREpTT05fUE9XMTBfCi0jZGVmaW5lIFJBUElESlNPTl9QT1cxMF8KLQotUkFQ
SURKU09OX05BTUVTUEFDRV9CRUdJTgotbmFtZXNwYWNlIGludGVybmFsIHsKLQotLy8hIENvbXB1
dGVzIGludGVnZXIgcG93ZXJzIG9mIDEwIGluIGRvdWJsZSAoMTAuMF5uKS4KLS8qISBUaGlzIGZ1
bmN0aW9uIHVzZXMgbG9va3VwIHRhYmxlIGZvciBmYXN0IGFuZCBhY2N1cmF0ZSByZXN1bHRzLgot
ICAgIFxwYXJhbSBuIG5vbi1uZWdhdGl2ZSBleHBvbmVudC4gTXVzdCA8PSAzMDguCi0gICAgXHJl
dHVybiAxMC4wXm4KLSovCi1pbmxpbmUgZG91YmxlIFBvdzEwKGludCBuKSB7Ci0gICAgc3RhdGlj
IGNvbnN0IGRvdWJsZSBlW10gPSB7IC8vIDFlLTAuLi4xZTMwODogMzA5ICogOCBieXRlcyA9IDI0
NzIgYnl0ZXMKLSAgICAgICAgMWUrMCwgIAotICAgICAgICAxZSsxLCAgMWUrMiwgIDFlKzMsICAx
ZSs0LCAgMWUrNSwgIDFlKzYsICAxZSs3LCAgMWUrOCwgIDFlKzksICAxZSsxMCwgMWUrMTEsIDFl
KzEyLCAxZSsxMywgMWUrMTQsIDFlKzE1LCAxZSsxNiwgMWUrMTcsIDFlKzE4LCAxZSsxOSwgMWUr
MjAsIAotICAgICAgICAxZSsyMSwgMWUrMjIsIDFlKzIzLCAxZSsyNCwgMWUrMjUsIDFlKzI2LCAx
ZSsyNywgMWUrMjgsIDFlKzI5LCAxZSszMCwgMWUrMzEsIDFlKzMyLCAxZSszMywgMWUrMzQsIDFl
KzM1LCAxZSszNiwgMWUrMzcsIDFlKzM4LCAxZSszOSwgMWUrNDAsCi0gICAgICAgIDFlKzQxLCAx
ZSs0MiwgMWUrNDMsIDFlKzQ0LCAxZSs0NSwgMWUrNDYsIDFlKzQ3LCAxZSs0OCwgMWUrNDksIDFl
KzUwLCAxZSs1MSwgMWUrNTIsIDFlKzUzLCAxZSs1NCwgMWUrNTUsIDFlKzU2LCAxZSs1NywgMWUr
NTgsIDFlKzU5LCAxZSs2MCwKLSAgICAgICAgMWUrNjEsIDFlKzYyLCAxZSs2MywgMWUrNjQsIDFl
KzY1LCAxZSs2NiwgMWUrNjcsIDFlKzY4LCAxZSs2OSwgMWUrNzAsIDFlKzcxLCAxZSs3MiwgMWUr
NzMsIDFlKzc0LCAxZSs3NSwgMWUrNzYsIDFlKzc3LCAxZSs3OCwgMWUrNzksIDFlKzgwLAotICAg
ICAgICAxZSs4MSwgMWUrODIsIDFlKzgzLCAxZSs4NCwgMWUrODUsIDFlKzg2LCAxZSs4NywgMWUr
ODgsIDFlKzg5LCAxZSs5MCwgMWUrOTEsIDFlKzkyLCAxZSs5MywgMWUrOTQsIDFlKzk1LCAxZSs5
NiwgMWUrOTcsIDFlKzk4LCAxZSs5OSwgMWUrMTAwLAotICAgICAgICAxZSsxMDEsMWUrMTAyLDFl
KzEwMywxZSsxMDQsMWUrMTA1LDFlKzEwNiwxZSsxMDcsMWUrMTA4LDFlKzEwOSwxZSsxMTAsMWUr
MTExLDFlKzExMiwxZSsxMTMsMWUrMTE0LDFlKzExNSwxZSsxMTYsMWUrMTE3LDFlKzExOCwxZSsx
MTksMWUrMTIwLAotICAgICAgICAxZSsxMjEsMWUrMTIyLDFlKzEyMywxZSsxMjQsMWUrMTI1LDFl
KzEyNiwxZSsxMjcsMWUrMTI4LDFlKzEyOSwxZSsxMzAsMWUrMTMxLDFlKzEzMiwxZSsxMzMsMWUr
MTM0LDFlKzEzNSwxZSsxMzYsMWUrMTM3LDFlKzEzOCwxZSsxMzksMWUrMTQwLAotICAgICAgICAx
ZSsxNDEsMWUrMTQyLDFlKzE0MywxZSsxNDQsMWUrMTQ1LDFlKzE0NiwxZSsxNDcsMWUrMTQ4LDFl
KzE0OSwxZSsxNTAsMWUrMTUxLDFlKzE1MiwxZSsxNTMsMWUrMTU0LDFlKzE1NSwxZSsxNTYsMWUr
MTU3LDFlKzE1OCwxZSsxNTksMWUrMTYwLAotICAgICAgICAxZSsxNjEsMWUrMTYyLDFlKzE2Mywx
ZSsxNjQsMWUrMTY1LDFlKzE2NiwxZSsxNjcsMWUrMTY4LDFlKzE2OSwxZSsxNzAsMWUrMTcxLDFl
KzE3MiwxZSsxNzMsMWUrMTc0LDFlKzE3NSwxZSsxNzYsMWUrMTc3LDFlKzE3OCwxZSsxNzksMWUr
MTgwLAotICAgICAgICAxZSsxODEsMWUrMTgyLDFlKzE4MywxZSsxODQsMWUrMTg1LDFlKzE4Niwx
ZSsxODcsMWUrMTg4LDFlKzE4OSwxZSsxOTAsMWUrMTkxLDFlKzE5MiwxZSsxOTMsMWUrMTk0LDFl
KzE5NSwxZSsxOTYsMWUrMTk3LDFlKzE5OCwxZSsxOTksMWUrMjAwLAotICAgICAgICAxZSsyMDEs
MWUrMjAyLDFlKzIwMywxZSsyMDQsMWUrMjA1LDFlKzIwNiwxZSsyMDcsMWUrMjA4LDFlKzIwOSwx
ZSsyMTAsMWUrMjExLDFlKzIxMiwxZSsyMTMsMWUrMjE0LDFlKzIxNSwxZSsyMTYsMWUrMjE3LDFl
KzIxOCwxZSsyMTksMWUrMjIwLAotICAgICAgICAxZSsyMjEsMWUrMjIyLDFlKzIyMywxZSsyMjQs
MWUrMjI1LDFlKzIyNiwxZSsyMjcsMWUrMjI4LDFlKzIyOSwxZSsyMzAsMWUrMjMxLDFlKzIzMiwx
ZSsyMzMsMWUrMjM0LDFlKzIzNSwxZSsyMzYsMWUrMjM3LDFlKzIzOCwxZSsyMzksMWUrMjQwLAot
ICAgICAgICAxZSsyNDEsMWUrMjQyLDFlKzI0MywxZSsyNDQsMWUrMjQ1LDFlKzI0NiwxZSsyNDcs
MWUrMjQ4LDFlKzI0OSwxZSsyNTAsMWUrMjUxLDFlKzI1MiwxZSsyNTMsMWUrMjU0LDFlKzI1NSwx
ZSsyNTYsMWUrMjU3LDFlKzI1OCwxZSsyNTksMWUrMjYwLAotICAgICAgICAxZSsyNjEsMWUrMjYy
LDFlKzI2MywxZSsyNjQsMWUrMjY1LDFlKzI2NiwxZSsyNjcsMWUrMjY4LDFlKzI2OSwxZSsyNzAs
MWUrMjcxLDFlKzI3MiwxZSsyNzMsMWUrMjc0LDFlKzI3NSwxZSsyNzYsMWUrMjc3LDFlKzI3OCwx
ZSsyNzksMWUrMjgwLAotICAgICAgICAxZSsyODEsMWUrMjgyLDFlKzI4MywxZSsyODQsMWUrMjg1
LDFlKzI4NiwxZSsyODcsMWUrMjg4LDFlKzI4OSwxZSsyOTAsMWUrMjkxLDFlKzI5MiwxZSsyOTMs
MWUrMjk0LDFlKzI5NSwxZSsyOTYsMWUrMjk3LDFlKzI5OCwxZSsyOTksMWUrMzAwLAotICAgICAg
ICAxZSszMDEsMWUrMzAyLDFlKzMwMywxZSszMDQsMWUrMzA1LDFlKzMwNiwxZSszMDcsMWUrMzA4
Ci0gICAgfTsKLSAgICBSQVBJREpTT05fQVNTRVJUKG4gPj0gMCAmJiBuIDw9IDMwOCk7Ci0gICAg
cmV0dXJuIGVbbl07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIGludGVybmFsCi1SQVBJREpTT05fTkFN
RVNQQUNFX0VORAotCi0jZW5kaWYgLy8gUkFQSURKU09OX1BPVzEwXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNs
dWRlL3JhcGlkanNvbi9pbnRlcm5hbC9zdGFjay5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5h
bC9zdGFjay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MmFlN2FhODA0NC4uMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3Bh
cnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9zdGFjay5oCisrKyAvZGV2
L251bGwKQEAgLTEsMTgzICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAot
Ly8KLS8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh
bnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLS8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j
aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCi0vLyBp
biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt
aXRhdGlvbiB0aGUgcmlnaHRzCi0vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp
c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi0vLyBjb3BpZXMgb2YgdGhl
IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMK
LS8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnM6Ci0vLwotLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv
biBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLS8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRp
YWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotLy8KLS8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9W
SURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0v
LyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSwKLS8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO
RCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotLy8gQVVUSE9SUyBPUiBD
T1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhF
UgotLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBP
UiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLS8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJ
VEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KLS8vIFRIRSBT
T0ZUV0FSRS4KLQotI2lmbmRlZiBSQVBJREpTT05fSU5URVJOQUxfU1RBQ0tfSF8KLSNkZWZpbmUg
UkFQSURKU09OX0lOVEVSTkFMX1NUQUNLX0hfCi0KLVJBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4K
LW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIFN0YWNr
Ci0KLS8vISBBIHR5cGUtdW5zYWZlIHN0YWNrIGZvciBzdG9yaW5nIGRpZmZlcmVudCB0eXBlcyBv
ZiBkYXRhLgotLyohIFx0cGFyYW0gQWxsb2NhdG9yIEFsbG9jYXRvciBmb3IgYWxsb2NhdGluZyBz
dGFjayBtZW1vcnkuCi0qLwotdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jYXRvcj4KLWNsYXNzIFN0
YWNrIHsKLXB1YmxpYzoKLSAgICAvLyBPcHRpbWl6YXRpb24gbm90ZTogRG8gbm90IGFsbG9jYXRl
IG1lbW9yeSBmb3Igc3RhY2tfIGluIGNvbnN0cnVjdG9yLgotICAgIC8vIERvIGl0IGxhemlseSB3
aGVuIGZpcnN0IFB1c2goKSAtPiBFeHBhbmQoKSAtPiBSZXNpemUoKS4KLSAgICBTdGFjayhBbGxv
Y2F0b3IqIGFsbG9jYXRvciwgc2l6ZV90IHN0YWNrQ2FwYWNpdHkpIDogYWxsb2NhdG9yXyhhbGxv
Y2F0b3IpLCBvd25BbGxvY2F0b3JfKDApLCBzdGFja18oMCksIHN0YWNrVG9wXygwKSwgc3RhY2tF
bmRfKDApLCBpbml0aWFsQ2FwYWNpdHlfKHN0YWNrQ2FwYWNpdHkpIHsKLSAgICAgICAgUkFQSURK
U09OX0FTU0VSVChzdGFja0NhcGFjaXR5ID4gMCk7Ci0gICAgfQotCi0jaWYgUkFQSURKU09OX0hB
U19DWFgxMV9SVkFMVUVfUkVGUwotICAgIFN0YWNrKFN0YWNrJiYgcmhzKQotICAgICAgICA6IGFs
bG9jYXRvcl8ocmhzLmFsbG9jYXRvcl8pLAotICAgICAgICAgIG93bkFsbG9jYXRvcl8ocmhzLm93
bkFsbG9jYXRvcl8pLAotICAgICAgICAgIHN0YWNrXyhyaHMuc3RhY2tfKSwKLSAgICAgICAgICBz
dGFja1RvcF8ocmhzLnN0YWNrVG9wXyksCi0gICAgICAgICAgc3RhY2tFbmRfKHJocy5zdGFja0Vu
ZF8pLAotICAgICAgICAgIGluaXRpYWxDYXBhY2l0eV8ocmhzLmluaXRpYWxDYXBhY2l0eV8pCi0g
ICAgewotICAgICAgICByaHMuYWxsb2NhdG9yXyA9IDA7Ci0gICAgICAgIHJocy5vd25BbGxvY2F0
b3JfID0gMDsKLSAgICAgICAgcmhzLnN0YWNrXyA9IDA7Ci0gICAgICAgIHJocy5zdGFja1RvcF8g
PSAwOwotICAgICAgICByaHMuc3RhY2tFbmRfID0gMDsKLSAgICAgICAgcmhzLmluaXRpYWxDYXBh
Y2l0eV8gPSAwOwotICAgIH0KLSNlbmRpZgotCi0gICAgflN0YWNrKCkgewotICAgICAgICBEZXN0
cm95KCk7Ci0gICAgfQotCi0jaWYgUkFQSURKU09OX0hBU19DWFgxMV9SVkFMVUVfUkVGUwotICAg
IFN0YWNrJiBvcGVyYXRvcj0oU3RhY2smJiByaHMpIHsKLSAgICAgICAgaWYgKCZyaHMgIT0gdGhp
cykKLSAgICAgICAgewotICAgICAgICAgICAgRGVzdHJveSgpOwotCi0gICAgICAgICAgICBhbGxv
Y2F0b3JfID0gcmhzLmFsbG9jYXRvcl87Ci0gICAgICAgICAgICBvd25BbGxvY2F0b3JfID0gcmhz
Lm93bkFsbG9jYXRvcl87Ci0gICAgICAgICAgICBzdGFja18gPSByaHMuc3RhY2tfOwotICAgICAg
ICAgICAgc3RhY2tUb3BfID0gcmhzLnN0YWNrVG9wXzsKLSAgICAgICAgICAgIHN0YWNrRW5kXyA9
IHJocy5zdGFja0VuZF87Ci0gICAgICAgICAgICBpbml0aWFsQ2FwYWNpdHlfID0gcmhzLmluaXRp
YWxDYXBhY2l0eV87Ci0KLSAgICAgICAgICAgIHJocy5hbGxvY2F0b3JfID0gMDsKLSAgICAgICAg
ICAgIHJocy5vd25BbGxvY2F0b3JfID0gMDsKLSAgICAgICAgICAgIHJocy5zdGFja18gPSAwOwot
ICAgICAgICAgICAgcmhzLnN0YWNrVG9wXyA9IDA7Ci0gICAgICAgICAgICByaHMuc3RhY2tFbmRf
ID0gMDsKLSAgICAgICAgICAgIHJocy5pbml0aWFsQ2FwYWNpdHlfID0gMDsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotI2VuZGlmCi0KLSAgICB2b2lkIENsZWFyKCkg
eyBzdGFja1RvcF8gPSBzdGFja187IH0KLQotICAgIHZvaWQgU2hyaW5rVG9GaXQoKSB7IAotICAg
ICAgICBpZiAoRW1wdHkoKSkgewotICAgICAgICAgICAgLy8gSWYgdGhlIHN0YWNrIGlzIGVtcHR5
LCBjb21wbGV0ZWx5IGRlYWxsb2NhdGUgdGhlIG1lbW9yeS4KLSAgICAgICAgICAgIEFsbG9jYXRv
cjo6RnJlZShzdGFja18pOwotICAgICAgICAgICAgc3RhY2tfID0gMDsKLSAgICAgICAgICAgIHN0
YWNrVG9wXyA9IDA7Ci0gICAgICAgICAgICBzdGFja0VuZF8gPSAwOwotICAgICAgICB9Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIFJlc2l6ZShHZXRTaXplKCkpOwotICAgIH0KLQotICAgIC8v
IE9wdGltaXphdGlvbiBub3RlOiB0cnkgdG8gbWluaW1pemUgdGhlIHNpemUgb2YgdGhpcyBmdW5j
dGlvbiBmb3IgZm9yY2UgaW5saW5lLgotICAgIC8vIEV4cGFuc2lvbiBpcyBydW4gdmVyeSBpbmZy
ZXF1ZW50bHksIHNvIGl0IGlzIG1vdmVkIHRvIGFub3RoZXIgKHByb2JhYmx5IG5vbi1pbmxpbmUp
IGZ1bmN0aW9uLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgUkFQSURKU09OX0ZPUkNF
SU5MSU5FIFQqIFB1c2goc2l6ZV90IGNvdW50ID0gMSkgewotICAgICAgICAgLy8gRXhwYW5kIHRo
ZSBzdGFjayBpZiBuZWVkZWQKLSAgICAgICAgaWYgKHN0YWNrVG9wXyArIHNpemVvZihUKSAqIGNv
dW50ID49IHN0YWNrRW5kXykKLSAgICAgICAgICAgIEV4cGFuZDxUPihjb3VudCk7Ci0KLSAgICAg
ICAgVCogcmV0ID0gcmVpbnRlcnByZXRfY2FzdDxUKj4oc3RhY2tUb3BfKTsKLSAgICAgICAgc3Rh
Y2tUb3BfICs9IHNpemVvZihUKSAqIGNvdW50OwotICAgICAgICByZXR1cm4gcmV0OwotICAgIH0K
LQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCogUG9wKHNpemVfdCBjb3VudCkgewot
ICAgICAgICBSQVBJREpTT05fQVNTRVJUKEdldFNpemUoKSA+PSBjb3VudCAqIHNpemVvZihUKSk7
Ci0gICAgICAgIHN0YWNrVG9wXyAtPSBjb3VudCAqIHNpemVvZihUKTsKLSAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KHN0YWNrVG9wXyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLSAgICBUKiBUb3AoKSB7IAotICAgICAgICBSQVBJREpTT05fQVNTRVJUKEdl
dFNpemUoKSA+PSBzaXplb2YoVCkpOwotICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxU
Kj4oc3RhY2tUb3BfIC0gc2l6ZW9mKFQpKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgotICAgIFQqIEJvdHRvbSgpIHsgcmV0dXJuIChUKilzdGFja187IH0KLQotICAgIEFsbG9j
YXRvciYgR2V0QWxsb2NhdG9yKCkgeyByZXR1cm4gKmFsbG9jYXRvcl87IH0KLSAgICBib29sIEVt
cHR5KCkgY29uc3QgeyByZXR1cm4gc3RhY2tUb3BfID09IHN0YWNrXzsgfQotICAgIHNpemVfdCBH
ZXRTaXplKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGFja1RvcF8gLSBz
dGFja18pOyB9Ci0gICAgc2l6ZV90IEdldENhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8c2l6ZV90PihzdGFja0VuZF8gLSBzdGFja18pOyB9Ci0KLXByaXZhdGU6Ci0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkIEV4cGFuZChzaXplX3QgY291bnQpIHsKLSAgICAg
ICAgLy8gT25seSBleHBhbmQgdGhlIGNhcGFjaXR5IGlmIHRoZSBjdXJyZW50IHN0YWNrIGV4aXN0
cy4gT3RoZXJ3aXNlIGp1c3QgY3JlYXRlIGEgc3RhY2sgd2l0aCBpbml0aWFsIGNhcGFjaXR5Lgot
ICAgICAgICBzaXplX3QgbmV3Q2FwYWNpdHk7Ci0gICAgICAgIGlmIChzdGFja18gPT0gMCkgewot
ICAgICAgICAgICAgaWYgKCFhbGxvY2F0b3JfKQotICAgICAgICAgICAgICAgIG93bkFsbG9jYXRv
cl8gPSBhbGxvY2F0b3JfID0gUkFQSURKU09OX05FVyhBbGxvY2F0b3IoKSk7Ci0gICAgICAgICAg
ICBuZXdDYXBhY2l0eSA9IGluaXRpYWxDYXBhY2l0eV87Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBuZXdDYXBhY2l0eSA9IEdldENhcGFjaXR5KCk7Ci0gICAgICAgICAgICBuZXdDYXBh
Y2l0eSArPSAobmV3Q2FwYWNpdHkgKyAxKSAvIDI7Ci0gICAgICAgIH0KLSAgICAgICAgc2l6ZV90
IG5ld1NpemUgPSBHZXRTaXplKCkgKyBzaXplb2YoVCkgKiBjb3VudDsKLSAgICAgICAgaWYgKG5l
d0NhcGFjaXR5IDwgbmV3U2l6ZSkKLSAgICAgICAgICAgIG5ld0NhcGFjaXR5ID0gbmV3U2l6ZTsK
LQotICAgICAgICBSZXNpemUobmV3Q2FwYWNpdHkpOwotICAgIH0KLQotICAgIHZvaWQgUmVzaXpl
KHNpemVfdCBuZXdDYXBhY2l0eSkgewotICAgICAgICBjb25zdCBzaXplX3Qgc2l6ZSA9IEdldFNp
emUoKTsgIC8vIEJhY2t1cCB0aGUgY3VycmVudCBzaXplCi0gICAgICAgIHN0YWNrXyA9IChjaGFy
KilhbGxvY2F0b3JfLT5SZWFsbG9jKHN0YWNrXywgR2V0Q2FwYWNpdHkoKSwgbmV3Q2FwYWNpdHkp
OwotICAgICAgICBzdGFja1RvcF8gPSBzdGFja18gKyBzaXplOwotICAgICAgICBzdGFja0VuZF8g
PSBzdGFja18gKyBuZXdDYXBhY2l0eTsKLSAgICB9Ci0KLSAgICB2b2lkIERlc3Ryb3koKSB7Ci0g
ICAgICAgIEFsbG9jYXRvcjo6RnJlZShzdGFja18pOwotICAgICAgICBSQVBJREpTT05fREVMRVRF
KG93bkFsbG9jYXRvcl8pOyAvLyBPbmx5IGRlbGV0ZSBpZiBpdCBpcyBvd25lZCBieSB0aGUgc3Rh
Y2sKLSAgICB9Ci0KLSAgICAvLyBQcm9oaWJpdCBjb3B5IGNvbnN0cnVjdG9yICYgYXNzaWdubWVu
dCBvcGVyYXRvci4KLSAgICBTdGFjayhjb25zdCBTdGFjayYpOwotICAgIFN0YWNrJiBvcGVyYXRv
cj0oY29uc3QgU3RhY2smKTsKLQotICAgIEFsbG9jYXRvciogYWxsb2NhdG9yXzsKLSAgICBBbGxv
Y2F0b3IqIG93bkFsbG9jYXRvcl87Ci0gICAgY2hhciAqc3RhY2tfOwotICAgIGNoYXIgKnN0YWNr
VG9wXzsKLSAgICBjaGFyICpzdGFja0VuZF87Ci0gICAgc2l6ZV90IGluaXRpYWxDYXBhY2l0eV87
Ci19OwotCi19IC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotUkFQSURKU09OX05BTUVTUEFDRV9FTkQK
LQotI2VuZGlmIC8vIFJBUElESlNPTl9TVEFDS19IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlk
anNvbi9pbnRlcm5hbC9zdHJmdW5jLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL3N0cmZ1
bmMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzM0YWRjMzZkY2IuLjAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9y
YXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vaW50ZXJuYWwvc3RyZnVuYy5oCisrKyAvZGV2L251
bGwKQEAgLTEsNDMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlwCi0vLwot
Ly8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw
ZXJzb24gb2J0YWluaW5nIGEgY29weQotLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl
ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKLS8vIGluIHRo
ZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0
aW9uIHRoZSByaWdodHMKLS8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg
ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKLS8vIGNvcGllcyBvZiB0aGUgU29m
dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotLy8g
ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoK
LS8vCi0vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v
dGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBw
b3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0vLwotLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE
ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLS8vIElN
UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZLAotLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P
TklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0vLyBBVVRIT1JTIE9SIENPUFlS
SUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0v
LyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U
SEVSV0lTRSwgQVJJU0lORyBGUk9NLAotLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBU
SEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgotLy8gVEhFIFNPRlRX
QVJFLgotCi0jaWZuZGVmIFJBUElESlNPTl9JTlRFUk5BTF9TVFJGVU5DX0hfCi0jZGVmaW5lIFJB
UElESlNPTl9JTlRFUk5BTF9TVFJGVU5DX0hfCi0KLVJBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4K
LW5hbWVzcGFjZSBpbnRlcm5hbCB7Ci0KLS8vISBDdXN0b20gc3RybGVuKCkgd2hpY2ggd29ya3Mg
b24gZGlmZmVyZW50IGNoYXJhY3RlciB0eXBlcy4KLS8qISBcdHBhcmFtIENoIENoYXJhY3RlciB0
eXBlIChlLmcuIGNoYXIsIHdjaGFyX3QsIHNob3J0KQotICAgIFxwYXJhbSBzIE51bGwtdGVybWlu
YXRlZCBpbnB1dCBzdHJpbmcuCi0gICAgXHJldHVybiBOdW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0
aGUgc3RyaW5nLiAKLSAgICBcbm90ZSBUaGlzIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgc3Ry
bGVuKCksIHRoZSByZXR1cm4gdmFsdWUgaXMgbm90IG51bWJlciBvZiBVbmljb2RlIGNvZGVwb2lu
dHMuCi0qLwotdGVtcGxhdGUgPHR5cGVuYW1lIENoPgotaW5saW5lIFNpemVUeXBlIFN0ckxlbihj
b25zdCBDaCogcykgewotICAgIGNvbnN0IENoKiBwID0gczsKLSAgICB3aGlsZSAoKnApICsrcDsK
LSAgICByZXR1cm4gU2l6ZVR5cGUocCAtIHMpOwotfQotCi19IC8vIG5hbWVzcGFjZSBpbnRlcm5h
bAotUkFQSURKU09OX05BTUVTUEFDRV9FTkQKLQotI2VuZGlmIC8vIFJBUElESlNPTl9JTlRFUk5B
TF9TVFJGVU5DX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVz
dHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL2ludGVybmFsL3N0cnRv
ZC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlk
anNvbi9pbmNsdWRlL3JhcGlkanNvbi9pbnRlcm5hbC9zdHJ0b2QuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMWZjNjA1MGVlYjQuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBp
ZGpzb24vaW50ZXJuYWwvc3RydG9kLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyODUgKzAsMCBAQAot
Ly8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlwCi0vLwotLy8gUGVybWlzc2lvbiBpcyBoZXJl
YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29w
eQotLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz
ICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKLS8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl
c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKLS8vIHRv
IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z
ZSwgYW5kL29yIHNlbGwKLS8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg
cGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBz
dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLS8vCi0vLyBUaGUgYWJvdmUgY29w
eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRl
ZCBpbgotLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdh
cmUuCi0vLwotLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS
UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLS8vIElNUExJRUQsIElOQ0xVRElORyBCVVQg
Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotLy8gRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFCi0vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM
RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0vLyBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9N
LAotLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT
RSBPUiBPVEhFUiBERUFMSU5HUyBJTgotLy8gVEhFIFNPRlRXQVJFLgotCi0jaWZuZGVmIFJBUElE
SlNPTl9TVFJUT0RfCi0jZGVmaW5lIFJBUElESlNPTl9TVFJUT0RfCi0KLSNpbmNsdWRlICIuLi9y
YXBpZGpzb24uaCIKLSNpbmNsdWRlICJpZWVlNzU0LmgiCi0jaW5jbHVkZSAiYmlnaW50ZWdlci5o
IgotI2luY2x1ZGUgImRpeWZwLmgiCi0jaW5jbHVkZSAicG93MTAuaCIKLQotUkFQSURKU09OX05B
TUVTUEFDRV9CRUdJTgotbmFtZXNwYWNlIGludGVybmFsIHsKLQotaW5saW5lIGRvdWJsZSBGYXN0
UGF0aChkb3VibGUgc2lnbmlmaWNhbmQsIGludCBleHApIHsKLSAgICBpZiAoZXhwIDwgLTMwOCkK
LSAgICAgICAgcmV0dXJuIDAuMDsKLSAgICBlbHNlIGlmIChleHAgPj0gMCkKLSAgICAgICAgcmV0
dXJuIHNpZ25pZmljYW5kICogaW50ZXJuYWw6OlBvdzEwKGV4cCk7Ci0gICAgZWxzZQotICAgICAg
ICByZXR1cm4gc2lnbmlmaWNhbmQgLyBpbnRlcm5hbDo6UG93MTAoLWV4cCk7Ci19Ci0KLWlubGlu
ZSBkb3VibGUgU3RydG9kTm9ybWFsUHJlY2lzaW9uKGRvdWJsZSBkLCBpbnQgcCkgewotICAgIGlm
IChwIDwgLTMwOCkgewotICAgICAgICAvLyBQcmV2ZW50IGV4cFN1bSA8IC0zMDgsIG1ha2luZyBQ
b3cxMChwKSA9IDAKLSAgICAgICAgZCA9IEZhc3RQYXRoKGQsIC0zMDgpOwotICAgICAgICBkID0g
RmFzdFBhdGgoZCwgcCArIDMwOCk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgZCA9IEZhc3RQ
YXRoKGQsIHApOwotICAgIHJldHVybiBkOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlu
bGluZSBUIE1pbjMoVCBhLCBUIGIsIFQgYykgewotICAgIFQgbSA9IGE7Ci0gICAgaWYgKG0gPiBi
KSBtID0gYjsKLSAgICBpZiAobSA+IGMpIG0gPSBjOwotICAgIHJldHVybiBtOwotfQotCi1pbmxp
bmUgaW50IENoZWNrV2l0aGluSGFsZlVMUChkb3VibGUgYiwgY29uc3QgQmlnSW50ZWdlciYgZCwg
aW50IGRFeHAsIGJvb2wqIGFkanVzdFRvTmVnYXRpdmUpIHsKLSAgICBjb25zdCBEb3VibGUgZGIo
Yik7Ci0gICAgY29uc3QgdWludDY0X3QgYkludCA9IGRiLkludGVnZXJTaWduaWZpY2FuZCgpOwot
ICAgIGNvbnN0IGludCBiRXhwID0gZGIuSW50ZWdlckV4cG9uZW50KCk7Ci0gICAgY29uc3QgaW50
IGhFeHAgPSBiRXhwIC0gMTsKLQotICAgIGludCBkU19FeHAyID0gMCwgZFNfRXhwNSA9IDAsIGJT
X0V4cDIgPSAwLCBiU19FeHA1ID0gMCwgaFNfRXhwMiA9IDAsIGhTX0V4cDUgPSAwOwotCi0gICAg
Ly8gQWRqdXN0IGZvciBkZWNpbWFsIGV4cG9uZW50Ci0gICAgaWYgKGRFeHAgPj0gMCkgewotICAg
ICAgICBkU19FeHAyICs9IGRFeHA7Ci0gICAgICAgIGRTX0V4cDUgKz0gZEV4cDsKLSAgICB9Ci0g
ICAgZWxzZSB7Ci0gICAgICAgIGJTX0V4cDIgLT0gZEV4cDsKLSAgICAgICAgYlNfRXhwNSAtPSBk
RXhwOwotICAgICAgICBoU19FeHAyIC09IGRFeHA7Ci0gICAgICAgIGhTX0V4cDUgLT0gZEV4cDsK
LSAgICB9Ci0KLSAgICAvLyBBZGp1c3QgZm9yIGJpbmFyeSBleHBvbmVudAotICAgIGlmIChiRXhw
ID49IDApCi0gICAgICAgIGJTX0V4cDIgKz0gYkV4cDsKLSAgICBlbHNlIHsKLSAgICAgICAgZFNf
RXhwMiAtPSBiRXhwOwotICAgICAgICBoU19FeHAyIC09IGJFeHA7Ci0gICAgfQotCi0gICAgLy8g
QWRqdXN0IGZvciBoYWxmIHVscCBleHBvbmVudAotICAgIGlmIChoRXhwID49IDApCi0gICAgICAg
IGhTX0V4cDIgKz0gaEV4cDsKLSAgICBlbHNlIHsKLSAgICAgICAgZFNfRXhwMiAtPSBoRXhwOwot
ICAgICAgICBiU19FeHAyIC09IGhFeHA7Ci0gICAgfQotCi0gICAgLy8gUmVtb3ZlIGNvbW1vbiBw
b3dlciBvZiB0d28gZmFjdG9yIGZyb20gYWxsIHRocmVlIHNjYWxlZCB2YWx1ZXMKLSAgICBpbnQg
Y29tbW9uX0V4cDIgPSBNaW4zKGRTX0V4cDIsIGJTX0V4cDIsIGhTX0V4cDIpOwotICAgIGRTX0V4
cDIgLT0gY29tbW9uX0V4cDI7Ci0gICAgYlNfRXhwMiAtPSBjb21tb25fRXhwMjsKLSAgICBoU19F
eHAyIC09IGNvbW1vbl9FeHAyOwotCi0gICAgQmlnSW50ZWdlciBkUyA9IGQ7Ci0gICAgZFMuTXVs
dGlwbHlQb3c1KGRTX0V4cDUpIDw8PSBkU19FeHAyOwotCi0gICAgQmlnSW50ZWdlciBiUyhiSW50
KTsKLSAgICBiUy5NdWx0aXBseVBvdzUoYlNfRXhwNSkgPDw9IGJTX0V4cDI7Ci0KLSAgICBCaWdJ
bnRlZ2VyIGhTKDEpOwotICAgIGhTLk11bHRpcGx5UG93NShoU19FeHA1KSA8PD0gaFNfRXhwMjsK
LQotICAgIEJpZ0ludGVnZXIgZGVsdGEoMCk7Ci0gICAgKmFkanVzdFRvTmVnYXRpdmUgPSBkUy5E
aWZmZXJlbmNlKGJTLCAmZGVsdGEpOwotCi0gICAgaW50IGNtcCA9IGRlbHRhLkNvbXBhcmUoaFMp
OwotICAgIC8vIElmIGRlbHRhIGlzIHdpdGhpbiAxLzIgVUxQLCBjaGVjayBmb3Igc3BlY2lhbCBj
YXNlIHdoZW4gc2lnbmlmaWNhbmQgaXMgcG93ZXIgb2YgdHdvLgotICAgIC8vIEluIHRoaXMgY2Fz
ZSwgbmVlZCB0byBjb21wYXJlIHdpdGggMS8yaCBpbiB0aGUgbG93ZXIgYm91bmQuCi0gICAgaWYg
KGNtcCA8IDAgJiYgKmFkanVzdFRvTmVnYXRpdmUgJiYgLy8gd2l0aGluIGFuZCBkUyA8IGJTCi0g
ICAgICAgIGRiLklzTm9ybWFsKCkgJiYgKGJJbnQgJiAoYkludCAtIDEpKSA9PSAwICYmIC8vIFBv
d2VyIG9mIDIKLSAgICAgICAgZGIuVWludDY0VmFsdWUoKSAhPSBSQVBJREpTT05fVUlOVDY0X0My
KDB4MDAxMDAwMDAsIDB4MDAwMDAwMDApKSAvLyBtaW5pbXVtIG5vcm1hbCBudW1iZXIgbXVzdCBu
b3QgZG8gdGhpcwotICAgIHsKLSAgICAgICAgZGVsdGEgPDw9IDE7Ci0gICAgICAgIHJldHVybiBk
ZWx0YS5Db21wYXJlKGhTKTsKLSAgICB9Ci0gICAgcmV0dXJuIGNtcDsKLX0KLQotaW5saW5lIGJv
b2wgU3RydG9kRmFzdChkb3VibGUgZCwgaW50IHAsIGRvdWJsZSogcmVzdWx0KSB7Ci0gICAgLy8g
VXNlIGZhc3QgcGF0aCBmb3Igc3RyaW5nLXRvLWRvdWJsZSBjb252ZXJzaW9uIGlmIHBvc3NpYmxl
Ci0gICAgLy8gc2VlIGh0dHA6Ly93d3cuZXhwbG9yaW5nYmluYXJ5LmNvbS9mYXN0LXBhdGgtZGVj
aW1hbC10by1mbG9hdGluZy1wb2ludC1jb252ZXJzaW9uLwotICAgIGlmIChwID4gMjIgICYmIHAg
PCAyMiArIDE2KSB7Ci0gICAgICAgIC8vIEZhc3QgUGF0aCBDYXNlcyBJbiBEaXNndWlzZQotICAg
ICAgICBkICo9IGludGVybmFsOjpQb3cxMChwIC0gMjIpOwotICAgICAgICBwID0gMjI7Ci0gICAg
fQotCi0gICAgaWYgKHAgPj0gLTIyICYmIHAgPD0gMjIgJiYgZCA8PSA5MDA3MTk5MjU0NzQwOTkx
LjApIHsgLy8gMl41MyAtIDEKLSAgICAgICAgKnJlc3VsdCA9IEZhc3RQYXRoKGQsIHApOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLS8vIENvbXB1dGUgYW4gYXBwcm94aW1hdGlvbiBhbmQgc2VlIGlmIGl0IGlzIHdpdGhp
biAxLzIgVUxQCi1pbmxpbmUgYm9vbCBTdHJ0b2REaXlGcChjb25zdCBjaGFyKiBkZWNpbWFscywg
c2l6ZV90IGxlbmd0aCwgc2l6ZV90IGRlY2ltYWxQb3NpdGlvbiwgaW50IGV4cCwgZG91YmxlKiBy
ZXN1bHQpIHsKLSAgICB1aW50NjRfdCBzaWduaWZpY2FuZCA9IDA7Ci0gICAgc2l6ZV90IGkgPSAw
OyAgIC8vIDJeNjQgLSAxID0gMTg0NDY3NDQwNzM3MDk1NTE2MTUsIDE4NDQ2NzQ0MDczNzA5NTUx
NjEgPSAweDE5OTk5OTk5OTk5OTk5OTkgICAgCi0gICAgZm9yICg7IGkgPCBsZW5ndGg7IGkrKykg
ewotICAgICAgICBpZiAoc2lnbmlmaWNhbmQgID4gIFJBUElESlNPTl9VSU5UNjRfQzIoMHgxOTk5
OTk5OSwgMHg5OTk5OTk5OSkgfHwKLSAgICAgICAgICAgIChzaWduaWZpY2FuZCA9PSBSQVBJREpT
T05fVUlOVDY0X0MyKDB4MTk5OTk5OTksIDB4OTk5OTk5OTkpICYmIGRlY2ltYWxzW2ldID4gJzUn
KSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBzaWduaWZpY2FuZCA9IHNpZ25pZmljYW5k
ICogMTAgKyAoZGVjaW1hbHNbaV0gLSAnMCcpOwotICAgIH0KLSAgICAKLSAgICBpZiAoaSA8IGxl
bmd0aCAmJiBkZWNpbWFsc1tpXSA+PSAnNScpIC8vIFJvdW5kaW5nCi0gICAgICAgIHNpZ25pZmlj
YW5kKys7Ci0KLSAgICBzaXplX3QgcmVtYWluaW5nID0gbGVuZ3RoIC0gaTsKLSAgICBjb25zdCB1
bnNpZ25lZCBrVWxwU2hpZnQgPSAzOwotICAgIGNvbnN0IHVuc2lnbmVkIGtVbHAgPSAxIDw8IGtV
bHBTaGlmdDsKLSAgICBpbnQgZXJyb3IgPSAocmVtYWluaW5nID09IDApID8gMCA6IGtVbHAgLyAy
OwotCi0gICAgRGl5RnAgdihzaWduaWZpY2FuZCwgMCk7Ci0gICAgdiA9IHYuTm9ybWFsaXplKCk7
Ci0gICAgZXJyb3IgPDw9IC12LmU7Ci0KLSAgICBjb25zdCBpbnQgZEV4cCA9IChpbnQpZGVjaW1h
bFBvc2l0aW9uIC0gKGludClpICsgZXhwOwotCi0gICAgaW50IGFjdHVhbEV4cDsKLSAgICBEaXlG
cCBjYWNoZWRQb3dlciA9IEdldENhY2hlZFBvd2VyMTAoZEV4cCwgJmFjdHVhbEV4cCk7Ci0gICAg
aWYgKGFjdHVhbEV4cCAhPSBkRXhwKSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBEaXlGcCBrUG93
MTBbXSA9IHsKLSAgICAgICAgICAgIERpeUZwKFJBUElESlNPTl9VSU5UNjRfQzIoMHhhMDAwMDAw
MCwgMDAwMDAwMDApLCAtNjApLCAgLy8gMTBeMQotICAgICAgICAgICAgRGl5RnAoUkFQSURKU09O
X1VJTlQ2NF9DMigweGM4MDAwMDAwLCAwMDAwMDAwMCksIC01NyksICAvLyAxMF4yCi0gICAgICAg
ICAgICBEaXlGcChSQVBJREpTT05fVUlOVDY0X0MyKDB4ZmEwMDAwMDAsIDAwMDAwMDAwKSwgLTU0
KSwgIC8vIDEwXjMKLSAgICAgICAgICAgIERpeUZwKFJBUElESlNPTl9VSU5UNjRfQzIoMHg5YzQw
MDAwMCwgMDAwMDAwMDApLCAtNTApLCAgLy8gMTBeNAotICAgICAgICAgICAgRGl5RnAoUkFQSURK
U09OX1VJTlQ2NF9DMigweGMzNTAwMDAwLCAwMDAwMDAwMCksIC00NyksICAvLyAxMF41Ci0gICAg
ICAgICAgICBEaXlGcChSQVBJREpTT05fVUlOVDY0X0MyKDB4ZjQyNDAwMDAsIDAwMDAwMDAwKSwg
LTQ0KSwgIC8vIDEwXjYKLSAgICAgICAgICAgIERpeUZwKFJBUElESlNPTl9VSU5UNjRfQzIoMHg5
ODk2ODAwMCwgMDAwMDAwMDApLCAtNDApICAgLy8gMTBeNwotICAgICAgICB9OwotICAgICAgICBp
bnQgYWRqdXN0bWVudCA9IGRFeHAgLSBhY3R1YWxFeHAgLSAxOwotICAgICAgICBSQVBJREpTT05f
QVNTRVJUKGFkanVzdG1lbnQgPj0gMCAmJiBhZGp1c3RtZW50IDwgNyk7Ci0gICAgICAgIHYgPSB2
ICoga1BvdzEwW2FkanVzdG1lbnRdOwotICAgICAgICBpZiAobGVuZ3RoICsgYWRqdXN0bWVudCA+
IDE5KSAvLyBoYXMgbW9yZSBkaWdpdHMgdGhhbiBkZWNpbWFsIGRpZ2l0cyBpbiA2NC1iaXQKLSAg
ICAgICAgICAgIGVycm9yICs9IGtVbHAgLyAyOwotICAgIH0KLQotICAgIHYgPSB2ICogY2FjaGVk
UG93ZXI7Ci0KLSAgICBlcnJvciArPSBrVWxwICsgKGVycm9yID09IDAgPyAwIDogMSk7Ci0KLSAg
ICBjb25zdCBpbnQgb2xkRXhwID0gdi5lOwotICAgIHYgPSB2Lk5vcm1hbGl6ZSgpOwotICAgIGVy
cm9yIDw8PSBvbGRFeHAgLSB2LmU7Ci0KLSAgICBjb25zdCB1bnNpZ25lZCBlZmZlY3RpdmVTaWdu
aWZpY2FuZFNpemUgPSBEb3VibGU6OkVmZmVjdGl2ZVNpZ25pZmljYW5kU2l6ZSg2NCArIHYuZSk7
Ci0gICAgdW5zaWduZWQgcHJlY2lzaW9uU2l6ZSA9IDY0IC0gZWZmZWN0aXZlU2lnbmlmaWNhbmRT
aXplOwotICAgIGlmIChwcmVjaXNpb25TaXplICsga1VscFNoaWZ0ID49IDY0KSB7Ci0gICAgICAg
IHVuc2lnbmVkIHNjYWxlRXhwID0gKHByZWNpc2lvblNpemUgKyBrVWxwU2hpZnQpIC0gNjM7Ci0g
ICAgICAgIHYuZiA+Pj0gc2NhbGVFeHA7Ci0gICAgICAgIHYuZSArPSBzY2FsZUV4cDsgCi0gICAg
ICAgIGVycm9yID0gKGVycm9yID4+IHNjYWxlRXhwKSArIDEgKyBrVWxwOwotICAgICAgICBwcmVj
aXNpb25TaXplIC09IHNjYWxlRXhwOwotICAgIH0KLQotICAgIERpeUZwIHJvdW5kZWQodi5mID4+
IHByZWNpc2lvblNpemUsIHYuZSArIHByZWNpc2lvblNpemUpOwotICAgIGNvbnN0IHVpbnQ2NF90
IHByZWNpc2lvbkJpdHMgPSAodi5mICYgKCh1aW50NjRfdCgxKSA8PCBwcmVjaXNpb25TaXplKSAt
IDEpKSAqIGtVbHA7Ci0gICAgY29uc3QgdWludDY0X3QgaGFsZldheSA9ICh1aW50NjRfdCgxKSA8
PCAocHJlY2lzaW9uU2l6ZSAtIDEpKSAqIGtVbHA7Ci0gICAgaWYgKHByZWNpc2lvbkJpdHMgPj0g
aGFsZldheSArIGVycm9yKQotICAgICAgICByb3VuZGVkLmYrKzsKLQotICAgICpyZXN1bHQgPSBy
b3VuZGVkLlRvRG91YmxlKCk7Ci0KLSAgICByZXR1cm4gaGFsZldheSAtIGVycm9yID49IHByZWNp
c2lvbkJpdHMgfHwgcHJlY2lzaW9uQml0cyA+PSBoYWxmV2F5ICsgZXJyb3I7Ci19Ci0KLWlubGlu
ZSBkb3VibGUgU3RydG9kQmlnSW50ZWdlcihkb3VibGUgYXBwcm94LCBjb25zdCBjaGFyKiBkZWNp
bWFscywgc2l6ZV90IGxlbmd0aCwgc2l6ZV90IGRlY2ltYWxQb3NpdGlvbiwgaW50IGV4cCkgewot
ICAgIGNvbnN0IEJpZ0ludGVnZXIgZEludChkZWNpbWFscywgbGVuZ3RoKTsKLSAgICBjb25zdCBp
bnQgZEV4cCA9IChpbnQpZGVjaW1hbFBvc2l0aW9uIC0gKGludClsZW5ndGggKyBleHA7Ci0gICAg
RG91YmxlIGEoYXBwcm94KTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspIHsKLSAg
ICAgICAgYm9vbCBhZGp1c3RUb05lZ2F0aXZlOwotICAgICAgICBpbnQgY21wID0gQ2hlY2tXaXRo
aW5IYWxmVUxQKGEuVmFsdWUoKSwgZEludCwgZEV4cCwgJmFkanVzdFRvTmVnYXRpdmUpOwotICAg
ICAgICBpZiAoY21wIDwgMCkKLSAgICAgICAgICAgIHJldHVybiBhLlZhbHVlKCk7ICAvLyB3aXRo
aW4gaGFsZiBVTFAKLSAgICAgICAgZWxzZSBpZiAoY21wID09IDApIHsKLSAgICAgICAgICAgIC8v
IFJvdW5kIHRvd2FyZHMgZXZlbgotICAgICAgICAgICAgaWYgKGEuU2lnbmlmaWNhbmQoKSAmIDEp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFkanVzdFRvTmVnYXRpdmUgPyBhLlByZXZpb3VzUG9z
aXRpdmVEb3VibGUoKSA6IGEuTmV4dFBvc2l0aXZlRG91YmxlKCk7Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGEuVmFsdWUoKTsKLSAgICAgICAgfQotICAgICAgICBl
bHNlIC8vIGFkanVzdG1lbnQKLSAgICAgICAgICAgIGEgPSBhZGp1c3RUb05lZ2F0aXZlID8gYS5Q
cmV2aW91c1Bvc2l0aXZlRG91YmxlKCkgOiBhLk5leHRQb3NpdGl2ZURvdWJsZSgpOwotICAgIH0K
LQotICAgIC8vIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4sIGJ1dCBpbiBjYXNlIHRoZXJlIGlzIHJl
YWxseSBhIGJ1ZywgYnJlYWsgdGhlIGluZmluaXRlLWxvb3AKLSAgICByZXR1cm4gYS5WYWx1ZSgp
OwotfQotCi1pbmxpbmUgZG91YmxlIFN0cnRvZEZ1bGxQcmVjaXNpb24oZG91YmxlIGQsIGludCBw
LCBjb25zdCBjaGFyKiBkZWNpbWFscywgc2l6ZV90IGxlbmd0aCwgc2l6ZV90IGRlY2ltYWxQb3Np
dGlvbiwgaW50IGV4cCkgewotICAgIFJBUElESlNPTl9BU1NFUlQoZCA+PSAwLjApOwotICAgIFJB
UElESlNPTl9BU1NFUlQobGVuZ3RoID49IDEpOwotCi0gICAgZG91YmxlIHJlc3VsdDsKLSAgICBp
ZiAoU3RydG9kRmFzdChkLCBwLCAmcmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLQot
ICAgIC8vIFRyaW0gbGVhZGluZyB6ZXJvcwotICAgIHdoaWxlICgqZGVjaW1hbHMgPT0gJzAnICYm
IGxlbmd0aCA+IDEpIHsKLSAgICAgICAgbGVuZ3RoLS07Ci0gICAgICAgIGRlY2ltYWxzKys7Ci0g
ICAgICAgIGRlY2ltYWxQb3NpdGlvbi0tOwotICAgIH0KLQotICAgIC8vIFRyaW0gdHJhaWxpbmcg
emVyb3MKLSAgICB3aGlsZSAoZGVjaW1hbHNbbGVuZ3RoIC0gMV0gPT0gJzAnICYmIGxlbmd0aCA+
IDEpIHsKLSAgICAgICAgbGVuZ3RoLS07Ci0gICAgICAgIGRlY2ltYWxQb3NpdGlvbi0tOwotICAg
ICAgICBleHArKzsKLSAgICB9Ci0KLSAgICAvLyBUcmltIHJpZ2h0LW1vc3QgZGlnaXRzCi0gICAg
Y29uc3QgaW50IGtNYXhEZWNpbWFsRGlnaXQgPSA3ODA7Ci0gICAgaWYgKChpbnQpbGVuZ3RoID4g
a01heERlY2ltYWxEaWdpdCkgewotICAgICAgICBleHAgKz0gKGludChsZW5ndGgpIC0ga01heERl
Y2ltYWxEaWdpdCk7Ci0gICAgICAgIGxlbmd0aCA9IGtNYXhEZWNpbWFsRGlnaXQ7Ci0gICAgfQot
Ci0gICAgLy8gSWYgdG9vIHNtYWxsLCB1bmRlcmZsb3cgdG8gemVybwotICAgIGlmIChpbnQobGVu
Z3RoKSArIGV4cCA8IC0zMjQpCi0gICAgICAgIHJldHVybiAwLjA7Ci0KLSAgICBpZiAoU3RydG9k
RGl5RnAoZGVjaW1hbHMsIGxlbmd0aCwgZGVjaW1hbFBvc2l0aW9uLCBleHAsICZyZXN1bHQpKQot
ICAgICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgLy8gVXNlIGFwcHJveGltYXRpb24gZnJvbSBT
dHJ0b2REaXlGcCBhbmQgbWFrZSBhZGp1c3RtZW50IHdpdGggQmlnSW50ZWdlciBjb21wYXJpc29u
Ci0gICAgcmV0dXJuIFN0cnRvZEJpZ0ludGVnZXIocmVzdWx0LCBkZWNpbWFscywgbGVuZ3RoLCBk
ZWNpbWFsUG9zaXRpb24sIGV4cCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIGludGVybmFsCi1SQVBJ
REpTT05fTkFNRVNQQUNFX0VORAotCi0jZW5kaWYgLy8gUkFQSURKU09OX1NUUlRPRF8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBp
ZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vbWVtb3J5YnVmZmVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29u
L21lbW9yeWJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWM2OGEzODcx
MC4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3Ro
aXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9tZW1vcnlidWZmZXIuaAorKysg
L2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlp
cAotLy8KLS8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0
byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLS8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz
c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCi0v
LyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg
bGltaXRhdGlvbiB0aGUgcmlnaHRzCi0vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1
Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi0vLyBjb3BpZXMgb2Yg
dGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUg
aXMKLS8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnM6Ci0vLwotLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlz
c2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLS8vIGFsbCBjb3BpZXMgb3Igc3Vic3Rh
bnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotLy8KLS8vIFRIRSBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S
Ci0vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSwKLS8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotLy8gQVVUSE9SUyBP
UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP
VEhFUgotLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S
VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLS8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O
IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KLS8vIFRI
RSBTT0ZUV0FSRS4KLQotI2lmbmRlZiBSQVBJREpTT05fTUVNT1JZQlVGRkVSX0hfCi0jZGVmaW5l
IFJBUElESlNPTl9NRU1PUllCVUZGRVJfSF8KLQotI2luY2x1ZGUgInJhcGlkanNvbi5oIgotI2lu
Y2x1ZGUgImludGVybmFsL3N0YWNrLmgiCi0KLVJBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KLQot
Ly8hIFJlcHJlc2VudHMgYW4gaW4tbWVtb3J5IG91dHB1dCBieXRlIHN0cmVhbS4KLS8qIQotICAg
IFRoaXMgY2xhc3MgaXMgbWFpbmx5IGZvciBiZWluZyB3cmFwcGVkIGJ5IEVuY29kZWRPdXRwdXRT
dHJlYW0gb3IgQXV0b1VURk91dHB1dFN0cmVhbS4KLQotICAgIEl0IGlzIHNpbWlsYXIgdG8gRmls
ZVdyaXRlQnVmZmVyIGJ1dCB0aGUgZGVzdGluYXRpb24gaXMgYW4gaW4tbWVtb3J5IGJ1ZmZlciBp
bnN0ZWFkIG9mIGEgZmlsZS4KLQotICAgIERpZmZlcmVuY2VzIGJldHdlZW4gTWVtb3J5QnVmZmVy
IGFuZCBTdHJpbmdCdWZmZXI6Ci0gICAgMS4gU3RyaW5nQnVmZmVyIGhhcyBFbmNvZGluZyBidXQg
TWVtb3J5QnVmZmVyIGlzIG9ubHkgYSBieXRlIGJ1ZmZlci4gCi0gICAgMi4gU3RyaW5nQnVmZmVy
OjpHZXRTdHJpbmcoKSByZXR1cm5zIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZy4gTWVtb3J5QnVm
ZmVyOjpHZXRCdWZmZXIoKSByZXR1cm5zIGEgYnVmZmVyIHdpdGhvdXQgdGVybWluYXRvci4KLQot
ICAgIFx0cGFyYW0gQWxsb2NhdG9yIHR5cGUgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IGJ1ZmZlci4K
LSAgICBcbm90ZSBpbXBsZW1lbnRzIFN0cmVhbSBjb25jZXB0Ci0qLwotdGVtcGxhdGUgPHR5cGVu
YW1lIEFsbG9jYXRvciA9IENydEFsbG9jYXRvcj4KLXN0cnVjdCBHZW5lcmljTWVtb3J5QnVmZmVy
IHsKLSAgICB0eXBlZGVmIGNoYXIgQ2g7IC8vIGJ5dGUKLQotICAgIEdlbmVyaWNNZW1vcnlCdWZm
ZXIoQWxsb2NhdG9yKiBhbGxvY2F0b3IgPSAwLCBzaXplX3QgY2FwYWNpdHkgPSBrRGVmYXVsdENh
cGFjaXR5KSA6IHN0YWNrXyhhbGxvY2F0b3IsIGNhcGFjaXR5KSB7fQotCi0gICAgdm9pZCBQdXQo
Q2ggYykgeyAqc3RhY2tfLnRlbXBsYXRlIFB1c2g8Q2g+KCkgPSBjOyB9Ci0gICAgdm9pZCBGbHVz
aCgpIHt9Ci0KLSAgICB2b2lkIENsZWFyKCkgeyBzdGFja18uQ2xlYXIoKTsgfQotICAgIHZvaWQg
U2hyaW5rVG9GaXQoKSB7IHN0YWNrXy5TaHJpbmtUb0ZpdCgpOyB9Ci0gICAgQ2gqIFB1c2goc2l6
ZV90IGNvdW50KSB7IHJldHVybiBzdGFja18udGVtcGxhdGUgUHVzaDxDaD4oY291bnQpOyB9Ci0g
ICAgdm9pZCBQb3Aoc2l6ZV90IGNvdW50KSB7IHN0YWNrXy50ZW1wbGF0ZSBQb3A8Q2g+KGNvdW50
KTsgfQotCi0gICAgY29uc3QgQ2gqIEdldEJ1ZmZlcigpIGNvbnN0IHsKLSAgICAgICAgcmV0dXJu
IHN0YWNrXy50ZW1wbGF0ZSBCb3R0b208Q2g+KCk7Ci0gICAgfQotCi0gICAgc2l6ZV90IEdldFNp
emUoKSBjb25zdCB7IHJldHVybiBzdGFja18uR2V0U2l6ZSgpOyB9Ci0KLSAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IGtEZWZhdWx0Q2FwYWNpdHkgPSAyNTY7Ci0gICAgbXV0YWJsZSBpbnRlcm5hbDo6
U3RhY2s8QWxsb2NhdG9yPiBzdGFja187Ci19OwotCi10eXBlZGVmIEdlbmVyaWNNZW1vcnlCdWZm
ZXI8PiBNZW1vcnlCdWZmZXI7Ci0KLS8vISBJbXBsZW1lbnQgc3BlY2lhbGl6ZWQgdmVyc2lvbiBv
ZiBQdXROKCkgd2l0aCBtZW1zZXQoKSBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgotdGVtcGxhdGU8
PgotaW5saW5lIHZvaWQgUHV0TihNZW1vcnlCdWZmZXImIG1lbW9yeUJ1ZmZlciwgY2hhciBjLCBz
aXplX3QgbikgewotICAgIHN0ZDo6bWVtc2V0KG1lbW9yeUJ1ZmZlci5zdGFja18uUHVzaDxjaGFy
PihuKSwgYywgbiAqIHNpemVvZihjKSk7Ci19Ci0KLVJBUElESlNPTl9OQU1FU1BBQ0VfRU5ECi0K
LSNlbmRpZiAvLyBSQVBJREpTT05fTUVNT1JZQlVGRkVSX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUv
cmFwaWRqc29uL21lbW9yeXN0cmVhbS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rl
c3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9tZW1vcnlzdHJlYW0u
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk5NGExMmZjNDcuLjAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBp
ZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vbWVtb3J5c3RyZWFtLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2NyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAKLS8vCi0vLyBQZXJt
aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv
YnRhaW5pbmcgYSBjb3B5Ci0vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt
ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAotLy8gaW4gdGhlIFNvZnR3
YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhl
IHJpZ2h0cwotLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmli
dXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg
YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0vLyBmdXJuaXNo
ZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotLy8KLS8v
IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo
YWxsIGJlIGluY2x1ZGVkIGluCi0vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z
IG9mIHRoZSBTb2Z0d2FyZS4KLS8vCi0vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElT
IiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotLy8gSU1QTElFRCwg
SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFksCi0vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklO
R0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLS8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP
TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLS8vIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF
LCBBUklTSU5HIEZST00sCi0vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU
V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCi0vLyBUSEUgU09GVFdBUkUuCi0K
LSNpZm5kZWYgUkFQSURKU09OX01FTU9SWVNUUkVBTV9IXwotI2RlZmluZSBSQVBJREpTT05fTUVN
T1JZU1RSRUFNX0hfCi0KLSNpbmNsdWRlICJyYXBpZGpzb24uaCIKLQotUkFQSURKU09OX05BTUVT
UEFDRV9CRUdJTgotCi0vLyEgUmVwcmVzZW50cyBhbiBpbi1tZW1vcnkgaW5wdXQgYnl0ZSBzdHJl
YW0uCi0vKiEKLSAgICBUaGlzIGNsYXNzIGlzIG1haW5seSBmb3IgYmVpbmcgd3JhcHBlZCBieSBF
bmNvZGVkSW5wdXRTdHJlYW0gb3IgQXV0b1VURklucHV0U3RyZWFtLgotCi0gICAgSXQgaXMgc2lt
aWxhciB0byBGaWxlUmVhZEJ1ZmZlciBidXQgdGhlIHNvdXJjZSBpcyBhbiBpbi1tZW1vcnkgYnVm
ZmVyIGluc3RlYWQgb2YgYSBmaWxlLgotCi0gICAgRGlmZmVyZW5jZXMgYmV0d2VlbiBNZW1vcnlT
dHJlYW0gYW5kIFN0cmluZ1N0cmVhbToKLSAgICAxLiBTdHJpbmdTdHJlYW0gaGFzIGVuY29kaW5n
IGJ1dCBNZW1vcnlTdHJlYW0gaXMgYSBieXRlIHN0cmVhbS4KLSAgICAyLiBNZW1vcnlTdHJlYW0g
bmVlZHMgc2l6ZSBvZiB0aGUgc291cmNlIGJ1ZmZlciBhbmQgdGhlIGJ1ZmZlciBkb24ndCBuZWVk
IHRvIGJlIG51bGwgdGVybWluYXRlZC4gU3RyaW5nU3RyZWFtIGFzc3VtZSBudWxsLXRlcm1pbmF0
ZWQgc3RyaW5nIGFzIHNvdXJjZS4KLSAgICAzLiBNZW1vcnlTdHJlYW0gc3VwcG9ydHMgUGVlazQo
KSBmb3IgZW5jb2RpbmcgZGV0ZWN0aW9uLiBTdHJpbmdTdHJlYW0gaXMgc3BlY2lmaWVkIHdpdGgg
YW4gZW5jb2Rpbmcgc28gaXQgc2hvdWxkIG5vdCBoYXZlIFBlZWs0KCkuCi0gICAgXG5vdGUgaW1w
bGVtZW50cyBTdHJlYW0gY29uY2VwdAotKi8KLXN0cnVjdCBNZW1vcnlTdHJlYW0gewotICAgIHR5
cGVkZWYgY2hhciBDaDsgLy8gYnl0ZQotCi0gICAgTWVtb3J5U3RyZWFtKGNvbnN0IENoICpzcmMs
IHNpemVfdCBzaXplKSA6IHNyY18oc3JjKSwgYmVnaW5fKHNyYyksIGVuZF8oc3JjICsgc2l6ZSks
IHNpemVfKHNpemUpIHt9Ci0KLSAgICBDaCBQZWVrKCkgY29uc3QgeyByZXR1cm4gKHNyY18gPT0g
ZW5kXykgPyAnXDAnIDogKnNyY187IH0KLSAgICBDaCBUYWtlKCkgeyByZXR1cm4gKHNyY18gPT0g
ZW5kXykgPyAnXDAnIDogKnNyY18rKzsgfQotICAgIHNpemVfdCBUZWxsKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihzcmNfIC0gYmVnaW5fKTsgfQotCi0gICAgQ2gqIFB1dEJl
Z2luKCkgeyBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsgcmV0dXJuIDA7IH0KLSAgICB2b2lkIFB1
dChDaCkgeyBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsgfQotICAgIHZvaWQgRmx1c2goKSB7IFJB
UElESlNPTl9BU1NFUlQoZmFsc2UpOyB9Ci0gICAgc2l6ZV90IFB1dEVuZChDaCopIHsgUkFQSURK
U09OX0FTU0VSVChmYWxzZSk7IHJldHVybiAwOyB9Ci0KLSAgICAvLyBGb3IgZW5jb2RpbmcgZGV0
ZWN0aW9uIG9ubHkuCi0gICAgY29uc3QgQ2gqIFBlZWs0KCkgY29uc3QgewotICAgICAgICByZXR1
cm4gVGVsbCgpICsgNCA8PSBzaXplXyA/IHNyY18gOiAwOwotICAgIH0KLQotICAgIGNvbnN0IENo
KiBzcmNfOyAgICAgLy8hPCBDdXJyZW50IHJlYWQgcG9zaXRpb24uCi0gICAgY29uc3QgQ2gqIGJl
Z2luXzsgICAvLyE8IE9yaWdpbmFsIGhlYWQgb2YgdGhlIHN0cmluZy4KLSAgICBjb25zdCBDaCog
ZW5kXzsgICAgIC8vITwgRW5kIG9mIHN0cmVhbS4KLSAgICBzaXplX3Qgc2l6ZV87ICAgICAgIC8v
ITwgU2l6ZSBvZiB0aGUgc3RyZWFtLgotfTsKLQotUkFQSURKU09OX05BTUVTUEFDRV9FTkQKLQot
I2VuZGlmIC8vIFJBUElESlNPTl9NRU1PUllCVUZGRVJfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9y
YXBpZGpzb24vbXNpbnR0eXBlcy9pbnR0eXBlcy5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9tc2ludHR5
cGVzL2ludHR5cGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmNzEzYzlhZGY1
Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhp
cmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL21zaW50dHlwZXMvaW50dHlwZXMu
aAorKysgL2Rldi9udWxsCkBAIC0xLDMxMiArMCwwIEBACi0vLyBJU08gQzl4ICBjb21wbGlhbnQg
aW50dHlwZXMuaCBmb3IgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8KLS8vIEJhc2VkIG9uIElTTy9J
RUMgOTg5OTpUQzIgQ29tbWl0dGVlIGRyYWZ0IChNYXkgNiwgMjAwNSkgV0cxNC9OMTEyNCAKLS8v
IAotLy8gIENvcHlyaWdodCAoYykgMjAwNi0yMDEzIEFsZXhhbmRlciBDaGVtZXJpcwotLy8gCi0v
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgotLy8gCi0vLyAgIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5v
dGljZSwKLS8vICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLS8vIAotLy8gICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0v
LyAgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0vLyAKLS8vICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUg
cHJvZHVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5Ci0vLyAgICAgIGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNv
ZnR3YXJlCi0vLyAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotLy8gCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJ
UycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECi0vLyBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgotLy8gTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8KLS8vIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLS8v
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOwotLy8gT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIAotLy8gV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IKLS8vIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYKLS8vIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotLy8gCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSNpZm5kZWYgX01TQ19W
RVIgLy8gWwotI2Vycm9yICJVc2UgdGhpcyBoZWFkZXIgb25seSB3aXRoIE1pY3Jvc29mdCBWaXN1
YWwgQysrIGNvbXBpbGVycyEiCi0jZW5kaWYgLy8gX01TQ19WRVIgXQotCi0jaWZuZGVmIF9NU0Nf
SU5UVFlQRVNfSF8gLy8gWwotI2RlZmluZSBfTVNDX0lOVFRZUEVTX0hfCi0KLSNpZiBfTVNDX1ZF
UiA+IDEwMDAKLSNwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlICJzdGRpbnQuaCIKLQot
Ly8gbWlsb3lpcDogVkMgc3VwcG9ydHMgaW50dHlwZXMuaCBzaW5jZSBWQzIwMTMKLSNpZiBfTVND
X1ZFUiA+PSAxODAwCi0jaW5jbHVkZSA8aW50dHlwZXMuaD4KLSNlbHNlCi0KLS8vIDcuOCBGb3Jt
YXQgY29udmVyc2lvbiBvZiBpbnRlZ2VyIHR5cGVzCi0KLXR5cGVkZWYgc3RydWN0IHsKLSAgIGlu
dG1heF90IHF1b3Q7Ci0gICBpbnRtYXhfdCByZW07Ci19IGltYXhkaXZfdDsKLQotLy8gNy44LjEg
TWFjcm9zIGZvciBmb3JtYXQgc3BlY2lmaWVycwotCi0jaWYgIWRlZmluZWQoX19jcGx1c3BsdXMp
IHx8IGRlZmluZWQoX19TVERDX0ZPUk1BVF9NQUNST1MpIC8vIFsgICBTZWUgZm9vdG5vdGUgMTg1
IGF0IHBhZ2UgMTk4Ci0KLS8vIFRoZSBmcHJpbnRmIG1hY3JvcyBmb3Igc2lnbmVkIGludGVnZXJz
IGFyZToKLSNkZWZpbmUgUFJJZDggICAgICAgImQiCi0jZGVmaW5lIFBSSWk4ICAgICAgICJpIgot
I2RlZmluZSBQUklkTEVBU1Q4ICAiZCIKLSNkZWZpbmUgUFJJaUxFQVNUOCAgImkiCi0jZGVmaW5l
IFBSSWRGQVNUOCAgICJkIgotI2RlZmluZSBQUklpRkFTVDggICAiaSIKLQotI2RlZmluZSBQUklk
MTYgICAgICAgImhkIgotI2RlZmluZSBQUklpMTYgICAgICAgImhpIgotI2RlZmluZSBQUklkTEVB
U1QxNiAgImhkIgotI2RlZmluZSBQUklpTEVBU1QxNiAgImhpIgotI2RlZmluZSBQUklkRkFTVDE2
ICAgImhkIgotI2RlZmluZSBQUklpRkFTVDE2ICAgImhpIgotCi0jZGVmaW5lIFBSSWQzMiAgICAg
ICAiSTMyZCIKLSNkZWZpbmUgUFJJaTMyICAgICAgICJJMzJpIgotI2RlZmluZSBQUklkTEVBU1Qz
MiAgIkkzMmQiCi0jZGVmaW5lIFBSSWlMRUFTVDMyICAiSTMyaSIKLSNkZWZpbmUgUFJJZEZBU1Qz
MiAgICJJMzJkIgotI2RlZmluZSBQUklpRkFTVDMyICAgIkkzMmkiCi0KLSNkZWZpbmUgUFJJZDY0
ICAgICAgICJJNjRkIgotI2RlZmluZSBQUklpNjQgICAgICAgIkk2NGkiCi0jZGVmaW5lIFBSSWRM
RUFTVDY0ICAiSTY0ZCIKLSNkZWZpbmUgUFJJaUxFQVNUNjQgICJJNjRpIgotI2RlZmluZSBQUklk
RkFTVDY0ICAgIkk2NGQiCi0jZGVmaW5lIFBSSWlGQVNUNjQgICAiSTY0aSIKLQotI2RlZmluZSBQ
UklkTUFYICAgICAiSTY0ZCIKLSNkZWZpbmUgUFJJaU1BWCAgICAgIkk2NGkiCi0KLSNkZWZpbmUg
UFJJZFBUUiAgICAgIklkIgotI2RlZmluZSBQUklpUFRSICAgICAiSWkiCi0KLS8vIFRoZSBmcHJp
bnRmIG1hY3JvcyBmb3IgdW5zaWduZWQgaW50ZWdlcnMgYXJlOgotI2RlZmluZSBQUklvOCAgICAg
ICAibyIKLSNkZWZpbmUgUFJJdTggICAgICAgInUiCi0jZGVmaW5lIFBSSXg4ICAgICAgICJ4Igot
I2RlZmluZSBQUklYOCAgICAgICAiWCIKLSNkZWZpbmUgUFJJb0xFQVNUOCAgIm8iCi0jZGVmaW5l
IFBSSXVMRUFTVDggICJ1IgotI2RlZmluZSBQUkl4TEVBU1Q4ICAieCIKLSNkZWZpbmUgUFJJWExF
QVNUOCAgIlgiCi0jZGVmaW5lIFBSSW9GQVNUOCAgICJvIgotI2RlZmluZSBQUkl1RkFTVDggICAi
dSIKLSNkZWZpbmUgUFJJeEZBU1Q4ICAgIngiCi0jZGVmaW5lIFBSSVhGQVNUOCAgICJYIgotCi0j
ZGVmaW5lIFBSSW8xNiAgICAgICAiaG8iCi0jZGVmaW5lIFBSSXUxNiAgICAgICAiaHUiCi0jZGVm
aW5lIFBSSXgxNiAgICAgICAiaHgiCi0jZGVmaW5lIFBSSVgxNiAgICAgICAiaFgiCi0jZGVmaW5l
IFBSSW9MRUFTVDE2ICAiaG8iCi0jZGVmaW5lIFBSSXVMRUFTVDE2ICAiaHUiCi0jZGVmaW5lIFBS
SXhMRUFTVDE2ICAiaHgiCi0jZGVmaW5lIFBSSVhMRUFTVDE2ICAiaFgiCi0jZGVmaW5lIFBSSW9G
QVNUMTYgICAiaG8iCi0jZGVmaW5lIFBSSXVGQVNUMTYgICAiaHUiCi0jZGVmaW5lIFBSSXhGQVNU
MTYgICAiaHgiCi0jZGVmaW5lIFBSSVhGQVNUMTYgICAiaFgiCi0KLSNkZWZpbmUgUFJJbzMyICAg
ICAgICJJMzJvIgotI2RlZmluZSBQUkl1MzIgICAgICAgIkkzMnUiCi0jZGVmaW5lIFBSSXgzMiAg
ICAgICAiSTMyeCIKLSNkZWZpbmUgUFJJWDMyICAgICAgICJJMzJYIgotI2RlZmluZSBQUklvTEVB
U1QzMiAgIkkzMm8iCi0jZGVmaW5lIFBSSXVMRUFTVDMyICAiSTMydSIKLSNkZWZpbmUgUFJJeExF
QVNUMzIgICJJMzJ4IgotI2RlZmluZSBQUklYTEVBU1QzMiAgIkkzMlgiCi0jZGVmaW5lIFBSSW9G
QVNUMzIgICAiSTMybyIKLSNkZWZpbmUgUFJJdUZBU1QzMiAgICJJMzJ1IgotI2RlZmluZSBQUkl4
RkFTVDMyICAgIkkzMngiCi0jZGVmaW5lIFBSSVhGQVNUMzIgICAiSTMyWCIKLQotI2RlZmluZSBQ
UklvNjQgICAgICAgIkk2NG8iCi0jZGVmaW5lIFBSSXU2NCAgICAgICAiSTY0dSIKLSNkZWZpbmUg
UFJJeDY0ICAgICAgICJJNjR4IgotI2RlZmluZSBQUklYNjQgICAgICAgIkk2NFgiCi0jZGVmaW5l
IFBSSW9MRUFTVDY0ICAiSTY0byIKLSNkZWZpbmUgUFJJdUxFQVNUNjQgICJJNjR1IgotI2RlZmlu
ZSBQUkl4TEVBU1Q2NCAgIkk2NHgiCi0jZGVmaW5lIFBSSVhMRUFTVDY0ICAiSTY0WCIKLSNkZWZp
bmUgUFJJb0ZBU1Q2NCAgICJJNjRvIgotI2RlZmluZSBQUkl1RkFTVDY0ICAgIkk2NHUiCi0jZGVm
aW5lIFBSSXhGQVNUNjQgICAiSTY0eCIKLSNkZWZpbmUgUFJJWEZBU1Q2NCAgICJJNjRYIgotCi0j
ZGVmaW5lIFBSSW9NQVggICAgICJJNjRvIgotI2RlZmluZSBQUkl1TUFYICAgICAiSTY0dSIKLSNk
ZWZpbmUgUFJJeE1BWCAgICAgIkk2NHgiCi0jZGVmaW5lIFBSSVhNQVggICAgICJJNjRYIgotCi0j
ZGVmaW5lIFBSSW9QVFIgICAgICJJbyIKLSNkZWZpbmUgUFJJdVBUUiAgICAgIkl1IgotI2RlZmlu
ZSBQUkl4UFRSICAgICAiSXgiCi0jZGVmaW5lIFBSSVhQVFIgICAgICJJWCIKLQotLy8gVGhlIGZz
Y2FuZiBtYWNyb3MgZm9yIHNpZ25lZCBpbnRlZ2VycyBhcmU6Ci0jZGVmaW5lIFNDTmQ4ICAgICAg
ICJkIgotI2RlZmluZSBTQ05pOCAgICAgICAiaSIKLSNkZWZpbmUgU0NOZExFQVNUOCAgImQiCi0j
ZGVmaW5lIFNDTmlMRUFTVDggICJpIgotI2RlZmluZSBTQ05kRkFTVDggICAiZCIKLSNkZWZpbmUg
U0NOaUZBU1Q4ICAgImkiCi0KLSNkZWZpbmUgU0NOZDE2ICAgICAgICJoZCIKLSNkZWZpbmUgU0NO
aTE2ICAgICAgICJoaSIKLSNkZWZpbmUgU0NOZExFQVNUMTYgICJoZCIKLSNkZWZpbmUgU0NOaUxF
QVNUMTYgICJoaSIKLSNkZWZpbmUgU0NOZEZBU1QxNiAgICJoZCIKLSNkZWZpbmUgU0NOaUZBU1Qx
NiAgICJoaSIKLQotI2RlZmluZSBTQ05kMzIgICAgICAgImxkIgotI2RlZmluZSBTQ05pMzIgICAg
ICAgImxpIgotI2RlZmluZSBTQ05kTEVBU1QzMiAgImxkIgotI2RlZmluZSBTQ05pTEVBU1QzMiAg
ImxpIgotI2RlZmluZSBTQ05kRkFTVDMyICAgImxkIgotI2RlZmluZSBTQ05pRkFTVDMyICAgImxp
IgotCi0jZGVmaW5lIFNDTmQ2NCAgICAgICAiSTY0ZCIKLSNkZWZpbmUgU0NOaTY0ICAgICAgICJJ
NjRpIgotI2RlZmluZSBTQ05kTEVBU1Q2NCAgIkk2NGQiCi0jZGVmaW5lIFNDTmlMRUFTVDY0ICAi
STY0aSIKLSNkZWZpbmUgU0NOZEZBU1Q2NCAgICJJNjRkIgotI2RlZmluZSBTQ05pRkFTVDY0ICAg
Ikk2NGkiCi0KLSNkZWZpbmUgU0NOZE1BWCAgICAgIkk2NGQiCi0jZGVmaW5lIFNDTmlNQVggICAg
ICJJNjRpIgotCi0jaWZkZWYgX1dJTjY0IC8vIFsKLSMgIGRlZmluZSBTQ05kUFRSICAgICAiSTY0
ZCIKLSMgIGRlZmluZSBTQ05pUFRSICAgICAiSTY0aSIKLSNlbHNlICAvLyBfV0lONjQgXVsKLSMg
IGRlZmluZSBTQ05kUFRSICAgICAibGQiCi0jICBkZWZpbmUgU0NOaVBUUiAgICAgImxpIgotI2Vu
ZGlmICAvLyBfV0lONjQgXQotCi0vLyBUaGUgZnNjYW5mIG1hY3JvcyBmb3IgdW5zaWduZWQgaW50
ZWdlcnMgYXJlOgotI2RlZmluZSBTQ05vOCAgICAgICAibyIKLSNkZWZpbmUgU0NOdTggICAgICAg
InUiCi0jZGVmaW5lIFNDTng4ICAgICAgICJ4IgotI2RlZmluZSBTQ05YOCAgICAgICAiWCIKLSNk
ZWZpbmUgU0NOb0xFQVNUOCAgIm8iCi0jZGVmaW5lIFNDTnVMRUFTVDggICJ1IgotI2RlZmluZSBT
Q054TEVBU1Q4ICAieCIKLSNkZWZpbmUgU0NOWExFQVNUOCAgIlgiCi0jZGVmaW5lIFNDTm9GQVNU
OCAgICJvIgotI2RlZmluZSBTQ051RkFTVDggICAidSIKLSNkZWZpbmUgU0NOeEZBU1Q4ICAgIngi
Ci0jZGVmaW5lIFNDTlhGQVNUOCAgICJYIgotCi0jZGVmaW5lIFNDTm8xNiAgICAgICAiaG8iCi0j
ZGVmaW5lIFNDTnUxNiAgICAgICAiaHUiCi0jZGVmaW5lIFNDTngxNiAgICAgICAiaHgiCi0jZGVm
aW5lIFNDTlgxNiAgICAgICAiaFgiCi0jZGVmaW5lIFNDTm9MRUFTVDE2ICAiaG8iCi0jZGVmaW5l
IFNDTnVMRUFTVDE2ICAiaHUiCi0jZGVmaW5lIFNDTnhMRUFTVDE2ICAiaHgiCi0jZGVmaW5lIFND
TlhMRUFTVDE2ICAiaFgiCi0jZGVmaW5lIFNDTm9GQVNUMTYgICAiaG8iCi0jZGVmaW5lIFNDTnVG
QVNUMTYgICAiaHUiCi0jZGVmaW5lIFNDTnhGQVNUMTYgICAiaHgiCi0jZGVmaW5lIFNDTlhGQVNU
MTYgICAiaFgiCi0KLSNkZWZpbmUgU0NObzMyICAgICAgICJsbyIKLSNkZWZpbmUgU0NOdTMyICAg
ICAgICJsdSIKLSNkZWZpbmUgU0NOeDMyICAgICAgICJseCIKLSNkZWZpbmUgU0NOWDMyICAgICAg
ICJsWCIKLSNkZWZpbmUgU0NOb0xFQVNUMzIgICJsbyIKLSNkZWZpbmUgU0NOdUxFQVNUMzIgICJs
dSIKLSNkZWZpbmUgU0NOeExFQVNUMzIgICJseCIKLSNkZWZpbmUgU0NOWExFQVNUMzIgICJsWCIK
LSNkZWZpbmUgU0NOb0ZBU1QzMiAgICJsbyIKLSNkZWZpbmUgU0NOdUZBU1QzMiAgICJsdSIKLSNk
ZWZpbmUgU0NOeEZBU1QzMiAgICJseCIKLSNkZWZpbmUgU0NOWEZBU1QzMiAgICJsWCIKLQotI2Rl
ZmluZSBTQ05vNjQgICAgICAgIkk2NG8iCi0jZGVmaW5lIFNDTnU2NCAgICAgICAiSTY0dSIKLSNk
ZWZpbmUgU0NOeDY0ICAgICAgICJJNjR4IgotI2RlZmluZSBTQ05YNjQgICAgICAgIkk2NFgiCi0j
ZGVmaW5lIFNDTm9MRUFTVDY0ICAiSTY0byIKLSNkZWZpbmUgU0NOdUxFQVNUNjQgICJJNjR1Igot
I2RlZmluZSBTQ054TEVBU1Q2NCAgIkk2NHgiCi0jZGVmaW5lIFNDTlhMRUFTVDY0ICAiSTY0WCIK
LSNkZWZpbmUgU0NOb0ZBU1Q2NCAgICJJNjRvIgotI2RlZmluZSBTQ051RkFTVDY0ICAgIkk2NHUi
Ci0jZGVmaW5lIFNDTnhGQVNUNjQgICAiSTY0eCIKLSNkZWZpbmUgU0NOWEZBU1Q2NCAgICJJNjRY
IgotCi0jZGVmaW5lIFNDTm9NQVggICAgICJJNjRvIgotI2RlZmluZSBTQ051TUFYICAgICAiSTY0
dSIKLSNkZWZpbmUgU0NOeE1BWCAgICAgIkk2NHgiCi0jZGVmaW5lIFNDTlhNQVggICAgICJJNjRY
IgotCi0jaWZkZWYgX1dJTjY0IC8vIFsKLSMgIGRlZmluZSBTQ05vUFRSICAgICAiSTY0byIKLSMg
IGRlZmluZSBTQ051UFRSICAgICAiSTY0dSIKLSMgIGRlZmluZSBTQ054UFRSICAgICAiSTY0eCIK
LSMgIGRlZmluZSBTQ05YUFRSICAgICAiSTY0WCIKLSNlbHNlICAvLyBfV0lONjQgXVsKLSMgIGRl
ZmluZSBTQ05vUFRSICAgICAibG8iCi0jICBkZWZpbmUgU0NOdVBUUiAgICAgImx1IgotIyAgZGVm
aW5lIFNDTnhQVFIgICAgICJseCIKLSMgIGRlZmluZSBTQ05YUFRSICAgICAibFgiCi0jZW5kaWYg
IC8vIF9XSU42NCBdCi0KLSNlbmRpZiAvLyBfX1NURENfRk9STUFUX01BQ1JPUyBdCi0KLS8vIDcu
OC4yIEZ1bmN0aW9ucyBmb3IgZ3JlYXRlc3Qtd2lkdGggaW50ZWdlciB0eXBlcwotCi0vLyA3Ljgu
Mi4xIFRoZSBpbWF4YWJzIGZ1bmN0aW9uCi0jZGVmaW5lIGltYXhhYnMgX2FiczY0Ci0KLS8vIDcu
OC4yLjIgVGhlIGltYXhkaXYgZnVuY3Rpb24KLQotLy8gVGhpcyBpcyBtb2RpZmllZCB2ZXJzaW9u
IG9mIGRpdigpIGZ1bmN0aW9uIGZyb20gTWljcm9zb2Z0J3MgZGl2LmMgZm91bmQKLS8vIGluICVN
U1ZDLk5FVCVcY3J0XHNyY1xkaXYuYwotI2lmZGVmIFNUQVRJQ19JTUFYRElWIC8vIFsKLXN0YXRp
YwotI2Vsc2UgLy8gU1RBVElDX0lNQVhESVYgXVsKLV9pbmxpbmUKLSNlbmRpZiAvLyBTVEFUSUNf
SU1BWERJViBdCi1pbWF4ZGl2X3QgX19jZGVjbCBpbWF4ZGl2KGludG1heF90IG51bWVyLCBpbnRt
YXhfdCBkZW5vbSkKLXsKLSAgIGltYXhkaXZfdCByZXN1bHQ7Ci0KLSAgIHJlc3VsdC5xdW90ID0g
bnVtZXIgLyBkZW5vbTsKLSAgIHJlc3VsdC5yZW0gPSBudW1lciAlIGRlbm9tOwotCi0gICBpZiAo
bnVtZXIgPCAwICYmIHJlc3VsdC5yZW0gPiAwKSB7Ci0gICAgICAvLyBkaWQgZGl2aXNpb24gd3Jv
bmc7IG11c3QgZml4IHVwCi0gICAgICArK3Jlc3VsdC5xdW90OwotICAgICAgcmVzdWx0LnJlbSAt
PSBkZW5vbTsKLSAgIH0KLQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy8gNy44LjIuMyBUaGUg
c3RydG9pbWF4IGFuZCBzdHJ0b3VtYXggZnVuY3Rpb25zCi0jZGVmaW5lIHN0cnRvaW1heCBfc3Ry
dG9pNjQKLSNkZWZpbmUgc3RydG91bWF4IF9zdHJ0b3VpNjQKLQotLy8gNy44LjIuNCBUaGUgd2Nz
dG9pbWF4IGFuZCB3Y3N0b3VtYXggZnVuY3Rpb25zCi0jZGVmaW5lIHdjc3RvaW1heCBfd2NzdG9p
NjQKLSNkZWZpbmUgd2NzdG91bWF4IF93Y3N0b3VpNjQKLQotI2VuZGlmIC8vIF9NU0NfVkVSID49
IDE4MDAKLQotI2VuZGlmIC8vIF9NU0NfSU5UVFlQRVNfSF8gXQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRl
L3JhcGlkanNvbi9tc2ludHR5cGVzL3N0ZGludC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9tc2ludHR5
cGVzL3N0ZGludC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmFkOTVhZjE1OS4u
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJk
X3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi9tc2ludHR5cGVzL3N0ZGludC5oCisr
KyAvZGV2L251bGwKQEAgLTEsMjk2ICswLDAgQEAKLS8vIElTTyBDOXggIGNvbXBsaWFudCBzdGRp
bnQuaCBmb3IgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8KLS8vIEJhc2VkIG9uIElTTy9JRUMgOTg5
OTpUQzIgQ29tbWl0dGVlIGRyYWZ0IChNYXkgNiwgMjAwNSkgV0cxNC9OMTEyNCAKLS8vIAotLy8g
IENvcHlyaWdodCAoYykgMjAwNi0yMDEzIEFsZXhhbmRlciBDaGVtZXJpcwotLy8gCi0vLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgotLy8gCi0vLyAgIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwK
LS8vICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLS8vIAotLy8gICAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotLy8gICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0vLyAgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0vLyAKLS8vICAgMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcHJvZHVj
dCBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5Ci0vLyAgICAgIGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJl
Ci0vLyAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotLy8g
Ci0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECi0vLyBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRgotLy8gTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8KLS8vIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLS8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLS8vIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOwotLy8gT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIAotLy8gV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IKLS8v
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYKLS8vIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLy8gCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSNpZm5kZWYgX01TQ19WRVIgLy8g
WwotI2Vycm9yICJVc2UgdGhpcyBoZWFkZXIgb25seSB3aXRoIE1pY3Jvc29mdCBWaXN1YWwgQysr
IGNvbXBpbGVycyEiCi0jZW5kaWYgLy8gX01TQ19WRVIgXQotCi0jaWZuZGVmIF9NU0NfU1RESU5U
X0hfIC8vIFsKLSNkZWZpbmUgX01TQ19TVERJTlRfSF8KLQotI2lmIF9NU0NfVkVSID4gMTAwMAot
I3ByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gbWlsb3lpcDogT3JpZ2luYWxseSBWaXN1YWwgU3R1
ZGlvIDIwMTAgdXNlcyBpdHMgb3duIHN0ZGludC5oLiBIb3dldmVyIGl0IGdlbmVyYXRlcyB3YXJu
aW5nIHdpdGggSU5UNjRfQygpLCBzbyBjaGFuZ2UgdG8gdXNlIHRoaXMgZmlsZSBmb3IgdnMyMDEw
LgotI2lmIF9NU0NfVkVSID49IDE2MDAgLy8gWwotI2luY2x1ZGUgPHN0ZGludC5oPgotCi0jaWYg
IWRlZmluZWQoX19jcGx1c3BsdXMpIHx8IGRlZmluZWQoX19TVERDX0NPTlNUQU5UX01BQ1JPUykg
Ly8gWyAgIFNlZSBmb290bm90ZSAyMjQgYXQgcGFnZSAyNjAKLQotI3VuZGVmIElOVDhfQwotI3Vu
ZGVmIElOVDE2X0MKLSN1bmRlZiBJTlQzMl9DCi0jdW5kZWYgSU5UNjRfQwotI3VuZGVmIFVJTlQ4
X0MKLSN1bmRlZiBVSU5UMTZfQwotI3VuZGVmIFVJTlQzMl9DCi0jdW5kZWYgVUlOVDY0X0MKLQot
Ly8gNy4xOC40LjEgTWFjcm9zIGZvciBtaW5pbXVtLXdpZHRoIGludGVnZXIgY29uc3RhbnRzCi0K
LSNkZWZpbmUgSU5UOF9DKHZhbCkgIHZhbCMjaTgKLSNkZWZpbmUgSU5UMTZfQyh2YWwpIHZhbCMj
aTE2Ci0jZGVmaW5lIElOVDMyX0ModmFsKSB2YWwjI2kzMgotI2RlZmluZSBJTlQ2NF9DKHZhbCkg
dmFsIyNpNjQKLQotI2RlZmluZSBVSU5UOF9DKHZhbCkgIHZhbCMjdWk4Ci0jZGVmaW5lIFVJTlQx
Nl9DKHZhbCkgdmFsIyN1aTE2Ci0jZGVmaW5lIFVJTlQzMl9DKHZhbCkgdmFsIyN1aTMyCi0jZGVm
aW5lIFVJTlQ2NF9DKHZhbCkgdmFsIyN1aTY0Ci0KLS8vIDcuMTguNC4yIE1hY3JvcyBmb3IgZ3Jl
YXRlc3Qtd2lkdGggaW50ZWdlciBjb25zdGFudHMKLS8vIFRoZXNlICNpZm5kZWYncyBhcmUgbmVl
ZGVkIHRvIHByZXZlbnQgY29sbGlzaW9ucyB3aXRoIDxib29zdC9jc3RkaW50LmhwcD4uCi0vLyBD
aGVjayBvdXQgSXNzdWUgOSBmb3IgdGhlIGRldGFpbHMuCi0jaWZuZGVmIElOVE1BWF9DIC8vICAg
WwotIyAgZGVmaW5lIElOVE1BWF9DICAgSU5UNjRfQwotI2VuZGlmIC8vIElOVE1BWF9DICAgIF0K
LSNpZm5kZWYgVUlOVE1BWF9DIC8vICBbCi0jICBkZWZpbmUgVUlOVE1BWF9DICBVSU5UNjRfQwot
I2VuZGlmIC8vIFVJTlRNQVhfQyAgIF0KLQotI2VuZGlmIC8vIF9fU1REQ19DT05TVEFOVF9NQUNS
T1MgXQotCi0jZWxzZSAvLyBdIF9NU0NfVkVSID49IDE3MDAgWwotCi0jaW5jbHVkZSA8bGltaXRz
Lmg+Ci0KLS8vIEZvciBWaXN1YWwgU3R1ZGlvIDYgaW4gQysrIG1vZGUgYW5kIGZvciBtYW55IFZp
c3VhbCBTdHVkaW8gdmVyc2lvbnMgd2hlbgotLy8gY29tcGlsaW5nIGZvciBBUk0gd2Ugc2hvdWxk
IHdyYXAgPHdjaGFyLmg+IGluY2x1ZGUgd2l0aCAnZXh0ZXJuICJDKysiIHt9JwotLy8gb3IgY29t
cGlsZXIgZ2l2ZSBtYW55IGVycm9ycyBsaWtlIHRoaXM6Ci0vLyAgIGVycm9yIEMyNzMzOiBzZWNv
bmQgQyBsaW5rYWdlIG9mIG92ZXJsb2FkZWQgZnVuY3Rpb24gJ3dtZW1jaHInIG5vdCBhbGxvd2Vk
Ci0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0jICBpbmNsdWRlIDx3
Y2hhci5oPgotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotLy8gRGVmaW5lIF9XNjQg
bWFjcm9zIHRvIG1hcmsgdHlwZXMgY2hhbmdpbmcgdGhlaXIgc2l6ZSwgbGlrZSBpbnRwdHJfdC4K
LSNpZm5kZWYgX1c2NAotIyAgaWYgIWRlZmluZWQoX19taWRsKSAmJiAoZGVmaW5lZChfWDg2Xykg
fHwgZGVmaW5lZChfTV9JWDg2KSkgJiYgX01TQ19WRVIgPj0gMTMwMAotIyAgICAgZGVmaW5lIF9X
NjQgX193NjQKLSMgIGVsc2UKLSMgICAgIGRlZmluZSBfVzY0Ci0jICBlbmRpZgotI2VuZGlmCi0K
LQotLy8gNy4xOC4xIEludGVnZXIgdHlwZXMKLQotLy8gNy4xOC4xLjEgRXhhY3Qtd2lkdGggaW50
ZWdlciB0eXBlcwotCi0vLyBWaXN1YWwgU3R1ZGlvIDYgYW5kIEVtYmVkZGVkIFZpc3VhbCBDKysg
NCBkb2Vzbid0Ci0vLyByZWFsaXplIHRoYXQsIGUuZy4gY2hhciBoYXMgdGhlIHNhbWUgc2l6ZSBh
cyBfX2ludDgKLS8vIHNvIHdlIGdpdmUgdXAgb24gX19pbnRYIGZvciB0aGVtLgotI2lmIChfTVND
X1ZFUiA8IDEzMDApCi0gICB0eXBlZGVmIHNpZ25lZCBjaGFyICAgICAgIGludDhfdDsKLSAgIHR5
cGVkZWYgc2lnbmVkIHNob3J0ICAgICAgaW50MTZfdDsKLSAgIHR5cGVkZWYgc2lnbmVkIGludCAg
ICAgICAgaW50MzJfdDsKLSAgIHR5cGVkZWYgdW5zaWduZWQgY2hhciAgICAgdWludDhfdDsKLSAg
IHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICAgdWludDE2X3Q7Ci0gICB0eXBlZGVmIHVuc2lnbmVk
IGludCAgICAgIHVpbnQzMl90OwotI2Vsc2UKLSAgIHR5cGVkZWYgc2lnbmVkIF9faW50OCAgICAg
aW50OF90OwotICAgdHlwZWRlZiBzaWduZWQgX19pbnQxNiAgICBpbnQxNl90OwotICAgdHlwZWRl
ZiBzaWduZWQgX19pbnQzMiAgICBpbnQzMl90OwotICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDgg
ICB1aW50OF90OwotICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDE2ICB1aW50MTZfdDsKLSAgIHR5
cGVkZWYgdW5zaWduZWQgX19pbnQzMiAgdWludDMyX3Q7Ci0jZW5kaWYKLXR5cGVkZWYgc2lnbmVk
IF9faW50NjQgICAgICAgaW50NjRfdDsKLXR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCAgICAgdWlu
dDY0X3Q7Ci0KLQotLy8gNy4xOC4xLjIgTWluaW11bS13aWR0aCBpbnRlZ2VyIHR5cGVzCi10eXBl
ZGVmIGludDhfdCAgICBpbnRfbGVhc3Q4X3Q7Ci10eXBlZGVmIGludDE2X3QgICBpbnRfbGVhc3Qx
Nl90OwotdHlwZWRlZiBpbnQzMl90ICAgaW50X2xlYXN0MzJfdDsKLXR5cGVkZWYgaW50NjRfdCAg
IGludF9sZWFzdDY0X3Q7Ci10eXBlZGVmIHVpbnQ4X3QgICB1aW50X2xlYXN0OF90OwotdHlwZWRl
ZiB1aW50MTZfdCAgdWludF9sZWFzdDE2X3Q7Ci10eXBlZGVmIHVpbnQzMl90ICB1aW50X2xlYXN0
MzJfdDsKLXR5cGVkZWYgdWludDY0X3QgIHVpbnRfbGVhc3Q2NF90OwotCi0vLyA3LjE4LjEuMyBG
YXN0ZXN0IG1pbmltdW0td2lkdGggaW50ZWdlciB0eXBlcwotdHlwZWRlZiBpbnQ4X3QgICAgaW50
X2Zhc3Q4X3Q7Ci10eXBlZGVmIGludDE2X3QgICBpbnRfZmFzdDE2X3Q7Ci10eXBlZGVmIGludDMy
X3QgICBpbnRfZmFzdDMyX3Q7Ci10eXBlZGVmIGludDY0X3QgICBpbnRfZmFzdDY0X3Q7Ci10eXBl
ZGVmIHVpbnQ4X3QgICB1aW50X2Zhc3Q4X3Q7Ci10eXBlZGVmIHVpbnQxNl90ICB1aW50X2Zhc3Qx
Nl90OwotdHlwZWRlZiB1aW50MzJfdCAgdWludF9mYXN0MzJfdDsKLXR5cGVkZWYgdWludDY0X3Qg
IHVpbnRfZmFzdDY0X3Q7Ci0KLS8vIDcuMTguMS40IEludGVnZXIgdHlwZXMgY2FwYWJsZSBvZiBo
b2xkaW5nIG9iamVjdCBwb2ludGVycwotI2lmZGVmIF9XSU42NCAvLyBbCi0gICB0eXBlZGVmIHNp
Z25lZCBfX2ludDY0ICAgIGludHB0cl90OwotICAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0ICB1
aW50cHRyX3Q7Ci0jZWxzZSAvLyBfV0lONjQgXVsKLSAgIHR5cGVkZWYgX1c2NCBzaWduZWQgaW50
ICAgaW50cHRyX3Q7Ci0gICB0eXBlZGVmIF9XNjQgdW5zaWduZWQgaW50IHVpbnRwdHJfdDsKLSNl
bmRpZiAvLyBfV0lONjQgXQotCi0vLyA3LjE4LjEuNSBHcmVhdGVzdC13aWR0aCBpbnRlZ2VyIHR5
cGVzCi10eXBlZGVmIGludDY0X3QgICBpbnRtYXhfdDsKLXR5cGVkZWYgdWludDY0X3QgIHVpbnRt
YXhfdDsKLQotCi0vLyA3LjE4LjIgTGltaXRzIG9mIHNwZWNpZmllZC13aWR0aCBpbnRlZ2VyIHR5
cGVzCi0KLSNpZiAhZGVmaW5lZChfX2NwbHVzcGx1cykgfHwgZGVmaW5lZChfX1NURENfTElNSVRf
TUFDUk9TKSAvLyBbICAgU2VlIGZvb3Rub3RlIDIyMCBhdCBwYWdlIDI1NyBhbmQgZm9vdG5vdGUg
MjIxIGF0IHBhZ2UgMjU5Ci0KLS8vIDcuMTguMi4xIExpbWl0cyBvZiBleGFjdC13aWR0aCBpbnRl
Z2VyIHR5cGVzCi0jZGVmaW5lIElOVDhfTUlOICAgICAoKGludDhfdClfSThfTUlOKQotI2RlZmlu
ZSBJTlQ4X01BWCAgICAgX0k4X01BWAotI2RlZmluZSBJTlQxNl9NSU4gICAgKChpbnQxNl90KV9J
MTZfTUlOKQotI2RlZmluZSBJTlQxNl9NQVggICAgX0kxNl9NQVgKLSNkZWZpbmUgSU5UMzJfTUlO
ICAgICgoaW50MzJfdClfSTMyX01JTikKLSNkZWZpbmUgSU5UMzJfTUFYICAgIF9JMzJfTUFYCi0j
ZGVmaW5lIElOVDY0X01JTiAgICAoKGludDY0X3QpX0k2NF9NSU4pCi0jZGVmaW5lIElOVDY0X01B
WCAgICBfSTY0X01BWAotI2RlZmluZSBVSU5UOF9NQVggICAgX1VJOF9NQVgKLSNkZWZpbmUgVUlO
VDE2X01BWCAgIF9VSTE2X01BWAotI2RlZmluZSBVSU5UMzJfTUFYICAgX1VJMzJfTUFYCi0jZGVm
aW5lIFVJTlQ2NF9NQVggICBfVUk2NF9NQVgKLQotLy8gNy4xOC4yLjIgTGltaXRzIG9mIG1pbmlt
dW0td2lkdGggaW50ZWdlciB0eXBlcwotI2RlZmluZSBJTlRfTEVBU1Q4X01JTiAgICBJTlQ4X01J
TgotI2RlZmluZSBJTlRfTEVBU1Q4X01BWCAgICBJTlQ4X01BWAotI2RlZmluZSBJTlRfTEVBU1Qx
Nl9NSU4gICBJTlQxNl9NSU4KLSNkZWZpbmUgSU5UX0xFQVNUMTZfTUFYICAgSU5UMTZfTUFYCi0j
ZGVmaW5lIElOVF9MRUFTVDMyX01JTiAgIElOVDMyX01JTgotI2RlZmluZSBJTlRfTEVBU1QzMl9N
QVggICBJTlQzMl9NQVgKLSNkZWZpbmUgSU5UX0xFQVNUNjRfTUlOICAgSU5UNjRfTUlOCi0jZGVm
aW5lIElOVF9MRUFTVDY0X01BWCAgIElOVDY0X01BWAotI2RlZmluZSBVSU5UX0xFQVNUOF9NQVgg
ICBVSU5UOF9NQVgKLSNkZWZpbmUgVUlOVF9MRUFTVDE2X01BWCAgVUlOVDE2X01BWAotI2RlZmlu
ZSBVSU5UX0xFQVNUMzJfTUFYICBVSU5UMzJfTUFYCi0jZGVmaW5lIFVJTlRfTEVBU1Q2NF9NQVgg
IFVJTlQ2NF9NQVgKLQotLy8gNy4xOC4yLjMgTGltaXRzIG9mIGZhc3Rlc3QgbWluaW11bS13aWR0
aCBpbnRlZ2VyIHR5cGVzCi0jZGVmaW5lIElOVF9GQVNUOF9NSU4gICAgSU5UOF9NSU4KLSNkZWZp
bmUgSU5UX0ZBU1Q4X01BWCAgICBJTlQ4X01BWAotI2RlZmluZSBJTlRfRkFTVDE2X01JTiAgIElO
VDE2X01JTgotI2RlZmluZSBJTlRfRkFTVDE2X01BWCAgIElOVDE2X01BWAotI2RlZmluZSBJTlRf
RkFTVDMyX01JTiAgIElOVDMyX01JTgotI2RlZmluZSBJTlRfRkFTVDMyX01BWCAgIElOVDMyX01B
WAotI2RlZmluZSBJTlRfRkFTVDY0X01JTiAgIElOVDY0X01JTgotI2RlZmluZSBJTlRfRkFTVDY0
X01BWCAgIElOVDY0X01BWAotI2RlZmluZSBVSU5UX0ZBU1Q4X01BWCAgIFVJTlQ4X01BWAotI2Rl
ZmluZSBVSU5UX0ZBU1QxNl9NQVggIFVJTlQxNl9NQVgKLSNkZWZpbmUgVUlOVF9GQVNUMzJfTUFY
ICBVSU5UMzJfTUFYCi0jZGVmaW5lIFVJTlRfRkFTVDY0X01BWCAgVUlOVDY0X01BWAotCi0vLyA3
LjE4LjIuNCBMaW1pdHMgb2YgaW50ZWdlciB0eXBlcyBjYXBhYmxlIG9mIGhvbGRpbmcgb2JqZWN0
IHBvaW50ZXJzCi0jaWZkZWYgX1dJTjY0IC8vIFsKLSMgIGRlZmluZSBJTlRQVFJfTUlOICAgSU5U
NjRfTUlOCi0jICBkZWZpbmUgSU5UUFRSX01BWCAgIElOVDY0X01BWAotIyAgZGVmaW5lIFVJTlRQ
VFJfTUFYICBVSU5UNjRfTUFYCi0jZWxzZSAvLyBfV0lONjQgXVsKLSMgIGRlZmluZSBJTlRQVFJf
TUlOICAgSU5UMzJfTUlOCi0jICBkZWZpbmUgSU5UUFRSX01BWCAgIElOVDMyX01BWAotIyAgZGVm
aW5lIFVJTlRQVFJfTUFYICBVSU5UMzJfTUFYCi0jZW5kaWYgLy8gX1dJTjY0IF0KLQotLy8gNy4x
OC4yLjUgTGltaXRzIG9mIGdyZWF0ZXN0LXdpZHRoIGludGVnZXIgdHlwZXMKLSNkZWZpbmUgSU5U
TUFYX01JTiAgIElOVDY0X01JTgotI2RlZmluZSBJTlRNQVhfTUFYICAgSU5UNjRfTUFYCi0jZGVm
aW5lIFVJTlRNQVhfTUFYICBVSU5UNjRfTUFYCi0KLS8vIDcuMTguMyBMaW1pdHMgb2Ygb3RoZXIg
aW50ZWdlciB0eXBlcwotCi0jaWZkZWYgX1dJTjY0IC8vIFsKLSMgIGRlZmluZSBQVFJESUZGX01J
TiAgX0k2NF9NSU4KLSMgIGRlZmluZSBQVFJESUZGX01BWCAgX0k2NF9NQVgKLSNlbHNlICAvLyBf
V0lONjQgXVsKLSMgIGRlZmluZSBQVFJESUZGX01JTiAgX0kzMl9NSU4KLSMgIGRlZmluZSBQVFJE
SUZGX01BWCAgX0kzMl9NQVgKLSNlbmRpZiAgLy8gX1dJTjY0IF0KLQotI2RlZmluZSBTSUdfQVRP
TUlDX01JTiAgSU5UX01JTgotI2RlZmluZSBTSUdfQVRPTUlDX01BWCAgSU5UX01BWAotCi0jaWZu
ZGVmIFNJWkVfTUFYIC8vIFsKLSMgIGlmZGVmIF9XSU42NCAvLyBbCi0jICAgICBkZWZpbmUgU0la
RV9NQVggIF9VSTY0X01BWAotIyAgZWxzZSAvLyBfV0lONjQgXVsKLSMgICAgIGRlZmluZSBTSVpF
X01BWCAgX1VJMzJfTUFYCi0jICBlbmRpZiAvLyBfV0lONjQgXQotI2VuZGlmIC8vIFNJWkVfTUFY
IF0KLQotLy8gV0NIQVJfTUlOIGFuZCBXQ0hBUl9NQVggYXJlIGFsc28gZGVmaW5lZCBpbiA8d2No
YXIuaD4KLSNpZm5kZWYgV0NIQVJfTUlOIC8vIFsKLSMgIGRlZmluZSBXQ0hBUl9NSU4gIDAKLSNl
bmRpZiAgLy8gV0NIQVJfTUlOIF0KLSNpZm5kZWYgV0NIQVJfTUFYIC8vIFsKLSMgIGRlZmluZSBX
Q0hBUl9NQVggIF9VSTE2X01BWAotI2VuZGlmICAvLyBXQ0hBUl9NQVggXQotCi0jZGVmaW5lIFdJ
TlRfTUlOICAwCi0jZGVmaW5lIFdJTlRfTUFYICBfVUkxNl9NQVgKLQotI2VuZGlmIC8vIF9fU1RE
Q19MSU1JVF9NQUNST1MgXQotCi0KLS8vIDcuMTguNCBMaW1pdHMgb2Ygb3RoZXIgaW50ZWdlciB0
eXBlcwotCi0jaWYgIWRlZmluZWQoX19jcGx1c3BsdXMpIHx8IGRlZmluZWQoX19TVERDX0NPTlNU
QU5UX01BQ1JPUykgLy8gWyAgIFNlZSBmb290bm90ZSAyMjQgYXQgcGFnZSAyNjAKLQotLy8gNy4x
OC40LjEgTWFjcm9zIGZvciBtaW5pbXVtLXdpZHRoIGludGVnZXIgY29uc3RhbnRzCi0KLSNkZWZp
bmUgSU5UOF9DKHZhbCkgIHZhbCMjaTgKLSNkZWZpbmUgSU5UMTZfQyh2YWwpIHZhbCMjaTE2Ci0j
ZGVmaW5lIElOVDMyX0ModmFsKSB2YWwjI2kzMgotI2RlZmluZSBJTlQ2NF9DKHZhbCkgdmFsIyNp
NjQKLQotI2RlZmluZSBVSU5UOF9DKHZhbCkgIHZhbCMjdWk4Ci0jZGVmaW5lIFVJTlQxNl9DKHZh
bCkgdmFsIyN1aTE2Ci0jZGVmaW5lIFVJTlQzMl9DKHZhbCkgdmFsIyN1aTMyCi0jZGVmaW5lIFVJ
TlQ2NF9DKHZhbCkgdmFsIyN1aTY0Ci0KLS8vIDcuMTguNC4yIE1hY3JvcyBmb3IgZ3JlYXRlc3Qt
d2lkdGggaW50ZWdlciBjb25zdGFudHMKLS8vIFRoZXNlICNpZm5kZWYncyBhcmUgbmVlZGVkIHRv
IHByZXZlbnQgY29sbGlzaW9ucyB3aXRoIDxib29zdC9jc3RkaW50LmhwcD4uCi0vLyBDaGVjayBv
dXQgSXNzdWUgOSBmb3IgdGhlIGRldGFpbHMuCi0jaWZuZGVmIElOVE1BWF9DIC8vICAgWwotIyAg
ZGVmaW5lIElOVE1BWF9DICAgSU5UNjRfQwotI2VuZGlmIC8vIElOVE1BWF9DICAgIF0KLSNpZm5k
ZWYgVUlOVE1BWF9DIC8vICBbCi0jICBkZWZpbmUgVUlOVE1BWF9DICBVSU5UNjRfQwotI2VuZGlm
IC8vIFVJTlRNQVhfQyAgIF0KLQotI2VuZGlmIC8vIF9fU1REQ19DT05TVEFOVF9NQUNST1MgXQot
Ci0jZW5kaWYgLy8gX01TQ19WRVIgPj0gMTYwMCBdCi0KLSNlbmRpZiAvLyBfTVNDX1NURElOVF9I
XyBdCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRf
cGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3ByZXR0eXdyaXRlci5oIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRl
L3JhcGlkanNvbi9wcmV0dHl3cml0ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MWQ3YzcwZjAyZDguLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vcHJldHR5d3Jp
dGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAy
MDExIE1pbG8gWWlwCi0vLwotLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv
ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQotLy8gb2YgdGhpcyBzb2Z0
d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiks
IHRvIGRlYWwKLS8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp
bmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKLS8vIHRvIHVzZSwgY29weSwgbW9kaWZ5
LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKLS8v
IGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRo
ZSBTb2Z0d2FyZSBpcwotLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9uczoKLS8vCi0vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg
dGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgotLy8gYWxsIGNvcGll
cyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0vLwotLy8gVEhFIFNP
RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs
IEVYUFJFU1MgT1IKLS8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhF
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0v
LyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBE
QU1BR0VTIE9SIE9USEVSCi0vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP
TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAotLy8gT1VUIE9GIE9SIElO
IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5H
UyBJTgotLy8gVEhFIFNPRlRXQVJFLgotCi0jaWZuZGVmIFJBUElESlNPTl9QUkVUVFlXUklURVJf
SF8KLSNkZWZpbmUgUkFQSURKU09OX1BSRVRUWVdSSVRFUl9IXwotCi0jaW5jbHVkZSAid3JpdGVy
LmgiCi0KLSNpZmRlZiBfX0dOVUNfXwotUkFQSURKU09OX0RJQUdfUFVTSAotUkFQSURKU09OX0RJ
QUdfT0ZGKGVmZmMrKykKLSNlbmRpZgotCi1SQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCi0KLS8v
ISBXcml0ZXIgd2l0aCBpbmRlbnRhdGlvbiBhbmQgc3BhY2luZy4KLS8qIQotICAgIFx0cGFyYW0g
T3V0cHV0U3RyZWFtIFR5cGUgb2Ygb3VwdHV0IG9zLgotICAgIFx0cGFyYW0gU291cmNlRW5jb2Rp
bmcgRW5jb2Rpbmcgb2Ygc291cmNlIHN0cmluZy4KLSAgICBcdHBhcmFtIFRhcmdldEVuY29kaW5n
IEVuY29kaW5nIG9mIG91dHB1dCBzdHJlYW0uCi0gICAgXHRwYXJhbSBTdGFja0FsbG9jYXRvciBU
eXBlIG9mIGFsbG9jYXRvciBmb3IgYWxsb2NhdGluZyBtZW1vcnkgb2Ygc3RhY2suCi0qLwotdGVt
cGxhdGU8dHlwZW5hbWUgT3V0cHV0U3RyZWFtLCB0eXBlbmFtZSBTb3VyY2VFbmNvZGluZyA9IFVU
Rjg8PiwgdHlwZW5hbWUgVGFyZ2V0RW5jb2RpbmcgPSBVVEY4PD4sIHR5cGVuYW1lIFN0YWNrQWxs
b2NhdG9yID0gQ3J0QWxsb2NhdG9yPgotY2xhc3MgUHJldHR5V3JpdGVyIDogcHVibGljIFdyaXRl
cjxPdXRwdXRTdHJlYW0sIFNvdXJjZUVuY29kaW5nLCBUYXJnZXRFbmNvZGluZywgU3RhY2tBbGxv
Y2F0b3I+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFdyaXRlcjxPdXRwdXRTdHJlYW0sIFNvdXJj
ZUVuY29kaW5nLCBUYXJnZXRFbmNvZGluZywgU3RhY2tBbGxvY2F0b3I+IEJhc2U7Ci0gICAgdHlw
ZWRlZiB0eXBlbmFtZSBCYXNlOjpDaCBDaDsKLQotICAgIC8vISBDb25zdHJ1Y3RvcgotICAgIC8q
ISBccGFyYW0gb3MgT3V0cHV0IHN0cmVhbS4KLSAgICAgICAgXHBhcmFtIGFsbG9jYXRvciBVc2Vy
IHN1cHBsaWVkIGFsbG9jYXRvci4gSWYgaXQgaXMgbnVsbCwgaXQgd2lsbCBjcmVhdGUgYSBwcml2
YXRlIG9uZS4KLSAgICAgICAgXHBhcmFtIGxldmVsRGVwdGggSW5pdGlhbCBjYXBhY2l0eSBvZiBz
dGFjay4KLSAgICAqLwotICAgIFByZXR0eVdyaXRlcihPdXRwdXRTdHJlYW0mIG9zLCBTdGFja0Fs
bG9jYXRvciogYWxsb2NhdG9yID0gMCwgc2l6ZV90IGxldmVsRGVwdGggPSBCYXNlOjprRGVmYXVs
dExldmVsRGVwdGgpIDogCi0gICAgICAgIEJhc2Uob3MsIGFsbG9jYXRvciwgbGV2ZWxEZXB0aCks
IGluZGVudENoYXJfKCcgJyksIGluZGVudENoYXJDb3VudF8oNCkge30KLQotICAgIC8vISBTZXQg
Y3VzdG9tIGluZGVudGF0aW9uLgotICAgIC8qISBccGFyYW0gaW5kZW50Q2hhciAgICAgICBDaGFy
YWN0ZXIgZm9yIGluZGVudGF0aW9uLiBNdXN0IGJlIHdoaXRlc3BhY2UgY2hhcmFjdGVyICgnICcs
ICdcXHQnLCAnXFxuJywgJ1xccicpLgotICAgICAgICBccGFyYW0gaW5kZW50Q2hhckNvdW50ICBO
dW1iZXIgb2YgaW5kZW50IGNoYXJhY3RlcnMgZm9yIGVhY2ggaW5kZW50YXRpb24gbGV2ZWwuCi0g
ICAgICAgIFxub3RlIFRoZSBkZWZhdWx0IGluZGVudGF0aW9uIGlzIDQgc3BhY2VzLgotICAgICov
Ci0gICAgUHJldHR5V3JpdGVyJiBTZXRJbmRlbnQoQ2ggaW5kZW50Q2hhciwgdW5zaWduZWQgaW5k
ZW50Q2hhckNvdW50KSB7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoaW5kZW50Q2hhciA9PSAn
ICcgfHwgaW5kZW50Q2hhciA9PSAnXHQnIHx8IGluZGVudENoYXIgPT0gJ1xuJyB8fCBpbmRlbnRD
aGFyID09ICdccicpOwotICAgICAgICBpbmRlbnRDaGFyXyA9IGluZGVudENoYXI7Ci0gICAgICAg
IGluZGVudENoYXJDb3VudF8gPSBpbmRlbnRDaGFyQ291bnQ7Ci0gICAgICAgIHJldHVybiAqdGhp
czsKLSAgICB9Ci0KLSAgICAvKiEgQG5hbWUgSW1wbGVtZW50YXRpb24gb2YgSGFuZGxlcgotICAg
ICAgICBcc2VlIEhhbmRsZXIKLSAgICAqLwotICAgIC8vQHsKLQotICAgIGJvb2wgTnVsbCgpICAg
ICAgICAgICAgICAgICB7IFByZXR0eVByZWZpeChrTnVsbFR5cGUpOyAgIHJldHVybiBCYXNlOjpX
cml0ZU51bGwoKTsgfQotICAgIGJvb2wgQm9vbChib29sIGIpICAgICAgICAgICB7IFByZXR0eVBy
ZWZpeChiID8ga1RydWVUeXBlIDoga0ZhbHNlVHlwZSk7IHJldHVybiBCYXNlOjpXcml0ZUJvb2wo
Yik7IH0KLSAgICBib29sIEludChpbnQgaSkgICAgICAgICAgICAgeyBQcmV0dHlQcmVmaXgoa051
bWJlclR5cGUpOyByZXR1cm4gQmFzZTo6V3JpdGVJbnQoaSk7IH0KLSAgICBib29sIFVpbnQodW5z
aWduZWQgdSkgICAgICAgeyBQcmV0dHlQcmVmaXgoa051bWJlclR5cGUpOyByZXR1cm4gQmFzZTo6
V3JpdGVVaW50KHUpOyB9Ci0gICAgYm9vbCBJbnQ2NChpbnQ2NF90IGk2NCkgICAgIHsgUHJldHR5
UHJlZml4KGtOdW1iZXJUeXBlKTsgcmV0dXJuIEJhc2U6OldyaXRlSW50NjQoaTY0KTsgfQotICAg
IGJvb2wgVWludDY0KHVpbnQ2NF90IHU2NCkgICB7IFByZXR0eVByZWZpeChrTnVtYmVyVHlwZSk7
IHJldHVybiBCYXNlOjpXcml0ZVVpbnQ2NCh1NjQpOyAgfQotICAgIGJvb2wgRG91YmxlKGRvdWJs
ZSBkKSAgICAgICB7IFByZXR0eVByZWZpeChrTnVtYmVyVHlwZSk7IHJldHVybiBCYXNlOjpXcml0
ZURvdWJsZShkKTsgfQotCi0gICAgYm9vbCBTdHJpbmcoY29uc3QgQ2gqIHN0ciwgU2l6ZVR5cGUg
bGVuZ3RoLCBib29sIGNvcHkgPSBmYWxzZSkgewotICAgICAgICAodm9pZCljb3B5OwotICAgICAg
ICBQcmV0dHlQcmVmaXgoa1N0cmluZ1R5cGUpOwotICAgICAgICByZXR1cm4gQmFzZTo6V3JpdGVT
dHJpbmcoc3RyLCBsZW5ndGgpOwotICAgIH0KLQotICAgIGJvb2wgU3RhcnRPYmplY3QoKSB7Ci0g
ICAgICAgIFByZXR0eVByZWZpeChrT2JqZWN0VHlwZSk7Ci0gICAgICAgIG5ldyAoQmFzZTo6bGV2
ZWxfc3RhY2tfLnRlbXBsYXRlIFB1c2g8dHlwZW5hbWUgQmFzZTo6TGV2ZWw+KCkpIHR5cGVuYW1l
IEJhc2U6OkxldmVsKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuIEJhc2U6OldyaXRlU3RhcnRPYmpl
Y3QoKTsKLSAgICB9Ci0KLSAgICBib29sIEtleShjb25zdCBDaCogc3RyLCBTaXplVHlwZSBsZW5n
dGgsIGJvb2wgY29weSA9IGZhbHNlKSB7IHJldHVybiBTdHJpbmcoc3RyLCBsZW5ndGgsIGNvcHkp
OyB9Ci0gICAgCi0gICAgYm9vbCBFbmRPYmplY3QoU2l6ZVR5cGUgbWVtYmVyQ291bnQgPSAwKSB7
Ci0gICAgICAgICh2b2lkKW1lbWJlckNvdW50OwotICAgICAgICBSQVBJREpTT05fQVNTRVJUKEJh
c2U6OmxldmVsX3N0YWNrXy5HZXRTaXplKCkgPj0gc2l6ZW9mKHR5cGVuYW1lIEJhc2U6OkxldmVs
KSk7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoIUJhc2U6OmxldmVsX3N0YWNrXy50ZW1wbGF0
ZSBUb3A8dHlwZW5hbWUgQmFzZTo6TGV2ZWw+KCktPmluQXJyYXkpOwotICAgICAgICBib29sIGVt
cHR5ID0gQmFzZTo6bGV2ZWxfc3RhY2tfLnRlbXBsYXRlIFBvcDx0eXBlbmFtZSBCYXNlOjpMZXZl
bD4oMSktPnZhbHVlQ291bnQgPT0gMDsKLQotICAgICAgICBpZiAoIWVtcHR5KSB7Ci0gICAgICAg
ICAgICBCYXNlOjpvc18tPlB1dCgnXG4nKTsKLSAgICAgICAgICAgIFdyaXRlSW5kZW50KCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKCFCYXNlOjpXcml0ZUVuZE9iamVjdCgpKQotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoQmFzZTo6bGV2ZWxfc3RhY2tfLkVtcHR5KCkp
IC8vIGVuZCBvZiBqc29uIHRleHQKLSAgICAgICAgICAgIEJhc2U6Om9zXy0+Rmx1c2goKTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBTdGFydEFycmF5KCkgewotICAg
ICAgICBQcmV0dHlQcmVmaXgoa0FycmF5VHlwZSk7Ci0gICAgICAgIG5ldyAoQmFzZTo6bGV2ZWxf
c3RhY2tfLnRlbXBsYXRlIFB1c2g8dHlwZW5hbWUgQmFzZTo6TGV2ZWw+KCkpIHR5cGVuYW1lIEJh
c2U6OkxldmVsKHRydWUpOwotICAgICAgICByZXR1cm4gQmFzZTo6V3JpdGVTdGFydEFycmF5KCk7
Ci0gICAgfQotCi0gICAgYm9vbCBFbmRBcnJheShTaXplVHlwZSBtZW1iZXJDb3VudCA9IDApIHsK
LSAgICAgICAgKHZvaWQpbWVtYmVyQ291bnQ7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoQmFz
ZTo6bGV2ZWxfc3RhY2tfLkdldFNpemUoKSA+PSBzaXplb2YodHlwZW5hbWUgQmFzZTo6TGV2ZWwp
KTsKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVChCYXNlOjpsZXZlbF9zdGFja18udGVtcGxhdGUg
VG9wPHR5cGVuYW1lIEJhc2U6OkxldmVsPigpLT5pbkFycmF5KTsKLSAgICAgICAgYm9vbCBlbXB0
eSA9IEJhc2U6OmxldmVsX3N0YWNrXy50ZW1wbGF0ZSBQb3A8dHlwZW5hbWUgQmFzZTo6TGV2ZWw+
KDEpLT52YWx1ZUNvdW50ID09IDA7Ci0KLSAgICAgICAgaWYgKCFlbXB0eSkgewotICAgICAgICAg
ICAgQmFzZTo6b3NfLT5QdXQoJ1xuJyk7Ci0gICAgICAgICAgICBXcml0ZUluZGVudCgpOwotICAg
ICAgICB9Ci0gICAgICAgIGlmICghQmFzZTo6V3JpdGVFbmRBcnJheSgpKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoQmFzZTo6bGV2ZWxfc3RhY2tfLkVtcHR5KCkpIC8v
IGVuZCBvZiBqc29uIHRleHQKLSAgICAgICAgICAgIEJhc2U6Om9zXy0+Rmx1c2goKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLy9AfQotCi0gICAgLyohIEBuYW1lIENvbnZl
bmllbmNlIGV4dGVuc2lvbnMgKi8KLSAgICAvL0B7Ci0KLSAgICAvLyEgU2ltcGxlciBidXQgc2xv
d2VyIG92ZXJsb2FkLgotICAgIGJvb2wgU3RyaW5nKGNvbnN0IENoKiBzdHIpIHsgcmV0dXJuIFN0
cmluZyhzdHIsIGludGVybmFsOjpTdHJMZW4oc3RyKSk7IH0KLSAgICBib29sIEtleShjb25zdCBD
aCogc3RyKSB7IHJldHVybiBLZXkoc3RyLCBpbnRlcm5hbDo6U3RyTGVuKHN0cikpOyB9Ci0KLSAg
ICAvL0B9Ci1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBQcmV0dHlQcmVmaXgoVHlwZSB0eXBlKSB7Ci0g
ICAgICAgICh2b2lkKXR5cGU7Ci0gICAgICAgIGlmIChCYXNlOjpsZXZlbF9zdGFja18uR2V0U2l6
ZSgpICE9IDApIHsgLy8gdGhpcyB2YWx1ZSBpcyBub3QgYXQgcm9vdAotICAgICAgICAgICAgdHlw
ZW5hbWUgQmFzZTo6TGV2ZWwqIGxldmVsID0gQmFzZTo6bGV2ZWxfc3RhY2tfLnRlbXBsYXRlIFRv
cDx0eXBlbmFtZSBCYXNlOjpMZXZlbD4oKTsKLQotICAgICAgICAgICAgaWYgKGxldmVsLT5pbkFy
cmF5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxldmVsLT52YWx1ZUNvdW50ID4gMCkgewotICAg
ICAgICAgICAgICAgICAgICBCYXNlOjpvc18tPlB1dCgnLCcpOyAvLyBhZGQgY29tbWEgaWYgaXQg
aXMgbm90IHRoZSBmaXJzdCBlbGVtZW50IGluIGFycmF5Ci0gICAgICAgICAgICAgICAgICAgIEJh
c2U6Om9zXy0+UHV0KCdcbicpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIEJhc2U6Om9zXy0+UHV0KCdcbicpOwotICAgICAgICAg
ICAgICAgIFdyaXRlSW5kZW50KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsg
IC8vIGluIG9iamVjdAotICAgICAgICAgICAgICAgIGlmIChsZXZlbC0+dmFsdWVDb3VudCA+IDAp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGxldmVsLT52YWx1ZUNvdW50ICUgMiA9PSAwKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBCYXNlOjpvc18tPlB1dCgnLCcpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgQmFzZTo6b3NfLT5QdXQoJ1xuJyk7Ci0gICAgICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBC
YXNlOjpvc18tPlB1dCgnOicpOwotICAgICAgICAgICAgICAgICAgICAgICAgQmFzZTo6b3NfLT5Q
dXQoJyAnKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIEJhc2U6Om9zXy0+UHV0KCdcbicp
OwotCi0gICAgICAgICAgICAgICAgaWYgKGxldmVsLT52YWx1ZUNvdW50ICUgMiA9PSAwKQotICAg
ICAgICAgICAgICAgICAgICBXcml0ZUluZGVudCgpOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKCFsZXZlbC0+aW5BcnJheSAmJiBsZXZlbC0+dmFsdWVDb3VudCAlIDIgPT0gMCkKLSAg
ICAgICAgICAgICAgICBSQVBJREpTT05fQVNTRVJUKHR5cGUgPT0ga1N0cmluZ1R5cGUpOyAgLy8g
aWYgaXQncyBpbiBvYmplY3QsIHRoZW4gZXZlbiBudW1iZXIgc2hvdWxkIGJlIGEgbmFtZQotICAg
ICAgICAgICAgbGV2ZWwtPnZhbHVlQ291bnQrKzsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgIFJBUElESlNPTl9BU1NFUlQoIUJhc2U6Omhhc1Jvb3RfKTsgIC8vIFNob3Vs
ZCBvbmx5IGhhcyBvbmUgYW5kIG9ubHkgb25lIHJvb3QuCi0gICAgICAgICAgICBCYXNlOjpoYXNS
b290XyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIFdyaXRlSW5kZW50KCkg
IHsKLSAgICAgICAgc2l6ZV90IGNvdW50ID0gKEJhc2U6OmxldmVsX3N0YWNrXy5HZXRTaXplKCkg
LyBzaXplb2YodHlwZW5hbWUgQmFzZTo6TGV2ZWwpKSAqIGluZGVudENoYXJDb3VudF87Ci0gICAg
ICAgIFB1dE4oKkJhc2U6Om9zXywgaW5kZW50Q2hhcl8sIGNvdW50KTsKLSAgICB9Ci0KLSAgICBD
aCBpbmRlbnRDaGFyXzsKLSAgICB1bnNpZ25lZCBpbmRlbnRDaGFyQ291bnRfOwotCi1wcml2YXRl
OgotICAgIC8vIFByb2hpYml0IGNvcHkgY29uc3RydWN0b3IgJiBhc3NpZ25tZW50IG9wZXJhdG9y
LgotICAgIFByZXR0eVdyaXRlcihjb25zdCBQcmV0dHlXcml0ZXImKTsKLSAgICBQcmV0dHlXcml0
ZXImIG9wZXJhdG9yPShjb25zdCBQcmV0dHlXcml0ZXImKTsKLX07Ci0KLVJBUElESlNPTl9OQU1F
U1BBQ0VfRU5ECi0KLSNpZmRlZiBfX0dOVUNfXwotUkFQSURKU09OX0RJQUdfUE9QCi0jZW5kaWYK
LQotI2VuZGlmIC8vIFJBUElESlNPTl9SQVBJREpTT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9y
YXBpZGpzb24vcmFwaWRqc29uLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
dGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3JhcGlkanNvbi5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOWJmZGJhMjhlMC4uMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9p
bmNsdWRlL3JhcGlkanNvbi9yYXBpZGpzb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDYyOCArMCww
IEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWlsbyBZaXAKLS8vCi0vLyBQZXJtaXNzaW9uIGlz
IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg
YSBjb3B5Ci0vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g
ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAotLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhv
dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwot
Ly8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs
aWNlbnNlLCBhbmQvb3Igc2VsbAotLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl
cm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCi0vLyBmdXJuaXNoZWQgdG8gZG8g
c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotLy8KLS8vIFRoZSBhYm92
ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGlu
Y2x1ZGVkIGluCi0vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBT
b2Z0d2FyZS4KLS8vCi0vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V
VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotLy8gSU1QTElFRCwgSU5DTFVESU5H
IEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0v
LyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUKLS8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg
TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKLS8vIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H
IEZST00sCi0vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU
SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCi0vLyBUSEUgU09GVFdBUkUuCi0KLSNpZm5kZWYg
UkFQSURKU09OX1JBUElESlNPTl9IXwotI2RlZmluZSBSQVBJREpTT05fUkFQSURKU09OX0hfCi0K
LS8vIENvcHlyaWdodCAoYykgMjAxMSBNaWxvIFlpcCAobWlsb3lpcEBnbWFpbC5jb20pCi0vLyBW
ZXJzaW9uIDAuMQotCi0vKiFcZmlsZSByYXBpZGpzb24uaAotICAgIFxicmllZiBjb21tb24gZGVm
aW5pdGlvbnMgYW5kIGNvbmZpZ3VyYXRpb24KLQotICAgIFxzZWUgUkFQSURKU09OX0NPTkZJRwot
ICovCi0KLS8qISBcZGVmZ3JvdXAgUkFQSURKU09OX0NPTkZJRyBSYXBpZEpTT04gY29uZmlndXJh
dGlvbgotICAgIFxicmllZiBDb25maWd1cmF0aW9uIG1hY3JvcyBmb3IgbGlicmFyeSBmZWF0dXJl
cwotCi0gICAgU29tZSBSYXBpZEpTT04gZmVhdHVyZXMgYXJlIGNvbmZpZ3VyYWJsZSB0byBhZGFw
dCB0aGUgbGlicmFyeSB0byBhIHdpZGUKLSAgICB2YXJpZXR5IG9mIHBsYXRmb3JtcywgZW52aXJv
bm1lbnRzIGFuZCB1c2FnZSBzY2VuYXJpb3MuICBNb3N0IG9mIHRoZQotICAgIGZlYXR1cmVzIGNh
biBiZSBjb25maWd1cmVkIGluIHRlcm1zIG9mIG92ZXJyaWRlbiBvciBwcmVkZWZpbmVkCi0gICAg
cHJlcHJvY2Vzc29yIG1hY3JvcyBhdCBjb21waWxlLXRpbWUuCi0KLSAgICBTb21lIGFkZGl0aW9u
YWwgY3VzdG9taXphdGlvbiBpcyBhdmFpbGFibGUgaW4gdGhlIFxyZWYgUkFQSURKU09OX0VSUk9S
UyBBUElzLgotCi0gICAgXG5vdGUgVGhlc2UgbWFjcm9zIHNob3VsZCBiZSBnaXZlbiBvbiB0aGUg
Y29tcGlsZXIgY29tbWFuZC1saW5lCi0gICAgICAgICAgKHdoZXJlIGFwcGxpY2FibGUpICB0byBh
dm9pZCBpbmNvbnNpc3RlbnQgdmFsdWVzIHdoZW4gY29tcGlsaW5nCi0gICAgICAgICAgZGlmZmVy
ZW50IHRyYW5zbGF0aW9uIHVuaXRzIG9mIGEgc2luZ2xlIGFwcGxpY2F0aW9uLgotICovCi0KLSNp
bmNsdWRlIDxjc3RkbGliPiAgLy8gbWFsbG9jKCksIHJlYWxsb2MoKSwgZnJlZSgpLCBzaXplX3QK
LSNpbmNsdWRlIDxjc3RyaW5nPiAgLy8gbWVtc2V0KCksIG1lbWNweSgpLCBtZW1tb3ZlKCksIG1l
bWNtcCgpCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIFJBUElESlNPTl9OQU1FU1BBQ0Vf
KEJFR0lOfEVORCkKLS8qISBcZGVmIFJBUElESlNPTl9OQU1FU1BBQ0UKLSAgICBcaW5ncm91cCBS
QVBJREpTT05fQ09ORklHCi0gICAgXGJyaWVmICAgcHJvdmlkZSBjdXN0b20gcmFwaWRqc29uIG5h
bWVzcGFjZQotCi0gICAgSW4gb3JkZXIgdG8gYXZvaWQgc3ltYm9sIGNsYXNoZXMgYW5kL29yICJP
bmUgRGVmaW5pdGlvbiBSdWxlIiBlcnJvcnMKLSAgICBiZXR3ZWVuIG11bHRpcGxlIGluY2x1c2lv
bnMgb2YgKGRpZmZlcmVudCB2ZXJzaW9ucyBvZikgUmFwaWRKU09OIGluCi0gICAgYSBzaW5nbGUg
YmluYXJ5LCB1c2VycyBjYW4gY3VzdG9taXplIHRoZSBuYW1lIG9mIHRoZSBtYWluIFJhcGlkSlNP
TgotICAgIG5hbWVzcGFjZS4KLQotICAgIEluIGNhc2Ugb2YgYSBzaW5nbGUgbmVzdGluZyBsZXZl
bCwgZGVmaW5pbmcgXGMgUkFQSURKU09OX05BTUVTUEFDRQotICAgIHRvIGEgY3VzdG9tIG5hbWUg
KGUuZy4gXGMgTXlSYXBpZEpTT04pIGlzIHN1ZmZpY2llbnQuICBJZiBtdWx0aXBsZQotICAgIGxl
dmVscyBhcmUgbmVlZGVkLCBib3RoIFxyZWYgUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTiBhbmQg
XHJlZgotICAgIFJBUElESlNPTl9OQU1FU1BBQ0VfRU5EIG5lZWQgdG8gYmUgZGVmaW5lZCBhcyB3
ZWxsOgotCi0gICAgXGNvZGUKLSAgICAvLyBpbiBzb21lIC5jcHAgZmlsZQotICAgICNkZWZpbmUg
UkFQSURKU09OX05BTUVTUEFDRSBteTo6cmFwaWRqc29uCi0gICAgI2RlZmluZSBSQVBJREpTT05f
TkFNRVNQQUNFX0JFR0lOIG5hbWVzcGFjZSBteSB7IG5hbWVzcGFjZSByYXBpZGpzb24gewotICAg
ICNkZWZpbmUgUkFQSURKU09OX05BTUVTUEFDRV9FTkQgICB9IH0KLSAgICAjaW5jbHVkZSAicmFw
aWRqc29uLy4uLiIKLSAgICBcZW5kY29kZQotCi0gICAgXHNlZSByYXBpZGpzb24KLSAqLwotLyoh
IFxkZWYgUkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgotICAgIFxpbmdyb3VwIFJBUElESlNPTl9D
T05GSUcKLSAgICBcYnJpZWYgICBwcm92aWRlIGN1c3RvbSByYXBpZGpzb24gbmFtZXNwYWNlIChv
cGVuaW5nIGV4cHJlc3Npb24pCi0gICAgXHNlZSBSQVBJREpTT05fTkFNRVNQQUNFCi0qLwotLyoh
IFxkZWYgUkFQSURKU09OX05BTUVTUEFDRV9FTkQKLSAgICBcaW5ncm91cCBSQVBJREpTT05fQ09O
RklHCi0gICAgXGJyaWVmICAgcHJvdmlkZSBjdXN0b20gcmFwaWRqc29uIG5hbWVzcGFjZSAoY2xv
c2luZyBleHByZXNzaW9uKQotICAgIFxzZWUgUkFQSURKU09OX05BTUVTUEFDRQotKi8KLSNpZm5k
ZWYgUkFQSURKU09OX05BTUVTUEFDRQotI2RlZmluZSBSQVBJREpTT05fTkFNRVNQQUNFIHJhcGlk
anNvbgotI2VuZGlmCi0jaWZuZGVmIFJBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KLSNkZWZpbmUg
UkFQSURKU09OX05BTUVTUEFDRV9CRUdJTiBuYW1lc3BhY2UgUkFQSURKU09OX05BTUVTUEFDRSB7
Ci0jZW5kaWYKLSNpZm5kZWYgUkFQSURKU09OX05BTUVTUEFDRV9FTkQKLSNkZWZpbmUgUkFQSURK
U09OX05BTUVTUEFDRV9FTkQgfQotI2VuZGlmCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8v
IFJBUElESlNPTl9OT19JTlQ2NERFRklORQotCi0vKiEgXGRlZiBSQVBJREpTT05fTk9fSU5UNjRE
RUZJTkUKLSAgICBcaW5ncm91cCBSQVBJREpTT05fQ09ORklHCi0gICAgXGJyaWVmIFVzZSBleHRl
cm5hbCA2NC1iaXQgaW50ZWdlciB0eXBlcy4KLQotICAgIFJhcGlkSlNPTiByZXF1aXJlcyB0aGUg
NjQtYml0IGludGVnZXIgdHlwZXMgXGMgaW50NjRfdCBhbmQgIFxjIHVpbnQ2NF90IHR5cGVzCi0g
ICAgdG8gYmUgYXZhaWxhYmxlIGF0IGdsb2JhbCBzY29wZS4KLQotICAgIElmIHVzZXJzIGhhdmUg
dGhlaXIgb3duIGRlZmluaXRpb24sIGRlZmluZSBSQVBJREpTT05fTk9fSU5UNjRERUZJTkUgdG8K
LSAgICBwcmV2ZW50IFJhcGlkSlNPTiBmcm9tIGRlZmluaW5nIGl0cyBvd24gdHlwZXMuCi0qLwot
I2lmbmRlZiBSQVBJREpTT05fTk9fSU5UNjRERUZJTkUKLS8vIUBjb25kIFJBUElESlNPTl9ISURE
RU5fRlJPTV9ET1hZR0VOCi0jaWZkZWYgX01TQ19WRVIKLSNpbmNsdWRlICJtc2ludHR5cGVzL3N0
ZGludC5oIgotI2luY2x1ZGUgIm1zaW50dHlwZXMvaW50dHlwZXMuaCIKLSNlbHNlCi0vLyBPdGhl
ciBjb21waWxlcnMgc2hvdWxkIGhhdmUgdGhpcy4KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNs
dWRlIDxpbnR0eXBlcy5oPgotI2VuZGlmCi0vLyFAZW5kY29uZAotI2lmZGVmIFJBUElESlNPTl9E
T1hZR0VOX1JVTk5JTkcKLSNkZWZpbmUgUkFQSURKU09OX05PX0lOVDY0REVGSU5FCi0jZW5kaWYK
LSNlbmRpZiAvLyBSQVBJREpTT05fTk9fSU5UNjRUWVBFREVGCi0KLS8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KLS8vIFJBUElESlNPTl9GT1JDRUlOTElORQotCi0jaWZuZGVmIFJBUElESlNPTl9GT1JD
RUlOTElORQotLy8hQGNvbmQgUkFQSURKU09OX0hJRERFTl9GUk9NX0RPWFlHRU4KLSNpZmRlZiBf
TVNDX1ZFUgotI2RlZmluZSBSQVBJREpTT05fRk9SQ0VJTkxJTkUgX19mb3JjZWlubGluZQotI2Vs
aWYgZGVmaW5lZChfX0dOVUNfXykgJiYgX19HTlVDX18gPj0gNAotI2RlZmluZSBSQVBJREpTT05f
Rk9SQ0VJTkxJTkUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpCi0jZWxzZQotI2RlZmlu
ZSBSQVBJREpTT05fRk9SQ0VJTkxJTkUKLSNlbmRpZgotLy8hQGVuZGNvbmQKLSNlbmRpZiAvLyBS
QVBJREpTT05fRk9SQ0VJTkxJTkUKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gUkFQSURK
U09OX0VORElBTgotI2RlZmluZSBSQVBJREpTT05fTElUVExFRU5ESUFOICAwICAgLy8hPCBMaXR0
bGUgZW5kaWFuIG1hY2hpbmUKLSNkZWZpbmUgUkFQSURKU09OX0JJR0VORElBTiAgICAgMSAgIC8v
ITwgQmlnIGVuZGlhbiBtYWNoaW5lCi0KLS8vISBFbmRpYW5uZXNzIG9mIHRoZSBtYWNoaW5lLgot
LyohCi0gICAgXGRlZiBSQVBJREpTT05fRU5ESUFOCi0gICAgXGluZ3JvdXAgUkFQSURKU09OX0NP
TkZJRwotCi0gICAgR0NDIDQuNiBwcm92aWRlZCBtYWNybyBmb3IgZGV0ZWN0aW5nIGVuZGlhbm5l
c3Mgb2YgdGhlIHRhcmdldCBtYWNoaW5lLiBCdXQgb3RoZXIKLSAgICBjb21waWxlcnMgbWF5IG5v
dCBoYXZlIHRoaXMuIFVzZXIgY2FuIGRlZmluZSBSQVBJREpTT05fRU5ESUFOIHRvIGVpdGhlcgot
ICAgIFxyZWYgUkFQSURKU09OX0xJVFRMRUVORElBTiBvciBccmVmIFJBUElESlNPTl9CSUdFTkRJ
QU4uCi0KLSAgICBEZWZhdWx0IGRldGVjdGlvbiBpbXBsZW1lbnRlZCB3aXRoIHJlZmVyZW5jZSB0
bwotICAgIFxsaSBodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2NjLTQuNi4wL2NwcC9D
b21tb24tUHJlZGVmaW5lZC1NYWNyb3MuaHRtbAotICAgIFxsaSBodHRwOi8vd3d3LmJvb3N0Lm9y
Zy9kb2MvbGlicy8xXzQyXzAvYm9vc3QvZGV0YWlsL2VuZGlhbi5ocHAKLSovCi0jaWZuZGVmIFJB
UElESlNPTl9FTkRJQU4KLS8vIERldGVjdCB3aXRoIEdDQyA0LjYncyBtYWNybwotIyAgaWZkZWYg
X19CWVRFX09SREVSX18KLSMgICAgaWYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVf
RU5ESUFOX18KLSMgICAgICBkZWZpbmUgUkFQSURKU09OX0VORElBTiBSQVBJREpTT05fTElUVExF
RU5ESUFOCi0jICAgIGVsaWYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9CSUdfRU5ESUFOX18K
LSMgICAgICBkZWZpbmUgUkFQSURKU09OX0VORElBTiBSQVBJREpTT05fQklHRU5ESUFOCi0jICAg
IGVsc2UKLSMgICAgICBlcnJvciBVbmtub3duIG1hY2hpbmUgZW5kaWFuZXNzIGRldGVjdGVkLiBV
c2VyIG5lZWRzIHRvIGRlZmluZSBSQVBJREpTT05fRU5ESUFOLgotIyAgICBlbmRpZiAvLyBfX0JZ
VEVfT1JERVJfXwotLy8gRGV0ZWN0IHdpdGggR0xJQkMncyBlbmRpYW4uaAotIyAgZWxpZiBkZWZp
bmVkKF9fR0xJQkNfXykKLSMgICAgaW5jbHVkZSA8ZW5kaWFuLmg+Ci0jICAgIGlmIChfX0JZVEVf
T1JERVIgPT0gX19MSVRUTEVfRU5ESUFOKQotIyAgICAgIGRlZmluZSBSQVBJREpTT05fRU5ESUFO
IFJBUElESlNPTl9MSVRUTEVFTkRJQU4KLSMgICAgZWxpZiAoX19CWVRFX09SREVSID09IF9fQklH
X0VORElBTikKLSMgICAgICBkZWZpbmUgUkFQSURKU09OX0VORElBTiBSQVBJREpTT05fQklHRU5E
SUFOCi0jICAgIGVsc2UKLSMgICAgICBlcnJvciBVbmtub3duIG1hY2hpbmUgZW5kaWFuZXNzIGRl
dGVjdGVkLiBVc2VyIG5lZWRzIHRvIGRlZmluZSBSQVBJREpTT05fRU5ESUFOLgotIyAgIGVuZGlm
IC8vIF9fR0xJQkNfXwotLy8gRGV0ZWN0IHdpdGggX0xJVFRMRV9FTkRJQU4gYW5kIF9CSUdfRU5E
SUFOIG1hY3JvCi0jICBlbGlmIGRlZmluZWQoX0xJVFRMRV9FTkRJQU4pICYmICFkZWZpbmVkKF9C
SUdfRU5ESUFOKQotIyAgICBkZWZpbmUgUkFQSURKU09OX0VORElBTiBSQVBJREpTT05fTElUVExF
RU5ESUFOCi0jICBlbGlmIGRlZmluZWQoX0JJR19FTkRJQU4pICYmICFkZWZpbmVkKF9MSVRUTEVf
RU5ESUFOKQotIyAgICBkZWZpbmUgUkFQSURKU09OX0VORElBTiBSQVBJREpTT05fQklHRU5ESUFO
Ci0vLyBEZXRlY3Qgd2l0aCBhcmNoaXRlY3R1cmUgbWFjcm9zCi0jICBlbGlmIGRlZmluZWQoX19z
cGFyYykgfHwgZGVmaW5lZChfX3NwYXJjX18pIHx8IGRlZmluZWQoX1BPV0VSKSB8fCBkZWZpbmVk
KF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19ocHV4KSB8fCBk
ZWZpbmVkKF9faHBwYSkgfHwgZGVmaW5lZChfTUlQU0VCKSB8fCBkZWZpbmVkKF9QT1dFUikgfHwg
ZGVmaW5lZChfX3MzOTBfXykKLSMgICAgZGVmaW5lIFJBUElESlNPTl9FTkRJQU4gUkFQSURKU09O
X0JJR0VORElBTgotIyAgZWxpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYWxwaGFf
XykgfHwgZGVmaW5lZChfX2lhNjQpIHx8IGRlZmluZWQoX19pYTY0X18pIHx8IGRlZmluZWQoX01f
SVg4NikgfHwgZGVmaW5lZChfTV9JQTY0KSB8fCBkZWZpbmVkKF9NX0FMUEhBKSB8fCBkZWZpbmVk
KF9fYW1kNjQpIHx8IGRlZmluZWQoX19hbWQ2NF9fKSB8fCBkZWZpbmVkKF9NX0FNRDY0KSB8fCBk
ZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0
KSB8fCBkZWZpbmVkKF9fYmZpbl9fKQotIyAgICBkZWZpbmUgUkFQSURKU09OX0VORElBTiBSQVBJ
REpTT05fTElUVExFRU5ESUFOCi0jICBlbGlmIGRlZmluZWQoUkFQSURKU09OX0RPWFlHRU5fUlVO
TklORykKLSMgICAgZGVmaW5lIFJBUElESlNPTl9FTkRJQU4KLSMgIGVsc2UKLSMgICAgZXJyb3Ig
VW5rbm93biBtYWNoaW5lIGVuZGlhbmVzcyBkZXRlY3RlZC4gVXNlciBuZWVkcyB0byBkZWZpbmUg
UkFQSURKU09OX0VORElBTi4gICAKLSMgIGVuZGlmCi0jZW5kaWYgLy8gUkFQSURKU09OX0VORElB
TgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBSQVBJREpTT05fNjRCSVQKLQotLy8hIFdo
ZXRoZXIgdXNpbmcgNjQtYml0IGFyY2hpdGVjdHVyZQotI2lmbmRlZiBSQVBJREpTT05fNjRCSVQK
LSNpZiBkZWZpbmVkKF9fTFA2NF9fKSB8fCBkZWZpbmVkKF9XSU42NCkKLSNkZWZpbmUgUkFQSURK
U09OXzY0QklUIDEKLSNlbHNlCi0jZGVmaW5lIFJBUElESlNPTl82NEJJVCAwCi0jZW5kaWYKLSNl
bmRpZiAvLyBSQVBJREpTT05fNjRCSVQKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gUkFQ
SURKU09OX0FMSUdOCi0KLS8vISBEYXRhIGFsaWdubWVudCBvZiB0aGUgbWFjaGluZS4KLS8qISBc
aW5ncm91cCBSQVBJREpTT05fQ09ORklHCi0gICAgXHBhcmFtIHggcG9pbnRlciB0byBhbGlnbgot
Ci0gICAgU29tZSBtYWNoaW5lcyByZXF1aXJlIHN0cmljdCBkYXRhIGFsaWdubWVudC4gQ3VycmVu
dGx5IHRoZSBkZWZhdWx0IHVzZXMgNCBieXRlcwotICAgIGFsaWdubWVudC4gVXNlciBjYW4gY3Vz
dG9taXplIGJ5IGRlZmluaW5nIHRoZSBSQVBJREpTT05fQUxJR04gZnVuY3Rpb24gbWFjcm8uLAot
Ki8KLSNpZm5kZWYgUkFQSURKU09OX0FMSUdOCi0jZGVmaW5lIFJBUElESlNPTl9BTElHTih4KSAo
KHggKyAzdSkgJiB+M3UpCi0jZW5kaWYKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gUkFQ
SURKU09OX1VJTlQ2NF9DMgotCi0vLyEgQ29uc3RydWN0IGEgNjQtYml0IGxpdGVyYWwgYnkgYSBw
YWlyIG9mIDMyLWJpdCBpbnRlZ2VyLgotLyohCi0gICAgNjQtYml0IGxpdGVyYWwgd2l0aCBvciB3
aXRob3V0IFVMTCBzdWZmaXggaXMgcHJvbmUgdG8gY29tcGlsZXIgd2FybmluZ3MuCi0gICAgVUlO
VDY0X0MoKSBpcyBDIG1hY3JvIHdoaWNoIGNhdXNlIGNvbXBpbGF0aW9uIHByb2JsZW1zLgotICAg
IFVzZSB0aGlzIG1hY3JvIHRvIGRlZmluZSA2NC1iaXQgY29uc3RhbnRzIGJ5IGEgcGFpciBvZiAz
Mi1iaXQgaW50ZWdlci4KLSovCi0jaWZuZGVmIFJBUElESlNPTl9VSU5UNjRfQzIKLSNkZWZpbmUg
UkFQSURKU09OX1VJTlQ2NF9DMihoaWdoMzIsIGxvdzMyKSAoKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihoaWdoMzIpIDw8IDMyKSB8IHN0YXRpY19jYXN0PHVpbnQ2NF90Pihsb3czMikpCi0jZW5kaWYK
LQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gUkFQSURKU09OX1NTRTIvUkFQSURKU09OX1NT
RTQyL1JBUElESlNPTl9TSU1ECi0KLS8qISBcZGVmIFJBUElESlNPTl9TSU1ECi0gICAgXGluZ3Jv
dXAgUkFQSURKU09OX0NPTkZJRwotICAgIFxicmllZiBFbmFibGUgU1NFMi9TU0U0LjIgb3B0aW1p
emF0aW9uLgotCi0gICAgUmFwaWRKU09OIHN1cHBvcnRzIG9wdGltaXplZCBpbXBsZW1lbnRhdGlv
bnMgZm9yIHNvbWUgcGFyc2luZyBvcGVyYXRpb25zCi0gICAgYmFzZWQgb24gdGhlIFNTRTIgb3Ig
U1NFNC4yIFNJTUQgZXh0ZW5zaW9ucyBvbiBtb2Rlcm4gSW50ZWwtY29tcGF0aWJsZQotICAgIHBy
b2Nlc3NvcnMuCi0KLSAgICBUbyBlbmFibGUgdGhlc2Ugb3B0aW1pemF0aW9ucywgdHdvIGRpZmZl
cmVudCBzeW1ib2xzIGNhbiBiZSBkZWZpbmVkOwotICAgIFxjb2RlCi0gICAgLy8gRW5hYmxlIFNT
RTIgb3B0aW1pemF0aW9uLgotICAgICNkZWZpbmUgUkFQSURKU09OX1NTRTIKLQotICAgIC8vIEVu
YWJsZSBTU0U0LjIgb3B0aW1pemF0aW9uLgotICAgICNkZWZpbmUgUkFQSURKU09OX1NTRTQyCi0g
ICAgXGVuZGNvZGUKLQotICAgIFxjIFJBUElESlNPTl9TU0U0MiB0YWtlcyBwcmVjZWRlbmNlLCBp
ZiBib3RoIGFyZSBkZWZpbmVkLgotCi0gICAgSWYgYW55IG9mIHRoZXNlIHN5bWJvbHMgaXMgZGVm
aW5lZCwgUmFwaWRKU09OIGRlZmluZXMgdGhlIG1hY3JvCi0gICAgXGMgUkFQSURKU09OX1NJTUQg
dG8gaW5kaWNhdGUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGUgb3B0aW1pemVkIGNvZGUuCi0qLwot
I2lmIGRlZmluZWQoUkFQSURKU09OX1NTRTIpIHx8IGRlZmluZWQoUkFQSURKU09OX1NTRTQyKSBc
Ci0gICAgfHwgZGVmaW5lZChSQVBJREpTT05fRE9YWUdFTl9SVU5OSU5HKQotI2RlZmluZSBSQVBJ
REpTT05fU0lNRAotI2VuZGlmCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIFJBUElESlNP
Tl9OT19TSVpFVFlQRURFRklORQotCi0jaWZuZGVmIFJBUElESlNPTl9OT19TSVpFVFlQRURFRklO
RQotLyohIFxkZWYgUkFQSURKU09OX05PX1NJWkVUWVBFREVGSU5FCi0gICAgXGluZ3JvdXAgUkFQ
SURKU09OX0NPTkZJRwotICAgIFxicmllZiBVc2VyLXByb3ZpZGVkIFxjIFNpemVUeXBlIGRlZmlu
aXRpb24uCi0KLSAgICBJbiBvcmRlciB0byBhdm9pZCB1c2luZyAzMi1iaXQgc2l6ZSB0eXBlcyBm
b3IgaW5kZXhpbmcgc3RyaW5ncyBhbmQgYXJyYXlzLAotICAgIGRlZmluZSB0aGlzIHByZXByb2Nl
c3NvciBzeW1ib2wgYW5kIHByb3ZpZGUgdGhlIHR5cGUgcmFwaWRqc29uOjpTaXplVHlwZQotICAg
IGJlZm9yZSBpbmNsdWRpbmcgUmFwaWRKU09OOgotICAgIFxjb2RlCi0gICAgI2RlZmluZSBSQVBJ
REpTT05fTk9fU0laRVRZUEVERUZJTkUKLSAgICBuYW1lc3BhY2UgcmFwaWRqc29uIHsgdHlwZWRl
ZiA6OnN0ZDo6c2l6ZV90IFNpemVUeXBlOyB9Ci0gICAgI2luY2x1ZGUgInJhcGlkanNvbi8uLi4i
Ci0gICAgXGVuZGNvZGUKLQotICAgIFxzZWUgcmFwaWRqc29uOjpTaXplVHlwZQotKi8KLSNpZmRl
ZiBSQVBJREpTT05fRE9YWUdFTl9SVU5OSU5HCi0jZGVmaW5lIFJBUElESlNPTl9OT19TSVpFVFlQ
RURFRklORQotI2VuZGlmCi1SQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCi0vLyEgU2l6ZSB0eXBl
IChmb3Igc3RyaW5nIGxlbmd0aHMsIGFycmF5IHNpemVzLCBldGMuKQotLyohIFJhcGlkSlNPTiB1
c2VzIDMyLWJpdCBhcnJheS9zdHJpbmcgaW5kaWNlcyBldmVuIG9uIDY0LWJpdCBwbGF0Zm9ybXMs
Ci0gICAgaW5zdGVhZCBvZiB1c2luZyBcYyBzaXplX3QuIFVzZXJzIG1heSBvdmVycmlkZSB0aGUg
U2l6ZVR5cGUgYnkgZGVmaW5pbmcKLSAgICBccmVmIFJBUElESlNPTl9OT19TSVpFVFlQRURFRklO
RS4KLSovCi10eXBlZGVmIHVuc2lnbmVkIFNpemVUeXBlOwotUkFQSURKU09OX05BTUVTUEFDRV9F
TkQKLSNlbmRpZgotCi0vLyBhbHdheXMgaW1wb3J0IHN0ZDo6c2l6ZV90IHRvIHJhcGlkanNvbiBu
YW1lc3BhY2UKLVJBUElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KLXVzaW5nIHN0ZDo6c2l6ZV90Owot
UkFQSURKU09OX05BTUVTUEFDRV9FTkQKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gUkFQ
SURKU09OX0FTU0VSVAotCi0vLyEgQXNzZXJ0aW9uLgotLyohIFxpbmdyb3VwIFJBUElESlNPTl9D
T05GSUcKLSAgICBCeSBkZWZhdWx0LCByYXBpZGpzb24gdXNlcyBDIFxjIGFzc2VydCgpIGZvciBp
bnRlcm5hbCBhc3NlcnRpb25zLgotICAgIFVzZXIgY2FuIG92ZXJyaWRlIGl0IGJ5IGRlZmluaW5n
IFJBUElESlNPTl9BU1NFUlQoeCkgbWFjcm8uCi0KLSAgICBcbm90ZSBQYXJzaW5nIGVycm9ycyBh
cmUgaGFuZGxlZCBhbmQgY2FuIGJlIGN1c3RvbWl6ZWQgYnkgdGhlCi0gICAgICAgICAgXHJlZiBS
QVBJREpTT05fRVJST1JTIEFQSXMuCi0qLwotI2lmbmRlZiBSQVBJREpTT05fQVNTRVJUCi0jaW5j
bHVkZSA8Y2Fzc2VydD4KLSNkZWZpbmUgUkFQSURKU09OX0FTU0VSVCh4KSBhc3NlcnQoeCkKLSNl
bmRpZiAvLyBSQVBJREpTT05fQVNTRVJUCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIFJB
UElESlNPTl9TVEFUSUNfQVNTRVJUCi0KLS8vIEFkb3B0IGZyb20gYm9vc3QKLSNpZm5kZWYgUkFQ
SURKU09OX1NUQVRJQ19BU1NFUlQKLS8vIUBjb25kIFJBUElESlNPTl9ISURERU5fRlJPTV9ET1hZ
R0VOCi1SQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCi10ZW1wbGF0ZSA8Ym9vbCB4PiBzdHJ1Y3Qg
U1RBVElDX0FTU0VSVElPTl9GQUlMVVJFOwotdGVtcGxhdGUgPD4gc3RydWN0IFNUQVRJQ19BU1NF
UlRJT05fRkFJTFVSRTx0cnVlPiB7IGVudW0geyB2YWx1ZSA9IDEgfTsgfTsKLXRlbXBsYXRlPGlu
dCB4PiBzdHJ1Y3QgU3RhdGljQXNzZXJ0VGVzdCB7fTsKLVJBUElESlNPTl9OQU1FU1BBQ0VfRU5E
Ci0KLSNkZWZpbmUgUkFQSURKU09OX0pPSU4oWCwgWSkgUkFQSURKU09OX0RPX0pPSU4oWCwgWSkK
LSNkZWZpbmUgUkFQSURKU09OX0RPX0pPSU4oWCwgWSkgUkFQSURKU09OX0RPX0pPSU4yKFgsIFkp
Ci0jZGVmaW5lIFJBUElESlNPTl9ET19KT0lOMihYLCBZKSBYIyNZCi0KLSNpZiBkZWZpbmVkKF9f
R05VQ19fKQotI2RlZmluZSBSQVBJREpTT05fU1RBVElDX0FTU0VSVF9VTlVTRURfQVRUUklCVVRF
IF9fYXR0cmlidXRlX18oKHVudXNlZCkpCi0jZWxzZQotI2RlZmluZSBSQVBJREpTT05fU1RBVElD
X0FTU0VSVF9VTlVTRURfQVRUUklCVVRFIAotI2VuZGlmCi0vLyFAZW5kY29uZAotCi0vKiEgXGRl
ZiBSQVBJREpTT05fU1RBVElDX0FTU0VSVAotICAgIFxicmllZiAoSW50ZXJuYWwpIG1hY3JvIHRv
IGNoZWNrIGZvciBjb25kaXRpb25zIGF0IGNvbXBpbGUtdGltZQotICAgIFxwYXJhbSB4IGNvbXBp
bGUtdGltZSBjb25kaXRpb24KLSAgICBcaGlkZWluaXRpYWxpemVyCi0gKi8KLSNkZWZpbmUgUkFQ
SURKU09OX1NUQVRJQ19BU1NFUlQoeCkgXAotICAgIHR5cGVkZWYgOjpSQVBJREpTT05fTkFNRVNQ
QUNFOjpTdGF0aWNBc3NlcnRUZXN0PCBcCi0gICAgICBzaXplb2YoOjpSQVBJREpTT05fTkFNRVNQ
QUNFOjpTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8Ym9vbCh4KSA+KT4gXAotICAgIFJBUElESlNP
Tl9KT0lOKFN0YXRpY0Fzc2VydFR5cGVkZWYsIF9fTElORV9fKSBSQVBJREpTT05fU1RBVElDX0FT
U0VSVF9VTlVTRURfQVRUUklCVVRFCi0jZW5kaWYKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwot
Ly8gSGVscGVycwotCi0vLyFAY29uZCBSQVBJREpTT05fSElEREVOX0ZST01fRE9YWUdFTgotCi0j
ZGVmaW5lIFJBUElESlNPTl9NVUxUSUxJTkVNQUNST19CRUdJTiBkbyB7ICAKLSNkZWZpbmUgUkFQ
SURKU09OX01VTFRJTElORU1BQ1JPX0VORCBcCi19IHdoaWxlKCh2b2lkKTAsIDApCi0KLS8vIGFk
b3B0ZWQgZnJvbSBCb29zdAotI2RlZmluZSBSQVBJREpTT05fVkVSU0lPTl9DT0RFKHgseSx6KSBc
Ci0gICgoKHgpKjEwMDAwMCkgKyAoKHkpKjEwMCkgKyAoeikpCi0KLS8vIHRva2VuIHN0cmluZ2lm
aWNhdGlvbgotI2RlZmluZSBSQVBJREpTT05fU1RSSU5HSUZZKHgpIFJBUElESlNPTl9ET19TVFJJ
TkdJRlkoeCkKLSNkZWZpbmUgUkFQSURKU09OX0RPX1NUUklOR0lGWSh4KSAjeAotCi0vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vCi0vLyBSQVBJREpTT05fRElBR19QVVNIL1BPUCwgUkFQSURKU09OX0RJ
QUdfT0ZGCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotI2RlZmluZSBSQVBJREpTT05fR05VQyBc
Ci0gICAgUkFQSURKU09OX1ZFUlNJT05fQ09ERShfX0dOVUNfXyxfX0dOVUNfTUlOT1JfXyxfX0dO
VUNfUEFUQ0hMRVZFTF9fKQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fY2xhbmdfXykgfHwgKGRl
ZmluZWQoUkFQSURKU09OX0dOVUMpICYmIFJBUElESlNPTl9HTlVDID49IFJBUElESlNPTl9WRVJT
SU9OX0NPREUoNCwyLDApKQotCi0jZGVmaW5lIFJBUElESlNPTl9QUkFHTUEoeCkgX1ByYWdtYShS
QVBJREpTT05fU1RSSU5HSUZZKHgpKQotI2RlZmluZSBSQVBJREpTT05fRElBR19QUkFHTUEoeCkg
UkFQSURKU09OX1BSQUdNQShHQ0MgZGlhZ25vc3RpYyB4KQotI2RlZmluZSBSQVBJREpTT05fRElB
R19PRkYoeCkgXAotICAgIFJBUElESlNPTl9ESUFHX1BSQUdNQShpZ25vcmVkIFJBUElESlNPTl9T
VFJJTkdJRlkoUkFQSURKU09OX0pPSU4oLVcseCkpKQotCi0vLyBwdXNoL3BvcCBzdXBwb3J0IGlu
IENsYW5nIGFuZCBHQ0M+PTQuNgotI2lmIGRlZmluZWQoX19jbGFuZ19fKSB8fCAoZGVmaW5lZChS
QVBJREpTT05fR05VQykgJiYgUkFQSURKU09OX0dOVUMgPj0gUkFQSURKU09OX1ZFUlNJT05fQ09E
RSg0LDYsMCkpCi0jZGVmaW5lIFJBUElESlNPTl9ESUFHX1BVU0ggUkFQSURKU09OX0RJQUdfUFJB
R01BKHB1c2gpCi0jZGVmaW5lIFJBUElESlNPTl9ESUFHX1BPUCAgUkFQSURKU09OX0RJQUdfUFJB
R01BKHBvcCkKLSNlbHNlIC8vIEdDQyA+PSA0LjIsIDwgNC42Ci0jZGVmaW5lIFJBUElESlNPTl9E
SUFHX1BVU0ggLyogaWdub3JlZCAqLwotI2RlZmluZSBSQVBJREpTT05fRElBR19QT1AgLyogaWdu
b3JlZCAqLwotI2VuZGlmCi0KLSNlbGlmIGRlZmluZWQoX01TQ19WRVIpCi0KLS8vIHByYWdtYSAo
TVNWQyBzcGVjaWZpYykKLSNkZWZpbmUgUkFQSURKU09OX1BSQUdNQSh4KSBfX3ByYWdtYSh4KQot
I2RlZmluZSBSQVBJREpTT05fRElBR19QUkFHTUEoeCkgUkFQSURKU09OX1BSQUdNQSh3YXJuaW5n
KHgpKQotCi0jZGVmaW5lIFJBUElESlNPTl9ESUFHX09GRih4KSBSQVBJREpTT05fRElBR19QUkFH
TUEoZGlzYWJsZTogeCkKLSNkZWZpbmUgUkFQSURKU09OX0RJQUdfUFVTSCBSQVBJREpTT05fRElB
R19QUkFHTUEocHVzaCkKLSNkZWZpbmUgUkFQSURKU09OX0RJQUdfUE9QICBSQVBJREpTT05fRElB
R19QUkFHTUEocG9wKQotCi0jZWxzZQotCi0jZGVmaW5lIFJBUElESlNPTl9ESUFHX09GRih4KSAv
KiBpZ25vcmVkICovCi0jZGVmaW5lIFJBUElESlNPTl9ESUFHX1BVU0ggICAvKiBpZ25vcmVkICov
Ci0jZGVmaW5lIFJBUElESlNPTl9ESUFHX1BPUCAgICAvKiBpZ25vcmVkICovCi0KLSNlbmRpZiAv
LyBSQVBJREpTT05fRElBR18qCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIEMrKzExIGZl
YXR1cmVzCi0KLSNpZm5kZWYgUkFQSURKU09OX0hBU19DWFgxMV9SVkFMVUVfUkVGUwotI2lmIGRl
ZmluZWQoX19jbGFuZ19fKQotI2RlZmluZSBSQVBJREpTT05fSEFTX0NYWDExX1JWQUxVRV9SRUZT
IF9faGFzX2ZlYXR1cmUoY3h4X3J2YWx1ZV9yZWZlcmVuY2VzKQotI2VsaWYgKGRlZmluZWQoUkFQ
SURKU09OX0dOVUMpICYmIChSQVBJREpTT05fR05VQyA+PSBSQVBJREpTT05fVkVSU0lPTl9DT0RF
KDQsMywwKSkgJiYgZGVmaW5lZChfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXykpIHx8IFwKLSAg
ICAgIChkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxNjAwKQotCi0jZGVmaW5lIFJB
UElESlNPTl9IQVNfQ1hYMTFfUlZBTFVFX1JFRlMgMQotI2Vsc2UKLSNkZWZpbmUgUkFQSURKU09O
X0hBU19DWFgxMV9SVkFMVUVfUkVGUyAwCi0jZW5kaWYKLSNlbmRpZiAvLyBSQVBJREpTT05fSEFT
X0NYWDExX1JWQUxVRV9SRUZTCi0KLSNpZm5kZWYgUkFQSURKU09OX0hBU19DWFgxMV9OT0VYQ0VQ
VAotI2lmIGRlZmluZWQoX19jbGFuZ19fKQotI2RlZmluZSBSQVBJREpTT05fSEFTX0NYWDExX05P
RVhDRVBUIF9faGFzX2ZlYXR1cmUoY3h4X25vZXhjZXB0KQotI2VsaWYgKGRlZmluZWQoUkFQSURK
U09OX0dOVUMpICYmIChSQVBJREpTT05fR05VQyA+PSBSQVBJREpTT05fVkVSU0lPTl9DT0RFKDQs
NiwwKSkgJiYgZGVmaW5lZChfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXykpCi0vLyAgICAoZGVm
aW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPj0gPz8/PykgLy8gbm90IHlldCBzdXBwb3J0ZWQK
LSNkZWZpbmUgUkFQSURKU09OX0hBU19DWFgxMV9OT0VYQ0VQVCAxCi0jZWxzZQotI2RlZmluZSBS
QVBJREpTT05fSEFTX0NYWDExX05PRVhDRVBUIDAKLSNlbmRpZgotI2VuZGlmCi0jaWYgUkFQSURK
U09OX0hBU19DWFgxMV9OT0VYQ0VQVAotI2RlZmluZSBSQVBJREpTT05fTk9FWENFUFQgbm9leGNl
cHQKLSNlbHNlCi0jZGVmaW5lIFJBUElESlNPTl9OT0VYQ0VQVCAvKiBub2V4Y2VwdCAqLwotI2Vu
ZGlmIC8vIFJBUElESlNPTl9IQVNfQ1hYMTFfTk9FWENFUFQKLQotLy8gbm8gYXV0b21hdGljIGRl
dGVjdGlvbiwgeWV0Ci0jaWZuZGVmIFJBUElESlNPTl9IQVNfQ1hYMTFfVFlQRVRSQUlUUwotI2Rl
ZmluZSBSQVBJREpTT05fSEFTX0NYWDExX1RZUEVUUkFJVFMgMAotI2VuZGlmCi0KLS8vIUBlbmRj
b25kCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIG5ldy9kZWxldGUKLQotI2lmbmRlZiBS
QVBJREpTT05fTkVXCi0vLy8hIGN1c3RvbWl6YXRpb24gcG9pbnQgZm9yIGdsb2JhbCBcYyBuZXcK
LSNkZWZpbmUgUkFQSURKU09OX05FVyh4KSBuZXcgeAotI2VuZGlmCi0jaWZuZGVmIFJBUElESlNP
Tl9ERUxFVEUKLS8vLyEgY3VzdG9taXphdGlvbiBwb2ludCBmb3IgZ2xvYmFsIFxjIGRlbGV0ZQot
I2RlZmluZSBSQVBJREpTT05fREVMRVRFKHgpIGRlbGV0ZSB4Ci0jZW5kaWYKLQotLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLwotLy8gQWxsb2NhdG9ycyBhbmQgRW5jb2RpbmdzCi0KLSNpbmNsdWRlICJh
bGxvY2F0b3JzLmgiCi0jaW5jbHVkZSAiZW5jb2RpbmdzLmgiCi0KLS8qISBcbmFtZXNwYWNlIHJh
cGlkanNvbgotICAgIFxicmllZiBtYWluIFJhcGlkSlNPTiBuYW1lc3BhY2UKLSAgICBcc2VlIFJB
UElESlNPTl9OQU1FU1BBQ0UKLSovCi1SQVBJREpTT05fTkFNRVNQQUNFX0JFR0lOCi0KLS8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8KLS8vICBTdHJlYW0KLQotLyohIFxjbGFzcyByYXBpZGpzb246OlN0
cmVhbQotICAgIFxicmllZiBDb25jZXB0IGZvciByZWFkaW5nIGFuZCB3cml0aW5nIGNoYXJhY3Rl
cnMuCi0KLSAgICBGb3IgcmVhZC1vbmx5IHN0cmVhbSwgbm8gbmVlZCB0byBpbXBsZW1lbnQgUHV0
QmVnaW4oKSwgUHV0KCksIEZsdXNoKCkgYW5kIFB1dEVuZCgpLgotCi0gICAgRm9yIHdyaXRlLW9u
bHkgc3RyZWFtLCBvbmx5IG5lZWQgdG8gaW1wbGVtZW50IFB1dCgpIGFuZCBGbHVzaCgpLgotCi1c
Y29kZQotY29uY2VwdCBTdHJlYW0gewotICAgIHR5cGVuYW1lIENoOyAgICAvLyE8IENoYXJhY3Rl
ciB0eXBlIG9mIHRoZSBzdHJlYW0uCi0KLSAgICAvLyEgUmVhZCB0aGUgY3VycmVudCBjaGFyYWN0
ZXIgZnJvbSBzdHJlYW0gd2l0aG91dCBtb3ZpbmcgdGhlIHJlYWQgY3Vyc29yLgotICAgIENoIFBl
ZWsoKSBjb25zdDsKLQotICAgIC8vISBSZWFkIHRoZSBjdXJyZW50IGNoYXJhY3RlciBmcm9tIHN0
cmVhbSBhbmQgbW92aW5nIHRoZSByZWFkIGN1cnNvciB0byBuZXh0IGNoYXJhY3Rlci4KLSAgICBD
aCBUYWtlKCk7Ci0KLSAgICAvLyEgR2V0IHRoZSBjdXJyZW50IHJlYWQgY3Vyc29yLgotICAgIC8v
ISBccmV0dXJuIE51bWJlciBvZiBjaGFyYWN0ZXJzIHJlYWQgZnJvbSBzdGFydC4KLSAgICBzaXpl
X3QgVGVsbCgpOwotCi0gICAgLy8hIEJlZ2luIHdyaXRpbmcgb3BlcmF0aW9uIGF0IHRoZSBjdXJy
ZW50IHJlYWQgcG9pbnRlci4KLSAgICAvLyEgXHJldHVybiBUaGUgYmVnaW4gd3JpdGVyIHBvaW50
ZXIuCi0gICAgQ2gqIFB1dEJlZ2luKCk7Ci0KLSAgICAvLyEgV3JpdGUgYSBjaGFyYWN0ZXIuCi0g
ICAgdm9pZCBQdXQoQ2ggYyk7Ci0KLSAgICAvLyEgRmx1c2ggdGhlIGJ1ZmZlci4KLSAgICB2b2lk
IEZsdXNoKCk7Ci0KLSAgICAvLyEgRW5kIHRoZSB3cml0aW5nIG9wZXJhdGlvbi4KLSAgICAvLyEg
XHBhcmFtIGJlZ2luIFRoZSBiZWdpbiB3cml0ZSBwb2ludGVyIHJldHVybmVkIGJ5IFB1dEJlZ2lu
KCkuCi0gICAgLy8hIFxyZXR1cm4gTnVtYmVyIG9mIGNoYXJhY3RlcnMgd3JpdHRlbi4KLSAgICBz
aXplX3QgUHV0RW5kKENoKiBiZWdpbik7Ci19Ci1cZW5kY29kZQotKi8KLQotLy8hIFByb3ZpZGVz
IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIHN0cmVhbS4KLS8qIQotICAgIEJ5IHVzaW5nIHRy
YWl0cyBwYXR0ZXJuLCB0aGlzIHR5cGUgcHJvdmlkZXMgYSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24g
Zm9yIHN0cmVhbS4KLSAgICBGb3IgY3VzdG9tIHN0cmVhbSwgdGhpcyB0eXBlIGNhbiBiZSBzcGVj
aWFsaXplZCBmb3Igb3RoZXIgY29uZmlndXJhdGlvbi4KLSAgICBTZWUgVEVTVChSZWFkZXIsIEN1
c3RvbVN0cmluZ1N0cmVhbSkgaW4gcmVhZGVydGVzdC5jcHAgZm9yIGV4YW1wbGUuCi0qLwotdGVt
cGxhdGU8dHlwZW5hbWUgU3RyZWFtPgotc3RydWN0IFN0cmVhbVRyYWl0cyB7Ci0gICAgLy8hIFdo
ZXRoZXIgdG8gbWFrZSBsb2NhbCBjb3B5IG9mIHN0cmVhbSBmb3Igb3B0aW1pemF0aW9uIGR1cmlu
ZyBwYXJzaW5nLgotICAgIC8qIQotICAgICAgICBCeSBkZWZhdWx0LCBmb3Igc2FmZXR5LCBzdHJl
YW1zIGRvIG5vdCB1c2UgbG9jYWwgY29weSBvcHRpbWl6YXRpb24uCi0gICAgICAgIFN0cmVhbSB0
aGF0IGNhbiBiZSBjb3BpZWQgZmFzdCBzaG91bGQgc3BlY2lhbGl6ZSB0aGlzLCBsaWtlIFN0cmVh
bVRyYWl0czxTdHJpbmdTdHJlYW0+LgotICAgICovCi0gICAgZW51bSB7IGNvcHlPcHRpbWl6YXRp
b24gPSAwIH07Ci19OwotCi0vLyEgUHV0IE4gY29waWVzIG9mIGEgY2hhcmFjdGVyIHRvIGEgc3Ry
ZWFtLgotdGVtcGxhdGU8dHlwZW5hbWUgU3RyZWFtLCB0eXBlbmFtZSBDaD4KLWlubGluZSB2b2lk
IFB1dE4oU3RyZWFtJiBzdHJlYW0sIENoIGMsIHNpemVfdCBuKSB7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBuOyBpKyspCi0gICAgICAgIHN0cmVhbS5QdXQoYyk7Ci19Ci0KLS8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KLS8vIFN0cmluZ1N0cmVhbQotCi0vLyEgUmVhZC1vbmx5IHN0cmluZyBz
dHJlYW0uCi0vKiEgXG5vdGUgaW1wbGVtZW50cyBTdHJlYW0gY29uY2VwdAotKi8KLXRlbXBsYXRl
IDx0eXBlbmFtZSBFbmNvZGluZz4KLXN0cnVjdCBHZW5lcmljU3RyaW5nU3RyZWFtIHsKLSAgICB0
eXBlZGVmIHR5cGVuYW1lIEVuY29kaW5nOjpDaCBDaDsKLQotICAgIEdlbmVyaWNTdHJpbmdTdHJl
YW0oY29uc3QgQ2ggKnNyYykgOiBzcmNfKHNyYyksIGhlYWRfKHNyYykge30KLQotICAgIENoIFBl
ZWsoKSBjb25zdCB7IHJldHVybiAqc3JjXzsgfQotICAgIENoIFRha2UoKSB7IHJldHVybiAqc3Jj
XysrOyB9Ci0gICAgc2l6ZV90IFRlbGwoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxzaXpl
X3Q+KHNyY18gLSBoZWFkXyk7IH0KLQotICAgIENoKiBQdXRCZWdpbigpIHsgUkFQSURKU09OX0FT
U0VSVChmYWxzZSk7IHJldHVybiAwOyB9Ci0gICAgdm9pZCBQdXQoQ2gpIHsgUkFQSURKU09OX0FT
U0VSVChmYWxzZSk7IH0KLSAgICB2b2lkIEZsdXNoKCkgeyBSQVBJREpTT05fQVNTRVJUKGZhbHNl
KTsgfQotICAgIHNpemVfdCBQdXRFbmQoQ2gqKSB7IFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOyBy
ZXR1cm4gMDsgfQotCi0gICAgY29uc3QgQ2gqIHNyY187ICAgICAvLyE8IEN1cnJlbnQgcmVhZCBw
b3NpdGlvbi4KLSAgICBjb25zdCBDaCogaGVhZF87ICAgIC8vITwgT3JpZ2luYWwgaGVhZCBvZiB0
aGUgc3RyaW5nLgotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEVuY29kaW5nPgotc3RydWN0IFN0
cmVhbVRyYWl0czxHZW5lcmljU3RyaW5nU3RyZWFtPEVuY29kaW5nPiA+IHsKLSAgICBlbnVtIHsg
Y29weU9wdGltaXphdGlvbiA9IDEgfTsKLX07Ci0KLS8vISBTdHJpbmcgc3RyZWFtIHdpdGggVVRG
OCBlbmNvZGluZy4KLXR5cGVkZWYgR2VuZXJpY1N0cmluZ1N0cmVhbTxVVEY4PD4gPiBTdHJpbmdT
dHJlYW07Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIEluc2l0dVN0cmluZ1N0cmVhbQot
Ci0vLyEgQSByZWFkLXdyaXRlIHN0cmluZyBzdHJlYW0uCi0vKiEgVGhpcyBzdHJpbmcgc3RyZWFt
IGlzIHBhcnRpY3VsYXJseSBkZXNpZ25lZCBmb3IgaW4tc2l0dSBwYXJzaW5nLgotICAgIFxub3Rl
IGltcGxlbWVudHMgU3RyZWFtIGNvbmNlcHQKLSovCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRW5jb2Rp
bmc+Ci1zdHJ1Y3QgR2VuZXJpY0luc2l0dVN0cmluZ1N0cmVhbSB7Ci0gICAgdHlwZWRlZiB0eXBl
bmFtZSBFbmNvZGluZzo6Q2ggQ2g7Ci0KLSAgICBHZW5lcmljSW5zaXR1U3RyaW5nU3RyZWFtKENo
ICpzcmMpIDogc3JjXyhzcmMpLCBkc3RfKDApLCBoZWFkXyhzcmMpIHt9Ci0KLSAgICAvLyBSZWFk
Ci0gICAgQ2ggUGVlaygpIHsgcmV0dXJuICpzcmNfOyB9Ci0gICAgQ2ggVGFrZSgpIHsgcmV0dXJu
ICpzcmNfKys7IH0KLSAgICBzaXplX3QgVGVsbCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVf
dD4oc3JjXyAtIGhlYWRfKTsgfQotCi0gICAgLy8gV3JpdGUKLSAgICB2b2lkIFB1dChDaCBjKSB7
IFJBUElESlNPTl9BU1NFUlQoZHN0XyAhPSAwKTsgKmRzdF8rKyA9IGM7IH0KLQotICAgIENoKiBQ
dXRCZWdpbigpIHsgcmV0dXJuIGRzdF8gPSBzcmNfOyB9Ci0gICAgc2l6ZV90IFB1dEVuZChDaCog
YmVnaW4pIHsgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdD4oZHN0XyAtIGJlZ2luKTsgfQotICAg
IHZvaWQgRmx1c2goKSB7fQotCi0gICAgQ2gqIFB1c2goc2l6ZV90IGNvdW50KSB7IENoKiBiZWdp
biA9IGRzdF87IGRzdF8gKz0gY291bnQ7IHJldHVybiBiZWdpbjsgfQotICAgIHZvaWQgUG9wKHNp
emVfdCBjb3VudCkgeyBkc3RfIC09IGNvdW50OyB9Ci0KLSAgICBDaCogc3JjXzsKLSAgICBDaCog
ZHN0XzsKLSAgICBDaCogaGVhZF87Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRW5jb2Rpbmc+
Ci1zdHJ1Y3QgU3RyZWFtVHJhaXRzPEdlbmVyaWNJbnNpdHVTdHJpbmdTdHJlYW08RW5jb2Rpbmc+
ID4gewotICAgIGVudW0geyBjb3B5T3B0aW1pemF0aW9uID0gMSB9OwotfTsKLQotLy8hIEluc2l0
dSBzdHJpbmcgc3RyZWFtIHdpdGggVVRGOCBlbmNvZGluZy4KLXR5cGVkZWYgR2VuZXJpY0luc2l0
dVN0cmluZ1N0cmVhbTxVVEY4PD4gPiBJbnNpdHVTdHJpbmdTdHJlYW07Ci0KLS8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8KLS8vIFR5cGUKLQotLy8hIFR5cGUgb2YgSlNPTiB2YWx1ZQotZW51bSBUeXBl
IHsKLSAgICBrTnVsbFR5cGUgPSAwLCAgICAgIC8vITwgbnVsbAotICAgIGtGYWxzZVR5cGUgPSAx
LCAgICAgLy8hPCBmYWxzZQotICAgIGtUcnVlVHlwZSA9IDIsICAgICAgLy8hPCB0cnVlCi0gICAg
a09iamVjdFR5cGUgPSAzLCAgICAvLyE8IG9iamVjdAotICAgIGtBcnJheVR5cGUgPSA0LCAgICAg
Ly8hPCBhcnJheSAKLSAgICBrU3RyaW5nVHlwZSA9IDUsICAgIC8vITwgc3RyaW5nCi0gICAga051
bWJlclR5cGUgPSA2ICAgICAvLyE8IG51bWJlcgotfTsKLQotUkFQSURKU09OX05BTUVTUEFDRV9F
TkQKLQotI2VuZGlmIC8vIFJBUElESlNPTl9SQVBJREpTT05fSF8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVk
ZS9yYXBpZGpzb24vcmVhZGVyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMv
dGhpcmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3JlYWRlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYzVjZGNmMmRmNy4uMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNs
dWRlL3JhcGlkanNvbi9yZWFkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NDQgKzAsMCBAQAot
Ly8gQ29weXJpZ2h0IChDKSAyMDExIE1pbG8gWWlwCi0vLwotLy8gUGVybWlzc2lvbiBpcyBoZXJl
YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29w
eQotLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz
ICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKLS8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl
c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKLS8vIHRv
IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z
ZSwgYW5kL29yIHNlbGwKLS8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg
cGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBz
dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLS8vCi0vLyBUaGUgYWJvdmUgY29w
eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRl
ZCBpbgotLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdh
cmUuCi0vLwotLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS
UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLS8vIElNUExJRUQsIElOQ0xVRElORyBCVVQg
Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotLy8gRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFCi0vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM
RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0vLyBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9N
LAotLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT
RSBPUiBPVEhFUiBERUFMSU5HUyBJTgotLy8gVEhFIFNPRlRXQVJFLgotCi0jaWZuZGVmIFJBUElE
SlNPTl9SRUFERVJfSF8KLSNkZWZpbmUgUkFQSURKU09OX1JFQURFUl9IXwotCi0vKiEgXGZpbGUg
cmVhZGVyLmggKi8KLQotI2luY2x1ZGUgInJhcGlkanNvbi5oIgotI2luY2x1ZGUgImVuY29kaW5n
cy5oIgotI2luY2x1ZGUgImludGVybmFsL21ldGEuaCIKLSNpbmNsdWRlICJpbnRlcm5hbC9zdGFj
ay5oIgotI2luY2x1ZGUgImludGVybmFsL3N0cnRvZC5oIgotCi0jaWYgZGVmaW5lZChSQVBJREpT
T05fU0lNRCkgJiYgZGVmaW5lZChfTVNDX1ZFUikKLSNpbmNsdWRlIDxpbnRyaW4uaD4KLSNwcmFn
bWEgaW50cmluc2ljKF9CaXRTY2FuRm9yd2FyZCkKLSNlbmRpZgotI2lmZGVmIFJBUElESlNPTl9T
U0U0MgotI2luY2x1ZGUgPG5tbWludHJpbi5oPgotI2VsaWYgZGVmaW5lZChSQVBJREpTT05fU1NF
MikKLSNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KLSNlbmRpZgotCi0jaWZkZWYgX01TQ19WRVIKLVJB
UElESlNPTl9ESUFHX1BVU0gKLVJBUElESlNPTl9ESUFHX09GRig0MTI3KSAgLy8gY29uZGl0aW9u
YWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudAotUkFQSURKU09OX0RJQUdfT0ZGKDQ3MDIpICAvLyB1
bnJlYWNoYWJsZSBjb2RlCi0jZW5kaWYKLQotI2lmZGVmIF9fR05VQ19fCi1SQVBJREpTT05fRElB
R19QVVNICi1SQVBJREpTT05fRElBR19PRkYoZWZmYysrKQotI2VuZGlmCi0KLS8vIUBjb25kIFJB
UElESlNPTl9ISURERU5fRlJPTV9ET1hZR0VOCi0jZGVmaW5lIFJBUElESlNPTl9OT1RISU5HIC8q
IGRlbGliZXJhdGVseSBlbXB0eSAqLwotI2lmbmRlZiBSQVBJREpTT05fUEFSU0VfRVJST1JfRUFS
TFlfUkVUVVJOCi0jZGVmaW5lIFJBUElESlNPTl9QQVJTRV9FUlJPUl9FQVJMWV9SRVRVUk4odmFs
dWUpIFwKLSAgICBSQVBJREpTT05fTVVMVElMSU5FTUFDUk9fQkVHSU4gXAotICAgIGlmIChIYXNQ
YXJzZUVycm9yKCkpIHsgcmV0dXJuIHZhbHVlOyB9IFwKLSAgICBSQVBJREpTT05fTVVMVElMSU5F
TUFDUk9fRU5ECi0jZW5kaWYKLSNkZWZpbmUgUkFQSURKU09OX1BBUlNFX0VSUk9SX0VBUkxZX1JF
VFVSTl9WT0lEIFwKLSAgICBSQVBJREpTT05fUEFSU0VfRVJST1JfRUFSTFlfUkVUVVJOKFJBUElE
SlNPTl9OT1RISU5HKQotLy8hQGVuZGNvbmQKLQotLyohIFxkZWYgUkFQSURKU09OX1BBUlNFX0VS
Uk9SX05PUkVUVVJOCi0gICAgXGluZ3JvdXAgUkFQSURKU09OX0VSUk9SUwotICAgIFxicmllZiBN
YWNybyB0byBpbmRpY2F0ZSBhIHBhcnNlIGVycm9yLgotICAgIFxwYXJhbSBwYXJzZUVycm9yQ29k
ZSBccmVmIHJhcGlkanNvbjo6UGFyc2VFcnJvckNvZGUgb2YgdGhlIGVycm9yCi0gICAgXHBhcmFt
IG9mZnNldCAgcG9zaXRpb24gb2YgdGhlIGVycm9yIGluIEpTT04gaW5wdXQgKFxjIHNpemVfdCkK
LQotICAgIFRoaXMgbWFjcm9zIGNhbiBiZSB1c2VkIGFzIGEgY3VzdG9taXphdGlvbiBwb2ludCBm
b3IgdGhlIGludGVybmFsCi0gICAgZXJyb3IgaGFuZGxpbmcgbWVjaGFuaXNtIG9mIFJhcGlkSlNP
Ti4KLQotICAgIEEgY29tbW9uIHVzYWdlIG1vZGVsIGlzIHRvIHRocm93IGFuIGV4Y2VwdGlvbiBp
bnN0ZWFkIG9mIHJlcXVpcmluZyB0aGUKLSAgICBjYWxsZXIgdG8gZXhwbGljaXRseSBjaGVjayB0
aGUgXHJlZiByYXBpZGpzb246OkdlbmVyaWNSZWFkZXI6OlBhcnNlJ3MKLSAgICByZXR1cm4gdmFs
dWU6Ci0KLSAgICBcY29kZQotICAgICNkZWZpbmUgUkFQSURKU09OX1BBUlNFX0VSUk9SX05PUkVU
VVJOKHBhcnNlRXJyb3JDb2RlLG9mZnNldCkgXAotICAgICAgIHRocm93IFBhcnNlRXhjZXB0aW9u
KHBhcnNlRXJyb3JDb2RlLCAjcGFyc2VFcnJvckNvZGUsIG9mZnNldCkKLQotICAgICNpbmNsdWRl
IDxzdGRleGNlcHQ+ICAgICAgICAgICAgICAgLy8gc3RkOjpydW50aW1lX2Vycm9yCi0gICAgI2lu
Y2x1ZGUgInJhcGlkanNvbi9lcnJvci9lcnJvci5oIiAvLyByYXBpZGpzb246OlBhcnNlUmVzdWx0
Ci0KLSAgICBzdHJ1Y3QgUGFyc2VFeGNlcHRpb24gOiBzdGQ6OnJ1bnRpbWVfZXJyb3IsIHJhcGlk
anNvbjo6UGFyc2VSZXN1bHQgewotICAgICAgUGFyc2VFeGNlcHRpb24ocmFwaWRqc29uOjpQYXJz
ZUVycm9yQ29kZSBjb2RlLCBjb25zdCBjaGFyKiBtc2csIHNpemVfdCBvZmZzZXQpCi0gICAgICAg
IDogc3RkOjpydW50aW1lX2Vycm9yKG1zZyksIFBhcnNlUmVzdWx0KGNvZGUsIG9mZnNldCkge30K
LSAgICB9OwotCi0gICAgI2luY2x1ZGUgInJhcGlkanNvbi9yZWFkZXIuaCIKLSAgICBcZW5kY29k
ZQotCi0gICAgXHNlZSBSQVBJREpTT05fUEFSU0VfRVJST1IsIHJhcGlkanNvbjo6R2VuZXJpY1Jl
YWRlcjo6UGFyc2UKLSAqLwotI2lmbmRlZiBSQVBJREpTT05fUEFSU0VfRVJST1JfTk9SRVRVUk4K
LSNkZWZpbmUgUkFQSURKU09OX1BBUlNFX0VSUk9SX05PUkVUVVJOKHBhcnNlRXJyb3JDb2RlLCBv
ZmZzZXQpIFwKLSAgICBSQVBJREpTT05fTVVMVElMSU5FTUFDUk9fQkVHSU4gXAotICAgIFJBUElE
SlNPTl9BU1NFUlQoIUhhc1BhcnNlRXJyb3IoKSk7IC8qIEVycm9yIGNhbiBvbmx5IGJlIGFzc2ln
bmVkIG9uY2UgKi8gXAotICAgIFNldFBhcnNlRXJyb3IocGFyc2VFcnJvckNvZGUsIG9mZnNldCk7
IFwKLSAgICBSQVBJREpTT05fTVVMVElMSU5FTUFDUk9fRU5ECi0jZW5kaWYKLQotLyohIFxkZWYg
UkFQSURKU09OX1BBUlNFX0VSUk9SCi0gICAgXGluZ3JvdXAgUkFQSURKU09OX0VSUk9SUwotICAg
IFxicmllZiAoSW50ZXJuYWwpIG1hY3JvIHRvIGluZGljYXRlIGFuZCBoYW5kbGUgYSBwYXJzZSBl
cnJvci4KLSAgICBccGFyYW0gcGFyc2VFcnJvckNvZGUgXHJlZiByYXBpZGpzb246OlBhcnNlRXJy
b3JDb2RlIG9mIHRoZSBlcnJvcgotICAgIFxwYXJhbSBvZmZzZXQgIHBvc2l0aW9uIG9mIHRoZSBl
cnJvciBpbiBKU09OIGlucHV0IChcYyBzaXplX3QpCi0KLSAgICBJbnZva2VzIFJBUElESlNPTl9Q
QVJTRV9FUlJPUl9OT1JFVFVSTiBhbmQgc3RvcHMgdGhlIHBhcnNpbmcuCi0KLSAgICBcc2VlIFJB
UElESlNPTl9QQVJTRV9FUlJPUl9OT1JFVFVSTgotICAgIFxoaWRlaW5pdGlhbGl6ZXIKLSAqLwot
I2lmbmRlZiBSQVBJREpTT05fUEFSU0VfRVJST1IKLSNkZWZpbmUgUkFQSURKU09OX1BBUlNFX0VS
Uk9SKHBhcnNlRXJyb3JDb2RlLCBvZmZzZXQpIFwKLSAgICBSQVBJREpTT05fTVVMVElMSU5FTUFD
Uk9fQkVHSU4gXAotICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUl9OT1JFVFVSTihwYXJzZUVycm9y
Q29kZSwgb2Zmc2V0KTsgXAotICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUl9FQVJMWV9SRVRVUk5f
Vk9JRDsgXAotICAgIFJBUElESlNPTl9NVUxUSUxJTkVNQUNST19FTkQKLSNlbmRpZgotCi0jaW5j
bHVkZSAiZXJyb3IvZXJyb3IuaCIgLy8gUGFyc2VFcnJvckNvZGUsIFBhcnNlUmVzdWx0Ci0KLVJB
UElESlNPTl9OQU1FU1BBQ0VfQkVHSU4KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gUGFy
c2VGbGFnCi0KLS8qISBcZGVmIFJBUElESlNPTl9QQVJTRV9ERUZBVUxUX0ZMQUdTIAotICAgIFxp
bmdyb3VwIFJBUElESlNPTl9DT05GSUcKLSAgICBcYnJpZWYgVXNlci1kZWZpbmVkIGtQYXJzZURl
ZmF1bHRGbGFncyBkZWZpbml0aW9uLgotCi0gICAgVXNlciBjYW4gZGVmaW5lIHRoaXMgYXMgYW55
IFxjIFBhcnNlRmxhZyBjb21iaW5hdGlvbnMuCi0qLwotI2lmbmRlZiBSQVBJREpTT05fUEFSU0Vf
REVGQVVMVF9GTEFHUwotI2RlZmluZSBSQVBJREpTT05fUEFSU0VfREVGQVVMVF9GTEFHUyBrUGFy
c2VOb0ZsYWdzCi0jZW5kaWYKLQotLy8hIENvbWJpbmF0aW9uIG9mIHBhcnNlRmxhZ3MKLS8qISBc
c2VlIFJlYWRlcjo6UGFyc2UsIERvY3VtZW50OjpQYXJzZSwgRG9jdW1lbnQ6OlBhcnNlSW5zaXR1
LCBEb2N1bWVudDo6UGFyc2VTdHJlYW0KLSAqLwotZW51bSBQYXJzZUZsYWcgewotICAgIGtQYXJz
ZU5vRmxhZ3MgPSAwLCAgICAgICAgICAgICAgLy8hPCBObyBmbGFncyBhcmUgc2V0LgotICAgIGtQ
YXJzZUluc2l0dUZsYWcgPSAxLCAgICAgICAgICAgLy8hPCBJbi1zaXR1KGRlc3RydWN0aXZlKSBw
YXJzaW5nLgotICAgIGtQYXJzZVZhbGlkYXRlRW5jb2RpbmdGbGFnID0gMiwgLy8hPCBWYWxpZGF0
ZSBlbmNvZGluZyBvZiBKU09OIHN0cmluZ3MuCi0gICAga1BhcnNlSXRlcmF0aXZlRmxhZyA9IDQs
ICAgICAgICAvLyE8IEl0ZXJhdGl2ZShjb25zdGFudCBjb21wbGV4aXR5IGluIHRlcm1zIG9mIGZ1
bmN0aW9uIGNhbGwgc3RhY2sgc2l6ZSkgcGFyc2luZy4KLSAgICBrUGFyc2VTdG9wV2hlbkRvbmVG
bGFnID0gOCwgICAgIC8vITwgQWZ0ZXIgcGFyc2luZyBhIGNvbXBsZXRlIEpTT04gcm9vdCBmcm9t
IHN0cmVhbSwgc3RvcCBmdXJ0aGVyIHByb2Nlc3NpbmcgdGhlIHJlc3Qgb2Ygc3RyZWFtLiBXaGVu
IHRoaXMgZmxhZyBpcyB1c2VkLCBwYXJzZXIgd2lsbCBub3QgZ2VuZXJhdGUga1BhcnNlRXJyb3JE
b2N1bWVudFJvb3ROb3RTaW5ndWxhciBlcnJvci4KLSAgICBrUGFyc2VGdWxsUHJlY2lzaW9uRmxh
ZyA9IDE2LCAgIC8vITwgUGFyc2UgbnVtYmVyIGluIGZ1bGwgcHJlY2lzaW9uIChidXQgc2xvd2Vy
KS4KLSAgICBrUGFyc2VEZWZhdWx0RmxhZ3MgPSBSQVBJREpTT05fUEFSU0VfREVGQVVMVF9GTEFH
UyAgLy8hPCBEZWZhdWx0IHBhcnNlIGZsYWdzLiBDYW4gYmUgY3VzdG9taXplZCBieSBkZWZpbmlu
ZyBSQVBJREpTT05fUEFSU0VfREVGQVVMVF9GTEFHUwotfTsKLQotLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLwotLy8gSGFuZGxlcgotCi0vKiEgXGNsYXNzIHJhcGlkanNvbjo6SGFuZGxlcgotICAgIFxi
cmllZiBDb25jZXB0IGZvciByZWNlaXZpbmcgZXZlbnRzIGZyb20gR2VuZXJpY1JlYWRlciB1cG9u
IHBhcnNpbmcuCi0gICAgVGhlIGZ1bmN0aW9ucyByZXR1cm4gdHJ1ZSBpZiBubyBlcnJvciBvY2N1
cnMuIElmIHRoZXkgcmV0dXJuIGZhbHNlLCAKLSAgICB0aGUgZXZlbnQgcHVibGlzaGVyIHNob3Vs
ZCB0ZXJtaW5hdGUgdGhlIHByb2Nlc3MuCi1cY29kZQotY29uY2VwdCBIYW5kbGVyIHsKLSAgICB0
eXBlbmFtZSBDaDsKLQotICAgIGJvb2wgTnVsbCgpOwotICAgIGJvb2wgQm9vbChib29sIGIpOwot
ICAgIGJvb2wgSW50KGludCBpKTsKLSAgICBib29sIFVpbnQodW5zaWduZWQgaSk7Ci0gICAgYm9v
bCBJbnQ2NChpbnQ2NF90IGkpOwotICAgIGJvb2wgVWludDY0KHVpbnQ2NF90IGkpOwotICAgIGJv
b2wgRG91YmxlKGRvdWJsZSBkKTsKLSAgICBib29sIFN0cmluZyhjb25zdCBDaCogc3RyLCBTaXpl
VHlwZSBsZW5ndGgsIGJvb2wgY29weSk7Ci0gICAgYm9vbCBTdGFydE9iamVjdCgpOwotICAgIGJv
b2wgS2V5KGNvbnN0IENoKiBzdHIsIFNpemVUeXBlIGxlbmd0aCwgYm9vbCBjb3B5KTsKLSAgICBi
b29sIEVuZE9iamVjdChTaXplVHlwZSBtZW1iZXJDb3VudCk7Ci0gICAgYm9vbCBTdGFydEFycmF5
KCk7Ci0gICAgYm9vbCBFbmRBcnJheShTaXplVHlwZSBlbGVtZW50Q291bnQpOwotfTsKLVxlbmRj
b2RlCi0qLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gQmFzZVJlYWRlckhhbmRsZXIKLQot
Ly8hIERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2YgSGFuZGxlci4KLS8qISBUaGlzIGNhbiBiZSB1
c2VkIGFzIGJhc2UgY2xhc3Mgb2YgYW55IHJlYWRlciBoYW5kbGVyLgotICAgIFxub3RlIGltcGxl
bWVudHMgSGFuZGxlciBjb25jZXB0Ci0qLwotdGVtcGxhdGU8dHlwZW5hbWUgRW5jb2RpbmcgPSBV
VEY4PD4sIHR5cGVuYW1lIERlcml2ZWQgPSB2b2lkPgotc3RydWN0IEJhc2VSZWFkZXJIYW5kbGVy
IHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEVuY29kaW5nOjpDaCBDaDsKLQotICAgIHR5cGVkZWYg
dHlwZW5hbWUgaW50ZXJuYWw6OlNlbGVjdElmPGludGVybmFsOjpJc1NhbWU8RGVyaXZlZCwgdm9p
ZD4sIEJhc2VSZWFkZXJIYW5kbGVyLCBEZXJpdmVkPjo6VHlwZSBPdmVycmlkZTsKLQotICAgIGJv
b2wgRGVmYXVsdCgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIE51bGwoKSB7IHJldHVybiBz
dGF0aWNfY2FzdDxPdmVycmlkZSY+KCp0aGlzKS5EZWZhdWx0KCk7IH0KLSAgICBib29sIEJvb2wo
Ym9vbCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcnJpZGUmPigqdGhpcykuRGVmYXVsdCgpOyB9
Ci0gICAgYm9vbCBJbnQoaW50KSB7IHJldHVybiBzdGF0aWNfY2FzdDxPdmVycmlkZSY+KCp0aGlz
KS5EZWZhdWx0KCk7IH0KLSAgICBib29sIFVpbnQodW5zaWduZWQpIHsgcmV0dXJuIHN0YXRpY19j
YXN0PE92ZXJyaWRlJj4oKnRoaXMpLkRlZmF1bHQoKTsgfQotICAgIGJvb2wgSW50NjQoaW50NjRf
dCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcnJpZGUmPigqdGhpcykuRGVmYXVsdCgpOyB9Ci0g
ICAgYm9vbCBVaW50NjQodWludDY0X3QpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE92ZXJyaWRlJj4o
KnRoaXMpLkRlZmF1bHQoKTsgfQotICAgIGJvb2wgRG91YmxlKGRvdWJsZSkgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8T3ZlcnJpZGUmPigqdGhpcykuRGVmYXVsdCgpOyB9Ci0gICAgYm9vbCBTdHJpbmco
Y29uc3QgQ2gqLCBTaXplVHlwZSwgYm9vbCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T3ZlcnJpZGUm
PigqdGhpcykuRGVmYXVsdCgpOyB9Ci0gICAgYm9vbCBTdGFydE9iamVjdCgpIHsgcmV0dXJuIHN0
YXRpY19jYXN0PE92ZXJyaWRlJj4oKnRoaXMpLkRlZmF1bHQoKTsgfQotICAgIGJvb2wgS2V5KGNv
bnN0IENoKiBzdHIsIFNpemVUeXBlIGxlbiwgYm9vbCBjb3B5KSB7IHJldHVybiBzdGF0aWNfY2Fz
dDxPdmVycmlkZSY+KCp0aGlzKS5TdHJpbmcoc3RyLCBsZW4sIGNvcHkpOyB9Ci0gICAgYm9vbCBF
bmRPYmplY3QoU2l6ZVR5cGUpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE92ZXJyaWRlJj4oKnRoaXMp
LkRlZmF1bHQoKTsgfQotICAgIGJvb2wgU3RhcnRBcnJheSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PE92ZXJyaWRlJj4oKnRoaXMpLkRlZmF1bHQoKTsgfQotICAgIGJvb2wgRW5kQXJyYXkoU2l6ZVR5
cGUpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE92ZXJyaWRlJj4oKnRoaXMpLkRlZmF1bHQoKTsgfQot
fTsKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gU3RyZWFtTG9jYWxDb3B5Ci0KLW5hbWVz
cGFjZSBpbnRlcm5hbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmVhbSwgaW50ID0gU3RyZWFt
VHJhaXRzPFN0cmVhbT46OmNvcHlPcHRpbWl6YXRpb24+Ci1jbGFzcyBTdHJlYW1Mb2NhbENvcHk7
Ci0KLS8vISBEbyBjb3B5IG9wdGltaXphdGlvbi4KLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmVhbT4K
LWNsYXNzIFN0cmVhbUxvY2FsQ29weTxTdHJlYW0sIDE+IHsKLXB1YmxpYzoKLSAgICBTdHJlYW1M
b2NhbENvcHkoU3RyZWFtJiBvcmlnaW5hbCkgOiBzKG9yaWdpbmFsKSwgb3JpZ2luYWxfKG9yaWdp
bmFsKSB7fQotICAgIH5TdHJlYW1Mb2NhbENvcHkoKSB7IG9yaWdpbmFsXyA9IHM7IH0KLQotICAg
IFN0cmVhbSBzOwotCi1wcml2YXRlOgotICAgIFN0cmVhbUxvY2FsQ29weSYgb3BlcmF0b3I9KGNv
bnN0IFN0cmVhbUxvY2FsQ29weSYpIC8qID0gZGVsZXRlICovOwotCi0gICAgU3RyZWFtJiBvcmln
aW5hbF87Ci19OwotCi0vLyEgS2VlcCByZWZlcmVuY2UuCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJl
YW0+Ci1jbGFzcyBTdHJlYW1Mb2NhbENvcHk8U3RyZWFtLCAwPiB7Ci1wdWJsaWM6Ci0gICAgU3Ry
ZWFtTG9jYWxDb3B5KFN0cmVhbSYgb3JpZ2luYWwpIDogcyhvcmlnaW5hbCkge30KLQotICAgIFN0
cmVhbSYgczsKLQotcHJpdmF0ZToKLSAgICBTdHJlYW1Mb2NhbENvcHkmIG9wZXJhdG9yPShjb25z
dCBTdHJlYW1Mb2NhbENvcHkmKSAvKiA9IGRlbGV0ZSAqLzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IGludGVybmFsCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIFNraXBXaGl0ZXNwYWNlCi0K
LS8vISBTa2lwIHRoZSBKU09OIHdoaXRlIHNwYWNlcyBpbiBhIHN0cmVhbS4KLS8qISBccGFyYW0g
aXMgQSBpbnB1dCBzdHJlYW0gZm9yIHNraXBwaW5nIHdoaXRlIHNwYWNlcy4KLSAgICBcbm90ZSBU
aGlzIGZ1bmN0aW9uIGhhcyBTU0UyL1NTRTQuMiBzcGVjaWFsaXphdGlvbi4KLSovCi10ZW1wbGF0
ZTx0eXBlbmFtZSBJbnB1dFN0cmVhbT4KLXZvaWQgU2tpcFdoaXRlc3BhY2UoSW5wdXRTdHJlYW0m
IGlzKSB7Ci0gICAgaW50ZXJuYWw6OlN0cmVhbUxvY2FsQ29weTxJbnB1dFN0cmVhbT4gY29weShp
cyk7Ci0gICAgSW5wdXRTdHJlYW0mIHMoY29weS5zKTsKLQotICAgIHdoaWxlIChzLlBlZWsoKSA9
PSAnICcgfHwgcy5QZWVrKCkgPT0gJ1xuJyB8fCBzLlBlZWsoKSA9PSAnXHInIHx8IHMuUGVlaygp
ID09ICdcdCcpCi0gICAgICAgIHMuVGFrZSgpOwotfQotCi0jaWZkZWYgUkFQSURKU09OX1NTRTQy
Ci0vLyEgU2tpcCB3aGl0ZXNwYWNlIHdpdGggU1NFIDQuMiBwY21waXN0cm0gaW5zdHJ1Y3Rpb24s
IHRlc3RpbmcgMTYgOC1ieXRlIGNoYXJhY3RlcnMgYXQgb25jZS4KLWlubGluZSBjb25zdCBjaGFy
ICpTa2lwV2hpdGVzcGFjZV9TSU1EKGNvbnN0IGNoYXIqIHApIHsKLSAgICAvLyBGYXN0IHJldHVy
biBmb3Igc2luZ2xlIG5vbi13aGl0ZXNwYWNlCi0gICAgaWYgKCpwID09ICcgJyB8fCAqcCA9PSAn
XG4nIHx8ICpwID09ICdccicgfHwgKnAgPT0gJ1x0JykKLSAgICAgICAgKytwOwotICAgIGVsc2UK
LSAgICAgICAgcmV0dXJuIHA7Ci0KLSAgICAvLyAxNi1ieXRlIGFsaWduIHRvIHRoZSBuZXh0IGJv
dW5kYXJ5Ci0gICAgY29uc3QgY2hhciogbmV4dEFsaWduZWQgPSByZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPigocmVpbnRlcnByZXRfY2FzdDxzaXplX3Q+KHApICsgMTUpICYgfjE1KTsKLSAg
ICB3aGlsZSAocCAhPSBuZXh0QWxpZ25lZCkKLSAgICAgICAgaWYgKCpwID09ICcgJyB8fCAqcCA9
PSAnXG4nIHx8ICpwID09ICdccicgfHwgKnAgPT0gJ1x0JykKLSAgICAgICAgICAgICsrcDsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIHA7Ci0KLSAgICAvLyBUaGUgcmVzdCBvZiBz
dHJpbmcgdXNpbmcgU0lNRAotICAgIHN0YXRpYyBjb25zdCBjaGFyIHdoaXRlc3BhY2VbMTZdID0g
IiBcblxyXHQiOwotICAgIGNvbnN0IF9fbTEyOGkgdyA9IF9tbV9sb2FkdV9zaTEyOCgoY29uc3Qg
X19tMTI4aSAqKSZ3aGl0ZXNwYWNlWzBdKTsKLQotICAgIGZvciAoOzsgcCArPSAxNikgewotICAg
ICAgICBjb25zdCBfX20xMjhpIHMgPSBfbW1fbG9hZF9zaTEyOCgoY29uc3QgX19tMTI4aSAqKXAp
OwotICAgICAgICBjb25zdCB1bnNpZ25lZCByID0gX21tX2N2dHNpMTI4X3NpMzIoX21tX2NtcGlz
dHJtKHcsIHMsIF9TSUREX1VCWVRFX09QUyB8IF9TSUREX0NNUF9FUVVBTF9BTlkgfCBfU0lERF9C
SVRfTUFTSyB8IF9TSUREX05FR0FUSVZFX1BPTEFSSVRZKSk7Ci0gICAgICAgIGlmIChyICE9IDAp
IHsgICAvLyBzb21lIG9mIGNoYXJhY3RlcnMgaXMgbm9uLXdoaXRlc3BhY2UKLSNpZmRlZiBfTVND
X1ZFUiAgICAgICAgIC8vIEZpbmQgdGhlIGluZGV4IG9mIGZpcnN0IG5vbi13aGl0ZXNwYWNlCi0g
ICAgICAgICAgICB1bnNpZ25lZCBsb25nIG9mZnNldDsKLSAgICAgICAgICAgIF9CaXRTY2FuRm9y
d2FyZCgmb2Zmc2V0LCByKTsKLSAgICAgICAgICAgIHJldHVybiBwICsgb2Zmc2V0OwotI2Vsc2UK
LSAgICAgICAgICAgIHJldHVybiBwICsgX19idWlsdGluX2ZmcyhyKSAtIDE7Ci0jZW5kaWYKLSAg
ICAgICAgfQotICAgIH0KLX0KLQotI2VsaWYgZGVmaW5lZChSQVBJREpTT05fU1NFMikKLQotLy8h
IFNraXAgd2hpdGVzcGFjZSB3aXRoIFNTRTIgaW5zdHJ1Y3Rpb25zLCB0ZXN0aW5nIDE2IDgtYnl0
ZSBjaGFyYWN0ZXJzIGF0IG9uY2UuCi1pbmxpbmUgY29uc3QgY2hhciAqU2tpcFdoaXRlc3BhY2Vf
U0lNRChjb25zdCBjaGFyKiBwKSB7Ci0gICAgLy8gRmFzdCByZXR1cm4gZm9yIHNpbmdsZSBub24t
d2hpdGVzcGFjZQotICAgIGlmICgqcCA9PSAnICcgfHwgKnAgPT0gJ1xuJyB8fCAqcCA9PSAnXHIn
IHx8ICpwID09ICdcdCcpCi0gICAgICAgICsrcDsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBw
OwotCi0gICAgLy8gMTYtYnl0ZSBhbGlnbiB0byB0aGUgbmV4dCBib3VuZGFyeQotICAgIGNvbnN0
IGNoYXIqIG5leHRBbGlnbmVkID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oKHJlaW50
ZXJwcmV0X2Nhc3Q8c2l6ZV90PihwKSArIDE1KSAmIH4xNSk7Ci0gICAgd2hpbGUgKHAgIT0gbmV4
dEFsaWduZWQpCi0gICAgICAgIGlmICgqcCA9PSAnICcgfHwgKnAgPT0gJ1xuJyB8fCAqcCA9PSAn
XHInIHx8ICpwID09ICdcdCcpCi0gICAgICAgICAgICArK3A7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHJldHVybiBwOwotCi0gICAgLy8gVGhlIHJlc3Qgb2Ygc3RyaW5nCi0gICAgc3RhdGlj
IGNvbnN0IGNoYXIgd2hpdGVzcGFjZXNbNF1bMTddID0gewotICAgICAgICAiICAgICAgICAgICAg
ICAgICIsCi0gICAgICAgICJcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiIsCi0gICAg
ICAgICJcclxyXHJcclxyXHJcclxyXHJcclxyXHJcclxyXHJcciIsCi0gICAgICAgICJcdFx0XHRc
dFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCJ9OwotCi0gICAgICAgIGNvbnN0IF9fbTEyOGkgdzAg
PSBfbW1fbG9hZHVfc2kxMjgoKGNvbnN0IF9fbTEyOGkgKikmd2hpdGVzcGFjZXNbMF1bMF0pOwot
ICAgICAgICBjb25zdCBfX20xMjhpIHcxID0gX21tX2xvYWR1X3NpMTI4KChjb25zdCBfX20xMjhp
ICopJndoaXRlc3BhY2VzWzFdWzBdKTsKLSAgICAgICAgY29uc3QgX19tMTI4aSB3MiA9IF9tbV9s
b2FkdV9zaTEyOCgoY29uc3QgX19tMTI4aSAqKSZ3aGl0ZXNwYWNlc1syXVswXSk7Ci0gICAgICAg
IGNvbnN0IF9fbTEyOGkgdzMgPSBfbW1fbG9hZHVfc2kxMjgoKGNvbnN0IF9fbTEyOGkgKikmd2hp
dGVzcGFjZXNbM11bMF0pOwotCi0gICAgZm9yICg7OyBwICs9IDE2KSB7Ci0gICAgICAgIGNvbnN0
IF9fbTEyOGkgcyA9IF9tbV9sb2FkX3NpMTI4KChjb25zdCBfX20xMjhpICopcCk7Ci0gICAgICAg
IF9fbTEyOGkgeCA9IF9tbV9jbXBlcV9lcGk4KHMsIHcwKTsKLSAgICAgICAgeCA9IF9tbV9vcl9z
aTEyOCh4LCBfbW1fY21wZXFfZXBpOChzLCB3MSkpOwotICAgICAgICB4ID0gX21tX29yX3NpMTI4
KHgsIF9tbV9jbXBlcV9lcGk4KHMsIHcyKSk7Ci0gICAgICAgIHggPSBfbW1fb3Jfc2kxMjgoeCwg
X21tX2NtcGVxX2VwaTgocywgdzMpKTsKLSAgICAgICAgdW5zaWduZWQgc2hvcnQgciA9ICh1bnNp
Z25lZCBzaG9ydCl+X21tX21vdmVtYXNrX2VwaTgoeCk7Ci0gICAgICAgIGlmIChyICE9IDApIHsg
ICAvLyBzb21lIG9mIGNoYXJhY3RlcnMgbWF5IGJlIG5vbi13aGl0ZXNwYWNlCi0jaWZkZWYgX01T
Q19WRVIgICAgICAgICAvLyBGaW5kIHRoZSBpbmRleCBvZiBmaXJzdCBub24td2hpdGVzcGFjZQot
ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBvZmZzZXQ7Ci0gICAgICAgICAgICBfQml0U2NhbkZv
cndhcmQoJm9mZnNldCwgcik7Ci0gICAgICAgICAgICByZXR1cm4gcCArIG9mZnNldDsKLSNlbHNl
Ci0gICAgICAgICAgICByZXR1cm4gcCArIF9fYnVpbHRpbl9mZnMocikgLSAxOwotI2VuZGlmCi0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLSNlbmRpZiAvLyBSQVBJREpTT05fU1NFMgotCi0jaWZkZWYg
UkFQSURKU09OX1NJTUQKLS8vISBUZW1wbGF0ZSBmdW5jdGlvbiBzcGVjaWFsaXphdGlvbiBmb3Ig
SW5zaXR1U3RyaW5nU3RyZWFtCi10ZW1wbGF0ZTw+IGlubGluZSB2b2lkIFNraXBXaGl0ZXNwYWNl
KEluc2l0dVN0cmluZ1N0cmVhbSYgaXMpIHsgCi0gICAgaXMuc3JjXyA9IGNvbnN0X2Nhc3Q8Y2hh
cio+KFNraXBXaGl0ZXNwYWNlX1NJTUQoaXMuc3JjXykpOwotfQotCi0vLyEgVGVtcGxhdGUgZnVu
Y3Rpb24gc3BlY2lhbGl6YXRpb24gZm9yIFN0cmluZ1N0cmVhbQotdGVtcGxhdGU8PiBpbmxpbmUg
dm9pZCBTa2lwV2hpdGVzcGFjZShTdHJpbmdTdHJlYW0mIGlzKSB7Ci0gICAgaXMuc3JjXyA9IFNr
aXBXaGl0ZXNwYWNlX1NJTUQoaXMuc3JjXyk7Ci19Ci0jZW5kaWYgLy8gUkFQSURKU09OX1NJTUQK
LQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gR2VuZXJpY1JlYWRlcgotCi0vLyEgU0FYLXN0
eWxlIEpTT04gcGFyc2VyLiBVc2UgXHJlZiBSZWFkZXIgZm9yIFVURjggZW5jb2RpbmcgYW5kIGRl
ZmF1bHQgYWxsb2NhdG9yLgotLyohIEdlbmVyaWNSZWFkZXIgcGFyc2VzIEpTT04gdGV4dCBmcm9t
IGEgc3RyZWFtLCBhbmQgc2VuZCBldmVudHMgc3luY2hyb25vdXNseSB0byBhbiAKLSAgICBvYmpl
Y3QgaW1wbGVtZW50aW5nIEhhbmRsZXIgY29uY2VwdC4KLQotICAgIEl0IG5lZWRzIHRvIGFsbG9j
YXRlIGEgc3RhY2sgZm9yIHN0b3JpbmcgYSBzaW5nbGUgZGVjb2RlZCBzdHJpbmcgZHVyaW5nIAot
ICAgIG5vbi1kZXN0cnVjdGl2ZSBwYXJzaW5nLgotCi0gICAgRm9yIGluLXNpdHUgcGFyc2luZywg
dGhlIGRlY29kZWQgc3RyaW5nIGlzIGRpcmVjdGx5IHdyaXR0ZW4gdG8gdGhlIHNvdXJjZSAKLSAg
ICB0ZXh0IHN0cmluZywgbm8gdGVtcG9yYXJ5IGJ1ZmZlciBpcyByZXF1aXJlZC4KLQotICAgIEEg
R2VuZXJpY1JlYWRlciBvYmplY3QgY2FuIGJlIHJldXNlZCBmb3IgcGFyc2luZyBtdWx0aXBsZSBK
U09OIHRleHQuCi0gICAgCi0gICAgXHRwYXJhbSBTb3VyY2VFbmNvZGluZyBFbmNvZGluZyBvZiB0
aGUgaW5wdXQgc3RyZWFtLgotICAgIFx0cGFyYW0gVGFyZ2V0RW5jb2RpbmcgRW5jb2Rpbmcgb2Yg
dGhlIHBhcnNlIG91dHB1dC4KLSAgICBcdHBhcmFtIFN0YWNrQWxsb2NhdG9yIEFsbG9jYXRvciB0
eXBlIGZvciBzdGFjay4KLSovCi10ZW1wbGF0ZSA8dHlwZW5hbWUgU291cmNlRW5jb2RpbmcsIHR5
cGVuYW1lIFRhcmdldEVuY29kaW5nLCB0eXBlbmFtZSBTdGFja0FsbG9jYXRvciA9IENydEFsbG9j
YXRvcj4KLWNsYXNzIEdlbmVyaWNSZWFkZXIgewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5h
bWUgU291cmNlRW5jb2Rpbmc6OkNoIENoOyAvLyE8IFNvdXJjZUVuY29kaW5nIGNoYXJhY3RlciB0
eXBlCi0KLSAgICAvLyEgQ29uc3RydWN0b3IuCi0gICAgLyohIFxwYXJhbSBhbGxvY2F0b3IgT3B0
aW9uYWwgYWxsb2NhdG9yIGZvciBhbGxvY2F0aW5nIHN0YWNrIG1lbW9yeS4gKE9ubHkgdXNlIGZv
ciBub24tZGVzdHJ1Y3RpdmUgcGFyc2luZykKLSAgICAgICAgXHBhcmFtIHN0YWNrQ2FwYWNpdHkg
c3RhY2sgY2FwYWNpdHkgaW4gYnl0ZXMgZm9yIHN0b3JpbmcgYSBzaW5nbGUgZGVjb2RlZCBzdHJp
bmcuICAoT25seSB1c2UgZm9yIG5vbi1kZXN0cnVjdGl2ZSBwYXJzaW5nKQotICAgICovCi0gICAg
R2VuZXJpY1JlYWRlcihTdGFja0FsbG9jYXRvciogc3RhY2tBbGxvY2F0b3IgPSAwLCBzaXplX3Qg
c3RhY2tDYXBhY2l0eSA9IGtEZWZhdWx0U3RhY2tDYXBhY2l0eSkgOiBzdGFja18oc3RhY2tBbGxv
Y2F0b3IsIHN0YWNrQ2FwYWNpdHkpLCBwYXJzZVJlc3VsdF8oKSB7fQotCi0gICAgLy8hIFBhcnNl
IEpTT04gdGV4dC4KLSAgICAvKiEgXHRwYXJhbSBwYXJzZUZsYWdzIENvbWJpbmF0aW9uIG9mIFxy
ZWYgUGFyc2VGbGFnLgotICAgICAgICBcdHBhcmFtIElucHV0U3RyZWFtIFR5cGUgb2YgaW5wdXQg
c3RyZWFtLCBpbXBsZW1lbnRpbmcgU3RyZWFtIGNvbmNlcHQuCi0gICAgICAgIFx0cGFyYW0gSGFu
ZGxlciBUeXBlIG9mIGhhbmRsZXIsIGltcGxlbWVudGluZyBIYW5kbGVyIGNvbmNlcHQuCi0gICAg
ICAgIFxwYXJhbSBpcyBJbnB1dCBzdHJlYW0gdG8gYmUgcGFyc2VkLgotICAgICAgICBccGFyYW0g
aGFuZGxlciBUaGUgaGFuZGxlciB0byByZWNlaXZlIGV2ZW50cy4KLSAgICAgICAgXHJldHVybiBX
aGV0aGVyIHRoZSBwYXJzaW5nIGlzIHN1Y2Nlc3NmdWwuCi0gICAgKi8KLSAgICB0ZW1wbGF0ZSA8
dW5zaWduZWQgcGFyc2VGbGFncywgdHlwZW5hbWUgSW5wdXRTdHJlYW0sIHR5cGVuYW1lIEhhbmRs
ZXI+Ci0gICAgUGFyc2VSZXN1bHQgUGFyc2UoSW5wdXRTdHJlYW0mIGlzLCBIYW5kbGVyJiBoYW5k
bGVyKSB7Ci0gICAgICAgIGlmIChwYXJzZUZsYWdzICYga1BhcnNlSXRlcmF0aXZlRmxhZykKLSAg
ICAgICAgICAgIHJldHVybiBJdGVyYXRpdmVQYXJzZTxwYXJzZUZsYWdzPihpcywgaGFuZGxlcik7
Ci0KLSAgICAgICAgcGFyc2VSZXN1bHRfLkNsZWFyKCk7Ci0KLSAgICAgICAgQ2xlYXJTdGFja09u
RXhpdCBzY29wZSgqdGhpcyk7Ci0KLSAgICAgICAgU2tpcFdoaXRlc3BhY2UoaXMpOwotCi0gICAg
ICAgIGlmIChpcy5QZWVrKCkgPT0gJ1wwJykgewotICAgICAgICAgICAgUkFQSURKU09OX1BBUlNF
X0VSUk9SX05PUkVUVVJOKGtQYXJzZUVycm9yRG9jdW1lbnRFbXB0eSwgaXMuVGVsbCgpKTsKLSAg
ICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUl9FQVJMWV9SRVRVUk4ocGFyc2VSZXN1bHRf
KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFBhcnNlVmFsdWU8cGFy
c2VGbGFncz4oaXMsIGhhbmRsZXIpOwotICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9S
X0VBUkxZX1JFVFVSTihwYXJzZVJlc3VsdF8pOwotCi0gICAgICAgICAgICBpZiAoIShwYXJzZUZs
YWdzICYga1BhcnNlU3RvcFdoZW5Eb25lRmxhZykpIHsKLSAgICAgICAgICAgICAgICBTa2lwV2hp
dGVzcGFjZShpcyk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoaXMuUGVlaygpICE9ICdcMCcpIHsK
LSAgICAgICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SX05PUkVUVVJOKGtQYXJz
ZUVycm9yRG9jdW1lbnRSb290Tm90U2luZ3VsYXIsIGlzLlRlbGwoKSk7Ci0gICAgICAgICAgICAg
ICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUl9FQVJMWV9SRVRVUk4ocGFyc2VSZXN1bHRfKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gcGFyc2VSZXN1bHRfOwotICAgIH0KLQotICAgIC8vISBQYXJzZSBKU09OIHRleHQgKHdp
dGggXHJlZiBrUGFyc2VEZWZhdWx0RmxhZ3MpCi0gICAgLyohIFx0cGFyYW0gSW5wdXRTdHJlYW0g
VHlwZSBvZiBpbnB1dCBzdHJlYW0sIGltcGxlbWVudGluZyBTdHJlYW0gY29uY2VwdAotICAgICAg
ICBcdHBhcmFtIEhhbmRsZXIgVHlwZSBvZiBoYW5kbGVyLCBpbXBsZW1lbnRpbmcgSGFuZGxlciBj
b25jZXB0LgotICAgICAgICBccGFyYW0gaXMgSW5wdXQgc3RyZWFtIHRvIGJlIHBhcnNlZC4KLSAg
ICAgICAgXHBhcmFtIGhhbmRsZXIgVGhlIGhhbmRsZXIgdG8gcmVjZWl2ZSBldmVudHMuCi0gICAg
ICAgIFxyZXR1cm4gV2hldGhlciB0aGUgcGFyc2luZyBpcyBzdWNjZXNzZnVsLgotICAgICovCi0g
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0U3RyZWFtLCB0eXBlbmFtZSBIYW5kbGVyPgotICAg
IFBhcnNlUmVzdWx0IFBhcnNlKElucHV0U3RyZWFtJiBpcywgSGFuZGxlciYgaGFuZGxlcikgewot
ICAgICAgICByZXR1cm4gUGFyc2U8a1BhcnNlRGVmYXVsdEZsYWdzPihpcywgaGFuZGxlcik7Ci0g
ICAgfQotCi0gICAgLy8hIFdoZXRoZXIgYSBwYXJzZSBlcnJvciBoYXMgb2NjdXJlZCBpbiB0aGUg
bGFzdCBwYXJzaW5nLgotICAgIGJvb2wgSGFzUGFyc2VFcnJvcigpIGNvbnN0IHsgcmV0dXJuIHBh
cnNlUmVzdWx0Xy5Jc0Vycm9yKCk7IH0KLSAgICAKLSAgICAvLyEgR2V0IHRoZSBccmVmIFBhcnNl
RXJyb3JDb2RlIG9mIGxhc3QgcGFyc2luZy4KLSAgICBQYXJzZUVycm9yQ29kZSBHZXRQYXJzZUVy
cm9yQ29kZSgpIGNvbnN0IHsgcmV0dXJuIHBhcnNlUmVzdWx0Xy5Db2RlKCk7IH0KLQotICAgIC8v
ISBHZXQgdGhlIHBvc2l0aW9uIG9mIGxhc3QgcGFyc2luZyBlcnJvciBpbiBpbnB1dCwgMCBvdGhl
cndpc2UuCi0gICAgc2l6ZV90IEdldEVycm9yT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gcGFyc2VS
ZXN1bHRfLk9mZnNldCgpOyB9Ci0KLXByb3RlY3RlZDoKLSAgICB2b2lkIFNldFBhcnNlRXJyb3Io
UGFyc2VFcnJvckNvZGUgY29kZSwgc2l6ZV90IG9mZnNldCkgeyBwYXJzZVJlc3VsdF8uU2V0KGNv
ZGUsIG9mZnNldCk7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBQcm9oaWJpdCBjb3B5IGNvbnN0cnVj
dG9yICYgYXNzaWdubWVudCBvcGVyYXRvci4KLSAgICBHZW5lcmljUmVhZGVyKGNvbnN0IEdlbmVy
aWNSZWFkZXImKTsKLSAgICBHZW5lcmljUmVhZGVyJiBvcGVyYXRvcj0oY29uc3QgR2VuZXJpY1Jl
YWRlciYpOwotCi0gICAgdm9pZCBDbGVhclN0YWNrKCkgeyBzdGFja18uQ2xlYXIoKTsgfQotCi0g
ICAgLy8gY2xlYXIgc3RhY2sgb24gYW55IGV4aXQgZnJvbSBQYXJzZVN0cmVhbSwgZS5nLiBkdWUg
dG8gZXhjZXB0aW9uCi0gICAgc3RydWN0IENsZWFyU3RhY2tPbkV4aXQgewotICAgICAgICBleHBs
aWNpdCBDbGVhclN0YWNrT25FeGl0KEdlbmVyaWNSZWFkZXImIHIpIDogcl8ocikge30KLSAgICAg
ICAgfkNsZWFyU3RhY2tPbkV4aXQoKSB7IHJfLkNsZWFyU3RhY2soKTsgfQotICAgIHByaXZhdGU6
Ci0gICAgICAgIEdlbmVyaWNSZWFkZXImIHJfOwotICAgICAgICBDbGVhclN0YWNrT25FeGl0KGNv
bnN0IENsZWFyU3RhY2tPbkV4aXQmKTsKLSAgICAgICAgQ2xlYXJTdGFja09uRXhpdCYgb3BlcmF0
b3I9KGNvbnN0IENsZWFyU3RhY2tPbkV4aXQmKTsKLSAgICB9OwotCi0gICAgLy8gUGFyc2Ugb2Jq
ZWN0OiB7IHN0cmluZyA6IHZhbHVlLCAuLi4gfQotICAgIHRlbXBsYXRlPHVuc2lnbmVkIHBhcnNl
RmxhZ3MsIHR5cGVuYW1lIElucHV0U3RyZWFtLCB0eXBlbmFtZSBIYW5kbGVyPgotICAgIHZvaWQg
UGFyc2VPYmplY3QoSW5wdXRTdHJlYW0mIGlzLCBIYW5kbGVyJiBoYW5kbGVyKSB7Ci0gICAgICAg
IFJBUElESlNPTl9BU1NFUlQoaXMuUGVlaygpID09ICd7Jyk7Ci0gICAgICAgIGlzLlRha2UoKTsg
IC8vIFNraXAgJ3snCi0gICAgICAgIAotICAgICAgICBpZiAoIWhhbmRsZXIuU3RhcnRPYmplY3Qo
KSkKLSAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvclRlcm1pbmF0
aW9uLCBpcy5UZWxsKCkpOwotCi0gICAgICAgIFNraXBXaGl0ZXNwYWNlKGlzKTsKLQotICAgICAg
ICBpZiAoaXMuUGVlaygpID09ICd9JykgewotICAgICAgICAgICAgaXMuVGFrZSgpOwotICAgICAg
ICAgICAgaWYgKCFoYW5kbGVyLkVuZE9iamVjdCgwKSkgIC8vIGVtcHR5IG9iamVjdAotICAgICAg
ICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvclRlcm1pbmF0aW9uLCBp
cy5UZWxsKCkpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9y
IChTaXplVHlwZSBtZW1iZXJDb3VudCA9IDA7OykgewotICAgICAgICAgICAgaWYgKGlzLlBlZWso
KSAhPSAnIicpCi0gICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVy
cm9yT2JqZWN0TWlzc05hbWUsIGlzLlRlbGwoKSk7Ci0KLSAgICAgICAgICAgIFBhcnNlU3RyaW5n
PHBhcnNlRmxhZ3M+KGlzLCBoYW5kbGVyLCB0cnVlKTsKLSAgICAgICAgICAgIFJBUElESlNPTl9Q
QVJTRV9FUlJPUl9FQVJMWV9SRVRVUk5fVk9JRDsKLQotICAgICAgICAgICAgU2tpcFdoaXRlc3Bh
Y2UoaXMpOwotCi0gICAgICAgICAgICBpZiAoaXMuVGFrZSgpICE9ICc6JykKLSAgICAgICAgICAg
ICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JPYmplY3RNaXNzQ29sb24sIGlz
LlRlbGwoKSk7Ci0KLSAgICAgICAgICAgIFNraXBXaGl0ZXNwYWNlKGlzKTsKLQotICAgICAgICAg
ICAgUGFyc2VWYWx1ZTxwYXJzZUZsYWdzPihpcywgaGFuZGxlcik7Ci0gICAgICAgICAgICBSQVBJ
REpTT05fUEFSU0VfRVJST1JfRUFSTFlfUkVUVVJOX1ZPSUQ7Ci0KLSAgICAgICAgICAgIFNraXBX
aGl0ZXNwYWNlKGlzKTsKLQotICAgICAgICAgICAgKyttZW1iZXJDb3VudDsKLQotICAgICAgICAg
ICAgc3dpdGNoIChpcy5UYWtlKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlICcsJzogU2tpcFdo
aXRlc3BhY2UoaXMpOyBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICd9JzogCi0gICAgICAg
ICAgICAgICAgICAgIGlmICghaGFuZGxlci5FbmRPYmplY3QobWVtYmVyQ291bnQpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yVGVybWlu
YXRpb24sIGlzLlRlbGwoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgICAgICBkZWZhdWx0OiAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yT2JqZWN0
TWlzc0NvbW1hT3JDdXJseUJyYWNrZXQsIGlzLlRlbGwoKSk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICAvLyBQYXJzZSBhcnJheTogWyB2YWx1ZSwgLi4uIF0KLSAgICB0
ZW1wbGF0ZTx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBJbnB1dFN0cmVhbSwgdHlwZW5h
bWUgSGFuZGxlcj4KLSAgICB2b2lkIFBhcnNlQXJyYXkoSW5wdXRTdHJlYW0mIGlzLCBIYW5kbGVy
JiBoYW5kbGVyKSB7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoaXMuUGVlaygpID09ICdbJyk7
Ci0gICAgICAgIGlzLlRha2UoKTsgIC8vIFNraXAgJ1snCi0gICAgICAgIAotICAgICAgICBpZiAo
IWhhbmRsZXIuU3RhcnRBcnJheSgpKQotICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9S
KGtQYXJzZUVycm9yVGVybWluYXRpb24sIGlzLlRlbGwoKSk7Ci0gICAgICAgIAotICAgICAgICBT
a2lwV2hpdGVzcGFjZShpcyk7Ci0KLSAgICAgICAgaWYgKGlzLlBlZWsoKSA9PSAnXScpIHsKLSAg
ICAgICAgICAgIGlzLlRha2UoKTsKLSAgICAgICAgICAgIGlmICghaGFuZGxlci5FbmRBcnJheSgw
KSkgLy8gZW1wdHkgYXJyYXkKLSAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Io
a1BhcnNlRXJyb3JUZXJtaW5hdGlvbiwgaXMuVGVsbCgpKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIGZvciAoU2l6ZVR5cGUgZWxlbWVudENvdW50ID0gMDs7KSB7
Ci0gICAgICAgICAgICBQYXJzZVZhbHVlPHBhcnNlRmxhZ3M+KGlzLCBoYW5kbGVyKTsKLSAgICAg
ICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUl9FQVJMWV9SRVRVUk5fVk9JRDsKLQotICAgICAg
ICAgICAgKytlbGVtZW50Q291bnQ7Ci0gICAgICAgICAgICBTa2lwV2hpdGVzcGFjZShpcyk7Ci0K
LSAgICAgICAgICAgIHN3aXRjaCAoaXMuVGFrZSgpKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAn
LCc6IFNraXBXaGl0ZXNwYWNlKGlzKTsgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSAnXSc6
IAotICAgICAgICAgICAgICAgICAgICBpZiAoIWhhbmRsZXIuRW5kQXJyYXkoZWxlbWVudENvdW50
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VF
cnJvclRlcm1pbmF0aW9uLCBpcy5UZWxsKCkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDogIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VF
cnJvckFycmF5TWlzc0NvbW1hT3JTcXVhcmVCcmFja2V0LCBpcy5UZWxsKCkpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dW5zaWduZWQgcGFyc2VGbGFn
cywgdHlwZW5hbWUgSW5wdXRTdHJlYW0sIHR5cGVuYW1lIEhhbmRsZXI+Ci0gICAgdm9pZCBQYXJz
ZU51bGwoSW5wdXRTdHJlYW0mIGlzLCBIYW5kbGVyJiBoYW5kbGVyKSB7Ci0gICAgICAgIFJBUElE
SlNPTl9BU1NFUlQoaXMuUGVlaygpID09ICduJyk7Ci0gICAgICAgIGlzLlRha2UoKTsKLQotICAg
ICAgICBpZiAoaXMuVGFrZSgpID09ICd1JyAmJiBpcy5UYWtlKCkgPT0gJ2wnICYmIGlzLlRha2Uo
KSA9PSAnbCcpIHsKLSAgICAgICAgICAgIGlmICghaGFuZGxlci5OdWxsKCkpCi0gICAgICAgICAg
ICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yVGVybWluYXRpb24sIGlzLlRl
bGwoKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgUkFQSURKU09OX1BB
UlNFX0VSUk9SKGtQYXJzZUVycm9yVmFsdWVJbnZhbGlkLCBpcy5UZWxsKCkgLSAxKTsKLSAgICB9
Ci0KLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBJbnB1dFN0cmVh
bSwgdHlwZW5hbWUgSGFuZGxlcj4KLSAgICB2b2lkIFBhcnNlVHJ1ZShJbnB1dFN0cmVhbSYgaXMs
IEhhbmRsZXImIGhhbmRsZXIpIHsKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVChpcy5QZWVrKCkg
PT0gJ3QnKTsKLSAgICAgICAgaXMuVGFrZSgpOwotCi0gICAgICAgIGlmIChpcy5UYWtlKCkgPT0g
J3InICYmIGlzLlRha2UoKSA9PSAndScgJiYgaXMuVGFrZSgpID09ICdlJykgewotICAgICAgICAg
ICAgaWYgKCFoYW5kbGVyLkJvb2wodHJ1ZSkpCi0gICAgICAgICAgICAgICAgUkFQSURKU09OX1BB
UlNFX0VSUk9SKGtQYXJzZUVycm9yVGVybWluYXRpb24sIGlzLlRlbGwoKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVy
cm9yVmFsdWVJbnZhbGlkLCBpcy5UZWxsKCkgLSAxKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx1
bnNpZ25lZCBwYXJzZUZsYWdzLCB0eXBlbmFtZSBJbnB1dFN0cmVhbSwgdHlwZW5hbWUgSGFuZGxl
cj4KLSAgICB2b2lkIFBhcnNlRmFsc2UoSW5wdXRTdHJlYW0mIGlzLCBIYW5kbGVyJiBoYW5kbGVy
KSB7Ci0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoaXMuUGVlaygpID09ICdmJyk7Ci0gICAgICAg
IGlzLlRha2UoKTsKLQotICAgICAgICBpZiAoaXMuVGFrZSgpID09ICdhJyAmJiBpcy5UYWtlKCkg
PT0gJ2wnICYmIGlzLlRha2UoKSA9PSAncycgJiYgaXMuVGFrZSgpID09ICdlJykgewotICAgICAg
ICAgICAgaWYgKCFoYW5kbGVyLkJvb2woZmFsc2UpKQotICAgICAgICAgICAgICAgIFJBUElESlNP
Tl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvclRlcm1pbmF0aW9uLCBpcy5UZWxsKCkpOwotICAgICAg
ICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFy
c2VFcnJvclZhbHVlSW52YWxpZCwgaXMuVGVsbCgpIC0gMSk7Ci0gICAgfQotCi0gICAgLy8gSGVs
cGVyIGZ1bmN0aW9uIHRvIHBhcnNlIGZvdXIgaGV4aWRlY2ltYWwgZGlnaXRzIGluIFx1WFhYWCBp
biBQYXJzZVN0cmluZygpLgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0U3RyZWFtPgotICAg
IHVuc2lnbmVkIFBhcnNlSGV4NChJbnB1dFN0cmVhbSYgaXMpIHsKLSAgICAgICAgdW5zaWduZWQg
Y29kZXBvaW50ID0gMDsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKLSAg
ICAgICAgICAgIENoIGMgPSBpcy5UYWtlKCk7Ci0gICAgICAgICAgICBjb2RlcG9pbnQgPDw9IDQ7
Ci0gICAgICAgICAgICBjb2RlcG9pbnQgKz0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGMpOwotICAg
ICAgICAgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKQotICAgICAgICAgICAgICAgIGNvZGVw
b2ludCAtPSAnMCc7Ci0gICAgICAgICAgICBlbHNlIGlmIChjID49ICdBJyAmJiBjIDw9ICdGJykK
LSAgICAgICAgICAgICAgICBjb2RlcG9pbnQgLT0gJ0EnIC0gMTA7Ci0gICAgICAgICAgICBlbHNl
IGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykKLSAgICAgICAgICAgICAgICBjb2RlcG9pbnQgLT0g
J2EnIC0gMTA7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBSQVBJREpTT05f
UEFSU0VfRVJST1JfTk9SRVRVUk4oa1BhcnNlRXJyb3JTdHJpbmdVbmljb2RlRXNjYXBlSW52YWxp
ZEhleCwgaXMuVGVsbCgpIC0gMSk7Ci0gICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VS
Uk9SX0VBUkxZX1JFVFVSTigwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gY29kZXBvaW50OwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlw
ZT4KLSAgICBjbGFzcyBTdGFja1N0cmVhbSB7Ci0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVm
IENoYXJUeXBlIENoOwotCi0gICAgICAgIFN0YWNrU3RyZWFtKGludGVybmFsOjpTdGFjazxTdGFj
a0FsbG9jYXRvcj4mIHN0YWNrKSA6IHN0YWNrXyhzdGFjayksIGxlbmd0aF8oMCkge30KLSAgICAg
ICAgUkFQSURKU09OX0ZPUkNFSU5MSU5FIHZvaWQgUHV0KENoIGMpIHsKLSAgICAgICAgICAgICpz
dGFja18udGVtcGxhdGUgUHVzaDxDaD4oKSA9IGM7Ci0gICAgICAgICAgICArK2xlbmd0aF87Ci0g
ICAgICAgIH0KLSAgICAgICAgc2l6ZV90IExlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIGxlbmd0aF87
IH0KLSAgICAgICAgQ2gqIFBvcCgpIHsKLSAgICAgICAgICAgIHJldHVybiBzdGFja18udGVtcGxh
dGUgUG9wPENoPihsZW5ndGhfKTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
U3RhY2tTdHJlYW0oY29uc3QgU3RhY2tTdHJlYW0mKTsKLSAgICAgICAgU3RhY2tTdHJlYW0mIG9w
ZXJhdG9yPShjb25zdCBTdGFja1N0cmVhbSYpOwotCi0gICAgICAgIGludGVybmFsOjpTdGFjazxT
dGFja0FsbG9jYXRvcj4mIHN0YWNrXzsKLSAgICAgICAgU2l6ZVR5cGUgbGVuZ3RoXzsKLSAgICB9
OwotCi0gICAgLy8gUGFyc2Ugc3RyaW5nIGFuZCBnZW5lcmF0ZSBTdHJpbmcgZXZlbnQuIERpZmZl
cmVudCBjb2RlIHBhdGhzIGZvciBrUGFyc2VJbnNpdHVGbGFnLgotICAgIHRlbXBsYXRlPHVuc2ln
bmVkIHBhcnNlRmxhZ3MsIHR5cGVuYW1lIElucHV0U3RyZWFtLCB0eXBlbmFtZSBIYW5kbGVyPgot
ICAgIHZvaWQgUGFyc2VTdHJpbmcoSW5wdXRTdHJlYW0mIGlzLCBIYW5kbGVyJiBoYW5kbGVyLCBi
b29sIGlzS2V5ID0gZmFsc2UpIHsKLSAgICAgICAgaW50ZXJuYWw6OlN0cmVhbUxvY2FsQ29weTxJ
bnB1dFN0cmVhbT4gY29weShpcyk7Ci0gICAgICAgIElucHV0U3RyZWFtJiBzKGNvcHkucyk7Ci0K
LSAgICAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0gICAgICAgIGlmIChwYXJzZUZsYWdzICYg
a1BhcnNlSW5zaXR1RmxhZykgewotICAgICAgICAgICAgdHlwZW5hbWUgSW5wdXRTdHJlYW06OkNo
ICpoZWFkID0gcy5QdXRCZWdpbigpOwotICAgICAgICAgICAgUGFyc2VTdHJpbmdUb1N0cmVhbTxw
YXJzZUZsYWdzLCBTb3VyY2VFbmNvZGluZywgU291cmNlRW5jb2Rpbmc+KHMsIHMpOwotICAgICAg
ICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SX0VBUkxZX1JFVFVSTl9WT0lEOwotICAgICAgICAg
ICAgc2l6ZV90IGxlbmd0aCA9IHMuUHV0RW5kKGhlYWQpIC0gMTsKLSAgICAgICAgICAgIFJBUElE
SlNPTl9BU1NFUlQobGVuZ3RoIDw9IDB4RkZGRkZGRkYpOwotICAgICAgICAgICAgY29uc3QgdHlw
ZW5hbWUgVGFyZ2V0RW5jb2Rpbmc6OkNoKiBjb25zdCBzdHIgPSAodHlwZW5hbWUgVGFyZ2V0RW5j
b2Rpbmc6OkNoKiloZWFkOwotICAgICAgICAgICAgc3VjY2VzcyA9IChpc0tleSA/IGhhbmRsZXIu
S2V5KHN0ciwgU2l6ZVR5cGUobGVuZ3RoKSwgZmFsc2UpIDogaGFuZGxlci5TdHJpbmcoc3RyLCBT
aXplVHlwZShsZW5ndGgpLCBmYWxzZSkpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgU3RhY2tTdHJlYW08dHlwZW5hbWUgVGFyZ2V0RW5jb2Rpbmc6OkNoPiBzdGFja1N0
cmVhbShzdGFja18pOwotICAgICAgICAgICAgUGFyc2VTdHJpbmdUb1N0cmVhbTxwYXJzZUZsYWdz
LCBTb3VyY2VFbmNvZGluZywgVGFyZ2V0RW5jb2Rpbmc+KHMsIHN0YWNrU3RyZWFtKTsKLSAgICAg
ICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUl9FQVJMWV9SRVRVUk5fVk9JRDsKLSAgICAgICAg
ICAgIFNpemVUeXBlIGxlbmd0aCA9IHN0YXRpY19jYXN0PFNpemVUeXBlPihzdGFja1N0cmVhbS5M
ZW5ndGgoKSkgLSAxOwotICAgICAgICAgICAgY29uc3QgdHlwZW5hbWUgVGFyZ2V0RW5jb2Rpbmc6
OkNoKiBjb25zdCBzdHIgPSBzdGFja1N0cmVhbS5Qb3AoKTsKLSAgICAgICAgICAgIHN1Y2Nlc3Mg
PSAoaXNLZXkgPyBoYW5kbGVyLktleShzdHIsIGxlbmd0aCwgdHJ1ZSkgOiBoYW5kbGVyLlN0cmlu
ZyhzdHIsIGxlbmd0aCwgdHJ1ZSkpOwotICAgICAgICB9Ci0gICAgICAgIGlmICghc3VjY2VzcykK
LSAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvclRlcm1pbmF0aW9u
LCBzLlRlbGwoKSk7Ci0gICAgfQotCi0gICAgLy8gUGFyc2Ugc3RyaW5nIHRvIGFuIG91dHB1dCBp
cwotICAgIC8vIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgcHJlZml4L3N1ZmZpeCBkb3VibGUg
cXVvdGVzLCBlc2NhcGluZywgYW5kIG9wdGlvbmFsIGVuY29kaW5nIHZhbGlkYXRpb24uCi0gICAg
dGVtcGxhdGU8dW5zaWduZWQgcGFyc2VGbGFncywgdHlwZW5hbWUgU0VuY29kaW5nLCB0eXBlbmFt
ZSBURW5jb2RpbmcsIHR5cGVuYW1lIElucHV0U3RyZWFtLCB0eXBlbmFtZSBPdXRwdXRTdHJlYW0+
Ci0gICAgUkFQSURKU09OX0ZPUkNFSU5MSU5FIHZvaWQgUGFyc2VTdHJpbmdUb1N0cmVhbShJbnB1
dFN0cmVhbSYgaXMsIE91dHB1dFN0cmVhbSYgb3MpIHsKLS8vIUBjb25kIFJBUElESlNPTl9ISURE
RU5fRlJPTV9ET1hZR0VOCi0jZGVmaW5lIFoxNiAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAs
MCwwCi0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGVzY2FwZVsyNTZdID0gewotICAgICAgICAg
ICAgWjE2LCBaMTYsIDAsIDAsJ1wiJywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwnLycsIAotICAgICAgICAgICAgWjE2LCBaMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsJ1xcJywgMCwgMCwgMCwgCi0gICAgICAgICAgICAwLCAwLCdcYicsIDAsIDAsIDAs
J1xmJywgMCwgMCwgMCwgMCwgMCwgMCwgMCwnXG4nLCAwLCAKLSAgICAgICAgICAgIDAsIDAsJ1xy
JywgMCwnXHQnLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAgICAgICAg
IFoxNiwgWjE2LCBaMTYsIFoxNiwgWjE2LCBaMTYsIFoxNiwgWjE2Ci0gICAgICAgIH07Ci0jdW5k
ZWYgWjE2Ci0vLyFAZW5kY29uZAotCi0gICAgICAgIFJBUElESlNPTl9BU1NFUlQoaXMuUGVlaygp
ID09ICdcIicpOwotICAgICAgICBpcy5UYWtlKCk7ICAvLyBTa2lwICdcIicKLQotICAgICAgICBm
b3IgKDs7KSB7Ci0gICAgICAgICAgICBDaCBjID0gaXMuUGVlaygpOwotICAgICAgICAgICAgaWYg
KGMgPT0gJ1xcJykgeyAgICAvLyBFc2NhcGUKLSAgICAgICAgICAgICAgICBpcy5UYWtlKCk7Ci0g
ICAgICAgICAgICAgICAgQ2ggZSA9IGlzLlRha2UoKTsKLSAgICAgICAgICAgICAgICBpZiAoKHNp
emVvZihDaCkgPT0gMSB8fCB1bnNpZ25lZChlKSA8IDI1NikgJiYgZXNjYXBlWyh1bnNpZ25lZCBj
aGFyKWVdKSB7Ci0gICAgICAgICAgICAgICAgICAgIG9zLlB1dChlc2NhcGVbKHVuc2lnbmVkIGNo
YXIpZV0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChlID09
ICd1JykgeyAgICAvLyBVbmljb2RlCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNvZGVw
b2ludCA9IFBhcnNlSGV4NChpcyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjb2RlcG9pbnQg
Pj0gMHhEODAwICYmIGNvZGVwb2ludCA8PSAweERCRkYpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIEhhbmRsZSBVVEYtMTYgc3Vycm9nYXRlIHBhaXIKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpcy5UYWtlKCkgIT0gJ1xcJyB8fCBpcy5UYWtlKCkgIT0gJ3UnKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvclN0cmlu
Z1VuaWNvZGVTdXJyb2dhdGVJbnZhbGlkLCBpcy5UZWxsKCkgLSAyKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGNvZGVwb2ludDIgPSBQYXJzZUhleDQoaXMpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGNvZGVwb2ludDIgPCAweERDMDAgfHwgY29kZXBvaW50MiA+IDB4
REZGRikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Io
a1BhcnNlRXJyb3JTdHJpbmdVbmljb2RlU3Vycm9nYXRlSW52YWxpZCwgaXMuVGVsbCgpIC0gMik7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb2RlcG9pbnQgPSAoKChjb2RlcG9pbnQgLSAweEQ4
MDApIDw8IDEwKSB8IChjb2RlcG9pbnQyIC0gMHhEQzAwKSkgKyAweDEwMDAwOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIFRFbmNvZGluZzo6RW5jb2RlKG9zLCBj
b2RlcG9pbnQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvclN0cmluZ0Vz
Y2FwZUludmFsaWQsIGlzLlRlbGwoKSAtIDEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
ZWxzZSBpZiAoYyA9PSAnIicpIHsgICAgLy8gQ2xvc2luZyBkb3VibGUgcXVvdGUKLSAgICAgICAg
ICAgICAgICBpcy5UYWtlKCk7Ci0gICAgICAgICAgICAgICAgb3MuUHV0KCdcMCcpOyAgIC8vIG51
bGwtdGVybWluYXRlIHRoZSBzdHJpbmcKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09ICdcMCcpCi0gICAgICAgICAgICAgICAg
UkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yU3RyaW5nTWlzc1F1b3RhdGlvbk1hcmss
IGlzLlRlbGwoKSAtIDEpOwotICAgICAgICAgICAgZWxzZSBpZiAoKHVuc2lnbmVkKWMgPCAweDIw
KSAvLyBSRkMgNDYyNzogdW5lc2NhcGVkID0gJXgyMC0yMSAvICV4MjMtNUIgLyAleDVELTEwRkZG
RgotICAgICAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvclN0cmlu
Z0VzY2FwZUludmFsaWQsIGlzLlRlbGwoKSAtIDEpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHBhcnNlRmxhZ3MgJiBrUGFyc2VWYWxpZGF0ZUVuY29kaW5nRmxhZyA/
IAotICAgICAgICAgICAgICAgICAgICAhVHJhbnNjb2RlcjxTRW5jb2RpbmcsIFRFbmNvZGluZz46
OlZhbGlkYXRlKGlzLCBvcykgOiAKLSAgICAgICAgICAgICAgICAgICAgIVRyYW5zY29kZXI8U0Vu
Y29kaW5nLCBURW5jb2Rpbmc+OjpUcmFuc2NvZGUoaXMsIG9zKSkKLSAgICAgICAgICAgICAgICAg
ICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yU3RyaW5nSW52YWxpZEVuY29kaW5n
LCBpcy5UZWxsKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVt
cGxhdGU8dHlwZW5hbWUgSW5wdXRTdHJlYW0sIGJvb2wgYmFja3VwPgotICAgIGNsYXNzIE51bWJl
clN0cmVhbSB7fTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIElucHV0U3RyZWFtPgotICAgIGNs
YXNzIE51bWJlclN0cmVhbTxJbnB1dFN0cmVhbSwgZmFsc2U+IHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIE51bWJlclN0cmVhbShHZW5lcmljUmVhZGVyJiByZWFkZXIsIElucHV0U3RyZWFtJiBpcykg
OiBpcyhpcykgeyAodm9pZClyZWFkZXI7ICB9Ci0gICAgICAgIH5OdW1iZXJTdHJlYW0oKSB7fQot
Ci0gICAgICAgIFJBUElESlNPTl9GT1JDRUlOTElORSBDaCBQZWVrKCkgY29uc3QgeyByZXR1cm4g
aXMuUGVlaygpOyB9Ci0gICAgICAgIFJBUElESlNPTl9GT1JDRUlOTElORSBDaCBUYWtlUHVzaCgp
IHsgcmV0dXJuIGlzLlRha2UoKTsgfQotICAgICAgICBSQVBJREpTT05fRk9SQ0VJTkxJTkUgQ2gg
VGFrZSgpIHsgcmV0dXJuIGlzLlRha2UoKTsgfQotICAgICAgICBzaXplX3QgVGVsbCgpIHsgcmV0
dXJuIGlzLlRlbGwoKTsgfQotICAgICAgICBzaXplX3QgTGVuZ3RoKCkgeyByZXR1cm4gMDsgfQot
ICAgICAgICBjb25zdCBjaGFyKiBQb3AoKSB7IHJldHVybiAwOyB9Ci0KLSAgICBwcm90ZWN0ZWQ6
Ci0gICAgICAgIE51bWJlclN0cmVhbSYgb3BlcmF0b3I9KGNvbnN0IE51bWJlclN0cmVhbSYpOwot
Ci0gICAgICAgIElucHV0U3RyZWFtJiBpczsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5h
bWUgSW5wdXRTdHJlYW0+Ci0gICAgY2xhc3MgTnVtYmVyU3RyZWFtPElucHV0U3RyZWFtLCB0cnVl
PiA6IHB1YmxpYyBOdW1iZXJTdHJlYW08SW5wdXRTdHJlYW0sIGZhbHNlPiB7Ci0gICAgICAgIHR5
cGVkZWYgTnVtYmVyU3RyZWFtPElucHV0U3RyZWFtLCBmYWxzZT4gQmFzZTsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIE51bWJlclN0cmVhbShHZW5lcmljUmVhZGVyJiByZWFkZXIsIElucHV0U3RyZWFt
JiBpcykgOiBOdW1iZXJTdHJlYW08SW5wdXRTdHJlYW0sIGZhbHNlPihyZWFkZXIsIGlzKSwgc3Rh
Y2tTdHJlYW0ocmVhZGVyLnN0YWNrXykge30KLSAgICAgICAgfk51bWJlclN0cmVhbSgpIHt9Ci0K
LSAgICAgICAgUkFQSURKU09OX0ZPUkNFSU5MSU5FIENoIFRha2VQdXNoKCkgewotICAgICAgICAg
ICAgc3RhY2tTdHJlYW0uUHV0KChjaGFyKUJhc2U6OmlzLlBlZWsoKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gQmFzZTo6aXMuVGFrZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90IExlbmd0
aCgpIHsgcmV0dXJuIHN0YWNrU3RyZWFtLkxlbmd0aCgpOyB9Ci0KLSAgICAgICAgY29uc3QgY2hh
ciogUG9wKCkgewotICAgICAgICAgICAgc3RhY2tTdHJlYW0uUHV0KCdcMCcpOwotICAgICAgICAg
ICAgcmV0dXJuIHN0YWNrU3RyZWFtLlBvcCgpOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgot
ICAgICAgICBTdGFja1N0cmVhbTxjaGFyPiBzdGFja1N0cmVhbTsKLSAgICB9OwotCi0gICAgdGVt
cGxhdGU8dW5zaWduZWQgcGFyc2VGbGFncywgdHlwZW5hbWUgSW5wdXRTdHJlYW0sIHR5cGVuYW1l
IEhhbmRsZXI+Ci0gICAgdm9pZCBQYXJzZU51bWJlcihJbnB1dFN0cmVhbSYgaXMsIEhhbmRsZXIm
IGhhbmRsZXIpIHsKLSAgICAgICAgaW50ZXJuYWw6OlN0cmVhbUxvY2FsQ29weTxJbnB1dFN0cmVh
bT4gY29weShpcyk7Ci0gICAgICAgIE51bWJlclN0cmVhbTxJbnB1dFN0cmVhbSwgKHBhcnNlRmxh
Z3MgJiBrUGFyc2VGdWxsUHJlY2lzaW9uRmxhZykgIT0gMD4gcygqdGhpcywgY29weS5zKTsKLQot
ICAgICAgICAvLyBQYXJzZSBtaW51cwotICAgICAgICBib29sIG1pbnVzID0gZmFsc2U7Ci0gICAg
ICAgIGlmIChzLlBlZWsoKSA9PSAnLScpIHsKLSAgICAgICAgICAgIG1pbnVzID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHMuVGFrZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUGFyc2UgaW50OiB6
ZXJvIC8gKCBkaWdpdDEtOSAqRElHSVQgKQotICAgICAgICB1bnNpZ25lZCBpID0gMDsKLSAgICAg
ICAgdWludDY0X3QgaTY0ID0gMDsKLSAgICAgICAgYm9vbCB1c2U2NGJpdCA9IGZhbHNlOwotICAg
ICAgICBpbnQgc2lnbmlmaWNhbmREaWdpdCA9IDA7Ci0gICAgICAgIGlmIChzLlBlZWsoKSA9PSAn
MCcpIHsKLSAgICAgICAgICAgIGkgPSAwOwotICAgICAgICAgICAgcy5UYWtlUHVzaCgpOwotICAg
ICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHMuUGVlaygpID49ICcxJyAmJiBzLlBlZWsoKSA8PSAn
OScpIHsKLSAgICAgICAgICAgIGkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy5UYWtlUHVzaCgp
IC0gJzAnKTsKLQotICAgICAgICAgICAgaWYgKG1pbnVzKQotICAgICAgICAgICAgICAgIHdoaWxl
IChzLlBlZWsoKSA+PSAnMCcgJiYgcy5QZWVrKCkgPD0gJzknKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChpID49IDIxNDc0ODM2NCkgeyAvLyAyXjMxID0gMjE0NzQ4MzY0OAotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKGkgIT0gMjE0NzQ4MzY0IHx8IHMuUGVlaygpID4gJzgnKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaTY0ID0gaTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1c2U2NGJpdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgaSA9IGkgKiAxMCArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzLlRh
a2VQdXNoKCkgLSAnMCcpOwotICAgICAgICAgICAgICAgICAgICBzaWduaWZpY2FuZERpZ2l0Kys7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHdo
aWxlIChzLlBlZWsoKSA+PSAnMCcgJiYgcy5QZWVrKCkgPD0gJzknKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChpID49IDQyOTQ5NjcyOSkgeyAvLyAyXjMyIC0gMSA9IDQyOTQ5NjcyOTUKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpICE9IDQyOTQ5NjcyOSB8fCBzLlBlZWsoKSA+ICc1
JykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk2NCA9IGk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdXNlNjRiaXQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgIGkgPSBpICogMTAgKyBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocy5UYWtlUHVzaCgpIC0gJzAnKTsKLSAgICAgICAgICAgICAgICAgICAgc2lnbmlmaWNhbmRE
aWdpdCsrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JWYWx1ZUludmFsaWQsIHMu
VGVsbCgpKTsKLQotICAgICAgICAvLyBQYXJzZSA2NGJpdCBpbnQKLSAgICAgICAgYm9vbCB1c2VE
b3VibGUgPSBmYWxzZTsKLSAgICAgICAgZG91YmxlIGQgPSAwLjA7Ci0gICAgICAgIGlmICh1c2U2
NGJpdCkgewotICAgICAgICAgICAgaWYgKG1pbnVzKSAKLSAgICAgICAgICAgICAgICB3aGlsZSAo
cy5QZWVrKCkgPj0gJzAnICYmIHMuUGVlaygpIDw9ICc5JykgeyAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgICBpZiAoaTY0ID49IFJBUElESlNPTl9VSU5UNjRfQzIoMHgw
Q0NDQ0NDQywgMHhDQ0NDQ0NDQykpIC8vIDJeNjMgPSA5MjIzMzcyMDM2ODU0Nzc1ODA4Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaTY0ICE9IFJBUElESlNPTl9VSU5UNjRfQzIoMHgwQ0ND
Q0NDQywgMHhDQ0NDQ0NDQykgfHwgcy5QZWVrKCkgPiAnOCcpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkID0gaTY0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZURvdWJs
ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGk2NCA9IGk2NCAqIDEwICsgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHMuVGFrZVB1c2goKSAtICcwJyk7Ci0gICAgICAgICAgICAgICAg
ICAgIHNpZ25pZmljYW5kRGlnaXQrKzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgd2hpbGUgKHMuUGVlaygpID49ICcwJyAmJiBzLlBlZWsoKSA8
PSAnOScpIHsgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAoaTY0
ID49IFJBUElESlNPTl9VSU5UNjRfQzIoMHgxOTk5OTk5OSwgMHg5OTk5OTk5OSkpIC8vIDJeNjQg
LSAxID0gMTg0NDY3NDQwNzM3MDk1NTE2MTUKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
NjQgIT0gUkFQSURKU09OX1VJTlQ2NF9DMigweDE5OTk5OTk5LCAweDk5OTk5OTk5KSB8fCBzLlBl
ZWsoKSA+ICc1JykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBpNjQ7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXNlRG91YmxlID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgaTY0ID0gaTY0ICogMTAgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocy5UYWtl
UHVzaCgpIC0gJzAnKTsKLSAgICAgICAgICAgICAgICAgICAgc2lnbmlmaWNhbmREaWdpdCsrOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZvcmNlIGRvdWJsZSBm
b3IgYmlnIGludGVnZXIKLSAgICAgICAgaWYgKHVzZURvdWJsZSkgewotICAgICAgICAgICAgd2hp
bGUgKHMuUGVlaygpID49ICcwJyAmJiBzLlBlZWsoKSA8PSAnOScpIHsKLSAgICAgICAgICAgICAg
ICBpZiAoZCA+PSAxLjc5NzY5MzEzNDg2MjMxNTdlMzA3KSAvLyBEQkxfTUFYIC8gMTAuMAotICAg
ICAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JOdW1iZXJU
b29CaWcsIHMuVGVsbCgpKTsKLSAgICAgICAgICAgICAgICBkID0gZCAqIDEwICsgKHMuVGFrZVB1
c2goKSAtICcwJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBQYXJz
ZSBmcmFjID0gZGVjaW1hbC1wb2ludCAxKkRJR0lUCi0gICAgICAgIGludCBleHBGcmFjID0gMDsK
LSAgICAgICAgc2l6ZV90IGRlY2ltYWxQb3NpdGlvbjsKLSAgICAgICAgaWYgKHMuUGVlaygpID09
ICcuJykgewotICAgICAgICAgICAgcy5UYWtlKCk7Ci0gICAgICAgICAgICBkZWNpbWFsUG9zaXRp
b24gPSBzLkxlbmd0aCgpOwotCi0gICAgICAgICAgICBpZiAoIShzLlBlZWsoKSA+PSAnMCcgJiYg
cy5QZWVrKCkgPD0gJzknKSkKLSAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Io
a1BhcnNlRXJyb3JOdW1iZXJNaXNzRnJhY3Rpb24sIHMuVGVsbCgpKTsKLQotICAgICAgICAgICAg
aWYgKCF1c2VEb3VibGUpIHsKLSNpZiBSQVBJREpTT05fNjRCSVQKLSAgICAgICAgICAgICAgICAv
LyBVc2UgaTY0IHRvIHN0b3JlIHNpZ25pZmljYW5kIGluIDY0LWJpdCBhcmNoaXRlY3R1cmUKLSAg
ICAgICAgICAgICAgICBpZiAoIXVzZTY0Yml0KQotICAgICAgICAgICAgICAgICAgICBpNjQgPSBp
OwotICAgICAgICAKLSAgICAgICAgICAgICAgICB3aGlsZSAocy5QZWVrKCkgPj0gJzAnICYmIHMu
UGVlaygpIDw9ICc5JykgewotICAgICAgICAgICAgICAgICAgICBpZiAoaTY0ID4gUkFQSURKU09O
X1VJTlQ2NF9DMigweDFGRkZGRiwgMHhGRkZGRkZGRikpIC8vIDJeNTMgLSAxIGZvciBmYXN0IHBh
dGgKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGk2NCA9IGk2NCAqIDEwICsgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHMuVGFrZVB1c2goKSAtICcwJyk7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAtLWV4cEZyYWM7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaTY0ICE9IDApCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmlmaWNhbmREaWdpdCsrOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgZCA9IChkb3Vi
bGUpaTY0OwotI2Vsc2UKLSAgICAgICAgICAgICAgICAvLyBVc2UgZG91YmxlIHRvIHN0b3JlIHNp
Z25pZmljYW5kIGluIDMyLWJpdCBhcmNoaXRlY3R1cmUKLSAgICAgICAgICAgICAgICBkID0gdXNl
NjRiaXQgPyAoZG91YmxlKWk2NCA6IChkb3VibGUpaTsKLSNlbmRpZgotICAgICAgICAgICAgICAg
IHVzZURvdWJsZSA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHdoaWxlIChz
LlBlZWsoKSA+PSAnMCcgJiYgcy5QZWVrKCkgPD0gJzknKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHNpZ25pZmljYW5kRGlnaXQgPCAxNykgewotICAgICAgICAgICAgICAgICAgICBkID0gZCAqIDEw
LjAgKyAocy5UYWtlUHVzaCgpIC0gJzAnKTsKLSAgICAgICAgICAgICAgICAgICAgLS1leHBGcmFj
OwotICAgICAgICAgICAgICAgICAgICBpZiAoZCAhPSAwLjApCi0gICAgICAgICAgICAgICAgICAg
ICAgICBzaWduaWZpY2FuZERpZ2l0Kys7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcy5UYWtlUHVzaCgpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRlY2ltYWxQb3NpdGlvbiA9
IHMuTGVuZ3RoKCk7IC8vIGRlY2ltYWwgcG9zaXRpb24gYXQgdGhlIGVuZCBvZiBpbnRlZ2VyLgot
Ci0gICAgICAgIC8vIFBhcnNlIGV4cCA9IGUgWyBtaW51cyAvIHBsdXMgXSAxKkRJR0lUCi0gICAg
ICAgIGludCBleHAgPSAwOwotICAgICAgICBpZiAocy5QZWVrKCkgPT0gJ2UnIHx8IHMuUGVlaygp
ID09ICdFJykgewotICAgICAgICAgICAgaWYgKCF1c2VEb3VibGUpIHsKLSAgICAgICAgICAgICAg
ICBkID0gdXNlNjRiaXQgPyBpNjQgOiBpOwotICAgICAgICAgICAgICAgIHVzZURvdWJsZSA9IHRy
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzLlRha2UoKTsKLQotICAgICAgICAgICAg
Ym9vbCBleHBNaW51cyA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKHMuUGVlaygpID09ICcrJykK
LSAgICAgICAgICAgICAgICBzLlRha2UoKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKHMuUGVlaygp
ID09ICctJykgewotICAgICAgICAgICAgICAgIHMuVGFrZSgpOwotICAgICAgICAgICAgICAgIGV4
cE1pbnVzID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHMuUGVlaygp
ID49ICcwJyAmJiBzLlBlZWsoKSA8PSAnOScpIHsKLSAgICAgICAgICAgICAgICBleHAgPSBzLlRh
a2UoKSAtICcwJzsKLSAgICAgICAgICAgICAgICB3aGlsZSAocy5QZWVrKCkgPj0gJzAnICYmIHMu
UGVlaygpIDw9ICc5JykgewotICAgICAgICAgICAgICAgICAgICBleHAgPSBleHAgKiAxMCArIChz
LlRha2UoKSAtICcwJyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChleHAgPiAzMDggJiYgIWV4
cE1pbnVzKSAvLyBleHAgPiAzMDggc2hvdWxkIGJlIHJhcmUsIHNvIGl0IHNob3VsZCBiZSBjaGVj
a2VkIGZpcnN0LgotICAgICAgICAgICAgICAgICAgICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9S
KGtQYXJzZUVycm9yTnVtYmVyVG9vQmlnLCBzLlRlbGwoKSk7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFJBUElESlNP
Tl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvck51bWJlck1pc3NFeHBvbmVudCwgcy5UZWxsKCkpOwot
Ci0gICAgICAgICAgICBpZiAoZXhwTWludXMpCi0gICAgICAgICAgICAgICAgZXhwID0gLWV4cDsK
LSAgICAgICAgfQotCi0gICAgICAgIC8vIEZpbmlzaCBwYXJzaW5nLCBjYWxsIGV2ZW50IGFjY29y
ZGluZyB0byB0aGUgdHlwZSBvZiBudW1iZXIuCi0gICAgICAgIGJvb2wgY29udCA9IHRydWU7Ci0g
ICAgICAgIHNpemVfdCBsZW5ndGggPSBzLkxlbmd0aCgpOwotICAgICAgICBjb25zdCBjaGFyKiBk
ZWNpbWFsID0gcy5Qb3AoKTsgIC8vIFBvcCBzdGFjayBubyBtYXR0ZXIgaWYgaXQgd2lsbCBiZSB1
c2VkIG9yIG5vdC4KLQotICAgICAgICBpZiAodXNlRG91YmxlKSB7Ci0gICAgICAgICAgICBpbnQg
cCA9IGV4cCArIGV4cEZyYWM7Ci0gICAgICAgICAgICBpZiAocGFyc2VGbGFncyAmIGtQYXJzZUZ1
bGxQcmVjaXNpb25GbGFnKQotICAgICAgICAgICAgICAgIGQgPSBpbnRlcm5hbDo6U3RydG9kRnVs
bFByZWNpc2lvbihkLCBwLCBkZWNpbWFsLCBsZW5ndGgsIGRlY2ltYWxQb3NpdGlvbiwgZXhwKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBkID0gaW50ZXJuYWw6OlN0cnRvZE5v
cm1hbFByZWNpc2lvbihkLCBwKTsKLQotICAgICAgICAgICAgY29udCA9IGhhbmRsZXIuRG91Ymxl
KG1pbnVzID8gLWQgOiBkKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IGlmICh1c2U2NGJpdCkgewotICAgICAgICAgICAgICAgIGlmIChtaW51cykKLSAgICAgICAgICAg
ICAgICAgICAgY29udCA9IGhhbmRsZXIuSW50NjQoLShpbnQ2NF90KWk2NCk7Ci0gICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBjb250ID0gaGFuZGxlci5VaW50NjQoaTY0
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlm
IChtaW51cykKLSAgICAgICAgICAgICAgICAgICAgY29udCA9IGhhbmRsZXIuSW50KC0oaW50KWkp
OwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY29udCA9IGhhbmRs
ZXIuVWludChpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIWNvbnQp
Ci0gICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JUZXJtaW5hdGlv
biwgcy5UZWxsKCkpOwotICAgIH0KLQotICAgIC8vIFBhcnNlIGFueSBKU09OIHZhbHVlCi0gICAg
dGVtcGxhdGU8dW5zaWduZWQgcGFyc2VGbGFncywgdHlwZW5hbWUgSW5wdXRTdHJlYW0sIHR5cGVu
YW1lIEhhbmRsZXI+Ci0gICAgdm9pZCBQYXJzZVZhbHVlKElucHV0U3RyZWFtJiBpcywgSGFuZGxl
ciYgaGFuZGxlcikgewotICAgICAgICBzd2l0Y2ggKGlzLlBlZWsoKSkgewotICAgICAgICAgICAg
Y2FzZSAnbic6IFBhcnNlTnVsbCAgPHBhcnNlRmxhZ3M+KGlzLCBoYW5kbGVyKTsgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlICd0JzogUGFyc2VUcnVlICA8cGFyc2VGbGFncz4oaXMsIGhhbmRsZXIp
OyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ2YnOiBQYXJzZUZhbHNlIDxwYXJzZUZsYWdzPihp
cywgaGFuZGxlcik7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnIic6IFBhcnNlU3RyaW5nPHBh
cnNlRmxhZ3M+KGlzLCBoYW5kbGVyKTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICd7JzogUGFy
c2VPYmplY3Q8cGFyc2VGbGFncz4oaXMsIGhhbmRsZXIpOyBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgJ1snOiBQYXJzZUFycmF5IDxwYXJzZUZsYWdzPihpcywgaGFuZGxlcik7IGJyZWFrOwotICAg
ICAgICAgICAgZGVmYXVsdCA6IFBhcnNlTnVtYmVyPHBhcnNlRmxhZ3M+KGlzLCBoYW5kbGVyKTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIEl0ZXJhdGl2ZSBQYXJzaW5nCi0KLSAgICAvLyBT
dGF0ZXMKLSAgICBlbnVtIEl0ZXJhdGl2ZVBhcnNpbmdTdGF0ZSB7Ci0gICAgICAgIEl0ZXJhdGl2
ZVBhcnNpbmdTdGFydFN0YXRlID0gMCwKLSAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0ZpbmlzaFN0
YXRlLAotICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwKLQotICAgICAgICAvLyBP
YmplY3Qgc3RhdGVzCi0gICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdPYmplY3RJbml0aWFsU3RhdGUs
Ci0gICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdNZW1iZXJLZXlTdGF0ZSwKLSAgICAgICAgSXRlcmF0
aXZlUGFyc2luZ0tleVZhbHVlRGVsaW1pdGVyU3RhdGUsCi0gICAgICAgIEl0ZXJhdGl2ZVBhcnNp
bmdNZW1iZXJWYWx1ZVN0YXRlLAotICAgICAgICBJdGVyYXRpdmVQYXJzaW5nTWVtYmVyRGVsaW1p
dGVyU3RhdGUsCi0gICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdPYmplY3RGaW5pc2hTdGF0ZSwKLQot
ICAgICAgICAvLyBBcnJheSBzdGF0ZXMKLSAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0FycmF5SW5p
dGlhbFN0YXRlLAotICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRWxlbWVudFN0YXRlLAotICAgICAg
ICBJdGVyYXRpdmVQYXJzaW5nRWxlbWVudERlbGltaXRlclN0YXRlLAotICAgICAgICBJdGVyYXRp
dmVQYXJzaW5nQXJyYXlGaW5pc2hTdGF0ZSwKLQotICAgICAgICAvLyBTaW5nbGUgdmFsdWUgc3Rh
dGUKLSAgICAgICAgSXRlcmF0aXZlUGFyc2luZ1ZhbHVlU3RhdGUsCi0KLSAgICAgICAgY0l0ZXJh
dGl2ZVBhcnNpbmdTdGF0ZUNvdW50Ci0gICAgfTsKLQotICAgIC8vIFRva2VucwotICAgIGVudW0g
VG9rZW4gewotICAgICAgICBMZWZ0QnJhY2tldFRva2VuID0gMCwKLSAgICAgICAgUmlnaHRCcmFj
a2V0VG9rZW4sCi0KLSAgICAgICAgTGVmdEN1cmx5QnJhY2tldFRva2VuLAotICAgICAgICBSaWdo
dEN1cmx5QnJhY2tldFRva2VuLAotCi0gICAgICAgIENvbW1hVG9rZW4sCi0gICAgICAgIENvbG9u
VG9rZW4sCi0KLSAgICAgICAgU3RyaW5nVG9rZW4sCi0gICAgICAgIEZhbHNlVG9rZW4sCi0gICAg
ICAgIFRydWVUb2tlbiwKLSAgICAgICAgTnVsbFRva2VuLAotICAgICAgICBOdW1iZXJUb2tlbiwK
LQotICAgICAgICBrVG9rZW5Db3VudAotICAgIH07Ci0KLSAgICBSQVBJREpTT05fRk9SQ0VJTkxJ
TkUgVG9rZW4gVG9rZW5pemUoQ2ggYykgewotCi0vLyFAY29uZCBSQVBJREpTT05fSElEREVOX0ZS
T01fRE9YWUdFTgotI2RlZmluZSBOIE51bWJlclRva2VuCi0jZGVmaW5lIE4xNiBOLE4sTixOLE4s
TixOLE4sTixOLE4sTixOLE4sTixOCi0gICAgICAgIC8vIE1hcHMgZnJvbSBBU0NJSSB0byBUb2tl
bgotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciB0b2tlbk1hcFsyNTZdID0gewot
ICAgICAgICAgICAgTjE2LCAvLyAwMH4wRgotICAgICAgICAgICAgTjE2LCAvLyAxMH4xRgotICAg
ICAgICAgICAgTiwgTiwgU3RyaW5nVG9rZW4sIE4sIE4sIE4sIE4sIE4sIE4sIE4sIE4sIE4sIENv
bW1hVG9rZW4sIE4sIE4sIE4sIC8vIDIwfjJGCi0gICAgICAgICAgICBOLCBOLCBOLCBOLCBOLCBO
LCBOLCBOLCBOLCBOLCBDb2xvblRva2VuLCBOLCBOLCBOLCBOLCBOLCAvLyAzMH4zRgotICAgICAg
ICAgICAgTjE2LCAvLyA0MH40RgotICAgICAgICAgICAgTiwgTiwgTiwgTiwgTiwgTiwgTiwgTiwg
TiwgTiwgTiwgTGVmdEJyYWNrZXRUb2tlbiwgTiwgUmlnaHRCcmFja2V0VG9rZW4sIE4sIE4sIC8v
IDUwfjVGCi0gICAgICAgICAgICBOLCBOLCBOLCBOLCBOLCBOLCBGYWxzZVRva2VuLCBOLCBOLCBO
LCBOLCBOLCBOLCBOLCBOdWxsVG9rZW4sIE4sIC8vIDYwfjZGCi0gICAgICAgICAgICBOLCBOLCBO
LCBOLCBUcnVlVG9rZW4sIE4sIE4sIE4sIE4sIE4sIE4sIExlZnRDdXJseUJyYWNrZXRUb2tlbiwg
TiwgUmlnaHRDdXJseUJyYWNrZXRUb2tlbiwgTiwgTiwgLy8gNzB+N0YKLSAgICAgICAgICAgIE4x
NiwgTjE2LCBOMTYsIE4xNiwgTjE2LCBOMTYsIE4xNiwgTjE2IC8vIDgwfkZGCi0gICAgICAgIH07
Ci0jdW5kZWYgTgotI3VuZGVmIE4xNgotLy8hQGVuZGNvbmQKLSAgICAgICAgCi0gICAgICAgIGlm
IChzaXplb2YoQ2gpID09IDEgfHwgdW5zaWduZWQoYykgPCAyNTYpCi0gICAgICAgICAgICByZXR1
cm4gKFRva2VuKXRva2VuTWFwWyh1bnNpZ25lZCBjaGFyKWNdOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICByZXR1cm4gTnVtYmVyVG9rZW47Ci0gICAgfQotCi0gICAgUkFQSURKU09OX0ZPUkNF
SU5MSU5FIEl0ZXJhdGl2ZVBhcnNpbmdTdGF0ZSBQcmVkaWN0KEl0ZXJhdGl2ZVBhcnNpbmdTdGF0
ZSBzdGF0ZSwgVG9rZW4gdG9rZW4pIHsKLSAgICAgICAgLy8gY3VycmVudCBzdGF0ZSB4IG9uZSBs
b29rYWhlYWQgdG9rZW4gLT4gbmV3IHN0YXRlCi0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIEdb
Y0l0ZXJhdGl2ZVBhcnNpbmdTdGF0ZUNvdW50XVtrVG9rZW5Db3VudF0gPSB7Ci0gICAgICAgICAg
ICAvLyBTdGFydAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNp
bmdBcnJheUluaXRpYWxTdGF0ZSwgIC8vIExlZnQgYnJhY2tldAotICAgICAgICAgICAgICAgIEl0
ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgIC8vIFJpZ2h0IGJyYWNrZXQKLSAgICAg
ICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nT2JqZWN0SW5pdGlhbFN0YXRlLCAvLyBMZWZ0IGN1
cmx5IGJyYWNrZXQKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwg
ICAgICAgICAvLyBSaWdodCBjdXJseSBicmFja2V0Ci0gICAgICAgICAgICAgICAgSXRlcmF0aXZl
UGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gQ29tbWEKLSAgICAgICAgICAgICAgICBJdGVy
YXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBDb2xvbgotICAgICAgICAgICAgICAg
IEl0ZXJhdGl2ZVBhcnNpbmdWYWx1ZVN0YXRlLCAgICAgICAgIC8vIFN0cmluZwotICAgICAgICAg
ICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdWYWx1ZVN0YXRlLCAgICAgICAgIC8vIEZhbHNlCi0gICAg
ICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ1ZhbHVlU3RhdGUsICAgICAgICAgLy8gVHJ1ZQot
ICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdWYWx1ZVN0YXRlLCAgICAgICAgIC8vIE51
bGwKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nVmFsdWVTdGF0ZSAgICAgICAgICAv
LyBOdW1iZXIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAvLyBGaW5pc2goc2luayBzdGF0
ZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JT
dGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0
YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3Rh
dGUsCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2
ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZl
UGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLAotICAgICAgICAg
ICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlCi0gICAgICAgICAgICB9LAotICAgICAg
ICAgICAgLy8gRXJyb3Ioc2luayBzdGF0ZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUs
IEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwg
SXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFy
c2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJz
aW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNp
bmdFcnJvclN0YXRlLAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRl
Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgLy8gT2JqZWN0SW5pdGlhbAotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAg
IC8vIExlZnQgYnJhY2tldAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0
YXRlLCAgICAgICAgIC8vIFJpZ2h0IGJyYWNrZXQKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQ
YXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBMZWZ0IGN1cmx5IGJyYWNrZXQKLSAgICAgICAg
ICAgICAgICBJdGVyYXRpdmVQYXJzaW5nT2JqZWN0RmluaXNoU3RhdGUsICAvLyBSaWdodCBjdXJs
eSBicmFja2V0Ci0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAg
ICAgICAgLy8gQ29tbWEKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0
ZSwgICAgICAgICAvLyBDb2xvbgotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdNZW1i
ZXJLZXlTdGF0ZSwgICAgIC8vIFN0cmluZwotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNp
bmdFcnJvclN0YXRlLCAgICAgICAgIC8vIEZhbHNlCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZl
UGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gVHJ1ZQotICAgICAgICAgICAgICAgIEl0ZXJh
dGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgIC8vIE51bGwKLSAgICAgICAgICAgICAgICBJ
dGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSAgICAgICAgICAvLyBOdW1iZXIKLSAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAvLyBNZW1iZXJLZXkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gTGVmdCBicmFj
a2V0Ci0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAg
ICAgIC8vIFJpZ2h0IGJyYWNrZXQKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJy
b3JTdGF0ZSwgICAgICAgICAgICAgLy8gTGVmdCBjdXJseSBicmFja2V0Ci0gICAgICAgICAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIFJpZ2h0IGN1cmx5
IGJyYWNrZXQKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAg
ICAgICAgICAgLy8gQ29tbWEKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nS2V5VmFs
dWVEZWxpbWl0ZXJTdGF0ZSwgLy8gQ29sb24KLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJz
aW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gU3RyaW5nCi0gICAgICAgICAgICAgICAgSXRl
cmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIEZhbHNlCi0gICAgICAgICAg
ICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIFRydWUKLSAg
ICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8g
TnVsbAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlICAgICAgICAg
ICAgICAvLyBOdW1iZXIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAvLyBLZXlWYWx1ZURl
bGltaXRlcgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdB
cnJheUluaXRpYWxTdGF0ZSwgICAgICAvLyBMZWZ0IGJyYWNrZXQocHVzaCBNZW1iZXJWYWx1ZSBz
dGF0ZSkKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAg
ICAgICAgLy8gUmlnaHQgYnJhY2tldAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdP
YmplY3RJbml0aWFsU3RhdGUsICAgICAvLyBMZWZ0IGN1cmx5IGJyYWNrZXQocHVzaCBNZW1iZXJW
YWx1ZSBzdGF0ZSkKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwg
ICAgICAgICAgICAgLy8gUmlnaHQgY3VybHkgYnJhY2tldAotICAgICAgICAgICAgICAgIEl0ZXJh
dGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBDb21tYQotICAgICAgICAgICAg
ICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBDb2xvbgotICAg
ICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdNZW1iZXJWYWx1ZVN0YXRlLCAgICAgICAvLyBT
dHJpbmcKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nTWVtYmVyVmFsdWVTdGF0ZSwg
ICAgICAgLy8gRmFsc2UKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nTWVtYmVyVmFs
dWVTdGF0ZSwgICAgICAgLy8gVHJ1ZQotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdN
ZW1iZXJWYWx1ZVN0YXRlLCAgICAgICAvLyBOdWxsCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZl
UGFyc2luZ01lbWJlclZhbHVlU3RhdGUgICAgICAgIC8vIE51bWJlcgotICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgIC8vIE1lbWJlclZhbHVlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIExlZnQgYnJhY2tl
dAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAg
ICAvLyBSaWdodCBicmFja2V0Ci0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9y
U3RhdGUsICAgICAgICAgICAgIC8vIExlZnQgY3VybHkgYnJhY2tldAotICAgICAgICAgICAgICAg
IEl0ZXJhdGl2ZVBhcnNpbmdPYmplY3RGaW5pc2hTdGF0ZSwgICAgICAvLyBSaWdodCBjdXJseSBi
cmFja2V0Ci0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ01lbWJlckRlbGltaXRlclN0
YXRlLCAgIC8vIENvbW1hCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3Rh
dGUsICAgICAgICAgICAgIC8vIENvbG9uCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2lu
Z0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIFN0cmluZwotICAgICAgICAgICAgICAgIEl0ZXJh
dGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBGYWxzZQotICAgICAgICAgICAg
ICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBUcnVlCi0gICAg
ICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIE51
bGwKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSAgICAgICAgICAg
ICAgLy8gTnVtYmVyCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgLy8gTWVtYmVyRGVsaW1p
dGVyCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9y
U3RhdGUsICAgICAgICAgLy8gTGVmdCBicmFja2V0Ci0gICAgICAgICAgICAgICAgSXRlcmF0aXZl
UGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gUmlnaHQgYnJhY2tldAotICAgICAgICAgICAg
ICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgIC8vIExlZnQgY3VybHkgYnJh
Y2tldAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAg
IC8vIFJpZ2h0IGN1cmx5IGJyYWNrZXQKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5n
RXJyb3JTdGF0ZSwgICAgICAgICAvLyBDb21tYQotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBh
cnNpbmdFcnJvclN0YXRlLCAgICAgICAgIC8vIENvbG9uCi0gICAgICAgICAgICAgICAgSXRlcmF0
aXZlUGFyc2luZ01lbWJlcktleVN0YXRlLCAgICAgLy8gU3RyaW5nCi0gICAgICAgICAgICAgICAg
SXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gRmFsc2UKLSAgICAgICAgICAg
ICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAvLyBUcnVlCi0gICAgICAg
ICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgLy8gTnVsbAotICAg
ICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlICAgICAgICAgIC8vIE51bWJl
cgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIC8vIE9iamVjdEZpbmlzaChzaW5rIHN0YXRl
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0
YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3Rh
dGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0
ZSwKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZl
UGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQ
YXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsCi0gICAgICAgICAg
ICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUKLSAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAvLyBBcnJheUluaXRpYWwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJdGVy
YXRpdmVQYXJzaW5nQXJyYXlJbml0aWFsU3RhdGUsICAgICAgLy8gTGVmdCBicmFja2V0KHB1c2gg
RWxlbWVudCBzdGF0ZSkKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nQXJyYXlGaW5p
c2hTdGF0ZSwgICAgICAgLy8gUmlnaHQgYnJhY2tldAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2
ZVBhcnNpbmdPYmplY3RJbml0aWFsU3RhdGUsICAgICAvLyBMZWZ0IGN1cmx5IGJyYWNrZXQocHVz
aCBFbGVtZW50IHN0YXRlKQotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0
YXRlLCAgICAgICAgICAgICAvLyBSaWdodCBjdXJseSBicmFja2V0Ci0gICAgICAgICAgICAgICAg
SXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIENvbW1hCi0gICAgICAg
ICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIENvbG9u
Ci0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0VsZW1lbnRTdGF0ZSwgICAgICAgICAg
IC8vIFN0cmluZwotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50U3RhdGUs
ICAgICAgICAgICAvLyBGYWxzZQotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFbGVt
ZW50U3RhdGUsICAgICAgICAgICAvLyBUcnVlCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFy
c2luZ0VsZW1lbnRTdGF0ZSwgICAgICAgICAgIC8vIE51bGwKLSAgICAgICAgICAgICAgICBJdGVy
YXRpdmVQYXJzaW5nRWxlbWVudFN0YXRlICAgICAgICAgICAgLy8gTnVtYmVyCi0gICAgICAgICAg
ICB9LAotICAgICAgICAgICAgLy8gRWxlbWVudAotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBMZWZ0IGJyYWNr
ZXQKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nQXJyYXlGaW5pc2hTdGF0ZSwgICAg
ICAgLy8gUmlnaHQgYnJhY2tldAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJv
clN0YXRlLCAgICAgICAgICAgICAvLyBMZWZ0IGN1cmx5IGJyYWNrZXQKLSAgICAgICAgICAgICAg
ICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gUmlnaHQgY3VybHkg
YnJhY2tldAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50RGVsaW1pdGVy
U3RhdGUsICAvLyBDb21tYQotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0
YXRlLCAgICAgICAgICAgICAvLyBDb2xvbgotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNp
bmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBTdHJpbmcKLSAgICAgICAgICAgICAgICBJdGVy
YXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gRmFsc2UKLSAgICAgICAgICAg
ICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAgLy8gVHJ1ZQotICAg
ICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAgICAvLyBO
dWxsCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUgICAgICAgICAg
ICAgIC8vIE51bWJlcgotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIC8vIEVsZW1lbnREZWxp
bWl0ZXIKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nQXJy
YXlJbml0aWFsU3RhdGUsICAgICAgLy8gTGVmdCBicmFja2V0KHB1c2ggRWxlbWVudCBzdGF0ZSkK
LSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgICAgICAgICAgICAg
Ly8gUmlnaHQgYnJhY2tldAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdPYmplY3RJ
bml0aWFsU3RhdGUsICAgICAvLyBMZWZ0IGN1cmx5IGJyYWNrZXQocHVzaCBFbGVtZW50IHN0YXRl
KQotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCAgICAgICAgICAg
ICAvLyBSaWdodCBjdXJseSBicmFja2V0Ci0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2lu
Z0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIENvbW1hCi0gICAgICAgICAgICAgICAgSXRlcmF0
aXZlUGFyc2luZ0Vycm9yU3RhdGUsICAgICAgICAgICAgIC8vIENvbG9uCi0gICAgICAgICAgICAg
ICAgSXRlcmF0aXZlUGFyc2luZ0VsZW1lbnRTdGF0ZSwgICAgICAgICAgIC8vIFN0cmluZwotICAg
ICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50U3RhdGUsICAgICAgICAgICAvLyBG
YWxzZQotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50U3RhdGUsICAgICAg
ICAgICAvLyBUcnVlCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0VsZW1lbnRTdGF0
ZSwgICAgICAgICAgIC8vIE51bGwKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRWxl
bWVudFN0YXRlICAgICAgICAgICAgLy8gTnVtYmVyCi0gICAgICAgICAgICB9LAotICAgICAgICAg
ICAgLy8gQXJyYXlGaW5pc2goc2luayBzdGF0ZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3Rh
dGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0
ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsCi0gICAgICAgICAgICAgICAgSXRlcmF0aXZl
UGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQ
YXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBh
cnNpbmdFcnJvclN0YXRlLAotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0
YXRlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgLy8gU2luZ2xlIFZhbHVlIChzaW5rIHN0
YXRlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdFcnJv
clN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9y
U3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRpdmVQYXJzaW5nRXJyb3JT
dGF0ZSwKLSAgICAgICAgICAgICAgICBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0
aXZlUGFyc2luZ0Vycm9yU3RhdGUsIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0YXRlLCBJdGVyYXRp
dmVQYXJzaW5nRXJyb3JTdGF0ZSwgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUsCi0gICAgICAg
ICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGUKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfTsgLy8gRW5kIG9mIEcKLQotICAgICAgICByZXR1cm4gKEl0ZXJhdGl2ZVBhcnNpbmdTdGF0
ZSlHW3N0YXRlXVt0b2tlbl07Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhbiBhZHZhbmNlIGluIHRo
ZSB0b2tlbiBzdHJlYW0gYW5kIHN0YXRlIGJhc2VkIG9uIHRoZSBjYW5kaWRhdGUgZGVzdGluYXRp
b24gc3RhdGUgd2hpY2ggd2FzIHJldHVybmVkIGJ5IFRyYW5zaXQoKS4KLSAgICAvLyBNYXkgcmV0
dXJuIGEgbmV3IHN0YXRlIG9uIHN0YXRlIHBvcC4KLSAgICB0ZW1wbGF0ZSA8dW5zaWduZWQgcGFy
c2VGbGFncywgdHlwZW5hbWUgSW5wdXRTdHJlYW0sIHR5cGVuYW1lIEhhbmRsZXI+Ci0gICAgUkFQ
SURKU09OX0ZPUkNFSU5MSU5FIEl0ZXJhdGl2ZVBhcnNpbmdTdGF0ZSBUcmFuc2l0KEl0ZXJhdGl2
ZVBhcnNpbmdTdGF0ZSBzcmMsIFRva2VuIHRva2VuLCBJdGVyYXRpdmVQYXJzaW5nU3RhdGUgZHN0
LCBJbnB1dFN0cmVhbSYgaXMsIEhhbmRsZXImIGhhbmRsZXIpIHsKLSAgICAgICAgc3dpdGNoIChk
c3QpIHsKLSAgICAgICAgY2FzZSBJdGVyYXRpdmVQYXJzaW5nU3RhcnRTdGF0ZToKLSAgICAgICAg
ICAgIFJBUElESlNPTl9BU1NFUlQoZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGl2
ZVBhcnNpbmdFcnJvclN0YXRlOwotCi0gICAgICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ0Zpbmlz
aFN0YXRlOgotICAgICAgICAgICAgcmV0dXJuIGRzdDsKLQotICAgICAgICBjYXNlIEl0ZXJhdGl2
ZVBhcnNpbmdFcnJvclN0YXRlOgotICAgICAgICAgICAgcmV0dXJuIGRzdDsKLQotICAgICAgICBj
YXNlIEl0ZXJhdGl2ZVBhcnNpbmdPYmplY3RJbml0aWFsU3RhdGU6Ci0gICAgICAgIGNhc2UgSXRl
cmF0aXZlUGFyc2luZ0FycmF5SW5pdGlhbFN0YXRlOgotICAgICAgICB7Ci0gICAgICAgICAgICAv
LyBQdXNoIHRoZSBzdGF0ZShFbGVtZW50IG9yIE1lbWViZXJWYWx1ZSkgaWYgd2UgYXJlIG5lc3Rl
ZCBpbiBhbm90aGVyIGFycmF5IG9yIHZhbHVlIG9mIG1lbWJlci4KLSAgICAgICAgICAgIC8vIElu
IHRoaXMgd2F5IHdlIGNhbiBnZXQgdGhlIGNvcnJlY3Qgc3RhdGUgb24gT2JqZWN0RmluaXNoIG9y
IEFycmF5RmluaXNoIGJ5IGZyYW1lIHBvcC4KLSAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdT
dGF0ZSBuID0gc3JjOwotICAgICAgICAgICAgaWYgKHNyYyA9PSBJdGVyYXRpdmVQYXJzaW5nQXJy
YXlJbml0aWFsU3RhdGUgfHwgc3JjID09IEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50RGVsaW1pdGVy
U3RhdGUpCi0gICAgICAgICAgICAgICAgbiA9IEl0ZXJhdGl2ZVBhcnNpbmdFbGVtZW50U3RhdGU7
Ci0gICAgICAgICAgICBlbHNlIGlmIChzcmMgPT0gSXRlcmF0aXZlUGFyc2luZ0tleVZhbHVlRGVs
aW1pdGVyU3RhdGUpCi0gICAgICAgICAgICAgICAgbiA9IEl0ZXJhdGl2ZVBhcnNpbmdNZW1iZXJW
YWx1ZVN0YXRlOwotICAgICAgICAgICAgLy8gUHVzaCBjdXJyZW50IHN0YXRlLgotICAgICAgICAg
ICAgKnN0YWNrXy50ZW1wbGF0ZSBQdXNoPFNpemVUeXBlPigxKSA9IG47Ci0gICAgICAgICAgICAv
LyBJbml0aWFsaXplIGFuZCBwdXNoIHRoZSBtZW1iZXIvZWxlbWVudCBjb3VudC4KLSAgICAgICAg
ICAgICpzdGFja18udGVtcGxhdGUgUHVzaDxTaXplVHlwZT4oMSkgPSAwOwotICAgICAgICAgICAg
Ly8gQ2FsbCBoYW5kbGVyCi0gICAgICAgICAgICBib29sIGhyID0gKGRzdCA9PSBJdGVyYXRpdmVQ
YXJzaW5nT2JqZWN0SW5pdGlhbFN0YXRlKSA/IGhhbmRsZXIuU3RhcnRPYmplY3QoKSA6IGhhbmRs
ZXIuU3RhcnRBcnJheSgpOwotICAgICAgICAgICAgLy8gT24gaGFuZGxlciBzaG9ydCBjaXJjdWl0
cyB0aGUgcGFyc2luZy4KLSAgICAgICAgICAgIGlmICghaHIpIHsKLSAgICAgICAgICAgICAgICBS
QVBJREpTT05fUEFSU0VfRVJST1JfTk9SRVRVUk4oa1BhcnNlRXJyb3JUZXJtaW5hdGlvbiwgaXMu
VGVsbCgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3Rh
dGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBp
cy5UYWtlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRzdDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotCi0gICAgICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ01lbWJlcktleVN0YXRlOgot
ICAgICAgICAgICAgUGFyc2VTdHJpbmc8cGFyc2VGbGFncz4oaXMsIGhhbmRsZXIsIHRydWUpOwot
ICAgICAgICAgICAgaWYgKEhhc1BhcnNlRXJyb3IoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
SXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGU7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGRzdDsKLQotICAgICAgICBjYXNlIEl0ZXJhdGl2ZVBhcnNpbmdLZXlWYWx1
ZURlbGltaXRlclN0YXRlOgotICAgICAgICAgICAgaWYgKHRva2VuID09IENvbG9uVG9rZW4pIHsK
LSAgICAgICAgICAgICAgICBpcy5UYWtlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRzdDsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4g
SXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGU7Ci0KLSAgICAgICAgY2FzZSBJdGVyYXRpdmVQYXJz
aW5nTWVtYmVyVmFsdWVTdGF0ZToKLSAgICAgICAgICAgIC8vIE11c3QgYmUgbm9uLWNvbXBvdW5k
IHZhbHVlLiBPciBpdCB3b3VsZCBiZSBPYmplY3RJbml0aWFsIG9yIEFycmF5SW5pdGlhbCBzdGF0
ZS4KLSAgICAgICAgICAgIFBhcnNlVmFsdWU8cGFyc2VGbGFncz4oaXMsIGhhbmRsZXIpOwotICAg
ICAgICAgICAgaWYgKEhhc1BhcnNlRXJyb3IoKSkgewotICAgICAgICAgICAgICAgIHJldHVybiBJ
dGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiBkc3Q7Ci0KLSAgICAgICAgY2FzZSBJdGVyYXRpdmVQYXJzaW5nRWxlbWVudFN0YXRlOgot
ICAgICAgICAgICAgLy8gTXVzdCBiZSBub24tY29tcG91bmQgdmFsdWUuIE9yIGl0IHdvdWxkIGJl
IE9iamVjdEluaXRpYWwgb3IgQXJyYXlJbml0aWFsIHN0YXRlLgotICAgICAgICAgICAgUGFyc2VW
YWx1ZTxwYXJzZUZsYWdzPihpcywgaGFuZGxlcik7Ci0gICAgICAgICAgICBpZiAoSGFzUGFyc2VF
cnJvcigpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGl2ZVBhcnNpbmdFcnJvclN0
YXRlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGRzdDsKLQotICAgICAgICBj
YXNlIEl0ZXJhdGl2ZVBhcnNpbmdNZW1iZXJEZWxpbWl0ZXJTdGF0ZToKLSAgICAgICAgY2FzZSBJ
dGVyYXRpdmVQYXJzaW5nRWxlbWVudERlbGltaXRlclN0YXRlOgotICAgICAgICAgICAgaXMuVGFr
ZSgpOwotICAgICAgICAgICAgLy8gVXBkYXRlIG1lbWJlci9lbGVtZW50IGNvdW50LgotICAgICAg
ICAgICAgKnN0YWNrXy50ZW1wbGF0ZSBUb3A8U2l6ZVR5cGU+KCkgPSAqc3RhY2tfLnRlbXBsYXRl
IFRvcDxTaXplVHlwZT4oKSArIDE7Ci0gICAgICAgICAgICByZXR1cm4gZHN0OwotCi0gICAgICAg
IGNhc2UgSXRlcmF0aXZlUGFyc2luZ09iamVjdEZpbmlzaFN0YXRlOgotICAgICAgICB7Ci0gICAg
ICAgICAgICAvLyBHZXQgbWVtYmVyIGNvdW50LgotICAgICAgICAgICAgU2l6ZVR5cGUgYyA9ICpz
dGFja18udGVtcGxhdGUgUG9wPFNpemVUeXBlPigxKTsKLSAgICAgICAgICAgIC8vIElmIHRoZSBv
YmplY3QgaXMgbm90IGVtcHR5LCBjb3VudCB0aGUgbGFzdCBtZW1iZXIuCi0gICAgICAgICAgICBp
ZiAoc3JjID09IEl0ZXJhdGl2ZVBhcnNpbmdNZW1iZXJWYWx1ZVN0YXRlKQotICAgICAgICAgICAg
ICAgICsrYzsKLSAgICAgICAgICAgIC8vIFJlc3RvcmUgdGhlIHN0YXRlLgotICAgICAgICAgICAg
SXRlcmF0aXZlUGFyc2luZ1N0YXRlIG4gPSBzdGF0aWNfY2FzdDxJdGVyYXRpdmVQYXJzaW5nU3Rh
dGU+KCpzdGFja18udGVtcGxhdGUgUG9wPFNpemVUeXBlPigxKSk7Ci0gICAgICAgICAgICAvLyBU
cmFuc2l0IHRvIEZpbmlzaCBzdGF0ZSBpZiB0aGlzIGlzIHRoZSB0b3Btb3N0IHNjb3BlLgotICAg
ICAgICAgICAgaWYgKG4gPT0gSXRlcmF0aXZlUGFyc2luZ1N0YXJ0U3RhdGUpCi0gICAgICAgICAg
ICAgICAgbiA9IEl0ZXJhdGl2ZVBhcnNpbmdGaW5pc2hTdGF0ZTsKLSAgICAgICAgICAgIC8vIENh
bGwgaGFuZGxlcgotICAgICAgICAgICAgYm9vbCBociA9IGhhbmRsZXIuRW5kT2JqZWN0KGMpOwot
ICAgICAgICAgICAgLy8gT24gaGFuZGxlciBzaG9ydCBjaXJjdWl0cyB0aGUgcGFyc2luZy4KLSAg
ICAgICAgICAgIGlmICghaHIpIHsKLSAgICAgICAgICAgICAgICBSQVBJREpTT05fUEFSU0VfRVJS
T1JfTk9SRVRVUk4oa1BhcnNlRXJyb3JUZXJtaW5hdGlvbiwgaXMuVGVsbCgpKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm4gSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGU7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpcy5UYWtlKCk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBj
YXNlIEl0ZXJhdGl2ZVBhcnNpbmdBcnJheUZpbmlzaFN0YXRlOgotICAgICAgICB7Ci0gICAgICAg
ICAgICAvLyBHZXQgZWxlbWVudCBjb3VudC4KLSAgICAgICAgICAgIFNpemVUeXBlIGMgPSAqc3Rh
Y2tfLnRlbXBsYXRlIFBvcDxTaXplVHlwZT4oMSk7Ci0gICAgICAgICAgICAvLyBJZiB0aGUgYXJy
YXkgaXMgbm90IGVtcHR5LCBjb3VudCB0aGUgbGFzdCBlbGVtZW50LgotICAgICAgICAgICAgaWYg
KHNyYyA9PSBJdGVyYXRpdmVQYXJzaW5nRWxlbWVudFN0YXRlKQotICAgICAgICAgICAgICAgICsr
YzsKLSAgICAgICAgICAgIC8vIFJlc3RvcmUgdGhlIHN0YXRlLgotICAgICAgICAgICAgSXRlcmF0
aXZlUGFyc2luZ1N0YXRlIG4gPSBzdGF0aWNfY2FzdDxJdGVyYXRpdmVQYXJzaW5nU3RhdGU+KCpz
dGFja18udGVtcGxhdGUgUG9wPFNpemVUeXBlPigxKSk7Ci0gICAgICAgICAgICAvLyBUcmFuc2l0
IHRvIEZpbmlzaCBzdGF0ZSBpZiB0aGlzIGlzIHRoZSB0b3Btb3N0IHNjb3BlLgotICAgICAgICAg
ICAgaWYgKG4gPT0gSXRlcmF0aXZlUGFyc2luZ1N0YXJ0U3RhdGUpCi0gICAgICAgICAgICAgICAg
biA9IEl0ZXJhdGl2ZVBhcnNpbmdGaW5pc2hTdGF0ZTsKLSAgICAgICAgICAgIC8vIENhbGwgaGFu
ZGxlcgotICAgICAgICAgICAgYm9vbCBociA9IGhhbmRsZXIuRW5kQXJyYXkoYyk7Ci0gICAgICAg
ICAgICAvLyBPbiBoYW5kbGVyIHNob3J0IGNpcmN1aXRzIHRoZSBwYXJzaW5nLgotICAgICAgICAg
ICAgaWYgKCFocikgewotICAgICAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUl9OT1JF
VFVSTihrUGFyc2VFcnJvclRlcm1pbmF0aW9uLCBpcy5UZWxsKCkpOwotICAgICAgICAgICAgICAg
IHJldHVybiBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlzLlRha2UoKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGNhc2UgSXRl
cmF0aXZlUGFyc2luZ1ZhbHVlU3RhdGU6Ci0gICAgICAgICAgICAvLyBNdXN0IGJlIG5vbi1jb21w
b3VuZCB2YWx1ZS4gT3IgaXQgd291bGQgYmUgT2JqZWN0SW5pdGlhbCBvciBBcnJheUluaXRpYWwg
c3RhdGUuCi0gICAgICAgICAgICBQYXJzZVZhbHVlPHBhcnNlRmxhZ3M+KGlzLCBoYW5kbGVyKTsK
LSAgICAgICAgICAgIGlmIChIYXNQYXJzZUVycm9yKCkpIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gSXRlcmF0aXZlUGFyc2luZ0Vycm9yU3RhdGU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICByZXR1cm4gSXRlcmF0aXZlUGFyc2luZ0ZpbmlzaFN0YXRlOwotCi0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICBSQVBJREpTT05fQVNTRVJUKGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVy
biBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBJbnB1dFN0cmVhbT4KLSAgICB2b2lkIEhhbmRsZUVycm9yKEl0ZXJh
dGl2ZVBhcnNpbmdTdGF0ZSBzcmMsIElucHV0U3RyZWFtJiBpcykgewotICAgICAgICBpZiAoSGFz
UGFyc2VFcnJvcigpKSB7Ci0gICAgICAgICAgICAvLyBFcnJvciBmbGFnIGhhcyBiZWVuIHNldC4K
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3dpdGNo
IChzcmMpIHsKLSAgICAgICAgY2FzZSBJdGVyYXRpdmVQYXJzaW5nU3RhcnRTdGF0ZTogICAgICAg
ICAgICBSQVBJREpTT05fUEFSU0VfRVJST1Ioa1BhcnNlRXJyb3JEb2N1bWVudEVtcHR5LCBpcy5U
ZWxsKCkpOwotICAgICAgICBjYXNlIEl0ZXJhdGl2ZVBhcnNpbmdGaW5pc2hTdGF0ZTogICAgICAg
ICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvckRvY3VtZW50Um9vdE5vdFNpbmd1
bGFyLCBpcy5UZWxsKCkpOwotICAgICAgICBjYXNlIEl0ZXJhdGl2ZVBhcnNpbmdPYmplY3RJbml0
aWFsU3RhdGU6Ci0gICAgICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ01lbWJlckRlbGltaXRlclN0
YXRlOiAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yT2JqZWN0TWlzc05hbWUsIGlz
LlRlbGwoKSk7Ci0gICAgICAgIGNhc2UgSXRlcmF0aXZlUGFyc2luZ01lbWJlcktleVN0YXRlOiAg
ICAgICAgUkFQSURKU09OX1BBUlNFX0VSUk9SKGtQYXJzZUVycm9yT2JqZWN0TWlzc0NvbG9uLCBp
cy5UZWxsKCkpOwotICAgICAgICBjYXNlIEl0ZXJhdGl2ZVBhcnNpbmdNZW1iZXJWYWx1ZVN0YXRl
OiAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvck9iamVjdE1pc3NDb21tYU9y
Q3VybHlCcmFja2V0LCBpcy5UZWxsKCkpOwotICAgICAgICBjYXNlIEl0ZXJhdGl2ZVBhcnNpbmdF
bGVtZW50U3RhdGU6ICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJPUihrUGFyc2VFcnJvckFy
cmF5TWlzc0NvbW1hT3JTcXVhcmVCcmFja2V0LCBpcy5UZWxsKCkpOwotICAgICAgICBkZWZhdWx0
OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJBUElESlNPTl9QQVJTRV9FUlJP
UihrUGFyc2VFcnJvclVuc3BlY2lmaWNTeW50YXhFcnJvciwgaXMuVGVsbCgpKTsKLSAgICAgICAg
fSAgICAgICAKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dW5zaWduZWQgcGFyc2VGbGFncywgdHlw
ZW5hbWUgSW5wdXRTdHJlYW0sIHR5cGVuYW1lIEhhbmRsZXI+Ci0gICAgUGFyc2VSZXN1bHQgSXRl
cmF0aXZlUGFyc2UoSW5wdXRTdHJlYW0mIGlzLCBIYW5kbGVyJiBoYW5kbGVyKSB7Ci0gICAgICAg
IHBhcnNlUmVzdWx0Xy5DbGVhcigpOwotICAgICAgICBDbGVhclN0YWNrT25FeGl0IHNjb3BlKCp0
aGlzKTsKLSAgICAgICAgSXRlcmF0aXZlUGFyc2luZ1N0YXRlIHN0YXRlID0gSXRlcmF0aXZlUGFy
c2luZ1N0YXJ0U3RhdGU7Ci0KLSAgICAgICAgU2tpcFdoaXRlc3BhY2UoaXMpOwotICAgICAgICB3
aGlsZSAoaXMuUGVlaygpICE9ICdcMCcpIHsKLSAgICAgICAgICAgIFRva2VuIHQgPSBUb2tlbml6
ZShpcy5QZWVrKCkpOwotICAgICAgICAgICAgSXRlcmF0aXZlUGFyc2luZ1N0YXRlIG4gPSBQcmVk
aWN0KHN0YXRlLCB0KTsKLSAgICAgICAgICAgIEl0ZXJhdGl2ZVBhcnNpbmdTdGF0ZSBkID0gVHJh
bnNpdDxwYXJzZUZsYWdzPihzdGF0ZSwgdCwgbiwgaXMsIGhhbmRsZXIpOwotCi0gICAgICAgICAg
ICBpZiAoZCA9PSBJdGVyYXRpdmVQYXJzaW5nRXJyb3JTdGF0ZSkgewotICAgICAgICAgICAgICAg
IEhhbmRsZUVycm9yKHN0YXRlLCBpcyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIHN0YXRlID0gZDsKLQotICAgICAgICAgICAgLy8gRG8gbm90
IGZ1cnRoZXIgY29uc3VtZSBzdHJlYW1zIGlmIGEgcm9vdCBKU09OIGhhcyBiZWVuIHBhcnNlZC4K
LSAgICAgICAgICAgIGlmICgocGFyc2VGbGFncyAmIGtQYXJzZVN0b3BXaGVuRG9uZUZsYWcpICYm
IHN0YXRlID09IEl0ZXJhdGl2ZVBhcnNpbmdGaW5pc2hTdGF0ZSkKLSAgICAgICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICAgICAgU2tpcFdoaXRlc3BhY2UoaXMpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgLy8gSGFuZGxlIHRoZSBlbmQgb2YgZmlsZS4KLSAgICAgICAgaWYgKHN0YXRlICE9IEl0
ZXJhdGl2ZVBhcnNpbmdGaW5pc2hTdGF0ZSkKLSAgICAgICAgICAgIEhhbmRsZUVycm9yKHN0YXRl
LCBpcyk7Ci0KLSAgICAgICAgcmV0dXJuIHBhcnNlUmVzdWx0XzsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IGtEZWZhdWx0U3RhY2tDYXBhY2l0eSA9IDI1NjsgICAgLy8hPCBEZWZh
dWx0IHN0YWNrIGNhcGFjaXR5IGluIGJ5dGVzIGZvciBzdG9yaW5nIGEgc2luZ2xlIGRlY29kZWQg
c3RyaW5nLgotICAgIGludGVybmFsOjpTdGFjazxTdGFja0FsbG9jYXRvcj4gc3RhY2tfOyAgLy8h
PCBBIHN0YWNrIGZvciBzdG9yaW5nIGRlY29kZWQgc3RyaW5nIHRlbXBvcmFyaWx5IGR1cmluZyBu
b24tZGVzdHJ1Y3RpdmUgcGFyc2luZy4KLSAgICBQYXJzZVJlc3VsdCBwYXJzZVJlc3VsdF87Ci19
OyAvLyBjbGFzcyBHZW5lcmljUmVhZGVyCi0KLS8vISBSZWFkZXIgd2l0aCBVVEY4IGVuY29kaW5n
IGFuZCBkZWZhdWx0IGFsbG9jYXRvci4KLXR5cGVkZWYgR2VuZXJpY1JlYWRlcjxVVEY4PD4sIFVU
Rjg8PiA+IFJlYWRlcjsKLQotUkFQSURKU09OX05BTUVTUEFDRV9FTkQKLQotI2lmZGVmIF9fR05V
Q19fCi1SQVBJREpTT05fRElBR19QT1AKLSNlbmRpZgotCi0jaWZkZWYgX01TQ19WRVIKLVJBUElE
SlNPTl9ESUFHX1BPUAotI2VuZGlmCi0KLSNlbmRpZiAvLyBSQVBJREpTT05fUkVBREVSX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhpcmRfcGFydHkv
cmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3N0cmluZ2J1ZmZlci5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJkX3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlk
anNvbi9zdHJpbmdidWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA5YTUx
ODEzMjAuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90ZXN0
cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBpZGpzb24vc3RyaW5nYnVmZmVyLmgK
KysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTEgTWls
byBZaXAKLS8vCi0vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn
ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0vLyBvZiB0aGlzIHNvZnR3YXJlIGFu
ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVh
bAotLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo
b3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwotLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl
LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAotLy8gY29waWVz
IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3
YXJlIGlzCi0vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zOgotLy8KLS8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl
cm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCi0vLyBhbGwgY29waWVzIG9yIHN1
YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLS8vCi0vLyBUSEUgU09GVFdBUkUg
SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT
UyBPUgotLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKLS8vIEFVVEhP
UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg
T1IgT1RIRVIKLS8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs
IFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCi0vLyBPVVQgT0YgT1IgSU4gQ09OTkVD
VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCi0v
LyBUSEUgU09GVFdBUkUuCi0KLSNpZm5kZWYgUkFQSURKU09OX1NUUklOR0JVRkZFUl9IXwotI2Rl
ZmluZSBSQVBJREpTT05fU1RSSU5HQlVGRkVSX0hfCi0KLSNpbmNsdWRlICJyYXBpZGpzb24uaCIK
LQotI2lmIFJBUElESlNPTl9IQVNfQ1hYMTFfUlZBTFVFX1JFRlMKLSNpbmNsdWRlIDx1dGlsaXR5
PiAvLyBzdGQ6Om1vdmUKLSNlbmRpZgotCi0jaW5jbHVkZSAiaW50ZXJuYWwvc3RhY2suaCIKLQot
UkFQSURKU09OX05BTUVTUEFDRV9CRUdJTgotCi0vLyEgUmVwcmVzZW50cyBhbiBpbi1tZW1vcnkg
b3V0cHV0IHN0cmVhbS4KLS8qIQotICAgIFx0cGFyYW0gRW5jb2RpbmcgRW5jb2Rpbmcgb2YgdGhl
IHN0cmVhbS4KLSAgICBcdHBhcmFtIEFsbG9jYXRvciB0eXBlIGZvciBhbGxvY2F0aW5nIG1lbW9y
eSBidWZmZXIuCi0gICAgXG5vdGUgaW1wbGVtZW50cyBTdHJlYW0gY29uY2VwdAotKi8KLXRlbXBs
YXRlIDx0eXBlbmFtZSBFbmNvZGluZywgdHlwZW5hbWUgQWxsb2NhdG9yID0gQ3J0QWxsb2NhdG9y
PgotY2xhc3MgR2VuZXJpY1N0cmluZ0J1ZmZlciB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBl
bmFtZSBFbmNvZGluZzo6Q2ggQ2g7Ci0KLSAgICBHZW5lcmljU3RyaW5nQnVmZmVyKEFsbG9jYXRv
ciogYWxsb2NhdG9yID0gMCwgc2l6ZV90IGNhcGFjaXR5ID0ga0RlZmF1bHRDYXBhY2l0eSkgOiBz
dGFja18oYWxsb2NhdG9yLCBjYXBhY2l0eSkge30KLQotI2lmIFJBUElESlNPTl9IQVNfQ1hYMTFf
UlZBTFVFX1JFRlMKLSAgICBHZW5lcmljU3RyaW5nQnVmZmVyKEdlbmVyaWNTdHJpbmdCdWZmZXIm
JiByaHMpIDogc3RhY2tfKHN0ZDo6bW92ZShyaHMuc3RhY2tfKSkge30KLSAgICBHZW5lcmljU3Ry
aW5nQnVmZmVyJiBvcGVyYXRvcj0oR2VuZXJpY1N0cmluZ0J1ZmZlciYmIHJocykgewotICAgICAg
ICBpZiAoJnJocyAhPSB0aGlzKQotICAgICAgICAgICAgc3RhY2tfID0gc3RkOjptb3ZlKHJocy5z
dGFja18pOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotI2VuZGlmCi0KLSAgICB2b2lk
IFB1dChDaCBjKSB7ICpzdGFja18udGVtcGxhdGUgUHVzaDxDaD4oKSA9IGM7IH0KLSAgICB2b2lk
IEZsdXNoKCkge30KLQotICAgIHZvaWQgQ2xlYXIoKSB7IHN0YWNrXy5DbGVhcigpOyB9Ci0gICAg
dm9pZCBTaHJpbmtUb0ZpdCgpIHsKLSAgICAgICAgLy8gUHVzaCBhbmQgcG9wIGEgbnVsbCB0ZXJt
aW5hdG9yLiBUaGlzIGlzIHNhZmUuCi0gICAgICAgICpzdGFja18udGVtcGxhdGUgUHVzaDxDaD4o
KSA9ICdcMCc7Ci0gICAgICAgIHN0YWNrXy5TaHJpbmtUb0ZpdCgpOwotICAgICAgICBzdGFja18u
dGVtcGxhdGUgUG9wPENoPigxKTsKLSAgICB9Ci0gICAgQ2gqIFB1c2goc2l6ZV90IGNvdW50KSB7
IHJldHVybiBzdGFja18udGVtcGxhdGUgUHVzaDxDaD4oY291bnQpOyB9Ci0gICAgdm9pZCBQb3Ao
c2l6ZV90IGNvdW50KSB7IHN0YWNrXy50ZW1wbGF0ZSBQb3A8Q2g+KGNvdW50KTsgfQotCi0gICAg
Y29uc3QgQ2gqIEdldFN0cmluZygpIGNvbnN0IHsKLSAgICAgICAgLy8gUHVzaCBhbmQgcG9wIGEg
bnVsbCB0ZXJtaW5hdG9yLiBUaGlzIGlzIHNhZmUuCi0gICAgICAgICpzdGFja18udGVtcGxhdGUg
UHVzaDxDaD4oKSA9ICdcMCc7Ci0gICAgICAgIHN0YWNrXy50ZW1wbGF0ZSBQb3A8Q2g+KDEpOwot
Ci0gICAgICAgIHJldHVybiBzdGFja18udGVtcGxhdGUgQm90dG9tPENoPigpOwotICAgIH0KLQot
ICAgIHNpemVfdCBHZXRTaXplKCkgY29uc3QgeyByZXR1cm4gc3RhY2tfLkdldFNpemUoKTsgfQot
Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBrRGVmYXVsdENhcGFjaXR5ID0gMjU2OwotICAgIG11
dGFibGUgaW50ZXJuYWw6OlN0YWNrPEFsbG9jYXRvcj4gc3RhY2tfOwotCi1wcml2YXRlOgotICAg
IC8vIFByb2hpYml0IGNvcHkgY29uc3RydWN0b3IgJiBhc3NpZ25tZW50IG9wZXJhdG9yLgotICAg
IEdlbmVyaWNTdHJpbmdCdWZmZXIoY29uc3QgR2VuZXJpY1N0cmluZ0J1ZmZlciYpOwotICAgIEdl
bmVyaWNTdHJpbmdCdWZmZXImIG9wZXJhdG9yPShjb25zdCBHZW5lcmljU3RyaW5nQnVmZmVyJik7
Ci19OwotCi0vLyEgU3RyaW5nIGJ1ZmZlciB3aXRoIFVURjggZW5jb2RpbmcKLXR5cGVkZWYgR2Vu
ZXJpY1N0cmluZ0J1ZmZlcjxVVEY4PD4gPiBTdHJpbmdCdWZmZXI7Ci0KLS8vISBJbXBsZW1lbnQg
c3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBQdXROKCkgd2l0aCBtZW1zZXQoKSBmb3IgYmV0dGVyIHBl
cmZvcm1hbmNlLgotdGVtcGxhdGU8PgotaW5saW5lIHZvaWQgUHV0TihHZW5lcmljU3RyaW5nQnVm
ZmVyPFVURjg8PiA+JiBzdHJlYW0sIGNoYXIgYywgc2l6ZV90IG4pIHsKLSAgICBzdGQ6Om1lbXNl
dChzdHJlYW0uc3RhY2tfLlB1c2g8Y2hhcj4obiksIGMsIG4gKiBzaXplb2YoYykpOwotfQotCi1S
QVBJREpTT05fTkFNRVNQQUNFX0VORAotCi0jZW5kaWYgLy8gUkFQSURKU09OX1NUUklOR0JVRkZF
Ul9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3Rlc3RzL3RoaXJk
X3BhcnR5L3JhcGlkanNvbi9pbmNsdWRlL3JhcGlkanNvbi93cml0ZXIuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90ZXN0cy90aGlyZF9wYXJ0eS9yYXBpZGpzb24vaW5jbHVkZS9yYXBp
ZGpzb24vd3JpdGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4OTMxZmUzMWE5
Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGVzdHMvdGhp
cmRfcGFydHkvcmFwaWRqc29uL2luY2x1ZGUvcmFwaWRqc29uL3dyaXRlci5oCisrKyAvZGV2L251
bGwKQEAgLTEsMzkxICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxMSBNaWxvIFlpcAotLy8K
LS8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg
cGVyc29uIG9idGFpbmluZyBhIGNvcHkKLS8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0
ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCi0vLyBpbiB0
aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh
dGlvbiB0aGUgcmlnaHRzCi0vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs
IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi0vLyBjb3BpZXMgb2YgdGhlIFNv
ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLS8v
IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6
Ci0vLwotLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu
b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLS8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg
cG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgotLy8KLS8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF
RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCi0vLyBJ
TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSwKLS8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBO
T05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotLy8gQVVUSE9SUyBPUiBDT1BZ
UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgot
Ly8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP
VEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLS8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEgg
VEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KLS8vIFRIRSBTT0ZU
V0FSRS4KLQotI2lmbmRlZiBSQVBJREpTT05fV1JJVEVSX0hfCi0jZGVmaW5lIFJBUElESlNPTl9X
UklURVJfSF8KLQotI2luY2x1ZGUgInJhcGlkanNvbi5oIgotI2luY2x1ZGUgImludGVybmFsL3N0
YWNrLmgiCi0jaW5jbHVkZSAiaW50ZXJuYWwvc3RyZnVuYy5oIgotI2luY2x1ZGUgImludGVybmFs
L2R0b2EuaCIKLSNpbmNsdWRlICJpbnRlcm5hbC9pdG9hLmgiCi0jaW5jbHVkZSAic3RyaW5nYnVm
ZmVyLmgiCi0jaW5jbHVkZSA8bmV3PiAgICAgIC8vIHBsYWNlbWVudCBuZXcKLQotI2lmZGVmIF9N
U0NfVkVSCi1SQVBJREpTT05fRElBR19QVVNICi1SQVBJREpTT05fRElBR19PRkYoNDEyNykgLy8g
Y29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudAotI2VuZGlmCi0KLVJBUElESlNPTl9O
QU1FU1BBQ0VfQkVHSU4KLQotLy8hIEpTT04gd3JpdGVyCi0vKiEgV3JpdGVyIGltcGxlbWVudHMg
dGhlIGNvbmNlcHQgSGFuZGxlci4KLSAgICBJdCBnZW5lcmF0ZXMgSlNPTiB0ZXh0IGJ5IGV2ZW50
cyB0byBhbiBvdXRwdXQgb3MuCi0KLSAgICBVc2VyIG1heSBwcm9ncmFtbWF0aWNhbGx5IGNhbGxz
IHRoZSBmdW5jdGlvbnMgb2YgYSB3cml0ZXIgdG8gZ2VuZXJhdGUgSlNPTiB0ZXh0LgotCi0gICAg
T24gdGhlIG90aGVyIHNpZGUsIGEgd3JpdGVyIGNhbiBhbHNvIGJlIHBhc3NlZCB0byBvYmplY3Rz
IHRoYXQgZ2VuZXJhdGVzIGV2ZW50cywgCi0KLSAgICBmb3IgZXhhbXBsZSBSZWFkZXI6OlBhcnNl
KCkgYW5kIERvY3VtZW50OjpBY2NlcHQoKS4KLQotICAgIFx0cGFyYW0gT3V0cHV0U3RyZWFtIFR5
cGUgb2Ygb3V0cHV0IHN0cmVhbS4KLSAgICBcdHBhcmFtIFNvdXJjZUVuY29kaW5nIEVuY29kaW5n
IG9mIHNvdXJjZSBzdHJpbmcuCi0gICAgXHRwYXJhbSBUYXJnZXRFbmNvZGluZyBFbmNvZGluZyBv
ZiBvdXRwdXQgc3RyZWFtLgotICAgIFx0cGFyYW0gU3RhY2tBbGxvY2F0b3IgVHlwZSBvZiBhbGxv
Y2F0b3IgZm9yIGFsbG9jYXRpbmcgbWVtb3J5IG9mIHN0YWNrLgotICAgIFxub3RlIGltcGxlbWVu
dHMgSGFuZGxlciBjb25jZXB0Ci0qLwotdGVtcGxhdGU8dHlwZW5hbWUgT3V0cHV0U3RyZWFtLCB0
eXBlbmFtZSBTb3VyY2VFbmNvZGluZyA9IFVURjg8PiwgdHlwZW5hbWUgVGFyZ2V0RW5jb2Rpbmcg
PSBVVEY4PD4sIHR5cGVuYW1lIFN0YWNrQWxsb2NhdG9yID0gQ3J0QWxsb2NhdG9yPgotY2xhc3Mg
V3JpdGVyIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFNvdXJjZUVuY29kaW5nOjpD
aCBDaDsKLQotICAgIC8vISBDb25zdHJ1Y3RvcgotICAgIC8qISBccGFyYW0gb3MgT3V0cHV0IHN0
cmVhbS4KLSAgICAgICAgXHBhcmFtIHN0YWNrQWxsb2NhdG9yIFVzZXIgc3VwcGxpZWQgYWxsb2Nh
dG9yLiBJZiBpdCBpcyBudWxsLCBpdCB3aWxsIGNyZWF0ZSBhIHByaXZhdGUgb25lLgotICAgICAg
ICBccGFyYW0gbGV2ZWxEZXB0aCBJbml0aWFsIGNhcGFjaXR5IG9mIHN0YWNrLgotICAgICovCi0g
ICAgZXhwbGljaXQKLSAgICBXcml0ZXIoT3V0cHV0U3RyZWFtJiBvcywgU3RhY2tBbGxvY2F0b3Iq
IHN0YWNrQWxsb2NhdG9yID0gMCwgc2l6ZV90IGxldmVsRGVwdGggPSBrRGVmYXVsdExldmVsRGVw
dGgpIDogCi0gICAgICAgIG9zXygmb3MpLCBsZXZlbF9zdGFja18oc3RhY2tBbGxvY2F0b3IsIGxl
dmVsRGVwdGggKiBzaXplb2YoTGV2ZWwpKSwgaGFzUm9vdF8oZmFsc2UpIHt9Ci0KLSAgICBleHBs
aWNpdAotICAgIFdyaXRlcihTdGFja0FsbG9jYXRvciogYWxsb2NhdG9yID0gMCwgc2l6ZV90IGxl
dmVsRGVwdGggPSBrRGVmYXVsdExldmVsRGVwdGgpIDoKLSAgICAgICAgb3NfKDApLCBsZXZlbF9z
dGFja18oYWxsb2NhdG9yLCBsZXZlbERlcHRoICogc2l6ZW9mKExldmVsKSksIGhhc1Jvb3RfKGZh
bHNlKSB7fQotCi0gICAgLy8hIFJlc2V0IHRoZSB3cml0ZXIgd2l0aCBhIG5ldyBzdHJlYW0uCi0g
ICAgLyohCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gcmVzZXQgdGhlIHdyaXRlciB3aXRoIGEgbmV3
IHN0cmVhbSBhbmQgZGVmYXVsdCBzZXR0aW5ncywKLSAgICAgICAgaW4gb3JkZXIgdG8gbWFrZSBh
IFdyaXRlciBvYmplY3QgcmV1c2FibGUgZm9yIG91dHB1dCBtdWx0aXBsZSBKU09Ocy4KLQotICAg
ICAgICBccGFyYW0gb3MgTmV3IG91dHB1dCBzdHJlYW0uCi0gICAgICAgIFxjb2RlCi0gICAgICAg
IFdyaXRlcjxPdXRwdXRTdHJlYW0+IHdyaXRlcihvczEpOwotICAgICAgICB3cml0ZXIuU3RhcnRP
YmplY3QoKTsKLSAgICAgICAgLy8gLi4uCi0gICAgICAgIHdyaXRlci5FbmRPYmplY3QoKTsKLQot
ICAgICAgICB3cml0ZXIuUmVzZXQob3MyKTsKLSAgICAgICAgd3JpdGVyLlN0YXJ0T2JqZWN0KCk7
Ci0gICAgICAgIC8vIC4uLgotICAgICAgICB3cml0ZXIuRW5kT2JqZWN0KCk7Ci0gICAgICAgIFxl
bmRjb2RlCi0gICAgKi8KLSAgICB2b2lkIFJlc2V0KE91dHB1dFN0cmVhbSYgb3MpIHsKLSAgICAg
ICAgb3NfID0gJm9zOwotICAgICAgICBoYXNSb290XyA9IGZhbHNlOwotICAgICAgICBsZXZlbF9z
dGFja18uQ2xlYXIoKTsKLSAgICB9Ci0KLSAgICAvLyEgQ2hlY2tzIHdoZXRoZXIgdGhlIG91dHB1
dCBpcyBhIGNvbXBsZXRlIEpTT04uCi0gICAgLyohCi0gICAgICAgIEEgY29tcGxldGUgSlNPTiBo
YXMgYSBjb21wbGV0ZSByb290IG9iamVjdCBvciBhcnJheS4KLSAgICAqLwotICAgIGJvb2wgSXND
b21wbGV0ZSgpIGNvbnN0IHsKLSAgICAgICAgcmV0dXJuIGhhc1Jvb3RfICYmIGxldmVsX3N0YWNr
Xy5FbXB0eSgpOwotICAgIH0KLQotICAgIC8qIUBuYW1lIEltcGxlbWVudGF0aW9uIG9mIEhhbmRs
ZXIKLSAgICAgICAgXHNlZSBIYW5kbGVyCi0gICAgKi8KLSAgICAvL0B7Ci0KLSAgICBib29sIE51
bGwoKSAgICAgICAgICAgICAgICAgeyBQcmVmaXgoa051bGxUeXBlKTsgICByZXR1cm4gV3JpdGVO
dWxsKCk7IH0KLSAgICBib29sIEJvb2woYm9vbCBiKSAgICAgICAgICAgeyBQcmVmaXgoYiA/IGtU
cnVlVHlwZSA6IGtGYWxzZVR5cGUpOyByZXR1cm4gV3JpdGVCb29sKGIpOyB9Ci0gICAgYm9vbCBJ
bnQoaW50IGkpICAgICAgICAgICAgIHsgUHJlZml4KGtOdW1iZXJUeXBlKTsgcmV0dXJuIFdyaXRl
SW50KGkpOyB9Ci0gICAgYm9vbCBVaW50KHVuc2lnbmVkIHUpICAgICAgIHsgUHJlZml4KGtOdW1i
ZXJUeXBlKTsgcmV0dXJuIFdyaXRlVWludCh1KTsgfQotICAgIGJvb2wgSW50NjQoaW50NjRfdCBp
NjQpICAgICB7IFByZWZpeChrTnVtYmVyVHlwZSk7IHJldHVybiBXcml0ZUludDY0KGk2NCk7IH0K
LSAgICBib29sIFVpbnQ2NCh1aW50NjRfdCB1NjQpICAgeyBQcmVmaXgoa051bWJlclR5cGUpOyBy
ZXR1cm4gV3JpdGVVaW50NjQodTY0KTsgfQotCi0gICAgLy8hIFdyaXRlcyB0aGUgZ2l2ZW4gXGMg
ZG91YmxlIHZhbHVlIHRvIHRoZSBzdHJlYW0KLSAgICAvKiEKLSAgICAgICAgXHBhcmFtIGQgVGhl
IHZhbHVlIHRvIGJlIHdyaXR0ZW4uCi0gICAgICAgIFxyZXR1cm4gV2hldGhlciBpdCBpcyBzdWNj
ZWVkLgotICAgICovCi0gICAgYm9vbCBEb3VibGUoZG91YmxlIGQpICAgICAgIHsgUHJlZml4KGtO
dW1iZXJUeXBlKTsgcmV0dXJuIFdyaXRlRG91YmxlKGQpOyB9Ci0KLSAgICBib29sIFN0cmluZyhj
b25zdCBDaCogc3RyLCBTaXplVHlwZSBsZW5ndGgsIGJvb2wgY29weSA9IGZhbHNlKSB7Ci0gICAg
ICAgICh2b2lkKWNvcHk7Ci0gICAgICAgIFByZWZpeChrU3RyaW5nVHlwZSk7Ci0gICAgICAgIHJl
dHVybiBXcml0ZVN0cmluZyhzdHIsIGxlbmd0aCk7Ci0gICAgfQotCi0gICAgYm9vbCBTdGFydE9i
amVjdCgpIHsKLSAgICAgICAgUHJlZml4KGtPYmplY3RUeXBlKTsKLSAgICAgICAgbmV3IChsZXZl
bF9zdGFja18udGVtcGxhdGUgUHVzaDxMZXZlbD4oKSkgTGV2ZWwoZmFsc2UpOwotICAgICAgICBy
ZXR1cm4gV3JpdGVTdGFydE9iamVjdCgpOwotICAgIH0KLQotICAgIGJvb2wgS2V5KGNvbnN0IENo
KiBzdHIsIFNpemVUeXBlIGxlbmd0aCwgYm9vbCBjb3B5ID0gZmFsc2UpIHsgcmV0dXJuIFN0cmlu
ZyhzdHIsIGxlbmd0aCwgY29weSk7IH0KLSAgICAKLSAgICBib29sIEVuZE9iamVjdChTaXplVHlw
ZSBtZW1iZXJDb3VudCA9IDApIHsKLSAgICAgICAgKHZvaWQpbWVtYmVyQ291bnQ7Ci0gICAgICAg
IFJBUElESlNPTl9BU1NFUlQobGV2ZWxfc3RhY2tfLkdldFNpemUoKSA+PSBzaXplb2YoTGV2ZWwp
KTsKLSAgICAgICAgUkFQSURKU09OX0FTU0VSVCghbGV2ZWxfc3RhY2tfLnRlbXBsYXRlIFRvcDxM
ZXZlbD4oKS0+aW5BcnJheSk7Ci0gICAgICAgIGxldmVsX3N0YWNrXy50ZW1wbGF0ZSBQb3A8TGV2
ZWw+KDEpOwotICAgICAgICBib29sIHJldCA9IFdyaXRlRW5kT2JqZWN0KCk7Ci0gICAgICAgIGlm
IChsZXZlbF9zdGFja18uRW1wdHkoKSkgICAvLyBlbmQgb2YganNvbiB0ZXh0Ci0gICAgICAgICAg
ICBvc18tPkZsdXNoKCk7Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQotCi0gICAgYm9vbCBT
dGFydEFycmF5KCkgewotICAgICAgICBQcmVmaXgoa0FycmF5VHlwZSk7Ci0gICAgICAgIG5ldyAo
bGV2ZWxfc3RhY2tfLnRlbXBsYXRlIFB1c2g8TGV2ZWw+KCkpIExldmVsKHRydWUpOwotICAgICAg
ICByZXR1cm4gV3JpdGVTdGFydEFycmF5KCk7Ci0gICAgfQotCi0gICAgYm9vbCBFbmRBcnJheShT
aXplVHlwZSBlbGVtZW50Q291bnQgPSAwKSB7Ci0gICAgICAgICh2b2lkKWVsZW1lbnRDb3VudDsK
LSAgICAgICAgUkFQSURKU09OX0FTU0VSVChsZXZlbF9zdGFja18uR2V0U2l6ZSgpID49IHNpemVv
ZihMZXZlbCkpOwotICAgICAgICBSQVBJREpTT05fQVNTRVJUKGxldmVsX3N0YWNrXy50ZW1wbGF0
ZSBUb3A8TGV2ZWw+KCktPmluQXJyYXkpOwotICAgICAgICBsZXZlbF9zdGFja18udGVtcGxhdGUg
UG9wPExldmVsPigxKTsKLSAgICAgICAgYm9vbCByZXQgPSBXcml0ZUVuZEFycmF5KCk7Ci0gICAg
ICAgIGlmIChsZXZlbF9zdGFja18uRW1wdHkoKSkgICAvLyBlbmQgb2YganNvbiB0ZXh0Ci0gICAg
ICAgICAgICBvc18tPkZsdXNoKCk7Ci0gICAgICAgIHJldHVybiByZXQ7Ci0gICAgfQotICAgIC8v
QH0KLQotICAgIC8qISBAbmFtZSBDb252ZW5pZW5jZSBleHRlbnNpb25zICovCi0gICAgLy9Aewot
Ci0gICAgLy8hIFNpbXBsZXIgYnV0IHNsb3dlciBvdmVybG9hZC4KLSAgICBib29sIFN0cmluZyhj
b25zdCBDaCogc3RyKSB7IHJldHVybiBTdHJpbmcoc3RyLCBpbnRlcm5hbDo6U3RyTGVuKHN0cikp
OyB9Ci0gICAgYm9vbCBLZXkoY29uc3QgQ2gqIHN0cikgeyByZXR1cm4gS2V5KHN0ciwgaW50ZXJu
YWw6OlN0ckxlbihzdHIpKTsgfQotCi0gICAgLy9AfQotCi1wcm90ZWN0ZWQ6Ci0gICAgLy8hIElu
Zm9ybWF0aW9uIGZvciBlYWNoIG5lc3RlZCBsZXZlbAotICAgIHN0cnVjdCBMZXZlbCB7Ci0gICAg
ICAgIExldmVsKGJvb2wgaW5BcnJheV8pIDogdmFsdWVDb3VudCgwKSwgaW5BcnJheShpbkFycmF5
Xykge30KLSAgICAgICAgc2l6ZV90IHZhbHVlQ291bnQ7ICAvLyE8IG51bWJlciBvZiB2YWx1ZXMg
aW4gdGhpcyBsZXZlbAotICAgICAgICBib29sIGluQXJyYXk7ICAgICAgIC8vITwgdHJ1ZSBpZiBp
biBhcnJheSwgb3RoZXJ3aXNlIGluIG9iamVjdAotICAgIH07Ci0KLSAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IGtEZWZhdWx0TGV2ZWxEZXB0aCA9IDMyOwotCi0gICAgYm9vbCBXcml0ZU51bGwoKSAg
ewotICAgICAgICBvc18tPlB1dCgnbicpOyBvc18tPlB1dCgndScpOyBvc18tPlB1dCgnbCcpOyBv
c18tPlB1dCgnbCcpOyByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBib29sIFdyaXRlQm9vbChi
b29sIGIpICB7Ci0gICAgICAgIGlmIChiKSB7Ci0gICAgICAgICAgICBvc18tPlB1dCgndCcpOyBv
c18tPlB1dCgncicpOyBvc18tPlB1dCgndScpOyBvc18tPlB1dCgnZScpOwotICAgICAgICB9Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgb3NfLT5QdXQoJ2YnKTsgb3NfLT5QdXQoJ2EnKTsg
b3NfLT5QdXQoJ2wnKTsgb3NfLT5QdXQoJ3MnKTsgb3NfLT5QdXQoJ2UnKTsKLSAgICAgICAgfQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBib29sIFdyaXRlSW50KGludCBpKSB7
Ci0gICAgICAgIGNoYXIgYnVmZmVyWzExXTsKLSAgICAgICAgY29uc3QgY2hhciogZW5kID0gaW50
ZXJuYWw6OmkzMnRvYShpLCBidWZmZXIpOwotICAgICAgICBmb3IgKGNvbnN0IGNoYXIqIHAgPSBi
dWZmZXI7IHAgIT0gZW5kOyArK3ApCi0gICAgICAgICAgICBvc18tPlB1dCgqcCk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGJvb2wgV3JpdGVVaW50KHVuc2lnbmVkIHUpIHsK
LSAgICAgICAgY2hhciBidWZmZXJbMTBdOwotICAgICAgICBjb25zdCBjaGFyKiBlbmQgPSBpbnRl
cm5hbDo6dTMydG9hKHUsIGJ1ZmZlcik7Ci0gICAgICAgIGZvciAoY29uc3QgY2hhciogcCA9IGJ1
ZmZlcjsgcCAhPSBlbmQ7ICsrcCkKLSAgICAgICAgICAgIG9zXy0+UHV0KCpwKTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBXcml0ZUludDY0KGludDY0X3QgaTY0KSB7
Ci0gICAgICAgIGNoYXIgYnVmZmVyWzIxXTsKLSAgICAgICAgY29uc3QgY2hhciogZW5kID0gaW50
ZXJuYWw6Omk2NHRvYShpNjQsIGJ1ZmZlcik7Ci0gICAgICAgIGZvciAoY29uc3QgY2hhciogcCA9
IGJ1ZmZlcjsgcCAhPSBlbmQ7ICsrcCkKLSAgICAgICAgICAgIG9zXy0+UHV0KCpwKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgYm9vbCBXcml0ZVVpbnQ2NCh1aW50NjRfdCB1
NjQpIHsKLSAgICAgICAgY2hhciBidWZmZXJbMjBdOwotICAgICAgICBjaGFyKiBlbmQgPSBpbnRl
cm5hbDo6dTY0dG9hKHU2NCwgYnVmZmVyKTsKLSAgICAgICAgZm9yIChjaGFyKiBwID0gYnVmZmVy
OyBwICE9IGVuZDsgKytwKQotICAgICAgICAgICAgb3NfLT5QdXQoKnApOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBib29sIFdyaXRlRG91YmxlKGRvdWJsZSBkKSB7Ci0gICAg
ICAgIGNoYXIgYnVmZmVyWzI1XTsKLSAgICAgICAgY2hhciogZW5kID0gaW50ZXJuYWw6OmR0b2Eo
ZCwgYnVmZmVyKTsKLSAgICAgICAgZm9yIChjaGFyKiBwID0gYnVmZmVyOyBwICE9IGVuZDsgKytw
KQotICAgICAgICAgICAgb3NfLT5QdXQoKnApOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0KLSAgICBib29sIFdyaXRlU3RyaW5nKGNvbnN0IENoKiBzdHIsIFNpemVUeXBlIGxlbmd0aCkg
IHsKLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIgaGV4RGlnaXRzWzE2XSA9IHsgJzAnLCAnMScs
ICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsICc4JywgJzknLCAnQScsICdCJywgJ0MnLCAn
RCcsICdFJywgJ0YnIH07Ci0gICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGVzY2FwZVsyNTZdID0g
ewotI2RlZmluZSBaMTYgMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMAotICAgICAgICAg
ICAgLy8wICAgIDEgICAgMiAgICAzICAgIDQgICAgNSAgICA2ICAgIDcgICAgOCAgICA5ICAgIEEg
ICAgQiAgICBDICAgIEQgICAgRSAgICBGCi0gICAgICAgICAgICAndScsICd1JywgJ3UnLCAndScs
ICd1JywgJ3UnLCAndScsICd1JywgJ2InLCAndCcsICduJywgJ3UnLCAnZicsICdyJywgJ3UnLCAn
dScsIC8vIDAwCi0gICAgICAgICAgICAndScsICd1JywgJ3UnLCAndScsICd1JywgJ3UnLCAndScs
ICd1JywgJ3UnLCAndScsICd1JywgJ3UnLCAndScsICd1JywgJ3UnLCAndScsIC8vIDEwCi0gICAg
ICAgICAgICAgIDAsICAgMCwgJyInLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsIC8vIDIwCi0gICAgICAgICAgICBaMTYsIFox
NiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIDMwfjRGCi0gICAgICAgICAgICAgIDAsICAgMCwgICAwLCAgIDAs
ICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMCwgICAwLCdcXCcsICAgMCwgICAwLCAg
IDAsIC8vIDUwCi0gICAgICAgICAgICBaMTYsIFoxNiwgWjE2LCBaMTYsIFoxNiwgWjE2LCBaMTYs
IFoxNiwgWjE2LCBaMTYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDYwfkZGCi0j
dW5kZWYgWjE2Ci0gICAgICAgIH07Ci0KLSAgICAgICAgb3NfLT5QdXQoJ1wiJyk7Ci0gICAgICAg
IEdlbmVyaWNTdHJpbmdTdHJlYW08U291cmNlRW5jb2Rpbmc+IGlzKHN0cik7Ci0gICAgICAgIHdo
aWxlIChpcy5UZWxsKCkgPCBsZW5ndGgpIHsKLSAgICAgICAgICAgIGNvbnN0IENoIGMgPSBpcy5Q
ZWVrKCk7Ci0gICAgICAgICAgICBpZiAoIVRhcmdldEVuY29kaW5nOjpzdXBwb3J0VW5pY29kZSAm
JiAodW5zaWduZWQpYyA+PSAweDgwKSB7Ci0gICAgICAgICAgICAgICAgLy8gVW5pY29kZSBlc2Nh
cGluZwotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNvZGVwb2ludDsKLSAgICAgICAgICAgICAg
ICBpZiAoIVNvdXJjZUVuY29kaW5nOjpEZWNvZGUoaXMsICZjb2RlcG9pbnQpKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgb3NfLT5QdXQoJ1xcJyk7
Ci0gICAgICAgICAgICAgICAgb3NfLT5QdXQoJ3UnKTsKLSAgICAgICAgICAgICAgICBpZiAoY29k
ZXBvaW50IDw9IDB4RDdGRiB8fCAoY29kZXBvaW50ID49IDB4RTAwMCAmJiBjb2RlcG9pbnQgPD0g
MHhGRkZGKSkgewotICAgICAgICAgICAgICAgICAgICBvc18tPlB1dChoZXhEaWdpdHNbKGNvZGVw
b2ludCA+PiAxMikgJiAxNV0pOwotICAgICAgICAgICAgICAgICAgICBvc18tPlB1dChoZXhEaWdp
dHNbKGNvZGVwb2ludCA+PiAgOCkgJiAxNV0pOwotICAgICAgICAgICAgICAgICAgICBvc18tPlB1
dChoZXhEaWdpdHNbKGNvZGVwb2ludCA+PiAgNCkgJiAxNV0pOwotICAgICAgICAgICAgICAgICAg
ICBvc18tPlB1dChoZXhEaWdpdHNbKGNvZGVwb2ludCAgICAgICkgJiAxNV0pOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChjb2RlcG9pbnQgPj0gMHgwMTAwMDAg
JiYgY29kZXBvaW50IDw9IDB4MTBGRkZGKSAgICB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFN1
cnJvZ2F0ZSBwYWlyCi0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHMgPSBjb2RlcG9pbnQg
LSAweDAxMDAwMDsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbGVhZCA9IChzID4+IDEw
KSArIDB4RDgwMDsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdHJhaWwgPSAocyAmIDB4
M0ZGKSArIDB4REMwMDsKLSAgICAgICAgICAgICAgICAgICAgb3NfLT5QdXQoaGV4RGlnaXRzWyhs
ZWFkID4+IDEyKSAmIDE1XSk7Ci0gICAgICAgICAgICAgICAgICAgIG9zXy0+UHV0KGhleERpZ2l0
c1sobGVhZCA+PiAgOCkgJiAxNV0pOwotICAgICAgICAgICAgICAgICAgICBvc18tPlB1dChoZXhE
aWdpdHNbKGxlYWQgPj4gIDQpICYgMTVdKTsKLSAgICAgICAgICAgICAgICAgICAgb3NfLT5QdXQo
aGV4RGlnaXRzWyhsZWFkICAgICAgKSAmIDE1XSk7Ci0gICAgICAgICAgICAgICAgICAgIG9zXy0+
UHV0KCdcXCcpOwotICAgICAgICAgICAgICAgICAgICBvc18tPlB1dCgndScpOwotICAgICAgICAg
ICAgICAgICAgICBvc18tPlB1dChoZXhEaWdpdHNbKHRyYWlsID4+IDEyKSAmIDE1XSk7Ci0gICAg
ICAgICAgICAgICAgICAgIG9zXy0+UHV0KGhleERpZ2l0c1sodHJhaWwgPj4gIDgpICYgMTVdKTsK
LSAgICAgICAgICAgICAgICAgICAgb3NfLT5QdXQoaGV4RGlnaXRzWyh0cmFpbCA+PiAgNCkgJiAx
NV0pOwotICAgICAgICAgICAgICAgICAgICBvc18tPlB1dChoZXhEaWdpdHNbKHRyYWlsICAgICAg
KSAmIDE1XSk7ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgLy8gaW52
YWxpZCBjb2RlIHBvaW50Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgoc2l6
ZW9mKENoKSA9PSAxIHx8ICh1bnNpZ25lZCljIDwgMjU2KSAmJiBlc2NhcGVbKHVuc2lnbmVkIGNo
YXIpY10pICB7Ci0gICAgICAgICAgICAgICAgaXMuVGFrZSgpOwotICAgICAgICAgICAgICAgIG9z
Xy0+UHV0KCdcXCcpOwotICAgICAgICAgICAgICAgIG9zXy0+UHV0KGVzY2FwZVsodW5zaWduZWQg
Y2hhciljXSk7Ci0gICAgICAgICAgICAgICAgaWYgKGVzY2FwZVsodW5zaWduZWQgY2hhciljXSA9
PSAndScpIHsKLSAgICAgICAgICAgICAgICAgICAgb3NfLT5QdXQoJzAnKTsKLSAgICAgICAgICAg
ICAgICAgICAgb3NfLT5QdXQoJzAnKTsKLSAgICAgICAgICAgICAgICAgICAgb3NfLT5QdXQoaGV4
RGlnaXRzWyh1bnNpZ25lZCBjaGFyKWMgPj4gNF0pOwotICAgICAgICAgICAgICAgICAgICBvc18t
PlB1dChoZXhEaWdpdHNbKHVuc2lnbmVkIGNoYXIpYyAmIDB4Rl0pOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBUcmFu
c2NvZGVyPFNvdXJjZUVuY29kaW5nLCBUYXJnZXRFbmNvZGluZz46OlRyYW5zY29kZShpcywgKm9z
Xyk7Ci0gICAgICAgIH0KLSAgICAgICAgb3NfLT5QdXQoJ1wiJyk7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLQotICAgIGJvb2wgV3JpdGVTdGFydE9iamVjdCgpIHsgb3NfLT5QdXQoJ3sn
KTsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIFdyaXRlRW5kT2JqZWN0KCkgICB7IG9zXy0+UHV0
KCd9Jyk7IHJldHVybiB0cnVlOyB9Ci0gICAgYm9vbCBXcml0ZVN0YXJ0QXJyYXkoKSAgeyBvc18t
PlB1dCgnWycpOyByZXR1cm4gdHJ1ZTsgfQotICAgIGJvb2wgV3JpdGVFbmRBcnJheSgpICAgIHsg
b3NfLT5QdXQoJ10nKTsgcmV0dXJuIHRydWU7IH0KLQotICAgIHZvaWQgUHJlZml4KFR5cGUgdHlw
ZSkgewotICAgICAgICAodm9pZCl0eXBlOwotICAgICAgICBpZiAobGV2ZWxfc3RhY2tfLkdldFNp
emUoKSAhPSAwKSB7IC8vIHRoaXMgdmFsdWUgaXMgbm90IGF0IHJvb3QKLSAgICAgICAgICAgIExl
dmVsKiBsZXZlbCA9IGxldmVsX3N0YWNrXy50ZW1wbGF0ZSBUb3A8TGV2ZWw+KCk7Ci0gICAgICAg
ICAgICBpZiAobGV2ZWwtPnZhbHVlQ291bnQgPiAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxl
dmVsLT5pbkFycmF5KSAKLSAgICAgICAgICAgICAgICAgICAgb3NfLT5QdXQoJywnKTsgLy8gYWRk
IGNvbW1hIGlmIGl0IGlzIG5vdCB0aGUgZmlyc3QgZWxlbWVudCBpbiBhcnJheQotICAgICAgICAg
ICAgICAgIGVsc2UgIC8vIGluIG9iamVjdAotICAgICAgICAgICAgICAgICAgICBvc18tPlB1dCgo
bGV2ZWwtPnZhbHVlQ291bnQgJSAyID09IDApID8gJywnIDogJzonKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGlmICghbGV2ZWwtPmluQXJyYXkgJiYgbGV2ZWwtPnZhbHVlQ291bnQgJSAy
ID09IDApCi0gICAgICAgICAgICAgICAgUkFQSURKU09OX0FTU0VSVCh0eXBlID09IGtTdHJpbmdU
eXBlKTsgIC8vIGlmIGl0J3MgaW4gb2JqZWN0LCB0aGVuIGV2ZW4gbnVtYmVyIHNob3VsZCBiZSBh
IG5hbWUKLSAgICAgICAgICAgIGxldmVsLT52YWx1ZUNvdW50Kys7Ci0gICAgICAgIH0KLSAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBSQVBJREpTT05fQVNTRVJUKCFoYXNSb290Xyk7ICAgIC8v
IFNob3VsZCBvbmx5IGhhcyBvbmUgYW5kIG9ubHkgb25lIHJvb3QuCi0gICAgICAgICAgICBoYXNS
b290XyA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBPdXRwdXRTdHJlYW0qIG9zXzsK
LSAgICBpbnRlcm5hbDo6U3RhY2s8U3RhY2tBbGxvY2F0b3I+IGxldmVsX3N0YWNrXzsKLSAgICBi
b29sIGhhc1Jvb3RfOwotCi1wcml2YXRlOgotICAgIC8vIFByb2hpYml0IGNvcHkgY29uc3RydWN0
b3IgJiBhc3NpZ25tZW50IG9wZXJhdG9yLgotICAgIFdyaXRlcihjb25zdCBXcml0ZXImKTsKLSAg
ICBXcml0ZXImIG9wZXJhdG9yPShjb25zdCBXcml0ZXImKTsKLX07Ci0KLS8vIEZ1bGwgc3BlY2lh
bGl6YXRpb24gZm9yIFN0cmluZ1N0cmVhbSB0byBwcmV2ZW50IG1lbW9yeSBjb3B5aW5nCi0KLXRl
bXBsYXRlPD4KLWlubGluZSBib29sIFdyaXRlcjxTdHJpbmdCdWZmZXI+OjpXcml0ZUludChpbnQg
aSkgewotICAgIGNoYXIgKmJ1ZmZlciA9IG9zXy0+UHVzaCgxMSk7Ci0gICAgY29uc3QgY2hhciog
ZW5kID0gaW50ZXJuYWw6OmkzMnRvYShpLCBidWZmZXIpOwotICAgIG9zXy0+UG9wKDExIC0gKGVu
ZCAtIGJ1ZmZlcikpOwotICAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTw+Ci1pbmxpbmUg
Ym9vbCBXcml0ZXI8U3RyaW5nQnVmZmVyPjo6V3JpdGVVaW50KHVuc2lnbmVkIHUpIHsKLSAgICBj
aGFyICpidWZmZXIgPSBvc18tPlB1c2goMTApOwotICAgIGNvbnN0IGNoYXIqIGVuZCA9IGludGVy
bmFsOjp1MzJ0b2EodSwgYnVmZmVyKTsKLSAgICBvc18tPlBvcCgxMCAtIChlbmQgLSBidWZmZXIp
KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGU8PgotaW5saW5lIGJvb2wgV3JpdGVy
PFN0cmluZ0J1ZmZlcj46OldyaXRlSW50NjQoaW50NjRfdCBpNjQpIHsKLSAgICBjaGFyICpidWZm
ZXIgPSBvc18tPlB1c2goMjEpOwotICAgIGNvbnN0IGNoYXIqIGVuZCA9IGludGVybmFsOjppNjR0
b2EoaTY0LCBidWZmZXIpOwotICAgIG9zXy0+UG9wKDIxIC0gKGVuZCAtIGJ1ZmZlcikpOwotICAg
IHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCBXcml0ZXI8U3RyaW5n
QnVmZmVyPjo6V3JpdGVVaW50NjQodWludDY0X3QgdSkgewotICAgIGNoYXIgKmJ1ZmZlciA9IG9z
Xy0+UHVzaCgyMCk7Ci0gICAgY29uc3QgY2hhciogZW5kID0gaW50ZXJuYWw6OnU2NHRvYSh1LCBi
dWZmZXIpOwotICAgIG9zXy0+UG9wKDIwIC0gKGVuZCAtIGJ1ZmZlcikpOwotICAgIHJldHVybiB0
cnVlOwotfQotCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCBXcml0ZXI8U3RyaW5nQnVmZmVyPjo6
V3JpdGVEb3VibGUoZG91YmxlIGQpIHsKLSAgICBjaGFyICpidWZmZXIgPSBvc18tPlB1c2goMjUp
OwotICAgIGNoYXIqIGVuZCA9IGludGVybmFsOjpkdG9hKGQsIGJ1ZmZlcik7Ci0gICAgb3NfLT5Q
b3AoMjUgLSAoZW5kIC0gYnVmZmVyKSk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVJBUElESlNP
Tl9OQU1FU1BBQ0VfRU5ECi0KLSNpZmRlZiBfTVNDX1ZFUgotUkFQSURKU09OX0RJQUdfUE9QCi0j
ZW5kaWYKLQotI2VuZGlmIC8vIFJBUElESlNPTl9SQVBJREpTT05fSF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5k
c0NsYW1wZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2Nv
bXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5jcHAKaW5kZXggZmE2YzhiOGQ3OWIuLmFhZGI4NzU1
M2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkv
Y29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGhpcmRfcGFydHkvY29tcGlsZXIvQXJyYXlCb3VuZHNDbGFtcGVyLmNwcApAQCAt
MzgsNyArMzgsMTEgQEAgY29uc3QgY2hhcioga0ludENsYW1wQmVnaW4gPSAiLy8gQkVHSU46IEdl
bmVyYXRlZCBjb2RlIGZvciBhcnJheSBib3VuZHMgY2xhbXBpbmcKIGNvbnN0IGNoYXIqIGtJbnRD
bGFtcEVuZCA9ICIvLyBFTkQ6IEdlbmVyYXRlZCBjb2RlIGZvciBhcnJheSBib3VuZHMgY2xhbXBp
bmdcblxuIjsKIGNvbnN0IGNoYXIqIGtJbnRDbGFtcERlZmluaXRpb24gPSAiaW50IHdlYmdsX2lu
dF9jbGFtcChpbnQgdmFsdWUsIGludCBtaW5WYWx1ZSwgaW50IG1heFZhbHVlKSB7IHJldHVybiAo
KHZhbHVlIDwgbWluVmFsdWUpID8gbWluVmFsdWUgOiAoKHZhbHVlID4gbWF4VmFsdWUpID8gbWF4
VmFsdWUgOiB2YWx1ZSkpOyB9XG5cbiI7CiAKLW5hbWVzcGFjZSB7CituYW1lc3BhY2Ugc2gKK3sK
KworbmFtZXNwYWNlCit7CiAKIGNsYXNzIEFycmF5Qm91bmRzQ2xhbXBlck1hcmtlciA6IHB1Ymxp
YyBUSW50ZXJtVHJhdmVyc2VyIHsKIHB1YmxpYzoKQEAgLTEwNSwzICsxMDksNSBAQCB2b2lkIEFy
cmF5Qm91bmRzQ2xhbXBlcjo6T3V0cHV0Q2xhbXBpbmdGdW5jdGlvbkRlZmluaXRpb24oVEluZm9T
aW5rQmFzZSYgb3V0KSBjbwogICAgIH0KICAgICBvdXQgPDwga0ludENsYW1wQmVnaW4gPDwga0lu
dENsYW1wRGVmaW5pdGlvbiA8PCBrSW50Q2xhbXBFbmQ7CiB9CisKK30gIC8vIG5hbWVzcGFjZSBz
aApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2Nv
bXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3RoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oCmluZGV4IDI3OTE3ZTZl
ZWNjLi5hNGM0MDdmNzYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L3RoaXJkX3BhcnR5L2NvbXBpbGVyL0FycmF5Qm91bmRzQ2xhbXBlci5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9jb21waWxlci9BcnJheUJvdW5kc0NsYW1w
ZXIuaApAQCAtMjksOCArMjksMTIgQEAKICNpbmNsdWRlICJjb21waWxlci90cmFuc2xhdG9yL0lu
Zm9TaW5rLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvdHJhbnNsYXRvci9JbnRlcm1Ob2RlLmgiCiAK
LWNsYXNzIEFycmF5Qm91bmRzQ2xhbXBlciB7Ci1wdWJsaWM6CituYW1lc3BhY2Ugc2gKK3sKKwor
Y2xhc3MgQXJyYXlCb3VuZHNDbGFtcGVyCit7CisgIHB1YmxpYzoKICAgICBBcnJheUJvdW5kc0Ns
YW1wZXIoKTsKIAogICAgIC8vIE11c3QgYmUgc2V0IGJlZm9yZSBjb21waWxpbmcgYW55IHNoYWRl
cnMgdG8gZW5zdXJlIGNvbnNpc3RlbmN5CkBAIC01Nyw0ICs2MSw2IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtQXJyYXlCb3VuZHNDbGFtcERlZmluaXRpb25OZWVkZWQ7CiB9OwogCit9ICAvLyBuYW1l
c3BhY2Ugc2gKKwogI2VuZGlmIC8vIFRISVJEX1BBUlRZX0NPTVBJTEVSX0FSUkFZQk9VTkRTQ0xB
TVBFUl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3Bh
cnR5L2tocm9ub3MvR0wvd2dsZXh0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhp
cmRfcGFydHkva2hyb25vcy9HTC93Z2xleHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZGFiYTQxMDkxYzQuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90aGlyZF9wYXJ0eS9raHJvbm9zL0dML3dnbGV4dC5oCisrKyAvZGV2L251bGwKQEAgLTEs
ODQwICswLDAgQEAKLSNpZm5kZWYgX193Z2xleHRfaF8KLSNkZWZpbmUgX193Z2xleHRfaF8gMQot
Ci0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qCi0qKiBDb3B5
cmlnaHQgKGMpIDIwMTMtMjAxNCBUaGUgS2hyb25vcyBHcm91cCBJbmMuCi0qKgotKiogUGVybWlz
c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0
YWluaW5nIGEKLSoqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQvb3IgYXNzb2NpYXRlZCBkb2N1
bWVudGF0aW9uIGZpbGVzICh0aGUKLSoqICJNYXRlcmlhbHMiKSwgdG8gZGVhbCBpbiB0aGUgTWF0
ZXJpYWxzIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZwotKiogd2l0aG91dCBsaW1pdGF0
aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAotKiog
ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBNYXRlcmlh
bHMsIGFuZCB0bwotKiogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgTWF0ZXJpYWxzIGFyZSBm
dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8KLSoqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
czoKLSoqCi0qKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u
IG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAotKiogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlh
bCBwb3J0aW9ucyBvZiB0aGUgTWF0ZXJpYWxzLgotKioKLSoqIFRIRSBNQVRFUklBTFMgQVJFIFBS
T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi0qKiBFWFBSRVNT
IE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg
T0YKLSoqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QU5EIE5PTklORlJJTkdFTUVOVC4KLSoqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9S
IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZCi0qKiBDTEFJTSwgREFNQUdFUyBP
UiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULAotKiog
VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g
V0lUSCBUSEUKLSoqIE1BVEVSSUFMUyBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRI
RSBNQVRFUklBTFMuCi0qLwotLyoKLSoqIFRoaXMgaGVhZGVyIGlzIGdlbmVyYXRlZCBmcm9tIHRo
ZSBLaHJvbm9zIE9wZW5HTCAvIE9wZW5HTCBFUyBYTUwKLSoqIEFQSSBSZWdpc3RyeS4gVGhlIGN1
cnJlbnQgdmVyc2lvbiBvZiB0aGUgUmVnaXN0cnksIGdlbmVyYXRvciBzY3JpcHRzCi0qKiB1c2Vk
IHRvIG1ha2UgdGhlIGhlYWRlciwgYW5kIHRoZSBoZWFkZXIgY2FuIGJlIGZvdW5kIGF0Ci0qKiAg
IGh0dHA6Ly93d3cub3BlbmdsLm9yZy9yZWdpc3RyeS8KLSoqCi0qKiBLaHJvbm9zICRSZXZpc2lv
bjogMjc2ODQgJCBvbiAkRGF0ZTogMjAxNC0wOC0xMSAwMToyMTozNSAtMDcwMCAoTW9uLCAxMSBB
dWcgMjAxNCkgJAotKi8KLQotI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChBUElFTlRS
WSkgJiYgIWRlZmluZWQoX19DWUdXSU5fXykgJiYgIWRlZmluZWQoX19TQ0lURUNIX1NOQVBfXykK
LSNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTiAxCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2Vu
ZGlmCi0KLSNkZWZpbmUgV0dMX1dHTEVYVF9WRVJTSU9OIDIwMTQwODEwCi0KLS8qIEdlbmVyYXRl
ZCBDIGhlYWRlciBmb3I6Ci0gKiBBUEk6IHdnbAotICogVmVyc2lvbnMgY29uc2lkZXJlZDogLioK
LSAqIFZlcnNpb25zIGVtaXR0ZWQ6IF9ub21hdGNoX14KLSAqIERlZmF1bHQgZXh0ZW5zaW9ucyBp
bmNsdWRlZDogd2dsCi0gKiBBZGRpdGlvbmFsIGV4dGVuc2lvbnMgaW5jbHVkZWQ6IF9ub21hdGNo
X14KLSAqIEV4dGVuc2lvbnMgcmVtb3ZlZDogX25vbWF0Y2hfXgotICovCi0KLSNpZm5kZWYgV0dM
X0FSQl9idWZmZXJfcmVnaW9uCi0jZGVmaW5lIFdHTF9BUkJfYnVmZmVyX3JlZ2lvbiAxCi0jZGVm
aW5lIFdHTF9GUk9OVF9DT0xPUl9CVUZGRVJfQklUX0FSQiAgICAweDAwMDAwMDAxCi0jZGVmaW5l
IFdHTF9CQUNLX0NPTE9SX0JVRkZFUl9CSVRfQVJCICAgICAweDAwMDAwMDAyCi0jZGVmaW5lIFdH
TF9ERVBUSF9CVUZGRVJfQklUX0FSQiAgICAgICAgICAweDAwMDAwMDA0Ci0jZGVmaW5lIFdHTF9T
VEVOQ0lMX0JVRkZFUl9CSVRfQVJCICAgICAgICAweDAwMDAwMDA4Ci10eXBlZGVmIEhBTkRMRSAo
V0lOQVBJICogUEZOV0dMQ1JFQVRFQlVGRkVSUkVHSU9OQVJCUFJPQykgKEhEQyBoREMsIGludCBp
TGF5ZXJQbGFuZSwgVUlOVCB1VHlwZSk7Ci10eXBlZGVmIFZPSUQgKFdJTkFQSSAqIFBGTldHTERF
TEVURUJVRkZFUlJFR0lPTkFSQlBST0MpIChIQU5ETEUgaFJlZ2lvbik7Ci10eXBlZGVmIEJPT0wg
KFdJTkFQSSAqIFBGTldHTFNBVkVCVUZGRVJSRUdJT05BUkJQUk9DKSAoSEFORExFIGhSZWdpb24s
IGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLXR5cGVkZWYgQk9PTCAoV0lO
QVBJICogUEZOV0dMUkVTVE9SRUJVRkZFUlJFR0lPTkFSQlBST0MpIChIQU5ETEUgaFJlZ2lvbiwg
aW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCB4U3JjLCBpbnQgeVNyYyk7
Ci0jaWZkZWYgV0dMX1dHTEVYVF9QUk9UT1RZUEVTCi1IQU5ETEUgV0lOQVBJIHdnbENyZWF0ZUJ1
ZmZlclJlZ2lvbkFSQiAoSERDIGhEQywgaW50IGlMYXllclBsYW5lLCBVSU5UIHVUeXBlKTsKLVZP
SUQgV0lOQVBJIHdnbERlbGV0ZUJ1ZmZlclJlZ2lvbkFSQiAoSEFORExFIGhSZWdpb24pOwotQk9P
TCBXSU5BUEkgd2dsU2F2ZUJ1ZmZlclJlZ2lvbkFSQiAoSEFORExFIGhSZWdpb24sIGludCB4LCBp
bnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKLUJPT0wgV0lOQVBJIHdnbFJlc3RvcmVCdWZm
ZXJSZWdpb25BUkIgKEhBTkRMRSBoUmVnaW9uLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50
IGhlaWdodCwgaW50IHhTcmMsIGludCB5U3JjKTsKLSNlbmRpZgotI2VuZGlmIC8qIFdHTF9BUkJf
YnVmZmVyX3JlZ2lvbiAqLwotCi0jaWZuZGVmIFdHTF9BUkJfY29udGV4dF9mbHVzaF9jb250cm9s
Ci0jZGVmaW5lIFdHTF9BUkJfY29udGV4dF9mbHVzaF9jb250cm9sIDEKLSNkZWZpbmUgV0dMX0NP
TlRFWFRfUkVMRUFTRV9CRUhBVklPUl9BUkIgIDB4MjA5NwotI2RlZmluZSBXR0xfQ09OVEVYVF9S
RUxFQVNFX0JFSEFWSU9SX05PTkVfQVJCIDAKLSNkZWZpbmUgV0dMX0NPTlRFWFRfUkVMRUFTRV9C
RUhBVklPUl9GTFVTSF9BUkIgMHgyMDk4Ci0jZW5kaWYgLyogV0dMX0FSQl9jb250ZXh0X2ZsdXNo
X2NvbnRyb2wgKi8KLQotI2lmbmRlZiBXR0xfQVJCX2NyZWF0ZV9jb250ZXh0Ci0jZGVmaW5lIFdH
TF9BUkJfY3JlYXRlX2NvbnRleHQgMQotI2RlZmluZSBXR0xfQ09OVEVYVF9ERUJVR19CSVRfQVJC
ICAgICAgICAgMHgwMDAwMDAwMQotI2RlZmluZSBXR0xfQ09OVEVYVF9GT1JXQVJEX0NPTVBBVElC
TEVfQklUX0FSQiAweDAwMDAwMDAyCi0jZGVmaW5lIFdHTF9DT05URVhUX01BSk9SX1ZFUlNJT05f
QVJCICAgICAweDIwOTEKLSNkZWZpbmUgV0dMX0NPTlRFWFRfTUlOT1JfVkVSU0lPTl9BUkIgICAg
IDB4MjA5MgotI2RlZmluZSBXR0xfQ09OVEVYVF9MQVlFUl9QTEFORV9BUkIgICAgICAgMHgyMDkz
Ci0jZGVmaW5lIFdHTF9DT05URVhUX0ZMQUdTX0FSQiAgICAgICAgICAgICAweDIwOTQKLSNkZWZp
bmUgRVJST1JfSU5WQUxJRF9WRVJTSU9OX0FSQiAgICAgICAgIDB4MjA5NQotdHlwZWRlZiBIR0xS
QyAoV0lOQVBJICogUEZOV0dMQ1JFQVRFQ09OVEVYVEFUVFJJQlNBUkJQUk9DKSAoSERDIGhEQywg
SEdMUkMgaFNoYXJlQ29udGV4dCwgY29uc3QgaW50ICphdHRyaWJMaXN0KTsKLSNpZmRlZiBXR0xf
V0dMRVhUX1BST1RPVFlQRVMKLUhHTFJDIFdJTkFQSSB3Z2xDcmVhdGVDb250ZXh0QXR0cmlic0FS
QiAoSERDIGhEQywgSEdMUkMgaFNoYXJlQ29udGV4dCwgY29uc3QgaW50ICphdHRyaWJMaXN0KTsK
LSNlbmRpZgotI2VuZGlmIC8qIFdHTF9BUkJfY3JlYXRlX2NvbnRleHQgKi8KLQotI2lmbmRlZiBX
R0xfQVJCX2NyZWF0ZV9jb250ZXh0X3Byb2ZpbGUKLSNkZWZpbmUgV0dMX0FSQl9jcmVhdGVfY29u
dGV4dF9wcm9maWxlIDEKLSNkZWZpbmUgV0dMX0NPTlRFWFRfUFJPRklMRV9NQVNLX0FSQiAgICAg
IDB4OTEyNgotI2RlZmluZSBXR0xfQ09OVEVYVF9DT1JFX1BST0ZJTEVfQklUX0FSQiAgMHgwMDAw
MDAwMQotI2RlZmluZSBXR0xfQ09OVEVYVF9DT01QQVRJQklMSVRZX1BST0ZJTEVfQklUX0FSQiAw
eDAwMDAwMDAyCi0jZGVmaW5lIEVSUk9SX0lOVkFMSURfUFJPRklMRV9BUkIgICAgICAgICAweDIw
OTYKLSNlbmRpZiAvKiBXR0xfQVJCX2NyZWF0ZV9jb250ZXh0X3Byb2ZpbGUgKi8KLQotI2lmbmRl
ZiBXR0xfQVJCX2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3MKLSNkZWZpbmUgV0dMX0FSQl9jcmVh
dGVfY29udGV4dF9yb2J1c3RuZXNzIDEKLSNkZWZpbmUgV0dMX0NPTlRFWFRfUk9CVVNUX0FDQ0VT
U19CSVRfQVJCIDB4MDAwMDAwMDQKLSNkZWZpbmUgV0dMX0xPU0VfQ09OVEVYVF9PTl9SRVNFVF9B
UkIgICAgIDB4ODI1MgotI2RlZmluZSBXR0xfQ09OVEVYVF9SRVNFVF9OT1RJRklDQVRJT05fU1RS
QVRFR1lfQVJCIDB4ODI1NgotI2RlZmluZSBXR0xfTk9fUkVTRVRfTk9USUZJQ0FUSU9OX0FSQiAg
ICAgMHg4MjYxCi0jZW5kaWYgLyogV0dMX0FSQl9jcmVhdGVfY29udGV4dF9yb2J1c3RuZXNzICov
Ci0KLSNpZm5kZWYgV0dMX0FSQl9leHRlbnNpb25zX3N0cmluZwotI2RlZmluZSBXR0xfQVJCX2V4
dGVuc2lvbnNfc3RyaW5nIDEKLXR5cGVkZWYgY29uc3QgY2hhciAqKFdJTkFQSSAqIFBGTldHTEdF
VEVYVEVOU0lPTlNTVFJJTkdBUkJQUk9DKSAoSERDIGhkYyk7Ci0jaWZkZWYgV0dMX1dHTEVYVF9Q
Uk9UT1RZUEVTCi1jb25zdCBjaGFyICpXSU5BUEkgd2dsR2V0RXh0ZW5zaW9uc1N0cmluZ0FSQiAo
SERDIGhkYyk7Ci0jZW5kaWYKLSNlbmRpZiAvKiBXR0xfQVJCX2V4dGVuc2lvbnNfc3RyaW5nICov
Ci0KLSNpZm5kZWYgV0dMX0FSQl9mcmFtZWJ1ZmZlcl9zUkdCCi0jZGVmaW5lIFdHTF9BUkJfZnJh
bWVidWZmZXJfc1JHQiAxCi0jZGVmaW5lIFdHTF9GUkFNRUJVRkZFUl9TUkdCX0NBUEFCTEVfQVJC
ICAweDIwQTkKLSNlbmRpZiAvKiBXR0xfQVJCX2ZyYW1lYnVmZmVyX3NSR0IgKi8KLQotI2lmbmRl
ZiBXR0xfQVJCX21ha2VfY3VycmVudF9yZWFkCi0jZGVmaW5lIFdHTF9BUkJfbWFrZV9jdXJyZW50
X3JlYWQgMQotI2RlZmluZSBFUlJPUl9JTlZBTElEX1BJWEVMX1RZUEVfQVJCICAgICAgMHgyMDQz
Ci0jZGVmaW5lIEVSUk9SX0lOQ09NUEFUSUJMRV9ERVZJQ0VfQ09OVEVYVFNfQVJCIDB4MjA1NAot
dHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xNQUtFQ09OVEVYVENVUlJFTlRBUkJQUk9DKSAo
SERDIGhEcmF3REMsIEhEQyBoUmVhZERDLCBIR0xSQyBoZ2xyYyk7Ci10eXBlZGVmIEhEQyAoV0lO
QVBJICogUEZOV0dMR0VUQ1VSUkVOVFJFQUREQ0FSQlBST0MpICh2b2lkKTsKLSNpZmRlZiBXR0xf
V0dMRVhUX1BST1RPVFlQRVMKLUJPT0wgV0lOQVBJIHdnbE1ha2VDb250ZXh0Q3VycmVudEFSQiAo
SERDIGhEcmF3REMsIEhEQyBoUmVhZERDLCBIR0xSQyBoZ2xyYyk7Ci1IREMgV0lOQVBJIHdnbEdl
dEN1cnJlbnRSZWFkRENBUkIgKHZvaWQpOwotI2VuZGlmCi0jZW5kaWYgLyogV0dMX0FSQl9tYWtl
X2N1cnJlbnRfcmVhZCAqLwotCi0jaWZuZGVmIFdHTF9BUkJfbXVsdGlzYW1wbGUKLSNkZWZpbmUg
V0dMX0FSQl9tdWx0aXNhbXBsZSAxCi0jZGVmaW5lIFdHTF9TQU1QTEVfQlVGRkVSU19BUkIgICAg
ICAgICAgICAweDIwNDEKLSNkZWZpbmUgV0dMX1NBTVBMRVNfQVJCICAgICAgICAgICAgICAgICAg
IDB4MjA0MgotI2VuZGlmIC8qIFdHTF9BUkJfbXVsdGlzYW1wbGUgKi8KLQotI2lmbmRlZiBXR0xf
QVJCX3BidWZmZXIKLSNkZWZpbmUgV0dMX0FSQl9wYnVmZmVyIDEKLURFQ0xBUkVfSEFORExFKEhQ
QlVGRkVSQVJCKTsKLSNkZWZpbmUgV0dMX0RSQVdfVE9fUEJVRkZFUl9BUkIgICAgICAgICAgIDB4
MjAyRAotI2RlZmluZSBXR0xfTUFYX1BCVUZGRVJfUElYRUxTX0FSQiAgICAgICAgMHgyMDJFCi0j
ZGVmaW5lIFdHTF9NQVhfUEJVRkZFUl9XSURUSF9BUkIgICAgICAgICAweDIwMkYKLSNkZWZpbmUg
V0dMX01BWF9QQlVGRkVSX0hFSUdIVF9BUkIgICAgICAgIDB4MjAzMAotI2RlZmluZSBXR0xfUEJV
RkZFUl9MQVJHRVNUX0FSQiAgICAgICAgICAgMHgyMDMzCi0jZGVmaW5lIFdHTF9QQlVGRkVSX1dJ
RFRIX0FSQiAgICAgICAgICAgICAweDIwMzQKLSNkZWZpbmUgV0dMX1BCVUZGRVJfSEVJR0hUX0FS
QiAgICAgICAgICAgIDB4MjAzNQotI2RlZmluZSBXR0xfUEJVRkZFUl9MT1NUX0FSQiAgICAgICAg
ICAgICAgMHgyMDM2Ci10eXBlZGVmIEhQQlVGRkVSQVJCIChXSU5BUEkgKiBQRk5XR0xDUkVBVEVQ
QlVGRkVSQVJCUFJPQykgKEhEQyBoREMsIGludCBpUGl4ZWxGb3JtYXQsIGludCBpV2lkdGgsIGlu
dCBpSGVpZ2h0LCBjb25zdCBpbnQgKnBpQXR0cmliTGlzdCk7Ci10eXBlZGVmIEhEQyAoV0lOQVBJ
ICogUEZOV0dMR0VUUEJVRkZFUkRDQVJCUFJPQykgKEhQQlVGRkVSQVJCIGhQYnVmZmVyKTsKLXR5
cGVkZWYgaW50IChXSU5BUEkgKiBQRk5XR0xSRUxFQVNFUEJVRkZFUkRDQVJCUFJPQykgKEhQQlVG
RkVSQVJCIGhQYnVmZmVyLCBIREMgaERDKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dM
REVTVFJPWVBCVUZGRVJBUkJQUk9DKSAoSFBCVUZGRVJBUkIgaFBidWZmZXIpOwotdHlwZWRlZiBC
T09MIChXSU5BUEkgKiBQRk5XR0xRVUVSWVBCVUZGRVJBUkJQUk9DKSAoSFBCVUZGRVJBUkIgaFBi
dWZmZXIsIGludCBpQXR0cmlidXRlLCBpbnQgKnBpVmFsdWUpOwotI2lmZGVmIFdHTF9XR0xFWFRf
UFJPVE9UWVBFUwotSFBCVUZGRVJBUkIgV0lOQVBJIHdnbENyZWF0ZVBidWZmZXJBUkIgKEhEQyBo
REMsIGludCBpUGl4ZWxGb3JtYXQsIGludCBpV2lkdGgsIGludCBpSGVpZ2h0LCBjb25zdCBpbnQg
KnBpQXR0cmliTGlzdCk7Ci1IREMgV0lOQVBJIHdnbEdldFBidWZmZXJEQ0FSQiAoSFBCVUZGRVJB
UkIgaFBidWZmZXIpOwotaW50IFdJTkFQSSB3Z2xSZWxlYXNlUGJ1ZmZlckRDQVJCIChIUEJVRkZF
UkFSQiBoUGJ1ZmZlciwgSERDIGhEQyk7Ci1CT09MIFdJTkFQSSB3Z2xEZXN0cm95UGJ1ZmZlckFS
QiAoSFBCVUZGRVJBUkIgaFBidWZmZXIpOwotQk9PTCBXSU5BUEkgd2dsUXVlcnlQYnVmZmVyQVJC
IChIUEJVRkZFUkFSQiBoUGJ1ZmZlciwgaW50IGlBdHRyaWJ1dGUsIGludCAqcGlWYWx1ZSk7Ci0j
ZW5kaWYKLSNlbmRpZiAvKiBXR0xfQVJCX3BidWZmZXIgKi8KLQotI2lmbmRlZiBXR0xfQVJCX3Bp
eGVsX2Zvcm1hdAotI2RlZmluZSBXR0xfQVJCX3BpeGVsX2Zvcm1hdCAxCi0jZGVmaW5lIFdHTF9O
VU1CRVJfUElYRUxfRk9STUFUU19BUkIgICAgICAweDIwMDAKLSNkZWZpbmUgV0dMX0RSQVdfVE9f
V0lORE9XX0FSQiAgICAgICAgICAgIDB4MjAwMQotI2RlZmluZSBXR0xfRFJBV19UT19CSVRNQVBf
QVJCICAgICAgICAgICAgMHgyMDAyCi0jZGVmaW5lIFdHTF9BQ0NFTEVSQVRJT05fQVJCICAgICAg
ICAgICAgICAweDIwMDMKLSNkZWZpbmUgV0dMX05FRURfUEFMRVRURV9BUkIgICAgICAgICAgICAg
IDB4MjAwNAotI2RlZmluZSBXR0xfTkVFRF9TWVNURU1fUEFMRVRURV9BUkIgICAgICAgMHgyMDA1
Ci0jZGVmaW5lIFdHTF9TV0FQX0xBWUVSX0JVRkZFUlNfQVJCICAgICAgICAweDIwMDYKLSNkZWZp
bmUgV0dMX1NXQVBfTUVUSE9EX0FSQiAgICAgICAgICAgICAgIDB4MjAwNwotI2RlZmluZSBXR0xf
TlVNQkVSX09WRVJMQVlTX0FSQiAgICAgICAgICAgMHgyMDA4Ci0jZGVmaW5lIFdHTF9OVU1CRVJf
VU5ERVJMQVlTX0FSQiAgICAgICAgICAweDIwMDkKLSNkZWZpbmUgV0dMX1RSQU5TUEFSRU5UX0FS
QiAgICAgICAgICAgICAgIDB4MjAwQQotI2RlZmluZSBXR0xfVFJBTlNQQVJFTlRfUkVEX1ZBTFVF
X0FSQiAgICAgMHgyMDM3Ci0jZGVmaW5lIFdHTF9UUkFOU1BBUkVOVF9HUkVFTl9WQUxVRV9BUkIg
ICAweDIwMzgKLSNkZWZpbmUgV0dMX1RSQU5TUEFSRU5UX0JMVUVfVkFMVUVfQVJCICAgIDB4MjAz
OQotI2RlZmluZSBXR0xfVFJBTlNQQVJFTlRfQUxQSEFfVkFMVUVfQVJCICAgMHgyMDNBCi0jZGVm
aW5lIFdHTF9UUkFOU1BBUkVOVF9JTkRFWF9WQUxVRV9BUkIgICAweDIwM0IKLSNkZWZpbmUgV0dM
X1NIQVJFX0RFUFRIX0FSQiAgICAgICAgICAgICAgIDB4MjAwQwotI2RlZmluZSBXR0xfU0hBUkVf
U1RFTkNJTF9BUkIgICAgICAgICAgICAgMHgyMDBECi0jZGVmaW5lIFdHTF9TSEFSRV9BQ0NVTV9B
UkIgICAgICAgICAgICAgICAweDIwMEUKLSNkZWZpbmUgV0dMX1NVUFBPUlRfR0RJX0FSQiAgICAg
ICAgICAgICAgIDB4MjAwRgotI2RlZmluZSBXR0xfU1VQUE9SVF9PUEVOR0xfQVJCICAgICAgICAg
ICAgMHgyMDEwCi0jZGVmaW5lIFdHTF9ET1VCTEVfQlVGRkVSX0FSQiAgICAgICAgICAgICAweDIw
MTEKLSNkZWZpbmUgV0dMX1NURVJFT19BUkIgICAgICAgICAgICAgICAgICAgIDB4MjAxMgotI2Rl
ZmluZSBXR0xfUElYRUxfVFlQRV9BUkIgICAgICAgICAgICAgICAgMHgyMDEzCi0jZGVmaW5lIFdH
TF9DT0xPUl9CSVRTX0FSQiAgICAgICAgICAgICAgICAweDIwMTQKLSNkZWZpbmUgV0dMX1JFRF9C
SVRTX0FSQiAgICAgICAgICAgICAgICAgIDB4MjAxNQotI2RlZmluZSBXR0xfUkVEX1NISUZUX0FS
QiAgICAgICAgICAgICAgICAgMHgyMDE2Ci0jZGVmaW5lIFdHTF9HUkVFTl9CSVRTX0FSQiAgICAg
ICAgICAgICAgICAweDIwMTcKLSNkZWZpbmUgV0dMX0dSRUVOX1NISUZUX0FSQiAgICAgICAgICAg
ICAgIDB4MjAxOAotI2RlZmluZSBXR0xfQkxVRV9CSVRTX0FSQiAgICAgICAgICAgICAgICAgMHgy
MDE5Ci0jZGVmaW5lIFdHTF9CTFVFX1NISUZUX0FSQiAgICAgICAgICAgICAgICAweDIwMUEKLSNk
ZWZpbmUgV0dMX0FMUEhBX0JJVFNfQVJCICAgICAgICAgICAgICAgIDB4MjAxQgotI2RlZmluZSBX
R0xfQUxQSEFfU0hJRlRfQVJCICAgICAgICAgICAgICAgMHgyMDFDCi0jZGVmaW5lIFdHTF9BQ0NV
TV9CSVRTX0FSQiAgICAgICAgICAgICAgICAweDIwMUQKLSNkZWZpbmUgV0dMX0FDQ1VNX1JFRF9C
SVRTX0FSQiAgICAgICAgICAgIDB4MjAxRQotI2RlZmluZSBXR0xfQUNDVU1fR1JFRU5fQklUU19B
UkIgICAgICAgICAgMHgyMDFGCi0jZGVmaW5lIFdHTF9BQ0NVTV9CTFVFX0JJVFNfQVJCICAgICAg
ICAgICAweDIwMjAKLSNkZWZpbmUgV0dMX0FDQ1VNX0FMUEhBX0JJVFNfQVJCICAgICAgICAgIDB4
MjAyMQotI2RlZmluZSBXR0xfREVQVEhfQklUU19BUkIgICAgICAgICAgICAgICAgMHgyMDIyCi0j
ZGVmaW5lIFdHTF9TVEVOQ0lMX0JJVFNfQVJCICAgICAgICAgICAgICAweDIwMjMKLSNkZWZpbmUg
V0dMX0FVWF9CVUZGRVJTX0FSQiAgICAgICAgICAgICAgIDB4MjAyNAotI2RlZmluZSBXR0xfTk9f
QUNDRUxFUkFUSU9OX0FSQiAgICAgICAgICAgMHgyMDI1Ci0jZGVmaW5lIFdHTF9HRU5FUklDX0FD
Q0VMRVJBVElPTl9BUkIgICAgICAweDIwMjYKLSNkZWZpbmUgV0dMX0ZVTExfQUNDRUxFUkFUSU9O
X0FSQiAgICAgICAgIDB4MjAyNwotI2RlZmluZSBXR0xfU1dBUF9FWENIQU5HRV9BUkIgICAgICAg
ICAgICAgMHgyMDI4Ci0jZGVmaW5lIFdHTF9TV0FQX0NPUFlfQVJCICAgICAgICAgICAgICAgICAw
eDIwMjkKLSNkZWZpbmUgV0dMX1NXQVBfVU5ERUZJTkVEX0FSQiAgICAgICAgICAgIDB4MjAyQQot
I2RlZmluZSBXR0xfVFlQRV9SR0JBX0FSQiAgICAgICAgICAgICAgICAgMHgyMDJCCi0jZGVmaW5l
IFdHTF9UWVBFX0NPTE9SSU5ERVhfQVJCICAgICAgICAgICAweDIwMkMKLXR5cGVkZWYgQk9PTCAo
V0lOQVBJICogUEZOV0dMR0VUUElYRUxGT1JNQVRBVFRSSUJJVkFSQlBST0MpIChIREMgaGRjLCBp
bnQgaVBpeGVsRm9ybWF0LCBpbnQgaUxheWVyUGxhbmUsIFVJTlQgbkF0dHJpYnV0ZXMsIGNvbnN0
IGludCAqcGlBdHRyaWJ1dGVzLCBpbnQgKnBpVmFsdWVzKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJ
ICogUEZOV0dMR0VUUElYRUxGT1JNQVRBVFRSSUJGVkFSQlBST0MpIChIREMgaGRjLCBpbnQgaVBp
eGVsRm9ybWF0LCBpbnQgaUxheWVyUGxhbmUsIFVJTlQgbkF0dHJpYnV0ZXMsIGNvbnN0IGludCAq
cGlBdHRyaWJ1dGVzLCBGTE9BVCAqcGZWYWx1ZXMpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQ
Rk5XR0xDSE9PU0VQSVhFTEZPUk1BVEFSQlBST0MpIChIREMgaGRjLCBjb25zdCBpbnQgKnBpQXR0
cmliSUxpc3QsIGNvbnN0IEZMT0FUICpwZkF0dHJpYkZMaXN0LCBVSU5UIG5NYXhGb3JtYXRzLCBp
bnQgKnBpRm9ybWF0cywgVUlOVCAqbk51bUZvcm1hdHMpOwotI2lmZGVmIFdHTF9XR0xFWFRfUFJP
VE9UWVBFUwotQk9PTCBXSU5BUEkgd2dsR2V0UGl4ZWxGb3JtYXRBdHRyaWJpdkFSQiAoSERDIGhk
YywgaW50IGlQaXhlbEZvcm1hdCwgaW50IGlMYXllclBsYW5lLCBVSU5UIG5BdHRyaWJ1dGVzLCBj
b25zdCBpbnQgKnBpQXR0cmlidXRlcywgaW50ICpwaVZhbHVlcyk7Ci1CT09MIFdJTkFQSSB3Z2xH
ZXRQaXhlbEZvcm1hdEF0dHJpYmZ2QVJCIChIREMgaGRjLCBpbnQgaVBpeGVsRm9ybWF0LCBpbnQg
aUxheWVyUGxhbmUsIFVJTlQgbkF0dHJpYnV0ZXMsIGNvbnN0IGludCAqcGlBdHRyaWJ1dGVzLCBG
TE9BVCAqcGZWYWx1ZXMpOwotQk9PTCBXSU5BUEkgd2dsQ2hvb3NlUGl4ZWxGb3JtYXRBUkIgKEhE
QyBoZGMsIGNvbnN0IGludCAqcGlBdHRyaWJJTGlzdCwgY29uc3QgRkxPQVQgKnBmQXR0cmliRkxp
c3QsIFVJTlQgbk1heEZvcm1hdHMsIGludCAqcGlGb3JtYXRzLCBVSU5UICpuTnVtRm9ybWF0cyk7
Ci0jZW5kaWYKLSNlbmRpZiAvKiBXR0xfQVJCX3BpeGVsX2Zvcm1hdCAqLwotCi0jaWZuZGVmIFdH
TF9BUkJfcGl4ZWxfZm9ybWF0X2Zsb2F0Ci0jZGVmaW5lIFdHTF9BUkJfcGl4ZWxfZm9ybWF0X2Zs
b2F0IDEKLSNkZWZpbmUgV0dMX1RZUEVfUkdCQV9GTE9BVF9BUkIgICAgICAgICAgIDB4MjFBMAot
I2VuZGlmIC8qIFdHTF9BUkJfcGl4ZWxfZm9ybWF0X2Zsb2F0ICovCi0KLSNpZm5kZWYgV0dMX0FS
Ql9yZW5kZXJfdGV4dHVyZQotI2RlZmluZSBXR0xfQVJCX3JlbmRlcl90ZXh0dXJlIDEKLSNkZWZp
bmUgV0dMX0JJTkRfVE9fVEVYVFVSRV9SR0JfQVJCICAgICAgIDB4MjA3MAotI2RlZmluZSBXR0xf
QklORF9UT19URVhUVVJFX1JHQkFfQVJCICAgICAgMHgyMDcxCi0jZGVmaW5lIFdHTF9URVhUVVJF
X0ZPUk1BVF9BUkIgICAgICAgICAgICAweDIwNzIKLSNkZWZpbmUgV0dMX1RFWFRVUkVfVEFSR0VU
X0FSQiAgICAgICAgICAgIDB4MjA3MwotI2RlZmluZSBXR0xfTUlQTUFQX1RFWFRVUkVfQVJCICAg
ICAgICAgICAgMHgyMDc0Ci0jZGVmaW5lIFdHTF9URVhUVVJFX1JHQl9BUkIgICAgICAgICAgICAg
ICAweDIwNzUKLSNkZWZpbmUgV0dMX1RFWFRVUkVfUkdCQV9BUkIgICAgICAgICAgICAgIDB4MjA3
NgotI2RlZmluZSBXR0xfTk9fVEVYVFVSRV9BUkIgICAgICAgICAgICAgICAgMHgyMDc3Ci0jZGVm
aW5lIFdHTF9URVhUVVJFX0NVQkVfTUFQX0FSQiAgICAgICAgICAweDIwNzgKLSNkZWZpbmUgV0dM
X1RFWFRVUkVfMURfQVJCICAgICAgICAgICAgICAgIDB4MjA3OQotI2RlZmluZSBXR0xfVEVYVFVS
RV8yRF9BUkIgICAgICAgICAgICAgICAgMHgyMDdBCi0jZGVmaW5lIFdHTF9NSVBNQVBfTEVWRUxf
QVJCICAgICAgICAgICAgICAweDIwN0IKLSNkZWZpbmUgV0dMX0NVQkVfTUFQX0ZBQ0VfQVJCICAg
ICAgICAgICAgIDB4MjA3QwotI2RlZmluZSBXR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9Y
X0FSQiAweDIwN0QKLSNkZWZpbmUgV0dMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWF9BUkIg
MHgyMDdFCi0jZGVmaW5lIFdHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1lfQVJCIDB4MjA3
RgotI2RlZmluZSBXR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9ZX0FSQiAweDIwODAKLSNk
ZWZpbmUgV0dMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWl9BUkIgMHgyMDgxCi0jZGVmaW5l
IFdHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1pfQVJCIDB4MjA4MgotI2RlZmluZSBXR0xf
RlJPTlRfTEVGVF9BUkIgICAgICAgICAgICAgICAgMHgyMDgzCi0jZGVmaW5lIFdHTF9GUk9OVF9S
SUdIVF9BUkIgICAgICAgICAgICAgICAweDIwODQKLSNkZWZpbmUgV0dMX0JBQ0tfTEVGVF9BUkIg
ICAgICAgICAgICAgICAgIDB4MjA4NQotI2RlZmluZSBXR0xfQkFDS19SSUdIVF9BUkIgICAgICAg
ICAgICAgICAgMHgyMDg2Ci0jZGVmaW5lIFdHTF9BVVgwX0FSQiAgICAgICAgICAgICAgICAgICAg
ICAweDIwODcKLSNkZWZpbmUgV0dMX0FVWDFfQVJCICAgICAgICAgICAgICAgICAgICAgIDB4MjA4
OAotI2RlZmluZSBXR0xfQVVYMl9BUkIgICAgICAgICAgICAgICAgICAgICAgMHgyMDg5Ci0jZGVm
aW5lIFdHTF9BVVgzX0FSQiAgICAgICAgICAgICAgICAgICAgICAweDIwOEEKLSNkZWZpbmUgV0dM
X0FVWDRfQVJCICAgICAgICAgICAgICAgICAgICAgIDB4MjA4QgotI2RlZmluZSBXR0xfQVVYNV9B
UkIgICAgICAgICAgICAgICAgICAgICAgMHgyMDhDCi0jZGVmaW5lIFdHTF9BVVg2X0FSQiAgICAg
ICAgICAgICAgICAgICAgICAweDIwOEQKLSNkZWZpbmUgV0dMX0FVWDdfQVJCICAgICAgICAgICAg
ICAgICAgICAgIDB4MjA4RQotI2RlZmluZSBXR0xfQVVYOF9BUkIgICAgICAgICAgICAgICAgICAg
ICAgMHgyMDhGCi0jZGVmaW5lIFdHTF9BVVg5X0FSQiAgICAgICAgICAgICAgICAgICAgICAweDIw
OTAKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMQklORFRFWElNQUdFQVJCUFJPQykgKEhQ
QlVGRkVSQVJCIGhQYnVmZmVyLCBpbnQgaUJ1ZmZlcik7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAq
IFBGTldHTFJFTEVBU0VURVhJTUFHRUFSQlBST0MpIChIUEJVRkZFUkFSQiBoUGJ1ZmZlciwgaW50
IGlCdWZmZXIpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xTRVRQQlVGRkVSQVRUUklC
QVJCUFJPQykgKEhQQlVGRkVSQVJCIGhQYnVmZmVyLCBjb25zdCBpbnQgKnBpQXR0cmliTGlzdCk7
Ci0jaWZkZWYgV0dMX1dHTEVYVF9QUk9UT1RZUEVTCi1CT09MIFdJTkFQSSB3Z2xCaW5kVGV4SW1h
Z2VBUkIgKEhQQlVGRkVSQVJCIGhQYnVmZmVyLCBpbnQgaUJ1ZmZlcik7Ci1CT09MIFdJTkFQSSB3
Z2xSZWxlYXNlVGV4SW1hZ2VBUkIgKEhQQlVGRkVSQVJCIGhQYnVmZmVyLCBpbnQgaUJ1ZmZlcik7
Ci1CT09MIFdJTkFQSSB3Z2xTZXRQYnVmZmVyQXR0cmliQVJCIChIUEJVRkZFUkFSQiBoUGJ1ZmZl
ciwgY29uc3QgaW50ICpwaUF0dHJpYkxpc3QpOwotI2VuZGlmCi0jZW5kaWYgLyogV0dMX0FSQl9y
ZW5kZXJfdGV4dHVyZSAqLwotCi0jaWZuZGVmIFdHTF9BUkJfcm9idXN0bmVzc19hcHBsaWNhdGlv
bl9pc29sYXRpb24KLSNkZWZpbmUgV0dMX0FSQl9yb2J1c3RuZXNzX2FwcGxpY2F0aW9uX2lzb2xh
dGlvbiAxCi0jZGVmaW5lIFdHTF9DT05URVhUX1JFU0VUX0lTT0xBVElPTl9CSVRfQVJCIDB4MDAw
MDAwMDgKLSNlbmRpZiAvKiBXR0xfQVJCX3JvYnVzdG5lc3NfYXBwbGljYXRpb25faXNvbGF0aW9u
ICovCi0KLSNpZm5kZWYgV0dMX0FSQl9yb2J1c3RuZXNzX3NoYXJlX2dyb3VwX2lzb2xhdGlvbgot
I2RlZmluZSBXR0xfQVJCX3JvYnVzdG5lc3Nfc2hhcmVfZ3JvdXBfaXNvbGF0aW9uIDEKLSNlbmRp
ZiAvKiBXR0xfQVJCX3JvYnVzdG5lc3Nfc2hhcmVfZ3JvdXBfaXNvbGF0aW9uICovCi0KLSNpZm5k
ZWYgV0dMXzNERlhfbXVsdGlzYW1wbGUKLSNkZWZpbmUgV0dMXzNERlhfbXVsdGlzYW1wbGUgMQot
I2RlZmluZSBXR0xfU0FNUExFX0JVRkZFUlNfM0RGWCAgICAgICAgICAgMHgyMDYwCi0jZGVmaW5l
IFdHTF9TQU1QTEVTXzNERlggICAgICAgICAgICAgICAgICAweDIwNjEKLSNlbmRpZiAvKiBXR0xf
M0RGWF9tdWx0aXNhbXBsZSAqLwotCi0jaWZuZGVmIFdHTF8zRExfc3RlcmVvX2NvbnRyb2wKLSNk
ZWZpbmUgV0dMXzNETF9zdGVyZW9fY29udHJvbCAxCi0jZGVmaW5lIFdHTF9TVEVSRU9fRU1JVFRF
Ul9FTkFCTEVfM0RMICAgICAweDIwNTUKLSNkZWZpbmUgV0dMX1NURVJFT19FTUlUVEVSX0RJU0FC
TEVfM0RMICAgIDB4MjA1NgotI2RlZmluZSBXR0xfU1RFUkVPX1BPTEFSSVRZX05PUk1BTF8zREwg
ICAgMHgyMDU3Ci0jZGVmaW5lIFdHTF9TVEVSRU9fUE9MQVJJVFlfSU5WRVJUXzNETCAgICAweDIw
NTgKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMU0VUU1RFUkVPRU1JVFRFUlNUQVRFM0RM
UFJPQykgKEhEQyBoREMsIFVJTlQgdVN0YXRlKTsKLSNpZmRlZiBXR0xfV0dMRVhUX1BST1RPVFlQ
RVMKLUJPT0wgV0lOQVBJIHdnbFNldFN0ZXJlb0VtaXR0ZXJTdGF0ZTNETCAoSERDIGhEQywgVUlO
VCB1U3RhdGUpOwotI2VuZGlmCi0jZW5kaWYgLyogV0dMXzNETF9zdGVyZW9fY29udHJvbCAqLwot
Ci0jaWZuZGVmIFdHTF9BTURfZ3B1X2Fzc29jaWF0aW9uCi0jZGVmaW5lIFdHTF9BTURfZ3B1X2Fz
c29jaWF0aW9uIDEKLSNkZWZpbmUgV0dMX0dQVV9WRU5ET1JfQU1EICAgICAgICAgICAgICAgIDB4
MUYwMAotI2RlZmluZSBXR0xfR1BVX1JFTkRFUkVSX1NUUklOR19BTUQgICAgICAgMHgxRjAxCi0j
ZGVmaW5lIFdHTF9HUFVfT1BFTkdMX1ZFUlNJT05fU1RSSU5HX0FNRCAweDFGMDIKLSNkZWZpbmUg
V0dMX0dQVV9GQVNURVNUX1RBUkdFVF9HUFVTX0FNRCAgIDB4MjFBMgotI2RlZmluZSBXR0xfR1BV
X1JBTV9BTUQgICAgICAgICAgICAgICAgICAgMHgyMUEzCi0jZGVmaW5lIFdHTF9HUFVfQ0xPQ0tf
QU1EICAgICAgICAgICAgICAgICAweDIxQTQKLSNkZWZpbmUgV0dMX0dQVV9OVU1fUElQRVNfQU1E
ICAgICAgICAgICAgIDB4MjFBNQotI2RlZmluZSBXR0xfR1BVX05VTV9TSU1EX0FNRCAgICAgICAg
ICAgICAgMHgyMUE2Ci0jZGVmaW5lIFdHTF9HUFVfTlVNX1JCX0FNRCAgICAgICAgICAgICAgICAw
eDIxQTcKLSNkZWZpbmUgV0dMX0dQVV9OVU1fU1BJX0FNRCAgICAgICAgICAgICAgIDB4MjFBOAot
dHlwZWRlZiBVSU5UIChXSU5BUEkgKiBQRk5XR0xHRVRHUFVJRFNBTURQUk9DKSAoVUlOVCBtYXhD
b3VudCwgVUlOVCAqaWRzKTsKLXR5cGVkZWYgSU5UIChXSU5BUEkgKiBQRk5XR0xHRVRHUFVJTkZP
QU1EUFJPQykgKFVJTlQgaWQsIGludCBwcm9wZXJ0eSwgR0xlbnVtIGRhdGFUeXBlLCBVSU5UIHNp
emUsIHZvaWQgKmRhdGEpOwotdHlwZWRlZiBVSU5UIChXSU5BUEkgKiBQRk5XR0xHRVRDT05URVhU
R1BVSURBTURQUk9DKSAoSEdMUkMgaGdscmMpOwotdHlwZWRlZiBIR0xSQyAoV0lOQVBJICogUEZO
V0dMQ1JFQVRFQVNTT0NJQVRFRENPTlRFWFRBTURQUk9DKSAoVUlOVCBpZCk7Ci10eXBlZGVmIEhH
TFJDIChXSU5BUEkgKiBQRk5XR0xDUkVBVEVBU1NPQ0lBVEVEQ09OVEVYVEFUVFJJQlNBTURQUk9D
KSAoVUlOVCBpZCwgSEdMUkMgaFNoYXJlQ29udGV4dCwgY29uc3QgaW50ICphdHRyaWJMaXN0KTsK
LXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMREVMRVRFQVNTT0NJQVRFRENPTlRFWFRBTURQ
Uk9DKSAoSEdMUkMgaGdscmMpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xNQUtFQVNT
T0NJQVRFRENPTlRFWFRDVVJSRU5UQU1EUFJPQykgKEhHTFJDIGhnbHJjKTsKLXR5cGVkZWYgSEdM
UkMgKFdJTkFQSSAqIFBGTldHTEdFVENVUlJFTlRBU1NPQ0lBVEVEQ09OVEVYVEFNRFBST0MpICh2
b2lkKTsKLXR5cGVkZWYgVk9JRCAoV0lOQVBJICogUEZOV0dMQkxJVENPTlRFWFRGUkFNRUJVRkZF
UkFNRFBST0MpIChIR0xSQyBkc3RDdHgsIEdMaW50IHNyY1gwLCBHTGludCBzcmNZMCwgR0xpbnQg
c3JjWDEsIEdMaW50IHNyY1kxLCBHTGludCBkc3RYMCwgR0xpbnQgZHN0WTAsIEdMaW50IGRzdFgx
LCBHTGludCBkc3RZMSwgR0xiaXRmaWVsZCBtYXNrLCBHTGVudW0gZmlsdGVyKTsKLSNpZmRlZiBX
R0xfV0dMRVhUX1BST1RPVFlQRVMKLVVJTlQgV0lOQVBJIHdnbEdldEdQVUlEc0FNRCAoVUlOVCBt
YXhDb3VudCwgVUlOVCAqaWRzKTsKLUlOVCBXSU5BUEkgd2dsR2V0R1BVSW5mb0FNRCAoVUlOVCBp
ZCwgaW50IHByb3BlcnR5LCBHTGVudW0gZGF0YVR5cGUsIFVJTlQgc2l6ZSwgdm9pZCAqZGF0YSk7
Ci1VSU5UIFdJTkFQSSB3Z2xHZXRDb250ZXh0R1BVSURBTUQgKEhHTFJDIGhnbHJjKTsKLUhHTFJD
IFdJTkFQSSB3Z2xDcmVhdGVBc3NvY2lhdGVkQ29udGV4dEFNRCAoVUlOVCBpZCk7Ci1IR0xSQyBX
SU5BUEkgd2dsQ3JlYXRlQXNzb2NpYXRlZENvbnRleHRBdHRyaWJzQU1EIChVSU5UIGlkLCBIR0xS
QyBoU2hhcmVDb250ZXh0LCBjb25zdCBpbnQgKmF0dHJpYkxpc3QpOwotQk9PTCBXSU5BUEkgd2ds
RGVsZXRlQXNzb2NpYXRlZENvbnRleHRBTUQgKEhHTFJDIGhnbHJjKTsKLUJPT0wgV0lOQVBJIHdn
bE1ha2VBc3NvY2lhdGVkQ29udGV4dEN1cnJlbnRBTUQgKEhHTFJDIGhnbHJjKTsKLUhHTFJDIFdJ
TkFQSSB3Z2xHZXRDdXJyZW50QXNzb2NpYXRlZENvbnRleHRBTUQgKHZvaWQpOwotVk9JRCBXSU5B
UEkgd2dsQmxpdENvbnRleHRGcmFtZWJ1ZmZlckFNRCAoSEdMUkMgZHN0Q3R4LCBHTGludCBzcmNY
MCwgR0xpbnQgc3JjWTAsIEdMaW50IHNyY1gxLCBHTGludCBzcmNZMSwgR0xpbnQgZHN0WDAsIEdM
aW50IGRzdFkwLCBHTGludCBkc3RYMSwgR0xpbnQgZHN0WTEsIEdMYml0ZmllbGQgbWFzaywgR0xl
bnVtIGZpbHRlcik7Ci0jZW5kaWYKLSNlbmRpZiAvKiBXR0xfQU1EX2dwdV9hc3NvY2lhdGlvbiAq
LwotCi0jaWZuZGVmIFdHTF9BVElfcGl4ZWxfZm9ybWF0X2Zsb2F0Ci0jZGVmaW5lIFdHTF9BVElf
cGl4ZWxfZm9ybWF0X2Zsb2F0IDEKLSNkZWZpbmUgV0dMX1RZUEVfUkdCQV9GTE9BVF9BVEkgICAg
ICAgICAgIDB4MjFBMAotI2VuZGlmIC8qIFdHTF9BVElfcGl4ZWxfZm9ybWF0X2Zsb2F0ICovCi0K
LSNpZm5kZWYgV0dMX0VYVF9jcmVhdGVfY29udGV4dF9lczJfcHJvZmlsZQotI2RlZmluZSBXR0xf
RVhUX2NyZWF0ZV9jb250ZXh0X2VzMl9wcm9maWxlIDEKLSNkZWZpbmUgV0dMX0NPTlRFWFRfRVMy
X1BST0ZJTEVfQklUX0VYVCAgIDB4MDAwMDAwMDQKLSNlbmRpZiAvKiBXR0xfRVhUX2NyZWF0ZV9j
b250ZXh0X2VzMl9wcm9maWxlICovCi0KLSNpZm5kZWYgV0dMX0VYVF9jcmVhdGVfY29udGV4dF9l
c19wcm9maWxlCi0jZGVmaW5lIFdHTF9FWFRfY3JlYXRlX2NvbnRleHRfZXNfcHJvZmlsZSAxCi0j
ZGVmaW5lIFdHTF9DT05URVhUX0VTX1BST0ZJTEVfQklUX0VYVCAgICAweDAwMDAwMDA0Ci0jZW5k
aWYgLyogV0dMX0VYVF9jcmVhdGVfY29udGV4dF9lc19wcm9maWxlICovCi0KLSNpZm5kZWYgV0dM
X0VYVF9kZXB0aF9mbG9hdAotI2RlZmluZSBXR0xfRVhUX2RlcHRoX2Zsb2F0IDEKLSNkZWZpbmUg
V0dMX0RFUFRIX0ZMT0FUX0VYVCAgICAgICAgICAgICAgIDB4MjA0MAotI2VuZGlmIC8qIFdHTF9F
WFRfZGVwdGhfZmxvYXQgKi8KLQotI2lmbmRlZiBXR0xfRVhUX2Rpc3BsYXlfY29sb3JfdGFibGUK
LSNkZWZpbmUgV0dMX0VYVF9kaXNwbGF5X2NvbG9yX3RhYmxlIDEKLXR5cGVkZWYgR0xib29sZWFu
IChXSU5BUEkgKiBQRk5XR0xDUkVBVEVESVNQTEFZQ09MT1JUQUJMRUVYVFBST0MpIChHTHVzaG9y
dCBpZCk7Ci10eXBlZGVmIEdMYm9vbGVhbiAoV0lOQVBJICogUEZOV0dMTE9BRERJU1BMQVlDT0xP
UlRBQkxFRVhUUFJPQykgKGNvbnN0IEdMdXNob3J0ICp0YWJsZSwgR0x1aW50IGxlbmd0aCk7Ci10
eXBlZGVmIEdMYm9vbGVhbiAoV0lOQVBJICogUEZOV0dMQklORERJU1BMQVlDT0xPUlRBQkxFRVhU
UFJPQykgKEdMdXNob3J0IGlkKTsKLXR5cGVkZWYgVk9JRCAoV0lOQVBJICogUEZOV0dMREVTVFJP
WURJU1BMQVlDT0xPUlRBQkxFRVhUUFJPQykgKEdMdXNob3J0IGlkKTsKLSNpZmRlZiBXR0xfV0dM
RVhUX1BST1RPVFlQRVMKLUdMYm9vbGVhbiBXSU5BUEkgd2dsQ3JlYXRlRGlzcGxheUNvbG9yVGFi
bGVFWFQgKEdMdXNob3J0IGlkKTsKLUdMYm9vbGVhbiBXSU5BUEkgd2dsTG9hZERpc3BsYXlDb2xv
clRhYmxlRVhUIChjb25zdCBHTHVzaG9ydCAqdGFibGUsIEdMdWludCBsZW5ndGgpOwotR0xib29s
ZWFuIFdJTkFQSSB3Z2xCaW5kRGlzcGxheUNvbG9yVGFibGVFWFQgKEdMdXNob3J0IGlkKTsKLVZP
SUQgV0lOQVBJIHdnbERlc3Ryb3lEaXNwbGF5Q29sb3JUYWJsZUVYVCAoR0x1c2hvcnQgaWQpOwot
I2VuZGlmCi0jZW5kaWYgLyogV0dMX0VYVF9kaXNwbGF5X2NvbG9yX3RhYmxlICovCi0KLSNpZm5k
ZWYgV0dMX0VYVF9leHRlbnNpb25zX3N0cmluZwotI2RlZmluZSBXR0xfRVhUX2V4dGVuc2lvbnNf
c3RyaW5nIDEKLXR5cGVkZWYgY29uc3QgY2hhciAqKFdJTkFQSSAqIFBGTldHTEdFVEVYVEVOU0lP
TlNTVFJJTkdFWFRQUk9DKSAodm9pZCk7Ci0jaWZkZWYgV0dMX1dHTEVYVF9QUk9UT1RZUEVTCi1j
b25zdCBjaGFyICpXSU5BUEkgd2dsR2V0RXh0ZW5zaW9uc1N0cmluZ0VYVCAodm9pZCk7Ci0jZW5k
aWYKLSNlbmRpZiAvKiBXR0xfRVhUX2V4dGVuc2lvbnNfc3RyaW5nICovCi0KLSNpZm5kZWYgV0dM
X0VYVF9mcmFtZWJ1ZmZlcl9zUkdCCi0jZGVmaW5lIFdHTF9FWFRfZnJhbWVidWZmZXJfc1JHQiAx
Ci0jZGVmaW5lIFdHTF9GUkFNRUJVRkZFUl9TUkdCX0NBUEFCTEVfRVhUICAweDIwQTkKLSNlbmRp
ZiAvKiBXR0xfRVhUX2ZyYW1lYnVmZmVyX3NSR0IgKi8KLQotI2lmbmRlZiBXR0xfRVhUX21ha2Vf
Y3VycmVudF9yZWFkCi0jZGVmaW5lIFdHTF9FWFRfbWFrZV9jdXJyZW50X3JlYWQgMQotI2RlZmlu
ZSBFUlJPUl9JTlZBTElEX1BJWEVMX1RZUEVfRVhUICAgICAgMHgyMDQzCi10eXBlZGVmIEJPT0wg
KFdJTkFQSSAqIFBGTldHTE1BS0VDT05URVhUQ1VSUkVOVEVYVFBST0MpIChIREMgaERyYXdEQywg
SERDIGhSZWFkREMsIEhHTFJDIGhnbHJjKTsKLXR5cGVkZWYgSERDIChXSU5BUEkgKiBQRk5XR0xH
RVRDVVJSRU5UUkVBRERDRVhUUFJPQykgKHZvaWQpOwotI2lmZGVmIFdHTF9XR0xFWFRfUFJPVE9U
WVBFUwotQk9PTCBXSU5BUEkgd2dsTWFrZUNvbnRleHRDdXJyZW50RVhUIChIREMgaERyYXdEQywg
SERDIGhSZWFkREMsIEhHTFJDIGhnbHJjKTsKLUhEQyBXSU5BUEkgd2dsR2V0Q3VycmVudFJlYWRE
Q0VYVCAodm9pZCk7Ci0jZW5kaWYKLSNlbmRpZiAvKiBXR0xfRVhUX21ha2VfY3VycmVudF9yZWFk
ICovCi0KLSNpZm5kZWYgV0dMX0VYVF9tdWx0aXNhbXBsZQotI2RlZmluZSBXR0xfRVhUX211bHRp
c2FtcGxlIDEKLSNkZWZpbmUgV0dMX1NBTVBMRV9CVUZGRVJTX0VYVCAgICAgICAgICAgIDB4MjA0
MQotI2RlZmluZSBXR0xfU0FNUExFU19FWFQgICAgICAgICAgICAgICAgICAgMHgyMDQyCi0jZW5k
aWYgLyogV0dMX0VYVF9tdWx0aXNhbXBsZSAqLwotCi0jaWZuZGVmIFdHTF9FWFRfcGJ1ZmZlcgot
I2RlZmluZSBXR0xfRVhUX3BidWZmZXIgMQotREVDTEFSRV9IQU5ETEUoSFBCVUZGRVJFWFQpOwot
I2RlZmluZSBXR0xfRFJBV19UT19QQlVGRkVSX0VYVCAgICAgICAgICAgMHgyMDJECi0jZGVmaW5l
IFdHTF9NQVhfUEJVRkZFUl9QSVhFTFNfRVhUICAgICAgICAweDIwMkUKLSNkZWZpbmUgV0dMX01B
WF9QQlVGRkVSX1dJRFRIX0VYVCAgICAgICAgIDB4MjAyRgotI2RlZmluZSBXR0xfTUFYX1BCVUZG
RVJfSEVJR0hUX0VYVCAgICAgICAgMHgyMDMwCi0jZGVmaW5lIFdHTF9PUFRJTUFMX1BCVUZGRVJf
V0lEVEhfRVhUICAgICAweDIwMzEKLSNkZWZpbmUgV0dMX09QVElNQUxfUEJVRkZFUl9IRUlHSFRf
RVhUICAgIDB4MjAzMgotI2RlZmluZSBXR0xfUEJVRkZFUl9MQVJHRVNUX0VYVCAgICAgICAgICAg
MHgyMDMzCi0jZGVmaW5lIFdHTF9QQlVGRkVSX1dJRFRIX0VYVCAgICAgICAgICAgICAweDIwMzQK
LSNkZWZpbmUgV0dMX1BCVUZGRVJfSEVJR0hUX0VYVCAgICAgICAgICAgIDB4MjAzNQotdHlwZWRl
ZiBIUEJVRkZFUkVYVCAoV0lOQVBJICogUEZOV0dMQ1JFQVRFUEJVRkZFUkVYVFBST0MpIChIREMg
aERDLCBpbnQgaVBpeGVsRm9ybWF0LCBpbnQgaVdpZHRoLCBpbnQgaUhlaWdodCwgY29uc3QgaW50
ICpwaUF0dHJpYkxpc3QpOwotdHlwZWRlZiBIREMgKFdJTkFQSSAqIFBGTldHTEdFVFBCVUZGRVJE
Q0VYVFBST0MpIChIUEJVRkZFUkVYVCBoUGJ1ZmZlcik7Ci10eXBlZGVmIGludCAoV0lOQVBJICog
UEZOV0dMUkVMRUFTRVBCVUZGRVJEQ0VYVFBST0MpIChIUEJVRkZFUkVYVCBoUGJ1ZmZlciwgSERD
IGhEQyk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTERFU1RST1lQQlVGRkVSRVhUUFJP
QykgKEhQQlVGRkVSRVhUIGhQYnVmZmVyKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dM
UVVFUllQQlVGRkVSRVhUUFJPQykgKEhQQlVGRkVSRVhUIGhQYnVmZmVyLCBpbnQgaUF0dHJpYnV0
ZSwgaW50ICpwaVZhbHVlKTsKLSNpZmRlZiBXR0xfV0dMRVhUX1BST1RPVFlQRVMKLUhQQlVGRkVS
RVhUIFdJTkFQSSB3Z2xDcmVhdGVQYnVmZmVyRVhUIChIREMgaERDLCBpbnQgaVBpeGVsRm9ybWF0
LCBpbnQgaVdpZHRoLCBpbnQgaUhlaWdodCwgY29uc3QgaW50ICpwaUF0dHJpYkxpc3QpOwotSERD
IFdJTkFQSSB3Z2xHZXRQYnVmZmVyRENFWFQgKEhQQlVGRkVSRVhUIGhQYnVmZmVyKTsKLWludCBX
SU5BUEkgd2dsUmVsZWFzZVBidWZmZXJEQ0VYVCAoSFBCVUZGRVJFWFQgaFBidWZmZXIsIEhEQyBo
REMpOwotQk9PTCBXSU5BUEkgd2dsRGVzdHJveVBidWZmZXJFWFQgKEhQQlVGRkVSRVhUIGhQYnVm
ZmVyKTsKLUJPT0wgV0lOQVBJIHdnbFF1ZXJ5UGJ1ZmZlckVYVCAoSFBCVUZGRVJFWFQgaFBidWZm
ZXIsIGludCBpQXR0cmlidXRlLCBpbnQgKnBpVmFsdWUpOwotI2VuZGlmCi0jZW5kaWYgLyogV0dM
X0VYVF9wYnVmZmVyICovCi0KLSNpZm5kZWYgV0dMX0VYVF9waXhlbF9mb3JtYXQKLSNkZWZpbmUg
V0dMX0VYVF9waXhlbF9mb3JtYXQgMQotI2RlZmluZSBXR0xfTlVNQkVSX1BJWEVMX0ZPUk1BVFNf
RVhUICAgICAgMHgyMDAwCi0jZGVmaW5lIFdHTF9EUkFXX1RPX1dJTkRPV19FWFQgICAgICAgICAg
ICAweDIwMDEKLSNkZWZpbmUgV0dMX0RSQVdfVE9fQklUTUFQX0VYVCAgICAgICAgICAgIDB4MjAw
MgotI2RlZmluZSBXR0xfQUNDRUxFUkFUSU9OX0VYVCAgICAgICAgICAgICAgMHgyMDAzCi0jZGVm
aW5lIFdHTF9ORUVEX1BBTEVUVEVfRVhUICAgICAgICAgICAgICAweDIwMDQKLSNkZWZpbmUgV0dM
X05FRURfU1lTVEVNX1BBTEVUVEVfRVhUICAgICAgIDB4MjAwNQotI2RlZmluZSBXR0xfU1dBUF9M
QVlFUl9CVUZGRVJTX0VYVCAgICAgICAgMHgyMDA2Ci0jZGVmaW5lIFdHTF9TV0FQX01FVEhPRF9F
WFQgICAgICAgICAgICAgICAweDIwMDcKLSNkZWZpbmUgV0dMX05VTUJFUl9PVkVSTEFZU19FWFQg
ICAgICAgICAgIDB4MjAwOAotI2RlZmluZSBXR0xfTlVNQkVSX1VOREVSTEFZU19FWFQgICAgICAg
ICAgMHgyMDA5Ci0jZGVmaW5lIFdHTF9UUkFOU1BBUkVOVF9FWFQgICAgICAgICAgICAgICAweDIw
MEEKLSNkZWZpbmUgV0dMX1RSQU5TUEFSRU5UX1ZBTFVFX0VYVCAgICAgICAgIDB4MjAwQgotI2Rl
ZmluZSBXR0xfU0hBUkVfREVQVEhfRVhUICAgICAgICAgICAgICAgMHgyMDBDCi0jZGVmaW5lIFdH
TF9TSEFSRV9TVEVOQ0lMX0VYVCAgICAgICAgICAgICAweDIwMEQKLSNkZWZpbmUgV0dMX1NIQVJF
X0FDQ1VNX0VYVCAgICAgICAgICAgICAgIDB4MjAwRQotI2RlZmluZSBXR0xfU1VQUE9SVF9HRElf
RVhUICAgICAgICAgICAgICAgMHgyMDBGCi0jZGVmaW5lIFdHTF9TVVBQT1JUX09QRU5HTF9FWFQg
ICAgICAgICAgICAweDIwMTAKLSNkZWZpbmUgV0dMX0RPVUJMRV9CVUZGRVJfRVhUICAgICAgICAg
ICAgIDB4MjAxMQotI2RlZmluZSBXR0xfU1RFUkVPX0VYVCAgICAgICAgICAgICAgICAgICAgMHgy
MDEyCi0jZGVmaW5lIFdHTF9QSVhFTF9UWVBFX0VYVCAgICAgICAgICAgICAgICAweDIwMTMKLSNk
ZWZpbmUgV0dMX0NPTE9SX0JJVFNfRVhUICAgICAgICAgICAgICAgIDB4MjAxNAotI2RlZmluZSBX
R0xfUkVEX0JJVFNfRVhUICAgICAgICAgICAgICAgICAgMHgyMDE1Ci0jZGVmaW5lIFdHTF9SRURf
U0hJRlRfRVhUICAgICAgICAgICAgICAgICAweDIwMTYKLSNkZWZpbmUgV0dMX0dSRUVOX0JJVFNf
RVhUICAgICAgICAgICAgICAgIDB4MjAxNwotI2RlZmluZSBXR0xfR1JFRU5fU0hJRlRfRVhUICAg
ICAgICAgICAgICAgMHgyMDE4Ci0jZGVmaW5lIFdHTF9CTFVFX0JJVFNfRVhUICAgICAgICAgICAg
ICAgICAweDIwMTkKLSNkZWZpbmUgV0dMX0JMVUVfU0hJRlRfRVhUICAgICAgICAgICAgICAgIDB4
MjAxQQotI2RlZmluZSBXR0xfQUxQSEFfQklUU19FWFQgICAgICAgICAgICAgICAgMHgyMDFCCi0j
ZGVmaW5lIFdHTF9BTFBIQV9TSElGVF9FWFQgICAgICAgICAgICAgICAweDIwMUMKLSNkZWZpbmUg
V0dMX0FDQ1VNX0JJVFNfRVhUICAgICAgICAgICAgICAgIDB4MjAxRAotI2RlZmluZSBXR0xfQUND
VU1fUkVEX0JJVFNfRVhUICAgICAgICAgICAgMHgyMDFFCi0jZGVmaW5lIFdHTF9BQ0NVTV9HUkVF
Tl9CSVRTX0VYVCAgICAgICAgICAweDIwMUYKLSNkZWZpbmUgV0dMX0FDQ1VNX0JMVUVfQklUU19F
WFQgICAgICAgICAgIDB4MjAyMAotI2RlZmluZSBXR0xfQUNDVU1fQUxQSEFfQklUU19FWFQgICAg
ICAgICAgMHgyMDIxCi0jZGVmaW5lIFdHTF9ERVBUSF9CSVRTX0VYVCAgICAgICAgICAgICAgICAw
eDIwMjIKLSNkZWZpbmUgV0dMX1NURU5DSUxfQklUU19FWFQgICAgICAgICAgICAgIDB4MjAyMwot
I2RlZmluZSBXR0xfQVVYX0JVRkZFUlNfRVhUICAgICAgICAgICAgICAgMHgyMDI0Ci0jZGVmaW5l
IFdHTF9OT19BQ0NFTEVSQVRJT05fRVhUICAgICAgICAgICAweDIwMjUKLSNkZWZpbmUgV0dMX0dF
TkVSSUNfQUNDRUxFUkFUSU9OX0VYVCAgICAgIDB4MjAyNgotI2RlZmluZSBXR0xfRlVMTF9BQ0NF
TEVSQVRJT05fRVhUICAgICAgICAgMHgyMDI3Ci0jZGVmaW5lIFdHTF9TV0FQX0VYQ0hBTkdFX0VY
VCAgICAgICAgICAgICAweDIwMjgKLSNkZWZpbmUgV0dMX1NXQVBfQ09QWV9FWFQgICAgICAgICAg
ICAgICAgIDB4MjAyOQotI2RlZmluZSBXR0xfU1dBUF9VTkRFRklORURfRVhUICAgICAgICAgICAg
MHgyMDJBCi0jZGVmaW5lIFdHTF9UWVBFX1JHQkFfRVhUICAgICAgICAgICAgICAgICAweDIwMkIK
LSNkZWZpbmUgV0dMX1RZUEVfQ09MT1JJTkRFWF9FWFQgICAgICAgICAgIDB4MjAyQwotdHlwZWRl
ZiBCT09MIChXSU5BUEkgKiBQRk5XR0xHRVRQSVhFTEZPUk1BVEFUVFJJQklWRVhUUFJPQykgKEhE
QyBoZGMsIGludCBpUGl4ZWxGb3JtYXQsIGludCBpTGF5ZXJQbGFuZSwgVUlOVCBuQXR0cmlidXRl
cywgaW50ICpwaUF0dHJpYnV0ZXMsIGludCAqcGlWYWx1ZXMpOwotdHlwZWRlZiBCT09MIChXSU5B
UEkgKiBQRk5XR0xHRVRQSVhFTEZPUk1BVEFUVFJJQkZWRVhUUFJPQykgKEhEQyBoZGMsIGludCBp
UGl4ZWxGb3JtYXQsIGludCBpTGF5ZXJQbGFuZSwgVUlOVCBuQXR0cmlidXRlcywgaW50ICpwaUF0
dHJpYnV0ZXMsIEZMT0FUICpwZlZhbHVlcyk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldH
TENIT09TRVBJWEVMRk9STUFURVhUUFJPQykgKEhEQyBoZGMsIGNvbnN0IGludCAqcGlBdHRyaWJJ
TGlzdCwgY29uc3QgRkxPQVQgKnBmQXR0cmliRkxpc3QsIFVJTlQgbk1heEZvcm1hdHMsIGludCAq
cGlGb3JtYXRzLCBVSU5UICpuTnVtRm9ybWF0cyk7Ci0jaWZkZWYgV0dMX1dHTEVYVF9QUk9UT1RZ
UEVTCi1CT09MIFdJTkFQSSB3Z2xHZXRQaXhlbEZvcm1hdEF0dHJpYml2RVhUIChIREMgaGRjLCBp
bnQgaVBpeGVsRm9ybWF0LCBpbnQgaUxheWVyUGxhbmUsIFVJTlQgbkF0dHJpYnV0ZXMsIGludCAq
cGlBdHRyaWJ1dGVzLCBpbnQgKnBpVmFsdWVzKTsKLUJPT0wgV0lOQVBJIHdnbEdldFBpeGVsRm9y
bWF0QXR0cmliZnZFWFQgKEhEQyBoZGMsIGludCBpUGl4ZWxGb3JtYXQsIGludCBpTGF5ZXJQbGFu
ZSwgVUlOVCBuQXR0cmlidXRlcywgaW50ICpwaUF0dHJpYnV0ZXMsIEZMT0FUICpwZlZhbHVlcyk7
Ci1CT09MIFdJTkFQSSB3Z2xDaG9vc2VQaXhlbEZvcm1hdEVYVCAoSERDIGhkYywgY29uc3QgaW50
ICpwaUF0dHJpYklMaXN0LCBjb25zdCBGTE9BVCAqcGZBdHRyaWJGTGlzdCwgVUlOVCBuTWF4Rm9y
bWF0cywgaW50ICpwaUZvcm1hdHMsIFVJTlQgKm5OdW1Gb3JtYXRzKTsKLSNlbmRpZgotI2VuZGlm
IC8qIFdHTF9FWFRfcGl4ZWxfZm9ybWF0ICovCi0KLSNpZm5kZWYgV0dMX0VYVF9waXhlbF9mb3Jt
YXRfcGFja2VkX2Zsb2F0Ci0jZGVmaW5lIFdHTF9FWFRfcGl4ZWxfZm9ybWF0X3BhY2tlZF9mbG9h
dCAxCi0jZGVmaW5lIFdHTF9UWVBFX1JHQkFfVU5TSUdORURfRkxPQVRfRVhUICAweDIwQTgKLSNl
bmRpZiAvKiBXR0xfRVhUX3BpeGVsX2Zvcm1hdF9wYWNrZWRfZmxvYXQgKi8KLQotI2lmbmRlZiBX
R0xfRVhUX3N3YXBfY29udHJvbAotI2RlZmluZSBXR0xfRVhUX3N3YXBfY29udHJvbCAxCi10eXBl
ZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTFNXQVBJTlRFUlZBTEVYVFBST0MpIChpbnQgaW50ZXJ2
YWwpOwotdHlwZWRlZiBpbnQgKFdJTkFQSSAqIFBGTldHTEdFVFNXQVBJTlRFUlZBTEVYVFBST0Mp
ICh2b2lkKTsKLSNpZmRlZiBXR0xfV0dMRVhUX1BST1RPVFlQRVMKLUJPT0wgV0lOQVBJIHdnbFN3
YXBJbnRlcnZhbEVYVCAoaW50IGludGVydmFsKTsKLWludCBXSU5BUEkgd2dsR2V0U3dhcEludGVy
dmFsRVhUICh2b2lkKTsKLSNlbmRpZgotI2VuZGlmIC8qIFdHTF9FWFRfc3dhcF9jb250cm9sICov
Ci0KLSNpZm5kZWYgV0dMX0VYVF9zd2FwX2NvbnRyb2xfdGVhcgotI2RlZmluZSBXR0xfRVhUX3N3
YXBfY29udHJvbF90ZWFyIDEKLSNlbmRpZiAvKiBXR0xfRVhUX3N3YXBfY29udHJvbF90ZWFyICov
Ci0KLSNpZm5kZWYgV0dMX0kzRF9kaWdpdGFsX3ZpZGVvX2NvbnRyb2wKLSNkZWZpbmUgV0dMX0kz
RF9kaWdpdGFsX3ZpZGVvX2NvbnRyb2wgMQotI2RlZmluZSBXR0xfRElHSVRBTF9WSURFT19DVVJT
T1JfQUxQSEFfRlJBTUVCVUZGRVJfSTNEIDB4MjA1MAotI2RlZmluZSBXR0xfRElHSVRBTF9WSURF
T19DVVJTT1JfQUxQSEFfVkFMVUVfSTNEIDB4MjA1MQotI2RlZmluZSBXR0xfRElHSVRBTF9WSURF
T19DVVJTT1JfSU5DTFVERURfSTNEIDB4MjA1MgotI2RlZmluZSBXR0xfRElHSVRBTF9WSURFT19H
QU1NQV9DT1JSRUNURURfSTNEIDB4MjA1MwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xH
RVRESUdJVEFMVklERU9QQVJBTUVURVJTSTNEUFJPQykgKEhEQyBoREMsIGludCBpQXR0cmlidXRl
LCBpbnQgKnBpVmFsdWUpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xTRVRESUdJVEFM
VklERU9QQVJBTUVURVJTSTNEUFJPQykgKEhEQyBoREMsIGludCBpQXR0cmlidXRlLCBjb25zdCBp
bnQgKnBpVmFsdWUpOwotI2lmZGVmIFdHTF9XR0xFWFRfUFJPVE9UWVBFUwotQk9PTCBXSU5BUEkg
d2dsR2V0RGlnaXRhbFZpZGVvUGFyYW1ldGVyc0kzRCAoSERDIGhEQywgaW50IGlBdHRyaWJ1dGUs
IGludCAqcGlWYWx1ZSk7Ci1CT09MIFdJTkFQSSB3Z2xTZXREaWdpdGFsVmlkZW9QYXJhbWV0ZXJz
STNEIChIREMgaERDLCBpbnQgaUF0dHJpYnV0ZSwgY29uc3QgaW50ICpwaVZhbHVlKTsKLSNlbmRp
ZgotI2VuZGlmIC8qIFdHTF9JM0RfZGlnaXRhbF92aWRlb19jb250cm9sICovCi0KLSNpZm5kZWYg
V0dMX0kzRF9nYW1tYQotI2RlZmluZSBXR0xfSTNEX2dhbW1hIDEKLSNkZWZpbmUgV0dMX0dBTU1B
X1RBQkxFX1NJWkVfSTNEICAgICAgICAgIDB4MjA0RQotI2RlZmluZSBXR0xfR0FNTUFfRVhDTFVE
RV9ERVNLVE9QX0kzRCAgICAgMHgyMDRGCi10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTEdF
VEdBTU1BVEFCTEVQQVJBTUVURVJTSTNEUFJPQykgKEhEQyBoREMsIGludCBpQXR0cmlidXRlLCBp
bnQgKnBpVmFsdWUpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xTRVRHQU1NQVRBQkxF
UEFSQU1FVEVSU0kzRFBST0MpIChIREMgaERDLCBpbnQgaUF0dHJpYnV0ZSwgY29uc3QgaW50ICpw
aVZhbHVlKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMR0VUR0FNTUFUQUJMRUkzRFBS
T0MpIChIREMgaERDLCBpbnQgaUVudHJpZXMsIFVTSE9SVCAqcHVSZWQsIFVTSE9SVCAqcHVHcmVl
biwgVVNIT1JUICpwdUJsdWUpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xTRVRHQU1N
QVRBQkxFSTNEUFJPQykgKEhEQyBoREMsIGludCBpRW50cmllcywgY29uc3QgVVNIT1JUICpwdVJl
ZCwgY29uc3QgVVNIT1JUICpwdUdyZWVuLCBjb25zdCBVU0hPUlQgKnB1Qmx1ZSk7Ci0jaWZkZWYg
V0dMX1dHTEVYVF9QUk9UT1RZUEVTCi1CT09MIFdJTkFQSSB3Z2xHZXRHYW1tYVRhYmxlUGFyYW1l
dGVyc0kzRCAoSERDIGhEQywgaW50IGlBdHRyaWJ1dGUsIGludCAqcGlWYWx1ZSk7Ci1CT09MIFdJ
TkFQSSB3Z2xTZXRHYW1tYVRhYmxlUGFyYW1ldGVyc0kzRCAoSERDIGhEQywgaW50IGlBdHRyaWJ1
dGUsIGNvbnN0IGludCAqcGlWYWx1ZSk7Ci1CT09MIFdJTkFQSSB3Z2xHZXRHYW1tYVRhYmxlSTNE
IChIREMgaERDLCBpbnQgaUVudHJpZXMsIFVTSE9SVCAqcHVSZWQsIFVTSE9SVCAqcHVHcmVlbiwg
VVNIT1JUICpwdUJsdWUpOwotQk9PTCBXSU5BUEkgd2dsU2V0R2FtbWFUYWJsZUkzRCAoSERDIGhE
QywgaW50IGlFbnRyaWVzLCBjb25zdCBVU0hPUlQgKnB1UmVkLCBjb25zdCBVU0hPUlQgKnB1R3Jl
ZW4sIGNvbnN0IFVTSE9SVCAqcHVCbHVlKTsKLSNlbmRpZgotI2VuZGlmIC8qIFdHTF9JM0RfZ2Ft
bWEgKi8KLQotI2lmbmRlZiBXR0xfSTNEX2dlbmxvY2sKLSNkZWZpbmUgV0dMX0kzRF9nZW5sb2Nr
IDEKLSNkZWZpbmUgV0dMX0dFTkxPQ0tfU09VUkNFX01VTFRJVklFV19JM0QgIDB4MjA0NAotI2Rl
ZmluZSBXR0xfR0VOTE9DS19TT1VSQ0VfRVhURVJOQUxfU1lOQ19JM0QgMHgyMDQ1Ci0jZGVmaW5l
IFdHTF9HRU5MT0NLX1NPVVJDRV9FWFRFUk5BTF9GSUVMRF9JM0QgMHgyMDQ2Ci0jZGVmaW5lIFdH
TF9HRU5MT0NLX1NPVVJDRV9FWFRFUk5BTF9UVExfSTNEIDB4MjA0NwotI2RlZmluZSBXR0xfR0VO
TE9DS19TT1VSQ0VfRElHSVRBTF9TWU5DX0kzRCAweDIwNDgKLSNkZWZpbmUgV0dMX0dFTkxPQ0tf
U09VUkNFX0RJR0lUQUxfRklFTERfSTNEIDB4MjA0OQotI2RlZmluZSBXR0xfR0VOTE9DS19TT1VS
Q0VfRURHRV9GQUxMSU5HX0kzRCAweDIwNEEKLSNkZWZpbmUgV0dMX0dFTkxPQ0tfU09VUkNFX0VE
R0VfUklTSU5HX0kzRCAweDIwNEIKLSNkZWZpbmUgV0dMX0dFTkxPQ0tfU09VUkNFX0VER0VfQk9U
SF9JM0QgIDB4MjA0QwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xFTkFCTEVHRU5MT0NL
STNEUFJPQykgKEhEQyBoREMpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xESVNBQkxF
R0VOTE9DS0kzRFBST0MpIChIREMgaERDKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dM
SVNFTkFCTEVER0VOTE9DS0kzRFBST0MpIChIREMgaERDLCBCT09MICpwRmxhZyk7Ci10eXBlZGVm
IEJPT0wgKFdJTkFQSSAqIFBGTldHTEdFTkxPQ0tTT1VSQ0VJM0RQUk9DKSAoSERDIGhEQywgVUlO
VCB1U291cmNlKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMR0VUR0VOTE9DS1NPVVJD
RUkzRFBST0MpIChIREMgaERDLCBVSU5UICp1U291cmNlKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJ
ICogUEZOV0dMR0VOTE9DS1NPVVJDRUVER0VJM0RQUk9DKSAoSERDIGhEQywgVUlOVCB1RWRnZSk7
Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTEdFVEdFTkxPQ0tTT1VSQ0VFREdFSTNEUFJP
QykgKEhEQyBoREMsIFVJTlQgKnVFZGdlKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dM
R0VOTE9DS1NBTVBMRVJBVEVJM0RQUk9DKSAoSERDIGhEQywgVUlOVCB1UmF0ZSk7Ci10eXBlZGVm
IEJPT0wgKFdJTkFQSSAqIFBGTldHTEdFVEdFTkxPQ0tTQU1QTEVSQVRFSTNEUFJPQykgKEhEQyBo
REMsIFVJTlQgKnVSYXRlKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMR0VOTE9DS1NP
VVJDRURFTEFZSTNEUFJPQykgKEhEQyBoREMsIFVJTlQgdURlbGF5KTsKLXR5cGVkZWYgQk9PTCAo
V0lOQVBJICogUEZOV0dMR0VUR0VOTE9DS1NPVVJDRURFTEFZSTNEUFJPQykgKEhEQyBoREMsIFVJ
TlQgKnVEZWxheSk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTFFVRVJZR0VOTE9DS01B
WFNPVVJDRURFTEFZSTNEUFJPQykgKEhEQyBoREMsIFVJTlQgKnVNYXhMaW5lRGVsYXksIFVJTlQg
KnVNYXhQaXhlbERlbGF5KTsKLSNpZmRlZiBXR0xfV0dMRVhUX1BST1RPVFlQRVMKLUJPT0wgV0lO
QVBJIHdnbEVuYWJsZUdlbmxvY2tJM0QgKEhEQyBoREMpOwotQk9PTCBXSU5BUEkgd2dsRGlzYWJs
ZUdlbmxvY2tJM0QgKEhEQyBoREMpOwotQk9PTCBXSU5BUEkgd2dsSXNFbmFibGVkR2VubG9ja0kz
RCAoSERDIGhEQywgQk9PTCAqcEZsYWcpOwotQk9PTCBXSU5BUEkgd2dsR2VubG9ja1NvdXJjZUkz
RCAoSERDIGhEQywgVUlOVCB1U291cmNlKTsKLUJPT0wgV0lOQVBJIHdnbEdldEdlbmxvY2tTb3Vy
Y2VJM0QgKEhEQyBoREMsIFVJTlQgKnVTb3VyY2UpOwotQk9PTCBXSU5BUEkgd2dsR2VubG9ja1Nv
dXJjZUVkZ2VJM0QgKEhEQyBoREMsIFVJTlQgdUVkZ2UpOwotQk9PTCBXSU5BUEkgd2dsR2V0R2Vu
bG9ja1NvdXJjZUVkZ2VJM0QgKEhEQyBoREMsIFVJTlQgKnVFZGdlKTsKLUJPT0wgV0lOQVBJIHdn
bEdlbmxvY2tTYW1wbGVSYXRlSTNEIChIREMgaERDLCBVSU5UIHVSYXRlKTsKLUJPT0wgV0lOQVBJ
IHdnbEdldEdlbmxvY2tTYW1wbGVSYXRlSTNEIChIREMgaERDLCBVSU5UICp1UmF0ZSk7Ci1CT09M
IFdJTkFQSSB3Z2xHZW5sb2NrU291cmNlRGVsYXlJM0QgKEhEQyBoREMsIFVJTlQgdURlbGF5KTsK
LUJPT0wgV0lOQVBJIHdnbEdldEdlbmxvY2tTb3VyY2VEZWxheUkzRCAoSERDIGhEQywgVUlOVCAq
dURlbGF5KTsKLUJPT0wgV0lOQVBJIHdnbFF1ZXJ5R2VubG9ja01heFNvdXJjZURlbGF5STNEIChI
REMgaERDLCBVSU5UICp1TWF4TGluZURlbGF5LCBVSU5UICp1TWF4UGl4ZWxEZWxheSk7Ci0jZW5k
aWYKLSNlbmRpZiAvKiBXR0xfSTNEX2dlbmxvY2sgKi8KLQotI2lmbmRlZiBXR0xfSTNEX2ltYWdl
X2J1ZmZlcgotI2RlZmluZSBXR0xfSTNEX2ltYWdlX2J1ZmZlciAxCi0jZGVmaW5lIFdHTF9JTUFH
RV9CVUZGRVJfTUlOX0FDQ0VTU19JM0QgICAweDAwMDAwMDAxCi0jZGVmaW5lIFdHTF9JTUFHRV9C
VUZGRVJfTE9DS19JM0QgICAgICAgICAweDAwMDAwMDAyCi10eXBlZGVmIExQVk9JRCAoV0lOQVBJ
ICogUEZOV0dMQ1JFQVRFSU1BR0VCVUZGRVJJM0RQUk9DKSAoSERDIGhEQywgRFdPUkQgZHdTaXpl
LCBVSU5UIHVGbGFncyk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTERFU1RST1lJTUFH
RUJVRkZFUkkzRFBST0MpIChIREMgaERDLCBMUFZPSUQgcEFkZHJlc3MpOwotdHlwZWRlZiBCT09M
IChXSU5BUEkgKiBQRk5XR0xBU1NPQ0lBVEVJTUFHRUJVRkZFUkVWRU5UU0kzRFBST0MpIChIREMg
aERDLCBjb25zdCBIQU5ETEUgKnBFdmVudCwgY29uc3QgTFBWT0lEICpwQWRkcmVzcywgY29uc3Qg
RFdPUkQgKnBTaXplLCBVSU5UIGNvdW50KTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dM
UkVMRUFTRUlNQUdFQlVGRkVSRVZFTlRTSTNEUFJPQykgKEhEQyBoREMsIGNvbnN0IExQVk9JRCAq
cEFkZHJlc3MsIFVJTlQgY291bnQpOwotI2lmZGVmIFdHTF9XR0xFWFRfUFJPVE9UWVBFUwotTFBW
T0lEIFdJTkFQSSB3Z2xDcmVhdGVJbWFnZUJ1ZmZlckkzRCAoSERDIGhEQywgRFdPUkQgZHdTaXpl
LCBVSU5UIHVGbGFncyk7Ci1CT09MIFdJTkFQSSB3Z2xEZXN0cm95SW1hZ2VCdWZmZXJJM0QgKEhE
QyBoREMsIExQVk9JRCBwQWRkcmVzcyk7Ci1CT09MIFdJTkFQSSB3Z2xBc3NvY2lhdGVJbWFnZUJ1
ZmZlckV2ZW50c0kzRCAoSERDIGhEQywgY29uc3QgSEFORExFICpwRXZlbnQsIGNvbnN0IExQVk9J
RCAqcEFkZHJlc3MsIGNvbnN0IERXT1JEICpwU2l6ZSwgVUlOVCBjb3VudCk7Ci1CT09MIFdJTkFQ
SSB3Z2xSZWxlYXNlSW1hZ2VCdWZmZXJFdmVudHNJM0QgKEhEQyBoREMsIGNvbnN0IExQVk9JRCAq
cEFkZHJlc3MsIFVJTlQgY291bnQpOwotI2VuZGlmCi0jZW5kaWYgLyogV0dMX0kzRF9pbWFnZV9i
dWZmZXIgKi8KLQotI2lmbmRlZiBXR0xfSTNEX3N3YXBfZnJhbWVfbG9jawotI2RlZmluZSBXR0xf
STNEX3N3YXBfZnJhbWVfbG9jayAxCi10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTEVOQUJM
RUZSQU1FTE9DS0kzRFBST0MpICh2b2lkKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dM
RElTQUJMRUZSQU1FTE9DS0kzRFBST0MpICh2b2lkKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICog
UEZOV0dMSVNFTkFCTEVERlJBTUVMT0NLSTNEUFJPQykgKEJPT0wgKnBGbGFnKTsKLXR5cGVkZWYg
Qk9PTCAoV0lOQVBJICogUEZOV0dMUVVFUllGUkFNRUxPQ0tNQVNURVJJM0RQUk9DKSAoQk9PTCAq
cEZsYWcpOwotI2lmZGVmIFdHTF9XR0xFWFRfUFJPVE9UWVBFUwotQk9PTCBXSU5BUEkgd2dsRW5h
YmxlRnJhbWVMb2NrSTNEICh2b2lkKTsKLUJPT0wgV0lOQVBJIHdnbERpc2FibGVGcmFtZUxvY2tJ
M0QgKHZvaWQpOwotQk9PTCBXSU5BUEkgd2dsSXNFbmFibGVkRnJhbWVMb2NrSTNEIChCT09MICpw
RmxhZyk7Ci1CT09MIFdJTkFQSSB3Z2xRdWVyeUZyYW1lTG9ja01hc3RlckkzRCAoQk9PTCAqcEZs
YWcpOwotI2VuZGlmCi0jZW5kaWYgLyogV0dMX0kzRF9zd2FwX2ZyYW1lX2xvY2sgKi8KLQotI2lm
bmRlZiBXR0xfSTNEX3N3YXBfZnJhbWVfdXNhZ2UKLSNkZWZpbmUgV0dMX0kzRF9zd2FwX2ZyYW1l
X3VzYWdlIDEKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMR0VURlJBTUVVU0FHRUkzRFBS
T0MpIChmbG9hdCAqcFVzYWdlKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMQkVHSU5G
UkFNRVRSQUNLSU5HSTNEUFJPQykgKHZvaWQpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5X
R0xFTkRGUkFNRVRSQUNLSU5HSTNEUFJPQykgKHZvaWQpOwotdHlwZWRlZiBCT09MIChXSU5BUEkg
KiBQRk5XR0xRVUVSWUZSQU1FVFJBQ0tJTkdJM0RQUk9DKSAoRFdPUkQgKnBGcmFtZUNvdW50LCBE
V09SRCAqcE1pc3NlZEZyYW1lcywgZmxvYXQgKnBMYXN0TWlzc2VkVXNhZ2UpOwotI2lmZGVmIFdH
TF9XR0xFWFRfUFJPVE9UWVBFUwotQk9PTCBXSU5BUEkgd2dsR2V0RnJhbWVVc2FnZUkzRCAoZmxv
YXQgKnBVc2FnZSk7Ci1CT09MIFdJTkFQSSB3Z2xCZWdpbkZyYW1lVHJhY2tpbmdJM0QgKHZvaWQp
OwotQk9PTCBXSU5BUEkgd2dsRW5kRnJhbWVUcmFja2luZ0kzRCAodm9pZCk7Ci1CT09MIFdJTkFQ
SSB3Z2xRdWVyeUZyYW1lVHJhY2tpbmdJM0QgKERXT1JEICpwRnJhbWVDb3VudCwgRFdPUkQgKnBN
aXNzZWRGcmFtZXMsIGZsb2F0ICpwTGFzdE1pc3NlZFVzYWdlKTsKLSNlbmRpZgotI2VuZGlmIC8q
IFdHTF9JM0Rfc3dhcF9mcmFtZV91c2FnZSAqLwotCi0jaWZuZGVmIFdHTF9OVl9EWF9pbnRlcm9w
Ci0jZGVmaW5lIFdHTF9OVl9EWF9pbnRlcm9wIDEKLSNkZWZpbmUgV0dMX0FDQ0VTU19SRUFEX09O
TFlfTlYgICAgICAgICAgIDB4MDAwMDAwMDAKLSNkZWZpbmUgV0dMX0FDQ0VTU19SRUFEX1dSSVRF
X05WICAgICAgICAgIDB4MDAwMDAwMDEKLSNkZWZpbmUgV0dMX0FDQ0VTU19XUklURV9ESVNDQVJE
X05WICAgICAgIDB4MDAwMDAwMDIKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMRFhTRVRS
RVNPVVJDRVNIQVJFSEFORExFTlZQUk9DKSAodm9pZCAqZHhPYmplY3QsIEhBTkRMRSBzaGFyZUhh
bmRsZSk7Ci10eXBlZGVmIEhBTkRMRSAoV0lOQVBJICogUEZOV0dMRFhPUEVOREVWSUNFTlZQUk9D
KSAodm9pZCAqZHhEZXZpY2UpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xEWENMT1NF
REVWSUNFTlZQUk9DKSAoSEFORExFIGhEZXZpY2UpOwotdHlwZWRlZiBIQU5ETEUgKFdJTkFQSSAq
IFBGTldHTERYUkVHSVNURVJPQkpFQ1ROVlBST0MpIChIQU5ETEUgaERldmljZSwgdm9pZCAqZHhP
YmplY3QsIEdMdWludCBuYW1lLCBHTGVudW0gdHlwZSwgR0xlbnVtIGFjY2Vzcyk7Ci10eXBlZGVm
IEJPT0wgKFdJTkFQSSAqIFBGTldHTERYVU5SRUdJU1RFUk9CSkVDVE5WUFJPQykgKEhBTkRMRSBo
RGV2aWNlLCBIQU5ETEUgaE9iamVjdCk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTERY
T0JKRUNUQUNDRVNTTlZQUk9DKSAoSEFORExFIGhPYmplY3QsIEdMZW51bSBhY2Nlc3MpOwotdHlw
ZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xEWExPQ0tPQkpFQ1RTTlZQUk9DKSAoSEFORExFIGhE
ZXZpY2UsIEdMaW50IGNvdW50LCBIQU5ETEUgKmhPYmplY3RzKTsKLXR5cGVkZWYgQk9PTCAoV0lO
QVBJICogUEZOV0dMRFhVTkxPQ0tPQkpFQ1RTTlZQUk9DKSAoSEFORExFIGhEZXZpY2UsIEdMaW50
IGNvdW50LCBIQU5ETEUgKmhPYmplY3RzKTsKLSNpZmRlZiBXR0xfV0dMRVhUX1BST1RPVFlQRVMK
LUJPT0wgV0lOQVBJIHdnbERYU2V0UmVzb3VyY2VTaGFyZUhhbmRsZU5WICh2b2lkICpkeE9iamVj
dCwgSEFORExFIHNoYXJlSGFuZGxlKTsKLUhBTkRMRSBXSU5BUEkgd2dsRFhPcGVuRGV2aWNlTlYg
KHZvaWQgKmR4RGV2aWNlKTsKLUJPT0wgV0lOQVBJIHdnbERYQ2xvc2VEZXZpY2VOViAoSEFORExF
IGhEZXZpY2UpOwotSEFORExFIFdJTkFQSSB3Z2xEWFJlZ2lzdGVyT2JqZWN0TlYgKEhBTkRMRSBo
RGV2aWNlLCB2b2lkICpkeE9iamVjdCwgR0x1aW50IG5hbWUsIEdMZW51bSB0eXBlLCBHTGVudW0g
YWNjZXNzKTsKLUJPT0wgV0lOQVBJIHdnbERYVW5yZWdpc3Rlck9iamVjdE5WIChIQU5ETEUgaERl
dmljZSwgSEFORExFIGhPYmplY3QpOwotQk9PTCBXSU5BUEkgd2dsRFhPYmplY3RBY2Nlc3NOViAo
SEFORExFIGhPYmplY3QsIEdMZW51bSBhY2Nlc3MpOwotQk9PTCBXSU5BUEkgd2dsRFhMb2NrT2Jq
ZWN0c05WIChIQU5ETEUgaERldmljZSwgR0xpbnQgY291bnQsIEhBTkRMRSAqaE9iamVjdHMpOwot
Qk9PTCBXSU5BUEkgd2dsRFhVbmxvY2tPYmplY3RzTlYgKEhBTkRMRSBoRGV2aWNlLCBHTGludCBj
b3VudCwgSEFORExFICpoT2JqZWN0cyk7Ci0jZW5kaWYKLSNlbmRpZiAvKiBXR0xfTlZfRFhfaW50
ZXJvcCAqLwotCi0jaWZuZGVmIFdHTF9OVl9EWF9pbnRlcm9wMgotI2RlZmluZSBXR0xfTlZfRFhf
aW50ZXJvcDIgMQotI2VuZGlmIC8qIFdHTF9OVl9EWF9pbnRlcm9wMiAqLwotCi0jaWZuZGVmIFdH
TF9OVl9jb3B5X2ltYWdlCi0jZGVmaW5lIFdHTF9OVl9jb3B5X2ltYWdlIDEKLXR5cGVkZWYgQk9P
TCAoV0lOQVBJICogUEZOV0dMQ09QWUlNQUdFU1VCREFUQU5WUFJPQykgKEhHTFJDIGhTcmNSQywg
R0x1aW50IHNyY05hbWUsIEdMZW51bSBzcmNUYXJnZXQsIEdMaW50IHNyY0xldmVsLCBHTGludCBz
cmNYLCBHTGludCBzcmNZLCBHTGludCBzcmNaLCBIR0xSQyBoRHN0UkMsIEdMdWludCBkc3ROYW1l
LCBHTGVudW0gZHN0VGFyZ2V0LCBHTGludCBkc3RMZXZlbCwgR0xpbnQgZHN0WCwgR0xpbnQgZHN0
WSwgR0xpbnQgZHN0WiwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVw
dGgpOwotI2lmZGVmIFdHTF9XR0xFWFRfUFJPVE9UWVBFUwotQk9PTCBXSU5BUEkgd2dsQ29weUlt
YWdlU3ViRGF0YU5WIChIR0xSQyBoU3JjUkMsIEdMdWludCBzcmNOYW1lLCBHTGVudW0gc3JjVGFy
Z2V0LCBHTGludCBzcmNMZXZlbCwgR0xpbnQgc3JjWCwgR0xpbnQgc3JjWSwgR0xpbnQgc3JjWiwg
SEdMUkMgaERzdFJDLCBHTHVpbnQgZHN0TmFtZSwgR0xlbnVtIGRzdFRhcmdldCwgR0xpbnQgZHN0
TGV2ZWwsIEdMaW50IGRzdFgsIEdMaW50IGRzdFksIEdMaW50IGRzdFosIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoKTsKLSNlbmRpZgotI2VuZGlmIC8qIFdHTF9O
Vl9jb3B5X2ltYWdlICovCi0KLSNpZm5kZWYgV0dMX05WX2RlbGF5X2JlZm9yZV9zd2FwCi0jZGVm
aW5lIFdHTF9OVl9kZWxheV9iZWZvcmVfc3dhcCAxCi10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBG
TldHTERFTEFZQkVGT1JFU1dBUE5WUFJPQykgKEhEQyBoREMsIEdMZmxvYXQgc2Vjb25kcyk7Ci0j
aWZkZWYgV0dMX1dHTEVYVF9QUk9UT1RZUEVTCi1CT09MIFdJTkFQSSB3Z2xEZWxheUJlZm9yZVN3
YXBOViAoSERDIGhEQywgR0xmbG9hdCBzZWNvbmRzKTsKLSNlbmRpZgotI2VuZGlmIC8qIFdHTF9O
Vl9kZWxheV9iZWZvcmVfc3dhcCAqLwotCi0jaWZuZGVmIFdHTF9OVl9mbG9hdF9idWZmZXIKLSNk
ZWZpbmUgV0dMX05WX2Zsb2F0X2J1ZmZlciAxCi0jZGVmaW5lIFdHTF9GTE9BVF9DT01QT05FTlRT
X05WICAgICAgICAgICAweDIwQjAKLSNkZWZpbmUgV0dMX0JJTkRfVE9fVEVYVFVSRV9SRUNUQU5H
TEVfRkxPQVRfUl9OViAweDIwQjEKLSNkZWZpbmUgV0dMX0JJTkRfVE9fVEVYVFVSRV9SRUNUQU5H
TEVfRkxPQVRfUkdfTlYgMHgyMEIyCi0jZGVmaW5lIFdHTF9CSU5EX1RPX1RFWFRVUkVfUkVDVEFO
R0xFX0ZMT0FUX1JHQl9OViAweDIwQjMKLSNkZWZpbmUgV0dMX0JJTkRfVE9fVEVYVFVSRV9SRUNU
QU5HTEVfRkxPQVRfUkdCQV9OViAweDIwQjQKLSNkZWZpbmUgV0dMX1RFWFRVUkVfRkxPQVRfUl9O
ViAgICAgICAgICAgIDB4MjBCNQotI2RlZmluZSBXR0xfVEVYVFVSRV9GTE9BVF9SR19OViAgICAg
ICAgICAgMHgyMEI2Ci0jZGVmaW5lIFdHTF9URVhUVVJFX0ZMT0FUX1JHQl9OViAgICAgICAgICAw
eDIwQjcKLSNkZWZpbmUgV0dMX1RFWFRVUkVfRkxPQVRfUkdCQV9OViAgICAgICAgIDB4MjBCOAot
I2VuZGlmIC8qIFdHTF9OVl9mbG9hdF9idWZmZXIgKi8KLQotI2lmbmRlZiBXR0xfTlZfZ3B1X2Fm
ZmluaXR5Ci0jZGVmaW5lIFdHTF9OVl9ncHVfYWZmaW5pdHkgMQotREVDTEFSRV9IQU5ETEUoSEdQ
VU5WKTsKLXN0cnVjdCBfR1BVX0RFVklDRSB7Ci0gICAgRFdPUkQgIGNiOwotICAgIENIQVIgICBE
ZXZpY2VOYW1lWzMyXTsKLSAgICBDSEFSICAgRGV2aWNlU3RyaW5nWzEyOF07Ci0gICAgRFdPUkQg
IEZsYWdzOwotICAgIFJFQ1QgICByY1ZpcnR1YWxTY3JlZW47Ci19OwotdHlwZWRlZiBzdHJ1Y3Qg
X0dQVV9ERVZJQ0UgKlBHUFVfREVWSUNFOwotI2RlZmluZSBFUlJPUl9JTkNPTVBBVElCTEVfQUZG
SU5JVFlfTUFTS1NfTlYgMHgyMEQwCi0jZGVmaW5lIEVSUk9SX01JU1NJTkdfQUZGSU5JVFlfTUFT
S19OViAgICAweDIwRDEKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMRU5VTUdQVVNOVlBS
T0MpIChVSU5UIGlHcHVJbmRleCwgSEdQVU5WICpwaEdwdSk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQ
SSAqIFBGTldHTEVOVU1HUFVERVZJQ0VTTlZQUk9DKSAoSEdQVU5WIGhHcHUsIFVJTlQgaURldmlj
ZUluZGV4LCBQR1BVX0RFVklDRSBscEdwdURldmljZSk7Ci10eXBlZGVmIEhEQyAoV0lOQVBJICog
UEZOV0dMQ1JFQVRFQUZGSU5JVFlEQ05WUFJPQykgKGNvbnN0IEhHUFVOViAqcGhHcHVMaXN0KTsK
LXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMRU5VTUdQVVNGUk9NQUZGSU5JVFlEQ05WUFJP
QykgKEhEQyBoQWZmaW5pdHlEQywgVUlOVCBpR3B1SW5kZXgsIEhHUFVOViAqaEdwdSk7Ci10eXBl
ZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTERFTEVURURDTlZQUk9DKSAoSERDIGhkYyk7Ci0jaWZk
ZWYgV0dMX1dHTEVYVF9QUk9UT1RZUEVTCi1CT09MIFdJTkFQSSB3Z2xFbnVtR3B1c05WIChVSU5U
IGlHcHVJbmRleCwgSEdQVU5WICpwaEdwdSk7Ci1CT09MIFdJTkFQSSB3Z2xFbnVtR3B1RGV2aWNl
c05WIChIR1BVTlYgaEdwdSwgVUlOVCBpRGV2aWNlSW5kZXgsIFBHUFVfREVWSUNFIGxwR3B1RGV2
aWNlKTsKLUhEQyBXSU5BUEkgd2dsQ3JlYXRlQWZmaW5pdHlEQ05WIChjb25zdCBIR1BVTlYgKnBo
R3B1TGlzdCk7Ci1CT09MIFdJTkFQSSB3Z2xFbnVtR3B1c0Zyb21BZmZpbml0eURDTlYgKEhEQyBo
QWZmaW5pdHlEQywgVUlOVCBpR3B1SW5kZXgsIEhHUFVOViAqaEdwdSk7Ci1CT09MIFdJTkFQSSB3
Z2xEZWxldGVEQ05WIChIREMgaGRjKTsKLSNlbmRpZgotI2VuZGlmIC8qIFdHTF9OVl9ncHVfYWZm
aW5pdHkgKi8KLQotI2lmbmRlZiBXR0xfTlZfbXVsdGlzYW1wbGVfY292ZXJhZ2UKLSNkZWZpbmUg
V0dMX05WX211bHRpc2FtcGxlX2NvdmVyYWdlIDEKLSNkZWZpbmUgV0dMX0NPVkVSQUdFX1NBTVBM
RVNfTlYgICAgICAgICAgIDB4MjA0MgotI2RlZmluZSBXR0xfQ09MT1JfU0FNUExFU19OViAgICAg
ICAgICAgICAgMHgyMEI5Ci0jZW5kaWYgLyogV0dMX05WX211bHRpc2FtcGxlX2NvdmVyYWdlICov
Ci0KLSNpZm5kZWYgV0dMX05WX3ByZXNlbnRfdmlkZW8KLSNkZWZpbmUgV0dMX05WX3ByZXNlbnRf
dmlkZW8gMQotREVDTEFSRV9IQU5ETEUoSFZJREVPT1VUUFVUREVWSUNFTlYpOwotI2RlZmluZSBX
R0xfTlVNX1ZJREVPX1NMT1RTX05WICAgICAgICAgICAgMHgyMEYwCi10eXBlZGVmIGludCAoV0lO
QVBJICogUEZOV0dMRU5VTUVSQVRFVklERU9ERVZJQ0VTTlZQUk9DKSAoSERDIGhEQywgSFZJREVP
T1VUUFVUREVWSUNFTlYgKnBoRGV2aWNlTGlzdCk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBG
TldHTEJJTkRWSURFT0RFVklDRU5WUFJPQykgKEhEQyBoREMsIHVuc2lnbmVkIGludCB1VmlkZW9T
bG90LCBIVklERU9PVVRQVVRERVZJQ0VOViBoVmlkZW9EZXZpY2UsIGNvbnN0IGludCAqcGlBdHRy
aWJMaXN0KTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMUVVFUllDVVJSRU5UQ09OVEVY
VE5WUFJPQykgKGludCBpQXR0cmlidXRlLCBpbnQgKnBpVmFsdWUpOwotI2lmZGVmIFdHTF9XR0xF
WFRfUFJPVE9UWVBFUwotaW50IFdJTkFQSSB3Z2xFbnVtZXJhdGVWaWRlb0RldmljZXNOViAoSERD
IGhEQywgSFZJREVPT1VUUFVUREVWSUNFTlYgKnBoRGV2aWNlTGlzdCk7Ci1CT09MIFdJTkFQSSB3
Z2xCaW5kVmlkZW9EZXZpY2VOViAoSERDIGhEQywgdW5zaWduZWQgaW50IHVWaWRlb1Nsb3QsIEhW
SURFT09VVFBVVERFVklDRU5WIGhWaWRlb0RldmljZSwgY29uc3QgaW50ICpwaUF0dHJpYkxpc3Qp
OwotQk9PTCBXSU5BUEkgd2dsUXVlcnlDdXJyZW50Q29udGV4dE5WIChpbnQgaUF0dHJpYnV0ZSwg
aW50ICpwaVZhbHVlKTsKLSNlbmRpZgotI2VuZGlmIC8qIFdHTF9OVl9wcmVzZW50X3ZpZGVvICov
Ci0KLSNpZm5kZWYgV0dMX05WX3JlbmRlcl9kZXB0aF90ZXh0dXJlCi0jZGVmaW5lIFdHTF9OVl9y
ZW5kZXJfZGVwdGhfdGV4dHVyZSAxCi0jZGVmaW5lIFdHTF9CSU5EX1RPX1RFWFRVUkVfREVQVEhf
TlYgICAgICAweDIwQTMKLSNkZWZpbmUgV0dMX0JJTkRfVE9fVEVYVFVSRV9SRUNUQU5HTEVfREVQ
VEhfTlYgMHgyMEE0Ci0jZGVmaW5lIFdHTF9ERVBUSF9URVhUVVJFX0ZPUk1BVF9OViAgICAgICAw
eDIwQTUKLSNkZWZpbmUgV0dMX1RFWFRVUkVfREVQVEhfQ09NUE9ORU5UX05WICAgIDB4MjBBNgot
I2RlZmluZSBXR0xfREVQVEhfQ09NUE9ORU5UX05WICAgICAgICAgICAgMHgyMEE3Ci0jZW5kaWYg
LyogV0dMX05WX3JlbmRlcl9kZXB0aF90ZXh0dXJlICovCi0KLSNpZm5kZWYgV0dMX05WX3JlbmRl
cl90ZXh0dXJlX3JlY3RhbmdsZQotI2RlZmluZSBXR0xfTlZfcmVuZGVyX3RleHR1cmVfcmVjdGFu
Z2xlIDEKLSNkZWZpbmUgV0dMX0JJTkRfVE9fVEVYVFVSRV9SRUNUQU5HTEVfUkdCX05WIDB4MjBB
MAotI2RlZmluZSBXR0xfQklORF9UT19URVhUVVJFX1JFQ1RBTkdMRV9SR0JBX05WIDB4MjBBMQot
I2RlZmluZSBXR0xfVEVYVFVSRV9SRUNUQU5HTEVfTlYgICAgICAgICAgMHgyMEEyCi0jZW5kaWYg
LyogV0dMX05WX3JlbmRlcl90ZXh0dXJlX3JlY3RhbmdsZSAqLwotCi0jaWZuZGVmIFdHTF9OVl9z
d2FwX2dyb3VwCi0jZGVmaW5lIFdHTF9OVl9zd2FwX2dyb3VwIDEKLXR5cGVkZWYgQk9PTCAoV0lO
QVBJICogUEZOV0dMSk9JTlNXQVBHUk9VUE5WUFJPQykgKEhEQyBoREMsIEdMdWludCBncm91cCk7
Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTEJJTkRTV0FQQkFSUklFUk5WUFJPQykgKEdM
dWludCBncm91cCwgR0x1aW50IGJhcnJpZXIpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5X
R0xRVUVSWVNXQVBHUk9VUE5WUFJPQykgKEhEQyBoREMsIEdMdWludCAqZ3JvdXAsIEdMdWludCAq
YmFycmllcik7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTFFVRVJZTUFYU1dBUEdST1VQ
U05WUFJPQykgKEhEQyBoREMsIEdMdWludCAqbWF4R3JvdXBzLCBHTHVpbnQgKm1heEJhcnJpZXJz
KTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMUVVFUllGUkFNRUNPVU5UTlZQUk9DKSAo
SERDIGhEQywgR0x1aW50ICpjb3VudCk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTFJF
U0VURlJBTUVDT1VOVE5WUFJPQykgKEhEQyBoREMpOwotI2lmZGVmIFdHTF9XR0xFWFRfUFJPVE9U
WVBFUwotQk9PTCBXSU5BUEkgd2dsSm9pblN3YXBHcm91cE5WIChIREMgaERDLCBHTHVpbnQgZ3Jv
dXApOwotQk9PTCBXSU5BUEkgd2dsQmluZFN3YXBCYXJyaWVyTlYgKEdMdWludCBncm91cCwgR0x1
aW50IGJhcnJpZXIpOwotQk9PTCBXSU5BUEkgd2dsUXVlcnlTd2FwR3JvdXBOViAoSERDIGhEQywg
R0x1aW50ICpncm91cCwgR0x1aW50ICpiYXJyaWVyKTsKLUJPT0wgV0lOQVBJIHdnbFF1ZXJ5TWF4
U3dhcEdyb3Vwc05WIChIREMgaERDLCBHTHVpbnQgKm1heEdyb3VwcywgR0x1aW50ICptYXhCYXJy
aWVycyk7Ci1CT09MIFdJTkFQSSB3Z2xRdWVyeUZyYW1lQ291bnROViAoSERDIGhEQywgR0x1aW50
ICpjb3VudCk7Ci1CT09MIFdJTkFQSSB3Z2xSZXNldEZyYW1lQ291bnROViAoSERDIGhEQyk7Ci0j
ZW5kaWYKLSNlbmRpZiAvKiBXR0xfTlZfc3dhcF9ncm91cCAqLwotCi0jaWZuZGVmIFdHTF9OVl92
ZXJ0ZXhfYXJyYXlfcmFuZ2UKLSNkZWZpbmUgV0dMX05WX3ZlcnRleF9hcnJheV9yYW5nZSAxCi10
eXBlZGVmIHZvaWQgKihXSU5BUEkgKiBQRk5XR0xBTExPQ0FURU1FTU9SWU5WUFJPQykgKEdMc2l6
ZWkgc2l6ZSwgR0xmbG9hdCByZWFkZnJlcSwgR0xmbG9hdCB3cml0ZWZyZXEsIEdMZmxvYXQgcHJp
b3JpdHkpOwotdHlwZWRlZiB2b2lkIChXSU5BUEkgKiBQRk5XR0xGUkVFTUVNT1JZTlZQUk9DKSAo
dm9pZCAqcG9pbnRlcik7Ci0jaWZkZWYgV0dMX1dHTEVYVF9QUk9UT1RZUEVTCi12b2lkICpXSU5B
UEkgd2dsQWxsb2NhdGVNZW1vcnlOViAoR0xzaXplaSBzaXplLCBHTGZsb2F0IHJlYWRmcmVxLCBH
TGZsb2F0IHdyaXRlZnJlcSwgR0xmbG9hdCBwcmlvcml0eSk7Ci12b2lkIFdJTkFQSSB3Z2xGcmVl
TWVtb3J5TlYgKHZvaWQgKnBvaW50ZXIpOwotI2VuZGlmCi0jZW5kaWYgLyogV0dMX05WX3ZlcnRl
eF9hcnJheV9yYW5nZSAqLwotCi0jaWZuZGVmIFdHTF9OVl92aWRlb19jYXB0dXJlCi0jZGVmaW5l
IFdHTF9OVl92aWRlb19jYXB0dXJlIDEKLURFQ0xBUkVfSEFORExFKEhWSURFT0lOUFVUREVWSUNF
TlYpOwotI2RlZmluZSBXR0xfVU5JUVVFX0lEX05WICAgICAgICAgICAgICAgICAgMHgyMENFCi0j
ZGVmaW5lIFdHTF9OVU1fVklERU9fQ0FQVFVSRV9TTE9UU19OViAgICAweDIwQ0YKLXR5cGVkZWYg
Qk9PTCAoV0lOQVBJICogUEZOV0dMQklORFZJREVPQ0FQVFVSRURFVklDRU5WUFJPQykgKFVJTlQg
dVZpZGVvU2xvdCwgSFZJREVPSU5QVVRERVZJQ0VOViBoRGV2aWNlKTsKLXR5cGVkZWYgVUlOVCAo
V0lOQVBJICogUEZOV0dMRU5VTUVSQVRFVklERU9DQVBUVVJFREVWSUNFU05WUFJPQykgKEhEQyBo
RGMsIEhWSURFT0lOUFVUREVWSUNFTlYgKnBoRGV2aWNlTGlzdCk7Ci10eXBlZGVmIEJPT0wgKFdJ
TkFQSSAqIFBGTldHTExPQ0tWSURFT0NBUFRVUkVERVZJQ0VOVlBST0MpIChIREMgaERjLCBIVklE
RU9JTlBVVERFVklDRU5WIGhEZXZpY2UpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xR
VUVSWVZJREVPQ0FQVFVSRURFVklDRU5WUFJPQykgKEhEQyBoRGMsIEhWSURFT0lOUFVUREVWSUNF
TlYgaERldmljZSwgaW50IGlBdHRyaWJ1dGUsIGludCAqcGlWYWx1ZSk7Ci10eXBlZGVmIEJPT0wg
KFdJTkFQSSAqIFBGTldHTFJFTEVBU0VWSURFT0NBUFRVUkVERVZJQ0VOVlBST0MpIChIREMgaERj
LCBIVklERU9JTlBVVERFVklDRU5WIGhEZXZpY2UpOwotI2lmZGVmIFdHTF9XR0xFWFRfUFJPVE9U
WVBFUwotQk9PTCBXSU5BUEkgd2dsQmluZFZpZGVvQ2FwdHVyZURldmljZU5WIChVSU5UIHVWaWRl
b1Nsb3QsIEhWSURFT0lOUFVUREVWSUNFTlYgaERldmljZSk7Ci1VSU5UIFdJTkFQSSB3Z2xFbnVt
ZXJhdGVWaWRlb0NhcHR1cmVEZXZpY2VzTlYgKEhEQyBoRGMsIEhWSURFT0lOUFVUREVWSUNFTlYg
KnBoRGV2aWNlTGlzdCk7Ci1CT09MIFdJTkFQSSB3Z2xMb2NrVmlkZW9DYXB0dXJlRGV2aWNlTlYg
KEhEQyBoRGMsIEhWSURFT0lOUFVUREVWSUNFTlYgaERldmljZSk7Ci1CT09MIFdJTkFQSSB3Z2xR
dWVyeVZpZGVvQ2FwdHVyZURldmljZU5WIChIREMgaERjLCBIVklERU9JTlBVVERFVklDRU5WIGhE
ZXZpY2UsIGludCBpQXR0cmlidXRlLCBpbnQgKnBpVmFsdWUpOwotQk9PTCBXSU5BUEkgd2dsUmVs
ZWFzZVZpZGVvQ2FwdHVyZURldmljZU5WIChIREMgaERjLCBIVklERU9JTlBVVERFVklDRU5WIGhE
ZXZpY2UpOwotI2VuZGlmCi0jZW5kaWYgLyogV0dMX05WX3ZpZGVvX2NhcHR1cmUgKi8KLQotI2lm
bmRlZiBXR0xfTlZfdmlkZW9fb3V0cHV0Ci0jZGVmaW5lIFdHTF9OVl92aWRlb19vdXRwdXQgMQot
REVDTEFSRV9IQU5ETEUoSFBWSURFT0RFVik7Ci0jZGVmaW5lIFdHTF9CSU5EX1RPX1ZJREVPX1JH
Ql9OViAgICAgICAgICAweDIwQzAKLSNkZWZpbmUgV0dMX0JJTkRfVE9fVklERU9fUkdCQV9OViAg
ICAgICAgIDB4MjBDMQotI2RlZmluZSBXR0xfQklORF9UT19WSURFT19SR0JfQU5EX0RFUFRIX05W
IDB4MjBDMgotI2RlZmluZSBXR0xfVklERU9fT1VUX0NPTE9SX05WICAgICAgICAgICAgMHgyMEMz
Ci0jZGVmaW5lIFdHTF9WSURFT19PVVRfQUxQSEFfTlYgICAgICAgICAgICAweDIwQzQKLSNkZWZp
bmUgV0dMX1ZJREVPX09VVF9ERVBUSF9OViAgICAgICAgICAgIDB4MjBDNQotI2RlZmluZSBXR0xf
VklERU9fT1VUX0NPTE9SX0FORF9BTFBIQV9OViAgMHgyMEM2Ci0jZGVmaW5lIFdHTF9WSURFT19P
VVRfQ09MT1JfQU5EX0RFUFRIX05WICAweDIwQzcKLSNkZWZpbmUgV0dMX1ZJREVPX09VVF9GUkFN
RSAgICAgICAgICAgICAgIDB4MjBDOAotI2RlZmluZSBXR0xfVklERU9fT1VUX0ZJRUxEXzEgICAg
ICAgICAgICAgMHgyMEM5Ci0jZGVmaW5lIFdHTF9WSURFT19PVVRfRklFTERfMiAgICAgICAgICAg
ICAweDIwQ0EKLSNkZWZpbmUgV0dMX1ZJREVPX09VVF9TVEFDS0VEX0ZJRUxEU18xXzIgIDB4MjBD
QgotI2RlZmluZSBXR0xfVklERU9fT1VUX1NUQUNLRURfRklFTERTXzJfMSAgMHgyMENDCi10eXBl
ZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTEdFVFZJREVPREVWSUNFTlZQUk9DKSAoSERDIGhEQywg
aW50IG51bURldmljZXMsIEhQVklERU9ERVYgKmhWaWRlb0RldmljZSk7Ci10eXBlZGVmIEJPT0wg
KFdJTkFQSSAqIFBGTldHTFJFTEVBU0VWSURFT0RFVklDRU5WUFJPQykgKEhQVklERU9ERVYgaFZp
ZGVvRGV2aWNlKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMQklORFZJREVPSU1BR0VO
VlBST0MpIChIUFZJREVPREVWIGhWaWRlb0RldmljZSwgSFBCVUZGRVJBUkIgaFBidWZmZXIsIGlu
dCBpVmlkZW9CdWZmZXIpOwotdHlwZWRlZiBCT09MIChXSU5BUEkgKiBQRk5XR0xSRUxFQVNFVklE
RU9JTUFHRU5WUFJPQykgKEhQQlVGRkVSQVJCIGhQYnVmZmVyLCBpbnQgaVZpZGVvQnVmZmVyKTsK
LXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMU0VORFBCVUZGRVJUT1ZJREVPTlZQUk9DKSAo
SFBCVUZGRVJBUkIgaFBidWZmZXIsIGludCBpQnVmZmVyVHlwZSwgdW5zaWduZWQgbG9uZyAqcHVs
Q291bnRlclBidWZmZXIsIEJPT0wgYkJsb2NrKTsKLXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZO
V0dMR0VUVklERU9JTkZPTlZQUk9DKSAoSFBWSURFT0RFViBocFZpZGVvRGV2aWNlLCB1bnNpZ25l
ZCBsb25nICpwdWxDb3VudGVyT3V0cHV0UGJ1ZmZlciwgdW5zaWduZWQgbG9uZyAqcHVsQ291bnRl
ck91dHB1dFZpZGVvKTsKLSNpZmRlZiBXR0xfV0dMRVhUX1BST1RPVFlQRVMKLUJPT0wgV0lOQVBJ
IHdnbEdldFZpZGVvRGV2aWNlTlYgKEhEQyBoREMsIGludCBudW1EZXZpY2VzLCBIUFZJREVPREVW
ICpoVmlkZW9EZXZpY2UpOwotQk9PTCBXSU5BUEkgd2dsUmVsZWFzZVZpZGVvRGV2aWNlTlYgKEhQ
VklERU9ERVYgaFZpZGVvRGV2aWNlKTsKLUJPT0wgV0lOQVBJIHdnbEJpbmRWaWRlb0ltYWdlTlYg
KEhQVklERU9ERVYgaFZpZGVvRGV2aWNlLCBIUEJVRkZFUkFSQiBoUGJ1ZmZlciwgaW50IGlWaWRl
b0J1ZmZlcik7Ci1CT09MIFdJTkFQSSB3Z2xSZWxlYXNlVmlkZW9JbWFnZU5WIChIUEJVRkZFUkFS
QiBoUGJ1ZmZlciwgaW50IGlWaWRlb0J1ZmZlcik7Ci1CT09MIFdJTkFQSSB3Z2xTZW5kUGJ1ZmZl
clRvVmlkZW9OViAoSFBCVUZGRVJBUkIgaFBidWZmZXIsIGludCBpQnVmZmVyVHlwZSwgdW5zaWdu
ZWQgbG9uZyAqcHVsQ291bnRlclBidWZmZXIsIEJPT0wgYkJsb2NrKTsKLUJPT0wgV0lOQVBJIHdn
bEdldFZpZGVvSW5mb05WIChIUFZJREVPREVWIGhwVmlkZW9EZXZpY2UsIHVuc2lnbmVkIGxvbmcg
KnB1bENvdW50ZXJPdXRwdXRQYnVmZmVyLCB1bnNpZ25lZCBsb25nICpwdWxDb3VudGVyT3V0cHV0
VmlkZW8pOwotI2VuZGlmCi0jZW5kaWYgLyogV0dMX05WX3ZpZGVvX291dHB1dCAqLwotCi0jaWZu
ZGVmIFdHTF9PTUxfc3luY19jb250cm9sCi0jZGVmaW5lIFdHTF9PTUxfc3luY19jb250cm9sIDEK
LXR5cGVkZWYgQk9PTCAoV0lOQVBJICogUEZOV0dMR0VUU1lOQ1ZBTFVFU09NTFBST0MpIChIREMg
aGRjLCBJTlQ2NCAqdXN0LCBJTlQ2NCAqbXNjLCBJTlQ2NCAqc2JjKTsKLXR5cGVkZWYgQk9PTCAo
V0lOQVBJICogUEZOV0dMR0VUTVNDUkFURU9NTFBST0MpIChIREMgaGRjLCBJTlQzMiAqbnVtZXJh
dG9yLCBJTlQzMiAqZGVub21pbmF0b3IpOwotdHlwZWRlZiBJTlQ2NCAoV0lOQVBJICogUEZOV0dM
U1dBUEJVRkZFUlNNU0NPTUxQUk9DKSAoSERDIGhkYywgSU5UNjQgdGFyZ2V0X21zYywgSU5UNjQg
ZGl2aXNvciwgSU5UNjQgcmVtYWluZGVyKTsKLXR5cGVkZWYgSU5UNjQgKFdJTkFQSSAqIFBGTldH
TFNXQVBMQVlFUkJVRkZFUlNNU0NPTUxQUk9DKSAoSERDIGhkYywgaW50IGZ1UGxhbmVzLCBJTlQ2
NCB0YXJnZXRfbXNjLCBJTlQ2NCBkaXZpc29yLCBJTlQ2NCByZW1haW5kZXIpOwotdHlwZWRlZiBC
T09MIChXSU5BUEkgKiBQRk5XR0xXQUlURk9STVNDT01MUFJPQykgKEhEQyBoZGMsIElOVDY0IHRh
cmdldF9tc2MsIElOVDY0IGRpdmlzb3IsIElOVDY0IHJlbWFpbmRlciwgSU5UNjQgKnVzdCwgSU5U
NjQgKm1zYywgSU5UNjQgKnNiYyk7Ci10eXBlZGVmIEJPT0wgKFdJTkFQSSAqIFBGTldHTFdBSVRG
T1JTQkNPTUxQUk9DKSAoSERDIGhkYywgSU5UNjQgdGFyZ2V0X3NiYywgSU5UNjQgKnVzdCwgSU5U
NjQgKm1zYywgSU5UNjQgKnNiYyk7Ci0jaWZkZWYgV0dMX1dHTEVYVF9QUk9UT1RZUEVTCi1CT09M
IFdJTkFQSSB3Z2xHZXRTeW5jVmFsdWVzT01MIChIREMgaGRjLCBJTlQ2NCAqdXN0LCBJTlQ2NCAq
bXNjLCBJTlQ2NCAqc2JjKTsKLUJPT0wgV0lOQVBJIHdnbEdldE1zY1JhdGVPTUwgKEhEQyBoZGMs
IElOVDMyICpudW1lcmF0b3IsIElOVDMyICpkZW5vbWluYXRvcik7Ci1JTlQ2NCBXSU5BUEkgd2ds
U3dhcEJ1ZmZlcnNNc2NPTUwgKEhEQyBoZGMsIElOVDY0IHRhcmdldF9tc2MsIElOVDY0IGRpdmlz
b3IsIElOVDY0IHJlbWFpbmRlcik7Ci1JTlQ2NCBXSU5BUEkgd2dsU3dhcExheWVyQnVmZmVyc01z
Y09NTCAoSERDIGhkYywgaW50IGZ1UGxhbmVzLCBJTlQ2NCB0YXJnZXRfbXNjLCBJTlQ2NCBkaXZp
c29yLCBJTlQ2NCByZW1haW5kZXIpOwotQk9PTCBXSU5BUEkgd2dsV2FpdEZvck1zY09NTCAoSERD
IGhkYywgSU5UNjQgdGFyZ2V0X21zYywgSU5UNjQgZGl2aXNvciwgSU5UNjQgcmVtYWluZGVyLCBJ
TlQ2NCAqdXN0LCBJTlQ2NCAqbXNjLCBJTlQ2NCAqc2JjKTsKLUJPT0wgV0lOQVBJIHdnbFdhaXRG
b3JTYmNPTUwgKEhEQyBoZGMsIElOVDY0IHRhcmdldF9zYmMsIElOVDY0ICp1c3QsIElOVDY0ICpt
c2MsIElOVDY0ICpzYmMpOwotI2VuZGlmCi0jZW5kaWYgLyogV0dMX09NTF9zeW5jX2NvbnRyb2wg
Ki8KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbGliWE5WQ3RybC9CVUlM
RC5nbiBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJs
L0JVSUxELmduCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNThhNTQyMmJlNy4uMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xp
YlhOVkN0cmwvQlVJTEQuZ24KKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0jIENvcHly
aWdodCAoYykgMjAxNiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0jIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLSMg
VGhpcyB3YXJuaW5nIGRpc2FibGUgbXVzdCBiZSBhcHBlbmRlZCB0byB0aGUgY29tbWFuZCBsaW5l
IGFmdGVyIHRoZSBnZW5lcmFsCi0jIHdhcm5pbmdzIHNldHVwLCBzbyBtdXN0IGJlIGluIGEgY29u
ZmlnLgotY29uZmlnKCJsaWJYTlZDdHJsX2NvbmZpZyIpIHsKLSAgIyBUaGlzIHdpbGwgYnVpbGQg
dW5kZXIgbW9zdCBjb25maWd1cmF0aW9ucyB3aXRoIHRoaXMgd2FybmluZyBlbmFibGVkLCBidXQK
LSAgIyBzb21lIG9sZGVyIHN5c3RlbSBoZWFkZXJzIGFyZSBtaXNzaW5nIGEgImNvbnN0IiBvbiB0
aGUgdGhpcmQgcGFyYW1ldGVyIG9mCi0gICMgWGV4dEFkZERpc3BsYXkgd2hpY2ggd2lsbCBjYXVz
ZSBhIGZhaWx1cmUuCi0gIGNmbGFncyA9IFsKLSAgICAiLVduby1pbmNvbXBhdGlibGUtcG9pbnRl
ci10eXBlcy1kaXNjYXJkcy1xdWFsaWZpZXJzIiwKLSAgXQotfQotCi1zb3VyY2Vfc2V0KCJsaWJY
TlZDdHJsIikgewotICBzb3VyY2VzID0gWwotICAgICJOVkN0cmwuYyIsCi0gICAgIk5WQ3RybC5o
IiwKLSAgICAiTlZDdHJsTGliLmgiLAotICAgICJudl9jb250cm9sLmgiLAotICBdCi0KLSAgY29u
ZmlncyArPSBbCi0gICAgIjpsaWJYTlZDdHJsX2NvbmZpZyIsCi0gICAgIi8vYnVpbGQvY29uZmln
L2xpbnV4OngxMSIsCi0gIF0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsL0xJQ0VOU0UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvdGhpcmRfcGFydHkvbGliWE5WQ3RybC9MSUNFTlNFCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA3NDMyNGMwYzZmYi4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvTElDRU5TRQorKysgL2Rldi9u
dWxsCkBAIC0xLDIyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDggTlZJRElBLCBD
b3Jwb3JhdGlvbgotICoKLSAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg
Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKLSAqIG9mIHRoaXMgc29mdHdh
cmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0
byBkZWFsCi0gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n
IHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi0gKiB0byB1c2UsIGNvcHksIG1vZGlmeSwg
bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCi0gKiBj
b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUg
U29mdHdhcmUgaXMKLSAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnM6Ci0gKgotICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo
aXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAotICogcGFyYWdyYXBoKSBz
aGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m
IHRoZQotICogU29mdHdhcmUuCi0gKgotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ
UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKLSAqIElNUExJRUQs
IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZLAotICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJ
TkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotICogQVVUSE9SUyBPUiBDT1BZUklHSFQg
SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgotICogTElB
QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ
U0UsIEFSSVNJTkcgRlJPTSwKLSAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP
RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCi0gKiBTT0ZUV0FSRS4K
LSAqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsL05WQ3RybC5jIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvTlZDdHJsLmMKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ODQzNzM5NDdjLi4wMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbGliWE5WQ3RybC9OVkN0
cmwuYworKysgL2Rldi9udWxsCkBAIC0xLDEyNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
YykgMjAwOCBOVklESUEsIENvcnBvcmF0aW9uCi0gKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkg
Z3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQot
ICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0
aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKLSAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry
aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKLSAqIHRvIHVz
ZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwg
YW5kL29yIHNlbGwKLSAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy
c29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq
ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAqCi0gKiBUaGUgYWJvdmUgY29weXJp
Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0
Ci0gKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3Rh
bnRpYWwgcG9ydGlvbnMgb2YgdGhlCi0gKiBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUg
SVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVT
UyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0gKiBBVVRI
T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT
IE9SIE9USEVSCi0gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNU
LCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAotICogT1VUIE9GIE9SIElOIENPTk5F
Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBU
SEUKLSAqIFNPRlRXQVJFLgotICovCi0KLS8qCi0gKiBNYWtlIHN1cmUgdGhhdCBYVEhSRUFEUyBp
cyBkZWZpbmVkLCBzbyB0aGF0IHRoZQotICogTG9ja0Rpc3BsYXkvVW5sb2NrRGlzcGxheSBtYWNy
b3MgYXJlIGV4cGFuZGVkIHByb3Blcmx5IGFuZCB0aGUKLSAqIGxpYlhOVkN0cmwgbGlicmFyeSBw
cm9wZXJseSBwcm90ZWN0cyB0aGUgRGlzcGxheSBjb25uZWN0aW9uLgotICovCi0KLSNpZiAhZGVm
aW5lZChYVEhSRUFEUykKLSNkZWZpbmUgWFRIUkVBRFMKLSNlbmRpZiAvKiBYVEhSRUFEUyAqLwot
Ci0jZGVmaW5lIE5FRURfRVZFTlRTCi0jZGVmaW5lIE5FRURfUkVQTElFUwotI2luY2x1ZGUgPHN0
ZGludC5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPFgxMS9YbGliaW50Lmg+Ci0j
aW5jbHVkZSA8WDExL1h1dGlsLmg+Ci0jaW5jbHVkZSA8WDExL2V4dGVuc2lvbnMvWGV4dC5oPgot
I2luY2x1ZGUgPFgxMS9leHRlbnNpb25zL2V4dHV0aWwuaD4KLSNpbmNsdWRlICJOVkN0cmxMaWIu
aCIKLSNpbmNsdWRlICJudl9jb250cm9sLmgiCi0KLSNkZWZpbmUgTlZDVFJMX0VYVF9FWElTVFMg
ICAgICAgICAgICAgIDEKLSNkZWZpbmUgTlZDVFJMX0VYVF9ORUVEX1RBUkdFVF9TV0FQICAgIDIK
LSNkZWZpbmUgTlZDVFJMX0VYVF82NF9CSVRfQVRUUklCVVRFUyAgIDQKLSNkZWZpbmUgTlZDVFJM
X0VYVF9ORUVEX0NIRUNLICAgICAgICAgICgxIDw8IChzaXplb2YoWFBvaW50ZXIpIC0gMSkpCi0K
LXN0YXRpYyBYRXh0ZW5zaW9uSW5mbyBfbnZjdHJsX2V4dF9pbmZvX2RhdGE7Ci1zdGF0aWMgWEV4
dGVuc2lvbkluZm8gKm52Y3RybF9leHRfaW5mbyA9ICZfbnZjdHJsX2V4dF9pbmZvX2RhdGE7Ci1z
dGF0aWMgY29uc3QgY2hhciAqbnZjdHJsX2V4dGVuc2lvbl9uYW1lID0gTlZfQ09OVFJPTF9OQU1F
OwotCi0jZGVmaW5lIFhOVkNUUkxDaGVja0V4dGVuc2lvbihkcHksaSx2YWwpIFwKLSAgWGV4dENo
ZWNrRXh0ZW5zaW9uIChkcHksIGksIG52Y3RybF9leHRlbnNpb25fbmFtZSwgdmFsKQotI2RlZmlu
ZSBYTlZDVFJMU2ltcGxlQ2hlY2tFeHRlbnNpb24oZHB5LGkpIFwKLSAgWGV4dFNpbXBsZUNoZWNr
RXh0ZW5zaW9uIChkcHksIGksIG52Y3RybF9leHRlbnNpb25fbmFtZSkKLQotc3RhdGljIGludCBj
bG9zZV9kaXNwbGF5KCk7Ci1zdGF0aWMgdWludHB0cl90IHZlcnNpb25fZmxhZ3MoRGlzcGxheSAq
ZHB5LCBYRXh0RGlzcGxheUluZm8gKmluZm8pOwotc3RhdGljIEJvb2wgd2lyZV90b19ldmVudCgp
Owotc3RhdGljIC8qIGNvbnN0ICovIFhFeHRlbnNpb25Ib29rcyBudmN0cmxfZXh0ZW5zaW9uX2hv
b2tzID0gewotICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNyZWF0
ZV9nYyAqLwotICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvcHlf
Z2MgKi8KLSAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmbHVzaF9n
YyAqLwotICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZyZWVfZ2Mg
Ki8KLSAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjcmVhdGVfZm9u
dCAqLwotICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZyZWVfZm9u
dCAqLwotICAgIGNsb3NlX2Rpc3BsYXksICAgICAgICAgICAgICAgICAgICAgIC8qIGNsb3NlX2Rp
c3BsYXkgKi8KLSAgICB3aXJlX3RvX2V2ZW50LCAgICAgICAgICAgICAgICAgICAgICAvKiB3aXJl
X3RvX2V2ZW50ICovCi0gICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
ZXZlbnRfdG9fd2lyZSAqLwotICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IC8qIGVycm9yICovCi0gICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog
ZXJyb3Jfc3RyaW5nICovCi19OwotCi1zdGF0aWMgWEVYVF9HRU5FUkFURV9GSU5EX0RJU1BMQVkg
KGZpbmRfZGlzcGxheSwgbnZjdHJsX2V4dF9pbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBudmN0cmxfZXh0ZW5zaW9uX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZudmN0cmxfZXh0ZW5zaW9uX2hvb2tzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOVl9DT05UUk9MX0VWRU5UUywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKFhQb2ludGVyKU5WQ1RSTF9FWFRfTkVFRF9DSEVDSykKLQotc3RhdGlj
IFhFWFRfR0VORVJBVEVfQ0xPU0VfRElTUExBWSAoY2xvc2VfZGlzcGxheSwgbnZjdHJsX2V4dF9p
bmZvKQotCi0vKgotICogTlYtQ09OVFJPTCB2ZXJzaW9ucyAxLjggYW5kIDEuOSBwYWNrIHRoZSB0
YXJnZXRfdHlwZSBhbmQgdGFyZ2V0X2lkCi0gKiBmaWVsZHMgaW4gcmV2ZXJzZWQgb3JkZXIuICBJ
biBvcmRlciB0byB0YWxrIHRvIG9uZSBvZiB0aGVzZSBzZXJ2ZXJzLAotICogd2UgbmVlZCB0byBz
d2FwIHRoZXNlIGZpZWxkcy4KLSAqLwotCi1zdGF0aWMgdm9pZCBYTlZDVFJMQ2hlY2tUYXJnZXRE
YXRhKERpc3BsYXkgKmRweSwgWEV4dERpc3BsYXlJbmZvICppbmZvLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnQgKnRhcmdldF90eXBlLCBpbnQgKnRhcmdldF9pZCkKLXsK
LSAgICB1aW50cHRyX3QgZmxhZ3MgPSB2ZXJzaW9uX2ZsYWdzKGRweSwgaW5mbyk7Ci0KLSAgICAv
KiBXZSBuZWVkIHRvIHN3YXAgdGhlIHRhcmdldF90eXBlIGFuZCB0YXJnZXRfaWQgKi8KLSAgICBp
ZiAoZmxhZ3MgJiBOVkNUUkxfRVhUX05FRURfVEFSR0VUX1NXQVApIHsKLSAgICAgICAgaW50IHRt
cDsKLSAgICAgICAgdG1wID0gKnRhcmdldF90eXBlOwotICAgICAgICAqdGFyZ2V0X3R5cGUgPSAq
dGFyZ2V0X2lkOwotICAgICAgICAqdGFyZ2V0X2lkID0gdG1wOwotICAgIH0KLX0KLQotCi1Cb29s
IFhOVkNUUkxRdWVyeUV4dGVuc2lvbiAoCi0gICAgRGlzcGxheSAqZHB5LAotICAgIGludCAqZXZl
bnRfYmFzZXAsCi0gICAgaW50ICplcnJvcl9iYXNlcAotKXsKLSAgICBYRXh0RGlzcGxheUluZm8g
KmluZm8gPSBmaW5kX2Rpc3BsYXkgKGRweSk7Ci0KLSAgICBpZiAoWGV4dEhhc0V4dGVuc2lvbihp
bmZvKSkgewotICAgICAgICBpZiAoZXZlbnRfYmFzZXApICpldmVudF9iYXNlcCA9IGluZm8tPmNv
ZGVzLT5maXJzdF9ldmVudDsKLSAgICAgICAgaWYgKGVycm9yX2Jhc2VwKSAqZXJyb3JfYmFzZXAg
PSBpbmZvLT5jb2Rlcy0+Zmlyc3RfZXJyb3I7Ci0gICAgICAgIHJldHVybiBUcnVlOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIHJldHVybiBGYWxzZTsKLSAgICB9Ci19Ci0KLS8qCi0gKiBSZXRyaWV2
ZSBhbnkgY2FjaGVkIGZsYWdzIHRoYXQgZGVwZW5kIG9uIHRoZSB2ZXJzaW9uIG9mIHRoZSBOVi1D
T05UUk9MCi0gKiBleHRlbnNpb24uCi0gKi8KLQotc3RhdGljIHVpbnRwdHJfdCB2ZXJzaW9uX2Zs
YWdzKERpc3BsYXkgKmRweSwgWEV4dERpc3BsYXlJbmZvICppbmZvKQotewotICAgIHVpbnRwdHJf
dCBkYXRhID0gKHVpbnRwdHJfdClpbmZvLT5kYXRhOwotCi0gICAgLyogSWYgbmVjZXNzYXJ5LCBk
ZXRlcm1pbmUgdGhlIE5WLUNPTlRST0wgdmVyc2lvbiAqLwotICAgIGlmIChkYXRhICYgTlZDVFJM
X0VYVF9ORUVEX0NIRUNLKSB7Ci0gICAgICAgIGludCBtYWpvciwgbWlub3I7Ci0gICAgICAgIGRh
dGEgPSAwOwotICAgICAgICBpZiAoWE5WQ1RSTFF1ZXJ5VmVyc2lvbihkcHksICZtYWpvciwgJm1p
bm9yKSkgewotICAgICAgICAgICAgZGF0YSB8PSBOVkNUUkxfRVhUX0VYSVNUUzsKLSAgICAgICAg
ICAgIGlmIChtYWpvciA9PSAxICYmIChtaW5vciA9PSA4IHx8IG1pbm9yID09IDkpKSB7Ci0gICAg
ICAgICAgICAgICAgZGF0YSB8PSBOVkNUUkxfRVhUX05FRURfVEFSR0VUX1NXQVA7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBpZiAoKG1ham9yID4gMSkgfHwgKChtYWpvciA9PSAxKSAmJiAo
bWlub3IgPiAyMCkpKSB7Ci0gICAgICAgICAgICAgICAgZGF0YSB8PSBOVkNUUkxfRVhUXzY0X0JJ
VF9BVFRSSUJVVEVTOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaW5mby0+
ZGF0YSA9IChYUG9pbnRlcilkYXRhOwotICAgIH0KLQotICAgIHJldHVybiBkYXRhOwotfQotCi1C
b29sIFhOVkNUUkxRdWVyeVZlcnNpb24gKAotICAgIERpc3BsYXkgKmRweSwKLSAgICBpbnQgKm1h
am9yLAotICAgIGludCAqbWlub3IKLSl7Ci0gICAgWEV4dERpc3BsYXlJbmZvICppbmZvID0gZmlu
ZF9kaXNwbGF5IChkcHkpOwotICAgIHhudkN0cmxRdWVyeUV4dGVuc2lvblJlcGx5IHJlcDsKLSAg
ICB4bnZDdHJsUXVlcnlFeHRlbnNpb25SZXEgICAqcmVxOwotCi0gICAgaWYoIVhleHRIYXNFeHRl
bnNpb24oaW5mbykpCi0gICAgICAgIHJldHVybiBGYWxzZTsKLQotICAgIFhOVkNUUkxDaGVja0V4
dGVuc2lvbiAoZHB5LCBpbmZvLCBGYWxzZSk7Ci0KLSAgICBMb2NrRGlzcGxheSAoZHB5KTsKLSAg
ICBHZXRSZXEgKG52Q3RybFF1ZXJ5RXh0ZW5zaW9uLCByZXEpOwotICAgIHJlcS0+cmVxVHlwZSA9
IGluZm8tPmNvZGVzLT5tYWpvcl9vcGNvZGU7Ci0gICAgcmVxLT5udlJlcVR5cGUgPSBYX252Q3Ry
bFF1ZXJ5RXh0ZW5zaW9uOwotICAgIGlmICghX1hSZXBseSAoZHB5LCAoeFJlcGx5ICopICZyZXAs
IDAsIHhUcnVlKSkgewotICAgICAgICBVbmxvY2tEaXNwbGF5IChkcHkpOwotICAgICAgICBTeW5j
SGFuZGxlICgpOwotICAgICAgICByZXR1cm4gRmFsc2U7Ci0gICAgfQotICAgIGlmIChtYWpvcikg
Km1ham9yID0gcmVwLm1ham9yOwotICAgIGlmIChtaW5vcikgKm1pbm9yID0gcmVwLm1pbm9yOwot
ICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAgU3luY0hhbmRsZSAoKTsKLSAgICByZXR1cm4g
VHJ1ZTsKLX0KLQotCi1Cb29sIFhOVkNUUkxJc052U2NyZWVuICgKLSAgICBEaXNwbGF5ICpkcHks
Ci0gICAgaW50IHNjcmVlbgotKXsKLSAgICBYRXh0RGlzcGxheUluZm8gKmluZm8gPSBmaW5kX2Rp
c3BsYXkgKGRweSk7Ci0gICAgeG52Q3RybElzTnZSZXBseSByZXA7Ci0gICAgeG52Q3RybElzTnZS
ZXEgICAqcmVxOwotICAgIEJvb2wgaXNudjsKLQotICAgIGlmKCFYZXh0SGFzRXh0ZW5zaW9uKGlu
Zm8pKQotICAgICAgICByZXR1cm4gRmFsc2U7Ci0KLSAgICBYTlZDVFJMQ2hlY2tFeHRlbnNpb24g
KGRweSwgaW5mbywgRmFsc2UpOwotCi0gICAgTG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAgR2V0UmVx
IChudkN0cmxJc052LCByZXEpOwotICAgIHJlcS0+cmVxVHlwZSA9IGluZm8tPmNvZGVzLT5tYWpv
cl9vcGNvZGU7Ci0gICAgcmVxLT5udlJlcVR5cGUgPSBYX252Q3RybElzTnY7Ci0gICAgcmVxLT5z
Y3JlZW4gPSBzY3JlZW47Ci0gICAgaWYgKCFfWFJlcGx5IChkcHksICh4UmVwbHkgKikgJnJlcCwg
MCwgeFRydWUpKSB7Ci0gICAgICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAgICAgIFN5bmNI
YW5kbGUgKCk7Ci0gICAgICAgIHJldHVybiBGYWxzZTsKLSAgICB9Ci0gICAgaXNudiA9IHJlcC5p
c252OwotICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAgU3luY0hhbmRsZSAoKTsKLSAgICBy
ZXR1cm4gaXNudjsKLX0KLQotCi1Cb29sIFhOVkNUUkxRdWVyeVRhcmdldENvdW50ICgKLSAgICBE
aXNwbGF5ICpkcHksCi0gICAgaW50IHRhcmdldF90eXBlLAotICAgIGludCAqdmFsdWUKLSl7Ci0g
ICAgWEV4dERpc3BsYXlJbmZvICppbmZvID0gZmluZF9kaXNwbGF5IChkcHkpOwotICAgIHhudkN0
cmxRdWVyeVRhcmdldENvdW50UmVwbHkgIHJlcDsKLSAgICB4bnZDdHJsUXVlcnlUYXJnZXRDb3Vu
dFJlcSAgICpyZXE7Ci0KLSAgICBpZighWGV4dEhhc0V4dGVuc2lvbihpbmZvKSkKLSAgICAgICAg
cmV0dXJuIEZhbHNlOwotCi0gICAgWE5WQ1RSTENoZWNrRXh0ZW5zaW9uIChkcHksIGluZm8sIEZh
bHNlKTsKLQotICAgIExvY2tEaXNwbGF5IChkcHkpOwotICAgIEdldFJlcSAobnZDdHJsUXVlcnlU
YXJnZXRDb3VudCwgcmVxKTsKLSAgICByZXEtPnJlcVR5cGUgPSBpbmZvLT5jb2Rlcy0+bWFqb3Jf
b3Bjb2RlOwotICAgIHJlcS0+bnZSZXFUeXBlID0gWF9udkN0cmxRdWVyeVRhcmdldENvdW50Owot
ICAgIHJlcS0+dGFyZ2V0X3R5cGUgPSB0YXJnZXRfdHlwZTsKLSAgICBpZiAoIV9YUmVwbHkgKGRw
eSwgKHhSZXBseSAqKSAmcmVwLCAwLCB4VHJ1ZSkpIHsKLSAgICAgICAgVW5sb2NrRGlzcGxheSAo
ZHB5KTsKLSAgICAgICAgU3luY0hhbmRsZSAoKTsKLSAgICAgICAgcmV0dXJuIEZhbHNlOwotICAg
IH0KLSAgICBpZiAodmFsdWUpICp2YWx1ZSA9IHJlcC5jb3VudDsKLSAgICBVbmxvY2tEaXNwbGF5
IChkcHkpOwotICAgIFN5bmNIYW5kbGUgKCk7Ci0gICAgcmV0dXJuIFRydWU7Ci19Ci0KLQotdm9p
ZCBYTlZDVFJMU2V0VGFyZ2V0QXR0cmlidXRlICgKLSAgICBEaXNwbGF5ICpkcHksCi0gICAgaW50
IHRhcmdldF90eXBlLAotICAgIGludCB0YXJnZXRfaWQsCi0gICAgdW5zaWduZWQgaW50IGRpc3Bs
YXlfbWFzaywKLSAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgIGludCB2YWx1ZQotKXsK
LSAgICBYRXh0RGlzcGxheUluZm8gKmluZm8gPSBmaW5kX2Rpc3BsYXkgKGRweSk7Ci0gICAgeG52
Q3RybFNldEF0dHJpYnV0ZVJlcSAqcmVxOwotCi0gICAgWE5WQ1RSTFNpbXBsZUNoZWNrRXh0ZW5z
aW9uIChkcHksIGluZm8pOwotICAgIFhOVkNUUkxDaGVja1RhcmdldERhdGEoZHB5LCBpbmZvLCAm
dGFyZ2V0X3R5cGUsICZ0YXJnZXRfaWQpOwotCi0gICAgTG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAg
R2V0UmVxIChudkN0cmxTZXRBdHRyaWJ1dGUsIHJlcSk7Ci0gICAgcmVxLT5yZXFUeXBlID0gaW5m
by0+Y29kZXMtPm1ham9yX29wY29kZTsKLSAgICByZXEtPm52UmVxVHlwZSA9IFhfbnZDdHJsU2V0
QXR0cmlidXRlOwotICAgIHJlcS0+dGFyZ2V0X3R5cGUgPSB0YXJnZXRfdHlwZTsKLSAgICByZXEt
PnRhcmdldF9pZCA9IHRhcmdldF9pZDsKLSAgICByZXEtPmRpc3BsYXlfbWFzayA9IGRpc3BsYXlf
bWFzazsKLSAgICByZXEtPmF0dHJpYnV0ZSA9IGF0dHJpYnV0ZTsKLSAgICByZXEtPnZhbHVlID0g
dmFsdWU7Ci0gICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKLSAgICBTeW5jSGFuZGxlICgpOwotfQot
Ci12b2lkIFhOVkNUUkxTZXRBdHRyaWJ1dGUgKAotICAgIERpc3BsYXkgKmRweSwKLSAgICBpbnQg
c2NyZWVuLAotICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCi0gICAgdW5zaWduZWQgaW50
IGF0dHJpYnV0ZSwKLSAgICBpbnQgdmFsdWUKLSl7Ci0gICAgWE5WQ1RSTFNldFRhcmdldEF0dHJp
YnV0ZSAoZHB5LCBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOLCBzY3JlZW4sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheV9tYXNrLCBhdHRyaWJ1dGUsIHZhbHVlKTsK
LX0KLQotCi1Cb29sIFhOVkNUUkxTZXRUYXJnZXRBdHRyaWJ1dGVBbmRHZXRTdGF0dXMgKAotICAg
IERpc3BsYXkgKmRweSwKLSAgICBpbnQgdGFyZ2V0X3R5cGUsCi0gICAgaW50IHRhcmdldF9pZCwK
LSAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAotICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1
dGUsCi0gICAgaW50IHZhbHVlCi0pewotICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRf
ZGlzcGxheSAoZHB5KTsKLSAgICB4bnZDdHJsU2V0QXR0cmlidXRlQW5kR2V0U3RhdHVzUmVxICpy
ZXE7Ci0gICAgeG52Q3RybFNldEF0dHJpYnV0ZUFuZEdldFN0YXR1c1JlcGx5IHJlcDsKLSAgICBC
b29sIHN1Y2Nlc3M7Ci0KLSAgICBpZighWGV4dEhhc0V4dGVuc2lvbihpbmZvKSkKLSAgICAgICAg
cmV0dXJuIEZhbHNlOwotCi0gICAgWE5WQ1RSTENoZWNrRXh0ZW5zaW9uIChkcHksIGluZm8sIEZh
bHNlKTsKLQotICAgIExvY2tEaXNwbGF5IChkcHkpOwotICAgIEdldFJlcSAobnZDdHJsU2V0QXR0
cmlidXRlQW5kR2V0U3RhdHVzLCByZXEpOwotICAgIHJlcS0+cmVxVHlwZSA9IGluZm8tPmNvZGVz
LT5tYWpvcl9vcGNvZGU7Ci0gICAgcmVxLT5udlJlcVR5cGUgPSBYX252Q3RybFNldEF0dHJpYnV0
ZUFuZEdldFN0YXR1czsKLSAgICByZXEtPnRhcmdldF90eXBlID0gdGFyZ2V0X3R5cGU7Ci0gICAg
cmVxLT50YXJnZXRfaWQgPSB0YXJnZXRfaWQ7Ci0gICAgcmVxLT5kaXNwbGF5X21hc2sgPSBkaXNw
bGF5X21hc2s7Ci0gICAgcmVxLT5hdHRyaWJ1dGUgPSBhdHRyaWJ1dGU7Ci0gICAgcmVxLT52YWx1
ZSA9IHZhbHVlOwotICAgIGlmICghX1hSZXBseSAoZHB5LCAoeFJlcGx5ICopICZyZXAsIDAsIEZh
bHNlKSkgewotICAgICAgICBVbmxvY2tEaXNwbGF5IChkcHkpOwotICAgICAgICBTeW5jSGFuZGxl
ICgpOwotICAgICAgICByZXR1cm4gRmFsc2U7Ci0gICAgfQotICAgIFVubG9ja0Rpc3BsYXkgKGRw
eSk7Ci0gICAgU3luY0hhbmRsZSAoKTsKLSAgICAKLSAgICBzdWNjZXNzID0gcmVwLmZsYWdzOwot
ICAgIHJldHVybiBzdWNjZXNzOwotfQotCi1Cb29sIFhOVkNUUkxTZXRBdHRyaWJ1dGVBbmRHZXRT
dGF0dXMgKAotICAgIERpc3BsYXkgKmRweSwKLSAgICBpbnQgc2NyZWVuLAotICAgIHVuc2lnbmVk
IGludCBkaXNwbGF5X21hc2ssCi0gICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKLSAgICBpbnQg
dmFsdWUKLSl7Ci0gICAgcmV0dXJuIFhOVkNUUkxTZXRUYXJnZXRBdHRyaWJ1dGVBbmRHZXRTdGF0
dXMoZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2NyZWVuLCBkaXNwbGF5X21hc2ssCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlLCB2YWx1ZSk7
Ci19Ci0KLQotQm9vbCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUgKAotICAgIERpc3BsYXkg
KmRweSwKLSAgICBpbnQgdGFyZ2V0X3R5cGUsCi0gICAgaW50IHRhcmdldF9pZCwKLSAgICB1bnNp
Z25lZCBpbnQgZGlzcGxheV9tYXNrLAotICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0gICAg
aW50ICp2YWx1ZQotKXsKLSAgICBYRXh0RGlzcGxheUluZm8gKmluZm8gPSBmaW5kX2Rpc3BsYXkg
KGRweSk7Ci0gICAgeG52Q3RybFF1ZXJ5QXR0cmlidXRlUmVwbHkgcmVwOwotICAgIHhudkN0cmxR
dWVyeUF0dHJpYnV0ZVJlcSAgICpyZXE7Ci0gICAgQm9vbCBleGlzdHM7Ci0KLSAgICBpZighWGV4
dEhhc0V4dGVuc2lvbihpbmZvKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlOwotCi0gICAgWE5WQ1RS
TENoZWNrRXh0ZW5zaW9uIChkcHksIGluZm8sIEZhbHNlKTsKLSAgICBYTlZDVFJMQ2hlY2tUYXJn
ZXREYXRhKGRweSwgaW5mbywgJnRhcmdldF90eXBlLCAmdGFyZ2V0X2lkKTsKLQotICAgIExvY2tE
aXNwbGF5IChkcHkpOwotICAgIEdldFJlcSAobnZDdHJsUXVlcnlBdHRyaWJ1dGUsIHJlcSk7Ci0g
ICAgcmVxLT5yZXFUeXBlID0gaW5mby0+Y29kZXMtPm1ham9yX29wY29kZTsKLSAgICByZXEtPm52
UmVxVHlwZSA9IFhfbnZDdHJsUXVlcnlBdHRyaWJ1dGU7Ci0gICAgcmVxLT50YXJnZXRfdHlwZSA9
IHRhcmdldF90eXBlOwotICAgIHJlcS0+dGFyZ2V0X2lkID0gdGFyZ2V0X2lkOwotICAgIHJlcS0+
ZGlzcGxheV9tYXNrID0gZGlzcGxheV9tYXNrOwotICAgIHJlcS0+YXR0cmlidXRlID0gYXR0cmli
dXRlOwotICAgIGlmICghX1hSZXBseSAoZHB5LCAoeFJlcGx5ICopICZyZXAsIDAsIHhUcnVlKSkg
ewotICAgICAgICBVbmxvY2tEaXNwbGF5IChkcHkpOwotICAgICAgICBTeW5jSGFuZGxlICgpOwot
ICAgICAgICByZXR1cm4gRmFsc2U7Ci0gICAgfQotICAgIGV4aXN0cyA9IHJlcC5mbGFnczsKLSAg
ICBpZiAoZXhpc3RzICYmIHZhbHVlKSAqdmFsdWUgPSByZXAudmFsdWU7Ci0gICAgVW5sb2NrRGlz
cGxheSAoZHB5KTsKLSAgICBTeW5jSGFuZGxlICgpOwotICAgIHJldHVybiBleGlzdHM7Ci19Ci0K
LUJvb2wgWE5WQ1RSTFF1ZXJ5QXR0cmlidXRlICgKLSAgICBEaXNwbGF5ICpkcHksCi0gICAgaW50
IHNjcmVlbiwKLSAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAotICAgIHVuc2lnbmVkIGlu
dCBhdHRyaWJ1dGUsCi0gICAgaW50ICp2YWx1ZQotKXsKLSAgICByZXR1cm4gWE5WQ1RSTFF1ZXJ5
VGFyZ2V0QXR0cmlidXRlKGRweSwgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVlbiwgZGlzcGxheV9tYXNrLCBh
dHRyaWJ1dGUsIHZhbHVlKTsKLX0KLQotCi1Cb29sIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0
ZTY0ICgKLSAgICBEaXNwbGF5ICpkcHksCi0gICAgaW50IHRhcmdldF90eXBlLAotICAgIGludCB0
YXJnZXRfaWQsCi0gICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKLSAgICB1bnNpZ25lZCBp
bnQgYXR0cmlidXRlLAotICAgIGludDY0X3QgKnZhbHVlCi0pewotICAgIFhFeHREaXNwbGF5SW5m
byAqaW5mbyA9IGZpbmRfZGlzcGxheShkcHkpOwotICAgIHhudkN0cmxRdWVyeUF0dHJpYnV0ZTY0
UmVwbHkgcmVwOwotICAgIHhudkN0cmxRdWVyeUF0dHJpYnV0ZVJlcSAqcmVxOwotICAgIEJvb2wg
ZXhpc3RzOwotCi0gICAgaWYgKCFYZXh0SGFzRXh0ZW5zaW9uKGluZm8pKQotICAgICAgICByZXR1
cm4gRmFsc2U7Ci0KLSAgICBYTlZDVFJMQ2hlY2tFeHRlbnNpb24oZHB5LCBpbmZvLCBGYWxzZSk7
Ci0gICAgWE5WQ1RSTENoZWNrVGFyZ2V0RGF0YShkcHksIGluZm8sICZ0YXJnZXRfdHlwZSwgJnRh
cmdldF9pZCk7Ci0KLSAgICBMb2NrRGlzcGxheShkcHkpOwotICAgIEdldFJlcShudkN0cmxRdWVy
eUF0dHJpYnV0ZSwgcmVxKTsKLSAgICByZXEtPnJlcVR5cGUgPSBpbmZvLT5jb2Rlcy0+bWFqb3Jf
b3Bjb2RlOwotICAgIHJlcS0+bnZSZXFUeXBlID0gWF9udkN0cmxRdWVyeUF0dHJpYnV0ZTY0Owot
ICAgIHJlcS0+dGFyZ2V0X3R5cGUgPSB0YXJnZXRfdHlwZTsKLSAgICByZXEtPnRhcmdldF9pZCA9
IHRhcmdldF9pZDsKLSAgICByZXEtPmRpc3BsYXlfbWFzayA9IGRpc3BsYXlfbWFzazsKLSAgICBy
ZXEtPmF0dHJpYnV0ZSA9IGF0dHJpYnV0ZTsKLSAgICBpZiAoIV9YUmVwbHkoZHB5LCAoeFJlcGx5
ICopJnJlcCwgMCwgeFRydWUpKSB7Ci0gICAgICAgIFVubG9ja0Rpc3BsYXkoZHB5KTsKLSAgICAg
ICAgU3luY0hhbmRsZSgpOwotICAgICAgICByZXR1cm4gRmFsc2U7Ci0gICAgfQotICAgIGV4aXN0
cyA9IHJlcC5mbGFnczsKLSAgICBpZiAoZXhpc3RzICYmIHZhbHVlKSAqdmFsdWUgPSByZXAudmFs
dWVfNjQ7Ci0gICAgVW5sb2NrRGlzcGxheShkcHkpOwotICAgIFN5bmNIYW5kbGUoKTsKLSAgICBy
ZXR1cm4gZXhpc3RzOwotfQotCi0KLUJvb2wgWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmli
dXRlICgKLSAgICBEaXNwbGF5ICpkcHksCi0gICAgaW50IHRhcmdldF90eXBlLAotICAgIGludCB0
YXJnZXRfaWQsCi0gICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKLSAgICB1bnNpZ25lZCBp
bnQgYXR0cmlidXRlLAotICAgIGNoYXIgKipwdHIKLSl7Ci0gICAgWEV4dERpc3BsYXlJbmZvICpp
bmZvID0gZmluZF9kaXNwbGF5IChkcHkpOwotICAgIHhudkN0cmxRdWVyeVN0cmluZ0F0dHJpYnV0
ZVJlcGx5IHJlcDsKLSAgICB4bnZDdHJsUXVlcnlTdHJpbmdBdHRyaWJ1dGVSZXEgICAqcmVxOwot
ICAgIEJvb2wgZXhpc3RzOwotICAgIGludCBsZW5ndGgsIG51bWJ5dGVzLCBzbG9wOwotCi0gICAg
aWYgKCFwdHIpIHJldHVybiBGYWxzZTsKLQotICAgIGlmKCFYZXh0SGFzRXh0ZW5zaW9uKGluZm8p
KQotICAgICAgICByZXR1cm4gRmFsc2U7Ci0KLSAgICBYTlZDVFJMQ2hlY2tFeHRlbnNpb24gKGRw
eSwgaW5mbywgRmFsc2UpOwotICAgIFhOVkNUUkxDaGVja1RhcmdldERhdGEoZHB5LCBpbmZvLCAm
dGFyZ2V0X3R5cGUsICZ0YXJnZXRfaWQpOwotCi0gICAgTG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAg
R2V0UmVxIChudkN0cmxRdWVyeVN0cmluZ0F0dHJpYnV0ZSwgcmVxKTsKLSAgICByZXEtPnJlcVR5
cGUgPSBpbmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2RlOwotICAgIHJlcS0+bnZSZXFUeXBlID0gWF9u
dkN0cmxRdWVyeVN0cmluZ0F0dHJpYnV0ZTsKLSAgICByZXEtPnRhcmdldF90eXBlID0gdGFyZ2V0
X3R5cGU7Ci0gICAgcmVxLT50YXJnZXRfaWQgPSB0YXJnZXRfaWQ7Ci0gICAgcmVxLT5kaXNwbGF5
X21hc2sgPSBkaXNwbGF5X21hc2s7Ci0gICAgcmVxLT5hdHRyaWJ1dGUgPSBhdHRyaWJ1dGU7Ci0g
ICAgaWYgKCFfWFJlcGx5IChkcHksICh4UmVwbHkgKikgJnJlcCwgMCwgRmFsc2UpKSB7Ci0gICAg
ICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAgICAgIFN5bmNIYW5kbGUgKCk7Ci0gICAgICAg
IHJldHVybiBGYWxzZTsKLSAgICB9Ci0gICAgbGVuZ3RoID0gcmVwLmxlbmd0aDsKLSAgICBudW1i
eXRlcyA9IHJlcC5uOwotICAgIHNsb3AgPSBudW1ieXRlcyAmIDM7Ci0gICAgZXhpc3RzID0gcmVw
LmZsYWdzOwotICAgIGlmIChleGlzdHMpIHsKLSAgICAgICAgKnB0ciA9IChjaGFyICopIFhtYWxs
b2MobnVtYnl0ZXMpOwotICAgIH0KLSAgICBpZiAoIWV4aXN0cyB8fCAhKnB0cikgewotICAgICAg
ICBfWEVhdERhdGEoZHB5LCBsZW5ndGgpOwotICAgICAgICBVbmxvY2tEaXNwbGF5IChkcHkpOwot
ICAgICAgICBTeW5jSGFuZGxlICgpOwotICAgICAgICByZXR1cm4gRmFsc2U7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgX1hSZWFkKGRweSwgKGNoYXIgKikgKnB0ciwgbnVtYnl0ZXMpOwotICAgICAg
ICBpZiAoc2xvcCkgX1hFYXREYXRhKGRweSwgNC1zbG9wKTsKLSAgICB9Ci0gICAgVW5sb2NrRGlz
cGxheSAoZHB5KTsKLSAgICBTeW5jSGFuZGxlICgpOwotICAgIHJldHVybiBleGlzdHM7Ci19Ci0K
LUJvb2wgWE5WQ1RSTFF1ZXJ5U3RyaW5nQXR0cmlidXRlICgKLSAgICBEaXNwbGF5ICpkcHksCi0g
ICAgaW50IHNjcmVlbiwKLSAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAotICAgIHVuc2ln
bmVkIGludCBhdHRyaWJ1dGUsCi0gICAgY2hhciAqKnB0cgotKXsKLSAgICByZXR1cm4gWE5WQ1RS
TFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRlKGRweSwgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1ND
UkVFTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmVl
biwgZGlzcGxheV9tYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXR0cmlidXRlLCBwdHIpOwotfQotCi0KLUJvb2wgWE5WQ1RSTFNldFRhcmdldFN0cmlu
Z0F0dHJpYnV0ZSAoCi0gICAgRGlzcGxheSAqZHB5LAotICAgIGludCB0YXJnZXRfdHlwZSwKLSAg
ICBpbnQgdGFyZ2V0X2lkLAotICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCi0gICAgdW5z
aWduZWQgaW50IGF0dHJpYnV0ZSwKLSAgICBjaGFyICpwdHIKLSl7Ci0gICAgWEV4dERpc3BsYXlJ
bmZvICppbmZvID0gZmluZF9kaXNwbGF5IChkcHkpOwotICAgIHhudkN0cmxTZXRTdHJpbmdBdHRy
aWJ1dGVSZXEgKnJlcTsKLSAgICB4bnZDdHJsU2V0U3RyaW5nQXR0cmlidXRlUmVwbHkgcmVwOwot
ICAgIGludCBzaXplOwotICAgIEJvb2wgc3VjY2VzczsKLSAgICAKLSAgICBpZighWGV4dEhhc0V4
dGVuc2lvbihpbmZvKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlOwotCi0gICAgWE5WQ1RSTENoZWNr
RXh0ZW5zaW9uIChkcHksIGluZm8sIEZhbHNlKTsKLQotICAgIHNpemUgPSBzdHJsZW4ocHRyKSsx
OwotCi0gICAgTG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAgR2V0UmVxIChudkN0cmxTZXRTdHJpbmdB
dHRyaWJ1dGUsIHJlcSk7Ci0gICAgcmVxLT5yZXFUeXBlID0gaW5mby0+Y29kZXMtPm1ham9yX29w
Y29kZTsKLSAgICByZXEtPm52UmVxVHlwZSA9IFhfbnZDdHJsU2V0U3RyaW5nQXR0cmlidXRlOwot
ICAgIHJlcS0+dGFyZ2V0X3R5cGUgPSB0YXJnZXRfdHlwZTsKLSAgICByZXEtPnRhcmdldF9pZCA9
IHRhcmdldF9pZDsKLSAgICByZXEtPmRpc3BsYXlfbWFzayA9IGRpc3BsYXlfbWFzazsKLSAgICBy
ZXEtPmF0dHJpYnV0ZSA9IGF0dHJpYnV0ZTsKLSAgICByZXEtPmxlbmd0aCArPSAoKHNpemUgKyAz
KSAmIH4zKSA+PiAyOwotICAgIHJlcS0+bnVtX2J5dGVzID0gc2l6ZTsKLSAgICBEYXRhKGRweSwg
cHRyLCBzaXplKTsKLSAgICAKLSAgICBpZiAoIV9YUmVwbHkgKGRweSwgKHhSZXBseSAqKSAmcmVw
LCAwLCBGYWxzZSkpIHsKLSAgICAgICAgVW5sb2NrRGlzcGxheSAoZHB5KTsKLSAgICAgICAgU3lu
Y0hhbmRsZSAoKTsKLSAgICAgICAgcmV0dXJuIEZhbHNlOwotICAgIH0KLSAgICBVbmxvY2tEaXNw
bGF5IChkcHkpOwotICAgIFN5bmNIYW5kbGUgKCk7Ci0gICAgCi0gICAgc3VjY2VzcyA9IHJlcC5m
bGFnczsKLSAgICByZXR1cm4gc3VjY2VzczsKLX0KLQotQm9vbCBYTlZDVFJMU2V0U3RyaW5nQXR0
cmlidXRlICgKLSAgICBEaXNwbGF5ICpkcHksCi0gICAgaW50IHNjcmVlbiwKLSAgICB1bnNpZ25l
ZCBpbnQgZGlzcGxheV9tYXNrLAotICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0gICAgY2hh
ciAqcHRyCi0pewotICAgIHJldHVybiBYTlZDVFJMU2V0VGFyZ2V0U3RyaW5nQXR0cmlidXRlKGRw
eSwgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzY3JlZW4sIGRpc3BsYXlfbWFzaywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUsIHB0cik7Ci19Ci0KLQotc3Rh
dGljIEJvb2wgWE5WQ1RSTFF1ZXJ5VmFsaWRUYXJnZXRBdHRyaWJ1dGVWYWx1ZXMzMiAoCi0gICAg
RGlzcGxheSAqZHB5LAotICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbywKLSAgICBpbnQgdGFyZ2V0
X3R5cGUsCi0gICAgaW50IHRhcmdldF9pZCwKLSAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNr
LAotICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgCi0gICAgTlZDVFJMQXR0cmlidXRlVmFsaWRWYWx1ZXNSZWMgKnZhbHVlcwotKXsKLSAg
ICB4bnZDdHJsUXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlc1JlcGx5IHJlcDsKLSAgICB4bnZDdHJs
UXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlc1JlcSAgICpyZXE7Ci0gICAgQm9vbCBleGlzdHM7Ci0K
LSAgICBMb2NrRGlzcGxheSAoZHB5KTsKLSAgICBHZXRSZXEgKG52Q3RybFF1ZXJ5VmFsaWRBdHRy
aWJ1dGVWYWx1ZXMsIHJlcSk7Ci0gICAgcmVxLT5yZXFUeXBlID0gaW5mby0+Y29kZXMtPm1ham9y
X29wY29kZTsKLSAgICByZXEtPm52UmVxVHlwZSA9IFhfbnZDdHJsUXVlcnlWYWxpZEF0dHJpYnV0
ZVZhbHVlczsKLSAgICByZXEtPnRhcmdldF90eXBlID0gdGFyZ2V0X3R5cGU7Ci0gICAgcmVxLT50
YXJnZXRfaWQgPSB0YXJnZXRfaWQ7Ci0gICAgcmVxLT5kaXNwbGF5X21hc2sgPSBkaXNwbGF5X21h
c2s7Ci0gICAgcmVxLT5hdHRyaWJ1dGUgPSBhdHRyaWJ1dGU7Ci0gICAgaWYgKCFfWFJlcGx5IChk
cHksICh4UmVwbHkgKikgJnJlcCwgMCwgeFRydWUpKSB7Ci0gICAgICAgIFVubG9ja0Rpc3BsYXkg
KGRweSk7Ci0gICAgICAgIFN5bmNIYW5kbGUgKCk7Ci0gICAgICAgIHJldHVybiBGYWxzZTsKLSAg
ICB9Ci0gICAgZXhpc3RzID0gcmVwLmZsYWdzOwotICAgIGlmIChleGlzdHMpIHsKLSAgICAgICAg
dmFsdWVzLT50eXBlID0gcmVwLmF0dHJfdHlwZTsKLSAgICAgICAgaWYgKHJlcC5hdHRyX3R5cGUg
PT0gQVRUUklCVVRFX1RZUEVfUkFOR0UpIHsKLSAgICAgICAgICAgIHZhbHVlcy0+dS5yYW5nZS5t
aW4gPSByZXAubWluOwotICAgICAgICAgICAgdmFsdWVzLT51LnJhbmdlLm1heCA9IHJlcC5tYXg7
Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHJlcC5hdHRyX3R5cGUgPT0gQVRUUklCVVRFX1RZUEVf
SU5UX0JJVFMpIHsKLSAgICAgICAgICAgIHZhbHVlcy0+dS5iaXRzLmludHMgPSByZXAuYml0czsK
LSAgICAgICAgfQotICAgICAgICB2YWx1ZXMtPnBlcm1pc3Npb25zID0gcmVwLnBlcm1zOwotICAg
IH0KLSAgICBVbmxvY2tEaXNwbGF5IChkcHkpOwotICAgIFN5bmNIYW5kbGUgKCk7Ci0gICAgcmV0
dXJuIGV4aXN0czsKLX0KLQotCi1Cb29sIFhOVkNUUkxRdWVyeVZhbGlkVGFyZ2V0U3RyaW5nQXR0
cmlidXRlVmFsdWVzICgKLSAgICBEaXNwbGF5ICpkcHksCi0gICAgaW50IHRhcmdldF90eXBlLAot
ICAgIGludCB0YXJnZXRfaWQsCi0gICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKLSAgICB1
bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgIE5WQ1RSTEF0dHJpYnV0ZVZhbGlkVmFsdWVzUmVj
ICp2YWx1ZXMKLSl7Ci0gICAgWEV4dERpc3BsYXlJbmZvICppbmZvID0gZmluZF9kaXNwbGF5KGRw
eSk7Ci0gICAgQm9vbCBleGlzdHM7Ci0gICAgeG52Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1
ZXNSZXBseSByZXA7Ci0gICAgeG52Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXNSZXEgICAq
cmVxOwotCi0gICAgaWYgKCF2YWx1ZXMpIHJldHVybiBGYWxzZTsKLQotICAgIGlmICghWGV4dEhh
c0V4dGVuc2lvbihpbmZvKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlOwotCi0gICAgWE5WQ1RSTENo
ZWNrRXh0ZW5zaW9uKGRweSwgaW5mbywgRmFsc2UpOwotCi0gICAgTG9ja0Rpc3BsYXkoZHB5KTsK
LSAgICBHZXRSZXEgKG52Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXMsIHJlcSk7Ci0gICAg
cmVxLT5yZXFUeXBlID0gaW5mby0+Y29kZXMtPm1ham9yX29wY29kZTsKLSAgICByZXEtPm52UmVx
VHlwZSA9IFhfbnZDdHJsUXVlcnlWYWxpZFN0cmluZ0F0dHJpYnV0ZVZhbHVlczsKLSAgICByZXEt
PnRhcmdldF90eXBlID0gdGFyZ2V0X3R5cGU7Ci0gICAgcmVxLT50YXJnZXRfaWQgPSB0YXJnZXRf
aWQ7Ci0gICAgcmVxLT5kaXNwbGF5X21hc2sgPSBkaXNwbGF5X21hc2s7Ci0gICAgcmVxLT5hdHRy
aWJ1dGUgPSBhdHRyaWJ1dGU7Ci0gICAgaWYgKCFfWFJlcGx5KGRweSwgKHhSZXBseSAqKSZyZXAs
IDAsIHhUcnVlKSkgewotICAgICAgICBVbmxvY2tEaXNwbGF5KGRweSk7Ci0gICAgICAgIFN5bmNI
YW5kbGUoKTsKLSAgICAgICAgcmV0dXJuIEZhbHNlOwotICAgIH0KLSAgICBleGlzdHMgPSByZXAu
ZmxhZ3M7Ci0gICAgaWYgKGV4aXN0cykgewotICAgICAgICB2YWx1ZXMtPnR5cGUgPSByZXAuYXR0
cl90eXBlOwotICAgICAgICB2YWx1ZXMtPnBlcm1pc3Npb25zID0gcmVwLnBlcm1zOwotICAgIH0K
LSAgICBVbmxvY2tEaXNwbGF5KGRweSk7Ci0gICAgU3luY0hhbmRsZSgpOwotICAgIHJldHVybiBl
eGlzdHM7Ci19Ci0KLQotc3RhdGljIEJvb2wgWE5WQ1RSTFF1ZXJ5VmFsaWRUYXJnZXRBdHRyaWJ1
dGVWYWx1ZXM2NCAoCi0gICAgRGlzcGxheSAqZHB5LAotICAgIFhFeHREaXNwbGF5SW5mbyAqaW5m
bywKLSAgICBpbnQgdGFyZ2V0X3R5cGUsCi0gICAgaW50IHRhcmdldF9pZCwKLSAgICB1bnNpZ25l
ZCBpbnQgZGlzcGxheV9tYXNrLAotICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0gICAgTlZD
VFJMQXR0cmlidXRlVmFsaWRWYWx1ZXNSZWMgKnZhbHVlcwotKXsKLSAgICB4bnZDdHJsUXVlcnlW
YWxpZEF0dHJpYnV0ZVZhbHVlczY0UmVwbHkgcmVwOwotICAgIHhudkN0cmxRdWVyeVZhbGlkQXR0
cmlidXRlVmFsdWVzUmVxICpyZXE7Ci0gICAgQm9vbCBleGlzdHM7Ci0KLSAgICBMb2NrRGlzcGxh
eShkcHkpOwotICAgIEdldFJlcShudkN0cmxRdWVyeVZhbGlkQXR0cmlidXRlVmFsdWVzLCByZXEp
OwotICAgIHJlcS0+cmVxVHlwZSA9IGluZm8tPmNvZGVzLT5tYWpvcl9vcGNvZGU7Ci0gICAgcmVx
LT5udlJlcVR5cGUgPSBYX252Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXM2NDsKLSAgICBy
ZXEtPnRhcmdldF90eXBlID0gdGFyZ2V0X3R5cGU7Ci0gICAgcmVxLT50YXJnZXRfaWQgPSB0YXJn
ZXRfaWQ7Ci0gICAgcmVxLT5kaXNwbGF5X21hc2sgPSBkaXNwbGF5X21hc2s7Ci0gICAgcmVxLT5h
dHRyaWJ1dGUgPSBhdHRyaWJ1dGU7Ci0gICAgaWYgKCFfWFJlcGx5KGRweSwgKHhSZXBseSAqKSZy
ZXAsCi0gICAgICAgICAgICAgICAgIHN6X3hudkN0cmxRdWVyeVZhbGlkQXR0cmlidXRlVmFsdWVz
NjRSZXBseV9leHRyYSwKLSAgICAgICAgICAgICAgICAgeFRydWUpKSB7Ci0gICAgICAgIFVubG9j
a0Rpc3BsYXkoZHB5KTsKLSAgICAgICAgU3luY0hhbmRsZSgpOwotICAgICAgICByZXR1cm4gRmFs
c2U7Ci0gICAgfQotICAgIGV4aXN0cyA9IHJlcC5mbGFnczsKLSAgICBpZiAoZXhpc3RzKSB7Ci0g
ICAgICAgIHZhbHVlcy0+dHlwZSA9IHJlcC5hdHRyX3R5cGU7Ci0gICAgICAgIGlmIChyZXAuYXR0
cl90eXBlID09IEFUVFJJQlVURV9UWVBFX1JBTkdFKSB7Ci0gICAgICAgICAgICB2YWx1ZXMtPnUu
cmFuZ2UubWluID0gcmVwLm1pbl82NDsKLSAgICAgICAgICAgIHZhbHVlcy0+dS5yYW5nZS5tYXgg
PSByZXAubWF4XzY0OwotICAgICAgICB9Ci0gICAgICAgIGlmIChyZXAuYXR0cl90eXBlID09IEFU
VFJJQlVURV9UWVBFX0lOVF9CSVRTKSB7Ci0gICAgICAgICAgICB2YWx1ZXMtPnUuYml0cy5pbnRz
ID0gcmVwLmJpdHNfNjQ7Ci0gICAgICAgIH0KLSAgICAgICAgdmFsdWVzLT5wZXJtaXNzaW9ucyA9
IHJlcC5wZXJtczsKLSAgICB9Ci0gICAgVW5sb2NrRGlzcGxheShkcHkpOwotICAgIFN5bmNIYW5k
bGUoKTsKLSAgICByZXR1cm4gZXhpc3RzOwotfQotCi1Cb29sIFhOVkNUUkxRdWVyeVZhbGlkVGFy
Z2V0QXR0cmlidXRlVmFsdWVzICgKLSAgICBEaXNwbGF5ICpkcHksCi0gICAgaW50IHRhcmdldF90
eXBlLAotICAgIGludCB0YXJnZXRfaWQsCi0gICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywK
LSAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgIE5WQ1RSTEF0dHJpYnV0ZVZhbGlkVmFs
dWVzUmVjICp2YWx1ZXMKLSl7Ci0gICAgWEV4dERpc3BsYXlJbmZvICppbmZvID0gZmluZF9kaXNw
bGF5KGRweSk7Ci0gICAgQm9vbCBleGlzdHM7Ci0gICAgdWludHB0cl90IGZsYWdzOwotCi0gICAg
aWYgKCF2YWx1ZXMpIHJldHVybiBGYWxzZTsKLQotICAgIGlmICghWGV4dEhhc0V4dGVuc2lvbihp
bmZvKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlOwotCi0gICAgWE5WQ1RSTENoZWNrRXh0ZW5zaW9u
KGRweSwgaW5mbywgRmFsc2UpOwotICAgIFhOVkNUUkxDaGVja1RhcmdldERhdGEoZHB5LCBpbmZv
LCAmdGFyZ2V0X3R5cGUsICZ0YXJnZXRfaWQpOwotCi0gICAgZmxhZ3MgPSB2ZXJzaW9uX2ZsYWdz
KGRweSxpbmZvKTsKLQotICAgIGlmICghKGZsYWdzICYgTlZDVFJMX0VYVF9FWElTVFMpKQotICAg
ICAgICByZXR1cm4gRmFsc2U7Ci0KLSAgICBpZiAoZmxhZ3MgJiBOVkNUUkxfRVhUXzY0X0JJVF9B
VFRSSUJVVEVTKSB7Ci0gICAgICAgIGV4aXN0cyA9IFhOVkNUUkxRdWVyeVZhbGlkVGFyZ2V0QXR0
cmlidXRlVmFsdWVzNjQoZHB5LCBpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF90eXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9pZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aXNwbGF5X21hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyk7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgZXhpc3RzID0gWE5WQ1RSTFF1ZXJ5VmFsaWRUYXJnZXRBdHRyaWJ1dGVWYWx1ZXMzMihkcHks
IGluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGFyZ2V0X3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2lkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfbWFzaywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRy
aWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsdWVzKTsKLSAgICB9Ci0gICAgcmV0dXJuIGV4aXN0czsKLX0KLQotCi1Cb29s
IFhOVkNUUkxRdWVyeVZhbGlkQXR0cmlidXRlVmFsdWVzICgKLSAgICBEaXNwbGF5ICpkcHksCi0g
ICAgaW50IHNjcmVlbiwKLSAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAotICAgIHVuc2ln
bmVkIGludCBhdHRyaWJ1dGUsCi0gICAgTlZDVFJMQXR0cmlidXRlVmFsaWRWYWx1ZXNSZWMgKnZh
bHVlcwotKXsKLSAgICByZXR1cm4gWE5WQ1RSTFF1ZXJ5VmFsaWRUYXJnZXRBdHRyaWJ1dGVWYWx1
ZXMoZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW4sIGRpc3BsYXlfbWFzaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlLCB2YWx1
ZXMpOwotfQotCi0KLXN0YXRpYyBCb29sIFF1ZXJ5QXR0cmlidXRlUGVybWlzc2lvbnNJbnRlcm5h
bCAoCi0gICAgRGlzcGxheSAqZHB5LAotICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0gICAg
TlZDVFJMQXR0cmlidXRlUGVybWlzc2lvbnNSZWMgKnBlcm1pc3Npb25zLAotICAgIHVuc2lnbmVk
IGludCByZXFUeXBlCi0pewotICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxh
eSAoZHB5KTsKLSAgICB4bnZDdHJsUXVlcnlBdHRyaWJ1dGVQZXJtaXNzaW9uc1JlcGx5IHJlcDsK
LSAgICB4bnZDdHJsUXVlcnlBdHRyaWJ1dGVQZXJtaXNzaW9uc1JlcSAqcmVxOwotICAgIEJvb2wg
ZXhpc3RzOwotCi0gICAgaWYoIVhleHRIYXNFeHRlbnNpb24oaW5mbykpCi0gICAgICAgIHJldHVy
biBGYWxzZTsKLQotICAgIFhOVkNUUkxDaGVja0V4dGVuc2lvbiAoZHB5LCBpbmZvLCBGYWxzZSk7
Ci0KLSAgICBMb2NrRGlzcGxheShkcHkpOwotICAgIEdldFJlcShudkN0cmxRdWVyeUF0dHJpYnV0
ZVBlcm1pc3Npb25zLCByZXEpOwotICAgIHJlcS0+cmVxVHlwZSA9IGluZm8tPmNvZGVzLT5tYWpv
cl9vcGNvZGU7Ci0gICAgcmVxLT5udlJlcVR5cGUgPSByZXFUeXBlOwotICAgIHJlcS0+YXR0cmli
dXRlID0gYXR0cmlidXRlOwotICAgIGlmICghX1hSZXBseSAoZHB5LCAoeFJlcGx5ICopICZyZXAs
IDAsIHhUcnVlKSkgewotICAgICAgICBVbmxvY2tEaXNwbGF5IChkcHkpOwotICAgICAgICBTeW5j
SGFuZGxlKCk7Ci0gICAgICAgIHJldHVybiBGYWxzZTsKLSAgICB9Ci0gICAgZXhpc3RzID0gcmVw
LmZsYWdzOwotICAgIGlmIChleGlzdHMgJiYgcGVybWlzc2lvbnMpIHsKLSAgICAgICAgcGVybWlz
c2lvbnMtPnR5cGUgPSByZXAuYXR0cl90eXBlOwotICAgICAgICBwZXJtaXNzaW9ucy0+cGVybWlz
c2lvbnMgPSByZXAucGVybXM7Ci0gICAgfQotICAgIFVubG9ja0Rpc3BsYXkoZHB5KTsKLSAgICBT
eW5jSGFuZGxlKCk7Ci0gICAgcmV0dXJuIGV4aXN0czsKLX0KLQotCi1Cb29sIFhOVkNUUkxRdWVy
eUF0dHJpYnV0ZVBlcm1pc3Npb25zICgKLSAgICBEaXNwbGF5ICpkcHksCi0gICAgdW5zaWduZWQg
aW50IGF0dHJpYnV0ZSwKLSAgICBOVkNUUkxBdHRyaWJ1dGVQZXJtaXNzaW9uc1JlYyAqcGVybWlz
c2lvbnMKLSl7Ci0gICAgcmV0dXJuIFF1ZXJ5QXR0cmlidXRlUGVybWlzc2lvbnNJbnRlcm5hbChk
cHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXNz
aW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhfbnZD
dHJsUXVlcnlBdHRyaWJ1dGVQZXJtaXNzaW9ucyk7Ci19Ci0KLQotQm9vbCBYTlZDVFJMUXVlcnlT
dHJpbmdBdHRyaWJ1dGVQZXJtaXNzaW9ucyAoCi0gICAgRGlzcGxheSAqZHB5LAotICAgIHVuc2ln
bmVkIGludCBhdHRyaWJ1dGUsCi0gICAgTlZDVFJMQXR0cmlidXRlUGVybWlzc2lvbnNSZWMgKnBl
cm1pc3Npb25zCi0pewotICAgIHJldHVybiBRdWVyeUF0dHJpYnV0ZVBlcm1pc3Npb25zSW50ZXJu
YWwoZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0
cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVy
bWlzc2lvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBY
X252Q3RybFF1ZXJ5U3RyaW5nQXR0cmlidXRlUGVybWlzc2lvbnMpOwotfQotCi0KLUJvb2wgWE5W
Q1RSTFF1ZXJ5QmluYXJ5RGF0YUF0dHJpYnV0ZVBlcm1pc3Npb25zICgKLSAgICBEaXNwbGF5ICpk
cHksCi0gICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKLSAgICBOVkNUUkxBdHRyaWJ1dGVQZXJt
aXNzaW9uc1JlYyAqcGVybWlzc2lvbnMKLSl7Ci0gICAgcmV0dXJuIFF1ZXJ5QXR0cmlidXRlUGVy
bWlzc2lvbnNJbnRlcm5hbChkcHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwZXJtaXNzaW9ucywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFhfbnZDdHJsUXVlcnlCaW5hcnlEYXRhQXR0cmlidXRlUGVybWlzc2lvbnMp
OwotfQotCi0KLUJvb2wgWE5WQ1RSTFF1ZXJ5U3RyaW5nT3BlcmF0aW9uQXR0cmlidXRlUGVybWlz
c2lvbnMgKAotICAgIERpc3BsYXkgKmRweSwKLSAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAot
ICAgIE5WQ1RSTEF0dHJpYnV0ZVBlcm1pc3Npb25zUmVjICpwZXJtaXNzaW9ucwotKXsKLSAgICBy
ZXR1cm4gUXVlcnlBdHRyaWJ1dGVQZXJtaXNzaW9uc0ludGVybmFsKGRweSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWF9udkN0cmxRdWVyeVN0cmluZ09w
ZXJhdGlvbkF0dHJpYnV0ZVBlcm1pc3Npb25zKTsKLX0KLQotCi12b2lkIFhOVkNUUkxTZXRHdm9D
b2xvckNvbnZlcnNpb24gKAotICAgIERpc3BsYXkgKmRweSwKLSAgICBpbnQgc2NyZWVuLAotICAg
IGZsb2F0IGNvbG9yTWF0cml4WzNdWzNdLAotICAgIGZsb2F0IGNvbG9yT2Zmc2V0WzNdLAotICAg
IGZsb2F0IGNvbG9yU2NhbGVbM10KLSl7Ci0gICAgWEV4dERpc3BsYXlJbmZvICppbmZvID0gZmlu
ZF9kaXNwbGF5IChkcHkpOwotICAgIHhudkN0cmxTZXRHdm9Db2xvckNvbnZlcnNpb25SZXEgKnJl
cTsKLQotICAgIFhOVkNUUkxTaW1wbGVDaGVja0V4dGVuc2lvbiAoZHB5LCBpbmZvKTsKLQotICAg
IExvY2tEaXNwbGF5IChkcHkpOwotICAgIEdldFJlcSAobnZDdHJsU2V0R3ZvQ29sb3JDb252ZXJz
aW9uLCByZXEpOwotICAgIHJlcS0+cmVxVHlwZSA9IGluZm8tPmNvZGVzLT5tYWpvcl9vcGNvZGU7
Ci0gICAgcmVxLT5udlJlcVR5cGUgPSBYX252Q3RybFNldEd2b0NvbG9yQ29udmVyc2lvbjsKLSAg
ICByZXEtPnNjcmVlbiA9IHNjcmVlbjsKLQotICAgIHJlcS0+Y3NjTWF0cml4X3lfciA9IGNvbG9y
TWF0cml4WzBdWzBdOwotICAgIHJlcS0+Y3NjTWF0cml4X3lfZyA9IGNvbG9yTWF0cml4WzBdWzFd
OwotICAgIHJlcS0+Y3NjTWF0cml4X3lfYiA9IGNvbG9yTWF0cml4WzBdWzJdOwotCi0gICAgcmVx
LT5jc2NNYXRyaXhfY3JfciA9IGNvbG9yTWF0cml4WzFdWzBdOwotICAgIHJlcS0+Y3NjTWF0cml4
X2NyX2cgPSBjb2xvck1hdHJpeFsxXVsxXTsKLSAgICByZXEtPmNzY01hdHJpeF9jcl9iID0gY29s
b3JNYXRyaXhbMV1bMl07Ci0KLSAgICByZXEtPmNzY01hdHJpeF9jYl9yID0gY29sb3JNYXRyaXhb
Ml1bMF07Ci0gICAgcmVxLT5jc2NNYXRyaXhfY2JfZyA9IGNvbG9yTWF0cml4WzJdWzFdOwotICAg
IHJlcS0+Y3NjTWF0cml4X2NiX2IgPSBjb2xvck1hdHJpeFsyXVsyXTsKLQotICAgIHJlcS0+Y3Nj
T2Zmc2V0X3kgID0gY29sb3JPZmZzZXRbMF07Ci0gICAgcmVxLT5jc2NPZmZzZXRfY3IgPSBjb2xv
ck9mZnNldFsxXTsKLSAgICByZXEtPmNzY09mZnNldF9jYiA9IGNvbG9yT2Zmc2V0WzJdOwotCi0g
ICAgcmVxLT5jc2NTY2FsZV95ICA9IGNvbG9yU2NhbGVbMF07Ci0gICAgcmVxLT5jc2NTY2FsZV9j
ciA9IGNvbG9yU2NhbGVbMV07Ci0gICAgcmVxLT5jc2NTY2FsZV9jYiA9IGNvbG9yU2NhbGVbMl07
Ci0KLSAgICBVbmxvY2tEaXNwbGF5IChkcHkpOwotICAgIFN5bmNIYW5kbGUgKCk7Ci19Ci0KLQot
Qm9vbCBYTlZDVFJMUXVlcnlHdm9Db2xvckNvbnZlcnNpb24gKAotICAgIERpc3BsYXkgKmRweSwK
LSAgICBpbnQgc2NyZWVuLAotICAgIGZsb2F0IGNvbG9yTWF0cml4WzNdWzNdLAotICAgIGZsb2F0
IGNvbG9yT2Zmc2V0WzNdLAotICAgIGZsb2F0IGNvbG9yU2NhbGVbM10KLSl7Ci0gICAgWEV4dERp
c3BsYXlJbmZvICppbmZvID0gZmluZF9kaXNwbGF5IChkcHkpOwotICAgIHhudkN0cmxRdWVyeUd2
b0NvbG9yQ29udmVyc2lvblJlcGx5IHJlcDsKLSAgICB4bnZDdHJsUXVlcnlHdm9Db2xvckNvbnZl
cnNpb25SZXEgKnJlcTsKLQotICAgIGlmKCFYZXh0SGFzRXh0ZW5zaW9uKGluZm8pKQotICAgICAg
ICByZXR1cm4gRmFsc2U7Ci0KLSAgICBYTlZDVFJMQ2hlY2tFeHRlbnNpb24gKGRweSwgaW5mbywg
RmFsc2UpOwotCi0gICAgTG9ja0Rpc3BsYXkgKGRweSk7Ci0KLSAgICBHZXRSZXEgKG52Q3RybFF1
ZXJ5R3ZvQ29sb3JDb252ZXJzaW9uLCByZXEpOwotICAgIHJlcS0+cmVxVHlwZSA9IGluZm8tPmNv
ZGVzLT5tYWpvcl9vcGNvZGU7Ci0gICAgcmVxLT5udlJlcVR5cGUgPSBYX252Q3RybFF1ZXJ5R3Zv
Q29sb3JDb252ZXJzaW9uOwotICAgIHJlcS0+c2NyZWVuID0gc2NyZWVuOwotCi0gICAgaWYgKCFf
WFJlcGx5KGRweSwgKHhSZXBseSAqKSAmcmVwLCAwLCB4RmFsc2UpKSB7Ci0gICAgICAgIFVubG9j
a0Rpc3BsYXkgKGRweSk7Ci0gICAgICAgIFN5bmNIYW5kbGUgKCk7Ci0gICAgICAgIHJldHVybiBG
YWxzZTsKLSAgICB9Ci0KLSAgICBfWFJlYWQoZHB5LCAoY2hhciAqKShjb2xvck1hdHJpeCksIDM2
KTsKLSAgICBfWFJlYWQoZHB5LCAoY2hhciAqKShjb2xvck9mZnNldCksIDEyKTsKLSAgICBfWFJl
YWQoZHB5LCAoY2hhciAqKShjb2xvclNjYWxlKSwgMTIpOwotCi0gICAgVW5sb2NrRGlzcGxheSAo
ZHB5KTsKLSAgICBTeW5jSGFuZGxlICgpOwotCi0gICAgcmV0dXJuIFRydWU7Ci19Ci0KLQotQm9v
bCBYTlZDdHJsU2VsZWN0VGFyZ2V0Tm90aWZ5ICgKLSAgICBEaXNwbGF5ICpkcHksCi0gICAgaW50
IHRhcmdldF90eXBlLAotICAgIGludCB0YXJnZXRfaWQsCi0gICAgaW50IG5vdGlmeV90eXBlLAot
ICAgIEJvb2wgb25vZmYKLSl7Ci0gICAgWEV4dERpc3BsYXlJbmZvICppbmZvID0gZmluZF9kaXNw
bGF5IChkcHkpOwotICAgIHhudkN0cmxTZWxlY3RUYXJnZXROb3RpZnlSZXEgKnJlcTsKLQotICAg
IGlmKCFYZXh0SGFzRXh0ZW5zaW9uIChpbmZvKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlOwotCi0g
ICAgWE5WQ1RSTENoZWNrRXh0ZW5zaW9uIChkcHksIGluZm8sIEZhbHNlKTsKLQotICAgIExvY2tE
aXNwbGF5IChkcHkpOwotICAgIEdldFJlcSAobnZDdHJsU2VsZWN0VGFyZ2V0Tm90aWZ5LCByZXEp
OwotICAgIHJlcS0+cmVxVHlwZSA9IGluZm8tPmNvZGVzLT5tYWpvcl9vcGNvZGU7Ci0gICAgcmVx
LT5udlJlcVR5cGUgPSBYX252Q3RybFNlbGVjdFRhcmdldE5vdGlmeTsKLSAgICByZXEtPnRhcmdl
dF90eXBlID0gdGFyZ2V0X3R5cGU7Ci0gICAgcmVxLT50YXJnZXRfaWQgPSB0YXJnZXRfaWQ7Ci0g
ICAgcmVxLT5ub3RpZnlUeXBlID0gbm90aWZ5X3R5cGU7Ci0gICAgcmVxLT5vbm9mZiA9IG9ub2Zm
OwotICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAgU3luY0hhbmRsZSAoKTsKLQotICAgIHJl
dHVybiBUcnVlOwotfQotCi0KLUJvb2wgWE5WQ3RybFNlbGVjdE5vdGlmeSAoCi0gICAgRGlzcGxh
eSAqZHB5LAotICAgIGludCBzY3JlZW4sCi0gICAgaW50IHR5cGUsCi0gICAgQm9vbCBvbm9mZgot
KXsKLSAgICBYRXh0RGlzcGxheUluZm8gKmluZm8gPSBmaW5kX2Rpc3BsYXkgKGRweSk7Ci0gICAg
eG52Q3RybFNlbGVjdE5vdGlmeVJlcSAqcmVxOwotCi0gICAgaWYoIVhleHRIYXNFeHRlbnNpb24g
KGluZm8pKQotICAgICAgICByZXR1cm4gRmFsc2U7Ci0KLSAgICBYTlZDVFJMQ2hlY2tFeHRlbnNp
b24gKGRweSwgaW5mbywgRmFsc2UpOwotCi0gICAgTG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAgR2V0
UmVxIChudkN0cmxTZWxlY3ROb3RpZnksIHJlcSk7Ci0gICAgcmVxLT5yZXFUeXBlID0gaW5mby0+
Y29kZXMtPm1ham9yX29wY29kZTsKLSAgICByZXEtPm52UmVxVHlwZSA9IFhfbnZDdHJsU2VsZWN0
Tm90aWZ5OwotICAgIHJlcS0+c2NyZWVuID0gc2NyZWVuOwotICAgIHJlcS0+bm90aWZ5VHlwZSA9
IHR5cGU7Ci0gICAgcmVxLT5vbm9mZiA9IG9ub2ZmOwotICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7
Ci0gICAgU3luY0hhbmRsZSAoKTsKLQotICAgIHJldHVybiBUcnVlOwotfQotCi1Cb29sIFhOVkNU
UkxRdWVyeVRhcmdldEJpbmFyeURhdGEgKAotICAgIERpc3BsYXkgKmRweSwKLSAgICBpbnQgdGFy
Z2V0X3R5cGUsCi0gICAgaW50IHRhcmdldF9pZCwKLSAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9t
YXNrLAotICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0gICAgdW5zaWduZWQgY2hhciAqKnB0
ciwKLSAgICBpbnQgKmxlbgotKXsKLSAgICBYRXh0RGlzcGxheUluZm8gKmluZm8gPSBmaW5kX2Rp
c3BsYXkgKGRweSk7Ci0gICAgeG52Q3RybFF1ZXJ5QmluYXJ5RGF0YVJlcGx5IHJlcDsKLSAgICB4
bnZDdHJsUXVlcnlCaW5hcnlEYXRhUmVxICAgKnJlcTsKLSAgICBCb29sIGV4aXN0czsKLSAgICBp
bnQgbGVuZ3RoLCBudW1ieXRlcywgc2xvcDsKLQotICAgIGlmICghcHRyKSByZXR1cm4gRmFsc2U7
Ci0KLSAgICBpZighWGV4dEhhc0V4dGVuc2lvbihpbmZvKSkKLSAgICAgICAgcmV0dXJuIEZhbHNl
OwotCi0gICAgWE5WQ1RSTENoZWNrRXh0ZW5zaW9uIChkcHksIGluZm8sIEZhbHNlKTsKLSAgICBY
TlZDVFJMQ2hlY2tUYXJnZXREYXRhKGRweSwgaW5mbywgJnRhcmdldF90eXBlLCAmdGFyZ2V0X2lk
KTsKLQotICAgIExvY2tEaXNwbGF5IChkcHkpOwotICAgIEdldFJlcSAobnZDdHJsUXVlcnlCaW5h
cnlEYXRhLCByZXEpOwotICAgIHJlcS0+cmVxVHlwZSA9IGluZm8tPmNvZGVzLT5tYWpvcl9vcGNv
ZGU7Ci0gICAgcmVxLT5udlJlcVR5cGUgPSBYX252Q3RybFF1ZXJ5QmluYXJ5RGF0YTsKLSAgICBy
ZXEtPnRhcmdldF90eXBlID0gdGFyZ2V0X3R5cGU7Ci0gICAgcmVxLT50YXJnZXRfaWQgPSB0YXJn
ZXRfaWQ7Ci0gICAgcmVxLT5kaXNwbGF5X21hc2sgPSBkaXNwbGF5X21hc2s7Ci0gICAgcmVxLT5h
dHRyaWJ1dGUgPSBhdHRyaWJ1dGU7Ci0gICAgaWYgKCFfWFJlcGx5IChkcHksICh4UmVwbHkgKikg
JnJlcCwgMCwgRmFsc2UpKSB7Ci0gICAgICAgIFVubG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAgICAg
IFN5bmNIYW5kbGUgKCk7Ci0gICAgICAgIHJldHVybiBGYWxzZTsKLSAgICB9Ci0gICAgbGVuZ3Ro
ID0gcmVwLmxlbmd0aDsKLSAgICBudW1ieXRlcyA9IHJlcC5uOwotICAgIHNsb3AgPSBudW1ieXRl
cyAmIDM7Ci0gICAgZXhpc3RzID0gcmVwLmZsYWdzOwotICAgIGlmIChleGlzdHMpIHsKLSAgICAg
ICAgKnB0ciA9ICh1bnNpZ25lZCBjaGFyICopIFhtYWxsb2MobnVtYnl0ZXMpOwotICAgIH0KLSAg
ICBpZiAoIWV4aXN0cyB8fCAhKnB0cikgewotICAgICAgICBfWEVhdERhdGEoZHB5LCBsZW5ndGgp
OwotICAgICAgICBVbmxvY2tEaXNwbGF5IChkcHkpOwotICAgICAgICBTeW5jSGFuZGxlICgpOwot
ICAgICAgICByZXR1cm4gRmFsc2U7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgX1hSZWFkKGRweSwg
KGNoYXIgKikgKnB0ciwgbnVtYnl0ZXMpOwotICAgICAgICBpZiAoc2xvcCkgX1hFYXREYXRhKGRw
eSwgNC1zbG9wKTsKLSAgICB9Ci0gICAgaWYgKGxlbikgKmxlbiA9IG51bWJ5dGVzOwotICAgIFVu
bG9ja0Rpc3BsYXkgKGRweSk7Ci0gICAgU3luY0hhbmRsZSAoKTsKLSAgICByZXR1cm4gZXhpc3Rz
OwotfQotCi1Cb29sIFhOVkNUUkxRdWVyeUJpbmFyeURhdGEgKAotICAgIERpc3BsYXkgKmRweSwK
LSAgICBpbnQgc2NyZWVuLAotICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCi0gICAgdW5z
aWduZWQgaW50IGF0dHJpYnV0ZSwKLSAgICB1bnNpZ25lZCBjaGFyICoqcHRyLAotICAgIGludCAq
bGVuCi0pewotICAgIHJldHVybiBYTlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRhKGRweSwgTlZf
Q1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzY3JlZW4sIGRpc3BsYXlfbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUsIHB0ciwgbGVuKTsKLX0KLQotQm9vbCBYTlZDVFJM
U3RyaW5nT3BlcmF0aW9uICgKLSAgICBEaXNwbGF5ICpkcHksCi0gICAgaW50IHRhcmdldF90eXBl
LAotICAgIGludCB0YXJnZXRfaWQsCi0gICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKLSAg
ICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgIGNoYXIgKnBJbiwKLSAgICBjaGFyICoqcHBP
dXQKLSkgewotICAgIFhFeHREaXNwbGF5SW5mbyAqaW5mbyA9IGZpbmRfZGlzcGxheShkcHkpOwot
ICAgIHhudkN0cmxTdHJpbmdPcGVyYXRpb25SZXEgKnJlcTsKLSAgICB4bnZDdHJsU3RyaW5nT3Bl
cmF0aW9uUmVwbHkgcmVwOwotICAgIEJvb2wgcmV0OwotICAgIGludCBpblNpemUsIG91dFNpemUs
IGxlbmd0aCwgc2xvcDsKLQotICAgIGlmICghWGV4dEhhc0V4dGVuc2lvbihpbmZvKSkKLSAgICAg
ICAgcmV0dXJuIEZhbHNlOwotICAgIAotICAgIGlmICghcHBPdXQpCi0gICAgICAgIHJldHVybiBG
YWxzZTsKLQotICAgICpwcE91dCA9IE5VTEw7Ci0gICAgCi0gICAgWE5WQ1RSTENoZWNrRXh0ZW5z
aW9uKGRweSwgaW5mbywgRmFsc2UpOwotICAgIFhOVkNUUkxDaGVja1RhcmdldERhdGEoZHB5LCBp
bmZvLCAmdGFyZ2V0X3R5cGUsICZ0YXJnZXRfaWQpOwotICAgIAotICAgIGlmIChwSW4pIHsKLSAg
ICAgICAgaW5TaXplID0gc3RybGVuKHBJbikgKyAxOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlu
U2l6ZSA9IDA7Ci0gICAgfQotICAgIAotICAgIExvY2tEaXNwbGF5KGRweSk7Ci0gICAgR2V0UmVx
KG52Q3RybFN0cmluZ09wZXJhdGlvbiwgcmVxKTsKLSAgICAKLSAgICByZXEtPnJlcVR5cGUgPSBp
bmZvLT5jb2Rlcy0+bWFqb3Jfb3Bjb2RlOwotICAgIHJlcS0+bnZSZXFUeXBlID0gWF9udkN0cmxT
dHJpbmdPcGVyYXRpb247Ci0gICAgcmVxLT50YXJnZXRfdHlwZSA9IHRhcmdldF90eXBlOwotICAg
IHJlcS0+dGFyZ2V0X2lkID0gdGFyZ2V0X2lkOwotICAgIHJlcS0+ZGlzcGxheV9tYXNrID0gZGlz
cGxheV9tYXNrOwotICAgIHJlcS0+YXR0cmlidXRlID0gYXR0cmlidXRlOwotCi0gICAgcmVxLT5s
ZW5ndGggKz0gKChpblNpemUgKyAzKSAmIH4zKSA+PiAyOwotICAgIHJlcS0+bnVtX2J5dGVzID0g
aW5TaXplOwotICAgIAotICAgIGlmIChwSW4pIHsKLSAgICAgICAgRGF0YShkcHksIHBJbiwgaW5T
aXplKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKCFfWFJlcGx5IChkcHksICh4UmVwbHkgKikgJnJl
cCwgMCwgRmFsc2UpKSB7Ci0gICAgICAgIFVubG9ja0Rpc3BsYXkoZHB5KTsKLSAgICAgICAgU3lu
Y0hhbmRsZSgpOwotICAgICAgICByZXR1cm4gRmFsc2U7Ci0gICAgfQotICAgIAotICAgIGxlbmd0
aCA9IHJlcC5sZW5ndGg7Ci0gICAgb3V0U2l6ZSA9IHJlcC5udW1fYnl0ZXM7Ci0gICAgc2xvcCA9
IG91dFNpemUgJiAzOwotCi0gICAgaWYgKG91dFNpemUpICpwcE91dCA9IChjaGFyICopIFhtYWxs
b2Mob3V0U2l6ZSk7Ci0gICAgCi0gICAgaWYgKCEqcHBPdXQpIHsKLSAgICAgICAgX1hFYXREYXRh
KGRweSwgbGVuZ3RoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBfWFJlYWQoZHB5LCAoY2hhciAq
KSAqcHBPdXQsIG91dFNpemUpOwotICAgICAgICBpZiAoc2xvcCkgX1hFYXREYXRhKGRweSwgNC1z
bG9wKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0ID0gcmVwLnJldDsKLSAgICAKLSAgICBVbmxvY2tE
aXNwbGF5KGRweSk7Ci0gICAgU3luY0hhbmRsZSgpOwotICAgIAotICAgIHJldHVybiByZXQ7Ci19
Ci0KLQotc3RhdGljIEJvb2wgd2lyZV90b19ldmVudCAoRGlzcGxheSAqZHB5LCBYRXZlbnQgKmhv
c3QsIHhFdmVudCAqd2lyZSkKLXsKLSAgICBYRXh0RGlzcGxheUluZm8gKmluZm8gPSBmaW5kX2Rp
c3BsYXkgKGRweSk7Ci0gICAgWE5WQ3RybEV2ZW50ICpyZTsKLSAgICB4bnZjdHJsRXZlbnQgKmV2
ZW50OwotICAgIFhOVkN0cmxFdmVudFRhcmdldCAqcmVUYXJnZXQ7Ci0gICAgeG52Y3RybEV2ZW50
VGFyZ2V0ICpldmVudFRhcmdldDsKLSAgICBYTlZDdHJsRXZlbnRUYXJnZXRBdmFpbGFiaWxpdHkg
KnJlVGFyZ2V0QXZhaWxhYmlsaXR5OwotICAgIFhOVkN0cmxTdHJpbmdFdmVudFRhcmdldCAqcmVU
YXJnZXRTdHJpbmc7Ci0gICAgWE5WQ3RybEJpbmFyeUV2ZW50VGFyZ2V0ICpyZVRhcmdldEJpbmFy
eTsKLQotICAgIFhOVkNUUkxDaGVja0V4dGVuc2lvbiAoZHB5LCBpbmZvLCBGYWxzZSk7Ci0gICAg
Ci0gICAgc3dpdGNoICgod2lyZS0+dS51LnR5cGUgJiAweDdGKSAtIGluZm8tPmNvZGVzLT5maXJz
dF9ldmVudCkgewotICAgIGNhc2UgQVRUUklCVVRFX0NIQU5HRURfRVZFTlQ6Ci0gICAgICAgIHJl
ID0gKFhOVkN0cmxFdmVudCAqKSBob3N0OwotICAgICAgICBldmVudCA9ICh4bnZjdHJsRXZlbnQg
Kikgd2lyZTsKLSAgICAgICAgcmUtPmF0dHJpYnV0ZV9jaGFuZ2VkLnR5cGUgPSBldmVudC0+dS51
LnR5cGUgJiAweDdGOwotICAgICAgICByZS0+YXR0cmlidXRlX2NoYW5nZWQuc2VyaWFsID0KLSAg
ICAgICAgICAgIF9YU2V0TGFzdFJlcXVlc3RSZWFkKGRweSwgKHhHZW5lcmljUmVwbHkqKSBldmVu
dCk7Ci0gICAgICAgIHJlLT5hdHRyaWJ1dGVfY2hhbmdlZC5zZW5kX2V2ZW50ID0gKChldmVudC0+
dS51LnR5cGUgJiAweDgwKSAhPSAwKTsKLSAgICAgICAgcmUtPmF0dHJpYnV0ZV9jaGFuZ2VkLmRp
c3BsYXkgPSBkcHk7Ci0gICAgICAgIHJlLT5hdHRyaWJ1dGVfY2hhbmdlZC50aW1lID0gZXZlbnQt
PnUuYXR0cmlidXRlX2NoYW5nZWQudGltZTsKLSAgICAgICAgcmUtPmF0dHJpYnV0ZV9jaGFuZ2Vk
LnNjcmVlbiA9IGV2ZW50LT51LmF0dHJpYnV0ZV9jaGFuZ2VkLnNjcmVlbjsKLSAgICAgICAgcmUt
PmF0dHJpYnV0ZV9jaGFuZ2VkLmRpc3BsYXlfbWFzayA9Ci0gICAgICAgICAgICBldmVudC0+dS5h
dHRyaWJ1dGVfY2hhbmdlZC5kaXNwbGF5X21hc2s7Ci0gICAgICAgIHJlLT5hdHRyaWJ1dGVfY2hh
bmdlZC5hdHRyaWJ1dGUgPSBldmVudC0+dS5hdHRyaWJ1dGVfY2hhbmdlZC5hdHRyaWJ1dGU7Ci0g
ICAgICAgIHJlLT5hdHRyaWJ1dGVfY2hhbmdlZC52YWx1ZSA9IGV2ZW50LT51LmF0dHJpYnV0ZV9j
aGFuZ2VkLnZhbHVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBUkdFVF9BVFRSSUJVVEVf
Q0hBTkdFRF9FVkVOVDoKLSAgICAgICAgcmVUYXJnZXQgPSAoWE5WQ3RybEV2ZW50VGFyZ2V0ICop
IGhvc3Q7Ci0gICAgICAgIGV2ZW50VGFyZ2V0ID0gKHhudmN0cmxFdmVudFRhcmdldCAqKSB3aXJl
OwotICAgICAgICByZVRhcmdldC0+YXR0cmlidXRlX2NoYW5nZWQudHlwZSA9IGV2ZW50VGFyZ2V0
LT51LnUudHlwZSAmIDB4N0Y7Ci0gICAgICAgIHJlVGFyZ2V0LT5hdHRyaWJ1dGVfY2hhbmdlZC5z
ZXJpYWwgPQotICAgICAgICAgICAgX1hTZXRMYXN0UmVxdWVzdFJlYWQoZHB5LCAoeEdlbmVyaWNS
ZXBseSopIGV2ZW50VGFyZ2V0KTsKLSAgICAgICAgcmVUYXJnZXQtPmF0dHJpYnV0ZV9jaGFuZ2Vk
LnNlbmRfZXZlbnQgPQotICAgICAgICAgICAgKChldmVudFRhcmdldC0+dS51LnR5cGUgJiAweDgw
KSAhPSAwKTsKLSAgICAgICAgcmVUYXJnZXQtPmF0dHJpYnV0ZV9jaGFuZ2VkLmRpc3BsYXkgPSBk
cHk7Ci0gICAgICAgIHJlVGFyZ2V0LT5hdHRyaWJ1dGVfY2hhbmdlZC50aW1lID0KLSAgICAgICAg
ICAgIGV2ZW50VGFyZ2V0LT51LmF0dHJpYnV0ZV9jaGFuZ2VkLnRpbWU7Ci0gICAgICAgIHJlVGFy
Z2V0LT5hdHRyaWJ1dGVfY2hhbmdlZC50YXJnZXRfdHlwZSA9Ci0gICAgICAgICAgICBldmVudFRh
cmdldC0+dS5hdHRyaWJ1dGVfY2hhbmdlZC50YXJnZXRfdHlwZTsKLSAgICAgICAgcmVUYXJnZXQt
PmF0dHJpYnV0ZV9jaGFuZ2VkLnRhcmdldF9pZCA9Ci0gICAgICAgICAgICBldmVudFRhcmdldC0+
dS5hdHRyaWJ1dGVfY2hhbmdlZC50YXJnZXRfaWQ7Ci0gICAgICAgIHJlVGFyZ2V0LT5hdHRyaWJ1
dGVfY2hhbmdlZC5kaXNwbGF5X21hc2sgPQotICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUuYXR0
cmlidXRlX2NoYW5nZWQuZGlzcGxheV9tYXNrOwotICAgICAgICByZVRhcmdldC0+YXR0cmlidXRl
X2NoYW5nZWQuYXR0cmlidXRlID0KLSAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LmF0dHJpYnV0
ZV9jaGFuZ2VkLmF0dHJpYnV0ZTsKLSAgICAgICAgcmVUYXJnZXQtPmF0dHJpYnV0ZV9jaGFuZ2Vk
LnZhbHVlID0KLSAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LmF0dHJpYnV0ZV9jaGFuZ2VkLnZh
bHVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBUkdFVF9BVFRSSUJVVEVfQVZBSUxBQklM
SVRZX0NIQU5HRURfRVZFTlQ6Ci0gICAgICAgIHJlVGFyZ2V0QXZhaWxhYmlsaXR5ID0gKFhOVkN0
cmxFdmVudFRhcmdldEF2YWlsYWJpbGl0eSAqKSBob3N0OwotICAgICAgICBldmVudFRhcmdldCA9
ICh4bnZjdHJsRXZlbnRUYXJnZXQgKikgd2lyZTsKLSAgICAgICAgcmVUYXJnZXRBdmFpbGFiaWxp
dHktPmF0dHJpYnV0ZV9jaGFuZ2VkLnR5cGUgPQotICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUu
dS50eXBlICYgMHg3RjsKLSAgICAgICAgcmVUYXJnZXRBdmFpbGFiaWxpdHktPmF0dHJpYnV0ZV9j
aGFuZ2VkLnNlcmlhbCA9Ci0gICAgICAgICAgICBfWFNldExhc3RSZXF1ZXN0UmVhZChkcHksICh4
R2VuZXJpY1JlcGx5KikgZXZlbnRUYXJnZXQpOwotICAgICAgICByZVRhcmdldEF2YWlsYWJpbGl0
eS0+YXR0cmlidXRlX2NoYW5nZWQuc2VuZF9ldmVudCA9Ci0gICAgICAgICAgICAoKGV2ZW50VGFy
Z2V0LT51LnUudHlwZSAmIDB4ODApICE9IDApOwotICAgICAgICByZVRhcmdldEF2YWlsYWJpbGl0
eS0+YXR0cmlidXRlX2NoYW5nZWQuZGlzcGxheSA9IGRweTsKLSAgICAgICAgcmVUYXJnZXRBdmFp
bGFiaWxpdHktPmF0dHJpYnV0ZV9jaGFuZ2VkLnRpbWUgPQotICAgICAgICAgICAgZXZlbnRUYXJn
ZXQtPnUuYXZhaWxhYmlsaXR5X2NoYW5nZWQudGltZTsKLSAgICAgICAgcmVUYXJnZXRBdmFpbGFi
aWxpdHktPmF0dHJpYnV0ZV9jaGFuZ2VkLnRhcmdldF90eXBlID0KLSAgICAgICAgICAgIGV2ZW50
VGFyZ2V0LT51LmF2YWlsYWJpbGl0eV9jaGFuZ2VkLnRhcmdldF90eXBlOwotICAgICAgICByZVRh
cmdldEF2YWlsYWJpbGl0eS0+YXR0cmlidXRlX2NoYW5nZWQudGFyZ2V0X2lkID0KLSAgICAgICAg
ICAgIGV2ZW50VGFyZ2V0LT51LmF2YWlsYWJpbGl0eV9jaGFuZ2VkLnRhcmdldF9pZDsKLSAgICAg
ICAgcmVUYXJnZXRBdmFpbGFiaWxpdHktPmF0dHJpYnV0ZV9jaGFuZ2VkLmRpc3BsYXlfbWFzayA9
Ci0gICAgICAgICAgICBldmVudFRhcmdldC0+dS5hdmFpbGFiaWxpdHlfY2hhbmdlZC5kaXNwbGF5
X21hc2s7Ci0gICAgICAgIHJlVGFyZ2V0QXZhaWxhYmlsaXR5LT5hdHRyaWJ1dGVfY2hhbmdlZC5h
dHRyaWJ1dGUgPQotICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUuYXZhaWxhYmlsaXR5X2NoYW5n
ZWQuYXR0cmlidXRlOwotICAgICAgICByZVRhcmdldEF2YWlsYWJpbGl0eS0+YXR0cmlidXRlX2No
YW5nZWQuYXZhaWxhYmlsaXR5ID0KLSAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LmF2YWlsYWJp
bGl0eV9jaGFuZ2VkLmF2YWlsYWJpbGl0eTsKLSAgICAgICAgcmVUYXJnZXRBdmFpbGFiaWxpdHkt
PmF0dHJpYnV0ZV9jaGFuZ2VkLnZhbHVlID0KLSAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LmF2
YWlsYWJpbGl0eV9jaGFuZ2VkLnZhbHVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFRBUkdF
VF9TVFJJTkdfQVRUUklCVVRFX0NIQU5HRURfRVZFTlQ6Ci0gICAgICAgIHJlVGFyZ2V0U3RyaW5n
ID0gKFhOVkN0cmxTdHJpbmdFdmVudFRhcmdldCAqKSBob3N0OwotICAgICAgICBldmVudFRhcmdl
dCA9ICh4bnZjdHJsRXZlbnRUYXJnZXQgKikgd2lyZTsKLSAgICAgICAgcmVUYXJnZXRTdHJpbmct
PmF0dHJpYnV0ZV9jaGFuZ2VkLnR5cGUgPSBldmVudFRhcmdldC0+dS51LnR5cGUgJiAweDdGOwot
ICAgICAgICByZVRhcmdldFN0cmluZy0+YXR0cmlidXRlX2NoYW5nZWQuc2VyaWFsID0KLSAgICAg
ICAgICAgIF9YU2V0TGFzdFJlcXVlc3RSZWFkKGRweSwgKHhHZW5lcmljUmVwbHkqKSBldmVudFRh
cmdldCk7Ci0gICAgICAgIHJlVGFyZ2V0U3RyaW5nLT5hdHRyaWJ1dGVfY2hhbmdlZC5zZW5kX2V2
ZW50ID0KLSAgICAgICAgICAgICgoZXZlbnRUYXJnZXQtPnUudS50eXBlICYgMHg4MCkgIT0gMCk7
Ci0gICAgICAgIHJlVGFyZ2V0U3RyaW5nLT5hdHRyaWJ1dGVfY2hhbmdlZC5kaXNwbGF5ID0gZHB5
OwotICAgICAgICByZVRhcmdldFN0cmluZy0+YXR0cmlidXRlX2NoYW5nZWQudGltZSA9Ci0gICAg
ICAgICAgICBldmVudFRhcmdldC0+dS5hdHRyaWJ1dGVfY2hhbmdlZC50aW1lOwotICAgICAgICBy
ZVRhcmdldFN0cmluZy0+YXR0cmlidXRlX2NoYW5nZWQudGFyZ2V0X3R5cGUgPQotICAgICAgICAg
ICAgZXZlbnRUYXJnZXQtPnUuYXR0cmlidXRlX2NoYW5nZWQudGFyZ2V0X3R5cGU7Ci0gICAgICAg
IHJlVGFyZ2V0U3RyaW5nLT5hdHRyaWJ1dGVfY2hhbmdlZC50YXJnZXRfaWQgPQotICAgICAgICAg
ICAgZXZlbnRUYXJnZXQtPnUuYXR0cmlidXRlX2NoYW5nZWQudGFyZ2V0X2lkOwotICAgICAgICBy
ZVRhcmdldFN0cmluZy0+YXR0cmlidXRlX2NoYW5nZWQuZGlzcGxheV9tYXNrID0KLSAgICAgICAg
ICAgIGV2ZW50VGFyZ2V0LT51LmF0dHJpYnV0ZV9jaGFuZ2VkLmRpc3BsYXlfbWFzazsKLSAgICAg
ICAgcmVUYXJnZXRTdHJpbmctPmF0dHJpYnV0ZV9jaGFuZ2VkLmF0dHJpYnV0ZSA9Ci0gICAgICAg
ICAgICBldmVudFRhcmdldC0+dS5hdHRyaWJ1dGVfY2hhbmdlZC5hdHRyaWJ1dGU7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgVEFSR0VUX0JJTkFSWV9BVFRSSUJVVEVfQ0hBTkdFRF9FVkVOVDoK
LSAgICAgICAgcmVUYXJnZXRCaW5hcnkgPSAoWE5WQ3RybEJpbmFyeUV2ZW50VGFyZ2V0ICopIGhv
c3Q7Ci0gICAgICAgIGV2ZW50VGFyZ2V0ID0gKHhudmN0cmxFdmVudFRhcmdldCAqKSB3aXJlOwot
ICAgICAgICByZVRhcmdldEJpbmFyeS0+YXR0cmlidXRlX2NoYW5nZWQudHlwZSA9IGV2ZW50VGFy
Z2V0LT51LnUudHlwZSAmIDB4N0Y7Ci0gICAgICAgIHJlVGFyZ2V0QmluYXJ5LT5hdHRyaWJ1dGVf
Y2hhbmdlZC5zZXJpYWwgPQotICAgICAgICAgICAgX1hTZXRMYXN0UmVxdWVzdFJlYWQoZHB5LCAo
eEdlbmVyaWNSZXBseSopIGV2ZW50VGFyZ2V0KTsKLSAgICAgICAgcmVUYXJnZXRCaW5hcnktPmF0
dHJpYnV0ZV9jaGFuZ2VkLnNlbmRfZXZlbnQgPQotICAgICAgICAgICAgKChldmVudFRhcmdldC0+
dS51LnR5cGUgJiAweDgwKSAhPSAwKTsKLSAgICAgICAgcmVUYXJnZXRCaW5hcnktPmF0dHJpYnV0
ZV9jaGFuZ2VkLmRpc3BsYXkgPSBkcHk7Ci0gICAgICAgIHJlVGFyZ2V0QmluYXJ5LT5hdHRyaWJ1
dGVfY2hhbmdlZC50aW1lID0KLSAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LmF0dHJpYnV0ZV9j
aGFuZ2VkLnRpbWU7Ci0gICAgICAgIHJlVGFyZ2V0QmluYXJ5LT5hdHRyaWJ1dGVfY2hhbmdlZC50
YXJnZXRfdHlwZSA9Ci0gICAgICAgICAgICBldmVudFRhcmdldC0+dS5hdHRyaWJ1dGVfY2hhbmdl
ZC50YXJnZXRfdHlwZTsKLSAgICAgICAgcmVUYXJnZXRCaW5hcnktPmF0dHJpYnV0ZV9jaGFuZ2Vk
LnRhcmdldF9pZCA9Ci0gICAgICAgICAgICBldmVudFRhcmdldC0+dS5hdHRyaWJ1dGVfY2hhbmdl
ZC50YXJnZXRfaWQ7Ci0gICAgICAgIHJlVGFyZ2V0QmluYXJ5LT5hdHRyaWJ1dGVfY2hhbmdlZC5k
aXNwbGF5X21hc2sgPQotICAgICAgICAgICAgZXZlbnRUYXJnZXQtPnUuYXR0cmlidXRlX2NoYW5n
ZWQuZGlzcGxheV9tYXNrOwotICAgICAgICByZVRhcmdldEJpbmFyeS0+YXR0cmlidXRlX2NoYW5n
ZWQuYXR0cmlidXRlID0KLSAgICAgICAgICAgIGV2ZW50VGFyZ2V0LT51LmF0dHJpYnV0ZV9jaGFu
Z2VkLmF0dHJpYnV0ZTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBy
ZXR1cm4gRmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIFRydWU7Ci19Ci0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsL05WQ3Ry
bC5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwv
TlZDdHJsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiZDdhYjdhMzM4Li4wMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbGli
WE5WQ3RybC9OVkN0cmwuaAorKysgL2Rldi9udWxsCkBAIC0xLDQzNjUgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoYykgMjAxMCBOVklESUEsIENvcnBvcmF0aW9uCi0gKgotICogUGVybWlzc2lv
biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu
aW5nIGEgY29weQotICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0
aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKLSAqIGluIHRoZSBTb2Z0d2FyZSB3
aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdo
dHMKLSAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwg
c3VibGljZW5zZSwgYW5kL29yIHNlbGwKLSAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0
byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwotICogZnVybmlzaGVkIHRv
IGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKLSAqCi0gKiBUaGUg
YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVk
aW5nIHRoZSBuZXh0Ci0gKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3Bp
ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCi0gKiBTb2Z0d2FyZS4KLSAqCi0gKiBU
SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg
S0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU
TyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCi0gKiBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFCi0gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENM
QUlNLCBEQU1BR0VTIE9SIE9USEVSCi0gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O
IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAotICogT1VUIE9G
IE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBE
RUFMSU5HUyBJTiBUSEUKLSAqIFNPRlRXQVJFLgotICovCi0KLSNpZm5kZWYgX19OVkNUUkxfSAot
I2RlZmluZSBfX05WQ1RSTF9ICi0KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLQotLyoqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqLwotCi0vKgotICogQXR0cmlidXRlIFRhcmdldHMKLSAqCi0gKiBUYXJnZXRzIGRlZmlu
ZSBhdHRyaWJ1dGUgZ3JvdXBzLiAgRm9yIGV4YW1wbGUsIHNvbWUgYXR0cmlidXRlcyBhcmUgb25s
eQotICogdmFsaWQgdG8gc2V0IG9uIGEgR1BVLCBvdGhlcnMgYXJlIG9ubHkgdmFsaWQgd2hlbiB0
YWxraW5nIGFib3V0IGFuCi0gKiBYIFNjcmVlbi4gIFRhcmdldCB0eXBlcyBhcmUgdGhlbiB3aGF0
IGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHRhcmdldAotICogZ3JvdXAgb2YgdGhlIGF0dHJpYnV0
ZSB5b3Ugd2lzaCB0byBzZXQvcXVlcnkuCi0gKgotICogSGVyZSBhcmUgdGhlIHN1cHBvcnRlZCB0
YXJnZXQgdHlwZXM6Ci0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVO
IDAKLSNkZWZpbmUgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgMQotI2RlZmluZSBOVl9DVFJMX1RB
UkdFVF9UWVBFX0ZSQU1FTE9DSyAyCi0jZGVmaW5lIE5WX0NUUkxfVEFSR0VUX1RZUEVfVkNTQyAz
IC8qIFZpc3VhbCBDb21wdXRpbmcgU3lzdGVtICovCi0jZGVmaW5lIE5WX0NUUkxfVEFSR0VUX1RZ
UEVfR1ZJIDQKLSNkZWZpbmUgTlZfQ1RSTF9UQVJHRVRfVFlQRV9DT09MRVIgNSAvKiBlLmcuLCBm
YW4gKi8KLSNkZWZpbmUgTlZfQ1RSTF9UQVJHRVRfVFlQRV9USEVSTUFMX1NFTlNPUiA2Ci0jZGVm
aW5lIE5WX0NUUkxfVEFSR0VUX1RZUEVfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUiA3Ci0jZGVm
aW5lIE5WX0NUUkxfVEFSR0VUX1RZUEVfRElTUExBWSA4Ci0KLS8qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K
LQotLyoKLSAqIEF0dHJpYnV0ZXMKLSAqCi0gKiBTb21lIGF0dHJpYnV0ZXMgbWF5IG9ubHkgYmUg
cmVhZDsgc29tZSBtYXkgcmVxdWlyZSBhIGRpc3BsYXlfbWFzawotICogYXJndW1lbnQgYW5kIG90
aGVycyBtYXkgYmUgdmFsaWQgb25seSBmb3Igc3BlY2lmaWMgdGFyZ2V0IHR5cGVzLgotICogVGhp
cyBpbmZvcm1hdGlvbiBpcyBlbmNvZGVkIGluIHRoZSAicGVybWlzc2lvbiIgY29tbWVudCBhZnRl
ciBlYWNoCi0gKiBhdHRyaWJ1dGUgI2RlZmluZSwgYW5kIGNhbiBiZSBxdWVyaWVkIGF0IHJ1biB0
aW1lIHdpdGgKLSAqIFhOVkNUUkxRdWVyeVZhbGlkQXR0cmlidXRlVmFsdWVzKCkgYW5kL29yCi0g
KiBYTlZDVFJMUXVlcnlWYWxpZFRhcmdldEF0dHJpYnV0ZVZhbHVlcygpCi0gKgotICogS2V5IHRv
IEludGVnZXIgQXR0cmlidXRlICJQZXJtaXNzaW9ucyI6Ci0gKgotICogUjogVGhlIGF0dHJpYnV0
ZSBpcyByZWFkYWJsZSAoaW4gZ2VuZXJhbCwgYWxsIGF0dHJpYnV0ZXMgd2lsbCBiZQotICogICAg
cmVhZGFibGUpCi0gKgotICogVzogVGhlIGF0dHJpYnV0ZSBpcyB3cml0YWJsZSAoYXR0cmlidXRl
cyBtYXkgbm90IGJlIHdyaXRhYmxlIGZvcgotICogICAgdmFyaW91cyByZWFzb25zOiB0aGV5IHJl
cHJlc2VudCBzdGF0aWMgc3lzdGVtIGluZm9ybWF0aW9uLCB0aGV5Ci0gKiAgICBjYW4gb25seSBi
ZSBjaGFuZ2VkIGJ5IGNoYW5naW5nIGFuIFhGODZDb25maWcgb3B0aW9uLCBldGMpLgotICoKLSAq
IEQ6IFRoZSBhdHRyaWJ1dGUgcmVxdWlyZXMgdGhlIGRpc3BsYXkgbWFzayBhcmd1bWVudC4gIFRo
ZQotICogICAgYXR0cmlidXRlcyBOVl9DVFJMX0NPTk5FQ1RFRF9ESVNQTEFZUyBhbmQgTlZfQ1RS
TF9FTkFCTEVEX0RJU1BMQVlTCi0gKiAgICB3aWxsIGJlIGEgYml0bWFzayBvZiB3aGF0IGRpc3Bs
YXkgZGV2aWNlcyBhcmUgY29ubmVjdGVkIGFuZCB3aGF0Ci0gKiAgICBkaXNwbGF5IGRldmljZXMg
YXJlIGVuYWJsZWQgZm9yIHVzZSBpbiBYLCByZXNwZWN0aXZlbHkuICBFYWNoIGJpdAotICogICAg
aW4gdGhlIGJpdG1hc2sgcmVwcmVzZW50cyBhIGRpc3BsYXkgZGV2aWNlOyBpdCBpcyB0aGVzZSBi
aXRzIHdoaWNoCi0gKiAgICBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZGlzcGxheV9tYXNrIHdoZW4g
ZGVhbGluZyB3aXRoIGF0dHJpYnV0ZXMKLSAqICAgIGRlc2lnbmF0ZWQgd2l0aCAiRCIgYmVsb3cu
ICBGb3IgYXR0cmlidXRlcyB0aGF0IGRvIG5vdCByZXF1aXJlIHRoZQotICogICAgZGlzcGxheSBt
YXNrLCB0aGUgYXJndW1lbnQgaXMgaWdub3JlZC4KLSAqCi0gKiAgICBBbHRlcm5hdGl2ZWx5LCBO
Vi1DT05UUk9MIHZlcnNpb25zIDEuMjcgYW5kIGdyZWF0ZXIgYWxsb3cgdGhlc2UKLSAqICAgIGF0
dHJpYnV0ZXMgdG8gYmUgYWNjZXNzZWQgdmlhIGRpc3BsYXkgdGFyZ2V0IHR5cGVzLCBpbiB3aGlj
aCBjYXNlCi0gKiAgICB0aGUgZGlzcGxheV9tYXNrIGlzIGlnbm9yZWQuCi0gKgotICogRzogVGhl
IGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB1c2luZyBhbiBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQ
VQotICogICAgdGFyZ2V0IHR5cGUgdmlhIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpLgot
ICoKLSAqIEY6IFRoZSBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdXNpbmcgYW4gTlZfQ1RSTF9U
QVJHRVRfVFlQRV9GUkFNRUxPQ0sKLSAqICAgIHRhcmdldCB0eXBlIHZpYSBYTlZDVFJMUXVlcnlU
YXJnZXRBdHRyaWJ1dGUoKS4KLSAqCi0gKiBYOiBXaGVuIFhpbmVyYW1hIGlzIGVuYWJsZWQsIHRo
aXMgYXR0cmlidXRlIGlzIGtlcHQgY29uc2lzdGVudCBhY3Jvc3MKLSAqICAgIGFsbCBQaHlzaWNh
bCBYIFNjcmVlbnM7ICBhc3NpZ25tZW50IG9mIHRoaXMgYXR0cmlidXRlIHdpbGwgYmUKLSAqICAg
IGJyb2FkY2FzdCBieSB0aGUgTlZJRElBIFggRHJpdmVyIHRvIGFsbCBYIFNjcmVlbnMuCi0gKgot
ICogVjogVGhlIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB1c2luZyBhbiBOVl9DVFJMX1RBUkdF
VF9UWVBFX1ZDU0MKLSAqICAgIHRhcmdldCB0eXBlIHZpYSBYTlZDVFJMUXVlcnlUYXJnZXRBdHRy
aWJ1dGUoKS4KLSAqCi0gKiBJOiBUaGUgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHVzaW5nIGFu
IE5WX0NUUkxfVEFSR0VUX1RZUEVfR1ZJIHRhcmdldCB0eXBlCi0gKiAgICB2aWEgWE5WQ1RSTFF1
ZXJ5VGFyZ2V0QXR0cmlidXRlKCkuCi0gKgotICogUTogVGhlIGF0dHJpYnV0ZSBpcyBhIDY0LWJp
dCBpbnRlZ2VyIGF0dHJpYnV0ZTsgIHVzZSB0aGUgNjQtYml0IHZlcnNpb25zCi0gKiAgICBvZiB0
aGUgYXBwcm9wcmlhdGUgcXVlcnkgaW50ZXJmYWNlcy4KLSAqCi0gKiBDOiBUaGUgYXR0cmlidXRl
IG1heSBiZSBxdWVyaWVkIHVzaW5nIGFuIE5WX0NUUkxfVEFSR0VUX1RZUEVfQ09PTEVSIHRhcmdl
dAotICogICAgdHlwZSB2aWEgWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkuCi0gKgotICog
UzogVGhlIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB1c2luZyBhbiBOVl9DVFJMX1RBUkdFVF9U
WVBFX1RIRVJNQUxfU0VOU09SCi0gKiAgICB0YXJnZXQgdHlwZSB2aWEgWE5WQ1RSTFF1ZXJ5VGFy
Z2V0QXR0cmlidXRlKCkuCi0gKgotICogVDogVGhlIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB1
c2luZyBhbgotICogICAgTlZfQ1RSTF9UQVJHRVRfVFlQRV8zRF9WSVNJT05fUFJPX1RSQU5TQ0VJ
VkVSIHRhcmdldCB0eXBlCi0gKiAgICB2aWEgWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCku
Ci0gKgotICogTk9URTogVW5sZXNzIG1lbnRpb25lZCBvdGhlcndpc2UsIGFsbCBhdHRyaWJ1dGVz
IG1heSBiZSBxdWVyaWVkIHVzaW5nCi0gKiAgICAgICBhbiBOVl9DVFJMX1RBUkdFVF9UWVBFX1hf
U0NSRUVOIHRhcmdldCB0eXBlIHZpYQotICogICAgICAgWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmli
dXRlKCkuCi0gKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKgotICogSW50ZWdlciBhdHRy
aWJ1dGVzOgotICoKLSAqIEludGVnZXIgYXR0cmlidXRlcyBjYW4gYmUgcXVlcmllZCB0aHJvdWdo
IHRoZSBYTlZDVFJMUXVlcnlBdHRyaWJ1dGUoKSBhbmQKLSAqIFhOVkNUUkxRdWVyeVRhcmdldEF0
dHJpYnV0ZSgpIGZ1bmN0aW9uIGNhbGxzLgotICoKLSAqIEludGVnZXIgYXR0cmlidXRlcyBjYW4g
YmUgc2V0IHRocm91Z2ggdGhlIFhOVkNUUkxTZXRBdHRyaWJ1dGUoKSBhbmQKLSAqIFhOVkNUUkxT
ZXRUYXJnZXRBdHRyaWJ1dGUoKSBmdW5jdGlvbiBjYWxscy4KLSAqCi0gKiBVbmxlc3Mgb3RoZXJ3
aXNlIG5vdGVkLCBhbGwgaW50ZWdlciBhdHRyaWJ1dGVzIGNhbiBiZSBxdWVyaWVkL3NldAotICog
dXNpbmcgYW4gTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQuICBBdHRyaWJ1dGVz
IHRoYXQgY2Fubm90Ci0gKiB0YWtlIGFuIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gYWxz
byBjYW5ub3QgYmUgcXVlcmllZC9zZXQgdGhyb3VnaAotICogWE5WQ1RSTFF1ZXJ5QXR0cmlidXRl
KCkvWE5WQ1RSTFNldEF0dHJpYnV0ZSgpIChTaW5jZSB0aGVzZSBhc3N1bWUKLSAqIGFuIFggU2Ny
ZWVuIHRhcmdldCkuCi0gKi8KLQotLyoKLSAqIE5WX0NUUkxfRkxBVFBBTkVMX1NDQUxJTkcgLSBu
b3Qgc3VwcG9ydGVkCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9TQ0FMSU5HIDIg
LyogUldERyAqLwotI2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9TQ0FMSU5HX0RFRkFVTFQgMAot
I2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9TQ0FMSU5HX05BVElWRSAxCi0jZGVmaW5lIE5WX0NU
UkxfRkxBVFBBTkVMX1NDQUxJTkdfU0NBTEVEIDIKLSNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxf
U0NBTElOR19DRU5URVJFRCAzCi0jZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX1NDQUxJTkdfQVNQ
RUNUX1NDQUxFRCA0Ci0KLS8qCi0gKiBOVl9DVFJMX0ZMQVRQQU5FTF9ESVRIRVJJTkcgaXMgZGVw
cmVjYXRlZDsgTlZfQ1RSTF9ESVRIRVJJTkcgc2hvdWxkCi0gKiBiZSB1c2VkIGluc3RlYWQuCi0g
Ki8KLQotI2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9ESVRIRVJJTkcgMyAvKiBSV0RHICovCi0j
ZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX0RJVEhFUklOR19ERUZBVUxUIDAKLSNkZWZpbmUgTlZf
Q1RSTF9GTEFUUEFORUxfRElUSEVSSU5HX0VOQUJMRUQgMQotI2RlZmluZSBOVl9DVFJMX0ZMQVRQ
QU5FTF9ESVRIRVJJTkdfRElTQUJMRUQgMgotCi0vKgotICogTlZfQ1RSTF9ESVRIRVJJTkcgLSB0
aGUgcmVxdWVzdGVkIGRpdGhlcmluZyBjb25maWd1cmF0aW9uOwotICogcG9zc2libGUgdmFsdWVz
IGFyZToKLSAqCi0gKiAwOiBhdXRvICAgICAodGhlIGRyaXZlciB3aWxsIGRlY2lkZSB3aGVuIHRv
IGRpdGhlcikKLSAqIDE6IGVuYWJsZWQgICh0aGUgZHJpdmVyIHdpbGwgYWx3YXlzIGRpdGhlciB3
aGVuIHBvc3NpYmxlKQotICogMjogZGlzYWJsZWQgKHRoZSBkcml2ZXIgd2lsbCBuZXZlciBkaXRo
ZXIpCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0RJVEhFUklORyAzIC8qIFJXREcgKi8KLSNkZWZp
bmUgTlZfQ1RSTF9ESVRIRVJJTkdfQVVUTyAwCi0jZGVmaW5lIE5WX0NUUkxfRElUSEVSSU5HX0VO
QUJMRUQgMQotI2RlZmluZSBOVl9DVFJMX0RJVEhFUklOR19ESVNBQkxFRCAyCi0KLS8qCi0gKiBO
Vl9DVFJMX0RJR0lUQUxfVklCUkFOQ0UgLSBzZXRzIHRoZSBkaWdpdGFsIHZpYnJhbmNlIGxldmVs
IGZvciB0aGUKLSAqIHNwZWNpZmllZCBkaXNwbGF5IGRldmljZS4KLSAqLwotCi0jZGVmaW5lIE5W
X0NUUkxfRElHSVRBTF9WSUJSQU5DRSA0IC8qIFJXREcgKi8KLQotLyoKLSAqIE5WX0NUUkxfQlVT
X1RZUEUgLSByZXR1cm5zIHRoZSBidXMgdHlwZSB0aHJvdWdoIHdoaWNoIHRoZSBzcGVjaWZpZWQg
ZGV2aWNlCi0gKiBpcyBjb25uZWN0ZWQgdG8gdGhlIGNvbXB1dGVyLgotICogV2hlbiB0aGlzIGF0
dHJpYnV0ZSBpcyBxdWVyaWVkIG9uIGFuIFggc2NyZWVuIHRhcmdldCwgdGhlIGJ1cyB0eXBlIG9m
IHRoZQotICogR1BVIGRyaXZpbmcgdGhlIFggc2NyZWVuIGlzIHJldHVybmVkLgotICovCi0KLSNk
ZWZpbmUgTlZfQ1RSTF9CVVNfVFlQRSA1IC8qIFItLUdJICovCi0jZGVmaW5lIE5WX0NUUkxfQlVT
X1RZUEVfQUdQIDAKLSNkZWZpbmUgTlZfQ1RSTF9CVVNfVFlQRV9QQ0kgMQotI2RlZmluZSBOVl9D
VFJMX0JVU19UWVBFX1BDSV9FWFBSRVNTIDIKLSNkZWZpbmUgTlZfQ1RSTF9CVVNfVFlQRV9JTlRF
R1JBVEVEIDMKLQotLyoKLSAqIE5WX0NUUkxfVklERU9fUkFNIC0gcmV0dXJucyB0aGUgdG90YWwg
YW1vdW50IG9mIG1lbW9yeSBhdmFpbGFibGUKLSAqIHRvIHRoZSBzcGVjaWZpZWQgR1BVIChvciB0
aGUgR1BVIGRyaXZpbmcgdGhlIHNwZWNpZmllZCBYCi0gKiBzY3JlZW4pLiAgTm90ZTogaWYgdGhl
IEdQVSBzdXBwb3J0cyBUdXJib0NhY2hlKFRNKSwgdGhlIHZhbHVlCi0gKiByZXBvcnRlZCBtYXkg
ZXhjZWVkIHRoZSBhbW91bnQgb2YgdmlkZW8gbWVtb3J5IGluc3RhbGxlZCBvbiB0aGUKLSAqIEdQ
VS4gIFRoZSB2YWx1ZSByZXBvcnRlZCBmb3IgaW50ZWdyYXRlZCBHUFVzIG1heSBsaWtld2lzZSBl
eGNlZWQKLSAqIHRoZSBhbW91bnQgb2YgZGVkaWNhdGVkIHN5c3RlbSBtZW1vcnkgc2V0IGFzaWRl
IGJ5IHRoZSBzeXN0ZW0KLSAqIEJJT1MgZm9yIHVzZSBieSB0aGUgaW50ZWdyYXRlZCBHUFUuCi0g
Ki8KLQotI2RlZmluZSBOVl9DVFJMX1ZJREVPX1JBTSA2IC8qIFItLUcgKi8KLQotLyoKLSAqIE5W
X0NUUkxfSVJRIC0gcmV0dXJucyB0aGUgaW50ZXJydXB0IHJlcXVlc3QgbGluZSB1c2VkIGJ5IHRo
ZSBzcGVjaWZpZWQKLSAqIGRldmljZS4KLSAqIFdoZW4gdGhpcyBhdHRyaWJ1dGUgaXMgcXVlcmll
ZCBvbiBhbiBYIHNjcmVlbiB0YXJnZXQsIHRoZSBJUlEgb2YgdGhlIEdQVQotICogZHJpdmluZyB0
aGUgWCBzY3JlZW4gaXMgcmV0dXJuZWQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0lSUSA3IC8q
IFItLUdJICovCi0KLS8qCi0gKiBOVl9DVFJMX09QRVJBVElOR19TWVNURU0gLSByZXR1cm5zIHRo
ZSBvcGVyYXRpbmcgc3lzdGVtIG9uIHdoaWNoCi0gKiB0aGUgWCBzZXJ2ZXIgaXMgcnVubmluZy4K
LSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfT1BFUkFUSU5HX1NZU1RFTSA4IC8qIFItLUcgKi8KLSNk
ZWZpbmUgTlZfQ1RSTF9PUEVSQVRJTkdfU1lTVEVNX0xJTlVYIDAKLSNkZWZpbmUgTlZfQ1RSTF9P
UEVSQVRJTkdfU1lTVEVNX0ZSRUVCU0QgMQotI2RlZmluZSBOVl9DVFJMX09QRVJBVElOR19TWVNU
RU1fU1VOT1MgMgotCi0vKgotICogTlZfQ1RSTF9TWU5DX1RPX1ZCTEFOSyAtIGVuYWJsZXMgc3lu
YyB0byB2YmxhbmsgZm9yIE9wZW5HTCBjbGllbnRzLgotICogVGhpcyBzZXR0aW5nIGlzIG9ubHkg
YXBwbGllZCB0byBPcGVuR0wgY2xpZW50cyB0aGF0IGFyZSBzdGFydGVkCi0gKiBhZnRlciB0aGlz
IHNldHRpbmcgaXMgYXBwbGllZC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfU1lOQ19UT19WQkxB
TksgOSAvKiBSVy1YICovCi0jZGVmaW5lIE5WX0NUUkxfU1lOQ19UT19WQkxBTktfT0ZGIDAKLSNk
ZWZpbmUgTlZfQ1RSTF9TWU5DX1RPX1ZCTEFOS19PTiAxCi0KLS8qCi0gKiBOVl9DVFJMX0xPR19B
TklTTyAtIGVuYWJsZXMgYW5pc290cm9waWMgZmlsdGVyaW5nIGZvciBPcGVuR0wKLSAqIGNsaWVu
dHM7IG9uIHNvbWUgTlZJRElBIGhhcmR3YXJlLCB0aGlzIGNhbiBvbmx5IGJlIGVuYWJsZWQgb3IK
LSAqIGRpc2FibGVkOyBvbiBvdGhlciBoYXJkd2FyZSBkaWZmZXJlbnQgbGV2ZWxzIG9mIGFuaXNv
dHJvcGljCi0gKiBmaWx0ZXJpbmcgY2FuIGJlIHNwZWNpZmllZC4gIFRoaXMgc2V0dGluZyBpcyBv
bmx5IGFwcGxpZWQgdG8gT3BlbkdMCi0gKiBjbGllbnRzIHRoYXQgYXJlIHN0YXJ0ZWQgYWZ0ZXIg
dGhpcyBzZXR0aW5nIGlzIGFwcGxpZWQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0xPR19BTklT
TyAxMCAvKiBSVy1YICovCi0KLS8qCi0gKiBOVl9DVFJMX0ZTQUFfTU9ERSAtIHRoZSBGU0FBIHNl
dHRpbmcgZm9yIE9wZW5HTCBjbGllbnRzOyBwb3NzaWJsZQotICogRlNBQSBtb2RlczoKLSAqCi0g
KiBOVl9DVFJMX0ZTQUFfTU9ERV8yeCAgICAgIjJ4IEJpbGluZWFyIE11bHRpc2FtcGxpbmciCi0g
KiBOVl9DVFJMX0ZTQUFfTU9ERV8yeF81dCAgIjJ4IFF1aW5jdW54IE11bHRpc2FtcGxpbmciCi0g
KiBOVl9DVFJMX0ZTQUFfTU9ERV8xNXgxNSAgIjEuNSB4IDEuNSBTdXBlcnNhbXBsaW5nIgotICog
TlZfQ1RSTF9GU0FBX01PREVfMngyICAgICIyIHggMiBTdXBlcnNhbXBsaW5nIgotICogTlZfQ1RS
TF9GU0FBX01PREVfNHggICAgICI0eCBCaWxpbmVhciBNdWx0aXNhbXBsaW5nIgotICogTlZfQ1RS
TF9GU0FBX01PREVfNHhfOXQgICI0eCBHYXVzc2lhbiBNdWx0aXNhbXBsaW5nIgotICogTlZfQ1RS
TF9GU0FBX01PREVfOHggICAgICIyeCBCaWxpbmVhciBNdWx0aXNhbXBsaW5nIGJ5IDR4IFN1cGVy
c2FtcGxpbmciCi0gKiBOVl9DVFJMX0ZTQUFfTU9ERV8xNnggICAgIjR4IEJpbGluZWFyIE11bHRp
c2FtcGxpbmcgYnkgNHggU3VwZXJzYW1wbGluZyIKLSAqIE5WX0NUUkxfRlNBQV9NT0RFXzh4UyAg
ICAiNHggTXVsdGlzYW1wbGluZyBieSAyeCBTdXBlcnNhbXBsaW5nIgotICoKLSAqIFRoaXMgc2V0
dGluZyBpcyBvbmx5IGFwcGxpZWQgdG8gT3BlbkdMIGNsaWVudHMgdGhhdCBhcmUgc3RhcnRlZAot
ICogYWZ0ZXIgdGhpcyBzZXR0aW5nIGlzIGFwcGxpZWQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJM
X0ZTQUFfTU9ERSAxMSAvKiBSVy1YICovCi0jZGVmaW5lIE5WX0NUUkxfRlNBQV9NT0RFX05PTkUg
MAotI2RlZmluZSBOVl9DVFJMX0ZTQUFfTU9ERV8yeCAxCi0jZGVmaW5lIE5WX0NUUkxfRlNBQV9N
T0RFXzJ4XzV0IDIKLSNkZWZpbmUgTlZfQ1RSTF9GU0FBX01PREVfMTV4MTUgMwotI2RlZmluZSBO
Vl9DVFJMX0ZTQUFfTU9ERV8yeDIgNAotI2RlZmluZSBOVl9DVFJMX0ZTQUFfTU9ERV80eCA1Ci0j
ZGVmaW5lIE5WX0NUUkxfRlNBQV9NT0RFXzR4Xzl0IDYKLSNkZWZpbmUgTlZfQ1RSTF9GU0FBX01P
REVfOHggNwotI2RlZmluZSBOVl9DVFJMX0ZTQUFfTU9ERV8xNnggOAotI2RlZmluZSBOVl9DVFJM
X0ZTQUFfTU9ERV84eFMgOQotI2RlZmluZSBOVl9DVFJMX0ZTQUFfTU9ERV84eFEgMTAKLSNkZWZp
bmUgTlZfQ1RSTF9GU0FBX01PREVfMTZ4UyAxMQotI2RlZmluZSBOVl9DVFJMX0ZTQUFfTU9ERV8x
NnhRIDEyCi0jZGVmaW5lIE5WX0NUUkxfRlNBQV9NT0RFXzMyeFMgMTMKLSNkZWZpbmUgTlZfQ1RS
TF9GU0FBX01PREVfMzJ4IDE0Ci0jZGVmaW5lIE5WX0NUUkxfRlNBQV9NT0RFXzY0eFMgMTUKLSNk
ZWZpbmUgTlZfQ1RSTF9GU0FBX01PREVfTUFYIE5WX0NUUkxfRlNBQV9NT0RFXzY0eFMKLQotLyoK
LSAqIE5WX0NUUkxfVEVYVFVSRV9TSEFSUEVOIC0gZW5hYmxlcyB0ZXh0dXJlIHNoYXJwZW5pbmcg
Zm9yIE9wZW5HTAotICogY2xpZW50cy4gIFRoaXMgc2V0dGluZyBpcyBvbmx5IGFwcGxpZWQgdG8g
T3BlbkdMIGNsaWVudHMgdGhhdCBhcmUKLSAqIHN0YXJ0ZWQgYWZ0ZXIgdGhpcyBzZXR0aW5nIGlz
IGFwcGxpZWQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1RFWFRVUkVfU0hBUlBFTiAxMiAvKiBS
Vy1YICovCi0jZGVmaW5lIE5WX0NUUkxfVEVYVFVSRV9TSEFSUEVOX09GRiAwCi0jZGVmaW5lIE5W
X0NUUkxfVEVYVFVSRV9TSEFSUEVOX09OIDEKLQotLyoKLSAqIE5WX0NUUkxfVUJCIC0gcmV0dXJu
cyB3aGV0aGVyIFVCQiBpcyBlbmFibGVkIGZvciB0aGUgc3BlY2lmaWVkIFgKLSAqIHNjcmVlbi4K
LSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfVUJCIDEzIC8qIFItLSAqLwotI2RlZmluZSBOVl9DVFJM
X1VCQl9PRkYgMAotI2RlZmluZSBOVl9DVFJMX1VCQl9PTiAxCi0KLS8qCi0gKiBOVl9DVFJMX09W
RVJMQVkgLSByZXR1cm5zIHdoZXRoZXIgdGhlIFJHQiBvdmVybGF5IGlzIGVuYWJsZWQgZm9yCi0g
KiB0aGUgc3BlY2lmaWVkIFggc2NyZWVuLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9PVkVSTEFZ
IDE0IC8qIFItLSAqLwotI2RlZmluZSBOVl9DVFJMX09WRVJMQVlfT0ZGIDAKLSNkZWZpbmUgTlZf
Q1RSTF9PVkVSTEFZX09OIDEKLQotLyoKLSAqIE5WX0NUUkxfU1RFUkVPIC0gcmV0dXJucyB3aGV0
aGVyIHN0ZXJlbyAoYW5kIHdoYXQgdHlwZSkgaXMgZW5hYmxlZAotICogZm9yIHRoZSBzcGVjaWZp
ZWQgWCBzY3JlZW4uCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NURVJFTyAxNiAvKiBSLS0gKi8K
LSNkZWZpbmUgTlZfQ1RSTF9TVEVSRU9fT0ZGIDAKLSNkZWZpbmUgTlZfQ1RSTF9TVEVSRU9fRERD
IDEKLSNkZWZpbmUgTlZfQ1RSTF9TVEVSRU9fQkxVRUxJTkUgMgotI2RlZmluZSBOVl9DVFJMX1NU
RVJFT19ESU4gMwotI2RlZmluZSBOVl9DVFJMX1NURVJFT19QQVNTSVZFX0VZRV9QRVJfRFBZIDQK
LSNkZWZpbmUgTlZfQ1RSTF9TVEVSRU9fVkVSVElDQUxfSU5URVJMQUNFRCA1Ci0jZGVmaW5lIE5W
X0NUUkxfU1RFUkVPX0NPTE9SX0lOVEVSTEFDRUQgNgotI2RlZmluZSBOVl9DVFJMX1NURVJFT19I
T1JJWk9OVEFMX0lOVEVSTEFDRUQgNwotI2RlZmluZSBOVl9DVFJMX1NURVJFT19DSEVDS0VSQk9B
UkRfUEFUVEVSTiA4Ci0jZGVmaW5lIE5WX0NUUkxfU1RFUkVPX0lOVkVSU0VfQ0hFQ0tFUkJPQVJE
X1BBVFRFUk4gOQotI2RlZmluZSBOVl9DVFJMX1NURVJFT18zRF9WSVNJT04gMTAKLSNkZWZpbmUg
TlZfQ1RSTF9TVEVSRU9fM0RfVklTSU9OX1BSTyAxMQotCi0vKgotICogTlZfQ1RSTF9FTVVMQVRF
IC0gY29udHJvbHMgT3BlbkdMIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiBmdXR1cmUKLSAqIE5WSURJ
QSBHUFVzLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9FTVVMQVRFIDE3IC8qIFJXLSAqLwotI2Rl
ZmluZSBOVl9DVFJMX0VNVUxBVEVfTk9ORSAwCi0KLS8qCi0gKiBOVl9DVFJMX1RXSU5WSUVXIC0g
cmV0dXJucyB3aGV0aGVyIFR3aW5WaWV3IGlzIGVuYWJsZWQgZm9yIHRoZQotICogc3BlY2lmaWVk
IFggc2NyZWVuLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9UV0lOVklFVyAxOCAvKiBSLS0gKi8K
LSNkZWZpbmUgTlZfQ1RSTF9UV0lOVklFV19OT1RfRU5BQkxFRCAwCi0jZGVmaW5lIE5WX0NUUkxf
VFdJTlZJRVdfRU5BQkxFRCAxCi0KLS8qCi0gKiBOVl9DVFJMX0NPTk5FQ1RFRF9ESVNQTEFZUyAt
IHJldHVybnMgYSBkaXNwbGF5IG1hc2sgaW5kaWNhdGluZyB0aGUgbGFzdAotICogY2FjaGVkIHN0
YXRlIG9mIHRoZSBkaXNwbGF5IGRldmljZXMgY29ubmVjdGVkIHRvIHRoZSBHUFUgb3IgR1BVIGRy
aXZpbmcKLSAqIHRoZSBzcGVjaWZpZWQgWCBzY3JlZW4uCi0gKgotICogVGhpcyBhdHRyaWJ1dGUg
bWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQotICog
dXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hf
U0NSRUVOIHRhcmdldC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfQ09OTkVDVEVEX0RJU1BMQVlT
IDE5IC8qIFItLUcgKi8KLQotLyoKLSAqIE5WX0NUUkxfRU5BQkxFRF9ESVNQTEFZUyAtIHJldHVy
bnMgYSBkaXNwbGF5IG1hc2sgaW5kaWNhdGluZyB3aGF0Ci0gKiBkaXNwbGF5IGRldmljZXMgYXJl
IGVuYWJsZWQgZm9yIHVzZSBvbiB0aGUgc3BlY2lmaWVkIFggc2NyZWVuIG9yCi0gKiBHUFUuCi0g
KgotICogVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlU
YXJnZXRBdHRyaWJ1dGUoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSBvciBO
Vl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIHRhcmdldC4KLSAqLwotCi0jZGVmaW5lIE5WX0NU
UkxfRU5BQkxFRF9ESVNQTEFZUyAyMCAvKiBSLS1HICovCi0KLS8qKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8K
LS8qCi0gKiBJbnRlZ2VyIGF0dHJpYnV0ZXMgc3BlY2lmaWMgdG8gY29uZmlndXJpbmcgRnJhbWUg
TG9jayBvbiBib2FyZHMgdGhhdAotICogc3VwcG9ydCBpdC4KLSAqLwotCi0vKgotICogTlZfQ1RS
TF9GUkFNRUxPQ0sgLSByZXR1cm5zIHdoZXRoZXIgdGhlIHVuZGVybHlpbmcgR1BVIHN1cHBvcnRz
Ci0gKiBGcmFtZSBMb2NrLiAgQWxsIG9mIHRoZSBvdGhlciBmcmFtZSBsb2NrIGF0dHJpYnV0ZXMg
YXJlIG9ubHkKLSAqIGFwcGxpY2FibGUgaWYgTlZfQ1RSTF9GUkFNRUxPQ0sgaXMgX1NVUFBPUlRF
RC4KLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxR
dWVyeVRhcmdldEF0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BV
IG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0LgotICovCi0KLSNkZWZpbmUg
TlZfQ1RSTF9GUkFNRUxPQ0sgMjEgLyogUi0tRyAqLwotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9D
S19OT1RfU1VQUE9SVEVEIDAKLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfU1VQUE9SVEVEIDEK
LQotLyoKLSAqIE5WX0NUUkxfRlJBTUVMT0NLX01BU1RFUiAtIGdldC9zZXQgd2hpY2ggZGlzcGxh
eSBkZXZpY2UgdG8gdXNlCi0gKiBhcyB0aGUgZnJhbWUgbG9jayBtYXN0ZXIgZm9yIHRoZSBlbnRp
cmUgc3luYyBncm91cC4gIE5vdGUgdGhhdCBvbmx5Ci0gKiBvbmUgbm9kZSBpbiB0aGUgc3luYyBn
cm91cCBzaG91bGQgYmUgY29uZmlndXJlZCBhcyB0aGUgbWFzdGVyLgotICoKLSAqIFRoaXMgYXR0
cmlidXRlIGNhbiBvbmx5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRy
aWJ1dGUoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSB0YXJnZXQuICBUaGlz
IGF0dHJpYnV0ZSBjYW5ub3QgYmUKLSAqIHF1ZXJpZWQgdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9U
WVBFX1hfU0NSRUVOLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfTUFTVEVSIDIy
IC8qIFJXLUcgKi8KLQotLyogVGhlc2UgYXJlIGRlcHJlY2F0ZWQuICBOVl9DVFJMX0ZSQU1FTE9D
S19NQVNURVIgbm93IHRha2VzIGFuZAotICAgcmV0dXJucyBhIGRpc3BsYXkgbWFzayBhcyB2YWx1
ZS4gKi8KLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfTUFTVEVSX0ZBTFNFIDAKLSNkZWZpbmUg
TlZfQ1RSTF9GUkFNRUxPQ0tfTUFTVEVSX1RSVUUgMQotCi0vKgotICogTlZfQ1RSTF9GUkFNRUxP
Q0tfUE9MQVJJVFkgLSBzeW5jIGVpdGhlciB0byB0aGUgcmlzaW5nIGVkZ2Ugb2YgdGhlCi0gKiBm
cmFtZSBsb2NrIHB1bHNlLCB0aGUgZmFsbGluZyBlZGdlIG9mIHRoZSBmcmFtZSBsb2NrIHB1bHNl
IG9yIGJvdGguCi0gKgotICogVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBY
TlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9U
WVBFX0ZSQU1FTE9DSyBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOCi0gKiB0YXJnZXQu
Ci0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19QT0xBUklUWSAyMyAvKiBSVy1GICov
Ci0jZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1BPTEFSSVRZX1JJU0lOR19FREdFIDB4MQotI2Rl
ZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19QT0xBUklUWV9GQUxMSU5HX0VER0UgMHgyCi0jZGVmaW5l
IE5WX0NUUkxfRlJBTUVMT0NLX1BPTEFSSVRZX0JPVEhfRURHRVMgMHgzCi0KLS8qCi0gKiBOVl9D
VFJMX0ZSQU1FTE9DS19TWU5DX0RFTEFZIC0gZGVsYXkgYmV0d2VlbiB0aGUgZnJhbWUgbG9jayBw
dWxzZQotICogYW5kIHRoZSBHUFUgc3luYy4gIFRoaXMgdmFsdWUgbXVzdCBiZSBtdWx0aXBsaWVk
IGJ5Ci0gKiBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DX0RFTEFZX1JFU09MVVRJT04gdG8gZGV0ZXJt
aW5lIHRoZSBzeW5jIGRlbGF5IGluCi0gKiBuYW5vc2Vjb25kcy4KLSAqCi0gKiBUaGlzIGF0dHJp
YnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgp
Ci0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NLIG9yIE5WX0NUUkxfVEFS
R0VUX1RZUEVfWF9TQ1JFRU4KLSAqIHRhcmdldC4KLSAqCi0gKiBVU0FHRSBOT0RFOiBOVl9DVFJM
X0ZSQU1FTE9DS19TWU5DX0RFTEFZX01BWCBhbmQKLSAqICAgICAgICAgICAgIE5WX0NUUkxfRlJB
TUVMT0NLX1NZTkNfREVMQVlfRkFDVE9SIGFyZSBkZXByZWNhdGVkLgotICogICAgICAgICAgICAg
VGhlIFN5bmMgRGVsYXkgX01BWCBhbmQgX0ZBQ1RPUiBhcmUgZGlmZmVyZW50IGZvciBkaWZmZXJl
bnQKLSAqICAgICAgICAgICAgIEdTeW5jIHByb2R1Y3RzIGFuZCBzbywgdG8gYmUgY29ycmVjdCwg
dGhlIHZhbGlkIHZhbHVlcyBmb3IKLSAqICAgICAgICAgICAgIE5WX0NUUkxfRlJBTUVMT0NLX1NZ
TkNfREVMQVkgbXVzdCBiZSBxdWVyaWVkIHRvIGdldCB0aGUgcmFuZ2UKLSAqICAgICAgICAgICAg
IG9mIGFjY2VwdGFibGUgc3luYyBkZWxheSB2YWx1ZXMsIGFuZAotICogICAgICAgICAgICAgTlZf
Q1RSTF9GUkFNRUxPQ0tfU1lOQ19ERUxBWV9SRVNPTFVUSU9OIG11c3QgYmUgcXVlcmllZCB0bwot
ICogICAgICAgICAgICAgb2J0YWluIHRoZSBjb3JyZWN0IGZhY3Rvci4KLSAqLwotCi0jZGVmaW5l
IE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfREVMQVkgMjQgICAgICAgICAgIC8qIFJXLUYgKi8KLSNk
ZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19ERUxBWV9NQVggMjA0NyAgICAgLy8gZGVwcmVj
YXRlZAotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DX0RFTEFZX0ZBQ1RPUiA3LjgxICAv
LyBkZXByZWNhdGVkCi0KLS8qCi0gKiBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DX0lOVEVSVkFMIC0g
aG93IG1hbnkgaG91c2Ugc3luYyBwdWxzZXMKLSAqIGJldHdlZW4gdGhlIGZyYW1lIGxvY2sgc3lu
YyBnZW5lcmF0aW9uICgwID09IHN5bmMgZXZlcnkgaG91c2Ugc3luYyk7Ci0gKiB0aGlzIG9ubHkg
YXBwbGllcyB0byB0aGUgbWFzdGVyIHdoZW4gcmVjZWl2aW5nIGhvdXNlIHN5bmMuCi0gKgotICog
VGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRB
dHRyaWJ1dGUoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0ZSQU1FTE9DSyBvciBO
Vl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOCi0gKiB0YXJnZXQuCi0gKi8KLQotI2RlZmluZSBO
Vl9DVFJMX0ZSQU1FTE9DS19TWU5DX0lOVEVSVkFMIDI1IC8qIFJXLUYgKi8KLQotLyoKLSAqIE5W
X0NUUkxfRlJBTUVMT0NLX1BPUlQwX1NUQVRVUyAtIHN0YXR1cyBvZiB0aGUgcmo0NSBwb3J0MC4K
LSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVy
eVRhcmdldEF0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVM
T0NLIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4KLSAqIHRhcmdldC4KLSAqLwotCi0j
ZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1BPUlQwX1NUQVRVUyAyNiAvKiBSLS1GICovCi0jZGVm
aW5lIE5WX0NUUkxfRlJBTUVMT0NLX1BPUlQwX1NUQVRVU19JTlBVVCAwCi0jZGVmaW5lIE5WX0NU
UkxfRlJBTUVMT0NLX1BPUlQwX1NUQVRVU19PVVRQVVQgMQotCi0vKgotICogTlZfQ1RSTF9GUkFN
RUxPQ0tfUE9SVDFfU1RBVFVTIC0gc3RhdHVzIG9mIHRoZSByajQ1IHBvcnQxLgotICoKLSAqIFRo
aXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0
cmlidXRlKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9GUkFNRUxPQ0sgb3IgTlZf
Q1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTgotICogdGFyZ2V0LgotICovCi0KLSNkZWZpbmUgTlZf
Q1RSTF9GUkFNRUxPQ0tfUE9SVDFfU1RBVFVTIDI3IC8qIFItLUYgKi8KLSNkZWZpbmUgTlZfQ1RS
TF9GUkFNRUxPQ0tfUE9SVDFfU1RBVFVTX0lOUFVUIDAKLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxP
Q0tfUE9SVDFfU1RBVFVTX09VVFBVVCAxCi0KLS8qCi0gKiBOVl9DVFJMX0ZSQU1FTE9DS19IT1VT
RV9TVEFUVVMgLSByZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBob3VzZQotICogc3luYyBzaWdu
YWwgd2FzIGRldGVjdGVkIG9uIHRoZSBCTkMgY29ubmVjdG9yIG9mIHRoZSBmcmFtZSBsb2NrCi0g
KiBib2FyZC4KLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhO
VkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZ
UEVfRlJBTUVMT0NLIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4KLSAqIHRhcmdldC4K
LSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX0hPVVNFX1NUQVRVUyAyOCAvKiBSLS1G
ICovCi0jZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX0hPVVNFX1NUQVRVU19OT1RfREVURUNURUQg
MAotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19IT1VTRV9TVEFUVVNfREVURUNURUQgMQotCi0v
KgotICogTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQyAtIGVuYWJsZS9kaXNhYmxlIHRoZSBzeW5jaW5n
IG9mIGRpc3BsYXkKLSAqIGRldmljZXMgdG8gdGhlIGZyYW1lIGxvY2sgcHVsc2UgYXMgc3BlY2lm
aWVkIGJ5IHByZXZpb3VzIGNhbGxzIHRvCi0gKiBOVl9DVFJMX0ZSQU1FTE9DS19NQVNURVIgYW5k
IE5WX0NUUkxfRlJBTUVMT0NLX1NMQVZFUy4KLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBjYW4gb25s
eSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKLSAqIHVz
aW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgdGFyZ2V0LiAgVGhpcyBhdHRyaWJ1dGUgY2Fu
bm90IGJlCi0gKiBxdWVyaWVkIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTi4K
LSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkMgMjkgLyogUlctRyAqLwotI2Rl
ZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DX0RJU0FCTEUgMAotI2RlZmluZSBOVl9DVFJMX0ZS
QU1FTE9DS19TWU5DX0VOQUJMRSAxCi0KLS8qCi0gKiBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DX1JF
QURZIC0gcmVwb3J0cyB3aGV0aGVyIGEgZnJhbWUgbG9jawotICogYm9hcmQgaXMgcmVjZWl2aW5n
IHN5bmMgKHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgYW55IGRpc3BsYXkKLSAqIGRldmlj
ZXMgYXJlIHVzaW5nIHRoZSBzeW5jKS4KLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVl
cmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5W
X0NUUkxfVEFSR0VUX1RZUEVfRlJBTUVMT0NLIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JF
RU4KLSAqIHRhcmdldC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfUkVB
RFkgMzAgLyogUi0tRiAqLwotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DX1JFQURZX0ZB
TFNFIDAKLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19SRUFEWV9UUlVFIDEKLQotLyoK
LSAqIE5WX0NUUkxfRlJBTUVMT0NLX1NURVJFT19TWU5DIC0gdGhpcyBpbmRpY2F0ZXMgdGhhdCB0
aGUgR1BVIHN0ZXJlbwotICogc2lnbmFsIGlzIGluIHN5bmMgd2l0aCB0aGUgZnJhbWUgbG9jayBz
dGVyZW8gc2lnbmFsLgotICoKLSAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91
Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJH
RVRfVFlQRV9HUFUgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTgotICogdGFyZ2V0Lgot
ICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfU1RFUkVPX1NZTkMgMzEgLyogUi0tRyAq
LwotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19TVEVSRU9fU1lOQ19GQUxTRSAwCi0jZGVmaW5l
IE5WX0NUUkxfRlJBTUVMT0NLX1NURVJFT19TWU5DX1RSVUUgMQotCi0vKgotICogTlZfQ1RSTF9G
UkFNRUxPQ0tfVEVTVF9TSUdOQUwgLSB0byB0ZXN0IHRoZSBjb25uZWN0aW9ucyBpbiB0aGUgc3lu
YwotICogZ3JvdXAsIHRlbGwgdGhlIG1hc3RlciB0byBlbmFibGUgYSB0ZXN0IHNpZ25hbCwgdGhl
biBxdWVyeSBwb3J0WzAxXQotICogc3RhdHVzIGFuZCBzeW5jX3JlYWR5IG9uIGFsbCBzbGF2ZXMu
ICBXaGVuIGRvbmUsIHRlbGwgdGhlIG1hc3RlciB0bwotICogZGlzYWJsZSB0aGUgdGVzdCBzaWdu
YWwuICBUZXN0IHNpZ25hbCBzaG91bGQgb25seSBiZSBtYW5pcHVsYXRlZAotICogd2hpbGUgTlZf
Q1RSTF9GUkFNRUxPQ0tfU1lOQyBpcyBlbmFibGVkLgotICoKLSAqIFRoZSBURVNUX1NJR05BTCBp
cyBhbHNvIHVzZWQgdG8gcmVzZXQgdGhlIFVuaXZlcnNhbCBGcmFtZSBDb3VudCAoYXMKLSAqIHJl
dHVybmVkIGJ5IHRoZSBnbFhRdWVyeUZyYW1lQ291bnROVigpIGZ1bmN0aW9uIGluIHRoZQotICog
R0xYX05WX3N3YXBfZ3JvdXAgZXh0ZW5zaW9uKS4gIE5vdGU6IGZvciBiZXN0IGFjY3VyYWN5IG9m
IHRoZQotICogVW5pdmVyc2FsIEZyYW1lIENvdW50LCBpdCBpcyByZWNvbW1lbmRlZCB0byB0b2dn
bGUgdGhlIFRFU1RfU0lHTkFMCi0gKiBvbiBhbmQgb2ZmIGFmdGVyIGVuYWJsaW5nIGZyYW1lIGxv
Y2suCi0gKgotICogVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJM
UXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQ
VSBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIHRhcmdldC4KLSAqLwotCi0jZGVmaW5l
IE5WX0NUUkxfRlJBTUVMT0NLX1RFU1RfU0lHTkFMIDMyIC8qIFJXLUcgKi8KLSNkZWZpbmUgTlZf
Q1RSTF9GUkFNRUxPQ0tfVEVTVF9TSUdOQUxfRElTQUJMRSAwCi0jZGVmaW5lIE5WX0NUUkxfRlJB
TUVMT0NLX1RFU1RfU0lHTkFMX0VOQUJMRSAxCi0KLS8qCi0gKiBOVl9DVFJMX0ZSQU1FTE9DS19F
VEhFUk5FVF9ERVRFQ1RFRCAtIFRoZSBmcmFtZSBsb2NrIGJvYXJkcyBhcmUKLSAqIGNhYmxlZCB0
b2dldGhlciB1c2luZyByZWd1bGFyIGNhdDUgY2FibGUsIGNvbm5lY3RpbmcgdG8gcmo0NSBwb3J0
cwotICogb24gdGhlIGJhY2twbGFuZSBvZiB0aGUgY2FyZC4gIFRoZXJlIGlzIHNvbWUgY29uY2Vy
biB0aGF0IHVzZXJzIG1heQotICogdGhpbmsgdGhlc2UgYXJlIGV0aGVybmV0IHBvcnRzIGFuZCBj
b25uZWN0IHRoZW0gdG8gYQotICogcm91dGVyL2h1Yi9ldGMuICBUaGUgaGFyZHdhcmUgY2FuIGRl
dGVjdCB0aGlzIGFuZCB3aWxsIHNodXQgb2ZmIHRvCi0gKiBwcmV2ZW50IGRhbWFnZSAoZWl0aGVy
IHRvIGl0c2VsZiBvciB0byB0aGUgcm91dGVyKS4KLSAqIE5WX0NUUkxfRlJBTUVMT0NLX0VUSEVS
TkVUX0RFVEVDVEVEIG1heSBiZSBjYWxsZWQgdG8gZmluZCBvdXQgaWYKLSAqIGV0aGVybmV0IGlz
IGNvbm5lY3RlZCB0byBvbmUgb2YgdGhlIHJqNDUgcG9ydHMuICBBbiBhcHByb3ByaWF0ZQotICog
ZXJyb3IgbWVzc2FnZSBzaG91bGQgdGhlbiBiZSBkaXNwbGF5ZWQuICBUaGUgX1BPUlQwIGFuZCBf
UE9SVDEKLSAqIHZhbHVlcyBtYXkgYmUgb3InZWQgdG9nZXRoZXIuCi0gKgotICogVGhpcyBhdHRy
aWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUo
KQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0ZSQU1FTE9DSyBvciBOVl9DVFJMX1RB
UkdFVF9UWVBFX1hfU0NSRUVOCi0gKiB0YXJnZXQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0ZS
QU1FTE9DS19FVEhFUk5FVF9ERVRFQ1RFRCAzMyAvKiBSLS1GICovCi0jZGVmaW5lIE5WX0NUUkxf
RlJBTUVMT0NLX0VUSEVSTkVUX0RFVEVDVEVEX05PTkUgMAotI2RlZmluZSBOVl9DVFJMX0ZSQU1F
TE9DS19FVEhFUk5FVF9ERVRFQ1RFRF9QT1JUMCAweDEKLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxP
Q0tfRVRIRVJORVRfREVURUNURURfUE9SVDEgMHgyCi0KLS8qCi0gKiBOVl9DVFJMX0ZSQU1FTE9D
S19WSURFT19NT0RFIC0gZ2V0L3NldCB3aGF0IHZpZGVvIG1vZGUgaXMgdXNlZAotICogdG8gaW50
ZXJwZXJhdGUgdGhlIGhvdXNlIHN5bmMgc2lnbmFsLiAgVGhpcyBzaG91bGQgb25seSBiZSBzZXQK
LSAqIG9uIHRoZSBtYXN0ZXIuCi0gKgotICogVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQg
dGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQotICogdXNpbmcgYSBOVl9DVFJM
X1RBUkdFVF9UWVBFX0ZSQU1FTE9DSyBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOCi0g
KiB0YXJnZXQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19WSURFT19NT0RFIDM0
IC8qIFJXLUYgKi8KLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfVklERU9fTU9ERV9OT05FIDAK
LSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfVklERU9fTU9ERV9UVEwgMQotI2RlZmluZSBOVl9D
VFJMX0ZSQU1FTE9DS19WSURFT19NT0RFX05UU0NQQUxTRUNBTSAyCi0jZGVmaW5lIE5WX0NUUkxf
RlJBTUVMT0NLX1ZJREVPX01PREVfSERUViAzCi0KLS8qCi0gKiBEdXJpbmcgRlJBTUVMT0NLIGJy
aW5nLXVwLCB0aGUgYWJvdmUgdmFsdWVzIHdlcmUgcmVkZWZpbmVkIHRvCi0gKiB0aGVzZToKLSAq
LwotCi0jZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1ZJREVPX01PREVfQ09NUE9TSVRFX0FVVE8g
MAotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19WSURFT19NT0RFX1RUTCAxCi0jZGVmaW5lIE5W
X0NUUkxfRlJBTUVMT0NLX1ZJREVPX01PREVfQ09NUE9TSVRFX0JJX0xFVkVMIDIKLSNkZWZpbmUg
TlZfQ1RSTF9GUkFNRUxPQ0tfVklERU9fTU9ERV9DT01QT1NJVEVfVFJJX0xFVkVMIDMKLQotLyoK
LSAqIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfUkFURSAtIHRoaXMgaXMgdGhlIHJlZnJlc2ggcmF0
ZSB0aGF0IHRoZQotICogZnJhbWUgbG9jayBib2FyZCBpcyBzZW5kaW5nIHRvIHRoZSBHUFUsIGlu
IG1pbGxpSHouCi0gKgotICogVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBY
TlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9U
WVBFX0ZSQU1FTE9DSyBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOCi0gKiB0YXJnZXQu
Ci0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19TWU5DX1JBVEUgMzUgLyogUi0tRiAq
LwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qCi0gKiBOVl9DVFJMX0ZPUkNFX0dFTkVSSUNf
Q1BVIC0gaW5oaWJpdCB0aGUgdXNlIG9mIENQVSBzcGVjaWZpYwotICogZmVhdHVyZXMgc3VjaCBh
cyBNTVgsIFNTRSwgb3IgM0ROT1chIGZvciBPcGVuR0wgY2xpZW50czsgdGhpcwotICogb3B0aW9u
IG1heSByZXN1bHQgaW4gcGVyZm9ybWFuY2UgbG9zcywgYnV0IG1heSBiZSB1c2VmdWwgaW4KLSAq
IGNvbmp1bmN0aW9uIHdpdGggc29mdHdhcmUgc3VjaCBhcyB0aGUgVmFsZ3JpbmQgbWVtb3J5IGRl
YnVnZ2VyLgotICogVGhpcyBzZXR0aW5nIGlzIG9ubHkgYXBwbGllZCB0byBPcGVuR0wgY2xpZW50
cyB0aGF0IGFyZSBzdGFydGVkCi0gKiBhZnRlciB0aGlzIHNldHRpbmcgaXMgYXBwbGllZC4KLSAq
Ci0gKiBVU0FHRSBOT1RFOiBUaGlzIGF0dHJpYnV0ZSBpcyBkZXByZWNhdGVkLiBDUFUgY29tcGF0
aWJpbGl0eSBpcyBub3cKLSAqICAgICAgICAgICAgIGNoZWNrZWQgZWFjaCB0aW1lIGR1cmluZyBp
bml0aWFsaXphdGlvbi4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfRk9SQ0VfR0VORVJJQ19DUFUg
MzcgLyogUlctWCAqLwotI2RlZmluZSBOVl9DVFJMX0ZPUkNFX0dFTkVSSUNfQ1BVX0RJU0FCTEUg
MAotI2RlZmluZSBOVl9DVFJMX0ZPUkNFX0dFTkVSSUNfQ1BVX0VOQUJMRSAxCi0KLS8qCi0gKiBO
Vl9DVFJMX09QRU5HTF9BQV9MSU5FX0dBTU1BIC0gZm9yIE9wZW5HTCBjbGllbnRzLCBhbGxvdwot
ICogR2FtbWEtY29ycmVjdGVkIGFudGlhbGlhc2VkIGxpbmVzIHRvIGNvbnNpZGVyIHZhcmlhbmNl
cyBpbiB0aGUKLSAqIGNvbG9yIGRpc3BsYXkgY2FwYWJpbGl0aWVzIG9mIG91dHB1dCBkZXZpY2Vz
IHdoZW4gcmVuZGVyaW5nIHNtb290aAotICogbGluZXMuICBPbmx5IGF2YWlsYWJsZSBvbiByZWNl
bnQgUXVhZHJvIEdQVXMuICBUaGlzIHNldHRpbmcgaXMgb25seQotICogYXBwbGllZCB0byBPcGVu
R0wgY2xpZW50cyB0aGF0IGFyZSBzdGFydGVkIGFmdGVyIHRoaXMgc2V0dGluZyBpcwotICogYXBw
bGllZC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfT1BFTkdMX0FBX0xJTkVfR0FNTUEgMzggLyog
UlctWCAqLwotI2RlZmluZSBOVl9DVFJMX09QRU5HTF9BQV9MSU5FX0dBTU1BX0RJU0FCTEUgMAot
I2RlZmluZSBOVl9DVFJMX09QRU5HTF9BQV9MSU5FX0dBTU1BX0VOQUJMRSAxCi0KLS8qCi0gKiBO
Vl9DVFJMX0ZSQU1FTE9DS19USU1JTkcgLSB0aGlzIGlzIFRSVUUgd2hlbiB0aGUgZ3B1IGlzIGJv
dGggcmVjZWl2aW5nCi0gKiBhbmQgbG9ja2VkIHRvIGFuIGlucHV0IHRpbWluZyBzaWduYWwuIFRp
bWluZyBpbmZvcm1hdGlvbiBtYXkgY29tZSBmcm9tCi0gKiB0aGUgZm9sbG93aW5nIHBsYWNlczog
QW5vdGhlciBmcmFtZSBsb2NrIGRldmljZSB0aGF0IGlzIHNldCB0byBtYXN0ZXIsCi0gKiB0aGUg
aG91c2Ugc3luYyBzaWduYWwsIG9yIHRoZSBHUFUncyBpbnRlcm5hbCB0aW1pbmcgZnJvbSBhIGRp
c3BsYXkKLSAqIGRldmljZS4KLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0
aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxf
VEFSR0VUX1RZUEVfR1BVIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0Lgot
ICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfVElNSU5HIDM5IC8qIFItLUcgKi8KLSNk
ZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfVElNSU5HX0ZBTFNFIDAKLSNkZWZpbmUgTlZfQ1RSTF9G
UkFNRUxPQ0tfVElNSU5HX1RSVUUgMQotCi0vKgotICogTlZfQ1RSTF9GTElQUElOR19BTExPV0VE
IC0gd2hlbiBUUlVFLCBPcGVuR0wgd2lsbCBzd2FwIGJ5IGZsaXBwaW5nCi0gKiB3aGVuIHBvc3Np
YmxlOyB3aGVuIEZBTFNFLCBPcGVuR0wgd2lsbCBhbHdheSBzd2FwIGJ5IGJsaXR0aW5nLgotICov
Ci0KLSNkZWZpbmUgTlZfQ1RSTF9GTElQUElOR19BTExPV0VEIDQwIC8qIFJXLVggKi8KLSNkZWZp
bmUgTlZfQ1RSTF9GTElQUElOR19BTExPV0VEX0ZBTFNFIDAKLSNkZWZpbmUgTlZfQ1RSTF9GTElQ
UElOR19BTExPV0VEX1RSVUUgMQotCi0vKgotICogTlZfQ1RSTF9BUkNISVRFQ1RVUkUgLSByZXR1
cm5zIHRoZSBhcmNoaXRlY3R1cmUgb24gd2hpY2ggdGhlIFggc2VydmVyIGlzCi0gKiBydW5uaW5n
LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9BUkNISVRFQ1RVUkUgNDEgLyogUi0tICovCi0jZGVm
aW5lIE5WX0NUUkxfQVJDSElURUNUVVJFX1g4NiAwCi0jZGVmaW5lIE5WX0NUUkxfQVJDSElURUNU
VVJFX1g4Nl82NCAxCi0jZGVmaW5lIE5WX0NUUkxfQVJDSElURUNUVVJFX0lBNjQgMgotCi0vKgot
ICogTlZfQ1RSTF9URVhUVVJFX0NMQU1QSU5HIC0gdGV4dHVyZSBjbGFtcGluZyBtb2RlIGluIE9w
ZW5HTC4gIEJ5Ci0gKiBkZWZhdWx0LCBfU1BFQyBpcyB1c2VkLCB3aGljaCBmb3JjZXMgT3BlbkdM
IHRleHR1cmUgY2xhbXBpbmcgdG8KLSAqIGNvbmZvcm0gd2l0aCB0aGUgT3BlbkdMIHNwZWNpZmlj
YXRpb24uICBfRURHRSBmb3JjZXMgTlZJRElBJ3MKLSAqIE9wZW5HTCBpbXBsZW1lbnRhdGlvbiB0
byByZW1hcCBHTF9DTEFNUCB0byBHTF9DTEFNUF9UT19FREdFLAotICogd2hpY2ggaXMgbm90IHN0
cmljdGx5IGNvbmZvcm1hbnQsIGJ1dCBzb21lIGFwcGxpY2F0aW9ucyByZWx5IG9uCi0gKiB0aGUg
bm9uLWNvbmZvcm1hbnQgYmVoYXZpb3IuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1RFWFRVUkVf
Q0xBTVBJTkcgNDIgLyogUlctWCAqLwotI2RlZmluZSBOVl9DVFJMX1RFWFRVUkVfQ0xBTVBJTkdf
RURHRSAwCi0jZGVmaW5lIE5WX0NUUkxfVEVYVFVSRV9DTEFNUElOR19TUEVDIDEKLQotI2RlZmlu
ZSBOVl9DVFJMX0NVUlNPUl9TSEFET1cgNDMgLyogUlctICovCi0jZGVmaW5lIE5WX0NUUkxfQ1VS
U09SX1NIQURPV19ESVNBQkxFIDAKLSNkZWZpbmUgTlZfQ1RSTF9DVVJTT1JfU0hBRE9XX0VOQUJM
RSAxCi0KLSNkZWZpbmUgTlZfQ1RSTF9DVVJTT1JfU0hBRE9XX0FMUEhBIDQ0IC8qIFJXLSAqLwot
I2RlZmluZSBOVl9DVFJMX0NVUlNPUl9TSEFET1dfUkVEIDQ1ICAgLyogUlctICovCi0jZGVmaW5l
IE5WX0NUUkxfQ1VSU09SX1NIQURPV19HUkVFTiA0NiAvKiBSVy0gKi8KLSNkZWZpbmUgTlZfQ1RS
TF9DVVJTT1JfU0hBRE9XX0JMVUUgNDcgIC8qIFJXLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfQ1VS
U09SX1NIQURPV19YX09GRlNFVCA0OCAvKiBSVy0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9DVVJTT1Jf
U0hBRE9XX1lfT0ZGU0VUIDQ5IC8qIFJXLSAqLwotCi0vKgotICogV2hlbiBBcHBsaWNhdGlvbiBD
b250cm9sIGZvciBGU0FBIGlzIGVuYWJsZWQsIHRoZW4gd2hhdCB0aGUKLSAqIGFwcGxpY2F0aW9u
IHJlcXVlc3RzIGlzIHVzZWQsIGFuZCBOVl9DVFJMX0ZTQUFfTU9ERSBpcyBpZ25vcmVkLiAgSWYK
LSAqIHRoaXMgaXMgZGlzYWJsZWQsIHRoZW4gYW55IGFwcGxpY2F0aW9uIHNldHRpbmcgaXMgb3Zl
cnJpZGRlbiB3aXRoCi0gKiBOVl9DVFJMX0ZTQUFfTU9ERQotICovCi0KLSNkZWZpbmUgTlZfQ1RS
TF9GU0FBX0FQUExJQ0FUSU9OX0NPTlRST0xMRUQgNTAgLyogUlctWCAqLwotI2RlZmluZSBOVl9D
VFJMX0ZTQUFfQVBQTElDQVRJT05fQ09OVFJPTExFRF9FTkFCTEVEIDEKLSNkZWZpbmUgTlZfQ1RS
TF9GU0FBX0FQUExJQ0FUSU9OX0NPTlRST0xMRURfRElTQUJMRUQgMAotCi0vKgotICogV2hlbiBB
cHBsaWNhdGlvbiBDb250cm9sIGZvciBMb2dBbmlzbyBpcyBlbmFibGVkLCB0aGVuIHdoYXQgdGhl
Ci0gKiBhcHBsaWNhdGlvbiByZXF1ZXN0cyBpcyB1c2VkLCBhbmQgTlZfQ1RSTF9MT0dfQU5JU08g
aXMgaWdub3JlZC4gIElmCi0gKiB0aGlzIGlzIGRpc2FibGVkLCB0aGVuIGFueSBhcHBsaWNhdGlv
biBzZXR0aW5nIGlzIG92ZXJyaWRkZW4gd2l0aAotICogTlZfQ1RSTF9MT0dfQU5JU08KLSAqLwot
Ci0jZGVmaW5lIE5WX0NUUkxfTE9HX0FOSVNPX0FQUExJQ0FUSU9OX0NPTlRST0xMRUQgNTEgLyog
UlctWCAqLwotI2RlZmluZSBOVl9DVFJMX0xPR19BTklTT19BUFBMSUNBVElPTl9DT05UUk9MTEVE
X0VOQUJMRUQgMQotI2RlZmluZSBOVl9DVFJMX0xPR19BTklTT19BUFBMSUNBVElPTl9DT05UUk9M
TEVEX0RJU0FCTEVEIDAKLQotLyoKLSAqIElNQUdFX1NIQVJQRU5JTkcgYWRqdXN0cyB0aGUgc2hh
cnBuZXNzIG9mIHRoZSBkaXNwbGF5J3MgaW1hZ2UKLSAqIHF1YWxpdHkgYnkgYW1wbGlmeWluZyBo
aWdoIGZyZXF1ZW5jeSBjb250ZW50LiAgVmFsaWQgdmFsdWVzIHdpbGwKLSAqIG5vcm1hbGx5IGJl
IGluIHRoZSByYW5nZSBbMCwzMikuICBPbmx5IGF2YWlsYWJsZSBvbiBHZUZvcmNlRlggb3IKLSAq
IG5ld2VyLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9JTUFHRV9TSEFSUEVOSU5HIDUyIC8qIFJX
REcgKi8KLQotLyoKLSAqIE5WX0NUUkxfVFZfT1ZFUlNDQU4gYWRqdXN0cyB0aGUgYW1vdW50IG9m
IG92ZXJzY2FuIG9uIHRoZSBzcGVjaWZpZWQKLSAqIGRpc3BsYXkgZGV2aWNlLgotICovCi0KLSNk
ZWZpbmUgTlZfQ1RSTF9UVl9PVkVSU0NBTiA1MyAvKiBSV0RHICovCi0KLS8qCi0gKiBOVl9DVFJM
X1RWX0ZMSUNLRVJfRklMVEVSIGFkanVzdHMgdGhlIGFtb3VudCBvZiBmbGlja2VyIGZpbHRlciBv
bgotICogdGhlIHNwZWNpZmllZCBkaXNwbGF5IGRldmljZS4KLSAqLwotCi0jZGVmaW5lIE5WX0NU
UkxfVFZfRkxJQ0tFUl9GSUxURVIgNTQgLyogUldERyAqLwotCi0vKgotICogTlZfQ1RSTF9UVl9C
UklHSFRORVNTIGFkanVzdHMgdGhlIGFtb3VudCBvZiBicmlnaHRuZXNzIG9uIHRoZQotICogc3Bl
Y2lmaWVkIGRpc3BsYXkgZGV2aWNlLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9UVl9CUklHSFRO
RVNTIDU1IC8qIFJXREcgKi8KLQotLyoKLSAqIE5WX0NUUkxfVFZfSFVFIGFkanVzdHMgdGhlIGFt
b3VudCBvZiBodWUgb24gdGhlIHNwZWNpZmllZCBkaXNwbGF5Ci0gKiBkZXZpY2UuCi0gKi8KLQot
I2RlZmluZSBOVl9DVFJMX1RWX0hVRSA1NiAvKiBSV0RHICovCi0KLS8qCi0gKiBOVl9DVFJMX1RW
X0NPTlRSQVNUIGFkanVzdHMgdGhlIGFtb3VudCBvZiBjb250cmFzdCBvbiB0aGUgc3BlY2lmaWVk
Ci0gKiBkaXNwbGF5IGRldmljZS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfVFZfQ09OVFJBU1Qg
NTcgLyogUldERyAqLwotCi0vKgotICogTlZfQ1RSTF9UVl9TQVRVUkFUSU9OIGFkanVzdHMgdGhl
IGFtb3VudCBvZiBzYXR1cmF0aW9uIG9uIHRoZQotICogc3BlY2lmaWVkIGRpc3BsYXkgZGV2aWNl
LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9UVl9TQVRVUkFUSU9OIDU4IC8qIFJXREcgKi8KLQot
LyoKLSAqIE5WX0NUUkxfVFZfUkVTRVRfU0VUVElOR1MgLSB0aGlzIHdyaXRlLW9ubHkgYXR0cmli
dXRlIGNhbiBiZSB1c2VkCi0gKiB0byByZXF1ZXN0IHRoYXQgYWxsIFRWIFNldHRpbmdzIGJlIHJl
c2V0IHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzOwotICogdHlwaWNhbCB1c2FnZSB3b3VsZCBiZSB0
aGF0IHRoaXMgYXR0cmlidXRlIGJlIHNlbnQsIGFuZCB0aGVuIGFsbAotICogdGhlIFRWIGF0dHJp
YnV0ZXMgYmUgcXVlcmllZCB0byByZXRyaWV2ZSB0aGVpciBuZXcgdmFsdWVzLgotICovCi0KLSNk
ZWZpbmUgTlZfQ1RSTF9UVl9SRVNFVF9TRVRUSU5HUyA1OSAvKiAtV0RHICovCi0KLS8qCi0gKiBO
Vl9DVFJMX0dQVV9DT1JFX1RFTVBFUkFUVVJFIHJlcG9ydHMgdGhlIGN1cnJlbnQgY29yZSB0ZW1w
ZXJhdHVyZQotICogb2YgdGhlIEdQVSBkcml2aW5nIHRoZSBYIHNjcmVlbi4KLSAqLwotCi0jZGVm
aW5lIE5WX0NUUkxfR1BVX0NPUkVfVEVNUEVSQVRVUkUgNjAgLyogUi0tRyAqLwotCi0vKgotICog
TlZfQ1RSTF9HUFVfQ09SRV9USFJFU0hPTEQgcmVwb3J0cyB0aGUgY3VycmVudCBHUFUgY29yZSBz
bG93ZG93bgotICogdGhyZXNob2xkIHRlbXBlcmF0dXJlLCBOVl9DVFJMX0dQVV9ERUZBVUxUX0NP
UkVfVEhSRVNIT0xEIGFuZAotICogTlZfQ1RSTF9HUFVfTUFYX0NPUkVfVEhSRVNIT0xEIHJlcG9y
dCB0aGUgZGVmYXVsdCBhbmQgTUFYIGNvcmUKLSAqIHNsb3dkb3duIHRocmVzaG9sZCB0ZW1wZXJh
dHVyZXMuCi0gKgotICogTlZfQ1RSTF9HUFVfQ09SRV9USFJFU0hPTEQgcmVmbGVjdHMgdGhlIHRl
bXBlcmF0dXJlIGF0IHdoaWNoIHRoZQotICogR1BVIGlzIHRocm90dGxlZCB0byBwcmV2ZW50IG92
ZXJoZWF0aW5nLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfQ09SRV9USFJFU0hPTEQgNjEg
ICAgICAgICAvKiBSLS1HICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0RFRkFVTFRfQ09SRV9USFJF
U0hPTEQgNjIgLyogUi0tRyAqLwotI2RlZmluZSBOVl9DVFJMX0dQVV9NQVhfQ09SRV9USFJFU0hP
TEQgNjMgICAgIC8qIFItLUcgKi8KLQotLyoKLSAqIE5WX0NUUkxfQU1CSUVOVF9URU1QRVJBVFVS
RSByZXBvcnRzIHRoZSBjdXJyZW50IHRlbXBlcmF0dXJlIGluIHRoZQotICogaW1tZWRpYXRlIG5l
aWdoYm91cmhvb2Qgb2YgdGhlIEdQVSBkcml2aW5nIHRoZSBYIHNjcmVlbi4KLSAqLwotCi0jZGVm
aW5lIE5WX0NUUkxfQU1CSUVOVF9URU1QRVJBVFVSRSA2NCAvKiBSLS1HICovCi0KLS8qCi0gKiBO
Vl9DVFJMX1BCVUZGRVJfU0NBTk9VVF9TVVBQT1JURUQgLSByZXR1cm5zIHdoZXRoZXIgdGhpcyBY
IHNjcmVlbgotICogc3VwcG9ydHMgc2Nhbm91dCBvZiBGUCBwYnVmZmVyczsKLSAqCi0gKiBpZiB0
aGlzIHNjcmVlbiBkb2VzIG5vdCBzdXBwb3J0IFBCVUZGRVJfU0NBTk9VVCwgdGhlbiBhbGwgb3Ro
ZXIKLSAqIFBCVUZGRVJfU0NBTk9VVCBhdHRyaWJ1dGVzIGFyZSB1bmF2YWlsYWJsZS4KLSAqCi0g
KiBQQlVGRkVSX1NDQU5PVVQgaXMgc3VwcG9ydGVkIGlmIGFuZCBvbmx5IGlmOgotICogLSBUd2lu
dmlldyBpcyBjb25maWd1cmVkIHdpdGggY2xvbmUgbW9kZS4gIFRoZSBzZWNvbmRhcnkgc2NyZWVu
IGlzIHVzZWQgdG8KLSAqICAgc2Nhbm91dCB0aGUgcGJ1ZmZlci4KLSAqIC0gVGhlIGRlc2t0b3Ag
aXMgcnVubmluZyBpbiB3aXRoIDE2IGJpdHMgcGVyIHBpeGVsLgotICovCi0jZGVmaW5lIE5WX0NU
UkxfUEJVRkZFUl9TQ0FOT1VUX1NVUFBPUlRFRCA2NSAvKiBSLS0gKi8KLSNkZWZpbmUgTlZfQ1RS
TF9QQlVGRkVSX1NDQU5PVVRfRkFMU0UgMAotI2RlZmluZSBOVl9DVFJMX1BCVUZGRVJfU0NBTk9V
VF9UUlVFIDEKLQotLyoKLSAqIE5WX0NUUkxfUEJVRkZFUl9TQ0FOT1VUX1hJRCBpbmRpY2F0ZXMg
dGhlIFhJRCBvZiB0aGUgcGJ1ZmZlciB1c2VkIGZvcgotICogc2Nhbm91dC4KLSAqLwotI2RlZmlu
ZSBOVl9DVFJMX1BCVUZGRVJfU0NBTk9VVF9YSUQgNjYgLyogUlctICovCi0KLS8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKi8KLS8qCi0gKiBUaGUgTlZfQ1RSTF9HVk9fKiBpbnRlZ2VyIGF0dHJpYnV0ZXMgYXJl
IHVzZWQgdG8gY29uZmlndXJlIEdWTwotICogKEdyYXBoaWNzIHRvIFZpZGVvIE91dCkuICBUaGlz
IGZ1bmN0aW9uYWxpdHkgaXMgYXZhaWxhYmxlLCBmb3IKLSAqIGV4YW1wbGUsIG9uIHRoZSBRdWFk
cm8gRlggNDAwMCBTREkgZ3JhcGhpY3MgYm9hcmQuCi0gKgotICogVGhlIGZvbGxvd2luZyBpcyBh
IHR5cGljYWwgdXNhZ2UgcGF0dGVybiBmb3IgdGhlIEdWTyBhdHRyaWJ1dGVzOgotICoKLSAqIC0g
cXVlcnkgTlZfQ1RSTF9HVk9fU1VQUE9SVEVEIHRvIGRldGVybWluZSBpZiB0aGUgWCBzY3JlZW4g
c3VwcG9ydHMgR1YwLgotICoKLSAqIC0gc3BlY2lmeSBOVl9DVFJMX0dWT19TWU5DX01PREUgKG9u
ZSBvZiBGUkVFX1JVTk5JTkcsIEdFTkxPQ0ssIG9yCi0gKiBGUkFNRUxPQ0spOyBpZiB5b3Ugc3Bl
Y2lmeSBHRU5MT0NLIG9yIEZSQU1FTE9DSywgeW91IHNob3VsZCBhbHNvCi0gKiBzcGVjaWZ5IE5W
X0NUUkxfR1ZPX1NZTkNfU09VUkNFLgotICoKLSAqIC0gVXNlIE5WX0NUUkxfR1ZPX0NPTVBPU0lU
RV9TWU5DX0lOUFVUX0RFVEVDVEVEIGFuZAotICogTlZfQ1RSTF9HVk9fU0RJX1NZTkNfSU5QVVRf
REVURUNURUQgdG8gZGV0ZWN0IHdoYXQgaW5wdXQgc3luY3MgYXJlCi0gKiBwcmVzZW50LgotICoK
LSAqIChJZiBubyBhbmFsb2cgc3luYyBpcyBkZXRlY3RlZCBidXQgaXQgaXMga25vd24gdGhhdCBh
IHZhbGlkCi0gKiBiaS1sZXZlbCBvciB0cmktbGV2ZWwgc3luYyBpcyBjb25uZWN0ZWQgc2V0Ci0g
KiBOVl9DVFJMX0dWT19DT01QT1NJVEVfU1lOQ19JTlBVVF9ERVRFQ1RfTU9ERSBhcHByb3ByaWF0
ZWx5IGFuZAotICogcmV0ZXN0IHdpdGggTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX1NZTkNfSU5QVVRf
REVURUNURUQpLgotICoKLSAqIC0gaWYgc3luY2luZyB0byBpbnB1dCBzeW5jLCBxdWVyeSB0aGUK
LSAqIE5WX0NUUkxfR1ZJT19ERVRFQ1RFRF9WSURFT19GT1JNQVQgYXR0cmlidXRlOyBub3RlIHRo
YXQgSW5wdXQgdmlkZW8KLSAqIGZvcm1hdCBjYW4gb25seSBiZSBxdWVyaWVkIGFmdGVyIFNZTkNf
U09VUkNFIGlzIHNwZWNpZmllZC4KLSAqCi0gKiAtIHNwZWNpZnkgdGhlIE5WX0NUUkxfR1ZJT19S
RVFVRVNURURfVklERU9fRk9STUFUCi0gKgotICogLSBzcGVjaWZ5IHRoZSBOVl9DVFJMX0dWT19E
QVRBX0ZPUk1BVAotICoKLSAqIC0gc3BlY2lmeSBhbnkgY3VzdG9tIENvbG9yIFNwYWNlIENvbnZl
cnNpb24gKENTQykgbWF0cml4LCBvZmZzZXQsCi0gKiBhbmQgc2NhbGUgd2l0aCBYTlZDVFJMU2V0
R3ZvQ29sb3JDb252ZXJzaW9uKCkuCi0gKgotICogLSBpZiB1c2luZyB0aGUgR0xYX05WX3ZpZGVv
X291dCBleHRlbnNpb24gdG8gZGlzcGxheSBvbmUgb3IgbW9yZQotICogcGJ1ZmZlcnMsIGNhbGwg
Z2xYR2V0VmlkZW9EZXZpY2VOVigpIHRvIGxvY2sgdGhlIEdWTyBvdXRwdXQgZm9yIHVzZQotICog
YnkgdGhlIEdMWCBjbGllbnQ7IHRoZW4gYmluZCB0aGUgcGJ1ZmZlcihzKSB0byB0aGUgR1ZPIG91
dHB1dCB3aXRoCi0gKiBnbFhCaW5kVmlkZW9JbWFnZU5WKCkgYW5kIHNlbmQgcGJ1ZmZlcnMgdG8g
dGhlIEdWTyBvdXRwdXQgd2l0aAotICogZ2xYU2VuZFBidWZmZXJUb1ZpZGVvTlYoKTsgc2VlIHRo
ZSBHTFhfTlZfdmlkZW9fb3V0IHNwZWMgZm9yIG1vcmUKLSAqIGRldGFpbHMuCi0gKgotICogLSBp
ZiB1c2luZyB0aGUgR0xYX05WX3ByZXNlbnRfdmlkZW8gZXh0ZW5zaW9uLCBjYWxsCi0gKiBnbFhC
aW5kVmlkZW9EZXZpY2VOVigpIHRvIGJpbmQgdGhlIEdWTyB2aWRlbyBkZXZpY2UgdG8gY3VycmVu
dAotICogT3BlbkdMIGNvbnRleHQuCi0gKgotICogTm90ZSB0aGF0IHNldHRpbmcgbW9zdCBHVk8g
YXR0cmlidXRlcyBvbmx5IGNhdXNlcyB0aGUgdmFsdWUgdG8gYmUKLSAqIGNhY2hlZCBpbiB0aGUg
WCBzZXJ2ZXIuICBUaGUgdmFsdWVzIHdpbGwgYmUgZmx1c2hlZCB0byB0aGUgaGFyZHdhcmUKLSAq
IGVpdGhlciB3aGVuIHRoZSBuZXh0IE1ldGFNb2RlIGlzIHNldCB0aGF0IHVzZXMgdGhlIEdWTyBk
aXNwbGF5Ci0gKiBkZXZpY2UsIG9yIHdoZW4gYSBHTFggcGJ1ZmZlciBpcyBib3VuZCB0byB0aGUg
R1ZPIG91dHB1dCAod2l0aAotICogZ2xYQmluZFZpZGVvSW1hZ2VOVigpKS4KLSAqCi0gKiBOb3Rl
IHRoYXQgR0xYX05WX3ZpZGVvX291dC9HTFhfTlZfcHJlc2VudF92aWRlbyBhbmQgWCBzY3JlZW4g
dXNlCi0gKiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiAgSWYgYSBNZXRhTW9kZSBpcyBjdXJyZW50
bHkgdXNpbmcgdGhlIEdWTwotICogZGV2aWNlLCB0aGVuIGdsWEdldFZpZGVvRGV2aWNlTlYgYW5k
IGdsWEJpbmRWaWRlb0ltYWdlTlYoKSB3aWxsCi0gKiBmYWlsLiAgU2ltaWxhcmx5LCBpZiBhIEdM
WCBjbGllbnQgaGFzIGxvY2tlZCB0aGUgR1ZPIG91dHB1dCAodmlhCi0gKiBnbFhHZXRWaWRlb0Rl
dmljZU5WIG9yIGdsWEJpbmRWaWRlb0ltYWdlTlYpLCB0aGVuIHNldHRpbmcgYQotICogTWV0YU1v
ZGUgdGhhdCB1c2VzIHRoZSBHVk8gZGV2aWNlIHdpbGwgZmFpbC4gIFRoZQotICogTlZfQ1RSTF9H
Vk9fR0xYX0xPQ0tFRCBldmVudCB3aWxsIGJlIHNlbnQgd2hlbiBhIEdMWCBjbGllbnQgbG9ja3MK
LSAqIHRoZSBHVk8gb3V0cHV0LgotICoKLSAqLwotCi0vKgotICogTlZfQ1RSTF9HVk9fU1VQUE9S
VEVEIC0gcmV0dXJucyB3aGV0aGVyIHRoaXMgWCBzY3JlZW4gc3VwcG9ydHMgR1ZPOwotICogaWYg
dGhpcyBzY3JlZW4gZG9lcyBub3Qgc3VwcG9ydCBHVk8gb3V0cHV0LCB0aGVuIGFsbCBvdGhlciBH
Vk8KLSAqIGF0dHJpYnV0ZXMgYXJlIHVuYXZhaWxhYmxlLgotICovCi0KLSNkZWZpbmUgTlZfQ1RS
TF9HVk9fU1VQUE9SVEVEIDY3IC8qIFItLSAqLwotI2RlZmluZSBOVl9DVFJMX0dWT19TVVBQT1JU
RURfRkFMU0UgMAotI2RlZmluZSBOVl9DVFJMX0dWT19TVVBQT1JURURfVFJVRSAxCi0KLS8qCi0g
KiBOVl9DVFJMX0dWT19TWU5DX01PREUgLSBzZWxlY3RzIHRoZSBHVk8gc3luYyBtb2RlOyBwb3Nz
aWJsZSB2YWx1ZXMKLSAqIGFyZToKLSAqCi0gKiBGUkVFX1JVTk5JTkcgLSBHVk8gZG9lcyBub3Qg
c3luYyB0byBhbnkgZXh0ZXJuYWwgc2lnbmFsCi0gKgotICogR0VOTE9DSyAtIHRoZSBHVk8gb3V0
cHV0IGlzIGdlbmxvY2tlZCB0byBhbiBpbmNvbWluZyBzeW5jIHNpZ25hbDsKLSAqIGdlbmxvY2tp
bmcgbG9ja3MgYXQgaHN5bmMuICBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIG91dHB1dCB2aWRlbwot
ICogZm9ybWF0IGV4YWN0bHkgbWF0Y2ggdGhlIGluY29taW5nIHN5bmMgdmlkZW8gZm9ybWF0Lgot
ICoKLSAqIEZSQU1FTE9DSyAtIHRoZSBHVk8gb3V0cHV0IGlzIGZyYW1lIGxvY2tlZCB0byBhbiBp
bmNvbWluZyBzeW5jCi0gKiBzaWduYWw7IGZyYW1lIGxvY2tpbmcgbG9ja3MgYXQgdnN5bmMuICBU
aGlzIHJlcXVpcmVzIHRoYXQgdGhlIG91dHB1dAotICogdmlkZW8gZm9ybWF0IGhhdmUgdGhlIHNh
bWUgcmVmcmVzaCByYXRlIGFzIHRoZSBpbmNvbWluZyBzeW5jIHZpZGVvCi0gKiBmb3JtYXQuCi0g
Ki8KLQotI2RlZmluZSBOVl9DVFJMX0dWT19TWU5DX01PREUgNjggLyogUlctICovCi0jZGVmaW5l
IE5WX0NUUkxfR1ZPX1NZTkNfTU9ERV9GUkVFX1JVTk5JTkcgMAotI2RlZmluZSBOVl9DVFJMX0dW
T19TWU5DX01PREVfR0VOTE9DSyAxCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX1NZTkNfTU9ERV9GUkFN
RUxPQ0sgMgotCi0vKgotICogTlZfQ1RSTF9HVk9fU1lOQ19TT1VSQ0UgLSBpZiBOVl9DVFJMX0dW
T19TWU5DX01PREUgaXMgc2V0IHRvIGVpdGhlcgotICogR0VOTE9DSyBvciBGUkFNRUxPQ0ssIHRo
aXMgY29udHJvbHMgd2hpY2ggc3luYyBzb3VyY2UgaXMgdXNlZCBhcwotICogdGhlIGluY29taW5n
IHN5bmMgc2lnbmFsIChlaXRoZXIgQ29tcG9zaXRlIG9yIFNESSkuICBJZgotICogTlZfQ1RSTF9H
Vk9fU1lOQ19NT0RFIGlzIEZSRUVfUlVOTklORywgdGhpcyBhdHRyaWJ1dGUgaGFzIG5vCi0gKiBl
ZmZlY3QuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWT19TWU5DX1NPVVJDRSA2OSAvKiBSVy0g
Ki8KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fU1lOQ19TT1VSQ0VfQ09NUE9TSVRFIDAKLSNkZWZpbmUg
TlZfQ1RSTF9HVk9fU1lOQ19TT1VSQ0VfU0RJIDEKLQotLyoKLSAqIE5WX0NUUkxfR1ZJT19SRVFV
RVNURURfVklERU9fRk9STUFUIC0gc3BlY2lmaWVzIHRoZSBkZXNpcmVkIG91dHB1dCB2aWRlbwot
ICogZm9ybWF0IGZvciBHVk8gZGV2aWNlcyBvciB0aGUgZGVzaXJlZCBpbnB1dCB2aWRlbyBmb3Jt
YXQgZm9yIEdWSSBkZXZpY2VzLgotICoKLSAqIE5vdGUgdGhhdCBmb3IgR1ZPLCB0aGUgdmFsaWQg
dmlkZW8gZm9ybWF0cyBtYXkgdmFyeSBkZXBlbmRpbmcgb24KLSAqIHRoZSBOVl9DVFJMX0dWT19T
WU5DX01PREUgYW5kIHRoZSBpbmNvbWluZyBzeW5jIHZpZGVvIGZvcm1hdC4gIFNlZQotICogdGhl
IGRlZmluaXRpb24gb2YgTlZfQ1RSTF9HVk9fU1lOQ19NT0RFLgotICoKLSAqIE5vdGUgdGhhdCB3
aGVuIHF1ZXJ5aW5nIHRoZSBWYWxpZFZhbHVlcyBmb3IgdGhpcyBkYXRhIHR5cGUsIHRoZQotICog
dmFsdWVzIGFyZSByZXBvcnRlZCBhcyBiaXRzIHdpdGhpbiBhIGJpdG1hc2sKLSAqIChBVFRSSUJV
VEVfVFlQRV9JTlRfQklUUyk7IHVuZm9ydHVuYXRlbHksIHRoZXJlIGFyZSBtb3JlIHZhbGlkCi0g
KiB2YWx1ZSBiaXRzIHRoYW4gd2lsbCBmaXQgaW4gYSBzaW5nbGUgMzItYml0IHZhbHVlLiAgVG8g
c29sdmUgdGhpcywKLSAqIHF1ZXJ5IHRoZSBWYWxpZFZhbHVlcyBmb3IgTlZfQ1RSTF9HVklPX1JF
UVVFU1RFRF9WSURFT19GT1JNQVQgdG8KLSAqIGNoZWNrIHdoaWNoIG9mIHRoZSBmaXJzdCAzMSBW
SURFT19GT1JNQVRTIGFyZSB2YWxpZCwgcXVlcnkgdGhlCi0gKiBWYWxpZFZhbHVlcyBmb3IgTlZf
Q1RSTF9HVklPX1JFUVVFU1RFRF9WSURFT19GT1JNQVQyIHRvIGNoZWNrIHdoaWNoCi0gKiBvZiB0
aGUgMzItNjMgVklERU9fRk9STUFUUyBhcmUgdmFsaWQsIGFuZCBxdWVyeSB0aGUgVmFsaWRWYWx1
ZXMgb2YKLSAqIE5WX0NUUkxfR1ZJT19SRVFVRVNURURfVklERU9fRk9STUFUMyB0byBjaGVjayB3
aGljaCBvZiB0aGUgNjQtOTUKLSAqIFZJREVPX0ZPUk1BVFMgYXJlIHZhbGlkLgotICoKLSAqIE5v
dGU6IFNldHRpbmcgdGhpcyBhdHRyaWJ1dGUgb24gYSBHVkkgZGV2aWNlIG1heSBhbHNvIHJlc3Vs
dCBpbiB0aGUKLSAqICAgICAgIGZvbGxvd2luZyBOVi1DT05UUk9MIGF0dHJpYnV0ZXMgYmVpbmcg
cmVzZXQgb24gdGhhdCBkZXZpY2UgKHRvCi0gKiAgICAgICBlbnN1cmUgdGhlIGNvbmZpZ3VyYXRp
b24gcmVtYWlucyB2YWxpZCk6Ci0gKiAgICAgICAgICAgTlZfQ1RSTF9HVklfUkVRVUVTVEVEX1NU
UkVBTV9CSVRTX1BFUl9DT01QT05FTlQKLSAqICAgICAgICAgICBOVl9DVFJMX0dWSV9SRVFVRVNU
RURfU1RSRUFNX0NPTVBPTkVOVF9TQU1QTElORwotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HVklP
X1JFUVVFU1RFRF9WSURFT19GT1JNQVQgNzAgLyogUlctLUkgKi8KLQotI2RlZmluZSBOVl9DVFJM
X0dWSU9fVklERU9fRk9STUFUX05PTkUgMAotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9S
TUFUXzQ4N0lfNTlfOTRfU01QVEUyNTlfTlRTQyAxCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURF
T19GT1JNQVRfNTc2SV81MF8wMF9TTVBURTI1OV9QQUwgMgotI2RlZmluZSBOVl9DVFJMX0dWSU9f
VklERU9fRk9STUFUXzcyMFBfNTlfOTRfU01QVEUyOTYgMwotI2RlZmluZSBOVl9DVFJMX0dWSU9f
VklERU9fRk9STUFUXzcyMFBfNjBfMDBfU01QVEUyOTYgNAotI2RlZmluZSBOVl9DVFJMX0dWSU9f
VklERU9fRk9STUFUXzEwMzVJXzU5Xzk0X1NNUFRFMjYwIDUKLSNkZWZpbmUgTlZfQ1RSTF9HVklP
X1ZJREVPX0ZPUk1BVF8xMDM1SV82MF8wMF9TTVBURTI2MCA2Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJ
T19WSURFT19GT1JNQVRfMTA4MElfNTBfMDBfU01QVEUyOTUgNwotI2RlZmluZSBOVl9DVFJMX0dW
SU9fVklERU9fRk9STUFUXzEwODBJXzUwXzAwX1NNUFRFMjc0IDgKLSNkZWZpbmUgTlZfQ1RSTF9H
VklPX1ZJREVPX0ZPUk1BVF8xMDgwSV81OV85NF9TTVBURTI3NCA5Ci0jZGVmaW5lIE5WX0NUUkxf
R1ZJT19WSURFT19GT1JNQVRfMTA4MElfNjBfMDBfU01QVEUyNzQgMTAKLSNkZWZpbmUgTlZfQ1RS
TF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwUF8yM185NzZfU01QVEUyNzQgMTEKLSNkZWZpbmUgTlZf
Q1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwUF8yNF8wMF9TTVBURTI3NCAxMgotI2RlZmluZSBO
Vl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBQXzI1XzAwX1NNUFRFMjc0IDEzCi0jZGVmaW5l
IE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MFBfMjlfOTdfU01QVEUyNzQgMTQKLSNkZWZp
bmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwUF8zMF8wMF9TTVBURTI3NCAxNQotI2Rl
ZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzcyMFBfNTBfMDBfU01QVEUyOTYgMTYKLSNk
ZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwSV80OF8wMF9TTVBURTI3NCAxNwot
I2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBJXzQ3Xzk2X1NNUFRFMjc0IDE4
Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfNzIwUF8zMF8wMF9TTVBURTI5NiAx
OQotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzcyMFBfMjlfOTdfU01QVEUyOTYg
MjAKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF83MjBQXzI1XzAwX1NNUFRFMjk2
IDIxCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfNzIwUF8yNF8wMF9TTVBURTI5
NiAyMgotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzcyMFBfMjNfOThfU01QVEUy
OTYgMjMKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwUFNGXzI1XzAwX1NN
UFRFMjc0IDI0Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MFBTRl8yOV85
N19TTVBURTI3NCAyNQotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBQU0Zf
MzBfMDBfU01QVEUyNzQgMjYKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgw
UFNGXzI0XzAwX1NNUFRFMjc0IDI3Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRf
MTA4MFBTRl8yM185OF9TTVBURTI3NCAyOAotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9S
TUFUXzIwNDhQXzMwXzAwX1NNUFRFMzcyIDI5Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19G
T1JNQVRfMjA0OFBfMjlfOTdfU01QVEUzNzIgMzAKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVP
X0ZPUk1BVF8yMDQ4SV82MF8wMF9TTVBURTM3MiAzMQotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklE
RU9fRk9STUFUXzIwNDhJXzU5Xzk0X1NNUFRFMzcyIDMyCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19W
SURFT19GT1JNQVRfMjA0OFBfMjVfMDBfU01QVEUzNzIgMzMKLSNkZWZpbmUgTlZfQ1RSTF9HVklP
X1ZJREVPX0ZPUk1BVF8yMDQ4SV81MF8wMF9TTVBURTM3MiAzNAotI2RlZmluZSBOVl9DVFJMX0dW
SU9fVklERU9fRk9STUFUXzIwNDhQXzI0XzAwX1NNUFRFMzcyIDM1Ci0jZGVmaW5lIE5WX0NUUkxf
R1ZJT19WSURFT19GT1JNQVRfMjA0OFBfMjNfOThfU01QVEUzNzIgMzYKLSNkZWZpbmUgTlZfQ1RS
TF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4SV80OF8wMF9TTVBURTM3MiAzNwotI2RlZmluZSBOVl9D
VFJMX0dWSU9fVklERU9fRk9STUFUXzIwNDhJXzQ3Xzk2X1NNUFRFMzcyIDM4Ci0jZGVmaW5lIE5W
X0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MFBfNTBfMDBfM0dfTEVWRUxfQV9TTVBURTI3NCAz
OQotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBQXzU5Xzk0XzNHX0xFVkVM
X0FfU01QVEUyNzQgNDAKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgwUF82
MF8wMF8zR19MRVZFTF9BX1NNUFRFMjc0IDQxCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19G
T1JNQVRfMTA4MFBfNjBfMDBfM0dfTEVWRUxfQl9TTVBURTI3NCA0MgotI2RlZmluZSBOVl9DVFJM
X0dWSU9fVklERU9fRk9STUFUXzEwODBJXzYwXzAwXzNHX0xFVkVMX0JfU01QVEUyNzQgNDMKLSNk
ZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4SV82MF8wMF8zR19MRVZFTF9CX1NN
UFRFMzcyIDQ0Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MFBfNTBfMDBf
M0dfTEVWRUxfQl9TTVBURTI3NCA0NQotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFU
XzEwODBJXzUwXzAwXzNHX0xFVkVMX0JfU01QVEUyNzQgNDYKLSNkZWZpbmUgTlZfQ1RSTF9HVklP
X1ZJREVPX0ZPUk1BVF8yMDQ4SV81MF8wMF8zR19MRVZFTF9CX1NNUFRFMzcyIDQ3Ci0jZGVmaW5l
IE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MFBfMzBfMDBfM0dfTEVWRUxfQl9TTVBURTI3
NCA0OAotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzIwNDhQXzMwXzAwXzNHX0xF
VkVMX0JfU01QVEUzNzIgNDkKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8xMDgw
UF8yNV8wMF8zR19MRVZFTF9CX1NNUFRFMjc0IDUwCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURF
T19GT1JNQVRfMjA0OFBfMjVfMDBfM0dfTEVWRUxfQl9TTVBURTM3MiA1MQotI2RlZmluZSBOVl9D
VFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBQXzI0XzAwXzNHX0xFVkVMX0JfU01QVEUyNzQgNTIK
LSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4UF8yNF8wMF8zR19MRVZFTF9C
X1NNUFRFMzcyIDUzCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MElfNDhf
MDBfM0dfTEVWRUxfQl9TTVBURTI3NCA1NAotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9S
TUFUXzIwNDhJXzQ4XzAwXzNHX0xFVkVMX0JfU01QVEUzNzIgNTUKLSNkZWZpbmUgTlZfQ1RSTF9H
VklPX1ZJREVPX0ZPUk1BVF8xMDgwUF81OV85NF8zR19MRVZFTF9CX1NNUFRFMjc0IDU2Ci0jZGVm
aW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MElfNTlfOTRfM0dfTEVWRUxfQl9TTVBU
RTI3NCA1NwotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzIwNDhJXzU5Xzk0XzNH
X0xFVkVMX0JfU01QVEUzNzIgNTgKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8x
MDgwUF8yOV85N18zR19MRVZFTF9CX1NNUFRFMjc0IDU5Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJT19W
SURFT19GT1JNQVRfMjA0OFBfMjlfOTdfM0dfTEVWRUxfQl9TTVBURTM3MiA2MAotI2RlZmluZSBO
Vl9DVFJMX0dWSU9fVklERU9fRk9STUFUXzEwODBQXzIzXzk4XzNHX0xFVkVMX0JfU01QVEUyNzQg
NjEKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8yMDQ4UF8yM185OF8zR19MRVZF
TF9CX1NNUFRFMzcyIDYyCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfMTA4MElf
NDdfOTZfM0dfTEVWRUxfQl9TTVBURTI3NCA2MwotI2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9f
Rk9STUFUXzIwNDhJXzQ3Xzk2XzNHX0xFVkVMX0JfU01QVEUzNzIgNjQKLQotLyoKLSAqIFRoZSBm
b2xsb3dpbmcgYXJlIGRlcHJlY2F0ZWQ7IE5WX0NUUkxfR1ZJT19SRVFVRVNURURfVklERU9fRk9S
TUFUIGFuZCB0aGUKLSAqIGNvcnJlc3BvbmRpbmcgTlZfQ1RSTF9HVklPXyogZm9ybWF0cyBzaG91
bGQgYmUgdXNlZCBpbnN0ZWFkLgotICovCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX09VVFBVVF9WSURF
T19GT1JNQVQgNzAgLyogUlctICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFU
X05PTkUgMAotI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfNDg3SV81OV85NF9TTVBU
RTI1OV9OVFNDIDEKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzU3NklfNTBfMDBf
U01QVEUyNTlfUEFMIDIKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzcyMFBfNTlf
OTRfU01QVEUyOTYgMwotI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfNzIwUF82MF8w
MF9TTVBURTI5NiA0Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8xMDM1SV81OV85
NF9TTVBURTI2MCA1Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8xMDM1SV82MF8w
MF9TTVBURTI2MCA2Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8xMDgwSV81MF8w
MF9TTVBURTI5NSA3Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8xMDgwSV81MF8w
MF9TTVBURTI3NCA4Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8xMDgwSV81OV85
NF9TTVBURTI3NCA5Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8xMDgwSV82MF8w
MF9TTVBURTI3NCAxMAotI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMTA4MFBfMjNf
OTc2X1NNUFRFMjc0IDExCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8xMDgwUF8y
NF8wMF9TTVBURTI3NCAxMgotI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMTA4MFBf
MjVfMDBfU01QVEUyNzQgMTMKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEwODBQ
XzI5Xzk3X1NNUFRFMjc0IDE0Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8xMDgw
UF8zMF8wMF9TTVBURTI3NCAxNQotI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfNzIw
UF81MF8wMF9TTVBURTI5NiAxNgotI2RlZmluZSBOVl9DVFJMX0dWT19WSURFT19GT1JNQVRfMTA4
MElfNDhfMDBfU01QVEUyNzQgMTcKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9STUFUXzEw
ODBJXzQ3Xzk2X1NNUFRFMjc0IDE4Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF83
MjBQXzMwXzAwX1NNUFRFMjk2IDE5Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF83
MjBQXzI5Xzk3X1NNUFRFMjk2IDIwCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF83
MjBQXzI1XzAwX1NNUFRFMjk2IDIxCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF83
MjBQXzI0XzAwX1NNUFRFMjk2IDIyCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF83
MjBQXzIzXzk4X1NNUFRFMjk2IDIzCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8x
MDgwUFNGXzI1XzAwX1NNUFRFMjc0IDI0Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZPUk1B
VF8xMDgwUFNGXzI5Xzk3X1NNUFRFMjc0IDI1Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX0ZP
Uk1BVF8xMDgwUFNGXzMwXzAwX1NNUFRFMjc0IDI2Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVP
X0ZPUk1BVF8xMDgwUFNGXzI0XzAwX1NNUFRFMjc0IDI3Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJ
REVPX0ZPUk1BVF8xMDgwUFNGXzIzXzk4X1NNUFRFMjc0IDI4Ci0jZGVmaW5lIE5WX0NUUkxfR1ZP
X1ZJREVPX0ZPUk1BVF8yMDQ4UF8zMF8wMF9TTVBURTM3MiAyOQotI2RlZmluZSBOVl9DVFJMX0dW
T19WSURFT19GT1JNQVRfMjA0OFBfMjlfOTdfU01QVEUzNzIgMzAKLSNkZWZpbmUgTlZfQ1RSTF9H
Vk9fVklERU9fRk9STUFUXzIwNDhJXzYwXzAwX1NNUFRFMzcyIDMxCi0jZGVmaW5lIE5WX0NUUkxf
R1ZPX1ZJREVPX0ZPUk1BVF8yMDQ4SV81OV85NF9TTVBURTM3MiAzMgotI2RlZmluZSBOVl9DVFJM
X0dWT19WSURFT19GT1JNQVRfMjA0OFBfMjVfMDBfU01QVEUzNzIgMzMKLSNkZWZpbmUgTlZfQ1RS
TF9HVk9fVklERU9fRk9STUFUXzIwNDhJXzUwXzAwX1NNUFRFMzcyIDM0Ci0jZGVmaW5lIE5WX0NU
UkxfR1ZPX1ZJREVPX0ZPUk1BVF8yMDQ4UF8yNF8wMF9TTVBURTM3MiAzNQotI2RlZmluZSBOVl9D
VFJMX0dWT19WSURFT19GT1JNQVRfMjA0OFBfMjNfOThfU01QVEUzNzIgMzYKLSNkZWZpbmUgTlZf
Q1RSTF9HVk9fVklERU9fRk9STUFUXzIwNDhJXzQ4XzAwX1NNUFRFMzcyIDM3Ci0jZGVmaW5lIE5W
X0NUUkxfR1ZPX1ZJREVPX0ZPUk1BVF8yMDQ4SV80N185Nl9TTVBURTM3MiAzOAotCi0vKgotICog
TlZfQ1RSTF9HVklPX0RFVEVDVEVEX1ZJREVPX0ZPUk1BVCAtIGluZGljYXRlcyB0aGUgaW5wdXQg
dmlkZW8gZm9ybWF0Ci0gKiBkZXRlY3RlZCBmb3IgR1ZPIG9yIEdWSSBkZXZpY2VzOyB0aGUgcG9z
c2libGUgdmFsdWVzIGFyZSB0aGUKLSAqIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVQgY29uc3Rh
bnRzLgotICoKLSAqIEZvciBHVkkgZGV2aWNlcywgdGhlIGphY2sgbnVtYmVyIHNob3VsZCBiZSBz
cGVjaWZpZWQgaW4gdGhlIGxvd2VyCi0gKiAxNiBiaXRzIG9mIHRoZSAiZGlzcGxheV9tYXNrIiBw
YXJhbWV0ZXIsIHdoaWxlIHRoZSBjaGFubmVsIG51bWJlciBzaG91bGQgYmUKLSAqIHNwZWNpZmll
ZCBpbiB0aGUgdXBwZXIgMTYgYml0cy4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19ERVRF
Q1RFRF9WSURFT19GT1JNQVQgNzEgLyogUi0tSSAqLwotCi0vKgotICogVGhlIGZvbGxvd2luZyBp
cyBkZXByZWNhdGVkLiAgVXNlIE5WX0NUUkxfR1ZJT19ERVRFQ1RFRF9WSURFT19GT1JNQVQsCi0g
KiBpbnN0ZWFkLgotICovCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0lOUFVUX1ZJREVPX0ZPUk1BVCA3
MSAvKiBSLS0gKi8KLQotLyoKLSAqIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUIC0gVGhpcyBjb250
cm9scyBob3cgdGhlIGRhdGEgaW4gdGhlIHNvdXJjZQotICogKGVpdGhlciB0aGUgWCBzY3JlZW4g
b3IgdGhlIEdMWCBwYnVmZmVyKSBpcyBpbnRlcnByZXR0ZWQgYW5kCi0gKiBkaXNwbGF5ZWQuCi0g
KgotICogTm90ZTogc29tZSBvZiB0aGUgYmVsb3cgREFUQV9GT1JNQVRTIGhhdmUgYmVlbiByZW5h
bWVkLiAgRm9yCi0gKiBleGFtcGxlLCBSOEc4QjhfVE9fUkdCNDQ0IGhhcyBiZWVuIHJlbmFtZWQg
dG8gWDhYOFg4XzQ0NF9QQVNTVEhSVS4KLSAqIFRoaXMgaXMgdG8gbW9yZSBhY2N1cmF0ZWx5IHJl
ZmxlY3QgREFUQV9GT1JNQVRTIHdoZXJlIHRoZQotICogcGVyLWNoYW5uZWwgZGF0YSBjb3VsZCBi
ZSBlaXRoZXIgUkdCIG9yIFlDckNiIC0tIHRoZSBwb2ludCBpcyB0aGF0Ci0gKiB0aGUgZHJpdmVy
IGFuZCBHVk8gaGFyZHdhcmUgZG8gbm90IHBlcmZvcm0gYW55IGltcGxpY2l0IGNvbG9yIHNwYWNl
Ci0gKiBjb252ZXJzaW9uIG9uIHRoZSBkYXRhOyBpdCBpcyBwYXNzZWQgdGhyb3VnaCB0byB0aGUg
U0RJIG91dC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUIDcyIC8qIFJX
LSAqLwotI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9SOEc4QjhfVE9fWUNSQ0I0NDQg
MAotI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9SOEc4QjhBOF9UT19ZQ1JDQkE0NDQ0
IDEKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfUjhHOEI4WjEwX1RPX1lDUkNCWjQ0
NDQgMgotI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9SOEc4QjhfVE9fWUNSQ0I0MjIg
MwotI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9SOEc4QjhBOF9UT19ZQ1JDQkE0MjI0
IDQKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfUjhHOEI4WjEwX1RPX1lDUkNCWjQy
MjQgNQotI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9SOEc4QjhfVE9fUkdCNDQ0IDYg
IC8vIHJlbmFtZWQKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfWDhYOFg4XzQ0NF9Q
QVNTVEhSVSA2Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1I4RzhCOEE4X1RPX1JH
QkE0NDQ0IDcgIC8vIHJlbmFtZWQKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfWDhY
OFg4QThfNDQ0NF9QQVNTVEhSVSA3Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1I4
RzhCOFoxMF9UT19SR0JaNDQ0NCA4ICAvLyByZW5hbWVkCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0RB
VEFfRk9STUFUX1g4WDhYOFo4XzQ0NDRfUEFTU1RIUlUgOAotI2RlZmluZSBOVl9DVFJMX0dWT19E
QVRBX0ZPUk1BVF9ZMTBDUjEwQ0IxMF9UT19ZQ1JDQjQ0NCA5ICAvLyByZW5hbWVkCi0jZGVmaW5l
IE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1gxMFgxMFgxMF80NDRfUEFTU1RIUlUgOQotI2RlZmlu
ZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9ZMTBDUjhDQjhfVE9fWUNSQ0I0NDQgMTAgIC8vIHJl
bmFtZWQKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfWDEwWDhYOF80NDRfUEFTU1RI
UlUgMTAKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfWTEwQ1I4Q0I4QTEwX1RPX1lD
UkNCQTQ0NDQgMTEgIC8vIHJlbmFtZWQKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRf
WDEwWDhYOEExMF80NDQ0X1BBU1NUSFJVIDExCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9S
TUFUX1kxMENSOENCOFoxMF9UT19ZQ1JDQlo0NDQ0IDEyICAvLyByZW5hbWVkCi0jZGVmaW5lIE5W
X0NUUkxfR1ZPX0RBVEFfRk9STUFUX1gxMFg4WDhaMTBfNDQ0NF9QQVNTVEhSVSAxMgotI2RlZmlu
ZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9EVUFMX1I4RzhCOF9UT19EVUFMX1lDUkNCNDIyIDEz
Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX0RVQUxfWThDUjhDQjhfVE9fRFVBTF9Z
Q1JDQjQyMiAxNCAgLy8gcmVuYW1lZAotI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9E
VUFMX1g4WDhYOF9UT19EVUFMXzQyMl9QQVNTVEhSVSAxNAotI2RlZmluZSBOVl9DVFJMX0dWT19E
QVRBX0ZPUk1BVF9SMTBHMTBCMTBfVE9fWUNSQ0I0MjIgMTUKLSNkZWZpbmUgTlZfQ1RSTF9HVk9f
REFUQV9GT1JNQVRfUjEwRzEwQjEwX1RPX1lDUkNCNDQ0IDE2Ci0jZGVmaW5lIE5WX0NUUkxfR1ZP
X0RBVEFfRk9STUFUX1kxMkNSMTJDQjEyX1RPX1lDUkNCNDQ0IDE3ICAvLyByZW5hbWVkCi0jZGVm
aW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1gxMlgxMlgxMl80NDRfUEFTU1RIUlUgMTcKLSNk
ZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfUjEyRzEyQjEyX1RPX1lDUkNCNDQ0IDE4Ci0j
ZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1g4WDhYOF80MjJfUEFTU1RIUlUgMTkKLSNk
ZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfWDhYOFg4QThfNDIyNF9QQVNTVEhSVSAyMAot
I2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9YOFg4WDhaOF80MjI0X1BBU1NUSFJVIDIx
Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1gxMFgxMFgxMF80MjJfUEFTU1RIUlUg
MjIKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfWDEwWDhYOF80MjJfUEFTU1RIUlUg
MjMKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fREFUQV9GT1JNQVRfWDEwWDhYOEExMF80MjI0X1BBU1NU
SFJVIDI0Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1gxMFg4WDhaMTBfNDIyNF9Q
QVNTVEhSVSAyNQotI2RlZmluZSBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVF9YMTJYMTJYMTJfNDIy
X1BBU1NUSFJVIDI2Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUX1IxMkcxMkIxMl9U
T19ZQ1JDQjQyMiAyNwotCi0vKgotICogTlZfQ1RSTF9HVk9fRElTUExBWV9YX1NDUkVFTiAtIG5v
IGxvbmdlciBzdXBwb3J0ZWQKLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0RJU1BMQVlfWF9T
Q1JFRU4gNzMgLyogUlctICovCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0RJU1BMQVlfWF9TQ1JFRU5f
RU5BQkxFIDEKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fRElTUExBWV9YX1NDUkVFTl9ESVNBQkxFIDAK
LQotLyoKLSAqIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9TWU5DX0lOUFVUX0RFVEVDVEVEIC0gaW5k
aWNhdGVzIHdoZXRoZXIKLSAqIENvbXBvc2l0ZSBTeW5jIGlucHV0IGlzIGRldGVjdGVkLgotICov
Ci0KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX1NZTkNfSU5QVVRfREVURUNURUQgNzQg
LyogUi0tICovCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9TWU5DX0lOUFVUX0RFVEVD
VEVEX0ZBTFNFIDAKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX1NZTkNfSU5QVVRfREVU
RUNURURfVFJVRSAxCi0KLS8qCi0gKiBOVl9DVFJMX0dWT19DT01QT1NJVEVfU1lOQ19JTlBVVF9E
RVRFQ1RfTU9ERSAtIGdldC9zZXQgdGhlCi0gKiBDb21wb3NpdGUgU3luYyBpbnB1dCBkZXRlY3Qg
bW9kZS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9TWU5DX0lOUFVUX0RF
VEVDVF9NT0RFIDc1IC8qIFJXLSAqLwotI2RlZmluZSBOVl9DVFJMX0dWT19DT01QT1NJVEVfU1lO
Q19JTlBVVF9ERVRFQ1RfTU9ERV9BVVRPIDAKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRF
X1NZTkNfSU5QVVRfREVURUNUX01PREVfQklfTEVWRUwgMQotI2RlZmluZSBOVl9DVFJMX0dWT19D
T01QT1NJVEVfU1lOQ19JTlBVVF9ERVRFQ1RfTU9ERV9UUklfTEVWRUwgMgotCi0vKgotICogTlZf
Q1RSTF9HVk9fU1lOQ19JTlBVVF9ERVRFQ1RFRCAtIGluZGljYXRlcyB3aGV0aGVyIFNESSBTeW5j
IGlucHV0Ci0gKiBpcyBkZXRlY3RlZCwgYW5kIHdoYXQgdHlwZS4KLSAqLwotCi0jZGVmaW5lIE5W
X0NUUkxfR1ZPX1NESV9TWU5DX0lOUFVUX0RFVEVDVEVEIDc2IC8qIFItLSAqLwotI2RlZmluZSBO
Vl9DVFJMX0dWT19TRElfU1lOQ19JTlBVVF9ERVRFQ1RFRF9OT05FIDAKLSNkZWZpbmUgTlZfQ1RS
TF9HVk9fU0RJX1NZTkNfSU5QVVRfREVURUNURURfSEQgMQotI2RlZmluZSBOVl9DVFJMX0dWT19T
RElfU1lOQ19JTlBVVF9ERVRFQ1RFRF9TRCAyCi0KLS8qCi0gKiBOVl9DVFJMX0dWT19WSURFT19P
VVRQVVRTIC0gaW5kaWNhdGVzIHdoaWNoIEdWTyB2aWRlbyBvdXRwdXQKLSAqIGNvbm5lY3RvcnMg
YXJlIGN1cnJlbnRseSBvdXRwdXRpbmcgZGF0YS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZP
X1ZJREVPX09VVFBVVFMgNzcgLyogUi0tICovCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX09V
VFBVVFNfTk9ORSAwCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX1ZJREVPX09VVFBVVFNfVklERU8xIDEK
LSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fT1VUUFVUU19WSURFTzIgMgotI2RlZmluZSBOVl9D
VFJMX0dWT19WSURFT19PVVRQVVRTX1ZJREVPX0JPVEggMwotCi0vKgotICogTlZfQ1RSTF9HVk9f
RlBHQV9WRVJTSU9OIC0gaW5kaWNhdGVzIHRoZSB2ZXJzaW9uIG9mIHRoZSBGaXJtd2FyZSBvbgot
ICogdGhlIEdWTyBkZXZpY2UuICBEZXByZWNhdGVkOyB1c2UKLSAqIE5WX0NUUkxfU1RSSU5HX0dW
SU9fRklSTVdBUkVfVkVSU0lPTiBpbnN0ZWFkLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HVk9f
RklSTVdBUkVfVkVSU0lPTiA3OCAvKiBSLS0gKi8KLQotLyoKLSAqIE5WX0NUUkxfR1ZPX1NZTkNf
REVMQVlfUElYRUxTIC0gY29udHJvbHMgdGhlIGRlbGF5IGJldHdlZW4gdGhlCi0gKiBpbnB1dCBz
eW5jIGFuZCB0aGUgb3V0cHV0IHN5bmMgaW4gbnVtYmVycyBvZiBwaXhlbHMgZnJvbSBoc3luYzsK
LSAqIHRoaXMgaXMgYSAxMiBiaXQgdmFsdWUuCi0gKgotICogSWYgdGhlIE5WX0NUUkxfR1ZPX0NB
UEFCSUxJVElFU19BRFZBTkNFX1NZTkNfU0tFVyBiaXQgaXMgc2V0LAotICogdGhlbiBzZXR0aW5n
IHRoaXMgdmFsdWUgd2lsbCBzZXQgYW4gYWR2YW5jZSBpbnN0ZWFkIG9mIGEgZGVsYXkuCi0gKi8K
LQotI2RlZmluZSBOVl9DVFJMX0dWT19TWU5DX0RFTEFZX1BJWEVMUyA3OSAvKiBSVy0gKi8KLQot
LyoKLSAqIE5WX0NUUkxfR1ZPX1NZTkNfREVMQVlfTElORVMgLSBjb250cm9scyB0aGUgZGVsYXkg
YmV0d2VlbiB0aGUgaW5wdXQKLSAqIHN5bmMgYW5kIHRoZSBvdXRwdXQgc3luYyBpbiBudW1iZXJz
IG9mIGxpbmVzIGZyb20gdnN5bmM7IHRoaXMgaXMgYQotICogMTIgYml0IHZhbHVlLgotICoKLSAq
IElmIHRoZSBOVl9DVFJMX0dWT19DQVBBQklMSVRJRVNfQURWQU5DRV9TWU5DX1NLRVcgYml0IGlz
IHNldCwKLSAqIHRoZW4gc2V0dGluZyB0aGlzIHZhbHVlIHdpbGwgc2V0IGFuIGFkdmFuY2UgaW5z
dGVhZCBvZiBhIGRlbGF5LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fU1lOQ19ERUxBWV9M
SU5FUyA4MCAvKiBSVy0gKi8KLQotLyoKLSAqIE5WX0NUUkxfR1ZPX0lOUFVUX1ZJREVPX0ZPUk1B
VF9SRUFDUVVJUkUgLSBtdXN0IGJlIHNldCBmb3IgYSBwZXJpb2QKLSAqIG9mIGFib3V0IDIgc2Vj
b25kcyBmb3IgdGhlIG5ldyBJbnB1dFZpZGVvRm9ybWF0IHRvIGJlIHByb3Blcmx5Ci0gKiBsb2Nr
ZWQgdG8uICBJbiBudmlkaWEtc2V0dGluZ3MsIHdlIGRvIGEgcmVhY3F1aXJlIHdoZW5ldmVyIGdl
bmxvY2sKLSAqIG9yIGZyYW1lIGxvY2sgbW9kZSBpcyBlbnRlcmVkIGludG8sIHdoZW4gdGhlIHVz
ZXIgY2xpY2tzIHRoZQotICogImRldGVjdCIgYnV0dG9uLiAgVGhpcyB2YWx1ZSBjYW4gYmUgd3Jp
dHRlbiwgYnV0IGFsd2F5cyByZWFkcyBiYWNrCi0gKiBfRkFMU0UuCi0gKi8KLQotI2RlZmluZSBO
Vl9DVFJMX0dWT19JTlBVVF9WSURFT19GT1JNQVRfUkVBQ1FVSVJFIDgxIC8qIC1XLSAqLwotI2Rl
ZmluZSBOVl9DVFJMX0dWT19JTlBVVF9WSURFT19GT1JNQVRfUkVBQ1FVSVJFX0ZBTFNFIDAKLSNk
ZWZpbmUgTlZfQ1RSTF9HVk9fSU5QVVRfVklERU9fRk9STUFUX1JFQUNRVUlSRV9UUlVFIDEKLQot
LyoKLSAqIE5WX0NUUkxfR1ZPX0dMWF9MT0NLRUQgLSBpbmRpY2F0ZXMgdGhhdCBHVk8gY29uZmln
dXJhYmlsaXR5IGlzCi0gKiBsb2NrZWQgYnkgR0xYOyB0aGlzIG9jY3VycyB3aGVuIGVpdGhlciBn
bFhHZXRWaWRlb0RldmljZU5WIChwYXJ0IG9mCi0gKiBHTFhfTlZfdmlkZW9fb3V0KSBvciBnbFhC
aW5kVmlkZW9EZXZpY2VOViAocGFydCBvZgotICogR0xYX05WX3ByZXNlbnRfdmlkZW8pIGlzIGNh
bGxlZC4gIEFsbCBHVk8gb3V0cHV0IHJlc291cmNlcyBhcmUKLSAqIGxvY2tlZCB1bnRpbCByZWxl
YXNlZCBieSB0aGUgR0xYX05WX3ZpZGVvX291dC9HTFhfTlZfcHJlc2VudF92aWRlbwotICogY2xp
ZW50LgotICoKLSAqIFdoZW4gR1ZPIGlzIGxvY2tlZCwgc2V0dGluZyBvZiB0aGUgZm9sbG93aW5n
IEdWTyBOVi1DT05UUk9MIGF0dHJpYnV0ZXMgd2lsbAotICogbm90IGhhcHBlbiBpbW1lZGlhdGVs
eSBhbmQgd2lsbCBpbnN0ZWFkIGJlIGNhY2hlZC4gIFRoZSBHVk8gcmVzb3VyY2Ugd2lsbAotICog
bmVlZCB0byBiZSBkaXNhYmxlZC9yZWxlYXNlZCBhbmQgcmUtZW5hYmxlZC9jbGFpbWVkIGZvciB0
aGUgdmFsdWVzIHRvIGJlCi0gKiBmbHVzaGVkLiBUaGVzZSBhdHRyaWJ1dGVzIGFyZToKLSAqICAg
IE5WX0NUUkxfR1ZJT19SRVFVRVNURURfVklERU9fRk9STUFUCi0gKiAgICBOVl9DVFJMX0dWT19E
QVRBX0ZPUk1BVAotICogICAgTlZfQ1RSTF9HVk9fRkxJUF9RVUVVRV9TSVpFCi0gKgotICogVGhp
cyBhdHRyaWJ1dGUgaXMgZGVwcmVjYXRlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUg
cmVsZWFzZS4gIEl0cwotICogZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZXBsYWNlZCBieSBOVl9D
VFJMX0dWT19MT0NLX09XTkVSLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fR0xYX0xPQ0tF
RCA4MiAvKiBSLS0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fR0xYX0xPQ0tFRF9GQUxTRSAwCi0j
ZGVmaW5lIE5WX0NUUkxfR1ZPX0dMWF9MT0NLRURfVFJVRSAxCi0KLS8qCi0gKiBOVl9DVFJMX0dW
SU9fVklERU9fRk9STUFUX3tXSURUSCxIRUlHSFQsUkVGUkVTSF9SQVRFfSAtIHF1ZXJ5IHRoZQot
ICogd2lkdGgsIGhlaWdodCwgYW5kIHJlZnJlc2ggcmF0ZSBmb3IgdGhlIHNwZWNpZmllZAotICog
TlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8qLiAgU28gdGhhdCB0aGlzIGNhbiBiZSBxdWVyaWVk
IHdpdGgKLSAqIGV4aXN0aW5nIGludGVyZmFjZXMsIFhOVkNUUkxRdWVyeUF0dHJpYnV0ZSgpIHNo
b3VsZCBiZSB1c2VkLCBhbmQKLSAqIHRoZSB2aWRlbyBmb3JtYXQgc3BlY2lmaWVkIGluIHRoZSBk
aXNwbGF5X21hc2sgZmllbGQ7IGVnOgotICoKLSAqIFhOVkNUUkxRdWVyeUF0dHJpYnV0ZSAoZHB5
LAotICogICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW4sCi0gKiAgICAgICAgICAgICAgICAg
ICAgICAgIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfNDg3SV81OV85NF9TTVBURTI1OV9OVFND
LAotICogICAgICAgICAgICAgICAgICAgICAgICBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX1dJ
RFRILAotICogICAgICAgICAgICAgICAgICAgICAgICAmdmFsdWUpOwotICoKLSAqIE5vdGUgdGhh
dCBSZWZyZXNoIFJhdGUgaXMgaW4gbWlsbGlIZXJ0eiB2YWx1ZXMKLSAqLwotCi0jZGVmaW5lIE5W
X0NUUkxfR1ZJT19WSURFT19GT1JNQVRfV0lEVEggODMgICAgICAgIC8qIFItLUkgKi8KLSNkZWZp
bmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF9IRUlHSFQgODQgICAgICAgLyogUi0tSSAqLwot
I2RlZmluZSBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX1JFRlJFU0hfUkFURSA4NSAvKiBSLS1J
ICovCi0KLS8qIFRoZSBmb2xsb3dpbmcgYXJlIGRlcHJlY2F0ZWQ7IHVzZSB0aGUgTlZfQ1RSTF9H
VklPXyogdmVyc2lvbnMsIGluc3RlYWQgKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9fRk9S
TUFUX1dJRFRIIDgzICAgICAgICAvKiBSLS0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklERU9f
Rk9STUFUX0hFSUdIVCA4NCAgICAgICAvKiBSLS0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fVklE
RU9fRk9STUFUX1JFRlJFU0hfUkFURSA4NSAvKiBSLS0gKi8KLQotLyoKLSAqIE5WX0NUUkxfR1ZP
X1hfU0NSRUVOX1BBTl9bWFldIC0gbm8gbG9uZ2VyIHN1cHBvcnRlZAotICovCi0KLSNkZWZpbmUg
TlZfQ1RSTF9HVk9fWF9TQ1JFRU5fUEFOX1ggODYgLyogUlctICovCi0jZGVmaW5lIE5WX0NUUkxf
R1ZPX1hfU0NSRUVOX1BBTl9ZIDg3IC8qIFJXLSAqLwotCi0vKgotICogTlZfQ1RSTF9HUFVfT1ZF
UkNMT0NLSU5HX1NUQVRFIC0gcXVlcnkgdGhlIGN1cnJlbnQgb3Igc2V0IGEgbmV3Ci0gKiBvdmVy
Y2xvY2tpbmcgc3RhdGU7IHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBjb250cm9scyB0aGUK
LSAqIGF2YWlsYWJpbGl0eSBvZiBhZGRpdGlvbmFsIG92ZXJjbG9ja2luZyBhdHRyaWJ1dGVzIChz
ZWUgYmVsb3cpLgotICoKLSAqIE5vdGU6IHRoaXMgYXR0cmlidXRlIGlzIHVuYXZhaWxhYmxlIHVu
bGVzcyBvdmVyY2xvY2tpbmcgc3VwcG9ydAotICogaGFzIGJlZW4gZW5hYmxlZCBpbiB0aGUgWCBz
ZXJ2ZXIgKGJ5IHRoZSB1c2VyKS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1BVX09WRVJDTE9D
S0lOR19TVEFURSA4OCAvKiBSVy1HICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX09WRVJDTE9DS0lO
R19TVEFURV9OT05FIDAKLSNkZWZpbmUgTlZfQ1RSTF9HUFVfT1ZFUkNMT0NLSU5HX1NUQVRFX01B
TlVBTCAxCi0KLS8qCi0gKiBOVl9DVFJMX0dQVV97MiwzfURfQ0xPQ0tfRlJFUVMgLSBxdWVyeSBv
ciBzZXQgdGhlIEdQVSBhbmQgbWVtb3J5Ci0gKiBjbG9ja3Mgb2YgdGhlIGRldmljZSBkcml2aW5n
IHRoZSBYIHNjcmVlbi4gIE5ldyBjbG9jayBmcmVxdWVuY2llcwotICogYXJlIHRlc3RlZCBiZWZv
cmUgYmVpbmcgYXBwbGllZCwgYW5kIG1heSBiZSByZWplY3RlZC4KLSAqCi0gKiBOb3RlOiBpZiB0
aGUgdGFyZ2V0IGNsb2NrcyBhcmUgdG9vIGFnZ3Jlc3NpdmUsIHRoZWlyIHRlc3RpbmcgbWF5Ci0g
KiByZW5kZXIgdGhlIHN5c3RlbSB1bnJlc3BvbnNpdmUuCi0gKgotICogTm90ZTogd2hpbGUgdGhp
cyBhdHRyaWJ1dGUgY2FuIGFsd2F5cyBiZSBxdWVyaWVkLCBpdCBjYW4ndCBiZSBzZXQKLSAqIHVu
bGVzcyBOVl9DVFJMX0dQVV9PVkVSQ0xPQ0tJTkdfU1RBVEUgaXMgc2V0IHRvIF9NQU5VQUwuICBT
aW5jZQotICogdGhlIHRhcmdldCBjbG9ja3MgbWF5IGJlIHJlamVjdGVkLCB0aGUgcmVxdWVzdGVy
IHNob3VsZCByZWFkIHRoaXMKLSAqIGF0dHJpYnV0ZSBhZnRlciB0aGUgc2V0IHRvIGRldGVybWlu
ZSBzdWNjZXNzIG9yIGZhaWx1cmUuCi0gKgotICogTlZfQ1RSTF9HUFVfezIsM31EX0NMT0NLX0ZS
RVFTIGFyZSAicGFja2VkIiBpbnRlZ2VyIGF0dHJpYnV0ZXM7IHRoZQotICogR1BVIGNsb2NrIGlz
IHN0b3JlZCBpbiB0aGUgdXBwZXIgMTYgYml0cyBvZiB0aGUgaW50ZWdlciwgYW5kIHRoZQotICog
bWVtb3J5IGNsb2NrIGlzIHN0b3JlZCBpbiB0aGUgbG93ZXIgMTYgYml0cyBvZiB0aGUgaW50ZWdl
ci4gIEFsbAotICogY2xvY2sgdmFsdWVzIGFyZSBpbiBNSHouCi0gKi8KLQotI2RlZmluZSBOVl9D
VFJMX0dQVV8yRF9DTE9DS19GUkVRUyA4OSAvKiBSVy1HICovCi0jZGVmaW5lIE5WX0NUUkxfR1BV
XzNEX0NMT0NLX0ZSRVFTIDkwIC8qIFJXLUcgKi8KLQotLyoKLSAqIE5WX0NUUkxfR1BVX0RFRkFV
TFRfezIsM31EX0NMT0NLX0ZSRVFTIC0gcXVlcnkgdGhlIGRlZmF1bHQgbWVtb3J5Ci0gKiBhbmQg
R1BVIGNvcmUgY2xvY2tzIG9mIHRoZSBkZXZpY2UgZHJpdmluZyB0aGUgWCBzY3JlZW4uCi0gKgot
ICogTlZfQ1RSTF9HUFVfREVGQVVMVF97MiwzfURfQ0xPQ0tfRlJFUVMgYXJlICJwYWNrZWQiIGlu
dGVnZXIKLSAqIGF0dHJpYnV0ZXM7IHRoZSBHUFUgY2xvY2sgaXMgc3RvcmVkIGluIHRoZSB1cHBl
ciAxNiBiaXRzIG9mIHRoZQotICogaW50ZWdlciwgYW5kIHRoZSBtZW1vcnkgY2xvY2sgaXMgc3Rv
cmVkIGluIHRoZSBsb3dlciAxNiBiaXRzIG9mIHRoZQotICogaW50ZWdlci4gIEFsbCBjbG9jayB2
YWx1ZXMgYXJlIGluIE1Iei4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0RFRkFVTFRfMkRf
Q0xPQ0tfRlJFUVMgOTEgLyogUi0tRyAqLwotI2RlZmluZSBOVl9DVFJMX0dQVV9ERUZBVUxUXzNE
X0NMT0NLX0ZSRVFTIDkyIC8qIFItLUcgKi8KLQotLyoKLSAqIE5WX0NUUkxfR1BVX0NVUlJFTlRf
Q0xPQ0tfRlJFUVMgLSBxdWVyeSB0aGUgY3VycmVudCBHUFUgYW5kIG1lbW9yeQotICogY2xvY2tz
IG9mIHRoZSBncmFwaGljcyBkZXZpY2UgZHJpdmluZyB0aGUgWCBzY3JlZW4uCi0gKgotICogTlZf
Q1RSTF9HUFVfQ1VSUkVOVF9DTE9DS19GUkVRUyBpcyBhICJwYWNrZWQiIGludGVnZXIgYXR0cmli
dXRlOwotICogdGhlIEdQVSBjbG9jayBpcyBzdG9yZWQgaW4gdGhlIHVwcGVyIDE2IGJpdHMgb2Yg
dGhlIGludGVnZXIsIGFuZAotICogdGhlIG1lbW9yeSBjbG9jayBpcyBzdG9yZWQgaW4gdGhlIGxv
d2VyIDE2IGJpdHMgb2YgdGhlIGludGVnZXIuCi0gKiBBbGwgY2xvY2sgdmFsdWVzIGFyZSBpbiBN
SHouICBBbGwgY2xvY2sgdmFsdWVzIGFyZSBpbiBNSHouCi0gKi8KLQotI2RlZmluZSBOVl9DVFJM
X0dQVV9DVVJSRU5UX0NMT0NLX0ZSRVFTIDkzIC8qIFItLUcgKi8KLQotLyoKLSAqIE5WX0NUUkxf
R1BVX09QVElNQUxfQ0xPQ0tfRlJFUVMgLSBIb2xkcyB0aGUgbGFzdCBjYWxjdWxhdGVkCi0gKiBv
cHRpbWFsIDNEIGNsb2NrIGZyZXF1ZW5jaWVzIGZvdW5kIGJ5IHRoZQotICogTlZfQ1RSTF9HUFVf
T1BUSU1BTF9DTE9DS19GUkVRU19ERVRFQ1RJT04gcHJvY2Vzcy4gIFF1ZXJ5aW5nIHRoaXMKLSAq
IGF0dHJpYnV0ZSBiZWZvcmUgaGF2aW5nIHByb2JlZCBmb3IgdGhlIG9wdGltYWwgY2xvY2tzIHdp
bGwgcmV0dXJuCi0gKiBOVl9DVFJMX0dQVV9PUFRJTUFMX0NMT0NLX0ZSRVFTX0lOVkFMSUQKLSAq
Ci0gKiBOb3RlOiB1bmxlc3MgTlZfQ1RSTF9HUFVfT1ZFUkNMT0NLSU5HX1NUQVRFIGlzIHNldCB0
byBfTUFOVUFMLCB0aGUKLSAqIG9wdGltYWwgY2xvY2sgZGV0ZWN0aW9uIHByb2Nlc3MgaXMgdW5h
dmFpbGFibGUuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dQVV9PUFRJTUFMX0NMT0NLX0ZSRVFT
IDk0IC8qIFItLUcgKi8KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfT1BUSU1BTF9DTE9DS19GUkVRU19J
TlZBTElEIDAKLQotLyoKLSAqIE5WX0NUUkxfR1BVX09QVElNQUxfQ0xPQ0tfRlJFUVNfREVURUNU
SU9OIC0gc2V0IHRvIF9TVEFSVCB0bwotICogaW5pdGlhdGUgdGVzdGluZyBmb3IgdGhlIG9wdGlt
YWwgM0QgY2xvY2sgZnJlcXVlbmNpZXMuICBPbmNlCi0gKiBmb3VuZCwgdGhlIG9wdGltYWwgY2xv
Y2sgZnJlcXVlbmNpZXMgd2lsbCBiZSByZXR1cm5lZCBieSB0aGUKLSAqIE5WX0NUUkxfR1BVX09Q
VElNQUxfQ0xPQ0tfRlJFUVMgYXR0cmlidXRlIGFzeW5jaHJvbm91c2x5Ci0gKiAodXNpbmcgYW4g
WCBldmVudCwgc2VlIFhOVkN0cmxTZWxlY3ROb3RpZnkpLgotICoKLSAqIFRvIGNhbmNlbCBhbiBv
bmdvaW5nIHRlc3QgZm9yIHRoZSBvcHRpbWFsIGNsb2Nrcywgc2V0IHRoZQotICogTlZfQ1RSTF9H
UFVfT1BUSU1BTF9DTE9DS19GUkVRU19ERVRFQ1RJT04gYXR0cmlidXRlIHRvIF9DQU5DRUwKLSAq
Ci0gKiBOb3RlOiB1bmxlc3MgTlZfQ1RSTF9HUFVfT1ZFUkNMT0NLSU5HX1NUQVRFIGlzIHNldCB0
byBfTUFOVUFMLCB0aGUKLSAqIG9wdGltYWwgY2xvY2sgZGV0ZWN0aW9uIHByb2Nlc3MgaXMgdW5h
dmFpbGFibGUuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dQVV9PUFRJTUFMX0NMT0NLX0ZSRVFT
X0RFVEVDVElPTiA5NSAvKiAtVy1HICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX09QVElNQUxfQ0xP
Q0tfRlJFUVNfREVURUNUSU9OX1NUQVJUIDAKLSNkZWZpbmUgTlZfQ1RSTF9HUFVfT1BUSU1BTF9D
TE9DS19GUkVRU19ERVRFQ1RJT05fQ0FOQ0VMIDEKLQotLyoKLSAqIE5WX0NUUkxfR1BVX09QVElN
QUxfQ0xPQ0tfRlJFUVNfREVURUNUSU9OX1NUQVRFIC0gcXVlcnkgdGhpcwotICogdmFyaWFibGUg
dG8ga25vdyBpZiBhIHRlc3QgaXMgY3VycmVudGx5IGJlaW5nIHJ1biB0bwotICogZGV0ZXJtaW5l
IHRoZSBvcHRpbWFsIDNEIGNsb2NrIGZyZXF1ZW5jaWVzLiAgX0JVU1kgbWVhbnMgYQotICogdGVz
dCBpcyBjdXJyZW50bHkgcnVubmluZywgX0lETEUgbWVhbnMgdGhlIHRlc3QgaXMgbm90IHJ1bm5p
bmcuCi0gKgotICogTm90ZTogdW5sZXNzIE5WX0NUUkxfR1BVX09WRVJDTE9DS0lOR19TVEFURSBp
cyBzZXQgdG8gX01BTlVBTCwgdGhlCi0gKiBvcHRpbWFsIGNsb2NrIGRldGVjdGlvbiBwcm9jZXNz
IGlzIHVuYXZhaWxhYmxlLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfT1BUSU1BTF9DTE9D
S19GUkVRU19ERVRFQ1RJT05fU1RBVEUgOTYgLyogUi0tRyAqLwotI2RlZmluZSBOVl9DVFJMX0dQ
VV9PUFRJTUFMX0NMT0NLX0ZSRVFTX0RFVEVDVElPTl9TVEFURV9JRExFIDAKLSNkZWZpbmUgTlZf
Q1RSTF9HUFVfT1BUSU1BTF9DTE9DS19GUkVRU19ERVRFQ1RJT05fU1RBVEVfQlVTWSAxCi0KLS8q
Ci0gKiBOVl9DVFJMX0ZMQVRQQU5FTF9DSElQX0xPQ0FUSU9OIC0gZm9yIHRoZSBzcGVjaWZpZWQg
ZGlzcGxheSBkZXZpY2UsCi0gKiByZXBvcnQgd2hldGhlciB0aGUgZmxhdCBwYW5lbCBpcyBkcml2
ZW4gYnkgdGhlIG9uLWNoaXAgY29udHJvbGxlciwKLSAqIG9yIGEgc2VwYXJhdGUgY29udHJvbGxl
ciBjaGlwIGVsc2V3aGVyZSBvbiB0aGUgZ3JhcGhpY3MgYm9hcmQuCi0gKiBUaGlzIGF0dHJpYnV0
ZSBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgZmxhdCBwYW5lbHMuCi0gKi8KLQotI2RlZmluZSBOVl9D
VFJMX0ZMQVRQQU5FTF9DSElQX0xPQ0FUSU9OIDIxNSAvKiBSLURHICovCi0jZGVmaW5lIE5WX0NU
UkxfRkxBVFBBTkVMX0NISVBfTE9DQVRJT05fSU5URVJOQUwgMAotI2RlZmluZSBOVl9DVFJMX0ZM
QVRQQU5FTF9DSElQX0xPQ0FUSU9OX0VYVEVSTkFMIDEKLQotLyoKLSAqIE5WX0NUUkxfRkxBVFBB
TkVMX0xJTksgLSByZXBvcnQgdGhlIG51bWJlciBvZiBsaW5rcyBmb3IgYSBEVkkgY29ubmVjdGlv
biwgb3IKLSAqIHRoZSBtYWluIGxpbmsncyBhY3RpdmUgbGFuZSBjb3VudCBmb3IgRGlzcGxheVBv
cnQuCi0gKiBUaGlzIGF0dHJpYnV0ZSBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgZmxhdCBwYW5lbHMu
Ci0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9MSU5LIDIxNiAvKiBSLURHICovCi0j
ZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX0xJTktfU0lOR0xFIDAKLSNkZWZpbmUgTlZfQ1RSTF9G
TEFUUEFORUxfTElOS19EVUFMIDEKLSNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxfTElOS19RVUFE
IDMKLQotLyoKLSAqIE5WX0NUUkxfRkxBVFBBTkVMX1NJR05BTCAtIGZvciB0aGUgc3BlY2lmaWVk
IGRpc3BsYXkgZGV2aWNlLCByZXBvcnQKLSAqIHdoZXRoZXIgdGhlIGZsYXQgcGFuZWwgaXMgZHJp
dmVuIGJ5IGFuIExWRFMsIFRNRFMsIG9yIERpc3BsYXlQb3J0IHNpZ25hbC4KLSAqIFRoaXMgYXR0
cmlidXRlIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBmbGF0IHBhbmVscy4KLSAqLwotCi0jZGVmaW5l
IE5WX0NUUkxfRkxBVFBBTkVMX1NJR05BTCAyMTcgLyogUi1ERyAqLwotI2RlZmluZSBOVl9DVFJM
X0ZMQVRQQU5FTF9TSUdOQUxfTFZEUyAwCi0jZGVmaW5lIE5WX0NUUkxfRkxBVFBBTkVMX1NJR05B
TF9UTURTIDEKLSNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxfU0lHTkFMX0RJU1BMQVlQT1JUIDIK
LQotLyoKLSAqIE5WX0NUUkxfVVNFX0hPVVNFX1NZTkMgLSB3aGVuIFRSVUUsIHRoZSBzZXJ2ZXIg
KG1hc3RlcikgZnJhbWUgbG9jawotICogZGV2aWNlIHdpbGwgcHJvcGFnYXRlIHRoZSBpbmNvbWlu
ZyBob3VzZSBzeW5jIHNpZ25hbCBhcyB0aGUgb3V0Z29pbmcKLSAqIGZyYW1lIGxvY2sgc3luYyBz
aWduYWwuICBJZiB0aGUgZnJhbWUgbG9jayBkZXZpY2UgY2Fubm90IGRldGVjdCBhCi0gKiBmcmFt
ZSBsb2NrIHN5bmMgc2lnbmFsLCBpdCB3aWxsIGRlZmF1bHQgdG8gdXNpbmcgdGhlIGludGVybmFs
IHRpbWluZ3MKLSAqIGZyb20gdGhlIEdQVSBjb25uZWN0ZWQgdG8gdGhlIHByaW1hcnkgY29ubmVj
dG9yLgotICoKLSAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RS
TFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9G
UkFNRUxPQ0sgb3IgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTgotICogdGFyZ2V0LgotICov
Ci0KLSNkZWZpbmUgTlZfQ1RSTF9VU0VfSE9VU0VfU1lOQyAyMTggLyogUlctRiAqLwotI2RlZmlu
ZSBOVl9DVFJMX1VTRV9IT1VTRV9TWU5DX0ZBTFNFIDAKLSNkZWZpbmUgTlZfQ1RSTF9VU0VfSE9V
U0VfU1lOQ19UUlVFIDEKLQotLyoKLSAqIE5WX0NUUkxfRURJRF9BVkFJTEFCTEUgLSByZXBvcnQg
aWYgYW4gRURJRCBpcyBhdmFpbGFibGUgZm9yIHRoZQotICogc3BlY2lmaWVkIGRpc3BsYXkgZGV2
aWNlLgotICoKLSAqIFRoaXMgYXR0cmlidXRlIG1heSBhbHNvIGJlIHF1ZXJpZWQgdGhyb3VnaCBY
TlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9U
WVBFX0dQVSBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOCi0gKiB0YXJnZXQuCi0gKi8K
LQotI2RlZmluZSBOVl9DVFJMX0VESURfQVZBSUxBQkxFIDIxOSAvKiBSLURHICovCi0jZGVmaW5l
IE5WX0NUUkxfRURJRF9BVkFJTEFCTEVfRkFMU0UgMAotI2RlZmluZSBOVl9DVFJMX0VESURfQVZB
SUxBQkxFX1RSVUUgMQotCi0vKgotICogTlZfQ1RSTF9GT1JDRV9TVEVSRU8gLSB3aGVuIFRSVUUs
IE9wZW5HTCB3aWxsIGZvcmNlIHN0ZXJlbyBmbGlwcGluZwotICogZXZlbiB3aGVuIG5vIHN0ZXJl
byBkcmF3YWJsZXMgYXJlIHZpc2libGUgKGlmIHRoZSBkZXZpY2UgaXMgY29uZmlndXJlZAotICog
dG8gc3VwcG9ydCBpdCwgc2VlIHRoZSAiU3RlcmVvIiBYIGNvbmZpZyBvcHRpb24pLgotICogV2hl
biBmYWxzZSwgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIG9ubHkgZmxpcHBp
bmcgd2hlbiBhCi0gKiBzdGVyZW8gZHJhd2FibGUgaXMgdmlzaWJsZS4KLSAqLwotCi0jZGVmaW5l
IE5WX0NUUkxfRk9SQ0VfU1RFUkVPIDIyMCAvKiBSVy0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9GT1JD
RV9TVEVSRU9fRkFMU0UgMAotI2RlZmluZSBOVl9DVFJMX0ZPUkNFX1NURVJFT19UUlVFIDEKLQot
LyoKLSAqIE5WX0NUUkxfSU1BR0VfU0VUVElOR1MgLSB0aGUgaW1hZ2UgcXVhbGl0eSBzZXR0aW5n
IGZvciBPcGVuR0wgY2xpZW50cy4KLSAqCi0gKiBUaGlzIHNldHRpbmcgaXMgb25seSBhcHBsaWVk
IHRvIE9wZW5HTCBjbGllbnRzIHRoYXQgYXJlIHN0YXJ0ZWQKLSAqIGFmdGVyIHRoaXMgc2V0dGlu
ZyBpcyBhcHBsaWVkLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9JTUFHRV9TRVRUSU5HUyAyMjEg
LyogUlctWCAqLwotI2RlZmluZSBOVl9DVFJMX0lNQUdFX1NFVFRJTkdTX0hJR0hfUVVBTElUWSAw
Ci0jZGVmaW5lIE5WX0NUUkxfSU1BR0VfU0VUVElOR1NfUVVBTElUWSAxCi0jZGVmaW5lIE5WX0NU
UkxfSU1BR0VfU0VUVElOR1NfUEVSRk9STUFOQ0UgMgotI2RlZmluZSBOVl9DVFJMX0lNQUdFX1NF
VFRJTkdTX0hJR0hfUEVSRk9STUFOQ0UgMwotCi0vKgotICogTlZfQ1RSTF9YSU5FUkFNQSAtIHJl
dHVybiB3aGV0aGVyIHhpbmVyYW1hIGlzIGVuYWJsZWQKLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxf
WElORVJBTUEgMjIyIC8qIFItLUcgKi8KLSNkZWZpbmUgTlZfQ1RSTF9YSU5FUkFNQV9PRkYgMAot
I2RlZmluZSBOVl9DVFJMX1hJTkVSQU1BX09OIDEKLQotLyoKLSAqIE5WX0NUUkxfWElORVJBTUFf
U1RFUkVPIC0gd2hlbiBUUlVFLCBPcGVuR0wgd2lsbCBhbGxvdyBzdGVyZW8gZmxpcHBpbmcKLSAq
IG9uIG11bHRpcGxlIFggc2NyZWVucyBjb25maWd1cmVkIHdpdGggWGluZXJhbWEuCi0gKiBXaGVu
IEZBTFNFLCBmbGlwcGluZyBpcyBhbGxvd2VkIG9ubHkgb24gb25lIFggc2NyZWVuIGF0IGEgdGlt
ZS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfWElORVJBTUFfU1RFUkVPIDIyMyAvKiBSVy0gKi8K
LSNkZWZpbmUgTlZfQ1RSTF9YSU5FUkFNQV9TVEVSRU9fRkFMU0UgMAotI2RlZmluZSBOVl9DVFJM
X1hJTkVSQU1BX1NURVJFT19UUlVFIDEKLQotLyoKLSAqIE5WX0NUUkxfQlVTX1JBVEUgLSBpZiB0
aGUgYnVzIHR5cGUgb2YgdGhlIHNwZWNpZmllZCBkZXZpY2UgaXMgQUdQLCB0aGVuCi0gKiBOVl9D
VFJMX0JVU19SQVRFIHJldHVybnMgdGhlIGNvbmZpZ3VyZWQgQUdQIHRyYW5zZmVyIHJhdGUuICBJ
ZiB0aGUgYnVzIHR5cGUKLSAqIGlzIFBDSSBFeHByZXNzLCB0aGVuIHRoaXMgYXR0cmlidXRlIHJl
dHVybnMgdGhlIG1heGltdW0gbGluayB3aWR0aC4KLSAqIFdoZW4gdGhpcyBhdHRyaWJ1dGUgaXMg
cXVlcmllZCBvbiBhbiBYIHNjcmVlbiB0YXJnZXQsIHRoZSBidXMgcmF0ZSBvZiB0aGUKLSAqIEdQ
VSBkcml2aW5nIHRoZSBYIHNjcmVlbiBpcyByZXR1cm5lZC4KLSAqLwotCi0jZGVmaW5lIE5WX0NU
UkxfQlVTX1JBVEUgMjI0IC8qIFItLUdJICovCi0KLS8qCi0gKiBOVl9DVFJMX0dQVV9QQ0lFX01B
WF9MSU5LX1dJRFRIIC0gcmV0dXJucyB0aGUgbWF4aW11bQotICogUENJZSBsaW5rIHdpZHRoLCBp
biBudW1iZXIgb2YgbGFuZXMuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfUENJRV9NQVhfTElO
S19XSURUSCBOVl9DVFJMX0JVU19SQVRFCi0KLS8qCi0gKiBOVl9DVFJMX1NIT1dfU0xJX0hVRCAt
IHdoZW4gVFJVRSwgT3BlbkdMIHdpbGwgZHJhdyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKLSAqIGN1
cnJlbnQgU0xJIG1vZGUuCi0gKiBSZW5hbWVkIHRoaXMgYXR0cmlidXRlIHRvIE5WX0NUUkxfU0hP
V19TTElfVklTVUFMX0lORElDQVRPUgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9TSE9XX1NMSV9I
VUQgTlZfQ1RSTF9TSE9XX1NMSV9WSVNVQUxfSU5ESUNBVE9SCi0jZGVmaW5lIE5WX0NUUkxfU0hP
V19TTElfSFVEX0ZBTFNFIE5WX0NUUkxfU0hPV19TTElfVklTVUFMX0lORElDQVRPUl9GQUxTRQot
I2RlZmluZSBOVl9DVFJMX1NIT1dfU0xJX0hVRF9UUlVFIE5WX0NUUkxfU0hPV19TTElfVklTVUFM
X0lORElDQVRPUl9UUlVFCi0KLS8qCi0gKiBOVl9DVFJMX1NIT1dfU0xJX1ZJU1VBTF9JTkRJQ0FU
T1IgLSB3aGVuIFRSVUUsIE9wZW5HTCB3aWxsIGRyYXcgaW5mb3JtYXRpb24KLSAqIGFib3V0IHRo
ZSBjdXJyZW50IFNMSSBtb2RlLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9TSE9XX1NMSV9WSVNV
QUxfSU5ESUNBVE9SIDIyNSAvKiBSVy1YICovCi0jZGVmaW5lIE5WX0NUUkxfU0hPV19TTElfVklT
VUFMX0lORElDQVRPUl9GQUxTRSAwCi0jZGVmaW5lIE5WX0NUUkxfU0hPV19TTElfVklTVUFMX0lO
RElDQVRPUl9UUlVFIDEKLQotLyoKLSAqIE5WX0NUUkxfWFZfU1lOQ19UT19ESVNQTEFZIC0gdGhp
cyBjb250cm9sIGlzIHZhbGlkIHdoZW4gVHdpblZpZXcgYW5kCi0gKiBYVmlkZW8gU3luYyBUbyBW
QmxhbmsgYXJlIGVuYWJsZWQuCi0gKiBJdCBjb250cm9scyB3aGljaCBkaXNwbGF5IGRldmljZSB3
aWxsIGJlIHN5bmNoZWQgdG8uCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1hWX1NZTkNfVE9fRElT
UExBWSAyMjYgLyogUlctICovCi0KLS8qCi0gKiBOVl9DVFJMX0dWSU9fUkVRVUVTVEVEX1ZJREVP
X0ZPUk1BVDIgLSB0aGlzIGF0dHJpYnV0ZSBpcyBvbmx5Ci0gKiBpbnRlbmRlZCB0byBiZSB1c2Vk
IHRvIHF1ZXJ5IHRoZSBWYWxpZFZhbHVlcyBmb3IKLSAqIE5WX0NUUkxfR1ZJT19SRVFVRVNURURf
VklERU9fRk9STUFUIGZvciBWSURFT19GT1JNQVQgdmFsdWVzIGJldHdlZW4KLSAqIDMxIGFuZCA2
My4gIFNlZSBOVl9DVFJMX0dWSU9fUkVRVUVTVEVEX1ZJREVPX0ZPUk1BVCBmb3IgZGV0YWlscy4K
LSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZJT19SRVFVRVNURURfVklERU9fRk9STUFUMiAyMjcg
LyogLS0tR0kgKi8KLQotLyoKLSAqIFRoZSBmb2xsb3dpbmcgaXMgZGVwcmVjYXRlZDsgdXNlIE5W
X0NUUkxfR1ZJT19SRVFVRVNURURfVklERU9fRk9STUFUMiwKLSAqIGluc3RlYWQKLSAqLwotI2Rl
ZmluZSBOVl9DVFJMX0dWT19PVVRQVVRfVklERU9fRk9STUFUMiAyMjcgLyogLS0tICovCi0KLS8q
Ci0gKiBOVl9DVFJMX0dWT19PVkVSUklERV9IV19DU0MgLSBPdmVycmlkZSB0aGUgU0RJIGhhcmR3
YXJlJ3MgQ29sb3IgU3BhY2UKLSAqIENvbnZlcnNpb24gd2l0aCB0aGUgdmFsdWVzIGNvbnRyb2xs
ZWQgdGhyb3VnaAotICogWE5WQ1RSTFNldEd2b0NvbG9yQ29udmVyc2lvbigpIGFuZCBYTlZDVFJM
R2V0R3ZvQ29sb3JDb252ZXJzaW9uKCkuICBJZgotICogdGhpcyBhdHRyaWJ1dGUgaXMgRkFMU0Us
IHRoZW4gdGhlIHZhbHVlcyBzcGVjaWZpZWQgdGhyb3VnaAotICogWE5WQ1RSTFNldEd2b0NvbG9y
Q29udmVyc2lvbigpIGFyZSBpZ25vcmVkLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fT1ZF
UlJJREVfSFdfQ1NDIDIyOCAvKiBSVy0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fT1ZFUlJJREVf
SFdfQ1NDX0ZBTFNFIDAKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fT1ZFUlJJREVfSFdfQ1NDX1RSVUUg
MQotCi0vKgotICogTlZfQ1RSTF9HVk9fQ0FQQUJJTElUSUVTIC0gdGhpcyByZWFkLW9ubHkgYXR0
cmlidXRlIGRlc2NyaWJlcyBHVk8KLSAqIGNhcGFiaWxpdGllcyB0aGF0IGRpZmZlciBiZXR3ZWVu
IE5WSURJQSBTREkgcHJvZHVjdHMuICBUaGlzIHZhbHVlCi0gKiBpcyBhIGJpdG1hc2sgd2hlcmUg
ZWFjaCBiaXQgaW5kaWNhdGVzIHdoZXRoZXIgdGhhdCBjYXBhYmlsaXR5IGlzCi0gKiBhdmFpbGFi
bGUuCi0gKgotICogQVBQTFlfQ1NDX0lNTUVESUFURUxZIC0gd2hldGhlciB0aGUgQ1NDIG1hdHJp
eCwgb2Zmc2V0LCBhbmQgc2NhbGUKLSAqIHNwZWNpZmllZCB0aHJvdWdoIFhOVkNUUkxTZXRHdm9D
b2xvckNvbnZlcnNpb24oKSB3aWxsIHRha2UgYWZmZWN0Ci0gKiBpbW1lZGlhdGVseSwgb3Igb25s
eSBhZnRlciBTREkgb3V0cHV0IGlzIGRpc2FibGVkIGFuZCBlbmFibGVkCi0gKiBhZ2Fpbi4KLSAq
Ci0gKiBBUFBMWV9DU0NfVE9fWF9TQ1JFRU4gLSB3aGV0aGVyIHRoZSBDU0MgbWF0cml4LCBvZmZz
ZXQsIGFuZCBzY2FsZQotICogc3BlY2lmaWVkIHRocm91Z2ggWE5WQ1RSTFNldEd2b0NvbG9yQ29u
dmVyc2lvbigpIHdpbGwgYWxzbyBhcHBseQotICogdG8gR1ZPIG91dHB1dCBvZiBhbiBYIHNjcmVl
biwgb3Igb25seSB0byBPcGVuR0wgR1ZPIG91dHB1dCwgYXMKLSAqIGVuYWJsZWQgdGhyb3VnaCB0
aGUgR0xYX05WX3ZpZGVvX291dCBleHRlbnNpb24uCi0gKgotICogQ09NUE9TSVRFX1RFUk1JTkFU
SU9OIC0gd2hldGhlciB0aGUgNzUgb2htIHRlcm1pbmF0aW9uIG9mIHRoZQotICogU0RJIGNvbXBv
c2l0ZSBpbnB1dCBzaWduYWwgY2FuIGJlIHByb2dyYW1tZWQgdGhyb3VnaCB0aGUKLSAqIE5WX0NU
UkxfR1ZPX0NPTVBPU0lURV9URVJNSU5BVElPTiBhdHRyaWJ1dGUuCi0gKgotICogU0hBUkVEX1NZ
TkNfQk5DIC0gd2hldGhlciB0aGUgU0RJIGRldmljZSBoYXMgYSBzaW5nbGUgQk5DCi0gKiBjb25u
ZWN0b3IgdXNlZCBmb3IgYm90aCAoU0RJICYgQ29tcG9zaXRlKSBpbmNvbWluZyBzaWduYWxzLgot
ICoKLSAqIE1VTFRJUkFURV9TWU5DIC0gd2hldGhlciB0aGUgU0RJIGRldmljZSBzdXBwb3J0cyBz
eW5jaHJvbml6YXRpb24KLSAqIG9mIGlucHV0IGFuZCBvdXRwdXQgdmlkZW8gbW9kZXMgdGhhdCBt
YXRjaCBpbiBiZWluZyBvZGQgb3IgZXZlbgotICogbW9kZXMgKGllLCBBQS4wMCBIeiBtb2RlcyBj
YW4gYmUgc3luY2hlZCB0byBvdGhlciBCQi4wMCBIeiBtb2RlcyBhbmQKLSAqIEFBLlhYIEh6IGNh
biBtYXRjaCB0byBCQi5ZWSBIeiB3aGVyZSAuWFggYW5kIC5ZWSBhcmUgbm90IC4wMCkKLSAqLwot
Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX0NBUEFCSUxJVElFUyAyMjkgLyogUi0tICovCi0jZGVmaW5l
IE5WX0NUUkxfR1ZPX0NBUEFCSUxJVElFU19BUFBMWV9DU0NfSU1NRURJQVRFTFkgMHgwMDAwMDAw
MQotI2RlZmluZSBOVl9DVFJMX0dWT19DQVBBQklMSVRJRVNfQVBQTFlfQ1NDX1RPX1hfU0NSRUVO
IDB4MDAwMDAwMDIKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fQ0FQQUJJTElUSUVTX0NPTVBPU0lURV9U
RVJNSU5BVElPTiAweDAwMDAwMDA0Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX0NBUEFCSUxJVElFU19T
SEFSRURfU1lOQ19CTkMgMHgwMDAwMDAwOAotI2RlZmluZSBOVl9DVFJMX0dWT19DQVBBQklMSVRJ
RVNfTVVMVElSQVRFX1NZTkMgMHgwMDAwMDAxMAotI2RlZmluZSBOVl9DVFJMX0dWT19DQVBBQklM
SVRJRVNfQURWQU5DRV9TWU5DX1NLRVcgMHgwMDAwMDAyMAotCi0vKgotICogTlZfQ1RSTF9HVk9f
Q09NUE9TSVRFX1RFUk1JTkFUSU9OIC0gZW5hYmxlIG9yIGRpc2FibGUgNzUgb2htCi0gKiB0ZXJt
aW5hdGlvbiBvZiB0aGUgU0RJIGNvbXBvc2l0ZSBpbnB1dCBzaWduYWwuCi0gKi8KLQotI2RlZmlu
ZSBOVl9DVFJMX0dWT19DT01QT1NJVEVfVEVSTUlOQVRJT04gMjMwIC8qIFJXLSAqLwotI2RlZmlu
ZSBOVl9DVFJMX0dWT19DT01QT1NJVEVfVEVSTUlOQVRJT05fRU5BQkxFIDEKLSNkZWZpbmUgTlZf
Q1RSTF9HVk9fQ09NUE9TSVRFX1RFUk1JTkFUSU9OX0RJU0FCTEUgMAotCi0vKgotICogTlZfQ1RS
TF9BU1NPQ0lBVEVEX0RJU1BMQVlfREVWSUNFUyAtIGRpc3BsYXkgZGV2aWNlIG1hc2sgaW5kaWNh
dGluZwotICogd2hpY2ggZGlzcGxheSBkZXZpY2VzIGFyZSAiYXNzb2NpYXRlZCIgd2l0aCB0aGUg
c3BlY2lmaWVkIFggc2NyZWVuCi0gKiAoaWU6IGFyZSBhdmFpbGFibGUgdG8gdGhlIFggc2NyZWVu
IGZvciBkaXNwbGF5aW5nIHRoZSBYIHNjcmVlbikuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0FT
U09DSUFURURfRElTUExBWV9ERVZJQ0VTIDIzMSAvKiBSVy0gKi8KLQotLyoKLSAqIE5WX0NUUkxf
RlJBTUVMT0NLX1NMQVZFUyAtIGdldC9zZXQgd2hldGhlciB0aGUgZGlzcGxheSBkZXZpY2UocykK
LSAqIGdpdmVuIHNob3VsZCBsaXN0ZW4gb3IgaWdub3JlIHRoZSBtYXN0ZXIncyBzeW5jIHNpZ25h
bC4KLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBjYW4gb25seSBiZSBxdWVyaWVkIHRocm91Z2ggWE5W
Q1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQ
RV9HUFUgdGFyZ2V0LiAgVGhpcyBhdHRyaWJ1dGUgY2Fubm90IGJlCi0gKiBxdWVyaWVkIHVzaW5n
IGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTi4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxf
RlJBTUVMT0NLX1NMQVZFUyAyMzIgLyogUlctRyAqLwotCi0vKgotICogTlZfQ1RSTF9GUkFNRUxP
Q0tfTUFTVEVSQUJMRSAtIENhbiBhbnkgb2YgdGhlIGdpdmVuIGRpc3BsYXkgZGV2aWNlcwotICog
YmUgc2V0IGFzIG1hc3RlciBvZiB0aGUgZnJhbWUgbG9jayBncm91cC4gIFJldHVybnMgYSBiaXRt
YXNrIG9mIHRoZQotICogY29ycmVzcG9uZGluZyBkaXNwbGF5IGRldmljZXMgdGhhdCBjYW4gYmUg
c2V0IGFzIG1hc3Rlci4KLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBjYW4gb25seSBiZSBxdWVyaWVk
IHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkKLSAqIHVzaW5nIGEgTlZfQ1RS
TF9UQVJHRVRfVFlQRV9HUFUgdGFyZ2V0LiAgVGhpcyBhdHRyaWJ1dGUgY2Fubm90IGJlCi0gKiBx
dWVyaWVkIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTi4KLSAqLwotCi0jZGVm
aW5lIE5WX0NUUkxfRlJBTUVMT0NLX01BU1RFUkFCTEUgMjMzIC8qIFItREcgKi8KLQotLyoKLSAq
IE5WX0NUUkxfUFJPQkVfRElTUExBWVMgLSByZS1wcm9iZXMgdGhlIGhhcmR3YXJlIHRvIGRldGVj
dCB3aGF0Ci0gKiBkaXNwbGF5IGRldmljZXMgYXJlIGNvbm5lY3RlZCB0byB0aGUgR1BVIG9yIEdQ
VSBkcml2aW5nIHRoZQotICogc3BlY2lmaWVkIFggc2NyZWVuLiAgUmV0dXJucyBhIGRpc3BsYXkg
bWFzay4KLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNU
UkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVf
R1BVIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0LgotICovCi0KLSNkZWZp
bmUgTlZfQ1RSTF9QUk9CRV9ESVNQTEFZUyAyMzQgLyogUi0tRyAqLwotCi0vKgotICogTlZfQ1RS
TF9SRUZSRVNIX1JBVEUgLSBSZXR1cm5zIHRoZSByZWZyZXNoIHJhdGUgb2YgdGhlIHNwZWNpZmll
ZAotICogZGlzcGxheSBkZXZpY2UgaW4gMTAwICogSHogKGllLiB0byBnZXQgdGhlIHJlZnJlc2gg
cmF0ZSBpbiBIeiwgZGl2aWRlCi0gKiB0aGUgcmV0dXJuZWQgdmFsdWUgYnkgMTAwLikKLSAqCi0g
KiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdl
dEF0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIG9yIE5WX0NU
UkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9S
RUZSRVNIX1JBVEUgMjM1IC8qIFItREcgKi8KLQotLyoKLSAqIE5WX0NUUkxfR1ZPX0ZMSVBfUVVF
VUVfU0laRSAtIFRoZSBHcmFwaGljcyB0byBWaWRlbyBPdXQgaW50ZXJmYWNlCi0gKiBleHBvc2Vk
IHRocm91Z2ggTlYtQ09OVFJPTCBhbmQgdGhlIEdMWF9OVl92aWRlb19vdXQgZXh0ZW5zaW9uIHVz
ZXMKLSAqIGFuIGludGVybmFsIGZsaXAgcXVldWUgd2hlbiBwYnVmZmVycyBhcmUgc2VudCB0byB0
aGUgdmlkZW8gZGV2aWNlCi0gKiAodmlhIGdsWFNlbmRQYnVmZmVyVG9WaWRlb05WKCkpLiAgVGhl
IE5WX0NUUkxfR1ZPX0ZMSVBfUVVFVUVfU0laRQotICogY2FuIGJlIHVzZWQgdG8gcXVlcnkgYW5k
IGFzc2lnbiB0aGUgZmxpcCBxdWV1ZSBzaXplLiAgVGhpcwotICogYXR0cmlidXRlIGlzIGFwcGxp
ZWQgdG8gR0xYIHdoZW4gZ2xYR2V0VmlkZW9EZXZpY2VOVigpIGlzIGNhbGxlZCBieQotICogdGhl
IGFwcGxpY2F0aW9uLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fRkxJUF9RVUVVRV9TSVpF
IDIzNiAvKiBSVy0gKi8KLQotLyoKLSAqIE5WX0NUUkxfQ1VSUkVOVF9TQ0FOTElORSAtIHF1ZXJ5
IHRoZSBjdXJyZW50IHNjYW5saW5lIGZvciB0aGUKLSAqIHNwZWNpZmllZCBkaXNwbGF5IGRldmlj
ZS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfQ1VSUkVOVF9TQ0FOTElORSAyMzcgLyogUi1ERyAq
LwotCi0vKgotICogTlZfQ1RSTF9JTklUSUFMX1BJWE1BUF9QTEFDRU1FTlQgLSBDb250cm9scyB3
aGVyZSBYIHBpeG1hcHMgYXJlIGluaXRpYWxseQotICogY3JlYXRlZC4KLSAqCi0gKiBOVl9DVFJM
X0lOSVRJQUxfUElYTUFQX1BMQUNFTUVOVF9GT1JDRV9TWVNNRU0gY2F1c2VzIHBpeG1hcHMgdG8g
c3RheSBpbgotICogc3lzdGVtIG1lbW9yeS4gVGhlc2UgcGl4bWFwcyBjYW4ndCBiZSBhY2NlbGVy
YXRlZCBieSB0aGUgTlZJRElBIGRyaXZlcjsgdGhpcwotICogd2lsbCBjYXVzZSBibGFuayB3aW5k
b3dzIGlmIHVzZWQgd2l0aCBhbiBPcGVuR0wgY29tcG9zaXRpbmcgbWFuYWdlci4KLSAqIE5WX0NU
UkxfSU5JVElBTF9QSVhNQVBfUExBQ0VNRU5UX1NZU01FTSBjcmVhdGVzIHBpeG1hcHMgaW4gc3lz
dGVtIG1lbW9yeQotICogaW5pdGlhbGx5LCBidXQgYWxsb3dzIHRoZW0gdG8gbWlncmF0ZSB0byB2
aWRlbyBtZW1vcnkuCi0gKiBOVl9DVFJMX0lOSVRJQUxfUElYTUFQX1BMQUNFTUVOVF9WSURNRU0g
Y3JlYXRlcyBwaXhtYXBzIGluIHZpZGVvIG1lbW9yeQotICogd2hlbiBlbm91Z2ggcmVzb3VyY2Vz
IGFyZSBhdmFpbGFibGUuCi0gKiBOVl9DVFJMX0lOSVRJQUxfUElYTUFQX1BMQUNFTUVOVF9SRVNF
UlZFRCBpcyBjdXJyZW50bHkgcmVzZXJ2ZWQgZm9yIGZ1dHVyZQotICogdXNlLiAgQmVoYXZpb3Ig
aXMgdW5kZWZpbmVkLgotICogTlZfQ1RSTF9JTklUSUFMX1BJWE1BUF9QTEFDRU1FTlRfR1BVX1NZ
U01FTSBjcmVhdGVzIHBpeG1hcHMgaW4gR1BVIGFjY2Vzc2libGUKLSAqIHN5c3RlbSBtZW1vcnkg
d2hlbiBlbm91Z2ggcmVzb3VyY2VzIGFyZSBhdmFpbGFibGUuCi0gKi8KLQotI2RlZmluZSBOVl9D
VFJMX0lOSVRJQUxfUElYTUFQX1BMQUNFTUVOVCAyMzggLyogUlctICovCi0jZGVmaW5lIE5WX0NU
UkxfSU5JVElBTF9QSVhNQVBfUExBQ0VNRU5UX0ZPUkNFX1NZU01FTSAwCi0jZGVmaW5lIE5WX0NU
UkxfSU5JVElBTF9QSVhNQVBfUExBQ0VNRU5UX1NZU01FTSAxCi0jZGVmaW5lIE5WX0NUUkxfSU5J
VElBTF9QSVhNQVBfUExBQ0VNRU5UX1ZJRE1FTSAyCi0jZGVmaW5lIE5WX0NUUkxfSU5JVElBTF9Q
SVhNQVBfUExBQ0VNRU5UX1JFU0VSVkVEIDMKLSNkZWZpbmUgTlZfQ1RSTF9JTklUSUFMX1BJWE1B
UF9QTEFDRU1FTlRfR1BVX1NZU01FTSA0Ci0KLS8qCi0gKiBOVl9DVFJMX1BDSV9CVVMgLSBSZXR1
cm5zIHRoZSBQQ0kgYnVzIG51bWJlciB0aGUgc3BlY2lmaWVkIGRldmljZSBpcyB1c2luZy4KLSAq
LwotCi0jZGVmaW5lIE5WX0NUUkxfUENJX0JVUyAyMzkgLyogUi0tR0kgKi8KLQotLyoKLSAqIE5W
X0NUUkxfUENJX0RFVklDRSAtIFJldHVybnMgdGhlIFBDSSBkZXZpY2UgbnVtYmVyIHRoZSBzcGVj
aWZpZWQgZGV2aWNlIGlzCi0gKiB1c2luZy4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfUENJX0RF
VklDRSAyNDAgLyogUi0tR0kgKi8KLQotLyoKLSAqIE5WX0NUUkxfUENJX0ZVTkNUSU9OIC0gUmV0
dXJucyB0aGUgUENJIGZ1bmN0aW9uIG51bWJlciB0aGUgc3BlY2lmaWVkIGRldmljZQotICogaXMg
dXNpbmcuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1BDSV9GVU5DVElPTiAyNDEgLyogUi0tR0kg
Ki8KLQotLyoKLSAqIE5WX0NUUkxfRlJBTUVMT0NLX0ZQR0FfUkVWSVNJT04gLSBRdWVyeXMgdGhl
IEZQR0EgcmV2aXNpb24gb2YgdGhlCi0gKiBGcmFtZSBMb2NrIGRldmljZS4KLSAqCi0gKiBUaGlz
IGF0dHJpYnV0ZSBtdXN0IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRy
aWJ1dGUoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0ZSQU1FTE9DSyB0YXJnZXQu
Ci0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0ZSQU1FTE9DS19GUEdBX1JFVklTSU9OIDI0MiAvKiBS
LS1GICovCi0KLS8qCi0gKiBOVl9DVFJMX01BWF9TQ1JFRU5fe1dJRFRILEhFSUdIVH0gLSB0aGUg
bWF4aW11bSBhbGxvd2FibGUgc2l6ZSwgaW4KLSAqIHBpeGVscywgb2YgZWl0aGVyIHRoZSBzcGVj
aWZpZWQgWCBzY3JlZW4gKGlmIHRoZSB0YXJnZXRfdHlwZSBvZiB0aGUKLSAqIHF1ZXJ5IGlzIGFu
IFggc2NyZWVuKSwgb3IgYW55IFggc2NyZWVuIG9uIHRoZSBzcGVjaWZpZWQgR1BVIChpZiB0aGUK
LSAqIHRhcmdldF90eXBlIG9mIHRoZSBxdWVyeSBpcyBhIEdQVSkuCi0gKi8KLQotI2RlZmluZSBO
Vl9DVFJMX01BWF9TQ1JFRU5fV0lEVEggMjQzICAvKiBSLS1HICovCi0jZGVmaW5lIE5WX0NUUkxf
TUFYX1NDUkVFTl9IRUlHSFQgMjQ0IC8qIFItLUcgKi8KLQotLyoKLSAqIE5WX0NUUkxfTUFYX0RJ
U1BMQVlTIC0gdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpc3BsYXkgZGV2aWNlcyB0aGF0Ci0gKiBj
YW4gYmUgZHJpdmVuIHNpbXVsdGFuZW91c2x5IG9uIGEgR1BVIChlLmcuLCB0aGF0IGNhbiBiZSB1
c2VkIGluIGEKLSAqIE1ldGFNb2RlIGF0IG9uY2UpLiAgTm90ZSB0aGF0IHRoaXMgZG9lcyBub3Qg
aW5kaWNhdGUgdGhlIG1heGltdW0KLSAqIG51bWJlciBvZiBiaXRzIHRoYXQgY2FuIGJlIHNldCBp
biBOVl9DVFJMX0NPTk5FQ1RFRF9ESVNQTEFZUywKLSAqIGJlY2F1c2UgbW9yZSBkaXNwbGF5IGRl
dmljZXMgY2FuIGJlIGNvbm5lY3RlZCB0aGFuIGFyZSBhY3RpdmVseSBpbgotICogdXNlLgotICov
Ci0KLSNkZWZpbmUgTlZfQ1RSTF9NQVhfRElTUExBWVMgMjQ1IC8qIFItLUcgKi8KLQotLyoKLSAq
IE5WX0NUUkxfRFlOQU1JQ19UV0lOVklFVyAtIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHNj
cmVlbgotICogc3VwcG9ydHMgZHluYW1pYyB0d2ludmlldy4KLSAqLwotCi0jZGVmaW5lIE5WX0NU
UkxfRFlOQU1JQ19UV0lOVklFVyAyNDYgLyogUi0tICovCi0KLS8qCi0gKiBOVl9DVFJMX01VTFRJ
R1BVX0RJU1BMQVlfT1dORVIgLSBSZXR1cm5zIHRoZSAoTlYtQ09OVFJPTCkgR1BVIElEIG9mCi0g
KiB0aGUgR1BVIHRoYXQgaGFzIHRoZSBkaXNwbGF5IGRldmljZShzKSB1c2VkIGZvciBzaG93aW5n
IHRoZSBYIFNjcmVlbi4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfTVVMVElHUFVfRElTUExBWV9P
V05FUiAyNDcgLyogUi0tICovCi0KLS8qCi0gKiBOVl9DVFJMX0dQVV9TQ0FMSU5HIC0gbm90IHN1
cHBvcnRlZAotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfU0NBTElORyAyNDggLyogUldERyAq
LwotCi0jZGVmaW5lIE5WX0NUUkxfR1BVX1NDQUxJTkdfVEFSR0VUX0lOVkFMSUQgMAotI2RlZmlu
ZSBOVl9DVFJMX0dQVV9TQ0FMSU5HX1RBUkdFVF9GTEFUUEFORUxfQkVTVF9GSVQgMQotI2RlZmlu
ZSBOVl9DVFJMX0dQVV9TQ0FMSU5HX1RBUkdFVF9GTEFUUEFORUxfTkFUSVZFIDIKLQotI2RlZmlu
ZSBOVl9DVFJMX0dQVV9TQ0FMSU5HX01FVEhPRF9JTlZBTElEIDAKLSNkZWZpbmUgTlZfQ1RSTF9H
UFVfU0NBTElOR19NRVRIT0RfU1RSRVRDSEVEIDEKLSNkZWZpbmUgTlZfQ1RSTF9HUFVfU0NBTElO
R19NRVRIT0RfQ0VOVEVSRUQgMgotI2RlZmluZSBOVl9DVFJMX0dQVV9TQ0FMSU5HX01FVEhPRF9B
U1BFQ1RfU0NBTEVEIDMKLQotLyoKLSAqIE5WX0NUUkxfRlJPTlRFTkRfUkVTT0xVVElPTiAtIG5v
dCBzdXBwb3J0ZWQKLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfRlJPTlRFTkRfUkVTT0xVVElPTiAy
NDkgLyogUi1ERyAqLwotCi0vKgotICogTlZfQ1RSTF9CQUNLRU5EX1JFU09MVVRJT04gLSBub3Qg
c3VwcG9ydGVkCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0JBQ0tFTkRfUkVTT0xVVElPTiAyNTAg
LyogUi1ERyAqLwotCi0vKgotICogTlZfQ1RSTF9GTEFUUEFORUxfTkFUSVZFX1JFU09MVVRJT04g
LSBSZXR1cm5zIHRoZSBkaW1lbnNpb25zIG9mIHRoZQotICogbmF0aXZlIHJlc29sdXRpb24gb2Yg
dGhlIGZsYXQgcGFuZWwgYXMgZGV0ZXJtaW5lZCBieSB0aGUKLSAqIE5WSURJQSBYIERyaXZlci4K
LSAqCi0gKiBUaGUgbmF0aXZlIHJlc29sdXRpb24gaXMgdGhlIHJlc29sdXRpb24gYXQgd2hpY2gg
YSBmbGF0IHBhbmVsCi0gKiBtdXN0IGRpc3BsYXkgYW55IGltYWdlLiAgQWxsIG90aGVyIHJlc29s
dXRpb25zIG11c3QgYmUgc2NhbGVkIHRvIHRoaXMKLSAqIHJlc29sdXRpb24gdGhyb3VnaCBHUFUg
c2NhbGluZyBvciB0aGUgREZQJ3MgbmF0aXZlIHNjYWxpbmcgY2FwYWJpbGl0aWVzCi0gKiBpbiBv
cmRlciB0byBiZSBkaXNwbGF5ZWQuCi0gKgotICogVGhpcyBhdHRyaWJ1dGUgaXMgb25seSB2YWxp
ZCBmb3IgZmxhdCBwYW5lbCAoREZQKSBkaXNwbGF5IGRldmljZXMuCi0gKgotICogVGhpcyBhdHRy
aWJ1dGUgaXMgYSBwYWNrZWQgaW50ZWdlcjsgdGhlIHdpZHRoIGlzIHBhY2tlZCBpbiB0aGUgdXBw
ZXIKLSAqIDE2LWJpdHMgYW5kIHRoZSBoZWlnaHQgaXMgcGFja2VkIGluIHRoZSBsb3dlciAxNi1i
aXRzLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9GTEFUUEFORUxfTkFUSVZFX1JFU09MVVRJT04g
MjUxIC8qIFItREcgKi8KLQotLyoKLSAqIE5WX0NUUkxfRkxBVFBBTkVMX0JFU1RfRklUX1JFU09M
VVRJT04gLSBub3Qgc3VwcG9ydGVkCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0ZMQVRQQU5FTF9C
RVNUX0ZJVF9SRVNPTFVUSU9OIDI1MiAvKiBSLURHICovCi0KLS8qCi0gKiBOVl9DVFJMX0dQVV9T
Q0FMSU5HX0FDVElWRSAtIG5vdCBzdXBwb3J0ZWQKLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1BV
X1NDQUxJTkdfQUNUSVZFIDI1MyAvKiBSLURHICovCi0KLS8qCi0gKiBOVl9DVFJMX0RGUF9TQ0FM
SU5HX0FDVElWRSAtIG5vdCBzdXBwb3J0ZWQKLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfREZQX1ND
QUxJTkdfQUNUSVZFIDI1NCAvKiBSLURHICovCi0KLS8qCi0gKiBOVl9DVFJMX0ZTQUFfQVBQTElD
QVRJT05fRU5IQU5DRUQgLSBDb250cm9scyBob3cgdGhlIE5WX0NUUkxfRlNBQV9NT0RFCi0gKiBp
cyBhcHBsaWVkIHdoZW4gTlZfQ1RSTF9GU0FBX0FQUExJQ0FUSU9OX0NPTlRST0xMRUQgaXMgc2V0
IHRvCi0gKiBOVl9DVFJMX0FQUExJQ0FUSU9OX0NPTlRST0xMRURfRElTQUJMRUQuICBXaGVuCi0g
KiBOVl9DVFJMX0ZTQUFfQVBQTElDQVRJT05fRU5IQU5DRUQgaXMgX0RJU0FCTEVELCBPcGVuR0wg
YXBwbGljYXRpb25zIHdpbGwKLSAqIGJlIGZvcmNlZCB0byB1c2UgdGhlIEZTQUEgbW9kZSBzcGVj
aWZpZWQgYnkgTlZfQ1RSTF9GU0FBX01PREUuICB3aGVuIHNldAotICogdG8gX0VOQUJMRUQsIG9u
bHkgdGhvc2UgYXBwbGljYXRpb25zIHRoYXQgaGF2ZSBzZWxlY3RlZCBhIG11bHRpc2FtcGxlCi0g
KiBGQkNvbmZpZyB3aWxsIGJlIG1hZGUgdG8gdXNlIHRoZSBOVl9DVFJMX0ZTQUFfTU9ERSBzcGVj
aWZpZWQuCi0gKgotICogVGhpcyBhdHRyaWJ1dGUgaXMgaWdub3JlZCB3aGVuIE5WX0NUUkxfRlNB
QV9BUFBMSUNBVElPTl9DT05UUk9MTEVEIGlzCi0gKiBzZXQgdG8gTlZfQ1RSTF9GU0FBX0FQUExJ
Q0FUSU9OX0NPTlRST0xMRURfRU5BQkxFRC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfRlNBQV9B
UFBMSUNBVElPTl9FTkhBTkNFRCAyNTUgLyogUlctWCAqLwotI2RlZmluZSBOVl9DVFJMX0ZTQUFf
QVBQTElDQVRJT05fRU5IQU5DRURfRU5BQkxFRCAxCi0jZGVmaW5lIE5WX0NUUkxfRlNBQV9BUFBM
SUNBVElPTl9FTkhBTkNFRF9ESVNBQkxFRCAwCi0KLS8qCi0gKiBOVl9DVFJMX0ZSQU1FTE9DS19T
WU5DX1JBVEVfNCAtIFRoaXMgaXMgdGhlIHJlZnJlc2ggcmF0ZSB0aGF0IHRoZQotICogZnJhbWUg
bG9jayBib2FyZCBpcyBzZW5kaW5nIHRvIHRoZSBHUFUgd2l0aCA0IGRpZ2l0cyBvZiBwcmVjaXNp
b24uCi0gKgotICogVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJM
UXVlcnlUYXJnZXRBdHRyaWJ1dGUoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0ZS
QU1FTE9DSy4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfUkFURV80IDI1
NiAvKiBSLS1GICovCi0KLS8qCi0gKiBOVl9DVFJMX0dWT19MT0NLX09XTkVSIC0gaW5kaWNhdGVz
IHRoYXQgdGhlIEdWTyBkZXZpY2UgaXMgYXZhaWxhYmxlCi0gKiBvciBpbiB1c2UgKGJ5IEdMWCBv
ciBhbiBYIHNjcmVlbikuCi0gKgotICogVGhlIEdWTyBkZXZpY2UgaXMgbG9ja2VkIGJ5IEdMWCB3
aGVuIGVpdGhlciBnbFhHZXRWaWRlb0RldmljZU5WCi0gKiAocGFydCBvZiBHTFhfTlZfdmlkZW9f
b3V0KSBvciBnbFhCaW5kVmlkZW9EZXZpY2VOViAocGFydCBvZgotICogR0xYX05WX3ByZXNlbnRf
dmlkZW8pIGlzIGNhbGxlZC4gIEFsbCBHVk8gb3V0cHV0IHJlc291cmNlcyBhcmUKLSAqIGxvY2tl
ZCB1bnRpbCByZWxlYXNlZCBieSB0aGUgR0xYX05WX3ZpZGVvX291dC9HTFhfTlZfcHJlc2VudF92
aWRlbwotICogY2xpZW50LgotICoKLSAqIFRoZSBHVk8gZGV2aWNlIGlzIGxvY2tlZC91bmxvY2tl
ZCBieSBhbiBYIHNjcmVlbiwgd2hlbiB0aGUgR1ZPIGRldmljZSBpcwotICogdXNlZCBpbiBhIE1l
dGFNb2RlIG9uIGFuIFggc2NyZWVuLgotICoKLSAqIFdoZW4gdGhlIEdWTyBkZXZpY2UgaXMgbG9j
a2VkLCBzZXR0aW5nIG9mIHRoZSBmb2xsb3dpbmcgR1ZPIE5WLUNPTlRST0wKLSAqIGF0dHJpYnV0
ZXMgd2lsbCBub3QgaGFwcGVuIGltbWVkaWF0ZWx5IGFuZCB3aWxsIGluc3RlYWQgYmUgY2FjaGVk
LiAgVGhlCi0gKiBHVk8gcmVzb3VyY2Ugd2lsbCBuZWVkIHRvIGJlIGRpc2FibGVkL3JlbGVhc2Vk
IGFuZCByZS1lbmFibGVkL2NsYWltZWQgZm9yCi0gKiB0aGUgdmFsdWVzIHRvIGJlIGZsdXNoZWQu
IFRoZXNlIGF0dHJpYnV0ZXMgYXJlOgotICoKLSAqICAgIE5WX0NUUkxfR1ZJT19SRVFVRVNURURf
VklERU9fRk9STUFUCi0gKiAgICBOVl9DVFJMX0dWT19EQVRBX0ZPUk1BVAotICogICAgTlZfQ1RS
TF9HVk9fRkxJUF9RVUVVRV9TSVpFCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWT19MT0NLX09X
TkVSIDI1NyAvKiBSLS0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fTE9DS19PV05FUl9OT05FIDAK
LSNkZWZpbmUgTlZfQ1RSTF9HVk9fTE9DS19PV05FUl9HTFggMQotI2RlZmluZSBOVl9DVFJMX0dW
T19MT0NLX09XTkVSX0NMT05FIC8qIG5vIGxvbmdlciBzdXBwb3J0ZWQgKi8gMgotI2RlZmluZSBO
Vl9DVFJMX0dWT19MT0NLX09XTkVSX1hfU0NSRUVOIDMKLQotLyoKLSAqIE5WX0NUUkxfSFdPVkVS
TEFZIC0gd2hlbiBhIHdvcmtzdGF0aW9uIG92ZXJsYXkgaXMgaW4gdXNlLCByZXBvcnRzCi0gKiB3
aGV0aGVyIHRoZSBoYXJkd2FyZSBvdmVybGF5IGlzIHVzZWQsIG9yIGlmIHRoZSBvdmVybGF5IGlz
IGVtdWxhdGVkLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9IV09WRVJMQVkgMjU4IC8qIFItLSAq
LwotI2RlZmluZSBOVl9DVFJMX0hXT1ZFUkxBWV9GQUxTRSAwCi0jZGVmaW5lIE5WX0NUUkxfSFdP
VkVSTEFZX1RSVUUgMQotCi0vKgotICogTlZfQ1RSTF9OVU1fR1BVX0VSUk9SU19SRUNPVkVSRUQg
LSBSZXR1cm5zIHRoZSBudW1iZXIgb2YgR1BVIGVycm9ycwotICogb2NjdXJlZC4gVGhpcyBhdHRy
aWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUo
KQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIHRhcmdldC4KLSAqLwot
Ci0jZGVmaW5lIE5WX0NUUkxfTlVNX0dQVV9FUlJPUlNfUkVDT1ZFUkVEIDI1OSAvKiBSLS0tICov
Ci0KLS8qCi0gKiBOVl9DVFJMX1JFRlJFU0hfUkFURV8zIC0gUmV0dXJucyB0aGUgcmVmcmVzaCBy
YXRlIG9mIHRoZSBzcGVjaWZpZWQKLSAqIGRpc3BsYXkgZGV2aWNlIGluIDEwMDAgKiBIeiAoaWUu
IHRvIGdldCB0aGUgcmVmcmVzaCByYXRlIGluIEh6LCBkaXZpZGUKLSAqIHRoZSByZXR1cm5lZCB2
YWx1ZSBieSAxMDAwLikKLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJv
dWdoIFhOVkNUUkxRdWVyeVRhcmdldEF0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFS
R0VUX1RZUEVfR1BVIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0LgotICov
Ci0KLSNkZWZpbmUgTlZfQ1RSTF9SRUZSRVNIX1JBVEVfMyAyNjAgLyogUi1ERyAqLwotCi0vKgot
ICogTlZfQ1RSTF9PTkRFTUFORF9WQkxBTktfSU5URVJSVVBUUyAtIGlmIHRoZSBPbkRlbWFuZFZC
bGFua0ludGVycnVwdHMKLSAqIFggZHJpdmVyIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZSwgdGhpcyBh
dHRyaWJ1dGUgY2FuIGJlIHVzZWQgdG8KLSAqIGRldGVybWluZSBpZiBvbi1kZW1hbmQgVkJsYW5r
IGludGVycnVwdCBjb250cm9sIGlzIGVuYWJsZWQgb24gdGhlCi0gKiBzcGVjaWZpZWQgR1BVLCBh
cyB3ZWxsIGFzIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoaXMgZmVhdHVyZS4KLSAqLwotCi0jZGVm
aW5lIE5WX0NUUkxfT05ERU1BTkRfVkJMQU5LX0lOVEVSUlVQVFMgMjYxIC8qIFJXLUcgKi8KLSNk
ZWZpbmUgTlZfQ1RSTF9PTkRFTUFORF9WQkxBTktfSU5URVJSVVBUU19PRkYgMAotI2RlZmluZSBO
Vl9DVFJMX09OREVNQU5EX1ZCTEFOS19JTlRFUlJVUFRTX09OIDEKLQotLyoKLSAqIE5WX0NUUkxf
R1BVX1BPV0VSX1NPVVJDRSByZXBvcnRzIHRoZSB0eXBlIG9mIHBvd2VyIHNvdXJjZQotICogb2Yg
dGhlIEdQVSBkcml2aW5nIHRoZSBYIHNjcmVlbi4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1BV
X1BPV0VSX1NPVVJDRSAyNjIgLyogUi0tRyAqLwotI2RlZmluZSBOVl9DVFJMX0dQVV9QT1dFUl9T
T1VSQ0VfQUMgMAotI2RlZmluZSBOVl9DVFJMX0dQVV9QT1dFUl9TT1VSQ0VfQkFUVEVSWSAxCi0K
LS8qCi0gKiBOVl9DVFJMX0dQVV9DVVJSRU5UX1BFUkZPUk1BTkNFX01PREUgaXMgZGVwcmVjYXRl
ZAotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfQ1VSUkVOVF9QRVJGT1JNQU5DRV9NT0RFIDI2
MyAvKiBSLS1HICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0NVUlJFTlRfUEVSRk9STUFOQ0VfTU9E
RV9ERVNLVE9QIDAKLSNkZWZpbmUgTlZfQ1RSTF9HUFVfQ1VSUkVOVF9QRVJGT1JNQU5DRV9NT0RF
X01BWFBFUkYgMQotCi0vKiBOVl9DVFJMX0dMWVBIX0NBQ0hFIC0gRW5hYmxlcyBSRU5ERVIgR2x5
cGggQ2FjaGluZyB0byBWUkFNICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HTFlQSF9DQUNIRSAyNjQg
LyogUlctICovCi0jZGVmaW5lIE5WX0NUUkxfR0xZUEhfQ0FDSEVfRElTQUJMRUQgMAotI2RlZmlu
ZSBOVl9DVFJMX0dMWVBIX0NBQ0hFX0VOQUJMRUQgMQotCi0vKgotICogTlZfQ1RSTF9HUFVfQ1VS
UkVOVF9QRVJGT1JNQU5DRV9MRVZFTCByZXBvcnRzIHRoZSBjdXJyZW50Ci0gKiBQZXJmb3JtYW5j
ZSBsZXZlbCBvZiB0aGUgR1BVIGRyaXZpbmcgdGhlIFggc2NyZWVuLiAgRWFjaAotICogUGVyZm9y
bWFuY2UgbGV2ZWwgaGFzIGFzc29jaWF0ZWQgTlZDbG9jayBhbmQgTWVtIENsb2NrIHZhbHVlcy4K
LSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0NVUlJFTlRfUEVSRk9STUFOQ0VfTEVWRUwgMjY1
IC8qIFItLUcgKi8KLQotLyoKLSAqIE5WX0NUUkxfR1BVX0FEQVBUSVZFX0NMT0NLX1NUQVRFIHJl
cG9ydHMgaWYgQWRhcHRpdmUgQ2xvY2tpbmcKLSAqIGlzIEVuYWJsZWQgb24gdGhlIEdQVSBkcml2
aW5nIHRoZSBYIHNjcmVlbi4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0FEQVBUSVZFX0NM
T0NLX1NUQVRFIDI2NiAvKiBSLS1HICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0FEQVBUSVZFX0NM
T0NLX1NUQVRFX0RJU0FCTEVEIDAKLSNkZWZpbmUgTlZfQ1RSTF9HUFVfQURBUFRJVkVfQ0xPQ0tf
U1RBVEVfRU5BQkxFRCAxCi0KLS8qCi0gKiBOVl9DVFJMX0dWT19PVVRQVVRfVklERU9fTE9DS0VE
IC0gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgR1ZPIG91dHB1dAotICogdmlkZW8gaXMgbG9j
a2VkIHRvIHRoZSBHUFUuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWT19PVVRQVVRfVklERU9f
TE9DS0VEIDI2NyAvKiBSLS0tICovCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX09VVFBVVF9WSURFT19M
T0NLRURfRkFMU0UgMAotI2RlZmluZSBOVl9DVFJMX0dWT19PVVRQVVRfVklERU9fTE9DS0VEX1RS
VUUgMQotCi0vKgotICogTlZfQ1RSTF9HVk9fU1lOQ19MT0NLX1NUQVRVUyAtIFJldHVybnMgd2hl
dGhlciBvciBub3QgdGhlIEdWTyBkZXZpY2UKLSAqIGlzIGxvY2tlZCB0byB0aGUgaW5wdXQgcmVm
IHNpZ25hbC4gIElmIHRoZSBzeW5jIG1vZGUgaXMgc2V0IHRvCi0gKiBOVl9DVFJMX0dWT19TWU5D
X01PREVfR0VOTE9DSywgdGhlbiB0aGlzIHJldHVybnMgdGhlIGdlbmxvY2sKLSAqIHN5bmMgc3Rh
dHVzLCBhbmQgaWYgdGhlIHN5bmMgbW9kZSBpcyBzZXQgdG8gTlZfQ1RSTF9HVk9fU1lOQ19NT0RF
X0ZSQU1FTE9DSywKLSAqIHRoZW4gdGhpcyByZXBvcnRzIHRoZSBmcmFtZSBsb2NrIHN0YXR1cy4K
LSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX1NZTkNfTE9DS19TVEFUVVMgMjY4IC8qIFItLS0g
Ki8KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fU1lOQ19MT0NLX1NUQVRVU19VTkxPQ0tFRCAwCi0jZGVm
aW5lIE5WX0NUUkxfR1ZPX1NZTkNfTE9DS19TVEFUVVNfTE9DS0VEIDEKLQotLyoKLSAqIE5WX0NU
UkxfR1ZPX0FOQ19USU1FX0NPREVfR0VORVJBVElPTiAtIEFsbG93cyBTREkgZGV2aWNlIHRvIGdl
bmVyYXRlCi0gKiB0aW1lIGNvZGVzIGluIHRoZSBBTkMgcmVnaW9uIG9mIHRoZSBTREkgdmlkZW8g
b3V0cHV0IHN0cmVhbS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0FOQ19USU1FX0NPREVf
R0VORVJBVElPTiAyNjkgLyogUlctLSAqLwotI2RlZmluZSBOVl9DVFJMX0dWT19BTkNfVElNRV9D
T0RFX0dFTkVSQVRJT05fRElTQUJMRSAwCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0FOQ19USU1FX0NP
REVfR0VORVJBVElPTl9FTkFCTEUgMQotCi0vKgotICogTlZfQ1RSTF9HVk9fQ09NUE9TSVRFIC0g
RW5hYmxlcy9EaXNhYmxlcyBTREkgY29tcG9zaXRpbmcuICBUaGlzIGF0dHJpYnV0ZQotICogaXMg
b25seSBhdmFpbGFibGUgd2hlbiBhbiBTREkgaW5wdXQgc291cmNlIGlzIGRldGVjdGVkIGFuZCBp
cyBpbiBnZW5sb2NrCi0gKiBtb2RlLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fQ09NUE9T
SVRFIDI3MCAvKiBSVy0tICovCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9ESVNBQkxF
IDAKLSNkZWZpbmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX0VOQUJMRSAxCi0KLS8qCi0gKiBOVl9D
VFJMX0dWT19DT01QT1NJVEVfQUxQSEFfS0VZIC0gV2hlbiBjb21wb3NpdGluZyBpcyBlbmFibGVk
LCB0aGlzCi0gKiBlbmFibGVzL2Rpc2FibGVzIGFscGhhIGJsZW5kaW5nLgotICovCi0KLSNkZWZp
bmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX0FMUEhBX0tFWSAyNzEgLyogUlctLSAqLwotI2RlZmlu
ZSBOVl9DVFJMX0dWT19DT01QT1NJVEVfQUxQSEFfS0VZX0RJU0FCTEUgMAotI2RlZmluZSBOVl9D
VFJMX0dWT19DT01QT1NJVEVfQUxQSEFfS0VZX0VOQUJMRSAxCi0KLS8qCi0gKiBOVl9DVFJMX0dW
T19DT01QT1NJVEVfTFVNQV9LRVlfUkFOR0UgLSBTZXQgdGhlIHZhbHVlcyBvZiBhIGx1bWEKLSAq
IGNoYW5uZWwgcmFuZ2UuICBUaGlzIGlzIGEgcGFja2VkIGludCB0aGF0IGhhcyB0aGUgZm9sbG93
aW5nIGZvcm1hdAotICogKGluIG9yZGVyIG9mIGhpZ2gtYml0cyB0byBsb3cgYml0cyk6Ci0gKgot
ICogUmFuZ2UgIyAoMTEgYml0cyksIChFbmFibGVkIDEgYml0KSwgbWluIHZhbHVlICgxMCBiaXRz
KSwgbWF4IHZhbHVlICgxMCBiaXRzKQotICoKLSAqIFRvIHF1ZXJ5IHRoZSBjdXJyZW50IHZhbHVl
cywgcGFzcyB0aGUgcmFuZ2UgIyB0aHJvdWdodCB0aGUgZGlzcGxheV9tYXNrCi0gKiB2YXJpYWJs
ZS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9MVU1BX0tFWV9SQU5HRSAy
NzIgLyogUlctLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0NPTVBPU0lURV9NQUtFX1JBTkdF
KHJhbmdlLCBlbmFibGUsIG1pbiwgbWF4KSAgICAgICAgICAgIFwKLSAgICAoKCgobWluKSYweDNG
RikgPDwgMCkgfCAoKChtYXgpJjB4M0ZGKSA8PCAxMCkgfCAoKChlbmFibGUpJjB4MSkgPDwgMjAp
IHwgXAotICAgICAoKChyYW5nZSkmMHg3RkYpIDw8IDIxKSkKLQotI2RlZmluZSBOVl9DVFJMX0dW
T19DT01QT1NJVEVfR0VUX1JBTkdFKHZhbCwgcmFuZ2UsIGVuYWJsZSwgbWluLCBtYXgpIFwKLSAg
ICAobWluKSA9ICgodmFsKSA+PiAwKSAmIDB4M0ZGOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgKG1heCkgPSAoKHZhbCkgPj4gMTApICYgMHgzRkY7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChlbmFibGUpID0gKCh2YWwpID4+IDIw
KSAmIDB4MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAocmFuZ2Up
ID0gKCh2YWwpID4+IDIxKSAmIDB4N0ZGOwotCi0vKgotICogTlZfQ1RSTF9HVk9fQ09NUE9TSVRF
X0NSX0tFWV9SQU5HRSAtIFNldCB0aGUgdmFsdWVzIG9mIGEgQ1IKLSAqIGNoYW5uZWwgcmFuZ2Uu
ICBUaGlzIGlzIGEgcGFja2VkIGludCB0aGF0IGhhcyB0aGUgZm9sbG93aW5nIGZvcm1hdAotICog
KGluIG9yZGVyIG9mIGhpZ2gtYml0cyB0byBsb3cgYml0cyk6Ci0gKgotICogUmFuZ2UgIyAoMTEg
Yml0cyksIChFbmFibGVkIDEgYml0KSwgbWluIHZhbHVlICgxMCBiaXRzKSwgbWF4IHZhbHVlICgx
MCBiaXRzKQotICoKLSAqIFRvIHF1ZXJ5IHRoZSBjdXJyZW50IHZhbHVlcywgcGFzcyB0aGUgcmFu
Z2UgIyB0aHJvdWdodCBoZSBkaXNwbGF5X21hc2sKLSAqIHZhcmlhYmxlLgotICovCi0KLSNkZWZp
bmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX0NSX0tFWV9SQU5HRSAyNzMgLyogUlctLSAqLwotCi0v
KgotICogTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX0NCX0tFWV9SQU5HRSAtIFNldCB0aGUgdmFsdWVz
IG9mIGEgQ0IKLSAqIGNoYW5uZWwgcmFuZ2UuICBUaGlzIGlzIGEgcGFja2VkIGludCB0aGF0IGhh
cyB0aGUgZm9sbG93aW5nIGZvcm1hdAotICogKGluIG9yZGVyIG9mIGhpZ2gtYml0cyB0byBsb3cg
Yml0cyk6Ci0gKgotICogUmFuZ2UgIyAoMTEgYml0cyksIChFbmFibGVkIDEgYml0KSwgbWluIHZh
bHVlICgxMCBiaXRzKSwgbWF4IHZhbHVlICgxMCBiaXRzKQotICoKLSAqIFRvIHF1ZXJ5IHRoZSBj
dXJyZW50IHZhbHVlcywgcGFzcyB0aGUgcmFuZ2UgIyB0aHJvdWdodCBoZSBkaXNwbGF5X21hc2sK
LSAqIHZhcmlhYmxlLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX0NCX0tF
WV9SQU5HRSAyNzQgLyogUlctLSAqLwotCi0vKgotICogTlZfQ1RSTF9HVk9fQ09NUE9TSVRFX05V
TV9LRVlfUkFOR0VTIC0gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHJhbmdlcwotICogYXZhaWxhYmxl
IGZvciBlYWNoIGNoYW5uZWwgKFkvTHVtYSwgQ3IsIGFuZCBDYi4pCi0gKi8KLQotI2RlZmluZSBO
Vl9DVFJMX0dWT19DT01QT1NJVEVfTlVNX0tFWV9SQU5HRVMgMjc1IC8qIFItLS0gKi8KLQotLyoK
LSAqIE5WX0NUUkxfU1dJVENIX1RPX0RJU1BMQVlTIC0gQ2FuIGJlIHVzZWQgdG8gc2VsZWN0IHdo
aWNoIGRpc3BsYXlzCi0gKiB0byBzd2l0Y2ggdG8gKGFzIGEgaG90a2V5IGV2ZW50KS4KLSAqLwot
Ci0jZGVmaW5lIE5WX0NUUkxfU1dJVENIX1RPX0RJU1BMQVlTIDI3NiAvKiAtVy0gKi8KLQotLyoK
LSAqIE5WX0NUUkxfTk9URUJPT0tfRElTUExBWV9DSEFOR0VfTElEX0VWRU5UIC0gRXZlbnQgdGhh
dCBub3RpZmllcwotICogd2hlbiBhIG5vdGVib29rIGxpZCBjaGFuZ2Ugb2NjdXJzIChpLmUuIHdo
ZW4gdGhlIGxpZCBpcyBvcGVuZWQgb3IKLSAqIGNsb3NlZC4pICBUaGlzIGF0dHJpYnV0ZSBjYW4g
YmUgcXVlcmllZCB0byByZXRyaWV2ZSB0aGUgY3VycmVudAotICogbm90ZWJvb2sgbGlkIHN0YXR1
cyAob3BlbmVkL2Nsb3NlZC4pCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX05PVEVCT09LX0RJU1BM
QVlfQ0hBTkdFX0xJRF9FVkVOVCAyNzcgLyogUlctICovCi0jZGVmaW5lIE5WX0NUUkxfTk9URUJP
T0tfRElTUExBWV9DSEFOR0VfTElEX0VWRU5UX0NMT1NFIDAKLSNkZWZpbmUgTlZfQ1RSTF9OT1RF
Qk9PS19ESVNQTEFZX0NIQU5HRV9MSURfRVZFTlRfT1BFTiAxCi0KLS8qCi0gKiBOVl9DVFJMX05P
VEVCT09LX0lOVEVSTkFMX0xDRCAtIFJldHVybnMgdGhlIGRpc3BsYXkgZGV2aWNlIG1hc2sgb2YK
LSAqIHRoZSBpbnRlbmFsIExDRCBvZiBhIG5vdGVib29rLgotICovCi0KLSNkZWZpbmUgTlZfQ1RS
TF9OT1RFQk9PS19JTlRFUk5BTF9MQ0QgMjc4IC8qIFItLSAqLwotCi0vKgotICogTlZfQ1RSTF9E
RVBUSF8zMF9BTExPV0VEIC0gcmV0dXJucyB3aGV0aGVyIHRoZSBOVklESUEgWCBkcml2ZXIgc3Vw
cG9ydHMKLSAqIGRlcHRoIDMwIG9uIHRoZSBzcGVjaWZpZWQgWCBzY3JlZW4gb3IgR1BVLgotICov
Ci0KLSNkZWZpbmUgTlZfQ1RSTF9ERVBUSF8zMF9BTExPV0VEIDI3OSAvKiBSLS1HICovCi0KLS8q
Ci0gKiBOVl9DVFJMX01PREVfU0VUX0VWRU5UIFRoaXMgYXR0cmlidXRlIGlzIHNlbnQgYXMgYW4g
ZXZlbnQKLSAqIHdoZW4gaG90a2V5LCBjdHJsLWFsdC0rLy0gb3IgcmFuZHIgZXZlbnQgb2NjdXJz
LiAgTm90ZSB0aGF0Ci0gKiBUaGlzIGF0dHJpYnV0ZSBjYW5ub3QgYmUgc2V0IG9yIHF1ZXJpZWQg
YW5kIGlzIG1lYW50IHRvCi0gKiBiZSByZWNlaXZlZCBieSBjbGllbnRzIHRoYXQgd2lzaCB0byBi
ZSBub3RpZmllZCBvZiB3aGVuCi0gKiBtb2RlIHNldCBldmVudHMgb2NjdXIuCi0gKi8KLQotI2Rl
ZmluZSBOVl9DVFJMX01PREVfU0VUX0VWRU5UIDI4MCAvKiAtLS0gKi8KLQotLyoKLSAqIE5WX0NU
UkxfT1BFTkdMX0FBX0xJTkVfR0FNTUFfVkFMVUUgLSB0aGUgZ2FtbWEgdmFsdWUgdXNlZCBieQot
ICogT3BlbkdMIHdoZW4gTlZfQ1RSTF9PUEVOR0xfQUFfTElORV9HQU1NQSBpcyBlbmFibGVkCi0g
Ki8KLQotI2RlZmluZSBOVl9DVFJMX09QRU5HTF9BQV9MSU5FX0dBTU1BX1ZBTFVFIDI4MSAvKiBS
Vy1YICovCi0KLS8qCi0gKiBOVl9DVFJMX1ZDU0NfSElHSF9QRVJGX01PREUgLSBJcyB1c2VkIHRv
IGJvdGggcXVlcnkgSGlnaCBQZXJmb3JtYW5jZSBNb2RlCi0gKiBzdGF0dXMgb24gdGhlIFZpc3Vh
bCBDb21wdXRpbmcgU3lzdGVtLCBhbmQgYWxzbyB0byBlbmFibGUgb3IgZGlzYWJsZSBIaWdoCi0g
KiBQZXJmb3JtYW5jZSBNb2RlLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9WQ1NDX0hJR0hfUEVS
Rl9NT0RFIDI4MiAvKiBSVy1WICovCi0jZGVmaW5lIE5WX0NUUkxfVkNTQ19ISUdIX1BFUkZfTU9E
RV9ESVNBQkxFIDAKLSNkZWZpbmUgTlZfQ1RSTF9WQ1NDX0hJR0hfUEVSRl9NT0RFX0VOQUJMRSAx
Ci0KLS8qCi0gKiBOVl9DVFJMX0RJU1BMQVlQT1JUX0xJTktfUkFURSAtIHJldHVybnMgdGhlIG5l
Z290aWF0ZWQgbGFuZSBiYW5kd2lkdGggb2YgdGhlCi0gKiBEaXNwbGF5UG9ydCBtYWluIGxpbmsu
Ci0gKiBUaGlzIGF0dHJpYnV0ZSBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgRGlzcGxheVBvcnQgZmxh
dCBwYW5lbHMuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0RJU1BMQVlQT1JUX0xJTktfUkFURSAy
OTEgLyogUi1ERyAqLwotI2RlZmluZSBOVl9DVFJMX0RJU1BMQVlQT1JUX0xJTktfUkFURV9ESVNB
QkxFRCAweDAKLSNkZWZpbmUgTlZfQ1RSTF9ESVNQTEFZUE9SVF9MSU5LX1JBVEVfMV82MkdCUFMg
MHg2Ci0jZGVmaW5lIE5WX0NUUkxfRElTUExBWVBPUlRfTElOS19SQVRFXzJfNzBHQlBTIDB4QQot
Ci0vKgotICogTlZfQ1RSTF9TVEVSRU9fRVlFU19FWENIQU5HRSAtIENvbnRyb2xzIHdoZXRoZXIg
b3Igbm90IHRoZSBsZWZ0IGFuZCByaWdodAotICogZXllcyBvZiBhIHN0ZXJlbyBpbWFnZSBhcmUg
ZmxpcHBlZC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfU1RFUkVPX0VZRVNfRVhDSEFOR0UgMjky
IC8qIFJXLVggKi8KLSNkZWZpbmUgTlZfQ1RSTF9TVEVSRU9fRVlFU19FWENIQU5HRV9PRkYgMAot
I2RlZmluZSBOVl9DVFJMX1NURVJFT19FWUVTX0VYQ0hBTkdFX09OIDEKLQotLyoKLSAqIE5WX0NU
UkxfTk9fU0NBTk9VVCAtIHJldHVybnMgd2hldGhlciB0aGUgc3BlY2lhbCAiTm9TY2Fub3V0IiBt
b2RlIGlzCi0gKiBlbmFibGVkIG9uIHRoZSBzcGVjaWZpZWQgWCBzY3JlZW4gb3IgR1BVOyBmb3Ig
ZGV0YWlscyBvbiB0aGlzIG1vZGUsCi0gKiBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSAibm9u
ZSIgdmFsdWUgZm9yIHRoZSAiVXNlRGlzcGxheURldmljZSIKLSAqIFggY29uZmlndXJhdGlvbiBv
cHRpb24gaW4gdGhlIE5WSURJQSBkcml2ZXIgUkVBRE1FLgotICovCi0KLSNkZWZpbmUgTlZfQ1RS
TF9OT19TQ0FOT1VUIDI5MyAvKiBSLS1HICovCi0jZGVmaW5lIE5WX0NUUkxfTk9fU0NBTk9VVF9E
SVNBQkxFRCAwCi0jZGVmaW5lIE5WX0NUUkxfTk9fU0NBTk9VVF9FTkFCTEVEIDEKLQotLyoKLSAq
IE5WX0NUUkxfR1ZPX0NTQ19DSEFOR0VEX0VWRU5UIFRoaXMgYXR0cmlidXRlIGlzIHNlbnQgYXMg
YW4gZXZlbnQKLSAqIHdoZW4gdGhlIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24gbWF0cml4IGhhcyBi
ZWVuIGFsdGVyZWQgYnkgYW5vdGhlcgotICogY2xpZW50LgotICovCi0KLSNkZWZpbmUgTlZfQ1RS
TF9HVk9fQ1NDX0NIQU5HRURfRVZFTlQgMjk0IC8qIC0tLSAqLwotCi0vKgotICogTlZfQ1RSTF9G
UkFNRUxPQ0tfU0xBVkVBQkxFIC0gUmV0dXJucyBhIGJpdG1hc2sgb2YgdGhlIGRpc3BsYXkgZGV2
aWNlcwotICogdGhhdCBhcmUgKGN1cnJlbnRseSkgYWxsb3dlZCB0byBiZSBzZWxlY3RlZCBhcyBz
bGF2ZSBkZXZpY2VzIGZvciB0aGUKLSAqIGdpdmVuIEdQVQotICovCi0KLSNkZWZpbmUgTlZfQ1RS
TF9GUkFNRUxPQ0tfU0xBVkVBQkxFIDI5NSAvKiBSLURHICovCi0KLS8qCi0gKiBOVl9DVFJMX0dW
T19TWU5DX1RPX0RJU1BMQVkgVGhpcyBhdHRyaWJ1dGUgY29udHJvbHMgd2hldGhlciBvciBub3QK
LSAqIHRoZSBub24tU0RJIGRpc3BsYXkgZGV2aWNlIHdpbGwgYmUgc3luYydlZCB0byB0aGUgU0RJ
IGRpc3BsYXkgZGV2aWNlCi0gKiAod2hlbiBjb25maWd1cmVkIGluIFR3aW5WaWV3LCBDbG9uZSBN
b2RlIG9yIHdoZW4gdXNpbmcgdGhlIFNESSBkZXZpY2UKLSAqIHdpdGggT3BlbkdMKS4KLSAqLwot
Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX1NZTkNfVE9fRElTUExBWSAyOTYgLyogLS0tICovCi0jZGVm
aW5lIE5WX0NUUkxfR1ZPX1NZTkNfVE9fRElTUExBWV9ESVNBQkxFIDAKLSNkZWZpbmUgTlZfQ1RS
TF9HVk9fU1lOQ19UT19ESVNQTEFZX0VOQUJMRSAxCi0KLS8qCi0gKiBOVl9DVFJMX1hfU0VSVkVS
X1VOSVFVRV9JRCAtIHJldHVybnMgYSBwc2V1ZG8tdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMK
LSAqIFggc2VydmVyLiBJbnRlbmRlZCBmb3IgdXNlIGluIGNhc2VzIHdoZXJlIGFuIE5WLUNPTlRS
T0wgY2xpZW50IGNvbW11bmljYXRlcwotICogd2l0aCBtdWx0aXBsZSBYIHNlcnZlcnMsIGFuZCB3
YW50cyBzb21lIGxldmVsIG9mIGNvbmZpZGVuY2UgdGhhdCB0d28KLSAqIFggRGlzcGxheSBjb25u
ZWN0aW9ucyBjb3JyZXNwb25kIHRvIHRoZSBzYW1lIG9yIGRpZmZlcmVudCBYIHNlcnZlcnMuCi0g
Ki8KLQotI2RlZmluZSBOVl9DVFJMX1hfU0VSVkVSX1VOSVFVRV9JRCAyOTcgLyogUi0tLSAqLwot
Ci0vKgotICogTlZfQ1RSTF9QSVhNQVBfQ0FDSEUgLSBUaGlzIGF0dHJpYnV0ZSBjb250cm9scyB3
aGV0aGVyIHRoZSBkcml2ZXIgYXR0ZW1wdHMgdG8KLSAqIHN0b3JlIHZpZGVvIG1lbW9yeSBwaXht
YXBzIGluIGEgY2FjaGUuICBUaGUgY2FjaGUgc3BlZWRzIHVwIGFsbG9jYXRpb24gYW5kCi0gKiBk
ZWFsbG9jYXRpb24gb2YgcGl4bWFwcywgYnV0IGNvdWxkIHVzZSBtb3JlIG1lbW9yeSB0aGFuIHdo
ZW4gdGhlIGNhY2hlIGlzCi0gKiBkaXNhYmxlZC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfUElY
TUFQX0NBQ0hFIDI5OCAvKiBSVy1YICovCi0jZGVmaW5lIE5WX0NUUkxfUElYTUFQX0NBQ0hFX0RJ
U0FCTEUgMAotI2RlZmluZSBOVl9DVFJMX1BJWE1BUF9DQUNIRV9FTkFCTEUgMQotCi0vKgotICog
TlZfQ1RSTF9QSVhNQVBfQ0FDSEVfUk9VTkRJTkdfU0laRV9LQiAtIFdoZW4gdGhlIHBpeG1hcCBj
YWNoZSBpcyBlbmFibGVkIGFuZAotICogdGhlcmUgaXMgbm90IGVub3VnaCBmcmVlIHNwYWNlIGlu
IHRoZSBjYWNoZSB0byBmaXQgYSBuZXcgcGl4bWFwLCB0aGUgZHJpdmVyCi0gKiB3aWxsIHJvdW5k
IHVwIHRvIHRoZSBuZXh0IG11bHRpcGxlIG9mIHRoaXMgbnVtYmVyIG9mIGtpbG9ieXRlcyB3aGVu
Ci0gKiBhbGxvY2F0aW5nIG1vcmUgbWVtb3J5IGZvciB0aGUgY2FjaGUuCi0gKi8KLQotI2RlZmlu
ZSBOVl9DVFJMX1BJWE1BUF9DQUNIRV9ST1VORElOR19TSVpFX0tCIDI5OSAvKiBSVy1YICovCi0K
LS8qCi0gKiBOVl9DVFJMX0lTX0dWT19ESVNQTEFZIC0gcmV0dXJucyB3aGV0aGVyIG9yIG5vdCBh
IGdpdmVuIGRpc3BsYXkgaXMgYW4KLSAqIFNESSBkZXZpY2UuCi0gKi8KLQotI2RlZmluZSBOVl9D
VFJMX0lTX0dWT19ESVNQTEFZIDMwMCAvKiBSLUQgKi8KLSNkZWZpbmUgTlZfQ1RSTF9JU19HVk9f
RElTUExBWV9GQUxTRSAwCi0jZGVmaW5lIE5WX0NUUkxfSVNfR1ZPX0RJU1BMQVlfVFJVRSAxCi0K
LS8qCi0gKiBOVl9DVFJMX1BDSV9JRCAtIFJldHVybnMgdGhlIFBDSSB2ZW5kb3IgYW5kIGRldmlj
ZSBJRCBvZiB0aGUgc3BlY2lmaWVkCi0gKiBkZXZpY2UuCi0gKgotICogTlZfQ1RSTF9QQ0lfSUQg
aXMgYSAicGFja2VkIiBpbnRlZ2VyIGF0dHJpYnV0ZTsgdGhlIFBDSSB2ZW5kb3IgSUQgaXMgc3Rv
cmVkCi0gKiBpbiB0aGUgdXBwZXIgMTYgYml0cyBvZiB0aGUgaW50ZWdlciwgYW5kIHRoZSBQQ0kg
ZGV2aWNlIElEIGlzIHN0b3JlZCBpbiB0aGUKLSAqIGxvd2VyIDE2IGJpdHMgb2YgdGhlIGludGVn
ZXIuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1BDSV9JRCAzMDEgLyogUi0tR0kgKi8KLQotLyoK
LSAqIE5WX0NUUkxfR1ZPX0ZVTExfUkFOR0VfQ09MT1IgLSBBbGxvdyBmdWxsIHJhbmdlIGNvbG9y
IGRhdGEgWzQtMTAxOV0KLSAqIHdpdGhvdXQgY2xhbXBpbmcgdG8gWzY0LTk0MF0uCi0gKi8KLQot
I2RlZmluZSBOVl9DVFJMX0dWT19GVUxMX1JBTkdFX0NPTE9SIDMwMiAvKiBSVy0gKi8KLSNkZWZp
bmUgTlZfQ1RSTF9HVk9fRlVMTF9SQU5HRV9DT0xPUl9ESVNBQkxFRCAwCi0jZGVmaW5lIE5WX0NU
UkxfR1ZPX0ZVTExfUkFOR0VfQ09MT1JfRU5BQkxFRCAxCi0KLS8qCi0gKiBOVl9DVFJMX1NMSV9N
T1NBSUNfTU9ERV9BVkFJTEFCTEUgLSBSZXR1cm5zIHdoZXRoZXIgb3Igbm90Ci0gKiBTTEkgTW9z
YWljIE1vZGUgc3VwcG9ydGVkLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9TTElfTU9TQUlDX01P
REVfQVZBSUxBQkxFIDMwMyAvKiBSLS0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9TTElfTU9TQUlDX01P
REVfQVZBSUxBQkxFX0ZBTFNFIDAKLSNkZWZpbmUgTlZfQ1RSTF9TTElfTU9TQUlDX01PREVfQVZB
SUxBQkxFX1RSVUUgMQotCi0vKgotICogTlZfQ1RSTF9HVk9fRU5BQkxFX1JHQl9EQVRBIC0gQWxs
b3dzIGNsaWVudHMgdG8gc3BlY2lmeSB3aGVuCi0gKiB0aGUgR1ZPIGJvYXJkIHNob3VsZCBwcm9j
ZXNzIGNvbG9ycyBhcyBSR0Igd2hlbiB0aGUgb3V0cHV0IGRhdGEKLSAqIGZvcm1hdCBpcyBvbmUg
b2YgdGhlIE5WX0NUUkxfR1ZPX0RBVEFfRk9STUFUXz8/P19QQVNTVFJIVSBtb2Rlcy4KLSAqLwot
Ci0jZGVmaW5lIE5WX0NUUkxfR1ZPX0VOQUJMRV9SR0JfREFUQSAzMDQgLyogUlctICovCi0jZGVm
aW5lIE5WX0NUUkxfR1ZPX0VOQUJMRV9SR0JfREFUQV9ESVNBQkxFIDAKLSNkZWZpbmUgTlZfQ1RS
TF9HVk9fRU5BQkxFX1JHQl9EQVRBX0VOQUJMRSAxCi0KLS8qCi0gKiBOVl9DVFJMX0lNQUdFX1NI
QVJQRU5JTkdfREVGQVVMVCAtIFJldHVybnMgZGVmYXVsdCB2YWx1ZSBvZgotICogSW1hZ2UgU2hh
cnBlbmluZy4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfSU1BR0VfU0hBUlBFTklOR19ERUZBVUxU
IDMwNSAvKiBSLS0gKi8KLQotLyoKLSAqIE5WX0NUUkxfUENJX0RPTUFJTiAtIFJldHVybnMgdGhl
IFBDSSBkb21haW4gbnVtYmVyIHRoZSBzcGVjaWZpZWQgZGV2aWNlIGlzCi0gKiB1c2luZy4KLSAq
LwotCi0jZGVmaW5lIE5WX0NUUkxfUENJX0RPTUFJTiAzMDYgLyogUi0tR0kgKi8KLQotLyoKLSAq
IE5WX0NUUkxfR1ZJX05VTV9KQUNLUyAtIFJldHVybnMgdGhlIG51bWJlciBvZiBpbnB1dCBCTkMg
amFja3MgYXZhaWxhYmxlCi0gKiBvbiBhIEdWSSBkZXZpY2UuCi0gKi8KLQotI2RlZmluZSBOVl9D
VFJMX0dWSV9OVU1fSkFDS1MgMzA3IC8qIFItLUkgKi8KLQotLyoKLSAqIE5WX0NUUkxfR1ZJX01B
WF9MSU5LU19QRVJfU1RSRUFNIC0gUmV0dXJucyB0aGUgbWF4aW11bSBzdXBwb3J0ZWQgbnVtYmVy
IG9mCi0gKiBsaW5rcyB0aGF0IGNhbiBiZSB0aWVkIHRvIG9uZSBzdHJlYW0uCi0gKi8KLQotI2Rl
ZmluZSBOVl9DVFJMX0dWSV9NQVhfTElOS1NfUEVSX1NUUkVBTSAzMDggLyogUi0tSSAqLwotCi0v
KgotICogTlZfQ1RSTF9HVklfREVURUNURURfQ0hBTk5FTF9CSVRTX1BFUl9DT01QT05FTlQgLSBS
ZXR1cm5zIHRoZSBkZXRlY3RlZAotICogbnVtYmVyIG9mIGJpdHMgcGVyIGNvbXBvbmVudCAoQlBD
KSBvZiBkYXRhIG9uIHRoZSBnaXZlbiBpbnB1dCBqYWNrKwotICogY2hhbm5lbC4KLSAqCi0gKiBU
aGUgamFjayBudW1iZXIgc2hvdWxkIGJlIHNwZWNpZmllZCBpbiB0aGUgbG93ZXIgMTYgYml0cyBv
ZiB0aGUKLSAqICJkaXNwbGF5X21hc2siIHBhcmFtZXRlciwgd2hpbGUgdGhlIGNoYW5uZWwgbnVt
YmVyIHNob3VsZCBiZSBzcGVjaWZpZWQgaW4KLSAqIHRoZSB1cHBlciAxNiBiaXRzLgotICovCi0K
LSNkZWZpbmUgTlZfQ1RSTF9HVklfREVURUNURURfQ0hBTk5FTF9CSVRTX1BFUl9DT01QT05FTlQg
MzA5IC8qIFItLUkgKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVklfQklUU19QRVJfQ09NUE9ORU5UX1VO
S05PV04gMAotI2RlZmluZSBOVl9DVFJMX0dWSV9CSVRTX1BFUl9DT01QT05FTlRfOCAxCi0jZGVm
aW5lIE5WX0NUUkxfR1ZJX0JJVFNfUEVSX0NPTVBPTkVOVF8xMCAyCi0jZGVmaW5lIE5WX0NUUkxf
R1ZJX0JJVFNfUEVSX0NPTVBPTkVOVF8xMiAzCi0KLS8qCi0gKiBOVl9DVFJMX0dWSV9SRVFVRVNU
RURfU1RSRUFNX0JJVFNfUEVSX0NPTVBPTkVOVCAtIFNwZWNpZnkgdGhlIG51bWJlciBvZgotICog
Yml0cyBwZXIgY29tcG9uZW50IChCUEMpIG9mIGRhdGEgZm9yIHRoZSBjYXB0dXJlZCBzdHJlYW0u
Ci0gKiBUaGUgc3RyZWFtIG51bWJlciBzaG91bGQgYmUgc3BlY2lmaWVkIGluIHRoZSAiZGlzcGxh
eV9tYXNrIiBwYXJhbWV0ZXIuCi0gKgotICogTm90ZTogU2V0dGluZyB0aGlzIGF0dHJpYnV0ZSBt
YXkgYWxzbyByZXN1bHQgaW4gdGhlIGZvbGxvd2luZwotICogICAgICAgTlYtQ09OVFJPTCBhdHRy
aWJ1dGVzIGJlaW5nIHJlc2V0IG9uIHRoZSBHVkkgZGV2aWNlICh0byBlbnN1cmUKLSAqICAgICAg
IHRoZSBjb25maWd1cmF0aW9uIHJlbWFpbnMgdmFsaWQpOgotICogICAgICAgICAgIE5WX0NUUkxf
R1ZJX1JFUVVFU1RFRF9TVFJFQU1fQ09NUE9ORU5UX1NBTVBMSU5HCi0gKi8KLQotI2RlZmluZSBO
Vl9DVFJMX0dWSV9SRVFVRVNURURfU1RSRUFNX0JJVFNfUEVSX0NPTVBPTkVOVCAzMTAgLyogUlct
SSAqLwotCi0vKgotICogTlZfQ1RSTF9HVklfREVURUNURURfQ0hBTk5FTF9DT01QT05FTlRfU0FN
UExJTkcgLSBSZXR1cm5zIHRoZSBkZXRlY3RlZAotICogc2FtcGxpbmcgZm9ybWF0IGZvciB0aGUg
aW5wdXQgamFjaytjaGFubmVsLgotICoKLSAqIFRoZSBqYWNrIG51bWJlciBzaG91bGQgYmUgc3Bl
Y2lmaWVkIGluIHRoZSBsb3dlciAxNiBiaXRzIG9mIHRoZQotICogImRpc3BsYXlfbWFzayIgcGFy
YW1ldGVyLCB3aGlsZSB0aGUgY2hhbm5lbCBudW1iZXIgc2hvdWxkIGJlIHNwZWNpZmllZCBpbgot
ICogdGhlIHVwcGVyIDE2IGJpdHMuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWSV9ERVRFQ1RF
RF9DSEFOTkVMX0NPTVBPTkVOVF9TQU1QTElORyAzMTEgLyogUi0tSSAqLwotI2RlZmluZSBOVl9D
VFJMX0dWSV9DT01QT05FTlRfU0FNUExJTkdfVU5LTk9XTiAwCi0jZGVmaW5lIE5WX0NUUkxfR1ZJ
X0NPTVBPTkVOVF9TQU1QTElOR180NDQ0IDEKLSNkZWZpbmUgTlZfQ1RSTF9HVklfQ09NUE9ORU5U
X1NBTVBMSU5HXzQyMjQgMgotI2RlZmluZSBOVl9DVFJMX0dWSV9DT01QT05FTlRfU0FNUExJTkdf
NDQ0IDMKLSNkZWZpbmUgTlZfQ1RSTF9HVklfQ09NUE9ORU5UX1NBTVBMSU5HXzQyMiA0Ci0jZGVm
aW5lIE5WX0NUUkxfR1ZJX0NPTVBPTkVOVF9TQU1QTElOR180MjAgNQotCi0vKgotICogTlZfQ1RS
TF9HVklfUkVRVUVTVEVEX0NPTVBPTkVOVF9TQU1QTElORyAtIFNwZWNpZnkgdGhlIHNhbXBsaW5n
IGZvcm1hdCBmb3IKLSAqIHRoZSBjYXB0dXJlZCBzdHJlYW0uCi0gKiBUaGUgcG9zc2libGUgdmFs
dWVzIGFyZSB0aGUgTlZfQ1RSTF9HVklfREVURUNURURfQ09NUE9ORU5UX1NBTVBMSU5HCi0gKiBj
b25zdGFudHMuCi0gKiBUaGUgc3RyZWFtIG51bWJlciBzaG91bGQgYmUgc3BlY2lmaWVkIGluIHRo
ZSAiZGlzcGxheV9tYXNrIiBwYXJhbWV0ZXIuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWSV9S
RVFVRVNURURfU1RSRUFNX0NPTVBPTkVOVF9TQU1QTElORyAzMTIgLyogUlctSSAqLwotCi0vKgot
ICogTlZfQ1RSTF9HVklfQ0hST01BX0VYUEFORCAtIEVuYWJsZSBvciBkaXNhYmxlIDQ6MjoyIC0+
IDQ6NDo0IGNocm9tYQotICogZXhwYW5zaW9uIGZvciB0aGUgY2FwdHVyZWQgc3RyZWFtLiAgVGhp
cyB2YWx1ZSBpcyBpZ25vcmVkIHdoZW4gYQotICogQ09NUE9ORU5UX1NBTVBMSU5HIGZvcm1hdCBp
cyBzZWxlY3RlZCB0aGF0IGRvZXMgbm90IHVzZSBjaHJvbWEgc3Vic2FtcGxpbmcsCi0gKiBvciBp
ZiBhIEJJVFNfUEVSX0NPTVBPTkVOVCB2YWx1ZSBpcyBzZWxlY3RlZCB0aGF0IGlzIG5vdCBzdXBw
b3J0ZWQuCi0gKiBUaGUgc3RyZWFtIG51bWJlciBzaG91bGQgYmUgc3BlY2lmaWVkIGluIHRoZSAi
ZGlzcGxheV9tYXNrIiBwYXJhbWV0ZXIuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWSV9SRVFV
RVNURURfU1RSRUFNX0NIUk9NQV9FWFBBTkQgMzEzIC8qIFJXLUkgKi8KLSNkZWZpbmUgTlZfQ1RS
TF9HVklfQ0hST01BX0VYUEFORF9GQUxTRSAwCi0jZGVmaW5lIE5WX0NUUkxfR1ZJX0NIUk9NQV9F
WFBBTkRfVFJVRSAxCi0KLS8qCi0gKiBOVl9DVFJMX0dWSV9ERVRFQ1RFRF9DSEFOTkVMX0NPTE9S
X1NQQUNFIC0gUmV0dXJucyB0aGUgZGV0ZWN0ZWQgY29sb3Igc3BhY2UKLSAqIG9mIHRoZSBpbnB1
dCBqYWNrK2NoYW5uZWwuCi0gKgotICogVGhlIGphY2sgbnVtYmVyIHNob3VsZCBiZSBzcGVjaWZp
ZWQgaW4gdGhlIGxvd2VyIDE2IGJpdHMgb2YgdGhlCi0gKiAiZGlzcGxheV9tYXNrIiBwYXJhbWV0
ZXIsIHdoaWxlIHRoZSBjaGFubmVsIG51bWJlciBzaG91bGQgYmUgc3BlY2lmaWVkIGluCi0gKiB0
aGUgdXBwZXIgMTYgYml0cy4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZJX0RFVEVDVEVEX0NI
QU5ORUxfQ09MT1JfU1BBQ0UgMzE0IC8qIFItLUkgKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVklfQ09M
T1JfU1BBQ0VfVU5LTk9XTiAwCi0jZGVmaW5lIE5WX0NUUkxfR1ZJX0NPTE9SX1NQQUNFX0dCUiAx
Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJX0NPTE9SX1NQQUNFX0dCUkEgMgotI2RlZmluZSBOVl9DVFJM
X0dWSV9DT0xPUl9TUEFDRV9HQlJEIDMKLSNkZWZpbmUgTlZfQ1RSTF9HVklfQ09MT1JfU1BBQ0Vf
WUNCQ1IgNAotI2RlZmluZSBOVl9DVFJMX0dWSV9DT0xPUl9TUEFDRV9ZQ0JDUkEgNQotI2RlZmlu
ZSBOVl9DVFJMX0dWSV9DT0xPUl9TUEFDRV9ZQ0JDUkQgNgotCi0vKgotICogTlZfQ1RSTF9HVklf
REVURUNURURfQ0hBTk5FTF9MSU5LX0lEIC0gUmV0dXJucyB0aGUgZGV0ZWN0ZWQgbGluayBpZGVu
dGlmaWVyCi0gKiBmb3IgdGhlIGdpdmVuIGlucHV0IGphY2srY2hhbm5lbC4KLSAqCi0gKiBUaGUg
amFjayBudW1iZXIgc2hvdWxkIGJlIHNwZWNpZmllZCBpbiB0aGUgbG93ZXIgMTYgYml0cyBvZiB0
aGUKLSAqICJkaXNwbGF5X21hc2siIHBhcmFtZXRlciwgd2hpbGUgdGhlIGNoYW5uZWwgbnVtYmVy
IHNob3VsZCBiZSBzcGVjaWZpZWQgaW4KLSAqIHRoZSB1cHBlciAxNiBiaXRzLgotICovCi0KLSNk
ZWZpbmUgTlZfQ1RSTF9HVklfREVURUNURURfQ0hBTk5FTF9MSU5LX0lEIDMxNSAvKiBSLS1JICov
Ci0jZGVmaW5lIE5WX0NUUkxfR1ZJX0xJTktfSURfVU5LTk9XTiAweEZGRkYKLQotLyoKLSAqIE5W
X0NUUkxfR1ZJX0RFVEVDVEVEX0NIQU5ORUxfU01QVEUzNTJfSURFTlRJRklFUiAtIFJldHVybnMg
dGhlIDQtYnl0ZQotICogU01QVEUgMzUyIGlkZW50aWZpZXIgZnJvbSB0aGUgZ2l2ZW4gaW5wdXQg
amFjaytjaGFubmVsLgotICoKLSAqIFRoZSBqYWNrIG51bWJlciBzaG91bGQgYmUgc3BlY2lmaWVk
IGluIHRoZSBsb3dlciAxNiBiaXRzIG9mIHRoZQotICogImRpc3BsYXlfbWFzayIgcGFyYW1ldGVy
LCB3aGlsZSB0aGUgY2hhbm5lbCBudW1iZXIgc2hvdWxkIGJlIHNwZWNpZmllZCBpbgotICogdGhl
IHVwcGVyIDE2IGJpdHMuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWSV9ERVRFQ1RFRF9DSEFO
TkVMX1NNUFRFMzUyX0lERU5USUZJRVIgMzE2IC8qIFItLUkgKi8KLQotLyoKLSAqIE5WX0NUUkxf
R1ZJX0dMT0JBTF9JREVOVElGSUVSIC0gUmV0dXJucyBhIGdsb2JhbCBpZGVudGlmaWVyIGZvciB0
aGUKLSAqIEdWSSBkZXZpY2UuICBUaGlzIGlkZW50aWZpZXIgY2FuIGJlIHVzZWQgdG8gcmVsYXRl
IEdWSSBkZXZpY2VzIG5hbWVkCi0gKiBpbiBOVi1DT05UUk9MIHdpdGggdGhvc2UgZW51bWVyYXRl
ZCBpbiBPcGVuR0wuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWSV9HTE9CQUxfSURFTlRJRklF
UiAzMTcgLyogUi0tSSAqLwotCi0vKgotICogTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19ERUxBWV9S
RVNPTFVUSU9OIC0gUmV0dXJucyB0aGUgbnVtYmVyIG9mIG5hbm9zZWNvbmRzCi0gKiB0aGF0IG9u
ZSB1bml0IG9mIE5WX0NUUkxfRlJBTUVMT0NLX1NZTkNfREVMQVkgY29ycmVzcG9uZHMgdG8uCi0g
Ki8KLSNkZWZpbmUgTlZfQ1RSTF9GUkFNRUxPQ0tfU1lOQ19ERUxBWV9SRVNPTFVUSU9OIDMxOCAv
KiBSLS0gKi8KLQotLyoKLSAqIE5WX0NUUkxfR1BVX0NPT0xFUl9NQU5VQUxfQ09OVFJPTCAtIFF1
ZXJ5IHRoZSBjdXJyZW50IG9yIHNldCBhIG5ldwotICogY29vbGVyIGNvbnRyb2wgc3RhdGU7IHRo
ZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBjb250cm9scyB0aGUKLSAqIGF2YWlsYWJpbGl0eSBv
ZiBhZGRpdGlvbmFsIGNvb2xlciBjb250cm9sIGF0dHJpYnV0ZXMgKHNlZSBiZWxvdykuCi0gKgot
ICogTm90ZTogdGhpcyBhdHRyaWJ1dGUgaXMgdW5hdmFpbGFibGUgdW5sZXNzIGNvb2xlciBjb250
cm9sIHN1cHBvcnQKLSAqIGhhcyBiZWVuIGVuYWJsZWQgaW4gdGhlIFggc2VydmVyIChieSB0aGUg
dXNlcikuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dQVV9DT09MRVJfTUFOVUFMX0NPTlRST0wg
MzE5IC8qIFJXLUcgKi8KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfQ09PTEVSX01BTlVBTF9DT05UUk9M
X0ZBTFNFIDAKLSNkZWZpbmUgTlZfQ1RSTF9HUFVfQ09PTEVSX01BTlVBTF9DT05UUk9MX1RSVUUg
MQotCi0vKgotICogTlZfQ1RSTF9USEVSTUFMX0NPT0xFUl9MRVZFTCAtIFJldHVybnMgY29vbGVy
J3MgY3VycmVudCBvcGVyYXRpbmcKLSAqIGxldmVsLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9U
SEVSTUFMX0NPT0xFUl9MRVZFTCAzMjAgLyogUlctQyAqLwotCi0vKiBOVl9DVFJMX1RIRVJNQUxf
Q09PTEVSX0xFVkVMX1NFVF9ERUZBVUxUIC0gU2V0cyBkZWZhdWx0IHZhbHVlcyBvZgotICogY29v
bGVyLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX0NPT0xFUl9MRVZFTF9TRVRfREVG
QVVMVCAzMjEgLyogLVctQyAqLwotCi0vKgotICogTlZfQ1RSTF9USEVSTUFMX0NPT0xFUl9DT05U
Uk9MX1RZUEUgLQotICogUmV0dXJucyBhIGNvb2xlcidzIGNvbnRyb2wgc2lnbmFsIGNoYXJhY3Rl
cmlzdGljcy4KLSAqIFRoZSBwb3NzaWJsZSB0eXBlcyBhcmUgcmVzdHJpY3RlZCwgVmFyaWFibGUg
YW5kIFRvZ2dsZS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9DT09MRVJfQ09OVFJP
TF9UWVBFIDMyMiAvKiBSLS1DICovCi0jZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9DT09MRVJfQ09O
VFJPTF9UWVBFX05PTkUgMAotI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfQ09PTEVSX0NPTlRST0xf
VFlQRV9UT0dHTEUgMQotI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfQ09PTEVSX0NPTlRST0xfVFlQ
RV9WQVJJQUJMRSAyCi0KLS8qCi0gKiBOVl9DVFJMX1RIRVJNQUxfQ09PTEVSX1RBUkdFVCAtIFJl
dHVybnMgb2JqZWN0cyB0aGF0IGNvb2xlciBjb29scy4KLSAqIFRhcmdldHMgbWF5IGJlIEdQVSwg
TWVtb3J5LCBQb3dlciBTdXBwbHkgb3IgQWxsIG9mIHRoZXNlLgotICogR1BVX1JFTEFURUQgPSBH
UFUgfCBNRU1PUlkgfCBQT1dFUl9TVVBQTFkKLSAqCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1RI
RVJNQUxfQ09PTEVSX1RBUkdFVCAzMjMgLyogUi0tQyAqLwotI2RlZmluZSBOVl9DVFJMX1RIRVJN
QUxfQ09PTEVSX1RBUkdFVF9OT05FIDAKLSNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX0NPT0xFUl9U
QVJHRVRfR1BVIDEKLSNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX0NPT0xFUl9UQVJHRVRfTUVNT1JZ
IDIKLSNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX0NPT0xFUl9UQVJHRVRfUE9XRVJfU1VQUExZIDQK
LSNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX0NPT0xFUl9UQVJHRVRfR1BVX1JFTEFURUQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIChOVl9DVFJMX1RIRVJNQUxfQ09PTEVSX1RB
UkdFVF9HUFUgfCBOVl9DVFJMX1RIRVJNQUxfQ09PTEVSX1RBUkdFVF9NRU1PUlkgfCBcCi0gICAg
IE5WX0NUUkxfVEhFUk1BTF9DT09MRVJfVEFSR0VUX1BPV0VSX1NVUFBMWSkKLQotLyoKLSAqIE5W
X0NUUkxfR1BVX0VDQ19TVVBQT1JURUQgLSBSZXBvcnRzIHdoZXRoZXIgRUNDIGlzIHN1cHBvcnRl
ZCBieSB0aGUKLSAqIHRhcmdldGVkIEdQVS4KLSAqLwotI2RlZmluZSBOVl9DVFJMX0dQVV9FQ0Nf
U1VQUE9SVEVEIDMyNCAvKiBSLS1HICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19TVVBQT1JU
RURfRkFMU0UgMAotI2RlZmluZSBOVl9DVFJMX0dQVV9FQ0NfU1VQUE9SVEVEX1RSVUUgMQotCi0v
KgotICogTlZfQ1RSTF9HUFVfRUNDX1NUQVRVUyAtIFJldHVybnMgdGhlIGN1cnJlbnQgaGFyZHdh
cmUgRUNDIHNldHRpbmcKLSAqIGZvciB0aGUgdGFyZ2V0ZWQgR1BVLgotICovCi0jZGVmaW5lIE5W
X0NUUkxfR1BVX0VDQ19TVEFUVVMgMzI1IC8qIFItLUcgKi8KLSNkZWZpbmUgTlZfQ1RSTF9HUFVf
RUNDX1NUQVRVU19ESVNBQkxFRCAwCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19TVEFUVVNfRU5B
QkxFRCAxCi0KLS8qCi0gKiBOVl9DVFJMX0dQVV9FQ0NfQ09ORklHVVJBVElPTiAtIFJlcG9ydHMg
d2hldGhlciBFQ0MgY2FuIGJlIGNvbmZpZ3VyZWQKLSAqIGR5bmFtaWNhbGx5IGZvciB0aGUgR1BV
IGluIHF1ZXN0aW9uLgotICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19DT05GSUdVUkFUSU9O
X1NVUFBPUlRFRCAzMjYgLyogUi0tRyAqLwotI2RlZmluZSBOVl9DVFJMX0dQVV9FQ0NfQ09ORklH
VVJBVElPTl9TVVBQT1JURURfRkFMU0UgMAotI2RlZmluZSBOVl9DVFJMX0dQVV9FQ0NfQ09ORklH
VVJBVElPTl9TVVBQT1JURURfVFJVRSAxCi0KLS8qCi0gKiBOVl9DVFJMX0dQVV9FQ0NfQ09ORklH
VVJBVElPTl9TRVRUSU5HIC0gUmV0dXJucyB0aGUgY3VycmVudCBFQ0MKLSAqIGNvbmZpZ3VyYXRp
b24gc2V0dGluZyBvciBzcGVjaWZpZXMgbmV3IHNldHRpbmdzLiAgTmV3IHNldHRpbmdzIGRvIG5v
dAotICogdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgUE9TVC4KLSAqLwotI2RlZmluZSBOVl9D
VFJMX0dQVV9FQ0NfQ09ORklHVVJBVElPTiAzMjcgLyogUlctRyAqLwotI2RlZmluZSBOVl9DVFJM
X0dQVV9FQ0NfQ09ORklHVVJBVElPTl9ESVNBQkxFRCAwCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0VD
Q19DT05GSUdVUkFUSU9OX0VOQUJMRUQgMQotCi0vKgotICogTlZfQ1RSTF9HUFVfRUNDX0RFRkFV
TFRfQ09ORklHVVJBVElPTl9TRVRUSU5HIC0gUmV0dXJucyB0aGUgZGVmYXVsdAotICogRUNDIGNv
bmZpZ3VyYXRpb24gc2V0dGluZy4KLSAqLwotI2RlZmluZSBOVl9DVFJMX0dQVV9FQ0NfREVGQVVM
VF9DT05GSUdVUkFUSU9OIDMyOCAvKiBSLS1HICovCi0jZGVmaW5lIE5WX0NUUkxfR1BVX0VDQ19E
RUZBVUxUX0NPTkZJR1VSQVRJT05fRElTQUJMRUQgMAotI2RlZmluZSBOVl9DVFJMX0dQVV9FQ0Nf
REVGQVVMVF9DT05GSUdVUkFUSU9OX0VOQUJMRUQgMQotCi0vKgotICogTlZfQ1RSTF9HUFVfRUND
X1NJTkdMRV9CSVRfRVJST1JTIC0gUmV0dXJucyB0aGUgbnVtYmVyIG9mIHNpbmdsZS1iaXQKLSAq
IEVDQyBlcnJvcnMgZGV0ZWN0ZWQgYnkgdGhlIHRhcmdldGVkIEdQVSBzaW5jZSB0aGUgbGFzdCBQ
T1NULgotICogTm90ZTogdGhpcyBhdHRyaWJ1dGUgaXMgYSA2NC1iaXQgaW50ZWdlciBhdHRyaWJ1
dGUuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfRUNDX1NJTkdMRV9CSVRfRVJST1JTIDMyOSAv
KiBSLS1HUSAqLwotCi0vKgotICogTlZfQ1RSTF9HUFVfRUNDX0RPVUJMRV9CSVRfRVJST1JTIC0g
UmV0dXJucyB0aGUgbnVtYmVyIG9mIGRvdWJsZS1iaXQKLSAqIEVDQyBlcnJvcnMgZGV0ZWN0ZWQg
YnkgdGhlIHRhcmdldGVkIEdQVSBzaW5jZSB0aGUgbGFzdCBQT1NULgotICogTm90ZTogdGhpcyBh
dHRyaWJ1dGUgaXMgYSA2NC1iaXQgaW50ZWdlciBhdHRyaWJ1dGUuCi0gKi8KLSNkZWZpbmUgTlZf
Q1RSTF9HUFVfRUNDX0RPVUJMRV9CSVRfRVJST1JTIDMzMCAvKiBSLS1HUSAqLwotCi0vKgotICog
TlZfQ1RSTF9HUFVfRUNDX0FHR1JFR0FURV9TSU5HTEVfQklUX0VSUk9SUyAtIFJldHVybnMgdGhl
IG51bWJlciBvZgotICogc2luZ2xlLWJpdCBFQ0MgZXJyb3JzIGRldGVjdGVkIGJ5IHRoZSB0YXJn
ZXRlZCBHUFUgc2luY2UgdGhlCi0gKiBsYXN0IGNvdW50ZXIgcmVzZXQuCi0gKiBOb3RlOiB0aGlz
IGF0dHJpYnV0ZSBpcyBhIDY0LWJpdCBpbnRlZ2VyIGF0dHJpYnV0ZS4KLSAqLwotI2RlZmluZSBO
Vl9DVFJMX0dQVV9FQ0NfQUdHUkVHQVRFX1NJTkdMRV9CSVRfRVJST1JTIDMzMSAvKiBSLS1HUSAq
LwotCi0vKgotICogTlZfQ1RSTF9HUFVfRUNDX0FHR1JFR0FURV9ET1VCTEVfQklUX0VSUk9SUyAt
IFJldHVybnMgdGhlIG51bWJlciBvZgotICogZG91YmxlLWJpdCBFQ0MgZXJyb3JzIGRldGVjdGVk
IGJ5IHRoZSB0YXJnZXRlZCBHUFUgc2luY2UgdGhlCi0gKiBsYXN0IGNvdW50ZXIgcmVzZXQuCi0g
KiBOb3RlOiB0aGlzIGF0dHJpYnV0ZSBpcyBhIDY0LWJpdCBpbnRlZ2VyIGF0dHJpYnV0ZS4KLSAq
LwotI2RlZmluZSBOVl9DVFJMX0dQVV9FQ0NfQUdHUkVHQVRFX0RPVUJMRV9CSVRfRVJST1JTIDMz
MiAvKiBSLS1HUSAqLwotCi0vKgotICogTlZfQ1RSTF9HUFVfRUNDX1JFU0VUX0VSUk9SX1NUQVRV
UyAtIFJlc2V0cyB0aGUgdm9sYXRpbGUvYWdncmVnYXRlCi0gKiBzaW5nbGUtYml0IGFuZCBkb3Vi
bGUtYml0IGVycm9yIGNvdW50ZXJzLiAgVGhpcyBhdHRyaWJ1dGUgaXMgYQotICogYml0bWFzayBh
dHRyaWJ1dGUuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfRUNDX1JFU0VUX0VSUk9SX1NUQVRV
UyAzMzMgLyogLVctRyAqLwotI2RlZmluZSBOVl9DVFJMX0dQVV9FQ0NfUkVTRVRfRVJST1JfU1RB
VFVTX1ZPTEFUSUxFIDB4MDAwMDAwMDEKLSNkZWZpbmUgTlZfQ1RSTF9HUFVfRUNDX1JFU0VUX0VS
Uk9SX1NUQVRVU19BR0dSRUdBVEUgMHgwMDAwMDAwMgotCi0vKgotICogTlZfQ1RSTF9HUFVfUE9X
RVJfTUlaRVJfTU9ERSAtIFByb3ZpZGVzIGEgaGludCB0byB0aGUgZHJpdmVyCi0gKiBhcyB0byBo
b3cgdG8gbWFuYWdlIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgR1BVLgotICoKLSAqIEFEQVBUSVZF
ICAgICAgICAgICAgICAgICAgICAgLSBhZGp1c3QgR1BVIGNsb2NrcyBiYXNlZCBvbiBHUFUKLSAq
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsaXphdGlvbgotICogUFJFRkVSX01B
WElNVU1fUEVSRk9STUFOQ0UgICAtIHJhaXNlIEdQVSBjbG9ja3MgdG8gZmF2b3IKLSAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhpbXVtIHBlcmZvcm1hbmNlLCB0byB0aGUgZXh0
ZW50Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhhdCB0aGVybWFsIGFuZCBv
dGhlciBjb25zdHJhaW50cwotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93
Ci0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfUE9XRVJfTUlaRVJfTU9ERSAzMzQgLyogUlctRyAq
LwotI2RlZmluZSBOVl9DVFJMX0dQVV9QT1dFUl9NSVpFUl9NT0RFX0FEQVBUSVZFIDAKLSNkZWZp
bmUgTlZfQ1RSTF9HUFVfUE9XRVJfTUlaRVJfTU9ERV9QUkVGRVJfTUFYSU1VTV9QRVJGT1JNQU5D
RSAxCi0KLS8qCi0gKiBOVl9DVFJMX0dWSV9TWU5DX09VVFBVVF9GT1JNQVQgLSBSZXR1cm5zIHRo
ZSBvdXRwdXQgc3luYyBzaWduYWwKLSAqIGZyb20gdGhlIEdWSSBkZXZpY2UuCi0gKi8KLQotI2Rl
ZmluZSBOVl9DVFJMX0dWSV9TWU5DX09VVFBVVF9GT1JNQVQgMzM1IC8qIFItLUkgKi8KLQotLyoK
LSAqIE5WX0NUUkxfR1ZJX01BWF9DSEFOTkVMU19QRVJfSkFDSyAgLSBSZXR1cm5zIHRoZSBtYXhp
bXVtCi0gKiBzdXBwb3J0ZWQgbnVtYmVyIG9mIChsb2dpY2FsKSBjaGFubmVscyB3aXRoaW4gYSBz
aW5nbGUgcGh5c2ljYWwgamFjayBvZgotICogYSBHVkkgZGV2aWNlLiAgRm9yIG1vc3QgU0RJIHZp
ZGVvIGZvcm1hdHMsIHRoZXJlIGlzIG9ubHkgb25lIGNoYW5uZWwKLSAqIChjaGFubmVsIDApLiAg
QnV0IGZvciAzRyB2aWRlbyBmb3JtYXRzIChhcyBzcGVjaWZpZWQgaW4gU01QVEUgNDI1KSwKLSAq
IGFzIGFuIGV4YW1wbGUsIHRoZXJlIGFyZSB0d28gY2hhbm5lbHMgKGNoYW5uZWwgMCBhbmQgY2hh
bm5lbCAxKSBwZXIKLSAqIHBoeXNpY2FsIGphY2suCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dW
SV9NQVhfQ0hBTk5FTFNfUEVSX0pBQ0sgMzM2IC8qIFItLUkgKi8KLQotLyoKLSAqIE5WX0NUUkxf
R1ZJX01BWF9TVFJFQU1TICAtIFJldHVybnMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHN0cmVhbXMK
LSAqIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgb24gdGhlIEdWSSBkZXZpY2UuCi0gKi8KLQotI2Rl
ZmluZSBOVl9DVFJMX0dWSV9NQVhfU1RSRUFNUyAzMzcgLyogUi0tSSAqLwotCi0vKgotICogTlZf
Q1RSTF9HVklfTlVNX0NBUFRVUkVfU1VSRkFDRVMgLSBUaGUgR1ZJIGludGVyZmFjZSBleHBvc2Vk
IHRocm91Z2gKLSAqIE5WLUNPTlRST0wgYW5kIHRoZSBHTFhfTlZfdmlkZW9faW5wdXQgZXh0ZW5z
aW9uIHVzZXMgaW50ZXJuYWwgY2FwdHVyZQotICogc3VyZmFjZXMgd2hlbiBmcmFtZXMgYXJlIHJl
YWQgZnJvbSB0aGUgR1ZJIGRldmljZS4gIFRoZQotICogTlZfQ1RSTF9HVklfTlVNX0NBUFRVUkVf
U1VSRkFDRVMgY2FuIGJlIHVzZWQgdG8gcXVlcnkgYW5kIGFzc2lnbiB0aGUKLSAqIG51bWJlciBv
ZiBjYXB0dXJlIHN1cmZhY2VzLiAgVGhpcyBhdHRyaWJ1dGUgaXMgYXBwbGllZCB3aGVuCi0gKiBn
bFhCaW5kVmlkZW9DYXB0dXJlRGV2aWNlTlYoKSBpcyBjYWxsZWQgYnkgdGhlIGFwcGxpY2F0aW9u
LgotICoKLSAqIEEgbG93ZXIgbnVtYmVyIG9mIGNhcHR1cmUgc3VyZmFjZXMgd2lsbCBtZWFuIGxl
c3MgdmlkZW8gbWVtb3J5IGlzIHVzZWQsCi0gKiBidXQgY2FuIHJlc3VsdCBpbiBmcmFtZXMgYmVp
bmcgZHJvcHBlZCBpZiB0aGUgYXBwbGljYXRpb24gY2Fubm90IGtlZXAgdXAKLSAqIHdpdGggdGhl
IGNhcHR1cmUgZGV2aWNlLiAgQSBoaWdoZXIgbnVtYmVyIHdpbGwgcHJldmVudCBmcmFtZXMgZnJv
bSBiZWluZwotICogZHJvcHBlZCwgbWFraW5nIGNhcHR1cmUgbW9yZSByZWxpYWJsZSBidXQgd2ls
bCBjb25zdW1lIG1vdmUgdmlkZW8gbWVtb3J5LgotICovCi0jZGVmaW5lIE5WX0NUUkxfR1ZJX05V
TV9DQVBUVVJFX1NVUkZBQ0VTIDMzOCAvKiBSVy1JICovCi0KLS8qCi0gKiBOVl9DVFJMX09WRVJT
Q0FOX0NPTVBFTlNBVElPTiAtIG5vdCBzdXBwb3J0ZWQKLSAqLwotI2RlZmluZSBOVl9DVFJMX09W
RVJTQ0FOX0NPTVBFTlNBVElPTiAzMzkgLyogUldERyAqLwotCi0vKgotICogTlZfQ1RSTF9HUFVf
UENJRV9HRU5FUkFUSU9OIC0gUmVwb3J0cyB0aGUgY3VycmVudCBQQ0llIGdlbmVyYXRpb24uCi0g
Ki8KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfUENJRV9HRU5FUkFUSU9OIDM0MSAvKiBSLS1HSSAqLwot
I2RlZmluZSBOVl9DVFJMX0dQVV9QQ0lFX0dFTkVSQVRJT04xIDB4MDAwMDAwMDEKLSNkZWZpbmUg
TlZfQ1RSTF9HUFVfUENJRV9HRU5FUkFUSU9OMiAweDAwMDAwMDAyCi0jZGVmaW5lIE5WX0NUUkxf
R1BVX1BDSUVfR0VORVJBVElPTjMgMHgwMDAwMDAwMwotCi0vKgotICogTlZfQ1RSTF9HVklfQk9V
TkRfR1BVIC0gUmV0dXJucyB0aGUgTlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgdGFyZ2V0X2lkIG9m
Ci0gKiB0aGUgR1BVIGN1cnJlbnRseSBib3VuZCB0byB0aGUgR1ZJIGRldmljZS4gIFJldHVybnMg
LTEgaWYgbm8gR1BVIGlzCi0gKiBjdXJyZW50bHkgYm91bmQgdG8gdGhlIEdWSSBkZXZpY2UuCi0g
Ki8KLSNkZWZpbmUgTlZfQ1RSTF9HVklfQk9VTkRfR1BVIDM0MiAvKiBSLS1JICovCi0KLS8qCi0g
KiBOVl9DVFJMX0dWSU9fUkVRVUVTVEVEX1ZJREVPX0ZPUk1BVDMgLSB0aGlzIGF0dHJpYnV0ZSBp
cyBvbmx5Ci0gKiBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIHF1ZXJ5IHRoZSBWYWxpZFZhbHVlcyBm
b3IKLSAqIE5WX0NUUkxfR1ZJT19SRVFVRVNURURfVklERU9fRk9STUFUIGZvciBWSURFT19GT1JN
QVQgdmFsdWVzIGJldHdlZW4KLSAqIDY0IGFuZCA5NS4gIFNlZSBOVl9DVFJMX0dWSU9fUkVRVUVT
VEVEX1ZJREVPX0ZPUk1BVCBmb3IgZGV0YWlscy4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZJ
T19SRVFVRVNURURfVklERU9fRk9STUFUMyAzNDMgLyogLS0tR0kgKi8KLQotLyoKLSAqIE5WX0NU
UkxfQUNDRUxFUkFURV9UUkFQRVpPSURTIC0gVG9nZ2xlcyBSRU5ERVIgVHJhcGV6b2lkIGFjY2Vs
ZXJhdGlvbgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9BQ0NFTEVSQVRFX1RSQVBFWk9JRFMgMzQ0
IC8qIFJXLSAqLwotI2RlZmluZSBOVl9DVFJMX0FDQ0VMRVJBVEVfVFJBUEVaT0lEU19ESVNBQkxF
IDAKLSNkZWZpbmUgTlZfQ1RSTF9BQ0NFTEVSQVRFX1RSQVBFWk9JRFNfRU5BQkxFIDEKLQotLyoK
LSAqIE5WX0NUUkxfR1BVX0NPUkVTIC0gUmV0dXJucyBudW1iZXIgb2YgR1BVIGNvcmVzIHN1cHBv
cnRlZCBieSB0aGUgZ3JhcGhpY3MKLSAqIHBpcGVsaW5lLgotICovCi0KLSNkZWZpbmUgTlZfQ1RS
TF9HUFVfQ09SRVMgMzQ1IC8qIFItLUcgKi8KLQotLyoKLSAqIE5WX0NUUkxfR1BVX01FTU9SWV9C
VVNfV0lEVEggLSBSZXR1cm5zIG1lbW9yeSBidXMgYmFuZHdpZHRoIG9uIHRoZSBhc3NvY2lhdGVk
Ci0gKiBzdWJkZXZpY2UuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dQVV9NRU1PUllfQlVTX1dJ
RFRIIDM0NiAvKiBSLS1HICovCi0KLS8qCi0gKiBOVl9DVFJMX0dWSV9URVNUX01PREUgLSBUaGlz
IGF0dHJpYnV0ZSBjb250cm9scyB0aGUgR1ZJIHRlc3QgbW9kZS4gIFdoZW4KLSAqIGVuYWJsZWQs
IHRoZSBHVkkgZGV2aWNlIHdpbGwgZ2VuZXJhdGUgZmFrZSBkYXRhIGFzIHF1aWNrbHkgYXMgcG9z
c2libGUuICBBbGwKLSAqIEdWSSBzZXR0aW5ncyBhcmUgc3RpbGwgdmFsaWQgd2hlbiB0aGlzIGlz
IGVuYWJsZWQgKGUuZy4sIHRoZSByZXF1ZXN0ZWQgdmlkZW8KLSAqIGZvcm1hdCBpcyBob25vcmVk
IGFuZCBzZXRzIHRoZSB2aWRlbyBzaXplKS4KLSAqIFRoaXMgbWF5IGJlIHVzZWQgdG8gdGVzdCB0
aGUgcGlwZWxpbmUuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0dWSV9URVNUX01PREUgMzQ3IC8q
IFItLUkgKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVklfVEVTVF9NT0RFX0RJU0FCTEUgMAotI2RlZmlu
ZSBOVl9DVFJMX0dWSV9URVNUX01PREVfRU5BQkxFIDEKLQotLyoKLSAqIE5WX0NUUkxfQ09MT1Jf
U1BBQ0UgLSBUaGlzIG9wdGlvbiBzZXRzIGNvbG9yIHNwYWNlIG9mIHRoZSB2aWRlbwotICogc2ln
bmFsLgotICovCi0jZGVmaW5lIE5WX0NUUkxfQ09MT1JfU1BBQ0UgMzQ4IC8qIFJXREcgKi8KLSNk
ZWZpbmUgTlZfQ1RSTF9DT0xPUl9TUEFDRV9SR0IgMAotI2RlZmluZSBOVl9DVFJMX0NPTE9SX1NQ
QUNFX1lDYkNyNDIyIDEKLSNkZWZpbmUgTlZfQ1RSTF9DT0xPUl9TUEFDRV9ZQ2JDcjQ0NCAyCi0K
LS8qCi0gKiBOVl9DVFJMX0NPTE9SX1JBTkdFIC0gVGhpcyBvcHRpb24gc2V0cyBjb2xvciByYW5n
ZSBvZiB0aGUgdmlkZW8KLSAqIHNpZ25hbC4KLSAqLwotI2RlZmluZSBOVl9DVFJMX0NPTE9SX1JB
TkdFIDM0OSAvKiBSV0RHICovCi0jZGVmaW5lIE5WX0NUUkxfQ09MT1JfUkFOR0VfRlVMTCAwCi0j
ZGVmaW5lIE5WX0NUUkxfQ09MT1JfUkFOR0VfTElNSVRFRCAxCi0KLS8qCi0gKiBOVl9DVFJMX0dQ
VV9TQ0FMSU5HX0RFRkFVTFRfVEFSR0VUIC0gbm90IHN1cHBvcnRlZAotICoKLSAqIE5WX0NUUkxf
R1BVX1NDQUxJTkdfREVGQVVMVF9NRVRIT0QgLSBub3Qgc3VwcG9ydGVkCi0gKi8KLSNkZWZpbmUg
TlZfQ1RSTF9HUFVfU0NBTElOR19ERUZBVUxUX1RBUkdFVCAzNTAgLyogUi1ERyAqLwotI2RlZmlu
ZSBOVl9DVFJMX0dQVV9TQ0FMSU5HX0RFRkFVTFRfTUVUSE9EIDM1MSAvKiBSLURHICovCi0KLS8q
Ci0gKiBOVl9DVFJMX0RJVEhFUklOR19NT0RFIC0gQ29udHJvbHMgdGhlIGRpdGhlcmluZyBtb2Rl
LCB3aGVuCi0gKiBOVl9DVFJMX0NVUlJFTlRfRElUSEVSSU5HIGlzIEVuYWJsZWQuCi0gKgotICog
QVVUTzogYWxsb3cgdGhlIGRyaXZlciB0byBjaG9vc2UgdGhlIGRpdGhlcmluZyBtb2RlIGF1dG9t
YXRpY2FsbHkuCi0gKgotICogRFlOQU1JQ18yWDI6IHVzZSBhIDJ4MiBtYXRyaXggdG8gZGl0aGVy
IGZyb20gdGhlIEdQVSdzIHBpeGVsCi0gKiBwaXBlbGluZSB0byB0aGUgYml0IGRlcHRoIG9mIHRo
ZSBmbGF0IHBhbmVsLiAgVGhlIG1hdHJpeCB2YWx1ZXMKLSAqIGFyZSBjaGFuZ2VkIGZyb20gZnJh
bWUgdG8gZnJhbWUuCi0gKgotICogU1RBVElDXzJYMjogdXNlIGEgMngyIG1hdHJpeCB0byBkaXRo
ZXIgZnJvbSB0aGUgR1BVJ3MgcGl4ZWwKLSAqIHBpcGVsaW5lIHRvIHRoZSBiaXQgZGVwdGggb2Yg
dGhlIGZsYXQgcGFuZWwuICBUaGUgbWF0cml4IHZhbHVlcwotICogZG8gbm90IGNoYW5nZSBmcm9t
IGZyYW1lIHRvIGZyYW1lLgotICoKLSAqIFRFTVBPUkFMOiB1c2UgYSBwc2V1ZG9yYW5kb20gdmFs
dWUgZnJvbSBhIHVuaWZvcm0gZGlzdHJpYnV0aW9uIGNhbGN1bGF0ZWQgYXQKLSAqIGV2ZXJ5IHBp
eGVsIHRvIGFjaGlldmUgc3RvY2hhc3RpYyBkaXRoZXJpbmcuICBUaGlzIG1ldGhvZCBwcm9kdWNl
cyBhIGJldHRlcgotICogdmlzdWFsIHJlc3VsdCB0aGFuIDJ4MiBtYXRyaXggYXBwcm9hY2hlcy4K
LSAqLwotI2RlZmluZSBOVl9DVFJMX0RJVEhFUklOR19NT0RFIDM1MiAvKiBSV0RHICovCi0jZGVm
aW5lIE5WX0NUUkxfRElUSEVSSU5HX01PREVfQVVUTyAwCi0jZGVmaW5lIE5WX0NUUkxfRElUSEVS
SU5HX01PREVfRFlOQU1JQ18yWDIgMQotI2RlZmluZSBOVl9DVFJMX0RJVEhFUklOR19NT0RFX1NU
QVRJQ18yWDIgMgotI2RlZmluZSBOVl9DVFJMX0RJVEhFUklOR19NT0RFX1RFTVBPUkFMIDMKLQot
LyoKLSAqIE5WX0NUUkxfQ1VSUkVOVF9ESVRIRVJJTkcgLSBSZXR1cm5zIHRoZSBjdXJyZW50IGRp
dGhlcmluZyBzdGF0ZS4KLSAqLwotI2RlZmluZSBOVl9DVFJMX0NVUlJFTlRfRElUSEVSSU5HIDM1
MyAvKiBSLURHICovCi0jZGVmaW5lIE5WX0NUUkxfQ1VSUkVOVF9ESVRIRVJJTkdfRElTQUJMRUQg
MAotI2RlZmluZSBOVl9DVFJMX0NVUlJFTlRfRElUSEVSSU5HX0VOQUJMRUQgMQotCi0vKgotICog
TlZfQ1RSTF9DVVJSRU5UX0RJVEhFUklOR19NT0RFIC0gUmV0dXJucyB0aGUgY3VycmVudCBkaXRo
ZXJpbmcKLSAqIG1vZGUuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9DVVJSRU5UX0RJVEhFUklOR19N
T0RFIDM1NCAvKiBSLURHICovCi0jZGVmaW5lIE5WX0NUUkxfQ1VSUkVOVF9ESVRIRVJJTkdfTU9E
RV9OT05FIDAKLSNkZWZpbmUgTlZfQ1RSTF9DVVJSRU5UX0RJVEhFUklOR19NT0RFX0RZTkFNSUNf
MlgyIDEKLSNkZWZpbmUgTlZfQ1RSTF9DVVJSRU5UX0RJVEhFUklOR19NT0RFX1NUQVRJQ18yWDIg
MgotI2RlZmluZSBOVl9DVFJMX0NVUlJFTlRfRElUSEVSSU5HX01PREVfVEVNUE9SQUwgMwotCi0v
KgotICogTlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9SRUFESU5HIC0gUmV0dXJucyB0aGUgdGhlcm1h
bCBzZW5zb3IncyBjdXJyZW50Ci0gKiByZWFkaW5nLgotICovCi0jZGVmaW5lIE5WX0NUUkxfVEhF
Uk1BTF9TRU5TT1JfUkVBRElORyAzNTUgLyogUi0tUyAqLwotCi0vKgotICogTlZfQ1RSTF9USEVS
TUFMX1NFTlNPUl9QUk9WSURFUiAtIFJldHVybnMgdGhlIGhhcmR3YXJlIGRldmljZSB0aGF0Ci0g
KiBwcm92aWRlcyB0aGUgdGhlcm1hbCBzZW5zb3IuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9USEVS
TUFMX1NFTlNPUl9QUk9WSURFUiAzNTYgLyogUi0tUyAqLwotI2RlZmluZSBOVl9DVFJMX1RIRVJN
QUxfU0VOU09SX1BST1ZJREVSX05PTkUgMAotI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09S
X1BST1ZJREVSX0dQVV9JTlRFUk5BTCAxCi0jZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1Jf
UFJPVklERVJfQURNMTAzMiAyCi0jZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfUFJPVklE
RVJfQURUNzQ2MSAzCi0jZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfUFJPVklERVJfTUFY
NjY0OSA0Ci0jZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfUFJPVklERVJfTUFYMTYxNyA1
Ci0jZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfUFJPVklERVJfTE05OSA2Ci0jZGVmaW5l
IE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfUFJPVklERVJfTE04OSA3Ci0jZGVmaW5lIE5WX0NUUkxf
VEhFUk1BTF9TRU5TT1JfUFJPVklERVJfTE02NCA4Ci0jZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9T
RU5TT1JfUFJPVklERVJfRzc4MSA5Ci0jZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfUFJP
VklERVJfQURUNzQ3MyAxMAotI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1BST1ZJREVS
X1NCTUFYNjY0OSAxMQotI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1BST1ZJREVSX1ZC
SU9TRVZUIDEyCi0jZGVmaW5lIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfUFJPVklERVJfT1MgMTMK
LSNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9QUk9WSURFUl9VTktOT1dOIDB4RkZGRkZG
RkYKLQotLyoKLSAqIE5WX0NUUkxfVEhFUk1BTF9TRU5TT1JfVEFSR0VUIC0gUmV0dXJucyB3aGF0
IGhhcmR3YXJlIGNvbXBvbmVudAotICogdGhlIHRoZXJtYWwgc2Vuc29yIGlzIG1lYXN1cmluZy4K
LSAqLwotI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1RBUkdFVCAzNTcgLyogUi0tUyAq
LwotI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1RBUkdFVF9OT05FIDAKLSNkZWZpbmUg
TlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9UQVJHRVRfR1BVIDEKLSNkZWZpbmUgTlZfQ1RSTF9USEVS
TUFMX1NFTlNPUl9UQVJHRVRfTUVNT1JZIDIKLSNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NFTlNP
Ul9UQVJHRVRfUE9XRVJfU1VQUExZIDQKLSNkZWZpbmUgTlZfQ1RSTF9USEVSTUFMX1NFTlNPUl9U
QVJHRVRfQk9BUkQgOAotI2RlZmluZSBOVl9DVFJMX1RIRVJNQUxfU0VOU09SX1RBUkdFVF9VTktO
T1dOIDB4RkZGRkZGRkYKLQotLyoKLSAqIE5WX0NUUkxfU0hPV19NVUxUSUdQVV9WSVNVQUxfSU5E
SUNBVE9SIC0gd2hlbiBUUlVFLCBPcGVuR0wgd2lsbAotICogZHJhdyBpbmZvcm1hdGlvbiBhYm91
dCB0aGUgY3VycmVudCBNVUxUSUdQVSBtb2RlLgotICovCi0jZGVmaW5lIE5WX0NUUkxfU0hPV19N
VUxUSUdQVV9WSVNVQUxfSU5ESUNBVE9SIDM1OCAvKiBSVy1YICovCi0jZGVmaW5lIE5WX0NUUkxf
U0hPV19NVUxUSUdQVV9WSVNVQUxfSU5ESUNBVE9SX0ZBTFNFIDAKLSNkZWZpbmUgTlZfQ1RSTF9T
SE9XX01VTFRJR1BVX1ZJU1VBTF9JTkRJQ0FUT1JfVFJVRSAxCi0KLS8qCi0gKiBOVl9DVFJMX0dQ
VV9DVVJSRU5UX1BST0NFU1NPUl9DTE9DS19GUkVRUyAtIFJldHVybnMgR1BVJ3MgcHJvY2Vzc29y
Ci0gKiBjbG9jayBmcmVxcy4KLSAqLwotI2RlZmluZSBOVl9DVFJMX0dQVV9DVVJSRU5UX1BST0NF
U1NPUl9DTE9DS19GUkVRUyAzNTkgLyogUlctRyAqLwotCi0vKgotICogTlZfQ1RSTF9HVklPX1ZJ
REVPX0ZPUk1BVF9GTEFHUyAtIHF1ZXJ5IHRoZSBmbGFncyAodmFyaW91cyBpbmZvcm1hdGlvbgot
ICogZm9yIHRoZSBzcGVjaWZpZWQgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF8qLiAgU28gdGhh
dCB0aGlzIGNhbiBiZQotICogcXVlcmllZCB3aXRoIGV4aXN0aW5nIGludGVyZmFjZXMsIHRoZSB2
aWRlbyBmb3JtYXQgc2hvdWxkIGJlIHNwZWNpZmllZAotICogaW4gdGhlIGRpc3BsYXlfbWFzayBm
aWVsZDsgZWc6Ci0gKgotICogWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKGRweSwKLSAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBOVl9DVFJMX1RBUkdFVF9UWVBFX0dWSSwKLSAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBndmksCi0gKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF83MjBQXzYwXzAwX1NNUFRFMjk2LAotICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfRkxB
R1MsCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZsYWdzKTsKLSAqCi0gKiBOb3Rl
OiBUaGUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF9GTEFHU18zR18xMDgwUF9OT18xMkJQQyBm
bGFnIGlzIHNldAotICogICAgICAgZm9yIHRob3NlIDEwODBQIDNHIG1vZGVzIChsZXZlbCBBIGFu
ZCBCKSB0aGF0IGRvIG5vdCBzdXBwb3J0Ci0gKiAgICAgICAxMiBiaXRzIHBlciBjb21wb25lbnQg
KHdoZW4gY29uZmlndXJpbmcgYSBHVkkgc3RyZWFtLikKLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxf
R1ZJT19WSURFT19GT1JNQVRfRkxBR1MgMzYwIC8qIFItLUkgKi8KLSNkZWZpbmUgTlZfQ1RSTF9H
VklPX1ZJREVPX0ZPUk1BVF9GTEFHU19OT05FIDB4MDAwMDAwMDAKLSNkZWZpbmUgTlZfQ1RSTF9H
VklPX1ZJREVPX0ZPUk1BVF9GTEFHU19JTlRFUkxBQ0VEIDB4MDAwMDAwMDEKLSNkZWZpbmUgTlZf
Q1RSTF9HVklPX1ZJREVPX0ZPUk1BVF9GTEFHU19QUk9HUkVTU0lWRSAweDAwMDAwMDAyCi0jZGVm
aW5lIE5WX0NUUkxfR1ZJT19WSURFT19GT1JNQVRfRkxBR1NfUFNGIDB4MDAwMDAwMDQKLSNkZWZp
bmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF9GTEFHU18zR19MRVZFTF9BIDB4MDAwMDAwMDgK
LSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF9GTEFHU18zR19MRVZFTF9CIDB4MDAw
MDAwMTAKLSNkZWZpbmUgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1BVF9GTEFHU18zRyBcCi0gICAg
KChOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUX0ZMQUdTXzNHX0xFVkVMX0EpIHwgKE5WX0NUUkxf
R1ZJT19WSURFT19GT1JNQVRfRkxBR1NfM0dfTEVWRUxfQikpCi0jZGVmaW5lIE5WX0NUUkxfR1ZJ
T19WSURFT19GT1JNQVRfRkxBR1NfM0dfMTA4MFBfTk9fMTJCUEMgMHgwMDAwMDAyMAotCi0vKgot
ICogTlZfQ1RSTF9HUFVfUENJRV9NQVhfTElOS19TUEVFRCAtIHJldHVybnMgbWF4aW11bSBQQ0ll
IGxpbmsgc3BlZWQsCi0gKiBpbiBnaWdhdHJhbnNmZXJzIHBlciBzZWNvbmQgKEdUL3MpLgotICov
Ci0KLSNkZWZpbmUgTlZfQ1RSTF9HUFVfUENJRV9NQVhfTElOS19TUEVFRCAzNjEgLyogUi0tR0kg
Ki8KLQotLyoKLSAqIE5WX0NUUkxfM0RfVklTSU9OX1BST19SRVNFVF9UUkFOU0NFSVZFUl9UT19G
QUNUT1JZX1NFVFRJTkdTIC0gUmVzZXRzIHRoZQotICogM0QgVmlzaW9uIFBybyB0cmFuc2NlaXZl
ciB0byBpdHMgZmFjdG9yeSBzZXR0aW5ncy4KLSAqLwotI2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lP
Tl9QUk9fUkVTRVRfVFJBTlNDRUlWRVJfVE9fRkFDVE9SWV9TRVRUSU5HUyAzNjMgLyogLVctVCAq
LwotCi0vKgotICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX0NIQU5ORUwgLSBD
b250cm9scyB0aGUgY2hhbm5lbCB0aGF0IGlzCi0gKiBjdXJyZW50bHkgdXNlZCBieSB0aGUgM0Qg
VmlzaW9uIFBybyB0cmFuc2NlaXZlci4KLSAqLwotI2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9Q
Uk9fVFJBTlNDRUlWRVJfQ0hBTk5FTCAzNjQgLyogUlctVCAqLwotCi0vKgotICogTlZfQ1RSTF8z
RF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX01PREUgLSBDb250cm9scyB0aGUgbW9kZSBpbiB3aGlj
aCB0aGUKLSAqIDNEIFZpc2lvbiBQcm8gdHJhbnNjZWl2ZXIgb3BlcmF0ZXMuCi0gKiBOVl9DVFJM
XzNEX1ZJU0lPTl9QUk9fVE1fTE9XX1JBTkdFIGlzIGJpZGlyZWN0aW9uYWwKLSAqIE5WX0NUUkxf
M0RfVklTSU9OX1BST19UTV9NRURJVU1fUkFOR0UgaXMgYmlkaXJlY3Rpb25hbAotICogTlZfQ1RS
TF8zRF9WSVNJT05fUFJPX1RNX0hJR0hfUkFOR0UgbWF5IGJlIGJpZGlyZWN0aW9uYWwganVzdCB1
cCB0byBhCi0gKiAgICAgZ2l2ZW4gcmFuZ2UsIGFuZCB1bmlkaXJlY3Rpb25hbCBiZXlvbmQgaXQK
LSAqIE5WX0NUUkxfM0RfVklTSU9OX1BST19UTV9DT1VOVCBpcyB0aGUgdG90YWwgbnVtYmVyIG9m
Ci0gKiAgICAgM0QgVmlzaW9uIFBybyB0cmFuc2NlaXZlciBtb2RlcwotICovCi0jZGVmaW5lIE5W
X0NUUkxfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9NT0RFIDM2NSAvKiBSVy1UICovCi0jZGVm
aW5lIE5WX0NUUkxfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9NT0RFX0lOVkFMSUQgMAotI2Rl
ZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJfTU9ERV9MT1dfUkFOR0UgMQot
I2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJfTU9ERV9NRURJVU1fUkFO
R0UgMgotI2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJfTU9ERV9ISUdI
X1JBTkdFIDMKLSNkZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX01PREVf
Q09VTlQgNAotCi0vKgotICogTlZfQ1RSTF9TWU5DSFJPTk9VU19QQUxFVFRFX1VQREFURVMgLSBj
b250cm9scyB3aGV0aGVyIHVwZGF0ZXMgdG8gdGhlIGNvbG9yCi0gKiBsb29rdXAgdGFibGUgKExV
VCkgYXJlIHN5bmNocm9ub3VzIHdpdGggcmVzcGVjdCB0byBYIHJlbmRlcmluZy4gIEZvciBleGFt
cGxlLAotICogaWYgYW4gWCBjbGllbnQgc2VuZHMgWFN0b3JlQ29sb3JzIGZvbGxvd2VkIGJ5IFhG
aWxsUmVjdGFuZ2xlLCB0aGUgZHJpdmVyIHdpbGwKLSAqIGd1YXJhbnRlZSB0aGF0IHRoZSBGaWxs
UmVjdGFuZ2xlIHJlcXVlc3QgaXMgbm90IHByb2Nlc3NlZCB1bnRpbCBhZnRlciB0aGUKLSAqIHVw
ZGF0ZWQgTFVUIGNvbG9ycyBhcmUgYWN0dWFsbHkgdmlzaWJsZSBvbiB0aGUgc2NyZWVuIGlmCi0g
KiBOVl9DVFJMX1NZTkNIUk9OT1VTX1BBTEVUVEVfVVBEQVRFUyBpcyBlbmFibGVkLiAgT3RoZXJ3
aXNlLCB0aGUgcmVuZGVyaW5nIG1heQotICogb2NjdXIgZmlyc3QuCi0gKgotICogVGhpcyBtYWtl
cyBhIGRpZmZlcmVuY2UgZm9yIGFwcGxpY2F0aW9ucyB0aGF0IHVzZSB0aGUgTFVUIHRvIGFuaW1h
dGUsIHN1Y2ggYXMKLSAqIFhQaWxvdC4gIElmIHlvdSBleHBlcmllbmNlIGZsaWNrZXJpbmcgaW4g
YXBwbGljYXRpb25zIHRoYXQgdXNlIExVVAotICogYW5pbWF0aW9ucywgdHJ5IGVuYWJsaW5nIHRo
aXMgYXR0cmlidXRlLgotICoKLSAqIFdoZW4gc3luY2hyb25vdXMgdXBkYXRlcyBhcmUgZW5hYmxl
ZCwgWFN0b3JlQ29sb3JzIHJlcXVlc3RzIHdpbGwgYmUgcHJvY2Vzc2VkCi0gKiBhdCB5b3VyIHNj
cmVlbidzIHJlZnJlc2ggcmF0ZS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfU1lOQ0hST05PVVNf
UEFMRVRURV9VUERBVEVTIDM2NyAvKiBSV0RHICovCi0jZGVmaW5lIE5WX0NUUkxfU1lOQ0hST05P
VVNfUEFMRVRURV9VUERBVEVTX0RJU0FCTEUgMAotI2RlZmluZSBOVl9DVFJMX1NZTkNIUk9OT1VT
X1BBTEVUVEVfVVBEQVRFU19FTkFCTEUgMQotCi0vKgotICogTlZfQ1RSTF9ESVRIRVJJTkdfREVQ
VEggLSBDb250cm9scyB0aGUgZGl0aGVyaW5nIGRlcHRoIHdoZW4KLSAqIE5WX0NUUkxfQ1VSUkVO
VF9ESVRIRVJJTkcgaXMgRU5BQkxFRC4gIFNvbWUgZGlzcGxheXMgY29ubmVjdGVkCi0gKiB0byB0
aGUgR1BVIHZpYSB0aGUgRFZJIG9yIExWRFMgaW50ZXJmYWNlcyBjYW5ub3QgZGlzcGxheSB0aGUK
LSAqIGZ1bGwgY29sb3IgcmFuZ2Ugb2YgdGVuIGJpdHMgcGVyIGNoYW5uZWwsIHNvIHRoZSBHUFUg
d2lsbAotICogZGl0aGVyIHRvIGVpdGhlciA2IG9yIDggYml0cyBwZXIgY2hhbm5lbC4KLSAqLwot
I2RlZmluZSBOVl9DVFJMX0RJVEhFUklOR19ERVBUSCAzNjggLyogUldERyAqLwotI2RlZmluZSBO
Vl9DVFJMX0RJVEhFUklOR19ERVBUSF9BVVRPIDAKLSNkZWZpbmUgTlZfQ1RSTF9ESVRIRVJJTkdf
REVQVEhfNl9CSVRTIDEKLSNkZWZpbmUgTlZfQ1RSTF9ESVRIRVJJTkdfREVQVEhfOF9CSVRTIDIK
LQotLyoKLSAqIE5WX0NUUkxfQ1VSUkVOVF9ESVRIRVJJTkdfREVQVEggLSBSZXR1cm5zIHRoZSBj
dXJyZW50IGRpdGhlcmluZwotICogZGVwdGggdmFsdWUuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9D
VVJSRU5UX0RJVEhFUklOR19ERVBUSCAzNjkgLyogUi1ERyAqLwotI2RlZmluZSBOVl9DVFJMX0NV
UlJFTlRfRElUSEVSSU5HX0RFUFRIX05PTkUgMAotI2RlZmluZSBOVl9DVFJMX0NVUlJFTlRfRElU
SEVSSU5HX0RFUFRIXzZfQklUUyAxCi0jZGVmaW5lIE5WX0NUUkxfQ1VSUkVOVF9ESVRIRVJJTkdf
REVQVEhfOF9CSVRTIDIKLQotLyoKLSAqIE5WX0NUUkxfM0RfVklTSU9OX1BST19UUkFOU0NFSVZF
Ul9DSEFOTkVMX0ZSRVFVRU5DWSAtIFJldHVybnMgdGhlCi0gKiBmcmVxdWVuY3kgb2YgdGhlIGNo
YW5uZWwoaW4ga0h6KSBvZiB0aGUgM0QgVmlzaW9uIFBybyB0cmFuc2NlaXZlci4KLSAqIFVzZSB0
aGUgZGlzcGxheV9tYXNrIHBhcmFtZXRlciB0byBzcGVjaWZ5IHRoZSBjaGFubmVsIG51bWJlci4K
LSAqLwotI2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJfQ0hBTk5FTF9G
UkVRVUVOQ1kgMzcwIC8qIFItLVQgKi8KLQotLyoKLSAqIE5WX0NUUkxfM0RfVklTSU9OX1BST19U
UkFOU0NFSVZFUl9DSEFOTkVMX1FVQUxJVFkgLSBSZXR1cm5zIHRoZQotICogcXVhbGl0eSBvZiB0
aGUgY2hhbm5lbChpbiBwZXJjZW50YWdlKSBvZiB0aGUgM0QgVmlzaW9uIFBybyB0cmFuc2NlaXZl
ci4KLSAqIFVzZSB0aGUgZGlzcGxheV9tYXNrIHBhcmFtZXRlciB0byBzcGVjaWZ5IHRoZSBjaGFu
bmVsIG51bWJlci4KLSAqLwotI2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlW
RVJfQ0hBTk5FTF9RVUFMSVRZIDM3MSAvKiBSLS1UICovCi0KLS8qCi0gKiBOVl9DVFJMXzNEX1ZJ
U0lPTl9QUk9fVFJBTlNDRUlWRVJfQ0hBTk5FTF9DT1VOVCAtIFJldHVybnMgdGhlIG51bWJlciBv
ZgotICogY2hhbm5lbHMgb24gdGhlIDNEIFZpc2lvbiBQcm8gdHJhbnNjZWl2ZXIuCi0gKi8KLSNk
ZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX0NIQU5ORUxfQ09VTlQgMzcy
IC8qIFItLVQgKi8KLQotLyoKLSAqIE5WX0NUUkxfM0RfVklTSU9OX1BST19QQUlSX0dMQVNTRVMg
LSBQdXRzIHRoZSAzRCBWaXNpb24gUHJvCi0gKiB0cmFuc2NlaXZlciBpbnRvIHBhaXJpbmcgbW9k
ZSB0byBnYXRoZXIgYWRkaXRpb25hbCBnbGFzc2VzLgotICogTlZfQ1RSTF8zRF9WSVNJT05fUFJP
X1BBSVJfR0xBU1NFU19TVE9QIC0gc3RvcHMgYW55IHBhaXJpbmcKLSAqIE5WX0NUUkxfM0RfVklT
SU9OX1BST19QQUlSX0dMQVNTRVNfQkVBQ09OIC0gc3RhcnRzIGNvbnRpbnVvdXMKLSAqICAgICBw
YWlyaW5nIHZpYSBiZWFjb24gbW9kZQotICogQW55IG90aGVyIHZhbHVlLCBOIC0gUHV0cyB0aGUg
M0QgVmlzaW9uIFBybyB0cmFuc2NlaXZlciBpbnRvCi0gKiAgICAgYXV0aGVudGljYXRlZCBwYWly
aW5nIG1vZGUgZm9yIE4gc2Vjb25kcy4KLSAqLwotI2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9Q
Uk9fUEFJUl9HTEFTU0VTIDM3MyAvKiAtVy1UICovCi0jZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9O
X1BST19QQUlSX0dMQVNTRVNfU1RPUCAwCi0jZGVmaW5lIE5WX0NUUkxfM0RfVklTSU9OX1BST19Q
QUlSX0dMQVNTRVNfQkVBQ09OIDB4RkZGRkZGRkYKLQotLyoKLSAqIE5WX0NUUkxfM0RfVklTSU9O
X1BST19VTlBBSVJfR0xBU1NFUyAtIFRlbGxzIGEgc3BlY2lmaWMgcGFpcgotICogb2YgZ2xhc3Nl
cyB0byB1bnBhaXIuIFRoZSBnbGFzc2VzIHdpbGwgImZvcmdldCIgdGhlIGFkZHJlc3MKLSAqIG9m
IHRoZSAzRCBWaXNpb24gUHJvIHRyYW5zY2VpdmVyIHRvIHdoaWNoIHRoZXkgaGF2ZSBiZWVuIHBh
aXJlZC4KLSAqIFRvIHVucGFpciBhbGwgdGhlIGN1cnJlbnRseSBwYWlyZWQgZ2xhc3Nlcywgc3Bl
Y2lmeQotICogdGhlIGdsYXNzZXMgaWQgYXMgMC4KLSAqLwotI2RlZmluZSBOVl9DVFJMXzNEX1ZJ
U0lPTl9QUk9fVU5QQUlSX0dMQVNTRVMgMzc0IC8qIC1XLVQgKi8KLQotLyoKLSAqIE5WX0NUUkxf
M0RfVklTSU9OX1BST19ESVNDT1ZFUl9HTEFTU0VTIC0gVGVsbHMgdGhlIDNEIFZpc2lvbiBQcm8K
LSAqIHRyYW5zY2VpdmVyIGFib3V0IHRoZSBnbGFzc2VzIHRoYXQgaGF2ZSBiZWVuIHBhaXJlZCB1
c2luZwotICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX1BBSVJfR0xBU1NFU19CRUFDT04uIFVubGVz
cyB0aGlzIGlzIGRvbmUsCi0gKiB0aGUgM0QgVmlzaW9uIFBybyB0cmFuc2NlaXZlciB3aWxsIG5v
dCBrbm93IGFib3V0IGdsYXNzZXMgcGFpcmVkIGluCi0gKiBiZWFjb24gbW9kZS4KLSAqLwotI2Rl
ZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fRElTQ09WRVJfR0xBU1NFUyAzNzUgLyogLVctVCAq
LwotCi0vKgotICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX0lERU5USUZZX0dMQVNTRVMgLSBDYXVz
ZXMgZ2xhc3NlcyBMRURzIHRvCi0gKiBmbGFzaCBmb3IgYSBzaG9ydCBwZXJpb2Qgb2YgdGltZS4K
LSAqLwotI2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fSURFTlRJRllfR0xBU1NFUyAzNzYg
LyogLVctVCAqLwotCi0vKgotICogTlZfQ1RSTF8zRF9WSVNJT05fUFJPX0dMQVNTRVNfU1lOQ19D
WUNMRSAtIENvbnRyb2xzIHRoZQotICogc3luYyBjeWNsZSBkdXJhdGlvbihpbiBtaWxsaXNlY29u
ZHMpIG9mIHRoZSBnbGFzc2VzLgotICogVXNlIHRoZSBkaXNwbGF5X21hc2sgcGFyYW1ldGVyIHRv
IHNwZWNpZnkgdGhlIGdsYXNzZXMgaWQuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF8zRF9WSVNJT05f
UFJPX0dMQVNTRVNfU1lOQ19DWUNMRSAzNzggLyogUlctVCAqLwotCi0vKgotICogTlZfQ1RSTF8z
RF9WSVNJT05fUFJPX0dMQVNTRVNfTUlTU0VEX1NZTkNfQ1lDTEVTIC0gUmV0dXJucyB0aGUKLSAq
IG51bWJlciBvZiBzdGF0ZSBzeW5jIGN5Y2xlcyByZWNlbnRseSBtaXNzZWQgYnkgdGhlIGdsYXNz
ZXMuCi0gKiBVc2UgdGhlIGRpc3BsYXlfbWFzayBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB0aGUgZ2xh
c3NlcyBpZC4KLSAqLwotI2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fR0xBU1NFU19NSVNT
RURfU1lOQ19DWUNMRVMgMzc5IC8qIFItLVQgKi8KLQotLyoKLSAqIE5WX0NUUkxfM0RfVklTSU9O
X1BST19HTEFTU0VTX0JBVFRFUllfTEVWRUwgLSBSZXR1cm5zIHRoZQotICogYmF0dGVyeSBsZXZl
bChpbiBwZXJjZW50YWdlKSBvZiB0aGUgZ2xhc3Nlcy4KLSAqIFVzZSB0aGUgZGlzcGxheV9tYXNr
IHBhcmFtZXRlciB0byBzcGVjaWZ5IHRoZSBnbGFzc2VzIGlkLgotICovCi0jZGVmaW5lIE5WX0NU
UkxfM0RfVklTSU9OX1BST19HTEFTU0VTX0JBVFRFUllfTEVWRUwgMzgwIC8qIFItLVQgKi8KLQot
LyoKLSAqIE5WX0NUUkxfR1ZPX0FOQ19QQVJJVFlfQ09NUFVUQVRJT04gLSBDb250cm9scyB0aGUg
U0RJIGRldmljZSdzIGNvbXB1dGF0aW9uCi0gKiBvZiB0aGUgcGFyaXR5IGJpdCAoYml0IDgpIGZv
ciBBTkMgZGF0YSB3b3Jkcy4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0FOQ19QQVJJVFlf
Q09NUFVUQVRJT04gMzgxIC8qIFJXLS0tICovCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0FOQ19QQVJJ
VFlfQ09NUFVUQVRJT05fQVVUTyAwCi0jZGVmaW5lIE5WX0NUUkxfR1ZPX0FOQ19QQVJJVFlfQ09N
UFVUQVRJT05fT04gMQotI2RlZmluZSBOVl9DVFJMX0dWT19BTkNfUEFSSVRZX0NPTVBVVEFUSU9O
X09GRiAyCi0KLS8qCi0gKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fR0xBU1NFU19QQUlSX0VWRU5U
IC0gVGhpcyBhdHRyaWJ1dGUgaXMgc2VudAotICogYXMgYW4gZXZlbnQgd2hlbiBnbGFzc2VzIGdl
dCBwYWlyZWQgaW4gcmVzcG9uc2UgdG8gcGFpciBjb21tYW5kCi0gKiBmcm9tIGFueSBvZiB0aGUg
Y2xpZW50cy4KLSAqLwotI2RlZmluZSBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fR0xBU1NFU19QQUlS
X0VWRU5UIDM4MiAvKiAtLS1UICovCi0KLS8qCi0gKiBOVl9DVFJMXzNEX1ZJU0lPTl9QUk9fR0xB
U1NFU19VTlBBSVJfRVZFTlQgLSBUaGlzIGF0dHJpYnV0ZSBpcyBzZW50Ci0gKiBhcyBhbiBldmVu
dCB3aGVuIGdsYXNzZXMgZ2V0IHVucGFpcmVkIGluIHJlc3BvbnNlIHRvIHVucGFpciBjb21tYW5k
Ci0gKiBmcm9tIGFueSBvZiB0aGUgY2xpZW50cy4KLSAqLwotI2RlZmluZSBOVl9DVFJMXzNEX1ZJ
U0lPTl9QUk9fR0xBU1NFU19VTlBBSVJfRVZFTlQgMzgzIC8qIC0tLVQgKi8KLQotLyoKLSAqIE5W
X0NUUkxfR1BVX1BDSUVfQ1VSUkVOVF9MSU5LX1dJRFRIIC0gcmV0dXJucyB0aGUgY3VycmVudAot
ICogUENJZSBsaW5rIHdpZHRoLCBpbiBudW1iZXIgb2YgbGFuZXMuCi0gKi8KLSNkZWZpbmUgTlZf
Q1RSTF9HUFVfUENJRV9DVVJSRU5UX0xJTktfV0lEVEggMzg0IC8qIFItLUdJICovCi0KLS8qCi0g
KiBOVl9DVFJMX0dQVV9QQ0lFX0NVUlJFTlRfTElOS19TUEVFRCAtIHJldHVybnMgdGhlIGN1cnJl
bnQKLSAqIFBDSWUgbGluayBzcGVlZCwgaW4gbWVnYXRyYW5zZmVycyBwZXIgc2Vjb25kIChHVC9z
KS4KLSAqLwotI2RlZmluZSBOVl9DVFJMX0dQVV9QQ0lFX0NVUlJFTlRfTElOS19TUEVFRCAzODUg
LyogUi0tR0kgKi8KLQotLyoKLSAqIE5WX0NUUkxfR1ZPX0FVRElPX0JMQU5LSU5HIC0gc3BlY2lm
aWVzIHdoZXRoZXIgdGhlIEdWTyBkZXZpY2Ugc2hvdWxkIGRlbGV0ZQotICogYXVkaW8gYW5jaWxs
YXJ5IGRhdGEgcGFja2V0cyB3aGVuIGZyYW1lcyBhcmUgcmVwZWF0ZWQuCi0gKgotICogV2hlbiBh
IG5ldyBmcmFtZSBpcyBub3QgcmVhZHkgaW4gdGltZSwgdGhlIGN1cnJlbnQgZnJhbWUsIGluY2x1
ZGluZyBhbGwKLSAqIGFuY2lsbGFyeSBkYXRhIHBhY2tldHMsIGlzIHJlcGVhdGVkLiAgV2hlbiB0
aGlzIGRhdGEgaW5jbHVkZXMgYXVkaW8gcGFja2V0cywKLSAqIHRoaXMgY2FuIHJlc3VsdCBpbiBz
dHV0dGVycyBvciBjbGlja3MuICBXaGVuIHRoaXMgb3B0aW9uIGlzIGVuYWJsZWQsIHRoZSBHVk8K
LSAqIGRldmljZSB3aWxsIGRldGVjdCB3aGVuIGZyYW1lcyBhcmUgcmVwZWF0ZWQsIGlkZW50aWZ5
IGF1ZGlvIGFuY2lsbGFyeSBkYXRhCi0gKiBwYWNrZXRzLCBhbmQgbWFyayB0aGVtIGZvciBkZWxl
dGlvbi4KLSAqCi0gKiBUaGlzIG9wdGlvbiBpcyBhcHBsaWVkIHdoZW4gdGhlIEdWTyBkZXZpY2Ug
aXMgYm91bmQuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9HVk9fQVVESU9fQkxBTktJTkcgMzg2IC8q
IFJXLSAqLwotI2RlZmluZSBOVl9DVFJMX0dWT19BVURJT19CTEFOS0lOR19ESVNBQkxFIDAKLSNk
ZWZpbmUgTlZfQ1RSTF9HVk9fQVVESU9fQkxBTktJTkdfRU5BQkxFIDEKLQotLyoKLSAqIE5WX0NU
UkxfQ1VSUkVOVF9NRVRBTU9ERV9JRCAtIHN3aXRjaCBtb2RlcyB0byB0aGUgTWV0YU1vZGUgd2l0
aAotICogdGhlIHNwZWNpZmllZCBJRC4KLSAqLwotI2RlZmluZSBOVl9DVFJMX0NVUlJFTlRfTUVU
QU1PREVfSUQgMzg3IC8qIFJXLSAqLwotCi0vKgotICogTlZfQ1RSTF9ESVNQTEFZX0VOQUJMRUQg
LSBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBkaXNwbGF5IGRldmljZQotICogaXMgY3VycmVu
dGx5IGVuYWJsZWQuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9ESVNQTEFZX0VOQUJMRUQgMzg4IC8q
IFItRCAqLwotI2RlZmluZSBOVl9DVFJMX0RJU1BMQVlfRU5BQkxFRF9UUlVFIDEKLSNkZWZpbmUg
TlZfQ1RSTF9ESVNQTEFZX0VOQUJMRURfRkFMU0UgMAotCi0jZGVmaW5lIE5WX0NUUkxfTEFTVF9B
VFRSSUJVVEUgTlZfQ1RSTF9ESVNQTEFZX0VOQUJMRUQKLQotLyoqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwot
Ci0vKgotICogU3RyaW5nIEF0dHJpYnV0ZXM6Ci0gKgotICogU3RyaW5nIGF0dHJpYnV0ZXMgY2Fu
IGJlIHF1ZXJ5aWVkIHRocm91Z2ggdGhlIFhOVkNUUkxRdWVyeVN0cmluZ0F0dHJpYnV0ZSgpCi0g
KiBhbmQgWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRlKCkgZnVuY3Rpb24gY2FsbHMu
Ci0gKgotICogU3RyaW5nIGF0dHJpYnV0ZXMgY2FuIGJlIHNldCB0aHJvdWdoIHRoZSBYTlZDVFJM
U2V0U3RyaW5nQXR0cmlidXRlKCkKLSAqIGZ1bmN0aW9uIGNhbGwuICAoVGhlcmUgYXJlIGN1cnJl
bnRseSBubyBzdHJpbmcgYXR0cmlidXRlcyB0aGF0IGNhbiBiZQotICogc2V0IG9uIG5vbi1YIFNj
cmVlbiB0YXJnZXRzLikKLSAqCi0gKiBVbmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLCBhbGwgc3RyaW5n
IGF0dHJpYnV0ZXMgY2FuIGJlIHF1ZXJpZWQvc2V0IHVzaW5nIGFuCi0gKiBOVl9DVFJMX1RBUkdF
VF9UWVBFX1hfU0NSRUVOIHRhcmdldC4gIEF0dHJpYnV0ZXMgdGhhdCBjYW5ub3QgdGFrZSBhbgot
ICogTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQgYWxzbyBjYW5ub3QgYmUgcXVl
cmllZC9zZXQgdGhyb3VnaAotICogWE5WQ1RSTFF1ZXJ5U3RyaW5nQXR0cmlidXRlKCkvWE5WQ1RS
TFNldFN0cmluZ0F0dHJpYnV0ZSgpIChTaW5jZQotICogdGhlc2UgYXNzdW1lIGFuIFggU2NyZWVu
IHRhcmdldCkuCi0gKi8KLQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HX1BST0RVQ1RfTkFNRSAtIHRo
ZSBHUFUgcHJvZHVjdCBuYW1lIG9uIHdoaWNoIHRoZQotICogc3BlY2lmaWVkIFggc2NyZWVuIGlz
IHJ1bm5pbmcuCi0gKgotICogVGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBY
TlZDVFJMUXVlcnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUoKQotICogdXNpbmcgYSBOVl9DVFJMX1RB
UkdFVF9UWVBFX0dQVSBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIHRhcmdldC4KLSAq
LwotCi0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1BST0RVQ1RfTkFNRSAwIC8qIFItLUcgKi8KLQot
LyoKLSAqIE5WX0NUUkxfU1RSSU5HX1ZCSU9TX1ZFUlNJT04gLSB0aGUgdmlkZW8gYmlvcyB2ZXJz
aW9uIG9uIHRoZSBHUFUgb24KLSAqIHdoaWNoIHRoZSBzcGVjaWZpZWQgWCBzY3JlZW4gaXMgcnVu
bmluZy4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1ZCSU9TX1ZFUlNJT04gMSAvKiBS
LS1HICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19OVklESUFfRFJJVkVSX1ZFUlNJT04gLSBz
dHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlCi0gKiBOVklESUEgZHJpdmVyIHZlcnNpb24gbnVt
YmVyIGZvciB0aGUgTlZJRElBIFggZHJpdmVyIGluIHVzZS4KLSAqLwotCi0jZGVmaW5lIE5WX0NU
UkxfU1RSSU5HX05WSURJQV9EUklWRVJfVkVSU0lPTiAzIC8qIFItLUcgKi8KLQotLyoKLSAqIE5W
X0NUUkxfU1RSSU5HX0RJU1BMQVlfREVWSUNFX05BTUUgLSBuYW1lIG9mIHRoZSBkaXNwbGF5IGRl
dmljZQotICogc3BlY2lmaWVkIGluIHRoZSBkaXNwbGF5X21hc2sgYXJndW1lbnQuCi0gKgotICog
VGhpcyBhdHRyaWJ1dGUgbWF5IGJlIHF1ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRT
dHJpbmdBdHRyaWJ1dGUoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSBvciBO
Vl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIHRhcmdldC4KLSAqLwotCi0jZGVmaW5lIE5WX0NU
UkxfU1RSSU5HX0RJU1BMQVlfREVWSUNFX05BTUUgNCAvKiBSLURHICovCi0KLS8qCi0gKiBOVl9D
VFJMX1NUUklOR19UVl9FTkNPREVSX05BTUUgLSBuYW1lIG9mIHRoZSBUViBlbmNvZGVyIHVzZWQg
YnkgdGhlCi0gKiBzcGVjaWZpZWQgZGlzcGxheSBkZXZpY2U7IG9ubHkgdmFsaWQgaWYgdGhlIGRp
c3BsYXkgZGV2aWNlIGlzIGEgVFYuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19UVl9F
TkNPREVSX05BTUUgNSAvKiBSLURHICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19HVklPX0ZJ
Uk1XQVJFX1ZFUlNJT04gLSBpbmRpY2F0ZXMgdGhlIHZlcnNpb24gb2YgdGhlCi0gKiBGaXJtd2Fy
ZSBvbiB0aGUgR1ZJTyBkZXZpY2UuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19HVklP
X0ZJUk1XQVJFX1ZFUlNJT04gOCAvKiBSLS1JICovCi0KLS8qCi0gKiBUaGUgZm9sbG93aW5nIGlz
IGRlcHJlY2F0ZWQ7IHVzZSBOVl9DVFJMX1NUUklOR19HVklPX0ZJUk1XQVJFX1ZFUlNJT04sCi0g
KiBpbnN0ZWFkCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfR1ZPX0ZJUk1XQVJFX1ZFUlNJ
T04gOCAvKiBSLS0gKi8KLQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HX0NVUlJFTlRfTU9ERUxJTkUg
LSBSZXR1cm4gdGhlIE1vZGVMaW5lIGN1cnJlbnRseQotICogYmVpbmcgdXNlZCBieSB0aGUgc3Bl
Y2lmaWVkIGRpc3BsYXkgZGV2aWNlLgotICoKLSAqIFRoaXMgYXR0cmlidXRlIG1heSBiZSBxdWVy
aWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRlKCkKLSAqIHVzaW5n
IGFuIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JF
RU4gdGFyZ2V0LgotICoKLSAqIFRoZSBNb2RlTGluZSBzdHJpbmcgbWF5IGJlIHByZXBlbmRlZCB3
aXRoIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YKLSAqICJ0b2tlbj12YWx1ZSIgcGFpcnMsIHNl
cGFyYXRlZCBmcm9tIHRoZSBNb2RlTGluZSBzdHJpbmcgYnkgIjo6Ii4KLSAqIFRoaXMgInRva2Vu
PXZhbHVlIiBzeW50YXggaXMgdGhlIHNhbWUgYXMgdGhhdCB1c2VkIGluCi0gKiBOVl9DVFJMX0JJ
TkFSWV9EQVRBX01PREVMSU5FUwotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfQ1VSUkVO
VF9NT0RFTElORSA5IC8qIFItREcgKi8KLQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HX0FERF9NT0RF
TElORSAtIEFkZHMgYSBNb2RlTGluZSB0byB0aGUgc3BlY2lmaWVkCi0gKiBkaXNwbGF5IGRldmlj
ZS4gIFRoZSBNb2RlTGluZSBpcyBub3QgYWRkZWQgaWYgdmFsaWRhdGlvbiBmYWlscy4KLSAqCi0g
KiBUaGUgTW9kZUxpbmUgc3RyaW5nIHNob3VsZCBoYXZlIHRoZSBzYW1lIHN5bnRheCBhcyBhIE1v
ZGVMaW5lIGluCi0gKiB0aGUgWCBjb25maWd1cmF0aW9uIGZpbGU7IGUuZy4sCi0gKgotICogIjE2
MDB4MTIwMCIgIDIyOS41ICAxNjAwIDE2NjQgMTg1NiAyMTYwICAxMjAwIDEyMDEgMTIwNCAxMjUw
ICArSFN5bmMgK1ZTeW5jCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19BRERfTU9ERUxJ
TkUgMTAgLyogLVdERyAqLwotCi0vKgotICogTlZfQ1RSTF9TVFJJTkdfREVMRVRFX01PREVMSU5F
IC0gRGVsZXRlcyBhbiBleGlzdGluZyBNb2RlTGluZQotICogZnJvbSB0aGUgc3BlY2lmaWVkIGRp
c3BsYXkgZGV2aWNlLiAgVGhlIGN1cnJlbnRseSBzZWxlY3RlZAotICogTW9kZUxpbmUgY2Fubm90
IGJlIGRlbGV0ZWQuICAoVGhpcyBhbHNvIG1lYW5zIHlvdSBjYW5ub3QgZGVsZXRlCi0gKiB0aGUg
bGFzdCBNb2RlTGluZS4pCi0gKgotICogVGhlIE1vZGVMaW5lIHN0cmluZyBzaG91bGQgaGF2ZSB0
aGUgc2FtZSBzeW50YXggYXMgYSBNb2RlTGluZSBpbgotICogdGhlIFggY29uZmlndXJhdGlvbiBm
aWxlOyBlLmcuLAotICoKLSAqICIxNjAweDEyMDAiICAyMjkuNSAgMTYwMCAxNjY0IDE4NTYgMjE2
MCAgMTIwMCAxMjAxIDEyMDQgMTI1MCAgK0hTeW5jICtWU3luYwotICovCi0KLSNkZWZpbmUgTlZf
Q1RSTF9TVFJJTkdfREVMRVRFX01PREVMSU5FIDExIC8qIC1XREcgKi8KLQotLyoKLSAqIE5WX0NU
UkxfU1RSSU5HX0NVUlJFTlRfTUVUQU1PREUgLSBSZXR1cm5zIHRoZSBtZXRhbW9kZSBjdXJyZW50
bHkKLSAqIGJlaW5nIHVzZWQgYnkgdGhlIHNwZWNpZmllZCBYIHNjcmVlbi4gIFRoZSBNZXRhTW9k
ZSBzdHJpbmcgaGFzIHRoZQotICogc2FtZSBzeW50YXggYXMgdGhlIE1ldGFNb2RlIFggY29uZmln
dXJhdGlvbiBvcHRpb24sIGFzIGRvY3VtZW50ZWQKLSAqIGluIHRoZSBOVklESUEgZHJpdmVyIFJF
QURNRS4KLSAqCi0gKiBUaGUgcmV0dXJuZWQgc3RyaW5nIG1heSBiZSBwcmVwZW5kZWQgd2l0aCBh
IGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mCi0gKiAidG9rZW49dmFsdWUiIHBhaXJzLCBzZXBhcmF0
ZWQgZnJvbSB0aGUgTWV0YU1vZGUgc3RyaW5nIGJ5ICI6OiIuCi0gKiBUaGlzICJ0b2tlbj12YWx1
ZSIgc3ludGF4IGlzIHRoZSBzYW1lIGFzIHRoYXQgdXNlZCBpbgotICogTlZfQ1RSTF9CSU5BUllf
REFUQV9NRVRBTU9ERVMuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19DVVJSRU5UX01F
VEFNT0RFIDEyIC8qIFJXLS0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfQ1VSUkVOVF9NRVRB
TU9ERV9WRVJTSU9OXzEgTlZfQ1RSTF9TVFJJTkdfQ1VSUkVOVF9NRVRBTU9ERQotCi0vKgotICog
TlZfQ1RSTF9TVFJJTkdfQUREX01FVEFNT0RFIC0gQWRkcyBhIE1ldGFNb2RlIHRvIHRoZSBzcGVj
aWZpZWQKLSAqIFggU2NyZWVuLgotICoKLSAqIEl0IGlzIHJlY29tbWVuZGVkIHRvIG5vdCB1c2Ug
dGhpcyBhdHRyaWJ1dGUsIGJ1dCBpbnN0ZWFkIHVzZQotICogTlZfQ1RSTF9TVFJJTkdfT1BFUkFU
SU9OX0FERF9NRVRBTU9ERS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HX0FERF9NRVRB
TU9ERSAxMyAvKiAtVy0tICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19ERUxFVEVfTUVUQU1P
REUgLSBEZWxldGVzIGFuIGV4aXN0aW5nIE1ldGFNb2RlIGZyb20KLSAqIHRoZSBzcGVjaWZpZWQg
WCBTY3JlZW4uICBUaGUgY3VycmVudGx5IHNlbGVjdGVkIE1ldGFNb2RlIGNhbm5vdCBiZQotICog
ZGVsZXRlZC4gIChUaGlzIGFsc28gbWVhbnMgeW91IGNhbm5vdCBkZWxldGUgdGhlIGxhc3QgTWV0
YU1vZGUpLgotICogVGhlIE1ldGFNb2RlIHN0cmluZyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBzeW50
YXggYXMgdGhlIE1ldGFNb2RlIFgKLSAqIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBhcyBkb2N1bWVu
dGVkIGluIHRoZSBOVklESUEgZHJpdmVyIFJFQURNRS4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxf
U1RSSU5HX0RFTEVURV9NRVRBTU9ERSAxNCAvKiAtV0QtLSAqLwotCi0vKgotICogTlZfQ1RSTF9T
VFJJTkdfVkNTQ19QUk9EVUNUX05BTUUgLSBRdWVyeXMgdGhlIHByb2R1Y3QgbmFtZSBvZiB0aGUK
LSAqIFZDU0MgZGV2aWNlLgotICoKLSAqIFRoaXMgYXR0cmlidXRlIG11c3QgYmUgcXVlcmllZCB0
aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldFN0cmluZ0F0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5W
X0NUUkxfVEFSR0VUX1RZUEVfVkNTQyB0YXJnZXQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NU
UklOR19WQ1NDX1BST0RVQ1RfTkFNRSAxNSAvKiBSLS0tViAqLwotCi0vKgotICogTlZfQ1RSTF9T
VFJJTkdfVkNTQ19QUk9EVUNUX0lEIC0gUXVlcnlzIHRoZSBwcm9kdWN0IElEIG9mIHRoZSBWQ1ND
IGRldmljZS4KLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBtdXN0IGJlIHF1ZXJpZWQgdGhyb3VnaCBY
TlZDVFJMUXVlcnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUoKQotICogdXNpbmcgYSBOVl9DVFJMX1RB
UkdFVF9UWVBFX1ZDU0MgdGFyZ2V0LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfVkNT
Q19QUk9EVUNUX0lEIDE2IC8qIFItLS1WICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19WQ1ND
X1NFUklBTF9OVU1CRVIgLSBRdWVyeXMgdGhlIHVuaXF1ZSBzZXJpYWwgbnVtYmVyCi0gKiBvZiB0
aGUgVkNTIGRldmljZS4KLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBtdXN0IGJlIHF1ZXJpZWQgdGhy
b3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUoKQotICogdXNpbmcgYSBOVl9D
VFJMX1RBUkdFVF9UWVBFX1ZDU0MgdGFyZ2V0LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJ
TkdfVkNTQ19TRVJJQUxfTlVNQkVSIDE3IC8qIFItLS1WICovCi0KLS8qCi0gKiBOVl9DVFJMX1NU
UklOR19WQ1NDX0JVSUxEX0RBVEUgLSBRdWVyeXMgdGhlIGRhdGUgb2YgdGhlIFZDUyBkZXZpY2Uu
Ci0gKiB0aGUgcmV0dXJuZWQgc3RyaW5nIGlzIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OiAiV2Vl
ay5ZZWFyIgotICoKLSAqIFRoaXMgYXR0cmlidXRlIG11c3QgYmUgcXVlcmllZCB0aHJvdWdoIFhO
VkNUUkxRdWVyeVRhcmdldFN0cmluZ0F0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFS
R0VUX1RZUEVfVkNTQyB0YXJnZXQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19WQ1ND
X0JVSUxEX0RBVEUgMTggLyogUi0tLVYgKi8KLQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HX1ZDU0Nf
RklSTVdBUkVfVkVSU0lPTiAtIFF1ZXJ5cyB0aGUgZmlybXdhcmUgdmVyc2lvbgotICogb2YgdGhl
IFZDUyBkZXZpY2UuCi0gKgotICogVGhpcyBhdHRyaWJ1dGUgbXVzdCBiZSBxdWVyaWVkIHRocm91
Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmlidXRlKCkKLSAqIHVzaW5nIGEgTlZfQ1RS
TF9UQVJHRVRfVFlQRV9WQ1NDIHRhcmdldC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfU1RSSU5H
X1ZDU0NfRklSTVdBUkVfVkVSU0lPTiAxOSAvKiBSLS0tViAqLwotCi0vKgotICogTlZfQ1RSTF9T
VFJJTkdfVkNTQ19GSVJNV0FSRV9SRVZJU0lPTiAtIFF1ZXJ5cyB0aGUgZmlybXdhcmUgcmV2aXNp
b24KLSAqIG9mIHRoZSBWQ1MgZGV2aWNlLgotICoKLSAqIFRoaXMgYXR0cmlidXRlIG11c3QgYmUg
cXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldFN0cmluZ0F0dHJpYnV0ZSgpCi0gKiB1
c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfVkNTIHRhcmdldC4KLSAqLwotCi0jZGVmaW5lIE5W
X0NUUkxfU1RSSU5HX1ZDU0NfRklSTVdBUkVfUkVWSVNJT04gMjAgLyogUi0tLVYgKi8KLQotLyoK
LSAqIE5WX0NUUkxfU1RSSU5HX1ZDU0NfSEFSRFdBUkVfVkVSU0lPTiAtIFF1ZXJ5cyB0aGUgaGFy
ZHdhcmUgdmVyc2lvbgotICogb2YgdGhlIFZDUyBkZXZpY2UuCi0gKgotICogVGhpcyBhdHRyaWJ1
dGUgbXVzdCBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0U3RyaW5nQXR0cmli
dXRlKCkKLSAqIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9WQ1NDIHRhcmdldC4KLSAqLwot
Ci0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1ZDU0NfSEFSRFdBUkVfVkVSU0lPTiAyMSAvKiBSLS0t
ViAqLwotCi0vKgotICogTlZfQ1RSTF9TVFJJTkdfVkNTQ19IQVJEV0FSRV9SRVZJU0lPTiAtIFF1
ZXJ5cyB0aGUgaGFyZHdhcmUgcmV2aXNpb24KLSAqIG9mIHRoZSBWQ1MgZGV2aWNlLgotICoKLSAq
IFRoaXMgYXR0cmlidXRlIG11c3QgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdl
dFN0cmluZ0F0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfVkNTQyB0
YXJnZXQuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19WQ1NDX0hBUkRXQVJFX1JFVklT
SU9OIDIyIC8qIFItLS1WICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19NT1ZFX01FVEFNT0RF
IC0gTW92ZXMgYSBNZXRhTW9kZSB0byB0aGUgc3BlY2lmaWVkCi0gKiBpbmRleCBsb2NhdGlvbi4g
IFRoZSBNZXRhTW9kZSBtdXN0IGFscmVhZHkgZXhpc3QgaW4gdGhlIFggU2NyZWVuJ3MKLSAqIGxp
c3Qgb2YgTWV0YU1vZGVzIChhcyByZXR1cm5lZCBieSB0aGUgTlZfQ1RSTF9CSU5BUllfREFUQV9N
RVRBTU9ERVMKLSAqIGF0dHJpYnV0ZSkuICBJZiB0aGUgaW5kZXggaXMgbGFyZ2VyIHRoYW4gdGhl
IG51bWJlciBvZiBNZXRhTW9kZXMgaW4KLSAqIHRoZSBsaXN0LCB0aGUgTWV0YU1vZGUgaXMgbW92
ZWQgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4gIFRoZQotICogTWV0YU1vZGUgc3RyaW5nIHNob3Vs
ZCBoYXZlIHRoZSBzYW1lIHN5bnRheCBhcyB0aGUgTWV0YU1vZGUgWAotICogY29uZmlndXJhdGlv
biBvcHRpb24sIGFzIGRvY3VtZW50ZWQgaW4gdGhlIE5WSURJQSBkcml2ZXIgUkVBRE1FLgotCi0g
KiBUaGUgTWV0YU1vZGUgc3RyaW5nIG11c3QgYmUgcHJlcGVuZGVkIHdpdGggYSBjb21tYS1zZXBh
cmF0ZWQgbGlzdAotICogb2YgInRva2VuPXZhbHVlIiBwYWlycywgc2VwYXJhdGVkIGZyb20gdGhl
IE1ldGFNb2RlIHN0cmluZyBieSAiOjoiLgotICogQ3VycmVudGx5LCB0aGUgb25seSB2YWxpZCB0
b2tlbiBpcyAiaW5kZXgiLCB3aGljaCBpbmRpY2F0ZXMgd2hlcmUKLSAqIGluIHRoZSBNZXRhTW9k
ZSBsaXN0IHRoZSBNZXRhTW9kZSBzaG91bGQgYmUgbW92ZWQgdG8uCi0gKgotICogT3RoZXIgdG9r
ZW5zIG1heSBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLgotICoKLSAqIEUuZy4sCi0gKiAgImluZGV4
PTUgOjogQ1JULTA6IDEwMjR4NzY4IEAxMDI0eDc2OCArMCswIgotICovCi0KLSNkZWZpbmUgTlZf
Q1RSTF9TVFJJTkdfTU9WRV9NRVRBTU9ERSAyMyAvKiAtVy0tICovCi0KLS8qCi0gKiBOVl9DVFJM
X1NUUklOR19WQUxJRF9IT1JJWl9TWU5DX1JBTkdFUyAtIHJldHVybnMgdGhlIHZhbGlkCi0gKiBo
b3Jpem9udGFsIHN5bmMgcmFuZ2VzIHVzZWQgdG8gcGVyZm9ybSBtb2RlIHZhbGlkYXRpb24gZm9y
IHRoZQotICogc3BlY2lmaWVkIGRpc3BsYXkgZGV2aWNlLiAgVGhlIHJhbmdlcyBhcmUgaW4gdGhl
IHNhbWUgZm9ybWF0IGFzIHRoZQotICogIkhvcml6U3luYyIgWCBjb25maWcgb3B0aW9uOgotICoK
LSAqICAgImhvcml6c3luYy1yYW5nZSBtYXkgYmUgYSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBl
aXRoZXIgZGlzY3JldGUKLSAqICAgdmFsdWVzIG9yIHJhbmdlcyBvZiB2YWx1ZXMuICBBIHJhbmdl
IG9mIHZhbHVlcyBpcyB0d28gdmFsdWVzCi0gKiAgIHNlcGFyYXRlZCBieSBhIGRhc2guIgotICoK
LSAqIFRoZSB2YWx1ZXMgYXJlIGluIGtIei4KLSAqCi0gKiBBZGRpdGlvbmFsbHksIHRoZSBzdHJp
bmcgbWF5IGJlIHByZXBlbmRlZCB3aXRoIGEgY29tbWEtc2VwYXJhdGVkCi0gKiBsaXN0IG9mICJ0
b2tlbj12YWx1ZSIgcGFpcnMsIHNlcGFyYXRlZCBmcm9tIHRoZSBIb3JpelN5bmMgc3RyaW5nIGJ5
Ci0gKiAiOjoiLiAgVmFsaWQgdG9rZW5zOgotICoKLSAqICAgIFRva2VuICAgICBWYWx1ZQotICog
ICAic291cmNlIiAgImVkaWQiICAgICAtIEhvcml6U3luYyBpcyBmcm9tIHRoZSBkaXNwbGF5IGRl
dmljZSdzIEVESUQKLSAqICAgICAgICAgICAgICJ4Y29uZmlnIiAgLSBIb3JpelN5bmMgaXMgZnJv
bSB0aGUgIkhvcml6U3luYyIgZW50cnkgaW4KLSAqICAgICAgICAgICAgICAgICAgICAgICAgICB0
aGUgTW9uaXRvciBzZWN0aW9uIG9mIHRoZSBYIGNvbmZpZyBmaWxlCi0gKiAgICAgICAgICAgICAi
b3B0aW9uIiAgIC0gSG9yaXpTeW5jIGlzIGZyb20gdGhlICJIb3JpelN5bmMiIE5WSURJQSBYCi0g
KiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnIG9wdGlvbgotICogICAgICAgICAgICAg
InR3aW52aWV3IiAtIEhvcml6U3luYyBpcyBmcm9tIHRoZSAiU2Vjb25kTW9uaXRvckhvcml6U3lu
YyIKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICBOVklESUEgWCBjb25maWcgb3B0aW9uCi0g
KiAgICAgICAgICAgICAiYnVpbHRpbiIgIC0gSG9yaXpTeW5jIGlzIGZyb20gTlZJRElBIFggZHJp
dmVyIGJ1aWx0aW4KLSAqICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IHZhbHVlcwot
ICoKLSAqIEFkZGl0aW9uYWwgdG9rZW5zIGFuZC9vciB2YWx1ZXMgbWF5IGJlIGFkZGVkIGluIHRo
ZSBmdXR1cmUuCi0gKgotICogRXhhbXBsZTogInNvdXJjZT1lZGlkIDo6IDMwLjAwMC02Mi4wMDAi
Ci0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19WQUxJRF9IT1JJWl9TWU5DX1JBTkdFUyAy
NCAvKiBSLURHICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19WQUxJRF9WRVJUX1JFRlJFU0hf
UkFOR0VTIC0gcmV0dXJucyB0aGUgdmFsaWQKLSAqIHZlcnRpY2FsIHJlZnJlc2ggcmFuZ2VzIHVz
ZWQgdG8gcGVyZm9ybSBtb2RlIHZhbGlkYXRpb24gZm9yIHRoZQotICogc3BlY2lmaWVkIGRpc3Bs
YXkgZGV2aWNlLiAgVGhlIHJhbmdlcyBhcmUgaW4gdGhlIHNhbWUgZm9ybWF0IGFzIHRoZQotICog
IlZlcnRSZWZyZXNoIiBYIGNvbmZpZyBvcHRpb246Ci0gKgotICogICAidmVydHJlZnJlc2gtcmFu
Z2UgbWF5IGJlIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgZWl0aGVyIGRpc2NyZXRlCi0gKiAg
ICB2YWx1ZXMgb3IgcmFuZ2VzIG9mIHZhbHVlcy4gIEEgcmFuZ2Ugb2YgdmFsdWVzIGlzIHR3byB2
YWx1ZXMKLSAqICAgIHNlcGFyYXRlZCBieSBhIGRhc2guIgotICoKLSAqIFRoZSB2YWx1ZXMgYXJl
IGluIEh6LgotICoKLSAqIEFkZGl0aW9uYWxseSwgdGhlIHN0cmluZyBtYXkgYmUgcHJlcGVuZGVk
IHdpdGggYSBjb21tYS1zZXBhcmF0ZWQKLSAqIGxpc3Qgb2YgInRva2VuPXZhbHVlIiBwYWlycywg
c2VwYXJhdGVkIGZyb20gdGhlIFZlcnRSZWZyZXNoIHN0cmluZyBieQotICogIjo6Ii4gIFZhbGlk
IHRva2VuczoKLSAqCi0gKiAgICBUb2tlbiAgICAgVmFsdWUKLSAqICAgInNvdXJjZSIgICJlZGlk
IiAgICAgLSBWZXJ0UmVmcmVzaCBpcyBmcm9tIHRoZSBkaXNwbGF5IGRldmljZSdzIEVESUQKLSAq
ICAgICAgICAgICAgICJ4Y29uZmlnIiAgLSBWZXJ0UmVmcmVzaCBpcyBmcm9tIHRoZSAiVmVydFJl
ZnJlc2giIGVudHJ5IGluCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIE1vbml0b3Ig
c2VjdGlvbiBvZiB0aGUgWCBjb25maWcgZmlsZQotICogICAgICAgICAgICAgIm9wdGlvbiIgICAt
IFZlcnRSZWZyZXNoIGlzIGZyb20gdGhlICJWZXJ0UmVmcmVzaCIgTlZJRElBIFgKLSAqICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25maWcgb3B0aW9uCi0gKiAgICAgICAgICAgICAidHdpbnZp
ZXciIC0gVmVydFJlZnJlc2ggaXMgZnJvbSB0aGUgIlNlY29uZE1vbml0b3JWZXJ0UmVmcmVzaCIK
LSAqICAgICAgICAgICAgICAgICAgICAgICAgICBOVklESUEgWCBjb25maWcgb3B0aW9uCi0gKiAg
ICAgICAgICAgICAiYnVpbHRpbiIgIC0gVmVydFJlZnJlc2ggaXMgZnJvbSBOVklESUEgWCBkcml2
ZXIgYnVpbHRpbgotICogICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgdmFsdWVzCi0g
KgotICogQWRkaXRpb25hbCB0b2tlbnMgYW5kL29yIHZhbHVlcyBtYXkgYmUgYWRkZWQgaW4gdGhl
IGZ1dHVyZS4KLSAqCi0gKiBFeGFtcGxlOiAic291cmNlPWVkaWQgOjogNTAuMDAwLTc1LjAwMCIK
LSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HX1ZBTElEX1ZFUlRfUkVGUkVTSF9SQU5HRVMg
MjUgLyogUi1ERyAqLwotCi0vKgotICogTlZfQ1RSTF9TVFJJTkdfWElORVJBTUFfU0NSRUVOX0lO
Rk8gLSByZXR1cm5zIHRoZSBwaHlzaWNhbCBYIFNjcmVlbidzCi0gKiBpbml0aWFsIHBvc2l0aW9u
IGFuZCBzaXplIChpbiBhYnNvbHV0ZSBjb29yZGluYXRlcykgd2l0aGluIHRoZSBYaW5lcmFtYQot
ICogZGVza3RvcCBhcyB0aGUgInRva2VuPXZhbHVlIiBzdHJpbmc6ICAieD0jLCB5PSMsIHdpZHRo
PSMsIGhlaWdodD0jIgotICoKLSAqIFF1ZXJ5aW5nIHRoaXMgYXR0cmlidXRlIHJldHVybnMgRkFM
U0UgaWYgTlZfQ1RSTF9YSU5FUkFNQSBpcyBub3QKLSAqIE5WX0NUUkxfWElORVJBTUFfT04uCi0g
Ki8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19YSU5FUkFNQV9TQ1JFRU5fSU5GTyAyNiAvKiBS
LS0tICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19UV0lOVklFV19YSU5FUkFNQV9JTkZPX09S
REVSIC0gdXNlZCB0byBzcGVjaWZ5IHRoZQotICogb3JkZXIgdGhhdCBkaXNwbGF5IGRldmljZXMg
d2lsbCBiZSByZXR1cm5lZCB2aWEgWGluZXJhbWEgd2hlbgotICogbnZpZGlhWGluZXJhbWFJbmZv
IGlzIGVuYWJsZWQuICBGb2xsb3dzIHRoZSBzYW1lIHN5bnRheCBhcyB0aGUKLSAqIG52aWRpYVhp
bmVyYW1hSW5mb09yZGVyIFggY29uZmlnIG9wdGlvbi4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxf
U1RSSU5HX05WSURJQV9YSU5FUkFNQV9JTkZPX09SREVSIDI3IC8qIFJXLS0gKi8KLQotI2RlZmlu
ZSBOVl9DVFJMX1NUUklOR19UV0lOVklFV19YSU5FUkFNQV9JTkZPX09SREVSIFwKLSAgICBOVl9D
VFJMX1NUUklOR19OVklESUFfWElORVJBTUFfSU5GT19PUkRFUiAvKiBmb3IgYmFja3dhcmRzIGNv
bXBhdGliaWxpdHk6ICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19TTElfTU9ERSAtIHJldHVy
bnMgYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgY3VycmVudAotICogU0xJIG1vZGUsIGlmIGFueSwg
b3IgRkFMU0UgaWYgU0xJIGlzIG5vdCBjdXJyZW50bHkgZW5hYmxlZC4KLSAqCi0gKiBUaGlzIHN0
cmluZyBzaG91bGQgYmUgdXNlZCBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5LCBhbmQK
LSAqIHNob3VsZCBub3QgYmUgdXNlZCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIFNMSSBtb2Rlcywg
b3RoZXIgdGhhbiB0bwotICogcmVjb2duaXplIHdoZW4gU0xJIGlzIGRpc2FibGVkIChGQUxTRSBp
cyByZXR1cm5lZCkgb3IKLSAqIGVuYWJsZWQgKHRoZSByZXR1cm5lZCBzdHJpbmcgaXMgbm9uLU5V
TEwgYW5kIGRlc2NyaWJlcyB0aGUgY3VycmVudAotICogU0xJIGNvbmZpZ3VyYXRpb24pLgotICov
Ci0KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfU0xJX01PREUgMjggLyogUi0tLSovCi0KLS8qCi0g
KiBOVl9DVFJMX1NUUklOR19QRVJGT1JNQU5DRV9NT0RFUyAtIHJldHVybnMgYSBzdHJpbmcgd2l0
aCBhbGwgdGhlCi0gKiBwZXJmb3JtYW5jZSBtb2RlcyBkZWZpbmVkIGZvciB0aGlzIEdQVSBhbG9u
ZyB3aXRoIHRoZWlyIGFzc29jaWF0ZWQKLSAqIE5WIENsb2NrIGFuZCBNZW1vcnkgQ2xvY2sgdmFs
dWVzLgotICoKLSAqIEVhY2ggcGVyZm9ybWFuY2UgbW9kZXMgYXJlIHJldHVybmVkIGFzIGEgY29t
bWEtc2VwYXJhdGVkIGxpc3Qgb2YKLSAqICJ0b2tlbj12YWx1ZSIgcGFpcnMuICBFYWNoIHNldCBv
ZiBwZXJmb3JtYW5jZSBtb2RlIHRva2VucyBhcmUgc2VwYXJhdGVkCi0gKiBieSBhICI7Ii4gIFZh
bGlkIHRva2VuczoKLSAqCi0gKiAgICBUb2tlbiAgICAgIFZhbHVlCi0gKiAgICJwZXJmIiAgICAg
IGludGVnZXIgICAtIHRoZSBQZXJmb3JtYW5jZSBsZXZlbAotICogICAibnZjbG9jayIgICBpbnRl
Z2VyICAgLSB0aGUgR1BVIGNsb2NrcyAoaW4gTUh6KSBmb3IgdGhlIHBlcmYgbGV2ZWwKLSAqICAg
Im1lbWNsb2NrIiAgaW50ZWdlciAgIC0gdGhlIG1lbW9yeSBjbG9ja3MgKGluIE1IeikgZm9yIHRo
ZSBwZXJmIGxldmVsCi0gKgotICoKLSAqIEV4YW1wbGU6Ci0gKgotICogICBwZXJmPTAsIG52Y2xv
Y2s9NTAwLCBtZW1jbG9jaz01MDUgOyBwZXJmPTEsIG52Y2xvY2s9NjUwLCBtZW1jbG9jaz01MDUK
LSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVy
eVRhcmdldFN0cmluZ0F0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVf
R1BVIG9yIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0LgotICovCi0KLSNkZWZp
bmUgTlZfQ1RSTF9TVFJJTkdfUEVSRk9STUFOQ0VfTU9ERVMgMjkgLyogUi0tRyAqLwotCi0vKgot
ICogTlZfQ1RSTF9TVFJJTkdfVkNTQ19GQU5fU1RBVFVTIC0gcmV0dXJucyBhIHN0cmluZyB3aXRo
IHN0YXR1cyBvZiBhbGwgdGhlCi0gKiBmYW5zIGluIHRoZSBWaXN1YWwgQ29tcHV0aW5nIFN5c3Rl
bSwgaWYgc3VjaCBhIHF1ZXJ5IGlzIHN1cHBvcnRlZC4gIEZhbgotICogaW5mb3JtYXRpb24gaXMg
cmVwb3J0ZWQgYWxvbmcgd2l0aCBpdHMgdGFjaG9tZXRlciByZWFkaW5nIChpbiBSUE0pIGFuZCBh
Ci0gKiBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmFuIGhhcyBmYWlsZWQgb3Igbm90Lgot
ICoKLSAqIFZhbGlkIHRva2VuczoKLSAqCi0gKiAgICBUb2tlbiAgICAgIFZhbHVlCi0gKiAgICJm
YW4iICAgICAgIGludGVnZXIgICAtIHRoZSBGYW4gaW5kZXgKLSAqICAgInNwZWVkIiAgICAgaW50
ZWdlciAgIC0gdGhlIHRhY2hvbWV0ZXIgcmVhZGluZyBvZiB0aGUgZmFuIGluIHJwbQotICogICAi
ZmFpbCIgICAgICBpbnRlZ2VyICAgLSBmbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgdGhlIGZhbiBo
YXMgZmFpbGVkCi0gKgotICogRXhhbXBsZToKLSAqCi0gKiAgIGZhbj0wLCBzcGVlZD02OTQsIGZh
aWw9MCA7IGZhbj0xLCBzcGVlZD02OTMsIGZhaWw9MAotICoKLSAqIFRoaXMgYXR0cmlidXRlIG11
c3QgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldFN0cmluZ0F0dHJpYnV0ZSgp
Ci0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfVkNTQyB0YXJnZXQuCi0gKgotICovCi0K
LSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfVkNTQ19GQU5fU1RBVFVTIDMwIC8qIFItLS1WICovCi0K
LS8qCi0gKiBOVl9DVFJMX1NUUklOR19WQ1NDX1RFTVBFUkFUVVJFUyAtIHJldHVybnMgYSBzdHJp
bmcgd2l0aCBhbGwgVGVtcGVyYXR1cmUKLSAqIHJlYWRpbmdzIGluIHRoZSBWaXN1YWwgQ29tcHV0
aW5nIFN5c3RlbSwgaWYgc3VjaCBhIHF1ZXJ5IGlzIHN1cHBvcnRlZC4KLSAqIEludGFrZSwgRXho
YXVzdCBhbmQgQm9hcmQgVGVtcGVyYXR1cmUgdmFsdWVzIGFyZSByZXBvcnRlZCBpbiBDZWxjaXVz
LgotICoKLSAqIFZhbGlkIHRva2VuczoKLSAqCi0gKiAgICBUb2tlbiAgICAgIFZhbHVlCi0gKiAg
ICJpbnRha2UiICAgIGludGVnZXIgICAtIHRoZSBpbnRha2UgdGVtcGVyYXR1cmUgZm9yIHRoZSBW
Q1MKLSAqICAgImV4aGF1c3QiICAgaW50ZWdlciAgIC0gdGhlIGV4aGF1c3QgdGVtcGVyYXR1cmUg
Zm9yIHRoZSBWQ1MKLSAqICAgImJvYXJkIiAgICAgaW50ZWdlciAgIC0gdGhlIGJvYXJkIHRlbXBl
cmF0dXJlIG9mIHRoZSBWQ1MKLSAqCi0gKiBFeGFtcGxlOgotICoKLSAqICAgaW50YWtlPTI5LCBl
eGhhdXN0PTQ2LCBib2FyZD00MQotICoKLSAqIFRoaXMgYXR0cmlidXRlIG11c3QgYmUgcXVlcmll
ZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldFN0cmluZ0F0dHJpYnV0ZSgpCi0gKiB1c2luZyBh
IE5WX0NUUkxfVEFSR0VUX1RZUEVfVkNTQyB0YXJnZXQuCi0gKgotICovCi0KLSNkZWZpbmUgTlZf
Q1RSTF9TVFJJTkdfVkNTQ19URU1QRVJBVFVSRVMgMzEgLyogUi0tLVYgKi8KLQotLyoKLSAqIE5W
X0NUUkxfU1RSSU5HX1ZDU0NfUFNVX0lORk8gLSByZXR1cm5zIGEgc3RyaW5nIHdpdGggYWxsIFBv
d2VyIFN1cHBseSBVbml0Ci0gKiByZWxhdGVkIHJlYWRpbmdzIGluIHRoZSBWaXN1YWwgQ29tcHV0
aW5nIFN5c3RlbSwgaWYgc3VjaCBhIHF1ZXJ5IGlzCi0gKiBzdXBwb3J0ZWQuICBDdXJyZW50IGlu
IGFtcGVyZXMsIFBvd2VyIGluIHdhdHRzLCBWb2x0YWdlIGluIHZvbHRzIGFuZCBQU1UKLSAqIHN0
YXRlIG1heSBiZSByZXBvcnRlZC4gIE5vdCBhbGwgUFNVIHR5cGVzIHN1cHBvcnQgYWxsIG9mIHRo
ZXNlIHZhbHVlcywgYW5kCi0gKiB0aGVyZWZvcmUgc29tZSByZWFkaW5ncyBtYXkgYmUgdW5rbm93
bi4KLSAqCi0gKiBWYWxpZCB0b2tlbnM6Ci0gKgotICogICAgVG9rZW4gICAgICBWYWx1ZQotICog
ICAiY3VycmVudCIgICBpbnRlZ2VyICAgLSB0aGUgY3VycmVudCBkcmF3biBpbiBhbXBlcmVzIGJ5
IHRoZSBWQ1MKLSAqICAgInBvd2VyIiAgICAgaW50ZWdlciAgIC0gdGhlIHBvd2VyIGRyYXduIGlu
IHdhdHRzIGJ5IHRoZSBWQ1MKLSAqICAgInZvbHRhZ2UiICAgaW50ZWdlciAgIC0gdGhlIHZvbHRh
Z2UgcmVhZGluZyBvZiB0aGUgVkNTCi0gKiAgICJzdGF0ZSIgICAgIGludGVnZXIgICAtIGZsYWcg
dG8gaW5kaWNhdGUgd2hldGhlciBQU1UgaXMgb3BlcmF0aW5nIG5vcm1hbGx5Ci0gKgotICogRXhh
bXBsZToKLSAqCi0gKiAgIGN1cnJlbnQ9MTAsIHBvd2VyPTE1LCB2b2x0YWdlPXVua25vd24sIHN0
YXRlPW5vcm1hbAotICoKLSAqIFRoaXMgYXR0cmlidXRlIG11c3QgYmUgcXVlcmllZCB0aHJvdWdo
IFhOVkNUUkxRdWVyeVRhcmdldFN0cmluZ0F0dHJpYnV0ZSgpCi0gKiB1c2luZyBhIE5WX0NUUkxf
VEFSR0VUX1RZUEVfVkNTQyB0YXJnZXQuCi0gKgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJ
TkdfVkNTQ19QU1VfSU5GTyAzMiAvKiBSLS0tViAqLwotCi0vKgotICogTlZfQ1RSTF9TVFJJTkdf
R1ZJT19WSURFT19GT1JNQVRfTkFNRSAtIHF1ZXJ5IHRoZSBuYW1lIGZvciB0aGUgc3BlY2lmaWVk
Ci0gKiBOVl9DVFJMX0dWSU9fVklERU9fRk9STUFUXyouICBTbyB0aGF0IHRoaXMgY2FuIGJlIHF1
ZXJpZWQgd2l0aCBleGlzdGluZwotICogaW50ZXJmYWNlcywgWE5WQ1RSTFF1ZXJ5U3RyaW5nQXR0
cmlidXRlKCkgc2hvdWxkIGJlIHVzZWQsIGFuZCB0aGUgdmlkZW8KLSAqIGZvcm1hdCBzcGVjaWZp
ZWQgaW4gdGhlIGRpc3BsYXlfbWFzayBmaWVsZDsgZWc6Ci0gKgotICogWE5WQ1RSTFF1ZXJ5U3Ry
aW5nQXR0cmlidXRlKGRweSwKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JlZW4s
Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlZfQ1RSTF9HVklPX1ZJREVPX0ZPUk1B
VF83MjBQXzYwXzAwX1NNUFRFMjk2LAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5W
X0NUUkxfR1ZJT19WSURFT19GT1JNQVRfTkFNRSwKLSAqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmbmFtZSk7Ci0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19HVklPX1ZJREVPX0ZP
Uk1BVF9OQU1FIDMzIC8qIFItLUdJICovCi0KLS8qCi0gKiBUaGUgZm9sbG93aW5nIGlzIGRlcHJl
Y2F0ZWQ7IHVzZSBOVl9DVFJMX1NUUklOR19HVklPX1ZJREVPX0ZPUk1BVF9OQU1FLAotICogaW5z
dGVhZAotICovCi0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HX0dWT19WSURFT19GT1JNQVRfTkFNRSAz
MyAvKiBSLS0tICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19HUFVfQ1VSUkVOVF9DTE9DS19G
UkVRUyAtIHJldHVybnMgYSBzdHJpbmcgd2l0aCB0aGUKLSAqIGFzc29jaWF0ZWQgTlYgQ2xvY2ss
IE1lbW9yeSBDbG9jayBhbmQgUHJvY2Vzc29yIENsb2NrIHZhbHVlcy4KLSAqCi0gKiBDdXJyZW50
IHZhbGlkIHRva2VucyBhcmUgIm52Y2xvY2siLCAibWVtY2xvY2siLCBhbmQgInByb2Nlc3NvcmNs
b2NrIi4KLSAqIE5vdCBhbGwgdG9rZW5zIHdpbGwgYmUgcmVwb3J0ZWQgb24gYWxsIEdQVXMsIGFu
ZCBhZGRpdGlvbmFsIHRva2VucwotICogbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuCi0gKgot
ICogQ2xvY2sgdmFsdWVzIGFyZSByZXR1cm5lZCBhcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9m
Ci0gKiAidG9rZW49dmFsdWUiIHBhaXJzLgotICogVmFsaWQgdG9rZW5zOgotICoKLSAqICAgIFRv
a2VuICAgICAgICAgICBWYWx1ZQotICogICAibnZjbG9jayIgICAgICAgIGludGVnZXIgLSB0aGUg
R1BVIGNsb2NrcyAoaW4gTUh6KSBmb3IgdGhlIGN1cnJlbnQKLSAqICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcGVyZiBsZXZlbAotICogICAibWVtY2xvY2siICAgICAgIGludGVnZXIgLSB0
aGUgbWVtb3J5IGNsb2NrcyAoaW4gTUh6KSBmb3IgdGhlIGN1cnJlbnQKLSAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGVyZiBsZXZlbAotICogICAicHJvY2Vzc29yY2xvY2siIGludGVn
ZXIgLSB0aGUgcHJvY2Vzc29yIGNsb2NrcyAoaW4gTUh6KSBmb3IgdGhlIHBlcmYgbGV2ZWwKLSAq
Ci0gKgotICogRXhhbXBsZToKLSAqCi0gKiAgICBudmNsb2NrPTQ1OSwgbWVtY2xvY2s9NDAwLCBw
cm9jZXNzb3JjbG9jaz05MTgKLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0
aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldFN0cmluZ0F0dHJpYnV0ZSgpCi0gKiB1c2luZyBhbiBO
Vl9DVFJMX1RBUkdFVF9UWVBFX0dQVSBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIHRh
cmdldC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HX0dQVV9DVVJSRU5UX0NMT0NLX0ZS
RVFTIDM0IC8qIFJXLUcgKi8KLQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HXzNEX1ZJU0lPTl9QUk9f
VFJBTlNDRUlWRVJfSEFSRFdBUkVfUkVWSVNJT04gLSBSZXR1cm5zIHRoZQotICogaGFyZHdhcmUg
cmV2aXNpb24gb2YgdGhlIDNEIFZpc2lvbiBQcm8gdHJhbnNjZWl2ZXIuCi0gKi8KLSNkZWZpbmUg
TlZfQ1RSTF9TVFJJTkdfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9IQVJEV0FSRV9SRVZJU0lP
TiAzNSAvKiBSLS1UICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05fUFJPX1RS
QU5TQ0VJVkVSX0ZJUk1XQVJFX1ZFUlNJT05fQSAtIFJldHVybnMgdGhlCi0gKiBmaXJtd2FyZSB2
ZXJzaW9uIG9mIGNoaXAgQSBvZiB0aGUgM0QgVmlzaW9uIFBybyB0cmFuc2NlaXZlci4KLSAqLwot
I2RlZmluZSBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSX0ZJUk1XQVJF
X1ZFUlNJT05fQSAzNiAvKiBSLS1UICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR18zRF9WSVNJ
T05fUFJPX1RSQU5TQ0VJVkVSX0ZJUk1XQVJFX0RBVEVfQSAtIFJldHVybnMgdGhlCi0gKiBkYXRl
IG9mIHRoZSBmaXJtd2FyZSBvZiBjaGlwIEEgb2YgdGhlIDNEIFZpc2lvbiBQcm8gdHJhbnNjZWl2
ZXIuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfM0RfVklTSU9OX1BST19UUkFOU0NFSVZF
Ul9GSVJNV0FSRV9EQVRFX0EgMzcgLyogUi0tVCAqLwotCi0vKgotICogTlZfQ1RSTF9TVFJJTkdf
M0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9GSVJNV0FSRV9WRVJTSU9OX0IgLSBSZXR1cm5zIHRo
ZQotICogZmlybXdhcmUgdmVyc2lvbiBvZiBjaGlwIEIgb2YgdGhlIDNEIFZpc2lvbiBQcm8gdHJh
bnNjZWl2ZXIuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfM0RfVklTSU9OX1BST19UUkFO
U0NFSVZFUl9GSVJNV0FSRV9WRVJTSU9OX0IgMzggLyogUi0tVCAqLwotCi0vKgotICogTlZfQ1RS
TF9TVFJJTkdfM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUl9GSVJNV0FSRV9EQVRFX0IgLSBSZXR1
cm5zIHRoZQotICogZGF0ZSBvZiB0aGUgZmlybXdhcmUgb2YgY2hpcCBCIG9mIHRoZSAzRCBWaXNp
b24gUHJvIHRyYW5zY2VpdmVyLgotICovCi0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HXzNEX1ZJU0lP
Tl9QUk9fVFJBTlNDRUlWRVJfRklSTVdBUkVfREFURV9CIDM5IC8qIFItLVQgKi8KLQotLyoKLSAq
IE5WX0NUUkxfU1RSSU5HXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJfQUREUkVTUyAtIFJldHVy
bnMgdGhlIFJGIGFkZHJlc3MKLSAqIG9mIHRoZSAzRCBWaXNpb24gUHJvIHRyYW5zY2VpdmVyLgot
ICovCi0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVJfQURE
UkVTUyA0MCAvKiBSLS1UICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05fUFJP
X0dMQVNTRVNfRklSTVdBUkVfVkVSU0lPTl9BIC0gUmV0dXJucyB0aGUKLSAqIGZpcm13YXJlIHZl
cnNpb24gb2YgY2hpcCBBIG9mIHRoZSBnbGFzc2VzLgotICogVXNlIHRoZSBkaXNwbGF5X21hc2sg
cGFyYW1ldGVyIHRvIHNwZWNpZnkgdGhlIGdsYXNzZXMgaWQuCi0gKi8KLSNkZWZpbmUgTlZfQ1RS
TF9TVFJJTkdfM0RfVklTSU9OX1BST19HTEFTU0VTX0ZJUk1XQVJFX1ZFUlNJT05fQSA0MSAvKiBS
LS1UICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05fUFJPX0dMQVNTRVNfRklS
TVdBUkVfREFURV9BIC0gUmV0dXJucyB0aGUKLSAqIGRhdGUgb2YgdGhlIGZpcm13YXJlIG9mIGNo
aXAgQSBvZiB0aGUgZ2xhc3Nlcy4KLSAqIFVzZSB0aGUgZGlzcGxheV9tYXNrIHBhcmFtZXRlciB0
byBzcGVjaWZ5IHRoZSBnbGFzc2VzIGlkLgotICovCi0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HXzNE
X1ZJU0lPTl9QUk9fR0xBU1NFU19GSVJNV0FSRV9EQVRFX0EgNDIgLyogUi0tVCAqLwotCi0vKgot
ICogTlZfQ1RSTF9TVFJJTkdfM0RfVklTSU9OX1BST19HTEFTU0VTX0FERFJFU1MgLSBSZXR1cm5z
IHRoZSBSRiBhZGRyZXNzCi0gKiBvZiB0aGUgZ2xhc3Nlcy4KLSAqIFVzZSB0aGUgZGlzcGxheV9t
YXNrIHBhcmFtZXRlciB0byBzcGVjaWZ5IHRoZSBnbGFzc2VzIGlkLgotICovCi0jZGVmaW5lIE5W
X0NUUkxfU1RSSU5HXzNEX1ZJU0lPTl9QUk9fR0xBU1NFU19BRERSRVNTIDQzIC8qIFItLVQgKi8K
LQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HXzNEX1ZJU0lPTl9QUk9fR0xBU1NFU19OQU1FIC0gQ29u
dHJvbHMgdGhlIG5hbWUgdGhlCi0gKiBnbGFzc2VzIHNob3VsZCB1c2UuCi0gKiBVc2UgdGhlIGRp
c3BsYXlfbWFzayBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB0aGUgZ2xhc3NlcyBpZC4KLSAqIEdsYXNz
ZXMnIG5hbWUgc2hvdWxkIHN0YXJ0IGFuZCBlbmQgd2l0aCBhbiBhbHBoYS1udW1lcmljIGNoYXJh
Y3Rlci4KLSAqLwotI2RlZmluZSBOVl9DVFJMX1NUUklOR18zRF9WSVNJT05fUFJPX0dMQVNTRVNf
TkFNRSA0NCAvKiBSVy1UICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19DVVJSRU5UX01FVEFN
T0RFX1ZFUlNJT05fMiAtIFJldHVybnMgdGhlIG1ldGFtb2RlIGN1cnJlbnRseQotICogYmVpbmcg
dXNlZCBieSB0aGUgc3BlY2lmaWVkIFggc2NyZWVuLiAgVGhlIE1ldGFNb2RlIHN0cmluZyBoYXMg
dGhlIHNhbWUKLSAqIHN5bnRheCBhcyB0aGUgTWV0YU1vZGUgWCBjb25maWd1cmF0aW9uIG9wdGlv
biwgYXMgZG9jdW1lbnRlZCBpbiB0aGUgTlZJRElBCi0gKiBkcml2ZXIgUkVBRE1FLiAgQWxzbywg
c2VlIE5WX0NUUkxfQklOQVJZX0RBVEFfTUVUQU1PREVTX1ZFUlNJT05fMiBmb3IgbW9yZQotICog
ZGV0YWlscyBvbiB0aGUgYmFzZSBzeW50YXguCi0gKgotICogVGhlIHJldHVybmVkIHN0cmluZyBt
YXkgYWxzbyBiZSBwcmVwZW5kZWQgd2l0aCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mCi0gKiAi
dG9rZW49dmFsdWUiIHBhaXJzLCBzZXBhcmF0ZWQgZnJvbSB0aGUgTWV0YU1vZGUgc3RyaW5nIGJ5
ICI6OiIuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfQ1VSUkVOVF9NRVRBTU9ERV9WRVJT
SU9OXzIgNDUgLyogUlctLSAqLwotCi0vKgotICogTlZfQ1RSTF9TVFJJTkdfRElTUExBWV9OQU1F
X1RZUEVfQkFTRU5BTUUgLSBSZXR1cm5zIGEgdHlwZSBuYW1lIGZvciB0aGUKLSAqIGRpc3BsYXkg
ZGV2aWNlICgiQ1JUIiwgIkRGUCIsIG9yICJUViIpLiAgSG93ZXZlciwgbm90ZSB0aGF0IHRoZSBk
ZXRlcm1pbmF0aW9uCi0gKiBvZiB0aGUgbmFtZSBpcyBiYXNlZCBvbiB0aGUgcHJvdG9jb2wgdGhy
b3VnaCB3aGljaCB0aGUgWCBkcml2ZXIgY29tbXVuaWNhdGVzCi0gKiB0byB0aGUgZGlzcGxheSBk
ZXZpY2UuICBFLmcuLCBpZiB0aGUgZHJpdmVyIGNvbW11bmljYXRlcyB1c2luZyBWR0EgLHRoZW4g
dGhlCi0gKiBiYXNlbmFtZSBpcyAiQ1JUIjsgaWYgdGhlIGRyaXZlciBjb21tdW5pY2F0ZXMgdXNp
bmcgVE1EUywgTFZEUywgb3IgRFAsIHRoZW4KLSAqIHRoZSBuYW1lIGlzICJERlAiLgotICovCi0j
ZGVmaW5lIE5WX0NUUkxfU1RSSU5HX0RJU1BMQVlfTkFNRV9UWVBFX0JBU0VOQU1FIDQ2IC8qIFIt
RC0gKi8KLQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HX0RJU1BMQVlfTkFNRV9UWVBFX0lEIC0gUmV0
dXJucyB0aGUgdHlwZS1iYXNlZCBuYW1lICsgSUQgZm9yCi0gKiB0aGUgZGlzcGxheSBkZXZpY2Us
IGUuZy4gIkNSVC0wIiwgIkRGUC0xIiwgIlRWLTIiLiAgSWYgdGhpcyBkZXZpY2UgaXMgYQotICog
RGlzcGxheVBvcnQgMS4yIGRldmljZSwgdGhlbiB0aGlzIG5hbWUgd2lsbCBhbHNvIGJlIHByZXBl
bmRlZCB3aXRoIHRoZQotICogZGV2aWNlJ3MgcG9ydCBhZGRyZXNzIGxpa2Ugc286ICJERlAtMS4w
LjEuMi4zIi4gIFNlZQotICogTlZfQ1RSTF9TVFJJTkdfRElTUExBWV9OQU1FX1RZUEVfQkFTRU5B
TUUgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlCi0gKiBjb25zdHJ1Y3Rpb24gb2YgdHlw
ZS1iYXNlZCBuYW1lcy4KLSAqLwotI2RlZmluZSBOVl9DVFJMX1NUUklOR19ESVNQTEFZX05BTUVf
VFlQRV9JRCA0NyAvKiBSLUQtICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19ESVNQTEFZX05B
TUVfRFBfR1VJRCAtIFJldHVybnMgdGhlIEdVSUQgb2YgdGhlIERpc3BsYXlQb3J0Ci0gKiBkaXNw
bGF5IGRldmljZS4gIGUuZy4gIkRQLUdVSUQtZjE2YTViZGUtNzlmMy0xMWUxLWIyYWUtOGI1YTg5
NjliYTljIgotICoKLSAqIFRoZSBkaXNwbGF5IGRldmljZSBtdXN0IGJlIGEgRGlzcGxheVBvcnQg
MS4yIGRldmljZS4KLSAqLwotI2RlZmluZSBOVl9DVFJMX1NUUklOR19ESVNQTEFZX05BTUVfRFBf
R1VJRCA0OCAvKiBSLUQtICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19ESVNQTEFZX05BTUVf
RURJRF9IQVNIIC0gUmV0dXJucyB0aGUgU0hBLTEgaGFzaCBvZiB0aGUKLSAqIGRpc3BsYXkgZGV2
aWNlJ3MgRURJRCBpbiA4LTQtNC00LTEyIFVJRCBmb3JtYXQuIGUuZy4KLSAqICJEUFktRURJRC1m
MTZhNWJkZS03OWYzLTExZTEtYjJhZS04YjVhODk2OWJhOWMiCi0gKgotICogVGhlIGRpc3BsYXkg
ZGV2aWNlIG11c3QgaGF2ZSBhIHZhbGlkIEVESUQuCi0gKi8KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJ
TkdfRElTUExBWV9OQU1FX0VESURfSEFTSCA0OSAvKiBSLUQtICovCi0KLS8qCi0gKiBOVl9DVFJM
X1NUUklOR19ESVNQTEFZX05BTUVfVEFSR0VUX0lOREVYIC0gUmV0dXJucyB0aGUgY3VycmVudCBO
Vi1DT05UUk9MCi0gKiB0YXJnZXQgSUQgKG5hbWUpIG9mIHRoZSBkaXNwbGF5IGRldmljZS4gIGUu
Zy4gIkRQWS0xIiwgIkRQWS00IgotICoKLSAqIFRoaXMgbmFtZSBmb3IgdGhlIGRpc3BsYXkgZGV2
aWNlIGlzIG5vdCBndWFyZW50ZWVkIHRvIGJlIHRoZSBzYW1lIGJldHdlZW4KLSAqIGRpZmZlcmVu
dCBydW5zIG9mIHRoZSBYIHNlcnZlci4KLSAqLwotI2RlZmluZSBOVl9DVFJMX1NUUklOR19ESVNQ
TEFZX05BTUVfVEFSR0VUX0lOREVYIDUwIC8qIFItRC0gKi8KLQotLyoKLSAqIE5WX0NUUkxfU1RS
SU5HX0RJU1BMQVlfTkFNRV9SQU5EUiAtIFJldHVybnMgdGhlIFJhbmRSIG91dHB1dCBuYW1lIGZv
ciB0aGUKLSAqIGRpc3BsYXkgZGV2aWNlLiAgZS5nLiAgIlZHQS0xIiwgIkRWSS1JLTAiLCAiRFZJ
LUQtMyIsICJMVkRTLTEiLCAiRFAtMiIsCi0gKiAiSERNSS0zIiwgImVEUC02Ii4gIFRoaXMgbmFt
ZSBzaG91bGQgbWF0Y2ggIElmIHRoaXMgZGV2aWNlIGlzIGEgRGlzcGxheVBvcnQKLSAqIDEuMiBk
ZXZpY2UsIHRoZW4gdGhpcyBuYW1lIHdpbGwgYWxzbyBiZSBwcmVwZW5kZWQgd2l0aCB0aGUgZGV2
aWNlJ3MgcG9ydAotICogYWRkcmVzcyBsaWtlIHNvOiAiRFZJLUktMy4wLjEuMi4zIgotICovCi0j
ZGVmaW5lIE5WX0NUUkxfU1RSSU5HX0RJU1BMQVlfTkFNRV9SQU5EUiA1MSAvKiBSLUQtICovCi0K
LSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfTEFTVF9BVFRSSUJVVEUgTlZfQ1RSTF9TVFJJTkdfRElT
UExBWV9OQU1FX1JBTkRSCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyoKLSAqIEJpbmFyeSBE
YXRhIEF0dHJpYnV0ZXM6Ci0gKgotICogQmluYXJ5IGRhdGEgYXR0cmlidXRlcyBjYW4gYmUgcXVl
cnlpZWQgdGhyb3VnaCB0aGUgWE5WQ1RSTFF1ZXJ5QmluYXJ5RGF0YSgpCi0gKiBhbmQgWE5WQ1RS
TFF1ZXJ5VGFyZ2V0QmluYXJ5RGF0YSgpIGZ1bmN0aW9uIGNhbGxzLgotICoKLSAqIFRoZXJlIGFy
ZSBjdXJyZW50bHkgbm8gYmluYXJ5IGRhdGEgYXR0cmlidXRlcyB0aGF0IGNhbiBiZSBzZXQuCi0g
KgotICogVW5sZXNzIG90aGVyd2lzZSBub3RlZCwgYWxsIEJpbmFyeSBkYXRhIGF0dHJpYnV0ZXMg
Y2FuIGJlIHF1ZXJpZWQKLSAqIHVzaW5nIGFuIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4g
dGFyZ2V0LiAgQXR0cmlidXRlcyB0aGF0IGNhbm5vdCB0YWtlCi0gKiBhbiBOVl9DVFJMX1RBUkdF
VF9UWVBFX1hfU0NSRUVOIHRhcmdldCBhbHNvIGNhbm5vdCBiZSBxdWVyaWVkIHRocm91Z2gKLSAq
IFhOVkNUUkxRdWVyeUJpbmFyeURhdGEoKSAoU2luY2UgYW4gWCBTY3JlZW4gdGFyZ2V0IGlzIGFz
c3VtZWQpLgotICovCi0KLS8qCi0gKiBOVl9DVFJMX0JJTkFSWV9EQVRBX0VESUQgLSBSZXR1cm5z
IGEgZGlzcGxheSBkZXZpY2UncyBFRElEIGluZm9ybWF0aW9uCi0gKiBkYXRhLgotICoKLSAqIFRo
aXMgYXR0cmlidXRlIG1heSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0Qmlu
YXJ5RGF0YSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIG9yIE5WX0NUUkxf
VEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFyZ2V0LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9CSU5B
UllfREFUQV9FRElEIDAgLyogUi1ERyAqLwotCi0vKgotICogTlZfQ1RSTF9CSU5BUllfREFUQV9N
T0RFTElORVMgLSBSZXR1cm5zIGEgZGlzcGxheSBkZXZpY2UncyBzdXBwb3J0ZWQKLSAqIE1vZGVM
aW5lcy4gIE1vZGVMaW5lcyBhcmUgcmV0dXJuZWQgaW4gYSBidWZmZXIsIHNlcGFyYXRlZCBieSBh
IHNpbmdsZQotICogJ1wwJyBhbmQgdGVybWluYXRlZCBieSB0d28gY29uc2VjdXRpdmUgJ1wwJyBz
IGxpa2Ugc286Ci0gKgotICogICJNb2RlTGluZSAxXDBNb2RlTGluZSAyXDBNb2RlTGluZSAzXDBM
YXN0IE1vZGVMaW5lXDBcMCIKLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBtYXkgYmUgcXVlcmllZCB0
aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEJpbmFyeURhdGEoKQotICogdXNpbmcgYSBOVl9DVFJM
X1RBUkdFVF9UWVBFX0dQVSBvciBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIHRhcmdldC4K
LSAqCi0gKiBFYWNoIE1vZGVMaW5lIHN0cmluZyBtYXkgYmUgcHJlcGVuZGVkIHdpdGggYSBjb21t
YS1zZXBhcmF0ZWQgbGlzdAotICogb2YgInRva2VuPXZhbHVlIiBwYWlycywgc2VwYXJhdGVkIGZy
b20gdGhlIE1vZGVMaW5lIHN0cmluZyB3aXRoIGEKLSAqICI6OiIuICBWYWxpZCB0b2tlbnM6Ci0g
KgotICogICAgVG9rZW4gICAgVmFsdWUKLSAqICAgInNvdXJjZSIgInhzZXJ2ZXIiICAgIC0gdGhl
IE1vZGVMaW5lIGlzIGZyb20gdGhlIGNvcmUgWCBzZXJ2ZXIKLSAqICAgICAgICAgICAgInhjb25m
aWciICAgIC0gdGhlIE1vZGVMaW5lIHdhcyBzcGVjaWZpZWQgaW4gdGhlIFggY29uZmlnIGZpbGUK
LSAqICAgICAgICAgICAgImJ1aWx0aW4iICAgIC0gdGhlIE5WSURJQSBkcml2ZXIgcHJvdmlkZWQg
dGhpcyBidWlsdGluIE1vZGVMaW5lCi0gKiAgICAgICAgICAgICJ2ZXNhIiAgICAgICAtIHRoaXMg
aXMgYSBWRVNBIHN0YW5kYXJkIE1vZGVMaW5lCi0gKiAgICAgICAgICAgICJlZGlkIiAgICAgICAt
IHRoZSBNb2RlTGluZSB3YXMgaW4gdGhlIGRpc3BsYXkgZGV2aWNlJ3MgRURJRAotICogICAgICAg
ICAgICAibnYtY29udHJvbCIgLSB0aGUgTW9kZUxpbmUgd2FzIHNwZWNpZmllZCB2aWEgTlYtQ09O
VFJPTAotICoKLSAqICAgInhjb25maWctbmFtZSIgICAgICAgIC0gZm9yIE1vZGVMaW5lcyB0aGF0
IHdlcmUgc3BlY2lmaWVkIGluIHRoZSBYIGNvbmZpZwotICogICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaWxlLCB0aGlzIGlzIHRoZSBuYW1lIHRoZSBYIGNvbmZpZyBmaWxlCi0gKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdhdmUgZm9yIHRoZSBNb2RlTGluZS4KLSAqCi0gKiBOb3RlIHRo
YXQgYSBNb2RlTGluZSBjYW4gaGF2ZSBzZXZlcmFsIHNvdXJjZXM7IHRoZSAic291cmNlIiB0b2tl
bgotICogY2FuIGFwcGVhciBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgInRva2VuPXZhbHVlIiBwYWly
cyBsaXN0LgotICogQWRkaXRpb25hbCBzb3VyY2UgdmFsdWVzIG1heSBiZSBzcGVjaWZpZWQgaW4g
dGhlIGZ1dHVyZS4KLSAqCi0gKiBBZGRpdGlvbmFsIHRva2VucyBtYXkgYmUgYWRkZWQgaW4gdGhl
IGZ1dHVyZSwgc28gaXQgaXMgcmVjb21tZW5kZWQKLSAqIHRoYXQgYW55IHRva2VuIHBhcnNlciBw
cm9jZXNzaW5nIHRoZSByZXR1cm5lZCBzdHJpbmcgZnJvbQotICogTlZfQ1RSTF9CSU5BUllfREFU
QV9NT0RFTElORVMgYmUgaW1wbGVtZW50ZWQgdG8gZ3JhY2VmdWxseSBpZ25vcmUKLSAqIHVucmVj
b2duaXplZCB0b2tlbnMuCi0gKgotICogRS5nLiwKLSAqCi0gKiAic291cmNlPXhzZXJ2ZXIsIHNv
dXJjZT12ZXNhLCBzb3VyY2U9ZWRpZCA6OiAiMTAyNHg3NjhfNzAiICA3NS4wICAxMDI0IDEwNDgg
MTE4NCAxMzI4ICA3NjggNzcxCi0gKiA3NzcgODA2ICAtSFN5bmMgLVZTeW5jIgotICogInNvdXJj
ZT14Y29uZmlnLCB4Y29uZmlnLW5hbWU9MTYwMHgxMjAwXzYwLjAwIDo6ICIxNjAweDEyMDBfNjBf
MCIgIDE2MS4wICAxNjAwIDE3MDQgMTg4MCAyMTYwCi0gKiAxMjAwIDEyMDEgMTIwNCAxMjQyICAt
SFN5bmMgK1ZTeW5jIgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9CSU5BUllfREFUQV9NT0RFTElO
RVMgMSAvKiBSLURHICovCi0KLS8qCi0gKiBOVl9DVFJMX0JJTkFSWV9EQVRBX01FVEFNT0RFUyAt
IFJldHVybnMgYW4gWCBTY3JlZW4ncyBzdXBwb3J0ZWQKLSAqIE1ldGFNb2Rlcy4gIE1ldGFNb2Rl
cyBhcmUgcmV0dXJuZWQgaW4gYSBidWZmZXIgc2VwYXJhdGVkIGJ5IGEKLSAqIHNpbmdsZSAnXDAn
IGFuZCB0ZXJtaW5hdGVkIGJ5IHR3byBjb25zZWN1dGl2ZSAnXDAnIHMgbGlrZSBzbzoKLSAqCi0g
KiAgIk1ldGFNb2RlIDFcME1ldGFNb2RlIDJcME1ldGFNb2RlIDNcMExhc3QgTWV0YU1vZGVcMFww
IgotICoKLSAqIFRoZSBNZXRhTW9kZSBzdHJpbmcgc2hvdWxkIGhhdmUgdGhlIHNhbWUgc3ludGF4
IGFzIHRoZSBNZXRhTW9kZSBYCi0gKiBjb25maWd1cmF0aW9uIG9wdGlvbiwgYXMgZG9jdW1lbnRl
ZCBpbiB0aGUgTlZJRElBIGRyaXZlciBSRUFETUUuCi0KLSAqIEVhY2ggTWV0YU1vZGUgc3RyaW5n
IG1heSBiZSBwcmVwZW5kZWQgd2l0aCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0Ci0gKiBvZiAidG9r
ZW49dmFsdWUiIHBhaXJzLCBzZXBhcmF0ZWQgZnJvbSB0aGUgTWV0YU1vZGUgc3RyaW5nIHdpdGgK
LSAqICI6OiIuICBDdXJyZW50bHksIHZhbGlkIHRva2VucyBhcmU6Ci0gKgotICogICAgVG9rZW4g
ICAgICAgIFZhbHVlCi0gKiAgICJpZCIgICAgICAgICA8bnVtYmVyPiAgICAgLSB0aGUgaWQgb2Yg
dGhpcyBNZXRhTW9kZTsgdGhpcyBpcyBzdG9yZWQgaW4KLSAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoZSBWZXJ0aWNhbCBSZWZyZXNoIGZpZWxkLCBhcyB2aWV3ZWQKLSAqICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IHRoZSBYUmFuZFIgYW5kIFhGODZWaWRNb2RlIFgg
KgotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy4KLSAqCi0gKiAg
ICJzd2l0Y2hhYmxlIiAieWVzIi8ibm8iICAgLSB3aGV0aGVyIHRoaXMgTWV0YU1vZGUgbWF5IGJl
IHN3aXRjaGVkIHRvIHZpYQotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RybC1h
bHQtKy8tOyBJbXBsaWNpdCBNZXRhTW9kZXMgKHNlZQotICogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdGhlICJJbmNsdWRlSW1wbGljaXRNZXRhTW9kZXMiIFgKLSAqICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbmZpZyBvcHRpb24pLCBmb3IgZXhhbXBsZSwgYXJlIG5vdAot
ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsbHkgbWFkZSBhdmFpbGFibGUg
dGhyb3VnaAotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RybC1hbHQtKy8tLgot
ICoKLSAqICAgInNvdXJjZSIgICAgICJ4Y29uZmlnIiAgICAtIHRoZSBNZXRhTW9kZSB3YXMgc3Bl
Y2lmaWVkIGluIHRoZSBYCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcg
ZmlsZS4KLSAqICAgICAgICAgICAgICAgICJpbXBsaWNpdCIgICAtIHRoZSBNZXRhTW9kZSB3YXMg
aW1wbGljaXRseSBhZGRlZDsgc2VlIHRoZQotICogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkluY2x1ZGVJbXBsaWNpdE1ldGFNb2RlcyIgWCBjb25maWcgb3B0aW9uCi0gKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgZGV0YWlscy4KLSAqICAgICAgICAgICAgICAgICJu
di1jb250cm9sIiAtIHRoZSBNZXRhTW9kZSB3YXMgYWRkZWQgdmlhIHRoZSBOVi1DT05UUk9MIFgK
LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbiB0byB0aGUgY3VycmVu
dGx5IHJ1bm5pbmcgWCBzZXJ2ZXIuCi0gKiAgICAgICAgICAgICAgICAiUmFuZFIiICAgICAgLSB0
aGUgTWV0YU1vZGUgd2FzIG1vZGlmaWVkIGluIHJlc3BvbnNlIHRvIGFuCi0gKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSYW5kUiBSUlNldENydGNDb25maWcgcmVxdWVzdC4KLSAqCi0g
KiBBZGRpdGlvbmFsIHRva2VucyBtYXkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZSwgc28gaXQgaXMg
cmVjb21tZW5kZWQKLSAqIHRoYXQgYW55IHRva2VuIHBhcnNlciBwcm9jZXNzaW5nIHRoZSByZXR1
cm5lZCBzdHJpbmcgZnJvbQotICogTlZfQ1RSTF9CSU5BUllfREFUQV9NRVRBTU9ERVMgYmUgaW1w
bGVtZW50ZWQgdG8gZ3JhY2VmdWxseSBpZ25vcmUKLSAqIHVucmVjb2duaXplZCB0b2tlbnMuCi0g
KgotICogRS5nLiwKLSAqCi0gKiAgICJpZD01MCwgc3dpdGNoYWJsZT15ZXMsIHNvdXJjZT14Y29u
ZmlnIDo6IENSVC0wOiAxMDI0eDc2OCBAMTAyNHg3NjggKzArMCIKLSAqLwotCi0jZGVmaW5lIE5W
X0NUUkxfQklOQVJZX0RBVEFfTUVUQU1PREVTIDIgLyogUi1ELSAqLwotI2RlZmluZSBOVl9DVFJM
X0JJTkFSWV9EQVRBX01FVEFNT0RFU19WRVJTSU9OXzEgTlZfQ1RSTF9CSU5BUllfREFUQV9NRVRB
TU9ERVMKLQotLyoKLSAqIE5WX0NUUkxfQklOQVJZX0RBVEFfWFNDUkVFTlNfVVNJTkdfR1BVIC0g
UmV0dXJucyB0aGUgbGlzdCBvZiBYCi0gKiBzY3JlZW5zIGN1cnJlbnRseSBkcml2ZW4gYnkgdGhl
IGdpdmVuIEdQVS4KLSAqCi0gKiBUaGUgZm9ybWF0IG9mIHRoZSByZXR1cm5lZCBkYXRhIGlzOgot
ICoKLSAqICAgICA0ICAgICAgIENBUkQzMiBudW1iZXIgb2Ygc2NyZWVucwotICogICAgIDQgKiBu
ICAgQ0FSRDMyIHNjcmVlbiBpbmRpY2VzCi0gKgotICogVGhpcyBhdHRyaWJ1dGUgY2FuIG9ubHkg
YmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEJpbmFyeURhdGEoKQotICogdXNp
bmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSB0YXJnZXQuICBUaGlzIGF0dHJpYnV0ZSBjYW5u
b3QgYmUKLSAqIHF1ZXJpZWQgdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOLgot
ICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9CSU5BUllfREFUQV9YU0NSRUVOU19VU0lOR19HUFUgMyAv
KiBSLURHICovCi0KLS8qCi0gKiBOVl9DVFJMX0JJTkFSWV9EQVRBX0dQVVNfVVNFRF9CWV9YU0NS
RUVOIC0gUmV0dXJucyB0aGUgbGlzdCBvZiBHUFVzCi0gKiBjdXJyZW50bHkgaW4gdXNlIGJ5IHRo
ZSBnaXZlbiBYIHNjcmVlbi4KLSAqCi0gKiBUaGUgZm9ybWF0IG9mIHRoZSByZXR1cm5lZCBkYXRh
IGlzOgotICoKLSAqICAgICA0ICAgICAgIENBUkQzMiBudW1iZXIgb2YgR1BVcwotICogICAgIDQg
KiBuICAgQ0FSRDMyIEdQVSBpbmRpY2VzCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0JJTkFSWV9E
QVRBX0dQVVNfVVNFRF9CWV9YU0NSRUVOIDQgLyogUi0tLSAqLwotCi0vKgotICogTlZfQ1RSTF9C
SU5BUllfREFUQV9HUFVTX1VTSU5HX0ZSQU1FTE9DSyAtIFJldHVybnMgdGhlIGxpc3Qgb2YKLSAq
IEdQVXMgY3VycmVudGx5IGNvbm5lY3RlZCB0byB0aGUgZ2l2ZW4gZnJhbWUgbG9jayBib2FyZC4K
LSAqCi0gKiBUaGUgZm9ybWF0IG9mIHRoZSByZXR1cm5lZCBkYXRhIGlzOgotICoKLSAqICAgICA0
ICAgICAgIENBUkQzMiBudW1iZXIgb2YgR1BVcwotICogICAgIDQgKiBuICAgQ0FSRDMyIEdQVSBp
bmRpY2VzCi0gKgotICogVGhpcyBhdHRyaWJ1dGUgY2FuIG9ubHkgYmUgcXVlcmllZCB0aHJvdWdo
IFhOVkNUUkxRdWVyeVRhcmdldEJpbmFyeURhdGEoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdF
VF9UWVBFX0ZSQU1FTE9DSyB0YXJnZXQuICBUaGlzIGF0dHJpYnV0ZSBjYW5ub3QgYmUKLSAqIHF1
ZXJpZWQgdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOLgotICovCi0KLSNkZWZp
bmUgTlZfQ1RSTF9CSU5BUllfREFUQV9HUFVTX1VTSU5HX0ZSQU1FTE9DSyA1IC8qIFItREYgKi8K
LQotLyoKLSAqIE5WX0NUUkxfQklOQVJZX0RBVEFfRElTUExBWV9WSUVXUE9SVCAtIFJldHVybnMg
dGhlIERpc3BsYXkgRGV2aWNlJ3MKLSAqIHZpZXdwb3J0IGJveCBpbnRvIHRoZSBnaXZlbiBYIFNj
cmVlbiAoaW4gWCBTY3JlZW4gY29vcmRpbmF0ZXMuKQotICoKLSAqIFRoZSBmb3JtYXQgb2YgdGhl
IHJldHVybmVkIGRhdGEgaXM6Ci0gKgotICogICAgIDQgICAgICAgQ0FSRDMyIE9mZnNldCBYCi0g
KiAgICAgNCAgICAgICBDQVJEMzIgT2Zmc2V0IFkKLSAqICAgICA0ICAgICAgIENBUkQzMiBXaWR0
aAotICogICAgIDQgICAgICAgQ0FSRDMyIEhlaWdodAotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9C
SU5BUllfREFUQV9ESVNQTEFZX1ZJRVdQT1JUIDYgLyogUi1ERyAqLwotCi0vKgotICogTlZfQ1RS
TF9CSU5BUllfREFUQV9GUkFNRUxPQ0tTX1VTRURfQllfR1BVIC0gUmV0dXJucyB0aGUgbGlzdCBv
ZgotICogRnJhbWVsb2NrIGRldmljZXMgY3VycmVudGx5IGNvbm5lY3RlZCB0byB0aGUgZ2l2ZW4g
R1BVLgotICoKLSAqIFRoZSBmb3JtYXQgb2YgdGhlIHJldHVybmVkIGRhdGEgaXM6Ci0gKgotICog
ICAgIDQgICAgICAgQ0FSRDMyIG51bWJlciBvZiBGcmFtZWxvY2tzCi0gKiAgICAgNCAqIG4gICBD
QVJEMzIgRnJhbWVsb2NrIGluZGljZXMKLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBjYW4gb25seSBi
ZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QmluYXJ5RGF0YSgpCi0gKiB1c2lu
ZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfR1BVIHRhcmdldC4gIFRoaXMgYXR0cmlidXRlIGNhbm5v
dCBiZQotICogcXVlcmllZCB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4uCi0g
Ki8KLQotI2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX0ZSQU1FTE9DS1NfVVNFRF9CWV9HUFUg
NyAvKiBSLURHICovCi0KLS8qCi0gKiBOVl9DVFJMX0JJTkFSWV9EQVRBX0dQVVNfVVNJTkdfVkNT
QyAtIFJldHVybnMgdGhlIGxpc3Qgb2YKLSAqIEdQVSBkZXZpY2VzIGNvbm5lY3RlZCB0byB0aGUg
Z2l2ZW4gVkNTLgotICoKLSAqIFRoZSBmb3JtYXQgb2YgdGhlIHJldHVybmVkIGRhdGEgaXM6Ci0g
KgotICogICAgIDQgICAgICAgQ0FSRDMyIG51bWJlciBvZiBHUFVzCi0gKiAgICAgNCAqIG4gICBD
QVJEMzIgR1BVIGluZGljZXMKLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBjYW4gb25seSBiZSBxdWVy
aWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QmluYXJ5RGF0YSgpCi0gKiB1c2luZyBhIE5W
X0NUUkxfVEFSR0VUX1RZUEVfVkNTQyB0YXJnZXQuICBUaGlzIGF0dHJpYnV0ZSBjYW5ub3QgYmUK
LSAqIHF1ZXJpZWQgdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIGFuZCBjYW5u
b3QgYmUgcXVlcmllZCB1c2luZwotICogYSAgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX0dQVQotICov
Ci0KLSNkZWZpbmUgTlZfQ1RSTF9CSU5BUllfREFUQV9HUFVTX1VTSU5HX1ZDU0MgOCAvKiBSLURW
ICovCi0KLS8qCi0gKiBOVl9DVFJMX0JJTkFSWV9EQVRBX1ZDU0NTX1VTRURfQllfR1BVIC0gUmV0
dXJucyB0aGUgVkNTQyBkZXZpY2UKLSAqIHRoYXQgaXMgY29udHJvbGxpbmcgdGhlIGdpdmVuIEdQ
VS4KLSAqCi0gKiBUaGUgZm9ybWF0IG9mIHRoZSByZXR1cm5lZCBkYXRhIGlzOgotICoKLSAqICAg
ICA0ICAgICAgIENBUkQzMiBudW1iZXIgb2YgVkNTIChhbHdheXMgMSkKLSAqICAgICA0ICogbiAg
IENBUkQzMiBWQ1MgaW5kaWNlcwotICoKLSAqIFRoaXMgYXR0cmlidXRlIGNhbiBvbmx5IGJlIHF1
ZXJpZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRhKCkKLSAqIHVzaW5nIGEg
TlZfQ1RSTF9UQVJHRVRfVFlQRV9HUFUgdGFyZ2V0LiAgVGhpcyBhdHRyaWJ1dGUgY2Fubm90IGJl
Ci0gKiBxdWVyaWVkIHVzaW5nIGEgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTgotICovCi0K
LSNkZWZpbmUgTlZfQ1RSTF9CSU5BUllfREFUQV9WQ1NDU19VU0VEX0JZX0dQVSA5IC8qIFItREcg
Ki8KLQotLyoKLSAqIE5WX0NUUkxfQklOQVJZX0RBVEFfQ09PTEVSU19VU0VEX0JZX0dQVSAtIFJl
dHVybnMgdGhlIGNvb2xlcnMgdGhhdAotICogYXJlIGNvb2xpbmcgdGhlIGdpdmVuIEdQVS4KLSAq
Ci0gKiBUaGUgZm9ybWF0IG9mIHRoZSByZXR1cm5lZCBkYXRhIGlzOgotICoKLSAqICAgICA0ICAg
ICAgIENBUkQzMiBudW1iZXIgb2YgQ09PTEVSCi0gKiAgICAgNCAqIG4gICBDQVJEMzIgQ09PTEVS
IGluZGljZXMKLSAqCi0gKiBUaGlzIGF0dHJpYnV0ZSBjYW4gb25seSBiZSBxdWVyaWVkIHRocm91
Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0QmluYXJ5RGF0YSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFS
R0VUX1RZUEVfR1BVIHRhcmdldC4gIFRoaXMgYXR0cmlidXRlIGNhbm5vdCBiZQotICogcXVlcmll
ZCB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4KLSAqLwotCi0jZGVmaW5lIE5W
X0NUUkxfQklOQVJZX0RBVEFfQ09PTEVSU19VU0VEX0JZX0dQVSAxMCAvKiBSLURHICovCi0KLS8q
Ci0gKiBOVl9DVFJMX0JJTkFSWV9EQVRBX0dQVVNfVVNFRF9CWV9MT0dJQ0FMX1hTQ1JFRU4gLSBS
ZXR1cm5zIHRoZSBsaXN0IG9mCi0gKiBHUFVzIGN1cnJlbnRseSBkcml2aW5nIHRoZSBnaXZlbiBY
IHNjcmVlbi4gIElmIFhpbmVyYW1hIGlzIGVuYWJsZWQsIHRoaXMKLSAqIHdpbGwgcmV0dXJuIGFs
bCBHUFVzIHRoYXQgYXJlIGRyaXZpbmcgYW55IFggc2NyZWVuLgotICoKLSAqIFRoZSBmb3JtYXQg
b2YgdGhlIHJldHVybmVkIGRhdGEgaXM6Ci0gKgotICogICAgIDQgICAgICAgQ0FSRDMyIG51bWJl
ciBvZiBHUFVzCi0gKiAgICAgNCAqIG4gICBDQVJEMzIgR1BVIGluZGljZXMKLSAqLwotCi0jZGVm
aW5lIE5WX0NUUkxfQklOQVJZX0RBVEFfR1BVU19VU0VEX0JZX0xPR0lDQUxfWFNDUkVFTiAxMSAv
KiBSLS0tICovCi0KLS8qCi0gKiBOVl9DVFJMX0JJTkFSWV9EQVRBX1RIRVJNQUxfU0VOU09SU19V
U0VEX0JZX0dQVSAtIFJldHVybnMgdGhlIHNlbnNvcnMgdGhhdAotICogYXJlIGF0dGFjaGVkIHRv
IHRoZSBnaXZlbiBHUFUuCi0gKgotICogVGhlIGZvcm1hdCBvZiB0aGUgcmV0dXJuZWQgZGF0YSBp
czoKLSAqCi0gKiAgICAgNCAgICAgICBDQVJEMzIgbnVtYmVyIG9mIFNFTlNPUgotICogICAgIDQg
KiBuICAgQ0FSRDMyIFNFTlNPUiBpbmRpY2VzCi0gKgotICogVGhpcyBhdHRyaWJ1dGUgY2FuIG9u
bHkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEJpbmFyeURhdGEoKQotICog
dXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX0dQVSB0YXJnZXQuICBUaGlzIGF0dHJpYnV0ZSBj
YW5ub3QgYmUKLSAqIHF1ZXJpZWQgdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVO
Ci0gKi8KLQotI2RlZmluZSBOVl9DVFJMX0JJTkFSWV9EQVRBX1RIRVJNQUxfU0VOU09SU19VU0VE
X0JZX0dQVSAxMiAvKiBSLS1HICovCi0KLS8qCi0gKiBOVl9DVFJMX0JJTkFSWV9EQVRBX0dMQVNT
RVNfUEFJUkVEX1RPXzNEX1ZJU0lPTl9QUk9fVFJBTlNDRUlWRVIgLSBSZXR1cm5zCi0gKiB0aGUg
aWQgb2YgdGhlIGdsYXNzZXMgdGhhdCBhcmUgY3VycmVudGx5IHBhaXJlZCB0byB0aGUgZ2l2ZW4K
LSAqIDNEIFZpc2lvbiBQcm8gdHJhbnNjZWl2ZXIuCi0gKgotICogVGhlIGZvcm1hdCBvZiB0aGUg
cmV0dXJuZWQgZGF0YSBpczoKLSAqCi0gKiAgICAgNCAgICAgICBDQVJEMzIgbnVtYmVyIG9mIGds
YXNzZXMKLSAqICAgICA0ICogbiAgIENBUkQzMiBpZCBvZiBnbGFzc2VzCi0gKgotICogVGhpcyBh
dHRyaWJ1dGUgY2FuIG9ubHkgYmUgcXVlcmllZCB0aHJvdWdoIFhOVkNUUkxRdWVyeVRhcmdldEJp
bmFyeURhdGEoKQotICogdXNpbmcgYSBOVl9DVFJMX1RBUkdFVF9UWVBFXzNEX1ZJU0lPTl9QUk9f
VFJBTlNDRUlWRVIgdGFyZ2V0LgotICovCi0jZGVmaW5lIE5WX0NUUkxfQklOQVJZX0RBVEFfR0xB
U1NFU19QQUlSRURfVE9fM0RfVklTSU9OX1BST19UUkFOU0NFSVZFUiAxMyAvKiBSLS1UICovCi0K
LS8qCi0gKiBOVl9DVFJMX0JJTkFSWV9EQVRBX0RJU1BMQVlfVEFSR0VUUyAtIFJldHVybnMgYWxs
IHRoZSBkaXNwbGF5IGRldmljZXMKLSAqIGN1cnJlbnRseSBjb25uZWN0ZWQgdG8gYW55IEdQVSBv
biB0aGUgWCBzZXJ2ZXIuCi0gKgotICogVGhlIGZvcm1hdCBvZiB0aGUgcmV0dXJuZWQgZGF0YSBp
czoKLSAqCi0gKiAgICAgNCAgICAgICBDQVJEMzIgbnVtYmVyIG9mIGRpc3BsYXkgZGV2aWNlcwot
ICogICAgIDQgKiBuICAgQ0FSRDMyIGRpc3BsYXkgZGV2aWNlIGluZGljZXMKLSAqCi0gKiBUaGlz
IGF0dHJpYnV0ZSBjYW4gb25seSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0
QmluYXJ5RGF0YSgpLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9CSU5BUllfREFUQV9ESVNQTEFZ
X1RBUkdFVFMgMTQgLyogUi0tLSAqLwotCi0vKgotICogTlZfQ1RSTF9CSU5BUllfREFUQV9ESVNQ
TEFZU19DT05ORUNURURfVE9fR1BVIC0gUmV0dXJucyB0aGUgbGlzdCBvZgotICogZGlzcGxheSBk
ZXZpY2VzIHRoYXQgYXJlIGNvbm5lY3RlZCB0byB0aGUgR1BVIHRhcmdldC4KLSAqCi0gKiBUaGUg
Zm9ybWF0IG9mIHRoZSByZXR1cm5lZCBkYXRhIGlzOgotICoKLSAqICAgICA0ICAgICAgIENBUkQz
MiBudW1iZXIgb2YgZGlzcGxheSBkZXZpY2VzCi0gKiAgICAgNCAqIG4gICBDQVJEMzIgZGlzcGxh
eSBkZXZpY2UgaW5kaWNlcwotICoKLSAqIFRoaXMgYXR0cmlidXRlIGNhbiBvbmx5IGJlIHF1ZXJp
ZWQgdGhyb3VnaCBYTlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRhKCkKLSAqIHVzaW5nIGEgTlZf
Q1RSTF9UQVJHRVRfVFlQRV9HUFUgdGFyZ2V0LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9CSU5B
UllfREFUQV9ESVNQTEFZU19DT05ORUNURURfVE9fR1BVIDE1IC8qIFItLUcgKi8KLQotLyoKLSAq
IE5WX0NUUkxfQklOQVJZX0RBVEFfTUVUQU1PREVTX1ZFUlNJT05fMiAgLSBSZXR1cm5zIHZhbHVl
cyBzaW1pbGFyIHRvCi0gKiBOVl9DVFJMX0JJTkFSWV9EQVRBX01FVEFNT0RFUyhfVkVSU0lPTl8x
KSBidXQgYWxzbyByZXR1cm5zIGV4dGVuZGVkIHN5bnRheAotICogaW5mb3JtYXRpb24gdG8gaW5k
aWNhdGUgYSBzcGVjaWZpYyBkaXNwbGF5IGRldmljZSwgYXMgd2VsbCBhcyBvdGhlciBwZXItCi0g
KiBkaXNwbGF5IGRldmljZWZsYWdzIGFzICJ0b2tlbj12YWx1ZSIgcGFpcnMuICBGb3IgZXhhbXBs
ZToKLSAqCi0gKiAgICJEUFktMTogMTI4MHgxMDI0IHtTdGVyZW89UGFzc2l2ZUxlZnR9LAotICog
ICAgRFBZLTI6IDEyODB4MTAyNCB7U3RlcmVvPVBhc3NpdmVSaWdodH0sIgotICoKLSAqIFRoZSBk
aXNwbGF5IGRldmljZSBuYW1lcyBoYXZlIHRoZSBmb3JtICJEUFktJWQiLCB3aGVyZSB0aGUgaW50
ZWdlcgotICogcGFydCBvZiB0aGUgbmFtZSBpcyB0aGUgTlYtQ09OVFJPTCB0YXJnZXQgSUQgZm9y
IHRoYXQgZGlzcGxheSBkZXZpY2UKLSAqIGZvciB0aGlzIGluc3RhbmNlIG9mIHRoZSBYIHNlcnZl
ci4gIE5vdGUgdGhhdCBkaXNwbGF5IGRldmljZSBOVi1DT05UUk9MCi0gKiB0YXJnZXQgSURzIGFy
ZSBub3QgZ3VhcmFudGVlZCB0byBiZSB0aGUgc2FtZSBmcm9tIG9uZSBydW4gb2YgdGhlIFgKLSAq
IHNlcnZlciB0byB0aGUgbmV4dC4KLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfQklOQVJZX0RBVEFf
TUVUQU1PREVTX1ZFUlNJT05fMiAxNiAvKiBSLUQtICovCi0KLS8qCi0gKiBOVl9DVFJMX0JJTkFS
WV9EQVRBX0RJU1BMQVlTX0VOQUJMRURfT05fWFNDUkVFTiAtIFJldHVybnMgdGhlIGxpc3Qgb2YK
LSAqIGRpc3BsYXkgZGV2aWNlcyB0aGF0IGFyZSBjdXJyZW50bHkgc2Nhbm5pbmcgb3V0IHRoZSBY
IHNjcmVlbiB0YXJnZXQuCi0gKgotICogVGhlIGZvcm1hdCBvZiB0aGUgcmV0dXJuZWQgZGF0YSBp
czoKLSAqCi0gKiAgICAgNCAgICAgICBDQVJEMzIgbnVtYmVyIG9mIGRpc3BsYXkgZGV2aWNlcwot
ICogICAgIDQgKiBuICAgQ0FSRDMyIGRpc3BsYXkgZGV2aWNlIGluZGljZXMKLSAqCi0gKiBUaGlz
IGF0dHJpYnV0ZSBjYW4gb25seSBiZSBxdWVyaWVkIHRocm91Z2ggWE5WQ1RSTFF1ZXJ5VGFyZ2V0
QmluYXJ5RGF0YSgpCi0gKiB1c2luZyBhIE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gdGFy
Z2V0LgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9CSU5BUllfREFUQV9ESVNQTEFZU19FTkFCTEVE
X09OX1hTQ1JFRU4gMTcgLyogUi0tLSAqLwotCi0jZGVmaW5lIE5WX0NUUkxfQklOQVJZX0RBVEFf
TEFTVF9BVFRSSUJVVEUgTlZfQ1RSTF9CSU5BUllfREFUQV9ESVNQTEFZU19FTkFCTEVEX09OX1hT
Q1JFRU4KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKgotICogU3RyaW5nIE9wZXJhdGlvbiBB
dHRyaWJ1dGVzOgotICoKLSAqIFRoZXNlIGF0dHJpYnV0ZXMgYXJlIHVzZWQgd2l0aCB0aGUgWE5W
Q1RSTFN0cmluZ09wZXJhdGlvbigpCi0gKiBmdW5jdGlvbjsgYSBzdHJpbmcgaXMgc3BlY2lmaWVk
IGFzIGlucHV0LCBhbmQgYSBzdHJpbmcgaXMgcmV0dXJuZWQKLSAqIGFzIG91dHB1dC4KLSAqCi0g
KiBVbmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLCBhbGwgYXR0cmlidXRlcyBjYW4gYmUgb3BlcmF0ZWQg
dXBvbiB1c2luZwotICogYW4gTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiB0YXJnZXQuCi0g
Ki8KLQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HX09QRVJBVElPTl9BRERfTUVUQU1PREUgLSBwcm92
aWRlIGEgTWV0YU1vZGUgc3RyaW5nCi0gKiBhcyBpbnB1dCwgYW5kIHJldHVybnMgYSBzdHJpbmcg
Y29udGFpbmluZyBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZgotICogInRva2VuPXZhbHVlIiBwYWly
cyBhcyBvdXRwdXQuICBDdXJyZW50bHksIHRoZSBvbmx5IG91dHB1dCB0b2tlbiBpcwotICogImlk
Iiwgd2hpY2ggaW5kaWNhdGVzIHRoZSBpZCB0aGF0IHdhcyBhc3NpZ25lZCB0byB0aGUgTWV0YU1v
ZGUuCi0gKgotICogQWxsIE1vZGVMaW5lcyByZWZlcmVuY2VkIGluIHRoZSBNZXRhTW9kZSBtdXN0
IGFscmVhZHkgZXhpc3QgZm9yCi0gKiBlYWNoIGRpc3BsYXkgZGV2aWNlIChhcyByZXR1cm5lZCBi
eSB0aGUKLSAqIE5WX0NUUkxfQklOQVJZX0RBVEFfTU9ERUxJTkVTIGF0dHJpYnV0ZSkuCi0gKgot
ICogVGhlIE1ldGFNb2RlIHN0cmluZyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBzeW50YXggYXMgdGhl
IE1ldGFNb2RlIFgKLSAqIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBhcyBkb2N1bWVudGVkIGluIHRo
ZSBOVklESUEgZHJpdmVyIFJFQURNRS4KLSAqCi0gKiBUaGUgaW5wdXQgc3RyaW5nIGNhbiBvcHRp
b25hbGx5IGJlIHByZXBlbmRlZCB3aXRoIGEgc3RyaW5nIG9mCi0gKiBjb21tYS1zZXBhcmF0ZWQg
InRva2VuPXZhbHVlIiBwYWlycywgc2VwYXJhdGVkIGZyb20gdGhlIE1ldGFNb2RlCi0gKiBzdHJp
bmcgYnkgIjo6Ii4gIEN1cnJlbnRseSwgdGhlIG9ubHkgdmFsaWQgdG9rZW4gaXMgImluZGV4IiB3
aGljaAotICogaW5kaWNhdGVzIHRoZSBpbnNlcnRpb24gaW5kZXggZm9yIHRoZSBNZXRhTW9kZS4K
LSAqCi0gKiBFLmcuLAotICoKLSAqIElucHV0OiAiaW5kZXg9NSA6OiAxNjAweDEyMDArMCswLCAx
NjAweDEyMDArMTYwMCswIgotICogT3V0cHV0OiAiaWQ9NTgiCi0gKgotICogd2hpY2ggY2F1c2Vz
IHRoZSBNZXRhTW9kZSB0byBiZSBpbnNlcnRlZCBhdCBwb3NpdGlvbiA1IGluIHRoZQotICogTWV0
YU1vZGUgbGlzdCAoYWxsIGVudHJpZXMgYWZ0ZXIgNSB3aWxsIGJlIHNoaWZ0ZWQgZG93biBvbmUg
c2xvdCBpbgotICogdGhlIGxpc3QpLCBhbmQgdGhlIFggc2VydmVyJ3MgY29udGFpbmluZyBtb2Rl
IHN0b3JlcyA1OCBhcyB0aGUKLSAqIFZSZWZyZXNoLCBzbyB0aGF0IHRoZSBNZXRhTW9kZSBjYW4g
YmUgdW5pcXVlbHkgaWRlbnRpZmVkIHRocm91Z2gKLSAqIFhSYW5kUiBhbmQgWEY4NlZpZE1vZGUu
Ci0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19PUEVSQVRJT05fQUREX01FVEFNT0RFIDAK
LQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HX09QRVJBVElPTl9HVEZfTU9ERUxJTkUgLSBwcm92aWRl
IGFzIGlucHV0IGEgc3RyaW5nCi0gKiBvZiBjb21tYS1zZXBhcmF0ZWQgInRva2VuPXZhbHVlIiBw
YWlycywgYW5kIHJldHVybnMgYSBNb2RlTGluZQotICogc3RyaW5nLCBjb21wdXRlZCB1c2luZyB0
aGUgR1RGIGZvcm11bGEgdXNpbmcgdGhlIHBhcmFtZXRlcnMgZnJvbQotICogdGhlIGlucHV0IHN0
cmluZy4gIFZhbGlkIHRva2VucyBmb3IgdGhlIGlucHV0IHN0cmluZyBhcmUgIndpZHRoIiwKLSAq
ICJoZWlnaHQiLCBhbmQgInJlZnJlc2hyYXRlIi4KLSAqCi0gKiBFLmcuLAotICoKLSAqIElucHV0
OiAid2lkdGg9MTYwMCwgaGVpZ2h0PTEyMDAsIHJlZnJlc2hyYXRlPTYwIgotICogT3V0cHV0OiAi
MTYwLjk2ICAxNjAwIDE3MDQgMTg4MCAyMTYwICAxMjAwIDEyMDEgMTIwNCAxMjQyICAtSFN5bmMg
K1ZTeW5jIgotICoKLSAqIFRoaXMgb3BlcmF0aW9uIGRvZXMgbm90IGhhdmUgYW55IGltcGFjdCBv
biBhbnkgZGlzcGxheSBkZXZpY2UncwotICogbW9kZVBvb2wsIGFuZCB0aGUgTW9kZUxpbmUgaXMg
bm90IHZhbGlkYXRlZDsgaXQgaXMgc2ltcGx5IGludGVuZGVkCi0gKiBmb3IgZ2VuZXJhdGluZyBN
b2RlTGluZXMuCi0gKi8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19PUEVSQVRJT05fR1RGX01P
REVMSU5FIDEKLQotLyoKLSAqIE5WX0NUUkxfU1RSSU5HX09QRVJBVElPTl9DVlRfTU9ERUxJTkUg
LSBwcm92aWRlIGFzIGlucHV0IGEgc3RyaW5nCi0gKiBvZiBjb21tYS1zZXBhcmF0ZWQgInRva2Vu
PXZhbHVlIiBwYWlycywgYW5kIHJldHVybnMgYSBNb2RlTGluZQotICogc3RyaW5nLCBjb21wdXRl
ZCB1c2luZyB0aGUgQ1ZUIGZvcm11bGEgdXNpbmcgdGhlIHBhcmFtZXRlcnMgZnJvbQotICogdGhl
IGlucHV0IHN0cmluZy4gIFZhbGlkIHRva2VucyBmb3IgdGhlIGlucHV0IHN0cmluZyBhcmUgIndp
ZHRoIiwKLSAqICJoZWlnaHQiLCAicmVmcmVzaHJhdGUiLCBhbmQgInJlZHVjZWQtYmxhbmtpbmci
LiAgVGhlCi0gKiAicmVkdWNlZC1ibGFua2luZyIgYXJndW1lbnQgY2FuIGJlICIwIiBvciAiMSIs
IHRvIGVuYWJsZSBvciBkaXNhYmxlCi0gKiB1c2Ugb2YgcmVkdWNlZCBibGFua2luZyBmb3IgdGhl
IENWVCBmb3JtdWxhLgotICoKLSAqIEUuZy4sCi0gKgotICogSW5wdXQ6ICJ3aWR0aD0xNjAwLCBo
ZWlnaHQ9MTIwMCwgcmVmcmVzaHJhdGU9NjAsIHJlZHVjZWQtYmxhbmtpbmc9MSIKLSAqIE91dHB1
dDogIjEzMC4yNSAgMTYwMCAxNjQ4IDE2ODAgMTc2MCAgMTIwMCAxMjAzIDEyMDcgMTIzNSAgK0hT
eW5jIC1WU3luYyIKLSAqCi0gKiBUaGlzIG9wZXJhdGlvbiBkb2VzIG5vdCBoYXZlIGFueSBpbXBh
Y3Qgb24gYW55IGRpc3BsYXkgZGV2aWNlJ3MKLSAqIG1vZGVQb29sLCBhbmQgdGhlIE1vZGVMaW5l
IGlzIG5vdCB2YWxpZGF0ZWQ7IGl0IGlzIHNpbXBseSBpbnRlbmRlZAotICogZm9yIGdlbmVyYXRp
bmcgTW9kZUxpbmVzLgotICovCi0KLSNkZWZpbmUgTlZfQ1RSTF9TVFJJTkdfT1BFUkFUSU9OX0NW
VF9NT0RFTElORSAyCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19PUEVSQVRJT05fQlVJTERfTU9E
RVBPT0wgLSBidWlsZCBhIE1vZGVQb29sIGZvciB0aGUKLSAqIHNwZWNpZmllZCBkaXNwbGF5IGRl
dmljZSBvbiB0aGUgc3BlY2lmaWVkIHRhcmdldCAoZWl0aGVyIGFuIFgKLSAqIHNjcmVlbiBvciBh
IEdQVSkuICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIHRvIGdlbmVyYXRlIGEgTW9kZVBvb2wKLSAq
IGZvciBhIGRpc3BsYXkgZGV2aWNlIG9uIGEgR1BVIG9uIHdoaWNoIG5vIFggc2NyZWVucyBhcmUg
cHJlc2VudC4KLSAqCi0gKiBDdXJyZW50bHksIGEgZGlzcGxheSBkZXZpY2UncyBNb2RlUG9vbCBp
cyBzdGF0aWMgZm9yIHRoZSBsaWZlIG9mCi0gKiB0aGUgWCBzZXJ2ZXIsIHNvIFhOVkNUUkxTdHJp
bmdPcGVyYXRpb24gd2lsbCByZXR1cm4gRkFMU0UgaWYKLSAqIHJlcXVlc3RlZCB0byBidWlsZCBh
IE1vZGVQb29sIG9uIGEgZGlzcGxheSBkZXZpY2UgdGhhdCBhbHJlYWR5IGhhcwotICogYSBNb2Rl
UG9vbC4KLSAqCi0gKiBUaGUgc3RyaW5nIGlucHV0IHRvIEJVSUxEX01PREVQT09MIG1heSBiZSBO
VUxMLiAgSWYgaXQgaXMgbm90IE5VTEwsCi0gKiB0aGVuIGl0IGlzIGludGVycHJldGVkIGFzIGEg
ZG91YmxlLWNvbG9uICgiOjoiKSBzZXBhcmF0ZWQgbGlzdAotICogb2YgIm9wdGlvbj12YWx1ZSIg
cGFpcnMsIHdoZXJlIHRoZSBvcHRpb25zIGFuZCB0aGUgc3ludGF4IG9mIHRoZWlyCi0gKiB2YWx1
ZXMgYXJlIHRoZSBYIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGltcGFjdCB0aGUgYmVoYXZp
b3Igb2YKLSAqIG1vZGVQb29sIGNvbnN0cnVjdGlvbjsgbmFtZWx5OgotICoKLSAqICAgICJNb2Rl
VmFsaWRhdGlvbiIKLSAqICAgICJIb3JpelN5bmMiCi0gKiAgICAiVmVydFJlZnJlc2giCi0gKiAg
ICAiRmxhdFBhbmVsUHJvcGVydGllcyIKLSAqICAgICJUVlN0YW5kYXJkIgotICogICAgIkV4YWN0
TW9kZVRpbWluZ3NEVkkiCi0gKiAgICAiVXNlRWRpZEZyZXFzIgotICoKLSAqIEFuIGV4YW1wbGUg
aW5wdXQgc3RyaW5nIG1pZ2h0IGxvb2sgbGlrZToKLSAqCi0gKiAgICJNb2RlVmFsaWRhdGlvbj1O
b1Zlc2FNb2RlcyA6OiBIb3JpelN5bmM9NTAtMTEwIDo6IFZlcnRSZWZyZXNoPTUwLTE1MCIKLSAq
Ci0gKiBUaGlzIHJlcXVlc3QgY3VycmVudGx5IGRvZXMgbm90IHJldHVybiBhIHN0cmluZy4KLSAq
LwotCi0jZGVmaW5lIE5WX0NUUkxfU1RSSU5HX09QRVJBVElPTl9CVUlMRF9NT0RFUE9PTCAzIC8q
IERHICovCi0KLS8qCi0gKiBOVl9DVFJMX1NUUklOR19PUEVSQVRJT05fR1ZJX0NPTkZJR1VSRV9T
VFJFQU1TIC0gQ29uZmlndXJlIHRoZSBzdHJlYW1zLQotICogdG8tamFjaytjaGFubmVsIHRvcG9s
b2d5IGZvciBhIEdWSSAoR3JhcGhpY3MgY2FwdHVyZSBib2FyZCkuCi0gKgotICogVGhlIHN0cmlu
ZyBpbnB1dCB0byBHVklfQ09ORklHVVJFX1NUUkVBTVMgbWF5IGJlIE5VTEwuICBJZiB0aGlzIGlz
IHRoZQotICogY2FzZSwgdGhlbiB0aGUgY3VycmVudCB0b3BvbG9neSBpcyByZXR1cm5lZC4KLSAq
Ci0gKiBJZiB0aGUgaW5wdXQgc3RyaW5nIHRvIEdWSV9DT05GSUdVUkVfU1RSRUFNUyBpcyBub3Qg
TlVMTCwgdGhlIHN0cmluZwotICogaXMgaW50ZXJwcmV0ZWQgYXMgYSBzZW1pY29sb24gKCI7Iikg
c2VwYXJhdGVkIGxpc3Qgb2YgY29tbWEtc2VwYXJhdGVkCi0gKiBsaXN0cyBvZiAib3B0aW9uPXZh
bHVlIiBwYWlycyB0aGF0IGRlZmluZSBhIHN0cmVhbSdzIGNvbXBvc2l0aW9uLiAgVGhlCi0gKiBh
dmFpbGFibGUgb3B0aW9ucyBhbmQgdGhlaXIgdmFsdWVzIGFyZToKLSAqCi0gKiAgICJzdHJlYW0i
OiBEZWZpbmVzIHdoaWNoIHN0cmVhbSB0aGlzIGNvbW1hLXNlcGFyYXRlZCBsaXN0IGRlc2NyaWJl
cy4KLSAqICAgICAgICAgICAgIFZhbGlkIHZhbHVlcyBhcmUgdGhlIGludGVnZXJzIGJldHdlZW4g
MCBhbmQKLSAqICAgICAgICAgICAgIE5WX0NUUkxfR1ZJX05VTV9TVFJFQU1TLTEgKGluY2x1c2l2
ZSkuCi0gKgotICogICAibGlua04iOiAgRGVmaW5lcyBhIGphY2srY2hhbm5lbCBwYWlyIHRvIHVz
ZSBmb3IgdGhlIGdpdmVuIGxpbmsgTi4KLSAqICAgICAgICAgICAgIFZhbGlkIG9wdGlvbnMgYXJl
IHRoZSBzdHJpbmcgImxpbmtOIiwgd2hlcmUgTiBpcyBhbiBpbnRlZ2VyCi0gKiAgICAgICAgICAg
ICBiZXR3ZWVuIDAgYW5kIE5WX0NUUkxfR1ZJX01BWF9MSU5LU19QRVJfU1RSRUFNLTEgKGluY2x1
c2l2ZSkuCi0gKiAgICAgICAgICAgICBWYWxpZCB2YWx1ZXMgZm9yIHRoZXNlIG9wdGlvbnMgYXJl
IHN0cmluZ3Mgb2YgdGhlIGZvcm0KLSAqICAgICAgICAgICAgICJqYWNrWCIgYW5kL29yICJqYWNr
WC5ZIiwgd2hlcmUgWCBpcyBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQKLSAqICAgICAgICAgICAg
IE5WX0NUUkxfR1ZJX05VTV9KQUNLUy0xIChpbmNsdXNpdmUpLCBhbmQgWSAob3B0aW9uYWwpIGlz
IGFuCi0gKiAgICAgICAgICAgICBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgTlZfQ1RSTF9HVklfTUFY
X0NIQU5ORUxTX1BFUl9KQUNLLTEKLSAqICAgICAgICAgICAgIChpbmNsdXNpdmUpLgotICoKLSAq
IEFuIGV4YW1wbGUgaW5wdXQgc3RyaW5nIG1pZ2h0IGxvb2sgbGlrZToKLSAqCi0gKiAgICJzdHJl
YW09MCwgbGluazA9amFjazAsIGxpbmsxPWphY2sxOyBzdHJlYW09MSwgbGluazA9amFjazIuMSIK
LSAqCi0gKiAgIFRoaXMgZXhhbXBsZSBzcGVjaWZpZXMgdHdvIHN0cmVhbXMsIHN0cmVhbSAwIGFu
ZCBzdHJlYW0gMS4gIFN0cmVhbSAwCi0gKiAgIGlzIGRlZmluZWQgdG8gY2FwdHVyZSBsaW5rMCBk
YXRhIGZyb20gdGhlIGZpcnN0IGNoYW5uZWwgKGNoYW5uZWwgMCkgb2YKLSAqICAgQk5DIGphY2sg
MCBhbmQgbGluazEgZGF0YSBmcm9tIHRoZSBmaXJzdCBjaGFubmVsIG9mIEJOQyBqYWNrIDEuICBU
aGUKLSAqICAgc2Vjb25kIHN0cmVhbSAoU3RyZWFtIDEpIGlzIGRlZmluZWQgdG8gY2FwdHVyZSBs
aW5rMCBkYXRhIGZyb20gY2hhbm5lbCAxCi0gKiAgIChzZWNvbmQgY2hhbm5lbCkgb2YgQk5DIGph
Y2sgMi4KLSAqCi0gKiBUaGlzIGV4YW1wbGUgc2hvd3MgYSBwb3NzaWJsZSBjb25maWd1cmF0aW9u
IGZvciBjYXB0dXJpbmcgM0cgaW5wdXQ6Ci0gKgotICogICAic3RyZWFtPTAsIGxpbmswPWphY2sw
LjAsIGxpbmsxPWphY2swLjEiCi0gKgotICogQXBwbGljYXRpb25zIHNob3VsZCBxdWVyeSB0aGUg
Zm9sbG93aW5nIGF0dHJpYnV0ZXMgdG8gZGV0ZXJtaW5lCi0gKiBwb3NzaWJsZSBjb21iaW5hdGlv
bnM6Ci0gKgotICogICBOVl9DVFJMX0dWSV9NQVhfU1RSRUFNUwotICogICBOVl9DVFJMX0dWSV9N
QVhfTElOS1NfUEVSX1NUUkVBTQotICogICBOVl9DVFJMX0dWSV9OVU1fSkFDS1MKLSAqICAgTlZf
Q1RSTF9HVklfTUFYX0NIQU5ORUxTX1BFUl9KQUNLCi0gKgotICogTm90ZTogQSBqYWNrK2NoYW5u
ZWwgcGFpciBjYW4gb25seSBiZSB0aWVkIHRvIG9uZSBsaW5rL3N0cmVhbS4KLSAqCi0gKiBVcG9u
IHN1Y2Nlc3NmdWwgY29uZmlndXJhdGlvbiBvciBxdWVyeWluZyBvZiB0aGlzIGF0dHJpYnV0ZSwg
YSBzdHJpbmcKLSAqIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB0b3BvbG9neSBmb3IgYWxsIGtu
b3duIHN0cmVhbXMgb24gdGhlIGRldmljZQotICogd2lsbCBiZSByZXR1cm5lZC4gIE9uIGZhaWx1
cmUsIE5VTEwgaXMgcmV0dXJuZWQuCi0gKgotICogTm90ZTogU2V0dGluZyB0aGlzIGF0dHJpYnV0
ZSBtYXkgYWxzbyByZXN1bHQgaW4gdGhlIGZvbGxvd2luZwotICogICAgICAgTlYtQ09OVFJPTCBh
dHRyaWJ1dGVzIGJlaW5nIHJlc2V0IG9uIHRoZSBHVkkgZGV2aWNlICh0byBlbnN1cmUKLSAqICAg
ICAgIHRoZSBjb25maWd1cmF0aW9uIHJlbWFpbnMgdmFsaWQpOgotICogICAgICAgICAgIE5WX0NU
UkxfR1ZJT19SRVFVRVNURURfVklERU9fRk9STUFUCi0gKiAgICAgICAgICAgTlZfQ1RSTF9HVklf
UkVRVUVTVEVEX1NUUkVBTV9CSVRTX1BFUl9DT01QT05FTlQKLSAqICAgICAgICAgICBOVl9DVFJM
X0dWSV9SRVFVRVNURURfU1RSRUFNX0NPTVBPTkVOVF9TQU1QTElORwotICovCi0KLSNkZWZpbmUg
TlZfQ1RSTF9TVFJJTkdfT1BFUkFUSU9OX0dWSV9DT05GSUdVUkVfU1RSRUFNUyA0IC8qIFJXLUkg
Ki8KLQotI2RlZmluZSBOVl9DVFJMX1NUUklOR19PUEVSQVRJT05fTEFTVF9BVFRSSUJVVEUgTlZf
Q1RSTF9TVFJJTkdfT1BFUkFUSU9OX0dWSV9DT05GSUdVUkVfU1RSRUFNUwotCi0vKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKiovCi0KLS8qCi0gKiBDVFJMQXR0cmlidXRlVmFsaWRWYWx1ZXNSZWMgLQotICoKLSAq
IHN0cnVjdHVyZSBhbmQgcmVsYXRlZCBkZWZpbmVzIHVzZWQgYnkKLSAqIFhOVkNUUkxRdWVyeVZh
bGlkQXR0cmlidXRlVmFsdWVzKCkgdG8gZGVzY3JpYmUgdGhlIHZhbGlkIHZhbHVlcyBvZgotICog
YSBwYXJ0aWN1bGFyIGF0dHJpYnV0ZS4gIFRoZSB0eXBlIGZpZWxkIHdpbGwgYmUgb25lIG9mOgot
ICoKLSAqIEFUVFJJQlVURV9UWVBFX0lOVEVHRVIgOiB0aGUgYXR0cmlidXRlIGlzIGFuIGludGVn
ZXIgdmFsdWU7IHRoZXJlCi0gKiBpcyBubyBmaXhlZCByYW5nZSBvZiB2YWxpZCB2YWx1ZXMuCi0g
KgotICogQVRUUklCVVRFX1RZUEVfQklUTUFTSyA6IHRoZSBhdHRyaWJ1dGUgaXMgYW4gaW50ZWdl
ciB2YWx1ZSwKLSAqIGludGVycHJldHRlZCBhcyBhIGJpdG1hc2suCi0gKgotICogQVRUUklCVVRF
X1RZUEVfQk9PTCA6IHRoZSBhdHRyaWJ1dGUgaXMgYSBib29sZWFuLCB2YWxpZCB2YWx1ZXMgYXJl
Ci0gKiBlaXRoZXIgMSAob24vdHJ1ZSkgb3IgMCAob2ZmL2ZhbHNlKS4KLSAqCi0gKiBBVFRSSUJV
VEVfVFlQRV9SQU5HRSA6IHRoZSBhdHRyaWJ1dGUgY2FuIGhhdmUgYW55IGludGVnZXIgdmFsdWUK
LSAqIGJldHdlZW4gTlZDVFJMQXR0cmlidXRlVmFsaWRWYWx1ZXMudS5yYW5nZS5taW4gYW5kCi0g
KiBOVkNUUkxBdHRyaWJ1dGVWYWxpZFZhbHVlcy51LnJhbmdlLm1heCAoaW5jbHVzaXZlKS4KLSAq
Ci0gKiBBVFRSSUJVVEVfVFlQRV9JTlRfQklUUyA6IHRoZSBhdHRyaWJ1dGUgY2FuIG9ubHkgaGF2
ZSBjZXJ0YWluCi0gKiBpbnRlZ2VyIHZhbHVlcywgaW5kaWNhdGVkIGJ5IHdoaWNoIGJpdHMgaW4K
LSAqIE5WQ1RSTEF0dHJpYnV0ZVZhbGlkVmFsdWVzLnUuYml0cy5pbnRzIGFyZSBvbiAoZm9yIGV4
YW1wbGU6IGlmIGJpdAotICogMCBpcyBvbiwgdGhlbiAwIGlzIGEgdmFsaWQgdmFsdWU7IGlmIGJp
dCA1IGlzIG9uLCB0aGVuIDUgaXMgYSB2YWxpZAotICogdmFsdWUsIGV0YykuICBUaGlzIGlzIHVz
ZWZ1bCBmb3IgYXR0cmlidXRlcyBsaWtlIE5WX0NUUkxfRlNBQV9NT0RFLAotICogd2hpY2ggY2Fu
IG9ubHkgaGF2ZSBjZXJ0YWluIHZhbHVlcywgZGVwZW5kaW5nIG9uIEdQVS4KLSAqCi0gKiBBVFRS
SUJVVEVfVFlQRV82NEJJVF9JTlRFR0VSIDogdGhlIGF0dHJpYnV0ZSBpcyBhIDY0IGJpdCBpbnRl
Z2VyIHZhbHVlOwotICogdGhlcmUgaXMgbm8gZml4ZWQgcmFuZ2Ugb2YgdmFsaWQgdmFsdWVzLgot
ICoKLSAqIEFUVFJJQlVURV9UWVBFX1NUUklORyA6IHRoZSBhdHRyaWJ1dGUgaXMgYSBzdHJpbmcg
dmFsdWU7IHRoZXJlIGlzIG5vIGZpeGVkCi0gKiByYW5nZSBvZiB2YWxpZCB2YWx1ZXMuCi0gKgot
ICogQVRUUklCVVRFX1RZUEVfQklOQVJZX0RBVEEgOiB0aGUgYXR0cmlidXRlIGlzIGJpbmFyeSBk
YXRhOyB0aGVyZSBpcwotICogbm8gZml4ZWQgcmFuZ2Ugb2YgdmFsaWQgdmFsdWVzLgotICoKLSAq
IEFUVFJJQlVURV9UWVBFX1NUUklOR19PUEVSQVRJT04gOiB0aGUgYXR0cmlidXRlIGlzIGEgc3Ry
aW5nOyB0aGVyZSBpcwotICogbm8gZml4ZWQgcmFuZ2Ugb2YgdmFsaWQgdmFsdWVzLgotICoKLSAq
Ci0gKiBUaGUgcGVybWlzc2lvbnMgZmllbGQgb2YgTlZDVFJMQXR0cmlidXRlVmFsaWRWYWx1ZXNS
ZWMgaXMgYSBiaXRtYXNrCi0gKiB0aGF0IG1heSBjb250YWluOgotICoKLSAqIEFUVFJJQlVURV9U
WVBFX1JFQUQgICAgICAtIEF0dHJpYnV0ZSBtYXkgYmUgcmVhZCAocXVlcmllZC4pCi0gKiBBVFRS
SUJVVEVfVFlQRV9XUklURSAgICAgLSBBdHRyaWJ1dGUgbWF5IGJlIHdyaXR0ZW4gdG8gKHNldC4p
Ci0gKiBBVFRSSUJVVEVfVFlQRV9ESVNQTEFZICAgLSBBdHRyaWJ1dGUgaXMgdmFsaWQgZm9yIGRp
c3BsYXkgdGFyZ2V0IHR5cGVzCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVxdWly
ZXMgYSBkaXNwbGF5X21hc2sgaWYgcXVlcmllZCB2aWEKLSAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGEgR1BVIG9yIFggc2NyZWVuLikKLSAqIEFUVFJJQlVURV9UWVBFX0dQVSAgICAgICAt
IEF0dHJpYnV0ZSBpcyB2YWxpZCBmb3IgR1BVIHRhcmdldCB0eXBlcy4KLSAqIEFUVFJJQlVURV9U
WVBFX0ZSQU1FTE9DSyAtIEF0dHJpYnV0ZSBpcyB2YWxpZCBmb3IgRnJhbWUgTG9jayB0YXJnZXQg
dHlwZXMuCi0gKiBBVFRSSUJVVEVfVFlQRV9YX1NDUkVFTiAgLSBBdHRyaWJ1dGUgaXMgdmFsaWQg
Zm9yIFggU2NyZWVuIHRhcmdldCB0eXBlcy4KLSAqIEFUVFJJQlVURV9UWVBFX1hJTkVSQU1BICAt
IEF0dHJpYnV0ZSB3aWxsIGJlIG1hZGUgY29uc2lzdGVudCBmb3IgYWxsCi0gKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBYIFNjcmVlbnMgd2hlbiB0aGUgWGluZXJhbWEgZXh0ZW5zaW9uIGlz
IGVuYWJsZWQuCi0gKiBBVFRSSUJVVEVfVFlQRV9WQ1NDICAgICAgLSBBdHRyaWJ1dGUgaXMgdmFs
aWQgZm9yIFZpc3VhbCBDb21wdXRpbmcgU3lzdGVtCi0gKiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0YXJnZXQgdHlwZXMuCi0gKiBBVFRSSUJVVEVfVFlQRV9HVkkgICAgICAgLSBBdHRyaWJ1
dGUgaXMgdmFsaWQgZm9yIEdyYXBoaWNzIFZpZGVvIEluIHRhcmdldAotICogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdHlwZXMuCi0gKiBBVFRSSUJVVEVfVFlQRV9DT09MRVIgICAgLSBBdHRy
aWJ1dGUgaXMgdmFsaWQgZm9yIENvb2xlciB0YXJnZXQgdHlwZXMuCi0gKiBBVFRSSUJVVEVfVFlQ
RV8zRF9WSVNJT05fUFJPX1RSQU5TQ0VJVkVSIC0gQXR0cmlidXRlIGlzIHZhbGlkIGZvciAzRCBW
aXNpb24KLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm8g
VHJhbnNjZWl2ZXIgdGFyZ2V0IHR5cGVzLgotICoKLSAqIFNlZSAnS2V5IHRvIEludGVnZXIgQXR0
cmlidXRlICJQZXJtaXNzaW9ucyInIGF0IHRoZSB0b3Agb2YgdGhpcwotICogZmlsZSBmb3IgYSBk
ZXNjcmlwdGlvbiBvZiB3aGF0IHRoZXNlIHBlcm1pc3Npb24gYml0cyBtZWFuLgotICovCi0KLSNk
ZWZpbmUgQVRUUklCVVRFX1RZUEVfVU5LTk9XTiAwCi0jZGVmaW5lIEFUVFJJQlVURV9UWVBFX0lO
VEVHRVIgMQotI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9CSVRNQVNLIDIKLSNkZWZpbmUgQVRUUklC
VVRFX1RZUEVfQk9PTCAzCi0jZGVmaW5lIEFUVFJJQlVURV9UWVBFX1JBTkdFIDQKLSNkZWZpbmUg
QVRUUklCVVRFX1RZUEVfSU5UX0JJVFMgNQotI2RlZmluZSBBVFRSSUJVVEVfVFlQRV82NEJJVF9J
TlRFR0VSIDYKLSNkZWZpbmUgQVRUUklCVVRFX1RZUEVfU1RSSU5HIDcKLSNkZWZpbmUgQVRUUklC
VVRFX1RZUEVfQklOQVJZX0RBVEEgOAotI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9TVFJJTkdfT1BF
UkFUSU9OIDkKLQotI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9SRUFEIDB4MDAxCi0jZGVmaW5lIEFU
VFJJQlVURV9UWVBFX1dSSVRFIDB4MDAyCi0jZGVmaW5lIEFUVFJJQlVURV9UWVBFX0RJU1BMQVkg
MHgwMDQKLSNkZWZpbmUgQVRUUklCVVRFX1RZUEVfR1BVIDB4MDA4Ci0jZGVmaW5lIEFUVFJJQlVU
RV9UWVBFX0ZSQU1FTE9DSyAweDAxMAotI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9YX1NDUkVFTiAw
eDAyMAotI2RlZmluZSBBVFRSSUJVVEVfVFlQRV9YSU5FUkFNQSAweDA0MAotI2RlZmluZSBBVFRS
SUJVVEVfVFlQRV9WQ1NDIDB4MDgwCi0jZGVmaW5lIEFUVFJJQlVURV9UWVBFX0dWSSAweDEwMAot
I2RlZmluZSBBVFRSSUJVVEVfVFlQRV9DT09MRVIgMHgyMDAKLSNkZWZpbmUgQVRUUklCVVRFX1RZ
UEVfVEhFUk1BTF9TRU5TT1IgMHg0MDAKLSNkZWZpbmUgQVRUUklCVVRFX1RZUEVfM0RfVklTSU9O
X1BST19UUkFOU0NFSVZFUiAweDgwMAotCi0jZGVmaW5lIEFUVFJJQlVURV9UWVBFX0FMTF9UQVJH
RVRTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgKChBVFRSSUJVVEVfVFlQRV9ESVNQTEFZKSB8IChBVFRSSUJVVEVfVFlQRV9HUFUpIHwgKEFU
VFJJQlVURV9UWVBFX0ZSQU1FTE9DSykgfCBcCi0gICAgIChBVFRSSUJVVEVfVFlQRV9YX1NDUkVF
TikgfCAoQVRUUklCVVRFX1RZUEVfVkNTQykgfCAoQVRUUklCVVRFX1RZUEVfR1ZJKSB8ICAgICBc
Ci0gICAgIChBVFRSSUJVVEVfVFlQRV9DT09MRVIpIHwgKEFUVFJJQlVURV9UWVBFX1RIRVJNQUxf
U0VOU09SKSB8ICAgICAgICAgICAgICAgICAgICBcCi0gICAgIChBVFRSSUJVVEVfVFlQRV8zRF9W
SVNJT05fUFJPX1RSQU5TQ0VJVkVSKSkKLQotdHlwZWRlZiBzdHJ1Y3QgX05WQ1RSTEF0dHJpYnV0
ZVZhbGlkVmFsdWVzCi17Ci0gICAgaW50IHR5cGU7Ci0gICAgdW5pb24KLSAgICB7Ci0gICAgICAg
IHN0cnVjdAotICAgICAgICB7Ci0gICAgICAgICAgICBpbnQ2NF90IG1pbjsKLSAgICAgICAgICAg
IGludDY0X3QgbWF4OwotICAgICAgICB9IHJhbmdlOwotICAgICAgICBzdHJ1Y3QKLSAgICAgICAg
ewotICAgICAgICAgICAgdW5zaWduZWQgaW50IGludHM7Ci0gICAgICAgIH0gYml0czsKLSAgICB9
IHU7Ci0gICAgdW5zaWduZWQgaW50IHBlcm1pc3Npb25zOwotfSBOVkNUUkxBdHRyaWJ1dGVWYWxp
ZFZhbHVlc1JlYzsKLQotdHlwZWRlZiBzdHJ1Y3QgX05WQ1RSTEF0dHJpYnV0ZVBlcm1pc3Npb25z
Ci17Ci0gICAgaW50IHR5cGU7Ci0gICAgdW5zaWduZWQgaW50IHBlcm1pc3Npb25zOwotfSBOVkNU
UkxBdHRyaWJ1dGVQZXJtaXNzaW9uc1JlYzsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0vKgot
ICogTlYtQ09OVFJPTCBYIGV2ZW50IG5vdGlmaWNhdGlvbi4KLSAqCi0gKiBUbyByZWNlaXZlIFgg
ZXZlbnQgbm90aWZpY2F0aW9ucyBkZWFsaW5nIHdpdGggTlYtQ09OVFJPTCwgeW91IHNob3VsZAot
ICogY2FsbCBYTlZDdHJsU2VsZWN0Tm90aWZ5KCkgd2l0aCBvbmUgb2YgdGhlIGZvbGxvd2luZyBz
ZXQgYXMgdGhlIHR5cGUKLSAqIG9mIGV2ZW50IHRvIHJlY2VpdmUgKHNlZSBOVkN0cmxMaWIuaCBm
b3IgbW9yZSBpbmZvcm1hdGlvbik6Ci0gKi8KLQotI2RlZmluZSBBVFRSSUJVVEVfQ0hBTkdFRF9F
VkVOVCAwCi0jZGVmaW5lIFRBUkdFVF9BVFRSSUJVVEVfQ0hBTkdFRF9FVkVOVCAxCi0jZGVmaW5l
IFRBUkdFVF9BVFRSSUJVVEVfQVZBSUxBQklMSVRZX0NIQU5HRURfRVZFTlQgMgotI2RlZmluZSBU
QVJHRVRfU1RSSU5HX0FUVFJJQlVURV9DSEFOR0VEX0VWRU5UIDMKLSNkZWZpbmUgVEFSR0VUX0JJ
TkFSWV9BVFRSSUJVVEVfQ0hBTkdFRF9FVkVOVCA0Ci0KLSNlbmRpZiAvKiBfX05WQ1RSTF9IICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbGli
WE5WQ3RybC9OVkN0cmxMaWIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9w
YXJ0eS9saWJYTlZDdHJsL05WQ3RybExpYi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxYTVkNWRlY2ZhMy4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvTlZDdHJsTGliLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw3MDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAwOCBOVklESUEsIENvcnBvcmF0
aW9uCi0gKgotICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us
IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQotICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQg
YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwK
LSAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91
dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKLSAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg
cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKLSAqIGNvcGllcyBv
ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy
ZSBpcwotICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9uczoKLSAqCi0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJt
aXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Ci0gKiBwYXJhZ3JhcGgpIHNoYWxsIGJl
IGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCi0g
KiBTb2Z0d2FyZS4KLSAqCi0gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU
SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgotICogSU1QTElFRCwgSU5DTFVE
SU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFks
Ci0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U
LiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFCi0gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT
IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCi0gKiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ
U0lORyBGUk9NLAotICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUg
T1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKLSAqIFNPRlRXQVJFLgotICovCi0K
LSNpZm5kZWYgX19OVkNUUkxMSUJfSAotI2RlZmluZSBfX05WQ1RSTExJQl9ICi0KLSNpbmNsdWRl
ICJOVkN0cmwuaCIKLQotI2lmIGRlZmluZWQgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2Vu
ZGlmCi0KLS8qCi0gKiAgWE5WQ1RSTFF1ZXJ5RXh0ZW5zaW9uIC0KLSAqCi0gKiAgUmV0dXJucyBU
cnVlIGlmIHRoZSBleHRlbnNpb24gZXhpc3RzLCByZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4KLSAq
ICBldmVudF9iYXNlcCBhbmQgZXJyb3JfYmFzZXAgYXJlIHRoZSBleHRlbnNpb24gZXZlbnQgYW5k
IGVycm9yCi0gKiAgYmFzZXMuICBDdXJyZW50bHksIG5vIGV4dGVuc2lvbiBzcGVjaWZpYyBlcnJv
cnMgb3IgZXZlbnRzIGFyZQotICogIGRlZmluZWQuCi0gKi8KLQotQm9vbCBYTlZDVFJMUXVlcnlF
eHRlbnNpb24oRGlzcGxheSAqZHB5LCBpbnQgKmV2ZW50X2Jhc2VwLCBpbnQgKmVycm9yX2Jhc2Vw
KTsKLQotLyoKLSAqICBYTlZDVFJMUXVlcnlWZXJzaW9uIC0KLSAqCi0gKiAgUmV0dXJucyBUcnVl
IGlmIHRoZSBleHRlbnNpb24gZXhpc3RzLCByZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4KLSAqICBt
YWpvciBhbmQgbWlub3IgYXJlIHRoZSBleHRlbnNpb24ncyBtYWpvciBhbmQgbWlub3IgdmVyc2lv
bgotICogIG51bWJlcnMuCi0gKi8KLQotQm9vbCBYTlZDVFJMUXVlcnlWZXJzaW9uKERpc3BsYXkg
KmRweSwgaW50ICptYWpvciwgaW50ICptaW5vcik7Ci0KLS8qCi0gKiAgWE5WQ1RSTElzTnZTY3Jl
ZW4KLSAqCi0gKiAgUmV0dXJucyBUcnVlIGlzIHRoZSBzcGVjaWZpZWQgc2NyZWVuIGlzIGNvbnRy
b2xsZWQgYnkgdGhlIE5WSURJQQotICogIGRyaXZlci4gIFJldHVybnMgRmFsc2Ugb3RoZXJ3aXNl
LgotICovCi0KLUJvb2wgWE5WQ1RSTElzTnZTY3JlZW4oRGlzcGxheSAqZHB5LCBpbnQgc2NyZWVu
KTsKLQotLyoKLSAqICBYTlZDVFJMUXVlcnlUYXJnZXRDb3VudCAtCi0gKgotICogIFJldHVybnMg
VHJ1ZSBpZiB0aGUgdGFyZ2V0IHR5cGUgZXhpc3RzLiAgUmV0dXJucyBGYWxzZSBvdGhlcndpc2Uu
Ci0gKiAgSWYgWE5WQ1RSTFF1ZXJ5VGFyZ2V0Q291bnQgcmV0dXJucyBUcnVlLCB2YWx1ZSB3aWxs
IGNvbnRhaW4gdGhlCi0gKiAgY291bnQgb2YgZXhpc3RpbmcgdGFyZ2V0cyBvbiB0aGUgc2VydmVy
IG9mIHRoZSBzcGVjaWZpZWQgdGFyZ2V0Ci0gKiAgdHlwZS4KLSAqCi0gKiAgUGxlYXNlIHNlZSAi
QXR0cmlidXRlIFRhcmdldHMiIGluIE5WQ3RybC5oIGZvciB0aGUgbGlzdCBvZiB2YWxpZAotICog
IHRhcmdldCB0eXBlcy4KLSAqCi0gKiAgUG9zc2libGUgZXJyb3JzOgotICogICAgIEJhZFZhbHVl
IC0gVGhlIHRhcmdldCBkb2Vzbid0IGV4aXN0LgotICovCi0KLUJvb2wgWE5WQ1RSTFF1ZXJ5VGFy
Z2V0Q291bnQoRGlzcGxheSAqZHB5LCBpbnQgdGFyZ2V0X3R5cGUsIGludCAqdmFsdWUpOwotCi0v
KgotICogIFhOVkNUUkxTZXRBdHRyaWJ1dGUgLQotICoKLSAqICBTZXRzIHRoZSBhdHRyaWJ1dGUg
dG8gdGhlIGdpdmVuIHZhbHVlLiAgVGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyCi0gKiAgcG9zc2li
bGUgdmFsdWVzIGFyZSBsaXN0ZWQgaW4gTlZDdHJsLmguCi0gKgotICogIE5vdCBhbGwgYXR0cmli
dXRlcyByZXF1aXJlIHRoZSBkaXNwbGF5X21hc2sgcGFyYW1ldGVyOyBzZWUKLSAqICBOVkN0cmwu
aCBmb3IgZGV0YWlscy4KLSAqCi0gKiAgQ2FsbGluZyB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxl
bnQgdG8gY2FsbGluZyBYTlZDVFJMU2V0VGFyZ2V0QXR0cmlidXRlKCkKLSAqICB3aXRoIHRoZSB0
YXJnZXRfdHlwZSBzZXQgdG8gTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiBhbmQKLSAqICB0
YXJnZXRfaWQgc2V0IHRvICdzY3JlZW4nLgotICoKLSAqICBQb3NzaWJsZSBlcnJvcnM6Ci0gKiAg
ICAgQmFkVmFsdWUgLSBUaGUgc2NyZWVuIG9yIGF0dHJpYnV0ZSBkb2Vzbid0IGV4aXN0LgotICog
ICAgIEJhZE1hdGNoIC0gVGhlIE5WSURJQSBkcml2ZXIgaXMgbm90IHByZXNlbnQgb24gdGhhdCBz
Y3JlZW4uCi0gKi8KLQotdm9pZCBYTlZDVFJMU2V0QXR0cmlidXRlKERpc3BsYXkgKmRweSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NyZWVuLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFs
dWUpOwotCi0vKgotICogIFhOVkNUUkxTZXRUYXJnZXRBdHRyaWJ1dGUgLQotICoKLSAqICBTZXRz
IHRoZSBhdHRyaWJ1dGUgdG8gdGhlIGdpdmVuIHZhbHVlLiAgVGhlIGF0dHJpYnV0ZXMgYW5kIHRo
ZWlyCi0gKiAgcG9zc2libGUgdmFsdWVzIGFyZSBsaXN0ZWQgaW4gTlZDdHJsLmguCi0gKgotICog
IE5vdCBhbGwgYXR0cmlidXRlcyByZXF1aXJlIHRoZSBkaXNwbGF5X21hc2sgcGFyYW1ldGVyOyBz
ZWUKLSAqICBOVkN0cmwuaCBmb3IgZGV0YWlscy4KLSAqCi0gKiAgUG9zc2libGUgZXJyb3JzOgot
ICogICAgIEJhZFZhbHVlIC0gVGhlIHRhcmdldCBvciBhdHRyaWJ1dGUgZG9lc24ndCBleGlzdC4K
LSAqICAgICBCYWRNYXRjaCAtIFRoZSBOVklESUEgZHJpdmVyIGlzIG5vdCBwcmVzZW50IG9uIHRo
YXQgdGFyZ2V0LgotICovCi0KLXZvaWQgWE5WQ1RSTFNldFRhcmdldEF0dHJpYnV0ZShEaXNwbGF5
ICpkcHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldF90eXBlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRfaWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGludCB2YWx1ZSk7Ci0KLS8qCi0gKiAgWE5WQ1RSTFNldEF0
dHJpYnV0ZUFuZEdldFN0YXR1cyAtCi0gKgotICogU2FtZSBhcyBYTlZDVFJMU2V0QXR0cmlidXRl
KCkuCi0gKiBJbiBhZGRpdGlvbiwgWE5WQ1RSTFNldEF0dHJpYnV0ZUFuZEdldFN0YXR1cygpIHJl
dHVybnMKLSAqIFRydWUgaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcywgRmFsc2Ugb3RoZXJ3aXNl
LgotICoKLSAqLwotCi1Cb29sIFhOVkNUUkxTZXRBdHRyaWJ1dGVBbmRHZXRTdGF0dXMoRGlzcGxh
eSAqZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzY3JlZW4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpc3Bs
YXlfbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2
YWx1ZSk7Ci0KLS8qCi0gKiAgWE5WQ1RSTFNldFRhcmdldEF0dHJpYnV0ZUFuZEdldFN0YXR1cyAt
Ci0gKgotICogU2FtZSBhcyBYTlZDVFJMU2V0VGFyZ2V0QXR0cmlidXRlKCkuCi0gKiBJbiBhZGRp
dGlvbiwgWE5WQ1RSTFNldFRhcmdldEF0dHJpYnV0ZUFuZEdldFN0YXR1cygpIHJldHVybnMKLSAq
IFRydWUgaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcywgRmFsc2Ugb3RoZXJ3aXNlLgotICoKLSAq
LwotCi1Cb29sIFhOVkNUUkxTZXRUYXJnZXRBdHRyaWJ1dGVBbmRHZXRTdGF0dXMoRGlzcGxheSAq
ZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJn
ZXRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
dGFyZ2V0X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGludCBkaXNwbGF5X21hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFsdWUpOwotCi0vKgotICogIFhOVkNUUkxRdWVy
eUF0dHJpYnV0ZSAtCi0gKgotICogIFJldHVybnMgVHJ1ZSBpZiB0aGUgYXR0cmlidXRlIGV4aXN0
cy4gIFJldHVybnMgRmFsc2Ugb3RoZXJ3aXNlLgotICogIElmIFhOVkNUUkxRdWVyeUF0dHJpYnV0
ZSByZXR1cm5zIFRydWUsIHZhbHVlIHdpbGwgY29udGFpbiB0aGUKLSAqICB2YWx1ZSBvZiB0aGUg
c3BlY2lmaWVkIGF0dHJpYnV0ZS4KLSAqCi0gKiAgTm90IGFsbCBhdHRyaWJ1dGVzIHJlcXVpcmUg
dGhlIGRpc3BsYXlfbWFzayBwYXJhbWV0ZXI7IHNlZQotICogIE5WQ3RybC5oIGZvciBkZXRhaWxz
LgotICoKLSAqICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBjYWxsaW5n
Ci0gKiAgWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCkgd2l0aCB0aGUgdGFyZ2V0X3R5cGUg
c2V0IHRvCi0gKiAgTlZfQ1RSTF9UQVJHRVRfVFlQRV9YX1NDUkVFTiBhbmQgdGFyZ2V0X2lkIHNl
dCB0byAnc2NyZWVuJy4KLSAqCi0gKiAgUG9zc2libGUgZXJyb3JzOgotICogICAgIEJhZFZhbHVl
IC0gVGhlIHNjcmVlbiBkb2Vzbid0IGV4aXN0LgotICogICAgIEJhZE1hdGNoIC0gVGhlIE5WSURJ
QSBkcml2ZXIgaXMgbm90IHByZXNlbnQgb24gdGhhdCBzY3JlZW4uCi0gKi8KLQotQm9vbCBYTlZD
VFJMUXVlcnlBdHRyaWJ1dGUoRGlzcGxheSAqZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHNjcmVlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBk
aXNwbGF5X21hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXR0
cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp2YWx1ZSk7Ci0KLS8qCi0g
KiBYTlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUgLQotICoKLSAqICBSZXR1cm5zIFRydWUgaWYg
dGhlIGF0dHJpYnV0ZSBleGlzdHMuICBSZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4KLSAqICBJZiBY
TlZDVFJMUXVlcnlUYXJnZXRBdHRyaWJ1dGUgcmV0dXJucyBUcnVlLCB2YWx1ZSB3aWxsIGNvbnRh
aW4gdGhlCi0gKiAgdmFsdWUgb2YgdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGUuCi0gKgotICogIE5v
dCBhbGwgYXR0cmlidXRlcyByZXF1aXJlIHRoZSBkaXNwbGF5X21hc2sgcGFyYW1ldGVyOyBzZWUK
LSAqICBOVkN0cmwuaCBmb3IgZGV0YWlscy4KLSAqCi0gKiAgUG9zc2libGUgZXJyb3JzOgotICog
ICAgIEJhZFZhbHVlIC0gVGhlIHRhcmdldCBkb2Vzbid0IGV4aXN0LgotICogICAgIEJhZE1hdGNo
IC0gVGhlIE5WSURJQSBkcml2ZXIgZG9lcyBub3QgY29udHJvbCB0aGUgdGFyZ2V0LgotICovCi0K
LUJvb2wgWE5WQ1RSTFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKERpc3BsYXkgKmRweSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRfVHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRfaWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCAqdmFsdWUpOwotCi0vKgotICogWE5WQ1RSTFF1ZXJ5VGFyZ2V0
QXR0cmlidXRlNjQgLQotICoKLSAqICBSZXR1cm5zIFRydWUgaWYgdGhlIGF0dHJpYnV0ZSBleGlz
dHMuICBSZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4KLSAqICBJZiBYTlZDVFJMUXVlcnlUYXJnZXRB
dHRyaWJ1dGUgcmV0dXJucyBUcnVlLCB2YWx1ZSB3aWxsIGNvbnRhaW4gdGhlCi0gKiAgdmFsdWUg
b2YgdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGUuCi0gKgotICogIE5vdCBhbGwgYXR0cmlidXRlcyBy
ZXF1aXJlIHRoZSBkaXNwbGF5X21hc2sgcGFyYW1ldGVyOyBzZWUKLSAqICBOVkN0cmwuaCBmb3Ig
ZGV0YWlscy4KLSAqCi0gKiAgTm90ZTogdGhpcyBmdW5jdGlvbiBiZWhhdmVzIGxpa2UgWE5WQ1RS
TFF1ZXJ5VGFyZ2V0QXR0cmlidXRlKCksCi0gKiAgYnV0IHN1cHBvcnRzIDY0LWJpdCBpbnRlZ2Vy
IGF0dHJpYnV0ZXMuCi0gKgotICogIFBvc3NpYmxlIGVycm9yczoKLSAqICAgICBCYWRWYWx1ZSAt
IFRoZSB0YXJnZXQgZG9lc24ndCBleGlzdC4KLSAqICAgICBCYWRNYXRjaCAtIFRoZSBOVklESUEg
ZHJpdmVyIGRvZXMgbm90IGNvbnRyb2wgdGhlIHRhcmdldC4KLSAqLwotCi1Cb29sIFhOVkNUUkxR
dWVyeVRhcmdldEF0dHJpYnV0ZTY0KERpc3BsYXkgKmRweSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHRhcmdldF9UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgdGFyZ2V0X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQ2NF90ICp2YWx1ZSk7Ci0KLS8qCi0gKiAgWE5WQ1RSTFF1ZXJ5U3Ry
aW5nQXR0cmlidXRlIC0KLSAqCi0gKiAgUmV0dXJucyBUcnVlIGlmIHRoZSBhdHRyaWJ1dGUgZXhp
c3RzLiAgUmV0dXJucyBGYWxzZSBvdGhlcndpc2UuCi0gKiAgSWYgWE5WQ1RSTFF1ZXJ5U3RyaW5n
QXR0cmlidXRlIHJldHVybnMgVHJ1ZSwgKnB0ciB3aWxsIHBvaW50IHRvIGFuCi0gKiAgYWxsb2Nh
dGVkIHN0cmluZyBjb250YWluaW5nIHRoZSBzdHJpbmcgYXR0cmlidXRlIHJlcXVlc3RlZC4gIEl0
IGlzCi0gKiAgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGZyZWUgdGhlIHN0cmluZyB3
aGVuIGRvbmUuCi0gKgotICogIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRv
IGNhbGxpbmcKLSAqICBYTlZDVFJMUXVlcnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUoKSB3aXRoIHRo
ZSB0YXJnZXRfdHlwZSBzZXQgdG8KLSAqICBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIGFu
ZCB0YXJnZXRfaWQgc2V0IHRvICdzY3JlZW4nLgotICoKLSAqICBQb3NzaWJsZSBlcnJvcnM6Ci0g
KiAgICAgQmFkVmFsdWUgLSBUaGUgc2NyZWVuIGRvZXNuJ3QgZXhpc3QuCi0gKiAgICAgQmFkTWF0
Y2ggLSBUaGUgTlZJRElBIGRyaXZlciBpcyBub3QgcHJlc2VudCBvbiB0aGF0IHNjcmVlbi4KLSAq
ICAgICBCYWRBbGxvYyAtIEluc3VmZmljaWVudCByZXNvdXJjZXMgdG8gZnVsZmlsbCB0aGUgcmVx
dWVzdC4KLSAqLwotCi1Cb29sIFhOVkNUUkxRdWVyeVN0cmluZ0F0dHJpYnV0ZShEaXNwbGF5ICpk
cHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NyZWVuLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqcHRyKTsKLQotLyoKLSAqICBY
TlZDVFJMUXVlcnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUgLQotICoKLSAqICBSZXR1cm5zIFRydWUg
aWYgdGhlIGF0dHJpYnV0ZSBleGlzdHMuICBSZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4KLSAqICBJ
ZiBYTlZDVFJMUXVlcnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUgcmV0dXJucyBUcnVlLCAqcHRyIHdp
bGwgcG9pbnQKLSAqICB0byBhbiBhbGxvY2F0ZWQgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHN0cmlu
ZyBhdHRyaWJ1dGUgcmVxdWVzdGVkLgotICogIEl0IGlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJp
bGl0eSB0byBmcmVlIHRoZSBzdHJpbmcgd2hlbiBkb25lLgotICoKLSAqICBQb3NzaWJsZSBlcnJv
cnM6Ci0gKiAgICAgQmFkVmFsdWUgLSBUaGUgdGFyZ2V0IGRvZXNuJ3QgZXhpc3QuCi0gKiAgICAg
QmFkTWF0Y2ggLSBUaGUgTlZJRElBIGRyaXZlciBkb2VzIG5vdCBjb250cm9sIHRoZSB0YXJnZXQu
Ci0gKiAgICAgQmFkQWxsb2MgLSBJbnN1ZmZpY2llbnQgcmVzb3VyY2VzIHRvIGZ1bGZpbGwgdGhl
IHJlcXVlc3QuCi0gKi8KLQotQm9vbCBYTlZDVFJMUXVlcnlUYXJnZXRTdHJpbmdBdHRyaWJ1dGUo
RGlzcGxheSAqZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHRhcmdldF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHRhcmdldF9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIGludCBkaXNwbGF5X21hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hhciAqKnB0cik7Ci0KLS8qCi0gKiAgWE5WQ1RSTFNldFN0cmluZ0F0dHJp
YnV0ZSAtCi0gKgotICogIFJldHVybnMgVHJ1ZSBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZGVkLiAg
UmV0dXJucyBGYWxzZSBvdGhlcndpc2UuCi0gKgotICogIFBvc3NpYmxlIFggZXJyb3JzOgotICog
ICAgIEJhZFZhbHVlIC0gVGhlIHNjcmVlbiBkb2Vzbid0IGV4aXN0LgotICogICAgIEJhZE1hdGNo
IC0gVGhlIE5WSURJQSBkcml2ZXIgaXMgbm90IHByZXNlbnQgb24gdGhhdCBzY3JlZW4uCi0gKiAg
ICAgQmFkQWxsb2MgLSBJbnN1ZmZpY2llbnQgcmVzb3VyY2VzIHRvIGZ1bGZpbGwgdGhlIHJlcXVl
c3QuCi0gKi8KLQotQm9vbCBYTlZDVFJMU2V0U3RyaW5nQXR0cmlidXRlKERpc3BsYXkgKmRweSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NyZWVuLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkaXNwbGF5X21hc2ssCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFyICpwdHIpOwotCi0vKgotICogIFhOVkNUUkxTZXRUYXJn
ZXRTdHJpbmdBdHRyaWJ1dGUgLQotICoKLSAqICBSZXR1cm5zIFRydWUgaWYgdGhlIG9wZXJhdGlv
biBzdWNjZWRlZC4gIFJldHVybnMgRmFsc2Ugb3RoZXJ3aXNlLgotICoKLSAqICBQb3NzaWJsZSBY
IGVycm9yczoKLSAqICAgICBCYWRWYWx1ZSAtIFRoZSBzY3JlZW4gZG9lc24ndCBleGlzdC4KLSAq
ICAgICBCYWRNYXRjaCAtIFRoZSBOVklESUEgZHJpdmVyIGlzIG5vdCBwcmVzZW50IG9uIHRoYXQg
c2NyZWVuLgotICogICAgIEJhZEFsbG9jIC0gSW5zdWZmaWNpZW50IHJlc291cmNlcyB0byBmdWxm
aWxsIHRoZSByZXF1ZXN0LgotICovCi0KLUJvb2wgWE5WQ1RSTFNldFRhcmdldFN0cmluZ0F0dHJp
YnV0ZShEaXNwbGF5ICpkcHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IHRhcmdldF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCB0YXJnZXRfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IGRpc3BsYXlfbWFzaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNoYXIgKnB0cik7Ci0KLS8qCi0gKiBYTlZDVFJMUXVlcnlWYWxpZEF0dHJpYnV0ZVZh
bHVlcyAtCi0gKgotICogUmV0dXJucyBUcnVlIGlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzLiAgUmV0
dXJucyBGYWxzZSBvdGhlcndpc2UuICBJZgotICogWE5WQ1RSTFF1ZXJ5VmFsaWRBdHRyaWJ1dGVW
YWx1ZXMgcmV0dXJucyBUcnVlLCB2YWx1ZXMgd2lsbCBpbmRpY2F0ZQotICogdGhlIHZhbGlkIHZh
bHVlcyBmb3IgdGhlIHNwZWNpZmllZCBhdHRyaWJ1dGU7IHNlZSB0aGUgZGVzY3JpcHRpb24KLSAq
IG9mIE5WQ1RSTEF0dHJpYnV0ZVZhbGlkVmFsdWVzIGluIE5WQ3RybC5oLgotICoKLSAqICBDYWxs
aW5nIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nCi0gKiAgWE5WQ1RSTFF1
ZXJ5VmFsaWRUYXJnZXRBdHRyaWJ1dGVWYWx1ZXMoKSB3aXRoIHRoZSB0YXJnZXRfdHlwZSBzZXQg
dG8KLSAqICBOVl9DVFJMX1RBUkdFVF9UWVBFX1hfU0NSRUVOIGFuZCB0YXJnZXRfaWQgc2V0IHRv
ICdzY3JlZW4nLgotICovCi0KLUJvb2wgWE5WQ1RSTFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXMo
RGlzcGxheSAqZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQg
c2NyZWVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBp
bnQgZGlzcGxheV9tYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBOVkNUUkxBdHRyaWJ1dGVWYWxpZFZhbHVlc1JlYyAqdmFsdWVzKTsKLQotLyoKLSAqIFhO
VkNUUkxRdWVyeVZhbGlkVGFyZ2V0QXR0cmlidXRlVmFsdWVzIC0KLSAqCi0gKiBSZXR1cm5zIFRy
dWUgaWYgdGhlIGF0dHJpYnV0ZSBleGlzdHMuICBSZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4gIElm
Ci0gKiBYTlZDVFJMUXVlcnlWYWxpZFRhcmdldEF0dHJpYnV0ZVZhbHVlcyByZXR1cm5zIFRydWUs
IHZhbHVlcyB3aWxsIGluZGljYXRlCi0gKiB0aGUgdmFsaWQgdmFsdWVzIGZvciB0aGUgc3BlY2lm
aWVkIGF0dHJpYnV0ZS4KLSAqLwotCi1Cb29sIFhOVkNUUkxRdWVyeVZhbGlkVGFyZ2V0QXR0cmli
dXRlVmFsdWVzKERpc3BsYXkgKmRweSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW50IHRhcmdldF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVkNUUkxBdHRy
aWJ1dGVWYWxpZFZhbHVlc1JlYyAqdmFsdWVzKTsKLQotLyoKLSAqIFhOVkNUUkxRdWVyeVZhbGlk
VGFyZ2V0U3RyaW5nQXR0cmlidXRlVmFsdWVzIC0KLSAqCi0gKiBSZXR1cm5zIFRydWUgaWYgdGhl
IGF0dHJpYnV0ZSBleGlzdHMuICBSZXR1cm5zIEZhbHNlIG90aGVyd2lzZS4gIElmCi0gKiBYTlZD
VFJMUXVlcnlWYWxpZFRhcmdldFN0cmluZ0F0dHJpYnV0ZVZhbHVlcyByZXR1cm5zIFRydWUsIHZh
bHVlcyB3aWxsCi0gKiBpbmRpY2F0ZSB0aGUgdmFsaWQgdmFsdWVzIGZvciB0aGUgc3BlY2lmaWVk
IGF0dHJpYnV0ZS4KLSAqLwotCi1Cb29sIFhOVkNUUkxRdWVyeVZhbGlkVGFyZ2V0U3RyaW5nQXR0
cmlidXRlVmFsdWVzKERpc3BsYXkgKmRweSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldF90eXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X2lkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGlz
cGxheV9tYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBOVkNUUkxBdHRyaWJ1dGVWYWxpZFZhbHVlc1JlYyAqdmFs
dWVzKTsKLQotLyoKLSAqIFhOVkNUUkxRdWVyeUF0dHJpYnV0ZVBlcm1pc3Npb25zIC0KLSAqCi0g
KiBSZXR1cm5zIFRydWUgaWYgdGhlIGF0dHJpYnV0ZSBleGlzdHMuICBSZXR1cm5zIEZhbHNlIG90
aGVyd2lzZS4gIElmCi0gKiBYTlZDVFJMUXVlcnlBdHRyaWJ1dGVQZXJtaXNzaW9ucyByZXR1cm5z
IFRydWUsIHBlcm1pc3Npb25zIHdpbGwKLSAqIGluZGljYXRlIHRoZSBwZXJtaXNzaW9uIGZsYWdz
IGZvciB0aGUgYXR0cmlidXRlLgotICovCi0KLUJvb2wgWE5WQ1RSTFF1ZXJ5QXR0cmlidXRlUGVy
bWlzc2lvbnMoRGlzcGxheSAqZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOVkNUUkxBdHRyaWJ1dGVQZXJtaXNzaW9uc1JlYyAqcGVybWlzc2lvbnMpOwot
Ci0vKgotICogWE5WQ1RSTFF1ZXJ5U3RyaW5nQXR0cmlidXRlUGVybWlzc2lvbnMgLQotICoKLSAq
IFJldHVybnMgVHJ1ZSBpZiB0aGUgYXR0cmlidXRlIGV4aXN0cy4gIFJldHVybnMgRmFsc2Ugb3Ro
ZXJ3aXNlLiAgSWYKLSAqIFhOVkNUUkxRdWVyeVN0cmluZ0F0dHJpYnV0ZVBlcm1pc3Npb25zIHJl
dHVybnMgVHJ1ZSwgcGVybWlzc2lvbnMgd2lsbAotICogaW5kaWNhdGUgdGhlIHBlcm1pc3Npb24g
ZmxhZ3MgZm9yIHRoZSBhdHRyaWJ1dGUuCi0gKi8KLQotQm9vbCBYTlZDVFJMUXVlcnlTdHJpbmdB
dHRyaWJ1dGVQZXJtaXNzaW9ucyhEaXNwbGF5ICpkcHksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5WQ1RSTEF0dHJpYnV0ZVBlcm1pc3Np
b25zUmVjICpwZXJtaXNzaW9ucyk7Ci0KLS8qCi0gKiBYTlZDVFJMUXVlcnlCaW5hcnlEYXRhQXR0
cmlidXRlUGVybWlzc2lvbnMgLQotICoKLSAqIFJldHVybnMgVHJ1ZSBpZiB0aGUgYXR0cmlidXRl
IGV4aXN0cy4gIFJldHVybnMgRmFsc2Ugb3RoZXJ3aXNlLiAgSWYKLSAqIFhOVkNUUkxRdWVyeUJp
bmFyeURhdGFBdHRyaWJ1dGVQZXJtaXNzaW9ucyByZXR1cm5zIFRydWUsIHBlcm1pc3Npb25zCi0g
KiB3aWxsIGluZGljYXRlIHRoZSBwZXJtaXNzaW9uIGZsYWdzIGZvciB0aGUgYXR0cmlidXRlLgot
ICovCi0KLUJvb2wgWE5WQ1RSTFF1ZXJ5QmluYXJ5RGF0YUF0dHJpYnV0ZVBlcm1pc3Npb25zKERp
c3BsYXkgKmRweSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOVkNUUkxBdHRyaWJ1dGVQZXJtaXNzaW9uc1JlYyAqcGVybWlz
c2lvbnMpOwotCi0vKgotICogWE5WQ1RSTFF1ZXJ5U3RyaW5nT3BlcmF0aW9uQXR0cmlidXRlUGVy
bWlzc2lvbnMgLQotICoKLSAqIFJldHVybnMgVHJ1ZSBpZiB0aGUgYXR0cmlidXRlIGV4aXN0cy4g
IFJldHVybnMgRmFsc2Ugb3RoZXJ3aXNlLiAgSWYKLSAqIFhOVkNUUkxRdWVyeVN0cmluZ09wZXJh
dGlvbkF0dHJpYnV0ZVBlcm1pc3Npb25zIHJldHVybnMgVHJ1ZSwKLSAqIHBlcm1pc3Npb25zIHdp
bGwgaW5kaWNhdGUgdGhlIHBlcm1pc3Npb24gZmxhZ3MgZm9yIHRoZSBhdHRyaWJ1dGUuCi0gKi8K
LQotQm9vbCBYTlZDVFJMUXVlcnlTdHJpbmdPcGVyYXRpb25BdHRyaWJ1dGVQZXJtaXNzaW9ucyhE
aXNwbGF5ICpkcHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5WQ1RSTEF0dHJpYnV0ZVBlcm1pc3Npb25z
UmVjICpwZXJtaXNzaW9ucyk7Ci0KLS8qCi0gKiAgWE5WQ1RSTFNldEd2b0NvbG9yQ29udmVyc2lv
biAtCi0gKgotICogIFNldHMgdGhlIGNvbG9yIGNvbnZlcnNpb24gbWF0cml4LCBvZmZzZXQsIGFu
ZCBzY2FsZSB0aGF0IHNob3VsZCBiZQotICogIHVzZWQgZm9yIEdWTyAoR3JhcGhpYyB0byBWaWRl
byBPdXQpLgotICoKLSAqICBUaGUgQ29sb3IgU3BhY2UgQ29udmVyc2lvbiBkYXRhIGlzIG9yZGVy
ZWQgbGlrZSB0aGlzOgotICoKLSAqICAgY29sb3JNYXRyaXhbMF1bMF0gLy8gci5ZCi0gKiAgIGNv
bG9yTWF0cml4WzBdWzFdIC8vIGcuWQotICogICBjb2xvck1hdHJpeFswXVsyXSAvLyBiLlkKLSAq
Ci0gKiAgIGNvbG9yTWF0cml4WzFdWzBdIC8vIHIuQ3IKLSAqICAgY29sb3JNYXRyaXhbMV1bMV0g
Ly8gZy5DcgotICogICBjb2xvck1hdHJpeFsxXVsyXSAvLyBiLkNyCi0gKgotICogICBjb2xvck1h
dHJpeFsyXVswXSAvLyByLkNiCi0gKiAgIGNvbG9yTWF0cml4WzJdWzFdIC8vIGcuQ2IKLSAqICAg
Y29sb3JNYXRyaXhbMl1bMl0gLy8gYi5DYgotICoKLSAqICAgY29sb3JPZmZzZXRbMF0gICAgLy8g
WQotICogICBjb2xvck9mZnNldFsxXSAgICAvLyBDcgotICogICBjb2xvck9mZnNldFsyXSAgICAv
LyBDYgotICoKLSAqICAgY29sb3JTY2FsZVswXSAgICAgLy8gWQotICogICBjb2xvclNjYWxlWzFd
ICAgICAvLyBDcgotICogICBjb2xvclNjYWxlWzJdICAgICAvLyBDYgotICoKLSAqICB3aGVyZSB0
aGUgZGF0YSBpcyB1c2VkIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIGZvcm11bGFlOgotICoK
LSAqICAgWSAgPSAgY29sb3JPZmZzZXRbMF0gKyBjb2xvclNjYWxlWzBdICoKLSAqICAgICAgICAg
ICAoUiAqIGNvbG9yTWF0cml4WzBdWzBdICsKLSAqICAgICAgICAgICAgRyAqIGNvbG9yTWF0cml4
WzBdWzFdICsKLSAqICAgICAgICAgICAgQiAqIGNvbG9yTWF0cml4WzBdWzJdKTsKLSAqCi0gKiAg
IENyID0gIGNvbG9yT2Zmc2V0WzFdICsgY29sb3JTY2FsZVsxXSAqCi0gKiAgICAgICAgICAgKFIg
KiBjb2xvck1hdHJpeFsxXVswXSArCi0gKiAgICAgICAgICAgIEcgKiBjb2xvck1hdHJpeFsxXVsx
XSArCi0gKiAgICAgICAgICAgIEIgKiBjb2xvck1hdHJpeFsxXVsyXSk7Ci0gKgotICogICBDYiA9
ICBjb2xvck9mZnNldFsyXSArIGNvbG9yU2NhbGVbMl0gKgotICogICAgICAgICAgIChSICogY29s
b3JNYXRyaXhbMl1bMF0gKwotICogICAgICAgICAgICBHICogY29sb3JNYXRyaXhbMl1bMV0gKwot
ICogICAgICAgICAgICBCICogY29sb3JNYXRyaXhbMl1bMl0pOwotICoKLSAqICBQb3NzaWJsZSBl
cnJvcnM6Ci0gKiAgICAgQmFkTWF0Y2ggLSBUaGUgTlZJRElBIGRyaXZlciBpcyBub3QgcHJlc2Vu
dCBvbiB0aGF0IHNjcmVlbi4KLSAqICAgICBCYWRJbXBsZW1lbnRhdGlvbiAtIEdWTyBpcyBub3Qg
YXZhaWxhYmxlIG9uIHRoYXQgc2NyZWVuLgotICovCi0KLXZvaWQgWE5WQ1RSTFNldEd2b0NvbG9y
Q29udmVyc2lvbihEaXNwbGF5ICpkcHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHNjcmVlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBj
b2xvck1hdHJpeFszXVszXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCBjb2xvck9mZnNldFszXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9h
dCBjb2xvclNjYWxlWzNdKTsKLQotLyoKLSAqICBYTlZDVFJMUXVlcnlHdm9Db2xvckNvbnZlcnNp
b24gLQotICoKLSAqICBSZXRyaWV2ZXMgdGhlIGNvbG9yIGNvbnZlcnNpb24gbWF0cml4IGFuZCBj
b2xvciBvZmZzZXQKLSAqICB0aGF0IGFyZSBjdXJyZW50bHkgYmVpbmcgdXNlZCBmb3IgR1ZPIChH
cmFwaGljIHRvIFZpZGVvIE91dCkuCi0gKgotICogIFRoZSB2YWx1ZXMgYXJlIG9yZGVyZWQgd2l0
aGluIHRoZSBhcnJheXMgYWNjb3JkaW5nIHRvIHRoZSBjb21tZW50cwotICogIGZvciBYTlZDVFJM
U2V0R3ZvQ29sb3JDb252ZXJzaW9uKCkuCi0gKgotICogIFBvc3NpYmxlIGVycm9yczoKLSAqICAg
ICBCYWRNYXRjaCAtIFRoZSBOVklESUEgZHJpdmVyIGlzIG5vdCBwcmVzZW50IG9uIHRoYXQgc2Ny
ZWVuLgotICogICAgIEJhZEltcGxlbWVudGF0aW9uIC0gR1ZPIGlzIG5vdCBhdmFpbGFibGUgb24g
dGhhdCBzY3JlZW4uCi0gKi8KLQotQm9vbCBYTlZDVFJMUXVlcnlHdm9Db2xvckNvbnZlcnNpb24o
RGlzcGxheSAqZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNj
cmVlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IGNvbG9yTWF0
cml4WzNdWzNdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXQgY29s
b3JPZmZzZXRbM10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCBj
b2xvclNjYWxlWzNdKTsKLQotLyoKLSAqICBYTlZDVFJMUXVlcnlCaW5hcnlEYXRhIC0KLSAqCi0g
KiAgUmV0dXJucyBUcnVlIGlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzLiAgUmV0dXJucyBGYWxzZSBv
dGhlcndpc2UuCi0gKiAgSWYgWE5WQ1RSTFF1ZXJ5QmluYXJ5RGF0YSByZXR1cm5zIFRydWUsICpw
dHIgd2lsbCBwb2ludCB0byBhbgotICogIGFsbG9jYXRlZCBibG9jayBvZiBtZW1vcnkgY29udGFp
bmluZyB0aGUgYmluYXJ5IGRhdGEgYXR0cmlidXRlCi0gKiAgcmVxdWVzdGVkLiAgSXQgaXMgdGhl
IGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGZyZWUgdGhlIGRhdGEKLSAqICB3aGVuIGRvbmUu
ICBsZW4gd2lsbCBsaXN0IHRoZSBsZW5ndGggb2YgdGhlIGJpbmFyeSBkYXRhLgotICoKLSAqICBD
YWxsaW5nIHRoaXMgZnVuY3Rpb24gaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nCi0gKiAgWE5WQ1RS
TFF1ZXJ5VGFyZ2V0QmluYXJ5RGF0YSgpIHdpdGggdGhlIHRhcmdldF90eXBlIHNldCB0bwotICog
IE5WX0NUUkxfVEFSR0VUX1RZUEVfWF9TQ1JFRU4gYW5kIHRhcmdldF9pZCBzZXQgdG8gJ3NjcmVl
bicuCi0gKgotICogIFBvc3NpYmxlIGVycm9yczoKLSAqICAgICBCYWRWYWx1ZSAtIFRoZSBzY3Jl
ZW4gZG9lc24ndCBleGlzdC4KLSAqICAgICBCYWRNYXRjaCAtIFRoZSBOVklESUEgZHJpdmVyIGlz
IG5vdCBwcmVzZW50IG9uIHRoYXQgc2NyZWVuLgotICogICAgIEJhZEFsbG9jIC0gSW5zdWZmaWNp
ZW50IHJlc291cmNlcyB0byBmdWxmaWxsIHRoZSByZXF1ZXN0LgotICovCi0KLUJvb2wgWE5WQ1RS
TFF1ZXJ5QmluYXJ5RGF0YShEaXNwbGF5ICpkcHksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50IHNjcmVlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQg
ZGlzcGxheV9tYXNrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBh
dHRyaWJ1dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKnB0
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmxlbik7Ci0KLS8qCi0gKiBYTlZD
VFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRhIC0KLSAqCi0gKiAgUmV0dXJucyBUcnVlIGlmIHRoZSBh
dHRyaWJ1dGUgZXhpc3RzLiAgUmV0dXJucyBGYWxzZSBvdGhlcndpc2UuCi0gKiAgSWYgWE5WQ1RS
TFF1ZXJ5VGFyZ2V0QmluYXJ5RGF0YSByZXR1cm5zIFRydWUsICpwdHIgd2lsbCBwb2ludCB0byBh
bgotICogIGFsbG9jYXRlZCBibG9jayBvZiBtZW1vcnkgY29udGFpbmluZyB0aGUgYmluYXJ5IGRh
dGEgYXR0cmlidXRlCi0gKiAgcmVxdWVzdGVkLiAgSXQgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNp
YmlsaXR5IHRvIGZyZWUgdGhlIGRhdGEKLSAqICB3aGVuIGRvbmUuICBsZW4gd2lsbCBsaXN0IHRo
ZSBsZW5ndGggb2YgdGhlIGJpbmFyeSBkYXRhLgotICoKLSAqICBQb3NzaWJsZSBlcnJvcnM6Ci0g
KiAgICAgQmFkVmFsdWUgLSBUaGUgdGFyZ2V0IGRvZXNuJ3QgZXhpc3QuCi0gKiAgICAgQmFkTWF0
Y2ggLSBUaGUgTlZJRElBIGRyaXZlciBkb2VzIG5vdCBjb250cm9sIHRoZSB0YXJnZXQuCi0gKiAg
ICAgQmFkQWxsb2MgLSBJbnN1ZmZpY2llbnQgcmVzb3VyY2VzIHRvIGZ1bGZpbGwgdGhlIHJlcXVl
c3QuCi0gKi8KLQotQm9vbCBYTlZDVFJMUXVlcnlUYXJnZXRCaW5hcnlEYXRhKERpc3BsYXkgKmRw
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0X3R5cGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRhcmdldF9pZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNrLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqKnB0ciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmxlbik7Ci0KLS8qCi0gKiBYTlZD
VFJMU3RyaW5nT3BlcmF0aW9uIC0KLSAqCi0gKiBUYWtlcyBhIHN0cmluZyBhcyBpbnB1dCBhbmQg
cmV0dXJucyBhIFhtYWxsb2MnZWQgc3RyaW5nIGFzIG91dHB1dC4KLSAqIFJldHVybnMgVHJ1ZSBv
biBzdWNjZXNzIGFuZCBGYWxzZSBvbiBmYWlsdXJlLgotICovCi0KLUJvb2wgWE5WQ1RSTFN0cmlu
Z09wZXJhdGlvbihEaXNwbGF5ICpkcHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50
IHRhcmdldF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRfaWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGRpc3BsYXlfbWFzaywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnBJbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjaGFyICoqcHBPdXQpOwotCi0vKgotICogWE5WQ3RybFNlbGVjdE5vdGlmeSAtCi0g
KgotICogVGhpcyBlbmFibGVzL2Rpc2FibGVzIHJlY2VpdmluZyBvZiBOVi1DT05UUk9MIGV2ZW50
cy4gIFRoZSB0eXBlCi0gKiBzcGVjaWZpZXMgdGhlIHR5cGUgb2YgZXZlbnQgdG8gZW5hYmxlIChj
dXJyZW50bHksIHRoZSBvbmx5Ci0gKiB0eXBlIHRoYXQgY2FuIGJlIHJlcXVlc3RlZCBwZXItc2Ny
ZWVuIHdpdGggWE5WQ3RybFNlbGVjdE5vdGlmeSgpCi0gKiBpcyBBVFRSSUJVVEVfQ0hBTkdFRF9F
VkVOVCk7IG9ub2ZmIGNvbnRyb2xzIHdoZXRoZXIgcmVjZWl2aW5nIHRoaXMKLSAqIHR5cGUgb2Yg
ZXZlbnQgc2hvdWxkIGJlIGVuYWJsZWQgKFRydWUpIG9yIGRpc2FibGVkIChGYWxzZSkuCi0gKgot
ICogUmV0dXJucyBUcnVlIGlmIHN1Y2Nlc3NmdWwsIG9yIEZhbHNlIGlmIHRoZSBzY3JlZW4gaXMg
bm90Ci0gKiBjb250cm9sbGVkIGJ5IHRoZSBOVklESUEgZHJpdmVyLgotICovCi0KLUJvb2wgWE5W
Q3RybFNlbGVjdE5vdGlmeShEaXNwbGF5ICpkcHksIGludCBzY3JlZW4sIGludCB0eXBlLCBCb29s
IG9ub2ZmKTsKLQotLyoKLSAqIFhOVkN0cmxTZWxlY3RUYXJnZXROb3RpZnkgLQotICoKLSAqIFRo
aXMgZW5hYmxlcy9kaXNhYmxlcyByZWNlaXZpbmcgb2YgTlYtQ09OVFJPTCBldmVudHMgdGhhdCBo
YXBwZW4gb24KLSAqIHRoZSBzcGVjaWZpZWQgdGFyZ2V0LiAgVGhlIG5vdGlmeV90eXBlIHNwZWNp
ZmllcyB0aGUgdHlwZSBvZiBldmVudCB0bwotICogZW5hYmxlIChjdXJyZW50bHksIHRoZSBvbmx5
IHR5cGUgdGhhdCBjYW4gYmUgcmVxdWVzdGVkIHBlci10YXJnZXQgd2l0aAotICogWE5WQ3RybFNl
bGVjdFRhcmdldE5vdGlmeSgpIGlzIFRBUkdFVF9BVFRSSUJVVEVfQ0hBTkdFRF9FVkVOVCk7IG9u
b2ZmCi0gKiBjb250cm9scyB3aGV0aGVyIHJlY2VpdmluZyB0aGlzIHR5cGUgb2YgZXZlbnQgc2hv
dWxkIGJlIGVuYWJsZWQgKFRydWUpCi0gKiBvciBkaXNhYmxlZCAoRmFsc2UpLgotICoKLSAqIFJl
dHVybnMgVHJ1ZSBpZiBzdWNjZXNzZnVsLCBvciBGYWxzZSBpZiB0aGUgdGFyZ2V0IGlzIG5vdAot
ICogY29udHJvbGxlZCBieSB0aGUgTlZJRElBIGRyaXZlci4KLSAqLwotCi1Cb29sIFhOVkN0cmxT
ZWxlY3RUYXJnZXROb3RpZnkoRGlzcGxheSAqZHB5LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGludCB0YXJnZXRfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgdGFyZ2V0X2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBub3RpZnlf
dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sIG9ub2ZmKTsKLQotLyoK
LSAqIFhOVkN0cmxFdmVudCBzdHJ1Y3R1cmUKLSAqLwotCi10eXBlZGVmIHN0cnVjdAotewotICAg
IGludCB0eXBlOwotICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwotICAgIEJvb2wgc2VuZF9ldmVu
dDsgLyogYWx3YXlzIEZBTFNFLCB3ZSBkb24ndCBhbGxvdyBzZW5kX2V2ZW50cyAqLwotICAgIERp
c3BsYXkgKmRpc3BsYXk7Ci0gICAgVGltZSB0aW1lOwotICAgIGludCBzY3JlZW47Ci0gICAgdW5z
aWduZWQgaW50IGRpc3BsYXlfbWFzazsKLSAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlOwotICAg
IGludCB2YWx1ZTsKLX0gWE5WQ3RybEF0dHJpYnV0ZUNoYW5nZWRFdmVudDsKLQotdHlwZWRlZiB1
bmlvbgotewotICAgIGludCB0eXBlOwotICAgIFhOVkN0cmxBdHRyaWJ1dGVDaGFuZ2VkRXZlbnQg
YXR0cmlidXRlX2NoYW5nZWQ7Ci0gICAgbG9uZyBwYWRbMjRdOwotfSBYTlZDdHJsRXZlbnQ7Ci0K
LS8qCi0gKiBYTlZDdHJsRXZlbnRUYXJnZXQgc3RydWN0dXJlCi0gKi8KLQotdHlwZWRlZiBzdHJ1
Y3QKLXsKLSAgICBpbnQgdHlwZTsKLSAgICB1bnNpZ25lZCBsb25nIHNlcmlhbDsKLSAgICBCb29s
IHNlbmRfZXZlbnQ7IC8qIGFsd2F5cyBGQUxTRSwgd2UgZG9uJ3QgYWxsb3cgc2VuZF9ldmVudHMg
Ki8KLSAgICBEaXNwbGF5ICpkaXNwbGF5OwotICAgIFRpbWUgdGltZTsKLSAgICBpbnQgdGFyZ2V0
X3R5cGU7Ci0gICAgaW50IHRhcmdldF9pZDsKLSAgICB1bnNpZ25lZCBpbnQgZGlzcGxheV9tYXNr
OwotICAgIHVuc2lnbmVkIGludCBhdHRyaWJ1dGU7Ci0gICAgaW50IHZhbHVlOwotfSBYTlZDdHJs
QXR0cmlidXRlQ2hhbmdlZEV2ZW50VGFyZ2V0OwotCi10eXBlZGVmIHVuaW9uCi17Ci0gICAgaW50
IHR5cGU7Ci0gICAgWE5WQ3RybEF0dHJpYnV0ZUNoYW5nZWRFdmVudFRhcmdldCBhdHRyaWJ1dGVf
Y2hhbmdlZDsKLSAgICBsb25nIHBhZFsyNF07Ci19IFhOVkN0cmxFdmVudFRhcmdldDsKLQotLyoK
LSAqIFhOVkN0cmxFdmVudFRhcmdldEF2YWlsYWJpbGl0eSBzdHJ1Y3R1cmUKLSAqLwotCi10eXBl
ZGVmIHN0cnVjdAotewotICAgIGludCB0eXBlOwotICAgIHVuc2lnbmVkIGxvbmcgc2VyaWFsOwot
ICAgIEJvb2wgc2VuZF9ldmVudDsgLyogYWx3YXlzIEZBTFNFLCB3ZSBkb24ndCBhbGxvdyBzZW5k
X2V2ZW50cyAqLwotICAgIERpc3BsYXkgKmRpc3BsYXk7Ci0gICAgVGltZSB0aW1lOwotICAgIGlu
dCB0YXJnZXRfdHlwZTsKLSAgICBpbnQgdGFyZ2V0X2lkOwotICAgIHVuc2lnbmVkIGludCBkaXNw
bGF5X21hc2s7Ci0gICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZTsKLSAgICBpbnQgdmFsdWU7Ci0g
ICAgQm9vbCBhdmFpbGFiaWxpdHk7Ci19IFhOVkN0cmxBdHRyaWJ1dGVDaGFuZ2VkRXZlbnRUYXJn
ZXRBdmFpbGFiaWxpdHk7Ci0KLXR5cGVkZWYgdW5pb24KLXsKLSAgICBpbnQgdHlwZTsKLSAgICBY
TlZDdHJsQXR0cmlidXRlQ2hhbmdlZEV2ZW50VGFyZ2V0QXZhaWxhYmlsaXR5IGF0dHJpYnV0ZV9j
aGFuZ2VkOwotICAgIGxvbmcgcGFkWzI0XTsKLX0gWE5WQ3RybEV2ZW50VGFyZ2V0QXZhaWxhYmls
aXR5OwotCi0vKgotICogWE5WQ3RybFN0cmluZ0V2ZW50VGFyZ2V0IHN0cnVjdHVyZQotICovCi0K
LXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgaW50IHR5cGU7Ci0gICAgdW5zaWduZWQgbG9uZyBzZXJp
YWw7Ci0gICAgQm9vbCBzZW5kX2V2ZW50OyAvKiBhbHdheXMgRkFMU0UsIHdlIGRvbid0IGFsbG93
IHNlbmRfZXZlbnRzICovCi0gICAgRGlzcGxheSAqZGlzcGxheTsKLSAgICBUaW1lIHRpbWU7Ci0g
ICAgaW50IHRhcmdldF90eXBlOwotICAgIGludCB0YXJnZXRfaWQ7Ci0gICAgdW5zaWduZWQgaW50
IGRpc3BsYXlfbWFzazsKLSAgICB1bnNpZ25lZCBpbnQgYXR0cmlidXRlOwotfSBYTlZDdHJsU3Ry
aW5nQXR0cmlidXRlQ2hhbmdlZEV2ZW50VGFyZ2V0OwotCi10eXBlZGVmIHVuaW9uCi17Ci0gICAg
aW50IHR5cGU7Ci0gICAgWE5WQ3RybFN0cmluZ0F0dHJpYnV0ZUNoYW5nZWRFdmVudFRhcmdldCBh
dHRyaWJ1dGVfY2hhbmdlZDsKLSAgICBsb25nIHBhZFsyNF07Ci19IFhOVkN0cmxTdHJpbmdFdmVu
dFRhcmdldDsKLQotLyoKLSAqIFhOVkN0cmxCaW5hcnlFdmVudFRhcmdldCBzdHJ1Y3R1cmUKLSAq
LwotCi10eXBlZGVmIHN0cnVjdAotewotICAgIGludCB0eXBlOwotICAgIHVuc2lnbmVkIGxvbmcg
c2VyaWFsOwotICAgIEJvb2wgc2VuZF9ldmVudDsgLyogYWx3YXlzIEZBTFNFLCB3ZSBkb24ndCBh
bGxvdyBzZW5kX2V2ZW50cyAqLwotICAgIERpc3BsYXkgKmRpc3BsYXk7Ci0gICAgVGltZSB0aW1l
OwotICAgIGludCB0YXJnZXRfdHlwZTsKLSAgICBpbnQgdGFyZ2V0X2lkOwotICAgIHVuc2lnbmVk
IGludCBkaXNwbGF5X21hc2s7Ci0gICAgdW5zaWduZWQgaW50IGF0dHJpYnV0ZTsKLX0gWE5WQ3Ry
bEJpbmFyeUF0dHJpYnV0ZUNoYW5nZWRFdmVudFRhcmdldDsKLQotdHlwZWRlZiB1bmlvbgotewot
ICAgIGludCB0eXBlOwotICAgIFhOVkN0cmxCaW5hcnlBdHRyaWJ1dGVDaGFuZ2VkRXZlbnRUYXJn
ZXQgYXR0cmlidXRlX2NoYW5nZWQ7Ci0gICAgbG9uZyBwYWRbMjRdOwotfSBYTlZDdHJsQmluYXJ5
RXZlbnRUYXJnZXQ7Ci0KLSNpZiBkZWZpbmVkIF9fY3BsdXNwbHVzCi19IC8qIGV4dGVybiAiQyIg
Ki8KLSNlbmRpZgotCi0jZW5kaWYgLyogX19OVkNUUkxMSUJfSCAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvUkVBRE1FLmFu
Z2xlIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwv
UkVBRE1FLmFuZ2xlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMmI5YmQwYWFjZC4u
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5
L2xpYlhOVkN0cmwvUkVBRE1FLmFuZ2xlCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAot
TmFtZTogTlZpZGlhIENvbnRyb2wgWCBFeHRlbnNpb24gTGlicmFyeQotU2hvcnQgTmFtZTogbGli
WE5WQ3RybAotVVJMOiBodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvfmFwbGF0dG5lci9udmlk
aWEtc2V0dGluZ3MvCi1WZXJzaW9uOiB1bmtub3duCi1EYXRlOiAyMDA4Ci1MaWNlbnNlOiBNSVQK
LVNlY3VyaXR5IENyaXRpY2FsOiBubwotCi1EZXNjcmlwdGlvbjoKLVRoaXMgcGFja2FnZSBwcm92
aWRlcyBhY2Nlc3MgdG8gTlZpZGlhIENvbnRyb2wgWCBFeHRlbnNpb24uIEl0IGlzIHVzZWQgdG8g
ZGV0ZXJtaW5lIHRoZSB2ZXJzaW9uIG9mIHRoZSBOVklESUEgZHJpdmVyIGluIHVzZS4KLQotVGhl
IGN1cnJlbnQgdmVyc2lvbiBpcyBwdWxsZWQgZnJvbSBudmlkaWEtc2V0dGluZ3MtMzAyLjE3Lgot
Ci1Mb2NhbCBNb2RpZmljYXRpb25zOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvbGliWE5WQ3RybC5neXAgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvbGliWE5WQ3RybC9saWJYTlZDdHJsLmd5cApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmYwZWUyZjk3ZTMuLjAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9saWJYTlZDdHJsL2xp
YlhOVkN0cmwuZ3lwCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotIyBDb3B5cmlnaHQg
KGMpIDIwMTYgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQotIyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotCi17Ci0gICAg
J3RhcmdldHMnOgotICAgIFt7Ci0gICAgICAgICd0YXJnZXRfbmFtZSc6ICdsaWJYTlZDdHJsJywK
LSAgICAgICAgJ3R5cGUnOiAnc3RhdGljX2xpYnJhcnknLAotICAgICAgICAnc291cmNlcyc6Ci0g
ICAgICAgIFsKLSAgICAgICAgICAgICdOVkN0cmwuYycsCi0gICAgICAgICAgICAnTlZDdHJsLmgn
LAotICAgICAgICAgICAgJ05WQ3RybExpYi5oJywKLSAgICAgICAgICAgICdudl9jb250cm9sLmgn
LAotICAgICAgICBdLAotICAgIH1dLAotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvbnZfY29udHJvbC5oIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvbnZfY29udHJvbC5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDIzYzliNThjZC4uMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L2xpYlhOVkN0cmwvbnZf
Y29udHJvbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKGMpIDIwMDggTlZJRElBLCBDb3Jwb3JhdGlvbgotICoKLSAqIFBlcm1pc3Npb24gaXMgaGVy
ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNv
cHkKLSAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl
cyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCi0gKiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy
ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCi0gKiB0
byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu
c2UsIGFuZC9vciBzZWxsCi0gKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0
IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKLSAqIGZ1cm5pc2hlZCB0byBkbyBzbywg
c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Ci0gKgotICogVGhlIGFib3ZlIGNv
cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUg
bmV4dAotICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1
YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQotICogU29mdHdhcmUuCi0gKgotICogVEhFIFNPRlRX
QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY
UFJFU1MgT1IKLSAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRQotICog
QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN
QUdFUyBPUiBPVEhFUgotICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U
UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKLSAqIE9VVCBPRiBPUiBJTiBD
T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1Mg
SU4gVEhFCi0gKiBTT0ZUV0FSRS4KLSAqCi0gKgotICogTlYtQ09OVFJPTCBQcm90b2NvbCBWZXJz
aW9uIEhpc3RvcnkKLSAqCi0gKiAxLjAgLSAxLjUgICBOVklESUEgSW50ZXJuYWwgZGV2ZWxvcG1l
bnQgdmVyc2lvbnMKLSAqIDEuNiAgICAgICAgIEluaXRpYWwgcHVibGljIHZlcnNpb24KLSAqIDEu
NyAgICAgICAgIEFkZGVkIFF1ZXJ5QmluYXJ5RGF0YSByZXF1ZXN0Ci0gKiAxLjggICAgICAgICBB
ZGRlZCBUYXJnZXRUeXBlcwotICogMS45ICAgICAgICAgQWRkZWQgUXVlcnlUYXJnZXRDb3VudCBy
ZXF1ZXN0Ci0gKiAxLjEwICAgICAgICBGaXhlZCB0YXJnZXQgdHlwZS9pZCBieXRlIG9yZGVyaW5n
IGZvciBjb21wYXRpYmlsaXR5IHdpdGgKLSAqICAgICAgICAgICAgIHByZS0xLjggTlYtQ09OVFJP
TCBjbGllbnRzCi0gKiAxLjExICAgICAgICBOVklESUEgSW50ZXJuYWwgZGV2ZWxvcG1lbnQgdmVy
c2lvbgotICogMS4xMiAgICAgICAgQWRkZWQgU3RyaW5nT3BlcmF0aW9uIHJlcXVlc3QKLSAqIDEu
MTMgICAgICAgIE5WSURJQSBJbnRlcm5hbCBkZXZlbG9wbWVudCB2ZXJzaW9uCi0gKiAxLjE0ICAg
ICAgICBGaXhlZCBhbiBOVl9DVFJMX0JJTkFSWV9EQVRBX01PREVMSU5FUyBkb3VibGUgc2NhbiBt
b2RlbGluZQotICogICAgICAgICAgICAgcmVwb3J0aW5nIGJ1ZyAodnN5bmNzdGFydCwgdnN5bmNl
bmQsIGFuZCB2dG90YWwgd2VyZSBpbmNvcnJlY3RseQotICogICAgICAgICAgICAgZG91YmxlZCkK
LSAqIDEuMTUgICAgICAgIEFkZGVkIEFWQUlMQUJJTElUWV9UQVJHRVRfQVRUUklCVVRFX0NIQU5H
RURfRVZFTlQKLSAqIDEuMTYgICAgICAgIEFkZGVkIFRBUkdFVF9TVFJJTkdfQVRUUklCVVRFX0NI
QU5HRURfRVZFTlQKLSAqIDEuMTcgICAgICAgIEFkZGVkIFRBUkdFVF9CSU5BUllfQVRUUklCVVRF
X0NIQU5HRURfRVZFTlQKLSAqIDEuMTggICAgICAgIFVwZGF0ZWQgUXVlcnlUYXJnZXRDb3VudCB0
byByZXR1cm4gYSBjb3VudCBvZiAwLCByYXRoZXIgdGhhbgotICogICAgICAgICAgICAgQmFkTWF0
Y2gsIGlmIGFuIHVua25vd24gVGFyZ2V0VHlwZSBpcyBzcGVjaWZpZWQKLSAqIDEuMTkgICAgICAg
IEFkZGVkIFRhcmdldFR5cGUgc3VwcG9ydCBmb3IgU2V0QXR0cmlidXRlQW5kR2V0U3RhdHVzIGFu
ZAotICogICAgICAgICAgICAgU2V0U3RyaW5nQXR0cmlidXRlIHJlcXVlc3RzCi0gKiAxLjIwICAg
ICAgICBBZGRlZCBDT09MRVIgVGFyZ2V0VHlwZQotICogMS4yMSAgICAgICAgQWRkZWQgaW5pdGlh
bCA2NC1iaXQgaW50ZWdlciBhdHRyaWJ1dGUgc3VwcG9ydCAocmVhZC1vbmx5KQotICogMS4yMiAg
ICAgICAgQWRkZWQgWF9udkN0cmxRdWVyeVZhbGlkU3RyaW5nQXR0cmlidXRlVmFsdWVzIHRvIGNo
ZWNrCi0gKiAgICAgICAgICAgICBzdHJpbmcgYXR0cmlidXRlIHBlcm1pc3Npb25zLgotICogMS4y
MyAgICAgICAgQWRkZWQgU0VOU09SIFRhcmdldFR5cGUKLSAqIDEuMjQgICAgICAgIEZpeGVkIGEg
YnVnIHdoZXJlIFNMSV9NT1NBSUNfTU9ERV9BVkFJTEFCTEUgYXR0cmlidXRlIHdvdWxkCi0gKiAg
ICAgICAgICAgICByZXBvcnQgZmFsc2UgcG9zaXRpdmVzIHZpYSB0aGUgR1BVIGFuZCBYIHNjcmVl
biB0YXJnZXQgdHlwZXMKLSAqIDEuMjUgICAgICAgIEFkZGVkIDNEX1ZJU0lPTl9QUk9fVFJBTlND
RUlWRVIgVGFyZ2V0VHlwZQotICogMS4yNiAgICAgICAgQWRkZWQgWE5WQ1RSTFF1ZXJ5WFhYQXR0
cmlidXRlUGVybWlzc2lvbnMuCi0gKiAxLjI3ICAgICAgICBBZGRlZCBESVNQTEFZIFRhcmdldFR5
cGUKLSAqIDEuMjggICAgICAgIEFkZGVkIE5WX0NUUkxfQ1VSUkVOVF9NRVRBTU9ERV9JRDogY2xp
ZW50cyBzaG91bGQgdXNlIHRoaXMKLSAqICAgICAgICAgICAgIGF0dHJpYnV0ZSB0byBzd2l0Y2gg
TWV0YU1vZGVzLCByYXRoZXIgdGhhbiBwYXNzIHRoZSBNZXRhTW9kZSBJRAotICogICAgICAgICAg
ICAgdGhyb3VnaCB0aGUgUlJTZXRTY3JlZW5Db25maWcgcHJvdG9jb2wgcmVxdWVzdC4KLSAqLwot
Ci0jaWZuZGVmIF9fTlZDT05UUk9MX0gKLSNkZWZpbmUgX19OVkNPTlRST0xfSAotCi0jZGVmaW5l
IE5WX0NPTlRST0xfRVJST1JTIDAKLSNkZWZpbmUgTlZfQ09OVFJPTF9FVkVOVFMgNQotI2RlZmlu
ZSBOVl9DT05UUk9MX05BTUUgIk5WLUNPTlRST0wiCi0KLSNkZWZpbmUgTlZfQ09OVFJPTF9NQUpP
UiAxCi0jZGVmaW5lIE5WX0NPTlRST0xfTUlOT1IgMjgKLQotI2RlZmluZSBYX252Q3RybFF1ZXJ5
RXh0ZW5zaW9uIDAKLSNkZWZpbmUgWF9udkN0cmxJc052IDEKLSNkZWZpbmUgWF9udkN0cmxRdWVy
eUF0dHJpYnV0ZSAyCi0jZGVmaW5lIFhfbnZDdHJsU2V0QXR0cmlidXRlIDMKLSNkZWZpbmUgWF9u
dkN0cmxRdWVyeVN0cmluZ0F0dHJpYnV0ZSA0Ci0jZGVmaW5lIFhfbnZDdHJsUXVlcnlWYWxpZEF0
dHJpYnV0ZVZhbHVlcyA1Ci0jZGVmaW5lIFhfbnZDdHJsU2VsZWN0Tm90aWZ5IDYKLSNkZWZpbmUg
WF9udkN0cmxTZXRHdm9Db2xvckNvbnZlcnNpb25EZXByZWNhdGVkIDcKLSNkZWZpbmUgWF9udkN0
cmxRdWVyeUd2b0NvbG9yQ29udmVyc2lvbkRlcHJlY2F0ZWQgOAotI2RlZmluZSBYX252Q3RybFNl
dFN0cmluZ0F0dHJpYnV0ZSA5Ci0vKiBTVFVCIFhfbnZDdHJsUXVlcnlERENDSUx1dFNpemUgICAg
ICAgICAgICAgICAgICAgMTAgKi8KLS8qIFNUVUIgWF9udkN0cmxRdWVyeUREQ0NJU2luZ2xlUG9p
bnRMdXRPcGVyYXRpb24gICAxMSAqLwotLyogU1RVQiBYX252Q3RybFNldEREQ0NJU2luZ2xlUG9p
bnRMdXRPcGVyYXRpb24gICAgIDEyICovCi0vKiBTVFVCIFhfbnZDdHJsUXVlcnlERENDSUJsb2Nr
THV0T3BlcmF0aW9uICAgICAgICAgMTMgKi8KLS8qIFNUVUIgWF9udkN0cmxTZXRERENDSUJsb2Nr
THV0T3BlcmF0aW9uICAgICAgICAgICAxNCAqLwotLyogU1RVQiBYX252Q3RybFNldEREQ0NJUmVt
b3RlUHJvY2VkdXJlQ2FsbCAgICAgICAgIDE1ICovCi0vKiBTVFVCIFhfbnZDdHJsUXVlcnlEREND
SURpc3BsYXlDb250cm9sbGVyVHlwZSAgICAgMTYgKi8KLS8qIFNUVUIgWF9udkN0cmxRdWVyeURE
Q0NJQ2FwYWJpbGl0aWVzICAgICAgICAgICAgICAxNyAqLwotLyogU1RVQiBYX252Q3RybFF1ZXJ5
RERDQ0lUaW1pbmdSZXBvcnQgICAgICAgICAgICAgIDE4ICovCi0jZGVmaW5lIFhfbnZDdHJsU2V0
QXR0cmlidXRlQW5kR2V0U3RhdHVzIDE5Ci0jZGVmaW5lIFhfbnZDdHJsUXVlcnlCaW5hcnlEYXRh
IDIwCi0jZGVmaW5lIFhfbnZDdHJsU2V0R3ZvQ29sb3JDb252ZXJzaW9uIDIxCi0jZGVmaW5lIFhf
bnZDdHJsUXVlcnlHdm9Db2xvckNvbnZlcnNpb24gMjIKLSNkZWZpbmUgWF9udkN0cmxTZWxlY3RU
YXJnZXROb3RpZnkgMjMKLSNkZWZpbmUgWF9udkN0cmxRdWVyeVRhcmdldENvdW50IDI0Ci0jZGVm
aW5lIFhfbnZDdHJsU3RyaW5nT3BlcmF0aW9uIDI1Ci0jZGVmaW5lIFhfbnZDdHJsUXVlcnlWYWxp
ZEF0dHJpYnV0ZVZhbHVlczY0IDI2Ci0jZGVmaW5lIFhfbnZDdHJsUXVlcnlBdHRyaWJ1dGU2NCAy
NwotI2RlZmluZSBYX252Q3RybFF1ZXJ5VmFsaWRTdHJpbmdBdHRyaWJ1dGVWYWx1ZXMgMjgKLSNk
ZWZpbmUgWF9udkN0cmxRdWVyeUF0dHJpYnV0ZVBlcm1pc3Npb25zIDI5Ci0jZGVmaW5lIFhfbnZD
dHJsUXVlcnlTdHJpbmdBdHRyaWJ1dGVQZXJtaXNzaW9ucyAzMAotI2RlZmluZSBYX252Q3RybFF1
ZXJ5QmluYXJ5RGF0YUF0dHJpYnV0ZVBlcm1pc3Npb25zIDMxCi0jZGVmaW5lIFhfbnZDdHJsUXVl
cnlTdHJpbmdPcGVyYXRpb25BdHRyaWJ1dGVQZXJtaXNzaW9ucyAzMgotCi0jZGVmaW5lIFhfbnZD
dHJsTGFzdFJlcXVlc3QgKFhfbnZDdHJsUXVlcnlTdHJpbmdPcGVyYXRpb25BdHRyaWJ1dGVQZXJt
aXNzaW9ucyArIDEpCi0KLS8qIERlZmluZSAzMiBiaXQgZmxvYXRzICovCi10eXBlZGVmIGZsb2F0
IEZMT0FUMzI7Ci0jaWZuZGVmIEYzMgotI2RlZmluZSBGMzIKLSNlbmRpZgotCi10eXBlZGVmIHN0
cnVjdAotewotICAgIENBUkQ4IHJlcVR5cGU7Ci0gICAgQ0FSRDggbnZSZXFUeXBlOwotICAgIENB
UkQxNiBsZW5ndGggQjE2OwotfSB4bnZDdHJsUXVlcnlFeHRlbnNpb25SZXE7Ci0jZGVmaW5lIHN6
X3hudkN0cmxRdWVyeUV4dGVuc2lvblJlcSA0Ci0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgQllU
RSB0eXBlOyAvKiBYX1JlcGx5ICovCi0gICAgQ0FSRDggcGFkYjE7Ci0gICAgQ0FSRDE2IHNlcXVl
bmNlTnVtYmVyIEIxNjsKLSAgICBDQVJEMzIgbGVuZ3RoIEIzMjsKLSAgICBDQVJEMTYgbWFqb3Ig
QjE2OwotICAgIENBUkQxNiBtaW5vciBCMTY7Ci0gICAgQ0FSRDMyIHBhZGw0IEIzMjsKLSAgICBD
QVJEMzIgcGFkbDUgQjMyOwotICAgIENBUkQzMiBwYWRsNiBCMzI7Ci0gICAgQ0FSRDMyIHBhZGw3
IEIzMjsKLSAgICBDQVJEMzIgcGFkbDggQjMyOwotfSB4bnZDdHJsUXVlcnlFeHRlbnNpb25SZXBs
eTsKLSNkZWZpbmUgc3pfeG52Q3RybFF1ZXJ5RXh0ZW5zaW9uUmVwbHkgMzIKLQotdHlwZWRlZiBz
dHJ1Y3QKLXsKLSAgICBDQVJEOCByZXFUeXBlOwotICAgIENBUkQ4IG52UmVxVHlwZTsKLSAgICBD
QVJEMTYgbGVuZ3RoIEIxNjsKLSAgICBDQVJEMzIgc2NyZWVuIEIzMjsKLX0geG52Q3RybElzTnZS
ZXE7Ci0jZGVmaW5lIHN6X3hudkN0cmxJc052UmVxIDgKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAg
ICBCWVRFIHR5cGU7IC8qIFhfUmVwbHkgKi8KLSAgICBDQVJEOCBwYWRiMTsKLSAgICBDQVJEMTYg
c2VxdWVuY2VOdW1iZXIgQjE2OwotICAgIENBUkQzMiBsZW5ndGggQjMyOwotICAgIENBUkQzMiBp
c252IEIzMjsKLSAgICBDQVJEMzIgcGFkbDQgQjMyOwotICAgIENBUkQzMiBwYWRsNSBCMzI7Ci0g
ICAgQ0FSRDMyIHBhZGw2IEIzMjsKLSAgICBDQVJEMzIgcGFkbDcgQjMyOwotICAgIENBUkQzMiBw
YWRsOCBCMzI7Ci19IHhudkN0cmxJc052UmVwbHk7Ci0jZGVmaW5lIHN6X3hudkN0cmxJc052UmVw
bHkgMzIKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgICBDQVJEOCByZXFUeXBlOwotICAgIENBUkQ4
IG52UmVxVHlwZTsKLSAgICBDQVJEMTYgbGVuZ3RoIEIxNjsKLSAgICBDQVJEMzIgdGFyZ2V0X3R5
cGUgQjMyOwotfSB4bnZDdHJsUXVlcnlUYXJnZXRDb3VudFJlcTsKLSNkZWZpbmUgc3pfeG52Q3Ry
bFF1ZXJ5VGFyZ2V0Q291bnRSZXEgOAotCi10eXBlZGVmIHN0cnVjdAotewotICAgIEJZVEUgdHlw
ZTsgLyogWF9SZXBseSAqLwotICAgIENBUkQ4IHBhZGIxOwotICAgIENBUkQxNiBzZXF1ZW5jZU51
bWJlciBCMTY7Ci0gICAgQ0FSRDMyIGxlbmd0aCBCMzI7Ci0gICAgQ0FSRDMyIGNvdW50IEIzMjsK
LSAgICBDQVJEMzIgcGFkbDQgQjMyOwotICAgIENBUkQzMiBwYWRsNSBCMzI7Ci0gICAgQ0FSRDMy
IHBhZGw2IEIzMjsKLSAgICBDQVJEMzIgcGFkbDcgQjMyOwotICAgIENBUkQzMiBwYWRsOCBCMzI7
Ci19IHhudkN0cmxRdWVyeVRhcmdldENvdW50UmVwbHk7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVy
eVRhcmdldENvdW50UmVwbHkgMzIKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgICBDQVJEOCByZXFU
eXBlOwotICAgIENBUkQ4IG52UmVxVHlwZTsKLSAgICBDQVJEMTYgbGVuZ3RoIEIxNjsKLSAgICBD
QVJEMTYgdGFyZ2V0X2lkIEIxNjsgICAvKiBYIHNjcmVlbiBudW1iZXIgb3IgR1BVIG51bWJlciAq
LwotICAgIENBUkQxNiB0YXJnZXRfdHlwZSBCMTY7IC8qIFggc2NyZWVuIG9yIEdQVSAqLwotICAg
IENBUkQzMiBkaXNwbGF5X21hc2sgQjMyOwotICAgIENBUkQzMiBhdHRyaWJ1dGUgQjMyOwotfSB4
bnZDdHJsUXVlcnlBdHRyaWJ1dGVSZXE7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVyeUF0dHJpYnV0
ZVJlcSAxNgotCi10eXBlZGVmIHN0cnVjdAotewotICAgIEJZVEUgdHlwZTsKLSAgICBCWVRFIHBh
ZDA7Ci0gICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyIEIxNjsKLSAgICBDQVJEMzIgbGVuZ3RoIEIz
MjsKLSAgICBDQVJEMzIgZmxhZ3MgQjMyOwotICAgIElOVDMyIHZhbHVlIEIzMjsKLSAgICBDQVJE
MzIgcGFkNCBCMzI7Ci0gICAgQ0FSRDMyIHBhZDUgQjMyOwotICAgIENBUkQzMiBwYWQ2IEIzMjsK
LSAgICBDQVJEMzIgcGFkNyBCMzI7Ci19IHhudkN0cmxRdWVyeUF0dHJpYnV0ZVJlcGx5OwotI2Rl
ZmluZSBzel94bnZDdHJsUXVlcnlBdHRyaWJ1dGVSZXBseSAzMgotCi10eXBlZGVmIHN0cnVjdAot
ewotICAgIEJZVEUgdHlwZTsKLSAgICBCWVRFIHBhZDA7Ci0gICAgQ0FSRDE2IHNlcXVlbmNlTnVt
YmVyIEIxNjsKLSAgICBDQVJEMzIgbGVuZ3RoIEIzMjsKLSAgICBDQVJEMzIgZmxhZ3MgQjMyOwot
ICAgIENBUkQzMiBwYWQzIEIzMjsKLSAgICBpbnQ2NF90IHZhbHVlXzY0OwotICAgIENBUkQzMiBw
YWQ2IEIzMjsKLSAgICBDQVJEMzIgcGFkNyBCMzI7Ci19IHhudkN0cmxRdWVyeUF0dHJpYnV0ZTY0
UmVwbHk7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVyeUF0dHJpYnV0ZTY0UmVwbHkgMzIKLQotdHlw
ZWRlZiBzdHJ1Y3QKLXsKLSAgICBDQVJEOCByZXFUeXBlOwotICAgIENBUkQ4IG52UmVxVHlwZTsK
LSAgICBDQVJEMTYgbGVuZ3RoIEIxNjsKLSAgICBDQVJEMTYgdGFyZ2V0X2lkIEIxNjsKLSAgICBD
QVJEMTYgdGFyZ2V0X3R5cGUgQjE2OwotICAgIENBUkQzMiBkaXNwbGF5X21hc2sgQjMyOwotICAg
IENBUkQzMiBhdHRyaWJ1dGUgQjMyOwotICAgIElOVDMyIHZhbHVlIEIzMjsKLX0geG52Q3RybFNl
dEF0dHJpYnV0ZVJlcTsKLSNkZWZpbmUgc3pfeG52Q3RybFNldEF0dHJpYnV0ZVJlcSAyMAotCi10
eXBlZGVmIHN0cnVjdAotewotICAgIENBUkQ4IHJlcVR5cGU7Ci0gICAgQ0FSRDggbnZSZXFUeXBl
OwotICAgIENBUkQxNiBsZW5ndGggQjE2OwotICAgIENBUkQxNiB0YXJnZXRfaWQgQjE2OwotICAg
IENBUkQxNiB0YXJnZXRfdHlwZSBCMTY7Ci0gICAgQ0FSRDMyIGRpc3BsYXlfbWFzayBCMzI7Ci0g
ICAgQ0FSRDMyIGF0dHJpYnV0ZSBCMzI7Ci0gICAgSU5UMzIgdmFsdWUgQjMyOwotfSB4bnZDdHJs
U2V0QXR0cmlidXRlQW5kR2V0U3RhdHVzUmVxOwotI2RlZmluZSBzel94bnZDdHJsU2V0QXR0cmli
dXRlQW5kR2V0U3RhdHVzUmVxIDIwCi0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgQllURSB0eXBl
OwotICAgIEJZVEUgcGFkMDsKLSAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgQjE2OwotICAgIENB
UkQzMiBsZW5ndGggQjMyOwotICAgIENBUkQzMiBmbGFncyBCMzI7Ci0gICAgQ0FSRDMyIHBhZDMg
QjMyOwotICAgIENBUkQzMiBwYWQ0IEIzMjsKLSAgICBDQVJEMzIgcGFkNSBCMzI7Ci0gICAgQ0FS
RDMyIHBhZDYgQjMyOwotICAgIENBUkQzMiBwYWQ3IEIzMjsKLX0geG52Q3RybFNldEF0dHJpYnV0
ZUFuZEdldFN0YXR1c1JlcGx5OwotI2RlZmluZSBzel94bnZDdHJsU2V0QXR0cmlidXRlQW5kR2V0
U3RhdHVzUmVwbHkgMzIKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgICBDQVJEOCByZXFUeXBlOwot
ICAgIENBUkQ4IG52UmVxVHlwZTsKLSAgICBDQVJEMTYgbGVuZ3RoIEIxNjsKLSAgICBDQVJEMTYg
dGFyZ2V0X2lkIEIxNjsgICAvKiBYIHNjcmVlbiBudW1iZXIgb3IgR1BVIG51bWJlciAqLwotICAg
IENBUkQxNiB0YXJnZXRfdHlwZSBCMTY7IC8qIFggc2NyZWVuIG9yIEdQVSAqLwotICAgIENBUkQz
MiBkaXNwbGF5X21hc2sgQjMyOwotICAgIENBUkQzMiBhdHRyaWJ1dGUgQjMyOwotfSB4bnZDdHJs
UXVlcnlTdHJpbmdBdHRyaWJ1dGVSZXE7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVyeVN0cmluZ0F0
dHJpYnV0ZVJlcSAxNgotCi10eXBlZGVmIHN0cnVjdAotewotICAgIEJZVEUgdHlwZTsKLSAgICBC
WVRFIHBhZDA7Ci0gICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyIEIxNjsKLSAgICBDQVJEMzIgbGVu
Z3RoIEIzMjsKLSAgICBDQVJEMzIgZmxhZ3MgQjMyOwotICAgIENBUkQzMiBuIEIzMjsgLyogTGVu
Z3RoIG9mIHN0cmluZyAqLwotICAgIENBUkQzMiBwYWQ0IEIzMjsKLSAgICBDQVJEMzIgcGFkNSBC
MzI7Ci0gICAgQ0FSRDMyIHBhZDYgQjMyOwotICAgIENBUkQzMiBwYWQ3IEIzMjsKLX0geG52Q3Ry
bFF1ZXJ5U3RyaW5nQXR0cmlidXRlUmVwbHk7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVyeVN0cmlu
Z0F0dHJpYnV0ZVJlcGx5IDMyCi0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgQ0FSRDggcmVxVHlw
ZTsKLSAgICBDQVJEOCBudlJlcVR5cGU7Ci0gICAgQ0FSRDE2IGxlbmd0aCBCMTY7Ci0gICAgQ0FS
RDE2IHRhcmdldF9pZCBCMTY7Ci0gICAgQ0FSRDE2IHRhcmdldF90eXBlIEIxNjsKLSAgICBDQVJE
MzIgZGlzcGxheV9tYXNrIEIzMjsKLSAgICBDQVJEMzIgYXR0cmlidXRlIEIzMjsKLSAgICBDQVJE
MzIgbnVtX2J5dGVzIEIzMjsKLX0geG52Q3RybFNldFN0cmluZ0F0dHJpYnV0ZVJlcTsKLSNkZWZp
bmUgc3pfeG52Q3RybFNldFN0cmluZ0F0dHJpYnV0ZVJlcSAyMAotCi10eXBlZGVmIHN0cnVjdAot
ewotICAgIEJZVEUgdHlwZTsKLSAgICBCWVRFIHBhZDA7Ci0gICAgQ0FSRDE2IHNlcXVlbmNlTnVt
YmVyIEIxNjsKLSAgICBDQVJEMzIgbGVuZ3RoIEIzMjsKLSAgICBDQVJEMzIgZmxhZ3MgQjMyOwot
ICAgIENBUkQzMiBwYWQzIEIzMjsKLSAgICBDQVJEMzIgcGFkNCBCMzI7Ci0gICAgQ0FSRDMyIHBh
ZDUgQjMyOwotICAgIENBUkQzMiBwYWQ2IEIzMjsKLSAgICBDQVJEMzIgcGFkNyBCMzI7Ci19IHhu
dkN0cmxTZXRTdHJpbmdBdHRyaWJ1dGVSZXBseTsKLSNkZWZpbmUgc3pfeG52Q3RybFNldFN0cmlu
Z0F0dHJpYnV0ZVJlcGx5IDMyCi0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgQ0FSRDggcmVxVHlw
ZTsKLSAgICBDQVJEOCBudlJlcVR5cGU7Ci0gICAgQ0FSRDE2IGxlbmd0aCBCMTY7Ci0gICAgQ0FS
RDE2IHRhcmdldF9pZCBCMTY7ICAgLyogWCBzY3JlZW4gbnVtYmVyIG9yIEdQVSBudW1iZXIgKi8K
LSAgICBDQVJEMTYgdGFyZ2V0X3R5cGUgQjE2OyAvKiBYIHNjcmVlbiBvciBHUFUgKi8KLSAgICBD
QVJEMzIgZGlzcGxheV9tYXNrIEIzMjsKLSAgICBDQVJEMzIgYXR0cmlidXRlIEIzMjsKLX0geG52
Q3RybFF1ZXJ5VmFsaWRBdHRyaWJ1dGVWYWx1ZXNSZXE7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVy
eVZhbGlkQXR0cmlidXRlVmFsdWVzUmVxIDE2Ci0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgQllU
RSB0eXBlOwotICAgIEJZVEUgcGFkMDsKLSAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgQjE2Owot
ICAgIENBUkQzMiBsZW5ndGggQjMyOwotICAgIENBUkQzMiBmbGFncyBCMzI7Ci0gICAgSU5UMzIg
YXR0cl90eXBlIEIzMjsKLSAgICBJTlQzMiBtaW4gQjMyOwotICAgIElOVDMyIG1heCBCMzI7Ci0g
ICAgQ0FSRDMyIGJpdHMgQjMyOwotICAgIENBUkQzMiBwZXJtcyBCMzI7Ci19IHhudkN0cmxRdWVy
eVZhbGlkQXR0cmlidXRlVmFsdWVzUmVwbHk7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVyeVZhbGlk
QXR0cmlidXRlVmFsdWVzUmVwbHkgMzIKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgICBCWVRFIHR5
cGU7Ci0gICAgQllURSBwYWQwOwotICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciBCMTY7Ci0gICAg
Q0FSRDMyIGxlbmd0aCBCMzI7Ci0gICAgQ0FSRDMyIGZsYWdzIEIzMjsKLSAgICBJTlQzMiBhdHRy
X3R5cGUgQjMyOwotICAgIGludDY0X3QgbWluXzY0OwotICAgIGludDY0X3QgbWF4XzY0OwotICAg
IENBUkQ2NCBiaXRzXzY0OwotICAgIENBUkQzMiBwZXJtcyBCMzI7Ci0gICAgQ0FSRDMyIHBhZDEg
QjMyOwotfSB4bnZDdHJsUXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlczY0UmVwbHk7Ci0jZGVmaW5l
IHN6X3hudkN0cmxRdWVyeVZhbGlkQXR0cmlidXRlVmFsdWVzNjRSZXBseSA0OAotI2RlZmluZSBz
el94bnZDdHJsUXVlcnlWYWxpZEF0dHJpYnV0ZVZhbHVlczY0UmVwbHlfZXh0cmEgKCg0OCAtIDMy
KSA+PiAyKQotCi10eXBlZGVmIHN0cnVjdAotewotICAgIENBUkQ4IHJlcVR5cGU7Ci0gICAgQ0FS
RDggbnZSZXFUeXBlOwotICAgIENBUkQxNiBsZW5ndGggQjE2OwotICAgIENBUkQzMiBhdHRyaWJ1
dGUgQjMyOwotfSB4bnZDdHJsUXVlcnlBdHRyaWJ1dGVQZXJtaXNzaW9uc1JlcTsKLSNkZWZpbmUg
c3pfeG52Q3RybFF1ZXJ5QXR0cmlidXRlUGVybWlzc2lvbnNSZXEgOAotCi10eXBlZGVmIHN0cnVj
dAotewotICAgIEJZVEUgdHlwZTsKLSAgICBCWVRFIHBhZDA7Ci0gICAgQ0FSRDE2IHNlcXVlbmNl
TnVtYmVyIEIxNjsKLSAgICBDQVJEMzIgbGVuZ3RoIEIzMjsKLSAgICBDQVJEMzIgZmxhZ3MgQjMy
OwotICAgIElOVDMyIGF0dHJfdHlwZSBCMzI7Ci0gICAgQ0FSRDMyIHBlcm1zIEIzMjsKLSAgICBD
QVJEMzIgcGFkNSBCMzI7Ci0gICAgQ0FSRDMyIHBhZDYgQjMyOwotICAgIENBUkQzMiBwYWQ3IEIz
MjsKLSAgICBDQVJEMzIgcGFkOCBCMzI7Ci19IHhudkN0cmxRdWVyeUF0dHJpYnV0ZVBlcm1pc3Np
b25zUmVwbHk7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVyeUF0dHJpYnV0ZVBlcm1pc3Npb25zUmVw
bHkgMzIKLQotLyogU2V0IEdWTyBDb2xvciBDb252ZXJzaW9uIHJlcXVlc3QgKGRlcHJlY2F0ZWQp
ICovCi10eXBlZGVmIHN0cnVjdAotewotICAgIENBUkQ4IHJlcVR5cGU7Ci0gICAgQ0FSRDggbnZS
ZXFUeXBlOwotICAgIENBUkQxNiBsZW5ndGggQjE2OwotICAgIENBUkQzMiBzY3JlZW4gQjMyOwot
ICAgIEZMT0FUMzIgcm93MV9jb2wxIEYzMjsKLSAgICBGTE9BVDMyIHJvdzFfY29sMiBGMzI7Ci0g
ICAgRkxPQVQzMiByb3cxX2NvbDMgRjMyOwotICAgIEZMT0FUMzIgcm93MV9jb2w0IEYzMjsKLSAg
ICBGTE9BVDMyIHJvdzJfY29sMSBGMzI7Ci0gICAgRkxPQVQzMiByb3cyX2NvbDIgRjMyOwotICAg
IEZMT0FUMzIgcm93Ml9jb2wzIEYzMjsKLSAgICBGTE9BVDMyIHJvdzJfY29sNCBGMzI7Ci0gICAg
RkxPQVQzMiByb3czX2NvbDEgRjMyOwotICAgIEZMT0FUMzIgcm93M19jb2wyIEYzMjsKLSAgICBG
TE9BVDMyIHJvdzNfY29sMyBGMzI7Ci0gICAgRkxPQVQzMiByb3czX2NvbDQgRjMyOwotfSB4bnZD
dHJsU2V0R3ZvQ29sb3JDb252ZXJzaW9uRGVwcmVjYXRlZFJlcTsKLSNkZWZpbmUgc3pfeG52Q3Ry
bFNldEd2b0NvbG9yQ29udmVyc2lvbkRlcHJlY2F0ZWRSZXEgNTYKLQotLyogUXVlcnkgR1ZPIENv
bG9yIENvbnZlcnNpb24gcmVxdWVzdCAoZGVwcmVjYXRlZCkgKi8KLXR5cGVkZWYgc3RydWN0Ci17
Ci0gICAgQ0FSRDggcmVxVHlwZTsKLSAgICBDQVJEOCBudlJlcVR5cGU7Ci0gICAgQ0FSRDE2IGxl
bmd0aCBCMTY7Ci0gICAgQ0FSRDMyIHNjcmVlbiBCMzI7Ci19IHhudkN0cmxRdWVyeUd2b0NvbG9y
Q29udmVyc2lvbkRlcHJlY2F0ZWRSZXE7Ci0jZGVmaW5lIHN6X3hudkN0cmxRdWVyeUd2b0NvbG9y
Q29udmVyc2lvbkRlcHJlY2F0ZWRSZXEgOAotCi0vKiBRdWVyeSBHVk8gQ29sb3IgQ29udmVyc2lv
biByZXBseSAoZGVwcmVjYXRlZCkgKi8KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgQllURSB0eXBl
OyAvKiBYX1JlcGx5ICovCi0gICAgQllURSBwYWQwOwotICAgIENBUkQxNiBzZXF1ZW5jZU51bWJl
ciBCMTY7Ci0gICAgQ0FSRDMyIGxlbmd0aCBCMzI7Ci0gICAgQ0FSRDMyIHBhZDMgQjMyOwotICAg
IENBUkQzMiBwYWQ0IEIzMjsKLSAgICBDQVJEMzIgcGFkNSBCMzI7Ci0gICAgQ0FSRDMyIHBhZDYg
QjMyOwotICAgIENBUkQzMiBwYWQ3IEIzMjsKLSAgICBDQVJEMzIgcGFkOCBCMzI7Ci19IHhudkN0
cmxRdWVyeUd2b0NvbG9yQ29udmVyc2lvbkRlcHJlY2F0ZWRSZXBseTsKLSNkZWZpbmUgc3pfeG52
Q3RybFF1ZXJ5R3ZvQ29sb3JDb252ZXJzaW9uRGVwcmVjYXRlZFJlcGx5IDMyCi0KLS8qIFNldCBH
Vk8gQ29sb3IgQ29udmVyc2lvbiByZXF1ZXN0ICovCi10eXBlZGVmIHN0cnVjdAotewotICAgIENB
UkQ4IHJlcVR5cGU7Ci0gICAgQ0FSRDggbnZSZXFUeXBlOwotICAgIENBUkQxNiBsZW5ndGggQjE2
OwotICAgIENBUkQzMiBzY3JlZW4gQjMyOwotCi0gICAgRkxPQVQzMiBjc2NNYXRyaXhfeV9yIEYz
MjsKLSAgICBGTE9BVDMyIGNzY01hdHJpeF95X2cgRjMyOwotICAgIEZMT0FUMzIgY3NjTWF0cml4
X3lfYiBGMzI7Ci0KLSAgICBGTE9BVDMyIGNzY01hdHJpeF9jcl9yIEYzMjsKLSAgICBGTE9BVDMy
IGNzY01hdHJpeF9jcl9nIEYzMjsKLSAgICBGTE9BVDMyIGNzY01hdHJpeF9jcl9iIEYzMjsKLQot
ICAgIEZMT0FUMzIgY3NjTWF0cml4X2NiX3IgRjMyOwotICAgIEZMT0FUMzIgY3NjTWF0cml4X2Ni
X2cgRjMyOwotICAgIEZMT0FUMzIgY3NjTWF0cml4X2NiX2IgRjMyOwotCi0gICAgRkxPQVQzMiBj
c2NPZmZzZXRfeSBGMzI7Ci0gICAgRkxPQVQzMiBjc2NPZmZzZXRfY3IgRjMyOwotICAgIEZMT0FU
MzIgY3NjT2Zmc2V0X2NiIEYzMjsKLQotICAgIEZMT0FUMzIgY3NjU2NhbGVfeSBGMzI7Ci0gICAg
RkxPQVQzMiBjc2NTY2FsZV9jciBGMzI7Ci0gICAgRkxPQVQzMiBjc2NTY2FsZV9jYiBGMzI7Ci0K
LX0geG52Q3RybFNldEd2b0NvbG9yQ29udmVyc2lvblJlcTsKLSNkZWZpbmUgc3pfeG52Q3RybFNl
dEd2b0NvbG9yQ29udmVyc2lvblJlcSA2OAotCi0vKiBRdWVyeSBHVk8gQ29sb3IgQ29udmVyc2lv
biByZXF1ZXN0ICovCi10eXBlZGVmIHN0cnVjdAotewotICAgIENBUkQ4IHJlcVR5cGU7Ci0gICAg
Q0FSRDggbnZSZXFUeXBlOwotICAgIENBUkQxNiBsZW5ndGggQjE2OwotICAgIENBUkQzMiBzY3Jl
ZW4gQjMyOwotfSB4bnZDdHJsUXVlcnlHdm9Db2xvckNvbnZlcnNpb25SZXE7Ci0jZGVmaW5lIHN6
X3hudkN0cmxRdWVyeUd2b0NvbG9yQ29udmVyc2lvblJlcSA4Ci0KLS8qIFF1ZXJ5IEdWTyBDb2xv
ciBDb252ZXJzaW9uIHJlcGx5ICovCi10eXBlZGVmIHN0cnVjdAotewotICAgIEJZVEUgdHlwZTsg
LyogWF9SZXBseSAqLwotICAgIEJZVEUgcGFkMDsKLSAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIg
QjE2OwotICAgIENBUkQzMiBsZW5ndGggQjMyOwotICAgIENBUkQzMiBwYWQzIEIzMjsKLSAgICBD
QVJEMzIgcGFkNCBCMzI7Ci0gICAgQ0FSRDMyIHBhZDUgQjMyOwotICAgIENBUkQzMiBwYWQ2IEIz
MjsKLSAgICBDQVJEMzIgcGFkNyBCMzI7Ci0gICAgQ0FSRDMyIHBhZDggQjMyOwotfSB4bnZDdHJs
UXVlcnlHdm9Db2xvckNvbnZlcnNpb25SZXBseTsKLSNkZWZpbmUgc3pfeG52Q3RybFF1ZXJ5R3Zv
Q29sb3JDb252ZXJzaW9uUmVwbHkgMzIKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgICBDQVJEOCBy
ZXFUeXBlOwotICAgIENBUkQ4IG52UmVxVHlwZTsKLSAgICBDQVJEMTYgbGVuZ3RoIEIxNjsKLSAg
ICBDQVJEMTYgdGFyZ2V0X2lkIEIxNjsgICAvKiBYIHNjcmVlbiBudW1iZXIgb3IgR1BVIG51bWJl
ciAqLwotICAgIENBUkQxNiB0YXJnZXRfdHlwZSBCMTY7IC8qIFggc2NyZWVuIG9yIEdQVSAqLwot
ICAgIENBUkQzMiBkaXNwbGF5X21hc2sgQjMyOwotICAgIENBUkQzMiBhdHRyaWJ1dGUgQjMyOwot
fSB4bnZDdHJsUXVlcnlCaW5hcnlEYXRhUmVxOwotI2RlZmluZSBzel94bnZDdHJsUXVlcnlCaW5h
cnlEYXRhUmVxIDE2Ci0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICAgQllURSB0eXBlOwotICAgIEJZ
VEUgcGFkMDsKLSAgICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgQjE2OwotICAgIENBUkQzMiBsZW5n
dGggQjMyOwotICAgIENBUkQzMiBmbGFncyBCMzI7Ci0gICAgQ0FSRDMyIG4gQjMyOwotICAgIENB
UkQzMiBwYWQ0IEIzMjsKLSAgICBDQVJEMzIgcGFkNSBCMzI7Ci0gICAgQ0FSRDMyIHBhZDYgQjMy
OwotICAgIENBUkQzMiBwYWQ3IEIzMjsKLX0geG52Q3RybFF1ZXJ5QmluYXJ5RGF0YVJlcGx5Owot
I2RlZmluZSBzel94bnZDdHJsUXVlcnlCaW5hcnlEYXRhUmVwbHkgMzIKLQotdHlwZWRlZiBzdHJ1
Y3QKLXsKLSAgICBDQVJEOCByZXFUeXBlOwotICAgIENBUkQ4IG52UmVxVHlwZTsKLSAgICBDQVJE
MTYgbGVuZ3RoIEIxNjsKLSAgICBDQVJEMzIgc2NyZWVuIEIzMjsKLSAgICBDQVJEMTYgbm90aWZ5
VHlwZSBCMTY7Ci0gICAgQ0FSRDE2IG9ub2ZmIEIxNjsKLX0geG52Q3RybFNlbGVjdE5vdGlmeVJl
cTsKLSNkZWZpbmUgc3pfeG52Q3RybFNlbGVjdE5vdGlmeVJlcSAxMgotCi10eXBlZGVmIHN0cnVj
dAotewotICAgIENBUkQ4IHJlcVR5cGU7Ci0gICAgQ0FSRDggbnZSZXFUeXBlOwotICAgIENBUkQx
NiBsZW5ndGggQjE2OwotICAgIENBUkQxNiB0YXJnZXRfaWQgQjE2OyAgIC8qIFggc2NyZWVuIG51
bWJlciBvciBHUFUgbnVtYmVyICovCi0gICAgQ0FSRDE2IHRhcmdldF90eXBlIEIxNjsgLyogWCBz
Y3JlZW4gb3IgR1BVICovCi0gICAgQ0FSRDMyIGRpc3BsYXlfbWFzayBCMzI7Ci0gICAgQ0FSRDMy
IGF0dHJpYnV0ZSBCMzI7Ci0gICAgQ0FSRDMyIG51bV9ieXRlcyBCMzI7IC8qIExlbmd0aCBvZiBz
dHJpbmcgKi8KLX0geG52Q3RybFN0cmluZ09wZXJhdGlvblJlcTsKLSNkZWZpbmUgc3pfeG52Q3Ry
bFN0cmluZ09wZXJhdGlvblJlcSAyMAotCi10eXBlZGVmIHN0cnVjdAotewotICAgIEJZVEUgdHlw
ZTsgLyogWF9SZXBseSAqLwotICAgIENBUkQ4IHBhZGIxOwotICAgIENBUkQxNiBzZXF1ZW5jZU51
bWJlciBCMTY7Ci0gICAgQ0FSRDMyIGxlbmd0aCBCMzI7Ci0gICAgQ0FSRDMyIHJldCBCMzI7Ci0g
ICAgQ0FSRDMyIG51bV9ieXRlcyBCMzI7IC8qIExlbmd0aCBvZiBzdHJpbmcgKi8KLSAgICBDQVJE
MzIgcGFkbDQgQjMyOwotICAgIENBUkQzMiBwYWRsNSBCMzI7Ci0gICAgQ0FSRDMyIHBhZGw2IEIz
MjsKLSAgICBDQVJEMzIgcGFkbDcgQjMyOwotfSB4bnZDdHJsU3RyaW5nT3BlcmF0aW9uUmVwbHk7
Ci0jZGVmaW5lIHN6X3hudkN0cmxTdHJpbmdPcGVyYXRpb25SZXBseSAzMgotCi10eXBlZGVmIHN0
cnVjdAotewotICAgIHVuaW9uCi0gICAgewotICAgICAgICBzdHJ1Y3QKLSAgICAgICAgewotICAg
ICAgICAgICAgQllURSB0eXBlOwotICAgICAgICAgICAgQllURSBkZXRhaWw7Ci0gICAgICAgICAg
ICBDQVJEMTYgc2VxdWVuY2VOdW1iZXIgQjE2OwotICAgICAgICB9IHU7Ci0gICAgICAgIHN0cnVj
dAotICAgICAgICB7Ci0gICAgICAgICAgICBCWVRFIHR5cGU7Ci0gICAgICAgICAgICBCWVRFIGRl
dGFpbDsKLSAgICAgICAgICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciBCMTY7Ci0gICAgICAgICAg
ICBDQVJEMzIgdGltZSBCMzI7Ci0gICAgICAgICAgICBDQVJEMzIgc2NyZWVuIEIzMjsKLSAgICAg
ICAgICAgIENBUkQzMiBkaXNwbGF5X21hc2sgQjMyOwotICAgICAgICAgICAgQ0FSRDMyIGF0dHJp
YnV0ZSBCMzI7Ci0gICAgICAgICAgICBDQVJEMzIgdmFsdWUgQjMyOwotICAgICAgICAgICAgQ0FS
RDMyIHBhZDAgQjMyOwotICAgICAgICAgICAgQ0FSRDMyIHBhZDEgQjMyOwotICAgICAgICB9IGF0
dHJpYnV0ZV9jaGFuZ2VkOwotICAgIH0gdTsKLX0geG52Y3RybEV2ZW50OwotCi0vKgotICogTGVh
dmUgdGFyZ2V0X3R5cGUgYmVmb3JlIHRhcmdldF9pZCBmb3IgdGhlCi0gKiB4bnZDdHJsU2VsZWN0
VGFyZ2V0Tm90aWZ5UmVxIGFuZCB4bnZjdHJsRXZlbnRUYXJnZXQKLSAqIHN0cnVjdHVyZXMsIGV2
ZW4gdGhvdWdoIG90aGVyIHJlcXVlc3QgcHJvdG9jb2wgc3RydWN0dXJlcwotICogc3RvcmUgdGFy
Z2V0X2lkIGluIHRoZSBib3R0b20gMTYtYml0cyBvZiB0aGUgc2Vjb25kIERXT1JEIG9mIHRoZQot
ICogc3RydWN0dXJlcy4gIFRoZSBldmVudC1yZWxhdGVkIHN0cnVjdHVyZXMgd2VyZSBhZGRlZCBp
biB2ZXJzaW9uCi0gKiAxLjgsIGFuZCBzbyB0aGVyZSBpcyBubyBwcmlvciB2ZXJzaW9uIHdpdGgg
d2hpY2ggdG8gbWFpbnRhaW4KLSAqIGNvbXBhdGliaWxpdHkuCi0gKi8KLXR5cGVkZWYgc3RydWN0
Ci17Ci0gICAgQ0FSRDggcmVxVHlwZTsKLSAgICBDQVJEOCBudlJlcVR5cGU7Ci0gICAgQ0FSRDE2
IGxlbmd0aCBCMTY7Ci0gICAgQ0FSRDE2IHRhcmdldF90eXBlIEIxNjsgLyogRG9uJ3Qgc3dhcCB0
aGVzZSAqLwotICAgIENBUkQxNiB0YXJnZXRfaWQgQjE2OwotICAgIENBUkQxNiBub3RpZnlUeXBl
IEIxNjsKLSAgICBDQVJEMTYgb25vZmYgQjE2OwotfSB4bnZDdHJsU2VsZWN0VGFyZ2V0Tm90aWZ5
UmVxOwotI2RlZmluZSBzel94bnZDdHJsU2VsZWN0VGFyZ2V0Tm90aWZ5UmVxIDEyCi0KLXR5cGVk
ZWYgc3RydWN0Ci17Ci0gICAgdW5pb24KLSAgICB7Ci0gICAgICAgIHN0cnVjdAotICAgICAgICB7
Ci0gICAgICAgICAgICBCWVRFIHR5cGU7Ci0gICAgICAgICAgICBCWVRFIGRldGFpbDsKLSAgICAg
ICAgICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciBCMTY7Ci0gICAgICAgIH0gdTsKLSAgICAgICAg
c3RydWN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEJZVEUgdHlwZTsKLSAgICAgICAgICAgIEJZ
VEUgZGV0YWlsOwotICAgICAgICAgICAgQ0FSRDE2IHNlcXVlbmNlTnVtYmVyIEIxNjsKLSAgICAg
ICAgICAgIENBUkQzMiB0aW1lIEIzMjsKLSAgICAgICAgICAgIENBUkQxNiB0YXJnZXRfdHlwZSBC
MTY7IC8qIERvbid0IHN3YXAgdGhlc2UgKi8KLSAgICAgICAgICAgIENBUkQxNiB0YXJnZXRfaWQg
QjE2OwotICAgICAgICAgICAgQ0FSRDMyIGRpc3BsYXlfbWFzayBCMzI7Ci0gICAgICAgICAgICBD
QVJEMzIgYXR0cmlidXRlIEIzMjsKLSAgICAgICAgICAgIENBUkQzMiB2YWx1ZSBCMzI7Ci0gICAg
ICAgICAgICBDQVJEMzIgcGFkMCBCMzI7Ci0gICAgICAgICAgICBDQVJEMzIgcGFkMSBCMzI7Ci0g
ICAgICAgIH0gYXR0cmlidXRlX2NoYW5nZWQ7Ci0gICAgICAgIHN0cnVjdAotICAgICAgICB7Ci0g
ICAgICAgICAgICBCWVRFIHR5cGU7Ci0gICAgICAgICAgICBCWVRFIGRldGFpbDsKLSAgICAgICAg
ICAgIENBUkQxNiBzZXF1ZW5jZU51bWJlciBCMTY7Ci0gICAgICAgICAgICBDQVJEMzIgdGltZSBC
MzI7Ci0gICAgICAgICAgICBDQVJEMTYgdGFyZ2V0X3R5cGUgQjE2OyAvKiBEb24ndCBzd2FwIHRo
ZXNlICovCi0gICAgICAgICAgICBDQVJEMTYgdGFyZ2V0X2lkIEIxNjsKLSAgICAgICAgICAgIENB
UkQzMiBkaXNwbGF5X21hc2sgQjMyOwotICAgICAgICAgICAgQ0FSRDMyIGF0dHJpYnV0ZSBCMzI7
Ci0gICAgICAgICAgICBDQVJEMzIgdmFsdWUgQjMyOwotICAgICAgICAgICAgQ0FSRDggYXZhaWxh
YmlsaXR5OwotICAgICAgICAgICAgQ0FSRDggcGFkMDsKLSAgICAgICAgICAgIENBUkQxNiBwYWQx
IEIxNjsKLSAgICAgICAgICAgIENBUkQzMiBwYWQyIEIzMjsKLSAgICAgICAgfSBhdmFpbGFiaWxp
dHlfY2hhbmdlZDsKLSAgICB9IHU7Ci19IHhudmN0cmxFdmVudFRhcmdldDsKLQotI2VuZGlmIC8q
IF9fTlZDT05UUk9MX0ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL0xJQ0VOU0UgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvdGhpcmRfcGFydHkvbXVybXVyaGFzaC9MSUNFTlNFCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA2YTM4NWYwZjA3OC4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTElDRU5TRQorKysgL2Rldi9udWxs
CkBAIC0xLDIgKzAsMCBAQAotLy8gTXVybXVySGFzaDMgd2FzIHdyaXR0ZW4gYnkgQXVzdGluIEFw
cGxlYnksIGFuZCBpcyBwbGFjZWQgaW4gdGhlIHB1YmxpYwotLy8gZG9tYWluLiBUaGUgYXV0aG9y
IGhlcmVieSBkaXNjbGFpbXMgY29weXJpZ2h0IHRvIHRoaXMgc291cmNlIGNvZGUuClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTc5ODJkM2VlZi4uMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVy
bXVySGFzaDMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzM1ICswLDAgQEAKLS8vLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLS8vIE11cm11ckhhc2gzIHdhcyB3cml0dGVuIGJ5IEF1c3RpbiBBcHBsZWJ5
LCBhbmQgaXMgcGxhY2VkIGluIHRoZSBwdWJsaWMKLS8vIGRvbWFpbi4gVGhlIGF1dGhvciBoZXJl
YnkgZGlzY2xhaW1zIGNvcHlyaWdodCB0byB0aGlzIHNvdXJjZSBjb2RlLgotCi0vLyBOb3RlIC0g
VGhlIHg4NiBhbmQgeDY0IHZlcnNpb25zIGRvIF9ub3RfIHByb2R1Y2UgdGhlIHNhbWUgcmVzdWx0
cywgYXMgdGhlCi0vLyBhbGdvcml0aG1zIGFyZSBvcHRpbWl6ZWQgZm9yIHRoZWlyIHJlc3BlY3Rp
dmUgcGxhdGZvcm1zLiBZb3UgY2FuIHN0aWxsCi0vLyBjb21waWxlIGFuZCBydW4gYW55IG9mIHRo
ZW0gb24gYW55IHBsYXRmb3JtLCBidXQgeW91ciBwZXJmb3JtYW5jZSB3aXRoIHRoZQotLy8gbm9u
LW5hdGl2ZSB2ZXJzaW9uIHdpbGwgYmUgbGVzcyB0aGFuIG9wdGltYWwuCi0KLSNpbmNsdWRlICJN
dXJtdXJIYXNoMy5oIgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBQbGF0Zm9ybS1zcGVj
aWZpYyBmdW5jdGlvbnMgYW5kIG1hY3JvcwotCi0vLyBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbwot
Ci0jaWYgZGVmaW5lZChfTVNDX1ZFUikKLQotI2RlZmluZSBGT1JDRV9JTkxJTkUJX19mb3JjZWlu
bGluZQotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLSNkZWZpbmUgUk9UTDMyKHgseSkJX3JvdGwo
eCx5KQotI2RlZmluZSBST1RMNjQoeCx5KQlfcm90bDY0KHgseSkKLQotI2RlZmluZSBCSUdfQ09O
U1RBTlQoeCkgKHgpCi0KLS8vIE90aGVyIGNvbXBpbGVycwotCi0jZWxzZQkvLyBkZWZpbmVkKF9N
U0NfVkVSKQotCi0jZGVmaW5lCUZPUkNFX0lOTElORSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3
YXlzX2lubGluZSkpCi0KLWlubGluZSB1aW50MzJfdCByb3RsMzIgKCB1aW50MzJfdCB4LCBpbnQ4
X3QgciApCi17Ci0gIHJldHVybiAoeCA8PCByKSB8ICh4ID4+ICgzMiAtIHIpKTsKLX0KLQotaW5s
aW5lIHVpbnQ2NF90IHJvdGw2NCAoIHVpbnQ2NF90IHgsIGludDhfdCByICkKLXsKLSAgcmV0dXJu
ICh4IDw8IHIpIHwgKHggPj4gKDY0IC0gcikpOwotfQotCi0jZGVmaW5lCVJPVEwzMih4LHkpCXJv
dGwzMih4LHkpCi0jZGVmaW5lIFJPVEw2NCh4LHkpCXJvdGw2NCh4LHkpCi0KLSNkZWZpbmUgQklH
X0NPTlNUQU5UKHgpICh4IyNMTFUpCi0KLSNlbmRpZiAvLyAhZGVmaW5lZChfTVNDX1ZFUikKLQot
Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gQmxvY2sgcmVhZCAtIGlmIHlvdXIgcGxhdGZvcm0g
bmVlZHMgdG8gZG8gZW5kaWFuLXN3YXBwaW5nIG9yIGNhbiBvbmx5Ci0vLyBoYW5kbGUgYWxpZ25l
ZCByZWFkcywgZG8gdGhlIGNvbnZlcnNpb24gaGVyZQotCi1GT1JDRV9JTkxJTkUgdWludDMyX3Qg
Z2V0YmxvY2szMiAoIGNvbnN0IHVpbnQzMl90ICogcCwgaW50IGkgKQotewotICByZXR1cm4gcFtp
XTsKLX0KLQotRk9SQ0VfSU5MSU5FIHVpbnQ2NF90IGdldGJsb2NrNjQgKCBjb25zdCB1aW50NjRf
dCAqIHAsIGludCBpICkKLXsKLSAgcmV0dXJuIHBbaV07Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLS8vIEZpbmFsaXphdGlvbiBtaXggLSBmb3JjZSBhbGwgYml0cyBvZiBhIGhhc2ggYmxv
Y2sgdG8gYXZhbGFuY2hlCi0KLUZPUkNFX0lOTElORSB1aW50MzJfdCBmbWl4MzIgKCB1aW50MzJf
dCBoICkKLXsKLSAgaCBePSBoID4+IDE2OwotICBoICo9IDB4ODVlYmNhNmI7Ci0gIGggXj0gaCA+
PiAxMzsKLSAgaCAqPSAweGMyYjJhZTM1OwotICBoIF49IGggPj4gMTY7Ci0KLSAgcmV0dXJuIGg7
Ci19Ci0KLS8vLS0tLS0tLS0tLQotCi1GT1JDRV9JTkxJTkUgdWludDY0X3QgZm1peDY0ICggdWlu
dDY0X3QgayApCi17Ci0gIGsgXj0gayA+PiAzMzsKLSAgayAqPSBCSUdfQ09OU1RBTlQoMHhmZjUx
YWZkN2VkNTU4Y2NkKTsKLSAgayBePSBrID4+IDMzOwotICBrICo9IEJJR19DT05TVEFOVCgweGM0
Y2ViOWZlMWE4NWVjNTMpOwotICBrIF49IGsgPj4gMzM7Ci0KLSAgcmV0dXJuIGs7Ci19Ci0KLS8v
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdm9pZCBNdXJtdXJIYXNoM194ODZfMzIgKCBjb25zdCB2
b2lkICoga2V5LCBpbnQgbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBz
ZWVkLCB2b2lkICogb3V0ICkKLXsKLSAgY29uc3QgdWludDhfdCAqIGRhdGEgPSAoY29uc3QgdWlu
dDhfdCopa2V5OwotICBjb25zdCBpbnQgbmJsb2NrcyA9IGxlbiAvIDQ7Ci0KLSAgdWludDMyX3Qg
aDEgPSBzZWVkOwotCi0gIGNvbnN0IHVpbnQzMl90IGMxID0gMHhjYzllMmQ1MTsKLSAgY29uc3Qg
dWludDMyX3QgYzIgPSAweDFiODczNTkzOwotCi0gIC8vLS0tLS0tLS0tLQotICAvLyBib2R5Ci0K
LSAgY29uc3QgdWludDMyX3QgKiBibG9ja3MgPSAoY29uc3QgdWludDMyX3QgKikoZGF0YSArIG5i
bG9ja3MqNCk7Ci0KLSAgZm9yKGludCBpID0gLW5ibG9ja3M7IGk7IGkrKykKLSAgewotICAgIHVp
bnQzMl90IGsxID0gZ2V0YmxvY2szMihibG9ja3MsaSk7Ci0KLSAgICBrMSAqPSBjMTsKLSAgICBr
MSA9IFJPVEwzMihrMSwxNSk7Ci0gICAgazEgKj0gYzI7Ci0gICAgCi0gICAgaDEgXj0gazE7Ci0g
ICAgaDEgPSBST1RMMzIoaDEsMTMpOyAKLSAgICBoMSA9IGgxKjUrMHhlNjU0NmI2NDsKLSAgfQot
Ci0gIC8vLS0tLS0tLS0tLQotICAvLyB0YWlsCi0KLSAgY29uc3QgdWludDhfdCAqIHRhaWwgPSAo
Y29uc3QgdWludDhfdCopKGRhdGEgKyBuYmxvY2tzKjQpOwotCi0gIHVpbnQzMl90IGsxID0gMDsK
LQotICBzd2l0Y2gobGVuICYgMykKLSAgewotICBjYXNlIDM6IGsxIF49IHRhaWxbMl0gPDwgMTY7
Ci0gIGNhc2UgMjogazEgXj0gdGFpbFsxXSA8PCA4OwotICBjYXNlIDE6IGsxIF49IHRhaWxbMF07
Ci0gICAgICAgICAgazEgKj0gYzE7IGsxID0gUk9UTDMyKGsxLDE1KTsgazEgKj0gYzI7IGgxIF49
IGsxOwotICB9OwotCi0gIC8vLS0tLS0tLS0tLQotICAvLyBmaW5hbGl6YXRpb24KLQotICBoMSBe
PSBsZW47Ci0KLSAgaDEgPSBmbWl4MzIoaDEpOwotCi0gICoodWludDMyX3QqKW91dCA9IGgxOwot
fSAKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi12b2lkIE11cm11ckhhc2gzX3g4Nl8xMjgg
KCBjb25zdCB2b2lkICoga2V5LCBjb25zdCBpbnQgbGVuLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdWludDMyX3Qgc2VlZCwgdm9pZCAqIG91dCApCi17Ci0gIGNvbnN0IHVpbnQ4X3QgKiBk
YXRhID0gKGNvbnN0IHVpbnQ4X3QqKWtleTsKLSAgY29uc3QgaW50IG5ibG9ja3MgPSBsZW4gLyAx
NjsKLQotICB1aW50MzJfdCBoMSA9IHNlZWQ7Ci0gIHVpbnQzMl90IGgyID0gc2VlZDsKLSAgdWlu
dDMyX3QgaDMgPSBzZWVkOwotICB1aW50MzJfdCBoNCA9IHNlZWQ7Ci0KLSAgY29uc3QgdWludDMy
X3QgYzEgPSAweDIzOWI5NjFiOyAKLSAgY29uc3QgdWludDMyX3QgYzIgPSAweGFiMGU5Nzg5Owot
ICBjb25zdCB1aW50MzJfdCBjMyA9IDB4MzhiMzRhZTU7IAotICBjb25zdCB1aW50MzJfdCBjNCA9
IDB4YTFlMzhiOTM7Ci0KLSAgLy8tLS0tLS0tLS0tCi0gIC8vIGJvZHkKLQotICBjb25zdCB1aW50
MzJfdCAqIGJsb2NrcyA9IChjb25zdCB1aW50MzJfdCAqKShkYXRhICsgbmJsb2NrcyoxNik7Ci0K
LSAgZm9yKGludCBpID0gLW5ibG9ja3M7IGk7IGkrKykKLSAgewotICAgIHVpbnQzMl90IGsxID0g
Z2V0YmxvY2szMihibG9ja3MsaSo0KzApOwotICAgIHVpbnQzMl90IGsyID0gZ2V0YmxvY2szMihi
bG9ja3MsaSo0KzEpOwotICAgIHVpbnQzMl90IGszID0gZ2V0YmxvY2szMihibG9ja3MsaSo0KzIp
OwotICAgIHVpbnQzMl90IGs0ID0gZ2V0YmxvY2szMihibG9ja3MsaSo0KzMpOwotCi0gICAgazEg
Kj0gYzE7IGsxICA9IFJPVEwzMihrMSwxNSk7IGsxICo9IGMyOyBoMSBePSBrMTsKLQotICAgIGgx
ID0gUk9UTDMyKGgxLDE5KTsgaDEgKz0gaDI7IGgxID0gaDEqNSsweDU2MWNjZDFiOwotCi0gICAg
azIgKj0gYzI7IGsyICA9IFJPVEwzMihrMiwxNik7IGsyICo9IGMzOyBoMiBePSBrMjsKLQotICAg
IGgyID0gUk9UTDMyKGgyLDE3KTsgaDIgKz0gaDM7IGgyID0gaDIqNSsweDBiY2FhNzQ3OwotCi0g
ICAgazMgKj0gYzM7IGszICA9IFJPVEwzMihrMywxNyk7IGszICo9IGM0OyBoMyBePSBrMzsKLQot
ICAgIGgzID0gUk9UTDMyKGgzLDE1KTsgaDMgKz0gaDQ7IGgzID0gaDMqNSsweDk2Y2QxYzM1Owot
Ci0gICAgazQgKj0gYzQ7IGs0ICA9IFJPVEwzMihrNCwxOCk7IGs0ICo9IGMxOyBoNCBePSBrNDsK
LQotICAgIGg0ID0gUk9UTDMyKGg0LDEzKTsgaDQgKz0gaDE7IGg0ID0gaDQqNSsweDMyYWMzYjE3
OwotICB9Ci0KLSAgLy8tLS0tLS0tLS0tCi0gIC8vIHRhaWwKLQotICBjb25zdCB1aW50OF90ICog
dGFpbCA9IChjb25zdCB1aW50OF90KikoZGF0YSArIG5ibG9ja3MqMTYpOwotCi0gIHVpbnQzMl90
IGsxID0gMDsKLSAgdWludDMyX3QgazIgPSAwOwotICB1aW50MzJfdCBrMyA9IDA7Ci0gIHVpbnQz
Ml90IGs0ID0gMDsKLQotICBzd2l0Y2gobGVuICYgMTUpCi0gIHsKLSAgY2FzZSAxNTogazQgXj0g
dGFpbFsxNF0gPDwgMTY7Ci0gIGNhc2UgMTQ6IGs0IF49IHRhaWxbMTNdIDw8IDg7Ci0gIGNhc2Ug
MTM6IGs0IF49IHRhaWxbMTJdIDw8IDA7Ci0gICAgICAgICAgIGs0ICo9IGM0OyBrNCAgPSBST1RM
MzIoazQsMTgpOyBrNCAqPSBjMTsgaDQgXj0gazQ7Ci0KLSAgY2FzZSAxMjogazMgXj0gdGFpbFsx
MV0gPDwgMjQ7Ci0gIGNhc2UgMTE6IGszIF49IHRhaWxbMTBdIDw8IDE2OwotICBjYXNlIDEwOiBr
MyBePSB0YWlsWyA5XSA8PCA4OwotICBjYXNlICA5OiBrMyBePSB0YWlsWyA4XSA8PCAwOwotICAg
ICAgICAgICBrMyAqPSBjMzsgazMgID0gUk9UTDMyKGszLDE3KTsgazMgKj0gYzQ7IGgzIF49IGsz
OwotCi0gIGNhc2UgIDg6IGsyIF49IHRhaWxbIDddIDw8IDI0OwotICBjYXNlICA3OiBrMiBePSB0
YWlsWyA2XSA8PCAxNjsKLSAgY2FzZSAgNjogazIgXj0gdGFpbFsgNV0gPDwgODsKLSAgY2FzZSAg
NTogazIgXj0gdGFpbFsgNF0gPDwgMDsKLSAgICAgICAgICAgazIgKj0gYzI7IGsyICA9IFJPVEwz
MihrMiwxNik7IGsyICo9IGMzOyBoMiBePSBrMjsKLQotICBjYXNlICA0OiBrMSBePSB0YWlsWyAz
XSA8PCAyNDsKLSAgY2FzZSAgMzogazEgXj0gdGFpbFsgMl0gPDwgMTY7Ci0gIGNhc2UgIDI6IGsx
IF49IHRhaWxbIDFdIDw8IDg7Ci0gIGNhc2UgIDE6IGsxIF49IHRhaWxbIDBdIDw8IDA7Ci0gICAg
ICAgICAgIGsxICo9IGMxOyBrMSAgPSBST1RMMzIoazEsMTUpOyBrMSAqPSBjMjsgaDEgXj0gazE7
Ci0gIH07Ci0KLSAgLy8tLS0tLS0tLS0tCi0gIC8vIGZpbmFsaXphdGlvbgotCi0gIGgxIF49IGxl
bjsgaDIgXj0gbGVuOyBoMyBePSBsZW47IGg0IF49IGxlbjsKLQotICBoMSArPSBoMjsgaDEgKz0g
aDM7IGgxICs9IGg0OwotICBoMiArPSBoMTsgaDMgKz0gaDE7IGg0ICs9IGgxOwotCi0gIGgxID0g
Zm1peDMyKGgxKTsKLSAgaDIgPSBmbWl4MzIoaDIpOwotICBoMyA9IGZtaXgzMihoMyk7Ci0gIGg0
ID0gZm1peDMyKGg0KTsKLQotICBoMSArPSBoMjsgaDEgKz0gaDM7IGgxICs9IGg0OwotICBoMiAr
PSBoMTsgaDMgKz0gaDE7IGg0ICs9IGgxOwotCi0gICgodWludDMyX3QqKW91dClbMF0gPSBoMTsK
LSAgKCh1aW50MzJfdCopb3V0KVsxXSA9IGgyOwotICAoKHVpbnQzMl90KilvdXQpWzJdID0gaDM7
Ci0gICgodWludDMyX3QqKW91dClbM10gPSBoNDsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCi12b2lkIE11cm11ckhhc2gzX3g2NF8xMjggKCBjb25zdCB2b2lkICoga2V5LCBjb25zdCBp
bnQgbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDMyX3Qgc2VlZCwg
dm9pZCAqIG91dCApCi17Ci0gIGNvbnN0IHVpbnQ4X3QgKiBkYXRhID0gKGNvbnN0IHVpbnQ4X3Qq
KWtleTsKLSAgY29uc3QgaW50IG5ibG9ja3MgPSBsZW4gLyAxNjsKLQotICB1aW50NjRfdCBoMSA9
IHNlZWQ7Ci0gIHVpbnQ2NF90IGgyID0gc2VlZDsKLQotICBjb25zdCB1aW50NjRfdCBjMSA9IEJJ
R19DT05TVEFOVCgweDg3YzM3YjkxMTE0MjUzZDUpOwotICBjb25zdCB1aW50NjRfdCBjMiA9IEJJ
R19DT05TVEFOVCgweDRjZjVhZDQzMjc0NTkzN2YpOwotCi0gIC8vLS0tLS0tLS0tLQotICAvLyBi
b2R5Ci0KLSAgY29uc3QgdWludDY0X3QgKiBibG9ja3MgPSAoY29uc3QgdWludDY0X3QgKikoZGF0
YSk7Ci0KLSAgZm9yKGludCBpID0gMDsgaSA8IG5ibG9ja3M7IGkrKykKLSAgewotICAgIHVpbnQ2
NF90IGsxID0gZ2V0YmxvY2s2NChibG9ja3MsaSoyKzApOwotICAgIHVpbnQ2NF90IGsyID0gZ2V0
YmxvY2s2NChibG9ja3MsaSoyKzEpOwotCi0gICAgazEgKj0gYzE7IGsxICA9IFJPVEw2NChrMSwz
MSk7IGsxICo9IGMyOyBoMSBePSBrMTsKLQotICAgIGgxID0gUk9UTDY0KGgxLDI3KTsgaDEgKz0g
aDI7IGgxID0gaDEqNSsweDUyZGNlNzI5OwotCi0gICAgazIgKj0gYzI7IGsyICA9IFJPVEw2NChr
MiwzMyk7IGsyICo9IGMxOyBoMiBePSBrMjsKLQotICAgIGgyID0gUk9UTDY0KGgyLDMxKTsgaDIg
Kz0gaDE7IGgyID0gaDIqNSsweDM4NDk1YWI1OwotICB9Ci0KLSAgLy8tLS0tLS0tLS0tCi0gIC8v
IHRhaWwKLQotICBjb25zdCB1aW50OF90ICogdGFpbCA9IChjb25zdCB1aW50OF90KikoZGF0YSAr
IG5ibG9ja3MqMTYpOwotCi0gIHVpbnQ2NF90IGsxID0gMDsKLSAgdWludDY0X3QgazIgPSAwOwot
Ci0gIHN3aXRjaChsZW4gJiAxNSkKLSAgewotICBjYXNlIDE1OiBrMiBePSAoKHVpbnQ2NF90KXRh
aWxbMTRdKSA8PCA0ODsKLSAgY2FzZSAxNDogazIgXj0gKCh1aW50NjRfdCl0YWlsWzEzXSkgPDwg
NDA7Ci0gIGNhc2UgMTM6IGsyIF49ICgodWludDY0X3QpdGFpbFsxMl0pIDw8IDMyOwotICBjYXNl
IDEyOiBrMiBePSAoKHVpbnQ2NF90KXRhaWxbMTFdKSA8PCAyNDsKLSAgY2FzZSAxMTogazIgXj0g
KCh1aW50NjRfdCl0YWlsWzEwXSkgPDwgMTY7Ci0gIGNhc2UgMTA6IGsyIF49ICgodWludDY0X3Qp
dGFpbFsgOV0pIDw8IDg7Ci0gIGNhc2UgIDk6IGsyIF49ICgodWludDY0X3QpdGFpbFsgOF0pIDw8
IDA7Ci0gICAgICAgICAgIGsyICo9IGMyOyBrMiAgPSBST1RMNjQoazIsMzMpOyBrMiAqPSBjMTsg
aDIgXj0gazI7Ci0KLSAgY2FzZSAgODogazEgXj0gKCh1aW50NjRfdCl0YWlsWyA3XSkgPDwgNTY7
Ci0gIGNhc2UgIDc6IGsxIF49ICgodWludDY0X3QpdGFpbFsgNl0pIDw8IDQ4OwotICBjYXNlICA2
OiBrMSBePSAoKHVpbnQ2NF90KXRhaWxbIDVdKSA8PCA0MDsKLSAgY2FzZSAgNTogazEgXj0gKCh1
aW50NjRfdCl0YWlsWyA0XSkgPDwgMzI7Ci0gIGNhc2UgIDQ6IGsxIF49ICgodWludDY0X3QpdGFp
bFsgM10pIDw8IDI0OwotICBjYXNlICAzOiBrMSBePSAoKHVpbnQ2NF90KXRhaWxbIDJdKSA8PCAx
NjsKLSAgY2FzZSAgMjogazEgXj0gKCh1aW50NjRfdCl0YWlsWyAxXSkgPDwgODsKLSAgY2FzZSAg
MTogazEgXj0gKCh1aW50NjRfdCl0YWlsWyAwXSkgPDwgMDsKLSAgICAgICAgICAgazEgKj0gYzE7
IGsxICA9IFJPVEw2NChrMSwzMSk7IGsxICo9IGMyOyBoMSBePSBrMTsKLSAgfTsKLQotICAvLy0t
LS0tLS0tLS0KLSAgLy8gZmluYWxpemF0aW9uCi0KLSAgaDEgXj0gbGVuOyBoMiBePSBsZW47Ci0K
LSAgaDEgKz0gaDI7Ci0gIGgyICs9IGgxOwotCi0gIGgxID0gZm1peDY0KGgxKTsKLSAgaDIgPSBm
bWl4NjQoaDIpOwotCi0gIGgxICs9IGgyOwotICBoMiArPSBoMTsKLQotICAoKHVpbnQ2NF90Kilv
dXQpWzBdID0gaDE7Ci0gICgodWludDY0X3QqKW91dClbMV0gPSBoMjsKLX0KLQotLy8tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
dGhpcmRfcGFydHkvbXVybXVyaGFzaC9NdXJtdXJIYXNoMy5oIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL3RoaXJkX3BhcnR5L211cm11cmhhc2gvTXVybXVySGFzaDMuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ0ZWUwZTg0YzYuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9tdXJtdXJoYXNoL011cm11ckhhc2gz
LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0vLyBNdXJtdXJIYXNoMyB3YXMgd3JpdHRlbiBieSBBdXN0aW4gQXBwbGVieSwgYW5kIGlzIHBs
YWNlZCBpbiB0aGUgcHVibGljCi0vLyBkb21haW4uIFRoZSBhdXRob3IgaGVyZWJ5IGRpc2NsYWlt
cyBjb3B5cmlnaHQgdG8gdGhpcyBzb3VyY2UgY29kZS4KLQotI2lmbmRlZiBfTVVSTVVSSEFTSDNf
SF8KLSNkZWZpbmUgX01VUk1VUkhBU0gzX0hfCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8v
IFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9ucyBhbmQgbWFjcm9zCi0KLS8vIE1pY3Jvc29mdCBW
aXN1YWwgU3R1ZGlvCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPCAxNjAw
KQotCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgdWludDhfdDsKLXR5cGVkZWYgdW5zaWduZWQgaW50
IHVpbnQzMl90OwotdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IHVpbnQ2NF90OwotCi0vLyBPdGhl
ciBjb21waWxlcnMKLQotI2Vsc2UgLy8gZGVmaW5lZChfTVNDX1ZFUikKLQotI2luY2x1ZGUgPHN0
ZGludC5oPgotCi0jZW5kaWYgLy8gIWRlZmluZWQoX01TQ19WRVIpCi0KLS8vLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLQotdm9pZCBNdXJtdXJIYXNoM194ODZfMzIgICggY29uc3Qgdm9pZCAqIGtleSwg
aW50IGxlbiwgdWludDMyX3Qgc2VlZCwgdm9pZCAqIG91dCApOwotCi12b2lkIE11cm11ckhhc2gz
X3g4Nl8xMjggKCBjb25zdCB2b2lkICoga2V5LCBpbnQgbGVuLCB1aW50MzJfdCBzZWVkLCB2b2lk
ICogb3V0ICk7Ci0KLXZvaWQgTXVybXVySGFzaDNfeDY0XzEyOCAoIGNvbnN0IHZvaWQgKiBrZXks
IGludCBsZW4sIHVpbnQzMl90IHNlZWQsIHZvaWQgKiBvdXQgKTsKLQotLy8tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotCi0jZW5kaWYgLy8gX01VUk1VUkhBU0gzX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvc3lzdGVtaW5mby9TeXN0ZW1JbmZvLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9zeXN0ZW1pbmZvL1N5
c3RlbUluZm8uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2RmY2FhYzUxMy4u
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5
L3N5c3RlbWluZm8vU3lzdGVtSW5mby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
PHdpbmRvd3MuaD4KLSNpbmNsdWRlICJjb21tb24vcGxhdGZvcm0uaCIKLQotI2lmIF9XSU4zMl9X
SU5OVF9XSU5CTFVFCi0jaW5jbHVkZSA8dmVyc2lvbmhlbHBlcnMuaD4KLSNlbmRpZgotCi1uYW1l
c3BhY2UgcnggewotCi0jaWZuZGVmIF9XSU4zMl9XSU5OVF9XSU5CTFVFCi1zdGF0aWMgYm9vbCBJ
c1dpbmRvd3NWaXN0YU9yR3JlYXRlcigpCi17Ci0gICAgT1NWRVJTSU9OSU5GT0VYVyBvc3ZpID0g
eyB9OwotICAgIG9zdmkuZHdPU1ZlcnNpb25JbmZvU2l6ZSA9IHNpemVvZihvc3ZpKTsKLSAgICBv
c3ZpLmR3TWFqb3JWZXJzaW9uID0gSElCWVRFKF9XSU4zMl9XSU5OVF9WSVNUQSk7Ci0gICAgb3N2
aS5kd01pbm9yVmVyc2lvbiA9IExPQllURShfV0lOMzJfV0lOTlRfVklTVEEpOwotICAgIERXT1JE
TE9ORyBjb25kaXRpb24gPSAwOwotICAgIFZFUl9TRVRfQ09ORElUSU9OKGNvbmRpdGlvbiwgVkVS
X01BSk9SVkVSU0lPTiwgVkVSX0dSRUFURVJfRVFVQUwpOwotICAgIFZFUl9TRVRfQ09ORElUSU9O
KGNvbmRpdGlvbiwgVkVSX01JTk9SVkVSU0lPTiwgVkVSX0dSRUFURVJfRVFVQUwpOwotICAgIHJl
dHVybiAhITo6VmVyaWZ5VmVyc2lvbkluZm9XKCZvc3ZpLCBWRVJfTUFKT1JWRVJTSU9OIHwgVkVS
X01JTk9SVkVSU0lPTiwgY29uZGl0aW9uKTsKLX0KLSNlbmRpZgotCi1ib29sIGlzV2luZG93c1Zp
c3RhT3JHcmVhdGVyKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwot
ICAgIHN0YXRpYyBib29sIGNhY2hlZElzV2luZG93c1Zpc3RhT3JHcmVhdGVyOwotCi0gICAgaWYg
KCFpbml0aWFsaXplZCkgewotICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7Ci0jaWYgZGVmaW5l
ZChBTkdMRV9FTkFCTEVfV0lORE9XU19TVE9SRSkKLSAgICAgICAgY2FjaGVkSXNXaW5kb3dzVmlz
dGFPckdyZWF0ZXIgPSB0cnVlOwotI2Vsc2UKLSAgICAgICAgY2FjaGVkSXNXaW5kb3dzVmlzdGFP
ckdyZWF0ZXIgPSBJc1dpbmRvd3NWaXN0YU9yR3JlYXRlcigpOwotI2VuZGlmCi0gICAgfQotICAg
IHJldHVybiBjYWNoZWRJc1dpbmRvd3NWaXN0YU9yR3JlYXRlcjsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgcngKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9wYXJ0
eS9zeXN0ZW1pbmZvL1N5c3RlbUluZm8uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90
aGlyZF9wYXJ0eS9zeXN0ZW1pbmZvL1N5c3RlbUluZm8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMjI2MDg1ZmJkM2QuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy90aGlyZF9wYXJ0eS9zeXN0ZW1pbmZvL1N5c3RlbUluZm8uaAorKysgL2Rldi9u
dWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIFRISVJEX1BBUlRZX1NZU1RFTUlORk9fU1lTVEVNSU5GT19IXwot
I2RlZmluZSBUSElSRF9QQVJUWV9TWVNURU1JTkZPX1NZU1RFTUlORk9fSF8KLQotbmFtZXNwYWNl
IHJ4IHsKLQotYm9vbCBpc1dpbmRvd3NWaXN0YU9yR3JlYXRlcigpOwotCi19IC8vIG5hbWVzcGFj
ZSByeAotCi0jZW5kaWYgLy8gVEhJUkRfUEFSVFlfU1lTVEVNSU5GT19TWVNURU1JTkZPX0hfCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvdGhpcmRfcGFydHkvdHJhY2Vf
ZXZlbnQvdHJhY2VfZXZlbnQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy90aGlyZF9w
YXJ0eS90cmFjZV9ldmVudC90cmFjZV9ldmVudC5oCmluZGV4IDNjODVkMjJlZmFlLi5iZGI4ODA0
NDI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL3RoaXJkX3BhcnR5
L3RyYWNlX2V2ZW50L3RyYWNlX2V2ZW50LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL3RoaXJkX3BhcnR5L3RyYWNlX2V2ZW50L3RyYWNlX2V2ZW50LmgKQEAgLTY5MCwyNyArNjkw
LDI3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRUcmFjZVZhbHVlKGNvbnN0IHN0ZDo6c3RyaW5n
JiBhcmcsCiAvLyBzdG9yZSBwb2ludGVycyB0byB0aGUgaW50ZXJuYWwgY19zdHIgYW5kIHBhc3Mg
dGhyb3VnaCB0byB0aGUgdHJhY2luZyBBUEksIHRoZQogLy8gYXJnIHZhbHVlcyBtdXN0IGxpdmUg
dGhyb3VnaG91dCB0aGVzZSBwcm9jZWR1cmVzLgogCi1zdGF0aWMgaW5saW5lIGFuZ2xlOjpQbGF0
Zm9ybTo6VHJhY2VFdmVudEhhbmRsZSBhZGRUcmFjZUV2ZW50KAotICAgIGNoYXIgcGhhc2UsCi0g
ICAgY29uc3QgdW5zaWduZWQgY2hhciogY2F0ZWdvcnlFbmFibGVkLAotICAgIGNvbnN0IGNoYXIq
IG5hbWUsCi0gICAgdW5zaWduZWQgbG9uZyBsb25nIGlkLAotICAgIHVuc2lnbmVkIGNoYXIgZmxh
Z3MpIHsKK3N0YXRpYyBpbmxpbmUgYW5nbGU6OlRyYWNlRXZlbnRIYW5kbGUgYWRkVHJhY2VFdmVu
dChjaGFyIHBoYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpu
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGZsYWdzKQorewogICAgIHJldHVybiBU
UkFDRV9FVkVOVF9BUElfQUREX1RSQUNFX0VWRU5UKAogICAgICAgICBwaGFzZSwgY2F0ZWdvcnlF
bmFibGVkLCBuYW1lLCBpZCwKICAgICAgICAgemVyb051bUFyZ3MsIDAsIDAsIDAsCiAgICAgICAg
IGZsYWdzKTsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgQVJHMV9UWVBFPgotc3RhdGljIGlubGluZSBh
bmdsZTo6UGxhdGZvcm06OlRyYWNlRXZlbnRIYW5kbGUgYWRkVHJhY2VFdmVudCgKLSAgICBjaGFy
IHBoYXNlLAotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGNhdGVnb3J5RW5hYmxlZCwKLSAgICBj
b25zdCBjaGFyKiBuYW1lLAotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBpZCwKLSAgICB1bnNpZ25l
ZCBjaGFyIGZsYWdzLAotICAgIGNvbnN0IGNoYXIqIGFyZzFOYW1lLAotICAgIGNvbnN0IEFSRzFf
VFlQRSYgYXJnMVZhbCkgewordGVtcGxhdGUgPGNsYXNzIEFSRzFfVFlQRT4KK3N0YXRpYyBpbmxp
bmUgYW5nbGU6OlRyYWNlRXZlbnRIYW5kbGUgYWRkVHJhY2VFdmVudChjaGFyIHBoYXNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVu
c2lnbmVkIGNoYXIgKmNhdGVnb3J5RW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1bnNpZ25lZCBjaGFyIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmFyZzFOYW1lLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFSRzFfVFlQRSAmYXJn
MVZhbCkKK3sKICAgICBjb25zdCBpbnQgbnVtQXJncyA9IDE7CiAgICAgdW5zaWduZWQgY2hhciBh
cmdUeXBlc1sxXTsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYXJnVmFsdWVzWzFdOwpAQCAtNzIx
LDE3ICs3MjEsMTcgQEAgc3RhdGljIGlubGluZSBhbmdsZTo6UGxhdGZvcm06OlRyYWNlRXZlbnRI
YW5kbGUgYWRkVHJhY2VFdmVudCgKICAgICAgICAgZmxhZ3MpOwogfQogCi10ZW1wbGF0ZTxjbGFz
cyBBUkcxX1RZUEUsIGNsYXNzIEFSRzJfVFlQRT4KLXN0YXRpYyBpbmxpbmUgYW5nbGU6OlBsYXRm
b3JtOjpUcmFjZUV2ZW50SGFuZGxlIGFkZFRyYWNlRXZlbnQoCi0gICAgY2hhciBwaGFzZSwKLSAg
ICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjYXRlZ29yeUVuYWJsZWQsCi0gICAgY29uc3QgY2hhciog
bmFtZSwKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgaWQsCi0gICAgdW5zaWduZWQgY2hhciBmbGFn
cywKLSAgICBjb25zdCBjaGFyKiBhcmcxTmFtZSwKLSAgICBjb25zdCBBUkcxX1RZUEUmIGFyZzFW
YWwsCi0gICAgY29uc3QgY2hhciogYXJnMk5hbWUsCi0gICAgY29uc3QgQVJHMl9UWVBFJiBhcmcy
VmFsKSB7Cit0ZW1wbGF0ZSA8Y2xhc3MgQVJHMV9UWVBFLCBjbGFzcyBBUkcyX1RZUEU+CitzdGF0
aWMgaW5saW5lIGFuZ2xlOjpUcmFjZUV2ZW50SGFuZGxlIGFkZFRyYWNlRXZlbnQoY2hhciBwaGFz
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCB1bnNpZ25lZCBjaGFyICpjYXRlZ29yeUVuYWJsZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBs
b25nIGxvbmcgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgY2hhciBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICphcmcxTmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBBUkcxX1RZ
UEUgJmFyZzFWYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgY2hhciAqYXJnMk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQVJHMl9UWVBFICZhcmcyVmFsKQorewog
ICAgIGNvbnN0IGludCBudW1BcmdzID0gMjsKICAgICBjb25zdCBjaGFyKiBhcmdOYW1lc1syXSA9
IHsgYXJnMU5hbWUsIGFyZzJOYW1lIH07CiAgICAgdW5zaWduZWQgY2hhciBhcmdUeXBlc1syXTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3RoaXJkX3BhcnR5L2RlcXAvUkVB
RE1FLmFuZ2xlIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdGhpcmRfcGFydHkvZGVxcC9SRUFE
TUUuYW5nbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwYmMwNjY3NzM2Li4wMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS90aGlyZF9wYXJ0eS9kZXFwL1JF
QURNRS5hbmdsZQorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLU5hbWU6IGRyYXdFbGVt
ZW50cyBRdWFsaXR5IFByb2dyYW0KLVNob3J0IE5hbWU6IGRFUVAKLVZlcnNpb246IDEuMAotVVJM
OiBodHRwczovL3NvdXJjZS5hbmRyb2lkLmNvbS9kZXZpY2VzL2dyYXBoaWNzL3Rlc3RpbmcuaHRt
bAotU09VUkNFIENPREU6IGdpdCBjbG9uZSAtYiBkZXFwLWRldiBodHRwczovL2FuZHJvaWQuZ29v
Z2xlc291cmNlLmNvbS9wbGF0Zm9ybS9leHRlcm5hbC9kZXFwLwotRGF0ZTogMjAvMDYvMjAxNgot
UmV2aXNpb246IGY0ZjNkODA3OWU3YTM3ZDc2NzVhYjkzNTgzZTY0MzhkMGJjYTBlNTgKLVNlY3Vy
aXR5IENyaXRpY2FsOiBubwotTGljZW5zZTogQXBhY2hlIDIuMAotTGljZW5zZSBGaWxlOiBMSUNF
TlNFCi0KLURlc2NyaXB0aW9uOgotZEVRUCBpcyBhIHNldCBvZiB0ZXN0cyBhbmQgdGVzdGluZyB0
b29scyBmb3IgR1BVcyBhbmQgdGhlaXIgZHJpdmVycy4gSXQgY3VycmVudGx5IHN1cHBvcnRzIE9w
ZW5HTCBFUyAyLjAgLSAzLjEgJiBBRVAgYW5kIEVHTC4gVGhlIGRFUVAgaGFzIGJlZW4gcGFydCBv
ZiB0aGUgQW5kcm9pZCBDVFMgc2luY2UgdGhlIEwgcmVsZWFzZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3V0aWwvdXRpbC5neXAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS91dGlsL3V0aWwuZ3lwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGJiZGM0NWM5
Ni4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvdXRpbC91dGlsLmd5
cAorKysgL2Rldi9udWxsCkBAIC0xLDIxNiArMCwwIEBACi0jIENvcHlyaWdodCAoYykgMjAxNCBU
aGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg
Y2FuIGJlCi0jIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0KLXsKLSAgICAjIEV2ZXJ5dGhp
bmcgYmVsb3cgIHRoaXMgaXMgZHVwbGljYXRlZCBpbiB0aGUgR04gYnVpbGQsIGV4Y2VwdCBNYWMg
c3VwcG9ydC4KLSAgICAjIElmIHlvdSBjaGFuZ2UgYW55dGhpbmcgYWxzbyBjaGFuZ2UgYW5nbGUv
QlVJTEQuZ24KLSAgICAndmFyaWFibGVzJzoKLSAgICB7Ci0gICAgICAgICd1dGlsX3NvdXJjZXMn
OgotICAgICAgICBbCi0gICAgICAgICAgICAnY29tX3V0aWxzLmgnLAotICAgICAgICAgICAgJ2tl
eWJvYXJkLmgnLAotICAgICAgICAgICAgJ2dlb21ldHJ5X3V0aWxzLmNwcCcsCi0gICAgICAgICAg
ICAnZ2VvbWV0cnlfdXRpbHMuaCcsCi0gICAgICAgICAgICAnbW91c2UuaCcsCi0gICAgICAgICAg
ICAncmFuZG9tX3V0aWxzLmNwcCcsCi0gICAgICAgICAgICAncmFuZG9tX3V0aWxzLmgnLAotICAg
ICAgICAgICAgJ3NoYWRlcl91dGlscy5jcHAnLAotICAgICAgICAgICAgJ3NoYWRlcl91dGlscy5o
JywKLSAgICAgICAgICAgICdzeXN0ZW1fdXRpbHMuaCcsCi0gICAgICAgICAgICAnRXZlbnQuaCcs
Ci0gICAgICAgICAgICAnRUdMV2luZG93LmNwcCcsCi0gICAgICAgICAgICAnRUdMV2luZG93Lmgn
LAotICAgICAgICAgICAgJ01hdHJpeC5jcHAnLAotICAgICAgICAgICAgJ01hdHJpeC5oJywKLSAg
ICAgICAgICAgICdPU1BpeG1hcC5oJywKLSAgICAgICAgICAgICdPU1dpbmRvdy5jcHAnLAotICAg
ICAgICAgICAgJ09TV2luZG93LmgnLAotICAgICAgICAgICAgJ1RpbWVyLmgnLAotICAgICAgICAg
ICAgJ1ZlY3Rvci5jcHAnLAotICAgICAgICAgICAgJ1ZlY3Rvci5oJywKLSAgICAgICAgXSwKLSAg
ICAgICAgJ3V0aWxfd2luMzJfc291cmNlcyc6Ci0gICAgICAgIFsKLSAgICAgICAgICAgICd3aW5k
b3dzL3dpbjMyL1dpbjMyX3N5c3RlbV91dGlscy5jcHAnLAotICAgICAgICAgICAgJ3dpbmRvd3Mv
d2luMzIvV2luMzJQaXhtYXAuY3BwJywKLSAgICAgICAgICAgICd3aW5kb3dzL3dpbjMyL1dpbjMy
UGl4bWFwLmgnLAotICAgICAgICAgICAgJ3dpbmRvd3Mvd2luMzIvV2luMzJXaW5kb3cuY3BwJywK
LSAgICAgICAgICAgICd3aW5kb3dzL3dpbjMyL1dpbjMyV2luZG93LmgnLAotICAgICAgICAgICAg
J3dpbmRvd3MvV2luZG93c19zeXN0ZW1fdXRpbHMuY3BwJywKLSAgICAgICAgICAgICd3aW5kb3dz
L1dpbmRvd3NUaW1lci5jcHAnLAotICAgICAgICAgICAgJ3dpbmRvd3MvV2luZG93c1RpbWVyLmgn
LAotICAgICAgICBdLAotICAgICAgICAndXRpbF93aW5ydF9zb3VyY2VzJzoKLSAgICAgICAgWwot
ICAgICAgICAgICAgJ3dpbmRvd3Mvd2lucnQvV2luUlRfc3lzdGVtX3V0aWxzLmNwcCcsCi0gICAg
ICAgICAgICAnd2luZG93cy93aW5ydC9XaW5SVFBpeG1hcC5jcHAnLAotICAgICAgICAgICAgJ3dp
bmRvd3Mvd2lucnQvV2luUlRXaW5kb3cuY3BwJywKLSAgICAgICAgICAgICd3aW5kb3dzL3dpbnJ0
L1dpblJUV2luZG93LmgnLAotICAgICAgICAgICAgJ3dpbmRvd3MvV2luZG93c19zeXN0ZW1fdXRp
bHMuY3BwJywKLSAgICAgICAgICAgICd3aW5kb3dzL1dpbmRvd3NUaW1lci5jcHAnLAotICAgICAg
ICAgICAgJ3dpbmRvd3MvV2luZG93c1RpbWVyLmgnLAotICAgICAgICBdLAotICAgICAgICAndXRp
bF9saW51eF9zb3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJ2xpbnV4L0xpbnV4X3N5
c3RlbV91dGlscy5jcHAnLAotICAgICAgICAgICAgJ2xpbnV4L0xpbnV4VGltZXIuY3BwJywKLSAg
ICAgICAgICAgICdsaW51eC9MaW51eFRpbWVyLmgnLAotICAgICAgICAgICAgJ3Bvc2l4L1Bvc2l4
X3N5c3RlbV91dGlscy5jcHAnLAotICAgICAgICBdLAotICAgICAgICAndXRpbF94MTFfc291cmNl
cyc6Ci0gICAgICAgIFsKLSAgICAgICAgICAgICd4MTEvWDExUGl4bWFwLmNwcCcsCi0gICAgICAg
ICAgICAneDExL1gxMVBpeG1hcC5oJywKLSAgICAgICAgICAgICd4MTEvWDExV2luZG93LmNwcCcs
Ci0gICAgICAgICAgICAneDExL1gxMVdpbmRvdy5oJywKLSAgICAgICAgXSwKLSAgICAgICAgJ3V0
aWxfb3pvbmVfc291cmNlcyc6Ci0gICAgICAgIFsKLSAgICAgICAgICAgICdvem9uZS9Pem9uZVBp
eG1hcC5jcHAnLAotICAgICAgICAgICAgJ296b25lL096b25lV2luZG93LmNwcCcsCi0gICAgICAg
ICAgICAnb3pvbmUvT3pvbmVXaW5kb3cuaCcsCi0gICAgICAgIF0sCi0gICAgICAgICd1dGlsX29z
eF9zb3VyY2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJ29zeC9PU1hfc3lzdGVtX3V0aWxz
LmNwcCcsCi0gICAgICAgICAgICAnb3N4L09TWFRpbWVyLmNwcCcsCi0gICAgICAgICAgICAnb3N4
L09TWFRpbWVyLmgnLAotICAgICAgICAgICAgJ29zeC9PU1hQaXhtYXAubW0nLAotICAgICAgICAg
ICAgJ29zeC9PU1hQaXhtYXAuaCcsCi0gICAgICAgICAgICAnb3N4L09TWFdpbmRvdy5tbScsCi0g
ICAgICAgICAgICAnb3N4L09TWFdpbmRvdy5oJywKLSAgICAgICAgICAgICdwb3NpeC9Qb3NpeF9z
eXN0ZW1fdXRpbHMuY3BwJywKLSAgICAgICAgXSwKLSAgICAgICAgJ3V0aWxfYW5kcm9pZF9zb3Vy
Y2VzJzoKLSAgICAgICAgWwotICAgICAgICAgICAgJ2FuZHJvaWQvQW5kcm9pZFBpeG1hcC5jcHAn
LAotICAgICAgICAgICAgJ2FuZHJvaWQvQW5kcm9pZFdpbmRvdy5jcHAnLAotICAgICAgICAgICAg
J2FuZHJvaWQvQW5kcm9pZFdpbmRvdy5oJywKLSAgICAgICAgICAgICdhbmRyb2lkL3RoaXJkX3Bh
cnR5L2FuZHJvaWRfbmF0aXZlX2FwcF9nbHVlLmMnLAotICAgICAgICAgICAgJ2FuZHJvaWQvdGhp
cmRfcGFydHkvYW5kcm9pZF9uYXRpdmVfYXBwX2dsdWUuaCcsCi0gICAgICAgIF0sCi0gICAgfSwK
LSAgICAndGFyZ2V0cyc6Ci0gICAgWwotICAgICAgICB7Ci0gICAgICAgICAgICAndGFyZ2V0X25h
bWUnOiAnYW5nbGVfdXRpbCcsCi0gICAgICAgICAgICAndHlwZSc6ICdzaGFyZWRfbGlicmFyeScs
Ci0gICAgICAgICAgICAnaW5jbHVkZXMnOiBbICcuLi9idWlsZC9jb21tb25fZGVmaW5lcy5neXBp
JywgXSwKLSAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOgotICAgICAgICAgICAgWwotICAgICAg
ICAgICAgICAgICc8KGFuZ2xlX3BhdGgpL3NyYy9hbmdsZS5neXA6YW5nbGVfY29tbW9uJywKLSAg
ICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lwOmxpYkVHTCcsCi0gICAg
ICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvc3JjL2FuZ2xlLmd5cDpsaWJHTEVTdjInLAotICAg
ICAgICAgICAgXSwKLSAgICAgICAgICAgICdleHBvcnRfZGVwZW5kZW50X3NldHRpbmdzJzoKLSAg
ICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9zcmMvYW5nbGUuZ3lw
OmFuZ2xlX2NvbW1vbicsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2luY2x1ZGVfZGly
cyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvaW5jbHVk
ZScsCi0gICAgICAgICAgICAgICAgJzwoYW5nbGVfcGF0aCkvdXRpbCcsCi0gICAgICAgICAgICBd
LAotICAgICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAg
ICc8QCh1dGlsX3NvdXJjZXMpJywKLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAnZGVmaW5l
cyc6Ci0gICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgJ0dMX0dMRVhUX1BST1RPVFlQRVMn
LAotICAgICAgICAgICAgICAgICdFR0xfRUdMRVhUX1BST1RPVFlQRVMnLAotICAgICAgICAgICAg
ICAgICdMSUJBTkdMRV9VVElMX0lNUExFTUVOVEFUSU9OJywKLSAgICAgICAgICAgIF0sCi0gICAg
ICAgICAgICAnZGlyZWN0X2RlcGVuZGVudF9zZXR0aW5ncyc6Ci0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgJ2luY2x1ZGVfZGlycyc6Ci0gICAgICAgICAgICAgICAgWwotICAgICAgICAg
ICAgICAgICAgICAnPChhbmdsZV9wYXRoKS9pbmNsdWRlJywKLSAgICAgICAgICAgICAgICAgICAg
JzwoYW5nbGVfcGF0aCkvdXRpbCcsCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAg
ICAnZGVmaW5lcyc6Ci0gICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAnR0xf
R0xFWFRfUFJPVE9UWVBFUycsCi0gICAgICAgICAgICAgICAgICAgICdFR0xfRUdMRVhUX1BST1RP
VFlQRVMnLAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAg
J2NvbmRpdGlvbnMnOgotICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgIFsnT1M9PSJ3aW4i
IGFuZCBhbmdsZV9idWlsZF93aW5ydD09MCcsCi0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICc8QCh1dGlsX3dpbjMyX3NvdXJjZXMpJywKLSAgICAgICAgICAgICAgICAg
ICAgXSwKLSAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICBbJ09TPT0id2luIiBh
bmQgYW5nbGVfYnVpbGRfd2lucnQ9PTEnLAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICAgICAgJ3NvdXJjZXMnOgotICAgICAgICAgICAgICAgICAgICBbCi0gICAgICAgICAgICAg
ICAgICAgICAgICAnPEAodXRpbF93aW5ydF9zb3VyY2VzKScsCi0gICAgICAgICAgICAgICAgICAg
IF0sCi0gICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAgWydPUz09ImxpbnV4Iics
Ci0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6Ci0gICAg
ICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8QCh1dGlsX2xpbnV4
X3NvdXJjZXMpJywKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAg
J2xpbmtfc2V0dGluZ3MnOgotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAnbGlicmFyaWVzJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnLWxkbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAot
ICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAg
ICAgIFsndXNlX3gxMT09MScsCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAnc291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICc8QCh1dGlsX3gxMV9zb3VyY2VzKScsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAg
ICAgICAgICAgICAgICAgICdsaW5rX3NldHRpbmdzJzoKLSAgICAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICAgICAgJ2xkZmxhZ3MnOgotICAgICAgICAgICAgICAgICAgICAg
ICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8IUAoPChwa2ctY29uZmlnKSAtLWxp
YnMtb25seS1MIC0tbGlicy1vbmx5LW90aGVyIHgxMSB4aSknLAotICAgICAgICAgICAgICAgICAg
ICAgICAgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdsaWJyYXJpZXMnOgotICAgICAgICAg
ICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8IUAoPChwa2ct
Y29uZmlnKSAtLWxpYnMtb25seS1sIHgxMSB4aSknLAotICAgICAgICAgICAgICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAg
ICAgICAgICBbJ3VzZV9vem9uZT09MScsCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAnc291cmNlcyc6Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICc8QCh1dGlsX296b25lX3NvdXJjZXMpJywKLSAgICAgICAgICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICBbJ09TPT0ibWFjIicsCi0g
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAnc291cmNlcyc6Ci0gICAgICAg
ICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8QCh1dGlsX29zeF9zb3Vy
Y2VzKScsCi0gICAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICAgICd4Y29k
ZV9zZXR0aW5ncyc6Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICdEWUxJQl9JTlNUQUxMX05BTUVfQkFTRSc6ICdAcnBhdGgnLAotICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICAnbGlua19zZXR0aW5ncyc6Ci0gICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICdsaWJyYXJpZXMnOgotICAgICAg
ICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICckKFNES1JP
T1QpL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvQXBwS2l0LmZyYW1ld29yaycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJyQoU0RLUk9PVCkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jr
cy9RdWFydHpDb3JlLmZyYW1ld29yaycsCi0gICAgICAgICAgICAgICAgICAgICAgICBdLAotICAg
ICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgXSwK
LSAgICAgICAgfSwKLSAgICBdLAotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGM4NDU4MjUzMWIxLi4yYjQ2NWFj
ZTlhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE3LTA0LTE4ICBEZWFuIEphY2tz
b24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBVcGRhdGUgQU5HTEUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDk0MQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzE2MzM5OTk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpnZXRTeW1ib2xJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkFO
R0xFV2ViS2l0QnJpZGdlOjpBTkdMRVdlYktpdEJyaWRnZSk6CisgICAgICAgIChXZWJDb3JlOjpB
TkdMRVdlYktpdEJyaWRnZTo6Y2xlYW51cENvbXBpbGVycyk6CisgICAgICAgIChXZWJDb3JlOjpB
TkdMRVdlYktpdEJyaWRnZTo6Y29tcGlsZVNoYWRlclNvdXJjZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNoZWNrVmFyeWluZ3NQYWNraW5n
KToKKwogMjAxNy0wNC0xNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEZpeCBDTWFrZSBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAppbmRleCAzYzBkMzY3
NDBmYy4uODM5YzhkMDdhMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRnZS5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGlj
IGJvb2wgZ2V0U3ltYm9sSW5mbyhTaEhhbmRsZSBjb21waWxlciwgQU5HTEVTaGFkZXJTeW1ib2xU
eXBlIHN5bWJvbFR5cGUsIFYKIHsKICAgICBzd2l0Y2ggKHN5bWJvbFR5cGUpIHsKICAgICBjYXNl
IFNIQURFUl9TWU1CT0xfVFlQRV9VTklGT1JNOiB7Ci0gICAgICAgIGF1dG8gdW5pZm9ybXMgPSBT
aEdldFVuaWZvcm1zKGNvbXBpbGVyKTsKKyAgICAgICAgYXV0byB1bmlmb3JtcyA9IHNoOjpHZXRV
bmlmb3Jtcyhjb21waWxlcik7CiAgICAgICAgIGlmICghdW5pZm9ybXMpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgdW5pZm9ybSA6ICp1bmlmb3Jt
cykKQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMgYm9vbCBnZXRTeW1ib2xJbmZvKFNoSGFuZGxl
IGNvbXBpbGVyLCBBTkdMRVNoYWRlclN5bWJvbFR5cGUgc3ltYm9sVHlwZSwgVgogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgY2FzZSBTSEFERVJfU1lNQk9MX1RZUEVfVkFSWUlORzogewotICAg
ICAgICBhdXRvIHZhcnlpbmdzID0gU2hHZXRWYXJ5aW5ncyhjb21waWxlcik7CisgICAgICAgIGF1
dG8gdmFyeWluZ3MgPSBzaDo6R2V0VmFyeWluZ3MoY29tcGlsZXIpOwogICAgICAgICBpZiAoIXZh
cnlpbmdzKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIHZhcnlpbmcgOiAqdmFyeWluZ3MpCkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIGJvb2wg
Z2V0U3ltYm9sSW5mbyhTaEhhbmRsZSBjb21waWxlciwgQU5HTEVTaGFkZXJTeW1ib2xUeXBlIHN5
bWJvbFR5cGUsIFYKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgU0hBREVSX1NZTUJP
TF9UWVBFX0FUVFJJQlVURTogewotICAgICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBTaEdldEF0dHJp
YnV0ZXMoY29tcGlsZXIpOworICAgICAgICBhdXRvIGF0dHJpYnV0ZXMgPSBzaDo6R2V0QXR0cmli
dXRlcyhjb21waWxlcik7CiAgICAgICAgIGlmICghYXR0cmlidXRlcykKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBhdHRyaWJ1dGUgOiAqYXR0cmli
dXRlcykKQEAgLTEzMiw3ICsxMzIsNyBAQCBBTkdMRVdlYktpdEJyaWRnZTo6QU5HTEVXZWJLaXRC
cmlkZ2UoU2hTaGFkZXJPdXRwdXQgc2hhZGVyT3V0cHV0LCBTaFNoYWRlclNwZWMgcwogICAgICwg
bV9zaGFkZXJTcGVjKHNoYWRlclNwZWMpCiB7CiAgICAgLy8gVGhpcyBpcyBhIG5vLW9wIGlmIGl0
J3MgYWxyZWFkeSBpbml0aWFsaXplZC4KLSAgICBTaEluaXRpYWxpemUoKTsKKyAgICBzaDo6SW5p
dGlhbGl6ZSgpOwogfQogCiBBTkdMRVdlYktpdEJyaWRnZTo6fkFOR0xFV2ViS2l0QnJpZGdlKCkK
QEAgLTE0MywxMCArMTQzLDEwIEBAIEFOR0xFV2ViS2l0QnJpZGdlOjp+QU5HTEVXZWJLaXRCcmlk
Z2UoKQogdm9pZCBBTkdMRVdlYktpdEJyaWRnZTo6Y2xlYW51cENvbXBpbGVycygpCiB7CiAgICAg
aWYgKG1fZnJhZ21lbnRDb21waWxlcikKLSAgICAgICAgU2hEZXN0cnVjdChtX2ZyYWdtZW50Q29t
cGlsZXIpOworICAgICAgICBzaDo6RGVzdHJ1Y3QobV9mcmFnbWVudENvbXBpbGVyKTsKICAgICBt
X2ZyYWdtZW50Q29tcGlsZXIgPSBudWxscHRyOwogICAgIGlmIChtX3ZlcnRleENvbXBpbGVyKQot
ICAgICAgICBTaERlc3RydWN0KG1fdmVydGV4Q29tcGlsZXIpOworICAgICAgICBzaDo6RGVzdHJ1
Y3QobV92ZXJ0ZXhDb21waWxlcik7CiAgICAgbV92ZXJ0ZXhDb21waWxlciA9IG51bGxwdHI7CiAK
ICAgICBidWlsdENvbXBpbGVycyA9IGZhbHNlOwpAQCAtMTYzLDggKzE2Myw4IEBAIHZvaWQgQU5H
TEVXZWJLaXRCcmlkZ2U6OnNldFJlc291cmNlcyhjb25zdCBTaEJ1aWx0SW5SZXNvdXJjZXMmIHJl
c291cmNlcykKIGJvb2wgQU5HTEVXZWJLaXRCcmlkZ2U6OmNvbXBpbGVTaGFkZXJTb3VyY2UoY29u
c3QgY2hhciogc2hhZGVyU291cmNlLCBBTkdMRVNoYWRlclR5cGUgc2hhZGVyVHlwZSwgU3RyaW5n
JiB0cmFuc2xhdGVkU2hhZGVyU291cmNlLCBTdHJpbmcmIHNoYWRlclZhbGlkYXRpb25Mb2csIFZl
Y3RvcjxzdGQ6OnBhaXI8QU5HTEVTaGFkZXJTeW1ib2xUeXBlLCBzaDo6U2hhZGVyVmFyaWFibGU+
PiYgc3ltYm9scywgaW50IGV4dHJhQ29tcGlsZU9wdGlvbnMpCiB7CiAgICAgaWYgKCFidWlsdENv
bXBpbGVycykgewotICAgICAgICBtX2ZyYWdtZW50Q29tcGlsZXIgPSBTaENvbnN0cnVjdENvbXBp
bGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgbV9zaGFkZXJTcGVjLCBtX3NoYWRlck91dHB1dCwgJm1f
cmVzb3VyY2VzKTsKLSAgICAgICAgbV92ZXJ0ZXhDb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGls
ZXIoR0xfVkVSVEVYX1NIQURFUiwgbV9zaGFkZXJTcGVjLCBtX3NoYWRlck91dHB1dCwgJm1fcmVz
b3VyY2VzKTsKKyAgICAgICAgbV9mcmFnbWVudENvbXBpbGVyID0gc2g6OkNvbnN0cnVjdENvbXBp
bGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgbV9zaGFkZXJTcGVjLCBtX3NoYWRlck91dHB1dCwgJm1f
cmVzb3VyY2VzKTsKKyAgICAgICAgbV92ZXJ0ZXhDb21waWxlciA9IHNoOjpDb25zdHJ1Y3RDb21w
aWxlcihHTF9WRVJURVhfU0hBREVSLCBtX3NoYWRlclNwZWMsIG1fc2hhZGVyT3V0cHV0LCAmbV9y
ZXNvdXJjZXMpOwogICAgICAgICBpZiAoIW1fZnJhZ21lbnRDb21waWxlciB8fCAhbV92ZXJ0ZXhD
b21waWxlcikgewogICAgICAgICAgICAgY2xlYW51cENvbXBpbGVycygpOwogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTgyLDE1ICsxODIsMTUgQEAgYm9vbCBBTkdMRVdlYktpdEJyaWRn
ZTo6Y29tcGlsZVNoYWRlclNvdXJjZShjb25zdCBjaGFyKiBzaGFkZXJTb3VyY2UsIEFOR0xFU2hh
ZGUKIAogICAgIGNvbnN0IGNoYXIqIGNvbnN0IHNoYWRlclNvdXJjZVN0cmluZ3NbXSA9IHsgc2hh
ZGVyU291cmNlIH07CiAKLSAgICBib29sIHZhbGlkYXRlU3VjY2VzcyA9IFNoQ29tcGlsZShjb21w
aWxlciwgc2hhZGVyU291cmNlU3RyaW5ncywgMSwgU0hfT0JKRUNUX0NPREUgfCBTSF9WQVJJQUJM
RVMgfCBleHRyYUNvbXBpbGVPcHRpb25zKTsKKyAgICBib29sIHZhbGlkYXRlU3VjY2VzcyA9IHNo
OjpDb21waWxlKGNvbXBpbGVyLCBzaGFkZXJTb3VyY2VTdHJpbmdzLCAxLCBTSF9PQkpFQ1RfQ09E
RSB8IFNIX1ZBUklBQkxFUyB8IGV4dHJhQ29tcGlsZU9wdGlvbnMpOwogICAgIGlmICghdmFsaWRh
dGVTdWNjZXNzKSB7Ci0gICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBsb2cgPSBTaEdldEluZm9M
b2coY29tcGlsZXIpOworICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgbG9nID0gc2g6OkdldElu
Zm9Mb2coY29tcGlsZXIpOwogICAgICAgICBpZiAobG9nLmxlbmd0aCgpKQogICAgICAgICAgICAg
c2hhZGVyVmFsaWRhdGlvbkxvZyA9IGxvZy5jX3N0cigpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgY29uc3Qgc3RkOjpzdHJpbmcmIG9iamVjdENvZGUgPSBTaEdldE9iamVj
dENvZGUoY29tcGlsZXIpOworICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvYmplY3RDb2RlID0gc2g6
OkdldE9iamVjdENvZGUoY29tcGlsZXIpOwogICAgIGlmIChvYmplY3RDb2RlLmxlbmd0aCgpKQog
ICAgICAgICB0cmFuc2xhdGVkU2hhZGVyU291cmNlID0gb2JqZWN0Q29kZS5jX3N0cigpOwogICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBo
aWNzQ29udGV4dDNETWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L0dyYXBoaWNzQ29udGV4dDNETWFjLm1tCmluZGV4IDFjNGU0MzU5MzVhLi41MGVlNTZiYjg0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNz
Q29udGV4dDNETWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQpAQCAtNTM2LDcgKzUzNiw3IEBAIEdyYXBoaWNzQ29u
dGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzREF0dHJpYnV0ZXMgYXR0
cnMsIEhvc3RXaW5kCiAgICAgLy8gQU5HTEUgaW5pdGlhbGl6YXRpb24uCiAKICAgICBTaEJ1aWx0
SW5SZXNvdXJjZXMgQU5HTEVSZXNvdXJjZXM7Ci0gICAgU2hJbml0QnVpbHRJblJlc291cmNlcygm
QU5HTEVSZXNvdXJjZXMpOworICAgIHNoOjpJbml0QnVpbHRJblJlc291cmNlcygmQU5HTEVSZXNv
dXJjZXMpOwogCiAgICAgZ2V0SW50ZWdlcnYoR3JhcGhpY3NDb250ZXh0M0Q6Ok1BWF9WRVJURVhf
QVRUUklCUywgJkFOR0xFUmVzb3VyY2VzLk1heFZlcnRleEF0dHJpYnMpOwogICAgIGdldEludGVn
ZXJ2KEdyYXBoaWNzQ29udGV4dDNEOjpNQVhfVkVSVEVYX1VOSUZPUk1fVkVDVE9SUywgJkFOR0xF
UmVzb3VyY2VzLk1heFZlcnRleFVuaWZvcm1WZWN0b3JzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENv
bW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IGQ2OWQ2MmQyMjAzLi5jN2EwZWM3ZjI1
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dy
YXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBA
IC00MDUsNyArNDA1LDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Y2hlY2tWYXJ5aW5nc1Bh
Y2tpbmcoUGxhdGZvcm0zRE9iamVjdCB2ZXJ0ZXhTaGFkZXIsIFBsYXQKICNlbHNlCiAgICAgOjpn
bEdldEludGVnZXJ2KE1BWF9WQVJZSU5HX1ZFQ1RPUlMsICZtYXhWYXJ5aW5nVmVjdG9ycyk7CiAj
ZW5kaWYKLSAgICByZXR1cm4gU2hDaGVja1ZhcmlhYmxlc1dpdGhpblBhY2tpbmdMaW1pdHMobWF4
VmFyeWluZ1ZlY3RvcnMsIHZhcmlhYmxlcyk7CisgICAgcmV0dXJuIHNoOjpDaGVja1ZhcmlhYmxl
c1dpdGhpblBhY2tpbmdMaW1pdHMobWF4VmFyeWluZ1ZlY3RvcnMsIHZhcmlhYmxlcyk7CiB9CiAK
IGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OnByZWNpc2lvbnNNYXRjaChQbGF0Zm9ybTNET2JqZWN0
IHZlcnRleFNoYWRlciwgUGxhdGZvcm0zRE9iamVjdCBmcmFnbWVudFNoYWRlcikgY29uc3QK
</data>
<flag name="review"
          id="328656"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>